From 81d0307493d5ef95ea1a4f6aaa7abf9761ac270e Mon Sep 17 00:00:00 2001 From: mschuetz Date: Thu, 16 Jul 2015 21:20:05 +0200 Subject: [PATCH 01/35] first success with ambient occlusion. it's AWESOME --- build/js/potree.js | 138 ++++++++++++++++++++++- build/js/potree.min.js | 12 +- build/shaders/shaders.js | 69 +++++++++++- examples/js/viewer.js | 40 ++++++- examples/viewer.html | 13 ++- gulpfile.js | 5 +- src/materials/EyeDomeLightingMaterial.js | 68 +++++++++++ src/materials/shaders/edl.fs | 40 +++++++ src/materials/shaders/edl.vs | 15 +++ src/materials/shaders/pointcloud.fs | 1 - src/materials/shaders/pointcloud.vs | 7 +- 11 files changed, 377 insertions(+), 31 deletions(-) create mode 100644 src/materials/EyeDomeLightingMaterial.js create mode 100644 src/materials/shaders/edl.fs create mode 100644 src/materials/shaders/edl.vs diff --git a/build/js/potree.js b/build/js/potree.js index 730897853a..fa633037a8 100644 --- a/build/js/potree.js +++ b/build/js/potree.js @@ -125,7 +125,6 @@ Potree.Shaders["pointcloud.vs"] = [ "", "varying float vOpacity;", "varying vec3 vColor;", - "varying float vDepth;", "varying float vLinearDepth;", "varying vec3 vViewPosition;", "varying float vRadius;", @@ -280,7 +279,6 @@ Potree.Shaders["pointcloud.vs"] = [ " gl_Position = projectionMatrix * mvPosition;", " vOpacity = opacity;", " vLinearDepth = -mvPosition.z;", - " vDepth = mvPosition.z / gl_Position.w;", " vNormal = normalize(normalMatrix * normal);", "", "", @@ -295,8 +293,9 @@ Potree.Shaders["pointcloud.vs"] = [ " float w = (world.y - heightMin) / (heightMax-heightMin);", " vColor = texture2D(gradient, vec2(w,1.0-w)).rgb;", " #elif defined color_type_depth", - " float d = -mvPosition.z ;", - " vColor = vec3(d, vDepth, 0.0);", + " float linearDepth = -mvPosition.z ;", + " float expDepth = gl_Position.z / gl_Position.w;", + " vColor = vec3(linearDepth, expDepth, 0.0);", " #elif defined color_type_intensity", " float w = (intensity - intensityMin) / (intensityMax - intensityMin);", " vColor = vec3(w, w, w);", @@ -465,7 +464,6 @@ Potree.Shaders["pointcloud.fs"] = [ "varying vec3 vColor;", "varying float vOpacity;", "varying float vLinearDepth;", - "varying float vDepth;", "varying vec3 vViewPosition;", "varying float vRadius;", "varying vec3 vWorldPosition;", @@ -674,6 +672,67 @@ Potree.Shaders["normalize.fs"] = [ "}", ].join("\n"); +Potree.Shaders["edl.vs"] = [ + "", + "", + "varying vec2 vUv;", + "varying vec3 vViewRay;", + "", + "void main() {", + " vUv = uv;", + " ", + " vec4 mvPosition = modelViewMatrix * vec4(position,1.0);", + " vViewRay = mvPosition.xyz;", + "", + " gl_Position = projectionMatrix * mvPosition;", + " ", + " ", + "}", +].join("\n"); + +Potree.Shaders["edl.fs"] = [ + "", + "#define KERNEL_SIZE 16", + "", + "uniform mat4 projectionMatrix;", + "", + "uniform float near;", + "uniform float far;", + "uniform float radius;", + "uniform vec3 kernel[KERNEL_SIZE];", + "", + "uniform sampler2D depthMap;", + "", + "", + "", + "varying vec2 vUv;", + "varying vec3 vViewRay;", + "", + "void main() {", + " float linearDepth = texture2D(depthMap, vUv).r; ", + " vec3 origin = linearDepth * vViewRay;", + " ", + " float occlusion = 0.0;", + " float occlusionCount = 0.0;", + " for(int i = 0; i < KERNEL_SIZE; i++){", + " vec3 sampleVec = kernel[i] * 0.01;", + " ", + " float opacity = texture2D(depthMap, vUv + sampleVec.xy).a;", + " float sampleDepth = texture2D(depthMap, vUv + sampleVec.xy).r;", + " ", + " occlusionCount += opacity;", + " if(linearDepth > sampleDepth){", + " occlusion += 1.0;", + " }", + " }", + " occlusion = 1.0 - (occlusion / float(KERNEL_SIZE));", + " ", + " float w = occlusion;", + " ", + " gl_FragColor = vec4(w, w, w, 1.0); ", + "}", +].join("\n"); + @@ -2185,6 +2244,75 @@ Potree.PointCloudMaterial.generateClassificationTexture = function(classificati }; +// see http://john-chapman-graphics.blogspot.co.at/2013/01/ssao-tutorial.html + + + +Potree.EyeDomeLightingMaterial = function(parameters){ + THREE.Material.call( this ); + + parameters = parameters || {}; + + var kernelSize = 16; + var kernel = Potree.EyeDomeLightingMaterial.generateKernel(kernelSize); + + var uniforms = { + near: { type: "f", value: 0 }, + far: { type: "f", value: 0 }, + depthMap: { type: "t", value: null }, + kernel: { type: "fv", value: kernel}, + radius: { type: "f", value: 20} + }; + + this.setValues({ + uniforms: uniforms, + vertexShader: Potree.Shaders["edl.vs"], + fragmentShader: Potree.Shaders["edl.fs"], + }); + +}; + + +Potree.EyeDomeLightingMaterial.prototype = new THREE.ShaderMaterial(); + +Potree.EyeDomeLightingMaterial.generateKernel = function(kernelSize){ + var kernel = new Float32Array(3*kernelSize); + + for(var i = 0; i < kernelSize; i++){ + var x = Math.random() * 2 - 1; + var y = Math.random() * 2 - 1; + var z = Math.random(); + var length = Math.sqrt( x*x + y*y + z*z ); + var scale = Math.random(); + + x = scale * x / length; + y = scale * y / length; + z = scale * z / length; + + kernel[3*i + 0] = x; + kernel[3*i + 1] = y; + kernel[3*i + 2] = z; + } + + return kernel; +}; + + + + + + + + + + + + + + + + + /** * @author mschuetz / http://mschuetz.at diff --git a/build/js/potree.min.js b/build/js/potree.min.js index e060fe103d..c741421247 100644 --- a/build/js/potree.min.js +++ b/build/js/potree.min.js @@ -1,6 +1,6 @@ -function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var n=new THREE.Vector3(e.x,e.y,.5);n.unproject(t);for(var r=n.sub(t.position).normalize(),a=new THREE.Ray(t.position,r),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var n=o.getContext("2d");e=new e.constructor(e);for(var r=0;r 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying float vDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float w = 1.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += w * vRadius;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(vColor, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(vColor, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," color = color / color.w;"," gl_FragColor = color; "," "," gl_FragDepthEXT = depth;","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); -var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var n=o.radius,r=this.fov*Math.PI/180;this.aspect<1&&(r*=this.aspect);var a=Math.abs(n/Math.sin(r/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var n=JSON.parse(o.responseText),r=new Potree.Version(n.version);i.octreeDir=0===n.octreeDir.indexOf("http")?n.octreeDir:e+"/../"+n.octreeDir,i.spacing=n.spacing,i.hierarchyStepSize=n.hierarchyStepSize,i.pointAttributes=n.pointAttributes;var a=new THREE.Vector3(n.boundingBox.lx,n.boundingBox.ly,n.boundingBox.lz),s=new THREE.Vector3(n.boundingBox.ux,n.boundingBox.uy,n.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();n.tightBoundingBox&&(d.min.copy(new THREE.Vector3(n.tightBoundingBox.lx,n.tightBoundingBox.ly,n.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(n.tightBoundingBox.ux,n.tightBoundingBox.uy,n.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):"LAZ"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):(i.loader=new Potree.BinaryLoader(n.version,l,n.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=r.upTo("1.5")?n.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,r.upTo("1.4"))for(var m=1;m=n?i.pointsCount:i.pointsCount/n,s=function(){var e=t.readData(1e6,0,n);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),r+=e.count,Potree.LasLazLoader.progressCB(r/a),e.hasMoreData?s():(i.totalRead=r,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),n=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),n.add(e.pcoGeometry.offset),i.onmessage=function(r){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=r.data.position,d=r.data.color,c=r.data.intensity,u=new Uint8Array(r.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(r.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(r.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,n),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var r={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(r,[r.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(0),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,n=e.minSize||1,r=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16711680)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:n,maxSize:r,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;ir;r++)for(var a=0;i>a;a++){var s,l=r+t*a;s=e[r]?e[r]:e.DEFAULT,n[3*l+0]=255*s.r,n[3*l+1]=255*s.g,n[3*l+2]=255*s.b}return o},THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",n,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function n(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",n,!1),l.dispatchEvent(x),P=T.NONE)}function r(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,n=o.clone(),r=n.length();r*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*r/i.clientHeight),l.panUp(2*t*r/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var n=(new THREE.Matrix4).makeRotationY(g),r=(new THREE.Matrix4).multiplyMatrices(n,this.object.matrix);this.object.quaternion.setFromRotationMatrix(r),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals; -this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",r,!1),this.domElement.addEventListener("DOMMouseScroll",r,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function n(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",r,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function r(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",r,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(i*i+o*o);R.set(0,n),C.subVectors(R,P);var r=t.clientWidth,a=t.clientHeight,s=Math.sqrt(r*r+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,n=o.clone().sub(h.target),r=n.length();r*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*r/i.clientHeight),h.panUp(2*t*r/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),n=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var r=Math.min(1,this.fadeFactor*e);o+=r*w,n+=r*x,n=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,n)),n=Math.max(p,Math.min(Math.PI-p,n));var a=T.length();a+=(H-1)*a*r,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(r)),T.x=a*Math.sin(n)*Math.sin(o),T.y=a*Math.cos(n),T.z=a*Math.sin(n)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",n,!1),s.domElement.addEventListener("mouseup",r,!1)}}}function n(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function r(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",n,!1),s.domElement.removeEventListener("mouseup",r,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},n=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(n){var r=n.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(n,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*r*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},n=new THREE.Vector3(o.x,o.y,.5);n.unproject(f);var r=n.sub(f.position).normalize(),a=new THREE.Ray(f.position,r),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,r.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var r=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,r),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var n=i.children[o];n.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,n){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=n,this.loadQueue=[];var r=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(r,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var r=n.shift();if(r instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(r.boundingBox,r.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var r=c.loadQueue[0],u=r.geometryNode;if(u.loaded===!0&&void 0!==r.parent){var h=this.replaceProxy(r);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else r.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var n=new THREE.BoxHelper(e);this.add(n),this.boundingBoxNodes.push(n),e.boundingBoxNode=n,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var r=0;r=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=r.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,r,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=n.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var n=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(n);for(var r={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dr;r++)if(void 0!==t.children[r]){var a=t.children[r],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),n=(new THREE.Matrix4).makeTranslation(r,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(n),a}}(r,a,o),d={start:r,end:a,points:s,project:l};i.push(d),o+=r.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,n){if(void 0===n){var r=[];r.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;r.length>0;){var f=r.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),n=e.clone();return n.applyMatrix4(t),n.applyMatrix4(o),n}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,n))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},n=o.pickWindowSize||17,r=this.nodesOnRay(this.visibleNodes,i);if(0===r.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,r),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(n-1)/2,l.y-(n-1)/2,n,n),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),r.length>0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+D];else{for(var O=[],D=0;Dc;c++){var u=r[3*c+0],h=r[3*c+1],p=r[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/n.x),v=parseInt(a*(m.z-o.min.z)/n.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&r.x.5&&r.y0;){{var r=n.shift(),a=r.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,r.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u)); -h||(h=0),n[r+0]=c,n[r+1]=h,n[r+2]=u,r+=3}o.addAttribute("position",new THREE.BufferAttribute(n,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),n=0;o>n;n++)e+=i.substr(n*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],n=i.getUint8(0),r=i.getUint32(1,!0);e.numPoints=r,o.push({children:n,numPoints:r,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(n){console.log("fehler beim laden der punktwolke: "+n)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",n=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],r=THREE.ImageUtils.loadTextureCube(n,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:r},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var n=new THREE.LineBasicMaterial({color:o||8947848}),r=new THREE.Geometry,a=0;t>=a;a++)r.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),r.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(r,n,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var n=o.image.data,r=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,n[3*u+0]=255*(h/15+.05+p)*r[0],n[3*u+1]=255*(h/15+.05+p)*r[1],n[3*u+2]=255*(h/15+.05+p)*r[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(n)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(n)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,n=-t.radius,r=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(n>s)return 0;r=Math.min(r,s)}return r>=t.radius?2:1},Potree.Features=function(){var e,t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),o=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT),n=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT),r=(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT),i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT)),a=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT),s=(i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT),o.precision>0&&r.precision>0),l=n.precision>0&&a.precision>0;return e=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},precision:e}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,n=o+2*this.borderThickness,r=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=n,t.canvas.height=r,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*n,.01*r,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,n,r){e.beginPath(),e.moveTo(t+r,i),e.lineTo(t+o-r,i),e.quadraticCurveTo(t+o,i,t+o,i+r),e.lineTo(t+o,i+n-r),e.quadraticCurveTo(t+o,i+n,t+o-r,i+n),e.lineTo(t+r,i+n),e.quadraticCurveTo(t,i+n,t,i+n-r),e.lineTo(t,i+r),e.quadraticCurveTo(t,i,t+r,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},n=function(e){e.target.material.emissive.setHex(0)},r=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var n=e.spheres.indexOf(i.dragstart.object);e.setPosition(n,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",n),s.addEventListener("drag",r),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){var t=this.points[n];o.add(t)}o.divideScalar(this.points.length);for(var n=0;i>=n;n++){var r=n,a=n+1>i?0:n+1,s=0===n?i:n-1,t=this.points[r],l=this.points[a],d=this.points[s],c=this.spheres[r];c.position.copy(t),c.material.color=e.color;var u=this.edges[r];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>r||this.closed;var h=this.edgeLabels[n],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>r||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[n],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>r||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function n(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var n=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(n,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function r(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&r(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,n="undefined"!=typeof e.closed?e.closed:!1,r=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=n,a.maxMarkers=r,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){{var e=this.points[r],a=this.spheres[r],s=0===r?n:r-1,l=r===n?0:r+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[r],p=this.boxes[s];this.boxes[r],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var r=0;r0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),n=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(n);var r=function(){n.material.color.setHex(5592405)},a=function(){n.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),n=t.clone().unproject(s.camera),r=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(r,n),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,n).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=n;n++){var r=2*Math.PI*n/o,a=3*Math.cos(r),l=3*Math.sin(r);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,n=0;nt;t++)n.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function n(){}function r(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?r[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ac)&&(n=l,r=c)}}return n?n.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var n=[],r=0;r=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",n,!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var n=0;nH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var n=0;n0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),n=0;n0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+D];else{for(var O=[],D=0;Dn?-1:n>r?1:0};t.sort(n);for(var r=[],a=0;a0&&(l+=1,d=r.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&r.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?r.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),n=e.byteLength/17,r=new Float32Array(3*n),a=new Float32Array(3*n),s=new Uint32Array(n),l=0;n>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;r[3*l+0]=d,r[3*l+1]=c,r[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(r,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*n),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=n}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),n=new Potree.PointCloudArena4DGeometry;n.url=e,n.name=o.Name,n.provider=o.Provider,n.numNodes=o.Nodes,n.numPoints=o.Points,n.version=o.Version,n.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(n.spacing=o.Spacing);var r=n.boundingBox.min.clone().multiplyScalar(-1);n.boundingBox.min.add(r),n.boundingBox.max.add(r),n.offset=r;var a=n.boundingBox.center(),s=n.boundingBox.size().length()/2;n.boundingSphere=new THREE.Sphere(a,s),n.loadHierarchy(),t(n)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,n=new DataView(e),r=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=n.getUint8(3*l+0,!0),c=(n.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null; -h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=r.length,s=Math.max(s,v.level),r.length>0){var g=r[r.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,r.push(v),v.isLeaf)for(var P=!1;!P&&r.length>0;){r.pop();var R=r[r.length-1];P=r.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file +function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var n=new THREE.Vector3(e.x,e.y,.5);n.unproject(t);for(var r=n.sub(t.position).normalize(),a=new THREE.Ray(t.position,r),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var n=o.getContext("2d");e=new e.constructor(e);for(var r=0;r 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float w = 1.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += w * vRadius;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(vColor, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(vColor, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," color = color / color.w;"," gl_FragColor = color; "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","varying vec3 vViewRay;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);"," vViewRay = mvPosition.xyz;",""," gl_Position = projectionMatrix * mvPosition;"," "," ","}"].join("\n"),Potree.Shaders["edl.fs"]=["","#define KERNEL_SIZE 16","","uniform mat4 projectionMatrix;","","uniform float near;","uniform float far;","uniform float radius;","uniform vec3 kernel[KERNEL_SIZE];","","uniform sampler2D depthMap;","","","","varying vec2 vUv;","varying vec3 vViewRay;","","void main() {"," float linearDepth = texture2D(depthMap, vUv).r; "," vec3 origin = linearDepth * vViewRay;"," "," float occlusion = 0.0;"," float occlusionCount = 0.0;"," for(int i = 0; i < KERNEL_SIZE; i++){"," vec3 sampleVec = kernel[i] * 0.01;"," "," float opacity = texture2D(depthMap, vUv + sampleVec.xy).a;"," float sampleDepth = texture2D(depthMap, vUv + sampleVec.xy).r;"," "," occlusionCount += opacity;"," if(linearDepth > sampleDepth){"," occlusion += 1.0;"," }"," }"," occlusion = 1.0 - (occlusion / float(KERNEL_SIZE));"," "," float w = occlusion;"," "," gl_FragColor = vec4(w, w, w, 1.0); ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); +var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var n=o.radius,r=this.fov*Math.PI/180;this.aspect<1&&(r*=this.aspect);var a=Math.abs(n/Math.sin(r/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var n=JSON.parse(o.responseText),r=new Potree.Version(n.version);i.octreeDir=0===n.octreeDir.indexOf("http")?n.octreeDir:e+"/../"+n.octreeDir,i.spacing=n.spacing,i.hierarchyStepSize=n.hierarchyStepSize,i.pointAttributes=n.pointAttributes;var a=new THREE.Vector3(n.boundingBox.lx,n.boundingBox.ly,n.boundingBox.lz),s=new THREE.Vector3(n.boundingBox.ux,n.boundingBox.uy,n.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();n.tightBoundingBox&&(d.min.copy(new THREE.Vector3(n.tightBoundingBox.lx,n.tightBoundingBox.ly,n.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(n.tightBoundingBox.ux,n.tightBoundingBox.uy,n.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):"LAZ"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):(i.loader=new Potree.BinaryLoader(n.version,l,n.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=r.upTo("1.5")?n.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,r.upTo("1.4"))for(var m=1;m=n?i.pointsCount:i.pointsCount/n,s=function(){var e=t.readData(1e6,0,n);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),r+=e.count,Potree.LasLazLoader.progressCB(r/a),e.hasMoreData?s():(i.totalRead=r,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),n=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),n.add(e.pcoGeometry.offset),i.onmessage=function(r){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=r.data.position,d=r.data.color,c=r.data.intensity,u=new Uint8Array(r.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(r.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(r.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,n),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var r={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(r,[r.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(0),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,n=e.minSize||1,r=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16711680)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:n,maxSize:r,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;ir;r++)for(var a=0;i>a;a++){var s,l=r+t*a;s=e[r]?e[r]:e.DEFAULT,n[3*l+0]=255*s.r,n[3*l+1]=255*s.g,n[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};var t=16,i=Potree.EyeDomeLightingMaterial.generateKernel(t),o={near:{type:"f",value:0},far:{type:"f",value:0},depthMap:{type:"t",value:null},kernel:{type:"fv",value:i},radius:{type:"f",value:20}};this.setValues({uniforms:o,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.EyeDomeLightingMaterial.generateKernel=function(e){for(var t=new Float32Array(3*e),i=0;e>i;i++){var o=2*Math.random()-1,n=2*Math.random()-1,r=Math.random(),a=Math.sqrt(o*o+n*n+r*r),s=Math.random();o=s*o/a,n=s*n/a,r=s*r/a,t[3*i+0]=o,t[3*i+1]=n,t[3*i+2]=r}return t},THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",n,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function n(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",n,!1),l.dispatchEvent(x),P=T.NONE)}function r(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,n=o.clone(),r=n.length();r*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*r/i.clientHeight),l.panUp(2*t*r/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()}; +this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var n=(new THREE.Matrix4).makeRotationY(g),r=(new THREE.Matrix4).multiplyMatrices(n,this.object.matrix);this.object.quaternion.setFromRotationMatrix(r),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",r,!1),this.domElement.addEventListener("DOMMouseScroll",r,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function n(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",r,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function r(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",r,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(i*i+o*o);R.set(0,n),C.subVectors(R,P);var r=t.clientWidth,a=t.clientHeight,s=Math.sqrt(r*r+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,n=o.clone().sub(h.target),r=n.length();r*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*r/i.clientHeight),h.panUp(2*t*r/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),n=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var r=Math.min(1,this.fadeFactor*e);o+=r*w,n+=r*x,n=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,n)),n=Math.max(p,Math.min(Math.PI-p,n));var a=T.length();a+=(H-1)*a*r,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(r)),T.x=a*Math.sin(n)*Math.sin(o),T.y=a*Math.cos(n),T.z=a*Math.sin(n)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",n,!1),s.domElement.addEventListener("mouseup",r,!1)}}}function n(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function r(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",n,!1),s.domElement.removeEventListener("mouseup",r,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},n=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(n){var r=n.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(n,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*r*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},n=new THREE.Vector3(o.x,o.y,.5);n.unproject(f);var r=n.sub(f.position).normalize(),a=new THREE.Ray(f.position,r),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,r.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var r=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,r),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var n=i.children[o];n.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,n){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=n,this.loadQueue=[];var r=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(r,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var r=n.shift();if(r instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(r.boundingBox,r.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var r=c.loadQueue[0],u=r.geometryNode;if(u.loaded===!0&&void 0!==r.parent){var h=this.replaceProxy(r);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else r.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var n=new THREE.BoxHelper(e);this.add(n),this.boundingBoxNodes.push(n),e.boundingBoxNode=n,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var r=0;r=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=r.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,r,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=n.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var n=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(n);for(var r={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dr;r++)if(void 0!==t.children[r]){var a=t.children[r],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),n=(new THREE.Matrix4).makeTranslation(r,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(n),a}}(r,a,o),d={start:r,end:a,points:s,project:l};i.push(d),o+=r.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,n){if(void 0===n){var r=[];r.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;r.length>0;){var f=r.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),n=e.clone();return n.applyMatrix4(t),n.applyMatrix4(o),n}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,n))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},n=o.pickWindowSize||17,r=this.nodesOnRay(this.visibleNodes,i);if(0===r.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,r),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(n-1)/2,l.y-(n-1)/2,n,n),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),r.length>0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+O];else{for(var D=[],O=0;Oc;c++){var u=r[3*c+0],h=r[3*c+1],p=r[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/n.x),v=parseInt(a*(m.z-o.min.z)/n.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&r.x.5&&r.y0;){{var r=n.shift(),a=r.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,r.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),n[r+0]=c,n[r+1]=h,n[r+2]=u,r+=3}o.addAttribute("position",new THREE.BufferAttribute(n,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),n=0;o>n;n++)e+=i.substr(n*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],n=i.getUint8(0),r=i.getUint32(1,!0);e.numPoints=r,o.push({children:n,numPoints:r,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(n){console.log("fehler beim laden der punktwolke: "+n)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",n=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],r=THREE.ImageUtils.loadTextureCube(n,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:r},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var n=new THREE.LineBasicMaterial({color:o||8947848}),r=new THREE.Geometry,a=0;t>=a;a++)r.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),r.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(r,n,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var n=o.image.data,r=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,n[3*u+0]=255*(h/15+.05+p)*r[0],n[3*u+1]=255*(h/15+.05+p)*r[1],n[3*u+2]=255*(h/15+.05+p)*r[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(n)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(n)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,n=-t.radius,r=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(n>s)return 0;r=Math.min(r,s)}return r>=t.radius?2:1},Potree.Features=function(){var e,t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),o=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT),n=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT),r=(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT),i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT)),a=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT),s=(i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT),o.precision>0&&r.precision>0),l=n.precision>0&&a.precision>0;return e=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},precision:e}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,n=o+2*this.borderThickness,r=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=n,t.canvas.height=r,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*n,.01*r,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,n,r){e.beginPath(),e.moveTo(t+r,i),e.lineTo(t+o-r,i),e.quadraticCurveTo(t+o,i,t+o,i+r),e.lineTo(t+o,i+n-r),e.quadraticCurveTo(t+o,i+n,t+o-r,i+n),e.lineTo(t+r,i+n),e.quadraticCurveTo(t,i+n,t,i+n-r),e.lineTo(t,i+r),e.quadraticCurveTo(t,i,t+r,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},n=function(e){e.target.material.emissive.setHex(0)},r=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var n=e.spheres.indexOf(i.dragstart.object);e.setPosition(n,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",n),s.addEventListener("drag",r),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){var t=this.points[n];o.add(t)}o.divideScalar(this.points.length);for(var n=0;i>=n;n++){var r=n,a=n+1>i?0:n+1,s=0===n?i:n-1,t=this.points[r],l=this.points[a],d=this.points[s],c=this.spheres[r];c.position.copy(t),c.material.color=e.color;var u=this.edges[r];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>r||this.closed;var h=this.edgeLabels[n],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>r||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[n],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>r||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function n(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var n=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(n,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function r(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&r(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,n="undefined"!=typeof e.closed?e.closed:!1,r=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=n,a.maxMarkers=r,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){{var e=this.points[r],a=this.spheres[r],s=0===r?n:r-1,l=r===n?0:r+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[r],p=this.boxes[s];this.boxes[r],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var r=0;r0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),n=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(n);var r=function(){n.material.color.setHex(5592405)},a=function(){n.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),n=t.clone().unproject(s.camera),r=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(r,n),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,n).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=n;n++){var r=2*Math.PI*n/o,a=3*Math.cos(r),l=3*Math.sin(r);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,n=0;nt;t++)n.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function n(){}function r(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?r[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ac)&&(n=l,r=c)}}return n?n.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var n=[],r=0;r=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",n,!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var n=0;nH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var n=0;n0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),n=0;n0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+O];else{for(var D=[],O=0;On?-1:n>r?1:0};t.sort(n);for(var r=[],a=0;a0&&(l+=1,d=r.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&r.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?r.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),n=e.byteLength/17,r=new Float32Array(3*n),a=new Float32Array(3*n),s=new Uint32Array(n),l=0;n>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;r[3*l+0]=d,r[3*l+1]=c,r[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(r,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*n),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=n}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),n=new Potree.PointCloudArena4DGeometry;n.url=e,n.name=o.Name,n.provider=o.Provider,n.numNodes=o.Nodes,n.numPoints=o.Points,n.version=o.Version,n.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(n.spacing=o.Spacing); +var r=n.boundingBox.min.clone().multiplyScalar(-1);n.boundingBox.min.add(r),n.boundingBox.max.add(r),n.offset=r;var a=n.boundingBox.center(),s=n.boundingBox.size().length()/2;n.boundingSphere=new THREE.Sphere(a,s),n.loadHierarchy(),t(n)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,n=new DataView(e),r=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=n.getUint8(3*l+0,!0),c=(n.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=r.length,s=Math.max(s,v.level),r.length>0){var g=r[r.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,r.push(v),v.isLeaf)for(var P=!1;!P&&r.length>0;){r.pop();var R=r[r.length-1];P=r.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file diff --git a/build/shaders/shaders.js b/build/shaders/shaders.js index 6978ede1e0..d09344dcb2 100644 --- a/build/shaders/shaders.js +++ b/build/shaders/shaders.js @@ -63,7 +63,6 @@ Potree.Shaders["pointcloud.vs"] = [ "", "varying float vOpacity;", "varying vec3 vColor;", - "varying float vDepth;", "varying float vLinearDepth;", "varying vec3 vViewPosition;", "varying float vRadius;", @@ -218,7 +217,6 @@ Potree.Shaders["pointcloud.vs"] = [ " gl_Position = projectionMatrix * mvPosition;", " vOpacity = opacity;", " vLinearDepth = -mvPosition.z;", - " vDepth = mvPosition.z / gl_Position.w;", " vNormal = normalize(normalMatrix * normal);", "", "", @@ -233,8 +231,9 @@ Potree.Shaders["pointcloud.vs"] = [ " float w = (world.y - heightMin) / (heightMax-heightMin);", " vColor = texture2D(gradient, vec2(w,1.0-w)).rgb;", " #elif defined color_type_depth", - " float d = -mvPosition.z ;", - " vColor = vec3(d, vDepth, 0.0);", + " float linearDepth = -mvPosition.z ;", + " float expDepth = gl_Position.z / gl_Position.w;", + " vColor = vec3(linearDepth, expDepth, 0.0);", " #elif defined color_type_intensity", " float w = (intensity - intensityMin) / (intensityMax - intensityMin);", " vColor = vec3(w, w, w);", @@ -403,7 +402,6 @@ Potree.Shaders["pointcloud.fs"] = [ "varying vec3 vColor;", "varying float vOpacity;", "varying float vLinearDepth;", - "varying float vDepth;", "varying vec3 vViewPosition;", "varying float vRadius;", "varying vec3 vWorldPosition;", @@ -612,3 +610,64 @@ Potree.Shaders["normalize.fs"] = [ "}", ].join("\n"); +Potree.Shaders["edl.vs"] = [ + "", + "", + "varying vec2 vUv;", + "varying vec3 vViewRay;", + "", + "void main() {", + " vUv = uv;", + " ", + " vec4 mvPosition = modelViewMatrix * vec4(position,1.0);", + " vViewRay = mvPosition.xyz;", + "", + " gl_Position = projectionMatrix * mvPosition;", + " ", + " ", + "}", +].join("\n"); + +Potree.Shaders["edl.fs"] = [ + "", + "#define KERNEL_SIZE 16", + "", + "uniform mat4 projectionMatrix;", + "", + "uniform float near;", + "uniform float far;", + "uniform float radius;", + "uniform vec3 kernel[KERNEL_SIZE];", + "", + "uniform sampler2D depthMap;", + "", + "", + "", + "varying vec2 vUv;", + "varying vec3 vViewRay;", + "", + "void main() {", + " float linearDepth = texture2D(depthMap, vUv).r; ", + " vec3 origin = linearDepth * vViewRay;", + " ", + " float occlusion = 0.0;", + " float occlusionCount = 0.0;", + " for(int i = 0; i < KERNEL_SIZE; i++){", + " vec3 sampleVec = kernel[i] * 0.01;", + " ", + " float opacity = texture2D(depthMap, vUv + sampleVec.xy).a;", + " float sampleDepth = texture2D(depthMap, vUv + sampleVec.xy).r;", + " ", + " occlusionCount += opacity;", + " if(linearDepth > sampleDepth){", + " occlusion += 1.0;", + " }", + " }", + " occlusion = 1.0 - (occlusion / float(KERNEL_SIZE));", + " ", + " float w = occlusion;", + " ", + " gl_FragColor = vec4(w, w, w, 1.0); ", + "}", +].join("\n"); + diff --git a/examples/js/viewer.js b/examples/js/viewer.js index 787b0ab676..023f0a4aee 100644 --- a/examples/js/viewer.js +++ b/examples/js/viewer.js @@ -758,6 +758,14 @@ var rtDepth = new THREE.WebGLRenderTarget( 1024, 1024, { format: THREE.RGBAFormat, type: THREE.FloatType } ); + +var rtOcclusion = new THREE.WebGLRenderTarget( 1024, 1024, { + minFilter: THREE.LinearFilter, + magFilter: THREE.NearestFilter, + format: THREE.RGBAFormat, + type: THREE.FloatType +} ); + var rtNormalize = new THREE.WebGLRenderTarget( 1024, 1024, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter, @@ -766,14 +774,18 @@ var rtNormalize = new THREE.WebGLRenderTarget( 1024, 1024, { } ); var sceneNormalize; +var sceneScreen, screenQuad; var depthMaterial, weightedMaterial; +var edlMaterial = new Potree.EyeDomeLightingMaterial(); + // render with splats function renderHighQuality(){ if(!sceneNormalize){ sceneNormalize = new THREE.Scene(); + sceneScreen = new THREE.Scene(); var vsNormalize = Potree.Shaders["normalize.vs"]; var fsNormalize = Potree.Shaders["normalize.fs"]; @@ -795,6 +807,12 @@ function renderHighQuality(){ quad.material.transparent = true; sceneNormalize.add(quad); sceneNormalize.screenQuad = quad; + + screenQuad = new THREE.Mesh( new THREE.PlaneBufferGeometry(2, 2, 0), edlMaterial); + screenQuad.material.depthTest = true; + screenQuad.material.depthWrite = true; + screenQuad.material.transparent = true; + sceneScreen.add(screenQuad); } // resize @@ -803,13 +821,19 @@ function renderHighQuality(){ rtDepth.dispose(); rtNormalize.dispose(); - rtDepth = new THREE.WebGLRenderTarget( 1024, 1024, { + rtDepth = new THREE.WebGLRenderTarget( width, height, { minFilter: THREE.NearestFilter, magFilter: THREE.NearestFilter, format: THREE.RGBAFormat, type: THREE.FloatType } ); - rtNormalize = new THREE.WebGLRenderTarget( 1024, 1024, { + rtNormalize = new THREE.WebGLRenderTarget( width, height, { + minFilter: THREE.LinearFilter, + magFilter: THREE.NearestFilter, + format: THREE.RGBAFormat, + type: THREE.FloatType + } ); + rtOcclusion = new THREE.WebGLRenderTarget( width, height, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter, format: THREE.RGBAFormat, @@ -818,6 +842,8 @@ function renderHighQuality(){ sceneNormalize.screenQuad.material.uniforms.depthMap.value = rtDepth; sceneNormalize.screenQuad.material.uniforms.texture.value = rtNormalize; + + edlMaterial.uniforms.depthMap.value = rtDepth; } } @@ -891,7 +917,6 @@ function renderHighQuality(){ renderer.render(scenePointCloud, camera, rtDepth); } - {// ATTRIBUTE PASS var material = pointcloud._hqsplats.attributeMaterial; @@ -914,8 +939,15 @@ function renderHighQuality(){ renderer.render(scenePointCloud, camera, rtNormalize); } + { // OCCLUSION PASS + edlMaterial.uniforms.near.value = camera.near; + edlMaterial.uniforms.far.value = camera.far; + + renderer.render(sceneScreen, cameraBG); + } + // NORMALIZATION PASS - renderer.render(sceneNormalize, cameraBG); + //renderer.render(sceneNormalize, cameraBG); pointcloud.material = pointcloud._hqsplats.originalMaterial; diff --git a/examples/viewer.html b/examples/viewer.html index 90e1d3e6f9..4792be5127 100644 --- a/examples/viewer.html +++ b/examples/viewer.html @@ -15,12 +15,13 @@ - + - +
@@ -76,10 +77,12 @@ diff --git a/src/materials/EyeDomeLightingMaterial.js b/src/materials/EyeDomeLightingMaterial.js index 426477c71a..560846f3d5 100644 --- a/src/materials/EyeDomeLightingMaterial.js +++ b/src/materials/EyeDomeLightingMaterial.js @@ -12,14 +12,26 @@ Potree.EyeDomeLightingMaterial = function(parameters){ var kernel = Potree.EyeDomeLightingMaterial.generateKernel(kernelSize); var randomMap = Potree.EyeDomeLightingMaterial.generateRandomTexture(); + var neighbours = new Float32Array(8*2); + for(var c = 0; c < 8; c++){ + neighbours[2*c+0] = Math.cos(c * Math.PI / 4); + neighbours[2*c+1] = Math.sin(c * Math.PI / 4); + } + + var lightDir = new THREE.Vector3(0.0, 0.0, 1.0).normalize(); var uniforms = { - near: { type: "f", value: 0 }, - far: { type: "f", value: 0 }, - randomMap: { type: "t", value: randomMap}, - depthMap: { type: "t", value: null }, - kernel: { type: "fv", value: kernel}, - radius: { type: "f", value: 20} + screenWidth: { type: "f", value: 0 }, + screenHeight: { type: "f", value: 0 }, + near: { type: "f", value: 0 }, + far: { type: "f", value: 0 }, + pixScale: { type: "f", value: 1.0 }, + expScale: { type: "f", value: 100.0 }, + zoom: { type: "f", value: 3.0 }, + lightDir: { type: "v3", value: lightDir }, + neighbours: { type: "2fv", value: neighbours }, + depthMap: { type: "t", value: null }, + colorMap: { type: "t", value: null } }; this.setValues({ diff --git a/src/materials/shaders/edl.fs b/src/materials/shaders/edl.fs index b4ac04f56b..6d1c6bb511 100644 --- a/src/materials/shaders/edl.fs +++ b/src/materials/shaders/edl.fs @@ -1,57 +1,66 @@ -#define KERNEL_SIZE 16 +// +// adapted from the EDL shader code from Christian Boucheny in cloud compare: +// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL +// + + + uniform mat4 projectionMatrix; +uniform float screenWidth; +uniform float screenHeight; uniform float near; uniform float far; -uniform float radius; -uniform vec3 kernel[KERNEL_SIZE]; +uniform vec2 neighbours[16]; +uniform vec3 lightDir; +uniform float zoom; +uniform float pixScale; +uniform float expScale; uniform sampler2D depthMap; -uniform sampler2D randomMap; +uniform sampler2D colorMap; varying vec2 vUv; varying vec3 vViewRay; -// TODO don't fetch same texel multiple times (depth + alpha) +float ztransform(float depth){ + return 1.0 - (depth - near) / (far - near); +} + +float obscurance(float z, float dist){ + return max(0.0, z) / dist; +} -void main() { - float linearDepth = texture2D(depthMap, vUv).r; - vec3 origin = linearDepth * vViewRay; +float computeObscurance(float depth, float scale){ + vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, depth) ) ); - vec2 uvRand = gl_FragCoord.xy; - uvRand.x = mod(uvRand.x, 4.0) / 4.0; - uvRand.y = mod(uvRand.y, 4.0) / 4.0; - float random = texture2D(randomMap, uvRand).r * 3.1415; - mat2 randomRotation = mat2(cos(random), sin(random), -sin(random), cos(random)); + float sum = 0.0; - float occlusion = 0.0; - float occlusionCount = 0.0; - for(int i = 0; i < KERNEL_SIZE; i++){ - vec3 sampleVec = kernel[i] * 0.05; - sampleVec.xy = randomRotation * sampleVec.xy; + for(int c = 0; c < 8; c++){ + vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c]; + vec2 N_abs_pos = vUv + N_rel_pos; - float opacity = texture2D(depthMap, vUv + sampleVec.xy).a; - float sampleDepth = texture2D(depthMap, vUv + sampleVec.xy).r; + float Zn = ztransform(texture2D(depthMap, N_abs_pos).r); + float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P ); - occlusionCount += opacity; - if(linearDepth > sampleDepth){ - occlusion += 1.0; - } + //sum += obscurance( Znp, scale ); + sum += obscurance( Znp, 0.1 * texture2D(depthMap, vUv).r ); } - - if(occlusionCount > 0.0){ - occlusion = (occlusion / float(KERNEL_SIZE)); - }else{ - occlusion = 0.0; - } - if(texture2D(depthMap, vUv).a == 0.0){ - occlusion = 0.0; - } + return sum; +} + +void main(){ + + float depth = ztransform(texture2D(depthMap, vUv).r); + float f = computeObscurance(depth, pixScale); + f = exp(-expScale * f); - float w = occlusion; + vec3 color = texture2D(colorMap, vUv).rgb; - gl_FragColor = vec4(w, w, w, 1.0); -} \ No newline at end of file + //gl_FragColor = vec4(f, f, f, 1.0); + gl_FragColor = vec4(color * f, 1.0); + +} From d8bd2c3c7678eba01e8eef8a979f79d4b9c17b16 Mon Sep 17 00:00:00 2001 From: mschuetz Date: Mon, 20 Jul 2015 21:22:41 +0200 Subject: [PATCH 08/35] some EDL improvements --- build/js/potree.js | 59 ++++++++++++++---------- build/js/potree.min.js | 12 ++--- build/shaders/shaders.js | 45 ++++++++++-------- examples/js/viewer.js | 1 + examples/viewer.html | 13 ++++-- src/materials/EyeDomeLightingMaterial.js | 9 ++-- src/materials/PointCloudMaterial.js | 5 +- src/materials/shaders/edl.fs | 41 +++++++++------- 8 files changed, 111 insertions(+), 74 deletions(-) diff --git a/build/js/potree.js b/build/js/potree.js index b214dcb0b2..bb3dda62e9 100644 --- a/build/js/potree.js +++ b/build/js/potree.js @@ -706,10 +706,12 @@ Potree.Shaders["edl.vs"] = [ Potree.Shaders["edl.fs"] = [ "", - "", - "// adapted from Christian Boucheny's EDL shader code in cloud compare:", + "// ", + "// adapted from the EDL shader code from Christian Boucheny in cloud compare:", "// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL", + "//", "", + "#define NEIGHBOUR_COUNT 8", "", "", "uniform mat4 projectionMatrix;", @@ -718,7 +720,7 @@ Potree.Shaders["edl.fs"] = [ "uniform float screenHeight;", "uniform float near;", "uniform float far;", - "uniform vec2 neighbours[16];", + "uniform vec2 neighbours[NEIGHBOUR_COUNT];", "uniform vec3 lightDir;", "uniform float zoom;", "uniform float pixScale;", @@ -730,44 +732,51 @@ Potree.Shaders["edl.fs"] = [ "varying vec2 vUv;", "varying vec3 vViewRay;", "", - "float ztransform(float depth){", - " return 1.0 - (depth - near) / (far - near);", + "/**", + " * transform linear depth to [0,1] interval with 1 beeing closest to the camera.", + " */", + "float ztransform(float linearDepth){", + " return 1.0 - (linearDepth - near) / (far - near);", "}", "", "float obscurance(float z, float dist){", " return max(0.0, z) / dist;", "}", "", - "float computeObscurance(float depth, float scale){", - " vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, depth) ) );", + "float computeObscurance(float linearDepth, float scale){", + " vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );", " ", " float sum = 0.0;", " ", - " for(int c = 0; c < 8; c++){", + " for(int c = 0; c < NEIGHBOUR_COUNT; c++){", " vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];", " vec2 N_abs_pos = vUv + N_rel_pos;", " ", - " float Zn = ztransform(texture2D(depthMap, N_abs_pos).r);", - " float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );", + " vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);", " ", - " //sum += obscurance( Znp, scale );", - " sum += obscurance( Znp, 0.1 * texture2D(depthMap, vUv).r );", + " if(neighbourDepth.w > 0.0){", + " float Zn = ztransform(neighbourDepth.r);", + " float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );", + " ", + " sum += obscurance( Znp, 0.1 * linearDepth );", + " }", " }", " ", " return sum;", "}", "", "void main(){", + " vec4 color = texture2D(colorMap, vUv);", "", - " float depth = ztransform(texture2D(depthMap, vUv).r);", - " float f = computeObscurance(depth, pixScale);", + " float linearDepth = texture2D(depthMap, vUv).r;", + " float f = computeObscurance(linearDepth, pixScale);", " f = exp(-expScale * f);", " ", - " vec3 color = texture2D(colorMap, vUv).rgb;", + " if(color.a == 0.0 && f >= 1.0){", + " discard;", + " }", " ", - " //gl_FragColor = vec4(f, f, f, 1.0);", - " gl_FragColor = vec4(color * f, 1.0);", - "", + " gl_FragColor = vec4(color.rgb * f, 1.0);", "}", "", ].join("\n"); @@ -1648,6 +1657,7 @@ Potree.Classification = { }; + Potree.PointSizeType = { FIXED: 0, ATTENUATED: 1, @@ -1692,7 +1702,7 @@ Potree.PointCloudMaterial = function(parameters){ parameters = parameters || {}; - var color = new THREE.Color( 0x000000 ); + var color = new THREE.Color( 0xffffff ); var map = THREE.ImageUtils.generateDataTexture( 2048, 1, color ); map.magFilter = THREE.NearestFilter; this.visibleNodesTexture = map; @@ -1730,7 +1740,7 @@ Potree.PointCloudMaterial = function(parameters){ screenHeight: { type: "f", value: 1.0 }, near: { type: "f", value: 0.1 }, far: { type: "f", value: 1.0 }, - uColor: { type: "c", value: new THREE.Color( 0xff0000 ) }, + uColor: { type: "c", value: new THREE.Color( 0xffffff ) }, opacity: { type: "f", value: 1.0 }, size: { type: "f", value: 10 }, minSize: { type: "f", value: 2 }, @@ -2344,10 +2354,11 @@ Potree.EyeDomeLightingMaterial = function(parameters){ var kernel = Potree.EyeDomeLightingMaterial.generateKernel(kernelSize); var randomMap = Potree.EyeDomeLightingMaterial.generateRandomTexture(); - var neighbours = new Float32Array(8*2); - for(var c = 0; c < 8; c++){ - neighbours[2*c+0] = Math.cos(c * Math.PI / 4); - neighbours[2*c+1] = Math.sin(c * Math.PI / 4); + var neighbourCount = 8; + var neighbours = new Float32Array(neighbourCount*2); + for(var c = 0; c < neighbourCount; c++){ + neighbours[2*c+0] = Math.cos(2 * c * Math.PI / neighbourCount); + neighbours[2*c+1] = Math.sin(2 * c * Math.PI / neighbourCount); } var lightDir = new THREE.Vector3(0.0, 0.0, 1.0).normalize(); diff --git a/build/js/potree.min.js b/build/js/potree.min.js index 0e8c384631..ce38b5c129 100644 --- a/build/js/potree.min.js +++ b/build/js/potree.min.js @@ -1,6 +1,6 @@ -function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var r=new THREE.Vector3(e.x,e.y,.5);r.unproject(t);for(var n=r.sub(t.position).normalize(),a=new THREE.Ray(t.position,n),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var r=o.getContext("2d");e=new e.constructor(e);for(var n=0;n 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D occlusionMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," float occlusion = texture2D(occlusionMap, vUv).g; "," color = color / color.w;"," "," color = color * (1.0 - occlusion);"," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","varying vec3 vViewRay;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);"," vViewRay = mvPosition.xyz;",""," gl_Position = projectionMatrix * mvPosition;"," "," ","}"].join("\n"),Potree.Shaders["edl.fs"]=["","","// adapted from Christian Boucheny's EDL shader code in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","","","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[16];","uniform vec3 lightDir;","uniform float zoom;","uniform float pixScale;","uniform float expScale;","","uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","varying vec3 vViewRay;","","float ztransform(float depth){"," return 1.0 - (depth - near) / (far - near);","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float depth, float scale){"," vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, depth) ) );"," "," float sum = 0.0;"," "," for(int c = 0; c < 8; c++){"," vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," float Zn = ztransform(texture2D(depthMap, N_abs_pos).r);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," //sum += obscurance( Znp, scale );"," sum += obscurance( Znp, 0.1 * texture2D(depthMap, vUv).r );"," }"," "," return sum;","}","","void main(){",""," float depth = ztransform(texture2D(depthMap, vUv).r);"," float f = computeObscurance(depth, pixScale);"," f = exp(-expScale * f);"," "," vec3 color = texture2D(colorMap, vUv).rgb;"," "," //gl_FragColor = vec4(f, f, f, 1.0);"," gl_FragColor = vec4(color * f, 1.0);","","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); -var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var r=o.radius,n=this.fov*Math.PI/180;this.aspect<1&&(n*=this.aspect);var a=Math.abs(r/Math.sin(n/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var r=JSON.parse(o.responseText),n=new Potree.Version(r.version);i.octreeDir=0===r.octreeDir.indexOf("http")?r.octreeDir:e+"/../"+r.octreeDir,i.spacing=r.spacing,i.hierarchyStepSize=r.hierarchyStepSize,i.pointAttributes=r.pointAttributes;var a=new THREE.Vector3(r.boundingBox.lx,r.boundingBox.ly,r.boundingBox.lz),s=new THREE.Vector3(r.boundingBox.ux,r.boundingBox.uy,r.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();r.tightBoundingBox&&(d.min.copy(new THREE.Vector3(r.tightBoundingBox.lx,r.tightBoundingBox.ly,r.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(r.tightBoundingBox.ux,r.tightBoundingBox.uy,r.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):"LAZ"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):(i.loader=new Potree.BinaryLoader(r.version,l,r.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=n.upTo("1.5")?r.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,n.upTo("1.4"))for(var m=1;m=r?i.pointsCount:i.pointsCount/r,s=function(){var e=t.readData(1e6,0,r);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),n+=e.count,Potree.LasLazLoader.progressCB(n/a),e.hasMoreData?s():(i.totalRead=n,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),r=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),r.add(e.pcoGeometry.offset),i.onmessage=function(n){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=n.data.position,d=n.data.color,c=n.data.intensity,u=new Uint8Array(n.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(n.data.returnNumber),m=new Float32Array(p.byteLength),v=new Uint16Array(n.data.pointSourceID),f=new Float32Array(v.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],f[T]=v[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(f),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,r),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var n={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(n,[n.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(0),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,r=e.minSize||1,n=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16711680)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:r,maxSize:n,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;in;n++)for(var a=0;i>a;a++){var s,l=n+t*a;s=e[n]?e[n]:e.DEFAULT,r[3*l+0]=255*s.r,r[3*l+1]=255*s.g,r[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=16,i=(Potree.EyeDomeLightingMaterial.generateKernel(t),Potree.EyeDomeLightingMaterial.generateRandomTexture(),new Float32Array(16)),o=0;8>o;o++)i[2*o+0]=Math.cos(o*Math.PI/4),i[2*o+1]=Math.sin(o*Math.PI/4);var r=new THREE.Vector3(0,0,1).normalize(),n={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},pixScale:{type:"f",value:1},expScale:{type:"f",value:100},zoom:{type:"f",value:3},lightDir:{type:"v3",value:r},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:n,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.EyeDomeLightingMaterial.generateRandomTexture=function(){var e=4,t=4,i=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);i.magFilter=THREE.NearestFilter;for(var o=i.image.data,r=0;e>r;r++)for(var n=0;t>n;n++){var a=Math.random(),s=r+e*n;o[3*s+0]=255*a,o[3*s+1]=255*a,o[3*s+2]=255*a}return i},Potree.EyeDomeLightingMaterial.generateKernel=function(e){for(var t=new Float32Array(3*e),i=0;e>i;i++){var o=2*Math.random()-1,r=2*Math.random()-1,n=Math.random(),a=Math.sqrt(o*o+r*r+n*n),s=Math.random();s*=s,o=s*o/a,r=s*r/a,n=s*n/a,t[3*i+0]=o,t[3*i+1]=r,t[3*i+2]=n}return t},Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",r,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function r(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",r,!1),l.dispatchEvent(x),P=T.NONE)}function n(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,v=new THREE.Vector3,f=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){f-=e},this.panLeft=function(e){var t=this.object.matrix.elements;v.set(t[0],t[1],t[2]),v.multiplyScalar(-e),y.add(v)},this.panUp=function(e){var t=this.object.matrix.elements; -v.set(t[4],t[5],t[6]),v.multiplyScalar(e),y.add(v)},this.panForward=function(e){var t=this.object.matrix.elements;v.set(t[8],t[9],t[10]),v.multiplyScalar(e),y.add(v)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,r=o.clone(),n=r.length();n*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*n/i.clientHeight),l.panUp(2*t*n/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==f){var o={type:"rotate",thetaDelta:g,phiDelta:f};this.dispatchEvent(o)}this.object.updateMatrix();var r=(new THREE.Matrix4).makeRotationY(g),n=(new THREE.Matrix4).multiplyMatrices(r,this.object.matrix);this.object.quaternion.setFromRotationMatrix(n),this.object.rotation.x+=f,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,f=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",n,!1),this.domElement.addEventListener("DOMMouseScroll",n,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function r(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;V=A.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;V=A.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;V=A.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",n,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function n(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(V===A.ROTATE){if(h.noRotate===!0)return;v.set(e.clientX,e.clientY),f.subVectors(v,m),h.rotateLeft(2*Math.PI*f.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*f.y/t.clientHeight*h.rotateSpeed),m.copy(v)}else if(V===A.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(V===A.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",n,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),V=A.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;V=A.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;V=A.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;V=A.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:V=A.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(V!==A.TOUCH_ROTATE)return;v.set(e.touches[0].pageX,e.touches[0].pageY),f.subVectors(v,m),h.rotateLeft(2*Math.PI*f.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*f.y/t.clientHeight*h.rotateSpeed),m.copy(v);break;case 2:if(h.noZoom===!0)return;if(V!==A.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,r=Math.sqrt(i*i+o*o);R.set(0,r),C.subVectors(R,P);var n=t.clientWidth,a=t.clientHeight,s=Math.sqrt(n*n+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(V!==A.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:V=A.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),V=A.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,v=new THREE.Vector2,f=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,M=new THREE.Vector3,A={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},V=A.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,r=o.clone().sub(h.target),n=r.length();n*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*n/i.clientHeight),h.panUp(2*t*n/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),r=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var n=Math.min(1,this.fadeFactor*e);o+=n*w,r+=n*x,r=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,r)),r=Math.max(p,Math.min(Math.PI-p,r));var a=T.length();a+=(H-1)*a*n,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(n)),T.x=a*Math.sin(r)*Math.sin(o),T.y=a*Math.cos(r),T.z=a*Math.sin(r)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}M.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),M.copy(this.object.position))},this.reset=function(){V=A.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);f=m.intersectPlane(a),v=s.camera.clone(),v.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(f),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",r,!1),s.domElement.addEventListener("mouseup",n,!1)}}}function r(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function n(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",r,!1),s.domElement.removeEventListener("mouseup",n,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},r=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(r){var n=r.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(r,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*n*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,v=null,f=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),f){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),f),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},r=new THREE.Vector3(o.x,o.y,.5);r.unproject(v);var n=r.sub(v.position).normalize(),a=new THREE.Ray(v.position,n),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(f,n.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(f),g.position.copy(this.camera.position).sub(f),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var n=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,n),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var r=i.children[o];r.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,r){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=r,this.loadQueue=[];var n=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(n,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var n=r.shift();if(n instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(n.boundingBox,n.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var n=c.loadQueue[0],u=n.geometryNode;if(u.loaded===!0&&void 0!==n.parent){var h=this.replaceProxy(n);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else n.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var n=0;n=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=n.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,n,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,f=T.boundingSphere,R=r.intersectsBox(P),C=R;if(C){if(v+T.numPoints>this.visiblePointsTarget)break;v+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],f=w.boundingSphere,g=f.center.distanceTo(h),H=f.radius,E=f.radius/g,S=e.fov/2*Math.PI/180,M=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),A=t.domElement.clientHeight*M;if(!(Ag-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var V=0,B=0;Bm[B].weight){var V=B;break}if(B==m.length-1){V=m.length;break}}m.splice(V,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var r=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(r);for(var n={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dn;n++)if(void 0!==t.children[n]){var a=t.children[n],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),r=(new THREE.Matrix4).makeTranslation(n,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(r),a}}(n,a,o),d={start:n,end:a,points:s,project:l};i.push(d),o+=n.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,r){if(void 0===r){var n=[];n.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;n.length>0;){var v=n.shift(),f=0;if(v instanceof THREE.PointCloud){var g=v.geometry,E=g.attributes.position,y=E.array,b=v.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),r=e.clone();return r.applyMatrix4(t),r.applyMatrix4(o),r}}(e,t);return m.project=V,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,r))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},r=o.pickWindowSize||17,n=this.nodesOnRay(this.visibleNodes,i);if(0===n.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,n),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(r-1)/2,l.y-(r-1)/2,r,r),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),n.length>0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var M={},A=n[P.pcIndex],V=A.geometry.attributes;for(var B in V)if(V.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=A.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),M[B]=D}else if("indices"===B);else if(1===I.itemSize)M[B]=I.array[u+O];else{for(var X=[],O=0;Oc;c++){var u=n[3*c+0],h=n[3*c+1],p=n[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),v=parseInt(a*(m.x-o.min.x)/r.x),f=parseInt(a*(m.z-o.min.z)/r.z); -v=Math.min(v,a-1),f=Math.min(f,a-1);var g=v+f*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&n.x.5&&n.y0;){{var n=r.shift(),a=n.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,n.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),r[n+0]=c,r[n+1]=h,r[n+2]=u,n+=3}o.addAttribute("position",new THREE.BufferAttribute(r,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),r=0;o>r;r++)e+=i.substr(r*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],r=i.getUint8(0),n=i.getUint32(1,!0);e.numPoints=n,o.push({children:r,numPoints:n,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var v=e.pcoGeometry,c=0;c0,y.addChild(P),m[f]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(r){console.log("fehler beim laden der punktwolke: "+r)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",r=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],n=THREE.ImageUtils.loadTextureCube(r,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:n},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var r=new THREE.LineBasicMaterial({color:o||8947848}),n=new THREE.Geometry,a=0;t>=a;a++)n.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),n.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(n,r,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var r=o.image.data,n=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,r[3*u+0]=255*(h/15+.05+p)*n[0],r[3*u+1]=255*(h/15+.05+p)*n[1],r[3*u+2]=255*(h/15+.05+p)*n[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(r)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(r)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,r=-t.radius,n=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(r>s)return 0;n=Math.min(n,s)}return n>=t.radius?2:1},Potree.Features=function(){var e,t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),o=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT),r=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT),n=(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT),i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT)),a=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT),s=(i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT),o.precision>0&&n.precision>0),l=r.precision>0&&a.precision>0;return e=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},precision:e}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,r=o+2*this.borderThickness,n=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=r,t.canvas.height=n,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*r,.01*n,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,r,n){e.beginPath(),e.moveTo(t+n,i),e.lineTo(t+o-n,i),e.quadraticCurveTo(t+o,i,t+o,i+n),e.lineTo(t+o,i+r-n),e.quadraticCurveTo(t+o,i+r,t+o-n,i+r),e.lineTo(t+n,i+r),e.quadraticCurveTo(t,i+r,t,i+r-n),e.lineTo(t,i+n),e.quadraticCurveTo(t,i,t+n,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},r=function(e){e.target.material.emissive.setHex(0)},n=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var r=e.spheres.indexOf(i.dragstart.object);e.setPosition(r,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",r),s.addEventListener("drag",n),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){var t=this.points[r];o.add(t)}o.divideScalar(this.points.length);for(var r=0;i>=r;r++){var n=r,a=r+1>i?0:r+1,s=0===r?i:r-1,t=this.points[n],l=this.points[a],d=this.points[s],c=this.spheres[n];c.position.copy(t),c.material.color=e.color;var u=this.edges[n];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>n||this.closed;var h=this.edgeLabels[r],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>n||this.closed)&&this.points.length>=2&&m>0;var v=this.angleLabels[r],f=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));v.position.copy(y);var b=Potree.utils.addCommas((f*(180/Math.PI)).toFixed(1))+"°";v.setText(b),v.visible=this.showAngles&&(i>n||this.closed)&&this.points.length>=3&&f>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function r(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var r=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(r,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function n(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&n(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,r="undefined"!=typeof e.closed?e.closed:!1,n=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=r,a.maxMarkers=n,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var v={type:"marker_added",profile:this};this.dispatchEvent(v),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){{var e=this.points[n],a=this.spheres[n],s=0===n?r:n-1,l=n===r?0:n+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[n],p=this.boxes[s];this.boxes[n],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,v=e,f=m.clone().setY(0).distanceTo(v.clone().setY(0));p.scale.set(f,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,v).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(v,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var n=0;n0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile -},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),r=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(r);var n=function(){r.material.color.setHex(5592405)},a=function(){r.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),r=t.clone().unproject(s.camera),n=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(n,r),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,r).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=r;r++){var n=2*Math.PI*r/o,a=3*Math.cos(n),l=3*Math.sin(n);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,r=0;rt;t++)r.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function r(){}function n(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?n[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ac)&&(r=l,n=c)}}return r?r.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var r=[],n=0;n=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",r,!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var f=v.shift(),g=f.node,E=f.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(f)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var r=0;rH&&(A=Number.MAX_VALUE);var V=t.domElement.clientHeight*A;if(!(Vv[I].weight){var B=I;break}if(I==v.length-1){B=v.length;break}}v.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var r=0;r0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),r=0;r0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var M={},A=n[P.pcIndex],V=A.geometry.attributes;for(var B in V)if(V.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=A.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),M[B]=D}else if("indices"===B);else if(1===I.itemSize)M[B]=I.array[u+O];else{for(var X=[],O=0;Or?-1:r>n?1:0};t.sort(r);for(var n=[],a=0;a0&&(l+=1,d=n.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&n.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?n.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),r=e.byteLength/17,n=new Float32Array(3*r),a=new Float32Array(3*r),s=new Uint32Array(r),l=0;r>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;n[3*l+0]=d,n[3*l+1]=c,n[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var v=new THREE.BufferGeometry; -v.addAttribute("position",new THREE.BufferAttribute(n,3)),v.addAttribute("color",new THREE.BufferAttribute(a,3)),v.addAttribute("indices",new THREE.BufferAttribute(s,1)),v.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*r),3)),i.geometry=v,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,v.boundingBox=i.boundingBox,v.boundingSphere=i.boundingSphere,i.numPoints=r}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),r=new Potree.PointCloudArena4DGeometry;r.url=e,r.name=o.Name,r.provider=o.Provider,r.numNodes=o.Nodes,r.numPoints=o.Points,r.version=o.Version,r.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(r.spacing=o.Spacing);var n=r.boundingBox.min.clone().multiplyScalar(-1);r.boundingBox.min.add(n),r.boundingBox.max.add(n),r.offset=n;var a=r.boundingBox.center(),s=r.boundingBox.size().length()/2;r.boundingSphere=new THREE.Sphere(a,s),r.loadHierarchy(),t(r)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,r=new DataView(e),n=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=r.getUint8(3*l+0,!0),c=(r.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,v=null;h?v="X":p&&(v="Y"),m&&(v="Z");var f=new Potree.PointCloudArena4DGeometryNode;if(f.hasLeft=c,f.hasRight=u,f.split=v,f.isLeaf=!c&&!u,f.number=l,f.left=null,f.right=null,f.pcoGeometry=i,f.level=n.length,s=Math.max(s,f.level),n.length>0){var g=n[n.length-1];f.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=f,"X"===g.split?f.boundingBox.max.x=f.boundingBox.min.x+E.x/2:"Y"===g.split?f.boundingBox.max.y=f.boundingBox.min.y+E.y/2:"Z"===g.split&&(f.boundingBox.max.z=f.boundingBox.min.z+E.z/2);var y=f.boundingBox.center(),b=f.boundingBox.size().length()/2;f.boundingSphere=new THREE.Sphere(y,b)}else{g.right=f,"X"===g.split?f.boundingBox.min.x=f.boundingBox.min.x+E.x/2:"Y"===g.split?f.boundingBox.min.y=f.boundingBox.min.y+E.y/2:"Z"===g.split&&(f.boundingBox.min.z=f.boundingBox.min.z+E.z/2);var y=f.boundingBox.center(),b=f.boundingBox.size().length()/2;f.boundingSphere=new THREE.Sphere(y,b)}}else{a=f,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=f.boundingBox.size();if(f.spacing=(T.x+T.y+T.z)/3/75,n.push(f),f.isLeaf)for(var P=!1;!P&&n.length>0;){n.pop();var R=n[n.length-1];P=n.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file +function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var r=new THREE.Vector3(e.x,e.y,.5);r.unproject(t);for(var n=r.sub(t.position).normalize(),a=new THREE.Ray(t.position,n),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var r=o.getContext("2d");e=new e.constructor(e);for(var n=0;n 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D occlusionMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," float occlusion = texture2D(occlusionMap, vUv).g; "," color = color / color.w;"," "," color = color * (1.0 - occlusion);"," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","varying vec3 vViewRay;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);"," vViewRay = mvPosition.xyz;",""," gl_Position = projectionMatrix * mvPosition;"," "," ","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float zoom;","uniform float pixScale;","uniform float expScale;","","uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","varying vec3 vViewRay;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth, float scale){"," vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);"," "," if(neighbourDepth.w > 0.0){"," float Zn = ztransform(neighbourDepth.r);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.1 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){"," vec4 color = texture2D(colorMap, vUv);",""," float linearDepth = texture2D(depthMap, vUv).r;"," float f = computeObscurance(linearDepth, pixScale);"," f = exp(-expScale * f);"," "," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); +var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var r=o.radius,n=this.fov*Math.PI/180;this.aspect<1&&(n*=this.aspect);var a=Math.abs(r/Math.sin(n/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var r=JSON.parse(o.responseText),n=new Potree.Version(r.version);i.octreeDir=0===r.octreeDir.indexOf("http")?r.octreeDir:e+"/../"+r.octreeDir,i.spacing=r.spacing,i.hierarchyStepSize=r.hierarchyStepSize,i.pointAttributes=r.pointAttributes;var a=new THREE.Vector3(r.boundingBox.lx,r.boundingBox.ly,r.boundingBox.lz),s=new THREE.Vector3(r.boundingBox.ux,r.boundingBox.uy,r.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();r.tightBoundingBox&&(d.min.copy(new THREE.Vector3(r.tightBoundingBox.lx,r.tightBoundingBox.ly,r.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(r.tightBoundingBox.ux,r.tightBoundingBox.uy,r.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):"LAZ"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):(i.loader=new Potree.BinaryLoader(r.version,l,r.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=n.upTo("1.5")?r.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,n.upTo("1.4"))for(var m=1;m=r?i.pointsCount:i.pointsCount/r,s=function(){var e=t.readData(1e6,0,r);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),n+=e.count,Potree.LasLazLoader.progressCB(n/a),e.hasMoreData?s():(i.totalRead=n,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),r=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),r.add(e.pcoGeometry.offset),i.onmessage=function(n){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=n.data.position,d=n.data.color,c=n.data.intensity,u=new Uint8Array(n.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(n.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(n.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,r),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var n={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(n,[n.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,r=e.minSize||1,n=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:r,maxSize:n,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;in;n++)for(var a=0;i>a;a++){var s,l=n+t*a;s=e[n]?e[n]:e.DEFAULT,r[3*l+0]=255*s.r,r[3*l+1]=255*s.g,r[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=16,i=(Potree.EyeDomeLightingMaterial.generateKernel(t),Potree.EyeDomeLightingMaterial.generateRandomTexture(),8),o=new Float32Array(2*i),r=0;i>r;r++)o[2*r+0]=Math.cos(2*r*Math.PI/i),o[2*r+1]=Math.sin(2*r*Math.PI/i);var n=new THREE.Vector3(0,0,1).normalize(),a={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},pixScale:{type:"f",value:1},expScale:{type:"f",value:100},zoom:{type:"f",value:3},lightDir:{type:"v3",value:n},neighbours:{type:"2fv",value:o},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:a,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.EyeDomeLightingMaterial.generateRandomTexture=function(){var e=4,t=4,i=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);i.magFilter=THREE.NearestFilter;for(var o=i.image.data,r=0;e>r;r++)for(var n=0;t>n;n++){var a=Math.random(),s=r+e*n;o[3*s+0]=255*a,o[3*s+1]=255*a,o[3*s+2]=255*a}return i},Potree.EyeDomeLightingMaterial.generateKernel=function(e){for(var t=new Float32Array(3*e),i=0;e>i;i++){var o=2*Math.random()-1,r=2*Math.random()-1,n=Math.random(),a=Math.sqrt(o*o+r*r+n*n),s=Math.random();s*=s,o=s*o/a,r=s*r/a,n=s*n/a,t[3*i+0]=o,t[3*i+1]=r,t[3*i+2]=n}return t},Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",r,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function r(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",r,!1),l.dispatchEvent(x),P=T.NONE)}function n(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements; +f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,r=o.clone(),n=r.length();n*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*n/i.clientHeight),l.panUp(2*t*n/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var r=(new THREE.Matrix4).makeRotationY(g),n=(new THREE.Matrix4).multiplyMatrices(r,this.object.matrix);this.object.quaternion.setFromRotationMatrix(n),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",n,!1),this.domElement.addEventListener("DOMMouseScroll",n,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function r(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;V=A.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;V=A.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;V=A.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",n,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function n(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(V===A.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(V===A.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(V===A.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",n,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),V=A.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;V=A.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;V=A.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;V=A.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:V=A.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(V!==A.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(V!==A.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,r=Math.sqrt(i*i+o*o);R.set(0,r),C.subVectors(R,P);var n=t.clientWidth,a=t.clientHeight,s=Math.sqrt(n*n+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(V!==A.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:V=A.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),V=A.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,M=new THREE.Vector3,A={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},V=A.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,r=o.clone().sub(h.target),n=r.length();n*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*n/i.clientHeight),h.panUp(2*t*n/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),r=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var n=Math.min(1,this.fadeFactor*e);o+=n*w,r+=n*x,r=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,r)),r=Math.max(p,Math.min(Math.PI-p,r));var a=T.length();a+=(H-1)*a*n,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(n)),T.x=a*Math.sin(r)*Math.sin(o),T.y=a*Math.cos(r),T.z=a*Math.sin(r)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}M.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),M.copy(this.object.position))},this.reset=function(){V=A.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",r,!1),s.domElement.addEventListener("mouseup",n,!1)}}}function r(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function n(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",r,!1),s.domElement.removeEventListener("mouseup",n,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},r=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(r){var n=r.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(r,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*n*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},r=new THREE.Vector3(o.x,o.y,.5);r.unproject(f);var n=r.sub(f.position).normalize(),a=new THREE.Ray(f.position,n),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,n.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var n=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,n),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var r=i.children[o];r.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,r){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=r,this.loadQueue=[];var n=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(n,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var n=r.shift();if(n instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(n.boundingBox,n.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var n=c.loadQueue[0],u=n.geometryNode;if(u.loaded===!0&&void 0!==n.parent){var h=this.replaceProxy(n);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else n.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var n=0;n=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=n.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,n,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=r.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,M=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),A=t.domElement.clientHeight*M;if(!(Ag-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var V=0,B=0;Bm[B].weight){var V=B;break}if(B==m.length-1){V=m.length;break}}m.splice(V,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var r=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(r);for(var n={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dn;n++)if(void 0!==t.children[n]){var a=t.children[n],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),r=(new THREE.Matrix4).makeTranslation(n,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(r),a}}(n,a,o),d={start:n,end:a,points:s,project:l};i.push(d),o+=n.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,r){if(void 0===r){var n=[];n.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;n.length>0;){var f=n.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),r=e.clone();return r.applyMatrix4(t),r.applyMatrix4(o),r}}(e,t);return m.project=V,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,r))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},r=o.pickWindowSize||17,n=this.nodesOnRay(this.visibleNodes,i);if(0===n.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,n),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(r-1)/2,l.y-(r-1)/2,r,r),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),n.length>0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var M={},A=n[P.pcIndex],V=A.geometry.attributes;for(var B in V)if(V.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=A.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),M[B]=D}else if("indices"===B);else if(1===I.itemSize)M[B]=I.array[u+O];else{for(var X=[],O=0;Oc;c++){var u=n[3*c+0],h=n[3*c+1],p=n[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/r.x),v=parseInt(a*(m.z-o.min.z)/r.z); +f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&n.x.5&&n.y0;){{var n=r.shift(),a=n.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,n.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),r[n+0]=c,r[n+1]=h,r[n+2]=u,n+=3}o.addAttribute("position",new THREE.BufferAttribute(r,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),r=0;o>r;r++)e+=i.substr(r*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],r=i.getUint8(0),n=i.getUint32(1,!0);e.numPoints=n,o.push({children:r,numPoints:n,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(r){console.log("fehler beim laden der punktwolke: "+r)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",r=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],n=THREE.ImageUtils.loadTextureCube(r,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:n},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var r=new THREE.LineBasicMaterial({color:o||8947848}),n=new THREE.Geometry,a=0;t>=a;a++)n.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),n.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(n,r,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var r=o.image.data,n=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,r[3*u+0]=255*(h/15+.05+p)*n[0],r[3*u+1]=255*(h/15+.05+p)*n[1],r[3*u+2]=255*(h/15+.05+p)*n[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(r)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(r)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,r=-t.radius,n=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(r>s)return 0;n=Math.min(n,s)}return n>=t.radius?2:1},Potree.Features=function(){var e,t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),o=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT),r=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT),n=(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT),i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT)),a=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT),s=(i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT),o.precision>0&&n.precision>0),l=r.precision>0&&a.precision>0;return e=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},precision:e}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,r=o+2*this.borderThickness,n=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=r,t.canvas.height=n,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*r,.01*n,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,r,n){e.beginPath(),e.moveTo(t+n,i),e.lineTo(t+o-n,i),e.quadraticCurveTo(t+o,i,t+o,i+n),e.lineTo(t+o,i+r-n),e.quadraticCurveTo(t+o,i+r,t+o-n,i+r),e.lineTo(t+n,i+r),e.quadraticCurveTo(t,i+r,t,i+r-n),e.lineTo(t,i+n),e.quadraticCurveTo(t,i,t+n,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},r=function(e){e.target.material.emissive.setHex(0)},n=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var r=e.spheres.indexOf(i.dragstart.object);e.setPosition(r,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",r),s.addEventListener("drag",n),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){var t=this.points[r];o.add(t)}o.divideScalar(this.points.length);for(var r=0;i>=r;r++){var n=r,a=r+1>i?0:r+1,s=0===r?i:r-1,t=this.points[n],l=this.points[a],d=this.points[s],c=this.spheres[n];c.position.copy(t),c.material.color=e.color;var u=this.edges[n];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>n||this.closed;var h=this.edgeLabels[r],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>n||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[r],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>n||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function r(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var r=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(r,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function n(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&n(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,r="undefined"!=typeof e.closed?e.closed:!1,n=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=r,a.maxMarkers=n,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){{var e=this.points[n],a=this.spheres[n],s=0===n?r:n-1,l=n===r?0:n+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[n],p=this.boxes[s];this.boxes[n],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var n=0;n0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile +},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),r=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(r);var n=function(){r.material.color.setHex(5592405)},a=function(){r.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),r=t.clone().unproject(s.camera),n=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(n,r),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,r).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=r;r++){var n=2*Math.PI*r/o,a=3*Math.cos(n),l=3*Math.sin(n);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,r=0;rt;t++)r.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function r(){}function n(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?n[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ac)&&(r=l,n=c)}}return r?r.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var r=[],n=0;n=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",r,!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var r=0;rH&&(A=Number.MAX_VALUE);var V=t.domElement.clientHeight*A;if(!(Vf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var r=0;r0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),r=0;r0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var M={},A=n[P.pcIndex],V=A.geometry.attributes;for(var B in V)if(V.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=A.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),M[B]=D}else if("indices"===B);else if(1===I.itemSize)M[B]=I.array[u+O];else{for(var X=[],O=0;Or?-1:r>n?1:0};t.sort(r);for(var n=[],a=0;a0&&(l+=1,d=n.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&n.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?n.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),r=e.byteLength/17,n=new Float32Array(3*r),a=new Float32Array(3*r),s=new Uint32Array(r),l=0;r>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;n[3*l+0]=d,n[3*l+1]=c,n[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry; +f.addAttribute("position",new THREE.BufferAttribute(n,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*r),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=r}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),r=new Potree.PointCloudArena4DGeometry;r.url=e,r.name=o.Name,r.provider=o.Provider,r.numNodes=o.Nodes,r.numPoints=o.Points,r.version=o.Version,r.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(r.spacing=o.Spacing);var n=r.boundingBox.min.clone().multiplyScalar(-1);r.boundingBox.min.add(n),r.boundingBox.max.add(n),r.offset=n;var a=r.boundingBox.center(),s=r.boundingBox.size().length()/2;r.boundingSphere=new THREE.Sphere(a,s),r.loadHierarchy(),t(r)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,r=new DataView(e),n=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=r.getUint8(3*l+0,!0),c=(r.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=n.length,s=Math.max(s,v.level),n.length>0){var g=n[n.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,n.push(v),v.isLeaf)for(var P=!1;!P&&n.length>0;){n.pop();var R=n[n.length-1];P=n.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file diff --git a/build/shaders/shaders.js b/build/shaders/shaders.js index 55b799aea0..7f7f0507b8 100644 --- a/build/shaders/shaders.js +++ b/build/shaders/shaders.js @@ -644,10 +644,12 @@ Potree.Shaders["edl.vs"] = [ Potree.Shaders["edl.fs"] = [ "", - "", - "// adapted from Christian Boucheny's EDL shader code in cloud compare:", + "// ", + "// adapted from the EDL shader code from Christian Boucheny in cloud compare:", "// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL", + "//", "", + "#define NEIGHBOUR_COUNT 8", "", "", "uniform mat4 projectionMatrix;", @@ -656,7 +658,7 @@ Potree.Shaders["edl.fs"] = [ "uniform float screenHeight;", "uniform float near;", "uniform float far;", - "uniform vec2 neighbours[16];", + "uniform vec2 neighbours[NEIGHBOUR_COUNT];", "uniform vec3 lightDir;", "uniform float zoom;", "uniform float pixScale;", @@ -668,44 +670,51 @@ Potree.Shaders["edl.fs"] = [ "varying vec2 vUv;", "varying vec3 vViewRay;", "", - "float ztransform(float depth){", - " return 1.0 - (depth - near) / (far - near);", + "/**", + " * transform linear depth to [0,1] interval with 1 beeing closest to the camera.", + " */", + "float ztransform(float linearDepth){", + " return 1.0 - (linearDepth - near) / (far - near);", "}", "", "float obscurance(float z, float dist){", " return max(0.0, z) / dist;", "}", "", - "float computeObscurance(float depth, float scale){", - " vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, depth) ) );", + "float computeObscurance(float linearDepth, float scale){", + " vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );", " ", " float sum = 0.0;", " ", - " for(int c = 0; c < 8; c++){", + " for(int c = 0; c < NEIGHBOUR_COUNT; c++){", " vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];", " vec2 N_abs_pos = vUv + N_rel_pos;", " ", - " float Zn = ztransform(texture2D(depthMap, N_abs_pos).r);", - " float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );", + " vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);", " ", - " //sum += obscurance( Znp, scale );", - " sum += obscurance( Znp, 0.1 * texture2D(depthMap, vUv).r );", + " if(neighbourDepth.w > 0.0){", + " float Zn = ztransform(neighbourDepth.r);", + " float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );", + " ", + " sum += obscurance( Znp, 0.1 * linearDepth );", + " }", " }", " ", " return sum;", "}", "", "void main(){", + " vec4 color = texture2D(colorMap, vUv);", "", - " float depth = ztransform(texture2D(depthMap, vUv).r);", - " float f = computeObscurance(depth, pixScale);", + " float linearDepth = texture2D(depthMap, vUv).r;", + " float f = computeObscurance(linearDepth, pixScale);", " f = exp(-expScale * f);", " ", - " vec3 color = texture2D(colorMap, vUv).rgb;", + " if(color.a == 0.0 && f >= 1.0){", + " discard;", + " }", " ", - " //gl_FragColor = vec4(f, f, f, 1.0);", - " gl_FragColor = vec4(color * f, 1.0);", - "", + " gl_FragColor = vec4(color.rgb * f, 1.0);", "}", "", ].join("\n"); diff --git a/examples/js/viewer.js b/examples/js/viewer.js index 1b589ce8dd..6b1bed9ea2 100644 --- a/examples/js/viewer.js +++ b/examples/js/viewer.js @@ -188,6 +188,7 @@ function initGUI(){ } options.push("Height"); + options.push("Color"); options.push("Tree Depth"); } diff --git a/examples/viewer.html b/examples/viewer.html index f459c0159b..2bc45035aa 100644 --- a/examples/viewer.html +++ b/examples/viewer.html @@ -76,13 +76,20 @@ diff --git a/src/utils.js b/src/utils.js index ba51805f64..885e609285 100644 --- a/src/utils.js +++ b/src/utils.js @@ -306,4 +306,26 @@ Potree.utils.frustumSphereIntersection = function(frustum, sphere){ }; +Potree.utils.screenPass = new function(){ + + this.screenScene = new THREE.Scene(); + this.screenQuad = new THREE.Mesh(new THREE.PlaneBufferGeometry(2, 2, 0)); + this.screenQuad.material.depthTest = true; + this.screenQuad.material.depthWrite = true; + this.screenQuad.material.transparent = true; + this.screenScene.add(this.screenQuad); + this.camera = new THREE.Camera(); + + this.render = function(renderer, material, target){ + this.screenQuad.material = material; + + if(typeof target === undefined){ + renderer.render(this.screenScene, this.camera); + }else{ + renderer.render(this.screenScene, this.camera, target); + } + } +}(); + + \ No newline at end of file From 22ddccc5c290c553d2e8c415c17b85366fcc4d56 Mon Sep 17 00:00:00 2001 From: mschuetz Date: Wed, 22 Jul 2015 11:54:49 +0200 Subject: [PATCH 11/35] some improvements --- examples/js/viewer.js | 79 ++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 38 deletions(-) diff --git a/examples/js/viewer.js b/examples/js/viewer.js index 97ddceb5b1..c19034c654 100644 --- a/examples/js/viewer.js +++ b/examples/js/viewer.js @@ -127,6 +127,7 @@ function initGUI(){ "Materials" : sceneProperties.material, "Clip Mode": "Highlight Inside", "quality": sceneProperties.quality, + "EDL": sceneProperties.useEDL, "skybox": false, "stats": showStats, "BoundingBox": showBoundingBox, @@ -217,6 +218,11 @@ function initGUI(){ quality = value; }); + var pEDL = fAppearance.add(params, 'EDL'); + pEDL.onChange(function(value){ + sceneProperties.useEDL = value; + }); + var pSykbox = fAppearance.add(params, 'skybox'); pSykbox.onChange(function(value){ showSkybox = value; @@ -1124,7 +1130,6 @@ var EDLRenderer = function(){ renderer.render(scene, camera); if(pointcloud){ - var width = elRenderArea.clientWidth; var height = elRenderArea.clientHeight; @@ -1134,54 +1139,52 @@ var EDLRenderer = function(){ pointcloud.visiblePointsTarget = pointCountTarget * 1000 * 1000; var originalMaterial = pointcloud.material; + var vn = []; + for(var i = 0; i < pointcloud.visibleNodes.length; i++){ + vn.push(pointcloud.visibleNodes[i].node); + } {// DEPTH PASS - var material = depthMaterial; - - material.size = pointSize; - material.pointSizeType = pointSizeType; - material.screenWidth = width; - material.screenHeight = height; - material.uniforms.visibleNodes.value = pointcloud.material.visibleNodesTexture; - material.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; - material.fov = camera.fov * (Math.PI / 180); - material.spacing = pointcloud.pcoGeometry.spacing; - material.near = camera.near; - material.far = camera.far; - material.heightMin = heightMin; - material.heightMax = heightMax; - - pointcloud.material = material; + depthMaterial.size = pointSize; + depthMaterial.pointSizeType = pointSizeType; + depthMaterial.screenWidth = width; + depthMaterial.screenHeight = height; + depthMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; + depthMaterial.fov = camera.fov * (Math.PI / 180); + depthMaterial.spacing = pointcloud.pcoGeometry.spacing; + depthMaterial.near = camera.near; + depthMaterial.far = camera.far; + depthMaterial.heightMin = heightMin; + depthMaterial.heightMax = heightMax; + depthMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; + pointcloud.updateVisibilityTexture(depthMaterial, vn); - pointcloud.update(camera, renderer); - + scenePointCloud.overrideMaterial = depthMaterial; renderer.clearTarget( rtDepth, true, true, true ); renderer.render(scenePointCloud, camera, rtDepth); + scenePointCloud.overrideMaterial = null; } {// ATTRIBUTE PASS - var material = attributeMaterial; - - material.size = pointSize; - material.pointSizeType = pointSizeType; - material.screenWidth = width; - material.screenHeight = height; - material.pointColorType = pointColorType; - material.depthMap = rtDepth; - material.uniforms.visibleNodes.value = pointcloud.material.visibleNodesTexture; - material.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; - material.fov = camera.fov * (Math.PI / 180); - material.spacing = pointcloud.pcoGeometry.spacing; - material.near = camera.near; - material.far = camera.far; - material.heightMin = heightMin; - material.heightMax = heightMax; + attributeMaterial.size = pointSize; + attributeMaterial.pointSizeType = pointSizeType; + attributeMaterial.screenWidth = width; + attributeMaterial.screenHeight = height; + attributeMaterial.pointColorType = pointColorType; + attributeMaterial.depthMap = rtDepth; + attributeMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; + attributeMaterial.fov = camera.fov * (Math.PI / 180); + attributeMaterial.spacing = pointcloud.pcoGeometry.spacing; + attributeMaterial.near = camera.near; + attributeMaterial.far = camera.far; + attributeMaterial.heightMin = heightMin; + attributeMaterial.heightMax = heightMax; + pointcloud.updateVisibilityTexture(attributeMaterial, vn); - pointcloud.material = material; - - pointcloud.update(camera, renderer); + scenePointCloud.overrideMaterial = attributeMaterial; renderer.clearTarget( rtNormalize, true, true, true ); renderer.render(scenePointCloud, camera, rtNormalize); + scenePointCloud.overrideMaterial = null; } { // OCCLUSION PASS From 963bc76d99d724f293d0dfe36fb25ea3e540ccb6 Mon Sep 17 00:00:00 2001 From: mschuetz Date: Wed, 22 Jul 2015 16:54:53 +0200 Subject: [PATCH 12/35] using WEBGL_DEPTH_TEXTURE extension to remove the depth pass. causes precision problems for EDL --- build/js/potree.js | 21 ++++- build/js/potree.min.js | 4 +- build/shaders/shaders.js | 20 ++++- examples/js/viewer.js | 125 ++++++++++++++++++++-------- examples/viewer.html | 2 +- src/materials/shaders/edl.fs | 16 +++- src/materials/shaders/pointcloud.vs | 4 +- 7 files changed, 144 insertions(+), 48 deletions(-) diff --git a/build/js/potree.js b/build/js/potree.js index f90c85495c..36ef497f99 100644 --- a/build/js/potree.js +++ b/build/js/potree.js @@ -280,6 +280,8 @@ Potree.Shaders["pointcloud.vs"] = [ " vOpacity = opacity;", " vLinearDepth = -mvPosition.z;", " vNormal = normalize(normalMatrix * normal);", + " ", + " //gl_Position.z = ((vLinearDepth - near) / (far - near)) * 2.0 - 1.0;", "", "", " // ---------------------", @@ -294,7 +296,7 @@ Potree.Shaders["pointcloud.vs"] = [ " vColor = texture2D(gradient, vec2(w,1.0-w)).rgb;", " #elif defined color_type_depth", " float linearDepth = -mvPosition.z ;", - " float expDepth = gl_Position.z / gl_Position.w;", + " float expDepth = (gl_Position.z / gl_Position.w) * 0.5 + 0.5;", " vColor = vec3(linearDepth, expDepth, 0.0);", " #elif defined color_type_intensity", " float w = (intensity - intensityMin) / (intensityMax - intensityMin);", @@ -739,6 +741,13 @@ Potree.Shaders["edl.fs"] = [ " return 1.0 - (linearDepth - near) / (far - near);", "}", "", + "float expToLinear(float z){", + " z = 2.0 * z - 1.0;", + " float linear = (2.0 * near * far) / (far + near - z * (far - near));", + "", + " return linear;", + "}", + "", "float obscurance(float z, float dist){", " return max(0.0, z) / dist;", "}", @@ -753,9 +762,10 @@ Potree.Shaders["edl.fs"] = [ " vec2 N_abs_pos = vUv + N_rel_pos;", " ", " vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);", + " float linearNeighbourDepth = expToLinear(neighbourDepth.r);", " ", " if(neighbourDepth.w > 0.0){", - " float Zn = ztransform(neighbourDepth.r);", + " float Zn = ztransform(linearNeighbourDepth);", " float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );", " ", " sum += obscurance( Znp, 0.1 * linearDepth );", @@ -766,12 +776,14 @@ Potree.Shaders["edl.fs"] = [ "}", "", "void main(){", - " vec4 color = texture2D(colorMap, vUv);", "", - " float linearDepth = texture2D(depthMap, vUv).r;", + " float expDepth = texture2D(depthMap, vUv).r;", + " float linearDepth = expToLinear(expDepth);", + " ", " float f = computeObscurance(linearDepth, pixScale);", " f = exp(-expScale * f);", " ", + " vec4 color = texture2D(colorMap, vUv);", " if(color.a == 0.0 && f >= 1.0){", " discard;", " }", @@ -2378,6 +2390,7 @@ Potree.EyeDomeLightingMaterial = function(parameters){ lightDir: { type: "v3", value: lightDir }, neighbours: { type: "2fv", value: neighbours }, depthMap: { type: "t", value: null }, + depthPassMap: { type: "t", value: null }, colorMap: { type: "t", value: null } }; diff --git a/build/js/potree.min.js b/build/js/potree.min.js index da5e16e322..7908a1f455 100644 --- a/build/js/potree.min.js +++ b/build/js/potree.min.js @@ -1,5 +1,5 @@ -function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var n=new THREE.Vector3(e.x,e.y,.5);n.unproject(t);for(var r=n.sub(t.position).normalize(),a=new THREE.Ray(t.position,r),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var n=o.getContext("2d");e=new e.constructor(e);for(var r=0;r 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D occlusionMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," float occlusion = texture2D(occlusionMap, vUv).g; "," color = color / color.w;"," "," color = color * (1.0 - occlusion);"," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","varying vec3 vViewRay;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);"," vViewRay = mvPosition.xyz;",""," gl_Position = projectionMatrix * mvPosition;"," "," ","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float zoom;","uniform float pixScale;","uniform float expScale;","","uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","varying vec3 vViewRay;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth, float scale){"," vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);"," "," if(neighbourDepth.w > 0.0){"," float Zn = ztransform(neighbourDepth.r);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.1 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){"," vec4 color = texture2D(colorMap, vUv);",""," float linearDepth = texture2D(depthMap, vUv).r;"," float f = computeObscurance(linearDepth, pixScale);"," f = exp(-expScale * f);"," "," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); -var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var n=o.radius,r=this.fov*Math.PI/180;this.aspect<1&&(r*=this.aspect);var a=Math.abs(n/Math.sin(r/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var n=JSON.parse(o.responseText),r=new Potree.Version(n.version);i.octreeDir=0===n.octreeDir.indexOf("http")?n.octreeDir:e+"/../"+n.octreeDir,i.spacing=n.spacing,i.hierarchyStepSize=n.hierarchyStepSize,i.pointAttributes=n.pointAttributes;var a=new THREE.Vector3(n.boundingBox.lx,n.boundingBox.ly,n.boundingBox.lz),s=new THREE.Vector3(n.boundingBox.ux,n.boundingBox.uy,n.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();n.tightBoundingBox&&(d.min.copy(new THREE.Vector3(n.tightBoundingBox.lx,n.tightBoundingBox.ly,n.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(n.tightBoundingBox.ux,n.tightBoundingBox.uy,n.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):"LAZ"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):(i.loader=new Potree.BinaryLoader(n.version,l,n.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=r.upTo("1.5")?n.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,r.upTo("1.4"))for(var m=1;m=n?i.pointsCount:i.pointsCount/n,s=function(){var e=t.readData(1e6,0,n);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),r+=e.count,Potree.LasLazLoader.progressCB(r/a),e.hasMoreData?s():(i.totalRead=r,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),n=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),n.add(e.pcoGeometry.offset),i.onmessage=function(r){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=r.data.position,d=r.data.color,c=r.data.intensity,u=new Uint8Array(r.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(r.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(r.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,n),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var r={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(r,[r.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,n=e.minSize||1,r=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:n,maxSize:r,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;ir;r++)for(var a=0;i>a;a++){var s,l=r+t*a;s=e[r]?e[r]:e.DEFAULT,n[3*l+0]=255*s.r,n[3*l+1]=255*s.g,n[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var n=new THREE.Vector3(0,0,1).normalize(),r={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},pixScale:{type:"f",value:1},expScale:{type:"f",value:100},zoom:{type:"f",value:3},lightDir:{type:"v3",value:n},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:r,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",n,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function n(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",n,!1),l.dispatchEvent(x),P=T.NONE)}function r(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,n=o.clone(),r=n.length();r*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*r/i.clientHeight),l.panUp(2*t*r/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.") +function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var n=new THREE.Vector3(e.x,e.y,.5);n.unproject(t);for(var r=n.sub(t.position).normalize(),a=new THREE.Ray(t.position,r),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var n=o.getContext("2d");e=new e.constructor(e);for(var r=0;r 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D occlusionMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," float occlusion = texture2D(occlusionMap, vUv).g; "," color = color / color.w;"," "," color = color * (1.0 - occlusion);"," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","varying vec3 vViewRay;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);"," vViewRay = mvPosition.xyz;",""," gl_Position = projectionMatrix * mvPosition;"," "," ","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float zoom;","uniform float pixScale;","uniform float expScale;","","uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","varying vec3 vViewRay;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float expToLinear(float z){"," z = 2.0 * z - 1.0;"," float linear = (2.0 * near * far) / (far + near - z * (far - near));",""," return linear;","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth, float scale){"," vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);"," float linearNeighbourDepth = expToLinear(neighbourDepth.r);"," "," if(neighbourDepth.w > 0.0){"," float Zn = ztransform(linearNeighbourDepth);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.1 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){",""," float expDepth = texture2D(depthMap, vUv).r;"," float linearDepth = expToLinear(expDepth);"," "," float f = computeObscurance(linearDepth, pixScale);"," f = exp(-expScale * f);"," "," vec4 color = texture2D(colorMap, vUv);"," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); +var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var n=o.radius,r=this.fov*Math.PI/180;this.aspect<1&&(r*=this.aspect);var a=Math.abs(n/Math.sin(r/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var n=JSON.parse(o.responseText),r=new Potree.Version(n.version);i.octreeDir=0===n.octreeDir.indexOf("http")?n.octreeDir:e+"/../"+n.octreeDir,i.spacing=n.spacing,i.hierarchyStepSize=n.hierarchyStepSize,i.pointAttributes=n.pointAttributes;var a=new THREE.Vector3(n.boundingBox.lx,n.boundingBox.ly,n.boundingBox.lz),s=new THREE.Vector3(n.boundingBox.ux,n.boundingBox.uy,n.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();n.tightBoundingBox&&(d.min.copy(new THREE.Vector3(n.tightBoundingBox.lx,n.tightBoundingBox.ly,n.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(n.tightBoundingBox.ux,n.tightBoundingBox.uy,n.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):"LAZ"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):(i.loader=new Potree.BinaryLoader(n.version,l,n.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=r.upTo("1.5")?n.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,r.upTo("1.4"))for(var m=1;m=n?i.pointsCount:i.pointsCount/n,s=function(){var e=t.readData(1e6,0,n);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),r+=e.count,Potree.LasLazLoader.progressCB(r/a),e.hasMoreData?s():(i.totalRead=r,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),n=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),n.add(e.pcoGeometry.offset),i.onmessage=function(r){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=r.data.position,d=r.data.color,c=r.data.intensity,u=new Uint8Array(r.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(r.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(r.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,n),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var r={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(r,[r.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,n=e.minSize||1,r=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:n,maxSize:r,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;ir;r++)for(var a=0;i>a;a++){var s,l=r+t*a;s=e[r]?e[r]:e.DEFAULT,n[3*l+0]=255*s.r,n[3*l+1]=255*s.g,n[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var n=new THREE.Vector3(0,0,1).normalize(),r={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},pixScale:{type:"f",value:1},expScale:{type:"f",value:100},zoom:{type:"f",value:3},lightDir:{type:"v3",value:n},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},depthPassMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:r,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",n,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function n(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",n,!1),l.dispatchEvent(x),P=T.NONE)}function r(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,n=o.clone(),r=n.length();r*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*r/i.clientHeight),l.panUp(2*t*r/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.") },this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var n=(new THREE.Matrix4).makeRotationY(g),r=(new THREE.Matrix4).multiplyMatrices(n,this.object.matrix);this.object.quaternion.setFromRotationMatrix(r),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",r,!1),this.domElement.addEventListener("DOMMouseScroll",r,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function n(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",r,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function r(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",r,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(i*i+o*o);R.set(0,n),C.subVectors(R,P);var r=t.clientWidth,a=t.clientHeight,s=Math.sqrt(r*r+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,n=o.clone().sub(h.target),r=n.length();r*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*r/i.clientHeight),h.panUp(2*t*r/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),n=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var r=Math.min(1,this.fadeFactor*e);o+=r*w,n+=r*x,n=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,n)),n=Math.max(p,Math.min(Math.PI-p,n));var a=T.length();a+=(H-1)*a*r,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(r)),T.x=a*Math.sin(n)*Math.sin(o),T.y=a*Math.cos(n),T.z=a*Math.sin(n)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",n,!1),s.domElement.addEventListener("mouseup",r,!1)}}}function n(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function r(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",n,!1),s.domElement.removeEventListener("mouseup",r,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},n=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(n){var r=n.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(n,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*r*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},n=new THREE.Vector3(o.x,o.y,.5);n.unproject(f);var r=n.sub(f.position).normalize(),a=new THREE.Ray(f.position,r),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,r.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var r=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,r),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var n=i.children[o];n.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,n){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=n,this.loadQueue=[];var r=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(r,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var r=n.shift();if(r instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(r.boundingBox,r.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var r=c.loadQueue[0],u=r.geometryNode;if(u.loaded===!0&&void 0!==r.parent){var h=this.replaceProxy(r);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else r.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var n=new THREE.BoxHelper(e);this.add(n),this.boundingBoxNodes.push(n),e.boundingBoxNode=n,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var r=0;r=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=r.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,r,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=n.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var n=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(n);for(var r={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dr;r++)if(void 0!==t.children[r]){var a=t.children[r],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),n=(new THREE.Matrix4).makeTranslation(r,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(n),a}}(r,a,o),d={start:r,end:a,points:s,project:l};i.push(d),o+=r.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,n){if(void 0===n){var r=[];r.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;r.length>0;){var f=r.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),n=e.clone();return n.applyMatrix4(t),n.applyMatrix4(o),n}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,n))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},n=o.pickWindowSize||17,r=this.nodesOnRay(this.visibleNodes,i);if(0===r.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,r),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(n-1)/2,l.y-(n-1)/2,n,n),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),r.length>0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+O];else{for(var X=[],O=0;Oc;c++){var u=r[3*c+0],h=r[3*c+1],p=r[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/n.x),v=parseInt(a*(m.z-o.min.z)/n.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&r.x.5&&r.y0;){{var r=n.shift(),a=r.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,r.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),n[r+0]=c,n[r+1]=h,n[r+2]=u,r+=3}o.addAttribute("position",new THREE.BufferAttribute(n,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),n=0;o>n;n++)e+=i.substr(n*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],n=i.getUint8(0),r=i.getUint32(1,!0);e.numPoints=r,o.push({children:n,numPoints:r,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(n){console.log("fehler beim laden der punktwolke: "+n)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",n=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],r=THREE.ImageUtils.loadTextureCube(n,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:r},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var n=new THREE.LineBasicMaterial({color:o||8947848}),r=new THREE.Geometry,a=0;t>=a;a++)r.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),r.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(r,n,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var n=o.image.data,r=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,n[3*u+0]=255*(h/15+.05+p)*r[0],n[3*u+1]=255*(h/15+.05+p)*r[1],n[3*u+2]=255*(h/15+.05+p)*r[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(n)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(n)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,n=-t.radius,r=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(n>s)return 0;r=Math.min(r,s)}return r>=t.radius?2:1},Potree.utils.screenPass=new function(){this.screenScene=new THREE.Scene,this.screenQuad=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2,0)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new THREE.Camera,this.render=function(e,t,i){this.screenQuad.material=t,void 0===typeof i?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,i)}},Potree.Features=function(){var e,t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),o=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT),n=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT),r=(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT),i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT)),a=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT),s=(i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT),o.precision>0&&r.precision>0),l=n.precision>0&&a.precision>0;return e=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},precision:e}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,n=o+2*this.borderThickness,r=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=n,t.canvas.height=r,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*n,.01*r,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,n,r){e.beginPath(),e.moveTo(t+r,i),e.lineTo(t+o-r,i),e.quadraticCurveTo(t+o,i,t+o,i+r),e.lineTo(t+o,i+n-r),e.quadraticCurveTo(t+o,i+n,t+o-r,i+n),e.lineTo(t+r,i+n),e.quadraticCurveTo(t,i+n,t,i+n-r),e.lineTo(t,i+r),e.quadraticCurveTo(t,i,t+r,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},n=function(e){e.target.material.emissive.setHex(0)},r=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var n=e.spheres.indexOf(i.dragstart.object);e.setPosition(n,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",n),s.addEventListener("drag",r),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){var t=this.points[n];o.add(t)}o.divideScalar(this.points.length);for(var n=0;i>=n;n++){var r=n,a=n+1>i?0:n+1,s=0===n?i:n-1,t=this.points[r],l=this.points[a],d=this.points[s],c=this.spheres[r];c.position.copy(t),c.material.color=e.color;var u=this.edges[r];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>r||this.closed;var h=this.edgeLabels[n],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>r||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[n],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>r||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function n(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var n=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(n,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function r(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&r(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,n="undefined"!=typeof e.closed?e.closed:!1,r=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=n,a.maxMarkers=r,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){{var e=this.points[r],a=this.spheres[r],s=0===r?n:r-1,l=r===n?0:r+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[r],p=this.boxes[s];this.boxes[r],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var r=0;r0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile },this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),n=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(n);var r=function(){n.material.color.setHex(5592405)},a=function(){n.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),n=t.clone().unproject(s.camera),r=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(r,n),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,n).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=n;n++){var r=2*Math.PI*n/o,a=3*Math.cos(r),l=3*Math.sin(r);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,n=0;nt;t++)n.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function n(){}function r(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?r[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ac)&&(n=l,r=c)}}return n?n.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var n=[],r=0;r=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",n,!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var n=0;nH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var n=0;n0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),n=0;n0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+O];else{for(var X=[],O=0;On?-1:n>r?1:0};t.sort(n);for(var r=[],a=0;a0&&(l+=1,d=r.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&r.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?r.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),n=e.byteLength/17,r=new Float32Array(3*n),a=new Float32Array(3*n),s=new Uint32Array(n),l=0;n>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;r[3*l+0]=d,r[3*l+1]=c,r[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry; diff --git a/build/shaders/shaders.js b/build/shaders/shaders.js index 7f7f0507b8..5b601de92e 100644 --- a/build/shaders/shaders.js +++ b/build/shaders/shaders.js @@ -218,6 +218,8 @@ Potree.Shaders["pointcloud.vs"] = [ " vOpacity = opacity;", " vLinearDepth = -mvPosition.z;", " vNormal = normalize(normalMatrix * normal);", + " ", + " //gl_Position.z = ((vLinearDepth - near) / (far - near)) * 2.0 - 1.0;", "", "", " // ---------------------", @@ -232,7 +234,7 @@ Potree.Shaders["pointcloud.vs"] = [ " vColor = texture2D(gradient, vec2(w,1.0-w)).rgb;", " #elif defined color_type_depth", " float linearDepth = -mvPosition.z ;", - " float expDepth = gl_Position.z / gl_Position.w;", + " float expDepth = (gl_Position.z / gl_Position.w) * 0.5 + 0.5;", " vColor = vec3(linearDepth, expDepth, 0.0);", " #elif defined color_type_intensity", " float w = (intensity - intensityMin) / (intensityMax - intensityMin);", @@ -677,6 +679,13 @@ Potree.Shaders["edl.fs"] = [ " return 1.0 - (linearDepth - near) / (far - near);", "}", "", + "float expToLinear(float z){", + " z = 2.0 * z - 1.0;", + " float linear = (2.0 * near * far) / (far + near - z * (far - near));", + "", + " return linear;", + "}", + "", "float obscurance(float z, float dist){", " return max(0.0, z) / dist;", "}", @@ -691,9 +700,10 @@ Potree.Shaders["edl.fs"] = [ " vec2 N_abs_pos = vUv + N_rel_pos;", " ", " vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);", + " float linearNeighbourDepth = expToLinear(neighbourDepth.r);", " ", " if(neighbourDepth.w > 0.0){", - " float Zn = ztransform(neighbourDepth.r);", + " float Zn = ztransform(linearNeighbourDepth);", " float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );", " ", " sum += obscurance( Znp, 0.1 * linearDepth );", @@ -704,12 +714,14 @@ Potree.Shaders["edl.fs"] = [ "}", "", "void main(){", - " vec4 color = texture2D(colorMap, vUv);", "", - " float linearDepth = texture2D(depthMap, vUv).r;", + " float expDepth = texture2D(depthMap, vUv).r;", + " float linearDepth = expToLinear(expDepth);", + " ", " float f = computeObscurance(linearDepth, pixScale);", " f = exp(-expScale * f);", " ", + " vec4 color = texture2D(colorMap, vUv);", " if(color.a == 0.0 && f >= 1.0){", " discard;", " }", diff --git a/examples/js/viewer.js b/examples/js/viewer.js index c19034c654..438ebe9324 100644 --- a/examples/js/viewer.js +++ b/examples/js/viewer.js @@ -285,7 +285,7 @@ function initThree(){ var height = elRenderArea.clientHeight; var aspect = width / height; var near = 0.1; - var far = 1000000; + var far = 100*1000; scene = new THREE.Scene(); scenePointCloud = new THREE.Scene(); @@ -1030,16 +1030,21 @@ var EDLRenderer = function(){ var depthMaterial = null; var attributeMaterial = null; + var depthTexture = null; + var rtDepth = null; var rtOcclusion = null; - var rtNormalize = null; + var rtColor = null; var hqCompositionMaterial = null; + var gl = renderer.context; var initEDL = function(){ if(edlMaterial != null){ return; } + var depthTextureExt = gl.getExtension("WEBGL_depth_texture"); + edlMaterial = new Potree.EyeDomeLightingMaterial(); depthMaterial = new Potree.PointCloudMaterial(); attributeMaterial = new Potree.PointCloudMaterial(); @@ -1069,11 +1074,13 @@ var EDLRenderer = function(){ type: THREE.FloatType } ); - rtNormalize = new THREE.WebGLRenderTarget( 1024, 1024, { + rtColor = new THREE.WebGLRenderTarget( 1024, 1024, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter, format: THREE.RGBAFormat, - type: THREE.FloatType + type: THREE.FloatType, + depthBuffer: false, + stencilBuffer: false } ); var vsNormalize = Potree.Shaders["normalize.vs"]; @@ -1082,7 +1089,7 @@ var EDLRenderer = function(){ var uniformsNormalize = { depthMap: { type: "t", value: rtDepth }, occlusionMap: { type: "t", value: rtOcclusion }, - texture: { type: "t", value: rtNormalize } + texture: { type: "t", value: rtColor } }; var hqCompositionMaterial = new THREE.ShaderMaterial({ @@ -1090,18 +1097,36 @@ var EDLRenderer = function(){ vertexShader: vsNormalize, fragmentShader: fsNormalize }); + + + + depthTexture = new THREE.Texture(); + depthTexture.__webglInit = true; + depthTexture.__webglTexture = gl.createTexture();; + gl.bindTexture(gl.TEXTURE_2D, depthTexture.__webglTexture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, 1024, 1024, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_SHORT, null); + + + + }; var resize = function(){ var width = elRenderArea.clientWidth; var height = elRenderArea.clientHeight; var aspect = width / height; + + var needsResize = (rtDepth.width != width || rtDepth.height != height); // disposal will be unnecessary once this fix made it into three.js master: // https://github.com/mrdoob/three.js/pull/6355 - if(rtDepth.width != width || rtDepth.height != height){ + if(needsResize){ rtDepth.dispose(); - rtNormalize.dispose(); + rtColor.dispose(); rtOcclusion.dispose(); } @@ -1110,11 +1135,37 @@ var EDLRenderer = function(){ renderer.setSize(width, height); rtDepth.setSize(width, height); - rtNormalize.setSize(width, height); + rtColor.setSize(width, height); rtOcclusion.setSize(width, height); + + if(needsResize){ + renderer.setRenderTarget(rtColor); + var framebuffer = rtColor.__webglFramebuffer; + gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + + + gl.bindRenderbuffer( gl.RENDERBUFFER, rtColor.__webglRenderbuffer ); + gl.renderbufferStorage( gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, rtColor.width, rtColor.height ); + gl.framebufferRenderbuffer( gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, null ); + + gl.bindTexture(gl.TEXTURE_2D, depthTexture.__webglTexture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); + //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, width, height, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, null); + + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture.__webglTexture, 0); + + renderer.setRenderTarget(null); + } } - this.render = function(renderer){ + this.render = function(){ initEDL(); @@ -1144,26 +1195,26 @@ var EDLRenderer = function(){ vn.push(pointcloud.visibleNodes[i].node); } - {// DEPTH PASS - depthMaterial.size = pointSize; - depthMaterial.pointSizeType = pointSizeType; - depthMaterial.screenWidth = width; - depthMaterial.screenHeight = height; - depthMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; - depthMaterial.fov = camera.fov * (Math.PI / 180); - depthMaterial.spacing = pointcloud.pcoGeometry.spacing; - depthMaterial.near = camera.near; - depthMaterial.far = camera.far; - depthMaterial.heightMin = heightMin; - depthMaterial.heightMax = heightMax; - depthMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; - pointcloud.updateVisibilityTexture(depthMaterial, vn); - - scenePointCloud.overrideMaterial = depthMaterial; - renderer.clearTarget( rtDepth, true, true, true ); - renderer.render(scenePointCloud, camera, rtDepth); - scenePointCloud.overrideMaterial = null; - } + //{// DEPTH PASS + // depthMaterial.size = pointSize; + // depthMaterial.pointSizeType = pointSizeType; + // depthMaterial.screenWidth = width; + // depthMaterial.screenHeight = height; + // depthMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; + // depthMaterial.fov = camera.fov * (Math.PI / 180); + // depthMaterial.spacing = pointcloud.pcoGeometry.spacing; + // depthMaterial.near = camera.near; + // depthMaterial.far = camera.far; + // depthMaterial.heightMin = heightMin; + // depthMaterial.heightMax = heightMax; + // depthMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; + // pointcloud.updateVisibilityTexture(depthMaterial, vn); + // + // scenePointCloud.overrideMaterial = depthMaterial; + // renderer.clearTarget( rtDepth, true, true, true ); + // renderer.render(scenePointCloud, camera, rtDepth); + // scenePointCloud.overrideMaterial = null; + //} {// ATTRIBUTE PASS attributeMaterial.size = pointSize; @@ -1182,8 +1233,8 @@ var EDLRenderer = function(){ pointcloud.updateVisibilityTexture(attributeMaterial, vn); scenePointCloud.overrideMaterial = attributeMaterial; - renderer.clearTarget( rtNormalize, true, true, true ); - renderer.render(scenePointCloud, camera, rtNormalize); + renderer.clearTarget( rtColor, true, true, true ); + renderer.render(scenePointCloud, camera, rtColor); scenePointCloud.overrideMaterial = null; } @@ -1192,9 +1243,17 @@ var EDLRenderer = function(){ edlMaterial.uniforms.screenHeight.value = height; edlMaterial.uniforms.near.value = camera.near; edlMaterial.uniforms.far.value = camera.far; - edlMaterial.uniforms.depthMap.value = rtDepth; - edlMaterial.uniforms.colorMap.value = rtNormalize; + edlMaterial.uniforms.colorMap.value = rtColor; edlMaterial.uniforms.expScale.value = camera.far; + + //edlMaterial.uniforms.depthMap.value = rtDepth; + //edlMaterial.uniforms.depthPassMap.value = rtDepth; + edlMaterial.uniforms.depthMap.value = depthTexture; + + + + + renderer.clearTarget( rtOcclusion, true, true, true ); Potree.utils.screenPass.render(renderer, edlMaterial); diff --git a/examples/viewer.html b/examples/viewer.html index 3488dbe866..c2a0c206ac 100644 --- a/examples/viewer.html +++ b/examples/viewer.html @@ -84,11 +84,11 @@ path: "http://localhost/dev/pointclouds/pix4d/lausanne_converted/cloud.js", path: "http://localhost/dev/pointclouds/3dlasermapping/Whitby_sample_GeoM.las_converted/cloud.js", path: "http://localhost/dev/pointclouds/bruno_friedmann/vol_total/vol_total/cloud.js", - path: "../resources/pointclouds/lion_takanawa/cloud.js", path: "http://localhost/dev/pointclouds/g4d/04_centrum_high_vyber5m_ijk.ply_converted/cloud.js", path: "http://5.9.65.151/mschuetz/potree/users/archpro/heidentor/resources/pointclouds/heidentor.laz/cloud.js", path: "http://5.9.65.151/mschuetz/potree/resources/pointclouds/pix4d/matterhorn/resources/pointclouds/matterhorn.laz/cloud.js", path: "http://ahn2.pointclouds.nl/potree_data/tile_all/cloud.js", + path: "../resources/pointclouds/lion_takanawa/cloud.js", path: "http://5.9.65.151/mschuetz/potree/test/cloud.js", cameraPosition: null, // options: cameraPosition: [10,10,10], cameraTarget: null, // options: cameraTarget: [0,0,0], diff --git a/src/materials/shaders/edl.fs b/src/materials/shaders/edl.fs index 56d899f395..419aae88b0 100644 --- a/src/materials/shaders/edl.fs +++ b/src/materials/shaders/edl.fs @@ -32,6 +32,13 @@ float ztransform(float linearDepth){ return 1.0 - (linearDepth - near) / (far - near); } +float expToLinear(float z){ + z = 2.0 * z - 1.0; + float linear = (2.0 * near * far) / (far + near - z * (far - near)); + + return linear; +} + float obscurance(float z, float dist){ return max(0.0, z) / dist; } @@ -46,9 +53,10 @@ float computeObscurance(float linearDepth, float scale){ vec2 N_abs_pos = vUv + N_rel_pos; vec4 neighbourDepth = texture2D(depthMap, N_abs_pos); + float linearNeighbourDepth = expToLinear(neighbourDepth.r); if(neighbourDepth.w > 0.0){ - float Zn = ztransform(neighbourDepth.r); + float Zn = ztransform(linearNeighbourDepth); float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P ); sum += obscurance( Znp, 0.1 * linearDepth ); @@ -59,12 +67,14 @@ float computeObscurance(float linearDepth, float scale){ } void main(){ - vec4 color = texture2D(colorMap, vUv); - float linearDepth = texture2D(depthMap, vUv).r; + float expDepth = texture2D(depthMap, vUv).r; + float linearDepth = expToLinear(expDepth); + float f = computeObscurance(linearDepth, pixScale); f = exp(-expScale * f); + vec4 color = texture2D(colorMap, vUv); if(color.a == 0.0 && f >= 1.0){ discard; } diff --git a/src/materials/shaders/pointcloud.vs b/src/materials/shaders/pointcloud.vs index 605bf0f883..9d72e8a9f6 100644 --- a/src/materials/shaders/pointcloud.vs +++ b/src/materials/shaders/pointcloud.vs @@ -217,6 +217,8 @@ void main() { vOpacity = opacity; vLinearDepth = -mvPosition.z; vNormal = normalize(normalMatrix * normal); + + //gl_Position.z = ((vLinearDepth - near) / (far - near)) * 2.0 - 1.0; // --------------------- @@ -231,7 +233,7 @@ void main() { vColor = texture2D(gradient, vec2(w,1.0-w)).rgb; #elif defined color_type_depth float linearDepth = -mvPosition.z ; - float expDepth = gl_Position.z / gl_Position.w; + float expDepth = (gl_Position.z / gl_Position.w) * 0.5 + 0.5; vColor = vec3(linearDepth, expDepth, 0.0); #elif defined color_type_intensity float w = (intensity - intensityMin) / (intensityMax - intensityMin); From 65d1eddd531aa721fcbf43cc7716da2d0919335e Mon Sep 17 00:00:00 2001 From: mschuetz Date: Wed, 22 Jul 2015 19:42:46 +0200 Subject: [PATCH 13/35] cleanup and small improvements --- build/js/potree.js | 24 ++++--- build/js/potree.min.js | 12 ++-- build/shaders/shaders.js | 23 ++++-- examples/js/viewer.js | 107 ++++++---------------------- examples/viewer.html | 6 +- src/materials/PointCloudMaterial.js | 17 +++++ src/materials/shaders/edl.fs | 18 +++-- src/materials/shaders/pointcloud.vs | 7 +- 8 files changed, 96 insertions(+), 118 deletions(-) diff --git a/build/js/potree.js b/build/js/potree.js index 36ef497f99..4d956f645d 100644 --- a/build/js/potree.js +++ b/build/js/potree.js @@ -85,7 +85,6 @@ Potree.Shaders["pointcloud.vs"] = [ "", "#define max_clip_boxes 30", "", - "", "attribute float intensity;", "attribute float classification;", "attribute float returnNumber;", @@ -281,8 +280,8 @@ Potree.Shaders["pointcloud.vs"] = [ " vLinearDepth = -mvPosition.z;", " vNormal = normalize(normalMatrix * normal);", " ", - " //gl_Position.z = ((vLinearDepth - near) / (far - near)) * 2.0 - 1.0;", - "", + " float logarithmicZ = (2.0 * log2(gl_Position.w + 1.0) / log2(far + 1.0) - 1.0) * gl_Position.w;", + " gl_Position.z = logarithmicZ;", "", " // ---------------------", " // POINT COLOR", @@ -715,7 +714,6 @@ Potree.Shaders["edl.fs"] = [ "", "#define NEIGHBOUR_COUNT 8", "", - "", "uniform mat4 projectionMatrix;", "", "uniform float screenWidth;", @@ -748,6 +746,14 @@ Potree.Shaders["edl.fs"] = [ " return linear;", "}", "", + "// this actually only returns linaer depth values of LOG_BIAS is 1.0", + "// lower values work out more nicely, though.", + "#define LOG_BIAS 0.01", + "float logToLinear(float z){", + " float c = 10.0;", + " return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;", + "}", + "", "float obscurance(float z, float dist){", " return max(0.0, z) / dist;", "}", @@ -762,7 +768,7 @@ Potree.Shaders["edl.fs"] = [ " vec2 N_abs_pos = vUv + N_rel_pos;", " ", " vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);", - " float linearNeighbourDepth = expToLinear(neighbourDepth.r);", + " float linearNeighbourDepth = logToLinear(neighbourDepth.r);", " ", " if(neighbourDepth.w > 0.0){", " float Zn = ztransform(linearNeighbourDepth);", @@ -777,8 +783,11 @@ Potree.Shaders["edl.fs"] = [ "", "void main(){", "", - " float expDepth = texture2D(depthMap, vUv).r;", - " float linearDepth = expToLinear(expDepth);", + " float logDepth = texture2D(depthMap, vUv).r;", + " float linearDepth = logToLinear(logDepth);", + "", + " //float expDepth = texture2D(depthMap, vUv).r;", + " //float linearDepth = expToLinear(expDepth);", " ", " float f = computeObscurance(linearDepth, pixScale);", " f = exp(-expScale * f);", @@ -2390,7 +2399,6 @@ Potree.EyeDomeLightingMaterial = function(parameters){ lightDir: { type: "v3", value: lightDir }, neighbours: { type: "2fv", value: neighbours }, depthMap: { type: "t", value: null }, - depthPassMap: { type: "t", value: null }, colorMap: { type: "t", value: null } }; diff --git a/build/js/potree.min.js b/build/js/potree.min.js index 7908a1f455..b1d7d8185f 100644 --- a/build/js/potree.min.js +++ b/build/js/potree.min.js @@ -1,6 +1,6 @@ -function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var n=new THREE.Vector3(e.x,e.y,.5);n.unproject(t);for(var r=n.sub(t.position).normalize(),a=new THREE.Ray(t.position,r),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var n=o.getContext("2d");e=new e.constructor(e);for(var r=0;r 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D occlusionMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," float occlusion = texture2D(occlusionMap, vUv).g; "," color = color / color.w;"," "," color = color * (1.0 - occlusion);"," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","varying vec3 vViewRay;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);"," vViewRay = mvPosition.xyz;",""," gl_Position = projectionMatrix * mvPosition;"," "," ","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float zoom;","uniform float pixScale;","uniform float expScale;","","uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","varying vec3 vViewRay;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float expToLinear(float z){"," z = 2.0 * z - 1.0;"," float linear = (2.0 * near * far) / (far + near - z * (far - near));",""," return linear;","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth, float scale){"," vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);"," float linearNeighbourDepth = expToLinear(neighbourDepth.r);"," "," if(neighbourDepth.w > 0.0){"," float Zn = ztransform(linearNeighbourDepth);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.1 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){",""," float expDepth = texture2D(depthMap, vUv).r;"," float linearDepth = expToLinear(expDepth);"," "," float f = computeObscurance(linearDepth, pixScale);"," f = exp(-expScale * f);"," "," vec4 color = texture2D(colorMap, vUv);"," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); -var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var n=o.radius,r=this.fov*Math.PI/180;this.aspect<1&&(r*=this.aspect);var a=Math.abs(n/Math.sin(r/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var n=JSON.parse(o.responseText),r=new Potree.Version(n.version);i.octreeDir=0===n.octreeDir.indexOf("http")?n.octreeDir:e+"/../"+n.octreeDir,i.spacing=n.spacing,i.hierarchyStepSize=n.hierarchyStepSize,i.pointAttributes=n.pointAttributes;var a=new THREE.Vector3(n.boundingBox.lx,n.boundingBox.ly,n.boundingBox.lz),s=new THREE.Vector3(n.boundingBox.ux,n.boundingBox.uy,n.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();n.tightBoundingBox&&(d.min.copy(new THREE.Vector3(n.tightBoundingBox.lx,n.tightBoundingBox.ly,n.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(n.tightBoundingBox.ux,n.tightBoundingBox.uy,n.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):"LAZ"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):(i.loader=new Potree.BinaryLoader(n.version,l,n.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=r.upTo("1.5")?n.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,r.upTo("1.4"))for(var m=1;m=n?i.pointsCount:i.pointsCount/n,s=function(){var e=t.readData(1e6,0,n);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),r+=e.count,Potree.LasLazLoader.progressCB(r/a),e.hasMoreData?s():(i.totalRead=r,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),n=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),n.add(e.pcoGeometry.offset),i.onmessage=function(r){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=r.data.position,d=r.data.color,c=r.data.intensity,u=new Uint8Array(r.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(r.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(r.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,n),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var r={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(r,[r.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,n=e.minSize||1,r=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:n,maxSize:r,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;ir;r++)for(var a=0;i>a;a++){var s,l=r+t*a;s=e[r]?e[r]:e.DEFAULT,n[3*l+0]=255*s.r,n[3*l+1]=255*s.g,n[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var n=new THREE.Vector3(0,0,1).normalize(),r={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},pixScale:{type:"f",value:1},expScale:{type:"f",value:100},zoom:{type:"f",value:3},lightDir:{type:"v3",value:n},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},depthPassMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:r,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",n,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function n(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",n,!1),l.dispatchEvent(x),P=T.NONE)}function r(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,n=o.clone(),r=n.length();r*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*r/i.clientHeight),l.panUp(2*t*r/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.") -},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var n=(new THREE.Matrix4).makeRotationY(g),r=(new THREE.Matrix4).multiplyMatrices(n,this.object.matrix);this.object.quaternion.setFromRotationMatrix(r),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",r,!1),this.domElement.addEventListener("DOMMouseScroll",r,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function n(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",r,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function r(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",r,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(i*i+o*o);R.set(0,n),C.subVectors(R,P);var r=t.clientWidth,a=t.clientHeight,s=Math.sqrt(r*r+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,n=o.clone().sub(h.target),r=n.length();r*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*r/i.clientHeight),h.panUp(2*t*r/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),n=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var r=Math.min(1,this.fadeFactor*e);o+=r*w,n+=r*x,n=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,n)),n=Math.max(p,Math.min(Math.PI-p,n));var a=T.length();a+=(H-1)*a*r,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(r)),T.x=a*Math.sin(n)*Math.sin(o),T.y=a*Math.cos(n),T.z=a*Math.sin(n)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",n,!1),s.domElement.addEventListener("mouseup",r,!1)}}}function n(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function r(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",n,!1),s.domElement.removeEventListener("mouseup",r,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},n=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(n){var r=n.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(n,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*r*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},n=new THREE.Vector3(o.x,o.y,.5);n.unproject(f);var r=n.sub(f.position).normalize(),a=new THREE.Ray(f.position,r),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,r.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var r=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,r),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var n=i.children[o];n.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,n){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=n,this.loadQueue=[];var r=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(r,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var r=n.shift();if(r instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(r.boundingBox,r.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var r=c.loadQueue[0],u=r.geometryNode;if(u.loaded===!0&&void 0!==r.parent){var h=this.replaceProxy(r);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else r.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var n=new THREE.BoxHelper(e);this.add(n),this.boundingBoxNodes.push(n),e.boundingBoxNode=n,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var r=0;r=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=r.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,r,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=n.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var n=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(n);for(var r={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dr;r++)if(void 0!==t.children[r]){var a=t.children[r],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),n=(new THREE.Matrix4).makeTranslation(r,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(n),a}}(r,a,o),d={start:r,end:a,points:s,project:l};i.push(d),o+=r.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,n){if(void 0===n){var r=[];r.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;r.length>0;){var f=r.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),n=e.clone();return n.applyMatrix4(t),n.applyMatrix4(o),n}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,n))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},n=o.pickWindowSize||17,r=this.nodesOnRay(this.visibleNodes,i);if(0===r.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,r),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(n-1)/2,l.y-(n-1)/2,n,n),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),r.length>0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+O];else{for(var X=[],O=0;Oc;c++){var u=r[3*c+0],h=r[3*c+1],p=r[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/n.x),v=parseInt(a*(m.z-o.min.z)/n.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&r.x.5&&r.y0;){{var r=n.shift(),a=r.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,r.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),n[r+0]=c,n[r+1]=h,n[r+2]=u,r+=3}o.addAttribute("position",new THREE.BufferAttribute(n,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),n=0;o>n;n++)e+=i.substr(n*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],n=i.getUint8(0),r=i.getUint32(1,!0);e.numPoints=r,o.push({children:n,numPoints:r,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(n){console.log("fehler beim laden der punktwolke: "+n)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",n=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],r=THREE.ImageUtils.loadTextureCube(n,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:r},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var n=new THREE.LineBasicMaterial({color:o||8947848}),r=new THREE.Geometry,a=0;t>=a;a++)r.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),r.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(r,n,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var n=o.image.data,r=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,n[3*u+0]=255*(h/15+.05+p)*r[0],n[3*u+1]=255*(h/15+.05+p)*r[1],n[3*u+2]=255*(h/15+.05+p)*r[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(n)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(n)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,n=-t.radius,r=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(n>s)return 0;r=Math.min(r,s)}return r>=t.radius?2:1},Potree.utils.screenPass=new function(){this.screenScene=new THREE.Scene,this.screenQuad=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2,0)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new THREE.Camera,this.render=function(e,t,i){this.screenQuad.material=t,void 0===typeof i?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,i)}},Potree.Features=function(){var e,t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),o=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT),n=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT),r=(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT),i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT)),a=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT),s=(i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT),o.precision>0&&r.precision>0),l=n.precision>0&&a.precision>0;return e=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},precision:e}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,n=o+2*this.borderThickness,r=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=n,t.canvas.height=r,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*n,.01*r,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,n,r){e.beginPath(),e.moveTo(t+r,i),e.lineTo(t+o-r,i),e.quadraticCurveTo(t+o,i,t+o,i+r),e.lineTo(t+o,i+n-r),e.quadraticCurveTo(t+o,i+n,t+o-r,i+n),e.lineTo(t+r,i+n),e.quadraticCurveTo(t,i+n,t,i+n-r),e.lineTo(t,i+r),e.quadraticCurveTo(t,i,t+r,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},n=function(e){e.target.material.emissive.setHex(0)},r=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var n=e.spheres.indexOf(i.dragstart.object);e.setPosition(n,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",n),s.addEventListener("drag",r),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){var t=this.points[n];o.add(t)}o.divideScalar(this.points.length);for(var n=0;i>=n;n++){var r=n,a=n+1>i?0:n+1,s=0===n?i:n-1,t=this.points[r],l=this.points[a],d=this.points[s],c=this.spheres[r];c.position.copy(t),c.material.color=e.color;var u=this.edges[r];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>r||this.closed;var h=this.edgeLabels[n],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>r||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[n],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>r||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function n(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var n=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(n,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function r(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&r(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,n="undefined"!=typeof e.closed?e.closed:!1,r=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=n,a.maxMarkers=r,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){{var e=this.points[r],a=this.spheres[r],s=0===r?n:r-1,l=r===n?0:r+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[r],p=this.boxes[s];this.boxes[r],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var r=0;r0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile -},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),n=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(n);var r=function(){n.material.color.setHex(5592405)},a=function(){n.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),n=t.clone().unproject(s.camera),r=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(r,n),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,n).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=n;n++){var r=2*Math.PI*n/o,a=3*Math.cos(r),l=3*Math.sin(r);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,n=0;nt;t++)n.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function n(){}function r(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?r[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ac)&&(n=l,r=c)}}return n?n.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var n=[],r=0;r=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",n,!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var n=0;nH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var n=0;n0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),n=0;n0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+O];else{for(var X=[],O=0;On?-1:n>r?1:0};t.sort(n);for(var r=[],a=0;a0&&(l+=1,d=r.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&r.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?r.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),n=e.byteLength/17,r=new Float32Array(3*n),a=new Float32Array(3*n),s=new Uint32Array(n),l=0;n>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;r[3*l+0]=d,r[3*l+1]=c,r[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry; -f.addAttribute("position",new THREE.BufferAttribute(r,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*n),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=n}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),n=new Potree.PointCloudArena4DGeometry;n.url=e,n.name=o.Name,n.provider=o.Provider,n.numNodes=o.Nodes,n.numPoints=o.Points,n.version=o.Version,n.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(n.spacing=o.Spacing);var r=n.boundingBox.min.clone().multiplyScalar(-1);n.boundingBox.min.add(r),n.boundingBox.max.add(r),n.offset=r;var a=n.boundingBox.center(),s=n.boundingBox.size().length()/2;n.boundingSphere=new THREE.Sphere(a,s),n.loadHierarchy(),t(n)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,n=new DataView(e),r=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=n.getUint8(3*l+0,!0),c=(n.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=r.length,s=Math.max(s,v.level),r.length>0){var g=r[r.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,r.push(v),v.isLeaf)for(var P=!1;!P&&r.length>0;){r.pop();var R=r[r.length-1];P=r.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file +function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var r=new THREE.Vector3(e.x,e.y,.5);r.unproject(t);for(var n=r.sub(t.position).normalize(),a=new THREE.Ray(t.position,n),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var r=o.getContext("2d");e=new e.constructor(e);for(var n=0;n 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D occlusionMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," float occlusion = texture2D(occlusionMap, vUv).g; "," color = color / color.w;"," "," color = color * (1.0 - occlusion);"," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","varying vec3 vViewRay;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);"," vViewRay = mvPosition.xyz;",""," gl_Position = projectionMatrix * mvPosition;"," "," ","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float zoom;","uniform float pixScale;","uniform float expScale;","","uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","varying vec3 vViewRay;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float expToLinear(float z){"," z = 2.0 * z - 1.0;"," float linear = (2.0 * near * far) / (far + near - z * (far - near));",""," return linear;","}","","// this actually only returns linaer depth values of LOG_BIAS is 1.0","// lower values work out more nicely, though.","#define LOG_BIAS 0.01","float logToLinear(float z){"," float c = 10.0;"," return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth, float scale){"," vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);"," float linearNeighbourDepth = logToLinear(neighbourDepth.r);"," "," if(neighbourDepth.w > 0.0){"," float Zn = ztransform(linearNeighbourDepth);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.1 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){",""," float logDepth = texture2D(depthMap, vUv).r;"," float linearDepth = logToLinear(logDepth);",""," //float expDepth = texture2D(depthMap, vUv).r;"," //float linearDepth = expToLinear(expDepth);"," "," float f = computeObscurance(linearDepth, pixScale);"," f = exp(-expScale * f);"," "," vec4 color = texture2D(colorMap, vUv);"," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); +var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var r=o.radius,n=this.fov*Math.PI/180;this.aspect<1&&(n*=this.aspect);var a=Math.abs(r/Math.sin(n/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var r=JSON.parse(o.responseText),n=new Potree.Version(r.version);i.octreeDir=0===r.octreeDir.indexOf("http")?r.octreeDir:e+"/../"+r.octreeDir,i.spacing=r.spacing,i.hierarchyStepSize=r.hierarchyStepSize,i.pointAttributes=r.pointAttributes;var a=new THREE.Vector3(r.boundingBox.lx,r.boundingBox.ly,r.boundingBox.lz),s=new THREE.Vector3(r.boundingBox.ux,r.boundingBox.uy,r.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();r.tightBoundingBox&&(d.min.copy(new THREE.Vector3(r.tightBoundingBox.lx,r.tightBoundingBox.ly,r.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(r.tightBoundingBox.ux,r.tightBoundingBox.uy,r.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):"LAZ"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):(i.loader=new Potree.BinaryLoader(r.version,l,r.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=n.upTo("1.5")?r.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,n.upTo("1.4"))for(var m=1;m=r?i.pointsCount:i.pointsCount/r,s=function(){var e=t.readData(1e6,0,r);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),n+=e.count,Potree.LasLazLoader.progressCB(n/a),e.hasMoreData?s():(i.totalRead=n,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),r=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),r.add(e.pcoGeometry.offset),i.onmessage=function(n){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=n.data.position,d=n.data.color,c=n.data.intensity,u=new Uint8Array(n.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(n.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(n.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,r),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var n={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(n,[n.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,r=e.minSize||1,n=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:r,maxSize:n,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;in;n++)for(var a=0;i>a;a++){var s,l=n+t*a;s=e[n]?e[n]:e.DEFAULT,r[3*l+0]=255*s.r,r[3*l+1]=255*s.g,r[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var r=new THREE.Vector3(0,0,1).normalize(),n={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},pixScale:{type:"f",value:1},expScale:{type:"f",value:100},zoom:{type:"f",value:3},lightDir:{type:"v3",value:r},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:n,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",r,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function r(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",r,!1),l.dispatchEvent(x),P=T.NONE)}function n(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,r=o.clone(),n=r.length();n*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*n/i.clientHeight),l.panUp(2*t*n/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.") +},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var r=(new THREE.Matrix4).makeRotationY(g),n=(new THREE.Matrix4).multiplyMatrices(r,this.object.matrix);this.object.quaternion.setFromRotationMatrix(n),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",n,!1),this.domElement.addEventListener("DOMMouseScroll",n,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function r(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",n,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function n(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",n,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,r=Math.sqrt(i*i+o*o);R.set(0,r),C.subVectors(R,P);var n=t.clientWidth,a=t.clientHeight,s=Math.sqrt(n*n+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,r=o.clone().sub(h.target),n=r.length();n*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*n/i.clientHeight),h.panUp(2*t*n/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),r=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var n=Math.min(1,this.fadeFactor*e);o+=n*w,r+=n*x,r=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,r)),r=Math.max(p,Math.min(Math.PI-p,r));var a=T.length();a+=(H-1)*a*n,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(n)),T.x=a*Math.sin(r)*Math.sin(o),T.y=a*Math.cos(r),T.z=a*Math.sin(r)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",r,!1),s.domElement.addEventListener("mouseup",n,!1)}}}function r(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function n(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",r,!1),s.domElement.removeEventListener("mouseup",n,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},r=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(r){var n=r.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(r,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*n*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},r=new THREE.Vector3(o.x,o.y,.5);r.unproject(f);var n=r.sub(f.position).normalize(),a=new THREE.Ray(f.position,n),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,n.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var n=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,n),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var r=i.children[o];r.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,r){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=r,this.loadQueue=[];var n=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(n,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var n=r.shift();if(n instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(n.boundingBox,n.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var n=c.loadQueue[0],u=n.geometryNode;if(u.loaded===!0&&void 0!==n.parent){var h=this.replaceProxy(n);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else n.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var n=0;n=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=n.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,n,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=r.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var r=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(r);for(var n={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dn;n++)if(void 0!==t.children[n]){var a=t.children[n],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),r=(new THREE.Matrix4).makeTranslation(n,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(r),a}}(n,a,o),d={start:n,end:a,points:s,project:l};i.push(d),o+=n.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,r){if(void 0===r){var n=[];n.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;n.length>0;){var f=n.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),r=e.clone();return r.applyMatrix4(t),r.applyMatrix4(o),r}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,r))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},r=o.pickWindowSize||17,n=this.nodesOnRay(this.visibleNodes,i);if(0===n.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,n),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(r-1)/2,l.y-(r-1)/2,r,r),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),n.length>0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xc;c++){var u=n[3*c+0],h=n[3*c+1],p=n[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/r.x),v=parseInt(a*(m.z-o.min.z)/r.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&n.x.5&&n.y0;){{var n=r.shift(),a=n.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,n.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),r[n+0]=c,r[n+1]=h,r[n+2]=u,n+=3}o.addAttribute("position",new THREE.BufferAttribute(r,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),r=0;o>r;r++)e+=i.substr(r*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],r=i.getUint8(0),n=i.getUint32(1,!0);e.numPoints=n,o.push({children:r,numPoints:n,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(r){console.log("fehler beim laden der punktwolke: "+r)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",r=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],n=THREE.ImageUtils.loadTextureCube(r,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:n},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var r=new THREE.LineBasicMaterial({color:o||8947848}),n=new THREE.Geometry,a=0;t>=a;a++)n.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),n.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(n,r,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var r=o.image.data,n=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,r[3*u+0]=255*(h/15+.05+p)*n[0],r[3*u+1]=255*(h/15+.05+p)*n[1],r[3*u+2]=255*(h/15+.05+p)*n[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(r)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(r)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,r=-t.radius,n=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(r>s)return 0;n=Math.min(n,s)}return n>=t.radius?2:1},Potree.utils.screenPass=new function(){this.screenScene=new THREE.Scene,this.screenQuad=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2,0)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new THREE.Camera,this.render=function(e,t,i){this.screenQuad.material=t,void 0===typeof i?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,i)}},Potree.Features=function(){var e,t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),o=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT),r=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT),n=(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT),i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT)),a=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT),s=(i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT),o.precision>0&&n.precision>0),l=r.precision>0&&a.precision>0;return e=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},precision:e}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,r=o+2*this.borderThickness,n=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=r,t.canvas.height=n,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*r,.01*n,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,r,n){e.beginPath(),e.moveTo(t+n,i),e.lineTo(t+o-n,i),e.quadraticCurveTo(t+o,i,t+o,i+n),e.lineTo(t+o,i+r-n),e.quadraticCurveTo(t+o,i+r,t+o-n,i+r),e.lineTo(t+n,i+r),e.quadraticCurveTo(t,i+r,t,i+r-n),e.lineTo(t,i+n),e.quadraticCurveTo(t,i,t+n,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},r=function(e){e.target.material.emissive.setHex(0)},n=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var r=e.spheres.indexOf(i.dragstart.object);e.setPosition(r,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",r),s.addEventListener("drag",n),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){var t=this.points[r];o.add(t)}o.divideScalar(this.points.length);for(var r=0;i>=r;r++){var n=r,a=r+1>i?0:r+1,s=0===r?i:r-1,t=this.points[n],l=this.points[a],d=this.points[s],c=this.spheres[n];c.position.copy(t),c.material.color=e.color;var u=this.edges[n];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>n||this.closed;var h=this.edgeLabels[r],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>n||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[r],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>n||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function r(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var r=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(r,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function n(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&n(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,r="undefined"!=typeof e.closed?e.closed:!1,n=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=r,a.maxMarkers=n,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){{var e=this.points[n],a=this.spheres[n],s=0===n?r:n-1,l=n===r?0:n+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[n],p=this.boxes[s];this.boxes[n],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var n=0;n0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile +},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),r=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(r);var n=function(){r.material.color.setHex(5592405)},a=function(){r.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),r=t.clone().unproject(s.camera),n=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(n,r),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,r).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=r;r++){var n=2*Math.PI*r/o,a=3*Math.cos(n),l=3*Math.sin(n);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,r=0;rt;t++)r.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function r(){}function n(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?n[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ac)&&(r=l,n=c)}}return r?r.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var r=[],n=0;n=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",r,!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var r=0;rH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var r=0;r0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),r=0;r0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xr?-1:r>n?1:0};t.sort(r);for(var n=[],a=0;a0&&(l+=1,d=n.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&n.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?n.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),r=e.byteLength/17,n=new Float32Array(3*r),a=new Float32Array(3*r),s=new Uint32Array(r),l=0;r>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;n[3*l+0]=d,n[3*l+1]=c,n[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry; +f.addAttribute("position",new THREE.BufferAttribute(n,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*r),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=r}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),r=new Potree.PointCloudArena4DGeometry;r.url=e,r.name=o.Name,r.provider=o.Provider,r.numNodes=o.Nodes,r.numPoints=o.Points,r.version=o.Version,r.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(r.spacing=o.Spacing);var n=r.boundingBox.min.clone().multiplyScalar(-1);r.boundingBox.min.add(n),r.boundingBox.max.add(n),r.offset=n;var a=r.boundingBox.center(),s=r.boundingBox.size().length()/2;r.boundingSphere=new THREE.Sphere(a,s),r.loadHierarchy(),t(r)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,r=new DataView(e),n=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=r.getUint8(3*l+0,!0),c=(r.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=n.length,s=Math.max(s,v.level),n.length>0){var g=n[n.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,n.push(v),v.isLeaf)for(var P=!1;!P&&n.length>0;){n.pop();var R=n[n.length-1];P=n.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file diff --git a/build/shaders/shaders.js b/build/shaders/shaders.js index 5b601de92e..ff96dfb04a 100644 --- a/build/shaders/shaders.js +++ b/build/shaders/shaders.js @@ -23,7 +23,6 @@ Potree.Shaders["pointcloud.vs"] = [ "", "#define max_clip_boxes 30", "", - "", "attribute float intensity;", "attribute float classification;", "attribute float returnNumber;", @@ -219,8 +218,8 @@ Potree.Shaders["pointcloud.vs"] = [ " vLinearDepth = -mvPosition.z;", " vNormal = normalize(normalMatrix * normal);", " ", - " //gl_Position.z = ((vLinearDepth - near) / (far - near)) * 2.0 - 1.0;", - "", + " float logarithmicZ = (2.0 * log2(gl_Position.w + 1.0) / log2(far + 1.0) - 1.0) * gl_Position.w;", + " gl_Position.z = logarithmicZ;", "", " // ---------------------", " // POINT COLOR", @@ -653,7 +652,6 @@ Potree.Shaders["edl.fs"] = [ "", "#define NEIGHBOUR_COUNT 8", "", - "", "uniform mat4 projectionMatrix;", "", "uniform float screenWidth;", @@ -686,6 +684,14 @@ Potree.Shaders["edl.fs"] = [ " return linear;", "}", "", + "// this actually only returns linaer depth values of LOG_BIAS is 1.0", + "// lower values work out more nicely, though.", + "#define LOG_BIAS 0.01", + "float logToLinear(float z){", + " float c = 10.0;", + " return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;", + "}", + "", "float obscurance(float z, float dist){", " return max(0.0, z) / dist;", "}", @@ -700,7 +706,7 @@ Potree.Shaders["edl.fs"] = [ " vec2 N_abs_pos = vUv + N_rel_pos;", " ", " vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);", - " float linearNeighbourDepth = expToLinear(neighbourDepth.r);", + " float linearNeighbourDepth = logToLinear(neighbourDepth.r);", " ", " if(neighbourDepth.w > 0.0){", " float Zn = ztransform(linearNeighbourDepth);", @@ -715,8 +721,11 @@ Potree.Shaders["edl.fs"] = [ "", "void main(){", "", - " float expDepth = texture2D(depthMap, vUv).r;", - " float linearDepth = expToLinear(expDepth);", + " float logDepth = texture2D(depthMap, vUv).r;", + " float linearDepth = logToLinear(logDepth);", + "", + " //float expDepth = texture2D(depthMap, vUv).r;", + " //float linearDepth = expToLinear(expDepth);", " ", " float f = computeObscurance(linearDepth, pixScale);", " f = exp(-expScale * f);", diff --git a/examples/js/viewer.js b/examples/js/viewer.js index 438ebe9324..755698f495 100644 --- a/examples/js/viewer.js +++ b/examples/js/viewer.js @@ -285,7 +285,7 @@ function initThree(){ var height = elRenderArea.clientHeight; var aspect = width / height; var near = 0.1; - var far = 100*1000; + var far = 1000*1000; scene = new THREE.Scene(); scenePointCloud = new THREE.Scene(); @@ -1027,12 +1027,10 @@ var edlRenderer = null; var EDLRenderer = function(){ var edlMaterial = null; - var depthMaterial = null; var attributeMaterial = null; var depthTexture = null; - var rtDepth = null; var rtOcclusion = null; var rtColor = null; var hqCompositionMaterial = null; @@ -1046,26 +1044,13 @@ var EDLRenderer = function(){ var depthTextureExt = gl.getExtension("WEBGL_depth_texture"); edlMaterial = new Potree.EyeDomeLightingMaterial(); - depthMaterial = new Potree.PointCloudMaterial(); attributeMaterial = new Potree.PointCloudMaterial(); - - depthMaterial.pointColorType = Potree.PointColorType.DEPTH; - depthMaterial.pointShape = Potree.PointShape.CIRCLE; - depthMaterial.interpolate = false; - depthMaterial.weighted = false; - depthMaterial.minSize = 2; attributeMaterial.pointShape = Potree.PointShape.CIRCLE; attributeMaterial.interpolate = false; attributeMaterial.weighted = false; attributeMaterial.minSize = 2; - - rtDepth = new THREE.WebGLRenderTarget( 1024, 1024, { - minFilter: THREE.NearestFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - } ); + attributeMaterial.useLogarithmicDepthBuffer = true; rtOcclusion = new THREE.WebGLRenderTarget( 1024, 1024, { minFilter: THREE.LinearFilter, @@ -1086,20 +1071,6 @@ var EDLRenderer = function(){ var vsNormalize = Potree.Shaders["normalize.vs"]; var fsNormalize = Potree.Shaders["normalize.fs"]; - var uniformsNormalize = { - depthMap: { type: "t", value: rtDepth }, - occlusionMap: { type: "t", value: rtOcclusion }, - texture: { type: "t", value: rtColor } - }; - - var hqCompositionMaterial = new THREE.ShaderMaterial({ - uniforms: uniformsNormalize, - vertexShader: vsNormalize, - fragmentShader: fsNormalize - }); - - - depthTexture = new THREE.Texture(); depthTexture.__webglInit = true; depthTexture.__webglTexture = gl.createTexture();; @@ -1109,10 +1080,6 @@ var EDLRenderer = function(){ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, 1024, 1024, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_SHORT, null); - - - - }; var resize = function(){ @@ -1120,12 +1087,11 @@ var EDLRenderer = function(){ var height = elRenderArea.clientHeight; var aspect = width / height; - var needsResize = (rtDepth.width != width || rtDepth.height != height); + var needsResize = (rtColor.width != width || rtColor.height != height); // disposal will be unnecessary once this fix made it into three.js master: // https://github.com/mrdoob/three.js/pull/6355 if(needsResize){ - rtDepth.dispose(); rtColor.dispose(); rtOcclusion.dispose(); } @@ -1134,7 +1100,6 @@ var EDLRenderer = function(){ camera.updateProjectionMatrix(); renderer.setSize(width, height); - rtDepth.setSize(width, height); rtColor.setSize(width, height); rtOcclusion.setSize(width, height); @@ -1153,10 +1118,6 @@ var EDLRenderer = function(){ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); - //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, width, height, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, null); gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture.__webglTexture, 0); @@ -1184,8 +1145,7 @@ var EDLRenderer = function(){ var width = elRenderArea.clientWidth; var height = elRenderArea.clientHeight; - depthMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; - attributeMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; + var octreeSize = pointcloud.pcoGeometry.boundingBox.size().x; pointcloud.visiblePointsTarget = pointCountTarget * 1000 * 1000; var originalMaterial = pointcloud.material; @@ -1195,35 +1155,13 @@ var EDLRenderer = function(){ vn.push(pointcloud.visibleNodes[i].node); } - //{// DEPTH PASS - // depthMaterial.size = pointSize; - // depthMaterial.pointSizeType = pointSizeType; - // depthMaterial.screenWidth = width; - // depthMaterial.screenHeight = height; - // depthMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; - // depthMaterial.fov = camera.fov * (Math.PI / 180); - // depthMaterial.spacing = pointcloud.pcoGeometry.spacing; - // depthMaterial.near = camera.near; - // depthMaterial.far = camera.far; - // depthMaterial.heightMin = heightMin; - // depthMaterial.heightMax = heightMax; - // depthMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; - // pointcloud.updateVisibilityTexture(depthMaterial, vn); - // - // scenePointCloud.overrideMaterial = depthMaterial; - // renderer.clearTarget( rtDepth, true, true, true ); - // renderer.render(scenePointCloud, camera, rtDepth); - // scenePointCloud.overrideMaterial = null; - //} - - {// ATTRIBUTE PASS + {// COLOR & DEPTH PASS attributeMaterial.size = pointSize; attributeMaterial.pointSizeType = pointSizeType; attributeMaterial.screenWidth = width; attributeMaterial.screenHeight = height; attributeMaterial.pointColorType = pointColorType; - attributeMaterial.depthMap = rtDepth; - attributeMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; + attributeMaterial.uniforms.octreeSize.value = octreeSize; attributeMaterial.fov = camera.fov * (Math.PI / 180); attributeMaterial.spacing = pointcloud.pcoGeometry.spacing; attributeMaterial.near = camera.near; @@ -1238,7 +1176,7 @@ var EDLRenderer = function(){ scenePointCloud.overrideMaterial = null; } - { // OCCLUSION PASS + { // EDL OCCLUSION PASS edlMaterial.uniforms.screenWidth.value = width; edlMaterial.uniforms.screenHeight.value = height; edlMaterial.uniforms.near.value = camera.near; @@ -1246,18 +1184,19 @@ var EDLRenderer = function(){ edlMaterial.uniforms.colorMap.value = rtColor; edlMaterial.uniforms.expScale.value = camera.far; - //edlMaterial.uniforms.depthMap.value = rtDepth; - //edlMaterial.uniforms.depthPassMap.value = rtDepth; edlMaterial.uniforms.depthMap.value = depthTexture; - - - - - renderer.clearTarget( rtOcclusion, true, true, true ); Potree.utils.screenPass.render(renderer, edlMaterial); } + + renderer.render(scene, camera); + + profileTool.render(); + volumeTool.render(); + renderer.clearDepth(); + measuringTool.render(); + transformationTool.render(); } @@ -1276,20 +1215,14 @@ function loop() { edlRenderer = new EDLRenderer(); } edlRenderer.render(renderer); + }else if(quality === "Splats"){ + if(!highQualityRenderer){ + highQualityRenderer = new HighQualityRenderer(); + } + highQualityRenderer.render(renderer); }else{ potreeRenderer.render(); } - - - //if(quality === "Splats"){ - // if(!highQualityRenderer){ - // highQualityRenderer = new HighQualityRenderer(); - // } - // highQualityRenderer.render(renderer); - //}else{ - // render(); - //} - }; diff --git a/examples/viewer.html b/examples/viewer.html index c2a0c206ac..c7f0cadb27 100644 --- a/examples/viewer.html +++ b/examples/viewer.html @@ -85,21 +85,21 @@ path: "http://localhost/dev/pointclouds/3dlasermapping/Whitby_sample_GeoM.las_converted/cloud.js", path: "http://localhost/dev/pointclouds/bruno_friedmann/vol_total/vol_total/cloud.js", path: "http://localhost/dev/pointclouds/g4d/04_centrum_high_vyber5m_ijk.ply_converted/cloud.js", - path: "http://5.9.65.151/mschuetz/potree/users/archpro/heidentor/resources/pointclouds/heidentor.laz/cloud.js", path: "http://5.9.65.151/mschuetz/potree/resources/pointclouds/pix4d/matterhorn/resources/pointclouds/matterhorn.laz/cloud.js", path: "http://ahn2.pointclouds.nl/potree_data/tile_all/cloud.js", + path: "http://5.9.65.151/mschuetz/potree/users/archpro/heidentor/resources/pointclouds/heidentor.laz/cloud.js", path: "../resources/pointclouds/lion_takanawa/cloud.js", path: "http://5.9.65.151/mschuetz/potree/test/cloud.js", cameraPosition: null, // options: cameraPosition: [10,10,10], cameraTarget: null, // options: cameraTarget: [0,0,0], sizeType: "Adaptive", // options: "Fixed", "Attenuated", "Adaptive" - quality: "Splats", // options: "Squares", "Circles", "Interpolation", "Splats" + quality: "Interpolation", // options: "Squares", "Circles", "Interpolation", "Splats" fov: 75, // field of view in degree material: "RGB", // options: "RGB", "Height", "Intensity", "Classification" pointLimit: 1, // max number of points in millions navigation: "Orbit", // options: "Earth", "Orbit", "Flight" pointSize: 1, - useEDL: true + useEDL: true, }; diff --git a/src/materials/PointCloudMaterial.js b/src/materials/PointCloudMaterial.js index 291d1a782c..237e34dec1 100644 --- a/src/materials/PointCloudMaterial.js +++ b/src/materials/PointCloudMaterial.js @@ -113,6 +113,7 @@ Potree.PointCloudMaterial = function(parameters){ this.classificationTexture = Potree.PointCloudMaterial.generateClassificationTexture(this._classification); this.lights = true; this._treeType = treeType; + this._useLogarithmicDepthBuffer = false; @@ -266,6 +267,10 @@ Potree.PointCloudMaterial.prototype.getDefines = function(){ defines += "#define use_interpolation\n"; } + if(this._useLogarithmicDepthBuffer){ + defines += "#define use_logarithmic_depth_buffer\n"; + } + if(this._pointColorType === Potree.PointColorType.RGB){ defines += "#define color_type_rgb\n"; }else if(this._pointColorType === Potree.PointColorType.COLOR){ @@ -538,6 +543,18 @@ Object.defineProperty(Potree.PointCloudMaterial.prototype, "interpolate", { } }); +Object.defineProperty(Potree.PointCloudMaterial.prototype, "useLogarithmicDepthBuffer", { + get: function(){ + return this._useLogarithmicDepthBuffer; + }, + set: function(value){ + if(this._useLogarithmicDepthBuffer !== value){ + this._useLogarithmicDepthBuffer = value; + this.updateShaderSource(); + } + } +}); + Object.defineProperty(Potree.PointCloudMaterial.prototype, "color", { get: function(){ return this.uniforms.uColor.value; diff --git a/src/materials/shaders/edl.fs b/src/materials/shaders/edl.fs index 419aae88b0..97ddc96b81 100644 --- a/src/materials/shaders/edl.fs +++ b/src/materials/shaders/edl.fs @@ -6,7 +6,6 @@ #define NEIGHBOUR_COUNT 8 - uniform mat4 projectionMatrix; uniform float screenWidth; @@ -39,6 +38,14 @@ float expToLinear(float z){ return linear; } +// this actually only returns linaer depth values of LOG_BIAS is 1.0 +// lower values work out more nicely, though. +#define LOG_BIAS 0.01 +float logToLinear(float z){ + float c = 10.0; + return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS; +} + float obscurance(float z, float dist){ return max(0.0, z) / dist; } @@ -53,7 +60,7 @@ float computeObscurance(float linearDepth, float scale){ vec2 N_abs_pos = vUv + N_rel_pos; vec4 neighbourDepth = texture2D(depthMap, N_abs_pos); - float linearNeighbourDepth = expToLinear(neighbourDepth.r); + float linearNeighbourDepth = logToLinear(neighbourDepth.r); if(neighbourDepth.w > 0.0){ float Zn = ztransform(linearNeighbourDepth); @@ -68,8 +75,11 @@ float computeObscurance(float linearDepth, float scale){ void main(){ - float expDepth = texture2D(depthMap, vUv).r; - float linearDepth = expToLinear(expDepth); + float logDepth = texture2D(depthMap, vUv).r; + float linearDepth = logToLinear(logDepth); + + //float expDepth = texture2D(depthMap, vUv).r; + //float linearDepth = expToLinear(expDepth); float f = computeObscurance(linearDepth, pixScale); f = exp(-expScale * f); diff --git a/src/materials/shaders/pointcloud.vs b/src/materials/shaders/pointcloud.vs index 9d72e8a9f6..8932e7dae0 100644 --- a/src/materials/shaders/pointcloud.vs +++ b/src/materials/shaders/pointcloud.vs @@ -22,7 +22,6 @@ #define max_clip_boxes 30 - attribute float intensity; attribute float classification; attribute float returnNumber; @@ -218,8 +217,10 @@ void main() { vLinearDepth = -mvPosition.z; vNormal = normalize(normalMatrix * normal); - //gl_Position.z = ((vLinearDepth - near) / (far - near)) * 2.0 - 1.0; - + #if defined(use_logarithmic_depth_buffer) + float logarithmicZ = (2.0 * log2(gl_Position.w + 1.0) / log2(far + 1.0) - 1.0) * gl_Position.w; + gl_Position.z = logarithmicZ; + #endif // --------------------- // POINT COLOR From b5ede5ba33230e01609dd248515cf24aac4f1057 Mon Sep 17 00:00:00 2001 From: mschuetz Date: Fri, 24 Jul 2015 10:40:21 +0200 Subject: [PATCH 14/35] write depth to float texture alpha channel instead of using depth texture. float texture is more widely supported --- build/js/potree.js | 88 ++++++++++++++++++----- build/js/potree.min.js | 12 ++-- build/shaders/shaders.js | 46 +++++++----- examples/js/viewer.js | 89 ++++++++++-------------- examples/viewer.html | 55 +++++++++++++-- src/materials/EyeDomeLightingMaterial.js | 8 +++ src/materials/PointCloudMaterial.js | 17 +++++ src/materials/shaders/edl.fs | 21 ++---- src/materials/shaders/pointcloud.fs | 14 +++- src/materials/shaders/pointcloud.vs | 11 ++- 10 files changed, 242 insertions(+), 119 deletions(-) diff --git a/build/js/potree.js b/build/js/potree.js index 4d956f645d..debc0b9d65 100644 --- a/build/js/potree.js +++ b/build/js/potree.js @@ -125,6 +125,7 @@ Potree.Shaders["pointcloud.vs"] = [ "varying float vOpacity;", "varying vec3 vColor;", "varying float vLinearDepth;", + "varying float vLogDepth;", "varying vec3 vViewPosition;", "varying float vRadius;", "varying vec3 vWorldPosition;", @@ -280,8 +281,14 @@ Potree.Shaders["pointcloud.vs"] = [ " vLinearDepth = -mvPosition.z;", " vNormal = normalize(normalMatrix * normal);", " ", - " float logarithmicZ = (2.0 * log2(gl_Position.w + 1.0) / log2(far + 1.0) - 1.0) * gl_Position.w;", - " gl_Position.z = logarithmicZ;", + " #if defined(use_edl)", + " vLogDepth = log2(gl_Position.w + 1.0) / log2(far + 1.0);", + " #endif", + " ", + " //#if defined(use_logarithmic_depth_buffer)", + " // float logarithmicZ = (2.0 * log2(gl_Position.w + 1.0) / log2(far + 1.0) - 1.0) * gl_Position.w;", + " // gl_Position.z = logarithmicZ;", + " //#endif", "", " // ---------------------", " // POINT COLOR", @@ -465,6 +472,7 @@ Potree.Shaders["pointcloud.fs"] = [ "varying vec3 vColor;", "varying float vOpacity;", "varying float vLinearDepth;", + "varying float vLogDepth;", "varying vec3 vViewPosition;", "varying float vRadius;", "varying vec3 vWorldPosition;", @@ -475,6 +483,7 @@ Potree.Shaders["pointcloud.fs"] = [ "void main() {", "", " vec3 color = vColor;", + " float depth = gl_FragCoord.z;", "", " #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)", " float u = 2.0 * gl_PointCoord.x - 1.0;", @@ -490,8 +499,8 @@ Potree.Shaders["pointcloud.fs"] = [ " ", " #if defined weighted_splats", " vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);", - " float depth = texture2D(depthMap, uv).r;", - " if(vLinearDepth > depth + vRadius){", + " float sDepth = texture2D(depthMap, uv).r;", + " if(vLinearDepth > sDepth + vRadius){", " discard;", " }", " #endif", @@ -504,7 +513,8 @@ Potree.Shaders["pointcloud.fs"] = [ " pos = projectionMatrix * pos;", " pos = pos / pos.w;", " float expDepth = pos.z;", - " gl_FragDepthEXT = (pos.z + 1.0) / 2.0;", + " depth = (pos.z + 1.0) / 2.0;", + " gl_FragDepthEXT = depth;", " ", " #if defined(color_type_depth)", " color.r = linearDepth;", @@ -647,6 +657,11 @@ Potree.Shaders["pointcloud.fs"] = [ "", " #endif", " ", + " ", + " #if defined(use_edl)", + " gl_FragColor.a = vLogDepth;", + " #endif", + " ", "}", "", "", @@ -726,7 +741,7 @@ Potree.Shaders["edl.fs"] = [ "uniform float pixScale;", "uniform float expScale;", "", - "uniform sampler2D depthMap;", + "//uniform sampler2D depthMap;", "uniform sampler2D colorMap;", "", "varying vec2 vUv;", @@ -746,11 +761,10 @@ Potree.Shaders["edl.fs"] = [ " return linear;", "}", "", - "// this actually only returns linaer depth values of LOG_BIAS is 1.0", + "// this actually only returns linear depth values if LOG_BIAS is 1.0", "// lower values work out more nicely, though.", "#define LOG_BIAS 0.01", "float logToLinear(float z){", - " float c = 10.0;", " return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;", "}", "", @@ -767,14 +781,13 @@ Potree.Shaders["edl.fs"] = [ " vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];", " vec2 N_abs_pos = vUv + N_rel_pos;", " ", - " vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);", - " float linearNeighbourDepth = logToLinear(neighbourDepth.r);", + " float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a);", " ", - " if(neighbourDepth.w > 0.0){", - " float Zn = ztransform(linearNeighbourDepth);", + " if(neighbourDepth != 0.0){", + " float Zn = ztransform(neighbourDepth);", " float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );", " ", - " sum += obscurance( Znp, 0.1 * linearDepth );", + " sum += obscurance( Znp, 0.05 * linearDepth );", " }", " }", " ", @@ -782,12 +795,7 @@ Potree.Shaders["edl.fs"] = [ "}", "", "void main(){", - "", - " float logDepth = texture2D(depthMap, vUv).r;", - " float linearDepth = logToLinear(logDepth);", - "", - " //float expDepth = texture2D(depthMap, vUv).r;", - " //float linearDepth = expToLinear(expDepth);", + " float linearDepth = logToLinear(texture2D(colorMap, vUv).a);", " ", " float f = computeObscurance(linearDepth, pixScale);", " f = exp(-expScale * f);", @@ -1749,6 +1757,8 @@ Potree.PointCloudMaterial = function(parameters){ this.classificationTexture = Potree.PointCloudMaterial.generateClassificationTexture(this._classification); this.lights = true; this._treeType = treeType; + this._useLogarithmicDepthBuffer = false; + this._useEDL = false; @@ -1902,6 +1912,14 @@ Potree.PointCloudMaterial.prototype.getDefines = function(){ defines += "#define use_interpolation\n"; } + if(this._useLogarithmicDepthBuffer){ + defines += "#define use_logarithmic_depth_buffer\n"; + } + + if(this._useEDL){ + defines += "#define use_edl\n"; + } + if(this._pointColorType === Potree.PointColorType.RGB){ defines += "#define color_type_rgb\n"; }else if(this._pointColorType === Potree.PointColorType.COLOR){ @@ -2174,6 +2192,30 @@ Object.defineProperty(Potree.PointCloudMaterial.prototype, "interpolate", { } }); +Object.defineProperty(Potree.PointCloudMaterial.prototype, "useEDL", { + get: function(){ + return this._useEDL; + }, + set: function(value){ + if(this._useEDL !== value){ + this._useEDL = value; + this.updateShaderSource(); + } + } +}); + +Object.defineProperty(Potree.PointCloudMaterial.prototype, "useLogarithmicDepthBuffer", { + get: function(){ + return this._useLogarithmicDepthBuffer; + }, + set: function(value){ + if(this._useLogarithmicDepthBuffer !== value){ + this._useLogarithmicDepthBuffer = value; + this.updateShaderSource(); + } + } +}); + Object.defineProperty(Potree.PointCloudMaterial.prototype, "color", { get: function(){ return this.uniforms.uColor.value; @@ -2386,6 +2428,14 @@ Potree.EyeDomeLightingMaterial = function(parameters){ neighbours[2*c+1] = Math.sin(2 * c * Math.PI / neighbourCount); } + //var neighbourCount = 32; + //var neighbours = new Float32Array(neighbourCount*2); + //for(var c = 0; c < neighbourCount; c++){ + // var r = (c / neighbourCount) * 4 + 0.1; + // neighbours[2*c+0] = Math.cos(2 * c * Math.PI / neighbourCount) * r; + // neighbours[2*c+1] = Math.sin(2 * c * Math.PI / neighbourCount) * r; + //} + var lightDir = new THREE.Vector3(0.0, 0.0, 1.0).normalize(); var uniforms = { diff --git a/build/js/potree.min.js b/build/js/potree.min.js index b1d7d8185f..8dbaa78225 100644 --- a/build/js/potree.min.js +++ b/build/js/potree.min.js @@ -1,6 +1,6 @@ -function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var r=new THREE.Vector3(e.x,e.y,.5);r.unproject(t);for(var n=r.sub(t.position).normalize(),a=new THREE.Ray(t.position,n),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var r=o.getContext("2d");e=new e.constructor(e);for(var n=0;n 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D occlusionMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," float occlusion = texture2D(occlusionMap, vUv).g; "," color = color / color.w;"," "," color = color * (1.0 - occlusion);"," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","varying vec3 vViewRay;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);"," vViewRay = mvPosition.xyz;",""," gl_Position = projectionMatrix * mvPosition;"," "," ","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float zoom;","uniform float pixScale;","uniform float expScale;","","uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","varying vec3 vViewRay;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float expToLinear(float z){"," z = 2.0 * z - 1.0;"," float linear = (2.0 * near * far) / (far + near - z * (far - near));",""," return linear;","}","","// this actually only returns linaer depth values of LOG_BIAS is 1.0","// lower values work out more nicely, though.","#define LOG_BIAS 0.01","float logToLinear(float z){"," float c = 10.0;"," return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth, float scale){"," vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);"," float linearNeighbourDepth = logToLinear(neighbourDepth.r);"," "," if(neighbourDepth.w > 0.0){"," float Zn = ztransform(linearNeighbourDepth);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.1 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){",""," float logDepth = texture2D(depthMap, vUv).r;"," float linearDepth = logToLinear(logDepth);",""," //float expDepth = texture2D(depthMap, vUv).r;"," //float linearDepth = expToLinear(expDepth);"," "," float f = computeObscurance(linearDepth, pixScale);"," f = exp(-expScale * f);"," "," vec4 color = texture2D(colorMap, vUv);"," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); -var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var r=o.radius,n=this.fov*Math.PI/180;this.aspect<1&&(n*=this.aspect);var a=Math.abs(r/Math.sin(n/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var r=JSON.parse(o.responseText),n=new Potree.Version(r.version);i.octreeDir=0===r.octreeDir.indexOf("http")?r.octreeDir:e+"/../"+r.octreeDir,i.spacing=r.spacing,i.hierarchyStepSize=r.hierarchyStepSize,i.pointAttributes=r.pointAttributes;var a=new THREE.Vector3(r.boundingBox.lx,r.boundingBox.ly,r.boundingBox.lz),s=new THREE.Vector3(r.boundingBox.ux,r.boundingBox.uy,r.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();r.tightBoundingBox&&(d.min.copy(new THREE.Vector3(r.tightBoundingBox.lx,r.tightBoundingBox.ly,r.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(r.tightBoundingBox.ux,r.tightBoundingBox.uy,r.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):"LAZ"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):(i.loader=new Potree.BinaryLoader(r.version,l,r.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=n.upTo("1.5")?r.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,n.upTo("1.4"))for(var m=1;m=r?i.pointsCount:i.pointsCount/r,s=function(){var e=t.readData(1e6,0,r);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),n+=e.count,Potree.LasLazLoader.progressCB(n/a),e.hasMoreData?s():(i.totalRead=n,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),r=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),r.add(e.pcoGeometry.offset),i.onmessage=function(n){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=n.data.position,d=n.data.color,c=n.data.intensity,u=new Uint8Array(n.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(n.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(n.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,r),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var n={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(n,[n.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,r=e.minSize||1,n=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:r,maxSize:n,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;in;n++)for(var a=0;i>a;a++){var s,l=n+t*a;s=e[n]?e[n]:e.DEFAULT,r[3*l+0]=255*s.r,r[3*l+1]=255*s.g,r[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var r=new THREE.Vector3(0,0,1).normalize(),n={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},pixScale:{type:"f",value:1},expScale:{type:"f",value:100},zoom:{type:"f",value:3},lightDir:{type:"v3",value:r},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:n,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",r,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function r(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",r,!1),l.dispatchEvent(x),P=T.NONE)}function n(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,r=o.clone(),n=r.length();n*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*n/i.clientHeight),l.panUp(2*t*n/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.") -},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var r=(new THREE.Matrix4).makeRotationY(g),n=(new THREE.Matrix4).multiplyMatrices(r,this.object.matrix);this.object.quaternion.setFromRotationMatrix(n),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",n,!1),this.domElement.addEventListener("DOMMouseScroll",n,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function r(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",n,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function n(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",n,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,r=Math.sqrt(i*i+o*o);R.set(0,r),C.subVectors(R,P);var n=t.clientWidth,a=t.clientHeight,s=Math.sqrt(n*n+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,r=o.clone().sub(h.target),n=r.length();n*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*n/i.clientHeight),h.panUp(2*t*n/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),r=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var n=Math.min(1,this.fadeFactor*e);o+=n*w,r+=n*x,r=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,r)),r=Math.max(p,Math.min(Math.PI-p,r));var a=T.length();a+=(H-1)*a*n,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(n)),T.x=a*Math.sin(r)*Math.sin(o),T.y=a*Math.cos(r),T.z=a*Math.sin(r)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",r,!1),s.domElement.addEventListener("mouseup",n,!1)}}}function r(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function n(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",r,!1),s.domElement.removeEventListener("mouseup",n,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},r=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(r){var n=r.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(r,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*n*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},r=new THREE.Vector3(o.x,o.y,.5);r.unproject(f);var n=r.sub(f.position).normalize(),a=new THREE.Ray(f.position,n),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,n.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var n=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,n),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var r=i.children[o];r.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,r){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=r,this.loadQueue=[];var n=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(n,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var n=r.shift();if(n instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(n.boundingBox,n.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var n=c.loadQueue[0],u=n.geometryNode;if(u.loaded===!0&&void 0!==n.parent){var h=this.replaceProxy(n);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else n.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var n=0;n=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=n.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,n,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=r.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var r=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(r);for(var n={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dn;n++)if(void 0!==t.children[n]){var a=t.children[n],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),r=(new THREE.Matrix4).makeTranslation(n,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(r),a}}(n,a,o),d={start:n,end:a,points:s,project:l};i.push(d),o+=n.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,r){if(void 0===r){var n=[];n.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;n.length>0;){var f=n.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),r=e.clone();return r.applyMatrix4(t),r.applyMatrix4(o),r}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,r))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},r=o.pickWindowSize||17,n=this.nodesOnRay(this.visibleNodes,i);if(0===n.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,n),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(r-1)/2,l.y-(r-1)/2,r,r),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),n.length>0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xc;c++){var u=n[3*c+0],h=n[3*c+1],p=n[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/r.x),v=parseInt(a*(m.z-o.min.z)/r.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&n.x.5&&n.y0;){{var n=r.shift(),a=n.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,n.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),r[n+0]=c,r[n+1]=h,r[n+2]=u,n+=3}o.addAttribute("position",new THREE.BufferAttribute(r,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),r=0;o>r;r++)e+=i.substr(r*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],r=i.getUint8(0),n=i.getUint32(1,!0);e.numPoints=n,o.push({children:r,numPoints:n,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(r){console.log("fehler beim laden der punktwolke: "+r)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",r=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],n=THREE.ImageUtils.loadTextureCube(r,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:n},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var r=new THREE.LineBasicMaterial({color:o||8947848}),n=new THREE.Geometry,a=0;t>=a;a++)n.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),n.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(n,r,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var r=o.image.data,n=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,r[3*u+0]=255*(h/15+.05+p)*n[0],r[3*u+1]=255*(h/15+.05+p)*n[1],r[3*u+2]=255*(h/15+.05+p)*n[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(r)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(r)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,r=-t.radius,n=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(r>s)return 0;n=Math.min(n,s)}return n>=t.radius?2:1},Potree.utils.screenPass=new function(){this.screenScene=new THREE.Scene,this.screenQuad=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2,0)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new THREE.Camera,this.render=function(e,t,i){this.screenQuad.material=t,void 0===typeof i?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,i)}},Potree.Features=function(){var e,t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),o=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT),r=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT),n=(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT),i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT)),a=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT),s=(i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT),o.precision>0&&n.precision>0),l=r.precision>0&&a.precision>0;return e=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},precision:e}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,r=o+2*this.borderThickness,n=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=r,t.canvas.height=n,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*r,.01*n,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,r,n){e.beginPath(),e.moveTo(t+n,i),e.lineTo(t+o-n,i),e.quadraticCurveTo(t+o,i,t+o,i+n),e.lineTo(t+o,i+r-n),e.quadraticCurveTo(t+o,i+r,t+o-n,i+r),e.lineTo(t+n,i+r),e.quadraticCurveTo(t,i+r,t,i+r-n),e.lineTo(t,i+n),e.quadraticCurveTo(t,i,t+n,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},r=function(e){e.target.material.emissive.setHex(0)},n=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var r=e.spheres.indexOf(i.dragstart.object);e.setPosition(r,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",r),s.addEventListener("drag",n),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){var t=this.points[r];o.add(t)}o.divideScalar(this.points.length);for(var r=0;i>=r;r++){var n=r,a=r+1>i?0:r+1,s=0===r?i:r-1,t=this.points[n],l=this.points[a],d=this.points[s],c=this.spheres[n];c.position.copy(t),c.material.color=e.color;var u=this.edges[n];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>n||this.closed;var h=this.edgeLabels[r],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>n||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[r],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>n||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function r(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var r=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(r,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function n(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&n(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,r="undefined"!=typeof e.closed?e.closed:!1,n=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=r,a.maxMarkers=n,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){{var e=this.points[n],a=this.spheres[n],s=0===n?r:n-1,l=n===r?0:n+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[n],p=this.boxes[s];this.boxes[n],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var n=0;n0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile -},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),r=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(r);var n=function(){r.material.color.setHex(5592405)},a=function(){r.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),r=t.clone().unproject(s.camera),n=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(n,r),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,r).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=r;r++){var n=2*Math.PI*r/o,a=3*Math.cos(n),l=3*Math.sin(n);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,r=0;rt;t++)r.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function r(){}function n(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?n[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ac)&&(r=l,n=c)}}return r?r.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var r=[],n=0;n=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",r,!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var r=0;rH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var r=0;r0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),r=0;r0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xr?-1:r>n?1:0};t.sort(r);for(var n=[],a=0;a0&&(l+=1,d=n.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&n.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?n.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),r=e.byteLength/17,n=new Float32Array(3*r),a=new Float32Array(3*r),s=new Uint32Array(r),l=0;r>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;n[3*l+0]=d,n[3*l+1]=c,n[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry; -f.addAttribute("position",new THREE.BufferAttribute(n,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*r),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=r}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),r=new Potree.PointCloudArena4DGeometry;r.url=e,r.name=o.Name,r.provider=o.Provider,r.numNodes=o.Nodes,r.numPoints=o.Points,r.version=o.Version,r.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(r.spacing=o.Spacing);var n=r.boundingBox.min.clone().multiplyScalar(-1);r.boundingBox.min.add(n),r.boundingBox.max.add(n),r.offset=n;var a=r.boundingBox.center(),s=r.boundingBox.size().length()/2;r.boundingSphere=new THREE.Sphere(a,s),r.loadHierarchy(),t(r)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,r=new DataView(e),n=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=r.getUint8(3*l+0,!0),c=(r.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=n.length,s=Math.max(s,v.level),n.length>0){var g=n[n.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,n.push(v),v.isLeaf)for(var P=!1;!P&&n.length>0;){n.pop();var R=n[n.length-1];P=n.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file +function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var r=new THREE.Vector3(e.x,e.y,.5);r.unproject(t);for(var n=r.sub(t.position).normalize(),a=new THREE.Ray(t.position,n),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var r=o.getContext("2d");e=new e.constructor(e);for(var n=0;n 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying float vLogDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;"," float depth = gl_FragCoord.z;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float sDepth = texture2D(depthMap, uv).r;"," if(vLinearDepth > sDepth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," depth = (pos.z + 1.0) / 2.0;"," gl_FragDepthEXT = depth;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," "," "," #if defined(use_edl)"," gl_FragColor.a = vLogDepth;"," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D occlusionMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," float occlusion = texture2D(occlusionMap, vUv).g; "," color = color / color.w;"," "," color = color * (1.0 - occlusion);"," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","varying vec3 vViewRay;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);"," vViewRay = mvPosition.xyz;",""," gl_Position = projectionMatrix * mvPosition;"," "," ","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float zoom;","uniform float pixScale;","uniform float expScale;","","//uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","varying vec3 vViewRay;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float expToLinear(float z){"," z = 2.0 * z - 1.0;"," float linear = (2.0 * near * far) / (far + near - z * (far - near));",""," return linear;","}","","// this actually only returns linear depth values if LOG_BIAS is 1.0","// lower values work out more nicely, though.","#define LOG_BIAS 0.01","float logToLinear(float z){"," return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth, float scale){"," vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a);"," "," if(neighbourDepth != 0.0){"," float Zn = ztransform(neighbourDepth);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.05 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){"," float linearDepth = logToLinear(texture2D(colorMap, vUv).a);"," "," float f = computeObscurance(linearDepth, pixScale);"," f = exp(-expScale * f);"," "," vec4 color = texture2D(colorMap, vUv);"," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); +var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var r=o.radius,n=this.fov*Math.PI/180;this.aspect<1&&(n*=this.aspect);var a=Math.abs(r/Math.sin(n/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var r=JSON.parse(o.responseText),n=new Potree.Version(r.version);i.octreeDir=0===r.octreeDir.indexOf("http")?r.octreeDir:e+"/../"+r.octreeDir,i.spacing=r.spacing,i.hierarchyStepSize=r.hierarchyStepSize,i.pointAttributes=r.pointAttributes;var a=new THREE.Vector3(r.boundingBox.lx,r.boundingBox.ly,r.boundingBox.lz),s=new THREE.Vector3(r.boundingBox.ux,r.boundingBox.uy,r.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();r.tightBoundingBox&&(d.min.copy(new THREE.Vector3(r.tightBoundingBox.lx,r.tightBoundingBox.ly,r.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(r.tightBoundingBox.ux,r.tightBoundingBox.uy,r.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):"LAZ"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):(i.loader=new Potree.BinaryLoader(r.version,l,r.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=n.upTo("1.5")?r.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,n.upTo("1.4"))for(var m=1;m=r?i.pointsCount:i.pointsCount/r,s=function(){var e=t.readData(1e6,0,r);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),n+=e.count,Potree.LasLazLoader.progressCB(n/a),e.hasMoreData?s():(i.totalRead=n,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),r=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),r.add(e.pcoGeometry.offset),i.onmessage=function(n){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=n.data.position,d=n.data.color,c=n.data.intensity,u=new Uint8Array(n.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(n.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(n.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,r),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var n={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(n,[n.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,r=e.minSize||1,n=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a,this._useLogarithmicDepthBuffer=!1,this._useEDL=!1;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:r,maxSize:n,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._useLogarithmicDepthBuffer&&(e+="#define use_logarithmic_depth_buffer\n"),this._useEDL&&(e+="#define use_edl\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;in;n++)for(var a=0;i>a;a++){var s,l=n+t*a;s=e[n]?e[n]:e.DEFAULT,r[3*l+0]=255*s.r,r[3*l+1]=255*s.g,r[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var r=new THREE.Vector3(0,0,1).normalize(),n={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},pixScale:{type:"f",value:1},expScale:{type:"f",value:100},zoom:{type:"f",value:3},lightDir:{type:"v3",value:r},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:n,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",r,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function r(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",r,!1),l.dispatchEvent(x),P=T.NONE)}function n(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f) +},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,r=o.clone(),n=r.length();n*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*n/i.clientHeight),l.panUp(2*t*n/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var r=(new THREE.Matrix4).makeRotationY(g),n=(new THREE.Matrix4).multiplyMatrices(r,this.object.matrix);this.object.quaternion.setFromRotationMatrix(n),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",n,!1),this.domElement.addEventListener("DOMMouseScroll",n,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function r(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",n,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function n(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",n,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,r=Math.sqrt(i*i+o*o);R.set(0,r),C.subVectors(R,P);var n=t.clientWidth,a=t.clientHeight,s=Math.sqrt(n*n+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,r=o.clone().sub(h.target),n=r.length();n*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*n/i.clientHeight),h.panUp(2*t*n/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),r=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var n=Math.min(1,this.fadeFactor*e);o+=n*w,r+=n*x,r=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,r)),r=Math.max(p,Math.min(Math.PI-p,r));var a=T.length();a+=(H-1)*a*n,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(n)),T.x=a*Math.sin(r)*Math.sin(o),T.y=a*Math.cos(r),T.z=a*Math.sin(r)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",r,!1),s.domElement.addEventListener("mouseup",n,!1)}}}function r(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function n(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",r,!1),s.domElement.removeEventListener("mouseup",n,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},r=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(r){var n=r.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(r,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*n*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},r=new THREE.Vector3(o.x,o.y,.5);r.unproject(f);var n=r.sub(f.position).normalize(),a=new THREE.Ray(f.position,n),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,n.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var n=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,n),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var r=i.children[o];r.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,r){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=r,this.loadQueue=[];var n=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(n,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var n=r.shift();if(n instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(n.boundingBox,n.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var n=c.loadQueue[0],u=n.geometryNode;if(u.loaded===!0&&void 0!==n.parent){var h=this.replaceProxy(n);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else n.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var n=0;n=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=n.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,n,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=r.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var r=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(r);for(var n={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dn;n++)if(void 0!==t.children[n]){var a=t.children[n],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),r=(new THREE.Matrix4).makeTranslation(n,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(r),a}}(n,a,o),d={start:n,end:a,points:s,project:l};i.push(d),o+=n.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,r){if(void 0===r){var n=[];n.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;n.length>0;){var f=n.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),r=e.clone();return r.applyMatrix4(t),r.applyMatrix4(o),r}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,r))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},r=o.pickWindowSize||17,n=this.nodesOnRay(this.visibleNodes,i);if(0===n.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,n),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(r-1)/2,l.y-(r-1)/2,r,r),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),n.length>0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],D=L[3*P.pIndex+2],N=new THREE.Vector3(G,W,D);N.applyMatrix4(this.matrixWorld),A[B]=N}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xc;c++){var u=n[3*c+0],h=n[3*c+1],p=n[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/r.x),v=parseInt(a*(m.z-o.min.z)/r.z); +f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&n.x.5&&n.y0;){{var n=r.shift(),a=n.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,n.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),r[n+0]=c,r[n+1]=h,r[n+2]=u,n+=3}o.addAttribute("position",new THREE.BufferAttribute(r,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),r=0;o>r;r++)e+=i.substr(r*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],r=i.getUint8(0),n=i.getUint32(1,!0);e.numPoints=n,o.push({children:r,numPoints:n,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(r){console.log("fehler beim laden der punktwolke: "+r)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",r=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],n=THREE.ImageUtils.loadTextureCube(r,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:n},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var r=new THREE.LineBasicMaterial({color:o||8947848}),n=new THREE.Geometry,a=0;t>=a;a++)n.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),n.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(n,r,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var r=o.image.data,n=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,r[3*u+0]=255*(h/15+.05+p)*n[0],r[3*u+1]=255*(h/15+.05+p)*n[1],r[3*u+2]=255*(h/15+.05+p)*n[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(r)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(r)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,r=-t.radius,n=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(r>s)return 0;n=Math.min(n,s)}return n>=t.radius?2:1},Potree.utils.screenPass=new function(){this.screenScene=new THREE.Scene,this.screenQuad=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2,0)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new THREE.Camera,this.render=function(e,t,i){this.screenQuad.material=t,void 0===typeof i?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,i)}},Potree.Features=function(){var e,t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),o=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT),r=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT),n=(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT),i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT)),a=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT),s=(i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT),o.precision>0&&n.precision>0),l=r.precision>0&&a.precision>0;return e=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},precision:e}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,r=o+2*this.borderThickness,n=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=r,t.canvas.height=n,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*r,.01*n,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,r,n){e.beginPath(),e.moveTo(t+n,i),e.lineTo(t+o-n,i),e.quadraticCurveTo(t+o,i,t+o,i+n),e.lineTo(t+o,i+r-n),e.quadraticCurveTo(t+o,i+r,t+o-n,i+r),e.lineTo(t+n,i+r),e.quadraticCurveTo(t,i+r,t,i+r-n),e.lineTo(t,i+n),e.quadraticCurveTo(t,i,t+n,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},r=function(e){e.target.material.emissive.setHex(0)},n=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var r=e.spheres.indexOf(i.dragstart.object);e.setPosition(r,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",r),s.addEventListener("drag",n),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){var t=this.points[r];o.add(t)}o.divideScalar(this.points.length);for(var r=0;i>=r;r++){var n=r,a=r+1>i?0:r+1,s=0===r?i:r-1,t=this.points[n],l=this.points[a],d=this.points[s],c=this.spheres[n];c.position.copy(t),c.material.color=e.color;var u=this.edges[n];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>n||this.closed;var h=this.edgeLabels[r],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>n||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[r],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>n||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function r(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var r=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(r,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function n(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&n(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,r="undefined"!=typeof e.closed?e.closed:!1,n=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=r,a.maxMarkers=n,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){{var e=this.points[n],a=this.spheres[n],s=0===n?r:n-1,l=n===r?0:n+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[n],p=this.boxes[s];this.boxes[n],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var n=0;n0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[]; +c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),r=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(r);var n=function(){r.material.color.setHex(5592405)},a=function(){r.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),r=t.clone().unproject(s.camera),n=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(n,r),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,r).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=r;r++){var n=2*Math.PI*r/o,a=3*Math.cos(n),l=3*Math.sin(n);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,r=0;rt;t++)r.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function r(){}function n(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?n[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ac)&&(r=l,n=c)}}return r?r.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var r=[],n=0;n=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",r,!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var r=0;rH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var r=0;r0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),r=0;r0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],D=L[3*P.pIndex+2],N=new THREE.Vector3(G,W,D);N.applyMatrix4(this.matrixWorld),A[B]=N}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xr?-1:r>n?1:0};t.sort(r);for(var n=[],a=0;a0&&(l+=1,d=n.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&n.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?n.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest; +t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),r=e.byteLength/17,n=new Float32Array(3*r),a=new Float32Array(3*r),s=new Uint32Array(r),l=0;r>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;n[3*l+0]=d,n[3*l+1]=c,n[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(n,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*r),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=r}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),r=new Potree.PointCloudArena4DGeometry;r.url=e,r.name=o.Name,r.provider=o.Provider,r.numNodes=o.Nodes,r.numPoints=o.Points,r.version=o.Version,r.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(r.spacing=o.Spacing);var n=r.boundingBox.min.clone().multiplyScalar(-1);r.boundingBox.min.add(n),r.boundingBox.max.add(n),r.offset=n;var a=r.boundingBox.center(),s=r.boundingBox.size().length()/2;r.boundingSphere=new THREE.Sphere(a,s),r.loadHierarchy(),t(r)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,r=new DataView(e),n=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=r.getUint8(3*l+0,!0),c=(r.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=n.length,s=Math.max(s,v.level),n.length>0){var g=n[n.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,n.push(v),v.isLeaf)for(var P=!1;!P&&n.length>0;){n.pop();var R=n[n.length-1];P=n.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file diff --git a/build/shaders/shaders.js b/build/shaders/shaders.js index ff96dfb04a..02927b0f64 100644 --- a/build/shaders/shaders.js +++ b/build/shaders/shaders.js @@ -63,6 +63,7 @@ Potree.Shaders["pointcloud.vs"] = [ "varying float vOpacity;", "varying vec3 vColor;", "varying float vLinearDepth;", + "varying float vLogDepth;", "varying vec3 vViewPosition;", "varying float vRadius;", "varying vec3 vWorldPosition;", @@ -218,8 +219,14 @@ Potree.Shaders["pointcloud.vs"] = [ " vLinearDepth = -mvPosition.z;", " vNormal = normalize(normalMatrix * normal);", " ", - " float logarithmicZ = (2.0 * log2(gl_Position.w + 1.0) / log2(far + 1.0) - 1.0) * gl_Position.w;", - " gl_Position.z = logarithmicZ;", + " #if defined(use_edl)", + " vLogDepth = log2(gl_Position.w + 1.0) / log2(far + 1.0);", + " #endif", + " ", + " //#if defined(use_logarithmic_depth_buffer)", + " // float logarithmicZ = (2.0 * log2(gl_Position.w + 1.0) / log2(far + 1.0) - 1.0) * gl_Position.w;", + " // gl_Position.z = logarithmicZ;", + " //#endif", "", " // ---------------------", " // POINT COLOR", @@ -403,6 +410,7 @@ Potree.Shaders["pointcloud.fs"] = [ "varying vec3 vColor;", "varying float vOpacity;", "varying float vLinearDepth;", + "varying float vLogDepth;", "varying vec3 vViewPosition;", "varying float vRadius;", "varying vec3 vWorldPosition;", @@ -413,6 +421,7 @@ Potree.Shaders["pointcloud.fs"] = [ "void main() {", "", " vec3 color = vColor;", + " float depth = gl_FragCoord.z;", "", " #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)", " float u = 2.0 * gl_PointCoord.x - 1.0;", @@ -428,8 +437,8 @@ Potree.Shaders["pointcloud.fs"] = [ " ", " #if defined weighted_splats", " vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);", - " float depth = texture2D(depthMap, uv).r;", - " if(vLinearDepth > depth + vRadius){", + " float sDepth = texture2D(depthMap, uv).r;", + " if(vLinearDepth > sDepth + vRadius){", " discard;", " }", " #endif", @@ -442,7 +451,8 @@ Potree.Shaders["pointcloud.fs"] = [ " pos = projectionMatrix * pos;", " pos = pos / pos.w;", " float expDepth = pos.z;", - " gl_FragDepthEXT = (pos.z + 1.0) / 2.0;", + " depth = (pos.z + 1.0) / 2.0;", + " gl_FragDepthEXT = depth;", " ", " #if defined(color_type_depth)", " color.r = linearDepth;", @@ -585,6 +595,11 @@ Potree.Shaders["pointcloud.fs"] = [ "", " #endif", " ", + " ", + " #if defined(use_edl)", + " gl_FragColor.a = vLogDepth;", + " #endif", + " ", "}", "", "", @@ -664,7 +679,7 @@ Potree.Shaders["edl.fs"] = [ "uniform float pixScale;", "uniform float expScale;", "", - "uniform sampler2D depthMap;", + "//uniform sampler2D depthMap;", "uniform sampler2D colorMap;", "", "varying vec2 vUv;", @@ -684,11 +699,10 @@ Potree.Shaders["edl.fs"] = [ " return linear;", "}", "", - "// this actually only returns linaer depth values of LOG_BIAS is 1.0", + "// this actually only returns linear depth values if LOG_BIAS is 1.0", "// lower values work out more nicely, though.", "#define LOG_BIAS 0.01", "float logToLinear(float z){", - " float c = 10.0;", " return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;", "}", "", @@ -705,14 +719,13 @@ Potree.Shaders["edl.fs"] = [ " vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];", " vec2 N_abs_pos = vUv + N_rel_pos;", " ", - " vec4 neighbourDepth = texture2D(depthMap, N_abs_pos);", - " float linearNeighbourDepth = logToLinear(neighbourDepth.r);", + " float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a);", " ", - " if(neighbourDepth.w > 0.0){", - " float Zn = ztransform(linearNeighbourDepth);", + " if(neighbourDepth != 0.0){", + " float Zn = ztransform(neighbourDepth);", " float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );", " ", - " sum += obscurance( Znp, 0.1 * linearDepth );", + " sum += obscurance( Znp, 0.05 * linearDepth );", " }", " }", " ", @@ -720,12 +733,7 @@ Potree.Shaders["edl.fs"] = [ "}", "", "void main(){", - "", - " float logDepth = texture2D(depthMap, vUv).r;", - " float linearDepth = logToLinear(logDepth);", - "", - " //float expDepth = texture2D(depthMap, vUv).r;", - " //float linearDepth = expToLinear(expDepth);", + " float linearDepth = logToLinear(texture2D(colorMap, vUv).a);", " ", " float f = computeObscurance(linearDepth, pixScale);", " f = exp(-expScale * f);", diff --git a/examples/js/viewer.js b/examples/js/viewer.js index 755698f495..a02a34dad1 100644 --- a/examples/js/viewer.js +++ b/examples/js/viewer.js @@ -1029,11 +1029,9 @@ var EDLRenderer = function(){ var edlMaterial = null; var attributeMaterial = null; - var depthTexture = null; + //var depthTexture = null; - var rtOcclusion = null; var rtColor = null; - var hqCompositionMaterial = null; var gl = renderer.context; var initEDL = function(){ @@ -1041,7 +1039,7 @@ var EDLRenderer = function(){ return; } - var depthTextureExt = gl.getExtension("WEBGL_depth_texture"); + //var depthTextureExt = gl.getExtension("WEBGL_depth_texture"); edlMaterial = new Potree.EyeDomeLightingMaterial(); attributeMaterial = new Potree.PointCloudMaterial(); @@ -1050,36 +1048,28 @@ var EDLRenderer = function(){ attributeMaterial.interpolate = false; attributeMaterial.weighted = false; attributeMaterial.minSize = 2; - attributeMaterial.useLogarithmicDepthBuffer = true; - - rtOcclusion = new THREE.WebGLRenderTarget( 1024, 1024, { - minFilter: THREE.LinearFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - } ); + attributeMaterial.useLogarithmicDepthBuffer = false; + attributeMaterial.useEDL = true; rtColor = new THREE.WebGLRenderTarget( 1024, 1024, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter, format: THREE.RGBAFormat, type: THREE.FloatType, - depthBuffer: false, - stencilBuffer: false + //type: THREE.UnsignedByteType, + //depthBuffer: false, + //stencilBuffer: false } ); - var vsNormalize = Potree.Shaders["normalize.vs"]; - var fsNormalize = Potree.Shaders["normalize.fs"]; - - depthTexture = new THREE.Texture(); - depthTexture.__webglInit = true; - depthTexture.__webglTexture = gl.createTexture();; - gl.bindTexture(gl.TEXTURE_2D, depthTexture.__webglTexture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, 1024, 1024, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_SHORT, null); + //depthTexture = new THREE.Texture(); + //depthTexture.__webglInit = true; + //depthTexture.__webglTexture = gl.createTexture();; + //gl.bindTexture(gl.TEXTURE_2D, depthTexture.__webglTexture); + //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + //gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, 1024, 1024, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_SHORT, null); }; var resize = function(){ @@ -1093,7 +1083,6 @@ var EDLRenderer = function(){ // https://github.com/mrdoob/three.js/pull/6355 if(needsResize){ rtColor.dispose(); - rtOcclusion.dispose(); } camera.aspect = aspect; @@ -1101,29 +1090,28 @@ var EDLRenderer = function(){ renderer.setSize(width, height); rtColor.setSize(width, height); - rtOcclusion.setSize(width, height); - if(needsResize){ - renderer.setRenderTarget(rtColor); - var framebuffer = rtColor.__webglFramebuffer; - gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); - - - gl.bindRenderbuffer( gl.RENDERBUFFER, rtColor.__webglRenderbuffer ); - gl.renderbufferStorage( gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, rtColor.width, rtColor.height ); - gl.framebufferRenderbuffer( gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, null ); - - gl.bindTexture(gl.TEXTURE_2D, depthTexture.__webglTexture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, width, height, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, null); - - gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture.__webglTexture, 0); - - renderer.setRenderTarget(null); - } + //if(needsResize){ + // renderer.setRenderTarget(rtColor); + // var framebuffer = rtColor.__webglFramebuffer; + // gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + // + // + // gl.bindRenderbuffer( gl.RENDERBUFFER, rtColor.__webglRenderbuffer ); + // gl.renderbufferStorage( gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, rtColor.width, rtColor.height ); + // gl.framebufferRenderbuffer( gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, null ); + // + // gl.bindTexture(gl.TEXTURE_2D, depthTexture.__webglTexture); + // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + // gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, width, height, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, null); + // + // gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture.__webglTexture, 0); + // + // renderer.setRenderTarget(null); + //} } this.render = function(){ @@ -1184,9 +1172,8 @@ var EDLRenderer = function(){ edlMaterial.uniforms.colorMap.value = rtColor; edlMaterial.uniforms.expScale.value = camera.far; - edlMaterial.uniforms.depthMap.value = depthTexture; + //edlMaterial.uniforms.depthMap.value = depthTexture; - renderer.clearTarget( rtOcclusion, true, true, true ); Potree.utils.screenPass.render(renderer, edlMaterial); } diff --git a/examples/viewer.html b/examples/viewer.html index c7f0cadb27..c3c48eea00 100644 --- a/examples/viewer.html +++ b/examples/viewer.html @@ -75,6 +75,24 @@
diff --git a/examples/js/viewer.js b/examples/js/viewer.js index a02a34dad1..8572456ed5 100644 --- a/examples/js/viewer.js +++ b/examples/js/viewer.js @@ -136,7 +136,7 @@ function initGUI(){ "freeze": freeze }; - var pPoints = gui.add(params, 'points(m)', 0, 2); + var pPoints = gui.add(params, 'points(m)', 0, 4); pPoints.onChange(function(value){ pointCountTarget = value ; }); @@ -218,10 +218,12 @@ function initGUI(){ quality = value; }); - var pEDL = fAppearance.add(params, 'EDL'); - pEDL.onChange(function(value){ - sceneProperties.useEDL = value; - }); + if(Potree.Features.SHADER_EDL.isSupported()){ + var pEDL = fAppearance.add(params, 'EDL'); + pEDL.onChange(function(value){ + sceneProperties.useEDL = value; + }); + } var pSykbox = fAppearance.add(params, 'skybox'); pSykbox.onChange(function(value){ @@ -365,6 +367,18 @@ function initThree(){ useOrbitControls(); } + if(sceneProperties.cameraPosition != null){ + var cp = new THREE.Vector3(sceneProperties.cameraPosition[0], sceneProperties.cameraPosition[1], sceneProperties.cameraPosition[2]); + camera.position.copy(cp); + } + if(sceneProperties.cameraTarget != null){ + var cp = new THREE.Vector3(sceneProperties.cameraPosition[0], sceneProperties.cameraPosition[1], sceneProperties.cameraPosition[2]); + var ct = new THREE.Vector3(sceneProperties.cameraTarget[0], sceneProperties.cameraTarget[1], sceneProperties.cameraTarget[2]); + + camera.lookAt(new THREE.Vector3().addVectors(cp, ct)); + orbitControls.target.copy(ct); + } + if(sceneProperties.cameraPosition){ camera.position.set(sceneProperties.cameraPosition[0], sceneProperties.cameraPosition[1], sceneProperties.cameraPosition[2]); } @@ -766,138 +780,84 @@ var potreeRenderer = new PotreeRenderer(); var highQualityRenderer = null; var HighQualityRenderer = function(){ - var edlMaterial = new Potree.EyeDomeLightingMaterial(); - var depthMaterial = new Potree.PointCloudMaterial(); - var attributeMaterial = new Potree.PointCloudMaterial(); - var blurMaterial = new Potree.BlurMaterial(); + var depthMaterial = null; + var attributeMaterial = null; + var normalizationMaterial = null; + var rtDepth; + var rtNormalize; - depthMaterial.pointColorType = Potree.PointColorType.DEPTH; - depthMaterial.pointShape = Potree.PointShape.CIRCLE; - depthMaterial.interpolate = false; - depthMaterial.weighted = false; - depthMaterial.minSize = 2; - - attributeMaterial.pointShape = Potree.PointShape.CIRCLE; - attributeMaterial.interpolate = false; - attributeMaterial.weighted = true; - attributeMaterial.minSize = 2; - - var rtDepth = new THREE.WebGLRenderTarget( 1024, 1024, { - minFilter: THREE.NearestFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - } ); - - var rtOcclusion = new THREE.WebGLRenderTarget( 1024, 1024, { - minFilter: THREE.LinearFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - } ); - - var rtNormalize = new THREE.WebGLRenderTarget( 1024, 1024, { - minFilter: THREE.LinearFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - } ); - - var rtBlur = new THREE.WebGLRenderTarget( 1024, 1024, { - minFilter: THREE.LinearFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - } ); - - var vsNormalize = Potree.Shaders["normalize.vs"]; - var fsNormalize = Potree.Shaders["normalize.fs"]; - - var uniformsNormalize = { - depthMap: { type: "t", value: rtDepth }, - occlusionMap: { type: "t", value: rtOcclusion }, - texture: { type: "t", value: rtNormalize } - }; + var initHQSPlats = function(){ + if(depthMaterial != null){ + return; + } - var hqCompositionMaterial = new THREE.ShaderMaterial({ - uniforms: uniformsNormalize, - vertexShader: vsNormalize, - fragmentShader: fsNormalize - }); - + depthMaterial = new Potree.PointCloudMaterial(); + attributeMaterial = new Potree.PointCloudMaterial(); + + depthMaterial.pointColorType = Potree.PointColorType.DEPTH; + depthMaterial.pointShape = Potree.PointShape.CIRCLE; + depthMaterial.interpolate = false; + depthMaterial.weighted = false; + depthMaterial.minSize = 2; + + attributeMaterial.pointShape = Potree.PointShape.CIRCLE; + attributeMaterial.interpolate = false; + attributeMaterial.weighted = true; + attributeMaterial.minSize = 2; - var screenPass = new function(){ + rtDepth = new THREE.WebGLRenderTarget( 1024, 1024, { + minFilter: THREE.NearestFilter, + magFilter: THREE.NearestFilter, + format: THREE.RGBAFormat, + type: THREE.FloatType + } ); - this.screenScene = new THREE.Scene(); - this.screenQuad = new THREE.Mesh(new THREE.PlaneBufferGeometry(2, 2, 0)); - this.screenQuad.material.depthTest = true; - this.screenQuad.material.depthWrite = true; - this.screenQuad.material.transparent = true; - this.screenScene.add(this.screenQuad); - this.camera = new THREE.Camera(); + rtNormalize = new THREE.WebGLRenderTarget( 1024, 1024, { + minFilter: THREE.LinearFilter, + magFilter: THREE.NearestFilter, + format: THREE.RGBAFormat, + type: THREE.FloatType + } ); - this.render = function(renderer, material, target){ - this.screenQuad.material = material; - - if(typeof target === undefined){ - renderer.render(this.screenScene, this.camera); - }else{ - renderer.render(this.screenScene, this.camera, target); - } - } - }(); - - // render with splats - this.render = function(renderer){ - // resize - if(rtDepth.width != elRenderArea.clientWidth || rtDepth.height != elRenderArea.clientHeight){ - rtDepth.dispose(); - rtNormalize.dispose(); - rtOcclusion.dispose(); - rtBlur.dispose(); - - rtDepth = new THREE.WebGLRenderTarget( width, height, { - minFilter: THREE.NearestFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - } ); - - rtOcclusion = new THREE.WebGLRenderTarget( width, height, { - minFilter: THREE.LinearFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - } ); - - rtBlur = new THREE.WebGLRenderTarget( width, height, { - minFilter: THREE.LinearFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - } ); - - rtNormalize = new THREE.WebGLRenderTarget( width, height, { - minFilter: THREE.LinearFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - } ); + var uniformsNormalize = { + depthMap: { type: "t", value: rtDepth }, + texture: { type: "t", value: rtNormalize } + }; + + normalizationMaterial = new THREE.ShaderMaterial({ + uniforms: uniformsNormalize, + vertexShader: Potree.Shaders["normalize.vs"], + fragmentShader: Potree.Shaders["normalize.fs"] + }); + } + + var resize = function(width, height){ + if(rtDepth.width == width && rtDepth.height == height){ + return; } - var width = elRenderArea.clientWidth; - var height = elRenderArea.clientHeight; - var aspect = width / height; + rtDepth.dispose(); + rtNormalize.dispose(); - camera.aspect = aspect; + camera.aspect = width / height; camera.updateProjectionMatrix(); renderer.setSize(width, height); rtDepth.setSize(width, height); - rtBlur.setSize(width, height); rtNormalize.setSize(width, height); - rtOcclusion.setSize(width, height); + }; + + // render with splats + this.render = function(renderer){ + + var width = elRenderArea.clientWidth; + var height = elRenderArea.clientHeight; + + initHQSPlats(); + + resize(width, height); + renderer.clear(); if(showSkybox){ @@ -916,105 +876,70 @@ var HighQualityRenderer = function(){ pointcloud.visiblePointsTarget = pointCountTarget * 1000 * 1000; var originalMaterial = pointcloud.material; + var vn = []; + for(var i = 0; i < pointcloud.visibleNodes.length; i++){ + vn.push(pointcloud.visibleNodes[i].node); + } {// DEPTH PASS - var material = depthMaterial; - - material.size = pointSize; - material.pointSizeType = pointSizeType; - material.screenWidth = width; - material.screenHeight = height; - material.uniforms.visibleNodes.value = pointcloud.material.visibleNodesTexture; - material.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; - material.fov = camera.fov * (Math.PI / 180); - material.spacing = pointcloud.pcoGeometry.spacing; - material.near = camera.near; - material.far = camera.far; - material.heightMin = heightMin; - material.heightMax = heightMax; - - pointcloud.material = material; - - - //for(var i = 0; i < pointcloud.visibleNodes.length; i++){ - // var node = pointcloud.visibleNodes[i].node; - // node.material = material; - //} - pointcloud.update(camera, renderer); + depthMaterial.size = pointSize; + depthMaterial.pointSizeType = pointSizeType; + depthMaterial.screenWidth = width; + depthMaterial.screenHeight = height; + depthMaterial.uniforms.visibleNodes.value = pointcloud.material.visibleNodesTexture; + depthMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; + depthMaterial.fov = camera.fov * (Math.PI / 180); + depthMaterial.spacing = pointcloud.pcoGeometry.spacing; + depthMaterial.near = camera.near; + depthMaterial.far = camera.far; + depthMaterial.heightMin = heightMin; + depthMaterial.heightMax = heightMax; + pointcloud.updateVisibilityTexture(depthMaterial, vn); + scenePointCloud.overrideMaterial = depthMaterial; renderer.clearTarget( rtDepth, true, true, true ); renderer.render(scenePointCloud, camera, rtDepth); - - //for(var i = 0; i < pointcloud.visibleNodes.length; i++){ - // var node = pointcloud.visibleNodes[i].node; - // node.material = originalMaterial; - //} + scenePointCloud.overrideMaterial = null; } {// ATTRIBUTE PASS - var material = attributeMaterial; - - material.size = pointSize; - material.pointSizeType = pointSizeType; - material.screenWidth = width; - material.screenHeight = height; - material.pointColorType = pointColorType; - material.depthMap = rtDepth; - material.uniforms.visibleNodes.value = pointcloud.material.visibleNodesTexture; - material.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; - material.fov = camera.fov * (Math.PI / 180); - material.spacing = pointcloud.pcoGeometry.spacing; - material.near = camera.near; - material.far = camera.far; - material.heightMin = heightMin; - material.heightMax = heightMax; - - pointcloud.material = material; - - //scenePointCloud.overrideMaterial = material; + attributeMaterial.size = pointSize; + attributeMaterial.pointSizeType = pointSizeType; + attributeMaterial.screenWidth = width; + attributeMaterial.screenHeight = height; + attributeMaterial.pointColorType = pointColorType; + attributeMaterial.depthMap = rtDepth; + attributeMaterial.uniforms.visibleNodes.value = pointcloud.material.visibleNodesTexture; + attributeMaterial.uniforms.octreeSize.value = pointcloud.pcoGeometry.boundingBox.size().x; + attributeMaterial.fov = camera.fov * (Math.PI / 180); + attributeMaterial.spacing = pointcloud.pcoGeometry.spacing; + attributeMaterial.near = camera.near; + attributeMaterial.far = camera.far; + attributeMaterial.heightMin = heightMin; + attributeMaterial.heightMax = heightMax; + attributeMaterial.intensityMin = pointcloud.material.intensityMin; + attributeMaterial.intensityMax = pointcloud.material.intensityMax; + pointcloud.updateVisibilityTexture(depthMaterial, vn); - pointcloud.update(camera, renderer); + scenePointCloud.overrideMaterial = attributeMaterial; renderer.clearTarget( rtNormalize, true, true, true ); renderer.render(scenePointCloud, camera, rtNormalize); - - //scenePointCloud.overrideMaterial = null; - } - - { // OCCLUSION PASS - edlMaterial.uniforms.near.value = camera.near; - edlMaterial.uniforms.far.value = camera.far; - edlMaterial.uniforms.depthMap.value = rtDepth; - - renderer.clearTarget( rtOcclusion, true, true, true ); - screenPass.render(renderer, edlMaterial, rtOcclusion); + scenePointCloud.overrideMaterial = null; } - { // BLUR PASS - blurMaterial.uniforms.near.value = camera.near; - blurMaterial.uniforms.far.value = camera.far; - blurMaterial.uniforms.screenWidth.value = width; - blurMaterial.uniforms.screenHeight.value = height; - blurMaterial.uniforms.map.value = rtOcclusion; - - renderer.clearTarget( rtBlur, true, true, true ); - screenPass.render(renderer, blurMaterial, rtBlur); + {// NORMALIZATION PASS + normalizationMaterial.uniforms.depthMap.value = rtDepth; + normalizationMaterial.uniforms.texture.value = rtNormalize; + Potree.utils.screenPass.render(renderer, normalizationMaterial); } - {// NORMALIZATION & COMPOSITION PASS - hqCompositionMaterial.uniforms.depthMap.value = rtDepth; - hqCompositionMaterial.uniforms.occlusionMap.value = rtBlur; - hqCompositionMaterial.uniforms.texture.value = rtNormalize; - screenPass.render(renderer, hqCompositionMaterial); - } - // - //pointcloud.material = originalMaterial; - // - //volumeTool.render(); - //renderer.clearDepth(); - //profileTool.render(); - //measuringTool.render(); - //transformationTool.render(); - + pointcloud.material = originalMaterial; + + volumeTool.render(); + renderer.clearDepth(); + profileTool.render(); + measuringTool.render(); + transformationTool.render(); } @@ -1156,6 +1081,10 @@ var EDLRenderer = function(){ attributeMaterial.far = camera.far; attributeMaterial.heightMin = heightMin; attributeMaterial.heightMax = heightMax; + attributeMaterial.intensityMin = pointcloud.material.intensityMin; + attributeMaterial.intensityMax = pointcloud.material.intensityMax; + attributeMaterial.setClipBoxes(pointcloud.material.clipBoxes); + attributeMaterial.clipMode = pointcloud.material.clipMode; pointcloud.updateVisibilityTexture(attributeMaterial, vn); scenePointCloud.overrideMaterial = attributeMaterial; diff --git a/examples/lion.html b/examples/lion.html index 03711c3a79..a54c42b44a 100644 --- a/examples/lion.html +++ b/examples/lion.html @@ -21,6 +21,7 @@ + @@ -73,17 +74,19 @@
diff --git a/examples/lion_las.html b/examples/lion_las.html index 1f4ff6798d..48543f4cff 100644 --- a/examples/lion_las.html +++ b/examples/lion_las.html @@ -21,6 +21,7 @@ + @@ -73,17 +74,19 @@
diff --git a/examples/lion_laz.html b/examples/lion_laz.html index 603f51e2fa..e3c9b0fb6f 100644 --- a/examples/lion_laz.html +++ b/examples/lion_laz.html @@ -21,6 +21,7 @@ + @@ -73,17 +74,19 @@
diff --git a/examples/viewer.html b/examples/viewer.html index c3c48eea00..7f2043b274 100644 --- a/examples/viewer.html +++ b/examples/viewer.html @@ -41,10 +41,10 @@ - +
@@ -75,78 +75,19 @@
diff --git a/src/Features.js b/src/Features.js index 3a3f9823ca..d6c85f293d 100644 --- a/src/Features.js +++ b/src/Features.js @@ -71,6 +71,20 @@ Potree.Features = function(){ } + }, + SHADER_EDL: { + isSupported: function(){ + + var supported = true; + + supported = supported && gl.getExtension("EXT_frag_depth"); + supported = supported && gl.getExtension("OES_texture_float"); + supported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8; + + return supported; + + } + }, precision: precision } diff --git a/src/materials/shaders/normalize.fs b/src/materials/shaders/normalize.fs index b1dd7e54ca..dacfc7460e 100644 --- a/src/materials/shaders/normalize.fs +++ b/src/materials/shaders/normalize.fs @@ -2,18 +2,20 @@ #extension GL_EXT_frag_depth : enable uniform sampler2D depthMap; -uniform sampler2D occlusionMap; uniform sampler2D texture; varying vec2 vUv; void main() { - vec4 color = texture2D(texture, vUv); float depth = texture2D(depthMap, vUv).g; - float occlusion = texture2D(occlusionMap, vUv).g; + + if(depth <= 0.0){ + discard; + } + + vec4 color = texture2D(texture, vUv); color = color / color.w; - color = color * (1.0 - occlusion); gl_FragColor = vec4(color.xyz, 1.0); gl_FragDepthEXT = depth; diff --git a/src/materials/shaders/pointcloud.vs b/src/materials/shaders/pointcloud.vs index e545666c7f..bd6776c39e 100644 --- a/src/materials/shaders/pointcloud.vs +++ b/src/materials/shaders/pointcloud.vs @@ -259,6 +259,11 @@ void main() { float c = mod(classification, 16.0); vec2 uv = vec2(c / 255.0, 0.5); vColor = texture2D(classificationLUT, uv).rgb; + + // TODO only for testing - removing points with class 7 + if(classification == 7.0){ + gl_Position = vec4(100.0, 100.0, 100.0, 0.0); + } #elif defined color_type_return_number float w = (returnNumber - 1.0) / 4.0 + 0.1; vColor = texture2D(gradient, vec2(w, 1.0 - w)).rgb; From a5b36aeeaac69fe735dd7f9c6281ff20bc9141e3 Mon Sep 17 00:00:00 2001 From: gribbet Date: Wed, 29 Jul 2015 14:59:39 -0700 Subject: [PATCH 16/35] Handle missing WebGL support better --- build/js/potree.js | 41 ++++++++++++++++++++++------------------- build/js/potree.min.js | 14 ++++++++------ src/Features.js | 42 ++++++++++++++++++++++-------------------- 3 files changed, 52 insertions(+), 45 deletions(-) diff --git a/build/js/potree.js b/build/js/potree.js index 730897853a..ac14ed90f2 100644 --- a/build/js/potree.js +++ b/build/js/potree.js @@ -5705,23 +5705,25 @@ Potree.utils.frustumSphereIntersection = function(frustum, sphere){ Potree.Features = function(){ - + var ftCanvas = document.createElement("canvas"); var gl = ftCanvas.getContext("webgl") || ftCanvas.getContext("experimental-webgl"); - + if (gl === null) + return null; + // -- code taken from THREE.WebGLRenderer -- var _vertexShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ); var _vertexShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ); var _vertexShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.LOW_FLOAT ); - + var _fragmentShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ); var _fragmentShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ); var _fragmentShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.LOW_FLOAT ); - + var highpAvailable = _vertexShaderPrecisionHighpFloat.precision > 0 && _fragmentShaderPrecisionHighpFloat.precision > 0; var mediumpAvailable = _vertexShaderPrecisionMediumpFloat.precision > 0 && _fragmentShaderPrecisionMediumpFloat.precision > 0; // ----------------------------------------- - + var precision; if(highpAvailable){ precision = "highp"; @@ -5730,57 +5732,58 @@ Potree.Features = function(){ }else{ precision = "lowp"; } - + return { SHADER_INTERPOLATION: { isSupported: function(){ - + //if(typeof this.shaderInterpolationSupported === "undefined"){ // var material = new Potree.PointCloudMaterial(); // material.interpolate = true; - // + // // var vs = gl.createShader(gl.VERTEX_SHADER); // var fs = gl.createShader(gl.FRAGMENT_SHADER); // gl.shaderSource(vs, material.vertexShader); // gl.shaderSource(fs, material.fragmentShader); - // + // // gl.compileShader(vs); // gl.compileShader(fs); - // + // // var successVS = gl.getShaderParameter(vs, gl.COMPILE_STATUS); // var successFS = gl.getShaderParameter(fs, gl.COMPILE_STATUS); // this.shaderInterpolationSupported = successVS && successFS; //} // //return this.shaderInterpolationSupported; - - + + var supported = true; - + supported = supported && gl.getExtension("EXT_frag_depth"); supported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8; - + return supported; } }, SHADER_SPLATS: { isSupported: function(){ - + var supported = true; - + supported = supported && gl.getExtension("EXT_frag_depth"); supported = supported && gl.getExtension("OES_texture_float"); supported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8; - + return supported; - + } - + }, precision: precision } }(); + /** * adapted from http://stemkoski.github.io/Three.js/Sprite-Text-Labels.html */ diff --git a/build/js/potree.min.js b/build/js/potree.min.js index e060fe103d..921a2f2cdc 100644 --- a/build/js/potree.min.js +++ b/build/js/potree.min.js @@ -1,6 +1,8 @@ -function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var n=new THREE.Vector3(e.x,e.y,.5);n.unproject(t);for(var r=n.sub(t.position).normalize(),a=new THREE.Ray(t.position,r),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var n=o.getContext("2d");e=new e.constructor(e);for(var r=0;r 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying float vDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float w = 1.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += w * vRadius;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(vColor, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(vColor, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," color = color / color.w;"," gl_FragColor = color; "," "," gl_FragDepthEXT = depth;","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); -var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var n=o.radius,r=this.fov*Math.PI/180;this.aspect<1&&(r*=this.aspect);var a=Math.abs(n/Math.sin(r/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var n=JSON.parse(o.responseText),r=new Potree.Version(n.version);i.octreeDir=0===n.octreeDir.indexOf("http")?n.octreeDir:e+"/../"+n.octreeDir,i.spacing=n.spacing,i.hierarchyStepSize=n.hierarchyStepSize,i.pointAttributes=n.pointAttributes;var a=new THREE.Vector3(n.boundingBox.lx,n.boundingBox.ly,n.boundingBox.lz),s=new THREE.Vector3(n.boundingBox.ux,n.boundingBox.uy,n.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();n.tightBoundingBox&&(d.min.copy(new THREE.Vector3(n.tightBoundingBox.lx,n.tightBoundingBox.ly,n.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(n.tightBoundingBox.ux,n.tightBoundingBox.uy,n.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):"LAZ"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):(i.loader=new Potree.BinaryLoader(n.version,l,n.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=r.upTo("1.5")?n.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,r.upTo("1.4"))for(var m=1;m=n?i.pointsCount:i.pointsCount/n,s=function(){var e=t.readData(1e6,0,n);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),r+=e.count,Potree.LasLazLoader.progressCB(r/a),e.hasMoreData?s():(i.totalRead=r,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),n=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),n.add(e.pcoGeometry.offset),i.onmessage=function(r){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=r.data.position,d=r.data.color,c=r.data.intensity,u=new Uint8Array(r.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(r.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(r.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,n),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var r={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(r,[r.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(0),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,n=e.minSize||1,r=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16711680)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:n,maxSize:r,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;ir;r++)for(var a=0;i>a;a++){var s,l=r+t*a;s=e[r]?e[r]:e.DEFAULT,n[3*l+0]=255*s.r,n[3*l+1]=255*s.g,n[3*l+2]=255*s.b}return o},THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",n,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function n(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",n,!1),l.dispatchEvent(x),P=T.NONE)}function r(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,n=o.clone(),r=n.length();r*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*r/i.clientHeight),l.panUp(2*t*r/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var n=(new THREE.Matrix4).makeRotationY(g),r=(new THREE.Matrix4).multiplyMatrices(n,this.object.matrix);this.object.quaternion.setFromRotationMatrix(r),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals; -this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",r,!1),this.domElement.addEventListener("DOMMouseScroll",r,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function n(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",r,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function r(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",r,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(i*i+o*o);R.set(0,n),C.subVectors(R,P);var r=t.clientWidth,a=t.clientHeight,s=Math.sqrt(r*r+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,n=o.clone().sub(h.target),r=n.length();r*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*r/i.clientHeight),h.panUp(2*t*r/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),n=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var r=Math.min(1,this.fadeFactor*e);o+=r*w,n+=r*x,n=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,n)),n=Math.max(p,Math.min(Math.PI-p,n));var a=T.length();a+=(H-1)*a*r,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(r)),T.x=a*Math.sin(n)*Math.sin(o),T.y=a*Math.cos(n),T.z=a*Math.sin(n)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",n,!1),s.domElement.addEventListener("mouseup",r,!1)}}}function n(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function r(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",n,!1),s.domElement.removeEventListener("mouseup",r,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},n=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(n){var r=n.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(n,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*r*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},n=new THREE.Vector3(o.x,o.y,.5);n.unproject(f);var r=n.sub(f.position).normalize(),a=new THREE.Ray(f.position,r),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,r.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var r=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,r),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var n=i.children[o];n.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,n){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=n,this.loadQueue=[];var r=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(r,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var r=n.shift();if(r instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(r.boundingBox,r.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var r=c.loadQueue[0],u=r.geometryNode;if(u.loaded===!0&&void 0!==r.parent){var h=this.replaceProxy(r);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else r.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var n=new THREE.BoxHelper(e);this.add(n),this.boundingBoxNodes.push(n),e.boundingBoxNode=n,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var r=0;r=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=r.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,r,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=n.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var n=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(n);for(var r={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dr;r++)if(void 0!==t.children[r]){var a=t.children[r],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),n=(new THREE.Matrix4).makeTranslation(r,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(n),a}}(r,a,o),d={start:r,end:a,points:s,project:l};i.push(d),o+=r.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,n){if(void 0===n){var r=[];r.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;r.length>0;){var f=r.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),n=e.clone();return n.applyMatrix4(t),n.applyMatrix4(o),n}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,n))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},n=o.pickWindowSize||17,r=this.nodesOnRay(this.visibleNodes,i);if(0===r.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,r),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(n-1)/2,l.y-(n-1)/2,n,n),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),r.length>0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+D];else{for(var O=[],D=0;Dc;c++){var u=r[3*c+0],h=r[3*c+1],p=r[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/n.x),v=parseInt(a*(m.z-o.min.z)/n.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&r.x.5&&r.y0;){{var r=n.shift(),a=r.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,r.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u)); -h||(h=0),n[r+0]=c,n[r+1]=h,n[r+2]=u,r+=3}o.addAttribute("position",new THREE.BufferAttribute(n,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),n=0;o>n;n++)e+=i.substr(n*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],n=i.getUint8(0),r=i.getUint32(1,!0);e.numPoints=r,o.push({children:n,numPoints:r,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(n){console.log("fehler beim laden der punktwolke: "+n)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",n=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],r=THREE.ImageUtils.loadTextureCube(n,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:r},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var n=new THREE.LineBasicMaterial({color:o||8947848}),r=new THREE.Geometry,a=0;t>=a;a++)r.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),r.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(r,n,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var n=o.image.data,r=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,n[3*u+0]=255*(h/15+.05+p)*r[0],n[3*u+1]=255*(h/15+.05+p)*r[1],n[3*u+2]=255*(h/15+.05+p)*r[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(n)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(n)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,n=-t.radius,r=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(n>s)return 0;r=Math.min(r,s)}return r>=t.radius?2:1},Potree.Features=function(){var e,t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),o=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT),n=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT),r=(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT),i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT)),a=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT),s=(i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT),o.precision>0&&r.precision>0),l=n.precision>0&&a.precision>0;return e=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},precision:e}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,n=o+2*this.borderThickness,r=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=n,t.canvas.height=r,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*n,.01*r,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,n,r){e.beginPath(),e.moveTo(t+r,i),e.lineTo(t+o-r,i),e.quadraticCurveTo(t+o,i,t+o,i+r),e.lineTo(t+o,i+n-r),e.quadraticCurveTo(t+o,i+n,t+o-r,i+n),e.lineTo(t+r,i+n),e.quadraticCurveTo(t,i+n,t,i+n-r),e.lineTo(t,i+r),e.quadraticCurveTo(t,i,t+r,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},n=function(e){e.target.material.emissive.setHex(0)},r=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var n=e.spheres.indexOf(i.dragstart.object);e.setPosition(n,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",n),s.addEventListener("drag",r),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){var t=this.points[n];o.add(t)}o.divideScalar(this.points.length);for(var n=0;i>=n;n++){var r=n,a=n+1>i?0:n+1,s=0===n?i:n-1,t=this.points[r],l=this.points[a],d=this.points[s],c=this.spheres[r];c.position.copy(t),c.material.color=e.color;var u=this.edges[r];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>r||this.closed;var h=this.edgeLabels[n],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>r||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[n],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>r||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function n(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var n=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(n,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function r(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&r(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,n="undefined"!=typeof e.closed?e.closed:!1,r=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=n,a.maxMarkers=r,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){{var e=this.points[r],a=this.spheres[r],s=0===r?n:r-1,l=r===n?0:r+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[r],p=this.boxes[s];this.boxes[r],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var r=0;r0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),n=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(n);var r=function(){n.material.color.setHex(5592405)},a=function(){n.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),n=t.clone().unproject(s.camera),r=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(r,n),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,n).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=n;n++){var r=2*Math.PI*n/o,a=3*Math.cos(r),l=3*Math.sin(r);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,n=0;nt;t++)n.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function n(){}function r(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?r[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ac)&&(n=l,r=c)}}return n?n.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var n=[],r=0;r=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",n,!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var n=0;nH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var n=0;n0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),n=0;n0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+D];else{for(var O=[],D=0;Dn?-1:n>r?1:0};t.sort(n);for(var r=[],a=0;a0&&(l+=1,d=r.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&r.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?r.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),n=e.byteLength/17,r=new Float32Array(3*n),a=new Float32Array(3*n),s=new Uint32Array(n),l=0;n>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;r[3*l+0]=d,r[3*l+1]=c,r[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(r,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*n),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=n}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),n=new Potree.PointCloudArena4DGeometry;n.url=e,n.name=o.Name,n.provider=o.Provider,n.numNodes=o.Nodes,n.numPoints=o.Points,n.version=o.Version,n.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(n.spacing=o.Spacing);var r=n.boundingBox.min.clone().multiplyScalar(-1);n.boundingBox.min.add(r),n.boundingBox.max.add(r),n.offset=r;var a=n.boundingBox.center(),s=n.boundingBox.size().length()/2;n.boundingSphere=new THREE.Sphere(a,s),n.loadHierarchy(),t(n)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,n=new DataView(e),r=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=n.getUint8(3*l+0,!0),c=(n.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null; -h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=r.length,s=Math.max(s,v.level),r.length>0){var g=r[r.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,r.push(v),v.isLeaf)for(var P=!1;!P&&r.length>0;){r.pop();var R=r[r.length-1];P=r.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file +function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var n=new THREE.Vector3(e.x,e.y,.5);n.unproject(t);for(var r=n.sub(t.position).normalize(),a=new THREE.Ray(t.position,r),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var n=o.getContext("2d");e=new e.constructor(e);for(var r=0;r 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying float vDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float w = 1.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += w * vRadius;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(vColor, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(vColor, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"), +Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," color = color / color.w;"," gl_FragColor = color; "," "," gl_FragDepthEXT = depth;","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld();var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var n=o.radius,r=this.fov*Math.PI/180;this.aspect<1&&(r*=this.aspect);var a=Math.abs(n/Math.sin(r/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var n=JSON.parse(o.responseText),r=new Potree.Version(n.version);i.octreeDir=0===n.octreeDir.indexOf("http")?n.octreeDir:e+"/../"+n.octreeDir,i.spacing=n.spacing,i.hierarchyStepSize=n.hierarchyStepSize,i.pointAttributes=n.pointAttributes;var a=new THREE.Vector3(n.boundingBox.lx,n.boundingBox.ly,n.boundingBox.lz),s=new THREE.Vector3(n.boundingBox.ux,n.boundingBox.uy,n.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();n.tightBoundingBox&&(d.min.copy(new THREE.Vector3(n.tightBoundingBox.lx,n.tightBoundingBox.ly,n.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(n.tightBoundingBox.ux,n.tightBoundingBox.uy,n.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):"LAZ"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):(i.loader=new Potree.BinaryLoader(n.version,l,n.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=r.upTo("1.5")?n.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,r.upTo("1.4"))for(var m=1;m=n?i.pointsCount:i.pointsCount/n,s=function(){var e=t.readData(1e6,0,n);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),r+=e.count,Potree.LasLazLoader.progressCB(r/a),e.hasMoreData?s():(i.totalRead=r,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(e,t){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),n=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),n.add(e.pcoGeometry.offset),i.onmessage=function(r){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=r.data.position,d=r.data.color,c=r.data.intensity,u=new Uint8Array(r.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(r.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(r.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,n),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var r={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(r,[r.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(0),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,n=e.minSize||1,r=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16711680)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:n,maxSize:r,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;ir;r++)for(var a=0;i>a;a++){var s,l=r+t*a;s=e[r]?e[r]:e.DEFAULT,n[3*l+0]=255*s.r,n[3*l+1]=255*s.g,n[3*l+2]=255*s.b}return o},THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",n,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function n(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",n,!1),l.dispatchEvent(x),P=T.NONE)}function r(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,n=o.clone(),r=n.length();r*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*r/i.clientHeight),l.panUp(2*t*r/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed), +this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var n=(new THREE.Matrix4).makeRotationY(g),r=(new THREE.Matrix4).multiplyMatrices(n,this.object.matrix);this.object.quaternion.setFromRotationMatrix(r),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",r,!1),this.domElement.addEventListener("DOMMouseScroll",r,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function n(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",r,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function r(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",r,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(i*i+o*o);R.set(0,n),C.subVectors(R,P);var r=t.clientWidth,a=t.clientHeight,s=Math.sqrt(r*r+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,n=o.clone().sub(h.target),r=n.length();r*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*r/i.clientHeight),h.panUp(2*t*r/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),n=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var r=Math.min(1,this.fadeFactor*e);o+=r*w,n+=r*x,n=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,n)),n=Math.max(p,Math.min(Math.PI-p,n));var a=T.length();a+=(H-1)*a*r,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(r)),T.x=a*Math.sin(n)*Math.sin(o),T.y=a*Math.cos(n),T.z=a*Math.sin(n)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",n,!1),s.domElement.addEventListener("mouseup",r,!1)}}}function n(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function r(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",n,!1),s.domElement.removeEventListener("mouseup",r,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},n=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(n){var r=n.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(n,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*r*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},n=new THREE.Vector3(o.x,o.y,.5);n.unproject(f);var r=n.sub(f.position).normalize(),a=new THREE.Ray(f.position,r),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,r.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var r=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,r),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var n=i.children[o];n.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,n){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=n,this.loadQueue=[];var r=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(r,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var r=n.shift();if(r instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(r.boundingBox,r.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var r=c.loadQueue[0],u=r.geometryNode;if(u.loaded===!0&&void 0!==r.parent){var h=this.replaceProxy(r);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else r.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o,n){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var a=0;a=0;if(l)for(var d=0;d0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var t=0;t0;){{var a=r.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,r,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=n.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var n=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(n);for(var r={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dr;r++)if(void 0!==t.children[r]){var a=t.children[r],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),n=(new THREE.Matrix4).makeTranslation(r,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(n),a}}(r,a,o),d={start:r,end:a,points:s,project:l};i.push(d),o+=r.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,n){if(void 0===n){var r=[];r.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;r.length>0;){var f=r.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),n=e.clone();return n.applyMatrix4(t),n.applyMatrix4(o),n}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,n))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},n=o.pickWindowSize||17,r=this.nodesOnRay(this.visibleNodes,i);if(0===r.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,r),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(n-1)/2,l.y-(n-1)/2,n,n),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),r.length>0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+D];else{for(var O=[],D=0;Dc;c++){var u=r[3*c+0],h=r[3*c+1],p=r[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/n.x),v=parseInt(a*(m.z-o.min.z)/n.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&r.x.5&&r.y0;){{var r=n.shift(),a=r.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,r.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),n[r+0]=c,n[r+1]=h,n[r+2]=u,r+=3}o.addAttribute("position",new THREE.BufferAttribute(n,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),n=0;o>n;n++)e+=i.substr(n*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],n=i.getUint8(0),r=i.getUint32(1,!0);e.numPoints=r,o.push({children:n,numPoints:r,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(n){console.log("fehler beim laden der punktwolke: "+n)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",n=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],r=THREE.ImageUtils.loadTextureCube(n,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:r},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var n=new THREE.LineBasicMaterial({color:o||8947848}),r=new THREE.Geometry,a=0;t>=a;a++)r.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),r.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(r,n,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var n=o.image.data,r=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,n[3*u+0]=255*(h/15+.05+p)*r[0],n[3*u+1]=255*(h/15+.05+p)*r[1],n[3*u+2]=255*(h/15+.05+p)*r[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(n)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(n)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,n=-t.radius,r=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(n>s)return 0;r=Math.min(r,s)}return r>=t.radius?2:1},Potree.Features=function(){var e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");if(null===t)return null;var i,o=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT),n=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT),r=(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.LOW_FLOAT),t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT)),a=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT),s=(t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.LOW_FLOAT),o.precision>0&&r.precision>0),l=n.precision>0&&a.precision>0;return i=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getExtension("OES_texture_float"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},precision:i}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,n=o+2*this.borderThickness,r=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=n,t.canvas.height=r,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*n,.01*r,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,n,r){e.beginPath(),e.moveTo(t+r,i),e.lineTo(t+o-r,i),e.quadraticCurveTo(t+o,i,t+o,i+r),e.lineTo(t+o,i+n-r),e.quadraticCurveTo(t+o,i+n,t+o-r,i+n),e.lineTo(t+r,i+n),e.quadraticCurveTo(t,i+n,t,i+n-r),e.lineTo(t,i+r),e.quadraticCurveTo(t,i,t+r,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},n=function(e){e.target.material.emissive.setHex(0)},r=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var n=e.spheres.indexOf(i.dragstart.object);e.setPosition(n,o)}},a=function(e){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",n),s.addEventListener("drag",r),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){var t=this.points[n];o.add(t)}o.divideScalar(this.points.length);for(var n=0;i>=n;n++){var r=n,a=n+1>i?0:n+1,s=0===n?i:n-1,t=this.points[r],l=this.points[a],d=this.points[s],c=this.spheres[r];c.position.copy(t),c.material.color=e.color;var u=this.edges[r];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>r||this.closed;var h=this.edgeLabels[n],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>r||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[n],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>r||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function n(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var n=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(n,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function r(e){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&r(e)}function s(e){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,n="undefined"!=typeof e.closed?e.closed:!1,r=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=n,a.maxMarkers=r,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){{var e=this.points[r],a=this.spheres[r],s=0===r?n:r-1,l=r===n?0:r+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[r],p=this.boxes[s];this.boxes[r],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var r=0;r0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed", +profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),n=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(n);var r=function(e){n.material.color.setHex(5592405)},a=function(e){n.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),n=t.clone().unproject(s.camera),r=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(r,n),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,n).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=n;n++){var r=2*Math.PI*n/o,a=3*Math.cos(r),l=3*Math.sin(r);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,n=0;nt;t++)n.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function n(e){}function r(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?r[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ac)&&(n=l,r=c)}}return n?n.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(e){if(u===c.INSERT_VOLUME){var t=l();if(t){this.activeVolume.position.copy(t);var o=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),n=(new THREE.Vector4(o.x,o.y,o.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(o.z/10));this.activeVolume.scale.set(n,n,n)}}for(var r=[],a=0;a=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",n,!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var n=0;nH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var n=0;n0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var t=0;t0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),n=0;n0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+D];else{for(var O=[],D=0;Dn?-1:n>r?1:0};t.sort(n);for(var r=[],a=0;a0&&(l+=1,d=r.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&r.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?r.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),n=e.byteLength/17,r=new Float32Array(3*n),a=new Float32Array(3*n),s=new Uint32Array(n),l=0;n>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;r[3*l+0]=d,r[3*l+1]=c,r[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(r,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*n),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=n}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"]); + +},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),n=new Potree.PointCloudArena4DGeometry;n.url=e,n.name=o.Name,n.provider=o.Provider,n.numNodes=o.Nodes,n.numPoints=o.Points,n.version=o.Version,n.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(n.spacing=o.Spacing);var r=n.boundingBox.min.clone().multiplyScalar(-1);n.boundingBox.min.add(r),n.boundingBox.max.add(r),n.offset=r;var a=n.boundingBox.center(),s=n.boundingBox.size().length()/2;n.boundingSphere=new THREE.Sphere(a,s),n.loadHierarchy(),t(n)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,n=new DataView(e),r=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=n.getUint8(3*l+0,!0),c=(n.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=r.length,s=Math.max(s,v.level),r.length>0){var g=r[r.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,r.push(v),v.isLeaf)for(var P=!1;!P&&r.length>0;){r.pop();var R=r[r.length-1];P=r.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file diff --git a/src/Features.js b/src/Features.js index 3a3f9823ca..25e0fb6232 100644 --- a/src/Features.js +++ b/src/Features.js @@ -1,22 +1,24 @@ Potree.Features = function(){ - + var ftCanvas = document.createElement("canvas"); var gl = ftCanvas.getContext("webgl") || ftCanvas.getContext("experimental-webgl"); - + if (gl === null) + return null; + // -- code taken from THREE.WebGLRenderer -- var _vertexShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ); var _vertexShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ); var _vertexShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.LOW_FLOAT ); - + var _fragmentShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ); var _fragmentShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ); var _fragmentShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.LOW_FLOAT ); - + var highpAvailable = _vertexShaderPrecisionHighpFloat.precision > 0 && _fragmentShaderPrecisionHighpFloat.precision > 0; var mediumpAvailable = _vertexShaderPrecisionMediumpFloat.precision > 0 && _fragmentShaderPrecisionMediumpFloat.precision > 0; // ----------------------------------------- - + var precision; if(highpAvailable){ precision = "highp"; @@ -25,54 +27,54 @@ Potree.Features = function(){ }else{ precision = "lowp"; } - + return { SHADER_INTERPOLATION: { isSupported: function(){ - + //if(typeof this.shaderInterpolationSupported === "undefined"){ // var material = new Potree.PointCloudMaterial(); // material.interpolate = true; - // + // // var vs = gl.createShader(gl.VERTEX_SHADER); // var fs = gl.createShader(gl.FRAGMENT_SHADER); // gl.shaderSource(vs, material.vertexShader); // gl.shaderSource(fs, material.fragmentShader); - // + // // gl.compileShader(vs); // gl.compileShader(fs); - // + // // var successVS = gl.getShaderParameter(vs, gl.COMPILE_STATUS); // var successFS = gl.getShaderParameter(fs, gl.COMPILE_STATUS); // this.shaderInterpolationSupported = successVS && successFS; //} // //return this.shaderInterpolationSupported; - - + + var supported = true; - + supported = supported && gl.getExtension("EXT_frag_depth"); supported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8; - + return supported; } }, SHADER_SPLATS: { isSupported: function(){ - + var supported = true; - + supported = supported && gl.getExtension("EXT_frag_depth"); supported = supported && gl.getExtension("OES_texture_float"); supported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8; - + return supported; - + } - + }, precision: precision } -}(); \ No newline at end of file +}(); From e1a1447a9d0b9f67616c891c88075e9a6bd499fe Mon Sep 17 00:00:00 2001 From: mschuetz Date: Thu, 30 Jul 2015 12:48:41 +0200 Subject: [PATCH 17/35] fix phong rendering with picking --- build/js/potree.js | 25 ++++++++++++------------ build/js/potree.min.js | 8 ++++---- build/shaders/shaders.js | 17 ++++++---------- src/PointCloudOctree.js | 5 +++++ src/materials/EyeDomeLightingMaterial.js | 3 +-- src/materials/shaders/edl.fs | 13 ++++++------ src/materials/shaders/edl.vs | 4 ---- 7 files changed, 34 insertions(+), 41 deletions(-) diff --git a/build/js/potree.js b/build/js/potree.js index f741df6754..657fcd5adc 100644 --- a/build/js/potree.js +++ b/build/js/potree.js @@ -713,17 +713,13 @@ Potree.Shaders["edl.vs"] = [ "", "", "varying vec2 vUv;", - "varying vec3 vViewRay;", "", "void main() {", " vUv = uv;", " ", " vec4 mvPosition = modelViewMatrix * vec4(position,1.0);", - " vViewRay = mvPosition.xyz;", "", " gl_Position = projectionMatrix * mvPosition;", - " ", - " ", "}", ].join("\n"); @@ -744,15 +740,13 @@ Potree.Shaders["edl.fs"] = [ "uniform float far;", "uniform vec2 neighbours[NEIGHBOUR_COUNT];", "uniform vec3 lightDir;", - "uniform float zoom;", - "uniform float pixScale;", "uniform float expScale;", + "uniform float radius;", "", "//uniform sampler2D depthMap;", "uniform sampler2D colorMap;", "", "varying vec2 vUv;", - "varying vec3 vViewRay;", "", "/**", " * transform linear depth to [0,1] interval with 1 beeing closest to the camera.", @@ -779,13 +773,14 @@ Potree.Shaders["edl.fs"] = [ " return max(0.0, z) / dist;", "}", "", - "float computeObscurance(float linearDepth, float scale){", - " vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );", + "float computeObscurance(float linearDepth){", + " vec4 P = vec4(0, 0, 1, -ztransform(linearDepth));", + " vec2 uvRadius = radius / vec2(screenWidth, screenHeight);", " ", " float sum = 0.0;", " ", " for(int c = 0; c < NEIGHBOUR_COUNT; c++){", - " vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];", + " vec2 N_rel_pos = uvRadius * neighbours[c];", " vec2 N_abs_pos = vUv + N_rel_pos;", " ", " float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a);", @@ -804,7 +799,7 @@ Potree.Shaders["edl.fs"] = [ "void main(){", " float linearDepth = logToLinear(texture2D(colorMap, vUv).a);", " ", - " float f = computeObscurance(linearDepth, pixScale);", + " float f = computeObscurance(linearDepth);", " f = exp(-expScale * f);", " ", " vec4 color = texture2D(colorMap, vUv);", @@ -2450,9 +2445,8 @@ Potree.EyeDomeLightingMaterial = function(parameters){ screenHeight: { type: "f", value: 0 }, near: { type: "f", value: 0 }, far: { type: "f", value: 0 }, - pixScale: { type: "f", value: 1.0 }, expScale: { type: "f", value: 100.0 }, - zoom: { type: "f", value: 3.0 }, + radius: { type: "f", value: 3.0 }, lightDir: { type: "v3", value: lightDir }, neighbours: { type: "2fv", value: neighbours }, depthMap: { type: "t", value: null }, @@ -5119,6 +5113,11 @@ Potree.PointCloudOctree.prototype.pick = function(renderer, camera, ray, params) } renderer.renderBufferDirect(camera, [], null, material, geometry, object); + + var program = material.program.program; + _gl.useProgram( program ); + var attributePointer = _gl.getAttribLocation(program, "indices"); + _gl.disableVertexAttribArray( attributePointer ); } var pixelCount = pickWindowSize * pickWindowSize; diff --git a/build/js/potree.min.js b/build/js/potree.min.js index 3655a3dab6..0a44b03bad 100644 --- a/build/js/potree.min.js +++ b/build/js/potree.min.js @@ -1,6 +1,6 @@ -function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var r=new THREE.Vector3(e.x,e.y,.5);r.unproject(t);for(var n=r.sub(t.position).normalize(),a=new THREE.Ray(t.position,n),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var r=o.getContext("2d");e=new e.constructor(e);for(var n=0;n 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying float vLogDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;"," float depth = gl_FragCoord.z;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float sDepth = texture2D(depthMap, uv).r;"," if(vLinearDepth > sDepth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," depth = (pos.z + 1.0) / 2.0;"," gl_FragDepthEXT = depth;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," "," "," #if defined(use_edl)"," gl_FragColor.a = vLogDepth;"," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," float depth = texture2D(depthMap, vUv).g; "," "," if(depth <= 0.0){"," discard;"," }"," "," vec4 color = texture2D(texture, vUv); "," color = color / color.w;"," "," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","varying vec3 vViewRay;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);"," vViewRay = mvPosition.xyz;",""," gl_Position = projectionMatrix * mvPosition;"," "," ","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float zoom;","uniform float pixScale;","uniform float expScale;","","//uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","varying vec3 vViewRay;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float expToLinear(float z){"," z = 2.0 * z - 1.0;"," float linear = (2.0 * near * far) / (far + near - z * (far - near));",""," return linear;","}","","// this actually only returns linear depth values if LOG_BIAS is 1.0","// lower values work out more nicely, though.","#define LOG_BIAS 0.01","float logToLinear(float z){"," return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth, float scale){"," vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a);"," "," if(neighbourDepth != 0.0){"," float Zn = ztransform(neighbourDepth);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.05 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){"," float linearDepth = logToLinear(texture2D(colorMap, vUv).a);"," "," float f = computeObscurance(linearDepth, pixScale);"," f = exp(-expScale * f);"," "," vec4 color = texture2D(colorMap, vUv);"," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); -var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var r=o.radius,n=this.fov*Math.PI/180;this.aspect<1&&(n*=this.aspect);var a=Math.abs(r/Math.sin(n/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var r=JSON.parse(o.responseText),n=new Potree.Version(r.version);i.octreeDir=0===r.octreeDir.indexOf("http")?r.octreeDir:e+"/../"+r.octreeDir,i.spacing=r.spacing,i.hierarchyStepSize=r.hierarchyStepSize,i.pointAttributes=r.pointAttributes;var a=new THREE.Vector3(r.boundingBox.lx,r.boundingBox.ly,r.boundingBox.lz),s=new THREE.Vector3(r.boundingBox.ux,r.boundingBox.uy,r.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();r.tightBoundingBox&&(d.min.copy(new THREE.Vector3(r.tightBoundingBox.lx,r.tightBoundingBox.ly,r.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(r.tightBoundingBox.ux,r.tightBoundingBox.uy,r.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):"LAZ"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):(i.loader=new Potree.BinaryLoader(r.version,l,r.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=n.upTo("1.5")?r.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,n.upTo("1.4"))for(var m=1;m=r?i.pointsCount:i.pointsCount/r,s=function(){var e=t.readData(1e6,0,r);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),n+=e.count,Potree.LasLazLoader.progressCB(n/a),e.hasMoreData?s():(i.totalRead=n,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),r=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),r.add(e.pcoGeometry.offset),i.onmessage=function(n){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=n.data.position,d=n.data.color,c=n.data.intensity,u=new Uint8Array(n.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(n.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(n.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,r),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var n={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(n,[n.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,r=e.minSize||1,n=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a,this._useLogarithmicDepthBuffer=!1,this._useEDL=!1;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:r,maxSize:n,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._useLogarithmicDepthBuffer&&(e+="#define use_logarithmic_depth_buffer\n"),this._useEDL&&(e+="#define use_edl\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;in;n++)for(var a=0;i>a;a++){var s,l=n+t*a;s=e[n]?e[n]:e.DEFAULT,r[3*l+0]=255*s.r,r[3*l+1]=255*s.g,r[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var r=new THREE.Vector3(0,0,1).normalize(),n={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},pixScale:{type:"f",value:1},expScale:{type:"f",value:100},zoom:{type:"f",value:3},lightDir:{type:"v3",value:r},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:n,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",r,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function r(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",r,!1),l.dispatchEvent(x),P=T.NONE)}function n(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f) -},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,r=o.clone(),n=r.length();n*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*n/i.clientHeight),l.panUp(2*t*n/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var r=(new THREE.Matrix4).makeRotationY(g),n=(new THREE.Matrix4).multiplyMatrices(r,this.object.matrix);this.object.quaternion.setFromRotationMatrix(n),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",n,!1),this.domElement.addEventListener("DOMMouseScroll",n,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function r(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",n,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function n(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",n,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,r=Math.sqrt(i*i+o*o);R.set(0,r),C.subVectors(R,P);var n=t.clientWidth,a=t.clientHeight,s=Math.sqrt(n*n+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,r=o.clone().sub(h.target),n=r.length();n*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*n/i.clientHeight),h.panUp(2*t*n/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),r=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var n=Math.min(1,this.fadeFactor*e);o+=n*w,r+=n*x,r=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,r)),r=Math.max(p,Math.min(Math.PI-p,r));var a=T.length();a+=(H-1)*a*n,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(n)),T.x=a*Math.sin(r)*Math.sin(o),T.y=a*Math.cos(r),T.z=a*Math.sin(r)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",r,!1),s.domElement.addEventListener("mouseup",n,!1)}}}function r(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function n(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",r,!1),s.domElement.removeEventListener("mouseup",n,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},r=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(r){var n=r.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(r,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*n*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},r=new THREE.Vector3(o.x,o.y,.5);r.unproject(f);var n=r.sub(f.position).normalize(),a=new THREE.Ray(f.position,n),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,n.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var n=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,n),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var r=i.children[o];r.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,r){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=r,this.loadQueue=[];var n=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(n,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var n=r.shift();if(n instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(n.boundingBox,n.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var n=c.loadQueue[0],u=n.geometryNode;if(u.loaded===!0&&void 0!==n.parent){var h=this.replaceProxy(n);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else n.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var n=0;n=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=n.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,n,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=r.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var r=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(r);for(var n={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dn;n++)if(void 0!==t.children[n]){var a=t.children[n],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),r=(new THREE.Matrix4).makeTranslation(n,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(r),a}}(n,a,o),d={start:n,end:a,points:s,project:l};i.push(d),o+=n.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,r){if(void 0===r){var n=[];n.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;n.length>0;){var f=n.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),r=e.clone();return r.applyMatrix4(t),r.applyMatrix4(o),r}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,r))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},r=o.pickWindowSize||17,n=this.nodesOnRay(this.visibleNodes,i);if(0===n.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,n),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(r-1)/2,l.y-(r-1)/2,r,r),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),n.length>0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],D=L[3*P.pIndex+2],N=new THREE.Vector3(G,W,D);N.applyMatrix4(this.matrixWorld),A[B]=N}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xc;c++){var u=n[3*c+0],h=n[3*c+1],p=n[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/r.x),v=parseInt(a*(m.z-o.min.z)/r.z); +function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var r=new THREE.Vector3(e.x,e.y,.5);r.unproject(t);for(var n=r.sub(t.position).normalize(),a=new THREE.Ray(t.position,n),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var r=o.getContext("2d");e=new e.constructor(e);for(var n=0;n 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying float vLogDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;"," float depth = gl_FragCoord.z;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float sDepth = texture2D(depthMap, uv).r;"," if(vLinearDepth > sDepth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," depth = (pos.z + 1.0) / 2.0;"," gl_FragDepthEXT = depth;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," "," "," #if defined(use_edl)"," gl_FragColor.a = vLogDepth;"," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," float depth = texture2D(depthMap, vUv).g; "," "," if(depth <= 0.0){"," discard;"," }"," "," vec4 color = texture2D(texture, vUv); "," color = color / color.w;"," "," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);",""," gl_Position = projectionMatrix * mvPosition;","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float expScale;","uniform float radius;","","//uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float expToLinear(float z){"," z = 2.0 * z - 1.0;"," float linear = (2.0 * near * far) / (far + near - z * (far - near));",""," return linear;","}","","// this actually only returns linear depth values if LOG_BIAS is 1.0","// lower values work out more nicely, though.","#define LOG_BIAS 0.01","float logToLinear(float z){"," return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth){"," vec4 P = vec4(0, 0, 1, -ztransform(linearDepth));"," vec2 uvRadius = radius / vec2(screenWidth, screenHeight);"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = uvRadius * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a);"," "," if(neighbourDepth != 0.0){"," float Zn = ztransform(neighbourDepth);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.05 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){"," float linearDepth = logToLinear(texture2D(colorMap, vUv).a);"," "," float f = computeObscurance(linearDepth);"," f = exp(-expScale * f);"," "," vec4 color = texture2D(colorMap, vUv);"," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); +var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var r=o.radius,n=this.fov*Math.PI/180;this.aspect<1&&(n*=this.aspect);var a=Math.abs(r/Math.sin(n/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var r=JSON.parse(o.responseText),n=new Potree.Version(r.version);i.octreeDir=0===r.octreeDir.indexOf("http")?r.octreeDir:e+"/../"+r.octreeDir,i.spacing=r.spacing,i.hierarchyStepSize=r.hierarchyStepSize,i.pointAttributes=r.pointAttributes;var a=new THREE.Vector3(r.boundingBox.lx,r.boundingBox.ly,r.boundingBox.lz),s=new THREE.Vector3(r.boundingBox.ux,r.boundingBox.uy,r.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();r.tightBoundingBox&&(d.min.copy(new THREE.Vector3(r.tightBoundingBox.lx,r.tightBoundingBox.ly,r.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(r.tightBoundingBox.ux,r.tightBoundingBox.uy,r.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):"LAZ"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):(i.loader=new Potree.BinaryLoader(r.version,l,r.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=n.upTo("1.5")?r.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,n.upTo("1.4"))for(var m=1;m=r?i.pointsCount:i.pointsCount/r,s=function(){var e=t.readData(1e6,0,r);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),n+=e.count,Potree.LasLazLoader.progressCB(n/a),e.hasMoreData?s():(i.totalRead=n,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),r=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),r.add(e.pcoGeometry.offset),i.onmessage=function(n){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=n.data.position,d=n.data.color,c=n.data.intensity,u=new Uint8Array(n.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(n.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(n.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,r),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var n={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(n,[n.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,r=e.minSize||1,n=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a,this._useLogarithmicDepthBuffer=!1,this._useEDL=!1;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:r,maxSize:n,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._useLogarithmicDepthBuffer&&(e+="#define use_logarithmic_depth_buffer\n"),this._useEDL&&(e+="#define use_edl\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;in;n++)for(var a=0;i>a;a++){var s,l=n+t*a;s=e[n]?e[n]:e.DEFAULT,r[3*l+0]=255*s.r,r[3*l+1]=255*s.g,r[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var r=new THREE.Vector3(0,0,1).normalize(),n={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},expScale:{type:"f",value:100},radius:{type:"f",value:3},lightDir:{type:"v3",value:r},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:n,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",r,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function r(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",r,!1),l.dispatchEvent(x),P=T.NONE)}function n(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements; +f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,r=o.clone(),n=r.length();n*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*n/i.clientHeight),l.panUp(2*t*n/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var r=(new THREE.Matrix4).makeRotationY(g),n=(new THREE.Matrix4).multiplyMatrices(r,this.object.matrix);this.object.quaternion.setFromRotationMatrix(n),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",n,!1),this.domElement.addEventListener("DOMMouseScroll",n,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function r(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",n,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function n(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",n,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,r=Math.sqrt(i*i+o*o);R.set(0,r),C.subVectors(R,P);var n=t.clientWidth,a=t.clientHeight,s=Math.sqrt(n*n+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,r=o.clone().sub(h.target),n=r.length();n*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*n/i.clientHeight),h.panUp(2*t*n/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),r=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var n=Math.min(1,this.fadeFactor*e);o+=n*w,r+=n*x,r=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,r)),r=Math.max(p,Math.min(Math.PI-p,r));var a=T.length();a+=(H-1)*a*n,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(n)),T.x=a*Math.sin(r)*Math.sin(o),T.y=a*Math.cos(r),T.z=a*Math.sin(r)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",r,!1),s.domElement.addEventListener("mouseup",n,!1)}}}function r(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function n(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",r,!1),s.domElement.removeEventListener("mouseup",n,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},r=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(r){var n=r.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(r,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*n*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},r=new THREE.Vector3(o.x,o.y,.5);r.unproject(f);var n=r.sub(f.position).normalize(),a=new THREE.Ray(f.position,n),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,n.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var n=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,n),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var r=i.children[o];r.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,r){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=r,this.loadQueue=[];var n=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(n,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var n=r.shift();if(n instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(n.boundingBox,n.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var n=c.loadQueue[0],u=n.geometryNode;if(u.loaded===!0&&void 0!==n.parent){var h=this.replaceProxy(n);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else n.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var n=0;n=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=n.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,n,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=r.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var r=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(r);for(var n={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dn;n++)if(void 0!==t.children[n]){var a=t.children[n],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),r=(new THREE.Matrix4).makeTranslation(n,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(r),a}}(n,a,o),d={start:n,end:a,points:s,project:l};i.push(d),o+=n.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,r){if(void 0===r){var n=[];n.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;n.length>0;){var f=n.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),r=e.clone();return r.applyMatrix4(t),r.applyMatrix4(o),r}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,r))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},r=o.pickWindowSize||17,n=this.nodesOnRay(this.visibleNodes,i);if(0===n.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,n),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(r-1)/2,l.y-(r-1)/2,r,r),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),n.length>0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xc;c++){var u=n[3*c+0],h=n[3*c+1],p=n[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/r.x),v=parseInt(a*(m.z-o.min.z)/r.z); f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&n.x.5&&n.y0;){{var n=r.shift(),a=n.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,n.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),r[n+0]=c,r[n+1]=h,r[n+2]=u,n+=3}o.addAttribute("position",new THREE.BufferAttribute(r,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),r=0;o>r;r++)e+=i.substr(r*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],r=i.getUint8(0),n=i.getUint32(1,!0);e.numPoints=n,o.push({children:r,numPoints:n,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(r){console.log("fehler beim laden der punktwolke: "+r)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",r=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],n=THREE.ImageUtils.loadTextureCube(r,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:n},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var r=new THREE.LineBasicMaterial({color:o||8947848}),n=new THREE.Geometry,a=0;t>=a;a++)n.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),n.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(n,r,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var r=o.image.data,n=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,r[3*u+0]=255*(h/15+.05+p)*n[0],r[3*u+1]=255*(h/15+.05+p)*n[1],r[3*u+2]=255*(h/15+.05+p)*n[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(r)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(r)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,r=-t.radius,n=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(r>s)return 0;n=Math.min(n,s)}return n>=t.radius?2:1},Potree.utils.screenPass=new function(){this.screenScene=new THREE.Scene,this.screenQuad=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2,0)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new THREE.Camera,this.render=function(e,t,i){this.screenQuad.material=t,void 0===typeof i?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,i)}},Potree.Features=function(){var e,t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),o=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT),r=i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT),n=(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT),i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT)),a=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT),s=(i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT),o.precision>0&&n.precision>0),l=r.precision>0&&a.precision>0;return e=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},SHADER_EDL:{isSupported:function(){var e=!0;return e=e&&i.getExtension("EXT_frag_depth"),e=e&&i.getExtension("OES_texture_float"),e=e&&i.getParameter(i.MAX_VARYING_VECTORS)>=8}},precision:e}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,r=o+2*this.borderThickness,n=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=r,t.canvas.height=n,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*r,.01*n,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,r,n){e.beginPath(),e.moveTo(t+n,i),e.lineTo(t+o-n,i),e.quadraticCurveTo(t+o,i,t+o,i+n),e.lineTo(t+o,i+r-n),e.quadraticCurveTo(t+o,i+r,t+o-n,i+r),e.lineTo(t+n,i+r),e.quadraticCurveTo(t,i+r,t,i+r-n),e.lineTo(t,i+n),e.quadraticCurveTo(t,i,t+n,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},r=function(e){e.target.material.emissive.setHex(0)},n=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var r=e.spheres.indexOf(i.dragstart.object);e.setPosition(r,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",r),s.addEventListener("drag",n),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){var t=this.points[r];o.add(t)}o.divideScalar(this.points.length);for(var r=0;i>=r;r++){var n=r,a=r+1>i?0:r+1,s=0===r?i:r-1,t=this.points[n],l=this.points[a],d=this.points[s],c=this.spheres[n];c.position.copy(t),c.material.color=e.color;var u=this.edges[n];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>n||this.closed;var h=this.edgeLabels[r],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>n||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[r],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>n||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function r(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var r=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(r,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function n(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&n(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,r="undefined"!=typeof e.closed?e.closed:!1,n=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=r,a.maxMarkers=n,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){{var e=this.points[n],a=this.spheres[n],s=0===n?r:n-1,l=n===r?0:n+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[n],p=this.boxes[s];this.boxes[n],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var n=0;n0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5); -e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),r=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(r);var n=function(){r.material.color.setHex(5592405)},a=function(){r.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),r=t.clone().unproject(s.camera),n=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(n,r),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,r).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=r;r++){var n=2*Math.PI*r/o,a=3*Math.cos(n),l=3*Math.sin(n);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,r=0;rt;t++)r.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function r(){}function n(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?n[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ac)&&(r=l,n=c)}}return r?r.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var r=[],n=0;n=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",r,!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var r=0;rH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var r=0;r0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),r=0;r0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],D=L[3*P.pIndex+2],N=new THREE.Vector3(G,W,D);N.applyMatrix4(this.matrixWorld),A[B]=N}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xr?-1:r>n?1:0};t.sort(r);for(var n=[],a=0;a0&&(l+=1,d=n.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&n.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?n.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++; +e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),r=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(r);var n=function(){r.material.color.setHex(5592405)},a=function(){r.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),r=t.clone().unproject(s.camera),n=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(n,r),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,r).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=r;r++){var n=2*Math.PI*r/o,a=3*Math.cos(n),l=3*Math.sin(n);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,r=0;rt;t++)r.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function r(){}function n(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?n[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ac)&&(r=l,n=c)}}return r?r.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var r=[],n=0;n=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",r,!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var r=0;rH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var r=0;r0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),r=0;r0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xr?-1:r>n?1:0};t.sort(r);for(var n=[],a=0;a0&&(l+=1,d=n.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&n.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?n.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++; var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),r=e.byteLength/17,n=new Float32Array(3*r),a=new Float32Array(3*r),s=new Uint32Array(r),l=0;r>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;n[3*l+0]=d,n[3*l+1]=c,n[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(n,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*r),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=r}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),r=new Potree.PointCloudArena4DGeometry;r.url=e,r.name=o.Name,r.provider=o.Provider,r.numNodes=o.Nodes,r.numPoints=o.Points,r.version=o.Version,r.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(r.spacing=o.Spacing);var n=r.boundingBox.min.clone().multiplyScalar(-1);r.boundingBox.min.add(n),r.boundingBox.max.add(n),r.offset=n;var a=r.boundingBox.center(),s=r.boundingBox.size().length()/2;r.boundingSphere=new THREE.Sphere(a,s),r.loadHierarchy(),t(r)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,r=new DataView(e),n=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=r.getUint8(3*l+0,!0),c=(r.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=n.length,s=Math.max(s,v.level),n.length>0){var g=n[n.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,n.push(v),v.isLeaf)for(var P=!1;!P&&n.length>0;){n.pop();var R=n[n.length-1];P=n.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file diff --git a/build/shaders/shaders.js b/build/shaders/shaders.js index f6e2a748e5..b06b4c4996 100644 --- a/build/shaders/shaders.js +++ b/build/shaders/shaders.js @@ -651,17 +651,13 @@ Potree.Shaders["edl.vs"] = [ "", "", "varying vec2 vUv;", - "varying vec3 vViewRay;", "", "void main() {", " vUv = uv;", " ", " vec4 mvPosition = modelViewMatrix * vec4(position,1.0);", - " vViewRay = mvPosition.xyz;", "", " gl_Position = projectionMatrix * mvPosition;", - " ", - " ", "}", ].join("\n"); @@ -682,15 +678,13 @@ Potree.Shaders["edl.fs"] = [ "uniform float far;", "uniform vec2 neighbours[NEIGHBOUR_COUNT];", "uniform vec3 lightDir;", - "uniform float zoom;", - "uniform float pixScale;", "uniform float expScale;", + "uniform float radius;", "", "//uniform sampler2D depthMap;", "uniform sampler2D colorMap;", "", "varying vec2 vUv;", - "varying vec3 vViewRay;", "", "/**", " * transform linear depth to [0,1] interval with 1 beeing closest to the camera.", @@ -717,13 +711,14 @@ Potree.Shaders["edl.fs"] = [ " return max(0.0, z) / dist;", "}", "", - "float computeObscurance(float linearDepth, float scale){", - " vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) );", + "float computeObscurance(float linearDepth){", + " vec4 P = vec4(0, 0, 1, -ztransform(linearDepth));", + " vec2 uvRadius = radius / vec2(screenWidth, screenHeight);", " ", " float sum = 0.0;", " ", " for(int c = 0; c < NEIGHBOUR_COUNT; c++){", - " vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c];", + " vec2 N_rel_pos = uvRadius * neighbours[c];", " vec2 N_abs_pos = vUv + N_rel_pos;", " ", " float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a);", @@ -742,7 +737,7 @@ Potree.Shaders["edl.fs"] = [ "void main(){", " float linearDepth = logToLinear(texture2D(colorMap, vUv).a);", " ", - " float f = computeObscurance(linearDepth, pixScale);", + " float f = computeObscurance(linearDepth);", " f = exp(-expScale * f);", " ", " vec4 color = texture2D(colorMap, vUv);", diff --git a/src/PointCloudOctree.js b/src/PointCloudOctree.js index e5527c62da..6712a25023 100644 --- a/src/PointCloudOctree.js +++ b/src/PointCloudOctree.js @@ -1070,6 +1070,11 @@ Potree.PointCloudOctree.prototype.pick = function(renderer, camera, ray, params) } renderer.renderBufferDirect(camera, [], null, material, geometry, object); + + var program = material.program.program; + _gl.useProgram( program ); + var attributePointer = _gl.getAttribLocation(program, "indices"); + _gl.disableVertexAttribArray( attributePointer ); } var pixelCount = pickWindowSize * pickWindowSize; diff --git a/src/materials/EyeDomeLightingMaterial.js b/src/materials/EyeDomeLightingMaterial.js index 2cce9c02fb..93ce1f3380 100644 --- a/src/materials/EyeDomeLightingMaterial.js +++ b/src/materials/EyeDomeLightingMaterial.js @@ -38,9 +38,8 @@ Potree.EyeDomeLightingMaterial = function(parameters){ screenHeight: { type: "f", value: 0 }, near: { type: "f", value: 0 }, far: { type: "f", value: 0 }, - pixScale: { type: "f", value: 1.0 }, expScale: { type: "f", value: 100.0 }, - zoom: { type: "f", value: 3.0 }, + radius: { type: "f", value: 3.0 }, lightDir: { type: "v3", value: lightDir }, neighbours: { type: "2fv", value: neighbours }, depthMap: { type: "t", value: null }, diff --git a/src/materials/shaders/edl.fs b/src/materials/shaders/edl.fs index 81a538fa02..dc0f913d0a 100644 --- a/src/materials/shaders/edl.fs +++ b/src/materials/shaders/edl.fs @@ -14,15 +14,13 @@ uniform float near; uniform float far; uniform vec2 neighbours[NEIGHBOUR_COUNT]; uniform vec3 lightDir; -uniform float zoom; -uniform float pixScale; uniform float expScale; +uniform float radius; //uniform sampler2D depthMap; uniform sampler2D colorMap; varying vec2 vUv; -varying vec3 vViewRay; /** * transform linear depth to [0,1] interval with 1 beeing closest to the camera. @@ -49,13 +47,14 @@ float obscurance(float z, float dist){ return max(0.0, z) / dist; } -float computeObscurance(float linearDepth, float scale){ - vec4 P = vec4(lightDir, -dot(lightDir, vec3(0.0, 0.0, ztransform(linearDepth)) ) ); +float computeObscurance(float linearDepth){ + vec4 P = vec4(0, 0, 1, -ztransform(linearDepth)); + vec2 uvRadius = radius / vec2(screenWidth, screenHeight); float sum = 0.0; for(int c = 0; c < NEIGHBOUR_COUNT; c++){ - vec2 N_rel_pos = scale * zoom / vec2(screenWidth, screenHeight) * neighbours[c]; + vec2 N_rel_pos = uvRadius * neighbours[c]; vec2 N_abs_pos = vUv + N_rel_pos; float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a); @@ -74,7 +73,7 @@ float computeObscurance(float linearDepth, float scale){ void main(){ float linearDepth = logToLinear(texture2D(colorMap, vUv).a); - float f = computeObscurance(linearDepth, pixScale); + float f = computeObscurance(linearDepth); f = exp(-expScale * f); vec4 color = texture2D(colorMap, vUv); diff --git a/src/materials/shaders/edl.vs b/src/materials/shaders/edl.vs index 24faa95b26..c9d29137e0 100644 --- a/src/materials/shaders/edl.vs +++ b/src/materials/shaders/edl.vs @@ -1,15 +1,11 @@ varying vec2 vUv; -varying vec3 vViewRay; void main() { vUv = uv; vec4 mvPosition = modelViewMatrix * vec4(position,1.0); - vViewRay = mvPosition.xyz; gl_Position = projectionMatrix * mvPosition; - - } \ No newline at end of file From cdbfda1eea8d2f89e2b34fbddfa3004c94eead5d Mon Sep 17 00:00:00 2001 From: gribbet Date: Tue, 4 Aug 2015 15:39:35 -0700 Subject: [PATCH 18/35] Fix picking for adaptive point sizes --- src/PointCloudOctree.js | 52 +++++++++++++---------------------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/src/PointCloudOctree.js b/src/PointCloudOctree.js index e5527c62da..6ef1e1dbac 100644 --- a/src/PointCloudOctree.js +++ b/src/PointCloudOctree.js @@ -192,20 +192,20 @@ Potree.PointCloudOctree.prototype.updateProfileRequests = function(){ } }; -Potree.PointCloudOctree.prototype.updateMaterial = function(vn, camera, renderer){ - this.material.fov = camera.fov * (Math.PI / 180); - this.material.screenWidth = renderer.domElement.clientWidth; - this.material.screenHeight = renderer.domElement.clientHeight; - this.material.spacing = this.pcoGeometry.spacing; - this.material.near = camera.near; - this.material.far = camera.far; - this.material.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.size().x; - - if(this.material.pointSizeType){ - if(this.material.pointSizeType === Potree.PointSizeType.ADAPTIVE - || this.material.pointColorType === Potree.PointColorType.OCTREE_DEPTH){ +Potree.PointCloudOctree.prototype.updateMaterial = function(material, vn, camera, renderer){ + material.fov = camera.fov * (Math.PI / 180); + material.screenWidth = renderer.domElement.clientWidth; + material.screenHeight = renderer.domElement.clientHeight; + material.spacing = this.pcoGeometry.spacing; + material.near = camera.near; + material.far = camera.far; + material.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.size().x; + + if(material.pointSizeType){ + if(material.pointSizeType === Potree.PointSizeType.ADAPTIVE + || material.pointColorType === Potree.PointColorType.OCTREE_DEPTH){ - this.updateVisibilityTexture(this.material, vn); + this.updateVisibilityTexture(material, vn); } } }; @@ -338,16 +338,7 @@ Potree.PointCloudOctree.prototype.update = function(camera, renderer){ vn.push(this.visibleNodes[i].node); } - // update visibility texture - if(this.material.pointSizeType){ - if(this.material.pointSizeType === Potree.PointSizeType.ADAPTIVE - || this.material.pointColorType === Potree.PointColorType.OCTREE_DEPTH){ - - this.updateVisibilityTexture(this.material, vn); - } - } - - this.updateMaterial(vn, camera, renderer); + this.updateMaterial(this.material, vn, camera, renderer); Potree.PointCloudOctree.lru.freeMemory(); }; @@ -1000,25 +991,14 @@ Potree.PointCloudOctree.prototype.pick = function(renderer, camera, ray, params) if(!this.pickMaterial){ this.pickMaterial = new Potree.PointCloudMaterial(); this.pickMaterial.pointColorType = Potree.PointColorType.POINT_INDEX; - this.pickMaterial.pointSizeType = Potree.PointSizeType.FIXED; } this.pickMaterial.pointSizeType = this.material.pointSizeType; this.pickMaterial.size = this.material.size; - - if(this.pickMaterial.pointSizeType === Potree.PointSizeType.ADAPTIVE){ - this.updateVisibilityTexture(this.pickMaterial, nodes); - } - - this.pickMaterial.fov = this.material.fov; - this.pickMaterial.screenWidth = this.material.screenWidth; - this.pickMaterial.screenHeight = this.material.screenHeight; - this.pickMaterial.spacing = this.material.spacing; - this.pickMaterial.near = this.material.near; - this.pickMaterial.far = this.material.far; this.pickMaterial.pointShape = this.material.pointShape; + this.pickMaterial.interpolate = this.material.interpolate; - + this.updateMaterial(this.pickMaterial, nodes, camera, renderer); var _gl = renderer.context; From d0d51bc6e029c59f59aacfb4ef0da453042fdde9 Mon Sep 17 00:00:00 2001 From: gribbet Date: Tue, 4 Aug 2015 15:40:01 -0700 Subject: [PATCH 19/35] Update build --- build/js/laslaz.min.js | 3 ++- build/js/potree.js | 50 +++++++++++++----------------------------- build/js/potree.min.js | 10 ++++----- 3 files changed, 21 insertions(+), 42 deletions(-) diff --git a/build/js/laslaz.min.js b/build/js/laslaz.min.js index 54e3aec409..6c76c40e10 100644 --- a/build/js/laslaz.min.js +++ b/build/js/laslaz.min.js @@ -1 +1,2 @@ -Potree.workers.laslaz=new Potree.WorkerManager(atob("dmFyIE1vZHVsZTtpZighTW9kdWxlKU1vZHVsZT0odHlwZW9mIE1vZHVsZSE9PSJ1bmRlZmluZWQiP01vZHVsZTpudWxsKXx8e307dmFyIG1vZHVsZU92ZXJyaWRlcz17fTtmb3IodmFyIGtleSBpbiBNb2R1bGUpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKXttb2R1bGVPdmVycmlkZXNba2V5XT1Nb2R1bGVba2V5XX19dmFyIEVOVklST05NRU5UX0lTX05PREU9dHlwZW9mIHByb2Nlc3M9PT0ib2JqZWN0IiYmdHlwZW9mIHJlcXVpcmU9PT0iZnVuY3Rpb24iO3ZhciBFTlZJUk9OTUVOVF9JU19XRUI9dHlwZW9mIHdpbmRvdz09PSJvYmplY3QiO3ZhciBFTlZJUk9OTUVOVF9JU19XT1JLRVI9dHlwZW9mIGltcG9ydFNjcmlwdHM9PT0iZnVuY3Rpb24iO3ZhciBFTlZJUk9OTUVOVF9JU19TSEVMTD0hRU5WSVJPTk1FTlRfSVNfV0VCJiYhRU5WSVJPTk1FTlRfSVNfTk9ERSYmIUVOVklST05NRU5UX0lTX1dPUktFUjtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtpZighTW9kdWxlWyJwcmludCJdKU1vZHVsZVsicHJpbnQiXT1mdW5jdGlvbiBwcmludCh4KXtwcm9jZXNzWyJzdGRvdXQiXS53cml0ZSh4KyJcbiIpfTtpZighTW9kdWxlWyJwcmludEVyciJdKU1vZHVsZVsicHJpbnRFcnIiXT1mdW5jdGlvbiBwcmludEVycih4KXtwcm9jZXNzWyJzdGRlcnIiXS53cml0ZSh4KyJcbiIpfTt2YXIgbm9kZUZTPXJlcXVpcmUoImZzIik7dmFyIG5vZGVQYXRoPXJlcXVpcmUoInBhdGgiKTtNb2R1bGVbInJlYWQiXT1mdW5jdGlvbiByZWFkKGZpbGVuYW1lLGJpbmFyeSl7ZmlsZW5hbWU9bm9kZVBhdGhbIm5vcm1hbGl6ZSJdKGZpbGVuYW1lKTt2YXIgcmV0PW5vZGVGU1sicmVhZEZpbGVTeW5jIl0oZmlsZW5hbWUpO2lmKCFyZXQmJmZpbGVuYW1lIT1ub2RlUGF0aFsicmVzb2x2ZSJdKGZpbGVuYW1lKSl7ZmlsZW5hbWU9cGF0aC5qb2luKF9fZGlybmFtZSwiLi4iLCJzcmMiLGZpbGVuYW1lKTtyZXQ9bm9kZUZTWyJyZWFkRmlsZVN5bmMiXShmaWxlbmFtZSl9aWYocmV0JiYhYmluYXJ5KXJldD1yZXQudG9TdHJpbmcoKTtyZXR1cm4gcmV0fTtNb2R1bGVbInJlYWRCaW5hcnkiXT1mdW5jdGlvbiByZWFkQmluYXJ5KGZpbGVuYW1lKXtyZXR1cm4gTW9kdWxlWyJyZWFkIl0oZmlsZW5hbWUsdHJ1ZSl9O01vZHVsZVsibG9hZCJdPWZ1bmN0aW9uIGxvYWQoZil7Z2xvYmFsRXZhbChyZWFkKGYpKX07TW9kdWxlWyJhcmd1bWVudHMiXT1wcm9jZXNzWyJhcmd2Il0uc2xpY2UoMik7bW9kdWxlWyJleHBvcnRzIl09TW9kdWxlfWVsc2UgaWYoRU5WSVJPTk1FTlRfSVNfU0hFTEwpe2lmKCFNb2R1bGVbInByaW50Il0pTW9kdWxlWyJwcmludCJdPXByaW50O2lmKHR5cGVvZiBwcmludEVyciE9InVuZGVmaW5lZCIpTW9kdWxlWyJwcmludEVyciJdPXByaW50RXJyO2lmKHR5cGVvZiByZWFkIT0idW5kZWZpbmVkIil7TW9kdWxlWyJyZWFkIl09cmVhZH1lbHNle01vZHVsZVsicmVhZCJdPWZ1bmN0aW9uIHJlYWQoKXt0aHJvdyJubyByZWFkKCkgYXZhaWxhYmxlIChqc2M/KSJ9fU1vZHVsZVsicmVhZEJpbmFyeSJdPWZ1bmN0aW9uIHJlYWRCaW5hcnkoZil7cmV0dXJuIHJlYWQoZiwiYmluYXJ5Iil9O2lmKHR5cGVvZiBzY3JpcHRBcmdzIT0idW5kZWZpbmVkIil7TW9kdWxlWyJhcmd1bWVudHMiXT1zY3JpcHRBcmdzfWVsc2UgaWYodHlwZW9mIGFyZ3VtZW50cyE9InVuZGVmaW5lZCIpe01vZHVsZVsiYXJndW1lbnRzIl09YXJndW1lbnRzfXRoaXNbIk1vZHVsZSJdPU1vZHVsZTtldmFsKCJpZiAodHlwZW9mIGdjID09PSAnZnVuY3Rpb24nICYmIGdjLnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlXScpID4gMCkgdmFyIGdjID0gdW5kZWZpbmVkIil9ZWxzZSBpZihFTlZJUk9OTUVOVF9JU19XRUJ8fEVOVklST05NRU5UX0lTX1dPUktFUil7TW9kdWxlWyJyZWFkIl09ZnVuY3Rpb24gcmVhZCh1cmwpe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7eGhyLnNlbmQobnVsbCk7cmV0dXJuIHhoci5yZXNwb25zZVRleHR9O2lmKHR5cGVvZiBhcmd1bWVudHMhPSJ1bmRlZmluZWQiKXtNb2R1bGVbImFyZ3VtZW50cyJdPWFyZ3VtZW50c31pZih0eXBlb2YgY29uc29sZSE9PSJ1bmRlZmluZWQiKXtpZighTW9kdWxlWyJwcmludCJdKU1vZHVsZVsicHJpbnQiXT1mdW5jdGlvbiBwcmludCh4KXt9O2lmKCFNb2R1bGVbInByaW50RXJyIl0pTW9kdWxlWyJwcmludEVyciJdPWZ1bmN0aW9uIHByaW50RXJyKHgpe319ZWxzZXt2YXIgVFJZX1VTRV9EVU1QPWZhbHNlO2lmKCFNb2R1bGVbInByaW50Il0pTW9kdWxlWyJwcmludCJdPVRSWV9VU0VfRFVNUCYmdHlwZW9mIGR1bXAhPT0idW5kZWZpbmVkIj8oZnVuY3Rpb24oeCl7ZHVtcCh4KX0pOihmdW5jdGlvbih4KXt9KX1pZihFTlZJUk9OTUVOVF9JU19XRUIpe3dpbmRvd1siTW9kdWxlIl09TW9kdWxlfWVsc2V7TW9kdWxlWyJsb2FkIl09aW1wb3J0U2NyaXB0c319ZWxzZXt0aHJvdyJVbmtub3duIHJ1bnRpbWUgZW52aXJvbm1lbnQuIFdoZXJlIGFyZSB3ZT8ifWZ1bmN0aW9uIGdsb2JhbEV2YWwoeCl7ZXZhbC5jYWxsKG51bGwseCl9aWYoIU1vZHVsZVsibG9hZCJdPT0idW5kZWZpbmVkIiYmTW9kdWxlWyJyZWFkIl0pe01vZHVsZVsibG9hZCJdPWZ1bmN0aW9uIGxvYWQoZil7Z2xvYmFsRXZhbChNb2R1bGVbInJlYWQiXShmKSl9fWlmKCFNb2R1bGVbInByaW50Il0pe01vZHVsZVsicHJpbnQiXT0oZnVuY3Rpb24oKXt9KX1pZighTW9kdWxlWyJwcmludEVyciJdKXtNb2R1bGVbInByaW50RXJyIl09TW9kdWxlWyJwcmludCJdfWlmKCFNb2R1bGVbImFyZ3VtZW50cyJdKXtNb2R1bGVbImFyZ3VtZW50cyJdPVtdfU1vZHVsZS5wcmludD1Nb2R1bGVbInByaW50Il07TW9kdWxlLnByaW50RXJyPU1vZHVsZVsicHJpbnRFcnIiXTtNb2R1bGVbInByZVJ1biJdPVtdO01vZHVsZVsicG9zdFJ1biJdPVtdO2Zvcih2YXIga2V5IGluIG1vZHVsZU92ZXJyaWRlcyl7aWYobW9kdWxlT3ZlcnJpZGVzLmhhc093blByb3BlcnR5KGtleSkpe01vZHVsZVtrZXldPW1vZHVsZU92ZXJyaWRlc1trZXldfX12YXIgUnVudGltZT17c2V0VGVtcFJldDA6KGZ1bmN0aW9uKHZhbHVlKXt0ZW1wUmV0MD12YWx1ZX0pLGdldFRlbXBSZXQwOihmdW5jdGlvbigpe3JldHVybiB0ZW1wUmV0MH0pLHN0YWNrU2F2ZTooZnVuY3Rpb24oKXtyZXR1cm4gU1RBQ0tUT1B9KSxzdGFja1Jlc3RvcmU6KGZ1bmN0aW9uKHN0YWNrVG9wKXtTVEFDS1RPUD1zdGFja1RvcH0pLGZvcmNlQWxpZ246KGZ1bmN0aW9uKHRhcmdldCxxdWFudHVtKXtxdWFudHVtPXF1YW50dW18fDQ7aWYocXVhbnR1bT09MSlyZXR1cm4gdGFyZ2V0O2lmKGlzTnVtYmVyKHRhcmdldCkmJmlzTnVtYmVyKHF1YW50dW0pKXtyZXR1cm4gTWF0aC5jZWlsKHRhcmdldC9xdWFudHVtKSpxdWFudHVtfWVsc2UgaWYoaXNOdW1iZXIocXVhbnR1bSkmJmlzUG93ZXJPZlR3byhxdWFudHVtKSl7cmV0dXJuIigoKCIrdGFyZ2V0KyIpKyIrKHF1YW50dW0tMSkrIikmIisgLXF1YW50dW0rIikifXJldHVybiJNYXRoLmNlaWwoKCIrdGFyZ2V0KyIpLyIrcXVhbnR1bSsiKSoiK3F1YW50dW19KSxpc051bWJlclR5cGU6KGZ1bmN0aW9uKHR5cGUpe3JldHVybiB0eXBlIGluIFJ1bnRpbWUuSU5UX1RZUEVTfHx0eXBlIGluIFJ1bnRpbWUuRkxPQVRfVFlQRVN9KSxpc1BvaW50ZXJUeXBlOmZ1bmN0aW9uIGlzUG9pbnRlclR5cGUodHlwZSl7cmV0dXJuIHR5cGVbdHlwZS5sZW5ndGgtMV09PSIqIn0saXNTdHJ1Y3RUeXBlOmZ1bmN0aW9uIGlzU3RydWN0VHlwZSh0eXBlKXtpZihpc1BvaW50ZXJUeXBlKHR5cGUpKXJldHVybiBmYWxzZTtpZihpc0FycmF5VHlwZSh0eXBlKSlyZXR1cm4gdHJ1ZTtpZigvPD9ceyA/W159XSogP1x9Pj8vLnRlc3QodHlwZSkpcmV0dXJuIHRydWU7cmV0dXJuIHR5cGVbMF09PSIlIn0sSU5UX1RZUEVTOnsiaTEiOjAsImk4IjowLCJpMTYiOjAsImkzMiI6MCwiaTY0IjowfSxGTE9BVF9UWVBFUzp7ImZsb2F0IjowLCJkb3VibGUiOjB9LG9yNjQ6KGZ1bmN0aW9uKHgseSl7dmFyIGw9eHwwfCh5fDApO3ZhciBoPShNYXRoLnJvdW5kKHgvNDI5NDk2NzI5Nil8TWF0aC5yb3VuZCh5LzQyOTQ5NjcyOTYpKSo0Mjk0OTY3Mjk2O3JldHVybiBsK2h9KSxhbmQ2NDooZnVuY3Rpb24oeCx5KXt2YXIgbD0oeHwwKSYoeXwwKTt2YXIgaD0oTWF0aC5yb3VuZCh4LzQyOTQ5NjcyOTYpJk1hdGgucm91bmQoeS80Mjk0OTY3Mjk2KSkqNDI5NDk2NzI5NjtyZXR1cm4gbCtofSkseG9yNjQ6KGZ1bmN0aW9uKHgseSl7dmFyIGw9KHh8MCleKHl8MCk7dmFyIGg9KE1hdGgucm91bmQoeC80Mjk0OTY3Mjk2KV5NYXRoLnJvdW5kKHkvNDI5NDk2NzI5NikpKjQyOTQ5NjcyOTY7cmV0dXJuIGwraH0pLGdldE5hdGl2ZVR5cGVTaXplOihmdW5jdGlvbih0eXBlKXtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6Y2FzZSJpOCI6cmV0dXJuIDE7Y2FzZSJpMTYiOnJldHVybiAyO2Nhc2UiaTMyIjpyZXR1cm4gNDtjYXNlImk2NCI6cmV0dXJuIDg7Y2FzZSJmbG9hdCI6cmV0dXJuIDQ7Y2FzZSJkb3VibGUiOnJldHVybiA4O2RlZmF1bHQ6e2lmKHR5cGVbdHlwZS5sZW5ndGgtMV09PT0iKiIpe3JldHVybiBSdW50aW1lLlFVQU5UVU1fU0laRX1lbHNlIGlmKHR5cGVbMF09PT0iaSIpe3ZhciBiaXRzPXBhcnNlSW50KHR5cGUuc3Vic3RyKDEpKTthc3NlcnQoYml0cyU4PT09MCk7cmV0dXJuIGJpdHMvOH1lbHNle3JldHVybiAwfX19fSksZ2V0TmF0aXZlRmllbGRTaXplOihmdW5jdGlvbih0eXBlKXtyZXR1cm4gTWF0aC5tYXgoUnVudGltZS5nZXROYXRpdmVUeXBlU2l6ZSh0eXBlKSxSdW50aW1lLlFVQU5UVU1fU0laRSl9KSxkZWR1cDpmdW5jdGlvbiBkZWR1cChpdGVtcyxpZGVudCl7dmFyIHNlZW49e307aWYoaWRlbnQpe3JldHVybiBpdGVtcy5maWx0ZXIoKGZ1bmN0aW9uKGl0ZW0pe2lmKHNlZW5baXRlbVtpZGVudF1dKXJldHVybiBmYWxzZTtzZWVuW2l0ZW1baWRlbnRdXT10cnVlO3JldHVybiB0cnVlfSkpfWVsc2V7cmV0dXJuIGl0ZW1zLmZpbHRlcigoZnVuY3Rpb24oaXRlbSl7aWYoc2VlbltpdGVtXSlyZXR1cm4gZmFsc2U7c2VlbltpdGVtXT10cnVlO3JldHVybiB0cnVlfSkpfX0sc2V0OmZ1bmN0aW9uIHNldCgpe3ZhciBhcmdzPXR5cGVvZiBhcmd1bWVudHNbMF09PT0ib2JqZWN0Ij9hcmd1bWVudHNbMF06YXJndW1lbnRzO3ZhciByZXQ9e307Zm9yKHZhciBpPTA7aTxhcmdzLmxlbmd0aDtpKyspe3JldFthcmdzW2ldXT0wfXJldHVybiByZXR9LFNUQUNLX0FMSUdOOjgsZ2V0QWxpZ25TaXplOihmdW5jdGlvbih0eXBlLHNpemUsdmFyYXJnKXtpZighdmFyYXJnJiYodHlwZT09Imk2NCJ8fHR5cGU9PSJkb3VibGUiKSlyZXR1cm4gODtpZighdHlwZSlyZXR1cm4gTWF0aC5taW4oc2l6ZSw4KTtyZXR1cm4gTWF0aC5taW4oc2l6ZXx8KHR5cGU/UnVudGltZS5nZXROYXRpdmVGaWVsZFNpemUodHlwZSk6MCksUnVudGltZS5RVUFOVFVNX1NJWkUpfSksY2FsY3VsYXRlU3RydWN0QWxpZ25tZW50OmZ1bmN0aW9uIGNhbGN1bGF0ZVN0cnVjdEFsaWdubWVudCh0eXBlKXt0eXBlLmZsYXRTaXplPTA7dHlwZS5hbGlnblNpemU9MDt2YXIgZGlmZnM9W107dmFyIHByZXY9LTE7dmFyIGluZGV4PTA7dHlwZS5mbGF0SW5kZXhlcz10eXBlLmZpZWxkcy5tYXAoKGZ1bmN0aW9uKGZpZWxkKXtpbmRleCsrO3ZhciBzaXplLGFsaWduU2l6ZTtpZihSdW50aW1lLmlzTnVtYmVyVHlwZShmaWVsZCl8fFJ1bnRpbWUuaXNQb2ludGVyVHlwZShmaWVsZCkpe3NpemU9UnVudGltZS5nZXROYXRpdmVUeXBlU2l6ZShmaWVsZCk7YWxpZ25TaXplPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKGZpZWxkLHNpemUpfWVsc2UgaWYoUnVudGltZS5pc1N0cnVjdFR5cGUoZmllbGQpKXtpZihmaWVsZFsxXT09PSIwIil7c2l6ZT0wO2lmKFR5cGVzLnR5cGVzW2ZpZWxkXSl7YWxpZ25TaXplPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKG51bGwsVHlwZXMudHlwZXNbZmllbGRdLmFsaWduU2l6ZSl9ZWxzZXthbGlnblNpemU9dHlwZS5hbGlnblNpemV8fFFVQU5UVU1fU0laRX19ZWxzZXtzaXplPVR5cGVzLnR5cGVzW2ZpZWxkXS5mbGF0U2l6ZTthbGlnblNpemU9UnVudGltZS5nZXRBbGlnblNpemUobnVsbCxUeXBlcy50eXBlc1tmaWVsZF0uYWxpZ25TaXplKX19ZWxzZSBpZihmaWVsZFswXT09ImIiKXtzaXplPWZpZWxkLnN1YnN0cigxKXwwO2FsaWduU2l6ZT0xfWVsc2UgaWYoZmllbGRbMF09PT0iPCIpe3NpemU9YWxpZ25TaXplPVR5cGVzLnR5cGVzW2ZpZWxkXS5mbGF0U2l6ZX1lbHNlIGlmKGZpZWxkWzBdPT09ImkiKXtzaXplPWFsaWduU2l6ZT1wYXJzZUludChmaWVsZC5zdWJzdHIoMSkpLzg7YXNzZXJ0KHNpemUlMT09PTAsImNhbm5vdCBoYW5kbGUgbm9uLWJ5dGUtc2l6ZSBmaWVsZCAiK2ZpZWxkKX1lbHNle2Fzc2VydChmYWxzZSwiaW52YWxpZCB0eXBlIGZvciBjYWxjdWxhdGVTdHJ1Y3RBbGlnbm1lbnQiKX1pZih0eXBlLnBhY2tlZClhbGlnblNpemU9MTt0eXBlLmFsaWduU2l6ZT1NYXRoLm1heCh0eXBlLmFsaWduU2l6ZSxhbGlnblNpemUpO3ZhciBjdXJyPVJ1bnRpbWUuYWxpZ25NZW1vcnkodHlwZS5mbGF0U2l6ZSxhbGlnblNpemUpO3R5cGUuZmxhdFNpemU9Y3VycitzaXplO2lmKHByZXY+PTApe2RpZmZzLnB1c2goY3Vyci1wcmV2KX1wcmV2PWN1cnI7cmV0dXJuIGN1cnJ9KSk7aWYodHlwZS5uYW1lXyYmdHlwZS5uYW1lX1swXT09PSJbIil7dHlwZS5mbGF0U2l6ZT1wYXJzZUludCh0eXBlLm5hbWVfLnN1YnN0cigxKSkqdHlwZS5mbGF0U2l6ZS8yfXR5cGUuZmxhdFNpemU9UnVudGltZS5hbGlnbk1lbW9yeSh0eXBlLmZsYXRTaXplLHR5cGUuYWxpZ25TaXplKTtpZihkaWZmcy5sZW5ndGg9PTApe3R5cGUuZmxhdEZhY3Rvcj10eXBlLmZsYXRTaXplfWVsc2UgaWYoUnVudGltZS5kZWR1cChkaWZmcykubGVuZ3RoPT0xKXt0eXBlLmZsYXRGYWN0b3I9ZGlmZnNbMF19dHlwZS5uZWVkc0ZsYXR0ZW5pbmc9dHlwZS5mbGF0RmFjdG9yIT0xO3JldHVybiB0eXBlLmZsYXRJbmRleGVzfSxnZW5lcmF0ZVN0cnVjdEluZm86KGZ1bmN0aW9uKHN0cnVjdCx0eXBlTmFtZSxvZmZzZXQpe3ZhciB0eXBlLGFsaWdubWVudDtpZih0eXBlTmFtZSl7b2Zmc2V0PW9mZnNldHx8MDt0eXBlPSh0eXBlb2YgVHlwZXM9PT0idW5kZWZpbmVkIj9SdW50aW1lLnR5cGVJbmZvOlR5cGVzLnR5cGVzKVt0eXBlTmFtZV07aWYoIXR5cGUpcmV0dXJuIG51bGw7aWYodHlwZS5maWVsZHMubGVuZ3RoIT1zdHJ1Y3QubGVuZ3RoKXtwcmludEVycigiTnVtYmVyIG9mIG5hbWVkIGZpZWxkcyBtdXN0IG1hdGNoIHRoZSB0eXBlIGZvciAiK3R5cGVOYW1lKyI6IHBvc3NpYmx5IGR1cGxpY2F0ZSBzdHJ1Y3QgbmFtZXMuIENhbm5vdCByZXR1cm4gc3RydWN0SW5mbyIpO3JldHVybiBudWxsfWFsaWdubWVudD10eXBlLmZsYXRJbmRleGVzfWVsc2V7dmFyIHR5cGU9e2ZpZWxkczpzdHJ1Y3QubWFwKChmdW5jdGlvbihpdGVtKXtyZXR1cm4gaXRlbVswXX0pKX07YWxpZ25tZW50PVJ1bnRpbWUuY2FsY3VsYXRlU3RydWN0QWxpZ25tZW50KHR5cGUpfXZhciByZXQ9e19fc2l6ZV9fOnR5cGUuZmxhdFNpemV9O2lmKHR5cGVOYW1lKXtzdHJ1Y3QuZm9yRWFjaCgoZnVuY3Rpb24oaXRlbSxpKXtpZih0eXBlb2YgaXRlbT09PSJzdHJpbmciKXtyZXRbaXRlbV09YWxpZ25tZW50W2ldK29mZnNldH1lbHNle3ZhciBrZXk7Zm9yKHZhciBrIGluIGl0ZW0pa2V5PWs7cmV0W2tleV09UnVudGltZS5nZW5lcmF0ZVN0cnVjdEluZm8oaXRlbVtrZXldLHR5cGUuZmllbGRzW2ldLGFsaWdubWVudFtpXSl9fSkpfWVsc2V7c3RydWN0LmZvckVhY2goKGZ1bmN0aW9uKGl0ZW0saSl7cmV0W2l0ZW1bMV1dPWFsaWdubWVudFtpXX0pKX1yZXR1cm4gcmV0fSksZHluQ2FsbDooZnVuY3Rpb24oc2lnLHB0cixhcmdzKXtpZihhcmdzJiZhcmdzLmxlbmd0aCl7aWYoIWFyZ3Muc3BsaWNlKWFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7YXJncy5zcGxpY2UoMCwwLHB0cik7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF8iK3NpZ10uYXBwbHkobnVsbCxhcmdzKX1lbHNle3JldHVybiBNb2R1bGVbImR5bkNhbGxfIitzaWddLmNhbGwobnVsbCxwdHIpfX0pLGZ1bmN0aW9uUG9pbnRlcnM6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGFkZEZ1bmN0aW9uOihmdW5jdGlvbihmdW5jKXtmb3IodmFyIGk9MDtpPFJ1bnRpbWUuZnVuY3Rpb25Qb2ludGVycy5sZW5ndGg7aSsrKXtpZighUnVudGltZS5mdW5jdGlvblBvaW50ZXJzW2ldKXtSdW50aW1lLmZ1bmN0aW9uUG9pbnRlcnNbaV09ZnVuYztyZXR1cm4gMiooMStpKX19dGhyb3ciRmluaXNoZWQgdXAgYWxsIHJlc2VydmVkIGZ1bmN0aW9uIHBvaW50ZXJzLiBVc2UgYSBoaWdoZXIgdmFsdWUgZm9yIFJFU0VSVkVEX0ZVTkNUSU9OX1BPSU5URVJTLiJ9KSxyZW1vdmVGdW5jdGlvbjooZnVuY3Rpb24oaW5kZXgpe1J1bnRpbWUuZnVuY3Rpb25Qb2ludGVyc1soaW5kZXgtMikvMl09bnVsbH0pLGdldEFzbUNvbnN0OihmdW5jdGlvbihjb2RlLG51bUFyZ3Mpe2lmKCFSdW50aW1lLmFzbUNvbnN0Q2FjaGUpUnVudGltZS5hc21Db25zdENhY2hlPXt9O3ZhciBmdW5jPVJ1bnRpbWUuYXNtQ29uc3RDYWNoZVtjb2RlXTtpZihmdW5jKXJldHVybiBmdW5jO3ZhciBhcmdzPVtdO2Zvcih2YXIgaT0wO2k8bnVtQXJncztpKyspe2FyZ3MucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDM2KStpKX12YXIgc291cmNlPVBvaW50ZXJfc3RyaW5naWZ5KGNvZGUpO2lmKHNvdXJjZVswXT09PSciJyl7aWYoc291cmNlLmluZGV4T2YoJyInLDEpPT09c291cmNlLmxlbmd0aC0xKXtzb3VyY2U9c291cmNlLnN1YnN0cigxLHNvdXJjZS5sZW5ndGgtMil9ZWxzZXthYm9ydCgiaW52YWxpZCBFTV9BU00gaW5wdXQgfCIrc291cmNlKyJ8LiBQbGVhc2UgdXNlIEVNX0FTTSguLmNvZGUuLikgKG5vIHF1b3Rlcykgb3IgRU1fQVNNKHsgLi5jb2RlKCQwKS4uIH0sIGlucHV0KSAodG8gaW5wdXQgdmFsdWVzKSIpfX10cnl7dmFyIGV2YWxsZWQ9ZXZhbCgiKGZ1bmN0aW9uKCIrYXJncy5qb2luKCIsIikrIil7ICIrc291cmNlKyIgfSkiKX1jYXRjaChlKXtNb2R1bGUucHJpbnRFcnIoImVycm9yIGluIGV4ZWN1dGluZyBpbmxpbmUgRU1fQVNNIGNvZGU6ICIrZSsiIG9uOiBcblxuIitzb3VyY2UrIlxuXG53aXRoIGFyZ3MgfCIrYXJncysifCAobWFrZSBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgb25lIG91dCBvZiBFTV9BU00sIEVNX0FTTV9BUkdTLCBldGMuKSIpO3Rocm93IGV9cmV0dXJuIFJ1bnRpbWUuYXNtQ29uc3RDYWNoZVtjb2RlXT1ldmFsbGVkfSksd2Fybk9uY2U6KGZ1bmN0aW9uKHRleHQpe2lmKCFSdW50aW1lLndhcm5PbmNlLnNob3duKVJ1bnRpbWUud2Fybk9uY2Uuc2hvd249e307aWYoIVJ1bnRpbWUud2Fybk9uY2Uuc2hvd25bdGV4dF0pe1J1bnRpbWUud2Fybk9uY2Uuc2hvd25bdGV4dF09MTtNb2R1bGUucHJpbnRFcnIodGV4dCl9fSksZnVuY1dyYXBwZXJzOnt9LGdldEZ1bmNXcmFwcGVyOihmdW5jdGlvbihmdW5jLHNpZyl7YXNzZXJ0KHNpZyk7aWYoIVJ1bnRpbWUuZnVuY1dyYXBwZXJzW2Z1bmNdKXtSdW50aW1lLmZ1bmNXcmFwcGVyc1tmdW5jXT1mdW5jdGlvbiBkeW5DYWxsX3dyYXBwZXIoKXtyZXR1cm4gUnVudGltZS5keW5DYWxsKHNpZyxmdW5jLGFyZ3VtZW50cyl9fXJldHVybiBSdW50aW1lLmZ1bmNXcmFwcGVyc1tmdW5jXX0pLFVURjhQcm9jZXNzb3I6KGZ1bmN0aW9uKCl7dmFyIGJ1ZmZlcj1bXTt2YXIgbmVlZGVkPTA7dGhpcy5wcm9jZXNzQ0NoYXI9KGZ1bmN0aW9uKGNvZGUpe2NvZGU9Y29kZSYyNTU7aWYoYnVmZmVyLmxlbmd0aD09MCl7aWYoKGNvZGUmMTI4KT09MCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSl9YnVmZmVyLnB1c2goY29kZSk7aWYoKGNvZGUmMjI0KT09MTkyKXtuZWVkZWQ9MX1lbHNlIGlmKChjb2RlJjI0MCk9PTIyNCl7bmVlZGVkPTJ9ZWxzZXtuZWVkZWQ9M31yZXR1cm4iIn1pZihuZWVkZWQpe2J1ZmZlci5wdXNoKGNvZGUpO25lZWRlZC0tO2lmKG5lZWRlZD4wKXJldHVybiIifXZhciBjMT1idWZmZXJbMF07dmFyIGMyPWJ1ZmZlclsxXTt2YXIgYzM9YnVmZmVyWzJdO3ZhciBjND1idWZmZXJbM107dmFyIHJldDtpZihidWZmZXIubGVuZ3RoPT0yKXtyZXQ9U3RyaW5nLmZyb21DaGFyQ29kZSgoYzEmMzEpPDw2fGMyJjYzKX1lbHNlIGlmKGJ1ZmZlci5sZW5ndGg9PTMpe3JldD1TdHJpbmcuZnJvbUNoYXJDb2RlKChjMSYxNSk8PDEyfChjMiY2Myk8PDZ8YzMmNjMpfWVsc2V7dmFyIGNvZGVQb2ludD0oYzEmNyk8PDE4fChjMiY2Myk8PDEyfChjMyY2Myk8PDZ8YzQmNjM7cmV0PVN0cmluZy5mcm9tQ2hhckNvZGUoTWF0aC5mbG9vcigoY29kZVBvaW50LTY1NTM2KS8xMDI0KSs1NTI5NiwoY29kZVBvaW50LTY1NTM2KSUxMDI0KzU2MzIwKX1idWZmZXIubGVuZ3RoPTA7cmV0dXJuIHJldH0pO3RoaXMucHJvY2Vzc0pTU3RyaW5nPWZ1bmN0aW9uIHByb2Nlc3NKU1N0cmluZyhzdHJpbmcpe3N0cmluZz11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKSk7dmFyIHJldD1bXTtmb3IodmFyIGk9MDtpPHN0cmluZy5sZW5ndGg7aSsrKXtyZXQucHVzaChzdHJpbmcuY2hhckNvZGVBdChpKSl9cmV0dXJuIHJldH19KSxnZXRDb21waWxlclNldHRpbmc6KGZ1bmN0aW9uKG5hbWUpe3Rocm93IllvdSBtdXN0IGJ1aWxkIHdpdGggLXMgUkVUQUlOX0NPTVBJTEVSX1NFVFRJTkdTPTEgZm9yIFJ1bnRpbWUuZ2V0Q29tcGlsZXJTZXR0aW5nIG9yIGVtc2NyaXB0ZW5fZ2V0X2NvbXBpbGVyX3NldHRpbmcgdG8gd29yayJ9KSxzdGFja0FsbG9jOihmdW5jdGlvbihzaXplKXt2YXIgcmV0PVNUQUNLVE9QO1NUQUNLVE9QPVNUQUNLVE9QK3NpemV8MDtTVEFDS1RPUD1TVEFDS1RPUCs3Ji04O3JldHVybiByZXR9KSxzdGF0aWNBbGxvYzooZnVuY3Rpb24oc2l6ZSl7dmFyIHJldD1TVEFUSUNUT1A7U1RBVElDVE9QPVNUQVRJQ1RPUCtzaXplfDA7U1RBVElDVE9QPVNUQVRJQ1RPUCs3Ji04O3JldHVybiByZXR9KSxkeW5hbWljQWxsb2M6KGZ1bmN0aW9uKHNpemUpe3ZhciByZXQ9RFlOQU1JQ1RPUDtEWU5BTUlDVE9QPURZTkFNSUNUT1Arc2l6ZXwwO0RZTkFNSUNUT1A9RFlOQU1JQ1RPUCs3Ji04O2lmKERZTkFNSUNUT1A+PVRPVEFMX01FTU9SWSllbmxhcmdlTWVtb3J5KCk7cmV0dXJuIHJldH0pLGFsaWduTWVtb3J5OihmdW5jdGlvbihzaXplLHF1YW50dW0pe3ZhciByZXQ9c2l6ZT1NYXRoLmNlaWwoc2l6ZS8ocXVhbnR1bT9xdWFudHVtOjgpKSoocXVhbnR1bT9xdWFudHVtOjgpO3JldHVybiByZXR9KSxtYWtlQmlnSW50OihmdW5jdGlvbihsb3csaGlnaCx1bnNpZ25lZCl7dmFyIHJldD11bnNpZ25lZD8rKGxvdz4+PjApKyArKGhpZ2g+Pj4wKSorNDI5NDk2NzI5NjorKGxvdz4+PjApKyArKGhpZ2h8MCkqKzQyOTQ5NjcyOTY7cmV0dXJuIHJldH0pLEdMT0JBTF9CQVNFOjgsUVVBTlRVTV9TSVpFOjQsX19kdW1teV9fOjB9O01vZHVsZVsiUnVudGltZSJdPVJ1bnRpbWU7ZnVuY3Rpb24ganNDYWxsKCl7dmFyIGFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gUnVudGltZS5mdW5jdGlvblBvaW50ZXJzW2FyZ3NbMF1dLmFwcGx5KG51bGwsYXJncy5zbGljZSgxKSl9dmFyIF9fVEhSRVdfXz0wO3ZhciBBQk9SVD1mYWxzZTt2YXIgRVhJVFNUQVRVUz0wO3ZhciB1bmRlZj0wO3ZhciB0ZW1wVmFsdWUsdGVtcEludCx0ZW1wQmlnSW50LHRlbXBJbnQyLHRlbXBCaWdJbnQyLHRlbXBQYWlyLHRlbXBCaWdJbnRJLHRlbXBCaWdJbnRSLHRlbXBCaWdJbnRTLHRlbXBCaWdJbnRQLHRlbXBCaWdJbnRELHRlbXBEb3VibGUsdGVtcEZsb2F0O3ZhciB0ZW1wSTY0LHRlbXBJNjRiO3ZhciB0ZW1wUmV0MCx0ZW1wUmV0MSx0ZW1wUmV0Mix0ZW1wUmV0Myx0ZW1wUmV0NCx0ZW1wUmV0NSx0ZW1wUmV0Nix0ZW1wUmV0Nyx0ZW1wUmV0OCx0ZW1wUmV0OTtmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLHRleHQpe2lmKCFjb25kaXRpb24pe2Fib3J0KCJBc3NlcnRpb24gZmFpbGVkOiAiK3RleHQpfX12YXIgZ2xvYmFsU2NvcGU9dGhpcztmdW5jdGlvbiBnZXRDRnVuYyhpZGVudCl7dHJ5e3ZhciBmdW5jPU1vZHVsZVsiXyIraWRlbnRdO2lmKCFmdW5jKWZ1bmM9ZXZhbCgiXyIraWRlbnQpfWNhdGNoKGUpe31hc3NlcnQoZnVuYywiQ2Fubm90IGNhbGwgdW5rbm93biBmdW5jdGlvbiAiK2lkZW50KyIgKHBlcmhhcHMgTExWTSBvcHRpbWl6YXRpb25zIG9yIGNsb3N1cmUgcmVtb3ZlZCBpdD8pIik7cmV0dXJuIGZ1bmN9dmFyIGN3cmFwLGNjYWxsOygoZnVuY3Rpb24oKXt2YXIgc3RhY2s9MDt2YXIgSlNmdW5jcz17InN0YWNrU2F2ZSI6KGZ1bmN0aW9uKCl7c3RhY2s9UnVudGltZS5zdGFja1NhdmUoKX0pLCJzdGFja1Jlc3RvcmUiOihmdW5jdGlvbigpe1J1bnRpbWUuc3RhY2tSZXN0b3JlKHN0YWNrKX0pLCJhcnJheVRvQyI6KGZ1bmN0aW9uKGFycil7dmFyIHJldD1SdW50aW1lLnN0YWNrQWxsb2MoYXJyLmxlbmd0aCk7d3JpdGVBcnJheVRvTWVtb3J5KGFycixyZXQpO3JldHVybiByZXR9KSwic3RyaW5nVG9DIjooZnVuY3Rpb24oc3RyKXt2YXIgcmV0PTA7aWYoc3RyIT09bnVsbCYmc3RyIT09dW5kZWZpbmVkJiZzdHIhPT0wKXtyZXQ9UnVudGltZS5zdGFja0FsbG9jKHN0ci5sZW5ndGgrMSk7d3JpdGVTdHJpbmdUb01lbW9yeShzdHIscmV0KX1yZXR1cm4gcmV0fSl9O3ZhciB0b0M9eyJzdHJpbmciOkpTZnVuY3NbInN0cmluZ1RvQyJdLCJhcnJheSI6SlNmdW5jc1siYXJyYXlUb0MiXX07Y2NhbGw9ZnVuY3Rpb24gY2NhbGxGdW5jKGlkZW50LHJldHVyblR5cGUsYXJnVHlwZXMsYXJncyl7dmFyIGZ1bmM9Z2V0Q0Z1bmMoaWRlbnQpO3ZhciBjQXJncz1bXTtpZihhcmdzKXtmb3IodmFyIGk9MDtpPGFyZ3MubGVuZ3RoO2krKyl7dmFyIGNvbnZlcnRlcj10b0NbYXJnVHlwZXNbaV1dO2lmKGNvbnZlcnRlcil7aWYoc3RhY2s9PT0wKXN0YWNrPVJ1bnRpbWUuc3RhY2tTYXZlKCk7Y0FyZ3NbaV09Y29udmVydGVyKGFyZ3NbaV0pfWVsc2V7Y0FyZ3NbaV09YXJnc1tpXX19fXZhciByZXQ9ZnVuYy5hcHBseShudWxsLGNBcmdzKTtpZihyZXR1cm5UeXBlPT09InN0cmluZyIpcmV0PVBvaW50ZXJfc3RyaW5naWZ5KHJldCk7aWYoc3RhY2shPT0wKUpTZnVuY3NbInN0YWNrUmVzdG9yZSJdKCk7cmV0dXJuIHJldH07dmFyIHNvdXJjZVJlZ2V4PS9eZnVuY3Rpb25cc1woKFteKV0qKVwpXHMqe1xzKihbXipdKj8pW1xzO10qKD86cmV0dXJuXHMqKC4qPylbO1xzXSopP30kLztmdW5jdGlvbiBwYXJzZUpTRnVuYyhqc2Z1bmMpe3ZhciBwYXJzZWQ9anNmdW5jLnRvU3RyaW5nKCkubWF0Y2goc291cmNlUmVnZXgpLnNsaWNlKDEpO3JldHVybnthcmd1bWVudHM6cGFyc2VkWzBdLGJvZHk6cGFyc2VkWzFdLHJldHVyblZhbHVlOnBhcnNlZFsyXX19dmFyIEpTc291cmNlPXt9O2Zvcih2YXIgZnVuIGluIEpTZnVuY3Mpe2lmKEpTZnVuY3MuaGFzT3duUHJvcGVydHkoZnVuKSl7SlNzb3VyY2VbZnVuXT1wYXJzZUpTRnVuYyhKU2Z1bmNzW2Z1bl0pfX1jd3JhcD1mdW5jdGlvbiBjd3JhcChpZGVudCxyZXR1cm5UeXBlLGFyZ1R5cGVzKXt2YXIgY2Z1bmM9Z2V0Q0Z1bmMoaWRlbnQpO3ZhciBudW1lcmljQXJncz1hcmdUeXBlcy5ldmVyeSgoZnVuY3Rpb24odHlwZSl7cmV0dXJuIHR5cGU9PT0ibnVtYmVyIn0pKTt2YXIgbnVtZXJpY1JldD1yZXR1cm5UeXBlIT09InN0cmluZyI7aWYobnVtZXJpY1JldCYmbnVtZXJpY0FyZ3Mpe3JldHVybiBjZnVuY312YXIgYXJnTmFtZXM9YXJnVHlwZXMubWFwKChmdW5jdGlvbih4LGkpe3JldHVybiIkIitpfSkpO3ZhciBmdW5jc3RyPSIoZnVuY3Rpb24oIithcmdOYW1lcy5qb2luKCIsIikrIikgeyI7dmFyIG5hcmdzPWFyZ1R5cGVzLmxlbmd0aDtpZighbnVtZXJpY0FyZ3Mpe2Z1bmNzdHIrPUpTc291cmNlWyJzdGFja1NhdmUiXS5ib2R5KyI7Ijtmb3IodmFyIGk9MDtpPG5hcmdzO2krKyl7dmFyIGFyZz1hcmdOYW1lc1tpXSx0eXBlPWFyZ1R5cGVzW2ldO2lmKHR5cGU9PT0ibnVtYmVyIiljb250aW51ZTt2YXIgY29udmVydENvZGU9SlNzb3VyY2VbdHlwZSsiVG9DIl07ZnVuY3N0cis9InZhciAiK2NvbnZlcnRDb2RlLmFyZ3VtZW50cysiID0gIithcmcrIjsiO2Z1bmNzdHIrPWNvbnZlcnRDb2RlLmJvZHkrIjsiO2Z1bmNzdHIrPWFyZysiPSIrY29udmVydENvZGUucmV0dXJuVmFsdWUrIjsifX12YXIgY2Z1bmNuYW1lPXBhcnNlSlNGdW5jKChmdW5jdGlvbigpe3JldHVybiBjZnVuY30pKS5yZXR1cm5WYWx1ZTtmdW5jc3RyKz0idmFyIHJldCA9ICIrY2Z1bmNuYW1lKyIoIithcmdOYW1lcy5qb2luKCIsIikrIik7IjtpZighbnVtZXJpY1JldCl7dmFyIHN0cmdmeT1wYXJzZUpTRnVuYygoZnVuY3Rpb24oKXtyZXR1cm4gUG9pbnRlcl9zdHJpbmdpZnl9KSkucmV0dXJuVmFsdWU7ZnVuY3N0cis9InJldCA9ICIrc3RyZ2Z5KyIocmV0KTsifWlmKCFudW1lcmljQXJncyl7ZnVuY3N0cis9SlNzb3VyY2VbInN0YWNrUmVzdG9yZSJdLmJvZHkrIjsifWZ1bmNzdHIrPSJyZXR1cm4gcmV0fSkiO3JldHVybiBldmFsKGZ1bmNzdHIpfX0pKSgpO01vZHVsZVsiY3dyYXAiXT1jd3JhcDtNb2R1bGVbImNjYWxsIl09Y2NhbGw7ZnVuY3Rpb24gc2V0VmFsdWUocHRyLHZhbHVlLHR5cGUsbm9TYWZlKXt0eXBlPXR5cGV8fCJpOCI7aWYodHlwZS5jaGFyQXQodHlwZS5sZW5ndGgtMSk9PT0iKiIpdHlwZT0iaTMyIjtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6SEVBUDhbcHRyPj4wXT12YWx1ZTticmVhaztjYXNlImk4IjpIRUFQOFtwdHI+PjBdPXZhbHVlO2JyZWFrO2Nhc2UiaTE2IjpIRUFQMTZbcHRyPj4xXT12YWx1ZTticmVhaztjYXNlImkzMiI6SEVBUDMyW3B0cj4+Ml09dmFsdWU7YnJlYWs7Y2FzZSJpNjQiOnRlbXBJNjQ9W3ZhbHVlPj4+MCwodGVtcERvdWJsZT12YWx1ZSwrTWF0aF9hYnModGVtcERvdWJsZSk+PSsxP3RlbXBEb3VibGU+KzA/KE1hdGhfbWluKCtNYXRoX2Zsb29yKHRlbXBEb3VibGUvKzQyOTQ5NjcyOTYpLCs0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aF9jZWlsKCh0ZW1wRG91YmxlLSArKH5+dGVtcERvdWJsZT4+PjApKS8rNDI5NDk2NzI5Nik+Pj4wOjApXSxIRUFQMzJbcHRyPj4yXT10ZW1wSTY0WzBdLEhFQVAzMltwdHIrND4+Ml09dGVtcEk2NFsxXTticmVhaztjYXNlImZsb2F0IjpIRUFQRjMyW3B0cj4+Ml09dmFsdWU7YnJlYWs7Y2FzZSJkb3VibGUiOkhFQVBGNjRbcHRyPj4zXT12YWx1ZTticmVhaztkZWZhdWx0OmFib3J0KCJpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAiK3R5cGUpfX1Nb2R1bGVbInNldFZhbHVlIl09c2V0VmFsdWU7ZnVuY3Rpb24gZ2V0VmFsdWUocHRyLHR5cGUsbm9TYWZlKXt0eXBlPXR5cGV8fCJpOCI7aWYodHlwZS5jaGFyQXQodHlwZS5sZW5ndGgtMSk9PT0iKiIpdHlwZT0iaTMyIjtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6cmV0dXJuIEhFQVA4W3B0cj4+MF07Y2FzZSJpOCI6cmV0dXJuIEhFQVA4W3B0cj4+MF07Y2FzZSJpMTYiOnJldHVybiBIRUFQMTZbcHRyPj4xXTtjYXNlImkzMiI6cmV0dXJuIEhFQVAzMltwdHI+PjJdO2Nhc2UiaTY0IjpyZXR1cm4gSEVBUDMyW3B0cj4+Ml07Y2FzZSJmbG9hdCI6cmV0dXJuIEhFQVBGMzJbcHRyPj4yXTtjYXNlImRvdWJsZSI6cmV0dXJuIEhFQVBGNjRbcHRyPj4zXTtkZWZhdWx0OmFib3J0KCJpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAiK3R5cGUpfXJldHVybiBudWxsfU1vZHVsZVsiZ2V0VmFsdWUiXT1nZXRWYWx1ZTt2YXIgQUxMT0NfTk9STUFMPTA7dmFyIEFMTE9DX1NUQUNLPTE7dmFyIEFMTE9DX1NUQVRJQz0yO3ZhciBBTExPQ19EWU5BTUlDPTM7dmFyIEFMTE9DX05PTkU9NDtNb2R1bGVbIkFMTE9DX05PUk1BTCJdPUFMTE9DX05PUk1BTDtNb2R1bGVbIkFMTE9DX1NUQUNLIl09QUxMT0NfU1RBQ0s7TW9kdWxlWyJBTExPQ19TVEFUSUMiXT1BTExPQ19TVEFUSUM7TW9kdWxlWyJBTExPQ19EWU5BTUlDIl09QUxMT0NfRFlOQU1JQztNb2R1bGVbIkFMTE9DX05PTkUiXT1BTExPQ19OT05FO2Z1bmN0aW9uIGFsbG9jYXRlKHNsYWIsdHlwZXMsYWxsb2NhdG9yLHB0cil7dmFyIHplcm9pbml0LHNpemU7aWYodHlwZW9mIHNsYWI9PT0ibnVtYmVyIil7emVyb2luaXQ9dHJ1ZTtzaXplPXNsYWJ9ZWxzZXt6ZXJvaW5pdD1mYWxzZTtzaXplPXNsYWIubGVuZ3RofXZhciBzaW5nbGVUeXBlPXR5cGVvZiB0eXBlcz09PSJzdHJpbmciP3R5cGVzOm51bGw7dmFyIHJldDtpZihhbGxvY2F0b3I9PUFMTE9DX05PTkUpe3JldD1wdHJ9ZWxzZXtyZXQ9W19tYWxsb2MsUnVudGltZS5zdGFja0FsbG9jLFJ1bnRpbWUuc3RhdGljQWxsb2MsUnVudGltZS5keW5hbWljQWxsb2NdW2FsbG9jYXRvcj09PXVuZGVmaW5lZD9BTExPQ19TVEFUSUM6YWxsb2NhdG9yXShNYXRoLm1heChzaXplLHNpbmdsZVR5cGU/MTp0eXBlcy5sZW5ndGgpKX1pZih6ZXJvaW5pdCl7dmFyIHB0cj1yZXQsc3RvcDthc3NlcnQoKHJldCYzKT09MCk7c3RvcD1yZXQrKHNpemUmfjMpO2Zvcig7cHRyPHN0b3A7cHRyKz00KXtIRUFQMzJbcHRyPj4yXT0wfXN0b3A9cmV0K3NpemU7d2hpbGUocHRyPHN0b3Ape0hFQVA4W3B0cisrPj4wXT0wfXJldHVybiByZXR9aWYoc2luZ2xlVHlwZT09PSJpOCIpe2lmKHNsYWIuc3ViYXJyYXl8fHNsYWIuc2xpY2Upe0hFQVBVOC5zZXQoc2xhYixyZXQpfWVsc2V7SEVBUFU4LnNldChuZXcgVWludDhBcnJheShzbGFiKSxyZXQpfXJldHVybiByZXR9dmFyIGk9MCx0eXBlLHR5cGVTaXplLHByZXZpb3VzVHlwZTt3aGlsZShpPHNpemUpe3ZhciBjdXJyPXNsYWJbaV07aWYodHlwZW9mIGN1cnI9PT0iZnVuY3Rpb24iKXtjdXJyPVJ1bnRpbWUuZ2V0RnVuY3Rpb25JbmRleChjdXJyKX10eXBlPXNpbmdsZVR5cGV8fHR5cGVzW2ldO2lmKHR5cGU9PT0wKXtpKys7Y29udGludWV9aWYodHlwZT09Imk2NCIpdHlwZT0iaTMyIjtzZXRWYWx1ZShyZXQraSxjdXJyLHR5cGUpO2lmKHByZXZpb3VzVHlwZSE9PXR5cGUpe3R5cGVTaXplPVJ1bnRpbWUuZ2V0TmF0aXZlVHlwZVNpemUodHlwZSk7cHJldmlvdXNUeXBlPXR5cGV9aSs9dHlwZVNpemV9cmV0dXJuIHJldH1Nb2R1bGVbImFsbG9jYXRlIl09YWxsb2NhdGU7ZnVuY3Rpb24gUG9pbnRlcl9zdHJpbmdpZnkocHRyLGxlbmd0aCl7dmFyIGhhc1V0Zj1mYWxzZTt2YXIgdDt2YXIgaT0wO3doaWxlKDEpe3Q9SEVBUFU4W3B0citpPj4wXTtpZih0Pj0xMjgpaGFzVXRmPXRydWU7ZWxzZSBpZih0PT0wJiYhbGVuZ3RoKWJyZWFrO2krKztpZihsZW5ndGgmJmk9PWxlbmd0aClicmVha31pZighbGVuZ3RoKWxlbmd0aD1pO3ZhciByZXQ9IiI7aWYoIWhhc1V0Zil7dmFyIE1BWF9DSFVOSz0xMDI0O3ZhciBjdXJyO3doaWxlKGxlbmd0aD4wKXtjdXJyPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLEhFQVBVOC5zdWJhcnJheShwdHIscHRyK01hdGgubWluKGxlbmd0aCxNQVhfQ0hVTkspKSk7cmV0PXJldD9yZXQrY3VycjpjdXJyO3B0cis9TUFYX0NIVU5LO2xlbmd0aC09TUFYX0NIVU5LfXJldHVybiByZXR9dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjtmb3IoaT0wO2k8bGVuZ3RoO2krKyl7dD1IRUFQVThbcHRyK2k+PjBdO3JldCs9dXRmOC5wcm9jZXNzQ0NoYXIodCl9cmV0dXJuIHJldH1Nb2R1bGVbIlBvaW50ZXJfc3RyaW5naWZ5Il09UG9pbnRlcl9zdHJpbmdpZnk7ZnVuY3Rpb24gVVRGMTZUb1N0cmluZyhwdHIpe3ZhciBpPTA7dmFyIHN0cj0iIjt3aGlsZSgxKXt2YXIgY29kZVVuaXQ9SEVBUDE2W3B0citpKjI+PjFdO2lmKGNvZGVVbml0PT0wKXJldHVybiBzdHI7KytpO3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZShjb2RlVW5pdCl9fU1vZHVsZVsiVVRGMTZUb1N0cmluZyJdPVVURjE2VG9TdHJpbmc7ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNihzdHIsb3V0UHRyKXtmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGg7KytpKXt2YXIgY29kZVVuaXQ9c3RyLmNoYXJDb2RlQXQoaSk7SEVBUDE2W291dFB0citpKjI+PjFdPWNvZGVVbml0fUhFQVAxNltvdXRQdHIrc3RyLmxlbmd0aCoyPj4xXT0wfU1vZHVsZVsic3RyaW5nVG9VVEYxNiJdPXN0cmluZ1RvVVRGMTY7ZnVuY3Rpb24gVVRGMzJUb1N0cmluZyhwdHIpe3ZhciBpPTA7dmFyIHN0cj0iIjt3aGlsZSgxKXt2YXIgdXRmMzI9SEVBUDMyW3B0citpKjQ+PjJdO2lmKHV0ZjMyPT0wKXJldHVybiBzdHI7KytpO2lmKHV0ZjMyPj02NTUzNil7dmFyIGNoPXV0ZjMyLTY1NTM2O3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjaD4+MTAsNTYzMjB8Y2gmMTAyMyl9ZWxzZXtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUodXRmMzIpfX19TW9kdWxlWyJVVEYzMlRvU3RyaW5nIl09VVRGMzJUb1N0cmluZztmdW5jdGlvbiBzdHJpbmdUb1VURjMyKHN0cixvdXRQdHIpe3ZhciBpQ2hhcj0wO2Zvcih2YXIgaUNvZGVVbml0PTA7aUNvZGVVbml0PHN0ci5sZW5ndGg7KytpQ29kZVVuaXQpe3ZhciBjb2RlVW5pdD1zdHIuY2hhckNvZGVBdChpQ29kZVVuaXQpO2lmKGNvZGVVbml0Pj01NTI5NiYmY29kZVVuaXQ8PTU3MzQzKXt2YXIgdHJhaWxTdXJyb2dhdGU9c3RyLmNoYXJDb2RlQXQoKytpQ29kZVVuaXQpO2NvZGVVbml0PTY1NTM2KygoY29kZVVuaXQmMTAyMyk8PDEwKXx0cmFpbFN1cnJvZ2F0ZSYxMDIzfUhFQVAzMltvdXRQdHIraUNoYXIqND4+Ml09Y29kZVVuaXQ7KytpQ2hhcn1IRUFQMzJbb3V0UHRyK2lDaGFyKjQ+PjJdPTB9TW9kdWxlWyJzdHJpbmdUb1VURjMyIl09c3RyaW5nVG9VVEYzMjtmdW5jdGlvbiBkZW1hbmdsZShmdW5jKXt2YXIgaT0zO3ZhciBiYXNpY1R5cGVzPXsidiI6InZvaWQiLCJiIjoiYm9vbCIsImMiOiJjaGFyIiwicyI6InNob3J0IiwiaSI6ImludCIsImwiOiJsb25nIiwiZiI6ImZsb2F0IiwiZCI6ImRvdWJsZSIsInciOiJ3Y2hhcl90IiwiYSI6InNpZ25lZCBjaGFyIiwiaCI6InVuc2lnbmVkIGNoYXIiLCJ0IjoidW5zaWduZWQgc2hvcnQiLCJqIjoidW5zaWduZWQgaW50IiwibSI6InVuc2lnbmVkIGxvbmciLCJ4IjoibG9uZyBsb25nIiwieSI6InVuc2lnbmVkIGxvbmcgbG9uZyIsInoiOiIuLi4ifTt2YXIgc3Vicz1bXTt2YXIgZmlyc3Q9dHJ1ZTtmdW5jdGlvbiBkdW1wKHgpe2lmKHgpTW9kdWxlLnByaW50KHgpO01vZHVsZS5wcmludChmdW5jKTt2YXIgcHJlPSIiO2Zvcih2YXIgYT0wO2E8aTthKyspcHJlKz0iICI7TW9kdWxlLnByaW50KHByZSsiXiIpfWZ1bmN0aW9uIHBhcnNlTmVzdGVkKCl7aSsrO2lmKGZ1bmNbaV09PT0iSyIpaSsrO3ZhciBwYXJ0cz1bXTt3aGlsZShmdW5jW2ldIT09IkUiKXtpZihmdW5jW2ldPT09IlMiKXtpKys7dmFyIG5leHQ9ZnVuYy5pbmRleE9mKCJfIixpKTt2YXIgbnVtPWZ1bmMuc3Vic3RyaW5nKGksbmV4dCl8fDA7cGFydHMucHVzaChzdWJzW251bV18fCI/Iik7aT1uZXh0KzE7Y29udGludWV9aWYoZnVuY1tpXT09PSJDIil7cGFydHMucHVzaChwYXJ0c1twYXJ0cy5sZW5ndGgtMV0pO2krPTI7Y29udGludWV9dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO3ZhciBwcmU9c2l6ZS50b1N0cmluZygpLmxlbmd0aDtpZighc2l6ZXx8IXByZSl7aS0tO2JyZWFrfXZhciBjdXJyPWZ1bmMuc3Vic3RyKGkrcHJlLHNpemUpO3BhcnRzLnB1c2goY3Vycik7c3Vicy5wdXNoKGN1cnIpO2krPXByZStzaXplfWkrKztyZXR1cm4gcGFydHN9ZnVuY3Rpb24gcGFyc2UocmF3TGlzdCxsaW1pdCxhbGxvd1ZvaWQpe2xpbWl0PWxpbWl0fHxJbmZpbml0eTt2YXIgcmV0PSIiLGxpc3Q9W107ZnVuY3Rpb24gZmx1c2hMaXN0KCl7cmV0dXJuIigiK2xpc3Quam9pbigiLCAiKSsiKSJ9dmFyIG5hbWU7aWYoZnVuY1tpXT09PSJOIil7bmFtZT1wYXJzZU5lc3RlZCgpLmpvaW4oIjo6Iik7bGltaXQtLTtpZihsaW1pdD09PTApcmV0dXJuIHJhd0xpc3Q/W25hbWVdOm5hbWV9ZWxzZXtpZihmdW5jW2ldPT09IksifHxmaXJzdCYmZnVuY1tpXT09PSJMIilpKys7dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO2lmKHNpemUpe3ZhciBwcmU9c2l6ZS50b1N0cmluZygpLmxlbmd0aDtuYW1lPWZ1bmMuc3Vic3RyKGkrcHJlLHNpemUpO2krPXByZStzaXplfX1maXJzdD1mYWxzZTtpZihmdW5jW2ldPT09IkkiKXtpKys7dmFyIGlMaXN0PXBhcnNlKHRydWUpO3ZhciBpUmV0PXBhcnNlKHRydWUsMSx0cnVlKTtyZXQrPWlSZXRbMF0rIiAiK25hbWUrIjwiK2lMaXN0LmpvaW4oIiwgIikrIj4ifWVsc2V7cmV0PW5hbWV9cGFyYW1Mb29wOndoaWxlKGk8ZnVuYy5sZW5ndGgmJmxpbWl0LS0+MCl7dmFyIGM9ZnVuY1tpKytdO2lmKGMgaW4gYmFzaWNUeXBlcyl7bGlzdC5wdXNoKGJhc2ljVHlwZXNbY10pfWVsc2V7c3dpdGNoKGMpe2Nhc2UiUCI6bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiKiIpO2JyZWFrO2Nhc2UiUiI6bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiJiIpO2JyZWFrO2Nhc2UiTCI6e2krKzt2YXIgZW5kPWZ1bmMuaW5kZXhPZigiRSIsaSk7dmFyIHNpemU9ZW5kLWk7bGlzdC5wdXNoKGZ1bmMuc3Vic3RyKGksc2l6ZSkpO2krPXNpemUrMjticmVha307Y2FzZSJBIjp7dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO2krPXNpemUudG9TdHJpbmcoKS5sZW5ndGg7aWYoZnVuY1tpXSE9PSJfIil0aHJvdyI/IjtpKys7bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiIFsiK3NpemUrIl0iKTticmVha307Y2FzZSJFIjpicmVhayBwYXJhbUxvb3A7ZGVmYXVsdDpyZXQrPSI/IitjO2JyZWFrIHBhcmFtTG9vcH19fWlmKCFhbGxvd1ZvaWQmJmxpc3QubGVuZ3RoPT09MSYmbGlzdFswXT09PSJ2b2lkIilsaXN0PVtdO2lmKHJhd0xpc3Qpe2lmKHJldCl7bGlzdC5wdXNoKHJldCsiPyIpfXJldHVybiBsaXN0fWVsc2V7cmV0dXJuIHJldCtmbHVzaExpc3QoKX19dHJ5e2lmKGZ1bmM9PSJPYmplY3QuX21haW4ifHxmdW5jPT0iX21haW4iKXtyZXR1cm4ibWFpbigpIn1pZih0eXBlb2YgZnVuYz09PSJudW1iZXIiKWZ1bmM9UG9pbnRlcl9zdHJpbmdpZnkoZnVuYyk7aWYoZnVuY1swXSE9PSJfIilyZXR1cm4gZnVuYztpZihmdW5jWzFdIT09Il8iKXJldHVybiBmdW5jO2lmKGZ1bmNbMl0hPT0iWiIpcmV0dXJuIGZ1bmM7c3dpdGNoKGZ1bmNbM10pe2Nhc2UibiI6cmV0dXJuIm9wZXJhdG9yIG5ldygpIjtjYXNlImQiOnJldHVybiJvcGVyYXRvciBkZWxldGUoKSJ9cmV0dXJuIHBhcnNlKCl9Y2F0Y2goZSl7cmV0dXJuIGZ1bmN9fWZ1bmN0aW9uIGRlbWFuZ2xlQWxsKHRleHQpe3JldHVybiB0ZXh0LnJlcGxhY2UoL19fWltcd1xkX10rL2csKGZ1bmN0aW9uKHgpe3ZhciB5PWRlbWFuZ2xlKHgpO3JldHVybiB4PT09eT94OngrIiBbIit5KyJdIn0pKX1mdW5jdGlvbiBzdGFja1RyYWNlKCl7dmFyIHN0YWNrPShuZXcgRXJyb3IpLnN0YWNrO3JldHVybiBzdGFjaz9kZW1hbmdsZUFsbChzdGFjayk6IihubyBzdGFjayB0cmFjZSBhdmFpbGFibGUpIn12YXIgUEFHRV9TSVpFPTQwOTY7ZnVuY3Rpb24gYWxpZ25NZW1vcnlQYWdlKHgpe3JldHVybiB4KzQwOTUmLTQwOTZ9dmFyIEhFQVA7dmFyIEhFQVA4LEhFQVBVOCxIRUFQMTYsSEVBUFUxNixIRUFQMzIsSEVBUFUzMixIRUFQRjMyLEhFQVBGNjQ7dmFyIFNUQVRJQ19CQVNFPTAsU1RBVElDVE9QPTAsc3RhdGljU2VhbGVkPWZhbHNlO3ZhciBTVEFDS19CQVNFPTAsU1RBQ0tUT1A9MCxTVEFDS19NQVg9MDt2YXIgRFlOQU1JQ19CQVNFPTAsRFlOQU1JQ1RPUD0wO2Z1bmN0aW9uIGVubGFyZ2VNZW1vcnkoKXthYm9ydCgiQ2Fubm90IGVubGFyZ2UgbWVtb3J5IGFycmF5cy4gRWl0aGVyICgxKSBjb21waWxlIHdpdGggLXMgVE9UQUxfTUVNT1JZPVggd2l0aCBYIGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50IHZhbHVlICIrVE9UQUxfTUVNT1JZKyIsICgyKSBjb21waWxlIHdpdGggQUxMT1dfTUVNT1JZX0dST1dUSCB3aGljaCBhZGp1c3RzIHRoZSBzaXplIGF0IHJ1bnRpbWUgYnV0IHByZXZlbnRzIHNvbWUgb3B0aW1pemF0aW9ucywgb3IgKDMpIHNldCBNb2R1bGUuVE9UQUxfTUVNT1JZIGJlZm9yZSB0aGUgcHJvZ3JhbSBydW5zLiIpfXZhciBUT1RBTF9TVEFDSz1Nb2R1bGVbIlRPVEFMX1NUQUNLIl18fDUyNDI4ODA7dmFyIFRPVEFMX01FTU9SWT1Nb2R1bGVbIlRPVEFMX01FTU9SWSJdfHwxNjc3NzIxNjA7dmFyIEZBU1RfTUVNT1JZPU1vZHVsZVsiRkFTVF9NRU1PUlkiXXx8MTA0ODU3NjA7dmFyIHRvdGFsTWVtb3J5PTQwOTY7d2hpbGUodG90YWxNZW1vcnk8VE9UQUxfTUVNT1JZfHx0b3RhbE1lbW9yeTwyKlRPVEFMX1NUQUNLKXtpZih0b3RhbE1lbW9yeTwxNioxMDI0KjEwMjQpe3RvdGFsTWVtb3J5Kj0yfWVsc2V7dG90YWxNZW1vcnkrPTE2KjEwMjQqMTAyNH19aWYodG90YWxNZW1vcnkhPT1UT1RBTF9NRU1PUlkpe01vZHVsZS5wcmludEVycigiaW5jcmVhc2luZyBUT1RBTF9NRU1PUlkgdG8gIit0b3RhbE1lbW9yeSsiIHRvIGJlIG1vcmUgcmVhc29uYWJsZSIpO1RPVEFMX01FTU9SWT10b3RhbE1lbW9yeX1hc3NlcnQodHlwZW9mIEludDMyQXJyYXkhPT0idW5kZWZpbmVkIiYmdHlwZW9mIEZsb2F0NjRBcnJheSE9PSJ1bmRlZmluZWQiJiYhIShuZXcgSW50MzJBcnJheSgxKSlbInN1YmFycmF5Il0mJiEhKG5ldyBJbnQzMkFycmF5KDEpKVsic2V0Il0sIkpTIGVuZ2luZSBkb2VzIG5vdCBwcm92aWRlIGZ1bGwgdHlwZWQgYXJyYXkgc3VwcG9ydCIpO3ZhciBidWZmZXI9bmV3IEFycmF5QnVmZmVyKFRPVEFMX01FTU9SWSk7SEVBUDg9bmV3IEludDhBcnJheShidWZmZXIpO0hFQVAxNj1uZXcgSW50MTZBcnJheShidWZmZXIpO0hFQVAzMj1uZXcgSW50MzJBcnJheShidWZmZXIpO0hFQVBVOD1uZXcgVWludDhBcnJheShidWZmZXIpO0hFQVBVMTY9bmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7SEVBUFUzMj1uZXcgVWludDMyQXJyYXkoYnVmZmVyKTtIRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTtIRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoYnVmZmVyKTtIRUFQMzJbMF09MjU1O2Fzc2VydChIRUFQVThbMF09PT0yNTUmJkhFQVBVOFszXT09PTAsIlR5cGVkIGFycmF5cyAyIG11c3QgYmUgcnVuIG9uIGEgbGl0dGxlLWVuZGlhbiBzeXN0ZW0iKTtNb2R1bGVbIkhFQVAiXT1IRUFQO01vZHVsZVsiSEVBUDgiXT1IRUFQODtNb2R1bGVbIkhFQVAxNiJdPUhFQVAxNjtNb2R1bGVbIkhFQVAzMiJdPUhFQVAzMjtNb2R1bGVbIkhFQVBVOCJdPUhFQVBVODtNb2R1bGVbIkhFQVBVMTYiXT1IRUFQVTE2O01vZHVsZVsiSEVBUFUzMiJdPUhFQVBVMzI7TW9kdWxlWyJIRUFQRjMyIl09SEVBUEYzMjtNb2R1bGVbIkhFQVBGNjQiXT1IRUFQRjY0O2Z1bmN0aW9uIGNhbGxSdW50aW1lQ2FsbGJhY2tzKGNhbGxiYWNrcyl7d2hpbGUoY2FsbGJhY2tzLmxlbmd0aD4wKXt2YXIgY2FsbGJhY2s9Y2FsbGJhY2tzLnNoaWZ0KCk7aWYodHlwZW9mIGNhbGxiYWNrPT0iZnVuY3Rpb24iKXtjYWxsYmFjaygpO2NvbnRpbnVlfXZhciBmdW5jPWNhbGxiYWNrLmZ1bmM7aWYodHlwZW9mIGZ1bmM9PT0ibnVtYmVyIil7aWYoY2FsbGJhY2suYXJnPT09dW5kZWZpbmVkKXtSdW50aW1lLmR5bkNhbGwoInYiLGZ1bmMpfWVsc2V7UnVudGltZS5keW5DYWxsKCJ2aSIsZnVuYyxbY2FsbGJhY2suYXJnXSl9fWVsc2V7ZnVuYyhjYWxsYmFjay5hcmc9PT11bmRlZmluZWQ/bnVsbDpjYWxsYmFjay5hcmcpfX19dmFyIF9fQVRQUkVSVU5fXz1bXTt2YXIgX19BVElOSVRfXz1bXTt2YXIgX19BVE1BSU5fXz1bXTt2YXIgX19BVEVYSVRfXz1bXTt2YXIgX19BVFBPU1RSVU5fXz1bXTt2YXIgcnVudGltZUluaXRpYWxpemVkPWZhbHNlO2Z1bmN0aW9uIHByZVJ1bigpe2lmKE1vZHVsZVsicHJlUnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInByZVJ1biJdPT0iZnVuY3Rpb24iKU1vZHVsZVsicHJlUnVuIl09W01vZHVsZVsicHJlUnVuIl1dO3doaWxlKE1vZHVsZVsicHJlUnVuIl0ubGVuZ3RoKXthZGRPblByZVJ1bihNb2R1bGVbInByZVJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pfWZ1bmN0aW9uIGVuc3VyZUluaXRSdW50aW1lKCl7aWYocnVudGltZUluaXRpYWxpemVkKXJldHVybjtydW50aW1lSW5pdGlhbGl6ZWQ9dHJ1ZTtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUSU5JVF9fKX1mdW5jdGlvbiBwcmVNYWluKCl7Y2FsbFJ1bnRpbWVDYWxsYmFja3MoX19BVE1BSU5fXyl9ZnVuY3Rpb24gZXhpdFJ1bnRpbWUoKXtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FURVhJVF9fKX1mdW5jdGlvbiBwb3N0UnVuKCl7aWYoTW9kdWxlWyJwb3N0UnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInBvc3RSdW4iXT09ImZ1bmN0aW9uIilNb2R1bGVbInBvc3RSdW4iXT1bTW9kdWxlWyJwb3N0UnVuIl1dO3doaWxlKE1vZHVsZVsicG9zdFJ1biJdLmxlbmd0aCl7YWRkT25Qb3N0UnVuKE1vZHVsZVsicG9zdFJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUE9TVFJVTl9fKX1mdW5jdGlvbiBhZGRPblByZVJ1bihjYil7X19BVFBSRVJVTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25QcmVSdW4iXT1Nb2R1bGUuYWRkT25QcmVSdW49YWRkT25QcmVSdW47ZnVuY3Rpb24gYWRkT25Jbml0KGNiKXtfX0FUSU5JVF9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25Jbml0Il09TW9kdWxlLmFkZE9uSW5pdD1hZGRPbkluaXQ7ZnVuY3Rpb24gYWRkT25QcmVNYWluKGNiKXtfX0FUTUFJTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25QcmVNYWluIl09TW9kdWxlLmFkZE9uUHJlTWFpbj1hZGRPblByZU1haW47ZnVuY3Rpb24gYWRkT25FeGl0KGNiKXtfX0FURVhJVF9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25FeGl0Il09TW9kdWxlLmFkZE9uRXhpdD1hZGRPbkV4aXQ7ZnVuY3Rpb24gYWRkT25Qb3N0UnVuKGNiKXtfX0FUUE9TVFJVTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25Qb3N0UnVuIl09TW9kdWxlLmFkZE9uUG9zdFJ1bj1hZGRPblBvc3RSdW47ZnVuY3Rpb24gaW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZ3ksZG9udEFkZE51bGwsbGVuZ3RoKXt2YXIgcmV0PShuZXcgUnVudGltZS5VVEY4UHJvY2Vzc29yKS5wcm9jZXNzSlNTdHJpbmcoc3RyaW5neSk7aWYobGVuZ3RoKXtyZXQubGVuZ3RoPWxlbmd0aH1pZighZG9udEFkZE51bGwpe3JldC5wdXNoKDApfXJldHVybiByZXR9TW9kdWxlWyJpbnRBcnJheUZyb21TdHJpbmciXT1pbnRBcnJheUZyb21TdHJpbmc7ZnVuY3Rpb24gaW50QXJyYXlUb1N0cmluZyhhcnJheSl7dmFyIHJldD1bXTtmb3IodmFyIGk9MDtpPGFycmF5Lmxlbmd0aDtpKyspe3ZhciBjaHI9YXJyYXlbaV07aWYoY2hyPjI1NSl7Y2hyJj0yNTV9cmV0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpKX1yZXR1cm4gcmV0LmpvaW4oIiIpfU1vZHVsZVsiaW50QXJyYXlUb1N0cmluZyJdPWludEFycmF5VG9TdHJpbmc7ZnVuY3Rpb24gd3JpdGVTdHJpbmdUb01lbW9yeShzdHJpbmcsYnVmZmVyLGRvbnRBZGROdWxsKXt2YXIgYXJyYXk9aW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZyxkb250QWRkTnVsbCk7dmFyIGk9MDt3aGlsZShpPGFycmF5Lmxlbmd0aCl7dmFyIGNocj1hcnJheVtpXTtIRUFQOFtidWZmZXIraT4+MF09Y2hyO2k9aSsxfX1Nb2R1bGVbIndyaXRlU3RyaW5nVG9NZW1vcnkiXT13cml0ZVN0cmluZ1RvTWVtb3J5O2Z1bmN0aW9uIHdyaXRlQXJyYXlUb01lbW9yeShhcnJheSxidWZmZXIpe2Zvcih2YXIgaT0wO2k8YXJyYXkubGVuZ3RoO2krKyl7SEVBUDhbYnVmZmVyK2k+PjBdPWFycmF5W2ldfX1Nb2R1bGVbIndyaXRlQXJyYXlUb01lbW9yeSJdPXdyaXRlQXJyYXlUb01lbW9yeTtmdW5jdGlvbiB3cml0ZUFzY2lpVG9NZW1vcnkoc3RyLGJ1ZmZlcixkb250QWRkTnVsbCl7Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoO2krKyl7SEVBUDhbYnVmZmVyK2k+PjBdPXN0ci5jaGFyQ29kZUF0KGkpfWlmKCFkb250QWRkTnVsbClIRUFQOFtidWZmZXIrc3RyLmxlbmd0aD4+MF09MH1Nb2R1bGVbIndyaXRlQXNjaWlUb01lbW9yeSJdPXdyaXRlQXNjaWlUb01lbW9yeTtmdW5jdGlvbiB1blNpZ24odmFsdWUsYml0cyxpZ25vcmUpe2lmKHZhbHVlPj0wKXtyZXR1cm4gdmFsdWV9cmV0dXJuIGJpdHM8PTMyPzIqTWF0aC5hYnMoMTw8Yml0cy0xKSt2YWx1ZTpNYXRoLnBvdygyLGJpdHMpK3ZhbHVlfWZ1bmN0aW9uIHJlU2lnbih2YWx1ZSxiaXRzLGlnbm9yZSl7aWYodmFsdWU8PTApe3JldHVybiB2YWx1ZX12YXIgaGFsZj1iaXRzPD0zMj9NYXRoLmFicygxPDxiaXRzLTEpOk1hdGgucG93KDIsYml0cy0xKTtpZih2YWx1ZT49aGFsZiYmKGJpdHM8PTMyfHx2YWx1ZT5oYWxmKSl7dmFsdWU9LTIqaGFsZit2YWx1ZX1yZXR1cm4gdmFsdWV9aWYoIU1hdGhbImltdWwiXXx8TWF0aFsiaW11bCJdKDQyOTQ5NjcyOTUsNSkhPT0tNSlNYXRoWyJpbXVsIl09ZnVuY3Rpb24gaW11bChhLGIpe3ZhciBhaD1hPj4+MTY7dmFyIGFsPWEmNjU1MzU7dmFyIGJoPWI+Pj4xNjt2YXIgYmw9YiY2NTUzNTtyZXR1cm4gYWwqYmwrKGFoKmJsK2FsKmJoPDwxNil8MH07TWF0aC5pbXVsPU1hdGhbImltdWwiXTt2YXIgTWF0aF9hYnM9TWF0aC5hYnM7dmFyIE1hdGhfY29zPU1hdGguY29zO3ZhciBNYXRoX3Npbj1NYXRoLnNpbjt2YXIgTWF0aF90YW49TWF0aC50YW47dmFyIE1hdGhfYWNvcz1NYXRoLmFjb3M7dmFyIE1hdGhfYXNpbj1NYXRoLmFzaW47dmFyIE1hdGhfYXRhbj1NYXRoLmF0YW47dmFyIE1hdGhfYXRhbjI9TWF0aC5hdGFuMjt2YXIgTWF0aF9leHA9TWF0aC5leHA7dmFyIE1hdGhfbG9nPU1hdGgubG9nO3ZhciBNYXRoX3NxcnQ9TWF0aC5zcXJ0O3ZhciBNYXRoX2NlaWw9TWF0aC5jZWlsO3ZhciBNYXRoX2Zsb29yPU1hdGguZmxvb3I7dmFyIE1hdGhfcG93PU1hdGgucG93O3ZhciBNYXRoX2ltdWw9TWF0aC5pbXVsO3ZhciBNYXRoX2Zyb3VuZD1NYXRoLmZyb3VuZDt2YXIgTWF0aF9taW49TWF0aC5taW47dmFyIHJ1bkRlcGVuZGVuY2llcz0wO3ZhciBydW5EZXBlbmRlbmN5V2F0Y2hlcj1udWxsO3ZhciBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9bnVsbDtmdW5jdGlvbiBhZGRSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMrKztpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKX19TW9kdWxlWyJhZGRSdW5EZXBlbmRlbmN5Il09YWRkUnVuRGVwZW5kZW5jeTtmdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMtLTtpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKX1pZihydW5EZXBlbmRlbmNpZXM9PTApe2lmKHJ1bkRlcGVuZGVuY3lXYXRjaGVyIT09bnVsbCl7Y2xlYXJJbnRlcnZhbChydW5EZXBlbmRlbmN5V2F0Y2hlcik7cnVuRGVwZW5kZW5jeVdhdGNoZXI9bnVsbH1pZihkZXBlbmRlbmNpZXNGdWxmaWxsZWQpe3ZhciBjYWxsYmFjaz1kZXBlbmRlbmNpZXNGdWxmaWxsZWQ7ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7Y2FsbGJhY2soKX19fU1vZHVsZVsicmVtb3ZlUnVuRGVwZW5kZW5jeSJdPXJlbW92ZVJ1bkRlcGVuZGVuY3k7TW9kdWxlWyJwcmVsb2FkZWRJbWFnZXMiXT17fTtNb2R1bGVbInByZWxvYWRlZEF1ZGlvcyJdPXt9O3ZhciBtZW1vcnlJbml0aWFsaXplcj1udWxsO3ZhciBfX1pUSXQ9MjE4NzI7dmFyIF9fWlRJcz0yMTg2NDt2YXIgX19aVEltPTIxOTM2O3ZhciBfX1pUSWw9MjE5MjA7dmFyIF9fWlRWTjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0U9MjE2NTY7dmFyIF9fWlRJaT0yMTg4ODt2YXIgX19aVEloPTIxODQwO3ZhciBfX1pUSWo9MjE5MDQ7dmFyIF9fWlRJZD0yMTk2ODt2YXIgX19aVFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0U9MjE2MTY7dmFyIF9fWlRJZj0yMTk1Mjt2YXIgX19aVElhPTIxODU2O3ZhciBfX1pUVk4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRT0yMTk3Njt2YXIgX19aVEljPTIxODI0O1NUQVRJQ19CQVNFPTg7U1RBVElDVE9QPVNUQVRJQ19CQVNFK1J1bnRpbWUuYWxpZ25NZW1vcnkoMjMwODMpO19fQVRJTklUX18ucHVzaCh7ZnVuYzooZnVuY3Rpb24oKXtfX0dMT0JBTF9fSV9hKCl9KX0se2Z1bmM6KGZ1bmN0aW9uKCl7X19HTE9CQUxfX0lfYTY1KCl9KX0se2Z1bmM6KGZ1bmN0aW9uKCl7X19HTE9CQUxfX0lfYTE1MygpfSl9KTthbGxvY2F0ZShbNzYsNjUsODMsOTAsMTA1LDExMiwwLDAsMTExLDExMiwxMDEsMTEwLDAsMCwwLDAsMTAzLDEwMSwxMTYsODAsMTExLDEwNSwxMTAsMTE2LDAsMCwwLDAsMCwwLDAsMCwxMDMsMTAxLDExNiw2NywxMTEsMTE3LDExMCwxMTYsMCwwLDAsMCwwLDAsMCwwLDEwNSwxMDUsMTA1LDAsMCwwLDAsMCw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMTIwLDg0LDAsMCw2NCwwLDAsMCw4MCw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMCwwLDAsMCwwLDAsMCwxNjAsODQsMCwwLDgwLDAsMCwwLDAsMCwwLDAsNzIsMCwwLDAsMTE4LDEwNSwxMDUsMTA1LDAsMCwwLDAsMTE4LDEwNSwxMDUsMTA1LDEwNSwwLDAsMCwxMDUsMTA1LDAsMCwwLDAsMCwwLDExOCwxMDUsMCwwLDAsMCwwLDAsMTE4LDAsMCwwLDAsMCwwLDAsMTA1LDEwNSwwLDAsMCwwLDAsMCw4MCw3NSw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMCwwLDAsMCwwLDAsMTYwLDg0LDAsMCwxNjAsMCwwLDAsMSwwLDAsMCw3MiwwLDAsMCwxMTgsNTAsMTE2LDU0LDExNSw1MCw0OCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTUsMTE1LDU2LDAsMCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTYsMTE1LDU0LDAsMCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTUsMTE1LDU2LDExOCw1MCwxMTYsNTYsMTE1LDU0LDAsMCwwLDAsMCwxMDQsOTcsMTE1LDMyLDEwNSwxMTUsNTgsMzIsMCwwLDAsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTcsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDk1LDExNSw5OSwxMDQsMTAxLDEwOSw5Nyw5NSwxMTYsMTIxLDExMiwxMDEsNjksMCwwLDIyNCw4NSwwLDAsMTYsMSwwLDAsODAsMzksMCwwLDAsMCwwLDAsODQsMTA0LDEwMSwzMiw3Niw2NSw5MCwzMiwxMTUsOTksMTA0LDEwMSwxMDksOTcsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDk5LDExMSwxMDMsMTEwLDEwNSwxMjIsMTAxLDEwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCwxLDAsMCwyMiwwLDAsMCwyMywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNSwxMjEsMTA5LDk4LDExMSwxMDgsMTE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDIyLDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY2LDk1LDczLDc4LDgzLDY3LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2Niw5NSw3Myw3OCw4Myw2Nyw5NSw1MSwxMTQsMTAzLDk4LDY5LDc4LDgzLDY5LDk1LDczLDgzLDc1LDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OCwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNjksMCwxMjAsODQsMCwwLDIwOCwyLDAsMCwyMjQsODUsMCwwLDE4NCwxLDAsMCwyNDgsMiwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDQ5LDQ5LDEwMSwxMTAsMTAwLDk1LDExMSwxMDIsOTUsMTAyLDEwNSwxMDgsMTAxLDY5LDAsMCwyMjQsODUsMCwwLDE2LDMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDgyLDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSwxMTAsMTAwLDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDQwLDMsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDIyLDAsMCwwLDAsMCwwLDAsMTUsMTQsMTMsMTIsMTEsMTAsOSw4LDE0LDAsMSwzLDYsMTAsMTAsOSwxMywxLDIsNCw3LDExLDExLDEwLDEyLDMsNCw1LDgsMTIsMTIsMTEsMTEsNiw3LDgsOSwxMywxMywxMiwxMCwxMCwxMSwxMiwxMywxNCwxNCwxMyw5LDEwLDExLDEyLDEzLDE0LDE1LDE0LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwwLDEsMiwzLDQsNSw2LDcsMSwwLDEsMiwzLDQsNSw2LDIsMSwwLDEsMiwzLDQsNSwzLDIsMSwwLDEsMiwzLDQsNCwzLDIsMSwwLDEsMiwzLDUsNCwzLDIsMSwwLDEsMiw2LDUsNCwzLDIsMSwwLDEsNyw2LDUsNCwzLDIsMSwwLDAsMCwwLDAsMTEyLDUsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDIyLDAsMCwwLDMxLDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3Nyw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw4MSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw4MSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsOCw0LDAsMCwxNDQsMzgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDk1LDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDczLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3Nyw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwxOTIsNywwLDAsMjMsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDQ4LDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw0OCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDQ4LDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw0OCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNjgsOTUsNjksNjksNjksNjksNzgsODMsNjYsOTUsNzMsNzgsODMsNjcsOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCwyMDAsNiwwLDAsMjQ4LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCw1Niw5LDAsMCwzNCwwLDAsMCwzNSwwLDAsMCwzNiwwLDAsMCwyMywwLDAsMCwzNywwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExMiwxMTYsMTE0LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw3Myw4MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw0OSw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDUwLDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw1MCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDUwLDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw1MCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNzAsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3OCw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3OCw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCwyNDAsNywwLDAsMTQ0LDM4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw0OSw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDUwLDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw1MCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDUwLDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw1MCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNzAsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTIsMTEsMCwwLDI0LDAsMCwwLDM4LDAsMCwwLDM5LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY2LDk1LDczLDc4LDgzLDY3LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDIyNCw4NSwwLDAsMTIwLDEwLDAsMCwyNDgsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDIzMiwxMiwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsMjQsMCwwLDAsNDMsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDgsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSwxMTIsMTE2LDExNCw5NSwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsNzMsODAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsNDksOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsNDksOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw1MCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNTAsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw1MCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNTAsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDcwLDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY4LDk1LDczLDc4LDgzLDY5LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3OCw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3OCw5NSw2OSw2OSw2OSw2OSwwLDIyNCw4NSwwLDAsMTYwLDExLDAsMCwxNDQsMzgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDk1LDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDczLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNjksNjksNjksNjksNjksNjksNjksMCwwLDAsMCwwLDAsMCwwLDgsMTUsMCwwLDI1LDAsMCwwLDQ0LDAsMCwwLDQ1LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCw0MCwxNCwwLDAsMjQ4LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMDQsMTYsMCwwLDQ2LDAsMCwwLDQ3LDAsMCwwLDQ4LDAsMCwwLDI1LDAsMCwwLDQ5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3NSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3NSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsNTYsMTUsMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsNDksOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsNDksOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw1MCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNTAsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw1MCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNTAsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDcwLDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwxMTgsMCwwLDAsMCwwLDAsMCwxMTYsMCwwLDAsMCwwLDAsMCwxMTUsMCwwLDAsMCwwLDAsMCw2NCwwLDAsMCwwLDAsMCwwLDE2LDE4LDAsMCw1MCwwLDAsMCw1MSwwLDAsMCw1NiwwLDAsMCwyNDgsMjU1LDI1NSwyNTUsMTYsMTgsMCwwLDUyLDAsMCwwLDUzLDAsMCwwLDE5MiwyNTUsMjU1LDI1NSwxOTIsMjU1LDI1NSwyNTUsMTYsMTgsMCwwLDU0LDAsMCwwLDU1LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU2LDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsOTksNjksNjksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDIwMCwxNywwLDAsMjI0LDQ1LDAsMCwwLDAsMCwwLDY0LDAsMCwwLDAsMCwwLDAsMTkyLDQ0LDAsMCw1NiwwLDAsMCw1NywwLDAsMCwxOTIsMjU1LDI1NSwyNTUsMTkyLDI1NSwyNTUsMjU1LDE5Miw0NCwwLDAsNTgsMCwwLDAsNTksMCwwLDAsMCwwLDAsMCwyMDgsMTgsMCwwLDYwLDAsMCwwLDYxLDAsMCwwLDI2LDAsMCwwLDIyLDAsMCwwLDIyLDAsMCwwLDIyLDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDI1LDAsMCwwLDI2LDAsMCwwLDI2LDAsMCwwLDI0LDAsMCwwLDI3LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Myw5OCw5NywxMTUsMTA1LDk5LDk1LDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDk4LDExNywxMDIsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDk5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxMzYsMTgsMCwwLDcyLDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDE5LDAsMCw2MiwwLDAsMCw2MywwLDAsMCw2NCwwLDAsMCwyOCwwLDAsMCw2NSwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExMiwxMTYsMTE0LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw3Myw4MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsOTUsNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsODMsNTcsOTUsNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsODMsNTcsOTUsNjksNjksNjksNjksMCwyMjQsODUsMCwwLDAsMTksMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsNzEsMTExLDExNiwzMiwxMDAsOTcsMTE2LDk3LDMyLDAsMCwwLDAsMCwwLDAsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDAsMCwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwxMDQsMTA1LDExNiwzMywwLDAsMTAwLDExMSwxMTAsMTAxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMTYsMTA1LDExMCwxMDMsMzIsMTE1LDEwNCwxMDUsMTE2LDMzLDAsMCwwLDAsMCw3Niw2NSw4Myw3MCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTEsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTUsMTA5LDk3LDEwMywxMDUsOTksNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTIwLDIwLDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw3Nyw5NywxMDMsMTA1LDk5LDMyLDExNCwxMDEsOTcsMTAwLDMzLDAsMCwwLDAsMCwxMTIsOTcsMTE0LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDAsMCwxMTIsOTcsMTE0LDExNSwxMDUsMTEwLDEwMywzMiw5OSwxMDQsMTE3LDExMCwxMDcsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNTAsOTksMTA0LDExNywxMTAsMTA3LDk1LDExNiw5Nyw5OCwxMDgsMTAxLDk1LDExNCwxMDEsOTcsMTAwLDk1LDEwMSwxMTQsMTE0LDExMSwxMTQsNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDIyNCwyMCwwLDAsODAsMzksMCwwLDAsMCwwLDAsNjcsMTA0LDExNywxMTAsMTA3LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMSwxMDIsMTAyLDExNSwxMDEsMTE2LDMyLDYxLDYxLDMyLDQ1LDQ5LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE2LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTYsMTA1LDEwOSwxMDEsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTEsMTEwLDExMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsODAsMjEsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNTQsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDk1LDk5LDEwNCwxMTcsMTEwLDEwNyw5NSwxMTYsOTcsOTgsMTA4LDEwMSw5NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDY5LDAsMCwwLDIyNCw4NSwwLDAsMTI4LDIxLDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw5OSwxMDQsMTE3LDExMCwxMDcsOTUsMTE1LDEwNSwxMjIsMTAxLDMyLDYxLDYxLDMyLDExNywxMDUsMTEwLDExNiw0NiwxMDksOTcsMTIwLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE2LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTYsMTA1LDEwOSwxMDEsNDQsMzIsOTksOTcsMTA4LDEwOCwzMiw0OSw0NSw1Niw0OCw0OCw0NSw2OCw2NSw3MCw4NSw4MSwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsNDYsMCwwLDAsMCwwLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiw5OSwxMTEsMTE3LDExMCwxMTYsMzIsMTA1LDExNSw1OCwzMiwwLDAsOTksMTE2LDExMSw5MSwwLDAsMCwwLDkzLDU4LDMyLDAsMCwwLDAsMCw4NCwxMDQsMTAxLDMyLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDIxLDAsMCw2NiwwLDAsMCw2NywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTEyLDIxLDAsMCw2OCwwLDAsMCw2OSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDg0LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTksOTcsMTE1LDMyLDk3LDMyLDExMiwxMTQsMTExLDk4LDEwOCwxMDEsMTA5LDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwwLDAsMCwwLDAsMCwwLDAsMCw4LDIxLDAsMCw3MCwwLDAsMCw3MSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsMzIsMTAxLDExMCw5OSwxMTEsMTAwLDEwMSwxMDAsMCwwLDExOCwxMDgsMTE0LDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMzIsMTE0LDEwMSw5NywxMDAsMzMsMCwwLDAsMCwwLDAsMCwwLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsMzIsMTE4LDEwOCwxMTQsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwwLDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw0OSw1MSwxMTAsMTExLDk1LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsOTUsMTE4LDEwOCwxMTQsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMzIsMjMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDExMiwxMTcsMTE1LDEwNCwxMDUsMTEwLDEwMywzMywwLDAsMCwwLDAsMCwwLDAsNzgsMTExLDMyLDc2LDY1LDgzLDEyMiwxMDUsMTEyLDMyLDg2LDc2LDgyLDMyLDExOSw5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDg2LDc2LDgyLDExNSwzMiwxMTUsMTAxLDk5LDExNiwxMDUsMTExLDExMCwwLDAsMCwwLDAsMCwwLDAsMCw2NCwyMywwLDAsNzIsMCwwLDAsNzMsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDUzLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsOTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiw5NSwxMTcsMTEwLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDY5LDAsMCwwLDAsMjI0LDg1LDAsMCwxNjgsMjMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDMyLDEwNSwxMTUsNTgsMzIsMCwxMTYsMTExLDExNiw5NywxMDgsMzIsMTA1LDExNiwxMDEsMTA5LDExNSw1OCwzMiwwLDAsMCw4MCw5NywxMTQsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMTE1LDMyLDExMCwxMTEsMTE5LDMzLDAsMCwwLDAsMCwwLDgwLDExNywxMTUsMTA0LDEwNSwxMTAsMTAzLDMyLDEwNSwxMTYsMTAxLDEwOSwzMiw5NywxMTYsMzIsMTA1LDExMCwxMDAsMTAxLDEyMCw1OCwzMiwwLDc5LDExMCwxMDgsMTIxLDMyLDc2LDY1LDgzLDEyMiwxMDUsMTEyLDMyLDgwLDc5LDczLDc4LDg0LDg3LDczLDgzLDY5LDMyLDY3LDcyLDg1LDc4LDc1LDY5LDY4LDMyLDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwwLDAsMCwwLDAsMjA4LDIzLDAsMCw3NCwwLDAsMCw3NSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1NSw5OCw5NywxMDAsOTUsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk1LDk5LDk3LDEwOCwxMDgsNjksMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTM2LDI0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNjgsMjQsMCwwLDc2LDAsMCwwLDc3LDAsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsMjYsMCwwLDc4LDAsMCwwLDc5LDAsMCwwLDI4LDAsMCwwLDI3LDAsMCwwLDgwLDAsMCwwLDgxLDAsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDI5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDk1LDk1LDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw1NCw5NSw5NSwxMDIsMTE3LDExMCw5OSw3Myw5MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw1MCw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDQ5LDQ5LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTExLDExNCwxMTUsNjksMTE4LDY5LDg1LDEwOCw4Miw3OCw4Myw1MSw5NSw1NCwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDY5LDY5LDk1LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDgzLDY2LDk1LDY5LDY5LDcwLDExOCw4Myw2NSw5NSw2OSw2OSw2OSwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsNTQsOTUsOTUsOTgsOTcsMTE1LDEwMSw3Myw3MCwxMTgsODIsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1MCwxMDUsMTExLDU0LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNjksNjksNjksNjksMCwwLDAsMCwxMjAsODQsMCwwLDIwOCwyNSwwLDAsMjI0LDg1LDAsMCw1NiwyNSwwLDAsOCwyNiwwLDAsMCwwLDAsMCw5MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDQ5LDQ5LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTExLDExNCwxMTUsNjksMTE4LDY5LDg1LDEwOCw4Miw3OCw4Myw0OCw5NSw1NCwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDY5LDY5LDk1LDAsMCwwLDEyMCw4NCwwLDAsMzIsMjYsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNDksMTExLDEwOCwxMDAsOTUsMTE1LDExNiwxMjEsMTA4LDEwMSw5NSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTA1LDExMSwxMTAsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTM2LDI2LDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDQ5LDUyLDExMCwxMTEsMTE2LDk1LDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMDEsMTAwLDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxOTIsMjYsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDg0LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwxMTAsMzksMTE2LDMyLDExNSwxMDEsMTAxLDEwOSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTAxLDEwMCwwLDAsMCwwLDAsMCwyMjQsMjYsMCwwLDgyLDAsMCwwLDgzLDAsMCwwLDIyLDAsMCwwLDAsMCwwLDAsODQsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEwMSwxMDEsMTA5LDExNSwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTgsMTAxLDMyLDExMSwxMDgsMTAwLDMyLDExNSwxMTYsMTIxLDEwOCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsMCwwLDAsMCwwLDAsMCwwLDE3NiwyNiwwLDAsODQsMCwwLDAsODUsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExOCw5NywxMDgsMTA1LDEwMCwwLDAsMCwwLDAsMTUyLDIwLDAsMCw4NiwwLDAsMCw4NywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDEwMywxMTEsMTA1LDExMCwxMDMsMzIsMTAwLDExMSwxMTksMTEwLDMzLDAsMCwwLDAsMCwwLDAsMCwwLDEyOCwyOCwwLDAsODgsMCwwLDAsODksMCwwLDAsOTAsMCwwLDAsMzAsMCwwLDAsOTEsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDgsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSwxMTIsMTE2LDExNCw5NSwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsNzMsODAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1MCwxMDUsMTExLDU0LDExNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDksNDgsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDIsMTA1LDEwOCwxMDEsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw1NSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw1NSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDI0MCwyNywwLDAsMTQ0LDM4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwxMjAsMjksMCwwLDkyLDAsMCwwLDkzLDAsMCwwLDk0LDAsMCwwLDMxLDAsMCwwLDk1LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw1MSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw1MSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwyMjQsODUsMCwwLDgsMjksMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDExOCwxMTEsMTA1LDEwMCwwLDAsMCwwLDk4LDExMSwxMTEsMTA4LDAsMCwwLDAsOTksMTA0LDk3LDExNCwwLDAsMCwwLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDk5LDEwNCw5NywxMTQsMCwwLDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsOTksMTA0LDk3LDExNCwwLDAsMCwxMTUsMTA0LDExMSwxMTQsMTE2LDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDEwNCwxMTEsMTE0LDExNiwwLDAsMTA1LDExMCwxMTYsMCwwLDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMCwwLDAsMCwxMDgsMTExLDExMCwxMDMsMCwwLDAsMCwxMTcsMTEwLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDEwOCwxMTEsMTEwLDEwMywwLDAsMCwxMDIsMTA4LDExMSw5NywxMTYsMCwwLDAsMTAwLDExMSwxMTcsOTgsMTA4LDEwMSwwLDAsMTE1LDExNiwxMDAsNTgsNTgsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMCwwLDAsMCwwLDExNSwxMTYsMTAwLDU4LDU4LDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjAsMTE3LDExMCwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiw5OSwxMDQsOTcsMTE0LDYyLDAsMCwwLDAsMCwwLDAsMCwxMTUsMTE2LDEwMCw1OCw1OCwxMTksMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMCwwLDAsMCwxMDEsMTA5LDExNSw5OSwxMTQsMTA1LDExMiwxMTYsMTAxLDExMCw1OCw1OCwxMTgsOTcsMTA4LDAsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNTgsNTgsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE4LDEwNSwxMDEsMTE5LDAsNzgsNDksNDgsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNDksNDksMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE4LDEwNSwxMDEsMTE5LDY5LDAsMCwwLDAsMCwxMjAsODQsMCwwLDIwMCwzMCwwLDAsNzgsNDksNDgsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNTEsMTE4LDk3LDEwOCw2OSwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDI0MCwzMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDksOTUsOTUsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw5NSw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDczLDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDEyMCw4NCwwLDAsODAsMzEsMCwwLDY0LDg2LDAsMCwxNiwzMSwwLDAsMCwwLDAsMCwxLDAsMCwwLDEyMCwzMSwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTAsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw3MywxMDQsNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDEwNCw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3MywxMDQsNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwxNTIsMzEsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMjAsMzEsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDk5LDY5LDY5LDY5LDY5LDAsMCw2NCw4NiwwLDAsMjQwLDMxLDAsMCwwLDAsMCwwLDEsMCwwLDAsMTIwLDMxXSwiaTgiLEFMTE9DX05PTkUsUnVudGltZS5HTE9CQUxfQkFTRSk7YWxsb2NhdGUoWzIwOCwzNiwwLDAsOTYsMCwwLDAsOTcsMCwwLDAsMjksMCwwLDAsMjUsMCwwLDAsMjMsMCwwLDAsMjMsMCwwLDAsMzAsMCwwLDAsMzEsMCwwLDAsMjYsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMzIsMCwwLDAsMjcsMCwwLDAsMzMsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDExNSwxMTYsMTAwLDExMSwxMTcsMTE2LDk4LDExNywxMDIsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDE3NiwzNiwwLDAsMTM2LDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsNTYsMzcsMCwwLDk4LDAsMCwwLDk5LDAsMCwwLDMwLDAsMCwwLDI1LDAsMCwwLDIzLDAsMCwwLDIzLDAsMCwwLDM0LDAsMCwwLDMxLDAsMCwwLDI2LDAsMCwwLDM1LDAsMCwwLDM2LDAsMCwwLDM0LDAsMCwwLDI4LDAsMCwwLDM1LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMTUsMTE2LDEwMCwxMDUsMTEwLDk4LDExNywxMDIsNzMsMTE5LDY5LDY5LDAsMjI0LDg1LDAsMCwzMiwzNywwLDAsMTM2LDQ0LDAsMCwwLDAsMCwwLDExNywxMTAsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsMTA4LDExMSw5OSw5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDMyLDEwNSwxMTAsMTEyLDExNywxMTYsMCwwLDAsMCwwLDAsMCwyMDgsMzcsMCwwLDEwMCwwLDAsMCwxMDEsMCwwLDAsMzEsMCwwLDAsMjIsMCwwLDAsMjQsMCwwLDAsMjQsMCwwLDAsMzcsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMzgsMCwwLDAsMjYsMCwwLDAsMzYsMCwwLDAsMjksMCwwLDAsMzcsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDExNSwxMTYsMTAwLDExMSwxMTcsMTE2LDk4LDExNywxMDIsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTc2LDM3LDAsMCw3Miw0NCwwLDAsMCwwLDAsMCwwLDAsMCwwLDU2LDM4LDAsMCwxMDIsMCwwLDAsMTAzLDAsMCwwLDMyLDAsMCwwLDIyLDAsMCwwLDI0LDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDM5LDAsMCwwLDQwLDAsMCwwLDM4LDAsMCwwLDI0LDAsMCwwLDM5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMTUsMTE2LDEwMCwxMDUsMTEwLDk4LDExNywxMDIsNzMsOTksNjksNjksMCwyMjQsODUsMCwwLDMyLDM4LDAsMCw3Miw0NCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSw5OSwxMTEsMTE3LDExMCwxMTYsNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsNzIsMzgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Nyw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExOSwxMDEsOTcsMTA3LDk1LDk5LDExMSwxMTcsMTEwLDExNiw2OSwwLDAsMCw2NCw4NiwwLDAsMTEyLDM4LDAsMCwwLDAsMCwwLDEsMCwwLDAsMTA0LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMjMyLDM4LDAsMCwxMDQsMCwwLDAsMTA1LDAsMCwwLDQxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MCwzOSwwLDAsMTA2LDAsMCwwLDEwNywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDgzLDExNiw0OSw0OSwxMDgsMTExLDEwMywxMDUsOTksOTUsMTAxLDExNCwxMTQsMTExLDExNCwwLDIyNCw4NSwwLDAsMjE2LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0MCwzOSwwLDAsMTA0LDAsMCwwLDEwOCwwLDAsMCw0MSwwLDAsMCwwLDAsMCwwLDgzLDExNiw0OSw1MCwxMDgsMTAxLDExMCwxMDMsMTE2LDEwNCw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDE2LDM5LDAsMCwyMzIsMzgsMCwwLDAsMCwwLDAsODMsMTE2LDQ5LDUxLDExNCwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCw1NiwzOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDEwMywxMDEsMTEwLDEwMSwxMTQsMTA1LDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1OCwzMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDIwMCwzOSwwLDAsMTA5LDAsMCwwLDExMCwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MCwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDY5LDAsMCwyMjQsODUsMCwwLDE3NiwzOSwwLDAsODAsMzksMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMSwxMTQsMTE0LDExMSwxMTQsOTUsOTksOTcsMTE2LDEwMSwxMDMsMTExLDExNCwxMjEsNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMjE2LDM5LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTAsOTUsOTUsMTAwLDExMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw2OSwwLDAsMjI0LDg1LDAsMCwwLDQwLDAsMCwyNDgsMzksMCwwLDAsMCwwLDAsMCwwLDAsMCwxMjAsNDAsMCwwLDExMSwwLDAsMCwxMTIsMCwwLDAsNDIsMCwwLDAsMjIsMCwwLDAsMzAsMCwwLDAsMzEsMCwwLDAsMjMsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNTIsOTUsOTUsMTAzLDEwMSwxMTAsMTAxLDExNCwxMDUsOTksOTUsMTAxLDExNCwxMTQsMTExLDExNCw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDgwLDQwLDAsMCwyNCw0MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIxNiw0MCwwLDAsMTEzLDAsMCwwLDExNCwwLDAsMCw0MywwLDAsMCwyNCwwLDAsMCwzMCwwLDAsMCwzMSwwLDAsMCwyNSwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw1MSw5NSw5NSwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDk1LDk5LDk3LDExNiwxMDEsMTAzLDExMSwxMTQsMTIxLDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNzYsNDAsMCwwLDI0LDQwLDAsMCwwLDAsMCwwLDEwOSwxMTcsMTE2LDEwMSwxMjAsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDk3LDEwNSwxMDgsMTAxLDEwMCwwLDAsMCwwLDAsMCwwLDEwMSw5OSwzMiw2MSw2MSwzMiw0OCwwLDQ3LDg1LDExNSwxMDEsMTE0LDExNSw0NywxMTgsMTAxLDExNCwxMDksOTcsNDcsMTE2LDEwOSwxMTIsNDcsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNDcsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDcsMTA4LDEwNSw5OCw0NywxMDgsMTA1LDk4LDk5LDEyMCwxMjAsNDcsMTA5LDExNywxMTYsMTAxLDEyMCw0Niw5OSwxMTIsMTEyLDAsMTE3LDExMCwxMDgsMTExLDk5LDEwNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywwLDAsMCwwLDAsMCwwLDAsNzIsNDQsMCwwLDExNSwwLDAsMCwxMTYsMCwwLDAsMjYsMCwwLDAsMjIsMCwwLDAsMjQsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMzgsMCwwLDAsMjYsMCwwLDAsMzYsMCwwLDAsMjQsMCwwLDAsMzksMCwwLDAsMCwwLDAsMCwxMzYsNDQsMCwwLDExNywwLDAsMCwxMTgsMCwwLDAsMzMsMCwwLDAsMjUsMCwwLDAsMjMsMCwwLDAsMjMsMCwwLDAsMzQsMCwwLDAsMzEsMCwwLDAsMjYsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMzIsMCwwLDAsMjgsMCwwLDAsMzUsMCwwLDAsOCwwLDAsMCwwLDAsMCwwLDE5Miw0NCwwLDAsNTYsMCwwLDAsNTcsMCwwLDAsMjQ4LDI1NSwyNTUsMjU1LDI0OCwyNTUsMjU1LDI1NSwxOTIsNDQsMCwwLDU4LDAsMCwwLDU5LDAsMCwwLDgsMCwwLDAsMCwwLDAsMCw4LDQ1LDAsMCwxMTksMCwwLDAsMTIwLDAsMCwwLDI0OCwyNTUsMjU1LDI1NSwyNDgsMjU1LDI1NSwyNTUsOCw0NSwwLDAsMTIxLDAsMCwwLDEyMiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsODAsNDUsMCwwLDEyMywwLDAsMCwxMjQsMCwwLDAsMjUyLDI1NSwyNTUsMjU1LDI1MiwyNTUsMjU1LDI1NSw4MCw0NSwwLDAsMTI1LDAsMCwwLDEyNiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsMTUyLDQ1LDAsMCwxMjcsMCwwLDAsMTI4LDAsMCwwLDI1MiwyNTUsMjU1LDI1NSwyNTIsMjU1LDI1NSwyNTUsMTUyLDQ1LDAsMCwxMjksMCwwLDAsMTMwLDAsMCwwLDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwwLDAsMCwwLDAsMCwwLDAsMTE3LDExMCwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOTYsNDMsMCwwLDEzMSwwLDAsMCwxMzIsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEzNiw0MywwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwxMDUsMTExLDExNSw5NSw5OCw5NywxMTUsMTAxLDU4LDU4LDk5LDEwOCwxMDEsOTcsMTE0LDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDEwNSwxMTEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNTUsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDY0LDQzLDAsMCwyMDAsMzksMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDEwNSwxMTEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNjksMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDExMiw0MywwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk4LDk3LDExNSwxMDUsOTksOTUsMTA1LDExMSwxMTUsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNDQsNDMsMCwwLDEzNiw0MywwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTExLDExNSw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMjA4LDQzLDAsMCwxMzYsNDMsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUzLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwxNiw0NCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUzLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDgwLDQ0LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTEsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwxNDQsNDQsMCwwLDAsMCwwLDAsMSwwLDAsMCwxOTIsNDMsMCwwLDMsMjQ0LDI1NSwyNTUsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUxLDk4LDk3LDExNSwxMDUsOTksOTUsMTA1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwyMTYsNDQsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDQ0LDAsMCwzLDI0NCwyNTUsMjU1LDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MSw5OCw5NywxMTUsMTA1LDk5LDk1LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSwwLDAsNjQsODYsMCwwLDMyLDQ1LDAsMCwwLDAsMCwwLDEsMCwwLDAsMTkyLDQzLDAsMCwzLDI0NCwyNTUsMjU1LDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MSw5OCw5NywxMTUsMTA1LDk5LDk1LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCw2NCw4NiwwLDAsMTA0LDQ1LDAsMCwwLDAsMCwwLDEsMCwwLDAsMCw0NCwwLDAsMywyNDQsMjU1LDI1NSw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTExLDExNSwxMTYsMTE0LDEwMSw5NywxMDksNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDY5LDY5LDAsNjQsODYsMCwwLDE3Niw0NSwwLDAsMywwLDAsMCwyLDAsMCwwLDE5Miw0NCwwLDAsMiwwLDAsMCw4MCw0NSwwLDAsMiw4LDAsMCwwLDAsMCwwLDcyLDQ2LDAsMCwxMzUsMCwwLDAsMTM2LDAsMCwwLDQ0LDAsMCwwLDIyLDAsMCwwLDMwLDAsMCwwLDMxLDAsMCwwLDI2LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU3LDk1LDk1LDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSw2OSwwLDAsMCwyMjQsODUsMCwwLDQwLDQ2LDAsMCwyNCw0MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDU2LDYwLDAsMCwxMzcsMCwwLDAsMTM4LDAsMCwwLDEzOSwwLDAsMCwyMiwwLDAsMCwyNSwwLDAsMCwzMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw5Niw2MCwwLDAsMTQwLDAsMCwwLDE0MSwwLDAsMCwxMzksMCwwLDAsMjMsMCwwLDAsMjYsMCwwLDAsMzMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsNjUsMCwwLDE0MiwwLDAsMCwxNDMsMCwwLDAsMTM5LDAsMCwwLDIyLDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDMxLDAsMCwwLDMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw5Nyw5OCw5OSwxMDAsMTAxLDEwMiw2NSw2Niw2Nyw2OCw2OSw3MCwxMjAsODgsNDMsNDUsMTEyLDgwLDEwNSw3MywxMTAsNzgsMCwwLDAsMCwwLDAsMCwwLDM3LDExMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDE2OCw2NSwwLDAsMTQ0LDAsMCwwLDE0NSwwLDAsMCwxMzksMCwwLDAsMzMsMCwwLDAsMzQsMCwwLDAsMzUsMCwwLDAsMzYsMCwwLDAsMzcsMCwwLDAsMzgsMCwwLDAsMzksMCwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsNDMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTA0LDY2LDAsMCwxNDYsMCwwLDAsMTQ3LDAsMCwwLDEzOSwwLDAsMCwyNSwwLDAsMCwyNiwwLDAsMCw0NCwwLDAsMCwyNywwLDAsMCw0NSwwLDAsMCwyMiwwLDAsMCwyMywwLDAsMCwyOCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjcsMCwwLDE0OCwwLDAsMCwxNDksMCwwLDAsMTM5LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDQ2LDAsMCwwLDMxLDAsMCwwLDQ3LDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDAsMCwwLDAsMzcsMTEyLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDAsNjIsMCwwLDE1MCwwLDAsMCwxNTEsMCwwLDAsMTM5LDAsMCwwLDQ1LDAsMCwwLDQ4LDAsMCwwLDQ5LDAsMCwwLDUwLDAsMCwwLDUxLDAsMCwwLDUyLDAsMCwwLDIyLDAsMCwwLDI0OCwyNTUsMjU1LDI1NSw0MCw2MiwwLDAsNDYsMCwwLDAsNDcsMCwwLDAsNDgsMCwwLDAsNDksMCwwLDAsNTAsMCwwLDAsNTEsMCwwLDAsNTIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsNzIsNTgsMzcsNzcsNTgsMzcsODMsMzcsMTA5LDQ3LDM3LDEwMCw0NywzNywxMjEsMzcsODksNDUsMzcsMTA5LDQ1LDM3LDEwMCwzNyw3Myw1OCwzNyw3Nyw1OCwzNyw4MywzMiwzNywxMTIsMCwwLDAsMCwwLDM3LDcyLDU4LDM3LDc3LDAsMCwwLDM3LDcyLDU4LDM3LDc3LDU4LDM3LDgzLDAsMCwwLDAsMjAwLDYyLDAsMCwxNTIsMCwwLDAsMTUzLDAsMCwwLDEzOSwwLDAsMCw1MywwLDAsMCw1MywwLDAsMCw1NCwwLDAsMCw1NSwwLDAsMCw1NiwwLDAsMCw1NywwLDAsMCwyMywwLDAsMCwyNDgsMjU1LDI1NSwyNTUsMjAwLDYyLDAsMCw1NCwwLDAsMCw1NSwwLDAsMCw1NiwwLDAsMCw1NywwLDAsMCw1OCwwLDAsMCw1OSwwLDAsMCw2MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNywwLDAsMCw3MiwwLDAsMCw1OCwwLDAsMCwzNywwLDAsMCw3NywwLDAsMCw1OCwwLDAsMCwzNywwLDAsMCw4MywwLDAsMCwzNywwLDAsMCwxMDksMCwwLDAsNDcsMCwwLDAsMzcsMCwwLDAsMTAwLDAsMCwwLDQ3LDAsMCwwLDM3LDAsMCwwLDEyMSwwLDAsMCwzNywwLDAsMCw4OSwwLDAsMCw0NSwwLDAsMCwzNywwLDAsMCwxMDksMCwwLDAsNDUsMCwwLDAsMzcsMCwwLDAsMTAwLDAsMCwwLDM3LDAsMCwwLDczLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDgzLDAsMCwwLDMyLDAsMCwwLDM3LDAsMCwwLDExMiwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDcyLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsNzIsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMCwwLDAsMCw4OCw2MywwLDAsMTU0LDAsMCwwLDE1NSwwLDAsMCwxMzksMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTkyLDYzLDAsMCwxNTYsMCwwLDAsMTU3LDAsMCwwLDEzOSwwLDAsMCwyMywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNzYsNjAsMCwwLDE1OCwwLDAsMCwxNTksMCwwLDAsMTM5LDAsMCwwLDYxLDAsMCwwLDYyLDAsMCwwLDM0LDAsMCwwLDM1LDAsMCwwLDM2LDAsMCwwLDM3LDAsMCwwLDYzLDAsMCwwLDM4LDAsMCwwLDM5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI0MCw2MCwwLDAsMTYwLDAsMCwwLDE2MSwwLDAsMCwxMzksMCwwLDAsNjQsMCwwLDAsNjUsMCwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsNDMsMCwwLDAsNjYsMCwwLDAsNDQsMCwwLDAsNDUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDgsNjEsMCwwLDE2MiwwLDAsMCwxNjMsMCwwLDAsMTM5LDAsMCwwLDY3LDAsMCwwLDY4LDAsMCwwLDQ2LDAsMCwwLDQ3LDAsMCwwLDQ4LDAsMCwwLDQ5LDAsMCwwLDY5LDAsMCwwLDUwLDAsMCwwLDUxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDExMiw2MSwwLDAsMTY0LDAsMCwwLDE2NSwwLDAsMCwxMzksMCwwLDAsNzAsMCwwLDAsNzEsMCwwLDAsNTIsMCwwLDAsNTMsMCwwLDAsNTQsMCwwLDAsNTUsMCwwLDAsNzIsMCwwLDAsNTYsMCwwLDAsNTcsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTQ0LDY3LDAsMCwxNjYsMCwwLDAsMTY3LDAsMCwwLDEzOSwwLDAsMCwyNCwwLDAsMCwyNSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1NywwLDAsMCwwLDAsMCwzNyw3NiwxMDIsMCwwLDAsMCwwLDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDAsMCwwLDAsMzIsNjgsMCwwLDE2OCwwLDAsMCwxNjksMCwwLDAsMTM5LDAsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDY4LDAsMCwxNzAsMCwwLDAsMTcxLDAsMCwwLDEzOSwwLDAsMCwyMiwwLDAsMCw1OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNyw0Niw0OCw3NiwxMDIsMCwwLDAsMCwwLDAsMCw2NCw2OSwwLDAsMTcyLDAsMCwwLDE3MywwLDAsMCwxMzksMCwwLDAsMjMsMCwwLDAsNTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyNCw2NCwwLDAsMTc0LDAsMCwwLDE3NSwwLDAsMCwxMzksMCwwLDAsMzQsMCwwLDAsMzMsMCwwLDAsNTgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODAsNjQsMCwwLDE3NiwwLDAsMCwxNzcsMCwwLDAsMTM5LDAsMCwwLDM1LDAsMCwwLDM0LDAsMCwwLDU5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTgsMTAxLDk5LDExNiwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNiw2MCwwLDAsMTc4LDAsMCwwLDE3OSwwLDAsMCwxMzksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMzIsNTYsMCwwLDE4MCwwLDAsMCwxODEsMCwwLDAsMTM5LDAsMCwwLDQwLDAsMCwwLDM2LDAsMCwwLDQxLDAsMCwwLDM3LDAsMCwwLDQyLDAsMCwwLDIyLDAsMCwwLDM4LDAsMCwwLDI0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIwMCw1NywwLDAsMTgyLDAsMCwwLDE4MywwLDAsMCwxMzksMCwwLDAsMjIsMCwwLDAsMjMsMCwwLDAsMjUsMCwwLDAsNzMsMCwwLDAsNzQsMCwwLDAsMjYsMCwwLDAsNzUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTkyLDU5LDAsMCwxODQsMCwwLDAsMTg1LDAsMCwwLDEzOSwwLDAsMCw3NiwwLDAsMCw3NywwLDAsMCw2MCwwLDAsMCw2MSwwLDAsMCw2MiwwLDAsMCwwLDAsMCwwLDIzMiw1OSwwLDAsMTg2LDAsMCwwLDE4NywwLDAsMCwxMzksMCwwLDAsNzgsMCwwLDAsNzksMCwwLDAsNjMsMCwwLDAsNjQsMCwwLDAsNjUsMCwwLDAsMTE2LDAsMCwwLDExNCwwLDAsMCwxMTcsMCwwLDAsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMDIsOTcsMTA4LDExNSwxMDEsMCwwLDAsMTAyLDAsMCwwLDk3LDAsMCwwLDEwOCwwLDAsMCwxMTUsMCwwLDAsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsMTA5LDAsMCwwLDQ3LDAsMCwwLDM3LDAsMCwwLDEwMCwwLDAsMCw0NywwLDAsMCwzNywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDcyLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDgzLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNyw5NywzMiwzNyw5OCwzMiwzNywxMDAsMzIsMzcsNzIsNTgsMzcsNzcsNTgsMzcsODMsMzIsMzcsODksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNywwLDAsMCw5NywwLDAsMCwzMiwwLDAsMCwzNywwLDAsMCw5OCwwLDAsMCwzMiwwLDAsMCwzNywwLDAsMCwxMDAsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsNzIsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsODksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDczLDU4LDM3LDc3LDU4LDM3LDgzLDMyLDM3LDExMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsNzMsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsMTEyLDAsMCwwLDAsMCwwLDAsMTA4LDExMSw5OSw5NywxMDgsMTAxLDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsMCwwLDAsMCwwLDAsMCwzMiw1NiwwLDAsMTg4LDAsMCwwLDE4OSwwLDAsMCwxMzksMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTQsMTA4LDExMSw5OSw5NywxMDgsMTAxLDUzLDEwMiw5Nyw5OSwxMDEsMTE2LDY5LDAsMCwwLDIyNCw4NSwwLDAsOCw1NiwwLDAsMTA0LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDU2LDAsMCwxODgsMCwwLDAsMTkwLDAsMCwwLDEzOSwwLDAsMCwzOSwwLDAsMCwyMywwLDAsMCwyNCwwLDAsMCwyNSwwLDAsMCw0MywwLDAsMCw0MCwwLDAsMCw0NCwwLDAsMCw0MSwwLDAsMCw0NSwwLDAsMCwyNiwwLDAsMCw0MiwwLDAsMCwyNywwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1Myw5OSwxMTYsMTIxLDExMiwxMDEsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDk5LDExNiwxMjEsMTEyLDEwMSw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMTIwLDg0LDAsMCwxNDQsNTYsMCwwLDY0LDg2LDAsMCwxMjAsNTYsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNTYsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUzLDk5LDExNiwxMjEsMTEyLDEwMSw3Myw5OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwyMDgsNTYsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNTYsMCwwLDIsMCwwLDAsMCwwLDAsMCwxMjgsNTcsMCwwLDE4OCwwLDAsMCwxOTEsMCwwLDAsMTM5LDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDI4LDAsMCwwLDgwLDAsMCwwLDgxLDAsMCwwLDI5LDAsMCwwLDgyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTAwLDEwMSw5OSwxMTgsMTE2LDczLDk5LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsOTUsOTgsOTcsMTE1LDEwMSw2OSwwLDAsMTIwLDg0LDAsMCw5Niw1NywwLDAsNjQsODYsMCwwLDU2LDU3LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTIwLDU3LDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTAwLDEwMSw5OSwxMTgsMTE2LDczLDExOSw5OSw0OSw0OSw5NSw5NSwxMDksOTgsMTE1LDExNiw5NywxMTYsMTAxLDk1LDExNiw2OSw2OSwwLDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwxNjAsNTcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMjAsNTcsMCwwLDIsMCwwLDAsMCwwLDAsMCw2NCw1OCwwLDAsMTg4LDAsMCwwLDE5MiwwLDAsMCwxMzksMCwwLDAsMjYsMCwwLDAsMjcsMCwwLDAsMzAsMCwwLDAsODMsMCwwLDAsODQsMCwwLDAsMzEsMCwwLDAsODUsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsNzMsNjgsMTE1LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwyNCw1OCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDEyMCw1NywwLDAsMiwwLDAsMCwwLDAsMCwwLDE4NCw1OCwwLDAsMTg4LDAsMCwwLDE5MywwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsNzMsNjgsMTA1LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwxNDQsNTgsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMjAsNTcsMCwwLDIsMCwwLDAsMCwwLDAsMCw0OCw1OSwwLDAsMTg4LDAsMCwwLDE5NCwwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU0LDk1LDk1LDExMCw5NywxMTQsMTE0LDExMSwxMTksOTUsMTE2LDExMSw5NSwxMTcsMTE2LDEwMiw1Niw3Myw3NiwxMDYsNTEsNTAsNjksNjksNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDgsNTksMCwwLDE4NCw1OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDE1Miw1OSwwLDAsMTg4LDAsMCwwLDE5NSwwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU1LDk1LDk1LDExOSwxMDUsMTAwLDEwMSwxMTAsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNywxMTYsMTAyLDU2LDczLDc2LDEwNiw1MSw1MCw2OSw2OSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDExMiw1OSwwLDAsMTg0LDU4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMTAsMTE3LDEwOSwxMTIsMTE3LDExMCw5OSwxMTYsNzMsOTksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDE2OCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExMCwxMTcsMTA5LDExMiwxMTcsMTEwLDk5LDExNiw3MywxMTksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDIwOCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU0LDEwOCwxMTEsOTksOTcsMTA4LDEwMSw1Myw5NSw5NSwxMDUsMTA5LDExMiw2OSwwLDAsMCwyMjQsODUsMCwwLDI0OCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDgsMTA4LDk3LDExNiwxMDEsNzMsOTksNjksNjksMCwwLDAsMCwwLDIyNCw4NSwwLDAsMzIsNjAsMCwwLDMyLDU2LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTA4LDEwOCw5NywxMTYsMTAxLDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCw3Miw2MCwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDEwOSwxMTEsMTEwLDEwMSwxMjEsMTEyLDExNywxMTAsOTksMTE2LDczLDk5LDc2LDk4LDQ4LDY5LDY5LDY5LDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMTIwLDg0LDAsMCwxNDQsNjAsMCwwLDY0LDg2LDAsMCwxMTIsNjAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjAsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDEwOSwxMTEsMTEwLDEwMSwxMjEsMTEyLDExNywxMTAsOTksMTE2LDczLDk5LDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDAsMCw2NCw4NiwwLDAsMjA4LDYwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTY4LDYwLDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCwxMDksMTExLDExMCwxMDEsMTIxLDExMiwxMTcsMTEwLDk5LDExNiw3MywxMTksNzYsOTgsNDgsNjksNjksNjksMCwwLDAsMCwwLDY0LDg2LDAsMCwxNiw2MSwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDE2OCw2MCwwLDAsMiwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsMTA5LDExMSwxMTAsMTAxLDEyMSwxMTIsMTE3LDExMCw5OSwxMTYsNzMsMTE5LDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDAsMCw2NCw4NiwwLDAsODAsNjEsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjAsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExNiwxMDUsMTA5LDEwMSw5NSwxMDMsMTAxLDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTE2LDEwNSwxMDksMTAxLDk1LDk4LDk3LDExNSwxMDEsNjksMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyMTYsNjEsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTYsMTA1LDEwOSwxMDEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTUsMTE1LDExNiwxMTEsMTE0LDk3LDEwMywxMDEsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDI0OCw2MSwwLDAsNjQsODYsMCwwLDE0NCw2MSwwLDAsMCwwLDAsMCwzLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDI0MCw2MSwwLDAsMiwwLDAsMCwzMiw2MiwwLDAsMCw4LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTYsMTE2LDEwNSwxMDksMTAxLDk1LDEwMywxMDEsMTE2LDczLDExOSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTYsMTA1LDEwOSwxMDEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTUsMTE1LDExNiwxMTEsMTE0LDk3LDEwMywxMDEsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwxNTIsNjIsMCwwLDY0LDg2LDAsMCw4MCw2MiwwLDAsMCwwLDAsMCwzLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDI0MCw2MSwwLDAsMiwwLDAsMCwxOTIsNjIsMCwwLDAsOCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExNiwxMDUsMTA5LDEwMSw5NSwxMTIsMTE3LDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsOTUsOTUsMTE2LDEwNSwxMDksMTAxLDk1LDExMiwxMTcsMTE2LDY5LDAsMCwwLDAsMTIwLDg0LDAsMCw1Niw2MywwLDAsNjQsODYsMCwwLDI0MCw2MiwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDgwLDYzLDAsMCwwLDgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMTYsMTA1LDEwOSwxMDEsOTUsMTEyLDExNywxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsNjQsODYsMCwwLDEyMCw2MywwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDgwLDYzLDAsMCwwLDgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTUsNzMsOTksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTEsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNjksMCwxMjAsODQsMCwwLDI0OCw2MywwLDAsNjQsODYsMCwwLDIyNCw2MywwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDE2LDY0LDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTUsNzMsMTE5LDY5LDY5LDAsMCwwLDAsNjQsODYsMCwwLDU2LDY0LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTYsNjQsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDEwMywxMDEsMTE2LDczLDk5LDc4LDgzLDk1LDQ5LDU3LDEwNSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDEwMywxMDEsMTE2LDczLDk5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Miw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDIwOCw2NCwwLDAsNjQsODYsMCwwLDE4NCw2NCwwLDAsMCwwLDAsMCwxLDAsMCwwLDI0MCw2NCwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsMTEyLDY0LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMjQ4LDY0LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw3MywxMTksNzgsODMsOTUsNDksNTcsMTA1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTgsMTE3LDEwMiw5NSwxMDUsMTE2LDEwMSwxMTQsOTcsMTE2LDExMSwxMTQsNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1Nyw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw3MywxMTksNjksNjksMCwwLDAsNjQsODYsMCwwLDEyMCw2NSwwLDAsMCwwLDAsMCwxLDAsMCwwLDI0MCw2NCwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsNDgsNjUsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNDQsNjUsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDk5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDk5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Miw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMTIsMTE3LDExNiw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDQwLDY2LDAsMCw2NCw4NiwwLDAsMTYsNjYsMCwwLDAsMCwwLDAsMSwwLDAsMCw3Miw2NiwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsMjAwLDY1LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsODAsNjYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDExOSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDExOSw2OSw2OSwwLDAsMCw2NCw4NiwwLDAsMjA4LDY2LDAsMCwwLDAsMCwwLDEsMCwwLDAsNzIsNjYsMCwwLDAsMCwwLDAsNjQsODYsMCwwLDEzNiw2NiwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDIzMiw2NiwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSwxMDMsMTAxLDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMTA0LDY3LDAsMCw2NCw4NiwwLDAsMzIsNjcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMzYsNjcsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDEwNSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OSw5NSw5NSwxMDksMTExLDExMCwxMDEsMTIxLDk1LDEwMywxMDEsMTE2LDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyNDgsNjcsMCwwLDY0LDg2LDAsMCwxNzYsNjcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwyNCw2OCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSwxMTIsMTE3LDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTEyLDExNywxMTYsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMTM2LDY4LDAsMCw2NCw4NiwwLDAsNjQsNjgsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTEyLDExNywxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OSw5NSw5NSwxMDksMTExLDExMCwxMDEsMTIxLDk1LDExMiwxMTcsMTE2LDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyNCw2OSwwLDAsNjQsODYsMCwwLDIwOCw2OCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDU2LDY5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY1LDAsMCwwLDc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MCwwLDAsMCw3NywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY1LDc3LDAsMCwwLDAsMCwwLDgwLDc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NCwwLDAsMCw5NywwLDAsMCwxMTAsMCwwLDAsMTE3LDAsMCwwLDk3LDAsMCwwLDExNCwwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw3MCwwLDAsMCwxMDEsMCwwLDAsOTgsMCwwLDAsMTE0LDAsMCwwLDExNywwLDAsMCw5NywwLDAsMCwxMTQsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NywwLDAsMCw5NywwLDAsMCwxMTQsMCwwLDAsOTksMCwwLDAsMTA0LDAsMCwwLDAsMCwwLDAsNjUsMCwwLDAsMTEyLDAsMCwwLDExNCwwLDAsMCwxMDUsMCwwLDAsMTA4LDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwxMDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDc0LDAsMCwwLDExNywwLDAsMCwxMDgsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2NSwwLDAsMCwxMTcsMCwwLDAsMTAzLDAsMCwwLDExNywwLDAsMCwxMTUsMCwwLDAsMTE2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCwxMDEsMCwwLDAsMTEyLDAsMCwwLDExNiwwLDAsMCwxMDEsMCwwLDAsMTA5LDAsMCwwLDk4LDAsMCwwLDEwMSwwLDAsMCwxMTQsMCwwLDAsMCwwLDAsMCw3OSwwLDAsMCw5OSwwLDAsMCwxMTYsMCwwLDAsMTExLDAsMCwwLDk4LDAsMCwwLDEwMSwwLDAsMCwxMTQsMCwwLDAsMCwwLDAsMCw3OCwwLDAsMCwxMTEsMCwwLDAsMTE4LDAsMCwwLDEwMSwwLDAsMCwxMDksMCwwLDAsOTgsMCwwLDAsMTAxLDAsMCwwLDExNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjgsMCwwLDAsMTAxLDAsMCwwLDk5LDAsMCwwLDEwMSwwLDAsMCwxMDksMCwwLDAsOTgsMCwwLDAsMTAxLDAsMCwwLDExNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsOTcsMCwwLDAsMTEwLDAsMCwwLDAsMCwwLDAsNzAsMCwwLDAsMTAxLDAsMCwwLDk4LDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsOTcsMCwwLDAsMTE0LDAsMCwwLDAsMCwwLDAsNjVdLCJpOCIsQUxMT0NfTk9ORSxSdW50aW1lLkdMT0JBTF9CQVNFKzkzMjQpO2FsbG9jYXRlKFsxMTIsMCwwLDAsMTE0LDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwwLDAsMCwwLDc0LDAsMCwwLDExNywwLDAsMCwxMDgsMCwwLDAsMCwwLDAsMCw2NSwwLDAsMCwxMTcsMCwwLDAsMTAzLDAsMCwwLDAsMCwwLDAsODMsMCwwLDAsMTAxLDAsMCwwLDExMiwwLDAsMCwwLDAsMCwwLDc5LDAsMCwwLDk5LDAsMCwwLDExNiwwLDAsMCwwLDAsMCwwLDc4LDAsMCwwLDExMSwwLDAsMCwxMTgsMCwwLDAsMCwwLDAsMCw2OCwwLDAsMCwxMDEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzQsOTcsMTEwLDExNyw5NywxMTQsMTIxLDAsNzAsMTAxLDk4LDExNCwxMTcsOTcsMTE0LDEyMSwwLDAsMCwwLDAsMCwwLDAsNzcsOTcsMTE0LDk5LDEwNCwwLDAsMCw2NSwxMTIsMTE0LDEwNSwxMDgsMCwwLDAsNzcsOTcsMTIxLDAsMCwwLDAsMCw3NCwxMTcsMTEwLDEwMSwwLDAsMCwwLDc0LDExNywxMDgsMTIxLDAsMCwwLDAsNjUsMTE3LDEwMywxMTcsMTE1LDExNiwwLDAsODMsMTAxLDExMiwxMTYsMTAxLDEwOSw5OCwxMDEsMTE0LDAsMCwwLDAsMCwwLDAsNzksOTksMTE2LDExMSw5OCwxMDEsMTE0LDAsNzgsMTExLDExOCwxMDEsMTA5LDk4LDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDY4LDEwMSw5OSwxMDEsMTA5LDk4LDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDc0LDk3LDExMCwwLDAsMCwwLDAsNzAsMTAxLDk4LDAsMCwwLDAsMCw3Nyw5NywxMTQsMCwwLDAsMCwwLDY1LDExMiwxMTQsMCwwLDAsMCwwLDc0LDExNywxMTAsMCwwLDAsMCwwLDc0LDExNywxMDgsMCwwLDAsMCwwLDY1LDExNywxMDMsMCwwLDAsMCwwLDgzLDEwMSwxMTIsMCwwLDAsMCwwLDc5LDk5LDExNiwwLDAsMCwwLDAsNzgsMTExLDExOCwwLDAsMCwwLDAsNjgsMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NywwLDAsMCwxMTEsMCwwLDAsMTEwLDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDg0LDAsMCwwLDExNywwLDAsMCwxMDEsMCwwLDAsMTE1LDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw4NywwLDAsMCwxMDEsMCwwLDAsMTAwLDAsMCwwLDExMCwwLDAsMCwxMDEsMCwwLDAsMTE1LDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw4NCwwLDAsMCwxMDQsMCwwLDAsMTE3LDAsMCwwLDExNCwwLDAsMCwxMTUsMCwwLDAsMTAwLDAsMCwwLDk3LDAsMCwwLDEyMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzAsMCwwLDAsMTE0LDAsMCwwLDEwNSwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCw5NywwLDAsMCwxMTYsMCwwLDAsMTE3LDAsMCwwLDExNCwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCwxMTcsMCwwLDAsMTEwLDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsMTExLDAsMCwwLDExMCwwLDAsMCwwLDAsMCwwLDg0LDAsMCwwLDExNywwLDAsMCwxMDEsMCwwLDAsMCwwLDAsMCw4NywwLDAsMCwxMDEsMCwwLDAsMTAwLDAsMCwwLDAsMCwwLDAsODQsMCwwLDAsMTA0LDAsMCwwLDExNywwLDAsMCwwLDAsMCwwLDcwLDAsMCwwLDExNCwwLDAsMCwxMDUsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCw5NywwLDAsMCwxMTYsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMTE3LDExMCwxMDAsOTcsMTIxLDAsMCw3NywxMTEsMTEwLDEwMCw5NywxMjEsMCwwLDg0LDExNywxMDEsMTE1LDEwMCw5NywxMjEsMCw4NywxMDEsMTAwLDExMCwxMDEsMTE1LDEwMCw5NywxMjEsMCwwLDAsMCwwLDAsMCw4NCwxMDQsMTE3LDExNCwxMTUsMTAwLDk3LDEyMSwwLDAsMCwwLDAsMCwwLDAsNzAsMTE0LDEwNSwxMDAsOTcsMTIxLDAsMCw4Myw5NywxMTYsMTE3LDExNCwxMDAsOTcsMTIxLDAsMCwwLDAsMCwwLDAsMCw4MywxMTcsMTEwLDAsMCwwLDAsMCw3NywxMTEsMTEwLDAsMCwwLDAsMCw4NCwxMTcsMTAxLDAsMCwwLDAsMCw4NywxMDEsMTAwLDAsMCwwLDAsMCw4NCwxMDQsMTE3LDAsMCwwLDAsMCw3MCwxMTQsMTA1LDAsMCwwLDAsMCw4Myw5NywxMTYsMCwwLDAsMCwwLDIsMCwwLDE5MiwzLDAsMCwxOTIsNCwwLDAsMTkyLDUsMCwwLDE5Miw2LDAsMCwxOTIsNywwLDAsMTkyLDgsMCwwLDE5Miw5LDAsMCwxOTIsMTAsMCwwLDE5MiwxMSwwLDAsMTkyLDEyLDAsMCwxOTIsMTMsMCwwLDE5MiwxNCwwLDAsMTkyLDE1LDAsMCwxOTIsMTYsMCwwLDE5MiwxNywwLDAsMTkyLDE4LDAsMCwxOTIsMTksMCwwLDE5MiwyMCwwLDAsMTkyLDIxLDAsMCwxOTIsMjIsMCwwLDE5MiwyMywwLDAsMTkyLDI0LDAsMCwxOTIsMjUsMCwwLDE5MiwyNiwwLDAsMTkyLDI3LDAsMCwxOTIsMjgsMCwwLDE5MiwyOSwwLDAsMTkyLDMwLDAsMCwxOTIsMzEsMCwwLDE5MiwwLDAsMCwxNzksMSwwLDAsMTk1LDIsMCwwLDE5NSwzLDAsMCwxOTUsNCwwLDAsMTk1LDUsMCwwLDE5NSw2LDAsMCwxOTUsNywwLDAsMTk1LDgsMCwwLDE5NSw5LDAsMCwxOTUsMTAsMCwwLDE5NSwxMSwwLDAsMTk1LDEyLDAsMCwxOTUsMTMsMCwwLDIxMSwxNCwwLDAsMTk1LDE1LDAsMCwxOTUsMCwwLDEyLDE4NywxLDAsMTIsMTk1LDIsMCwxMiwxOTUsMywwLDEyLDE5NSw0LDAsMTIsMjExLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEyOCw4MywwLDAsMTk2LDAsMCwwLDE5NywwLDAsMCw4OSwwLDAsMCwwLDAsMCwwLDExNSwxMTYsMTAwLDU4LDU4LDk4LDk3LDEwMCw5NSw5OSw5NywxMTUsMTE2LDAsMCwwLDgzLDExNiw1NywxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDAsMCwwLDAsMTIwLDg0LDAsMCw4OCw4MywwLDAsODMsMTE2LDU2LDk4LDk3LDEwMCw5NSw5OSw5NywxMTUsMTE2LDAsMCwwLDAsMCwyMjQsODUsMCwwLDExMiw4MywwLDAsMCwwLDAsMCwwLDAsMCwwLDc4LDQ5LDQ4LDk1LDk1LDk5LDEyMCwxMjAsOTcsOTgsMTA1LDExOCw0OSw0OSw1NCw5NSw5NSwxMTUsMTA0LDEwNSwxMDksOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNDQsODMsMCwwLDEwNCw4MywwLDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNDksNTUsOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMjAwLDgzLDAsMCwxODQsODMsMCwwLDAsMCwwLDAsNzgsNDksNDgsOTUsOTUsOTksMTIwLDEyMCw5Nyw5OCwxMDUsMTE4LDQ5LDQ5LDU3LDk1LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw5NSwxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDY5LDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNDksNTUsOTUsOTUsMTEyLDk4LDk3LDExNSwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsNDAsODQsMCwwLDE4NCw4MywwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDAsODQsMCwwLDgwLDg0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQwLDgzLDAsMCwxOTgsMCwwLDAsMTk5LDAsMCwwLDIwMCwwLDAsMCwyMDEsMCwwLDAsNDMsMCwwLDAsMzUsMCwwLDAsMjIsMCwwLDAsMjcsMCwwLDAsMCwwLDAsMCw5Niw4NCwwLDAsMTk4LDAsMCwwLDIwMiwwLDAsMCwyMDAsMCwwLDAsMjAxLDAsMCwwLDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDg1LDAsMCwxOTgsMCwwLDAsMjAzLDAsMCwwLDIwMCwwLDAsMCwyMDEsMCwwLDAsNDUsMCwwLDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNTEsOTUsOTUsMTAyLDExNywxMTAsMTAwLDk3LDEwOSwxMDEsMTEwLDExNiw5NywxMDgsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDIyNCw4NSwwLDAsMjE2LDg0LDAsMCwxODQsODMsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwxMTIsMTcsMCwwLDY4LDExMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDI0LDg1LDAsMCw5OCwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsNDAsODUsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCw1Niw4NSwwLDAsMTA0LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCw3Miw4NSwwLDAsOTcsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDg4LDg1LDAsMCwxOTIsODQsMCwwLDEyOCwxNywwLDAsMTkyLDg0LDAsMCwxMjAsMTcsMCwwLDEwNSwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsMTIwLDg1LDAsMCwxMDYsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDEzNiw4NSwwLDAsMTA4LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwxNTIsODUsMCwwLDEwOSwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsMTY4LDg1LDAsMCwxMDIsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDE4NCw4NSwwLDAsMTAwLDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwyMDAsODUsMCwwLDAsMCwwLDAsNDAsODYsMCwwLDE5OCwwLDAsMCwyMDQsMCwwLDAsMjAwLDAsMCwwLDIwMSwwLDAsMCw0MywwLDAsMCwzNiwwLDAsMCwyMywwLDAsMCwyOCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNDgsOTUsOTUsMTE1LDEwNSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSwxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDY5LDAsMCwwLDAsMjI0LDg1LDAsMCwwLDg2LDAsMCwyNDAsODMsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMzYsODYsMCwwLDE5OCwwLDAsMCwyMDUsMCwwLDAsMjAwLDAsMCwwLDIwMSwwLDAsMCw0MywwLDAsMCwzNywwLDAsMCwyNCwwLDAsMCwyOSwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNDksOTUsOTUsMTE4LDEwOSwxMDUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwyMjQsODUsMCwwLDk2LDg2LDAsMCwyNDAsODMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMDAsODgsMCwwLDIwNiwwLDAsMCwyMDcsMCwwLDAsOTAsMCwwLDAsMCwwLDAsMCwxMTUsMTE2LDEwMCw1OCw1OCw5OCw5NywxMDAsOTUsOTcsMTA4LDEwOCwxMTEsOTksMCwwLDgzLDExNiw1Nyw5OCw5NywxMDAsOTUsOTcsMTA4LDEwOCwxMTEsOTksMCwwLDAsMCwyMjQsODUsMCwwLDE4NCw4OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwwLDEsMiwzLDQsNSw2LDcsOCw5LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMCwwLDAsMCwwLDAsMCwwLDEsMiw0LDcsMyw2LDUsMCwwLDAsMCwwLDAsMCwwLDEwNSwxMTAsMTAyLDEwNSwxMTAsMTA1LDExNiwxMjEsMCwwLDAsMCwwLDAsMCwwLDExMCw5NywxMTAsMCwwLDAsMCwwLDk1LDExMiwxMzcsMCwyNTUsOSw0NywxNSwxMCwwLDAsMCwxMDAsMCwwLDAsMjMyLDMsMCwwLDE2LDM5LDAsMCwxNjAsMTM0LDEsMCw2NCw2NiwxNSwwLDEyOCwxNTAsMTUyLDAsMCwyMjUsMjQ1LDVdLCJpOCIsQUxMT0NfTk9ORSxSdW50aW1lLkdMT0JBTF9CQVNFKzE5NTY0KTt2YXIgdGVtcERvdWJsZVB0cj1SdW50aW1lLmFsaWduTWVtb3J5KGFsbG9jYXRlKDEyLCJpOCIsQUxMT0NfU1RBVElDKSw4KTthc3NlcnQodGVtcERvdWJsZVB0ciU4PT0wKTtmdW5jdGlvbiBjb3B5VGVtcEZsb2F0KHB0cil7SEVBUDhbdGVtcERvdWJsZVB0cl09SEVBUDhbcHRyXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzFdPUhFQVA4W3B0cisxXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzJdPUhFQVA4W3B0cisyXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzNdPUhFQVA4W3B0ciszXX1mdW5jdGlvbiBjb3B5VGVtcERvdWJsZShwdHIpe0hFQVA4W3RlbXBEb3VibGVQdHJdPUhFQVA4W3B0cl07SEVBUDhbdGVtcERvdWJsZVB0cisxXT1IRUFQOFtwdHIrMV07SEVBUDhbdGVtcERvdWJsZVB0cisyXT1IRUFQOFtwdHIrMl07SEVBUDhbdGVtcERvdWJsZVB0ciszXT1IRUFQOFtwdHIrM107SEVBUDhbdGVtcERvdWJsZVB0cis0XT1IRUFQOFtwdHIrNF07SEVBUDhbdGVtcERvdWJsZVB0cis1XT1IRUFQOFtwdHIrNV07SEVBUDhbdGVtcERvdWJsZVB0cis2XT1IRUFQOFtwdHIrNl07SEVBUDhbdGVtcERvdWJsZVB0cis3XT1IRUFQOFtwdHIrN119ZnVuY3Rpb24gX2F0ZXhpdChmdW5jLGFyZyl7X19BVEVYSVRfXy51bnNoaWZ0KHtmdW5jOmZ1bmMsYXJnOmFyZ30pfXZhciBfX19jeGFfYXRleGl0PV9hdGV4aXQ7TW9kdWxlWyJfaTY0U3VidHJhY3QiXT1faTY0U3VidHJhY3Q7TW9kdWxlWyJfaTY0QWRkIl09X2k2NEFkZDtmdW5jdGlvbiBfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udigpe3JldHVybiEhX19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYudW5jYXVnaHRfZXhjZXB0aW9ufWZ1bmN0aW9uIF9fX2N4YV9pc19udW1iZXJfdHlwZSh0eXBlKXt2YXIgaXNOdW1iZXI9ZmFsc2U7dHJ5e2lmKHR5cGU9PV9fWlRJaSlpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElqKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWwpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJbSlpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVEl4KWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSXkpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJZilpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElkKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWUpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJYylpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElhKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWgpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJcylpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVEl0KWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXJldHVybiBpc051bWJlcn1mdW5jdGlvbiBfX19jeGFfZG9lc19pbmhlcml0KGRlZmluaXRlVHlwZSxwb3NzaWJpbGl0eVR5cGUscG9zc2liaWxpdHkpe2lmKHBvc3NpYmlsaXR5PT0wKXJldHVybiBmYWxzZTtpZihwb3NzaWJpbGl0eVR5cGU9PTB8fHBvc3NpYmlsaXR5VHlwZT09ZGVmaW5pdGVUeXBlKXJldHVybiB0cnVlO3ZhciBwb3NzaWJpbGl0eV90eXBlX2luZm87aWYoX19fY3hhX2lzX251bWJlcl90eXBlKHBvc3NpYmlsaXR5VHlwZSkpe3Bvc3NpYmlsaXR5X3R5cGVfaW5mbz1wb3NzaWJpbGl0eVR5cGV9ZWxzZXt2YXIgcG9zc2liaWxpdHlfdHlwZV9pbmZvQWRkcj1IRUFQMzJbcG9zc2liaWxpdHlUeXBlPj4yXS04O3Bvc3NpYmlsaXR5X3R5cGVfaW5mbz1IRUFQMzJbcG9zc2liaWxpdHlfdHlwZV9pbmZvQWRkcj4+Ml19c3dpdGNoKHBvc3NpYmlsaXR5X3R5cGVfaW5mbyl7Y2FzZSAwOnZhciBkZWZpbml0ZV90eXBlX2luZm9BZGRyPUhFQVAzMltkZWZpbml0ZVR5cGU+PjJdLTg7dmFyIGRlZmluaXRlX3R5cGVfaW5mbz1IRUFQMzJbZGVmaW5pdGVfdHlwZV9pbmZvQWRkcj4+Ml07aWYoZGVmaW5pdGVfdHlwZV9pbmZvPT0wKXt2YXIgZGVmUG9pbnRlckJhc2VBZGRyPWRlZmluaXRlVHlwZSs4O3ZhciBkZWZQb2ludGVyQmFzZVR5cGU9SEVBUDMyW2RlZlBvaW50ZXJCYXNlQWRkcj4+Ml07dmFyIHBvc3NQb2ludGVyQmFzZUFkZHI9cG9zc2liaWxpdHlUeXBlKzg7dmFyIHBvc3NQb2ludGVyQmFzZVR5cGU9SEVBUDMyW3Bvc3NQb2ludGVyQmFzZUFkZHI+PjJdO3JldHVybiBfX19jeGFfZG9lc19pbmhlcml0KGRlZlBvaW50ZXJCYXNlVHlwZSxwb3NzUG9pbnRlckJhc2VUeXBlLHBvc3NpYmlsaXR5KX1lbHNlIHJldHVybiBmYWxzZTtjYXNlIDE6cmV0dXJuIGZhbHNlO2Nhc2UgMjp2YXIgcGFyZW50VHlwZUFkZHI9cG9zc2liaWxpdHlUeXBlKzg7dmFyIHBhcmVudFR5cGU9SEVBUDMyW3BhcmVudFR5cGVBZGRyPj4yXTtyZXR1cm4gX19fY3hhX2RvZXNfaW5oZXJpdChkZWZpbml0ZVR5cGUscGFyZW50VHlwZSxwb3NzaWJpbGl0eSk7ZGVmYXVsdDpyZXR1cm4gZmFsc2V9fXZhciBfX19jeGFfbGFzdF90aHJvd25fZXhjZXB0aW9uPTA7ZnVuY3Rpb24gX19fcmVzdW1lRXhjZXB0aW9uKHB0cil7TW9kdWxlLnByaW50KCJSZXN1bWluZyBleGNlcHRpb24iKTtpZighX19fY3hhX2xhc3RfdGhyb3duX2V4Y2VwdGlvbil7X19fY3hhX2xhc3RfdGhyb3duX2V4Y2VwdGlvbj1wdHJ9dGhyb3cgcHRyfXZhciBfX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplPTg7ZnVuY3Rpb24gX19fY3hhX2ZpbmRfbWF0Y2hpbmdfY2F0Y2godGhyb3duLHRocm93bnR5cGUpe2lmKHRocm93bj09LTEpdGhyb3duPV9fX2N4YV9sYXN0X3Rocm93bl9leGNlcHRpb247aGVhZGVyPXRocm93bi1fX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplO2lmKHRocm93bnR5cGU9PS0xKXRocm93bnR5cGU9SEVBUDMyW2hlYWRlcj4+Ml07dmFyIHR5cGVBcnJheT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7aWYodGhyb3dudHlwZSE9MCYmIV9fX2N4YV9pc19udW1iZXJfdHlwZSh0aHJvd250eXBlKSl7dmFyIHRocm93bnR5cGVJbmZvQWRkcj1IRUFQMzJbdGhyb3dudHlwZT4+Ml0tODt2YXIgdGhyb3dudHlwZUluZm89SEVBUDMyW3Rocm93bnR5cGVJbmZvQWRkcj4+Ml07aWYodGhyb3dudHlwZUluZm89PTApdGhyb3duPUhFQVAzMlt0aHJvd24+PjJdfWZvcih2YXIgaT0wO2k8dHlwZUFycmF5Lmxlbmd0aDtpKyspe2lmKF9fX2N4YV9kb2VzX2luaGVyaXQodHlwZUFycmF5W2ldLHRocm93bnR5cGUsdGhyb3duKSlyZXR1cm4oYXNtWyJzZXRUZW1wUmV0MCJdKHR5cGVBcnJheVtpXSksdGhyb3duKXwwfXJldHVybihhc21bInNldFRlbXBSZXQwIl0odGhyb3dudHlwZSksdGhyb3duKXwwfWZ1bmN0aW9uIF9fX2N4YV90aHJvdyhwdHIsdHlwZSxkZXN0cnVjdG9yKXtpZighX19fY3hhX3Rocm93LmluaXRpYWxpemVkKXt0cnl7SEVBUDMyW19fWlRWTjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0U+PjJdPTB9Y2F0Y2goZSl7fXRyeXtIRUFQMzJbX19aVFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0U+PjJdPTF9Y2F0Y2goZSl7fXRyeXtIRUFQMzJbX19aVFZOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0U+PjJdPTJ9Y2F0Y2goZSl7fV9fX2N4YV90aHJvdy5pbml0aWFsaXplZD10cnVlfU1vZHVsZS5wcmludEVycigiQ29tcGlsZWQgY29kZSB0aHJvd2luZyBhbiBleGNlcHRpb24sICIrW3B0cix0eXBlLGRlc3RydWN0b3JdKyIsIGF0ICIrc3RhY2tUcmFjZSgpKTt2YXIgaGVhZGVyPXB0ci1fX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplO0hFQVAzMltoZWFkZXI+PjJdPXR5cGU7SEVBUDMyW2hlYWRlcis0Pj4yXT1kZXN0cnVjdG9yO19fX2N4YV9sYXN0X3Rocm93bl9leGNlcHRpb249cHRyO2lmKCEoInVuY2F1Z2h0X2V4Y2VwdGlvbiJpbiBfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udikpe19fWlN0MTh1bmNhdWdodF9leGNlcHRpb252LnVuY2F1Z2h0X2V4Y2VwdGlvbj0xfWVsc2V7X19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYudW5jYXVnaHRfZXhjZXB0aW9uKyt9dGhyb3cgcHRyfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Jvb2woKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfYm9vbCIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfcHRocmVhZF9tdXRleF9sb2NrKCl7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF9zdHJpbmcoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZyIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZygpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZyIpO2Fib3J0KC0xKX12YXIgRVJSTk9fQ09ERVM9e0VQRVJNOjEsRU5PRU5UOjIsRVNSQ0g6MyxFSU5UUjo0LEVJTzo1LEVOWElPOjYsRTJCSUc6NyxFTk9FWEVDOjgsRUJBREY6OSxFQ0hJTEQ6MTAsRUFHQUlOOjExLEVXT1VMREJMT0NLOjExLEVOT01FTToxMixFQUNDRVM6MTMsRUZBVUxUOjE0LEVOT1RCTEs6MTUsRUJVU1k6MTYsRUVYSVNUOjE3LEVYREVWOjE4LEVOT0RFVjoxOSxFTk9URElSOjIwLEVJU0RJUjoyMSxFSU5WQUw6MjIsRU5GSUxFOjIzLEVNRklMRToyNCxFTk9UVFk6MjUsRVRYVEJTWToyNixFRkJJRzoyNyxFTk9TUEM6MjgsRVNQSVBFOjI5LEVST0ZTOjMwLEVNTElOSzozMSxFUElQRTozMixFRE9NOjMzLEVSQU5HRTozNCxFTk9NU0c6NDIsRUlEUk06NDMsRUNIUk5HOjQ0LEVMMk5TWU5DOjQ1LEVMM0hMVDo0NixFTDNSU1Q6NDcsRUxOUk5HOjQ4LEVVTkFUQ0g6NDksRU5PQ1NJOjUwLEVMMkhMVDo1MSxFREVBRExLOjM1LEVOT0xDSzozNyxFQkFERTo1MixFQkFEUjo1MyxFWEZVTEw6NTQsRU5PQU5POjU1LEVCQURSUUM6NTYsRUJBRFNMVDo1NyxFREVBRExPQ0s6MzUsRUJGT05UOjU5LEVOT1NUUjo2MCxFTk9EQVRBOjYxLEVUSU1FOjYyLEVOT1NSOjYzLEVOT05FVDo2NCxFTk9QS0c6NjUsRVJFTU9URTo2NixFTk9MSU5LOjY3LEVBRFY6NjgsRVNSTU5UOjY5LEVDT01NOjcwLEVQUk9UTzo3MSxFTVVMVElIT1A6NzIsRURPVERPVDo3MyxFQkFETVNHOjc0LEVOT1RVTklROjc2LEVCQURGRDo3NyxFUkVNQ0hHOjc4LEVMSUJBQ0M6NzksRUxJQkJBRDo4MCxFTElCU0NOOjgxLEVMSUJNQVg6ODIsRUxJQkVYRUM6ODMsRU5PU1lTOjM4LEVOT1RFTVBUWTozOSxFTkFNRVRPT0xPTkc6MzYsRUxPT1A6NDAsRU9QTk9UU1VQUDo5NSxFUEZOT1NVUFBPUlQ6OTYsRUNPTk5SRVNFVDoxMDQsRU5PQlVGUzoxMDUsRUFGTk9TVVBQT1JUOjk3LEVQUk9UT1RZUEU6OTEsRU5PVFNPQ0s6ODgsRU5PUFJPVE9PUFQ6OTIsRVNIVVRET1dOOjEwOCxFQ09OTlJFRlVTRUQ6MTExLEVBRERSSU5VU0U6OTgsRUNPTk5BQk9SVEVEOjEwMyxFTkVUVU5SRUFDSDoxMDEsRU5FVERPV046MTAwLEVUSU1FRE9VVDoxMTAsRUhPU1RET1dOOjExMixFSE9TVFVOUkVBQ0g6MTEzLEVJTlBST0dSRVNTOjExNSxFQUxSRUFEWToxMTQsRURFU1RBRERSUkVROjg5LEVNU0dTSVpFOjkwLEVQUk9UT05PU1VQUE9SVDo5MyxFU09DS1ROT1NVUFBPUlQ6OTQsRUFERFJOT1RBVkFJTDo5OSxFTkVUUkVTRVQ6MTAyLEVJU0NPTk46MTA2LEVOT1RDT05OOjEwNyxFVE9PTUFOWVJFRlM6MTA5LEVVU0VSUzo4NyxFRFFVT1Q6MTIyLEVTVEFMRToxMTYsRU5PVFNVUDo5NSxFTk9NRURJVU06MTIzLEVJTFNFUTo4NCxFT1ZFUkZMT1c6NzUsRUNBTkNFTEVEOjEyNSxFTk9UUkVDT1ZFUkFCTEU6MTMxLEVPV05FUkRFQUQ6MTMwLEVTVFJQSVBFOjg2fTt2YXIgRVJSTk9fTUVTU0FHRVM9ezA6IlN1Y2Nlc3MiLDE6Ik5vdCBzdXBlci11c2VyIiwyOiJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IiwzOiJObyBzdWNoIHByb2Nlc3MiLDQ6IkludGVycnVwdGVkIHN5c3RlbSBjYWxsIiw1OiJJL08gZXJyb3IiLDY6Ik5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MiLDc6IkFyZyBsaXN0IHRvbyBsb25nIiw4OiJFeGVjIGZvcm1hdCBlcnJvciIsOToiQmFkIGZpbGUgbnVtYmVyIiwxMDoiTm8gY2hpbGRyZW4iLDExOiJObyBtb3JlIHByb2Nlc3NlcyIsMTI6Ik5vdCBlbm91Z2ggY29yZSIsMTM6IlBlcm1pc3Npb24gZGVuaWVkIiwxNDoiQmFkIGFkZHJlc3MiLDE1OiJCbG9jayBkZXZpY2UgcmVxdWlyZWQiLDE2OiJNb3VudCBkZXZpY2UgYnVzeSIsMTc6IkZpbGUgZXhpc3RzIiwxODoiQ3Jvc3MtZGV2aWNlIGxpbmsiLDE5OiJObyBzdWNoIGRldmljZSIsMjA6Ik5vdCBhIGRpcmVjdG9yeSIsMjE6IklzIGEgZGlyZWN0b3J5IiwyMjoiSW52YWxpZCBhcmd1bWVudCIsMjM6IlRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtIiwyNDoiVG9vIG1hbnkgb3BlbiBmaWxlcyIsMjU6Ik5vdCBhIHR5cGV3cml0ZXIiLDI2OiJUZXh0IGZpbGUgYnVzeSIsMjc6IkZpbGUgdG9vIGxhcmdlIiwyODoiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UiLDI5OiJJbGxlZ2FsIHNlZWsiLDMwOiJSZWFkIG9ubHkgZmlsZSBzeXN0ZW0iLDMxOiJUb28gbWFueSBsaW5rcyIsMzI6IkJyb2tlbiBwaXBlIiwzMzoiTWF0aCBhcmcgb3V0IG9mIGRvbWFpbiBvZiBmdW5jIiwzNDoiTWF0aCByZXN1bHQgbm90IHJlcHJlc2VudGFibGUiLDM1OiJGaWxlIGxvY2tpbmcgZGVhZGxvY2sgZXJyb3IiLDM2OiJGaWxlIG9yIHBhdGggbmFtZSB0b28gbG9uZyIsMzc6Ik5vIHJlY29yZCBsb2NrcyBhdmFpbGFibGUiLDM4OiJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiLDM5OiJEaXJlY3Rvcnkgbm90IGVtcHR5Iiw0MDoiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MiLDQyOiJObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZSIsNDM6IklkZW50aWZpZXIgcmVtb3ZlZCIsNDQ6IkNoYW5uZWwgbnVtYmVyIG91dCBvZiByYW5nZSIsNDU6IkxldmVsIDIgbm90IHN5bmNocm9uaXplZCIsNDY6IkxldmVsIDMgaGFsdGVkIiw0NzoiTGV2ZWwgMyByZXNldCIsNDg6IkxpbmsgbnVtYmVyIG91dCBvZiByYW5nZSIsNDk6IlByb3RvY29sIGRyaXZlciBub3QgYXR0YWNoZWQiLDUwOiJObyBDU0kgc3RydWN0dXJlIGF2YWlsYWJsZSIsNTE6IkxldmVsIDIgaGFsdGVkIiw1MjoiSW52YWxpZCBleGNoYW5nZSIsNTM6IkludmFsaWQgcmVxdWVzdCBkZXNjcmlwdG9yIiw1NDoiRXhjaGFuZ2UgZnVsbCIsNTU6Ik5vIGFub2RlIiw1NjoiSW52YWxpZCByZXF1ZXN0IGNvZGUiLDU3OiJJbnZhbGlkIHNsb3QiLDU5OiJCYWQgZm9udCBmaWxlIGZtdCIsNjA6IkRldmljZSBub3QgYSBzdHJlYW0iLDYxOiJObyBkYXRhIChmb3Igbm8gZGVsYXkgaW8pIiw2MjoiVGltZXIgZXhwaXJlZCIsNjM6Ik91dCBvZiBzdHJlYW1zIHJlc291cmNlcyIsNjQ6Ik1hY2hpbmUgaXMgbm90IG9uIHRoZSBuZXR3b3JrIiw2NToiUGFja2FnZSBub3QgaW5zdGFsbGVkIiw2NjoiVGhlIG9iamVjdCBpcyByZW1vdGUiLDY3OiJUaGUgbGluayBoYXMgYmVlbiBzZXZlcmVkIiw2ODoiQWR2ZXJ0aXNlIGVycm9yIiw2OToiU3Jtb3VudCBlcnJvciIsNzA6IkNvbW11bmljYXRpb24gZXJyb3Igb24gc2VuZCIsNzE6IlByb3RvY29sIGVycm9yIiw3MjoiTXVsdGlob3AgYXR0ZW1wdGVkIiw3MzoiQ3Jvc3MgbW91bnQgcG9pbnQgKG5vdCByZWFsbHkgZXJyb3IpIiw3NDoiVHJ5aW5nIHRvIHJlYWQgdW5yZWFkYWJsZSBtZXNzYWdlIiw3NToiVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZSIsNzY6IkdpdmVuIGxvZy4gbmFtZSBub3QgdW5pcXVlIiw3NzoiZi5kLiBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbiIsNzg6IlJlbW90ZSBhZGRyZXNzIGNoYW5nZWQiLDc5OiJDYW4gICBhY2Nlc3MgYSBuZWVkZWQgc2hhcmVkIGxpYiIsODA6IkFjY2Vzc2luZyBhIGNvcnJ1cHRlZCBzaGFyZWQgbGliIiw4MToiLmxpYiBzZWN0aW9uIGluIGEub3V0IGNvcnJ1cHRlZCIsODI6IkF0dGVtcHRpbmcgdG8gbGluayBpbiB0b28gbWFueSBsaWJzIiw4MzoiQXR0ZW1wdGluZyB0byBleGVjIGEgc2hhcmVkIGxpYnJhcnkiLDg0OiJJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UiLDg2OiJTdHJlYW1zIHBpcGUgZXJyb3IiLDg3OiJUb28gbWFueSB1c2VycyIsODg6IlNvY2tldCBvcGVyYXRpb24gb24gbm9uLXNvY2tldCIsODk6IkRlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQiLDkwOiJNZXNzYWdlIHRvbyBsb25nIiw5MToiUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0Iiw5MjoiUHJvdG9jb2wgbm90IGF2YWlsYWJsZSIsOTM6IlVua25vd24gcHJvdG9jb2wiLDk0OiJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkIiw5NToiTm90IHN1cHBvcnRlZCIsOTY6IlByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkIiw5NzoiQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbCBmYW1pbHkiLDk4OiJBZGRyZXNzIGFscmVhZHkgaW4gdXNlIiw5OToiQWRkcmVzcyBub3QgYXZhaWxhYmxlIiwxMDA6Ik5ldHdvcmsgaW50ZXJmYWNlIGlzIG5vdCBjb25maWd1cmVkIiwxMDE6Ik5ldHdvcmsgaXMgdW5yZWFjaGFibGUiLDEwMjoiQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrIiwxMDM6IkNvbm5lY3Rpb24gYWJvcnRlZCIsMTA0OiJDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIiLDEwNToiTm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZSIsMTA2OiJTb2NrZXQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiLDEwNzoiU29ja2V0IGlzIG5vdCBjb25uZWN0ZWQiLDEwODoiQ2FuJ3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24iLDEwOToiVG9vIG1hbnkgcmVmZXJlbmNlcyIsMTEwOiJDb25uZWN0aW9uIHRpbWVkIG91dCIsMTExOiJDb25uZWN0aW9uIHJlZnVzZWQiLDExMjoiSG9zdCBpcyBkb3duIiwxMTM6Ikhvc3QgaXMgdW5yZWFjaGFibGUiLDExNDoiU29ja2V0IGFscmVhZHkgY29ubmVjdGVkIiwxMTU6IkNvbm5lY3Rpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyIsMTE2OiJTdGFsZSBmaWxlIGhhbmRsZSIsMTIyOiJRdW90YSBleGNlZWRlZCIsMTIzOiJObyBtZWRpdW0gKGluIHRhcGUgZHJpdmUpIiwxMjU6Ik9wZXJhdGlvbiBjYW5jZWxlZCIsMTMwOiJQcmV2aW91cyBvd25lciBkaWVkIiwxMzE6IlN0YXRlIG5vdCByZWNvdmVyYWJsZSJ9O3ZhciBfX19lcnJub19zdGF0ZT0wO2Z1bmN0aW9uIF9fX3NldEVyck5vKHZhbHVlKXtIRUFQMzJbX19fZXJybm9fc3RhdGU+PjJdPXZhbHVlO3JldHVybiB2YWx1ZX12YXIgUEFUSD17c3BsaXRQYXRoOihmdW5jdGlvbihmaWxlbmFtZSl7dmFyIHNwbGl0UGF0aFJlPS9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLztyZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSl9KSxub3JtYWxpemVBcnJheTooZnVuY3Rpb24ocGFydHMsYWxsb3dBYm92ZVJvb3Qpe3ZhciB1cD0wO2Zvcih2YXIgaT1wYXJ0cy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIGxhc3Q9cGFydHNbaV07aWYobGFzdD09PSIuIil7cGFydHMuc3BsaWNlKGksMSl9ZWxzZSBpZihsYXN0PT09Ii4uIil7cGFydHMuc3BsaWNlKGksMSk7dXArK31lbHNlIGlmKHVwKXtwYXJ0cy5zcGxpY2UoaSwxKTt1cC0tfX1pZihhbGxvd0Fib3ZlUm9vdCl7Zm9yKDt1cC0tO3VwKXtwYXJ0cy51bnNoaWZ0KCIuLiIpfX1yZXR1cm4gcGFydHN9KSxub3JtYWxpemU6KGZ1bmN0aW9uKHBhdGgpe3ZhciBpc0Fic29sdXRlPXBhdGguY2hhckF0KDApPT09Ii8iLHRyYWlsaW5nU2xhc2g9cGF0aC5zdWJzdHIoLTEpPT09Ii8iO3BhdGg9UEFUSC5ub3JtYWxpemVBcnJheShwYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKXtyZXR1cm4hIXB9KSksIWlzQWJzb2x1dGUpLmpvaW4oIi8iKTtpZighcGF0aCYmIWlzQWJzb2x1dGUpe3BhdGg9Ii4ifWlmKHBhdGgmJnRyYWlsaW5nU2xhc2gpe3BhdGgrPSIvIn1yZXR1cm4oaXNBYnNvbHV0ZT8iLyI6IiIpK3BhdGh9KSxkaXJuYW1lOihmdW5jdGlvbihwYXRoKXt2YXIgcmVzdWx0PVBBVEguc3BsaXRQYXRoKHBhdGgpLHJvb3Q9cmVzdWx0WzBdLGRpcj1yZXN1bHRbMV07aWYoIXJvb3QmJiFkaXIpe3JldHVybiIuIn1pZihkaXIpe2Rpcj1kaXIuc3Vic3RyKDAsZGlyLmxlbmd0aC0xKX1yZXR1cm4gcm9vdCtkaXJ9KSxiYXNlbmFtZTooZnVuY3Rpb24ocGF0aCl7aWYocGF0aD09PSIvIilyZXR1cm4iLyI7dmFyIGxhc3RTbGFzaD1wYXRoLmxhc3RJbmRleE9mKCIvIik7aWYobGFzdFNsYXNoPT09LTEpcmV0dXJuIHBhdGg7cmV0dXJuIHBhdGguc3Vic3RyKGxhc3RTbGFzaCsxKX0pLGV4dG5hbWU6KGZ1bmN0aW9uKHBhdGgpe3JldHVybiBQQVRILnNwbGl0UGF0aChwYXRoKVszXX0pLGpvaW46KGZ1bmN0aW9uKCl7dmFyIHBhdGhzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gUEFUSC5ub3JtYWxpemUocGF0aHMuam9pbigiLyIpKX0pLGpvaW4yOihmdW5jdGlvbihsLHIpe3JldHVybiBQQVRILm5vcm1hbGl6ZShsKyIvIityKX0pLHJlc29sdmU6KGZ1bmN0aW9uKCl7dmFyIHJlc29sdmVkUGF0aD0iIixyZXNvbHZlZEFic29sdXRlPWZhbHNlO2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLTE7aT49LTEmJiFyZXNvbHZlZEFic29sdXRlO2ktLSl7dmFyIHBhdGg9aT49MD9hcmd1bWVudHNbaV06RlMuY3dkKCk7aWYodHlwZW9mIHBhdGghPT0ic3RyaW5nIil7dGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKX1lbHNlIGlmKCFwYXRoKXtjb250aW51ZX1yZXNvbHZlZFBhdGg9cGF0aCsiLyIrcmVzb2x2ZWRQYXRoO3Jlc29sdmVkQWJzb2x1dGU9cGF0aC5jaGFyQXQoMCk9PT0iLyJ9cmVzb2x2ZWRQYXRoPVBBVEgubm9ybWFsaXplQXJyYXkocmVzb2x2ZWRQYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKXtyZXR1cm4hIXB9KSksIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oIi8iKTtyZXR1cm4ocmVzb2x2ZWRBYnNvbHV0ZT8iLyI6IiIpK3Jlc29sdmVkUGF0aHx8Ii4ifSkscmVsYXRpdmU6KGZ1bmN0aW9uKGZyb20sdG8pe2Zyb209UEFUSC5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTt0bz1QQVRILnJlc29sdmUodG8pLnN1YnN0cigxKTtmdW5jdGlvbiB0cmltKGFycil7dmFyIHN0YXJ0PTA7Zm9yKDtzdGFydDxhcnIubGVuZ3RoO3N0YXJ0Kyspe2lmKGFycltzdGFydF0hPT0iIilicmVha312YXIgZW5kPWFyci5sZW5ndGgtMTtmb3IoO2VuZD49MDtlbmQtLSl7aWYoYXJyW2VuZF0hPT0iIilicmVha31pZihzdGFydD5lbmQpcmV0dXJuW107cmV0dXJuIGFyci5zbGljZShzdGFydCxlbmQtc3RhcnQrMSl9dmFyIGZyb21QYXJ0cz10cmltKGZyb20uc3BsaXQoIi8iKSk7dmFyIHRvUGFydHM9dHJpbSh0by5zcGxpdCgiLyIpKTt2YXIgbGVuZ3RoPU1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsdG9QYXJ0cy5sZW5ndGgpO3ZhciBzYW1lUGFydHNMZW5ndGg9bGVuZ3RoO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7aWYoZnJvbVBhcnRzW2ldIT09dG9QYXJ0c1tpXSl7c2FtZVBhcnRzTGVuZ3RoPWk7YnJlYWt9fXZhciBvdXRwdXRQYXJ0cz1bXTtmb3IodmFyIGk9c2FtZVBhcnRzTGVuZ3RoO2k8ZnJvbVBhcnRzLmxlbmd0aDtpKyspe291dHB1dFBhcnRzLnB1c2goIi4uIil9b3V0cHV0UGFydHM9b3V0cHV0UGFydHMuY29uY2F0KHRvUGFydHMuc2xpY2Uoc2FtZVBhcnRzTGVuZ3RoKSk7cmV0dXJuIG91dHB1dFBhcnRzLmpvaW4oIi8iKX0pfTt2YXIgVFRZPXt0dHlzOltdLGluaXQ6KGZ1bmN0aW9uKCl7fSksc2h1dGRvd246KGZ1bmN0aW9uKCl7fSkscmVnaXN0ZXI6KGZ1bmN0aW9uKGRldixvcHMpe1RUWS50dHlzW2Rldl09e2lucHV0OltdLG91dHB1dDpbXSxvcHM6b3BzfTtGUy5yZWdpc3RlckRldmljZShkZXYsVFRZLnN0cmVhbV9vcHMpfSksc3RyZWFtX29wczp7b3BlbjooZnVuY3Rpb24oc3RyZWFtKXt2YXIgdHR5PVRUWS50dHlzW3N0cmVhbS5ub2RlLnJkZXZdO2lmKCF0dHkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9c3RyZWFtLnR0eT10dHk7c3RyZWFtLnNlZWthYmxlPWZhbHNlfSksY2xvc2U6KGZ1bmN0aW9uKHN0cmVhbSl7aWYoc3RyZWFtLnR0eS5vdXRwdXQubGVuZ3RoKXtzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcihzdHJlYW0udHR5LDEwKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zKXtpZighc3RyZWFtLnR0eXx8IXN0cmVhbS50dHkub3BzLmdldF9jaGFyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTlhJTyl9dmFyIGJ5dGVzUmVhZD0wO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dmFyIHJlc3VsdDt0cnl7cmVzdWx0PXN0cmVhbS50dHkub3BzLmdldF9jaGFyKHN0cmVhbS50dHkpfWNhdGNoKGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyl9aWYocmVzdWx0PT09dW5kZWZpbmVkJiZieXRlc1JlYWQ9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4pfWlmKHJlc3VsdD09PW51bGx8fHJlc3VsdD09PXVuZGVmaW5lZClicmVhaztieXRlc1JlYWQrKztidWZmZXJbb2Zmc2V0K2ldPXJlc3VsdH1pZihieXRlc1JlYWQpe3N0cmVhbS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpfXJldHVybiBieXRlc1JlYWR9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvcyl7aWYoIXN0cmVhbS50dHl8fCFzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5YSU8pfWZvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dHJ5e3N0cmVhbS50dHkub3BzLnB1dF9jaGFyKHN0cmVhbS50dHksYnVmZmVyW29mZnNldCtpXSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlPKX19aWYobGVuZ3RoKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKX1yZXR1cm4gaX0pfSxkZWZhdWx0X3R0eV9vcHM6e2dldF9jaGFyOihmdW5jdGlvbih0dHkpe2lmKCF0dHkuaW5wdXQubGVuZ3RoKXt2YXIgcmVzdWx0PW51bGw7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7cmVzdWx0PXByb2Nlc3NbInN0ZGluIl1bInJlYWQiXSgpO2lmKCFyZXN1bHQpe2lmKHByb2Nlc3NbInN0ZGluIl1bIl9yZWFkYWJsZVN0YXRlIl0mJnByb2Nlc3NbInN0ZGluIl1bIl9yZWFkYWJsZVN0YXRlIl1bImVuZGVkIl0pe3JldHVybiBudWxsfXJldHVybiB1bmRlZmluZWR9fWVsc2UgaWYodHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJnR5cGVvZiB3aW5kb3cucHJvbXB0PT0iZnVuY3Rpb24iKXtyZXN1bHQ9d2luZG93LnByb21wdCgiSW5wdXQ6ICIpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIn19ZWxzZSBpZih0eXBlb2YgcmVhZGxpbmU9PSJmdW5jdGlvbiIpe3Jlc3VsdD1yZWFkbGluZSgpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIn19aWYoIXJlc3VsdCl7cmV0dXJuIG51bGx9dHR5LmlucHV0PWludEFycmF5RnJvbVN0cmluZyhyZXN1bHQsdHJ1ZSl9cmV0dXJuIHR0eS5pbnB1dC5zaGlmdCgpfSkscHV0X2NoYXI6KGZ1bmN0aW9uKHR0eSx2YWwpe2lmKHZhbD09PW51bGx8fHZhbD09PTEwKXtNb2R1bGVbInByaW50Il0odHR5Lm91dHB1dC5qb2luKCIiKSk7dHR5Lm91dHB1dD1bXX1lbHNle3R0eS5vdXRwdXQucHVzaChUVFkudXRmOC5wcm9jZXNzQ0NoYXIodmFsKSl9fSl9LGRlZmF1bHRfdHR5MV9vcHM6e3B1dF9jaGFyOihmdW5jdGlvbih0dHksdmFsKXtpZih2YWw9PT1udWxsfHx2YWw9PT0xMCl7TW9kdWxlWyJwcmludEVyciJdKHR0eS5vdXRwdXQuam9pbigiIikpO3R0eS5vdXRwdXQ9W119ZWxzZXt0dHkub3V0cHV0LnB1c2goVFRZLnV0ZjgucHJvY2Vzc0NDaGFyKHZhbCkpfX0pfX07dmFyIE1FTUZTPXtvcHNfdGFibGU6bnVsbCxDT05URU5UX09XTklORzoxLENPTlRFTlRfRkxFWElCTEU6MixDT05URU5UX0ZJWEVEOjMsbW91bnQ6KGZ1bmN0aW9uKG1vdW50KXtyZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShudWxsLCIvIiwxNjM4NHw1MTEsMCl9KSxjcmVhdGVOb2RlOihmdW5jdGlvbihwYXJlbnQsbmFtZSxtb2RlLGRldil7aWYoRlMuaXNCbGtkZXYobW9kZSl8fEZTLmlzRklGTyhtb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKCFNRU1GUy5vcHNfdGFibGUpe01FTUZTLm9wc190YWJsZT17ZGlyOntub2RlOntnZXRhdHRyOk1FTUZTLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpNRU1GUy5ub2RlX29wcy5zZXRhdHRyLGxvb2t1cDpNRU1GUy5ub2RlX29wcy5sb29rdXAsbWtub2Q6TUVNRlMubm9kZV9vcHMubWtub2QscmVuYW1lOk1FTUZTLm5vZGVfb3BzLnJlbmFtZSx1bmxpbms6TUVNRlMubm9kZV9vcHMudW5saW5rLHJtZGlyOk1FTUZTLm5vZGVfb3BzLnJtZGlyLHJlYWRkaXI6TUVNRlMubm9kZV9vcHMucmVhZGRpcixzeW1saW5rOk1FTUZTLm5vZGVfb3BzLnN5bWxpbmt9LHN0cmVhbTp7bGxzZWVrOk1FTUZTLnN0cmVhbV9vcHMubGxzZWVrfX0sZmlsZTp7bm9kZTp7Z2V0YXR0cjpNRU1GUy5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6TUVNRlMubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOntsbHNlZWs6TUVNRlMuc3RyZWFtX29wcy5sbHNlZWsscmVhZDpNRU1GUy5zdHJlYW1fb3BzLnJlYWQsd3JpdGU6TUVNRlMuc3RyZWFtX29wcy53cml0ZSxhbGxvY2F0ZTpNRU1GUy5zdHJlYW1fb3BzLmFsbG9jYXRlLG1tYXA6TUVNRlMuc3RyZWFtX29wcy5tbWFwfX0sbGluazp7bm9kZTp7Z2V0YXR0cjpNRU1GUy5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6TUVNRlMubm9kZV9vcHMuc2V0YXR0cixyZWFkbGluazpNRU1GUy5ub2RlX29wcy5yZWFkbGlua30sc3RyZWFtOnt9fSxjaHJkZXY6e25vZGU6e2dldGF0dHI6TUVNRlMubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOk1FTUZTLm5vZGVfb3BzLnNldGF0dHJ9LHN0cmVhbTpGUy5jaHJkZXZfc3RyZWFtX29wc319fXZhciBub2RlPUZTLmNyZWF0ZU5vZGUocGFyZW50LG5hbWUsbW9kZSxkZXYpO2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmRpci5ub2RlO25vZGUuc3RyZWFtX29wcz1NRU1GUy5vcHNfdGFibGUuZGlyLnN0cmVhbTtub2RlLmNvbnRlbnRzPXt9fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUuc3RyZWFtO25vZGUuY29udGVudHM9W107bm9kZS5jb250ZW50TW9kZT1NRU1GUy5DT05URU5UX0ZMRVhJQkxFfWVsc2UgaWYoRlMuaXNMaW5rKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmxpbmsubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmxpbmsuc3RyZWFtfWVsc2UgaWYoRlMuaXNDaHJkZXYobm9kZS5tb2RlKSl7bm9kZS5ub2RlX29wcz1NRU1GUy5vcHNfdGFibGUuY2hyZGV2Lm5vZGU7bm9kZS5zdHJlYW1fb3BzPU1FTUZTLm9wc190YWJsZS5jaHJkZXYuc3RyZWFtfW5vZGUudGltZXN0YW1wPURhdGUubm93KCk7aWYocGFyZW50KXtwYXJlbnQuY29udGVudHNbbmFtZV09bm9kZX1yZXR1cm4gbm9kZX0pLGVuc3VyZUZsZXhpYmxlOihmdW5jdGlvbihub2RlKXtpZihub2RlLmNvbnRlbnRNb2RlIT09TUVNRlMuQ09OVEVOVF9GTEVYSUJMRSl7dmFyIGNvbnRlbnRzPW5vZGUuY29udGVudHM7bm9kZS5jb250ZW50cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250ZW50cyk7bm9kZS5jb250ZW50TW9kZT1NRU1GUy5DT05URU5UX0ZMRVhJQkxFfX0pLG5vZGVfb3BzOntnZXRhdHRyOihmdW5jdGlvbihub2RlKXt2YXIgYXR0cj17fTthdHRyLmRldj1GUy5pc0NocmRldihub2RlLm1vZGUpP25vZGUuaWQ6MTthdHRyLmlubz1ub2RlLmlkO2F0dHIubW9kZT1ub2RlLm1vZGU7YXR0ci5ubGluaz0xO2F0dHIudWlkPTA7YXR0ci5naWQ9MDthdHRyLnJkZXY9bm9kZS5yZGV2O2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT00MDk2fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT1ub2RlLmNvbnRlbnRzLmxlbmd0aH1lbHNlIGlmKEZTLmlzTGluayhub2RlLm1vZGUpKXthdHRyLnNpemU9bm9kZS5saW5rLmxlbmd0aH1lbHNle2F0dHIuc2l6ZT0wfWF0dHIuYXRpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIubXRpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIuY3RpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIuYmxrc2l6ZT00MDk2O2F0dHIuYmxvY2tzPU1hdGguY2VpbChhdHRyLnNpemUvYXR0ci5ibGtzaXplKTtyZXR1cm4gYXR0cn0pLHNldGF0dHI6KGZ1bmN0aW9uKG5vZGUsYXR0cil7aWYoYXR0ci5tb2RlIT09dW5kZWZpbmVkKXtub2RlLm1vZGU9YXR0ci5tb2RlfWlmKGF0dHIudGltZXN0YW1wIT09dW5kZWZpbmVkKXtub2RlLnRpbWVzdGFtcD1hdHRyLnRpbWVzdGFtcH1pZihhdHRyLnNpemUhPT11bmRlZmluZWQpe01FTUZTLmVuc3VyZUZsZXhpYmxlKG5vZGUpO3ZhciBjb250ZW50cz1ub2RlLmNvbnRlbnRzO2lmKGF0dHIuc2l6ZTxjb250ZW50cy5sZW5ndGgpY29udGVudHMubGVuZ3RoPWF0dHIuc2l6ZTtlbHNlIHdoaWxlKGF0dHIuc2l6ZT5jb250ZW50cy5sZW5ndGgpY29udGVudHMucHVzaCgwKX19KSxsb29rdXA6KGZ1bmN0aW9uKHBhcmVudCxuYW1lKXt0aHJvdyBGUy5nZW5lcmljRXJyb3JzW0VSUk5PX0NPREVTLkVOT0VOVF19KSxta25vZDooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe3JldHVybiBNRU1GUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0pLHJlbmFtZTooZnVuY3Rpb24ob2xkX25vZGUsbmV3X2RpcixuZXdfbmFtZSl7aWYoRlMuaXNEaXIob2xkX25vZGUubW9kZSkpe3ZhciBuZXdfbm9kZTt0cnl7bmV3X25vZGU9RlMubG9va3VwTm9kZShuZXdfZGlyLG5ld19uYW1lKX1jYXRjaChlKXt9aWYobmV3X25vZGUpe2Zvcih2YXIgaSBpbiBuZXdfbm9kZS5jb250ZW50cyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVEVNUFRZKX19fWRlbGV0ZSBvbGRfbm9kZS5wYXJlbnQuY29udGVudHNbb2xkX25vZGUubmFtZV07b2xkX25vZGUubmFtZT1uZXdfbmFtZTtuZXdfZGlyLmNvbnRlbnRzW25ld19uYW1lXT1vbGRfbm9kZTtvbGRfbm9kZS5wYXJlbnQ9bmV3X2Rpcn0pLHVubGluazooZnVuY3Rpb24ocGFyZW50LG5hbWUpe2RlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV19KSxybWRpcjooZnVuY3Rpb24ocGFyZW50LG5hbWUpe3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO2Zvcih2YXIgaSBpbiBub2RlLmNvbnRlbnRzKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9URU1QVFkpfWRlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV19KSxyZWFkZGlyOihmdW5jdGlvbihub2RlKXt2YXIgZW50cmllcz1bIi4iLCIuLiJdO2Zvcih2YXIga2V5IGluIG5vZGUuY29udGVudHMpe2lmKCFub2RlLmNvbnRlbnRzLmhhc093blByb3BlcnR5KGtleSkpe2NvbnRpbnVlfWVudHJpZXMucHVzaChrZXkpfXJldHVybiBlbnRyaWVzfSksc3ltbGluazooZnVuY3Rpb24ocGFyZW50LG5ld25hbWUsb2xkcGF0aCl7dmFyIG5vZGU9TUVNRlMuY3JlYXRlTm9kZShwYXJlbnQsbmV3bmFtZSw1MTF8NDA5NjAsMCk7bm9kZS5saW5rPW9sZHBhdGg7cmV0dXJuIG5vZGV9KSxyZWFkbGluazooZnVuY3Rpb24obm9kZSl7aWYoIUZTLmlzTGluayhub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfXJldHVybiBub2RlLmxpbmt9KX0sc3RyZWFtX29wczp7cmVhZDooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYocG9zaXRpb24+PWNvbnRlbnRzLmxlbmd0aClyZXR1cm4gMDt2YXIgc2l6ZT1NYXRoLm1pbihjb250ZW50cy5sZW5ndGgtcG9zaXRpb24sbGVuZ3RoKTthc3NlcnQoc2l6ZT49MCk7aWYoc2l6ZT44JiZjb250ZW50cy5zdWJhcnJheSl7YnVmZmVyLnNldChjb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitzaXplKSxvZmZzZXQpfWVsc2V7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXX19cmV0dXJuIHNpemV9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLGNhbk93bil7dmFyIG5vZGU9c3RyZWFtLm5vZGU7bm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTt2YXIgY29udGVudHM9bm9kZS5jb250ZW50cztpZihsZW5ndGgmJmNvbnRlbnRzLmxlbmd0aD09PTAmJnBvc2l0aW9uPT09MCYmYnVmZmVyLnN1YmFycmF5KXtpZihjYW5Pd24mJm9mZnNldD09PTApe25vZGUuY29udGVudHM9YnVmZmVyO25vZGUuY29udGVudE1vZGU9YnVmZmVyLmJ1ZmZlcj09PUhFQVA4LmJ1ZmZlcj9NRU1GUy5DT05URU5UX09XTklORzpNRU1GUy5DT05URU5UX0ZJWEVEfWVsc2V7bm9kZS5jb250ZW50cz1uZXcgVWludDhBcnJheShidWZmZXIuc3ViYXJyYXkob2Zmc2V0LG9mZnNldCtsZW5ndGgpKTtub2RlLmNvbnRlbnRNb2RlPU1FTUZTLkNPTlRFTlRfRklYRUR9cmV0dXJuIGxlbmd0aH1NRU1GUy5lbnN1cmVGbGV4aWJsZShub2RlKTt2YXIgY29udGVudHM9bm9kZS5jb250ZW50czt3aGlsZShjb250ZW50cy5sZW5ndGg8cG9zaXRpb24pY29udGVudHMucHVzaCgwKTtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe2NvbnRlbnRzW3Bvc2l0aW9uK2ldPWJ1ZmZlcltvZmZzZXQraV19cmV0dXJuIGxlbmd0aH0pLGxsc2VlazooZnVuY3Rpb24oc3RyZWFtLG9mZnNldCx3aGVuY2Upe3ZhciBwb3NpdGlvbj1vZmZzZXQ7aWYod2hlbmNlPT09MSl7cG9zaXRpb24rPXN0cmVhbS5wb3NpdGlvbn1lbHNlIGlmKHdoZW5jZT09PTIpe2lmKEZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSl7cG9zaXRpb24rPXN0cmVhbS5ub2RlLmNvbnRlbnRzLmxlbmd0aH19aWYocG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1zdHJlYW0udW5nb3R0ZW49W107c3RyZWFtLnBvc2l0aW9uPXBvc2l0aW9uO3JldHVybiBwb3NpdGlvbn0pLGFsbG9jYXRlOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LGxlbmd0aCl7TUVNRlMuZW5zdXJlRmxleGlibGUoc3RyZWFtLm5vZGUpO3ZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50czt2YXIgbGltaXQ9b2Zmc2V0K2xlbmd0aDt3aGlsZShsaW1pdD5jb250ZW50cy5sZW5ndGgpY29udGVudHMucHVzaCgwKX0pLG1tYXA6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixwcm90LGZsYWdzKXtpZighRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9ERVYpfXZhciBwdHI7dmFyIGFsbG9jYXRlZDt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYoIShmbGFncyYyKSYmKGNvbnRlbnRzLmJ1ZmZlcj09PWJ1ZmZlcnx8Y29udGVudHMuYnVmZmVyPT09YnVmZmVyLmJ1ZmZlcikpe2FsbG9jYXRlZD1mYWxzZTtwdHI9Y29udGVudHMuYnl0ZU9mZnNldH1lbHNle2lmKHBvc2l0aW9uPjB8fHBvc2l0aW9uK2xlbmd0aDxjb250ZW50cy5sZW5ndGgpe2lmKGNvbnRlbnRzLnN1YmFycmF5KXtjb250ZW50cz1jb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitsZW5ndGgpfWVsc2V7Y29udGVudHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY29udGVudHMscG9zaXRpb24scG9zaXRpb24rbGVuZ3RoKX19YWxsb2NhdGVkPXRydWU7cHRyPV9tYWxsb2MobGVuZ3RoKTtpZighcHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9NRU0pfWJ1ZmZlci5zZXQoY29udGVudHMscHRyKX1yZXR1cm57cHRyOnB0cixhbGxvY2F0ZWQ6YWxsb2NhdGVkfX0pfX07dmFyIElEQkZTPXtkYnM6e30saW5kZXhlZERCOihmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuaW5kZXhlZERCfHx3aW5kb3cubW96SW5kZXhlZERCfHx3aW5kb3cud2Via2l0SW5kZXhlZERCfHx3aW5kb3cubXNJbmRleGVkREJ9KSxEQl9WRVJTSU9OOjIxLERCX1NUT1JFX05BTUU6IkZJTEVfREFUQSIsbW91bnQ6KGZ1bmN0aW9uKG1vdW50KXtyZXR1cm4gTUVNRlMubW91bnQuYXBwbHkobnVsbCxhcmd1bWVudHMpfSksc3luY2ZzOihmdW5jdGlvbihtb3VudCxwb3B1bGF0ZSxjYWxsYmFjayl7SURCRlMuZ2V0TG9jYWxTZXQobW91bnQsKGZ1bmN0aW9uKGVycixsb2NhbCl7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO0lEQkZTLmdldFJlbW90ZVNldChtb3VudCwoZnVuY3Rpb24oZXJyLHJlbW90ZSl7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO3ZhciBzcmM9cG9wdWxhdGU/cmVtb3RlOmxvY2FsO3ZhciBkc3Q9cG9wdWxhdGU/bG9jYWw6cmVtb3RlO0lEQkZTLnJlY29uY2lsZShzcmMsZHN0LGNhbGxiYWNrKX0pKX0pKX0pLGdldERCOihmdW5jdGlvbihuYW1lLGNhbGxiYWNrKXt2YXIgZGI9SURCRlMuZGJzW25hbWVdO2lmKGRiKXtyZXR1cm4gY2FsbGJhY2sobnVsbCxkYil9dmFyIHJlcTt0cnl7cmVxPUlEQkZTLmluZGV4ZWREQigpLm9wZW4obmFtZSxJREJGUy5EQl9WRVJTSU9OKX1jYXRjaChlKXtyZXR1cm4gY2FsbGJhY2soZSl9cmVxLm9udXBncmFkZW5lZWRlZD0oZnVuY3Rpb24oZSl7dmFyIGRiPWUudGFyZ2V0LnJlc3VsdDt2YXIgdHJhbnNhY3Rpb249ZS50YXJnZXQudHJhbnNhY3Rpb247dmFyIGZpbGVTdG9yZTtpZihkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKElEQkZTLkRCX1NUT1JFX05BTUUpKXtmaWxlU3RvcmU9dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoSURCRlMuREJfU1RPUkVfTkFNRSl9ZWxzZXtmaWxlU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoSURCRlMuREJfU1RPUkVfTkFNRSl9ZmlsZVN0b3JlLmNyZWF0ZUluZGV4KCJ0aW1lc3RhbXAiLCJ0aW1lc3RhbXAiLHt1bmlxdWU6ZmFsc2V9KX0pO3JlcS5vbnN1Y2Nlc3M9KGZ1bmN0aW9uKCl7ZGI9cmVxLnJlc3VsdDtJREJGUy5kYnNbbmFtZV09ZGI7Y2FsbGJhY2sobnVsbCxkYil9KTtyZXEub25lcnJvcj0oZnVuY3Rpb24oKXtjYWxsYmFjayh0aGlzLmVycm9yKX0pfSksZ2V0TG9jYWxTZXQ6KGZ1bmN0aW9uKG1vdW50LGNhbGxiYWNrKXt2YXIgZW50cmllcz17fTtmdW5jdGlvbiBpc1JlYWxEaXIocCl7cmV0dXJuIHAhPT0iLiImJnAhPT0iLi4ifWZ1bmN0aW9uIHRvQWJzb2x1dGUocm9vdCl7cmV0dXJuKGZ1bmN0aW9uKHApe3JldHVybiBQQVRILmpvaW4yKHJvb3QscCl9KX12YXIgY2hlY2s9RlMucmVhZGRpcihtb3VudC5tb3VudHBvaW50KS5maWx0ZXIoaXNSZWFsRGlyKS5tYXAodG9BYnNvbHV0ZShtb3VudC5tb3VudHBvaW50KSk7d2hpbGUoY2hlY2subGVuZ3RoKXt2YXIgcGF0aD1jaGVjay5wb3AoKTt2YXIgc3RhdDt0cnl7c3RhdD1GUy5zdGF0KHBhdGgpfWNhdGNoKGUpe3JldHVybiBjYWxsYmFjayhlKX1pZihGUy5pc0RpcihzdGF0Lm1vZGUpKXtjaGVjay5wdXNoLmFwcGx5KGNoZWNrLEZTLnJlYWRkaXIocGF0aCkuZmlsdGVyKGlzUmVhbERpcikubWFwKHRvQWJzb2x1dGUocGF0aCkpKX1lbnRyaWVzW3BhdGhdPXt0aW1lc3RhbXA6c3RhdC5tdGltZX19cmV0dXJuIGNhbGxiYWNrKG51bGwse3R5cGU6ImxvY2FsIixlbnRyaWVzOmVudHJpZXN9KX0pLGdldFJlbW90ZVNldDooZnVuY3Rpb24obW91bnQsY2FsbGJhY2spe3ZhciBlbnRyaWVzPXt9O0lEQkZTLmdldERCKG1vdW50Lm1vdW50cG9pbnQsKGZ1bmN0aW9uKGVycixkYil7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO3ZhciB0cmFuc2FjdGlvbj1kYi50cmFuc2FjdGlvbihbSURCRlMuREJfU1RPUkVfTkFNRV0sInJlYWRvbmx5Iik7dHJhbnNhY3Rpb24ub25lcnJvcj0oZnVuY3Rpb24oKXtjYWxsYmFjayh0aGlzLmVycm9yKX0pO3ZhciBzdG9yZT10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShJREJGUy5EQl9TVE9SRV9OQU1FKTt2YXIgaW5kZXg9c3RvcmUuaW5kZXgoInRpbWVzdGFtcCIpO2luZGV4Lm9wZW5LZXlDdXJzb3IoKS5vbnN1Y2Nlc3M9KGZ1bmN0aW9uKGV2ZW50KXt2YXIgY3Vyc29yPWV2ZW50LnRhcmdldC5yZXN1bHQ7aWYoIWN1cnNvcil7cmV0dXJuIGNhbGxiYWNrKG51bGwse3R5cGU6InJlbW90ZSIsZGI6ZGIsZW50cmllczplbnRyaWVzfSl9ZW50cmllc1tjdXJzb3IucHJpbWFyeUtleV09e3RpbWVzdGFtcDpjdXJzb3Iua2V5fTtjdXJzb3IuY29udGludWUoKX0pfSkpfSksbG9hZExvY2FsRW50cnk6KGZ1bmN0aW9uKHBhdGgsY2FsbGJhY2spe3ZhciBzdGF0LG5vZGU7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoKTtub2RlPWxvb2t1cC5ub2RlO3N0YXQ9RlMuc3RhdChwYXRoKX1jYXRjaChlKXtyZXR1cm4gY2FsbGJhY2soZSl9aWYoRlMuaXNEaXIoc3RhdC5tb2RlKSl7cmV0dXJuIGNhbGxiYWNrKG51bGwse3RpbWVzdGFtcDpzdGF0Lm10aW1lLG1vZGU6c3RhdC5tb2RlfSl9ZWxzZSBpZihGUy5pc0ZpbGUoc3RhdC5tb2RlKSl7cmV0dXJuIGNhbGxiYWNrKG51bGwse3RpbWVzdGFtcDpzdGF0Lm10aW1lLG1vZGU6c3RhdC5tb2RlLGNvbnRlbnRzOm5vZGUuY29udGVudHN9KX1lbHNle3JldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpfX0pLHN0b3JlTG9jYWxFbnRyeTooZnVuY3Rpb24ocGF0aCxlbnRyeSxjYWxsYmFjayl7dHJ5e2lmKEZTLmlzRGlyKGVudHJ5Lm1vZGUpKXtGUy5ta2RpcihwYXRoLGVudHJ5Lm1vZGUpfWVsc2UgaWYoRlMuaXNGaWxlKGVudHJ5Lm1vZGUpKXtGUy53cml0ZUZpbGUocGF0aCxlbnRyeS5jb250ZW50cyx7ZW5jb2Rpbmc6ImJpbmFyeSIsY2FuT3duOnRydWV9KX1lbHNle3JldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpfUZTLnV0aW1lKHBhdGgsZW50cnkudGltZXN0YW1wLGVudHJ5LnRpbWVzdGFtcCl9Y2F0Y2goZSl7cmV0dXJuIGNhbGxiYWNrKGUpfWNhbGxiYWNrKG51bGwpfSkscmVtb3ZlTG9jYWxFbnRyeTooZnVuY3Rpb24ocGF0aCxjYWxsYmFjayl7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoKTt2YXIgc3RhdD1GUy5zdGF0KHBhdGgpO2lmKEZTLmlzRGlyKHN0YXQubW9kZSkpe0ZTLnJtZGlyKHBhdGgpfWVsc2UgaWYoRlMuaXNGaWxlKHN0YXQubW9kZSkpe0ZTLnVubGluayhwYXRoKX19Y2F0Y2goZSl7cmV0dXJuIGNhbGxiYWNrKGUpfWNhbGxiYWNrKG51bGwpfSksbG9hZFJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLmdldChwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbihldmVudCl7Y2FsbGJhY2sobnVsbCxldmVudC50YXJnZXQucmVzdWx0KX0pO3JlcS5vbmVycm9yPShmdW5jdGlvbigpe2NhbGxiYWNrKHRoaXMuZXJyb3IpfSl9KSxzdG9yZVJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGVudHJ5LGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLnB1dChlbnRyeSxwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbigpe2NhbGxiYWNrKG51bGwpfSk7cmVxLm9uZXJyb3I9KGZ1bmN0aW9uKCl7Y2FsbGJhY2sodGhpcy5lcnJvcil9KX0pLHJlbW92ZVJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLmRlbGV0ZShwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbigpe2NhbGxiYWNrKG51bGwpfSk7cmVxLm9uZXJyb3I9KGZ1bmN0aW9uKCl7Y2FsbGJhY2sodGhpcy5lcnJvcil9KX0pLHJlY29uY2lsZTooZnVuY3Rpb24oc3JjLGRzdCxjYWxsYmFjayl7dmFyIHRvdGFsPTA7dmFyIGNyZWF0ZT1bXTtPYmplY3Qua2V5cyhzcmMuZW50cmllcykuZm9yRWFjaCgoZnVuY3Rpb24oa2V5KXt2YXIgZT1zcmMuZW50cmllc1trZXldO3ZhciBlMj1kc3QuZW50cmllc1trZXldO2lmKCFlMnx8ZS50aW1lc3RhbXA+ZTIudGltZXN0YW1wKXtjcmVhdGUucHVzaChrZXkpO3RvdGFsKyt9fSkpO3ZhciByZW1vdmU9W107T2JqZWN0LmtleXMoZHN0LmVudHJpZXMpLmZvckVhY2goKGZ1bmN0aW9uKGtleSl7dmFyIGU9ZHN0LmVudHJpZXNba2V5XTt2YXIgZTI9c3JjLmVudHJpZXNba2V5XTtpZighZTIpe3JlbW92ZS5wdXNoKGtleSk7dG90YWwrK319KSk7aWYoIXRvdGFsKXtyZXR1cm4gY2FsbGJhY2sobnVsbCl9dmFyIGVycm9yZWQ9ZmFsc2U7dmFyIGNvbXBsZXRlZD0wO3ZhciBkYj1zcmMudHlwZT09PSJyZW1vdGUiP3NyYy5kYjpkc3QuZGI7dmFyIHRyYW5zYWN0aW9uPWRiLnRyYW5zYWN0aW9uKFtJREJGUy5EQl9TVE9SRV9OQU1FXSwicmVhZHdyaXRlIik7dmFyIHN0b3JlPXRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKElEQkZTLkRCX1NUT1JFX05BTUUpO2Z1bmN0aW9uIGRvbmUoZXJyKXtpZihlcnIpe2lmKCFkb25lLmVycm9yZWQpe2RvbmUuZXJyb3JlZD10cnVlO3JldHVybiBjYWxsYmFjayhlcnIpfXJldHVybn1pZigrK2NvbXBsZXRlZD49dG90YWwpe3JldHVybiBjYWxsYmFjayhudWxsKX19dHJhbnNhY3Rpb24ub25lcnJvcj0oZnVuY3Rpb24oKXtkb25lKHRoaXMuZXJyb3IpfSk7Y3JlYXRlLnNvcnQoKS5mb3JFYWNoKChmdW5jdGlvbihwYXRoKXtpZihkc3QudHlwZT09PSJsb2NhbCIpe0lEQkZTLmxvYWRSZW1vdGVFbnRyeShzdG9yZSxwYXRoLChmdW5jdGlvbihlcnIsZW50cnkpe2lmKGVycilyZXR1cm4gZG9uZShlcnIpO0lEQkZTLnN0b3JlTG9jYWxFbnRyeShwYXRoLGVudHJ5LGRvbmUpfSkpfWVsc2V7SURCRlMubG9hZExvY2FsRW50cnkocGF0aCwoZnVuY3Rpb24oZXJyLGVudHJ5KXtpZihlcnIpcmV0dXJuIGRvbmUoZXJyKTtJREJGUy5zdG9yZVJlbW90ZUVudHJ5KHN0b3JlLHBhdGgsZW50cnksZG9uZSl9KSl9fSkpO3JlbW92ZS5zb3J0KCkucmV2ZXJzZSgpLmZvckVhY2goKGZ1bmN0aW9uKHBhdGgpe2lmKGRzdC50eXBlPT09ImxvY2FsIil7SURCRlMucmVtb3ZlTG9jYWxFbnRyeShwYXRoLGRvbmUpfWVsc2V7SURCRlMucmVtb3ZlUmVtb3RlRW50cnkoc3RvcmUscGF0aCxkb25lKX19KSl9KX07dmFyIE5PREVGUz17aXNXaW5kb3dzOmZhbHNlLHN0YXRpY0luaXQ6KGZ1bmN0aW9uKCl7Tk9ERUZTLmlzV2luZG93cz0hIXByb2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vKX0pLG1vdW50OihmdW5jdGlvbihtb3VudCl7YXNzZXJ0KEVOVklST05NRU5UX0lTX05PREUpO3JldHVybiBOT0RFRlMuY3JlYXRlTm9kZShudWxsLCIvIixOT0RFRlMuZ2V0TW9kZShtb3VudC5vcHRzLnJvb3QpLDApfSksY3JlYXRlTm9kZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe2lmKCFGUy5pc0Rpcihtb2RlKSYmIUZTLmlzRmlsZShtb2RlKSYmIUZTLmlzTGluayhtb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbm9kZT1GUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUpO25vZGUubm9kZV9vcHM9Tk9ERUZTLm5vZGVfb3BzO25vZGUuc3RyZWFtX29wcz1OT0RFRlMuc3RyZWFtX29wcztyZXR1cm4gbm9kZX0pLGdldE1vZGU6KGZ1bmN0aW9uKHBhdGgpe3ZhciBzdGF0O3RyeXtzdGF0PWZzLmxzdGF0U3luYyhwYXRoKTtpZihOT0RFRlMuaXNXaW5kb3dzKXtzdGF0Lm1vZGU9c3RhdC5tb2RlfChzdGF0Lm1vZGUmMTQ2KT4+MX19Y2F0Y2goZSl7aWYoIWUuY29kZSl0aHJvdyBlO3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pfXJldHVybiBzdGF0Lm1vZGV9KSxyZWFsUGF0aDooZnVuY3Rpb24obm9kZSl7dmFyIHBhcnRzPVtdO3doaWxlKG5vZGUucGFyZW50IT09bm9kZSl7cGFydHMucHVzaChub2RlLm5hbWUpO25vZGU9bm9kZS5wYXJlbnR9cGFydHMucHVzaChub2RlLm1vdW50Lm9wdHMucm9vdCk7cGFydHMucmV2ZXJzZSgpO3JldHVybiBQQVRILmpvaW4uYXBwbHkobnVsbCxwYXJ0cyl9KSxmbGFnc1RvUGVybWlzc2lvblN0cmluZ01hcDp7MDoiciIsMToicisiLDI6InIrIiw2NDoiciIsNjU6InIrIiw2NjoicisiLDEyOToicngrIiwxOTM6InJ4KyIsNTE0OiJ3KyIsNTc3OiJ3Iiw1Nzg6IncrIiw3MDU6Ind4Iiw3MDY6Ind4KyIsMTAyNDoiYSIsMTAyNToiYSIsMTAyNjoiYSsiLDEwODk6ImEiLDEwOTA6ImErIiwxMTUzOiJheCIsMTE1NDoiYXgrIiwxMjE3OiJheCIsMTIxODoiYXgrIiw0MDk2OiJycyIsNDA5ODoicnMrIn0sZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmc6KGZ1bmN0aW9uKGZsYWdzKXtpZihmbGFncyBpbiBOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmdNYXApe3JldHVybiBOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmdNYXBbZmxhZ3NdfWVsc2V7cmV0dXJuIGZsYWdzfX0pLG5vZGVfb3BzOntnZXRhdHRyOihmdW5jdGlvbihub2RlKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dmFyIHN0YXQ7dHJ5e3N0YXQ9ZnMubHN0YXRTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1pZihOT0RFRlMuaXNXaW5kb3dzJiYhc3RhdC5ibGtzaXplKXtzdGF0LmJsa3NpemU9NDA5Nn1pZihOT0RFRlMuaXNXaW5kb3dzJiYhc3RhdC5ibG9ja3Mpe3N0YXQuYmxvY2tzPShzdGF0LnNpemUrc3RhdC5ibGtzaXplLTEpL3N0YXQuYmxrc2l6ZXwwfXJldHVybntkZXY6c3RhdC5kZXYsaW5vOnN0YXQuaW5vLG1vZGU6c3RhdC5tb2RlLG5saW5rOnN0YXQubmxpbmssdWlkOnN0YXQudWlkLGdpZDpzdGF0LmdpZCxyZGV2OnN0YXQucmRldixzaXplOnN0YXQuc2l6ZSxhdGltZTpzdGF0LmF0aW1lLG10aW1lOnN0YXQubXRpbWUsY3RpbWU6c3RhdC5jdGltZSxibGtzaXplOnN0YXQuYmxrc2l6ZSxibG9ja3M6c3RhdC5ibG9ja3N9fSksc2V0YXR0cjooZnVuY3Rpb24obm9kZSxhdHRyKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dHJ5e2lmKGF0dHIubW9kZSE9PXVuZGVmaW5lZCl7ZnMuY2htb2RTeW5jKHBhdGgsYXR0ci5tb2RlKTtub2RlLm1vZGU9YXR0ci5tb2RlfWlmKGF0dHIudGltZXN0YW1wIT09dW5kZWZpbmVkKXt2YXIgZGF0ZT1uZXcgRGF0ZShhdHRyLnRpbWVzdGFtcCk7ZnMudXRpbWVzU3luYyhwYXRoLGRhdGUsZGF0ZSl9aWYoYXR0ci5zaXplIT09dW5kZWZpbmVkKXtmcy50cnVuY2F0ZVN5bmMocGF0aCxhdHRyLnNpemUpfX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSksbG9va3VwOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIHBhdGg9UEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSxuYW1lKTt2YXIgbW9kZT1OT0RFRlMuZ2V0TW9kZShwYXRoKTtyZXR1cm4gTk9ERUZTLmNyZWF0ZU5vZGUocGFyZW50LG5hbWUsbW9kZSl9KSxta25vZDooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe3ZhciBub2RlPU5PREVGUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUsZGV2KTt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dHJ5e2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2ZzLm1rZGlyU3luYyhwYXRoLG5vZGUubW9kZSl9ZWxzZXtmcy53cml0ZUZpbGVTeW5jKHBhdGgsIiIse21vZGU6bm9kZS5tb2RlfSl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1yZXR1cm4gbm9kZX0pLHJlbmFtZTooZnVuY3Rpb24ob2xkTm9kZSxuZXdEaXIsbmV3TmFtZSl7dmFyIG9sZFBhdGg9Tk9ERUZTLnJlYWxQYXRoKG9sZE5vZGUpO3ZhciBuZXdQYXRoPVBBVEguam9pbjIoTk9ERUZTLnJlYWxQYXRoKG5ld0RpciksbmV3TmFtZSk7dHJ5e2ZzLnJlbmFtZVN5bmMob2xkUGF0aCxuZXdQYXRoKX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSksdW5saW5rOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIHBhdGg9UEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSxuYW1lKTt0cnl7ZnMudW5saW5rU3luYyhwYXRoKX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSkscm1kaXI6KGZ1bmN0aW9uKHBhcmVudCxuYW1lKXt2YXIgcGF0aD1QQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLG5hbWUpO3RyeXtmcy5ybWRpclN5bmMocGF0aCl9Y2F0Y2goZSl7aWYoIWUuY29kZSl0aHJvdyBlO3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pfX0pLHJlYWRkaXI6KGZ1bmN0aW9uKG5vZGUpe3ZhciBwYXRoPU5PREVGUy5yZWFsUGF0aChub2RlKTt0cnl7cmV0dXJuIGZzLnJlYWRkaXJTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxzeW1saW5rOihmdW5jdGlvbihwYXJlbnQsbmV3TmFtZSxvbGRQYXRoKXt2YXIgbmV3UGF0aD1QQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLG5ld05hbWUpO3RyeXtmcy5zeW1saW5rU3luYyhvbGRQYXRoLG5ld1BhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxyZWFkbGluazooZnVuY3Rpb24obm9kZSl7dmFyIHBhdGg9Tk9ERUZTLnJlYWxQYXRoKG5vZGUpO3RyeXtyZXR1cm4gZnMucmVhZGxpbmtTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KX0sc3RyZWFtX29wczp7b3BlbjooZnVuY3Rpb24oc3RyZWFtKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgoc3RyZWFtLm5vZGUpO3RyeXtpZihGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkpe3N0cmVhbS5uZmQ9ZnMub3BlblN5bmMocGF0aCxOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoc3RyZWFtLmZsYWdzKSl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxjbG9zZTooZnVuY3Rpb24oc3RyZWFtKXt0cnl7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpJiZzdHJlYW0ubmZkKXtmcy5jbG9zZVN5bmMoc3RyZWFtLm5mZCl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBuYnVmZmVyPW5ldyBCdWZmZXIobGVuZ3RoKTt2YXIgcmVzO3RyeXtyZXM9ZnMucmVhZFN5bmMoc3RyZWFtLm5mZCxuYnVmZmVyLDAsbGVuZ3RoLHBvc2l0aW9uKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1pZihyZXM+MCl7Zm9yKHZhciBpPTA7aTxyZXM7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPW5idWZmZXJbaV19fXJldHVybiByZXN9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgbmJ1ZmZlcj1uZXcgQnVmZmVyKGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsb2Zmc2V0K2xlbmd0aCkpO3ZhciByZXM7dHJ5e3Jlcz1mcy53cml0ZVN5bmMoc3RyZWFtLm5mZCxuYnVmZmVyLDAsbGVuZ3RoLHBvc2l0aW9uKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1yZXR1cm4gcmVzfSksbGxzZWVrOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LHdoZW5jZSl7dmFyIHBvc2l0aW9uPW9mZnNldDtpZih3aGVuY2U9PT0xKXtwb3NpdGlvbis9c3RyZWFtLnBvc2l0aW9ufWVsc2UgaWYod2hlbmNlPT09Mil7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXt0cnl7dmFyIHN0YXQ9ZnMuZnN0YXRTeW5jKHN0cmVhbS5uZmQpO3Bvc2l0aW9uKz1zdGF0LnNpemV9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fX1pZihwb3NpdGlvbjwwKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfXN0cmVhbS5wb3NpdGlvbj1wb3NpdGlvbjtyZXR1cm4gcG9zaXRpb259KX19O3ZhciBfc3RkaW49YWxsb2NhdGUoMSwiaTMyKiIsQUxMT0NfU1RBVElDKTt2YXIgX3N0ZG91dD1hbGxvY2F0ZSgxLCJpMzIqIixBTExPQ19TVEFUSUMpO3ZhciBfc3RkZXJyPWFsbG9jYXRlKDEsImkzMioiLEFMTE9DX1NUQVRJQyk7dmFyIEZTPXtyb290Om51bGwsbW91bnRzOltdLGRldmljZXM6W251bGxdLHN0cmVhbXM6W10sbmV4dElub2RlOjEsbmFtZVRhYmxlOm51bGwsY3VycmVudFBhdGg6Ii8iLGluaXRpYWxpemVkOmZhbHNlLGlnbm9yZVBlcm1pc3Npb25zOnRydWUsdHJhY2tpbmdEZWxlZ2F0ZTp7fSx0cmFja2luZzp7b3BlbkZsYWdzOntSRUFEOjEsV1JJVEU6Mn19LEVycm5vRXJyb3I6bnVsbCxnZW5lcmljRXJyb3JzOnt9LGhhbmRsZUZTRXJyb3I6KGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGUrIiA6ICIrc3RhY2tUcmFjZSgpO3JldHVybiBfX19zZXRFcnJObyhlLmVycm5vKX0pLGxvb2t1cFBhdGg6KGZ1bmN0aW9uKHBhdGgsb3B0cyl7cGF0aD1QQVRILnJlc29sdmUoRlMuY3dkKCkscGF0aCk7b3B0cz1vcHRzfHx7fTt2YXIgZGVmYXVsdHM9e2ZvbGxvd19tb3VudDp0cnVlLHJlY3Vyc2VfY291bnQ6MH07Zm9yKHZhciBrZXkgaW4gZGVmYXVsdHMpe2lmKG9wdHNba2V5XT09PXVuZGVmaW5lZCl7b3B0c1trZXldPWRlZmF1bHRzW2tleV19fWlmKG9wdHMucmVjdXJzZV9jb3VudD44KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTE9PUCl9dmFyIHBhcnRzPVBBVEgubm9ybWFsaXplQXJyYXkocGF0aC5zcGxpdCgiLyIpLmZpbHRlcigoZnVuY3Rpb24ocCl7cmV0dXJuISFwfSkpLGZhbHNlKTt2YXIgY3VycmVudD1GUy5yb290O3ZhciBjdXJyZW50X3BhdGg9Ii8iO2Zvcih2YXIgaT0wO2k8cGFydHMubGVuZ3RoO2krKyl7dmFyIGlzbGFzdD1pPT09cGFydHMubGVuZ3RoLTE7aWYoaXNsYXN0JiZvcHRzLnBhcmVudCl7YnJlYWt9Y3VycmVudD1GUy5sb29rdXBOb2RlKGN1cnJlbnQscGFydHNbaV0pO2N1cnJlbnRfcGF0aD1QQVRILmpvaW4yKGN1cnJlbnRfcGF0aCxwYXJ0c1tpXSk7aWYoRlMuaXNNb3VudHBvaW50KGN1cnJlbnQpKXtpZighaXNsYXN0fHxpc2xhc3QmJm9wdHMuZm9sbG93X21vdW50KXtjdXJyZW50PWN1cnJlbnQubW91bnRlZC5yb290fX1pZighaXNsYXN0fHxvcHRzLmZvbGxvdyl7dmFyIGNvdW50PTA7d2hpbGUoRlMuaXNMaW5rKGN1cnJlbnQubW9kZSkpe3ZhciBsaW5rPUZTLnJlYWRsaW5rKGN1cnJlbnRfcGF0aCk7Y3VycmVudF9wYXRoPVBBVEgucmVzb2x2ZShQQVRILmRpcm5hbWUoY3VycmVudF9wYXRoKSxsaW5rKTt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgoY3VycmVudF9wYXRoLHtyZWN1cnNlX2NvdW50Om9wdHMucmVjdXJzZV9jb3VudH0pO2N1cnJlbnQ9bG9va3VwLm5vZGU7aWYoY291bnQrKz40MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUxPT1ApfX19fXJldHVybntwYXRoOmN1cnJlbnRfcGF0aCxub2RlOmN1cnJlbnR9fSksZ2V0UGF0aDooZnVuY3Rpb24obm9kZSl7dmFyIHBhdGg7d2hpbGUodHJ1ZSl7aWYoRlMuaXNSb290KG5vZGUpKXt2YXIgbW91bnQ9bm9kZS5tb3VudC5tb3VudHBvaW50O2lmKCFwYXRoKXJldHVybiBtb3VudDtyZXR1cm4gbW91bnRbbW91bnQubGVuZ3RoLTFdIT09Ii8iP21vdW50KyIvIitwYXRoOm1vdW50K3BhdGh9cGF0aD1wYXRoP25vZGUubmFtZSsiLyIrcGF0aDpub2RlLm5hbWU7bm9kZT1ub2RlLnBhcmVudH19KSxoYXNoTmFtZTooZnVuY3Rpb24ocGFyZW50aWQsbmFtZSl7dmFyIGhhc2g9MDtmb3IodmFyIGk9MDtpPG5hbWUubGVuZ3RoO2krKyl7aGFzaD0oaGFzaDw8NSktaGFzaCtuYW1lLmNoYXJDb2RlQXQoaSl8MH1yZXR1cm4ocGFyZW50aWQraGFzaD4+PjApJUZTLm5hbWVUYWJsZS5sZW5ndGh9KSxoYXNoQWRkTm9kZTooZnVuY3Rpb24obm9kZSl7dmFyIGhhc2g9RlMuaGFzaE5hbWUobm9kZS5wYXJlbnQuaWQsbm9kZS5uYW1lKTtub2RlLm5hbWVfbmV4dD1GUy5uYW1lVGFibGVbaGFzaF07RlMubmFtZVRhYmxlW2hhc2hdPW5vZGV9KSxoYXNoUmVtb3ZlTm9kZTooZnVuY3Rpb24obm9kZSl7dmFyIGhhc2g9RlMuaGFzaE5hbWUobm9kZS5wYXJlbnQuaWQsbm9kZS5uYW1lKTtpZihGUy5uYW1lVGFibGVbaGFzaF09PT1ub2RlKXtGUy5uYW1lVGFibGVbaGFzaF09bm9kZS5uYW1lX25leHR9ZWxzZXt2YXIgY3VycmVudD1GUy5uYW1lVGFibGVbaGFzaF07d2hpbGUoY3VycmVudCl7aWYoY3VycmVudC5uYW1lX25leHQ9PT1ub2RlKXtjdXJyZW50Lm5hbWVfbmV4dD1ub2RlLm5hbWVfbmV4dDticmVha31jdXJyZW50PWN1cnJlbnQubmFtZV9uZXh0fX19KSxsb29rdXBOb2RlOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIGVycj1GUy5tYXlMb29rdXAocGFyZW50KTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9dmFyIGhhc2g9RlMuaGFzaE5hbWUocGFyZW50LmlkLG5hbWUpO2Zvcih2YXIgbm9kZT1GUy5uYW1lVGFibGVbaGFzaF07bm9kZTtub2RlPW5vZGUubmFtZV9uZXh0KXt2YXIgbm9kZU5hbWU9bm9kZS5uYW1lO2lmKG5vZGUucGFyZW50LmlkPT09cGFyZW50LmlkJiZub2RlTmFtZT09PW5hbWUpe3JldHVybiBub2RlfX1yZXR1cm4gRlMubG9va3VwKHBhcmVudCxuYW1lKX0pLGNyZWF0ZU5vZGU6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLG1vZGUscmRldil7aWYoIUZTLkZTTm9kZSl7RlMuRlNOb2RlPShmdW5jdGlvbihwYXJlbnQsbmFtZSxtb2RlLHJkZXYpe2lmKCFwYXJlbnQpe3BhcmVudD10aGlzfXRoaXMucGFyZW50PXBhcmVudDt0aGlzLm1vdW50PXBhcmVudC5tb3VudDt0aGlzLm1vdW50ZWQ9bnVsbDt0aGlzLmlkPUZTLm5leHRJbm9kZSsrO3RoaXMubmFtZT1uYW1lO3RoaXMubW9kZT1tb2RlO3RoaXMubm9kZV9vcHM9e307dGhpcy5zdHJlYW1fb3BzPXt9O3RoaXMucmRldj1yZGV2fSk7RlMuRlNOb2RlLnByb3RvdHlwZT17fTt2YXIgcmVhZE1vZGU9MjkyfDczO3ZhciB3cml0ZU1vZGU9MTQ2O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZTLkZTTm9kZS5wcm90b3R5cGUse3JlYWQ6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5tb2RlJnJlYWRNb2RlKT09PXJlYWRNb2RlfSksc2V0OihmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXJlYWRNb2RlOnRoaXMubW9kZSY9fnJlYWRNb2RlfSl9LHdyaXRlOntnZXQ6KGZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMubW9kZSZ3cml0ZU1vZGUpPT09d3JpdGVNb2RlfSksc2V0OihmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXdyaXRlTW9kZTp0aGlzLm1vZGUmPX53cml0ZU1vZGV9KX0saXNGb2xkZXI6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4gRlMuaXNEaXIodGhpcy5tb2RlKX0pfSxpc0RldmljZTp7Z2V0OihmdW5jdGlvbigpe3JldHVybiBGUy5pc0NocmRldih0aGlzLm1vZGUpfSl9fSl9dmFyIG5vZGU9bmV3IEZTLkZTTm9kZShwYXJlbnQsbmFtZSxtb2RlLHJkZXYpO0ZTLmhhc2hBZGROb2RlKG5vZGUpO3JldHVybiBub2RlfSksZGVzdHJveU5vZGU6KGZ1bmN0aW9uKG5vZGUpe0ZTLmhhc2hSZW1vdmVOb2RlKG5vZGUpfSksaXNSb290OihmdW5jdGlvbihub2RlKXtyZXR1cm4gbm9kZT09PW5vZGUucGFyZW50fSksaXNNb3VudHBvaW50OihmdW5jdGlvbihub2RlKXtyZXR1cm4hIW5vZGUubW91bnRlZH0pLGlzRmlsZTooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MzI3Njh9KSxpc0RpcjooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MTYzODR9KSxpc0xpbms6KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTQwOTYwfSksaXNDaHJkZXY6KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTgxOTJ9KSxpc0Jsa2RldjooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MjQ1NzZ9KSxpc0ZJRk86KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTQwOTZ9KSxpc1NvY2tldDooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNDkxNTIpPT09NDkxNTJ9KSxmbGFnTW9kZXM6eyJyIjowLCJycyI6MTA1MjY3MiwicisiOjIsInciOjU3Nywid3giOjcwNSwieHciOjcwNSwidysiOjU3OCwid3grIjo3MDYsInh3KyI6NzA2LCJhIjoxMDg5LCJheCI6MTIxNywieGEiOjEyMTcsImErIjoxMDkwLCJheCsiOjEyMTgsInhhKyI6MTIxOH0sbW9kZVN0cmluZ1RvRmxhZ3M6KGZ1bmN0aW9uKHN0cil7dmFyIGZsYWdzPUZTLmZsYWdNb2Rlc1tzdHJdO2lmKHR5cGVvZiBmbGFncz09PSJ1bmRlZmluZWQiKXt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZmlsZSBvcGVuIG1vZGU6ICIrc3RyKX1yZXR1cm4gZmxhZ3N9KSxmbGFnc1RvUGVybWlzc2lvblN0cmluZzooZnVuY3Rpb24oZmxhZyl7dmFyIGFjY21vZGU9ZmxhZyYyMDk3MTU1O3ZhciBwZXJtcz1bInIiLCJ3IiwicnciXVthY2Ntb2RlXTtpZihmbGFnJjUxMil7cGVybXMrPSJ3In1yZXR1cm4gcGVybXN9KSxub2RlUGVybWlzc2lvbnM6KGZ1bmN0aW9uKG5vZGUscGVybXMpe2lmKEZTLmlnbm9yZVBlcm1pc3Npb25zKXtyZXR1cm4gMH1pZihwZXJtcy5pbmRleE9mKCJyIikhPT0tMSYmIShub2RlLm1vZGUmMjkyKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVBQ0NFU31lbHNlIGlmKHBlcm1zLmluZGV4T2YoInciKSE9PS0xJiYhKG5vZGUubW9kZSYxNDYpKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUFDQ0VTfWVsc2UgaWYocGVybXMuaW5kZXhPZigieCIpIT09LTEmJiEobm9kZS5tb2RlJjczKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVBQ0NFU31yZXR1cm4gMH0pLG1heUxvb2t1cDooZnVuY3Rpb24oZGlyKXtyZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKGRpciwieCIpfSksbWF5Q3JlYXRlOihmdW5jdGlvbihkaXIsbmFtZSl7dHJ5e3ZhciBub2RlPUZTLmxvb2t1cE5vZGUoZGlyLG5hbWUpO3JldHVybiBFUlJOT19DT0RFUy5FRVhJU1R9Y2F0Y2goZSl7fXJldHVybiBGUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpfSksbWF5RGVsZXRlOihmdW5jdGlvbihkaXIsbmFtZSxpc2Rpcil7dmFyIG5vZGU7dHJ5e25vZGU9RlMubG9va3VwTm9kZShkaXIsbmFtZSl9Y2F0Y2goZSl7cmV0dXJuIGUuZXJybm99dmFyIGVycj1GUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpO2lmKGVycil7cmV0dXJuIGVycn1pZihpc2Rpcil7aWYoIUZTLmlzRGlyKG5vZGUubW9kZSkpe3JldHVybiBFUlJOT19DT0RFUy5FTk9URElSfWlmKEZTLmlzUm9vdChub2RlKXx8RlMuZ2V0UGF0aChub2RlKT09PUZTLmN3ZCgpKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUJVU1l9fWVsc2V7aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVJU0RJUn19cmV0dXJuIDB9KSxtYXlPcGVuOihmdW5jdGlvbihub2RlLGZsYWdzKXtpZighbm9kZSl7cmV0dXJuIEVSUk5PX0NPREVTLkVOT0VOVH1pZihGUy5pc0xpbmsobm9kZS5tb2RlKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVMT09QfWVsc2UgaWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7aWYoKGZsYWdzJjIwOTcxNTUpIT09MHx8ZmxhZ3MmNTEyKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUlTRElSfX1yZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKG5vZGUsRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoZmxhZ3MpKX0pLE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZDooZnVuY3Rpb24oZmRfc3RhcnQsZmRfZW5kKXtmZF9zdGFydD1mZF9zdGFydHx8MDtmZF9lbmQ9ZmRfZW5kfHxGUy5NQVhfT1BFTl9GRFM7Zm9yKHZhciBmZD1mZF9zdGFydDtmZDw9ZmRfZW5kO2ZkKyspe2lmKCFGUy5zdHJlYW1zW2ZkXSl7cmV0dXJuIGZkfX10aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTUZJTEUpfSksZ2V0U3RyZWFtOihmdW5jdGlvbihmZCl7cmV0dXJuIEZTLnN0cmVhbXNbZmRdfSksY3JlYXRlU3RyZWFtOihmdW5jdGlvbihzdHJlYW0sZmRfc3RhcnQsZmRfZW5kKXtpZighRlMuRlNTdHJlYW0pe0ZTLkZTU3RyZWFtPShmdW5jdGlvbigpe30pO0ZTLkZTU3RyZWFtLnByb3RvdHlwZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGUy5GU1N0cmVhbS5wcm90b3R5cGUse29iamVjdDp7Z2V0OihmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9KSxzZXQ6KGZ1bmN0aW9uKHZhbCl7dGhpcy5ub2RlPXZhbH0pfSxpc1JlYWQ6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5mbGFncyYyMDk3MTU1KSE9PTF9KX0saXNXcml0ZTp7Z2V0OihmdW5jdGlvbigpe3JldHVybih0aGlzLmZsYWdzJjIwOTcxNTUpIT09MH0pfSxpc0FwcGVuZDp7Z2V0OihmdW5jdGlvbigpe3JldHVybiB0aGlzLmZsYWdzJjEwMjR9KX19KX12YXIgbmV3U3RyZWFtPW5ldyBGUy5GU1N0cmVhbTtmb3IodmFyIHAgaW4gc3RyZWFtKXtuZXdTdHJlYW1bcF09c3RyZWFtW3BdfXN0cmVhbT1uZXdTdHJlYW07dmFyIGZkPUZTLm5leHRmZChmZF9zdGFydCxmZF9lbmQpO3N0cmVhbS5mZD1mZDtGUy5zdHJlYW1zW2ZkXT1zdHJlYW07cmV0dXJuIHN0cmVhbX0pLGNsb3NlU3RyZWFtOihmdW5jdGlvbihmZCl7RlMuc3RyZWFtc1tmZF09bnVsbH0pLGdldFN0cmVhbUZyb21QdHI6KGZ1bmN0aW9uKHB0cil7cmV0dXJuIEZTLnN0cmVhbXNbcHRyLTFdfSksZ2V0UHRyRm9yU3RyZWFtOihmdW5jdGlvbihzdHJlYW0pe3JldHVybiBzdHJlYW0/c3RyZWFtLmZkKzE6MH0pLGNocmRldl9zdHJlYW1fb3BzOntvcGVuOihmdW5jdGlvbihzdHJlYW0pe3ZhciBkZXZpY2U9RlMuZ2V0RGV2aWNlKHN0cmVhbS5ub2RlLnJkZXYpO3N0cmVhbS5zdHJlYW1fb3BzPWRldmljZS5zdHJlYW1fb3BzO2lmKHN0cmVhbS5zdHJlYW1fb3BzLm9wZW4pe3N0cmVhbS5zdHJlYW1fb3BzLm9wZW4oc3RyZWFtKX19KSxsbHNlZWs6KGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKX0pfSxtYWpvcjooZnVuY3Rpb24oZGV2KXtyZXR1cm4gZGV2Pj44fSksbWlub3I6KGZ1bmN0aW9uKGRldil7cmV0dXJuIGRldiYyNTV9KSxtYWtlZGV2OihmdW5jdGlvbihtYSxtaSl7cmV0dXJuIG1hPDw4fG1pfSkscmVnaXN0ZXJEZXZpY2U6KGZ1bmN0aW9uKGRldixvcHMpe0ZTLmRldmljZXNbZGV2XT17c3RyZWFtX29wczpvcHN9fSksZ2V0RGV2aWNlOihmdW5jdGlvbihkZXYpe3JldHVybiBGUy5kZXZpY2VzW2Rldl19KSxnZXRNb3VudHM6KGZ1bmN0aW9uKG1vdW50KXt2YXIgbW91bnRzPVtdO3ZhciBjaGVjaz1bbW91bnRdO3doaWxlKGNoZWNrLmxlbmd0aCl7dmFyIG09Y2hlY2sucG9wKCk7bW91bnRzLnB1c2gobSk7Y2hlY2sucHVzaC5hcHBseShjaGVjayxtLm1vdW50cyl9cmV0dXJuIG1vdW50c30pLHN5bmNmczooZnVuY3Rpb24ocG9wdWxhdGUsY2FsbGJhY2spe2lmKHR5cGVvZiBwb3B1bGF0ZT09PSJmdW5jdGlvbiIpe2NhbGxiYWNrPXBvcHVsYXRlO3BvcHVsYXRlPWZhbHNlfXZhciBtb3VudHM9RlMuZ2V0TW91bnRzKEZTLnJvb3QubW91bnQpO3ZhciBjb21wbGV0ZWQ9MDtmdW5jdGlvbiBkb25lKGVycil7aWYoZXJyKXtpZighZG9uZS5lcnJvcmVkKXtkb25lLmVycm9yZWQ9dHJ1ZTtyZXR1cm4gY2FsbGJhY2soZXJyKX1yZXR1cm59aWYoKytjb21wbGV0ZWQ+PW1vdW50cy5sZW5ndGgpe2NhbGxiYWNrKG51bGwpfX1tb3VudHMuZm9yRWFjaCgoZnVuY3Rpb24obW91bnQpe2lmKCFtb3VudC50eXBlLnN5bmNmcyl7cmV0dXJuIGRvbmUobnVsbCl9bW91bnQudHlwZS5zeW5jZnMobW91bnQscG9wdWxhdGUsZG9uZSl9KSl9KSxtb3VudDooZnVuY3Rpb24odHlwZSxvcHRzLG1vdW50cG9pbnQpe3ZhciByb290PW1vdW50cG9pbnQ9PT0iLyI7dmFyIHBzZXVkbz0hbW91bnRwb2ludDt2YXIgbm9kZTtpZihyb290JiZGUy5yb290KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQlVTWSl9ZWxzZSBpZighcm9vdCYmIXBzZXVkbyl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKG1vdW50cG9pbnQse2ZvbGxvd19tb3VudDpmYWxzZX0pO21vdW50cG9pbnQ9bG9va3VwLnBhdGg7bm9kZT1sb29rdXAubm9kZTtpZihGUy5pc01vdW50cG9pbnQobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKX1pZighRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVERJUil9fXZhciBtb3VudD17dHlwZTp0eXBlLG9wdHM6b3B0cyxtb3VudHBvaW50Om1vdW50cG9pbnQsbW91bnRzOltdfTt2YXIgbW91bnRSb290PXR5cGUubW91bnQobW91bnQpO21vdW50Um9vdC5tb3VudD1tb3VudDttb3VudC5yb290PW1vdW50Um9vdDtpZihyb290KXtGUy5yb290PW1vdW50Um9vdH1lbHNlIGlmKG5vZGUpe25vZGUubW91bnRlZD1tb3VudDtpZihub2RlLm1vdW50KXtub2RlLm1vdW50Lm1vdW50cy5wdXNoKG1vdW50KX19cmV0dXJuIG1vdW50Um9vdH0pLHVubW91bnQ6KGZ1bmN0aW9uKG1vdW50cG9pbnQpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChtb3VudHBvaW50LHtmb2xsb3dfbW91bnQ6ZmFsc2V9KTtpZighRlMuaXNNb3VudHBvaW50KGxvb2t1cC5ub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbm9kZT1sb29rdXAubm9kZTt2YXIgbW91bnQ9bm9kZS5tb3VudGVkO3ZhciBtb3VudHM9RlMuZ2V0TW91bnRzKG1vdW50KTtPYmplY3Qua2V5cyhGUy5uYW1lVGFibGUpLmZvckVhY2goKGZ1bmN0aW9uKGhhc2gpe3ZhciBjdXJyZW50PUZTLm5hbWVUYWJsZVtoYXNoXTt3aGlsZShjdXJyZW50KXt2YXIgbmV4dD1jdXJyZW50Lm5hbWVfbmV4dDtpZihtb3VudHMuaW5kZXhPZihjdXJyZW50Lm1vdW50KSE9PS0xKXtGUy5kZXN0cm95Tm9kZShjdXJyZW50KX1jdXJyZW50PW5leHR9fSkpO25vZGUubW91bnRlZD1udWxsO3ZhciBpZHg9bm9kZS5tb3VudC5tb3VudHMuaW5kZXhPZihtb3VudCk7YXNzZXJ0KGlkeCE9PS0xKTtub2RlLm1vdW50Lm1vdW50cy5zcGxpY2UoaWR4LDEpfSksbG9va3VwOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7cmV0dXJuIHBhcmVudC5ub2RlX29wcy5sb29rdXAocGFyZW50LG5hbWUpfSksbWtub2Q6KGZ1bmN0aW9uKHBhdGgsbW9kZSxkZXYpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgZXJyPUZTLm1heUNyZWF0ZShwYXJlbnQsbmFtZSk7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfWlmKCFwYXJlbnQubm9kZV9vcHMubWtub2Qpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLm1rbm9kKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0pLGNyZWF0ZTooZnVuY3Rpb24ocGF0aCxtb2RlKXttb2RlPW1vZGUhPT11bmRlZmluZWQ/bW9kZTo0Mzg7bW9kZSY9NDA5NTttb2RlfD0zMjc2ODtyZXR1cm4gRlMubWtub2QocGF0aCxtb2RlLDApfSksbWtkaXI6KGZ1bmN0aW9uKHBhdGgsbW9kZSl7bW9kZT1tb2RlIT09dW5kZWZpbmVkP21vZGU6NTExO21vZGUmPTUxMXw1MTI7bW9kZXw9MTYzODQ7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSwwKX0pLG1rZGV2OihmdW5jdGlvbihwYXRoLG1vZGUsZGV2KXtpZih0eXBlb2YgZGV2PT09InVuZGVmaW5lZCIpe2Rldj1tb2RlO21vZGU9NDM4fW1vZGV8PTgxOTI7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSxkZXYpfSksc3ltbGluazooZnVuY3Rpb24ob2xkcGF0aCxuZXdwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgobmV3cGF0aCx7cGFyZW50OnRydWV9KTt2YXIgcGFyZW50PWxvb2t1cC5ub2RlO3ZhciBuZXduYW1lPVBBVEguYmFzZW5hbWUobmV3cGF0aCk7dmFyIGVycj1GUy5tYXlDcmVhdGUocGFyZW50LG5ld25hbWUpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1pZighcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmsocGFyZW50LG5ld25hbWUsb2xkcGF0aCl9KSxyZW5hbWU6KGZ1bmN0aW9uKG9sZF9wYXRoLG5ld19wYXRoKXt2YXIgb2xkX2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG9sZF9wYXRoKTt2YXIgbmV3X2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG5ld19wYXRoKTt2YXIgb2xkX25hbWU9UEFUSC5iYXNlbmFtZShvbGRfcGF0aCk7dmFyIG5ld19uYW1lPVBBVEguYmFzZW5hbWUobmV3X3BhdGgpO3ZhciBsb29rdXAsb2xkX2RpcixuZXdfZGlyO3RyeXtsb29rdXA9RlMubG9va3VwUGF0aChvbGRfcGF0aCx7cGFyZW50OnRydWV9KTtvbGRfZGlyPWxvb2t1cC5ub2RlO2xvb2t1cD1GUy5sb29rdXBQYXRoKG5ld19wYXRoLHtwYXJlbnQ6dHJ1ZX0pO25ld19kaXI9bG9va3VwLm5vZGV9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfWlmKG9sZF9kaXIubW91bnQhPT1uZXdfZGlyLm1vdW50KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FWERFVil9dmFyIG9sZF9ub2RlPUZTLmxvb2t1cE5vZGUob2xkX2RpcixvbGRfbmFtZSk7dmFyIHJlbGF0aXZlPVBBVEgucmVsYXRpdmUob2xkX3BhdGgsbmV3X2Rpcm5hbWUpO2lmKHJlbGF0aXZlLmNoYXJBdCgwKSE9PSIuIil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1yZWxhdGl2ZT1QQVRILnJlbGF0aXZlKG5ld19wYXRoLG9sZF9kaXJuYW1lKTtpZihyZWxhdGl2ZS5jaGFyQXQoMCkhPT0iLiIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RFTVBUWSl9dmFyIG5ld19ub2RlO3RyeXtuZXdfbm9kZT1GUy5sb29rdXBOb2RlKG5ld19kaXIsbmV3X25hbWUpfWNhdGNoKGUpe31pZihvbGRfbm9kZT09PW5ld19ub2RlKXtyZXR1cm59dmFyIGlzZGlyPUZTLmlzRGlyKG9sZF9ub2RlLm1vZGUpO3ZhciBlcnI9RlMubWF5RGVsZXRlKG9sZF9kaXIsb2xkX25hbWUsaXNkaXIpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1lcnI9bmV3X25vZGU/RlMubWF5RGVsZXRlKG5ld19kaXIsbmV3X25hbWUsaXNkaXIpOkZTLm1heUNyZWF0ZShuZXdfZGlyLG5ld19uYW1lKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoIW9sZF9kaXIubm9kZV9vcHMucmVuYW1lKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9aWYoRlMuaXNNb3VudHBvaW50KG9sZF9ub2RlKXx8bmV3X25vZGUmJkZTLmlzTW91bnRwb2ludChuZXdfbm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKX1pZihuZXdfZGlyIT09b2xkX2Rpcil7ZXJyPUZTLm5vZGVQZXJtaXNzaW9ucyhvbGRfZGlyLCJ3Iik7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfX10cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsid2lsbE1vdmVQYXRoIl0pe0ZTLnRyYWNraW5nRGVsZWdhdGVbIndpbGxNb3ZlUGF0aCJdKG9sZF9wYXRoLG5ld19wYXRoKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxNb3ZlUGF0aCddKCciK29sZF9wYXRoKyInLCAnIituZXdfcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9RlMuaGFzaFJlbW92ZU5vZGUob2xkX25vZGUpO3RyeXtvbGRfZGlyLm5vZGVfb3BzLnJlbmFtZShvbGRfbm9kZSxuZXdfZGlyLG5ld19uYW1lKX1jYXRjaChlKXt0aHJvdyBlfWZpbmFsbHl7RlMuaGFzaEFkZE5vZGUob2xkX25vZGUpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJvbk1vdmVQYXRoIl0pRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25Nb3ZlUGF0aCJdKG9sZF9wYXRoLG5ld19wYXRoKX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25Nb3ZlUGF0aCddKCciK29sZF9wYXRoKyInLCAnIituZXdfcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9fSkscm1kaXI6KGZ1bmN0aW9uKHBhdGgpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgbm9kZT1GUy5sb29rdXBOb2RlKHBhcmVudCxuYW1lKTt2YXIgZXJyPUZTLm1heURlbGV0ZShwYXJlbnQsbmFtZSx0cnVlKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoIXBhcmVudC5ub2RlX29wcy5ybWRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKXtGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKHBhdGgpfX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1wYXJlbnQubm9kZV9vcHMucm1kaXIocGFyZW50LG5hbWUpO0ZTLmRlc3Ryb3lOb2RlKG5vZGUpO3RyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXSlGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXShwYXRoKX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25EZWxldGVQYXRoJ10oJyIrcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9fSkscmVhZGRpcjooZnVuY3Rpb24ocGF0aCl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7aWYoIW5vZGUubm9kZV9vcHMucmVhZGRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVERJUil9cmV0dXJuIG5vZGUubm9kZV9vcHMucmVhZGRpcihub2RlKX0pLHVubGluazooZnVuY3Rpb24ocGF0aCl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse3BhcmVudDp0cnVlfSk7dmFyIHBhcmVudD1sb29rdXAubm9kZTt2YXIgbmFtZT1QQVRILmJhc2VuYW1lKHBhdGgpO3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO3ZhciBlcnI9RlMubWF5RGVsZXRlKHBhcmVudCxuYW1lLGZhbHNlKTtpZihlcnIpe2lmKGVycj09PUVSUk5PX0NPREVTLkVJU0RJUillcnI9RVJSTk9fQ09ERVMuRVBFUk07dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1pZighcGFyZW50Lm5vZGVfb3BzLnVubGluayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKXtGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKHBhdGgpfX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1wYXJlbnQubm9kZV9vcHMudW5saW5rKHBhcmVudCxuYW1lKTtGUy5kZXN0cm95Tm9kZShub2RlKTt0cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25EZWxldGVQYXRoIl0pRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25EZWxldGVQYXRoIl0ocGF0aCl9Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uRGVsZXRlUGF0aCddKCciK3BhdGgrIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UpfX0pLHJlYWRsaW5rOihmdW5jdGlvbihwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCk7dmFyIGxpbms9bG9va3VwLm5vZGU7aWYoIWxpbmsubm9kZV9vcHMucmVhZGxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9cmV0dXJuIGxpbmsubm9kZV9vcHMucmVhZGxpbmsobGluayl9KSxzdGF0OihmdW5jdGlvbihwYXRoLGRvbnRGb2xsb3cpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IWRvbnRGb2xsb3d9KTt2YXIgbm9kZT1sb29rdXAubm9kZTtpZighbm9kZS5ub2RlX29wcy5nZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9cmV0dXJuIG5vZGUubm9kZV9vcHMuZ2V0YXR0cihub2RlKX0pLGxzdGF0OihmdW5jdGlvbihwYXRoKXtyZXR1cm4gRlMuc3RhdChwYXRoLHRydWUpfSksY2htb2Q6KGZ1bmN0aW9uKHBhdGgsbW9kZSxkb250Rm9sbG93KXt2YXIgbm9kZTtpZih0eXBlb2YgcGF0aD09PSJzdHJpbmciKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250Rm9sbG93fSk7bm9kZT1sb29rdXAubm9kZX1lbHNle25vZGU9cGF0aH1pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse21vZGU6bW9kZSY0MDk1fG5vZGUubW9kZSZ+NDA5NSx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSksbGNobW9kOihmdW5jdGlvbihwYXRoLG1vZGUpe0ZTLmNobW9kKHBhdGgsbW9kZSx0cnVlKX0pLGZjaG1vZDooZnVuY3Rpb24oZmQsbW9kZSl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1GUy5jaG1vZChzdHJlYW0ubm9kZSxtb2RlKX0pLGNob3duOihmdW5jdGlvbihwYXRoLHVpZCxnaWQsZG9udEZvbGxvdyl7dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzohZG9udEZvbGxvd30pO25vZGU9bG9va3VwLm5vZGV9ZWxzZXtub2RlPXBhdGh9aWYoIW5vZGUubm9kZV9vcHMuc2V0YXR0cil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfW5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSksbGNob3duOihmdW5jdGlvbihwYXRoLHVpZCxnaWQpe0ZTLmNob3duKHBhdGgsdWlkLGdpZCx0cnVlKX0pLGZjaG93bjooZnVuY3Rpb24oZmQsdWlkLGdpZCl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1GUy5jaG93bihzdHJlYW0ubm9kZSx1aWQsZ2lkKX0pLHRydW5jYXRlOihmdW5jdGlvbihwYXRoLGxlbil7aWYobGVuPDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7bm9kZT1sb29rdXAubm9kZX1lbHNle25vZGU9cGF0aH1pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTRElSKX1pZighRlMuaXNGaWxlKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIGVycj1GUy5ub2RlUGVybWlzc2lvbnMobm9kZSwidyIpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1ub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSx7c2l6ZTpsZW4sdGltZXN0YW1wOkRhdGUubm93KCl9KX0pLGZ0cnVuY2F0ZTooZnVuY3Rpb24oZmQsbGVuKXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmZCk7aWYoIXN0cmVhbSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpfWlmKChzdHJlYW0uZmxhZ3MmMjA5NzE1NSk9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfUZTLnRydW5jYXRlKHN0cmVhbS5ub2RlLGxlbil9KSx1dGltZTooZnVuY3Rpb24ocGF0aCxhdGltZSxtdGltZSl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse3RpbWVzdGFtcDpNYXRoLm1heChhdGltZSxtdGltZSl9KX0pLG9wZW46KGZ1bmN0aW9uKHBhdGgsZmxhZ3MsbW9kZSxmZF9zdGFydCxmZF9lbmQpe2ZsYWdzPXR5cGVvZiBmbGFncz09PSJzdHJpbmciP0ZTLm1vZGVTdHJpbmdUb0ZsYWdzKGZsYWdzKTpmbGFnczttb2RlPXR5cGVvZiBtb2RlPT09InVuZGVmaW5lZCI/NDM4Om1vZGU7aWYoZmxhZ3MmNjQpe21vZGU9bW9kZSY0MDk1fDMyNzY4fWVsc2V7bW9kZT0wfXZhciBub2RlO2lmKHR5cGVvZiBwYXRoPT09Im9iamVjdCIpe25vZGU9cGF0aH1lbHNle3BhdGg9UEFUSC5ub3JtYWxpemUocGF0aCk7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IShmbGFncyYxMzEwNzIpfSk7bm9kZT1sb29rdXAubm9kZX1jYXRjaChlKXt9fWlmKGZsYWdzJjY0KXtpZihub2RlKXtpZihmbGFncyYxMjgpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVFWElTVCl9fWVsc2V7bm9kZT1GUy5ta25vZChwYXRoLG1vZGUsMCl9fWlmKCFub2RlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9FTlQpfWlmKEZTLmlzQ2hyZGV2KG5vZGUubW9kZSkpe2ZsYWdzJj1+NTEyfXZhciBlcnI9RlMubWF5T3Blbihub2RlLGZsYWdzKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoZmxhZ3MmNTEyKXtGUy50cnVuY2F0ZShub2RlLDApfWZsYWdzJj1+KDEyOHw1MTIpO3ZhciBzdHJlYW09RlMuY3JlYXRlU3RyZWFtKHtub2RlOm5vZGUscGF0aDpGUy5nZXRQYXRoKG5vZGUpLGZsYWdzOmZsYWdzLHNlZWthYmxlOnRydWUscG9zaXRpb246MCxzdHJlYW1fb3BzOm5vZGUuc3RyZWFtX29wcyx1bmdvdHRlbjpbXSxlcnJvcjpmYWxzZX0sZmRfc3RhcnQsZmRfZW5kKTtpZihzdHJlYW0uc3RyZWFtX29wcy5vcGVuKXtzdHJlYW0uc3RyZWFtX29wcy5vcGVuKHN0cmVhbSl9aWYoTW9kdWxlWyJsb2dSZWFkRmlsZXMiXSYmIShmbGFncyYxKSl7aWYoIUZTLnJlYWRGaWxlcylGUy5yZWFkRmlsZXM9e307aWYoIShwYXRoIGluIEZTLnJlYWRGaWxlcykpe0ZTLnJlYWRGaWxlc1twYXRoXT0xO01vZHVsZVsicHJpbnRFcnIiXSgicmVhZCBmaWxlOiAiK3BhdGgpfX10cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25PcGVuRmlsZSJdKXt2YXIgdHJhY2tpbmdGbGFncz0wO2lmKChmbGFncyYyMDk3MTU1KSE9PTEpe3RyYWNraW5nRmxhZ3N8PUZTLnRyYWNraW5nLm9wZW5GbGFncy5SRUFEfWlmKChmbGFncyYyMDk3MTU1KSE9PTApe3RyYWNraW5nRmxhZ3N8PUZTLnRyYWNraW5nLm9wZW5GbGFncy5XUklURX1GUy50cmFja2luZ0RlbGVnYXRlWyJvbk9wZW5GaWxlIl0ocGF0aCx0cmFja2luZ0ZsYWdzKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uT3BlbkZpbGUnXSgnIitwYXRoKyInLCBmbGFncykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9cmV0dXJuIHN0cmVhbX0pLGNsb3NlOihmdW5jdGlvbihzdHJlYW0pe3RyeXtpZihzdHJlYW0uc3RyZWFtX29wcy5jbG9zZSl7c3RyZWFtLnN0cmVhbV9vcHMuY2xvc2Uoc3RyZWFtKX19Y2F0Y2goZSl7dGhyb3cgZX1maW5hbGx5e0ZTLmNsb3NlU3RyZWFtKHN0cmVhbS5mZCl9fSksbGxzZWVrOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LHdoZW5jZSl7aWYoIXN0cmVhbS5zZWVrYWJsZXx8IXN0cmVhbS5zdHJlYW1fb3BzLmxsc2Vlayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKX1yZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubGxzZWVrKHN0cmVhbSxvZmZzZXQsd2hlbmNlKX0pLHJlYWQ6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbil7aWYobGVuZ3RoPDB8fHBvc2l0aW9uPDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1pZihGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTRElSKX1pZighc3RyZWFtLnN0cmVhbV9vcHMucmVhZCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgc2Vla2luZz10cnVlO2lmKHR5cGVvZiBwb3NpdGlvbj09PSJ1bmRlZmluZWQiKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247c2Vla2luZz1mYWxzZX1lbHNlIGlmKCFzdHJlYW0uc2Vla2FibGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSl9dmFyIGJ5dGVzUmVhZD1zdHJlYW0uc3RyZWFtX29wcy5yZWFkKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbik7aWYoIXNlZWtpbmcpc3RyZWFtLnBvc2l0aW9uKz1ieXRlc1JlYWQ7cmV0dXJuIGJ5dGVzUmVhZH0pLHdyaXRlOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24sY2FuT3duKXtpZihsZW5ndGg8MHx8cG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1pZigoc3RyZWFtLmZsYWdzJjIwOTcxNTUpPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpfWlmKEZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSVNESVIpfWlmKCFzdHJlYW0uc3RyZWFtX29wcy53cml0ZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgc2Vla2luZz10cnVlO2lmKHR5cGVvZiBwb3NpdGlvbj09PSJ1bmRlZmluZWQiKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247c2Vla2luZz1mYWxzZX1lbHNlIGlmKCFzdHJlYW0uc2Vla2FibGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSl9aWYoc3RyZWFtLmZsYWdzJjEwMjQpe0ZTLmxsc2VlayhzdHJlYW0sMCwyKX12YXIgYnl0ZXNXcml0dGVuPXN0cmVhbS5zdHJlYW1fb3BzLndyaXRlKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixjYW5Pd24pO2lmKCFzZWVraW5nKXN0cmVhbS5wb3NpdGlvbis9Ynl0ZXNXcml0dGVuO3RyeXtpZihzdHJlYW0ucGF0aCYmRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25Xcml0ZVRvRmlsZSJdKUZTLnRyYWNraW5nRGVsZWdhdGVbIm9uV3JpdGVUb0ZpbGUiXShzdHJlYW0ucGF0aCl9Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uV3JpdGVUb0ZpbGUnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1yZXR1cm4gYnl0ZXNXcml0dGVufSksYWxsb2NhdGU6KGZ1bmN0aW9uKHN0cmVhbSxvZmZzZXQsbGVuZ3RoKXtpZihvZmZzZXQ8MHx8bGVuZ3RoPD0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfWlmKChzdHJlYW0uZmxhZ3MmMjA5NzE1NSk9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQkFERil9aWYoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSYmIUZTLmlzRGlyKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLmFsbG9jYXRlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FT1BOT1RTVVBQKX1zdHJlYW0uc3RyZWFtX29wcy5hbGxvY2F0ZShzdHJlYW0sb2Zmc2V0LGxlbmd0aCl9KSxtbWFwOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24scHJvdCxmbGFncyl7aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVBQ0NFUyl9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLm1tYXApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLm1tYXAoc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLHByb3QsZmxhZ3MpfSksaW9jdGw6KGZ1bmN0aW9uKHN0cmVhbSxjbWQsYXJnKXtpZighc3RyZWFtLnN0cmVhbV9vcHMuaW9jdGwpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RUWSl9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLmlvY3RsKHN0cmVhbSxjbWQsYXJnKX0pLHJlYWRGaWxlOihmdW5jdGlvbihwYXRoLG9wdHMpe29wdHM9b3B0c3x8e307b3B0cy5mbGFncz1vcHRzLmZsYWdzfHwiciI7b3B0cy5lbmNvZGluZz1vcHRzLmVuY29kaW5nfHwiYmluYXJ5IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgcmV0O3ZhciBzdHJlYW09RlMub3BlbihwYXRoLG9wdHMuZmxhZ3MpO3ZhciBzdGF0PUZTLnN0YXQocGF0aCk7dmFyIGxlbmd0aD1zdGF0LnNpemU7dmFyIGJ1Zj1uZXcgVWludDhBcnJheShsZW5ndGgpO0ZTLnJlYWQoc3RyZWFtLGJ1ZiwwLGxlbmd0aCwwKTtpZihvcHRzLmVuY29kaW5nPT09InV0ZjgiKXtyZXQ9IiI7dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe3JldCs9dXRmOC5wcm9jZXNzQ0NoYXIoYnVmW2ldKX19ZWxzZSBpZihvcHRzLmVuY29kaW5nPT09ImJpbmFyeSIpe3JldD1idWZ9RlMuY2xvc2Uoc3RyZWFtKTtyZXR1cm4gcmV0fSksd3JpdGVGaWxlOihmdW5jdGlvbihwYXRoLGRhdGEsb3B0cyl7b3B0cz1vcHRzfHx7fTtvcHRzLmZsYWdzPW9wdHMuZmxhZ3N8fCJ3IjtvcHRzLmVuY29kaW5nPW9wdHMuZW5jb2Rpbmd8fCJ1dGY4IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgc3RyZWFtPUZTLm9wZW4ocGF0aCxvcHRzLmZsYWdzLG9wdHMubW9kZSk7aWYob3B0cy5lbmNvZGluZz09PSJ1dGY4Iil7dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjt2YXIgYnVmPW5ldyBVaW50OEFycmF5KHV0ZjgucHJvY2Vzc0pTU3RyaW5nKGRhdGEpKTtGUy53cml0ZShzdHJlYW0sYnVmLDAsYnVmLmxlbmd0aCwwLG9wdHMuY2FuT3duKX1lbHNlIGlmKG9wdHMuZW5jb2Rpbmc9PT0iYmluYXJ5Iil7RlMud3JpdGUoc3RyZWFtLGRhdGEsMCxkYXRhLmxlbmd0aCwwLG9wdHMuY2FuT3duKX1GUy5jbG9zZShzdHJlYW0pfSksY3dkOihmdW5jdGlvbigpe3JldHVybiBGUy5jdXJyZW50UGF0aH0pLGNoZGlyOihmdW5jdGlvbihwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OnRydWV9KTtpZighRlMuaXNEaXIobG9va3VwLm5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RESVIpfXZhciBlcnI9RlMubm9kZVBlcm1pc3Npb25zKGxvb2t1cC5ub2RlLCJ4Iik7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfUZTLmN1cnJlbnRQYXRoPWxvb2t1cC5wYXRofSksY3JlYXRlRGVmYXVsdERpcmVjdG9yaWVzOihmdW5jdGlvbigpe0ZTLm1rZGlyKCIvdG1wIil9KSxjcmVhdGVEZWZhdWx0RGV2aWNlczooZnVuY3Rpb24oKXtGUy5ta2RpcigiL2RldiIpO0ZTLnJlZ2lzdGVyRGV2aWNlKEZTLm1ha2VkZXYoMSwzKSx7cmVhZDooZnVuY3Rpb24oKXtyZXR1cm4gMH0pLHdyaXRlOihmdW5jdGlvbigpe3JldHVybiAwfSl9KTtGUy5ta2RldigiL2Rldi9udWxsIixGUy5tYWtlZGV2KDEsMykpO1RUWS5yZWdpc3RlcihGUy5tYWtlZGV2KDUsMCksVFRZLmRlZmF1bHRfdHR5X29wcyk7VFRZLnJlZ2lzdGVyKEZTLm1ha2VkZXYoNiwwKSxUVFkuZGVmYXVsdF90dHkxX29wcyk7RlMubWtkZXYoIi9kZXYvdHR5IixGUy5tYWtlZGV2KDUsMCkpO0ZTLm1rZGV2KCIvZGV2L3R0eTEiLEZTLm1ha2VkZXYoNiwwKSk7RlMubWtkaXIoIi9kZXYvc2htIik7RlMubWtkaXIoIi9kZXYvc2htL3RtcCIpfSksY3JlYXRlU3RhbmRhcmRTdHJlYW1zOihmdW5jdGlvbigpe2lmKE1vZHVsZVsic3RkaW4iXSl7RlMuY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkaW4iLE1vZHVsZVsic3RkaW4iXSl9ZWxzZXtGUy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3RkaW4iKX1pZihNb2R1bGVbInN0ZG91dCJdKXtGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRvdXQiLG51bGwsTW9kdWxlWyJzdGRvdXQiXSl9ZWxzZXtGUy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3Rkb3V0Iil9aWYoTW9kdWxlWyJzdGRlcnIiXSl7RlMuY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkZXJyIixudWxsLE1vZHVsZVsic3RkZXJyIl0pfWVsc2V7RlMuc3ltbGluaygiL2Rldi90dHkxIiwiL2Rldi9zdGRlcnIiKX12YXIgc3RkaW49RlMub3BlbigiL2Rldi9zdGRpbiIsInIiKTtIRUFQMzJbX3N0ZGluPj4yXT1GUy5nZXRQdHJGb3JTdHJlYW0oc3RkaW4pO2Fzc2VydChzdGRpbi5mZD09PTAsImludmFsaWQgaGFuZGxlIGZvciBzdGRpbiAoIitzdGRpbi5mZCsiKSIpO3ZhciBzdGRvdXQ9RlMub3BlbigiL2Rldi9zdGRvdXQiLCJ3Iik7SEVBUDMyW19zdGRvdXQ+PjJdPUZTLmdldFB0ckZvclN0cmVhbShzdGRvdXQpO2Fzc2VydChzdGRvdXQuZmQ9PT0xLCJpbnZhbGlkIGhhbmRsZSBmb3Igc3Rkb3V0ICgiK3N0ZG91dC5mZCsiKSIpO3ZhciBzdGRlcnI9RlMub3BlbigiL2Rldi9zdGRlcnIiLCJ3Iik7SEVBUDMyW19zdGRlcnI+PjJdPUZTLmdldFB0ckZvclN0cmVhbShzdGRlcnIpO2Fzc2VydChzdGRlcnIuZmQ9PT0yLCJpbnZhbGlkIGhhbmRsZSBmb3Igc3RkZXJyICgiK3N0ZGVyci5mZCsiKSIpfSksZW5zdXJlRXJybm9FcnJvcjooZnVuY3Rpb24oKXtpZihGUy5FcnJub0Vycm9yKXJldHVybjtGUy5FcnJub0Vycm9yPWZ1bmN0aW9uIEVycm5vRXJyb3IoZXJybm8pe3RoaXMuZXJybm89ZXJybm87Zm9yKHZhciBrZXkgaW4gRVJSTk9fQ09ERVMpe2lmKEVSUk5PX0NPREVTW2tleV09PT1lcnJubyl7dGhpcy5jb2RlPWtleTticmVha319dGhpcy5tZXNzYWdlPUVSUk5PX01FU1NBR0VTW2Vycm5vXX07RlMuRXJybm9FcnJvci5wcm90b3R5cGU9bmV3IEVycm9yO0ZTLkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPUZTLkVycm5vRXJyb3I7W0VSUk5PX0NPREVTLkVOT0VOVF0uZm9yRWFjaCgoZnVuY3Rpb24oY29kZSl7RlMuZ2VuZXJpY0Vycm9yc1tjb2RlXT1uZXcgRlMuRXJybm9FcnJvcihjb2RlKTtGUy5nZW5lcmljRXJyb3JzW2NvZGVdLnN0YWNrPSI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+In0pKX0pLHN0YXRpY0luaXQ6KGZ1bmN0aW9uKCl7RlMuZW5zdXJlRXJybm9FcnJvcigpO0ZTLm5hbWVUYWJsZT1uZXcgQXJyYXkoNDA5Nik7RlMubW91bnQoTUVNRlMse30sIi8iKTtGUy5jcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXMoKTtGUy5jcmVhdGVEZWZhdWx0RGV2aWNlcygpfSksaW5pdDooZnVuY3Rpb24oaW5wdXQsb3V0cHV0LGVycm9yKXthc3NlcnQoIUZTLmluaXQuaW5pdGlhbGl6ZWQsIkZTLmluaXQgd2FzIHByZXZpb3VzbHkgY2FsbGVkLiBJZiB5b3Ugd2FudCB0byBpbml0aWFsaXplIGxhdGVyIHdpdGggY3VzdG9tIHBhcmFtZXRlcnMsIHJlbW92ZSBhbnkgZWFybGllciBjYWxscyAobm90ZSB0aGF0IG9uZSBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgY29kZSkiKTtGUy5pbml0LmluaXRpYWxpemVkPXRydWU7RlMuZW5zdXJlRXJybm9FcnJvcigpO01vZHVsZVsic3RkaW4iXT1pbnB1dHx8TW9kdWxlWyJzdGRpbiJdO01vZHVsZVsic3Rkb3V0Il09b3V0cHV0fHxNb2R1bGVbInN0ZG91dCJdO01vZHVsZVsic3RkZXJyIl09ZXJyb3J8fE1vZHVsZVsic3RkZXJyIl07RlMuY3JlYXRlU3RhbmRhcmRTdHJlYW1zKCl9KSxxdWl0OihmdW5jdGlvbigpe0ZTLmluaXQuaW5pdGlhbGl6ZWQ9ZmFsc2U7Zm9yKHZhciBpPTA7aTxGUy5zdHJlYW1zLmxlbmd0aDtpKyspe3ZhciBzdHJlYW09RlMuc3RyZWFtc1tpXTtpZighc3RyZWFtKXtjb250aW51ZX1GUy5jbG9zZShzdHJlYW0pfX0pLGdldE1vZGU6KGZ1bmN0aW9uKGNhblJlYWQsY2FuV3JpdGUpe3ZhciBtb2RlPTA7aWYoY2FuUmVhZCltb2RlfD0yOTJ8NzM7aWYoY2FuV3JpdGUpbW9kZXw9MTQ2O3JldHVybiBtb2RlfSksam9pblBhdGg6KGZ1bmN0aW9uKHBhcnRzLGZvcmNlUmVsYXRpdmUpe3ZhciBwYXRoPVBBVEguam9pbi5hcHBseShudWxsLHBhcnRzKTtpZihmb3JjZVJlbGF0aXZlJiZwYXRoWzBdPT0iLyIpcGF0aD1wYXRoLnN1YnN0cigxKTtyZXR1cm4gcGF0aH0pLGFic29sdXRlUGF0aDooZnVuY3Rpb24ocmVsYXRpdmUsYmFzZSl7cmV0dXJuIFBBVEgucmVzb2x2ZShiYXNlLHJlbGF0aXZlKX0pLHN0YW5kYXJkaXplUGF0aDooZnVuY3Rpb24ocGF0aCl7cmV0dXJuIFBBVEgubm9ybWFsaXplKHBhdGgpfSksZmluZE9iamVjdDooZnVuY3Rpb24ocGF0aCxkb250UmVzb2x2ZUxhc3RMaW5rKXt2YXIgcmV0PUZTLmFuYWx5emVQYXRoKHBhdGgsZG9udFJlc29sdmVMYXN0TGluayk7aWYocmV0LmV4aXN0cyl7cmV0dXJuIHJldC5vYmplY3R9ZWxzZXtfX19zZXRFcnJObyhyZXQuZXJyb3IpO3JldHVybiBudWxsfX0pLGFuYWx5emVQYXRoOihmdW5jdGlvbihwYXRoLGRvbnRSZXNvbHZlTGFzdExpbmspe3RyeXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250UmVzb2x2ZUxhc3RMaW5rfSk7cGF0aD1sb29rdXAucGF0aH1jYXRjaChlKXt9dmFyIHJldD17aXNSb290OmZhbHNlLGV4aXN0czpmYWxzZSxlcnJvcjowLG5hbWU6bnVsbCxwYXRoOm51bGwsb2JqZWN0Om51bGwscGFyZW50RXhpc3RzOmZhbHNlLHBhcmVudFBhdGg6bnVsbCxwYXJlbnRPYmplY3Q6bnVsbH07dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3JldC5wYXJlbnRFeGlzdHM9dHJ1ZTtyZXQucGFyZW50UGF0aD1sb29rdXAucGF0aDtyZXQucGFyZW50T2JqZWN0PWxvb2t1cC5ub2RlO3JldC5uYW1lPVBBVEguYmFzZW5hbWUocGF0aCk7bG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250UmVzb2x2ZUxhc3RMaW5rfSk7cmV0LmV4aXN0cz10cnVlO3JldC5wYXRoPWxvb2t1cC5wYXRoO3JldC5vYmplY3Q9bG9va3VwLm5vZGU7cmV0Lm5hbWU9bG9va3VwLm5vZGUubmFtZTtyZXQuaXNSb290PWxvb2t1cC5wYXRoPT09Ii8ifWNhdGNoKGUpe3JldC5lcnJvcj1lLmVycm5vfXJldHVybiByZXR9KSxjcmVhdGVGb2xkZXI6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLGNhblJlYWQsY2FuV3JpdGUpe3ZhciBwYXRoPVBBVEguam9pbjIodHlwZW9mIHBhcmVudD09PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCksbmFtZSk7dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTtyZXR1cm4gRlMubWtkaXIocGF0aCxtb2RlKX0pLGNyZWF0ZVBhdGg6KGZ1bmN0aW9uKHBhcmVudCxwYXRoLGNhblJlYWQsY2FuV3JpdGUpe3BhcmVudD10eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KTt2YXIgcGFydHM9cGF0aC5zcGxpdCgiLyIpLnJldmVyc2UoKTt3aGlsZShwYXJ0cy5sZW5ndGgpe3ZhciBwYXJ0PXBhcnRzLnBvcCgpO2lmKCFwYXJ0KWNvbnRpbnVlO3ZhciBjdXJyZW50PVBBVEguam9pbjIocGFyZW50LHBhcnQpO3RyeXtGUy5ta2RpcihjdXJyZW50KX1jYXRjaChlKXt9cGFyZW50PWN1cnJlbnR9cmV0dXJuIGN1cnJlbnR9KSxjcmVhdGVGaWxlOihmdW5jdGlvbihwYXJlbnQsbmFtZSxwcm9wZXJ0aWVzLGNhblJlYWQsY2FuV3JpdGUpe3ZhciBwYXRoPVBBVEguam9pbjIodHlwZW9mIHBhcmVudD09PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCksbmFtZSk7dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTtyZXR1cm4gRlMuY3JlYXRlKHBhdGgsbW9kZSl9KSxjcmVhdGVEYXRhRmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsZGF0YSxjYW5SZWFkLGNhbldyaXRlLGNhbk93bil7dmFyIHBhdGg9bmFtZT9QQVRILmpvaW4yKHR5cGVvZiBwYXJlbnQ9PT0ic3RyaW5nIj9wYXJlbnQ6RlMuZ2V0UGF0aChwYXJlbnQpLG5hbWUpOnBhcmVudDt2YXIgbW9kZT1GUy5nZXRNb2RlKGNhblJlYWQsY2FuV3JpdGUpO3ZhciBub2RlPUZTLmNyZWF0ZShwYXRoLG1vZGUpO2lmKGRhdGEpe2lmKHR5cGVvZiBkYXRhPT09InN0cmluZyIpe3ZhciBhcnI9bmV3IEFycmF5KGRhdGEubGVuZ3RoKTtmb3IodmFyIGk9MCxsZW49ZGF0YS5sZW5ndGg7aTxsZW47KytpKWFycltpXT1kYXRhLmNoYXJDb2RlQXQoaSk7ZGF0YT1hcnJ9RlMuY2htb2Qobm9kZSxtb2RlfDE0Nik7dmFyIHN0cmVhbT1GUy5vcGVuKG5vZGUsInciKTtGUy53cml0ZShzdHJlYW0sZGF0YSwwLGRhdGEubGVuZ3RoLDAsY2FuT3duKTtGUy5jbG9zZShzdHJlYW0pO0ZTLmNobW9kKG5vZGUsbW9kZSl9cmV0dXJuIG5vZGV9KSxjcmVhdGVEZXZpY2U6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLGlucHV0LG91dHB1dCl7dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KSxuYW1lKTt2YXIgbW9kZT1GUy5nZXRNb2RlKCEhaW5wdXQsISFvdXRwdXQpO2lmKCFGUy5jcmVhdGVEZXZpY2UubWFqb3IpRlMuY3JlYXRlRGV2aWNlLm1ham9yPTY0O3ZhciBkZXY9RlMubWFrZWRldihGUy5jcmVhdGVEZXZpY2UubWFqb3IrKywwKTtGUy5yZWdpc3RlckRldmljZShkZXYse29wZW46KGZ1bmN0aW9uKHN0cmVhbSl7c3RyZWFtLnNlZWthYmxlPWZhbHNlfSksY2xvc2U6KGZ1bmN0aW9uKHN0cmVhbSl7aWYob3V0cHV0JiZvdXRwdXQuYnVmZmVyJiZvdXRwdXQuYnVmZmVyLmxlbmd0aCl7b3V0cHV0KDEwKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zKXt2YXIgYnl0ZXNSZWFkPTA7Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSsrKXt2YXIgcmVzdWx0O3RyeXtyZXN1bHQ9aW5wdXQoKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfWlmKHJlc3VsdD09PXVuZGVmaW5lZCYmYnl0ZXNSZWFkPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX1pZihyZXN1bHQ9PT1udWxsfHxyZXN1bHQ9PT11bmRlZmluZWQpYnJlYWs7Ynl0ZXNSZWFkKys7YnVmZmVyW29mZnNldCtpXT1yZXN1bHR9aWYoYnl0ZXNSZWFkKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKX1yZXR1cm4gYnl0ZXNSZWFkfSksd3JpdGU6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3Mpe2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dHJ5e291dHB1dChidWZmZXJbb2Zmc2V0K2ldKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfX1pZihsZW5ndGgpe3N0cmVhbS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpfXJldHVybiBpfSl9KTtyZXR1cm4gRlMubWtkZXYocGF0aCxtb2RlLGRldil9KSxjcmVhdGVMaW5rOihmdW5jdGlvbihwYXJlbnQsbmFtZSx0YXJnZXQsY2FuUmVhZCxjYW5Xcml0ZSl7dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KSxuYW1lKTtyZXR1cm4gRlMuc3ltbGluayh0YXJnZXQscGF0aCl9KSxmb3JjZUxvYWRGaWxlOihmdW5jdGlvbihvYmope2lmKG9iai5pc0RldmljZXx8b2JqLmlzRm9sZGVyfHxvYmoubGlua3x8b2JqLmNvbnRlbnRzKXJldHVybiB0cnVlO3ZhciBzdWNjZXNzPXRydWU7aWYodHlwZW9mIFhNTEh0dHBSZXF1ZXN0IT09InVuZGVmaW5lZCIpe3Rocm93IG5ldyBFcnJvcigiTGF6eSBsb2FkaW5nIHNob3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIChjb250ZW50cyBzZXQpIGluIGNyZWF0ZUxhenlGaWxlLCBidXQgaXQgd2FzIG5vdC4gTGF6eSBsb2FkaW5nIG9ubHkgd29ya3MgaW4gd2ViIHdvcmtlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyBvbiB0aGUgbWFpbiB0aHJlYWQuIil9ZWxzZSBpZihNb2R1bGVbInJlYWQiXSl7dHJ5e29iai5jb250ZW50cz1pbnRBcnJheUZyb21TdHJpbmcoTW9kdWxlWyJyZWFkIl0ob2JqLnVybCksdHJ1ZSl9Y2F0Y2goZSl7c3VjY2Vzcz1mYWxzZX19ZWxzZXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIHdpdGhvdXQgcmVhZCgpIG9yIFhNTEh0dHBSZXF1ZXN0LiIpfWlmKCFzdWNjZXNzKV9fX3NldEVyck5vKEVSUk5PX0NPREVTLkVJTyk7cmV0dXJuIHN1Y2Nlc3N9KSxjcmVhdGVMYXp5RmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUpe2Z1bmN0aW9uIExhenlVaW50OEFycmF5KCl7dGhpcy5sZW5ndGhLbm93bj1mYWxzZTt0aGlzLmNodW5rcz1bXX1MYXp5VWludDhBcnJheS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIExhenlVaW50OEFycmF5X2dldChpZHgpe2lmKGlkeD50aGlzLmxlbmd0aC0xfHxpZHg8MCl7cmV0dXJuIHVuZGVmaW5lZH12YXIgY2h1bmtPZmZzZXQ9aWR4JXRoaXMuY2h1bmtTaXplO3ZhciBjaHVua051bT1NYXRoLmZsb29yKGlkeC90aGlzLmNodW5rU2l6ZSk7cmV0dXJuIHRoaXMuZ2V0dGVyKGNodW5rTnVtKVtjaHVua09mZnNldF19O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5zZXREYXRhR2V0dGVyPWZ1bmN0aW9uIExhenlVaW50OEFycmF5X3NldERhdGFHZXR0ZXIoZ2V0dGVyKXt0aGlzLmdldHRlcj1nZXR0ZXJ9O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5jYWNoZUxlbmd0aD1mdW5jdGlvbiBMYXp5VWludDhBcnJheV9jYWNoZUxlbmd0aCgpe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJIRUFEIix1cmwsZmFsc2UpO3hoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTt2YXIgZGF0YWxlbmd0aD1OdW1iZXIoeGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKTt2YXIgaGVhZGVyO3ZhciBoYXNCeXRlU2VydmluZz0oaGVhZGVyPXhoci5nZXRSZXNwb25zZUhlYWRlcigiQWNjZXB0LVJhbmdlcyIpKSYmaGVhZGVyPT09ImJ5dGVzIjt2YXIgY2h1bmtTaXplPTEwMjQqMTAyNDtpZighaGFzQnl0ZVNlcnZpbmcpY2h1bmtTaXplPWRhdGFsZW5ndGg7dmFyIGRvWEhSPShmdW5jdGlvbihmcm9tLHRvKXtpZihmcm9tPnRvKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCByYW5nZSAoIitmcm9tKyIsICIrdG8rIikgb3Igbm8gYnl0ZXMgcmVxdWVzdGVkISIpO2lmKHRvPmRhdGFsZW5ndGgtMSl0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIitkYXRhbGVuZ3RoKyIgYnl0ZXMgYXZhaWxhYmxlISBwcm9ncmFtbWVyIGVycm9yISIpO3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7aWYoZGF0YWxlbmd0aCE9PWNodW5rU2l6ZSl4aHIuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCJieXRlcz0iK2Zyb20rIi0iK3RvKTtpZih0eXBlb2YgVWludDhBcnJheSE9InVuZGVmaW5lZCIpeGhyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO2lmKHhoci5vdmVycmlkZU1pbWVUeXBlKXt4aHIub3ZlcnJpZGVNaW1lVHlwZSgidGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCIpfXhoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTtpZih4aHIucmVzcG9uc2UhPT11bmRlZmluZWQpe3JldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2V8fFtdKX1lbHNle3JldHVybiBpbnRBcnJheUZyb21TdHJpbmcoeGhyLnJlc3BvbnNlVGV4dHx8IiIsdHJ1ZSl9fSk7dmFyIGxhenlBcnJheT10aGlzO2xhenlBcnJheS5zZXREYXRhR2V0dGVyKChmdW5jdGlvbihjaHVua051bSl7dmFyIHN0YXJ0PWNodW5rTnVtKmNodW5rU2l6ZTt2YXIgZW5kPShjaHVua051bSsxKSpjaHVua1NpemUtMTtlbmQ9TWF0aC5taW4oZW5kLGRhdGFsZW5ndGgtMSk7aWYodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPT09InVuZGVmaW5lZCIpe2xhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPWRvWEhSKHN0YXJ0LGVuZCl9aWYodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPT09InVuZGVmaW5lZCIpdGhyb3cgbmV3IEVycm9yKCJkb1hIUiBmYWlsZWQhIik7cmV0dXJuIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dfSkpO3RoaXMuX2xlbmd0aD1kYXRhbGVuZ3RoO3RoaXMuX2NodW5rU2l6ZT1jaHVua1NpemU7dGhpcy5sZW5ndGhLbm93bj10cnVlfTtpZih0eXBlb2YgWE1MSHR0cFJlcXVlc3QhPT0idW5kZWZpbmVkIil7aWYoIUVOVklST05NRU5UX0lTX1dPUktFUil0aHJvdyJDYW5ub3QgZG8gc3luY2hyb25vdXMgYmluYXJ5IFhIUnMgb3V0c2lkZSB3ZWJ3b3JrZXJzIGluIG1vZGVybiBicm93c2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjIjt2YXIgbGF6eUFycmF5PW5ldyBMYXp5VWludDhBcnJheTtPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCJsZW5ndGgiLHtnZXQ6KGZ1bmN0aW9uKCl7aWYoIXRoaXMubGVuZ3RoS25vd24pe3RoaXMuY2FjaGVMZW5ndGgoKX1yZXR1cm4gdGhpcy5fbGVuZ3RofSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCJjaHVua1NpemUiLHtnZXQ6KGZ1bmN0aW9uKCl7aWYoIXRoaXMubGVuZ3RoS25vd24pe3RoaXMuY2FjaGVMZW5ndGgoKX1yZXR1cm4gdGhpcy5fY2h1bmtTaXplfSl9KTt2YXIgcHJvcGVydGllcz17aXNEZXZpY2U6ZmFsc2UsY29udGVudHM6bGF6eUFycmF5fX1lbHNle3ZhciBwcm9wZXJ0aWVzPXtpc0RldmljZTpmYWxzZSx1cmw6dXJsfX12YXIgbm9kZT1GUy5jcmVhdGVGaWxlKHBhcmVudCxuYW1lLHByb3BlcnRpZXMsY2FuUmVhZCxjYW5Xcml0ZSk7aWYocHJvcGVydGllcy5jb250ZW50cyl7bm9kZS5jb250ZW50cz1wcm9wZXJ0aWVzLmNvbnRlbnRzfWVsc2UgaWYocHJvcGVydGllcy51cmwpe25vZGUuY29udGVudHM9bnVsbDtub2RlLnVybD1wcm9wZXJ0aWVzLnVybH12YXIgc3RyZWFtX29wcz17fTt2YXIga2V5cz1PYmplY3Qua2V5cyhub2RlLnN0cmVhbV9vcHMpO2tleXMuZm9yRWFjaCgoZnVuY3Rpb24oa2V5KXt2YXIgZm49bm9kZS5zdHJlYW1fb3BzW2tleV07c3RyZWFtX29wc1trZXldPWZ1bmN0aW9uIGZvcmNlTG9hZExhenlGaWxlKCl7aWYoIUZTLmZvcmNlTG9hZEZpbGUobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyl9cmV0dXJuIGZuLmFwcGx5KG51bGwsYXJndW1lbnRzKX19KSk7c3RyZWFtX29wcy5yZWFkPWZ1bmN0aW9uIHN0cmVhbV9vcHNfcmVhZChzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe2lmKCFGUy5mb3JjZUxvYWRGaWxlKG5vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfXZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50cztpZihwb3NpdGlvbj49Y29udGVudHMubGVuZ3RoKXJldHVybiAwO3ZhciBzaXplPU1hdGgubWluKGNvbnRlbnRzLmxlbmd0aC1wb3NpdGlvbixsZW5ndGgpO2Fzc2VydChzaXplPj0wKTtpZihjb250ZW50cy5zbGljZSl7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXX19ZWxzZXtmb3IodmFyIGk9MDtpPHNpemU7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPWNvbnRlbnRzLmdldChwb3NpdGlvbitpKX19cmV0dXJuIHNpemV9O25vZGUuc3RyZWFtX29wcz1zdHJlYW1fb3BzO3JldHVybiBub2RlfSksY3JlYXRlUHJlbG9hZGVkRmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUsb25sb2FkLG9uZXJyb3IsZG9udENyZWF0ZUZpbGUsY2FuT3duKXtCcm93c2VyLmluaXQoKTt2YXIgZnVsbG5hbWU9bmFtZT9QQVRILnJlc29sdmUoUEFUSC5qb2luMihwYXJlbnQsbmFtZSkpOnBhcmVudDtmdW5jdGlvbiBwcm9jZXNzRGF0YShieXRlQXJyYXkpe2Z1bmN0aW9uIGZpbmlzaChieXRlQXJyYXkpe2lmKCFkb250Q3JlYXRlRmlsZSl7RlMuY3JlYXRlRGF0YUZpbGUocGFyZW50LG5hbWUsYnl0ZUFycmF5LGNhblJlYWQsY2FuV3JpdGUsY2FuT3duKX1pZihvbmxvYWQpb25sb2FkKCk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgiY3AgIitmdWxsbmFtZSl9dmFyIGhhbmRsZWQ9ZmFsc2U7TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLmZvckVhY2goKGZ1bmN0aW9uKHBsdWdpbil7aWYoaGFuZGxlZClyZXR1cm47aWYocGx1Z2luWyJjYW5IYW5kbGUiXShmdWxsbmFtZSkpe3BsdWdpblsiaGFuZGxlIl0oYnl0ZUFycmF5LGZ1bGxuYW1lLGZpbmlzaCwoZnVuY3Rpb24oKXtpZihvbmVycm9yKW9uZXJyb3IoKTtyZW1vdmVSdW5EZXBlbmRlbmN5KCJjcCAiK2Z1bGxuYW1lKX0pKTtoYW5kbGVkPXRydWV9fSkpO2lmKCFoYW5kbGVkKWZpbmlzaChieXRlQXJyYXkpfWFkZFJ1bkRlcGVuZGVuY3koImNwICIrZnVsbG5hbWUpO2lmKHR5cGVvZiB1cmw9PSJzdHJpbmciKXtCcm93c2VyLmFzeW5jTG9hZCh1cmwsKGZ1bmN0aW9uKGJ5dGVBcnJheSl7cHJvY2Vzc0RhdGEoYnl0ZUFycmF5KX0pLG9uZXJyb3IpfWVsc2V7cHJvY2Vzc0RhdGEodXJsKX19KSxpbmRleGVkREI6KGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5pbmRleGVkREJ8fHdpbmRvdy5tb3pJbmRleGVkREJ8fHdpbmRvdy53ZWJraXRJbmRleGVkREJ8fHdpbmRvdy5tc0luZGV4ZWREQn0pLERCX05BTUU6KGZ1bmN0aW9uKCl7cmV0dXJuIkVNX0ZTXyIrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSksREJfVkVSU0lPTjoyMCxEQl9TVE9SRV9OQU1FOiJGSUxFX0RBVEEiLHNhdmVGaWxlc1RvREI6KGZ1bmN0aW9uKHBhdGhzLG9ubG9hZCxvbmVycm9yKXtvbmxvYWQ9b25sb2FkfHwoZnVuY3Rpb24oKXt9KTtvbmVycm9yPW9uZXJyb3J8fChmdW5jdGlvbigpe30pO3ZhciBpbmRleGVkREI9RlMuaW5kZXhlZERCKCk7dHJ5e3ZhciBvcGVuUmVxdWVzdD1pbmRleGVkREIub3BlbihGUy5EQl9OQU1FKCksRlMuREJfVkVSU0lPTil9Y2F0Y2goZSl7cmV0dXJuIG9uZXJyb3IoZSl9b3BlblJlcXVlc3Qub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uIG9wZW5SZXF1ZXN0X29udXBncmFkZW5lZWRlZCgpe2NvbnNvbGUubG9nKCJjcmVhdGluZyBkYiIpO3ZhciBkYj1vcGVuUmVxdWVzdC5yZXN1bHQ7ZGIuY3JlYXRlT2JqZWN0U3RvcmUoRlMuREJfU1RPUkVfTkFNRSl9O29wZW5SZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3MoKXt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3ZhciB0cmFuc2FjdGlvbj1kYi50cmFuc2FjdGlvbihbRlMuREJfU1RPUkVfTkFNRV0sInJlYWR3cml0ZSIpO3ZhciBmaWxlcz10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTt2YXIgb2s9MCxmYWlsPTAsdG90YWw9cGF0aHMubGVuZ3RoO2Z1bmN0aW9uIGZpbmlzaCgpe2lmKGZhaWw9PTApb25sb2FkKCk7ZWxzZSBvbmVycm9yKCl9cGF0aHMuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCl7dmFyIHB1dFJlcXVlc3Q9ZmlsZXMucHV0KEZTLmFuYWx5emVQYXRoKHBhdGgpLm9iamVjdC5jb250ZW50cyxwYXRoKTtwdXRSZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBwdXRSZXF1ZXN0X29uc3VjY2Vzcygpe29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9O3B1dFJlcXVlc3Qub25lcnJvcj1mdW5jdGlvbiBwdXRSZXF1ZXN0X29uZXJyb3IoKXtmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9fSkpO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcn07b3BlblJlcXVlc3Qub25lcnJvcj1vbmVycm9yfSksbG9hZEZpbGVzRnJvbURCOihmdW5jdGlvbihwYXRocyxvbmxvYWQsb25lcnJvcil7b25sb2FkPW9ubG9hZHx8KGZ1bmN0aW9uKCl7fSk7b25lcnJvcj1vbmVycm9yfHwoZnVuY3Rpb24oKXt9KTt2YXIgaW5kZXhlZERCPUZTLmluZGV4ZWREQigpO3RyeXt2YXIgb3BlblJlcXVlc3Q9aW5kZXhlZERCLm9wZW4oRlMuREJfTkFNRSgpLEZTLkRCX1ZFUlNJT04pfWNhdGNoKGUpe3JldHVybiBvbmVycm9yKGUpfW9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZD1vbmVycm9yO29wZW5SZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3MoKXt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3RyeXt2YXIgdHJhbnNhY3Rpb249ZGIudHJhbnNhY3Rpb24oW0ZTLkRCX1NUT1JFX05BTUVdLCJyZWFkb25seSIpfWNhdGNoKGUpe29uZXJyb3IoZSk7cmV0dXJufXZhciBmaWxlcz10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTt2YXIgb2s9MCxmYWlsPTAsdG90YWw9cGF0aHMubGVuZ3RoO2Z1bmN0aW9uIGZpbmlzaCgpe2lmKGZhaWw9PTApb25sb2FkKCk7ZWxzZSBvbmVycm9yKCl9cGF0aHMuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCl7dmFyIGdldFJlcXVlc3Q9ZmlsZXMuZ2V0KHBhdGgpO2dldFJlcXVlc3Qub25zdWNjZXNzPWZ1bmN0aW9uIGdldFJlcXVlc3Rfb25zdWNjZXNzKCl7aWYoRlMuYW5hbHl6ZVBhdGgocGF0aCkuZXhpc3RzKXtGUy51bmxpbmsocGF0aCl9RlMuY3JlYXRlRGF0YUZpbGUoUEFUSC5kaXJuYW1lKHBhdGgpLFBBVEguYmFzZW5hbWUocGF0aCksZ2V0UmVxdWVzdC5yZXN1bHQsdHJ1ZSx0cnVlLHRydWUpO29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9O2dldFJlcXVlc3Qub25lcnJvcj1mdW5jdGlvbiBnZXRSZXF1ZXN0X29uZXJyb3IoKXtmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9fSkpO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcn07b3BlblJlcXVlc3Qub25lcnJvcj1vbmVycm9yfSl9O2Z1bmN0aW9uIF9mZmx1c2goc3RyZWFtKXt9TW9kdWxlWyJfc3RybGVuIl09X3N0cmxlbjtmdW5jdGlvbiBfX3JlYWxseU5lZ2F0aXZlKHgpe3JldHVybiB4PDB8fHg9PT0wJiYxL3g9PT0tSW5maW5pdHl9ZnVuY3Rpb24gX19mb3JtYXRTdHJpbmcoZm9ybWF0LHZhcmFyZ3Mpe3ZhciB0ZXh0SW5kZXg9Zm9ybWF0O3ZhciBhcmdJbmRleD0wO2Z1bmN0aW9uIGdldE5leHRBcmcodHlwZSl7dmFyIHJldDtpZih0eXBlPT09ImRvdWJsZSIpe3JldD0oSEVBUDMyW3RlbXBEb3VibGVQdHI+PjJdPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXSxIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1IRUFQMzJbdmFyYXJncysoYXJnSW5kZXgrNCk+PjJdLCtIRUFQRjY0W3RlbXBEb3VibGVQdHI+PjNdKX1lbHNlIGlmKHR5cGU9PSJpNjQiKXtyZXQ9W0hFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXSxIRUFQMzJbdmFyYXJncysoYXJnSW5kZXgrNCk+PjJdXX1lbHNle3R5cGU9ImkzMiI7cmV0PUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXX1hcmdJbmRleCs9UnVudGltZS5nZXROYXRpdmVGaWVsZFNpemUodHlwZSk7cmV0dXJuIHJldH12YXIgcmV0PVtdO3ZhciBjdXJyLG5leHQsY3VyckFyZzt3aGlsZSgxKXt2YXIgc3RhcnRUZXh0SW5kZXg9dGV4dEluZGV4O2N1cnI9SEVBUDhbdGV4dEluZGV4Pj4wXTtpZihjdXJyPT09MClicmVhaztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtpZihjdXJyPT0zNyl7dmFyIGZsYWdBbHdheXNTaWduZWQ9ZmFsc2U7dmFyIGZsYWdMZWZ0QWxpZ249ZmFsc2U7dmFyIGZsYWdBbHRlcm5hdGl2ZT1mYWxzZTt2YXIgZmxhZ1plcm9QYWQ9ZmFsc2U7dmFyIGZsYWdQYWRTaWduPWZhbHNlO2ZsYWdzTG9vcDp3aGlsZSgxKXtzd2l0Y2gobmV4dCl7Y2FzZSA0MzpmbGFnQWx3YXlzU2lnbmVkPXRydWU7YnJlYWs7Y2FzZSA0NTpmbGFnTGVmdEFsaWduPXRydWU7YnJlYWs7Y2FzZSAzNTpmbGFnQWx0ZXJuYXRpdmU9dHJ1ZTticmVhaztjYXNlIDQ4OmlmKGZsYWdaZXJvUGFkKXticmVhayBmbGFnc0xvb3B9ZWxzZXtmbGFnWmVyb1BhZD10cnVlO2JyZWFrfTtjYXNlIDMyOmZsYWdQYWRTaWduPXRydWU7YnJlYWs7ZGVmYXVsdDpicmVhayBmbGFnc0xvb3B9dGV4dEluZGV4Kys7bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19dmFyIHdpZHRoPTA7aWYobmV4dD09NDIpe3dpZHRoPWdldE5leHRBcmcoImkzMiIpO3RleHRJbmRleCsrO25leHQ9SEVBUDhbdGV4dEluZGV4KzE+PjBdfWVsc2V7d2hpbGUobmV4dD49NDgmJm5leHQ8PTU3KXt3aWR0aD13aWR0aCoxMCsobmV4dC00OCk7dGV4dEluZGV4Kys7bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19fXZhciBwcmVjaXNpb25TZXQ9ZmFsc2UscHJlY2lzaW9uPS0xO2lmKG5leHQ9PTQ2KXtwcmVjaXNpb249MDtwcmVjaXNpb25TZXQ9dHJ1ZTt0ZXh0SW5kZXgrKztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtpZihuZXh0PT00Mil7cHJlY2lzaW9uPWdldE5leHRBcmcoImkzMiIpO3RleHRJbmRleCsrfWVsc2V7d2hpbGUoMSl7dmFyIHByZWNpc2lvbkNocj1IRUFQOFt0ZXh0SW5kZXgrMT4+MF07aWYocHJlY2lzaW9uQ2hyPDQ4fHxwcmVjaXNpb25DaHI+NTcpYnJlYWs7cHJlY2lzaW9uPXByZWNpc2lvbioxMCsocHJlY2lzaW9uQ2hyLTQ4KTt0ZXh0SW5kZXgrK319bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19aWYocHJlY2lzaW9uPDApe3ByZWNpc2lvbj02O3ByZWNpc2lvblNldD1mYWxzZX12YXIgYXJnU2l6ZTtzd2l0Y2goU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0KSl7Y2FzZSJoIjp2YXIgbmV4dE5leHQ9SEVBUDhbdGV4dEluZGV4KzI+PjBdO2lmKG5leHROZXh0PT0xMDQpe3RleHRJbmRleCsrO2FyZ1NpemU9MX1lbHNle2FyZ1NpemU9Mn1icmVhaztjYXNlImwiOnZhciBuZXh0TmV4dD1IRUFQOFt0ZXh0SW5kZXgrMj4+MF07aWYobmV4dE5leHQ9PTEwOCl7dGV4dEluZGV4Kys7YXJnU2l6ZT04fWVsc2V7YXJnU2l6ZT00fWJyZWFrO2Nhc2UiTCI6Y2FzZSJxIjpjYXNlImoiOmFyZ1NpemU9ODticmVhaztjYXNlInoiOmNhc2UidCI6Y2FzZSJJIjphcmdTaXplPTQ7YnJlYWs7ZGVmYXVsdDphcmdTaXplPW51bGx9aWYoYXJnU2l6ZSl0ZXh0SW5kZXgrKztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtzd2l0Y2goU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0KSl7Y2FzZSJkIjpjYXNlImkiOmNhc2UidSI6Y2FzZSJvIjpjYXNlIngiOmNhc2UiWCI6Y2FzZSJwIjp7dmFyIHNpZ25lZD1uZXh0PT0xMDB8fG5leHQ9PTEwNTthcmdTaXplPWFyZ1NpemV8fDQ7dmFyIGN1cnJBcmc9Z2V0TmV4dEFyZygiaSIrYXJnU2l6ZSo4KTt2YXIgb3JpZ0FyZz1jdXJyQXJnO3ZhciBhcmdUZXh0O2lmKGFyZ1NpemU9PTgpe2N1cnJBcmc9UnVudGltZS5tYWtlQmlnSW50KGN1cnJBcmdbMF0sY3VyckFyZ1sxXSxuZXh0PT0xMTcpfWlmKGFyZ1NpemU8PTQpe3ZhciBsaW1pdD1NYXRoLnBvdygyNTYsYXJnU2l6ZSktMTtjdXJyQXJnPShzaWduZWQ/cmVTaWduOnVuU2lnbikoY3VyckFyZyZsaW1pdCxhcmdTaXplKjgpfXZhciBjdXJyQWJzQXJnPU1hdGguYWJzKGN1cnJBcmcpO3ZhciBwcmVmaXg9IiI7aWYobmV4dD09MTAwfHxuZXh0PT0xMDUpe2lmKGFyZ1NpemU9PTgmJmk2NE1hdGgpYXJnVGV4dD1pNjRNYXRoLnN0cmluZ2lmeShvcmlnQXJnWzBdLG9yaWdBcmdbMV0sbnVsbCk7ZWxzZSBhcmdUZXh0PXJlU2lnbihjdXJyQXJnLDgqYXJnU2l6ZSwxKS50b1N0cmluZygxMCl9ZWxzZSBpZihuZXh0PT0xMTcpe2lmKGFyZ1NpemU9PTgmJmk2NE1hdGgpYXJnVGV4dD1pNjRNYXRoLnN0cmluZ2lmeShvcmlnQXJnWzBdLG9yaWdBcmdbMV0sdHJ1ZSk7ZWxzZSBhcmdUZXh0PXVuU2lnbihjdXJyQXJnLDgqYXJnU2l6ZSwxKS50b1N0cmluZygxMCk7Y3VyckFyZz1NYXRoLmFicyhjdXJyQXJnKX1lbHNlIGlmKG5leHQ9PTExMSl7YXJnVGV4dD0oZmxhZ0FsdGVybmF0aXZlPyIwIjoiIikrY3VyckFic0FyZy50b1N0cmluZyg4KX1lbHNlIGlmKG5leHQ9PTEyMHx8bmV4dD09ODgpe3ByZWZpeD1mbGFnQWx0ZXJuYXRpdmUmJmN1cnJBcmchPTA/IjB4IjoiIjtpZihhcmdTaXplPT04JiZpNjRNYXRoKXtpZihvcmlnQXJnWzFdKXthcmdUZXh0PShvcmlnQXJnWzFdPj4+MCkudG9TdHJpbmcoMTYpO3ZhciBsb3dlcj0ob3JpZ0FyZ1swXT4+PjApLnRvU3RyaW5nKDE2KTt3aGlsZShsb3dlci5sZW5ndGg8OClsb3dlcj0iMCIrbG93ZXI7YXJnVGV4dCs9bG93ZXJ9ZWxzZXthcmdUZXh0PShvcmlnQXJnWzBdPj4+MCkudG9TdHJpbmcoMTYpfX1lbHNlIGlmKGN1cnJBcmc8MCl7Y3VyckFyZz0tY3VyckFyZzthcmdUZXh0PShjdXJyQWJzQXJnLTEpLnRvU3RyaW5nKDE2KTt2YXIgYnVmZmVyPVtdO2Zvcih2YXIgaT0wO2k8YXJnVGV4dC5sZW5ndGg7aSsrKXtidWZmZXIucHVzaCgoMTUtcGFyc2VJbnQoYXJnVGV4dFtpXSwxNikpLnRvU3RyaW5nKDE2KSl9YXJnVGV4dD1idWZmZXIuam9pbigiIik7d2hpbGUoYXJnVGV4dC5sZW5ndGg8YXJnU2l6ZSoyKWFyZ1RleHQ9ImYiK2FyZ1RleHR9ZWxzZXthcmdUZXh0PWN1cnJBYnNBcmcudG9TdHJpbmcoMTYpfWlmKG5leHQ9PTg4KXtwcmVmaXg9cHJlZml4LnRvVXBwZXJDYXNlKCk7YXJnVGV4dD1hcmdUZXh0LnRvVXBwZXJDYXNlKCl9fWVsc2UgaWYobmV4dD09MTEyKXtpZihjdXJyQWJzQXJnPT09MCl7YXJnVGV4dD0iKG5pbCkifWVsc2V7cHJlZml4PSIweCI7YXJnVGV4dD1jdXJyQWJzQXJnLnRvU3RyaW5nKDE2KX19aWYocHJlY2lzaW9uU2V0KXt3aGlsZShhcmdUZXh0Lmxlbmd0aDxwcmVjaXNpb24pe2FyZ1RleHQ9IjAiK2FyZ1RleHR9fWlmKGN1cnJBcmc+PTApe2lmKGZsYWdBbHdheXNTaWduZWQpe3ByZWZpeD0iKyIrcHJlZml4fWVsc2UgaWYoZmxhZ1BhZFNpZ24pe3ByZWZpeD0iICIrcHJlZml4fX1pZihhcmdUZXh0LmNoYXJBdCgwKT09Ii0iKXtwcmVmaXg9Ii0iK3ByZWZpeDthcmdUZXh0PWFyZ1RleHQuc3Vic3RyKDEpfXdoaWxlKHByZWZpeC5sZW5ndGgrYXJnVGV4dC5sZW5ndGg8d2lkdGgpe2lmKGZsYWdMZWZ0QWxpZ24pe2FyZ1RleHQrPSIgIn1lbHNle2lmKGZsYWdaZXJvUGFkKXthcmdUZXh0PSIwIithcmdUZXh0fWVsc2V7cHJlZml4PSIgIitwcmVmaXh9fX1hcmdUZXh0PXByZWZpeCthcmdUZXh0O2FyZ1RleHQuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKGNocil7cmV0LnB1c2goY2hyLmNoYXJDb2RlQXQoMCkpfSkpO2JyZWFrfTtjYXNlImYiOmNhc2UiRiI6Y2FzZSJlIjpjYXNlIkUiOmNhc2UiZyI6Y2FzZSJHIjp7dmFyIGN1cnJBcmc9Z2V0TmV4dEFyZygiZG91YmxlIik7dmFyIGFyZ1RleHQ7aWYoaXNOYU4oY3VyckFyZykpe2FyZ1RleHQ9Im5hbiI7ZmxhZ1plcm9QYWQ9ZmFsc2V9ZWxzZSBpZighaXNGaW5pdGUoY3VyckFyZykpe2FyZ1RleHQ9KGN1cnJBcmc8MD8iLSI6IiIpKyJpbmYiO2ZsYWdaZXJvUGFkPWZhbHNlfWVsc2V7dmFyIGlzR2VuZXJhbD1mYWxzZTt2YXIgZWZmZWN0aXZlUHJlY2lzaW9uPU1hdGgubWluKHByZWNpc2lvbiwyMCk7aWYobmV4dD09MTAzfHxuZXh0PT03MSl7aXNHZW5lcmFsPXRydWU7cHJlY2lzaW9uPXByZWNpc2lvbnx8MTt2YXIgZXhwb25lbnQ9cGFyc2VJbnQoY3VyckFyZy50b0V4cG9uZW50aWFsKGVmZmVjdGl2ZVByZWNpc2lvbikuc3BsaXQoImUiKVsxXSwxMCk7aWYocHJlY2lzaW9uPmV4cG9uZW50JiZleHBvbmVudD49LTQpe25leHQ9KG5leHQ9PTEwMz8iZiI6IkYiKS5jaGFyQ29kZUF0KDApO3ByZWNpc2lvbi09ZXhwb25lbnQrMX1lbHNle25leHQ9KG5leHQ9PTEwMz8iZSI6IkUiKS5jaGFyQ29kZUF0KDApO3ByZWNpc2lvbi0tfWVmZmVjdGl2ZVByZWNpc2lvbj1NYXRoLm1pbihwcmVjaXNpb24sMjApfWlmKG5leHQ9PTEwMXx8bmV4dD09Njkpe2FyZ1RleHQ9Y3VyckFyZy50b0V4cG9uZW50aWFsKGVmZmVjdGl2ZVByZWNpc2lvbik7aWYoL1tlRV1bLStdXGQkLy50ZXN0KGFyZ1RleHQpKXthcmdUZXh0PWFyZ1RleHQuc2xpY2UoMCwtMSkrIjAiK2FyZ1RleHQuc2xpY2UoLTEpfX1lbHNlIGlmKG5leHQ9PTEwMnx8bmV4dD09NzApe2FyZ1RleHQ9Y3VyckFyZy50b0ZpeGVkKGVmZmVjdGl2ZVByZWNpc2lvbik7aWYoY3VyckFyZz09PTAmJl9fcmVhbGx5TmVnYXRpdmUoY3VyckFyZykpe2FyZ1RleHQ9Ii0iK2FyZ1RleHR9fXZhciBwYXJ0cz1hcmdUZXh0LnNwbGl0KCJlIik7aWYoaXNHZW5lcmFsJiYhZmxhZ0FsdGVybmF0aXZlKXt3aGlsZShwYXJ0c1swXS5sZW5ndGg+MSYmcGFydHNbMF0uaW5kZXhPZigiLiIpIT0tMSYmKHBhcnRzWzBdLnNsaWNlKC0xKT09IjAifHxwYXJ0c1swXS5zbGljZSgtMSk9PSIuIikpe3BhcnRzWzBdPXBhcnRzWzBdLnNsaWNlKDAsLTEpfX1lbHNle2lmKGZsYWdBbHRlcm5hdGl2ZSYmYXJnVGV4dC5pbmRleE9mKCIuIik9PS0xKXBhcnRzWzBdKz0iLiI7d2hpbGUocHJlY2lzaW9uPmVmZmVjdGl2ZVByZWNpc2lvbisrKXBhcnRzWzBdKz0iMCJ9YXJnVGV4dD1wYXJ0c1swXSsocGFydHMubGVuZ3RoPjE/ImUiK3BhcnRzWzFdOiIiKTtpZihuZXh0PT02OSlhcmdUZXh0PWFyZ1RleHQudG9VcHBlckNhc2UoKTtpZihjdXJyQXJnPj0wKXtpZihmbGFnQWx3YXlzU2lnbmVkKXthcmdUZXh0PSIrIithcmdUZXh0fWVsc2UgaWYoZmxhZ1BhZFNpZ24pe2FyZ1RleHQ9IiAiK2FyZ1RleHR9fX13aGlsZShhcmdUZXh0Lmxlbmd0aDx3aWR0aCl7aWYoZmxhZ0xlZnRBbGlnbil7YXJnVGV4dCs9IiAifWVsc2V7aWYoZmxhZ1plcm9QYWQmJihhcmdUZXh0WzBdPT0iLSJ8fGFyZ1RleHRbMF09PSIrIikpe2FyZ1RleHQ9YXJnVGV4dFswXSsiMCIrYXJnVGV4dC5zbGljZSgxKX1lbHNle2FyZ1RleHQ9KGZsYWdaZXJvUGFkPyIwIjoiICIpK2FyZ1RleHR9fX1pZihuZXh0PDk3KWFyZ1RleHQ9YXJnVGV4dC50b1VwcGVyQ2FzZSgpO2FyZ1RleHQuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKGNocil7cmV0LnB1c2goY2hyLmNoYXJDb2RlQXQoMCkpfSkpO2JyZWFrfTtjYXNlInMiOnt2YXIgYXJnPWdldE5leHRBcmcoImk4KiIpO3ZhciBhcmdMZW5ndGg9YXJnP19zdHJsZW4oYXJnKToiKG51bGwpIi5sZW5ndGg7aWYocHJlY2lzaW9uU2V0KWFyZ0xlbmd0aD1NYXRoLm1pbihhcmdMZW5ndGgscHJlY2lzaW9uKTtpZighZmxhZ0xlZnRBbGlnbil7d2hpbGUoYXJnTGVuZ3RoPHdpZHRoLS0pe3JldC5wdXNoKDMyKX19aWYoYXJnKXtmb3IodmFyIGk9MDtpPGFyZ0xlbmd0aDtpKyspe3JldC5wdXNoKEhFQVBVOFthcmcrKz4+MF0pfX1lbHNle3JldD1yZXQuY29uY2F0KGludEFycmF5RnJvbVN0cmluZygiKG51bGwpIi5zdWJzdHIoMCxhcmdMZW5ndGgpLHRydWUpKX1pZihmbGFnTGVmdEFsaWduKXt3aGlsZShhcmdMZW5ndGg8d2lkdGgtLSl7cmV0LnB1c2goMzIpfX1icmVha307Y2FzZSJjIjp7aWYoZmxhZ0xlZnRBbGlnbilyZXQucHVzaChnZXROZXh0QXJnKCJpOCIpKTt3aGlsZSgtLXdpZHRoPjApe3JldC5wdXNoKDMyKX1pZighZmxhZ0xlZnRBbGlnbilyZXQucHVzaChnZXROZXh0QXJnKCJpOCIpKTticmVha307Y2FzZSJuIjp7dmFyIHB0cj1nZXROZXh0QXJnKCJpMzIqIik7SEVBUDMyW3B0cj4+Ml09cmV0Lmxlbmd0aDticmVha307Y2FzZSIlIjp7cmV0LnB1c2goY3Vycik7YnJlYWt9O2RlZmF1bHQ6e2Zvcih2YXIgaT1zdGFydFRleHRJbmRleDtpPHRleHRJbmRleCsyO2krKyl7cmV0LnB1c2goSEVBUDhbaT4+MF0pfX19dGV4dEluZGV4Kz0yfWVsc2V7cmV0LnB1c2goY3Vycik7dGV4dEluZGV4Kz0xfX1yZXR1cm4gcmV0fWZ1bmN0aW9uIF9tYWxsb2MoYnl0ZXMpe3ZhciBwdHI9UnVudGltZS5keW5hbWljQWxsb2MoYnl0ZXMrOCk7cmV0dXJuIHB0cis4JjQyOTQ5NjcyODh9TW9kdWxlWyJfbWFsbG9jIl09X21hbGxvYztmdW5jdGlvbiBfc25wcmludGYocyxuLGZvcm1hdCx2YXJhcmdzKXt2YXIgcmVzdWx0PV9fZm9ybWF0U3RyaW5nKGZvcm1hdCx2YXJhcmdzKTt2YXIgbGltaXQ9bj09PXVuZGVmaW5lZD9yZXN1bHQubGVuZ3RoOk1hdGgubWluKHJlc3VsdC5sZW5ndGgsTWF0aC5tYXgobi0xLDApKTtpZihzPDApe3M9LXM7dmFyIGJ1Zj1fbWFsbG9jKGxpbWl0KzEpO0hFQVAzMltzPj4yXT1idWY7cz1idWZ9Zm9yKHZhciBpPTA7aTxsaW1pdDtpKyspe0hFQVA4W3MraT4+MF09cmVzdWx0W2ldfWlmKGxpbWl0PG58fG49PT11bmRlZmluZWQpSEVBUDhbcytpPj4wXT0wO3JldHVybiByZXN1bHQubGVuZ3RofWZ1bmN0aW9uIF9ta3BvcnQoKXt0aHJvdyJUT0RPIn12YXIgU09DS0ZTPXttb3VudDooZnVuY3Rpb24obW91bnQpe3JldHVybiBGUy5jcmVhdGVOb2RlKG51bGwsIi8iLDE2Mzg0fDUxMSwwKX0pLGNyZWF0ZVNvY2tldDooZnVuY3Rpb24oZmFtaWx5LHR5cGUscHJvdG9jb2wpe3ZhciBzdHJlYW1pbmc9dHlwZT09MTtpZihwcm90b2NvbCl7YXNzZXJ0KHN0cmVhbWluZz09KHByb3RvY29sPT02KSl9dmFyIHNvY2s9e2ZhbWlseTpmYW1pbHksdHlwZTp0eXBlLHByb3RvY29sOnByb3RvY29sLHNlcnZlcjpudWxsLHBlZXJzOnt9LHBlbmRpbmc6W10scmVjdl9xdWV1ZTpbXSxzb2NrX29wczpTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzfTt2YXIgbmFtZT1TT0NLRlMubmV4dG5hbWUoKTt2YXIgbm9kZT1GUy5jcmVhdGVOb2RlKFNPQ0tGUy5yb290LG5hbWUsNDkxNTIsMCk7bm9kZS5zb2NrPXNvY2s7dmFyIHN0cmVhbT1GUy5jcmVhdGVTdHJlYW0oe3BhdGg6bmFtZSxub2RlOm5vZGUsZmxhZ3M6RlMubW9kZVN0cmluZ1RvRmxhZ3MoInIrIiksc2Vla2FibGU6ZmFsc2Usc3RyZWFtX29wczpTT0NLRlMuc3RyZWFtX29wc30pO3NvY2suc3RyZWFtPXN0cmVhbTtyZXR1cm4gc29ja30pLGdldFNvY2tldDooZnVuY3Rpb24oZmQpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZkKTtpZighc3RyZWFtfHwhRlMuaXNTb2NrZXQoc3RyZWFtLm5vZGUubW9kZSkpe3JldHVybiBudWxsfXJldHVybiBzdHJlYW0ubm9kZS5zb2NrfSksc3RyZWFtX29wczp7cG9sbDooZnVuY3Rpb24oc3RyZWFtKXt2YXIgc29jaz1zdHJlYW0ubm9kZS5zb2NrO3JldHVybiBzb2NrLnNvY2tfb3BzLnBvbGwoc29jayl9KSxpb2N0bDooZnVuY3Rpb24oc3RyZWFtLHJlcXVlc3QsdmFyYXJncyl7dmFyIHNvY2s9c3RyZWFtLm5vZGUuc29jaztyZXR1cm4gc29jay5zb2NrX29wcy5pb2N0bChzb2NrLHJlcXVlc3QsdmFyYXJncyl9KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7dmFyIG1zZz1zb2NrLnNvY2tfb3BzLnJlY3Ztc2coc29jayxsZW5ndGgpO2lmKCFtc2cpe3JldHVybiAwfWJ1ZmZlci5zZXQobXNnLmJ1ZmZlcixvZmZzZXQpO3JldHVybiBtc2cuYnVmZmVyLmxlbmd0aH0pLHdyaXRlOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7cmV0dXJuIHNvY2suc29ja19vcHMuc2VuZG1zZyhzb2NrLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoKX0pLGNsb3NlOihmdW5jdGlvbihzdHJlYW0pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7c29jay5zb2NrX29wcy5jbG9zZShzb2NrKX0pfSxuZXh0bmFtZTooZnVuY3Rpb24oKXtpZighU09DS0ZTLm5leHRuYW1lLmN1cnJlbnQpe1NPQ0tGUy5uZXh0bmFtZS5jdXJyZW50PTB9cmV0dXJuInNvY2tldFsiK1NPQ0tGUy5uZXh0bmFtZS5jdXJyZW50KysgKyJdIn0pLHdlYnNvY2tldF9zb2NrX29wczp7Y3JlYXRlUGVlcjooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe3ZhciB3cztpZih0eXBlb2YgYWRkcj09PSJvYmplY3QiKXt3cz1hZGRyO2FkZHI9bnVsbDtwb3J0PW51bGx9aWYod3Mpe2lmKHdzLl9zb2NrZXQpe2FkZHI9d3MuX3NvY2tldC5yZW1vdGVBZGRyZXNzO3BvcnQ9d3MuX3NvY2tldC5yZW1vdGVQb3J0fWVsc2V7dmFyIHJlc3VsdD0vd3Nbc10/OlwvXC8oW146XSspOihcZCspLy5leGVjKHdzLnVybCk7aWYoIXJlc3VsdCl7dGhyb3cgbmV3IEVycm9yKCJXZWJTb2NrZXQgVVJMIG11c3QgYmUgaW4gdGhlIGZvcm1hdCB3cyhzKTovL2FkZHJlc3M6cG9ydCIpfWFkZHI9cmVzdWx0WzFdO3BvcnQ9cGFyc2VJbnQocmVzdWx0WzJdLDEwKX19ZWxzZXt0cnl7dmFyIHJ1bnRpbWVDb25maWc9TW9kdWxlWyJ3ZWJzb2NrZXQiXSYmIm9iamVjdCI9PT10eXBlb2YgTW9kdWxlWyJ3ZWJzb2NrZXQiXTt2YXIgdXJsPSJ3czojIi5yZXBsYWNlKCIjIiwiLy8iKTtpZihydW50aW1lQ29uZmlnKXtpZigic3RyaW5nIj09PXR5cGVvZiBNb2R1bGVbIndlYnNvY2tldCJdWyJ1cmwiXSl7dXJsPU1vZHVsZVsid2Vic29ja2V0Il1bInVybCJdfX1pZih1cmw9PT0id3M6Ly8ifHx1cmw9PT0id3NzOi8vIil7dXJsPXVybCthZGRyKyI6Iitwb3J0fXZhciBzdWJQcm90b2NvbHM9ImJpbmFyeSI7aWYocnVudGltZUNvbmZpZyl7aWYoInN0cmluZyI9PT10eXBlb2YgTW9kdWxlWyJ3ZWJzb2NrZXQiXVsic3VicHJvdG9jb2wiXSl7c3ViUHJvdG9jb2xzPU1vZHVsZVsid2Vic29ja2V0Il1bInN1YnByb3RvY29sIl19fXN1YlByb3RvY29scz1zdWJQcm90b2NvbHMucmVwbGFjZSgvXiArfCArJC9nLCIiKS5zcGxpdCgvICosICovKTt2YXIgb3B0cz1FTlZJUk9OTUVOVF9JU19OT0RFP3sicHJvdG9jb2wiOnN1YlByb3RvY29scy50b1N0cmluZygpfTpzdWJQcm90b2NvbHM7dmFyIFdlYlNvY2tldD1FTlZJUk9OTUVOVF9JU19OT0RFP3JlcXVpcmUoIndzIik6d2luZG93WyJXZWJTb2NrZXQiXTt3cz1uZXcgV2ViU29ja2V0KHVybCxvcHRzKTt3cy5iaW5hcnlUeXBlPSJhcnJheWJ1ZmZlciJ9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUhPU1RVTlJFQUNIKX19dmFyIHBlZXI9e2FkZHI6YWRkcixwb3J0OnBvcnQsc29ja2V0OndzLGRncmFtX3NlbmRfcXVldWU6W119O1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuYWRkUGVlcihzb2NrLHBlZXIpO1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuaGFuZGxlUGVlckV2ZW50cyhzb2NrLHBlZXIpO2lmKHNvY2sudHlwZT09PTImJnR5cGVvZiBzb2NrLnNwb3J0IT09InVuZGVmaW5lZCIpe3BlZXIuZGdyYW1fc2VuZF9xdWV1ZS5wdXNoKG5ldyBVaW50OEFycmF5KFsyNTUsMjU1LDI1NSwyNTUsInAiLmNoYXJDb2RlQXQoMCksIm8iLmNoYXJDb2RlQXQoMCksInIiLmNoYXJDb2RlQXQoMCksInQiLmNoYXJDb2RlQXQoMCksKHNvY2suc3BvcnQmNjUyODApPj44LHNvY2suc3BvcnQmMjU1XSkpfXJldHVybiBwZWVyfSksZ2V0UGVlcjooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe3JldHVybiBzb2NrLnBlZXJzW2FkZHIrIjoiK3BvcnRdfSksYWRkUGVlcjooZnVuY3Rpb24oc29jayxwZWVyKXtzb2NrLnBlZXJzW3BlZXIuYWRkcisiOiIrcGVlci5wb3J0XT1wZWVyfSkscmVtb3ZlUGVlcjooZnVuY3Rpb24oc29jayxwZWVyKXtkZWxldGUgc29jay5wZWVyc1twZWVyLmFkZHIrIjoiK3BlZXIucG9ydF19KSxoYW5kbGVQZWVyRXZlbnRzOihmdW5jdGlvbihzb2NrLHBlZXIpe3ZhciBmaXJzdD10cnVlO3ZhciBoYW5kbGVPcGVuPShmdW5jdGlvbigpe3RyeXt2YXIgcXVldWVkPXBlZXIuZGdyYW1fc2VuZF9xdWV1ZS5zaGlmdCgpO3doaWxlKHF1ZXVlZCl7cGVlci5zb2NrZXQuc2VuZChxdWV1ZWQpO3F1ZXVlZD1wZWVyLmRncmFtX3NlbmRfcXVldWUuc2hpZnQoKX19Y2F0Y2goZSl7cGVlci5zb2NrZXQuY2xvc2UoKX19KTtmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKGRhdGEpe2Fzc2VydCh0eXBlb2YgZGF0YSE9PSJzdHJpbmciJiZkYXRhLmJ5dGVMZW5ndGghPT11bmRlZmluZWQpO2RhdGE9bmV3IFVpbnQ4QXJyYXkoZGF0YSk7dmFyIHdhc2ZpcnN0PWZpcnN0O2ZpcnN0PWZhbHNlO2lmKHdhc2ZpcnN0JiZkYXRhLmxlbmd0aD09PTEwJiZkYXRhWzBdPT09MjU1JiZkYXRhWzFdPT09MjU1JiZkYXRhWzJdPT09MjU1JiZkYXRhWzNdPT09MjU1JiZkYXRhWzRdPT09InAiLmNoYXJDb2RlQXQoMCkmJmRhdGFbNV09PT0ibyIuY2hhckNvZGVBdCgwKSYmZGF0YVs2XT09PSJyIi5jaGFyQ29kZUF0KDApJiZkYXRhWzddPT09InQiLmNoYXJDb2RlQXQoMCkpe3ZhciBuZXdwb3J0PWRhdGFbOF08PDh8ZGF0YVs5XTtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLnJlbW92ZVBlZXIoc29jayxwZWVyKTtwZWVyLnBvcnQ9bmV3cG9ydDtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmFkZFBlZXIoc29jayxwZWVyKTtyZXR1cm59c29jay5yZWN2X3F1ZXVlLnB1c2goe2FkZHI6cGVlci5hZGRyLHBvcnQ6cGVlci5wb3J0LGRhdGE6ZGF0YX0pfWlmKEVOVklST05NRU5UX0lTX05PREUpe3BlZXIuc29ja2V0Lm9uKCJvcGVuIixoYW5kbGVPcGVuKTtwZWVyLnNvY2tldC5vbigibWVzc2FnZSIsKGZ1bmN0aW9uKGRhdGEsZmxhZ3Mpe2lmKCFmbGFncy5iaW5hcnkpe3JldHVybn1oYW5kbGVNZXNzYWdlKChuZXcgVWludDhBcnJheShkYXRhKSkuYnVmZmVyKX0pKTtwZWVyLnNvY2tldC5vbigiZXJyb3IiLChmdW5jdGlvbigpe30pKX1lbHNle3BlZXIuc29ja2V0Lm9ub3Blbj1oYW5kbGVPcGVuO3BlZXIuc29ja2V0Lm9ubWVzc2FnZT1mdW5jdGlvbiBwZWVyX3NvY2tldF9vbm1lc3NhZ2UoZXZlbnQpe2hhbmRsZU1lc3NhZ2UoZXZlbnQuZGF0YSl9fX0pLHBvbGw6KGZ1bmN0aW9uKHNvY2spe2lmKHNvY2sudHlwZT09PTEmJnNvY2suc2VydmVyKXtyZXR1cm4gc29jay5wZW5kaW5nLmxlbmd0aD82NHwxOjB9dmFyIG1hc2s9MDt2YXIgZGVzdD1zb2NrLnR5cGU9PT0xP1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuZ2V0UGVlcihzb2NrLHNvY2suZGFkZHIsc29jay5kcG9ydCk6bnVsbDtpZihzb2NrLnJlY3ZfcXVldWUubGVuZ3RofHwhZGVzdHx8ZGVzdCYmZGVzdC5zb2NrZXQucmVhZHlTdGF0ZT09PWRlc3Quc29ja2V0LkNMT1NJTkd8fGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TRUQpe21hc2t8PTY0fDF9aWYoIWRlc3R8fGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5PUEVOKXttYXNrfD00fWlmKGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0JiZkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXttYXNrfD0xNn1yZXR1cm4gbWFza30pLGlvY3RsOihmdW5jdGlvbihzb2NrLHJlcXVlc3QsYXJnKXtzd2l0Y2gocmVxdWVzdCl7Y2FzZSAyMTUzMTp2YXIgYnl0ZXM9MDtpZihzb2NrLnJlY3ZfcXVldWUubGVuZ3RoKXtieXRlcz1zb2NrLnJlY3ZfcXVldWVbMF0uZGF0YS5sZW5ndGh9SEVBUDMyW2FyZz4+Ml09Ynl0ZXM7cmV0dXJuIDA7ZGVmYXVsdDpyZXR1cm4gRVJSTk9fQ09ERVMuRUlOVkFMfX0pLGNsb3NlOihmdW5jdGlvbihzb2NrKXtpZihzb2NrLnNlcnZlcil7dHJ5e3NvY2suc2VydmVyLmNsb3NlKCl9Y2F0Y2goZSl7fXNvY2suc2VydmVyPW51bGx9dmFyIHBlZXJzPU9iamVjdC5rZXlzKHNvY2sucGVlcnMpO2Zvcih2YXIgaT0wO2k8cGVlcnMubGVuZ3RoO2krKyl7dmFyIHBlZXI9c29jay5wZWVyc1twZWVyc1tpXV07dHJ5e3BlZXIuc29ja2V0LmNsb3NlKCl9Y2F0Y2goZSl7fVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMucmVtb3ZlUGVlcihzb2NrLHBlZXIpfXJldHVybiAwfSksYmluZDooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe2lmKHR5cGVvZiBzb2NrLnNhZGRyIT09InVuZGVmaW5lZCJ8fHR5cGVvZiBzb2NrLnNwb3J0IT09InVuZGVmaW5lZCIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9c29jay5zYWRkcj1hZGRyO3NvY2suc3BvcnQ9cG9ydHx8X21rcG9ydCgpO2lmKHNvY2sudHlwZT09PTIpe2lmKHNvY2suc2VydmVyKXtzb2NrLnNlcnZlci5jbG9zZSgpO3NvY2suc2VydmVyPW51bGx9dHJ5e3NvY2suc29ja19vcHMubGlzdGVuKHNvY2ssMCl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtpZihlLmVycm5vIT09RVJSTk9fQ09ERVMuRU9QTk9UU1VQUCl0aHJvdyBlfX19KSxjb25uZWN0OihmdW5jdGlvbihzb2NrLGFkZHIscG9ydCl7aWYoc29jay5zZXJ2ZXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPRFMuRU9QTk9UU1VQUCl9aWYodHlwZW9mIHNvY2suZGFkZHIhPT0idW5kZWZpbmVkIiYmdHlwZW9mIHNvY2suZHBvcnQhPT0idW5kZWZpbmVkIil7dmFyIGRlc3Q9U09DS0ZTLndlYnNvY2tldF9zb2NrX29wcy5nZXRQZWVyKHNvY2ssc29jay5kYWRkcixzb2NrLmRwb3J0KTtpZihkZXN0KXtpZihkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ09OTkVDVElORyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFMUkVBRFkpfWVsc2V7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTQ09OTil9fX12YXIgcGVlcj1TT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIoc29jayxhZGRyLHBvcnQpO3NvY2suZGFkZHI9cGVlci5hZGRyO3NvY2suZHBvcnQ9cGVlci5wb3J0O3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlBST0dSRVNTKX0pLGxpc3RlbjooZnVuY3Rpb24oc29jayxiYWNrbG9nKXtpZighRU5WSVJPTk1FTlRfSVNfTk9ERSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU9QTk9UU1VQUCl9aWYoc29jay5zZXJ2ZXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIFdlYlNvY2tldFNlcnZlcj1yZXF1aXJlKCJ3cyIpLlNlcnZlcjt2YXIgaG9zdD1zb2NrLnNhZGRyO3NvY2suc2VydmVyPW5ldyBXZWJTb2NrZXRTZXJ2ZXIoe2hvc3Q6aG9zdCxwb3J0OnNvY2suc3BvcnR9KTtzb2NrLnNlcnZlci5vbigiY29ubmVjdGlvbiIsKGZ1bmN0aW9uKHdzKXtpZihzb2NrLnR5cGU9PT0xKXt2YXIgbmV3c29jaz1TT0NLRlMuY3JlYXRlU29ja2V0KHNvY2suZmFtaWx5LHNvY2sudHlwZSxzb2NrLnByb3RvY29sKTt2YXIgcGVlcj1TT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIobmV3c29jayx3cyk7bmV3c29jay5kYWRkcj1wZWVyLmFkZHI7bmV3c29jay5kcG9ydD1wZWVyLnBvcnQ7c29jay5wZW5kaW5nLnB1c2gobmV3c29jayl9ZWxzZXtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIoc29jayx3cyl9fSkpO3NvY2suc2VydmVyLm9uKCJjbG9zZWQiLChmdW5jdGlvbigpe3NvY2suc2VydmVyPW51bGx9KSk7c29jay5zZXJ2ZXIub24oImVycm9yIiwoZnVuY3Rpb24oKXt9KSl9KSxhY2NlcHQ6KGZ1bmN0aW9uKGxpc3RlbnNvY2spe2lmKCFsaXN0ZW5zb2NrLnNlcnZlcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbmV3c29jaz1saXN0ZW5zb2NrLnBlbmRpbmcuc2hpZnQoKTtuZXdzb2NrLnN0cmVhbS5mbGFncz1saXN0ZW5zb2NrLnN0cmVhbS5mbGFncztyZXR1cm4gbmV3c29ja30pLGdldG5hbWU6KGZ1bmN0aW9uKHNvY2sscGVlcil7dmFyIGFkZHIscG9ydDtpZihwZWVyKXtpZihzb2NrLmRhZGRyPT09dW5kZWZpbmVkfHxzb2NrLmRwb3J0PT09dW5kZWZpbmVkKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9UQ09OTil9YWRkcj1zb2NrLmRhZGRyO3BvcnQ9c29jay5kcG9ydH1lbHNle2FkZHI9c29jay5zYWRkcnx8MDtwb3J0PXNvY2suc3BvcnR8fDB9cmV0dXJue2FkZHI6YWRkcixwb3J0OnBvcnR9fSksc2VuZG1zZzooZnVuY3Rpb24oc29jayxidWZmZXIsb2Zmc2V0LGxlbmd0aCxhZGRyLHBvcnQpe2lmKHNvY2sudHlwZT09PTIpe2lmKGFkZHI9PT11bmRlZmluZWR8fHBvcnQ9PT11bmRlZmluZWQpe2FkZHI9c29jay5kYWRkcjtwb3J0PXNvY2suZHBvcnR9aWYoYWRkcj09PXVuZGVmaW5lZHx8cG9ydD09PXVuZGVmaW5lZCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRURFU1RBRERSUkVRKX19ZWxzZXthZGRyPXNvY2suZGFkZHI7cG9ydD1zb2NrLmRwb3J0fXZhciBkZXN0PVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuZ2V0UGVlcihzb2NrLGFkZHIscG9ydCk7aWYoc29jay50eXBlPT09MSl7aWYoIWRlc3R8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9UQ09OTil9ZWxzZSBpZihkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ09OTkVDVElORyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX19dmFyIGRhdGE7aWYoYnVmZmVyIGluc3RhbmNlb2YgQXJyYXl8fGJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXtkYXRhPWJ1ZmZlci5zbGljZShvZmZzZXQsb2Zmc2V0K2xlbmd0aCl9ZWxzZXtkYXRhPWJ1ZmZlci5idWZmZXIuc2xpY2UoYnVmZmVyLmJ5dGVPZmZzZXQrb2Zmc2V0LGJ1ZmZlci5ieXRlT2Zmc2V0K29mZnNldCtsZW5ndGgpfWlmKHNvY2sudHlwZT09PTIpe2lmKCFkZXN0fHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlIT09ZGVzdC5zb2NrZXQuT1BFTil7aWYoIWRlc3R8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXtkZXN0PVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuY3JlYXRlUGVlcihzb2NrLGFkZHIscG9ydCl9ZGVzdC5kZ3JhbV9zZW5kX3F1ZXVlLnB1c2goZGF0YSk7cmV0dXJuIGxlbmd0aH19dHJ5e2Rlc3Quc29ja2V0LnNlbmQoZGF0YSk7cmV0dXJuIGxlbmd0aH1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfX0pLHJlY3Ztc2c6KGZ1bmN0aW9uKHNvY2ssbGVuZ3RoKXtpZihzb2NrLnR5cGU9PT0xJiZzb2NrLnNlcnZlcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVENPTk4pfXZhciBxdWV1ZWQ9c29jay5yZWN2X3F1ZXVlLnNoaWZ0KCk7aWYoIXF1ZXVlZCl7aWYoc29jay50eXBlPT09MSl7dmFyIGRlc3Q9U09DS0ZTLndlYnNvY2tldF9zb2NrX29wcy5nZXRQZWVyKHNvY2ssc29jay5kYWRkcixzb2NrLmRwb3J0KTtpZighZGVzdCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVENPTk4pfWVsc2UgaWYoZGVzdC5zb2NrZXQucmVhZHlTdGF0ZT09PWRlc3Quc29ja2V0LkNMT1NJTkd8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TRUQpe3JldHVybiBudWxsfWVsc2V7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX19ZWxzZXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4pfX12YXIgcXVldWVkTGVuZ3RoPXF1ZXVlZC5kYXRhLmJ5dGVMZW5ndGh8fHF1ZXVlZC5kYXRhLmxlbmd0aDt2YXIgcXVldWVkT2Zmc2V0PXF1ZXVlZC5kYXRhLmJ5dGVPZmZzZXR8fDA7dmFyIHF1ZXVlZEJ1ZmZlcj1xdWV1ZWQuZGF0YS5idWZmZXJ8fHF1ZXVlZC5kYXRhO3ZhciBieXRlc1JlYWQ9TWF0aC5taW4obGVuZ3RoLHF1ZXVlZExlbmd0aCk7dmFyIHJlcz17YnVmZmVyOm5ldyBVaW50OEFycmF5KHF1ZXVlZEJ1ZmZlcixxdWV1ZWRPZmZzZXQsYnl0ZXNSZWFkKSxhZGRyOnF1ZXVlZC5hZGRyLHBvcnQ6cXVldWVkLnBvcnR9O2lmKHNvY2sudHlwZT09PTEmJmJ5dGVzUmVhZDxxdWV1ZWRMZW5ndGgpe3ZhciBieXRlc1JlbWFpbmluZz1xdWV1ZWRMZW5ndGgtYnl0ZXNSZWFkO3F1ZXVlZC5kYXRhPW5ldyBVaW50OEFycmF5KHF1ZXVlZEJ1ZmZlcixxdWV1ZWRPZmZzZXQrYnl0ZXNSZWFkLGJ5dGVzUmVtYWluaW5nKTtzb2NrLnJlY3ZfcXVldWUudW5zaGlmdChxdWV1ZWQpfXJldHVybiByZXN9KX19O2Z1bmN0aW9uIF9zZW5kKGZkLGJ1ZixsZW4sZmxhZ3Mpe3ZhciBzb2NrPVNPQ0tGUy5nZXRTb2NrZXQoZmQpO2lmKCFzb2NrKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9cmV0dXJuIF93cml0ZShmZCxidWYsbGVuKX1mdW5jdGlvbiBfcHdyaXRlKGZpbGRlcyxidWYsbmJ5dGUsb2Zmc2V0KXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmaWxkZXMpO2lmKCFzdHJlYW0pe19fX3NldEVyck5vKEVSUk5PX0NPREVTLkVCQURGKTtyZXR1cm4tMX10cnl7dmFyIHNsYWI9SEVBUDg7cmV0dXJuIEZTLndyaXRlKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSxvZmZzZXQpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF93cml0ZShmaWxkZXMsYnVmLG5ieXRlKXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmaWxkZXMpO2lmKCFzdHJlYW0pe19fX3NldEVyck5vKEVSUk5PX0NPREVTLkVCQURGKTtyZXR1cm4tMX10cnl7dmFyIHNsYWI9SEVBUDg7cmV0dXJuIEZTLndyaXRlKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSl9Y2F0Y2goZSl7RlMuaGFuZGxlRlNFcnJvcihlKTtyZXR1cm4tMX19ZnVuY3Rpb24gX2ZpbGVubyhzdHJlYW0pe3N0cmVhbT1GUy5nZXRTdHJlYW1Gcm9tUHRyKHN0cmVhbSk7aWYoIXN0cmVhbSlyZXR1cm4tMTtyZXR1cm4gc3RyZWFtLmZkfWZ1bmN0aW9uIF9md3JpdGUocHRyLHNpemUsbml0ZW1zLHN0cmVhbSl7dmFyIGJ5dGVzVG9Xcml0ZT1uaXRlbXMqc2l6ZTtpZihieXRlc1RvV3JpdGU9PTApcmV0dXJuIDA7dmFyIGZkPV9maWxlbm8oc3RyZWFtKTt2YXIgYnl0ZXNXcml0dGVuPV93cml0ZShmZCxwdHIsYnl0ZXNUb1dyaXRlKTtpZihieXRlc1dyaXR0ZW49PS0xKXt2YXIgc3RyZWFtT2JqPUZTLmdldFN0cmVhbUZyb21QdHIoc3RyZWFtKTtpZihzdHJlYW1PYmopc3RyZWFtT2JqLmVycm9yPXRydWU7cmV0dXJuIDB9ZWxzZXtyZXR1cm4gTWF0aC5mbG9vcihieXRlc1dyaXR0ZW4vc2l6ZSl9fWZ1bmN0aW9uIF9yZWN2KGZkLGJ1ZixsZW4sZmxhZ3Mpe3ZhciBzb2NrPVNPQ0tGUy5nZXRTb2NrZXQoZmQpO2lmKCFzb2NrKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9cmV0dXJuIF9yZWFkKGZkLGJ1ZixsZW4pfWZ1bmN0aW9uIF9wcmVhZChmaWxkZXMsYnVmLG5ieXRlLG9mZnNldCl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmlsZGVzKTtpZighc3RyZWFtKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9dHJ5e3ZhciBzbGFiPUhFQVA4O3JldHVybiBGUy5yZWFkKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSxvZmZzZXQpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF9yZWFkKGZpbGRlcyxidWYsbmJ5dGUpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZpbGRlcyk7aWYoIXN0cmVhbSl7X19fc2V0RXJyTm8oRVJSTk9fQ09ERVMuRUJBREYpO3JldHVybi0xfXRyeXt2YXIgc2xhYj1IRUFQODtyZXR1cm4gRlMucmVhZChzdHJlYW0sc2xhYixidWYsbmJ5dGUpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF9mcmVhZChwdHIsc2l6ZSxuaXRlbXMsc3RyZWFtKXt2YXIgYnl0ZXNUb1JlYWQ9bml0ZW1zKnNpemU7aWYoYnl0ZXNUb1JlYWQ9PTApe3JldHVybiAwfXZhciBieXRlc1JlYWQ9MDt2YXIgc3RyZWFtT2JqPUZTLmdldFN0cmVhbUZyb21QdHIoc3RyZWFtKTtpZighc3RyZWFtT2JqKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuIDB9d2hpbGUoc3RyZWFtT2JqLnVuZ290dGVuLmxlbmd0aCYmYnl0ZXNUb1JlYWQ+MCl7SEVBUDhbcHRyKys+PjBdPXN0cmVhbU9iai51bmdvdHRlbi5wb3AoKTtieXRlc1RvUmVhZC0tO2J5dGVzUmVhZCsrfXZhciBlcnI9X3JlYWQoc3RyZWFtT2JqLmZkLHB0cixieXRlc1RvUmVhZCk7aWYoZXJyPT0tMSl7aWYoc3RyZWFtT2JqKXN0cmVhbU9iai5lcnJvcj10cnVlO3JldHVybiAwfWJ5dGVzUmVhZCs9ZXJyO2lmKGJ5dGVzUmVhZDxieXRlc1RvUmVhZClzdHJlYW1PYmouZW9mPXRydWU7cmV0dXJuIE1hdGguZmxvb3IoYnl0ZXNSZWFkL3NpemUpfWZ1bmN0aW9uIF9mZ2V0YyhzdHJlYW0pe3ZhciBzdHJlYW1PYmo9RlMuZ2V0U3RyZWFtRnJvbVB0cihzdHJlYW0pO2lmKCFzdHJlYW1PYmopcmV0dXJuLTE7aWYoc3RyZWFtT2JqLmVvZnx8c3RyZWFtT2JqLmVycm9yKXJldHVybi0xO3ZhciByZXQ9X2ZyZWFkKF9mZ2V0Yy5yZXQsMSwxLHN0cmVhbSk7aWYocmV0PT0wKXtyZXR1cm4tMX1lbHNlIGlmKHJldD09LTEpe3N0cmVhbU9iai5lcnJvcj10cnVlO3JldHVybi0xfWVsc2V7cmV0dXJuIEhFQVBVOFtfZmdldGMucmV0Pj4wXX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZW12YWwoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfZW12YWwiKTthYm9ydCgtMSl9ZnVuY3Rpb24gX19fZ3h4X3BlcnNvbmFsaXR5X3YwKCl7fWZ1bmN0aW9uIF9zeXNjb25mKG5hbWUpe3N3aXRjaChuYW1lKXtjYXNlIDMwOnJldHVybiBQQUdFX1NJWkU7Y2FzZSAxMzI6Y2FzZSAxMzM6Y2FzZSAxMjpjYXNlIDEzNzpjYXNlIDEzODpjYXNlIDE1OmNhc2UgMjM1OmNhc2UgMTY6Y2FzZSAxNzpjYXNlIDE4OmNhc2UgMTk6Y2FzZSAyMDpjYXNlIDE0OTpjYXNlIDEzOmNhc2UgMTA6Y2FzZSAyMzY6Y2FzZSAxNTM6Y2FzZSA5OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDE1OTpjYXNlIDE1NDpjYXNlIDE0OmNhc2UgNzc6Y2FzZSA3ODpjYXNlIDEzOTpjYXNlIDgwOmNhc2UgODE6Y2FzZSA3OTpjYXNlIDgyOmNhc2UgNjg6Y2FzZSA2NzpjYXNlIDE2NDpjYXNlIDExOmNhc2UgMjk6Y2FzZSA0NzpjYXNlIDQ4OmNhc2UgOTU6Y2FzZSA1MjpjYXNlIDUxOmNhc2UgNDY6cmV0dXJuIDIwMDgwOTtjYXNlIDI3OmNhc2UgMjQ2OmNhc2UgMTI3OmNhc2UgMTI4OmNhc2UgMjM6Y2FzZSAyNDpjYXNlIDE2MDpjYXNlIDE2MTpjYXNlIDE4MTpjYXNlIDE4MjpjYXNlIDI0MjpjYXNlIDE4MzpjYXNlIDE4NDpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0NTpjYXNlIDE2NTpjYXNlIDE3ODpjYXNlIDE3OTpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSAxNjg6Y2FzZSAxNjk6Y2FzZSAxNzU6Y2FzZSAxNzA6Y2FzZSAxNzE6Y2FzZSAxNzI6Y2FzZSA5NzpjYXNlIDc2OmNhc2UgMzI6Y2FzZSAxNzM6Y2FzZSAzNTpyZXR1cm4tMTtjYXNlIDE3NjpjYXNlIDE3NzpjYXNlIDc6Y2FzZSAxNTU6Y2FzZSA4OmNhc2UgMTU3OmNhc2UgMTI1OmNhc2UgMTI2OmNhc2UgOTI6Y2FzZSA5MzpjYXNlIDEyOTpjYXNlIDEzMDpjYXNlIDEzMTpjYXNlIDk0OmNhc2UgOTE6cmV0dXJuIDE7Y2FzZSA3NDpjYXNlIDYwOmNhc2UgNjk6Y2FzZSA3MDpjYXNlIDQ6cmV0dXJuIDEwMjQ7Y2FzZSAzMTpjYXNlIDQyOmNhc2UgNzI6cmV0dXJuIDMyO2Nhc2UgODc6Y2FzZSAyNjpjYXNlIDMzOnJldHVybiAyMTQ3NDgzNjQ3O2Nhc2UgMzQ6Y2FzZSAxOnJldHVybiA0NzgzOTtjYXNlIDM4OmNhc2UgMzY6cmV0dXJuIDk5O2Nhc2UgNDM6Y2FzZSAzNzpyZXR1cm4gMjA0ODtjYXNlIDA6cmV0dXJuIDIwOTcxNTI7Y2FzZSAzOnJldHVybiA2NTUzNjtjYXNlIDI4OnJldHVybiAzMjc2ODtjYXNlIDQ0OnJldHVybiAzMjc2NztjYXNlIDc1OnJldHVybiAxNjM4NDtjYXNlIDM5OnJldHVybiAxZTM7Y2FzZSA4OTpyZXR1cm4gNzAwO2Nhc2UgNzE6cmV0dXJuIDI1NjtjYXNlIDQwOnJldHVybiAyNTU7Y2FzZSAyOnJldHVybiAxMDA7Y2FzZSAxODA6cmV0dXJuIDY0O2Nhc2UgMjU6cmV0dXJuIDIwO2Nhc2UgNTpyZXR1cm4gMTY7Y2FzZSA2OnJldHVybiA2O2Nhc2UgNzM6cmV0dXJuIDQ7Y2FzZSA4NDpyZXR1cm4gMX1fX19zZXRFcnJObyhFUlJOT19DT0RFUy5FSU5WQUwpO3JldHVybi0xfU1vZHVsZVsiX2JpdHNoaWZ0NjRMc2hyIl09X2JpdHNoaWZ0NjRMc2hyO2Z1bmN0aW9uIF9wdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCl7cmV0dXJuIDB9ZnVuY3Rpb24gX19leGl0KHN0YXR1cyl7TW9kdWxlWyJleGl0Il0oc3RhdHVzKX1mdW5jdGlvbiBfZXhpdChzdGF0dXMpe19fZXhpdChzdGF0dXMpfWZ1bmN0aW9uIF9fWlN0OXRlcm1pbmF0ZXYoKXtfZXhpdCgtMTIzNCl9ZnVuY3Rpb24gX3B0aHJlYWRfbXV0ZXhfdW5sb2NrKCl7fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX21lbWNweV9iaWcoZGVzdCxzcmMsbnVtKXtIRUFQVTguc2V0KEhFQVBVOC5zdWJhcnJheShzcmMsc3JjK251bSksZGVzdCk7cmV0dXJuIGRlc3R9TW9kdWxlWyJfbWVtY3B5Il09X21lbWNweTtmdW5jdGlvbiBfc2JyayhieXRlcyl7dmFyIHNlbGY9X3Nicms7aWYoIXNlbGYuY2FsbGVkKXtEWU5BTUlDVE9QPWFsaWduTWVtb3J5UGFnZShEWU5BTUlDVE9QKTtzZWxmLmNhbGxlZD10cnVlO2Fzc2VydChSdW50aW1lLmR5bmFtaWNBbGxvYyk7c2VsZi5hbGxvYz1SdW50aW1lLmR5bmFtaWNBbGxvYztSdW50aW1lLmR5bmFtaWNBbGxvYz0oZnVuY3Rpb24oKXthYm9ydCgiY2Fubm90IGR5bmFtaWNhbGx5IGFsbG9jYXRlLCBzYnJrIG5vdyBoYXMgY29udHJvbCIpfSl9dmFyIHJldD1EWU5BTUlDVE9QO2lmKGJ5dGVzIT0wKXNlbGYuYWxsb2MoYnl0ZXMpO3JldHVybiByZXR9ZnVuY3Rpb24gX25ld2xvY2FsZShtYXNrLGxvY2FsZSxiYXNlKXtyZXR1cm4gX21hbGxvYyg0KX1Nb2R1bGVbIl9tZW1tb3ZlIl09X21lbW1vdmU7ZnVuY3Rpb24gX19fZXJybm9fbG9jYXRpb24oKXtyZXR1cm4gX19fZXJybm9fc3RhdGV9ZnVuY3Rpb24gX3N0cmVycm9yX3IoZXJybnVtLHN0cmVycmJ1ZixidWZsZW4pe2lmKGVycm51bSBpbiBFUlJOT19NRVNTQUdFUyl7aWYoRVJSTk9fTUVTU0FHRVNbZXJybnVtXS5sZW5ndGg+YnVmbGVuLTEpe3JldHVybiBfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FUkFOR0UpfWVsc2V7dmFyIG1zZz1FUlJOT19NRVNTQUdFU1tlcnJudW1dO3dyaXRlQXNjaWlUb01lbW9yeShtc2csc3RyZXJyYnVmKTtyZXR1cm4gMH19ZWxzZXtyZXR1cm4gX19fc2V0RXJyTm8oRVJSTk9fQ09ERVMuRUlOVkFMKX19ZnVuY3Rpb24gX3N0cmVycm9yKGVycm51bSl7aWYoIV9zdHJlcnJvci5idWZmZXIpX3N0cmVycm9yLmJ1ZmZlcj1fbWFsbG9jKDI1Nik7X3N0cmVycm9yX3IoZXJybnVtLF9zdHJlcnJvci5idWZmZXIsMjU2KTtyZXR1cm4gX3N0cmVycm9yLmJ1ZmZlcn1mdW5jdGlvbiBfcHRocmVhZF9tdXRleF9kZXN0cm95KCl7fWZ1bmN0aW9uIF9jYXRjbG9zZShjYXRkKXtyZXR1cm4gMH1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldygpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfX19jeGFfZ3VhcmRfcmVsZWFzZSgpe31mdW5jdGlvbiBfdW5nZXRjKGMsc3RyZWFtKXtzdHJlYW09RlMuZ2V0U3RyZWFtRnJvbVB0cihzdHJlYW0pO2lmKCFzdHJlYW0pe3JldHVybi0xfWlmKGM9PT0tMSl7cmV0dXJuIGN9Yz11blNpZ24oYyYyNTUpO3N0cmVhbS51bmdvdHRlbi5wdXNoKGMpO3N0cmVhbS5lb2Y9ZmFsc2U7cmV0dXJuIGN9ZnVuY3Rpb24gX3VzZWxvY2FsZShsb2NhbGUpe3JldHVybiAwfWZ1bmN0aW9uIF92c25wcmludGYocyxuLGZvcm1hdCx2YV9hcmcpe3JldHVybiBfc25wcmludGYocyxuLGZvcm1hdCxIRUFQMzJbdmFfYXJnPj4yXSl9ZnVuY3Rpb24gX19nZXRGbG9hdCh0ZXh0KXtyZXR1cm4vXlsrLV0/WzAtOV0qXC4/WzAtOV0rKFtlRV1bKy1dP1swLTldKyk/Ly5leGVjKHRleHQpfWZ1bmN0aW9uIF9fc2NhblN0cmluZyhmb3JtYXQsZ2V0LHVuZ2V0LHZhcmFyZ3Mpe2lmKCFfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSl7X19zY2FuU3RyaW5nLndoaXRlU3BhY2U9e307X19zY2FuU3RyaW5nLndoaXRlU3BhY2VbMzJdPTE7X19zY2FuU3RyaW5nLndoaXRlU3BhY2VbOV09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMF09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMV09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMl09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxM109MX1mb3JtYXQ9UG9pbnRlcl9zdHJpbmdpZnkoZm9ybWF0KTt2YXIgc29GYXI9MDtpZihmb3JtYXQuaW5kZXhPZigiJW4iKT49MCl7dmFyIF9nZXQ9Z2V0O2dldD1mdW5jdGlvbiBnZXQoKXtzb0ZhcisrO3JldHVybiBfZ2V0KCl9O3ZhciBfdW5nZXQ9dW5nZXQ7dW5nZXQ9ZnVuY3Rpb24gdW5nZXQoKXtzb0Zhci0tO3JldHVybiBfdW5nZXQoKX19dmFyIGZvcm1hdEluZGV4PTA7dmFyIGFyZ3NpPTA7dmFyIGZpZWxkcz0wO3ZhciBhcmdJbmRleD0wO3ZhciBuZXh0O21haW5Mb29wOmZvcih2YXIgZm9ybWF0SW5kZXg9MDtmb3JtYXRJbmRleDxmb3JtYXQubGVuZ3RoOyl7aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIiYmZm9ybWF0W2Zvcm1hdEluZGV4KzFdPT0ibiIpe3ZhciBhcmdQdHI9SEVBUDMyW3ZhcmFyZ3MrYXJnSW5kZXg+PjJdO2FyZ0luZGV4Kz1SdW50aW1lLmdldEFsaWduU2l6ZSgidm9pZCoiLG51bGwsdHJ1ZSk7SEVBUDMyW2FyZ1B0cj4+Ml09c29GYXI7Zm9ybWF0SW5kZXgrPTI7Y29udGludWV9aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIil7dmFyIG5leHRDPWZvcm1hdC5pbmRleE9mKCJjIixmb3JtYXRJbmRleCsxKTtpZihuZXh0Qz4wKXt2YXIgbWF4eD0xO2lmKG5leHRDPmZvcm1hdEluZGV4KzEpe3ZhciBzdWI9Zm9ybWF0LnN1YnN0cmluZyhmb3JtYXRJbmRleCsxLG5leHRDKTttYXh4PXBhcnNlSW50KHN1Yik7aWYobWF4eCE9c3ViKW1heHg9MH1pZihtYXh4KXt2YXIgYXJnUHRyPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXTthcmdJbmRleCs9UnVudGltZS5nZXRBbGlnblNpemUoInZvaWQqIixudWxsLHRydWUpO2ZpZWxkcysrO2Zvcih2YXIgaT0wO2k8bWF4eDtpKyspe25leHQ9Z2V0KCk7SEVBUDhbYXJnUHRyKys+PjBdPW5leHQ7aWYobmV4dD09PTApcmV0dXJuIGk+MD9maWVsZHM6ZmllbGRzLTF9Zm9ybWF0SW5kZXgrPW5leHRDLWZvcm1hdEluZGV4KzE7Y29udGludWV9fX1pZihmb3JtYXRbZm9ybWF0SW5kZXhdPT09IiUiJiZmb3JtYXQuaW5kZXhPZigiWyIsZm9ybWF0SW5kZXgrMSk+MCl7dmFyIG1hdGNoPS9cJShbMC05XSopXFsoXF4pPyhcXT9bXlxdXSopXF0vLmV4ZWMoZm9ybWF0LnN1YnN0cmluZyhmb3JtYXRJbmRleCkpO2lmKG1hdGNoKXt2YXIgbWF4TnVtQ2hhcmFjdGVycz1wYXJzZUludChtYXRjaFsxXSl8fEluZmluaXR5O3ZhciBuZWdhdGVTY2FuTGlzdD1tYXRjaFsyXT09PSJeIjt2YXIgc2Nhbkxpc3Q9bWF0Y2hbM107dmFyIG1pZGRsZURhc2hNYXRjaDt3aGlsZShtaWRkbGVEYXNoTWF0Y2g9LyhbXlwtXSlcLShbXlwtXSkvLmV4ZWMoc2Nhbkxpc3QpKXt2YXIgcmFuZ2VTdGFydENoYXJDb2RlPW1pZGRsZURhc2hNYXRjaFsxXS5jaGFyQ29kZUF0KDApO3ZhciByYW5nZUVuZENoYXJDb2RlPW1pZGRsZURhc2hNYXRjaFsyXS5jaGFyQ29kZUF0KDApO2Zvcih2YXIgZXhwYW5kZWQ9IiI7cmFuZ2VTdGFydENoYXJDb2RlPD1yYW5nZUVuZENoYXJDb2RlO2V4cGFuZGVkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHJhbmdlU3RhcnRDaGFyQ29kZSsrKSk7c2Nhbkxpc3Q9c2Nhbkxpc3QucmVwbGFjZShtaWRkbGVEYXNoTWF0Y2hbMV0rIi0iK21pZGRsZURhc2hNYXRjaFsyXSxleHBhbmRlZCl9dmFyIGFyZ1B0cj1IRUFQMzJbdmFyYXJncythcmdJbmRleD4+Ml07YXJnSW5kZXgrPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKCJ2b2lkKiIsbnVsbCx0cnVlKTtmaWVsZHMrKztmb3IodmFyIGk9MDtpPG1heE51bUNoYXJhY3RlcnM7aSsrKXtuZXh0PWdldCgpO2lmKG5lZ2F0ZVNjYW5MaXN0KXtpZihzY2FuTGlzdC5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpPDApe0hFQVA4W2FyZ1B0cisrPj4wXT1uZXh0fWVsc2V7dW5nZXQoKTticmVha319ZWxzZXtpZihzY2FuTGlzdC5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpPj0wKXtIRUFQOFthcmdQdHIrKz4+MF09bmV4dH1lbHNle3VuZ2V0KCk7YnJlYWt9fX1IRUFQOFthcmdQdHIrKz4+MF09MDtmb3JtYXRJbmRleCs9bWF0Y2hbMF0ubGVuZ3RoO2NvbnRpbnVlfX13aGlsZSgxKXtuZXh0PWdldCgpO2lmKG5leHQ9PTApcmV0dXJuIGZpZWxkcztpZighKG5leHQgaW4gX19zY2FuU3RyaW5nLndoaXRlU3BhY2UpKWJyZWFrfXVuZ2V0KCk7aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIil7Zm9ybWF0SW5kZXgrKzt2YXIgc3VwcHJlc3NBc3NpZ25tZW50PWZhbHNlO2lmKGZvcm1hdFtmb3JtYXRJbmRleF09PSIqIil7c3VwcHJlc3NBc3NpZ25tZW50PXRydWU7Zm9ybWF0SW5kZXgrK312YXIgbWF4U3BlY2lmaWVyU3RhcnQ9Zm9ybWF0SW5kZXg7d2hpbGUoZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApPj00OCYmZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApPD01Nyl7Zm9ybWF0SW5kZXgrK312YXIgbWF4XztpZihmb3JtYXRJbmRleCE9bWF4U3BlY2lmaWVyU3RhcnQpe21heF89cGFyc2VJbnQoZm9ybWF0LnNsaWNlKG1heFNwZWNpZmllclN0YXJ0LGZvcm1hdEluZGV4KSwxMCl9dmFyIGxvbmdfPWZhbHNlO3ZhciBoYWxmPWZhbHNlO3ZhciBxdWFydGVyPWZhbHNlO3ZhciBsb25nTG9uZz1mYWxzZTtpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0ibCIpe2xvbmdfPXRydWU7Zm9ybWF0SW5kZXgrKztpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0ibCIpe2xvbmdMb25nPXRydWU7Zm9ybWF0SW5kZXgrK319ZWxzZSBpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0iaCIpe2hhbGY9dHJ1ZTtmb3JtYXRJbmRleCsrO2lmKGZvcm1hdFtmb3JtYXRJbmRleF09PSJoIil7cXVhcnRlcj10cnVlO2Zvcm1hdEluZGV4Kyt9fXZhciB0eXBlPWZvcm1hdFtmb3JtYXRJbmRleF07Zm9ybWF0SW5kZXgrKzt2YXIgY3Vycj0wO3ZhciBidWZmZXI9W107aWYodHlwZT09ImYifHx0eXBlPT0iZSJ8fHR5cGU9PSJnInx8dHlwZT09IkYifHx0eXBlPT0iRSJ8fHR5cGU9PSJHIil7bmV4dD1nZXQoKTt3aGlsZShuZXh0PjAmJiEobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSkpe2J1ZmZlci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpO25leHQ9Z2V0KCl9dmFyIG09X19nZXRGbG9hdChidWZmZXIuam9pbigiIikpO3ZhciBsYXN0PW0/bVswXS5sZW5ndGg6MDtmb3IodmFyIGk9MDtpPGJ1ZmZlci5sZW5ndGgtbGFzdCsxO2krKyl7dW5nZXQoKX1idWZmZXIubGVuZ3RoPWxhc3R9ZWxzZXtuZXh0PWdldCgpO3ZhciBmaXJzdD10cnVlO2lmKCh0eXBlPT0ieCJ8fHR5cGU9PSJYIikmJm5leHQ9PTQ4KXt2YXIgcGVlaz1nZXQoKTtpZihwZWVrPT0xMjB8fHBlZWs9PTg4KXtuZXh0PWdldCgpfWVsc2V7dW5nZXQoKX19d2hpbGUoKGN1cnI8bWF4X3x8aXNOYU4obWF4XykpJiZuZXh0PjApe2lmKCEobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSkmJih0eXBlPT0icyJ8fCh0eXBlPT09ImQifHx0eXBlPT0idSJ8fHR5cGU9PSJpIikmJihuZXh0Pj00OCYmbmV4dDw9NTd8fGZpcnN0JiZuZXh0PT00NSl8fCh0eXBlPT09IngifHx0eXBlPT09IlgiKSYmKG5leHQ+PTQ4JiZuZXh0PD01N3x8bmV4dD49OTcmJm5leHQ8PTEwMnx8bmV4dD49NjUmJm5leHQ8PTcwKSkmJihmb3JtYXRJbmRleD49Zm9ybWF0Lmxlbmd0aHx8bmV4dCE9PWZvcm1hdFtmb3JtYXRJbmRleF0uY2hhckNvZGVBdCgwKSkpe2J1ZmZlci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpO25leHQ9Z2V0KCk7Y3VycisrO2ZpcnN0PWZhbHNlfWVsc2V7YnJlYWt9fXVuZ2V0KCl9aWYoYnVmZmVyLmxlbmd0aD09PTApcmV0dXJuIDA7aWYoc3VwcHJlc3NBc3NpZ25tZW50KWNvbnRpbnVlO3ZhciB0ZXh0PWJ1ZmZlci5qb2luKCIiKTt2YXIgYXJnUHRyPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXTthcmdJbmRleCs9UnVudGltZS5nZXRBbGlnblNpemUoInZvaWQqIixudWxsLHRydWUpO3ZhciBiYXNlPTEwO3N3aXRjaCh0eXBlKXtjYXNlIlgiOmNhc2UieCI6YmFzZT0xNjtjYXNlImQiOmNhc2UidSI6Y2FzZSJpIjppZihxdWFydGVyKXtIRUFQOFthcmdQdHI+PjBdPXBhcnNlSW50KHRleHQsYmFzZSl9ZWxzZSBpZihoYWxmKXtIRUFQMTZbYXJnUHRyPj4xXT1wYXJzZUludCh0ZXh0LGJhc2UpfWVsc2UgaWYobG9uZ0xvbmcpe3RlbXBJNjQ9W3BhcnNlSW50KHRleHQsYmFzZSk+Pj4wLCh0ZW1wRG91YmxlPXBhcnNlSW50KHRleHQsYmFzZSksK01hdGhfYWJzKHRlbXBEb3VibGUpPj0rMT90ZW1wRG91YmxlPiswPyhNYXRoX21pbigrTWF0aF9mbG9vcih0ZW1wRG91YmxlLys0Mjk0OTY3Mjk2KSwrNDI5NDk2NzI5NSl8MCk+Pj4wOn5+K01hdGhfY2VpbCgodGVtcERvdWJsZS0gKyh+fnRlbXBEb3VibGU+Pj4wKSkvKzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2FyZ1B0cj4+Ml09dGVtcEk2NFswXSxIRUFQMzJbYXJnUHRyKzQ+PjJdPXRlbXBJNjRbMV19ZWxzZXtIRUFQMzJbYXJnUHRyPj4yXT1wYXJzZUludCh0ZXh0LGJhc2UpfWJyZWFrO2Nhc2UiRiI6Y2FzZSJmIjpjYXNlIkUiOmNhc2UiZSI6Y2FzZSJHIjpjYXNlImciOmNhc2UiRSI6aWYobG9uZ18pe0hFQVBGNjRbYXJnUHRyPj4zXT1wYXJzZUZsb2F0KHRleHQpfWVsc2V7SEVBUEYzMlthcmdQdHI+PjJdPXBhcnNlRmxvYXQodGV4dCl9YnJlYWs7Y2FzZSJzIjp2YXIgYXJyYXk9aW50QXJyYXlGcm9tU3RyaW5nKHRleHQpO2Zvcih2YXIgaj0wO2o8YXJyYXkubGVuZ3RoO2orKyl7SEVBUDhbYXJnUHRyK2o+PjBdPWFycmF5W2pdfWJyZWFrfWZpZWxkcysrfWVsc2UgaWYoZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApaW4gX19zY2FuU3RyaW5nLndoaXRlU3BhY2Upe25leHQ9Z2V0KCk7d2hpbGUobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSl7aWYobmV4dDw9MClicmVhayBtYWluTG9vcDtuZXh0PWdldCgpfXVuZ2V0KG5leHQpO2Zvcm1hdEluZGV4Kyt9ZWxzZXtuZXh0PWdldCgpO2lmKGZvcm1hdFtmb3JtYXRJbmRleF0uY2hhckNvZGVBdCgwKSE9PW5leHQpe3VuZ2V0KG5leHQpO2JyZWFrIG1haW5Mb29wfWZvcm1hdEluZGV4Kyt9fXJldHVybiBmaWVsZHN9ZnVuY3Rpb24gX3NzY2FuZihzLGZvcm1hdCx2YXJhcmdzKXt2YXIgaW5kZXg9MDtmdW5jdGlvbiBnZXQoKXtyZXR1cm4gSEVBUDhbcytpbmRleCsrPj4wXX1mdW5jdGlvbiB1bmdldCgpe2luZGV4LS19cmV0dXJuIF9fc2NhblN0cmluZyhmb3JtYXQsZ2V0LHVuZ2V0LHZhcmFyZ3MpfWZ1bmN0aW9uIF92c3NjYW5mKHMsZm9ybWF0LHZhX2FyZyl7cmV0dXJuIF9zc2NhbmYocyxmb3JtYXQsSEVBUDMyW3ZhX2FyZz4+Ml0pfWZ1bmN0aW9uIF9fX2Fzc2VydF9mYWlsKGNvbmRpdGlvbixmaWxlbmFtZSxsaW5lLGZ1bmMpe0FCT1JUPXRydWU7dGhyb3ciQXNzZXJ0aW9uIGZhaWxlZDogIitQb2ludGVyX3N0cmluZ2lmeShjb25kaXRpb24pKyIsIGF0OiAiK1tmaWxlbmFtZT9Qb2ludGVyX3N0cmluZ2lmeShmaWxlbmFtZSk6InVua25vd24gZmlsZW5hbWUiLGxpbmUsZnVuYz9Qb2ludGVyX3N0cmluZ2lmeShmdW5jKToidW5rbm93biBmdW5jdGlvbiJdKyIgYXQgIitzdGFja1RyYWNlKCl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdm9pZCgpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl92b2lkIik7YWJvcnQoLTEpfU1vZHVsZVsiX21lbXNldCJdPV9tZW1zZXQ7dmFyIF9CSXRvRD10cnVlO2Z1bmN0aW9uIF9faXNMZWFwWWVhcih5ZWFyKXtyZXR1cm4geWVhciU0PT09MCYmKHllYXIlMTAwIT09MHx8eWVhciU0MDA9PT0wKX1mdW5jdGlvbiBfX2FycmF5U3VtKGFycmF5LGluZGV4KXt2YXIgc3VtPTA7Zm9yKHZhciBpPTA7aTw9aW5kZXg7c3VtKz1hcnJheVtpKytdKTtyZXR1cm4gc3VtfXZhciBfX01PTlRIX0RBWVNfTEVBUD1bMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO3ZhciBfX01PTlRIX0RBWVNfUkVHVUxBUj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIF9fYWRkRGF5cyhkYXRlLGRheXMpe3ZhciBuZXdEYXRlPW5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTt3aGlsZShkYXlzPjApe3ZhciBsZWFwPV9faXNMZWFwWWVhcihuZXdEYXRlLmdldEZ1bGxZZWFyKCkpO3ZhciBjdXJyZW50TW9udGg9bmV3RGF0ZS5nZXRNb250aCgpO3ZhciBkYXlzSW5DdXJyZW50TW9udGg9KGxlYXA/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIpW2N1cnJlbnRNb250aF07aWYoZGF5cz5kYXlzSW5DdXJyZW50TW9udGgtbmV3RGF0ZS5nZXREYXRlKCkpe2RheXMtPWRheXNJbkN1cnJlbnRNb250aC1uZXdEYXRlLmdldERhdGUoKSsxO25ld0RhdGUuc2V0RGF0ZSgxKTtpZihjdXJyZW50TW9udGg8MTEpe25ld0RhdGUuc2V0TW9udGgoY3VycmVudE1vbnRoKzEpfWVsc2V7bmV3RGF0ZS5zZXRNb250aCgwKTtuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSsxKX19ZWxzZXtuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkrZGF5cyk7cmV0dXJuIG5ld0RhdGV9fXJldHVybiBuZXdEYXRlfWZ1bmN0aW9uIF9zdHJmdGltZShzLG1heHNpemUsZm9ybWF0LHRtKXt2YXIgZGF0ZT17dG1fc2VjOkhFQVAzMlt0bT4+Ml0sdG1fbWluOkhFQVAzMlt0bSs0Pj4yXSx0bV9ob3VyOkhFQVAzMlt0bSs4Pj4yXSx0bV9tZGF5OkhFQVAzMlt0bSsxMj4+Ml0sdG1fbW9uOkhFQVAzMlt0bSsxNj4+Ml0sdG1feWVhcjpIRUFQMzJbdG0rMjA+PjJdLHRtX3dkYXk6SEVBUDMyW3RtKzI0Pj4yXSx0bV95ZGF5OkhFQVAzMlt0bSsyOD4+Ml0sdG1faXNkc3Q6SEVBUDMyW3RtKzMyPj4yXX07dmFyIHBhdHRlcm49UG9pbnRlcl9zdHJpbmdpZnkoZm9ybWF0KTt2YXIgRVhQQU5TSU9OX1JVTEVTXzE9eyIlYyI6IiVhICViICVkICVIOiVNOiVTICVZIiwiJUQiOiIlbS8lZC8leSIsIiVGIjoiJVktJW0tJWQiLCIlaCI6IiViIiwiJXIiOiIlSTolTTolUyAlcCIsIiVSIjoiJUg6JU0iLCIlVCI6IiVIOiVNOiVTIiwiJXgiOiIlbS8lZC8leSIsIiVYIjoiJUg6JU06JVMifTtmb3IodmFyIHJ1bGUgaW4gRVhQQU5TSU9OX1JVTEVTXzEpe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18xW3J1bGVdKX12YXIgV0VFS0RBWVM9WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdO3ZhciBNT05USFM9WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdO2Z1bmN0aW9uIGxlYWRpbmdTb21ldGhpbmcodmFsdWUsZGlnaXRzLGNoYXJhY3Rlcil7dmFyIHN0cj10eXBlb2YgdmFsdWU9PT0ibnVtYmVyIj92YWx1ZS50b1N0cmluZygpOnZhbHVlfHwiIjt3aGlsZShzdHIubGVuZ3RoPGRpZ2l0cyl7c3RyPWNoYXJhY3RlclswXStzdHJ9cmV0dXJuIHN0cn1mdW5jdGlvbiBsZWFkaW5nTnVsbHModmFsdWUsZGlnaXRzKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyh2YWx1ZSxkaWdpdHMsIjAiKX1mdW5jdGlvbiBjb21wYXJlQnlEYXkoZGF0ZTEsZGF0ZTIpe2Z1bmN0aW9uIHNnbih2YWx1ZSl7cmV0dXJuIHZhbHVlPDA/LTE6dmFsdWU+MD8xOjB9dmFyIGNvbXBhcmU7aWYoKGNvbXBhcmU9c2duKGRhdGUxLmdldEZ1bGxZZWFyKCktZGF0ZTIuZ2V0RnVsbFllYXIoKSkpPT09MCl7aWYoKGNvbXBhcmU9c2duKGRhdGUxLmdldE1vbnRoKCktZGF0ZTIuZ2V0TW9udGgoKSkpPT09MCl7Y29tcGFyZT1zZ24oZGF0ZTEuZ2V0RGF0ZSgpLWRhdGUyLmdldERhdGUoKSl9fXJldHVybiBjb21wYXJlfWZ1bmN0aW9uIGdldEZpcnN0V2Vla1N0YXJ0RGF0ZShqYW5Gb3VydGgpe3N3aXRjaChqYW5Gb3VydGguZ2V0RGF5KCkpe2Nhc2UgMDpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCktMSwxMSwyOSk7Y2FzZSAxOnJldHVybiBqYW5Gb3VydGg7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSwwLDMpO2Nhc2UgMzpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCksMCwyKTtjYXNlIDQ6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKS0xLDExLDMxKTtjYXNlIDY6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLTEsMTEsMzApfX1mdW5jdGlvbiBnZXRXZWVrQmFzZWRZZWFyKGRhdGUpe3ZhciB0aGlzRGF0ZT1fX2FkZERheXMobmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsMCwxKSxkYXRlLnRtX3lkYXkpO3ZhciBqYW5Gb3VydGhUaGlzWWVhcj1uZXcgRGF0ZSh0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLDAsNCk7dmFyIGphbkZvdXJ0aE5leHRZZWFyPW5ldyBEYXRlKHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkrMSwwLDQpO3ZhciBmaXJzdFdlZWtTdGFydFRoaXNZZWFyPWdldEZpcnN0V2Vla1N0YXJ0RGF0ZShqYW5Gb3VydGhUaGlzWWVhcik7dmFyIGZpcnN0V2Vla1N0YXJ0TmV4dFllYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aE5leHRZZWFyKTtpZihjb21wYXJlQnlEYXkoZmlyc3RXZWVrU3RhcnRUaGlzWWVhcix0aGlzRGF0ZSk8PTApe2lmKGNvbXBhcmVCeURheShmaXJzdFdlZWtTdGFydE5leHRZZWFyLHRoaXNEYXRlKTw9MCl7cmV0dXJuIHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkrMX1lbHNle3JldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpfX1lbHNle3JldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLTF9fXZhciBFWFBBTlNJT05fUlVMRVNfMj17IiVhIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIFdFRUtEQVlTW2RhdGUudG1fd2RheV0uc3Vic3RyaW5nKDAsMyl9KSwiJUEiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gV0VFS0RBWVNbZGF0ZS50bV93ZGF5XX0pLCIlYiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBNT05USFNbZGF0ZS50bV9tb25dLnN1YnN0cmluZygwLDMpfSksIiVCIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIE1PTlRIU1tkYXRlLnRtX21vbl19KSwiJUMiOihmdW5jdGlvbihkYXRlKXt2YXIgeWVhcj1kYXRlLnRtX3llYXIrMTkwMDtyZXR1cm4gbGVhZGluZ051bGxzKE1hdGguZmxvb3IoeWVhci8xMDApLDIpfSksIiVkIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX21kYXksMil9KSwiJWUiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyhkYXRlLnRtX21kYXksMiwiICIpfSksIiVnIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGdldFdlZWtCYXNlZFllYXIoZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9KSwiJUciOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gZ2V0V2Vla0Jhc2VkWWVhcihkYXRlKX0pLCIlSCI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9ob3VyLDIpfSksIiVJIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX2hvdXI8MTM/ZGF0ZS50bV9ob3VyOmRhdGUudG1faG91ci0xMiwyKX0pLCIlaiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tZGF5K19fYXJyYXlTdW0oX19pc0xlYXBZZWFyKGRhdGUudG1feWVhcisxOTAwKT9fX01PTlRIX0RBWVNfTEVBUDpfX01PTlRIX0RBWVNfUkVHVUxBUixkYXRlLnRtX21vbi0xKSwzKX0pLCIlbSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tb24rMSwyKX0pLCIlTSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9taW4sMil9KSwiJW4iOihmdW5jdGlvbigpe3JldHVybiJcbiJ9KSwiJXAiOihmdW5jdGlvbihkYXRlKXtpZihkYXRlLnRtX2hvdXI+MCYmZGF0ZS50bV9ob3VyPDEzKXtyZXR1cm4iQU0ifWVsc2V7cmV0dXJuIlBNIn19KSwiJVMiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fc2VjLDIpfSksIiV0IjooZnVuY3Rpb24oKXtyZXR1cm4iXHQifSksIiV1IjooZnVuY3Rpb24oZGF0ZSl7dmFyIGRheT1uZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCxkYXRlLnRtX21vbisxLGRhdGUudG1fbWRheSwwLDAsMCwwKTtyZXR1cm4gZGF5LmdldERheSgpfHw3fSksIiVVIjooZnVuY3Rpb24oZGF0ZSl7dmFyIGphbkZpcnN0PW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLDAsMSk7dmFyIGZpcnN0U3VuZGF5PWphbkZpcnN0LmdldERheSgpPT09MD9qYW5GaXJzdDpfX2FkZERheXMoamFuRmlyc3QsNy1qYW5GaXJzdC5nZXREYXkoKSk7dmFyIGVuZERhdGU9bmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsZGF0ZS50bV9tb24sZGF0ZS50bV9tZGF5KTtpZihjb21wYXJlQnlEYXkoZmlyc3RTdW5kYXksZW5kRGF0ZSk8MCl7dmFyIGZlYnJ1YXJ5Rmlyc3RVbnRpbEVuZE1vbnRoPV9fYXJyYXlTdW0oX19pc0xlYXBZZWFyKGVuZERhdGUuZ2V0RnVsbFllYXIoKSk/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIsZW5kRGF0ZS5nZXRNb250aCgpLTEpLTMxO3ZhciBmaXJzdFN1bmRheVVudGlsRW5kSmFudWFyeT0zMS1maXJzdFN1bmRheS5nZXREYXRlKCk7dmFyIGRheXM9Zmlyc3RTdW5kYXlVbnRpbEVuZEphbnVhcnkrZmVicnVhcnlGaXJzdFVudGlsRW5kTW9udGgrZW5kRGF0ZS5nZXREYXRlKCk7cmV0dXJuIGxlYWRpbmdOdWxscyhNYXRoLmNlaWwoZGF5cy83KSwyKX1yZXR1cm4gY29tcGFyZUJ5RGF5KGZpcnN0U3VuZGF5LGphbkZpcnN0KT09PTA/IjAxIjoiMDAifSksIiVWIjooZnVuY3Rpb24oZGF0ZSl7dmFyIGphbkZvdXJ0aFRoaXNZZWFyPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLDAsNCk7dmFyIGphbkZvdXJ0aE5leHRZZWFyPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAxLDAsNCk7dmFyIGZpcnN0V2Vla1N0YXJ0VGhpc1llYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aFRoaXNZZWFyKTt2YXIgZmlyc3RXZWVrU3RhcnROZXh0WWVhcj1nZXRGaXJzdFdlZWtTdGFydERhdGUoamFuRm91cnRoTmV4dFllYXIpO3ZhciBlbmREYXRlPV9fYWRkRGF5cyhuZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCwwLDEpLGRhdGUudG1feWRheSk7aWYoY29tcGFyZUJ5RGF5KGVuZERhdGUsZmlyc3RXZWVrU3RhcnRUaGlzWWVhcik8MCl7cmV0dXJuIjUzIn1pZihjb21wYXJlQnlEYXkoZmlyc3RXZWVrU3RhcnROZXh0WWVhcixlbmREYXRlKTw9MCl7cmV0dXJuIjAxIn12YXIgZGF5c0RpZmZlcmVuY2U7aWYoZmlyc3RXZWVrU3RhcnRUaGlzWWVhci5nZXRGdWxsWWVhcigpPGRhdGUudG1feWVhcisxOTAwKXtkYXlzRGlmZmVyZW5jZT1kYXRlLnRtX3lkYXkrMzItZmlyc3RXZWVrU3RhcnRUaGlzWWVhci5nZXREYXRlKCl9ZWxzZXtkYXlzRGlmZmVyZW5jZT1kYXRlLnRtX3lkYXkrMS1maXJzdFdlZWtTdGFydFRoaXNZZWFyLmdldERhdGUoKX1yZXR1cm4gbGVhZGluZ051bGxzKE1hdGguY2VpbChkYXlzRGlmZmVyZW5jZS83KSwyKX0pLCIldyI6KGZ1bmN0aW9uKGRhdGUpe3ZhciBkYXk9bmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsZGF0ZS50bV9tb24rMSxkYXRlLnRtX21kYXksMCwwLDAsMCk7cmV0dXJuIGRheS5nZXREYXkoKX0pLCIlVyI6KGZ1bmN0aW9uKGRhdGUpe3ZhciBqYW5GaXJzdD1uZXcgRGF0ZShkYXRlLnRtX3llYXIsMCwxKTt2YXIgZmlyc3RNb25kYXk9amFuRmlyc3QuZ2V0RGF5KCk9PT0xP2phbkZpcnN0Ol9fYWRkRGF5cyhqYW5GaXJzdCxqYW5GaXJzdC5nZXREYXkoKT09PTA/MTo3LWphbkZpcnN0LmdldERheSgpKzEpO3ZhciBlbmREYXRlPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLGRhdGUudG1fbW9uLGRhdGUudG1fbWRheSk7aWYoY29tcGFyZUJ5RGF5KGZpcnN0TW9uZGF5LGVuZERhdGUpPDApe3ZhciBmZWJydWFyeUZpcnN0VW50aWxFbmRNb250aD1fX2FycmF5U3VtKF9faXNMZWFwWWVhcihlbmREYXRlLmdldEZ1bGxZZWFyKCkpP19fTU9OVEhfREFZU19MRUFQOl9fTU9OVEhfREFZU19SRUdVTEFSLGVuZERhdGUuZ2V0TW9udGgoKS0xKS0zMTt2YXIgZmlyc3RNb25kYXlVbnRpbEVuZEphbnVhcnk9MzEtZmlyc3RNb25kYXkuZ2V0RGF0ZSgpO3ZhciBkYXlzPWZpcnN0TW9uZGF5VW50aWxFbmRKYW51YXJ5K2ZlYnJ1YXJ5Rmlyc3RVbnRpbEVuZE1vbnRoK2VuZERhdGUuZ2V0RGF0ZSgpO3JldHVybiBsZWFkaW5nTnVsbHMoTWF0aC5jZWlsKGRheXMvNyksMil9cmV0dXJuIGNvbXBhcmVCeURheShmaXJzdE1vbmRheSxqYW5GaXJzdCk9PT0wPyIwMSI6IjAwIn0pLCIleSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybihkYXRlLnRtX3llYXIrMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9KSwiJVkiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gZGF0ZS50bV95ZWFyKzE5MDB9KSwiJXoiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4iIn0pLCIlWiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiIifSksIiUlIjooZnVuY3Rpb24oKXtyZXR1cm4iJSJ9KX07Zm9yKHZhciBydWxlIGluIEVYUEFOU0lPTl9SVUxFU18yKXtpZihwYXR0ZXJuLmluZGV4T2YocnVsZSk+PTApe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18yW3J1bGVdKGRhdGUpKX19dmFyIGJ5dGVzPWludEFycmF5RnJvbVN0cmluZyhwYXR0ZXJuLGZhbHNlKTtpZihieXRlcy5sZW5ndGg+bWF4c2l6ZSl7cmV0dXJuIDB9d3JpdGVBcnJheVRvTWVtb3J5KGJ5dGVzLHMpO3JldHVybiBieXRlcy5sZW5ndGgtMX1mdW5jdGlvbiBfc3RyZnRpbWVfbChzLG1heHNpemUsZm9ybWF0LHRtKXtyZXR1cm4gX3N0cmZ0aW1lKHMsbWF4c2l6ZSxmb3JtYXQsdG0pfWZ1bmN0aW9uIF9hYm9ydCgpe01vZHVsZVsiYWJvcnQiXSgpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzKCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzIik7YWJvcnQoLTEpfWZ1bmN0aW9uIF9wdGhyZWFkX2NvbmRfd2FpdCgpe3JldHVybiAwfXZhciBfZmFicz1NYXRoX2Ficzt2YXIgX2dldGM9X2ZnZXRjO2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlciIpO2Fib3J0KC0xKX12YXIgQnJvd3Nlcj17bWFpbkxvb3A6e3NjaGVkdWxlcjpudWxsLG1ldGhvZDoiIixzaG91bGRQYXVzZTpmYWxzZSxwYXVzZWQ6ZmFsc2UscXVldWU6W10scGF1c2U6KGZ1bmN0aW9uKCl7QnJvd3Nlci5tYWluTG9vcC5zaG91bGRQYXVzZT10cnVlfSkscmVzdW1lOihmdW5jdGlvbigpe2lmKEJyb3dzZXIubWFpbkxvb3AucGF1c2VkKXtCcm93c2VyLm1haW5Mb29wLnBhdXNlZD1mYWxzZTtCcm93c2VyLm1haW5Mb29wLnNjaGVkdWxlcigpfUJyb3dzZXIubWFpbkxvb3Auc2hvdWxkUGF1c2U9ZmFsc2V9KSx1cGRhdGVTdGF0dXM6KGZ1bmN0aW9uKCl7aWYoTW9kdWxlWyJzZXRTdGF0dXMiXSl7dmFyIG1lc3NhZ2U9TW9kdWxlWyJzdGF0dXNNZXNzYWdlIl18fCJQbGVhc2Ugd2FpdC4uLiI7dmFyIHJlbWFpbmluZz1Ccm93c2VyLm1haW5Mb29wLnJlbWFpbmluZ0Jsb2NrZXJzO3ZhciBleHBlY3RlZD1Ccm93c2VyLm1haW5Mb29wLmV4cGVjdGVkQmxvY2tlcnM7aWYocmVtYWluaW5nKXtpZihyZW1haW5pbmc8ZXhwZWN0ZWQpe01vZHVsZVsic2V0U3RhdHVzIl0obWVzc2FnZSsiICgiKyhleHBlY3RlZC1yZW1haW5pbmcpKyIvIitleHBlY3RlZCsiKSIpfWVsc2V7TW9kdWxlWyJzZXRTdGF0dXMiXShtZXNzYWdlKX19ZWxzZXtNb2R1bGVbInNldFN0YXR1cyJdKCIiKX19fSl9LGlzRnVsbFNjcmVlbjpmYWxzZSxwb2ludGVyTG9jazpmYWxzZSxtb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxiYWNrczpbXSx3b3JrZXJzOltdLGluaXQ6KGZ1bmN0aW9uKCl7aWYoIU1vZHVsZVsicHJlbG9hZFBsdWdpbnMiXSlNb2R1bGVbInByZWxvYWRQbHVnaW5zIl09W107aWYoQnJvd3Nlci5pbml0dGVkfHxFTlZJUk9OTUVOVF9JU19XT1JLRVIpcmV0dXJuO0Jyb3dzZXIuaW5pdHRlZD10cnVlO3RyeXtuZXcgQmxvYjtCcm93c2VyLmhhc0Jsb2JDb25zdHJ1Y3Rvcj10cnVlfWNhdGNoKGUpe0Jyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yPWZhbHNlO2NvbnNvbGUubG9nKCJ3YXJuaW5nOiBubyBibG9iIGNvbnN0cnVjdG9yLCBjYW5ub3QgY3JlYXRlIGJsb2JzIHdpdGggbWltZXR5cGVzIil9QnJvd3Nlci5CbG9iQnVpbGRlcj10eXBlb2YgTW96QmxvYkJ1aWxkZXIhPSJ1bmRlZmluZWQiP01vekJsb2JCdWlsZGVyOnR5cGVvZiBXZWJLaXRCbG9iQnVpbGRlciE9InVuZGVmaW5lZCI/V2ViS2l0QmxvYkJ1aWxkZXI6IUJyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yP2NvbnNvbGUubG9nKCJ3YXJuaW5nOiBubyBCbG9iQnVpbGRlciIpOm51bGw7QnJvd3Nlci5VUkxPYmplY3Q9dHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCI/d2luZG93LlVSTD93aW5kb3cuVVJMOndpbmRvdy53ZWJraXRVUkw6dW5kZWZpbmVkO2lmKCFNb2R1bGUubm9JbWFnZURlY29kaW5nJiZ0eXBlb2YgQnJvd3Nlci5VUkxPYmplY3Q9PT0idW5kZWZpbmVkIil7Y29uc29sZS5sb2coIndhcm5pbmc6IEJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBjcmVhdGluZyBvYmplY3QgVVJMcy4gQnVpbHQtaW4gYnJvd3NlciBpbWFnZSBkZWNvZGluZyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIik7TW9kdWxlLm5vSW1hZ2VEZWNvZGluZz10cnVlfXZhciBpbWFnZVBsdWdpbj17fTtpbWFnZVBsdWdpblsiY2FuSGFuZGxlIl09ZnVuY3Rpb24gaW1hZ2VQbHVnaW5fY2FuSGFuZGxlKG5hbWUpe3JldHVybiFNb2R1bGUubm9JbWFnZURlY29kaW5nJiYvXC4oanBnfGpwZWd8cG5nfGJtcCkkL2kudGVzdChuYW1lKX07aW1hZ2VQbHVnaW5bImhhbmRsZSJdPWZ1bmN0aW9uIGltYWdlUGx1Z2luX2hhbmRsZShieXRlQXJyYXksbmFtZSxvbmxvYWQsb25lcnJvcil7dmFyIGI9bnVsbDtpZihCcm93c2VyLmhhc0Jsb2JDb25zdHJ1Y3Rvcil7dHJ5e2I9bmV3IEJsb2IoW2J5dGVBcnJheV0se3R5cGU6QnJvd3Nlci5nZXRNaW1ldHlwZShuYW1lKX0pO2lmKGIuc2l6ZSE9PWJ5dGVBcnJheS5sZW5ndGgpe2I9bmV3IEJsb2IoWyhuZXcgVWludDhBcnJheShieXRlQXJyYXkpKS5idWZmZXJdLHt0eXBlOkJyb3dzZXIuZ2V0TWltZXR5cGUobmFtZSl9KX19Y2F0Y2goZSl7UnVudGltZS53YXJuT25jZSgiQmxvYiBjb25zdHJ1Y3RvciBwcmVzZW50IGJ1dCBmYWlsczogIitlKyI7IGZhbGxpbmcgYmFjayB0byBibG9iIGJ1aWxkZXIiKX19aWYoIWIpe3ZhciBiYj1uZXcgQnJvd3Nlci5CbG9iQnVpbGRlcjtiYi5hcHBlbmQoKG5ldyBVaW50OEFycmF5KGJ5dGVBcnJheSkpLmJ1ZmZlcik7Yj1iYi5nZXRCbG9iKCl9dmFyIHVybD1Ccm93c2VyLlVSTE9iamVjdC5jcmVhdGVPYmplY3RVUkwoYik7dmFyIGltZz1uZXcgSW1hZ2U7aW1nLm9ubG9hZD1mdW5jdGlvbiBpbWdfb25sb2FkKCl7YXNzZXJ0KGltZy5jb21wbGV0ZSwiSW1hZ2UgIituYW1lKyIgY291bGQgbm90IGJlIGRlY29kZWQiKTt2YXIgY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2NhbnZhcy53aWR0aD1pbWcud2lkdGg7Y2FudmFzLmhlaWdodD1pbWcuaGVpZ2h0O3ZhciBjdHg9Y2FudmFzLmdldENvbnRleHQoIjJkIik7Y3R4LmRyYXdJbWFnZShpbWcsMCwwKTtNb2R1bGVbInByZWxvYWRlZEltYWdlcyJdW25hbWVdPWNhbnZhcztCcm93c2VyLlVSTE9iamVjdC5yZXZva2VPYmplY3RVUkwodXJsKTtpZihvbmxvYWQpb25sb2FkKGJ5dGVBcnJheSl9O2ltZy5vbmVycm9yPWZ1bmN0aW9uIGltZ19vbmVycm9yKGV2ZW50KXtjb25zb2xlLmxvZygiSW1hZ2UgIit1cmwrIiBjb3VsZCBub3QgYmUgZGVjb2RlZCIpO2lmKG9uZXJyb3Ipb25lcnJvcigpfTtpbWcuc3JjPXVybH07TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLnB1c2goaW1hZ2VQbHVnaW4pO3ZhciBhdWRpb1BsdWdpbj17fTthdWRpb1BsdWdpblsiY2FuSGFuZGxlIl09ZnVuY3Rpb24gYXVkaW9QbHVnaW5fY2FuSGFuZGxlKG5hbWUpe3JldHVybiFNb2R1bGUubm9BdWRpb0RlY29kaW5nJiZuYW1lLnN1YnN0cigtNClpbnsiLm9nZyI6MSwiLndhdiI6MSwiLm1wMyI6MX19O2F1ZGlvUGx1Z2luWyJoYW5kbGUiXT1mdW5jdGlvbiBhdWRpb1BsdWdpbl9oYW5kbGUoYnl0ZUFycmF5LG5hbWUsb25sb2FkLG9uZXJyb3Ipe3ZhciBkb25lPWZhbHNlO2Z1bmN0aW9uIGZpbmlzaChhdWRpbyl7aWYoZG9uZSlyZXR1cm47ZG9uZT10cnVlO01vZHVsZVsicHJlbG9hZGVkQXVkaW9zIl1bbmFtZV09YXVkaW87aWYob25sb2FkKW9ubG9hZChieXRlQXJyYXkpfWZ1bmN0aW9uIGZhaWwoKXtpZihkb25lKXJldHVybjtkb25lPXRydWU7TW9kdWxlWyJwcmVsb2FkZWRBdWRpb3MiXVtuYW1lXT1uZXcgQXVkaW87aWYob25lcnJvcilvbmVycm9yKCl9aWYoQnJvd3Nlci5oYXNCbG9iQ29uc3RydWN0b3Ipe3RyeXt2YXIgYj1uZXcgQmxvYihbYnl0ZUFycmF5XSx7dHlwZTpCcm93c2VyLmdldE1pbWV0eXBlKG5hbWUpfSl9Y2F0Y2goZSl7cmV0dXJuIGZhaWwoKX12YXIgdXJsPUJyb3dzZXIuVVJMT2JqZWN0LmNyZWF0ZU9iamVjdFVSTChiKTt2YXIgYXVkaW89bmV3IEF1ZGlvO2F1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoImNhbnBsYXl0aHJvdWdoIiwoZnVuY3Rpb24oKXtmaW5pc2goYXVkaW8pfSksZmFsc2UpO2F1ZGlvLm9uZXJyb3I9ZnVuY3Rpb24gYXVkaW9fb25lcnJvcihldmVudCl7aWYoZG9uZSlyZXR1cm47Y29uc29sZS5sb2coIndhcm5pbmc6IGJyb3dzZXIgY291bGQgbm90IGZ1bGx5IGRlY29kZSBhdWRpbyAiK25hbWUrIiwgdHJ5aW5nIHNsb3dlciBiYXNlNjQgYXBwcm9hY2giKTtmdW5jdGlvbiBlbmNvZGU2NChkYXRhKXt2YXIgQkFTRT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7dmFyIFBBRD0iPSI7dmFyIHJldD0iIjt2YXIgbGVmdGNoYXI9MDt2YXIgbGVmdGJpdHM9MDtmb3IodmFyIGk9MDtpPGRhdGEubGVuZ3RoO2krKyl7bGVmdGNoYXI9bGVmdGNoYXI8PDh8ZGF0YVtpXTtsZWZ0Yml0cys9ODt3aGlsZShsZWZ0Yml0cz49Nil7dmFyIGN1cnI9bGVmdGNoYXI+PmxlZnRiaXRzLTYmNjM7bGVmdGJpdHMtPTY7cmV0Kz1CQVNFW2N1cnJdfX1pZihsZWZ0Yml0cz09Mil7cmV0Kz1CQVNFWyhsZWZ0Y2hhciYzKTw8NF07cmV0Kz1QQUQrUEFEfWVsc2UgaWYobGVmdGJpdHM9PTQpe3JldCs9QkFTRVsobGVmdGNoYXImMTUpPDwyXTtyZXQrPVBBRH1yZXR1cm4gcmV0fWF1ZGlvLnNyYz0iZGF0YTphdWRpby94LSIrbmFtZS5zdWJzdHIoLTMpKyI7YmFzZTY0LCIrZW5jb2RlNjQoYnl0ZUFycmF5KTtmaW5pc2goYXVkaW8pfTthdWRpby5zcmM9dXJsO0Jyb3dzZXIuc2FmZVNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZmluaXNoKGF1ZGlvKX0pLDFlNCl9ZWxzZXtyZXR1cm4gZmFpbCgpfX07TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLnB1c2goYXVkaW9QbHVnaW4pO3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtpZihjYW52YXMpe2NhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2s9Y2FudmFzWyJyZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJtb3pSZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJ3ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJtc1JlcXVlc3RQb2ludGVyTG9jayJdfHwoZnVuY3Rpb24oKXt9KTtjYW52YXMuZXhpdFBvaW50ZXJMb2NrPWRvY3VtZW50WyJleGl0UG9pbnRlckxvY2siXXx8ZG9jdW1lbnRbIm1vekV4aXRQb2ludGVyTG9jayJdfHxkb2N1bWVudFsid2Via2l0RXhpdFBvaW50ZXJMb2NrIl18fGRvY3VtZW50WyJtc0V4aXRQb2ludGVyTG9jayJdfHwoZnVuY3Rpb24oKXt9KTtjYW52YXMuZXhpdFBvaW50ZXJMb2NrPWNhbnZhcy5leGl0UG9pbnRlckxvY2suYmluZChkb2N1bWVudCk7ZnVuY3Rpb24gcG9pbnRlckxvY2tDaGFuZ2UoKXtCcm93c2VyLnBvaW50ZXJMb2NrPWRvY3VtZW50WyJwb2ludGVyTG9ja0VsZW1lbnQiXT09PWNhbnZhc3x8ZG9jdW1lbnRbIm1velBvaW50ZXJMb2NrRWxlbWVudCJdPT09Y2FudmFzfHxkb2N1bWVudFsid2Via2l0UG9pbnRlckxvY2tFbGVtZW50Il09PT1jYW52YXN8fGRvY3VtZW50WyJtc1BvaW50ZXJMb2NrRWxlbWVudCJdPT09Y2FudmFzfWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJsb2NrY2hhbmdlIixwb2ludGVyTG9ja0NoYW5nZSxmYWxzZSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW96cG9pbnRlcmxvY2tjaGFuZ2UiLHBvaW50ZXJMb2NrQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2NoYW5nZSIscG9pbnRlckxvY2tDaGFuZ2UsZmFsc2UpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1zcG9pbnRlcmxvY2tjaGFuZ2UiLHBvaW50ZXJMb2NrQ2hhbmdlLGZhbHNlKTtpZihNb2R1bGVbImVsZW1lbnRQb2ludGVyTG9jayJdKXtjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbihldil7aWYoIUJyb3dzZXIucG9pbnRlckxvY2smJmNhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2spe2NhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2soKTtldi5wcmV2ZW50RGVmYXVsdCgpfX0pLGZhbHNlKX19fSksY3JlYXRlQ29udGV4dDooZnVuY3Rpb24oY2FudmFzLHVzZVdlYkdMLHNldEluTW9kdWxlLHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpe3ZhciBjdHg7dmFyIGVycm9ySW5mbz0iPyI7ZnVuY3Rpb24gb25Db250ZXh0Q3JlYXRpb25FcnJvcihldmVudCl7ZXJyb3JJbmZvPWV2ZW50LnN0YXR1c01lc3NhZ2V8fGVycm9ySW5mb310cnl7aWYodXNlV2ViR0wpe3ZhciBjb250ZXh0QXR0cmlidXRlcz17YW50aWFsaWFzOmZhbHNlLGFscGhhOmZhbHNlfTtpZih3ZWJHTENvbnRleHRBdHRyaWJ1dGVzKXtmb3IodmFyIGF0dHJpYnV0ZSBpbiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzKXtjb250ZXh0QXR0cmlidXRlc1thdHRyaWJ1dGVdPXdlYkdMQ29udGV4dEF0dHJpYnV0ZXNbYXR0cmlidXRlXX19Y2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLG9uQ29udGV4dENyZWF0aW9uRXJyb3IsZmFsc2UpO3RyeXtbImV4cGVyaW1lbnRhbC13ZWJnbCIsIndlYmdsIl0uc29tZSgoZnVuY3Rpb24od2ViZ2xJZCl7cmV0dXJuIGN0eD1jYW52YXMuZ2V0Q29udGV4dCh3ZWJnbElkLGNvbnRleHRBdHRyaWJ1dGVzKX0pKX1maW5hbGx5e2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIixvbkNvbnRleHRDcmVhdGlvbkVycm9yLGZhbHNlKX19ZWxzZXtjdHg9Y2FudmFzLmdldENvbnRleHQoIjJkIil9aWYoIWN0eCl0aHJvdyI6KCJ9Y2F0Y2goZSl7TW9kdWxlLnByaW50KCJDb3VsZCBub3QgY3JlYXRlIGNhbnZhczogIitbZXJyb3JJbmZvLGVdKTtyZXR1cm4gbnVsbH1pZih1c2VXZWJHTCl7Y2FudmFzLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iYmxhY2sifWlmKHNldEluTW9kdWxlKXtHTGN0eD1Nb2R1bGUuY3R4PWN0eDtNb2R1bGUudXNlV2ViR0w9dXNlV2ViR0w7QnJvd3Nlci5tb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihjYWxsYmFjayl7Y2FsbGJhY2soKX0pKTtCcm93c2VyLmluaXQoKX1yZXR1cm4gY3R4fSksZGVzdHJveUNvbnRleHQ6KGZ1bmN0aW9uKGNhbnZhcyx1c2VXZWJHTCxzZXRJbk1vZHVsZSl7fSksZnVsbFNjcmVlbkhhbmRsZXJzSW5zdGFsbGVkOmZhbHNlLGxvY2tQb2ludGVyOnVuZGVmaW5lZCxyZXNpemVDYW52YXM6dW5kZWZpbmVkLHJlcXVlc3RGdWxsU2NyZWVuOihmdW5jdGlvbihsb2NrUG9pbnRlcixyZXNpemVDYW52YXMpe0Jyb3dzZXIubG9ja1BvaW50ZXI9bG9ja1BvaW50ZXI7QnJvd3Nlci5yZXNpemVDYW52YXM9cmVzaXplQ2FudmFzO2lmKHR5cGVvZiBCcm93c2VyLmxvY2tQb2ludGVyPT09InVuZGVmaW5lZCIpQnJvd3Nlci5sb2NrUG9pbnRlcj10cnVlO2lmKHR5cGVvZiBCcm93c2VyLnJlc2l6ZUNhbnZhcz09PSJ1bmRlZmluZWQiKUJyb3dzZXIucmVzaXplQ2FudmFzPWZhbHNlO3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtmdW5jdGlvbiBmdWxsU2NyZWVuQ2hhbmdlKCl7QnJvd3Nlci5pc0Z1bGxTY3JlZW49ZmFsc2U7dmFyIGNhbnZhc0NvbnRhaW5lcj1jYW52YXMucGFyZW50Tm9kZTtpZigoZG9jdW1lbnRbIndlYmtpdEZ1bGxTY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1vekZ1bGxzY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJmdWxsU2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsiZnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKT09PWNhbnZhc0NvbnRhaW5lcil7Y2FudmFzLmNhbmNlbEZ1bGxTY3JlZW49ZG9jdW1lbnRbImNhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIm1vekNhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIndlYmtpdENhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIm1zRXhpdEZ1bGxzY3JlZW4iXXx8ZG9jdW1lbnRbImV4aXRGdWxsc2NyZWVuIl18fChmdW5jdGlvbigpe30pO2NhbnZhcy5jYW5jZWxGdWxsU2NyZWVuPWNhbnZhcy5jYW5jZWxGdWxsU2NyZWVuLmJpbmQoZG9jdW1lbnQpO2lmKEJyb3dzZXIubG9ja1BvaW50ZXIpY2FudmFzLnJlcXVlc3RQb2ludGVyTG9jaygpO0Jyb3dzZXIuaXNGdWxsU2NyZWVuPXRydWU7aWYoQnJvd3Nlci5yZXNpemVDYW52YXMpQnJvd3Nlci5zZXRGdWxsU2NyZWVuQ2FudmFzU2l6ZSgpfWVsc2V7Y2FudmFzQ29udGFpbmVyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNhbnZhcyxjYW52YXNDb250YWluZXIpO2NhbnZhc0NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNhbnZhc0NvbnRhaW5lcik7aWYoQnJvd3Nlci5yZXNpemVDYW52YXMpQnJvd3Nlci5zZXRXaW5kb3dlZENhbnZhc1NpemUoKX1pZihNb2R1bGVbIm9uRnVsbFNjcmVlbiJdKU1vZHVsZVsib25GdWxsU2NyZWVuIl0oQnJvd3Nlci5pc0Z1bGxTY3JlZW4pO0Jyb3dzZXIudXBkYXRlQ2FudmFzRGltZW5zaW9ucyhjYW52YXMpfWlmKCFCcm93c2VyLmZ1bGxTY3JlZW5IYW5kbGVyc0luc3RhbGxlZCl7QnJvd3Nlci5mdWxsU2NyZWVuSGFuZGxlcnNJbnN0YWxsZWQ9dHJ1ZTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3pmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJNU0Z1bGxzY3JlZW5DaGFuZ2UiLGZ1bGxTY3JlZW5DaGFuZ2UsZmFsc2UpfXZhciBjYW52YXNDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Y2FudmFzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNhbnZhc0NvbnRhaW5lcixjYW52YXMpO2NhbnZhc0NvbnRhaW5lci5hcHBlbmRDaGlsZChjYW52YXMpO2NhbnZhc0NvbnRhaW5lci5yZXF1ZXN0RnVsbFNjcmVlbj1jYW52YXNDb250YWluZXJbInJlcXVlc3RGdWxsU2NyZWVuIl18fGNhbnZhc0NvbnRhaW5lclsibW96UmVxdWVzdEZ1bGxTY3JlZW4iXXx8Y2FudmFzQ29udGFpbmVyWyJtc1JlcXVlc3RGdWxsc2NyZWVuIl18fChjYW52YXNDb250YWluZXJbIndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuIl0/KGZ1bmN0aW9uKCl7Y2FudmFzQ29udGFpbmVyWyJ3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiJdKEVsZW1lbnRbIkFMTE9XX0tFWUJPQVJEX0lOUFVUIl0pfSk6bnVsbCk7Y2FudmFzQ29udGFpbmVyLnJlcXVlc3RGdWxsU2NyZWVuKCl9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpe2lmKHR5cGVvZiB3aW5kb3c9PT0idW5kZWZpbmVkIil7c2V0VGltZW91dChmdW5jLDFlMy82MCl9ZWxzZXtpZighd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSl7d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT13aW5kb3dbInJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIm1velJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl18fHdpbmRvd1sib1JlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbInNldFRpbWVvdXQiXX13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpfX0sc2FmZUNhbGxiYWNrOihmdW5jdGlvbihmdW5jKXtyZXR1cm4oZnVuY3Rpb24oKXtpZighQUJPUlQpcmV0dXJuIGZ1bmMuYXBwbHkobnVsbCxhcmd1bWVudHMpfSl9KSxzYWZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lOihmdW5jdGlvbihmdW5jKXtyZXR1cm4gQnJvd3Nlci5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7aWYoIUFCT1JUKWZ1bmMoKX0pKX0pLHNhZmVTZXRUaW1lb3V0OihmdW5jdGlvbihmdW5jLHRpbWVvdXQpe01vZHVsZVsibm9FeGl0UnVudGltZSJdPXRydWU7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aWYoIUFCT1JUKWZ1bmMoKX0pLHRpbWVvdXQpfSksc2FmZVNldEludGVydmFsOihmdW5jdGlvbihmdW5jLHRpbWVvdXQpe01vZHVsZVsibm9FeGl0UnVudGltZSJdPXRydWU7cmV0dXJuIHNldEludGVydmFsKChmdW5jdGlvbigpe2lmKCFBQk9SVClmdW5jKCl9KSx0aW1lb3V0KX0pLGdldE1pbWV0eXBlOihmdW5jdGlvbihuYW1lKXtyZXR1cm57ImpwZyI6ImltYWdlL2pwZWciLCJqcGVnIjoiaW1hZ2UvanBlZyIsInBuZyI6ImltYWdlL3BuZyIsImJtcCI6ImltYWdlL2JtcCIsIm9nZyI6ImF1ZGlvL29nZyIsIndhdiI6ImF1ZGlvL3dhdiIsIm1wMyI6ImF1ZGlvL21wZWcifVtuYW1lLnN1YnN0cihuYW1lLmxhc3RJbmRleE9mKCIuIikrMSldfSksZ2V0VXNlck1lZGlhOihmdW5jdGlvbihmdW5jKXtpZighd2luZG93LmdldFVzZXJNZWRpYSl7d2luZG93LmdldFVzZXJNZWRpYT1uYXZpZ2F0b3JbImdldFVzZXJNZWRpYSJdfHxuYXZpZ2F0b3JbIm1vekdldFVzZXJNZWRpYSJdfXdpbmRvdy5nZXRVc2VyTWVkaWEoZnVuYyl9KSxnZXRNb3ZlbWVudFg6KGZ1bmN0aW9uKGV2ZW50KXtyZXR1cm4gZXZlbnRbIm1vdmVtZW50WCJdfHxldmVudFsibW96TW92ZW1lbnRYIl18fGV2ZW50WyJ3ZWJraXRNb3ZlbWVudFgiXXx8MH0pLGdldE1vdmVtZW50WTooZnVuY3Rpb24oZXZlbnQpe3JldHVybiBldmVudFsibW92ZW1lbnRZIl18fGV2ZW50WyJtb3pNb3ZlbWVudFkiXXx8ZXZlbnRbIndlYmtpdE1vdmVtZW50WSJdfHwwfSksZ2V0TW91c2VXaGVlbERlbHRhOihmdW5jdGlvbihldmVudCl7dmFyIGRlbHRhPTA7c3dpdGNoKGV2ZW50LnR5cGUpe2Nhc2UiRE9NTW91c2VTY3JvbGwiOmRlbHRhPWV2ZW50LmRldGFpbDticmVhaztjYXNlIm1vdXNld2hlZWwiOmRlbHRhPS1ldmVudC53aGVlbERlbHRhO2JyZWFrO2Nhc2Uid2hlZWwiOmRlbHRhPWV2ZW50LmRlbHRhWTticmVhaztkZWZhdWx0OnRocm93InVucmVjb2duaXplZCBtb3VzZSB3aGVlbCBldmVudDogIitldmVudC50eXBlfXJldHVybiBNYXRoLm1heCgtMSxNYXRoLm1pbigxLGRlbHRhKSl9KSxtb3VzZVg6MCxtb3VzZVk6MCxtb3VzZU1vdmVtZW50WDowLG1vdXNlTW92ZW1lbnRZOjAsdG91Y2hlczp7fSxsYXN0VG91Y2hlczp7fSxjYWxjdWxhdGVNb3VzZUV2ZW50OihmdW5jdGlvbihldmVudCl7aWYoQnJvd3Nlci5wb2ludGVyTG9jayl7aWYoZXZlbnQudHlwZSE9Im1vdXNlbW92ZSImJiJtb3pNb3ZlbWVudFgiaW4gZXZlbnQpe0Jyb3dzZXIubW91c2VNb3ZlbWVudFg9QnJvd3Nlci5tb3VzZU1vdmVtZW50WT0wfWVsc2V7QnJvd3Nlci5tb3VzZU1vdmVtZW50WD1Ccm93c2VyLmdldE1vdmVtZW50WChldmVudCk7QnJvd3Nlci5tb3VzZU1vdmVtZW50WT1Ccm93c2VyLmdldE1vdmVtZW50WShldmVudCl9aWYodHlwZW9mIFNETCE9InVuZGVmaW5lZCIpe0Jyb3dzZXIubW91c2VYPVNETC5tb3VzZVgrQnJvd3Nlci5tb3VzZU1vdmVtZW50WDtCcm93c2VyLm1vdXNlWT1TREwubW91c2VZK0Jyb3dzZXIubW91c2VNb3ZlbWVudFl9ZWxzZXtCcm93c2VyLm1vdXNlWCs9QnJvd3Nlci5tb3VzZU1vdmVtZW50WDtCcm93c2VyLm1vdXNlWSs9QnJvd3Nlci5tb3VzZU1vdmVtZW50WX19ZWxzZXt2YXIgcmVjdD1Nb2R1bGVbImNhbnZhcyJdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBjdz1Nb2R1bGVbImNhbnZhcyJdLndpZHRoO3ZhciBjaD1Nb2R1bGVbImNhbnZhcyJdLmhlaWdodDt2YXIgc2Nyb2xsWD10eXBlb2Ygd2luZG93LnNjcm9sbFghPT0idW5kZWZpbmVkIj93aW5kb3cuc2Nyb2xsWDp3aW5kb3cucGFnZVhPZmZzZXQ7dmFyIHNjcm9sbFk9dHlwZW9mIHdpbmRvdy5zY3JvbGxZIT09InVuZGVmaW5lZCI/d2luZG93LnNjcm9sbFk6d2luZG93LnBhZ2VZT2Zmc2V0O2lmKGV2ZW50LnR5cGU9PT0idG91Y2hzdGFydCJ8fGV2ZW50LnR5cGU9PT0idG91Y2hlbmQifHxldmVudC50eXBlPT09InRvdWNobW92ZSIpe3ZhciB0b3VjaD1ldmVudC50b3VjaDtpZih0b3VjaD09PXVuZGVmaW5lZCl7cmV0dXJufXZhciBhZGp1c3RlZFg9dG91Y2gucGFnZVgtKHNjcm9sbFgrcmVjdC5sZWZ0KTt2YXIgYWRqdXN0ZWRZPXRvdWNoLnBhZ2VZLShzY3JvbGxZK3JlY3QudG9wKTthZGp1c3RlZFg9YWRqdXN0ZWRYKihjdy9yZWN0LndpZHRoKTthZGp1c3RlZFk9YWRqdXN0ZWRZKihjaC9yZWN0LmhlaWdodCk7dmFyIGNvb3Jkcz17eDphZGp1c3RlZFgseTphZGp1c3RlZFl9O2lmKGV2ZW50LnR5cGU9PT0idG91Y2hzdGFydCIpe0Jyb3dzZXIubGFzdFRvdWNoZXNbdG91Y2guaWRlbnRpZmllcl09Y29vcmRzO0Jyb3dzZXIudG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXT1jb29yZHN9ZWxzZSBpZihldmVudC50eXBlPT09InRvdWNoZW5kInx8ZXZlbnQudHlwZT09PSJ0b3VjaG1vdmUiKXtCcm93c2VyLmxhc3RUb3VjaGVzW3RvdWNoLmlkZW50aWZpZXJdPUJyb3dzZXIudG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXTtCcm93c2VyLnRvdWNoZXNbdG91Y2guaWRlbnRpZmllcl09e3g6YWRqdXN0ZWRYLHk6YWRqdXN0ZWRZfX1yZXR1cm59dmFyIHg9ZXZlbnQucGFnZVgtKHNjcm9sbFgrcmVjdC5sZWZ0KTt2YXIgeT1ldmVudC5wYWdlWS0oc2Nyb2xsWStyZWN0LnRvcCk7eD14Kihjdy9yZWN0LndpZHRoKTt5PXkqKGNoL3JlY3QuaGVpZ2h0KTtCcm93c2VyLm1vdXNlTW92ZW1lbnRYPXgtQnJvd3Nlci5tb3VzZVg7QnJvd3Nlci5tb3VzZU1vdmVtZW50WT15LUJyb3dzZXIubW91c2VZO0Jyb3dzZXIubW91c2VYPXg7QnJvd3Nlci5tb3VzZVk9eX19KSx4aHJMb2FkOihmdW5jdGlvbih1cmwsb25sb2FkLG9uZXJyb3Ipe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCx0cnVlKTt4aHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7eGhyLm9ubG9hZD1mdW5jdGlvbiB4aHJfb25sb2FkKCl7aWYoeGhyLnN0YXR1cz09MjAwfHx4aHIuc3RhdHVzPT0wJiZ4aHIucmVzcG9uc2Upe29ubG9hZCh4aHIucmVzcG9uc2UpfWVsc2V7b25lcnJvcigpfX07eGhyLm9uZXJyb3I9b25lcnJvcjt4aHIuc2VuZChudWxsKX0pLGFzeW5jTG9hZDooZnVuY3Rpb24odXJsLG9ubG9hZCxvbmVycm9yLG5vUnVuRGVwKXtCcm93c2VyLnhockxvYWQodXJsLChmdW5jdGlvbihhcnJheUJ1ZmZlcil7YXNzZXJ0KGFycmF5QnVmZmVyLCdMb2FkaW5nIGRhdGEgZmlsZSAiJyt1cmwrJyIgZmFpbGVkIChubyBhcnJheUJ1ZmZlcikuJyk7b25sb2FkKG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7aWYoIW5vUnVuRGVwKXJlbW92ZVJ1bkRlcGVuZGVuY3koImFsICIrdXJsKX0pLChmdW5jdGlvbihldmVudCl7aWYob25lcnJvcil7b25lcnJvcigpfWVsc2V7dGhyb3cnTG9hZGluZyBkYXRhIGZpbGUgIicrdXJsKyciIGZhaWxlZC4nfX0pKTtpZighbm9SdW5EZXApYWRkUnVuRGVwZW5kZW5jeSgiYWwgIit1cmwpfSkscmVzaXplTGlzdGVuZXJzOltdLHVwZGF0ZVJlc2l6ZUxpc3RlbmVyczooZnVuY3Rpb24oKXt2YXIgY2FudmFzPU1vZHVsZVsiY2FudmFzIl07QnJvd3Nlci5yZXNpemVMaXN0ZW5lcnMuZm9yRWFjaCgoZnVuY3Rpb24obGlzdGVuZXIpe2xpc3RlbmVyKGNhbnZhcy53aWR0aCxjYW52YXMuaGVpZ2h0KX0pKX0pLHNldENhbnZhc1NpemU6KGZ1bmN0aW9uKHdpZHRoLGhlaWdodCxub1VwZGF0ZXMpe3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtCcm93c2VyLnVwZGF0ZUNhbnZhc0RpbWVuc2lvbnMoY2FudmFzLHdpZHRoLGhlaWdodCk7aWYoIW5vVXBkYXRlcylCcm93c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVycygpfSksd2luZG93ZWRXaWR0aDowLHdpbmRvd2VkSGVpZ2h0OjAsc2V0RnVsbFNjcmVlbkNhbnZhc1NpemU6KGZ1bmN0aW9uKCl7aWYodHlwZW9mIFNETCE9InVuZGVmaW5lZCIpe3ZhciBmbGFncz1IRUFQVTMyW1NETC5zY3JlZW4rUnVudGltZS5RVUFOVFVNX1NJWkUqMD4+Ml07ZmxhZ3M9ZmxhZ3N8ODM4ODYwODtIRUFQMzJbU0RMLnNjcmVlbitSdW50aW1lLlFVQU5UVU1fU0laRSowPj4yXT1mbGFnc31Ccm93c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVycygpfSksc2V0V2luZG93ZWRDYW52YXNTaXplOihmdW5jdGlvbigpe2lmKHR5cGVvZiBTREwhPSJ1bmRlZmluZWQiKXt2YXIgZmxhZ3M9SEVBUFUzMltTREwuc2NyZWVuK1J1bnRpbWUuUVVBTlRVTV9TSVpFKjA+PjJdO2ZsYWdzPWZsYWdzJn44Mzg4NjA4O0hFQVAzMltTREwuc2NyZWVuK1J1bnRpbWUuUVVBTlRVTV9TSVpFKjA+PjJdPWZsYWdzfUJyb3dzZXIudXBkYXRlUmVzaXplTGlzdGVuZXJzKCl9KSx1cGRhdGVDYW52YXNEaW1lbnNpb25zOihmdW5jdGlvbihjYW52YXMsd05hdGl2ZSxoTmF0aXZlKXtpZih3TmF0aXZlJiZoTmF0aXZlKXtjYW52YXMud2lkdGhOYXRpdmU9d05hdGl2ZTtjYW52YXMuaGVpZ2h0TmF0aXZlPWhOYXRpdmV9ZWxzZXt3TmF0aXZlPWNhbnZhcy53aWR0aE5hdGl2ZTtoTmF0aXZlPWNhbnZhcy5oZWlnaHROYXRpdmV9dmFyIHc9d05hdGl2ZTt2YXIgaD1oTmF0aXZlO2lmKE1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSYmTW9kdWxlWyJmb3JjZWRBc3BlY3RSYXRpbyJdPjApe2lmKHcvaDxNb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pe3c9TWF0aC5yb3VuZChoKk1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSl9ZWxzZXtoPU1hdGgucm91bmQody9Nb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pfX1pZigoZG9jdW1lbnRbIndlYmtpdEZ1bGxTY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1vekZ1bGxzY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJmdWxsU2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsiZnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKT09PWNhbnZhcy5wYXJlbnROb2RlJiZ0eXBlb2Ygc2NyZWVuIT0idW5kZWZpbmVkIil7dmFyIGZhY3Rvcj1NYXRoLm1pbihzY3JlZW4ud2lkdGgvdyxzY3JlZW4uaGVpZ2h0L2gpO3c9TWF0aC5yb3VuZCh3KmZhY3Rvcik7aD1NYXRoLnJvdW5kKGgqZmFjdG9yKX1pZihCcm93c2VyLnJlc2l6ZUNhbnZhcyl7aWYoY2FudmFzLndpZHRoIT13KWNhbnZhcy53aWR0aD13O2lmKGNhbnZhcy5oZWlnaHQhPWgpY2FudmFzLmhlaWdodD1oO2lmKHR5cGVvZiBjYW52YXMuc3R5bGUhPSJ1bmRlZmluZWQiKXtjYW52YXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Y2FudmFzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKX19ZWxzZXtpZihjYW52YXMud2lkdGghPXdOYXRpdmUpY2FudmFzLndpZHRoPXdOYXRpdmU7aWYoY2FudmFzLmhlaWdodCE9aE5hdGl2ZSljYW52YXMuaGVpZ2h0PWhOYXRpdmU7aWYodHlwZW9mIGNhbnZhcy5zdHlsZSE9InVuZGVmaW5lZCIpe2lmKHchPXdOYXRpdmV8fGghPWhOYXRpdmUpe2NhbnZhcy5zdHlsZS5zZXRQcm9wZXJ0eSgid2lkdGgiLHcrInB4IiwiaW1wb3J0YW50Iik7Y2FudmFzLnN0eWxlLnNldFByb3BlcnR5KCJoZWlnaHQiLGgrInB4IiwiaW1wb3J0YW50Iil9ZWxzZXtjYW52YXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Y2FudmFzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKX19fX0pfTtmdW5jdGlvbiBfX19jdHlwZV9iX2xvYygpe3ZhciBtZT1fX19jdHlwZV9iX2xvYztpZighbWUucmV0KXt2YXIgdmFsdWVzPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwyLDIsMiwyLDIsMiwyLDIsODE5NSw4MTk0LDgxOTQsODE5NCw4MTk0LDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDI0NTc3LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTt2YXIgaTE2c2l6ZT0yO3ZhciBhcnI9X21hbGxvYyh2YWx1ZXMubGVuZ3RoKmkxNnNpemUpO2Zvcih2YXIgaT0wO2k8dmFsdWVzLmxlbmd0aDtpKyspe0hFQVAxNlthcnIraSppMTZzaXplPj4xXT12YWx1ZXNbaV19bWUucmV0PWFsbG9jYXRlKFthcnIrMTI4KmkxNnNpemVdLCJpMTYqIixBTExPQ19OT1JNQUwpfXJldHVybiBtZS5yZXR9ZnVuY3Rpb24gX2ZyZWUoKXt9TW9kdWxlWyJfZnJlZSJdPV9mcmVlO2Z1bmN0aW9uIF9mcmVlbG9jYWxlKGxvY2FsZSl7X2ZyZWUobG9jYWxlKX1mdW5jdGlvbiBfX19jeGFfYWxsb2NhdGVfZXhjZXB0aW9uKHNpemUpe3ZhciBwdHI9X21hbGxvYyhzaXplK19fX2N4YV9leGNlcHRpb25faGVhZGVyX3NpemUpO3JldHVybiBwdHIrX19fY3hhX2V4Y2VwdGlvbl9oZWFkZXJfc2l6ZX1mdW5jdGlvbiBfZm1vZCh4LHkpe3JldHVybiB4JXl9dmFyIF9mbW9kbD1fZm1vZDtmdW5jdGlvbiBfY2F0b3BlbihuYW1lLG9mbGFnKXtyZXR1cm4tMX1mdW5jdGlvbiBfY2F0Z2V0cyhjYXRkLHNldF9pZCxtc2dfaWQscyl7cmV0dXJuIHN9ZnVuY3Rpb24gX3NwcmludGYocyxmb3JtYXQsdmFyYXJncyl7cmV0dXJuIF9zbnByaW50ZihzLHVuZGVmaW5lZCxmb3JtYXQsdmFyYXJncyl9ZnVuY3Rpb24gX2FzcHJpbnRmKHMsZm9ybWF0LHZhcmFyZ3Mpe3JldHVybiBfc3ByaW50Zigtcyxmb3JtYXQsdmFyYXJncyl9ZnVuY3Rpb24gX3Zhc3ByaW50ZihzLGZvcm1hdCx2YV9hcmcpe3JldHVybiBfYXNwcmludGYocyxmb3JtYXQsSEVBUDMyW3ZhX2FyZz4+Ml0pfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0KCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0Iik7YWJvcnQoLTEpfWZ1bmN0aW9uIF90aW1lKHB0cil7dmFyIHJldD1NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKTtpZihwdHIpe0hFQVAzMltwdHI+PjJdPXJldH1yZXR1cm4gcmV0fWZ1bmN0aW9uIF9jb3B5c2lnbihhLGIpe3JldHVybiBfX3JlYWxseU5lZ2F0aXZlKGEpPT09X19yZWFsbHlOZWdhdGl2ZShiKT9hOi1hfWZ1bmN0aW9uIF9fX2N0eXBlX3RvdXBwZXJfbG9jKCl7dmFyIG1lPV9fX2N0eXBlX3RvdXBwZXJfbG9jO2lmKCFtZS5yZXQpe3ZhciB2YWx1ZXM9WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwtMSwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDEyMywxMjQsMTI1LDEyNiwxMjcsMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NV07dmFyIGkzMnNpemU9NDt2YXIgYXJyPV9tYWxsb2ModmFsdWVzLmxlbmd0aCppMzJzaXplKTtmb3IodmFyIGk9MDtpPHZhbHVlcy5sZW5ndGg7aSsrKXtIRUFQMzJbYXJyK2kqaTMyc2l6ZT4+Ml09dmFsdWVzW2ldfW1lLnJldD1hbGxvY2F0ZShbYXJyKzEyOCppMzJzaXplXSwiaTMyKiIsQUxMT0NfTk9STUFMKX1yZXR1cm4gbWUucmV0fWZ1bmN0aW9uIF9fX2N4YV9ndWFyZF9hY3F1aXJlKHZhcmlhYmxlKXtpZighSEVBUDhbdmFyaWFibGU+PjBdKXtIRUFQOFt2YXJpYWJsZT4+MF09MTtyZXR1cm4gMX1yZXR1cm4gMH1mdW5jdGlvbiBfX19jdHlwZV90b2xvd2VyX2xvYygpe3ZhciBtZT1fX19jdHlwZV90b2xvd2VyX2xvYztpZighbWUucmV0KXt2YXIgdmFsdWVzPVsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsLTEsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyNywxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XTt2YXIgaTMyc2l6ZT00O3ZhciBhcnI9X21hbGxvYyh2YWx1ZXMubGVuZ3RoKmkzMnNpemUpO2Zvcih2YXIgaT0wO2k8dmFsdWVzLmxlbmd0aDtpKyspe0hFQVAzMlthcnIraSppMzJzaXplPj4yXT12YWx1ZXNbaV19bWUucmV0PWFsbG9jYXRlKFthcnIrMTI4KmkzMnNpemVdLCJpMzIqIixBTExPQ19OT1JNQUwpfXJldHVybiBtZS5yZXR9dmFyIF9fX2N4YV9jYXVnaHRfZXhjZXB0aW9ucz1bXTtmdW5jdGlvbiBfX19jeGFfYmVnaW5fY2F0Y2gocHRyKXtfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udi51bmNhdWdodF9leGNlcHRpb24tLTtfX19jeGFfY2F1Z2h0X2V4Y2VwdGlvbnMucHVzaChfX19jeGFfbGFzdF90aHJvd25fZXhjZXB0aW9uKTtyZXR1cm4gcHRyfU1vZHVsZVsiX2JpdHNoaWZ0NjRTaGwiXT1fYml0c2hpZnQ2NFNobDtmdW5jdGlvbiBfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYoKXtpZighX19aTktTdDlleGNlcHRpb240d2hhdEV2LmJ1ZmZlcil7dmFyIG5hbWU9InN0ZDo6ZXhjZXB0aW9uIjtfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYuYnVmZmVyPV9tYWxsb2MobmFtZS5sZW5ndGgrMSk7d3JpdGVTdHJpbmdUb01lbW9yeShuYW1lLF9fWk5LU3Q5ZXhjZXB0aW9uNHdoYXRFdi5idWZmZXIpfXJldHVybiBfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYuYnVmZmVyfWZ1bmN0aW9uIF9fWk5TdDlleGNlcHRpb25EMkV2KCl7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yKCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yIik7YWJvcnQoLTEpfXZhciBfY29weXNpZ25sPV9jb3B5c2lnbjtmdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbigpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiIpO2Fib3J0KC0xKX12YXIgX19aVElTdDlleGNlcHRpb249YWxsb2NhdGUoW2FsbG9jYXRlKFsxLDAsMCwwLDAsMCwwXSwiaTgiLEFMTE9DX1NUQVRJQykrOCwwXSwiaTMyIixBTExPQ19TVEFUSUMpO3ZhciBfX19kc29faGFuZGxlPWFsbG9jYXRlKDEsImkzMioiLEFMTE9DX1NUQVRJQyk7RlMuc3RhdGljSW5pdCgpO19fQVRJTklUX18udW5zaGlmdCh7ZnVuYzooZnVuY3Rpb24oKXtpZighTW9kdWxlWyJub0ZTSW5pdCJdJiYhRlMuaW5pdC5pbml0aWFsaXplZClGUy5pbml0KCl9KX0pO19fQVRNQUlOX18ucHVzaCh7ZnVuYzooZnVuY3Rpb24oKXtGUy5pZ25vcmVQZXJtaXNzaW9ucz1mYWxzZX0pfSk7X19BVEVYSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe0ZTLnF1aXQoKX0pfSk7TW9kdWxlWyJGU19jcmVhdGVGb2xkZXIiXT1GUy5jcmVhdGVGb2xkZXI7TW9kdWxlWyJGU19jcmVhdGVQYXRoIl09RlMuY3JlYXRlUGF0aDtNb2R1bGVbIkZTX2NyZWF0ZURhdGFGaWxlIl09RlMuY3JlYXRlRGF0YUZpbGU7TW9kdWxlWyJGU19jcmVhdGVQcmVsb2FkZWRGaWxlIl09RlMuY3JlYXRlUHJlbG9hZGVkRmlsZTtNb2R1bGVbIkZTX2NyZWF0ZUxhenlGaWxlIl09RlMuY3JlYXRlTGF6eUZpbGU7TW9kdWxlWyJGU19jcmVhdGVMaW5rIl09RlMuY3JlYXRlTGluaztNb2R1bGVbIkZTX2NyZWF0ZURldmljZSJdPUZTLmNyZWF0ZURldmljZTtfX19lcnJub19zdGF0ZT1SdW50aW1lLnN0YXRpY0FsbG9jKDQpO0hFQVAzMltfX19lcnJub19zdGF0ZT4+Ml09MDtfX0FUSU5JVF9fLnVuc2hpZnQoe2Z1bmM6KGZ1bmN0aW9uKCl7VFRZLmluaXQoKX0pfSk7X19BVEVYSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe1RUWS5zaHV0ZG93bigpfSl9KTtUVFkudXRmOD1uZXcgUnVudGltZS5VVEY4UHJvY2Vzc29yO2lmKEVOVklST05NRU5UX0lTX05PREUpe3ZhciBmcz1yZXF1aXJlKCJmcyIpO05PREVGUy5zdGF0aWNJbml0KCl9X19BVElOSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe1NPQ0tGUy5yb290PUZTLm1vdW50KFNPQ0tGUyx7fSxudWxsKX0pfSk7X2ZnZXRjLnJldD1hbGxvY2F0ZShbMF0sImk4IixBTExPQ19TVEFUSUMpO01vZHVsZVsicmVxdWVzdEZ1bGxTY3JlZW4iXT1mdW5jdGlvbiBNb2R1bGVfcmVxdWVzdEZ1bGxTY3JlZW4obG9ja1BvaW50ZXIscmVzaXplQ2FudmFzKXtCcm93c2VyLnJlcXVlc3RGdWxsU2NyZWVuKGxvY2tQb2ludGVyLHJlc2l6ZUNhbnZhcyl9O01vZHVsZVsicmVxdWVzdEFuaW1hdGlvbkZyYW1lIl09ZnVuY3Rpb24gTW9kdWxlX3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKXtCcm93c2VyLnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKX07TW9kdWxlWyJzZXRDYW52YXNTaXplIl09ZnVuY3Rpb24gTW9kdWxlX3NldENhbnZhc1NpemUod2lkdGgsaGVpZ2h0LG5vVXBkYXRlcyl7QnJvd3Nlci5zZXRDYW52YXNTaXplKHdpZHRoLGhlaWdodCxub1VwZGF0ZXMpfTtNb2R1bGVbInBhdXNlTWFpbkxvb3AiXT1mdW5jdGlvbiBNb2R1bGVfcGF1c2VNYWluTG9vcCgpe0Jyb3dzZXIubWFpbkxvb3AucGF1c2UoKX07TW9kdWxlWyJyZXN1bWVNYWluTG9vcCJdPWZ1bmN0aW9uIE1vZHVsZV9yZXN1bWVNYWluTG9vcCgpe0Jyb3dzZXIubWFpbkxvb3AucmVzdW1lKCl9O01vZHVsZVsiZ2V0VXNlck1lZGlhIl09ZnVuY3Rpb24gTW9kdWxlX2dldFVzZXJNZWRpYSgpe0Jyb3dzZXIuZ2V0VXNlck1lZGlhKCl9O1NUQUNLX0JBU0U9U1RBQ0tUT1A9UnVudGltZS5hbGlnbk1lbW9yeShTVEFUSUNUT1ApO3N0YXRpY1NlYWxlZD10cnVlO1NUQUNLX01BWD1TVEFDS19CQVNFKzUyNDI4ODA7RFlOQU1JQ19CQVNFPURZTkFNSUNUT1A9UnVudGltZS5hbGlnbk1lbW9yeShTVEFDS19NQVgpO2Fzc2VydChEWU5BTUlDX0JBU0U8VE9UQUxfTUVNT1JZLCJUT1RBTF9NRU1PUlkgbm90IGJpZyBlbm91Z2ggZm9yIHN0YWNrIik7dmFyIGN0bHpfaTg9YWxsb2NhdGUoWzgsNyw2LDYsNSw1LDUsNSw0LDQsNCw0LDQsNCw0LDQsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLCJpOCIsQUxMT0NfRFlOQU1JQyk7dmFyIGN0dHpfaTg9YWxsb2NhdGUoWzgsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNiwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDUsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw3LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNSwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDYsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDBdLCJpOCIsQUxMT0NfRFlOQU1JQyk7dmFyIE1hdGhfbWluPU1hdGgubWluO2Z1bmN0aW9uIGludm9rZV9paWlpKGluZGV4LGExLGEyLGEzKXt0cnl7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paWlpIl0oaW5kZXgsYTEsYTIsYTMpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaShpbmRleCl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaSJdKGluZGV4KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92aShpbmRleCxhMSl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aSJdKGluZGV4LGExKX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92aWkoaW5kZXgsYTEsYTIpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpIl0oaW5kZXgsYTEsYTIpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpaWkoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcsYTgsYTkpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpaWlpaSJdKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3LGE4LGE5KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV9paShpbmRleCxhMSl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWkiXShpbmRleCxhMSl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaWlpaWQoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpaWQiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaShpbmRleCxhMSxhMixhMyl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpIl0oaW5kZXgsYTEsYTIsYTMpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWQoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpZCJdKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92KGluZGV4KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3YiXShpbmRleCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaWlpaWlpaWlpKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3LGE4KXt0cnl7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paWlpaWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaWlpaWkoaW5kZXgsYTEsYTIsYTMsYTQpe3RyeXtyZXR1cm4gTW9kdWxlWyJkeW5DYWxsX2lpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSxhNil7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX2lpaShpbmRleCxhMSxhMil7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWlpIl0oaW5kZXgsYTEsYTIpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX2lpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpKGluZGV4LGExLGEyLGEzLGE0KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3ZpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gYXNtUHJpbnRJbnQoeCx5KXtNb2R1bGUucHJpbnQoImludCAiK3grIiwiK3kpfWZ1bmN0aW9uIGFzbVByaW50RmxvYXQoeCx5KXtNb2R1bGUucHJpbnQoImZsb2F0ICIreCsiLCIreSl9dmFyIGFzbT0oZnVuY3Rpb24oZ2xvYmFsLGVudixidWZmZXIpIHsKLy8gRU1TQ1JJUFRFTl9TVEFSVF9BU00KInVzZSBhc20iO3ZhciBhPW5ldyBnbG9iYWwuSW50OEFycmF5KGJ1ZmZlcik7dmFyIGI9bmV3IGdsb2JhbC5JbnQxNkFycmF5KGJ1ZmZlcik7dmFyIGM9bmV3IGdsb2JhbC5JbnQzMkFycmF5KGJ1ZmZlcik7dmFyIGQ9bmV3IGdsb2JhbC5VaW50OEFycmF5KGJ1ZmZlcik7dmFyIGU9bmV3IGdsb2JhbC5VaW50MTZBcnJheShidWZmZXIpO3ZhciBmPW5ldyBnbG9iYWwuVWludDMyQXJyYXkoYnVmZmVyKTt2YXIgZz1uZXcgZ2xvYmFsLkZsb2F0MzJBcnJheShidWZmZXIpO3ZhciBoPW5ldyBnbG9iYWwuRmxvYXQ2NEFycmF5KGJ1ZmZlcik7dmFyIGk9ZW52LlNUQUNLVE9QfDA7dmFyIGo9ZW52LlNUQUNLX01BWHwwO3ZhciBrPWVudi50ZW1wRG91YmxlUHRyfDA7dmFyIGw9ZW52LkFCT1JUfDA7dmFyIG09ZW52LmN0dHpfaTh8MDt2YXIgbj1lbnYuY3Rsel9pOHwwO3ZhciBvPWVudi5fX1pUSVN0OWV4Y2VwdGlvbnwwO3ZhciBwPWVudi5fX19kc29faGFuZGxlfDA7dmFyIHE9ZW52Ll9zdGRlcnJ8MDt2YXIgcj1lbnYuX3N0ZGlufDA7dmFyIHM9ZW52Ll9zdGRvdXR8MDt2YXIgdD0wO3ZhciB1PTA7dmFyIHY9MDt2YXIgdz0wO3ZhciB4PStlbnYuTmFOLHk9K2Vudi5JbmZpbml0eTt2YXIgej0wLEE9MCxCPTAsQz0wLEQ9MC4wLEU9MCxGPTAsRz0wLEg9MC4wO3ZhciBJPTA7dmFyIEo9MDt2YXIgSz0wO3ZhciBMPTA7dmFyIE09MDt2YXIgTj0wO3ZhciBPPTA7dmFyIFA9MDt2YXIgUT0wO3ZhciBSPTA7dmFyIFM9Z2xvYmFsLk1hdGguZmxvb3I7dmFyIFQ9Z2xvYmFsLk1hdGguYWJzO3ZhciBVPWdsb2JhbC5NYXRoLnNxcnQ7dmFyIFY9Z2xvYmFsLk1hdGgucG93O3ZhciBXPWdsb2JhbC5NYXRoLmNvczt2YXIgWD1nbG9iYWwuTWF0aC5zaW47dmFyIFk9Z2xvYmFsLk1hdGgudGFuO3ZhciBaPWdsb2JhbC5NYXRoLmFjb3M7dmFyIF89Z2xvYmFsLk1hdGguYXNpbjt2YXIgJD1nbG9iYWwuTWF0aC5hdGFuO3ZhciBhYT1nbG9iYWwuTWF0aC5hdGFuMjt2YXIgYmE9Z2xvYmFsLk1hdGguZXhwO3ZhciBjYT1nbG9iYWwuTWF0aC5sb2c7dmFyIGRhPWdsb2JhbC5NYXRoLmNlaWw7dmFyIGVhPWdsb2JhbC5NYXRoLmltdWw7dmFyIGZhPWVudi5hYm9ydDt2YXIgZ2E9ZW52LmFzc2VydDt2YXIgaGE9ZW52LmFzbVByaW50SW50O3ZhciBpYT1lbnYuYXNtUHJpbnRGbG9hdDt2YXIgamE9ZW52Lm1pbjt2YXIga2E9ZW52LmpzQ2FsbDt2YXIgbGE9ZW52Lmludm9rZV9paWlpO3ZhciBtYT1lbnYuaW52b2tlX3ZpaWlpaWlpO3ZhciBuYT1lbnYuaW52b2tlX3ZpaWlpaTt2YXIgb2E9ZW52Lmludm9rZV9pO3ZhciBwYT1lbnYuaW52b2tlX3ZpO3ZhciBxYT1lbnYuaW52b2tlX3ZpaTt2YXIgcmE9ZW52Lmludm9rZV92aWlpaWlpaWlpO3ZhciBzYT1lbnYuaW52b2tlX2lpO3ZhciB0YT1lbnYuaW52b2tlX3ZpaWlpaWlkO3ZhciB1YT1lbnYuaW52b2tlX3ZpaWk7dmFyIHZhPWVudi5pbnZva2VfdmlpaWlpZDt2YXIgd2E9ZW52Lmludm9rZV92O3ZhciB4YT1lbnYuaW52b2tlX2lpaWlpaWlpaTt2YXIgeWE9ZW52Lmludm9rZV9paWlpaTt2YXIgemE9ZW52Lmludm9rZV92aWlpaWlpaWk7dmFyIEFhPWVudi5pbnZva2VfdmlpaWlpaTt2YXIgQmE9ZW52Lmludm9rZV9paWk7dmFyIENhPWVudi5pbnZva2VfaWlpaWlpO3ZhciBEYT1lbnYuaW52b2tlX3ZpaWlpO3ZhciBFYT1lbnYuX2ZhYnM7dmFyIEZhPWVudi5fc3NjYW5mO3ZhciBHYT1lbnYuX3B0aHJlYWRfY29uZF93YWl0O3ZhciBIYT1lbnYuX19fY3R5cGVfdG9sb3dlcl9sb2M7dmFyIElhPWVudi5fYXNwcmludGY7dmFyIEphPWVudi5fX2VtYmluZF9yZWdpc3Rlcl92b2lkO3ZhciBLYT1lbnYuX3NlbmQ7dmFyIExhPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldzt2YXIgTWE9ZW52Ll92c3NjYW5mO3ZhciBOYT1lbnYuX19fY3R5cGVfYl9sb2M7dmFyIE9hPWVudi5fX1pTdDl0ZXJtaW5hdGV2O3ZhciBQYT1lbnYuX2Ztb2Q7dmFyIFFhPWVudi5fX19jeGFfZ3VhcmRfYWNxdWlyZTt2YXIgUmE9ZW52Ll9fX3NldEVyck5vO3ZhciBTYT1lbnYuX19fY3hhX2lzX251bWJlcl90eXBlO3ZhciBUYT1lbnYuX19fZ3h4X3BlcnNvbmFsaXR5X3YwO3ZhciBVYT1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcjt2YXIgVmE9ZW52Ll91bmdldGM7dmFyIFdhPWVudi5fX19hc3NlcnRfZmFpbDt2YXIgWGE9ZW52Ll9fX2N4YV9hbGxvY2F0ZV9leGNlcHRpb247dmFyIFlhPWVudi5fX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udjt2YXIgWmE9ZW52Ll9fX2N0eXBlX3RvdXBwZXJfbG9jO3ZhciBfYT1lbnYuX2ZmbHVzaDt2YXIgJGE9ZW52Ll9fX2N4YV9ndWFyZF9yZWxlYXNlO3ZhciBhYj1lbnYuX19hZGREYXlzO3ZhciBiYj1lbnYuX19fZXJybm9fbG9jYXRpb247dmFyIGNiPWVudi5fcHdyaXRlO3ZhciBkYj1lbnYuX3N0cmVycm9yX3I7dmFyIGViPWVudi5fc3RyZnRpbWVfbDt2YXIgZmI9ZW52Ll9fZm9ybWF0U3RyaW5nO3ZhciBnYj1lbnYuX19yZWFsbHlOZWdhdGl2ZTt2YXIgaGI9ZW52Ll9zYnJrO3ZhciBpYj1lbnYuX3VzZWxvY2FsZTt2YXIgamI9ZW52Ll9jYXRnZXRzO3ZhciBrYj1lbnYuX25ld2xvY2FsZTt2YXIgbGI9ZW52Ll9zbnByaW50Zjt2YXIgbWI9ZW52Ll9fX2N4YV9iZWdpbl9jYXRjaDt2YXIgbmI9ZW52Ll9lbXNjcmlwdGVuX21lbWNweV9iaWc7dmFyIG9iPWVudi5fZmlsZW5vO3ZhciBwYj1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfYm9vbDt2YXIgcWI9ZW52Ll9fX3Jlc3VtZUV4Y2VwdGlvbjt2YXIgcmI9ZW52Ll9fX2N4YV9maW5kX21hdGNoaW5nX2NhdGNoO3ZhciBzYj1lbnYuX3N5c2NvbmY7dmFyIHRiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nO3ZhciB1Yj1lbnYuX3N0cmZ0aW1lO3ZhciB2Yj1lbnYuX19hcnJheVN1bTt2YXIgd2I9ZW52Ll9fX2N4YV90aHJvdzt2YXIgeGI9ZW52Ll9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsO3ZhciB5Yj1lbnYuX19leGl0O3ZhciB6Yj1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfZnVuY3Rpb247dmFyIEFiPWVudi5fX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXY7dmFyIEJiPWVudi5fcHRocmVhZF9tdXRleF9kZXN0cm95O3ZhciBDYj1lbnYuX3B0aHJlYWRfbXV0ZXhfdW5sb2NrO3ZhciBEYj1lbnYuX2ZyZWFkO3ZhciBFYj1lbnYuX3B0aHJlYWRfY29uZF9icm9hZGNhc3Q7dmFyIEZiPWVudi5fbWtwb3J0O3ZhciBHYj1lbnYuX3NwcmludGY7dmFyIEhiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9jbGFzczt2YXIgSWI9ZW52Ll92YXNwcmludGY7dmFyIEpiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZzt2YXIgS2I9ZW52Ll93cml0ZTt2YXIgTGI9ZW52Ll9faXNMZWFwWWVhcjt2YXIgTWI9ZW52Ll9fc2NhblN0cmluZzt2YXIgTmI9ZW52Ll9zdHJlcnJvcjt2YXIgT2I9ZW52Ll9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yO3ZhciBQYj1lbnYuX3JlY3Y7dmFyIFFiPWVudi5fdnNucHJpbnRmO3ZhciBSYj1lbnYuX19aTlN0OWV4Y2VwdGlvbkQyRXY7dmFyIFNiPWVudi5fY29weXNpZ247dmFyIFRiPWVudi5fZmdldGM7dmFyIFViPWVudi5fX19jeGFfZG9lc19pbmhlcml0O3ZhciBWYj1lbnYuX2ZyZWVsb2NhbGU7dmFyIFdiPWVudi5fcmVhZDt2YXIgWGI9ZW52Ll9hYm9ydDt2YXIgWWI9ZW52Ll9jYXRjbG9zZTt2YXIgWmI9ZW52Ll9md3JpdGU7dmFyIF9iPWVudi5fdGltZTt2YXIgJGI9ZW52Ll9wdGhyZWFkX211dGV4X2xvY2s7dmFyIGFjPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9mbG9hdDt2YXIgYmM9ZW52Ll9wcmVhZDt2YXIgY2M9ZW52Ll9hdGV4aXQ7dmFyIGRjPWVudi5fY2F0b3Blbjt2YXIgZWM9ZW52Ll9leGl0O3ZhciBmYz1lbnYuX19nZXRGbG9hdDt2YXIgZ2M9MC4wOwovLyBFTVNDUklQVEVOX1NUQVJUX0ZVTkNTCmZ1bmN0aW9uIEFjKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2k9aSthfDA7aT1pKzcmLTg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBCYygpe3JldHVybiBpfDB9ZnVuY3Rpb24gQ2MoYSl7YT1hfDA7aT1hfWZ1bmN0aW9uIERjKGEsYil7YT1hfDA7Yj1ifDA7aWYoKHR8MCk9PTApe3Q9YTt1PWJ9fWZ1bmN0aW9uIEVjKGIpe2I9YnwwO2Fbaz4+MF09YVtiPj4wXTthW2srMT4+MF09YVtiKzE+PjBdO2FbaysyPj4wXT1hW2IrMj4+MF07YVtrKzM+PjBdPWFbYiszPj4wXX1mdW5jdGlvbiBGYyhiKXtiPWJ8MDthW2s+PjBdPWFbYj4+MF07YVtrKzE+PjBdPWFbYisxPj4wXTthW2srMj4+MF09YVtiKzI+PjBdO2FbayszPj4wXT1hW2IrMz4+MF07YVtrKzQ+PjBdPWFbYis0Pj4wXTthW2srNT4+MF09YVtiKzU+PjBdO2Fbays2Pj4wXT1hW2IrNj4+MF07YVtrKzc+PjBdPWFbYis3Pj4wXX1mdW5jdGlvbiBHYyhhKXthPWF8MDtJPWF9ZnVuY3Rpb24gSGMoKXtyZXR1cm4gSXwwfWZ1bmN0aW9uIEljKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtmPWk7aT1pKzE2fDA7bT1mO2w9U2MoamgoU2MoODM1Miw1MTY4KXwwLGUpfDAsNTE4NCl8MDtqPWNbbCsoKGNbKGNbbD4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO2g9ais0fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1ttPj4yXT0xMzQ1NjtjW20rND4+Ml09MjA4O2NbbSs4Pj4yXT0wO2NnKDEzNDU2LG0pfW09KGNbMTM0NjA+PjJdfDApKyAtMXwwO249Y1tqKzg+PjJdfDA7aWYoKGNbaisxMj4+Ml18MCktbj4+Mj4+PjA+bT4+PjA/KGs9Y1tuKyhtPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywxMCl8MDtuPWNbaD4+Ml18MDtjW2g+PjJdPW4rIC0xO2lmKChufDApPT0wKXtsY1tjWyhjW2o+PjJdfDApKzg+PjJdJjI1NV0oail9bGgobCxrKTtZZyhsKTt3aGlsZSgxKXtoPXVuKDIwKXwwO2lmKChofDApIT0wKXticmVha31oPWNbNTY2Nl18MDtjWzU2NjZdPWgrMDtpZigoaHwwKT09MCl7Zz0xNDticmVha31zY1toJjMxXSgpfWlmKChnfDApPT0xNCl7bj1YYSg0KXwwO2Nbbj4+Ml09MjI2ODA7d2IobnwwLDIyNzI4LDIwNil9Y1toPj4yXT1kO2NbaCs0Pj4yXT1lO2NbaCs4Pj4yXT0wO2FbaCsxMj4+MF09MDthW2grMTM+PjBdPTA7Y1toKzE2Pj4yXT0wO3doaWxlKDEpe2Q9dW4oMTYpfDA7aWYoKGR8MCkhPTApe2JyZWFrfWU9Y1s1NjY2XXwwO2NbNTY2Nl09ZSswO2lmKChlfDApPT0wKXtnPTIwO2JyZWFrfXNjW2UmMzFdKCl9aWYoKGd8MCk9PTIwKXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1jW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2Q+PjJdPTc0MDg7Y1tkKzEyPj4yXT1oO2NbYj4+Ml09aDtuPWIrNHwwO2U9Y1tuPj4yXXwwO2Nbbj4+Ml09ZDtpZigoZXwwKSE9MCl7bT1lKzR8MDtuPWNbbT4+Ml18MDtjW20+PjJdPW4rIC0xO2lmKChufDApPT0wPyhsY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSksbT1lKzh8MCxuPWNbbT4+Ml18MCxjW20+PjJdPW4rIC0xLChufDApPT0wKTowKXtsY1tjWyhjW2U+PjJdfDApKzE2Pj4yXSYyNTVdKGUpfWg9Y1tiPj4yXXwwfXdoaWxlKDEpe2U9dW4oMzUyKXwwO2lmKChlfDApIT0wKXticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7Zz0zMTticmVha31zY1tlJjMxXSgpfWlmKChnfDApPT0zMSl7bj1YYSg0KXwwO2Nbbj4+Ml09MjI2ODA7d2IobnwwLDIyNzI4LDIwNil9Y1tlPj4yXT1oO2NbZSs0Pj4yXT1oO2NbZSs4Pj4yXT0wO2NbZSsxMj4+Ml09MDtqPXVuKDEwNDg2NDQpfDA7aD1qKzY4Ji02NDtjW2grIC00Pj4yXT1qO2NbZSsxNj4+Ml09aDtoPWUrMjc5fDA7YVtoPj4wXT0wO2FbaCsxPj4wXT0wO2g9ZSsyODF8MDthW2g+PjBdPTA7YVtoKzE+PjBdPTA7YVtoKzI+PjBdPTA7YVtoKzM+PjBdPTA7aD1lKzM0NHwwO2o9ZSsyODh8MDtkPWorNTZ8MDtkb3tjW2o+PjJdPTA7aj1qKzR8MH13aGlsZSgoanwwKTwoZHwwKSk7bj1oO2Nbbj4+Ml09LTE7Y1tuKzQ+PjJdPS0xO29lKGUpO3doaWxlKDEpe2Q9dW4oMTYpfDA7aWYoKGR8MCkhPTApe2JyZWFrfWQ9Y1s1NjY2XXwwO2NbNTY2Nl09ZCswO2lmKChkfDApPT0wKXtnPTM3O2JyZWFrfXNjW2QmMzFdKCl9aWYoKGd8MCk9PTM3KXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1jW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2Q+PjJdPTcxMjg7Y1tkKzEyPj4yXT1lO2NbYis4Pj4yXT1lO249YisxMnwwO2c9Y1tuPj4yXXwwO2Nbbj4+Ml09ZDtpZigoZ3wwKT09MCl7aT1mO3JldHVybn1tPWcrNHwwO249Y1ttPj4yXXwwO2NbbT4+Ml09bisgLTE7aWYoKG58MCkhPTApe2k9ZjtyZXR1cm59bGNbY1soY1tnPj4yXXwwKSs4Pj4yXSYyNTVdKGcpO209Zys4fDA7bj1jW20+PjJdfDA7Y1ttPj4yXT1uKyAtMTtpZigobnwwKSE9MCl7aT1mO3JldHVybn1sY1tjWyhjW2c+PjJdfDApKzE2Pj4yXSYyNTVdKGcpO2k9ZjtyZXR1cm59bj1YYSg0KXwwO2Nbbj4+Ml09MjEzMDQ7d2IobnwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gSmMoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7aD1pO2k9aSsxNzZ8MDtnPWg7az1oKzMyfDA7aj1oKzI0fDA7Zj1oKzEyfDA7Yj1jW2IrOD4+Ml18MDttPWIrMzM2fDA7Qj1tO0M9YisyNTl8MDtsPWIrMzIwfDA7aWYoKCEoKGNbQis0Pj4yXXwwKT09MD8oY1tCPj4yXXwwKT09KGRbQz4+MF18ZFtDKzE+PjBdPDw4fGRbQysyPj4wXTw8MTZ8ZFtDKzM+PjBdPDwyNHwwKTowKT8obj1jW2w+PjJdfDAsKG58MCkhPTApOjApPyhjW2IrMzEyPj4yXXwwKSE9MDowKXt6PW47Qj1jW3o+PjJdfDA7Qj1jW0I+PjJdfDA7bWNbQiYxMjddKHosZSk7ej1tO0I9ejtCPWNbQj4+Ml18MDt6PXorNHwwO3o9Y1t6Pj4yXXwwO3o9SW4oQnwwLHp8MCwxLDApfDA7Qj1JO0M9bTtBPUM7Y1tBPj4yXT16O0M9Qys0fDA7Y1tDPj4yXT1CO2k9aDtyZXR1cm59Y1tsPj4yXT0wO249YiszMjR8MDtwPWNbbj4+Ml18MDtjW24+PjJdPTA7aWYoKChwfDApIT0wPyhCPXArNHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApPyhsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCksQj1wKzh8MCxDPWNbQj4+Ml18MCxjW0I+PjJdPUMrIC0xLChDfDApPT0wKTowKXtsY1tjWyhjW3A+PjJdfDApKzE2Pj4yXSYyNTVdKHApfXM9YiszMTJ8MDtjW3M+PjJdPTA7cj1iKzMxNnwwO3A9Y1tyPj4yXXwwO2Nbcj4+Ml09MDtpZigoKHB8MCkhPTA/KEI9cCs0fDAsQz1jW0I+PjJdfDAsY1tCPj4yXT1DKyAtMSwoQ3wwKT09MCk6MCk/KGxjW2NbKGNbcD4+Ml18MCkrOD4+Ml0mMjU1XShwKSxCPXArOHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApe2xjW2NbKGNbcD4+Ml18MCkrMTY+PjJdJjI1NV0ocCl9d2hpbGUoMSl7cD11bigxMil8MDtpZigocHwwKSE9MCl7YnJlYWt9cD1jWzU2NjZdfDA7Y1s1NjY2XT1wKzA7aWYoKHB8MCk9PTApe289MTU7YnJlYWt9c2NbcCYzMV0oKX1pZigob3wwKT09MTUpe0M9WGEoNCl8MDtjW0M+PjJdPTIyNjgwO3diKEN8MCwyMjcyOCwyMDYpfWNbcD4+Ml09Yis0O2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0tMTt3aGlsZSgxKXt0PXVuKDE2KXwwO2lmKCh0fDApIT0wKXticmVha310PWNbNTY2Nl18MDtjWzU2NjZdPXQrMDtpZigodHwwKT09MCl7bz0yMTticmVha31zY1t0JjMxXSgpfWlmKChvfDApPT0yMSl7Qz1YYSg0KXwwO2NbQz4+Ml09MjI2ODA7d2IoQ3wwLDIyNzI4LDIwNil9Y1t0KzQ+PjJdPTA7Y1t0Kzg+PjJdPTA7Y1t0Pj4yXT00ODQwO2NbdCsxMj4+Ml09cDtjW3M+PjJdPXA7dT1jW3I+PjJdfDA7Y1tyPj4yXT10O2lmKCh1fDApIT0wKXtCPXUrNHwwO0M9Y1tCPj4yXXwwO2NbQj4+Ml09QysgLTE7aWYoKEN8MCk9PTA/KGxjW2NbKGNbdT4+Ml18MCkrOD4+Ml0mMjU1XSh1KSxCPXUrOHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApe2xjW2NbKGNbdT4+Ml18MCkrMTY+PjJdJjI1NV0odSl9cD1jW3M+PjJdfDB9eT1rKzY0fDA7cz1rKzh8MDtjW3M+PjJdPTQ1MjA7dT1rKzEyfDA7Y1trPj4yXT00NjUyO2NbeT4+Ml09NDY3MjtjW2srND4+Ml09MDtyPWsrNjR8MDtjW2srODg+PjJdPXU7Y1trKzgwPj4yXT0wO2Nbays4ND4+Ml09MDtjW2srNjg+PjJdPTQwOTg7Y1trKzc2Pj4yXT0wO2Nbays3Mj4+Ml09Njt4PWsrOTJ8MDt0PWsrOTZ8MDt3PXQrNDB8MDtkb3tjW3Q+PjJdPTA7dD10KzR8MH13aGlsZSgodHwwKTwod3wwKSk7WGsoeCk7Y1trKzEzNj4+Ml09MDtjW2srMTQwPj4yXT0tMTtjW2s+PjJdPTQ1MDA7Y1t5Pj4yXT00NTQwO2Nbcz4+Ml09NDUyMDtjW3U+PjJdPTEwNjY0O3Q9aysxNnwwO1hrKHQpO3g9aysyMHwwO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbeCsxMj4+Ml09MDtjW3grMTY+PjJdPTA7Y1t4KzIwPj4yXT0wO2NbdT4+Ml09NDY4ODt1PWsrNDR8MDt5PWsrNjB8MDtjW3UrMD4+Ml09MDtjW3UrND4+Ml09MDtjW3UrOD4+Ml09MDtjW3UrMTI+PjJdPTA7Y1t5Pj4yXT0yNDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDthW3UrMT4+MF09MDtpZigoYVt1Pj4wXSYxKT09MCl7YVt1Pj4wXT0wfWVsc2V7Y1trKzQ4Pj4yXT0wfXc9ays1NnwwO2Nbdz4+Ml09MDt6PWFbdT4+MF18MDtpZigoeiYxKT09MCl7QT11KygoeiYyNTUpPj4+MSkrMXwwO2Nbdz4+Ml09QTt6PXUrMXwwfWVsc2V7ej1jW2srNTI+PjJdfDA7QT16KyhjW2srNDg+PjJdfDApfDA7Y1t3Pj4yXT1BfWNbeD4+Ml09ejtjW2srMjQ+PjJdPXo7Y1trKzI4Pj4yXT1BO0M9YVt1Pj4wXXwwO2lmKChDJjEpPT0wKXt6PShDJjI1NSk+Pj4xO2Nbdz4+Ml09dSt6KzE7QT0xMH1lbHNle3o9Y1trKzQ4Pj4yXXwwO2Nbdz4+Ml09KGNbays1Mj4+Ml18MCkrejtBPWNbdT4+Ml18MDtDPUEmMjU1O0E9KEEmLTIpKyAtMXwwfUI9KEMmMSk9PTA7aWYoQil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1trKzQ4Pj4yXXwwfWRve2lmKCEoQz4+PjA8QT4+PjApKXtpZihCKXthW3UrQSsxPj4wXT0wO2FbdT4+MF09QTw8MTticmVha31lbHNle2FbKGNbays1Mj4+Ml18MCkrQT4+MF09MDtjW2srNDg+PjJdPUE7YnJlYWt9fWVsc2V7aGcodSxBLUN8MCl9fXdoaWxlKDApO0I9YVt1Pj4wXXwwO2lmKChCJjEpPT0wKXtBPXUrMXwwO0I9KEImMjU1KT4+PjF9ZWxzZXtBPWNbays1Mj4+Ml18MDtCPWNbays0OD4+Ml18MH1DPWsrMzZ8MDtjW0M+PjJdPUE7Y1trKzMyPj4yXT1BO2Nbays0MD4+Ml09QStCO2lmKChjW3k+PjJdJjN8MCkhPTApe2NbQz4+Ml09QSt6fWlmKCEoKGFbZz4+MF0mMSk9PTApPyh2PWNbZys4Pj4yXXwwLCh2fDApIT0wKTowKXt2bih2KX1BPWNbYiszMDA+PjJdfDA7dj1jW2IrMzA0Pj4yXXwwO2lmKChBfDApIT0odnwwKSl7ej1rKzh8MDtkb3tCPWNbQT4+Ml18MDtDPWNbQSs0Pj4yXXwwO0Q9Y1tBKzg+PjJdfDA7aWgoU2MoaWgoU2MoaWgoU2Moeiw0NDY0KXwwLEQpfDAsNDQ3Mil8MCxCKXwwLDQ0ODApfDAsQyl8MDtBPUErMTJ8MH13aGlsZSgoQXwwKSE9KHZ8MCkpfXY9Y1t5Pj4yXXwwO2Rve2lmKCh2JjE2fDApPT0wKXtpZigodiY4fDApPT0wKXtjW2YrMD4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDticmVha314PWNbeD4+Ml18MDt3PWNbaysyOD4+Ml18MDt2PXg7QT13LXZ8MDtpZihBPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWRve2lmKEE+Pj4wPDExKXthW2Y+PjBdPUE8PDE7Qj1mKzF8MH1lbHNle3o9QSsxNiYtMTY7eT0oenwwKT09MD8xOno7d2hpbGUoMSl7Qj11bih5KXwwO2lmKChCfDApIT0wKXtvPTkzO2JyZWFrfUI9Y1s1NjY2XXwwO2NbNTY2Nl09QiswO2lmKChCfDApPT0wKXticmVha31zY1tCJjMxXSgpfWlmKChvfDApPT05Myl7Y1tmKzg+PjJdPUI7Y1tmPj4yXT16fDE7Y1tmKzQ+PjJdPUE7YnJlYWt9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKCh4fDApIT0od3wwKSl7bz1CO3doaWxlKDEpe2Fbbz4+MF09YVt4Pj4wXXwwO3g9eCsxfDA7aWYoKHh8MCk9PSh3fDApKXticmVha31lbHNle289bysxfDB9fUI9QisodysoMC12KSl8MH1hW0I+PjBdPTB9ZWxzZXt4PWNbdz4+Ml18MDt2PWNbayszNj4+Ml18MDtpZih4Pj4+MDx2Pj4+MCl7Y1t3Pj4yXT12fWVsc2V7dj14fXg9Y1trKzMyPj4yXXwwO3c9eDt6PXYtd3wwO2lmKHo+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoej4+PjA8MTEpe2FbZj4+MF09ejw8MTtCPWYrMXwwfWVsc2V7eT16KzE2Ji0xNjtBPSh5fDApPT0wPzE6eTt3aGlsZSgxKXtCPXVuKEEpfDA7aWYoKEJ8MCkhPTApe289NzY7YnJlYWt9Qj1jWzU2NjZdfDA7Y1s1NjY2XT1CKzA7aWYoKEJ8MCk9PTApe2JyZWFrfXNjW0ImMzFdKCl9aWYoKG98MCk9PTc2KXtjW2YrOD4+Ml09QjtjW2Y+PjJdPXl8MTtjW2YrND4+Ml09ejticmVha31EPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKHh8MCkhPSh2fDApKXtvPUI7d2hpbGUoMSl7YVtvPj4wXT1hW3g+PjBdfDA7eD14KzF8MDtpZigoeHwwKT09KHZ8MCkpe2JyZWFrfWVsc2V7bz1vKzF8MH19Qj1CKyh2KygwLXcpKXwwfWFbQj4+MF09MH19d2hpbGUoMCk7Y1trPj4yXT00NTAwO2Nbays2ND4+Ml09NDU0MDtjW3M+PjJdPTQ1MjA7bz1rKzEyfDA7Y1tvPj4yXT00Njg4O2lmKCEoKGFbdT4+MF0mMSk9PTApPyhxPWNbays1Mj4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9Y1tvPj4yXT0xMDY2NDtvPWNbdD4+Ml18MDtDPW8rNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1yZyhyKTtxPWFbZj4+MF18MDtyPShxJjEpPT0wO2lmKHIpe3Q9KHEmMjU1KT4+PjE7dj1mKzF8MH1lbHNle3Q9Y1tmKzQ+PjJdfDA7dj1jW2YrOD4+Ml18MH1zPXQ+Pj4wPjc7bz1zPzc6dDthOmRve2lmKChvfDApPT0wKXtvPTExMH1lbHNle3U9MTkyO3doaWxlKDEpe2lmKChhW3Y+PjBdfDApIT0oYVt1Pj4wXXwwKSl7bz0xMzA7YnJlYWsgYX1vPW8rIC0xfDA7aWYoKG98MCk9PTApe289MTEwO2JyZWFrfWVsc2V7dj12KzF8MDt1PXUrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xMTApe2lmKHQ+Pj4wPjYmKHNeMSkpe3doaWxlKDEpe2o9dW4oNDc4OCl8MDtpZigoanwwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe289MTE0O2JyZWFrfXNjW2cmMzFdKCl9aWYoKG98MCk9PTExNCl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZmQoaik7YVtqKzQ3ODQ+PjBdPTE7d2hpbGUoMSl7Zz11bigxMil8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe289MTIxO2JyZWFrfXNjW2cmMzFdKCl9aWYoKG98MCk9PTEyMSl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9Y1tnPj4yXT0zNjA4O2NbZys0Pj4yXT1wO2NbZys4Pj4yXT1qO3doaWxlKDEpe2o9dW4oMTYpfDA7aWYoKGp8MCkhPTApe289MTI5O2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXticmVha31zY1tqJjMxXSgpfWlmKChvfDApPT0xMjkpe2Nbais0Pj4yXT0wO2Nbais4Pj4yXT0wO2Nbaj4+Ml09Mzg3MjtjW2orMTI+PjJdPWc7YnJlYWt9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZWxzZXtvPTEzMH19fXdoaWxlKDApO2I6ZG97aWYoKG98MCk9PTEzMCl7aWYocil7dD0ocSYyNTUpPj4+MTt3PWYrMXwwfWVsc2V7dD1jW2YrND4+Ml18MDt3PWNbZis4Pj4yXXwwfXM9dD4+PjA+MTM7dT1zPzEzOnQ7Yzpkb3tpZigodXwwKT09MCl7bz0xMzZ9ZWxzZXt2PTIwMDt3aGlsZSgxKXtpZigoYVt3Pj4wXXwwKSE9KGFbdj4+MF18MCkpe2JyZWFrIGN9dT11KyAtMXwwO2lmKCh1fDApPT0wKXtvPTEzNjticmVha31lbHNle3c9dysxfDA7dj12KzF8MH19fX13aGlsZSgwKTtkb3tpZigob3wwKT09MTM2KXtpZighKHQ+Pj4wPjEyJihzXjEpKSl7YnJlYWt9d2hpbGUoMSl7aj11big1MTE2KXwwO2lmKChqfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNDA7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTQwKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1mZChqKTtlZChqKzQ3ODR8MCk7Y1tqKzQ5NTI+PjJdPTMyO2Nbais0OTU2Pj4yXT05O2Nbais0OTYwPj4yXT04O2Nbais0OTY0Pj4yXT0wO2Nbais0OTg0Pj4yXT0wO2Nbais0OTg4Pj4yXT0wO2Nbais0OTkyPj4yXT0wO2Nbais1MDA4Pj4yXT0xO2Nbais1MDEyPj4yXT0yO2Nbais1MDA0Pj4yXT00MDk2O2Nbais1ZTM+PjJdPTQ7Y1tqKzQ5OTY+PjJdPTQ7Y1tqKzUwMTY+PjJdPTA7Y1tqKzUwMjA+PjJdPTA7Y1tqKzUwMjQ+PjJdPTA7Y1tqKzQ5Njg+PjJdPTMyO2Nbais0OTcyPj4yXT0wO2Nbais0OTc2Pj4yXT0tMjE0NzQ4MzY0ODtjW2orNDk4MD4+Ml09MjE0NzQ4MzY0NztjW2orNDk0OD4+Ml09MDtjW2orNTAzMj4+Ml09MzI7Y1tqKzUwMzY+PjJdPTk7Y1tqKzUwNDA+PjJdPTg7Y1tqKzUwNDQ+PjJdPTA7Y1tqKzUwNjQ+PjJdPTA7Y1tqKzUwNjg+PjJdPTA7Y1tqKzUwNzI+PjJdPTA7Y1tqKzUwODg+PjJdPTE7Y1tqKzUwOTI+PjJdPTI7Y1tqKzUwODQ+PjJdPTQwOTY7Y1tqKzUwODA+PjJdPTQ7Y1tqKzUwNzY+PjJdPTQ7Y1tqKzUwOTY+PjJdPTA7Y1tqKzUxMDA+PjJdPTA7Y1tqKzUxMDQ+PjJdPTA7Y1tqKzUwNDg+PjJdPTMyO2Nbais1MDUyPj4yXT0wO2Nbais1MDU2Pj4yXT0tMjE0NzQ4MzY0ODtjW2orNTA2MD4+Ml09MjE0NzQ4MzY0NztjW2orNTAyOD4+Ml09MDthW2orNTEwOD4+MF09MDthW2orNTEwOT4+MF09MDthW2orNTExMj4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNDg7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTQ4KXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTI2NjQ7Y1tnKzQ+PjJdPXA7Y1tnKzg+PjJdPWo7d2hpbGUoMSl7aj11bigxNil8MDtpZigoanwwKSE9MCl7bz0xNTY7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKG98MCk9PTE1Nil7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7Y1tqPj4yXT0yOTUyO2NbaisxMj4+Ml09ZzticmVhayBifUQ9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihyKXt0PShxJjI1NSk+Pj4xO3Y9ZisxfDB9ZWxzZXt0PWNbZis0Pj4yXXwwO3Y9Y1tmKzg+PjJdfDB9cz10Pj4+MD4xMzt1PXM/MTM6dDtkOmRve2lmKCh1fDApPT0wKXtvPTE2M31lbHNle3c9MjE2O3doaWxlKDEpe2lmKChhW3Y+PjBdfDApIT0oYVt3Pj4wXXwwKSl7YnJlYWsgZH11PXUrIC0xfDA7aWYoKHV8MCk9PTApe289MTYzO2JyZWFrfWVsc2V7dj12KzF8MDt3PXcrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xNjMpe2lmKCEodD4+PjA+MTImKHNeMSkpKXticmVha313aGlsZSgxKXtqPXVuKDUxMDQpfDA7aWYoKGp8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtvPTE2NzticmVha31zY1tnJjMxXSgpfWlmKChvfDApPT0xNjcpe0Q9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfWZkKGopO2JkKGorNDc4NHwwKTthW2orNTEwMD4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNzU7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTc1KXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTE3MjA7Y1tnKzQ+PjJdPXA7Y1tnKzg+PjJdPWo7d2hpbGUoMSl7aj11bigxNil8MDtpZigoanwwKSE9MCl7bz0xODM7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKG98MCk9PTE4Myl7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7Y1tqPj4yXT0yMDA4O2NbaisxMj4+Ml09ZzticmVhayBifUQ9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihyKXtyPShxJjI1NSk+Pj4xO3Q9ZisxfDB9ZWxzZXtyPWNbZis0Pj4yXXwwO3Q9Y1tmKzg+PjJdfDB9cT1yPj4+MD4xOTtzPXE/MTk6cjtlOmRve2lmKChzfDApPT0wKXtvPTE5MH1lbHNle3U9MjMyO3doaWxlKDEpe2lmKChhW3Q+PjBdfDApIT0oYVt1Pj4wXXwwKSl7YnJlYWsgZX1zPXMrIC0xfDA7aWYoKHN8MCk9PTApe289MTkwO2JyZWFrfWVsc2V7dD10KzF8MDt1PXUrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xOTApe2lmKCEocj4+PjA+MTgmKHFeMSkpKXticmVha313aGlsZSgxKXtqPXVuKDU0MzIpfDA7aWYoKGp8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtvPTE5NDticmVha31zY1tnJjMxXSgpfWlmKChvfDApPT0xOTQpe0Q9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfWZkKGopO2VkKGorNDc4NHwwKTtjW2orNDk1Mj4+Ml09MzI7Y1tqKzQ5NTY+PjJdPTk7Y1tqKzQ5NjA+PjJdPTg7Y1tqKzQ5NjQ+PjJdPTA7Y1tqKzQ5ODQ+PjJdPTA7Y1tqKzQ5ODg+PjJdPTA7Y1tqKzQ5OTI+PjJdPTA7Y1tqKzUwMDg+PjJdPTE7Y1tqKzUwMTI+PjJdPTI7Y1tqKzUwMDQ+PjJdPTQwOTY7Y1tqKzVlMz4+Ml09NDtjW2orNDk5Nj4+Ml09NDtjW2orNTAxNj4+Ml09MDtjW2orNTAyMD4+Ml09MDtjW2orNTAyND4+Ml09MDtjW2orNDk2OD4+Ml09MzI7Y1tqKzQ5NzI+PjJdPTA7Y1tqKzQ5NzY+PjJdPS0yMTQ3NDgzNjQ4O2Nbais0OTgwPj4yXT0yMTQ3NDgzNjQ3O2Nbais0OTQ4Pj4yXT0wO2Nbais1MDMyPj4yXT0zMjtjW2orNTAzNj4+Ml09OTtjW2orNTA0MD4+Ml09ODtjW2orNTA0ND4+Ml09MDtjW2orNTA2ND4+Ml09MDtjW2orNTA2OD4+Ml09MDtjW2orNTA3Mj4+Ml09MDtjW2orNTA4OD4+Ml09MTtjW2orNTA5Mj4+Ml09MjtjW2orNTA4ND4+Ml09NDA5NjtjW2orNTA4MD4+Ml09NDtjW2orNTA3Nj4+Ml09NDtjW2orNTA5Nj4+Ml09MDtjW2orNTEwMD4+Ml09MDtjW2orNTEwND4+Ml09MDtjW2orNTA0OD4+Ml09MzI7Y1tqKzUwNTI+PjJdPTA7Y1tqKzUwNTY+PjJdPS0yMTQ3NDgzNjQ4O2Nbais1MDYwPj4yXT0yMTQ3NDgzNjQ3O2Nbais1MDI4Pj4yXT0wO2Fbais1MTA4Pj4wXT0wO2Fbais1MTA5Pj4wXT0wO2JkKGorNTExMnwwKTthW2orNTQyOD4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0yMDM7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MjAzKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTQyNDtjW2crND4+Ml09cDtjW2crOD4+Ml09ajt3aGlsZSgxKXtqPXVuKDE2KXwwO2lmKChqfDApIT0wKXtvPTIxMTticmVha31qPWNbNTY2Nl18MDtjWzU2NjZdPWorMDtpZigoanwwKT09MCl7YnJlYWt9c2NbaiYzMV0oKX1pZigob3wwKT09MjExKXtjW2orND4+Ml09MDtjW2orOD4+Ml09MDtjW2o+PjJdPTEwMDg7Y1tqKzEyPj4yXT1nO2JyZWFrIGJ9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2g9U2MoODM1MiwyNTYpfDA7YVtrPj4wXT0wO2Nbays0Pj4yXT1oO2U9Y1soY1toPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2grKGUrMTYpPj4yXXwwKT09MCl7ZT1jW2grKGUrNzIpPj4yXXwwO2lmKChlfDApIT0wKXtZZyhlKX1hW2s+PjBdPTE7ZT1hW2Y+PjBdfDA7ZG97aWYoKGUmMSk9PTApe289KGUmMjU1KT4+PjE7bT1jWyhjW2g+PjJdfDApKyAtMTI+PjJdfDA7bD1jW2grKG0rMjQpPj4yXXwwO249ZisxfDA7aWYoKGNbaCsobSs0KT4+Ml0mMTc2fDApIT0zMil7ZT1uO2I9bzticmVha31lPW47Yj1vO249ZitvKzF8MH1lbHNle249Y1tmKzQ+PjJdfDA7bT1jWyhjW2g+PjJdfDApKyAtMTI+PjJdfDA7bD1jW2grKG0rMjQpPj4yXXwwO2Y9Y1tmKzg+PjJdfDA7aWYoKGNbaCsobSs0KT4+Ml0mMTc2fDApIT0zMil7ZT1mO2I9bjtuPWY7YnJlYWt9ZT1mO2I9bjtuPWYrbnwwfX13aGlsZSgwKTtmPWgrbXwwO289aCsobSs3Nil8MDtwPWNbbz4+Ml18MDtmOmRve2lmKChwfDApPT0tMSl7cD1jW2grKG0rMjgpPj4yXXwwO209cCs0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tnPj4yXT0xMzQ1NjtjW2crND4+Ml09MjA4O2NbZys4Pj4yXT0wO2NnKDEzNDU2LGcpfXE9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3I9Y1twKzg+PjJdfDA7ZG97aWYoKGNbcCsxMj4+Ml18MCktcj4+Mj4+PjA+cT4+PjApe3E9Y1tyKyhxPDwyKT4+Ml18MDtpZigocXwwKT09MCl7YnJlYWt9cT14Y1tjWyhjW3E+PjJdfDApKzI4Pj4yXSY2M10ocSwzMil8MDtEPWNbbT4+Ml18MDtjW20+PjJdPUQrIC0xO2lmKChEfDApPT0wKXtsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCl9cD1xPDwyND4+MjQ7Y1tvPj4yXT1wO2JyZWFrIGZ9fXdoaWxlKDApO0Q9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtXYyhqLGwsZSxuLGUrYnwwLGYscCYyNTUpO2lmKChjW2o+PjJdfDApIT0wKXticmVha31EPWNbKGNbaD4+Ml18MCkrIC0xMj4+Ml18MDtxZyhoK0R8MCxjW2grKEQrMTYpPj4yXXw1KX19d2hpbGUoMCk7Z2goayk7Zj1jW2grKChjWyhjW2g+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtlPWYrNHwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZz4+Ml09MTM0NTY7Y1tnKzQ+PjJdPTIwODtjW2crOD4+Ml09MDtjZygxMzQ1NixnKX1qPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtnPWNbZis4Pj4yXXwwO2Rve2lmKChjW2YrMTI+PjJdfDApLWc+PjI+Pj4wPmo+Pj4wKXtnPWNbZysoajw8Mik+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWc9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcsMTApfDA7RD1jW2U+PjJdfDA7Y1tlPj4yXT1EKyAtMTtpZigoRHwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfWxoKGgsZyk7WWcoaCk7Zj1YYSg4KXwwO2NbZj4+Ml09OTkyODt3aGlsZSgxKXtnPXVuKDQ1KXwwO2lmKChnfDApIT0wKXtvPTI1MzticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0yNTE7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MjUxKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1lbHNlIGlmKChvfDApPT0yNTMpe2NbZys0Pj4yXT0zMjtjW2c+PjJdPTMyO3Q9ZysxMnwwO2NbZis0Pj4yXT10O2NbZys4Pj4yXT0wO3Q9dCswfDA7Zz0zMjB8MDt3PXQrMzN8MDtkb3thW3Q+PjBdPWFbZz4+MF18MDt0PXQrMXwwO2c9ZysxfDB9d2hpbGUoKHR8MCk8KHd8MCkpO2NbZj4+Ml09MzY4O3diKGZ8MCwzMDQsMjIpfX19d2hpbGUoMCk7RD1YYSg0KXwwO2NbRD4+Ml09MjEzMDQ7d2IoRHwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2Rve2lmKCEoKGFbZj4+MF0mMSk9PTApKXtmPWNbZis4Pj4yXXwwO2lmKChmfDApPT0wKXticmVha312bihmKX19d2hpbGUoMCk7Y1tsPj4yXT1nO2Y9Y1tuPj4yXXwwO2Nbbj4+Ml09ajtkb3tpZigoZnwwKSE9MCl7Qz1mKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXticmVha31sY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZik7Qz1mKzh8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXticmVha31sY1tjWyhjW2Y+PjJdfDApKzE2Pj4yXSYyNTVdKGYpfX13aGlsZSgwKTtBPWIrMzI4fDA7Qz1BO0M9SW4oY1tDPj4yXXwwLGNbQys0Pj4yXXwwLDEsMCl8MDtjW0E+PjJdPUM7Y1tBKzQ+PjJdPUk7QT1tO2NbQT4+Ml09MDtjW0ErND4+Ml09MDtBPWNbbD4+Ml18MDtDPWNbQT4+Ml18MDtDPWNbQz4+Ml18MDttY1tDJjEyN10oQSxlKTtBPW07Qz1BO0M9Y1tDPj4yXXwwO0E9QSs0fDA7QT1jW0E+PjJdfDA7QT1JbihDfDAsQXwwLDEsMCl8MDtDPUk7RD1tO0I9RDtjW0I+PjJdPUE7RD1EKzR8MDtjW0Q+PjJdPUM7aT1oO3JldHVybn1mdW5jdGlvbiBLYyhhKXthPWF8MDthPShjW2ErOD4+Ml18MCkrMTI3fDA7cmV0dXJuIGRbYT4+MF18ZFthKzE+PjBdPDw4fGRbYSsyPj4wXTw8MTZ8ZFthKzM+PjBdPDwyNHwwfWZ1bmN0aW9uIExjKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTA7ZT1pO2Y9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9ZjthPW9jW2EmMTI3XShiKXwwO2k9ZTtyZXR1cm4gYXwwfWVsc2V7YT1jWyhjW2I+PjJdfDApK2Y+PjJdfDA7YT1vY1thJjEyN10oYil8MDtpPWU7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBNYyhhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTA7Zj1pO2c9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9ZzttY1thJjEyN10oYixlKTtpPWY7cmV0dXJufWVsc2V7YT1jWyhjW2I+PjJdfDApK2c+PjJdfDA7bWNbYSYxMjddKGIsZSk7aT1mO3JldHVybn19ZnVuY3Rpb24gTmMoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTA7Zz1pO2g9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9aDtxY1thJjMxXShiLGUsZik7aT1nO3JldHVybn1lbHNle2E9Y1soY1tiPj4yXXwwKStoPj4yXXwwO3FjW2EmMzFdKGIsZSxmKTtpPWc7cmV0dXJufX1mdW5jdGlvbiBPYygpe3ZhciBhPTAsYj0wLGQ9MDtiPWk7d2hpbGUoMSl7ZD11bigxNil8MDtpZigoZHwwKSE9MCl7YT03O2JyZWFrfWQ9Y1s1NjY2XXwwO2NbNTY2Nl09ZCswO2lmKChkfDApPT0wKXticmVha31zY1tkJjMxXSgpfWlmKChhfDApPT03KXtjW2QrMD4+Ml09MDtjW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2QrMTI+PjJdPTA7aT1iO3JldHVybiBkfDB9ZD1YYSg0KXwwO2NbZD4+Ml09MjI2ODA7d2IoZHwwLDIyNzI4LDIwNik7cmV0dXJuIDB9ZnVuY3Rpb24gUGMoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1rY1thJjMxXSgpfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gUWMoYSl7YT1hfDA7cmV0dXJuIDcyfWZ1bmN0aW9uIFJjKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWQ9Y1thKzEyPj4yXXwwO2lmKCgoZHwwKSE9MD8oZj1kKzR8MCxlPWNbZj4+Ml18MCxjW2Y+PjJdPWUrIC0xLChlfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGU9ZCs4fDAsZj1jW2U+PjJdfDAsY1tlPj4yXT1mKyAtMSwoZnwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX1kPWNbYSs0Pj4yXXwwO2lmKCgoZHwwKSE9MD8oZT1kKzR8MCxmPWNbZT4+Ml18MCxjW2U+PjJdPWYrIC0xLChmfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGU9ZCs4fDAsZj1jW2U+PjJdfDAsY1tlPj4yXT1mKyAtMSwoZnwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX12bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFNjKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtmPWk7aT1pKzMyfDA7bz1mO2U9ZisxNnwwO2c9ZisxMnwwO2FbZT4+MF09MDtjW2UrND4+Ml09YjtwPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtpZigoY1tiKyhwKzE2KT4+Ml18MCk9PTApe2g9Y1tiKyhwKzcyKT4+Ml18MDtpZigoaHwwKSE9MCl7WWcoaCk7cD1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDB9YVtlPj4wXT0xO2o9Sm4oZHwwKXwwO209Y1tiKyhwKzI0KT4+Ml18MDtpZigoY1tiKyhwKzQpPj4yXSYxNzZ8MCk9PTMyKXtoPWQranwwfWVsc2V7aD1kfWw9YitwfDA7bj1iKyhwKzc2KXwwO3E9Y1tuPj4yXXwwO2Rve2lmKChxfDApPT0tMSl7cD1jW2IrKHArMjgpPj4yXXwwO3E9cCs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tvPj4yXT0xMzQ1NjtjW28rND4+Ml09MjA4O2Nbbys4Pj4yXT0wO2NnKDEzNDU2LG8pfXI9KGNbMTM0NjA+PjJdfDApKyAtMXwwO289Y1twKzg+PjJdfDA7aWYoKGNbcCsxMj4+Ml18MCktbz4+Mj4+PjA+cj4+PjA/KGs9Y1tvKyhyPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywzMil8MDtyPWNbcT4+Ml18MDtjW3E+PjJdPXIrIC0xO2lmKChyfDApPT0wKXtsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCl9cT1rPDwyND4+MjQ7Y1tuPj4yXT1xO2JyZWFrfXI9WGEoNCl8MDtjW3I+PjJdPTIxMzA0O3diKHJ8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtXYyhnLG0sZCxoLGQranwwLGwscSYyNTUpO2lmKChjW2c+PjJdfDApPT0wKXtyPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK3J8MCxjW2IrKHIrMTYpPj4yXXw1KX19Z2goZSk7aT1mO3JldHVybiBifDB9ZnVuY3Rpb24gVGMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFVjKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gVmMoYSl7YT1hfDA7bWIoYXwwKXwwO09hKCl9ZnVuY3Rpb24gV2MoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtrPWk7aT1pKzE2fDA7bD1rO2lmKChkfDApPT0wKXtjW2I+PjJdPTA7aT1rO3JldHVybn1wPWU7bj1nLXB8MDtoPWgrMTJ8MDttPWNbaD4+Ml18MDtuPShtfDApPihufDApP20tbnwwOjA7bT1mO3A9bS1wfDA7aWYoKHB8MCk+MD8oaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsZSxwKXwwKSE9KHB8MCk6MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59ZG97aWYoKG58MCk+MCl7ZG97aWYobj4+PjA8MTEpe3A9bjw8MSYyNTU7YVtsPj4wXT1wO289bDtlPWwrMXwwfWVsc2V7cT1uKzE2Ji0xNjtwPShxfDApPT0wPzE6cTt3aGlsZSgxKXtlPXVuKHApfDA7aWYoKGV8MCkhPTApe289MTU7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKG98MCk9PTE1KXtjW2wrOD4+Ml09ZTtwPXF8MTtjW2w+PjJdPXA7Y1tsKzQ+PjJdPW47bz1sO3A9cCYyNTU7YnJlYWt9cT1YYSg0KXwwO2NbcT4+Ml09MjI2ODA7d2IocXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO05uKGV8MCxqfDAsbnwwKXwwO2FbZStuPj4wXT0wO2lmKChwJjEpPT0wKXtqPWwrMXwwfWVsc2V7aj1jW2wrOD4+Ml18MH1pZigoaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsaixuKXwwKT09KG58MCkpe2lmKChhW28+PjBdJjEpPT0wKXticmVha31sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXticmVha312bihsKTticmVha31jW2I+PjJdPTA7aWYoKGFbbz4+MF0mMSk9PTApe2k9aztyZXR1cm59Yj1jW2wrOD4+Ml18MDtpZigoYnwwKT09MCl7aT1rO3JldHVybn12bihiKTtpPWs7cmV0dXJufX13aGlsZSgwKTtsPWctbXwwO2lmKChsfDApPjA/KGhjW2NbKGNbZD4+Ml18MCkrNDg+PjJdJjYzXShkLGYsbCl8MCkhPShsfDApOjApe2NbYj4+Ml09MDtpPWs7cmV0dXJufWNbaD4+Ml09MDtjW2I+PjJdPWQ7aT1rO3JldHVybn1mdW5jdGlvbiBYYyhhKXthPWF8MDt2YXIgYj0wO2I9aTtfYyhhKzQ3Njh8MCk7X2MoYSs0NzM2fDApO19jKGErNDY4OHwwKTtfYyhhKzQ2NTZ8MCk7X2MoYSs0NjA4fDApO19jKGErNDU3NnwwKTtfYyhhKzQ1Mjh8MCk7X2MoYSs0NDk2fDApO19jKGErNDQ0OHwwKTtfYyhhKzQ0MTZ8MCk7WmMoYSs0MzAwfDApO1pjKGErNDIyMHwwKTtaYyhhKzQxNDB8MCk7WmMoYSs0MDYwfDApO1pjKGErMzk4MHwwKTtZYyhhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFljKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2Q9Y1thKzg5Nj4+Ml18MDtpZigoZHwwKSE9MCl7ZT1jW2QrOD4+Ml18MDtpZigoZXwwKSE9MCl7dm4oY1tlKyAtND4+Ml18MCl9ZT1jW2QrMTI+PjJdfDA7aWYoKGV8MCkhPTApe3ZuKGNbZSsgLTQ+PjJdfDApfWU9Y1tkKzE2Pj4yXXwwO2lmKChlfDApIT0wKXt2bihjW2UrIC00Pj4yXXwwKX12bihkKX1kPWNbYSs5MDA+PjJdfDA7aWYoKGR8MCk9PTApe2Q9MH1lbHNle2U9Y1tkKzg+PjJdfDA7aWYoKGV8MCkhPTApe3ZuKGNbZSsgLTQ+PjJdfDApfWU9Y1tkKzEyPj4yXXwwO2lmKChlfDApIT0wKXt2bihjW2UrIC00Pj4yXXwwKX1lPWNbZCsxNj4+Ml18MDtpZigoZXwwKSE9MCl7dm4oY1tlKyAtND4+Ml18MCl9dm4oZCk7ZD0wfWRve2U9Y1thKyhkPDwyKSs5MDQ+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZT1jW2ErKGQ8PDIpKzE5Mjg+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZT1jW2ErKGQ8PDIpKzI5NTI+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZD1kKzF8MH13aGlsZSgoZHwwKSE9MjU2KTtkPWNbYSs4NjA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzg2ND4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9YT1jW2ErODY4Pj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufXZuKGNbYSsgLTQ+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gWmMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2I9aTtkPWErMzZ8MDtlPWNbZD4+Ml18MDtmPWErNDB8MDtnPWNbZj4+Ml18MDtpZigoZ3wwKSE9KGV8MCkpe2Rve2NbZj4+Ml09ZysgLTQ0O2g9Y1tnKyAtMzY+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWg9Y1tnKyAtMzI+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWc9Y1tnKyAtMjg+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1tmPj4yXXwwfXdoaWxlKChnfDApIT0oZXwwKSl9Zj1hKzY4fDA7ZT1jW2Y+PjJdfDA7YT1hKzcyfDA7Zz1jW2E+PjJdfDA7aWYoKGd8MCk9PShlfDApKXtfYyhmKTtfYyhkKTtpPWI7cmV0dXJufWRve2NbYT4+Ml09ZysgLTQ0O2g9Y1tnKyAtMzY+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWg9Y1tnKyAtMzI+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWc9Y1tnKyAtMjg+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1thPj4yXXwwfXdoaWxlKChnfDApIT0oZXwwKSk7X2MoZik7X2MoZCk7aT1iO3JldHVybn1mdW5jdGlvbiBfYyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtiPWk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59ZT1hKzR8MDtmPWNbZT4+Ml18MDtpZigoZnwwKSE9KGR8MCkpe2Rve2NbZT4+Ml09ZisgLTQ0O2c9Y1tmKyAtMzY+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1tmKyAtMzI+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWY9Y1tmKyAtMjg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlPj4yXXwwfXdoaWxlKChmfDApIT0oZHwwKSk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59fXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gJGMoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2Q9Y1thKzU2Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSs2MD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErNjQ+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzEyPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxNj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9YT1jW2ErMjA+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oY1thKyAtND4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiBhZChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7ZD1jW2ErMjgwPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsyODQ+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzI4OD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMjM2Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsyNDA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzI0ND4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTkyPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxOTY+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzIwMD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTQ4Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxNTI+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzE1Nj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTA0Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxMDg+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzExMj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErNjA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzY0Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSs2OD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTY+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzIwPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1hPWNbYSsyND4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn12bihjW2ErIC00Pj4yXXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGJkKGIpe2I9YnwwO3ZhciBjPTAsZD0wO2M9aTtkPWIrOHwwO2FbYiswPj4wXT0wO2FbYisxPj4wXT0wO2FbYisyPj4wXT0wO2FbYiszPj4wXT0wO2FbYis0Pj4wXT0wO2FbYis1Pj4wXT0wO2FbYis2Pj4wXT0wO2NkKGQsMTI4KTtjZChiKzUyfDAsMjU2KTtjZChiKzk2fDAsMjU2KTtjZChiKzE0MHwwLDI1Nik7Y2QoYisxODR8MCwyNTYpO2NkKGIrMjI4fDAsMjU2KTtjZChiKzI3MnwwLDI1Nik7aT1jO3JldHVybn1mdW5jdGlvbiBjZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtlPWk7Y1tiPj4yXT1kO2FbYis0Pj4wXT0wO2o9Yis4fDA7Y1tqPj4yXT0wO2c9YisxMnwwO2NbZz4+Ml09MDtoPWIrMTZ8MDtjW2g+PjJdPTA7aWYoKGQrIC0yfDApPj4+MD4yMDQ2KXtiPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oMzgpfDA7aWYoKGV8MCkhPTApe2Y9ODticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZnwwKT09OCl7Y1tlKzQ+PjJdPTI1O2NbZT4+Ml09MjU7ZD1lKzEyfDA7Y1tiKzQ+PjJdPWQ7Y1tlKzg+PjJdPTA7ZT1kKzB8MDtkPTM4NHwwO2Y9ZSsyNnwwO2Rve2FbZT4+MF09YVtkPj4wXXwwO2U9ZSsxfDA7ZD1kKzF8MH13aGlsZSgoZXwwKTwoZnwwKSk7d2IoYnwwLDEwMDY0LDEwNil9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9Y1tiKzMyPj4yXT1kKyAtMTtpZihkPj4+MD4xNil7Zj0zO3doaWxlKDEpe2lmKDE8PGYrMj4+PjA8ZD4+PjApe2Y9ZisxfDB9ZWxzZXticmVha319az0xPDxmO2NbYiszNj4+Ml09aztjW2IrNDA+PjJdPTE1LWY7az11bigoazw8MikrNzZ8MCl8MDtmPWsrNjgmLTY0O2NbZisgLTQ+PjJdPWs7Y1toPj4yXT1mfWVsc2V7Y1toPj4yXT0wO2NbYis0MD4+Ml09MDtjW2IrMzY+PjJdPTB9az0oZDw8MikrNjh8MDtoPXVuKGspfDA7Zj1oKzY4Ji02NDtjW2YrIC00Pj4yXT1oO2Nbaj4+Ml09ZjtrPXVuKGspfDA7Zj1rKzY4Ji02NDtjW2YrIC00Pj4yXT1rO2NbZz4+Ml09ZjtjW2IrMjA+PjJdPTA7Zz1iKzI0fDA7Y1tnPj4yXT1kO2lmKChkfDApPT0wKXtkZChiKTtqPWNbYj4+Ml18MDtqPWorNnwwO2o9aj4+PjE7Y1tnPj4yXT1qO2s9YisyOHwwO2Nbaz4+Ml09ajtpPWU7cmV0dXJufWVsc2V7ZD0wfWRve2NbZisoZDw8Mik+PjJdPTE7ZD1kKzF8MH13aGlsZShkPj4+MDwoY1tiPj4yXXwwKT4+PjApO2RkKGIpO2o9Y1tiPj4yXXwwO2o9ais2fDA7aj1qPj4+MTtjW2c+PjJdPWo7az1iKzI4fDA7Y1trPj4yXT1qO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZGQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2Q9aTtlPWIrMjR8MDtoPWIrMjB8MDtrPShjW2g+PjJdfDApKyhjW2U+PjJdfDApfDA7Y1toPj4yXT1rO2lmKGs+Pj4wPjMyNzY4KXtjW2g+PjJdPTA7aWYoKGNbYj4+Ml18MCk9PTApe2s9MH1lbHNle2w9Y1tiKzEyPj4yXXwwO2o9MDtkb3tzPWwrKGo8PDIpfDA7az0oKGNbcz4+Ml18MCkrMXwwKT4+PjE7Y1tzPj4yXT1rO2s9aysoY1toPj4yXXwwKXwwO2NbaD4+Ml09aztqPWorMXwwfXdoaWxlKGo+Pj4wPChjW2I+PjJdfDApPj4+MCl9fWg9MjE0NzQ4MzY0OC8oaz4+PjApfDA7aWYoKGFbYis0Pj4wXXwwKT09MD8oZj1iKzM2fDAsKGNbZj4+Ml18MCkhPTApOjApe2lmKChjW2I+PjJdfDApIT0wKXtvPWNbYis4Pj4yXXwwO209Y1tiKzEyPj4yXXwwO2s9Yis0MHwwO249YisxNnwwO2o9MDtzPTA7bD0wO3doaWxlKDEpe3I9KGVhKGwsaCl8MCk+Pj4xNjtjW28rKGo8PDIpPj4yXT1yO2w9KGNbbSsoajw8Mik+PjJdfDApK2x8MDtyPXI+Pj4oY1trPj4yXXwwKTtpZihzPj4+MDxyPj4+MCl7cD1qKyAtMXwwO3E9Y1tuPj4yXXwwO2Rve3M9cysxfDA7Y1txKyhzPDwyKT4+Ml09cH13aGlsZSgoc3wwKSE9KHJ8MCkpfWVsc2V7cj1zfWo9aisxfDA7aWYoIShqPj4+MDwoY1tiPj4yXXwwKT4+PjApKXticmVha31lbHNle3M9cn19aD1jW24+PjJdfDA7Y1toPj4yXT0wO2lmKCEocj4+PjA+KGNbZj4+Ml18MCk+Pj4wKSl7Zz0xOH19ZWxzZXtoPWNbYisxNj4+Ml18MDtjW2g+PjJdPTA7cj0wO2c9MTh9aWYoKGd8MCk9PTE4KXtkb3tyPXIrMXwwO2NbaCsocjw8Mik+PjJdPShjW2I+PjJdfDApKyAtMX13aGlsZSghKHI+Pj4wPihjW2Y+PjJdfDApPj4+MCkpfXM9Y1tiPj4yXXwwO3I9Y1tlPj4yXXwwO3I9cio1fDA7cj1yPj4+MjtzPXM8PDM7cz1zKzQ4fDA7cT1yPj4+MD5zPj4+MDtyPXE/czpyO2NbZT4+Ml09cjtzPWIrMjh8MDtjW3M+PjJdPXI7aT1kO3JldHVybn1pZigoY1tiPj4yXXwwKT09MCl7cz0wO3I9Y1tlPj4yXXwwO3I9cio1fDA7cj1yPj4+MjtzPXM8PDM7cz1zKzQ4fDA7cT1yPj4+MD5zPj4+MDtyPXE/czpyO2NbZT4+Ml09cjtzPWIrMjh8MDtjW3M+PjJdPXI7aT1kO3JldHVybn1qPWNbYis4Pj4yXXwwO2s9Y1tiKzEyPj4yXXwwO2w9MDtnPTA7ZG97Y1tqKyhsPDwyKT4+Ml09KGVhKGcsaCl8MCk+Pj4xNjtnPShjW2srKGw8PDIpPj4yXXwwKStnfDA7bD1sKzF8MDtmPWNbYj4+Ml18MH13aGlsZShsPj4+MDxmPj4+MCk7cj1jW2U+PjJdfDA7cj1yKjV8MDtyPXI+Pj4yO3M9Zjw8MztzPXMrNDh8MDtxPXI+Pj4wPnM+Pj4wO3I9cT9zOnI7Y1tlPj4yXT1yO3M9YisyOHwwO2Nbcz4+Ml09cjtpPWQ7cmV0dXJufWZ1bmN0aW9uIGVkKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Q9aTthW2I+PjBdPTA7Y2QoYis0fDAsNTE2KTtlPWIrNDh8MDtjW2U+PjJdPTY7YVtiKzUyPj4wXT0wO2NbYis4MD4+Ml09NTtjW2IrNjQ+PjJdPTA7Y1tiKzg4Pj4yXT0wO2NbYis4ND4+Ml09MDtnPXVuKDkyKXwwO2Y9Zys2OCYtNjQ7Y1tmKyAtND4+Ml09ZztjW2IrNTY+PjJdPWY7Zj11big5Mil8MDtnPWYrNjgmLTY0O2NbZysgLTQ+PjJdPWY7Y1tiKzYwPj4yXT1nO2NbYis2OD4+Ml09MDtmPWIrNzJ8MDtjW2Y+PjJdPTY7aD0wO2Rve2NbZysoaDw8Mik+PjJdPTE7aD1oKzF8MH13aGlsZShoPj4+MDwoY1tlPj4yXXwwKT4+PjApO2RkKGUpO2U9KChjW2U+PjJdfDApKzZ8MCk+Pj4xO2NbZj4+Ml09ZTtjW2IrNzY+PjJdPWU7ZT1iKzkyfDA7Yj1lKzcyfDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KGJ8MCkpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZmQoZCl7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7Zz1kKzUyfDA7aD1kKzcyfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzc2fDA7Zz1kKzk2fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzEwMHwwO2g9ZCsxMjB8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrMTI0fDA7Zz1kKzE0NHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCsxNDh8MDtoPWQrMTY4fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzE3MnwwO2c9ZCsxOTJ8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrMTk2fDA7aD1kKzIxNnwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCsyMjB8MDtnPWQrMjQwfDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzI0NHwwO2g9ZCsyNjR8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrMjY4fDA7Zz1kKzI4OHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCsyOTJ8MDtoPWQrMzEyfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzMxNnwwO2c9ZCszMzZ8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrMzQwfDA7aD1kKzM2MHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCszNjR8MDtnPWQrMzg0fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzM4OHwwO2g9ZCs0MDh8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNDEyfDA7Zz1kKzQzMnwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs0MzZ8MDtoPWQrNDU2fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzQ2MHwwO2c9ZCs0ODB8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNDg0fDA7aD1kKzUwNHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs1MDh8MDtnPWQrNTI4fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzUzMnwwO2g9ZCs1NTJ8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNTU2fDA7Zz1kKzU3NnwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs1ODB8MDtoPWQrNjAwfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzYwNHwwO2c9ZCs2MjR8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNjI4fDA7aD1kKzY0OHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs2NTJ8MDtnPWQrNjcyfDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzY3NnwwO2g9ZCs2OTZ8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNzAwfDA7Zz1kKzcyMHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs3MjR8MDtoPWQrNzQ0fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzc0OHwwO2c9ZCs3Njh8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNzcyfDA7aD1kKzc5MnwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs3OTZ8MDtnPWQrODE2fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Y2QoZCs4NTJ8MCw2NCk7YVtkKzM5NzY+PjBdPTA7Zz1kKzIwfDA7aD1nKzMyfDA7ZG97YltnPj4xXT0wO2c9ZysyfDB9d2hpbGUoKGd8MCk8KGh8MCkpO3doaWxlKDEpe2c9dW4oNDQpfDA7aWYoKGd8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtmPTU7YnJlYWt9c2NbZyYzMV0oKX1pZigoZnwwKT09NSl7aD1YYSg0KXwwO2NbaD4+Ml09MjI2ODA7d2IoaHwwLDIyNzI4LDIwNil9Y2QoZywyNTYpO2NbZCs4OTY+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9MTI7YnJlYWt9c2NbZyYzMV0oKX1pZigoZnwwKT09MTIpe2g9WGEoNCl8MDtjW2g+PjJdPTIyNjgwO3diKGh8MCwyMjcyOCwyMDYpfWNkKGcsMjU2KTtjW2QrOTAwPj4yXT1nO2Y9ZCs4MjB8MDtjW2YrMD4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDtjW2YrMTI+PjJdPTA7Y1tmKzE2Pj4yXT0wO2NbZisyMD4+Ml09MDtjW2YrMjQ+PjJdPTA7Y1tmKzI4Pj4yXT0wO2Y9MDthOndoaWxlKDEpe3doaWxlKDEpe2c9dW4oNDQpfDA7aWYoKGd8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtmPTIwO2JyZWFrIGF9c2NbZyYzMV0oKX1jZChnLDI1Nik7Y1tkKyhmPDwyKSs5MDQ+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9Mjc7YnJlYWsgYX1zY1tnJjMxXSgpfWNkKGcsMjU2KTtjW2QrKGY8PDIpKzE5Mjg+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9MzQ7YnJlYWsgYX1zY1tnJjMxXSgpfWNkKGcsMjU2KTtjW2QrKGY8PDIpKzI5NTI+PjJdPWc7Zj1mKzF8MDtpZigoZnwwKT49MjU2KXtmPTM4O2JyZWFrfX1pZigoZnwwKT09MjApe2g9WGEoNCl8MDtjW2g+PjJdPTIyNjgwO3diKGh8MCwyMjcyOCwyMDYpfWVsc2UgaWYoKGZ8MCk9PTI3KXtoPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX1lbHNlIGlmKChmfDApPT0zNCl7aD1YYSg0KXwwO2NbaD4+Ml09MjI2ODA7d2IoaHwwLDIyNzI4LDIwNil9ZWxzZSBpZigoZnwwKT09Mzgpe2NbZCszOTg0Pj4yXT0xNjtjW2QrMzk4OD4+Ml09NDtjW2QrMzk5Mj4+Ml09ODtjW2QrMzk5Nj4+Ml09MDtjW2QrNDAxNj4+Ml09MDtjW2QrNDAyMD4+Ml09MDtjW2QrNDAyND4+Ml09MDtjW2QrNDA0MD4+Ml09MTtjW2QrNDA0ND4+Ml09MjtjW2QrNDAzNj4+Ml09NDA5NjtjW2QrNDAzMj4+Ml09NDtjW2QrNDAyOD4+Ml09NDtjW2QrNDA0OD4+Ml09MDtjW2QrNDA1Mj4+Ml09MDtjW2QrNDA1Nj4+Ml09MDtjW2QrNGUzPj4yXT0xNjtjW2QrNDAwND4+Ml09NjU1MzY7Y1tkKzQwMDg+PjJdPS0zMjc2ODtjW2QrNDAxMj4+Ml09MzI3Njc7Y1tkKzM5ODA+PjJdPTA7Y1tkKzQwNjQ+PjJdPTE2O2NbZCs0MDY4Pj4yXT0xO2NbZCs0MDcyPj4yXT04O2NbZCs0MDc2Pj4yXT0wO2NbZCs0MDk2Pj4yXT0wO2NbZCs0MTAwPj4yXT0wO2NbZCs0MTA0Pj4yXT0wO2NbZCs0MTIwPj4yXT0xO2NbZCs0MTI0Pj4yXT0yO2NbZCs0MTE2Pj4yXT00MDk2O2NbZCs0MTEyPj4yXT00O2NbZCs0MTA4Pj4yXT00O2NbZCs0MTI4Pj4yXT0wO2NbZCs0MTMyPj4yXT0wO2NbZCs0MTM2Pj4yXT0wO2NbZCs0MDgwPj4yXT0xNjtjW2QrNDA4ND4+Ml09NjU1MzY7Y1tkKzQwODg+PjJdPS0zMjc2ODtjW2QrNDA5Mj4+Ml09MzI3Njc7Y1tkKzQwNjA+PjJdPTA7Y1tkKzQxNDQ+PjJdPTMyO2NbZCs0MTQ4Pj4yXT0yO2NbZCs0MTUyPj4yXT04O2NbZCs0MTU2Pj4yXT0wO2NbZCs0MTc2Pj4yXT0wO2NbZCs0MTgwPj4yXT0wO2NbZCs0MTg0Pj4yXT0wO2NbZCs0MjAwPj4yXT0xO2NbZCs0MjA0Pj4yXT0yO2NbZCs0MTk2Pj4yXT00MDk2O2NbZCs0MTkyPj4yXT00O2NbZCs0MTg4Pj4yXT00O2NbZCs0MjA4Pj4yXT0wO2NbZCs0MjEyPj4yXT0wO2NbZCs0MjE2Pj4yXT0wO2NbZCs0MTYwPj4yXT0zMjtjW2QrNDE2ND4+Ml09MDtjW2QrNDE2OD4+Ml09LTIxNDc0ODM2NDg7Y1tkKzQxNzI+PjJdPTIxNDc0ODM2NDc7Y1tkKzQxNDA+PjJdPTA7Y1tkKzQyMjQ+PjJdPTMyO2NbZCs0MjI4Pj4yXT0yMjtjW2QrNDIzMj4+Ml09ODtjW2QrNDIzNj4+Ml09MDtjW2QrNDI1Nj4+Ml09MDtjW2QrNDI2MD4+Ml09MDtjW2QrNDI2ND4+Ml09MDtjW2QrNDI4MD4+Ml09MTtjW2QrNDI4ND4+Ml09MjtjW2QrNDI3Nj4+Ml09NDA5NjtjW2QrNDI3Mj4+Ml09NDtjW2QrNDI2OD4+Ml09NDtjW2QrNDI4OD4+Ml09MDtjW2QrNDI5Mj4+Ml09MDtjW2QrNDI5Nj4+Ml09MDtjW2QrNDI0MD4+Ml09MzI7Y1tkKzQyNDQ+PjJdPTA7Y1tkKzQyNDg+PjJdPS0yMTQ3NDgzNjQ4O2NbZCs0MjUyPj4yXT0yMTQ3NDgzNjQ3O2NbZCs0MjIwPj4yXT0wO2NbZCs0MzA0Pj4yXT0zMjtjW2QrNDMwOD4+Ml09MjA7Y1tkKzQzMTI+PjJdPTg7Y1tkKzQzMTY+PjJdPTA7Y1tkKzQzMzY+PjJdPTA7Y1tkKzQzNDA+PjJdPTA7Y1tkKzQzNDQ+PjJdPTA7Y1tkKzQzNjA+PjJdPTE7Y1tkKzQzNjQ+PjJdPTI7Y1tkKzQzNTY+PjJdPTQwOTY7Y1tkKzQzNTI+PjJdPTQ7Y1tkKzQzNDg+PjJdPTQ7Y1tkKzQzNjg+PjJdPTA7Y1tkKzQzNzI+PjJdPTA7Y1tkKzQzNzY+PjJdPTA7Y1tkKzQzMjA+PjJdPTMyO2NbZCs0MzI0Pj4yXT0wO2NbZCs0MzI4Pj4yXT0tMjE0NzQ4MzY0ODtjW2QrNDMzMj4+Ml09MjE0NzQ4MzY0NztjW2QrNDMwMD4+Ml09MDtjW2QrNDM4ND4+Ml09MTY7Y1tkKzQzODg+PjJdPTQ7Y1tkKzQzOTI+PjJdPTg7Y1tkKzQzOTY+PjJdPTA7Y1tkKzQ0MTY+PjJdPTA7Y1tkKzQ0MjA+PjJdPTA7Y1tkKzQ0MjQ+PjJdPTA7Y1tkKzQ0NDA+PjJdPTE7Y1tkKzQ0NDQ+PjJdPTI7Y1tkKzQ0MzY+PjJdPTQwOTY7Y1tkKzQ0MzI+PjJdPTQ7Y1tkKzQ0Mjg+PjJdPTQ7Y1tkKzQ0NDg+PjJdPTA7Y1tkKzQ0NTI+PjJdPTA7Y1tkKzQ0NTY+PjJdPTA7Y1tkKzQ0MDA+PjJdPTE2O2NbZCs0NDA0Pj4yXT02NTUzNjtjW2QrNDQwOD4+Ml09LTMyNzY4O2NbZCs0NDEyPj4yXT0zMjc2NztjW2QrNDM4MD4+Ml09MDtjW2QrNDQ2ND4+Ml09MTY7Y1tkKzQ0Njg+PjJdPTE7Y1tkKzQ0NzI+PjJdPTg7Y1tkKzQ0NzY+PjJdPTA7Y1tkKzQ0OTY+PjJdPTA7Y1tkKzQ1MDA+PjJdPTA7Y1tkKzQ1MDQ+PjJdPTA7Y1tkKzQ1MjA+PjJdPTE7Y1tkKzQ1MjQ+PjJdPTI7Y1tkKzQ1MTY+PjJdPTQwOTY7Y1tkKzQ1MTI+PjJdPTQ7Y1tkKzQ1MDg+PjJdPTQ7Y1tkKzQ1Mjg+PjJdPTA7Y1tkKzQ1MzI+PjJdPTA7Y1tkKzQ1MzY+PjJdPTA7Y1tkKzQ0ODA+PjJdPTE2O2NbZCs0NDg0Pj4yXT02NTUzNjtjW2QrNDQ4OD4+Ml09LTMyNzY4O2NbZCs0NDkyPj4yXT0zMjc2NztjW2QrNDQ2MD4+Ml09MDtjW2QrNDU0ND4+Ml09MzI7Y1tkKzQ1NDg+PjJdPTI7Y1tkKzQ1NTI+PjJdPTg7Y1tkKzQ1NTY+PjJdPTA7Y1tkKzQ1NzY+PjJdPTA7Y1tkKzQ1ODA+PjJdPTA7Y1tkKzQ1ODQ+PjJdPTA7Y1tkKzQ2MDA+PjJdPTE7Y1tkKzQ2MDQ+PjJdPTI7Y1tkKzQ1OTY+PjJdPTQwOTY7Y1tkKzQ1OTI+PjJdPTQ7Y1tkKzQ1ODg+PjJdPTQ7Y1tkKzQ2MDg+PjJdPTA7Y1tkKzQ2MTI+PjJdPTA7Y1tkKzQ2MTY+PjJdPTA7Y1tkKzQ1NjA+PjJdPTMyO2NbZCs0NTY0Pj4yXT0wO2NbZCs0NTY4Pj4yXT0tMjE0NzQ4MzY0ODtjW2QrNDU3Mj4+Ml09MjE0NzQ4MzY0NztjW2QrNDU0MD4+Ml09MDtjW2QrNDYyND4+Ml09MzI7Y1tkKzQ2Mjg+PjJdPTIyO2NbZCs0NjMyPj4yXT04O2NbZCs0NjM2Pj4yXT0wO2NbZCs0NjU2Pj4yXT0wO2NbZCs0NjYwPj4yXT0wO2NbZCs0NjY0Pj4yXT0wO2NbZCs0NjgwPj4yXT0xO2NbZCs0Njg0Pj4yXT0yO2NbZCs0Njc2Pj4yXT00MDk2O2NbZCs0NjcyPj4yXT00O2NbZCs0NjY4Pj4yXT00O2NbZCs0Njg4Pj4yXT0wO2NbZCs0NjkyPj4yXT0wO2NbZCs0Njk2Pj4yXT0wO2NbZCs0NjQwPj4yXT0zMjtjW2QrNDY0ND4+Ml09MDtjW2QrNDY0OD4+Ml09LTIxNDc0ODM2NDg7Y1tkKzQ2NTI+PjJdPTIxNDc0ODM2NDc7Y1tkKzQ2MjA+PjJdPTA7Y1tkKzQ3MDQ+PjJdPTMyO2NbZCs0NzA4Pj4yXT0yMDtjW2QrNDcxMj4+Ml09ODtjW2QrNDcxNj4+Ml09MDtjW2QrNDczNj4+Ml09MDtjW2QrNDc0MD4+Ml09MDtjW2QrNDc0ND4+Ml09MDtjW2QrNDc2MD4+Ml09MTtjW2QrNDc2ND4+Ml09MjtjW2QrNDc1Nj4+Ml09NDA5NjtjW2QrNDc1Mj4+Ml09NDtjW2QrNDc0OD4+Ml09NDtjW2QrNDc2OD4+Ml09MDtjW2QrNDc3Mj4+Ml09MDtjW2QrNDc3Nj4+Ml09MDtjW2QrNDcyMD4+Ml09MzI7Y1tkKzQ3MjQ+PjJdPTA7Y1tkKzQ3Mjg+PjJdPS0yMTQ3NDgzNjQ4O2NbZCs0NzMyPj4yXT0yMTQ3NDgzNjQ3O2NbZCs0NzAwPj4yXT0wO2FbZCs0NzgwPj4wXT0wO2FbZCs0NzgxPj4wXT0wO2k9ZTtyZXR1cm59fWZ1bmN0aW9uIGdkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2k9aSszMnwwO2g9ZTtmPWNbYis4Pj4yXXwwO2I9Y1tiKzQ+PjJdfDA7amQoaCxmLGIpO2c9Y1toPj4yXXwwO2FbZCszPj4wXT1nPj4+MjQ7YVtkKzI+PjBdPWc+Pj4xNjthW2QrMT4+MF09Zz4+Pjg7YVtkPj4wXT1nO2c9Y1toKzQ+PjJdfDA7YVtkKzc+PjBdPWc+Pj4yNDthW2QrNj4+MF09Zz4+PjE2O2FbZCs1Pj4wXT1nPj4+ODthW2QrND4+MF09ZztnPWNbaCs4Pj4yXXwwO2FbZCsxMT4+MF09Zz4+PjI0O2FbZCsxMD4+MF09Zz4+PjE2O2FbZCs5Pj4wXT1nPj4+ODthW2QrOD4+MF09ZztnPWNbaCsxMj4+Ml18MDthW2QrMTM+PjBdPShnJjY1NTM1KT4+Pjg7YVtkKzEyPj4wXT1nO2FbZCsxND4+MF09Zz4+PjE2O2FbZCsxNT4+MF09Zz4+PjI0O2g9Y1toKzE2Pj4yXXwwO2FbZCsxNj4+MF09aDthW2QrMTc+PjBdPShoJjY1NTM1KT4+Pjg7YVtkKzE5Pj4wXT1oPj4+MjQ7YVtkKzE4Pj4wXT1oPj4+MTY7aD1rZChmKzQ3ODR8MCxiKXwwO2c9STthW2QrMjM+PjBdPWg+Pj4yNDthW2QrMjI+PjBdPWg+Pj4xNjthW2QrMjE+PjBdPWg+Pj44O2FbZCsyMD4+MF09aDtqPUtuKGh8MCxnfDAsNTYpfDA7YVtkKzI3Pj4wXT1qO2o9S24oaHwwLGd8MCw0OCl8MDthW2QrMjY+PjBdPWo7aD1LbihofDAsZ3wwLDQwKXwwO2FbZCsyNT4+MF09aDthW2QrMjQ+PjBdPWc7bGQoZis1MTEyfDAsYixkKzI4fDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gaGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7Y1thPj4yXT00MjQ7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1hZChhKzUxMTJ8MCk7X2MoYSs1MDk2fDApO19jKGErNTA2NHwwKTtaYyhhKzQ5NDh8MCk7JGMoYSs0Nzg0fDApO1hjKGEpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gaWQoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2NbYT4+Ml09NDI0O2Q9Y1thKzg+PjJdfDA7aWYoKGR8MCk9PTApe3ZuKGEpO2k9YjtyZXR1cm59YWQoZCs1MTEyfDApO19jKGQrNTA5NnwwKTtfYyhkKzUwNjR8MCk7WmMoZCs0OTQ4fDApOyRjKGQrNDc4NHwwKTtYYyhkKTt2bihkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGpkKGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO2o9aTtpPWkrMzJ8MDtrPWo7bD1nKzQ3ODF8MDtpZigoYVtsPj4wXXwwKT09MCl7dGQoZys0MzgwfDApO3RkKGcrNDQ2MHwwKTt0ZChnKzQ1NDB8MCk7dGQoZys0NjIwfDApO3RkKGcrNDcwMHwwKTthW2w+PjBdPTF9bD1nKzM5NzZ8MDtpZigoYVtsPj4wXXwwKT09MCl7YVtsPj4wXT0xO3BkKGNbaD4+Ml18MCxrLDIwKTtyPWRbaysxPj4wXTw8OHxkW2s+PjBdfGRbaysyPj4wXTw8MTZ8ZFtrKzM+PjBdPDwyNDtvPWRbays1Pj4wXTw8OHxkW2srND4+MF18ZFtrKzY+PjBdPDwxNnxkW2srNz4+MF08PDI0O3A9ZFtrKzk+PjBdPDw4fGRbays4Pj4wXXxkW2srMTA+PjBdPDwxNnxkW2srMTE+PjBdPDwyNDtxPShhW2srMTM+PjBdPDw4fGRbaysxMj4+MF0pJjY1NTM1O3M9YVtrKzE0Pj4wXXwwO3Q9YVtrKzE1Pj4wXXwwO3U9YVtrKzE2Pj4wXXwwO2g9YVtrKzE3Pj4wXXwwO3Y9KGFbaysxOT4+MF08PDh8ZFtrKzE4Pj4wXSkmNjU1MzU7YVtnPj4wXT1yO2FbZysxPj4wXT1yPj44O2FbZysyPj4wXT1yPj4xNjthW2crMz4+MF09cj4+MjQ7cj1nKzR8MDthW3I+PjBdPW87YVtyKzE+PjBdPW8+Pjg7YVtyKzI+PjBdPW8+PjE2O2FbciszPj4wXT1vPj4yNDtyPWcrOHwwO2Fbcj4+MF09cDthW3IrMT4+MF09cD4+ODthW3IrMj4+MF09cD4+MTY7YVtyKzM+PjBdPXA+PjI0O3I9ZysxMnwwO2Fbcj4+MF09cTthW3IrMT4+MF09cT4+ODthW2crMTQ+PjBdPXM7YVtnKzE1Pj4wXT10O2FbZysxNj4+MF09dTthW2crMTc+PjBdPWg7aD1nKzE4fDA7YVtoPj4wXT12O2FbaCsxPj4wXT12Pj44O2Y9ZiswfDA7aD1nKzB8MDtnPWYrMjB8MDtkb3thW2Y+PjBdPWFbaD4+MF18MDtmPWYrMXwwO2g9aCsxfDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2k9ajtyZXR1cm59bT1xZChoLGcrODUyfDApfDA7aWYoKG18MCkhPTApe289ZysxNHwwO2s9YVtvPj4wXXwwO2lmKChtJjMyfDApIT0wKXtrPShxZChoLGNbZysoKCgoayYyNTUpPj4+NyYyNTUpPDw3fGsmN3woKGsmMjU1KT4+PjYmMjU1KTw8NiY2NHwoKGsmMjU1KT4+PjMmMjU1KTw8MyY1Nik8PDIpKzkwND4+Ml18MCl8MCkmMjU1O2Fbbz4+MF09a31sPWsmNztrPShrJjI1NSk+Pj4zJjc7bj1kWzg3Misoazw8MykrbD4+MF18MDtsPWRbOTM2KyhrPDwzKStsPj4wXXwwO2lmKChtJjE2fDApPT0wKXt1PWJbZysobjw8MSkrMjA+PjFdfDA7dj1nKzEyfDA7YVt2Pj4wXT11O2FbdisxPj4wXT11Pj44fWVsc2V7cD1nKyhuPDwxKSsyMHwwO3E9ZVtwPj4xXXwwO3E9KHJkKGcrNDM4MHwwLGgsKGNbZys0NDE2Pj4yXXwwKSsoKG4+Pj4wPDM/bjozKSo0NHwwKXwwKXwwKStxfDA7cj1jW2crNDQwND4+Ml18MDtpZigocXwwKTwwKXtxPXErcnwwfWVsc2V7cT1xLShxPj4+MDxyPj4+MD8wOnIpfDB9dj1xJjY1NTM1O3U9ZysxMnwwO2FbdT4+MF09djthW3UrMT4+MF09dj4+ODtiW3A+PjFdPXZ9aWYoKG0mOHwwKSE9MCl7dj1nKzE1fDA7YVt2Pj4wXT1xZChoLGNbZysoZFt2Pj4wXTw8MikrMTkyOD4+Ml18MCl8MH1pZigobSY0fDApIT0wKXtwPXFkKGgsY1tnKygoKGRbbz4+MF18MCk+Pj42JjEpPDwyKSs4OTY+PjJdfDApfDA7bz1nKzE2fDA7cD0oYVtvPj4wXXwwKStwfDA7aWYoKHB8MCk8MCl7cD1wKzI1NnwwfWVsc2V7cD0ocHwwKT4yNTU/cCsgLTI1NnwwOnB9YVtvPj4wXT1wfWlmKChtJjJ8MCkhPTApe3Y9ZysxN3wwO2Fbdj4+MF09cWQoaCxjW2crKGRbdj4+MF08PDIpKzI5NTI+PjJdfDApfDB9aWYoKG0mMXwwKSE9MCl7bT1nKzE4fDA7cD0oZFttPj4wXXxkW20rMT4+MF08PDgpJjY1NTM1O3A9KHJkKGcrNDQ2MHwwLGgsY1tnKzQ0OTY+PjJdfDApfDApK3B8MDtvPWNbZys0NDg0Pj4yXXwwO2lmKChwfDApPDApe289cCtvfDB9ZWxzZXtvPXAtKHA+Pj4wPG8+Pj4wPzA6byl8MH12PW8mNjU1MzU7YVttPj4wXT12O2FbbSsxPj4wXT12Pj44fX1lbHNle2s9YVtnKzE0Pj4wXXwwO249ayY3O2s9KGsmMjU1KT4+PjMmNztsPWRbOTM2KyhrPDwzKStuPj4wXXwwO249ZFs4NzIrKGs8PDMpK24+PjBdfDB9cT1nKyhuKjI0fDApKzUyfDA7bz1nKyhuKjI0fDApKzYwfDA7cD1jW28+PjJdfDA7bT1nKzQ1NDB8MDtrPShrfDApPT0xJjE7cD0ocmQobSxoLChjW2crNDU3Nj4+Ml18MCkrKGsqNDR8MCl8MCl8MCkrcHwwO3I9Y1tnKzQ1NjQ+PjJdfDA7aWYoKHB8MCk8MCl7cD1wK3J8MH1lbHNle3A9cC0ocD4+PjA8cj4+PjA/MDpyKXwwfXI9KGRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNCkrcHwwO2FbZz4+MF09cjthW2crMT4+MF09cj4+ODthW2crMj4+MF09cj4+MTY7YVtnKzM+PjBdPXI+PjI0O3I9ZysobioyNHwwKSs3MnwwO3M9Y1tvPj4yXXwwO2Rve2lmKChhW3I+PjBdfDApPT0wKXt1PWcrKG4qMjR8MCkrNTZ8MDt0PWNbdT4+Ml18MDtpZigoc3wwKT49KHB8MCkpe2lmKCh0fDApPChwfDApKXtjW3E+PjJdPXQ7Y1t1Pj4yXT1wfWVsc2V7Y1txPj4yXT1wfWFbcj4+MF09MTticmVha31jW3E+PjJdPXQ7Y1t1Pj4yXT1zO3Q9ZysobioyNHwwKSs2OHwwO3E9Y1t0Pj4yXXwwO3M9ZysobioyNHwwKSs2NHwwO3I9Y1tzPj4yXXwwO2lmKChxfDApPChwfDApKXtjW28+PjJdPXI7Y1tzPj4yXT1xO2NbdD4+Ml09cDticmVha31pZigocnwwKTwocHwwKSl7Y1tvPj4yXT1yO2Nbcz4+Ml09cDticmVha31lbHNle2Nbbz4+Ml09cDticmVha319ZWxzZXt0PWcrKG4qMjR8MCkrNjR8MDt1PWNbdD4+Ml18MDtpZigocHwwKT49KHN8MCkpe289ZysobioyNHwwKSs2OHwwO2lmKChwfDApPCh1fDApKXtjW28+PjJdPXU7Y1t0Pj4yXT1wfWVsc2V7Y1tvPj4yXT1wfWFbcj4+MF09MDticmVha31jW2crKG4qMjR8MCkrNjg+PjJdPXU7Y1t0Pj4yXT1zO3M9Y1txPj4yXXwwO3Q9ZysobioyNHwwKSs1NnwwO3I9Y1t0Pj4yXXwwO2lmKChwfDApPChzfDApKXtjW28+PjJdPXI7Y1t0Pj4yXT1zO2NbcT4+Ml09cDticmVha31pZigocHwwKTwocnwwKSl7Y1tvPj4yXT1yO2NbdD4+Ml09cDticmVha31lbHNle2Nbbz4+Ml09cDticmVha319fXdoaWxlKDApO3I9ZysobioyNHwwKSs0MzZ8MDtwPWcrKG4qMjR8MCkrNDQ0fDA7cT1jW3A+PjJdfDA7cz1jW20+PjJdfDA7bz1nKzQ2MjB8MDtxPShyZChvLGgsKGNbZys0NjU2Pj4yXXwwKSsoKChzPj4+MDwyMD9zJi0yOjIwKXxrKSo0NHwwKXwwKXwwKStxfDA7cz1jW2crNDY0ND4+Ml18MDtpZigocXwwKTwwKXtxPXErc3wwfWVsc2V7cT1xLShxPj4+MDxzPj4+MD8wOnMpfDB9cz1nKzR8MDt0PShkW3M+PjBdfGRbcysxPj4wXTw8OHxkW3MrMj4+MF08PDE2fGRbcyszPj4wXTw8MjQpK3F8MDthW3M+PjBdPXQ7YVtzKzE+PjBdPXQ+Pjg7YVtzKzI+PjBdPXQ+PjE2O2FbcyszPj4wXT10Pj4yNDtzPWcrKG4qMjR8MCkrNDU2fDA7dD1jW3A+PjJdfDA7ZG97aWYoKGFbcz4+MF18MCk9PTApe3U9ZysobioyNHwwKSs0NDB8MDt2PWNbdT4+Ml18MDtpZigodHwwKT49KHF8MCkpe2lmKCh2fDApPChxfDApKXtjW3I+PjJdPXY7Y1t1Pj4yXT1xfWVsc2V7Y1tyPj4yXT1xfWFbcz4+MF09MTticmVha31jW3I+PjJdPXY7Y1t1Pj4yXT10O3M9ZysobioyNHwwKSs0NTJ8MDtyPWNbcz4+Ml18MDtuPWcrKG4qMjR8MCkrNDQ4fDA7dD1jW24+PjJdfDA7aWYoKHJ8MCk8KHF8MCkpe2NbcD4+Ml09dDtjW24+PjJdPXI7Y1tzPj4yXT1xO2JyZWFrfWlmKCh0fDApPChxfDApKXtjW3A+PjJdPXQ7Y1tuPj4yXT1xO2JyZWFrfWVsc2V7Y1twPj4yXT1xO2JyZWFrfX1lbHNle3U9ZysobioyNHwwKSs0NDh8MDt2PWNbdT4+Ml18MDtpZigocXwwKT49KHR8MCkpe249ZysobioyNHwwKSs0NTJ8MDtpZigocXwwKTwodnwwKSl7Y1tuPj4yXT12O2NbdT4+Ml09cX1lbHNle2Nbbj4+Ml09cX1hW3M+PjBdPTA7YnJlYWt9Y1tnKyhuKjI0fDApKzQ1Mj4+Ml09djtjW3U+PjJdPXQ7cz1jW3I+PjJdfDA7bj1nKyhuKjI0fDApKzQ0MHwwO3Q9Y1tuPj4yXXwwO2lmKChxfDApPChzfDApKXtjW3A+PjJdPXQ7Y1tuPj4yXT1zO2Nbcj4+Ml09cTticmVha31pZigocXwwKTwodHwwKSl7Y1twPj4yXT10O2Nbbj4+Ml09cTticmVha31lbHNle2NbcD4+Ml09cTticmVha319fXdoaWxlKDApO209KGNbbz4+Ml18MCkrKGNbbT4+Ml18MCl8MDtsPWcrKGw8PDIpKzgyMHwwO249Y1tsPj4yXXwwO2lmKG0+Pj4wPDM2KXttPW0+Pj4xJjIxNDc0ODM2NDZ9ZWxzZXttPTE4fWs9KHJkKGcrNDcwMHwwLGgsKGNbZys0NzM2Pj4yXXwwKSsoKG18aykqNDR8MCl8MCl8MCkrbnwwO2g9Y1tnKzQ3MjQ+PjJdfDA7aWYoKGt8MCk8MCl7aD1rK2h8MH1lbHNle2g9ay0oaz4+PjA8aD4+PjA/MDpoKXwwfXY9Zys4fDA7YVt2Pj4wXT1oO2FbdisxPj4wXT1oPj44O2FbdisyPj4wXT1oPj4xNjthW3YrMz4+MF09aD4+MjQ7Y1tsPj4yXT1oO2Y9ZiswfDA7aD1nKzB8MDtnPWYrMjB8MDtkb3thW2Y+PjBdPWFbaD4+MF18MDtmPWYrMXwwO2g9aCsxfDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2k9ajtyZXR1cm59ZnVuY3Rpb24ga2QoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7Zj1pO2k9aSsxNnwwO2c9ZjtoPWIrMzI1fDA7aWYoKGFbaD4+MF18MCk9PTApe3RkKGIrMjQ0fDApO2FbaD4+MF09MX1pZigoYVtiPj4wXXwwKT09MCl7YVtiPj4wXT0xO3BkKGNbZT4+Ml18MCxnLDgpO249ZFtnKzE+PjBdPDw4fGRbZz4+MF18ZFtnKzI+PjBdPDwxNnxkW2crMz4+MF08PDI0O209ZFtnKzU+PjBdPDw4fGRbZys0Pj4wXXxkW2crNj4+MF08PDE2fGRbZys3Pj4wXTw8MjQ7bD1iKzEwMHwwO2s9bDthW2s+PjBdPW47YVtrKzE+PjBdPW4+Pjg7YVtrKzI+PjBdPW4+PjE2O2FbayszPj4wXT1uPj4yNDtsPWwrNHwwO2FbbD4+MF09bTthW2wrMT4+MF09bT4+ODthW2wrMj4+MF09bT4+MTY7YVtsKzM+PjBdPW0+PjI0O0k9bTtpPWY7cmV0dXJuIG58MH1nPWIrOTJ8MDtkb3tpZigoY1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDApPT0wKXtoPXFkKGUsYis0OHwwKXwwO2lmKChofDApPT0yKXtoPWIrOTZ8MDtjW2g+PjJdPShjW2g+PjJdfDApKzEmMztqPWIrKGNbZz4+Ml08PDMpKzEwNHwwO2o9ZFtqPj4wXXxkW2orMT4+MF08PDh8ZFtqKzI+PjBdPDwxNnxkW2orMz4+MF08PDI0O2o9KHJkKGIrMjQ0fDAsZSwoY1tiKzI4MD4+Ml18MCkrMzUyfDApfDApK2p8MDtrPWNbYisyNjg+PjJdfDA7aWYoKGp8MCk8MCl7aj1qK2t8MH1lbHNle2o9ai0oaj4+PjA8az4+PjA/MDprKXwwfW09KChqfDApPDApPDwzMT4+MzE7az1iKyhjW2g+PjJdPDwzKSsxMDB8MDtuPWs7YVtuPj4wXT1qO2FbbisxPj4wXT1qPj44O2FbbisyPj4wXT1qPj4xNjthW24rMz4+MF09aj4+MjQ7az1rKzR8MDthW2s+PjBdPW07YVtrKzE+PjBdPW0+Pjg7YVtrKzI+PjBdPW0+PjE2O2FbayszPj4wXT1tPj4yNDtrPWIrKGNbaD4+Ml08PDMpKzEwMHwwO209azttPWRbbT4+MF18ZFttKzE+PjBdPDw4fGRbbSsyPj4wXTw8MTZ8ZFttKzM+PjBdPDwyNDtqPWs7YVtqPj4wXT0wO2FbaisxPj4wXT0wO2FbaisyPj4wXT0wO2FbaiszPj4wXT0wO2s9ays0fDA7YVtrPj4wXT1tO2FbaysxPj4wXT1tPj44O2FbaysyPj4wXT1tPj4xNjthW2srMz4+MF09bT4+MjQ7az1lKzR8MDttPWNbaz4+Ml18MDtqPWUrOHwwO249KGNbaj4+Ml18MCk+Pj4xNjtjW2o+PjJdPW47bD0obT4+PjApLyhuPj4+MCl8MDtuPW0tKGVhKG4sbCl8MCl8MDtjW2s+PjJdPW47ZG97bj0obWQoY1tlPj4yXXwwKXwwKSYyNTV8bjw8ODtjW2s+PjJdPW47bT1jW2o+PjJdfDA7bz1tPDw4O2Nbaj4+Ml09b313aGlsZShvPj4+MDwxNjc3NzIxNik7bz1tPj4+OCY2NTUzNTtjW2o+PjJdPW87bT0obj4+PjApLyhvPj4+MCl8MDtuPW4tKGVhKG0sbyl8MCl8MDtjW2s+PjJdPW47ZG97bj0obWQoY1tlPj4yXXwwKXwwKSYyNTV8bjw8ODtjW2s+PjJdPW47bz1jW2o+PjJdPDw4O2Nbaj4+Ml09b313aGlsZShvPj4+MDwxNjc3NzIxNik7bz1iKyhjW2g+PjJdPDwzKSsxMDB8MDtuPW87az1uO249bis0fDA7bj1kW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjQ7bD1kW2s+PjBdfGRbaysxPj4wXTw8OHxkW2srMj4+MF08PDE2fGRbayszPj4wXTw8MjR8KG08PDE2fGwmNjU1MzUpO209bzthW20+PjBdPWw7YVttKzE+PjBdPWw+Pjg7YVttKzI+PjBdPWw+PjE2O2FbbSszPj4wXT1sPj4yNDtvPW8rNHwwO2Fbbz4+MF09bjthW28rMT4+MF09bj4+ODthW28rMj4+MF09bj4+MTY7YVtvKzM+PjBdPW4+PjI0O289Y1toPj4yXXwwO2NbZz4+Ml09bztjW2IrKG88PDIpKzEzMj4+Ml09MDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31lbHNlIGlmKChofDApPT0xKXtlPXJkKGIrMjQ0fDAsZSxjW2IrMjgwPj4yXXwwKXwwO2g9Y1tiKzI2OD4+Ml18MDtpZigoZXwwKTwwKXtlPWgrZXwwfWVsc2V7ZT1lLShlPj4+MDxoPj4+MD8wOmgpfDB9Y1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdPWU7bz1jW2c+PjJdfDA7bD1jW2IrKG88PDIpKzEzMj4+Ml18MDtvPWIrKG88PDMpKzEwMHwwO249bzttPW47bj1uKzR8MDtsPUluKGRbbT4+MF18ZFttKzE+PjBdPDw4fGRbbSsyPj4wXTw8MTZ8ZFttKzM+PjBdPDwyNHwwLGRbbj4+MF18ZFtuKzE+PjBdPDw4fGRbbisyPj4wXTw8MTZ8ZFtuKzM+PjBdPDwyNHwwLGx8MCwoKGx8MCk8MCk8PDMxPj4zMXwwKXwwO249STttPW87YVttPj4wXT1sO2FbbSsxPj4wXT1sPj44O2FbbSsyPj4wXT1sPj4xNjthW20rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW47YVtvKzE+PjBdPW4+Pjg7YVtvKzI+PjBdPW4+PjE2O2FbbyszPj4wXT1uPj4yNDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31lbHNle2lmKChofDApPD0yKXticmVha31jW2c+PjJdPWgrMisoY1tnPj4yXXwwKSYzO2tkKGIsZSl8MDticmVha319ZWxzZXtoPXFkKGUsYis0fDApfDA7aWYoKGh8MCk9PTEpe2g9Y1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDA7ZT0ocmQoYisyNDR8MCxlLChjW2IrMjgwPj4yXXwwKSs0NHwwKXwwKStofDA7aD1jW2IrMjY4Pj4yXXwwO2lmKChlfDApPDApe2U9ZStofDB9ZWxzZXtlPWUtKGU+Pj4wPGg+Pj4wPzA6aCl8MH1vPWIrKGNbZz4+Ml08PDMpKzEwMHwwO2w9bztuPWw7bD1sKzR8MDtsPUluKGRbbj4+MF18ZFtuKzE+PjBdPDw4fGRbbisyPj4wXTw8MTZ8ZFtuKzM+PjBdPDwyNHwwLGRbbD4+MF18ZFtsKzE+PjBdPDw4fGRbbCsyPj4wXTw8MTZ8ZFtsKzM+PjBdPDwyNHwwLGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwKXwwO249STttPW87YVttPj4wXT1sO2FbbSsxPj4wXT1sPj44O2FbbSsyPj4wXT1sPj4xNjthW20rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW47YVtvKzE+PjBdPW4+Pjg7YVtvKzI+PjBdPW4+PjE2O2FbbyszPj4wXT1uPj4yNDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31pZigoaHwwKT49NTExKXtpZigoaHwwKSE9NTEyKXtpZigoaHwwKTw9NTExKXticmVha31jW2c+PjJdPShjW2c+PjJdfDApK2gmMztrZChiLGUpfDA7YnJlYWt9aD1iKzk2fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxJjM7az1iKyhjW2c+PjJdPDwzKSsxMDR8MDtrPWRbaz4+MF18ZFtrKzE+PjBdPDw4fGRbaysyPj4wXTw8MTZ8ZFtrKzM+PjBdPDwyNDtrPShyZChiKzI0NHwwLGUsKGNbYisyODA+PjJdfDApKzM1MnwwKXwwKStrfDA7aj1jW2IrMjY4Pj4yXXwwO2lmKChrfDApPDApe2o9aytqfDB9ZWxzZXtqPWstKGs+Pj4wPGo+Pj4wPzA6ail8MH1vPSgoanwwKTwwKTw8MzE+PjMxO2s9YisoY1toPj4yXTw8MykrMTAwfDA7bD1rO2FbbD4+MF09ajthW2wrMT4+MF09aj4+ODthW2wrMj4+MF09aj4+MTY7YVtsKzM+PjBdPWo+PjI0O2s9ays0fDA7YVtrPj4wXT1vO2FbaysxPj4wXT1vPj44O2FbaysyPj4wXT1vPj4xNjthW2srMz4+MF09bz4+MjQ7az1iKyhjW2g+PjJdPDwzKSsxMDB8MDtvPWs7bz1kW28+PjBdfGRbbysxPj4wXTw8OHxkW28rMj4+MF08PDE2fGRbbyszPj4wXTw8MjQ7bD1rO2FbbD4+MF09MDthW2wrMT4+MF09MDthW2wrMj4+MF09MDthW2wrMz4+MF09MDtrPWsrNHwwO2Fbaz4+MF09bzthW2srMT4+MF09bz4+ODthW2srMj4+MF09bz4+MTY7YVtrKzM+PjBdPW8+PjI0O2s9ZSs0fDA7bz1jW2s+PjJdfDA7bD1lKzh8MDttPShjW2w+PjJdfDApPj4+MTY7Y1tsPj4yXT1tO2o9KG8+Pj4wKS8obT4+PjApfDA7bT1vLShlYShtLGopfDApfDA7Y1trPj4yXT1tO2Rve209KG1kKGNbZT4+Ml18MCl8MCkmMjU1fG08PDg7Y1trPj4yXT1tO249Y1tsPj4yXXwwO289bjw8ODtjW2w+PjJdPW99d2hpbGUobz4+PjA8MTY3NzcyMTYpO289bj4+PjgmNjU1MzU7Y1tsPj4yXT1vO249KG0+Pj4wKS8obz4+PjApfDA7bT1tLShlYShuLG8pfDApfDA7Y1trPj4yXT1tO2Rve209KG1kKGNbZT4+Ml18MCl8MCkmMjU1fG08PDg7Y1trPj4yXT1tO289Y1tsPj4yXTw8ODtjW2w+PjJdPW99d2hpbGUobz4+PjA8MTY3NzcyMTYpO289YisoY1toPj4yXTw8MykrMTAwfDA7bT1vO2w9bTttPW0rNHwwO209ZFttPj4wXXxkW20rMT4+MF08PDh8ZFttKzI+PjBdPDwxNnxkW20rMz4+MF08PDI0O2w9ZFtsPj4wXXxkW2wrMT4+MF08PDh8ZFtsKzI+PjBdPDwxNnxkW2wrMz4+MF08PDI0fChuPDwxNnxqJjY1NTM1KTtuPW87YVtuPj4wXT1sO2FbbisxPj4wXT1sPj44O2FbbisyPj4wXT1sPj4xNjthW24rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW07YVtvKzE+PjBdPW0+Pjg7YVtvKzI+PjBdPW0+PjE2O2FbbyszPj4wXT1tPj4yNDtvPWNbaD4+Ml18MDtjW2c+PjJdPW87Y1tiKyhvPDwyKSsxMzI+PjJdPTA7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTA7YnJlYWt9ZG97aWYoKGh8MCk9PTApe2U9cmQoYisyNDR8MCxlLChjW2IrMjgwPj4yXXwwKSszMDh8MCl8MDtoPWNbYisyNjg+PjJdfDA7aWYoKGV8MCk8MCl7ZT1oK2V8MH1lbHNle2U9ZS0oZT4+PjA8aD4+PjA/MDpoKXwwfWg9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2g9Y1tnPj4yXXwwO2lmKChjW2IrKGg8PDIpKzE0OD4+Ml18MCk+Myl7Y1tiKyhoPDwyKSsxMzI+PjJdPWU7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTB9fWVsc2V7aWYoKGh8MCk8NTAwKXtsPWIrMjQ0fDA7aj1lYShjW2IrKGNbZz4+Ml08PDIpKzEzMj4+Ml18MCxoKXwwO2s9Y1tiKzI4MD4+Ml18MDtpZigoaHwwKTwxMCl7aD0ocmQobCxlLGsrODh8MCl8MCkranwwO2U9Y1tiKzI2OD4+Ml18MDtpZigoaHwwKTwwKXtlPWgrZXwwO2JyZWFrfWVsc2V7ZT1oLShoPj4+MDxlPj4+MD8wOmUpfDA7YnJlYWt9fWVsc2V7aD0ocmQobCxlLGsrMTMyfDApfDApK2p8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MDticmVha31lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwO2JyZWFrfX19aWYoKGh8MCk9PTUwMCl7aD0oY1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDApKjUwMHwwO2g9KHJkKGIrMjQ0fDAsZSwoY1tiKzI4MD4+Ml18MCkrMTc2fDApfDApK2h8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MH1lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwfWg9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2g9Y1tnPj4yXXwwO2lmKChjW2IrKGg8PDIpKzE0OD4+Ml18MCk8PTMpe2JyZWFrfWNbYisoaDw8MikrMTMyPj4yXT1lO2NbYisoY1tnPj4yXTw8MikrMTQ4Pj4yXT0wO2JyZWFrfWg9NTAwLWh8MDtrPWIrMjQ0fDA7aj1jW2IrKGNbZz4+Ml08PDIpKzEzMj4+Ml18MDtpZigoaHwwKT4tMTApe2g9ZWEoaixoKXwwO2g9KHJkKGssZSwoY1tiKzI4MD4+Ml18MCkrMjIwfDApfDApK2h8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MDticmVha31lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwO2JyZWFrfX1oPWVhKGosLTEwKXwwO2U9KHJkKGssZSwoY1tiKzI4MD4+Ml18MCkrMjY0fDApfDApK2h8MDtoPWNbYisyNjg+PjJdfDA7aWYoKGV8MCk8MCl7aD1lK2h8MH1lbHNle2g9ZS0oZT4+PjA8aD4+PjA/MDpoKXwwfWU9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxO2U9Y1tnPj4yXXwwO2lmKChjW2IrKGU8PDIpKzE0OD4+Ml18MCk+Myl7Y1tiKyhlPDwyKSsxMzI+PjJdPWg7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTA7ZT1ofWVsc2V7ZT1ofX19d2hpbGUoMCk7bz1iKyhjW2c+PjJdPDwzKSsxMDB8MDtsPW87bj1sO2w9bCs0fDA7bD1JbihkW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjR8MCxkW2w+PjBdfGRbbCsxPj4wXTw8OHxkW2wrMj4+MF08PDE2fGRbbCszPj4wXTw8MjR8MCxlfDAsKChlfDApPDApPDwzMT4+MzF8MCl8MDtuPUk7bT1vO2FbbT4+MF09bDthW20rMT4+MF09bD4+ODthW20rMj4+MF09bD4+MTY7YVttKzM+PjBdPWw+PjI0O289bys0fDA7YVtvPj4wXT1uO2FbbysxPj4wXT1uPj44O2FbbysyPj4wXT1uPj4xNjthW28rMz4+MF09bj4+MjR9fXdoaWxlKDApO249YisoY1tnPj4yXTw8MykrMTAwfDA7bz1uO249bis0fDA7bj1kW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjQ7bz1kW28+PjBdfGRbbysxPj4wXTw8OHxkW28rMj4+MF08PDE2fGRbbyszPj4wXTw8MjQ7ST1uO2k9ZjtyZXR1cm4gb3wwfWZ1bmN0aW9uIGxkKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtnPWk7aT1pKzE2fDA7aD1nO2lmKChhW2I+PjBdfDApPT0wKXthW2I+PjBdPTE7cGQoY1tlPj4yXXwwLGgsNik7dT1hW2grMT4+MF08PDh8ZFtoPj4wXTtqPXUmNjU1MzU7bD1hW2grMj4+MF18MDtrPShhW2grMz4+MF08PDh8bCYyNTUpJjY1NTM1O249YVtoKzQ+PjBdfDA7bT0oYVtoKzU+PjBdPDw4fG4mMjU1KSY2NTUzNTtoPWIrMXwwO2FbaD4+MF09ajthW2grMT4+MF09aj4+ODtoPWIrM3wwO2FbaD4+MF09azthW2grMT4+MF09az4+ODtoPWIrNXwwO2FbaD4+MF09bTthW2grMT4+MF09bT4+ODtoPXU7bT0obSY2NTUzNSk+Pj44JjI1NX1lbHNle2w9cWQoZSxiKzh8MCl8MDtpZigobCYxfDApPT0wKXttPWIrMXwwO209ZFttPj4wXXxkW20rMT4+MF08PDg7aD1tJjI1NX1lbHNle2g9KHFkKGUsYis1MnwwKXwwKSYyNTU7bT1iKzF8MDttPWRbbT4+MF18ZFttKzE+PjBdPDw4O2g9KG0mMjU1KStofDA7aD0oaHwwKT4yNTU/aCs2NTI4MHwwOmh9aWYoKGwmMnwwKT09MCl7aD1tJjY1MjgwfGgmNjU1MzV9ZWxzZXt1PShxZChlLGIrOTZ8MCl8MCkmMjU1O209YisxfDA7bT1kW20+PjBdfGRbbSsxPj4wXTw8ODt1PSgobSY2NTUzNSk+Pj44KSt1fDA7aD0oKHV8MCk+MjU1P3UrNjUyODB8MDp1KTw8OHxoJjY1NTM1fWo9aCY2NTUzNTtkb3tpZigobCY2NHwwKT09MCl7az1iKzF8MDtsPWIrNXwwO249ajttPWp9ZWxzZXtrPWIrMXwwO209KGgmMjU1KS0obSYyNTUpfDA7ZG97aWYoKGwmNHwwKSE9MCl7cD1xZChlLGIrMTQwfDApfDA7bj1wJjI1NTtvPWIrM3wwO289ZFtvPj4wXXxkW28rMT4+MF08PDg7cT1vJjY1NTM1O3I9KHEmMjU1KSttfDA7cz0ocnwwKTwxO2lmKChyKyAtMXwwKT4+PjA+MjUzKXt0PXM/MDoyNTV9ZWxzZXt0PXErbSYyNTV9aWYoKHQrbnwwKT4yNTUpe2lmKCFzKXtpZigocnwwKT4yNTQpe249MjU1fWVsc2V7bj1xK20mMjU1fX1lbHNle249MH1uPShwfC0yNTYpK258MDticmVha31lbHNle2lmKCFzKXtpZigocnwwKT4yNTQpe3A9MjU1fWVsc2V7cD1xK20mMjU1fX1lbHNle3A9MH1uPXArbnwwO2JyZWFrfX1lbHNle289YiszfDA7bz1kW28+PjBdfGRbbysxPj4wXTw8ODtuPW8mMjU1fX13aGlsZSgwKTtkb3tpZigobCYxNnwwKSE9MCl7cD1xZChlLGIrMjI4fDApfDA7bz1iKzN8MDtvPWRbbz4+MF18ZFtvKzE+PjBdPDw4O3I9KChuJjI1NSkrbS0obyYyNTUpfDApLzJ8MDttPXAmMjU1O3Q9Yis1fDA7dD0oZFt0Pj4wXXxkW3QrMT4+MF08PDgpJjY1NTM1O3U9KHQmMjU1KStyfDA7cz0odXwwKTwxO2lmKCh1KyAtMXwwKT4+PjA+MjUzKXtxPXM/MDoyNTV9ZWxzZXtxPXQrciYyNTV9aWYoKHErbXwwKT4yNTUpe2lmKCFzKXtpZigodXwwKT4yNTQpe209MjU1fWVsc2V7bT10K3ImMjU1fX1lbHNle209MH1tPShwfC0yNTYpK218MDtwPW87YnJlYWt9ZWxzZXtpZighcyl7aWYoKHV8MCk+MjU0KXtwPTI1NX1lbHNle3A9dCtyJjI1NX19ZWxzZXtwPTB9bT1wK218MDtwPW87YnJlYWt9fWVsc2V7bT1iKzV8MDttPShkW20+PjBdfGRbbSsxPj4wXTw8OCkmMjU1O3A9b319d2hpbGUoMCk7bz0oaD4+PjgmMjU1KS0oKChkW2s+PjBdfGRbaysxPj4wXTw8OCkmNjU1MzUpPj4+OCl8MDtpZigobCY4fDApPT0wKXtyPXAmNjUyODB8biY2NTUzNX1lbHNle3A9cWQoZSxiKzE4NHwwKXwwO3E9cCYyNTU7dD1iKzN8MDt0PSgoKGRbdD4+MF18ZFt0KzE+PjBdPDw4KSY2NTUzNSk+Pj44KStvfDA7cj0odHwwKTwxO2lmKHIpe3M9MH1lbHNle3M9KHR8MCk+MjU0PzI1NTp0JjI1NX1pZigocytxfDApPjI1NSl7aWYocil7cT0wfWVsc2V7cT0odHwwKT4yNTQ/MjU1OnQmMjU1fXA9KHB8LTI1NikrcXwwfWVsc2V7aWYocil7cD0wfWVsc2V7cD0odHwwKT4yNTQ/MjU1OnQmMjU1fXA9cCtxfDB9cj1wPDw4fG4mNjU1MzV9bj1yJjY1NTM1O2lmKChsJjMyfDApPT0wKXt1PWIrNXwwO2w9dTttPSgoZFt1Pj4wXXxkW3UrMT4+MF08PDgpJjY1MjgwfG0pJjY1NTM1O2JyZWFrfXE9cWQoZSxiKzI3MnwwKXwwO3U9YiszfDA7cD1xJjI1NTtsPWIrNXwwO3I9KCgoZFtsPj4wXXxkW2wrMT4+MF08PDgpJjY1NTM1KT4+PjgpKygoKHI+Pj44JjI1NSkrby0oKChkW3U+PjBdfGRbdSsxPj4wXTw8OCkmNjU1MzUpPj4+OCl8MCkvMnwwKXwwO289KHJ8MCk8MTtpZihvKXtzPTB9ZWxzZXtzPShyfDApPjI1ND8yNTU6ciYyNTV9aWYoKHMrcHwwKT4yNTUpe2lmKG8pe289MH1lbHNle289KHJ8MCk+MjU0PzI1NTpyJjI1NX1vPShxfC0yNTYpK298MH1lbHNle2lmKG8pe289MH1lbHNle289KHJ8MCk+MjU0PzI1NTpyJjI1NX1vPW8rcHwwfW09KG88PDh8bSkmNjU1MzV9fXdoaWxlKDApO2Fbaz4+MF09ajthW2srMT4+MF09aj4+ODtrPWIrM3wwO2Fbaz4+MF09bjthW2srMT4+MF09bj4+ODthW2w+PjBdPW07YVtsKzE+PjBdPW0+Pjg7az1uO2w9biYyNTU7bj1tJjI1NTttPShtJjY1NTM1KT4+PjgmMjU1fWFbZisxPj4wXT0oaiY2NTUzNSk+Pj44O2FbZj4+MF09aDthW2YrMz4+MF09KGsmNjU1MzUpPj4+ODthW2YrMj4+MF09bDthW2YrNT4+MF09bTthW2YrND4+MF09bjtmPWIrMzE2fDA7aWYoKGFbZj4+MF18MCk9PTApe2k9ZztyZXR1cm59dT0oKG1kKGNbZT4+Ml18MCl8MCkmMjU1KTw8MjQ7dT0oKG1kKGNbZT4+Ml18MCl8MCkmMjU1KTw8MTZ8dTt1PXV8KChtZChjW2U+PjJdfDApfDApJjI1NSk8PDg7Y1tlKzQ+PjJdPXV8KG1kKGNbZT4+Ml18MCl8MCkmMjU1O2FbZj4+MF09MDtpPWc7cmV0dXJufWZ1bmN0aW9uIG1kKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Zz1pO2U9Yis0fDA7aD1jW2U+PjJdfDA7Zj1iKzh8MDtpZigoaHwwKTwoY1tmPj4yXXwwKSl7aj1oO2g9aisxfDA7Y1tlPj4yXT1oO2g9YisxMnwwO2g9Y1toPj4yXXwwO2o9aCtqfDA7aj1hW2o+PjBdfDA7aT1nO3JldHVybiBqfDB9Y1tlPj4yXT0wO2o9Y1tiPj4yXXwwO2g9aisxM3wwO2lmKChhW2g+PjBdfDApPT0wKXtrPWorNHwwO249ais4fDA7bD1jW24+PjJdfDA7bT0oY1trPj4yXXwwKS1sfDA7bT0obXwwKTwxMDQ4NTc2P206MTA0ODU3NjtNbihjW2IrMTI+PjJdfDAsKGNbaj4+Ml18MCkrbHwwLG18MCl8MDtsPShjW24+PjJdfDApK218MDtjW24+PjJdPWw7Y1tqKzE2Pj4yXT1tO2lmKChsfDApPj0oY1trPj4yXXwwKSl7YVtoPj4wXT0xfX1lbHNle2FbaisxMj4+MF09MX1uPWNbKGNbYj4+Ml18MCkrMTY+PjJdfDA7Y1tmPj4yXT1uO2lmKChufDApIT0wKXtuPWNbZT4+Ml18MDttPW4rMXwwO2NbZT4+Ml09bTttPWIrMTJ8MDttPWNbbT4+Ml18MDtuPW0rbnwwO249YVtuPj4wXXwwO2k9ZztyZXR1cm4gbnwwfWI9WGEoOCl8MDtjW2I+PjJdPTk5Mjg7d2hpbGUoMSl7ZT11bigzMil8MDtpZigoZXwwKSE9MCl7ZD0xNDticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZHwwKT09MTQpe2NbZSs0Pj4yXT0xOTtjW2U+PjJdPTE5O2Y9ZSsxMnwwO2NbYis0Pj4yXT1mO2NbZSs4Pj4yXT0wO2Y9ZiswfDA7ZT04MjR8MDtkPWYrMjB8MDtkb3thW2Y+PjBdPWFbZT4+MF18MDtmPWYrMXwwO2U9ZSsxfDB9d2hpbGUoKGZ8MCk8KGR8MCkpO2NbYj4+Ml09ODU2O3diKGJ8MCw4MDgsMjYpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpO3JldHVybiAwfWZ1bmN0aW9uIG5kKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBvZChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHBkKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2Y9aTtnPWIrNHwwO2s9Y1tnPj4yXXwwO2o9Yis4fDA7ZG97aWYoKGt8MCk8KGNbaj4+Ml18MCkpe2o9a31lbHNle2NbZz4+Ml09MDtrPWNbYj4+Ml18MDtsPWsrMTN8MDtpZigoYVtsPj4wXXwwKT09MCl7bT1rKzR8MDtwPWsrOHwwO249Y1twPj4yXXwwO289KGNbbT4+Ml18MCktbnwwO289KG98MCk8MTA0ODU3Nj9vOjEwNDg1NzY7TW4oY1tiKzEyPj4yXXwwLChjW2s+PjJdfDApK258MCxvfDApfDA7bj0oY1twPj4yXXwwKStvfDA7Y1twPj4yXT1uO2NbaysxNj4+Ml09bztpZigobnwwKT49KGNbbT4+Ml18MCkpe2FbbD4+MF09MX19ZWxzZXthW2srMTI+PjBdPTF9cD1jWyhjW2I+PjJdfDApKzE2Pj4yXXwwO2Nbaj4+Ml09cDtpZigocHwwKSE9MCl7aj1jW2c+PjJdfDA7YnJlYWt9ZT1YYSg4KXwwO2NbZT4+Ml09OTkyODt3aGlsZSgxKXtmPXVuKDMyKXwwO2lmKChmfDApIT0wKXtoPTE0O2JyZWFrfWY9Y1s1NjY2XXwwO2NbNTY2Nl09ZiswO2lmKChmfDApPT0wKXticmVha31zY1tmJjMxXSgpfWlmKChofDApPT0xNCl7Y1tmKzQ+PjJdPTE5O2NbZj4+Ml09MTk7ZD1mKzEyfDA7Y1tlKzQ+PjJdPWQ7Y1tmKzg+PjJdPTA7ZD1kKzB8MDtnPTgyNHwwO2Y9ZCsyMHwwO2Rve2FbZD4+MF09YVtnPj4wXXwwO2Q9ZCsxfDA7Zz1nKzF8MH13aGlsZSgoZHwwKTwoZnwwKSk7Y1tlPj4yXT04NTY7d2IoZXwwLDgwOCwyNil9cD1YYSg0KXwwO2NbcD4+Ml09MjI2ODA7d2IocHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2I9Y1tiKzEyPj4yXXwwO2g9YisoaitlKXwwO2lmKChlfDApPT0wKXtwPWo7cD1wK2V8MDtjW2c+PjJdPXA7aT1mO3JldHVybn1iPWIranwwO3doaWxlKDEpe2FbZD4+MF09YVtiPj4wXXwwO2I9YisxfDA7aWYoKGJ8MCk9PShofDApKXticmVha31lbHNle2Q9ZCsxfDB9fXA9Y1tnPj4yXXwwO3A9cCtlfDA7Y1tnPj4yXT1wO2k9ZjtyZXR1cm59ZnVuY3Rpb24gcWQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7ZT1pO2Q9YSs4fDA7Zj1jW2Q+PjJdfDA7aD1jW2IrMTY+PjJdfDA7aWYoKGh8MCkhPTApe2o9Y1thKzQ+PjJdfDA7Zz1mPj4+MTU7Y1tkPj4yXT1nO2w9KGo+Pj4wKS8oZz4+PjApfDA7bT1sPj4+KGNbYis0MD4+Ml18MCk7az1jW2grKG08PDIpPj4yXXwwO209KGNbaCsobSsxPDwyKT4+Ml18MCkrMXwwO249aysxfDA7aD1jW2IrOD4+Ml18MDtpZihtPj4+MD5uPj4+MCl7d2hpbGUoMSl7bj0obStrfDApPj4+MTtvPShjW2grKG48PDIpPj4yXXwwKT4+PjA+bD4+PjA7az1vP2s6bjttPW8/bjptO249aysxfDA7aWYoIShtPj4+MD5uPj4+MCkpe2w9bjticmVha319fWVsc2V7bD1ufW49ZWEoZyxjW2grKGs8PDIpPj4yXXwwKXwwO2lmKChrfDApIT0oY1tiKzMyPj4yXXwwKSl7Zj1lYShjW2grKGw8PDIpPj4yXXwwLGcpfDB9fWVsc2V7aD1mPj4+MTU7Y1tkPj4yXT1oO2w9Y1tiPj4yXXwwO2c9Y1tiKzg+PjJdfDA7aj1jW2ErND4+Ml18MDttPWw+Pj4xO2s9MDtuPTA7ZG97cD1lYShjW2crKG08PDIpPj4yXXwwLGgpfDA7bz1wPj4+MD5qPj4+MDtmPW8/cDpmO249bz9uOnA7az1vP2s6bTtsPW8/bTpsO209KGsrbHwwKT4+PjF9d2hpbGUoKG18MCkhPShrfDApKX1nPWErNHwwO2g9ai1ufDA7Y1tnPj4yXT1oO3A9Zi1ufDA7Y1tkPj4yXT1wO2lmKHA+Pj4wPDE2Nzc3MjE2KXtkb3toPShtZChjW2E+PjJdfDApfDApJjI1NXxoPDw4O2NbZz4+Ml09aDtwPWNbZD4+Ml08PDg7Y1tkPj4yXT1wfXdoaWxlKHA+Pj4wPDE2Nzc3MjE2KX1vPShjW2IrMTI+PjJdfDApKyhrPDwyKXwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtvPWIrMjh8MDtwPShjW28+PjJdfDApKyAtMXwwO2Nbbz4+Ml09cDtpZigocHwwKSE9MCl7aT1lO3JldHVybiBrfDB9ZGQoYik7aT1lO3JldHVybiBrfDB9ZnVuY3Rpb24gcmQoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtmPXFkKGIsZCl8MDtjW2E+PjJdPWY7aWYoKGZ8MCkhPTApe2lmKCEoZj4+PjA8MzIpKXtsPWNbYSsyOD4+Ml18MDtpPWU7cmV0dXJuIGx8MH1kPWNbYSsxMj4+Ml18MDtpZihmPj4+MD5kPj4+MCl7ZD1mLWR8MDtsPXFkKGIsKGNbYSs2OD4+Ml18MCkrKChmKyAtMXwwKSo0NHwwKXwwKXwwO2Q9bDw8ZHwoc2QoYixkKXwwKX1lbHNle2Q9cWQoYiwoY1thKzY4Pj4yXXwwKSsoKGYrIC0xfDApKjQ0fDApfDApfDB9YT1jW2E+PjJdfDA7aWYoKGR8MCk8KDE8PGErIC0xfDApKXtsPWQrMSsoLTE8PGEpfDA7aT1lO3JldHVybiBsfDB9ZWxzZXtsPWQrMXwwO2k9ZTtyZXR1cm4gbHwwfX1mPWErNTZ8MDtoPWIrOHwwO2w9Y1toPj4yXXwwO2o9ZWEobD4+PjEzLGNbZj4+Ml18MCl8MDtnPWIrNHwwO2s9Y1tnPj4yXXwwO209az4+PjA+PWo+Pj4wO2Q9bSYxO2lmKG0pe2NbZz4+Ml09ay1qO2o9bC1qfDA7Y1toPj4yXT1qfWVsc2V7Y1toPj4yXT1qO2o9YSs2MHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtqPWNbaD4+Ml18MH1pZihqPj4+MDwxNjc3NzIxNil7aj1jW2c+PjJdfDA7ZG97aj0obWQoY1tiPj4yXXwwKXwwKSYyNTV8ajw8ODtjW2c+PjJdPWo7bT1jW2g+PjJdPDw4O2NbaD4+Ml09bX13aGlsZShtPj4+MDwxNjc3NzIxNil9aD1hKzUyfDA7bT0oY1toPj4yXXwwKSsgLTF8MDtjW2g+PjJdPW07aWYoKG18MCkhPTApe209ZDtpPWU7cmV0dXJuIG18MH1iPWErNDh8MDtnPWNbYj4+Ml18MDtqPWErNjR8MDtrPShjW2o+PjJdfDApK2d8MDtjW2o+PjJdPWs7aWYoaz4+PjA+ODE5Mil7az0oaysxfDApPj4+MTtjW2o+PjJdPWs7bT1hKzYwfDA7YT0oKGNbbT4+Ml18MCkrMXwwKT4+PjE7Y1ttPj4yXT1hO2lmKChhfDApPT0oa3wwKSl7bT1rKzF8MDtjW2o+PjJdPW07aj1tfWVsc2V7aj1rO2s9YX19ZWxzZXtqPWs7az1jW2ErNjA+PjJdfDB9Y1tmPj4yXT0oZWEoMjE0NzQ4MzY0OC8oaj4+PjApfDAsayl8MCk+Pj4xODttPWcqNXwwO209bT4+PjA+MjU5PzY0Om0+Pj4yO2NbYj4+Ml09bTtjW2g+PjJdPW07bT1kO2k9ZTtyZXR1cm4gbXwwfWZ1bmN0aW9uIHNkKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2Y9aTtkPWErNHwwO2c9Y1tkPj4yXXwwO2U9YSs4fDA7aD1jW2U+PjJdfDA7aWYoYj4+PjA+MTkpe2o9aD4+PjE2O2NbZT4+Ml09ajtoPShnPj4+MCkvKGo+Pj4wKXwwO2c9Zy0oZWEoaCxqKXwwKXwwO2NbZD4+Ml09Zztkb3tnPShtZChjW2E+PjJdfDApfDApJjI1NXxnPDw4O2NbZD4+Ml09ZztqPWNbZT4+Ml08PDg7Y1tlPj4yXT1qfXdoaWxlKGo+Pj4wPDE2Nzc3MjE2KTtqPShzZChhLGIrIC0xNnwwKXwwKTw8MTZ8aCY2NTUzNTtpPWY7cmV0dXJuIGp8MH1qPWg+Pj5iO2NbZT4+Ml09ajtiPShnPj4+MCkvKGo+Pj4wKXwwO2c9Zy0oZWEoYixqKXwwKXwwO2NbZD4+Ml09ZztpZighKGo+Pj4wPDE2Nzc3MjE2KSl7aT1mO3JldHVybiBifDB9ZG97Zz0obWQoY1thPj4yXXwwKXwwKSYyNTV8Zzw8ODtjW2Q+PjJdPWc7aj1jW2U+PjJdPDw4O2NbZT4+Ml09an13aGlsZShqPj4+MDwxNjc3NzIxNik7aT1mO3JldHVybiBifDB9ZnVuY3Rpb24gdGQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7Zj1pO2k9aSs5NnwwO2g9Zis0NHwwO2Q9Zjt3PWIrMzZ8MDt1PWIrNDB8MDtpZigoY1t3Pj4yXXwwKSE9KGNbdT4+Ml18MCkpe2k9ZjtyZXR1cm59aj1iKzh8MDtlPWIrMjB8MDtpZigoY1tqPj4yXXwwKSE9MCl7Zz1iKzQ0fDA7bj1oKzR8MDttPWgrOHwwO2w9aCsxMnwwO2s9aCsxNnwwO289aCsyMHwwO3A9aCsyNHwwO3E9aCsyOHwwO3I9aCszMnwwO3M9aCszNnwwO3Q9aCs0MHwwO3Y9MDtkb3tjZChoLChjW2U+PjJdfDApKzF8MCk7eD1jW3U+PjJdfDA7aWYoeD4+PjA8KGNbZz4+Ml18MCk+Pj4wKXtpZigoeHwwKT09MCl7eD0wfWVsc2V7Y1t4Pj4yXT1jW2g+PjJdO2FbeCs0Pj4wXT1hW24+PjBdfDA7Y1t4Kzg+PjJdPWNbbT4+Ml07Y1t4KzEyPj4yXT1jW2w+PjJdO2NbeCsxNj4+Ml09Y1trPj4yXTtjW3grMjA+PjJdPWNbbz4+Ml07Y1t4KzI0Pj4yXT1jW3A+PjJdO2NbeCsyOD4+Ml09Y1txPj4yXTtjW3grMzI+PjJdPWNbcj4+Ml07Y1t4KzM2Pj4yXT1jW3M+PjJdO2NbeCs0MD4+Ml09Y1t0Pj4yXTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDt4PWNbdT4+Ml18MH1jW3U+PjJdPXgrNDR9ZWxzZXt1ZCh3LGgpfXg9Y1ttPj4yXXwwO2lmKCh4fDApIT0wKXt2bihjW3grIC00Pj4yXXwwKX14PWNbbD4+Ml18MDtpZigoeHwwKSE9MCl7dm4oY1t4KyAtND4+Ml18MCl9eD1jW2s+PjJdfDA7aWYoKHh8MCkhPTApe3ZuKGNbeCsgLTQ+PjJdfDApfXY9disxfDB9d2hpbGUodj4+PjA8KGNbaj4+Ml18MCk+Pj4wKX1pZigoY1tlPj4yXXwwKT09MCl7aT1mO3JldHVybn10PWIrMTJ8MDtrPWIrNzJ8MDtzPWIrNzZ8MDtsPWQrNHwwO2o9ZCs4fDA7bz1kKzEyfDA7aD1kKzE2fDA7bT1kKzIwfDA7bj1kKzI0fDA7Zz1kKzI4fDA7cD1kKzMyfDA7cT1kKzM2fDA7cj1kKzQwfDA7Yj1iKzY4fDA7dT0xO2Rve3Y9Y1t0Pj4yXXwwO2NkKGQsMTw8KHU+Pj4wPnY+Pj4wP3Y6dSkpO3Y9Y1trPj4yXXwwO2lmKHY+Pj4wPChjW3M+PjJdfDApPj4+MCl7aWYoKHZ8MCk9PTApe3Y9MH1lbHNle2Nbdj4+Ml09Y1tkPj4yXTthW3YrND4+MF09YVtsPj4wXXwwO2Nbdis4Pj4yXT1jW2o+PjJdO2NbdisxMj4+Ml09Y1tvPj4yXTtjW3YrMTY+PjJdPWNbaD4+Ml07Y1t2KzIwPj4yXT1jW20+PjJdO2NbdisyND4+Ml09Y1tuPj4yXTtjW3YrMjg+PjJdPWNbZz4+Ml07Y1t2KzMyPj4yXT1jW3A+PjJdO2NbdiszNj4+Ml09Y1txPj4yXTtjW3YrNDA+PjJdPWNbcj4+Ml07Y1tqKzA+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7dj1jW2s+PjJdfDB9Y1trPj4yXT12KzQ0fWVsc2V7dWQoYixkKX12PWNbaj4+Ml18MDtpZigodnwwKSE9MCl7dm4oY1t2KyAtND4+Ml18MCl9dj1jW28+PjJdfDA7aWYoKHZ8MCkhPTApe3ZuKGNbdisgLTQ+PjJdfDApfXY9Y1toPj4yXXwwO2lmKCh2fDApIT0wKXt2bihjW3YrIC00Pj4yXXwwKX11PXUrMXwwfXdoaWxlKCEodT4+PjA+KGNbZT4+Ml18MCk+Pj4wKSk7aT1mO3JldHVybn1mdW5jdGlvbiB1ZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2U9aTtmPWIrNHwwO209Y1tmPj4yXXwwO2s9Y1tiPj4yXXwwO2w9aztoPShtLWx8MCkvNDR8MDtqPWgrMXwwO2lmKGo+Pj4wPjk3NjEyODkzKXtUaygpfWc9Yis4fDA7bD0oKGNbZz4+Ml18MCktbHwwKS80NHwwO2lmKGw+Pj4wPDQ4ODA2NDQ2KXtvPWw8PDE7bz1vPj4+MDxqPj4+MD9qOm87aWYoKG98MCk9PTApe3A9MDtsPTB9ZWxzZXtuPTV9fWVsc2V7bz05NzYxMjg5MztuPTV9ZG97aWYoKG58MCk9PTUpe3A9byo0NHwwO3A9KHB8MCk9PTA/MTpwO3doaWxlKDEpe2w9dW4ocCl8MDtpZigobHwwKSE9MCl7bj0xMTticmVha31sPWNbNTY2Nl18MDtjWzU2NjZdPWwrMDtpZigobHwwKT09MCl7YnJlYWt9c2NbbCYzMV0oKX1pZigobnwwKT09MTEpe3A9bzticmVha31wPVhhKDQpfDA7Y1twPj4yXT0yMjY4MDt3YihwfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7bz1sKyhoKjQ0fDApfDA7bj1sKyhwKjQ0fDApfDA7aWYoKG98MCkhPTApe2Nbbz4+Ml09Y1tkPj4yXTthW2wrKGgqNDR8MCkrND4+MF09YVtkKzQ+PjBdfDA7bT1kKzh8MDtjW2wrKGgqNDR8MCkrOD4+Ml09Y1ttPj4yXTtjW2wrKGgqNDR8MCkrMTI+PjJdPWNbZCsxMj4+Ml07Y1tsKyhoKjQ0fDApKzE2Pj4yXT1jW2QrMTY+PjJdO2NbbCsoaCo0NHwwKSsyMD4+Ml09Y1tkKzIwPj4yXTtjW2wrKGgqNDR8MCkrMjQ+PjJdPWNbZCsyND4+Ml07Y1tsKyhoKjQ0fDApKzI4Pj4yXT1jW2QrMjg+PjJdO2NbbCsoaCo0NHwwKSszMj4+Ml09Y1tkKzMyPj4yXTtjW2wrKGgqNDR8MCkrMzY+PjJdPWNbZCszNj4+Ml07Y1tsKyhoKjQ0fDApKzQwPj4yXT1jW2QrNDA+PjJdO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO209Y1tmPj4yXXwwO2s9Y1tiPj4yXXwwfWo9bCsoaio0NHwwKXwwO2lmKChtfDApIT0oa3wwKSl7aD1oKyAtMS0oKChtKyAtNDQrKDAtayl8MCk+Pj4wKS80NHwwKXwwO3doaWxlKDEpe2Q9bTttPW0rIC00NHwwO2NbbysgLTQ0Pj4yXT1jW20+PjJdO2FbbysgLTQwPj4wXT1hW2QrIC00MD4+MF18MDtwPWQrIC0zNnwwO2NbbysgLTM2Pj4yXT1jW3A+PjJdO2NbbysgLTMyPj4yXT1jW2QrIC0zMj4+Ml07Y1tvKyAtMjg+PjJdPWNbZCsgLTI4Pj4yXTtjW28rIC0yND4+Ml09Y1tkKyAtMjQ+PjJdO2NbbysgLTIwPj4yXT1jW2QrIC0yMD4+Ml07Y1tvKyAtMTY+PjJdPWNbZCsgLTE2Pj4yXTtjW28rIC0xMj4+Ml09Y1tkKyAtMTI+PjJdO2NbbysgLTg+PjJdPWNbZCsgLTg+PjJdO2NbbysgLTQ+PjJdPWNbZCsgLTQ+PjJdO2NbcCswPj4yXT0wO2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0wO2lmKChtfDApPT0oa3wwKSl7YnJlYWt9ZWxzZXtvPW8rIC00NHwwfX1tPWNbYj4+Ml18MDtrPWNbZj4+Ml18MDtjW2I+PjJdPWwrKGgqNDR8MCk7Y1tmPj4yXT1qO2NbZz4+Ml09bjtpZigoa3wwKSE9KG18MCkpe2Rve2Y9Y1trKyAtMzY+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1trKyAtMzI+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1trKyAtMjg+PjJdfDA7az1rKyAtNDR8MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9fXdoaWxlKChrfDApIT0obXwwKSl9fWVsc2V7Y1tiPj4yXT1vO2NbZj4+Ml09ajtjW2c+PjJdPW59aWYoKG18MCk9PTApe2k9ZTtyZXR1cm59dm4obSk7aT1lO3JldHVybn1mdW5jdGlvbiB2ZChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gd2QoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1jW2ErMTI+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24geWQoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT0xNDA4KXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIHpkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEFkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zz1lO2Y9Y1tiKzg+PjJdfDA7Yj1jW2IrND4+Ml18MDtqZChnLGYsYik7aD1jW2c+PjJdfDA7YVtkKzM+PjBdPWg+Pj4yNDthW2QrMj4+MF09aD4+PjE2O2FbZCsxPj4wXT1oPj4+ODthW2Q+PjBdPWg7aD1jW2crND4+Ml18MDthW2QrNz4+MF09aD4+PjI0O2FbZCs2Pj4wXT1oPj4+MTY7YVtkKzU+PjBdPWg+Pj44O2FbZCs0Pj4wXT1oO2g9Y1tnKzg+PjJdfDA7YVtkKzExPj4wXT1oPj4+MjQ7YVtkKzEwPj4wXT1oPj4+MTY7YVtkKzk+PjBdPWg+Pj44O2FbZCs4Pj4wXT1oO2g9Y1tnKzEyPj4yXXwwO2FbZCsxMz4+MF09KGgmNjU1MzUpPj4+ODthW2QrMTI+PjBdPWg7YVtkKzE0Pj4wXT1oPj4+MTY7YVtkKzE1Pj4wXT1oPj4+MjQ7Zz1jW2crMTY+PjJdfDA7YVtkKzE2Pj4wXT1nO2FbZCsxNz4+MF09KGcmNjU1MzUpPj4+ODthW2QrMTk+PjBdPWc+Pj4yNDthW2QrMTg+PjBdPWc+Pj4xNjtsZChmKzQ3ODR8MCxiLGQrMjB8MCk7aT1lO3JldHVybn1mdW5jdGlvbiBCZChhKXthPWF8MDt2YXIgYj0wO2I9aTtjW2E+PjJdPTE3MjA7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1hZChhKzQ3ODR8MCk7WGMoYSk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBDZChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7Y1thPj4yXT0xNzIwO2Q9Y1thKzg+PjJdfDA7aWYoKGR8MCk9PTApe3ZuKGEpO2k9YjtyZXR1cm59YWQoZCs0Nzg0fDApO1hjKGQpO3ZuKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gRGQoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEVkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEZkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2E9Y1thKzEyPj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEdkKGEsYil7YT1hfDA7Yj1ifDA7aWYoKGNbYis0Pj4yXXwwKT09MjM3Nil7YT1hKzEyfDB9ZWxzZXthPTB9cmV0dXJuIGF8MH1mdW5jdGlvbiBIZChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBJZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrMzJ8MDtoPWU7Zj1jW2IrOD4+Ml18MDtiPWNbYis0Pj4yXXwwO2pkKGgsZixiKTtnPWNbaD4+Ml18MDthW2QrMz4+MF09Zz4+PjI0O2FbZCsyPj4wXT1nPj4+MTY7YVtkKzE+PjBdPWc+Pj44O2FbZD4+MF09ZztnPWNbaCs0Pj4yXXwwO2FbZCs3Pj4wXT1nPj4+MjQ7YVtkKzY+PjBdPWc+Pj4xNjthW2QrNT4+MF09Zz4+Pjg7YVtkKzQ+PjBdPWc7Zz1jW2grOD4+Ml18MDthW2QrMTE+PjBdPWc+Pj4yNDthW2QrMTA+PjBdPWc+Pj4xNjthW2QrOT4+MF09Zz4+Pjg7YVtkKzg+PjBdPWc7Zz1jW2grMTI+PjJdfDA7YVtkKzEzPj4wXT0oZyY2NTUzNSk+Pj44O2FbZCsxMj4+MF09ZzthW2QrMTQ+PjBdPWc+Pj4xNjthW2QrMTU+PjBdPWc+Pj4yNDtoPWNbaCsxNj4+Ml18MDthW2QrMTY+PjBdPWg7YVtkKzE3Pj4wXT0oaCY2NTUzNSk+Pj44O2FbZCsxOT4+MF09aD4+PjI0O2FbZCsxOD4+MF09aD4+PjE2O2g9a2QoZis0Nzg0fDAsYil8MDtnPUk7YVtkKzIzPj4wXT1oPj4+MjQ7YVtkKzIyPj4wXT1oPj4+MTY7YVtkKzIxPj4wXT1oPj4+ODthW2QrMjA+PjBdPWg7aj1LbihofDAsZ3wwLDU2KXwwO2FbZCsyNz4+MF09ajtqPUtuKGh8MCxnfDAsNDgpfDA7YVtkKzI2Pj4wXT1qO2g9S24oaHwwLGd8MCw0MCl8MDthW2QrMjU+PjBdPWg7YVtkKzI0Pj4wXT1nO2Q9Zis1MTEyfDA7aWYoKGFbZD4+MF18MCk9PTApe2k9ZTtyZXR1cm59aj0oKG1kKGNbYj4+Ml18MCl8MCkmMjU1KTw8MjQ7aj0oKG1kKGNbYj4+Ml18MCl8MCkmMjU1KTw8MTZ8ajtqPWp8KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDg7Y1tiKzQ+PjJdPWp8KG1kKGNbYj4+Ml18MCl8MCkmMjU1O2FbZD4+MF09MDtpPWU7cmV0dXJufWZ1bmN0aW9uIEpkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2NbYT4+Ml09MjY2NDthPWNbYSs4Pj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufV9jKGErNTA5NnwwKTtfYyhhKzUwNjR8MCk7WmMoYSs0OTQ4fDApOyRjKGErNDc4NHwwKTtYYyhhKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEtkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtjW2E+PjJdPTI2NjQ7ZD1jW2ErOD4+Ml18MDtpZigoZHwwKT09MCl7dm4oYSk7aT1iO3JldHVybn1fYyhkKzUwOTZ8MCk7X2MoZCs1MDY0fDApO1pjKGQrNDk0OHwwKTskYyhkKzQ3ODR8MCk7WGMoZCk7dm4oZCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBMZChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gTWQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gTmQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1jW2ErMTI+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gT2QoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT0zMzIwKXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIFBkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFFkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zz1lO2Y9Y1tiKzg+PjJdfDA7Yj1jW2IrND4+Ml18MDtqZChnLGYsYik7aD1jW2c+PjJdfDA7YVtkKzM+PjBdPWg+Pj4yNDthW2QrMj4+MF09aD4+PjE2O2FbZCsxPj4wXT1oPj4+ODthW2Q+PjBdPWg7aD1jW2crND4+Ml18MDthW2QrNz4+MF09aD4+PjI0O2FbZCs2Pj4wXT1oPj4+MTY7YVtkKzU+PjBdPWg+Pj44O2FbZCs0Pj4wXT1oO2g9Y1tnKzg+PjJdfDA7YVtkKzExPj4wXT1oPj4+MjQ7YVtkKzEwPj4wXT1oPj4+MTY7YVtkKzk+PjBdPWg+Pj44O2FbZCs4Pj4wXT1oO2g9Y1tnKzEyPj4yXXwwO2FbZCsxMz4+MF09KGgmNjU1MzUpPj4+ODthW2QrMTI+PjBdPWg7YVtkKzE0Pj4wXT1oPj4+MTY7YVtkKzE1Pj4wXT1oPj4+MjQ7Zz1jW2crMTY+PjJdfDA7YVtkKzE2Pj4wXT1nO2FbZCsxNz4+MF09KGcmNjU1MzUpPj4+ODthW2QrMTk+PjBdPWc+Pj4yNDthW2QrMTg+PjBdPWc+Pj4xNjtkPWYrNDc4NHwwO2lmKChhW2Q+PjBdfDApPT0wKXtpPWU7cmV0dXJufWg9KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDI0O2g9KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDE2fGg7aD1ofCgobWQoY1tiPj4yXXwwKXwwKSYyNTUpPDw4O2NbYis0Pj4yXT1ofChtZChjW2I+PjJdfDApfDApJjI1NTthW2Q+PjBdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBSZChhKXthPWF8MDt2YXIgYj0wO2I9aTtjW2E+PjJdPTM2MDg7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1YYyhhKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFNkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtjW2E+PjJdPTM2MDg7ZD1jW2ErOD4+Ml18MDtpZigoZHwwKT09MCl7dm4oYSk7aT1iO3JldHVybn1YYyhkKTt2bihkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFRkKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBVZChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBWZChhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1sY1tjWyhjW2E+PjJdfDApKzg+PjJdJjI1NV0oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBXZChhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTQyMTYpe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gWGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gWWQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7Y1tiPj4yXT00NTAwO2NbYis2ND4+Ml09NDU0MDtjW2IrOD4+Ml09NDUyMDtlPWIrMTJ8MDtjW2U+PjJdPTQ2ODg7aWYoISgoYVtiKzQ0Pj4wXSYxKT09MCk/KGY9Y1tiKzUyPj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1jW2U+PjJdPTEwNjY0O2U9Y1tiKzE2Pj4yXXwwO2c9ZSs0fDA7Zj1jW2c+PjJdfDA7Y1tnPj4yXT1mKyAtMTtpZigoZnwwKSE9MCl7Zz1iKzY0fDA7cmcoZyk7aT1kO3JldHVybn1sY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSk7Zz1iKzY0fDA7cmcoZyk7aT1kO3JldHVybn1mdW5jdGlvbiBaZChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9aTtnPWIrIC04fDA7Y1tnPj4yXT00NTAwO2I9Zys2NHwwO2NbYj4+Ml09NDU0MDtjW2crOD4+Ml09NDUyMDtmPWcrMTJ8MDtjW2Y+PjJdPTQ2ODg7aWYoISgoYVtnKzQ0Pj4wXSYxKT09MCk/KGU9Y1tnKzUyPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1jW2Y+PjJdPTEwNjY0O2U9Y1tnKzE2Pj4yXXwwO2Y9ZSs0fDA7Zz1jW2Y+PjJdfDA7Y1tmPj4yXT1nKyAtMTtpZigoZ3wwKSE9MCl7cmcoYik7aT1kO3JldHVybn1sY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSk7cmcoYik7aT1kO3JldHVybn1mdW5jdGlvbiBfZChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtlPWk7Zz1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7Y1tiK2c+PjJdPTQ1MDA7ZD1iKyhnKzY0KXwwO2NbZD4+Ml09NDU0MDtjW2IrKGcrOCk+PjJdPTQ1MjA7Zj1iKyhnKzEyKXwwO2NbZj4+Ml09NDY4ODtpZighKChhW2IrKGcrNDQpPj4wXSYxKT09MCk/KGg9Y1tiKyhnKzUyKT4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9Y1tmPj4yXT0xMDY2NDtiPWNbYisoZysxNik+PjJdfDA7Zz1iKzR8MDtoPWNbZz4+Ml18MDtjW2c+PjJdPWgrIC0xO2lmKChofDApIT0wKXtyZyhkKTtpPWU7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtyZyhkKTtpPWU7cmV0dXJufWZ1bmN0aW9uICRkKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1pO2NbYj4+Ml09NDUwMDtjW2IrNjQ+PjJdPTQ1NDA7Y1tiKzg+PjJdPTQ1MjA7ZT1iKzEyfDA7Y1tlPj4yXT00Njg4O2lmKCEoKGFbYis0ND4+MF0mMSk9PTApPyhmPWNbYis1Mj4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9Y1tlPj4yXT0xMDY2NDtlPWNbYisxNj4+Ml18MDtnPWUrNHwwO2Y9Y1tnPj4yXXwwO2NbZz4+Ml09ZisgLTE7aWYoKGZ8MCk9PTApe2xjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKX1yZyhiKzY0fDApO2lmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gYWUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZD1pO2Y9YisgLTh8MDtjW2Y+PjJdPTQ1MDA7Yj1mKzY0fDA7Y1tiPj4yXT00NTQwO2NbZis4Pj4yXT00NTIwO2c9ZisxMnwwO2NbZz4+Ml09NDY4ODtpZighKChhW2YrNDQ+PjBdJjEpPT0wKT8oZT1jW2YrNTI+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWNbZz4+Ml09MTA2NjQ7ZT1jW2YrMTY+PjJdfDA7aD1lKzR8MDtnPWNbaD4+Ml18MDtjW2g+PjJdPWcrIC0xO2lmKChnfDApIT0wKXtyZyhiKTt2bihmKTtpPWQ7cmV0dXJufWxjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKTtyZyhiKTt2bihmKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGJlKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtkPWk7aD1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7Zj1iK2h8MDtjW2Y+PjJdPTQ1MDA7ZT1iKyhoKzY0KXwwO2NbZT4+Ml09NDU0MDtjW2IrKGgrOCk+PjJdPTQ1MjA7Zz1iKyhoKzEyKXwwO2NbZz4+Ml09NDY4ODtpZighKChhW2IrKGgrNDQpPj4wXSYxKT09MCk/KGo9Y1tiKyhoKzUyKT4+Ml18MCwoanwwKSE9MCk6MCl7dm4oail9Y1tnPj4yXT0xMDY2NDtiPWNbYisoaCsxNik+PjJdfDA7aD1iKzR8MDtqPWNbaD4+Ml18MDtjW2g+PjJdPWorIC0xO2lmKChqfDApPT0wKXtsY1tjWyhjW2I+PjJdfDApKzg+PjJdJjI1NV0oYil9cmcoZSk7aWYoKGZ8MCk9PTApe2k9ZDtyZXR1cm59dm4oZik7aT1kO3JldHVybn1mdW5jdGlvbiBjZShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2NbYj4+Ml09NDY4ODtpZighKChhW2IrMzI+PjBdJjEpPT0wKT8oZT1jW2IrNDA+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWNbYj4+Ml09MTA2NjQ7Yj1jW2IrND4+Ml18MDtmPWIrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe2k9ZDtyZXR1cm59bGNbY1soY1tiPj4yXXwwKSs4Pj4yXSYyNTVdKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZGUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7Y1tiPj4yXT00Njg4O2lmKCEoKGFbYiszMj4+MF0mMSk9PTApPyhlPWNbYis0MD4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9Y1tiPj4yXT0xMDY2NDtlPWNbYis0Pj4yXXwwO2c9ZSs0fDA7Zj1jW2c+PjJdfDA7Y1tnPj4yXT1mKyAtMTtpZigoZnwwKT09MCl7bGNbY1soY1tlPj4yXXwwKSs4Pj4yXSYyNTVdKGUpfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZWUoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtsPWk7bz1kKzQ0fDA7bT1jW28+PjJdfDA7az1kKzI0fDA7aj1jW2s+PjJdfDA7aWYobT4+PjA8aj4+PjApe2Nbbz4+Ml09ajttPWp9bz1oJjI0O2Rve2lmKChvfDApPT0wKXtvPWI7Y1tvPj4yXT0wO2Nbbys0Pj4yXT0wO289Yis4fDA7Y1tvPj4yXT0tMTtjW28rND4+Ml09LTE7aT1sO3JldHVybn1lbHNlIGlmKChvfDApIT0yNCl7aWYoKGd8MCk9PTIpe249MTE7YnJlYWt9ZWxzZSBpZigoZ3wwKT09MCl7Zz0wO289MDticmVha31lbHNlIGlmKChnfDApIT0xKXtuPTE1O2JyZWFrfWlmKChoJjh8MCk9PTApe289ai0oY1tkKzIwPj4yXXwwKXwwO2c9bztvPSgob3wwKTwwKTw8MzE+PjMxO2JyZWFrfWVsc2V7bz0oY1tkKzEyPj4yXXwwKS0oY1tkKzg+PjJdfDApfDA7Zz1vO289KChvfDApPDApPDwzMT4+MzE7YnJlYWt9fWVsc2V7aWYoKGd8MCk9PTIpe249MTE7YnJlYWt9ZWxzZSBpZigoZ3wwKT09MCl7Zz0wO289MDticmVha31lbHNlIGlmKChnfDApIT0xKXtuPTE1O2JyZWFrfW89YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufX13aGlsZSgwKTtpZigobnwwKT09MTUpe289YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufWlmKChufDApPT0xMSl7bj1kKzMyfDA7aWYoKGFbbj4+MF0mMSk9PTApe249bisxfDB9ZWxzZXtuPWNbZCs0MD4+Ml18MH1vPW0tbnwwO2c9bztvPSgob3wwKTwwKTw8MzE+PjMxfWY9SW4oZ3wwLG98MCxlfDAsZnwwKXwwO2U9STtpZigoZXwwKT49MCl7bj1kKzMyfDA7aWYoKGFbbj4+MF0mMSk9PTApe249bisxfDB9ZWxzZXtuPWNbZCs0MD4+Ml18MH1vPW0tbnwwO2c9KChvfDApPDApPDwzMT4+MzE7aWYoISgoZ3wwKTwoZXwwKXwoZ3wwKT09KGV8MCkmbz4+PjA8Zj4+PjApKXtuPWgmODtpZighKChmfDApPT0wJihlfDApPT0wKSl7aWYoKG58MCkhPTA/KGNbZCsxMj4+Ml18MCk9PTA6MCl7bz1iO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtvPWIrOHwwO2Nbbz4+Ml09LTE7Y1tvKzQ+PjJdPS0xO2k9bDtyZXR1cm59aWYoKGgmMTZ8MCkhPTAmKGp8MCk9PTApe289YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufX1pZigobnwwKSE9MCl7Y1tkKzEyPj4yXT0oY1tkKzg+PjJdfDApK2Y7Y1tkKzE2Pj4yXT1tfWlmKChoJjE2fDApIT0wKXtjW2s+PjJdPShjW2QrMjA+PjJdfDApK2Z9bz1iO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtvPWIrOHwwO2Nbbz4+Ml09ZjtjW28rND4+Ml09ZTtpPWw7cmV0dXJufX1vPWI7Y1tvPj4yXT0wO2Nbbys0Pj4yXT0wO289Yis4fDA7Y1tvPj4yXT0tMTtjW28rND4+Ml09LTE7aT1sO3JldHVybn1mdW5jdGlvbiBmZShhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wO2Y9aTtkPWQrOHwwO3djW2NbKGNbYj4+Ml18MCkrMTY+PjJdJjYzXShhLGIsY1tkPj4yXXwwLGNbZCs0Pj4yXXwwLDAsZSk7aT1mO3JldHVybn1mdW5jdGlvbiBnZShhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wO2I9aTtmPWErNDR8MDtnPWNbZj4+Ml18MDtlPWNbYSsyND4+Ml18MDtpZihnPj4+MDxlPj4+MCl7Y1tmPj4yXT1lfWVsc2V7ZT1nfWlmKChjW2ErNDg+PjJdJjh8MCk9PTApe2c9LTE7aT1iO3JldHVybiBnfDB9Zj1hKzE2fDA7Zz1jW2Y+PjJdfDA7YT1jW2ErMTI+PjJdfDA7aWYoZz4+PjA8ZT4+PjApe2NbZj4+Ml09ZX1lbHNle2U9Z31pZighKGE+Pj4wPGU+Pj4wKSl7Zz0tMTtpPWI7cmV0dXJuIGd8MH1nPWRbYT4+MF18MDtpPWI7cmV0dXJuIGd8MH1mdW5jdGlvbiBoZShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZT1pO2c9Yis0NHwwO2Y9Y1tnPj4yXXwwO2o9Y1tiKzI0Pj4yXXwwO2lmKGY+Pj4wPGo+Pj4wKXtjW2c+PjJdPWp9ZWxzZXtqPWZ9Zj1iKzh8MDtnPWNbZj4+Ml18MDtoPWIrMTJ8MDtsPWNbaD4+Ml18MDtpZighKGc+Pj4wPGw+Pj4wKSl7bD0tMTtpPWU7cmV0dXJuIGx8MH1pZigoZHwwKT09LTEpe2NbZj4+Ml09ZztjW2g+PjJdPWwrIC0xO2NbYisxNj4+Ml09ajtsPTA7aT1lO3JldHVybiBsfDB9aWYoKGNbYis0OD4+Ml0mMTZ8MCk9PTApe2s9ZCYyNTU7bD1sKyAtMXwwO2lmKCEoazw8MjQ+PjI0PT0oYVtsPj4wXXwwKSkpe2w9LTE7aT1lO3JldHVybiBsfDB9fWVsc2V7az1kJjI1NTtsPWwrIC0xfDB9Y1tmPj4yXT1nO2NbaD4+Ml09bDtjW2IrMTY+PjJdPWo7YVtsPj4wXT1rO2w9ZDtpPWU7cmV0dXJuIGx8MH1mdW5jdGlvbiBpZShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7aj1pO2lmKChkfDApPT0tMSl7dT0wO2k9ajtyZXR1cm4gdXwwfWc9YisxMnwwO2U9Yis4fDA7Zj0oY1tnPj4yXXwwKS0oY1tlPj4yXXwwKXwwO2g9YisyNHwwO249Y1toPj4yXXwwO2s9YisyOHwwO209Y1trPj4yXXwwO2lmKChufDApPT0obXwwKSl7bD1iKzQ4fDA7aWYoKGNbbD4+Ml0mMTZ8MCk9PTApe3U9LTE7aT1qO3JldHVybiB1fDB9bT1iKzIwfDA7cD1jW20+PjJdfDA7bj1uLXB8MDtvPWIrNDR8MDtwPShjW28+PjJdfDApLXB8MDtxPWIrMzJ8MDtyPWFbcT4+MF18MDtzPShyJjEpIT0wO2lmKHMpe3Q9KGNbcT4+Ml0mLTIpKyAtMXwwO3I9Y1tiKzM2Pj4yXXwwfWVsc2V7dD0xMDtyPShyJjI1NSk+Pj4xfWlmKChyfDApPT0odHwwKSl7bGcocSx0LDEsdCx0LDApO2lmKChhW3E+PjBdJjEpPT0wKXtzPTEyfWVsc2V7cz0xM319ZWxzZXtpZihzKXtzPTEzfWVsc2V7cz0xMn19aWYoKHN8MCk9PTEyKXthW3E+PjBdPShyPDwxKSsyO3U9cSsxfDA7dD1yKzF8MH1lbHNlIGlmKChzfDApPT0xMyl7dT1jW2IrNDA+PjJdfDA7dD1yKzF8MDtjW2IrMzY+PjJdPXR9YVt1K3I+PjBdPTA7YVt1K3Q+PjBdPTA7dD1hW3E+PjBdfDA7aWYoKHQmMSk9PTApe3I9MTB9ZWxzZXtyPWNbcT4+Ml18MDt0PXImMjU1O3I9KHImLTIpKyAtMXwwfXM9KHQmMSk9PTA7aWYocyl7dD0odCYyNTUpPj4+MX1lbHNle3Q9Y1tiKzM2Pj4yXXwwfWRve2lmKCEodD4+PjA8cj4+PjApKXtpZihzKXthW3ErcisxPj4wXT0wO2FbcT4+MF09cjw8MTticmVha31lbHNle2FbKGNbYis0MD4+Ml18MCkrcj4+MF09MDtjW2IrMzY+PjJdPXI7YnJlYWt9fWVsc2V7aGcocSxyLXR8MCl9fXdoaWxlKDApO3I9YVtxPj4wXXwwO2lmKChyJjEpPT0wKXtxPXErMXwwO3I9KHImMjU1KT4+PjF9ZWxzZXtxPWNbYis0MD4+Ml18MDtyPWNbYiszNj4+Ml18MH10PXErcnwwO2NbbT4+Ml09cTtjW2s+PjJdPXQ7bj1xK258MDtjW2g+PjJdPW47dT1xK3B8MDtjW28+PjJdPXU7az10O289dX1lbHNle2w9Yis0OHwwO2s9bTtvPWNbYis0ND4+Ml18MH1tPW4rMXwwO289bT4+PjA8bz4+PjA/bzptO2NbYis0ND4+Ml09bztpZigoY1tsPj4yXSY4fDApIT0wKXtsPWIrMzJ8MDtpZigoYVtsPj4wXSYxKT09MCl7bD1sKzF8MH1lbHNle2w9Y1tiKzQwPj4yXXwwfWNbZT4+Ml09bDtjW2c+PjJdPWwrZjtjW2IrMTY+PjJdPW99aWYoKG58MCk9PShrfDApKXt1PXhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGQmMjU1KXwwO2k9ajtyZXR1cm4gdXwwfWVsc2V7Y1toPj4yXT1tO2Fbbj4+MF09ZDt1PWQmMjU1O2k9ajtyZXR1cm4gdXwwfXJldHVybiAwfWZ1bmN0aW9uIGplKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBrZShhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBsZShhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBtZShhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTUwNDgpe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gbmUoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gb2UoYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxsPTAsbT0wLG49MCxvPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsSj0wLjAsSz0wLjAsTD0wLjAsTT0wLjAsTj0wLjAsTz0wLjA7ZT1pO2k9aSsyNTZ8MDtmPWUrODB8MDtvPWU7bj1lKzEwNHwwO209ZSsyMjR8MDtqPWUrMjA4fDA7Zz1lKzEyOHwwO3g9ZSsyNDB8MDt2PWUrMTEyfDA7cz1lKzU2fDA7ej1jW2I+PjJdfDA7eT16KzEzfDA7aWYoKGFbeT4+MF18MCk9PTApe0g9eis0fDA7RT16Kzh8MDtHPWNbRT4+Ml18MDtGPShjW0g+PjJdfDApLUd8MDtGPShGfDApPDQ/Rjo0O01uKHh8MCwoY1t6Pj4yXXwwKStHfDAsRnwwKXwwO0c9KGNbRT4+Ml18MCkrRnwwO2NbRT4+Ml09RztjW3orMTY+PjJdPUY7aWYoKEd8MCk+PShjW0g+PjJdfDApKXthW3k+PjBdPTF9fWVsc2V7YVt6KzEyPj4wXT0xfWFbdj4+MF09ODtCPXYrMXwwO2FbQj4+MF09YVt4Pj4wXXwwO2FbdisyPj4wXT1hW3grMT4+MF18MDthW3YrMz4+MF09YVt4KzI+PjBdfDA7eT12KzR8MDthW3k+PjBdPWFbeCszPj4wXXwwO2FbdisoeCsoNC14KSkrMT4+MF09MDt6PWFbdj4+MF18MDt4PSh6JjEpPT0wO2lmKHgpe3k9KHomMjU1KT4+PjF9ZWxzZXtCPWNbdis4Pj4yXXwwO3k9Y1t5Pj4yXXwwfXo9eT4+PjA+NDtBPXo/NDp5O2E6ZG97aWYoKEF8MCkhPTApe0M9NTIzMjt3aGlsZSgxKXtEPWFbQj4+MF18MDtFPWFbQz4+MF18MDtpZighKEQ8PDI0Pj4yND09RTw8MjQ+PjI0KSl7YnJlYWt9QT1BKyAtMXwwO2lmKChBfDApPT0wKXtsPTEyO2JyZWFrIGF9ZWxzZXtCPUIrMXwwO0M9QysxfDB9fWlmKCEoRDw8MjQ+PjI0PT1FPDwyND4+MjQpKXt5PShEJjI1NSktKEUmMjU1KXwwfWVsc2V7bD0xMn19ZWxzZXtsPTEyfX13aGlsZSgwKTtpZigobHwwKT09MTIpe3k9eT4+PjA8ND8tMTp6JjF9eT0oeXwwKT09MDtpZigheD8odz1jW3YrOD4+Ml18MCwod3wwKSE9MCk6MCl7dm4odyl9aWYoIXkpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11bigzNil8MDtpZigoYnwwKSE9MCl7bD0yMzticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjMpe2NbYis0Pj4yXT0yMztjW2I+PjJdPTIzO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj03MDU2fDA7ZT1mKzI0fDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTcwODg7d2IoZ3wwLDUyNzIsODYpfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfXY9U2MoODM1Miw1Mjg4KXwwO3c9Y1t2KygoY1soY1t2Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7eD13KzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9ej0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7eT1jW3crOD4+Ml18MDtpZigoY1t3KzEyPj4yXXwwKS15Pj4yPj4+MD56Pj4+MD8odT1jW3krKHo8PDIpPj4yXXwwLCh1fDApIT0wKTowKXt1PXhjW2NbKGNbdT4+Ml18MCkrMjg+PjJdJjYzXSh1LDEwKXwwO0g9Y1t4Pj4yXXwwO2NbeD4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbdz4+Ml18MCkrOD4+Ml0mMjU1XSh3KX1saCh2LHUpO1lnKHYpO3U9Y1tiPj4yXXwwO2lmKChjW3UrND4+Ml18MCk+MCl7Y1t1Kzg+PjJdPTB9ZWxzZXthW3UrMTI+PjBdPTF9dj1jW2I+PjJdfDA7dT1iKzIwfDA7dz12KzEzfDA7aWYoKGFbdz4+MF18MCk9PTApe0g9dis0fDA7RT12Kzh8MDtHPWNbRT4+Ml18MDtGPShjW0g+PjJdfDApLUd8MDtGPShGfDApPDIyNz9GOjIyNztNbih1fDAsKGNbdj4+Ml18MCkrR3wwLEZ8MCl8MDtHPShjW0U+PjJdfDApK0Z8MDtjW0U+PjJdPUc7Y1t2KzE2Pj4yXT1GO2lmKChHfDApPj0oY1tIPj4yXXwwKSl7YVt3Pj4wXT0xfX1lbHNle2FbdisxMj4+MF09MX1DPWIrMTk5fDA7YVtrPj4wXT1hW0M+PjBdO2FbaysxPj4wXT1hW0MrMT4+MF07YVtrKzI+PjBdPWFbQysyPj4wXTthW2srMz4+MF09YVtDKzM+PjBdO2Fbays0Pj4wXT1hW0MrND4+MF07YVtrKzU+PjBdPWFbQys1Pj4wXTthW2srNj4+MF09YVtDKzY+PjBdO2Fbays3Pj4wXT1hW0MrNz4+MF07Tj0raFtrPj4zXTtFPWIrMjA3fDA7YVtrPj4wXT1hW0U+PjBdO2FbaysxPj4wXT1hW0UrMT4+MF07YVtrKzI+PjBdPWFbRSsyPj4wXTthW2srMz4+MF09YVtFKzM+PjBdO2Fbays0Pj4wXT1hW0UrND4+MF07YVtrKzU+PjBdPWFbRSs1Pj4wXTthW2srNj4+MF09YVtFKzY+PjBdO2Fbays3Pj4wXT1hW0UrNz4+MF07Tz0raFtrPj4zXTtHPWIrMjE1fDA7YVtrPj4wXT1hW0c+PjBdO2FbaysxPj4wXT1hW0crMT4+MF07YVtrKzI+PjBdPWFbRysyPj4wXTthW2srMz4+MF09YVtHKzM+PjBdO2Fbays0Pj4wXT1hW0crND4+MF07YVtrKzU+PjBdPWFbRys1Pj4wXTthW2srNj4+MF09YVtHKzY+PjBdO2Fbays3Pj4wXT1hW0crNz4+MF07TD0raFtrPj4zXTtEPWIrMjIzfDA7YVtrPj4wXT1hW0Q+PjBdO2FbaysxPj4wXT1hW0QrMT4+MF07YVtrKzI+PjBdPWFbRCsyPj4wXTthW2srMz4+MF09YVtEKzM+PjBdO2Fbays0Pj4wXT1hW0QrND4+MF07YVtrKzU+PjBdPWFbRCs1Pj4wXTthW2srNj4+MF09YVtEKzY+PjBdO2Fbays3Pj4wXT1hW0QrNz4+MF07TT0raFtrPj4zXTtGPWIrMjMxfDA7YVtrPj4wXT1hW0Y+PjBdO2FbaysxPj4wXT1hW0YrMT4+MF07YVtrKzI+PjBdPWFbRisyPj4wXTthW2srMz4+MF09YVtGKzM+PjBdO2Fbays0Pj4wXT1hW0YrND4+MF07YVtrKzU+PjBdPWFbRis1Pj4wXTthW2srNj4+MF09YVtGKzY+PjBdO2Fbays3Pj4wXT1hW0YrNz4+MF07Sj0raFtrPj4zXTtIPWIrMjM5fDA7YVtrPj4wXT1hW0g+PjBdO2FbaysxPj4wXT1hW0grMT4+MF07YVtrKzI+PjBdPWFbSCsyPj4wXTthW2srMz4+MF09YVtIKzM+PjBdO2Fbays0Pj4wXT1hW0grND4+MF07YVtrKzU+PjBdPWFbSCs1Pj4wXTthW2srNj4+MF09YVtIKzY+PjBdO2Fbays3Pj4wXT1hW0grNz4+MF07Sz0raFtrPj4zXTtoW2s+PjNdPU87YVtDPj4wXT1hW2s+PjBdO2FbQysxPj4wXT1hW2srMT4+MF07YVtDKzI+PjBdPWFbaysyPj4wXTthW0MrMz4+MF09YVtrKzM+PjBdO2FbQys0Pj4wXT1hW2srND4+MF07YVtDKzU+PjBdPWFbays1Pj4wXTthW0MrNj4+MF09YVtrKzY+PjBdO2FbQys3Pj4wXT1hW2srNz4+MF07aFtrPj4zXT1OO2FbRD4+MF09YVtrPj4wXTthW0QrMT4+MF09YVtrKzE+PjBdO2FbRCsyPj4wXT1hW2srMj4+MF07YVtEKzM+PjBdPWFbayszPj4wXTthW0QrND4+MF09YVtrKzQ+PjBdO2FbRCs1Pj4wXT1hW2srNT4+MF07YVtEKzY+PjBdPWFbays2Pj4wXTthW0QrNz4+MF09YVtrKzc+PjBdO2hbaz4+M109TTthW0U+PjBdPWFbaz4+MF07YVtFKzE+PjBdPWFbaysxPj4wXTthW0UrMj4+MF09YVtrKzI+PjBdO2FbRSszPj4wXT1hW2srMz4+MF07YVtFKzQ+PjBdPWFbays0Pj4wXTthW0UrNT4+MF09YVtrKzU+PjBdO2FbRSs2Pj4wXT1hW2srNj4+MF07YVtFKzc+PjBdPWFbays3Pj4wXTtoW2s+PjNdPUw7YVtGPj4wXT1hW2s+PjBdO2FbRisxPj4wXT1hW2srMT4+MF07YVtGKzI+PjBdPWFbaysyPj4wXTthW0YrMz4+MF09YVtrKzM+PjBdO2FbRis0Pj4wXT1hW2srND4+MF07YVtGKzU+PjBdPWFbays1Pj4wXTthW0YrNj4+MF09YVtrKzY+PjBdO2FbRis3Pj4wXT1hW2srNz4+MF07aFtrPj4zXT1LO2FbRz4+MF09YVtrPj4wXTthW0crMT4+MF09YVtrKzE+PjBdO2FbRysyPj4wXT1hW2srMj4+MF07YVtHKzM+PjBdPWFbayszPj4wXTthW0crND4+MF09YVtrKzQ+PjBdO2FbRys1Pj4wXT1hW2srNT4+MF07YVtHKzY+PjBdPWFbays2Pj4wXTthW0crNz4+MF09YVtrKzc+PjBdO2hbaz4+M109SjthW0g+PjBdPWFbaz4+MF07YVtIKzE+PjBdPWFbaysxPj4wXTthW0grMj4+MF09YVtrKzI+PjBdO2FbSCszPj4wXT1hW2srMz4+MF07YVtIKzQ+PjBdPWFbays0Pj4wXTthW0grNT4+MF09YVtrKzU+PjBdO2FbSCs2Pj4wXT1hW2srNj4+MF07YVtIKzc+PjBdPWFbays3Pj4wXTtpZigoYVs2MzY4XXwwKT09MD8oUWEoNjM2OCl8MCkhPTA6MCl7Y1sxNTg4XT0wO2NbNjM1Nj4+Ml09MDtjWzYzNjA+PjJdPTA7Y2MoMjA5LDYzNTIscHwwKXwwOyRhKDYzNjgpfWlmKChhWzY0MDBdfDApPT0wPyhRYSg2NDAwKXwwKSE9MDowKXtjYygyMTAsNjM3NixwfDApfDA7JGEoNjQwMCl9dz1jWzE1ODhdfDA7dj1jWzYzNTY+PjJdfDA7ZG97aWYoKHd8MCk9PSh2fDApKXt2PSRiKDYzNzYpfDA7aWYoKHZ8MCkhPTApe2I9WGEoMTYpfDA7ZG97aWYoKGFbMTAxMjBdfDApPT0wKXtpZigoUWEoMTAxMjApfDApPT0wKXticmVha31jWzI1MjhdPTEwMzg0OyRhKDEwMTIwKX19d2hpbGUoMCk7WWYoYix2LDEwMTEyLDEwNDcyKTt3YihifDAsMTAxODQsMTA5KX14PWNbMTU4OF18MDtkb3tpZigoeHwwKT09KGNbNjM1Nj4+Ml18MCkpe3Y9ZisxNnwwO2Nbdj4+Ml09ZjtjW2Y+PjJdPTY0MTY7dz1jWzYzNjA+PjJdfDA7ZG97aWYoeD4+PjA8dz4+PjApe2lmKCh4fDApPT0wKXt3PTB9ZWxzZXtjW3grMTY+PjJdPXg7dz1jW3Y+PjJdfDA7bWNbY1soY1t3Pj4yXXwwKSsxMj4+Ml0mMTI3XSh3LHgpO3c9Y1s2MzU2Pj4yXXwwfWNbNjM1Nj4+Ml09dysyNH1lbHNle3c9KHcteHwwKS8yNHwwO2lmKHc+Pj4wPDg5NDc4NDg1KXt3PXc8PDE7dz0od3wwKT09MD8xOnd9ZWxzZXt3PTE3ODk1Njk3MH14PXcqMjR8MDt4PSh4fDApPT0wPzE6eDt3aGlsZSgxKXt5PXVuKHgpfDA7aWYoKHl8MCkhPTApe2JyZWFrfXk9Y1s1NjY2XXwwO2NbNTY2Nl09eSswO2lmKCh5fDApPT0wKXtsPTY1O2JyZWFrfXNjW3kmMzFdKCl9aWYoKGx8MCk9PTY1KXtIPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX13PXkrKHcqMjR8MCl8MDtkb3tpZigoeXwwKSE9MCl7eD1jW3Y+PjJdfDA7aWYoKHh8MCk9PTApe2NbeSsxNj4+Ml09MDticmVha31pZigoeHwwKT09KGZ8MCkpe2NbeSsxNj4+Ml09eTttY1tjWyhjW2Y+PjJdfDApKzEyPj4yXSYxMjddKGYseSk7YnJlYWt9ZWxzZXtjW3krMTY+PjJdPXg7Y1t2Pj4yXT0wO2JyZWFrfX19d2hpbGUoMCk7eD15KzI0fDA7ej1jWzE1ODhdfDA7QT1jWzYzNTY+PjJdfDA7ZG97aWYoKEF8MCk9PSh6fDApKXtjWzE1ODhdPXk7Y1s2MzU2Pj4yXT14O2NbNjM2MD4+Ml09d31lbHNle2Rve0M9eTt5PXkrIC0yNHwwO0I9QSsgLTh8MDtBPUErIC0yNHwwO0Q9Y1tCPj4yXXwwO2Rve2lmKChEfDApIT0wKXtpZigoRHwwKT09KEF8MCkpe2NbQysgLTg+PjJdPXk7SD1jW0I+PjJdfDA7bWNbY1soY1tIPj4yXXwwKSsxMj4+Ml0mMTI3XShILHkpO2JyZWFrfWVsc2V7Y1tDKyAtOD4+Ml09RDtjW0I+PjJdPTA7YnJlYWt9fWVsc2V7Y1tDKyAtOD4+Ml09MH19d2hpbGUoMCl9d2hpbGUoKEF8MCkhPSh6fDApKTt6PWNbMTU4OF18MDtBPWNbNjM1Nj4+Ml18MDtjWzE1ODhdPXk7Y1s2MzU2Pj4yXT14O2NbNjM2MD4+Ml09dztpZigoQXwwKT09KHp8MCkpe2JyZWFrfWRve3c9Y1tBKyAtOD4+Ml18MDtBPUErIC0yNHwwO2Rve2lmKCh3fDApPT0oQXwwKSl7bGNbY1soY1t3Pj4yXXwwKSsxNj4+Ml0mMjU1XSh3KX1lbHNle2lmKCh3fDApPT0wKXticmVha31sY1tjWyhjW3c+PjJdfDApKzIwPj4yXSYyNTVdKHcpfX13aGlsZSgwKX13aGlsZSgoQXwwKSE9KHp8MCkpfX13aGlsZSgwKTtpZigoenwwKT09MCl7YnJlYWt9dm4oeil9fXdoaWxlKDApO3Y9Y1t2Pj4yXXwwO2lmKCh2fDApPT0oZnwwKSl7bGNbY1soY1tmPj4yXXwwKSsxNj4+Ml0mMjU1XShmKTticmVha31pZigodnwwKT09MCl7YnJlYWt9bGNbY1soY1t2Pj4yXXwwKSsyMD4+Ml0mMjU1XSh2KX19d2hpbGUoMCk7aWYoKENiKDYzNzYpfDApPT0wKXt0PWNbMTU4OF18MDtyPWNbNjM1Nj4+Ml18MDticmVha31XYSgxMDQ5NiwxMDUwNCw0NiwxMDU2MCl9ZWxzZXt0PXc7cj12fX13aGlsZSgwKTtiOmRve2lmKCh0fDApIT0ocnwwKSl7dj1zKzE2fDA7d2hpbGUoMSl7eD10KzE2fDA7dz1jW3g+PjJdfDA7aWYoKHd8MCk9PTApe2w9MTAxO2JyZWFrfWlmKCh3fDApPT0odHwwKSl7Y1t2Pj4yXT1zO3c9Y1t4Pj4yXXwwO21jW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjEyN10odyxzKTt3PWNbdj4+Ml18MH1lbHNle3c9b2NbY1soY1t3Pj4yXXwwKSs4Pj4yXSYxMjddKHcpfDA7Y1t2Pj4yXT13fWlmKCh3fDApPT0wKXticmVha31tY1tjWyhjW3c+PjJdfDApKzI0Pj4yXSYxMjddKHcsdSk7dz1jW3Y+PjJdfDA7ZG97aWYoKHd8MCk9PShzfDApKXtsY1tjWyhjW3M+PjJdfDApKzE2Pj4yXSYyNTVdKHMpfWVsc2V7aWYoKHd8MCk9PTApe2JyZWFrfWxjW2NbKGNbdz4+Ml18MCkrMjA+PjJdJjI1NV0odyl9fXdoaWxlKDApO3Q9dCsyNHwwO2lmKCh0fDApPT0ocnwwKSl7YnJlYWsgYn19aWYoKGx8MCk9PTEwMSl7Y1t2Pj4yXT0wfUg9WGEoNCl8MDtjW0g+PjJdPTYzMzY7d2IoSHwwLDYzMTIsNzYpfX13aGlsZSgwKTtzPVNjKDgzNTIsNTMwNCl8MDtyPWNbcysoKGNbKGNbcz4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO3Q9cis0fDA7Y1t0Pj4yXT0oY1t0Pj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW2YrND4+Ml09MjA4O2NbZis4Pj4yXT0wO2NnKDEzNDU2LGYpfXU9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3Y9Y1tyKzg+PjJdfDA7aWYoKGNbcisxMj4+Ml18MCktdj4+Mj4+PjA+dT4+PjA/KHE9Y1t2Kyh1PDwyKT4+Ml18MCwocXwwKSE9MCk6MCl7cT14Y1tjWyhjW3E+PjJdfDApKzI4Pj4yXSY2M10ocSwxMCl8MDtIPWNbdD4+Ml18MDtjW3Q+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW3I+PjJdfDApKzg+PjJdJjI1NV0ocil9bGgocyxxKTtZZyhzKTtyPWNbYj4+Ml18MDtxPWIrMTE0fDA7cT1kW3E+PjBdfGRbcSsxPj4wXTw8ODtIPWNbcis0Pj4yXXwwO0c9KChIfDApPDApPDwzMT4+MzE7aWYoMDwoR3wwKXwwPT0oR3wwKSYocSY2NTUzNSk+Pj4wPEg+Pj4wKXtjW3IrOD4+Ml09cSY2NTUzNX1lbHNle2FbcisxMj4+MF09MX1yPWIrMTIwfDA7Yzpkb3tpZigoZFtyPj4wXXxkW3IrMT4+MF08PDh8ZFtyKzI+PjBdPDwxNnxkW3IrMz4+MF08PDI0fDApIT0wKXt3PW8rMnwwO3U9bysxNnwwO3Q9bysxOHwwO3E9bysyMHwwO3g9Zis0fDA7dj1mKzh8MDtzPTA7d2hpbGUoMSl7Rz0oY1tiPj4yXXwwKSsxMnwwO0g9YVtHPj4wXXwwO2FbRz4+MF09MDtpZighKEg8PDI0Pj4yND09MCkpe2JyZWFrIGN9eT1jW2I+PjJdfDA7ej15KzEzfDA7aWYoKGFbej4+MF18MCkhPTApe2JyZWFrIGN9SD15KzR8MDtFPXkrOHwwO0c9Y1tFPj4yXXwwO0Y9KGNbSD4+Ml18MCktR3wwO0Y9KEZ8MCk8NTQ/Rjo1NDtNbihvfDAsKGNbeT4+Ml18MCkrR3wwLEZ8MCl8MDtHPShjW0U+PjJdfDApK0Z8MDtjW0U+PjJdPUc7Y1t5KzE2Pj4yXT1GO2lmKChHfDApPj0oY1tIPj4yXXwwKSl7YVt6Pj4wXT0xfXk9U2MoODM1Miw1ODcyKXwwO3o9Y1t5KygoY1soY1t5Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7QT16KzR8MDtjW0E+PjJdPShjW0E+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbeD4+Ml09MjA4O2Nbdj4+Ml09MDtjZygxMzQ1NixmKX1DPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtCPWNbeis4Pj4yXXwwO2lmKCEoKGNbeisxMj4+Ml18MCktQj4+Mj4+PjA+Qz4+PjApKXtsPTEzNjticmVha31CPWNbQisoQzw8Mik+PjJdfDA7aWYoKEJ8MCk9PTApe2w9MTM2O2JyZWFrfUI9eGNbY1soY1tCPj4yXXwwKSsyOD4+Ml0mNjNdKEIsMTApfDA7SD1jW0E+PjJdfDA7Y1tBPj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1t6Pj4yXXwwKSs4Pj4yXSYyNTVdKHopfWxoKHksQik7WWcoeSk7eT13O3o9NTg1Njt3aGlsZSgxKXtpZigoYVt5Pj4wXXwwKSE9KGFbej4+MF18MCkpe2JyZWFrfXk9eSsxfDA7aWYoKHl8MCk9PSh1fDApKXtsPTE0NDticmVha31lbHNle3o9eisxfDB9fWlmKChsfDApPT0xNDQ/KGw9MCwoZFt0Pj4wXXxkW3QrMT4+MF08PDgpPDwxNj4+MTY9PTIyMjA0KTowKXticmVha31BPWNbYj4+Ml18MDt5PUErOHwwO3o9Y1t5Pj4yXXwwO3o9SW4oenwwLCgoenwwKTwwKTw8MzE+PjMxfDAsKGRbcT4+MF18ZFtxKzE+PjBdPDw4KSY2NTUzNXwwLDApfDA7SD1JO0c9Y1tBKzQ+PjJdfDA7Rj0oKEd8MCk8MCk8PDMxPj4zMTtBPUErMTJ8MDtpZigoSHwwKT4oRnwwKXwoSHwwKT09KEZ8MCkmej4+PjA+PUc+Pj4wfChIfDApPDApe2FbQT4+MF09MX1lbHNle2FbQT4+MF09MDtjW3k+PjJdPXp9cz1zKzF8MDtpZighKHM+Pj4wPChkW3I+PjBdfGRbcisxPj4wXTw8OHxkW3IrMj4+MF08PDE2fGRbciszPj4wXTw8MjQpPj4+MCkpe2JyZWFrIGN9fWlmKChsfDApPT0xMzYpe0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfXI9U2MoODM1Miw1ODk2KXwwO3M9Y1tyKygoY1soY1tyPj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dD1zKzR8MDtjW3Q+PjJdPShjW3Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9dT0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dj1jW3MrOD4+Ml18MDtkb3tpZigoY1tzKzEyPj4yXXwwKS12Pj4yPj4+MD51Pj4+MCl7dT1jW3YrKHU8PDIpPj4yXXwwO2lmKCh1fDApPT0wKXticmVha311PXhjW2NbKGNbdT4+Ml18MCkrMjg+PjJdJjYzXSh1LDEwKXwwO0g9Y1t0Pj4yXXwwO2NbdD4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbcz4+Ml18MCkrOD4+Ml0mMjU1XShzKX1saChyLHUpO1lnKHIpO3I9ZFtxPj4wXXxkW3ErMT4+MF08PDg7cT1yJjY1NTM1O3I9cjw8MTY+PjE2PT0wPzE6cTt3aGlsZSgxKXtzPXVuKHIpfDA7aWYoKHN8MCkhPTApe2JyZWFrfXM9Y1s1NjY2XXwwO2NbNTY2Nl09cyswO2lmKChzfDApPT0wKXtsPTE1ODticmVha31zY1tzJjMxXSgpfWlmKChsfDApPT0xNTgpe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfXQ9Y1tiPj4yXXwwO3I9dCsxM3wwO2Rve2lmKChhW3I+PjBdfDApPT0wKXtIPXQrNHwwO0U9dCs4fDA7Rz1jW0U+PjJdfDA7Rj0oY1tIPj4yXXwwKS1HfDA7Rj0oRnwwKTwocXwwKT9GOnE7TW4oc3wwLChjW3Q+PjJdfDApK0d8MCxGfDApfDA7Rz0oY1tFPj4yXXwwKStGfDA7Y1tFPj4yXT1HO2NbdCsxNj4+Ml09RjtpZigoR3wwKTwoY1tIPj4yXXwwKSl7YnJlYWt9YVtyPj4wXT0xfWVsc2V7YVt0KzEyPj4wXT0xfX13aGlsZSgwKTt0PXMrMzR8MDtxPWIrMjQ3fDA7TW4ocXwwLHN8MCwzNCl8MDtpZighKChkW3E+PjBdfGRbcSsxPj4wXTw8OCk8PDE2Pj4xNj09Mikpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big2OCl8MDtpZigoYnwwKSE9MCl7bD0xNzE7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTE3MSl7Y1tiKzQ+PjJdPTU1O2NbYj4+Ml09NTU7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTYyMDB8MDtlPWYrNTZ8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NjI2NDt3YihnfDAsNjA5Niw3NCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1TYyg4MzUyLDYxMTIpfDA7cT1oaChyLGRbcT4+MF18ZFtxKzE+PjBdPDw4KXwwO3I9Y1txKygoY1soY1txPj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dT1yKzR8MDtjW3U+PjJdPShjW3U+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9dj0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dz1jW3IrOD4+Ml18MDtkb3tpZigoY1tyKzEyPj4yXXwwKS13Pj4yPj4+MD52Pj4+MCl7dj1jW3crKHY8PDIpPj4yXXwwO2lmKCh2fDApPT0wKXticmVha312PXhjW2NbKGNbdj4+Ml18MCkrMjg+PjJdJjYzXSh2LDEwKXwwO0g9Y1t1Pj4yXXwwO2NbdT4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbcj4+Ml18MCkrOD4+Ml0mMjU1XShyKX1saChxLHYpO1lnKHEpO3Y9U2MoODM1Miw2MTI4KXwwO3E9YisyNzl8MDt2PWhoKHYsZFtxPj4wXXxkW3ErMT4+MF08PDgpfDA7cj1jW3YrKChjWyhjW3Y+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDt1PXIrNHwwO2NbdT4+Ml09KGNbdT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX13PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt4PWNbcis4Pj4yXXwwO2Rve2lmKChjW3IrMTI+PjJdfDApLXg+PjI+Pj4wPnc+Pj4wKXt3PWNbeCsodzw8Mik+PjJdfDA7aWYoKHd8MCk9PTApe2JyZWFrfXc9eGNbY1soY1t3Pj4yXXwwKSsyOD4+Ml0mNjNdKHcsMTApfDA7SD1jW3U+PjJdfDA7Y1t1Pj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfWxoKHYsdyk7WWcodik7cj0oKGRbcT4+MF18ZFtxKzE+PjBdPDw4KSY2NTUzNSkqNnwwO3I9KHJ8MCk9PTA/MTpyO3doaWxlKDEpe3U9dW4ocil8MDtpZigodXwwKSE9MCl7YnJlYWt9dT1jWzU2NjZdfDA7Y1s1NjY2XT11KzA7aWYoKHV8MCk9PTApe2w9MTk0O2JyZWFrfXNjW3UmMzFdKCl9aWYoKGx8MCk9PTE5NCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1iKzI4MXwwO2Fbcj4+MF09dTthW3IrMT4+MF09dT4+ODthW3IrMj4+MF09dT4+MTY7YVtyKzM+PjBdPXU+PjI0O3U9U2MoODM1Miw2MTQ0KXwwO3Y9Y1t1KygoY1soY1t1Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dz12KzR8MDtjW3c+PjJdPShjW3c+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9eD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7eT1jW3YrOD4+Ml18MDtkb3tpZigoY1t2KzEyPj4yXXwwKS15Pj4yPj4+MD54Pj4+MCl7eD1jW3krKHg8PDIpPj4yXXwwO2lmKCh4fDApPT0wKXticmVha314PXhjW2NbKGNbeD4+Ml18MCkrMjg+PjJdJjYzXSh4LDEwKXwwO0g9Y1t3Pj4yXXwwO2Nbdz4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbdj4+Ml18MCkrOD4+Ml0mMjU1XSh2KX1saCh1LHgpO1lnKHUpO2Q6ZG97aWYoISgoZFtxPj4wXXxkW3ErMT4+MF08PDgpPDwxNj4+MTY9PTApKXt2PWYrNHwwO3U9Zis4fDA7dz0wO3doaWxlKDEpe01uKChkW3I+PjBdfGRbcisxPj4wXTw8OHxkW3IrMj4+MF08PDE2fGRbciszPj4wXTw8MjQpKyh3KjZ8MCl8MCx0fDAsNil8MDt6PWloKFNjKDgzNTIsNjE3Nil8MCx3KXwwO3k9Y1t6KygoY1soY1t6Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7eD15KzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2Nbdj4+Ml09MjA4O2NbdT4+Ml09MDtjZygxMzQ1NixmKX1BPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtCPWNbeSs4Pj4yXXwwO2lmKCEoKGNbeSsxMj4+Ml18MCktQj4+Mj4+PjA+QT4+PjApKXticmVha31BPWNbQisoQTw8Mik+PjJdfDA7aWYoKEF8MCk9PTApe2JyZWFrfUE9eGNbY1soY1tBPj4yXXwwKSsyOD4+Ml0mNjNdKEEsMTApfDA7SD1jW3g+PjJdfDA7Y1t4Pj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1t5Pj4yXXwwKSs4Pj4yXSYyNTVdKHkpfWxoKHosQSk7WWcoeik7dz13KzF8MDtpZigod3wwKT49KChkW3E+PjBdfGRbcSsxPj4wXTw8OCkmNjU1MzV8MCkpe2JyZWFrIGR9ZWxzZXt0PXQrNnwwfX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dm4ocyk7ZTpkb3tpZighKChkW3E+PjBdfGRbcSsxPj4wXTw8OCk8PDE2Pj4xNj09MCkpe3c9YiszMDR8MDt2PWIrMzA4fDA7eD1iKzMwMHwwO3U9Zis0fDA7dD1mKzh8MDtzPTA7Zjp3aGlsZSgxKXt5PVNjKDgzNTIsNTk2OCl8MDtBPWNbeSsoKGNbKGNbeT4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO3o9QSs0fDA7Y1t6Pj4yXT0oY1t6Pj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW3U+PjJdPTIwODtjW3Q+PjJdPTA7Y2coMTM0NTYsZil9Qj0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7Qz1jW0ErOD4+Ml18MDtpZighKChjW0ErMTI+PjJdfDApLUM+PjI+Pj4wPkI+Pj4wKSl7bD0yMzQ7YnJlYWt9Qj1jW0MrKEI8PDIpPj4yXXwwO2lmKChCfDApPT0wKXtsPTIzNDticmVha31CPXhjW2NbKGNbQj4+Ml18MCkrMjg+PjJdJjYzXShCLDEwKXwwO0g9Y1t6Pj4yXXwwO2Nbej4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbQT4+Ml18MCkrOD4+Ml0mMjU1XShBKX1saCh5LEIpO1lnKHkpO0E9ZFtyPj4wXXxkW3IrMT4+MF08PDh8ZFtyKzI+PjBdPDwxNnxkW3IrMz4+MF08PDI0O3k9QSsocyo2fDApfDA7eT0oZFt5Pj4wXXxkW3krMT4+MF08PDgpJjY1NTM1O3o9QSsocyo2fDApKzJ8MDt6PShkW3o+PjBdfGRbeisxPj4wXTw8OCkmNjU1MzU7QT1BKyhzKjZ8MCkrNHwwO0E9KGRbQT4+MF18ZFtBKzE+PjBdPDw4KSY2NTUzNTtDPWNbdz4+Ml18MDtkb3tpZigoQ3wwKT09KGNbdj4+Ml18MCkpe0I9Y1t4Pj4yXXwwO0U9Qy1CfDA7Qz0oRXwwKS8xMnwwO0Q9QysxfDA7aWYoRD4+PjA+MzU3OTEzOTQxKXtsPTI0NDticmVhayBmfWlmKEM+Pj4wPDE3ODk1Njk3MCl7Rj1DPDwxO0Y9Rj4+PjA8RD4+PjA/RDpGO2lmKChGfDApPT0wKXtGPTA7Rz0wfWVsc2V7bD0yNDd9fWVsc2V7Rj0zNTc5MTM5NDE7bD0yNDd9aWYoKGx8MCk9PTI0Nyl7bD0wO0g9RioxMnwwO0g9KEh8MCk9PTA/MTpIO3doaWxlKDEpe0c9dW4oSCl8MDtpZigoR3wwKSE9MCl7YnJlYWt9Rz1jWzU2NjZdfDA7Y1s1NjY2XT1HKzA7aWYoKEd8MCk9PTApe2w9MjUxO2JyZWFrIGZ9c2NbRyYzMV0oKX19SD1HKyhDKjEyfDApfDA7aWYoKEh8MCkhPTApe2NbSD4+Ml09eTtjW0crKEMqMTJ8MCkrND4+Ml09ejtjW0crKEMqMTJ8MCkrOD4+Ml09QX1IPUcrKCgoKEV8MCkvLTEyfDApK0N8MCkqMTJ8MCl8MDtMbihIfDAsQnwwLEV8MCl8MDtjW3g+PjJdPUg7Y1t3Pj4yXT1HKyhEKjEyfDApO2Nbdj4+Ml09RysoRioxMnwwKTtpZigoQnwwKT09MCl7YnJlYWt9dm4oQil9ZWxzZXtpZigoQ3wwKT09MCl7eT0wfWVsc2V7Y1tDPj4yXT15O2NbQys0Pj4yXT16O2NbQys4Pj4yXT1BO3k9Y1t3Pj4yXXwwfWNbdz4+Ml09eSsxMn19d2hpbGUoMCk7cz1zKzF8MDtpZigoc3wwKT49KChkW3E+PjBdfGRbcSsxPj4wXTw8OCkmNjU1MzV8MCkpe2JyZWFrIGV9fWlmKChsfDApPT0yMzQpe0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfWVsc2UgaWYoKGx8MCk9PTI0NCl7VGsoKX1lbHNlIGlmKChsfDApPT0yNTEpe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfX19d2hpbGUoMCk7cz1TYyg4MzUyLDUzMjApfDA7cj1jW3MrKChjWyhjW3M+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtxPXIrNHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX11PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt0PWNbcis4Pj4yXXwwO2Rve2lmKChjW3IrMTI+PjJdfDApLXQ+PjI+Pj4wPnU+Pj4wKXt0PWNbdCsodTw8Mik+PjJdfDA7aWYoKHR8MCk9PTApe2JyZWFrfXQ9eGNbY1soY1t0Pj4yXXwwKSsyOD4+Ml0mNjNdKHQsMTApfDA7SD1jW3E+PjJdfDA7Y1txPj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfWxoKHMsdCk7WWcocyk7cj1jW2I+PjJdfDA7cT1iKzExNnwwO3M9ZFtxPj4wXXxkW3ErMT4+MF08PDh8ZFtxKzI+PjBdPDwxNnxkW3ErMz4+MF08PDI0O0g9Y1tyKzQ+PjJdfDA7Rz0oKEh8MCk8MCk8PDMxPj4zMTtpZigwPChHfDApfDA9PShHfDApJnM+Pj4wPEg+Pj4wKXtjW3IrOD4+Ml09c31lbHNle2FbcisxMj4+MF09MX1zPW87Y1tzPj4yXT0wO2Nbcys0Pj4yXT0wO3M9Y1tiPj4yXXwwO3I9cysxM3wwO2Rve2lmKChhW3I+PjBdfDApPT0wKXtIPWNbcys0Pj4yXXwwO0U9cys4fDA7Rz1jW0U+PjJdfDA7Rj1ILUd8MDtGPShGfDApPDg/Rjo4O0xuKG98MCwoY1tzPj4yXXwwKStHfDAsRnwwKXwwO0c9RytGfDA7Y1tFPj4yXT1HO2NbcysxNj4+Ml09RjtpZigoR3wwKTwoSHwwKSl7YnJlYWt9YVtyPj4wXT0xfWVsc2V7YVtzKzEyPj4wXT0xfX13aGlsZSgwKTtHPShjW2I+PjJdfDApKzEyfDA7SD1hW0c+PjBdfDA7YVtHPj4wXT0wO2lmKCEoSDw8MjQ+PjI0PT0wKSl7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDU2KXwwO2lmKChifDApIT0wKXtsPTI4MjticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjgyKXtjW2IrND4+Ml09NDM7Y1tiPj4yXT00MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTc4NHwwO2U9Zis0NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT01ODQwO3diKGd8MCw1Mzg0LDcwKX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1zPWNbbz4+Ml18MDtvPWNbbys0Pj4yXXwwO2lmKChzfDApPT0tMSYob3wwKT09LTEpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big2Nyl8MDtpZigoYnwwKSE9MCl7bD0yOTA7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTI5MCl7Y1tiKzQ+PjJdPTU0O2NbYj4+Ml09NTQ7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTU0MDB8MDtlPWYrNTV8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NTc2ODt3YihnfDAsNTQ4OCw2OCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1jW2I+PjJdfDA7SD1jW3IrND4+Ml18MDtHPSgoSHwwKTwwKTw8MzE+PjMxO2lmKChvfDApPChHfDApfChvfDApPT0oR3wwKSZzPj4+MDxIPj4+MCl7Y1tyKzg+PjJdPXN9ZWxzZXthW3IrMTI+PjBdPTF9Rz0oY1tiPj4yXXwwKSsxMnwwO0g9YVtHPj4wXXwwO2FbRz4+MF09MDtpZighKEg8PDI0Pj4yND09MCkpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big1Nil8MDtpZigoYnwwKSE9MCl7bD0zMDE7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTMwMSl7Y1tiKzQ+PjJdPTQzO2NbYj4+Ml09NDM7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTU3ODR8MDtlPWYrNDR8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NTg0MDt3YihnfDAsNTM4NCw3MCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9bz1jW2I+PjJdfDA7cj1vKzEzfDA7ZG97aWYoKGFbcj4+MF18MCk9PTApe0g9Y1tvKzQ+PjJdfDA7RT1vKzh8MDtHPWNbRT4+Ml18MDtGPUgtR3wwO0Y9KEZ8MCk8OD9GOjg7TG4obnwwLChjW28+PjJdfDApK0d8MCxGfDApfDA7Rz1HK0Z8MDtjW0U+PjJdPUc7Y1tvKzE2Pj4yXT1GO2lmKChHfDApPChIfDApKXticmVha31hW3I+PjBdPTF9ZWxzZXthW28rMTI+PjBdPTF9fXdoaWxlKDApO0c9KGNbYj4+Ml18MCkrMTJ8MDtIPWFbRz4+MF18MDthW0c+PjBdPTA7aWYoIShIPDwyND4+MjQ9PTApKXtnPVhhKDgpfDA7Y1tnPj4yXT05OTI4O3doaWxlKDEpe2I9dW4oNTYpfDA7aWYoKGJ8MCkhPTApe2w9MzEzO2JyZWFrfWI9Y1s1NjY2XXwwO2NbNTY2Nl09YiswO2lmKChifDApPT0wKXticmVha31zY1tiJjMxXSgpfWlmKChsfDApPT0zMTMpe2NbYis0Pj4yXT00MztjW2I+PjJdPTQzO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj01Nzg0fDA7ZT1mKzQ0fDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTU4NDA7d2IoZ3wwLDUzODQsNzApfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfWlmKChjW24+PjJdfDApIT0wKXtnPVhhKDgpfDA7Y1tnPj4yXT05OTI4O3doaWxlKDEpe2I9dW4oNTQpfDA7aWYoKGJ8MCkhPTApe2w9MzIxO2JyZWFrfWI9Y1s1NjY2XXwwO2NbNTY2Nl09YiswO2lmKChifDApPT0wKXticmVha31zY1tiJjMxXSgpfWlmKChsfDApPT0zMjEpe2NbYis0Pj4yXT00MTtjW2I+PjJdPTQxO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj01Njg4fDA7ZT1mKzQyfDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTU3NDQ7d2IoZ3wwLDU1NDQsNjYpfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfW89YisyODh8MDtzPWNbbz4+Ml18MDtyPWIrMjkyfDA7dD1jW3I+PjJdfDA7aWYoKHR8MCk9PShzfDApKXt3PXN9ZWxzZXt3PXQrKH4oKHQrIC04KygwLXMpfDApPj4+Myk8PDMpfDA7Y1tyPj4yXT13fUg9YisyNTl8MDtpZigoZFtIPj4wXXxkW0grMT4+MF08PDh8ZFtIKzI+PjBdPDwxNnxkW0grMz4+MF08PDI0fDApPT0tMSl7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDk2KXwwO2lmKChifDApIT0wKXtsPTMzMTticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MzMxKXtjW2IrND4+Ml09ODM7Y1tiPj4yXT04MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTU2MHwwO2U9Zis4NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT01NzY4O3diKGd8MCw1NDg4LDY4KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX12PW4rNHwwO249Y1t2Pj4yXXwwO3U9bisxfDA7ej1zO3Q9dy16Pj4zO2Rve2lmKHQ+Pj4wPHU+Pj4wKXt1PXUtdHwwO3Q9YisyOTZ8MDtBPWNbdD4+Ml18MDt4PXc7aWYoIShBLXg+PjM+Pj4wPHU+Pj4wKSl7dD11O2w9dzt3aGlsZSgxKXtpZigobHwwKSE9MCl7SD1sO2NbSD4+Ml09MDtjW0grND4+Ml09MH10PXQrIC0xfDA7aWYoKHR8MCk9PTApe2JyZWFrfWVsc2V7bD1sKzh8MH19Y1tyPj4yXT13Kyh1PDwzKTticmVha314PXgtenwwO3k9eD4+Mzt3PXkrdXwwO2lmKHc+Pj4wPjUzNjg3MDkxMSl7VGsoKX16PUEtenwwO2lmKHo+PjM+Pj4wPDI2ODQzNTQ1NSl7ej16Pj4yO3o9ej4+PjA8dz4+PjA/dzp6O2lmKCh6fDApPT0wKXt6PTA7Qj0wfWVsc2V7bD0zNDJ9fWVsc2V7ej01MzY4NzA5MTE7bD0zNDJ9ZG97aWYoKGx8MCk9PTM0Mil7QT16PDwzO0E9KEF8MCk9PTA/MTpBO3doaWxlKDEpe0I9dW4oQSl8MDtpZigoQnwwKSE9MCl7bD0zNDg7YnJlYWt9Qj1jWzU2NjZdfDA7Y1s1NjY2XT1CKzA7aWYoKEJ8MCk9PTApe2JyZWFrfXNjW0ImMzFdKCl9aWYoKGx8MCk9PTM0OCl7YnJlYWt9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2w9QisoeTw8Myl8MDt3aGlsZSgxKXtpZigobHwwKSE9MCl7SD1sO2NbSD4+Ml09MDtjW0grND4+Ml09MH11PXUrIC0xfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7bD1sKzh8MH19TG4oQnwwLHN8MCx4fDApfDA7Y1tvPj4yXT1CO2Nbcj4+Ml09Qisodzw8Myk7Y1t0Pj4yXT1CKyh6PDwzKTtpZigoc3wwKT09MCl7cz1CO2JyZWFrfXZuKHMpO3M9Y1tvPj4yXXwwfWVsc2V7aWYoISh0Pj4+MD51Pj4+MCkpe2JyZWFrfWw9cysodTw8Myl8MDtpZigod3wwKT09KGx8MCkpe2JyZWFrfWNbcj4+Ml09dysofigodysgLTgrKDAtbCl8MCk+Pj4zKTw8Myl9fXdoaWxlKDApO2w9ZFtxPj4wXXxkW3ErMT4+MF08PDh8ZFtxKzI+PjBdPDwxNnxkW3ErMz4+MF08PDI0O0g9cztjW0g+PjJdPWwrODtjW0grND4+Ml09MDtnOmRve2lmKG4+Pj4wPjEpe2NbbT4+Ml09Y1tiPj4yXTtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtsPW0rMTJ8MDtzPXVuKDEwNDg2NDQpfDA7eT1zKzY4Ji02NDtjW3krIC00Pj4yXT1zO2NbbD4+Ml09eTtjW2o+PjJdPW07eT1qKzR8MDtjW3k+PjJdPTA7Y1tqKzg+PjJdPS0xO2NbZys0Pj4yXT0zMjtjW2crOD4+Ml09MjtjW2crMTI+PjJdPTg7Y1tnKzE2Pj4yXT0wO3M9ZyszNnwwO2Nbcz4+Ml09MDtuPWcrNDB8MDtjW24+PjJdPTA7Y1tnKzQ0Pj4yXT0wO2NbZys2MD4+Ml09MTtjW2crNjQ+PjJdPTI7Y1tnKzU2Pj4yXT00MDk2O2NbZys1Mj4+Ml09NDtjW2crNDg+PjJdPTQ7dT1nKzY4fDA7Y1t1Pj4yXT0wO3Q9Zys3MnwwO2NbdD4+Ml09MDtjW2crNzY+PjJdPTA7Y1tnKzIwPj4yXT0zMjt3PWcrMjR8MDtjW3c+PjJdPTA7Y1tnKzI4Pj4yXT0tMjE0NzQ4MzY0ODtjW2crMzI+PjJdPTIxNDc0ODM2NDc7Y1tnPj4yXT0wO0g9bWQobSl8MDtHPW1kKG0pfDA7eD1tZChtKXwwO2NbeT4+Ml09KEcmMjU1KTw8MTZ8KEgmMjU1KTw8MjR8KHgmMjU1KTw8OHwobWQobSl8MCkmMjU1O3RkKGcpO3k9U2MoODM1Miw1NjQ4KXwwO209Y1t2Pj4yXXwwO3k9amgoeSxtKXwwO3g9Y1t5KygoY1soY1t5Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dj14KzR8MDtjW3Y+PjJdPShjW3Y+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9QT0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7ej1jW3grOD4+Ml18MDtkb3tpZigoY1t4KzEyPj4yXXwwKS16Pj4yPj4+MD5BPj4+MCl7ej1jW3orKEE8PDIpPj4yXXwwO2lmKCh6fDApPT0wKXticmVha316PXhjW2NbKGNbej4+Ml18MCkrMjg+PjJdJjYzXSh6LDEwKXwwO0g9Y1t2Pj4yXXwwO2Nbdj4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbeD4+Ml18MCkrOD4+Ml0mMjU1XSh4KX1saCh5LHopO1lnKHkpO2g6ZG97aWYoKG18MCkhPTApe3g9Zis0fDA7dj1mKzh8MDt5PTE7d2hpbGUoMSl7aWYoeT4+PjA+MSl7ej1jWyhjW28+PjJdfDApKyh5KyAtMTw8Myk+PjJdfDB9ZWxzZXt6PTB9QT0ocmQoZyxqLChjW3M+PjJdfDApKzQ0fDApfDApK3p8MDt6PWNbdz4+Ml18MDtpZigoQXwwKTwwKXt6PXorQXwwfWVsc2V7ej1BLShBPj4+MDx6Pj4+MD8wOnopfDB9QT0oY1tvPj4yXXwwKSsoeTw8Myl8MDtjW0E+PjJdPXo7Y1tBKzQ+PjJdPSgoenwwKTwwKTw8MzE+PjMxO0E9U2MoamgoU2MoODM1Miw1NjcyKXwwLHkpfDAsNTY4MCl8MDt6PShjW28+PjJdfDApKyh5PDwzKXwwO3o9a2goQSxjW3o+PjJdfDAsY1t6KzQ+PjJdfDApfDA7QT1jW3orKChjWyhjW3o+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtCPUErNHwwO2NbQj4+Ml09KGNbQj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1t4Pj4yXT0yMDg7Y1t2Pj4yXT0wO2NnKDEzNDU2LGYpfUM9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0Q9Y1tBKzg+PjJdfDA7aWYoISgoY1tBKzEyPj4yXXwwKS1EPj4yPj4+MD5DPj4+MCkpe2JyZWFrfUM9Y1tEKyhDPDwyKT4+Ml18MDtpZigoQ3wwKT09MCl7YnJlYWt9Qz14Y1tjWyhjW0M+PjJdfDApKzI4Pj4yXSY2M10oQywxMCl8MDtIPWNbQj4+Ml18MDtjW0I+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0E+PjJdfDApKzg+PjJdJjI1NV0oQSl9bGgoeixDKTtZZyh6KTt5PXkrMXwwO2lmKHk+Pj4wPm0+Pj4wKXticmVhayBofX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dj1jW28+PjJdfDA7aTpkb3tpZigoY1tyPj4yXXwwKS12Pj4zPj4+MD4xKXtqPWYrNHwwO2c9Zis4fDA7bT0xO3doaWxlKDEpe3c9disobSsgLTE8PDMpfDA7dj12KyhtPDwzKXwwO3g9djt3PUluKGNbeD4+Ml18MCxjW3grND4+Ml18MCxjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7Y1t2Pj4yXT13O2Nbdis0Pj4yXT1JO3Y9U2MoamgoU2MoODM1Miw1NjcyKXwwLG0pfDAsNTY4MCl8MDt3PShjW28+PjJdfDApKyhtPDwzKXwwO3c9a2godixjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7dj1jW3crKChjWyhjW3c+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDt4PXYrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tqPj4yXT0yMDg7Y1tnPj4yXT0wO2NnKDEzNDU2LGYpfXo9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3k9Y1t2Kzg+PjJdfDA7aWYoISgoY1t2KzEyPj4yXXwwKS15Pj4yPj4+MD56Pj4+MCkpe2JyZWFrfXk9Y1t5Kyh6PDwyKT4+Ml18MDtpZigoeXwwKT09MCl7YnJlYWt9eT14Y1tjWyhjW3k+PjJdfDApKzI4Pj4yXSY2M10oeSwxMCl8MDtIPWNbeD4+Ml18MDtjW3g+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW3Y+PjJdfDApKzg+PjJdJjI1NV0odil9bGgodyx5KTtZZyh3KTttPW0rMXwwO3Y9Y1tvPj4yXXwwO2lmKCEobT4+PjA8KGNbcj4+Ml18MCktdj4+Mz4+PjApKXticmVhayBpfX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zj1jW3U+PjJdfDA7ZG97aWYoKGZ8MCkhPTApe2c9Y1t0Pj4yXXwwO2lmKChnfDApIT0oZnwwKSl7ZG97Y1t0Pj4yXT1nKyAtNDQ7aj1jW2crIC0zNj4+Ml18MDtpZigoanwwKSE9MCl7dm4oY1tqKyAtND4+Ml18MCl9aj1jW2crIC0zMj4+Ml18MDtpZigoanwwKSE9MCl7dm4oY1tqKyAtND4+Ml18MCl9Zz1jW2crIC0yOD4+Ml18MDtpZigoZ3wwKSE9MCl7dm4oY1tnKyAtND4+Ml18MCl9Zz1jW3Q+PjJdfDB9d2hpbGUoKGd8MCkhPShmfDApKTtmPWNbdT4+Ml18MDtpZigoZnwwKT09MCl7YnJlYWt9fXZuKGYpfX13aGlsZSgwKTtmPWNbcz4+Ml18MDtkb3tpZigoZnwwKSE9MCl7Zz1jW24+PjJdfDA7aWYoKGd8MCkhPShmfDApKXtkb3tjW24+PjJdPWcrIC00NDtqPWNbZysgLTM2Pj4yXXwwO2lmKChqfDApIT0wKXt2bihjW2orIC00Pj4yXXwwKX1qPWNbZysgLTMyPj4yXXwwO2lmKChqfDApIT0wKXt2bihjW2orIC00Pj4yXXwwKX1nPWNbZysgLTI4Pj4yXXwwO2lmKChnfDApIT0wKXt2bihjW2crIC00Pj4yXXwwKX1nPWNbbj4+Ml18MH13aGlsZSgoZ3wwKSE9KGZ8MCkpO2Y9Y1tzPj4yXXwwO2lmKChmfDApPT0wKXticmVha319dm4oZil9fXdoaWxlKDApO3ZuKGNbKGNbbD4+Ml18MCkrIC00Pj4yXXwwKTtsPWRbcT4+MF18ZFtxKzE+PjBdPDw4fGRbcSsyPj4wXTw8MTZ8ZFtxKzM+PjBdPDwyNDticmVhayBnfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zj1jW2I+PjJdfDA7YVtmKzEyPj4wXT0wO2FbZisxMz4+MF09MDtmPWNbYj4+Ml18MDtnPWwrOHwwO0g9Y1tmKzQ+PjJdfDA7Rz0oKEh8MCk8MCk8PDMxPj4zMTtpZigwPChHfDApfDA9PShHfDApJmc+Pj4wPEg+Pj4wKXtjW2YrOD4+Ml09ZztIPWIrMTJ8MDtjW0g+PjJdPTA7SD1iKzh8MDtjW0g+PjJdPTA7aT1lO3JldHVybn1lbHNle2FbZisxMj4+MF09MTtIPWIrMTJ8MDtjW0g+PjJdPTA7SD1iKzh8MDtjW0g+PjJdPTA7aT1lO3JldHVybn19fXdoaWxlKDApO0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDU2KXwwO2lmKChifDApIT0wKXtsPTIyOTticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjI5KXtjW2IrND4+Ml09NDM7Y1tiPj4yXT00MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTk4NHwwO2U9Zis0NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT02MDQwO3diKGd8MCw1OTUyLDcyKX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBwZShhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Yj1pO2k9aSsxNnwwO2Y9YjtnPVNjKDgzNTIsNTE5Mil8MDtoPWNbZysoKGNbKGNbZz4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO2o9aCs0fDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW2YrND4+Ml09MjA4O2NbZis4Pj4yXT0wO2NnKDEzNDU2LGYpfWw9KGNbMTM0NjA+PjJdfDApKyAtMXwwO209Y1toKzg+PjJdfDA7aWYoKGNbaCsxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywxMCl8MDttPWNbaj4+Ml18MDtjW2o+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2g+PjJdfDApKzg+PjJdJjI1NV0oaCl9bGgoZyxrKTtZZyhnKTtnPWErMzR8MDtnPWRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNDtpZigoZ3wwKSE9MCl7dm4oZyl9Zz1TYyg4MzUyLDUyMDgpfDA7aD1jW2crKChjWyhjW2c+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtqPWgrNHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX1mPShjWzEzNDYwPj4yXXwwKSsgLTF8MDthPWNbaCs4Pj4yXXwwO2lmKChjW2grMTI+PjJdfDApLWE+PjI+Pj4wPmY+Pj4wPyhlPWNbYSsoZjw8Mik+PjJdfDAsKGV8MCkhPTApOjApe2U9eGNbY1soY1tlPj4yXXwwKSsyOD4+Ml0mNjNdKGUsMTApfDA7bT1jW2o+PjJdfDA7Y1tqPj4yXT1tKyAtMTtpZigobXwwKT09MCl7bGNbY1soY1toPj4yXXwwKSs4Pj4yXSYyNTVdKGgpfWxoKGcsZSk7WWcoZyk7aT1iO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBxZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gcmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHNlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiB0ZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gdWUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB2ZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHdlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24geGUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHllKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gemUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEFlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gQmUoYSl7YT1hfDA7dmFyIGI9MDtiPWk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIENlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRGUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTA7Yj1pO2Q9Y1thPj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufWU9YSs0fDA7Zj1jW2U+PjJdfDA7aWYoKGZ8MCkhPShkfDApKXtkb3tnPWYrIC0yNHwwO2NbZT4+Ml09ZztmPWNbZisgLTg+PjJdfDA7aWYoKGZ8MCkhPShnfDApKXtpZigoZnwwKSE9MCl7bGNbY1soY1tmPj4yXXwwKSsyMD4+Ml0mMjU1XShmKX19ZWxzZXtsY1tjWyhjW2Y+PjJdfDApKzE2Pj4yXSYyNTVdKGYpfWY9Y1tlPj4yXXwwfXdoaWxlKChmfDApIT0oZHwwKSk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59fXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gRWUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEZlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEdlKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2E9aTt3aGlsZSgxKXtkPXVuKDgpfDA7aWYoKGR8MCkhPTApe2I9NzticmVha31kPWNbNTY2Nl18MDtjWzU2NjZdPWQrMDtpZigoZHwwKT09MCl7YnJlYWt9c2NbZCYzMV0oKX1pZigoYnwwKT09Nyl7Y1tkPj4yXT02NDE2O2k9YTtyZXR1cm4gZHwwfWQ9WGEoNCl8MDtjW2Q+PjJdPTIyNjgwO3diKGR8MCwyMjcyOCwyMDYpO3JldHVybiAwfWZ1bmN0aW9uIEhlKGEsYil7YT1hfDA7Yj1ifDA7aWYoKGJ8MCkhPTApe2NbYj4+Ml09NjQxNn1yZXR1cm59ZnVuY3Rpb24gSWUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEplKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEtlKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtiPWk7aj1lKzEwNHwwO2c9ZFtqPj4wXXwwO2U9Zz4+Pjc7aD1nPj4+NiYxO2lmKCEoKGV8MCkhPTF8KGh8MCk9PTApKXtiPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oODApfDA7aWYoKGV8MCkhPTApe2Y9ODticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZnwwKT09OCl7Y1tlKzQ+PjJdPTY3O2NbZT4+Ml09Njc7Zz1lKzEyfDA7Y1tiKzQ+PjJdPWc7Y1tlKzg+PjJdPTA7Zz1nKzB8MDtlPTY5NjB8MDtmPWcrNjh8MDtkb3thW2c+PjBdPWFbZT4+MF18MDtnPWcrMXwwO2U9ZSsxfDB9d2hpbGUoKGd8MCk8KGZ8MCkpO2NbYj4+Ml09NzA0MDt3YihifDAsNjgzMiw4NCl9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9aWYoKGV8MCkhPShofDApKXthW2o+PjBdPWcmNjM7aT1iO3JldHVybn1iPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oNTEpfDA7aWYoKGV8MCkhPTApe2Y9MTY7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKGZ8MCk9PTE2KXtjW2UrND4+Ml09Mzg7Y1tlPj4yXT0zODtnPWUrMTJ8MDtjW2IrND4+Ml09ZztjW2UrOD4+Ml09MDtnPWcrMHwwO2U9Njg5NnwwO2Y9ZyszOXwwO2Rve2FbZz4+MF09YVtlPj4wXXwwO2c9ZysxfDA7ZT1lKzF8MH13aGlsZSgoZ3wwKTwoZnwwKSk7Y1tiPj4yXT02OTQ0O3diKGJ8MCw2ODgwLDgyKX1qPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX1mdW5jdGlvbiBMZShhLGIpe2E9YXwwO2I9YnwwO3JldHVybigoY1tiKzQ+PjJdfDApPT02Njg4P2ErNHwwOjApfDB9ZnVuY3Rpb24gTWUoYSl7YT1hfDA7cmV0dXJuIDY3ODR9ZnVuY3Rpb24gTmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIE9lKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBQZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFFlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gUmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBTZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2I9aTtpPWkrMTZ8MDtoPWI7ZD1TYyg4MzUyLDcxMDQpfDA7ZT1jW2QrKChjWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtmPWUrNHwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbaD4+Ml09MTM0NTY7Y1toKzQ+PjJdPTIwODtjW2grOD4+Ml09MDtjZygxMzQ1NixoKX1oPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtqPWNbZSs4Pj4yXXwwO2lmKChjW2UrMTI+PjJdfDApLWo+PjI+Pj4wPmg+Pj4wPyhnPWNbaisoaDw8Mik+PjJdfDAsKGd8MCkhPTApOjApe2c9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcsMTApfDA7aj1jW2Y+PjJdfDA7Y1tmPj4yXT1qKyAtMTtpZigoanwwKT09MCl7bGNbY1soY1tlPj4yXXwwKSs4Pj4yXSYyNTVdKGUpfWxoKGQsZyk7WWcoZCk7ZD1jW2ErMzI0Pj4yXXwwO2lmKCgoZHwwKSE9MD8oaD1kKzR8MCxqPWNbaD4+Ml18MCxjW2g+PjJdPWorIC0xLChqfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGg9ZCs4fDAsaj1jW2g+PjJdfDAsY1toPj4yXT1qKyAtMSwoanwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX1kPWNbYSszMTY+PjJdfDA7aWYoKChkfDApIT0wPyhoPWQrNHwwLGo9Y1toPj4yXXwwLGNbaD4+Ml09aisgLTEsKGp8MCk9PTApOjApPyhsY1tjWyhjW2Q+PjJdfDApKzg+PjJdJjI1NV0oZCksaD1kKzh8MCxqPWNbaD4+Ml18MCxjW2g+PjJdPWorIC0xLChqfDApPT0wKTowKXtsY1tjWyhjW2Q+PjJdfDApKzE2Pj4yXSYyNTVdKGQpfWQ9Y1thKzMwMD4+Ml18MDtpZigoZHwwKSE9MCl7ZT1hKzMwNHwwO2Y9Y1tlPj4yXXwwO2lmKChmfDApIT0oZHwwKSl7Y1tlPj4yXT1mKyh+KCgoZisgLTEyKygwLWQpfDApPj4+MCkvMTJ8MCkqMTJ8MCl9dm4oZCl9ZD1jW2ErMjg4Pj4yXXwwO2lmKChkfDApPT0wKXtqPWErMjQ3fDA7cGUoaik7aj1hKzE2fDA7aj1jW2o+PjJdfDA7aj1qKyAtNHwwO2o9Y1tqPj4yXXwwO3ZuKGopO2k9YjtyZXR1cm59ZT1hKzI5MnwwO2Y9Y1tlPj4yXXwwO2lmKChmfDApIT0oZHwwKSl7Y1tlPj4yXT1mKyh+KChmKyAtOCsoMC1kKXwwKT4+PjMpPDwzKX12bihkKTtqPWErMjQ3fDA7cGUoaik7aj1hKzE2fDA7aj1jW2o+PjJdfDA7aj1qKyAtNHwwO2o9Y1tqPj4yXXwwO3ZuKGopO2k9YjtyZXR1cm59aj1YYSg0KXwwO2Nbaj4+Ml09MjEzMDQ7d2IoanwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gVGUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFVlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFZlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2E9Y1thKzEyPj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufVNlKGEpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gV2UoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT03MzEyKXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIFhlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFllKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBaZShhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBfZShhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiAkZShhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTc1NjApe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gYWYoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gYmYoKXt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtiPWk7aT1pKzMyfDA7ZD1iO0hiKDcyLDk2LDE3NiwwLDE1Miw5MSwxNDQsMCwxNDQsMCw4LDEzNiwyMTEpO2NbZD4+Ml09MTtlPWQrNHwwO2NbZT4+Ml09OTY7T2IoNzIsMSxlfDAsMTI4LDkyLDIyKTtjW2Q+PjJdPTQ7ZT1kKzR8MDtjW2U+PjJdPTIxNzc2O2NbZCs4Pj4yXT05NjtjW2QrMTI+PjJdPTIxOTA0O2NbZCsxNj4+Ml09MjE5MDQ7Zj11big4KXwwO2lmKChmfDApIT0wKXthW2Y+PjBdPTI3O2FbZisxPj4wXT0wO2FbZisyPj4wXT0wO2FbZiszPj4wXT0wO2c9Zis0fDA7YVtnPj4wXT0wO2FbZysxPj4wXT0wO2FbZysyPj4wXT0wO2FbZyszPj4wXT0wfXpiKDcyLDE2LDQsZXwwLDEyMCwzMCxmfDAsMCk7Y1tkPj4yXT0zO2U9ZCs0fDA7Y1tlPj4yXT0yMTc3NjtjW2QrOD4+Ml09OTY7Y1tkKzEyPj4yXT0yMTg4ODtmPXVuKDgpfDA7aWYoKGZ8MCkhPTApe2FbZj4+MF09NjY7YVtmKzE+PjBdPTA7YVtmKzI+PjBdPTA7YVtmKzM+PjBdPTA7Zz1mKzR8MDthW2c+PjBdPTA7YVtnKzE+PjBdPTA7YVtnKzI+PjBdPTA7YVtnKzM+PjBdPTB9emIoNzIsMjQsMyxlfDAsMTEyLDI4LGZ8MCwwKTtjW2Q+PjJdPTI7ZT1kKzR8MDtjW2U+PjJdPTIxOTA0O2NbZCs4Pj4yXT05NjtkPXVuKDgpfDA7aWYoKGR8MCk9PTApe3piKDcyLDQwLDIsZXwwLDU2LDQ2LGR8MCwwKTtpPWI7cmV0dXJufWFbZD4+MF09OTM7YVtkKzE+PjBdPTA7YVtkKzI+PjBdPTA7YVtkKzM+PjBdPTA7Zz1kKzR8MDthW2c+PjBdPTA7YVtnKzE+PjBdPTA7YVtnKzI+PjBdPTA7YVtnKzM+PjBdPTA7emIoNzIsNDAsMixlfDAsNTYsNDYsZHwwLDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gY2YoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtkPWNbYSs0Pj4yXXwwO2U9KEpuKGR8MCl8MCkrMXwwO2E9dW4oZSl8MDtpZigoYXwwKT09MCl7ZT0wO2k9YjtyZXR1cm4gZXwwfUxuKGF8MCxkfDAsZXwwKXwwO2U9YTtpPWI7cmV0dXJuIGV8MH1mdW5jdGlvbiBkZigpe3ZhciBhPTA7YT1pO0phKDIxNzc2LDc2MjQpO3BiKDIxODA4LDc2MzIsMSwxLDApO1VhKDIxODI0LDc2NDAsMSwtMTI4LDEyNyk7VWEoMjE4NTYsNzY0OCwxLC0xMjgsMTI3KTtVYSgyMTg0MCw3NjY0LDEsMCwyNTUpO1VhKDIxODY0LDc2ODAsMiwtMzI3NjgsMzI3NjcpO1VhKDIxODcyLDc2ODgsMiwwLDY1NTM1KTtVYSgyMTg4OCw3NzA0LDQsLTIxNDc0ODM2NDgsMjE0NzQ4MzY0Nyk7VWEoMjE5MDQsNzcxMiw0LDAsLTEpO1VhKDIxOTIwLDc3MjgsNCwtMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3KTtVYSgyMTkzNiw3NzM2LDQsMCwtMSk7YWMoMjE5NTIsNzc1Miw0KTthYygyMTk2OCw3NzYwLDgpO3RiKDgyNDAsNzc2OCk7dGIoODE1Miw3Nzg0KTtKYig4MDY0LDQsNzgyNCk7eGIoNzk0NCw3ODQwKTtMYSg3OTEyLDc4NTYpO2k9YTtyZXR1cm59ZnVuY3Rpb24gZWYoYSl7YT1hfDA7YT1pO1lnKDgzNTIpO1lnKDg1MjgpO2JoKDg3MDQpO2JoKDg4ODApO2k9YTtyZXR1cm59ZnVuY3Rpb24gZmYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNzI4O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGdmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gaGYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wO2U9aTtvY1tjWyhjW2I+PjJdfDApKzI0Pj4yXSYxMjddKGIpfDA7ZD1ZayhjW2Q+PjJdfDAsMTM1MjgpfDA7Y1tiKzM2Pj4yXT1kO2FbYis0ND4+MF09KG9jW2NbKGNbZD4+Ml18MCkrMjg+PjJdJjEyN10oZCl8MCkmMTtpPWU7cmV0dXJufWZ1bmN0aW9uIGpmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtiPWk7aT1pKzE2fDA7Zz1iKzh8MDtkPWI7ZT1hKzM2fDA7Zj1hKzQwfDA7aD1nKzh8MDtqPWc7YT1hKzMyfDA7d2hpbGUoMSl7az1jW2U+PjJdfDA7az15Y1tjWyhjW2s+PjJdfDApKzIwPj4yXSY2M10oayxjW2Y+PjJdfDAsZyxoLGQpfDA7bD0oY1tkPj4yXXwwKS1qfDA7aWYoKFpiKGd8MCwxLGx8MCxjW2E+PjJdfDApfDApIT0obHwwKSl7ZT0tMTtkPTU7YnJlYWt9aWYoKGt8MCk9PTIpe2U9LTE7ZD01O2JyZWFrfWVsc2UgaWYoKGt8MCkhPTEpe2Q9NDticmVha319aWYoKGR8MCk9PTQpe2w9KChfYShjW2E+PjJdfDApfDApIT0wKTw8MzE+PjMxO2k9YjtyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTUpe2k9YjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIGtmKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MDtmPWk7aWYoKGFbYis0ND4+MF18MCkhPTApe2c9WmIoZHwwLDQsZXwwLGNbYiszMj4+Ml18MCl8MDtpPWY7cmV0dXJuIGd8MH1pZigoZXwwKT4wKXtnPTB9ZWxzZXtnPTA7aT1mO3JldHVybiBnfDB9d2hpbGUoMSl7aWYoKHhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGNbZD4+Ml18MCl8MCk9PS0xKXtlPTY7YnJlYWt9Zz1nKzF8MDtpZigoZ3wwKTwoZXwwKSl7ZD1kKzR8MH1lbHNle2U9NjticmVha319aWYoKGV8MCk9PTYpe2k9ZjtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIGxmKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtlPWk7aT1pKzMyfDA7az1lKzE2fDA7cD1lKzh8MDtqPWUrNHwwO2g9ZTtmPShkfDApPT0tMTthOmRve2lmKCFmKXtjW3A+PjJdPWQ7aWYoKGFbYis0ND4+MF18MCkhPTApe2lmKChaYihwfDAsNCwxLGNbYiszMj4+Ml18MCl8MCk9PTEpe2JyZWFrfWVsc2V7ZD0tMX1pPWU7cmV0dXJuIGR8MH1jW2o+PjJdPWs7bD1wKzR8MDtuPWIrMzZ8MDtvPWIrNDB8MDtnPWsrOHwwO209aztiPWIrMzJ8MDt3aGlsZSgxKXtxPWNbbj4+Ml18MDtxPXRjW2NbKGNbcT4+Ml18MCkrMTI+PjJdJjMxXShxLGNbbz4+Ml18MCxwLGwsaCxrLGcsail8MDtpZigoY1toPj4yXXwwKT09KHB8MCkpe2Q9LTE7Zz0xMjticmVha31pZigocXwwKT09Myl7Zz03O2JyZWFrfXI9KHF8MCk9PTE7aWYoIShxPj4+MDwyKSl7ZD0tMTtnPTEyO2JyZWFrfXE9KGNbaj4+Ml18MCktbXwwO2lmKChaYihrfDAsMSxxfDAsY1tiPj4yXXwwKXwwKSE9KHF8MCkpe2Q9LTE7Zz0xMjticmVha31pZihyKXtwPXI/Y1toPj4yXXwwOnB9ZWxzZXticmVhayBhfX1pZigoZ3wwKT09Nyl7aWYoKFpiKHB8MCwxLDEsY1tiPj4yXXwwKXwwKT09MSl7YnJlYWt9ZWxzZXtkPS0xfWk9ZTtyZXR1cm4gZHwwfWVsc2UgaWYoKGd8MCk9PTEyKXtpPWU7cmV0dXJuIGR8MH19fXdoaWxlKDApO3I9Zj8wOmQ7aT1lO3JldHVybiByfDB9ZnVuY3Rpb24gbWYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNzI4O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG5mKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gb2YoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2c9WWsoY1tkPj4yXXwwLDEzNTI4KXwwO2Y9YiszNnwwO2NbZj4+Ml09ZztkPWIrNDR8MDtjW2Q+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MDtmPWNbZj4+Ml18MDthW2IrNTM+PjBdPShvY1tjWyhjW2Y+PjJdfDApKzI4Pj4yXSYxMjddKGYpfDApJjE7aWYoKGNbZD4+Ml18MCk+OCl7b2soOTU0NCl9ZWxzZXtpPWU7cmV0dXJufX1mdW5jdGlvbiBwZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPXNmKGEsMCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBxZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPXNmKGEsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiByZihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtpPWkrMzJ8MDtqPWUrMTZ8MDtmPWUrOHwwO2w9ZSs0fDA7az1lO2c9Yis1MnwwO209KGFbZz4+MF18MCkhPTA7aWYoKGR8MCk9PS0xKXtpZihtKXttPS0xO2k9ZTtyZXR1cm4gbXwwfW09Y1tiKzQ4Pj4yXXwwO2FbZz4+MF09KG18MCkhPS0xJjE7aT1lO3JldHVybiBtfDB9aD1iKzQ4fDA7YTpkb3tpZihtKXtjW2w+PjJdPWNbaD4+Ml07bT1jW2IrMzY+PjJdfDA7az10Y1tjWyhjW20+PjJdfDApKzEyPj4yXSYzMV0obSxjW2IrNDA+PjJdfDAsbCxsKzR8MCxrLGosais4fDAsZil8MDtpZigoa3wwKT09Myl7YVtqPj4wXT1jW2g+PjJdO2NbZj4+Ml09aisxfWVsc2UgaWYoKGt8MCk9PTF8KGt8MCk9PTIpe209LTE7aT1lO3JldHVybiBtfDB9Yj1iKzMyfDA7d2hpbGUoMSl7az1jW2Y+PjJdfDA7aWYoIShrPj4+MD5qPj4+MCkpe2JyZWFrIGF9bT1rKyAtMXwwO2NbZj4+Ml09bTtpZigoVmEoYVttPj4wXXwwLGNbYj4+Ml18MCl8MCk9PS0xKXtmPS0xO2JyZWFrfX1pPWU7cmV0dXJuIGZ8MH19d2hpbGUoMCk7Y1toPj4yXT1kO2FbZz4+MF09MTttPWQ7aT1lO3JldHVybiBtfDB9ZnVuY3Rpb24gc2YoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7ZT1pO2k9aSszMnwwO2c9ZSsxNnwwO2o9ZSs4fDA7bT1lKzR8MDtsPWU7bj1iKzUyfDA7aWYoKGFbbj4+MF18MCkhPTApe2Y9Yis0OHwwO2c9Y1tmPj4yXXwwO2lmKCFkKXt2PWc7aT1lO3JldHVybiB2fDB9Y1tmPj4yXT0tMTthW24+PjBdPTA7dj1nO2k9ZTtyZXR1cm4gdnwwfXM9Y1tiKzQ0Pj4yXXwwO3M9KHN8MCk+MT9zOjE7YTpkb3tpZigoc3wwKT4wKXtwPWIrMzJ8MDtuPTA7d2hpbGUoMSl7bz1UYihjW3A+PjJdfDApfDA7aWYoKG98MCk9PS0xKXtoPS0xO2JyZWFrfWFbZytuPj4wXT1vO249bisxfDA7aWYoKG58MCk+PShzfDApKXticmVhayBhfX1pPWU7cmV0dXJuIGh8MH19d2hpbGUoMCk7Yjpkb3tpZigoYVtiKzUzPj4wXXwwKT09MCl7cD1iKzQwfDA7cT1iKzM2fDA7bj1qKzR8MDtvPWIrMzJ8MDt3aGlsZSgxKXt2PWNbcD4+Ml18MDt1PXY7dD1jW3U+PjJdfDA7dT1jW3UrND4+Ml18MDt3PWNbcT4+Ml18MDtyPWcrc3wwO3Y9dGNbY1soY1t3Pj4yXXwwKSsxNj4+Ml0mMzFdKHcsdixnLHIsbSxqLG4sbCl8MDtpZigodnwwKT09Myl7Zj0xNDticmVha31lbHNlIGlmKCh2fDApPT0yKXtoPS0xO2Y9MjI7YnJlYWt9ZWxzZSBpZigodnwwKSE9MSl7az1zO2JyZWFrIGJ9dz1jW3A+PjJdfDA7Y1t3Pj4yXT10O2Nbdys0Pj4yXT11O2lmKChzfDApPT04KXtoPS0xO2Y9MjI7YnJlYWt9dD1UYihjW28+PjJdfDApfDA7aWYoKHR8MCk9PS0xKXtoPS0xO2Y9MjI7YnJlYWt9YVtyPj4wXT10O3M9cysxfDB9aWYoKGZ8MCk9PTE0KXtjW2o+PjJdPWFbZz4+MF18MDtrPXM7YnJlYWt9ZWxzZSBpZigoZnwwKT09MjIpe2k9ZTtyZXR1cm4gaHwwfX1lbHNle2Nbaj4+Ml09YVtnPj4wXXwwO2s9c319d2hpbGUoMCk7aWYoZCl7dz1jW2o+PjJdfDA7Y1tiKzQ4Pj4yXT13O2k9ZTtyZXR1cm4gd3wwfWQ9YiszMnwwO3doaWxlKDEpe2lmKChrfDApPD0wKXticmVha31rPWsrIC0xfDA7aWYoKFZhKGFbZytrPj4wXXwwLGNbZD4+Ml18MCl8MCk9PS0xKXtoPS0xO2Y9MjI7YnJlYWt9fWlmKChmfDApPT0yMil7aT1lO3JldHVybiBofDB9dz1jW2o+PjJdfDA7aT1lO3JldHVybiB3fDB9ZnVuY3Rpb24gdGYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNjY0O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHVmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA2NjQ7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gdmYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wO2U9aTtvY1tjWyhjW2I+PjJdfDApKzI0Pj4yXSYxMjddKGIpfDA7ZD1ZayhjW2Q+PjJdfDAsMTM1MjApfDA7Y1tiKzM2Pj4yXT1kO2FbYis0ND4+MF09KG9jW2NbKGNbZD4+Ml18MCkrMjg+PjJdJjEyN10oZCl8MCkmMTtpPWU7cmV0dXJufWZ1bmN0aW9uIHdmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtiPWk7aT1pKzE2fDA7Zz1iKzh8MDtkPWI7ZT1hKzM2fDA7Zj1hKzQwfDA7aD1nKzh8MDtqPWc7YT1hKzMyfDA7d2hpbGUoMSl7az1jW2U+PjJdfDA7az15Y1tjWyhjW2s+PjJdfDApKzIwPj4yXSY2M10oayxjW2Y+PjJdfDAsZyxoLGQpfDA7bD0oY1tkPj4yXXwwKS1qfDA7aWYoKFpiKGd8MCwxLGx8MCxjW2E+PjJdfDApfDApIT0obHwwKSl7ZT0tMTtkPTU7YnJlYWt9aWYoKGt8MCk9PTIpe2U9LTE7ZD01O2JyZWFrfWVsc2UgaWYoKGt8MCkhPTEpe2Q9NDticmVha319aWYoKGR8MCk9PTQpe2w9KChfYShjW2E+PjJdfDApfDApIT0wKTw8MzE+PjMxO2k9YjtyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTUpe2k9YjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIHhmKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MDtnPWk7aWYoKGFbYis0ND4+MF18MCkhPTApe2g9WmIoZXwwLDEsZnwwLGNbYiszMj4+Ml18MCl8MDtpPWc7cmV0dXJuIGh8MH1pZigoZnwwKT4wKXtoPTB9ZWxzZXtoPTA7aT1nO3JldHVybiBofDB9d2hpbGUoMSl7aWYoKHhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGRbZT4+MF18MCl8MCk9PS0xKXtmPTY7YnJlYWt9aD1oKzF8MDtpZigoaHwwKTwoZnwwKSl7ZT1lKzF8MH1lbHNle2Y9NjticmVha319aWYoKGZ8MCk9PTYpe2k9ZztyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIHlmKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtlPWk7aT1pKzMyfDA7az1lKzE2fDA7cD1lKzh8MDtqPWUrNHwwO2g9ZTtmPShkfDApPT0tMTthOmRve2lmKCFmKXthW3A+PjBdPWQ7aWYoKGFbYis0ND4+MF18MCkhPTApe2lmKChaYihwfDAsMSwxLGNbYiszMj4+Ml18MCl8MCk9PTEpe2JyZWFrfWVsc2V7ZD0tMX1pPWU7cmV0dXJuIGR8MH1jW2o+PjJdPWs7bD1wKzF8MDtuPWIrMzZ8MDtvPWIrNDB8MDtnPWsrOHwwO209aztiPWIrMzJ8MDt3aGlsZSgxKXtxPWNbbj4+Ml18MDtxPXRjW2NbKGNbcT4+Ml18MCkrMTI+PjJdJjMxXShxLGNbbz4+Ml18MCxwLGwsaCxrLGcsail8MDtpZigoY1toPj4yXXwwKT09KHB8MCkpe2Q9LTE7Zz0xMjticmVha31pZigocXwwKT09Myl7Zz03O2JyZWFrfXI9KHF8MCk9PTE7aWYoIShxPj4+MDwyKSl7ZD0tMTtnPTEyO2JyZWFrfXE9KGNbaj4+Ml18MCktbXwwO2lmKChaYihrfDAsMSxxfDAsY1tiPj4yXXwwKXwwKSE9KHF8MCkpe2Q9LTE7Zz0xMjticmVha31pZihyKXtwPXI/Y1toPj4yXXwwOnB9ZWxzZXticmVhayBhfX1pZigoZ3wwKT09Nyl7aWYoKFpiKHB8MCwxLDEsY1tiPj4yXXwwKXwwKT09MSl7YnJlYWt9ZWxzZXtkPS0xfWk9ZTtyZXR1cm4gZHwwfWVsc2UgaWYoKGd8MCk9PTEyKXtpPWU7cmV0dXJuIGR8MH19fXdoaWxlKDApO3I9Zj8wOmQ7aT1lO3JldHVybiByfDB9ZnVuY3Rpb24gemYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNjY0O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEFmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA2NjQ7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gQmYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2c9WWsoY1tkPj4yXXwwLDEzNTIwKXwwO2Y9YiszNnwwO2NbZj4+Ml09ZztkPWIrNDR8MDtjW2Q+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MDtmPWNbZj4+Ml18MDthW2IrNTM+PjBdPShvY1tjWyhjW2Y+PjJdfDApKzI4Pj4yXSYxMjddKGYpfDApJjE7aWYoKGNbZD4+Ml18MCk+OCl7b2soOTU0NCl9ZWxzZXtpPWU7cmV0dXJufX1mdW5jdGlvbiBDZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPUZmKGEsMCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBEZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPUZmKGEsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBFZihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtpPWkrMzJ8MDtqPWUrMTZ8MDtmPWUrNHwwO2w9ZSs4fDA7az1lO2c9Yis1MnwwO209KGFbZz4+MF18MCkhPTA7aWYoKGR8MCk9PS0xKXtpZihtKXttPS0xO2k9ZTtyZXR1cm4gbXwwfW09Y1tiKzQ4Pj4yXXwwO2FbZz4+MF09KG18MCkhPS0xJjE7aT1lO3JldHVybiBtfDB9aD1iKzQ4fDA7YTpkb3tpZihtKXthW2w+PjBdPWNbaD4+Ml07bT1jW2IrMzY+PjJdfDA7az10Y1tjWyhjW20+PjJdfDApKzEyPj4yXSYzMV0obSxjW2IrNDA+PjJdfDAsbCxsKzF8MCxrLGosais4fDAsZil8MDtpZigoa3wwKT09MXwoa3wwKT09Mil7bT0tMTtpPWU7cmV0dXJuIG18MH1lbHNlIGlmKChrfDApPT0zKXthW2o+PjBdPWNbaD4+Ml07Y1tmPj4yXT1qKzF9Yj1iKzMyfDA7d2hpbGUoMSl7az1jW2Y+PjJdfDA7aWYoIShrPj4+MD5qPj4+MCkpe2JyZWFrIGF9bT1rKyAtMXwwO2NbZj4+Ml09bTtpZigoVmEoYVttPj4wXXwwLGNbYj4+Ml18MCl8MCk9PS0xKXtmPS0xO2JyZWFrfX1pPWU7cmV0dXJuIGZ8MH19d2hpbGUoMCk7Y1toPj4yXT1kO2FbZz4+MF09MTttPWQ7aT1lO3JldHVybiBtfDB9ZnVuY3Rpb24gRmYoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7Zj1pO2k9aSszMnwwO2g9ZisxNnwwO2o9Zis4fDA7bj1mKzR8MDttPWY7bz1iKzUyfDA7aWYoKGFbbz4+MF18MCkhPTApe2c9Yis0OHwwO2g9Y1tnPj4yXXwwO2lmKCFlKXt3PWg7aT1mO3JldHVybiB3fDB9Y1tnPj4yXT0tMTthW28+PjBdPTA7dz1oO2k9ZjtyZXR1cm4gd3wwfXA9Y1tiKzQ0Pj4yXXwwO3A9KHB8MCk+MT9wOjE7YTpkb3tpZigocHwwKT4wKXtyPWIrMzJ8MDtvPTA7d2hpbGUoMSl7cT1UYihjW3I+PjJdfDApfDA7aWYoKHF8MCk9PS0xKXtrPS0xO2JyZWFrfWFbaCtvPj4wXT1xO289bysxfDA7aWYoKG98MCk+PShwfDApKXticmVhayBhfX1pPWY7cmV0dXJuIGt8MH19d2hpbGUoMCk7Yjpkb3tpZigoYVtiKzUzPj4wXXwwKT09MCl7cj1iKzQwfDA7cz1iKzM2fDA7bz1qKzF8MDtxPWIrMzJ8MDt3aGlsZSgxKXt3PWNbcj4+Ml18MDt2PXc7dT1jW3Y+PjJdfDA7dj1jW3YrND4+Ml18MDt4PWNbcz4+Ml18MDt0PWgrcHwwO3c9dGNbY1soY1t4Pj4yXXwwKSsxNj4+Ml0mMzFdKHgsdyxoLHQsbixqLG8sbSl8MDtpZigod3wwKT09Mil7az0tMTttPTIzO2JyZWFrfWVsc2UgaWYoKHd8MCk9PTMpe209MTQ7YnJlYWt9ZWxzZSBpZigod3wwKSE9MSl7bD1wO2JyZWFrIGJ9eD1jW3I+PjJdfDA7Y1t4Pj4yXT11O2NbeCs0Pj4yXT12O2lmKChwfDApPT04KXtrPS0xO209MjM7YnJlYWt9dT1UYihjW3E+PjJdfDApfDA7aWYoKHV8MCk9PS0xKXtrPS0xO209MjM7YnJlYWt9YVt0Pj4wXT11O3A9cCsxfDB9aWYoKG18MCk9PTE0KXthW2o+PjBdPWFbaD4+MF18MDtsPXA7YnJlYWt9ZWxzZSBpZigobXwwKT09MjMpe2k9ZjtyZXR1cm4ga3wwfX1lbHNle2Fbaj4+MF09YVtoPj4wXXwwO2w9cH19d2hpbGUoMCk7ZG97aWYoIWUpe2U9YiszMnwwO3doaWxlKDEpe2lmKChsfDApPD0wKXttPTIxO2JyZWFrfWw9bCsgLTF8MDtpZigoVmEoZFtoK2w+PjBdfDAsY1tlPj4yXXwwKXwwKT09LTEpe2s9LTE7bT0yMzticmVha319aWYoKG18MCk9PTIxKXtnPWFbaj4+MF18MDticmVha31lbHNlIGlmKChtfDApPT0yMyl7aT1mO3JldHVybiBrfDB9fWVsc2V7Zz1hW2o+PjBdfDA7Y1tiKzQ4Pj4yXT1nJjI1NX19d2hpbGUoMCk7eD1nJjI1NTtpPWY7cmV0dXJuIHh8MH1mdW5jdGlvbiBHZigpe3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2I9aTtpPWkrMTZ8MDtkPWI7Zj1jW3I+PjJdfDA7Y1syMjQ0XT0xMDY2NDtYayg4OTgwfDApO2NbODk4ND4+Ml09MDtjWzg5ODg+PjJdPTA7Y1s4OTkyPj4yXT0wO2NbODk5Nj4+Ml09MDtjWzllMz4+Ml09MDtjWzkwMDQ+PjJdPTA7Y1syMjQ0XT05NzA0O2NbOTAwOD4+Ml09ZjtjWzkwMTY+PjJdPTkwMzI7Y1s5MDI0Pj4yXT0tMTthWzkwMjg+PjBdPTA7bj1jWzg5ODA+PjJdfDA7bT1uKzR8MDtjW20+PjJdPShjW20+PjJdfDApKzE7aWYoISgoY1szMzgwXXwwKT09LTEpKXtjW2Q+PjJdPTEzNTIwO2NbZCs0Pj4yXT0yMDg7Y1tkKzg+PjJdPTA7Y2coMTM1MjAsZCl9bD0oY1sxMzUyND4+Ml18MCkrIC0xfDA7az1jW24rOD4+Ml18MDtpZigoY1tuKzEyPj4yXXwwKS1rPj4yPj4+MD5sPj4+MD8oaj1jW2srKGw8PDIpPj4yXXwwLChqfDApIT0wKTowKXtjWzkwMTI+PjJdPWo7Y1s5MDIwPj4yXT1vY1tjWyhjW2o+PjJdfDApKzI0Pj4yXSYxMjddKGopfDA7bD1jWzkwMTI+PjJdfDA7YVs5MDI5Pj4wXT0ob2NbY1soY1tsPj4yXXwwKSsyOD4+Ml0mMTI3XShsKXwwKSYxO2lmKChjWzkwMjA+PjJdfDApPjgpe29rKDk1NDQpfWw9Y1ttPj4yXXwwO2NbbT4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKX1jWzIwNjZdPTEwNzk2O2NbODI3Mj4+Ml09MTA4MTY7Y1s4MjY4Pj4yXT0wO2NbODI5Nj4+Ml09ODk3NjtjWzgyODg+PjJdPTA7Y1s4MjkyPj4yXT0wO2NbODI3Nj4+Ml09NDA5ODtjWzgyODQ+PjJdPTA7Y1s4MjgwPj4yXT02O2s9ODMwNHwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4MzAwfDApO2NbODM0ND4+Ml09MDtjWzgzNDg+PjJdPS0xO2o9Y1tzPj4yXXwwO2NbMjI3MF09MTA2NjQ7WGsoOTA4NHwwKTtjWzkwODg+PjJdPTA7Y1s5MDkyPj4yXT0wO2NbOTA5Nj4+Ml09MDtjWzkxMDA+PjJdPTA7Y1s5MTA0Pj4yXT0wO2NbOTEwOD4+Ml09MDtjWzIyNzBdPTk1OTI7Y1s5MTEyPj4yXT1qO2s9Y1s5MDg0Pj4yXXwwO2w9ays0fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO2lmKCEoKGNbMzM4MF18MCk9PS0xKSl7Y1tkPj4yXT0xMzUyMDtjW2QrND4+Ml09MjA4O2NbZCs4Pj4yXT0wO2NnKDEzNTIwLGQpfW09KGNbMTM1MjQ+PjJdfDApKyAtMXwwO249Y1trKzg+PjJdfDA7aWYoKGNbaysxMj4+Ml18MCktbj4+Mj4+PjA+bT4+PjA/KGg9Y1tuKyhtPDwyKT4+Ml18MCwoaHwwKSE9MCk6MCl7bj1jW2w+PjJdfDA7Y1tsPj4yXT1uKyAtMTtpZigobnwwKT09MCl7bGNbY1soY1trPj4yXXwwKSs4Pj4yXSYyNTVdKGspfWNbOTExNj4+Ml09aDtjWzkxMjA+PjJdPTkwNDA7YVs5MTI0Pj4wXT0ob2NbY1soY1toPj4yXXwwKSsyOD4+Ml0mMTI3XShoKXwwKSYxO2NbMjA4OF09MTA4NzY7Y1s4MzU2Pj4yXT0xMDg5NjtjWzgzODA+PjJdPTkwODA7Y1s4MzcyPj4yXT0wO2NbODM3Nj4+Ml09MDtjWzgzNjA+PjJdPTQwOTg7Y1s4MzY4Pj4yXT0wO2NbODM2ND4+Ml09NjtrPTgzODh8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODM4NHwwKTtjWzg0Mjg+PjJdPTA7Y1s4NDMyPj4yXT0tMTtoPWNbcT4+Ml18MDtjWzIyODJdPTEwNjY0O1hrKDkxMzJ8MCk7Y1s5MTM2Pj4yXT0wO2NbOTE0MD4+Ml09MDtjWzkxNDQ+PjJdPTA7Y1s5MTQ4Pj4yXT0wO2NbOTE1Mj4+Ml09MDtjWzkxNTY+PjJdPTA7Y1syMjgyXT05NTkyO2NbOTE2MD4+Ml09aDttPWNbOTEzMj4+Ml18MDtuPW0rNHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtpZighKChjWzMzODBdfDApPT0tMSkpe2NbZD4+Ml09MTM1MjA7Y1tkKzQ+PjJdPTIwODtjW2QrOD4+Ml09MDtjZygxMzUyMCxkKX1sPShjWzEzNTI0Pj4yXXwwKSsgLTF8MDtrPWNbbSs4Pj4yXXwwO2lmKChjW20rMTI+PjJdfDApLWs+PjI+Pj4wPmw+Pj4wPyhnPWNbaysobDw8Mik+PjJdfDAsKGd8MCkhPTApOjApe2w9Y1tuPj4yXXwwO2Nbbj4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbbT4+Ml18MCkrOD4+Ml0mMjU1XShtKX1jWzkxNjQ+PjJdPWc7Y1s5MTY4Pj4yXT05MDQ4O2FbOTE3Mj4+MF09KG9jW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjEyN10oZyl8MCkmMTtjWzIxMTBdPTEwODc2O2NbODQ0ND4+Ml09MTA4OTY7Y1s4NDY4Pj4yXT05MTI4O2NbODQ2MD4+Ml09MDtjWzg0NjQ+PjJdPTA7Y1s4NDQ4Pj4yXT00MDk4O2NbODQ1Nj4+Ml09MDtjWzg0NTI+PjJdPTY7az04NDc2fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg0NzJ8MCk7Y1s4NTE2Pj4yXT0wO2NbODUyMD4+Ml09LTE7az1jWyhjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg0NjQ+PjJdfDA7Y1syMTMyXT0xMDg3NjtjWzg1MzI+PjJdPTEwODk2O2NbODU1Nj4+Ml09aztjWzg1NDg+PjJdPShrfDApPT0wJjE7Y1s4NTUyPj4yXT0wO2NbODUzNj4+Ml09NDA5ODtjWzg1NDQ+PjJdPTA7Y1s4NTQwPj4yXT02O2s9ODU2NHwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4NTYwfDApO2NbODYwND4+Ml09MDtjWzg2MDg+PjJdPS0xO2NbKGNbKGNbMjA2Nl18MCkrIC0xMj4+Ml18MCkrODMzNj4+Ml09ODM1MjtnPShjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg0NDR8MDtjW2c+PjJdPWNbZz4+Ml18ODE5MjtjWyhjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg1MTI+PjJdPTgzNTI7Y1syMjk0XT0xMDcyODtYayg5MTgwfDApO2NbOTE4ND4+Ml09MDtjWzkxODg+PjJdPTA7Y1s5MTkyPj4yXT0wO2NbOTE5Nj4+Ml09MDtjWzkyMDA+PjJdPTA7Y1s5MjA0Pj4yXT0wO2NbMjI5NF09OTQ0ODtjWzkyMDg+PjJdPWY7Y1s5MjE2Pj4yXT05MDU2O2NbOTIyND4+Ml09LTE7YVs5MjI4Pj4wXT0wO2Y9Y1s5MTgwPj4yXXwwO2c9Zis0fDA7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxO2lmKCEoKGNbMzM4Ml18MCk9PS0xKSl7Y1tkPj4yXT0xMzUyODtjW2QrND4+Ml09MjA4O2NbZCs4Pj4yXT0wO2NnKDEzNTI4LGQpfWs9KGNbMTM1MzI+PjJdfDApKyAtMXwwO2w9Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbD4+Mj4+PjA+az4+PjA/KGU9Y1tsKyhrPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7Y1s5MjEyPj4yXT1lO2NbOTIyMD4+Ml09b2NbY1soY1tlPj4yXXwwKSsyND4+Ml0mMTI3XShlKXwwO249Y1s5MjEyPj4yXXwwO2FbOTIyOT4+MF09KG9jW2NbKGNbbj4+Ml18MCkrMjg+PjJdJjEyN10obil8MCkmMTtpZigoY1s5MjIwPj4yXXwwKT44KXtvayg5NTQ0KX1uPWNbZz4+Ml18MDtjW2c+PjJdPW4rIC0xO2lmKChufDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9Y1syMTU0XT0xMDgzNjtjWzg2MjQ+PjJdPTEwODU2O2NbODYyMD4+Ml09MDtjWzg2NDg+PjJdPTkxNzY7Y1s4NjQwPj4yXT0wO2NbODY0ND4+Ml09MDtjWzg2Mjg+PjJdPTQwOTg7Y1s4NjM2Pj4yXT0wO2NbODYzMj4+Ml09NjtrPTg2NTZ8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODY1MnwwKTtjWzg2OTY+PjJdPTA7Y1s4NzAwPj4yXT0tMTtjWzIzMDhdPTEwNzI4O1hrKDkyMzZ8MCk7Y1s5MjQwPj4yXT0wO2NbOTI0ND4+Ml09MDtjWzkyNDg+PjJdPTA7Y1s5MjUyPj4yXT0wO2NbOTI1Nj4+Ml09MDtjWzkyNjA+PjJdPTA7Y1syMzA4XT05MzM2O2NbOTI2ND4+Ml09ajtlPWNbOTIzNj4+Ml18MDtmPWUrNHwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMTtpZighKChjWzMzODJdfDApPT0tMSkpe2NbZD4+Ml09MTM1Mjg7Y1tkKzQ+PjJdPTIwODtjW2QrOD4+Ml09MDtjZygxMzUyOCxkKX1nPShjWzEzNTMyPj4yXXwwKSsgLTF8MDtqPWNbZSs4Pj4yXXwwO2Rve2lmKChjW2UrMTI+PjJdfDApLWo+PjI+Pj4wPmc+Pj4wKXtnPWNbaisoZzw8Mik+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfW49Y1tmPj4yXXwwO2NbZj4+Ml09bisgLTE7aWYoKG58MCk9PTApe2xjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKX1jWzkyNjg+PjJdPWc7Y1s5MjcyPj4yXT05MDY0O2FbOTI3Nj4+MF09KG9jW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjEyN10oZyl8MCkmMTtjWzIxNzZdPTEwOTE2O2NbODcwOD4+Ml09MTA5MzY7Y1s4NzMyPj4yXT05MjMyO2NbODcyND4+Ml09MDtjWzg3Mjg+PjJdPTA7Y1s4NzEyPj4yXT00MDk4O2NbODcyMD4+Ml09MDtjWzg3MTY+PjJdPTY7az04NzQwfDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg3MzZ8MCk7Y1s4NzgwPj4yXT0wO2NbODc4ND4+Ml09LTE7Y1syMzIwXT0xMDcyODtYayg5Mjg0fDApO2NbOTI4OD4+Ml09MDtjWzkyOTI+PjJdPTA7Y1s5Mjk2Pj4yXT0wO2NbOTMwMD4+Ml09MDtjWzkzMDQ+PjJdPTA7Y1s5MzA4Pj4yXT0wO2NbMjMyMF09OTMzNjtjWzkzMTI+PjJdPWg7Zj1jWzkyODQ+PjJdfDA7ZT1mKzR8MDtjW2U+PjJdPShjW2U+PjJdfDApKzE7aWYoISgoY1szMzgyXXwwKT09LTEpKXtjW2Q+PjJdPTEzNTI4O2NbZCs0Pj4yXT0yMDg7Y1tkKzg+PjJdPTA7Y2coMTM1MjgsZCl9ZD0oY1sxMzUzMj4+Ml18MCkrIC0xfDA7Zz1jW2YrOD4+Ml18MDtkb3tpZigoY1tmKzEyPj4yXXwwKS1nPj4yPj4+MD5kPj4+MCl7ZD1jW2crKGQ8PDIpPj4yXXwwO2lmKChkfDApPT0wKXticmVha31uPWNbZT4+Ml18MDtjW2U+PjJdPW4rIC0xO2lmKChufDApIT0wKXtjWzkzMTY+PjJdPWQ7Y1s5MzIwPj4yXT05MDcyO2s9Y1tkPj4yXXwwO2s9aysyOHwwO2s9Y1trPj4yXXwwO2s9b2NbayYxMjddKGQpfDA7az1rJjE7YVs5MzI0Pj4wXT1rO2NbMjE5OF09MTA5MTY7Y1s4Nzk2Pj4yXT0xMDkzNjtjWzg4MjA+PjJdPTkyODA7Y1s4ODEyPj4yXT0wO2NbODgxNj4+Ml09MDtjWzg4MDA+PjJdPTQwOTg7Y1s4ODA4Pj4yXT0wO2NbODgwND4+Ml09NjtrPTg4Mjh8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODgyNHwwKTtjWzg4Njg+PjJdPTA7Y1s4ODcyPj4yXT0tMTtrPWNbMjE5OF18MDtrPWsrIC0xMnwwO2s9Y1trPj4yXXwwO2s9aysyNHwwO2s9ODc5MitrfDA7az1jW2s+PjJdfDA7Y1syMjIwXT0xMDkxNjtjWzg4ODQ+PjJdPTEwOTM2O2NbODkwOD4+Ml09aztrPShrfDApPT0wO2s9ayYxO2NbODkwMD4+Ml09aztjWzg5MDQ+PjJdPTA7Y1s4ODg4Pj4yXT00MDk4O2NbODg5Nj4+Ml09MDtjWzg4OTI+PjJdPTY7az04OTE2fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg5MTJ8MCk7Y1s4OTU2Pj4yXT0wO2NbODk2MD4+Ml09LTE7bj1jWzIxNTRdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNzJ8MDtuPTg2MTYrbnwwO2Nbbj4+Ml09ODcwNDtuPWNbMjE5OF18MDtuPW4rIC0xMnwwO249Y1tuPj4yXXwwO249bis0fDA7bj04NzkyK258MDttPWNbbj4+Ml18MDttPW18ODE5MjtjW24+PjJdPW07bj1jWzIxOThdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNzJ8MDtuPTg3OTIrbnwwO2Nbbj4+Ml09ODcwNDtjYygyMTIsODk2OCxwfDApfDA7aT1iO3JldHVybn1sY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZik7Y1s5MzE2Pj4yXT1kO2NbOTMyMD4+Ml09OTA3MjtrPWNbZD4+Ml18MDtrPWsrMjh8MDtrPWNbaz4+Ml18MDtrPW9jW2smMTI3XShkKXwwO2s9ayYxO2FbOTMyND4+MF09aztjWzIxOThdPTEwOTE2O2NbODc5Nj4+Ml09MTA5MzY7Y1s4ODIwPj4yXT05MjgwO2NbODgxMj4+Ml09MDtjWzg4MTY+PjJdPTA7Y1s4ODAwPj4yXT00MDk4O2NbODgwOD4+Ml09MDtjWzg4MDQ+PjJdPTY7az04ODI4fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg4MjR8MCk7Y1s4ODY4Pj4yXT0wO2NbODg3Mj4+Ml09LTE7az1jWzIxOThdfDA7az1rKyAtMTJ8MDtrPWNbaz4+Ml18MDtrPWsrMjR8MDtrPTg3OTIra3wwO2s9Y1trPj4yXXwwO2NbMjIyMF09MTA5MTY7Y1s4ODg0Pj4yXT0xMDkzNjtjWzg5MDg+PjJdPWs7az0oa3wwKT09MDtrPWsmMTtjWzg5MDA+PjJdPWs7Y1s4OTA0Pj4yXT0wO2NbODg4OD4+Ml09NDA5ODtjWzg4OTY+PjJdPTA7Y1s4ODkyPj4yXT02O2s9ODkxNnwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4OTEyfDApO2NbODk1Nj4+Ml09MDtjWzg5NjA+PjJdPS0xO249Y1syMTU0XXwwO249bisgLTEyfDA7bj1jW24+PjJdfDA7bj1uKzcyfDA7bj04NjE2K258MDtjW24+PjJdPTg3MDQ7bj1jWzIxOThdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNHwwO249ODc5MitufDA7bT1jW24+PjJdfDA7bT1tfDgxOTI7Y1tuPj4yXT1tO249Y1syMTk4XXwwO249bisgLTEyfDA7bj1jW24+PjJdfDA7bj1uKzcyfDA7bj04NzkyK258MDtjW24+PjJdPTg3MDQ7Y2MoMjEyLDg5NjgscHwwKXwwO2k9YjtyZXR1cm59fXdoaWxlKDApO249WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtuPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBIZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5MDQ7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWVsc2V7UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufX1mdW5jdGlvbiBJZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5MDQ7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gSmYoYSl7YT1hfDA7cmV0dXJuIGNbYSs0Pj4yXXwwfWZ1bmN0aW9uIEtmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZWxzZXtSYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59fWZ1bmN0aW9uIExmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBNZihhKXthPWF8MDtyZXR1cm4gY1thKzQ+PjJdfDB9ZnVuY3Rpb24gTmYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTA0O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1lbHNle1JiKGF8MCk7dm4oYSk7aT1iO3JldHVybn19ZnVuY3Rpb24gT2YoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO2NbYT4+Ml09ZDtjW2ErND4+Ml09YjtyZXR1cm59ZnVuY3Rpb24gUGYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWU7cWNbY1soY1thPj4yXXwwKSsxMj4+Ml0mMzFdKGYsYSxiKTtpZigoY1tmKzQ+PjJdfDApIT0oY1tkKzQ+PjJdfDApKXthPTA7aT1lO3JldHVybiBhfDB9YT0oY1tmPj4yXXwwKT09KGNbZD4+Ml18MCk7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gUWYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT1pO2lmKChjW2IrND4+Ml18MCkhPShhfDApKXthPTA7aT1lO3JldHVybiBhfDB9YT0oY1tiPj4yXXwwKT09KGR8MCk7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gUmYoYSl7YT1hfDA7cmV0dXJuIDEwMDgwfWZ1bmN0aW9uIFNmKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2Q9aTtlPU5iKGV8MCl8MDtmPUpuKGV8MCl8MDtpZihmPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWlmKGY+Pj4wPDExKXthW2I+PjBdPWY8PDE7aj1iKzF8MDtMbihqfDAsZXwwLGZ8MCl8MDtqPWorZnwwO2Fbaj4+MF09MDtpPWQ7cmV0dXJufWc9ZisxNiYtMTY7aD0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aj11bihoKXwwO2lmKChqfDApIT0wKXtoPTExO2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXtoPTk7YnJlYWt9c2NbaiYzMV0oKX1pZigoaHwwKT09OSl7aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9ZWxzZSBpZigoaHwwKT09MTEpe2NbYis4Pj4yXT1qO2NbYj4+Ml09Z3wxO2NbYis0Pj4yXT1mO0xuKGp8MCxlfDAsZnwwKXwwO2o9aitmfDA7YVtqPj4wXT0wO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIFRmKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBVZihhKXthPWF8MDtyZXR1cm4gMTAxMDR9ZnVuY3Rpb24gVmYoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7ZD1pO2U9TmIoZXwwKXwwO2Y9Sm4oZXwwKXwwO2lmKGY+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9aWYoZj4+PjA8MTEpe2FbYj4+MF09Zjw8MTtqPWIrMXwwO0xuKGp8MCxlfDAsZnwwKXwwO2o9aitmfDA7YVtqPj4wXT0wO2k9ZDtyZXR1cm59Zz1mKzE2Ji0xNjtoPShnfDApPT0wPzE6Zzt3aGlsZSgxKXtqPXVuKGgpfDA7aWYoKGp8MCkhPTApe2g9MTE7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2g9OTticmVha31zY1tqJjMxXSgpfWlmKChofDApPT05KXtqPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX1lbHNlIGlmKChofDApPT0xMSl7Y1tiKzg+PjJdPWo7Y1tiPj4yXT1nfDE7Y1tiKzQ+PjJdPWY7TG4oanwwLGV8MCxmfDApfDA7aj1qK2Z8MDthW2o+PjBdPTA7aT1kO3JldHVybn19ZnVuY3Rpb24gV2YoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Q9aTtpZigoYVsxMDA5Nl18MCk9PTA/KFFhKDEwMDk2KXwwKSE9MDowKXtjWzI1MjJdPTEwMjg4OyRhKDEwMDk2KX1jW2I+PjJdPWU7Y1tiKzQ+PjJdPTEwMDg4O2k9ZDtyZXR1cm59ZnVuY3Rpb24gWGYoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFlmKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO2c9aTtpPWkrNDh8MDtvPWcrMjR8MDtsPWcrMTJ8MDtoPWc7cD1KbihmfDApfDA7aWYocD4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1kb3tpZihwPj4+MDwxMSl7YVtoPj4wXT1wPDwxO209aDtxPWgrMXwwfWVsc2V7bT1wKzE2Ji0xNjtyPShtfDApPT0wPzE6bTt3aGlsZSgxKXtxPXVuKHIpfDA7aWYoKHF8MCkhPTApe2o9MTE7YnJlYWt9cT1jWzU2NjZdfDA7Y1s1NjY2XT1xKzA7aWYoKHF8MCk9PTApe2JyZWFrfXNjW3EmMzFdKCl9aWYoKGp8MCk9PTExKXtjW2grOD4+Ml09cTtjW2g+PjJdPW18MTtjW2grND4+Ml09cDttPWg7YnJlYWt9cj1YYSg0KXwwO2Nbcj4+Ml09MjI2ODA7d2IocnwwLDIyNzI4LDIwNil9fXdoaWxlKDApO0xuKHF8MCxmfDAscHwwKXwwO2FbcStwPj4wXT0wO2lmKChkfDApIT0wKXtwPWFbbT4+MF18MDtpZigocCYxKT09MCl7cD0ocCYyNTUpPj4+MX1lbHNle3A9Y1toKzQ+PjJdfDB9aWYoKHB8MCkhPTApe2pnKGgsMTAxMjgsMil9cWNbY1soY1tlPj4yXXwwKSsyND4+Ml0mMzFdKG8sZSxkKTtmPWFbbz4+MF18MDtpZigoZiYxKT09MCl7cD1vKzF8MDtmPShmJjI1NSk+Pj4xfWVsc2V7cD1jW28rOD4+Ml18MDtmPWNbbys0Pj4yXXwwfWpnKGgscCxmKTtpZighKChhW28+PjBdJjEpPT0wKT8obj1jW28rOD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9fWNbbCswPj4yXT1jW20rMD4+Ml07Y1tsKzQ+PjJdPWNbbSs0Pj4yXTtjW2wrOD4+Ml09Y1ttKzg+PjJdO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2NbYj4+Ml09OTkyODtuPWIrNHwwO2lmKChhW2w+PjBdJjEpPT0wKXtmPWwrMXwwfWVsc2V7Zj1jW2wrOD4+Ml18MH1wPUpuKGZ8MCl8MDtvPXArMTN8MDtvPShvfDApPT0wPzE6bzt3aGlsZSgxKXtxPXVuKG8pfDA7aWYoKHF8MCkhPTApe2JyZWFrfXE9Y1s1NjY2XXwwO2NbNTY2Nl09cSswO2lmKChxfDApPT0wKXtqPTMzO2JyZWFrfXNjW3EmMzFdKCl9aWYoKGp8MCk9PTMzKXtyPVhhKDQpfDA7Y1tyPj4yXT0yMjY4MDt3YihyfDAsMjI3MjgsMjA2KX1jW3ErND4+Ml09cDtjW3E+PjJdPXA7cj1xKzEyfDA7Y1tuPj4yXT1yO2NbcSs4Pj4yXT0wO0xuKHJ8MCxmfDAscCsxfDApfDA7aWYoISgoYVtsPj4wXSYxKT09MCk/KGs9Y1tsKzg+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKChhW20+PjBdJjEpPT0wKXtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn1oPWNbaCs4Pj4yXXwwO2lmKChofDApPT0wKXtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn12bihoKTtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn1mdW5jdGlvbiBaZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIF9mKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiAkZihhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBhZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn0KCgoKZnVuY3Rpb24gYmcoYSl7YT1hfDA7dmFyIGI9MDtiPWk7QmIoYXwwKXwwO2k9YjtyZXR1cm59ZnVuY3Rpb24gY2coYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pOyRiKDEwNTY4KXwwO2lmKChjW2E+PjJdfDApPT0xKXtkb3tHYSgxMDU5MiwxMDU2OCl8MH13aGlsZSgoY1thPj4yXXwwKT09MSl9aWYoKGNbYT4+Ml18MCkhPTApe0NiKDEwNTY4KXwwO2k9ZTtyZXR1cm59Y1thPj4yXT0xO0NiKDEwNTY4KXwwO2c9Yis0fDA7Zj1kW2c+PjBdfGRbZysxPj4wXTw8OHxkW2crMj4+MF08PDE2fGRbZyszPj4wXTw8MjQ7Zz1nKzR8MDtnPWRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNDtiPShjW2I+PjJdfDApKyhnPj4xKXwwO2lmKChnJjF8MCkhPTApe2Y9Y1soY1tiPj4yXXwwKStmPj4yXXwwfWxjW2YmMjU1XShiKTskYigxMDU2OCl8MDtjW2E+PjJdPS0xO0NiKDEwNTY4KXwwO0ViKDEwNTkyKXwwO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZGcoKXt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9WGEoOCl8MDtjW2I+PjJdPTk5MDQ7d2hpbGUoMSl7ZT11bigyNSl8MDtpZigoZXwwKSE9MCl7ZD03O2JyZWFrfWU9Y1s1NjY2XXwwO2NbNTY2Nl09ZSswO2lmKChlfDApPT0wKXticmVha31zY1tlJjMxXSgpfWlmKChkfDApPT03KXtjW2UrND4+Ml09MTI7Y1tlPj4yXT0xMjtmPWUrMTJ8MDtjW2IrND4+Ml09ZjtjW2UrOD4+Ml09MDtmPWYrMHwwO2U9MTA2NDB8MDtkPWYrMTN8MDtkb3thW2Y+PjBdPWFbZT4+MF18MDtmPWYrMXwwO2U9ZSsxfDB9d2hpbGUoKGZ8MCk8KGR8MCkpO2NbYj4+Ml09OTk4NDt3YihifDAsMTAwMjQsMTA0KX1mPVhhKDQpfDA7Y1tmPj4yXT0yMjY4MDt3YihmfDAsMjI3MjgsMjA2KX1mdW5jdGlvbiBlZyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aWYoZT4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1pZihlPj4+MDwxMSl7YVtiPj4wXT1lPDwxO2o9YisxfDA7TG4oanwwLGR8MCxlfDApfDA7aj1qK2V8MDthW2o+PjBdPTA7aT1mO3JldHVybn1nPWUrMTYmLTE2O2g9KGd8MCk9PTA/MTpnO3doaWxlKDEpe2o9dW4oaCl8MDtpZigoanwwKSE9MCl7aD0xMTticmVha31qPWNbNTY2Nl18MDtjWzU2NjZdPWorMDtpZigoanwwKT09MCl7aD05O2JyZWFrfXNjW2omMzFdKCl9aWYoKGh8MCk9PTkpe2o9WGEoNCl8MDtjW2o+PjJdPTIyNjgwO3diKGp8MCwyMjcyOCwyMDYpfWVsc2UgaWYoKGh8MCk9PTExKXtjW2IrOD4+Ml09ajtjW2I+PjJdPWd8MTtjW2IrND4+Ml09ZTtMbihqfDAsZHwwLGV8MCl8MDtqPWorZXwwO2Fbaj4+MF09MDtpPWY7cmV0dXJufX1mdW5jdGlvbiBmZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aWYoISgoYVtiPj4wXSYxKT09MCk/KGU9Y1tiKzg+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWk9ZDtyZXR1cm59ZnVuY3Rpb24gZ2coYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtmPWk7ZT1KbihkfDApfDA7aD1hW2I+PjBdfDA7aWYoKGgmMSk9PTApe2c9MTB9ZWxzZXtnPWNbYj4+Ml18MDtoPWcmMjU1O2c9KGcmLTIpKyAtMXwwfWo9KGgmMSk9PTA7aWYoZz4+PjA8ZT4+PjApe2lmKGope2g9KGgmMjU1KT4+PjF9ZWxzZXtoPWNbYis0Pj4yXXwwfWtnKGIsZyxlLWd8MCxoLDAsaCxlLGQpO2k9ZjtyZXR1cm59aWYoail7Zz1iKzF8MH1lbHNle2c9Y1tiKzg+PjJdfDB9TW4oZ3wwLGR8MCxlfDApfDA7YVtnK2U+PjBdPTA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZTw8MTtpPWY7cmV0dXJufWVsc2V7Y1tiKzQ+PjJdPWU7aT1mO3JldHVybn19ZnVuY3Rpb24gaGcoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpZigoZHwwKT09MCl7aT1lO3JldHVybn1oPWFbYj4+MF18MDtpZigoaCYxKT09MCl7Zz0xMH1lbHNle2g9Y1tiPj4yXXwwO2c9KGgmLTIpKyAtMXwwO2g9aCYyNTV9aWYoKGgmMSk9PTApe2Y9KGgmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKChnLWZ8MCk+Pj4wPGQ+Pj4wKXtsZyhiLGcsZC1nK2Z8MCxmLGYsMCk7aD1hW2I+PjBdfDB9aWYoKGgmMSk9PTApe2c9YisxfDB9ZWxzZXtnPWNbYis4Pj4yXXwwfU5uKGcrZnwwLDAsZHwwKXwwO2Q9ZitkfDA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZDw8MX1lbHNle2NbYis0Pj4yXT1kfWFbZytkPj4wXT0wO2k9ZTtyZXR1cm59ZnVuY3Rpb24gaWcoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZD1pO2g9YVtiPj4wXXwwO2lmKChoJjEpPT0wKXtsPTEwfWVsc2V7aD1jW2I+PjJdfDA7bD0oaCYtMikrIC0xfDA7aD1oJjI1NX1qPShoJjEpPT0wO2lmKGope2Y9KGgmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKGY+Pj4wPDExKXtlPTEwfWVsc2V7ZT0oZisxNiYtMTYpKyAtMXwwfWlmKChlfDApPT0obHwwKSl7aT1kO3JldHVybn1kb3tpZigoZXwwKT09MTApe2s9YisxfDA7Zz1jW2IrOD4+Ml18MDtpZihqKXtMbihrfDAsZ3wwLCgoaCYyNTUpPj4+MSkrMXwwKXwwO2g9aztrPTA7aj1nO2c9Mjd9ZWxzZXtoPWs7az0wO2o9ZztnPTI1fX1lbHNle2s9ZSsxfDA7az0oa3wwKT09MD8xOms7YTpkb3tpZihlPj4+MD5sPj4+MCl7d2hpbGUoMSl7bD11bihrKXwwO2lmKChsfDApIT0wKXticmVhayBhfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXticmVha31zY1tsJjMxXSgpfWw9WGEoNCl8MDtjW2w+PjJdPTIyNjgwO3diKGx8MCwyMjcyOCwyMDYpfWVsc2V7d2hpbGUoMSl7bD11bihrKXwwO2lmKChsfDApIT0wKXticmVhayBhfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXticmVha31zY1tsJjMxXSgpfWw9WGEoNCl8MDtjW2w+PjJdPTIyNjgwO3diKGx8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihqKXtMbihsfDAsYisxfDAsKChoJjI1NSk+Pj4xKSsxfDApfDA7aD1sO2JyZWFrfWVsc2V7aD1sO2s9MTtqPWNbYis4Pj4yXXwwO2c9MjU7YnJlYWt9fX13aGlsZSgwKTtpZigoZ3wwKT09MjUpe0xuKGh8MCxqfDAsKGNbYis0Pj4yXXwwKSsxfDApfDA7Zz0yN31kb3tpZigoZ3wwKT09Mjcpe2lmKChqfDApPT0wKXtpZihrKXticmVha319ZWxzZXt2bihqKTtpZihrKXticmVha319YVtiPj4wXT1mPDwxO2k9ZDtyZXR1cm59fXdoaWxlKDApO2NbYj4+Ml09ZSsxfDE7Y1tiKzQ+PjJdPWY7Y1tiKzg+PjJdPWg7aT1kO3JldHVybn1mdW5jdGlvbiBqZyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aj1hW2I+PjBdfDA7aWYoKGomMSk9PTApe2c9MTB9ZWxzZXtqPWNbYj4+Ml18MDtnPShqJi0yKSsgLTF8MDtqPWomMjU1fWg9KGomMSk9PTA7aWYoaCl7aj0oaiYyNTUpPj4+MX1lbHNle2o9Y1tiKzQ+PjJdfDB9aWYoKGctanwwKT4+PjA8ZT4+PjApe2tnKGIsZyxlLWcranwwLGosaiwwLGUsZCk7aT1mO3JldHVybn1pZigoZXwwKT09MCl7aT1mO3JldHVybn1pZihoKXtnPWIrMXwwfWVsc2V7Zz1jW2IrOD4+Ml18MH1MbihnK2p8MCxkfDAsZXwwKXwwO2U9aitlfDA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZTw8MX1lbHNle2NbYis0Pj4yXT1lfWFbZytlPj4wXT0wO2k9ZjtyZXR1cm59ZnVuY3Rpb24ga2coYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MDtsPWk7aWYoKC0xOC1kfDApPj4+MDxlPj4+MCl7ZGcoKX1pZigoYVtiPj4wXSYxKT09MCl7bT1iKzF8MH1lbHNle209Y1tiKzg+PjJdfDB9aWYoZD4+PjA8MjE0NzQ4MzYyMyl7ZT1lK2R8MDtwPWQ8PDE7ZT1lPj4+MDxwPj4+MD9wOmU7aWYoZT4+PjA8MTEpe2U9MTF9ZWxzZXtlPWUrMTYmLTE2fX1lbHNle2U9LTE3fW89KGV8MCk9PTA/MTplO3doaWxlKDEpe3A9dW4obyl8MDtpZigocHwwKSE9MCl7YnJlYWt9cD1jWzU2NjZdfDA7Y1s1NjY2XT1wKzA7aWYoKHB8MCk9PTApe249MTM7YnJlYWt9c2NbcCYzMV0oKX1pZigobnwwKT09MTMpe3A9WGEoNCl8MDtjW3A+PjJdPTIyNjgwO3diKHB8MCwyMjcyOCwyMDYpfWlmKChnfDApIT0wKXtMbihwfDAsbXwwLGd8MCl8MH1pZigoanwwKSE9MCl7TG4ocCtnfDAsa3wwLGp8MCl8MH1uPWYtaHwwO2lmKChufDApIT0oZ3wwKSl7TG4ocCsoaitnKXwwLG0rKGgrZyl8MCxuLWd8MCl8MH1pZigoZHwwKT09MTB8KG18MCk9PTApe289Yis4fDA7Y1tvPj4yXT1wO289ZXwxO2NbYj4+Ml09bztvPW4ranwwO2U9Yis0fDA7Y1tlPj4yXT1vO3A9cCtvfDA7YVtwPj4wXT0wO2k9bDtyZXR1cm59dm4obSk7bz1iKzh8MDtjW28+PjJdPXA7bz1lfDE7Y1tiPj4yXT1vO289bitqfDA7ZT1iKzR8MDtjW2U+PjJdPW87cD1wK298MDthW3A+PjBdPTA7aT1sO3JldHVybn1mdW5jdGlvbiBsZyhiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTA7bD1pO2lmKCgtMTctZHwwKT4+PjA8ZT4+PjApe2RnKCl9aWYoKGFbYj4+MF0mMSk9PTApe2s9YisxfDB9ZWxzZXtrPWNbYis4Pj4yXXwwfWlmKGQ+Pj4wPDIxNDc0ODM2MjMpe2U9ZStkfDA7bj1kPDwxO2U9ZT4+PjA8bj4+PjA/bjplO2lmKGU+Pj4wPDExKXtlPTExfWVsc2V7ZT1lKzE2Ji0xNn19ZWxzZXtlPS0xN31tPShlfDApPT0wPzE6ZTt3aGlsZSgxKXtuPXVuKG0pfDA7aWYoKG58MCkhPTApe2JyZWFrfW49Y1s1NjY2XXwwO2NbNTY2Nl09biswO2lmKChufDApPT0wKXtqPTEzO2JyZWFrfXNjW24mMzFdKCl9aWYoKGp8MCk9PTEzKXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1pZigoZ3wwKSE9MCl7TG4obnwwLGt8MCxnfDApfDB9aWYoKGZ8MCkhPShnfDApKXtMbihuKyhoK2cpfDAsaytnfDAsZi1nfDApfDB9aWYoKGR8MCk9PTEwfChrfDApPT0wKXttPWIrOHwwO2NbbT4+Ml09bjtuPWV8MTtjW2I+PjJdPW47aT1sO3JldHVybn12bihrKTttPWIrOHwwO2NbbT4+Ml09bjtuPWV8MTtjW2I+PjJdPW47aT1sO3JldHVybn1mdW5jdGlvbiBtZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aWYoISgoYVtiPj4wXSYxKT09MCk/KGU9Y1tiKzg+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWk9ZDtyZXR1cm59ZnVuY3Rpb24gbmcoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtlPWk7Zj1kO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPT0wKXticmVha31lbHNle2Y9Zis0fDB9fWs9ZDtqPWYta3wwO2Y9aj4+MjtsPWFbYj4+MF18MDtpZigobCYxKT09MCl7Zz0xfWVsc2V7bD1jW2I+PjJdfDA7Zz0obCYtMikrIC0xfDA7bD1sJjI1NX1pZighKGc+Pj4wPGY+Pj4wKSl7aWYoKGwmMSk9PTApe2c9Yis0fDB9ZWxzZXtnPWNbYis4Pj4yXXwwfWg9KGZ8MCk9PTA7aWYoZy1rPj4yPj4+MDxmPj4+MCl7aWYoIWgpe2g9Zjtkb3toPWgrIC0xfDA7Y1tnKyhoPDwyKT4+Ml09Y1tkKyhoPDwyKT4+Ml19d2hpbGUoKGh8MCkhPTApfX1lbHNle2lmKCFoKXtoPWc7az1mO3doaWxlKDEpe2s9aysgLTF8MDtjW2g+PjJdPWNbZD4+Ml07aWYoKGt8MCk9PTApe2JyZWFrfWVsc2V7ZD1kKzR8MDtoPWgrNHwwfX19fWNbZysoZjw8Mik+PjJdPTA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09aj4+PjE7aT1lO3JldHVybn1lbHNle2NbYis0Pj4yXT1mO2k9ZTtyZXR1cm59fWlmKCgxMDczNzQxODA2LWd8MCk+Pj4wPChmLWd8MCk+Pj4wKXtkZygpfWlmKChsJjEpPT0wKXtqPWIrNHwwfWVsc2V7aj1jW2IrOD4+Ml18MH1pZihnPj4+MDw1MzY4NzA4ODcpe2s9Zzw8MTtrPWY+Pj4wPGs+Pj4wP2s6ZjtpZihrPj4+MDwyKXtrPTJ9ZWxzZXtrPWsrNCYtNH19ZWxzZXtrPTEwNzM3NDE4MDd9bT1rPDwyO209KG18MCk9PTA/MTptO3doaWxlKDEpe2w9dW4obSl8MDtpZigobHwwKSE9MCl7YnJlYWt9bD1jWzU2NjZdfDA7Y1s1NjY2XT1sKzA7aWYoKGx8MCk9PTApe2g9Mjk7YnJlYWt9c2NbbCYzMV0oKX1pZigoaHwwKT09Mjkpe209WGEoNCl8MDtjW20+PjJdPTIyNjgwO3diKG18MCwyMjcyOCwyMDYpfWlmKChmfDApIT0wKXtoPWY7bT1sO3doaWxlKDEpe2g9aCsgLTF8MDtjW20+PjJdPWNbZD4+Ml07aWYoKGh8MCk9PTApe2JyZWFrfWVsc2V7ZD1kKzR8MDttPW0rNHwwfX19aWYoISgoZ3wwKT09MXwoanwwKT09MCkpe3ZuKGopfWNbYis4Pj4yXT1sO2NbYj4+Ml09a3wxO2NbYis0Pj4yXT1mO2NbbCsoZjw8Mik+PjJdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBvZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2Q9aTtnPWFbYj4+MF18MDtpZigoZyYxKT09MCl7az0xfWVsc2V7Zz1jW2I+PjJdfDA7az0oZyYtMikrIC0xfDA7Zz1nJjI1NX1oPShnJjEpPT0wO2lmKGgpe2Y9KGcmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKGY+Pj4wPDIpe2U9MX1lbHNle2U9KGYrNCYtNCkrIC0xfDB9aWYoKGV8MCk9PShrfDApKXtpPWQ7cmV0dXJufWRve2lmKChlfDApPT0xKXtuPWIrNHwwO2w9Y1tiKzg+PjJdfDA7aWYoaCl7aj0wO209MTtoPTI2fWVsc2V7Zz1uO2o9MDttPTE7aD0yNX19ZWxzZXtqPShlPDwyKSs0fDA7aj0oanwwKT09MD8xOmo7YTpkb3tpZihlPj4+MD5rPj4+MCl7d2hpbGUoMSl7bj11bihqKXwwO2lmKChufDApIT0wKXticmVhayBhfWs9Y1s1NjY2XXwwO2NbNTY2Nl09ayswO2lmKChrfDApPT0wKXticmVha31zY1trJjMxXSgpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpfWVsc2V7d2hpbGUoMSl7bj11bihqKXwwO2lmKChufDApIT0wKXticmVhayBhfWs9Y1s1NjY2XXwwO2NbNTY2Nl09ayswO2lmKChrfDApPT0wKXticmVha31zY1trJjMxXSgpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihoKXtqPTE7bD1iKzR8MDttPTA7aD0yNjticmVha31lbHNle2c9bjtqPTE7bD1jW2IrOD4+Ml18MDttPTE7aD0yNTticmVha319fXdoaWxlKDApO2lmKChofDApPT0yNSl7az1jW2IrND4+Ml18MH1lbHNlIGlmKChofDApPT0yNil7az0oZyYyNTUpPj4+MTtnPW59az1rKzF8MDtpZigoa3wwKSE9MCl7bj1sO2g9Zzt3aGlsZSgxKXtrPWsrIC0xfDA7Y1toPj4yXT1jW24+PjJdO2lmKChrfDApPT0wKXticmVha31lbHNle249bis0fDA7aD1oKzR8MH19fWlmKCEobV4xfChsfDApPT0wKSl7dm4obCl9aWYoail7Y1tiPj4yXT1lKzF8MTtjW2IrND4+Ml09ZjtjW2IrOD4+Ml09ZztpPWQ7cmV0dXJufWVsc2V7YVtiPj4wXT1mPDwxO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIHBnKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtrPWk7aWYoKDEwNzM3NDE4MDctZHwwKT4+PjA8ZT4+PjApe2RnKCl9aWYoKGFbYj4+MF0mMSk9PTApe2w9Yis0fDB9ZWxzZXtsPWNbYis4Pj4yXXwwfWlmKGQ+Pj4wPDUzNjg3MDg4Nyl7ZT1lK2R8MDtwPWQ8PDE7ZT1lPj4+MDxwPj4+MD9wOmU7aWYoZT4+PjA8Mil7ZT0yfWVsc2V7ZT1lKzQmLTR9fWVsc2V7ZT0xMDczNzQxODA3fW89ZTw8MjtvPShvfDApPT0wPzE6bzt3aGlsZSgxKXttPXVuKG8pfDA7aWYoKG18MCkhPTApe2JyZWFrfW09Y1s1NjY2XXwwO2NbNTY2Nl09bSswO2lmKChtfDApPT0wKXtuPTEzO2JyZWFrfXNjW20mMzFdKCl9aWYoKG58MCk9PTEzKXtwPVhhKDQpfDA7Y1twPj4yXT0yMjY4MDt3YihwfDAsMjI3MjgsMjA2KX1pZigoZ3wwKSE9MCl7bz1nO249bDtwPW07d2hpbGUoMSl7bz1vKyAtMXwwO2NbcD4+Ml09Y1tuPj4yXTtpZigob3wwKT09MCl7YnJlYWt9ZWxzZXtuPW4rNHwwO3A9cCs0fDB9fX1mPWYtaHwwO2lmKChmfDApIT0oZ3wwKSl7Zj1mLWd8MDtoPWwrKGgrZzw8Mil8MDtnPW0rKGorZzw8Mil8MDt3aGlsZSgxKXtmPWYrIC0xfDA7Y1tnPj4yXT1jW2g+PjJdO2lmKChmfDApPT0wKXticmVha31lbHNle2g9aCs0fDA7Zz1nKzR8MH19fWlmKChkfDApPT0xfChsfDApPT0wKXtwPWIrOHwwO2NbcD4+Ml09bTtwPWV8MTtjW2I+PjJdPXA7aT1rO3JldHVybn12bihsKTtwPWIrOHwwO2NbcD4+Ml09bTtwPWV8MTtjW2I+PjJdPXA7aT1rO3JldHVybn1mdW5jdGlvbiBxZyhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT0oY1tiKzI0Pj4yXXwwKT09MDtpZihlKXtjW2IrMTY+PjJdPWR8MX1lbHNle2NbYisxNj4+Ml09ZH1pZigoKGUmMXxkKSZjW2IrMjA+PjJdfDApPT0wKXtyZXR1cm59ZD1YYSgxNil8MDtpZigoYVsxMTAwOF18MCk9PTA/KFFhKDExMDA4KXwwKSE9MDowKXtjWzI3NTBdPTExNzg0OyRhKDExMDA4KX1ZZihkLDEsMTFlMywxMTA1Nik7Y1tkPj4yXT0xMTAyNDt3YihkfDAsMTExMDQsMTMxKX1mdW5jdGlvbiByZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1pO2NbYT4+Ml09MTEwNDg7Zj1jW2ErNDA+PjJdfDA7Yj1hKzMyfDA7ZD1hKzM2fDA7aWYoKGZ8MCkhPTApe2Rve2Y9ZisgLTF8MDtxY1tjWyhjW2I+PjJdfDApKyhmPDwyKT4+Ml0mMzFdKDAsYSxjWyhjW2Q+PjJdfDApKyhmPDwyKT4+Ml18MCl9d2hpbGUoKGZ8MCkhPTApfWY9Y1thKzI4Pj4yXXwwO2g9Zis0fDA7Zz1jW2g+PjJdfDA7Y1toPj4yXT1nKyAtMTtpZigoZ3wwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfXZuKGNbYj4+Ml18MCk7dm4oY1tkPj4yXXwwKTt2bihjW2ErNDg+PjJdfDApO3ZuKGNbYSs2MD4+Ml18MCk7aT1lO3JldHVybn1mdW5jdGlvbiBzZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTEwNjY0O2Q9Y1thKzQ+PjJdfDA7Zj1kKzR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlfDApIT0wKXt2bihhKTtpPWI7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHRnKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7Y1thPj4yXT0xMDY2NDthPWNbYSs0Pj4yXXwwO2U9YSs0fDA7ZD1jW2U+PjJdfDA7Y1tlPj4yXT1kKyAtMTtpZigoZHwwKSE9MCl7aT1iO3JldHVybn1sY1tjWyhjW2E+PjJdfDApKzg+PjJdJjI1NV0oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB1ZyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybn1mdW5jdGlvbiB2ZyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiB3ZyhhLGIsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7Zz1hO2NbZz4+Ml09MDtjW2crND4+Ml09MDtnPWErOHwwO2NbZz4+Ml09LTE7Y1tnKzQ+PjJdPS0xO3JldHVybn1mdW5jdGlvbiB4ZyhhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtlPWE7Y1tlPj4yXT0wO2NbZSs0Pj4yXT0wO2U9YSs4fDA7Y1tlPj4yXT0tMTtjW2UrND4+Ml09LTE7cmV0dXJufWZ1bmN0aW9uIHlnKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIHpnKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIEFnKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtmPWk7aWYoKGV8MCk8PTApe2s9MDtpPWY7cmV0dXJuIGt8MH1nPWIrMTJ8MDtoPWIrMTZ8MDtqPTA7d2hpbGUoMSl7az1jW2c+PjJdfDA7aWYoaz4+PjA8KGNbaD4+Ml18MCk+Pj4wKXtjW2c+PjJdPWsrMTtrPWFbaz4+MF18MH1lbHNle2s9b2NbY1soY1tiPj4yXXwwKSs0MD4+Ml0mMTI3XShiKXwwO2lmKChrfDApPT0tMSl7ZT04O2JyZWFrfWs9ayYyNTV9YVtkPj4wXT1rO2o9aisxfDA7aWYoKGp8MCk8KGV8MCkpe2Q9ZCsxfDB9ZWxzZXtlPTg7YnJlYWt9fWlmKChlfDApPT04KXtpPWY7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBCZyhhKXthPWF8MDtyZXR1cm4tMX1mdW5jdGlvbiBDZyhhKXthPWF8MDt2YXIgYj0wLGU9MDtiPWk7aWYoKG9jW2NbKGNbYT4+Ml18MCkrMzY+PjJdJjEyN10oYSl8MCk9PS0xKXthPS0xO2k9YjtyZXR1cm4gYXwwfWU9YSsxMnwwO2E9Y1tlPj4yXXwwO2NbZT4+Ml09YSsxO2E9ZFthPj4wXXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIERnKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuLTF9ZnVuY3Rpb24gRWcoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtnPWk7aWYoKGZ8MCk8PTApe2w9MDtpPWc7cmV0dXJuIGx8MH1qPWIrMjR8MDtoPWIrMjh8MDtrPTA7d2hpbGUoMSl7bD1jW2o+PjJdfDA7aWYoIShsPj4+MDwoY1toPj4yXXwwKT4+PjApKXtpZigoeGNbY1soY1tiPj4yXXwwKSs1Mj4+Ml0mNjNdKGIsZFtlPj4wXXwwKXwwKT09LTEpe2g9NzticmVha319ZWxzZXttPWFbZT4+MF18MDtjW2o+PjJdPWwrMTthW2w+PjBdPW19az1rKzF8MDtpZigoa3wwKTwoZnwwKSl7ZT1lKzF8MH1lbHNle2g9NzticmVha319aWYoKGh8MCk9PTcpe2k9ZztyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIEZnKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuLTF9ZnVuY3Rpb24gR2coYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT0xMDcyODtkPWNbYSs0Pj4yXXwwO2Y9ZCs0fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZXwwKSE9MCl7dm4oYSk7aT1iO3JldHVybn1sY1tjWyhjW2Q+PjJdfDApKzg+PjJdJjI1NV0oZCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBIZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7YT1jW2ErND4+Ml18MDtlPWErNHwwO2Q9Y1tlPj4yXXwwO2NbZT4+Ml09ZCsgLTE7aWYoKGR8MCkhPTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gSWcoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm59ZnVuY3Rpb24gSmcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBhfDB9ZnVuY3Rpb24gS2coYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2c9YTtjW2c+PjJdPTA7Y1tnKzQ+PjJdPTA7Zz1hKzh8MDtjW2c+PjJdPS0xO2NbZys0Pj4yXT0tMTtyZXR1cm59ZnVuY3Rpb24gTGcoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7ZT1hO2NbZT4+Ml09MDtjW2UrND4+Ml09MDtlPWErOHwwO2NbZT4+Ml09LTE7Y1tlKzQ+PjJdPS0xO3JldHVybn1mdW5jdGlvbiBNZyhhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBOZyhhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBPZyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2lmKChkfDApPD0wKXtqPTA7aT1lO3JldHVybiBqfDB9Zz1hKzEyfDA7Zj1hKzE2fDA7aD0wO3doaWxlKDEpe2o9Y1tnPj4yXXwwO2lmKCEoaj4+PjA8KGNbZj4+Ml18MCk+Pj4wKSl7aj1vY1tjWyhjW2E+PjJdfDApKzQwPj4yXSYxMjddKGEpfDA7aWYoKGp8MCk9PS0xKXthPTg7YnJlYWt9fWVsc2V7Y1tnPj4yXT1qKzQ7aj1jW2o+PjJdfDB9Y1tiPj4yXT1qO2g9aCsxfDA7aWYoKGh8MCk+PShkfDApKXthPTg7YnJlYWt9Yj1iKzR8MH1pZigoYXwwKT09OCl7aT1lO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gUGcoYSl7YT1hfDA7cmV0dXJuLTF9ZnVuY3Rpb24gUWcoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2lmKChvY1tjWyhjW2E+PjJdfDApKzM2Pj4yXSYxMjddKGEpfDApPT0tMSl7YT0tMTtpPWI7cmV0dXJuIGF8MH1kPWErMTJ8MDthPWNbZD4+Ml18MDtjW2Q+PjJdPWErNDthPWNbYT4+Ml18MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBSZyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybi0xfWZ1bmN0aW9uIFNnKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2lmKChkfDApPD0wKXtqPTA7aT1lO3JldHVybiBqfDB9Zz1hKzI0fDA7Zj1hKzI4fDA7aD0wO3doaWxlKDEpe2o9Y1tnPj4yXXwwO2lmKCEoaj4+PjA8KGNbZj4+Ml18MCk+Pj4wKSl7aWYoKHhjW2NbKGNbYT4+Ml18MCkrNTI+PjJdJjYzXShhLGNbYj4+Ml18MCl8MCk9PS0xKXtmPTg7YnJlYWt9fWVsc2V7az1jW2I+PjJdfDA7Y1tnPj4yXT1qKzQ7Y1tqPj4yXT1rfWg9aCsxfDA7aWYoKGh8MCk+PShkfDApKXtmPTg7YnJlYWt9Yj1iKzR8MH1pZigoZnwwKT09OCl7aT1lO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gVGcoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4tMX1mdW5jdGlvbiBVZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBWZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBXZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs4KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFhnKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzgpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gWWcoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7ZT1kO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2IrKGYrMjQpPj4yXXwwKT09MCl7aT1kO3JldHVybn1hW2U+PjBdPTA7Y1tlKzQ+PjJdPWI7aWYoKGNbYisoZisxNik+PjJdfDApPT0wKXtnPWNbYisoZis3Mik+PjJdfDA7aWYoKGd8MCkhPTApe1lnKGcpO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZT4+MF09MTtnPWNbYisoZisyNCk+PjJdfDA7aWYoKG9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MCk9PS0xKXtnPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK2d8MCxjW2IrKGcrMTYpPj4yXXwxKX19Z2goZSk7aT1kO3JldHVybn1mdW5jdGlvbiBaZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBfZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aT1iO3JldHVybn1mdW5jdGlvbiAkZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs4KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGFoKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzgpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gYmgoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7ZT1kO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2IrKGYrMjQpPj4yXXwwKT09MCl7aT1kO3JldHVybn1hW2U+PjBdPTA7Y1tlKzQ+PjJdPWI7aWYoKGNbYisoZisxNik+PjJdfDApPT0wKXtnPWNbYisoZis3Mik+PjJdfDA7aWYoKGd8MCkhPTApe2JoKGcpO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZT4+MF09MTtnPWNbYisoZisyNCk+PjJdfDA7aWYoKG9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MCk9PS0xKXtnPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK2d8MCxjW2IrKGcrMTYpPj4yXXwxKX19cWgoZSk7aT1kO3JldHVybn1mdW5jdGlvbiBjaChhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzR8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBkaChhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzR8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBlaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs0KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGZoKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzQpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gZ2goYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTthPWErNHwwO2Q9Y1thPj4yXXwwO2U9Y1soY1tkPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2QrKGUrMjQpPj4yXXwwKT09MCl7aT1iO3JldHVybn1pZigoY1tkKyhlKzE2KT4+Ml18MCkhPTApe2k9YjtyZXR1cm59aWYoKGNbZCsoZSs0KT4+Ml0mODE5MnwwKT09MCl7aT1iO3JldHVybn1pZihZYSgpfDApe2k9YjtyZXR1cm59ZT1jW2E+PjJdfDA7ZT1jW2UrKChjWyhjW2U+PjJdfDApKyAtMTI+PjJdfDApKzI0KT4+Ml18MDtpZighKChvY1tjWyhjW2U+PjJdfDApKzI0Pj4yXSYxMjddKGUpfDApPT0tMSkpe2k9YjtyZXR1cm59ZD1jW2E+PjJdfDA7ZT1jWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDA7cWcoZCtlfDAsY1tkKyhlKzE2KT4+Ml18MSk7aT1iO3JldHVybn1mdW5jdGlvbiBoaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2g9aTtpPWkrMzJ8MDtrPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG4rMTYpPj4yXXwwKT09MCl7bT1jW2IrKG4rNzIpPj4yXXwwO2lmKChtfDApIT0wKXtZZyhtKTtuPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7bz1jW2IrKG4rMjgpPj4yXXwwO3A9bys0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1trPj4yXT0xMjE5MjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEyMTkyLGspfW49KGNbMTIxOTY+PjJdfDApKyAtMXwwO209Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktbT4+Mj4+PjA+bj4+PjA/KGU9Y1ttKyhuPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfXE9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO209Y1tiKyhxKzI0KT4+Ml18MDtuPWIrcXwwO289YisocSs3Nil8MDtwPWNbbz4+Ml18MDtkb3tpZigocHwwKT09LTEpe3E9Y1tiKyhxKzI4KT4+Ml18MDtwPXErNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NTY7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ1NixrKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXM+PjI+Pj4wPnI+Pj4wPyhsPWNbcysocjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2w9eGNbY1soY1tsPj4yXXwwKSsyOD4+Ml0mNjNdKGwsMzIpfDA7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfXA9bDw8MjQ+PjI0O2Nbbz4+Ml09cDticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7cj1wJjI1NTtzPWQmNjU1MzU7cT1jWyhjW2U+PjJdfDApKzI0Pj4yXXwwO2Nbaj4+Ml09bTtjW2srMD4+Ml09Y1tqKzA+PjJdO3djW3EmNjNdKGYsZSxrLG4scixzKTtpZigoY1tmPj4yXXwwKSE9MCl7YnJlYWt9cz1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7cWcoYitzfDAsY1tiKyhzKzE2KT4+Ml18NSk7YnJlYWt9cz1YYSg0KXwwO2Nbcz4+Ml09MjEzMDQ7d2Ioc3wwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2doKGcpO2k9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIGloKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7aD1pO2k9aSszMnwwO2s9aDtqPWgrMjR8MDtnPWgrMTZ8MDtmPWgrMTJ8MDthW2c+PjBdPTA7Y1tnKzQ+PjJdPWI7bj1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7ZG97aWYoKGNbYisobisxNik+PjJdfDApPT0wKXttPWNbYisobis3Mik+PjJdfDA7aWYoKG18MCkhPTApe1lnKG0pO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZz4+MF09MTtvPWNbYisobisyOCk+PjJdfDA7cD1vKzR8MDtjW3A+PjJdPShjW3A+PjJdfDApKzE7aWYoISgoY1szMDQ4XXwwKT09LTEpKXtjW2s+PjJdPTEyMTkyO2Nbays0Pj4yXT0yMDg7Y1trKzg+PjJdPTA7Y2coMTIxOTIsayl9bj0oY1sxMjE5Nj4+Ml18MCkrIC0xfDA7bT1jW28rOD4+Ml18MDtpZigoY1tvKzEyPj4yXXwwKS1tPj4yPj4+MD5uPj4+MD8oZT1jW20rKG48PDIpPj4yXXwwLChlfDApIT0wKTowKXtzPWNbcD4+Ml18MDtjW3A+PjJdPXMrIC0xO2lmKChzfDApPT0wKXtsY1tjWyhjW28+PjJdfDApKzg+PjJdJjI1NV0obyl9cT1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7bT1jW2IrKHErMjQpPj4yXXwwO249YitxfDA7bz1iKyhxKzc2KXwwO3A9Y1tvPj4yXXwwO2Rve2lmKChwfDApPT0tMSl7cT1jW2IrKHErMjgpPj4yXXwwO3A9cSs0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1trPj4yXT0xMzQ1NjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEzNDU2LGspfXI9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3M9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcz4+Mj4+PjA+cj4+PjA/KGw9Y1tzKyhyPDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7bD14Y1tjWyhjW2w+PjJdfDApKzI4Pj4yXSY2M10obCwzMil8MDtzPWNbcD4+Ml18MDtjW3A+PjJdPXMrIC0xO2lmKChzfDApPT0wKXtsY1tjWyhjW3E+PjJdfDApKzg+PjJdJjI1NV0ocSl9cD1sPDwyND4+MjQ7Y1tvPj4yXT1wO2JyZWFrfXM9WGEoNCl8MDtjW3M+PjJdPTIxMzA0O3diKHN8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtzPXAmMjU1O3I9Y1soY1tlPj4yXXwwKSsxNj4+Ml18MDtjW2o+PjJdPW07Y1trKzA+PjJdPWNbaiswPj4yXTt3Y1tyJjYzXShmLGUsayxuLHMsZCk7aWYoKGNbZj4+Ml18MCkhPTApe2JyZWFrfXM9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO3FnKGIrc3wwLGNbYisocysxNik+PjJdfDUpO2JyZWFrfXM9WGEoNCl8MDtjW3M+PjJdPTIxMzA0O3diKHN8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtnaChnKTtpPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBqaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2g9aTtpPWkrMzJ8MDtrPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG4rMTYpPj4yXXwwKT09MCl7bT1jW2IrKG4rNzIpPj4yXXwwO2lmKChtfDApIT0wKXtZZyhtKTtuPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7bz1jW2IrKG4rMjgpPj4yXXwwO3A9bys0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1trPj4yXT0xMjE5MjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEyMTkyLGspfW49KGNbMTIxOTY+PjJdfDApKyAtMXwwO209Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktbT4+Mj4+PjA+bj4+PjA/KGU9Y1ttKyhuPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfXE9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO209Y1tiKyhxKzI0KT4+Ml18MDtuPWIrcXwwO289YisocSs3Nil8MDtwPWNbbz4+Ml18MDtkb3tpZigocHwwKT09LTEpe3E9Y1tiKyhxKzI4KT4+Ml18MDtwPXErNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NTY7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ1NixrKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXM+PjI+Pj4wPnI+Pj4wPyhsPWNbcysocjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2w9eGNbY1soY1tsPj4yXXwwKSsyOD4+Ml0mNjNdKGwsMzIpfDA7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfXA9bDw8MjQ+PjI0O2Nbbz4+Ml09cDticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7cz1wJjI1NTtyPWNbKGNbZT4+Ml18MCkrMjQ+PjJdfDA7Y1tqPj4yXT1tO2NbayswPj4yXT1jW2orMD4+Ml07d2NbciY2M10oZixlLGssbixzLGQpO2lmKChjW2Y+PjJdfDApIT0wKXticmVha31zPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK3N8MCxjW2IrKHMrMTYpPj4yXXw1KTticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Z2goZyk7aT1oO3JldHVybiBifDB9ZnVuY3Rpb24ga2goYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO2g9aTtpPWkrMzJ8MDtsPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO289Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG8rMTYpPj4yXXwwKT09MCl7bj1jW2IrKG8rNzIpPj4yXXwwO2lmKChufDApIT0wKXtZZyhuKTtvPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7cD1jW2IrKG8rMjgpPj4yXXwwO3E9cCs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1tsPj4yXT0xMjE5MjtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEyMTkyLGwpfW89KGNbMTIxOTY+PjJdfDApKyAtMXwwO249Y1twKzg+PjJdfDA7aWYoKGNbcCsxMj4+Ml18MCktbj4+Mj4+PjA+bz4+PjA/KGs9Y1tuKyhvPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7dD1jW3E+PjJdfDA7Y1txPj4yXT10KyAtMTtpZigodHwwKT09MCl7bGNbY1soY1twPj4yXXwwKSs4Pj4yXSYyNTVdKHApfXI9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO249Y1tiKyhyKzI0KT4+Ml18MDtvPWIrcnwwO3A9Yisocis3Nil8MDtxPWNbcD4+Ml18MDtkb3tpZigocXwwKT09LTEpe3I9Y1tiKyhyKzI4KT4+Ml18MDtxPXIrNHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1zPShjWzEzNDYwPj4yXXwwKSsgLTF8MDt0PWNbcis4Pj4yXXwwO2lmKChjW3IrMTI+PjJdfDApLXQ+PjI+Pj4wPnM+Pj4wPyhtPWNbdCsoczw8Mik+PjJdfDAsKG18MCkhPTApOjApe209eGNbY1soY1ttPj4yXXwwKSsyOD4+Ml0mNjNdKG0sMzIpfDA7dD1jW3E+PjJdfDA7Y1txPj4yXT10KyAtMTtpZigodHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfXE9bTw8MjQ+PjI0O2NbcD4+Ml09cTticmVha310PVhhKDQpfDA7Y1t0Pj4yXT0yMTMwNDt3Yih0fDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dD1xJjI1NTtzPWNbKGNbaz4+Ml18MCkrMjg+PjJdfDA7Y1tqPj4yXT1uO2NbbCswPj4yXT1jW2orMD4+Ml07aWNbcyY2M10oZixrLGwsbyx0LGQsZSk7aWYoKGNbZj4+Ml18MCkhPTApe2JyZWFrfXQ9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO3FnKGIrdHwwLGNbYisodCsxNik+PjJdfDUpO2JyZWFrfXQ9WGEoNCl8MDtjW3Q+PjJdPTIxMzA0O3diKHR8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtnaChnKTtpPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBsaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrMTZ8MDtmPWU7YVtmPj4wXT0wO2NbZis0Pj4yXT1iO2g9Y1tiPj4yXXwwO2c9Y1toKyAtMTI+PjJdfDA7ZG97aWYoKGNbYisoZysxNik+PjJdfDApPT0wKXtqPWNbYisoZys3Mik+PjJdfDA7aWYoKGp8MCkhPTApe1lnKGopO2c9Y1tiPj4yXXwwO2g9ZztnPWNbZysgLTEyPj4yXXwwfWFbZj4+MF09MTtnPWNbYisoZysyNCk+PjJdfDA7aWYoKGd8MCkhPTApe2o9ZysyNHwwO2g9Y1tqPj4yXXwwO2lmKChofDApIT0oY1tnKzI4Pj4yXXwwKSl7Y1tqPj4yXT1oKzE7YVtoPj4wXT1kO2JyZWFrfWlmKCEoKHhjW2NbKGNbZz4+Ml18MCkrNTI+PjJdJjYzXShnLGQmMjU1KXwwKT09LTEpKXticmVha31oPWNbYj4+Ml18MH1qPWNbaCsgLTEyPj4yXXwwO3FnKGIranwwLGNbYisoaisxNik+PjJdfDEpfX13aGlsZSgwKTtnaChmKTtpPWU7cmV0dXJufWZ1bmN0aW9uIG1oKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErNHwwKTtpZigoYXwwKT09MCl7aT1iO3JldHVybn12bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG5oKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErNHwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG9oKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7ZT1jWyhjW2E+PjJdfDApKyAtMTI+PjJdfDA7ZD1hK2V8MDtyZyhhKyhlKzQpfDApO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gcGgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7cmcoYSsoKGNbKGNbYT4+Ml18MCkrIC0xMj4+Ml18MCkrNCl8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBxaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2E9YSs0fDA7ZD1jW2E+PjJdfDA7ZT1jWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDA7aWYoKGNbZCsoZSsyNCk+PjJdfDApPT0wKXtpPWI7cmV0dXJufWlmKChjW2QrKGUrMTYpPj4yXXwwKSE9MCl7aT1iO3JldHVybn1pZigoY1tkKyhlKzQpPj4yXSY4MTkyfDApPT0wKXtpPWI7cmV0dXJufWlmKFlhKCl8MCl7aT1iO3JldHVybn1lPWNbYT4+Ml18MDtlPWNbZSsoKGNbKGNbZT4+Ml18MCkrIC0xMj4+Ml18MCkrMjQpPj4yXXwwO2lmKCEoKG9jW2NbKGNbZT4+Ml18MCkrMjQ+PjJdJjEyN10oZSl8MCk9PS0xKSl7aT1iO3JldHVybn1kPWNbYT4+Ml18MDtlPWNbKGNbZD4+Ml18MCkrIC0xMj4+Ml18MDtxZyhkK2V8MCxjW2QrKGUrMTYpPj4yXXwxKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHJoKGEpe2E9YXwwO3JldHVybiAxMDk0NH1mdW5jdGlvbiBzaChiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7ZD1pO2lmKChlfDApPT0xKXtlZyhiLDEwOTYwLDM1KTtpPWQ7cmV0dXJufWc9TmIoZXwwKXwwO2U9Sm4oZ3wwKXwwO2lmKGU+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoZT4+PjA8MTEpe2FbYj4+MF09ZTw8MTtrPWIrMXwwfWVsc2V7aD1lKzE2Ji0xNjtqPShofDApPT0wPzE6aDt3aGlsZSgxKXtrPXVuKGopfDA7aWYoKGt8MCkhPTApe2Y9MTI7YnJlYWt9az1jWzU2NjZdfDA7Y1s1NjY2XT1rKzA7aWYoKGt8MCk9PTApe2JyZWFrfXNjW2smMzFdKCl9aWYoKGZ8MCk9PTEyKXtjW2IrOD4+Ml09aztjW2I+PjJdPWh8MTtjW2IrND4+Ml09ZTticmVha31rPVhhKDQpfDA7Y1trPj4yXT0yMjY4MDt3YihrfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7TG4oa3wwLGd8MCxlfDApfDA7YVtrK2U+PjBdPTA7aT1kO3JldHVybn1mdW5jdGlvbiB0aChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gdWgoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB2aChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gd2goYSl7YT1hfDA7dmFyIGI9MDtiPWk7cmcoYSk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geWgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gemgoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEFoKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBCaChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MDtiPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2c9Nn1lbHNle3doaWxlKDEpe2lmKChjfDApPT0oZHwwKSl7ZD0tMTticmVhayBhfWg9YVtjPj4wXXwwO2o9YVtlPj4wXXwwO2lmKGg8PDI0Pj4yNDxqPDwyND4+MjQpe2Q9LTE7YnJlYWsgYX1pZihqPDwyND4+MjQ8aDw8MjQ+PjI0KXtkPTE7YnJlYWsgYX1jPWMrMXwwO2U9ZSsxfDA7aWYoKGV8MCk9PShmfDApKXtnPTY7YnJlYWt9fX19d2hpbGUoMCk7aWYoKGd8MCk9PTYpe2Q9KGN8MCkhPShkfDApJjF9aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gQ2goYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2Q9aTtnPWU7aj1mLWd8MDtpZihqPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWRve2lmKGo+Pj4wPDExKXthW2I+PjBdPWo8PDE7bT1iKzF8MH1lbHNle2s9aisxNiYtMTY7bD0oa3wwKT09MD8xOms7d2hpbGUoMSl7bT11bihsKXwwO2lmKChtfDApIT0wKXtoPTExO2JyZWFrfW09Y1s1NjY2XXwwO2NbNTY2Nl09bSswO2lmKChtfDApPT0wKXticmVha31zY1ttJjMxXSgpfWlmKChofDApPT0xMSl7Y1tiKzg+PjJdPW07Y1tiPj4yXT1rfDE7Y1tiKzQ+PjJdPWo7YnJlYWt9bT1YYSg0KXwwO2NbbT4+Ml09MjI2ODA7d2IobXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChlfDApPT0oZnwwKSl7YVttPj4wXT0wO2k9ZDtyZXR1cm59ZWxzZXtiPW19d2hpbGUoMSl7YVtiPj4wXT1hW2U+PjBdfDA7ZT1lKzF8MDtpZigoZXwwKT09KGZ8MCkpe2JyZWFrfWVsc2V7Yj1iKzF8MH19bT1tKyhmKygwLWcpKXwwO2FbbT4+MF09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIERoKGIsYyxkKXtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MDtiPWk7aWYoKGN8MCk9PShkfDApKXtlPTA7aT1iO3JldHVybiBlfDB9ZWxzZXtlPTB9ZG97ZT0oYVtjPj4wXXwwKSsoZTw8NCl8MDtmPWUmLTI2ODQzNTQ1NjtlPShmPj4+MjR8ZileZTtjPWMrMXwwfXdoaWxlKChjfDApIT0oZHwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gRWgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRmgoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEdoKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wO2E9aTthOmRve2lmKChlfDApPT0oZnwwKSl7Zz02fWVsc2V7d2hpbGUoMSl7aWYoKGJ8MCk9PShkfDApKXtkPS0xO2JyZWFrIGF9aD1jW2I+PjJdfDA7aj1jW2U+PjJdfDA7aWYoKGh8MCk8KGp8MCkpe2Q9LTE7YnJlYWsgYX1pZigoanwwKTwoaHwwKSl7ZD0xO2JyZWFrIGF9Yj1iKzR8MDtlPWUrNHwwO2lmKChlfDApPT0oZnwwKSl7Zz02O2JyZWFrfX19fXdoaWxlKDApO2lmKChnfDApPT02KXtkPShifDApIT0oZHwwKSYxfWk9YTtyZXR1cm4gZHwwfWZ1bmN0aW9uIEhoKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtkPWk7aD1lO2s9Zi1ofDA7aj1rPj4yO2lmKGo+Pj4wPjEwNzM3NDE4MDcpe2RnKCl9ZG97aWYoaj4+PjA8Mil7YVtiPj4wXT1rPj4+MTttPWIrNHwwfWVsc2V7az1qKzQmLTQ7bD1rPDwyO2w9KGx8MCk9PTA/MTpsO3doaWxlKDEpe209dW4obCl8MDtpZigobXwwKSE9MCl7Zz0xMTticmVha31tPWNbNTY2Nl18MDtjWzU2NjZdPW0rMDtpZigobXwwKT09MCl7YnJlYWt9c2NbbSYzMV0oKX1pZigoZ3wwKT09MTEpe2NbYis4Pj4yXT1tO2NbYj4+Ml09a3wxO2NbYis0Pj4yXT1qO2JyZWFrfW09WGEoNCl8MDtjW20+PjJdPTIyNjgwO3diKG18MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZigoZXwwKT09KGZ8MCkpe2NbbT4+Ml09MDtpPWQ7cmV0dXJufWI9ZisgLTQrKDAtaCl8MDtnPW07d2hpbGUoMSl7Y1tnPj4yXT1jW2U+PjJdO2U9ZSs0fDA7aWYoKGV8MCk9PShmfDApKXticmVha31lbHNle2c9Zys0fDB9fW09bSsoKGI+Pj4yKSsxPDwyKXwwO2NbbT4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIEloKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDthPWk7aWYoKGJ8MCk9PShkfDApKXtlPTA7aT1hO3JldHVybiBlfDB9ZWxzZXtlPTB9ZG97ZT0oY1tiPj4yXXwwKSsoZTw8NCl8MDtmPWUmLTI2ODQzNTQ1NjtlPShmPj4+MjR8ZileZTtiPWIrNHwwfXdoaWxlKChifDApIT0oZHwwKSk7aT1hO3JldHVybiBlfDB9ZnVuY3Rpb24gSmgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gS2goYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIExoKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2s9aTtpPWkrNjR8MDtwPWs7dT1rKzQ4fDA7cT1rKzUyfDA7dD1rKzU2fDA7cz1rKzE2fDA7cj1rKzEyfDA7bD1rKzI0fDA7aWYoKGNbZys0Pj4yXSYxfDApPT0wKXtjW3E+PjJdPS0xO2w9Y1soY1tkPj4yXXwwKSsxNj4+Ml18MDtjW3M+PjJdPWNbZT4+Ml07Y1tyPj4yXT1jW2Y+PjJdO2NbdSswPj4yXT1jW3MrMD4+Ml07Y1twKzA+PjJdPWNbciswPj4yXTtpY1tsJjYzXSh0LGQsdSxwLGcsaCxxKTtsPWNbdD4+Ml18MDtjW2U+PjJdPWw7ZT1jW3E+PjJdfDA7aWYoKGV8MCk9PTApe2Fbaj4+MF09MH1lbHNlIGlmKChlfDApPT0xKXthW2o+PjBdPTF9ZWxzZXthW2o+PjBdPTE7Y1toPj4yXT00fWNbYj4+Ml09bDtpPWs7cmV0dXJufXE9ZysyOHwwO3I9Y1txPj4yXXwwO2Q9cis0fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1twPj4yXT0xMzQ1NjtjW3ArND4+Ml09MjA4O2NbcCs4Pj4yXT0wO2NnKDEzNDU2LHApfXM9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3Q9Y1tyKzg+PjJdfDA7aWYoKGNbcisxMj4+Ml18MCktdD4+Mj4+PjA+cz4+PjA/KG89Y1t0KyhzPDwyKT4+Ml18MCwob3wwKSE9MCk6MCl7dT1yKzR8MDtkPWNbdT4+Ml18MDtjW3U+PjJdPWQrIC0xO2lmKChkfDApPT0wKXtsY1tjWyhjW3I+PjJdfDApKzg+PjJdJjI1NV0ocil9cT1jW3E+PjJdfDA7ZD1xKzR8MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE7aWYoISgoY1szNDAwXXwwKT09LTEpKXtjW3A+PjJdPTEzNjAwO2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM2MDAscCl9cD0oY1sxMzYwND4+Ml18MCkrIC0xfDA7cj1jW3ErOD4+Ml18MDtpZigoY1txKzEyPj4yXXwwKS1yPj4yPj4+MD5wPj4+MD8obj1jW3IrKHA8PDIpPj4yXXwwLChufDApIT0wKTowKXt1PXErNHwwO2Q9Y1t1Pj4yXXwwO2NbdT4+Ml09ZCsgLTE7aWYoKGR8MCk9PTApe2xjW2NbKGNbcT4+Ml18MCkrOD4+Ml0mMjU1XShxKX1tY1tjWyhjW24+PjJdfDApKzI0Pj4yXSYxMjddKGwsbik7ZD1sKzEyfDA7bWNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mMTI3XShkLG4pO2Fbaj4+MF09KE1oKGUsY1tmPj4yXXwwLGwsbCsyNHwwLG8saCwxKXwwKT09KGx8MCkmMTtjW2I+PjJdPWNbZT4+Ml07aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tsKzIwPj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtsPj4wXSYxKT09MCl7aT1rO3JldHVybn1iPWNbbCs4Pj4yXXwwO2lmKChifDApPT0wKXtpPWs7cmV0dXJufXZuKGIpO2k9aztyZXR1cm59ZD1YYSg0KXwwO2NbZD4+Ml09MjEzMDQ7d2IoZHwwLDIxMzc2LDE5Nil9ZD1YYSg0KXwwO2NbZD4+Ml09MjEzMDQ7d2IoZHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gTWgoYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDttPWk7aT1pKzExMnwwO289bTt0PShnLWZ8MCkvMTJ8MDtpZih0Pj4+MD4xMDApe289dW4odCl8MDtpZigob3wwKT09MCl7QT1YYSg0KXwwO2NbQT4+Ml09MjI2ODA7d2IoQXwwLDIyNzI4LDIwNil9ZWxzZXtsPW99fWVsc2V7bD0wfXA9KGZ8MCk9PShnfDApO2lmKHApe3U9MH1lbHNle3E9Zjt1PTA7cj1vO3doaWxlKDEpe3M9YVtxPj4wXXwwO2lmKChzJjEpPT0wKXtzPShzJjI1NSk+Pj4xfWVsc2V7cz1jW3ErND4+Ml18MH1pZigoc3wwKT09MCl7YVtyPj4wXT0yO3U9dSsxfDA7dD10KyAtMXwwfWVsc2V7YVtyPj4wXT0xfXE9cSsxMnwwO2lmKChxfDApPT0oZ3wwKSl7YnJlYWt9ZWxzZXtyPXIrMXwwfX19cT0wO2E6d2hpbGUoMSl7dj0odHwwKSE9MDtyPXE7d2hpbGUoMSl7cT1jW2I+PjJdfDA7ZG97aWYoKHF8MCkhPTApe2lmKChjW3ErMTI+PjJdfDApPT0oY1txKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbcT4+Ml18MCkrMzY+PjJdJjEyN10ocSl8MCk9PS0xKXtjW2I+PjJdPTA7cT0wO2JyZWFrfWVsc2V7cT1jW2I+PjJdfDA7YnJlYWt9fX1lbHNle3E9MH19d2hpbGUoMCk7dz0ocXwwKT09MDtpZigoZXwwKSE9MCl7aWYoKGNbZSsxMj4+Ml18MCk9PShjW2UrMTY+PjJdfDApKXtBPShvY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDApPT0tMTtxPUE/MDplO2U9QT8wOmV9ZWxzZXtxPWV9fWVsc2V7cT0wO2U9MH1zPShxfDApPT0wO3g9Y1tiPj4yXXwwO2lmKCEoKHdecykmdikpe2JyZWFrIGF9cT1jW3grMTI+PjJdfDA7aWYoKHF8MCk9PShjW3grMTY+PjJdfDApKXtxPW9jW2NbKGNbeD4+Ml18MCkrMzY+PjJdJjEyN10oeCl8MH1lbHNle3E9ZFtxPj4wXXwwfXM9cSYyNTU7aWYoIWspe3M9eGNbY1soY1toPj4yXXwwKSsxMj4+Ml0mNjNdKGgscyl8MH1xPXIrMXwwO2lmKHApe3I9cX1lbHNle2JyZWFrfX1iOmRve2lmKGspe3g9MDt2PWY7dz1vO3doaWxlKDEpe2Rve2lmKChhW3c+PjBdfDApPT0xKXt5PWFbdj4+MF18MDt6PSh5JjEpPT0wO2lmKHope0E9disxfDB9ZWxzZXtBPWNbdis4Pj4yXXwwfWlmKCEoczw8MjQ+PjI0PT0oYVtBK3I+PjBdfDApKSl7YVt3Pj4wXT0wO3Q9dCsgLTF8MDticmVha31pZih6KXt4PSh5JjI1NSk+Pj4xfWVsc2V7eD1jW3YrND4+Ml18MH1pZigoeHwwKT09KHF8MCkpe2Fbdz4+MF09Mjt4PTE7dT11KzF8MDt0PXQrIC0xfDB9ZWxzZXt4PTF9fX13aGlsZSgwKTt2PXYrMTJ8MDtpZigodnwwKT09KGd8MCkpe2JyZWFrIGJ9dz13KzF8MH19ZWxzZXt4PTA7dj1mO3c9bzt3aGlsZSgxKXtkb3tpZigoYVt3Pj4wXXwwKT09MSl7aWYoKGFbdj4+MF0mMSk9PTApe3k9disxfDB9ZWxzZXt5PWNbdis4Pj4yXXwwfWlmKCEoczw8MjQ+PjI0PT0oeGNbY1soY1toPj4yXXwwKSsxMj4+Ml0mNjNdKGgsYVt5K3I+PjBdfDApfDApPDwyND4+MjQpKXthW3c+PjBdPTA7dD10KyAtMXwwO2JyZWFrfXg9YVt2Pj4wXXwwO2lmKCh4JjEpPT0wKXt4PSh4JjI1NSk+Pj4xfWVsc2V7eD1jW3YrND4+Ml18MH1pZigoeHwwKT09KHF8MCkpe2Fbdz4+MF09Mjt4PTE7dT11KzF8MDt0PXQrIC0xfDB9ZWxzZXt4PTF9fX13aGlsZSgwKTt2PXYrMTJ8MDtpZigodnwwKT09KGd8MCkpe2JyZWFrIGJ9dz13KzF8MH19fXdoaWxlKDApO2lmKCF4KXtjb250aW51ZX12PWNbYj4+Ml18MDtzPXYrMTJ8MDtyPWNbcz4+Ml18MDtpZigocnwwKT09KGNbdisxNj4+Ml18MCkpe29jW2NbKGNbdj4+Ml18MCkrNDA+PjJdJjEyN10odil8MH1lbHNle2Nbcz4+Ml09cisxfWlmKCh0K3V8MCk+Pj4wPDIpe2NvbnRpbnVlfWVsc2V7cz1mO3I9b313aGlsZSgxKXtpZigoYVtyPj4wXXwwKT09Mil7dj1hW3M+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbcys0Pj4yXXwwfWlmKCh2fDApIT0ocXwwKSl7YVtyPj4wXT0wO3U9dSsgLTF8MH19cz1zKzEyfDA7aWYoKHN8MCk9PShnfDApKXtjb250aW51ZSBhfWVsc2V7cj1yKzF8MH19fWRve2lmKCh4fDApIT0wKXtpZigoY1t4KzEyPj4yXXwwKT09KGNbeCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDApPT0tMSl7Y1tiPj4yXT0wO3g9MDticmVha31lbHNle3g9Y1tiPj4yXXwwO2JyZWFrfX19ZWxzZXt4PTB9fXdoaWxlKDApO2g9KHh8MCk9PTA7ZG97aWYoIXMpe2lmKChjW3ErMTI+PjJdfDApIT0oY1txKzE2Pj4yXXwwKSl7aWYoaCl7YnJlYWt9ZWxzZXtuPTg1O2JyZWFrfX1pZighKChvY1tjWyhjW3E+PjJdfDApKzM2Pj4yXSYxMjddKHEpfDApPT0tMSkpe2lmKCFoKXtuPTg1fX1lbHNle249ODN9fWVsc2V7bj04M319d2hpbGUoMCk7aWYoKG58MCk9PTgzP2g6MCl7bj04NX1pZigobnwwKT09ODUpe2Nbaj4+Ml09Y1tqPj4yXXwyfWM6ZG97aWYoIXApe2lmKChhW28+PjBdfDApPT0yKXtnPWZ9ZWxzZXt3aGlsZSgxKXtmPWYrMTJ8MDtvPW8rMXwwO2lmKChmfDApPT0oZ3wwKSl7bj05MDticmVhayBjfWlmKChhW28+PjBdfDApPT0yKXtnPWY7YnJlYWt9fX19ZWxzZXtuPTkwfX13aGlsZSgwKTtpZigobnwwKT09OTApe2Nbaj4+Ml09Y1tqPj4yXXw0fWlmKChsfDApPT0wKXtpPW07cmV0dXJuIGd8MH12bihsKTtpPW07cmV0dXJuIGd8MH1mdW5jdGlvbiBOaChiLGUsZixnLGgsaixrKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtlPWk7aT1pKzIyNHwwO3Y9ZSsxOTh8MDt1PWUrMTk2fDA7bj1lKzE2fDA7bz1lKzR8MDtxPWUrMTkyfDA7cz1lKzMyfDA7cj1lO3Q9ZSsyOHwwO3k9Y1tmPj4yXXwwO0E9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT04KXtnPTE2fWVsc2UgaWYoKGd8MCk9PTApe2c9MH1lbHNlIGlmKChnfDApPT02NCl7Zz04fWVsc2V7Zz0xMH1taShuLGgsdix1KTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qj1vKzF8MDt3PUI7Zj1vKzh8MH1lbHNle0I9bys4fDA7dz1vKzF8MDtmPUI7Qj1jW0I+PjJdfDB9Y1txPj4yXT1CO2Nbcj4+Ml09cztjW3Q+PjJdPTA7aD1vKzR8MDt4PWFbdT4+MF18MDt1PW8rOHwwO2E6d2hpbGUoMSl7aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9ej0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZih6KXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXope2JyZWFrIGF9fWVsc2V7bD0xOX19ZWxzZXtsPTE5fX13aGlsZSgwKTtpZigobHwwKT09MTkpe2w9MDtpZih6KXtBPTA7YnJlYWt9ZWxzZXtBPTB9fUQ9YVtvPj4wXXwwO0M9KEQmMSk9PTA7aWYoQyl7RT0oRCYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWlmKCgoY1txPj4yXXwwKS1CfDApPT0oRXwwKSl7aWYoQyl7Qj0oRCYyNTUpPj4+MTtFPShEJjI1NSk+Pj4xO0Q9Qjw8MX1lbHNle0I9Y1toPj4yXXwwO0U9Y1toPj4yXXwwO0Q9Qjw8MX1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUI8PDI7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtFPWFbbz4+MF18MDtpZigoRSYxKT09MCl7RD0xMH1lbHNle0Q9Y1tvPj4yXXwwO0U9RCYyNTU7RD0oRCYtMikrIC0xfDB9Qz0oRSYxKT09MDtpZihDKXtFPShFJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1EPDwxO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9d31lbHNle0M9Y1tmPj4yXXwwfWNbcT4+Ml09QytCO0I9Q31EPXkrMTJ8MDtFPWNbRD4+Ml18MDtDPXkrMTZ8MDtpZigoRXwwKT09KGNbQz4+Ml18MCkpe0U9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7RT1kW0U+PjBdfDB9aWYoKFhoKEUmMjU1LGcsQixxLHQseCxuLHMscix2KXwwKSE9MCl7YnJlYWt9ej1jW0Q+PjJdfDA7aWYoKHp8MCk9PShjW0M+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7Y29udGludWV9ZWxzZXtjW0Q+PjJdPXorMTtjb250aW51ZX19dj1hW24+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbbis0Pj4yXXwwfWlmKCh2fDApIT0wPyhwPWNbcj4+Ml18MCwocC1zfDApPDE2MCk6MCl7RT1jW3Q+PjJdfDA7Y1tyPj4yXT1wKzQ7Y1twPj4yXT1FfWNbaz4+Ml09Tm0oQixjW3E+PjJdfDAsaixnKXwwO3FrKG4scyxjW3I+PjJdfDAsaik7aWYoIXope2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9cD0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZihwKXticmVha31lbHNle2w9NzE7YnJlYWt9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXApe2w9NzF9fWVsc2V7bD02OX19ZWxzZXtsPTY5fX13aGlsZSgwKTtpZigobHwwKT09Njk/cDowKXtsPTcxfWlmKChsfDApPT03MSl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT15O2lmKCEoKGFbbz4+MF0mMSk9PTApPyhtPWNbdT4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoKGFbbj4+MF0mMSk9PTApe2k9ZTtyZXR1cm59bD1jW24rOD4+Ml18MDtpZigobHwwKT09MCl7aT1lO3JldHVybn12bihsKTtpPWU7cmV0dXJufWZ1bmN0aW9uIE9oKGIsZSxmLGcsaCxqLGspe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO2U9aTtpPWkrMjI0fDA7dj1lKzE5OHwwO3U9ZSsxOTZ8MDtuPWUrMTZ8MDtvPWUrNHwwO3E9ZSsxOTJ8MDtzPWUrMzJ8MDtyPWU7dD1lKzI4fDA7eT1jW2Y+PjJdfDA7QT1jW2c+PjJdfDA7Zz1jW2grND4+Ml0mNzQ7aWYoKGd8MCk9PTApe2c9MH1lbHNlIGlmKChnfDApPT04KXtnPTE2fWVsc2UgaWYoKGd8MCk9PTY0KXtnPTh9ZWxzZXtnPTEwfW1pKG4saCx2LHUpO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtCPW8rMXwwO3c9QjtmPW8rOHwwfWVsc2V7Qj1vKzh8MDt3PW8rMXwwO2Y9QjtCPWNbQj4+Ml18MH1jW3E+PjJdPUI7Y1tyPj4yXT1zO2NbdD4+Ml09MDtoPW8rNHwwO3g9YVt1Pj4wXXwwO3U9bys4fDA7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH16PSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHope2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZigheil7YnJlYWsgYX19ZWxzZXtsPTE5fX1lbHNle2w9MTl9fXdoaWxlKDApO2lmKChsfDApPT0xOSl7bD0wO2lmKHope0E9MDticmVha31lbHNle0E9MH19RD1hW28+PjBdfDA7Qz0oRCYxKT09MDtpZihDKXtFPShEJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9aWYoKChjW3E+PjJdfDApLUJ8MCk9PShFfDApKXtpZihDKXtCPShEJjI1NSk+Pj4xO0U9KEQmMjU1KT4+PjE7RD1CPDwxfWVsc2V7Qj1jW2g+PjJdfDA7RT1jW2g+PjJdfDA7RD1CPDwxfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09Qjw8MjticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO0U9YVtvPj4wXXwwO2lmKChFJjEpPT0wKXtEPTEwfWVsc2V7RD1jW28+PjJdfDA7RT1EJjI1NTtEPShEJi0yKSsgLTF8MH1DPShFJjEpPT0wO2lmKEMpe0U9KEUmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUQ8PDE7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz13fWVsc2V7Qz1jW2Y+PjJdfDB9Y1txPj4yXT1DK0I7Qj1DfUQ9eSsxMnwwO0U9Y1tEPj4yXXwwO0M9eSsxNnwwO2lmKChFfDApPT0oY1tDPj4yXXwwKSl7RT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtFPWRbRT4+MF18MH1pZigoWGgoRSYyNTUsZyxCLHEsdCx4LG4scyxyLHYpfDApIT0wKXticmVha316PWNbRD4+Ml18MDtpZigoenwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeT4+Ml18MCkrNDA+PjJdJjEyN10oeSl8MDtjb250aW51ZX1lbHNle2NbRD4+Ml09eisxO2NvbnRpbnVlfX12PWFbbj4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tuKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHA9Y1tyPj4yXXwwLChwLXN8MCk8MTYwKTowKXtFPWNbdD4+Ml18MDtjW3I+PjJdPXArNDtjW3A+PjJdPUV9RD1NbShCLGNbcT4+Ml18MCxqLGcpfDA7RT1rO2NbRT4+Ml09RDtjW0UrND4+Ml09STtxayhuLHMsY1tyPj4yXXwwLGopO2lmKCF6KXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXA9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYocCl7YnJlYWt9ZWxzZXtsPTcxO2JyZWFrfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCFwKXtsPTcxfX1lbHNle2w9Njl9fWVsc2V7bD02OX19d2hpbGUoMCk7aWYoKGx8MCk9PTY5P3A6MCl7bD03MX1pZigobHwwKT09NzEpe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09eTtpZighKChhW28+PjBdJjEpPT0wKT8obT1jW3U+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW24+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWw9Y1tuKzg+PjJdfDA7aWYoKGx8MCk9PTApe2k9ZTtyZXR1cm59dm4obCk7aT1lO3JldHVybn1mdW5jdGlvbiBQaChlLGYsZyxoLGosayxsKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MDtmPWk7aT1pKzIyNHwwO3c9ZisxOTh8MDt2PWYrMTk2fDA7bz1mKzE2fDA7cD1mKzR8MDtyPWYrMTkyfDA7dD1mKzMyfDA7cz1mO3U9ZisyOHwwO3o9Y1tnPj4yXXwwO0I9Y1toPj4yXXwwO2g9Y1tqKzQ+PjJdJjc0O2lmKChofDApPT04KXtoPTE2fWVsc2UgaWYoKGh8MCk9PTY0KXtoPTh9ZWxzZSBpZigoaHwwKT09MCl7aD0wfWVsc2V7aD0xMH1taShvLGosdyx2KTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtoZyhwLDEwKTtpZigoYVtwPj4wXSYxKT09MCl7Qz1wKzF8MDt4PUM7Zz1wKzh8MH1lbHNle0M9cCs4fDA7eD1wKzF8MDtnPUM7Qz1jW0M+PjJdfDB9Y1tyPj4yXT1DO2Nbcz4+Ml09dDtjW3U+PjJdPTA7aj1wKzR8MDt5PWFbdj4+MF18MDt2PXArOHwwO2E6d2hpbGUoMSl7aWYoKHp8MCkhPTApe2lmKChjW3orMTI+PjJdfDApPT0oY1t6KzE2Pj4yXXwwKSl7Rj0ob2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwKT09LTE7ej1GPzA6en19ZWxzZXt6PTB9QT0oenwwKT09MDtkb3tpZigoQnwwKSE9MCl7aWYoKGNbQisxMj4+Ml18MCkhPShjW0IrMTY+PjJdfDApKXtpZihBKXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MCk9PS0xKSl7aWYoIUEpe2JyZWFrIGF9fWVsc2V7bT0xOX19ZWxzZXttPTE5fX13aGlsZSgwKTtpZigobXwwKT09MTkpe209MDtpZihBKXtCPTA7YnJlYWt9ZWxzZXtCPTB9fUU9YVtwPj4wXXwwO0Q9KEUmMSk9PTA7aWYoRCl7Rj0oRSYyNTUpPj4+MX1lbHNle0Y9Y1tqPj4yXXwwfWlmKCgoY1tyPj4yXXwwKS1DfDApPT0oRnwwKSl7aWYoRCl7Qz0oRSYyNTUpPj4+MTtGPShFJjI1NSk+Pj4xO0U9Qzw8MX1lbHNle0M9Y1tqPj4yXXwwO0Y9Y1tqPj4yXXwwO0U9Qzw8MX1kb3tpZighKEY+Pj4wPEU+Pj4wKSl7aWYoRCl7YVtwK0UrMT4+MF09MDthW3A+PjBdPUM8PDI7YnJlYWt9ZWxzZXthWyhjW3Y+PjJdfDApK0U+PjBdPTA7Y1tqPj4yXT1FO2JyZWFrfX1lbHNle2hnKHAsRS1GfDApfX13aGlsZSgwKTtGPWFbcD4+MF18MDtpZigoRiYxKT09MCl7RT0xMH1lbHNle0U9Y1twPj4yXXwwO0Y9RSYyNTU7RT0oRSYtMikrIC0xfDB9RD0oRiYxKT09MDtpZihEKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW2o+PjJdfDB9ZG97aWYoIShGPj4+MDxFPj4+MCkpe2lmKEQpe2FbcCtFKzE+PjBdPTA7YVtwPj4wXT1FPDwxO2JyZWFrfWVsc2V7YVsoY1t2Pj4yXXwwKStFPj4wXT0wO2Nbaj4+Ml09RTticmVha319ZWxzZXtoZyhwLEUtRnwwKX19d2hpbGUoMCk7aWYoKGFbcD4+MF0mMSk9PTApe0Q9eH1lbHNle0Q9Y1tnPj4yXXwwfWNbcj4+Ml09RCtDO0M9RH1FPXorMTJ8MDtGPWNbRT4+Ml18MDtEPXorMTZ8MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe0Y9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7Rj1kW0Y+PjBdfDB9aWYoKFhoKEYmMjU1LGgsQyxyLHUseSxvLHQscyx3KXwwKSE9MCl7YnJlYWt9QT1jW0U+PjJdfDA7aWYoKEF8MCk9PShjW0Q+PjJdfDApKXtvY1tjWyhjW3o+PjJdfDApKzQwPj4yXSYxMjddKHopfDA7Y29udGludWV9ZWxzZXtjW0U+PjJdPUErMTtjb250aW51ZX19dz1hW28+PjBdfDA7aWYoKHcmMSk9PTApe3c9KHcmMjU1KT4+PjF9ZWxzZXt3PWNbbys0Pj4yXXwwfWlmKCh3fDApIT0wPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7Rj1jW3U+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1GfWJbbD4+MV09TG0oQyxjW3I+PjJdfDAsayxoKXwwO3FrKG8sdCxjW3M+PjJdfDAsayk7aWYoIUEpe2lmKChjW3orMTI+PjJdfDApPT0oY1t6KzE2Pj4yXXwwKSl7Rj0ob2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwKT09LTE7ej1GPzA6en19ZWxzZXt6PTB9cT0oenwwKT09MDtkb3tpZigoQnwwKSE9MCl7aWYoKGNbQisxMj4+Ml18MCkhPShjW0IrMTY+PjJdfDApKXtpZihxKXticmVha31lbHNle209NzE7YnJlYWt9fWlmKCEoKG9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MCk9PS0xKSl7aWYoIXEpe209NzF9fWVsc2V7bT02OX19ZWxzZXttPTY5fX13aGlsZSgwKTtpZigobXwwKT09Njk/cTowKXttPTcxfWlmKChtfDApPT03MSl7Y1trPj4yXT1jW2s+PjJdfDJ9Y1tlPj4yXT16O2lmKCEoKGFbcD4+MF0mMSk9PTApPyhuPWNbdj4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZjtyZXR1cm59bT1jW28rOD4+Ml18MDtpZigobXwwKT09MCl7aT1mO3JldHVybn12bihtKTtpPWY7cmV0dXJufWZ1bmN0aW9uIFFoKGIsZSxmLGcsaCxqLGspe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO2U9aTtpPWkrMjI0fDA7dj1lKzE5OHwwO3U9ZSsxOTZ8MDtuPWUrMTZ8MDtvPWUrNHwwO3E9ZSsxOTJ8MDtzPWUrMzJ8MDtyPWU7dD1lKzI4fDA7eT1jW2Y+PjJdfDA7QT1jW2c+PjJdfDA7Zz1jW2grND4+Ml0mNzQ7aWYoKGd8MCk9PTY0KXtnPTh9ZWxzZSBpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT0wKXtnPTB9ZWxzZXtnPTEwfW1pKG4saCx2LHUpO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtCPW8rMXwwO3c9QjtmPW8rOHwwfWVsc2V7Qj1vKzh8MDt3PW8rMXwwO2Y9QjtCPWNbQj4+Ml18MH1jW3E+PjJdPUI7Y1tyPj4yXT1zO2NbdD4+Ml09MDtoPW8rNHwwO3g9YVt1Pj4wXXwwO3U9bys4fDA7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH16PSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHope2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZigheil7YnJlYWsgYX19ZWxzZXtsPTE5fX1lbHNle2w9MTl9fXdoaWxlKDApO2lmKChsfDApPT0xOSl7bD0wO2lmKHope0E9MDticmVha31lbHNle0E9MH19RD1hW28+PjBdfDA7Qz0oRCYxKT09MDtpZihDKXtFPShEJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9aWYoKChjW3E+PjJdfDApLUJ8MCk9PShFfDApKXtpZihDKXtCPShEJjI1NSk+Pj4xO0U9KEQmMjU1KT4+PjE7RD1CPDwxfWVsc2V7Qj1jW2g+PjJdfDA7RT1jW2g+PjJdfDA7RD1CPDwxfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09Qjw8MjticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO0U9YVtvPj4wXXwwO2lmKChFJjEpPT0wKXtEPTEwfWVsc2V7RD1jW28+PjJdfDA7RT1EJjI1NTtEPShEJi0yKSsgLTF8MH1DPShFJjEpPT0wO2lmKEMpe0U9KEUmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUQ8PDE7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz13fWVsc2V7Qz1jW2Y+PjJdfDB9Y1txPj4yXT1DK0I7Qj1DfUQ9eSsxMnwwO0U9Y1tEPj4yXXwwO0M9eSsxNnwwO2lmKChFfDApPT0oY1tDPj4yXXwwKSl7RT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtFPWRbRT4+MF18MH1pZigoWGgoRSYyNTUsZyxCLHEsdCx4LG4scyxyLHYpfDApIT0wKXticmVha316PWNbRD4+Ml18MDtpZigoenwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeT4+Ml18MCkrNDA+PjJdJjEyN10oeSl8MDtjb250aW51ZX1lbHNle2NbRD4+Ml09eisxO2NvbnRpbnVlfX12PWFbbj4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tuKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHA9Y1tyPj4yXXwwLChwLXN8MCk8MTYwKTowKXtFPWNbdD4+Ml18MDtjW3I+PjJdPXArNDtjW3A+PjJdPUV9Y1trPj4yXT1LbShCLGNbcT4+Ml18MCxqLGcpfDA7cWsobixzLGNbcj4+Ml18MCxqKTtpZigheil7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH1wPSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHApe2JyZWFrfWVsc2V7bD03MTticmVha319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZighcCl7bD03MX19ZWxzZXtsPTY5fX1lbHNle2w9Njl9fXdoaWxlKDApO2lmKChsfDApPT02OT9wOjApe2w9NzF9aWYoKGx8MCk9PTcxKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPXk7aWYoISgoYVtvPj4wXSYxKT09MCk/KG09Y1t1Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtuPj4wXSYxKT09MCl7aT1lO3JldHVybn1sPWNbbis4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWU7cmV0dXJufXZuKGwpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gUmgoYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7ZT1pO2k9aSsyMjR8MDt2PWUrMTk4fDA7dT1lKzE5NnwwO249ZSsxNnwwO289ZSs0fDA7cT1lKzE5MnwwO3M9ZSszMnwwO3I9ZTt0PWUrMjh8MDt5PWNbZj4+Ml18MDtBPWNbZz4+Ml18MDtnPWNbaCs0Pj4yXSY3NDtpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09NjQpe2c9OH1lbHNle2c9MTB9bWkobixoLHYsdSk7Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTA7aGcobywxMCk7aWYoKGFbbz4+MF0mMSk9PTApe0I9bysxfDA7dz1CO2Y9bys4fDB9ZWxzZXtCPW8rOHwwO3c9bysxfDA7Zj1CO0I9Y1tCPj4yXXwwfWNbcT4+Ml09QjtjW3I+PjJdPXM7Y1t0Pj4yXT0wO2g9bys0fDA7eD1hW3U+PjBdfDA7dT1vKzh8MDthOndoaWxlKDEpe2lmKCh5fDApIT0wKXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXo9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYoeil7YnJlYWt9ZWxzZXticmVhayBhfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCF6KXticmVhayBhfX1lbHNle2w9MTl9fWVsc2V7bD0xOX19d2hpbGUoMCk7aWYoKGx8MCk9PTE5KXtsPTA7aWYoeil7QT0wO2JyZWFrfWVsc2V7QT0wfX1EPWFbbz4+MF18MDtDPShEJjEpPT0wO2lmKEMpe0U9KEQmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1pZigoKGNbcT4+Ml18MCktQnwwKT09KEV8MCkpe2lmKEMpe0I9KEQmMjU1KT4+PjE7RT0oRCYyNTUpPj4+MTtEPUI8PDF9ZWxzZXtCPWNbaD4+Ml18MDtFPWNbaD4+Ml18MDtEPUI8PDF9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1CPDwyO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7RT1hW28+PjBdfDA7aWYoKEUmMSk9PTApe0Q9MTB9ZWxzZXtEPWNbbz4+Ml18MDtFPUQmMjU1O0Q9KEQmLTIpKyAtMXwwfUM9KEUmMSk9PTA7aWYoQyl7RT0oRSYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09RDw8MTticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO2lmKChhW28+PjBdJjEpPT0wKXtDPXd9ZWxzZXtDPWNbZj4+Ml18MH1jW3E+PjJdPUMrQjtCPUN9RD15KzEyfDA7RT1jW0Q+PjJdfDA7Qz15KzE2fDA7aWYoKEV8MCk9PShjW0M+PjJdfDApKXtFPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0U9ZFtFPj4wXXwwfWlmKChYaChFJjI1NSxnLEIscSx0LHgsbixzLHIsdil8MCkhPTApe2JyZWFrfXo9Y1tEPj4yXXwwO2lmKCh6fDApPT0oY1tDPj4yXXwwKSl7b2NbY1soY1t5Pj4yXXwwKSs0MD4+Ml0mMTI3XSh5KXwwO2NvbnRpbnVlfWVsc2V7Y1tEPj4yXT16KzE7Y29udGludWV9fXY9YVtuPj4wXXwwO2lmKCh2JjEpPT0wKXt2PSh2JjI1NSk+Pj4xfWVsc2V7dj1jW24rND4+Ml18MH1pZigodnwwKSE9MD8ocD1jW3I+PjJdfDAsKHAtc3wwKTwxNjApOjApe0U9Y1t0Pj4yXXwwO2Nbcj4+Ml09cCs0O2NbcD4+Ml09RX1jW2s+PjJdPUptKEIsY1txPj4yXXwwLGosZyl8MDtxayhuLHMsY1tyPj4yXXwwLGopO2lmKCF6KXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXA9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYocCl7YnJlYWt9ZWxzZXtsPTcxO2JyZWFrfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCFwKXtsPTcxfX1lbHNle2w9Njl9fWVsc2V7bD02OX19d2hpbGUoMCk7aWYoKGx8MCk9PTY5P3A6MCl7bD03MX1pZigobHwwKT09NzEpe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09eTtpZighKChhW28+PjBdJjEpPT0wKT8obT1jW3U+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW24+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWw9Y1tuKzg+PjJdfDA7aWYoKGx8MCk9PTApe2k9ZTtyZXR1cm59dm4obCk7aT1lO3JldHVybn1mdW5jdGlvbiBTaChiLGUsZixnLGgsaixrKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtlPWk7aT1pKzIyNHwwO3Y9ZSsxOTh8MDt1PWUrMTk2fDA7bj1lKzE2fDA7bz1lKzR8MDtxPWUrMTkyfDA7cz1lKzMyfDA7cj1lO3Q9ZSsyOHwwO3k9Y1tmPj4yXXwwO0E9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT02NCl7Zz04fWVsc2V7Zz0xMH1taShuLGgsdix1KTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qj1vKzF8MDt3PUI7Zj1vKzh8MH1lbHNle0I9bys4fDA7dz1vKzF8MDtmPUI7Qj1jW0I+PjJdfDB9Y1txPj4yXT1CO2Nbcj4+Ml09cztjW3Q+PjJdPTA7aD1vKzR8MDt4PWFbdT4+MF18MDt1PW8rOHwwO2E6d2hpbGUoMSl7aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9ej0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZih6KXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXope2JyZWFrIGF9fWVsc2V7bD0xOX19ZWxzZXtsPTE5fX13aGlsZSgwKTtpZigobHwwKT09MTkpe2w9MDtpZih6KXtBPTA7YnJlYWt9ZWxzZXtBPTB9fUQ9YVtvPj4wXXwwO0M9KEQmMSk9PTA7aWYoQyl7RT0oRCYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWlmKCgoY1txPj4yXXwwKS1CfDApPT0oRXwwKSl7aWYoQyl7Qj0oRCYyNTUpPj4+MTtFPShEJjI1NSk+Pj4xO0Q9Qjw8MX1lbHNle0I9Y1toPj4yXXwwO0U9Y1toPj4yXXwwO0Q9Qjw8MX1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUI8PDI7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtFPWFbbz4+MF18MDtpZigoRSYxKT09MCl7RD0xMH1lbHNle0Q9Y1tvPj4yXXwwO0U9RCYyNTU7RD0oRCYtMikrIC0xfDB9Qz0oRSYxKT09MDtpZihDKXtFPShFJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1EPDwxO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9d31lbHNle0M9Y1tmPj4yXXwwfWNbcT4+Ml09QytCO0I9Q31EPXkrMTJ8MDtFPWNbRD4+Ml18MDtDPXkrMTZ8MDtpZigoRXwwKT09KGNbQz4+Ml18MCkpe0U9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7RT1kW0U+PjBdfDB9aWYoKFhoKEUmMjU1LGcsQixxLHQseCxuLHMscix2KXwwKSE9MCl7YnJlYWt9ej1jW0Q+PjJdfDA7aWYoKHp8MCk9PShjW0M+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7Y29udGludWV9ZWxzZXtjW0Q+PjJdPXorMTtjb250aW51ZX19dj1hW24+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbbis0Pj4yXXwwfWlmKCh2fDApIT0wPyhwPWNbcj4+Ml18MCwocC1zfDApPDE2MCk6MCl7RT1jW3Q+PjJdfDA7Y1tyPj4yXT1wKzQ7Y1twPj4yXT1FfUQ9SW0oQixjW3E+PjJdfDAsaixnKXwwO0U9aztjW0U+PjJdPUQ7Y1tFKzQ+PjJdPUk7cWsobixzLGNbcj4+Ml18MCxqKTtpZigheil7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH1wPSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHApe2JyZWFrfWVsc2V7bD03MTticmVha319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZighcCl7bD03MX19ZWxzZXtsPTY5fX1lbHNle2w9Njl9fXdoaWxlKDApO2lmKChsfDApPT02OT9wOjApe2w9NzF9aWYoKGx8MCk9PTcxKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPXk7aWYoISgoYVtvPj4wXSYxKT09MCk/KG09Y1t1Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtuPj4wXSYxKT09MCl7aT1lO3JldHVybn1sPWNbbis4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWU7cmV0dXJufXZuKGwpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gVGgoYixlLGYsaCxqLGssbCl7Yj1ifDA7ZT1lfDA7Zj1mfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtlPWk7aT1pKzI1NnwwO3g9ZSsyMDh8MDt6PWUrMjAwfDA7dz1lKzI0MHwwO289ZTtwPWUrMTg4fDA7dj1lKzE4NHwwO3Q9ZSsxNnwwO3M9ZSsxNzZ8MDtyPWUrMTgwfDA7dT1lKzI0MXwwO3k9ZSsyNDJ8MDtBPWNbZj4+Ml18MDtEPWNbaD4+Ml18MDtuaShvLGoseCx6LHcpO2NbcCswPj4yXT0wO2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0wO2hnKHAsMTApO2lmKChhW3A+PjBdJjEpPT0wKXtFPXArMXwwO2g9RTtmPXArOHwwfWVsc2V7RT1wKzh8MDtoPXArMXwwO2Y9RTtFPWNbRT4+Ml18MH1jW3Y+PjJdPUU7Y1tzPj4yXT10O2Nbcj4+Ml09MDthW3U+PjBdPTE7YVt5Pj4wXT02OTtqPXArNHwwO3o9YVt6Pj4wXXwwO0I9YVt3Pj4wXXwwO3c9cCs4fDA7YTp3aGlsZSgxKXtpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCk9PShjW0ErMTY+PjJdfDApKXtIPShvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMTtBPUg/MDpBfX1lbHNle0E9MH1DPShBfDApPT0wO2Rve2lmKChEfDApIT0wKXtpZigoY1tEKzEyPj4yXXwwKSE9KGNbRCsxNj4+Ml18MCkpe2lmKEMpe2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwKT09LTEpKXtpZighQyl7YnJlYWsgYX19ZWxzZXttPTE1fX1lbHNle209MTV9fXdoaWxlKDApO2lmKChtfDApPT0xNSl7bT0wO2lmKEMpe0Q9MDticmVha31lbHNle0Q9MH19Rz1hW3A+PjBdfDA7Rj0oRyYxKT09MDtpZihGKXtIPShHJjI1NSk+Pj4xfWVsc2V7SD1jW2o+PjJdfDB9aWYoKChjW3Y+PjJdfDApLUV8MCk9PShIfDApKXtpZihGKXtFPShHJjI1NSk+Pj4xO0c9KEcmMjU1KT4+PjE7SD1FPDwxfWVsc2V7RT1jW2o+PjJdfDA7Rz1jW2o+PjJdfDA7SD1FPDwxfWRve2lmKCEoRz4+PjA8SD4+PjApKXtpZihGKXthW3ArSCsxPj4wXT0wO2FbcD4+MF09RTw8MjticmVha31lbHNle2FbKGNbdz4+Ml18MCkrSD4+MF09MDtjW2o+PjJdPUg7YnJlYWt9fWVsc2V7aGcocCxILUd8MCl9fXdoaWxlKDApO0g9YVtwPj4wXXwwO2lmKChIJjEpPT0wKXtHPTEwfWVsc2V7Rz1jW3A+PjJdfDA7SD1HJjI1NTtHPShHJi0yKSsgLTF8MH1GPShIJjEpPT0wO2lmKEYpe0g9KEgmMjU1KT4+PjF9ZWxzZXtIPWNbaj4+Ml18MH1kb3tpZighKEg+Pj4wPEc+Pj4wKSl7aWYoRil7YVtwK0crMT4+MF09MDthW3A+PjBdPUc8PDE7YnJlYWt9ZWxzZXthWyhjW3c+PjJdfDApK0c+PjBdPTA7Y1tqPj4yXT1HO2JyZWFrfX1lbHNle2hnKHAsRy1IfDApfX13aGlsZSgwKTtpZigoYVtwPj4wXSYxKT09MCl7Rj1ofWVsc2V7Rj1jW2Y+PjJdfDB9Y1t2Pj4yXT1GK0U7RT1GfUc9QSsxMnwwO0g9Y1tHPj4yXXwwO0Y9QSsxNnwwO2lmKChIfDApPT0oY1tGPj4yXXwwKSl7SD1vY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDB9ZWxzZXtIPWRbSD4+MF18MH1pZigob2koSCYyNTUsdSx5LEUsdix6LEIsbyx0LHMscix4KXwwKSE9MCl7YnJlYWt9Qz1jW0c+PjJdfDA7aWYoKEN8MCk9PShjW0Y+PjJdfDApKXtvY1tjWyhjW0E+PjJdfDApKzQwPj4yXSYxMjddKEEpfDA7Y29udGludWV9ZWxzZXtjW0c+PjJdPUMrMTtjb250aW51ZX19eD1hW28+PjBdfDA7aWYoKHgmMSk9PTApe3g9KHgmMjU1KT4+PjF9ZWxzZXt4PWNbbys0Pj4yXXwwfWlmKCgoeHwwKSE9MD8oYVt1Pj4wXXwwKSE9MDowKT8ocT1jW3M+PjJdfDAsKHEtdHwwKTwxNjApOjApe0g9Y1tyPj4yXXwwO2Nbcz4+Ml09cSs0O2NbcT4+Ml09SH1nW2w+PjJdPStIbShFLGNbdj4+Ml18MCxrKTtxayhvLHQsY1tzPj4yXXwwLGspO2lmKCFDKXtpZigoY1tBKzEyPj4yXXwwKT09KGNbQSsxNj4+Ml18MCkpe0g9KG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xO0E9SD8wOkF9fWVsc2V7QT0wfWw9KEF8MCk9PTA7ZG97aWYoKER8MCkhPTApe2lmKChjW0QrMTI+PjJdfDApIT0oY1tEKzE2Pj4yXXwwKSl7aWYobCl7YnJlYWt9ZWxzZXttPTY4O2JyZWFrfX1pZighKChvY1tjWyhjW0Q+PjJdfDApKzM2Pj4yXSYxMjddKEQpfDApPT0tMSkpe2lmKCFsKXttPTY4fX1lbHNle209NjZ9fWVsc2V7bT02Nn19d2hpbGUoMCk7aWYoKG18MCk9PTY2P2w6MCl7bT02OH1pZigobXwwKT09Njgpe2Nbaz4+Ml09Y1trPj4yXXwyfWNbYj4+Ml09QTtpZighKChhW3A+PjBdJjEpPT0wKT8obj1jW3c+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKChhW28+PjBdJjEpPT0wKXtpPWU7cmV0dXJufW09Y1tvKzg+PjJdfDA7aWYoKG18MCk9PTApe2k9ZTtyZXR1cm59dm4obSk7aT1lO3JldHVybn1mdW5jdGlvbiBVaChiLGUsZixnLGosayxsKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wO2U9aTtpPWkrMjU2fDA7eD1lKzIwOHwwO3o9ZSsyMDB8MDt3PWUrMjQwfDA7bz1lO3A9ZSsxODh8MDt2PWUrMTg0fDA7dD1lKzE2fDA7cz1lKzE3NnwwO3I9ZSsxODB8MDt1PWUrMjQxfDA7eT1lKzI0MnwwO0E9Y1tmPj4yXXwwO0Q9Y1tnPj4yXXwwO25pKG8saix4LHosdyk7Y1twKzA+PjJdPTA7Y1twKzQ+PjJdPTA7Y1twKzg+PjJdPTA7aGcocCwxMCk7aWYoKGFbcD4+MF0mMSk9PTApe0U9cCsxfDA7Zz1FO2Y9cCs4fDB9ZWxzZXtFPXArOHwwO2c9cCsxfDA7Zj1FO0U9Y1tFPj4yXXwwfWNbdj4+Ml09RTtjW3M+PjJdPXQ7Y1tyPj4yXT0wO2FbdT4+MF09MTthW3k+PjBdPTY5O2o9cCs0fDA7ej1hW3o+PjBdfDA7Qj1hW3c+PjBdfDA7dz1wKzh8MDthOndoaWxlKDEpe2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKT09KGNbQSsxNj4+Ml18MCkpe0g9KG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xO0E9SD8wOkF9fWVsc2V7QT0wfUM9KEF8MCk9PTA7ZG97aWYoKER8MCkhPTApe2lmKChjW0QrMTI+PjJdfDApIT0oY1tEKzE2Pj4yXXwwKSl7aWYoQyl7YnJlYWt9ZWxzZXticmVhayBhfX1pZighKChvY1tjWyhjW0Q+PjJdfDApKzM2Pj4yXSYxMjddKEQpfDApPT0tMSkpe2lmKCFDKXticmVhayBhfX1lbHNle209MTV9fWVsc2V7bT0xNX19d2hpbGUoMCk7aWYoKG18MCk9PTE1KXttPTA7aWYoQyl7RD0wO2JyZWFrfWVsc2V7RD0wfX1HPWFbcD4+MF18MDtGPShHJjEpPT0wO2lmKEYpe0g9KEcmMjU1KT4+PjF9ZWxzZXtIPWNbaj4+Ml18MH1pZigoKGNbdj4+Ml18MCktRXwwKT09KEh8MCkpe2lmKEYpe0U9KEcmMjU1KT4+PjE7Rz0oRyYyNTUpPj4+MTtIPUU8PDF9ZWxzZXtFPWNbaj4+Ml18MDtHPWNbaj4+Ml18MDtIPUU8PDF9ZG97aWYoIShHPj4+MDxIPj4+MCkpe2lmKEYpe2FbcCtIKzE+PjBdPTA7YVtwPj4wXT1FPDwyO2JyZWFrfWVsc2V7YVsoY1t3Pj4yXXwwKStIPj4wXT0wO2Nbaj4+Ml09SDticmVha319ZWxzZXtoZyhwLEgtR3wwKX19d2hpbGUoMCk7SD1hW3A+PjBdfDA7aWYoKEgmMSk9PTApe0c9MTB9ZWxzZXtHPWNbcD4+Ml18MDtIPUcmMjU1O0c9KEcmLTIpKyAtMXwwfUY9KEgmMSk9PTA7aWYoRil7SD0oSCYyNTUpPj4+MX1lbHNle0g9Y1tqPj4yXXwwfWRve2lmKCEoSD4+PjA8Rz4+PjApKXtpZihGKXthW3ArRysxPj4wXT0wO2FbcD4+MF09Rzw8MTticmVha31lbHNle2FbKGNbdz4+Ml18MCkrRz4+MF09MDtjW2o+PjJdPUc7YnJlYWt9fWVsc2V7aGcocCxHLUh8MCl9fXdoaWxlKDApO2lmKChhW3A+PjBdJjEpPT0wKXtGPWd9ZWxzZXtGPWNbZj4+Ml18MH1jW3Y+PjJdPUYrRTtFPUZ9Rz1BKzEyfDA7SD1jW0c+PjJdfDA7Rj1BKzE2fDA7aWYoKEh8MCk9PShjW0Y+PjJdfDApKXtIPW9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MH1lbHNle0g9ZFtIPj4wXXwwfWlmKChvaShIJjI1NSx1LHksRSx2LHosQixvLHQscyxyLHgpfDApIT0wKXticmVha31DPWNbRz4+Ml18MDtpZigoQ3wwKT09KGNbRj4+Ml18MCkpe29jW2NbKGNbQT4+Ml18MCkrNDA+PjJdJjEyN10oQSl8MDtjb250aW51ZX1lbHNle2NbRz4+Ml09QysxO2NvbnRpbnVlfX14PWFbbz4+MF18MDtpZigoeCYxKT09MCl7eD0oeCYyNTUpPj4+MX1lbHNle3g9Y1tvKzQ+PjJdfDB9aWYoKCh4fDApIT0wPyhhW3U+PjBdfDApIT0wOjApPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7SD1jW3I+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1IfWhbbD4+M109K0dtKEUsY1t2Pj4yXXwwLGspO3FrKG8sdCxjW3M+PjJdfDAsayk7aWYoIUMpe2lmKChjW0ErMTI+PjJdfDApPT0oY1tBKzE2Pj4yXXwwKSl7SD0ob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTE7QT1IPzA6QX19ZWxzZXtBPTB9bD0oQXwwKT09MDtkb3tpZigoRHwwKSE9MCl7aWYoKGNbRCsxMj4+Ml18MCkhPShjW0QrMTY+PjJdfDApKXtpZihsKXticmVha31lbHNle209Njg7YnJlYWt9fWlmKCEoKG9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MCk9PS0xKSl7aWYoIWwpe209Njh9fWVsc2V7bT02Nn19ZWxzZXttPTY2fX13aGlsZSgwKTtpZigobXwwKT09NjY/bDowKXttPTY4fWlmKChtfDApPT02OCl7Y1trPj4yXT1jW2s+PjJdfDJ9Y1tiPj4yXT1BO2lmKCEoKGFbcD4+MF0mMSk9PTApPyhuPWNbdz4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZTtyZXR1cm59bT1jW28rOD4+Ml18MDtpZigobXwwKT09MCl7aT1lO3JldHVybn12bihtKTtpPWU7cmV0dXJufWZ1bmN0aW9uIFZoKGIsZSxmLGcsaixrLGwpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7ZT1pO2k9aSsyNTZ8MDt4PWUrMjA4fDA7ej1lKzIwMHwwO3c9ZSsyNDB8MDtvPWU7cD1lKzE4OHwwO3Y9ZSsxODR8MDt0PWUrMTZ8MDtzPWUrMTc2fDA7cj1lKzE4MHwwO3U9ZSsyNDF8MDt5PWUrMjQyfDA7QT1jW2Y+PjJdfDA7RD1jW2c+PjJdfDA7bmkobyxqLHgseix3KTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtoZyhwLDEwKTtpZigoYVtwPj4wXSYxKT09MCl7RT1wKzF8MDtnPUU7Zj1wKzh8MH1lbHNle0U9cCs4fDA7Zz1wKzF8MDtmPUU7RT1jW0U+PjJdfDB9Y1t2Pj4yXT1FO2Nbcz4+Ml09dDtjW3I+PjJdPTA7YVt1Pj4wXT0xO2FbeT4+MF09Njk7aj1wKzR8MDt6PWFbej4+MF18MDtCPWFbdz4+MF18MDt3PXArOHwwO2E6d2hpbGUoMSl7aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApPT0oY1tBKzE2Pj4yXXwwKSl7SD0ob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTE7QT1IPzA6QX19ZWxzZXtBPTB9Qz0oQXwwKT09MDtkb3tpZigoRHwwKSE9MCl7aWYoKGNbRCsxMj4+Ml18MCkhPShjW0QrMTY+PjJdfDApKXtpZihDKXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MCk9PS0xKSl7aWYoIUMpe2JyZWFrIGF9fWVsc2V7bT0xNX19ZWxzZXttPTE1fX13aGlsZSgwKTtpZigobXwwKT09MTUpe209MDtpZihDKXtEPTA7YnJlYWt9ZWxzZXtEPTB9fUc9YVtwPj4wXXwwO0Y9KEcmMSk9PTA7aWYoRil7SD0oRyYyNTUpPj4+MX1lbHNle0g9Y1tqPj4yXXwwfWlmKCgoY1t2Pj4yXXwwKS1FfDApPT0oSHwwKSl7aWYoRil7RT0oRyYyNTUpPj4+MTtHPShHJjI1NSk+Pj4xO0g9RTw8MX1lbHNle0U9Y1tqPj4yXXwwO0c9Y1tqPj4yXXwwO0g9RTw8MX1kb3tpZighKEc+Pj4wPEg+Pj4wKSl7aWYoRil7YVtwK0grMT4+MF09MDthW3A+PjBdPUU8PDI7YnJlYWt9ZWxzZXthWyhjW3c+PjJdfDApK0g+PjBdPTA7Y1tqPj4yXT1IO2JyZWFrfX1lbHNle2hnKHAsSC1HfDApfX13aGlsZSgwKTtIPWFbcD4+MF18MDtpZigoSCYxKT09MCl7Rz0xMH1lbHNle0c9Y1twPj4yXXwwO0g9RyYyNTU7Rz0oRyYtMikrIC0xfDB9Rj0oSCYxKT09MDtpZihGKXtIPShIJjI1NSk+Pj4xfWVsc2V7SD1jW2o+PjJdfDB9ZG97aWYoIShIPj4+MDxHPj4+MCkpe2lmKEYpe2FbcCtHKzE+PjBdPTA7YVtwPj4wXT1HPDwxO2JyZWFrfWVsc2V7YVsoY1t3Pj4yXXwwKStHPj4wXT0wO2Nbaj4+Ml09RzticmVha319ZWxzZXtoZyhwLEctSHwwKX19d2hpbGUoMCk7aWYoKGFbcD4+MF0mMSk9PTApe0Y9Z31lbHNle0Y9Y1tmPj4yXXwwfWNbdj4+Ml09RitFO0U9Rn1HPUErMTJ8MDtIPWNbRz4+Ml18MDtGPUErMTZ8MDtpZigoSHwwKT09KGNbRj4+Ml18MCkpe0g9b2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwfWVsc2V7SD1kW0g+PjBdfDB9aWYoKG9pKEgmMjU1LHUseSxFLHYseixCLG8sdCxzLHIseCl8MCkhPTApe2JyZWFrfUM9Y1tHPj4yXXwwO2lmKChDfDApPT0oY1tGPj4yXXwwKSl7b2NbY1soY1tBPj4yXXwwKSs0MD4+Ml0mMTI3XShBKXwwO2NvbnRpbnVlfWVsc2V7Y1tHPj4yXT1DKzE7Y29udGludWV9fXg9YVtvPj4wXXwwO2lmKCh4JjEpPT0wKXt4PSh4JjI1NSk+Pj4xfWVsc2V7eD1jW28rND4+Ml18MH1pZigoKHh8MCkhPTA/KGFbdT4+MF18MCkhPTA6MCk/KHE9Y1tzPj4yXXwwLChxLXR8MCk8MTYwKTowKXtIPWNbcj4+Ml18MDtjW3M+PjJdPXErNDtjW3E+PjJdPUh9aFtsPj4zXT0rRm0oRSxjW3Y+PjJdfDAsayk7cWsobyx0LGNbcz4+Ml18MCxrKTtpZighQyl7aWYoKGNbQSsxMj4+Ml18MCk9PShjW0ErMTY+PjJdfDApKXtIPShvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMTtBPUg/MDpBfX1lbHNle0E9MH1sPShBfDApPT0wO2Rve2lmKChEfDApIT0wKXtpZigoY1tEKzEyPj4yXXwwKSE9KGNbRCsxNj4+Ml18MCkpe2lmKGwpe2JyZWFrfWVsc2V7bT02ODticmVha319aWYoISgob2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwKT09LTEpKXtpZighbCl7bT02OH19ZWxzZXttPTY2fX1lbHNle209NjZ9fXdoaWxlKDApO2lmKChtfDApPT02Nj9sOjApe209Njh9aWYoKG18MCk9PTY4KXtjW2s+PjJdPWNbaz4+Ml18Mn1jW2I+PjJdPUE7aWYoISgoYVtwPj4wXSYxKT09MCk/KG49Y1t3Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZigoYVtvPj4wXSYxKT09MCl7aT1lO3JldHVybn1tPWNbbys4Pj4yXXwwO2lmKChtfDApPT0wKXtpPWU7cmV0dXJufXZuKG0pO2k9ZTtyZXR1cm59ZnVuY3Rpb24gV2goYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtlPWk7aT1pKzIyNHwwO249ZTtvPWUrMTg4fDA7bT1lKzE3NnwwO3c9ZSsxNnwwO3E9Y1toKzI4Pj4yXXwwO0Q9cSs0fDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ1NjtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDU2LG4pfWg9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3I9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcj4+Mj4+PjA+aD4+PjA/KHA9Y1tyKyhoPDwyKT4+Ml18MCwocHwwKSE9MCk6MCl7dWNbY1soY1twPj4yXXwwKSszMj4+Ml0mMzFdKHAsMTIwMTYsMTIwNDJ8MCxvKXwwO0M9cSs0fDA7RD1jW0M+PjJdfDA7Y1tDPj4yXT1EKyAtMTtpZigoRHwwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfWNbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2g9ejtxPW0rOHwwfWVsc2V7ej1tKzh8MDtoPW0rMXwwO3E9ejt6PWNbej4+Ml18MH11PW0rNHwwO3Y9bysyNHwwO3M9bysyNXwwO3Q9bysyNnwwO3I9bztwPW0rOHwwO3k9Y1tmPj4yXXwwO3g9MDtBPXo7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApPyhvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTowKXtjW2Y+PjJdPTA7eT0wfX1lbHNle3k9MH1DPSh5fDApPT0wO0I9Y1tnPj4yXXwwO2Rve2lmKChCfDApIT0wKXtpZigoY1tCKzEyPj4yXXwwKSE9KGNbQisxNj4+Ml18MCkpe2lmKEMpe2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwKT09LTEpKXtpZihDKXticmVha31lbHNle2JyZWFrIGF9fWVsc2V7Y1tnPj4yXT0wO2w9MjY7YnJlYWt9fWVsc2V7bD0yNn19d2hpbGUoMCk7aWYoKGx8MCk9PTI2PyhsPTAsQyk6MCl7YnJlYWt9RD1hW20+PjBdfDA7Qj0oRCYxKT09MDtpZihCKXtDPShEJjI1NSk+Pj4xfWVsc2V7Qz1jW3U+PjJdfDB9aWYoKEEtenwwKT09KEN8MCkpe2lmKEIpe0E9KEQmMjU1KT4+PjE7Qz0oRCYyNTUpPj4+MTt6PUE8PDF9ZWxzZXtBPWNbdT4+Ml18MDtDPWNbdT4+Ml18MDt6PUE8PDF9ZG97aWYoIShDPj4+MDx6Pj4+MCkpe2lmKEIpe2FbbSt6KzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKSt6Pj4wXT0wO2NbdT4+Ml09ejticmVha319ZWxzZXtoZyhtLHotQ3wwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe3o9MTB9ZWxzZXt6PWNbbT4+Ml18MDtDPXomMjU1O3o9KHomLTIpKyAtMXwwfUI9KEMmMSk9PTA7aWYoQil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t1Pj4yXXwwfWRve2lmKCEoQz4+PjA8ej4+PjApKXtpZihCKXthW20reisxPj4wXT0wO2FbbT4+MF09ejw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrej4+MF09MDtjW3U+PjJdPXo7YnJlYWt9fWVsc2V7aGcobSx6LUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWh9ZWxzZXt6PWNbcT4+Ml18MH1BPXorQXwwfUI9Y1t5KzEyPj4yXXwwO2lmKChCfDApPT0oY1t5KzE2Pj4yXXwwKSl7eT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXt5PWRbQj4+MF18MH1CPXkmMjU1O3k9KEF8MCk9PSh6fDApO2Rve2lmKHkpe0M9KGFbdj4+MF18MCk9PUI8PDI0Pj4yNDtpZighQz8hKChhW3M+PjBdfDApPT1CPDwyND4+MjQpOjApe0M9bztsPTYxO2JyZWFrfWFbQT4+MF09Qz80Mzo0NTtBPUErMXwwO3g9MH1lbHNle0M9bztsPTYxfX13aGlsZSgwKTtkb3tpZigobHwwKT09NjEpe3doaWxlKDEpe2w9MDtpZigoYVtDPj4wXXwwKT09Qjw8MjQ+PjI0KXticmVha31DPUMrMXwwO2lmKChDfDApPT0odHwwKSl7Qz10O2JyZWFrfWVsc2V7bD02MX19Qj1DLXJ8MDtpZigoQnwwKT4yMyl7YnJlYWsgYX1pZigoQnwwKTwyMil7YVtBPj4wXT1hWzEyMDE2K0I+PjBdfDA7QT1BKzF8MDt4PXgrMXwwO2JyZWFrfWlmKHkpe3o9QTticmVhayBhfWlmKChBLXp8MCk+PTMpe2JyZWFrIGF9aWYoKGFbQSsgLTE+PjBdfDApIT00OCl7YnJlYWsgYX1hW0E+PjBdPWFbMTIwMTYrQj4+MF18MDtBPUErMXwwO3g9MH19d2hpbGUoMCk7eT1jW2Y+PjJdfDA7Qj15KzEyfDA7Qz1jW0I+PjJdfDA7aWYoKEN8MCk9PShjW3krMTY+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7RD13O3c9RDtjb250aW51ZX1lbHNle2NbQj4+Ml09QysxO0Q9dzt3PUQ7Y29udGludWV9fWFbeiszPj4wXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1EPWNbMzM0MF18MDtjW24+PjJdPWs7aWYoKFloKHosRCxuKXwwKSE9MSl7Y1tqPj4yXT00fWs9Y1tmPj4yXXwwO2lmKChrfDApIT0wKXtpZigoY1trKzEyPj4yXXwwKT09KGNbaysxNj4+Ml18MCk/KG9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MCk9PS0xOjApe2NbZj4+Ml09MDtmPTB9ZWxzZXtmPWt9fWVsc2V7Zj0wfWs9KGZ8MCk9PTA7bj1jW2c+PjJdfDA7ZG97aWYoKG58MCkhPTApe2lmKChjW24rMTI+PjJdfDApIT0oY1tuKzE2Pj4yXXwwKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTkyO2JyZWFrfX1pZighKChvY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDApPT0tMSkpe2lmKGspe2JyZWFrfWVsc2V7bD05MjticmVha319ZWxzZXtjW2c+PjJdPTA7bD05MDticmVha319ZWxzZXtsPTkwfX13aGlsZSgwKTtpZigobHwwKT09OTA/azowKXtsPTkyfWlmKChsfDApPT05Mil7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1mO2lmKChhW20+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWo9Y1twPj4yXXwwO2lmKChqfDApPT0wKXtpPWU7cmV0dXJufXZuKGopO2k9ZTtyZXR1cm59RD1YYSg0KXwwO2NbRD4+Ml09MjEzMDQ7d2IoRHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gWGgoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MDtuPWk7cD1jW2Y+PjJdfDA7bz0ocHwwKT09KGV8MCk7ZG97aWYobyl7cT0oYVttKzI0Pj4wXXwwKT09Yjw8MjQ+PjI0O2lmKCFxPyEoKGFbbSsyNT4+MF18MCk9PWI8PDI0Pj4yNCk6MCl7YnJlYWt9Y1tmPj4yXT1lKzE7YVtlPj4wXT1xPzQzOjQ1O2NbZz4+Ml09MDtxPTA7aT1uO3JldHVybiBxfDB9fXdoaWxlKDApO3E9YVtqPj4wXXwwO2lmKChxJjEpPT0wKXtqPShxJjI1NSk+Pj4xfWVsc2V7aj1jW2orND4+Ml18MH1pZigoanwwKSE9MD9iPDwyND4+MjQ9PWg8PDI0Pj4yNDowKXtvPWNbbD4+Ml18MDtpZigoby1rfDApPj0xNjApe3E9MDtpPW47cmV0dXJuIHF8MH1xPWNbZz4+Ml18MDtjW2w+PjJdPW8rNDtjW28+PjJdPXE7Y1tnPj4yXT0wO3E9MDtpPW47cmV0dXJuIHF8MH1sPW0rMjZ8MDtrPW07d2hpbGUoMSl7aWYoKGFbaz4+MF18MCk9PWI8PDI0Pj4yNCl7YnJlYWt9az1rKzF8MDtpZigoa3wwKT09KGx8MCkpe2s9bDticmVha319bT1rLW18MDtpZigobXwwKT4yMyl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigoZHwwKT09MTB8KGR8MCk9PTgpe2lmKChtfDApPj0oZHwwKSl7cT0tMTtpPW47cmV0dXJuIHF8MH19ZWxzZSBpZigoZHwwKT09MTY/KG18MCk+PTIyOjApe2lmKG8pe3E9LTE7aT1uO3JldHVybiBxfDB9aWYoKHAtZXwwKT49Myl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigoYVtwKyAtMT4+MF18MCkhPTQ4KXtxPS0xO2k9bjtyZXR1cm4gcXwwfWNbZz4+Ml09MDtxPWFbMTIwMTYrbT4+MF18MDtjW2Y+PjJdPXArMTthW3A+PjBdPXE7cT0wO2k9bjtyZXR1cm4gcXwwfXE9YVsxMjAxNittPj4wXXwwO2NbZj4+Ml09cCsxO2FbcD4+MF09cTtjW2c+PjJdPShjW2c+PjJdfDApKzE7cT0wO2k9bjtyZXR1cm4gcXwwfWZ1bmN0aW9uIFloKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDtlPWk7aT1pKzE2fDA7Zj1lO2NbZj4+Ml09ZDtiPWliKGJ8MCl8MDthPU1hKGF8MCwxMjA1NixmfDApfDA7aWYoKGJ8MCk9PTApe2k9ZTtyZXR1cm4gYXwwfWliKGJ8MCl8MDtpPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiBaaChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBfaChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gJGgoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7az1pO2k9aSs2NHwwO3A9azt1PWsrNDh8MDtxPWsrNTJ8MDt0PWsrNTZ8MDtzPWsrMTZ8MDtyPWsrMTJ8MDtsPWsrMjR8MDtpZigoY1tnKzQ+PjJdJjF8MCk9PTApe2NbcT4+Ml09LTE7bD1jWyhjW2Q+PjJdfDApKzE2Pj4yXXwwO2Nbcz4+Ml09Y1tlPj4yXTtjW3I+PjJdPWNbZj4+Ml07Y1t1KzA+PjJdPWNbcyswPj4yXTtjW3ArMD4+Ml09Y1tyKzA+PjJdO2ljW2wmNjNdKHQsZCx1LHAsZyxoLHEpO2w9Y1t0Pj4yXXwwO2NbZT4+Ml09bDtlPWNbcT4+Ml18MDtpZigoZXwwKT09MSl7YVtqPj4wXT0xfWVsc2UgaWYoKGV8MCk9PTApe2Fbaj4+MF09MH1lbHNle2Fbaj4+MF09MTtjW2g+PjJdPTR9Y1tiPj4yXT1sO2k9aztyZXR1cm59cT1nKzI4fDA7cj1jW3E+PjJdfDA7ZD1yKzR8MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW3A+PjJdPTEzNDQ4O2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM0NDgscCl9cz0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dD1jW3IrOD4+Ml18MDtpZigoY1tyKzEyPj4yXXwwKS10Pj4yPj4+MD5zPj4+MD8obz1jW3QrKHM8PDIpPj4yXXwwLChvfDApIT0wKTowKXt1PXIrNHwwO2Q9Y1t1Pj4yXXwwO2NbdT4+Ml09ZCsgLTE7aWYoKGR8MCk9PTApe2xjW2NbKGNbcj4+Ml18MCkrOD4+Ml0mMjU1XShyKX1xPWNbcT4+Ml18MDtkPXErNHwwO2NbZD4+Ml09KGNbZD4+Ml18MCkrMTtpZighKChjWzM0MDJdfDApPT0tMSkpe2NbcD4+Ml09MTM2MDg7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzYwOCxwKX1wPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtyPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXI+PjI+Pj4wPnA+Pj4wPyhuPWNbcisocDw8Mik+PjJdfDAsKG58MCkhPTApOjApe3U9cSs0fDA7ZD1jW3U+PjJdfDA7Y1t1Pj4yXT1kKyAtMTtpZigoZHwwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfW1jW2NbKGNbbj4+Ml18MCkrMjQ+PjJdJjEyN10obCxuKTtkPWwrMTJ8MDttY1tjWyhjW24+PjJdfDApKzI4Pj4yXSYxMjddKGQsbik7YVtqPj4wXT0oYWkoZSxjW2Y+PjJdfDAsbCxsKzI0fDAsbyxoLDEpfDApPT0obHwwKSYxO2NbYj4+Ml09Y1tlPj4yXTtpZighKChhW2Q+PjBdJjEpPT0wKT8obT1jW2wrMjA+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW2w+PjBdJjEpPT0wKXtpPWs7cmV0dXJufWI9Y1tsKzg+PjJdfDA7aWYoKGJ8MCk9PTApe2k9aztyZXR1cm59dm4oYik7aT1rO3JldHVybn1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBhaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO2w9aTtpPWkrMTEyfDA7bj1sO3M9KGYtZXwwKS8xMnwwO2lmKHM+Pj4wPjEwMCl7bj11bihzKXwwO2lmKChufDApPT0wKXt6PVhhKDQpfDA7Y1t6Pj4yXT0yMjY4MDt3Yih6fDAsMjI3MjgsMjA2KX1lbHNle2s9bn19ZWxzZXtrPTB9bz0oZXwwKT09KGZ8MCk7aWYobyl7dD0wfWVsc2V7cD1lO3Q9MDtxPW47d2hpbGUoMSl7cj1hW3A+PjBdfDA7aWYoKHImMSk9PTApe3I9KHImMjU1KT4+PjF9ZWxzZXtyPWNbcCs0Pj4yXXwwfWlmKChyfDApPT0wKXthW3E+PjBdPTI7dD10KzF8MDtzPXMrIC0xfDB9ZWxzZXthW3E+PjBdPTF9cD1wKzEyfDA7aWYoKHB8MCk9PShmfDApKXticmVha31lbHNle3E9cSsxfDB9fX1wPTA7YTp3aGlsZSgxKXt1PShzfDApIT0wO3E9cDt3aGlsZSgxKXtyPWNbYj4+Ml18MDtkb3tpZigocnwwKSE9MCl7cD1jW3IrMTI+PjJdfDA7aWYoKHB8MCk9PShjW3IrMTY+PjJdfDApKXtwPW9jW2NbKGNbcj4+Ml18MCkrMzY+PjJdJjEyN10ocil8MH1lbHNle3A9Y1twPj4yXXwwfWlmKChwfDApPT0tMSl7Y1tiPj4yXT0wO3I9MTticmVha31lbHNle3I9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7cj0xfX13aGlsZSgwKTtpZigoZHwwKT09MCl7cD0wO3c9MTtkPTB9ZWxzZXtwPWNbZCsxMj4+Ml18MDtpZigocHwwKT09KGNbZCsxNj4+Ml18MCkpe3A9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7cD1jW3A+PjJdfDB9ej0ocHwwKT09LTE7cD16PzA6ZDt3PXo/MTowO2Q9ej8wOmR9dj1jW2I+PjJdfDA7aWYoISgocl53KSZ1KSl7YnJlYWsgYX1wPWNbdisxMj4+Ml18MDtpZigocHwwKT09KGNbdisxNj4+Ml18MCkpe3I9b2NbY1soY1t2Pj4yXXwwKSszNj4+Ml0mMTI3XSh2KXwwfWVsc2V7cj1jW3A+PjJdfDB9aWYoIWope3I9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcscil8MH1wPXErMXwwO2lmKG8pe3E9cH1lbHNle2JyZWFrfX1iOmRve2lmKGope3c9MDt1PWU7dj1uO3doaWxlKDEpe2Rve2lmKChhW3Y+PjBdfDApPT0xKXt4PWFbdT4+MF18MDt5PSh4JjEpPT0wO2lmKHkpe3o9dSs0fDB9ZWxzZXt6PWNbdSs4Pj4yXXwwfWlmKChyfDApIT0oY1t6KyhxPDwyKT4+Ml18MCkpe2Fbdj4+MF09MDtzPXMrIC0xfDA7YnJlYWt9aWYoeSl7dz0oeCYyNTUpPj4+MX1lbHNle3c9Y1t1KzQ+PjJdfDB9aWYoKHd8MCk9PShwfDApKXthW3Y+PjBdPTI7dz0xO3Q9dCsxfDA7cz1zKyAtMXwwfWVsc2V7dz0xfX19d2hpbGUoMCk7dT11KzEyfDA7aWYoKHV8MCk9PShmfDApKXticmVhayBifXY9disxfDB9fWVsc2V7dz0wO3U9ZTt2PW47d2hpbGUoMSl7ZG97aWYoKGFbdj4+MF18MCk9PTEpe2lmKChhW3U+PjBdJjEpPT0wKXt4PXUrNHwwfWVsc2V7eD1jW3UrOD4+Ml18MH1pZigocnwwKSE9KHhjW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjYzXShnLGNbeCsocTw8Mik+PjJdfDApfDApKXthW3Y+PjBdPTA7cz1zKyAtMXwwO2JyZWFrfXc9YVt1Pj4wXXwwO2lmKCh3JjEpPT0wKXt3PSh3JjI1NSk+Pj4xfWVsc2V7dz1jW3UrND4+Ml18MH1pZigod3wwKT09KHB8MCkpe2Fbdj4+MF09Mjt3PTE7dD10KzF8MDtzPXMrIC0xfDB9ZWxzZXt3PTF9fX13aGlsZSgwKTt1PXUrMTJ8MDtpZigodXwwKT09KGZ8MCkpe2JyZWFrIGJ9dj12KzF8MH19fXdoaWxlKDApO2lmKCF3KXtjb250aW51ZX11PWNbYj4+Ml18MDtyPXUrMTJ8MDtxPWNbcj4+Ml18MDtpZigocXwwKT09KGNbdSsxNj4+Ml18MCkpe29jW2NbKGNbdT4+Ml18MCkrNDA+PjJdJjEyN10odSl8MH1lbHNle2Nbcj4+Ml09cSs0fWlmKChzK3R8MCk+Pj4wPDIpe2NvbnRpbnVlfWVsc2V7cj1lO3E9bn13aGlsZSgxKXtpZigoYVtxPj4wXXwwKT09Mil7dT1hW3I+PjBdfDA7aWYoKHUmMSk9PTApe3U9KHUmMjU1KT4+PjF9ZWxzZXt1PWNbcis0Pj4yXXwwfWlmKCh1fDApIT0ocHwwKSl7YVtxPj4wXT0wO3Q9dCsgLTF8MH19cj1yKzEyfDA7aWYoKHJ8MCk9PShmfDApKXtjb250aW51ZSBhfWVsc2V7cT1xKzF8MH19fWRve2lmKCh2fDApIT0wKXtqPWNbdisxMj4+Ml18MDtpZigoanwwKT09KGNbdisxNj4+Ml18MCkpe2o9b2NbY1soY1t2Pj4yXXwwKSszNj4+Ml0mMTI3XSh2KXwwfWVsc2V7aj1jW2o+PjJdfDB9aWYoKGp8MCk9PS0xKXtjW2I+PjJdPTA7Yj0xO2JyZWFrfWVsc2V7Yj0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtiPTF9fXdoaWxlKDApO2lmKChwfDApIT0wKXtqPWNbcCsxMj4+Ml18MDtpZigoanwwKT09KGNbcCsxNj4+Ml18MCkpe2o9b2NbY1soY1twPj4yXXwwKSszNj4+Ml0mMTI3XShwKXwwfWVsc2V7aj1jW2o+PjJdfDB9aWYoISgoanwwKT09LTEpKXtpZighYil7bT04OH19ZWxzZXttPTg2fX1lbHNle209ODZ9aWYoKG18MCk9PTg2P2I6MCl7bT04OH1pZigobXwwKT09ODgpe2NbaD4+Ml09Y1toPj4yXXwyfWM6ZG97aWYoIW8pe2lmKChhW24+PjBdfDApPT0yKXtmPWV9ZWxzZXt3aGlsZSgxKXtlPWUrMTJ8MDtuPW4rMXwwO2lmKChlfDApPT0oZnwwKSl7bT05MzticmVhayBjfWlmKChhW24+PjBdfDApPT0yKXtmPWU7YnJlYWt9fX19ZWxzZXttPTkzfX13aGlsZSgwKTtpZigobXwwKT09OTMpe2NbaD4+Ml09Y1toPj4yXXw0fWlmKChrfDApPT0wKXtpPWw7cmV0dXJuIGZ8MH12bihrKTtpPWw7cmV0dXJuIGZ8MH1mdW5jdGlvbiBiaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtkPWk7aT1pKzMwNHwwO3U9ZCsxNjB8MDtvPWQrMjgwfDA7bj1kKzI2NHwwO209ZCsyODR8MDt0PWQrMzAwfDA7cj1kO3M9ZCsyNzZ8MDtxPWQrMjk2fDA7dz1jW2U+PjJdfDA7eT1jW2Y+PjJdfDA7Zj1jW2crND4+Ml0mNzQ7aWYoKGZ8MCk9PTY0KXtmPTh9ZWxzZSBpZigoZnwwKT09MCl7Zj0wfWVsc2UgaWYoKGZ8MCk9PTgpe2Y9MTZ9ZWxzZXtmPTEwfXBpKG4sZyx1LG8pO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2U9ejtnPW0rOHwwfWVsc2V7ej1tKzh8MDtlPW0rMXwwO2c9ejt6PWNbej4+Ml18MH1jW3Q+PjJdPXo7Y1tzPj4yXT1yO2NbcT4+Ml09MDt2PW0rNHwwO3g9Y1tvPj4yXXwwO289bSs4fDA7d2hpbGUoMSl7aWYoKHd8MCk9PTApe0E9MTt3PTB9ZWxzZXtBPWNbdysxMj4+Ml18MDtpZigoQXwwKT09KGNbdysxNj4+Ml18MCkpe0E9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7QT1jW0E+PjJdfDB9Qz0oQXwwKT09LTE7QT1DPzE6MDt3PUM/MDp3fWlmKCh5fDApIT0wKXtCPWNbeSsxMj4+Ml18MDtpZigoQnwwKT09KGNbeSsxNj4+Ml18MCkpe0I9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZighQSl7YnJlYWt9fWVsc2V7az0yMH19ZWxzZXtrPTIwfWlmKChrfDApPT0yMCl7az0wO2lmKEEpe3k9MDticmVha31lbHNle3k9MH19QT1hW20+PjBdfDA7Qj0oQSYxKT09MDtpZihCKXtDPShBJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9aWYoKChjW3Q+PjJdfDApLXp8MCk9PShDfDApKXtpZihCKXtEPShBJjI1NSk+Pj4xO3o9KEEmMjU1KT4+PjE7Qz1EPDwxO0E9RH1lbHNle0E9Y1t2Pj4yXXwwO3o9Y1t2Pj4yXXwwO0M9QTw8MX1kb3tpZighKHo+Pj4wPEM+Pj4wKSl7aWYoQil7YVttK0MrMT4+MF09MDthW20+PjBdPUE8PDI7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0M+PjBdPTA7Y1t2Pj4yXT1DO2JyZWFrfX1lbHNle2hnKG0sQy16fDApfX13aGlsZSgwKTtDPWFbbT4+MF18MDtpZigoQyYxKT09MCl7Qj0xMH1lbHNle0I9Y1ttPj4yXXwwO0M9QiYyNTU7Qj0oQiYtMikrIC0xfDB9ej0oQyYxKT09MDtpZih6KXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9ZG97aWYoIShDPj4+MDxCPj4+MCkpe2lmKHope2FbbStCKzE+PjBdPTA7YVttPj4wXT1CPDwxO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStCPj4wXT0wO2Nbdj4+Ml09QjticmVha319ZWxzZXtoZyhtLEItQ3wwKX19d2hpbGUoMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9ZX1lbHNle3o9Y1tnPj4yXXwwfWNbdD4+Ml09eitBfUE9dysxMnwwO0M9Y1tBPj4yXXwwO0I9dysxNnwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7Qz1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtDPWNbQz4+Ml18MH1pZigobGkoQyxmLHosdCxxLHgsbixyLHMsdSl8MCkhPTApe2JyZWFrfUM9Y1tBPj4yXXwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7b2NbY1soY1t3Pj4yXXwwKSs0MD4+Ml0mMTI3XSh3KXwwO2NvbnRpbnVlfWVsc2V7Y1tBPj4yXT1DKzQ7Y29udGludWV9fXU9YVtuPj4wXXwwO2lmKCh1JjEpPT0wKXt1PSh1JjI1NSk+Pj4xfWVsc2V7dT1jW24rND4+Ml18MH1pZigodXwwKSE9MD8ocD1jW3M+PjJdfDAsKHAtcnwwKTwxNjApOjApe0Q9Y1txPj4yXXwwO2Nbcz4+Ml09cCs0O2NbcD4+Ml09RH1jW2o+PjJdPU5tKHosY1t0Pj4yXXwwLGgsZil8MDtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gY2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7ZD1pO2k9aSszMDR8MDt1PWQrMTYwfDA7bz1kKzI4MHwwO249ZCsyNjR8MDttPWQrMjg0fDA7dD1kKzMwMHwwO3I9ZDtzPWQrMjc2fDA7cT1kKzI5NnwwO3c9Y1tlPj4yXXwwO3k9Y1tmPj4yXXwwO2Y9Y1tnKzQ+PjJdJjc0O2lmKChmfDApPT04KXtmPTE2fWVsc2UgaWYoKGZ8MCk9PTY0KXtmPTh9ZWxzZSBpZigoZnwwKT09MCl7Zj0wfWVsc2V7Zj0xMH1waShuLGcsdSxvKTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtoZyhtLDEwKTtpZigoYVttPj4wXSYxKT09MCl7ej1tKzF8MDtlPXo7Zz1tKzh8MH1lbHNle3o9bSs4fDA7ZT1tKzF8MDtnPXo7ej1jW3o+PjJdfDB9Y1t0Pj4yXT16O2Nbcz4+Ml09cjtjW3E+PjJdPTA7dj1tKzR8MDt4PWNbbz4+Ml18MDtvPW0rOHwwO3doaWxlKDEpe2lmKCh3fDApPT0wKXtBPTE7dz0wfWVsc2V7QT1jW3crMTI+PjJdfDA7aWYoKEF8MCk9PShjW3crMTY+PjJdfDApKXtBPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0E9Y1tBPj4yXXwwfUM9KEF8MCk9PS0xO0E9Qz8xOjA7dz1DPzA6d31pZigoeXwwKSE9MCl7Qj1jW3krMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3krMTY+PjJdfDApKXtCPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0I9Y1tCPj4yXXwwfWlmKCEoKEJ8MCk9PS0xKSl7aWYoIUEpe2JyZWFrfX1lbHNle2s9MjB9fWVsc2V7az0yMH1pZigoa3wwKT09MjApe2s9MDtpZihBKXt5PTA7YnJlYWt9ZWxzZXt5PTB9fUE9YVttPj4wXXwwO0I9KEEmMSk9PTA7aWYoQil7Qz0oQSYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWlmKCgoY1t0Pj4yXXwwKS16fDApPT0oQ3wwKSl7aWYoQil7RD0oQSYyNTUpPj4+MTt6PShBJjI1NSk+Pj4xO0M9RDw8MTtBPUR9ZWxzZXtBPWNbdj4+Ml18MDt6PWNbdj4+Ml18MDtDPUE8PDF9ZG97aWYoISh6Pj4+MDxDPj4+MCkpe2lmKEIpe2FbbStDKzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStDPj4wXT0wO2Nbdj4+Ml09QzticmVha319ZWxzZXtoZyhtLEMtenwwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe0I9MTB9ZWxzZXtCPWNbbT4+Ml18MDtDPUImMjU1O0I9KEImLTIpKyAtMXwwfXo9KEMmMSk9PTA7aWYoeil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWRve2lmKCEoQz4+PjA8Qj4+PjApKXtpZih6KXthW20rQisxPj4wXT0wO2FbbT4+MF09Qjw8MTticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQj4+MF09MDtjW3Y+PjJdPUI7YnJlYWt9fWVsc2V7aGcobSxCLUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWV9ZWxzZXt6PWNbZz4+Ml18MH1jW3Q+PjJdPXorQX1BPXcrMTJ8MDtDPWNbQT4+Ml18MDtCPXcrMTZ8MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe0M9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7Qz1jW0M+PjJdfDB9aWYoKGxpKEMsZix6LHQscSx4LG4scixzLHUpfDApIT0wKXticmVha31DPWNbQT4+Ml18MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe29jW2NbKGNbdz4+Ml18MCkrNDA+PjJdJjEyN10odyl8MDtjb250aW51ZX1lbHNle2NbQT4+Ml09Qys0O2NvbnRpbnVlfX11PWFbbj4+MF18MDtpZigodSYxKT09MCl7dT0odSYyNTUpPj4+MX1lbHNle3U9Y1tuKzQ+PjJdfDB9aWYoKHV8MCkhPTA/KHA9Y1tzPj4yXXwwLChwLXJ8MCk8MTYwKTowKXtEPWNbcT4+Ml18MDtjW3M+PjJdPXArNDtjW3A+PjJdPUR9Qz1NbSh6LGNbdD4+Ml18MCxoLGYpfDA7RD1qO2NbRD4+Ml09QztjW0QrND4+Ml09STtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZGkoZCxlLGYsZyxoLGosayl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7ZT1pO2k9aSszMDR8MDt2PWUrMTYwfDA7cD1lKzI4MHwwO289ZSsyNjR8MDtuPWUrMjg0fDA7dT1lKzMwMHwwO3M9ZTt0PWUrMjc2fDA7cj1lKzI5NnwwO3g9Y1tmPj4yXXwwO3o9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09NjQpe2c9OH1lbHNlIGlmKChnfDApPT04KXtnPTE2fWVsc2V7Zz0xMH1waShvLGgsdixwKTtjW24rMD4+Ml09MDtjW24rND4+Ml09MDtjW24rOD4+Ml09MDtoZyhuLDEwKTtpZigoYVtuPj4wXSYxKT09MCl7QT1uKzF8MDtmPUE7aD1uKzh8MH1lbHNle0E9bis4fDA7Zj1uKzF8MDtoPUE7QT1jW0E+PjJdfDB9Y1t1Pj4yXT1BO2NbdD4+Ml09cztjW3I+PjJdPTA7dz1uKzR8MDt5PWNbcD4+Ml18MDtwPW4rOHwwO3doaWxlKDEpe2lmKCh4fDApPT0wKXtCPTE7eD0wfWVsc2V7Qj1jW3grMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3grMTY+PjJdfDApKXtCPW9jW2NbKGNbeD4+Ml18MCkrMzY+PjJdJjEyN10oeCl8MH1lbHNle0I9Y1tCPj4yXXwwfUQ9KEJ8MCk9PS0xO0I9RD8xOjA7eD1EPzA6eH1pZigoenwwKSE9MCl7Qz1jW3orMTI+PjJdfDA7aWYoKEN8MCk9PShjW3orMTY+PjJdfDApKXtDPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0M9Y1tDPj4yXXwwfWlmKCEoKEN8MCk9PS0xKSl7aWYoIUIpe2JyZWFrfX1lbHNle2w9MjB9fWVsc2V7bD0yMH1pZigobHwwKT09MjApe2w9MDtpZihCKXt6PTA7YnJlYWt9ZWxzZXt6PTB9fUI9YVtuPj4wXXwwO0M9KEImMSk9PTA7aWYoQyl7RD0oQiYyNTUpPj4+MX1lbHNle0Q9Y1t3Pj4yXXwwfWlmKCgoY1t1Pj4yXXwwKS1BfDApPT0oRHwwKSl7aWYoQyl7RT0oQiYyNTUpPj4+MTtBPShCJjI1NSk+Pj4xO0Q9RTw8MTtCPUV9ZWxzZXtCPWNbdz4+Ml18MDtBPWNbdz4+Ml18MDtEPUI8PDF9ZG97aWYoIShBPj4+MDxEPj4+MCkpe2lmKEMpe2FbbitEKzE+PjBdPTA7YVtuPj4wXT1CPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStEPj4wXT0wO2Nbdz4+Ml09RDticmVha319ZWxzZXtoZyhuLEQtQXwwKX19d2hpbGUoMCk7RD1hW24+PjBdfDA7aWYoKEQmMSk9PTApe0M9MTB9ZWxzZXtDPWNbbj4+Ml18MDtEPUMmMjU1O0M9KEMmLTIpKyAtMXwwfUE9KEQmMSk9PTA7aWYoQSl7RD0oRCYyNTUpPj4+MX1lbHNle0Q9Y1t3Pj4yXXwwfWRve2lmKCEoRD4+PjA8Qz4+PjApKXtpZihBKXthW24rQysxPj4wXT0wO2Fbbj4+MF09Qzw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrQz4+MF09MDtjW3c+PjJdPUM7YnJlYWt9fWVsc2V7aGcobixDLUR8MCl9fXdoaWxlKDApO2lmKChhW24+PjBdJjEpPT0wKXtBPWZ9ZWxzZXtBPWNbaD4+Ml18MH1jW3U+PjJdPUErQn1CPXgrMTJ8MDtEPWNbQj4+Ml18MDtDPXgrMTZ8MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe0Q9b2NbY1soY1t4Pj4yXXwwKSszNj4+Ml0mMTI3XSh4KXwwfWVsc2V7RD1jW0Q+PjJdfDB9aWYoKGxpKEQsZyxBLHUscix5LG8scyx0LHYpfDApIT0wKXticmVha31EPWNbQj4+Ml18MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeD4+Ml18MCkrNDA+PjJdJjEyN10oeCl8MDtjb250aW51ZX1lbHNle2NbQj4+Ml09RCs0O2NvbnRpbnVlfX12PWFbbz4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tvKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHE9Y1t0Pj4yXXwwLChxLXN8MCk8MTYwKTowKXtFPWNbcj4+Ml18MDtjW3Q+PjJdPXErNDtjW3E+PjJdPUV9YltrPj4xXT1MbShBLGNbdT4+Ml18MCxqLGcpfDA7cWsobyxzLGNbdD4+Ml18MCxqKTtpZigoeHwwKT09MCl7az0wO3E9MX1lbHNle2s9Y1t4KzEyPj4yXXwwO2lmKChrfDApPT0oY1t4KzE2Pj4yXXwwKSl7az1vY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDB9ZWxzZXtrPWNbaz4+Ml18MH1xPShrfDApPT0tMTtrPXE/MDp4O3E9cT8xOjB9aWYoKHp8MCkhPTApe3I9Y1t6KzEyPj4yXXwwO2lmKChyfDApPT0oY1t6KzE2Pj4yXXwwKSl7cj1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtyPWNbcj4+Ml18MH1pZighKChyfDApPT0tMSkpe2lmKCFxKXtsPTczfX1lbHNle2w9NzF9fWVsc2V7bD03MX1pZigobHwwKT09NzE/cTowKXtsPTczfWlmKChsfDApPT03Myl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tkPj4yXT1rO2lmKCEoKGFbbj4+MF0mMSk9PTApPyhtPWNbcD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZTtyZXR1cm59aj1jW28rOD4+Ml18MDtpZigoanwwKT09MCl7aT1lO3JldHVybn12bihqKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGVpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO2Q9aTtpPWkrMzA0fDA7dT1kKzE2MHwwO289ZCsyODB8MDtuPWQrMjY0fDA7bT1kKzI4NHwwO3Q9ZCszMDB8MDtyPWQ7cz1kKzI3NnwwO3E9ZCsyOTZ8MDt3PWNbZT4+Ml18MDt5PWNbZj4+Ml18MDtmPWNbZys0Pj4yXSY3NDtpZigoZnwwKT09OCl7Zj0xNn1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2UgaWYoKGZ8MCk9PTApe2Y9MH1lbHNle2Y9MTB9cGkobixnLHUsbyk7Y1ttKzA+PjJdPTA7Y1ttKzQ+PjJdPTA7Y1ttKzg+PjJdPTA7aGcobSwxMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9bSsxfDA7ZT16O2c9bSs4fDB9ZWxzZXt6PW0rOHwwO2U9bSsxfDA7Zz16O3o9Y1t6Pj4yXXwwfWNbdD4+Ml09ejtjW3M+PjJdPXI7Y1txPj4yXT0wO3Y9bSs0fDA7eD1jW28+PjJdfDA7bz1tKzh8MDt3aGlsZSgxKXtpZigod3wwKT09MCl7QT0xO3c9MH1lbHNle0E9Y1t3KzEyPj4yXXwwO2lmKChBfDApPT0oY1t3KzE2Pj4yXXwwKSl7QT1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtBPWNbQT4+Ml18MH1DPShBfDApPT0tMTtBPUM/MTowO3c9Qz8wOnd9aWYoKHl8MCkhPTApe0I9Y1t5KzEyPj4yXXwwO2lmKChCfDApPT0oY1t5KzE2Pj4yXXwwKSl7Qj1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtCPWNbQj4+Ml18MH1pZighKChCfDApPT0tMSkpe2lmKCFBKXticmVha319ZWxzZXtrPTIwfX1lbHNle2s9MjB9aWYoKGt8MCk9PTIwKXtrPTA7aWYoQSl7eT0wO2JyZWFrfWVsc2V7eT0wfX1BPWFbbT4+MF18MDtCPShBJjEpPT0wO2lmKEIpe0M9KEEmMjU1KT4+PjF9ZWxzZXtDPWNbdj4+Ml18MH1pZigoKGNbdD4+Ml18MCktenwwKT09KEN8MCkpe2lmKEIpe0Q9KEEmMjU1KT4+PjE7ej0oQSYyNTUpPj4+MTtDPUQ8PDE7QT1EfWVsc2V7QT1jW3Y+PjJdfDA7ej1jW3Y+PjJdfDA7Qz1BPDwxfWRve2lmKCEoej4+PjA8Qz4+PjApKXtpZihCKXthW20rQysxPj4wXT0wO2FbbT4+MF09QTw8MjticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQz4+MF09MDtjW3Y+PjJdPUM7YnJlYWt9fWVsc2V7aGcobSxDLXp8MCl9fXdoaWxlKDApO0M9YVttPj4wXXwwO2lmKChDJjEpPT0wKXtCPTEwfWVsc2V7Qj1jW20+PjJdfDA7Qz1CJjI1NTtCPShCJi0yKSsgLTF8MH16PShDJjEpPT0wO2lmKHope0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbdj4+Ml18MH1kb3tpZighKEM+Pj4wPEI+Pj4wKSl7aWYoeil7YVttK0IrMT4+MF09MDthW20+PjBdPUI8PDE7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0I+PjBdPTA7Y1t2Pj4yXT1CO2JyZWFrfX1lbHNle2hnKG0sQi1DfDApfX13aGlsZSgwKTtpZigoYVttPj4wXSYxKT09MCl7ej1lfWVsc2V7ej1jW2c+PjJdfDB9Y1t0Pj4yXT16K0F9QT13KzEyfDA7Qz1jW0E+PjJdfDA7Qj13KzE2fDA7aWYoKEN8MCk9PShjW0I+PjJdfDApKXtDPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0M9Y1tDPj4yXXwwfWlmKChsaShDLGYseix0LHEseCxuLHIscyx1KXwwKSE9MCl7YnJlYWt9Qz1jW0E+PjJdfDA7aWYoKEN8MCk9PShjW0I+PjJdfDApKXtvY1tjWyhjW3c+PjJdfDApKzQwPj4yXSYxMjddKHcpfDA7Y29udGludWV9ZWxzZXtjW0E+PjJdPUMrNDtjb250aW51ZX19dT1hW24+PjBdfDA7aWYoKHUmMSk9PTApe3U9KHUmMjU1KT4+PjF9ZWxzZXt1PWNbbis0Pj4yXXwwfWlmKCh1fDApIT0wPyhwPWNbcz4+Ml18MCwocC1yfDApPDE2MCk6MCl7RD1jW3E+PjJdfDA7Y1tzPj4yXT1wKzQ7Y1twPj4yXT1EfWNbaj4+Ml09S20oeixjW3Q+PjJdfDAsaCxmKXwwO3FrKG4scixjW3M+PjJdfDAsaCk7aWYoKHd8MCk9PTApe2o9MDtwPTF9ZWxzZXtqPWNbdysxMj4+Ml18MDtpZigoanwwKT09KGNbdysxNj4+Ml18MCkpe2o9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7aj1jW2o+PjJdfDB9cD0oanwwKT09LTE7aj1wPzA6dztwPXA/MTowfWlmKCh5fDApIT0wKXtxPWNbeSsxMj4+Ml18MDtpZigocXwwKT09KGNbeSsxNj4+Ml18MCkpe3E9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7cT1jW3E+PjJdfDB9aWYoISgocXwwKT09LTEpKXtpZighcCl7az03M319ZWxzZXtrPTcxfX1lbHNle2s9NzF9aWYoKGt8MCk9PTcxP3A6MCl7az03M31pZigoa3wwKT09NzMpe2NbaD4+Ml09Y1toPj4yXXwyfWNbYj4+Ml09ajtpZighKChhW20+PjBdJjEpPT0wKT8obD1jW28+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKChhW24+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWg9Y1tuKzg+PjJdfDA7aWYoKGh8MCk9PTApe2k9ZDtyZXR1cm59dm4oaCk7aT1kO3JldHVybn1mdW5jdGlvbiBmaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtkPWk7aT1pKzMwNHwwO3U9ZCsxNjB8MDtvPWQrMjgwfDA7bj1kKzI2NHwwO209ZCsyODR8MDt0PWQrMzAwfDA7cj1kO3M9ZCsyNzZ8MDtxPWQrMjk2fDA7dz1jW2U+PjJdfDA7eT1jW2Y+PjJdfDA7Zj1jW2crND4+Ml0mNzQ7aWYoKGZ8MCk9PTApe2Y9MH1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2UgaWYoKGZ8MCk9PTgpe2Y9MTZ9ZWxzZXtmPTEwfXBpKG4sZyx1LG8pO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2U9ejtnPW0rOHwwfWVsc2V7ej1tKzh8MDtlPW0rMXwwO2c9ejt6PWNbej4+Ml18MH1jW3Q+PjJdPXo7Y1tzPj4yXT1yO2NbcT4+Ml09MDt2PW0rNHwwO3g9Y1tvPj4yXXwwO289bSs4fDA7d2hpbGUoMSl7aWYoKHd8MCk9PTApe0E9MTt3PTB9ZWxzZXtBPWNbdysxMj4+Ml18MDtpZigoQXwwKT09KGNbdysxNj4+Ml18MCkpe0E9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7QT1jW0E+PjJdfDB9Qz0oQXwwKT09LTE7QT1DPzE6MDt3PUM/MDp3fWlmKCh5fDApIT0wKXtCPWNbeSsxMj4+Ml18MDtpZigoQnwwKT09KGNbeSsxNj4+Ml18MCkpe0I9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZighQSl7YnJlYWt9fWVsc2V7az0yMH19ZWxzZXtrPTIwfWlmKChrfDApPT0yMCl7az0wO2lmKEEpe3k9MDticmVha31lbHNle3k9MH19QT1hW20+PjBdfDA7Qj0oQSYxKT09MDtpZihCKXtDPShBJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9aWYoKChjW3Q+PjJdfDApLXp8MCk9PShDfDApKXtpZihCKXtEPShBJjI1NSk+Pj4xO3o9KEEmMjU1KT4+PjE7Qz1EPDwxO0E9RH1lbHNle0E9Y1t2Pj4yXXwwO3o9Y1t2Pj4yXXwwO0M9QTw8MX1kb3tpZighKHo+Pj4wPEM+Pj4wKSl7aWYoQil7YVttK0MrMT4+MF09MDthW20+PjBdPUE8PDI7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0M+PjBdPTA7Y1t2Pj4yXT1DO2JyZWFrfX1lbHNle2hnKG0sQy16fDApfX13aGlsZSgwKTtDPWFbbT4+MF18MDtpZigoQyYxKT09MCl7Qj0xMH1lbHNle0I9Y1ttPj4yXXwwO0M9QiYyNTU7Qj0oQiYtMikrIC0xfDB9ej0oQyYxKT09MDtpZih6KXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9ZG97aWYoIShDPj4+MDxCPj4+MCkpe2lmKHope2FbbStCKzE+PjBdPTA7YVttPj4wXT1CPDwxO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStCPj4wXT0wO2Nbdj4+Ml09QjticmVha319ZWxzZXtoZyhtLEItQ3wwKX19d2hpbGUoMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9ZX1lbHNle3o9Y1tnPj4yXXwwfWNbdD4+Ml09eitBfUE9dysxMnwwO0M9Y1tBPj4yXXwwO0I9dysxNnwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7Qz1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtDPWNbQz4+Ml18MH1pZigobGkoQyxmLHosdCxxLHgsbixyLHMsdSl8MCkhPTApe2JyZWFrfUM9Y1tBPj4yXXwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7b2NbY1soY1t3Pj4yXXwwKSs0MD4+Ml0mMTI3XSh3KXwwO2NvbnRpbnVlfWVsc2V7Y1tBPj4yXT1DKzQ7Y29udGludWV9fXU9YVtuPj4wXXwwO2lmKCh1JjEpPT0wKXt1PSh1JjI1NSk+Pj4xfWVsc2V7dT1jW24rND4+Ml18MH1pZigodXwwKSE9MD8ocD1jW3M+PjJdfDAsKHAtcnwwKTwxNjApOjApe0Q9Y1txPj4yXXwwO2Nbcz4+Ml09cCs0O2NbcD4+Ml09RH1jW2o+PjJdPUptKHosY1t0Pj4yXXwwLGgsZil8MDtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7ZD1pO2k9aSszMDR8MDt1PWQrMTYwfDA7bz1kKzI4MHwwO249ZCsyNjR8MDttPWQrMjg0fDA7dD1kKzMwMHwwO3I9ZDtzPWQrMjc2fDA7cT1kKzI5NnwwO3c9Y1tlPj4yXXwwO3k9Y1tmPj4yXXwwO2Y9Y1tnKzQ+PjJdJjc0O2lmKChmfDApPT04KXtmPTE2fWVsc2UgaWYoKGZ8MCk9PTApe2Y9MH1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2V7Zj0xMH1waShuLGcsdSxvKTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtoZyhtLDEwKTtpZigoYVttPj4wXSYxKT09MCl7ej1tKzF8MDtlPXo7Zz1tKzh8MH1lbHNle3o9bSs4fDA7ZT1tKzF8MDtnPXo7ej1jW3o+PjJdfDB9Y1t0Pj4yXT16O2Nbcz4+Ml09cjtjW3E+PjJdPTA7dj1tKzR8MDt4PWNbbz4+Ml18MDtvPW0rOHwwO3doaWxlKDEpe2lmKCh3fDApPT0wKXtBPTE7dz0wfWVsc2V7QT1jW3crMTI+PjJdfDA7aWYoKEF8MCk9PShjW3crMTY+PjJdfDApKXtBPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0E9Y1tBPj4yXXwwfUM9KEF8MCk9PS0xO0E9Qz8xOjA7dz1DPzA6d31pZigoeXwwKSE9MCl7Qj1jW3krMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3krMTY+PjJdfDApKXtCPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0I9Y1tCPj4yXXwwfWlmKCEoKEJ8MCk9PS0xKSl7aWYoIUEpe2JyZWFrfX1lbHNle2s9MjB9fWVsc2V7az0yMH1pZigoa3wwKT09MjApe2s9MDtpZihBKXt5PTA7YnJlYWt9ZWxzZXt5PTB9fUE9YVttPj4wXXwwO0I9KEEmMSk9PTA7aWYoQil7Qz0oQSYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWlmKCgoY1t0Pj4yXXwwKS16fDApPT0oQ3wwKSl7aWYoQil7RD0oQSYyNTUpPj4+MTt6PShBJjI1NSk+Pj4xO0M9RDw8MTtBPUR9ZWxzZXtBPWNbdj4+Ml18MDt6PWNbdj4+Ml18MDtDPUE8PDF9ZG97aWYoISh6Pj4+MDxDPj4+MCkpe2lmKEIpe2FbbStDKzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStDPj4wXT0wO2Nbdj4+Ml09QzticmVha319ZWxzZXtoZyhtLEMtenwwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe0I9MTB9ZWxzZXtCPWNbbT4+Ml18MDtDPUImMjU1O0I9KEImLTIpKyAtMXwwfXo9KEMmMSk9PTA7aWYoeil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWRve2lmKCEoQz4+PjA8Qj4+PjApKXtpZih6KXthW20rQisxPj4wXT0wO2FbbT4+MF09Qjw8MTticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQj4+MF09MDtjW3Y+PjJdPUI7YnJlYWt9fWVsc2V7aGcobSxCLUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWV9ZWxzZXt6PWNbZz4+Ml18MH1jW3Q+PjJdPXorQX1BPXcrMTJ8MDtDPWNbQT4+Ml18MDtCPXcrMTZ8MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe0M9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7Qz1jW0M+PjJdfDB9aWYoKGxpKEMsZix6LHQscSx4LG4scixzLHUpfDApIT0wKXticmVha31DPWNbQT4+Ml18MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe29jW2NbKGNbdz4+Ml18MCkrNDA+PjJdJjEyN10odyl8MDtjb250aW51ZX1lbHNle2NbQT4+Ml09Qys0O2NvbnRpbnVlfX11PWFbbj4+MF18MDtpZigodSYxKT09MCl7dT0odSYyNTUpPj4+MX1lbHNle3U9Y1tuKzQ+PjJdfDB9aWYoKHV8MCkhPTA/KHA9Y1tzPj4yXXwwLChwLXJ8MCk8MTYwKTowKXtEPWNbcT4+Ml18MDtjW3M+PjJdPXArNDtjW3A+PjJdPUR9Qz1JbSh6LGNbdD4+Ml18MCxoLGYpfDA7RD1qO2NbRD4+Ml09QztjW0QrND4+Ml09STtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gaGkoYixkLGUsZixoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MDtkPWk7aT1pKzM1MnwwO3c9ZCsyMDh8MDt5PWQrMTg0fDA7cD1kKzR8MDtuPWQrOHwwO289ZCsxOTZ8MDt1PWQ7dD1kKzI0fDA7cz1kKzE5MnwwO3Y9ZCsxODh8MDtyPWQrMzM3fDA7eD1kKzMzNnwwO3o9Y1tlPj4yXXwwO0I9Y1tmPj4yXXwwO3FpKG4saCx3LHkscCk7Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTA7aGcobywxMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9bysxfDA7ZT1DO2Y9bys4fDB9ZWxzZXtDPW8rOHwwO2U9bysxfDA7Zj1DO0M9Y1tDPj4yXXwwfWNbdT4+Ml09QztjW3M+PjJdPXQ7Y1t2Pj4yXT0wO2Fbcj4+MF09MTthW3g+PjBdPTY5O2g9bys0fDA7eT1jW3k+PjJdfDA7QT1jW3A+PjJdfDA7cD1vKzh8MDt3aGlsZSgxKXtpZigoenwwKT09MCl7RD0xO3o9MH1lbHNle0Q9Y1t6KzEyPj4yXXwwO2lmKChEfDApPT0oY1t6KzE2Pj4yXXwwKSl7RD1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtEPWNbRD4+Ml18MH1GPShEfDApPT0tMTtEPUY/MTowO3o9Rj8wOnp9aWYoKEJ8MCkhPTApe0U9Y1tCKzEyPj4yXXwwO2lmKChFfDApPT0oY1tCKzE2Pj4yXXwwKSl7RT1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtFPWNbRT4+Ml18MH1pZighKChFfDApPT0tMSkpe2lmKCFEKXticmVha319ZWxzZXttPTE2fX1lbHNle209MTZ9aWYoKG18MCk9PTE2KXttPTA7aWYoRCl7Qj0wO2JyZWFrfWVsc2V7Qj0wfX1EPWFbbz4+MF18MDtFPShEJjEpPT0wO2lmKEUpe0Y9KEQmMjU1KT4+PjF9ZWxzZXtGPWNbaD4+Ml18MH1pZigoKGNbdT4+Ml18MCktQ3wwKT09KEZ8MCkpe2lmKEUpe0c9KEQmMjU1KT4+PjE7Rj0oRCYyNTUpPj4+MTtDPUc8PDE7RD1HfWVsc2V7RD1jW2g+PjJdfDA7Rj1jW2g+PjJdfDA7Qz1EPDwxfWRve2lmKCEoRj4+PjA8Qz4+PjApKXtpZihFKXthW28rQysxPj4wXT0wO2Fbbz4+MF09RDw8MjticmVha31lbHNle2FbKGNbcD4+Ml18MCkrQz4+MF09MDtjW2g+PjJdPUM7YnJlYWt9fWVsc2V7aGcobyxDLUZ8MCl9fXdoaWxlKDApO0Y9YVtvPj4wXXwwO2lmKChGJjEpPT0wKXtFPTEwfWVsc2V7RT1jW28+PjJdfDA7Rj1FJjI1NTtFPShFJi0yKSsgLTF8MH1DPShGJjEpPT0wO2lmKEMpe0Y9KEYmMjU1KT4+PjF9ZWxzZXtGPWNbaD4+Ml18MH1kb3tpZighKEY+Pj4wPEU+Pj4wKSl7aWYoQyl7YVtvK0UrMT4+MF09MDthW28+PjBdPUU8PDE7YnJlYWt9ZWxzZXthWyhjW3A+PjJdfDApK0U+PjBdPTA7Y1toPj4yXT1FO2JyZWFrfX1lbHNle2hnKG8sRS1GfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz1lfWVsc2V7Qz1jW2Y+PjJdfDB9Y1t1Pj4yXT1DK0R9RT16KzEyfDA7Rj1jW0U+PjJdfDA7RD16KzE2fDA7aWYoKEZ8MCk9PShjW0Q+PjJdfDApKXtGPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0Y9Y1tGPj4yXXwwfWlmKChyaShGLHIseCxDLHUseSxBLG4sdCxzLHYsdyl8MCkhPTApe2JyZWFrfUY9Y1tFPj4yXXwwO2lmKChGfDApPT0oY1tEPj4yXXwwKSl7b2NbY1soY1t6Pj4yXXwwKSs0MD4+Ml0mMTI3XSh6KXwwO2NvbnRpbnVlfWVsc2V7Y1tFPj4yXT1GKzQ7Y29udGludWV9fXc9YVtuPj4wXXwwO2lmKCh3JjEpPT0wKXt3PSh3JjI1NSk+Pj4xfWVsc2V7dz1jW24rND4+Ml18MH1pZigoKHd8MCkhPTA/KGFbcj4+MF18MCkhPTA6MCk/KHE9Y1tzPj4yXXwwLChxLXR8MCk8MTYwKTowKXtHPWNbdj4+Ml18MDtjW3M+PjJdPXErNDtjW3E+PjJdPUd9Z1trPj4yXT0rSG0oQyxjW3U+PjJdfDAsaik7cWsobix0LGNbcz4+Ml18MCxqKTtpZigoenwwKT09MCl7az0wO3E9MX1lbHNle2s9Y1t6KzEyPj4yXXwwO2lmKChrfDApPT0oY1t6KzE2Pj4yXXwwKSl7az1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtrPWNbaz4+Ml18MH1xPShrfDApPT0tMTtrPXE/MDp6O3E9cT8xOjB9aWYoKEJ8MCkhPTApe3I9Y1tCKzEyPj4yXXwwO2lmKChyfDApPT0oY1tCKzE2Pj4yXXwwKSl7cj1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtyPWNbcj4+Ml18MH1pZighKChyfDApPT0tMSkpe2lmKCFxKXttPTcwfX1lbHNle209Njh9fWVsc2V7bT02OH1pZigobXwwKT09Njg/cTowKXttPTcwfWlmKChtfDApPT03MCl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1rO2lmKCEoKGFbbz4+MF0mMSk9PTApPyhsPWNbcD4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoKGFbbj4+MF0mMSk9PTApe2k9ZDtyZXR1cm59aj1jW24rOD4+Ml18MDtpZigoanwwKT09MCl7aT1kO3JldHVybn12bihqKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGlpKGIsZCxlLGYsZyxqLGspe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7ZD1pO2k9aSszNTJ8MDt3PWQrMjA4fDA7eT1kKzE4NHwwO3A9ZCs0fDA7bj1kKzh8MDtvPWQrMTk2fDA7dT1kO3Q9ZCsyNHwwO3M9ZCsxOTJ8MDt2PWQrMTg4fDA7cj1kKzMzN3wwO3g9ZCszMzZ8MDt6PWNbZT4+Ml18MDtCPWNbZj4+Ml18MDtxaShuLGcsdyx5LHApO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtDPW8rMXwwO2U9QztmPW8rOHwwfWVsc2V7Qz1vKzh8MDtlPW8rMXwwO2Y9QztDPWNbQz4+Ml18MH1jW3U+PjJdPUM7Y1tzPj4yXT10O2Nbdj4+Ml09MDthW3I+PjBdPTE7YVt4Pj4wXT02OTtnPW8rNHwwO3k9Y1t5Pj4yXXwwO0E9Y1twPj4yXXwwO3A9bys4fDA7d2hpbGUoMSl7aWYoKHp8MCk9PTApe0Q9MTt6PTB9ZWxzZXtEPWNbeisxMj4+Ml18MDtpZigoRHwwKT09KGNbeisxNj4+Ml18MCkpe0Q9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7RD1jW0Q+PjJdfDB9Rj0oRHwwKT09LTE7RD1GPzE6MDt6PUY/MDp6fWlmKChCfDApIT0wKXtFPWNbQisxMj4+Ml18MDtpZigoRXwwKT09KGNbQisxNj4+Ml18MCkpe0U9b2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwfWVsc2V7RT1jW0U+PjJdfDB9aWYoISgoRXwwKT09LTEpKXtpZighRCl7YnJlYWt9fWVsc2V7bT0xNn19ZWxzZXttPTE2fWlmKChtfDApPT0xNil7bT0wO2lmKEQpe0I9MDticmVha31lbHNle0I9MH19RD1hW28+PjBdfDA7RT0oRCYxKT09MDtpZihFKXtGPShEJjI1NSk+Pj4xfWVsc2V7Rj1jW2c+PjJdfDB9aWYoKChjW3U+PjJdfDApLUN8MCk9PShGfDApKXtpZihFKXtHPShEJjI1NSk+Pj4xO0Y9KEQmMjU1KT4+PjE7Qz1HPDwxO0Q9R31lbHNle0Q9Y1tnPj4yXXwwO0Y9Y1tnPj4yXXwwO0M9RDw8MX1kb3tpZighKEY+Pj4wPEM+Pj4wKSl7aWYoRSl7YVtvK0MrMT4+MF09MDthW28+PjBdPUQ8PDI7YnJlYWt9ZWxzZXthWyhjW3A+PjJdfDApK0M+PjBdPTA7Y1tnPj4yXT1DO2JyZWFrfX1lbHNle2hnKG8sQy1GfDApfX13aGlsZSgwKTtGPWFbbz4+MF18MDtpZigoRiYxKT09MCl7RT0xMH1lbHNle0U9Y1tvPj4yXXwwO0Y9RSYyNTU7RT0oRSYtMikrIC0xfDB9Qz0oRiYxKT09MDtpZihDKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW2c+PjJdfDB9ZG97aWYoIShGPj4+MDxFPj4+MCkpe2lmKEMpe2FbbytFKzE+PjBdPTA7YVtvPj4wXT1FPDwxO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStFPj4wXT0wO2NbZz4+Ml09RTticmVha319ZWxzZXtoZyhvLEUtRnwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9ZX1lbHNle0M9Y1tmPj4yXXwwfWNbdT4+Ml09QytEfUU9eisxMnwwO0Y9Y1tFPj4yXXwwO0Q9eisxNnwwO2lmKChGfDApPT0oY1tEPj4yXXwwKSl7Rj1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtGPWNbRj4+Ml18MH1pZigocmkoRixyLHgsQyx1LHksQSxuLHQscyx2LHcpfDApIT0wKXticmVha31GPWNbRT4+Ml18MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe29jW2NbKGNbej4+Ml18MCkrNDA+PjJdJjEyN10oeil8MDtjb250aW51ZX1lbHNle2NbRT4+Ml09Ris0O2NvbnRpbnVlfX13PWFbbj4+MF18MDtpZigodyYxKT09MCl7dz0odyYyNTUpPj4+MX1lbHNle3c9Y1tuKzQ+PjJdfDB9aWYoKCh3fDApIT0wPyhhW3I+PjBdfDApIT0wOjApPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7Rz1jW3Y+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1HfWhbaz4+M109K0dtKEMsY1t1Pj4yXXwwLGopO3FrKG4sdCxjW3M+PjJdfDAsaik7aWYoKHp8MCk9PTApe2s9MDtxPTF9ZWxzZXtrPWNbeisxMj4+Ml18MDtpZigoa3wwKT09KGNbeisxNj4+Ml18MCkpe2s9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7az1jW2s+PjJdfDB9cT0oa3wwKT09LTE7az1xPzA6ejtxPXE/MTowfWlmKChCfDApIT0wKXtyPWNbQisxMj4+Ml18MDtpZigocnwwKT09KGNbQisxNj4+Ml18MCkpe3I9b2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwfWVsc2V7cj1jW3I+PjJdfDB9aWYoISgocnwwKT09LTEpKXtpZighcSl7bT03MH19ZWxzZXttPTY4fX1lbHNle209Njh9aWYoKG18MCk9PTY4P3E6MCl7bT03MH1pZigobXwwKT09NzApe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09aztpZighKChhW28+PjBdJjEpPT0wKT8obD1jW3A+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKChhW24+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWo9Y1tuKzg+PjJdfDA7aWYoKGp8MCk9PTApe2k9ZDtyZXR1cm59dm4oaik7aT1kO3JldHVybn1mdW5jdGlvbiBqaShiLGQsZSxmLGcsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wO2Q9aTtpPWkrMzUyfDA7dz1kKzIwOHwwO3k9ZCsxODR8MDtwPWQrNHwwO249ZCs4fDA7bz1kKzE5NnwwO3U9ZDt0PWQrMjR8MDtzPWQrMTkyfDA7dj1kKzE4OHwwO3I9ZCszMzd8MDt4PWQrMzM2fDA7ej1jW2U+PjJdfDA7Qj1jW2Y+PjJdfDA7cWkobixnLHcseSxwKTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz1vKzF8MDtlPUM7Zj1vKzh8MH1lbHNle0M9bys4fDA7ZT1vKzF8MDtmPUM7Qz1jW0M+PjJdfDB9Y1t1Pj4yXT1DO2Nbcz4+Ml09dDtjW3Y+PjJdPTA7YVtyPj4wXT0xO2FbeD4+MF09Njk7Zz1vKzR8MDt5PWNbeT4+Ml18MDtBPWNbcD4+Ml18MDtwPW8rOHwwO3doaWxlKDEpe2lmKCh6fDApPT0wKXtEPTE7ej0wfWVsc2V7RD1jW3orMTI+PjJdfDA7aWYoKER8MCk9PShjW3orMTY+PjJdfDApKXtEPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0Q9Y1tEPj4yXXwwfUY9KER8MCk9PS0xO0Q9Rj8xOjA7ej1GPzA6en1pZigoQnwwKSE9MCl7RT1jW0IrMTI+PjJdfDA7aWYoKEV8MCk9PShjW0IrMTY+PjJdfDApKXtFPW9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MH1lbHNle0U9Y1tFPj4yXXwwfWlmKCEoKEV8MCk9PS0xKSl7aWYoIUQpe2JyZWFrfX1lbHNle209MTZ9fWVsc2V7bT0xNn1pZigobXwwKT09MTYpe209MDtpZihEKXtCPTA7YnJlYWt9ZWxzZXtCPTB9fUQ9YVtvPj4wXXwwO0U9KEQmMSk9PTA7aWYoRSl7Rj0oRCYyNTUpPj4+MX1lbHNle0Y9Y1tnPj4yXXwwfWlmKCgoY1t1Pj4yXXwwKS1DfDApPT0oRnwwKSl7aWYoRSl7Rz0oRCYyNTUpPj4+MTtGPShEJjI1NSk+Pj4xO0M9Rzw8MTtEPUd9ZWxzZXtEPWNbZz4+Ml18MDtGPWNbZz4+Ml18MDtDPUQ8PDF9ZG97aWYoIShGPj4+MDxDPj4+MCkpe2lmKEUpe2FbbytDKzE+PjBdPTA7YVtvPj4wXT1EPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStDPj4wXT0wO2NbZz4+Ml09QzticmVha319ZWxzZXtoZyhvLEMtRnwwKX19d2hpbGUoMCk7Rj1hW28+PjBdfDA7aWYoKEYmMSk9PTApe0U9MTB9ZWxzZXtFPWNbbz4+Ml18MDtGPUUmMjU1O0U9KEUmLTIpKyAtMXwwfUM9KEYmMSk9PTA7aWYoQyl7Rj0oRiYyNTUpPj4+MX1lbHNle0Y9Y1tnPj4yXXwwfWRve2lmKCEoRj4+PjA8RT4+PjApKXtpZihDKXthW28rRSsxPj4wXT0wO2Fbbz4+MF09RTw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrRT4+MF09MDtjW2c+PjJdPUU7YnJlYWt9fWVsc2V7aGcobyxFLUZ8MCl9fXdoaWxlKDApO2lmKChhW28+PjBdJjEpPT0wKXtDPWV9ZWxzZXtDPWNbZj4+Ml18MH1jW3U+PjJdPUMrRH1FPXorMTJ8MDtGPWNbRT4+Ml18MDtEPXorMTZ8MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe0Y9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7Rj1jW0Y+PjJdfDB9aWYoKHJpKEYscix4LEMsdSx5LEEsbix0LHMsdix3KXwwKSE9MCl7YnJlYWt9Rj1jW0U+PjJdfDA7aWYoKEZ8MCk9PShjW0Q+PjJdfDApKXtvY1tjWyhjW3o+PjJdfDApKzQwPj4yXSYxMjddKHopfDA7Y29udGludWV9ZWxzZXtjW0U+PjJdPUYrNDtjb250aW51ZX19dz1hW24+PjBdfDA7aWYoKHcmMSk9PTApe3c9KHcmMjU1KT4+PjF9ZWxzZXt3PWNbbis0Pj4yXXwwfWlmKCgod3wwKSE9MD8oYVtyPj4wXXwwKSE9MDowKT8ocT1jW3M+PjJdfDAsKHEtdHwwKTwxNjApOjApe0c9Y1t2Pj4yXXwwO2Nbcz4+Ml09cSs0O2NbcT4+Ml09R31oW2s+PjNdPStGbShDLGNbdT4+Ml18MCxqKTtxayhuLHQsY1tzPj4yXXwwLGopO2lmKCh6fDApPT0wKXtrPTA7cT0xfWVsc2V7az1jW3orMTI+PjJdfDA7aWYoKGt8MCk9PShjW3orMTY+PjJdfDApKXtrPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle2s9Y1trPj4yXXwwfXE9KGt8MCk9PS0xO2s9cT8wOno7cT1xPzE6MH1pZigoQnwwKSE9MCl7cj1jW0IrMTI+PjJdfDA7aWYoKHJ8MCk9PShjW0IrMTY+PjJdfDApKXtyPW9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MH1lbHNle3I9Y1tyPj4yXXwwfWlmKCEoKHJ8MCk9PS0xKSl7aWYoIXEpe209NzB9fWVsc2V7bT02OH19ZWxzZXttPTY4fWlmKChtfDApPT02OD9xOjApe209NzB9aWYoKG18MCk9PTcwKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWs7aWYoISgoYVtvPj4wXSYxKT09MCk/KGw9Y1twPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1qPWNbbis4Pj4yXXwwO2lmKChqfDApPT0wKXtpPWQ7cmV0dXJufXZuKGopO2k9ZDtyZXR1cm59ZnVuY3Rpb24ga2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtkPWk7aT1pKzMwNHwwO249ZDtvPWQrMTkyfDA7bD1kKzE3NnwwO3Y9ZCsxNnwwO3E9Y1tnKzI4Pj4yXXwwO0M9cSs0fDA7Y1tDPj4yXT0oY1tDPj4yXXwwKSsxO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ0ODtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDQ4LG4pfWc9KGNbMTM0NTI+PjJdfDApKyAtMXwwO3A9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcD4+Mj4+PjA+Zz4+PjA/KG09Y1twKyhnPDwyKT4+Ml18MCwobXwwKSE9MCk6MCl7dWNbY1soY1ttPj4yXXwwKSs0OD4+Ml0mMzFdKG0sMTIwMTYsMTIwNDJ8MCxvKXwwO0I9cSs0fDA7Qz1jW0I+PjJdfDA7Y1tCPj4yXT1DKyAtMTtpZigoQ3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfWNbbCswPj4yXT0wO2NbbCs0Pj4yXT0wO2NbbCs4Pj4yXT0wO2hnKGwsMTApO2lmKChhW2w+PjBdJjEpPT0wKXt5PWwrMXwwO3A9eTtxPWwrOHwwfWVsc2V7eT1sKzh8MDtwPWwrMXwwO3E9eTt5PWNbeT4+Ml18MH1yPWwrNHwwO3Q9bys5NnwwO3U9bysxMDB8MDtzPW8rMTA0fDA7Zz1vO209bCs4fDA7eD1jW2U+PjJdfDA7dz0wO3o9eTthOndoaWxlKDEpe2lmKCh4fDApIT0wKXtBPWNbeCsxMj4+Ml18MDtpZigoQXwwKT09KGNbeCsxNj4+Ml18MCkpe0E9b2NbY1soY1t4Pj4yXXwwKSszNj4+Ml0mMTI3XSh4KXwwfWVsc2V7QT1jW0E+PjJdfDB9aWYoKEF8MCk9PS0xKXtjW2U+PjJdPTA7eD0wO0E9MX1lbHNle0E9MH19ZWxzZXt4PTA7QT0xfUM9Y1tmPj4yXXwwO2Rve2lmKChDfDApIT0wKXtCPWNbQysxMj4+Ml18MDtpZigoQnwwKT09KGNbQysxNj4+Ml18MCkpe0I9b2NbY1soY1tDPj4yXXwwKSszNj4+Ml0mMTI3XShDKXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZihBKXticmVha31lbHNle2JyZWFrIGF9fWVsc2V7Y1tmPj4yXT0wO2s9Mjc7YnJlYWt9fWVsc2V7az0yN319d2hpbGUoMCk7aWYoKGt8MCk9PTI3PyhrPTAsQSk6MCl7YnJlYWt9Qz1hW2w+PjBdfDA7QT0oQyYxKT09MDtpZihBKXtCPShDJjI1NSk+Pj4xfWVsc2V7Qj1jW3I+PjJdfDB9aWYoKHoteXwwKT09KEJ8MCkpe2lmKEEpe3o9KEMmMjU1KT4+PjE7Qj0oQyYyNTUpPj4+MTt5PXo8PDF9ZWxzZXt6PWNbcj4+Ml18MDtCPWNbcj4+Ml18MDt5PXo8PDF9ZG97aWYoIShCPj4+MDx5Pj4+MCkpe2lmKEEpe2FbbCt5KzE+PjBdPTA7YVtsPj4wXT16PDwyO2JyZWFrfWVsc2V7YVsoY1ttPj4yXXwwKSt5Pj4wXT0wO2Nbcj4+Ml09eTticmVha319ZWxzZXtoZyhsLHktQnwwKX19d2hpbGUoMCk7Qj1hW2w+PjBdfDA7aWYoKEImMSk9PTApe0E9MTB9ZWxzZXtBPWNbbD4+Ml18MDtCPUEmMjU1O0E9KEEmLTIpKyAtMXwwfXk9KEImMSk9PTA7aWYoeSl7Qj0oQiYyNTUpPj4+MX1lbHNle0I9Y1tyPj4yXXwwfWRve2lmKCEoQj4+PjA8QT4+PjApKXtpZih5KXthW2wrQSsxPj4wXT0wO2FbbD4+MF09QTw8MTticmVha31lbHNle2FbKGNbbT4+Ml18MCkrQT4+MF09MDtjW3I+PjJdPUE7YnJlYWt9fWVsc2V7aGcobCxBLUJ8MCl9fXdoaWxlKDApO2lmKChhW2w+PjBdJjEpPT0wKXt5PXB9ZWxzZXt5PWNbcT4+Ml18MH16PXkrenwwfUE9Y1t4KzEyPj4yXXwwO2lmKChBfDApPT0oY1t4KzE2Pj4yXXwwKSl7QT1vY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDB9ZWxzZXtBPWNbQT4+Ml18MH14PSh6fDApPT0oeXwwKTtkb3tpZih4KXtCPShjW3Q+PjJdfDApPT0oQXwwKTtpZighQj8oY1t1Pj4yXXwwKSE9KEF8MCk6MCl7Qj1vO2s9NjI7YnJlYWt9YVt6Pj4wXT1CPzQzOjQ1O3o9eisxfDA7dz0wfWVsc2V7Qj1vO2s9NjJ9fXdoaWxlKDApO2Rve2lmKChrfDApPT02Mil7d2hpbGUoMSl7az0wO2lmKChjW0I+PjJdfDApPT0oQXwwKSl7YnJlYWt9Qj1CKzR8MDtpZigoQnwwKT09KHN8MCkpe0I9czticmVha31lbHNle2s9NjJ9fUI9Qi1nfDA7QT1CPj4yO2lmKChCfDApPjkyKXticmVhayBhfWlmKChCfDApPDg4KXthW3o+PjBdPWFbMTIwMTYrQT4+MF18MDt6PXorMXwwO3c9dysxfDA7YnJlYWt9aWYoeCl7eT16O2JyZWFrIGF9aWYoKHoteXwwKT49Myl7YnJlYWsgYX1pZigoYVt6KyAtMT4+MF18MCkhPTQ4KXticmVhayBhfWFbej4+MF09YVsxMjAxNitBPj4wXXwwO3o9eisxfDA7dz0wfX13aGlsZSgwKTt4PWNbZT4+Ml18MDtCPXgrMTJ8MDtBPWNbQj4+Ml18MDtpZigoQXwwKT09KGNbeCsxNj4+Ml18MCkpe29jW2NbKGNbeD4+Ml18MCkrNDA+PjJdJjEyN10oeCl8MDtDPXY7dj1DO2NvbnRpbnVlfWVsc2V7Y1tCPj4yXT1BKzQ7Qz12O3Y9Qztjb250aW51ZX19YVt5KzM+PjBdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfUM9Y1szMzQwXXwwO2Nbbj4+Ml09ajtpZigoWWgoeSxDLG4pfDApIT0xKXtjW2g+PjJdPTR9aj1jW2U+PjJdfDA7aWYoKGp8MCkhPTApe249Y1tqKzEyPj4yXXwwO2lmKChufDApPT0oY1tqKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtqPTA7ZT0xfWVsc2V7ZT0wfX1lbHNle2o9MDtlPTF9bj1jW2Y+PjJdfDA7ZG97aWYoKG58MCkhPTApe289Y1tuKzEyPj4yXXwwO2lmKChvfDApPT0oY1tuKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXtuPWNbbz4+Ml18MH1pZighKChufDApPT0tMSkpe2lmKGUpe2JyZWFrfWVsc2V7az05NDticmVha319ZWxzZXtjW2Y+PjJdPTA7az05MjticmVha319ZWxzZXtrPTkyfX13aGlsZSgwKTtpZigoa3wwKT09OTI/ZTowKXtrPTk0fWlmKChrfDApPT05NCl7Y1toPj4yXT1jW2g+PjJdfDJ9Y1tiPj4yXT1qO2lmKChhW2w+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWY9Y1ttPj4yXXwwO2lmKChmfDApPT0wKXtpPWQ7cmV0dXJufXZuKGYpO2k9ZDtyZXR1cm59Qz1YYSg0KXwwO2NbQz4+Ml09MjEzMDQ7d2IoQ3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gbGkoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MDtuPWk7cD1jW2Y+PjJdfDA7bz0ocHwwKT09KGV8MCk7ZG97aWYobyl7cT0oY1ttKzk2Pj4yXXwwKT09KGJ8MCk7aWYoIXE/KGNbbSsxMDA+PjJdfDApIT0oYnwwKTowKXticmVha31jW2Y+PjJdPWUrMTthW2U+PjBdPXE/NDM6NDU7Y1tnPj4yXT0wO3E9MDtpPW47cmV0dXJuIHF8MH19d2hpbGUoMCk7cT1hW2o+PjBdfDA7aWYoKHEmMSk9PTApe2o9KHEmMjU1KT4+PjF9ZWxzZXtqPWNbais0Pj4yXXwwfWlmKChqfDApIT0wJihifDApPT0oaHwwKSl7bz1jW2w+PjJdfDA7aWYoKG8ta3wwKT49MTYwKXtxPTA7aT1uO3JldHVybiBxfDB9cT1jW2c+PjJdfDA7Y1tsPj4yXT1vKzQ7Y1tvPj4yXT1xO2NbZz4+Ml09MDtxPTA7aT1uO3JldHVybiBxfDB9bD1tKzEwNHwwO2s9bTt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT09KGJ8MCkpe2JyZWFrfWs9ays0fDA7aWYoKGt8MCk9PShsfDApKXtrPWw7YnJlYWt9fWI9ay1tfDA7bT1iPj4yO2lmKChifDApPjkyKXtxPS0xO2k9bjtyZXR1cm4gcXwwfWlmKChkfDApPT0xMHwoZHwwKT09OCl7aWYoKG18MCk+PShkfDApKXtxPS0xO2k9bjtyZXR1cm4gcXwwfX1lbHNlIGlmKChkfDApPT0xNj8oYnwwKT49ODg6MCl7aWYobyl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigocC1lfDApPj0zKXtxPS0xO2k9bjtyZXR1cm4gcXwwfWlmKChhW3ArIC0xPj4wXXwwKSE9NDgpe3E9LTE7aT1uO3JldHVybiBxfDB9Y1tnPj4yXT0wO3E9YVsxMjAxNittPj4wXXwwO2NbZj4+Ml09cCsxO2FbcD4+MF09cTtxPTA7aT1uO3JldHVybiBxfDB9cT1hWzEyMDE2K20+PjBdfDA7Y1tmPj4yXT1wKzE7YVtwPj4wXT1xO2NbZz4+Ml09KGNbZz4+Ml18MCkrMTtxPTA7aT1uO3JldHVybiBxfDB9ZnVuY3Rpb24gbWkoYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aD1pO2k9aSsxNnwwO2w9aDtkPWNbZCsyOD4+Ml18MDtvPWQrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1uPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtqPWQrMTJ8MDttPWQrOHwwO289Y1ttPj4yXXwwO2lmKChjW2o+PjJdfDApLW8+PjI+Pj4wPm4+Pj4wPyhrPWNbbysobjw8Mik+PjJdfDAsKGt8MCkhPTApOjApe3VjW2NbKGNbaz4+Ml18MCkrMzI+PjJdJjMxXShrLDEyMDE2LDEyMDQyfDAsZSl8MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbD4+Ml09MTM2MDA7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzYwMCxsKX1lPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtrPWNbbT4+Ml18MDtpZigoY1tqPj4yXXwwKS1rPj4yPj4+MD5lPj4+MD8oZz1jW2srKGU8PDIpPj4yXXwwLChnfDApIT0wKTowKXthW2Y+PjBdPW9jW2NbKGNbZz4+Ml18MCkrMTY+PjJdJjEyN10oZyl8MDttY1tjWyhjW2c+PjJdfDApKzIwPj4yXSYxMjddKGIsZyk7bj1kKzR8MDtvPWNbbj4+Ml18MDtjW24+PjJdPW8rIC0xO2lmKChvfDApIT0wKXtpPWg7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTtpPWg7cmV0dXJufW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIG5pKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7aj1pO2k9aSsxNnwwO2w9ajtkPWNbZCsyOD4+Ml18MDtwPWQrNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1vPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtrPWQrMTJ8MDtuPWQrOHwwO3A9Y1tuPj4yXXwwO2lmKChjW2s+PjJdfDApLXA+PjI+Pj4wPm8+Pj4wPyhtPWNbcCsobzw8Mik+PjJdfDAsKG18MCkhPTApOjApe3VjW2NbKGNbbT4+Ml18MCkrMzI+PjJdJjMxXShtLDEyMDE2LDEyMDQ4fDAsZSl8MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbD4+Ml09MTM2MDA7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzYwMCxsKX1lPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtsPWNbbj4+Ml18MDtpZigoY1trPj4yXXwwKS1sPj4yPj4+MD5lPj4+MD8oaD1jW2wrKGU8PDIpPj4yXXwwLChofDApIT0wKTowKXthW2Y+PjBdPW9jW2NbKGNbaD4+Ml18MCkrMTI+PjJdJjEyN10oaCl8MDthW2c+PjBdPW9jW2NbKGNbaD4+Ml18MCkrMTY+PjJdJjEyN10oaCl8MDttY1tjWyhjW2g+PjJdfDApKzIwPj4yXSYxMjddKGIsaCk7bz1kKzR8MDtwPWNbbz4+Ml18MDtjW28+PjJdPXArIC0xO2lmKChwfDApIT0wKXtpPWo7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTtpPWo7cmV0dXJufXA9WGEoNCl8MDtjW3A+PjJdPTIxMzA0O3diKHB8MCwyMTM3NiwxOTYpfXA9WGEoNCl8MDtjW3A+PjJdPTIxMzA0O3diKHB8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIG9pKGIsZCxlLGYsZyxoLGosayxsLG0sbixvKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDt2YXIgcD0wLHE9MDtwPWk7aWYoYjw8MjQ+PjI0PT1oPDwyND4+MjQpe2lmKChhW2Q+PjBdfDApPT0wKXtqPS0xO2k9cDtyZXR1cm4ganwwfWFbZD4+MF09MDtqPWNbZz4+Ml18MDtjW2c+PjJdPWorMTthW2o+PjBdPTQ2O2c9YVtrPj4wXXwwO2lmKChnJjEpPT0wKXtnPShnJjI1NSk+Pj4xfWVsc2V7Zz1jW2srND4+Ml18MH1pZigoZ3wwKT09MCl7aj0wO2k9cDtyZXR1cm4ganwwfWc9Y1ttPj4yXXwwO2lmKChnLWx8MCk+PTE2MCl7aj0wO2k9cDtyZXR1cm4ganwwfWo9Y1tuPj4yXXwwO2NbbT4+Ml09Zys0O2NbZz4+Ml09ajtqPTA7aT1wO3JldHVybiBqfDB9aWYoYjw8MjQ+PjI0PT1qPDwyND4+MjQpe2g9YVtrPj4wXXwwO2lmKChoJjEpPT0wKXtoPShoJjI1NSk+Pj4xfWVsc2V7aD1jW2srND4+Ml18MH1pZigoaHwwKSE9MCl7aWYoKGFbZD4+MF18MCk9PTApe2o9LTE7aT1wO3JldHVybiBqfDB9Zz1jW20+PjJdfDA7aWYoKGctbHwwKT49MTYwKXtqPTA7aT1wO3JldHVybiBqfDB9aj1jW24+PjJdfDA7Y1ttPj4yXT1nKzQ7Y1tnPj4yXT1qO2Nbbj4+Ml09MDtqPTA7aT1wO3JldHVybiBqfDB9fWg9byszMnwwO2o9bztkb3tpZigoYVtqPj4wXXwwKT09Yjw8MjQ+PjI0KXtoPWo7YnJlYWt9aj1qKzF8MH13aGlsZSgoanwwKSE9KGh8MCkpO2I9aC1vfDA7aWYoKGJ8MCk+MzEpe2o9LTE7aT1wO3JldHVybiBqfDB9bz1hWzEyMDE2K2I+PjBdfDA7aWYoKGJ8MCk9PTIzfChifDApPT0yMil7YVtlPj4wXT04MDtqPWNbZz4+Ml18MDtjW2c+PjJdPWorMTthW2o+PjBdPW87aj0wO2k9cDtyZXR1cm4ganwwfWVsc2UgaWYoKGJ8MCk9PTI0fChifDApPT0yNSl7bj1jW2c+PjJdfDA7aWYoKG58MCkhPShmfDApPyhhW24rIC0xPj4wXSY5NXwwKSE9KGFbZT4+MF0mMTI3fDApOjApe2o9LTE7aT1wO3JldHVybiBqfDB9Y1tnPj4yXT1uKzE7YVtuPj4wXT1vO2o9MDtpPXA7cmV0dXJuIGp8MH1lbHNle2Y9byY5NTtpZigoZnwwKT09KGFbZT4+MF18MCk/KGFbZT4+MF09ZnwxMjgsKGFbZD4+MF18MCkhPTApOjApe2FbZD4+MF09MDtlPWFbaz4+MF18MDtpZigoZSYxKT09MCl7az0oZSYyNTUpPj4+MX1lbHNle2s9Y1trKzQ+PjJdfDB9aWYoKGt8MCkhPTA/KHE9Y1ttPj4yXXwwLChxLWx8MCk8MTYwKTowKXtqPWNbbj4+Ml18MDtjW20+PjJdPXErNDtjW3E+PjJdPWp9fWo9Y1tnPj4yXXwwO2NbZz4+Ml09aisxO2Fbaj4+MF09bztpZigoYnwwKT4yMSl7aj0wO2k9cDtyZXR1cm4ganwwfWNbbj4+Ml09KGNbbj4+Ml18MCkrMTtqPTA7aT1wO3JldHVybiBqfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcGkoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Zz1pO2k9aSsxNnwwO2s9ZztiPWNbYisyOD4+Ml18MDtuPWIrNHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1tPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtoPWIrMTJ8MDtsPWIrOHwwO249Y1tsPj4yXXwwO2lmKChjW2g+PjJdfDApLW4+PjI+Pj4wPm0+Pj4wPyhqPWNbbisobTw8Mik+PjJdfDAsKGp8MCkhPTApOjApe3VjW2NbKGNbaj4+Ml18MCkrNDg+PjJdJjMxXShqLDEyMDE2LDEyMDQyfDAsZCl8MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbaz4+Ml09MTM2MDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzYwOCxrKX1kPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtqPWNbbD4+Ml18MDtpZigoY1toPj4yXXwwKS1qPj4yPj4+MD5kPj4+MD8oZj1jW2orKGQ8PDIpPj4yXXwwLChmfDApIT0wKTowKXtjW2U+PjJdPW9jW2NbKGNbZj4+Ml18MCkrMTY+PjJdJjEyN10oZil8MDttY1tjWyhjW2Y+PjJdfDApKzIwPj4yXSYxMjddKGEsZik7bT1iKzR8MDtuPWNbbT4+Ml18MDtjW20+PjJdPW4rIC0xO2lmKChufDApIT0wKXtpPWc7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtpPWc7cmV0dXJufW49WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfW49WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHFpKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aD1pO2k9aSsxNnwwO2s9aDtiPWNbYisyOD4+Ml18MDtvPWIrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1uPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtqPWIrMTJ8MDttPWIrOHwwO289Y1ttPj4yXXwwO2lmKChjW2o+PjJdfDApLW8+PjI+Pj4wPm4+Pj4wPyhsPWNbbysobjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe3VjW2NbKGNbbD4+Ml18MCkrNDg+PjJdJjMxXShsLDEyMDE2LDEyMDQ4fDAsZCl8MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbaz4+Ml09MTM2MDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzYwOCxrKX1kPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtrPWNbbT4+Ml18MDtpZigoY1tqPj4yXXwwKS1rPj4yPj4+MD5kPj4+MD8oZz1jW2srKGQ8PDIpPj4yXXwwLChnfDApIT0wKTowKXtjW2U+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMTI+PjJdJjEyN10oZyl8MDtjW2Y+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMTY+PjJdJjEyN10oZyl8MDttY1tjWyhjW2c+PjJdfDApKzIwPj4yXSYxMjddKGEsZyk7bj1iKzR8MDtvPWNbbj4+Ml18MDtjW24+PjJdPW8rIC0xO2lmKChvfDApIT0wKXtpPWg7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtpPWg7cmV0dXJufW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHJpKGIsZCxlLGYsZyxoLGosayxsLG0sbixvKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDt2YXIgcD0wLHE9MDtwPWk7aWYoKGJ8MCk9PShofDApKXtpZigoYVtkPj4wXXwwKT09MCl7aj0tMTtpPXA7cmV0dXJuIGp8MH1hW2Q+PjBdPTA7aj1jW2c+PjJdfDA7Y1tnPj4yXT1qKzE7YVtqPj4wXT00NjtnPWFbaz4+MF18MDtpZigoZyYxKT09MCl7Zz0oZyYyNTUpPj4+MX1lbHNle2c9Y1trKzQ+PjJdfDB9aWYoKGd8MCk9PTApe2o9MDtpPXA7cmV0dXJuIGp8MH1nPWNbbT4+Ml18MDtpZigoZy1sfDApPj0xNjApe2o9MDtpPXA7cmV0dXJuIGp8MH1qPWNbbj4+Ml18MDtjW20+PjJdPWcrNDtjW2c+PjJdPWo7aj0wO2k9cDtyZXR1cm4ganwwfWlmKChifDApPT0oanwwKSl7aD1hW2s+PjBdfDA7aWYoKGgmMSk9PTApe2g9KGgmMjU1KT4+PjF9ZWxzZXtoPWNbays0Pj4yXXwwfWlmKChofDApIT0wKXtpZigoYVtkPj4wXXwwKT09MCl7aj0tMTtpPXA7cmV0dXJuIGp8MH1nPWNbbT4+Ml18MDtpZigoZy1sfDApPj0xNjApe2o9MDtpPXA7cmV0dXJuIGp8MH1qPWNbbj4+Ml18MDtjW20+PjJdPWcrNDtjW2c+PjJdPWo7Y1tuPj4yXT0wO2o9MDtpPXA7cmV0dXJuIGp8MH19aD1vKzEyOHwwO2o9bztkb3tpZigoY1tqPj4yXXwwKT09KGJ8MCkpe2g9ajticmVha31qPWorNHwwfXdoaWxlKChqfDApIT0oaHwwKSk7Yj1oLW98MDtoPWI+PjI7aWYoKGJ8MCk+MTI0KXtqPS0xO2k9cDtyZXR1cm4ganwwfW89YVsxMjAxNitoPj4wXXwwO2lmKChofDApPT0yNHwoaHwwKT09MjUpe249Y1tnPj4yXXwwO2lmKChufDApIT0oZnwwKT8oYVtuKyAtMT4+MF0mOTV8MCkhPShhW2U+PjBdJjEyN3wwKTowKXtqPS0xO2k9cDtyZXR1cm4ganwwfWNbZz4+Ml09bisxO2Fbbj4+MF09bztqPTA7aT1wO3JldHVybiBqfDB9ZWxzZSBpZighKChofDApPT0yM3woaHwwKT09MjIpKXtmPW8mOTU7aWYoKGZ8MCk9PShhW2U+PjBdfDApPyhhW2U+PjBdPWZ8MTI4LChhW2Q+PjBdfDApIT0wKTowKXthW2Q+PjBdPTA7ZT1hW2s+PjBdfDA7aWYoKGUmMSk9PTApe2s9KGUmMjU1KT4+PjF9ZWxzZXtrPWNbays0Pj4yXXwwfWlmKChrfDApIT0wPyhxPWNbbT4+Ml18MCwocS1sfDApPDE2MCk6MCl7aj1jW24+PjJdfDA7Y1ttPj4yXT1xKzQ7Y1txPj4yXT1qfX19ZWxzZXthW2U+PjBdPTgwfWo9Y1tnPj4yXXwwO2NbZz4+Ml09aisxO2Fbaj4+MF09bztpZigoYnwwKT44NCl7aj0wO2k9cDtyZXR1cm4ganwwfWNbbj4+Ml09KGNbbj4+Ml18MCkrMTtqPTA7aT1wO3JldHVybiBqfDB9ZnVuY3Rpb24gc2koYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gdGkoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHVpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aj1pO2k9aSszMnwwO209ajtuPWorMjR8MDtrPWorMTJ8MDtpZigoY1tmKzQ+PjJdJjF8MCk9PTApe2w9Y1soY1tkPj4yXXwwKSsyND4+Ml18MDtjW24+PjJdPWNbZT4+Ml07bz1oJjE7Y1ttKzA+PjJdPWNbbiswPj4yXTt3Y1tsJjYzXShiLGQsbSxmLGcsbyk7aT1qO3JldHVybn1kPWNbZisyOD4+Ml18MDtvPWQrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbT4+Ml09MTM2MDA7Y1ttKzQ+PjJdPTIwODtjW20rOD4+Ml09MDtjZygxMzYwMCxtKX1mPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDttPWNbZCs4Pj4yXXwwO2lmKChjW2QrMTI+PjJdfDApLW0+PjI+Pj4wPmY+Pj4wPyhsPWNbbSsoZjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2c9ZCs0fDA7bz1jW2c+PjJdfDA7Y1tnPj4yXT1vKyAtMTtpZigob3wwKT09MCl7bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpfW09Y1tsPj4yXXwwO2lmKGgpe21jW2NbbSsyND4+Ml0mMTI3XShrLGwpfWVsc2V7bWNbY1ttKzI4Pj4yXSYxMjddKGssbCl9bj1hW2s+PjBdfDA7aWYoKG4mMSk9PTApe2g9aysxfDA7ZD1oO2w9ays4fDB9ZWxzZXtsPWsrOHwwO2Q9Y1tsPj4yXXwwO2g9aysxfDB9bT1rKzR8MDt3aGlsZSgxKXtmPShuJjEpPT0wO2lmKGYpe2c9aDtuPShuJjI1NSk+Pj4xfWVsc2V7Zz1jW2w+PjJdfDA7bj1jW20+PjJdfDB9aWYoKGR8MCk9PShnK258MCkpe2JyZWFrfW89YVtkPj4wXXwwO249Y1tlPj4yXXwwO2Rve2lmKChufDApIT0wKXtmPW4rMjR8MDtnPWNbZj4+Ml18MDtpZigoZ3wwKSE9KGNbbisyOD4+Ml18MCkpe2NbZj4+Ml09ZysxO2FbZz4+MF09bzticmVha31pZigoeGNbY1soY1tuPj4yXXwwKSs1Mj4+Ml0mNjNdKG4sbyYyNTUpfDApPT0tMSl7Y1tlPj4yXT0wfX19d2hpbGUoMCk7bj1hW2s+PjBdfDA7ZD1kKzF8MH1jW2I+PjJdPWNbZT4+Ml07aWYoZil7aT1qO3JldHVybn1rPWNbays4Pj4yXXwwO2lmKChrfDApPT0wKXtpPWo7cmV0dXJufXZuKGspO2k9ajtyZXR1cm59bz1YYSg0KXwwO2Nbbz4+Ml09MjEzMDQ7d2Iob3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gdmkoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtkPWk7aT1pKzY0fDA7cj1kO3E9ZCsxNnwwO249ZCsyNHwwO209ZCszNnwwO2s9ZCs4fDA7bD1kKzR8MDtvPWQrMTJ8MDthW3ErMD4+MF09YVsxMjI2ND4+MF18MDthW3ErMT4+MF09YVsxMjI2NT4+MF18MDthW3ErMj4+MF09YVsxMjI2Nj4+MF18MDthW3ErMz4+MF09YVsxMjI2Nz4+MF18MDthW3ErND4+MF09YVsxMjI2OD4+MF18MDthW3ErNT4+MF09YVsxMjI2OT4+MF18MDt0PXErMXwwO3A9Zis0fDA7cz1jW3A+PjJdfDA7aWYoKHMmMjA0OHwwKSE9MCl7YVt0Pj4wXT00Mzt0PXErMnwwfWlmKChzJjUxMnwwKSE9MCl7YVt0Pj4wXT0zNTt0PXQrMXwwfWFbdD4+MF09MTA4O3Q9dCsxfDA7dT1zJjc0O2Rve2lmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZSBpZigodXwwKT09OCl7aWYoKHMmMTYzODR8MCk9PTApe2FbdD4+MF09MTIwO2JyZWFrfWVsc2V7YVt0Pj4wXT04ODticmVha319ZWxzZXthW3Q+PjBdPTEwMH19d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO2Nbcj4+Ml09aDtxPXdpKG4sMTIsdSxxLHIpfDA7aD1uK3F8MDtwPWNbcD4+Ml0mMTc2O2Rve2lmKChwfDApPT0zMil7cD1ofWVsc2UgaWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh1PWFbbisxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtqPTIxfX1lbHNle2o9MjF9fXdoaWxlKDApO2lmKChqfDApPT0yMSl7cD1ufWo9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09ajtqPWorNHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTt4aShuLHAsaCxtLGssbCxvKTtqPWNbbz4+Ml18MDt0PWorNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1tsPj4yXXwwO1djKGIscyxtLHQsdSxmLGcpO2k9ZDtyZXR1cm59bGNbY1soY1tqPj4yXXwwKSs4Pj4yXSYyNTVdKGopO3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1tsPj4yXXwwO1djKGIscyxtLHQsdSxmLGcpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gd2koYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MDtnPWk7aT1pKzE2fDA7aD1nO2NbaD4+Ml09ZjtkPWliKGR8MCl8MDtlPVFiKGF8MCxifDAsZXwwLGh8MCl8MDtpZigoZHwwKT09MCl7aT1nO3JldHVybiBlfDB9aWIoZHwwKXwwO2k9ZztyZXR1cm4gZXwwfWZ1bmN0aW9uIHhpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7az1pO2k9aSszMnwwO3A9aztsPWsrMTJ8MDtuPWNbaj4+Ml18MDtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbcD4+Ml09MTM0NTY7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ1NixwKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbbis4Pj4yXXwwO2lmKCEoKGNbbisxMj4+Ml18MCktcz4+Mj4+PjA+cj4+PjApKXt2PVhhKDQpfDA7Y1t2Pj4yXT0yMTMwNDt3Yih2fDAsMjEzNzYsMTk2KX1uPWNbcysocjw8Mik+PjJdfDA7aWYoKG58MCk9PTApe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfWo9Y1tqPj4yXXwwO2lmKCEoKGNbMzQwMF18MCk9PS0xKSl7Y1twPj4yXT0xMzYwMDtjW3ArND4+Ml09MjA4O2NbcCs4Pj4yXT0wO2NnKDEzNjAwLHApfXA9KGNbMTM2MDQ+PjJdfDApKyAtMXwwO3I9Y1tqKzg+PjJdfDA7aWYoISgoY1tqKzEyPj4yXXwwKS1yPj4yPj4+MD5wPj4+MCkpe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfWo9Y1tyKyhwPDwyKT4+Ml18MDtpZigoanwwKT09MCl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9bWNbY1soY1tqPj4yXXwwKSsyMD4+Ml0mMTI3XShsLGopO3A9YVtsPj4wXXwwO2lmKChwJjEpPT0wKXtwPShwJjI1NSk+Pj4xfWVsc2V7cD1jW2wrND4+Ml18MH1pZigocHwwKSE9MCl7Y1toPj4yXT1mO3A9YVtiPj4wXXwwO2lmKHA8PDI0Pj4yND09NDN8cDw8MjQ+PjI0PT00NSl7dj14Y1tjWyhjW24+PjJdfDApKzI4Pj4yXSY2M10obixwKXwwO3A9Y1toPj4yXXwwO2NbaD4+Ml09cCsxO2FbcD4+MF09djtwPWIrMXwwfWVsc2V7cD1ifWlmKCgoZS1wfDApPjE/KGFbcD4+MF18MCk9PTQ4OjApPyhxPXArMXwwLHY9YVtxPj4wXXwwLHY8PDI0Pj4yND09ODh8djw8MjQ+PjI0PT0xMjApOjApe3Y9eGNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mNjNdKG4sNDgpfDA7dT1jW2g+PjJdfDA7Y1toPj4yXT11KzE7YVt1Pj4wXT12O3U9eGNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mNjNdKG4sYVtxPj4wXXwwKXwwO3Y9Y1toPj4yXXwwO2NbaD4+Ml09disxO2Fbdj4+MF09dTtwPXArMnwwfWlmKChwfDApIT0oZXwwKT8obz1lKyAtMXwwLG8+Pj4wPnA+Pj4wKTowKXtxPXA7ZG97dj1hW3E+PjBdfDA7YVtxPj4wXT1hW28+PjBdfDA7YVtvPj4wXT12O3E9cSsxfDA7bz1vKyAtMXwwfXdoaWxlKHE+Pj4wPG8+Pj4wKX1qPW9jW2NbKGNbaj4+Ml18MCkrMTY+PjJdJjEyN10oail8MDtpZihwPj4+MDxlPj4+MCl7cT1sKzF8MDtzPWwrNHwwO289bCs4fDA7dT0wO3Q9MDtyPXA7d2hpbGUoMSl7dj1hWygoYVtsPj4wXSYxKT09MD9xOmNbbz4+Ml18MCkrdD4+MF18MDtpZih2PDwyND4+MjQhPTAmKHV8MCk9PSh2PDwyND4+MjR8MCkpe3U9Y1toPj4yXXwwO2NbaD4+Ml09dSsxO2FbdT4+MF09ajt1PWFbbD4+MF18MDtpZigodSYxKT09MCl7dj0odSYyNTUpPj4+MX1lbHNle3Y9Y1tzPj4yXXwwfXU9MDt0PSh0Pj4+MDwodisgLTF8MCk+Pj4wJjEpK3R8MH13PXhjW2NbKGNbbj4+Ml18MCkrMjg+PjJdJjYzXShuLGFbcj4+MF18MCl8MDt2PWNbaD4+Ml18MDtjW2g+PjJdPXYrMTthW3Y+PjBdPXc7cj1yKzF8MDtpZighKHI+Pj4wPGU+Pj4wKSl7YnJlYWt9ZWxzZXt1PXUrMXwwfX19bz1mKyhwLWIpfDA7bj1jW2g+PjJdfDA7aWYoKG98MCkhPShufDApPyhtPW4rIC0xfDAsbT4+PjA+bz4+PjApOjApe2Rve3c9YVtvPj4wXXwwO2Fbbz4+MF09YVttPj4wXXwwO2FbbT4+MF09dztvPW8rMXwwO209bSsgLTF8MH13aGlsZShvPj4+MDxtPj4+MCl9fWVsc2V7dWNbY1soY1tuPj4yXXwwKSszMj4+Ml0mMzFdKG4sYixlLGYpfDA7Y1toPj4yXT1mKyhlLWIpfWlmKChkfDApPT0oZXwwKSl7Yj1jW2g+PjJdfDB9ZWxzZXtiPWYrKGQtYil8MH1jW2c+PjJdPWI7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59bD1jW2wrOD4+Ml18MDtpZigobHwwKT09MCl7aT1rO3JldHVybn12bihsKTtpPWs7cmV0dXJufWZ1bmN0aW9uIHlpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2Q9aTtpPWkrOTZ8MDtuPWQrOHwwO3M9ZDtvPWQrNjR8MDtrPWQrNjB8MDttPWQrNTZ8MDtwPWQrNTJ8MDt1PXM7Y1t1Pj4yXT0zNztjW3UrND4+Ml09MDt1PXMrMXwwO3E9Zis0fDA7cj1jW3E+PjJdfDA7aWYoKHImMjA0OHwwKSE9MCl7YVt1Pj4wXT00Mzt1PXMrMnwwfWlmKChyJjUxMnwwKSE9MCl7YVt1Pj4wXT0zNTt1PXUrMXwwfXQ9dSsyfDA7YVt1Pj4wXT0xMDg7YVt1KzE+PjBdPTEwODt1PXImNzQ7ZG97aWYoKHV8MCk9PTY0KXthW3Q+PjBdPTExMX1lbHNlIGlmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNle2FbdD4+MF09MTAwfX13aGlsZSgwKTtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dT1jWzMzNDBdfDA7dD1uO2NbdD4+Ml09aDtjW3QrND4+Ml09ajtqPXdpKG8sMjIsdSxzLG4pfDA7aD1vK2p8MDtxPWNbcT4+Ml0mMTc2O2Rve2lmKChxfDApPT0zMil7cT1ofWVsc2UgaWYoKHF8MCk9PTE2KXtxPWFbbz4+MF18MDtpZihxPDwyND4+MjQ9PTQzfHE8PDI0Pj4yND09NDUpe3E9bysxfDA7YnJlYWt9aWYoKGp8MCk+MSZxPDwyND4+MjQ9PTQ4Pyh1PWFbbysxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3E9bysyfDB9ZWxzZXtsPTIxfX1lbHNle2w9MjF9fXdoaWxlKDApO2lmKChsfDApPT0yMSl7cT1vfWw9Y1tmKzI4Pj4yXXwwO2NbcD4+Ml09bDtsPWwrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTt4aShvLHEsaCxuLGssbSxwKTtsPWNbcD4+Ml18MDt0PWwrNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1ttPj4yXXwwO1djKGIscyxuLHQsdSxmLGcpO2k9ZDtyZXR1cm59bGNbY1soY1tsPj4yXXwwKSs4Pj4yXSYyNTVdKGwpO3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1ttPj4yXXwwO1djKGIscyxuLHQsdSxmLGcpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gemkoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDttPWk7aT1pKzY0fDA7cj1tO3E9bSsxNnwwO249bSsyNHwwO2s9bSszNnwwO2Q9bSs4fDA7aj1tKzR8MDtvPW0rMTJ8MDthW3ErMD4+MF09YVsxMjI2ND4+MF18MDthW3ErMT4+MF09YVsxMjI2NT4+MF18MDthW3ErMj4+MF09YVsxMjI2Nj4+MF18MDthW3ErMz4+MF09YVsxMjI2Nz4+MF18MDthW3ErND4+MF09YVsxMjI2OD4+MF18MDthW3ErNT4+MF09YVsxMjI2OT4+MF18MDt0PXErMXwwO3A9Zis0fDA7cz1jW3A+PjJdfDA7aWYoKHMmMjA0OHwwKSE9MCl7YVt0Pj4wXT00Mzt0PXErMnwwfWlmKChzJjUxMnwwKSE9MCl7YVt0Pj4wXT0zNTt0PXQrMXwwfWFbdD4+MF09MTA4O3Q9dCsxfDA7dT1zJjc0O2Rve2lmKCh1fDApPT04KXtpZigocyYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTExN319d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO2Nbcj4+Ml09aDtxPXdpKG4sMTIsdSxxLHIpfDA7aD1uK3F8MDtwPWNbcD4+Ml0mMTc2O2Rve2lmKChwfDApPT0zMil7cD1ofWVsc2UgaWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh1PWFbbisxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtsPTIxfX1lbHNle2w9MjF9fXdoaWxlKDApO2lmKChsfDApPT0yMSl7cD1ufWw9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09bDtsPWwrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTt4aShuLHAsaCxrLGQsaixvKTtsPWNbbz4+Ml18MDt0PWwrNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1tkPj4yXXwwO3U9Y1tqPj4yXXwwO1djKGIscyxrLHQsdSxmLGcpO2k9bTtyZXR1cm59bGNbY1soY1tsPj4yXXwwKSs4Pj4yXSYyNTVdKGwpO3M9Y1tlPj4yXXwwO3Q9Y1tkPj4yXXwwO3U9Y1tqPj4yXXwwO1djKGIscyxrLHQsdSxmLGcpO2k9bTtyZXR1cm59ZnVuY3Rpb24gQWkoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7ZD1pO2k9aSs5NnwwO249ZCs4fDA7cz1kO289ZCs2NHwwO2s9ZCs2MHwwO209ZCs1NnwwO3A9ZCs1MnwwO3U9cztjW3U+PjJdPTM3O2NbdSs0Pj4yXT0wO3U9cysxfDA7cT1mKzR8MDtyPWNbcT4+Ml18MDtpZigociYyMDQ4fDApIT0wKXthW3U+PjBdPTQzO3U9cysyfDB9aWYoKHImNTEyfDApIT0wKXthW3U+PjBdPTM1O3U9dSsxfDB9dD11KzJ8MDthW3U+PjBdPTEwODthW3UrMT4+MF09MTA4O3U9ciY3NDtkb3tpZigodXwwKT09NjQpe2FbdD4+MF09MTExfWVsc2UgaWYoKHV8MCk9PTgpe2lmKChyJjE2Mzg0fDApPT0wKXthW3Q+PjBdPTEyMDticmVha31lbHNle2FbdD4+MF09ODg7YnJlYWt9fWVsc2V7YVt0Pj4wXT0xMTd9fXdoaWxlKDApO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX11PWNbMzM0MF18MDt0PW47Y1t0Pj4yXT1oO2NbdCs0Pj4yXT1qO2o9d2kobywyMyx1LHMsbil8MDtoPW8ranwwO3E9Y1txPj4yXSYxNzY7ZG97aWYoKHF8MCk9PTMyKXtxPWh9ZWxzZSBpZigocXwwKT09MTYpe3E9YVtvPj4wXXwwO2lmKHE8PDI0Pj4yND09NDN8cTw8MjQ+PjI0PT00NSl7cT1vKzF8MDticmVha31pZigoanwwKT4xJnE8PDI0Pj4yND09NDg/KHU9YVtvKzE+PjBdfDAsdTw8MjQ+PjI0PT04OHx1PDwyND4+MjQ9PTEyMCk6MCl7cT1vKzJ8MH1lbHNle2w9MjF9fWVsc2V7bD0yMX19d2hpbGUoMCk7aWYoKGx8MCk9PTIxKXtxPW99bD1jW2YrMjg+PjJdfDA7Y1twPj4yXT1sO2w9bCs0fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO3hpKG8scSxoLG4sayxtLHApO2w9Y1twPj4yXXwwO3Q9bCs0fDA7dT1jW3Q+PjJdfDA7Y1t0Pj4yXT11KyAtMTtpZigodXwwKSE9MCl7cz1jW2U+PjJdfDA7dD1jW2s+PjJdfDA7dT1jW20+PjJdfDA7V2MoYixzLG4sdCx1LGYsZyk7aT1kO3JldHVybn1sY1tjWyhjW2w+PjJdfDApKzg+PjJdJjI1NV0obCk7cz1jW2U+PjJdfDA7dD1jW2s+PjJdfDA7dT1jW20+PjJdfDA7V2MoYixzLG4sdCx1LGYsZyk7aT1kO3JldHVybn1mdW5jdGlvbiBCaShiLGQsZSxmLGcsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aj0rajt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDtkPWk7aT1pKzEyOHwwO3A9ZDt1PWQrNjR8MDtyPWQrOTJ8MDt0PWQrODB8MDtsPWQrNzZ8MDtuPWQrNzJ8MDtvPWQrODR8MDttPWQrODh8MDt2PXU7Y1t2Pj4yXT0zNztjW3YrND4+Ml09MDt2PXUrMXwwO3M9Zis0fDA7dz1jW3M+PjJdfDA7aWYoKHcmMjA0OHwwKSE9MCl7YVt2Pj4wXT00Mzt2PXUrMnwwfWlmKCh3JjEwMjR8MCkhPTApe2Fbdj4+MF09MzU7dj12KzF8MH14PXcmMjYwO3k9dz4+PjE0O2Rve2lmKCh4fDApPT0yNjApe2lmKCh5JjF8MCk9PTApe2Fbdj4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt2Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt2Pj4wXT00Njt3PXYrMnwwO2FbdisxPj4wXT00MjtpZigoeHwwKT09NCl7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDI7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MDt2PTE7YnJlYWt9fWVsc2UgaWYoKHh8MCk9PTI1Nil7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDE7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT02OTt2PTE7YnJlYWt9fWVsc2V7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDM7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MTt2PTE7YnJlYWt9fX19d2hpbGUoMCk7Y1t0Pj4yXT1yO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtpZih2KXtjW3A+PjJdPWNbZis4Pj4yXTt5PXArNHwwO2hbaz4+M109ajtjW3k+PjJdPWNbaz4+Ml07Y1t5KzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9ZWxzZXtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWlmKCh3fDApPjI5KXt3PShhWzEzMzY4XXwwKT09MDtpZih2KXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2NbcD4+Ml09Y1tmKzg+PjJdO3k9cCs0fDA7aFtrPj4zXT1qO2NbeT4+Ml09Y1trPj4yXTtjW3krND4+Ml09Y1trKzQ+PjJdO3c9Q2kodCx3LHUscCl8MH1lbHNle2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eT1wKzR8MDtoW2s+PjNdPWo7Y1t5Pj4yXT1jW2s+PjJdO2NbeSs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0xNil7cz1hW3Y+PjBdfDA7aWYoczw8MjQ+PjI0PT00M3xzPDwyND4+MjQ9PTQ1KXtzPXYrMXwwO2JyZWFrfWlmKCh3fDApPjEmczw8MjQ+PjI0PT00OD8oeT1hW3YrMT4+MF18MCx5PDwyND4+MjQ9PTg4fHk8PDI0Pj4yND09MTIwKTowKXtzPXYrMnwwfWVsc2V7cT00OH19ZWxzZSBpZigoc3wwKT09MzIpe3M9dX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwxKXwwO2lmKChwfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXg9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09eDt4PXgrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtEaShyLHMsdSxwLGwsbixvKTtvPWNbbz4+Ml18MDt4PW8rNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1XYyhtLGNbZT4+Ml18MCxwLGNbbD4+Ml18MCxjW24+PjJdfDAsZixnKTt5PWNbbT4+Ml18MDtjW2U+PjJdPXk7Y1tiPj4yXT15O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1kO3JldHVybn12bih0KTtpPWQ7cmV0dXJufWZ1bmN0aW9uIENpKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWY7Y1tnPj4yXT1lO2I9aWIoYnwwKXwwO2Q9SWIoYXwwLGR8MCxnfDApfDA7aWYoKGJ8MCk9PTApe2k9ZjtyZXR1cm4gZHwwfWliKGJ8MCl8MDtpPWY7cmV0dXJuIGR8MH1mdW5jdGlvbiBEaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO2s9aTtpPWkrMzJ8MDtvPWs7bD1rKzEyfDA7bT1jW2o+PjJdfDA7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW28+PjJdPTEzNDU2O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NTYsbyl9dD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7cj1jW20rOD4+Ml18MDtpZighKChjW20rMTI+PjJdfDApLXI+PjI+Pj4wPnQ+Pj4wKSl7eT1YYSg0KXwwO2NbeT4+Ml09MjEzMDQ7d2IoeXwwLDIxMzc2LDE5Nil9bT1jW3IrKHQ8PDIpPj4yXXwwO2lmKChtfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbaj4+Ml18MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2Nbbz4+Ml09MTM2MDA7Y1tvKzQ+PjJdPTIwODtjW28rOD4+Ml09MDtjZygxMzYwMCxvKX1vPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtyPWNbais4Pj4yXXwwO2lmKCEoKGNbaisxMj4+Ml18MCktcj4+Mj4+PjA+bz4+PjApKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1vPWNbcisobzw8Mik+PjJdfDA7aWYoKG98MCk9PTApe3k9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfW1jW2NbKGNbbz4+Ml18MCkrMjA+PjJdJjEyN10obCxvKTtjW2g+PjJdPWY7aj1hW2I+PjBdfDA7aWYoajw8MjQ+PjI0PT00M3xqPDwyND4+MjQ9PTQ1KXt5PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGopfDA7dD1jW2g+PjJdfDA7Y1toPj4yXT10KzE7YVt0Pj4wXT15O3Q9YisxfDB9ZWxzZXt0PWJ9aj1lO2E6ZG97aWYoKChqLXR8MCk+MT8oYVt0Pj4wXXwwKT09NDg6MCk/KHA9dCsxfDAseT1hW3A+PjBdfDAseTw8MjQ+PjI0PT04OHx5PDwyND4+MjQ9PTEyMCk6MCl7eT14Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSY2M10obSw0OCl8MDt4PWNbaD4+Ml18MDtjW2g+PjJdPXgrMTthW3g+PjBdPXk7dD10KzJ8MDt4PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGFbcD4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrMTthW3k+PjBdPXg7aWYodD4+PjA8ZT4+PjApe3I9dDt3aGlsZSgxKXtwPWFbcj4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9eT1wPDwyND4+MjQ7aWYoISgoeSsgLTQ4fDApPj4+MDwxMCk/ISgoKHl8MzIpKyAtOTd8MCk+Pj4wPDYpOjApe3A9dDticmVhayBhfXI9cisxfDA7aWYoIShyPj4+MDxlPj4+MCkpe3A9dDticmVha319fWVsc2V7cD10O3I9dH19ZWxzZXtzPTE1fX13aGlsZSgwKTtiOmRve2lmKChzfDApPT0xNSl7aWYodD4+PjA8ZT4+PjApe3I9dDt3aGlsZSgxKXtwPWFbcj4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cz1yKzF8MDtpZighKCgocDw8MjQ+PjI0KSsgLTQ4fDApPj4+MDwxMCkpe3A9dDticmVhayBifWlmKHM+Pj4wPGU+Pj4wKXtyPXN9ZWxzZXtwPXQ7cj1zO2JyZWFrfX19ZWxzZXtwPXQ7cj10fX19d2hpbGUoMCk7cz1hW2w+PjBdfDA7aWYoKHMmMSk9PTApe3M9KHMmMjU1KT4+PjF9ZWxzZXtzPWNbbCs0Pj4yXXwwfWlmKChzfDApIT0wKXtpZigocHwwKSE9KHJ8MCk/KHE9cisgLTF8MCxxPj4+MD5wPj4+MCk6MCl7cz1wO2Rve3k9YVtzPj4wXXwwO2Fbcz4+MF09YVtxPj4wXXwwO2FbcT4+MF09eTtzPXMrMXwwO3E9cSsgLTF8MH13aGlsZShzPj4+MDxxPj4+MCl9dT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7aWYocD4+PjA8cj4+PjApe3E9bCsxfDA7dD1sKzR8MDtzPWwrOHwwO3g9MDt3PTA7dj1wO3doaWxlKDEpe3k9YVsoKGFbbD4+MF0mMSk9PTA/cTpjW3M+PjJdfDApK3c+PjBdfDA7aWYoeTw8MjQ+PjI0PjAmKHh8MCk9PSh5PDwyND4+MjR8MCkpe3g9Y1toPj4yXXwwO2NbaD4+Ml09eCsxO2FbeD4+MF09dTt4PWFbbD4+MF18MDtpZigoeCYxKT09MCl7eT0oeCYyNTUpPj4+MX1lbHNle3k9Y1t0Pj4yXXwwfXg9MDt3PSh3Pj4+MDwoeSsgLTF8MCk+Pj4wJjEpK3d8MH16PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGFbdj4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrMTthW3k+PjBdPXo7dj12KzF8MDtpZighKHY+Pj4wPHI+Pj4wKSl7YnJlYWt9ZWxzZXt4PXgrMXwwfX19cD1mKyhwLWIpfDA7cT1jW2g+PjJdfDA7aWYoKHB8MCkhPShxfDApPyhuPXErIC0xfDAsbj4+PjA+cD4+PjApOjApe2Rve3o9YVtwPj4wXXwwO2FbcD4+MF09YVtuPj4wXXwwO2Fbbj4+MF09ejtwPXArMXwwO249bisgLTF8MH13aGlsZShwPj4+MDxuPj4+MCl9fWVsc2V7dWNbY1soY1ttPj4yXXwwKSszMj4+Ml0mMzFdKG0scCxyLGNbaD4+Ml18MCl8MDtjW2g+PjJdPShjW2g+PjJdfDApKyhyLXApfWM6ZG97aWYocj4+PjA8ZT4+PjApe3doaWxlKDEpe249YVtyPj4wXXwwO2lmKG48PDI0Pj4yND09NDYpe2JyZWFrfXk9eGNbY1soY1ttPj4yXXwwKSsyOD4+Ml0mNjNdKG0sbil8MDt6PWNbaD4+Ml18MDtjW2g+PjJdPXorMTthW3o+PjBdPXk7cj1yKzF8MDtpZighKHI+Pj4wPGU+Pj4wKSl7YnJlYWsgY319eT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7ej1jW2g+PjJdfDA7Y1toPj4yXT16KzE7YVt6Pj4wXT15O3I9cisxfDB9fXdoaWxlKDApO3VjW2NbKGNbbT4+Ml18MCkrMzI+PjJdJjMxXShtLHIsZSxjW2g+PjJdfDApfDA7bT0oY1toPj4yXXwwKSsoai1yKXwwO2NbaD4+Ml09bTtpZigoZHwwKSE9KGV8MCkpe209ZisoZC1iKXwwfWNbZz4+Ml09bTtpZigoYVtsPj4wXSYxKT09MCl7aT1rO3JldHVybn1sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWs7cmV0dXJufXZuKGwpO2k9aztyZXR1cm59ZnVuY3Rpb24gRWkoYixkLGUsZixnLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9K2o7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtkPWk7aT1pKzEyOHwwO3A9ZDt1PWQrNjR8MDtyPWQrOTJ8MDt0PWQrODB8MDtsPWQrNzZ8MDttPWQrNzJ8MDtvPWQrODR8MDtuPWQrODh8MDt4PXU7Y1t4Pj4yXT0zNztjW3grND4+Ml09MDt4PXUrMXwwO3M9Zis0fDA7dj1jW3M+PjJdfDA7aWYoKHYmMjA0OHwwKSE9MCl7YVt4Pj4wXT00Mzt4PXUrMnwwfWlmKCh2JjEwMjR8MCkhPTApe2FbeD4+MF09MzU7eD14KzF8MH13PXYmMjYwO3Y9dj4+PjE0O2Rve2lmKCh3fDApPT0yNjApe2FbeD4+MF09NzY7dz14KzF8MDtpZigodiYxfDApPT0wKXthW3c+PjBdPTk3O3Y9MDticmVha31lbHNle2Fbdz4+MF09NjU7dj0wO2JyZWFrfX1lbHNle2FbeD4+MF09NDY7YVt4KzE+PjBdPTQyO2FbeCsyPj4wXT03Njt4PXgrM3wwO2lmKCh3fDApPT0yNTYpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAxO3Y9MTticmVha31lbHNle2FbeD4+MF09Njk7dj0xO2JyZWFrfX1lbHNlIGlmKCh3fDApPT00KXtpZigodiYxfDApPT0wKXthW3g+PjBdPTEwMjt2PTE7YnJlYWt9ZWxzZXthW3g+PjBdPTcwO3Y9MTticmVha319ZWxzZXtpZigodiYxfDApPT0wKXthW3g+PjBdPTEwMzt2PTE7YnJlYWt9ZWxzZXthW3g+PjBdPTcxO3Y9MTticmVha319fX13aGlsZSgwKTtjW3Q+PjJdPXI7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2lmKHYpe2NbcD4+Ml09Y1tmKzg+PjJdO3g9cCs0fDA7aFtrPj4zXT1qO2NbeD4+Ml09Y1trPj4yXTtjW3grND4+Ml09Y1trKzQ+PjJdO3c9d2kociwzMCx3LHUscCl8MH1lbHNle2hbaz4+M109ajtjW3A+PjJdPWNbaz4+Ml07Y1twKzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9aWYoKHd8MCk+Mjkpe3c9KGFbMTMzNjhdfDApPT0wO2lmKHYpe2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eD1wKzR8MDtoW2s+PjNdPWo7Y1t4Pj4yXT1jW2s+PjJdO2NbeCs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfWVsc2V7aWYodz8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0xNil7cz1hW3Y+PjBdfDA7aWYoczw8MjQ+PjI0PT00M3xzPDwyND4+MjQ9PTQ1KXtzPXYrMXwwO2JyZWFrfWlmKCh3fDApPjEmczw8MjQ+PjI0PT00OD8oeD1hW3YrMT4+MF18MCx4PDwyND4+MjQ9PTg4fHg8PDI0Pj4yND09MTIwKTowKXtzPXYrMnwwfWVsc2V7cT00OH19ZWxzZSBpZigoc3wwKT09MzIpe3M9dX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwxKXwwO2lmKChwfDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXc9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09dzt3PXcrNHwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMTtEaShyLHMsdSxwLGwsbSxvKTtvPWNbbz4+Ml18MDt3PW8rNHwwO3g9Y1t3Pj4yXXwwO2Nbdz4+Ml09eCsgLTE7aWYoKHh8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1XYyhuLGNbZT4+Ml18MCxwLGNbbD4+Ml18MCxjW20+PjJdfDAsZixnKTt4PWNbbj4+Ml18MDtjW2U+PjJdPXg7Y1tiPj4yXT14O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1kO3JldHVybn12bih0KTtpPWQ7cmV0dXJufWZ1bmN0aW9uIEZpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtsPWk7aT1pKzgwfDA7bj1sO289bCs3MnwwO2Q9bCs1MnwwO2s9bCsxMnwwO2FbbyswPj4wXT1hWzEyMjcyPj4wXXwwO2FbbysxPj4wXT1hWzEyMjczPj4wXXwwO2FbbysyPj4wXT1hWzEyMjc0Pj4wXXwwO2FbbyszPj4wXT1hWzEyMjc1Pj4wXXwwO2Fbbys0Pj4wXT1hWzEyMjc2Pj4wXXwwO2Fbbys1Pj4wXT1hWzEyMjc3Pj4wXXwwO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1wPWNbMzM0MF18MDtjW24+PjJdPWg7bz13aShkLDIwLHAsbyxuKXwwO2g9ZCtvfDA7cD1jW2YrND4+Ml0mMTc2O2Rve2lmKChwfDApPT0xNil7cD1hW2Q+PjBdfDA7aWYocDw8MjQ+PjI0PT00M3xwPDwyND4+MjQ9PTQ1KXtwPWQrMXwwO2JyZWFrfWlmKChvfDApPjEmcDw8MjQ+PjI0PT00OD8ocT1hW2QrMT4+MF18MCxxPDwyND4+MjQ9PTg4fHE8PDI0Pj4yND09MTIwKTowKXtwPWQrMnwwfWVsc2V7bT0xMX19ZWxzZSBpZigocHwwKT09MzIpe3A9aH1lbHNle209MTF9fXdoaWxlKDApO2lmKChtfDApPT0xMSl7cD1kfW09Y1tmKzI4Pj4yXXwwO3E9bSs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ1NjtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDU2LG4pfXE9KGNbMTM0NjA+PjJdfDApKyAtMXwwO249Y1ttKzg+PjJdfDA7aWYoKGNbbSsxMj4+Ml18MCktbj4+Mj4+PjA+cT4+PjA/KGo9Y1tuKyhxPDwyKT4+Ml18MCwoanwwKSE9MCk6MCl7bj1tKzR8MDtxPWNbbj4+Ml18MDtjW24+PjJdPXErIC0xO2lmKChxfDApPT0wKXtsY1tjWyhjW20+PjJdfDApKzg+PjJdJjI1NV0obSl9dWNbY1soY1tqPj4yXXwwKSszMj4+Ml0mMzFdKGosZCxoLGspfDA7aj1rK298MDtpZigocHwwKT09KGh8MCkpe3E9ajtwPWNbZT4+Ml18MDtXYyhiLHAsayxxLGosZixnKTtpPWw7cmV0dXJufXE9aysocC1kKXwwO3A9Y1tlPj4yXXwwO1djKGIscCxrLHEsaixmLGcpO2k9bDtyZXR1cm59cT1YYSg0KXwwO2NbcT4+Ml09MjEzMDQ7d2IocXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gR2koYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gSGkoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIElpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MDtqPWk7aT1pKzMyfDA7bT1qO249aisyNHwwO2s9aisxMnwwO2lmKChjW2YrND4+Ml0mMXwwKT09MCl7az1jWyhjW2Q+PjJdfDApKzI0Pj4yXXwwO2Nbbj4+Ml09Y1tlPj4yXTtsPWgmMTtjW20rMD4+Ml09Y1tuKzA+PjJdO3djW2smNjNdKGIsZCxtLGYsZyxsKTtpPWo7cmV0dXJufW49Y1tmKzI4Pj4yXXwwO2Q9bis0fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxO2lmKCEoKGNbMzQwMl18MCk9PS0xKSl7Y1ttPj4yXT0xMzYwODtjW20rND4+Ml09MjA4O2NbbSs4Pj4yXT0wO2NnKDEzNjA4LG0pfWc9KGNbMTM2MTI+PjJdfDApKyAtMXwwO209Y1tuKzg+PjJdfDA7aWYoKGNbbisxMj4+Ml18MCktbT4+Mj4+PjA+Zz4+PjA/KGw9Y1ttKyhnPDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7Zj1uKzR8MDtkPWNbZj4+Ml18MDtjW2Y+PjJdPWQrIC0xO2lmKChkfDApPT0wKXtsY1tjWyhjW24+PjJdfDApKzg+PjJdJjI1NV0obil9bT1jW2w+PjJdfDA7aWYoaCl7bWNbY1ttKzI0Pj4yXSYxMjddKGssbCl9ZWxzZXttY1tjW20rMjg+PjJdJjEyN10oayxsKX1nPWFbaz4+MF18MDtpZigoZyYxKT09MCl7aD1rKzR8MDttPWg7bD1rKzh8MH1lbHNle2w9ays4fDA7bT1jW2w+PjJdfDA7aD1rKzR8MH13aGlsZSgxKXtmPShnJjEpPT0wO2lmKGYpe249aDtnPShnJjI1NSk+Pj4xfWVsc2V7bj1jW2w+PjJdfDA7Zz1jW2g+PjJdfDB9aWYoKG18MCk9PShuKyhnPDwyKXwwKSl7YnJlYWt9Zz1jW20+PjJdfDA7Zj1jW2U+PjJdfDA7aWYoKGZ8MCkhPTApe2Q9ZisyNHwwO249Y1tkPj4yXXwwO2lmKChufDApPT0oY1tmKzI4Pj4yXXwwKSl7Zz14Y1tjWyhjW2Y+PjJdfDApKzUyPj4yXSY2M10oZixnKXwwfWVsc2V7Y1tkPj4yXT1uKzQ7Y1tuPj4yXT1nfWlmKChnfDApPT0tMSl7Y1tlPj4yXT0wfX1nPWFbaz4+MF18MDttPW0rNHwwfWNbYj4+Ml09Y1tlPj4yXTtpZihmKXtpPWo7cmV0dXJufWs9Y1trKzg+PjJdfDA7aWYoKGt8MCk9PTApe2k9ajtyZXR1cm59dm4oayk7aT1qO3JldHVybn1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBKaShiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7bT1pO2k9aSsxMjh8MDtsPW07cj1tKzEwOHwwO249bSs5NnwwO2Q9bSs5MnwwO2o9bSs4OHwwO289bSs4NHwwO2FbciswPj4wXT1hWzEyMjY0Pj4wXXwwO2FbcisxPj4wXT1hWzEyMjY1Pj4wXXwwO2FbcisyPj4wXT1hWzEyMjY2Pj4wXXwwO2FbciszPj4wXT1hWzEyMjY3Pj4wXXwwO2Fbcis0Pj4wXT1hWzEyMjY4Pj4wXXwwO2Fbcis1Pj4wXT1hWzEyMjY5Pj4wXXwwO3M9cisxfDA7cD1mKzR8MDtxPWNbcD4+Ml18MDtpZigocSYyMDQ4fDApIT0wKXthW3M+PjBdPTQzO3M9cisyfDB9aWYoKHEmNTEyfDApIT0wKXthW3M+PjBdPTM1O3M9cysxfDB9YVtzPj4wXT0xMDg7cz1zKzF8MDt0PXEmNzQ7ZG97aWYoKHR8MCk9PTgpe2lmKChxJjE2Mzg0fDApPT0wKXthW3M+PjBdPTEyMDticmVha31lbHNle2Fbcz4+MF09ODg7YnJlYWt9fWVsc2UgaWYoKHR8MCk9PTY0KXthW3M+PjBdPTExMX1lbHNle2Fbcz4+MF09MTAwfX13aGlsZSgwKTtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cT1jWzMzNDBdfDA7Y1tsPj4yXT1oO3E9d2kobiwxMixxLHIsbCl8MDtoPW4rcXwwO3A9Y1twPj4yXSYxNzY7ZG97aWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh0PWFbbisxPj4wXXwwLHQ8PDI0Pj4yND09ODh8dDw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtrPTIxfX1lbHNlIGlmKChwfDApPT0zMil7cD1ofWVsc2V7az0yMX19d2hpbGUoMCk7aWYoKGt8MCk9PTIxKXtwPW59az1jW2YrMjg+PjJdfDA7Y1tvPj4yXT1rO2s9ays0fDA7Y1trPj4yXT0oY1trPj4yXXwwKSsxO0tpKG4scCxoLGwsZCxqLG8pO2s9Y1tvPj4yXXwwO3M9ays0fDA7dD1jW3M+PjJdfDA7Y1tzPj4yXT10KyAtMTtpZigodHwwKSE9MCl7cj1jW2U+PjJdfDA7cz1jW2Q+PjJdfDA7dD1jW2o+PjJdfDA7TGkoYixyLGwscyx0LGYsZyk7aT1tO3JldHVybn1sY1tjWyhjW2s+PjJdfDApKzg+PjJdJjI1NV0oayk7cj1jW2U+PjJdfDA7cz1jW2Q+PjJdfDA7dD1jW2o+PjJdfDA7TGkoYixyLGwscyx0LGYsZyk7aT1tO3JldHVybn1mdW5jdGlvbiBLaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtrPWk7aT1pKzMyfDA7bz1rO2w9aysxMnwwO249Y1tqPj4yXXwwO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tvPj4yXT0xMzQ0ODtjW28rND4+Ml09MjA4O2Nbbys4Pj4yXT0wO2NnKDEzNDQ4LG8pfXM9KGNbMTM0NTI+PjJdfDApKyAtMXwwO3I9Y1tuKzg+PjJdfDA7aWYoISgoY1tuKzEyPj4yXXwwKS1yPj4yPj4+MD5zPj4+MCkpe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfW49Y1tyKyhzPDwyKT4+Ml18MDtpZigobnwwKT09MCl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9aj1jW2o+PjJdfDA7aWYoISgoY1szNDAyXXwwKT09LTEpKXtjW28+PjJdPTEzNjA4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM2MDgsbyl9bz0oY1sxMzYxMj4+Ml18MCkrIC0xfDA7cj1jW2orOD4+Ml18MDtpZighKChjW2orMTI+PjJdfDApLXI+PjI+Pj4wPm8+Pj4wKSl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9aj1jW3IrKG88PDIpPj4yXXwwO2lmKChqfDApPT0wKXt2PVhhKDQpfDA7Y1t2Pj4yXT0yMTMwNDt3Yih2fDAsMjEzNzYsMTk2KX1tY1tjWyhjW2o+PjJdfDApKzIwPj4yXSYxMjddKGwsaik7bz1hW2w+PjBdfDA7aWYoKG8mMSk9PTApe289KG8mMjU1KT4+PjF9ZWxzZXtvPWNbbCs0Pj4yXXwwfWlmKChvfDApIT0wKXtjW2g+PjJdPWY7bz1hW2I+PjBdfDA7aWYobzw8MjQ+PjI0PT00M3xvPDwyND4+MjQ9PTQ1KXt2PXhjW2NbKGNbbj4+Ml18MCkrNDQ+PjJdJjYzXShuLG8pfDA7bz1jW2g+PjJdfDA7Y1toPj4yXT1vKzQ7Y1tvPj4yXT12O289YisxfDB9ZWxzZXtvPWJ9aWYoKChlLW98MCk+MT8oYVtvPj4wXXwwKT09NDg6MCk/KHE9bysxfDAsdj1hW3E+PjBdfDAsdjw8MjQ+PjI0PT04OHx2PDwyND4+MjQ9PTEyMCk6MCl7dj14Y1tjWyhjW24+PjJdfDApKzQ0Pj4yXSY2M10obiw0OCl8MDt1PWNbaD4+Ml18MDtjW2g+PjJdPXUrNDtjW3U+PjJdPXY7dT14Y1tjWyhjW24+PjJdfDApKzQ0Pj4yXSY2M10obixhW3E+PjBdfDApfDA7dj1jW2g+PjJdfDA7Y1toPj4yXT12KzQ7Y1t2Pj4yXT11O289bysyfDB9aWYoKG98MCkhPShlfDApPyhwPWUrIC0xfDAscD4+PjA+bz4+PjApOjApe3E9bztkb3t2PWFbcT4+MF18MDthW3E+PjBdPWFbcD4+MF18MDthW3A+PjBdPXY7cT1xKzF8MDtwPXArIC0xfDB9d2hpbGUocT4+PjA8cD4+PjApfXE9b2NbY1soY1tqPj4yXXwwKSsxNj4+Ml0mMTI3XShqKXwwO2lmKG8+Pj4wPGU+Pj4wKXtwPWwrMXwwO3M9bCs0fDA7aj1sKzh8MDt1PTA7dD0wO3I9bzt3aGlsZSgxKXt2PWFbKChhW2w+PjBdJjEpPT0wP3A6Y1tqPj4yXXwwKSt0Pj4wXXwwO2lmKHY8PDI0Pj4yNCE9MCYodXwwKT09KHY8PDI0Pj4yNHwwKSl7dT1jW2g+PjJdfDA7Y1toPj4yXT11KzQ7Y1t1Pj4yXT1xO3U9YVtsPj4wXXwwO2lmKCh1JjEpPT0wKXt2PSh1JjI1NSk+Pj4xfWVsc2V7dj1jW3M+PjJdfDB9dT0wO3Q9KHQ+Pj4wPCh2KyAtMXwwKT4+PjAmMSkrdHwwfXg9eGNbY1soY1tuPj4yXXwwKSs0ND4+Ml0mNjNdKG4sYVtyPj4wXXwwKXwwO3c9Y1toPj4yXXwwO3Y9dys0fDA7Y1toPj4yXT12O2Nbdz4+Ml09eDtyPXIrMXwwO2lmKCEocj4+PjA8ZT4+PjApKXticmVha31lbHNle3U9dSsxfDB9fX1lbHNle3Y9Y1toPj4yXXwwfWg9Zisoby1iPDwyKXwwO2lmKChofDApIT0odnwwKT8obT12KyAtNHwwLG0+Pj4wPmg+Pj4wKTowKXtkb3t4PWNbaD4+Ml18MDtjW2g+PjJdPWNbbT4+Ml07Y1ttPj4yXT14O2g9aCs0fDA7bT1tKyAtNHwwfXdoaWxlKGg+Pj4wPG0+Pj4wKX19ZWxzZXt1Y1tjWyhjW24+PjJdfDApKzQ4Pj4yXSYzMV0obixiLGUsZil8MDt2PWYrKGUtYjw8Mil8MDtjW2g+PjJdPXZ9aWYoKGR8MCkhPShlfDApKXt2PWYrKGQtYjw8Mil8MH1jW2c+PjJdPXY7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59bD1jW2wrOD4+Ml18MDtpZigobHwwKT09MCl7aT1rO3JldHVybn12bihsKTtpPWs7cmV0dXJufWZ1bmN0aW9uIExpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7az1pO2k9aSsxNnwwO2w9aztpZigoZHwwKT09MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59cT1lO249Zy1xPj4yO2g9aCsxMnwwO209Y1toPj4yXXwwO249KG18MCk+KG58MCk/bS1ufDA6MDttPWY7cT1tLXF8MDtwPXE+PjI7aWYoKHF8MCk+MD8oaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsZSxwKXwwKSE9KHB8MCk6MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59ZG97aWYoKG58MCk+MCl7aWYobj4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihuPj4+MDwyKXthW2w+PjBdPW48PDE7ZT1sKzR8MDtvPTE4fWVsc2V7ZT1uKzQmLTQ7cD1lPDwyO3A9KHB8MCk9PTA/MTpwO3doaWxlKDEpe3E9dW4ocCl8MDtpZigocXwwKSE9MCl7bz0xNzticmVha31xPWNbNTY2Nl18MDtjWzU2NjZdPXErMDtpZigocXwwKT09MCl7YnJlYWt9c2NbcSYzMV0oKX1pZigob3wwKT09MTcpe2NbbCs4Pj4yXT1xO2NbbD4+Ml09ZXwxO2NbbCs0Pj4yXT1uO2lmKChufDApPT0wKXtlPXE7YnJlYWt9ZWxzZXtlPXE7bz0xODticmVha319cT1YYSg0KXwwO2NbcT4+Ml09MjI2ODA7d2IocXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChvfDApPT0xOCl7bz1uO3A9ZTt3aGlsZSgxKXtvPW8rIC0xfDA7Y1twPj4yXT1qO2lmKChvfDApPT0wKXticmVha31lbHNle3A9cCs0fDB9fX1jW2UrKG48PDIpPj4yXT0wO2lmKChhW2w+PjBdJjEpPT0wKXtqPWwrNHwwfWVsc2V7aj1jW2wrOD4+Ml18MH1pZigoaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsaixuKXwwKT09KG58MCkpe2lmKChhW2w+PjBdJjEpPT0wKXticmVha31sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXticmVha312bihsKTticmVha31jW2I+PjJdPTA7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59Yj1jW2wrOD4+Ml18MDtpZigoYnwwKT09MCl7aT1rO3JldHVybn12bihiKTtpPWs7cmV0dXJufX13aGlsZSgwKTtxPWctbXwwO2w9cT4+MjtpZigocXwwKT4wPyhoY1tjWyhjW2Q+PjJdfDApKzQ4Pj4yXSY2M10oZCxmLGwpfDApIT0obHwwKTowKXtjW2I+PjJdPTA7aT1rO3JldHVybn1jW2g+PjJdPTA7Y1tiPj4yXT1kO2k9aztyZXR1cm59ZnVuY3Rpb24gTWkoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7bT1pO2k9aSsyMDh8MDtsPW0rOHwwO3M9bTtvPW0rMTg0fDA7ZD1tKzE4MHwwO2s9bSsxNzZ8MDtwPW0rMTcyfDA7dT1zO2NbdT4+Ml09Mzc7Y1t1KzQ+PjJdPTA7dT1zKzF8MDtxPWYrNHwwO3I9Y1txPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2FbdT4+MF09NDM7dT1zKzJ8MH1pZigociY1MTJ8MCkhPTApe2FbdT4+MF09MzU7dT11KzF8MH10PXUrMnwwO2FbdT4+MF09MTA4O2FbdSsxPj4wXT0xMDg7dT1yJjc0O2Rve2lmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTEwMH19d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO3Q9bDtjW3Q+PjJdPWg7Y1t0KzQ+PjJdPWo7aD13aShvLDIyLHUscyxsKXwwO2o9bytofDA7cT1jW3E+PjJdJjE3Njtkb3tpZigocXwwKT09MzIpe3E9an1lbHNlIGlmKChxfDApPT0xNil7cT1hW28+PjBdfDA7aWYocTw8MjQ+PjI0PT00M3xxPDwyND4+MjQ9PTQ1KXtxPW8rMXwwO2JyZWFrfWlmKChofDApPjEmcTw8MjQ+PjI0PT00OD8odT1hW28rMT4+MF18MCx1PDwyND4+MjQ9PTg4fHU8PDI0Pj4yND09MTIwKTowKXtxPW8rMnwwfWVsc2V7bj0yMX19ZWxzZXtuPTIxfX13aGlsZSgwKTtpZigobnwwKT09MjEpe3E9b31uPWNbZisyOD4+Ml18MDtjW3A+PjJdPW47bj1uKzR8MDtjW24+PjJdPShjW24+PjJdfDApKzE7S2kobyxxLGosbCxkLGsscCk7bj1jW3A+PjJdfDA7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApIT0wKXtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWxjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKTtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWZ1bmN0aW9uIE5pKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtkPWk7aT1pKzEyOHwwO2w9ZDtxPWQrMTA4fDA7bj1kKzk2fDA7az1kKzkyfDA7bT1kKzg4fDA7bz1kKzg0fDA7YVtxKzA+PjBdPWFbMTIyNjQ+PjBdfDA7YVtxKzE+PjBdPWFbMTIyNjU+PjBdfDA7YVtxKzI+PjBdPWFbMTIyNjY+PjBdfDA7YVtxKzM+PjBdPWFbMTIyNjc+PjBdfDA7YVtxKzQ+PjBdPWFbMTIyNjg+PjBdfDA7YVtxKzU+PjBdPWFbMTIyNjk+PjBdfDA7cz1xKzF8MDtwPWYrNHwwO3I9Y1twPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2Fbcz4+MF09NDM7cz1xKzJ8MH1pZigociY1MTJ8MCkhPTApe2Fbcz4+MF09MzU7cz1zKzF8MH1hW3M+PjBdPTEwODt0PXMrMXwwO3M9ciY3NDtkb3tpZigoc3wwKT09NjQpe2FbdD4+MF09MTExfWVsc2UgaWYoKHN8MCk9PTgpe2lmKChyJjE2Mzg0fDApPT0wKXthW3Q+PjBdPTEyMDticmVha31lbHNle2FbdD4+MF09ODg7YnJlYWt9fWVsc2V7YVt0Pj4wXT0xMTd9fXdoaWxlKDApO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX10PWNbMzM0MF18MDtjW2w+PjJdPWg7cT13aShuLDEyLHQscSxsKXwwO2g9bitxfDA7cD1jW3A+PjJdJjE3Njtkb3tpZigocHwwKT09MzIpe3A9aH1lbHNlIGlmKChwfDApPT0xNil7cD1hW24+PjBdfDA7aWYocDw8MjQ+PjI0PT00M3xwPDwyND4+MjQ9PTQ1KXtwPW4rMXwwO2JyZWFrfWlmKChxfDApPjEmcDw8MjQ+PjI0PT00OD8odD1hW24rMT4+MF18MCx0PDwyND4+MjQ9PTg4fHQ8PDI0Pj4yND09MTIwKTowKXtwPW4rMnwwfWVsc2V7aj0yMX19ZWxzZXtqPTIxfX13aGlsZSgwKTtpZigoanwwKT09MjEpe3A9bn1qPWNbZisyOD4+Ml18MDtjW28+PjJdPWo7aj1qKzR8MDtjW2o+PjJdPShjW2o+PjJdfDApKzE7S2kobixwLGgsbCxrLG0sbyk7aj1jW28+PjJdfDA7cz1qKzR8MDt0PWNbcz4+Ml18MDtjW3M+PjJdPXQrIC0xO2lmKCh0fDApIT0wKXtyPWNbZT4+Ml18MDtzPWNbaz4+Ml18MDt0PWNbbT4+Ml18MDtMaShiLHIsbCxzLHQsZixnKTtpPWQ7cmV0dXJufWxjW2NbKGNbaj4+Ml18MCkrOD4+Ml0mMjU1XShqKTtyPWNbZT4+Ml18MDtzPWNbaz4+Ml18MDt0PWNbbT4+Ml18MDtMaShiLHIsbCxzLHQsZixnKTtpPWQ7cmV0dXJufQoKCgpmdW5jdGlvbiBYayhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtkPWk7aT1pKzE2fDA7ZT1kO2lmKChhWzEzNDMyXXwwKSE9MCl7aD1jWzMzNTZdfDA7Y1tiPj4yXT1oO2g9aCs0fDA7Zz1jW2g+PjJdfDA7Y1toPj4yXT1nKzE7aT1kO3JldHVybn1pZigoUWEoMTM0MzIpfDApPT0wKXtoPWNbMzM1Nl18MDtjW2I+PjJdPWg7aD1oKzR8MDtnPWNbaD4+Ml18MDtjW2g+PjJdPWcrMTtpPWQ7cmV0dXJufWlmKChhWzEzNDE2XXwwKT09MD8oUWEoMTM0MTYpfDApIT0wOjApe2NbMTc3NjQ+PjJdPTA7Y1s0NDQwXT0xMzM5MjthWzE3ODk2Pj4wXT0xO2NbMTc3NzI+PjJdPTE3Nzg0O2NbMTc3Njg+PjJdPTE3Nzg0O2NbMTc3NzY+PjJdPTE3ODk2O2g9Mjg7Zj0xNzc4NHwwO2Rve2NbZj4+Ml09MDtnPWNbMTc3NzI+PjJdfDA7Zj1nKzR8MDtjWzE3NzcyPj4yXT1mO2g9aCsgLTF8MH13aGlsZSgoaHwwKSE9MCk7YVsxNzkwND4+MF09MjthWzE3OTA1Pj4wXT02NzthWzE3OTA2Pj4wXT0wO2g9Y1sxNzc2OD4+Ml18MDtpZigoZnwwKSE9KGh8MCkpe2NbMTc3NzI+PjJdPWcrKDAtKChnKygwLWgpfDApPj4+Mik8PDIpfWNbMTgyMjg+PjJdPTA7Y1s0NTU2XT0xMTg3MjtpZighKChjWzI5NzRdfDApPT0tMSkpe2NbZT4+Ml09MTE4OTY7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMTg5NixlKX1VaygxNzc2MCwxODIyNCwoY1sxMTkwMD4+Ml18MCkrIC0xfDApO2NbMTgyMjA+PjJdPTA7Y1s0NTU0XT0xMTkxMjtpZighKChjWzI5ODRdfDApPT0tMSkpe2NbZT4+Ml09MTE5MzY7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMTkzNixlKX1VaygxNzc2MCwxODIxNiwoY1sxMTk0MD4+Ml18MCkrIC0xfDApO2NbMTgyMDQ+PjJdPTA7Y1s0NTUwXT0xMzQ3MjtjWzE4MjA4Pj4yXT0wO2FbMTgyMTI+PjBdPTA7Y1sxODIwOD4+Ml09Y1soTmEoKXwwKT4+Ml07aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2U+PjJdPTEzNDU2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM0NTYsZSl9VWsoMTc3NjAsMTgyMDAsKGNbMTM0NjA+PjJdfDApKyAtMXwwKTtjWzE4MTk2Pj4yXT0wO2NbNDU0OF09MTQzOTI7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW2U+PjJdPTEzNDQ4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM0NDgsZSl9VWsoMTc3NjAsMTgxOTIsKGNbMTM0NTI+PjJdfDApKyAtMXwwKTtjWzE4MTg4Pj4yXT0wO2NbNDU0Nl09MTQ2MDg7aWYoISgoY1szMzgwXXwwKT09LTEpKXtjW2U+PjJdPTEzNTIwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1MjAsZSl9VWsoMTc3NjAsMTgxODQsKGNbMTM1MjQ+PjJdfDApKyAtMXwwKTtjWzE4MTcyPj4yXT0wO2NbNDU0Ml09MTM1NDQ7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbMTgxNzY+PjJdPWNbMzM0MF07aWYoISgoY1szMzgyXXwwKT09LTEpKXtjW2U+PjJdPTEzNTI4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1MjgsZSl9VWsoMTc3NjAsMTgxNjgsKGNbMTM1MzI+PjJdfDApKyAtMXwwKTtjWzE4MTY0Pj4yXT0wO2NbNDU0MF09MTQ4MzI7aWYoISgoY1szMzk2XXwwKT09LTEpKXtjW2U+PjJdPTEzNTg0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1ODQsZSl9VWsoMTc3NjAsMTgxNjAsKGNbMTM1ODg+PjJdfDApKyAtMXwwKTtjWzE4MTU2Pj4yXT0wO2NbNDUzOF09MTQ5NTI7aWYoISgoY1szMzk4XXwwKT09LTEpKXtjW2U+PjJdPTEzNTkyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1OTIsZSl9VWsoMTc3NjAsMTgxNTIsKGNbMTM1OTY+PjJdfDApKyAtMXwwKTtjWzE4MTMyPj4yXT0wO2NbNDUzMl09MTM2MjQ7YVsxODEzNj4+MF09NDY7YVsxODEzNz4+MF09NDQ7Y1sxODE0MD4+Ml09MDtjWzE4MTQ0Pj4yXT0wO2NbMTgxNDg+PjJdPTA7aWYoISgoY1szNDAwXXwwKT09LTEpKXtjW2U+PjJdPTEzNjAwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM2MDAsZSl9VWsoMTc3NjAsMTgxMjgsKGNbMTM2MDQ+PjJdfDApKyAtMXwwKTtjWzE4MTAwPj4yXT0wO2NbNDUyNF09MTM2NjQ7Y1sxODEwND4+Ml09NDY7Y1sxODEwOD4+Ml09NDQ7Y1sxODExMj4+Ml09MDtjWzE4MTE2Pj4yXT0wO2NbMTgxMjA+PjJdPTA7aWYoISgoY1szNDAyXXwwKT09LTEpKXtjW2U+PjJdPTEzNjA4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM2MDgsZSl9VWsoMTc3NjAsMTgwOTYsKGNbMTM2MTI+PjJdfDApKyAtMXwwKTtjWzE4MDkyPj4yXT0wO2NbNDUyMl09MTE5NTI7aWYoISgoY1szMDAyXXwwKT09LTEpKXtjW2U+PjJdPTEyMDA4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIwMDgsZSl9VWsoMTc3NjAsMTgwODgsKGNbMTIwMTI+PjJdfDApKyAtMXwwKTtjWzE4MDg0Pj4yXT0wO2NbNDUyMF09MTIwNzI7aWYoISgoY1szMDMyXXwwKT09LTEpKXtjW2U+PjJdPTEyMTI4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIxMjgsZSl9VWsoMTc3NjAsMTgwODAsKGNbMTIxMzI+PjJdfDApKyAtMXwwKTtjWzE4MDc2Pj4yXT0wO2NbNDUxOF09MTIxNDQ7aWYoISgoY1szMDQ4XXwwKT09LTEpKXtjW2U+PjJdPTEyMTkyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIxOTIsZSl9VWsoMTc3NjAsMTgwNzIsKGNbMTIxOTY+PjJdfDApKyAtMXwwKTtjWzE4MDY4Pj4yXT0wO2NbNDUxNl09MTIyMDg7aWYoISgoY1szMDY0XXwwKT09LTEpKXtjW2U+PjJdPTEyMjU2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIyNTYsZSl9VWsoMTc3NjAsMTgwNjQsKGNbMTIyNjA+PjJdfDApKyAtMXwwKTtjWzE4MDYwPj4yXT0wO2NbNDUxNF09MTI4MDA7aWYoISgoY1szMjEyXXwwKT09LTEpKXtjW2U+PjJdPTEyODQ4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI4NDgsZSl9VWsoMTc3NjAsMTgwNTYsKGNbMTI4NTI+PjJdfDApKyAtMXwwKTtjWzE4MDUyPj4yXT0wO2NbNDUxMl09MTI4NjQ7aWYoISgoY1szMjI4XXwwKT09LTEpKXtjW2U+PjJdPTEyOTEyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI5MTIsZSl9VWsoMTc3NjAsMTgwNDgsKGNbMTI5MTY+PjJdfDApKyAtMXwwKTtjWzE4MDQ0Pj4yXT0wO2NbNDUxMF09MTI5Mjg7aWYoISgoY1szMjQ0XXwwKT09LTEpKXtjW2U+PjJdPTEyOTc2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI5NzYsZSl9VWsoMTc3NjAsMTgwNDAsKGNbMTI5ODA+PjJdfDApKyAtMXwwKTtjWzE4MDM2Pj4yXT0wO2NbNDUwOF09MTI5OTI7aWYoISgoY1szMjYwXXwwKT09LTEpKXtjW2U+PjJdPTEzMDQwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMwNDAsZSl9VWsoMTc3NjAsMTgwMzIsKGNbMTMwNDQ+PjJdfDApKyAtMXwwKTtjWzE4MDI4Pj4yXT0wO2NbNDUwNl09MTMwNTY7aWYoISgoY1szMjcwXXwwKT09LTEpKXtjW2U+PjJdPTEzMDgwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMwODAsZSl9VWsoMTc3NjAsMTgwMjQsKGNbMTMwODQ+PjJdfDApKyAtMXwwKTtjWzE4MDIwPj4yXT0wO2NbNDUwNF09MTMxMzY7aWYoISgoY1szMjkwXXwwKT09LTEpKXtjW2U+PjJdPTEzMTYwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMxNjAsZSl9VWsoMTc3NjAsMTgwMTYsKGNbMTMxNjQ+PjJdfDApKyAtMXwwKTtjWzE4MDEyPj4yXT0wO2NbNDUwMl09MTMxOTI7aWYoISgoY1szMzA0XXwwKT09LTEpKXtjW2U+PjJdPTEzMjE2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMyMTYsZSl9VWsoMTc3NjAsMTgwMDgsKGNbMTMyMjA+PjJdfDApKyAtMXwwKTtjWzE4MDA0Pj4yXT0wO2NbNDUwMF09MTMyNDA7aWYoISgoY1szMzE2XXwwKT09LTEpKXtjW2U+PjJdPTEzMjY0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMyNjQsZSl9VWsoMTc3NjAsMThlMywoY1sxMzI2OD4+Ml18MCkrIC0xfDApO2NbMTc5ODg+PjJdPTA7Y1s0NDk2XT0xMjI4ODtjWzE3OTkyPj4yXT0xMjMzNjtpZighKChjWzMwOTJdfDApPT0tMSkpe2NbZT4+Ml09MTIzNjg7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMjM2OCxlKX1VaygxNzc2MCwxNzk4NCwoY1sxMjM3Mj4+Ml18MCkrIC0xfDApO2NbMTc5NzI+PjJdPTA7Y1s0NDkyXT0xMjQ0MDtjWzE3OTc2Pj4yXT0xMjQ4ODtpZighKChjWzMxMzBdfDApPT0tMSkpe2NbZT4+Ml09MTI1MjA7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMjUyMCxlKX1VaygxNzc2MCwxNzk2OCwoY1sxMjUyND4+Ml18MCkrIC0xfDApO2NbMTc5NTY+PjJdPTA7Y1s0NDg4XT0xNDMyODtkb3tpZigoYVsxMzM2OF18MCk9PTApe2lmKChRYSgxMzM2OCl8MCk9PTApe2JyZWFrfWNbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX19d2hpbGUoMCk7Y1sxNzk2MD4+Ml09Y1szMzQwXTtjWzQ0ODhdPTEyNzM2O2lmKCEoKGNbMzE4OF18MCk9PS0xKSl7Y1tlPj4yXT0xMjc1MjtjW2UrND4+Ml09MjA4O2NbZSs4Pj4yXT0wO2NnKDEyNzUyLGUpfVVrKDE3NzYwLDE3OTUyLChjWzEyNzU2Pj4yXXwwKSsgLTF8MCk7Y1sxNzk0MD4+Ml09MDtjWzQ0ODRdPTE0MzI4O2Rve2lmKChhWzEzMzY4XXwwKT09MCl7aWYoKFFhKDEzMzY4KXwwKT09MCl7YnJlYWt9Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfX13aGlsZSgwKTtjWzE3OTQ0Pj4yXT1jWzMzNDBdO2NbNDQ4NF09MTI3Njg7aWYoISgoY1szMTk2XXwwKT09LTEpKXtjW2U+PjJdPTEyNzg0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI3ODQsZSl9VWsoMTc3NjAsMTc5MzYsKGNbMTI3ODg+PjJdfDApKyAtMXwwKTtjWzE3OTMyPj4yXT0wO2NbNDQ4Ml09MTMyODA7aWYoISgoY1szMzI2XXwwKT09LTEpKXtjW2U+PjJdPTEzMzA0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMzMDQsZSl9VWsoMTc3NjAsMTc5MjgsKGNbMTMzMDg+PjJdfDApKyAtMXwwKTtjWzE3OTI0Pj4yXT0wO2NbNDQ4MF09MTMzMjA7aWYoISgoY1szMzM2XXwwKT09LTEpKXtjW2U+PjJdPTEzMzQ0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMzNDQsZSl9VWsoMTc3NjAsMTc5MjAsKGNbMTMzNDg+PjJdfDApKyAtMXwwKTtjWzMzNTJdPTE3NzYwOyRhKDEzNDE2KX1oPWNbMzM1Ml18MDtjWzMzNTZdPWg7aD1oKzR8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7JGEoMTM0MzIpO2g9Y1szMzU2XXwwO2NbYj4+Ml09aDtoPWgrNHwwO2c9Y1toPj4yXXwwO2NbaD4+Ml09ZysxO2k9ZDtyZXR1cm59ZnVuY3Rpb24gWWsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2lmKCEoKGNbYj4+Ml18MCk9PS0xKSl7Y1tlPj4yXT1iO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coYixlKX1lPShjW2IrND4+Ml18MCkrIC0xfDA7Yj1jW2ErOD4+Ml18MDtpZighKChjW2ErMTI+PjJdfDApLWI+PjI+Pj4wPmU+Pj4wKSl7ZT1YYSg0KXwwO2NbZT4+Ml09MjEzMDQ7d2IoZXwwLDIxMzc2LDE5Nil9YT1jW2IrKGU8PDIpPj4yXXwwO2lmKChhfDApPT0wKXtlPVhhKDQpfDA7Y1tlPj4yXT0yMTMwNDt3YihlfDAsMjEzNzYsMTk2KX1lbHNle2k9ZDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIFprKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIF9rKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrND4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uICRrKGEpe2E9YXwwO3ZhciBiPTA7Yj1jWzMzNjBdfDA7Y1szMzYwXT1iKzE7Y1thKzQ+PjJdPWIrMTtyZXR1cm59ZnVuY3Rpb24gYWwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gYmwoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO2E9aTtpZighKGU+Pj4wPDEyOCkpe2Q9MDtpPWE7cmV0dXJuIGR8MH1kPShiWyhjWyhOYSgpfDApPj4yXXwwKSsoZTw8MSk+PjFdJmQpPDwxNj4+MTYhPTA7aT1hO3JldHVybiBkfDB9ZnVuY3Rpb24gY2woYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7aWYoKGR8MCk9PShlfDApKXtnPWQ7aT1hO3JldHVybiBnfDB9d2hpbGUoMSl7Zz1jW2Q+PjJdfDA7aWYoZz4+PjA8MTI4KXtnPWJbKGNbKE5hKCl8MCk+PjJdfDApKyhnPDwxKT4+MV18MH1lbHNle2c9MH1iW2Y+PjFdPWc7ZD1kKzR8MDtpZigoZHwwKT09KGV8MCkpe2JyZWFrfWVsc2V7Zj1mKzJ8MH19aT1hO3JldHVybiBlfDB9ZnVuY3Rpb24gZGwoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2Y9ZX1lbHNle2Rve2c9Y1tlPj4yXXwwO2lmKGc+Pj4wPDEyOD8hKChiWyhjWyhOYSgpfDApPj4yXXwwKSsoZzw8MSk+PjFdJmQpPDwxNj4+MTY9PTApOjApe2Y9ZTticmVhayBhfWU9ZSs0fDB9d2hpbGUoKGV8MCkhPShmfDApKX19d2hpbGUoMCk7aT1hO3JldHVybiBmfDB9ZnVuY3Rpb24gZWwoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2Y9ZX1lbHNle2Rve2c9Y1tlPj4yXXwwO2lmKCEoZz4+PjA8MTI4KSl7Zj1lO2JyZWFrIGF9aWYoKGJbKGNbKE5hKCl8MCk+PjJdfDApKyhnPDwxKT4+MV0mZCk8PDE2Pj4xNj09MCl7Zj1lO2JyZWFrIGF9ZT1lKzR8MH13aGlsZSgoZXwwKSE9KGZ8MCkpfX13aGlsZSgwKTtpPWE7cmV0dXJuIGZ8MH1mdW5jdGlvbiBmbChhLGIpe2E9YXwwO2I9YnwwO2E9aTtpZighKGI+Pj4wPDEyOCkpe2k9YTtyZXR1cm4gYnwwfWI9Y1soY1soWmEoKXwwKT4+Ml18MCkrKGI8PDIpPj4yXXwwO2k9YTtyZXR1cm4gYnwwfWZ1bmN0aW9uIGdsKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wO2E9aTtpZigoYnwwKT09KGR8MCkpe2U9YjtpPWE7cmV0dXJuIGV8MH1kb3tlPWNbYj4+Ml18MDtpZihlPj4+MDwxMjgpe2U9Y1soY1soWmEoKXwwKT4+Ml18MCkrKGU8PDIpPj4yXXwwfWNbYj4+Ml09ZTtiPWIrNHwwfXdoaWxlKChifDApIT0oZHwwKSk7aT1hO3JldHVybiBkfDB9ZnVuY3Rpb24gaGwoYSxiKXthPWF8MDtiPWJ8MDthPWk7aWYoIShiPj4+MDwxMjgpKXtpPWE7cmV0dXJuIGJ8MH1iPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhiPDwyKT4+Ml18MDtpPWE7cmV0dXJuIGJ8MH1mdW5jdGlvbiBpbChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MDthPWk7aWYoKGJ8MCk9PShkfDApKXtlPWI7aT1hO3JldHVybiBlfDB9ZG97ZT1jW2I+PjJdfDA7aWYoZT4+PjA8MTI4KXtlPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhlPDwyKT4+Ml18MH1jW2I+PjJdPWU7Yj1iKzR8MH13aGlsZSgoYnwwKSE9KGR8MCkpO2k9YTtyZXR1cm4gZHwwfWZ1bmN0aW9uIGpsKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGI8PDI0Pj4yNHwwfWZ1bmN0aW9uIGtsKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2I9aTtpZigoZHwwKT09KGV8MCkpe2k9YjtyZXR1cm4gZHwwfXdoaWxlKDEpe2NbZj4+Ml09YVtkPj4wXXwwO2Q9ZCsxfDA7aWYoKGR8MCk9PShlfDApKXticmVha31lbHNle2Y9Zis0fDB9fWk9YjtyZXR1cm4gZXwwfWZ1bmN0aW9uIGxsKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4oYj4+PjA8MTI4P2ImMjU1OmMpfDB9ZnVuY3Rpb24gbWwoYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7aj1kO2k9YjtyZXR1cm4ganwwfWg9KChlKyAtNCsoMC1kKXwwKT4+PjIpKzF8MDtqPWQ7d2hpbGUoMSl7az1jW2o+PjJdfDA7YVtnPj4wXT1rPj4+MDwxMjg/ayYyNTU6ZjtqPWorNHwwO2lmKChqfDApPT0oZXwwKSl7YnJlYWt9ZWxzZXtnPWcrMXwwfX1rPWQrKGg8PDIpfDA7aT1iO3JldHVybiBrfDB9ZnVuY3Rpb24gbmwoYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM0NzI7ZT1jW2IrOD4+Ml18MDtpZigoZXwwKSE9MCl7aWYoKGFbYisxMj4+MF18MCkhPTApe3ZuKGUpfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufX12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIG9sKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNDcyO2U9Y1tiKzg+PjJdfDA7aWYoKGV8MCkhPTA/KGFbYisxMj4+MF18MCkhPTA6MCl7dm4oZSl9aT1kO3JldHVybn1mdW5jdGlvbiBwbChhLGIpe2E9YXwwO2I9YnwwO2E9aTtpZighKGI8PDI0Pj4yND4tMSkpe2k9YTtyZXR1cm4gYnwwfWI9Y1soY1soWmEoKXwwKT4+Ml18MCkrKChiJjI1NSk8PDIpPj4yXSYyNTU7aT1hO3JldHVybiBifDB9ZnVuY3Rpb24gcWwoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7Zj1kO2k9YjtyZXR1cm4gZnwwfWRve2Y9YVtkPj4wXXwwO2lmKGY8PDI0Pj4yND4tMSl7Zj1jWyhjWyhaYSgpfDApPj4yXXwwKSsoZjw8MjQ+PjI0PDwyKT4+Ml0mMjU1fWFbZD4+MF09ZjtkPWQrMXwwfXdoaWxlKChkfDApIT0oZXwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gcmwoYSxiKXthPWF8MDtiPWJ8MDthPWk7aWYoIShiPDwyND4+MjQ+LTEpKXtpPWE7cmV0dXJuIGJ8MH1iPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhiPDwyND4+MjQ8PDIpPj4yXSYyNTU7aT1hO3JldHVybiBifDB9ZnVuY3Rpb24gc2woYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7Zj1kO2k9YjtyZXR1cm4gZnwwfWRve2Y9YVtkPj4wXXwwO2lmKGY8PDI0Pj4yND4tMSl7Zj1jWyhjWyhIYSgpfDApPj4yXXwwKSsoZjw8MjQ+PjI0PDwyKT4+Ml0mMjU1fWFbZD4+MF09ZjtkPWQrMXwwfXdoaWxlKChkfDApIT0oZXwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gdGwoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gYnwwfWZ1bmN0aW9uIHVsKGIsYyxkLGUpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2I9aTtpZigoY3wwKT09KGR8MCkpe2Q9Y31lbHNle3doaWxlKDEpe2FbZT4+MF09YVtjPj4wXXwwO2M9YysxfDA7aWYoKGN8MCk9PShkfDApKXticmVha31lbHNle2U9ZSsxfDB9fX1pPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB2bChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuKGI8PDI0Pj4yND4tMT9iOmMpfDB9ZnVuY3Rpb24gd2woYixjLGQsZSxmKXtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wO2I9aTtpZigoY3wwKT09KGR8MCkpe2k9YjtyZXR1cm4gY3wwfXdoaWxlKDEpe2c9YVtjPj4wXXwwO2FbZj4+MF09Zzw8MjQ+PjI0Pi0xP2c6ZTtjPWMrMXwwO2lmKChjfDApPT0oZHwwKSl7YnJlYWt9ZWxzZXtmPWYrMXwwfX1pPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB4bChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiB5bChhLGIsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2NbZj4+Ml09ZDtjW2k+PjJdPWc7cmV0dXJuIDN9ZnVuY3Rpb24gemwoYSxiLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtjW2Y+PjJdPWQ7Y1tpPj4yXT1nO3JldHVybiAzfWZ1bmN0aW9uIEFsKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Y1tmPj4yXT1kO3JldHVybiAzfWZ1bmN0aW9uIEJsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIENsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIERsKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Yj1kLWN8MDtyZXR1cm4oYj4+PjA8ZT4+PjA/YjplKXwwfWZ1bmN0aW9uIEVsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIEZsKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1NrKGEpO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEdsKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7ZD1pO2k9aSsyNzJ8MDtsPWQrMjY0fDA7bj1kKzh8MDtvPWQ7YTpkb3tpZigoZXwwKSE9KGZ8MCkpe3E9ZTt3aGlsZSgxKXtpZigoY1txPj4yXXwwKT09MCl7YnJlYWt9cT1xKzR8MDtpZigocXwwKT09KGZ8MCkpe3E9ZjticmVha319Y1trPj4yXT1oO2NbZz4+Ml09ZTtpZigoaHwwKSE9KGp8MCkpe3A9ajtiPWIrOHwwO3doaWxlKDEpe3c9cS1lPj4yO3M9aWIoY1tiPj4yXXwwKXwwO3k9Y1tnPj4yXXwwO3I9KGh8MCkhPTA7dj1yP3AtaHwwOjI1Njt1PXI/aDpuO2I6ZG97aWYoKHl8MCk9PTB8KHZ8MCk9PTApe3Q9MH1lbHNle3Q9MDtkb3t4PXc+Pj4wPj12Pj4+MDtpZighKHh8dz4+PjA+MzIpKXticmVhayBifXg9eD92Onc7dz13LXh8MDtjOmRve2lmKCh1fDApPT0wKXtBPWNbeT4+Ml18MDtpZigoQXwwKT09MCl7ej0wfWVsc2V7ej0wO3g9eTt3aGlsZSgxKXtpZihBPj4+MD4xMjcpe0E9V20obCxBKXwwO2lmKChBfDApPT0tMSl7dj0wO3Q9LTE7YnJlYWsgYn19ZWxzZXtBPTF9ej1BK3p8MDt4PXgrNHwwO0E9Y1t4Pj4yXXwwO2lmKChBfDApPT0wKXttPTMyO2JyZWFrfX19fWVsc2V7ZDpkb3tpZih4Pj4+MD4zKXt6PXU7QT14O3doaWxlKDEpe0I9Y1t5Pj4yXXwwO2lmKChCfDApPT0wKXttPTIyO2JyZWFrIGR9aWYoQj4+PjA+MTI3KXtCPVdtKHosQil8MDtpZigoQnwwKT09LTEpe3Y9MDt0PS0xO2JyZWFrIGJ9ej16K0J8MDtBPUEtQnwwfWVsc2V7YVt6Pj4wXT1CO3o9eisxfDA7QT1BKyAtMXwwfXk9eSs0fDA7aWYoIShBPj4+MD4zKSl7bT0xNjticmVha319fWVsc2V7ej11O0E9eDttPTE2fX13aGlsZSgwKTtpZigobXwwKT09MTYpe209MDtpZigoQXwwKT09MCl7QT0wfWVsc2V7bT0yMn19ZTpkb3tpZigobXwwKT09MjIpe3doaWxlKDEpe209MDtCPWNbeT4+Ml18MDtpZigoQnwwKT09MCl7bT0zMDticmVha31pZihCPj4+MD4xMjcpe0I9V20obCxCKXwwO2lmKChCfDApPT0tMSl7dj0wO3Q9LTE7YnJlYWsgYn1pZihCPj4+MD5BPj4+MCl7bT0yNjticmVha31XbSh6LGNbeT4+Ml18MCl8MDt6PXorQnwwO0E9QS1CfDB9ZWxzZXthW3o+PjBdPUI7ej16KzF8MDtBPUErIC0xfDB9aWYoKEF8MCk9PTApe0E9MDticmVhayBlfWVsc2V7eT15KzR8MDttPTIyfX1pZigobXwwKT09MjYpe3o9eC1BfDA7bT0zMjticmVhayBjfWVsc2UgaWYoKG18MCk9PTMwKXthW3o+PjBdPTA7YnJlYWt9fX13aGlsZSgwKTt6PXgtQXwwO3k9MDttPTMyfX13aGlsZSgwKTtpZigobXwwKT09MzIpe209MDtpZigoenwwKT09LTEpe3Y9MDt0PS0xO2JyZWFrIGJ9fWlmKCh1fDApPT0obnwwKSl7dT1ufWVsc2V7dj12LXp8MDt1PXUrenwwfXQ9eit0fDB9d2hpbGUoISgoeXwwKT09MHwodnwwKT09MCkpfX13aGlsZSgwKTtmOmRve2lmKCh5fDApIT0wPyEoKHZ8MCk9PTB8KHd8MCk9PTApOjApe3doaWxlKDEpe3g9V20odSxjW3k+PjJdfDApfDA7aWYoKHgrMXwwKT4+PjA8Mil7YnJlYWt9eT15KzR8MDt3PXcrIC0xfDA7dD10KzF8MDtpZigodnwwKT09KHh8MCl8KHd8MCk9PTApe2JyZWFrIGZ9ZWxzZXt2PXYteHwwO3U9dSt4fDB9fUI9KHh8MCk9PTA7dD1CP3Q6LTE7eT1CPzA6eX19d2hpbGUoMCk7aWYocil7Y1tnPj4yXT15fWlmKChzfDApIT0wKXtpYihzfDApfDB9aWYoKHR8MCk9PTApe2c9MTttPTY3O2JyZWFrfWVsc2UgaWYoKHR8MCk9PS0xKXttPTQ2O2JyZWFrfWg9KGNbaz4+Ml18MCkrdHwwO2Nbaz4+Ml09aDtpZigoaHwwKT09KGp8MCkpe209NjU7YnJlYWt9aWYoKHF8MCk9PShmfDApKXtlPWNbZz4+Ml18MDtxPWZ9ZWxzZXtlPWliKGNbYj4+Ml18MCl8MDthW28+PjBdPTA7aWYoKGV8MCkhPTApe2liKGV8MCl8MH1oPWNbaz4+Ml18MDtpZigoaHwwKT09KGp8MCkpe2c9MTttPTY3O2JyZWFrfWVsc2V7ZT0wO3E9MDtyPW99d2hpbGUoMSl7Y1trPj4yXT1oKzE7YVtoPj4wXT1lO2lmKChxfDApPT0wKXticmVha31CPXIrMXwwO2g9Y1trPj4yXXwwO2U9YVtCPj4wXXwwO3E9cSsgLTF8MDtyPUJ9ZT0oY1tnPj4yXXwwKSs0fDA7Y1tnPj4yXT1lO2c6ZG97aWYoKGV8MCk9PShmfDApKXtxPWZ9ZWxzZXtxPWU7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk9PTApe2JyZWFrIGd9cT1xKzR8MDtpZigocXwwKT09KGZ8MCkpe3E9ZjticmVha319fX13aGlsZSgwKTtoPWNbaz4+Ml18MH1pZigoZXwwKT09KGZ8MCl8KGh8MCk9PShqfDApKXticmVhayBhfX1pZigobXwwKT09NDYpe2Nbaz4+Ml09aDtoOmRve2lmKChlfDApIT0oY1tnPj4yXXwwKSl7ZG97aj1jW2U+PjJdfDA7Zj1pYihjW2I+PjJdfDApfDA7aj1XbShoLGopfDA7aWYoKGZ8MCkhPTApe2liKGZ8MCl8MH1pZigoanwwKT09LTEpe2JyZWFrIGh9aD0oY1trPj4yXXwwKStqfDA7Y1trPj4yXT1oO2U9ZSs0fDB9d2hpbGUoKGV8MCkhPShjW2c+PjJdfDApKX19d2hpbGUoMCk7Y1tnPj4yXT1lO0I9MjtpPWQ7cmV0dXJuIEJ8MH1lbHNlIGlmKChtfDApPT02NSl7ZT1jW2c+PjJdfDA7YnJlYWt9ZWxzZSBpZigobXwwKT09Njcpe2k9ZDtyZXR1cm4gZ3wwfX19ZWxzZXtjW2s+PjJdPWg7Y1tnPj4yXT1lfX13aGlsZSgwKTtCPShlfDApIT0oZnwwKSYxO2k9ZDtyZXR1cm4gQnwwfWZ1bmN0aW9uIEhsKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDtsPWk7aT1pKzEwNDB8MDtuPWwrMTZ8MDtvPWwrOHwwO209bDthOmRve2lmKChlfDApIT0oZnwwKSl7cj1lO3doaWxlKDEpe2lmKChhW3I+PjBdfDApPT0wKXticmVha31yPXIrMXwwO2lmKChyfDApPT0oZnwwKSl7cj1mO2JyZWFrfX1jW2s+PjJdPWg7Y1tnPj4yXT1lO2lmKChofDApIT0oanwwKSl7cD1qO2I9Yis4fDA7d2hpbGUoMSl7dD1kO3U9Y1t0KzQ+PjJdfDA7cT1tO2NbcT4+Ml09Y1t0Pj4yXTtjW3ErND4+Ml09dTtxPXI7dT1xLWV8MDt0PWliKGNbYj4+Ml18MCl8MDt5PWNbZz4+Ml18MDtjW28+PjJdPXk7cz0oaHwwKSE9MDt3PXM/cC1oPj4yOjI1Njt4PXM/aDpuO2I6ZG97aWYoKHl8MCk9PTB8KHd8MCk9PTApe3Y9MH1lbHNle3Y9MDt3aGlsZSgxKXt6PXU+Pj4yO0E9ej4+PjA+PXc+Pj4wO2lmKCEoQXx1Pj4+MD4xMzEpKXticmVhayBifXk9QT93Ono7dT11LXl8MDt5PVZtKHgsbyx5LGQpfDA7aWYoKHl8MCk9PS0xKXticmVha31pZigoeHwwKT09KG58MCkpe3g9bn1lbHNle3c9dy15fDA7eD14Kyh5PDwyKXwwfXY9eSt2fDA7eT1jW28+PjJdfDA7aWYoKHl8MCk9PTB8KHd8MCk9PTApe2JyZWFrIGJ9fXc9MDt5PWNbbz4+Ml18MDt2PS0xfX13aGlsZSgwKTtjOmRve2lmKCh5fDApIT0wKXtpZighKCh3fDApPT0wfCh1fDApPT0wKSl7d2hpbGUoMSl7ej1VbSh4LHksdSxkKXwwO2lmKCh6KzJ8MCk+Pj4wPDMpe2JyZWFrfXk9eSt6fDA7Y1tvPj4yXT15O3c9dysgLTF8MDt2PXYrMXwwO2lmKCh3fDApPT0wfCh1fDApPT0oenwwKSl7YnJlYWsgY31lbHNle3U9dS16fDA7eD14KzR8MH19aWYoKHp8MCk9PS0xKXt2PS0xO2JyZWFrfWVsc2UgaWYoKHp8MCk9PTApe2Nbbz4+Ml09MDt5PTA7YnJlYWt9ZWxzZXtjW2Q+PjJdPTA7YnJlYWt9fX1lbHNle3k9MH19d2hpbGUoMCk7aWYocyl7Y1tnPj4yXT15fWlmKCh0fDApIT0wKXtpYih0fDApfDB9aWYoKHZ8MCk9PTApe2Y9MjtkPTQ4O2JyZWFrfWVsc2UgaWYoKHZ8MCk9PS0xKXtkPTI2O2JyZWFrfWg9KGNbaz4+Ml18MCkrKHY8PDIpfDA7Y1trPj4yXT1oO2lmKChofDApPT0oanwwKSl7ZD00NjticmVha31lPWNbZz4+Ml18MDtpZigocnwwKT09KGZ8MCkpe3I9Zn1lbHNle3E9aWIoY1tiPj4yXXwwKXwwO2U9VW0oaCxlLDEsZCl8MDtpZigocXwwKSE9MCl7aWIocXwwKXwwfWlmKChlfDApIT0wKXtmPTI7ZD00ODticmVha31jW2s+PjJdPShjW2s+PjJdfDApKzQ7ZT0oY1tnPj4yXXwwKSsxfDA7Y1tnPj4yXT1lO2Q6ZG97aWYoKGV8MCk9PShmfDApKXtyPWZ9ZWxzZXtyPWU7d2hpbGUoMSl7aWYoKGFbcj4+MF18MCk9PTApe2JyZWFrIGR9cj1yKzF8MDtpZigocnwwKT09KGZ8MCkpe3I9ZjticmVha319fX13aGlsZSgwKTtoPWNbaz4+Ml18MH1pZigoZXwwKT09KGZ8MCl8KGh8MCk9PShqfDApKXticmVhayBhfX1pZigoZHwwKT09MjYpe2Nbaz4+Ml09aDtlOmRve2lmKChlfDApIT0oY1tnPj4yXXwwKSl7d2hpbGUoMSl7ZD1pYihjW2I+PjJdfDApfDA7bj1VbShoLGUscS1lfDAsbSl8MDtpZigoZHwwKSE9MCl7aWIoZHwwKXwwfWlmKChufDApPT0tMSl7ZD0zMTticmVha31lbHNlIGlmKChufDApPT0tMil7ZD0zMjticmVha31lbHNlIGlmKChufDApPT0wKXtlPWUrMXwwfWVsc2V7ZT1lK258MH1oPShjW2s+PjJdfDApKzR8MDtjW2s+PjJdPWg7aWYoKGV8MCk9PShjW2c+PjJdfDApKXticmVhayBlfX1pZigoZHwwKT09MzEpe2NbZz4+Ml09ZTtBPTI7aT1sO3JldHVybiBBfDB9ZWxzZSBpZigoZHwwKT09MzIpe2NbZz4+Ml09ZTtBPTE7aT1sO3JldHVybiBBfDB9fX13aGlsZSgwKTtjW2c+PjJdPWU7QT0oZXwwKSE9KGZ8MCkmMTtpPWw7cmV0dXJuIEF8MH1lbHNlIGlmKChkfDApPT00Nil7ZT1jW2c+PjJdfDA7YnJlYWt9ZWxzZSBpZigoZHwwKT09NDgpe2k9bDtyZXR1cm4gZnwwfX19ZWxzZXtjW2s+PjJdPWg7Y1tnPj4yXT1lfX13aGlsZSgwKTtBPShlfDApIT0oZnwwKSYxO2k9bDtyZXR1cm4gQXwwfWZ1bmN0aW9uIElsKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Yj1pO2NbZj4+Ml09ZDthPWliKGNbYSs4Pj4yXXwwKXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJuIDB9aWIoYXwwKXwwO2k9YjtyZXR1cm4gMH1mdW5jdGlvbiBKbChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7YT1hKzh8MDtkPWliKGNbYT4+Ml18MCl8MDtpZigoZHwwKSE9MCl7aWIoZHwwKXwwfWE9Y1thPj4yXXwwO2lmKChhfDApIT0wKXthPWliKGF8MCl8MDtpZigoYXwwKT09MCl7YT0wfWVsc2V7aWIoYXwwKXwwO2E9MH19ZWxzZXthPTF9aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gS2woYSl7YT1hfDA7cmV0dXJuIDB9ZnVuY3Rpb24gTGwoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2lmKChmfDApPT0wfChkfDApPT0oZXwwKSl7bT0wO2k9ZztyZXR1cm4gbXwwfWg9ZTthPWErOHwwO2I9KGJ8MCkhPTA/YjoyMTI4MDtrPTA7aj0wO3doaWxlKDEpe209aWIoY1thPj4yXXwwKXwwO2w9VW0oMCxkLGgtZHwwLGIpfDA7aWYoKG18MCkhPTApe2liKG18MCl8MH1pZigobHwwKT09MCl7ZD1kKzF8MDtsPTF9ZWxzZSBpZigobHwwKT09LTJ8KGx8MCk9PS0xKXtmPTk7YnJlYWt9ZWxzZXtkPWQrbHwwfWs9bCtrfDA7aj1qKzF8MDtpZihqPj4+MD49Zj4+PjB8KGR8MCk9PShlfDApKXtmPTk7YnJlYWt9fWlmKChmfDApPT05KXtpPWc7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBNbChhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSs4Pj4yXXwwO2lmKChhfDApIT0wKXthPWliKGF8MCl8MDtpZigoYXwwKT09MCl7YT00fWVsc2V7aWIoYXwwKXwwO2E9NH19ZWxzZXthPTF9aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gTmwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gT2woZCxmLGcsaCxqLGssbCxtKXtkPWR8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDt2YXIgbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7Zj1pO2Q9aDthOmRve2lmKGc+Pj4wPGg+Pj4wKXtvPWc7bj1rO3doaWxlKDEpe3E9YltvPj4xXXwwO3A9cSY2NTUzNTtkb3tpZigocSY2NTUzNSk8MTI4KXtpZigobC1ufDApPDEpe2g9MTticmVhayBhfWFbbj4+MF09cTtuPW4rMXwwfWVsc2V7aWYoKHEmNjU1MzUpPDIwNDgpe2lmKChsLW58MCk8Mil7aD0xO2JyZWFrIGF9YVtuPj4wXT1wPj4+NnwxOTI7YVtuKzE+PjBdPXAmNjN8MTI4O249bisyfDA7YnJlYWt9aWYoKHEmNjU1MzUpPDU1Mjk2KXtpZigobC1ufDApPDMpe2g9MTticmVhayBhfWFbbj4+MF09cD4+PjEyfDIyNDthW24rMT4+MF09cD4+PjYmNjN8MTI4O2FbbisyPj4wXT1wJjYzfDEyODtuPW4rM3wwO2JyZWFrfWlmKCEoKHEmNjU1MzUpPDU2MzIwKSl7aWYoKHEmNjU1MzUpPDU3MzQ0KXtoPTI7YnJlYWsgYX1pZigobC1ufDApPDMpe2g9MTticmVhayBhfWFbbj4+MF09cD4+PjEyfDIyNDthW24rMT4+MF09cD4+PjYmNjN8MTI4O2FbbisyPj4wXT1wJjYzfDEyODtuPW4rM3wwO2JyZWFrfWlmKChkLW98MCk8NCl7aD0xO2JyZWFrIGF9cT1vKzJ8MDtyPWVbcT4+MV18MDtpZigociY2NDUxMnwwKSE9NTYzMjApe2g9MjticmVhayBhfWlmKChsLW58MCk8NCl7aD0xO2JyZWFrIGF9cz1wJjk2MDtpZigoKHM8PDEwKSs2NTUzNnwwKT4+PjA+MTExNDExMSl7aD0yO2JyZWFrIGF9bz0ocz4+PjYpKzF8MDthW24+PjBdPW8+Pj4yfDI0MDthW24rMT4+MF09cD4+PjImMTV8bzw8NCY0OHwxMjg7YVtuKzI+PjBdPXA8PDQmNDh8cj4+PjYmMTV8MTI4O2FbbiszPj4wXT1yJjYzfDEyODtvPXE7bj1uKzR8MH19d2hpbGUoMCk7bz1vKzJ8MDtpZighKG8+Pj4wPGg+Pj4wKSl7aD0wO2JyZWFrfX19ZWxzZXtoPTA7bz1nO249a319d2hpbGUoMCk7Y1tqPj4yXT1nKyhvLWc+PjE8PDEpO2NbbT4+Ml09aysobi1rKTtpPWY7cmV0dXJuIGh8MH1mdW5jdGlvbiBQbChlLGYsZyxoLGosayxsLG0pe2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO209bXwwO3ZhciBuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2Y9aTthOmRve2lmKGc+Pj4wPGg+Pj4wKXtvPWg7cD1sO3E9ZztlPWs7d2hpbGUoMSl7aWYoIShlPj4+MDxsPj4+MCkpe249MzE7YnJlYWsgYX1zPWFbcT4+MF18MDtyPXMmMjU1O2Rve2lmKHM8PDI0Pj4yND4tMSl7YltlPj4xXT1zJjI1NTtxPXErMXwwfWVsc2V7aWYoKHMmMjU1KTwxOTQpe2g9MjticmVhayBhfWlmKChzJjI1NSk8MjI0KXtpZigoby1xfDApPDIpe2g9MTticmVhayBhfXM9ZFtxKzE+PjBdfDA7aWYoKHMmMTkyfDApIT0xMjgpe2g9MjticmVhayBhfWJbZT4+MV09cyY2M3xyPDw2JjE5ODQ7cT1xKzJ8MDticmVha31pZigocyYyNTUpPDI0MCl7aWYoKG8tcXwwKTwzKXtoPTE7YnJlYWsgYX1zPWFbcSsxPj4wXXwwO3Q9YVtxKzI+PjBdfDA7aWYoKHJ8MCk9PTIzNyl7aWYoISgocyYtMzIpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19ZWxzZSBpZigocnwwKT09MjI0KXtpZighKChzJi0zMik8PDI0Pj4yND09LTk2KSl7aD0yO2JyZWFrIGF9fWVsc2V7aWYoISgocyYtNjQpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19dD10JjI1NTtpZigodCYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9YltlPj4xXT0ocyYyNTUpPDw2JjQwMzJ8cjw8MTJ8dCY2MztxPXErM3wwO2JyZWFrfWlmKCEoKHMmMjU1KTwyNDUpKXtoPTI7YnJlYWsgYX1pZigoby1xfDApPDQpe2g9MTticmVhayBhfXM9YVtxKzE+PjBdfDA7dD1hW3ErMj4+MF18MDt1PWFbcSszPj4wXXwwO2lmKChyfDApPT0yNDApe2lmKCEoKHMrMTEyPDwyND4+MjQmMjU1KTw0OCkpe2g9MjticmVhayBhfX1lbHNlIGlmKChyfDApPT0yNDQpe2lmKCEoKHMmLTE2KTw8MjQ+PjI0PT0tMTI4KSl7aD0yO2JyZWFrIGF9fWVsc2V7aWYoISgocyYtNjQpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19dD10JjI1NTtpZigodCYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9dT11JjI1NTtpZigodSYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9aWYoKHAtZXwwKTw0KXtoPTE7YnJlYWsgYX1yPXImNztzPXMmMjU1O2lmKChzPDwxMiYxOTY2MDh8cjw8MTgpPj4+MD4xMTE0MTExKXtoPTI7YnJlYWsgYX1iW2U+PjFdPXM8PDImNjB8dD4+PjQmM3woKHM+Pj40JjN8cjw8Mik8PDYpKzE2MzIwfDU1Mjk2O2U9ZSsyfDA7YltlPj4xXT11JjYzfHQ8PDYmOTYwfDU2MzIwO3E9cSs0fDB9fXdoaWxlKDApO2U9ZSsyfDA7aWYoIShxPj4+MDxoPj4+MCkpe249MzE7YnJlYWt9fX1lbHNle3E9ZztlPWs7bj0zMX19d2hpbGUoMCk7aWYoKG58MCk9PTMxKXtoPXE+Pj4wPGg+Pj4wJjF9Y1tqPj4yXT1nKyhxLWcpO2NbbT4+Ml09aysoZS1rPj4xPDwxKTtpPWY7cmV0dXJuIGh8MH1mdW5jdGlvbiBRbChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2NbZj4+Ml09ZDtyZXR1cm4gM31mdW5jdGlvbiBSbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBTbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBUbChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Yz1pO2E6ZG97aWYoZD4+PjA8ZT4+PjAmKGZ8MCkhPTApe2I9ZTtoPWQ7Zz0wO2I6d2hpbGUoMSl7az1hW2g+PjBdfDA7aj1rJjI1NTtkb3tpZihrPDwyND4+MjQ+LTEpe2g9aCsxfDB9ZWxzZXtpZigoayYyNTUpPDE5NCl7YnJlYWsgYX1pZigoayYyNTUpPDIyNCl7aWYoKGItaHwwKTwyKXticmVhayBhfWlmKCEoKGFbaCsxPj4wXSYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWg9aCsyfDA7YnJlYWt9aWYoKGsmMjU1KTwyNDApe2s9aDtpZigoYi1rfDApPDMpe2JyZWFrIGF9bT1hW2grMT4+MF18MDtsPWFbaCsyPj4wXXwwO2lmKChqfDApPT0yMjQpe2lmKCEoKG0mLTMyKTw8MjQ+PjI0PT0tOTYpKXtlPTE0O2JyZWFrIGJ9fWVsc2UgaWYoKGp8MCk9PTIzNyl7aWYoISgobSYtMzIpPDwyND4+MjQ9PS0xMjgpKXtlPTE2O2JyZWFrIGJ9fWVsc2V7aWYoISgobSYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTE4O2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1oPWgrM3wwO2JyZWFrfWlmKCEoKGsmMjU1KTwyNDUpKXticmVhayBhfWs9aDtpZigoYi1rfDApPDQpe2JyZWFrIGF9aWYoKGYtZ3wwKT4+PjA8Mil7YnJlYWsgYX1uPWFbaCsxPj4wXXwwO2w9YVtoKzI+PjBdfDA7bT1hW2grMz4+MF18MDtpZigoanwwKT09MjQ0KXtpZighKChuJi0xNik8PDI0Pj4yND09LTEyOCkpe2U9Mjg7YnJlYWsgYn19ZWxzZSBpZigoanwwKT09MjQwKXtpZighKChuKzExMjw8MjQ+PjI0JjI1NSk8NDgpKXtlPTI2O2JyZWFrIGJ9fWVsc2V7aWYoISgobiYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTMwO2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1pZighKChtJi02NCk8PDI0Pj4yND09LTEyOCkpe2JyZWFrIGF9aWYoKChuJjI1NSk8PDEyJjE5NjYwOHxqPDwxOCYxODM1MDA4KT4+PjA+MTExNDExMSl7YnJlYWsgYX1oPWgrNHwwO2c9ZysxfDB9fXdoaWxlKDApO2c9ZysxfDA7aWYoIShoPj4+MDxlPj4+MCZnPj4+MDxmPj4+MCkpe2JyZWFrIGF9fWlmKChlfDApPT0xNCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0xNil7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0xOCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0yNil7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0yOCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0zMCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH19ZWxzZXtoPWR9fXdoaWxlKDApO249aC1kfDA7aT1jO3JldHVybiBufDB9ZnVuY3Rpb24gVWwoYSl7YT1hfDA7cmV0dXJuIDR9ZnVuY3Rpb24gVmwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gV2woYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTA7ZD1pO2E6ZG97aWYoZT4+PjA8Zj4+PjApe2I9ZTtsPWg7d2hpbGUoMSl7bT1jW2I+PjJdfDA7aWYoKG0mLTIwNDh8MCk9PTU1Mjk2fG0+Pj4wPjExMTQxMTEpe2Y9MjticmVhayBhfWRve2lmKCEobT4+PjA8MTI4KSl7aWYobT4+PjA8MjA0OCl7aWYoKGotbHwwKTwyKXtmPTE7YnJlYWsgYX1hW2w+PjBdPW0+Pj42fDE5MjthW2wrMT4+MF09bSY2M3wxMjg7bD1sKzJ8MDticmVha31uPWotbHwwO2lmKG0+Pj4wPDY1NTM2KXtpZigobnwwKTwzKXtmPTE7YnJlYWsgYX1hW2w+PjBdPW0+Pj4xMnwyMjQ7YVtsKzE+PjBdPW0+Pj42JjYzfDEyODthW2wrMj4+MF09bSY2M3wxMjg7bD1sKzN8MDticmVha31lbHNle2lmKChufDApPDQpe2Y9MTticmVhayBhfWFbbD4+MF09bT4+PjE4fDI0MDthW2wrMT4+MF09bT4+PjEyJjYzfDEyODthW2wrMj4+MF09bT4+PjYmNjN8MTI4O2FbbCszPj4wXT1tJjYzfDEyODtsPWwrNHwwO2JyZWFrfX1lbHNle2lmKChqLWx8MCk8MSl7Zj0xO2JyZWFrIGF9YVtsPj4wXT1tO2w9bCsxfDB9fXdoaWxlKDApO2I9Yis0fDA7aWYoIShiPj4+MDxmPj4+MCkpe2Y9MDticmVha319fWVsc2V7Zj0wO2I9ZTtsPWh9fXdoaWxlKDApO2NbZz4+Ml09ZSsoYi1lPj4yPDwyKTtjW2s+PjJdPWgrKGwtaCk7aT1kO3JldHVybiBmfDB9ZnVuY3Rpb24gWGwoYixlLGYsZyxoLGosayxsKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2U9aTthOmRve2lmKGY+Pj4wPGc+Pj4wKXtvPWc7bj1mO2I9ajt3aGlsZSgxKXtpZighKGI+Pj4wPGs+Pj4wKSl7bT0zMDticmVhayBhfXE9YVtuPj4wXXwwO3A9cSYyNTU7ZG97aWYocTw8MjQ+PjI0Pi0xKXtjW2I+PjJdPXA7bj1uKzF8MH1lbHNle2lmKChxJjI1NSk8MTk0KXtnPTI7YnJlYWsgYX1pZigocSYyNTUpPDIyNCl7aWYoKG8tbnwwKTwyKXtnPTE7YnJlYWsgYX1xPWRbbisxPj4wXXwwO2lmKChxJjE5MnwwKSE9MTI4KXtnPTI7YnJlYWsgYX1jW2I+PjJdPXEmNjN8cDw8NiYxOTg0O249bisyfDA7YnJlYWt9aWYoKHEmMjU1KTwyNDApe2lmKChvLW58MCk8Myl7Zz0xO2JyZWFrIGF9cT1hW24rMT4+MF18MDtyPWFbbisyPj4wXXwwO2lmKChwfDApPT0yMjQpe2lmKCEoKHEmLTMyKTw8MjQ+PjI0PT0tOTYpKXtnPTI7YnJlYWsgYX19ZWxzZSBpZigocHwwKT09MjM3KXtpZighKChxJi0zMik8PDI0Pj4yND09LTEyOCkpe2c9MjticmVhayBhfX1lbHNle2lmKCEoKHEmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7Zz0yO2JyZWFrIGF9fXI9ciYyNTU7aWYoKHImMTkyfDApIT0xMjgpe2c9MjticmVhayBhfWNbYj4+Ml09KHEmMjU1KTw8NiY0MDMyfHA8PDEyJjYxNDQwfHImNjM7bj1uKzN8MDticmVha31pZighKChxJjI1NSk8MjQ1KSl7Zz0yO2JyZWFrIGF9aWYoKG8tbnwwKTw0KXtnPTE7YnJlYWsgYX1xPWFbbisxPj4wXXwwO3I9YVtuKzI+PjBdfDA7cz1hW24rMz4+MF18MDtpZigocHwwKT09MjQ0KXtpZighKChxJi0xNik8PDI0Pj4yND09LTEyOCkpe2c9MjticmVhayBhfX1lbHNlIGlmKChwfDApPT0yNDApe2lmKCEoKHErMTEyPDwyND4+MjQmMjU1KTw0OCkpe2c9MjticmVhayBhfX1lbHNle2lmKCEoKHEmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7Zz0yO2JyZWFrIGF9fXI9ciYyNTU7aWYoKHImMTkyfDApIT0xMjgpe2c9MjticmVhayBhfXM9cyYyNTU7aWYoKHMmMTkyfDApIT0xMjgpe2c9MjticmVhayBhfXA9KHEmMjU1KTw8MTImMjU4MDQ4fHA8PDE4JjE4MzUwMDh8cjw8NiY0MDMyfHMmNjM7aWYocD4+PjA+MTExNDExMSl7Zz0yO2JyZWFrIGF9Y1tiPj4yXT1wO249bis0fDB9fXdoaWxlKDApO2I9Yis0fDA7aWYoIShuPj4+MDxnPj4+MCkpe209MzA7YnJlYWt9fX1lbHNle249ZjtiPWo7bT0zMH19d2hpbGUoMCk7aWYoKG18MCk9PTMwKXtnPW4+Pj4wPGc+Pj4wJjF9Y1toPj4yXT1mKyhuLWYpO2NbbD4+Ml09aisoYi1qPj4yPDwyKTtpPWU7cmV0dXJuIGd8MH1mdW5jdGlvbiBZbChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2NbZj4+Ml09ZDtyZXR1cm4gM31mdW5jdGlvbiBabChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBfbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiAkbChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Yz1pO2E6ZG97aWYoZD4+PjA8ZT4+PjAmKGZ8MCkhPTApe2c9ZTtqPWQ7Yj0xO2I6d2hpbGUoMSl7az1hW2o+PjBdfDA7aD1rJjI1NTtkb3tpZihrPDwyND4+MjQ+LTEpe2o9aisxfDB9ZWxzZXtpZigoayYyNTUpPDE5NCl7YnJlYWsgYX1pZigoayYyNTUpPDIyNCl7aWYoKGctanwwKTwyKXticmVhayBhfWlmKCEoKGFbaisxPj4wXSYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWo9aisyfDA7YnJlYWt9aWYoKGsmMjU1KTwyNDApe2s9ajtpZigoZy1rfDApPDMpe2JyZWFrIGF9bT1hW2orMT4+MF18MDtsPWFbaisyPj4wXXwwO2lmKChofDApPT0yMjQpe2lmKCEoKG0mLTMyKTw8MjQ+PjI0PT0tOTYpKXtlPTE0O2JyZWFrIGJ9fWVsc2UgaWYoKGh8MCk9PTIzNyl7aWYoISgobSYtMzIpPDwyND4+MjQ9PS0xMjgpKXtlPTE2O2JyZWFrIGJ9fWVsc2V7aWYoISgobSYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTE4O2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1qPWorM3wwO2JyZWFrfWlmKCEoKGsmMjU1KTwyNDUpKXticmVhayBhfWs9ajtpZigoZy1rfDApPDQpe2JyZWFrIGF9bT1hW2orMT4+MF18MDtuPWFbaisyPj4wXXwwO2w9YVtqKzM+PjBdfDA7aWYoKGh8MCk9PTI0MCl7aWYoISgobSsxMTI8PDI0Pj4yNCYyNTUpPDQ4KSl7ZT0yNTticmVhayBifX1lbHNlIGlmKChofDApPT0yNDQpe2lmKCEoKG0mLTE2KTw8MjQ+PjI0PT0tMTI4KSl7ZT0yNzticmVhayBifX1lbHNle2lmKCEoKG0mLTY0KTw8MjQ+PjI0PT0tMTI4KSl7ZT0yOTticmVhayBifX1pZighKChuJi02NCk8PDI0Pj4yND09LTEyOCkpe2JyZWFrIGF9aWYoISgobCYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWlmKCgobSYyNTUpPDwxMiYxOTY2MDh8aDw8MTgmMTgzNTAwOCk+Pj4wPjExMTQxMTEpe2JyZWFrIGF9aj1qKzR8MH19d2hpbGUoMCk7aWYoIShqPj4+MDxlPj4+MCZiPj4+MDxmPj4+MCkpe2JyZWFrIGF9Yj1iKzF8MH1pZigoZXwwKT09MTQpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MTYpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MTgpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MjUpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09Mjcpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09Mjkpe249ay1kfDA7aT1jO3JldHVybiBufDB9fWVsc2V7aj1kfX13aGlsZSgwKTtuPWotZHwwO2k9YztyZXR1cm4gbnwwfWZ1bmN0aW9uIGFtKGEpe2E9YXwwO3JldHVybiA0fWZ1bmN0aW9uIGJtKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGNtKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGRtKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNjI0O2lmKCEoKGFbYisxMj4+MF0mMSk9PTApKXtlPWNbYisyMD4+Ml18MDtpZigoZXwwKSE9MCl7dm4oZSl9aWYoKGJ8MCk9PTApe2k9ZDtyZXR1cm59fXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM2MjQ7aWYoISgoYVtiKzEyPj4wXSYxKT09MCk/KGU9Y1tiKzIwPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pPWQ7cmV0dXJufWZ1bmN0aW9uIGZtKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNjY0O2lmKCEoKGFbYisxNj4+MF0mMSk9PTApKXtlPWNbYisyND4+Ml18MDtpZigoZXwwKSE9MCl7dm4oZSl9aWYoKGJ8MCk9PTApe2k9ZDtyZXR1cm59fXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ20oYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM2NjQ7aWYoISgoYVtiKzE2Pj4wXSYxKT09MCk/KGU9Y1tiKzI0Pj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pPWQ7cmV0dXJufWZ1bmN0aW9uIGhtKGIpe2I9YnwwO3JldHVybiBhW2IrOD4+MF18MH1mdW5jdGlvbiBpbShhKXthPWF8MDtyZXR1cm4gY1thKzg+PjJdfDB9ZnVuY3Rpb24gam0oYil7Yj1ifDA7cmV0dXJuIGFbYis5Pj4wXXwwfWZ1bmN0aW9uIGttKGEpe2E9YXwwO3JldHVybiBjW2ErMTI+PjJdfDB9ZnVuY3Rpb24gbG0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2c9ZCsxMnwwO2lmKChhW2c+PjBdJjEpPT0wKXtjW2IrMD4+Ml09Y1tnKzA+PjJdO2NbYis0Pj4yXT1jW2crND4+Ml07Y1tiKzg+PjJdPWNbZys4Pj4yXTtpPWU7cmV0dXJufWc9Y1tkKzIwPj4yXXwwO2Q9Y1tkKzE2Pj4yXXwwO2lmKGQ+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoZD4+PjA8MTEpe2FbYj4+MF09ZDw8MTtrPWIrMXwwfWVsc2V7aD1kKzE2Ji0xNjtqPShofDApPT0wPzE6aDt3aGlsZSgxKXtrPXVuKGopfDA7aWYoKGt8MCkhPTApe2Y9MTM7YnJlYWt9az1jWzU2NjZdfDA7Y1s1NjY2XT1rKzA7aWYoKGt8MCk9PTApe2JyZWFrfXNjW2smMzFdKCl9aWYoKGZ8MCk9PTEzKXtjW2IrOD4+Ml09aztjW2I+PjJdPWh8MTtjW2IrND4+Ml09ZDticmVha31rPVhhKDQpfDA7Y1trPj4yXT0yMjY4MDt3YihrfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7TG4oa3wwLGd8MCxkfDApfDA7YVtrK2Q+PjBdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBtbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtlPWk7Zz1kKzE2fDA7aWYoKGFbZz4+MF0mMSk9PTApe2NbYiswPj4yXT1jW2crMD4+Ml07Y1tiKzQ+PjJdPWNbZys0Pj4yXTtjW2IrOD4+Ml09Y1tnKzg+PjJdO2k9ZTtyZXR1cm59Zz1jW2QrMjQ+PjJdfDA7ZD1jW2QrMjA+PjJdfDA7aWYoZD4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1kb3tpZihkPj4+MDwxMSl7YVtiPj4wXT1kPDwxO2s9YisxfDB9ZWxzZXtoPWQrMTYmLTE2O2o9KGh8MCk9PTA/MTpoO3doaWxlKDEpe2s9dW4oail8MDtpZigoa3wwKSE9MCl7Zj0xMzticmVha31rPWNbNTY2Nl18MDtjWzU2NjZdPWsrMDtpZigoa3wwKT09MCl7YnJlYWt9c2NbayYzMV0oKX1pZigoZnwwKT09MTMpe2NbYis4Pj4yXT1rO2NbYj4+Ml09aHwxO2NbYis0Pj4yXT1kO2JyZWFrfWs9WGEoNCl8MDtjW2s+PjJdPTIyNjgwO3diKGt8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtMbihrfDAsZ3wwLGR8MCl8MDthW2srZD4+MF09MDtpPWU7cmV0dXJufWZ1bmN0aW9uIG5tKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT04O2M9YisxfDA7YVtjPj4wXT0xNzAyMTk1ODI4O2FbYysxPj4wXT02NjQ5MjAyO2FbYysyPj4wXT0yNTk3MzthW2MrMz4+MF09MTAxO2FbYis1Pj4wXT0wO3JldHVybn1mdW5jdGlvbiBvbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2Q9aTtlPTEzNjk2O3doaWxlKDEpe2lmKChjW2U+PjJdfDApPT0wKXticmVha31lbHNle2U9ZSs0fDB9fWc9ZS0xMzY5NnwwO2U9Zz4+MjtpZihlPj4+MD4xMDczNzQxODA3KXtkZygpfWRve2lmKGU+Pj4wPDIpe2FbYj4+MF09Zz4+PjE7aj1iKzR8MH1lbHNle2c9ZSs0Ji00O2g9Zzw8MjtoPShofDApPT0wPzE6aDt3aGlsZSgxKXtqPXVuKGgpfDA7aWYoKGp8MCkhPTApe2Y9MTM7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKGZ8MCk9PTEzKXtjW2IrOD4+Ml09ajtjW2I+PjJdPWd8MTtjW2IrND4+Ml09ZTticmVha31qPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGV8MCk9PTApe2o9aisoZTw8Mil8MDtjW2o+PjJdPTA7aT1kO3JldHVybn1lbHNle2Y9ZTtnPTEzNjk2O2I9an13aGlsZSgxKXtmPWYrIC0xfDA7Y1tiPj4yXT1jW2c+PjJdO2lmKChmfDApPT0wKXticmVha31lbHNle2c9Zys0fDA7Yj1iKzR8MH19aj1qKyhlPDwyKXwwO2Nbaj4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIHBtKGIsYyl7Yj1ifDA7Yz1jfDA7dmFyIGQ9MDtjPWk7YVtiPj4wXT0xMDtkPWIrMXwwO2FbZCswPj4wXT1hWzEzNzIwPj4wXXwwO2FbZCsxPj4wXT1hWzEzNzIxPj4wXXwwO2FbZCsyPj4wXT1hWzEzNzIyPj4wXXwwO2FbZCszPj4wXT1hWzEzNzIzPj4wXXwwO2FbZCs0Pj4wXT1hWzEzNzI0Pj4wXXwwO2FbYis2Pj4wXT0wO2k9YztyZXR1cm59ZnVuY3Rpb24gcW0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtkPWk7ZT0xMzcyODt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtlPWUrNHwwfX1nPWUtMTM3Mjh8MDtlPWc+PjI7aWYoZT4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihlPj4+MDwyKXthW2I+PjBdPWc+Pj4xO2o9Yis0fDB9ZWxzZXtnPWUrNCYtNDtoPWc8PDI7aD0oaHwwKT09MD8xOmg7d2hpbGUoMSl7aj11bihoKXwwO2lmKChqfDApIT0wKXtmPTEzO2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXticmVha31zY1tqJjMxXSgpfWlmKChmfDApPT0xMyl7Y1tiKzg+PjJdPWo7Y1tiPj4yXT1nfDE7Y1tiKzQ+PjJdPWU7YnJlYWt9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChlfDApPT0wKXtqPWorKGU8PDIpfDA7Y1tqPj4yXT0wO2k9ZDtyZXR1cm59ZWxzZXtmPWU7Zz0xMzcyODtiPWp9d2hpbGUoMSl7Zj1mKyAtMXwwO2NbYj4+Ml09Y1tnPj4yXTtpZigoZnwwKT09MCl7YnJlYWt9ZWxzZXtnPWcrNHwwO2I9Yis0fDB9fWo9aisoZTw8Mil8MDtjW2o+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBybShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzc2MF18MCkhPTApe2Q9Y1szNDM4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzc2MCl8MCk9PTApe2Q9Y1szNDM4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzIwOTI4XXwwKT09MD8oUWEoMjA5MjgpfDApIT0wOjApe05uKDIwNzYwLDAsMTY4KXwwO2NjKDIxNSwwLHB8MCl8MDskYSgyMDkyOCl9Z2coMjA3NjAsMjA5MzYpO2dnKDIwNzcyfDAsMjA5NDQpO2dnKDIwNzg0fDAsMjA5NTIpO2dnKDIwNzk2fDAsMjA5NjApO2dnKDIwODA4fDAsMjA5NzYpO2dnKDIwODIwfDAsMjA5OTIpO2dnKDIwODMyfDAsMjFlMyk7Z2coMjA4NDR8MCwyMTAxNik7Z2coMjA4NTZ8MCwyMTAyNCk7Z2coMjA4Njh8MCwyMTAzMik7Z2coMjA4ODB8MCwyMTA0MCk7Z2coMjA4OTJ8MCwyMTA0OCk7Z2coMjA5MDR8MCwyMTA1Nik7Z2coMjA5MTZ8MCwyMTA2NCk7Y1szNDM4XT0yMDc2MDskYSgxMzc2MCk7ZD1jWzM0MzhdfDA7aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gc20oYil7Yj1ifDA7dmFyIGQ9MDtiPWk7aWYoKGFbMTM3NzZdfDApIT0wKXtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1pZigoUWEoMTM3NzYpfDApPT0wKXtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1pZigoYVsyMDM5Ml18MCk9PTA/KFFhKDIwMzkyKXwwKSE9MDowKXtObigyMDIyNCwwLDE2OCl8MDtjYygyMTYsMCxwfDApfDA7JGEoMjAzOTIpfW5nKDIwMjI0LDIwNDAwKTtuZygyMDIzNnwwLDIwNDMyKTtuZygyMDI0OHwwLDIwNDY0KTtuZygyMDI2MHwwLDIwNDk2KTtuZygyMDI3MnwwLDIwNTM2KTtuZygyMDI4NHwwLDIwNTc2KTtuZygyMDI5NnwwLDIwNjA4KTtuZygyMDMwOHwwLDIwNjQ4KTtuZygyMDMyMHwwLDIwNjY0KTtuZygyMDMzMnwwLDIwNjgwKTtuZygyMDM0NHwwLDIwNjk2KTtuZygyMDM1NnwwLDIwNzEyKTtuZygyMDM2OHwwLDIwNzI4KTtuZygyMDM4MHwwLDIwNzQ0KTtjWzM0NDJdPTIwMjI0OyRhKDEzNzc2KTtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB0bShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzc5Ml18MCkhPTApe2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzc5Mil8MCk9PTApe2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzJlNF18MCk9PTA/KFFhKDJlNCl8MCkhPTA6MCl7Tm4oMTk3MTIsMCwyODgpfDA7Y2MoMjE3LDAscHwwKXwwOyRhKDJlNCl9Z2coMTk3MTIsMjAwMDgpO2dnKDE5NzI0fDAsMjAwMTYpO2dnKDE5NzM2fDAsMjAwMzIpO2dnKDE5NzQ4fDAsMjAwNDApO2dnKDE5NzYwfDAsMjAwNDgpO2dnKDE5NzcyfDAsMjAwNTYpO2dnKDE5Nzg0fDAsMjAwNjQpO2dnKDE5Nzk2fDAsMjAwNzIpO2dnKDE5ODA4fDAsMjAwODApO2dnKDE5ODIwfDAsMjAwOTYpO2dnKDE5ODMyfDAsMjAxMDQpO2dnKDE5ODQ0fDAsMjAxMjApO2dnKDE5ODU2fDAsMjAxMzYpO2dnKDE5ODY4fDAsMjAxNDQpO2dnKDE5ODgwfDAsMjAxNTIpO2dnKDE5ODkyfDAsMjAxNjApO2dnKDE5OTA0fDAsMjAwNDgpO2dnKDE5OTE2fDAsMjAxNjgpO2dnKDE5OTI4fDAsMjAxNzYpO2dnKDE5OTQwfDAsMjAxODQpO2dnKDE5OTUyfDAsMjAxOTIpO2dnKDE5OTY0fDAsMjAyMDApO2dnKDE5OTc2fDAsMjAyMDgpO2dnKDE5OTg4fDAsMjAyMTYpO2NbMzQ0Nl09MTk3MTI7JGEoMTM3OTIpO2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWZ1bmN0aW9uIHVtKGIpe2I9YnwwO3ZhciBkPTA7Yj1pO2lmKChhWzEzODA4XXwwKSE9MCl7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9aWYoKFFhKDEzODA4KXwwKT09MCl7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9aWYoKGFbMTkxNjBdfDApPT0wPyhRYSgxOTE2MCl8MCkhPTA6MCl7Tm4oMTg4NzIsMCwyODgpfDA7Y2MoMjE4LDAscHwwKXwwOyRhKDE5MTYwKX1uZygxODg3MiwxOTE2OCk7bmcoMTg4ODR8MCwxOTIwMCk7bmcoMTg4OTZ8MCwxOTI0MCk7bmcoMTg5MDh8MCwxOTI2NCk7bmcoMTg5MjB8MCwxOTU4NCk7bmcoMTg5MzJ8MCwxOTI4OCk7bmcoMTg5NDR8MCwxOTMxMik7bmcoMTg5NTZ8MCwxOTMzNik7bmcoMTg5Njh8MCwxOTM2OCk7bmcoMTg5ODB8MCwxOTQwOCk7bmcoMTg5OTJ8MCwxOTQ0MCk7bmcoMTkwMDR8MCwxOTQ4MCk7bmcoMTkwMTZ8MCwxOTUyMCk7bmcoMTkwMjh8MCwxOTUzNik7bmcoMTkwNDB8MCwxOTU1Mik7bmcoMTkwNTJ8MCwxOTU2OCk7bmcoMTkwNjR8MCwxOTU4NCk7bmcoMTkwNzZ8MCwxOTYwMCk7bmcoMTkwODh8MCwxOTYxNik7bmcoMTkxMDB8MCwxOTYzMik7bmcoMTkxMTJ8MCwxOTY0OCk7bmcoMTkxMjR8MCwxOTY2NCk7bmcoMTkxMzZ8MCwxOTY4MCk7bmcoMTkxNDh8MCwxOTY5Nik7Y1szNDUwXT0xODg3MjskYSgxMzgwOCk7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gdm0oYil7Yj1ifDA7dmFyIGQ9MDtiPWk7aWYoKGFbMTM4MjRdfDApIT0wKXtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1pZigoUWEoMTM4MjQpfDApPT0wKXtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1pZigoYVsxODg0OF18MCk9PTA/KFFhKDE4ODQ4KXwwKSE9MDowKXtObigxODU2MCwwLDI4OCl8MDtjYygyMTksMCxwfDApfDA7JGEoMTg4NDgpfWdnKDE4NTYwLDE4ODU2KTtnZygxODU3MnwwLDE4ODY0KTtjWzM0NTRdPTE4NTYwOyRhKDEzODI0KTtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB3bShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzg0MF18MCkhPTApe2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzg0MCl8MCk9PTApe2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzE4NTIwXXwwKT09MD8oUWEoMTg1MjApfDApIT0wOjApe05uKDE4MjMyLDAsMjg4KXwwO2NjKDIyMCwwLHB8MCl8MDskYSgxODUyMCl9bmcoMTgyMzIsMTg1MjgpO25nKDE4MjQ0fDAsMTg1NDQpO2NbMzQ1OF09MTgyMzI7JGEoMTM4NDApO2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWZ1bmN0aW9uIHhtKGIpe2I9YnwwO3ZhciBjPTAsZD0wO2I9aTtpZigoYVsxMzg2NF18MCkhPTApe2k9YjtyZXR1cm4gMTM4NDh9aWYoKFFhKDEzODY0KXwwKT09MCl7aT1iO3JldHVybiAxMzg0OH1hWzEzODQ4XT0xNjtjPTEzODQ5fDA7ZD1jO2FbZD4+MF09NjIzODY1MTI1O2FbZCsxPj4wXT0yNDM2OTczO2FbZCsyPj4wXT05NTE5O2FbZCszPj4wXT0zNztjPWMrNHwwO2FbYz4+MF09MjAzMjQ4MDEwMDthW2MrMT4+MF09NzkzOTM3NTthW2MrMj4+MF09MzEwMTM7YVtjKzM+PjBdPTEyMTthWzEzODU3Pj4wXT0wO2NjKDIyMSwxMzg0OCxwfDApfDA7JGEoMTM4NjQpO2k9YjtyZXR1cm4gMTM4NDh9ZnVuY3Rpb24geW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzEzODg4XXwwKSE9MCl7aT1iO3JldHVybiAxMzg3Mn1pZigoUWEoMTM4ODgpfDApPT0wKXtpPWI7cmV0dXJuIDEzODcyfWVsc2V7ZD0xMzg5Nn13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTM4OTZ8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzEzODcyXT1mPj4+MTtlPTEzODc2fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxMzg4MD4+Ml09aDtjWzM0NjhdPWZ8MTtjWzEzODc2Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTEzODk2O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDEzODcyLHB8MCl8MDskYSgxMzg4OCk7aT1iO3JldHVybiAxMzg3Mn1mdW5jdGlvbiB6bShiKXtiPWJ8MDt2YXIgYz0wLGQ9MDtiPWk7aWYoKGFbMTM5NTJdfDApIT0wKXtpPWI7cmV0dXJuIDEzOTM2fWlmKChRYSgxMzk1Mil8MCk9PTApe2k9YjtyZXR1cm4gMTM5MzZ9YVsxMzkzNl09MTY7Yz0xMzkzN3wwO2Q9YzthW2Q+PjBdPTYyNDU3NjU0OTthW2QrMT4+MF09MjQzOTc1MjthW2QrMj4+MF09OTUzMDthW2QrMz4+MF09Mzc7Yz1jKzR8MDthW2M+PjBdPTEzOTQ5NDg2ODU7YVtjKzE+PjBdPTU0NDkwMTg7YVtjKzI+PjBdPTIxMjg1O2FbYyszPj4wXT04MzthWzEzOTQ1Pj4wXT0wO2NjKDIyMSwxMzkzNixwfDApfDA7JGEoMTM5NTIpO2k9YjtyZXR1cm4gMTM5MzZ9ZnVuY3Rpb24gQW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzEzOTc2XXwwKSE9MCl7aT1iO3JldHVybiAxMzk2MH1pZigoUWEoMTM5NzYpfDApPT0wKXtpPWI7cmV0dXJuIDEzOTYwfWVsc2V7ZD0xMzk4NH13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTM5ODR8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzEzOTYwXT1mPj4+MTtlPTEzOTY0fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxMzk2OD4+Ml09aDtjWzM0OTBdPWZ8MTtjWzEzOTY0Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTEzOTg0O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDEzOTYwLHB8MCl8MDskYSgxMzk3Nik7aT1iO3JldHVybiAxMzk2MH1mdW5jdGlvbiBCbShiKXtiPWJ8MDtiPWk7aWYoKGFbMTQwNDBdfDApPT0wPyhRYSgxNDA0MCl8MCkhPTA6MCl7ZWcoMTQwMjQsMTQwNDgsMjApO2NjKDIyMSwxNDAyNCxwfDApfDA7JGEoMTQwNDApfWk9YjtyZXR1cm4gMTQwMjR9ZnVuY3Rpb24gQ20oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzE0MDg4XXwwKSE9MCl7aT1iO3JldHVybiAxNDA3Mn1pZigoUWEoMTQwODgpfDApPT0wKXtpPWI7cmV0dXJuIDE0MDcyfWVsc2V7ZD0xNDA5Nn13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTQwOTZ8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzE0MDcyXT1mPj4+MTtlPTE0MDc2fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxNDA4MD4+Ml09aDtjWzM1MThdPWZ8MTtjWzE0MDc2Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTE0MDk2O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDE0MDcyLHB8MCl8MDskYSgxNDA4OCk7aT1iO3JldHVybiAxNDA3Mn1mdW5jdGlvbiBEbShiKXtiPWJ8MDtiPWk7aWYoKGFbMTQyMDBdfDApPT0wPyhRYSgxNDIwMCl8MCkhPTA6MCl7ZWcoMTQxODQsMTQyMDgsMTEpO2NjKDIyMSwxNDE4NCxwfDApfDA7JGEoMTQyMDApfWk9YjtyZXR1cm4gMTQxODR9ZnVuY3Rpb24gRW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzE0MjQwXXwwKSE9MCl7aT1iO3JldHVybiAxNDIyNH1pZigoUWEoMTQyNDApfDApPT0wKXtpPWI7cmV0dXJuIDE0MjI0fWVsc2V7ZD0xNDI0OH13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTQyNDh8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzE0MjI0XT1mPj4+MTtlPTE0MjI4fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxNDIzMj4+Ml09aDtjWzM1NTZdPWZ8MTtjWzE0MjI4Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTE0MjQ4O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDE0MjI0LHB8MCl8MDskYSgxNDI0MCk7aT1iO3JldHVybiAxNDIyNH1mdW5jdGlvbiBGbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCkhPTM0KXtpPWY7cmV0dXJuK2t9Y1tlPj4yXT00O2k9ZjtyZXR1cm4ra31mdW5jdGlvbiBHbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCkhPTM0KXtpPWY7cmV0dXJuK2t9Y1tlPj4yXT00O2k9ZjtyZXR1cm4ra31mdW5jdGlvbiBIbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCk9PTM0KXtjW2U+PjJdPTR9aT1mO3JldHVybitrfWZ1bmN0aW9uIEltKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7aD1pO2k9aSsxMTJ8MDtrPWg7aWYoKGJ8MCk9PShkfDApKXtjW2U+PjJdPTQ7Zj0wO209MDtJPWY7aT1oO3JldHVybiBtfDB9aWYoKGFbYj4+MF18MCk9PTQ1KXtjW2U+PjJdPTQ7Zj0wO209MDtJPWY7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsLTEsLTEpfDA7Zj1JO2s9YisoKGNbbD4+Ml18MCkrKGNbbj4+Ml18MCktKGNbays4Pj4yXXwwKSl8MDtiPWNbZz4+Ml18MDtpZigoYnwwKT09MCl7Y1tnPj4yXT1qfWlmKChrfDApIT0oZHwwKSl7Y1tlPj4yXT00O209MDtuPTA7ST1tO2k9aDtyZXR1cm4gbnwwfWlmKChifDApIT0zNCl7bj1tO0k9ZjtpPWg7cmV0dXJuIG58MH1jW2U+PjJdPTQ7bT0tMTtuPS0xO0k9bTtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBKbShiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtpPWkrMTEyfDA7az1oO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O209MDtpPWg7cmV0dXJuIG18MH1pZigoYVtiPj4wXXwwKT09NDUpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsLTEsLTEpfDA7Zj1JO2s9YisoKGNbbD4+Ml18MCkrKGNbbj4+Ml18MCktKGNbays4Pj4yXXwwKSl8MDtiPWNbZz4+Ml18MDtpZigoYnwwKT09MCl7Y1tnPj4yXT1qfWlmKChrfDApIT0oZHwwKSl7Y1tlPj4yXT00O249MDtpPWg7cmV0dXJuIG58MH1pZigoYnwwKT09MzR8KGY+Pj4wPjB8KGZ8MCk9PTAmbT4+PjA+NDI5NDk2NzI5NSkpe2NbZT4+Ml09NDtuPS0xO2k9aDtyZXR1cm4gbnwwfWVsc2V7bj1tO2k9aDtyZXR1cm4gbnwwfXJldHVybiAwfWZ1bmN0aW9uIEttKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7aD1pO2k9aSsxMTJ8MDtrPWg7aWYoKGJ8MCk9PShkfDApKXtjW2U+PjJdPTQ7bT0wO2k9aDtyZXR1cm4gbXwwfWlmKChhW2I+PjBdfDApPT00NSl7Y1tlPj4yXT00O209MDtpPWg7cmV0dXJuIG18MH1nPWJiKCl8MDtqPWNbZz4+Ml18MDtjW2c+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbaz4+Ml09MDtsPWsrNHwwO2NbbD4+Ml09YjtjW2srNDQ+PjJdPWI7aWYoKGJ8MCk8MCl7Y1trKzg+PjJdPS0xO209LTF9ZWxzZXttPWIrMjE0NzQ4MzY0N3wwO2Nbays4Pj4yXT1tfWNbays3Nj4+Ml09LTE7Y1trKzEwND4+Ml09MDtuPWsrMTA4fDA7Y1tuPj4yXT1tLWI7Y1trKzEwMD4+Ml09bTttPUJuKGssZiwtMSwtMSl8MDtmPUk7az1iKygoY1tsPj4yXXwwKSsoY1tuPj4yXXwwKS0oY1trKzg+PjJdfDApKXwwO2I9Y1tnPj4yXXwwO2lmKChifDApPT0wKXtjW2c+PjJdPWp9aWYoKGt8MCkhPShkfDApKXtjW2U+PjJdPTQ7bj0wO2k9aDtyZXR1cm4gbnwwfWlmKChifDApPT0zNHwoZj4+PjA+MHwoZnwwKT09MCZtPj4+MD40Mjk0OTY3Mjk1KSl7Y1tlPj4yXT00O249LTE7aT1oO3JldHVybiBufDB9ZWxzZXtuPW07aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTG0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9aWYoKGFbYj4+MF18MCk9PTQ1KXtjW2U+PjJdPTQ7bT0wO2k9aDtyZXR1cm4gbXwwfWc9YmIoKXwwO2o9Y1tnPj4yXXwwO2NbZz4+Ml09MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9Y1trPj4yXT0wO2w9ays0fDA7Y1tsPj4yXT1iO2Nbays0ND4+Ml09YjtpZigoYnwwKTwwKXtjW2srOD4+Ml09LTE7bT0tMX1lbHNle209YisyMTQ3NDgzNjQ3fDA7Y1trKzg+PjJdPW19Y1trKzc2Pj4yXT0tMTtjW2srMTA0Pj4yXT0wO249aysxMDh8MDtjW24+PjJdPW0tYjtjW2srMTAwPj4yXT1tO209Qm4oayxmLC0xLC0xKXwwO2Y9STtrPWIrKChjW2w+PjJdfDApKyhjW24+PjJdfDApLShjW2srOD4+Ml18MCkpfDA7Yj1jW2c+PjJdfDA7aWYoKGJ8MCk9PTApe2NbZz4+Ml09an1pZigoa3wwKSE9KGR8MCkpe2NbZT4+Ml09NDtuPTA7aT1oO3JldHVybiBufDB9aWYoKGJ8MCk9PTM0fChmPj4+MD4wfChmfDApPT0wJm0+Pj4wPjY1NTM1KSl7Y1tlPj4yXT00O249LTE7aT1oO3JldHVybiBufDB9ZWxzZXtuPW0mNjU1MzU7aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTW0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDtmPTA7bT0wO0k9ZjtpPWg7cmV0dXJuIG18MH1nPWJiKCl8MDtqPWNbZz4+Ml18MDtjW2c+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbaz4+Ml09MDtsPWsrNHwwO2NbbD4+Ml09YjtjW2srNDQ+PjJdPWI7aWYoKGJ8MCk8MCl7Y1trKzg+PjJdPS0xO209LTF9ZWxzZXttPWIrMjE0NzQ4MzY0N3wwO2Nbays4Pj4yXT1tfWNbays3Nj4+Ml09LTE7Y1trKzEwND4+Ml09MDtuPWsrMTA4fDA7Y1tuPj4yXT1tLWI7Y1trKzEwMD4+Ml09bTttPUJuKGssZiwwLC0yMTQ3NDgzNjQ4KXwwO2Y9STtrPWIrKChjW2w+PjJdfDApKyhjW24+PjJdfDApLShjW2srOD4+Ml18MCkpfDA7Yj1jW2c+PjJdfDA7aWYoKGJ8MCk9PTApe2NbZz4+Ml09an1pZigoa3wwKSE9KGR8MCkpe2NbZT4+Ml09NDttPTA7bj0wO0k9bTtpPWg7cmV0dXJuIG58MH1pZigoYnwwKT09MzQpe2NbZT4+Ml09NDtuPShmfDApPjB8KGZ8MCk9PTAmbT4+PjA+MDtJPW4/MjE0NzQ4MzY0NzotMjE0NzQ4MzY0ODtpPWg7cmV0dXJuKG4/LTE6MCl8MH1lbHNle249bTtJPWY7aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTm0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsMCwtMjE0NzQ4MzY0OCl8MDtmPUk7az1iKygoY1tsPj4yXXwwKSsoY1tuPj4yXXwwKS0oY1trKzg+PjJdfDApKXwwO2I9Y1tnPj4yXXwwO2lmKChifDApPT0wKXtjW2c+PjJdPWp9aWYoKGt8MCkhPShkfDApKXtjW2U+PjJdPTQ7bj0wO2k9aDtyZXR1cm4gbnwwfWRve2lmKChifDApPT0zNCl7Y1tlPj4yXT00O2lmKChmfDApPjB8KGZ8MCk9PTAmbT4+PjA+MCl7bj0yMTQ3NDgzNjQ3O2k9aDtyZXR1cm4gbnwwfX1lbHNle2lmKChmfDApPC0xfChmfDApPT0tMSZtPj4+MDwyMTQ3NDgzNjQ4KXtjW2U+PjJdPTQ7YnJlYWt9aWYoKGZ8MCk+MHwoZnwwKT09MCZtPj4+MD4yMTQ3NDgzNjQ3KXtjW2U+PjJdPTQ7bj0yMTQ3NDgzNjQ3O2k9aDtyZXR1cm4gbnwwfWVsc2V7bj1tO2k9aDtyZXR1cm4gbnwwfX19d2hpbGUoMCk7bj0tMjE0NzQ4MzY0ODtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBPbShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7Yj1pO2lmKCEoKGFbMTg1MDg+PjBdJjEpPT0wKT8odj1jWzE4NTE2Pj4yXXwwLCh2fDApIT0wKTowKXt2bih2KX1pZighKChhWzE4NDk2Pj4wXSYxKT09MCk/KHU9Y1sxODUwND4+Ml18MCwodXwwKSE9MCk6MCl7dm4odSl9aWYoISgoYVsxODQ4ND4+MF0mMSk9PTApPyh0PWNbMTg0OTI+PjJdfDAsKHR8MCkhPTApOjApe3ZuKHQpfWlmKCEoKGFbMTg0NzI+PjBdJjEpPT0wKT8ocz1jWzE4NDgwPj4yXXwwLChzfDApIT0wKTowKXt2bihzKX1pZighKChhWzE4NDYwPj4wXSYxKT09MCk/KHI9Y1sxODQ2OD4+Ml18MCwocnwwKSE9MCk6MCl7dm4ocil9aWYoISgoYVsxODQ0OD4+MF0mMSk9PTApPyhkPWNbMTg0NTY+PjJdfDAsKGR8MCkhPTApOjApe3ZuKGQpfWlmKCEoKGFbMTg0MzY+PjBdJjEpPT0wKT8ocD1jWzE4NDQ0Pj4yXXwwLChwfDApIT0wKTowKXt2bihwKX1pZighKChhWzE4NDI0Pj4wXSYxKT09MCk/KG89Y1sxODQzMj4+Ml18MCwob3wwKSE9MCk6MCl7dm4obyl9aWYoISgoYVsxODQxMj4+MF0mMSk9PTApPyhuPWNbMTg0MjA+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbMTg0MDA+PjBdJjEpPT0wKT8obT1jWzE4NDA4Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZighKChhWzE4Mzg4Pj4wXSYxKT09MCk/KGw9Y1sxODM5Nj4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoISgoYVsxODM3Nj4+MF0mMSk9PTApPyhrPWNbMTgzODQ+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKCEoKGFbMTgzNjQ+PjBdJjEpPT0wKT8oaj1jWzE4MzcyPj4yXXwwLChqfDApIT0wKTowKXt2bihqKX1pZighKChhWzE4MzUyPj4wXSYxKT09MCk/KGg9Y1sxODM2MD4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9aWYoISgoYVsxODM0MD4+MF0mMSk9PTApPyhnPWNbMTgzNDg+PjJdfDAsKGd8MCkhPTApOjApe3ZuKGcpfWlmKCEoKGFbMTgzMjg+PjBdJjEpPT0wKT8oZj1jWzE4MzM2Pj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1pZighKChhWzE4MzE2Pj4wXSYxKT09MCk/KGU9Y1sxODMyND4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9aWYoISgoYVsxODMwND4+MF0mMSk9PTApPyhxPWNbMTgzMTI+PjJdfDAsKHF8MCkhPTApOjApe3ZuKHEpfWRve2lmKCEoKGFbMTgyOTI+PjBdJjEpPT0wKSl7ZD1jWzE4MzAwPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODI4MD4+MF0mMSk9PTApKXtkPWNbMTgyODg+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4MjY4Pj4wXSYxKT09MCkpe2Q9Y1sxODI3Nj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTgyNTY+PjBdJjEpPT0wKSl7ZD1jWzE4MjY0Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODI0ND4+MF0mMSk9PTApKXtkPWNbMTgyNTI+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtpZigoYVsxODIzMl0mMSk9PTApe2k9YjtyZXR1cm59ZD1jWzE4MjQwPj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gUG0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO2I9aTtpZighKChhWzE4ODM2Pj4wXSYxKT09MCk/KHY9Y1sxODg0ND4+Ml18MCwodnwwKSE9MCk6MCl7dm4odil9aWYoISgoYVsxODgyND4+MF0mMSk9PTApPyh1PWNbMTg4MzI+PjJdfDAsKHV8MCkhPTApOjApe3ZuKHUpfWlmKCEoKGFbMTg4MTI+PjBdJjEpPT0wKT8odD1jWzE4ODIwPj4yXXwwLCh0fDApIT0wKTowKXt2bih0KX1pZighKChhWzE4ODAwPj4wXSYxKT09MCk/KHM9Y1sxODgwOD4+Ml18MCwoc3wwKSE9MCk6MCl7dm4ocyl9aWYoISgoYVsxODc4OD4+MF0mMSk9PTApPyhyPWNbMTg3OTY+PjJdfDAsKHJ8MCkhPTApOjApe3ZuKHIpfWlmKCEoKGFbMTg3NzY+PjBdJjEpPT0wKT8oZD1jWzE4Nzg0Pj4yXXwwLChkfDApIT0wKTowKXt2bihkKX1pZighKChhWzE4NzY0Pj4wXSYxKT09MCk/KHA9Y1sxODc3Mj4+Ml18MCwocHwwKSE9MCk6MCl7dm4ocCl9aWYoISgoYVsxODc1Mj4+MF0mMSk9PTApPyhvPWNbMTg3NjA+PjJdfDAsKG98MCkhPTApOjApe3ZuKG8pfWlmKCEoKGFbMTg3NDA+PjBdJjEpPT0wKT8obj1jWzE4NzQ4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhWzE4NzI4Pj4wXSYxKT09MCk/KG09Y1sxODczNj4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoISgoYVsxODcxNj4+MF0mMSk9PTApPyhsPWNbMTg3MjQ+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKCEoKGFbMTg3MDQ+PjBdJjEpPT0wKT8oaz1jWzE4NzEyPj4yXXwwLChrfDApIT0wKTowKXt2bihrKX1pZighKChhWzE4NjkyPj4wXSYxKT09MCk/KGo9Y1sxODcwMD4+Ml18MCwoanwwKSE9MCk6MCl7dm4oail9aWYoISgoYVsxODY4MD4+MF0mMSk9PTApPyhoPWNbMTg2ODg+PjJdfDAsKGh8MCkhPTApOjApe3ZuKGgpfWlmKCEoKGFbMTg2Njg+PjBdJjEpPT0wKT8oZz1jWzE4Njc2Pj4yXXwwLChnfDApIT0wKTowKXt2bihnKX1pZighKChhWzE4NjU2Pj4wXSYxKT09MCk/KGY9Y1sxODY2ND4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9aWYoISgoYVsxODY0ND4+MF0mMSk9PTApPyhlPWNbMTg2NTI+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWlmKCEoKGFbMTg2MzI+PjBdJjEpPT0wKT8ocT1jWzE4NjQwPj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1kb3tpZighKChhWzE4NjIwPj4wXSYxKT09MCkpe2Q9Y1sxODYyOD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg2MDg+PjBdJjEpPT0wKSl7ZD1jWzE4NjE2Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODU5Nj4+MF0mMSk9PTApKXtkPWNbMTg2MDQ+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4NTg0Pj4wXSYxKT09MCkpe2Q9Y1sxODU5Mj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg1NzI+PjBdJjEpPT0wKSl7ZD1jWzE4NTgwPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7aWYoKGFbMTg1NjBdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1sxODU2OD4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFFtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDtiPWk7aWYoISgoYVsxOTE0OD4+MF0mMSk9PTApPyh2PWNbMTkxNTY+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbMTkxMzY+PjBdJjEpPT0wKT8odT1jWzE5MTQ0Pj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhWzE5MTI0Pj4wXSYxKT09MCk/KHQ9Y1sxOTEzMj4+Ml18MCwodHwwKSE9MCk6MCl7dm4odCl9aWYoISgoYVsxOTExMj4+MF0mMSk9PTApPyhzPWNbMTkxMjA+PjJdfDAsKHN8MCkhPTApOjApe3ZuKHMpfWlmKCEoKGFbMTkxMDA+PjBdJjEpPT0wKT8ocj1jWzE5MTA4Pj4yXXwwLChyfDApIT0wKTowKXt2bihyKX1pZighKChhWzE5MDg4Pj4wXSYxKT09MCk/KGQ9Y1sxOTA5Nj4+Ml18MCwoZHwwKSE9MCk6MCl7dm4oZCl9aWYoISgoYVsxOTA3Nj4+MF0mMSk9PTApPyhwPWNbMTkwODQ+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMTkwNjQ+PjBdJjEpPT0wKT8obz1jWzE5MDcyPj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzE5MDUyPj4wXSYxKT09MCk/KG49Y1sxOTA2MD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsxOTA0MD4+MF0mMSk9PTApPyhtPWNbMTkwNDg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMTkwMjg+PjBdJjEpPT0wKT8obD1jWzE5MDM2Pj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzE5MDE2Pj4wXSYxKT09MCk/KGs9Y1sxOTAyND4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsxOTAwND4+MF0mMSk9PTApPyhqPWNbMTkwMTI+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMTg5OTI+PjBdJjEpPT0wKT8oaD1jWzE5ZTM+PjJdfDAsKGh8MCkhPTApOjApe3ZuKGgpfWlmKCEoKGFbMTg5ODA+PjBdJjEpPT0wKT8oZz1jWzE4OTg4Pj4yXXwwLChnfDApIT0wKTowKXt2bihnKX1pZighKChhWzE4OTY4Pj4wXSYxKT09MCk/KGY9Y1sxODk3Nj4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9aWYoISgoYVsxODk1Nj4+MF0mMSk9PTApPyhlPWNbMTg5NjQ+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWlmKCEoKGFbMTg5NDQ+PjBdJjEpPT0wKT8ocT1jWzE4OTUyPj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1kb3tpZighKChhWzE4OTMyPj4wXSYxKT09MCkpe2Q9Y1sxODk0MD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg5MjA+PjBdJjEpPT0wKSl7ZD1jWzE4OTI4Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODkwOD4+MF0mMSk9PTApKXtkPWNbMTg5MTY+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4ODk2Pj4wXSYxKT09MCkpe2Q9Y1sxODkwND4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg4ODQ+PjBdJjEpPT0wKSl7ZD1jWzE4ODkyPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7aWYoKGFbMTg4NzJdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1sxODg4MD4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFJtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDtiPWk7aWYoISgoYVsxOTk4OD4+MF0mMSk9PTApPyh2PWNbMTk5OTY+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbMTk5NzY+PjBdJjEpPT0wKT8odT1jWzE5OTg0Pj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhWzE5OTY0Pj4wXSYxKT09MCk/KHQ9Y1sxOTk3Mj4+Ml18MCwodHwwKSE9MCk6MCl7dm4odCl9aWYoISgoYVsxOTk1Mj4+MF0mMSk9PTApPyhzPWNbMTk5NjA+PjJdfDAsKHN8MCkhPTApOjApe3ZuKHMpfWlmKCEoKGFbMTk5NDA+PjBdJjEpPT0wKT8ocj1jWzE5OTQ4Pj4yXXwwLChyfDApIT0wKTowKXt2bihyKX1pZighKChhWzE5OTI4Pj4wXSYxKT09MCk/KGQ9Y1sxOTkzNj4+Ml18MCwoZHwwKSE9MCk6MCl7dm4oZCl9aWYoISgoYVsxOTkxNj4+MF0mMSk9PTApPyhwPWNbMTk5MjQ+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMTk5MDQ+PjBdJjEpPT0wKT8obz1jWzE5OTEyPj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzE5ODkyPj4wXSYxKT09MCk/KG49Y1sxOTkwMD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsxOTg4MD4+MF0mMSk9PTApPyhtPWNbMTk4ODg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMTk4Njg+PjBdJjEpPT0wKT8obD1jWzE5ODc2Pj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzE5ODU2Pj4wXSYxKT09MCk/KGs9Y1sxOTg2ND4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsxOTg0ND4+MF0mMSk9PTApPyhqPWNbMTk4NTI+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMTk4MzI+PjBdJjEpPT0wKT8oaD1jWzE5ODQwPj4yXXwwLChofDApIT0wKTowKXt2bihoKX1pZighKChhWzE5ODIwPj4wXSYxKT09MCk/KGc9Y1sxOTgyOD4+Ml18MCwoZ3wwKSE9MCk6MCl7dm4oZyl9aWYoISgoYVsxOTgwOD4+MF0mMSk9PTApPyhmPWNbMTk4MTY+PjJdfDAsKGZ8MCkhPTApOjApe3ZuKGYpfWlmKCEoKGFbMTk3OTY+PjBdJjEpPT0wKT8oZT1jWzE5ODA0Pj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pZighKChhWzE5Nzg0Pj4wXSYxKT09MCk/KHE9Y1sxOTc5Mj4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9ZG97aWYoISgoYVsxOTc3Mj4+MF0mMSk9PTApKXtkPWNbMTk3ODA+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE5NzYwPj4wXSYxKT09MCkpe2Q9Y1sxOTc2OD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTk3NDg+PjBdJjEpPT0wKSl7ZD1jWzE5NzU2Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxOTczNj4+MF0mMSk9PTApKXtkPWNbMTk3NDQ+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE5NzI0Pj4wXSYxKT09MCkpe2Q9Y1sxOTczMj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2lmKChhWzE5NzEyXSYxKT09MCl7aT1iO3JldHVybn1kPWNbMTk3MjA+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59dm4oZCk7aT1iO3JldHVybn1mdW5jdGlvbiBTbShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO2I9aTtpZighKChhWzIwMzgwPj4wXSYxKT09MCk/KHE9Y1syMDM4OD4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9aWYoISgoYVsyMDM2OD4+MF0mMSk9PTApPyhwPWNbMjAzNzY+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMjAzNTY+PjBdJjEpPT0wKT8obz1jWzIwMzY0Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzIwMzQ0Pj4wXSYxKT09MCk/KG49Y1syMDM1Mj4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsyMDMzMj4+MF0mMSk9PTApPyhtPWNbMjAzNDA+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMjAzMjA+PjBdJjEpPT0wKT8oZD1jWzIwMzI4Pj4yXXwwLChkfDApIT0wKTowKXt2bihkKX1pZighKChhWzIwMzA4Pj4wXSYxKT09MCk/KGw9Y1syMDMxNj4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoISgoYVsyMDI5Nj4+MF0mMSk9PTApPyhrPWNbMjAzMDQ+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKCEoKGFbMjAyODQ+PjBdJjEpPT0wKT8oaj1jWzIwMjkyPj4yXXwwLChqfDApIT0wKTowKXt2bihqKX1pZighKChhWzIwMjcyPj4wXSYxKT09MCk/KGg9Y1syMDI4MD4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9aWYoISgoYVsyMDI2MD4+MF0mMSk9PTApPyhnPWNbMjAyNjg+PjJdfDAsKGd8MCkhPTApOjApe3ZuKGcpfWlmKCEoKGFbMjAyNDg+PjBdJjEpPT0wKT8oZj1jWzIwMjU2Pj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1pZighKChhWzIwMjM2Pj4wXSYxKT09MCk/KGU9Y1syMDI0ND4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9aWYoKGFbMjAyMjRdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1syMDIzMj4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFRtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7Yj1pO2lmKCEoKGFbMjA5MTY+PjBdJjEpPT0wKT8ocT1jWzIwOTI0Pj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1pZighKChhWzIwOTA0Pj4wXSYxKT09MCk/KHA9Y1syMDkxMj4+Ml18MCwocHwwKSE9MCk6MCl7dm4ocCl9aWYoISgoYVsyMDg5Mj4+MF0mMSk9PTApPyhvPWNbMjA5MDA+PjJdfDAsKG98MCkhPTApOjApe3ZuKG8pfWlmKCEoKGFbMjA4ODA+PjBdJjEpPT0wKT8obj1jWzIwODg4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhWzIwODY4Pj4wXSYxKT09MCk/KG09Y1syMDg3Nj4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoISgoYVsyMDg1Nj4+MF0mMSk9PTApPyhkPWNbMjA4NjQ+PjJdfDAsKGR8MCkhPTApOjApe3ZuKGQpfWlmKCEoKGFbMjA4NDQ+PjBdJjEpPT0wKT8obD1jWzIwODUyPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzIwODMyPj4wXSYxKT09MCk/KGs9Y1syMDg0MD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsyMDgyMD4+MF0mMSk9PTApPyhqPWNbMjA4Mjg+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMjA4MDg+PjBdJjEpPT0wKT8oaD1jWzIwODE2Pj4yXXwwLChofDApIT0wKTowKXt2bihoKX1pZighKChhWzIwNzk2Pj4wXSYxKT09MCk/KGc9Y1syMDgwND4+Ml18MCwoZ3wwKSE9MCk6MCl7dm4oZyl9aWYoISgoYVsyMDc4ND4+MF0mMSk9PTApPyhmPWNbMjA3OTI+PjJdfDAsKGZ8MCkhPTApOjApe3ZuKGYpfWlmKCEoKGFbMjA3NzI+PjBdJjEpPT0wKT8oZT1jWzIwNzgwPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pZigoYVsyMDc2MF0mMSk9PTApe2k9YjtyZXR1cm59ZD1jWzIwNzY4Pj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gVW0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7Zz1pO2k9aSsxNnwwO2g9ZztjW2g+PjJdPWI7Zj0oZnwwKT09MD8yMTI4ODpmO2o9Y1tmPj4yXXwwO2E6ZG97aWYoKGR8MCk9PTApe2lmKChqfDApPT0wKXtrPTA7aT1nO3JldHVybiBrfDB9fWVsc2V7aWYoKGJ8MCk9PTApe2NbaD4+Ml09aH1lbHNle2g9Yn1pZigoZXwwKT09MCl7az0tMjtpPWc7cmV0dXJuIGt8MH1kb3tpZigoanwwKT09MCl7Yj1hW2Q+PjBdfDA7aj1iJjI1NTtpZihiPDwyND4+MjQ+LTEpe2NbaD4+Ml09ajtrPWI8PDI0Pj4yNCE9MCYxO2k9ZztyZXR1cm4ga3wwfWVsc2V7aj1qKyAtMTk0fDA7aWYoaj4+PjA+NTApe2JyZWFrIGF9Yj1lKyAtMXwwO2o9Y1syMTA3Misoajw8Mik+PjJdfDA7ZD1kKzF8MDticmVha319ZWxzZXtiPWV9fXdoaWxlKDApO2I6ZG97aWYoKGJ8MCkhPTApe2s9YVtkPj4wXXwwO2w9KGsmMjU1KT4+PjM7aWYoKGwrIC0xNnxsKyhqPj4yNikpPj4+MD43KXticmVhayBhfXdoaWxlKDEpe2Q9ZCsxfDA7aj0oayYyNTUpKyAtMTI4fGo8PDY7Yj1iKyAtMXwwO2lmKChqfDApPj0wKXticmVha31pZigoYnwwKT09MCl7YnJlYWsgYn1rPWFbZD4+MF18MDtpZigoKGsmMjU1KSsgLTEyOHwwKT4+PjA+NjMpe2JyZWFrIGF9fWNbZj4+Ml09MDtjW2g+PjJdPWo7bD1lLWJ8MDtpPWc7cmV0dXJuIGx8MH19d2hpbGUoMCk7Y1tmPj4yXT1qO2w9LTI7aT1nO3JldHVybiBsfDB9fXdoaWxlKDApO2NbZj4+Ml09MDtjWyhiYigpfDApPj4yXT04NDtsPS0xO2k9ZztyZXR1cm4gbHwwfWZ1bmN0aW9uIFZtKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO2g9aTtrPWNbZT4+Ml18MDtpZigoZ3wwKSE9MD8obD1jW2c+PjJdfDAsKGx8MCkhPTApOjApe2lmKChifDApPT0wKXtqPWY7Zz0xNn1lbHNle2NbZz4+Ml09MDtqPWY7Zz0zNX19ZWxzZXtpZigoYnwwKT09MCl7aj1mO2c9N31lbHNle2o9ZjtnPTZ9fWE6d2hpbGUoMSl7aWYoKGd8MCk9PTYpe2lmKChqfDApPT0wKXtnPTUzO2JyZWFrfXdoaWxlKDEpe2c9YVtrPj4wXXwwO2I6ZG97aWYoKChnJjI1NSkrIC0xfDApPj4+MDwxMjc/KGsmM3wwKT09MCZqPj4+MD4zOjApe2Rve2c9Y1trPj4yXXwwO2lmKCgoZysgLTE2ODQzMDA5fGcpJi0yMTM5MDYyMTQ0fDApIT0wKXtnPWcmMjU1O2JyZWFrIGJ9Y1tiPj4yXT1nJjI1NTtjW2IrND4+Ml09ZFtrKzE+PjBdfDA7Y1tiKzg+PjJdPWRbaysyPj4wXXwwO2w9aztrPWsrNHwwO209YjtiPWIrMTZ8MDtjW20rMTI+PjJdPWRbbCszPj4wXXwwO2o9aisgLTR8MH13aGlsZShqPj4+MD4zKTtnPWFbaz4+MF18MH19d2hpbGUoMCk7bD1nJjI1NTtpZighKChsKyAtMXwwKT4+PjA8MTI3KSl7YnJlYWt9Y1tiPj4yXT1sO2o9aisgLTF8MDtpZigoanwwKT09MCl7Zz01MzticmVhayBhfWVsc2V7Yj1iKzR8MDtrPWsrMXwwfX1sPWwrIC0xOTR8MDtpZihsPj4+MD41MCl7bD1nO2c9NDc7YnJlYWt9bD1jWzIxMDcyKyhsPDwyKT4+Ml18MDtrPWsrMXwwO2c9MzU7Y29udGludWV9ZWxzZSBpZigoZ3wwKT09Nyl7bD1hW2s+PjBdfDA7aWYoKChsJjI1NSkrIC0xfDApPj4+MDwxMjc/KGsmM3wwKT09MDowKXtsPWNbaz4+Ml18MDtpZigoKGwrIC0xNjg0MzAwOXxsKSYtMjEzOTA2MjE0NHwwKT09MCl7ZG97az1rKzR8MDtqPWorIC00fDA7bD1jW2s+PjJdfDB9d2hpbGUoKChsKyAtMTY4NDMwMDl8bCkmLTIxMzkwNjIxNDR8MCk9PTApfWc9bCYyNTU7bD1sJjI1NX1lbHNle2c9bH1sPWwmMjU1O2lmKChsKyAtMXwwKT4+PjA8MTI3KXtqPWorIC0xfDA7az1rKzF8MDtnPTc7Y29udGludWV9bD1sKyAtMTk0fDA7aWYobD4+PjA+NTApe2w9ZztnPTQ3O2JyZWFrfWw9Y1syMTA3MisobDw8Mik+PjJdfDA7az1rKzF8MDtnPTE2O2NvbnRpbnVlfWVsc2UgaWYoKGd8MCk9PTE2KXttPShkW2s+PjBdfDApPj4+MztpZigobSsgLTE2fG0rKGw+PjI2KSk+Pj4wPjcpe2c9MTc7YnJlYWt9Zz1rKzF8MDtpZigobCYzMzU1NDQzMnwwKSE9MCl7aWYoKChkW2c+PjBdfDApKyAtMTI4fDApPj4+MD42Myl7Zz0yMDticmVha31nPWsrMnwwO2lmKChsJjUyNDI4OHwwKT09MCl7az1nfWVsc2V7aWYoKChkW2c+PjBdfDApKyAtMTI4fDApPj4+MD42Myl7Zz0yMzticmVha31rPWsrM3wwfX1lbHNle2s9Z31qPWorIC0xfDA7Zz03O2NvbnRpbnVlfWVsc2UgaWYoKGd8MCk9PTM1KXttPWRbaz4+MF18MDtnPW0+Pj4zO2lmKChnKyAtMTZ8ZysobD4+MjYpKT4+PjA+Nyl7Zz0zNjticmVha31nPWsrMXwwO2w9bSsgLTEyOHxsPDw2O2lmKChsfDApPDApe209KGRbZz4+MF18MCkrIC0xMjh8MDtpZihtPj4+MD42Myl7Zz0zOTticmVha31nPWsrMnwwO2w9bXxsPDw2O2lmKChsfDApPDApe2c9KGRbZz4+MF18MCkrIC0xMjh8MDtpZihnPj4+MD42Myl7Zz00MjticmVha31sPWd8bDw8NjtrPWsrM3wwfWVsc2V7az1nfX1lbHNle2s9Z31jW2I+PjJdPWw7Yj1iKzR8MDtqPWorIC0xfDA7Zz02O2NvbnRpbnVlfX1pZigoZ3wwKT09MTcpe2s9aysgLTF8MDtnPTQ1fWVsc2UgaWYoKGd8MCk9PTIwKXtrPWsrIC0xfDA7Zz00NX1lbHNlIGlmKChnfDApPT0yMyl7az1rKyAtMXwwO2c9NDV9ZWxzZSBpZigoZ3wwKT09MzYpe2s9aysgLTF8MDtnPTQ1fWVsc2UgaWYoKGd8MCk9PTM5KXtrPWsrIC0xfDA7Zz00NX1lbHNlIGlmKChnfDApPT00Mil7az1rKyAtMXwwO2c9NDV9ZWxzZSBpZigoZ3wwKT09NTMpe2k9aDtyZXR1cm4gZnwwfWlmKChnfDApPT00NSl7aWYoKGx8MCk9PTApe2w9YVtrPj4wXXwwO2c9NDd9fWlmKChnfDApPT00Nyl7aWYobDw8MjQ+PjI0PT0wKXtpZigoYnwwKSE9MCl7Y1tiPj4yXT0wO2NbZT4+Ml09MH1tPWYtanwwO2k9aDtyZXR1cm4gbXwwfX1jWyhiYigpfDApPj4yXT04NDtpZigoYnwwKT09MCl7bT0tMTtpPWg7cmV0dXJuIG18MH1jW2U+PjJdPWs7bT0tMTtpPWg7cmV0dXJuIG18MH1mdW5jdGlvbiBXbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT1pO2lmKChifDApPT0wKXtiPTE7aT1lO3JldHVybiBifDB9aWYoZD4+PjA8MTI4KXthW2I+PjBdPWQ7Yj0xO2k9ZTtyZXR1cm4gYnwwfWlmKGQ+Pj4wPDIwNDgpe2FbYj4+MF09ZD4+PjZ8MTkyO2FbYisxPj4wXT1kJjYzfDEyODtiPTI7aT1lO3JldHVybiBifDB9aWYoZD4+PjA8NTUyOTZ8KGQrIC01NzM0NHwwKT4+PjA8ODE5Mil7YVtiPj4wXT1kPj4+MTJ8MjI0O2FbYisxPj4wXT1kPj4+NiY2M3wxMjg7YVtiKzI+PjBdPWQmNjN8MTI4O2I9MztpPWU7cmV0dXJuIGJ8MH1pZigoZCsgLTY1NTM2fDApPj4+MDwxMDQ4NTc2KXthW2I+PjBdPWQ+Pj4xOHwyNDA7YVtiKzE+PjBdPWQ+Pj4xMiY2M3wxMjg7YVtiKzI+PjBdPWQ+Pj42JjYzfDEyODthW2IrMz4+MF09ZCY2M3wxMjg7Yj00O2k9ZTtyZXR1cm4gYnwwfWVsc2V7Y1soYmIoKXwwKT4+Ml09ODQ7Yj0tMTtpPWU7cmV0dXJuIGJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBYbShhKXthPWF8MDt2YXIgYj0wO2I9aTtSYihhfDApO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFltKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBabShhKXthPWF8MDtyZXR1cm4gMjEzMjB9ZnVuY3Rpb24gX20oYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uICRtKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBhbihhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gYm4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gY24oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZG4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZW4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZm4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZ24oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybihhfDApPT0oYnwwKXwwfWZ1bmN0aW9uIGhuKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrNjR8MDtmPWU7aWYoKGF8MCk9PShifDApKXtoPTE7aT1lO3JldHVybiBofDB9aWYoKGJ8MCk9PTApe2g9MDtpPWU7cmV0dXJuIGh8MH1iPW5uKGIsMjE0ODgpfDA7aWYoKGJ8MCk9PTApe2g9MDtpPWU7cmV0dXJuIGh8MH1oPWYrMHwwO2c9aCs1NnwwO2Rve2NbaD4+Ml09MDtoPWgrNHwwfXdoaWxlKChofDApPChnfDApKTtjW2Y+PjJdPWI7Y1tmKzg+PjJdPWE7Y1tmKzEyPj4yXT0tMTtjW2YrNDg+PjJdPTE7emNbY1soY1tiPj4yXXwwKSsyOD4+Ml0mMzFdKGIsZixjW2Q+PjJdfDAsMSk7aWYoKGNbZisyND4+Ml18MCkhPTEpe2g9MDtpPWU7cmV0dXJuIGh8MH1jW2Q+PjJdPWNbZisxNj4+Ml07aD0xO2k9ZTtyZXR1cm4gaHwwfWZ1bmN0aW9uIGpuKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wO2c9aTtpZigoY1tkKzg+PjJdfDApIT0oYnwwKSl7aT1nO3JldHVybn1iPWQrMTZ8MDtoPWNbYj4+Ml18MDtpZigoaHwwKT09MCl7Y1tiPj4yXT1lO2NbZCsyND4+Ml09ZjtjW2QrMzY+PjJdPTE7aT1nO3JldHVybn1pZigoaHwwKSE9KGV8MCkpe2g9ZCszNnwwO2NbaD4+Ml09KGNbaD4+Ml18MCkrMTtjW2QrMjQ+PjJdPTI7YVtkKzU0Pj4wXT0xO2k9ZztyZXR1cm59ZT1kKzI0fDA7aWYoKGNbZT4+Ml18MCkhPTIpe2k9ZztyZXR1cm59Y1tlPj4yXT1mO2k9ZztyZXR1cm59ZnVuY3Rpb24ga24oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTA7Zz1pO2lmKChifDApIT0oY1tkKzg+PjJdfDApKXtoPWNbYis4Pj4yXXwwO3pjW2NbKGNbaD4+Ml18MCkrMjg+PjJdJjMxXShoLGQsZSxmKTtpPWc7cmV0dXJufWI9ZCsxNnwwO2g9Y1tiPj4yXXwwO2lmKChofDApPT0wKXtjW2I+PjJdPWU7Y1tkKzI0Pj4yXT1mO2NbZCszNj4+Ml09MTtpPWc7cmV0dXJufWlmKChofDApIT0oZXwwKSl7aD1kKzM2fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2NbZCsyND4+Ml09MjthW2QrNTQ+PjBdPTE7aT1nO3JldHVybn1lPWQrMjR8MDtpZigoY1tlPj4yXXwwKSE9Mil7aT1nO3JldHVybn1jW2U+PjJdPWY7aT1nO3JldHVybn1mdW5jdGlvbiBsbihiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2lmKChifDApPT0oY1tkKzg+PjJdfDApKXtiPWQrMTZ8MDtoPWNbYj4+Ml18MDtpZigoaHwwKT09MCl7Y1tiPj4yXT1lO2NbZCsyND4+Ml09ZjtjW2QrMzY+PjJdPTE7aT1nO3JldHVybn1pZigoaHwwKSE9KGV8MCkpe2w9ZCszNnwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtjW2QrMjQ+PjJdPTI7YVtkKzU0Pj4wXT0xO2k9ZztyZXR1cm59ZT1kKzI0fDA7aWYoKGNbZT4+Ml18MCkhPTIpe2k9ZztyZXR1cm59Y1tlPj4yXT1mO2k9ZztyZXR1cm59aj1jW2IrMTI+PjJdfDA7aD1iKyhqPDwzKSsxNnwwO2s9Y1tiKzIwPj4yXXwwO2w9az4+ODtpZigoayYxfDApIT0wKXtsPWNbKGNbZT4+Ml18MCkrbD4+Ml18MH1tPWNbYisxNj4+Ml18MDt6Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSYzMV0obSxkLGUrbHwwLChrJjJ8MCkhPTA/ZjoyKTtpZigoanwwKTw9MSl7aT1nO3JldHVybn1qPWQrNTR8MDtrPWIrMjR8MDt3aGlsZSgxKXtiPWNbays0Pj4yXXwwO2w9Yj4+ODtpZigoYiYxfDApIT0wKXtsPWNbKGNbZT4+Ml18MCkrbD4+Ml18MH1tPWNbaz4+Ml18MDt6Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSYzMV0obSxkLGUrbHwwLChiJjJ8MCkhPTA/ZjoyKTtpZigoYVtqPj4wXXwwKSE9MCl7Zj0xNjticmVha31rPWsrOHwwO2lmKCEoaz4+PjA8aD4+PjApKXtmPTE2O2JyZWFrfX1pZigoZnwwKT09MTYpe2k9ZztyZXR1cm59fWZ1bmN0aW9uIG1uKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2k9aSs2NHwwO2g9ZTtjW2Q+PjJdPWNbY1tkPj4yXT4+Ml07aWYoISgoYXwwKT09KGJ8MCl8KGJ8MCk9PTIxNzkyKSl7aWYoKChifDApIT0wPyhrPW5uKGIsMjE2MDApfDAsKGt8MCkhPTApOjApPyhjW2srOD4+Ml0mfmNbYSs4Pj4yXXwwKT09MDowKXtiPWNbYSsxMj4+Ml18MDtrPWsrMTJ8MDtpZighKChifDApPT0yMTc3Nj8xOihifDApPT0oY1trPj4yXXwwKSkpe2lmKCgoKGJ8MCkhPTA/KGc9bm4oYiwyMTQ4OCl8MCwoZ3wwKSE9MCk6MCk/KGo9Y1trPj4yXXwwLChqfDApIT0wKTowKT8oZj1ubihqLDIxNDg4KXwwLChmfDApIT0wKTowKXtrPWgrMHwwO2o9ays1NnwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChqfDApKTtjW2g+PjJdPWY7Y1toKzg+PjJdPWc7Y1toKzEyPj4yXT0tMTtjW2grNDg+PjJdPTE7emNbY1soY1tmPj4yXXwwKSsyOD4+Ml0mMzFdKGYsaCxjW2Q+PjJdfDAsMSk7aWYoKGNbaCsyND4+Ml18MCk9PTEpe2NbZD4+Ml09Y1toKzE2Pj4yXTtkPTF9ZWxzZXtkPTB9fWVsc2V7ZD0wfX1lbHNle2Q9MX19ZWxzZXtkPTB9fWVsc2V7ZD0xfWk9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIG5uKGQsZSl7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO2Y9aTtpPWkrNjR8MDttPWY7Zz1jW2Q+PjJdfDA7aD1kKyhjW2crIC04Pj4yXXwwKXwwO2c9Y1tnKyAtND4+Ml18MDtjW20+PjJdPWU7Y1ttKzQ+PjJdPWQ7Y1ttKzg+PjJdPTIxNDMyO3A9bSsxMnwwO249bSsxNnwwO289bSsyMHwwO2o9bSsyNHwwO2Q9bSsyOHwwO2s9bSszMnwwO2w9bSs0MHwwO3I9KGd8MCk9PShlfDApO2U9cCswfDA7cT1lKzQwfDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KHF8MCkpO2JbcCs0MD4+MV09MDthW3ArNDI+PjBdPTA7ZG97aWYocil7Y1ttKzQ4Pj4yXT0xO3djW2NbKGNbZz4+Ml18MCkrMjA+PjJdJjYzXShnLG0saCxoLDEsMCk7ZD0oY1tqPj4yXXwwKT09MT9oOjB9ZWxzZXtqY1tjWyhjW2c+PjJdfDApKzI0Pj4yXSYzMV0oZyxtLGgsMSwwKTtnPWNbbSszNj4+Ml18MDtpZigoZ3wwKT09MCl7aWYoKGNbbD4+Ml18MCkhPTEpe2Q9MDticmVha31pZigoY1tkPj4yXXwwKSE9MSl7ZD0wO2JyZWFrfWQ9KGNbaz4+Ml18MCk9PTE/Y1tvPj4yXXwwOjA7YnJlYWt9ZWxzZSBpZigoZ3wwKSE9MSl7ZD0wO2JyZWFrfWlmKChjW2o+PjJdfDApIT0xKXtpZigoY1tsPj4yXXwwKSE9MCl7ZD0wO2JyZWFrfWlmKChjW2Q+PjJdfDApIT0xKXtkPTA7YnJlYWt9aWYoKGNbaz4+Ml18MCkhPTEpe2Q9MDticmVha319ZD1jW24+PjJdfDB9fXdoaWxlKDApO2k9ZjtyZXR1cm4gZHwwfWZ1bmN0aW9uIG9uKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtoPWk7aWYoKGJ8MCk9PShjW2QrOD4+Ml18MCkpe2lmKChjW2QrND4+Ml18MCkhPShlfDApKXtpPWg7cmV0dXJufWU9ZCsyOHwwO2lmKChjW2U+PjJdfDApPT0xKXtpPWg7cmV0dXJufWNbZT4+Ml09ZjtpPWg7cmV0dXJufWlmKChifDApPT0oY1tkPj4yXXwwKSl7aWYoKGNbZCsxNj4+Ml18MCkhPShlfDApPyhsPWQrMjB8MCwoY1tsPj4yXXwwKSE9KGV8MCkpOjApe2NbZCszMj4+Ml09ZjtrPWQrNDR8MDtpZigoY1trPj4yXXwwKT09NCl7aT1oO3JldHVybn13PWNbYisxMj4+Ml18MDtwPWIrKHc8PDMpKzE2fDA7YTpkb3tpZigod3wwKT4wKXtuPWQrNTJ8MDtxPWQrNTN8MDtvPWQrNTR8MDt0PWIrOHwwO3I9ZCsyNHwwO3U9MDtzPTA7Yj1iKzE2fDA7Yjpkb3thW24+PjBdPTA7YVtxPj4wXT0wO3Y9Y1tiKzQ+PjJdfDA7dz12Pj44O2lmKCh2JjF8MCkhPTApe3c9Y1soY1tlPj4yXXwwKSt3Pj4yXXwwfXg9Y1tiPj4yXXwwO3djW2NbKGNbeD4+Ml18MCkrMjA+PjJdJjYzXSh4LGQsZSxlK3d8MCwyLSh2Pj4+MSYxKXwwLGcpO2lmKChhW28+PjBdfDApIT0wKXticmVha31kb3tpZigoYVtxPj4wXXwwKSE9MCl7aWYoKGFbbj4+MF18MCk9PTApe2lmKChjW3Q+PjJdJjF8MCk9PTApe3M9MTticmVhayBifWVsc2V7cz0xO2JyZWFrfX1pZigoY1tyPj4yXXwwKT09MSl7Yj0yNzticmVhayBhfWlmKChjW3Q+PjJdJjJ8MCk9PTApe2I9Mjc7YnJlYWsgYX1lbHNle3U9MTtzPTF9fX13aGlsZSgwKTtiPWIrOHwwfXdoaWxlKGI+Pj4wPHA+Pj4wKTtpZih1KXtqPXM7Yj0yNn1lbHNle209cztiPTIzfX1lbHNle209MDtiPTIzfX13aGlsZSgwKTtpZigoYnwwKT09MjMpe2NbbD4+Ml09ZTt4PWQrNDB8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoKGNbZCszNj4+Ml18MCk9PTE/KGNbZCsyND4+Ml18MCk9PTI6MCl7YVtkKzU0Pj4wXT0xO2lmKG0pe2I9Mjd9ZWxzZXtiPTI4fX1lbHNle2o9bTtiPTI2fX1pZigoYnwwKT09MjYpe2lmKGope2I9Mjd9ZWxzZXtiPTI4fX1pZigoYnwwKT09Mjcpe2Nbaz4+Ml09MztpPWg7cmV0dXJufWVsc2UgaWYoKGJ8MCk9PTI4KXtjW2s+PjJdPTQ7aT1oO3JldHVybn19aWYoKGZ8MCkhPTEpe2k9aDtyZXR1cm59Y1tkKzMyPj4yXT0xO2k9aDtyZXR1cm59bT1jW2IrMTI+PjJdfDA7aj1iKyhtPDwzKSsxNnwwO2w9Y1tiKzIwPj4yXXwwO249bD4+ODtpZigobCYxfDApIT0wKXtuPWNbKGNbZT4+Ml18MCkrbj4+Ml18MH14PWNbYisxNj4+Ml18MDtqY1tjWyhjW3g+PjJdfDApKzI0Pj4yXSYzMV0oeCxkLGUrbnwwLChsJjJ8MCkhPTA/ZjoyLGcpO2w9YisyNHwwO2lmKChtfDApPD0xKXtpPWg7cmV0dXJufW09Y1tiKzg+PjJdfDA7aWYoKG0mMnwwKT09MD8oaz1kKzM2fDAsKGNbaz4+Ml18MCkhPTEpOjApe2lmKChtJjF8MCk9PTApe209ZCs1NHwwO2I9bDt3aGlsZSgxKXtpZigoYVttPj4wXXwwKSE9MCl7Yj01MzticmVha31pZigoY1trPj4yXXwwKT09MSl7Yj01MzticmVha31uPWNbYis0Pj4yXXwwO289bj4+ODtpZigobiYxfDApIT0wKXtvPWNbKGNbZT4+Ml18MCkrbz4+Ml18MH14PWNbYj4+Ml18MDtqY1tjWyhjW3g+PjJdfDApKzI0Pj4yXSYzMV0oeCxkLGUrb3wwLChuJjJ8MCkhPTA/ZjoyLGcpO2I9Yis4fDA7aWYoIShiPj4+MDxqPj4+MCkpe2I9NTM7YnJlYWt9fWlmKChifDApPT01Myl7aT1oO3JldHVybn19bj1kKzI0fDA7bz1kKzU0fDA7Yj1sO3doaWxlKDEpe2lmKChhW28+PjBdfDApIT0wKXtiPTUzO2JyZWFrfWlmKChjW2s+PjJdfDApPT0xPyhjW24+PjJdfDApPT0xOjApe2I9NTM7YnJlYWt9bT1jW2IrND4+Ml18MDtwPW0+Pjg7aWYoKG0mMXwwKSE9MCl7cD1jWyhjW2U+PjJdfDApK3A+PjJdfDB9eD1jW2I+PjJdfDA7amNbY1soY1t4Pj4yXXwwKSsyND4+Ml0mMzFdKHgsZCxlK3B8MCwobSYyfDApIT0wP2Y6MixnKTtiPWIrOHwwO2lmKCEoYj4+PjA8aj4+PjApKXtiPTUzO2JyZWFrfX1pZigoYnwwKT09NTMpe2k9aDtyZXR1cm59fWs9ZCs1NHwwO3doaWxlKDEpe2lmKChhW2s+PjBdfDApIT0wKXtiPTUzO2JyZWFrfW09Y1tsKzQ+PjJdfDA7Yj1tPj44O2lmKChtJjF8MCkhPTApe2I9Y1soY1tlPj4yXXwwKStiPj4yXXwwfXg9Y1tsPj4yXXwwO2pjW2NbKGNbeD4+Ml18MCkrMjQ+PjJdJjMxXSh4LGQsZStifDAsKG0mMnwwKSE9MD9mOjIsZyk7bD1sKzh8MDtpZighKGw+Pj4wPGo+Pj4wKSl7Yj01MzticmVha319aWYoKGJ8MCk9PTUzKXtpPWg7cmV0dXJufX1mdW5jdGlvbiBwbihiLGQsZSxmLGcpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO2g9aTtpZigoYnwwKT09KGNbZCs4Pj4yXXwwKSl7aWYoKGNbZCs0Pj4yXXwwKSE9KGV8MCkpe2k9aDtyZXR1cm59aj1kKzI4fDA7aWYoKGNbaj4+Ml18MCk9PTEpe2k9aDtyZXR1cm59Y1tqPj4yXT1mO2k9aDtyZXR1cm59aWYoKGJ8MCkhPShjW2Q+PjJdfDApKXtsPWNbYis4Pj4yXXwwO2pjW2NbKGNbbD4+Ml18MCkrMjQ+PjJdJjMxXShsLGQsZSxmLGcpO2k9aDtyZXR1cm59aWYoKGNbZCsxNj4+Ml18MCkhPShlfDApPyhrPWQrMjB8MCwoY1trPj4yXXwwKSE9KGV8MCkpOjApe2NbZCszMj4+Ml09ZjtmPWQrNDR8MDtpZigoY1tmPj4yXXwwKT09NCl7aT1oO3JldHVybn1sPWQrNTJ8MDthW2w+PjBdPTA7bT1kKzUzfDA7YVttPj4wXT0wO2I9Y1tiKzg+PjJdfDA7d2NbY1soY1tiPj4yXXwwKSsyMD4+Ml0mNjNdKGIsZCxlLGUsMSxnKTtpZigoYVttPj4wXXwwKSE9MCl7aWYoKGFbbD4+MF18MCk9PTApe2I9MTtqPTEzfX1lbHNle2I9MDtqPTEzfWRve2lmKChqfDApPT0xMyl7Y1trPj4yXT1lO209ZCs0MHwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtpZigoY1tkKzM2Pj4yXXwwKT09MT8oY1tkKzI0Pj4yXXwwKT09MjowKXthW2QrNTQ+PjBdPTE7aWYoYil7YnJlYWt9fWVsc2V7aj0xNn1pZigoanwwKT09MTY/YjowKXticmVha31jW2Y+PjJdPTQ7aT1oO3JldHVybn19d2hpbGUoMCk7Y1tmPj4yXT0zO2k9aDtyZXR1cm59aWYoKGZ8MCkhPTEpe2k9aDtyZXR1cm59Y1tkKzMyPj4yXT0xO2k9aDtyZXR1cm59ZnVuY3Rpb24gcW4oYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wO2c9aTtpZigoY1tkKzg+PjJdfDApPT0oYnwwKSl7aWYoKGNbZCs0Pj4yXXwwKSE9KGV8MCkpe2k9ZztyZXR1cm59ZD1kKzI4fDA7aWYoKGNbZD4+Ml18MCk9PTEpe2k9ZztyZXR1cm59Y1tkPj4yXT1mO2k9ZztyZXR1cm59aWYoKGNbZD4+Ml18MCkhPShifDApKXtpPWc7cmV0dXJufWlmKChjW2QrMTY+PjJdfDApIT0oZXwwKT8oaD1kKzIwfDAsKGNbaD4+Ml18MCkhPShlfDApKTowKXtjW2QrMzI+PjJdPWY7Y1toPj4yXT1lO2I9ZCs0MHwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrMTtpZigoY1tkKzM2Pj4yXXwwKT09MT8oY1tkKzI0Pj4yXXwwKT09MjowKXthW2QrNTQ+PjBdPTF9Y1tkKzQ0Pj4yXT00O2k9ZztyZXR1cm59aWYoKGZ8MCkhPTEpe2k9ZztyZXR1cm59Y1tkKzMyPj4yXT0xO2k9ZztyZXR1cm59ZnVuY3Rpb24gcm4oYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtqPWk7aWYoKGJ8MCkhPShjW2QrOD4+Ml18MCkpe209ZCs1MnwwO2w9YVttPj4wXXwwO289ZCs1M3wwO249YVtvPj4wXXwwO3E9Y1tiKzEyPj4yXXwwO2s9YisocTw8MykrMTZ8MDthW20+PjBdPTA7YVtvPj4wXT0wO3A9Y1tiKzIwPj4yXXwwO3I9cD4+ODtpZigocCYxfDApIT0wKXtyPWNbKGNbZj4+Ml18MCkrcj4+Ml18MH10PWNbYisxNj4+Ml18MDt3Y1tjWyhjW3Q+PjJdfDApKzIwPj4yXSY2M10odCxkLGUsZityfDAsKHAmMnwwKSE9MD9nOjIsaCk7YTpkb3tpZigocXwwKT4xKXtxPWQrMjR8MDtwPWIrOHwwO3I9ZCs1NHwwO2I9YisyNHwwO2Rve2lmKChhW3I+PjBdfDApIT0wKXticmVhayBhfWlmKChhW20+PjBdfDApPT0wKXtpZigoYVtvPj4wXXwwKSE9MD8oY1twPj4yXSYxfDApPT0wOjApe2JyZWFrIGF9fWVsc2V7aWYoKGNbcT4+Ml18MCk9PTEpe2JyZWFrIGF9aWYoKGNbcD4+Ml0mMnwwKT09MCl7YnJlYWsgYX19YVttPj4wXT0wO2Fbbz4+MF09MDtzPWNbYis0Pj4yXXwwO3Q9cz4+ODtpZigocyYxfDApIT0wKXt0PWNbKGNbZj4+Ml18MCkrdD4+Ml18MH11PWNbYj4+Ml18MDt3Y1tjWyhjW3U+PjJdfDApKzIwPj4yXSY2M10odSxkLGUsZit0fDAsKHMmMnwwKSE9MD9nOjIsaCk7Yj1iKzh8MH13aGlsZShiPj4+MDxrPj4+MCl9fXdoaWxlKDApO2FbbT4+MF09bDthW28+PjBdPW47aT1qO3JldHVybn1hW2QrNTM+PjBdPTE7aWYoKGNbZCs0Pj4yXXwwKSE9KGZ8MCkpe2k9ajtyZXR1cm59YVtkKzUyPj4wXT0xO2s9ZCsxNnwwO2Y9Y1trPj4yXXwwO2lmKChmfDApPT0wKXtjW2s+PjJdPWU7Y1tkKzI0Pj4yXT1nO2NbZCszNj4+Ml09MTtpZighKChnfDApPT0xPyhjW2QrNDg+PjJdfDApPT0xOjApKXtpPWo7cmV0dXJufWFbZCs1ND4+MF09MTtpPWo7cmV0dXJufWlmKChmfDApIT0oZXwwKSl7dT1kKzM2fDA7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxO2FbZCs1ND4+MF09MTtpPWo7cmV0dXJufWU9ZCsyNHwwO2s9Y1tlPj4yXXwwO2lmKChrfDApPT0yKXtjW2U+PjJdPWd9ZWxzZXtnPWt9aWYoISgoZ3wwKT09MT8oY1tkKzQ4Pj4yXXwwKT09MTowKSl7aT1qO3JldHVybn1hW2QrNTQ+PjBdPTE7aT1qO3JldHVybn1mdW5jdGlvbiBzbihiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MDtqPWk7aWYoKGJ8MCkhPShjW2QrOD4+Ml18MCkpe2I9Y1tiKzg+PjJdfDA7d2NbY1soY1tiPj4yXXwwKSsyMD4+Ml0mNjNdKGIsZCxlLGYsZyxoKTtpPWo7cmV0dXJufWFbZCs1Mz4+MF09MTtpZigoY1tkKzQ+PjJdfDApIT0oZnwwKSl7aT1qO3JldHVybn1hW2QrNTI+PjBdPTE7Yj1kKzE2fDA7Zj1jW2I+PjJdfDA7aWYoKGZ8MCk9PTApe2NbYj4+Ml09ZTtjW2QrMjQ+PjJdPWc7Y1tkKzM2Pj4yXT0xO2lmKCEoKGd8MCk9PTE/KGNbZCs0OD4+Ml18MCk9PTE6MCkpe2k9ajtyZXR1cm59YVtkKzU0Pj4wXT0xO2k9ajtyZXR1cm59aWYoKGZ8MCkhPShlfDApKXtoPWQrMzZ8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7YVtkKzU0Pj4wXT0xO2k9ajtyZXR1cm59ZT1kKzI0fDA7Yj1jW2U+PjJdfDA7aWYoKGJ8MCk9PTIpe2NbZT4+Ml09Z31lbHNle2c9Yn1pZighKChnfDApPT0xPyhjW2QrNDg+PjJdfDApPT0xOjApKXtpPWo7cmV0dXJufWFbZCs1ND4+MF09MTtpPWo7cmV0dXJufWZ1bmN0aW9uIHRuKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtoPWk7aWYoKGNbZCs4Pj4yXXwwKSE9KGJ8MCkpe2k9aDtyZXR1cm59YVtkKzUzPj4wXT0xO2lmKChjW2QrND4+Ml18MCkhPShmfDApKXtpPWg7cmV0dXJufWFbZCs1Mj4+MF09MTtmPWQrMTZ8MDtiPWNbZj4+Ml18MDtpZigoYnwwKT09MCl7Y1tmPj4yXT1lO2NbZCsyND4+Ml09ZztjW2QrMzY+PjJdPTE7aWYoISgoZ3wwKT09MT8oY1tkKzQ4Pj4yXXwwKT09MTowKSl7aT1oO3JldHVybn1hW2QrNTQ+PjBdPTE7aT1oO3JldHVybn1pZigoYnwwKSE9KGV8MCkpe2I9ZCszNnwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrMTthW2QrNTQ+PjBdPTE7aT1oO3JldHVybn1lPWQrMjR8MDtmPWNbZT4+Ml18MDtpZigoZnwwKT09Mil7Y1tlPj4yXT1nfWVsc2V7Zz1mfWlmKCEoKGd8MCk9PTE/KGNbZCs0OD4+Ml18MCk9PTE6MCkpe2k9aDtyZXR1cm59YVtkKzU0Pj4wXT0xO2k9aDtyZXR1cm59ZnVuY3Rpb24gdW4oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtiPWk7ZG97aWYoYT4+PjA8MjQ1KXtpZihhPj4+MDwxMSl7YT0xNn1lbHNle2E9YSsxMSYtOH12PWE+Pj4zO3A9Y1s1NTQyXXwwO3c9cD4+PnY7aWYoKHcmM3wwKSE9MCl7aD0odyYxXjEpK3Z8MDtnPWg8PDE7ZT0yMjIwOCsoZzw8Mil8MDtnPTIyMjA4KyhnKzI8PDIpfDA7aj1jW2c+PjJdfDA7ZD1qKzh8MDtmPWNbZD4+Ml18MDtkb3tpZigoZXwwKSE9KGZ8MCkpe2lmKGY+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9az1mKzEyfDA7aWYoKGNbaz4+Ml18MCk9PShqfDApKXtjW2s+PjJdPWU7Y1tnPj4yXT1mO2JyZWFrfWVsc2V7WGIoKX19ZWxzZXtjWzU1NDJdPXAmfigxPDxoKX19d2hpbGUoMCk7SD1oPDwzO2Nbais0Pj4yXT1IfDM7SD1qKyhIfDQpfDA7Y1tIPj4yXT1jW0g+PjJdfDE7SD1kO2k9YjtyZXR1cm4gSHwwfWlmKGE+Pj4wPihjWzIyMTc2Pj4yXXwwKT4+PjApe2lmKCh3fDApIT0wKXtoPTI8PHY7aD13PDx2JihofDAtaCk7aD0oaCYwLWgpKyAtMXwwO2Q9aD4+PjEyJjE2O2g9aD4+PmQ7Zj1oPj4+NSY4O2g9aD4+PmY7Zz1oPj4+MiY0O2g9aD4+Pmc7ZT1oPj4+MSYyO2g9aD4+PmU7aj1oPj4+MSYxO2o9KGZ8ZHxnfGV8aikrKGg+Pj5qKXwwO2g9ajw8MTtlPTIyMjA4KyhoPDwyKXwwO2g9MjIyMDgrKGgrMjw8Mil8MDtnPWNbaD4+Ml18MDtkPWcrOHwwO2Y9Y1tkPj4yXXwwO2Rve2lmKChlfDApIT0oZnwwKSl7aWYoZj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1rPWYrMTJ8MDtpZigoY1trPj4yXXwwKT09KGd8MCkpe2Nbaz4+Ml09ZTtjW2g+PjJdPWY7YnJlYWt9ZWxzZXtYYigpfX1lbHNle2NbNTU0Ml09cCZ+KDE8PGopfX13aGlsZSgwKTtoPWo8PDM7Zj1oLWF8MDtjW2crND4+Ml09YXwzO2U9ZythfDA7Y1tnKyhhfDQpPj4yXT1mfDE7Y1tnK2g+PjJdPWY7aD1jWzIyMTc2Pj4yXXwwO2lmKChofDApIT0wKXtnPWNbMjIxODg+PjJdfDA7az1oPj4+MztqPWs8PDE7aD0yMjIwOCsoajw8Mil8MDtsPWNbNTU0Ml18MDtrPTE8PGs7aWYoKGwma3wwKSE9MCl7aj0yMjIwOCsoaisyPDwyKXwwO2s9Y1tqPj4yXXwwO2lmKGs+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtEPWo7Qz1rfX1lbHNle2NbNTU0Ml09bHxrO0Q9MjIyMDgrKGorMjw8Mil8MDtDPWh9Y1tEPj4yXT1nO2NbQysxMj4+Ml09ZztjW2crOD4+Ml09QztjW2crMTI+PjJdPWh9Y1syMjE3Nj4+Ml09ZjtjWzIyMTg4Pj4yXT1lO0g9ZDtpPWI7cmV0dXJuIEh8MH1wPWNbMjIxNzI+PjJdfDA7aWYoKHB8MCkhPTApe2U9KHAmMC1wKSsgLTF8MDtHPWU+Pj4xMiYxNjtlPWU+Pj5HO0Y9ZT4+PjUmODtlPWU+Pj5GO0g9ZT4+PjImNDtlPWU+Pj5IO2Y9ZT4+PjEmMjtlPWU+Pj5mO2Q9ZT4+PjEmMTtkPWNbMjI0NzIrKChGfEd8SHxmfGQpKyhlPj4+ZCk8PDIpPj4yXXwwO2U9KGNbZCs0Pj4yXSYtOCktYXwwO2Y9ZDt3aGlsZSgxKXtnPWNbZisxNj4+Ml18MDtpZigoZ3wwKT09MCl7Zz1jW2YrMjA+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfX1mPShjW2crND4+Ml0mLTgpLWF8MDtIPWY+Pj4wPGU+Pj4wO2U9SD9mOmU7Zj1nO2Q9SD9nOmR9aD1jWzIyMTg0Pj4yXXwwO2lmKGQ+Pj4wPGg+Pj4wKXtYYigpfWY9ZCthfDA7aWYoIShkPj4+MDxmPj4+MCkpe1hiKCl9Zz1jW2QrMjQ+PjJdfDA7az1jW2QrMTI+PjJdfDA7ZG97aWYoKGt8MCk9PShkfDApKXtrPWQrMjB8MDtqPWNbaz4+Ml18MDtpZigoanwwKT09MCl7az1kKzE2fDA7aj1jW2s+PjJdfDA7aWYoKGp8MCk9PTApe0I9MDticmVha319d2hpbGUoMSl7bD1qKzIwfDA7bT1jW2w+PjJdfDA7aWYoKG18MCkhPTApe2o9bTtrPWw7Y29udGludWV9bT1qKzE2fDA7bD1jW20+PjJdfDA7aWYoKGx8MCk9PTApe2JyZWFrfWVsc2V7aj1sO2s9bX19aWYoaz4+PjA8aD4+PjApe1hiKCl9ZWxzZXtjW2s+PjJdPTA7Qj1qO2JyZWFrfX1lbHNle2o9Y1tkKzg+PjJdfDA7aWYoaj4+PjA8aD4+PjApe1hiKCl9aD1qKzEyfDA7aWYoKGNbaD4+Ml18MCkhPShkfDApKXtYYigpfWw9ays4fDA7aWYoKGNbbD4+Ml18MCk9PShkfDApKXtjW2g+PjJdPWs7Y1tsPj4yXT1qO0I9azticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtkb3tpZigoZ3wwKSE9MCl7aD1jW2QrMjg+PjJdfDA7aj0yMjQ3MisoaDw8Mil8MDtpZigoZHwwKT09KGNbaj4+Ml18MCkpe2Nbaj4+Ml09QjtpZigoQnwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxoKTticmVha319ZWxzZXtpZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWg9ZysxNnwwO2lmKChjW2g+PjJdfDApPT0oZHwwKSl7Y1toPj4yXT1CfWVsc2V7Y1tnKzIwPj4yXT1CfWlmKChCfDApPT0wKXticmVha319aWYoQj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW0IrMjQ+PjJdPWc7Zz1jW2QrMTY+PjJdfDA7ZG97aWYoKGd8MCkhPTApe2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW0IrMTY+PjJdPWc7Y1tnKzI0Pj4yXT1CO2JyZWFrfX19d2hpbGUoMCk7Zz1jW2QrMjA+PjJdfDA7aWYoKGd8MCkhPTApe2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW0IrMjA+PjJdPWc7Y1tnKzI0Pj4yXT1CO2JyZWFrfX19fXdoaWxlKDApO2lmKGU+Pj4wPDE2KXtIPWUrYXwwO2NbZCs0Pj4yXT1IfDM7SD1kKyhIKzQpfDA7Y1tIPj4yXT1jW0g+PjJdfDF9ZWxzZXtjW2QrND4+Ml09YXwzO2NbZCsoYXw0KT4+Ml09ZXwxO2NbZCsoZSthKT4+Ml09ZTtoPWNbMjIxNzY+PjJdfDA7aWYoKGh8MCkhPTApe2c9Y1syMjE4OD4+Ml18MDtsPWg+Pj4zO2o9bDw8MTtoPTIyMjA4KyhqPDwyKXwwO2s9Y1s1NTQyXXwwO2w9MTw8bDtpZigoayZsfDApIT0wKXtqPTIyMjA4KyhqKzI8PDIpfDA7az1jW2o+PjJdfDA7aWYoaz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle0E9ajt6PWt9fWVsc2V7Y1s1NTQyXT1rfGw7QT0yMjIwOCsoaisyPDwyKXwwO3o9aH1jW0E+PjJdPWc7Y1t6KzEyPj4yXT1nO2NbZys4Pj4yXT16O2NbZysxMj4+Ml09aH1jWzIyMTc2Pj4yXT1lO2NbMjIxODg+PjJdPWZ9SD1kKzh8MDtpPWI7cmV0dXJuIEh8MH19fWVsc2V7aWYoIShhPj4+MD40Mjk0OTY3MjMxKSl7ej1hKzExfDA7YT16Ji04O0I9Y1syMjE3Mj4+Ml18MDtpZigoQnwwKSE9MCl7QT0wLWF8MDt6PXo+Pj44O2lmKCh6fDApIT0wKXtpZihhPj4+MD4xNjc3NzIxNSl7Qz0zMX1lbHNle0c9KHorMTA0ODMyMHwwKT4+PjE2Jjg7SD16PDxHO0Y9KEgrNTIwMTkyfDApPj4+MTYmNDtIPUg8PEY7Qz0oSCsyNDU3NjB8MCk+Pj4xNiYyO0M9MTQtKEZ8R3xDKSsoSDw8Qz4+PjE1KXwwO0M9YT4+PihDKzd8MCkmMXxDPDwxfX1lbHNle0M9MH1EPWNbMjI0NzIrKEM8PDIpPj4yXXwwO2E6ZG97aWYoKER8MCk9PTApe0Y9MDt6PTB9ZWxzZXtpZigoQ3wwKT09MzEpe3o9MH1lbHNle3o9MjUtKEM+Pj4xKXwwfUY9MDtFPWE8PHo7ej0wO3doaWxlKDEpe0g9Y1tEKzQ+PjJdJi04O0c9SC1hfDA7aWYoRz4+PjA8QT4+PjApe2lmKChIfDApPT0oYXwwKSl7QT1HO0Y9RDt6PUQ7YnJlYWsgYX1lbHNle0E9Rzt6PUR9fUg9Y1tEKzIwPj4yXXwwO0Q9Y1tEKyhFPj4+MzE8PDIpKzE2Pj4yXXwwO0Y9KEh8MCk9PTB8KEh8MCk9PShEfDApP0Y6SDtpZigoRHwwKT09MCl7YnJlYWt9ZWxzZXtFPUU8PDF9fX19d2hpbGUoMCk7aWYoKEZ8MCk9PTAmKHp8MCk9PTApe0g9Mjw8QztCPUImKEh8MC1IKTtpZigoQnwwKT09MCl7YnJlYWt9SD0oQiYwLUIpKyAtMXwwO0Q9SD4+PjEyJjE2O0g9SD4+PkQ7Qz1IPj4+NSY4O0g9SD4+PkM7RT1IPj4+MiY0O0g9SD4+PkU7Rz1IPj4+MSYyO0g9SD4+Pkc7Rj1IPj4+MSYxO0Y9Y1syMjQ3MisoKEN8RHxFfEd8RikrKEg+Pj5GKTw8Mik+PjJdfDB9aWYoKEZ8MCkhPTApe3doaWxlKDEpe0g9KGNbRis0Pj4yXSYtOCktYXwwO0I9SD4+PjA8QT4+PjA7QT1CP0g6QTt6PUI/Rjp6O0I9Y1tGKzE2Pj4yXXwwO2lmKChCfDApIT0wKXtGPUI7Y29udGludWV9Rj1jW0YrMjA+PjJdfDA7aWYoKEZ8MCk9PTApe2JyZWFrfX19aWYoKHp8MCkhPTA/QT4+PjA8KChjWzIyMTc2Pj4yXXwwKS1hfDApPj4+MDowKXtmPWNbMjIxODQ+PjJdfDA7aWYoej4+PjA8Zj4+PjApe1hiKCl9ZD16K2F8MDtpZighKHo+Pj4wPGQ+Pj4wKSl7WGIoKX1lPWNbeisyND4+Ml18MDtoPWNbeisxMj4+Ml18MDtkb3tpZigoaHwwKT09KHp8MCkpe2g9eisyMHwwO2c9Y1toPj4yXXwwO2lmKChnfDApPT0wKXtoPXorMTZ8MDtnPWNbaD4+Ml18MDtpZigoZ3wwKT09MCl7eD0wO2JyZWFrfX13aGlsZSgxKXtqPWcrMjB8MDtrPWNbaj4+Ml18MDtpZigoa3wwKSE9MCl7Zz1rO2g9ajtjb250aW51ZX1qPWcrMTZ8MDtrPWNbaj4+Ml18MDtpZigoa3wwKT09MCl7YnJlYWt9ZWxzZXtnPWs7aD1qfX1pZihoPj4+MDxmPj4+MCl7WGIoKX1lbHNle2NbaD4+Ml09MDt4PWc7YnJlYWt9fWVsc2V7Zz1jW3orOD4+Ml18MDtpZihnPj4+MDxmPj4+MCl7WGIoKX1mPWcrMTJ8MDtpZigoY1tmPj4yXXwwKSE9KHp8MCkpe1hiKCl9aj1oKzh8MDtpZigoY1tqPj4yXXwwKT09KHp8MCkpe2NbZj4+Ml09aDtjW2o+PjJdPWc7eD1oO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2Rve2lmKChlfDApIT0wKXtnPWNbeisyOD4+Ml18MDtmPTIyNDcyKyhnPDwyKXwwO2lmKCh6fDApPT0oY1tmPj4yXXwwKSl7Y1tmPj4yXT14O2lmKCh4fDApPT0wKXtjWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PGcpO2JyZWFrfX1lbHNle2lmKGU+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9Zj1lKzE2fDA7aWYoKGNbZj4+Ml18MCk9PSh6fDApKXtjW2Y+PjJdPXh9ZWxzZXtjW2UrMjA+PjJdPXh9aWYoKHh8MCk9PTApe2JyZWFrfX1pZih4Pj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWNbeCsyND4+Ml09ZTtlPWNbeisxNj4+Ml18MDtkb3tpZigoZXwwKSE9MCl7aWYoZT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbeCsxNj4+Ml09ZTtjW2UrMjQ+PjJdPXg7YnJlYWt9fX13aGlsZSgwKTtlPWNbeisyMD4+Ml18MDtpZigoZXwwKSE9MCl7aWYoZT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbeCsyMD4+Ml09ZTtjW2UrMjQ+PjJdPXg7YnJlYWt9fX19d2hpbGUoMCk7Yjpkb3tpZighKEE+Pj4wPDE2KSl7Y1t6KzQ+PjJdPWF8MztjW3orKGF8NCk+PjJdPUF8MTtjW3orKEErYSk+PjJdPUE7Zj1BPj4+MztpZihBPj4+MDwyNTYpe2g9Zjw8MTtlPTIyMjA4KyhoPDwyKXwwO2c9Y1s1NTQyXXwwO2Y9MTw8Zjtkb3tpZigoZyZmfDApPT0wKXtjWzU1NDJdPWd8Zjt3PTIyMjA4KyhoKzI8PDIpfDA7dj1lfWVsc2V7Zj0yMjIwOCsoaCsyPDwyKXwwO2c9Y1tmPj4yXXwwO2lmKCEoZz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCkpe3c9Zjt2PWc7YnJlYWt9WGIoKX19d2hpbGUoMCk7Y1t3Pj4yXT1kO2NbdisxMj4+Ml09ZDtjW3orKGErOCk+PjJdPXY7Y1t6KyhhKzEyKT4+Ml09ZTticmVha31lPUE+Pj44O2lmKChlfDApIT0wKXtpZihBPj4+MD4xNjc3NzIxNSl7ZT0zMX1lbHNle0c9KGUrMTA0ODMyMHwwKT4+PjE2Jjg7SD1lPDxHO0Y9KEgrNTIwMTkyfDApPj4+MTYmNDtIPUg8PEY7ZT0oSCsyNDU3NjB8MCk+Pj4xNiYyO2U9MTQtKEZ8R3xlKSsoSDw8ZT4+PjE1KXwwO2U9QT4+PihlKzd8MCkmMXxlPDwxfX1lbHNle2U9MH1mPTIyNDcyKyhlPDwyKXwwO2NbeisoYSsyOCk+PjJdPWU7Y1t6KyhhKzIwKT4+Ml09MDtjW3orKGErMTYpPj4yXT0wO2g9Y1syMjE3Mj4+Ml18MDtnPTE8PGU7aWYoKGgmZ3wwKT09MCl7Y1syMjE3Mj4+Ml09aHxnO2NbZj4+Ml09ZDtjW3orKGErMjQpPj4yXT1mO2NbeisoYSsxMik+PjJdPWQ7Y1t6KyhhKzgpPj4yXT1kO2JyZWFrfWY9Y1tmPj4yXXwwO2lmKChlfDApPT0zMSl7ZT0wfWVsc2V7ZT0yNS0oZT4+PjEpfDB9Yzpkb3tpZigoY1tmKzQ+PjJdJi04fDApIT0oQXwwKSl7ZT1BPDxlO3doaWxlKDEpe2c9ZisoZT4+PjMxPDwyKSsxNnwwO2g9Y1tnPj4yXXwwO2lmKChofDApPT0wKXticmVha31pZigoY1toKzQ+PjJdJi04fDApPT0oQXwwKSl7cD1oO2JyZWFrIGN9ZWxzZXtlPWU8PDE7Zj1ofX1pZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tnPj4yXT1kO2NbeisoYSsyNCk+PjJdPWY7Y1t6KyhhKzEyKT4+Ml09ZDtjW3orKGErOCk+PjJdPWQ7YnJlYWsgYn19ZWxzZXtwPWZ9fXdoaWxlKDApO2Y9cCs4fDA7ZT1jW2Y+PjJdfDA7Zz1jWzIyMTg0Pj4yXXwwO2lmKHA+Pj4wPGc+Pj4wKXtYYigpfWlmKGU+Pj4wPGc+Pj4wKXtYYigpfWVsc2V7Y1tlKzEyPj4yXT1kO2NbZj4+Ml09ZDtjW3orKGErOCk+PjJdPWU7Y1t6KyhhKzEyKT4+Ml09cDtjW3orKGErMjQpPj4yXT0wO2JyZWFrfX1lbHNle0g9QSthfDA7Y1t6KzQ+PjJdPUh8MztIPXorKEgrNCl8MDtjW0g+PjJdPWNbSD4+Ml18MX19d2hpbGUoMCk7SD16Kzh8MDtpPWI7cmV0dXJuIEh8MH19fWVsc2V7YT0tMX19fXdoaWxlKDApO3A9Y1syMjE3Nj4+Ml18MDtpZighKGE+Pj4wPnA+Pj4wKSl7ZT1wLWF8MDtkPWNbMjIxODg+PjJdfDA7aWYoZT4+PjA+MTUpe2NbMjIxODg+PjJdPWQrYTtjWzIyMTc2Pj4yXT1lO2NbZCsoYSs0KT4+Ml09ZXwxO2NbZCtwPj4yXT1lO2NbZCs0Pj4yXT1hfDN9ZWxzZXtjWzIyMTc2Pj4yXT0wO2NbMjIxODg+PjJdPTA7Y1tkKzQ+PjJdPXB8MztIPWQrKHArNCl8MDtjW0g+PjJdPWNbSD4+Ml18MX1IPWQrOHwwO2k9YjtyZXR1cm4gSHwwfXA9Y1syMjE4MD4+Ml18MDtpZihhPj4+MDxwPj4+MCl7Rz1wLWF8MDtjWzIyMTgwPj4yXT1HO0g9Y1syMjE5Mj4+Ml18MDtjWzIyMTkyPj4yXT1IK2E7Y1tIKyhhKzQpPj4yXT1HfDE7Y1tIKzQ+PjJdPWF8MztIPUgrOHwwO2k9YjtyZXR1cm4gSHwwfWRve2lmKChjWzU2NjBdfDApPT0wKXtwPXNiKDMwKXwwO2lmKChwKyAtMSZwfDApPT0wKXtjWzIyNjQ4Pj4yXT1wO2NbMjI2NDQ+PjJdPXA7Y1syMjY1Mj4+Ml09LTE7Y1syMjY1Nj4+Ml09LTE7Y1syMjY2MD4+Ml09MDtjWzIyNjEyPj4yXT0wO2NbNTY2MF09KF9iKDApfDApJi0xNl4xNDMxNjU1NzY4O2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO3c9YSs0OHwwO3A9Y1syMjY0OD4+Ml18MDt4PWErNDd8MDt6PXAreHwwO3A9MC1wfDA7dj16JnA7aWYoISh2Pj4+MD5hPj4+MCkpe0g9MDtpPWI7cmV0dXJuIEh8MH1BPWNbMjI2MDg+PjJdfDA7aWYoKEF8MCkhPTA/KEc9Y1syMjYwMD4+Ml18MCxIPUcrdnwwLEg+Pj4wPD1HPj4+MHxIPj4+MD5BPj4+MCk6MCl7SD0wO2k9YjtyZXR1cm4gSHwwfWQ6ZG97aWYoKGNbMjI2MTI+PjJdJjR8MCk9PTApe0I9Y1syMjE5Mj4+Ml18MDtlOmRve2lmKChCfDApIT0wKXtBPTIyNjE2fDA7d2hpbGUoMSl7Qz1jW0E+PjJdfDA7aWYoIShDPj4+MD5CPj4+MCk/KHk9QSs0fDAsKEMrKGNbeT4+Ml18MCl8MCk+Pj4wPkI+Pj4wKTowKXticmVha31BPWNbQSs4Pj4yXXwwO2lmKChBfDApPT0wKXtvPTE4MjticmVhayBlfX1pZigoQXwwKSE9MCl7Qj16LShjWzIyMTgwPj4yXXwwKSZwO2lmKEI+Pj4wPDIxNDc0ODM2NDcpe3A9aGIoQnwwKXwwO0E9KHB8MCk9PSgoY1tBPj4yXXwwKSsoY1t5Pj4yXXwwKXwwKTt5PXA7ej1CO3A9QT9wOi0xO0E9QT9COjA7bz0xOTF9ZWxzZXtBPTB9fWVsc2V7bz0xODJ9fWVsc2V7bz0xODJ9fXdoaWxlKDApO2Rve2lmKChvfDApPT0xODIpe3A9aGIoMCl8MDtpZigocHwwKSE9KC0xfDApKXt6PXA7QT1jWzIyNjQ0Pj4yXXwwO3k9QSsgLTF8MDtpZigoeSZ6fDApPT0wKXtBPXZ9ZWxzZXtBPXYteisoeSt6JjAtQSl8MH15PWNbMjI2MDA+PjJdfDA7ej15K0F8MDtpZihBPj4+MD5hPj4+MCZBPj4+MDwyMTQ3NDgzNjQ3KXtIPWNbMjI2MDg+PjJdfDA7aWYoKEh8MCkhPTA/ej4+PjA8PXk+Pj4wfHo+Pj4wPkg+Pj4wOjApe0E9MDticmVha315PWhiKEF8MCl8MDtvPSh5fDApPT0ocHwwKTt6PUE7cD1vP3A6LTE7QT1vP0E6MDtvPTE5MX1lbHNle0E9MH19ZWxzZXtBPTB9fX13aGlsZSgwKTtmOmRve2lmKChvfDApPT0xOTEpe289MC16fDA7aWYoKHB8MCkhPSgtMXwwKSl7cT1BO289MjAyO2JyZWFrIGR9ZG97aWYoKHl8MCkhPSgtMXwwKSZ6Pj4+MDwyMTQ3NDgzNjQ3Jno+Pj4wPHc+Pj4wPyh1PWNbMjI2NDg+PjJdfDAsdT14LXordSYwLXUsdT4+PjA8MjE0NzQ4MzY0Nyk6MCl7aWYoKGhiKHV8MCl8MCk9PSgtMXwwKSl7aGIob3wwKXwwO2JyZWFrIGZ9ZWxzZXt6PXUrenwwO2JyZWFrfX19d2hpbGUoMCk7aWYoKHl8MCkhPSgtMXwwKSl7cD15O3E9ejtvPTIwMjticmVhayBkfX19d2hpbGUoMCk7Y1syMjYxMj4+Ml09Y1syMjYxMj4+Ml18NDtvPTE5OX1lbHNle0E9MDtvPTE5OX19d2hpbGUoMCk7aWYoKCgob3wwKT09MTk5P3Y+Pj4wPDIxNDc0ODM2NDc6MCk/KHQ9aGIodnwwKXwwLHM9aGIoMCl8MCwoc3wwKSE9KC0xfDApJih0fDApIT0oLTF8MCkmdD4+PjA8cz4+PjApOjApPyhyPXMtdHwwLHE9cj4+PjA+KGErNDB8MCk+Pj4wLHEpOjApe3A9dDtxPXE/cjpBO289MjAyfWlmKChvfDApPT0yMDIpe3I9KGNbMjI2MDA+PjJdfDApK3F8MDtjWzIyNjAwPj4yXT1yO2lmKHI+Pj4wPihjWzIyNjA0Pj4yXXwwKT4+PjApe2NbMjI2MDQ+PjJdPXJ9cj1jWzIyMTkyPj4yXXwwO2c6ZG97aWYoKHJ8MCkhPTApe3Y9MjI2MTZ8MDt3aGlsZSgxKXt0PWNbdj4+Ml18MDt1PXYrNHwwO3M9Y1t1Pj4yXXwwO2lmKChwfDApPT0odCtzfDApKXtvPTIxNDticmVha313PWNbdis4Pj4yXXwwO2lmKCh3fDApPT0wKXticmVha31lbHNle3Y9d319aWYoKChvfDApPT0yMTQ/KGNbdisxMj4+Ml0mOHwwKT09MDowKT9yPj4+MD49dD4+PjAmcj4+PjA8cD4+PjA6MCl7Y1t1Pj4yXT1zK3E7ZD0oY1syMjE4MD4+Ml18MCkrcXwwO2U9cis4fDA7aWYoKGUmN3wwKT09MCl7ZT0wfWVsc2V7ZT0wLWUmN31IPWQtZXwwO2NbMjIxOTI+PjJdPXIrZTtjWzIyMTgwPj4yXT1IO2NbcisoZSs0KT4+Ml09SHwxO2NbcisoZCs0KT4+Ml09NDA7Y1syMjE5Nj4+Ml09Y1syMjY1Nj4+Ml07YnJlYWt9aWYocD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7Y1syMjE4ND4+Ml09cH10PXArcXwwO3M9MjI2MTZ8MDt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT09KHR8MCkpe289MjI0O2JyZWFrfXU9Y1tzKzg+PjJdfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7cz11fX1pZigob3wwKT09MjI0PyhjW3MrMTI+PjJdJjh8MCk9PTA6MCl7Y1tzPj4yXT1wO2g9cys0fDA7Y1toPj4yXT0oY1toPj4yXXwwKStxO2g9cCs4fDA7aWYoKGgmN3wwKT09MCl7aD0wfWVsc2V7aD0wLWgmN31qPXArKHErOCl8MDtpZigoaiY3fDApPT0wKXtuPTB9ZWxzZXtuPTAtaiY3fW89cCsobitxKXwwO2o9aCthfDA7az1wK2p8MDttPW8tKHAraCktYXwwO2NbcCsoaCs0KT4+Ml09YXwzO2g6ZG97aWYoKG98MCkhPShjWzIyMTkyPj4yXXwwKSl7aWYoKG98MCk9PShjWzIyMTg4Pj4yXXwwKSl7SD0oY1syMjE3Nj4+Ml18MCkrbXwwO2NbMjIxNzY+PjJdPUg7Y1syMjE4OD4+Ml09aztjW3ArKGorNCk+PjJdPUh8MTtjW3ArKEgraik+PjJdPUg7YnJlYWt9cj1xKzR8MDt0PWNbcCsocituKT4+Ml18MDtpZigodCYzfDApPT0xKXthPXQmLTg7cz10Pj4+MztpOmRve2lmKCEodD4+PjA8MjU2KSl7bD1jW3ArKChufDI0KStxKT4+Ml18MDt1PWNbcCsocSsxMituKT4+Ml18MDtkb3tpZigodXwwKT09KG98MCkpe3U9bnwxNjt0PXArKHIrdSl8MDtzPWNbdD4+Ml18MDtpZigoc3wwKT09MCl7dD1wKyh1K3EpfDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe2c9MDticmVha319d2hpbGUoMSl7dT1zKzIwfDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCkhPTApe3M9djt0PXU7Y29udGludWV9dT1zKzE2fDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCk9PTApe2JyZWFrfWVsc2V7cz12O3Q9dX19aWYodD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbdD4+Ml09MDtnPXM7YnJlYWt9fWVsc2V7dD1jW3ArKChufDgpK3EpPj4yXXwwO2lmKHQ+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9dj10KzEyfDA7aWYoKGNbdj4+Ml18MCkhPShvfDApKXtYYigpfXM9dSs4fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtjW3Y+PjJdPXU7Y1tzPj4yXT10O2c9dTticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtpZigobHwwKT09MCl7YnJlYWt9dD1jW3ArKHErMjgrbik+PjJdfDA7cz0yMjQ3MisodDw8Mil8MDtkb3tpZigob3wwKSE9KGNbcz4+Ml18MCkpe2lmKGw+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9cz1sKzE2fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtjW3M+PjJdPWd9ZWxzZXtjW2wrMjA+PjJdPWd9aWYoKGd8MCk9PTApe2JyZWFrIGl9fWVsc2V7Y1tzPj4yXT1nO2lmKChnfDApIT0wKXticmVha31jWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PHQpO2JyZWFrIGl9fXdoaWxlKDApO2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9Y1tnKzI0Pj4yXT1sO2w9bnwxNjtvPWNbcCsobCtxKT4+Ml18MDtkb3tpZigob3wwKSE9MCl7aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbZysxNj4+Ml09bztjW28rMjQ+PjJdPWc7YnJlYWt9fX13aGlsZSgwKTtsPWNbcCsocitsKT4+Ml18MDtpZigobHwwKT09MCl7YnJlYWt9aWYobD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbZysyMD4+Ml09bDtjW2wrMjQ+PjJdPWc7YnJlYWt9fWVsc2V7cj1jW3ArKChufDgpK3EpPj4yXXwwO2c9Y1twKyhxKzEyK24pPj4yXXwwO3Q9MjIyMDgrKHM8PDE8PDIpfDA7ZG97aWYoKHJ8MCkhPSh0fDApKXtpZihyPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWlmKChjW3IrMTI+PjJdfDApPT0ob3wwKSl7YnJlYWt9WGIoKX19d2hpbGUoMCk7aWYoKGd8MCk9PShyfDApKXtjWzU1NDJdPWNbNTU0Ml0mfigxPDxzKTticmVha31kb3tpZigoZ3wwKT09KHR8MCkpe2w9Zys4fDB9ZWxzZXtpZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfXM9Zys4fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtsPXM7YnJlYWt9WGIoKX19d2hpbGUoMCk7Y1tyKzEyPj4yXT1nO2NbbD4+Ml09cn19d2hpbGUoMCk7bz1wKygoYXxuKStxKXwwO209YSttfDB9Zz1vKzR8MDtjW2c+PjJdPWNbZz4+Ml0mLTI7Y1twKyhqKzQpPj4yXT1tfDE7Y1twKyhtK2opPj4yXT1tO2c9bT4+PjM7aWYobT4+PjA8MjU2KXttPWc8PDE7ZD0yMjIwOCsobTw8Mil8MDtsPWNbNTU0Ml18MDtnPTE8PGc7ZG97aWYoKGwmZ3wwKT09MCl7Y1s1NTQyXT1sfGc7Zj0yMjIwOCsobSsyPDwyKXwwO2U9ZH1lbHNle2w9MjIyMDgrKG0rMjw8Mil8MDtnPWNbbD4+Ml18MDtpZighKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApKXtmPWw7ZT1nO2JyZWFrfVhiKCl9fXdoaWxlKDApO2NbZj4+Ml09aztjW2UrMTI+PjJdPWs7Y1twKyhqKzgpPj4yXT1lO2NbcCsoaisxMik+PjJdPWQ7YnJlYWt9ZT1tPj4+ODtkb3tpZigoZXwwKT09MCl7ZT0wfWVsc2V7aWYobT4+PjA+MTY3NzcyMTUpe2U9MzE7YnJlYWt9Rz0oZSsxMDQ4MzIwfDApPj4+MTYmODtIPWU8PEc7Rj0oSCs1MjAxOTJ8MCk+Pj4xNiY0O0g9SDw8RjtlPShIKzI0NTc2MHwwKT4+PjE2JjI7ZT0xNC0oRnxHfGUpKyhIPDxlPj4+MTUpfDA7ZT1tPj4+KGUrN3wwKSYxfGU8PDF9fXdoaWxlKDApO2w9MjI0NzIrKGU8PDIpfDA7Y1twKyhqKzI4KT4+Ml09ZTtjW3ArKGorMjApPj4yXT0wO2NbcCsoaisxNik+PjJdPTA7Zj1jWzIyMTcyPj4yXXwwO2c9MTw8ZTtpZigoZiZnfDApPT0wKXtjWzIyMTcyPj4yXT1mfGc7Y1tsPj4yXT1rO2NbcCsoaisyNCk+PjJdPWw7Y1twKyhqKzEyKT4+Ml09aztjW3ArKGorOCk+PjJdPWs7YnJlYWt9bD1jW2w+PjJdfDA7aWYoKGV8MCk9PTMxKXtlPTB9ZWxzZXtlPTI1LShlPj4+MSl8MH1qOmRve2lmKChjW2wrND4+Ml0mLTh8MCkhPShtfDApKXtlPW08PGU7d2hpbGUoMSl7Zz1sKyhlPj4+MzE8PDIpKzE2fDA7Zj1jW2c+PjJdfDA7aWYoKGZ8MCk9PTApe2JyZWFrfWlmKChjW2YrND4+Ml0mLTh8MCk9PShtfDApKXtkPWY7YnJlYWsgan1lbHNle2U9ZTw8MTtsPWZ9fWlmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2c+PjJdPWs7Y1twKyhqKzI0KT4+Ml09bDtjW3ArKGorMTIpPj4yXT1rO2NbcCsoais4KT4+Ml09azticmVhayBofX1lbHNle2Q9bH19d2hpbGUoMCk7Zj1kKzh8MDtlPWNbZj4+Ml18MDtnPWNbMjIxODQ+PjJdfDA7aWYoZD4+PjA8Zz4+PjApe1hiKCl9aWYoZT4+PjA8Zz4+PjApe1hiKCl9ZWxzZXtjW2UrMTI+PjJdPWs7Y1tmPj4yXT1rO2NbcCsoais4KT4+Ml09ZTtjW3ArKGorMTIpPj4yXT1kO2NbcCsoaisyNCk+PjJdPTA7YnJlYWt9fWVsc2V7SD0oY1syMjE4MD4+Ml18MCkrbXwwO2NbMjIxODA+PjJdPUg7Y1syMjE5Mj4+Ml09aztjW3ArKGorNCk+PjJdPUh8MX19d2hpbGUoMCk7SD1wKyhofDgpfDA7aT1iO3JldHVybiBIfDB9ZT0yMjYxNnwwO3doaWxlKDEpe2Q9Y1tlPj4yXXwwO2lmKCEoZD4+PjA+cj4+PjApPyhuPWNbZSs0Pj4yXXwwLG09ZCtufDAsbT4+PjA+cj4+PjApOjApe2JyZWFrfWU9Y1tlKzg+PjJdfDB9ZT1kKyhuKyAtMzkpfDA7aWYoKGUmN3wwKT09MCl7ZT0wfWVsc2V7ZT0wLWUmN31kPWQrKG4rIC00NytlKXwwO2Q9ZD4+PjA8KHIrMTZ8MCk+Pj4wP3I6ZDtlPWQrOHwwO2Y9cCs4fDA7aWYoKGYmN3wwKT09MCl7Zj0wfWVsc2V7Zj0wLWYmN31IPXErIC00MC1mfDA7Y1syMjE5Mj4+Ml09cCtmO2NbMjIxODA+PjJdPUg7Y1twKyhmKzQpPj4yXT1IfDE7Y1twKyhxKyAtMzYpPj4yXT00MDtjWzIyMTk2Pj4yXT1jWzIyNjU2Pj4yXTtjW2QrND4+Ml09Mjc7Y1tlKzA+PjJdPWNbMjI2MTY+PjJdO2NbZSs0Pj4yXT1jWzIyNjIwPj4yXTtjW2UrOD4+Ml09Y1syMjYyND4+Ml07Y1tlKzEyPj4yXT1jWzIyNjI4Pj4yXTtjWzIyNjE2Pj4yXT1wO2NbMjI2MjA+PjJdPXE7Y1syMjYyOD4+Ml09MDtjWzIyNjI0Pj4yXT1lO2U9ZCsyOHwwO2NbZT4+Ml09NztpZigoZCszMnwwKT4+PjA8bT4+PjApe2Rve0g9ZTtlPWUrNHwwO2NbZT4+Ml09N313aGlsZSgoSCs4fDApPj4+MDxtPj4+MCl9aWYoKGR8MCkhPShyfDApKXtkPWQtcnwwO2U9cisoZCs0KXwwO2NbZT4+Ml09Y1tlPj4yXSYtMjtjW3IrND4+Ml09ZHwxO2NbcitkPj4yXT1kO2U9ZD4+PjM7aWYoZD4+PjA8MjU2KXtnPWU8PDE7ZD0yMjIwOCsoZzw8Mil8MDtmPWNbNTU0Ml18MDtlPTE8PGU7ZG97aWYoKGYmZXwwKT09MCl7Y1s1NTQyXT1mfGU7az0yMjIwOCsoZysyPDwyKXwwO2o9ZH1lbHNle2Y9MjIyMDgrKGcrMjw8Mil8MDtlPWNbZj4+Ml18MDtpZighKGU+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApKXtrPWY7aj1lO2JyZWFrfVhiKCl9fXdoaWxlKDApO2Nbaz4+Ml09cjtjW2orMTI+PjJdPXI7Y1tyKzg+PjJdPWo7Y1tyKzEyPj4yXT1kO2JyZWFrfWU9ZD4+Pjg7aWYoKGV8MCkhPTApe2lmKGQ+Pj4wPjE2Nzc3MjE1KXtlPTMxfWVsc2V7Rz0oZSsxMDQ4MzIwfDApPj4+MTYmODtIPWU8PEc7Rj0oSCs1MjAxOTJ8MCk+Pj4xNiY0O0g9SDw8RjtlPShIKzI0NTc2MHwwKT4+PjE2JjI7ZT0xNC0oRnxHfGUpKyhIPDxlPj4+MTUpfDA7ZT1kPj4+KGUrN3wwKSYxfGU8PDF9fWVsc2V7ZT0wfWo9MjI0NzIrKGU8PDIpfDA7Y1tyKzI4Pj4yXT1lO2NbcisyMD4+Ml09MDtjW3IrMTY+PjJdPTA7Zj1jWzIyMTcyPj4yXXwwO2c9MTw8ZTtpZigoZiZnfDApPT0wKXtjWzIyMTcyPj4yXT1mfGc7Y1tqPj4yXT1yO2NbcisyND4+Ml09ajtjW3IrMTI+PjJdPXI7Y1tyKzg+PjJdPXI7YnJlYWt9Zj1jW2o+PjJdfDA7aWYoKGV8MCk9PTMxKXtlPTB9ZWxzZXtlPTI1LShlPj4+MSl8MH1rOmRve2lmKChjW2YrND4+Ml0mLTh8MCkhPShkfDApKXtlPWQ8PGU7d2hpbGUoMSl7aj1mKyhlPj4+MzE8PDIpKzE2fDA7Zz1jW2o+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShkfDApKXtoPWc7YnJlYWsga31lbHNle2U9ZTw8MTtmPWd9fWlmKGo+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2o+PjJdPXI7Y1tyKzI0Pj4yXT1mO2NbcisxMj4+Ml09cjtjW3IrOD4+Ml09cjticmVhayBnfX1lbHNle2g9Zn19d2hpbGUoMCk7Zj1oKzh8MDtlPWNbZj4+Ml18MDtkPWNbMjIxODQ+PjJdfDA7aWYoaD4+PjA8ZD4+PjApe1hiKCl9aWYoZT4+PjA8ZD4+PjApe1hiKCl9ZWxzZXtjW2UrMTI+PjJdPXI7Y1tmPj4yXT1yO2Nbcis4Pj4yXT1lO2NbcisxMj4+Ml09aDtjW3IrMjQ+PjJdPTA7YnJlYWt9fX1lbHNle0g9Y1syMjE4ND4+Ml18MDtpZigoSHwwKT09MHxwPj4+MDxIPj4+MCl7Y1syMjE4ND4+Ml09cH1jWzIyNjE2Pj4yXT1wO2NbMjI2MjA+PjJdPXE7Y1syMjYyOD4+Ml09MDtjWzIyMjA0Pj4yXT1jWzU2NjBdO2NbMjIyMDA+PjJdPS0xO2Q9MDtkb3tIPWQ8PDE7Rz0yMjIwOCsoSDw8Mil8MDtjWzIyMjA4KyhIKzM8PDIpPj4yXT1HO2NbMjIyMDgrKEgrMjw8Mik+PjJdPUc7ZD1kKzF8MH13aGlsZSgoZHwwKSE9MzIpO2Q9cCs4fDA7aWYoKGQmN3wwKT09MCl7ZD0wfWVsc2V7ZD0wLWQmN31IPXErIC00MC1kfDA7Y1syMjE5Mj4+Ml09cCtkO2NbMjIxODA+PjJdPUg7Y1twKyhkKzQpPj4yXT1IfDE7Y1twKyhxKyAtMzYpPj4yXT00MDtjWzIyMTk2Pj4yXT1jWzIyNjU2Pj4yXX19d2hpbGUoMCk7ZD1jWzIyMTgwPj4yXXwwO2lmKGQ+Pj4wPmE+Pj4wKXtHPWQtYXwwO2NbMjIxODA+PjJdPUc7SD1jWzIyMTkyPj4yXXwwO2NbMjIxOTI+PjJdPUgrYTtjW0grKGErNCk+PjJdPUd8MTtjW0grND4+Ml09YXwzO0g9SCs4fDA7aT1iO3JldHVybiBIfDB9fWNbKGJiKCl8MCk+PjJdPTEyO0g9MDtpPWI7cmV0dXJuIEh8MH1mdW5jdGlvbiB2bihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDtiPWk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59cT1hKyAtOHwwO3I9Y1syMjE4ND4+Ml18MDtpZihxPj4+MDxyPj4+MCl7WGIoKX1vPWNbYSsgLTQ+PjJdfDA7bj1vJjM7aWYoKG58MCk9PTEpe1hiKCl9aj1vJi04O2g9YSsoaisgLTgpfDA7ZG97aWYoKG8mMXwwKT09MCl7dT1jW3E+PjJdfDA7aWYoKG58MCk9PTApe2k9YjtyZXR1cm59cT0tOC11fDA7bz1hK3F8MDtuPXUranwwO2lmKG8+Pj4wPHI+Pj4wKXtYYigpfWlmKChvfDApPT0oY1syMjE4OD4+Ml18MCkpe2Q9YSsoaisgLTQpfDA7aWYoKGNbZD4+Ml0mM3wwKSE9Myl7ZD1vO209bjticmVha31jWzIyMTc2Pj4yXT1uO2NbZD4+Ml09Y1tkPj4yXSYtMjtjW2ErKHErNCk+PjJdPW58MTtjW2g+PjJdPW47aT1iO3JldHVybn10PXU+Pj4zO2lmKHU+Pj4wPDI1Nil7ZD1jW2ErKHErOCk+PjJdfDA7bT1jW2ErKHErMTIpPj4yXXwwO3A9MjIyMDgrKHQ8PDE8PDIpfDA7aWYoKGR8MCkhPShwfDApKXtpZihkPj4+MDxyPj4+MCl7WGIoKX1pZigoY1tkKzEyPj4yXXwwKSE9KG98MCkpe1hiKCl9fWlmKChtfDApPT0oZHwwKSl7Y1s1NTQyXT1jWzU1NDJdJn4oMTw8dCk7ZD1vO209bjticmVha31pZigobXwwKSE9KHB8MCkpe2lmKG0+Pj4wPHI+Pj4wKXtYYigpfXA9bSs4fDA7aWYoKGNbcD4+Ml18MCk9PShvfDApKXtzPXB9ZWxzZXtYYigpfX1lbHNle3M9bSs4fDB9Y1tkKzEyPj4yXT1tO2Nbcz4+Ml09ZDtkPW87bT1uO2JyZWFrfXM9Y1thKyhxKzI0KT4+Ml18MDt0PWNbYSsocSsxMik+PjJdfDA7ZG97aWYoKHR8MCk9PShvfDApKXt1PWErKHErMjApfDA7dD1jW3U+PjJdfDA7aWYoKHR8MCk9PTApe3U9YSsocSsxNil8MDt0PWNbdT4+Ml18MDtpZigodHwwKT09MCl7cD0wO2JyZWFrfX13aGlsZSgxKXt3PXQrMjB8MDt2PWNbdz4+Ml18MDtpZigodnwwKSE9MCl7dD12O3U9dztjb250aW51ZX12PXQrMTZ8MDt3PWNbdj4+Ml18MDtpZigod3wwKT09MCl7YnJlYWt9ZWxzZXt0PXc7dT12fX1pZih1Pj4+MDxyPj4+MCl7WGIoKX1lbHNle2NbdT4+Ml09MDtwPXQ7YnJlYWt9fWVsc2V7dT1jW2ErKHErOCk+PjJdfDA7aWYodT4+PjA8cj4+PjApe1hiKCl9cj11KzEyfDA7aWYoKGNbcj4+Ml18MCkhPShvfDApKXtYYigpfXY9dCs4fDA7aWYoKGNbdj4+Ml18MCk9PShvfDApKXtjW3I+PjJdPXQ7Y1t2Pj4yXT11O3A9dDticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtpZigoc3wwKSE9MCl7dD1jW2ErKHErMjgpPj4yXXwwO3I9MjI0NzIrKHQ8PDIpfDA7aWYoKG98MCk9PShjW3I+PjJdfDApKXtjW3I+PjJdPXA7aWYoKHB8MCk9PTApe2NbMjIxNzI+PjJdPWNbMjIxNzI+PjJdJn4oMTw8dCk7ZD1vO209bjticmVha319ZWxzZXtpZihzPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfXI9cysxNnwwO2lmKChjW3I+PjJdfDApPT0ob3wwKSl7Y1tyPj4yXT1wfWVsc2V7Y1tzKzIwPj4yXT1wfWlmKChwfDApPT0wKXtkPW87bT1uO2JyZWFrfX1pZihwPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWNbcCsyND4+Ml09cztyPWNbYSsocSsxNik+PjJdfDA7ZG97aWYoKHJ8MCkhPTApe2lmKHI+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW3ArMTY+PjJdPXI7Y1tyKzI0Pj4yXT1wO2JyZWFrfX19d2hpbGUoMCk7cT1jW2ErKHErMjApPj4yXXwwO2lmKChxfDApIT0wKXtpZihxPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1twKzIwPj4yXT1xO2NbcSsyND4+Ml09cDtkPW87bT1uO2JyZWFrfX1lbHNle2Q9bzttPW59fWVsc2V7ZD1vO209bn19ZWxzZXtkPXE7bT1qfX13aGlsZSgwKTtpZighKGQ+Pj4wPGg+Pj4wKSl7WGIoKX1uPWErKGorIC00KXwwO289Y1tuPj4yXXwwO2lmKChvJjF8MCk9PTApe1hiKCl9aWYoKG8mMnwwKT09MCl7aWYoKGh8MCk9PShjWzIyMTkyPj4yXXwwKSl7dz0oY1syMjE4MD4+Ml18MCkrbXwwO2NbMjIxODA+PjJdPXc7Y1syMjE5Mj4+Ml09ZDtjW2QrND4+Ml09d3wxO2lmKChkfDApIT0oY1syMjE4OD4+Ml18MCkpe2k9YjtyZXR1cm59Y1syMjE4OD4+Ml09MDtjWzIyMTc2Pj4yXT0wO2k9YjtyZXR1cm59aWYoKGh8MCk9PShjWzIyMTg4Pj4yXXwwKSl7dz0oY1syMjE3Nj4+Ml18MCkrbXwwO2NbMjIxNzY+PjJdPXc7Y1syMjE4OD4+Ml09ZDtjW2QrND4+Ml09d3wxO2NbZCt3Pj4yXT13O2k9YjtyZXR1cm59bT0obyYtOCkrbXwwO249bz4+PjM7ZG97aWYoIShvPj4+MDwyNTYpKXtsPWNbYSsoaisxNik+PjJdfDA7cT1jW2ErKGp8NCk+PjJdfDA7ZG97aWYoKHF8MCk9PShofDApKXtvPWErKGorMTIpfDA7bj1jW28+PjJdfDA7aWYoKG58MCk9PTApe289YSsoais4KXwwO249Y1tvPj4yXXwwO2lmKChufDApPT0wKXtrPTA7YnJlYWt9fXdoaWxlKDEpe3A9bisyMHwwO3E9Y1twPj4yXXwwO2lmKChxfDApIT0wKXtuPXE7bz1wO2NvbnRpbnVlfXA9bisxNnwwO3E9Y1twPj4yXXwwO2lmKChxfDApPT0wKXticmVha31lbHNle249cTtvPXB9fWlmKG8+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW28+PjJdPTA7az1uO2JyZWFrfX1lbHNle289Y1thK2o+PjJdfDA7aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1wPW8rMTJ8MDtpZigoY1twPj4yXXwwKSE9KGh8MCkpe1hiKCl9bj1xKzh8MDtpZigoY1tuPj4yXXwwKT09KGh8MCkpe2NbcD4+Ml09cTtjW24+PjJdPW87az1xO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChsfDApIT0wKXtuPWNbYSsoaisyMCk+PjJdfDA7bz0yMjQ3Misobjw8Mil8MDtpZigoaHwwKT09KGNbbz4+Ml18MCkpe2Nbbz4+Ml09aztpZigoa3wwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxuKTticmVha319ZWxzZXtpZihsPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfW49bCsxNnwwO2lmKChjW24+PjJdfDApPT0oaHwwKSl7Y1tuPj4yXT1rfWVsc2V7Y1tsKzIwPj4yXT1rfWlmKChrfDApPT0wKXticmVha319aWYoaz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2srMjQ+PjJdPWw7aD1jW2ErKGorOCk+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2srMTY+PjJdPWg7Y1toKzI0Pj4yXT1rO2JyZWFrfX19d2hpbGUoMCk7aD1jW2ErKGorMTIpPj4yXXwwO2lmKChofDApIT0wKXtpZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1trKzIwPj4yXT1oO2NbaCsyND4+Ml09azticmVha319fX1lbHNle2s9Y1thK2o+PjJdfDA7YT1jW2ErKGp8NCk+PjJdfDA7aj0yMjIwOCsobjw8MTw8Mil8MDtpZigoa3wwKSE9KGp8MCkpe2lmKGs+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9aWYoKGNbaysxMj4+Ml18MCkhPShofDApKXtYYigpfX1pZigoYXwwKT09KGt8MCkpe2NbNTU0Ml09Y1s1NTQyXSZ+KDE8PG4pO2JyZWFrfWlmKChhfDApIT0oanwwKSl7aWYoYT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1qPWErOHwwO2lmKChjW2o+PjJdfDApPT0oaHwwKSl7bD1qfWVsc2V7WGIoKX19ZWxzZXtsPWErOHwwfWNbaysxMj4+Ml09YTtjW2w+PjJdPWt9fXdoaWxlKDApO2NbZCs0Pj4yXT1tfDE7Y1tkK20+PjJdPW07aWYoKGR8MCk9PShjWzIyMTg4Pj4yXXwwKSl7Y1syMjE3Nj4+Ml09bTtpPWI7cmV0dXJufX1lbHNle2Nbbj4+Ml09byYtMjtjW2QrND4+Ml09bXwxO2NbZCttPj4yXT1tfWg9bT4+PjM7aWYobT4+PjA8MjU2KXthPWg8PDE7ZT0yMjIwOCsoYTw8Mil8MDtqPWNbNTU0Ml18MDtoPTE8PGg7aWYoKGomaHwwKSE9MCl7aD0yMjIwOCsoYSsyPDwyKXwwO2E9Y1toPj4yXXwwO2lmKGE+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtmPWg7Zz1hfX1lbHNle2NbNTU0Ml09anxoO2Y9MjIyMDgrKGErMjw8Mil8MDtnPWV9Y1tmPj4yXT1kO2NbZysxMj4+Ml09ZDtjW2QrOD4+Ml09ZztjW2QrMTI+PjJdPWU7aT1iO3JldHVybn1mPW0+Pj44O2lmKChmfDApIT0wKXtpZihtPj4+MD4xNjc3NzIxNSl7Zj0zMX1lbHNle3Y9KGYrMTA0ODMyMHwwKT4+PjE2Jjg7dz1mPDx2O3U9KHcrNTIwMTkyfDApPj4+MTYmNDt3PXc8PHU7Zj0odysyNDU3NjB8MCk+Pj4xNiYyO2Y9MTQtKHV8dnxmKSsodzw8Zj4+PjE1KXwwO2Y9bT4+PihmKzd8MCkmMXxmPDwxfX1lbHNle2Y9MH1nPTIyNDcyKyhmPDwyKXwwO2NbZCsyOD4+Ml09ZjtjW2QrMjA+PjJdPTA7Y1tkKzE2Pj4yXT0wO2E9Y1syMjE3Mj4+Ml18MDtoPTE8PGY7YTpkb3tpZigoYSZofDApIT0wKXtnPWNbZz4+Ml18MDtpZigoZnwwKT09MzEpe2Y9MH1lbHNle2Y9MjUtKGY+Pj4xKXwwfWI6ZG97aWYoKGNbZys0Pj4yXSYtOHwwKSE9KG18MCkpe2Y9bTw8ZjthPWc7d2hpbGUoMSl7aD1hKyhmPj4+MzE8PDIpKzE2fDA7Zz1jW2g+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShtfDApKXtlPWc7YnJlYWsgYn1lbHNle2Y9Zjw8MTthPWd9fWlmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2g+PjJdPWQ7Y1tkKzI0Pj4yXT1hO2NbZCsxMj4+Ml09ZDtjW2QrOD4+Ml09ZDticmVhayBhfX1lbHNle2U9Z319d2hpbGUoMCk7Zz1lKzh8MDtmPWNbZz4+Ml18MDtoPWNbMjIxODQ+PjJdfDA7aWYoZT4+PjA8aD4+PjApe1hiKCl9aWYoZj4+PjA8aD4+PjApe1hiKCl9ZWxzZXtjW2YrMTI+PjJdPWQ7Y1tnPj4yXT1kO2NbZCs4Pj4yXT1mO2NbZCsxMj4+Ml09ZTtjW2QrMjQ+PjJdPTA7YnJlYWt9fWVsc2V7Y1syMjE3Mj4+Ml09YXxoO2NbZz4+Ml09ZDtjW2QrMjQ+PjJdPWc7Y1tkKzEyPj4yXT1kO2NbZCs4Pj4yXT1kfX13aGlsZSgwKTt3PShjWzIyMjAwPj4yXXwwKSsgLTF8MDtjWzIyMjAwPj4yXT13O2lmKCh3fDApPT0wKXtkPTIyNjI0fDB9ZWxzZXtpPWI7cmV0dXJufXdoaWxlKDEpe2Q9Y1tkPj4yXXwwO2lmKChkfDApPT0wKXticmVha31lbHNle2Q9ZCs4fDB9fWNbMjIyMDA+PjJdPS0xO2k9YjtyZXR1cm59ZnVuY3Rpb24gd24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtkPWk7aWYoKGF8MCk9PTApe3I9dW4oYil8MDtpPWQ7cmV0dXJuIHJ8MH1pZihiPj4+MD40Mjk0OTY3MjMxKXtjWyhiYigpfDApPj4yXT0xMjtyPTA7aT1kO3JldHVybiByfDB9aWYoYj4+PjA8MTEpe2Y9MTZ9ZWxzZXtmPWIrMTEmLTh9ZT1hKyAtNHwwO2s9Y1tlPj4yXXwwO2w9ayYtODtvPWwrIC04fDA7aD1hK298MDttPWNbMjIxODQ+PjJdfDA7aWYoKGErIC04fDApPj4+MDxtPj4+MCl7WGIoKX1yPWsmMztpZighKChyfDApIT0xJihvfDApPi04KSl7WGIoKX1vPWx8NDtxPWErKG8rIC04KXwwO3A9Y1txPj4yXXwwO2lmKChwJjF8MCk9PTApe1hiKCl9ZG97aWYoKHJ8MCk9PTApe2lmKCEoZj4+PjA8MjU2fGw+Pj4wPChmfDQpPj4+MCk/ISgobC1mfDApPj4+MD5jWzIyNjQ4Pj4yXTw8MT4+PjApOjApe3I9YTtpPWQ7cmV0dXJuIHJ8MH19ZWxzZXtpZighKGw+Pj4wPGY+Pj4wKSl7Zz1sLWZ8MDtpZighKGc+Pj4wPjE1KSl7cj1hO2k9ZDtyZXR1cm4gcnwwfWNbZT4+Ml09ayYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPWd8MztjW3E+PjJdPWNbcT4+Ml18MTt4bihhKyhmKyAtOCl8MCxnKTtyPWE7aT1kO3JldHVybiByfDB9aWYoKGh8MCk9PShjWzIyMTkyPj4yXXwwKSl7Zz0oY1syMjE4MD4+Ml18MCkrbHwwO2lmKCEoZz4+PjA+Zj4+PjApKXticmVha31yPWctZnwwO2NbZT4+Ml09ayYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPXJ8MTtjWzIyMTkyPj4yXT1hKyhmKyAtOCk7Y1syMjE4MD4+Ml09cjtyPWE7aT1kO3JldHVybiByfDB9aWYoKGh8MCk9PShjWzIyMTg4Pj4yXXwwKSl7Zz0oY1syMjE3Nj4+Ml18MCkrbHwwO2lmKGc+Pj4wPGY+Pj4wKXticmVha31oPWctZnwwO2lmKGg+Pj4wPjE1KXtjW2U+PjJdPWsmMXxmfDI7Y1thKygoZnw0KSsgLTgpPj4yXT1ofDE7Y1thKyhnKyAtOCk+PjJdPWg7ZT1hKyhnKyAtNCl8MDtjW2U+PjJdPWNbZT4+Ml0mLTI7ZT1hKyhmKyAtOCl8MH1lbHNle2NbZT4+Ml09ayYxfGd8MjtlPWErKGcrIC00KXwwO2NbZT4+Ml09Y1tlPj4yXXwxO2U9MDtoPTB9Y1syMjE3Nj4+Ml09aDtjWzIyMTg4Pj4yXT1lO3I9YTtpPWQ7cmV0dXJuIHJ8MH1pZigocCYyfDApPT0wPyhnPShwJi04KStsfDAsIShnPj4+MDxmPj4+MCkpOjApe2s9Zy1mfDA7Yj1wPj4+Mztkb3tpZighKHA+Pj4wPDI1Nikpe249Y1thKyhsKzE2KT4+Ml18MDtvPWNbYStvPj4yXXwwO2Rve2lmKChvfDApPT0oaHwwKSl7Yj1hKyhsKzEyKXwwO289Y1tiPj4yXXwwO2lmKChvfDApPT0wKXtiPWErKGwrOCl8MDtvPWNbYj4+Ml18MDtpZigob3wwKT09MCl7aj0wO2JyZWFrfX13aGlsZSgxKXtxPW8rMjB8MDtwPWNbcT4+Ml18MDtpZigocHwwKSE9MCl7bz1wO2I9cTtjb250aW51ZX1wPW8rMTZ8MDtxPWNbcD4+Ml18MDtpZigocXwwKT09MCl7YnJlYWt9ZWxzZXtvPXE7Yj1wfX1pZihiPj4+MDxtPj4+MCl7WGIoKX1lbHNle2NbYj4+Ml09MDtqPW87YnJlYWt9fWVsc2V7Yj1jW2ErbD4+Ml18MDtpZihiPj4+MDxtPj4+MCl7WGIoKX1wPWIrMTJ8MDtpZigoY1twPj4yXXwwKSE9KGh8MCkpe1hiKCl9bT1vKzh8MDtpZigoY1ttPj4yXXwwKT09KGh8MCkpe2NbcD4+Ml09bztjW20+PjJdPWI7aj1vO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChufDApIT0wKXtvPWNbYSsobCsyMCk+PjJdfDA7bT0yMjQ3Misobzw8Mil8MDtpZigoaHwwKT09KGNbbT4+Ml18MCkpe2NbbT4+Ml09ajtpZigoanwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxvKTticmVha319ZWxzZXtpZihuPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfW09bisxNnwwO2lmKChjW20+PjJdfDApPT0oaHwwKSl7Y1ttPj4yXT1qfWVsc2V7Y1tuKzIwPj4yXT1qfWlmKChqfDApPT0wKXticmVha319aWYoaj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2orMjQ+PjJdPW47aD1jW2ErKGwrOCk+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2orMTY+PjJdPWg7Y1toKzI0Pj4yXT1qO2JyZWFrfX19d2hpbGUoMCk7aD1jW2ErKGwrMTIpPj4yXXwwO2lmKChofDApPT0wKXticmVha31pZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tqKzIwPj4yXT1oO2NbaCsyND4+Ml09ajticmVha319fWVsc2V7aj1jW2ErbD4+Ml18MDtsPWNbYStvPj4yXXwwO289MjIyMDgrKGI8PDE8PDIpfDA7aWYoKGp8MCkhPShvfDApKXtpZihqPj4+MDxtPj4+MCl7WGIoKX1pZigoY1tqKzEyPj4yXXwwKSE9KGh8MCkpe1hiKCl9fWlmKChsfDApPT0oanwwKSl7Y1s1NTQyXT1jWzU1NDJdJn4oMTw8Yik7YnJlYWt9ZG97aWYoKGx8MCk9PShvfDApKXtuPWwrOHwwfWVsc2V7aWYobD4+PjA8bT4+PjApe1hiKCl9bT1sKzh8MDtpZigoY1ttPj4yXXwwKT09KGh8MCkpe249bTticmVha31YYigpfX13aGlsZSgwKTtjW2orMTI+PjJdPWw7Y1tuPj4yXT1qfX13aGlsZSgwKTtpZihrPj4+MDwxNil7Y1tlPj4yXT1nfGNbZT4+Ml0mMXwyO3I9YSsoKGd8NCkrIC04KXwwO2Nbcj4+Ml09Y1tyPj4yXXwxO3I9YTtpPWQ7cmV0dXJuIHJ8MH1lbHNle2NbZT4+Ml09Y1tlPj4yXSYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPWt8MztyPWErKChnfDQpKyAtOCl8MDtjW3I+PjJdPWNbcj4+Ml18MTt4bihhKyhmKyAtOCl8MCxrKTtyPWE7aT1kO3JldHVybiByfDB9fX19d2hpbGUoMCk7Zj11bihiKXwwO2lmKChmfDApPT0wKXtyPTA7aT1kO3JldHVybiByfDB9cj1jW2U+PjJdfDA7cj0ociYtOCktKChyJjN8MCk9PTA/ODo0KXwwO0xuKGZ8MCxhfDAsKHI+Pj4wPGI+Pj4wP3I6Yil8MCl8MDt2bihhKTtyPWY7aT1kO3JldHVybiByfDB9ZnVuY3Rpb24geG4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7ZD1pO2g9YStifDA7bD1jW2ErND4+Ml18MDtkb3tpZigobCYxfDApPT0wKXtwPWNbYT4+Ml18MDtpZigobCYzfDApPT0wKXtpPWQ7cmV0dXJufWw9YSsoMC1wKXwwO209cCtifDA7cT1jWzIyMTg0Pj4yXXwwO2lmKGw+Pj4wPHE+Pj4wKXtYYigpfWlmKChsfDApPT0oY1syMjE4OD4+Ml18MCkpe2U9YSsoYis0KXwwO2lmKChjW2U+PjJdJjN8MCkhPTMpe2U9bDtuPW07YnJlYWt9Y1syMjE3Nj4+Ml09bTtjW2U+PjJdPWNbZT4+Ml0mLTI7Y1thKyg0LXApPj4yXT1tfDE7Y1toPj4yXT1tO2k9ZDtyZXR1cm59cz1wPj4+MztpZihwPj4+MDwyNTYpe2U9Y1thKyg4LXApPj4yXXwwO249Y1thKygxMi1wKT4+Ml18MDtvPTIyMjA4KyhzPDwxPDwyKXwwO2lmKChlfDApIT0ob3wwKSl7aWYoZT4+PjA8cT4+PjApe1hiKCl9aWYoKGNbZSsxMj4+Ml18MCkhPShsfDApKXtYYigpfX1pZigobnwwKT09KGV8MCkpe2NbNTU0Ml09Y1s1NTQyXSZ+KDE8PHMpO2U9bDtuPW07YnJlYWt9aWYoKG58MCkhPShvfDApKXtpZihuPj4+MDxxPj4+MCl7WGIoKX1vPW4rOHwwO2lmKChjW28+PjJdfDApPT0obHwwKSl7cj1vfWVsc2V7WGIoKX19ZWxzZXtyPW4rOHwwfWNbZSsxMj4+Ml09bjtjW3I+PjJdPWU7ZT1sO249bTticmVha31yPWNbYSsoMjQtcCk+PjJdfDA7dD1jW2ErKDEyLXApPj4yXXwwO2Rve2lmKCh0fDApPT0obHwwKSl7dT0xNi1wfDA7dD1hKyh1KzQpfDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe3Q9YSt1fDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe289MDticmVha319d2hpbGUoMSl7dT1zKzIwfDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCkhPTApe3M9djt0PXU7Y29udGludWV9dj1zKzE2fDA7dT1jW3Y+PjJdfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7cz11O3Q9dn19aWYodD4+PjA8cT4+PjApe1hiKCl9ZWxzZXtjW3Q+PjJdPTA7bz1zO2JyZWFrfX1lbHNle3M9Y1thKyg4LXApPj4yXXwwO2lmKHM+Pj4wPHE+Pj4wKXtYYigpfXU9cysxMnwwO2lmKChjW3U+PjJdfDApIT0obHwwKSl7WGIoKX1xPXQrOHwwO2lmKChjW3E+PjJdfDApPT0obHwwKSl7Y1t1Pj4yXT10O2NbcT4+Ml09cztvPXQ7YnJlYWt9ZWxzZXtYYigpfX19d2hpbGUoMCk7aWYoKHJ8MCkhPTApe3E9Y1thKygyOC1wKT4+Ml18MDtzPTIyNDcyKyhxPDwyKXwwO2lmKChsfDApPT0oY1tzPj4yXXwwKSl7Y1tzPj4yXT1vO2lmKChvfDApPT0wKXtjWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PHEpO2U9bDtuPW07YnJlYWt9fWVsc2V7aWYocj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1xPXIrMTZ8MDtpZigoY1txPj4yXXwwKT09KGx8MCkpe2NbcT4+Ml09b31lbHNle2NbcisyMD4+Ml09b31pZigob3wwKT09MCl7ZT1sO249bTticmVha319aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW28rMjQ+PjJdPXI7cD0xNi1wfDA7cT1jW2ErcD4+Ml18MDtkb3tpZigocXwwKSE9MCl7aWYocT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbbysxNj4+Ml09cTtjW3ErMjQ+PjJdPW87YnJlYWt9fX13aGlsZSgwKTtwPWNbYSsocCs0KT4+Ml18MDtpZigocHwwKSE9MCl7aWYocD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbbysyMD4+Ml09cDtjW3ArMjQ+PjJdPW87ZT1sO249bTticmVha319ZWxzZXtlPWw7bj1tfX1lbHNle2U9bDtuPW19fWVsc2V7ZT1hO249Yn19d2hpbGUoMCk7bD1jWzIyMTg0Pj4yXXwwO2lmKGg+Pj4wPGw+Pj4wKXtYYigpfW09YSsoYis0KXwwO289Y1ttPj4yXXwwO2lmKChvJjJ8MCk9PTApe2lmKChofDApPT0oY1syMjE5Mj4+Ml18MCkpe3Y9KGNbMjIxODA+PjJdfDApK258MDtjWzIyMTgwPj4yXT12O2NbMjIxOTI+PjJdPWU7Y1tlKzQ+PjJdPXZ8MTtpZigoZXwwKSE9KGNbMjIxODg+PjJdfDApKXtpPWQ7cmV0dXJufWNbMjIxODg+PjJdPTA7Y1syMjE3Nj4+Ml09MDtpPWQ7cmV0dXJufWlmKChofDApPT0oY1syMjE4OD4+Ml18MCkpe3Y9KGNbMjIxNzY+PjJdfDApK258MDtjWzIyMTc2Pj4yXT12O2NbMjIxODg+PjJdPWU7Y1tlKzQ+PjJdPXZ8MTtjW2Urdj4+Ml09djtpPWQ7cmV0dXJufW49KG8mLTgpK258MDttPW8+Pj4zO2Rve2lmKCEobz4+PjA8MjU2KSl7az1jW2ErKGIrMjQpPj4yXXwwO209Y1thKyhiKzEyKT4+Ml18MDtkb3tpZigobXwwKT09KGh8MCkpe289YSsoYisyMCl8MDttPWNbbz4+Ml18MDtpZigobXwwKT09MCl7bz1hKyhiKzE2KXwwO209Y1tvPj4yXXwwO2lmKChtfDApPT0wKXtqPTA7YnJlYWt9fXdoaWxlKDEpe3E9bSsyMHwwO3A9Y1txPj4yXXwwO2lmKChwfDApIT0wKXttPXA7bz1xO2NvbnRpbnVlfXA9bSsxNnwwO3E9Y1twPj4yXXwwO2lmKChxfDApPT0wKXticmVha31lbHNle209cTtvPXB9fWlmKG8+Pj4wPGw+Pj4wKXtYYigpfWVsc2V7Y1tvPj4yXT0wO2o9bTticmVha319ZWxzZXtvPWNbYSsoYis4KT4+Ml18MDtpZihvPj4+MDxsPj4+MCl7WGIoKX1sPW8rMTJ8MDtpZigoY1tsPj4yXXwwKSE9KGh8MCkpe1hiKCl9cD1tKzh8MDtpZigoY1twPj4yXXwwKT09KGh8MCkpe2NbbD4+Ml09bTtjW3A+PjJdPW87aj1tO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChrfDApIT0wKXtsPWNbYSsoYisyOCk+PjJdfDA7bT0yMjQ3MisobDw8Mil8MDtpZigoaHwwKT09KGNbbT4+Ml18MCkpe2NbbT4+Ml09ajtpZigoanwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxsKTticmVha319ZWxzZXtpZihrPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWw9aysxNnwwO2lmKChjW2w+PjJdfDApPT0oaHwwKSl7Y1tsPj4yXT1qfWVsc2V7Y1trKzIwPj4yXT1qfWlmKChqfDApPT0wKXticmVha319aWYoaj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2orMjQ+PjJdPWs7aD1jW2ErKGIrMTYpPj4yXXwwO2Rve2lmKChofDApIT0wKXtpZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tqKzE2Pj4yXT1oO2NbaCsyND4+Ml09ajticmVha319fXdoaWxlKDApO2g9Y1thKyhiKzIwKT4+Ml18MDtpZigoaHwwKSE9MCl7aWYoaD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbaisyMD4+Ml09aDtjW2grMjQ+PjJdPWo7YnJlYWt9fX19ZWxzZXtqPWNbYSsoYis4KT4+Ml18MDthPWNbYSsoYisxMik+PjJdfDA7Yj0yMjIwOCsobTw8MTw8Mil8MDtpZigoanwwKSE9KGJ8MCkpe2lmKGo+Pj4wPGw+Pj4wKXtYYigpfWlmKChjW2orMTI+PjJdfDApIT0oaHwwKSl7WGIoKX19aWYoKGF8MCk9PShqfDApKXtjWzU1NDJdPWNbNTU0Ml0mfigxPDxtKTticmVha31pZigoYXwwKSE9KGJ8MCkpe2lmKGE+Pj4wPGw+Pj4wKXtYYigpfWI9YSs4fDA7aWYoKGNbYj4+Ml18MCk9PShofDApKXtrPWJ9ZWxzZXtYYigpfX1lbHNle2s9YSs4fDB9Y1tqKzEyPj4yXT1hO2Nbaz4+Ml09an19d2hpbGUoMCk7Y1tlKzQ+PjJdPW58MTtjW2Urbj4+Ml09bjtpZigoZXwwKT09KGNbMjIxODg+PjJdfDApKXtjWzIyMTc2Pj4yXT1uO2k9ZDtyZXR1cm59fWVsc2V7Y1ttPj4yXT1vJi0yO2NbZSs0Pj4yXT1ufDE7Y1tlK24+PjJdPW59YT1uPj4+MztpZihuPj4+MDwyNTYpe2I9YTw8MTtoPTIyMjA4KyhiPDwyKXwwO2o9Y1s1NTQyXXwwO2E9MTw8YTtpZigoaiZhfDApIT0wKXtiPTIyMjA4KyhiKzI8PDIpfDA7YT1jW2I+PjJdfDA7aWYoYT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2c9YjtmPWF9fWVsc2V7Y1s1NTQyXT1qfGE7Zz0yMjIwOCsoYisyPDwyKXwwO2Y9aH1jW2c+PjJdPWU7Y1tmKzEyPj4yXT1lO2NbZSs4Pj4yXT1mO2NbZSsxMj4+Ml09aDtpPWQ7cmV0dXJufWY9bj4+Pjg7aWYoKGZ8MCkhPTApe2lmKG4+Pj4wPjE2Nzc3MjE1KXtmPTMxfWVsc2V7dT0oZisxMDQ4MzIwfDApPj4+MTYmODt2PWY8PHU7dD0odis1MjAxOTJ8MCk+Pj4xNiY0O3Y9djw8dDtmPSh2KzI0NTc2MHwwKT4+PjE2JjI7Zj0xNC0odHx1fGYpKyh2PDxmPj4+MTUpfDA7Zj1uPj4+KGYrN3wwKSYxfGY8PDF9fWVsc2V7Zj0wfWE9MjI0NzIrKGY8PDIpfDA7Y1tlKzI4Pj4yXT1mO2NbZSsyMD4+Ml09MDtjW2UrMTY+PjJdPTA7aD1jWzIyMTcyPj4yXXwwO2c9MTw8ZjtpZigoaCZnfDApPT0wKXtjWzIyMTcyPj4yXT1ofGc7Y1thPj4yXT1lO2NbZSsyND4+Ml09YTtjW2UrMTI+PjJdPWU7Y1tlKzg+PjJdPWU7aT1kO3JldHVybn1nPWNbYT4+Ml18MDtpZigoZnwwKT09MzEpe2Y9MH1lbHNle2Y9MjUtKGY+Pj4xKXwwfWE6ZG97aWYoKGNbZys0Pj4yXSYtOHwwKSE9KG58MCkpe2Y9bjw8ZjthPWc7d2hpbGUoMSl7aD1hKyhmPj4+MzE8PDIpKzE2fDA7Zz1jW2g+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShufDApKXticmVhayBhfWVsc2V7Zj1mPDwxO2E9Z319aWYoaD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2g+PjJdPWU7Y1tlKzI0Pj4yXT1hO2NbZSsxMj4+Ml09ZTtjW2UrOD4+Ml09ZTtpPWQ7cmV0dXJufX13aGlsZSgwKTtmPWcrOHwwO2E9Y1tmPj4yXXwwO2g9Y1syMjE4ND4+Ml18MDtpZihnPj4+MDxoPj4+MCl7WGIoKX1pZihhPj4+MDxoPj4+MCl7WGIoKX1jW2ErMTI+PjJdPWU7Y1tmPj4yXT1lO2NbZSs4Pj4yXT1hO2NbZSsxMj4+Ml09ZztjW2UrMjQ+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiB5bihhKXthPWF8MDt2YXIgYj0wO2I9aTtSYihhfDApO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIHpuKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBBbihhKXthPWF8MDtyZXR1cm4gMjI2OTZ9ZnVuY3Rpb24gQm4oYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO2g9aTtpZihlPj4+MD4zNil7Y1soYmIoKXwwKT4+Ml09MjI7cz0wO3Q9MDtJPXM7aT1oO3JldHVybiB0fDB9az1iKzR8MDtqPWIrMTAwfDA7ZG97bD1jW2s+PjJdfDA7aWYobD4+PjA8KGNbaj4+Ml18MCk+Pj4wKXtjW2s+PjJdPWwrMTtvPWRbbD4+MF18MH1lbHNle289RG4oYil8MH19d2hpbGUoKG98MCk9PTMyfChvKyAtOXwwKT4+PjA8NSk7ZG97aWYoKG98MCk9PTQzfChvfDApPT00NSl7bD0oKG98MCk9PTQ1KTw8MzE+PjMxO209Y1trPj4yXXwwO2lmKG0+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1tKzE7bz1kW20+PjBdfDA7YnJlYWt9ZWxzZXtvPURuKGIpfDA7YnJlYWt9fWVsc2V7bD0wfX13aGlsZSgwKTttPShlfDApPT0wO2Rve2lmKChlJi0xN3wwKT09MCYob3wwKT09NDgpe249Y1trPj4yXXwwO2lmKG4+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1uKzE7bz1kW24+PjBdfDB9ZWxzZXtvPURuKGIpfDB9aWYoKG98MzJ8MCkhPTEyMCl7ZT1tPzg6ZTttPTI4O2JyZWFrfWU9Y1trPj4yXXwwO2lmKGU+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1lKzE7bz1kW2U+PjBdfDB9ZWxzZXtvPURuKGIpfDB9aWYoKGRbbysyMjc0NT4+MF18MCk+MTUpe2lmKChjW2o+PjJdfDApPT0wKXtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH1jW2s+PjJdPShjW2s+PjJdfDApKyAtMjtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH1lbHNle2U9MTY7bT00M319ZWxzZXtlPW0/MTA6ZTtpZigoZFtvKzIyNzQ1Pj4wXXwwKT4+PjA8ZT4+PjApe209Mjh9ZWxzZXtmPWNbaz4+Ml18MDtpZigoY1tqPj4yXXwwKSE9MCl7Zj1mKyAtMXwwO2Nbaz4+Ml09Zn1jW2IrMTA0Pj4yXT0wO3M9Y1tiKzg+PjJdfDA7Y1tiKzEwOD4+Ml09cy1mO2Nbaj4+Ml09cztjWyhiYigpfDApPj4yXT0yMjtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH19fXdoaWxlKDApO2lmKChtfDApPT0yOCl7aWYoKGV8MCk9PTEwKXtlPW8rIC00OHwwO2lmKGU+Pj4wPDEwKXtuPTA7d2hpbGUoMSl7bj1uK2V8MDtlPWNbaz4+Ml18MDtpZihlPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09ZSsxO289ZFtlPj4wXXwwfWVsc2V7bz1EbihiKXwwfWU9bysgLTQ4fDA7aWYoIShlPj4+MDwxMCZuPj4+MDw0Mjk0OTY3MjkpKXticmVha31uPW4qMTB8MH1wPTB9ZWxzZXtuPTA7cD0wfWU9bysgLTQ4fDA7aWYoZT4+PjA8MTApe2Rve3M9Vm4obnwwLHB8MCwxMCwwKXwwO3I9STtxPSgoZXwwKTwwKTw8MzE+PjMxO3Q9fnE7aWYocj4+PjA+dD4+PjB8KHJ8MCk9PSh0fDApJnM+Pj4wPn5lPj4+MCl7YnJlYWt9bj1JbihzfDAscnwwLGV8MCxxfDApfDA7cD1JO2U9Y1trPj4yXXwwO2lmKGU+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1lKzE7bz1kW2U+PjBdfDB9ZWxzZXtvPURuKGIpfDB9ZT1vKyAtNDh8MH13aGlsZShlPj4+MDwxMCYocD4+PjA8NDI5NDk2NzI5fChwfDApPT00Mjk0OTY3Mjkmbj4+PjA8MjU3Njk4MDM3OCkpO2lmKCEoZT4+PjA+OSkpe2U9MTA7bT02OX19fWVsc2V7bT00M319YTpkb3tpZigobXwwKT09NDMpe2lmKChlKyAtMSZlfDApPT0wKXttPWFbMjMwMDgrKChlKjIzfDApPj4+NSY3KT4+MF18MDtyPWFbbysyMjc0NT4+MF18MDtuPXImMjU1O2lmKG4+Pj4wPGU+Pj4wKXtvPW47bj0wO2Rve249b3xuPDxtO289Y1trPj4yXXwwO2lmKG8+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1vKzE7cz1kW28+PjBdfDB9ZWxzZXtzPURuKGIpfDB9cj1hW3MrMjI3NDU+PjBdfDA7bz1yJjI1NX13aGlsZShvPj4+MDxlPj4+MCZuPj4+MDwxMzQyMTc3MjgpO3A9MH1lbHNle3A9MDtuPTA7cz1vfXE9S24oLTEsLTEsbXwwKXwwO289STtpZigociYyNTUpPj4+MD49ZT4+PjB8KHA+Pj4wPm8+Pj4wfChwfDApPT0ob3wwKSZuPj4+MD5xPj4+MCkpe289czttPTY5O2JyZWFrfXdoaWxlKDEpe249T24obnwwLHB8MCxtfDApfDA7cD1JO249ciYyNTV8bjtyPWNbaz4+Ml18MDtpZihyPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09cisxO3M9ZFtyPj4wXXwwfWVsc2V7cz1EbihiKXwwfXI9YVtzKzIyNzQ1Pj4wXXwwO2lmKChyJjI1NSk+Pj4wPj1lPj4+MHwocD4+PjA+bz4+PjB8KHB8MCk9PShvfDApJm4+Pj4wPnE+Pj4wKSl7bz1zO209Njk7YnJlYWsgYX19fXE9YVtvKzIyNzQ1Pj4wXXwwO209cSYyNTU7aWYobT4+PjA8ZT4+PjApe249MDtkb3tuPW0rKGVhKG4sZSl8MCl8MDttPWNbaz4+Ml18MDtpZihtPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09bSsxO3I9ZFttPj4wXXwwfWVsc2V7cj1EbihiKXwwfXE9YVtyKzIyNzQ1Pj4wXXwwO209cSYyNTV9d2hpbGUobT4+PjA8ZT4+PjAmbj4+PjA8MTE5MzA0NjQ3KTtwPTB9ZWxzZXtuPTA7cD0wO3I9b31pZigocSYyNTUpPj4+MDxlPj4+MCl7bT1XbigtMSwtMSxlfDAsMCl8MDtvPUk7d2hpbGUoMSl7aWYocD4+PjA+bz4+PjB8KHB8MCk9PShvfDApJm4+Pj4wPm0+Pj4wKXtvPXI7bT02OTticmVhayBhfXM9Vm4obnwwLHB8MCxlfDAsMCl8MDt0PUk7cT1xJjI1NTtpZih0Pj4+MD40Mjk0OTY3Mjk1fCh0fDApPT0tMSZzPj4+MD5+cT4+PjApe289cjttPTY5O2JyZWFrIGF9bj1JbihxfDAsMCxzfDAsdHwwKXwwO3A9STtxPWNbaz4+Ml18MDtpZihxPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09cSsxO3I9ZFtxPj4wXXwwfWVsc2V7cj1EbihiKXwwfXE9YVtyKzIyNzQ1Pj4wXXwwO2lmKCEoKHEmMjU1KT4+PjA8ZT4+PjApKXtvPXI7bT02OTticmVha319fWVsc2V7bz1yO209Njl9fX13aGlsZSgwKTtpZigobXwwKT09Njkpe2lmKChkW28rMjI3NDU+PjBdfDApPj4+MDxlPj4+MCl7ZG97bT1jW2s+PjJdfDA7aWYobT4+PjA8KGNbaj4+Ml18MCk+Pj4wKXtjW2s+PjJdPW0rMTttPWRbbT4+MF18MH1lbHNle209RG4oYil8MH19d2hpbGUoKGRbbSsyMjc0NT4+MF18MCk+Pj4wPGU+Pj4wKTtjWyhiYigpfDApPj4yXT0zNDtwPWc7bj1mfX1pZigoY1tqPj4yXXwwKSE9MCl7Y1trPj4yXT0oY1trPj4yXXwwKSsgLTF9aWYoIShwPj4+MDxnPj4+MHwocHwwKT09KGd8MCkmbj4+PjA8Zj4+PjApKXtpZigoZiYxfDApPT0wJjA9PTAmKGx8MCk9PTApe2NbKGJiKCl8MCk+PjJdPTM0O3Q9SW4oZnwwLGd8MCwtMSwtMSl8MDtzPUk7ST1zO2k9aDtyZXR1cm4gdHwwfWlmKHA+Pj4wPmc+Pj4wfChwfDApPT0oZ3wwKSZuPj4+MD5mPj4+MCl7Y1soYmIoKXwwKT4+Ml09MzQ7cz1nO3Q9ZjtJPXM7aT1oO3JldHVybiB0fDB9fXQ9KChsfDApPDApPDwzMT4+MzE7dD1IbihuXmx8MCxwXnR8MCxsfDAsdHwwKXwwO3M9STtJPXM7aT1oO3JldHVybiB0fDB9ZnVuY3Rpb24gQ24oYSl7YT1hfDA7dmFyIGI9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZT1pO2Y9YSs0fDA7Zz1jW2Y+PjJdfDA7Yj1hKzEwMHwwO2lmKGc+Pj4wPChjW2I+PjJdfDApPj4+MCl7Y1tmPj4yXT1nKzE7aj1kW2c+PjBdfDB9ZWxzZXtqPURuKGEpfDB9aWYoKGp8MCk9PTQzfChqfDApPT00NSl7Zz0oanwwKT09NDUmMTtoPWNbZj4+Ml18MDtpZihoPj4+MDwoY1tiPj4yXXwwKT4+PjApe2NbZj4+Ml09aCsxO2o9ZFtoPj4wXXwwfWVsc2V7aj1EbihhKXwwfWlmKCEoKGorIC00OHwwKT4+PjA8MTApPyhjW2I+PjJdfDApIT0wOjApe2NbZj4+Ml09KGNbZj4+Ml18MCkrIC0xfX1lbHNle2c9MH1pZigoaisgLTQ4fDApPj4+MD45KXtpZigoY1tiPj4yXXwwKT09MCl7az0tMjE0NzQ4MzY0ODtsPTA7ST1rO2k9ZTtyZXR1cm4gbHwwfWNbZj4+Ml09KGNbZj4+Ml18MCkrIC0xO2s9LTIxNDc0ODM2NDg7bD0wO0k9aztpPWU7cmV0dXJuIGx8MH1lbHNle2g9MH13aGlsZSgxKXtoPWorIC00OCtofDA7aj1jW2Y+PjJdfDA7aWYoaj4+PjA8KGNbYj4+Ml18MCk+Pj4wKXtjW2Y+PjJdPWorMTtqPWRbaj4+MF18MH1lbHNle2o9RG4oYSl8MH1sPShqKyAtNDh8MCk+Pj4wPDEwO2lmKCEobCYoaHwwKTwyMTQ3NDgzNjQpKXticmVha31oPWgqMTB8MH1rPSgoaHwwKTwwKTw8MzE+PjMxO2lmKGwpe2Rve2s9Vm4oaHwwLGt8MCwxMCwwKXwwO2g9STtqPUluKGp8MCwoKGp8MCk8MCk8PDMxPj4zMXwwLC00OCwtMSl8MDtoPUluKGp8MCxJfDAsa3wwLGh8MCl8MDtrPUk7aj1jW2Y+PjJdfDA7aWYoaj4+PjA8KGNbYj4+Ml18MCk+Pj4wKXtjW2Y+PjJdPWorMTtqPWRbaj4+MF18MH1lbHNle2o9RG4oYSl8MH19d2hpbGUoKGorIC00OHwwKT4+PjA8MTAmKChrfDApPDIxNDc0ODM2fChrfDApPT0yMTQ3NDgzNiZoPj4+MDwyMDYxNTg0MzAyKSl9aWYoKGorIC00OHwwKT4+PjA8MTApe2Rve2o9Y1tmPj4yXXwwO2lmKGo+Pj4wPChjW2I+PjJdfDApPj4+MCl7Y1tmPj4yXT1qKzE7aj1kW2o+PjBdfDB9ZWxzZXtqPURuKGEpfDB9fXdoaWxlKChqKyAtNDh8MCk+Pj4wPDEwKX1pZigoY1tiPj4yXXwwKSE9MCl7Y1tmPj4yXT0oY1tmPj4yXXwwKSsgLTF9aj0oZ3wwKSE9MDtsPUhuKDAsMCxofDAsa3wwKXwwO2s9aj9JOms7bD1qP2w6aDtJPWs7aT1lO3JldHVybiBsfDB9ZnVuY3Rpb24gRG4oYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtlPWk7aD1iKzEwNHwwO2w9Y1toPj4yXXwwO2lmKCEoKGx8MCkhPTA/KGNbYisxMDg+PjJdfDApPj0obHwwKTowKSl7Zz0zfWlmKChnfDApPT0zPyhmPUVuKGIpfDAsKGZ8MCk+PTApOjApe2w9Y1toPj4yXXwwO2g9Y1tiKzg+PjJdfDA7az1jW2IrND4+Ml18MDtpZigobHwwKSE9MD8oaj1sLShjW2IrMTA4Pj4yXXwwKSsgLTF8MCwoaC1rfDApPihqfDApKTowKXtjW2IrMTAwPj4yXT1rK2p9ZWxzZXtnPTh9aWYoKGd8MCk9PTgpe2NbYisxMDA+PjJdPWh9aWYoKGh8MCkhPTApe2w9YisxMDh8MDtjW2w+PjJdPWgrMS1rKyhjW2w+PjJdfDApfWI9aysgLTF8MDtpZigoZFtiPj4wXXwwfDApPT0oZnwwKSl7bD1mO2k9ZTtyZXR1cm4gbHwwfWFbYj4+MF09ZjtsPWY7aT1lO3JldHVybiBsfDB9Y1tiKzEwMD4+Ml09MDtsPS0xO2k9ZTtyZXR1cm4gbHwwfWZ1bmN0aW9uIEVuKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2c9aTtpPWkrMTZ8MDtlPWc7Zj1iKzh8MDtkb3tpZigoY1tmPj4yXXwwKT09MCl7aj1iKzc0fDA7aD1hW2o+PjBdfDA7YVtqPj4wXT1oKzI1NXxoO2o9YisyMHwwO2g9Yis0NHwwO2lmKChjW2o+PjJdfDApPj4+MD4oY1toPj4yXXwwKT4+PjApe2hjW2NbYiszNj4+Ml0mNjNdKGIsMCwwKXwwfWNbYisxNj4+Ml09MDtjW2IrMjg+PjJdPTA7Y1tqPj4yXT0wO2o9Y1tiPj4yXXwwO2lmKChqJjIwfDApPT0wKXtqPWNbaD4+Ml18MDtjW2Y+PjJdPWo7Y1tiKzQ+PjJdPWo7YnJlYWt9aWYoKGomNHwwKT09MCl7aj0tMTtpPWc7cmV0dXJuIGp8MH1jW2I+PjJdPWp8MzI7aj0tMTtpPWc7cmV0dXJuIGp8MH19d2hpbGUoMCk7aWYoKGhjW2NbYiszMj4+Ml0mNjNdKGIsZSwxKXwwKSE9MSl7aj0tMTtpPWc7cmV0dXJuIGp8MH1qPWRbZT4+MF18MDtpPWc7cmV0dXJuIGp8MH1mdW5jdGlvbiBGbihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MC4wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLjAsSj0wLEs9MCxMPTAuMCxNPTAuMCxOPTAuMCxPPTAuMDtmPWk7aT1pKzYyNHwwO289ZisxMTJ8MDtxPWY7bD1xKzB8MDtqPWwrMTA4fDA7ZG97Y1tsPj4yXT0wO2w9bCs0fDB9d2hpbGUoKGx8MCk8KGp8MCkpO209cSs0fDA7Y1ttPj4yXT1iO2w9cSs4fDA7Y1tsPj4yXT0tMTtjW3ErNDQ+PjJdPWI7Y1txKzc2Pj4yXT0tMTtzPXErMTA0fDA7Y1tzPj4yXT0wO2o9cSsxMDh8MDtjW2o+PjJdPX5iO3A9cSsxMDB8MDtjW3A+PjJdPS0xO249Yjt6PS0xO3doaWxlKDEpe2lmKG4+Pj4wPHo+Pj4wKXtjW20+PjJdPW4rMTt6PWRbbj4+MF18MH1lbHNle3o9RG4ocSl8MH1pZighKCh6fDApPT0zMnwoeisgLTl8MCk+Pj4wPDUpKXticmVha31uPWNbbT4+Ml18MDt6PWNbcD4+Ml18MH1kb3tpZigoenwwKT09NDN8KHp8MCk9PTQ1KXtuPTEtKCgoenwwKT09NDUmMSk8PDEpfDA7ej1jW20+PjJdfDA7aWYoej4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXorMTt6PWRbej4+MF18MDticmVha31lbHNle3o9RG4ocSl8MDticmVha319ZWxzZXtuPTF9fXdoaWxlKDApO0I9MDtkb3tpZigoenwzMnwwKSE9KGFbMjMwMjQrQj4+MF18MCkpe2JyZWFrfWRve2lmKEI+Pj4wPDcpe3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDA7YnJlYWt9ZWxzZXt6PURuKHEpfDA7YnJlYWt9fX13aGlsZSgwKTtCPUIrMXwwfXdoaWxlKEI+Pj4wPDgpO2E6ZG97aWYoKEJ8MCk9PTMpe2c9MjF9ZWxzZSBpZigoQnwwKSE9OCl7aWYoIShCPj4+MDw0KSl7aWYoKEJ8MCk9PTgpe2c9MjU7YnJlYWt9ZWxzZXtnPTIxO2JyZWFrfX1iOmRve2lmKChCfDApPT0wKXtCPTA7ZG97aWYoKHp8MzJ8MCkhPShhWzIzMDQwK0I+PjBdfDApKXticmVhayBifWRve2lmKEI+Pj4wPDIpe3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDA7YnJlYWt9ZWxzZXt6PURuKHEpfDA7YnJlYWt9fX13aGlsZSgwKTtCPUIrMXwwfXdoaWxlKEI+Pj4wPDMpfX13aGlsZSgwKTtpZigoQnwwKT09MCl7ZG97aWYoKHp8MCk9PTQ4KXt6PWNbbT4+Ml18MDtpZih6Pj4+MDwoY1twPj4yXXwwKT4+PjApe2NbbT4+Ml09eisxO3o9ZFt6Pj4wXXwwfWVsc2V7ej1EbihxKXwwfWlmKCh6fDMyfDApIT0xMjApe2lmKChjW3A+PjJdfDApPT0wKXt6PTQ4O2JyZWFrfWNbbT4+Ml09KGNbbT4+Ml18MCkrIC0xO3o9NDg7YnJlYWt9bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtGPWRbbz4+MF18MDtEPTB9ZWxzZXtGPURuKHEpfDA7RD0wfXdoaWxlKDEpe2lmKChGfDApPT00Nil7Zz02NTticmVha31lbHNlIGlmKChGfDApIT00OCl7bz0wO3M9MDtBPTA7ej0wO0M9MDtFPTA7SD0xLjA7Qj0wO3c9MC4wO2JyZWFrfW89Y1ttPj4yXXwwO2lmKG8+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1vKzE7Rj1kW28+PjBdfDA7RD0xO2NvbnRpbnVlfWVsc2V7Rj1EbihxKXwwO0Q9MTtjb250aW51ZX19Yzpkb3tpZigoZ3wwKT09NjUpe289Y1ttPj4yXXwwO2lmKG8+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1vKzE7Rj1kW28+PjBdfDB9ZWxzZXtGPURuKHEpfDB9aWYoKEZ8MCk9PTQ4KXtBPS0xO3o9LTE7d2hpbGUoMSl7bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtGPWRbbz4+MF18MH1lbHNle0Y9RG4ocSl8MH1pZigoRnwwKSE9NDgpe289MDtzPTA7RD0xO0M9MTtFPTA7SD0xLjA7Qj0wO3c9MC4wO2JyZWFrIGN9Sz1JbihBfDAsenwwLC0xLC0xKXwwO0E9Szt6PUl9fWVsc2V7bz0wO3M9MDtBPTA7ej0wO0M9MTtFPTA7SD0xLjA7Qj0wO3c9MC4wfX19d2hpbGUoMCk7ZDp3aGlsZSgxKXtLPUYrIC00OHwwO2Rve2lmKCEoSz4+PjA8MTApKXtHPUZ8MzI7Sj0oRnwwKT09NDY7aWYoISgoRysgLTk3fDApPj4+MDw2fEopKXticmVhayBkfWlmKEope2lmKChDfDApPT0wKXtBPXM7ej1vO0M9MTticmVha31lbHNle0Y9NDY7YnJlYWsgZH19ZWxzZXtLPShGfDApPjU3P0crIC04N3wwOks7Zz03OTticmVha319ZWxzZXtnPTc5fX13aGlsZSgwKTtpZigoZ3wwKT09Nzkpe2c9MDtkb3tpZighKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCkpe2lmKChvfDApPDB8KG98MCk9PTAmcz4+PjA8MTQpe049SCouMDYyNTtMPU47dz13K04qKyhLfDApO2JyZWFrfWlmKChLfDApIT0wJihFfDApPT0wKXtFPTE7TD1IO3c9dytIKi41fWVsc2V7TD1IfX1lbHNle0w9SDtCPUsrKEI8PDQpfDB9fXdoaWxlKDApO3M9SW4oc3wwLG98MCwxLDApfDA7bz1JO0Q9MTtIPUx9Rj1jW20+PjJdfDA7aWYoRj4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPUYrMTtGPWRbRj4+MF18MDtjb250aW51ZX1lbHNle0Y9RG4ocSl8MDtjb250aW51ZX19aWYoKER8MCk9PTApe2lmKChjW3A+PjJdfDApIT0wPyh2PWNbbT4+Ml18MCxjW20+PjJdPXYrIC0yLChDfDApIT0wKTowKXtjW20+PjJdPXYrIC0zfXc9KyhufDApKjAuMDticmVhayBhfUs9KEN8MCk9PTA7dj1LP3M6QTt6PUs/bzp6O2lmKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCl7ZG97Qj1CPDw0O3M9SW4oc3wwLG98MCwxLDApfDA7bz1JfXdoaWxlKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCl9aWYoISgoRnwzMnwwKT09MTEyPyh1PUNuKHEpfDAsdD1JLCEoKHV8MCk9PTAmKHR8MCk9PS0yMTQ3NDgzNjQ4KSk6MCkpe2lmKChjW3A+PjJdfDApPT0wKXt1PTA7dD0wfWVsc2V7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTE7dT0wO3Q9MH19bz1Pbih2fDAsenwwLDIpfDA7bz1JbihvfDAsSXwwLC0zMiwtMSl8MDtvPUluKG98MCxJfDAsdXwwLHR8MCl8MDtwPUk7aWYoKEJ8MCk9PTApe3c9KyhufDApKjAuMDticmVhayBhfWlmKChwfDApPjB8KHB8MCk9PTAmbz4+PjA+MTA3NCl7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7YnJlYWsgYX1pZigocHwwKTwtMXwocHwwKT09LTEmbz4+PjA8NDI5NDk2NjExNil7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWsgYX1pZigoQnwwKT4tMSl7ZG97Qj1CPDwxO2lmKCEodz49LjUpKXtIPXd9ZWxzZXtIPXcrLTEuMDtCPUJ8MX13PXcrSDtvPUluKG98MCxwfDAsLTEsLTEpfDA7cD1JfXdoaWxlKChCfDApPi0xKX1wPUluKG98MCxwfDAsMTEwNiwwKXwwO0s9STtkb3tpZigoS3wwKTwwfChLfDApPT0wJnA+Pj4wPDUzPyhyPShwfDApPDA/MDpwLChyfDApPDUzKTowKXtwPTg0LXJ8MDtkb3tpZigocHwwKT4xMDIzKXtxPXArIC0xMDIzfDA7aWYoKHF8MCk8PTEwMjMpe3A9cTtIPTguOTg4NDY1Njc0MzExNThlKzMwNzticmVha31wPXArIC0yMDQ2fDA7cD0ocHwwKT4xMDIzPzEwMjM6cDtIPXl9ZWxzZXtpZighKChwfDApPC0xMDIyKSl7SD0xLjA7YnJlYWt9cT1wKzEwMjJ8MDtpZighKChxfDApPC0xMDIyKSl7cD1xO0g9Mi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWt9cD1wKzIwNDR8MDtwPShwfDApPC0xMDIyPy0xMDIyOnA7SD0wLjB9fXdoaWxlKDApO0o9T24ocCsxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO009KyhufDApO0w9K1NiKCsoSCoraFtrPj4zXSksK00pO2lmKCEoKHJ8MCk8MzImdyE9MC4wKSl7SD1NO2JyZWFrfUs9QiYxO0g9TTtCPShLXjEpK0J8MDt3PShLfDApPT0wPzAuMDp3fWVsc2V7Zz0xMTR9fXdoaWxlKDApO2lmKChnfDApPT0xMTQpe0g9KyhufDApO0w9MC4wfXc9SCp3KyhMK0gqKyhCPj4+MCkpLUw7aWYoISh3IT0wLjApKXtjWyhiYigpfDApPj4yXT0zNH1kb3tpZigob3wwKT4xMDIzKXt3PXcqOC45ODg0NjU2NzQzMTE1OGUrMzA3O249bysgLTEwMjN8MDtpZigobnwwKTw9MTAyMyl7bz1uO2JyZWFrfW89bysgLTIwNDZ8MDtvPShvfDApPjEwMjM/MTAyMzpvO3c9dyo4Ljk4ODQ2NTY3NDMxMTU4ZSszMDd9ZWxzZXtpZighKChvfDApPC0xMDIyKSl7YnJlYWt9dz13KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O249bysxMDIyfDA7aWYoISgobnwwKTwtMTAyMikpe289bjticmVha31vPW8rMjA0NHwwO289KG98MCk8LTEwMjI/LTEwMjI6bzt3PXcqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDh9fXdoaWxlKDApO0o9T24obysxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO3c9dyoraFtrPj4zXTticmVhayBhfX13aGlsZSgwKTtHPTA7d2hpbGUoMSl7aWYoKHp8MCk9PTQ2KXtnPTEzOTticmVha31lbHNlIGlmKCh6fDApIT00OCl7cj0wO0Y9MDtDPTA7YnJlYWt9cj1jW20+PjJdfDA7aWYocj4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXIrMTt6PWRbcj4+MF18MDtHPTE7Y29udGludWV9ZWxzZXt6PURuKHEpfDA7Rz0xO2NvbnRpbnVlfX1lOmRve2lmKChnfDApPT0xMzkpe3I9Y1ttPj4yXXwwO2lmKHI+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1yKzE7ej1kW3I+PjBdfDB9ZWxzZXt6PURuKHEpfDB9aWYoKHp8MCk9PTQ4KXtyPS0xO0Y9LTE7d2hpbGUoMSl7dD1jW20+PjJdfDA7aWYodD4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXQrMTt6PWRbdD4+MF18MH1lbHNle3o9RG4ocSl8MH1pZigoenwwKSE9NDgpe0c9MTtDPTE7YnJlYWsgZX1LPUluKHJ8MCxGfDAsLTEsLTEpfDA7cj1LO0Y9SX19ZWxzZXtyPTA7Rj0wO0M9MX19fXdoaWxlKDApO2Nbbz4+Ml09MDtEPXorIC00OHwwO0o9KHp8MCk9PTQ2O2Y6ZG97aWYoRD4+PjA8MTB8Sil7dD1vKzQ5NnwwO0U9MDtCPTA7QT0wO3Y9MDt1PTA7d2hpbGUoMSl7ZG97aWYoSil7aWYoKEN8MCk9PTApe3I9RTtGPUI7Qz0xfWVsc2V7YnJlYWsgZn19ZWxzZXtKPUluKEV8MCxCfDAsMSwwKXwwO0I9STtLPSh6fDApIT00ODtpZigodnwwKT49MTI1KXtpZighSyl7RT1KO2JyZWFrfWNbdD4+Ml09Y1t0Pj4yXXwxO0U9SjticmVha31FPW8rKHY8PDIpfDA7aWYoKEF8MCkhPTApe0Q9eisgLTQ4KygoY1tFPj4yXXwwKSoxMHwwKXwwfWNbRT4+Ml09RDtBPUErMXwwO0Q9KEF8MCk9PTk7RT1KO0c9MTtBPUQ/MDpBO3Y9KEQmMSkrdnwwO3U9Sz9KOnV9fXdoaWxlKDApO3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDB9ZWxzZXt6PURuKHEpfDB9RD16KyAtNDh8MDtKPSh6fDApPT00NjtpZighKEQ+Pj4wPDEwfEopKXtnPTE2MjticmVha319fWVsc2V7RT0wO0I9MDtBPTA7dj0wO3U9MDtnPTE2Mn19d2hpbGUoMCk7aWYoKGd8MCk9PTE2Mil7Sz0oQ3wwKT09MDtyPUs/RTpyO0Y9Sz9COkZ9dD0oR3wwKSE9MDtpZih0Pyh6fDMyfDApPT0xMDE6MCl7ej1DbihxKXwwO3E9STtpZigoenwwKT09MCYocXwwKT09LTIxNDc0ODM2NDgpe2lmKChjW3A+PjJdfDApPT0wKXt6PTA7cT0wfWVsc2V7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTE7ej0wO3E9MH19cj1Jbih6fDAscXwwLHJ8MCxGfDApfDA7Rj1JfWVsc2V7aWYoKHp8MCk+LTE/KGNbcD4+Ml18MCkhPTA6MCl7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTF9fWlmKCF0KXtjWyhiYigpfDApPj4yXT0yMjtjW3M+PjJdPTA7Sz1jW2w+PjJdfDA7Y1tqPj4yXT1LLShjW20+PjJdfDApO2NbcD4+Ml09Szt3PTAuMDticmVha31wPWNbbz4+Ml18MDtpZigocHwwKT09MCl7dz0rKG58MCkqMC4wO2JyZWFrfWlmKChyfDApPT0oRXwwKSYoRnwwKT09KEJ8MCkmKChCfDApPDB8KEJ8MCk9PTAmRT4+PjA8MTApKXt3PSsobnwwKSorKHA+Pj4wKTticmVha31pZigoRnwwKT4wfChGfDApPT0wJnI+Pj4wPjUzNyl7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7YnJlYWt9aWYoKEZ8MCk8LTF8KEZ8MCk9PS0xJnI+Pj4wPDQyOTQ5NjYxMTYpe2NbKGJiKCl8MCk+PjJdPTM0O3c9KyhufDApKjIuMjI1MDczODU4NTA3MjAxNGUtMzA4KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O2JyZWFrfWlmKChBfDApIT0wKXtpZigoQXwwKTw5KXtxPW8rKHY8PDIpfDA7cD1jW3E+PjJdfDA7ZG97cD1wKjEwfDA7QT1BKzF8MH13aGlsZSgoQXwwKSE9OSk7Y1txPj4yXT1wfXY9disxfDB9ZG97aWYoKHV8MCk8OT8odXwwKTw9KHJ8MCkmKHJ8MCk8MTg6MCl7aWYoKHJ8MCk9PTkpe3c9KyhufDApKisoKGNbbz4+Ml18MCk+Pj4wKTticmVhayBhfWlmKChyfDApPDkpe3c9KyhufDApKisoKGNbbz4+Ml18MCk+Pj4wKS8rKGNbMjMwNTYrKDgtcjw8Mik+PjJdfDApO2JyZWFrIGF9Sz0oZWEociwtMyl8MCkrODB8MDtwPWNbbz4+Ml18MDtpZigoS3wwKTw9MzA/KHA+Pj5LfDApIT0wOjApe2JyZWFrfXc9KyhufDApKisocD4+PjApKisoY1syMzA1NisocisgLTEwPDwyKT4+Ml18MCk7YnJlYWsgYX19d2hpbGUoMCk7cD0ocnwwKSU5fDA7aWYoKHB8MCk9PTApe3A9MDtxPTB9ZWxzZXtzPShyfDApPi0xP3A6cCs5fDA7cT1jWzIzMDU2Kyg4LXM8PDIpPj4yXXwwO2lmKCh2fDApIT0wKXt0PTFlOS8ocXwwKXwwO3A9MDt6PTA7dT0wO2Rve0c9bysodTw8Mil8MDtKPWNbRz4+Ml18MDtLPSgoSj4+PjApLyhxPj4+MCl8MCkrenwwO2NbRz4+Ml09Szt6PWVhKChKPj4+MCklKHE+Pj4wKXwwLHQpfDA7Sj11O3U9dSsxfDA7aWYoKEp8MCk9PShwfDApJihLfDApPT0wKXtwPXUmMTI3O3I9cisgLTl8MH19d2hpbGUoKHV8MCkhPSh2fDApKTtpZigoenwwKSE9MCl7Y1tvKyh2PDwyKT4+Ml09ejt2PXYrMXwwfX1lbHNle3A9MDt2PTB9cT0wO3I9OS1zK3J8MH1nOndoaWxlKDEpe3M9bysocDw8Mil8MDtpZigocnwwKTwxOCl7ZG97dT0wO3M9disxMjd8MDt3aGlsZSgxKXtzPXMmMTI3O3Q9bysoczw8Mil8MDt6PU9uKGNbdD4+Ml18MCwwLDI5KXwwO3o9SW4oenwwLEl8MCx1fDAsMCl8MDt1PUk7aWYodT4+PjA+MHwodXwwKT09MCZ6Pj4+MD4xZTkpe0s9V24oenwwLHV8MCwxZTksMCl8MDt6PVhuKHp8MCx1fDAsMWU5LDApfDA7dT1LfWVsc2V7dT0wfWNbdD4+Ml09ejt0PShzfDApPT0ocHwwKTtpZighKChzfDApIT0odisxMjcmMTI3fDApfHQpKXt2PSh6fDApPT0wP3M6dn1pZih0KXticmVha31lbHNle3M9cysgLTF8MH19cT1xKyAtMjl8MH13aGlsZSgodXwwKT09MCl9ZWxzZXtpZigocnwwKSE9MTgpe2JyZWFrfWRve2lmKCEoKGNbcz4+Ml18MCk+Pj4wPDkwMDcxOTkpKXtyPTE4O2JyZWFrIGd9dT0wO3Q9disxMjd8MDt3aGlsZSgxKXt0PXQmMTI3O3o9bysodDw8Mil8MDtBPU9uKGNbej4+Ml18MCwwLDI5KXwwO0E9SW4oQXwwLEl8MCx1fDAsMCl8MDt1PUk7aWYodT4+PjA+MHwodXwwKT09MCZBPj4+MD4xZTkpe0s9V24oQXwwLHV8MCwxZTksMCl8MDtBPVhuKEF8MCx1fDAsMWU5LDApfDA7dT1LfWVsc2V7dT0wfWNbej4+Ml09QTt6PSh0fDApPT0ocHwwKTtpZighKCh0fDApIT0odisxMjcmMTI3fDApfHopKXt2PShBfDApPT0wP3Q6dn1pZih6KXticmVha31lbHNle3Q9dCsgLTF8MH19cT1xKyAtMjl8MH13aGlsZSgodXwwKT09MCl9cD1wKzEyNyYxMjc7aWYoKHB8MCk9PSh2fDApKXtLPXYrMTI3JjEyNzt2PW8rKCh2KzEyNiYxMjcpPDwyKXwwO2Nbdj4+Ml09Y1t2Pj4yXXxjW28rKEs8PDIpPj4yXTt2PUt9Y1tvKyhwPDwyKT4+Ml09dTtyPXIrOXwwfWg6d2hpbGUoMSl7cz12KzEmMTI3O3Q9bysoKHYrMTI3JjEyNyk8PDIpfDA7d2hpbGUoMSl7ej0ocnwwKT09MTg7dT0ocnwwKT4yNz85OjE7d2hpbGUoMSl7QT0wO3doaWxlKDEpe0I9QStwJjEyNztpZigoQnwwKT09KHZ8MCkpe0E9MjticmVha31CPWNbbysoQjw8Mik+PjJdfDA7RD1jWzIzMDQ4KyhBPDwyKT4+Ml18MDtpZihCPj4+MDxEPj4+MCl7QT0yO2JyZWFrfUM9QSsxfDA7aWYoQj4+PjA+RD4+PjApe2JyZWFrfWlmKChDfDApPDIpe0E9Q31lbHNle0E9QzticmVha319aWYoKEF8MCk9PTImeil7YnJlYWsgaH1xPXUrcXwwO2lmKChwfDApPT0odnwwKSl7cD12fWVsc2V7YnJlYWt9fXo9KDE8PHUpKyAtMXwwO0E9MWU5Pj4+dTtCPXA7Qz0wO2Rve0c9bysocDw8Mil8MDtKPWNbRz4+Ml18MDtLPShKPj4+dSkrQ3wwO2NbRz4+Ml09SztDPWVhKEomeixBKXwwO0s9KHB8MCk9PShCfDApJihLfDApPT0wO3A9cCsxJjEyNztyPUs/cisgLTl8MDpyO0I9Sz9wOkJ9d2hpbGUoKHB8MCkhPSh2fDApKTtpZigoQ3wwKT09MCl7cD1CO2NvbnRpbnVlfWlmKChzfDApIT0oQnwwKSl7YnJlYWt9Y1t0Pj4yXT1jW3Q+PjJdfDE7cD1CfWNbbysodjw8Mik+PjJdPUM7cD1CO3Y9c31yPXAmMTI3O2lmKChyfDApPT0odnwwKSl7Y1tvKyhzKyAtMTw8Mik+PjJdPTA7dj1zfUg9KygoY1tvKyhyPDwyKT4+Ml18MCk+Pj4wKTtyPXArMSYxMjc7aWYoKHJ8MCk9PSh2fDApKXt2PXYrMSYxMjc7Y1tvKyh2KyAtMTw8Mik+PjJdPTB9dz0rKG58MCk7SD13KihIKjEuMGU5KyArKChjW28rKHI8PDIpPj4yXXwwKT4+PjApKTtuPXErNTN8MDtyPXErMTEyN3wwO2Rve2lmKChyfDApPDUzKXtzPShyfDApPDA/MDpyO2lmKChzfDApPj01Myl7TT0wLjA7dD0xO049MC4wO2JyZWFrfXQ9MTA1LXN8MDtkb3tpZigodHwwKT4xMDIzKXt1PXQrIC0xMDIzfDA7aWYoKHV8MCk8PTEwMjMpe3Q9dTtMPTguOTg4NDY1Njc0MzExNThlKzMwNzticmVha310PXQrIC0yMDQ2fDA7dD0odHwwKT4xMDIzPzEwMjM6dDtMPXl9ZWxzZXtpZighKCh0fDApPC0xMDIyKSl7TD0xLjA7YnJlYWt9dT10KzEwMjJ8MDtpZighKCh1fDApPC0xMDIyKSl7dD11O0w9Mi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWt9dD10KzIwNDR8MDt0PSh0fDApPC0xMDIyPy0xMDIyOnQ7TD0wLjB9fXdoaWxlKDApO0s9T24odCsxMDIzfDAsMCw1Mil8MDt0PUk7Y1trPj4yXT1LO2Nbays0Pj4yXT10O0w9K1NiKCsoTCoraFtrPj4zXSksK0gpO3Q9NTMtc3wwO2Rve2lmKCh0fDApPjEwMjMpe3U9dCsgLTEwMjN8MDtpZigodXwwKTw9MTAyMyl7dD11O009OC45ODg0NjU2NzQzMTE1OGUrMzA3O2JyZWFrfXQ9dCsgLTIwNDZ8MDt0PSh0fDApPjEwMjM/MTAyMzp0O009eX1lbHNle2lmKCEoKHR8MCk8LTEwMjIpKXtNPTEuMDticmVha311PXQrMTAyMnwwO2lmKCEoKHV8MCk8LTEwMjIpKXt0PXU7TT0yLjIyNTA3Mzg1ODUwNzIwMTRlLTMwODticmVha310PXQrMjA0NHwwO3Q9KHR8MCk8LTEwMjI/LTEwMjI6dDtNPTAuMH19d2hpbGUoMCk7Sz1Pbih0KzEwMjN8MCwwLDUyKXwwO3Q9STtjW2s+PjJdPUs7Y1trKzQ+PjJdPXQ7Tz0rUGEoK0gsKyhNKitoW2s+PjNdKSk7TT1MO3Q9MTtOPU87SD1MKyhILU8pfWVsc2V7cz01MztNPTAuMDt0PTA7Tj0wLjB9fXdoaWxlKDApO3U9cCsyJjEyNztkb3tpZigodXwwKSE9KHZ8MCkpe289Y1tvKyh1PDwyKT4+Ml18MDtkb3tpZighKG8+Pj4wPDVlOCkpe2lmKG8+Pj4wPjVlOCl7Tj13Ki43NStOO2JyZWFrfWlmKChwKzMmMTI3fDApPT0odnwwKSl7Tj13Ki41K047YnJlYWt9ZWxzZXtOPXcqLjc1K047YnJlYWt9fWVsc2V7aWYoKG98MCk9PTA/KHArMyYxMjd8MCk9PSh2fDApOjApe2JyZWFrfU49dyouMjUrTn19d2hpbGUoMCk7aWYoKDUzLXN8MCk8PTEpe2JyZWFrfWlmKCtQYSgrTiwxLjApIT0wLjApe2JyZWFrfU49TisxLjB9fXdoaWxlKDApO3c9SCtOLU07ZG97aWYoKG4mMjE0NzQ4MzY0NCk+Pj4wPjEwMTkpe2lmKCtUKCt3KT49OTAwNzE5OTI1NDc0MDk5Mi4wKXt0PSh0fDApIT0wJihzfDApPT0ocnwwKT8wOnQ7cT1xKzF8MDt3PXcqLjV9aWYoKHErNTB8MCk8PTEwMjE/ISgodHwwKSE9MCZOIT0wLjApOjApe2JyZWFrfWNbKGJiKCl8MCk+PjJdPTM0fX13aGlsZSgwKTtkb3tpZigocXwwKT4xMDIzKXt3PXcqOC45ODg0NjU2NzQzMTE1OGUrMzA3O249cSsgLTEwMjN8MDtpZigobnwwKTw9MTAyMyl7cT1uO2JyZWFrfXE9cSsgLTIwNDZ8MDtxPShxfDApPjEwMjM/MTAyMzpxO3c9dyo4Ljk4ODQ2NTY3NDMxMTU4ZSszMDd9ZWxzZXtpZighKChxfDApPC0xMDIyKSl7YnJlYWt9dz13KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O249cSsxMDIyfDA7aWYoISgobnwwKTwtMTAyMikpe3E9bjticmVha31xPXErMjA0NHwwO3E9KHF8MCk8LTEwMjI/LTEwMjI6cTt3PXcqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDh9fXdoaWxlKDApO0o9T24ocSsxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO3c9dyoraFtrPj4zXTticmVha31lbHNlIGlmKChCfDApPT0zKXtuPWNbbT4+Ml18MDtpZihuPj4+MDwoY1twPj4yXXwwKT4+PjApe2NbbT4+Ml09bisxO249ZFtuPj4wXXwwfWVsc2V7bj1EbihxKXwwfWlmKChufDApPT00MCl7bj0xfWVsc2V7aWYoKGNbcD4+Ml18MCk9PTApe3c9eDticmVha31jW20+PjJdPShjW20+PjJdfDApKyAtMTt3PXg7YnJlYWt9d2hpbGUoMSl7bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtvPWRbbz4+MF18MH1lbHNle289RG4ocSl8MH1pZighKChvKyAtNDh8MCk+Pj4wPDEwfChvKyAtNjV8MCk+Pj4wPDI2KT8hKChvKyAtOTd8MCk+Pj4wPDI2fChvfDApPT05NSk6MCl7YnJlYWt9bj1uKzF8MH1pZigob3wwKT09NDEpe3c9eDticmVha31pZigoY1twPj4yXXwwKT09MCl7dz14O2JyZWFrfW89KGNbbT4+Ml18MCkrIC0xfDA7Y1ttPj4yXT1vO2lmKChufDApPT0wKXt3PXg7YnJlYWt9ZG97bj1uKyAtMXwwO289bysgLTF8MH13aGlsZSgobnwwKSE9MCk7Y1ttPj4yXT1vO3c9eDticmVha31lbHNle249Y1ttPj4yXXwwO2lmKChjW3A+PjJdfDApIT0wKXtuPW4rIC0xfDA7Y1ttPj4yXT1ufWNbKGJiKCl8MCk+PjJdPTIyO2Nbcz4+Ml09MDtLPWNbbD4+Ml18MDtjW2o+PjJdPUstbjtjW3A+PjJdPUs7dz0wLjA7YnJlYWt9fWVsc2V7Zz0yNX19d2hpbGUoMCk7aWYoKGd8MCk9PTIxKXtpZigoY1twPj4yXXwwKSE9MD8oQT0oY1ttPj4yXXwwKSsgLTF8MCxjW20+PjJdPUEsIShCPj4+MDw0KSk6MCl7ZG97QT1BKyAtMXwwO0I9QisgLTF8MH13aGlsZShCPj4+MD4zKTtjW20+PjJdPUE7Zz0yNX1lbHNle2c9MjV9fWlmKChnfDApPT0yNSl7dz0rKG58MCkqeX1nPShjW20+PjJdfDApLShjW2w+PjJdfDApKyhjW2o+PjJdfDApfDA7aWYoKGV8MCk9PTApe2k9ZjtyZXR1cm4rd31pZigoZ3wwKSE9MCl7Yj1iK2d8MH1jW2U+PjJdPWI7aT1mO3JldHVybit3fWZ1bmN0aW9uIEduKCl7Y1sxNTgwXT1vO2NbMjQ5Ml09bztjWzI1MThdPW87Y1s1MzQ2XT1vO2NbNTY4NF09b31mdW5jdGlvbiBIbihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtiPWItZC0oYz4+PjA+YT4+PjB8MCk+Pj4wO3JldHVybihJPWIsYS1jPj4+MHwwKXwwfWZ1bmN0aW9uIEluKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2M9YStjPj4+MDtyZXR1cm4oST1iK2QrKGM+Pj4wPGE+Pj4wfDApPj4+MCxjfDApfDB9ZnVuY3Rpb24gSm4oYil7Yj1ifDA7dmFyIGM9MDtjPWI7d2hpbGUoYVtjPj4wXXwwKXtjPWMrMXwwfXJldHVybiBjLWJ8MH1mdW5jdGlvbiBLbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7aWYoKGN8MCk8MzIpe0k9Yj4+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31JPTA7cmV0dXJuIGI+Pj5jLTMyfDB9ZnVuY3Rpb24gTG4oYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7aWYoKGV8MCk+PTQwOTYpcmV0dXJuIG5iKGJ8MCxkfDAsZXwwKXwwO2Y9YnwwO2lmKChiJjMpPT0oZCYzKSl7d2hpbGUoYiYzKXtpZigoZXwwKT09MClyZXR1cm4gZnwwO2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXdoaWxlKChlfDApPj00KXtjW2I+PjJdPWNbZD4+Ml07Yj1iKzR8MDtkPWQrNHwwO2U9ZS00fDB9fXdoaWxlKChlfDApPjApe2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXJldHVybiBmfDB9ZnVuY3Rpb24gTW4oYixjLGQpe2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTA7aWYoKGN8MCk8KGJ8MCkmKGJ8MCk8KGMrZHwwKSl7ZT1iO2M9YytkfDA7Yj1iK2R8MDt3aGlsZSgoZHwwKT4wKXtiPWItMXwwO2M9Yy0xfDA7ZD1kLTF8MDthW2I+PjBdPWFbYz4+MF18MH1iPWV9ZWxzZXtMbihiLGMsZCl8MH1yZXR1cm4gYnwwfWZ1bmN0aW9uIE5uKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wO2Y9YitlfDA7aWYoKGV8MCk+PTIwKXtkPWQmMjU1O2k9YiYzO2g9ZHxkPDw4fGQ8PDE2fGQ8PDI0O2c9ZiZ+MztpZihpKXtpPWIrNC1pfDA7d2hpbGUoKGJ8MCk8KGl8MCkpe2FbYj4+MF09ZDtiPWIrMXwwfX13aGlsZSgoYnwwKTwoZ3wwKSl7Y1tiPj4yXT1oO2I9Yis0fDB9fXdoaWxlKChifDApPChmfDApKXthW2I+PjBdPWQ7Yj1iKzF8MH1yZXR1cm4gYi1lfDB9ZnVuY3Rpb24gT24oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtJPWI8PGN8KGEmKDE8PGMpLTE8PDMyLWMpPj4+MzItYztyZXR1cm4gYTw8Y31JPWE8PGMtMzI7cmV0dXJuIDB9ZnVuY3Rpb24gUG4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtJPWI+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31JPShifDApPDA/LTE6MDtyZXR1cm4gYj4+Yy0zMnwwfWZ1bmN0aW9uIFFuKGIpe2I9YnwwO3ZhciBjPTA7Yz1hW24rKGI+Pj4yNCk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gY3wwO2M9YVtuKyhiPj4xNiYyNTUpPj4wXXwwO2lmKChjfDApPDgpcmV0dXJuIGMrOHwwO2M9YVtuKyhiPj44JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYysxNnwwO3JldHVybihhW24rKGImMjU1KT4+MF18MCkrMjR8MH1mdW5jdGlvbiBSbihiKXtiPWJ8MDt2YXIgYz0wO2M9YVttKyhiJjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gY3wwO2M9YVttKyhiPj44JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYys4fDA7Yz1hW20rKGI+PjE2JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYysxNnwwO3JldHVybihhW20rKGI+Pj4yNCk+PjBdfDApKzI0fDB9ZnVuY3Rpb24gU24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9YSY2NTUzNTtkPWImNjU1MzU7Yz1lYShkLGYpfDA7ZT1hPj4+MTY7ZD0oYz4+PjE2KSsoZWEoZCxlKXwwKXwwO2I9Yj4+PjE2O2E9ZWEoYixmKXwwO3JldHVybihJPShkPj4+MTYpKyhlYShiLGUpfDApKygoKGQmNjU1MzUpK2F8MCk+Pj4xNil8MCxkK2E8PDE2fGMmNjU1MzV8MCl8MH1mdW5jdGlvbiBUbihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1iPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtpPSgoYnwwKTwwPy0xOjApPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtmPWQ+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2U9KChkfDApPDA/LTE6MCk+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2g9SG4oal5hLGleYixqLGkpfDA7Zz1JO2I9Zl5qO2E9ZV5pO2E9SG4oKFluKGgsZyxIbihmXmMsZV5kLGYsZSl8MCxJLDApfDApXmIsSV5hLGIsYSl8MDtyZXR1cm4gYXwwfWZ1bmN0aW9uIFVuKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtmPWk7aT1pKzh8MDtqPWZ8MDtoPWI+PjMxfCgoYnwwKTwwPy0xOjApPDwxO2c9KChifDApPDA/LTE6MCk+PjMxfCgoYnwwKTwwPy0xOjApPDwxO2w9ZT4+MzF8KChlfDApPDA/LTE6MCk8PDE7az0oKGV8MCk8MD8tMTowKT4+MzF8KChlfDApPDA/LTE6MCk8PDE7Yj1IbihoXmEsZ15iLGgsZyl8MDthPUk7WW4oYixhLEhuKGxeZCxrXmUsbCxrKXwwLEksail8MDthPUhuKGNbaj4+Ml1eaCxjW2orND4+Ml1eZyxoLGcpfDA7Yj1JO2k9ZjtyZXR1cm4oST1iLGEpfDB9ZnVuY3Rpb24gVm4oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZT1hO2Y9YzthPVNuKGUsZil8MDtjPUk7cmV0dXJuKEk9KGVhKGIsZil8MCkrKGVhKGQsZSl8MCkrY3xjJjAsYXwwfDApfDB9ZnVuY3Rpb24gV24oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7YT1ZbihhLGIsYyxkLDApfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiBYbihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MDtnPWk7aT1pKzh8MDtmPWd8MDtZbihhLGIsZCxlLGYpfDA7aT1nO3JldHVybihJPWNbZis0Pj4yXXwwLGNbZj4+Ml18MCl8MH1mdW5jdGlvbiBZbihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7aD1hO2o9YjtpPWo7bD1kO2c9ZTtrPWc7aWYoKGl8MCk9PTApe2c9KGZ8MCkhPTA7aWYoKGt8MCk9PTApe2lmKGcpe2NbZj4+Ml09KGg+Pj4wKSUobD4+PjApO2NbZis0Pj4yXT0wfWs9MDttPShoPj4+MCkvKGw+Pj4wKT4+PjA7cmV0dXJuKEk9ayxtKXwwfWVsc2V7aWYoIWcpe2w9MDttPTA7cmV0dXJuKEk9bCxtKXwwfWNbZj4+Ml09YXwwO2NbZis0Pj4yXT1iJjA7bD0wO209MDtyZXR1cm4oST1sLG0pfDB9fW09KGt8MCk9PTA7ZG97aWYoKGx8MCkhPTApe2lmKCFtKXtrPShRbihrfDApfDApLShRbihpfDApfDApfDA7aWYoaz4+PjA8PTMxKXttPWsrMXwwO2w9MzEta3wwO2E9ay0zMT4+MzE7aj1tO2I9aD4+PihtPj4+MCkmYXxpPDxsO2E9aT4+PihtPj4+MCkmYTtrPTA7bD1oPDxsO2JyZWFrfWlmKChmfDApPT0wKXtsPTA7bT0wO3JldHVybihJPWwsbSl8MH1jW2Y+PjJdPWF8MDtjW2YrND4+Ml09anxiJjA7bD0wO209MDtyZXR1cm4oST1sLG0pfDB9az1sLTF8MDtpZigoayZsfDApIT0wKXtsPShRbihsfDApfDApKzMzLShRbihpfDApfDApfDA7cD02NC1sfDA7bT0zMi1sfDA7bj1tPj4zMTtvPWwtMzJ8MDthPW8+PjMxO2o9bDtiPW0tMT4+MzEmaT4+PihvPj4+MCl8KGk8PG18aD4+PihsPj4+MCkpJmE7YT1hJmk+Pj4obD4+PjApO2s9aDw8cCZuO2w9KGk8PHB8aD4+PihvPj4+MCkpJm58aDw8bSZsLTMzPj4zMTticmVha31pZigoZnwwKSE9MCl7Y1tmPj4yXT1rJmg7Y1tmKzQ+PjJdPTB9aWYoKGx8MCk9PTEpe289anxiJjA7cD1hfDB8MDtyZXR1cm4oST1vLHApfDB9ZWxzZXtwPVJuKGx8MCl8MDtvPWk+Pj4ocD4+PjApfDA7cD1pPDwzMi1wfGg+Pj4ocD4+PjApfDA7cmV0dXJuKEk9byxwKXwwfX1lbHNle2lmKG0pe2lmKChmfDApIT0wKXtjW2Y+PjJdPShpPj4+MCklKGw+Pj4wKTtjW2YrND4+Ml09MH1vPTA7cD0oaT4+PjApLyhsPj4+MCk+Pj4wO3JldHVybihJPW8scCl8MH1pZigoaHwwKT09MCl7aWYoKGZ8MCkhPTApe2NbZj4+Ml09MDtjW2YrND4+Ml09KGk+Pj4wKSUoaz4+PjApfW89MDtwPShpPj4+MCkvKGs+Pj4wKT4+PjA7cmV0dXJuKEk9byxwKXwwfWw9ay0xfDA7aWYoKGwma3wwKT09MCl7aWYoKGZ8MCkhPTApe2NbZj4+Ml09YXwwO2NbZis0Pj4yXT1sJml8YiYwfW89MDtwPWk+Pj4oKFJuKGt8MCl8MCk+Pj4wKTtyZXR1cm4oST1vLHApfDB9az0oUW4oa3wwKXwwKS0oUW4oaXwwKXwwKXwwO2lmKGs+Pj4wPD0zMCl7YT1rKzF8MDtsPTMxLWt8MDtqPWE7Yj1pPDxsfGg+Pj4oYT4+PjApO2E9aT4+PihhPj4+MCk7az0wO2w9aDw8bDticmVha31pZigoZnwwKT09MCl7bz0wO3A9MDtyZXR1cm4oST1vLHApfDB9Y1tmPj4yXT1hfDA7Y1tmKzQ+PjJdPWp8YiYwO289MDtwPTA7cmV0dXJuKEk9byxwKXwwfX13aGlsZSgwKTtpZigoanwwKT09MCl7Zz1sO2U9MDtpPTB9ZWxzZXtoPWR8MHwwO2c9Z3xlJjA7ZT1JbihoLGcsLTEsLTEpfDA7ZD1JO2k9MDtkb3ttPWw7bD1rPj4+MzF8bDw8MTtrPWl8azw8MTttPWI8PDF8bT4+PjMxfDA7bj1iPj4+MzF8YTw8MXwwO0huKGUsZCxtLG4pfDA7cD1JO289cD4+MzF8KChwfDApPDA/LTE6MCk8PDE7aT1vJjE7Yj1IbihtLG4sbyZoLCgoKHB8MCk8MD8tMTowKT4+MzF8KChwfDApPDA/LTE6MCk8PDEpJmcpfDA7YT1JO2o9ai0xfDB9d2hpbGUoKGp8MCkhPTApO2c9bDtlPTB9aD0wO2lmKChmfDApIT0wKXtjW2Y+PjJdPWI7Y1tmKzQ+PjJdPWF9bz0oa3wwKT4+PjMxfChnfGgpPDwxfChoPDwxfGs+Pj4zMSkmMHxlO3A9KGs8PDF8MD4+PjMxKSYtMnxpO3JldHVybihJPW8scCl8MH0KCgoKZnVuY3Rpb24gT2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7bT1pO2k9aSsyMjR8MDtsPW0rOHwwO3M9bTtvPW0rMTkyfDA7ZD1tKzE4OHwwO2s9bSsxODR8MDtwPW0rMTgwfDA7dT1zO2NbdT4+Ml09Mzc7Y1t1KzQ+PjJdPTA7dT1zKzF8MDtxPWYrNHwwO3I9Y1txPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2FbdT4+MF09NDM7dT1zKzJ8MH1pZigociY1MTJ8MCkhPTApe2FbdT4+MF09MzU7dT11KzF8MH10PXUrMnwwO2FbdT4+MF09MTA4O2FbdSsxPj4wXT0xMDg7dT1yJjc0O2Rve2lmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTExN319d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO3Q9bDtjW3Q+PjJdPWg7Y1t0KzQ+PjJdPWo7aD13aShvLDIzLHUscyxsKXwwO2o9bytofDA7cT1jW3E+PjJdJjE3Njtkb3tpZigocXwwKT09MzIpe3E9an1lbHNlIGlmKChxfDApPT0xNil7cT1hW28+PjBdfDA7aWYocTw8MjQ+PjI0PT00M3xxPDwyND4+MjQ9PTQ1KXtxPW8rMXwwO2JyZWFrfWlmKChofDApPjEmcTw8MjQ+PjI0PT00OD8odT1hW28rMT4+MF18MCx1PDwyND4+MjQ9PTg4fHU8PDI0Pj4yND09MTIwKTowKXtxPW8rMnwwfWVsc2V7bj0yMX19ZWxzZXtuPTIxfX13aGlsZSgwKTtpZigobnwwKT09MjEpe3E9b31uPWNbZisyOD4+Ml18MDtjW3A+PjJdPW47bj1uKzR8MDtjW24+PjJdPShjW24+PjJdfDApKzE7S2kobyxxLGosbCxkLGsscCk7bj1jW3A+PjJdfDA7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApIT0wKXtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWxjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKTtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWZ1bmN0aW9uIFBpKGIsZCxlLGYsZyxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPStqO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO2w9aTtpPWkrMzA0fDA7cD1sO3U9bCsyMzJ8MDtyPWwrMjYwfDA7dD1sKzI0OHwwO2Q9bCsyNDR8MDtuPWwrMjQwfDA7bz1sKzI1MnwwO209bCsyNTZ8MDt2PXU7Y1t2Pj4yXT0zNztjW3YrND4+Ml09MDt2PXUrMXwwO3M9Zis0fDA7dz1jW3M+PjJdfDA7aWYoKHcmMjA0OHwwKSE9MCl7YVt2Pj4wXT00Mzt2PXUrMnwwfWlmKCh3JjEwMjR8MCkhPTApe2Fbdj4+MF09MzU7dj12KzF8MH14PXcmMjYwO3k9dz4+PjE0O2Rve2lmKCh4fDApPT0yNjApe2lmKCh5JjF8MCk9PTApe2Fbdj4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt2Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt2Pj4wXT00Njt3PXYrMnwwO2FbdisxPj4wXT00MjtpZigoeHwwKT09MjU2KXtpZigoeSYxfDApPT0wKXthW3c+PjBdPTEwMTt2PTE7YnJlYWt9ZWxzZXthW3c+PjBdPTY5O3Y9MTticmVha319ZWxzZSBpZigoeHwwKT09NCl7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDI7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MDt2PTE7YnJlYWt9fWVsc2V7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDM7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MTt2PTE7YnJlYWt9fX19d2hpbGUoMCk7Y1t0Pj4yXT1yO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtpZih2KXtjW3A+PjJdPWNbZis4Pj4yXTt5PXArNHwwO2hbaz4+M109ajtjW3k+PjJdPWNbaz4+Ml07Y1t5KzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9ZWxzZXtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWlmKCh3fDApPjI5KXt3PShhWzEzMzY4XXwwKT09MDtpZih2KXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2NbcD4+Ml09Y1tmKzg+PjJdO3k9cCs0fDA7aFtrPj4zXT1qO2NbeT4+Ml09Y1trPj4yXTtjW3krND4+Ml09Y1trKzQ+PjJdO3c9Q2kodCx3LHUscCl8MH1lbHNle2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eT1wKzR8MDtoW2s+PjNdPWo7Y1t5Pj4yXT1jW2s+PjJdO2NbeSs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0zMil7cz11fWVsc2UgaWYoKHN8MCk9PTE2KXtzPWFbdj4+MF18MDtpZihzPDwyND4+MjQ9PTQzfHM8PDI0Pj4yND09NDUpe3M9disxfDA7YnJlYWt9aWYoKHd8MCk+MSZzPDwyND4+MjQ9PTQ4Pyh5PWFbdisxPj4wXXwwLHk8PDI0Pj4yND09ODh8eTw8MjQ+PjI0PT0xMjApOjApe3M9disyfDB9ZWxzZXtxPTQ4fX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwzKXwwO2lmKChwfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXg9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09eDt4PXgrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtRaShyLHMsdSxwLGQsbixvKTtvPWNbbz4+Ml18MDt4PW8rNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1MaShtLGNbZT4+Ml18MCxwLGNbZD4+Ml18MCxjW24+PjJdfDAsZixnKTt5PWNbbT4+Ml18MDtjW2U+PjJdPXk7Y1tiPj4yXT15O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1sO3JldHVybn12bih0KTtpPWw7cmV0dXJufWZ1bmN0aW9uIFFpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO2s9aTtpPWkrMzJ8MDtvPWs7bD1rKzEyfDA7cT1jW2o+PjJdfDA7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW28+PjJdPTEzNDQ4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NDgsbyl9bT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dD1jW3ErOD4+Ml18MDtpZighKChjW3ErMTI+PjJdfDApLXQ+PjI+Pj4wPm0+Pj4wKSl7eT1YYSg0KXwwO2NbeT4+Ml09MjEzMDQ7d2IoeXwwLDIxMzc2LDE5Nil9bT1jW3QrKG08PDIpPj4yXXwwO2lmKChtfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbaj4+Ml18MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbbz4+Ml09MTM2MDg7Y1tvKzQ+PjJdPTIwODtjW28rOD4+Ml09MDtjZygxMzYwOCxvKX1vPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtxPWNbais4Pj4yXXwwO2lmKCEoKGNbaisxMj4+Ml18MCktcT4+Mj4+PjA+bz4+PjApKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbcSsobzw8Mik+PjJdfDA7aWYoKGp8MCk9PTApe3k9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfW1jW2NbKGNbaj4+Ml18MCkrMjA+PjJdJjEyN10obCxqKTtjW2g+PjJdPWY7bz1hW2I+PjBdfDA7aWYobzw8MjQ+PjI0PT00M3xvPDwyND4+MjQ9PTQ1KXt5PXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLG8pfDA7dD1jW2g+PjJdfDA7Y1toPj4yXT10KzQ7Y1t0Pj4yXT15O3Q9YisxfDB9ZWxzZXt0PWJ9bz1lO2E6ZG97aWYoKChvLXR8MCk+MT8oYVt0Pj4wXXwwKT09NDg6MCk/KHA9dCsxfDAseT1hW3A+PjBdfDAseTw8MjQ+PjI0PT04OHx5PDwyND4+MjQ9PTEyMCk6MCl7eT14Y1tjWyhjW20+PjJdfDApKzQ0Pj4yXSY2M10obSw0OCl8MDt4PWNbaD4+Ml18MDtjW2g+PjJdPXgrNDtjW3g+PjJdPXk7dD10KzJ8MDt4PXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLGFbcD4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrNDtjW3k+PjJdPXg7aWYodD4+PjA8ZT4+PjApe3E9dDt3aGlsZSgxKXtwPWFbcT4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9eT1wPDwyND4+MjQ7aWYoISgoeSsgLTQ4fDApPj4+MDwxMCk/ISgoKHl8MzIpKyAtOTd8MCk+Pj4wPDYpOjApe3A9dDticmVhayBhfXE9cSsxfDA7aWYoIShxPj4+MDxlPj4+MCkpe3A9dDticmVha319fWVsc2V7cD10O3E9dH19ZWxzZXtzPTE1fX13aGlsZSgwKTtiOmRve2lmKChzfDApPT0xNSl7aWYodD4+PjA8ZT4+PjApe3E9dDt3aGlsZSgxKXtwPWFbcT4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cz1xKzF8MDtpZighKCgocDw8MjQ+PjI0KSsgLTQ4fDApPj4+MDwxMCkpe3A9dDticmVhayBifWlmKHM+Pj4wPGU+Pj4wKXtxPXN9ZWxzZXtwPXQ7cT1zO2JyZWFrfX19ZWxzZXtwPXQ7cT10fX19d2hpbGUoMCk7cz1hW2w+PjBdfDA7aWYoKHMmMSk9PTApe3M9KHMmMjU1KT4+PjF9ZWxzZXtzPWNbbCs0Pj4yXXwwfWlmKChzfDApIT0wKXtpZigocHwwKSE9KHF8MCk/KHI9cSsgLTF8MCxyPj4+MD5wPj4+MCk6MCl7cz1wO2Rve3k9YVtzPj4wXXwwO2Fbcz4+MF09YVtyPj4wXXwwO2Fbcj4+MF09eTtzPXMrMXwwO3I9cisgLTF8MH13aGlsZShzPj4+MDxyPj4+MCl9dj1vY1tjWyhjW2o+PjJdfDApKzE2Pj4yXSYxMjddKGopfDA7aWYocD4+PjA8cT4+PjApe3Q9bCsxfDA7cj1sKzR8MDt1PWwrOHwwO3g9MDt3PTA7cz1wO3doaWxlKDEpe3k9YVsoKGFbbD4+MF0mMSk9PTA/dDpjW3U+PjJdfDApK3c+PjBdfDA7aWYoeTw8MjQ+PjI0PjAmKHh8MCk9PSh5PDwyND4+MjR8MCkpe3g9Y1toPj4yXXwwO2NbaD4+Ml09eCs0O2NbeD4+Ml09djt4PWFbbD4+MF18MDtpZigoeCYxKT09MCl7eT0oeCYyNTUpPj4+MX1lbHNle3k9Y1tyPj4yXXwwfXg9MDt3PSh3Pj4+MDwoeSsgLTF8MCk+Pj4wJjEpK3d8MH1BPXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLGFbcz4+MF18MCl8MDt6PWNbaD4+Ml18MDt5PXorNHwwO2NbaD4+Ml09eTtjW3o+PjJdPUE7cz1zKzF8MDtpZighKHM+Pj4wPHE+Pj4wKSl7YnJlYWt9ZWxzZXt4PXgrMXwwfX19ZWxzZXt5PWNbaD4+Ml18MH1wPWYrKHAtYjw8Mil8MDtpZigocHwwKSE9KHl8MCk/KG49eSsgLTR8MCxuPj4+MD5wPj4+MCk6MCl7ZG97QT1jW3A+PjJdfDA7Y1twPj4yXT1jW24+PjJdO2Nbbj4+Ml09QTtwPXArNHwwO249bisgLTR8MH13aGlsZShwPj4+MDxuPj4+MCl9fWVsc2V7dWNbY1soY1ttPj4yXXwwKSs0OD4+Ml0mMzFdKG0scCxxLGNbaD4+Ml18MCl8MDt5PShjW2g+PjJdfDApKyhxLXA8PDIpfDA7Y1toPj4yXT15fWM6ZG97aWYocT4+PjA8ZT4+PjApe3doaWxlKDEpe249YVtxPj4wXXwwO2lmKG48PDI0Pj4yND09NDYpe2JyZWFrfXo9eGNbY1soY1ttPj4yXXwwKSs0ND4+Ml0mNjNdKG0sbil8MDtBPWNbaD4+Ml18MDt5PUErNHwwO2NbaD4+Ml09eTtjW0E+PjJdPXo7cT1xKzF8MDtpZighKHE+Pj4wPGU+Pj4wKSl7YnJlYWsgY319ej1vY1tjWyhjW2o+PjJdfDApKzEyPj4yXSYxMjddKGopfDA7QT1jW2g+PjJdfDA7eT1BKzR8MDtjW2g+PjJdPXk7Y1tBPj4yXT16O3E9cSsxfDB9fXdoaWxlKDApO3VjW2NbKGNbbT4+Ml18MCkrNDg+PjJdJjMxXShtLHEsZSx5KXwwO209KGNbaD4+Ml18MCkrKG8tcTw8Mil8MDtjW2g+PjJdPW07aWYoKGR8MCkhPShlfDApKXttPWYrKGQtYjw8Mil8MH1jW2c+PjJdPW07aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59Zz1jW2wrOD4+Ml18MDtpZigoZ3wwKT09MCl7aT1rO3JldHVybn12bihnKTtpPWs7cmV0dXJufWZ1bmN0aW9uIFJpKGIsZCxlLGYsZyxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPStqO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7bD1pO2k9aSszMDR8MDtwPWw7dT1sKzIzMnwwO3I9bCsyNjB8MDt0PWwrMjQ4fDA7bT1sKzI0NHwwO2Q9bCsyNDB8MDtvPWwrMjUyfDA7bj1sKzI1NnwwO3g9dTtjW3g+PjJdPTM3O2NbeCs0Pj4yXT0wO3g9dSsxfDA7cz1mKzR8MDt2PWNbcz4+Ml18MDtpZigodiYyMDQ4fDApIT0wKXthW3g+PjBdPTQzO3g9dSsyfDB9aWYoKHYmMTAyNHwwKSE9MCl7YVt4Pj4wXT0zNTt4PXgrMXwwfXc9diYyNjA7dj12Pj4+MTQ7ZG97aWYoKHd8MCk9PTI2MCl7YVt4Pj4wXT03Njt3PXgrMXwwO2lmKCh2JjF8MCk9PTApe2Fbdz4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt3Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt4Pj4wXT00NjthW3grMT4+MF09NDI7YVt4KzI+PjBdPTc2O3g9eCszfDA7aWYoKHd8MCk9PTQpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAyO3Y9MTticmVha31lbHNle2FbeD4+MF09NzA7dj0xO2JyZWFrfX1lbHNlIGlmKCh3fDApPT0yNTYpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAxO3Y9MTticmVha31lbHNle2FbeD4+MF09Njk7dj0xO2JyZWFrfX1lbHNle2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAzO3Y9MTticmVha31lbHNle2FbeD4+MF09NzE7dj0xO2JyZWFrfX19fXdoaWxlKDApO2NbdD4+Ml09cjtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7aWYodil7Y1twPj4yXT1jW2YrOD4+Ml07eD1wKzR8MDtoW2s+PjNdPWo7Y1t4Pj4yXT1jW2s+PjJdO2NbeCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWVsc2V7aFtrPj4zXT1qO2NbcD4+Ml09Y1trPj4yXTtjW3ArND4+Ml09Y1trKzQ+PjJdO3c9d2kociwzMCx3LHUscCl8MH1pZigod3wwKT4yOSl7dz0oYVsxMzM2OF18MCk9PTA7aWYodil7aWYodz8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtjW3A+PjJdPWNbZis4Pj4yXTt4PXArNHwwO2hbaz4+M109ajtjW3g+PjJdPWNbaz4+Ml07Y1t4KzQ+PjJdPWNbays0Pj4yXTt3PUNpKHQsdyx1LHApfDB9ZWxzZXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2hbaz4+M109ajtjW3A+PjJdPWNbaz4+Ml07Y1twKzQ+PjJdPWNbays0Pj4yXTt3PUNpKHQsdyx1LHApfDB9dD1jW3Q+PjJdfDA7aWYoKHR8MCk9PTApe3g9WGEoNCl8MDtjW3g+PjJdPTIyNjgwO3diKHh8MCwyMjcyOCwyMDYpfWVsc2V7dj10fX1lbHNle3Y9Y1t0Pj4yXXwwO3Q9MH11PXYrd3wwO3M9Y1tzPj4yXSYxNzY7ZG97aWYoKHN8MCk9PTMyKXtzPXV9ZWxzZSBpZigoc3wwKT09MTYpe3M9YVt2Pj4wXXwwO2lmKHM8PDI0Pj4yND09NDN8czw8MjQ+PjI0PT00NSl7cz12KzF8MDticmVha31pZigod3wwKT4xJnM8PDI0Pj4yND09NDg/KHg9YVt2KzE+PjBdfDAseDw8MjQ+PjI0PT04OHx4PDwyND4+MjQ9PTEyMCk6MCl7cz12KzJ8MH1lbHNle3E9NDh9fWVsc2V7cT00OH19d2hpbGUoMCk7aWYoKHF8MCk9PTQ4KXtzPXZ9aWYoKHZ8MCkhPShyfDApKXtwPXVuKHc8PDMpfDA7aWYoKHB8MCk9PTApe3g9WGEoNCl8MDtjW3g+PjJdPTIyNjgwO3diKHh8MCwyMjcyOCwyMDYpfWVsc2V7cj12O3E9cH19ZWxzZXtxPTB9dz1jW2YrMjg+PjJdfDA7Y1tvPj4yXT13O3c9dys0fDA7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxO1FpKHIscyx1LHAsbSxkLG8pO289Y1tvPj4yXXwwO3c9bys0fDA7eD1jW3c+PjJdfDA7Y1t3Pj4yXT14KyAtMTtpZigoeHwwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfUxpKG4sY1tlPj4yXXwwLHAsY1ttPj4yXXwwLGNbZD4+Ml18MCxmLGcpO3g9Y1tuPj4yXXwwO2NbZT4+Ml09eDtjW2I+PjJdPXg7aWYoKHF8MCkhPTApe3ZuKHEpfWlmKCh0fDApPT0wKXtpPWw7cmV0dXJufXZuKHQpO2k9bDtyZXR1cm59ZnVuY3Rpb24gU2koYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO2Q9aTtpPWkrMTkyfDA7bj1kO289ZCsxODB8MDtrPWQrMTYwfDA7bD1kKzEyfDA7YVtvKzA+PjBdPWFbMTIyNzI+PjBdfDA7YVtvKzE+PjBdPWFbMTIyNzM+PjBdfDA7YVtvKzI+PjBdPWFbMTIyNzQ+PjBdfDA7YVtvKzM+PjBdPWFbMTIyNzU+PjBdfDA7YVtvKzQ+PjBdPWFbMTIyNzY+PjBdfDA7YVtvKzU+PjBdPWFbMTIyNzc+PjBdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXA9Y1szMzQwXXwwO2Nbbj4+Ml09aDtvPXdpKGssMjAscCxvLG4pfDA7aD1rK298MDtwPWNbZis0Pj4yXSYxNzY7ZG97aWYoKHB8MCk9PTMyKXtwPWh9ZWxzZSBpZigocHwwKT09MTYpe3A9YVtrPj4wXXwwO2lmKHA8PDI0Pj4yND09NDN8cDw8MjQ+PjI0PT00NSl7cD1rKzF8MDticmVha31pZigob3wwKT4xJnA8PDI0Pj4yND09NDg/KHE9YVtrKzE+PjBdfDAscTw8MjQ+PjI0PT04OHxxPDwyND4+MjQ9PTEyMCk6MCl7cD1rKzJ8MH1lbHNle209MTF9fWVsc2V7bT0xMX19d2hpbGUoMCk7aWYoKG18MCk9PTExKXtwPWt9bT1jW2YrMjg+PjJdfDA7cT1tKzR8MDtjW3E+PjJdPShjW3E+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW24+PjJdPTEzNDQ4O2Nbbis0Pj4yXT0yMDg7Y1tuKzg+PjJdPTA7Y2coMTM0NDgsbil9cT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7bj1jW20rOD4+Ml18MDtpZigoY1ttKzEyPj4yXXwwKS1uPj4yPj4+MD5xPj4+MD8oaj1jW24rKHE8PDIpPj4yXXwwLChqfDApIT0wKTowKXtuPW0rNHwwO3E9Y1tuPj4yXXwwO2Nbbj4+Ml09cSsgLTE7aWYoKHF8MCk9PTApe2xjW2NbKGNbbT4+Ml18MCkrOD4+Ml0mMjU1XShtKX11Y1tjWyhjW2o+PjJdfDApKzQ4Pj4yXSYzMV0oaixrLGgsbCl8MDtqPWwrKG88PDIpfDA7aWYoKHB8MCk9PShofDApKXtxPWo7cD1jW2U+PjJdfDA7TGkoYixwLGwscSxqLGYsZyk7aT1kO3JldHVybn1xPWwrKHAtazw8Mil8MDtwPWNbZT4+Ml18MDtMaShiLHAsbCxxLGosZixnKTtpPWQ7cmV0dXJufXE9WGEoNCl8MDtjW3E+PjJdPTIxMzA0O3diKHF8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIFRpKGUsZixnLGgsaixrLGwsbSxuKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDt2YXIgbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO3A9aTtpPWkrMzJ8MDtxPXA7cj1wKzI0fDA7dT1wKzIwfDA7dD1wKzE2fDA7cz1wKzEyfDA7eT1jW2orMjg+PjJdfDA7RD15KzR8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3E+PjJdPTEzNDU2O2NbcSs0Pj4yXT0yMDg7Y1txKzg+PjJdPTA7Y2coMTM0NTYscSl9eD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7ej1jW3krOD4+Ml18MDtpZigoY1t5KzEyPj4yXXwwKS16Pj4yPj4+MD54Pj4+MD8odz1jW3orKHg8PDIpPj4yXXwwLCh3fDApIT0wKTowKXtDPXkrNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbeT4+Ml18MCkrOD4+Ml0mMjU1XSh5KX1jW2s+PjJdPTA7YTpkb3tpZigobXwwKSE9KG58MCkpe3g9dys4fDA7eT0wO2I6d2hpbGUoMSl7ej15O3k9Zzt3aGlsZSgxKXtpZigoenwwKSE9MCl7Zz15O2JyZWFrIGF9aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RD0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7Zz1EPzA6eTt5PUQ/MDp5fWVsc2V7Zz15fX1lbHNle2c9MDt5PTB9ej0oZ3wwKT09MDtkb3tpZigoaHwwKSE9MCl7aWYoKGNbaCsxMj4+Ml18MCk9PShjW2grMTY+PjJdfDApPyhvY1tjWyhjW2g+PjJdfDApKzM2Pj4yXSYxMjddKGgpfDApPT0tMTowKXtvPTIwO2JyZWFrfWlmKCF6KXtvPTIxO2JyZWFrIGJ9fWVsc2V7bz0yMH19d2hpbGUoMCk7aWYoKG98MCk9PTIwKXtvPTA7aWYoeil7aD0wO289MjE7YnJlYWsgYn1lbHNle2g9MH19aWYoKGhjW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjYzXSh3LGFbbT4+MF18MCwwKXwwKTw8MjQ+PjI0PT0zNyl7bz0yMzticmVha316PWFbbT4+MF18MDtpZih6PDwyND4+MjQ+LTE/KHY9Y1t4Pj4yXXwwLCEoKGJbdisoejw8MjQ+PjI0PDwxKT4+MV0mODE5Mik9PTApKTowKXtvPTM0O2JyZWFrfXo9ZysxMnwwO0I9Y1t6Pj4yXXwwO0E9ZysxNnwwO2lmKChCfDApPT0oY1tBPj4yXXwwKSl7Qj1vY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSYxMjddKGcpfDB9ZWxzZXtCPWRbQj4+MF18MH1EPXhjW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjYzXSh3LEImMjU1KXwwO2lmKEQ8PDI0Pj4yND09KHhjW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjYzXSh3LGFbbT4+MF18MCl8MCk8PDI0Pj4yNCl7bz01OTticmVha31jW2s+PjJdPTQ7ej00fWM6ZG97aWYoKG98MCk9PTIzKXtvPTA7ej1tKzF8MDtpZigoenwwKT09KG58MCkpe289MjQ7YnJlYWsgYn15PWhjW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjYzXSh3LGFbej4+MF18MCwwKXwwO2lmKHk8PDI0Pj4yND09NDh8eTw8MjQ+PjI0PT02OSl7ej1tKzJ8MDtpZigoenwwKT09KG58MCkpe289Mjc7YnJlYWsgYn1tPXo7ej1oY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSY2M10odyxhW3o+PjBdfDAsMCl8MH1lbHNle209ejt6PXk7eT0wfUQ9Y1soY1tmPj4yXXwwKSszNj4+Ml18MDtjW3Q+PjJdPWc7Y1tzPj4yXT1oO2NbciswPj4yXT1jW3QrMD4+Ml07Y1txKzA+PjJdPWNbcyswPj4yXTtuY1tEJjMxXSh1LGYscixxLGosayxsLHoseSk7bT1tKzF8MDtnPWNbdT4+Ml18MH1lbHNlIGlmKChvfDApPT0zNCl7d2hpbGUoMSl7bz0wO209bSsxfDA7aWYoKG18MCk9PShufDApKXttPW47YnJlYWt9ej1hW20+PjBdfDA7aWYoISh6PDwyND4+MjQ+LTEpKXticmVha31pZigoYlt2Kyh6PDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7YnJlYWt9ZWxzZXtvPTM0fX1CPWg7QT1oO3doaWxlKDEpe2lmKChnfDApIT0wKXtpZigoY1tnKzEyPj4yXXwwKT09KGNbZysxNj4+Ml18MCkpe0Q9KG9jW2NbKGNbZz4+Ml18MCkrMzY+PjJdJjEyN10oZyl8MCk9PS0xO2c9RD8wOmc7eT1EPzA6eX19ZWxzZXtnPTB9Qz0oZ3wwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZihDKXt6PUI7YnJlYWt9ZWxzZXtnPXk7YnJlYWsgY319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZihDXihCfDApPT0wKXt6PUI7QT1CfWVsc2V7Zz15O2JyZWFrIGN9fWVsc2V7ej0wO2g9MDtvPTQ1fX1lbHNle3o9QjtvPTQ1fX13aGlsZSgwKTtpZigob3wwKT09NDUpe289MDtpZihDKXtnPXk7YnJlYWsgY31lbHNle0E9MH19Qj1nKzEyfDA7RD1jW0I+PjJdfDA7Qz1nKzE2fDA7aWYoKER8MCk9PShjW0M+PjJdfDApKXtEPW9jW2NbKGNbZz4+Ml18MCkrMzY+PjJdJjEyN10oZyl8MH1lbHNle0Q9ZFtEPj4wXXwwfWlmKCEoKEQmMjU1KTw8MjQ+PjI0Pi0xKSl7Zz15O2JyZWFrIGN9aWYoKGJbKGNbeD4+Ml18MCkrKEQ8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXtnPXk7YnJlYWsgY31EPWNbQj4+Ml18MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbZz4+Ml18MCkrNDA+PjJdJjEyN10oZyl8MDtCPXo7Y29udGludWV9ZWxzZXtjW0I+PjJdPUQrMTtCPXo7Y29udGludWV9fX1lbHNlIGlmKChvfDApPT01OSl7bz0wO0I9Y1t6Pj4yXXwwO2lmKChCfDApPT0oY1tBPj4yXXwwKSl7b2NbY1soY1tnPj4yXXwwKSs0MD4+Ml0mMTI3XShnKXwwfWVsc2V7Y1t6Pj4yXT1CKzF9bT1tKzF8MDtnPXl9fXdoaWxlKDApO2lmKChtfDApPT0obnwwKSl7YnJlYWsgYX15PWNbaz4+Ml18MH1pZigob3wwKT09MjEpe2Nbaz4+Ml09NDticmVha31lbHNlIGlmKChvfDApPT0yNCl7Y1trPj4yXT00O2JyZWFrfWVsc2UgaWYoKG98MCk9PTI3KXtjW2s+PjJdPTQ7YnJlYWt9fX13aGlsZSgwKTtpZigoZ3wwKSE9MCl7aWYoKGNbZysxMj4+Ml18MCk9PShjW2crMTY+PjJdfDApKXtEPShvY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSYxMjddKGcpfDApPT0tMTtnPUQ/MDpnfX1lbHNle2c9MH1mPShnfDApPT0wO2Rve2lmKChofDApIT0wKXtpZigoY1toKzEyPj4yXXwwKT09KGNbaCsxNj4+Ml18MCk/KG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xOjApe289NzE7YnJlYWt9aWYoZil7Y1tlPj4yXT1nO2k9cDtyZXR1cm59fWVsc2V7bz03MX19d2hpbGUoMCk7aWYoKG98MCk9PTcxPyFmOjApe2NbZT4+Ml09ZztpPXA7cmV0dXJufWNbaz4+Ml09Y1trPj4yXXwyO2NbZT4+Ml09ZztpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIFVpKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFZpKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBXaShhKXthPWF8MDtyZXR1cm4gMn1mdW5jdGlvbiBYaShhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wO2o9aTtUaShhLGIsY1tkPj4yXXwwLGNbZT4+Ml18MCxmLGcsaCwxMjM3NiwxMjM4NHwwKTtpPWo7cmV0dXJufWZ1bmN0aW9uIFlpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTA7az1pO209ZCs4fDA7bT1vY1tjWyhjW20+PjJdfDApKzIwPj4yXSYxMjddKG0pfDA7bj1hW20+PjBdfDA7aWYoKG4mMSk9PTApe2w9bSsxfDA7bT0obiYyNTUpPj4+MX1lbHNle2w9Y1ttKzg+PjJdfDA7bT1jW20rND4+Ml18MH1UaShiLGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaixsLGwrbXwwKTtpPWs7cmV0dXJufWZ1bmN0aW9uIFppKGEsYixkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTA7aj1pO2k9aSsxNnwwO2w9ajtmPWNbZisyOD4+Ml18MDttPWYrNHwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1sPShjWzEzNDYwPj4yXXwwKSsgLTF8MDttPWNbZis4Pj4yXXwwO2lmKChjW2YrMTI+PjJdfDApLW0+PjI+Pj4wPmw+Pj4wPyhrPWNbbSsobDw8Mik+PjJdfDAsKGt8MCkhPTApOjApe2w9Zis0fDA7bT1jW2w+PjJdfDA7Y1tsPj4yXT1tKyAtMTtpZigobXwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfW09Y1tlPj4yXXwwO2I9Yis4fDA7Yj1vY1tjW2NbYj4+Ml0+PjJdJjEyN10oYil8MDtiPShNaChkLG0sYixiKzE2OHwwLGssZywwKXwwKS1ifDA7aWYoKGJ8MCk+PTE2OCl7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59Y1toKzI0Pj4yXT0oKGJ8MCkvMTJ8MHwwKSU3fDA7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59bT1YYSg0KXwwO2NbbT4+Ml09MjEzMDQ7d2IobXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gX2koYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MDtqPWk7aT1pKzE2fDA7bD1qO2Y9Y1tmKzI4Pj4yXXwwO209Zis0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tsPj4yXT0xMzQ1NjtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEzNDU2LGwpfWw9KGNbMTM0NjA+PjJdfDApKyAtMXwwO209Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7bD1mKzR8MDttPWNbbD4+Ml18MDtjW2w+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9bT1jW2U+PjJdfDA7Yj1iKzh8MDtiPW9jW2NbKGNbYj4+Ml18MCkrND4+Ml0mMTI3XShiKXwwO2I9KE1oKGQsbSxiLGIrMjg4fDAsayxnLDApfDApLWJ8MDtpZigoYnwwKT49Mjg4KXttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1jW2grMTY+PjJdPSgoYnwwKS8xMnwwfDApJTEyfDA7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59bT1YYSg0KXwwO2NbbT4+Ml09MjEzMDQ7d2IobXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gJGkoYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wO2I9aTtpPWkrMTZ8MDtrPWI7Zj1jW2YrMjg+PjJdfDA7bD1mKzR8MDtjW2w+PjJdPShjW2w+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2s+PjJdPTEzNDU2O2Nbays0Pj4yXT0yMDg7Y1trKzg+PjJdPTA7Y2coMTM0NTYsayl9az0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7bD1jW2YrOD4+Ml18MDtpZigoY1tmKzEyPj4yXXwwKS1sPj4yPj4+MD5rPj4+MD8oaj1jW2wrKGs8PDIpPj4yXXwwLChqfDApIT0wKTowKXtrPWYrNHwwO2w9Y1trPj4yXXwwO2Nbaz4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbZj4+Ml18MCkrOD4+Ml0mMjU1XShmKX1lPWJqKGQsY1tlPj4yXXwwLGcsaiw0KXwwO2lmKChjW2c+PjJdJjR8MCkhPTApe2w9Y1tkPj4yXXwwO2NbYT4+Ml09bDtpPWI7cmV0dXJufWlmKChlfDApPDY5KXtnPWUrMmUzfDB9ZWxzZXtnPShlKyAtNjl8MCk+Pj4wPDMxP2UrMTkwMHwwOmV9Y1toKzIwPj4yXT1nKyAtMTkwMDtsPWNbZD4+Ml18MDtjW2E+PjJdPWw7aT1iO3JldHVybn1sPVhhKDQpfDA7Y1tsPj4yXT0yMTMwNDt3YihsfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBhaihlLGYsZyxoLGosayxsLG0sbil7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7dmFyIG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7bj1pO2k9aSs2NHwwO3c9bjtFPW4rMTZ8MDtyPW4rMjh8MDt1PW4rMjR8MDt2PW4rMzJ8MDt5PW4rMTJ8MDt6PW4rMjB8MDt4PW4rMzZ8MDtCPW4rNDB8MDt0PW4rNDR8MDtzPW4rNDh8MDtjW2s+PjJdPTA7QT1jW2orMjg+PjJdfDA7RD1BKzR8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3c+PjJdPTEzNDU2O2Nbdys0Pj4yXT0yMDg7Y1t3Kzg+PjJdPTA7Y2coMTM0NTYsdyl9Qz0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7RD1jW0ErOD4+Ml18MDtpZigoY1tBKzEyPj4yXXwwKS1EPj4yPj4+MD5DPj4+MD8ocD1jW0QrKEM8PDIpPj4yXXwwLChwfDApIT0wKTowKXtDPUErNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbQT4+Ml18MCkrOD4+Ml0mMjU1XShBKX1hOmRve3N3aXRjaChtPDwyND4+MjR8MCl7Y2FzZSAxMTI6e289bCs4fDA7bD1jW2g+PjJdfDA7aD1mKzh8MDtoPW9jW2NbKGNbaD4+Ml18MCkrOD4+Ml0mMTI3XShoKXwwO2Y9YVtoPj4wXXwwO2lmKChmJjEpPT0wKXtmPShmJjI1NSk+Pj4xfWVsc2V7Zj1jW2grND4+Ml18MH1qPWFbaCsxMj4+MF18MDtpZigoaiYxKT09MCl7aj0oaiYyNTUpPj4+MX1lbHNle2o9Y1toKzE2Pj4yXXwwfWlmKChmfDApPT0oMC1qfDApKXtjW2s+PjJdPWNbaz4+Ml18NDticmVhayBhfUU9TWgoZyxsLGgsaCsyNHwwLHAsaywwKXwwO2s9RS1ofDA7aWYoKEV8MCk9PShofDApPyhjW28+PjJdfDApPT0xMjowKXtjW28+PjJdPTA7YnJlYWsgYX1pZigoa3wwKT09MTI/KHE9Y1tvPj4yXXwwLChxfDApPDEyKTowKXtjW28+PjJdPXErMTJ9YnJlYWt9O2Nhc2UgMTIwOntEPWNbKGNbZj4+Ml18MCkrMjA+PjJdfDA7Y1tCPj4yXT1jW2c+PjJdO2NbdD4+Ml09Y1toPj4yXTtjW0UrMD4+Ml09Y1tCKzA+PjJdO2NbdyswPj4yXT1jW3QrMD4+Ml07aWNbRCY2M10oZSxmLEUsdyxqLGssbCk7aT1uO3JldHVybn07Y2FzZSA4ODp7cT1mKzh8MDtxPW9jW2NbKGNbcT4+Ml18MCkrMjQ+PjJdJjEyN10ocSl8MDtwPWFbcT4+MF18MDtpZigocCYxKT09MCl7bz1xKzF8MDtwPShwJjI1NSk+Pj4xfWVsc2V7bz1jW3ErOD4+Ml18MDtwPWNbcSs0Pj4yXXwwfVRpKHMsZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLG8sbytwfDApO2NbZz4+Ml09Y1tzPj4yXTticmVha307Y2FzZSAxMjE6e289bCsyMHwwO2w9YmooZyxjW2g+PjJdfDAsayxwLDQpfDA7aWYoKGNbaz4+Ml0mNHwwKT09MCl7aWYoKGx8MCk8Njkpe2s9bCsyZTN8MH1lbHNle2s9KGwrIC02OXwwKT4+PjA8MzE/bCsxOTAwfDA6bH1jW28+PjJdPWsrIC0xOTAwfWJyZWFrfTtjYXNlIDgzOntvPWJqKGcsY1toPj4yXXwwLGsscCwyKXwwO3A9Y1trPj4yXXwwO2lmKChwJjR8MCk9PTAmKG98MCk8NjEpe2NbbD4+Ml09bzticmVhayBhfWVsc2V7Y1trPj4yXT1wfDQ7YnJlYWsgYX19O2Nhc2UgODI6e1RpKHosZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyNDE2LDEyNDIxfDApO2NbZz4+Ml09Y1t6Pj4yXTticmVha307Y2FzZSAxMTQ6e1RpKHksZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyNDAwLDEyNDExfDApO2NbZz4+Ml09Y1t5Pj4yXTticmVha307Y2FzZSA4OTp7bz1iaihnLGNbaD4+Ml18MCxrLHAsNCl8MDtpZigoY1trPj4yXSY0fDApPT0wKXtjW2wrMjA+PjJdPW8rIC0xOTAwfWJyZWFrfTtjYXNlIDM3OntsPWNbaD4+Ml18MDtoPWNbZz4+Ml18MDtkb3tpZigoaHwwKSE9MCl7aWYoKGNbaCsxMj4+Ml18MCk9PShjW2grMTY+PjJdfDApKXtpZigob2NbY1soY1toPj4yXXwwKSszNj4+Ml0mMTI3XShoKXwwKT09LTEpe2NbZz4+Ml09MDtoPTA7YnJlYWt9ZWxzZXtoPWNbZz4+Ml18MDticmVha319fWVsc2V7aD0wfX13aGlsZSgwKTtoPShofDApPT0wO2Rve2lmKChsfDApIT0wKXtpZigoY1tsKzEyPj4yXXwwKT09KGNbbCsxNj4+Ml18MCk/KG9jW2NbKGNbbD4+Ml18MCkrMzY+PjJdJjEyN10obCl8MCk9PS0xOjApe289MTE1O2JyZWFrfWlmKCFoKXtvPTExNn19ZWxzZXtvPTExNX19d2hpbGUoMCk7aWYoKG98MCk9PTExNSl7aWYoaCl7bz0xMTZ9ZWxzZXtsPTB9fWlmKChvfDApPT0xMTYpe2Nbaz4+Ml09Y1trPj4yXXw2O2JyZWFrIGF9aD1jW2c+PjJdfDA7Zj1jW2grMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2grMTY+PjJdfDApKXtoPW9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MH1lbHNle2g9ZFtmPj4wXXwwfWlmKCEoKGhjW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjYzXShwLGgmMjU1LDApfDApPDwyND4+MjQ9PTM3KSl7Y1trPj4yXT1jW2s+PjJdfDQ7YnJlYWsgYX1wPWNbZz4+Ml18MDtoPXArMTJ8MDtmPWNbaD4+Ml18MDtpZigoZnwwKT09KGNbcCsxNj4+Ml18MCkpe29jW2NbKGNbcD4+Ml18MCkrNDA+PjJdJjEyN10ocCl8MH1lbHNle2NbaD4+Ml09ZisxfXA9Y1tnPj4yXXwwO2Rve2lmKChwfDApIT0wKXtpZigoY1twKzEyPj4yXXwwKT09KGNbcCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjW3A+PjJdfDApKzM2Pj4yXSYxMjddKHApfDApPT0tMSl7Y1tnPj4yXT0wO3A9MDticmVha31lbHNle3A9Y1tnPj4yXXwwO2JyZWFrfX19ZWxzZXtwPTB9fXdoaWxlKDApO3A9KHB8MCk9PTA7ZG97aWYoKGx8MCkhPTApe2lmKChjW2wrMTI+PjJdfDApPT0oY1tsKzE2Pj4yXXwwKT8ob2NbY1soY1tsPj4yXXwwKSszNj4+Ml0mMTI3XShsKXwwKT09LTE6MCl7bz0xMzQ7YnJlYWt9aWYocCl7YnJlYWsgYX19ZWxzZXtvPTEzNH19d2hpbGUoMCk7aWYoKG98MCk9PTEzND8hcDowKXticmVhayBhfWNbaz4+Ml09Y1trPj4yXXwyO2JyZWFrfTtjYXNlIDg0OntUaSh4LGYsY1tnPj4yXXwwLGNbaD4+Ml18MCxqLGssbCwxMjQyNCwxMjQzMnwwKTtjW2c+PjJdPWNbeD4+Ml07YnJlYWt9O2Nhc2UgMTE5OntvPWJqKGcsY1toPj4yXXwwLGsscCwxKXwwO3A9Y1trPj4yXXwwO2lmKChwJjR8MCk9PTAmKG98MCk8Nyl7Y1tsKzI0Pj4yXT1vO2JyZWFrIGF9ZWxzZXtjW2s+PjJdPXB8NDticmVhayBhfX07Y2FzZSAxMDk6e289YmooZyxjW2g+PjJdfDAsayxwLDIpfDA7cD1jW2s+PjJdfDA7aWYoKHAmNHwwKT09MCYob3wwKTwxMyl7Y1tsKzE2Pj4yXT1vKyAtMTticmVhayBhfWVsc2V7Y1trPj4yXT1wfDQ7YnJlYWsgYX19O2Nhc2UgNzc6e289YmooZyxjW2g+PjJdfDAsayxwLDIpfDA7cD1jW2s+PjJdfDA7aWYoKHAmNHwwKT09MCYob3wwKTw2MCl7Y1tsKzQ+PjJdPW87YnJlYWsgYX1lbHNle2Nbaz4+Ml09cHw0O2JyZWFrIGF9fTtjYXNlIDEwNjp7bz1iaihnLGNbaD4+Ml18MCxrLHAsMyl8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wJihvfDApPDM2Nil7Y1tsKzI4Pj4yXT1vO2JyZWFrIGF9ZWxzZXtjW2s+PjJdPXB8NDticmVhayBhfX07Y2FzZSA3Mjp7cD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtvPWNbaz4+Ml18MDtpZigobyY0fDApPT0wJihwfDApPDI0KXtjW2wrOD4+Ml09cDticmVhayBhfWVsc2V7Y1trPj4yXT1vfDQ7YnJlYWsgYX19O2Nhc2UgNzA6e1RpKHYsZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyMzkyLDEyNDAwfDApO2NbZz4+Ml09Y1t2Pj4yXTticmVha307Y2FzZSA2ODp7VGkodSxmLGNbZz4+Ml18MCxjW2g+PjJdfDAsaixrLGwsMTIzODQsMTIzOTJ8MCk7Y1tnPj4yXT1jW3U+PjJdO2JyZWFrfTtjYXNlIDEwNDpjYXNlIDY2OmNhc2UgOTg6e0Q9Y1toPj4yXXwwO0U9Zis4fDA7RT1vY1tjWyhjW0U+PjJdfDApKzQ+PjJdJjEyN10oRSl8MDtrPShNaChnLEQsRSxFKzI4OHwwLHAsaywwKXwwKS1FfDA7aWYoKGt8MCk8Mjg4KXtjW2wrMTY+PjJdPSgoa3wwKS8xMnwwfDApJTEyfDB9YnJlYWt9O2Nhc2UgNzM6e289bCs4fDA7bD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wPyhsKyAtMXwwKT4+PjA8MTI6MCl7Y1tvPj4yXT1sO2JyZWFrIGF9Y1trPj4yXT1wfDQ7YnJlYWt9O2Nhc2UgNjU6Y2FzZSA5Nzp7RD1jW2g+PjJdfDA7RT1mKzh8MDtFPW9jW2NbY1tFPj4yXT4+Ml0mMTI3XShFKXwwO2s9KE1oKGcsRCxFLEUrMTY4fDAscCxrLDApfDApLUV8MDtpZigoa3wwKTwxNjgpe2NbbCsyND4+Ml09KChrfDApLzEyfDB8MCklN3wwfWJyZWFrfTtjYXNlIDEwMTpjYXNlIDEwMDp7bz1sKzEyfDA7bD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wPyhsKyAtMXwwKT4+PjA8MzE6MCl7Y1tvPj4yXT1sO2JyZWFrIGF9Y1trPj4yXT1wfDQ7YnJlYWt9O2Nhc2UgMTE2OmNhc2UgMTEwOntsPXArOHwwO3A9Y1toPj4yXXwwO2I6d2hpbGUoMSl7aD1jW2c+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKChjW2grMTI+PjJdfDApPT0oY1toKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xKXtjW2c+PjJdPTA7aD0wO2JyZWFrfWVsc2V7aD1jW2c+PjJdfDA7YnJlYWt9fX1lbHNle2g9MH19d2hpbGUoMCk7aD0oaHwwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCkhPShjW3ArMTY+PjJdfDApKXtpZihoKXticmVha31lbHNle2JyZWFrIGJ9fWlmKCEoKG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xKSl7aWYoIWgpe2JyZWFrIGJ9fWVsc2V7bz01MH19ZWxzZXtvPTUwfX13aGlsZSgwKTtpZigob3wwKT09NTApe289MDtpZihoKXtwPTA7YnJlYWt9ZWxzZXtwPTB9fWg9Y1tnPj4yXXwwO2Y9Y1toKzEyPj4yXXwwO2lmKChmfDApPT0oY1toKzE2Pj4yXXwwKSl7aD1vY1tjWyhjW2g+PjJdfDApKzM2Pj4yXSYxMjddKGgpfDB9ZWxzZXtoPWRbZj4+MF18MH1pZighKChoJjI1NSk8PDI0Pj4yND4tMSkpe2JyZWFrfWlmKChiWyhjW2w+PjJdfDApKyhoPDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7YnJlYWt9aj1jW2c+PjJdfDA7aD1qKzEyfDA7Zj1jW2g+PjJdfDA7aWYoKGZ8MCk9PShjW2orMTY+PjJdfDApKXtvY1tjWyhjW2o+PjJdfDApKzQwPj4yXSYxMjddKGopfDA7Y29udGludWV9ZWxzZXtjW2g+PjJdPWYrMTtjb250aW51ZX19bD1jW2c+PjJdfDA7ZG97aWYoKGx8MCkhPTApe2lmKChjW2wrMTI+PjJdfDApPT0oY1tsKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbbD4+Ml18MCkrMzY+PjJdJjEyN10obCl8MCk9PS0xKXtjW2c+PjJdPTA7bD0wO2JyZWFrfWVsc2V7bD1jW2c+PjJdfDA7YnJlYWt9fX1lbHNle2w9MH19d2hpbGUoMCk7bD0obHwwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCk9PShjW3ArMTY+PjJdfDApPyhvY1tjWyhjW3A+PjJdfDApKzM2Pj4yXSYxMjddKHApfDApPT0tMTowKXtvPTY5O2JyZWFrfWlmKGwpe2JyZWFrIGF9fWVsc2V7bz02OX19d2hpbGUoMCk7aWYoKG98MCk9PTY5PyFsOjApe2JyZWFrIGF9Y1trPj4yXT1jW2s+PjJdfDI7YnJlYWt9O2Nhc2UgOTk6e3E9Zis4fDA7cT1vY1tjWyhjW3E+PjJdfDApKzEyPj4yXSYxMjddKHEpfDA7cD1hW3E+PjBdfDA7aWYoKHAmMSk9PTApe289cSsxfDA7cD0ocCYyNTUpPj4+MX1lbHNle289Y1txKzg+PjJdfDA7cD1jW3ErND4+Ml18MH1UaShyLGYsY1tnPj4yXXwwLGNbaD4+Ml18MCxqLGssbCxvLG8rcHwwKTtjW2c+PjJdPWNbcj4+Ml07YnJlYWt9O2RlZmF1bHQ6e2Nbaz4+Ml09Y1trPj4yXXw0fX19d2hpbGUoMCk7Y1tlPj4yXT1jW2c+PjJdO2k9bjtyZXR1cm59RT1YYSg0KXwwO2NbRT4+Ml09MjEzMDQ7d2IoRXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gYmooYSxlLGYsZyxoKXthPWF8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2o9aTtsPWNbYT4+Ml18MDtkb3tpZigobHwwKSE9MCl7aWYoKGNbbCsxMj4+Ml18MCk9PShjW2wrMTY+PjJdfDApKXtpZigob2NbY1soY1tsPj4yXXwwKSszNj4+Ml0mMTI3XShsKXwwKT09LTEpe2NbYT4+Ml09MDtsPTA7YnJlYWt9ZWxzZXtsPWNbYT4+Ml18MDticmVha319fWVsc2V7bD0wfX13aGlsZSgwKTtsPShsfDApPT0wO2Rve2lmKChlfDApIT0wKXtpZigoY1tlKzEyPj4yXXwwKT09KGNbZSsxNj4+Ml18MCk/KG9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MCk9PS0xOjApe209MTA7YnJlYWt9aWYoIWwpe209MTF9fWVsc2V7bT0xMH19d2hpbGUoMCk7aWYoKG18MCk9PTEwKXtpZihsKXttPTExfWVsc2V7ZT0wfX1pZigobXwwKT09MTEpe2NbZj4+Ml09Y1tmPj4yXXw2O3A9MDtpPWo7cmV0dXJuIHB8MH1tPWNbYT4+Ml18MDtsPWNbbSsxMj4+Ml18MDtpZigobHwwKT09KGNbbSsxNj4+Ml18MCkpe209b2NbY1soY1ttPj4yXXwwKSszNj4+Ml0mMTI3XShtKXwwfWVsc2V7bT1kW2w+PjBdfDB9bD1tJjI1NTtpZihsPDwyND4+MjQ+LTE/KGs9Zys4fDAsISgoYlsoY1trPj4yXXwwKSsobTw8MjQ+PjI0PDwxKT4+MV0mMjA0OCk9PTApKTowKXtsPShoY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSY2M10oZyxsLDApfDApPDwyND4+MjQ7bz1jW2E+PjJdfDA7bT1vKzEyfDA7bj1jW20+PjJdfDA7aWYoKG58MCk9PShjW28rMTY+PjJdfDApKXtvY1tjWyhjW28+PjJdfDApKzQwPj4yXSYxMjddKG8pfDA7bj1lO209ZX1lbHNle2NbbT4+Ml09bisxO249ZTttPWV9d2hpbGUoMSl7bD1sKyAtNDh8MDtoPWgrIC0xfDA7ZT1jW2E+PjJdfDA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApPT0oY1tlKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MCk9PS0xKXtjW2E+PjJdPTA7ZT0wO2JyZWFrfWVsc2V7ZT1jW2E+PjJdfDA7YnJlYWt9fX1lbHNle2U9MH19d2hpbGUoMCk7bz0oZXwwKT09MDtpZigobXwwKSE9MCl7aWYoKGNbbSsxMj4+Ml18MCk9PShjW20rMTY+PjJdfDApKXttPShvY1tjWyhjW20+PjJdfDApKzM2Pj4yXSYxMjddKG0pfDApPT0tMTtlPW0/MDpuO209bT8wOm59ZWxzZXtlPW59fWVsc2V7ZT1uO209MH1uPWNbYT4+Ml18MDtpZighKChvXihtfDApPT0wKSYoaHwwKT4wKSl7bT0zODticmVha31vPWNbbisxMj4+Ml18MDtpZigob3wwKT09KGNbbisxNj4+Ml18MCkpe249b2NbY1soY1tuPj4yXXwwKSszNj4+Ml0mMTI3XShuKXwwfWVsc2V7bj1kW28+PjBdfDB9bz1uJjI1NTtpZighKG88PDI0Pj4yND4tMSkpe209NDk7YnJlYWt9aWYoKGJbKGNbaz4+Ml18MCkrKG48PDI0Pj4yNDw8MSk+PjFdJjIwNDgpPT0wKXttPTQ5O2JyZWFrfWw9KChoY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSY2M10oZyxvLDApfDApPDwyND4+MjQpKyhsKjEwfDApfDA7bj1jW2E+PjJdfDA7cD1uKzEyfDA7bz1jW3A+PjJdfDA7aWYoKG98MCk9PShjW24rMTY+PjJdfDApKXtvY1tjWyhjW24+PjJdfDApKzQwPj4yXSYxMjddKG4pfDA7bj1lO2NvbnRpbnVlfWVsc2V7Y1twPj4yXT1vKzE7bj1lO2NvbnRpbnVlfX1pZigobXwwKT09Mzgpe2Rve2lmKChufDApIT0wKXtpZigoY1tuKzEyPj4yXXwwKT09KGNbbisxNj4+Ml18MCkpe2lmKChvY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDApPT0tMSl7Y1thPj4yXT0wO249MDticmVha31lbHNle249Y1thPj4yXXwwO2JyZWFrfX19ZWxzZXtuPTB9fXdoaWxlKDApO2c9KG58MCk9PTA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApPT0oY1tlKzE2Pj4yXXwwKT8ob2NbY1soY1tlPj4yXXwwKSszNj4+Ml0mMTI3XShlKXwwKT09LTE6MCl7bT00NzticmVha31pZihnKXtwPWw7aT1qO3JldHVybiBwfDB9fWVsc2V7bT00N319d2hpbGUoMCk7aWYoKG18MCk9PTQ3PyFnOjApe3A9bDtpPWo7cmV0dXJuIHB8MH1jW2Y+PjJdPWNbZj4+Ml18MjtwPWw7aT1qO3JldHVybiBwfDB9ZWxzZSBpZigobXwwKT09NDkpe2k9ajtyZXR1cm4gbHwwfX1jW2Y+PjJdPWNbZj4+Ml18NDtwPTA7aT1qO3JldHVybiBwfDB9ZnVuY3Rpb24gY2ooYSxiLGQsZSxmLGcsaCxqLGspe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO209aTtpPWkrMzJ8MDtvPW07cD1tKzI0fDA7bj1tKzIwfDA7cj1tKzE2fDA7cT1tKzEyfDA7dD1jW2YrMjg+PjJdfDA7eT10KzR8MDtjW3k+PjJdPShjW3k+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW28+PjJdPTEzNDQ4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NDgsbyl9dT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dj1jW3QrOD4+Ml18MDtpZigoY1t0KzEyPj4yXXwwKS12Pj4yPj4+MD51Pj4+MD8ocz1jW3YrKHU8PDIpPj4yXXwwLChzfDApIT0wKTowKXt4PXQrNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbdD4+Ml18MCkrOD4+Ml0mMjU1XSh0KX1jW2c+PjJdPTA7YTpkb3tpZigoanwwKSE9KGt8MCkpe3Q9MDtiOndoaWxlKDEpe3U9dDt0PWQ7d2hpbGUoMSl7aWYoKHV8MCkhPTApe2Q9dDticmVhayBhfWlmKCh0fDApPT0wKXt1PTE7ZD0wO3Q9MH1lbHNle2Q9Y1t0KzEyPj4yXXwwO2lmKChkfDApPT0oY1t0KzE2Pj4yXXwwKSl7ZD1vY1tjWyhjW3Q+PjJdfDApKzM2Pj4yXSYxMjddKHQpfDB9ZWxzZXtkPWNbZD4+Ml18MH15PShkfDApPT0tMTt1PXk/MTowO2Q9eT8wOnQ7dD15PzA6dH1pZigoZXwwKSE9MCl7dj1jW2UrMTI+PjJdfDA7aWYoKHZ8MCk9PShjW2UrMTY+PjJdfDApKXt2PW9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MH1lbHNle3Y9Y1t2Pj4yXXwwfWlmKCEoKHZ8MCk9PS0xKSl7aWYoIXUpe2w9MjU7YnJlYWsgYn19ZWxzZXtsPTIzfX1lbHNle2w9MjN9aWYoKGx8MCk9PTIzKXtsPTA7aWYodSl7ZT0wO2w9MjU7YnJlYWsgYn1lbHNle2U9MH19aWYoKGhjW2NbKGNbcz4+Ml18MCkrNTI+PjJdJjYzXShzLGNbaj4+Ml18MCwwKXwwKTw8MjQ+PjI0PT0zNyl7bD0yNzticmVha31pZihoY1tjWyhjW3M+PjJdfDApKzEyPj4yXSY2M10ocyw4MTkyLGNbaj4+Ml18MCl8MCl7bD0zNzticmVha311PWQrMTJ8MDt3PWNbdT4+Ml18MDt2PWQrMTZ8MDtpZigod3wwKT09KGNbdj4+Ml18MCkpe3c9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7dz1jW3c+PjJdfDB9eT14Y1tjWyhjW3M+PjJdfDApKzI4Pj4yXSY2M10ocyx3KXwwO2lmKCh5fDApPT0oeGNbY1soY1tzPj4yXXwwKSsyOD4+Ml0mNjNdKHMsY1tqPj4yXXwwKXwwKSl7bD02MzticmVha31jW2c+PjJdPTQ7dT00fWM6ZG97aWYoKGx8MCk9PTI3KXtsPTA7dT1qKzR8MDtpZigodXwwKT09KGt8MCkpe2w9Mjg7YnJlYWsgYn10PWhjW2NbKGNbcz4+Ml18MCkrNTI+PjJdJjYzXShzLGNbdT4+Ml18MCwwKXwwO2lmKHQ8PDI0Pj4yND09NDh8dDw8MjQ+PjI0PT02OSl7dT1qKzh8MDtpZigodXwwKT09KGt8MCkpe2w9MzE7YnJlYWsgYn1qPXU7dT1oY1tjWyhjW3M+PjJdfDApKzUyPj4yXSY2M10ocyxjW3U+PjJdfDAsMCl8MH1lbHNle2o9dTt1PXQ7dD0wfXk9Y1soY1tiPj4yXXwwKSszNj4+Ml18MDtjW3I+PjJdPWQ7Y1txPj4yXT1lO2NbcCswPj4yXT1jW3IrMD4+Ml07Y1tvKzA+PjJdPWNbcSswPj4yXTtuY1t5JjMxXShuLGIscCxvLGYsZyxoLHUsdCk7aj1qKzR8MDtkPWNbbj4+Ml18MH1lbHNlIGlmKChsfDApPT0zNyl7d2hpbGUoMSl7bD0wO2o9ais0fDA7aWYoKGp8MCk9PShrfDApKXtqPWs7YnJlYWt9aWYoaGNbY1soY1tzPj4yXXwwKSsxMj4+Ml0mNjNdKHMsODE5MixjW2o+PjJdfDApfDApe2w9Mzd9ZWxzZXticmVha319dT1lO3c9ZTt3aGlsZSgxKXtpZigoZHwwKT09MCl7dj0xO2Q9MH1lbHNle3Y9Y1tkKzEyPj4yXXwwO2lmKCh2fDApPT0oY1tkKzE2Pj4yXXwwKSl7dj1vY1tjWyhjW2Q+PjJdfDApKzM2Pj4yXSYxMjddKGQpfDB9ZWxzZXt2PWNbdj4+Ml18MH15PSh2fDApPT0tMTt2PXk/MTowO2Q9eT8wOmQ7dD15PzA6dH1pZigod3wwKSE9MCl7eD1jW3crMTI+PjJdfDA7aWYoKHh8MCk9PShjW3crMTY+PjJdfDApKXt3PW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle3c9Y1t4Pj4yXXwwfWlmKCEoKHd8MCk9PS0xKSl7aWYodl4odXwwKT09MCl7dj11O3c9dX1lbHNle2Q9dDticmVhayBjfX1lbHNle3U9MDtlPTA7bD01MH19ZWxzZXtsPTUwfWlmKChsfDApPT01MCl7bD0wO2lmKHYpe2Q9dDticmVhayBjfWVsc2V7dj11O3c9MH19eD1kKzEyfDA7eT1jW3g+PjJdfDA7dT1kKzE2fDA7aWYoKHl8MCk9PShjW3U+PjJdfDApKXt5PW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle3k9Y1t5Pj4yXXwwfWlmKCEoaGNbY1soY1tzPj4yXXwwKSsxMj4+Ml0mNjNdKHMsODE5Mix5KXwwKSl7ZD10O2JyZWFrIGN9eT1jW3g+PjJdfDA7aWYoKHl8MCk9PShjW3U+PjJdfDApKXtvY1tjWyhjW2Q+PjJdfDApKzQwPj4yXSYxMjddKGQpfDA7dT12O2NvbnRpbnVlfWVsc2V7Y1t4Pj4yXT15KzQ7dT12O2NvbnRpbnVlfX19ZWxzZSBpZigobHwwKT09NjMpe2w9MDt3PWNbdT4+Ml18MDtpZigod3wwKT09KGNbdj4+Ml18MCkpe29jW2NbKGNbZD4+Ml18MCkrNDA+PjJdJjEyN10oZCl8MH1lbHNle2NbdT4+Ml09dys0fWo9ais0fDA7ZD10fX13aGlsZSgwKTtpZigoanwwKT09KGt8MCkpe2JyZWFrIGF9dD1jW2c+PjJdfDB9aWYoKGx8MCk9PTI1KXtjW2c+PjJdPTQ7YnJlYWt9ZWxzZSBpZigobHwwKT09Mjgpe2NbZz4+Ml09NDticmVha31lbHNlIGlmKChsfDApPT0zMSl7Y1tnPj4yXT00O2JyZWFrfX19d2hpbGUoMCk7aWYoKGR8MCk9PTApe249MDtvPTF9ZWxzZXtuPWNbZCsxMj4+Ml18MDtpZigobnwwKT09KGNbZCsxNj4+Ml18MCkpe249b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7bj1jW24+PjJdfDB9bz0obnwwKT09LTE7bj1vPzA6ZDtvPW8/MTowfWlmKChlfDApIT0wKXtwPWNbZSsxMj4+Ml18MDtpZigocHwwKT09KGNbZSsxNj4+Ml18MCkpe3A9b2NbY1soY1tlPj4yXXwwKSszNj4+Ml0mMTI3XShlKXwwfWVsc2V7cD1jW3A+PjJdfDB9aWYoISgocHwwKT09LTEpKXtpZihvKXtjW2E+PjJdPW47aT1tO3JldHVybn19ZWxzZXtsPTc4fX1lbHNle2w9Nzh9aWYoKGx8MCk9PTc4PyFvOjApe2NbYT4+Ml09bjtpPW07cmV0dXJufWNbZz4+Ml09Y1tnPj4yXXwyO2NbYT4+Ml09bjtpPW07cmV0dXJufXk9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIGRqKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGVqKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBmaihhKXthPWF8MDtyZXR1cm4gMn1mdW5jdGlvbiBnaihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wO2o9aTtjaihhLGIsY1tkPj4yXXwwLGNbZT4+Ml18MCxmLGcsaCwxMjUyOCwxMjU2MHwwKTtpPWo7cmV0dXJufWZ1bmN0aW9uIGhqKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTA7az1pO209ZCs4fDA7bT1vY1tjWyhjW20+PjJdfDApKzIwPj4yXSYxMjddKG0pfDA7bj1hW20+PjBdfDA7aWYoKG4mMSk9PTApe2w9bSs0fDA7bT0obiYyNTUpPj4+MX1lbHNle2w9Y1ttKzg+PjJdfDA7bT1jW20rND4+Ml18MH1jaihiLGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaixsLGwrKG08PDIpfDApO2k9aztyZXR1cm59ZnVuY3Rpb24gaWooYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MDtqPWk7aT1pKzE2fDA7bD1qO2Y9Y1tmKzI4Pj4yXXwwO209Zis0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tsPj4yXT0xMzQ0ODtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEzNDQ4LGwpfWw9KGNbMTM0NTI+PjJdfDApKyAtMXwwO209Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7bD1mKzR8MDttPWNbbD4+Ml18MDtjW2w+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9bT1jW2U+PjJdfDA7Yj1iKzh8MDtiPW9jW2NbY1tiPj4yXT4+Ml0mMTI3XShiKXwwO2I9KGFpKGQsbSxiLGIrMTY4fDAsayxnLDApfDApLWJ8MDtpZigoYnwwKT49MTY4KXttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1jW2grMjQ+PjJdPSgoYnwwKS8xMnwwfDApJTd8MDttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBqaihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wO2o9aTtpPWkrMTZ8MDtsPWo7Zj1jW2YrMjg+PjJdfDA7bT1mKzR8MDtjW20+PjJdPShjW20+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW2w+PjJdPTEzNDQ4O2NbbCs0Pj4yXT0yMDg7Y1tsKzg+PjJdPTA7Y2coMTM0NDgsbCl9bD0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7bT1jW2YrOD4+Ml18MDtpZigoY1tmKzEyPj4yXXwwKS1tPj4yPj4+MD5sPj4+MD8oaz1jW20rKGw8PDIpPj4yXXwwLChrfDApIT0wKTowKXtsPWYrNHwwO209Y1tsPj4yXXwwO2NbbD4+Ml09bSsgLTE7aWYoKG18MCk9PTApe2xjW2NbKGNbZj4+Ml18MCkrOD4+Ml0mMjU1XShmKX1tPWNbZT4+Ml18MDtiPWIrOHwwO2I9b2NbY1soY1tiPj4yXXwwKSs0Pj4yXSYxMjddKGIpfDA7Yj0oYWkoZCxtLGIsYisyODh8MCxrLGcsMCl8MCktYnwwO2lmKChifDApPj0yODgpe209Y1tkPj4yXXwwO2NbYT4+Ml09bTtpPWo7cmV0dXJufWNbaCsxNj4+Ml09KChifDApLzEyfDB8MCklMTJ8MDttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBraihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTA7Yj1pO2k9aSsxNnwwO2s9YjtmPWNbZisyOD4+Ml18MDtsPWYrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1rPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtsPWNbZis4Pj4yXXwwO2lmKChjW2YrMTI+PjJdfDApLWw+PjI+Pj4wPms+Pj4wPyhqPWNbbCsoazw8Mik+PjJdfDAsKGp8MCkhPTApOjApe2s9Zis0fDA7bD1jW2s+PjJdfDA7Y1trPj4yXT1sKyAtMTtpZigobHwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfWU9bWooZCxjW2U+PjJdfDAsZyxqLDQpfDA7aWYoKGNbZz4+Ml0mNHwwKSE9MCl7bD1jW2Q+PjJdfDA7Y1thPj4yXT1sO2k9YjtyZXR1cm59aWYoKGV8MCk8Njkpe2c9ZSsyZTN8MH1lbHNle2c9KGUrIC02OXwwKT4+PjA8MzE/ZSsxOTAwfDA6ZX1jW2grMjA+PjJdPWcrIC0xOTAwO2w9Y1tkPj4yXXwwO2NbYT4+Ml09bDtpPWI7cmV0dXJufWw9WGEoNCl8MDtjW2w+PjJdPTIxMzA0O3diKGx8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIGxqKGIsZCxlLGYsZyxoLGosayxsKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtsPWk7aT1pKzY0fDA7eT1sO3g9bCsxNnwwO3A9bCsyOHwwO3Y9bCsyNHwwO3c9bCszMnwwO0M9bCsxMnwwO3I9bCsyMHwwO3M9bCszNnwwO3Q9bCs0MHwwO3o9bCs0NHwwO3E9bCs0OHwwO2NbaD4+Ml09MDt1PWNbZysyOD4+Ml18MDtCPXUrNHwwO2NbQj4+Ml09KGNbQj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbeT4+Ml09MTM0NDg7Y1t5KzQ+PjJdPTIwODtjW3krOD4+Ml09MDtjZygxMzQ0OCx5KX1BPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtCPWNbdSs4Pj4yXXwwO2lmKChjW3UrMTI+PjJdfDApLUI+PjI+Pj4wPkE+Pj4wPyhuPWNbQisoQTw8Mik+PjJdfDAsKG58MCkhPTApOjApe0E9dSs0fDA7Qj1jW0E+PjJdfDA7Y1tBPj4yXT1CKyAtMTtpZigoQnwwKT09MCl7bGNbY1soY1t1Pj4yXXwwKSs4Pj4yXSYyNTVdKHUpfWE6ZG97c3dpdGNoKGs8PDI0Pj4yNHwwKXtjYXNlIDgzOntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8NjEpe2Nbaj4+Ml09bjticmVhayBhfWVsc2V7Y1toPj4yXT1tfDQ7YnJlYWsgYX19O2Nhc2UgODQ6e2NqKHMsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLDEyNjk2LDEyNzI4fDApO2NbZT4+Ml09Y1tzPj4yXTticmVha307Y2FzZSA4Mjp7Y2oocixkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosMTI2NzIsMTI2OTJ8MCk7Y1tlPj4yXT1jW3I+PjJdO2JyZWFrfTtjYXNlIDExMjp7bT1qKzh8MDtqPWNbZj4+Ml18MDtmPWQrOHwwO2Y9b2NbY1soY1tmPj4yXXwwKSs4Pj4yXSYxMjddKGYpfDA7ZD1hW2Y+PjBdfDA7aWYoKGQmMSk9PTApe2Q9KGQmMjU1KT4+PjF9ZWxzZXtkPWNbZis0Pj4yXXwwfWc9YVtmKzEyPj4wXXwwO2lmKChnJjEpPT0wKXtnPShnJjI1NSk+Pj4xfWVsc2V7Zz1jW2YrMTY+PjJdfDB9aWYoKGR8MCk9PSgwLWd8MCkpe2NbaD4+Ml09Y1toPj4yXXw0O2JyZWFrIGF9Qz1haShlLGosZixmKzI0fDAsbixoLDApfDA7aD1DLWZ8MDtpZigoQ3wwKT09KGZ8MCk/KGNbbT4+Ml18MCk9PTEyOjApe2NbbT4+Ml09MDticmVhayBhfWlmKChofDApPT0xMj8obz1jW20+PjJdfDAsKG98MCk8MTIpOjApe2NbbT4+Ml09bysxMn1icmVha307Y2FzZSAxMTQ6e2NqKEMsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLDEyNjI0LDEyNjY4fDApO2NbZT4+Ml09Y1tDPj4yXTticmVha307Y2FzZSAxMjA6e0M9Y1soY1tkPj4yXXwwKSsyMD4+Ml18MDtjW3Q+PjJdPWNbZT4+Ml07Y1t6Pj4yXT1jW2Y+PjJdO2NbeCswPj4yXT1jW3QrMD4+Ml07Y1t5KzA+PjJdPWNbeiswPj4yXTtpY1tDJjYzXShiLGQseCx5LGcsaCxqKTtpPWw7cmV0dXJufTtjYXNlIDg4OntvPWQrOHwwO289b2NbY1soY1tvPj4yXXwwKSsyND4+Ml0mMTI3XShvKXwwO249YVtvPj4wXXwwO2lmKChuJjEpPT0wKXttPW8rNHwwO249KG4mMjU1KT4+PjF9ZWxzZXttPWNbbys4Pj4yXXwwO249Y1tvKzQ+PjJdfDB9Y2oocSxkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosbSxtKyhuPDwyKXwwKTtjW2U+PjJdPWNbcT4+Ml07YnJlYWt9O2Nhc2UgMTE5OntuPW1qKGUsY1tmPj4yXXwwLGgsbiwxKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8Nyl7Y1tqKzI0Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMjE6e209aisyMHwwO249bWooZSxjW2Y+PjJdfDAsaCxuLDQpfDA7aWYoKGNbaD4+Ml0mNHwwKT09MCl7aWYoKG58MCk8Njkpe2g9bisyZTN8MH1lbHNle2g9KG4rIC02OXwwKT4+PjA8MzE/bisxOTAwfDA6bn1jW20+PjJdPWgrIC0xOTAwfWJyZWFrfTtjYXNlIDg5OnttPW1qKGUsY1tmPj4yXXwwLGgsbiw0KXwwO2lmKChjW2g+PjJdJjR8MCk9PTApe2NbaisyMD4+Ml09bSsgLTE5MDB9YnJlYWt9O2Nhc2UgMzc6e2o9Y1tmPj4yXXwwO2Y9Y1tlPj4yXXwwO2Rve2lmKChmfDApIT0wKXtkPWNbZisxMj4+Ml18MDtpZigoZHwwKT09KGNbZisxNj4+Ml18MCkpe2Y9b2NbY1soY1tmPj4yXXwwKSszNj4+Ml0mMTI3XShmKXwwfWVsc2V7Zj1jW2Q+PjJdfDB9aWYoKGZ8MCk9PS0xKXtjW2U+PjJdPTA7Zj0xO2JyZWFrfWVsc2V7Zj0oY1tlPj4yXXwwKT09MDticmVha319ZWxzZXtmPTF9fXdoaWxlKDApO2lmKChqfDApIT0wKXtkPWNbaisxMj4+Ml18MDtpZigoZHwwKT09KGNbaisxNj4+Ml18MCkpe2Q9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7ZD1jW2Q+PjJdfDB9aWYoISgoZHwwKT09LTEpKXtpZighZil7bT0xMjZ9fWVsc2V7bT0xMjR9fWVsc2V7bT0xMjR9aWYoKG18MCk9PTEyNCl7aWYoZil7bT0xMjZ9ZWxzZXtqPTB9fWlmKChtfDApPT0xMjYpe2NbaD4+Ml09Y1toPj4yXXw2O2JyZWFrIGF9ZD1jW2U+PjJdfDA7Zj1jW2QrMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2QrMTY+PjJdfDApKXtmPW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle2Y9Y1tmPj4yXXwwfWlmKCEoKGhjW2NbKGNbbj4+Ml18MCkrNTI+PjJdJjYzXShuLGYsMCl8MCk8PDI0Pj4yND09MzcpKXtjW2g+PjJdPWNbaD4+Ml18NDticmVhayBhfWQ9Y1tlPj4yXXwwO2Y9ZCsxMnwwO249Y1tmPj4yXXwwO2lmKChufDApPT0oY1tkKzE2Pj4yXXwwKSl7b2NbY1soY1tkPj4yXXwwKSs0MD4+Ml0mMTI3XShkKXwwfWVsc2V7Y1tmPj4yXT1uKzR9bj1jW2U+PjJdfDA7ZG97aWYoKG58MCkhPTApe2Y9Y1tuKzEyPj4yXXwwO2lmKChmfDApPT0oY1tuKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXtuPWNbZj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtuPTE7YnJlYWt9ZWxzZXtuPShjW2U+PjJdfDApPT0wO2JyZWFrfX1lbHNle249MX19d2hpbGUoMCk7aWYoKGp8MCkhPTApe2Y9Y1tqKzEyPj4yXXwwO2lmKChmfDApPT0oY1tqKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtqPWNbZj4+Ml18MH1pZighKChqfDApPT0tMSkpe2lmKG4pe2JyZWFrIGF9fWVsc2V7bT0xNDd9fWVsc2V7bT0xNDd9aWYoKG18MCk9PTE0Nz8hbjowKXticmVhayBhfWNbaD4+Ml09Y1toPj4yXXwyO2JyZWFrfTtjYXNlIDEwOTp7bj1taihlLGNbZj4+Ml18MCxoLG4sMil8MDttPWNbaD4+Ml18MDtpZigobSY0fDApPT0wJihufDApPDEzKXtjW2orMTY+PjJdPW4rIC0xO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSA3MDp7Y2oodyxkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosMTI1OTIsMTI2MjR8MCk7Y1tlPj4yXT1jW3c+PjJdO2JyZWFrfTtjYXNlIDY4Ontjaih2LGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaiwxMjU2MCwxMjU5MnwwKTtjW2U+PjJdPWNbdj4+Ml07YnJlYWt9O2Nhc2UgMTA0OmNhc2UgNjY6Y2FzZSA5ODp7Qj1jW2Y+PjJdfDA7Qz1kKzh8MDtDPW9jW2NbKGNbQz4+Ml18MCkrND4+Ml0mMTI3XShDKXwwO2g9KGFpKGUsQixDLEMrMjg4fDAsbixoLDApfDApLUN8MDtpZigoaHwwKTwyODgpe2NbaisxNj4+Ml09KChofDApLzEyfDB8MCklMTJ8MH1icmVha307Y2FzZSAxMTY6Y2FzZSAxMTA6e2o9Y1tmPj4yXXwwO3doaWxlKDEpe2Q9Y1tlPj4yXXwwO2Rve2lmKChkfDApIT0wKXtmPWNbZCsxMj4+Ml18MDtpZigoZnwwKT09KGNbZCsxNj4+Ml18MCkpe2Y9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7Zj1jW2Y+PjJdfDB9aWYoKGZ8MCk9PS0xKXtjW2U+PjJdPTA7Zj0xO2JyZWFrfWVsc2V7Zj0oY1tlPj4yXXwwKT09MDticmVha319ZWxzZXtmPTF9fXdoaWxlKDApO2lmKChqfDApIT0wKXtkPWNbaisxMj4+Ml18MDtpZigoZHwwKT09KGNbaisxNj4+Ml18MCkpe2Q9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7ZD1jW2Q+PjJdfDB9aWYoISgoZHwwKT09LTEpKXtpZighZil7YnJlYWt9fWVsc2V7bT01M319ZWxzZXttPTUzfWlmKChtfDApPT01Myl7bT0wO2lmKGYpe2o9MDticmVha31lbHNle2o9MH19ZD1jW2U+PjJdfDA7Zj1jW2QrMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2QrMTY+PjJdfDApKXtmPW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle2Y9Y1tmPj4yXXwwfWlmKCEoaGNbY1soY1tuPj4yXXwwKSsxMj4+Ml0mNjNdKG4sODE5MixmKXwwKSl7YnJlYWt9bz1jW2U+PjJdfDA7ZD1vKzEyfDA7Zj1jW2Q+PjJdfDA7aWYoKGZ8MCk9PShjW28rMTY+PjJdfDApKXtvY1tjWyhjW28+PjJdfDApKzQwPj4yXSYxMjddKG8pfDA7Y29udGludWV9ZWxzZXtjW2Q+PjJdPWYrNDtjb250aW51ZX19Zj1jW2U+PjJdfDA7ZG97aWYoKGZ8MCkhPTApe249Y1tmKzEyPj4yXXwwO2lmKChufDApPT0oY1tmKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2Y+PjJdfDApKzM2Pj4yXSYxMjddKGYpfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtuPTE7YnJlYWt9ZWxzZXtuPShjW2U+PjJdfDApPT0wO2JyZWFrfX1lbHNle249MX19d2hpbGUoMCk7aWYoKGp8MCkhPTApe2Y9Y1tqKzEyPj4yXXwwO2lmKChmfDApPT0oY1tqKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtqPWNbZj4+Ml18MH1pZighKChqfDApPT0tMSkpe2lmKG4pe2JyZWFrIGF9fWVsc2V7bT03NH19ZWxzZXttPTc0fWlmKChtfDApPT03ND8hbjowKXticmVhayBhfWNbaD4+Ml09Y1toPj4yXXwyO2JyZWFrfTtjYXNlIDY1OmNhc2UgOTc6e0I9Y1tmPj4yXXwwO0M9ZCs4fDA7Qz1vY1tjW2NbQz4+Ml0+PjJdJjEyN10oQyl8MDtoPShhaShlLEIsQyxDKzE2OHwwLG4saCwwKXwwKS1DfDA7aWYoKGh8MCk8MTY4KXtjW2orMjQ+PjJdPSgoaHwwKS8xMnwwfDApJTd8MH1icmVha307Y2FzZSA5OTp7bz1kKzh8MDtvPW9jW2NbKGNbbz4+Ml18MCkrMTI+PjJdJjEyN10obyl8MDtuPWFbbz4+MF18MDtpZigobiYxKT09MCl7bT1vKzR8MDtuPShuJjI1NSk+Pj4xfWVsc2V7bT1jW28rOD4+Ml18MDtuPWNbbys0Pj4yXXwwfWNqKHAsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLG0sbSsobjw8Mil8MCk7Y1tlPj4yXT1jW3A+PjJdO2JyZWFrfTtjYXNlIDcyOntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8MjQpe2Nbais4Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMDE6Y2FzZSAxMDA6e209aisxMnwwO2o9bWooZSxjW2Y+PjJdfDAsaCxuLDIpfDA7bj1jW2g+PjJdfDA7aWYoKG4mNHwwKT09MD8oaisgLTF8MCk+Pj4wPDMxOjApe2NbbT4+Ml09ajticmVhayBhfWNbaD4+Ml09bnw0O2JyZWFrfTtjYXNlIDczOnttPWorOHwwO249bWooZSxjW2Y+PjJdfDAsaCxuLDIpfDA7aj1jW2g+PjJdfDA7aWYoKGomNHwwKT09MD8obisgLTF8MCk+Pj4wPDEyOjApe2NbbT4+Ml09bjticmVhayBhfWNbaD4+Ml09anw0O2JyZWFrfTtjYXNlIDc3OntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8NjApe2Nbais0Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMDY6e249bWooZSxjW2Y+PjJdfDAsaCxuLDMpfDA7bT1jW2g+PjJdfDA7aWYoKG0mNHwwKT09MCYobnwwKTwzNjYpe2NbaisyOD4+Ml09bjticmVhayBhfWVsc2V7Y1toPj4yXT1tfDQ7YnJlYWsgYX19O2RlZmF1bHQ6e2NbaD4+Ml09Y1toPj4yXXw0fX19d2hpbGUoMCk7Y1tiPj4yXT1jW2U+PjJdO2k9bDtyZXR1cm59Qz1YYSg0KXwwO2NbQz4+Ml09MjEzMDQ7d2IoQ3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gbWooYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtrPWNbYT4+Ml18MDtkb3tpZigoa3wwKSE9MCl7aj1jW2srMTI+PjJdfDA7aWYoKGp8MCk9PShjW2srMTY+PjJdfDApKXtqPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2o9Y1tqPj4yXXwwfWlmKChqfDApPT0tMSl7Y1thPj4yXT0wO2o9MTticmVha31lbHNle2o9KGNbYT4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7aj0xfX13aGlsZSgwKTtpZigoYnwwKSE9MCl7az1jW2IrMTI+PjJdfDA7aWYoKGt8MCk9PShjW2IrMTY+PjJdfDApKXtrPW9jW2NbKGNbYj4+Ml18MCkrMzY+PjJdJjEyN10oYil8MH1lbHNle2s9Y1trPj4yXXwwfWlmKCEoKGt8MCk9PS0xKSl7aWYoIWope2c9MTV9fWVsc2V7Zz0xM319ZWxzZXtnPTEzfWlmKChnfDApPT0xMyl7aWYoail7Zz0xNX1lbHNle2I9MH19aWYoKGd8MCk9PTE1KXtjW2Q+PjJdPWNbZD4+Ml18NjtuPTA7aT1oO3JldHVybiBufDB9aj1jW2E+PjJdfDA7az1jW2orMTI+PjJdfDA7aWYoKGt8MCk9PShjW2orMTY+PjJdfDApKXtqPW9jW2NbKGNbaj4+Ml18MCkrMzY+PjJdJjEyN10oail8MH1lbHNle2o9Y1trPj4yXXwwfWlmKCEoaGNbY1soY1tlPj4yXXwwKSsxMj4+Ml0mNjNdKGUsMjA0OCxqKXwwKSl7Y1tkPj4yXT1jW2Q+PjJdfDQ7bj0wO2k9aDtyZXR1cm4gbnwwfWo9KGhjW2NbKGNbZT4+Ml18MCkrNTI+PjJdJjYzXShlLGosMCl8MCk8PDI0Pj4yNDtsPWNbYT4+Ml18MDtrPWwrMTJ8MDttPWNbaz4+Ml18MDtpZigobXwwKT09KGNbbCsxNj4+Ml18MCkpe29jW2NbKGNbbD4+Ml18MCkrNDA+PjJdJjEyN10obCl8MDtrPWI7bD1iO2I9an1lbHNle2Nbaz4+Ml09bSs0O2s9YjtsPWI7Yj1qfXdoaWxlKDEpe2I9YisgLTQ4fDA7Zj1mKyAtMXwwO2o9Y1thPj4yXXwwO2Rve2lmKChqfDApIT0wKXttPWNbaisxMj4+Ml18MDtpZigobXwwKT09KGNbaisxNj4+Ml18MCkpe2o9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7aj1jW20+PjJdfDB9aWYoKGp8MCk9PS0xKXtjW2E+PjJdPTA7bT0xO2JyZWFrfWVsc2V7bT0oY1thPj4yXXwwKT09MDticmVha319ZWxzZXttPTF9fXdoaWxlKDApO2lmKChsfDApPT0wKXtqPWs7bD0wO249MX1lbHNle2o9Y1tsKzEyPj4yXXwwO2lmKChqfDApPT0oY1tsKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2w+PjJdfDApKzM2Pj4yXSYxMjddKGwpfDB9ZWxzZXtqPWNbaj4+Ml18MH1uPShqfDApPT0tMTtqPW4/MDprO2w9bj8wOms7bj1uPzE6KGt8MCk9PTB9az1jW2E+PjJdfDA7aWYoISgobV5uKSYoZnwwKT4wKSl7YnJlYWt9bT1jW2srMTI+PjJdfDA7aWYoKG18MCk9PShjW2srMTY+PjJdfDApKXtrPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2s9Y1ttPj4yXXwwfWlmKCEoaGNbY1soY1tlPj4yXXwwKSsxMj4+Ml0mNjNdKGUsMjA0OCxrKXwwKSl7Zz01OTticmVha31iPSgoaGNbY1soY1tlPj4yXXwwKSs1Mj4+Ml0mNjNdKGUsaywwKXwwKTw8MjQ+PjI0KSsoYioxMHwwKXwwO209Y1thPj4yXXwwO249bSsxMnwwO2s9Y1tuPj4yXXwwO2lmKChrfDApPT0oY1ttKzE2Pj4yXXwwKSl7b2NbY1soY1ttPj4yXXwwKSs0MD4+Ml0mMTI3XShtKXwwO2s9ajtjb250aW51ZX1lbHNle2Nbbj4+Ml09ays0O2s9ajtjb250aW51ZX19aWYoKGd8MCk9PTU5KXtpPWg7cmV0dXJuIGJ8MH1kb3tpZigoa3wwKSE9MCl7ZT1jW2srMTI+PjJdfDA7aWYoKGV8MCk9PShjW2srMTY+PjJdfDApKXtlPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2U9Y1tlPj4yXXwwfWlmKChlfDApPT0tMSl7Y1thPj4yXT0wO2E9MTticmVha31lbHNle2E9KGNbYT4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7YT0xfX13aGlsZSgwKTtpZigoanwwKSE9MCl7ZT1jW2orMTI+PjJdfDA7aWYoKGV8MCk9PShjW2orMTY+PjJdfDApKXtlPW9jW2NbKGNbaj4+Ml18MCkrMzY+PjJdJjEyN10oail8MH1lbHNle2U9Y1tlPj4yXXwwfWlmKCEoKGV8MCk9PS0xKSl7aWYoYSl7bj1iO2k9aDtyZXR1cm4gbnwwfX1lbHNle2c9NTZ9fWVsc2V7Zz01Nn1pZigoZ3wwKT09NTY/IWE6MCl7bj1iO2k9aDtyZXR1cm4gbnwwfWNbZD4+Ml09Y1tkPj4yXXwyO249YjtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBuaihiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2U9Yis4fDA7Zj1jW2U+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChmfDApIT0oY1szMzQwXXwwKSl7VmIoY1tlPj4yXXwwKX1pZigoYnwwKT09MCl7aT1kO3JldHVybn12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIG9qKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtiPWIrOHwwO2U9Y1tiPj4yXXwwO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1pZigoZXwwKT09KGNbMzM0MF18MCkpe2k9ZDtyZXR1cm59VmIoY1tiPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIHBqKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wO2Y9aTtpPWkrMTEyfDA7bj1mKzEwMHwwO2c9ZjthW24+PjBdPTM3O2w9bisxfDA7YVtsPj4wXT1qO209bisyfDA7YVttPj4wXT1rO2FbbiszPj4wXT0wO2lmKCEoazw8MjQ+PjI0PT0wKSl7YVtsPj4wXT1rO2FbbT4+MF09an1uPWViKGd8MCwxMDAsbnwwLGh8MCxjW2QrOD4+Ml18MCl8MDtoPWcrbnwwO2Q9Y1tlPj4yXXwwO2lmKChufDApPT0wKXtuPWQ7Y1tiPj4yXT1uO2k9ZjtyZXR1cm59ZWxzZXtlPWQ7bD1kfWRve2o9YVtnPj4wXXwwO2Rve2lmKChlfDApIT0wKXtrPWUrMjR8MDtkPWNbaz4+Ml18MDtpZigoZHwwKT09KGNbZSsyOD4+Ml18MCkpe249KHhjW2NbKGNbZT4+Ml18MCkrNTI+PjJdJjYzXShlLGomMjU1KXwwKT09LTE7bD1uPzA6bDtlPW4/MDplO2JyZWFrfWVsc2V7Y1trPj4yXT1kKzE7YVtkPj4wXT1qO2JyZWFrfX1lbHNle2U9MH19d2hpbGUoMCk7Zz1nKzF8MH13aGlsZSgoZ3wwKSE9KGh8MCkpO2NbYj4+Ml09bDtpPWY7cmV0dXJufWZ1bmN0aW9uIHFqKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7ZT1iKzh8MDtmPWNbZT4+Ml18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9aWYoKGZ8MCkhPShjWzMzNDBdfDApKXtWYihjW2U+PjJdfDApfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gcmooYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2I9Yis4fDA7ZT1jW2I+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChlfDApPT0oY1szMzQwXXwwKSl7aT1kO3JldHVybn1WYihjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gc2ooYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7Zj1pO2k9aSs1Mjh8MDtvPWYrNTEyfDA7cD1mKzQxMnwwO209ZjtsPWYrNDA4fDA7Zz1mKzh8MDthW28+PjBdPTM3O249bysxfDA7YVtuPj4wXT1qO3E9bysyfDA7YVtxPj4wXT1rO2FbbyszPj4wXT0wO2lmKCEoazw8MjQ+PjI0PT0wKSl7YVtuPj4wXT1rO2FbcT4+MF09an1qPWQrOHwwO2ViKHB8MCwxMDAsb3wwLGh8MCxjW2o+PjJdfDApfDA7az1tO2Nbaz4+Ml09MDtjW2srND4+Ml09MDtjW2w+PjJdPXA7aj1pYihjW2o+PjJdfDApfDA7az1WbShnLGwsMTAwLG0pfDA7aWYoKGp8MCkhPTApe2liKGp8MCl8MH1pZigoa3wwKT09LTEpe29rKDE0Mjk2KX1qPWcrKGs8PDIpfDA7ZD1jW2U+PjJdfDA7aWYoKGt8MCk9PTApe3E9ZDtjW2I+PjJdPXE7aT1mO3JldHVybn1lbHNle2U9ZDtrPWR9ZG97ZD1jW2c+PjJdfDA7aWYoKGV8MCk9PTApe2U9MH1lbHNle2g9ZSsyNHwwO2w9Y1toPj4yXXwwO2lmKChsfDApPT0oY1tlKzI4Pj4yXXwwKSl7ZD14Y1tjWyhjW2U+PjJdfDApKzUyPj4yXSY2M10oZSxkKXwwfWVsc2V7Y1toPj4yXT1sKzQ7Y1tsPj4yXT1kfXE9KGR8MCk9PS0xO2s9cT8wOms7ZT1xPzA6ZX1nPWcrNHwwfXdoaWxlKChnfDApIT0oanwwKSk7Y1tiPj4yXT1rO2k9ZjtyZXR1cm59ZnVuY3Rpb24gdGooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gdWooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHZqKGEpe2E9YXwwO3JldHVybiAxMjd9ZnVuY3Rpb24gd2ooYSl7YT1hfDA7cmV0dXJuIDEyN31mdW5jdGlvbiB4aihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIHlqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gemooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBBaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09MjthW2IrMT4+MF09NDU7YVtiKzI+PjBdPTA7cmV0dXJufWZ1bmN0aW9uIEJqKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIENqKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBEaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gRWooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRmooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEdqKGEpe2E9YXwwO3JldHVybiAxMjd9ZnVuY3Rpb24gSGooYSl7YT1hfDA7cmV0dXJuIDEyN31mdW5jdGlvbiBJaihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIEpqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gS2ooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBMaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09MjthW2IrMT4+MF09NDU7YVtiKzI+PjBdPTA7cmV0dXJufWZ1bmN0aW9uIE1qKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIE5qKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBPaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gUGooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gUWooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFJqKGEpe2E9YXwwO3JldHVybiAyMTQ3NDgzNjQ3fWZ1bmN0aW9uIFNqKGEpe2E9YXwwO3JldHVybiAyMTQ3NDgzNjQ3fWZ1bmN0aW9uIFRqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gVWooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBWaihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIFdqKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZD1pO2FbYj4+MF09MjtiPWIrNHwwO2Y9MTtlPWI7d2hpbGUoMSl7Zj1mKyAtMXwwO2NbZT4+Ml09NDU7aWYoKGZ8MCk9PTApe2JyZWFrfWVsc2V7ZT1lKzR8MH19Y1tiKzQ+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBYaihhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBZaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gWmooYixjKXtiPWJ8MDtjPWN8MDthW2I+PjBdPTY3MTA5NjM0O2FbYisxPj4wXT0yNjIxNDc7YVtiKzI+PjBdPTEwMjQ7YVtiKzM+PjBdPTQ7cmV0dXJufWZ1bmN0aW9uIF9qKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uICRqKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBhayhhKXthPWF8MDtyZXR1cm4gMjE0NzQ4MzY0N31mdW5jdGlvbiBiayhhKXthPWF8MDtyZXR1cm4gMjE0NzQ4MzY0N31mdW5jdGlvbiBjayhhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIGRrKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gZWsoYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBmayhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2Q9aTthW2I+PjBdPTI7Yj1iKzR8MDtmPTE7ZT1iO3doaWxlKDEpe2Y9ZisgLTF8MDtjW2U+PjJdPTQ1O2lmKChmfDApPT0wKXticmVha31lbHNle2U9ZSs0fDB9fWNbYis0Pj4yXT0wO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ2soYSl7YT1hfDA7cmV0dXJuIDB9ZnVuY3Rpb24gaGsoYixjKXtiPWJ8MDtjPWN8MDthW2I+PjBdPTY3MTA5NjM0O2FbYisxPj4wXT0yNjIxNDc7YVtiKzI+PjBdPTEwMjQ7YVtiKzM+PjBdPTQ7cmV0dXJufWZ1bmN0aW9uIGlrKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBqayhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBrayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gbGsoYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO249aTtpPWkrMjQwfDA7cD1uO3g9bisxNDB8MDtkPW4rMTZ8MDtyPW4rMjR8MDt1PW4rMTM4fDA7cz1uKzEyOHwwO3E9bisyOHwwO2NbZD4+Ml09eDttPWQrNHwwO2NbbT4+Ml09MjEzO3g9eCsxMDB8MDtvPWNbaCsyOD4+Ml18MDt3PW8rNHwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbcD4+Ml09MTM0NTY7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ1NixwKX13PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt2PWNbbys4Pj4yXXwwO2lmKChjW28rMTI+PjJdfDApLXY+PjI+Pj4wPnc+Pj4wPyh0PWNbdisodzw8Mik+PjJdfDAsKHR8MCkhPTApOjApe2FbdT4+MF09MDtkb3tpZihuayhlLGNbZj4+Ml18MCxnLG8sY1toKzQ+PjJdfDAsaix1LHQsZCxyLHgpfDApe3VjW2NbKGNbdD4+Ml18MCkrMzI+PjJdJjMxXSh0LDEzMDg4LDEzMDk4fDAscyl8MDtnPWNbcj4+Ml18MDtoPWNbZD4+Ml18MDt0PWctaHwwO2lmKCh0fDApPjk4KXt2PXVuKHQrMnwwKXwwO2lmKCh2fDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3Q9dn19ZWxzZXt0PTA7dj1xfWlmKChhW3U+PjBdfDApIT0wKXthW3Y+PjBdPTQ1O3Y9disxfDB9aWYoaD4+PjA8Zz4+PjApe3U9cysxMHwwO2c9cztkb3t3PWFbaD4+MF18MDt4PXM7d2hpbGUoMSl7aWYoKGFbeD4+MF18MCk9PXc8PDI0Pj4yNCl7YnJlYWt9eD14KzF8MDtpZigoeHwwKT09KHV8MCkpe3g9dTticmVha319YVt2Pj4wXT1hWzEzMDg4Kyh4LWcpPj4wXXwwO2g9aCsxfDA7dj12KzF8MH13aGlsZShoPj4+MDwoY1tyPj4yXXwwKT4+PjApfWFbdj4+MF09MDtjW3A+PjJdPWs7aWYoKEZhKHF8MCwxMzEwNCxwfDApfDApPT0xKXtpZigodHwwKT09MCl7YnJlYWt9dm4odCk7YnJlYWt9Zj1YYSg4KXwwO2NbZj4+Ml09OTkyODt3aGlsZSgxKXtqPXVuKDI4KXwwO2lmKChqfDApIT0wKXtsPTI5O2JyZWFrfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXtsPTI3O2JyZWFrfXNjW2wmMzFdKCl9aWYoKGx8MCk9PTI3KXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNlIGlmKChsfDApPT0yOSl7Y1tqKzQ+PjJdPTE1O2Nbaj4+Ml09MTU7bD1qKzEyfDA7Y1tmKzQ+PjJdPWw7Y1tqKzg+PjJdPTA7aj1sKzB8MDtsPTEzMTEyfDA7Yj1qKzE2fDA7ZG97YVtqPj4wXT1hW2w+PjBdfDA7aj1qKzF8MDtsPWwrMXwwfXdoaWxlKChqfDApPChifDApKTt3YihmfDAsMTAwNjQsMTA2KX19fXdoaWxlKDApO3A9Y1tlPj4yXXwwO2lmKChwfDApIT0wKXtpZigoY1twKzEyPj4yXXwwKT09KGNbcCsxNj4+Ml18MCk/KG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xOjApe2NbZT4+Ml09MDtwPTB9fWVsc2V7cD0wfWs9KHB8MCk9PTA7ZT1jW2Y+PjJdfDA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApIT0oY1tlKzE2Pj4yXXwwKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTQ2O2JyZWFrfX1pZighKChvY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDApPT0tMSkpe2lmKGspe2JyZWFrfWVsc2V7bD00NjticmVha319ZWxzZXtjW2Y+PjJdPTA7bD00NDticmVha319ZWxzZXtsPTQ0fX13aGlsZSgwKTtpZigobHwwKT09NDQ/azowKXtsPTQ2fWlmKChsfDApPT00Nil7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1wO3c9bys0fDA7eD1jW3c+PjJdfDA7Y1t3Pj4yXT14KyAtMTtpZigoeHwwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfWw9Y1tkPj4yXXwwO2NbZD4+Ml09MDtpZigobHwwKT09MCl7aT1uO3JldHVybn1sY1tjW20+PjJdJjI1NV0obCk7aT1uO3JldHVybn14PVhhKDQpfDA7Y1t4Pj4yXT0yMTMwNDt3Yih4fDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBtayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gbmsoZSxmLGcsaCxqLGssbCxtLG4sbyxwKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDtwPXB8MDt2YXIgcT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MDt1PWk7aT1pKzU5MnwwO1E9dTtPPXUrMTEyfDA7Rz11KzEyfDA7TT11KzEwMHwwO0o9dSs0MHwwO0s9dSsyNHwwO0w9dSszNnwwO1A9dSs4OHwwO049dSs3NnwwO0g9dSs1MnwwO0k9dSs2NHwwO1Q9dSsxMjB8MDtGPXUrNTIwfDA7dD11KzUyNHwwO3k9dSs1MzZ8MDt4PXUrNTQ4fDA7cz11KzU2MHwwO3c9dSs1NzJ8MDtCPXUrNTg0fDA7Y1tGPj4yXT0wO2NbdCswPj4yXT0wO2NbdCs0Pj4yXT0wO2NbdCs4Pj4yXT0wO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbcyswPj4yXT0wO2Nbcys0Pj4yXT0wO2Nbcys4Pj4yXT0wO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wO2Rve2lmKGcpe2lmKCEoKGNbMzIyOF18MCk9PS0xKSl7Y1tRPj4yXT0xMjkxMjtjW1ErND4+Ml09MjA4O2NbUSs4Pj4yXT0wO2NnKDEyOTEyLFEpfUg9KGNbMTI5MTY+PjJdfDApKyAtMXwwO0U9Y1toKzg+PjJdfDA7aWYoKGNbaCsxMj4+Ml18MCktRT4+Mj4+PjA+SD4+PjA/KEQ9Y1tFKyhIPDwyKT4+Ml18MCwoRHwwKSE9MCk6MCl7bWNbY1soY1tEPj4yXXwwKSs0ND4+Ml0mMTI3XShPLEQpO2NbRj4+Ml09Y1tPPj4yXTttY1tjWyhjW0Q+PjJdfDApKzMyPj4yXSYxMjddKEcsRCk7aWYoKGFbcz4+MF0mMSk9PTApe2FbcysxPj4wXT0wO2Fbcz4+MF09MH1lbHNle2FbY1tzKzg+PjJdPj4wXT0wO2Nbcys0Pj4yXT0wfWlnKHMpO2NbcyswPj4yXT1jW0crMD4+Ml07Y1tzKzQ+PjJdPWNbRys0Pj4yXTtjW3MrOD4+Ml09Y1tHKzg+PjJdO2NbRyswPj4yXT0wO2NbRys0Pj4yXT0wO2NbRys4Pj4yXT0wO21jW2NbKGNbRD4+Ml18MCkrMjg+PjJdJjEyN10oTSxEKTtpZigoYVt4Pj4wXSYxKT09MCl7YVt4KzE+PjBdPTA7YVt4Pj4wXT0wfWVsc2V7YVtjW3grOD4+Ml0+PjBdPTA7Y1t4KzQ+PjJdPTB9aWcoeCk7Y1t4KzA+PjJdPWNbTSswPj4yXTtjW3grND4+Ml09Y1tNKzQ+PjJdO2NbeCs4Pj4yXT1jW00rOD4+Ml07Y1tNKzA+PjJdPTA7Y1tNKzQ+PjJdPTA7Y1tNKzg+PjJdPTA7aD1vY1tjWyhjW0Q+PjJdfDApKzEyPj4yXSYxMjddKEQpfDA7Rz1vY1tjWyhjW0Q+PjJdfDApKzE2Pj4yXSYxMjddKEQpfDA7bWNbY1soY1tEPj4yXXwwKSsyMD4+Ml0mMTI3XShKLEQpO2lmKChhW3Q+PjBdJjEpPT0wKXthW3QrMT4+MF09MDthW3Q+PjBdPTB9ZWxzZXthW2NbdCs4Pj4yXT4+MF09MDtjW3QrND4+Ml09MH1pZyh0KTtjW3QrMD4+Ml09Y1tKKzA+PjJdO2NbdCs0Pj4yXT1jW0orND4+Ml07Y1t0Kzg+PjJdPWNbSis4Pj4yXTtjW0orMD4+Ml09MDtjW0orND4+Ml09MDtjW0orOD4+Ml09MDttY1tjWyhjW0Q+PjJdfDApKzI0Pj4yXSYxMjddKEssRCk7aWYoKGFbeT4+MF0mMSk9PTApe2FbeSsxPj4wXT0wO2FbeT4+MF09MH1lbHNle2FbY1t5Kzg+PjJdPj4wXT0wO2NbeSs0Pj4yXT0wfWlnKHkpO2NbeSswPj4yXT1jW0srMD4+Ml07Y1t5KzQ+PjJdPWNbSys0Pj4yXTtjW3krOD4+Ml09Y1tLKzg+PjJdO2NbSyswPj4yXT0wO2NbSys0Pj4yXT0wO2NbSys4Pj4yXT0wO1Y9b2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwO2JyZWFrfWVhPVhhKDQpfDA7Y1tlYT4+Ml09MjEzMDQ7d2IoZWF8MCwyMTM3NiwxOTYpfWVsc2V7aWYoISgoY1szMjEyXXwwKT09LTEpKXtjW1E+PjJdPTEyODQ4O2NbUSs0Pj4yXT0yMDg7Y1tRKzg+PjJdPTA7Y2coMTI4NDgsUSl9Rz0oY1sxMjg1Mj4+Ml18MCkrIC0xfDA7RD1jW2grOD4+Ml18MDtpZigoY1toKzEyPj4yXXwwKS1EPj4yPj4+MD5HPj4+MD8oRT1jW0QrKEc8PDIpPj4yXXwwLChFfDApIT0wKTowKXttY1tjWyhjW0U+PjJdfDApKzQ0Pj4yXSYxMjddKEwsRSk7Y1tGPj4yXT1jW0w+PjJdO21jW2NbKGNbRT4+Ml18MCkrMzI+PjJdJjEyN10oUCxFKTtpZigoYVtzPj4wXSYxKT09MCl7YVtzKzE+PjBdPTA7YVtzPj4wXT0wfWVsc2V7YVtjW3MrOD4+Ml0+PjBdPTA7Y1tzKzQ+PjJdPTB9aWcocyk7Y1tzKzA+PjJdPWNbUCswPj4yXTtjW3MrND4+Ml09Y1tQKzQ+PjJdO2Nbcys4Pj4yXT1jW1ArOD4+Ml07Y1tQKzA+PjJdPTA7Y1tQKzQ+PjJdPTA7Y1tQKzg+PjJdPTA7bWNbY1soY1tFPj4yXXwwKSsyOD4+Ml0mMTI3XShOLEUpO2lmKChhW3g+PjBdJjEpPT0wKXthW3grMT4+MF09MDthW3g+PjBdPTB9ZWxzZXthW2NbeCs4Pj4yXT4+MF09MDtjW3grND4+Ml09MH1pZyh4KTtjW3grMD4+Ml09Y1tOKzA+PjJdO2NbeCs0Pj4yXT1jW04rND4+Ml07Y1t4Kzg+PjJdPWNbTis4Pj4yXTtjW04rMD4+Ml09MDtjW04rND4+Ml09MDtjW04rOD4+Ml09MDtoPW9jW2NbKGNbRT4+Ml18MCkrMTI+PjJdJjEyN10oRSl8MDtHPW9jW2NbKGNbRT4+Ml18MCkrMTY+PjJdJjEyN10oRSl8MDttY1tjWyhjW0U+PjJdfDApKzIwPj4yXSYxMjddKEgsRSk7aWYoKGFbdD4+MF0mMSk9PTApe2FbdCsxPj4wXT0wO2FbdD4+MF09MH1lbHNle2FbY1t0Kzg+PjJdPj4wXT0wO2NbdCs0Pj4yXT0wfWlnKHQpO2NbdCswPj4yXT1jW0grMD4+Ml07Y1t0KzQ+PjJdPWNbSCs0Pj4yXTtjW3QrOD4+Ml09Y1tIKzg+PjJdO2NbSCswPj4yXT0wO2NbSCs0Pj4yXT0wO2NbSCs4Pj4yXT0wO21jW2NbKGNbRT4+Ml18MCkrMjQ+PjJdJjEyN10oSSxFKTtpZigoYVt5Pj4wXSYxKT09MCl7YVt5KzE+PjBdPTA7YVt5Pj4wXT0wfWVsc2V7YVtjW3krOD4+Ml0+PjBdPTA7Y1t5KzQ+PjJdPTB9aWcoeSk7Y1t5KzA+PjJdPWNbSSswPj4yXTtjW3krND4+Ml09Y1tJKzQ+PjJdO2NbeSs4Pj4yXT1jW0krOD4+Ml07Y1tJKzA+PjJdPTA7Y1tJKzQ+PjJdPTA7Y1tJKzg+PjJdPTA7Vj1vY1tjWyhjW0U+PjJdfDApKzM2Pj4yXSYxMjddKEUpfDA7YnJlYWt9ZWE9WGEoNCl8MDtjW2VhPj4yXT0yMTMwNDt3YihlYXwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2Nbbz4+Ml09Y1tuPj4yXTtKPW0rOHwwO0k9cysxfDA7TD1zKzR8MDttPXMrOHwwO0s9eCsxfDA7SD14KzR8MDtEPXgrOHwwO009KGomNTEyfDApIT0wO1M9eSsxfDA7aj15Kzh8MDtRPXkrNHwwO2c9dysxfDA7RT13Kzh8MDtPPXcrNHwwO049RiszfDA7Uj1uKzR8MDtQPXQrNHwwO1g9VCs0MDB8MDtZPVQ7Wj1UO1U9MDtUPTA7Vz0yMTM7YTp3aGlsZSgxKXtfPWNbZT4+Ml18MDtkb3tpZigoX3wwKSE9MCl7aWYoKGNbXysxMj4+Ml18MCk9PShjW18rMTY+PjJdfDApKXtpZigob2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwKT09LTEpe2NbZT4+Ml09MDtfPTA7YnJlYWt9ZWxzZXtfPWNbZT4+Ml18MDticmVha319fWVsc2V7Xz0wfX13aGlsZSgwKTtfPShffDApPT0wO2Rve2lmKChmfDApIT0wKXtpZigoY1tmKzEyPj4yXXwwKSE9KGNbZisxNj4+Ml18MCkpe2lmKF8pe2JyZWFrfWVsc2V7Qz0zNjM7YnJlYWsgYX19aWYoISgob2NbY1soY1tmPj4yXXwwKSszNj4+Ml0mMTI3XShmKXwwKT09LTEpKXtpZighXyl7Qz0zNjM7YnJlYWsgYX19ZWxzZXtDPTc0fX1lbHNle0M9NzR9fXdoaWxlKDApO2lmKChDfDApPT03NCl7Qz0wO2lmKF8pe2Y9MDtDPTM2MzticmVha31lbHNle2Y9MH19Yjpkb3tzd2l0Y2goYVtGK1U+PjBdfDApe2Nhc2UgMjp7aWYoISgoVHwwKSE9MHxVPj4+MDwyKSl7aWYoKFV8MCk9PTIpe189KGFbTj4+MF18MCkhPTB9ZWxzZXtfPTB9aWYoIShNfF8pKXtUPTA7YnJlYWsgYn19JD1hW3k+PjBdfDA7YWE9KCQmMSk9PTA7Xz1hYT9TOmNbaj4+Ml18MDtjOmRve2lmKChVfDApIT0wPyhkW0YrKFUrIC0xKT4+MF18MCk8MjowKXtiYT1fKyhhYT8oJCYyNTUpPj4+MTpjW1E+PjJdfDApfDA7Y2E9Xzt3aGlsZSgxKXtpZigoY2F8MCk9PShiYXwwKSl7YnJlYWt9YWE9YVtjYT4+MF18MDtpZighKGFhPDwyND4+MjQ+LTEpKXtiYT1jYTticmVha31pZigoYlsoY1tKPj4yXXwwKSsoYWE8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXtiYT1jYTticmVha31lbHNle2NhPWNhKzF8MH19YWE9YmEtX3wwO2NhPWFbdz4+MF18MDtkYT0oY2EmMSk9PTA7aWYoZGEpe2VhPShjYSYyNTUpPj4+MX1lbHNle2VhPWNbTz4+Ml18MH1pZighKGFhPj4+MD5lYT4+PjApKXtpZihkYSl7ZGE9KGNhJjI1NSk+Pj4xO2NhPWc7ZWE9ZGE7ZGE9dysoZGEtYWEpKzF8MH1lbHNle2ZhPWNbRT4+Ml18MDtkYT1jW08+PjJdfDA7Y2E9ZmE7ZWE9ZGE7ZGE9ZmErKGRhLWFhKXwwfWFhPWNhK2VhfDA7aWYoKGRhfDApPT0oYWF8MCkpe2FhPWY7Xz1iYTtiYT1mfWVsc2V7Y2E9Xzt3aGlsZSgxKXtpZigoYVtkYT4+MF18MCkhPShhW2NhPj4wXXwwKSl7YWE9ZjtiYT1mO2JyZWFrIGN9ZGE9ZGErMXwwO2lmKChkYXwwKT09KGFhfDApKXthYT1mO189YmE7YmE9ZjticmVha31lbHNle2NhPWNhKzF8MH19fX1lbHNle2FhPWY7YmE9Zn19ZWxzZXthYT1mO2JhPWZ9fXdoaWxlKDApO2Q6d2hpbGUoMSl7aWYoKCQmMSk9PTApe2NhPVM7JD0oJCYyNTUpPj4+MX1lbHNle2NhPWNbaj4+Ml18MDskPWNbUT4+Ml18MH1pZigoX3wwKT09KGNhKyR8MCkpe2JyZWFrfSQ9Y1tlPj4yXXwwO2Rve2lmKCgkfDApIT0wKXtpZigoY1skKzEyPj4yXXwwKT09KGNbJCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjWyQ+PjJdfDApKzM2Pj4yXSYxMjddKCQpfDApPT0tMSl7Y1tlPj4yXT0wOyQ9MDticmVha31lbHNleyQ9Y1tlPj4yXXwwO2JyZWFrfX19ZWxzZXskPTB9fXdoaWxlKDApOyQ9KCR8MCk9PTA7ZG97aWYoKGJhfDApIT0wKXtpZigoY1tiYSsxMj4+Ml18MCkhPShjW2JhKzE2Pj4yXXwwKSl7aWYoJCl7JD1hYTticmVha31lbHNle2JyZWFrIGR9fWlmKCEoKG9jW2NbKGNbYmE+PjJdfDApKzM2Pj4yXSYxMjddKGJhKXwwKT09LTEpKXtpZigkXihhYXwwKT09MCl7JD1hYTtiYT1hYX1lbHNle2JyZWFrIGR9fWVsc2V7YWE9MDtmPTA7Qz0yMzJ9fWVsc2V7Qz0yMzJ9fXdoaWxlKDApO2lmKChDfDApPT0yMzIpe0M9MDtpZigkKXticmVha31lbHNleyQ9YWE7YmE9MH19YWE9Y1tlPj4yXXwwO2NhPWNbYWErMTI+PjJdfDA7aWYoKGNhfDApPT0oY1thYSsxNj4+Ml18MCkpe2FhPW9jW2NbKGNbYWE+PjJdfDApKzM2Pj4yXSYxMjddKGFhKXwwfWVsc2V7YWE9ZFtjYT4+MF18MH1pZighKChhYSYyNTUpPDwyND4+MjQ9PShhW18+PjBdfDApKSl7YnJlYWt9ZGE9Y1tlPj4yXXwwO2NhPWRhKzEyfDA7YWE9Y1tjYT4+Ml18MDtpZigoYWF8MCk9PShjW2RhKzE2Pj4yXXwwKSl7b2NbY1soY1tkYT4+Ml18MCkrNDA+PjJdJjEyN10oZGEpfDB9ZWxzZXtjW2NhPj4yXT1hYSsxfWFhPSQ7JD1hW3k+PjBdfDA7Xz1fKzF8MH1pZihNKXthYT1hW3k+PjBdfDA7aWYoKGFhJjEpPT0wKXskPVM7YWE9KGFhJjI1NSk+Pj4xfWVsc2V7JD1jW2o+PjJdfDA7YWE9Y1tRPj4yXXwwfWlmKChffDApIT0oJCthYXwwKSl7Qz0yNDc7YnJlYWsgYX19YnJlYWt9O2Nhc2UgMDp7Qz05NzticmVha307Y2FzZSAzOntfPWFbeD4+MF18MDthYT0oXyYxKT09MDtpZihhYSl7ZGE9KF8mMjU1KT4+PjF9ZWxzZXtkYT1jW0g+PjJdfDB9JD1hW3M+PjBdfDA7YmE9KCQmMSk9PTA7aWYoYmEpe2NhPSgkJjI1NSk+Pj4xfWVsc2V7Y2E9Y1tMPj4yXXwwfWlmKChkYXwwKSE9KDAtY2F8MCkpe2lmKGFhKXtjYT0oXyYyNTUpPj4+MX1lbHNle2NhPWNbSD4+Ml18MH1pZigoY2F8MCkhPTApe2lmKGJhKXtiYT0oJCYyNTUpPj4+MX1lbHNle2JhPWNbTD4+Ml18MH1pZigoYmF8MCkhPTApe2FhPWNbZT4+Ml18MDtiYT1jW2FhKzEyPj4yXXwwO2NhPWNbYWErMTY+PjJdfDA7aWYoKGJhfDApPT0oY2F8MCkpeyQ9b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDA7Y2E9Y1tlPj4yXXwwO189YVt4Pj4wXXwwO2FhPWNhO2JhPWNbY2ErMTI+PjJdfDA7Y2E9Y1tjYSsxNj4+Ml18MH1lbHNleyQ9ZFtiYT4+MF18MH1kYT1hYSsxMnwwO2NhPShiYXwwKT09KGNhfDApO2lmKCgkJjI1NSk8PDI0Pj4yND09KGFbKChfJjEpPT0wP0s6Y1tEPj4yXXwwKT4+MF18MCkpe2lmKGNhKXtvY1tjWyhjW2FhPj4yXXwwKSs0MD4+Ml0mMTI3XShhYSl8MH1lbHNle2NbZGE+PjJdPWJhKzF9Xz1hW3g+PjBdfDA7aWYoKF8mMSk9PTApe189KF8mMjU1KT4+PjF9ZWxzZXtfPWNbSD4+Ml18MH1UPV8+Pj4wPjE/eDpUO2JyZWFrIGJ9aWYoY2Epe189b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDB9ZWxzZXtfPWRbYmE+PjBdfDB9aWYoISgoXyYyNTUpPDwyND4+MjQ9PShhWygoYVtzPj4wXSYxKT09MD9JOmNbbT4+Ml18MCk+PjBdfDApKSl7Qz0xOTY7YnJlYWsgYX1hYT1jW2U+PjJdfDA7Xz1hYSsxMnwwOyQ9Y1tfPj4yXXwwO2lmKCgkfDApPT0oY1thYSsxNj4+Ml18MCkpe29jW2NbKGNbYWE+PjJdfDApKzQwPj4yXSYxMjddKGFhKXwwfWVsc2V7Y1tfPj4yXT0kKzF9YVtsPj4wXT0xO189YVtzPj4wXXwwO2lmKChfJjEpPT0wKXtfPShfJjI1NSk+Pj4xfWVsc2V7Xz1jW0w+PjJdfDB9VD1fPj4+MD4xP3M6VDticmVhayBifX1pZihhYSl7YWE9KF8mMjU1KT4+PjF9ZWxzZXthYT1jW0g+PjJdfDB9YmE9Y1tlPj4yXXwwO2NhPWNbYmErMTI+PjJdfDA7ZGE9KGNhfDApPT0oY1tiYSsxNj4+Ml18MCk7aWYoKGFhfDApPT0wKXtpZihkYSl7Xz1vY1tjWyhjW2JhPj4yXXwwKSszNj4+Ml0mMTI3XShiYSl8MDskPWFbcz4+MF18MH1lbHNle189ZFtjYT4+MF18MH1pZighKChfJjI1NSk8PDI0Pj4yND09KGFbKCgkJjEpPT0wP0k6Y1ttPj4yXXwwKT4+MF18MCkpKXticmVhayBifWFhPWNbZT4+Ml18MDtfPWFhKzEyfDA7JD1jW18+PjJdfDA7aWYoKCR8MCk9PShjW2FhKzE2Pj4yXXwwKSl7b2NbY1soY1thYT4+Ml18MCkrNDA+PjJdJjEyN10oYWEpfDB9ZWxzZXtjW18+PjJdPSQrMX1hW2w+PjBdPTE7Xz1hW3M+PjBdfDA7aWYoKF8mMSk9PTApe189KF8mMjU1KT4+PjF9ZWxzZXtfPWNbTD4+Ml18MH1UPV8+Pj4wPjE/czpUO2JyZWFrIGJ9aWYoZGEpeyQ9b2NbY1soY1tiYT4+Ml18MCkrMzY+PjJdJjEyN10oYmEpfDA7Xz1hW3g+PjBdfDB9ZWxzZXskPWRbY2E+PjBdfDB9aWYoISgoJCYyNTUpPDwyND4+MjQ9PShhWygoXyYxKT09MD9LOmNbRD4+Ml18MCk+PjBdfDApKSl7YVtsPj4wXT0xO2JyZWFrIGJ9Xz1jW2U+PjJdfDA7JD1fKzEyfDA7YWE9Y1skPj4yXXwwO2lmKChhYXwwKT09KGNbXysxNj4+Ml18MCkpe29jW2NbKGNbXz4+Ml18MCkrNDA+PjJdJjEyN10oXyl8MH1lbHNle2NbJD4+Ml09YWErMX1fPWFbeD4+MF18MDtpZigoXyYxKT09MCl7Xz0oXyYyNTUpPj4+MX1lbHNle189Y1tIPj4yXXwwfVQ9Xz4+PjA+MT94OlR9YnJlYWt9O2Nhc2UgNDp7Xz0wO2U6d2hpbGUoMSl7JD1jW2U+PjJdfDA7ZG97aWYoKCR8MCkhPTApe2lmKChjWyQrMTI+PjJdfDApPT0oY1skKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbJD4+Ml18MCkrMzY+PjJdJjEyN10oJCl8MCk9PS0xKXtjW2U+PjJdPTA7JD0wO2JyZWFrfWVsc2V7JD1jW2U+PjJdfDA7YnJlYWt9fX1lbHNleyQ9MH19d2hpbGUoMCk7JD0oJHwwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZigkKXticmVha31lbHNle2JyZWFrIGV9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoISQpe2JyZWFrIGV9fWVsc2V7Qz0yNTl9fWVsc2V7Qz0yNTl9fXdoaWxlKDApO2lmKChDfDApPT0yNTkpe0M9MDtpZigkKXtmPTA7YnJlYWt9ZWxzZXtmPTB9fSQ9Y1tlPj4yXXwwO2FhPWNbJCsxMj4+Ml18MDtpZigoYWF8MCk9PShjWyQrMTY+PjJdfDApKXthYT1vY1tjWyhjWyQ+PjJdfDApKzM2Pj4yXSYxMjddKCQpfDB9ZWxzZXthYT1kW2FhPj4wXXwwfSQ9YWEmMjU1O2lmKCQ8PDI0Pj4yND4tMT8hKChiWyhjW0o+PjJdfDApKyhhYTw8MjQ+PjI0PDwxKT4+MV0mMjA0OCk9PTApOjApe2FhPWNbbz4+Ml18MDtpZigoYWF8MCk9PShwfDApKXtiYT0oY1tSPj4yXXwwKSE9MjEzO2NhPWNbbj4+Ml18MDthYT1wLWNhfDA7cD1hYT4+PjA8MjE0NzQ4MzY0Nz9hYTw8MTotMTtjYT13bihiYT9jYTowLHApfDA7aWYoKGNhfDApPT0wKXtDPTI2ODticmVhayBhfWlmKCFiYSl7YmE9Y1tuPj4yXXwwO2Nbbj4+Ml09Y2E7aWYoKGJhfDApIT0wKXtsY1tjW1I+PjJdJjI1NV0oYmEpO2NhPWNbbj4+Ml18MH19ZWxzZXtjW24+PjJdPWNhfWNbUj4+Ml09MjE0O2FhPWNhK2FhfDA7Y1tvPj4yXT1hYTtwPShjW24+PjJdfDApK3B8MH1jW28+PjJdPWFhKzE7YVthYT4+MF09JDtfPV8rMXwwfWVsc2V7YWE9YVt0Pj4wXXwwO2lmKChhYSYxKT09MCl7YWE9KGFhJjI1NSk+Pj4xfWVsc2V7YWE9Y1tQPj4yXXwwfWlmKCEoKCgoYWF8MCk9PTB8KF98MCk9PTApXjEpJiQ8PDI0Pj4yND09Rzw8MjQ+PjI0KSl7YnJlYWt9aWYoKFl8MCk9PShYfDApKXtZPVktWnwwO1g9WT4+PjA8MjE0NzQ4MzY0Nz9ZPDwxOi0xO2lmKChXfDApPT0yMTMpe1o9MH1XPXduKFosWCl8MDtpZigoV3wwKT09MCl7Qz0yODU7YnJlYWsgYX1aPVc7WD1XKyhYPj4+Mjw8Mil8MDtZPVcrKFk+PjI8PDIpfDA7Vz0yMTR9Y1tZPj4yXT1fO1k9WSs0fDA7Xz0wfSQ9Y1tlPj4yXXwwO2FhPSQrMTJ8MDtiYT1jW2FhPj4yXXwwO2lmKChiYXwwKT09KGNbJCsxNj4+Ml18MCkpe29jW2NbKGNbJD4+Ml18MCkrNDA+PjJdJjEyN10oJCl8MDtjb250aW51ZX1lbHNle2NbYWE+PjJdPWJhKzE7Y29udGludWV9fWlmKCEoKFp8MCk9PShZfDApfChffDApPT0wKSl7aWYoKFl8MCk9PShYfDApKXtZPVktWnwwO1g9WT4+PjA8MjE0NzQ4MzY0Nz9ZPDwxOi0xO2lmKChXfDApPT0yMTMpe1o9MH1XPXduKFosWCl8MDtpZigoV3wwKT09MCl7Qz0yOTc7YnJlYWsgYX1aPVc7WD1XKyhYPj4+Mjw8Mil8MDtZPVcrKFk+PjI8PDIpfDA7Vz0yMTR9Y1tZPj4yXT1fO1k9WSs0fDB9aWYoKFZ8MCk+MCl7Xz1jW2U+PjJdfDA7ZG97aWYoKF98MCkhPTApe2lmKChjW18rMTI+PjJdfDApPT0oY1tfKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbXz4+Ml18MCkrMzY+PjJdJjEyN10oXyl8MCk9PS0xKXtjW2U+PjJdPTA7Xz0wO2JyZWFrfWVsc2V7Xz1jW2U+PjJdfDA7YnJlYWt9fX1lbHNle189MH19d2hpbGUoMCk7Xz0oX3wwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZihfKXticmVha31lbHNle0M9MzE5O2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoIV8pe0M9MzE5O2JyZWFrIGF9fWVsc2V7Qz0zMTN9fWVsc2V7Qz0zMTN9fXdoaWxlKDApO2lmKChDfDApPT0zMTMpe0M9MDtpZihfKXtDPTMxOTticmVhayBhfWVsc2V7Zj0wfX1fPWNbZT4+Ml18MDskPWNbXysxMj4+Ml18MDtpZigoJHwwKT09KGNbXysxNj4+Ml18MCkpe189b2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwfWVsc2V7Xz1kWyQ+PjBdfDB9aWYoISgoXyYyNTUpPDwyND4+MjQ9PWg8PDI0Pj4yNCkpe0M9MzE5O2JyZWFrIGF9Xz1jW2U+PjJdfDA7JD1fKzEyfDA7YWE9Y1skPj4yXXwwO2lmKChhYXwwKT09KGNbXysxNj4+Ml18MCkpe29jW2NbKGNbXz4+Ml18MCkrNDA+PjJdJjEyN10oXyl8MDthYT1mOyQ9Zn1lbHNle2NbJD4+Ml09YWErMTthYT1mOyQ9Zn13aGlsZSgxKXtfPWNbZT4+Ml18MDtkb3tpZigoX3wwKSE9MCl7aWYoKGNbXysxMj4+Ml18MCk9PShjW18rMTY+PjJdfDApKXtpZigob2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwKT09LTEpe2NbZT4+Ml09MDtfPTA7YnJlYWt9ZWxzZXtfPWNbZT4+Ml18MDticmVha319fWVsc2V7Xz0wfX13aGlsZSgwKTtiYT0oX3wwKT09MDtkb3tpZigoJHwwKSE9MCl7aWYoKGNbJCsxMj4+Ml18MCkhPShjWyQrMTY+PjJdfDApKXtpZihiYSl7Xz1hYTticmVha31lbHNle0M9MzQxO2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbJD4+Ml18MCkrMzY+PjJdJjEyN10oJCl8MCk9PS0xKSl7aWYoYmFeKGFhfDApPT0wKXtfPWFhOyQ9YWF9ZWxzZXtDPTM0MTticmVhayBhfX1lbHNle189MDtmPTA7Qz0zMzR9fWVsc2V7Xz1hYTtDPTMzNH19d2hpbGUoMCk7aWYoKEN8MCk9PTMzNCl7Qz0wO2lmKGJhKXtDPTM0MTticmVhayBhfWVsc2V7JD0wfX1hYT1jW2U+PjJdfDA7YmE9Y1thYSsxMj4+Ml18MDtpZigoYmF8MCk9PShjW2FhKzE2Pj4yXXwwKSl7YWE9b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDB9ZWxzZXthYT1kW2JhPj4wXXwwfWlmKCEoKGFhJjI1NSk8PDI0Pj4yND4tMSkpe0M9MzQxO2JyZWFrIGF9aWYoKGJbKGNbSj4+Ml18MCkrKGFhPDwyND4+MjQ8PDEpPj4xXSYyMDQ4KT09MCl7Qz0zNDE7YnJlYWsgYX1hYT1jW28+PjJdfDA7aWYoKGFhfDApPT0ocHwwKSl7YmE9KGNbUj4+Ml18MCkhPTIxMztjYT1jW24+PjJdfDA7YWE9cC1jYXwwO3A9YWE+Pj4wPDIxNDc0ODM2NDc/YWE8PDE6LTE7Y2E9d24oYmE/Y2E6MCxwKXwwO2lmKChjYXwwKT09MCl7Qz0zNDQ7YnJlYWsgYX1kb3tpZihiYSl7Y1tuPj4yXT1jYX1lbHNle2JhPWNbbj4+Ml18MDtjW24+PjJdPWNhO2lmKChiYXwwKT09MCl7YnJlYWt9bGNbY1tSPj4yXSYyNTVdKGJhKTtjYT1jW24+PjJdfDB9fXdoaWxlKDApO2NbUj4+Ml09MjE0O2FhPWNhK2FhfDA7Y1tvPj4yXT1hYTtwPShjW24+PjJdfDApK3B8MH1jYT1jW2U+PjJdfDA7YmE9Y1tjYSsxMj4+Ml18MDtpZigoYmF8MCk9PShjW2NhKzE2Pj4yXXwwKSl7YmE9b2NbY1soY1tjYT4+Ml18MCkrMzY+PjJdJjEyN10oY2EpfDA7YWE9Y1tvPj4yXXwwfWVsc2V7YmE9ZFtiYT4+MF18MH1jW28+PjJdPWFhKzE7YVthYT4+MF09YmE7Vj1WKyAtMXwwO2NhPWNbZT4+Ml18MDthYT1jYSsxMnwwO2JhPWNbYWE+PjJdfDA7aWYoKGJhfDApPT0oY1tjYSsxNj4+Ml18MCkpe29jW2NbKGNbY2E+PjJdfDApKzQwPj4yXSYxMjddKGNhKXwwfWVsc2V7Y1thYT4+Ml09YmErMX1pZigoVnwwKT4wKXthYT1ffWVsc2V7YnJlYWt9fX1pZigoY1tvPj4yXXwwKT09KGNbbj4+Ml18MCkpe0M9MzYxO2JyZWFrIGF9YnJlYWt9O2Nhc2UgMTp7aWYoKFV8MCk9PTMpe0M9MzYzO2JyZWFrIGF9Qz1jW2U+PjJdfDA7Xz1jW0MrMTI+PjJdfDA7aWYoKF98MCk9PShjW0MrMTY+PjJdfDApKXtDPW9jW2NbKGNbQz4+Ml18MCkrMzY+PjJdJjEyN10oQyl8MH1lbHNle0M9ZFtfPj4wXXwwfWlmKCEoKEMmMjU1KTw8MjQ+PjI0Pi0xKSl7Qz05NjticmVhayBhfWlmKChiWyhjW0o+PjJdfDApKyhDPDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7Qz05NjticmVhayBhfUM9Y1tlPj4yXXwwOyQ9QysxMnwwO189Y1skPj4yXXwwO2lmKChffDApPT0oY1tDKzE2Pj4yXXwwKSl7Qz1vY1tjWyhjW0M+PjJdfDApKzQwPj4yXSYxMjddKEMpfDB9ZWxzZXtjWyQ+PjJdPV8rMTtDPWRbXz4+MF18MH1fPUMmMjU1OyQ9YVt3Pj4wXXwwO0M9KCQmMSkhPTA7aWYoQyl7YWE9KGNbdz4+Ml0mLTIpKyAtMXwwOyQ9Y1tPPj4yXXwwfWVsc2V7YWE9MTA7JD0oJCYyNTUpPj4+MX1pZigoJHwwKT09KGFhfDApKXtsZyh3LGFhLDEsYWEsYWEsMCk7aWYoKGFbdz4+MF0mMSk9PTApe0M9OTN9ZWxzZXtDPTk0fX1lbHNle2lmKEMpe0M9OTR9ZWxzZXtDPTkzfX1pZigoQ3wwKT09OTMpe2Fbdz4+MF09KCQ8PDEpKzI7YmE9ZzthYT0kKzF8MH1lbHNlIGlmKChDfDApPT05NCl7YmE9Y1tFPj4yXXwwO2FhPSQrMXwwO2NbTz4+Ml09YWF9YVtiYSskPj4wXT1fO2FbYmErYWE+PjBdPTA7Qz05NzticmVha307ZGVmYXVsdDp7fX19d2hpbGUoMCk7Zjpkb3tpZigoQ3wwKT09OTcpe0M9MDtpZigoVXwwKT09Myl7Qz0zNjM7YnJlYWsgYX1lbHNle2FhPWY7JD1mfXdoaWxlKDEpe189Y1tlPj4yXXwwO2Rve2lmKChffDApIT0wKXtpZigoY1tfKzEyPj4yXXwwKT09KGNbXysxNj4+Ml18MCkpe2lmKChvY1tjWyhjW18+PjJdfDApKzM2Pj4yXSYxMjddKF8pfDApPT0tMSl7Y1tlPj4yXT0wO189MDticmVha31lbHNle189Y1tlPj4yXXwwO2JyZWFrfX19ZWxzZXtfPTB9fXdoaWxlKDApO2JhPShffDApPT0wO2Rve2lmKCgkfDApIT0wKXtpZigoY1skKzEyPj4yXXwwKSE9KGNbJCsxNj4+Ml18MCkpe2lmKGJhKXtfPWFhO2JyZWFrfWVsc2V7YnJlYWsgZn19aWYoISgob2NbY1soY1skPj4yXXwwKSszNj4+Ml0mMTI3XSgkKXwwKT09LTEpKXtpZihiYV4oYWF8MCk9PTApe189YWE7JD1hYX1lbHNle2JyZWFrIGZ9fWVsc2V7Xz0wO2Y9MDtDPTEwOX19ZWxzZXtfPWFhO0M9MTA5fX13aGlsZSgwKTtpZigoQ3wwKT09MTA5KXtDPTA7aWYoYmEpe2JyZWFrIGZ9ZWxzZXskPTB9fWJhPWNbZT4+Ml18MDthYT1jW2JhKzEyPj4yXXwwO2lmKChhYXwwKT09KGNbYmErMTY+PjJdfDApKXthYT1vY1tjWyhjW2JhPj4yXXwwKSszNj4+Ml0mMTI3XShiYSl8MH1lbHNle2FhPWRbYWE+PjBdfDB9aWYoISgoYWEmMjU1KTw8MjQ+PjI0Pi0xKSl7YnJlYWsgZn1pZigoYlsoY1tKPj4yXXwwKSsoYWE8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXticmVhayBmfWJhPWNbZT4+Ml18MDtDPWJhKzEyfDA7YWE9Y1tDPj4yXXwwO2lmKChhYXwwKT09KGNbYmErMTY+PjJdfDApKXtDPW9jW2NbKGNbYmE+PjJdfDApKzQwPj4yXSYxMjddKGJhKXwwfWVsc2V7Y1tDPj4yXT1hYSsxO0M9ZFthYT4+MF18MH1hYT1DJjI1NTtiYT1hW3c+PjBdfDA7Y2E9KGJhJjEpIT0wO2lmKGNhKXtDPShjW3c+PjJdJi0yKSsgLTF8MDtiYT1jW08+PjJdfDB9ZWxzZXtDPTEwO2JhPShiYSYyNTUpPj4+MX1pZigoYmF8MCk9PShDfDApKXtsZyh3LEMsMSxDLEMsMCk7aWYoKGFbdz4+MF0mMSk9PTApe0M9MTI2fWVsc2V7Qz0xMjd9fWVsc2V7aWYoY2Epe0M9MTI3fWVsc2V7Qz0xMjZ9fWlmKChDfDApPT0xMjYpe0M9MDthW3c+PjBdPShiYTw8MSkrMjtjYT1nO2RhPWJhKzF8MH1lbHNlIGlmKChDfDApPT0xMjcpe0M9MDtjYT1jW0U+PjJdfDA7ZGE9YmErMXwwO2NbTz4+Ml09ZGF9YVtjYStiYT4+MF09YWE7YVtjYStkYT4+MF09MDthYT1ffX19d2hpbGUoMCk7VT1VKzF8MDtpZighKFU+Pj4wPDQpKXtDPTM2MzticmVha319Zzpzd2l0Y2goQ3wwKXtjYXNlIDk2OntjW2s+PjJdPWNbaz4+Ml18NDtlPTA7WT1aO2JyZWFrfTtjYXNlIDE5Njp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAyNDc6e2Nbaz4+Ml09Y1trPj4yXXw0O2U9MDtZPVo7YnJlYWt9O2Nhc2UgMjY4OntmYT1YYSg0KXwwO2NbZmE+PjJdPTIyNjgwO3diKGZhfDAsMjI3MjgsMjA2KX07Y2FzZSAyODU6e2ZhPVhhKDQpfDA7Y1tmYT4+Ml09MjI2ODA7d2IoZmF8MCwyMjcyOCwyMDYpfTtjYXNlIDI5Nzp7ZmE9WGEoNCl8MDtjW2ZhPj4yXT0yMjY4MDt3YihmYXwwLDIyNzI4LDIwNil9O2Nhc2UgMzE5OntjW2s+PjJdPWNbaz4+Ml18NDtlPTA7WT1aO2JyZWFrfTtjYXNlIDM0MTp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAzNDQ6e2ZhPVhhKDQpfDA7Y1tmYT4+Ml09MjI2ODA7d2IoZmF8MCwyMjcyOCwyMDYpfTtjYXNlIDM2MTp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAzNjM6e2g6ZG97aWYoKFR8MCkhPTApe0Y9VCsxfDA7bj1UKzh8MDtsPVQrNHwwO289MTtpOndoaWxlKDEpe2g9YVtUPj4wXXwwO2lmKChoJjEpPT0wKXtoPShoJjI1NSk+Pj4xfWVsc2V7aD1jW2w+PjJdfDB9aWYoIShvPj4+MDxoPj4+MCkpe2JyZWFrIGh9aD1jW2U+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKChjW2grMTI+PjJdfDApPT0oY1toKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xKXtjW2U+PjJdPTA7aD0wO2JyZWFrfWVsc2V7aD1jW2U+PjJdfDA7YnJlYWt9fX1lbHNle2g9MH19d2hpbGUoMCk7aD0oaHwwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZihoKXticmVha31lbHNle2JyZWFrIGl9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoIWgpe2JyZWFrIGl9fWVsc2V7Qz0zODB9fWVsc2V7Qz0zODB9fXdoaWxlKDApO2lmKChDfDApPT0zODApe0M9MDtpZihoKXticmVha31lbHNle2Y9MH19aD1jW2U+PjJdfDA7Rz1jW2grMTI+PjJdfDA7aWYoKEd8MCk9PShjW2grMTY+PjJdfDApKXtoPW9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MH1lbHNle2g9ZFtHPj4wXXwwfWlmKChhW1Q+PjBdJjEpPT0wKXtHPUZ9ZWxzZXtHPWNbbj4+Ml18MH1pZighKChoJjI1NSk8PDI0Pj4yND09KGFbRytvPj4wXXwwKSkpe2JyZWFrfW89bysxfDA7aD1jW2U+PjJdfDA7Rz1oKzEyfDA7SD1jW0c+PjJdfDA7aWYoKEh8MCk9PShjW2grMTY+PjJdfDApKXtvY1tjWyhjW2g+PjJdfDApKzQwPj4yXSYxMjddKGgpfDA7Y29udGludWV9ZWxzZXtjW0c+PjJdPUgrMTtjb250aW51ZX19Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVhayBnfX13aGlsZSgwKTtpZigoWnwwKSE9KFl8MCkpe2NbQj4+Ml09MDtxayh0LFosWSxCKTtpZigoY1tCPj4yXXwwKT09MCl7ZT0xO1k9Wn1lbHNle2Nbaz4+Ml09Y1trPj4yXXw0O2U9MDtZPVp9fWVsc2V7ZT0xfWJyZWFrfX1pZighKChhW3c+PjBdJjEpPT0wKT8odj1jW0U+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbcz4+MF0mMSk9PTApPyh6PWNbbT4+Ml18MCwoenwwKSE9MCk6MCl7dm4oeil9aWYoISgoYVt4Pj4wXSYxKT09MCk/KEE9Y1tEPj4yXXwwLChBfDApIT0wKTowKXt2bihBKX1pZighKChhW3k+PjBdJjEpPT0wKT8ocj1jW2o+PjJdfDAsKHJ8MCkhPTApOjApe3ZuKHIpfWlmKCEoKGFbdD4+MF0mMSk9PTApPyhxPWNbdCs4Pj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1pZigoWXwwKT09MCl7aT11O3JldHVybiBlfDB9bGNbVyYyNTVdKFkpO2k9dTtyZXR1cm4gZXwwfWZ1bmN0aW9uIG9rKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2Q9WGEoOCl8MDtjW2Q+PjJdPTk5Mjg7Yj1KbihhfDApfDA7ZT1iKzEzfDA7ZT0oZXwwKT09MD8xOmU7d2hpbGUoMSl7Zz11bihlKXwwO2lmKChnfDApIT0wKXtmPTc7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2JyZWFrfXNjW2cmMzFdKCl9aWYoKGZ8MCk9PTcpe2NbZys0Pj4yXT1iO2NbZz4+Ml09YjtmPWcrMTJ8MDtjW2QrND4+Ml09ZjtjW2crOD4+Ml09MDtMbihmfDAsYXwwLGIrMXwwKXwwO3diKGR8MCwxMDA2NCwxMDYpfWc9WGEoNCl8MDtjW2c+PjJdPTIyNjgwO3diKGd8MCwyMjcyOCwyMDYpfWZ1bmN0aW9uIHBrKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDttPWk7aT1pKzEyOHwwO3A9bTtzPW0rMjh8MDtkPW0rMTZ8MDtxPW0rMTJ8MDt0PW0rMjR8MDtjW2Q+PjJdPXM7bD1kKzR8MDtjW2w+PjJdPTIxMztzPXMrMTAwfDA7bj1jW2grMjg+PjJdfDA7dT1uKzR8MDtjW3U+PjJdPShjW3U+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3A+PjJdPTEzNDU2O2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM0NTYscCl9cD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dT1jW24rOD4+Ml18MDtpZigoY1tuKzEyPj4yXXwwKS11Pj4yPj4+MD5wPj4+MD8ocj1jW3UrKHA8PDIpPj4yXXwwLChyfDApIT0wKTowKXthW3Q+PjBdPTA7cD1jW2Y+PjJdfDA7ZG97aWYobmsoZSxwLGcsbixjW2grND4+Ml18MCxqLHQscixkLHEscyl8MCl7aWYoKGFbaz4+MF0mMSk9PTApe2FbaysxPj4wXT0wO2Fbaz4+MF09MH1lbHNle2FbY1trKzg+PjJdPj4wXT0wO2Nbays0Pj4yXT0wfWlmKChhW3Q+PjBdfDApIT0wKXtnPXhjW2NbKGNbcj4+Ml18MCkrMjg+PjJdJjYzXShyLDQ1KXwwO2g9YVtrPj4wXXwwO289KGgmMSkhPTA7aWYobyl7cz0oY1trPj4yXSYtMikrIC0xfDA7aD1jW2srND4+Ml18MH1lbHNle3M9MTA7aD0oaCYyNTUpPj4+MX1pZigoaHwwKT09KHN8MCkpe2xnKGsscywxLHMscywwKTtpZigoYVtrPj4wXSYxKT09MCl7bz0yMX1lbHNle289MjJ9fWVsc2V7aWYobyl7bz0yMn1lbHNle289MjF9fWlmKChvfDApPT0yMSl7YVtrPj4wXT0oaDw8MSkrMjtzPWsrMXwwO3Q9aCsxfDB9ZWxzZSBpZigob3wwKT09MjIpe3M9Y1trKzg+PjJdfDA7dD1oKzF8MDtjW2srND4+Ml09dH1hW3MraD4+MF09ZzthW3MrdD4+MF09MH1yPXhjW2NbKGNbcj4+Ml18MCkrMjg+PjJdJjYzXShyLDQ4KXwwO2g9Y1tkPj4yXXwwO3E9Y1txPj4yXXwwO2c9cSsgLTF8MDthOmRve2lmKGg+Pj4wPGc+Pj4wKXt3aGlsZSgxKXtzPWgrMXwwO2lmKCEoKGFbaD4+MF18MCk9PXI8PDI0Pj4yNCkpe2JyZWFrIGF9aWYocz4+PjA8Zz4+PjApe2g9c31lbHNle2g9czticmVha319fX13aGlsZSgwKTtzPWg7cj1hW2s+PjBdfDA7aWYoKHImMSk9PTApe3Q9cjt1PTEwO3I9KHImMjU1KT4+PjF9ZWxzZXt1PWNbaz4+Ml18MDt0PXUmMjU1O3U9KHUmLTIpKyAtMXwwO3I9Y1trKzQ+PjJdfDB9Zz1xLXN8MDtpZigocXwwKSE9KGh8MCkpe2lmKCh1LXJ8MCk+Pj4wPGc+Pj4wKXtsZyhrLHUscitnLXV8MCxyLHIsMCk7dD1hW2s+PjBdfDB9aWYoKHQmMSk9PTApe3Q9aysxfDB9ZWxzZXt0PWNbays4Pj4yXXwwfXM9cSsoci1zKXwwO3U9dCtyfDA7d2hpbGUoMSl7YVt1Pj4wXT1hW2g+PjBdfDA7aD1oKzF8MDtpZigoaHwwKT09KHF8MCkpe2JyZWFrfXU9dSsxfDB9YVt0K3M+PjBdPTA7cT1yK2d8MDtpZigoYVtrPj4wXSYxKT09MCl7YVtrPj4wXT1xPDwxO2JyZWFrfWVsc2V7Y1trKzQ+PjJdPXE7YnJlYWt9fX19d2hpbGUoMCk7az1jW2U+PjJdfDA7aWYoKGt8MCkhPTApe2lmKChjW2srMTI+PjJdfDApPT0oY1trKzE2Pj4yXXwwKT8ob2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwKT09LTE6MCl7Y1tlPj4yXT0wO2s9MH19ZWxzZXtrPTB9ZT0oa3wwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCkhPShjW3ArMTY+PjJdfDApKXtpZihlKXticmVha31lbHNle289NTc7YnJlYWt9fWlmKCEoKG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xKSl7aWYoZSl7YnJlYWt9ZWxzZXtvPTU3O2JyZWFrfX1lbHNle2NbZj4+Ml09MDtvPTU1O2JyZWFrfX1lbHNle289NTV9fXdoaWxlKDApO2lmKChvfDApPT01NT9lOjApe289NTd9aWYoKG98MCk9PTU3KXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWs7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApPT0wKXtsY1tjWyhjW24+PjJdfDApKzg+PjJdJjI1NV0obil9aj1jW2Q+PjJdfDA7Y1tkPj4yXT0wO2lmKChqfDApPT0wKXtpPW07cmV0dXJufWxjW2NbbD4+Ml0mMjU1XShqKTtpPW07cmV0dXJufXU9WGEoNCl8MDtjW3U+PjJdPTIxMzA0O3diKHV8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHFrKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTA7Zz1pO2s9YVtiPj4wXXwwO2lmKChrJjEpPT0wKXtqPShrJjI1NSk+Pj4xfWVsc2V7aj1jW2IrND4+Ml18MH1pZigoanwwKT09MCl7aT1nO3JldHVybn1pZigoZHwwKSE9KGV8MCk/KGg9ZSsgLTR8MCxoPj4+MD5kPj4+MCk6MCl7aj1kO2Rve2s9Y1tqPj4yXXwwO2Nbaj4+Ml09Y1toPj4yXTtjW2g+PjJdPWs7aj1qKzR8MDtoPWgrIC00fDB9d2hpbGUoaj4+PjA8aD4+PjApO2s9YVtiPj4wXXwwfWlmKChrJjEpPT0wKXtoPWIrMXwwO2I9KGsmMjU1KT4+PjF9ZWxzZXtoPWNbYis4Pj4yXXwwO2I9Y1tiKzQ+PjJdfDB9ZT1lKyAtNHwwO2s9YVtoPj4wXXwwO2o9azw8MjQ+PjI0PDF8azw8MjQ+PjI0PT0xMjc7YTpkb3tpZihlPj4+MD5kPj4+MCl7Yj1oK2J8MDt3aGlsZSgxKXtpZighaj8oazw8MjQ+PjI0fDApIT0oY1tkPj4yXXwwKTowKXticmVha31oPShiLWh8MCk+MT9oKzF8MDpoO2Q9ZCs0fDA7az1hW2g+PjBdfDA7aj1rPDwyND4+MjQ8MXxrPDwyND4+MjQ9PTEyNztpZighKGQ+Pj4wPGU+Pj4wKSl7YnJlYWsgYX19Y1tmPj4yXT00O2k9ZztyZXR1cm59fXdoaWxlKDApO2lmKGope2k9ZztyZXR1cm59aj1jW2U+PjJdfDA7aWYoIShrPDwyND4+MjQ+Pj4wPGo+Pj4wfChqfDApPT0wKSl7aT1nO3JldHVybn1jW2Y+PjJdPTQ7aT1nO3JldHVybn1mdW5jdGlvbiByayhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBzayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gdGsoYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO249aTtpPWkrNTc2fDA7cT1uO3Y9bisyNHwwO2Q9bisxNnwwO3I9bis0NjR8MDt1PW4rNTY4fDA7cz1uKzQyNHwwO3A9bis0Njh8MDtjW2Q+PjJdPXY7bT1kKzR8MDtjW20+PjJdPTIxMzt2PXYrNDAwfDA7bz1jW2grMjg+PjJdfDA7eD1vKzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW3E+PjJdPTEzNDQ4O2NbcSs0Pj4yXT0yMDg7Y1txKzg+PjJdPTA7Y2coMTM0NDgscSl9eD0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dz1jW28rOD4+Ml18MDtpZigoY1tvKzEyPj4yXXwwKS13Pj4yPj4+MD54Pj4+MD8odD1jW3crKHg8PDIpPj4yXXwwLCh0fDApIT0wKTowKXthW3U+PjBdPTA7ZG97aWYodWsoZSxjW2Y+PjJdfDAsZyxvLGNbaCs0Pj4yXXwwLGosdSx0LGQscix2KXwwKXt1Y1tjWyhjW3Q+PjJdfDApKzQ4Pj4yXSYzMV0odCwxMzE2OCwxMzE3OHwwLHMpfDA7aD1jW3I+PjJdfDA7Zz1jW2Q+PjJdfDA7dD1oLWd8MDtpZigodHwwKT4zOTIpe3Y9dW4oKHQ+PjIpKzJ8MCl8MDtpZigodnwwKT09MCl7eD1YYSg0KXwwO2NbeD4+Ml09MjI2ODA7d2IoeHwwLDIyNzI4LDIwNil9ZWxzZXt0PXZ9fWVsc2V7dD0wO3Y9cH1pZigoYVt1Pj4wXXwwKSE9MCl7YVt2Pj4wXT00NTt2PXYrMXwwfWlmKGc+Pj4wPGg+Pj4wKXtoPXMrNDB8MDt1PXM7ZG97eD1jW2c+PjJdfDA7dz1zO3doaWxlKDEpe2lmKChjW3c+PjJdfDApPT0oeHwwKSl7YnJlYWt9dz13KzR8MDtpZigod3wwKT09KGh8MCkpe3c9aDticmVha319YVt2Pj4wXT1hWzEzMTY4Kyh3LXU+PjIpPj4wXXwwO2c9Zys0fDA7dj12KzF8MH13aGlsZShnPj4+MDwoY1tyPj4yXXwwKT4+PjApfWFbdj4+MF09MDtjW3E+PjJdPWs7aWYoKEZhKHB8MCwxMzEwNCxxfDApfDApPT0xKXtpZigodHwwKT09MCl7YnJlYWt9dm4odCk7YnJlYWt9aj1YYSg4KXwwO2Nbaj4+Ml09OTkyODt3aGlsZSgxKXtkPXVuKDI4KXwwO2lmKChkfDApIT0wKXtsPTI5O2JyZWFrfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXtsPTI3O2JyZWFrfXNjW2wmMzFdKCl9aWYoKGx8MCk9PTI3KXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNlIGlmKChsfDApPT0yOSl7Y1tkKzQ+PjJdPTE1O2NbZD4+Ml09MTU7Yj1kKzEyfDA7Y1tqKzQ+PjJdPWI7Y1tkKzg+PjJdPTA7Yj1iKzB8MDtkPTEzMTEyfDA7bD1iKzE2fDA7ZG97YVtiPj4wXT1hW2Q+PjBdfDA7Yj1iKzF8MDtkPWQrMXwwfXdoaWxlKChifDApPChsfDApKTt3YihqfDAsMTAwNjQsMTA2KX19fXdoaWxlKDApO2s9Y1tlPj4yXXwwO2lmKChrfDApIT0wKXtwPWNbaysxMj4+Ml18MDtpZigocHwwKT09KGNbaysxNj4+Ml18MCkpe3A9b2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwfWVsc2V7cD1jW3A+PjJdfDB9aWYoKHB8MCk9PS0xKXtjW2U+PjJdPTA7ZT0wO2s9MX1lbHNle2U9aztrPTB9fWVsc2V7ZT0wO2s9MX1xPWNbZj4+Ml18MDtkb3tpZigocXwwKSE9MCl7cD1jW3ErMTI+PjJdfDA7aWYoKHB8MCk9PShjW3ErMTY+PjJdfDApKXtwPW9jW2NbKGNbcT4+Ml18MCkrMzY+PjJdJjEyN10ocSl8MH1lbHNle3A9Y1twPj4yXXwwfWlmKCEoKHB8MCk9PS0xKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTQ3O2JyZWFrfX1lbHNle2NbZj4+Ml09MDtsPTQ1O2JyZWFrfX1lbHNle2w9NDV9fXdoaWxlKDApO2lmKChsfDApPT00NT9rOjApe2w9NDd9aWYoKGx8MCk9PTQ3KXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWU7dz1vKzR8MDt4PWNbdz4+Ml18MDtjW3c+PjJdPXgrIC0xO2lmKCh4fDApPT0wKXtsY1tjWyhjW28+PjJdfDApKzg+PjJdJjI1NV0obyl9bD1jW2Q+PjJdfDA7Y1tkPj4yXT0wO2lmKChsfDApPT0wKXtpPW47cmV0dXJufWxjW2NbbT4+Ml0mMjU1XShsKTtpPW47cmV0dXJufXg9WGEoNCl8MDtjW3g+PjJdPTIxMzA0O3diKHh8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHVrKGIsZSxmLGcsaCxqLGssbCxtLG4sbyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7dmFyIHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTA7dj1pO2k9aSs1OTJ8MDtRPXY7Tz12KzExMnwwO0s9disxMnwwO0c9disxMDB8MDtIPXYrNDB8MDtFPXYrMjR8MDtOPXYrMzZ8MDtNPXYrODh8MDtMPXYrNzZ8MDtKPXYrNTJ8MDtJPXYrNjR8MDtQPXYrMTIwfDA7Rj12KzUyMHwwO3Q9dis1MjR8MDt3PXYrNTM2fDA7eD12KzU0OHwwO3I9dis1NjB8MDtzPXYrNTcyfDA7QT12KzU4NHwwO2NbRj4+Ml09MDtjW3QrMD4+Ml09MDtjW3QrND4+Ml09MDtjW3QrOD4+Ml09MDtjW3crMD4+Ml09MDtjW3crND4+Ml09MDtjW3crOD4+Ml09MDtjW3grMD4+Ml09MDtjW3grND4+Ml09MDtjW3grOD4+Ml09MDtjW3IrMD4+Ml09MDtjW3IrND4+Ml09MDtjW3IrOD4+Ml09MDtjW3MrMD4+Ml09MDtjW3MrND4+Ml09MDtjW3MrOD4+Ml09MDtkb3tpZihmKXtpZighKChjWzMyNjBdfDApPT0tMSkpe2NbUT4+Ml09MTMwNDA7Y1tRKzQ+PjJdPTIwODtjW1ErOD4+Ml09MDtjZygxMzA0MCxRKX1DPShjWzEzMDQ0Pj4yXXwwKSsgLTF8MDtJPWNbZys4Pj4yXXwwO2lmKChjW2crMTI+PjJdfDApLUk+PjI+Pj4wPkM+Pj4wPyhEPWNbSSsoQzw8Mik+PjJdfDAsKER8MCkhPTApOjApe21jW2NbKGNbRD4+Ml18MCkrNDQ+PjJdJjEyN10oTyxEKTtjW0Y+PjJdPWNbTz4+Ml07bWNbY1soY1tEPj4yXXwwKSszMj4+Ml0mMTI3XShLLEQpO2lmKChhW3I+PjBdJjEpPT0wKXtjW3IrND4+Ml09MDthW3I+PjBdPTB9ZWxzZXtjW2Nbcis4Pj4yXT4+Ml09MDtjW3IrND4+Ml09MH1vZyhyKTtjW3IrMD4+Ml09Y1tLKzA+PjJdO2Nbcis0Pj4yXT1jW0srND4+Ml07Y1tyKzg+PjJdPWNbSys4Pj4yXTtjW0srMD4+Ml09MDtjW0srND4+Ml09MDtjW0srOD4+Ml09MDttY1tjWyhjW0Q+PjJdfDApKzI4Pj4yXSYxMjddKEcsRCk7aWYoKGFbeD4+MF0mMSk9PTApe2NbeCs0Pj4yXT0wO2FbeD4+MF09MH1lbHNle2NbY1t4Kzg+PjJdPj4yXT0wO2NbeCs0Pj4yXT0wfW9nKHgpO2NbeCswPj4yXT1jW0crMD4+Ml07Y1t4KzQ+PjJdPWNbRys0Pj4yXTtjW3grOD4+Ml09Y1tHKzg+PjJdO2NbRyswPj4yXT0wO2NbRys0Pj4yXT0wO2NbRys4Pj4yXT0wO2c9b2NbY1soY1tEPj4yXXwwKSsxMj4+Ml0mMTI3XShEKXwwO0c9b2NbY1soY1tEPj4yXXwwKSsxNj4+Ml0mMTI3XShEKXwwO21jW2NbKGNbRD4+Ml18MCkrMjA+PjJdJjEyN10oSCxEKTtpZigoYVt0Pj4wXSYxKT09MCl7YVt0KzE+PjBdPTA7YVt0Pj4wXT0wfWVsc2V7YVtjW3QrOD4+Ml0+PjBdPTA7Y1t0KzQ+PjJdPTB9aWcodCk7Y1t0KzA+PjJdPWNbSCswPj4yXTtjW3QrND4+Ml09Y1tIKzQ+PjJdO2NbdCs4Pj4yXT1jW0grOD4+Ml07Y1tIKzA+PjJdPTA7Y1tIKzQ+PjJdPTA7Y1tIKzg+PjJdPTA7bWNbY1soY1tEPj4yXXwwKSsyND4+Ml0mMTI3XShFLEQpO2lmKChhW3c+PjBdJjEpPT0wKXtjW3crND4+Ml09MDthW3c+PjBdPTB9ZWxzZXtjW2Nbdys4Pj4yXT4+Ml09MDtjW3crND4+Ml09MH1vZyh3KTtjW3crMD4+Ml09Y1tFKzA+PjJdO2Nbdys0Pj4yXT1jW0UrND4+Ml07Y1t3Kzg+PjJdPWNbRSs4Pj4yXTtjW0UrMD4+Ml09MDtjW0UrND4+Ml09MDtjW0UrOD4+Ml09MDtmPW9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MDticmVha30kPVhhKDQpfDA7Y1skPj4yXT0yMTMwNDt3YigkfDAsMjEzNzYsMTk2KX1lbHNle2lmKCEoKGNbMzI0NF18MCk9PS0xKSl7Y1tRPj4yXT0xMjk3NjtjW1ErND4+Ml09MjA4O2NbUSs4Pj4yXT0wO2NnKDEyOTc2LFEpfUQ9KGNbMTI5ODA+PjJdfDApKyAtMXwwO0U9Y1tnKzg+PjJdfDA7aWYoKGNbZysxMj4+Ml18MCktRT4+Mj4+PjA+RD4+PjA/KEM9Y1tFKyhEPDwyKT4+Ml18MCwoQ3wwKSE9MCk6MCl7bWNbY1soY1tDPj4yXXwwKSs0ND4+Ml0mMTI3XShOLEMpO2NbRj4+Ml09Y1tOPj4yXTttY1tjWyhjW0M+PjJdfDApKzMyPj4yXSYxMjddKE0sQyk7aWYoKGFbcj4+MF0mMSk9PTApe2Nbcis0Pj4yXT0wO2Fbcj4+MF09MH1lbHNle2NbY1tyKzg+PjJdPj4yXT0wO2Nbcis0Pj4yXT0wfW9nKHIpO2NbciswPj4yXT1jW00rMD4+Ml07Y1tyKzQ+PjJdPWNbTSs0Pj4yXTtjW3IrOD4+Ml09Y1tNKzg+PjJdO2NbTSswPj4yXT0wO2NbTSs0Pj4yXT0wO2NbTSs4Pj4yXT0wO21jW2NbKGNbQz4+Ml18MCkrMjg+PjJdJjEyN10oTCxDKTtpZigoYVt4Pj4wXSYxKT09MCl7Y1t4KzQ+PjJdPTA7YVt4Pj4wXT0wfWVsc2V7Y1tjW3grOD4+Ml0+PjJdPTA7Y1t4KzQ+PjJdPTB9b2coeCk7Y1t4KzA+PjJdPWNbTCswPj4yXTtjW3grND4+Ml09Y1tMKzQ+PjJdO2NbeCs4Pj4yXT1jW0wrOD4+Ml07Y1tMKzA+PjJdPTA7Y1tMKzQ+PjJdPTA7Y1tMKzg+PjJdPTA7Zz1vY1tjWyhjW0M+PjJdfDApKzEyPj4yXSYxMjddKEMpfDA7Rz1vY1tjWyhjW0M+PjJdfDApKzE2Pj4yXSYxMjddKEMpfDA7bWNbY1soY1tDPj4yXXwwKSsyMD4+Ml0mMTI3XShKLEMpO2lmKChhW3Q+PjBdJjEpPT0wKXthW3QrMT4+MF09MDthW3Q+PjBdPTB9ZWxzZXthW2NbdCs4Pj4yXT4+MF09MDtjW3QrND4+Ml09MH1pZyh0KTtjW3QrMD4+Ml09Y1tKKzA+PjJdO2NbdCs0Pj4yXT1jW0orND4+Ml07Y1t0Kzg+PjJdPWNbSis4Pj4yXTtjW0orMD4+Ml09MDtjW0orND4+Ml09MDtjW0orOD4+Ml09MDttY1tjWyhjW0M+PjJdfDApKzI0Pj4yXSYxMjddKEksQyk7aWYoKGFbdz4+MF0mMSk9PTApe2Nbdys0Pj4yXT0wO2Fbdz4+MF09MH1lbHNle2NbY1t3Kzg+PjJdPj4yXT0wO2Nbdys0Pj4yXT0wfW9nKHcpO2NbdyswPj4yXT1jW0krMD4+Ml07Y1t3KzQ+PjJdPWNbSSs0Pj4yXTtjW3crOD4+Ml09Y1tJKzg+PjJdO2NbSSswPj4yXT0wO2NbSSs0Pj4yXT0wO2NbSSs4Pj4yXT0wO2Y9b2NbY1soY1tDPj4yXXwwKSszNj4+Ml0mMTI3XShDKXwwO2JyZWFrfSQ9WGEoNCl8MDtjWyQ+PjJdPTIxMzA0O3diKCR8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtjW24+PjJdPWNbbT4+Ml07ST1yKzR8MDtEPXIrOHwwO0g9eCs0fDA7Qz14Kzh8MDtMPShoJjUxMnwwKSE9MDtKPXcrNHwwO2g9dys4fDA7TT1zKzR8MDtFPXMrOHwwO049RiszfDA7Sz1tKzR8MDtPPXQrNHwwO1M9UCs0MDB8MDtVPVA7VD1QO1E9MDtQPTA7Uj0yMTM7YTp3aGlsZSgxKXtWPWNbYj4+Ml18MDtkb3tpZigoVnwwKSE9MCl7Vz1jW1YrMTI+PjJdfDA7aWYoKFd8MCk9PShjW1YrMTY+PjJdfDApKXtWPW9jW2NbKGNbVj4+Ml18MCkrMzY+PjJdJjEyN10oVil8MH1lbHNle1Y9Y1tXPj4yXXwwfWlmKChWfDApPT0tMSl7Y1tiPj4yXT0wO1Y9MTticmVha31lbHNle1Y9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7Vj0xfX13aGlsZSgwKTtpZigoZXwwKSE9MCl7Vz1jW2UrMTI+PjJdfDA7aWYoKFd8MCk9PShjW2UrMTY+PjJdfDApKXtXPW9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MH1lbHNle1c9Y1tXPj4yXXwwfWlmKCEoKFd8MCk9PS0xKSl7aWYoIVYpe0I9Mzc4O2JyZWFrfX1lbHNle0I9NzV9fWVsc2V7Qj03NX1pZigoQnwwKT09NzUpe0I9MDtpZihWKXtlPTA7Qj0zNzg7YnJlYWt9ZWxzZXtlPTB9fWI6ZG97c3dpdGNoKGFbRitRPj4wXXwwKXtjYXNlIDE6e2lmKChRfDApPT0zKXtCPTM3ODticmVhayBhfUI9Y1tiPj4yXXwwO1Y9Y1tCKzEyPj4yXXwwO2lmKChWfDApPT0oY1tCKzE2Pj4yXXwwKSl7Qj1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtCPWNbVj4+Ml18MH1pZighKGhjW2NbKGNbbD4+Ml18MCkrMTI+PjJdJjYzXShsLDgxOTIsQil8MCkpe0I9OTc7YnJlYWsgYX1XPWNbYj4+Ml18MDtCPVcrMTJ8MDtWPWNbQj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSs0MD4+Ml0mMTI3XShXKXwwfWVsc2V7Y1tCPj4yXT1WKzQ7Vj1jW1Y+PjJdfDB9Vz1hW3M+PjBdfDA7Qj0oVyYxKSE9MDtpZihCKXtYPShjW3M+PjJdJi0yKSsgLTF8MDtXPWNbTT4+Ml18MH1lbHNle1g9MTtXPShXJjI1NSk+Pj4xfWlmKChXfDApPT0oWHwwKSl7cGcocyxYLDEsWCxYLDAsMCk7aWYoKGFbcz4+MF0mMSk9PTApe0I9OTR9ZWxzZXtCPTk1fX1lbHNle2lmKEIpe0I9OTV9ZWxzZXtCPTk0fX1pZigoQnwwKT09OTQpe2Fbcz4+MF09KFc8PDEpKzI7WD1NO1k9VysxfDB9ZWxzZSBpZigoQnwwKT09OTUpe1g9Y1tFPj4yXXwwO1k9VysxfDA7Y1tNPj4yXT1ZfWNbWCsoVzw8Mik+PjJdPVY7Y1tYKyhZPDwyKT4+Ml09MDtCPTk4O2JyZWFrfTtjYXNlIDI6e2lmKCEoKFB8MCkhPTB8UT4+PjA8Mikpe2lmKChRfDApPT0yKXtWPShhW04+PjBdfDApIT0wfWVsc2V7Vj0wfWlmKCEoTHxWKSl7UD0wO2JyZWFrIGJ9fVk9YVt3Pj4wXXwwO1Y9KFkmMSk9PTA/SjpjW2g+PjJdfDA7Yzpkb3tpZigoUXwwKSE9MD8oZFtGKyhRKyAtMSk+PjBdfDApPDI6MCl7d2hpbGUoMSl7aWYoKFkmMSk9PTApe1g9SjtXPShZJjI1NSk+Pj4xfWVsc2V7WD1jW2g+PjJdfDA7Vz1jW0o+PjJdfDB9aWYoKFZ8MCk9PShYKyhXPDwyKXwwKSl7YnJlYWt9aWYoIShoY1tjWyhjW2w+PjJdfDApKzEyPj4yXSY2M10obCw4MTkyLGNbVj4+Ml18MCl8MCkpe0I9MjEyO2JyZWFrfVk9YVt3Pj4wXXwwO1Y9Vis0fDB9aWYoKEJ8MCk9PTIxMil7Qj0wO1k9YVt3Pj4wXXwwfVg9KFkmMSk9PTA/SjpjW2g+PjJdfDA7Vz1WLVg+PjI7Wj1hW3M+PjBdfDA7JD0oWiYxKT09MDtpZigkKXtfPShaJjI1NSk+Pj4xfWVsc2V7Xz1jW00+PjJdfDB9aWYoIShXPj4+MD5fPj4+MCkpe2lmKCQpe189KFomMjU1KT4+PjE7JD1NO1o9XztfPU0rKF8tVzw8Mil8MH1lbHNle2FhPWNbRT4+Ml18MDtfPWNbTT4+Ml18MDskPWFhO1o9XztfPWFhKyhfLVc8PDIpfDB9Vz0kKyhaPDwyKXwwO2lmKChffDApPT0oV3wwKSl7Vz1lO1g9ZX1lbHNle1o9WDt3aGlsZSgxKXtpZigoY1tfPj4yXXwwKSE9KGNbWj4+Ml18MCkpe1c9ZTtWPVg7WD1lO2JyZWFrIGN9Xz1fKzR8MDtpZigoX3wwKT09KFd8MCkpe1c9ZTtYPWU7YnJlYWsgY31aPVorNHwwfX19ZWxzZXtXPWU7Vj1YO1g9ZX19ZWxzZXtXPWU7WD1lfX13aGlsZSgwKTt3aGlsZSgxKXtpZigoWSYxKT09MCl7Wj1KO1k9KFkmMjU1KT4+PjF9ZWxzZXtaPWNbaD4+Ml18MDtZPWNbSj4+Ml18MH1pZigoVnwwKT09KForKFk8PDIpfDApKXticmVha31ZPWNbYj4+Ml18MDtkb3tpZigoWXwwKSE9MCl7Wj1jW1krMTI+PjJdfDA7aWYoKFp8MCk9PShjW1krMTY+PjJdfDApKXtZPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1k9Y1taPj4yXXwwfWlmKChZfDApPT0tMSl7Y1tiPj4yXT0wO1k9MTticmVha31lbHNle1k9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7WT0xfX13aGlsZSgwKTtpZigoWHwwKSE9MCl7Wj1jW1grMTI+PjJdfDA7aWYoKFp8MCk9PShjW1grMTY+PjJdfDApKXtYPW9jW2NbKGNbWD4+Ml18MCkrMzY+PjJdJjEyN10oWCl8MH1lbHNle1g9Y1taPj4yXXwwfWlmKCEoKFh8MCk9PS0xKSl7aWYoWV4oV3wwKT09MCl7WT1XO1g9V31lbHNle2JyZWFrfX1lbHNle1c9MDtlPTA7Qj0yNDB9fWVsc2V7Qj0yNDB9aWYoKEJ8MCk9PTI0MCl7Qj0wO2lmKFkpe2JyZWFrfWVsc2V7WT1XO1g9MH19Wj1jW2I+PjJdfDA7Vz1jW1orMTI+PjJdfDA7aWYoKFd8MCk9PShjW1orMTY+PjJdfDApKXtXPW9jW2NbKGNbWj4+Ml18MCkrMzY+PjJdJjEyN10oWil8MH1lbHNle1c9Y1tXPj4yXXwwfWlmKChXfDApIT0oY1tWPj4yXXwwKSl7YnJlYWt9Xz1jW2I+PjJdfDA7Vz1fKzEyfDA7Wj1jW1c+PjJdfDA7aWYoKFp8MCk9PShjW18rMTY+PjJdfDApKXtvY1tjWyhjW18+PjJdfDApKzQwPj4yXSYxMjddKF8pfDB9ZWxzZXtjW1c+PjJdPVorNH1XPVk7WT1hW3c+PjBdfDA7Vj1WKzR8MH1pZihMKXtYPWFbdz4+MF18MDtpZigoWCYxKT09MCl7Vz1KO1g9KFgmMjU1KT4+PjF9ZWxzZXtXPWNbaD4+Ml18MDtYPWNbSj4+Ml18MH1pZigoVnwwKSE9KFcrKFg8PDIpfDApKXtCPTI1NTticmVhayBhfX1icmVha307Y2FzZSAwOntCPTk4O2JyZWFrfTtjYXNlIDM6e1Y9YVt4Pj4wXXwwO1g9KFYmMSk9PTA7aWYoWCl7Wj0oViYyNTUpPj4+MX1lbHNle1o9Y1tIPj4yXXwwfVc9YVtyPj4wXXwwO1k9KFcmMSk9PTA7aWYoWSl7Xz0oVyYyNTUpPj4+MX1lbHNle189Y1tJPj4yXXwwfWlmKChafDApIT0oMC1ffDApKXtpZihYKXtaPShWJjI1NSk+Pj4xfWVsc2V7Wj1jW0g+PjJdfDB9aWYoKFp8MCkhPTApe2lmKFkpe1k9KFcmMjU1KT4+PjF9ZWxzZXtZPWNbST4+Ml18MH1pZigoWXwwKSE9MCl7WD1jW2I+PjJdfDA7WT1jW1grMTI+PjJdfDA7Wj1jW1grMTY+PjJdfDA7aWYoKFl8MCk9PShafDApKXtXPW9jW2NbKGNbWD4+Ml18MCkrMzY+PjJdJjEyN10oWCl8MDtaPWNbYj4+Ml18MDtWPWFbeD4+MF18MDtYPVo7WT1jW1orMTI+PjJdfDA7Wj1jW1orMTY+PjJdfDB9ZWxzZXtXPWNbWT4+Ml18MH1fPVgrMTJ8MDtaPShZfDApPT0oWnwwKTtpZigoV3wwKT09KGNbKChWJjEpPT0wP0g6Y1tDPj4yXXwwKT4+Ml18MCkpe2lmKFope29jW2NbKGNbWD4+Ml18MCkrNDA+PjJdJjEyN10oWCl8MH1lbHNle2NbXz4+Ml09WSs0fVY9YVt4Pj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0g+PjJdfDB9UD1WPj4+MD4xP3g6UDticmVhayBifWlmKFope1Y9b2NbY1soY1tYPj4yXXwwKSszNj4+Ml0mMTI3XShYKXwwfWVsc2V7Vj1jW1k+PjJdfDB9aWYoKFZ8MCkhPShjWygoYVtyPj4wXSYxKT09MD9JOmNbRD4+Ml18MCk+PjJdfDApKXtCPTE5ODticmVhayBhfVY9Y1tiPj4yXXwwO1c9VisxMnwwO1g9Y1tXPj4yXXwwO2lmKChYfDApPT0oY1tWKzE2Pj4yXXwwKSl7b2NbY1soY1tWPj4yXXwwKSs0MD4+Ml0mMTI3XShWKXwwfWVsc2V7Y1tXPj4yXT1YKzR9YVtrPj4wXT0xO1Y9YVtyPj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0k+PjJdfDB9UD1WPj4+MD4xP3I6UDticmVhayBifX1pZihYKXtYPShWJjI1NSk+Pj4xfWVsc2V7WD1jW0g+PjJdfDB9WT1jW2I+PjJdfDA7Wj1jW1krMTI+PjJdfDA7Xz0oWnwwKT09KGNbWSsxNj4+Ml18MCk7aWYoKFh8MCk9PTApe2lmKF8pe1Y9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwO1c9YVtyPj4wXXwwfWVsc2V7Vj1jW1o+PjJdfDB9aWYoKFZ8MCkhPShjWygoVyYxKT09MD9JOmNbRD4+Ml18MCk+PjJdfDApKXticmVhayBifVg9Y1tiPj4yXXwwO1c9WCsxMnwwO1Y9Y1tXPj4yXXwwO2lmKChWfDApPT0oY1tYKzE2Pj4yXXwwKSl7b2NbY1soY1tYPj4yXXwwKSs0MD4+Ml0mMTI3XShYKXwwfWVsc2V7Y1tXPj4yXT1WKzR9YVtrPj4wXT0xO1Y9YVtyPj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0k+PjJdfDB9UD1WPj4+MD4xP3I6UDticmVhayBifWlmKF8pe1c9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwO1Y9YVt4Pj4wXXwwfWVsc2V7Vz1jW1o+PjJdfDB9aWYoKFd8MCkhPShjWygoViYxKT09MD9IOmNbQz4+Ml18MCk+PjJdfDApKXthW2s+PjBdPTE7YnJlYWsgYn1YPWNbYj4+Ml18MDtXPVgrMTJ8MDtWPWNbVz4+Ml18MDtpZigoVnwwKT09KGNbWCsxNj4+Ml18MCkpe29jW2NbKGNbWD4+Ml18MCkrNDA+PjJdJjEyN10oWCl8MH1lbHNle2NbVz4+Ml09Vis0fVY9YVt4Pj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0g+PjJdfDB9UD1WPj4+MD4xP3g6UH1icmVha307Y2FzZSA0OntWPTA7d2hpbGUoMSl7WD1jW2I+PjJdfDA7ZG97aWYoKFh8MCkhPTApe1c9Y1tYKzEyPj4yXXwwO2lmKChXfDApPT0oY1tYKzE2Pj4yXXwwKSl7Vz1vY1tjWyhjW1g+PjJdfDApKzM2Pj4yXSYxMjddKFgpfDB9ZWxzZXtXPWNbVz4+Ml18MH1pZigoV3wwKT09LTEpe2NbYj4+Ml09MDtXPTE7YnJlYWt9ZWxzZXtXPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle1c9MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe1g9Y1tlKzEyPj4yXXwwO2lmKChYfDApPT0oY1tlKzE2Pj4yXXwwKSl7WD1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtYPWNbWD4+Ml18MH1pZighKChYfDApPT0tMSkpe2lmKCFXKXticmVha319ZWxzZXtCPTI2OH19ZWxzZXtCPTI2OH1pZigoQnwwKT09MjY4KXtCPTA7aWYoVyl7ZT0wO2JyZWFrfWVsc2V7ZT0wfX1YPWNbYj4+Ml18MDtXPWNbWCsxMj4+Ml18MDtpZigoV3wwKT09KGNbWCsxNj4+Ml18MCkpe1c9b2NbY1soY1tYPj4yXXwwKSszNj4+Ml0mMTI3XShYKXwwfWVsc2V7Vz1jW1c+PjJdfDB9aWYoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsMjA0OCxXKXwwKXtYPWNbbj4+Ml18MDtpZigoWHwwKT09KG98MCkpe1k9KGNbSz4+Ml18MCkhPTIxMztaPWNbbT4+Ml18MDtvPW8tWnwwO1g9bz4+PjA8MjE0NzQ4MzY0Nz9vPDwxOi0xO289bz4+MjtpZighWSl7Wj0wfVo9d24oWixYKXwwO2lmKChafDApPT0wKXtCPTI3OTticmVhayBhfWlmKCFZKXtZPWNbbT4+Ml18MDtjW20+PjJdPVo7aWYoKFl8MCkhPTApe2xjW2NbSz4+Ml0mMjU1XShZKTtaPWNbbT4+Ml18MH19ZWxzZXtjW20+PjJdPVp9Y1tLPj4yXT0yMTQ7YWE9Wisobzw8Mil8MDtjW24+PjJdPWFhO289KGNbbT4+Ml18MCkrKFg+Pj4yPDwyKXwwO1g9YWF9Y1tuPj4yXT1YKzQ7Y1tYPj4yXT1XO1Y9VisxfDB9ZWxzZXtYPWFbdD4+MF18MDtpZigoWCYxKT09MCl7WD0oWCYyNTUpPj4+MX1lbHNle1g9Y1tPPj4yXXwwfWlmKCEoKCgoWHwwKT09MHwoVnwwKT09MCleMSkmKFd8MCk9PShHfDApKSl7YnJlYWt9aWYoKFV8MCk9PShTfDApKXtVPVUtVHwwO1M9VT4+PjA8MjE0NzQ4MzY0Nz9VPDwxOi0xO2lmKChSfDApPT0yMTMpe1Q9MH1SPXduKFQsUyl8MDtpZigoUnwwKT09MCl7Qj0yOTY7YnJlYWsgYX1UPVI7Uz1SKyhTPj4+Mjw8Mil8MDtVPVIrKFU+PjI8PDIpfDA7Uj0yMTR9Y1tVPj4yXT1WO1U9VSs0fDA7Vj0wfVc9Y1tiPj4yXXwwO1g9VysxMnwwO1k9Y1tYPj4yXXwwO2lmKChZfDApPT0oY1tXKzE2Pj4yXXwwKSl7b2NbY1soY1tXPj4yXXwwKSs0MD4+Ml0mMTI3XShXKXwwO2NvbnRpbnVlfWVsc2V7Y1tYPj4yXT1ZKzQ7Y29udGludWV9fWlmKCEoKFR8MCk9PShVfDApfChWfDApPT0wKSl7aWYoKFV8MCk9PShTfDApKXtVPVUtVHwwO1M9VT4+PjA8MjE0NzQ4MzY0Nz9VPDwxOi0xO2lmKChSfDApPT0yMTMpe1Q9MH1SPXduKFQsUyl8MDtpZigoUnwwKT09MCl7Qj0zMDg7YnJlYWsgYX1UPVI7Uz1SKyhTPj4+Mjw8Mil8MDtVPVIrKFU+PjI8PDIpfDA7Uj0yMTR9Y1tVPj4yXT1WO1U9VSs0fDB9aWYoKGZ8MCk+MCl7Vz1jW2I+PjJdfDA7ZG97aWYoKFd8MCkhPTApe1Y9Y1tXKzEyPj4yXXwwO2lmKChWfDApPT0oY1tXKzE2Pj4yXXwwKSl7Vj1vY1tjWyhjW1c+PjJdfDApKzM2Pj4yXSYxMjddKFcpfDB9ZWxzZXtWPWNbVj4+Ml18MH1pZigoVnwwKT09LTEpe2NbYj4+Ml09MDtWPTE7YnJlYWt9ZWxzZXtWPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle1Y9MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe1c9Y1tlKzEyPj4yXXwwO2lmKChXfDApPT0oY1tlKzE2Pj4yXXwwKSl7Vz1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtXPWNbVz4+Ml18MH1pZighKChXfDApPT0tMSkpe2lmKCFWKXtCPTMzMTticmVhayBhfX1lbHNle0I9MzI1fX1lbHNle0I9MzI1fWlmKChCfDApPT0zMjUpe0I9MDtpZihWKXtCPTMzMTticmVhayBhfWVsc2V7ZT0wfX1XPWNbYj4+Ml18MDtWPWNbVysxMj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoKFZ8MCkhPShnfDApKXtCPTMzMTticmVhayBhfVY9Y1tiPj4yXXwwO1c9VisxMnwwO1g9Y1tXPj4yXXwwO2lmKChYfDApPT0oY1tWKzE2Pj4yXXwwKSl7b2NbY1soY1tWPj4yXXwwKSs0MD4+Ml0mMTI3XShWKXwwO1g9ZTtXPWV9ZWxzZXtjW1c+PjJdPVgrNDtYPWU7Vz1lfXdoaWxlKDEpe1k9Y1tiPj4yXXwwO2Rve2lmKChZfDApIT0wKXtWPWNbWSsxMj4+Ml18MDtpZigoVnwwKT09KGNbWSsxNj4+Ml18MCkpe1Y9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoKFZ8MCk9PS0xKXtjW2I+PjJdPTA7WT0xO2JyZWFrfWVsc2V7WT0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtZPTF9fXdoaWxlKDApO2lmKChXfDApIT0wKXtWPWNbVysxMj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoISgoVnwwKT09LTEpKXtpZihZXihYfDApPT0wKXtWPVg7Vz1YfWVsc2V7Qj0zNTQ7YnJlYWsgYX19ZWxzZXtWPTA7ZT0wO0I9MzQ3fX1lbHNle1Y9WDtCPTM0N31pZigoQnwwKT09MzQ3KXtCPTA7aWYoWSl7Qj0zNTQ7YnJlYWsgYX1lbHNle1c9MH19WT1jW2I+PjJdfDA7WD1jW1krMTI+PjJdfDA7aWYoKFh8MCk9PShjW1krMTY+PjJdfDApKXtYPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1g9Y1tYPj4yXXwwfWlmKCEoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsMjA0OCxYKXwwKSl7Qj0zNTQ7YnJlYWsgYX1YPWNbbj4+Ml18MDtpZigoWHwwKT09KG98MCkpe1k9KGNbSz4+Ml18MCkhPTIxMztaPWNbbT4+Ml18MDtYPW8tWnwwO289WD4+PjA8MjE0NzQ4MzY0Nz9YPDwxOi0xO1g9WD4+MjtpZighWSl7Wj0wfVo9d24oWixvKXwwO2lmKChafDApPT0wKXtCPTM1OTticmVhayBhfWRve2lmKFkpe2NbbT4+Ml09Wn1lbHNle1k9Y1ttPj4yXXwwO2NbbT4+Ml09WjtpZigoWXwwKT09MCl7YnJlYWt9bGNbY1tLPj4yXSYyNTVdKFkpO1o9Y1ttPj4yXXwwfX13aGlsZSgwKTtjW0s+PjJdPTIxNDtYPVorKFg8PDIpfDA7Y1tuPj4yXT1YO289KGNbbT4+Ml18MCkrKG8+Pj4yPDwyKXwwfVk9Y1tiPj4yXXwwO1o9Y1tZKzEyPj4yXXwwO2lmKChafDApPT0oY1tZKzE2Pj4yXXwwKSl7WT1vY1tjWyhjW1k+PjJdfDApKzM2Pj4yXSYxMjddKFkpfDA7WD1jW24+PjJdfDB9ZWxzZXtZPWNbWj4+Ml18MH1jW24+PjJdPVgrNDtjW1g+PjJdPVk7Zj1mKyAtMXwwO1g9Y1tiPj4yXXwwO1k9WCsxMnwwO1o9Y1tZPj4yXXwwO2lmKChafDApPT0oY1tYKzE2Pj4yXXwwKSl7b2NbY1soY1tYPj4yXXwwKSs0MD4+Ml0mMTI3XShYKXwwfWVsc2V7Y1tZPj4yXT1aKzR9aWYoKGZ8MCk+MCl7WD1WfWVsc2V7YnJlYWt9fX1pZigoY1tuPj4yXXwwKT09KGNbbT4+Ml18MCkpe0I9Mzc2O2JyZWFrIGF9YnJlYWt9O2RlZmF1bHQ6e319fXdoaWxlKDApO2Q6ZG97aWYoKEJ8MCk9PTk4KXtCPTA7aWYoKFF8MCk9PTMpe0I9Mzc4O2JyZWFrIGF9ZWxzZXtYPWU7Vj1lfXdoaWxlKDEpe1c9Y1tiPj4yXXwwO2Rve2lmKChXfDApIT0wKXtZPWNbVysxMj4+Ml18MDtpZigoWXwwKT09KGNbVysxNj4+Ml18MCkpe1c9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vz1jW1k+PjJdfDB9aWYoKFd8MCk9PS0xKXtjW2I+PjJdPTA7WT0xO2JyZWFrfWVsc2V7WT0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtZPTF9fXdoaWxlKDApO2lmKChWfDApIT0wKXtXPWNbVisxMj4+Ml18MDtpZigoV3wwKT09KGNbVisxNj4+Ml18MCkpe1Y9b2NbY1soY1tWPj4yXXwwKSszNj4+Ml0mMTI3XShWKXwwfWVsc2V7Vj1jW1c+PjJdfDB9aWYoISgoVnwwKT09LTEpKXtpZihZXihYfDApPT0wKXtXPVg7Vj1YfWVsc2V7YnJlYWsgZH19ZWxzZXtXPTA7ZT0wO0I9MTExfX1lbHNle1c9WDtCPTExMX1pZigoQnwwKT09MTExKXtCPTA7aWYoWSl7YnJlYWsgZH1lbHNle1Y9MH19WT1jW2I+PjJdfDA7WD1jW1krMTI+PjJdfDA7aWYoKFh8MCk9PShjW1krMTY+PjJdfDApKXtYPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1g9Y1tYPj4yXXwwfWlmKCEoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsODE5MixYKXwwKSl7YnJlYWsgZH1CPWNbYj4+Ml18MDtYPUIrMTJ8MDtZPWNbWD4+Ml18MDtpZigoWXwwKT09KGNbQisxNj4+Ml18MCkpe1g9b2NbY1soY1tCPj4yXXwwKSs0MD4+Ml0mMTI3XShCKXwwfWVsc2V7Y1tYPj4yXT1ZKzQ7WD1jW1k+PjJdfDB9WT1hW3M+PjBdfDA7Wj0oWSYxKSE9MDtpZihaKXtCPShjW3M+PjJdJi0yKSsgLTF8MDtZPWNbTT4+Ml18MH1lbHNle0I9MTtZPShZJjI1NSk+Pj4xfWlmKChZfDApPT0oQnwwKSl7cGcocyxCLDEsQixCLDAsMCk7aWYoKGFbcz4+MF0mMSk9PTApe0I9MTI4fWVsc2V7Qj0xMjl9fWVsc2V7aWYoWil7Qj0xMjl9ZWxzZXtCPTEyOH19aWYoKEJ8MCk9PTEyOCl7Qj0wO2Fbcz4+MF09KFk8PDEpKzI7Wj1NO189WSsxfDB9ZWxzZSBpZigoQnwwKT09MTI5KXtCPTA7Wj1jW0U+PjJdfDA7Xz1ZKzF8MDtjW00+PjJdPV99Y1taKyhZPDwyKT4+Ml09WDtjW1orKF88PDIpPj4yXT0wO1g9V319fXdoaWxlKDApO1E9USsxfDA7aWYoIShRPj4+MDw0KSl7Qj0zNzg7YnJlYWt9fWU6c3dpdGNoKEJ8MCl7Y2FzZSA5Nzp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDE5ODp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDI1NTp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDI3OTp7YWE9WGEoNCl8MDtjW2FhPj4yXT0yMjY4MDt3YihhYXwwLDIyNzI4LDIwNil9O2Nhc2UgMjk2OnthYT1YYSg0KXwwO2NbYWE+PjJdPTIyNjgwO3diKGFhfDAsMjI3MjgsMjA2KX07Y2FzZSAzMDg6e2FhPVhhKDQpfDA7Y1thYT4+Ml09MjI2ODA7d2IoYWF8MCwyMjcyOCwyMDYpfTtjYXNlIDMzMTp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDM1NDp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDM1OTp7YWE9WGEoNCl8MDtjW2FhPj4yXT0yMjY4MDt3YihhYXwwLDIyNzI4LDIwNil9O2Nhc2UgMzc2OntjW2o+PjJdPWNbaj4+Ml18NDtiPTA7YnJlYWt9O2Nhc2UgMzc4OntmOmRve2lmKChQfDApIT0wKXtsPVArNHwwO0Y9UCs4fDA7az0xO3doaWxlKDEpe209YVtQPj4wXXwwO2lmKChtJjEpPT0wKXttPShtJjI1NSk+Pj4xfWVsc2V7bT1jW2w+PjJdfDB9aWYoIShrPj4+MDxtPj4+MCkpe2JyZWFrIGZ9bj1jW2I+PjJdfDA7ZG97aWYoKG58MCkhPTApe209Y1tuKzEyPj4yXXwwO2lmKChtfDApPT0oY1tuKzE2Pj4yXXwwKSl7bT1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXttPWNbbT4+Ml18MH1pZigobXwwKT09LTEpe2NbYj4+Ml09MDttPTE7YnJlYWt9ZWxzZXttPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle209MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe249Y1tlKzEyPj4yXXwwO2lmKChufDApPT0oY1tlKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZighKChufDApPT0tMSkpe2lmKCFtKXticmVha319ZWxzZXtCPTM5Nn19ZWxzZXtCPTM5Nn1pZigoQnwwKT09Mzk2KXtCPTA7aWYobSl7YnJlYWt9ZWxzZXtlPTB9fW09Y1tiPj4yXXwwO249Y1ttKzEyPj4yXXwwO2lmKChufDApPT0oY1ttKzE2Pj4yXXwwKSl7bT1vY1tjWyhjW20+PjJdfDApKzM2Pj4yXSYxMjddKG0pfDB9ZWxzZXttPWNbbj4+Ml18MH1pZigoYVtQPj4wXSYxKT09MCl7bj1sfWVsc2V7bj1jW0Y+PjJdfDB9aWYoKG18MCkhPShjW24rKGs8PDIpPj4yXXwwKSl7YnJlYWt9az1rKzF8MDtnPWNbYj4+Ml18MDtuPWcrMTJ8MDttPWNbbj4+Ml18MDtpZigobXwwKT09KGNbZysxNj4+Ml18MCkpe29jW2NbKGNbZz4+Ml18MCkrNDA+PjJdJjEyN10oZyl8MDtjb250aW51ZX1lbHNle2Nbbj4+Ml09bSs0O2NvbnRpbnVlfX1jW2o+PjJdPWNbaj4+Ml18NDtiPTA7YnJlYWsgZX19d2hpbGUoMCk7aWYoKFR8MCkhPShVfDApKXtjW0E+PjJdPTA7cWsodCxULFUsQSk7aWYoKGNbQT4+Ml18MCk9PTApe2I9MX1lbHNle2Nbaj4+Ml09Y1tqPj4yXXw0O2I9MH19ZWxzZXtiPTE7VD1VfWJyZWFrfX1pZighKChhW3M+PjBdJjEpPT0wKT8oej1jW0U+PjJdfDAsKHp8MCkhPTApOjApe3ZuKHopfWlmKCEoKGFbcj4+MF0mMSk9PTApPyh5PWNbRD4+Ml18MCwoeXwwKSE9MCk6MCl7dm4oeSl9aWYoISgoYVt4Pj4wXSYxKT09MCk/KHU9Y1tDPj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhW3c+PjBdJjEpPT0wKT8ocT1jW2g+PjJdfDAsKHF8MCkhPTApOjApe3ZuKHEpfWlmKCEoKGFbdD4+MF0mMSk9PTApPyhwPWNbdCs4Pj4yXXwwLChwfDApIT0wKTowKXt2bihwKX1pZigoVHwwKT09MCl7aT12O3JldHVybiBifDB9bGNbUiYyNTVdKFQpO2k9djtyZXR1cm4gYnwwfWZ1bmN0aW9uIHZrKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7bT1pO2k9aSs0MzJ8MDtwPW07cz1tKzI0fDA7ZD1tKzE2fDA7cT1tKzEyfDA7dD1tKzQyNHwwO2NbZD4+Ml09cztsPWQrNHwwO2NbbD4+Ml09MjEzO3M9cys0MDB8MDtuPWNbaCsyOD4+Ml18MDt2PW4rNHwwO2Nbdj4+Ml09KGNbdj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbcD4+Ml09MTM0NDg7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ0OCxwKX1wPShjWzEzNDUyPj4yXXwwKSsgLTF8MDt1PWNbbis4Pj4yXXwwO2lmKChjW24rMTI+PjJdfDApLXU+PjI+Pj4wPnA+Pj4wPyhyPWNbdSsocDw8Mik+PjJdfDAsKHJ8MCkhPTApOjApe2FbdD4+MF09MDtwPWNbZj4+Ml18MDtkb3tpZih1ayhlLHAsZyxuLGNbaCs0Pj4yXXwwLGosdCxyLGQscSxzKXwwKXtpZigoYVtrPj4wXSYxKT09MCl7Y1trKzQ+PjJdPTA7YVtrPj4wXT0wfWVsc2V7Y1tjW2srOD4+Ml0+PjJdPTA7Y1trKzQ+PjJdPTB9aWYoKGFbdD4+MF18MCkhPTApe2c9eGNbY1soY1tyPj4yXXwwKSs0ND4+Ml0mNjNdKHIsNDUpfDA7aD1hW2s+PjBdfDA7bz0oaCYxKSE9MDtpZihvKXtzPShjW2s+PjJdJi0yKSsgLTF8MDtoPWNbays0Pj4yXXwwfWVsc2V7cz0xO2g9KGgmMjU1KT4+PjF9aWYoKGh8MCk9PShzfDApKXtwZyhrLHMsMSxzLHMsMCwwKTtpZigoYVtrPj4wXSYxKT09MCl7bz0yMX1lbHNle289MjJ9fWVsc2V7aWYobyl7bz0yMn1lbHNle289MjF9fWlmKChvfDApPT0yMSl7YVtrPj4wXT0oaDw8MSkrMjt0PWsrNHwwO3M9aCsxfDB9ZWxzZSBpZigob3wwKT09MjIpe3Q9Y1trKzg+PjJdfDA7cz1oKzF8MDtjW2srND4+Ml09c31jW3QrKGg8PDIpPj4yXT1nO2NbdCsoczw8Mik+PjJdPTB9cj14Y1tjWyhjW3I+PjJdfDApKzQ0Pj4yXSY2M10ociw0OCl8MDtzPWNbZD4+Ml18MDtxPWNbcT4+Ml18MDtoPXErIC00fDA7YTpkb3tpZihzPj4+MDxoPj4+MCl7d2hpbGUoMSl7Zz1zKzR8MDtpZigoY1tzPj4yXXwwKSE9KHJ8MCkpe2JyZWFrIGF9aWYoZz4+PjA8aD4+PjApe3M9Z31lbHNle3M9ZzticmVha319fX13aGlsZSgwKTt0PXM7cj1hW2s+PjBdfDA7aWYoKHImMSk9PTApe3Y9cjt1PTE7Zz0ociYyNTUpPj4+MX1lbHNle3U9Y1trPj4yXXwwO3Y9dSYyNTU7dT0odSYtMikrIC0xfDA7Zz1jW2srND4+Ml18MH1yPXEtdD4+MjtpZigocnwwKSE9MCl7aWYoKHUtZ3wwKT4+PjA8cj4+PjApe3BnKGssdSxnK3ItdXwwLGcsZywwLDApO3Y9YVtrPj4wXXwwfWlmKCh2JjEpPT0wKXt1PWsrNHwwfWVsc2V7dT1jW2srOD4+Ml18MH12PXUrKGc8PDIpfDA7aWYoKHN8MCkhPShxfDApKXtoPWcrKChoKygwLXQpfDApPj4+MikrMXwwO3doaWxlKDEpe2Nbdj4+Ml09Y1tzPj4yXTtzPXMrNHwwO2lmKChzfDApPT0ocXwwKSl7YnJlYWt9dj12KzR8MH12PXUrKGg8PDIpfDB9Y1t2Pj4yXT0wO3E9ZytyfDA7aWYoKGFbaz4+MF0mMSk9PTApe2Fbaz4+MF09cTw8MTticmVha31lbHNle2Nbays0Pj4yXT1xO2JyZWFrfX19fXdoaWxlKDApO2s9Y1tlPj4yXXwwO2lmKChrfDApIT0wKXtxPWNbaysxMj4+Ml18MDtpZigocXwwKT09KGNbaysxNj4+Ml18MCkpe3E9b2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwfWVsc2V7cT1jW3E+PjJdfDB9aWYoKHF8MCk9PS0xKXtjW2U+PjJdPTA7az0wO2U9MX1lbHNle2U9MH19ZWxzZXtrPTA7ZT0xfWRve2lmKChwfDApIT0wKXtxPWNbcCsxMj4+Ml18MDtpZigocXwwKT09KGNbcCsxNj4+Ml18MCkpe3A9b2NbY1soY1twPj4yXXwwKSszNj4+Ml0mMTI3XShwKXwwfWVsc2V7cD1jW3E+PjJdfDB9aWYoISgocHwwKT09LTEpKXtpZihlKXticmVha31lbHNle289NjA7YnJlYWt9fWVsc2V7Y1tmPj4yXT0wO289NTg7YnJlYWt9fWVsc2V7bz01OH19d2hpbGUoMCk7aWYoKG98MCk9PTU4P2U6MCl7bz02MH1pZigob3wwKT09NjApe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09azt1PW4rNHwwO3Y9Y1t1Pj4yXXwwO2NbdT4+Ml09disgLTE7aWYoKHZ8MCk9PTApe2xjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKX1qPWNbZD4+Ml18MDtjW2Q+PjJdPTA7aWYoKGp8MCk9PTApe2k9bTtyZXR1cm59bGNbY1tsPj4yXSYyNTVdKGopO2k9bTtyZXR1cm59dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gd2soYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGsoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHlrKGIsZCxlLGYsZyxqLGwpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2w9K2w7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtxPWk7aT1pKzM2OHwwO0E9cTtDPXErMTU2fDA7RT1xKzEzMnwwO0I9cSsyNTZ8MDt0PXErMTQ4fDA7cz1xKzM1NnwwO3I9cSszNTd8MDt4PXErMTM2fDA7ZD1xKzEwNHwwO3c9cSsxMTZ8MDtGPXErMTAwfDA7dj1xKzEyOHwwO3U9cSsxNTJ8MDtjW0U+PjJdPUM7aFtrPj4zXT1sO2NbQT4+Ml09Y1trPj4yXTtjW0ErND4+Ml09Y1trKzQ+PjJdO0M9bGIoQ3wwLDEwMCwxMzIyNCxBfDApfDA7aWYoQz4+PjA+OTkpe2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1DPWNbMzM0MF18MDtoW2s+PjNdPWw7Y1tBPj4yXT1jW2s+PjJdO2NbQSs0Pj4yXT1jW2srND4+Ml07Qz1DaShFLEMsMTMyMjQsQSl8MDt6PWNbRT4+Ml18MDtpZigoenwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9Qj11bihDKXwwO2lmKChCfDApPT0wKXtIPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1lbHNle3k9Qn19ZWxzZXt5PTA7ej0wfUQ9Y1tnKzI4Pj4yXXwwO0g9RCs0fDA7Y1tIPj4yXT0oY1tIPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tBPj4yXT0xMzQ1NjtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEzNDU2LEEpfUc9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0g9Y1tEKzg+PjJdfDA7aWYoKGNbRCsxMj4+Ml18MCktSD4+Mj4+PjA+Rz4+PjA/KHA9Y1tIKyhHPDwyKT4+Ml18MCwocHwwKSE9MCk6MCl7SD1jW0U+PjJdfDA7dWNbY1soY1twPj4yXXwwKSszMj4+Ml0mMzFdKHAsSCxIK0N8MCxCKXwwO2lmKChDfDApPT0wKXtFPTB9ZWxzZXtFPShhW2NbRT4+Ml0+PjBdfDApPT00NX1jW3Q+PjJdPTA7Y1t4KzA+PjJdPTA7Y1t4KzQ+PjJdPTA7Y1t4Kzg+PjJdPTA7Y1tkKzA+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tkKzg+PjJdPTA7Y1t3KzA+PjJdPTA7Y1t3KzQ+PjJdPTA7Y1t3Kzg+PjJdPTA7emsoZixFLEQsdCxzLHIseCxkLHcsRik7Zj1jW0Y+PjJdfDA7aWYoKEN8MCk+KGZ8MCkpe0Y9YVt3Pj4wXXwwO2lmKChGJjEpPT0wKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW3crND4+Ml18MH1HPWFbZD4+MF18MDtpZigoRyYxKT09MCl7Rz0oRyYyNTUpPj4+MX1lbHNle0c9Y1tkKzQ+PjJdfDB9Rj1GKyhDLWY8PDF8MSkrR3wwfWVsc2V7Rj1hW3c+PjBdfDA7aWYoKEYmMSk9PTApe0Y9KEYmMjU1KT4+PjF9ZWxzZXtGPWNbdys0Pj4yXXwwfUc9YVtkPj4wXXwwO2lmKChHJjEpPT0wKXtHPShHJjI1NSk+Pj4xfWVsc2V7Rz1jW2QrND4+Ml18MH1GPUYrMitHfDB9Rj1GK2Z8MDtpZihGPj4+MD4xMDApe0E9dW4oRil8MDtpZigoQXwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9ZWxzZXtGPUF9fWVsc2V7Rj0wfUFrKEEsdix1LGNbZys0Pj4yXXwwLEIsQitDfDAscCxFLHQsYVtzPj4wXXwwLGFbcj4+MF18MCx4LGQsdyxmKTtXYyhiLGNbZT4+Ml18MCxBLGNbdj4+Ml18MCxjW3U+PjJdfDAsZyxqKTtpZigoRnwwKSE9MCl7dm4oRil9aWYoISgoYVt3Pj4wXSYxKT09MCk/KG49Y1t3Kzg+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbZD4+MF0mMSk9PTApPyhvPWNbZCs4Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhW3g+PjBdJjEpPT0wKT8obT1jW3grOD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9Rz1EKzR8MDtIPWNbRz4+Ml18MDtjW0c+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0Q+PjJdfDApKzg+PjJdJjI1NV0oRCl9aWYoKHl8MCkhPTApe3ZuKHkpfWlmKCh6fDApPT0wKXtpPXE7cmV0dXJufXZuKHopO2k9cTtyZXR1cm59SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gemsoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7bj1pO2k9aSsxMjh8MDtBPW47eD1uKzEyfDA7bz1uKzQwfDA7dj1uKzUyfDA7dz1uKzU2fDA7dT1uKzE2fDA7ej1uKzI4fDA7cj1uKzY4fDA7cT1uKzcyfDA7dD1uKzg0fDA7cz1uKzg4fDA7cD1uKzEwMHwwO3k9bisxMTJ8MDtpZihiKXtpZighKChjWzMyMjhdfDApPT0tMSkpe2NbQT4+Ml09MTI5MTI7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMjkxMixBKX1xPShjWzEyOTE2Pj4yXXwwKSsgLTF8MDtwPWNbZSs4Pj4yXXwwO2lmKCEoKGNbZSsxMj4+Ml18MCktcD4+Mj4+PjA+cT4+PjApKXtiPVhhKDQpfDA7Y1tiPj4yXT0yMTMwNDt3YihifDAsMjEzNzYsMTk2KX1wPWNbcCsocTw8Mik+PjJdfDA7aWYoKHB8MCk9PTApe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfXE9Y1twPj4yXXwwO2lmKGQpe21jW2NbcSs0ND4+Ml0mMTI3XSh4LHApO2I9Y1t4Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbcD4+Ml18MCkrMzI+PjJdJjEyN10obyxwKTtpZigoYVtsPj4wXSYxKT09MCl7YVtsKzE+PjBdPTA7YVtsPj4wXT0wfWVsc2V7YVtjW2wrOD4+Ml0+PjBdPTA7Y1tsKzQ+PjJdPTB9aWcobCk7Y1tsKzA+PjJdPWNbbyswPj4yXTtjW2wrND4+Ml09Y1tvKzQ+PjJdO2NbbCs4Pj4yXT1jW28rOD4+Ml07Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTB9ZWxzZXttY1tjW3ErNDA+PjJdJjEyN10odixwKTtiPWNbdj4+Ml18MDthW2Y+PjBdPWI7YVtmKzE+PjBdPWI+Pjg7YVtmKzI+PjBdPWI+PjE2O2FbZiszPj4wXT1iPj4yNDttY1tjWyhjW3A+PjJdfDApKzI4Pj4yXSYxMjddKHcscCk7aWYoKGFbbD4+MF0mMSk9PTApe2FbbCsxPj4wXT0wO2FbbD4+MF09MH1lbHNle2FbY1tsKzg+PjJdPj4wXT0wO2NbbCs0Pj4yXT0wfWlnKGwpO2NbbCswPj4yXT1jW3crMD4+Ml07Y1tsKzQ+PjJdPWNbdys0Pj4yXTtjW2wrOD4+Ml09Y1t3Kzg+PjJdO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wfWFbZz4+MF09b2NbY1soY1twPj4yXXwwKSsxMj4+Ml0mMTI3XShwKXwwO2FbaD4+MF09b2NbY1soY1twPj4yXXwwKSsxNj4+Ml0mMTI3XShwKXwwO21jW2NbKGNbcD4+Ml18MCkrMjA+PjJdJjEyN10odSxwKTtpZigoYVtqPj4wXSYxKT09MCl7YVtqKzE+PjBdPTA7YVtqPj4wXT0wfWVsc2V7YVtjW2orOD4+Ml0+PjBdPTA7Y1tqKzQ+PjJdPTB9aWcoaik7Y1tqKzA+PjJdPWNbdSswPj4yXTtjW2orND4+Ml09Y1t1KzQ+PjJdO2Nbais4Pj4yXT1jW3UrOD4+Ml07Y1t1KzA+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7bWNbY1soY1twPj4yXXwwKSsyND4+Ml0mMTI3XSh6LHApO2lmKChhW2s+PjBdJjEpPT0wKXthW2srMT4+MF09MDthW2s+PjBdPTB9ZWxzZXthW2Nbays4Pj4yXT4+MF09MDtjW2srND4+Ml09MH1pZyhrKTtjW2srMD4+Ml09Y1t6KzA+PjJdO2Nbays0Pj4yXT1jW3orND4+Ml07Y1trKzg+PjJdPWNbeis4Pj4yXTtjW3orMD4+Ml09MDtjW3orND4+Ml09MDtjW3orOD4+Ml09MDtiPW9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MDtjW20+PjJdPWI7aT1uO3JldHVybn1lbHNle2lmKCEoKGNbMzIxMl18MCk9PS0xKSl7Y1tBPj4yXT0xMjg0ODtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEyODQ4LEEpfXU9KGNbMTI4NTI+PjJdfDApKyAtMXwwO289Y1tlKzg+PjJdfDA7aWYoISgoY1tlKzEyPj4yXXwwKS1vPj4yPj4+MD51Pj4+MCkpe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfW89Y1tvKyh1PDwyKT4+Ml18MDtpZigob3wwKT09MCl7Yj1YYSg0KXwwO2NbYj4+Ml09MjEzMDQ7d2IoYnwwLDIxMzc2LDE5Nil9ZT1jW28+PjJdfDA7aWYoZCl7bWNbY1tlKzQ0Pj4yXSYxMjddKHIsbyk7Yj1jW3I+PjJdfDA7YVtmPj4wXT1iO2FbZisxPj4wXT1iPj44O2FbZisyPj4wXT1iPj4xNjthW2YrMz4+MF09Yj4+MjQ7bWNbY1soY1tvPj4yXXwwKSszMj4+Ml0mMTI3XShxLG8pO2lmKChhW2w+PjBdJjEpPT0wKXthW2wrMT4+MF09MDthW2w+PjBdPTB9ZWxzZXthW2NbbCs4Pj4yXT4+MF09MDtjW2wrND4+Ml09MH1pZyhsKTtjW2wrMD4+Ml09Y1txKzA+PjJdO2NbbCs0Pj4yXT1jW3ErND4+Ml07Y1tsKzg+PjJdPWNbcSs4Pj4yXTtjW3ErMD4+Ml09MDtjW3ErND4+Ml09MDtjW3ErOD4+Ml09MH1lbHNle21jW2NbZSs0MD4+Ml0mMTI3XSh0LG8pO2I9Y1t0Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbbz4+Ml18MCkrMjg+PjJdJjEyN10ocyxvKTtpZigoYVtsPj4wXSYxKT09MCl7YVtsKzE+PjBdPTA7YVtsPj4wXT0wfWVsc2V7YVtjW2wrOD4+Ml0+PjBdPTA7Y1tsKzQ+PjJdPTB9aWcobCk7Y1tsKzA+PjJdPWNbcyswPj4yXTtjW2wrND4+Ml09Y1tzKzQ+PjJdO2NbbCs4Pj4yXT1jW3MrOD4+Ml07Y1tzKzA+PjJdPTA7Y1tzKzQ+PjJdPTA7Y1tzKzg+PjJdPTB9YVtnPj4wXT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7YVtoPj4wXT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7bWNbY1soY1tvPj4yXXwwKSsyMD4+Ml0mMTI3XShwLG8pO2lmKChhW2o+PjBdJjEpPT0wKXthW2orMT4+MF09MDthW2o+PjBdPTB9ZWxzZXthW2Nbais4Pj4yXT4+MF09MDtjW2orND4+Ml09MH1pZyhqKTtjW2orMD4+Ml09Y1twKzA+PjJdO2Nbais0Pj4yXT1jW3ArND4+Ml07Y1tqKzg+PjJdPWNbcCs4Pj4yXTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDttY1tjWyhjW28+PjJdfDApKzI0Pj4yXSYxMjddKHksbyk7aWYoKGFbaz4+MF0mMSk9PTApe2FbaysxPj4wXT0wO2Fbaz4+MF09MH1lbHNle2FbY1trKzg+PjJdPj4wXT0wO2Nbays0Pj4yXT0wfWlnKGspO2NbayswPj4yXT1jW3krMD4+Ml07Y1trKzQ+PjJdPWNbeSs0Pj4yXTtjW2srOD4+Ml09Y1t5Kzg+PjJdO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2I9b2NbY1soY1tvPj4yXXwwKSszNj4+Ml0mMTI3XShvKXwwO2NbbT4+Ml09YjtpPW47cmV0dXJufX1mdW5jdGlvbiBBayhkLGUsZixnLGgsaixrLGwsbSxuLG8scCxxLHIscyl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7cT1xfDA7cj1yfDA7cz1zfDA7dmFyIHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MDt0PWk7Y1tmPj4yXT1kO3Y9cisxfDA7dz1yKzh8MDt1PXIrNHwwO3g9KGcmNTEyfDApPT0wO0Q9cSsxfDA7SD1xKzh8MDtJPXErNHwwO0E9KHN8MCk+MDtCPXArMXwwO0U9cCs4fDA7eT1wKzR8MDtDPWsrOHwwO3o9MC1zfDA7Sj0wO2Rve3N3aXRjaChhW20rSj4+MF18MCl7Y2FzZSAwOntjW2U+PjJdPWNbZj4+Ml07YnJlYWt9O2Nhc2UgNDp7Sz1jW2Y+PjJdfDA7aD1sP2grMXwwOmg7YTpkb3tpZihoPj4+MDxqPj4+MCl7TD1oO3doaWxlKDEpe049YVtMPj4wXXwwO2lmKCEoTjw8MjQ+PjI0Pi0xKSl7YnJlYWsgYX1NPUwrMXwwO2lmKChiWyhjW0M+PjJdfDApKyhOPDwyND4+MjQ8PDEpPj4xXSYyMDQ4KT09MCl7YnJlYWsgYX1pZihNPj4+MDxqPj4+MCl7TD1NfWVsc2V7TD1NO2JyZWFrfX19ZWxzZXtMPWh9fXdoaWxlKDApO009TDtpZihBKXtpZihMPj4+MD5oPj4+MCl7Tj1oKygwLU0pfDA7Tj1OPj4+MDx6Pj4+MD96Ok47TT1OK3N8MDtRPUs7UD1MO089czt3aGlsZSgxKXtQPVArIC0xfDA7Uj1hW1A+PjBdfDA7Y1tmPj4yXT1RKzE7YVtRPj4wXT1SO089TysgLTF8MDtRPShPfDApPjA7aWYoIShQPj4+MD5oPj4+MCZRKSl7YnJlYWt9UT1jW2Y+PjJdfDB9TD1MK058MDtpZihRKXtHPTMyfWVsc2V7Tj0wfX1lbHNle009cztHPTMyfWlmKChHfDApPT0zMil7Rz0wO049eGNbY1soY1trPj4yXXwwKSsyOD4+Ml0mNjNdKGssNDgpfDB9Tz1jW2Y+PjJdfDA7Y1tmPj4yXT1PKzE7aWYoKE18MCk+MCl7ZG97YVtPPj4wXT1OO009TSsgLTF8MDtPPWNbZj4+Ml18MDtjW2Y+PjJdPU8rMX13aGlsZSgoTXwwKT4wKX1hW08+PjBdPW59aWYoKEx8MCk9PShofDApKXtRPXhjW2NbKGNbaz4+Ml18MCkrMjg+PjJdJjYzXShrLDQ4KXwwO1I9Y1tmPj4yXXwwO2NbZj4+Ml09UisxO2FbUj4+MF09UX1lbHNle049YVtwPj4wXXwwO009KE4mMSk9PTA7aWYoTSl7Tj0oTiYyNTUpPj4+MX1lbHNle049Y1t5Pj4yXXwwfWlmKChOfDApPT0wKXtNPS0xO049MDtPPTB9ZWxzZXtpZihNKXtNPUJ9ZWxzZXtNPWNbRT4+Ml18MH1NPWFbTT4+MF18MDtOPTA7Tz0wfXdoaWxlKDEpe2lmKChPfDApPT0oTXwwKSl7UD1jW2Y+PjJdfDA7Y1tmPj4yXT1QKzE7YVtQPj4wXT1vO049TisxfDA7UD1hW3A+PjBdfDA7Tz0oUCYxKT09MDtpZihPKXtQPShQJjI1NSk+Pj4xfWVsc2V7UD1jW3k+PjJdfDB9aWYoTj4+PjA8UD4+PjApe2lmKE8pe009Qn1lbHNle009Y1tFPj4yXXwwfWlmKChhW00rTj4+MF18MCk9PTEyNyl7TT0tMTtPPTB9ZWxzZXtpZihPKXtNPUJ9ZWxzZXtNPWNbRT4+Ml18MH1NPWFbTStOPj4wXXwwO089MH19ZWxzZXtPPTB9fUw9TCsgLTF8MDtRPWFbTD4+MF18MDtSPWNbZj4+Ml18MDtjW2Y+PjJdPVIrMTthW1I+PjBdPVE7aWYoKEx8MCk9PShofDApKXticmVha31lbHNle089TysxfDB9fX1MPWNbZj4+Ml18MDtpZigoS3wwKSE9KEx8MCk/KEY9TCsgLTF8MCxGPj4+MD5LPj4+MCk6MCl7TD1GO2Rve1I9YVtLPj4wXXwwO2FbSz4+MF09YVtMPj4wXXwwO2FbTD4+MF09UjtLPUsrMXwwO0w9TCsgLTF8MH13aGlsZShLPj4+MDxMPj4+MCl9YnJlYWt9O2Nhc2UgMjp7TD1hW3E+PjBdfDA7TT0oTCYxKT09MDtpZihNKXtLPShMJjI1NSk+Pj4xfWVsc2V7Sz1jW0k+PjJdfDB9aWYoISgoS3wwKT09MHx4KSl7aWYoTSl7Sz1EO0w9KEwmMjU1KT4+PjF9ZWxzZXtLPWNbSD4+Ml18MDtMPWNbST4+Ml18MH1MPUsrTHwwO009Y1tmPj4yXXwwO2lmKChLfDApIT0oTHwwKSl7ZG97YVtNPj4wXT1hW0s+PjBdfDA7Sz1LKzF8MDtNPU0rMXwwfXdoaWxlKChLfDApIT0oTHwwKSl9Y1tmPj4yXT1NfWJyZWFrfTtjYXNlIDM6e0w9YVtyPj4wXXwwO0s9KEwmMSk9PTA7aWYoSyl7TD0oTCYyNTUpPj4+MX1lbHNle0w9Y1t1Pj4yXXwwfWlmKChMfDApIT0wKXtpZihLKXtLPXZ9ZWxzZXtLPWNbdz4+Ml18MH1RPWFbSz4+MF18MDtSPWNbZj4+Ml18MDtjW2Y+PjJdPVIrMTthW1I+PjBdPVF9YnJlYWt9O2Nhc2UgMTp7Y1tlPj4yXT1jW2Y+PjJdO1E9eGNbY1soY1trPj4yXXwwKSsyOD4+Ml0mNjNdKGssMzIpfDA7Uj1jW2Y+PjJdfDA7Y1tmPj4yXT1SKzE7YVtSPj4wXT1RO2JyZWFrfTtkZWZhdWx0Ont9fUo9SisxfDB9d2hpbGUoKEp8MCkhPTQpO2s9YVtyPj4wXXwwO3g9KGsmMSk9PTA7aWYoeCl7cj0oayYyNTUpPj4+MX1lbHNle3I9Y1t1Pj4yXXwwfWlmKHI+Pj4wPjEpe2lmKHgpe3U9KGsmMjU1KT4+PjF9ZWxzZXt2PWNbdz4+Ml18MDt1PWNbdT4+Ml18MH13PXYrMXwwO3U9dit1fDA7dj1jW2Y+PjJdfDA7aWYoKHd8MCkhPSh1fDApKXtkb3thW3Y+PjBdPWFbdz4+MF18MDt3PXcrMXwwO3Y9disxfDB9d2hpbGUoKHd8MCkhPSh1fDApKX1jW2Y+PjJdPXZ9Zz1nJjE3NjtpZigoZ3wwKT09MTYpe2k9dDtyZXR1cm59ZWxzZSBpZigoZ3wwKT09MzIpe2NbZT4+Ml09Y1tmPj4yXTtpPXQ7cmV0dXJufWVsc2V7Y1tlPj4yXT1kO2k9dDtyZXR1cm59fWZ1bmN0aW9uIEJrKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO3A9aTtpPWkrMTYwfDA7eD1wO3Q9cCsxNDB8MDtzPXArMTUyfDA7cj1wKzE1M3wwO3E9cCsxMTJ8MDt2PXArMTAwfDA7ZD1wKzEyOHwwO3o9cCsxMjR8MDt3PXArMTQ0fDA7dT1wKzE0OHwwO289Y1tnKzI4Pj4yXXwwO0Q9bys0fDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1t4Pj4yXT0xMzQ1NjtjW3grND4+Ml09MjA4O2NbeCs4Pj4yXT0wO2NnKDEzNDU2LHgpfXk9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0E9Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktQT4+Mj4+PjA+eT4+PjA/KGw9Y1tBKyh5PDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7QT1hW2o+PjBdfDA7eT0oQSYxKT09MDtpZih5KXtBPShBJjI1NSk+Pj4xfWVsc2V7QT1jW2orND4+Ml18MH1pZigoQXwwKT09MCl7eT0wfWVsc2V7aWYoeSl7eT1qKzF8MH1lbHNle3k9Y1tqKzg+PjJdfDB9eT1hW3k+PjBdfDA7eT15PDwyND4+MjQ9PSh4Y1tjWyhjW2w+PjJdfDApKzI4Pj4yXSY2M10obCw0NSl8MCk8PDI0Pj4yNH1jW3Q+PjJdPTA7Y1txKzA+PjJdPTA7Y1txKzQ+PjJdPTA7Y1txKzg+PjJdPTA7Y1t2KzA+PjJdPTA7Y1t2KzQ+PjJdPTA7Y1t2Kzg+PjJdPTA7Y1tkKzA+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tkKzg+PjJdPTA7emsoZix5LG8sdCxzLHIscSx2LGQseik7Zj1hW2o+PjBdfDA7QT0oZiYxKT09MDtpZihBKXtCPShmJjI1NSk+Pj4xfWVsc2V7Qj1jW2orND4+Ml18MH16PWNbej4+Ml18MDtpZigoQnwwKT4oenwwKSl7aWYoQSl7Qj0oZiYyNTUpPj4+MX1lbHNle0I9Y1tqKzQ+PjJdfDB9Qz1hW2Q+PjBdfDA7aWYoKEMmMSk9PTApe0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbZCs0Pj4yXXwwfUQ9YVt2Pj4wXXwwO2lmKChEJjEpPT0wKXtEPShEJjI1NSk+Pj4xfWVsc2V7RD1jW3YrND4+Ml18MH1CPUMrKEItejw8MXwxKStEfDB9ZWxzZXtCPWFbZD4+MF18MDtpZigoQiYxKT09MCl7Qj0oQiYyNTUpPj4+MX1lbHNle0I9Y1tkKzQ+PjJdfDB9Qz1hW3Y+PjBdfDA7aWYoKEMmMSk9PTApe0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbdis0Pj4yXXwwfUI9QisyK0N8MH1CPUIrenwwO2lmKEI+Pj4wPjEwMCl7eD11bihCKXwwO2lmKCh4fDApPT0wKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1lbHNle0I9eH19ZWxzZXtCPTB9aWYoQSl7QT1qKzF8MDtqPShmJjI1NSk+Pj4xfWVsc2V7QT1jW2orOD4+Ml18MDtqPWNbais0Pj4yXXwwfUFrKHgsdyx1LGNbZys0Pj4yXXwwLEEsQStqfDAsbCx5LHQsYVtzPj4wXXwwLGFbcj4+MF18MCxxLHYsZCx6KTtXYyhiLGNbZT4+Ml18MCx4LGNbdz4+Ml18MCxjW3U+PjJdfDAsZyxoKTtpZigoQnwwKSE9MCl7dm4oQil9aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tkKzg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbdj4+MF0mMSk9PTApPyhuPWNbdis4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhW3E+PjBdJjEpPT0wKT8oaz1jW3ErOD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9Qz1vKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXtpPXA7cmV0dXJufWxjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKTtpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIENrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIERrKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBFayhiLGQsZSxmLGcsaixsKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtsPStsO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7cT1pO2k9aSs5NzZ8MDtBPXE7Qz1xKzg2OHwwO0U9cSs4MTZ8MDtCPXErNDE2fDA7dD1xKzQwOHwwO3M9cSs4NjB8MDtyPXErNDAwfDA7eD1xKzgyNHwwO2Q9cSs4MzZ8MDt3PXErODQ4fDA7Rj1xKzgyMHwwO3Y9cSs0MDR8MDt1PXErODY0fDA7Y1tFPj4yXT1DO2hbaz4+M109bDtjW0E+PjJdPWNbaz4+Ml07Y1tBKzQ+PjJdPWNbays0Pj4yXTtDPWxiKEN8MCwxMDAsMTMyMjQsQXwwKXwwO2lmKEM+Pj4wPjk5KXtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9Qz1jWzMzNDBdfDA7aFtrPj4zXT1sO2NbQT4+Ml09Y1trPj4yXTtjW0ErND4+Ml09Y1trKzQ+PjJdO0M9Q2koRSxDLDEzMjI0LEEpfDA7ej1jW0U+PjJdfDA7aWYoKHp8MCk9PTApe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfUI9dW4oQzw8Mil8MDtpZigoQnwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9ZWxzZXt5PUJ9fWVsc2V7eT0wO3o9MH1EPWNbZysyOD4+Ml18MDtIPUQrNHwwO2NbSD4+Ml09KGNbSD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbQT4+Ml09MTM0NDg7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMzQ0OCxBKX1HPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtIPWNbRCs4Pj4yXXwwO2lmKChjW0QrMTI+PjJdfDApLUg+PjI+Pj4wPkc+Pj4wPyhwPWNbSCsoRzw8Mik+PjJdfDAsKHB8MCkhPTApOjApe0g9Y1tFPj4yXXwwO3VjW2NbKGNbcD4+Ml18MCkrNDg+PjJdJjMxXShwLEgsSCtDfDAsQil8MDtpZigoQ3wwKT09MCl7RT0wfWVsc2V7RT0oYVtjW0U+PjJdPj4wXXwwKT09NDV9Y1t0Pj4yXT0wO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbZCswPj4yXT0wO2NbZCs0Pj4yXT0wO2NbZCs4Pj4yXT0wO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wO0ZrKGYsRSxELHQscyxyLHgsZCx3LEYpO2Y9Y1tGPj4yXXwwO2lmKChDfDApPihmfDApKXtGPWFbdz4+MF18MDtpZigoRiYxKT09MCl7Rj0oRiYyNTUpPj4+MX1lbHNle0Y9Y1t3KzQ+PjJdfDB9Rz1hW2Q+PjBdfDA7aWYoKEcmMSk9PTApe0c9KEcmMjU1KT4+PjF9ZWxzZXtHPWNbZCs0Pj4yXXwwfUY9RisoQy1mPDwxfDEpK0d8MH1lbHNle0Y9YVt3Pj4wXXwwO2lmKChGJjEpPT0wKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW3crND4+Ml18MH1HPWFbZD4+MF18MDtpZigoRyYxKT09MCl7Rz0oRyYyNTUpPj4+MX1lbHNle0c9Y1tkKzQ+PjJdfDB9Rj1GKzIrR3wwfUY9RitmfDA7aWYoRj4+PjA+MTAwKXtBPXVuKEY8PDIpfDA7aWYoKEF8MCk9PTApe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfWVsc2V7Rj1BfX1lbHNle0Y9MH1HayhBLHYsdSxjW2crND4+Ml18MCxCLEIrKEM8PDIpfDAscCxFLHQsY1tzPj4yXXwwLGNbcj4+Ml18MCx4LGQsdyxmKTtMaShiLGNbZT4+Ml18MCxBLGNbdj4+Ml18MCxjW3U+PjJdfDAsZyxqKTtpZigoRnwwKSE9MCl7dm4oRil9aWYoISgoYVt3Pj4wXSYxKT09MCk/KG49Y1t3Kzg+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbZD4+MF0mMSk9PTApPyhvPWNbZCs4Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhW3g+PjBdJjEpPT0wKT8obT1jW3grOD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9Rz1EKzR8MDtIPWNbRz4+Ml18MDtjW0c+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0Q+PjJdfDApKzg+PjJdJjI1NV0oRCl9aWYoKHl8MCkhPTApe3ZuKHkpfWlmKCh6fDApPT0wKXtpPXE7cmV0dXJufXZuKHopO2k9cTtyZXR1cm59SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gRmsoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7bj1pO2k9aSsxMjh8MDtBPW47eD1uKzEyfDA7bz1uKzQwfDA7dj1uKzUyfDA7dz1uKzU2fDA7dT1uKzE2fDA7ej1uKzI4fDA7cj1uKzY4fDA7cT1uKzcyfDA7dD1uKzg0fDA7cz1uKzg4fDA7cD1uKzEwMHwwO3k9bisxMTJ8MDtpZihiKXtpZighKChjWzMyNjBdfDApPT0tMSkpe2NbQT4+Ml09MTMwNDA7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMzA0MCxBKX1xPShjWzEzMDQ0Pj4yXXwwKSsgLTF8MDtwPWNbZSs4Pj4yXXwwO2lmKCEoKGNbZSsxMj4+Ml18MCktcD4+Mj4+PjA+cT4+PjApKXtiPVhhKDQpfDA7Y1tiPj4yXT0yMTMwNDt3YihifDAsMjEzNzYsMTk2KX1wPWNbcCsocTw8Mik+PjJdfDA7aWYoKHB8MCk9PTApe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfXE9Y1twPj4yXXwwO2lmKGQpe21jW2NbcSs0ND4+Ml0mMTI3XSh4LHApO2I9Y1t4Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbcD4+Ml18MCkrMzI+PjJdJjEyN10obyxwKTtpZigoYVtsPj4wXSYxKT09MCl7Y1tsKzQ+PjJdPTA7YVtsPj4wXT0wfWVsc2V7Y1tjW2wrOD4+Ml0+PjJdPTA7Y1tsKzQ+PjJdPTB9b2cobCk7Y1tsKzA+PjJdPWNbbyswPj4yXTtjW2wrND4+Ml09Y1tvKzQ+PjJdO2NbbCs4Pj4yXT1jW28rOD4+Ml07Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTB9ZWxzZXttY1tjW3ErNDA+PjJdJjEyN10odixwKTtiPWNbdj4+Ml18MDthW2Y+PjBdPWI7YVtmKzE+PjBdPWI+Pjg7YVtmKzI+PjBdPWI+PjE2O2FbZiszPj4wXT1iPj4yNDttY1tjWyhjW3A+PjJdfDApKzI4Pj4yXSYxMjddKHcscCk7aWYoKGFbbD4+MF0mMSk9PTApe2NbbCs0Pj4yXT0wO2FbbD4+MF09MH1lbHNle2NbY1tsKzg+PjJdPj4yXT0wO2NbbCs0Pj4yXT0wfW9nKGwpO2NbbCswPj4yXT1jW3crMD4+Ml07Y1tsKzQ+PjJdPWNbdys0Pj4yXTtjW2wrOD4+Ml09Y1t3Kzg+PjJdO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wfWNbZz4+Ml09b2NbY1soY1twPj4yXXwwKSsxMj4+Ml0mMTI3XShwKXwwO2NbaD4+Ml09b2NbY1soY1twPj4yXXwwKSsxNj4+Ml0mMTI3XShwKXwwO21jW2NbKGNbcD4+Ml18MCkrMjA+PjJdJjEyN10odSxwKTtpZigoYVtqPj4wXSYxKT09MCl7YVtqKzE+PjBdPTA7YVtqPj4wXT0wfWVsc2V7YVtjW2orOD4+Ml0+PjBdPTA7Y1tqKzQ+PjJdPTB9aWcoaik7Y1tqKzA+PjJdPWNbdSswPj4yXTtjW2orND4+Ml09Y1t1KzQ+PjJdO2Nbais4Pj4yXT1jW3UrOD4+Ml07Y1t1KzA+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7bWNbY1soY1twPj4yXXwwKSsyND4+Ml0mMTI3XSh6LHApO2lmKChhW2s+PjBdJjEpPT0wKXtjW2srND4+Ml09MDthW2s+PjBdPTB9ZWxzZXtjW2Nbays4Pj4yXT4+Ml09MDtjW2srND4+Ml09MH1vZyhrKTtjW2srMD4+Ml09Y1t6KzA+PjJdO2Nbays0Pj4yXT1jW3orND4+Ml07Y1trKzg+PjJdPWNbeis4Pj4yXTtjW3orMD4+Ml09MDtjW3orND4+Ml09MDtjW3orOD4+Ml09MDtiPW9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MDtjW20+PjJdPWI7aT1uO3JldHVybn1lbHNle2lmKCEoKGNbMzI0NF18MCk9PS0xKSl7Y1tBPj4yXT0xMjk3NjtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEyOTc2LEEpfXU9KGNbMTI5ODA+PjJdfDApKyAtMXwwO289Y1tlKzg+PjJdfDA7aWYoISgoY1tlKzEyPj4yXXwwKS1vPj4yPj4+MD51Pj4+MCkpe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfW89Y1tvKyh1PDwyKT4+Ml18MDtpZigob3wwKT09MCl7Yj1YYSg0KXwwO2NbYj4+Ml09MjEzMDQ7d2IoYnwwLDIxMzc2LDE5Nil9ZT1jW28+PjJdfDA7aWYoZCl7bWNbY1tlKzQ0Pj4yXSYxMjddKHIsbyk7Yj1jW3I+PjJdfDA7YVtmPj4wXT1iO2FbZisxPj4wXT1iPj44O2FbZisyPj4wXT1iPj4xNjthW2YrMz4+MF09Yj4+MjQ7bWNbY1soY1tvPj4yXXwwKSszMj4+Ml0mMTI3XShxLG8pO2lmKChhW2w+PjBdJjEpPT0wKXtjW2wrND4+Ml09MDthW2w+PjBdPTB9ZWxzZXtjW2NbbCs4Pj4yXT4+Ml09MDtjW2wrND4+Ml09MH1vZyhsKTtjW2wrMD4+Ml09Y1txKzA+PjJdO2NbbCs0Pj4yXT1jW3ErND4+Ml07Y1tsKzg+PjJdPWNbcSs4Pj4yXTtjW3ErMD4+Ml09MDtjW3ErND4+Ml09MDtjW3ErOD4+Ml09MH1lbHNle21jW2NbZSs0MD4+Ml0mMTI3XSh0LG8pO2I9Y1t0Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbbz4+Ml18MCkrMjg+PjJdJjEyN10ocyxvKTtpZigoYVtsPj4wXSYxKT09MCl7Y1tsKzQ+PjJdPTA7YVtsPj4wXT0wfWVsc2V7Y1tjW2wrOD4+Ml0+PjJdPTA7Y1tsKzQ+PjJdPTB9b2cobCk7Y1tsKzA+PjJdPWNbcyswPj4yXTtjW2wrND4+Ml09Y1tzKzQ+PjJdO2NbbCs4Pj4yXT1jW3MrOD4+Ml07Y1tzKzA+PjJdPTA7Y1tzKzQ+PjJdPTA7Y1tzKzg+PjJdPTB9Y1tnPj4yXT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7Y1toPj4yXT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7bWNbY1soY1tvPj4yXXwwKSsyMD4+Ml0mMTI3XShwLG8pO2lmKChhW2o+PjBdJjEpPT0wKXthW2orMT4+MF09MDthW2o+PjBdPTB9ZWxzZXthW2Nbais4Pj4yXT4+MF09MDtjW2orND4+Ml09MH1pZyhqKTtjW2orMD4+Ml09Y1twKzA+PjJdO2Nbais0Pj4yXT1jW3ArND4+Ml07Y1tqKzg+PjJdPWNbcCs4Pj4yXTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDttY1tjWyhjW28+PjJdfDApKzI0Pj4yXSYxMjddKHksbyk7aWYoKGFbaz4+MF0mMSk9PTApe2Nbays0Pj4yXT0wO2Fbaz4+MF09MH1lbHNle2NbY1trKzg+PjJdPj4yXT0wO2Nbays0Pj4yXT0wfW9nKGspO2NbayswPj4yXT1jW3krMD4+Ml07Y1trKzQ+PjJdPWNbeSs0Pj4yXTtjW2srOD4+Ml09Y1t5Kzg+PjJdO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2I9b2NbY1soY1tvPj4yXXwwKSszNj4+Ml0mMTI3XShvKXwwO2NbbT4+Ml09YjtpPW47cmV0dXJufX1mdW5jdGlvbiBHayhiLGQsZSxmLGcsaCxqLGssbCxtLG4sbyxwLHEscil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7cT1xfDA7cj1yfDA7dmFyIHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wO3M9aTtjW2U+PjJdPWI7dD1xKzR8MDt1PXErOHwwO3k9KGYmNTEyfDApPT0wO3g9cCs0fDA7QT1wKzh8MDt3PShyfDApPjA7Qj1vKzF8MDtDPW8rOHwwO0Q9bys0fDA7RT0wO2Rve3N3aXRjaChhW2wrRT4+MF18MCl7Y2FzZSAyOntGPWFbcD4+MF18MDtIPShGJjEpPT0wO2lmKEgpe0c9KEYmMjU1KT4+PjF9ZWxzZXtHPWNbeD4+Ml18MH1pZighKChHfDApPT0wfHkpKXtpZihIKXtIPXg7ST0oRiYyNTUpPj4+MX1lbHNle0g9Y1tBPj4yXXwwO0k9Y1t4Pj4yXXwwfUc9SCsoSTw8Mil8MDtGPWNbZT4+Ml18MDtpZigoSHwwKSE9KEd8MCkpe0o9KEgrKEkrIC0xPDwyKSsoMC1IKXwwKT4+PjI7ST1GO3doaWxlKDEpe2NbST4+Ml09Y1tIPj4yXTtIPUgrNHwwO2lmKChIfDApPT0oR3wwKSl7YnJlYWt9ST1JKzR8MH1GPUYrKEorMTw8Mil8MH1jW2U+PjJdPUZ9YnJlYWt9O2Nhc2UgMzp7Rz1hW3E+PjBdfDA7Rj0oRyYxKT09MDtpZihGKXtHPShHJjI1NSk+Pj4xfWVsc2V7Rz1jW3Q+PjJdfDB9aWYoKEd8MCkhPTApe2lmKEYpe0Y9dH1lbHNle0Y9Y1t1Pj4yXXwwfUw9Y1tGPj4yXXwwO009Y1tlPj4yXXwwO2NbZT4+Ml09TSs0O2NbTT4+Ml09TH1icmVha307Y2FzZSA0OntGPWNbZT4+Ml18MDtnPWs/Zys0fDA6ZzthOmRve2lmKGc+Pj4wPGg+Pj4wKXtHPWc7d2hpbGUoMSl7SD1HKzR8MDtpZighKGhjW2NbKGNbaj4+Ml18MCkrMTI+PjJdJjYzXShqLDIwNDgsY1tHPj4yXXwwKXwwKSl7YnJlYWsgYX1pZihIPj4+MDxoPj4+MCl7Rz1IfWVsc2V7Rz1IO2JyZWFrfX19ZWxzZXtHPWd9fXdoaWxlKDApO2lmKHcpe2lmKEc+Pj4wPmc+Pj4wKXtIPWNbZT4+Ml18MDtJPXI7d2hpbGUoMSl7Rz1HKyAtNHwwO0s9SCs0fDA7Y1tIPj4yXT1jW0c+PjJdO0k9SSsgLTF8MDtKPShJfDApPjA7aWYoIShHPj4+MD5nPj4+MCZKKSl7YnJlYWt9ZWxzZXtIPUt9fWNbZT4+Ml09SztpZihKKXt6PTM0fWVsc2V7Y1tlPj4yXT1IKzh9fWVsc2V7ST1yO3o9MzR9aWYoKHp8MCk9PTM0KXt6PTA7Sj14Y1tjWyhjW2o+PjJdfDApKzQ0Pj4yXSY2M10oaiw0OCl8MDtLPWNbZT4+Ml18MDtNPUsrNHwwO2NbZT4+Ml09TTtpZigoSXwwKT4wKXtIPUs7TD1JO3doaWxlKDEpe2NbSD4+Ml09SjtMPUwrIC0xfDA7aWYoKEx8MCk8PTApe2JyZWFrfWVsc2V7SD1NO009TSs0fDB9fWNbZT4+Ml09SysoSSsxPDwyKTtLPUsrKEk8PDIpfDB9fWNbSz4+Ml09bX1pZigoR3wwKT09KGd8MCkpe0s9eGNbY1soY1tqPj4yXXwwKSs0ND4+Ml0mNjNdKGosNDgpfDA7TT1jW2U+PjJdfDA7TD1NKzR8MDtjW2U+PjJdPUw7Y1tNPj4yXT1LfWVsc2V7ST1hW28+PjBdfDA7SD0oSSYxKT09MDtpZihIKXtJPShJJjI1NSk+Pj4xfWVsc2V7ST1jW0Q+PjJdfDB9aWYoKEl8MCk9PTApe0g9LTF9ZWxzZXtpZihIKXtIPUJ9ZWxzZXtIPWNbQz4+Ml18MH1IPWFbSD4+MF18MH1JPWNbZT4+Ml18MDtLPTA7Sj0wO3doaWxlKDEpe2lmKChKfDApPT0oSHwwKSl7Sj1JKzR8MDtjW2U+PjJdPUo7Y1tJPj4yXT1uO0s9SysxfDA7TD1hW28+PjBdfDA7ST0oTCYxKT09MDtpZihJKXtMPShMJjI1NSk+Pj4xfWVsc2V7TD1jW0Q+PjJdfDB9aWYoSz4+PjA8TD4+PjApe2lmKEkpe0g9Qn1lbHNle0g9Y1tDPj4yXXwwfWlmKChhW0grSz4+MF18MCk9PTEyNyl7ST1KO0g9LTE7Sj0wfWVsc2V7aWYoSSl7SD1CfWVsc2V7SD1jW0M+PjJdfDB9ST1KO0g9YVtIK0s+PjBdfDA7Sj0wfX1lbHNle0k9SjtKPTB9fUc9RysgLTR8MDtNPWNbRz4+Ml18MDtMPUkrNHwwO2NbZT4+Ml09TDtjW0k+PjJdPU07aWYoKEd8MCk9PShnfDApKXticmVha31lbHNle0k9TDtKPUorMXwwfX19aWYoKEZ8MCkhPShMfDApPyh2PUwrIC00fDAsdj4+PjA+Rj4+PjApOjApe0c9djtkb3tNPWNbRj4+Ml18MDtjW0Y+PjJdPWNbRz4+Ml07Y1tHPj4yXT1NO0Y9Ris0fDA7Rz1HKyAtNHwwfXdoaWxlKEY+Pj4wPEc+Pj4wKX1icmVha307Y2FzZSAxOntjW2Q+PjJdPWNbZT4+Ml07TD14Y1tjWyhjW2o+PjJdfDApKzQ0Pj4yXSY2M10oaiwzMil8MDtNPWNbZT4+Ml18MDtjW2U+PjJdPU0rNDtjW00+PjJdPUw7YnJlYWt9O2Nhc2UgMDp7Y1tkPj4yXT1jW2U+PjJdO2JyZWFrfTtkZWZhdWx0Ont9fUU9RSsxfDB9d2hpbGUoKEV8MCkhPTQpO3c9YVtxPj4wXXwwO3Y9KHcmMSk9PTA7aWYodil7cT0odyYyNTUpPj4+MX1lbHNle3E9Y1t0Pj4yXXwwfWlmKHE+Pj4wPjEpe2lmKHYpe3Y9dDtxPSh3JjI1NSk+Pj4xfWVsc2V7dj1jW3U+PjJdfDA7cT1jW3Q+PjJdfDB9dz12KzR8MDt1PXYrKHE8PDIpfDA7dD1jW2U+PjJdfDA7aWYoKHd8MCkhPSh1fDApKXtxPSh2KyhxKyAtMTw8MikrKDAtdyl8MCk+Pj4yO3Y9dDt3aGlsZSgxKXtjW3Y+PjJdPWNbdz4+Ml07dz13KzR8MDtpZigod3wwKT09KHV8MCkpe2JyZWFrfWVsc2V7dj12KzR8MH19dD10KyhxKzE8PDIpfDB9Y1tlPj4yXT10fWY9ZiYxNzY7aWYoKGZ8MCk9PTE2KXtpPXM7cmV0dXJufWVsc2UgaWYoKGZ8MCk9PTMyKXtjW2Q+PjJdPWNbZT4+Ml07aT1zO3JldHVybn1lbHNle2NbZD4+Ml09YjtpPXM7cmV0dXJufX1mdW5jdGlvbiBIayhiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtwPWk7aT1pKzQ2NHwwO3g9cDt0PXArNDM2fDA7cz1wKzQ0MHwwO3I9cCs0NDR8MDtxPXArNDEyfDA7dj1wKzQwMHwwO2Q9cCs0MjR8MDt6PXArNDQ4fDA7dz1wKzQ1MnwwO3U9cCs0NTZ8MDtvPWNbZysyOD4+Ml18MDtEPW8rNHwwO2NbRD4+Ml09KGNbRD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbeD4+Ml09MTM0NDg7Y1t4KzQ+PjJdPTIwODtjW3grOD4+Ml09MDtjZygxMzQ0OCx4KX15PShjWzEzNDUyPj4yXXwwKSsgLTF8MDtBPWNbbys4Pj4yXXwwO2lmKChjW28rMTI+PjJdfDApLUE+PjI+Pj4wPnk+Pj4wPyhsPWNbQSsoeTw8Mik+PjJdfDAsKGx8MCkhPTApOjApe0E9YVtqPj4wXXwwO3k9KEEmMSk9PTA7aWYoeSl7QT0oQSYyNTUpPj4+MX1lbHNle0E9Y1tqKzQ+PjJdfDB9aWYoKEF8MCk9PTApe3k9MH1lbHNle2lmKHkpe3k9ais0fDB9ZWxzZXt5PWNbais4Pj4yXXwwfXk9Y1t5Pj4yXXwwO3k9KHl8MCk9PSh4Y1tjWyhjW2w+PjJdfDApKzQ0Pj4yXSY2M10obCw0NSl8MCl9Y1t0Pj4yXT0wO2NbcSswPj4yXT0wO2NbcSs0Pj4yXT0wO2NbcSs4Pj4yXT0wO2NbdiswPj4yXT0wO2Nbdis0Pj4yXT0wO2Nbdis4Pj4yXT0wO2NbZCswPj4yXT0wO2NbZCs0Pj4yXT0wO2NbZCs4Pj4yXT0wO0ZrKGYseSxvLHQscyxyLHEsdixkLHopO2Y9YVtqPj4wXXwwO0E9KGYmMSk9PTA7aWYoQSl7Qj0oZiYyNTUpPj4+MX1lbHNle0I9Y1tqKzQ+PjJdfDB9ej1jW3o+PjJdfDA7aWYoKEJ8MCk+KHp8MCkpe2lmKEEpe0I9KGYmMjU1KT4+PjF9ZWxzZXtCPWNbais0Pj4yXXwwfUM9YVtkPj4wXXwwO2lmKChDJjEpPT0wKXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW2QrND4+Ml18MH1EPWFbdj4+MF18MDtpZigoRCYxKT09MCl7RD0oRCYyNTUpPj4+MX1lbHNle0Q9Y1t2KzQ+PjJdfDB9Qj1DKyhCLXo8PDF8MSkrRHwwfWVsc2V7Qj1hW2Q+PjBdfDA7aWYoKEImMSk9PTApe0I9KEImMjU1KT4+PjF9ZWxzZXtCPWNbZCs0Pj4yXXwwfUM9YVt2Pj4wXXwwO2lmKChDJjEpPT0wKXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3YrND4+Ml18MH1CPUIrMitDfDB9Qj1CK3p8MDtpZihCPj4+MD4xMDApe3g9dW4oQjw8Mil8MDtpZigoeHwwKT09MCl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZWxzZXtCPXh9fWVsc2V7Qj0wfWlmKEEpe0E9ais0fDA7aj0oZiYyNTUpPj4+MX1lbHNle0E9Y1tqKzg+PjJdfDA7aj1jW2orND4+Ml18MH1Hayh4LHcsdSxjW2crND4+Ml18MCxBLEErKGo8PDIpfDAsbCx5LHQsY1tzPj4yXXwwLGNbcj4+Ml18MCxxLHYsZCx6KTtMaShiLGNbZT4+Ml18MCx4LGNbdz4+Ml18MCxjW3U+PjJdfDAsZyxoKTtpZigoQnwwKSE9MCl7dm4oQil9aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tkKzg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbdj4+MF0mMSk9PTApPyhuPWNbdis4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhW3E+PjBdJjEpPT0wKT8oaz1jW3ErOD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9Qz1vKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXtpPXA7cmV0dXJufWxjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKTtpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIElrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEprKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBLayhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Yj1pO2lmKChhW2Q+PjBdJjEpPT0wKXtkPWQrMXwwfWVsc2V7ZD1jW2QrOD4+Ml18MH1lPWRjKGR8MCwxKXwwO2k9YjtyZXR1cm4gZT4+PigoZXwwKSE9KC0xfDApJjEpfDB9ZnVuY3Rpb24gTGsoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7ZD1pO2k9aSsxNnwwO2o9ZDtjW2orMD4+Ml09MDtjW2orND4+Ml09MDtjW2orOD4+Ml09MDtrPWFbaD4+MF18MDtpZigoayYxKT09MCl7cD1oKzF8MDtoPShrJjI1NSk+Pj4xfWVsc2V7cD1jW2grOD4+Ml18MDtoPWNbaCs0Pj4yXXwwfW09cCtofDA7aWYocD4+PjA8bT4+PjApe249ais0fDA7bD1qKzF8MDtrPWorOHwwO3E9MDtkb3tvPWFbcD4+MF18MDtoPShxJjEpIT0wO2lmKGgpe3I9KGNbaj4+Ml0mLTIpKyAtMXwwO3E9Y1tuPj4yXXwwfWVsc2V7cj0xMDtxPShxJjI1NSk+Pj4xfWlmKChxfDApPT0ocnwwKSl7bGcoaixyLDEscixyLDApO2lmKChhW2o+PjBdJjEpPT0wKXtoPTE0fWVsc2V7aD0xNX19ZWxzZXtpZihoKXtoPTE1fWVsc2V7aD0xNH19aWYoKGh8MCk9PTE0KXthW2o+PjBdPShxPDwxKSsyO3I9bDtzPXErMXwwfWVsc2UgaWYoKGh8MCk9PTE1KXtyPWNbaz4+Ml18MDtzPXErMXwwO2Nbbj4+Ml09c31hW3IrcT4+MF09bzthW3Ircz4+MF09MDtwPXArMXwwO3E9YVtqPj4wXXwwfXdoaWxlKChwfDApIT0obXwwKSk7aD0oZXwwKT09LTE/LTE6ZTw8MTtlPShxJjEpPT0wP2w6Y1trPj4yXXwwfWVsc2V7aD0oZXwwKT09LTE/LTE6ZTw8MTtlPWorMXwwfWw9amIoaHwwLGZ8MCxnfDAsZXwwKXwwO2NbYiswPj4yXT0wO2NbYis0Pj4yXT0wO2NbYis4Pj4yXT0wO3M9Sm4obHwwKXwwO2s9bCtzfDA7YTpkb3tpZigoc3wwKT4wKXtmPWIrNHwwO2c9YisxfDA7ZT1iKzh8MDtuPTA7d2hpbGUoMSl7bT1hW2w+PjBdfDA7aD0obiYxKSE9MDtpZihoKXtvPShjW2I+PjJdJi0yKSsgLTF8MDtuPWNbZj4+Ml18MH1lbHNle289MTA7bj0obiYyNTUpPj4+MX1pZigobnwwKT09KG98MCkpe2xnKGIsbywxLG8sbywwKTtpZigoYVtiPj4wXSYxKT09MCl7aD0yOH1lbHNle2g9Mjl9fWVsc2V7aWYoaCl7aD0yOX1lbHNle2g9Mjh9fWlmKChofDApPT0yOCl7YVtiPj4wXT0objw8MSkrMjtwPWc7bz1uKzF8MH1lbHNlIGlmKChofDApPT0yOSl7cD1jW2U+PjJdfDA7bz1uKzF8MDtjW2Y+PjJdPW99YVtwK24+PjBdPW07YVtwK28+PjBdPTA7bD1sKzF8MDtpZigobHwwKT09KGt8MCkpe2JyZWFrIGF9bj1hW2I+PjBdfDB9fX13aGlsZSgwKTtpZigoYVtqPj4wXSYxKT09MCl7aT1kO3JldHVybn1iPWNbais4Pj4yXXwwO2lmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gTWsoYSxiKXthPWF8MDtiPWJ8MDthPWk7WWIoKChifDApPT0tMT8tMTpiPDwxKXwwKXwwO2k9YTtyZXR1cm59ZnVuY3Rpb24gTmsoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gT2soYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFBrKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDtiPWk7aWYoKGFbZD4+MF0mMSk9PTApe2Q9ZCsxfDB9ZWxzZXtkPWNbZCs4Pj4yXXwwfWU9ZGMoZHwwLDEpfDA7aT1iO3JldHVybiBlPj4+KChlfDApIT0oLTF8MCkmMSl8MH1mdW5jdGlvbiBRayhiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO2Q9aTtpPWkrMTc2fDA7bT1kO249ZCs0MHwwO2s9ZCsxNjh8MDtsPWQrMTcyfDA7bz1kKzE2fDA7cj1kKzh8MDtqPWQrMzJ8MDtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtjW3IrND4+Ml09MDtjW3I+PjJdPTE1MDcyO3M9YVtoPj4wXXwwO2lmKChzJjEpPT0wKXt3PWgrNHwwO2g9KHMmMjU1KT4+PjF9ZWxzZXt3PWNbaCs4Pj4yXXwwO2g9Y1toKzQ+PjJdfDB9dj13KyhoPDwyKXwwO0E9bTtjW0E+PjJdPTA7Y1tBKzQ+PjJdPTA7ZG97aWYodz4+PjA8dj4+PjApe3Q9biszMnwwO3U9bys0fDA7cz1vKzF8MDtoPW8rOHwwO3g9MTUwNzJ8MDt3aGlsZSgxKXtjW2w+PjJdPXc7QT0odGNbY1t4KzEyPj4yXSYzMV0ocixtLHcsdixsLG4sdCxrKXwwKT09Mjt4PWNbbD4+Ml18MDtpZihBfCh4fDApPT0od3wwKSl7YnJlYWt9aWYobj4+PjA8KGNbaz4+Ml18MCk+Pj4wKXt4PW47ZG97dz1hW3g+PjBdfDA7eT1hW28+PjBdfDA7ej0oeSYxKSE9MDtpZih6KXtwPShjW28+PjJdJi0yKSsgLTF8MDt5PWNbdT4+Ml18MH1lbHNle3A9MTA7eT0oeSYyNTUpPj4+MX1pZigoeXwwKT09KHB8MCkpe2xnKG8scCwxLHAscCwwKTtpZigoYVtvPj4wXSYxKT09MCl7cD0xOH1lbHNle3A9MTl9fWVsc2V7aWYoeil7cD0xOX1lbHNle3A9MTh9fWlmKChwfDApPT0xOCl7cD0wO2Fbbz4+MF09KHk8PDEpKzI7QT1zO3o9eSsxfDB9ZWxzZSBpZigocHwwKT09MTkpe3A9MDtBPWNbaD4+Ml18MDt6PXkrMXwwO2NbdT4+Ml09en1hW0EreT4+MF09dzthW0Erej4+MF09MDt4PXgrMXwwfXdoaWxlKHg+Pj4wPChjW2s+PjJdfDApPj4+MCk7dz1jW2w+PjJdfDB9ZWxzZXt3PXh9aWYoISh3Pj4+MDx2Pj4+MCkpe3A9MjQ7YnJlYWt9eD1jW3I+PjJdfDB9aWYoKHB8MCk9PTI0KXtxPShhW28+PjBdJjEpPT0wO2JyZWFrfW9rKDE0Mjk2KX1lbHNle3E9MX19d2hpbGUoMCk7aWYocSl7cD1vKzF8MH1lbHNle3A9Y1tvKzg+PjJdfDB9cD1qYigoKGV8MCk9PS0xPy0xOmU8PDEpfDAsZnwwLGd8MCxwfDApfDA7Y1tiKzA+PjJdPTA7Y1tiKzQ+PjJdPTA7Y1tiKzg+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1tqPj4yXT0xNTE3NjtBPUpuKHB8MCl8MDtxPXArQXwwO3o9bTtjW3o+PjJdPTA7Y1t6KzQ+PjJdPTA7YTpkb3tpZigoQXwwKT4wKXtlPXE7cj1uKzEyOHwwO2c9Yis0fDA7Zj1iKzh8MDtoPTE1MTc2fDA7d2hpbGUoMSl7Y1tsPj4yXT1wO0E9KHRjW2NbaCsxNj4+Ml0mMzFdKGosbSxwLChlLXB8MCk+MzI/cCszMnwwOnEsbCxuLHIsayl8MCk9PTI7aD1jW2w+PjJdfDA7aWYoQXwoaHwwKT09KHB8MCkpe2JyZWFrfWlmKG4+Pj4wPChjW2s+PjJdfDApPj4+MCl7cz1uO2Rve2g9Y1tzPj4yXXwwO3Q9YVtiPj4wXXwwO3U9KHQmMSkhPTA7aWYodSl7cD0oY1tiPj4yXSYtMikrIC0xfDA7dD1jW2c+PjJdfDB9ZWxzZXtwPTE7dD0odCYyNTUpPj4+MX1pZigodHwwKT09KHB8MCkpe3BnKGIscCwxLHAscCwwLDApO2lmKChhW2I+PjBdJjEpPT0wKXtwPTQzfWVsc2V7cD00NH19ZWxzZXtpZih1KXtwPTQ0fWVsc2V7cD00M319aWYoKHB8MCk9PTQzKXthW2I+PjBdPSh0PDwxKSsyO3Y9Zzt1PXQrMXwwfWVsc2UgaWYoKHB8MCk9PTQ0KXt2PWNbZj4+Ml18MDt1PXQrMXwwO2NbZz4+Ml09dX1jW3YrKHQ8PDIpPj4yXT1oO2NbdisodTw8Mik+PjJdPTA7cz1zKzR8MH13aGlsZShzPj4+MDwoY1trPj4yXXwwKT4+PjApO3A9Y1tsPj4yXXwwfWVsc2V7cD1ofWlmKCEocD4+PjA8cT4+PjApKXticmVhayBhfWg9Y1tqPj4yXXwwfW9rKDE0Mjk2KX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe2k9ZDtyZXR1cm59Yj1jW28rOD4+Ml18MDtpZigoYnwwKT09MCl7aT1kO3JldHVybn12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIFJrKGEsYil7YT1hfDA7Yj1ifDA7YT1pO1liKCgoYnwwKT09LTE/LTE6Yjw8MSl8MCl8MDtpPWE7cmV0dXJufWZ1bmN0aW9uIFNrKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNTQ0O2I9Yis4fDA7ZT1jW2I+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChlfDApPT0oY1szMzQwXXwwKSl7aT1kO3JldHVybn1WYihjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gVGsoKXt2YXIgYj0wLGQ9MCxlPTA7ZD1YYSg4KXwwO2NbZD4+Ml09OTkwNDt3aGlsZSgxKXtlPXVuKDE5KXwwO2lmKChlfDApIT0wKXtiPTc7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKGJ8MCk9PTcpe2NbZSs0Pj4yXT02O2NbZT4+Ml09NjtiPWUrMTJ8MDtjW2QrND4+Ml09YjtjW2UrOD4+Ml09MDthW2IrMD4+MF09YVsxMzM1Mj4+MF18MDthW2IrMT4+MF09YVsxMzM1Mz4+MF18MDthW2IrMj4+MF09YVsxMzM1ND4+MF18MDthW2IrMz4+MF09YVsxMzM1NT4+MF18MDthW2IrND4+MF09YVsxMzM1Nj4+MF18MDthW2IrNT4+MF09YVsxMzM1Nz4+MF18MDthW2IrNj4+MF09YVsxMzM1OD4+MF18MDtjW2Q+PjJdPTk5ODQ7d2IoZHwwLDEwMDI0LDEwNCl9ZT1YYSg0KXwwO2NbZT4+Ml09MjI2ODA7d2IoZXwwLDIyNzI4LDIwNil9ZnVuY3Rpb24gVWsoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtmPWk7aD1kKzR8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7aD1iKzEyfDA7bD1jW2g+PjJdfDA7Zz1iKzh8MDtrPWNbZz4+Ml18MDtxPWw7cD1rO2o9cS1wPj4yO2Rve2lmKCEoaj4+PjA+ZT4+PjApKXtvPWUrMXwwO2lmKCEoaj4+PjA8bz4+PjApKXtpZighKGo+Pj4wPm8+Pj4wKSl7YnJlYWt9aj1rKyhvPDwyKXwwO2lmKChsfDApPT0oanwwKSl7YnJlYWt9Y1toPj4yXT1sKyh+KChsKyAtNCsoMC1qKXwwKT4+PjIpPDwyKTticmVha31uPW8tanwwO2s9YisxNnwwO3I9Y1trPj4yXXwwO2Rve2lmKHItcT4+Mj4+PjA8bj4+PjApe2w9YisyNHwwO2lmKG8+Pj4wPjEwNzM3NDE4MjMpe1RrKCl9cD1yLXB8MDtpZihwPj4yPj4+MDw1MzY4NzA5MTEpe3I9cD4+MTtvPXI+Pj4wPG8+Pj4wP286cjtpZigob3wwKSE9MCl7cD1iKzEzNnwwO2lmKChhW3A+PjBdfDApPT0wJm8+Pj4wPDI5KXthW3A+PjBdPTE7cD1sfWVsc2V7bT0xNH19ZWxzZXtvPTA7cD0wfX1lbHNle289MTA3Mzc0MTgyMzttPTE0fWRve2lmKChtfDApPT0xNCl7cT1vPDwyO3E9KHF8MCk9PTA/MTpxO3doaWxlKDEpe3A9dW4ocSl8MDtpZigocHwwKSE9MCl7bT0yMDticmVha31wPWNbNTY2Nl18MDtjWzU2NjZdPXArMDtpZigocHwwKT09MCl7YnJlYWt9c2NbcCYzMV0oKX1pZigobXwwKT09MjApe2JyZWFrfXI9WGEoNCl8MDtjW3I+PjJdPTIyNjgwO3diKHJ8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTttPXArKGo8PDIpfDA7ZG97aWYoKG18MCk9PTApe209MH1lbHNle2NbbT4+Ml09MH1tPW0rNHwwO249bisgLTF8MH13aGlsZSgobnwwKSE9MCk7bj1jW2c+PjJdfDA7cT0oY1toPj4yXXwwKS1ufDA7cj1wKyhqLShxPj4yKTw8Mil8MDtMbihyfDAsbnwwLHF8MCl8MDtjW2c+PjJdPXI7Y1toPj4yXT1tO2Nbaz4+Ml09cCsobzw8Mik7aWYoKG58MCkhPTApe2lmKChsfDApPT0obnwwKSl7YVtiKzEzNj4+MF09MDticmVha31lbHNle3ZuKG4pO2JyZWFrfX19ZWxzZXtkb3tpZigobHwwKT09MCl7aj0wfWVsc2V7Y1tsPj4yXT0wO2o9Y1toPj4yXXwwfWw9ais0fDA7Y1toPj4yXT1sO249bisgLTF8MH13aGlsZSgobnwwKSE9MCl9fXdoaWxlKDApO2s9Y1tnPj4yXXwwfX13aGlsZSgwKTtoPWNbaysoZTw8Mik+PjJdfDA7aWYoKGh8MCk9PTApe3I9aztyPXIrKGU8PDIpfDA7Y1tyPj4yXT1kO2k9ZjtyZXR1cm59cT1oKzR8MDtyPWNbcT4+Ml18MDtjW3E+PjJdPXIrIC0xO2lmKChyfDApPT0wKXtsY1tjWyhjW2g+PjJdfDApKzg+PjJdJjI1NV0oaCl9cj1jW2c+PjJdfDA7cj1yKyhlPDwyKXwwO2Nbcj4+Ml09ZDtpPWY7cmV0dXJufWZ1bmN0aW9uIFZrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1drKGEpO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFdrKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2U9aTtjW2I+PjJdPTEzMzkyO2Q9YisxMnwwO2o9Y1tkPj4yXXwwO2Y9Yis4fDA7az1jW2Y+PjJdfDA7aWYoKGp8MCkhPShrfDApKXtoPTA7d2hpbGUoMSl7bD1jW2srKGg8PDIpPj4yXXwwO2lmKChsfDApIT0wKXtqPWwrNHwwO2s9Y1tqPj4yXXwwO2Nbaj4+Ml09aysgLTE7aWYoKGt8MCk9PTApe2xjW2NbKGNbbD4+Ml18MCkrOD4+Ml0mMjU1XShsKX1qPWNbZD4+Ml18MDtrPWNbZj4+Ml18MH1oPWgrMXwwO2lmKCEoaD4+PjA8ai1rPj4yPj4+MCkpe2o9azticmVha319fWlmKCEoKGFbYisxNDQ+PjBdJjEpPT0wKT8oZz1jW2IrMTUyPj4yXXwwLChnfDApIT0wKTowKXt2bihnKTtqPWNbZj4+Ml18MH1pZigoanwwKT09MCl7aT1lO3JldHVybn1mPWNbZD4+Ml18MDtpZigoZnwwKSE9KGp8MCkpe2NbZD4+Ml09ZisofigoZisgLTQrKDAtail8MCk+Pj4yKTw8Mil9aWYoKGIrMjR8MCk9PShqfDApKXthW2IrMTM2Pj4wXT0wO2k9ZTtyZXR1cm59ZWxzZXt2bihqKTtpPWU7cmV0dXJufX0KCgoKZnVuY3Rpb24gWm4oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGhjW2EmNjNdKGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIF9uKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiAkbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gYW8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGJvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBjbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gZW8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGZvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBnbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gaG8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGlvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBqbyhhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2ljW2EmNjNdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24ga28oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIGxvKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBtbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gbm8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIG9vKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBwbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gcW8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIHJvKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBzbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gdG8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIHVvKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtqY1thJjMxXShifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiB2byhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gd28oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIHhvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiB5byhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gem8oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIEFvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiBCbyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gQ28oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIERvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiBFbyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gRm8oYSl7YT1hfDA7cmV0dXJuIGtjW2EmMzFdKCl8MH1mdW5jdGlvbiBHbygpe3JldHVybiBrYSgwKXwwfWZ1bmN0aW9uIEhvKCl7cmV0dXJuIGthKDEpfDB9ZnVuY3Rpb24gSW8oKXtyZXR1cm4ga2EoMil8MH1mdW5jdGlvbiBKbygpe3JldHVybiBrYSgzKXwwfWZ1bmN0aW9uIEtvKCl7cmV0dXJuIGthKDQpfDB9ZnVuY3Rpb24gTG8oKXtyZXR1cm4ga2EoNSl8MH1mdW5jdGlvbiBNbygpe3JldHVybiBrYSg2KXwwfWZ1bmN0aW9uIE5vKCl7cmV0dXJuIGthKDcpfDB9ZnVuY3Rpb24gT28oKXtyZXR1cm4ga2EoOCl8MH1mdW5jdGlvbiBQbygpe3JldHVybiBrYSg5KXwwfWZ1bmN0aW9uIFFvKGEsYil7YT1hfDA7Yj1ifDA7bGNbYSYyNTVdKGJ8MCl9ZnVuY3Rpb24gUm8oYSl7YT1hfDA7a2EoMCxhfDApfWZ1bmN0aW9uIFNvKGEpe2E9YXwwO2thKDEsYXwwKX1mdW5jdGlvbiBUbyhhKXthPWF8MDtrYSgyLGF8MCl9ZnVuY3Rpb24gVW8oYSl7YT1hfDA7a2EoMyxhfDApfWZ1bmN0aW9uIFZvKGEpe2E9YXwwO2thKDQsYXwwKX1mdW5jdGlvbiBXbyhhKXthPWF8MDtrYSg1LGF8MCl9ZnVuY3Rpb24gWG8oYSl7YT1hfDA7a2EoNixhfDApfWZ1bmN0aW9uIFlvKGEpe2E9YXwwO2thKDcsYXwwKX1mdW5jdGlvbiBabyhhKXthPWF8MDtrYSg4LGF8MCl9ZnVuY3Rpb24gX28oYSl7YT1hfDA7a2EoOSxhfDApfWZ1bmN0aW9uICRvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDttY1thJjEyN10oYnwwLGN8MCl9ZnVuY3Rpb24gYXAoYSxiKXthPWF8MDtiPWJ8MDtrYSgwLGF8MCxifDApfWZ1bmN0aW9uIGJwKGEsYil7YT1hfDA7Yj1ifDA7a2EoMSxhfDAsYnwwKX1mdW5jdGlvbiBjcChhLGIpe2E9YXwwO2I9YnwwO2thKDIsYXwwLGJ8MCl9ZnVuY3Rpb24gZHAoYSxiKXthPWF8MDtiPWJ8MDtrYSgzLGF8MCxifDApfWZ1bmN0aW9uIGVwKGEsYil7YT1hfDA7Yj1ifDA7a2EoNCxhfDAsYnwwKX1mdW5jdGlvbiBmcChhLGIpe2E9YXwwO2I9YnwwO2thKDUsYXwwLGJ8MCl9ZnVuY3Rpb24gZ3AoYSxiKXthPWF8MDtiPWJ8MDtrYSg2LGF8MCxifDApfWZ1bmN0aW9uIGhwKGEsYil7YT1hfDA7Yj1ifDA7a2EoNyxhfDAsYnwwKX1mdW5jdGlvbiBpcChhLGIpe2E9YXwwO2I9YnwwO2thKDgsYXwwLGJ8MCl9ZnVuY3Rpb24ganAoYSxiKXthPWF8MDtiPWJ8MDtrYSg5LGF8MCxifDApfWZ1bmN0aW9uIGtwKGEsYixjLGQsZSxmLGcsaCxpLGope2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2o9anwwO25jW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDAsanwwKX1mdW5jdGlvbiBscChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gbXAoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIG5wKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiBvcChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gcHAoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIHFwKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiBycChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gc3AoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIHRwKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiB1cChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gdnAoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gb2NbYSYxMjddKGJ8MCl8MH1mdW5jdGlvbiB3cChhKXthPWF8MDtyZXR1cm4ga2EoMCxhfDApfDB9ZnVuY3Rpb24geHAoYSl7YT1hfDA7cmV0dXJuIGthKDEsYXwwKXwwfWZ1bmN0aW9uIHlwKGEpe2E9YXwwO3JldHVybiBrYSgyLGF8MCl8MH1mdW5jdGlvbiB6cChhKXthPWF8MDtyZXR1cm4ga2EoMyxhfDApfDB9ZnVuY3Rpb24gQXAoYSl7YT1hfDA7cmV0dXJuIGthKDQsYXwwKXwwfWZ1bmN0aW9uIEJwKGEpe2E9YXwwO3JldHVybiBrYSg1LGF8MCl8MH1mdW5jdGlvbiBDcChhKXthPWF8MDtyZXR1cm4ga2EoNixhfDApfDB9ZnVuY3Rpb24gRHAoYSl7YT1hfDA7cmV0dXJuIGthKDcsYXwwKXwwfWZ1bmN0aW9uIEVwKGEpe2E9YXwwO3JldHVybiBrYSg4LGF8MCl8MH1mdW5jdGlvbiBGcChhKXthPWF8MDtyZXR1cm4ga2EoOSxhfDApfDB9ZnVuY3Rpb24gR3AoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPStoO3BjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLCtoKX1mdW5jdGlvbiBIcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIElwKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoMSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gSnAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBLcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIExwKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoNCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gTXAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBOcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIE9wKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoNyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gUHAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBRcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIFJwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3FjW2EmMzFdKGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBTcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoMCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gVHAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDEsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFVwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSgyLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBWcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoMyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gV3AoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDQsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFhwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSg1LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBZcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoNixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gWnAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDcsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIF9wKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSg4LGF8MCxifDAsY3wwKX1mdW5jdGlvbiAkcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoOSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gYXEoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztyY1thJjMxXShifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBicShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSgwLGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGNxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24gZHEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBlcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSgzLGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGZxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24gZ3EoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBocShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSg2LGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGlxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24ganEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBrcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSg5LGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGxxKGEpe2E9YXwwO3NjW2EmMzFdKCl9ZnVuY3Rpb24gbXEoKXtrYSgwKX1mdW5jdGlvbiBucSgpe2thKDEpfWZ1bmN0aW9uIG9xKCl7a2EoMil9ZnVuY3Rpb24gcHEoKXtrYSgzKX1mdW5jdGlvbiBxcSgpe2thKDQpfWZ1bmN0aW9uIHJxKCl7a2EoNSl9ZnVuY3Rpb24gc3EoKXtrYSg2KX1mdW5jdGlvbiB0cSgpe2thKDcpfWZ1bmN0aW9uIHVxKCl7a2EoOCl9ZnVuY3Rpb24gdnEoKXtrYSg5KX1mdW5jdGlvbiB3cShhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7cmV0dXJuIHRjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfDB9ZnVuY3Rpb24geHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIHlxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiB6cShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gQXEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEJxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiBDcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gRHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEVxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiBGcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gR3EoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEhxKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIHVjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBJcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gSnEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEtxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBMcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gTXEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIE5xKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBPcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gUHEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFFxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBScShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gU3EoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO3ZjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIFRxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBVcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gVnEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIFdxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBYcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gWXEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIFpxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBfcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gJHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIGFyKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBicihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt3Y1thJjYzXShifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gY3IoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGRyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBlcihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gZnIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGdyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBocihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gaXIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGpyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBrcihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gbHIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIG1yKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4geGNbYSY2M10oYnwwLGN8MCl8MH1mdW5jdGlvbiBucihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSgwLGF8MCxifDApfDB9ZnVuY3Rpb24gb3IoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoMSxhfDAsYnwwKXwwfWZ1bmN0aW9uIHByKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDIsYXwwLGJ8MCl8MH1mdW5jdGlvbiBxcihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSgzLGF8MCxifDApfDB9ZnVuY3Rpb24gcnIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoNCxhfDAsYnwwKXwwfWZ1bmN0aW9uIHNyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDUsYXwwLGJ8MCl8MH1mdW5jdGlvbiB0cihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSg2LGF8MCxifDApfDB9ZnVuY3Rpb24gdXIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoNyxhfDAsYnwwKXwwfWZ1bmN0aW9uIHZyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDgsYXwwLGJ8MCl8MH1mdW5jdGlvbiB3cihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSg5LGF8MCxifDApfDB9ZnVuY3Rpb24geHIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB5Y1thJjYzXShifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIHlyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiB6cihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gQXIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEJyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBDcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gRHIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEVyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBGcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gR3IoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEhyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBJcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3pjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gSnIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEtyKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBMcihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gTXIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIE5yKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBPcihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gUHIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoNixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFFyKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBScihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gU3IoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFRyKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtmYSgwKTtyZXR1cm4gMH1mdW5jdGlvbiBVcihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtmYSgxKX1mdW5jdGlvbiBWcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2ZhKDIpfWZ1bmN0aW9uIFdyKCl7ZmEoMyk7cmV0dXJuIDB9ZnVuY3Rpb24gWHIoYSl7YT1hfDA7ZmEoNCl9ZnVuY3Rpb24gWXIoYSxiKXthPWF8MDtiPWJ8MDtmYSg1KX1mdW5jdGlvbiBacihhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7ZmEoNil9ZnVuY3Rpb24gX3IoYSl7YT1hfDA7ZmEoNyk7cmV0dXJuIDB9ZnVuY3Rpb24gJHIoYSl7YT1hfDA7cmV0dXJuIEFiKGF8MCl8MH1mdW5jdGlvbiBhcyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2ZhKDgpfWZ1bmN0aW9uIGJzKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtmYSg5KX1mdW5jdGlvbiBjcyhhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtmYSgxMCl9ZnVuY3Rpb24gZHMoKXtmYSgxMSl9ZnVuY3Rpb24gZXMoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtmYSgxMik7cmV0dXJuIDB9ZnVuY3Rpb24gZnMoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZmEoMTMpO3JldHVybiAwfWZ1bmN0aW9uIGdzKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7ZmEoMTQpfWZ1bmN0aW9uIGhzKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtmYSgxNSl9ZnVuY3Rpb24gaXMoYSxiKXthPWF8MDtiPWJ8MDtmYSgxNik7cmV0dXJuIDB9ZnVuY3Rpb24ganMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmYSgxNyk7cmV0dXJuIDB9ZnVuY3Rpb24ga3MoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZmEoMTgpfQoKCgoKLy8gRU1TQ1JJUFRFTl9FTkRfRlVOQ1MKdmFyIGhjPVtUcixUcixfbixUciwkbixUcixhbyxUcixibyxUcixjbyxUcixlbyxUcixmbyxUcixnbyxUcixobyxUcixpbyxUcix2ZyxBZyxFZyxKZyxPZyxrZixTZyx4ZixQZixRZixEaCxJaCxLayxQayxxbCxzbCx2bCxibCxnbCxpbCxsbCxobixtbixnbixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcl07dmFyIGljPVtVcixVcixrbyxVcixsbyxVcixtbyxVcixubyxVcixvbyxVcixwbyxVcixxbyxVcixybyxVcixzbyxVcix0byxVcixMaCxOaCxPaCxQaCxRaCxSaCxTaCxUaCxVaCxWaCxXaCwkaCxiaSxjaSxkaSxlaSxmaSxnaSxoaSxpaSxqaSxraSx5aSxBaSxNaSxPaSxYaSxZaSxaaSxfaSwkaSxnaixoaixpaixqaixraixCayxIayxVcixVcixVcixVcl07dmFyIGpjPVtWcixWcix2byxWcix3byxWcix4byxWcix5byxWcix6byxWcixBbyxWcixCbyxWcixDbyxWcixEbyxWcixFbyxWcixxbixwbixvbixWcixWcixWcixWcixWcixWcixWcl07dmFyIGtjPVtXcixXcixHbyxXcixIbyxXcixJbyxXcixKbyxXcixLbyxXcixMbyxXcixNbyxXcixObyxXcixPbyxXcixQbyxXcixPYyxXcixXcixXcixXcixXcixXcixXcixXcixXcl07dmFyIGxjPVtYcixYcixSbyxYcixTbyxYcixUbyxYcixVbyxYcixWbyxYcixXbyxYcixYbyxYcixZbyxYcixabyxYcixfbyxYcixUYyxVYyxoZCxpZCxuZCxvZCx2ZCx3ZCx4ZCx6ZCxCZCxDZCxEZCxFZCxGZCxIZCxKZCxLZCxMZCxNZCxOZCxQZCxSZCxTZCxUZCxVZCxWZCxYZCxZZCwkZCxaZCxhZSxfZCxiZSxWZyxVZyxYZyxXZyxjZSxkZSxqZSxrZSxsZSxuZSx0ZSx1ZSxzZSx2ZSxyZSx3ZSx4ZSx5ZSx6ZSxBZSxCZSxDZSxFZSxGZSxJZSxKZSxPZSxQZSxOZSxRZSxxZSxSZSxUZSxVZSxWZSxYZSxZZSxaZSxfZSxhZixmZixnZixtZixuZix0Zix1Zix6ZixBZixJZixIZixMZixLZixOZixfZixaZixUZiwkZixYZixhZyx0ZyxzZyxIZyxHZyxfZyxaZyxhaCwkZyxkaCxjaCxmaCxlaCxuaCxtaCxwaCxvaCx2aCx1aCxyZyx3aCx0aCx4aCx6aCx5aCxfayxGaCxFaCxLaCxKaCxfaCxaaCx0aSxzaSxIaSxHaSxWaSxVaSxlaixkaixvaixuaixyaixxaix1aix0aixGaixFaixRaixQaiwkaixfaixrayxqayxzayxyayx4ayx3ayxEayxDayxKayxJayxPayxOayxXayxWayxvbCxubCxTayxGbCxlbSxkbSxnbSxmbSxBaCxaayxhbCx4bCxObCxWbCxibSxjbSxZbSxYbSxfbSxjbiwkbSxhbixmbixibixkbixlbix6bix5biwkayxEZSxiZyxSYyxlZixtayx2bixUbSxTbSxSbSxRbSxQbSxPbSxmZyxtZyxYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcl07dmFyIG1jPVtZcixZcixhcCxZcixicCxZcixjcCxZcixkcCxZcixlcCxZcixmcCxZcixncCxZcixocCxZcixpcCxZcixqcCxZcixnZCxBZCxJZCxRZCx1ZyxIZSxLZSxoZixvZix2ZixCZixJZyx4aix5aix6aixBaixDaixEaixJaixKaixLaixMaixOaixPaixUaixVaixWaixXaixZaixaaixjayxkayxlayxmayxoayxpayxNayxSayxsbSxubSxwbSxtbSxvbSxxbSxKYyxZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcl07dmFyIG5jPVtacixacixscCxacixtcCxacixucCxacixvcCxacixwcCxacixxcCxacixycCxacixzcCxacix0cCxacix1cCxacixhaixsaixacixacixacixacixacixacixacixacl07dmFyIG9jPVtfcixfcix3cCxfcix4cCxfcix5cCxfcix6cCxfcixBcCxfcixCcCxfcixDcCxfcixEcCxfcixFcCxfcixGcCxfcixNZix5Zyx6ZyxnZSxDZywkcixHZSxNZSxqZixOZyxQZyxRZyxNZyxwZixxZix3ZixCZyxDZixEZixKZixSZixVZixyaCxXaSxybSx0bSx2bSxCbSxEbSx4bSx6bSxmaixzbSx1bSx3bSxDbSxFbSx5bSxBbSx2aix3aixCaixHaixIaixNaixSaixTaixYaixhayxiayxnayxKbCxLbCxNbCxobSxqbSxpbSxrbSxCbCxDbCxFbCxSbCxTbCxVbCxabCxfbCxhbSxabSxBbixRYyxQYyxLYyxfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcl07dmFyIHBjPVthcyxhcyxIcCxhcyxJcCxhcyxKcCxhcyxLcCxhcyxMcCxhcyxNcCxhcyxOcCxhcyxPcCxhcyxQcCxhcyxRcCxhcyx5ayxFayxhcyxhcyxhcyxhcyxhcyxhcyxhcyxhc107dmFyIHFjPVticyxicyxTcCxicyxUcCxicyxVcCxicyxWcCxicyxXcCxicyxYcCxicyxZcCxicyxacCxicyxfcCxicywkcCxicyxPZixTZixXZixWZixzaCxJYyxNYyxicyxicyxic107dmFyIHJjPVtjcyxjcyxicSxjcyxjcSxjcyxkcSxjcyxlcSxjcyxmcSxjcyxncSxjcyxocSxjcyxpcSxjcyxqcSxjcyxrcSxjcyxCaSxFaSxQaSxSaSxjcyxjcyxjcyxjcyxjcyxjc107dmFyIHNjPVtkcyxkcyxtcSxkcyxucSxkcyxvcSxkcyxwcSxkcyxxcSxkcyxycSxkcyxzcSxkcyx0cSxkcyx1cSxkcyx2cSxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkc107dmFyIHRjPVtlcyxlcyx4cSxlcyx5cSxlcyx6cSxlcyxBcSxlcyxCcSxlcyxDcSxlcyxEcSxlcyxFcSxlcyxGcSxlcyxHcSxlcyxHbCxIbCx5bCx6bCxPbCxQbCxXbCxYbCxlcyxlc107dmFyIHVjPVtmcyxmcyxJcSxmcyxKcSxmcyxLcSxmcyxMcSxmcyxNcSxmcyxOcSxmcyxPcSxmcyxQcSxmcyxRcSxmcyxScSxmcyx1bCxjbCxkbCxlbCxrbCxmcyxmcyxmcyxmcyxmc107dmFyIHZjPVtncyxncyxUcSxncyxVcSxncyxWcSxncyxXcSxncyxYcSxncyxZcSxncyxacSxncyxfcSxncywkcSxncyxhcixncyxwaixzaixsayxwayx0ayx2ayxncyxncyxncyxnc107dmFyIHdjPVtocyxocyxjcixocyxkcixocyxlcixocyxmcixocyxncixocyxocixocyxpcixocyxqcixocyxrcixocyxscixocyxlZSxLZyx3Zyx1aSx2aSx6aSxGaSxJaSxKaSxOaSxTaSxMayxRayx0bixzbixybixocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxoc107dmFyIHhjPVtpcyxpcyxucixpcyxvcixpcyxwcixpcyxxcixpcyxycixpcyxzcixpcyx0cixpcyx1cixpcyx2cixpcyx3cixpcyx5ZCxHZCxPZCxXZCxoZSxpZSxtZSxMZSxXZSwkZSxSZyxsZixyZixUZyxEZyx5ZixFZixGZyxwbCxybCx0bCxmbCxobCxqbCxMYyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpc107dmFyIHljPVtqcyxqcyx5cixqcyx6cixqcyxBcixqcyxCcixqcyxDcixqcyxEcixqcyxFcixqcyxGcixqcyxHcixqcyxIcixqcyxCaCxHaCx3bCxJbCxMbCxtbCxBbCxEbCxRbCxUbCxZbCwkbCxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqc107dmFyIHpjPVtrcyxrcyxKcixrcyxLcixrcyxMcixrcyxNcixrcyxOcixrcyxPcixrcyxQcixrcyxRcixrcyxScixrcyxTcixrcyxmZSxMZyx4ZyxDaCxIaCxqbixrbixsbixOYyxrc107cmV0dXJue19pNjRTdWJ0cmFjdDpIbixfZnJlZTp2bixfcmVhbGxvYzp3bixfaTY0QWRkOkluLF9tZW1tb3ZlOk1uLF9zdHJsZW46Sm4sX21lbXNldDpObixfbWFsbG9jOnVuLF9tZW1jcHk6TG4sX19fZ2V0VHlwZU5hbWU6Y2YsX2JpdHNoaWZ0NjRMc2hyOktuLF9iaXRzaGlmdDY0U2hsOk9uLF9fR0xPQkFMX19JX2E6YmYsX19HTE9CQUxfX0lfYTY1OmRmLF9fR0xPQkFMX19JX2ExNTM6R2YscnVuUG9zdFNldHM6R24sc3RhY2tBbGxvYzpBYyxzdGFja1NhdmU6QmMsc3RhY2tSZXN0b3JlOkNjLHNldFRocmV3OkRjLHNldFRlbXBSZXQwOkdjLGdldFRlbXBSZXQwOkhjLGR5bkNhbGxfaWlpaTpabixkeW5DYWxsX3ZpaWlpaWlpOmpvLGR5bkNhbGxfdmlpaWlpOnVvLGR5bkNhbGxfaTpGbyxkeW5DYWxsX3ZpOlFvLGR5bkNhbGxfdmlpOiRvLGR5bkNhbGxfdmlpaWlpaWlpaTprcCxkeW5DYWxsX2lpOnZwLGR5bkNhbGxfdmlpaWlpaWQ6R3AsZHluQ2FsbF92aWlpOlJwLGR5bkNhbGxfdmlpaWlpZDphcSxkeW5DYWxsX3Y6bHEsZHluQ2FsbF9paWlpaWlpaWk6d3EsZHluQ2FsbF9paWlpaTpIcSxkeW5DYWxsX3ZpaWlpaWlpaTpTcSxkeW5DYWxsX3ZpaWlpaWk6YnIsZHluQ2FsbF9paWk6bXIsZHluQ2FsbF9paWlpaWk6eHIsZHluQ2FsbF92aWlpaTpJcn0KLy8gRU1TQ1JJUFRFTl9FTkRfQVNNCgp9KSh7Ik1hdGgiOk1hdGgsIkludDhBcnJheSI6SW50OEFycmF5LCJJbnQxNkFycmF5IjpJbnQxNkFycmF5LCJJbnQzMkFycmF5IjpJbnQzMkFycmF5LCJVaW50OEFycmF5IjpVaW50OEFycmF5LCJVaW50MTZBcnJheSI6VWludDE2QXJyYXksIlVpbnQzMkFycmF5IjpVaW50MzJBcnJheSwiRmxvYXQzMkFycmF5IjpGbG9hdDMyQXJyYXksIkZsb2F0NjRBcnJheSI6RmxvYXQ2NEFycmF5fSx7ImFib3J0IjphYm9ydCwiYXNzZXJ0Ijphc3NlcnQsImFzbVByaW50SW50Ijphc21QcmludEludCwiYXNtUHJpbnRGbG9hdCI6YXNtUHJpbnRGbG9hdCwibWluIjpNYXRoX21pbiwianNDYWxsIjpqc0NhbGwsImludm9rZV9paWlpIjppbnZva2VfaWlpaSwiaW52b2tlX3ZpaWlpaWlpIjppbnZva2VfdmlpaWlpaWksImludm9rZV92aWlpaWkiOmludm9rZV92aWlpaWksImludm9rZV9pIjppbnZva2VfaSwiaW52b2tlX3ZpIjppbnZva2VfdmksImludm9rZV92aWkiOmludm9rZV92aWksImludm9rZV92aWlpaWlpaWlpIjppbnZva2VfdmlpaWlpaWlpaSwiaW52b2tlX2lpIjppbnZva2VfaWksImludm9rZV92aWlpaWlpZCI6aW52b2tlX3ZpaWlpaWlkLCJpbnZva2VfdmlpaSI6aW52b2tlX3ZpaWksImludm9rZV92aWlpaWlkIjppbnZva2VfdmlpaWlpZCwiaW52b2tlX3YiOmludm9rZV92LCJpbnZva2VfaWlpaWlpaWlpIjppbnZva2VfaWlpaWlpaWlpLCJpbnZva2VfaWlpaWkiOmludm9rZV9paWlpaSwiaW52b2tlX3ZpaWlpaWlpaSI6aW52b2tlX3ZpaWlpaWlpaSwiaW52b2tlX3ZpaWlpaWkiOmludm9rZV92aWlpaWlpLCJpbnZva2VfaWlpIjppbnZva2VfaWlpLCJpbnZva2VfaWlpaWlpIjppbnZva2VfaWlpaWlpLCJpbnZva2VfdmlpaWkiOmludm9rZV92aWlpaSwiX2ZhYnMiOl9mYWJzLCJfc3NjYW5mIjpfc3NjYW5mLCJfcHRocmVhZF9jb25kX3dhaXQiOl9wdGhyZWFkX2NvbmRfd2FpdCwiX19fY3R5cGVfdG9sb3dlcl9sb2MiOl9fX2N0eXBlX3RvbG93ZXJfbG9jLCJfYXNwcmludGYiOl9hc3ByaW50ZiwiX19lbWJpbmRfcmVnaXN0ZXJfdm9pZCI6X19lbWJpbmRfcmVnaXN0ZXJfdm9pZCwiX3NlbmQiOl9zZW5kLCJfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyI6X19lbWJpbmRfcmVnaXN0ZXJfbWVtb3J5X3ZpZXcsIl92c3NjYW5mIjpfdnNzY2FuZiwiX19fY3R5cGVfYl9sb2MiOl9fX2N0eXBlX2JfbG9jLCJfX1pTdDl0ZXJtaW5hdGV2IjpfX1pTdDl0ZXJtaW5hdGV2LCJfZm1vZCI6X2Ztb2QsIl9fX2N4YV9ndWFyZF9hY3F1aXJlIjpfX19jeGFfZ3VhcmRfYWNxdWlyZSwiX19fc2V0RXJyTm8iOl9fX3NldEVyck5vLCJfX19jeGFfaXNfbnVtYmVyX3R5cGUiOl9fX2N4YV9pc19udW1iZXJfdHlwZSwiX19fZ3h4X3BlcnNvbmFsaXR5X3YwIjpfX19neHhfcGVyc29uYWxpdHlfdjAsIl9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIiOl9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIsIl91bmdldGMiOl91bmdldGMsIl9fX2Fzc2VydF9mYWlsIjpfX19hc3NlcnRfZmFpbCwiX19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiI6X19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiwiX19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYiOl9fWlN0MTh1bmNhdWdodF9leGNlcHRpb252LCJfX19jdHlwZV90b3VwcGVyX2xvYyI6X19fY3R5cGVfdG91cHBlcl9sb2MsIl9mZmx1c2giOl9mZmx1c2gsIl9fX2N4YV9ndWFyZF9yZWxlYXNlIjpfX19jeGFfZ3VhcmRfcmVsZWFzZSwiX19hZGREYXlzIjpfX2FkZERheXMsIl9fX2Vycm5vX2xvY2F0aW9uIjpfX19lcnJub19sb2NhdGlvbiwiX3B3cml0ZSI6X3B3cml0ZSwiX3N0cmVycm9yX3IiOl9zdHJlcnJvcl9yLCJfc3RyZnRpbWVfbCI6X3N0cmZ0aW1lX2wsIl9fZm9ybWF0U3RyaW5nIjpfX2Zvcm1hdFN0cmluZywiX19yZWFsbHlOZWdhdGl2ZSI6X19yZWFsbHlOZWdhdGl2ZSwiX3NicmsiOl9zYnJrLCJfdXNlbG9jYWxlIjpfdXNlbG9jYWxlLCJfY2F0Z2V0cyI6X2NhdGdldHMsIl9uZXdsb2NhbGUiOl9uZXdsb2NhbGUsIl9zbnByaW50ZiI6X3NucHJpbnRmLCJfX19jeGFfYmVnaW5fY2F0Y2giOl9fX2N4YV9iZWdpbl9jYXRjaCwiX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZyI6X2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZywiX2ZpbGVubyI6X2ZpbGVubywiX19lbWJpbmRfcmVnaXN0ZXJfYm9vbCI6X19lbWJpbmRfcmVnaXN0ZXJfYm9vbCwiX19fcmVzdW1lRXhjZXB0aW9uIjpfX19yZXN1bWVFeGNlcHRpb24sIl9fX2N4YV9maW5kX21hdGNoaW5nX2NhdGNoIjpfX19jeGFfZmluZF9tYXRjaGluZ19jYXRjaCwiX3N5c2NvbmYiOl9zeXNjb25mLCJfX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nIjpfX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nLCJfc3RyZnRpbWUiOl9zdHJmdGltZSwiX19hcnJheVN1bSI6X19hcnJheVN1bSwiX19fY3hhX3Rocm93IjpfX19jeGFfdGhyb3csIl9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsIjpfX2VtYmluZF9yZWdpc3Rlcl9lbXZhbCwiX19leGl0IjpfX2V4aXQsIl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiwiX19aTktTdDlleGNlcHRpb240d2hhdEV2IjpfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYsIl9wdGhyZWFkX211dGV4X2Rlc3Ryb3kiOl9wdGhyZWFkX211dGV4X2Rlc3Ryb3ksIl9wdGhyZWFkX211dGV4X3VubG9jayI6X3B0aHJlYWRfbXV0ZXhfdW5sb2NrLCJfZnJlYWQiOl9mcmVhZCwiX3B0aHJlYWRfY29uZF9icm9hZGNhc3QiOl9wdGhyZWFkX2NvbmRfYnJvYWRjYXN0LCJfbWtwb3J0IjpfbWtwb3J0LCJfc3ByaW50ZiI6X3NwcmludGYsIl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzcywiX3Zhc3ByaW50ZiI6X3Zhc3ByaW50ZiwiX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmciOl9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF93c3RyaW5nLCJfd3JpdGUiOl93cml0ZSwiX19pc0xlYXBZZWFyIjpfX2lzTGVhcFllYXIsIl9fc2NhblN0cmluZyI6X19zY2FuU3RyaW5nLCJfc3RyZXJyb3IiOl9zdHJlcnJvciwiX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IiOl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yLCJfcmVjdiI6X3JlY3YsIl92c25wcmludGYiOl92c25wcmludGYsIl9fWk5TdDlleGNlcHRpb25EMkV2IjpfX1pOU3Q5ZXhjZXB0aW9uRDJFdiwiX2NvcHlzaWduIjpfY29weXNpZ24sIl9mZ2V0YyI6X2ZnZXRjLCJfX19jeGFfZG9lc19pbmhlcml0IjpfX19jeGFfZG9lc19pbmhlcml0LCJfZnJlZWxvY2FsZSI6X2ZyZWVsb2NhbGUsIl9yZWFkIjpfcmVhZCwiX2Fib3J0IjpfYWJvcnQsIl9jYXRjbG9zZSI6X2NhdGNsb3NlLCJfZndyaXRlIjpfZndyaXRlLCJfdGltZSI6X3RpbWUsIl9wdGhyZWFkX211dGV4X2xvY2siOl9wdGhyZWFkX211dGV4X2xvY2ssIl9fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0IjpfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdCwiX3ByZWFkIjpfcHJlYWQsIl9hdGV4aXQiOl9hdGV4aXQsIl9jYXRvcGVuIjpfY2F0b3BlbiwiX2V4aXQiOl9leGl0LCJfX2dldEZsb2F0IjpfX2dldEZsb2F0LCJTVEFDS1RPUCI6U1RBQ0tUT1AsIlNUQUNLX01BWCI6U1RBQ0tfTUFYLCJ0ZW1wRG91YmxlUHRyIjp0ZW1wRG91YmxlUHRyLCJBQk9SVCI6QUJPUlQsImN0dHpfaTgiOmN0dHpfaTgsImN0bHpfaTgiOmN0bHpfaTgsIk5hTiI6TmFOLCJJbmZpbml0eSI6SW5maW5pdHksIl9fWlRJU3Q5ZXhjZXB0aW9uIjpfX1pUSVN0OWV4Y2VwdGlvbiwiX19fZHNvX2hhbmRsZSI6X19fZHNvX2hhbmRsZSwiX3N0ZGVyciI6X3N0ZGVyciwiX3N0ZGluIjpfc3RkaW4sIl9zdGRvdXQiOl9zdGRvdXR9LGJ1ZmZlcik7dmFyIF9pNjRTdWJ0cmFjdD1Nb2R1bGVbIl9pNjRTdWJ0cmFjdCJdPWFzbVsiX2k2NFN1YnRyYWN0Il07dmFyIF9mcmVlPU1vZHVsZVsiX2ZyZWUiXT1hc21bIl9mcmVlIl07dmFyIF9yZWFsbG9jPU1vZHVsZVsiX3JlYWxsb2MiXT1hc21bIl9yZWFsbG9jIl07dmFyIF9pNjRBZGQ9TW9kdWxlWyJfaTY0QWRkIl09YXNtWyJfaTY0QWRkIl07dmFyIF9tZW1tb3ZlPU1vZHVsZVsiX21lbW1vdmUiXT1hc21bIl9tZW1tb3ZlIl07dmFyIF9zdHJsZW49TW9kdWxlWyJfc3RybGVuIl09YXNtWyJfc3RybGVuIl07dmFyIF9tZW1zZXQ9TW9kdWxlWyJfbWVtc2V0Il09YXNtWyJfbWVtc2V0Il07dmFyIF9tYWxsb2M9TW9kdWxlWyJfbWFsbG9jIl09YXNtWyJfbWFsbG9jIl07dmFyIF9tZW1jcHk9TW9kdWxlWyJfbWVtY3B5Il09YXNtWyJfbWVtY3B5Il07dmFyIF9fX2dldFR5cGVOYW1lPU1vZHVsZVsiX19fZ2V0VHlwZU5hbWUiXT1hc21bIl9fX2dldFR5cGVOYW1lIl07dmFyIF9iaXRzaGlmdDY0THNocj1Nb2R1bGVbIl9iaXRzaGlmdDY0THNociJdPWFzbVsiX2JpdHNoaWZ0NjRMc2hyIl07dmFyIF9iaXRzaGlmdDY0U2hsPU1vZHVsZVsiX2JpdHNoaWZ0NjRTaGwiXT1hc21bIl9iaXRzaGlmdDY0U2hsIl07dmFyIF9fR0xPQkFMX19JX2E9TW9kdWxlWyJfX0dMT0JBTF9fSV9hIl09YXNtWyJfX0dMT0JBTF9fSV9hIl07dmFyIF9fR0xPQkFMX19JX2E2NT1Nb2R1bGVbIl9fR0xPQkFMX19JX2E2NSJdPWFzbVsiX19HTE9CQUxfX0lfYTY1Il07dmFyIF9fR0xPQkFMX19JX2ExNTM9TW9kdWxlWyJfX0dMT0JBTF9fSV9hMTUzIl09YXNtWyJfX0dMT0JBTF9fSV9hMTUzIl07dmFyIHJ1blBvc3RTZXRzPU1vZHVsZVsicnVuUG9zdFNldHMiXT1hc21bInJ1blBvc3RTZXRzIl07dmFyIGR5bkNhbGxfaWlpaT1Nb2R1bGVbImR5bkNhbGxfaWlpaSJdPWFzbVsiZHluQ2FsbF9paWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWk9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlpIl09YXNtWyJkeW5DYWxsX3ZpaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpPU1vZHVsZVsiZHluQ2FsbF92aWlpaWkiXT1hc21bImR5bkNhbGxfdmlpaWlpIl07dmFyIGR5bkNhbGxfaT1Nb2R1bGVbImR5bkNhbGxfaSJdPWFzbVsiZHluQ2FsbF9pIl07dmFyIGR5bkNhbGxfdmk9TW9kdWxlWyJkeW5DYWxsX3ZpIl09YXNtWyJkeW5DYWxsX3ZpIl07dmFyIGR5bkNhbGxfdmlpPU1vZHVsZVsiZHluQ2FsbF92aWkiXT1hc21bImR5bkNhbGxfdmlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpaWlpaSJdPWFzbVsiZHluQ2FsbF92aWlpaWlpaWlpIl07dmFyIGR5bkNhbGxfaWk9TW9kdWxlWyJkeW5DYWxsX2lpIl09YXNtWyJkeW5DYWxsX2lpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWQ9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlkIl09YXNtWyJkeW5DYWxsX3ZpaWlpaWlkIl07dmFyIGR5bkNhbGxfdmlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaSJdPWFzbVsiZHluQ2FsbF92aWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpZD1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpZCJdPWFzbVsiZHluQ2FsbF92aWlpaWlkIl07dmFyIGR5bkNhbGxfdj1Nb2R1bGVbImR5bkNhbGxfdiJdPWFzbVsiZHluQ2FsbF92Il07dmFyIGR5bkNhbGxfaWlpaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF9paWlpaWlpaWkiXT1hc21bImR5bkNhbGxfaWlpaWlpaWlpIl07dmFyIGR5bkNhbGxfaWlpaWk9TW9kdWxlWyJkeW5DYWxsX2lpaWlpIl09YXNtWyJkeW5DYWxsX2lpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF92aWlpaWlpaWkiXT1hc21bImR5bkNhbGxfdmlpaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpaSJdPWFzbVsiZHluQ2FsbF92aWlpaWlpIl07dmFyIGR5bkNhbGxfaWlpPU1vZHVsZVsiZHluQ2FsbF9paWkiXT1hc21bImR5bkNhbGxfaWlpIl07dmFyIGR5bkNhbGxfaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF9paWlpaWkiXT1hc21bImR5bkNhbGxfaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWk9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpIl09YXNtWyJkeW5DYWxsX3ZpaWlpIl07UnVudGltZS5zdGFja0FsbG9jPWFzbVsic3RhY2tBbGxvYyJdO1J1bnRpbWUuc3RhY2tTYXZlPWFzbVsic3RhY2tTYXZlIl07UnVudGltZS5zdGFja1Jlc3RvcmU9YXNtWyJzdGFja1Jlc3RvcmUiXTtSdW50aW1lLnNldFRlbXBSZXQwPWFzbVsic2V0VGVtcFJldDAiXTtSdW50aW1lLmdldFRlbXBSZXQwPWFzbVsiZ2V0VGVtcFJldDAiXTt2YXIgaTY0TWF0aD0oZnVuY3Rpb24oKXt2YXIgZ29vZz17bWF0aDp7fX07Z29vZy5tYXRoLkxvbmc9KGZ1bmN0aW9uKGxvdyxoaWdoKXt0aGlzLmxvd189bG93fDA7dGhpcy5oaWdoXz1oaWdofDB9KTtnb29nLm1hdGguTG9uZy5JbnRDYWNoZV89e307Z29vZy5tYXRoLkxvbmcuZnJvbUludD0oZnVuY3Rpb24odmFsdWUpe2lmKC0xMjg8PXZhbHVlJiZ2YWx1ZTwxMjgpe3ZhciBjYWNoZWRPYmo9Z29vZy5tYXRoLkxvbmcuSW50Q2FjaGVfW3ZhbHVlXTtpZihjYWNoZWRPYmope3JldHVybiBjYWNoZWRPYmp9fXZhciBvYmo9bmV3IGdvb2cubWF0aC5Mb25nKHZhbHVlfDAsdmFsdWU8MD8tMTowKTtpZigtMTI4PD12YWx1ZSYmdmFsdWU8MTI4KXtnb29nLm1hdGguTG9uZy5JbnRDYWNoZV9bdmFsdWVdPW9ian1yZXR1cm4gb2JqfSk7Z29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcj0oZnVuY3Rpb24odmFsdWUpe2lmKGlzTmFOKHZhbHVlKXx8IWlzRmluaXRlKHZhbHVlKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99ZWxzZSBpZih2YWx1ZTw9LWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjNfREJMXyl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRX1lbHNlIGlmKHZhbHVlKzE+PWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjNfREJMXyl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1BWF9WQUxVRX1lbHNlIGlmKHZhbHVlPDApe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKC12YWx1ZSkubmVnYXRlKCl9ZWxzZXtyZXR1cm4gbmV3IGdvb2cubWF0aC5Mb25nKHZhbHVlJWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMX3wwLHZhbHVlL2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMX3wwKX19KTtnb29nLm1hdGguTG9uZy5mcm9tQml0cz0oZnVuY3Rpb24obG93Qml0cyxoaWdoQml0cyl7cmV0dXJuIG5ldyBnb29nLm1hdGguTG9uZyhsb3dCaXRzLGhpZ2hCaXRzKX0pO2dvb2cubWF0aC5Mb25nLmZyb21TdHJpbmc9KGZ1bmN0aW9uKHN0cixvcHRfcmFkaXgpe2lmKHN0ci5sZW5ndGg9PTApe3Rocm93IEVycm9yKCJudW1iZXIgZm9ybWF0IGVycm9yOiBlbXB0eSBzdHJpbmciKX12YXIgcmFkaXg9b3B0X3JhZGl4fHwxMDtpZihyYWRpeDwyfHwzNjxyYWRpeCl7dGhyb3cgRXJyb3IoInJhZGl4IG91dCBvZiByYW5nZTogIityYWRpeCl9aWYoc3RyLmNoYXJBdCgwKT09Ii0iKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbVN0cmluZyhzdHIuc3Vic3RyaW5nKDEpLHJhZGl4KS5uZWdhdGUoKX1lbHNlIGlmKHN0ci5pbmRleE9mKCItIik+PTApe3Rocm93IEVycm9yKCdudW1iZXIgZm9ybWF0IGVycm9yOiBpbnRlcmlvciAiLSIgY2hhcmFjdGVyOiAnK3N0cil9dmFyIHJhZGl4VG9Qb3dlcj1nb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LDgpKTt2YXIgcmVzdWx0PWdvb2cubWF0aC5Mb25nLlpFUk87Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoO2krPTgpe3ZhciBzaXplPU1hdGgubWluKDgsc3RyLmxlbmd0aC1pKTt2YXIgdmFsdWU9cGFyc2VJbnQoc3RyLnN1YnN0cmluZyhpLGkrc2l6ZSkscmFkaXgpO2lmKHNpemU8OCl7dmFyIHBvd2VyPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsc2l6ZSkpO3Jlc3VsdD1yZXN1bHQubXVsdGlwbHkocG93ZXIpLmFkZChnb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKHZhbHVlKSl9ZWxzZXtyZXN1bHQ9cmVzdWx0Lm11bHRpcGx5KHJhZGl4VG9Qb3dlcik7cmVzdWx0PXJlc3VsdC5hZGQoZ29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcih2YWx1ZSkpfX1yZXR1cm4gcmVzdWx0fSk7Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8xNl9EQkxfPTE8PDE2O2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfREJMXz0xPDwyNDtnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF89Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8xNl9EQkxfKmdvb2cubWF0aC5Mb25nLlRXT19QV1JfMTZfREJMXztnb29nLm1hdGguTG9uZy5UV09fUFdSXzMxX0RCTF89Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8zMl9EQkxfLzI7Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl80OF9EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXypnb29nLm1hdGguTG9uZy5UV09fUFdSXzE2X0RCTF87Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl82NF9EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXypnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF87Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl82M19EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjRfREJMXy8yO2dvb2cubWF0aC5Mb25nLlpFUk89Z29vZy5tYXRoLkxvbmcuZnJvbUludCgwKTtnb29nLm1hdGguTG9uZy5PTkU9Z29vZy5tYXRoLkxvbmcuZnJvbUludCgxKTtnb29nLm1hdGguTG9uZy5ORUdfT05FPWdvb2cubWF0aC5Mb25nLmZyb21JbnQoLTEpO2dvb2cubWF0aC5Mb25nLk1BWF9WQUxVRT1nb29nLm1hdGguTG9uZy5mcm9tQml0cyg0Mjk0OTY3Mjk1fDAsMjE0NzQ4MzY0N3wwKTtnb29nLm1hdGguTG9uZy5NSU5fVkFMVUU9Z29vZy5tYXRoLkxvbmcuZnJvbUJpdHMoMCwyMTQ3NDgzNjQ4fDApO2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfPWdvb2cubWF0aC5Mb25nLmZyb21JbnQoMTw8MjQpO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS50b0ludD0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnRvTnVtYmVyPShmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZ2hfKmdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXyt0aGlzLmdldExvd0JpdHNVbnNpZ25lZCgpfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnRvU3RyaW5nPShmdW5jdGlvbihvcHRfcmFkaXgpe3ZhciByYWRpeD1vcHRfcmFkaXh8fDEwO2lmKHJhZGl4PDJ8fDM2PHJhZGl4KXt0aHJvdyBFcnJvcigicmFkaXggb3V0IG9mIHJhbmdlOiAiK3JhZGl4KX1pZih0aGlzLmlzWmVybygpKXtyZXR1cm4iMCJ9aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKHRoaXMuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRSkpe3ZhciByYWRpeExvbmc9Z29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcihyYWRpeCk7dmFyIGRpdj10aGlzLmRpdihyYWRpeExvbmcpO3ZhciByZW09ZGl2Lm11bHRpcGx5KHJhZGl4TG9uZykuc3VidHJhY3QodGhpcyk7cmV0dXJuIGRpdi50b1N0cmluZyhyYWRpeCkrcmVtLnRvSW50KCkudG9TdHJpbmcocmFkaXgpfWVsc2V7cmV0dXJuIi0iK3RoaXMubmVnYXRlKCkudG9TdHJpbmcocmFkaXgpfX12YXIgcmFkaXhUb1Bvd2VyPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsNikpO3ZhciByZW09dGhpczt2YXIgcmVzdWx0PSIiO3doaWxlKHRydWUpe3ZhciByZW1EaXY9cmVtLmRpdihyYWRpeFRvUG93ZXIpO3ZhciBpbnR2YWw9cmVtLnN1YnRyYWN0KHJlbURpdi5tdWx0aXBseShyYWRpeFRvUG93ZXIpKS50b0ludCgpO3ZhciBkaWdpdHM9aW50dmFsLnRvU3RyaW5nKHJhZGl4KTtyZW09cmVtRGl2O2lmKHJlbS5pc1plcm8oKSl7cmV0dXJuIGRpZ2l0cytyZXN1bHR9ZWxzZXt3aGlsZShkaWdpdHMubGVuZ3RoPDYpe2RpZ2l0cz0iMCIrZGlnaXRzfXJlc3VsdD0iIitkaWdpdHMrcmVzdWx0fX19KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZ2V0SGlnaEJpdHM9KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGlnaF99KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZ2V0TG93Qml0cz0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdldExvd0JpdHNVbnNpZ25lZD0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dfPj0wP3RoaXMubG93Xzpnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF8rdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdldE51bUJpdHNBYnM9KGZ1bmN0aW9uKCl7aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKHRoaXMuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRSkpe3JldHVybiA2NH1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLmdldE51bUJpdHNBYnMoKX19ZWxzZXt2YXIgdmFsPXRoaXMuaGlnaF8hPTA/dGhpcy5oaWdoXzp0aGlzLmxvd187Zm9yKHZhciBiaXQ9MzE7Yml0PjA7Yml0LS0pe2lmKCh2YWwmMTw8Yml0KSE9MCl7YnJlYWt9fXJldHVybiB0aGlzLmhpZ2hfIT0wP2JpdCszMzpiaXQrMX19KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuaXNaZXJvPShmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZ2hfPT0wJiZ0aGlzLmxvd189PTB9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuaXNOZWdhdGl2ZT0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWdoXzwwfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmlzT2RkPShmdW5jdGlvbigpe3JldHVybih0aGlzLmxvd18mMSk9PTF9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZXF1YWxzPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuaGlnaF89PW90aGVyLmhpZ2hfJiZ0aGlzLmxvd189PW90aGVyLmxvd199KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubm90RXF1YWxzPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuaGlnaF8hPW90aGVyLmhpZ2hffHx0aGlzLmxvd18hPW90aGVyLmxvd199KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubGVzc1RoYW49KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5jb21wYXJlKG90aGVyKTwwfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmxlc3NUaGFuT3JFcXVhbD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0aGlzLmNvbXBhcmUob3RoZXIpPD0wfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdyZWF0ZXJUaGFuPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuY29tcGFyZShvdGhlcik+MH0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5ncmVhdGVyVGhhbk9yRXF1YWw9KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5jb21wYXJlKG90aGVyKT49MH0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5jb21wYXJlPShmdW5jdGlvbihvdGhlcil7aWYodGhpcy5lcXVhbHMob3RoZXIpKXtyZXR1cm4gMH12YXIgdGhpc05lZz10aGlzLmlzTmVnYXRpdmUoKTt2YXIgb3RoZXJOZWc9b3RoZXIuaXNOZWdhdGl2ZSgpO2lmKHRoaXNOZWcmJiFvdGhlck5lZyl7cmV0dXJuLTF9aWYoIXRoaXNOZWcmJm90aGVyTmVnKXtyZXR1cm4gMX1pZih0aGlzLnN1YnRyYWN0KG90aGVyKS5pc05lZ2F0aXZlKCkpe3JldHVybi0xfWVsc2V7cmV0dXJuIDF9fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLm5lZ2F0ZT0oZnVuY3Rpb24oKXtpZih0aGlzLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFfWVsc2V7cmV0dXJuIHRoaXMubm90KCkuYWRkKGdvb2cubWF0aC5Mb25nLk9ORSl9fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmFkZD0oZnVuY3Rpb24ob3RoZXIpe3ZhciBhNDg9dGhpcy5oaWdoXz4+PjE2O3ZhciBhMzI9dGhpcy5oaWdoXyY2NTUzNTt2YXIgYTE2PXRoaXMubG93Xz4+PjE2O3ZhciBhMDA9dGhpcy5sb3dfJjY1NTM1O3ZhciBiNDg9b3RoZXIuaGlnaF8+Pj4xNjt2YXIgYjMyPW90aGVyLmhpZ2hfJjY1NTM1O3ZhciBiMTY9b3RoZXIubG93Xz4+PjE2O3ZhciBiMDA9b3RoZXIubG93XyY2NTUzNTt2YXIgYzQ4PTAsYzMyPTAsYzE2PTAsYzAwPTA7YzAwKz1hMDArYjAwO2MxNis9YzAwPj4+MTY7YzAwJj02NTUzNTtjMTYrPWExNitiMTY7YzMyKz1jMTY+Pj4xNjtjMTYmPTY1NTM1O2MzMis9YTMyK2IzMjtjNDgrPWMzMj4+PjE2O2MzMiY9NjU1MzU7YzQ4Kz1hNDgrYjQ4O2M0OCY9NjU1MzU7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGMxNjw8MTZ8YzAwLGM0ODw8MTZ8YzMyKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5zdWJ0cmFjdD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0aGlzLmFkZChvdGhlci5uZWdhdGUoKSl9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubXVsdGlwbHk9KGZ1bmN0aW9uKG90aGVyKXtpZih0aGlzLmlzWmVybygpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuWkVST31lbHNlIGlmKG90aGVyLmlzWmVybygpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuWkVST31pZih0aGlzLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gb3RoZXIuaXNPZGQoKT9nb29nLm1hdGguTG9uZy5NSU5fVkFMVUU6Z29vZy5tYXRoLkxvbmcuWkVST31lbHNlIGlmKG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gdGhpcy5pc09kZCgpP2dvb2cubWF0aC5Mb25nLk1JTl9WQUxVRTpnb29nLm1hdGguTG9uZy5aRVJPfWlmKHRoaXMuaXNOZWdhdGl2ZSgpKXtpZihvdGhlci5pc05lZ2F0aXZlKCkpe3JldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG90aGVyLm5lZ2F0ZSgpKX1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG90aGVyKS5uZWdhdGUoKX19ZWxzZSBpZihvdGhlci5pc05lZ2F0aXZlKCkpe3JldHVybiB0aGlzLm11bHRpcGx5KG90aGVyLm5lZ2F0ZSgpKS5uZWdhdGUoKX1pZih0aGlzLmxlc3NUaGFuKGdvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfKSYmb3RoZXIubGVzc1RoYW4oZ29vZy5tYXRoLkxvbmcuVFdPX1BXUl8yNF8pKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcih0aGlzLnRvTnVtYmVyKCkqb3RoZXIudG9OdW1iZXIoKSl9dmFyIGE0OD10aGlzLmhpZ2hfPj4+MTY7dmFyIGEzMj10aGlzLmhpZ2hfJjY1NTM1O3ZhciBhMTY9dGhpcy5sb3dfPj4+MTY7dmFyIGEwMD10aGlzLmxvd18mNjU1MzU7dmFyIGI0OD1vdGhlci5oaWdoXz4+PjE2O3ZhciBiMzI9b3RoZXIuaGlnaF8mNjU1MzU7dmFyIGIxNj1vdGhlci5sb3dfPj4+MTY7dmFyIGIwMD1vdGhlci5sb3dfJjY1NTM1O3ZhciBjNDg9MCxjMzI9MCxjMTY9MCxjMDA9MDtjMDArPWEwMCpiMDA7YzE2Kz1jMDA+Pj4xNjtjMDAmPTY1NTM1O2MxNis9YTE2KmIwMDtjMzIrPWMxNj4+PjE2O2MxNiY9NjU1MzU7YzE2Kz1hMDAqYjE2O2MzMis9YzE2Pj4+MTY7YzE2Jj02NTUzNTtjMzIrPWEzMipiMDA7YzQ4Kz1jMzI+Pj4xNjtjMzImPTY1NTM1O2MzMis9YTE2KmIxNjtjNDgrPWMzMj4+PjE2O2MzMiY9NjU1MzU7YzMyKz1hMDAqYjMyO2M0OCs9YzMyPj4+MTY7YzMyJj02NTUzNTtjNDgrPWE0OCpiMDArYTMyKmIxNithMTYqYjMyK2EwMCpiNDg7YzQ4Jj02NTUzNTtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHMoYzE2PDwxNnxjMDAsYzQ4PDwxNnxjMzIpfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmRpdj0oZnVuY3Rpb24ob3RoZXIpe2lmKG90aGVyLmlzWmVybygpKXt0aHJvdyBFcnJvcigiZGl2aXNpb24gYnkgemVybyIpfWVsc2UgaWYodGhpcy5pc1plcm8oKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99aWYodGhpcy5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFKSl7aWYob3RoZXIuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk9ORSl8fG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5ORUdfT05FKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRX1lbHNlIGlmKG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuT05FfWVsc2V7dmFyIGhhbGZUaGlzPXRoaXMuc2hpZnRSaWdodCgxKTt2YXIgYXBwcm94PWhhbGZUaGlzLmRpdihvdGhlcikuc2hpZnRMZWZ0KDEpO2lmKGFwcHJveC5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuWkVSTykpe3JldHVybiBvdGhlci5pc05lZ2F0aXZlKCk/Z29vZy5tYXRoLkxvbmcuT05FOmdvb2cubWF0aC5Mb25nLk5FR19PTkV9ZWxzZXt2YXIgcmVtPXRoaXMuc3VidHJhY3Qob3RoZXIubXVsdGlwbHkoYXBwcm94KSk7dmFyIHJlc3VsdD1hcHByb3guYWRkKHJlbS5kaXYob3RoZXIpKTtyZXR1cm4gcmVzdWx0fX19ZWxzZSBpZihvdGhlci5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKG90aGVyLmlzTmVnYXRpdmUoKSl7cmV0dXJuIHRoaXMubmVnYXRlKCkuZGl2KG90aGVyLm5lZ2F0ZSgpKX1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLmRpdihvdGhlcikubmVnYXRlKCl9fWVsc2UgaWYob3RoZXIuaXNOZWdhdGl2ZSgpKXtyZXR1cm4gdGhpcy5kaXYob3RoZXIubmVnYXRlKCkpLm5lZ2F0ZSgpfXZhciByZXM9Z29vZy5tYXRoLkxvbmcuWkVSTzt2YXIgcmVtPXRoaXM7d2hpbGUocmVtLmdyZWF0ZXJUaGFuT3JFcXVhbChvdGhlcikpe3ZhciBhcHByb3g9TWF0aC5tYXgoMSxNYXRoLmZsb29yKHJlbS50b051bWJlcigpL290aGVyLnRvTnVtYmVyKCkpKTt2YXIgbG9nMj1NYXRoLmNlaWwoTWF0aC5sb2coYXBwcm94KS9NYXRoLkxOMik7dmFyIGRlbHRhPWxvZzI8PTQ4PzE6TWF0aC5wb3coMixsb2cyLTQ4KTt2YXIgYXBwcm94UmVzPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoYXBwcm94KTt2YXIgYXBwcm94UmVtPWFwcHJveFJlcy5tdWx0aXBseShvdGhlcik7d2hpbGUoYXBwcm94UmVtLmlzTmVnYXRpdmUoKXx8YXBwcm94UmVtLmdyZWF0ZXJUaGFuKHJlbSkpe2FwcHJveC09ZGVsdGE7YXBwcm94UmVzPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoYXBwcm94KTthcHByb3hSZW09YXBwcm94UmVzLm11bHRpcGx5KG90aGVyKX1pZihhcHByb3hSZXMuaXNaZXJvKCkpe2FwcHJveFJlcz1nb29nLm1hdGguTG9uZy5PTkV9cmVzPXJlcy5hZGQoYXBwcm94UmVzKTtyZW09cmVtLnN1YnRyYWN0KGFwcHJveFJlbSl9cmV0dXJuIHJlc30pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5tb2R1bG89KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5zdWJ0cmFjdCh0aGlzLmRpdihvdGhlcikubXVsdGlwbHkob3RoZXIpKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5ub3Q9KGZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKH50aGlzLmxvd18sfnRoaXMuaGlnaF8pfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmFuZD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyh0aGlzLmxvd18mb3RoZXIubG93Xyx0aGlzLmhpZ2hfJm90aGVyLmhpZ2hfKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5vcj0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyh0aGlzLmxvd198b3RoZXIubG93Xyx0aGlzLmhpZ2hffG90aGVyLmhpZ2hfKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS54b3I9KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHModGhpcy5sb3dfXm90aGVyLmxvd18sdGhpcy5oaWdoX15vdGhlci5oaWdoXyl9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuc2hpZnRMZWZ0PShmdW5jdGlvbihudW1CaXRzKXtudW1CaXRzJj02MztpZihudW1CaXRzPT0wKXtyZXR1cm4gdGhpc31lbHNle3ZhciBsb3c9dGhpcy5sb3dfO2lmKG51bUJpdHM8MzIpe3ZhciBoaWdoPXRoaXMuaGlnaF87cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGxvdzw8bnVtQml0cyxoaWdoPDxudW1CaXRzfGxvdz4+PjMyLW51bUJpdHMpfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKDAsbG93PDxudW1CaXRzLTMyKX19fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnNoaWZ0UmlnaHQ9KGZ1bmN0aW9uKG51bUJpdHMpe251bUJpdHMmPTYzO2lmKG51bUJpdHM9PTApe3JldHVybiB0aGlzfWVsc2V7dmFyIGhpZ2g9dGhpcy5oaWdoXztpZihudW1CaXRzPDMyKXt2YXIgbG93PXRoaXMubG93XztyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHMobG93Pj4+bnVtQml0c3xoaWdoPDwzMi1udW1CaXRzLGhpZ2g+Pm51bUJpdHMpfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGhpZ2g+Pm51bUJpdHMtMzIsaGlnaD49MD8wOi0xKX19fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnNoaWZ0UmlnaHRVbnNpZ25lZD0oZnVuY3Rpb24obnVtQml0cyl7bnVtQml0cyY9NjM7aWYobnVtQml0cz09MCl7cmV0dXJuIHRoaXN9ZWxzZXt2YXIgaGlnaD10aGlzLmhpZ2hfO2lmKG51bUJpdHM8MzIpe3ZhciBsb3c9dGhpcy5sb3dfO3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyhsb3c+Pj5udW1CaXRzfGhpZ2g8PDMyLW51bUJpdHMsaGlnaD4+Pm51bUJpdHMpfWVsc2UgaWYobnVtQml0cz09MzIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyhoaWdoLDApfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGhpZ2g+Pj5udW1CaXRzLTMyLDApfX19KTt2YXIgbmF2aWdhdG9yPXthcHBOYW1lOiJNb2Rlcm4gQnJvd3NlciJ9O3ZhciBkYml0czt2YXIgY2FuYXJ5PTB4ZGVhZGJlZWZjYWZlO3ZhciBqX2xtPShjYW5hcnkmMTY3NzcyMTUpPT0xNTcxNTA3MDtmdW5jdGlvbiBCaWdJbnRlZ2VyKGEsYixjKXtpZihhIT1udWxsKWlmKCJudW1iZXIiPT10eXBlb2YgYSl0aGlzLmZyb21OdW1iZXIoYSxiLGMpO2Vsc2UgaWYoYj09bnVsbCYmInN0cmluZyIhPXR5cGVvZiBhKXRoaXMuZnJvbVN0cmluZyhhLDI1Nik7ZWxzZSB0aGlzLmZyb21TdHJpbmcoYSxiKX1mdW5jdGlvbiBuYmkoKXtyZXR1cm4gbmV3IEJpZ0ludGVnZXIobnVsbCl9ZnVuY3Rpb24gYW0xKGkseCx3LGosYyxuKXt3aGlsZSgtLW4+PTApe3ZhciB2PXgqdGhpc1tpKytdK3dbal0rYztjPU1hdGguZmxvb3Iodi82NzEwODg2NCk7d1tqKytdPXYmNjcxMDg4NjN9cmV0dXJuIGN9ZnVuY3Rpb24gYW0yKGkseCx3LGosYyxuKXt2YXIgeGw9eCYzMjc2Nyx4aD14Pj4xNTt3aGlsZSgtLW4+PTApe3ZhciBsPXRoaXNbaV0mMzI3Njc7dmFyIGg9dGhpc1tpKytdPj4xNTt2YXIgbT14aCpsK2gqeGw7bD14bCpsKygobSYzMjc2Nyk8PDE1KSt3W2pdKyhjJjEwNzM3NDE4MjMpO2M9KGw+Pj4zMCkrKG0+Pj4xNSkreGgqaCsoYz4+PjMwKTt3W2orK109bCYxMDczNzQxODIzfXJldHVybiBjfWZ1bmN0aW9uIGFtMyhpLHgsdyxqLGMsbil7dmFyIHhsPXgmMTYzODMseGg9eD4+MTQ7d2hpbGUoLS1uPj0wKXt2YXIgbD10aGlzW2ldJjE2MzgzO3ZhciBoPXRoaXNbaSsrXT4+MTQ7dmFyIG09eGgqbCtoKnhsO2w9eGwqbCsoKG0mMTYzODMpPDwxNCkrd1tqXStjO2M9KGw+PjI4KSsobT4+MTQpK3hoKmg7d1tqKytdPWwmMjY4NDM1NDU1fXJldHVybiBjfWlmKGpfbG0mJm5hdmlnYXRvci5hcHBOYW1lPT0iTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIil7QmlnSW50ZWdlci5wcm90b3R5cGUuYW09YW0yO2RiaXRzPTMwfWVsc2UgaWYoal9sbSYmbmF2aWdhdG9yLmFwcE5hbWUhPSJOZXRzY2FwZSIpe0JpZ0ludGVnZXIucHJvdG90eXBlLmFtPWFtMTtkYml0cz0yNn1lbHNle0JpZ0ludGVnZXIucHJvdG90eXBlLmFtPWFtMztkYml0cz0yOH1CaWdJbnRlZ2VyLnByb3RvdHlwZS5EQj1kYml0cztCaWdJbnRlZ2VyLnByb3RvdHlwZS5ETT0oMTw8ZGJpdHMpLTE7QmlnSW50ZWdlci5wcm90b3R5cGUuRFY9MTw8ZGJpdHM7dmFyIEJJX0ZQPTUyO0JpZ0ludGVnZXIucHJvdG90eXBlLkZWPU1hdGgucG93KDIsQklfRlApO0JpZ0ludGVnZXIucHJvdG90eXBlLkYxPUJJX0ZQLWRiaXRzO0JpZ0ludGVnZXIucHJvdG90eXBlLkYyPTIqZGJpdHMtQklfRlA7dmFyIEJJX1JNPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO3ZhciBCSV9SQz1uZXcgQXJyYXk7dmFyIHJyLHZ2O3JyPSIwIi5jaGFyQ29kZUF0KDApO2Zvcih2dj0wO3Z2PD05OysrdnYpQklfUkNbcnIrK109dnY7cnI9ImEiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpQklfUkNbcnIrK109dnY7cnI9IkEiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpQklfUkNbcnIrK109dnY7ZnVuY3Rpb24gaW50MmNoYXIobil7cmV0dXJuIEJJX1JNLmNoYXJBdChuKX1mdW5jdGlvbiBpbnRBdChzLGkpe3ZhciBjPUJJX1JDW3MuY2hhckNvZGVBdChpKV07cmV0dXJuIGM9PW51bGw/LTE6Y31mdW5jdGlvbiBibnBDb3B5VG8ocil7Zm9yKHZhciBpPXRoaXMudC0xO2k+PTA7LS1pKXJbaV09dGhpc1tpXTtyLnQ9dGhpcy50O3Iucz10aGlzLnN9ZnVuY3Rpb24gYm5wRnJvbUludCh4KXt0aGlzLnQ9MTt0aGlzLnM9eDwwPy0xOjA7aWYoeD4wKXRoaXNbMF09eDtlbHNlIGlmKHg8LTEpdGhpc1swXT14K0RWO2Vsc2UgdGhpcy50PTB9ZnVuY3Rpb24gbmJ2KGkpe3ZhciByPW5iaSgpO3IuZnJvbUludChpKTtyZXR1cm4gcn1mdW5jdGlvbiBibnBGcm9tU3RyaW5nKHMsYil7dmFyIGs7aWYoYj09MTYpaz00O2Vsc2UgaWYoYj09OClrPTM7ZWxzZSBpZihiPT0yNTYpaz04O2Vsc2UgaWYoYj09MilrPTE7ZWxzZSBpZihiPT0zMilrPTU7ZWxzZSBpZihiPT00KWs9MjtlbHNle3RoaXMuZnJvbVJhZGl4KHMsYik7cmV0dXJufXRoaXMudD0wO3RoaXMucz0wO3ZhciBpPXMubGVuZ3RoLG1pPWZhbHNlLHNoPTA7d2hpbGUoLS1pPj0wKXt2YXIgeD1rPT04P3NbaV0mMjU1OmludEF0KHMsaSk7aWYoeDwwKXtpZihzLmNoYXJBdChpKT09Ii0iKW1pPXRydWU7Y29udGludWV9bWk9ZmFsc2U7aWYoc2g9PTApdGhpc1t0aGlzLnQrK109eDtlbHNlIGlmKHNoK2s+dGhpcy5EQil7dGhpc1t0aGlzLnQtMV18PSh4JigxPDx0aGlzLkRCLXNoKS0xKTw8c2g7dGhpc1t0aGlzLnQrK109eD4+dGhpcy5EQi1zaH1lbHNlIHRoaXNbdGhpcy50LTFdfD14PDxzaDtzaCs9aztpZihzaD49dGhpcy5EQilzaC09dGhpcy5EQn1pZihrPT04JiYoc1swXSYxMjgpIT0wKXt0aGlzLnM9LTE7aWYoc2g+MCl0aGlzW3RoaXMudC0xXXw9KDE8PHRoaXMuREItc2gpLTE8PHNofXRoaXMuY2xhbXAoKTtpZihtaSlCaWdJbnRlZ2VyLlpFUk8uc3ViVG8odGhpcyx0aGlzKX1mdW5jdGlvbiBibnBDbGFtcCgpe3ZhciBjPXRoaXMucyZ0aGlzLkRNO3doaWxlKHRoaXMudD4wJiZ0aGlzW3RoaXMudC0xXT09YyktLXRoaXMudH1mdW5jdGlvbiBiblRvU3RyaW5nKGIpe2lmKHRoaXMuczwwKXJldHVybiItIit0aGlzLm5lZ2F0ZSgpLnRvU3RyaW5nKGIpO3ZhciBrO2lmKGI9PTE2KWs9NDtlbHNlIGlmKGI9PTgpaz0zO2Vsc2UgaWYoYj09MilrPTE7ZWxzZSBpZihiPT0zMilrPTU7ZWxzZSBpZihiPT00KWs9MjtlbHNlIHJldHVybiB0aGlzLnRvUmFkaXgoYik7dmFyIGttPSgxPDxrKS0xLGQsbT1mYWxzZSxyPSIiLGk9dGhpcy50O3ZhciBwPXRoaXMuREItaSp0aGlzLkRCJWs7aWYoaS0tPjApe2lmKHA8dGhpcy5EQiYmKGQ9dGhpc1tpXT4+cCk+MCl7bT10cnVlO3I9aW50MmNoYXIoZCl9d2hpbGUoaT49MCl7aWYocDxrKXtkPSh0aGlzW2ldJigxPDxwKS0xKTw8ay1wO2R8PXRoaXNbLS1pXT4+KHArPXRoaXMuREItayl9ZWxzZXtkPXRoaXNbaV0+PihwLT1rKSZrbTtpZihwPD0wKXtwKz10aGlzLkRCOy0taX19aWYoZD4wKW09dHJ1ZTtpZihtKXIrPWludDJjaGFyKGQpfX1yZXR1cm4gbT9yOiIwIn1mdW5jdGlvbiBibk5lZ2F0ZSgpe3ZhciByPW5iaSgpO0JpZ0ludGVnZXIuWkVSTy5zdWJUbyh0aGlzLHIpO3JldHVybiByfWZ1bmN0aW9uIGJuQWJzKCl7cmV0dXJuIHRoaXMuczwwP3RoaXMubmVnYXRlKCk6dGhpc31mdW5jdGlvbiBibkNvbXBhcmVUbyhhKXt2YXIgcj10aGlzLnMtYS5zO2lmKHIhPTApcmV0dXJuIHI7dmFyIGk9dGhpcy50O3I9aS1hLnQ7aWYociE9MClyZXR1cm4gdGhpcy5zPDA/LXI6cjt3aGlsZSgtLWk+PTApaWYoKHI9dGhpc1tpXS1hW2ldKSE9MClyZXR1cm4gcjtyZXR1cm4gMH1mdW5jdGlvbiBuYml0cyh4KXt2YXIgcj0xLHQ7aWYoKHQ9eD4+PjE2KSE9MCl7eD10O3IrPTE2fWlmKCh0PXg+PjgpIT0wKXt4PXQ7cis9OH1pZigodD14Pj40KSE9MCl7eD10O3IrPTR9aWYoKHQ9eD4+MikhPTApe3g9dDtyKz0yfWlmKCh0PXg+PjEpIT0wKXt4PXQ7cis9MX1yZXR1cm4gcn1mdW5jdGlvbiBibkJpdExlbmd0aCgpe2lmKHRoaXMudDw9MClyZXR1cm4gMDtyZXR1cm4gdGhpcy5EQioodGhpcy50LTEpK25iaXRzKHRoaXNbdGhpcy50LTFdXnRoaXMucyZ0aGlzLkRNKX1mdW5jdGlvbiBibnBETFNoaWZ0VG8obixyKXt2YXIgaTtmb3IoaT10aGlzLnQtMTtpPj0wOy0taSlyW2krbl09dGhpc1tpXTtmb3IoaT1uLTE7aT49MDstLWkpcltpXT0wO3IudD10aGlzLnQrbjtyLnM9dGhpcy5zfWZ1bmN0aW9uIGJucERSU2hpZnRUbyhuLHIpe2Zvcih2YXIgaT1uO2k8dGhpcy50OysraSlyW2ktbl09dGhpc1tpXTtyLnQ9TWF0aC5tYXgodGhpcy50LW4sMCk7ci5zPXRoaXMuc31mdW5jdGlvbiBibnBMU2hpZnRUbyhuLHIpe3ZhciBicz1uJXRoaXMuREI7dmFyIGNicz10aGlzLkRCLWJzO3ZhciBibT0oMTw8Y2JzKS0xO3ZhciBkcz1NYXRoLmZsb29yKG4vdGhpcy5EQiksYz10aGlzLnM8PGJzJnRoaXMuRE0saTtmb3IoaT10aGlzLnQtMTtpPj0wOy0taSl7cltpK2RzKzFdPXRoaXNbaV0+PmNic3xjO2M9KHRoaXNbaV0mYm0pPDxic31mb3IoaT1kcy0xO2k+PTA7LS1pKXJbaV09MDtyW2RzXT1jO3IudD10aGlzLnQrZHMrMTtyLnM9dGhpcy5zO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBSU2hpZnRUbyhuLHIpe3Iucz10aGlzLnM7dmFyIGRzPU1hdGguZmxvb3Iobi90aGlzLkRCKTtpZihkcz49dGhpcy50KXtyLnQ9MDtyZXR1cm59dmFyIGJzPW4ldGhpcy5EQjt2YXIgY2JzPXRoaXMuREItYnM7dmFyIGJtPSgxPDxicyktMTtyWzBdPXRoaXNbZHNdPj5icztmb3IodmFyIGk9ZHMrMTtpPHRoaXMudDsrK2kpe3JbaS1kcy0xXXw9KHRoaXNbaV0mYm0pPDxjYnM7cltpLWRzXT10aGlzW2ldPj5ic31pZihicz4wKXJbdGhpcy50LWRzLTFdfD0odGhpcy5zJmJtKTw8Y2JzO3IudD10aGlzLnQtZHM7ci5jbGFtcCgpfWZ1bmN0aW9uIGJucFN1YlRvKGEscil7dmFyIGk9MCxjPTAsbT1NYXRoLm1pbihhLnQsdGhpcy50KTt3aGlsZShpPG0pe2MrPXRoaXNbaV0tYVtpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWlmKGEudDx0aGlzLnQpe2MtPWEuczt3aGlsZShpPHRoaXMudCl7Yys9dGhpc1tpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWMrPXRoaXMuc31lbHNle2MrPXRoaXMuczt3aGlsZShpPGEudCl7Yy09YVtpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWMtPWEuc31yLnM9YzwwPy0xOjA7aWYoYzwtMSlyW2krK109dGhpcy5EVitjO2Vsc2UgaWYoYz4wKXJbaSsrXT1jO3IudD1pO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBNdWx0aXBseVRvKGEscil7dmFyIHg9dGhpcy5hYnMoKSx5PWEuYWJzKCk7dmFyIGk9eC50O3IudD1pK3kudDt3aGlsZSgtLWk+PTApcltpXT0wO2ZvcihpPTA7aTx5LnQ7KytpKXJbaSt4LnRdPXguYW0oMCx5W2ldLHIsaSwwLHgudCk7ci5zPTA7ci5jbGFtcCgpO2lmKHRoaXMucyE9YS5zKUJpZ0ludGVnZXIuWkVSTy5zdWJUbyhyLHIpfWZ1bmN0aW9uIGJucFNxdWFyZVRvKHIpe3ZhciB4PXRoaXMuYWJzKCk7dmFyIGk9ci50PTIqeC50O3doaWxlKC0taT49MClyW2ldPTA7Zm9yKGk9MDtpPHgudC0xOysraSl7dmFyIGM9eC5hbShpLHhbaV0sciwyKmksMCwxKTtpZigocltpK3gudF0rPXguYW0oaSsxLDIqeFtpXSxyLDIqaSsxLGMseC50LWktMSkpPj14LkRWKXtyW2kreC50XS09eC5EVjtyW2kreC50KzFdPTF9fWlmKHIudD4wKXJbci50LTFdKz14LmFtKGkseFtpXSxyLDIqaSwwLDEpO3Iucz0wO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBEaXZSZW1UbyhtLHEscil7dmFyIHBtPW0uYWJzKCk7aWYocG0udDw9MClyZXR1cm47dmFyIHB0PXRoaXMuYWJzKCk7aWYocHQudDxwbS50KXtpZihxIT1udWxsKXEuZnJvbUludCgwKTtpZihyIT1udWxsKXRoaXMuY29weVRvKHIpO3JldHVybn1pZihyPT1udWxsKXI9bmJpKCk7dmFyIHk9bmJpKCksdHM9dGhpcy5zLG1zPW0uczt2YXIgbnNoPXRoaXMuREItbmJpdHMocG1bcG0udC0xXSk7aWYobnNoPjApe3BtLmxTaGlmdFRvKG5zaCx5KTtwdC5sU2hpZnRUbyhuc2gscil9ZWxzZXtwbS5jb3B5VG8oeSk7cHQuY29weVRvKHIpfXZhciB5cz15LnQ7dmFyIHkwPXlbeXMtMV07aWYoeTA9PTApcmV0dXJuO3ZhciB5dD15MCooMTw8dGhpcy5GMSkrKHlzPjE/eVt5cy0yXT4+dGhpcy5GMjowKTt2YXIgZDE9dGhpcy5GVi95dCxkMj0oMTw8dGhpcy5GMSkveXQsZT0xPDx0aGlzLkYyO3ZhciBpPXIudCxqPWkteXMsdD1xPT1udWxsP25iaSgpOnE7eS5kbFNoaWZ0VG8oaix0KTtpZihyLmNvbXBhcmVUbyh0KT49MCl7cltyLnQrK109MTtyLnN1YlRvKHQscil9QmlnSW50ZWdlci5PTkUuZGxTaGlmdFRvKHlzLHQpO3Quc3ViVG8oeSx5KTt3aGlsZSh5LnQ8eXMpeVt5LnQrK109MDt3aGlsZSgtLWo+PTApe3ZhciBxZD1yWy0taV09PXkwP3RoaXMuRE06TWF0aC5mbG9vcihyW2ldKmQxKyhyW2ktMV0rZSkqZDIpO2lmKChyW2ldKz15LmFtKDAscWQscixqLDAseXMpKTxxZCl7eS5kbFNoaWZ0VG8oaix0KTtyLnN1YlRvKHQscik7d2hpbGUocltpXTwtLXFkKXIuc3ViVG8odCxyKX19aWYocSE9bnVsbCl7ci5kclNoaWZ0VG8oeXMscSk7aWYodHMhPW1zKUJpZ0ludGVnZXIuWkVSTy5zdWJUbyhxLHEpfXIudD15cztyLmNsYW1wKCk7aWYobnNoPjApci5yU2hpZnRUbyhuc2gscik7aWYodHM8MClCaWdJbnRlZ2VyLlpFUk8uc3ViVG8ocixyKX1mdW5jdGlvbiBibk1vZChhKXt2YXIgcj1uYmkoKTt0aGlzLmFicygpLmRpdlJlbVRvKGEsbnVsbCxyKTtpZih0aGlzLnM8MCYmci5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKT4wKWEuc3ViVG8ocixyKTtyZXR1cm4gcn1mdW5jdGlvbiBDbGFzc2ljKG0pe3RoaXMubT1tfWZ1bmN0aW9uIGNDb252ZXJ0KHgpe2lmKHguczwwfHx4LmNvbXBhcmVUbyh0aGlzLm0pPj0wKXJldHVybiB4Lm1vZCh0aGlzLm0pO2Vsc2UgcmV0dXJuIHh9ZnVuY3Rpb24gY1JldmVydCh4KXtyZXR1cm4geH1mdW5jdGlvbiBjUmVkdWNlKHgpe3guZGl2UmVtVG8odGhpcy5tLG51bGwseCl9ZnVuY3Rpb24gY011bFRvKHgseSxyKXt4Lm11bHRpcGx5VG8oeSxyKTt0aGlzLnJlZHVjZShyKX1mdW5jdGlvbiBjU3FyVG8oeCxyKXt4LnNxdWFyZVRvKHIpO3RoaXMucmVkdWNlKHIpfUNsYXNzaWMucHJvdG90eXBlLmNvbnZlcnQ9Y0NvbnZlcnQ7Q2xhc3NpYy5wcm90b3R5cGUucmV2ZXJ0PWNSZXZlcnQ7Q2xhc3NpYy5wcm90b3R5cGUucmVkdWNlPWNSZWR1Y2U7Q2xhc3NpYy5wcm90b3R5cGUubXVsVG89Y011bFRvO0NsYXNzaWMucHJvdG90eXBlLnNxclRvPWNTcXJUbztmdW5jdGlvbiBibnBJbnZEaWdpdCgpe2lmKHRoaXMudDwxKXJldHVybiAwO3ZhciB4PXRoaXNbMF07aWYoKHgmMSk9PTApcmV0dXJuIDA7dmFyIHk9eCYzO3k9eSooMi0oeCYxNSkqeSkmMTU7eT15KigyLSh4JjI1NSkqeSkmMjU1O3k9eSooMi0oKHgmNjU1MzUpKnkmNjU1MzUpKSY2NTUzNTt5PXkqKDIteCp5JXRoaXMuRFYpJXRoaXMuRFY7cmV0dXJuIHk+MD90aGlzLkRWLXk6LXl9ZnVuY3Rpb24gTW9udGdvbWVyeShtKXt0aGlzLm09bTt0aGlzLm1wPW0uaW52RGlnaXQoKTt0aGlzLm1wbD10aGlzLm1wJjMyNzY3O3RoaXMubXBoPXRoaXMubXA+PjE1O3RoaXMudW09KDE8PG0uREItMTUpLTE7dGhpcy5tdDI9MiptLnR9ZnVuY3Rpb24gbW9udENvbnZlcnQoeCl7dmFyIHI9bmJpKCk7eC5hYnMoKS5kbFNoaWZ0VG8odGhpcy5tLnQscik7ci5kaXZSZW1Ubyh0aGlzLm0sbnVsbCxyKTtpZih4LnM8MCYmci5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKT4wKXRoaXMubS5zdWJUbyhyLHIpO3JldHVybiByfWZ1bmN0aW9uIG1vbnRSZXZlcnQoeCl7dmFyIHI9bmJpKCk7eC5jb3B5VG8ocik7dGhpcy5yZWR1Y2Uocik7cmV0dXJuIHJ9ZnVuY3Rpb24gbW9udFJlZHVjZSh4KXt3aGlsZSh4LnQ8PXRoaXMubXQyKXhbeC50KytdPTA7Zm9yKHZhciBpPTA7aTx0aGlzLm0udDsrK2kpe3ZhciBqPXhbaV0mMzI3Njc7dmFyIHUwPWoqdGhpcy5tcGwrKChqKnRoaXMubXBoKyh4W2ldPj4xNSkqdGhpcy5tcGwmdGhpcy51bSk8PDE1KSZ4LkRNO2o9aSt0aGlzLm0udDt4W2pdKz10aGlzLm0uYW0oMCx1MCx4LGksMCx0aGlzLm0udCk7d2hpbGUoeFtqXT49eC5EVil7eFtqXS09eC5EVjt4Wysral0rK319eC5jbGFtcCgpO3guZHJTaGlmdFRvKHRoaXMubS50LHgpO2lmKHguY29tcGFyZVRvKHRoaXMubSk+PTApeC5zdWJUbyh0aGlzLm0seCl9ZnVuY3Rpb24gbW9udFNxclRvKHgscil7eC5zcXVhcmVUbyhyKTt0aGlzLnJlZHVjZShyKX1mdW5jdGlvbiBtb250TXVsVG8oeCx5LHIpe3gubXVsdGlwbHlUbyh5LHIpO3RoaXMucmVkdWNlKHIpfU1vbnRnb21lcnkucHJvdG90eXBlLmNvbnZlcnQ9bW9udENvbnZlcnQ7TW9udGdvbWVyeS5wcm90b3R5cGUucmV2ZXJ0PW1vbnRSZXZlcnQ7TW9udGdvbWVyeS5wcm90b3R5cGUucmVkdWNlPW1vbnRSZWR1Y2U7TW9udGdvbWVyeS5wcm90b3R5cGUubXVsVG89bW9udE11bFRvO01vbnRnb21lcnkucHJvdG90eXBlLnNxclRvPW1vbnRTcXJUbztmdW5jdGlvbiBibnBJc0V2ZW4oKXtyZXR1cm4odGhpcy50PjA/dGhpc1swXSYxOnRoaXMucyk9PTB9ZnVuY3Rpb24gYm5wRXhwKGUseil7aWYoZT40Mjk0OTY3Mjk1fHxlPDEpcmV0dXJuIEJpZ0ludGVnZXIuT05FO3ZhciByPW5iaSgpLHIyPW5iaSgpLGc9ei5jb252ZXJ0KHRoaXMpLGk9bmJpdHMoZSktMTtnLmNvcHlUbyhyKTt3aGlsZSgtLWk+PTApe3ouc3FyVG8ocixyMik7aWYoKGUmMTw8aSk+MCl6Lm11bFRvKHIyLGcscik7ZWxzZXt2YXIgdD1yO3I9cjI7cjI9dH19cmV0dXJuIHoucmV2ZXJ0KHIpfWZ1bmN0aW9uIGJuTW9kUG93SW50KGUsbSl7dmFyIHo7aWYoZTwyNTZ8fG0uaXNFdmVuKCkpej1uZXcgQ2xhc3NpYyhtKTtlbHNlIHo9bmV3IE1vbnRnb21lcnkobSk7cmV0dXJuIHRoaXMuZXhwKGUseil9QmlnSW50ZWdlci5wcm90b3R5cGUuY29weVRvPWJucENvcHlUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tSW50PWJucEZyb21JbnQ7QmlnSW50ZWdlci5wcm90b3R5cGUuZnJvbVN0cmluZz1ibnBGcm9tU3RyaW5nO0JpZ0ludGVnZXIucHJvdG90eXBlLmNsYW1wPWJucENsYW1wO0JpZ0ludGVnZXIucHJvdG90eXBlLmRsU2hpZnRUbz1ibnBETFNoaWZ0VG87QmlnSW50ZWdlci5wcm90b3R5cGUuZHJTaGlmdFRvPWJucERSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5sU2hpZnRUbz1ibnBMU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5yU2hpZnRUbz1ibnBSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJUbz1ibnBTdWJUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseVRvPWJucE11bHRpcGx5VG87QmlnSW50ZWdlci5wcm90b3R5cGUuc3F1YXJlVG89Ym5wU3F1YXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuZGl2UmVtVG89Ym5wRGl2UmVtVG87QmlnSW50ZWdlci5wcm90b3R5cGUuaW52RGlnaXQ9Ym5wSW52RGlnaXQ7QmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuPWJucElzRXZlbjtCaWdJbnRlZ2VyLnByb3RvdHlwZS5leHA9Ym5wRXhwO0JpZ0ludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nPWJuVG9TdHJpbmc7QmlnSW50ZWdlci5wcm90b3R5cGUubmVnYXRlPWJuTmVnYXRlO0JpZ0ludGVnZXIucHJvdG90eXBlLmFicz1ibkFicztCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG89Ym5Db21wYXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoPWJuQml0TGVuZ3RoO0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZD1ibk1vZDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3dJbnQ9Ym5Nb2RQb3dJbnQ7QmlnSW50ZWdlci5aRVJPPW5idigwKTtCaWdJbnRlZ2VyLk9ORT1uYnYoMSk7ZnVuY3Rpb24gYm5wRnJvbVJhZGl4KHMsYil7dGhpcy5mcm9tSW50KDApO2lmKGI9PW51bGwpYj0xMDt2YXIgY3M9dGhpcy5jaHVua1NpemUoYik7dmFyIGQ9TWF0aC5wb3coYixjcyksbWk9ZmFsc2Usaj0wLHc9MDtmb3IodmFyIGk9MDtpPHMubGVuZ3RoOysraSl7dmFyIHg9aW50QXQocyxpKTtpZih4PDApe2lmKHMuY2hhckF0KGkpPT0iLSImJnRoaXMuc2lnbnVtKCk9PTApbWk9dHJ1ZTtjb250aW51ZX13PWIqdyt4O2lmKCsraj49Y3Mpe3RoaXMuZE11bHRpcGx5KGQpO3RoaXMuZEFkZE9mZnNldCh3LDApO2o9MDt3PTB9fWlmKGo+MCl7dGhpcy5kTXVsdGlwbHkoTWF0aC5wb3coYixqKSk7dGhpcy5kQWRkT2Zmc2V0KHcsMCl9aWYobWkpQmlnSW50ZWdlci5aRVJPLnN1YlRvKHRoaXMsdGhpcyl9ZnVuY3Rpb24gYm5wQ2h1bmtTaXplKHIpe3JldHVybiBNYXRoLmZsb29yKE1hdGguTE4yKnRoaXMuREIvTWF0aC5sb2cocikpfWZ1bmN0aW9uIGJuU2lnTnVtKCl7aWYodGhpcy5zPDApcmV0dXJuLTE7ZWxzZSBpZih0aGlzLnQ8PTB8fHRoaXMudD09MSYmdGhpc1swXTw9MClyZXR1cm4gMDtlbHNlIHJldHVybiAxfWZ1bmN0aW9uIGJucERNdWx0aXBseShuKXt0aGlzW3RoaXMudF09dGhpcy5hbSgwLG4tMSx0aGlzLDAsMCx0aGlzLnQpOysrdGhpcy50O3RoaXMuY2xhbXAoKX1mdW5jdGlvbiBibnBEQWRkT2Zmc2V0KG4sdyl7aWYobj09MClyZXR1cm47d2hpbGUodGhpcy50PD13KXRoaXNbdGhpcy50KytdPTA7dGhpc1t3XSs9bjt3aGlsZSh0aGlzW3ddPj10aGlzLkRWKXt0aGlzW3ddLT10aGlzLkRWO2lmKCsrdz49dGhpcy50KXRoaXNbdGhpcy50KytdPTA7Kyt0aGlzW3ddfX1mdW5jdGlvbiBibnBUb1JhZGl4KGIpe2lmKGI9PW51bGwpYj0xMDtpZih0aGlzLnNpZ251bSgpPT0wfHxiPDJ8fGI+MzYpcmV0dXJuIjAiO3ZhciBjcz10aGlzLmNodW5rU2l6ZShiKTt2YXIgYT1NYXRoLnBvdyhiLGNzKTt2YXIgZD1uYnYoYSkseT1uYmkoKSx6PW5iaSgpLHI9IiI7dGhpcy5kaXZSZW1UbyhkLHkseik7d2hpbGUoeS5zaWdudW0oKT4wKXtyPShhK3ouaW50VmFsdWUoKSkudG9TdHJpbmcoYikuc3Vic3RyKDEpK3I7eS5kaXZSZW1UbyhkLHkseil9cmV0dXJuIHouaW50VmFsdWUoKS50b1N0cmluZyhiKStyfWZ1bmN0aW9uIGJuSW50VmFsdWUoKXtpZih0aGlzLnM8MCl7aWYodGhpcy50PT0xKXJldHVybiB0aGlzWzBdLXRoaXMuRFY7ZWxzZSBpZih0aGlzLnQ9PTApcmV0dXJuLTF9ZWxzZSBpZih0aGlzLnQ9PTEpcmV0dXJuIHRoaXNbMF07ZWxzZSBpZih0aGlzLnQ9PTApcmV0dXJuIDA7cmV0dXJuKHRoaXNbMV0mKDE8PDMyLXRoaXMuREIpLTEpPDx0aGlzLkRCfHRoaXNbMF19ZnVuY3Rpb24gYm5wQWRkVG8oYSxyKXt2YXIgaT0wLGM9MCxtPU1hdGgubWluKGEudCx0aGlzLnQpO3doaWxlKGk8bSl7Yys9dGhpc1tpXSthW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9aWYoYS50PHRoaXMudCl7Yys9YS5zO3doaWxlKGk8dGhpcy50KXtjKz10aGlzW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9Yys9dGhpcy5zfWVsc2V7Yys9dGhpcy5zO3doaWxlKGk8YS50KXtjKz1hW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9Yys9YS5zfXIucz1jPDA/LTE6MDtpZihjPjApcltpKytdPWM7ZWxzZSBpZihjPC0xKXJbaSsrXT10aGlzLkRWK2M7ci50PWk7ci5jbGFtcCgpfUJpZ0ludGVnZXIucHJvdG90eXBlLmZyb21SYWRpeD1ibnBGcm9tUmFkaXg7QmlnSW50ZWdlci5wcm90b3R5cGUuY2h1bmtTaXplPWJucENodW5rU2l6ZTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaWdudW09Ym5TaWdOdW07QmlnSW50ZWdlci5wcm90b3R5cGUuZE11bHRpcGx5PWJucERNdWx0aXBseTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5kQWRkT2Zmc2V0PWJucERBZGRPZmZzZXQ7QmlnSW50ZWdlci5wcm90b3R5cGUudG9SYWRpeD1ibnBUb1JhZGl4O0JpZ0ludGVnZXIucHJvdG90eXBlLmludFZhbHVlPWJuSW50VmFsdWU7QmlnSW50ZWdlci5wcm90b3R5cGUuYWRkVG89Ym5wQWRkVG87dmFyIFdyYXBwZXI9e2FiczooZnVuY3Rpb24obCxoKXt2YXIgeD1uZXcgZ29vZy5tYXRoLkxvbmcobCxoKTt2YXIgcmV0O2lmKHguaXNOZWdhdGl2ZSgpKXtyZXQ9eC5uZWdhdGUoKX1lbHNle3JldD14fUhFQVAzMlt0ZW1wRG91YmxlUHRyPj4yXT1yZXQubG93XztIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1yZXQuaGlnaF99KSxlbnN1cmVUZW1wczooZnVuY3Rpb24oKXtpZihXcmFwcGVyLmVuc3VyZWRUZW1wcylyZXR1cm47V3JhcHBlci5lbnN1cmVkVGVtcHM9dHJ1ZTtXcmFwcGVyLnR3bzMyPW5ldyBCaWdJbnRlZ2VyO1dyYXBwZXIudHdvMzIuZnJvbVN0cmluZygiNDI5NDk2NzI5NiIsMTApO1dyYXBwZXIudHdvNjQ9bmV3IEJpZ0ludGVnZXI7V3JhcHBlci50d282NC5mcm9tU3RyaW5nKCIxODQ0Njc0NDA3MzcwOTU1MTYxNiIsMTApO1dyYXBwZXIudGVtcDE9bmV3IEJpZ0ludGVnZXI7V3JhcHBlci50ZW1wMj1uZXcgQmlnSW50ZWdlcn0pLGxoMmJpZ251bTooZnVuY3Rpb24obCxoKXt2YXIgYT1uZXcgQmlnSW50ZWdlcjthLmZyb21TdHJpbmcoaC50b1N0cmluZygpLDEwKTt2YXIgYj1uZXcgQmlnSW50ZWdlcjthLm11bHRpcGx5VG8oV3JhcHBlci50d28zMixiKTt2YXIgYz1uZXcgQmlnSW50ZWdlcjtjLmZyb21TdHJpbmcobC50b1N0cmluZygpLDEwKTt2YXIgZD1uZXcgQmlnSW50ZWdlcjtjLmFkZFRvKGIsZCk7cmV0dXJuIGR9KSxzdHJpbmdpZnk6KGZ1bmN0aW9uKGwsaCx1bnNpZ25lZCl7dmFyIHJldD0obmV3IGdvb2cubWF0aC5Mb25nKGwsaCkpLnRvU3RyaW5nKCk7aWYodW5zaWduZWQmJnJldFswXT09Ii0iKXtXcmFwcGVyLmVuc3VyZVRlbXBzKCk7dmFyIGJpZ251bT1uZXcgQmlnSW50ZWdlcjtiaWdudW0uZnJvbVN0cmluZyhyZXQsMTApO3JldD1uZXcgQmlnSW50ZWdlcjtXcmFwcGVyLnR3bzY0LmFkZFRvKGJpZ251bSxyZXQpO3JldD1yZXQudG9TdHJpbmcoMTApfXJldHVybiByZXR9KSxmcm9tU3RyaW5nOihmdW5jdGlvbihzdHIsYmFzZSxtaW4sbWF4LHVuc2lnbmVkKXtXcmFwcGVyLmVuc3VyZVRlbXBzKCk7dmFyIGJpZ251bT1uZXcgQmlnSW50ZWdlcjtiaWdudW0uZnJvbVN0cmluZyhzdHIsYmFzZSk7dmFyIGJpZ21pbj1uZXcgQmlnSW50ZWdlcjtiaWdtaW4uZnJvbVN0cmluZyhtaW4sMTApO3ZhciBiaWdtYXg9bmV3IEJpZ0ludGVnZXI7YmlnbWF4LmZyb21TdHJpbmcobWF4LDEwKTtpZih1bnNpZ25lZCYmYmlnbnVtLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pPDApe3ZhciB0ZW1wPW5ldyBCaWdJbnRlZ2VyO2JpZ251bS5hZGRUbyhXcmFwcGVyLnR3bzY0LHRlbXApO2JpZ251bT10ZW1wfXZhciBlcnJvcj1mYWxzZTtpZihiaWdudW0uY29tcGFyZVRvKGJpZ21pbik8MCl7YmlnbnVtPWJpZ21pbjtlcnJvcj10cnVlfWVsc2UgaWYoYmlnbnVtLmNvbXBhcmVUbyhiaWdtYXgpPjApe2JpZ251bT1iaWdtYXg7ZXJyb3I9dHJ1ZX12YXIgcmV0PWdvb2cubWF0aC5Mb25nLmZyb21TdHJpbmcoYmlnbnVtLnRvU3RyaW5nKCkpO0hFQVAzMlt0ZW1wRG91YmxlUHRyPj4yXT1yZXQubG93XztIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1yZXQuaGlnaF87aWYoZXJyb3IpdGhyb3cicmFuZ2UgZXJyb3IifSl9O3JldHVybiBXcmFwcGVyfSkoKTtpZihtZW1vcnlJbml0aWFsaXplcil7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERXx8RU5WSVJPTk1FTlRfSVNfU0hFTEwpe3ZhciBkYXRhPU1vZHVsZVsicmVhZEJpbmFyeSJdKG1lbW9yeUluaXRpYWxpemVyKTtIRUFQVTguc2V0KGRhdGEsU1RBVElDX0JBU0UpfWVsc2V7YWRkUnVuRGVwZW5kZW5jeSgibWVtb3J5IGluaXRpYWxpemVyIik7QnJvd3Nlci5hc3luY0xvYWQobWVtb3J5SW5pdGlhbGl6ZXIsKGZ1bmN0aW9uKGRhdGEpe0hFQVBVOC5zZXQoZGF0YSxTVEFUSUNfQkFTRSk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgibWVtb3J5IGluaXRpYWxpemVyIil9KSwoZnVuY3Rpb24oZGF0YSl7dGhyb3ciY291bGQgbm90IGxvYWQgbWVtb3J5IGluaXRpYWxpemVyICIrbWVtb3J5SW5pdGlhbGl6ZXJ9KSl9fWZ1bmN0aW9uIEV4aXRTdGF0dXMoc3RhdHVzKXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiO3RoaXMubWVzc2FnZT0iUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgiK3N0YXR1cysiKSI7dGhpcy5zdGF0dXM9c3RhdHVzfUV4aXRTdGF0dXMucHJvdG90eXBlPW5ldyBFcnJvcjtFeGl0U3RhdHVzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FeGl0U3RhdHVzO3ZhciBpbml0aWFsU3RhY2tUb3A7dmFyIHByZWxvYWRTdGFydFRpbWU9bnVsbDt2YXIgY2FsbGVkTWFpbj1mYWxzZTtkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9ZnVuY3Rpb24gcnVuQ2FsbGVyKCl7aWYoIU1vZHVsZVsiY2FsbGVkUnVuIl0mJnNob3VsZFJ1bk5vdylydW4oKTtpZighTW9kdWxlWyJjYWxsZWRSdW4iXSlkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9cnVuQ2FsbGVyfTtNb2R1bGVbImNhbGxNYWluIl09TW9kdWxlLmNhbGxNYWluPWZ1bmN0aW9uIGNhbGxNYWluKGFyZ3Mpe2Fzc2VydChydW5EZXBlbmRlbmNpZXM9PTAsImNhbm5vdCBjYWxsIG1haW4gd2hlbiBhc3luYyBkZXBlbmRlbmNpZXMgcmVtYWluISAobGlzdGVuIG9uIF9fQVRNQUlOX18pIik7YXNzZXJ0KF9fQVRQUkVSVU5fXy5sZW5ndGg9PTAsImNhbm5vdCBjYWxsIG1haW4gd2hlbiBwcmVSdW4gZnVuY3Rpb25zIHJlbWFpbiB0byBiZSBjYWxsZWQiKTthcmdzPWFyZ3N8fFtdO2Vuc3VyZUluaXRSdW50aW1lKCk7dmFyIGFyZ2M9YXJncy5sZW5ndGgrMTtmdW5jdGlvbiBwYWQoKXtmb3IodmFyIGk9MDtpPDQtMTtpKyspe2FyZ3YucHVzaCgwKX19dmFyIGFyZ3Y9W2FsbG9jYXRlKGludEFycmF5RnJvbVN0cmluZygiL2Jpbi90aGlzLnByb2dyYW0iKSwiaTgiLEFMTE9DX05PUk1BTCldO3BhZCgpO2Zvcih2YXIgaT0wO2k8YXJnYy0xO2k9aSsxKXthcmd2LnB1c2goYWxsb2NhdGUoaW50QXJyYXlGcm9tU3RyaW5nKGFyZ3NbaV0pLCJpOCIsQUxMT0NfTk9STUFMKSk7cGFkKCl9YXJndi5wdXNoKDApO2FyZ3Y9YWxsb2NhdGUoYXJndiwiaTMyIixBTExPQ19OT1JNQUwpO2luaXRpYWxTdGFja1RvcD1TVEFDS1RPUDt0cnl7dmFyIHJldD1Nb2R1bGVbIl9tYWluIl0oYXJnYyxhcmd2LDApO2lmKCFNb2R1bGVbIm5vRXhpdFJ1bnRpbWUiXSl7ZXhpdChyZXQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1cyl7cmV0dXJufWVsc2UgaWYoZT09IlNpbXVsYXRlSW5maW5pdGVMb29wIil7TW9kdWxlWyJub0V4aXRSdW50aW1lIl09dHJ1ZTtyZXR1cm59ZWxzZXtpZihlJiZ0eXBlb2YgZT09PSJvYmplY3QiJiZlLnN0YWNrKU1vZHVsZS5wcmludEVycigiZXhjZXB0aW9uIHRocm93bjogIitbZSxlLnN0YWNrXSk7dGhyb3cgZX19ZmluYWxseXtjYWxsZWRNYWluPXRydWV9fTtmdW5jdGlvbiBydW4oYXJncyl7YXJncz1hcmdzfHxNb2R1bGVbImFyZ3VtZW50cyJdO2lmKHByZWxvYWRTdGFydFRpbWU9PT1udWxsKXByZWxvYWRTdGFydFRpbWU9RGF0ZS5ub3coKTtpZihydW5EZXBlbmRlbmNpZXM+MCl7TW9kdWxlLnByaW50RXJyKCJydW4oKSBjYWxsZWQsIGJ1dCBkZXBlbmRlbmNpZXMgcmVtYWluLCBzbyBub3QgcnVubmluZyIpO3JldHVybn1wcmVSdW4oKTtpZihydW5EZXBlbmRlbmNpZXM+MClyZXR1cm47aWYoTW9kdWxlWyJjYWxsZWRSdW4iXSlyZXR1cm47ZnVuY3Rpb24gZG9SdW4oKXtpZihNb2R1bGVbImNhbGxlZFJ1biJdKXJldHVybjtNb2R1bGVbImNhbGxlZFJ1biJdPXRydWU7ZW5zdXJlSW5pdFJ1bnRpbWUoKTtwcmVNYWluKCk7aWYoRU5WSVJPTk1FTlRfSVNfV0VCJiZwcmVsb2FkU3RhcnRUaW1lIT09bnVsbCl7TW9kdWxlLnByaW50RXJyKCJwcmUtbWFpbiBwcmVwIHRpbWU6ICIrKERhdGUubm93KCktcHJlbG9hZFN0YXJ0VGltZSkrIiBtcyIpfWlmKE1vZHVsZVsiX21haW4iXSYmc2hvdWxkUnVuTm93KXtNb2R1bGVbImNhbGxNYWluIl0oYXJncyl9cG9zdFJ1bigpfWlmKE1vZHVsZVsic2V0U3RhdHVzIl0pe01vZHVsZVsic2V0U3RhdHVzIl0oIlJ1bm5pbmcuLi4iKTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7TW9kdWxlWyJzZXRTdGF0dXMiXSgiIil9KSwxKTtpZighQUJPUlQpZG9SdW4oKX0pLDEpfWVsc2V7ZG9SdW4oKX19TW9kdWxlWyJydW4iXT1Nb2R1bGUucnVuPXJ1bjtmdW5jdGlvbiBleGl0KHN0YXR1cyl7QUJPUlQ9dHJ1ZTtFWElUU1RBVFVTPXN0YXR1cztTVEFDS1RPUD1pbml0aWFsU3RhY2tUb3A7ZXhpdFJ1bnRpbWUoKTt0aHJvdyBuZXcgRXhpdFN0YXR1cyhzdGF0dXMpfU1vZHVsZVsiZXhpdCJdPU1vZHVsZS5leGl0PWV4aXQ7ZnVuY3Rpb24gYWJvcnQodGV4dCl7aWYodGV4dCl7TW9kdWxlLnByaW50KHRleHQpO01vZHVsZS5wcmludEVycih0ZXh0KX1BQk9SVD10cnVlO0VYSVRTVEFUVVM9MTt2YXIgZXh0cmE9IlxuSWYgdGhpcyBhYm9ydCgpIGlzIHVuZXhwZWN0ZWQsIGJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIHdoaWNoIGNhbiBnaXZlIG1vcmUgaW5mb3JtYXRpb24uIjt0aHJvdyJhYm9ydCgpIGF0ICIrc3RhY2tUcmFjZSgpK2V4dHJhfU1vZHVsZVsiYWJvcnQiXT1Nb2R1bGUuYWJvcnQ9YWJvcnQ7dmFyIEludGVybmFsRXJyb3I9TW9kdWxlWyJJbnRlcm5hbEVycm9yIl09ZXh0ZW5kRXJyb3IoRXJyb3IsIkludGVybmFsRXJyb3IiKTt2YXIgQmluZGluZ0Vycm9yPU1vZHVsZVsiQmluZGluZ0Vycm9yIl09ZXh0ZW5kRXJyb3IoRXJyb3IsIkJpbmRpbmdFcnJvciIpO3ZhciBVbmJvdW5kVHlwZUVycm9yPU1vZHVsZVsiVW5ib3VuZFR5cGVFcnJvciJdPWV4dGVuZEVycm9yKEJpbmRpbmdFcnJvciwiVW5ib3VuZFR5cGVFcnJvciIpO3ZhciBQdXJlVmlydHVhbEVycm9yPU1vZHVsZVsiUHVyZVZpcnR1YWxFcnJvciJdPWV4dGVuZEVycm9yKEJpbmRpbmdFcnJvciwiUHVyZVZpcnR1YWxFcnJvciIpO2Z1bmN0aW9uIHRocm93SW50ZXJuYWxFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtZXNzYWdlKX1mdW5jdGlvbiB0aHJvd0JpbmRpbmdFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKG1lc3NhZ2UpfWZ1bmN0aW9uIHRocm93VW5ib3VuZFR5cGVFcnJvcihtZXNzYWdlLHR5cGVzKXt2YXIgdW5ib3VuZFR5cGVzPVtdO3ZhciBzZWVuPXt9O2Z1bmN0aW9uIHZpc2l0KHR5cGUpe2lmKHNlZW5bdHlwZV0pe3JldHVybn1pZihyZWdpc3RlcmVkVHlwZXNbdHlwZV0pe3JldHVybn1pZih0eXBlRGVwZW5kZW5jaWVzW3R5cGVdKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdLmZvckVhY2godmlzaXQpO3JldHVybn11bmJvdW5kVHlwZXMucHVzaCh0eXBlKTtzZWVuW3R5cGVdPXRydWV9dHlwZXMuZm9yRWFjaCh2aXNpdCk7dGhyb3cgbmV3IFVuYm91bmRUeXBlRXJyb3IobWVzc2FnZSsiOiAiK3VuYm91bmRUeXBlcy5tYXAoZ2V0VHlwZU5hbWUpLmpvaW4oWyIsICJdKSl9ZnVuY3Rpb24gZW5zdXJlT3ZlcmxvYWRUYWJsZShwcm90byxtZXRob2ROYW1lLGh1bWFuTmFtZSl7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7dmFyIHByZXZGdW5jPXByb3RvW21ldGhvZE5hbWVdO3Byb3RvW21ldGhvZE5hbWVdPShmdW5jdGlvbigpe2lmKCFwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlLmhhc093blByb3BlcnR5KGFyZ3VtZW50cy5sZW5ndGgpKXt0aHJvd0JpbmRpbmdFcnJvcigiRnVuY3Rpb24gJyIraHVtYW5OYW1lKyInIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyAoIithcmd1bWVudHMubGVuZ3RoKyIpIC0gZXhwZWN0cyBvbmUgb2YgKCIrcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSsiKSEiKX1yZXR1cm4gcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmd1bWVudHMubGVuZ3RoXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KTtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlPVtdO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbcHJldkZ1bmMuYXJnQ291bnRdPXByZXZGdW5jfX1mdW5jdGlvbiBleHBvc2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShuYW1lKSl7aWYodW5kZWZpbmVkPT09bnVtQXJndW1lbnRzfHx1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGVbbnVtQXJndW1lbnRzXSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBwdWJsaWMgbmFtZSAnIituYW1lKyInIHR3aWNlIil9ZW5zdXJlT3ZlcmxvYWRUYWJsZShNb2R1bGUsbmFtZSxuYW1lKTtpZihNb2R1bGUuaGFzT3duUHJvcGVydHkobnVtQXJndW1lbnRzKSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBtdWx0aXBsZSBvdmVybG9hZHMgb2YgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1bWVudHMgKCIrbnVtQXJndW1lbnRzKyIpISIpfU1vZHVsZVtuYW1lXS5vdmVybG9hZFRhYmxlW251bUFyZ3VtZW50c109dmFsdWV9ZWxzZXtNb2R1bGVbbmFtZV09dmFsdWU7aWYodW5kZWZpbmVkIT09bnVtQXJndW1lbnRzKXtNb2R1bGVbbmFtZV0ubnVtQXJndW1lbnRzPW51bUFyZ3VtZW50c319fWZ1bmN0aW9uIHJlcGxhY2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKCFNb2R1bGUuaGFzT3duUHJvcGVydHkobmFtZSkpe3Rocm93SW50ZXJuYWxFcnJvcigiUmVwbGFjaW5nIG5vbmV4aXN0YW50IHB1YmxpYyBzeW1ib2wiKX1pZih1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09bnVtQXJndW1lbnRzKXtNb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZVtudW1Bcmd1bWVudHNdPXZhbHVlfWVsc2V7TW9kdWxlW25hbWVdPXZhbHVlfX1mdW5jdGlvbiBleHRlbmRFcnJvcihiYXNlRXJyb3JUeXBlLGVycm9yTmFtZSl7dmFyIGVycm9yQ2xhc3M9Y3JlYXRlTmFtZWRGdW5jdGlvbihlcnJvck5hbWUsKGZ1bmN0aW9uKG1lc3NhZ2Upe3RoaXMubmFtZT1lcnJvck5hbWU7dGhpcy5tZXNzYWdlPW1lc3NhZ2U7dmFyIHN0YWNrPShuZXcgRXJyb3IobWVzc2FnZSkpLnN0YWNrO2lmKHN0YWNrIT09dW5kZWZpbmVkKXt0aGlzLnN0YWNrPXRoaXMudG9TdHJpbmcoKSsiXG4iK3N0YWNrLnJlcGxhY2UoL15FcnJvcig6W15cbl0qKT9cbi8sIiIpfX0pKTtlcnJvckNsYXNzLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGJhc2VFcnJvclR5cGUucHJvdG90eXBlKTtlcnJvckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lcnJvckNsYXNzO2Vycm9yQ2xhc3MucHJvdG90eXBlLnRvU3RyaW5nPShmdW5jdGlvbigpe2lmKHRoaXMubWVzc2FnZT09PXVuZGVmaW5lZCl7cmV0dXJuIHRoaXMubmFtZX1lbHNle3JldHVybiB0aGlzLm5hbWUrIjogIit0aGlzLm1lc3NhZ2V9fSk7cmV0dXJuIGVycm9yQ2xhc3N9ZnVuY3Rpb24gY3JlYXRlTmFtZWRGdW5jdGlvbihuYW1lLGJvZHkpe25hbWU9bWFrZUxlZ2FsRnVuY3Rpb25OYW1lKG5hbWUpO3JldHVybihuZXcgRnVuY3Rpb24oImJvZHkiLCJyZXR1cm4gZnVuY3Rpb24gIituYW1lKyIoKSB7XG4iKycgICAgInVzZSBzdHJpY3QiOycrIiAgICByZXR1cm4gYm9keS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuIisifTtcbiIpKShib2R5KX1mdW5jdGlvbiBfZW1iaW5kX3JlcHIodil7dmFyIHQ9dHlwZW9mIHY7aWYodD09PSJvYmplY3QifHx0PT09ImFycmF5Inx8dD09PSJmdW5jdGlvbiIpe3JldHVybiB2LnRvU3RyaW5nKCl9ZWxzZXtyZXR1cm4iIit2fX12YXIgcmVnaXN0ZXJlZEluc3RhbmNlcz17fTtmdW5jdGlvbiBnZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpe2lmKHB0cj09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoInB0ciBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpfXdoaWxlKGNsYXNzXy5iYXNlQ2xhc3Mpe3B0cj1jbGFzc18udXBjYXN0KHB0cik7Y2xhc3NfPWNsYXNzXy5iYXNlQ2xhc3N9cmV0dXJuIHB0cn1mdW5jdGlvbiByZWdpc3RlckluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIsaW5zdGFuY2Upe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO2lmKHJlZ2lzdGVyZWRJbnN0YW5jZXMuaGFzT3duUHJvcGVydHkocHRyKSl7dGhyb3dCaW5kaW5nRXJyb3IoIlRyaWVkIHRvIHJlZ2lzdGVyIHJlZ2lzdGVyZWQgaW5zdGFuY2U6ICIrcHRyKX1lbHNle3JlZ2lzdGVyZWRJbnN0YW5jZXNbcHRyXT1pbnN0YW5jZX19ZnVuY3Rpb24gdW5yZWdpc3RlckluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIpe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO2lmKHJlZ2lzdGVyZWRJbnN0YW5jZXMuaGFzT3duUHJvcGVydHkocHRyKSl7ZGVsZXRlIHJlZ2lzdGVyZWRJbnN0YW5jZXNbcHRyXX1lbHNle3Rocm93QmluZGluZ0Vycm9yKCJUcmllZCB0byB1bnJlZ2lzdGVyIHVucmVnaXN0ZXJlZCBpbnN0YW5jZTogIitwdHIpfX1mdW5jdGlvbiBnZXRJbmhlcml0ZWRJbnN0YW5jZShjbGFzc18scHRyKXtwdHI9Z2V0QmFzZXN0UG9pbnRlcihjbGFzc18scHRyKTtyZXR1cm4gcmVnaXN0ZXJlZEluc3RhbmNlc1twdHJdfWZ1bmN0aW9uIGdldEluaGVyaXRlZEluc3RhbmNlQ291bnQoKXtyZXR1cm4gT2JqZWN0LmtleXMocmVnaXN0ZXJlZEluc3RhbmNlcykubGVuZ3RofU1vZHVsZVsiZ2V0SW5oZXJpdGVkSW5zdGFuY2VDb3VudCJdPWdldEluaGVyaXRlZEluc3RhbmNlQ291bnQ7ZnVuY3Rpb24gZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcygpe3ZhciBydj1bXTtmb3IodmFyIGsgaW4gcmVnaXN0ZXJlZEluc3RhbmNlcyl7aWYocmVnaXN0ZXJlZEluc3RhbmNlcy5oYXNPd25Qcm9wZXJ0eShrKSl7cnYucHVzaChyZWdpc3RlcmVkSW5zdGFuY2VzW2tdKX19cmV0dXJuIHJ2fU1vZHVsZVsiZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcyJdPWdldExpdmVJbmhlcml0ZWRJbnN0YW5jZXM7dmFyIHJlZ2lzdGVyZWRUeXBlcz17fTt2YXIgYXdhaXRpbmdEZXBlbmRlbmNpZXM9e307dmFyIHR5cGVEZXBlbmRlbmNpZXM9e307dmFyIHJlZ2lzdGVyZWRQb2ludGVycz17fTtmdW5jdGlvbiByZWdpc3RlclR5cGUocmF3VHlwZSxyZWdpc3RlcmVkSW5zdGFuY2Upe2lmKCEoImFyZ1BhY2tBZHZhbmNlImluIHJlZ2lzdGVyZWRJbnN0YW5jZSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2UiKX12YXIgbmFtZT1yZWdpc3RlcmVkSW5zdGFuY2UubmFtZTtpZighcmF3VHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoJ3R5cGUgIicrbmFtZSsnIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyJyl9aWYocmVnaXN0ZXJlZFR5cGVzLmhhc093blByb3BlcnR5KHJhd1R5cGUpKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIHR5cGUgJyIrbmFtZSsiJyB0d2ljZSIpfXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXT1yZWdpc3RlcmVkSW5zdGFuY2U7ZGVsZXRlIHR5cGVEZXBlbmRlbmNpZXNbcmF3VHlwZV07aWYoYXdhaXRpbmdEZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkocmF3VHlwZSkpe3ZhciBjYWxsYmFja3M9YXdhaXRpbmdEZXBlbmRlbmNpZXNbcmF3VHlwZV07ZGVsZXRlIGF3YWl0aW5nRGVwZW5kZW5jaWVzW3Jhd1R5cGVdO2NhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihjYil7Y2IoKX0pKX19ZnVuY3Rpb24gd2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQobXlUeXBlcyxkZXBlbmRlbnRUeXBlcyxnZXRUeXBlQ29udmVydGVycyl7bXlUeXBlcy5mb3JFYWNoKChmdW5jdGlvbih0eXBlKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdPWRlcGVuZGVudFR5cGVzfSkpO2Z1bmN0aW9uIG9uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpe3ZhciBteVR5cGVDb252ZXJ0ZXJzPWdldFR5cGVDb252ZXJ0ZXJzKHR5cGVDb252ZXJ0ZXJzKTtpZihteVR5cGVDb252ZXJ0ZXJzLmxlbmd0aCE9PW15VHlwZXMubGVuZ3RoKXt0aHJvd0ludGVybmFsRXJyb3IoIk1pc21hdGNoZWQgdHlwZSBjb252ZXJ0ZXIgY291bnQiKX1mb3IodmFyIGk9MDtpPG15VHlwZXMubGVuZ3RoOysraSl7cmVnaXN0ZXJUeXBlKG15VHlwZXNbaV0sbXlUeXBlQ29udmVydGVyc1tpXSl9fXZhciB0eXBlQ29udmVydGVycz1uZXcgQXJyYXkoZGVwZW5kZW50VHlwZXMubGVuZ3RoKTt2YXIgdW5yZWdpc3RlcmVkVHlwZXM9W107dmFyIHJlZ2lzdGVyZWQ9MDtkZXBlbmRlbnRUeXBlcy5mb3JFYWNoKChmdW5jdGlvbihkdCxpKXtpZihyZWdpc3RlcmVkVHlwZXMuaGFzT3duUHJvcGVydHkoZHQpKXt0eXBlQ29udmVydGVyc1tpXT1yZWdpc3RlcmVkVHlwZXNbZHRdfWVsc2V7dW5yZWdpc3RlcmVkVHlwZXMucHVzaChkdCk7aWYoIWF3YWl0aW5nRGVwZW5kZW5jaWVzLmhhc093blByb3BlcnR5KGR0KSl7YXdhaXRpbmdEZXBlbmRlbmNpZXNbZHRdPVtdfWF3YWl0aW5nRGVwZW5kZW5jaWVzW2R0XS5wdXNoKChmdW5jdGlvbigpe3R5cGVDb252ZXJ0ZXJzW2ldPXJlZ2lzdGVyZWRUeXBlc1tkdF07KytyZWdpc3RlcmVkO2lmKHJlZ2lzdGVyZWQ9PT11bnJlZ2lzdGVyZWRUeXBlcy5sZW5ndGgpe29uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpfX0pKX19KSk7aWYoMD09PXVucmVnaXN0ZXJlZFR5cGVzLmxlbmd0aCl7b25Db21wbGV0ZSh0eXBlQ29udmVydGVycyl9fXZhciBfX2NoYXJDb2Rlcz0oZnVuY3Rpb24oKXt2YXIgY29kZXM9bmV3IEFycmF5KDI1Nik7Zm9yKHZhciBpPTA7aTwyNTY7KytpKXtjb2Rlc1tpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpfXJldHVybiBjb2Rlc30pKCk7ZnVuY3Rpb24gcmVhZExhdGluMVN0cmluZyhwdHIpe3ZhciByZXQ9IiI7dmFyIGM9cHRyO3doaWxlKEhFQVBVOFtjXSl7cmV0Kz1fX2NoYXJDb2Rlc1tIRUFQVThbYysrXV19cmV0dXJuIHJldH1mdW5jdGlvbiBnZXRUeXBlTmFtZSh0eXBlKXt2YXIgcHRyPV9fX2dldFR5cGVOYW1lKHR5cGUpO3ZhciBydj1yZWFkTGF0aW4xU3RyaW5nKHB0cik7X2ZyZWUocHRyKTtyZXR1cm4gcnZ9ZnVuY3Rpb24gaGVhcDMyVmVjdG9yVG9BcnJheShjb3VudCxmaXJzdEVsZW1lbnQpe3ZhciBhcnJheT1bXTtmb3IodmFyIGk9MDtpPGNvdW50O2krKyl7YXJyYXkucHVzaChIRUFQMzJbKGZpcnN0RWxlbWVudD4+MikraV0pfXJldHVybiBhcnJheX1mdW5jdGlvbiByZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmF3VHlwZSxodW1hbk5hbWUpe3ZhciBpbXBsPXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXTtpZih1bmRlZmluZWQ9PT1pbXBsKXt0aHJvd0JpbmRpbmdFcnJvcihodW1hbk5hbWUrIiBoYXMgdW5rbm93biB0eXBlICIrZ2V0VHlwZU5hbWUocmF3VHlwZSkpfXJldHVybiBpbXBsfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3ZvaWQocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiYXJnUGFja0FkdmFuY2UiOjAsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKCl7cmV0dXJuIHVuZGVmaW5lZH0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7cmV0dXJuIHVuZGVmaW5lZH0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfYm9vbChyYXdUeXBlLG5hbWUsc2l6ZSx0cnVlVmFsdWUsZmFsc2VWYWx1ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHd0KXtyZXR1cm4hIXd0fSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyxvKXtyZXR1cm4gbz90cnVlVmFsdWU6ZmFsc2VWYWx1ZX0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcDtpZihzaXplPT09MSl7aGVhcD1IRUFQOH1lbHNlIGlmKHNpemU9PT0yKXtoZWFwPUhFQVAxNn1lbHNlIGlmKHNpemU9PT00KXtoZWFwPUhFQVAzMn1lbHNle3Rocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gYm9vbGVhbiB0eXBlIHNpemU6ICIrbmFtZSl9cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+c2hpZnRdKX0pLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gZ2V0U2hpZnRGcm9tU2l6ZShzaXplKXtzd2l0Y2goc2l6ZSl7Y2FzZSAxOnJldHVybiAwO2Nhc2UgMjpyZXR1cm4gMTtjYXNlIDQ6cmV0dXJuIDI7Y2FzZSA4OnJldHVybiAzO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biB0eXBlIHNpemU6ICIrc2l6ZSl9fWZ1bmN0aW9uIGludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LHNpZ25lZCl7c3dpdGNoKHNoaWZ0KXtjYXNlIDA6cmV0dXJuKGZ1bmN0aW9uKHBvaW50ZXIpe3ZhciBoZWFwPXNpZ25lZD9IRUFQODpIRUFQVTg7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcl0pfSk7Y2FzZSAxOnJldHVybihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcD1zaWduZWQ/SEVBUDE2OkhFQVBVMTY7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+MV0pfSk7Y2FzZSAyOnJldHVybihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcD1zaWduZWQ/SEVBUDMyOkhFQVBVMzI7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+Ml0pfSk7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGludGVnZXIgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gZmxvYXRSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0KXtzd2l0Y2goc2hpZnQpe2Nhc2UgMjpyZXR1cm4oZnVuY3Rpb24ocG9pbnRlcil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKEhFQVBGMzJbcG9pbnRlcj4+Ml0pfSk7Y2FzZSAzOnJldHVybihmdW5jdGlvbihwb2ludGVyKXtyZXR1cm4gdGhpc1siZnJvbVdpcmVUeXBlIl0oSEVBUEY2NFtwb2ludGVyPj4zXSl9KTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZmxvYXQgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcihwcmltaXRpdmVUeXBlLG5hbWUsc2l6ZSxtaW5SYW5nZSxtYXhSYW5nZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO2lmKG1heFJhbmdlPT09LTEpe21heFJhbmdlPTQyOTQ5NjcyOTV9dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7cmVnaXN0ZXJUeXBlKHByaW1pdGl2ZVR5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3JldHVybiB2YWx1ZX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHR5cGVvZiB2YWx1ZSE9PSJudW1iZXIiJiZ0eXBlb2YgdmFsdWUhPT0iYm9vbGVhbiIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0ICInK19lbWJpbmRfcmVwcih2YWx1ZSkrJyIgdG8gJyt0aGlzLm5hbWUpfWlmKHZhbHVlPG1pblJhbmdlfHx2YWx1ZT5tYXhSYW5nZSl7dGhyb3cgbmV3IFR5cGVFcnJvcignUGFzc2luZyBhIG51bWJlciAiJytfZW1iaW5kX3JlcHIodmFsdWUpKyciIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgIicrbmFtZSsnIiwgd2hpY2ggaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgWycrbWluUmFuZ2UrIiwgIittYXhSYW5nZSsiXSEiKX1yZXR1cm4gdmFsdWV8MH0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LG1pblJhbmdlIT09MCksZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdChyYXdUeXBlLG5hbWUsc2l6ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdmFsdWV9KSwidG9XaXJlVHlwZSI6KGZ1bmN0aW9uKGRlc3RydWN0b3JzLHZhbHVlKXtpZih0eXBlb2YgdmFsdWUhPT0ibnVtYmVyIiYmdHlwZW9mIHZhbHVlIT09ImJvb2xlYW4iKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCAiJytfZW1iaW5kX3JlcHIodmFsdWUpKyciIHRvICcrdGhpcy5uYW1lKX1yZXR1cm4gdmFsdWV9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpmbG9hdFJlYWRWYWx1ZUZyb21Qb2ludGVyKG5hbWUsc2hpZnQpLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gc2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXIocG9pbnRlcil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKEhFQVBVMzJbcG9pbnRlcj4+Ml0pfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF9zdHJpbmcocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIGE9bmV3IEFycmF5KGxlbmd0aCk7Zm9yKHZhciBpPTA7aTxsZW5ndGg7KytpKXthW2ldPVN0cmluZy5mcm9tQ2hhckNvZGUoSEVBUFU4W3ZhbHVlKzQraV0pfV9mcmVlKHZhbHVlKTtyZXR1cm4gYS5qb2luKCIiKX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3ZhbHVlPW5ldyBVaW50OEFycmF5KHZhbHVlKX1mdW5jdGlvbiBnZXRUQUVsZW1lbnQodGEsaW5kZXgpe3JldHVybiB0YVtpbmRleF19ZnVuY3Rpb24gZ2V0U3RyaW5nRWxlbWVudChzdHJpbmcsaW5kZXgpe3JldHVybiBzdHJpbmcuY2hhckNvZGVBdChpbmRleCl9dmFyIGdldEVsZW1lbnQ7aWYodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtnZXRFbGVtZW50PWdldFRBRWxlbWVudH1lbHNlIGlmKHZhbHVlIGluc3RhbmNlb2YgSW50OEFycmF5KXtnZXRFbGVtZW50PWdldFRBRWxlbWVudH1lbHNlIGlmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtnZXRFbGVtZW50PWdldFN0cmluZ0VsZW1lbnR9ZWxzZXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBzdGQ6OnN0cmluZyIpfXZhciBsZW5ndGg9dmFsdWUubGVuZ3RoO3ZhciBwdHI9X21hbGxvYyg0K2xlbmd0aCk7SEVBUFUzMltwdHI+PjJdPWxlbmd0aDtmb3IodmFyIGk9MDtpPGxlbmd0aDsrK2kpe3ZhciBjaGFyQ29kZT1nZXRFbGVtZW50KHZhbHVlLGkpO2lmKGNoYXJDb2RlPjI1NSl7X2ZyZWUocHRyKTt0aHJvd0JpbmRpbmdFcnJvcigiU3RyaW5nIGhhcyBVVEYtMTYgY29kZSB1bml0cyB0aGF0IGRvIG5vdCBmaXQgaW4gOCBiaXRzIil9SEVBUFU4W3B0cis0K2ldPWNoYXJDb2RlfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246KGZ1bmN0aW9uKHB0cil7X2ZyZWUocHRyKX0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmcocmF3VHlwZSxjaGFyU2l6ZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7dmFyIEhFQVAsc2hpZnQ7aWYoY2hhclNpemU9PT0yKXtIRUFQPUhFQVBVMTY7c2hpZnQ9MX1lbHNlIGlmKGNoYXJTaXplPT09NCl7SEVBUD1IRUFQVTMyO3NoaWZ0PTJ9cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIGE9bmV3IEFycmF5KGxlbmd0aCk7dmFyIHN0YXJ0PXZhbHVlKzQ+PnNoaWZ0O2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7YVtpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKEhFQVBbc3RhcnQraV0pfV9mcmVlKHZhbHVlKTtyZXR1cm4gYS5qb2luKCIiKX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe3ZhciBsZW5ndGg9dmFsdWUubGVuZ3RoO3ZhciBwdHI9X21hbGxvYyg0K2xlbmd0aCpjaGFyU2l6ZSk7SEVBUFUzMltwdHI+PjJdPWxlbmd0aDt2YXIgc3RhcnQ9cHRyKzQ+PnNoaWZ0O2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7SEVBUFtzdGFydCtpXT12YWx1ZS5jaGFyQ29kZUF0KGkpfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246KGZ1bmN0aW9uKHB0cil7X2ZyZWUocHRyKX0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZW12YWwocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24oaGFuZGxlKXt2YXIgcnY9X2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnZhbHVlO19fZW12YWxfZGVjcmVmKGhhbmRsZSk7cmV0dXJuIHJ2fSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyx2YWx1ZSl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodmFsdWUpfSksImFyZ1BhY2tBZHZhbmNlIjo4LCJyZWFkVmFsdWVGcm9tUG9pbnRlciI6c2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXIsZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyhyYXdUeXBlLG5hbWUpe3ZhciB0eXBlTWFwcGluZz1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXldO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyZWdpc3RlclR5cGUocmF3VHlwZSx7bmFtZTpuYW1lLCJmcm9tV2lyZVR5cGUiOihmdW5jdGlvbihoYW5kbGUpe3ZhciB0eXBlPUhFQVBVMzJbaGFuZGxlPj4yXTt2YXIgc2l6ZT1IRUFQVTMyWyhoYW5kbGU+PjIpKzFdO3ZhciBkYXRhPUhFQVBVMzJbKGhhbmRsZT4+MikrMl07dmFyIFRBPXR5cGVNYXBwaW5nW3R5cGVdO3JldHVybiBuZXcgVEEoSEVBUDguYnVmZmVyLGRhdGEsc2l6ZSl9KSwiYXJnUGFja0FkdmFuY2UiOjE2LCJyZWFkVmFsdWVGcm9tUG9pbnRlciI6KGZ1bmN0aW9uKHB0cil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKHB0cil9KX0pfWZ1bmN0aW9uIHJ1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKXt3aGlsZShkZXN0cnVjdG9ycy5sZW5ndGgpe3ZhciBwdHI9ZGVzdHJ1Y3RvcnMucG9wKCk7dmFyIGRlbD1kZXN0cnVjdG9ycy5wb3AoKTtkZWwocHRyKX19ZnVuY3Rpb24gbmV3Xyhjb25zdHJ1Y3Rvcixhcmd1bWVudExpc3Qpe2lmKCEoY29uc3RydWN0b3IgaW5zdGFuY2VvZiBGdW5jdGlvbikpe3Rocm93IG5ldyBUeXBlRXJyb3IoIm5ld18gY2FsbGVkIHdpdGggY29uc3RydWN0b3IgdHlwZSAiK3R5cGVvZiBjb25zdHJ1Y3RvcisiIHdoaWNoIGlzIG5vdCBhIGZ1bmN0aW9uIil9dmFyIGR1bW15PWNyZWF0ZU5hbWVkRnVuY3Rpb24oY29uc3RydWN0b3IubmFtZSwoZnVuY3Rpb24oKXt9KSk7ZHVtbXkucHJvdG90eXBlPWNvbnN0cnVjdG9yLnByb3RvdHlwZTt2YXIgb2JqPW5ldyBkdW1teTt2YXIgcj1jb25zdHJ1Y3Rvci5hcHBseShvYmosYXJndW1lbnRMaXN0KTtyZXR1cm4gciBpbnN0YW5jZW9mIE9iamVjdD9yOm9ian1mdW5jdGlvbiBjcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsY2xhc3NUeXBlLGNwcEludm9rZXJGdW5jLGNwcFRhcmdldEZ1bmMpe3ZhciBhcmdDb3VudD1hcmdUeXBlcy5sZW5ndGg7aWYoYXJnQ291bnQ8Mil7dGhyb3dCaW5kaW5nRXJyb3IoImFyZ1R5cGVzIGFycmF5IHNpemUgbWlzbWF0Y2ghIE11c3QgYXQgbGVhc3QgZ2V0IHJldHVybiB2YWx1ZSBhbmQgJ3RoaXMnIHR5cGVzISIpfXZhciBpc0NsYXNzTWV0aG9kRnVuYz1hcmdUeXBlc1sxXSE9PW51bGwmJmNsYXNzVHlwZSE9PW51bGw7dmFyIGFyZ3NMaXN0PSIiO3ZhciBhcmdzTGlzdFdpcmVkPSIiO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2FyZ3NMaXN0Kz0oaSE9PTA/IiwgIjoiIikrImFyZyIraTthcmdzTGlzdFdpcmVkKz0oaSE9PTA/IiwgIjoiIikrImFyZyIraSsiV2lyZWQifXZhciBpbnZva2VyRm5Cb2R5PSJyZXR1cm4gZnVuY3Rpb24gIittYWtlTGVnYWxGdW5jdGlvbk5hbWUoaHVtYW5OYW1lKSsiKCIrYXJnc0xpc3QrIikge1xuIisiaWYgKGFyZ3VtZW50cy5sZW5ndGggIT09ICIrKGFyZ0NvdW50LTIpKyIpIHtcbiIrInRocm93QmluZGluZ0Vycm9yKCdmdW5jdGlvbiAiK2h1bWFuTmFtZSsiIGNhbGxlZCB3aXRoICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBhcmd1bWVudHMsIGV4cGVjdGVkICIrKGFyZ0NvdW50LTIpKyIgYXJncyEnKTtcbiIrIn1cbiI7dmFyIG5lZWRzRGVzdHJ1Y3RvclN0YWNrPWZhbHNlO2Zvcih2YXIgaT0xO2k8YXJnVHlwZXMubGVuZ3RoOysraSl7aWYoYXJnVHlwZXNbaV0hPT1udWxsJiZhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb249PT11bmRlZmluZWQpe25lZWRzRGVzdHJ1Y3RvclN0YWNrPXRydWU7YnJlYWt9fWlmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0idmFyIGRlc3RydWN0b3JzID0gW107XG4ifXZhciBkdG9yU3RhY2s9bmVlZHNEZXN0cnVjdG9yU3RhY2s/ImRlc3RydWN0b3JzIjoibnVsbCI7dmFyIGFyZ3MxPVsidGhyb3dCaW5kaW5nRXJyb3IiLCJpbnZva2VyIiwiZm4iLCJydW5EZXN0cnVjdG9ycyIsInJldFR5cGUiLCJjbGFzc1BhcmFtIl07dmFyIGFyZ3MyPVt0aHJvd0JpbmRpbmdFcnJvcixjcHBJbnZva2VyRnVuYyxjcHBUYXJnZXRGdW5jLHJ1bkRlc3RydWN0b3JzLGFyZ1R5cGVzWzBdLGFyZ1R5cGVzWzFdXTtpZihpc0NsYXNzTWV0aG9kRnVuYyl7aW52b2tlckZuQm9keSs9InZhciB0aGlzV2lyZWQgPSBjbGFzc1BhcmFtLnRvV2lyZVR5cGUoIitkdG9yU3RhY2srIiwgdGhpcyk7XG4ifWZvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2ludm9rZXJGbkJvZHkrPSJ2YXIgYXJnIitpKyJXaXJlZCA9IGFyZ1R5cGUiK2krIi50b1dpcmVUeXBlKCIrZHRvclN0YWNrKyIsIGFyZyIraSsiKTsgLy8gIithcmdUeXBlc1tpKzJdLm5hbWUrIlxuIjthcmdzMS5wdXNoKCJhcmdUeXBlIitpKTthcmdzMi5wdXNoKGFyZ1R5cGVzW2krMl0pfWlmKGlzQ2xhc3NNZXRob2RGdW5jKXthcmdzTGlzdFdpcmVkPSJ0aGlzV2lyZWQiKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWR9dmFyIHJldHVybnM9YXJnVHlwZXNbMF0ubmFtZSE9PSJ2b2lkIjtpbnZva2VyRm5Cb2R5Kz0ocmV0dXJucz8idmFyIHJ2ID0gIjoiIikrImludm9rZXIoZm4iKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWQrIik7XG4iO2lmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0icnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpO1xuIn1lbHNle2Zvcih2YXIgaT1pc0NsYXNzTWV0aG9kRnVuYz8xOjI7aTxhcmdUeXBlcy5sZW5ndGg7KytpKXt2YXIgcGFyYW1OYW1lPWk9PT0xPyJ0aGlzV2lyZWQiOiJhcmciKyhpLTIpKyJXaXJlZCI7aWYoYXJnVHlwZXNbaV0uZGVzdHJ1Y3RvckZ1bmN0aW9uIT09bnVsbCl7aW52b2tlckZuQm9keSs9cGFyYW1OYW1lKyJfZHRvcigiK3BhcmFtTmFtZSsiKTsgLy8gIithcmdUeXBlc1tpXS5uYW1lKyJcbiI7YXJnczEucHVzaChwYXJhbU5hbWUrIl9kdG9yIik7YXJnczIucHVzaChhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb24pfX19aWYocmV0dXJucyl7aW52b2tlckZuQm9keSs9InJldHVybiByZXRUeXBlLmZyb21XaXJlVHlwZShydik7XG4ifWludm9rZXJGbkJvZHkrPSJ9XG4iO2FyZ3MxLnB1c2goaW52b2tlckZuQm9keSk7dmFyIGludm9rZXJGdW5jdGlvbj1uZXdfKEZ1bmN0aW9uLGFyZ3MxKS5hcHBseShudWxsLGFyZ3MyKTtyZXR1cm4gaW52b2tlckZ1bmN0aW9ufWZ1bmN0aW9uIHJlcXVpcmVGdW5jdGlvbihzaWduYXR1cmUscmF3RnVuY3Rpb24pe3NpZ25hdHVyZT1yZWFkTGF0aW4xU3RyaW5nKHNpZ25hdHVyZSk7dmFyIGZwO2lmKHR5cGVvZiBGVU5DVElPTl9UQUJMRT09PSJ1bmRlZmluZWQiKXt2YXIgZGM9YXNtWyJkeW5DYWxsXyIrc2lnbmF0dXJlXTtpZihkYz09PXVuZGVmaW5lZCl7ZGM9YXNtWyJkeW5DYWxsXyIrc2lnbmF0dXJlLnJlcGxhY2UoL2YvZywiZCIpXTtpZihkYz09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoIk5vIGR5bkNhbGwgaW52b2tlciBmb3Igc2lnbmF0dXJlOiAiK3NpZ25hdHVyZSl9fWZwPWRjLmJpbmQodW5kZWZpbmVkLHJhd0Z1bmN0aW9uKX1lbHNle2ZwPUZVTkNUSU9OX1RBQkxFW3Jhd0Z1bmN0aW9uXX1pZih0eXBlb2YgZnAhPT0iZnVuY3Rpb24iKXt0aHJvd0JpbmRpbmdFcnJvcigidW5rbm93biBmdW5jdGlvbiBwb2ludGVyIHdpdGggc2lnbmF0dXJlICIrc2lnbmF0dXJlKyI6ICIrcmF3RnVuY3Rpb24pfXJldHVybiBmcH1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mdW5jdGlvbihuYW1lLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixzaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIGFyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmF3SW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oc2lnbmF0dXJlLHJhd0ludm9rZXIpO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLChmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIituYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLGFyZ1R5cGVzKX0pLGFyZ0NvdW50LTEpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLGFyZ1R5cGVzLChmdW5jdGlvbihhcmdUeXBlcyl7dmFyIGludm9rZXJBcmdzQXJyYXk9W2FyZ1R5cGVzWzBdLG51bGxdLmNvbmNhdChhcmdUeXBlcy5zbGljZSgxKSk7cmVwbGFjZVB1YmxpY1N5bWJvbChuYW1lLGNyYWZ0SW52b2tlckZ1bmN0aW9uKG5hbWUsaW52b2tlckFyZ3NBcnJheSxudWxsLHJhd0ludm9rZXIsZm4pLGFyZ0NvdW50LTEpO3JldHVybltdfSkpfXZhciB0dXBsZVJlZ2lzdHJhdGlvbnM9e307ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdmFsdWVfYXJyYXkocmF3VHlwZSxuYW1lLGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yLGRlc3RydWN0b3JTaWduYXR1cmUscmF3RGVzdHJ1Y3Rvcil7dHVwbGVSZWdpc3RyYXRpb25zW3Jhd1R5cGVdPXtuYW1lOnJlYWRMYXRpbjFTdHJpbmcobmFtZSkscmF3Q29uc3RydWN0b3I6cmVxdWlyZUZ1bmN0aW9uKGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yKSxyYXdEZXN0cnVjdG9yOnJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpLGVsZW1lbnRzOltdfX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl92YWx1ZV9hcnJheV9lbGVtZW50KHJhd1R1cGxlVHlwZSxnZXR0ZXJSZXR1cm5UeXBlLGdldHRlclNpZ25hdHVyZSxnZXR0ZXIsZ2V0dGVyQ29udGV4dCxzZXR0ZXJBcmd1bWVudFR5cGUsc2V0dGVyU2lnbmF0dXJlLHNldHRlcixzZXR0ZXJDb250ZXh0KXt0dXBsZVJlZ2lzdHJhdGlvbnNbcmF3VHVwbGVUeXBlXS5lbGVtZW50cy5wdXNoKHtnZXR0ZXJSZXR1cm5UeXBlOmdldHRlclJldHVyblR5cGUsZ2V0dGVyOnJlcXVpcmVGdW5jdGlvbihnZXR0ZXJTaWduYXR1cmUsZ2V0dGVyKSxnZXR0ZXJDb250ZXh0OmdldHRlckNvbnRleHQsc2V0dGVyQXJndW1lbnRUeXBlOnNldHRlckFyZ3VtZW50VHlwZSxzZXR0ZXI6cmVxdWlyZUZ1bmN0aW9uKHNldHRlclNpZ25hdHVyZSxzZXR0ZXIpLHNldHRlckNvbnRleHQ6c2V0dGVyQ29udGV4dH0pfWZ1bmN0aW9uIF9fZW1iaW5kX2ZpbmFsaXplX3ZhbHVlX2FycmF5KHJhd1R1cGxlVHlwZSl7dmFyIHJlZz10dXBsZVJlZ2lzdHJhdGlvbnNbcmF3VHVwbGVUeXBlXTtkZWxldGUgdHVwbGVSZWdpc3RyYXRpb25zW3Jhd1R1cGxlVHlwZV07dmFyIGVsZW1lbnRzPXJlZy5lbGVtZW50czt2YXIgZWxlbWVudHNMZW5ndGg9ZWxlbWVudHMubGVuZ3RoO3ZhciBlbGVtZW50VHlwZXM9ZWxlbWVudHMubWFwKChmdW5jdGlvbihlbHQpe3JldHVybiBlbHQuZ2V0dGVyUmV0dXJuVHlwZX0pKS5jb25jYXQoZWxlbWVudHMubWFwKChmdW5jdGlvbihlbHQpe3JldHVybiBlbHQuc2V0dGVyQXJndW1lbnRUeXBlfSkpKTt2YXIgcmF3Q29uc3RydWN0b3I9cmVnLnJhd0NvbnN0cnVjdG9yO3ZhciByYXdEZXN0cnVjdG9yPXJlZy5yYXdEZXN0cnVjdG9yO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtyYXdUdXBsZVR5cGVdLGVsZW1lbnRUeXBlcywoZnVuY3Rpb24oZWxlbWVudFR5cGVzKXtlbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlbHQsaSl7dmFyIGdldHRlclJldHVyblR5cGU9ZWxlbWVudFR5cGVzW2ldO3ZhciBnZXR0ZXI9ZWx0LmdldHRlcjt2YXIgZ2V0dGVyQ29udGV4dD1lbHQuZ2V0dGVyQ29udGV4dDt2YXIgc2V0dGVyQXJndW1lbnRUeXBlPWVsZW1lbnRUeXBlc1tpK2VsZW1lbnRzTGVuZ3RoXTt2YXIgc2V0dGVyPWVsdC5zZXR0ZXI7dmFyIHNldHRlckNvbnRleHQ9ZWx0LnNldHRlckNvbnRleHQ7ZWx0LnJlYWQ9KGZ1bmN0aW9uKHB0cil7cmV0dXJuIGdldHRlclJldHVyblR5cGVbImZyb21XaXJlVHlwZSJdKGdldHRlcihnZXR0ZXJDb250ZXh0LHB0cikpfSk7ZWx0LndyaXRlPShmdW5jdGlvbihwdHIsbyl7dmFyIGRlc3RydWN0b3JzPVtdO3NldHRlcihzZXR0ZXJDb250ZXh0LHB0cixzZXR0ZXJBcmd1bWVudFR5cGVbInRvV2lyZVR5cGUiXShkZXN0cnVjdG9ycyxvKSk7cnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpfSl9KSk7cmV0dXJuW3tuYW1lOnJlZy5uYW1lLCJmcm9tV2lyZVR5cGUiOihmdW5jdGlvbihwdHIpe3ZhciBydj1uZXcgQXJyYXkoZWxlbWVudHNMZW5ndGgpO2Zvcih2YXIgaT0wO2k8ZWxlbWVudHNMZW5ndGg7KytpKXtydltpXT1lbGVtZW50c1tpXS5yZWFkKHB0cil9cmF3RGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7aWYoZWxlbWVudHNMZW5ndGghPT1vLmxlbmd0aCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW5jb3JyZWN0IG51bWJlciBvZiB0dXBsZSBlbGVtZW50cyBmb3IgIityZWcubmFtZSsiOiBleHBlY3RlZD0iK2VsZW1lbnRzTGVuZ3RoKyIsIGFjdHVhbD0iK28ubGVuZ3RoKX12YXIgcHRyPXJhd0NvbnN0cnVjdG9yKCk7Zm9yKHZhciBpPTA7aTxlbGVtZW50c0xlbmd0aDsrK2kpe2VsZW1lbnRzW2ldLndyaXRlKHB0cixvW2ldKX1pZihkZXN0cnVjdG9ycyE9PW51bGwpe2Rlc3RydWN0b3JzLnB1c2gocmF3RGVzdHJ1Y3RvcixwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246cmF3RGVzdHJ1Y3Rvcn1dfSkpfXZhciBzdHJ1Y3RSZWdpc3RyYXRpb25zPXt9O2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3ZhbHVlX29iamVjdChyYXdUeXBlLG5hbWUsY29uc3RydWN0b3JTaWduYXR1cmUscmF3Q29uc3RydWN0b3IsZGVzdHJ1Y3RvclNpZ25hdHVyZSxyYXdEZXN0cnVjdG9yKXtzdHJ1Y3RSZWdpc3RyYXRpb25zW3Jhd1R5cGVdPXtuYW1lOnJlYWRMYXRpbjFTdHJpbmcobmFtZSkscmF3Q29uc3RydWN0b3I6cmVxdWlyZUZ1bmN0aW9uKGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yKSxyYXdEZXN0cnVjdG9yOnJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpLGZpZWxkczpbXX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdmFsdWVfb2JqZWN0X2ZpZWxkKHN0cnVjdFR5cGUsZmllbGROYW1lLGdldHRlclJldHVyblR5cGUsZ2V0dGVyU2lnbmF0dXJlLGdldHRlcixnZXR0ZXJDb250ZXh0LHNldHRlckFyZ3VtZW50VHlwZSxzZXR0ZXJTaWduYXR1cmUsc2V0dGVyLHNldHRlckNvbnRleHQpe3N0cnVjdFJlZ2lzdHJhdGlvbnNbc3RydWN0VHlwZV0uZmllbGRzLnB1c2goe2ZpZWxkTmFtZTpyZWFkTGF0aW4xU3RyaW5nKGZpZWxkTmFtZSksZ2V0dGVyUmV0dXJuVHlwZTpnZXR0ZXJSZXR1cm5UeXBlLGdldHRlcjpyZXF1aXJlRnVuY3Rpb24oZ2V0dGVyU2lnbmF0dXJlLGdldHRlciksZ2V0dGVyQ29udGV4dDpnZXR0ZXJDb250ZXh0LHNldHRlckFyZ3VtZW50VHlwZTpzZXR0ZXJBcmd1bWVudFR5cGUsc2V0dGVyOnJlcXVpcmVGdW5jdGlvbihzZXR0ZXJTaWduYXR1cmUsc2V0dGVyKSxzZXR0ZXJDb250ZXh0OnNldHRlckNvbnRleHR9KX1mdW5jdGlvbiBfX2VtYmluZF9maW5hbGl6ZV92YWx1ZV9vYmplY3Qoc3RydWN0VHlwZSl7dmFyIHJlZz1zdHJ1Y3RSZWdpc3RyYXRpb25zW3N0cnVjdFR5cGVdO2RlbGV0ZSBzdHJ1Y3RSZWdpc3RyYXRpb25zW3N0cnVjdFR5cGVdO3ZhciByYXdDb25zdHJ1Y3Rvcj1yZWcucmF3Q29uc3RydWN0b3I7dmFyIHJhd0Rlc3RydWN0b3I9cmVnLnJhd0Rlc3RydWN0b3I7dmFyIGZpZWxkUmVjb3Jkcz1yZWcuZmllbGRzO3ZhciBmaWVsZFR5cGVzPWZpZWxkUmVjb3Jkcy5tYXAoKGZ1bmN0aW9uKGZpZWxkKXtyZXR1cm4gZmllbGQuZ2V0dGVyUmV0dXJuVHlwZX0pKS5jb25jYXQoZmllbGRSZWNvcmRzLm1hcCgoZnVuY3Rpb24oZmllbGQpe3JldHVybiBmaWVsZC5zZXR0ZXJBcmd1bWVudFR5cGV9KSkpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtzdHJ1Y3RUeXBlXSxmaWVsZFR5cGVzLChmdW5jdGlvbihmaWVsZFR5cGVzKXt2YXIgZmllbGRzPXt9O2ZpZWxkUmVjb3Jkcy5mb3JFYWNoKChmdW5jdGlvbihmaWVsZCxpKXt2YXIgZmllbGROYW1lPWZpZWxkLmZpZWxkTmFtZTt2YXIgZ2V0dGVyUmV0dXJuVHlwZT1maWVsZFR5cGVzW2ldO3ZhciBnZXR0ZXI9ZmllbGQuZ2V0dGVyO3ZhciBnZXR0ZXJDb250ZXh0PWZpZWxkLmdldHRlckNvbnRleHQ7dmFyIHNldHRlckFyZ3VtZW50VHlwZT1maWVsZFR5cGVzW2krZmllbGRSZWNvcmRzLmxlbmd0aF07dmFyIHNldHRlcj1maWVsZC5zZXR0ZXI7dmFyIHNldHRlckNvbnRleHQ9ZmllbGQuc2V0dGVyQ29udGV4dDtmaWVsZHNbZmllbGROYW1lXT17cmVhZDooZnVuY3Rpb24ocHRyKXtyZXR1cm4gZ2V0dGVyUmV0dXJuVHlwZVsiZnJvbVdpcmVUeXBlIl0oZ2V0dGVyKGdldHRlckNvbnRleHQscHRyKSl9KSx3cml0ZTooZnVuY3Rpb24ocHRyLG8pe3ZhciBkZXN0cnVjdG9ycz1bXTtzZXR0ZXIoc2V0dGVyQ29udGV4dCxwdHIsc2V0dGVyQXJndW1lbnRUeXBlWyJ0b1dpcmVUeXBlIl0oZGVzdHJ1Y3RvcnMsbykpO3J1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKX0pfX0pKTtyZXR1cm5be25hbWU6cmVnLm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHB0cil7dmFyIHJ2PXt9O2Zvcih2YXIgaSBpbiBmaWVsZHMpe3J2W2ldPWZpZWxkc1tpXS5yZWFkKHB0cil9cmF3RGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7Zm9yKHZhciBmaWVsZE5hbWUgaW4gZmllbGRzKXtpZighKGZpZWxkTmFtZSBpbiBvKSl7dGhyb3cgbmV3IFR5cGVFcnJvcigiTWlzc2luZyBmaWVsZCIpfX12YXIgcHRyPXJhd0NvbnN0cnVjdG9yKCk7Zm9yKGZpZWxkTmFtZSBpbiBmaWVsZHMpe2ZpZWxkc1tmaWVsZE5hbWVdLndyaXRlKHB0cixvW2ZpZWxkTmFtZV0pfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChyYXdEZXN0cnVjdG9yLHB0cil9cmV0dXJuIHB0cn0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOnNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyLGRlc3RydWN0b3JGdW5jdGlvbjpyYXdEZXN0cnVjdG9yfV19KSl9dmFyIGdlbmVyaWNQb2ludGVyVG9XaXJlVHlwZT0oZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsaGFuZGxlKXtpZihoYW5kbGU9PT1udWxsKXtpZih0aGlzLmlzUmVmZXJlbmNlKXt0aHJvd0JpbmRpbmdFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCAiK3RoaXMubmFtZSl9aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7dmFyIHB0cj10aGlzLnJhd0NvbnN0cnVjdG9yKCk7aWYoZGVzdHJ1Y3RvcnMhPT1udWxsKXtkZXN0cnVjdG9ycy5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixwdHIpfXJldHVybiBwdHJ9ZWxzZXtyZXR1cm4gMH19aWYoIWhhbmRsZS4kJCl7dGhyb3dCaW5kaW5nRXJyb3IoJ0Nhbm5vdCBwYXNzICInK19lbWJpbmRfcmVwcihoYW5kbGUpKyciIGFzIGEgJyt0aGlzLm5hbWUpfWlmKCFoYW5kbGUuJCQucHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgIit0aGlzLm5hbWUpfWlmKCF0aGlzLmlzQ29uc3QmJmhhbmRsZS4kJC5wdHJUeXBlLmlzQ29uc3Qpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlICIrKGhhbmRsZS4kJC5zbWFydFB0clR5cGU/aGFuZGxlLiQkLnNtYXJ0UHRyVHlwZS5uYW1lOmhhbmRsZS4kJC5wdHJUeXBlLm5hbWUpKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpfXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO2lmKHRoaXMuaXNTbWFydFBvaW50ZXIpe2lmKHVuZGVmaW5lZD09PWhhbmRsZS4kJC5zbWFydFB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIil9c3dpdGNoKHRoaXMuc2hhcmluZ1BvbGljeSl7Y2FzZSAwOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyfWVsc2V7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIisoaGFuZGxlLiQkLnNtYXJ0UHRyVHlwZT9oYW5kbGUuJCQuc21hcnRQdHJUeXBlLm5hbWU6aGFuZGxlLiQkLnB0clR5cGUubmFtZSkrIiB0byBwYXJhbWV0ZXIgdHlwZSAiK3RoaXMubmFtZSl9YnJlYWs7Y2FzZSAxOnB0cj1oYW5kbGUuJCQuc21hcnRQdHI7YnJlYWs7Y2FzZSAyOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyfWVsc2V7dmFyIGNsb25lZEhhbmRsZT1oYW5kbGVbImNsb25lIl0oKTtwdHI9dGhpcy5yYXdTaGFyZShwdHIsX19lbXZhbF9yZWdpc3RlcigoZnVuY3Rpb24oKXtjbG9uZWRIYW5kbGVbImRlbGV0ZSJdKCl9KSkpO2lmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaCh0aGlzLnJhd0Rlc3RydWN0b3IscHRyKX19YnJlYWs7ZGVmYXVsdDp0aHJvd0JpbmRpbmdFcnJvcigiVW5zdXBwb3J0aW5nIHNoYXJpbmcgcG9saWN5Iil9fXJldHVybiBwdHJ9KTt2YXIgY29uc3ROb1NtYXJ0UHRyUmF3UG9pbnRlclRvV2lyZVR5cGU9KGZ1bmN0aW9uKGRlc3RydWN0b3JzLGhhbmRsZSl7aWYoaGFuZGxlPT09bnVsbCl7aWYodGhpcy5pc1JlZmVyZW5jZSl7dGhyb3dCaW5kaW5nRXJyb3IoIm51bGwgaXMgbm90IGEgdmFsaWQgIit0aGlzLm5hbWUpfXJldHVybiAwfWlmKCFoYW5kbGUuJCQpe3Rocm93QmluZGluZ0Vycm9yKCdDYW5ub3QgcGFzcyAiJytfZW1iaW5kX3JlcHIoaGFuZGxlKSsnIiBhcyBhICcrdGhpcy5uYW1lKX1pZighaGFuZGxlLiQkLnB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKX12YXIgaGFuZGxlQ2xhc3M9aGFuZGxlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBwdHI9dXBjYXN0UG9pbnRlcihoYW5kbGUuJCQucHRyLGhhbmRsZUNsYXNzLHRoaXMucmVnaXN0ZXJlZENsYXNzKTtyZXR1cm4gcHRyfSk7dmFyIG5vbkNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlPShmdW5jdGlvbihkZXN0cnVjdG9ycyxoYW5kbGUpe2lmKGhhbmRsZT09PW51bGwpe2lmKHRoaXMuaXNSZWZlcmVuY2Upe3Rocm93QmluZGluZ0Vycm9yKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKX1yZXR1cm4gMH1pZighaGFuZGxlLiQkKXt0aHJvd0JpbmRpbmdFcnJvcignQ2Fubm90IHBhc3MgIicrX2VtYmluZF9yZXByKGhhbmRsZSkrJyIgYXMgYSAnK3RoaXMubmFtZSl9aWYoIWhhbmRsZS4kJC5wdHIpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAiK3RoaXMubmFtZSl9aWYoaGFuZGxlLiQkLnB0clR5cGUuaXNDb25zdCl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIitoYW5kbGUuJCQucHRyVHlwZS5uYW1lKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpfXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBwdHJ9KTtmdW5jdGlvbiBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHJlZ2lzdGVyZWRDbGFzcyxpc1JlZmVyZW5jZSxpc0NvbnN0LGlzU21hcnRQb2ludGVyLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKXt0aGlzLm5hbWU9bmFtZTt0aGlzLnJlZ2lzdGVyZWRDbGFzcz1yZWdpc3RlcmVkQ2xhc3M7dGhpcy5pc1JlZmVyZW5jZT1pc1JlZmVyZW5jZTt0aGlzLmlzQ29uc3Q9aXNDb25zdDt0aGlzLmlzU21hcnRQb2ludGVyPWlzU21hcnRQb2ludGVyO3RoaXMucG9pbnRlZVR5cGU9cG9pbnRlZVR5cGU7dGhpcy5zaGFyaW5nUG9saWN5PXNoYXJpbmdQb2xpY3k7dGhpcy5yYXdHZXRQb2ludGVlPXJhd0dldFBvaW50ZWU7dGhpcy5yYXdDb25zdHJ1Y3Rvcj1yYXdDb25zdHJ1Y3Rvcjt0aGlzLnJhd1NoYXJlPXJhd1NoYXJlO3RoaXMucmF3RGVzdHJ1Y3Rvcj1yYXdEZXN0cnVjdG9yO2lmKCFpc1NtYXJ0UG9pbnRlciYmcmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcz09PXVuZGVmaW5lZCl7aWYoaXNDb25zdCl7dGhpc1sidG9XaXJlVHlwZSJdPWNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlO3RoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGx9ZWxzZXt0aGlzWyJ0b1dpcmVUeXBlIl09bm9uQ29uc3ROb1NtYXJ0UHRyUmF3UG9pbnRlclRvV2lyZVR5cGU7dGhpcy5kZXN0cnVjdG9yRnVuY3Rpb249bnVsbH19ZWxzZXt0aGlzWyJ0b1dpcmVUeXBlIl09Z2VuZXJpY1BvaW50ZXJUb1dpcmVUeXBlfX1SZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGUuZ2V0UG9pbnRlZT1mdW5jdGlvbiBnZXRQb2ludGVlKHB0cil7aWYodGhpcy5yYXdHZXRQb2ludGVlKXtwdHI9dGhpcy5yYXdHZXRQb2ludGVlKHB0cil9cmV0dXJuIHB0cn07UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24gZGVzdHJ1Y3RvcihwdHIpe2lmKHRoaXMucmF3RGVzdHJ1Y3Rvcil7dGhpcy5yYXdEZXN0cnVjdG9yKHB0cil9fTtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbImFyZ1BhY2tBZHZhbmNlIl09ODtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl09c2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXI7UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlWyJkZWxldGVPYmplY3QiXT1mdW5jdGlvbiBkZWxldGVPYmplY3QoaGFuZGxlKXtpZihoYW5kbGUhPT1udWxsKXtoYW5kbGVbImRlbGV0ZSJdKCl9fTtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbImZyb21XaXJlVHlwZSJdPWZ1bmN0aW9uIGZyb21XaXJlVHlwZShwdHIpe3ZhciByYXdQb2ludGVyPXRoaXMuZ2V0UG9pbnRlZShwdHIpO2lmKCFyYXdQb2ludGVyKXt0aGlzLmRlc3RydWN0b3IocHRyKTtyZXR1cm4gbnVsbH12YXIgcmVnaXN0ZXJlZEluc3RhbmNlPWdldEluaGVyaXRlZEluc3RhbmNlKHRoaXMucmVnaXN0ZXJlZENsYXNzLHJhd1BvaW50ZXIpO2lmKHVuZGVmaW5lZCE9PXJlZ2lzdGVyZWRJbnN0YW5jZSl7aWYoMD09PXJlZ2lzdGVyZWRJbnN0YW5jZS4kJC5jb3VudC52YWx1ZSl7cmVnaXN0ZXJlZEluc3RhbmNlLiQkLnB0cj1yYXdQb2ludGVyO3JlZ2lzdGVyZWRJbnN0YW5jZS4kJC5zbWFydFB0cj1wdHI7cmV0dXJuIHJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpfWVsc2V7dmFyIHJ2PXJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpO3RoaXMuZGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn19ZnVuY3Rpb24gbWFrZURlZmF1bHRIYW5kbGUoKXtpZih0aGlzLmlzU21hcnRQb2ludGVyKXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMucG9pbnRlZVR5cGUscHRyOnJhd1BvaW50ZXIsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMscHRyOnB0cn0pfX12YXIgYWN0dWFsVHlwZT10aGlzLnJlZ2lzdGVyZWRDbGFzcy5nZXRBY3R1YWxUeXBlKHJhd1BvaW50ZXIpO3ZhciByZWdpc3RlcmVkUG9pbnRlclJlY29yZD1yZWdpc3RlcmVkUG9pbnRlcnNbYWN0dWFsVHlwZV07aWYoIXJlZ2lzdGVyZWRQb2ludGVyUmVjb3JkKXtyZXR1cm4gbWFrZURlZmF1bHRIYW5kbGUuY2FsbCh0aGlzKX12YXIgdG9UeXBlO2lmKHRoaXMuaXNDb25zdCl7dG9UeXBlPXJlZ2lzdGVyZWRQb2ludGVyUmVjb3JkLmNvbnN0UG9pbnRlclR5cGV9ZWxzZXt0b1R5cGU9cmVnaXN0ZXJlZFBvaW50ZXJSZWNvcmQucG9pbnRlclR5cGV9dmFyIGRwPWRvd25jYXN0UG9pbnRlcihyYXdQb2ludGVyLHRoaXMucmVnaXN0ZXJlZENsYXNzLHRvVHlwZS5yZWdpc3RlcmVkQ2xhc3MpO2lmKGRwPT09bnVsbCl7cmV0dXJuIG1ha2VEZWZhdWx0SGFuZGxlLmNhbGwodGhpcyl9aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7cmV0dXJuIG1ha2VDbGFzc0hhbmRsZSh0b1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRvVHlwZSxwdHI6ZHAsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRvVHlwZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUse3B0clR5cGU6dG9UeXBlLHB0cjpkcH0pfX07ZnVuY3Rpb24gbWFrZUNsYXNzSGFuZGxlKHByb3RvdHlwZSxyZWNvcmQpe2lmKCFyZWNvcmQucHRyVHlwZXx8IXJlY29yZC5wdHIpe3Rocm93SW50ZXJuYWxFcnJvcigibWFrZUNsYXNzSGFuZGxlIHJlcXVpcmVzIHB0ciBhbmQgcHRyVHlwZSIpfXZhciBoYXNTbWFydFB0clR5cGU9ISFyZWNvcmQuc21hcnRQdHJUeXBlO3ZhciBoYXNTbWFydFB0cj0hIXJlY29yZC5zbWFydFB0cjtpZihoYXNTbWFydFB0clR5cGUhPT1oYXNTbWFydFB0cil7dGhyb3dJbnRlcm5hbEVycm9yKCJCb3RoIHNtYXJ0UHRyVHlwZSBhbmQgc21hcnRQdHIgbXVzdCBiZSBzcGVjaWZpZWQiKX1yZWNvcmQuY291bnQ9e3ZhbHVlOjF9O3JldHVybiBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSx7JCQ6e3ZhbHVlOnJlY29yZH19KX1mdW5jdGlvbiBDbGFzc0hhbmRsZSgpe31mdW5jdGlvbiBnZXRJbnN0YW5jZVR5cGVOYW1lKGhhbmRsZSl7cmV0dXJuIGhhbmRsZS4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5uYW1lfUNsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNBbGlhc09mIl09ZnVuY3Rpb24gaXNBbGlhc09mKG90aGVyKXtpZighKHRoaXMgaW5zdGFuY2VvZiBDbGFzc0hhbmRsZSkpe3JldHVybiBmYWxzZX1pZighKG90aGVyIGluc3RhbmNlb2YgQ2xhc3NIYW5kbGUpKXtyZXR1cm4gZmFsc2V9dmFyIGxlZnRDbGFzcz10aGlzLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBsZWZ0PXRoaXMuJCQucHRyO3ZhciByaWdodENsYXNzPW90aGVyLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciByaWdodD1vdGhlci4kJC5wdHI7d2hpbGUobGVmdENsYXNzLmJhc2VDbGFzcyl7bGVmdD1sZWZ0Q2xhc3MudXBjYXN0KGxlZnQpO2xlZnRDbGFzcz1sZWZ0Q2xhc3MuYmFzZUNsYXNzfXdoaWxlKHJpZ2h0Q2xhc3MuYmFzZUNsYXNzKXtyaWdodD1yaWdodENsYXNzLnVwY2FzdChyaWdodCk7cmlnaHRDbGFzcz1yaWdodENsYXNzLmJhc2VDbGFzc31yZXR1cm4gbGVmdENsYXNzPT09cmlnaHRDbGFzcyYmbGVmdD09PXJpZ2h0fTtmdW5jdGlvbiB0aHJvd0luc3RhbmNlQWxyZWFkeURlbGV0ZWQob2JqKXt0aHJvd0JpbmRpbmdFcnJvcihnZXRJbnN0YW5jZVR5cGVOYW1lKG9iaikrIiBpbnN0YW5jZSBhbHJlYWR5IGRlbGV0ZWQiKX1DbGFzc0hhbmRsZS5wcm90b3R5cGVbImNsb25lIl09ZnVuY3Rpb24gY2xvbmUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlKXt0aGlzLiQkLmNvdW50LnZhbHVlKz0xO3JldHVybiB0aGlzfWVsc2V7dmFyIGNsb25lPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLHskJDp7dmFsdWU6c2hhbGxvd0NvcHkodGhpcy4kJCl9fSk7Y2xvbmUuJCQuY291bnQudmFsdWUrPTE7cmV0dXJuIGNsb25lfX07ZnVuY3Rpb24gcnVuRGVzdHJ1Y3RvcihoYW5kbGUpe3ZhciAkJD1oYW5kbGUuJCQ7aWYoJCQuc21hcnRQdHIpeyQkLnNtYXJ0UHRyVHlwZS5yYXdEZXN0cnVjdG9yKCQkLnNtYXJ0UHRyKX1lbHNleyQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLnJhd0Rlc3RydWN0b3IoJCQucHRyKX19Q2xhc3NIYW5kbGUucHJvdG90eXBlWyJkZWxldGUiXT1mdW5jdGlvbiBDbGFzc0hhbmRsZV9kZWxldGUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3Rocm93QmluZGluZ0Vycm9yKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIil9dGhpcy4kJC5jb3VudC52YWx1ZS09MTt2YXIgdG9EZWxldGU9MD09PXRoaXMuJCQuY291bnQudmFsdWU7aWYodG9EZWxldGUpe3J1bkRlc3RydWN0b3IodGhpcyl9aWYoIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3RoaXMuJCQuc21hcnRQdHI9dW5kZWZpbmVkO3RoaXMuJCQucHRyPXVuZGVmaW5lZH19O3ZhciBkZWxldGlvblF1ZXVlPVtdO0NsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNEZWxldGVkIl09ZnVuY3Rpb24gaXNEZWxldGVkKCl7cmV0dXJuIXRoaXMuJCQucHRyfTtDbGFzc0hhbmRsZS5wcm90b3R5cGVbImRlbGV0ZUxhdGVyIl09ZnVuY3Rpb24gZGVsZXRlTGF0ZXIoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3Rocm93QmluZGluZ0Vycm9yKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIil9ZGVsZXRpb25RdWV1ZS5wdXNoKHRoaXMpO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoPT09MSYmZGVsYXlGdW5jdGlvbil7ZGVsYXlGdW5jdGlvbihmbHVzaFBlbmRpbmdEZWxldGVzKX10aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZD10cnVlO3JldHVybiB0aGlzfTtmdW5jdGlvbiBmbHVzaFBlbmRpbmdEZWxldGVzKCl7d2hpbGUoZGVsZXRpb25RdWV1ZS5sZW5ndGgpe3ZhciBvYmo9ZGVsZXRpb25RdWV1ZS5wb3AoKTtvYmouJCQuZGVsZXRlU2NoZWR1bGVkPWZhbHNlO29ialsiZGVsZXRlIl0oKX19TW9kdWxlWyJmbHVzaFBlbmRpbmdEZWxldGVzIl09Zmx1c2hQZW5kaW5nRGVsZXRlczt2YXIgZGVsYXlGdW5jdGlvbjtNb2R1bGVbInNldERlbGF5RnVuY3Rpb24iXT1mdW5jdGlvbiBzZXREZWxheUZ1bmN0aW9uKGZuKXtkZWxheUZ1bmN0aW9uPWZuO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoJiZkZWxheUZ1bmN0aW9uKXtkZWxheUZ1bmN0aW9uKGZsdXNoUGVuZGluZ0RlbGV0ZXMpfX07ZnVuY3Rpb24gUmVnaXN0ZXJlZENsYXNzKG5hbWUsY29uc3RydWN0b3IsaW5zdGFuY2VQcm90b3R5cGUscmF3RGVzdHJ1Y3RvcixiYXNlQ2xhc3MsZ2V0QWN0dWFsVHlwZSx1cGNhc3QsZG93bmNhc3Qpe3RoaXMubmFtZT1uYW1lO3RoaXMuY29uc3RydWN0b3I9Y29uc3RydWN0b3I7dGhpcy5pbnN0YW5jZVByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt0aGlzLnJhd0Rlc3RydWN0b3I9cmF3RGVzdHJ1Y3Rvcjt0aGlzLmJhc2VDbGFzcz1iYXNlQ2xhc3M7dGhpcy5nZXRBY3R1YWxUeXBlPWdldEFjdHVhbFR5cGU7dGhpcy51cGNhc3Q9dXBjYXN0O3RoaXMuZG93bmNhc3Q9ZG93bmNhc3Q7dGhpcy5wdXJlVmlydHVhbEZ1bmN0aW9ucz1bXX1mdW5jdGlvbiBzaGFsbG93Q29weShvKXt2YXIgcnY9e307Zm9yKHZhciBrIGluIG8pe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLGspKXtydltrXT1vW2tdfX1yZXR1cm4gcnZ9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3MocmF3VHlwZSxyYXdQb2ludGVyVHlwZSxyYXdDb25zdFBvaW50ZXJUeXBlLGJhc2VDbGFzc1Jhd1R5cGUsZ2V0QWN0dWFsVHlwZVNpZ25hdHVyZSxnZXRBY3R1YWxUeXBlLHVwY2FzdFNpZ25hdHVyZSx1cGNhc3QsZG93bmNhc3RTaWduYXR1cmUsZG93bmNhc3QsbmFtZSxkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3Ipe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtnZXRBY3R1YWxUeXBlPXJlcXVpcmVGdW5jdGlvbihnZXRBY3R1YWxUeXBlU2lnbmF0dXJlLGdldEFjdHVhbFR5cGUpO2lmKHVwY2FzdCl7dXBjYXN0PXJlcXVpcmVGdW5jdGlvbih1cGNhc3RTaWduYXR1cmUsdXBjYXN0KX1pZihkb3duY2FzdCl7ZG93bmNhc3Q9cmVxdWlyZUZ1bmN0aW9uKGRvd25jYXN0U2lnbmF0dXJlLGRvd25jYXN0KX1yYXdEZXN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpO3ZhciBsZWdhbEZ1bmN0aW9uTmFtZT1tYWtlTGVnYWxGdW5jdGlvbk5hbWUobmFtZSk7ZXhwb3NlUHVibGljU3ltYm9sKGxlZ2FsRnVuY3Rpb25OYW1lLChmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNvbnN0cnVjdCAiK25hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsW2Jhc2VDbGFzc1Jhd1R5cGVdKX0pKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbcmF3VHlwZSxyYXdQb2ludGVyVHlwZSxyYXdDb25zdFBvaW50ZXJUeXBlXSxiYXNlQ2xhc3NSYXdUeXBlP1tiYXNlQ2xhc3NSYXdUeXBlXTpbXSwoZnVuY3Rpb24oYmFzZSl7YmFzZT1iYXNlWzBdO3ZhciBiYXNlQ2xhc3M7dmFyIGJhc2VQcm90b3R5cGU7aWYoYmFzZUNsYXNzUmF3VHlwZSl7YmFzZUNsYXNzPWJhc2UucmVnaXN0ZXJlZENsYXNzO2Jhc2VQcm90b3R5cGU9YmFzZUNsYXNzLmluc3RhbmNlUHJvdG90eXBlfWVsc2V7YmFzZVByb3RvdHlwZT1DbGFzc0hhbmRsZS5wcm90b3R5cGV9dmFyIGNvbnN0cnVjdG9yPWNyZWF0ZU5hbWVkRnVuY3Rpb24obGVnYWxGdW5jdGlvbk5hbWUsKGZ1bmN0aW9uKCl7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpIT09aW5zdGFuY2VQcm90b3R5cGUpe3Rocm93IG5ldyBCaW5kaW5nRXJyb3IoIlVzZSAnbmV3JyB0byBjb25zdHJ1Y3QgIituYW1lKX1pZih1bmRlZmluZWQ9PT1yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keSl7dGhyb3cgbmV3IEJpbmRpbmdFcnJvcihuYW1lKyIgaGFzIG5vIGFjY2Vzc2libGUgY29uc3RydWN0b3IiKX12YXIgYm9keT1yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmd1bWVudHMubGVuZ3RoXTtpZih1bmRlZmluZWQ9PT1ib2R5KXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJUcmllZCB0byBpbnZva2UgY3RvciBvZiAiK25hbWUrIiB3aXRoIGludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCIrYXJndW1lbnRzLmxlbmd0aCsiKSAtIGV4cGVjdGVkICgiK09iamVjdC5rZXlzKHJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KS50b1N0cmluZygpKyIpIHBhcmFtZXRlcnMgaW5zdGVhZCEiKX1yZXR1cm4gYm9keS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSk7dmFyIGluc3RhbmNlUHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYmFzZVByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmNvbnN0cnVjdG9yfX0pO2NvbnN0cnVjdG9yLnByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt2YXIgcmVnaXN0ZXJlZENsYXNzPW5ldyBSZWdpc3RlcmVkQ2xhc3MobmFtZSxjb25zdHJ1Y3RvcixpbnN0YW5jZVByb3RvdHlwZSxyYXdEZXN0cnVjdG9yLGJhc2VDbGFzcyxnZXRBY3R1YWxUeXBlLHVwY2FzdCxkb3duY2FzdCk7dmFyIHJlZmVyZW5jZUNvbnZlcnRlcj1uZXcgUmVnaXN0ZXJlZFBvaW50ZXIobmFtZSxyZWdpc3RlcmVkQ2xhc3MsdHJ1ZSxmYWxzZSxmYWxzZSk7dmFyIHBvaW50ZXJDb252ZXJ0ZXI9bmV3IFJlZ2lzdGVyZWRQb2ludGVyKG5hbWUrIioiLHJlZ2lzdGVyZWRDbGFzcyxmYWxzZSxmYWxzZSxmYWxzZSk7dmFyIGNvbnN0UG9pbnRlckNvbnZlcnRlcj1uZXcgUmVnaXN0ZXJlZFBvaW50ZXIobmFtZSsiIGNvbnN0KiIscmVnaXN0ZXJlZENsYXNzLGZhbHNlLHRydWUsZmFsc2UpO3JlZ2lzdGVyZWRQb2ludGVyc1tyYXdUeXBlXT17cG9pbnRlclR5cGU6cG9pbnRlckNvbnZlcnRlcixjb25zdFBvaW50ZXJUeXBlOmNvbnN0UG9pbnRlckNvbnZlcnRlcn07cmVwbGFjZVB1YmxpY1N5bWJvbChsZWdhbEZ1bmN0aW9uTmFtZSxjb25zdHJ1Y3Rvcik7cmV0dXJuW3JlZmVyZW5jZUNvbnZlcnRlcixwb2ludGVyQ29udmVydGVyLGNvbnN0UG9pbnRlckNvbnZlcnRlcl19KSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IocmF3Q2xhc3NUeXBlLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLGludm9rZXIscmF3Q29uc3RydWN0b3Ipe3ZhciByYXdBcmdUeXBlcz1oZWFwMzJWZWN0b3JUb0FycmF5KGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcik7aW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxpbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSwoZnVuY3Rpb24oY2xhc3NUeXBlKXtjbGFzc1R5cGU9Y2xhc3NUeXBlWzBdO3ZhciBodW1hbk5hbWU9ImNvbnN0cnVjdG9yICIrY2xhc3NUeXBlLm5hbWU7aWYodW5kZWZpbmVkPT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KXtjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHk9W119aWYodW5kZWZpbmVkIT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgY29uc3RydWN0b3JzIHdpdGggaWRlbnRpY2FsIG51bWJlciBvZiBwYXJhbWV0ZXJzICgiKyhhcmdDb3VudC0xKSsiKSBmb3IgY2xhc3MgJyIrY2xhc3NUeXBlLm5hbWUrIichIE92ZXJsb2FkIHJlc29sdXRpb24gaXMgY3VycmVudGx5IG9ubHkgcGVyZm9ybWVkIHVzaW5nIHRoZSBwYXJhbWV0ZXIgY291bnQsIG5vdCBhY3R1YWwgdHlwZSBpbmZvISIpfWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmdDb3VudC0xXT1mdW5jdGlvbiB1bmJvdW5kVHlwZUhhbmRsZXIoKXt0aHJvd1VuYm91bmRUeXBlRXJyb3IoIkNhbm5vdCBjb25zdHJ1Y3QgIitjbGFzc1R5cGUubmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixyYXdBcmdUeXBlcyl9O3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLHJhd0FyZ1R5cGVzLChmdW5jdGlvbihhcmdUeXBlcyl7Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdPWZ1bmN0aW9uIGNvbnN0cnVjdG9yX2JvZHkoKXtpZihhcmd1bWVudHMubGVuZ3RoIT09YXJnQ291bnQtMSl7dGhyb3dCaW5kaW5nRXJyb3IoaHVtYW5OYW1lKyIgY2FsbGVkIHdpdGggIithcmd1bWVudHMubGVuZ3RoKyIgYXJndW1lbnRzLCBleHBlY3RlZCAiKyhhcmdDb3VudC0xKSl9dmFyIGRlc3RydWN0b3JzPVtdO3ZhciBhcmdzPW5ldyBBcnJheShhcmdDb3VudCk7YXJnc1swXT1yYXdDb25zdHJ1Y3Rvcjtmb3IodmFyIGk9MTtpPGFyZ0NvdW50OysraSl7YXJnc1tpXT1hcmdUeXBlc1tpXVsidG9XaXJlVHlwZSJdKGRlc3RydWN0b3JzLGFyZ3VtZW50c1tpLTFdKX12YXIgcHRyPWludm9rZXIuYXBwbHkobnVsbCxhcmdzKTtydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyk7cmV0dXJuIGFyZ1R5cGVzWzBdWyJmcm9tV2lyZVR5cGUiXShwdHIpfTtyZXR1cm5bXX0pKTtyZXR1cm5bXX0pKX1mdW5jdGlvbiBkb3duY2FzdFBvaW50ZXIocHRyLHB0ckNsYXNzLGRlc2lyZWRDbGFzcyl7aWYocHRyQ2xhc3M9PT1kZXNpcmVkQ2xhc3Mpe3JldHVybiBwdHJ9aWYodW5kZWZpbmVkPT09ZGVzaXJlZENsYXNzLmJhc2VDbGFzcyl7cmV0dXJuIG51bGx9dmFyIHJ2PWRvd25jYXN0UG9pbnRlcihwdHIscHRyQ2xhc3MsZGVzaXJlZENsYXNzLmJhc2VDbGFzcyk7aWYocnY9PT1udWxsKXtyZXR1cm4gbnVsbH1yZXR1cm4gZGVzaXJlZENsYXNzLmRvd25jYXN0KHJ2KX1mdW5jdGlvbiB1cGNhc3RQb2ludGVyKHB0cixwdHJDbGFzcyxkZXNpcmVkQ2xhc3Mpe3doaWxlKHB0ckNsYXNzIT09ZGVzaXJlZENsYXNzKXtpZighcHRyQ2xhc3MudXBjYXN0KXt0aHJvd0JpbmRpbmdFcnJvcigiRXhwZWN0ZWQgbnVsbCBvciBpbnN0YW5jZSBvZiAiK2Rlc2lyZWRDbGFzcy5uYW1lKyIsIGdvdCBhbiBpbnN0YW5jZSBvZiAiK3B0ckNsYXNzLm5hbWUpfXB0cj1wdHJDbGFzcy51cGNhc3QocHRyKTtwdHJDbGFzcz1wdHJDbGFzcy5iYXNlQ2xhc3N9cmV0dXJuIHB0cn1mdW5jdGlvbiB2YWxpZGF0ZVRoaXModGhpc18sY2xhc3NUeXBlLGh1bWFuTmFtZSl7aWYoISh0aGlzXyBpbnN0YW5jZW9mIE9iamVjdCkpe3Rocm93QmluZGluZ0Vycm9yKGh1bWFuTmFtZSsnIHdpdGggaW52YWxpZCAidGhpcyI6ICcrdGhpc18pfWlmKCEodGhpc18gaW5zdGFuY2VvZiBjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yKSl7dGhyb3dCaW5kaW5nRXJyb3IoaHVtYW5OYW1lKycgaW5jb21wYXRpYmxlIHdpdGggInRoaXMiIG9mIHR5cGUgJyt0aGlzXy5jb25zdHJ1Y3Rvci5uYW1lKX1pZighdGhpc18uJCQucHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiY2Fubm90IGNhbGwgZW1zY3JpcHRlbiBiaW5kaW5nIG1ldGhvZCAiK2h1bWFuTmFtZSsiIG9uIGRlbGV0ZWQgb2JqZWN0Iil9cmV0dXJuIHVwY2FzdFBvaW50ZXIodGhpc18uJCQucHRyLHRoaXNfLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLGNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uKHJhd0NsYXNzVHlwZSxtZXRob2ROYW1lLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIsY29udGV4dCxpc1B1cmVWaXJ0dWFsKXt2YXIgcmF3QXJnVHlwZXM9aGVhcDMyVmVjdG9yVG9BcnJheShhcmdDb3VudCxyYXdBcmdUeXBlc0FkZHIpO21ldGhvZE5hbWU9cmVhZExhdGluMVN0cmluZyhtZXRob2ROYW1lKTtyYXdJbnZva2VyPXJlcXVpcmVGdW5jdGlvbihpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtyYXdDbGFzc1R5cGVdLChmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrbWV0aG9kTmFtZTtpZihpc1B1cmVWaXJ0dWFsKXtjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLnB1cmVWaXJ0dWFsRnVuY3Rpb25zLnB1c2gobWV0aG9kTmFtZSl9ZnVuY3Rpb24gdW5ib3VuZFR5cGVzSGFuZGxlcigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIitodW1hbk5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIscmF3QXJnVHlwZXMpfXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBtZXRob2Q9cHJvdG9bbWV0aG9kTmFtZV07aWYodW5kZWZpbmVkPT09bWV0aG9kfHx1bmRlZmluZWQ9PT1tZXRob2Qub3ZlcmxvYWRUYWJsZSYmbWV0aG9kLmNsYXNzTmFtZSE9PWNsYXNzVHlwZS5uYW1lJiZtZXRob2QuYXJnQ291bnQ9PT1hcmdDb3VudC0yKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTI7dW5ib3VuZFR5cGVzSGFuZGxlci5jbGFzc05hbWU9Y2xhc3NUeXBlLm5hbWU7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcn1lbHNle2Vuc3VyZU92ZXJsb2FkVGFibGUocHJvdG8sbWV0aG9kTmFtZSxodW1hbk5hbWUpO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMl09dW5ib3VuZFR5cGVzSGFuZGxlcn13aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcywoZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBtZW1iZXJGdW5jdGlvbj1jcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsY2xhc3NUeXBlLHJhd0ludm9rZXIsY29udGV4dCk7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7cHJvdG9bbWV0aG9kTmFtZV09bWVtYmVyRnVuY3Rpb259ZWxzZXtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlW2FyZ0NvdW50LTJdPW1lbWJlckZ1bmN0aW9ufXJldHVybltdfSkpO3JldHVybltdfSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX3Byb3BlcnR5KGNsYXNzVHlwZSxmaWVsZE5hbWUsZ2V0dGVyUmV0dXJuVHlwZSxnZXR0ZXJTaWduYXR1cmUsZ2V0dGVyLGdldHRlckNvbnRleHQsc2V0dGVyQXJndW1lbnRUeXBlLHNldHRlclNpZ25hdHVyZSxzZXR0ZXIsc2V0dGVyQ29udGV4dCl7ZmllbGROYW1lPXJlYWRMYXRpbjFTdHJpbmcoZmllbGROYW1lKTtnZXR0ZXI9cmVxdWlyZUZ1bmN0aW9uKGdldHRlclNpZ25hdHVyZSxnZXR0ZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtjbGFzc1R5cGVdLChmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrZmllbGROYW1lO3ZhciBkZXNjPXtnZXQ6KGZ1bmN0aW9uKCl7dGhyb3dVbmJvdW5kVHlwZUVycm9yKCJDYW5ub3QgYWNjZXNzICIraHVtYW5OYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLFtnZXR0ZXJSZXR1cm5UeXBlLHNldHRlckFyZ3VtZW50VHlwZV0pfSksZW51bWVyYWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfTtpZihzZXR0ZXIpe2Rlc2Muc2V0PShmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGFjY2VzcyAiK2h1bWFuTmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixbZ2V0dGVyUmV0dXJuVHlwZSxzZXR0ZXJBcmd1bWVudFR5cGVdKX0pfWVsc2V7ZGVzYy5zZXQ9KGZ1bmN0aW9uKHYpe3Rocm93QmluZGluZ0Vycm9yKGh1bWFuTmFtZSsiIGlzIGEgcmVhZC1vbmx5IHByb3BlcnR5Iil9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoY2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxmaWVsZE5hbWUsZGVzYyk7d2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQoW10sc2V0dGVyP1tnZXR0ZXJSZXR1cm5UeXBlLHNldHRlckFyZ3VtZW50VHlwZV06W2dldHRlclJldHVyblR5cGVdLChmdW5jdGlvbih0eXBlcyl7dmFyIGdldHRlclJldHVyblR5cGU9dHlwZXNbMF07dmFyIGRlc2M9e2dldDooZnVuY3Rpb24oKXt2YXIgcHRyPXZhbGlkYXRlVGhpcyh0aGlzLGNsYXNzVHlwZSxodW1hbk5hbWUrIiBnZXR0ZXIiKTtyZXR1cm4gZ2V0dGVyUmV0dXJuVHlwZVsiZnJvbVdpcmVUeXBlIl0oZ2V0dGVyKGdldHRlckNvbnRleHQscHRyKSl9KSxlbnVtZXJhYmxlOnRydWV9O2lmKHNldHRlcil7c2V0dGVyPXJlcXVpcmVGdW5jdGlvbihzZXR0ZXJTaWduYXR1cmUsc2V0dGVyKTt2YXIgc2V0dGVyQXJndW1lbnRUeXBlPXR5cGVzWzFdO2Rlc2Muc2V0PShmdW5jdGlvbih2KXt2YXIgcHRyPXZhbGlkYXRlVGhpcyh0aGlzLGNsYXNzVHlwZSxodW1hbk5hbWUrIiBzZXR0ZXIiKTt2YXIgZGVzdHJ1Y3RvcnM9W107c2V0dGVyKHNldHRlckNvbnRleHQscHRyLHNldHRlckFyZ3VtZW50VHlwZVsidG9XaXJlVHlwZSJdKGRlc3RydWN0b3JzLHYpKTtydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyl9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoY2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxmaWVsZE5hbWUsZGVzYyk7cmV0dXJuW119KSk7cmV0dXJuW119KSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY2xhc3NfZnVuY3Rpb24ocmF3Q2xhc3NUeXBlLG1ldGhvZE5hbWUsYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyLGludm9rZXJTaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIHJhd0FyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTttZXRob2ROYW1lPXJlYWRMYXRpbjFTdHJpbmcobWV0aG9kTmFtZSk7cmF3SW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxyYXdJbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSwoZnVuY3Rpb24oY2xhc3NUeXBlKXtjbGFzc1R5cGU9Y2xhc3NUeXBlWzBdO3ZhciBodW1hbk5hbWU9Y2xhc3NUeXBlLm5hbWUrIi4iK21ldGhvZE5hbWU7ZnVuY3Rpb24gdW5ib3VuZFR5cGVzSGFuZGxlcigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIitodW1hbk5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIscmF3QXJnVHlwZXMpfXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yO2lmKHVuZGVmaW5lZD09PXByb3RvW21ldGhvZE5hbWVdKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTE7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcn1lbHNle2Vuc3VyZU92ZXJsb2FkVGFibGUocHJvdG8sbWV0aG9kTmFtZSxodW1hbk5hbWUpO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMV09dW5ib3VuZFR5cGVzSGFuZGxlcn13aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcywoZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBpbnZva2VyQXJnc0FycmF5PVthcmdUeXBlc1swXSxudWxsXS5jb25jYXQoYXJnVHlwZXMuc2xpY2UoMSkpO3ZhciBmdW5jPWNyYWZ0SW52b2tlckZ1bmN0aW9uKGh1bWFuTmFtZSxpbnZva2VyQXJnc0FycmF5LG51bGwscmF3SW52b2tlcixmbik7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7cHJvdG9bbWV0aG9kTmFtZV09ZnVuY31lbHNle3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMV09ZnVuY31yZXR1cm5bXX0pKTtyZXR1cm5bXX0pKX1mdW5jdGlvbiBfX2VtYmluZF9jcmVhdGVfaW5oZXJpdGluZ19jb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvck5hbWUsd3JhcHBlclR5cGUscHJvcGVydGllcyl7Y29uc3RydWN0b3JOYW1lPXJlYWRMYXRpbjFTdHJpbmcoY29uc3RydWN0b3JOYW1lKTt3cmFwcGVyVHlwZT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUod3JhcHBlclR5cGUsIndyYXBwZXIiKTtwcm9wZXJ0aWVzPXJlcXVpcmVIYW5kbGUocHJvcGVydGllcyk7dmFyIGFycmF5U2xpY2U9W10uc2xpY2U7dmFyIHJlZ2lzdGVyZWRDbGFzcz13cmFwcGVyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHdyYXBwZXJQcm90b3R5cGU9cmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBiYXNlQ2xhc3M9cmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzczt2YXIgYmFzZUNsYXNzUHJvdG90eXBlPWJhc2VDbGFzcy5pbnN0YW5jZVByb3RvdHlwZTt2YXIgYmFzZUNvbnN0cnVjdG9yPXJlZ2lzdGVyZWRDbGFzcy5iYXNlQ2xhc3MuY29uc3RydWN0b3I7dmFyIGN0b3I9Y3JlYXRlTmFtZWRGdW5jdGlvbihjb25zdHJ1Y3Rvck5hbWUsKGZ1bmN0aW9uKCl7cmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcy5wdXJlVmlydHVhbEZ1bmN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbihuYW1lKXtpZih0aGlzW25hbWVdPT09YmFzZUNsYXNzUHJvdG90eXBlW25hbWVdKXt0aHJvdyBuZXcgUHVyZVZpcnR1YWxFcnJvcigiUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uICIrbmFtZSsiIG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gSmF2YVNjcmlwdCIpfX0pLmJpbmQodGhpcykpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJfX3BhcmVudCIse3ZhbHVlOndyYXBwZXJQcm90b3R5cGV9KTt0aGlzLl9fY29uc3RydWN0LmFwcGx5KHRoaXMsYXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cykpfSkpO3dyYXBwZXJQcm90b3R5cGUuX19jb25zdHJ1Y3Q9ZnVuY3Rpb24gX19jb25zdHJ1Y3QoKXtpZih0aGlzPT09d3JhcHBlclByb3RvdHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3MgY29ycmVjdCAndGhpcycgdG8gX19jb25zdHJ1Y3QiKX12YXIgaW5uZXI9YmFzZUNvbnN0cnVjdG9yLmltcGxlbWVudC5hcHBseSh1bmRlZmluZWQsW3RoaXNdLmNvbmNhdChhcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO3ZhciAkJD1pbm5lci4kJDtpbm5lci5ub3RpZnlPbkRlc3RydWN0aW9uKCk7JCQucHJlc2VydmVQb2ludGVyT25EZWxldGU9dHJ1ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiJCQiLHt2YWx1ZTokJH0pO3JlZ2lzdGVySW5oZXJpdGVkSW5zdGFuY2UocmVnaXN0ZXJlZENsYXNzLCQkLnB0cix0aGlzKX07d3JhcHBlclByb3RvdHlwZS5fX2Rlc3RydWN0PWZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKXtpZih0aGlzPT09d3JhcHBlclByb3RvdHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3MgY29ycmVjdCAndGhpcycgdG8gX19kZXN0cnVjdCIpfXVucmVnaXN0ZXJJbmhlcml0ZWRJbnN0YW5jZShyZWdpc3RlcmVkQ2xhc3MsdGhpcy4kJC5wdHIpfTtjdG9yLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHdyYXBwZXJQcm90b3R5cGUpO2Zvcih2YXIgcCBpbiBwcm9wZXJ0aWVzKXtjdG9yLnByb3RvdHlwZVtwXT1wcm9wZXJ0aWVzW3BdfXJldHVybiBfX2VtdmFsX3JlZ2lzdGVyKGN0b3IpfXZhciBjaGFyXzA9IjAiLmNoYXJDb2RlQXQoMCk7dmFyIGNoYXJfOT0iOSIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBtYWtlTGVnYWxGdW5jdGlvbk5hbWUobmFtZSl7bmFtZT1uYW1lLnJlcGxhY2UoL1teYS16QS1aMC05X10vZywiJCIpO3ZhciBmPW5hbWUuY2hhckNvZGVBdCgwKTtpZihmPj1jaGFyXzAmJmY8PWNoYXJfOSl7cmV0dXJuIl8iK25hbWV9ZWxzZXtyZXR1cm4gbmFtZX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc21hcnRfcHRyKHJhd1R5cGUscmF3UG9pbnRlZVR5cGUsbmFtZSxzaGFyaW5nUG9saWN5LGdldFBvaW50ZWVTaWduYXR1cmUscmF3R2V0UG9pbnRlZSxjb25zdHJ1Y3RvclNpZ25hdHVyZSxyYXdDb25zdHJ1Y3RvcixzaGFyZVNpZ25hdHVyZSxyYXdTaGFyZSxkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3Ipe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyYXdHZXRQb2ludGVlPXJlcXVpcmVGdW5jdGlvbihnZXRQb2ludGVlU2lnbmF0dXJlLHJhd0dldFBvaW50ZWUpO3Jhd0NvbnN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihjb25zdHJ1Y3RvclNpZ25hdHVyZSxyYXdDb25zdHJ1Y3Rvcik7cmF3U2hhcmU9cmVxdWlyZUZ1bmN0aW9uKHNoYXJlU2lnbmF0dXJlLHJhd1NoYXJlKTtyYXdEZXN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtyYXdUeXBlXSxbcmF3UG9pbnRlZVR5cGVdLChmdW5jdGlvbihwb2ludGVlVHlwZSl7cG9pbnRlZVR5cGU9cG9pbnRlZVR5cGVbMF07dmFyIHJlZ2lzdGVyZWRQb2ludGVyPW5ldyBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHBvaW50ZWVUeXBlLnJlZ2lzdGVyZWRDbGFzcyxmYWxzZSxmYWxzZSx0cnVlLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKTtyZXR1cm5bcmVnaXN0ZXJlZFBvaW50ZXJdfSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2VudW0ocmF3VHlwZSxuYW1lLHNpemUsaXNTaWduZWQpe3ZhciBzaGlmdD1nZXRTaGlmdEZyb21TaXplKHNpemUpO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtmdW5jdGlvbiBjb25zdHJ1Y3Rvcigpe31jb25zdHJ1Y3Rvci52YWx1ZXM9e307cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSxjb25zdHJ1Y3Rvcjpjb25zdHJ1Y3RvciwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IudmFsdWVzW2NdfSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyxjKXtyZXR1cm4gYy52YWx1ZX0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LGlzU2lnbmVkKSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLGNvbnN0cnVjdG9yKX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9lbnVtX3ZhbHVlKHJhd0VudW1UeXBlLG5hbWUsZW51bVZhbHVlKXt2YXIgZW51bVR5cGU9cmVxdWlyZVJlZ2lzdGVyZWRUeXBlKHJhd0VudW1UeXBlLCJlbnVtIik7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3ZhciBFbnVtPWVudW1UeXBlLmNvbnN0cnVjdG9yO3ZhciBWYWx1ZT1PYmplY3QuY3JlYXRlKGVudW1UeXBlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx7dmFsdWU6e3ZhbHVlOmVudW1WYWx1ZX0sY29uc3RydWN0b3I6e3ZhbHVlOmNyZWF0ZU5hbWVkRnVuY3Rpb24oZW51bVR5cGUubmFtZSsiXyIrbmFtZSwoZnVuY3Rpb24oKXt9KSl9fSk7RW51bS52YWx1ZXNbZW51bVZhbHVlXT1WYWx1ZTtFbnVtW25hbWVdPVZhbHVlfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NvbnN0YW50KG5hbWUsdHlwZSx2YWx1ZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFt0eXBlXSwoZnVuY3Rpb24odHlwZSl7dHlwZT10eXBlWzBdO01vZHVsZVtuYW1lXT10eXBlWyJmcm9tV2lyZVR5cGUiXSh2YWx1ZSk7cmV0dXJuW119KSl9dmFyIE1vZHVsZT1Nb2R1bGV8fHt9O3ZhciBfZW12YWxfaGFuZGxlX2FycmF5PVt7fV07dmFyIF9lbXZhbF9mcmVlX2xpc3Q9W107TW9kdWxlLmNvdW50X2VtdmFsX2hhbmRsZXM9KGZ1bmN0aW9uKCl7dmFyIGNvdW50PTA7Zm9yKHZhciBpPTE7aTxfZW12YWxfaGFuZGxlX2FycmF5Lmxlbmd0aDsrK2kpe2lmKF9lbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpeysrY291bnR9fXJldHVybiBjb3VudH0pO01vZHVsZS5nZXRfZmlyc3RfZW12YWw9KGZ1bmN0aW9uKCl7Zm9yKHZhciBpPTE7aTxfZW12YWxfaGFuZGxlX2FycmF5Lmxlbmd0aDsrK2kpe2lmKF9lbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpe3JldHVybiBfZW12YWxfaGFuZGxlX2FycmF5W2ldfX1yZXR1cm4gbnVsbH0pO3ZhciBfZW12YWxfc3ltYm9scz17fTtmdW5jdGlvbiBfX2VtdmFsX3JlZ2lzdGVyX3N5bWJvbChhZGRyZXNzKXtfZW12YWxfc3ltYm9sc1thZGRyZXNzXT1yZWFkTGF0aW4xU3RyaW5nKGFkZHJlc3MpfWZ1bmN0aW9uIGdldFN0cmluZ09yU3ltYm9sKGFkZHJlc3Mpe3ZhciBzeW1ib2w9X2VtdmFsX3N5bWJvbHNbYWRkcmVzc107aWYoc3ltYm9sPT09dW5kZWZpbmVkKXtyZXR1cm4gcmVhZExhdGluMVN0cmluZyhhZGRyZXNzKX1lbHNle3JldHVybiBzeW1ib2x9fWZ1bmN0aW9uIHJlcXVpcmVIYW5kbGUoaGFuZGxlKXtpZighaGFuZGxlKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHVzZSBkZWxldGVkIHZhbC4gaGFuZGxlID0gIitoYW5kbGUpfXJldHVybiBfZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV0udmFsdWV9ZnVuY3Rpb24gX19lbXZhbF9yZWdpc3Rlcih2YWx1ZSl7dmFyIGhhbmRsZT1fZW12YWxfZnJlZV9saXN0Lmxlbmd0aD9fZW12YWxfZnJlZV9saXN0LnBvcCgpOl9lbXZhbF9oYW5kbGVfYXJyYXkubGVuZ3RoO19lbXZhbF9oYW5kbGVfYXJyYXlbaGFuZGxlXT17cmVmY291bnQ6MSx2YWx1ZTp2YWx1ZX07cmV0dXJuIGhhbmRsZX1mdW5jdGlvbiBfX2VtdmFsX2luY3JlZihoYW5kbGUpe2lmKGhhbmRsZSl7X2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50Kz0xfX1mdW5jdGlvbiBfX2VtdmFsX2RlY3JlZihoYW5kbGUpe2lmKGhhbmRsZSYmMD09PS0tX2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50KXtfZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV09dW5kZWZpbmVkO19lbXZhbF9mcmVlX2xpc3QucHVzaChoYW5kbGUpfX1mdW5jdGlvbiBfX2VtdmFsX3J1bl9kZXN0cnVjdG9ycyhoYW5kbGUpe3ZhciBkZXN0cnVjdG9ycz1fZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV0udmFsdWU7cnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpO19fZW12YWxfZGVjcmVmKGhhbmRsZSl9ZnVuY3Rpb24gX19lbXZhbF9uZXdfYXJyYXkoKXtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihbXSl9ZnVuY3Rpb24gX19lbXZhbF9uZXdfb2JqZWN0KCl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIoe30pfWZ1bmN0aW9uIF9fZW12YWxfdW5kZWZpbmVkKCl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodW5kZWZpbmVkKX1mdW5jdGlvbiBfX2VtdmFsX251bGwoKXtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihudWxsKX1mdW5jdGlvbiBfX2VtdmFsX25ld19jc3RyaW5nKHYpe3JldHVybiBfX2VtdmFsX3JlZ2lzdGVyKGdldFN0cmluZ09yU3ltYm9sKHYpKX1mdW5jdGlvbiBfX2VtdmFsX3Rha2VfdmFsdWUodHlwZSxhcmd2KXt0eXBlPXJlcXVpcmVSZWdpc3RlcmVkVHlwZSh0eXBlLCJfZW12YWxfdGFrZV92YWx1ZSIpO3ZhciB2PXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJndik7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodil9dmFyIF9fbmV3ZXJzPXt9O2Z1bmN0aW9uIGNyYWZ0RW12YWxBbGxvY2F0b3IoYXJnQ291bnQpe3ZhciBhcmdzTGlzdD0iIjtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7YXJnc0xpc3QrPShpIT09MD8iLCAiOiIiKSsiYXJnIitpfXZhciBmdW5jdGlvbkJvZHk9InJldHVybiBmdW5jdGlvbiBlbXZhbF9hbGxvY2F0b3JfIithcmdDb3VudCsiKGNvbnN0cnVjdG9yLCBhcmdUeXBlcywgYXJncykge1xuIjtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7ZnVuY3Rpb25Cb2R5Kz0idmFyIGFyZ1R5cGUiK2krIiA9IHJlcXVpcmVSZWdpc3RlcmVkVHlwZShIRUFQMzJbKGFyZ1R5cGVzID4+IDIpICsgIitpKyddLCAicGFyYW1ldGVyICcraSsnIik7XG4nKyJ2YXIgYXJnIitpKyIgPSBhcmdUeXBlIitpKyIucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyk7XG4iKyJhcmdzICs9IGFyZ1R5cGUiK2krIi5hcmdQYWNrQWR2YW5jZTtcbiJ9ZnVuY3Rpb25Cb2R5Kz0idmFyIG9iaiA9IG5ldyBjb25zdHJ1Y3RvcigiK2FyZ3NMaXN0KyIpO1xuIisicmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIob2JqKTtcbiIrIn1cbiI7cmV0dXJuKG5ldyBGdW5jdGlvbigicmVxdWlyZVJlZ2lzdGVyZWRUeXBlIiwiSEVBUDMyIiwiX19lbXZhbF9yZWdpc3RlciIsZnVuY3Rpb25Cb2R5KSkocmVxdWlyZVJlZ2lzdGVyZWRUeXBlLEhFQVAzMixfX2VtdmFsX3JlZ2lzdGVyKX1mdW5jdGlvbiBfX2VtdmFsX25ldyhoYW5kbGUsYXJnQ291bnQsYXJnVHlwZXMsYXJncyl7aGFuZGxlPXJlcXVpcmVIYW5kbGUoaGFuZGxlKTt2YXIgbmV3ZXI9X19uZXdlcnNbYXJnQ291bnRdO2lmKCFuZXdlcil7bmV3ZXI9Y3JhZnRFbXZhbEFsbG9jYXRvcihhcmdDb3VudCk7X19uZXdlcnNbYXJnQ291bnRdPW5ld2VyfXJldHVybiBuZXdlcihoYW5kbGUsYXJnVHlwZXMsYXJncyl9dmFyIGdsb2JhbD0oZnVuY3Rpb24oKXtyZXR1cm4gRnVuY3Rpb259KSgpKCJyZXR1cm4gdGhpcyIpKCk7ZnVuY3Rpb24gX19lbXZhbF9nZXRfZ2xvYmFsKG5hbWUpe25hbWU9Z2V0U3RyaW5nT3JTeW1ib2wobmFtZSk7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIoZ2xvYmFsW25hbWVdKX1mdW5jdGlvbiBfX2VtdmFsX2dldF9tb2R1bGVfcHJvcGVydHkobmFtZSl7bmFtZT1nZXRTdHJpbmdPclN5bWJvbChuYW1lKTtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihNb2R1bGVbbmFtZV0pfWZ1bmN0aW9uIF9fZW12YWxfZ2V0X3Byb3BlcnR5KGhhbmRsZSxrZXkpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7a2V5PXJlcXVpcmVIYW5kbGUoa2V5KTtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihoYW5kbGVba2V5XSl9ZnVuY3Rpb24gX19lbXZhbF9zZXRfcHJvcGVydHkoaGFuZGxlLGtleSx2YWx1ZSl7aGFuZGxlPXJlcXVpcmVIYW5kbGUoaGFuZGxlKTtrZXk9cmVxdWlyZUhhbmRsZShrZXkpO3ZhbHVlPXJlcXVpcmVIYW5kbGUodmFsdWUpO2hhbmRsZVtrZXldPXZhbHVlfWZ1bmN0aW9uIF9fZW12YWxfYXMoaGFuZGxlLHJldHVyblR5cGUsZGVzdHJ1Y3RvcnNSZWYpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7cmV0dXJuVHlwZT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmV0dXJuVHlwZSwiZW12YWw6OmFzIik7dmFyIGRlc3RydWN0b3JzPVtdO3ZhciByZD1fX2VtdmFsX3JlZ2lzdGVyKGRlc3RydWN0b3JzKTtIRUFQMzJbZGVzdHJ1Y3RvcnNSZWY+PjJdPXJkO3JldHVybiByZXR1cm5UeXBlWyJ0b1dpcmVUeXBlIl0oZGVzdHJ1Y3RvcnMsaGFuZGxlKX1mdW5jdGlvbiBfX2VtdmFsX2NhbGwoaGFuZGxlLGFyZ0NvdW50LGFyZ1R5cGVzLGFyZ3Ype2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7dmFyIHR5cGVzPWxvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgYXJncz1uZXcgQXJyYXkoYXJnQ291bnQpO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQ7KytpKXt2YXIgdHlwZT10eXBlc1tpXTthcmdzW2ldPXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJndik7YXJndis9dHlwZS5hcmdQYWNrQWR2YW5jZX12YXIgcnY9aGFuZGxlLmFwcGx5KHVuZGVmaW5lZCxhcmdzKTtyZXR1cm4gX19lbXZhbF9yZWdpc3Rlcihydil9ZnVuY3Rpb24gbG9va3VwVHlwZXMoYXJnQ291bnQsYXJnVHlwZXMsYXJnV2lyZVR5cGVzKXt2YXIgYT1uZXcgQXJyYXkoYXJnQ291bnQpO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQ7KytpKXthW2ldPXJlcXVpcmVSZWdpc3RlcmVkVHlwZShIRUFQMzJbKGFyZ1R5cGVzPj4yKStpXSwicGFyYW1ldGVyICIraSl9cmV0dXJuIGF9ZnVuY3Rpb24gYWxsb2NhdGVEZXN0cnVjdG9ycyhkZXN0cnVjdG9yc1JlZil7dmFyIGRlc3RydWN0b3JzPVtdO0hFQVAzMltkZXN0cnVjdG9yc1JlZj4+Ml09X19lbXZhbF9yZWdpc3RlcihkZXN0cnVjdG9ycyk7cmV0dXJuIGRlc3RydWN0b3JzfXZhciBtZXRob2RDYWxsZXJzPVt1bmRlZmluZWRdO2Z1bmN0aW9uIGFkZE1ldGhvZENhbGxlcihjYWxsZXIpe3ZhciBpZD1tZXRob2RDYWxsZXJzLmxlbmd0aDttZXRob2RDYWxsZXJzLnB1c2goY2FsbGVyKTtyZXR1cm4gaWR9ZnVuY3Rpb24gX19lbXZhbF9nZXRfbWV0aG9kX2NhbGxlcihhcmdDb3VudCxhcmdUeXBlcyl7dmFyIHR5cGVzPWxvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgcmV0VHlwZT10eXBlc1swXTt2YXIgc2lnbmF0dXJlTmFtZT1yZXRUeXBlLm5hbWUrIl8kIit0eXBlcy5zbGljZSgxKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWV9KSkuam9pbigiXyIpKyIkIjt2YXIgcGFyYW1zPVsicmV0VHlwZSJdO3ZhciBhcmdzPVtyZXRUeXBlXTt2YXIgYXJnc0xpc3Q9IiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7YXJnc0xpc3QrPShpIT09MD8iLCAiOiIiKSsiYXJnIitpO3BhcmFtcy5wdXNoKCJhcmdUeXBlIitpKTthcmdzLnB1c2godHlwZXNbMStpXSl9dmFyIGZ1bmN0aW9uQm9keT0icmV0dXJuIGZ1bmN0aW9uIChoYW5kbGUsIG5hbWUsIGRlc3RydWN0b3JzLCBhcmdzKSB7XG4iO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMTsrK2kpe2Z1bmN0aW9uQm9keSs9IiAgICB2YXIgYXJnIitpKyIgPSBhcmdUeXBlIitpKyIucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyk7XG4iKyIgICAgYXJncyArPSBhcmdUeXBlIitpKyIuYXJnUGFja0FkdmFuY2U7XG4ifWZ1bmN0aW9uQm9keSs9IiAgICB2YXIgcnYgPSBoYW5kbGVbbmFtZV0oIithcmdzTGlzdCsiKTtcbiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7aWYodHlwZXNbaSsxXVsiZGVsZXRlT2JqZWN0Il0pe2Z1bmN0aW9uQm9keSs9IiAgICBhcmdUeXBlIitpKyIuZGVsZXRlT2JqZWN0KGFyZyIraSsiKTtcbiJ9fWZ1bmN0aW9uQm9keSs9IiAgICByZXR1cm4gcmV0VHlwZS50b1dpcmVUeXBlKGRlc3RydWN0b3JzLCBydik7XG4iKyJ9O1xuIjtwYXJhbXMucHVzaChmdW5jdGlvbkJvZHkpO3ZhciBpbnZva2VyRnVuY3Rpb249bmV3XyhGdW5jdGlvbixwYXJhbXMpLmFwcGx5KG51bGwsYXJncyk7cmV0dXJuIGFkZE1ldGhvZENhbGxlcihjcmVhdGVOYW1lZEZ1bmN0aW9uKHNpZ25hdHVyZU5hbWUsaW52b2tlckZ1bmN0aW9uKSl9ZnVuY3Rpb24gX19lbXZhbF9jYWxsX21ldGhvZChjYWxsZXIsaGFuZGxlLG1ldGhvZE5hbWUsZGVzdHJ1Y3RvcnNSZWYsYXJncyl7Y2FsbGVyPW1ldGhvZENhbGxlcnNbY2FsbGVyXTtoYW5kbGU9cmVxdWlyZUhhbmRsZShoYW5kbGUpO21ldGhvZE5hbWU9Z2V0U3RyaW5nT3JTeW1ib2wobWV0aG9kTmFtZSk7cmV0dXJuIGNhbGxlcihoYW5kbGUsbWV0aG9kTmFtZSxhbGxvY2F0ZURlc3RydWN0b3JzKGRlc3RydWN0b3JzUmVmKSxhcmdzKX1mdW5jdGlvbiBfX2VtdmFsX2hhc19mdW5jdGlvbihoYW5kbGUsbmFtZSxjbGFzc1R5cGUpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7bmFtZT1nZXRTdHJpbmdPclN5bWJvbChuYW1lKTtjbGFzc1R5cGU9cmVxdWlyZVJlZ2lzdGVyZWRUeXBlKGNsYXNzVHlwZSwiY2xhc3Mgd3JhcHBlciBmaWx0ZXIiKTt2YXIgZmlsdGVyPWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGVbbmFtZV07cmV0dXJuIGhhbmRsZVtuYW1lXWluc3RhbmNlb2YgRnVuY3Rpb24mJihmaWx0ZXI9PT11bmRlZmluZWR8fGhhbmRsZVtuYW1lXSE9PWZpbHRlcil9ZnVuY3Rpb24gX19lbXZhbF90eXBlb2YoaGFuZGxlKXtoYW5kbGU9cmVxdWlyZUhhbmRsZShoYW5kbGUpO3JldHVybiBfX2VtdmFsX3JlZ2lzdGVyKHR5cGVvZiBoYW5kbGUpfWlmKE1vZHVsZVsicHJlSW5pdCJdKXtpZih0eXBlb2YgTW9kdWxlWyJwcmVJbml0Il09PSJmdW5jdGlvbiIpTW9kdWxlWyJwcmVJbml0Il09W01vZHVsZVsicHJlSW5pdCJdXTt3aGlsZShNb2R1bGVbInByZUluaXQiXS5sZW5ndGg+MCl7TW9kdWxlWyJwcmVJbml0Il0ucG9wKCkoKX19dmFyIHNob3VsZFJ1bk5vdz10cnVlO2lmKE1vZHVsZVsibm9Jbml0aWFsUnVuIl0pe3Nob3VsZFJ1bk5vdz1mYWxzZX1ydW4oKQoKCgoKLy8gbGF6LWxvYWRlci13b3JrZXIuanMKLy8KCi8vaW1wb3J0U2NyaXB0cygnbGF6LXBlcmYuanMnKTsKCnZhciBpbnN0YW5jZSA9IG51bGw7IC8vIGxhei1wZXJmIGluc3RhbmNlCgpmdW5jdGlvbiByZWFkQXMoYnVmLCBUeXBlLCBvZmZzZXQsIGNvdW50KSB7Cgljb3VudCA9IChjb3VudCA9PT0gdW5kZWZpbmVkIHx8IGNvdW50ID09PSAwID8gMSA6IGNvdW50KTsKCXZhciBzdWIgPSBidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBUeXBlLkJZVEVTX1BFUl9FTEVNRU5UICogY291bnQpOwoKCXZhciByID0gbmV3IFR5cGUoc3ViKTsKCWlmIChjb3VudCA9PT0gdW5kZWZpbmVkIHx8IGNvdW50ID09PSAxKQoJCXJldHVybiByWzBdOwoKCXZhciByZXQgPSBbXTsKCWZvciAodmFyIGkgPSAwIDsgaSA8IGNvdW50IDsgaSArKykgewoJCXJldC5wdXNoKHJbaV0pOwoJfQoKCXJldHVybiByZXQ7Cn0KCmZ1bmN0aW9uIHBhcnNlTEFTSGVhZGVyKGFycmF5YnVmZmVyKSB7Cgl2YXIgbyA9IHt9OwoKCW8ucG9pbnRzT2Zmc2V0ID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50MzJBcnJheSwgMzIqMyk7CglvLnBvaW50c0Zvcm1hdElkID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50OEFycmF5LCAzMiozKzgpOwoJby5wb2ludHNTdHJ1Y3RTaXplID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50MTZBcnJheSwgMzIqMys4KzEpOwoJby5wb2ludHNDb3VudCA9IHJlYWRBcyhhcnJheWJ1ZmZlciwgVWludDMyQXJyYXksIDMyKjMgKyAxMSk7CgoKCXZhciBzdGFydCA9IDMyKjMgKyAzNTsKCW8uc2NhbGUgPSByZWFkQXMoYXJyYXlidWZmZXIsIEZsb2F0NjRBcnJheSwgc3RhcnQsIDMpOyBzdGFydCArPSAyNDsgLy8gOCozCglvLm9mZnNldCA9IHJlYWRBcyhhcnJheWJ1ZmZlciwgRmxvYXQ2NEFycmF5LCBzdGFydCwgMyk7IHN0YXJ0ICs9IDI0OwoKCXZhciBib3VuZHMgPSByZWFkQXMoYXJyYXlidWZmZXIsIEZsb2F0NjRBcnJheSwgc3RhcnQsIDYpOyBzdGFydCArPSA0ODsgLy8gOCo2OwoJby5tYXhzID0gW2JvdW5kc1swXSwgYm91bmRzWzJdLCBib3VuZHNbNF1dOwoJby5taW5zID0gW2JvdW5kc1sxXSwgYm91bmRzWzNdLCBib3VuZHNbNV1dOwoKCXJldHVybiBvOwp9CgpmdW5jdGlvbiBoYW5kbGVFdmVudChtc2cpIHsKCXN3aXRjaChtc2cudHlwZSkgewoJCWNhc2UgIm9wZW4iOgoJCQl0cnkgewoJCQkJaW5zdGFuY2UgPSBuZXcgTW9kdWxlLkxBU1ppcCgpOwoJCQkJdmFyIGFiSW50ID0gbmV3IFVpbnQ4QXJyYXkobXNnLmFycmF5YnVmZmVyKTsKCQkJCXZhciBidWYgPSBNb2R1bGUuX21hbGxvYyhtc2cuYXJyYXlidWZmZXIuYnl0ZUxlbmd0aCk7CgoJCQkJaW5zdGFuY2UuYXJyYXlidWZmZXIgPSBtc2cuYXJyYXlidWZmZXI7CgkJCQlpbnN0YW5jZS5idWYgPSBidWY7CgkJCQlNb2R1bGUuSEVBUFU4LnNldChhYkludCwgYnVmKTsKCQkJCWluc3RhbmNlLm9wZW4oYnVmLCBtc2cuYXJyYXlidWZmZXIuYnl0ZUxlbmd0aCk7CgoJCQkJaW5zdGFuY2UucmVhZE9mZnNldCA9IDA7CgoJCQkJcG9zdE1lc3NhZ2UoeyB0eXBlOiAib3BlbiIsIHN0YXR1czogMX0pOwoJCQl9CgkJCWNhdGNoKGUpIHsKCQkJCXBvc3RNZXNzYWdlKHsgdHlwZTogIm9wZW4iLCBzdGF0dXM6IDAsIGRldGFpbHM6IGUgfSk7CgkJCX0KCQkJYnJlYWs7CgoJCWNhc2UgImhlYWRlciI6CgkJCWlmICghaW5zdGFuY2UpCgkJCQl0aHJvdyBuZXcgRXJyb3IoIllvdSBuZWVkIHRvIG9wZW4gdGhlIGZpbGUgYmVmb3JlIHRyeWluZyB0byByZWFkIGhlYWRlciIpOwoKCgoJCQl2YXIgaGVhZGVyID0gcGFyc2VMQVNIZWFkZXIoaW5zdGFuY2UuYXJyYXlidWZmZXIpOwoJCQloZWFkZXIucG9pbnRzRm9ybWF0SWQgJj0gMHgzZjsKCQkJaW5zdGFuY2UuaGVhZGVyID0gaGVhZGVyOwoJCQlwb3N0TWVzc2FnZSh7dHlwZTogImhlYWRlciIsIHN0YXR1czogMSwgaGVhZGVyOiBoZWFkZXJ9KTsKCQkJYnJlYWs7CgoJCWNhc2UgInJlYWQiOgoJCQlpZiAoIWluc3RhbmNlKQoJCQkJdGhyb3cgbmV3IEVycm9yKCJZb3UgbmVlZCB0byBvcGVuIHRoZSBmaWxlIGJlZm9yZSB0cnlpbmcgdG8gcmVhZCBzdHVmZiIpOwoKCQkJdmFyIHN0YXJ0ID0gbXNnLnN0YXJ0LCBjb3VudCA9IG1zZy5jb3VudCwgc2tpcCA9IG1zZy5za2lwOwoJCQl2YXIgbyA9IGluc3RhbmNlOwoKCQkJaWYgKCFvLmhlYWRlcikKCQkJCXRocm93IG5ldyBFcnJvcigiWW91IG5lZWQgdG8gcXVlcnkgaGVhZGVyIGJlZm9yZSByZWFkaW5nLCBJIG1haW50YWluIHN0YXRlIHRoYXQgd2F5LCBzb3JyeSA6KCIpOwoKCQkJdmFyIHBvaW50c1RvUmVhZCA9IE1hdGgubWluKGNvdW50ICogc2tpcCwgby5oZWFkZXIucG9pbnRzQ291bnQgLSBvLnJlYWRPZmZzZXQpOwoJCQl2YXIgYnVmZmVyU2l6ZSA9IE1hdGguY2VpbChwb2ludHNUb1JlYWQgLyBza2lwKTsKCQkJdmFyIHBvaW50c1JlYWQgPSAwOwoKCQkJdmFyIHRoaXNfYnVmID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyU2l6ZSAqIG8uaGVhZGVyLnBvaW50c1N0cnVjdFNpemUpOwoJCQl2YXIgYnVmX3JlYWQgPSBNb2R1bGUuX21hbGxvYyhvLmhlYWRlci5wb2ludHNTdHJ1Y3RTaXplKTsKCQkJZm9yICh2YXIgaSA9IDAgOyBpIDwgcG9pbnRzVG9SZWFkIDsgaSArKykgewoJCQkJby5nZXRQb2ludChidWZfcmVhZCk7CgoJCQkJaWYgKGkgJSBza2lwID09PSAwKSB7CgkJCQkJdmFyIGEgPSBuZXcgVWludDhBcnJheShNb2R1bGUuSEVBUFU4LmJ1ZmZlciwgYnVmX3JlYWQsIG8uaGVhZGVyLnBvaW50c1N0cnVjdFNpemUpOwoJCQkJCXRoaXNfYnVmLnNldChhLCBwb2ludHNSZWFkICogby5oZWFkZXIucG9pbnRzU3RydWN0U2l6ZSwgby5oZWFkZXIucG9pbnRzU3RydWN0U2l6ZSk7CgkJCQkJcG9pbnRzUmVhZCArKzsKCQkJCX0KCgkJCQlvLnJlYWRPZmZzZXQgKys7CgkJCX0KCgkJCXBvc3RNZXNzYWdlKHsKCQkJCXR5cGU6ICdoZWFkZXInLAoJCQkJc3RhdHVzOiAxLAoJCQkJYnVmZmVyOiB0aGlzX2J1Zi5idWZmZXIsCgkJCQljb3VudDogcG9pbnRzUmVhZCwKCQkJCWhhc01vcmVEYXRhOiBvLnJlYWRPZmZzZXQgPCBvLmhlYWRlci5wb2ludHNDb3VudAoJCQl9KTsKCgkJCWJyZWFrOwoKCgkJY2FzZSAiY2xvc2UiOgoJCQlpZiAoaW5zdGFuY2UgIT09IG51bGwpIHsKCQkJCWluc3RhbmNlLmRlbGV0ZSgpOwoJCQkJaW5zdGFuY2UgPSBudWxsOwoJCQl9CgkJCXBvc3RNZXNzYWdlKHsgdHlwZTogImNsb3NlIiwgc3RhdHVzOiAxfSk7CgkJCWJyZWFrOwoJfQp9Cgpvbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewoJdHJ5IHsKCQloYW5kbGVFdmVudChldmVudC5kYXRhKTsKCX0gY2F0Y2goZSkgewoJCXBvc3RNZXNzYWdlKHt0eXBlOiBldmVudC5kYXRhLnR5cGUsIHN0YXR1czogMCwgZGV0YWlsczogZX0pOwoJfQp9OwoKCg==")),Potree.workers.lasdecoder=new Potree.WorkerManager(atob("CgovL3ZhciBwb2ludEZvcm1hdFJlYWRlcnMgPSB7Ci8vCTA6IGZ1bmN0aW9uKGR2KSB7Ci8vCQlyZXR1cm4gewovLwkJCSJwb3NpdGlvbiI6IFsgZHYuZ2V0SW50MzIoMCwgdHJ1ZSksIGR2LmdldEludDMyKDQsIHRydWUpLCBkdi5nZXRJbnQzMig4LCB0cnVlKV0sCi8vCQkJImludGVuc2l0eSI6IGR2LmdldFVpbnQxNigxMiwgdHJ1ZSksCi8vCQkJImNsYXNzaWZpY2F0aW9uIjogZHYuZ2V0VWludDgoMTYsIHRydWUpCi8vCQl9OwovLwl9LAovLwkxOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKQovLwkJfTsKLy8JfSwKLy8JMjogZnVuY3Rpb24oZHYpIHsKLy8JCXJldHVybiB7Ci8vCQkJInBvc2l0aW9uIjogWyBkdi5nZXRJbnQzMigwLCB0cnVlKSwgZHYuZ2V0SW50MzIoNCwgdHJ1ZSksIGR2LmdldEludDMyKDgsIHRydWUpXSwKLy8JCQkiaW50ZW5zaXR5IjogZHYuZ2V0VWludDE2KDEyLCB0cnVlKSwKLy8JCQkiY2xhc3NpZmljYXRpb24iOiBkdi5nZXRVaW50OCgxNiwgdHJ1ZSksCi8vCQkJImNvbG9yIjogW2R2LmdldFVpbnQxNigyMCwgdHJ1ZSksIGR2LmdldFVpbnQxNigyMiwgdHJ1ZSksIGR2LmdldFVpbnQxNigyNCwgdHJ1ZSldCi8vCQl9OwovLwl9LAovLwkzOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKSwKLy8JCQkiY29sb3IiOiBbZHYuZ2V0VWludDE2KDI4LCB0cnVlKSwgZHYuZ2V0VWludDE2KDMwLCB0cnVlKSwgZHYuZ2V0VWludDE2KDMyLCB0cnVlKV0KLy8JCX07Ci8vCX0KLy99OwovLwkKLy8JCi8vIERlY29kZXMgTEFTIHJlY29yZHMgaW50byBwb2ludHMKLy8KLy92YXIgTEFTRGVjb2RlciA9IGZ1bmN0aW9uKGJ1ZmZlciwgcG9pbnRGb3JtYXRJRCwgcG9pbnRTaXplLCBwb2ludHNDb3VudCwgc2NhbGUsIG9mZnNldCkgewovLwl0aGlzLmFycmF5YiA9IGJ1ZmZlcjsKLy8JdGhpcy5kZWNvZGVyID0gcG9pbnRGb3JtYXRSZWFkZXJzW3BvaW50Rm9ybWF0SURdOwovLwl0aGlzLnBvaW50c0NvdW50ID0gcG9pbnRzQ291bnQ7Ci8vCXRoaXMucG9pbnRTaXplID0gcG9pbnRTaXplOwovLwl0aGlzLnNjYWxlID0gc2NhbGU7Ci8vCXRoaXMub2Zmc2V0ID0gb2Zmc2V0OwovL307Ci8vCi8vTEFTRGVjb2Rlci5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbihpbmRleCkgewovLwlpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucG9pbnRzQ291bnQpCi8vCQl0aHJvdyBuZXcgRXJyb3IoIlBvaW50IGluZGV4IG91dCBvZiByYW5nZSIpOwovLwovLwl2YXIgZHYgPSBuZXcgRGF0YVZpZXcodGhpcy5hcnJheWIsIGluZGV4ICogdGhpcy5wb2ludFNpemUsIHRoaXMucG9pbnRTaXplKTsKLy8JcmV0dXJuIHRoaXMuZGVjb2Rlcihkdik7Ci8vfTsKCm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KXsKCXZhciBidWZmZXIgPSBldmVudC5kYXRhLmJ1ZmZlcjsKCXZhciBudW1Qb2ludHMgPSBldmVudC5kYXRhLm51bVBvaW50czsKCXZhciBwb2ludFNpemUgPSBldmVudC5kYXRhLnBvaW50U2l6ZTsKCXZhciBwb2ludEZvcm1hdElEID0gZXZlbnQuZGF0YS5wb2ludEZvcm1hdElEOwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCXZhciBvZmZzZXQgPSBldmVudC5kYXRhLm9mZnNldDsKCXZhciBtaW5zID0gZXZlbnQuZGF0YS5taW5zOwoJdmFyIG1heHMgPSBldmVudC5kYXRhLm1heHM7Cgl2YXIgYmJPZmZzZXQgPSBldmVudC5kYXRhLmJiT2Zmc2V0OwoJCgl2YXIgdGVtcCA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKCXZhciB0ZW1wVWludDggPSBuZXcgVWludDhBcnJheSh0ZW1wKTsKCXZhciB0ZW1wVWludDE2ID0gbmV3IFVpbnQxNkFycmF5KHRlbXApOwoJdmFyIHRlbXBGbG9hdDMyID0gbmV3IEZsb2F0MzJBcnJheSh0ZW1wKTsKCXZhciB0ZW1wSW50MzIgPSBuZXcgSW50MzJBcnJheSh0ZW1wKTsKCXZhciBidWZmZXJWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKCQoJdmFyIHBCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGNCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGlCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KTsKCXZhciBjbEJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBybkJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBwc0J1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzICogMik7CgkKCXZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KHBCdWZmKTsKCXZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkFycmF5KGNCdWZmKTsKCXZhciBpbnRlbnNpdGllcyA9IG5ldyBGbG9hdDMyQXJyYXkoaUJ1ZmYpOwoJdmFyIGNsYXNzaWZpY2F0aW9ucyA9IG5ldyBVaW50OEFycmF5KGNsQnVmZik7Cgl2YXIgcmV0dXJuTnVtYmVycyA9IG5ldyBVaW50OEFycmF5KHJuQnVmZik7Cgl2YXIgcG9pbnRTb3VyY2VJRHMgPSBuZXcgVWludDE2QXJyYXkocHNCdWZmKTsKCQoJCgkvLyB0ZW1wIGFycmF5cyBzZWVtIHRvIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gRGF0YVZpZXdzCgkvLyBhdCB0aGUgbW9tZW50OiBodHRwOi8vanNwZXJmLmNvbS9kYXRhdmlldy12cy10ZW1wb3JhcnktZmxvYXQ2NGFycmF5Cglmb3IodmFyIGkgPSAwOyBpIDwgbnVtUG9pbnRzOyBpKyspewoJCgkJLy8gUE9TSVRJT04KCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzBdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMV07CgkJdGVtcFVpbnQ4WzJdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyXTsKCQl0ZW1wVWludDhbM10gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzNdOwoJCXZhciB4ID0gdGVtcEludDMyWzBdOwoJCQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrNF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs1XTsKCQl0ZW1wVWludDhbMl0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzZdOwoJCXRlbXBVaW50OFszXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrN107CgkJdmFyIHkgPSB0ZW1wSW50MzJbMF07CgkJCgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs4XTsKCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzldOwoJCXRlbXBVaW50OFsyXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTBdOwoJCXRlbXBVaW50OFszXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTFdOwoJCXZhciB6ID0gdGVtcEludDMyWzBdOwoJCQoJCXBvc2l0aW9uc1szKmkrMF0gPSB4ICogc2NhbGVbMF0gKyBvZmZzZXRbMF0gKyBiYk9mZnNldFswXTsKCQlwb3NpdGlvbnNbMyppKzFdID0geSAqIHNjYWxlWzFdICsgb2Zmc2V0WzFdICsgYmJPZmZzZXRbMV07CgkJcG9zaXRpb25zWzMqaSsyXSA9IHogKiBzY2FsZVsyXSArIG9mZnNldFsyXSArIGJiT2Zmc2V0WzJdOwoJCQoJCS8vIElOVEVOU0lUWQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTJdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTNdOwoJCXZhciBpbnRlbnNpdHkgPSB0ZW1wVWludDE2WzBdOwoJCWludGVuc2l0aWVzW2ldID0gaW50ZW5zaXR5OwoJCQoJCS8vIFJFVFVSTiBOVU1CRVIsIHN0b3JlZCBpbiB0aGUgZmlyc3QgMyBiaXRzCgkJdmFyIHJldHVybk51bWJlciA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTRdICYgNzsKCQlyZXR1cm5OdW1iZXJzW2ldID0gcmV0dXJuTnVtYmVyOwoJCQoJCS8vIENMQVNTSUZJQ0FUSU9OCgkJdmFyIGNsYXNzaWZpY2F0aW9uID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxNV07CgkJY2xhc3NpZmljYXRpb25zW2ldID0gY2xhc3NpZmljYXRpb247CgkJCgkJLy8gUE9JTlQgU09VUkNFIElECgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxOF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxOV07CgkJdmFyIHBvaW50U291cmNlSUQgPSB0ZW1wVWludDE2WzBdOwoJCXBvaW50U291cmNlSURzW2ldID0gcG9pbnRTb3VyY2VJRDsKCQkKCQkvLyBDT0xPUiwgaWYgYXZhaWxhYmxlCgkJaWYocG9pbnRGb3JtYXRJRCA9PT0gMil7CgkJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjBdOwoJCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzIxXTsKCQkJdmFyIHIgPSB0ZW1wVWludDE2WzBdOwoJCQkKCQkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyMl07CgkJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjNdOwoJCQl2YXIgZyA9IHRlbXBVaW50MTZbMF07CgkJCQoJCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzI0XTsKCQkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyNV07CgkJCXZhciBiID0gdGVtcFVpbnQxNlswXTsKCQkJCgkJCWNvbG9yc1szKmkrMF0gPSByIC8gNjU1MzY7CgkJCWNvbG9yc1szKmkrMV0gPSBnIC8gNjU1MzY7CgkJCWNvbG9yc1szKmkrMl0gPSBiIC8gNjU1MzY7CgkJfQoJfQoJCgl2YXIgbWVzc2FnZSA9IHsKCQlwb3NpdGlvbjogcEJ1ZmYsIAoJCWNvbG9yOiBjQnVmZiwgCgkJaW50ZW5zaXR5OiBpQnVmZiwKCQljbGFzc2lmaWNhdGlvbjogY2xCdWZmLAoJCXJldHVybk51bWJlcjogcm5CdWZmLAoJCXBvaW50U291cmNlSUQ6IHBzQnVmZn07CgkJCgl2YXIgdHJhbnNmZXJhYmxlcyA9IFsKCQltZXNzYWdlLnBvc2l0aW9uLAoJCW1lc3NhZ2UuY29sb3IsIAoJCW1lc3NhZ2UuaW50ZW5zaXR5LAoJCW1lc3NhZ2UuY2xhc3NpZmljYXRpb24sCgkJbWVzc2FnZS5yZXR1cm5OdW1iZXIsCgkJbWVzc2FnZS5wb2ludFNvdXJjZUlEXTsKCQkKCXBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRyYW5zZmVyYWJsZXMpOwp9Cg==")); +Potree.workers.laslaz=new Potree.WorkerManager(atob("dmFyIE1vZHVsZTtpZighTW9kdWxlKU1vZHVsZT0odHlwZW9mIE1vZHVsZSE9PSJ1bmRlZmluZWQiP01vZHVsZTpudWxsKXx8e307dmFyIG1vZHVsZU92ZXJyaWRlcz17fTtmb3IodmFyIGtleSBpbiBNb2R1bGUpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKXttb2R1bGVPdmVycmlkZXNba2V5XT1Nb2R1bGVba2V5XX19dmFyIEVOVklST05NRU5UX0lTX05PREU9dHlwZW9mIHByb2Nlc3M9PT0ib2JqZWN0IiYmdHlwZW9mIHJlcXVpcmU9PT0iZnVuY3Rpb24iO3ZhciBFTlZJUk9OTUVOVF9JU19XRUI9dHlwZW9mIHdpbmRvdz09PSJvYmplY3QiO3ZhciBFTlZJUk9OTUVOVF9JU19XT1JLRVI9dHlwZW9mIGltcG9ydFNjcmlwdHM9PT0iZnVuY3Rpb24iO3ZhciBFTlZJUk9OTUVOVF9JU19TSEVMTD0hRU5WSVJPTk1FTlRfSVNfV0VCJiYhRU5WSVJPTk1FTlRfSVNfTk9ERSYmIUVOVklST05NRU5UX0lTX1dPUktFUjtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtpZighTW9kdWxlWyJwcmludCJdKU1vZHVsZVsicHJpbnQiXT1mdW5jdGlvbiBwcmludCh4KXtwcm9jZXNzWyJzdGRvdXQiXS53cml0ZSh4KyJcbiIpfTtpZighTW9kdWxlWyJwcmludEVyciJdKU1vZHVsZVsicHJpbnRFcnIiXT1mdW5jdGlvbiBwcmludEVycih4KXtwcm9jZXNzWyJzdGRlcnIiXS53cml0ZSh4KyJcbiIpfTt2YXIgbm9kZUZTPXJlcXVpcmUoImZzIik7dmFyIG5vZGVQYXRoPXJlcXVpcmUoInBhdGgiKTtNb2R1bGVbInJlYWQiXT1mdW5jdGlvbiByZWFkKGZpbGVuYW1lLGJpbmFyeSl7ZmlsZW5hbWU9bm9kZVBhdGhbIm5vcm1hbGl6ZSJdKGZpbGVuYW1lKTt2YXIgcmV0PW5vZGVGU1sicmVhZEZpbGVTeW5jIl0oZmlsZW5hbWUpO2lmKCFyZXQmJmZpbGVuYW1lIT1ub2RlUGF0aFsicmVzb2x2ZSJdKGZpbGVuYW1lKSl7ZmlsZW5hbWU9cGF0aC5qb2luKF9fZGlybmFtZSwiLi4iLCJzcmMiLGZpbGVuYW1lKTtyZXQ9bm9kZUZTWyJyZWFkRmlsZVN5bmMiXShmaWxlbmFtZSl9aWYocmV0JiYhYmluYXJ5KXJldD1yZXQudG9TdHJpbmcoKTtyZXR1cm4gcmV0fTtNb2R1bGVbInJlYWRCaW5hcnkiXT1mdW5jdGlvbiByZWFkQmluYXJ5KGZpbGVuYW1lKXtyZXR1cm4gTW9kdWxlWyJyZWFkIl0oZmlsZW5hbWUsdHJ1ZSl9O01vZHVsZVsibG9hZCJdPWZ1bmN0aW9uIGxvYWQoZil7Z2xvYmFsRXZhbChyZWFkKGYpKX07TW9kdWxlWyJhcmd1bWVudHMiXT1wcm9jZXNzWyJhcmd2Il0uc2xpY2UoMik7bW9kdWxlWyJleHBvcnRzIl09TW9kdWxlfWVsc2UgaWYoRU5WSVJPTk1FTlRfSVNfU0hFTEwpe2lmKCFNb2R1bGVbInByaW50Il0pTW9kdWxlWyJwcmludCJdPXByaW50O2lmKHR5cGVvZiBwcmludEVyciE9InVuZGVmaW5lZCIpTW9kdWxlWyJwcmludEVyciJdPXByaW50RXJyO2lmKHR5cGVvZiByZWFkIT0idW5kZWZpbmVkIil7TW9kdWxlWyJyZWFkIl09cmVhZH1lbHNle01vZHVsZVsicmVhZCJdPWZ1bmN0aW9uIHJlYWQoKXt0aHJvdyJubyByZWFkKCkgYXZhaWxhYmxlIChqc2M/KSJ9fU1vZHVsZVsicmVhZEJpbmFyeSJdPWZ1bmN0aW9uIHJlYWRCaW5hcnkoZil7cmV0dXJuIHJlYWQoZiwiYmluYXJ5Iil9O2lmKHR5cGVvZiBzY3JpcHRBcmdzIT0idW5kZWZpbmVkIil7TW9kdWxlWyJhcmd1bWVudHMiXT1zY3JpcHRBcmdzfWVsc2UgaWYodHlwZW9mIGFyZ3VtZW50cyE9InVuZGVmaW5lZCIpe01vZHVsZVsiYXJndW1lbnRzIl09YXJndW1lbnRzfXRoaXNbIk1vZHVsZSJdPU1vZHVsZTtldmFsKCJpZiAodHlwZW9mIGdjID09PSAnZnVuY3Rpb24nICYmIGdjLnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlXScpID4gMCkgdmFyIGdjID0gdW5kZWZpbmVkIil9ZWxzZSBpZihFTlZJUk9OTUVOVF9JU19XRUJ8fEVOVklST05NRU5UX0lTX1dPUktFUil7TW9kdWxlWyJyZWFkIl09ZnVuY3Rpb24gcmVhZCh1cmwpe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7eGhyLnNlbmQobnVsbCk7cmV0dXJuIHhoci5yZXNwb25zZVRleHR9O2lmKHR5cGVvZiBhcmd1bWVudHMhPSJ1bmRlZmluZWQiKXtNb2R1bGVbImFyZ3VtZW50cyJdPWFyZ3VtZW50c31pZih0eXBlb2YgY29uc29sZSE9PSJ1bmRlZmluZWQiKXtpZighTW9kdWxlWyJwcmludCJdKU1vZHVsZVsicHJpbnQiXT1mdW5jdGlvbiBwcmludCh4KXt9O2lmKCFNb2R1bGVbInByaW50RXJyIl0pTW9kdWxlWyJwcmludEVyciJdPWZ1bmN0aW9uIHByaW50RXJyKHgpe319ZWxzZXt2YXIgVFJZX1VTRV9EVU1QPWZhbHNlO2lmKCFNb2R1bGVbInByaW50Il0pTW9kdWxlWyJwcmludCJdPVRSWV9VU0VfRFVNUCYmdHlwZW9mIGR1bXAhPT0idW5kZWZpbmVkIj8oZnVuY3Rpb24oeCl7ZHVtcCh4KX0pOihmdW5jdGlvbih4KXt9KX1pZihFTlZJUk9OTUVOVF9JU19XRUIpe3dpbmRvd1siTW9kdWxlIl09TW9kdWxlfWVsc2V7TW9kdWxlWyJsb2FkIl09aW1wb3J0U2NyaXB0c319ZWxzZXt0aHJvdyJVbmtub3duIHJ1bnRpbWUgZW52aXJvbm1lbnQuIFdoZXJlIGFyZSB3ZT8ifWZ1bmN0aW9uIGdsb2JhbEV2YWwoeCl7ZXZhbC5jYWxsKG51bGwseCl9aWYoIU1vZHVsZVsibG9hZCJdPT0idW5kZWZpbmVkIiYmTW9kdWxlWyJyZWFkIl0pe01vZHVsZVsibG9hZCJdPWZ1bmN0aW9uIGxvYWQoZil7Z2xvYmFsRXZhbChNb2R1bGVbInJlYWQiXShmKSl9fWlmKCFNb2R1bGVbInByaW50Il0pe01vZHVsZVsicHJpbnQiXT0oZnVuY3Rpb24oKXt9KX1pZighTW9kdWxlWyJwcmludEVyciJdKXtNb2R1bGVbInByaW50RXJyIl09TW9kdWxlWyJwcmludCJdfWlmKCFNb2R1bGVbImFyZ3VtZW50cyJdKXtNb2R1bGVbImFyZ3VtZW50cyJdPVtdfU1vZHVsZS5wcmludD1Nb2R1bGVbInByaW50Il07TW9kdWxlLnByaW50RXJyPU1vZHVsZVsicHJpbnRFcnIiXTtNb2R1bGVbInByZVJ1biJdPVtdO01vZHVsZVsicG9zdFJ1biJdPVtdO2Zvcih2YXIga2V5IGluIG1vZHVsZU92ZXJyaWRlcyl7aWYobW9kdWxlT3ZlcnJpZGVzLmhhc093blByb3BlcnR5KGtleSkpe01vZHVsZVtrZXldPW1vZHVsZU92ZXJyaWRlc1trZXldfX12YXIgUnVudGltZT17c2V0VGVtcFJldDA6KGZ1bmN0aW9uKHZhbHVlKXt0ZW1wUmV0MD12YWx1ZX0pLGdldFRlbXBSZXQwOihmdW5jdGlvbigpe3JldHVybiB0ZW1wUmV0MH0pLHN0YWNrU2F2ZTooZnVuY3Rpb24oKXtyZXR1cm4gU1RBQ0tUT1B9KSxzdGFja1Jlc3RvcmU6KGZ1bmN0aW9uKHN0YWNrVG9wKXtTVEFDS1RPUD1zdGFja1RvcH0pLGZvcmNlQWxpZ246KGZ1bmN0aW9uKHRhcmdldCxxdWFudHVtKXtxdWFudHVtPXF1YW50dW18fDQ7aWYocXVhbnR1bT09MSlyZXR1cm4gdGFyZ2V0O2lmKGlzTnVtYmVyKHRhcmdldCkmJmlzTnVtYmVyKHF1YW50dW0pKXtyZXR1cm4gTWF0aC5jZWlsKHRhcmdldC9xdWFudHVtKSpxdWFudHVtfWVsc2UgaWYoaXNOdW1iZXIocXVhbnR1bSkmJmlzUG93ZXJPZlR3byhxdWFudHVtKSl7cmV0dXJuIigoKCIrdGFyZ2V0KyIpKyIrKHF1YW50dW0tMSkrIikmIisgLXF1YW50dW0rIikifXJldHVybiJNYXRoLmNlaWwoKCIrdGFyZ2V0KyIpLyIrcXVhbnR1bSsiKSoiK3F1YW50dW19KSxpc051bWJlclR5cGU6KGZ1bmN0aW9uKHR5cGUpe3JldHVybiB0eXBlIGluIFJ1bnRpbWUuSU5UX1RZUEVTfHx0eXBlIGluIFJ1bnRpbWUuRkxPQVRfVFlQRVN9KSxpc1BvaW50ZXJUeXBlOmZ1bmN0aW9uIGlzUG9pbnRlclR5cGUodHlwZSl7cmV0dXJuIHR5cGVbdHlwZS5sZW5ndGgtMV09PSIqIn0saXNTdHJ1Y3RUeXBlOmZ1bmN0aW9uIGlzU3RydWN0VHlwZSh0eXBlKXtpZihpc1BvaW50ZXJUeXBlKHR5cGUpKXJldHVybiBmYWxzZTtpZihpc0FycmF5VHlwZSh0eXBlKSlyZXR1cm4gdHJ1ZTtpZigvPD9ceyA/W159XSogP1x9Pj8vLnRlc3QodHlwZSkpcmV0dXJuIHRydWU7cmV0dXJuIHR5cGVbMF09PSIlIn0sSU5UX1RZUEVTOnsiaTEiOjAsImk4IjowLCJpMTYiOjAsImkzMiI6MCwiaTY0IjowfSxGTE9BVF9UWVBFUzp7ImZsb2F0IjowLCJkb3VibGUiOjB9LG9yNjQ6KGZ1bmN0aW9uKHgseSl7dmFyIGw9eHwwfCh5fDApO3ZhciBoPShNYXRoLnJvdW5kKHgvNDI5NDk2NzI5Nil8TWF0aC5yb3VuZCh5LzQyOTQ5NjcyOTYpKSo0Mjk0OTY3Mjk2O3JldHVybiBsK2h9KSxhbmQ2NDooZnVuY3Rpb24oeCx5KXt2YXIgbD0oeHwwKSYoeXwwKTt2YXIgaD0oTWF0aC5yb3VuZCh4LzQyOTQ5NjcyOTYpJk1hdGgucm91bmQoeS80Mjk0OTY3Mjk2KSkqNDI5NDk2NzI5NjtyZXR1cm4gbCtofSkseG9yNjQ6KGZ1bmN0aW9uKHgseSl7dmFyIGw9KHh8MCleKHl8MCk7dmFyIGg9KE1hdGgucm91bmQoeC80Mjk0OTY3Mjk2KV5NYXRoLnJvdW5kKHkvNDI5NDk2NzI5NikpKjQyOTQ5NjcyOTY7cmV0dXJuIGwraH0pLGdldE5hdGl2ZVR5cGVTaXplOihmdW5jdGlvbih0eXBlKXtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6Y2FzZSJpOCI6cmV0dXJuIDE7Y2FzZSJpMTYiOnJldHVybiAyO2Nhc2UiaTMyIjpyZXR1cm4gNDtjYXNlImk2NCI6cmV0dXJuIDg7Y2FzZSJmbG9hdCI6cmV0dXJuIDQ7Y2FzZSJkb3VibGUiOnJldHVybiA4O2RlZmF1bHQ6e2lmKHR5cGVbdHlwZS5sZW5ndGgtMV09PT0iKiIpe3JldHVybiBSdW50aW1lLlFVQU5UVU1fU0laRX1lbHNlIGlmKHR5cGVbMF09PT0iaSIpe3ZhciBiaXRzPXBhcnNlSW50KHR5cGUuc3Vic3RyKDEpKTthc3NlcnQoYml0cyU4PT09MCk7cmV0dXJuIGJpdHMvOH1lbHNle3JldHVybiAwfX19fSksZ2V0TmF0aXZlRmllbGRTaXplOihmdW5jdGlvbih0eXBlKXtyZXR1cm4gTWF0aC5tYXgoUnVudGltZS5nZXROYXRpdmVUeXBlU2l6ZSh0eXBlKSxSdW50aW1lLlFVQU5UVU1fU0laRSl9KSxkZWR1cDpmdW5jdGlvbiBkZWR1cChpdGVtcyxpZGVudCl7dmFyIHNlZW49e307aWYoaWRlbnQpe3JldHVybiBpdGVtcy5maWx0ZXIoKGZ1bmN0aW9uKGl0ZW0pe2lmKHNlZW5baXRlbVtpZGVudF1dKXJldHVybiBmYWxzZTtzZWVuW2l0ZW1baWRlbnRdXT10cnVlO3JldHVybiB0cnVlfSkpfWVsc2V7cmV0dXJuIGl0ZW1zLmZpbHRlcigoZnVuY3Rpb24oaXRlbSl7aWYoc2VlbltpdGVtXSlyZXR1cm4gZmFsc2U7c2VlbltpdGVtXT10cnVlO3JldHVybiB0cnVlfSkpfX0sc2V0OmZ1bmN0aW9uIHNldCgpe3ZhciBhcmdzPXR5cGVvZiBhcmd1bWVudHNbMF09PT0ib2JqZWN0Ij9hcmd1bWVudHNbMF06YXJndW1lbnRzO3ZhciByZXQ9e307Zm9yKHZhciBpPTA7aTxhcmdzLmxlbmd0aDtpKyspe3JldFthcmdzW2ldXT0wfXJldHVybiByZXR9LFNUQUNLX0FMSUdOOjgsZ2V0QWxpZ25TaXplOihmdW5jdGlvbih0eXBlLHNpemUsdmFyYXJnKXtpZighdmFyYXJnJiYodHlwZT09Imk2NCJ8fHR5cGU9PSJkb3VibGUiKSlyZXR1cm4gODtpZighdHlwZSlyZXR1cm4gTWF0aC5taW4oc2l6ZSw4KTtyZXR1cm4gTWF0aC5taW4oc2l6ZXx8KHR5cGU/UnVudGltZS5nZXROYXRpdmVGaWVsZFNpemUodHlwZSk6MCksUnVudGltZS5RVUFOVFVNX1NJWkUpfSksY2FsY3VsYXRlU3RydWN0QWxpZ25tZW50OmZ1bmN0aW9uIGNhbGN1bGF0ZVN0cnVjdEFsaWdubWVudCh0eXBlKXt0eXBlLmZsYXRTaXplPTA7dHlwZS5hbGlnblNpemU9MDt2YXIgZGlmZnM9W107dmFyIHByZXY9LTE7dmFyIGluZGV4PTA7dHlwZS5mbGF0SW5kZXhlcz10eXBlLmZpZWxkcy5tYXAoKGZ1bmN0aW9uKGZpZWxkKXtpbmRleCsrO3ZhciBzaXplLGFsaWduU2l6ZTtpZihSdW50aW1lLmlzTnVtYmVyVHlwZShmaWVsZCl8fFJ1bnRpbWUuaXNQb2ludGVyVHlwZShmaWVsZCkpe3NpemU9UnVudGltZS5nZXROYXRpdmVUeXBlU2l6ZShmaWVsZCk7YWxpZ25TaXplPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKGZpZWxkLHNpemUpfWVsc2UgaWYoUnVudGltZS5pc1N0cnVjdFR5cGUoZmllbGQpKXtpZihmaWVsZFsxXT09PSIwIil7c2l6ZT0wO2lmKFR5cGVzLnR5cGVzW2ZpZWxkXSl7YWxpZ25TaXplPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKG51bGwsVHlwZXMudHlwZXNbZmllbGRdLmFsaWduU2l6ZSl9ZWxzZXthbGlnblNpemU9dHlwZS5hbGlnblNpemV8fFFVQU5UVU1fU0laRX19ZWxzZXtzaXplPVR5cGVzLnR5cGVzW2ZpZWxkXS5mbGF0U2l6ZTthbGlnblNpemU9UnVudGltZS5nZXRBbGlnblNpemUobnVsbCxUeXBlcy50eXBlc1tmaWVsZF0uYWxpZ25TaXplKX19ZWxzZSBpZihmaWVsZFswXT09ImIiKXtzaXplPWZpZWxkLnN1YnN0cigxKXwwO2FsaWduU2l6ZT0xfWVsc2UgaWYoZmllbGRbMF09PT0iPCIpe3NpemU9YWxpZ25TaXplPVR5cGVzLnR5cGVzW2ZpZWxkXS5mbGF0U2l6ZX1lbHNlIGlmKGZpZWxkWzBdPT09ImkiKXtzaXplPWFsaWduU2l6ZT1wYXJzZUludChmaWVsZC5zdWJzdHIoMSkpLzg7YXNzZXJ0KHNpemUlMT09PTAsImNhbm5vdCBoYW5kbGUgbm9uLWJ5dGUtc2l6ZSBmaWVsZCAiK2ZpZWxkKX1lbHNle2Fzc2VydChmYWxzZSwiaW52YWxpZCB0eXBlIGZvciBjYWxjdWxhdGVTdHJ1Y3RBbGlnbm1lbnQiKX1pZih0eXBlLnBhY2tlZClhbGlnblNpemU9MTt0eXBlLmFsaWduU2l6ZT1NYXRoLm1heCh0eXBlLmFsaWduU2l6ZSxhbGlnblNpemUpO3ZhciBjdXJyPVJ1bnRpbWUuYWxpZ25NZW1vcnkodHlwZS5mbGF0U2l6ZSxhbGlnblNpemUpO3R5cGUuZmxhdFNpemU9Y3VycitzaXplO2lmKHByZXY+PTApe2RpZmZzLnB1c2goY3Vyci1wcmV2KX1wcmV2PWN1cnI7cmV0dXJuIGN1cnJ9KSk7aWYodHlwZS5uYW1lXyYmdHlwZS5uYW1lX1swXT09PSJbIil7dHlwZS5mbGF0U2l6ZT1wYXJzZUludCh0eXBlLm5hbWVfLnN1YnN0cigxKSkqdHlwZS5mbGF0U2l6ZS8yfXR5cGUuZmxhdFNpemU9UnVudGltZS5hbGlnbk1lbW9yeSh0eXBlLmZsYXRTaXplLHR5cGUuYWxpZ25TaXplKTtpZihkaWZmcy5sZW5ndGg9PTApe3R5cGUuZmxhdEZhY3Rvcj10eXBlLmZsYXRTaXplfWVsc2UgaWYoUnVudGltZS5kZWR1cChkaWZmcykubGVuZ3RoPT0xKXt0eXBlLmZsYXRGYWN0b3I9ZGlmZnNbMF19dHlwZS5uZWVkc0ZsYXR0ZW5pbmc9dHlwZS5mbGF0RmFjdG9yIT0xO3JldHVybiB0eXBlLmZsYXRJbmRleGVzfSxnZW5lcmF0ZVN0cnVjdEluZm86KGZ1bmN0aW9uKHN0cnVjdCx0eXBlTmFtZSxvZmZzZXQpe3ZhciB0eXBlLGFsaWdubWVudDtpZih0eXBlTmFtZSl7b2Zmc2V0PW9mZnNldHx8MDt0eXBlPSh0eXBlb2YgVHlwZXM9PT0idW5kZWZpbmVkIj9SdW50aW1lLnR5cGVJbmZvOlR5cGVzLnR5cGVzKVt0eXBlTmFtZV07aWYoIXR5cGUpcmV0dXJuIG51bGw7aWYodHlwZS5maWVsZHMubGVuZ3RoIT1zdHJ1Y3QubGVuZ3RoKXtwcmludEVycigiTnVtYmVyIG9mIG5hbWVkIGZpZWxkcyBtdXN0IG1hdGNoIHRoZSB0eXBlIGZvciAiK3R5cGVOYW1lKyI6IHBvc3NpYmx5IGR1cGxpY2F0ZSBzdHJ1Y3QgbmFtZXMuIENhbm5vdCByZXR1cm4gc3RydWN0SW5mbyIpO3JldHVybiBudWxsfWFsaWdubWVudD10eXBlLmZsYXRJbmRleGVzfWVsc2V7dmFyIHR5cGU9e2ZpZWxkczpzdHJ1Y3QubWFwKChmdW5jdGlvbihpdGVtKXtyZXR1cm4gaXRlbVswXX0pKX07YWxpZ25tZW50PVJ1bnRpbWUuY2FsY3VsYXRlU3RydWN0QWxpZ25tZW50KHR5cGUpfXZhciByZXQ9e19fc2l6ZV9fOnR5cGUuZmxhdFNpemV9O2lmKHR5cGVOYW1lKXtzdHJ1Y3QuZm9yRWFjaCgoZnVuY3Rpb24oaXRlbSxpKXtpZih0eXBlb2YgaXRlbT09PSJzdHJpbmciKXtyZXRbaXRlbV09YWxpZ25tZW50W2ldK29mZnNldH1lbHNle3ZhciBrZXk7Zm9yKHZhciBrIGluIGl0ZW0pa2V5PWs7cmV0W2tleV09UnVudGltZS5nZW5lcmF0ZVN0cnVjdEluZm8oaXRlbVtrZXldLHR5cGUuZmllbGRzW2ldLGFsaWdubWVudFtpXSl9fSkpfWVsc2V7c3RydWN0LmZvckVhY2goKGZ1bmN0aW9uKGl0ZW0saSl7cmV0W2l0ZW1bMV1dPWFsaWdubWVudFtpXX0pKX1yZXR1cm4gcmV0fSksZHluQ2FsbDooZnVuY3Rpb24oc2lnLHB0cixhcmdzKXtpZihhcmdzJiZhcmdzLmxlbmd0aCl7aWYoIWFyZ3Muc3BsaWNlKWFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7YXJncy5zcGxpY2UoMCwwLHB0cik7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF8iK3NpZ10uYXBwbHkobnVsbCxhcmdzKX1lbHNle3JldHVybiBNb2R1bGVbImR5bkNhbGxfIitzaWddLmNhbGwobnVsbCxwdHIpfX0pLGZ1bmN0aW9uUG9pbnRlcnM6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGFkZEZ1bmN0aW9uOihmdW5jdGlvbihmdW5jKXtmb3IodmFyIGk9MDtpPFJ1bnRpbWUuZnVuY3Rpb25Qb2ludGVycy5sZW5ndGg7aSsrKXtpZighUnVudGltZS5mdW5jdGlvblBvaW50ZXJzW2ldKXtSdW50aW1lLmZ1bmN0aW9uUG9pbnRlcnNbaV09ZnVuYztyZXR1cm4gMiooMStpKX19dGhyb3ciRmluaXNoZWQgdXAgYWxsIHJlc2VydmVkIGZ1bmN0aW9uIHBvaW50ZXJzLiBVc2UgYSBoaWdoZXIgdmFsdWUgZm9yIFJFU0VSVkVEX0ZVTkNUSU9OX1BPSU5URVJTLiJ9KSxyZW1vdmVGdW5jdGlvbjooZnVuY3Rpb24oaW5kZXgpe1J1bnRpbWUuZnVuY3Rpb25Qb2ludGVyc1soaW5kZXgtMikvMl09bnVsbH0pLGdldEFzbUNvbnN0OihmdW5jdGlvbihjb2RlLG51bUFyZ3Mpe2lmKCFSdW50aW1lLmFzbUNvbnN0Q2FjaGUpUnVudGltZS5hc21Db25zdENhY2hlPXt9O3ZhciBmdW5jPVJ1bnRpbWUuYXNtQ29uc3RDYWNoZVtjb2RlXTtpZihmdW5jKXJldHVybiBmdW5jO3ZhciBhcmdzPVtdO2Zvcih2YXIgaT0wO2k8bnVtQXJncztpKyspe2FyZ3MucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDM2KStpKX12YXIgc291cmNlPVBvaW50ZXJfc3RyaW5naWZ5KGNvZGUpO2lmKHNvdXJjZVswXT09PSciJyl7aWYoc291cmNlLmluZGV4T2YoJyInLDEpPT09c291cmNlLmxlbmd0aC0xKXtzb3VyY2U9c291cmNlLnN1YnN0cigxLHNvdXJjZS5sZW5ndGgtMil9ZWxzZXthYm9ydCgiaW52YWxpZCBFTV9BU00gaW5wdXQgfCIrc291cmNlKyJ8LiBQbGVhc2UgdXNlIEVNX0FTTSguLmNvZGUuLikgKG5vIHF1b3Rlcykgb3IgRU1fQVNNKHsgLi5jb2RlKCQwKS4uIH0sIGlucHV0KSAodG8gaW5wdXQgdmFsdWVzKSIpfX10cnl7dmFyIGV2YWxsZWQ9ZXZhbCgiKGZ1bmN0aW9uKCIrYXJncy5qb2luKCIsIikrIil7ICIrc291cmNlKyIgfSkiKX1jYXRjaChlKXtNb2R1bGUucHJpbnRFcnIoImVycm9yIGluIGV4ZWN1dGluZyBpbmxpbmUgRU1fQVNNIGNvZGU6ICIrZSsiIG9uOiBcblxuIitzb3VyY2UrIlxuXG53aXRoIGFyZ3MgfCIrYXJncysifCAobWFrZSBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgb25lIG91dCBvZiBFTV9BU00sIEVNX0FTTV9BUkdTLCBldGMuKSIpO3Rocm93IGV9cmV0dXJuIFJ1bnRpbWUuYXNtQ29uc3RDYWNoZVtjb2RlXT1ldmFsbGVkfSksd2Fybk9uY2U6KGZ1bmN0aW9uKHRleHQpe2lmKCFSdW50aW1lLndhcm5PbmNlLnNob3duKVJ1bnRpbWUud2Fybk9uY2Uuc2hvd249e307aWYoIVJ1bnRpbWUud2Fybk9uY2Uuc2hvd25bdGV4dF0pe1J1bnRpbWUud2Fybk9uY2Uuc2hvd25bdGV4dF09MTtNb2R1bGUucHJpbnRFcnIodGV4dCl9fSksZnVuY1dyYXBwZXJzOnt9LGdldEZ1bmNXcmFwcGVyOihmdW5jdGlvbihmdW5jLHNpZyl7YXNzZXJ0KHNpZyk7aWYoIVJ1bnRpbWUuZnVuY1dyYXBwZXJzW2Z1bmNdKXtSdW50aW1lLmZ1bmNXcmFwcGVyc1tmdW5jXT1mdW5jdGlvbiBkeW5DYWxsX3dyYXBwZXIoKXtyZXR1cm4gUnVudGltZS5keW5DYWxsKHNpZyxmdW5jLGFyZ3VtZW50cyl9fXJldHVybiBSdW50aW1lLmZ1bmNXcmFwcGVyc1tmdW5jXX0pLFVURjhQcm9jZXNzb3I6KGZ1bmN0aW9uKCl7dmFyIGJ1ZmZlcj1bXTt2YXIgbmVlZGVkPTA7dGhpcy5wcm9jZXNzQ0NoYXI9KGZ1bmN0aW9uKGNvZGUpe2NvZGU9Y29kZSYyNTU7aWYoYnVmZmVyLmxlbmd0aD09MCl7aWYoKGNvZGUmMTI4KT09MCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSl9YnVmZmVyLnB1c2goY29kZSk7aWYoKGNvZGUmMjI0KT09MTkyKXtuZWVkZWQ9MX1lbHNlIGlmKChjb2RlJjI0MCk9PTIyNCl7bmVlZGVkPTJ9ZWxzZXtuZWVkZWQ9M31yZXR1cm4iIn1pZihuZWVkZWQpe2J1ZmZlci5wdXNoKGNvZGUpO25lZWRlZC0tO2lmKG5lZWRlZD4wKXJldHVybiIifXZhciBjMT1idWZmZXJbMF07dmFyIGMyPWJ1ZmZlclsxXTt2YXIgYzM9YnVmZmVyWzJdO3ZhciBjND1idWZmZXJbM107dmFyIHJldDtpZihidWZmZXIubGVuZ3RoPT0yKXtyZXQ9U3RyaW5nLmZyb21DaGFyQ29kZSgoYzEmMzEpPDw2fGMyJjYzKX1lbHNlIGlmKGJ1ZmZlci5sZW5ndGg9PTMpe3JldD1TdHJpbmcuZnJvbUNoYXJDb2RlKChjMSYxNSk8PDEyfChjMiY2Myk8PDZ8YzMmNjMpfWVsc2V7dmFyIGNvZGVQb2ludD0oYzEmNyk8PDE4fChjMiY2Myk8PDEyfChjMyY2Myk8PDZ8YzQmNjM7cmV0PVN0cmluZy5mcm9tQ2hhckNvZGUoTWF0aC5mbG9vcigoY29kZVBvaW50LTY1NTM2KS8xMDI0KSs1NTI5NiwoY29kZVBvaW50LTY1NTM2KSUxMDI0KzU2MzIwKX1idWZmZXIubGVuZ3RoPTA7cmV0dXJuIHJldH0pO3RoaXMucHJvY2Vzc0pTU3RyaW5nPWZ1bmN0aW9uIHByb2Nlc3NKU1N0cmluZyhzdHJpbmcpe3N0cmluZz11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKSk7dmFyIHJldD1bXTtmb3IodmFyIGk9MDtpPHN0cmluZy5sZW5ndGg7aSsrKXtyZXQucHVzaChzdHJpbmcuY2hhckNvZGVBdChpKSl9cmV0dXJuIHJldH19KSxnZXRDb21waWxlclNldHRpbmc6KGZ1bmN0aW9uKG5hbWUpe3Rocm93IllvdSBtdXN0IGJ1aWxkIHdpdGggLXMgUkVUQUlOX0NPTVBJTEVSX1NFVFRJTkdTPTEgZm9yIFJ1bnRpbWUuZ2V0Q29tcGlsZXJTZXR0aW5nIG9yIGVtc2NyaXB0ZW5fZ2V0X2NvbXBpbGVyX3NldHRpbmcgdG8gd29yayJ9KSxzdGFja0FsbG9jOihmdW5jdGlvbihzaXplKXt2YXIgcmV0PVNUQUNLVE9QO1NUQUNLVE9QPVNUQUNLVE9QK3NpemV8MDtTVEFDS1RPUD1TVEFDS1RPUCs3Ji04O3JldHVybiByZXR9KSxzdGF0aWNBbGxvYzooZnVuY3Rpb24oc2l6ZSl7dmFyIHJldD1TVEFUSUNUT1A7U1RBVElDVE9QPVNUQVRJQ1RPUCtzaXplfDA7U1RBVElDVE9QPVNUQVRJQ1RPUCs3Ji04O3JldHVybiByZXR9KSxkeW5hbWljQWxsb2M6KGZ1bmN0aW9uKHNpemUpe3ZhciByZXQ9RFlOQU1JQ1RPUDtEWU5BTUlDVE9QPURZTkFNSUNUT1Arc2l6ZXwwO0RZTkFNSUNUT1A9RFlOQU1JQ1RPUCs3Ji04O2lmKERZTkFNSUNUT1A+PVRPVEFMX01FTU9SWSllbmxhcmdlTWVtb3J5KCk7cmV0dXJuIHJldH0pLGFsaWduTWVtb3J5OihmdW5jdGlvbihzaXplLHF1YW50dW0pe3ZhciByZXQ9c2l6ZT1NYXRoLmNlaWwoc2l6ZS8ocXVhbnR1bT9xdWFudHVtOjgpKSoocXVhbnR1bT9xdWFudHVtOjgpO3JldHVybiByZXR9KSxtYWtlQmlnSW50OihmdW5jdGlvbihsb3csaGlnaCx1bnNpZ25lZCl7dmFyIHJldD11bnNpZ25lZD8rKGxvdz4+PjApKyArKGhpZ2g+Pj4wKSorNDI5NDk2NzI5NjorKGxvdz4+PjApKyArKGhpZ2h8MCkqKzQyOTQ5NjcyOTY7cmV0dXJuIHJldH0pLEdMT0JBTF9CQVNFOjgsUVVBTlRVTV9TSVpFOjQsX19kdW1teV9fOjB9O01vZHVsZVsiUnVudGltZSJdPVJ1bnRpbWU7ZnVuY3Rpb24ganNDYWxsKCl7dmFyIGFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gUnVudGltZS5mdW5jdGlvblBvaW50ZXJzW2FyZ3NbMF1dLmFwcGx5KG51bGwsYXJncy5zbGljZSgxKSl9dmFyIF9fVEhSRVdfXz0wO3ZhciBBQk9SVD1mYWxzZTt2YXIgRVhJVFNUQVRVUz0wO3ZhciB1bmRlZj0wO3ZhciB0ZW1wVmFsdWUsdGVtcEludCx0ZW1wQmlnSW50LHRlbXBJbnQyLHRlbXBCaWdJbnQyLHRlbXBQYWlyLHRlbXBCaWdJbnRJLHRlbXBCaWdJbnRSLHRlbXBCaWdJbnRTLHRlbXBCaWdJbnRQLHRlbXBCaWdJbnRELHRlbXBEb3VibGUsdGVtcEZsb2F0O3ZhciB0ZW1wSTY0LHRlbXBJNjRiO3ZhciB0ZW1wUmV0MCx0ZW1wUmV0MSx0ZW1wUmV0Mix0ZW1wUmV0Myx0ZW1wUmV0NCx0ZW1wUmV0NSx0ZW1wUmV0Nix0ZW1wUmV0Nyx0ZW1wUmV0OCx0ZW1wUmV0OTtmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLHRleHQpe2lmKCFjb25kaXRpb24pe2Fib3J0KCJBc3NlcnRpb24gZmFpbGVkOiAiK3RleHQpfX12YXIgZ2xvYmFsU2NvcGU9dGhpcztmdW5jdGlvbiBnZXRDRnVuYyhpZGVudCl7dHJ5e3ZhciBmdW5jPU1vZHVsZVsiXyIraWRlbnRdO2lmKCFmdW5jKWZ1bmM9ZXZhbCgiXyIraWRlbnQpfWNhdGNoKGUpe31hc3NlcnQoZnVuYywiQ2Fubm90IGNhbGwgdW5rbm93biBmdW5jdGlvbiAiK2lkZW50KyIgKHBlcmhhcHMgTExWTSBvcHRpbWl6YXRpb25zIG9yIGNsb3N1cmUgcmVtb3ZlZCBpdD8pIik7cmV0dXJuIGZ1bmN9dmFyIGN3cmFwLGNjYWxsOygoZnVuY3Rpb24oKXt2YXIgc3RhY2s9MDt2YXIgSlNmdW5jcz17InN0YWNrU2F2ZSI6KGZ1bmN0aW9uKCl7c3RhY2s9UnVudGltZS5zdGFja1NhdmUoKX0pLCJzdGFja1Jlc3RvcmUiOihmdW5jdGlvbigpe1J1bnRpbWUuc3RhY2tSZXN0b3JlKHN0YWNrKX0pLCJhcnJheVRvQyI6KGZ1bmN0aW9uKGFycil7dmFyIHJldD1SdW50aW1lLnN0YWNrQWxsb2MoYXJyLmxlbmd0aCk7d3JpdGVBcnJheVRvTWVtb3J5KGFycixyZXQpO3JldHVybiByZXR9KSwic3RyaW5nVG9DIjooZnVuY3Rpb24oc3RyKXt2YXIgcmV0PTA7aWYoc3RyIT09bnVsbCYmc3RyIT09dW5kZWZpbmVkJiZzdHIhPT0wKXtyZXQ9UnVudGltZS5zdGFja0FsbG9jKHN0ci5sZW5ndGgrMSk7d3JpdGVTdHJpbmdUb01lbW9yeShzdHIscmV0KX1yZXR1cm4gcmV0fSl9O3ZhciB0b0M9eyJzdHJpbmciOkpTZnVuY3NbInN0cmluZ1RvQyJdLCJhcnJheSI6SlNmdW5jc1siYXJyYXlUb0MiXX07Y2NhbGw9ZnVuY3Rpb24gY2NhbGxGdW5jKGlkZW50LHJldHVyblR5cGUsYXJnVHlwZXMsYXJncyl7dmFyIGZ1bmM9Z2V0Q0Z1bmMoaWRlbnQpO3ZhciBjQXJncz1bXTtpZihhcmdzKXtmb3IodmFyIGk9MDtpPGFyZ3MubGVuZ3RoO2krKyl7dmFyIGNvbnZlcnRlcj10b0NbYXJnVHlwZXNbaV1dO2lmKGNvbnZlcnRlcil7aWYoc3RhY2s9PT0wKXN0YWNrPVJ1bnRpbWUuc3RhY2tTYXZlKCk7Y0FyZ3NbaV09Y29udmVydGVyKGFyZ3NbaV0pfWVsc2V7Y0FyZ3NbaV09YXJnc1tpXX19fXZhciByZXQ9ZnVuYy5hcHBseShudWxsLGNBcmdzKTtpZihyZXR1cm5UeXBlPT09InN0cmluZyIpcmV0PVBvaW50ZXJfc3RyaW5naWZ5KHJldCk7aWYoc3RhY2shPT0wKUpTZnVuY3NbInN0YWNrUmVzdG9yZSJdKCk7cmV0dXJuIHJldH07dmFyIHNvdXJjZVJlZ2V4PS9eZnVuY3Rpb25cc1woKFteKV0qKVwpXHMqe1xzKihbXipdKj8pW1xzO10qKD86cmV0dXJuXHMqKC4qPylbO1xzXSopP30kLztmdW5jdGlvbiBwYXJzZUpTRnVuYyhqc2Z1bmMpe3ZhciBwYXJzZWQ9anNmdW5jLnRvU3RyaW5nKCkubWF0Y2goc291cmNlUmVnZXgpLnNsaWNlKDEpO3JldHVybnthcmd1bWVudHM6cGFyc2VkWzBdLGJvZHk6cGFyc2VkWzFdLHJldHVyblZhbHVlOnBhcnNlZFsyXX19dmFyIEpTc291cmNlPXt9O2Zvcih2YXIgZnVuIGluIEpTZnVuY3Mpe2lmKEpTZnVuY3MuaGFzT3duUHJvcGVydHkoZnVuKSl7SlNzb3VyY2VbZnVuXT1wYXJzZUpTRnVuYyhKU2Z1bmNzW2Z1bl0pfX1jd3JhcD1mdW5jdGlvbiBjd3JhcChpZGVudCxyZXR1cm5UeXBlLGFyZ1R5cGVzKXt2YXIgY2Z1bmM9Z2V0Q0Z1bmMoaWRlbnQpO3ZhciBudW1lcmljQXJncz1hcmdUeXBlcy5ldmVyeSgoZnVuY3Rpb24odHlwZSl7cmV0dXJuIHR5cGU9PT0ibnVtYmVyIn0pKTt2YXIgbnVtZXJpY1JldD1yZXR1cm5UeXBlIT09InN0cmluZyI7aWYobnVtZXJpY1JldCYmbnVtZXJpY0FyZ3Mpe3JldHVybiBjZnVuY312YXIgYXJnTmFtZXM9YXJnVHlwZXMubWFwKChmdW5jdGlvbih4LGkpe3JldHVybiIkIitpfSkpO3ZhciBmdW5jc3RyPSIoZnVuY3Rpb24oIithcmdOYW1lcy5qb2luKCIsIikrIikgeyI7dmFyIG5hcmdzPWFyZ1R5cGVzLmxlbmd0aDtpZighbnVtZXJpY0FyZ3Mpe2Z1bmNzdHIrPUpTc291cmNlWyJzdGFja1NhdmUiXS5ib2R5KyI7Ijtmb3IodmFyIGk9MDtpPG5hcmdzO2krKyl7dmFyIGFyZz1hcmdOYW1lc1tpXSx0eXBlPWFyZ1R5cGVzW2ldO2lmKHR5cGU9PT0ibnVtYmVyIiljb250aW51ZTt2YXIgY29udmVydENvZGU9SlNzb3VyY2VbdHlwZSsiVG9DIl07ZnVuY3N0cis9InZhciAiK2NvbnZlcnRDb2RlLmFyZ3VtZW50cysiID0gIithcmcrIjsiO2Z1bmNzdHIrPWNvbnZlcnRDb2RlLmJvZHkrIjsiO2Z1bmNzdHIrPWFyZysiPSIrY29udmVydENvZGUucmV0dXJuVmFsdWUrIjsifX12YXIgY2Z1bmNuYW1lPXBhcnNlSlNGdW5jKChmdW5jdGlvbigpe3JldHVybiBjZnVuY30pKS5yZXR1cm5WYWx1ZTtmdW5jc3RyKz0idmFyIHJldCA9ICIrY2Z1bmNuYW1lKyIoIithcmdOYW1lcy5qb2luKCIsIikrIik7IjtpZighbnVtZXJpY1JldCl7dmFyIHN0cmdmeT1wYXJzZUpTRnVuYygoZnVuY3Rpb24oKXtyZXR1cm4gUG9pbnRlcl9zdHJpbmdpZnl9KSkucmV0dXJuVmFsdWU7ZnVuY3N0cis9InJldCA9ICIrc3RyZ2Z5KyIocmV0KTsifWlmKCFudW1lcmljQXJncyl7ZnVuY3N0cis9SlNzb3VyY2VbInN0YWNrUmVzdG9yZSJdLmJvZHkrIjsifWZ1bmNzdHIrPSJyZXR1cm4gcmV0fSkiO3JldHVybiBldmFsKGZ1bmNzdHIpfX0pKSgpO01vZHVsZVsiY3dyYXAiXT1jd3JhcDtNb2R1bGVbImNjYWxsIl09Y2NhbGw7ZnVuY3Rpb24gc2V0VmFsdWUocHRyLHZhbHVlLHR5cGUsbm9TYWZlKXt0eXBlPXR5cGV8fCJpOCI7aWYodHlwZS5jaGFyQXQodHlwZS5sZW5ndGgtMSk9PT0iKiIpdHlwZT0iaTMyIjtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6SEVBUDhbcHRyPj4wXT12YWx1ZTticmVhaztjYXNlImk4IjpIRUFQOFtwdHI+PjBdPXZhbHVlO2JyZWFrO2Nhc2UiaTE2IjpIRUFQMTZbcHRyPj4xXT12YWx1ZTticmVhaztjYXNlImkzMiI6SEVBUDMyW3B0cj4+Ml09dmFsdWU7YnJlYWs7Y2FzZSJpNjQiOnRlbXBJNjQ9W3ZhbHVlPj4+MCwodGVtcERvdWJsZT12YWx1ZSwrTWF0aF9hYnModGVtcERvdWJsZSk+PSsxP3RlbXBEb3VibGU+KzA/KE1hdGhfbWluKCtNYXRoX2Zsb29yKHRlbXBEb3VibGUvKzQyOTQ5NjcyOTYpLCs0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aF9jZWlsKCh0ZW1wRG91YmxlLSArKH5+dGVtcERvdWJsZT4+PjApKS8rNDI5NDk2NzI5Nik+Pj4wOjApXSxIRUFQMzJbcHRyPj4yXT10ZW1wSTY0WzBdLEhFQVAzMltwdHIrND4+Ml09dGVtcEk2NFsxXTticmVhaztjYXNlImZsb2F0IjpIRUFQRjMyW3B0cj4+Ml09dmFsdWU7YnJlYWs7Y2FzZSJkb3VibGUiOkhFQVBGNjRbcHRyPj4zXT12YWx1ZTticmVhaztkZWZhdWx0OmFib3J0KCJpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAiK3R5cGUpfX1Nb2R1bGVbInNldFZhbHVlIl09c2V0VmFsdWU7ZnVuY3Rpb24gZ2V0VmFsdWUocHRyLHR5cGUsbm9TYWZlKXt0eXBlPXR5cGV8fCJpOCI7aWYodHlwZS5jaGFyQXQodHlwZS5sZW5ndGgtMSk9PT0iKiIpdHlwZT0iaTMyIjtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6cmV0dXJuIEhFQVA4W3B0cj4+MF07Y2FzZSJpOCI6cmV0dXJuIEhFQVA4W3B0cj4+MF07Y2FzZSJpMTYiOnJldHVybiBIRUFQMTZbcHRyPj4xXTtjYXNlImkzMiI6cmV0dXJuIEhFQVAzMltwdHI+PjJdO2Nhc2UiaTY0IjpyZXR1cm4gSEVBUDMyW3B0cj4+Ml07Y2FzZSJmbG9hdCI6cmV0dXJuIEhFQVBGMzJbcHRyPj4yXTtjYXNlImRvdWJsZSI6cmV0dXJuIEhFQVBGNjRbcHRyPj4zXTtkZWZhdWx0OmFib3J0KCJpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAiK3R5cGUpfXJldHVybiBudWxsfU1vZHVsZVsiZ2V0VmFsdWUiXT1nZXRWYWx1ZTt2YXIgQUxMT0NfTk9STUFMPTA7dmFyIEFMTE9DX1NUQUNLPTE7dmFyIEFMTE9DX1NUQVRJQz0yO3ZhciBBTExPQ19EWU5BTUlDPTM7dmFyIEFMTE9DX05PTkU9NDtNb2R1bGVbIkFMTE9DX05PUk1BTCJdPUFMTE9DX05PUk1BTDtNb2R1bGVbIkFMTE9DX1NUQUNLIl09QUxMT0NfU1RBQ0s7TW9kdWxlWyJBTExPQ19TVEFUSUMiXT1BTExPQ19TVEFUSUM7TW9kdWxlWyJBTExPQ19EWU5BTUlDIl09QUxMT0NfRFlOQU1JQztNb2R1bGVbIkFMTE9DX05PTkUiXT1BTExPQ19OT05FO2Z1bmN0aW9uIGFsbG9jYXRlKHNsYWIsdHlwZXMsYWxsb2NhdG9yLHB0cil7dmFyIHplcm9pbml0LHNpemU7aWYodHlwZW9mIHNsYWI9PT0ibnVtYmVyIil7emVyb2luaXQ9dHJ1ZTtzaXplPXNsYWJ9ZWxzZXt6ZXJvaW5pdD1mYWxzZTtzaXplPXNsYWIubGVuZ3RofXZhciBzaW5nbGVUeXBlPXR5cGVvZiB0eXBlcz09PSJzdHJpbmciP3R5cGVzOm51bGw7dmFyIHJldDtpZihhbGxvY2F0b3I9PUFMTE9DX05PTkUpe3JldD1wdHJ9ZWxzZXtyZXQ9W19tYWxsb2MsUnVudGltZS5zdGFja0FsbG9jLFJ1bnRpbWUuc3RhdGljQWxsb2MsUnVudGltZS5keW5hbWljQWxsb2NdW2FsbG9jYXRvcj09PXVuZGVmaW5lZD9BTExPQ19TVEFUSUM6YWxsb2NhdG9yXShNYXRoLm1heChzaXplLHNpbmdsZVR5cGU/MTp0eXBlcy5sZW5ndGgpKX1pZih6ZXJvaW5pdCl7dmFyIHB0cj1yZXQsc3RvcDthc3NlcnQoKHJldCYzKT09MCk7c3RvcD1yZXQrKHNpemUmfjMpO2Zvcig7cHRyPHN0b3A7cHRyKz00KXtIRUFQMzJbcHRyPj4yXT0wfXN0b3A9cmV0K3NpemU7d2hpbGUocHRyPHN0b3Ape0hFQVA4W3B0cisrPj4wXT0wfXJldHVybiByZXR9aWYoc2luZ2xlVHlwZT09PSJpOCIpe2lmKHNsYWIuc3ViYXJyYXl8fHNsYWIuc2xpY2Upe0hFQVBVOC5zZXQoc2xhYixyZXQpfWVsc2V7SEVBUFU4LnNldChuZXcgVWludDhBcnJheShzbGFiKSxyZXQpfXJldHVybiByZXR9dmFyIGk9MCx0eXBlLHR5cGVTaXplLHByZXZpb3VzVHlwZTt3aGlsZShpPHNpemUpe3ZhciBjdXJyPXNsYWJbaV07aWYodHlwZW9mIGN1cnI9PT0iZnVuY3Rpb24iKXtjdXJyPVJ1bnRpbWUuZ2V0RnVuY3Rpb25JbmRleChjdXJyKX10eXBlPXNpbmdsZVR5cGV8fHR5cGVzW2ldO2lmKHR5cGU9PT0wKXtpKys7Y29udGludWV9aWYodHlwZT09Imk2NCIpdHlwZT0iaTMyIjtzZXRWYWx1ZShyZXQraSxjdXJyLHR5cGUpO2lmKHByZXZpb3VzVHlwZSE9PXR5cGUpe3R5cGVTaXplPVJ1bnRpbWUuZ2V0TmF0aXZlVHlwZVNpemUodHlwZSk7cHJldmlvdXNUeXBlPXR5cGV9aSs9dHlwZVNpemV9cmV0dXJuIHJldH1Nb2R1bGVbImFsbG9jYXRlIl09YWxsb2NhdGU7ZnVuY3Rpb24gUG9pbnRlcl9zdHJpbmdpZnkocHRyLGxlbmd0aCl7dmFyIGhhc1V0Zj1mYWxzZTt2YXIgdDt2YXIgaT0wO3doaWxlKDEpe3Q9SEVBUFU4W3B0citpPj4wXTtpZih0Pj0xMjgpaGFzVXRmPXRydWU7ZWxzZSBpZih0PT0wJiYhbGVuZ3RoKWJyZWFrO2krKztpZihsZW5ndGgmJmk9PWxlbmd0aClicmVha31pZighbGVuZ3RoKWxlbmd0aD1pO3ZhciByZXQ9IiI7aWYoIWhhc1V0Zil7dmFyIE1BWF9DSFVOSz0xMDI0O3ZhciBjdXJyO3doaWxlKGxlbmd0aD4wKXtjdXJyPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLEhFQVBVOC5zdWJhcnJheShwdHIscHRyK01hdGgubWluKGxlbmd0aCxNQVhfQ0hVTkspKSk7cmV0PXJldD9yZXQrY3VycjpjdXJyO3B0cis9TUFYX0NIVU5LO2xlbmd0aC09TUFYX0NIVU5LfXJldHVybiByZXR9dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjtmb3IoaT0wO2k8bGVuZ3RoO2krKyl7dD1IRUFQVThbcHRyK2k+PjBdO3JldCs9dXRmOC5wcm9jZXNzQ0NoYXIodCl9cmV0dXJuIHJldH1Nb2R1bGVbIlBvaW50ZXJfc3RyaW5naWZ5Il09UG9pbnRlcl9zdHJpbmdpZnk7ZnVuY3Rpb24gVVRGMTZUb1N0cmluZyhwdHIpe3ZhciBpPTA7dmFyIHN0cj0iIjt3aGlsZSgxKXt2YXIgY29kZVVuaXQ9SEVBUDE2W3B0citpKjI+PjFdO2lmKGNvZGVVbml0PT0wKXJldHVybiBzdHI7KytpO3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZShjb2RlVW5pdCl9fU1vZHVsZVsiVVRGMTZUb1N0cmluZyJdPVVURjE2VG9TdHJpbmc7ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNihzdHIsb3V0UHRyKXtmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGg7KytpKXt2YXIgY29kZVVuaXQ9c3RyLmNoYXJDb2RlQXQoaSk7SEVBUDE2W291dFB0citpKjI+PjFdPWNvZGVVbml0fUhFQVAxNltvdXRQdHIrc3RyLmxlbmd0aCoyPj4xXT0wfU1vZHVsZVsic3RyaW5nVG9VVEYxNiJdPXN0cmluZ1RvVVRGMTY7ZnVuY3Rpb24gVVRGMzJUb1N0cmluZyhwdHIpe3ZhciBpPTA7dmFyIHN0cj0iIjt3aGlsZSgxKXt2YXIgdXRmMzI9SEVBUDMyW3B0citpKjQ+PjJdO2lmKHV0ZjMyPT0wKXJldHVybiBzdHI7KytpO2lmKHV0ZjMyPj02NTUzNil7dmFyIGNoPXV0ZjMyLTY1NTM2O3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjaD4+MTAsNTYzMjB8Y2gmMTAyMyl9ZWxzZXtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUodXRmMzIpfX19TW9kdWxlWyJVVEYzMlRvU3RyaW5nIl09VVRGMzJUb1N0cmluZztmdW5jdGlvbiBzdHJpbmdUb1VURjMyKHN0cixvdXRQdHIpe3ZhciBpQ2hhcj0wO2Zvcih2YXIgaUNvZGVVbml0PTA7aUNvZGVVbml0PHN0ci5sZW5ndGg7KytpQ29kZVVuaXQpe3ZhciBjb2RlVW5pdD1zdHIuY2hhckNvZGVBdChpQ29kZVVuaXQpO2lmKGNvZGVVbml0Pj01NTI5NiYmY29kZVVuaXQ8PTU3MzQzKXt2YXIgdHJhaWxTdXJyb2dhdGU9c3RyLmNoYXJDb2RlQXQoKytpQ29kZVVuaXQpO2NvZGVVbml0PTY1NTM2KygoY29kZVVuaXQmMTAyMyk8PDEwKXx0cmFpbFN1cnJvZ2F0ZSYxMDIzfUhFQVAzMltvdXRQdHIraUNoYXIqND4+Ml09Y29kZVVuaXQ7KytpQ2hhcn1IRUFQMzJbb3V0UHRyK2lDaGFyKjQ+PjJdPTB9TW9kdWxlWyJzdHJpbmdUb1VURjMyIl09c3RyaW5nVG9VVEYzMjtmdW5jdGlvbiBkZW1hbmdsZShmdW5jKXt2YXIgaT0zO3ZhciBiYXNpY1R5cGVzPXsidiI6InZvaWQiLCJiIjoiYm9vbCIsImMiOiJjaGFyIiwicyI6InNob3J0IiwiaSI6ImludCIsImwiOiJsb25nIiwiZiI6ImZsb2F0IiwiZCI6ImRvdWJsZSIsInciOiJ3Y2hhcl90IiwiYSI6InNpZ25lZCBjaGFyIiwiaCI6InVuc2lnbmVkIGNoYXIiLCJ0IjoidW5zaWduZWQgc2hvcnQiLCJqIjoidW5zaWduZWQgaW50IiwibSI6InVuc2lnbmVkIGxvbmciLCJ4IjoibG9uZyBsb25nIiwieSI6InVuc2lnbmVkIGxvbmcgbG9uZyIsInoiOiIuLi4ifTt2YXIgc3Vicz1bXTt2YXIgZmlyc3Q9dHJ1ZTtmdW5jdGlvbiBkdW1wKHgpe2lmKHgpTW9kdWxlLnByaW50KHgpO01vZHVsZS5wcmludChmdW5jKTt2YXIgcHJlPSIiO2Zvcih2YXIgYT0wO2E8aTthKyspcHJlKz0iICI7TW9kdWxlLnByaW50KHByZSsiXiIpfWZ1bmN0aW9uIHBhcnNlTmVzdGVkKCl7aSsrO2lmKGZ1bmNbaV09PT0iSyIpaSsrO3ZhciBwYXJ0cz1bXTt3aGlsZShmdW5jW2ldIT09IkUiKXtpZihmdW5jW2ldPT09IlMiKXtpKys7dmFyIG5leHQ9ZnVuYy5pbmRleE9mKCJfIixpKTt2YXIgbnVtPWZ1bmMuc3Vic3RyaW5nKGksbmV4dCl8fDA7cGFydHMucHVzaChzdWJzW251bV18fCI/Iik7aT1uZXh0KzE7Y29udGludWV9aWYoZnVuY1tpXT09PSJDIil7cGFydHMucHVzaChwYXJ0c1twYXJ0cy5sZW5ndGgtMV0pO2krPTI7Y29udGludWV9dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO3ZhciBwcmU9c2l6ZS50b1N0cmluZygpLmxlbmd0aDtpZighc2l6ZXx8IXByZSl7aS0tO2JyZWFrfXZhciBjdXJyPWZ1bmMuc3Vic3RyKGkrcHJlLHNpemUpO3BhcnRzLnB1c2goY3Vycik7c3Vicy5wdXNoKGN1cnIpO2krPXByZStzaXplfWkrKztyZXR1cm4gcGFydHN9ZnVuY3Rpb24gcGFyc2UocmF3TGlzdCxsaW1pdCxhbGxvd1ZvaWQpe2xpbWl0PWxpbWl0fHxJbmZpbml0eTt2YXIgcmV0PSIiLGxpc3Q9W107ZnVuY3Rpb24gZmx1c2hMaXN0KCl7cmV0dXJuIigiK2xpc3Quam9pbigiLCAiKSsiKSJ9dmFyIG5hbWU7aWYoZnVuY1tpXT09PSJOIil7bmFtZT1wYXJzZU5lc3RlZCgpLmpvaW4oIjo6Iik7bGltaXQtLTtpZihsaW1pdD09PTApcmV0dXJuIHJhd0xpc3Q/W25hbWVdOm5hbWV9ZWxzZXtpZihmdW5jW2ldPT09IksifHxmaXJzdCYmZnVuY1tpXT09PSJMIilpKys7dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO2lmKHNpemUpe3ZhciBwcmU9c2l6ZS50b1N0cmluZygpLmxlbmd0aDtuYW1lPWZ1bmMuc3Vic3RyKGkrcHJlLHNpemUpO2krPXByZStzaXplfX1maXJzdD1mYWxzZTtpZihmdW5jW2ldPT09IkkiKXtpKys7dmFyIGlMaXN0PXBhcnNlKHRydWUpO3ZhciBpUmV0PXBhcnNlKHRydWUsMSx0cnVlKTtyZXQrPWlSZXRbMF0rIiAiK25hbWUrIjwiK2lMaXN0LmpvaW4oIiwgIikrIj4ifWVsc2V7cmV0PW5hbWV9cGFyYW1Mb29wOndoaWxlKGk8ZnVuYy5sZW5ndGgmJmxpbWl0LS0+MCl7dmFyIGM9ZnVuY1tpKytdO2lmKGMgaW4gYmFzaWNUeXBlcyl7bGlzdC5wdXNoKGJhc2ljVHlwZXNbY10pfWVsc2V7c3dpdGNoKGMpe2Nhc2UiUCI6bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiKiIpO2JyZWFrO2Nhc2UiUiI6bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiJiIpO2JyZWFrO2Nhc2UiTCI6e2krKzt2YXIgZW5kPWZ1bmMuaW5kZXhPZigiRSIsaSk7dmFyIHNpemU9ZW5kLWk7bGlzdC5wdXNoKGZ1bmMuc3Vic3RyKGksc2l6ZSkpO2krPXNpemUrMjticmVha307Y2FzZSJBIjp7dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO2krPXNpemUudG9TdHJpbmcoKS5sZW5ndGg7aWYoZnVuY1tpXSE9PSJfIil0aHJvdyI/IjtpKys7bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiIFsiK3NpemUrIl0iKTticmVha307Y2FzZSJFIjpicmVhayBwYXJhbUxvb3A7ZGVmYXVsdDpyZXQrPSI/IitjO2JyZWFrIHBhcmFtTG9vcH19fWlmKCFhbGxvd1ZvaWQmJmxpc3QubGVuZ3RoPT09MSYmbGlzdFswXT09PSJ2b2lkIilsaXN0PVtdO2lmKHJhd0xpc3Qpe2lmKHJldCl7bGlzdC5wdXNoKHJldCsiPyIpfXJldHVybiBsaXN0fWVsc2V7cmV0dXJuIHJldCtmbHVzaExpc3QoKX19dHJ5e2lmKGZ1bmM9PSJPYmplY3QuX21haW4ifHxmdW5jPT0iX21haW4iKXtyZXR1cm4ibWFpbigpIn1pZih0eXBlb2YgZnVuYz09PSJudW1iZXIiKWZ1bmM9UG9pbnRlcl9zdHJpbmdpZnkoZnVuYyk7aWYoZnVuY1swXSE9PSJfIilyZXR1cm4gZnVuYztpZihmdW5jWzFdIT09Il8iKXJldHVybiBmdW5jO2lmKGZ1bmNbMl0hPT0iWiIpcmV0dXJuIGZ1bmM7c3dpdGNoKGZ1bmNbM10pe2Nhc2UibiI6cmV0dXJuIm9wZXJhdG9yIG5ldygpIjtjYXNlImQiOnJldHVybiJvcGVyYXRvciBkZWxldGUoKSJ9cmV0dXJuIHBhcnNlKCl9Y2F0Y2goZSl7cmV0dXJuIGZ1bmN9fWZ1bmN0aW9uIGRlbWFuZ2xlQWxsKHRleHQpe3JldHVybiB0ZXh0LnJlcGxhY2UoL19fWltcd1xkX10rL2csKGZ1bmN0aW9uKHgpe3ZhciB5PWRlbWFuZ2xlKHgpO3JldHVybiB4PT09eT94OngrIiBbIit5KyJdIn0pKX1mdW5jdGlvbiBzdGFja1RyYWNlKCl7dmFyIHN0YWNrPShuZXcgRXJyb3IpLnN0YWNrO3JldHVybiBzdGFjaz9kZW1hbmdsZUFsbChzdGFjayk6IihubyBzdGFjayB0cmFjZSBhdmFpbGFibGUpIn12YXIgUEFHRV9TSVpFPTQwOTY7ZnVuY3Rpb24gYWxpZ25NZW1vcnlQYWdlKHgpe3JldHVybiB4KzQwOTUmLTQwOTZ9dmFyIEhFQVA7dmFyIEhFQVA4LEhFQVBVOCxIRUFQMTYsSEVBUFUxNixIRUFQMzIsSEVBUFUzMixIRUFQRjMyLEhFQVBGNjQ7dmFyIFNUQVRJQ19CQVNFPTAsU1RBVElDVE9QPTAsc3RhdGljU2VhbGVkPWZhbHNlO3ZhciBTVEFDS19CQVNFPTAsU1RBQ0tUT1A9MCxTVEFDS19NQVg9MDt2YXIgRFlOQU1JQ19CQVNFPTAsRFlOQU1JQ1RPUD0wO2Z1bmN0aW9uIGVubGFyZ2VNZW1vcnkoKXthYm9ydCgiQ2Fubm90IGVubGFyZ2UgbWVtb3J5IGFycmF5cy4gRWl0aGVyICgxKSBjb21waWxlIHdpdGggLXMgVE9UQUxfTUVNT1JZPVggd2l0aCBYIGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50IHZhbHVlICIrVE9UQUxfTUVNT1JZKyIsICgyKSBjb21waWxlIHdpdGggQUxMT1dfTUVNT1JZX0dST1dUSCB3aGljaCBhZGp1c3RzIHRoZSBzaXplIGF0IHJ1bnRpbWUgYnV0IHByZXZlbnRzIHNvbWUgb3B0aW1pemF0aW9ucywgb3IgKDMpIHNldCBNb2R1bGUuVE9UQUxfTUVNT1JZIGJlZm9yZSB0aGUgcHJvZ3JhbSBydW5zLiIpfXZhciBUT1RBTF9TVEFDSz1Nb2R1bGVbIlRPVEFMX1NUQUNLIl18fDUyNDI4ODA7dmFyIFRPVEFMX01FTU9SWT1Nb2R1bGVbIlRPVEFMX01FTU9SWSJdfHwxNjc3NzIxNjA7dmFyIEZBU1RfTUVNT1JZPU1vZHVsZVsiRkFTVF9NRU1PUlkiXXx8MTA0ODU3NjA7dmFyIHRvdGFsTWVtb3J5PTQwOTY7d2hpbGUodG90YWxNZW1vcnk8VE9UQUxfTUVNT1JZfHx0b3RhbE1lbW9yeTwyKlRPVEFMX1NUQUNLKXtpZih0b3RhbE1lbW9yeTwxNioxMDI0KjEwMjQpe3RvdGFsTWVtb3J5Kj0yfWVsc2V7dG90YWxNZW1vcnkrPTE2KjEwMjQqMTAyNH19aWYodG90YWxNZW1vcnkhPT1UT1RBTF9NRU1PUlkpe01vZHVsZS5wcmludEVycigiaW5jcmVhc2luZyBUT1RBTF9NRU1PUlkgdG8gIit0b3RhbE1lbW9yeSsiIHRvIGJlIG1vcmUgcmVhc29uYWJsZSIpO1RPVEFMX01FTU9SWT10b3RhbE1lbW9yeX1hc3NlcnQodHlwZW9mIEludDMyQXJyYXkhPT0idW5kZWZpbmVkIiYmdHlwZW9mIEZsb2F0NjRBcnJheSE9PSJ1bmRlZmluZWQiJiYhIShuZXcgSW50MzJBcnJheSgxKSlbInN1YmFycmF5Il0mJiEhKG5ldyBJbnQzMkFycmF5KDEpKVsic2V0Il0sIkpTIGVuZ2luZSBkb2VzIG5vdCBwcm92aWRlIGZ1bGwgdHlwZWQgYXJyYXkgc3VwcG9ydCIpO3ZhciBidWZmZXI9bmV3IEFycmF5QnVmZmVyKFRPVEFMX01FTU9SWSk7SEVBUDg9bmV3IEludDhBcnJheShidWZmZXIpO0hFQVAxNj1uZXcgSW50MTZBcnJheShidWZmZXIpO0hFQVAzMj1uZXcgSW50MzJBcnJheShidWZmZXIpO0hFQVBVOD1uZXcgVWludDhBcnJheShidWZmZXIpO0hFQVBVMTY9bmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7SEVBUFUzMj1uZXcgVWludDMyQXJyYXkoYnVmZmVyKTtIRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTtIRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoYnVmZmVyKTtIRUFQMzJbMF09MjU1O2Fzc2VydChIRUFQVThbMF09PT0yNTUmJkhFQVBVOFszXT09PTAsIlR5cGVkIGFycmF5cyAyIG11c3QgYmUgcnVuIG9uIGEgbGl0dGxlLWVuZGlhbiBzeXN0ZW0iKTtNb2R1bGVbIkhFQVAiXT1IRUFQO01vZHVsZVsiSEVBUDgiXT1IRUFQODtNb2R1bGVbIkhFQVAxNiJdPUhFQVAxNjtNb2R1bGVbIkhFQVAzMiJdPUhFQVAzMjtNb2R1bGVbIkhFQVBVOCJdPUhFQVBVODtNb2R1bGVbIkhFQVBVMTYiXT1IRUFQVTE2O01vZHVsZVsiSEVBUFUzMiJdPUhFQVBVMzI7TW9kdWxlWyJIRUFQRjMyIl09SEVBUEYzMjtNb2R1bGVbIkhFQVBGNjQiXT1IRUFQRjY0O2Z1bmN0aW9uIGNhbGxSdW50aW1lQ2FsbGJhY2tzKGNhbGxiYWNrcyl7d2hpbGUoY2FsbGJhY2tzLmxlbmd0aD4wKXt2YXIgY2FsbGJhY2s9Y2FsbGJhY2tzLnNoaWZ0KCk7aWYodHlwZW9mIGNhbGxiYWNrPT0iZnVuY3Rpb24iKXtjYWxsYmFjaygpO2NvbnRpbnVlfXZhciBmdW5jPWNhbGxiYWNrLmZ1bmM7aWYodHlwZW9mIGZ1bmM9PT0ibnVtYmVyIil7aWYoY2FsbGJhY2suYXJnPT09dW5kZWZpbmVkKXtSdW50aW1lLmR5bkNhbGwoInYiLGZ1bmMpfWVsc2V7UnVudGltZS5keW5DYWxsKCJ2aSIsZnVuYyxbY2FsbGJhY2suYXJnXSl9fWVsc2V7ZnVuYyhjYWxsYmFjay5hcmc9PT11bmRlZmluZWQ/bnVsbDpjYWxsYmFjay5hcmcpfX19dmFyIF9fQVRQUkVSVU5fXz1bXTt2YXIgX19BVElOSVRfXz1bXTt2YXIgX19BVE1BSU5fXz1bXTt2YXIgX19BVEVYSVRfXz1bXTt2YXIgX19BVFBPU1RSVU5fXz1bXTt2YXIgcnVudGltZUluaXRpYWxpemVkPWZhbHNlO2Z1bmN0aW9uIHByZVJ1bigpe2lmKE1vZHVsZVsicHJlUnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInByZVJ1biJdPT0iZnVuY3Rpb24iKU1vZHVsZVsicHJlUnVuIl09W01vZHVsZVsicHJlUnVuIl1dO3doaWxlKE1vZHVsZVsicHJlUnVuIl0ubGVuZ3RoKXthZGRPblByZVJ1bihNb2R1bGVbInByZVJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pfWZ1bmN0aW9uIGVuc3VyZUluaXRSdW50aW1lKCl7aWYocnVudGltZUluaXRpYWxpemVkKXJldHVybjtydW50aW1lSW5pdGlhbGl6ZWQ9dHJ1ZTtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUSU5JVF9fKX1mdW5jdGlvbiBwcmVNYWluKCl7Y2FsbFJ1bnRpbWVDYWxsYmFja3MoX19BVE1BSU5fXyl9ZnVuY3Rpb24gZXhpdFJ1bnRpbWUoKXtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FURVhJVF9fKX1mdW5jdGlvbiBwb3N0UnVuKCl7aWYoTW9kdWxlWyJwb3N0UnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInBvc3RSdW4iXT09ImZ1bmN0aW9uIilNb2R1bGVbInBvc3RSdW4iXT1bTW9kdWxlWyJwb3N0UnVuIl1dO3doaWxlKE1vZHVsZVsicG9zdFJ1biJdLmxlbmd0aCl7YWRkT25Qb3N0UnVuKE1vZHVsZVsicG9zdFJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUE9TVFJVTl9fKX1mdW5jdGlvbiBhZGRPblByZVJ1bihjYil7X19BVFBSRVJVTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25QcmVSdW4iXT1Nb2R1bGUuYWRkT25QcmVSdW49YWRkT25QcmVSdW47ZnVuY3Rpb24gYWRkT25Jbml0KGNiKXtfX0FUSU5JVF9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25Jbml0Il09TW9kdWxlLmFkZE9uSW5pdD1hZGRPbkluaXQ7ZnVuY3Rpb24gYWRkT25QcmVNYWluKGNiKXtfX0FUTUFJTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25QcmVNYWluIl09TW9kdWxlLmFkZE9uUHJlTWFpbj1hZGRPblByZU1haW47ZnVuY3Rpb24gYWRkT25FeGl0KGNiKXtfX0FURVhJVF9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25FeGl0Il09TW9kdWxlLmFkZE9uRXhpdD1hZGRPbkV4aXQ7ZnVuY3Rpb24gYWRkT25Qb3N0UnVuKGNiKXtfX0FUUE9TVFJVTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25Qb3N0UnVuIl09TW9kdWxlLmFkZE9uUG9zdFJ1bj1hZGRPblBvc3RSdW47ZnVuY3Rpb24gaW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZ3ksZG9udEFkZE51bGwsbGVuZ3RoKXt2YXIgcmV0PShuZXcgUnVudGltZS5VVEY4UHJvY2Vzc29yKS5wcm9jZXNzSlNTdHJpbmcoc3RyaW5neSk7aWYobGVuZ3RoKXtyZXQubGVuZ3RoPWxlbmd0aH1pZighZG9udEFkZE51bGwpe3JldC5wdXNoKDApfXJldHVybiByZXR9TW9kdWxlWyJpbnRBcnJheUZyb21TdHJpbmciXT1pbnRBcnJheUZyb21TdHJpbmc7ZnVuY3Rpb24gaW50QXJyYXlUb1N0cmluZyhhcnJheSl7dmFyIHJldD1bXTtmb3IodmFyIGk9MDtpPGFycmF5Lmxlbmd0aDtpKyspe3ZhciBjaHI9YXJyYXlbaV07aWYoY2hyPjI1NSl7Y2hyJj0yNTV9cmV0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpKX1yZXR1cm4gcmV0LmpvaW4oIiIpfU1vZHVsZVsiaW50QXJyYXlUb1N0cmluZyJdPWludEFycmF5VG9TdHJpbmc7ZnVuY3Rpb24gd3JpdGVTdHJpbmdUb01lbW9yeShzdHJpbmcsYnVmZmVyLGRvbnRBZGROdWxsKXt2YXIgYXJyYXk9aW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZyxkb250QWRkTnVsbCk7dmFyIGk9MDt3aGlsZShpPGFycmF5Lmxlbmd0aCl7dmFyIGNocj1hcnJheVtpXTtIRUFQOFtidWZmZXIraT4+MF09Y2hyO2k9aSsxfX1Nb2R1bGVbIndyaXRlU3RyaW5nVG9NZW1vcnkiXT13cml0ZVN0cmluZ1RvTWVtb3J5O2Z1bmN0aW9uIHdyaXRlQXJyYXlUb01lbW9yeShhcnJheSxidWZmZXIpe2Zvcih2YXIgaT0wO2k8YXJyYXkubGVuZ3RoO2krKyl7SEVBUDhbYnVmZmVyK2k+PjBdPWFycmF5W2ldfX1Nb2R1bGVbIndyaXRlQXJyYXlUb01lbW9yeSJdPXdyaXRlQXJyYXlUb01lbW9yeTtmdW5jdGlvbiB3cml0ZUFzY2lpVG9NZW1vcnkoc3RyLGJ1ZmZlcixkb250QWRkTnVsbCl7Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoO2krKyl7SEVBUDhbYnVmZmVyK2k+PjBdPXN0ci5jaGFyQ29kZUF0KGkpfWlmKCFkb250QWRkTnVsbClIRUFQOFtidWZmZXIrc3RyLmxlbmd0aD4+MF09MH1Nb2R1bGVbIndyaXRlQXNjaWlUb01lbW9yeSJdPXdyaXRlQXNjaWlUb01lbW9yeTtmdW5jdGlvbiB1blNpZ24odmFsdWUsYml0cyxpZ25vcmUpe2lmKHZhbHVlPj0wKXtyZXR1cm4gdmFsdWV9cmV0dXJuIGJpdHM8PTMyPzIqTWF0aC5hYnMoMTw8Yml0cy0xKSt2YWx1ZTpNYXRoLnBvdygyLGJpdHMpK3ZhbHVlfWZ1bmN0aW9uIHJlU2lnbih2YWx1ZSxiaXRzLGlnbm9yZSl7aWYodmFsdWU8PTApe3JldHVybiB2YWx1ZX12YXIgaGFsZj1iaXRzPD0zMj9NYXRoLmFicygxPDxiaXRzLTEpOk1hdGgucG93KDIsYml0cy0xKTtpZih2YWx1ZT49aGFsZiYmKGJpdHM8PTMyfHx2YWx1ZT5oYWxmKSl7dmFsdWU9LTIqaGFsZit2YWx1ZX1yZXR1cm4gdmFsdWV9aWYoIU1hdGhbImltdWwiXXx8TWF0aFsiaW11bCJdKDQyOTQ5NjcyOTUsNSkhPT0tNSlNYXRoWyJpbXVsIl09ZnVuY3Rpb24gaW11bChhLGIpe3ZhciBhaD1hPj4+MTY7dmFyIGFsPWEmNjU1MzU7dmFyIGJoPWI+Pj4xNjt2YXIgYmw9YiY2NTUzNTtyZXR1cm4gYWwqYmwrKGFoKmJsK2FsKmJoPDwxNil8MH07TWF0aC5pbXVsPU1hdGhbImltdWwiXTt2YXIgTWF0aF9hYnM9TWF0aC5hYnM7dmFyIE1hdGhfY29zPU1hdGguY29zO3ZhciBNYXRoX3Npbj1NYXRoLnNpbjt2YXIgTWF0aF90YW49TWF0aC50YW47dmFyIE1hdGhfYWNvcz1NYXRoLmFjb3M7dmFyIE1hdGhfYXNpbj1NYXRoLmFzaW47dmFyIE1hdGhfYXRhbj1NYXRoLmF0YW47dmFyIE1hdGhfYXRhbjI9TWF0aC5hdGFuMjt2YXIgTWF0aF9leHA9TWF0aC5leHA7dmFyIE1hdGhfbG9nPU1hdGgubG9nO3ZhciBNYXRoX3NxcnQ9TWF0aC5zcXJ0O3ZhciBNYXRoX2NlaWw9TWF0aC5jZWlsO3ZhciBNYXRoX2Zsb29yPU1hdGguZmxvb3I7dmFyIE1hdGhfcG93PU1hdGgucG93O3ZhciBNYXRoX2ltdWw9TWF0aC5pbXVsO3ZhciBNYXRoX2Zyb3VuZD1NYXRoLmZyb3VuZDt2YXIgTWF0aF9taW49TWF0aC5taW47dmFyIHJ1bkRlcGVuZGVuY2llcz0wO3ZhciBydW5EZXBlbmRlbmN5V2F0Y2hlcj1udWxsO3ZhciBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9bnVsbDtmdW5jdGlvbiBhZGRSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMrKztpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKX19TW9kdWxlWyJhZGRSdW5EZXBlbmRlbmN5Il09YWRkUnVuRGVwZW5kZW5jeTtmdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMtLTtpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKX1pZihydW5EZXBlbmRlbmNpZXM9PTApe2lmKHJ1bkRlcGVuZGVuY3lXYXRjaGVyIT09bnVsbCl7Y2xlYXJJbnRlcnZhbChydW5EZXBlbmRlbmN5V2F0Y2hlcik7cnVuRGVwZW5kZW5jeVdhdGNoZXI9bnVsbH1pZihkZXBlbmRlbmNpZXNGdWxmaWxsZWQpe3ZhciBjYWxsYmFjaz1kZXBlbmRlbmNpZXNGdWxmaWxsZWQ7ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7Y2FsbGJhY2soKX19fU1vZHVsZVsicmVtb3ZlUnVuRGVwZW5kZW5jeSJdPXJlbW92ZVJ1bkRlcGVuZGVuY3k7TW9kdWxlWyJwcmVsb2FkZWRJbWFnZXMiXT17fTtNb2R1bGVbInByZWxvYWRlZEF1ZGlvcyJdPXt9O3ZhciBtZW1vcnlJbml0aWFsaXplcj1udWxsO3ZhciBfX1pUSXQ9MjE4NzI7dmFyIF9fWlRJcz0yMTg2NDt2YXIgX19aVEltPTIxOTM2O3ZhciBfX1pUSWw9MjE5MjA7dmFyIF9fWlRWTjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0U9MjE2NTY7dmFyIF9fWlRJaT0yMTg4ODt2YXIgX19aVEloPTIxODQwO3ZhciBfX1pUSWo9MjE5MDQ7dmFyIF9fWlRJZD0yMTk2ODt2YXIgX19aVFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0U9MjE2MTY7dmFyIF9fWlRJZj0yMTk1Mjt2YXIgX19aVElhPTIxODU2O3ZhciBfX1pUVk4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRT0yMTk3Njt2YXIgX19aVEljPTIxODI0O1NUQVRJQ19CQVNFPTg7U1RBVElDVE9QPVNUQVRJQ19CQVNFK1J1bnRpbWUuYWxpZ25NZW1vcnkoMjMwODMpO19fQVRJTklUX18ucHVzaCh7ZnVuYzooZnVuY3Rpb24oKXtfX0dMT0JBTF9fSV9hKCl9KX0se2Z1bmM6KGZ1bmN0aW9uKCl7X19HTE9CQUxfX0lfYTY1KCl9KX0se2Z1bmM6KGZ1bmN0aW9uKCl7X19HTE9CQUxfX0lfYTE1MygpfSl9KTthbGxvY2F0ZShbNzYsNjUsODMsOTAsMTA1LDExMiwwLDAsMTExLDExMiwxMDEsMTEwLDAsMCwwLDAsMTAzLDEwMSwxMTYsODAsMTExLDEwNSwxMTAsMTE2LDAsMCwwLDAsMCwwLDAsMCwxMDMsMTAxLDExNiw2NywxMTEsMTE3LDExMCwxMTYsMCwwLDAsMCwwLDAsMCwwLDEwNSwxMDUsMTA1LDAsMCwwLDAsMCw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMTIwLDg0LDAsMCw2NCwwLDAsMCw4MCw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMCwwLDAsMCwwLDAsMCwxNjAsODQsMCwwLDgwLDAsMCwwLDAsMCwwLDAsNzIsMCwwLDAsMTE4LDEwNSwxMDUsMTA1LDAsMCwwLDAsMTE4LDEwNSwxMDUsMTA1LDEwNSwwLDAsMCwxMDUsMTA1LDAsMCwwLDAsMCwwLDExOCwxMDUsMCwwLDAsMCwwLDAsMTE4LDAsMCwwLDAsMCwwLDAsMTA1LDEwNSwwLDAsMCwwLDAsMCw4MCw3NSw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMCwwLDAsMCwwLDAsMTYwLDg0LDAsMCwxNjAsMCwwLDAsMSwwLDAsMCw3MiwwLDAsMCwxMTgsNTAsMTE2LDU0LDExNSw1MCw0OCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTUsMTE1LDU2LDAsMCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTYsMTE1LDU0LDAsMCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTUsMTE1LDU2LDExOCw1MCwxMTYsNTYsMTE1LDU0LDAsMCwwLDAsMCwxMDQsOTcsMTE1LDMyLDEwNSwxMTUsNTgsMzIsMCwwLDAsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTcsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDk1LDExNSw5OSwxMDQsMTAxLDEwOSw5Nyw5NSwxMTYsMTIxLDExMiwxMDEsNjksMCwwLDIyNCw4NSwwLDAsMTYsMSwwLDAsODAsMzksMCwwLDAsMCwwLDAsODQsMTA0LDEwMSwzMiw3Niw2NSw5MCwzMiwxMTUsOTksMTA0LDEwMSwxMDksOTcsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDk5LDExMSwxMDMsMTEwLDEwNSwxMjIsMTAxLDEwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCwxLDAsMCwyMiwwLDAsMCwyMywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNSwxMjEsMTA5LDk4LDExMSwxMDgsMTE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDIyLDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY2LDk1LDczLDc4LDgzLDY3LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2Niw5NSw3Myw3OCw4Myw2Nyw5NSw1MSwxMTQsMTAzLDk4LDY5LDc4LDgzLDY5LDk1LDczLDgzLDc1LDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OCwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNjksMCwxMjAsODQsMCwwLDIwOCwyLDAsMCwyMjQsODUsMCwwLDE4NCwxLDAsMCwyNDgsMiwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDQ5LDQ5LDEwMSwxMTAsMTAwLDk1LDExMSwxMDIsOTUsMTAyLDEwNSwxMDgsMTAxLDY5LDAsMCwyMjQsODUsMCwwLDE2LDMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDgyLDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSwxMTAsMTAwLDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDQwLDMsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDIyLDAsMCwwLDAsMCwwLDAsMTUsMTQsMTMsMTIsMTEsMTAsOSw4LDE0LDAsMSwzLDYsMTAsMTAsOSwxMywxLDIsNCw3LDExLDExLDEwLDEyLDMsNCw1LDgsMTIsMTIsMTEsMTEsNiw3LDgsOSwxMywxMywxMiwxMCwxMCwxMSwxMiwxMywxNCwxNCwxMyw5LDEwLDExLDEyLDEzLDE0LDE1LDE0LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwwLDEsMiwzLDQsNSw2LDcsMSwwLDEsMiwzLDQsNSw2LDIsMSwwLDEsMiwzLDQsNSwzLDIsMSwwLDEsMiwzLDQsNCwzLDIsMSwwLDEsMiwzLDUsNCwzLDIsMSwwLDEsMiw2LDUsNCwzLDIsMSwwLDEsNyw2LDUsNCwzLDIsMSwwLDAsMCwwLDAsMTEyLDUsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDIyLDAsMCwwLDMxLDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3Nyw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw4MSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw4MSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsOCw0LDAsMCwxNDQsMzgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDk1LDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDczLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3Nyw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwxOTIsNywwLDAsMjMsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDQ4LDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw0OCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDQ4LDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw0OCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNjgsOTUsNjksNjksNjksNjksNzgsODMsNjYsOTUsNzMsNzgsODMsNjcsOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCwyMDAsNiwwLDAsMjQ4LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCw1Niw5LDAsMCwzNCwwLDAsMCwzNSwwLDAsMCwzNiwwLDAsMCwyMywwLDAsMCwzNywwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExMiwxMTYsMTE0LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw3Myw4MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw0OSw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDUwLDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw1MCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDUwLDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw1MCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNzAsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3OCw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3OCw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCwyNDAsNywwLDAsMTQ0LDM4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw0OSw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDUwLDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw1MCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDUwLDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw1MCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNzAsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTIsMTEsMCwwLDI0LDAsMCwwLDM4LDAsMCwwLDM5LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY2LDk1LDczLDc4LDgzLDY3LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDIyNCw4NSwwLDAsMTIwLDEwLDAsMCwyNDgsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDIzMiwxMiwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsMjQsMCwwLDAsNDMsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDgsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSwxMTIsMTE2LDExNCw5NSwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsNzMsODAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsNDksOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsNDksOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw1MCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNTAsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw1MCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNTAsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDcwLDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY4LDk1LDczLDc4LDgzLDY5LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3OCw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3OCw5NSw2OSw2OSw2OSw2OSwwLDIyNCw4NSwwLDAsMTYwLDExLDAsMCwxNDQsMzgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDk1LDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDczLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNjksNjksNjksNjksNjksNjksNjksMCwwLDAsMCwwLDAsMCwwLDgsMTUsMCwwLDI1LDAsMCwwLDQ0LDAsMCwwLDQ1LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCw0MCwxNCwwLDAsMjQ4LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMDQsMTYsMCwwLDQ2LDAsMCwwLDQ3LDAsMCwwLDQ4LDAsMCwwLDI1LDAsMCwwLDQ5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3NSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3NSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsNTYsMTUsMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsNDksOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsNDksOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw1MCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNTAsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw1MCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNTAsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDcwLDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwxMTgsMCwwLDAsMCwwLDAsMCwxMTYsMCwwLDAsMCwwLDAsMCwxMTUsMCwwLDAsMCwwLDAsMCw2NCwwLDAsMCwwLDAsMCwwLDE2LDE4LDAsMCw1MCwwLDAsMCw1MSwwLDAsMCw1NiwwLDAsMCwyNDgsMjU1LDI1NSwyNTUsMTYsMTgsMCwwLDUyLDAsMCwwLDUzLDAsMCwwLDE5MiwyNTUsMjU1LDI1NSwxOTIsMjU1LDI1NSwyNTUsMTYsMTgsMCwwLDU0LDAsMCwwLDU1LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU2LDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsOTksNjksNjksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDIwMCwxNywwLDAsMjI0LDQ1LDAsMCwwLDAsMCwwLDY0LDAsMCwwLDAsMCwwLDAsMTkyLDQ0LDAsMCw1NiwwLDAsMCw1NywwLDAsMCwxOTIsMjU1LDI1NSwyNTUsMTkyLDI1NSwyNTUsMjU1LDE5Miw0NCwwLDAsNTgsMCwwLDAsNTksMCwwLDAsMCwwLDAsMCwyMDgsMTgsMCwwLDYwLDAsMCwwLDYxLDAsMCwwLDI2LDAsMCwwLDIyLDAsMCwwLDIyLDAsMCwwLDIyLDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDI1LDAsMCwwLDI2LDAsMCwwLDI2LDAsMCwwLDI0LDAsMCwwLDI3LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Myw5OCw5NywxMTUsMTA1LDk5LDk1LDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDk4LDExNywxMDIsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDk5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxMzYsMTgsMCwwLDcyLDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDE5LDAsMCw2MiwwLDAsMCw2MywwLDAsMCw2NCwwLDAsMCwyOCwwLDAsMCw2NSwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExMiwxMTYsMTE0LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw3Myw4MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsOTUsNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsODMsNTcsOTUsNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsODMsNTcsOTUsNjksNjksNjksNjksMCwyMjQsODUsMCwwLDAsMTksMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsNzEsMTExLDExNiwzMiwxMDAsOTcsMTE2LDk3LDMyLDAsMCwwLDAsMCwwLDAsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDAsMCwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwxMDQsMTA1LDExNiwzMywwLDAsMTAwLDExMSwxMTAsMTAxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMTYsMTA1LDExMCwxMDMsMzIsMTE1LDEwNCwxMDUsMTE2LDMzLDAsMCwwLDAsMCw3Niw2NSw4Myw3MCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTEsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTUsMTA5LDk3LDEwMywxMDUsOTksNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTIwLDIwLDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw3Nyw5NywxMDMsMTA1LDk5LDMyLDExNCwxMDEsOTcsMTAwLDMzLDAsMCwwLDAsMCwxMTIsOTcsMTE0LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDAsMCwxMTIsOTcsMTE0LDExNSwxMDUsMTEwLDEwMywzMiw5OSwxMDQsMTE3LDExMCwxMDcsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNTAsOTksMTA0LDExNywxMTAsMTA3LDk1LDExNiw5Nyw5OCwxMDgsMTAxLDk1LDExNCwxMDEsOTcsMTAwLDk1LDEwMSwxMTQsMTE0LDExMSwxMTQsNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDIyNCwyMCwwLDAsODAsMzksMCwwLDAsMCwwLDAsNjcsMTA0LDExNywxMTAsMTA3LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMSwxMDIsMTAyLDExNSwxMDEsMTE2LDMyLDYxLDYxLDMyLDQ1LDQ5LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE2LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTYsMTA1LDEwOSwxMDEsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTEsMTEwLDExMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsODAsMjEsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNTQsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDk1LDk5LDEwNCwxMTcsMTEwLDEwNyw5NSwxMTYsOTcsOTgsMTA4LDEwMSw5NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDY5LDAsMCwwLDIyNCw4NSwwLDAsMTI4LDIxLDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw5OSwxMDQsMTE3LDExMCwxMDcsOTUsMTE1LDEwNSwxMjIsMTAxLDMyLDYxLDYxLDMyLDExNywxMDUsMTEwLDExNiw0NiwxMDksOTcsMTIwLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE2LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTYsMTA1LDEwOSwxMDEsNDQsMzIsOTksOTcsMTA4LDEwOCwzMiw0OSw0NSw1Niw0OCw0OCw0NSw2OCw2NSw3MCw4NSw4MSwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsNDYsMCwwLDAsMCwwLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiw5OSwxMTEsMTE3LDExMCwxMTYsMzIsMTA1LDExNSw1OCwzMiwwLDAsOTksMTE2LDExMSw5MSwwLDAsMCwwLDkzLDU4LDMyLDAsMCwwLDAsMCw4NCwxMDQsMTAxLDMyLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDIxLDAsMCw2NiwwLDAsMCw2NywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTEyLDIxLDAsMCw2OCwwLDAsMCw2OSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDg0LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTksOTcsMTE1LDMyLDk3LDMyLDExMiwxMTQsMTExLDk4LDEwOCwxMDEsMTA5LDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwwLDAsMCwwLDAsMCwwLDAsMCw4LDIxLDAsMCw3MCwwLDAsMCw3MSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsMzIsMTAxLDExMCw5OSwxMTEsMTAwLDEwMSwxMDAsMCwwLDExOCwxMDgsMTE0LDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMzIsMTE0LDEwMSw5NywxMDAsMzMsMCwwLDAsMCwwLDAsMCwwLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsMzIsMTE4LDEwOCwxMTQsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwwLDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw0OSw1MSwxMTAsMTExLDk1LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsOTUsMTE4LDEwOCwxMTQsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMzIsMjMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDExMiwxMTcsMTE1LDEwNCwxMDUsMTEwLDEwMywzMywwLDAsMCwwLDAsMCwwLDAsNzgsMTExLDMyLDc2LDY1LDgzLDEyMiwxMDUsMTEyLDMyLDg2LDc2LDgyLDMyLDExOSw5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDg2LDc2LDgyLDExNSwzMiwxMTUsMTAxLDk5LDExNiwxMDUsMTExLDExMCwwLDAsMCwwLDAsMCwwLDAsMCw2NCwyMywwLDAsNzIsMCwwLDAsNzMsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDUzLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsOTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiw5NSwxMTcsMTEwLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDY5LDAsMCwwLDAsMjI0LDg1LDAsMCwxNjgsMjMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDMyLDEwNSwxMTUsNTgsMzIsMCwxMTYsMTExLDExNiw5NywxMDgsMzIsMTA1LDExNiwxMDEsMTA5LDExNSw1OCwzMiwwLDAsMCw4MCw5NywxMTQsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMTE1LDMyLDExMCwxMTEsMTE5LDMzLDAsMCwwLDAsMCwwLDgwLDExNywxMTUsMTA0LDEwNSwxMTAsMTAzLDMyLDEwNSwxMTYsMTAxLDEwOSwzMiw5NywxMTYsMzIsMTA1LDExMCwxMDAsMTAxLDEyMCw1OCwzMiwwLDc5LDExMCwxMDgsMTIxLDMyLDc2LDY1LDgzLDEyMiwxMDUsMTEyLDMyLDgwLDc5LDczLDc4LDg0LDg3LDczLDgzLDY5LDMyLDY3LDcyLDg1LDc4LDc1LDY5LDY4LDMyLDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwwLDAsMCwwLDAsMjA4LDIzLDAsMCw3NCwwLDAsMCw3NSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1NSw5OCw5NywxMDAsOTUsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk1LDk5LDk3LDEwOCwxMDgsNjksMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTM2LDI0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNjgsMjQsMCwwLDc2LDAsMCwwLDc3LDAsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsMjYsMCwwLDc4LDAsMCwwLDc5LDAsMCwwLDI4LDAsMCwwLDI3LDAsMCwwLDgwLDAsMCwwLDgxLDAsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDI5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDk1LDk1LDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw1NCw5NSw5NSwxMDIsMTE3LDExMCw5OSw3Myw5MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw1MCw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDQ5LDQ5LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTExLDExNCwxMTUsNjksMTE4LDY5LDg1LDEwOCw4Miw3OCw4Myw1MSw5NSw1NCwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDY5LDY5LDk1LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDgzLDY2LDk1LDY5LDY5LDcwLDExOCw4Myw2NSw5NSw2OSw2OSw2OSwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsNTQsOTUsOTUsOTgsOTcsMTE1LDEwMSw3Myw3MCwxMTgsODIsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1MCwxMDUsMTExLDU0LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNjksNjksNjksNjksMCwwLDAsMCwxMjAsODQsMCwwLDIwOCwyNSwwLDAsMjI0LDg1LDAsMCw1NiwyNSwwLDAsOCwyNiwwLDAsMCwwLDAsMCw5MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDQ5LDQ5LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTExLDExNCwxMTUsNjksMTE4LDY5LDg1LDEwOCw4Miw3OCw4Myw0OCw5NSw1NCwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDY5LDY5LDk1LDAsMCwwLDEyMCw4NCwwLDAsMzIsMjYsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNDksMTExLDEwOCwxMDAsOTUsMTE1LDExNiwxMjEsMTA4LDEwMSw5NSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTA1LDExMSwxMTAsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTM2LDI2LDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDQ5LDUyLDExMCwxMTEsMTE2LDk1LDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMDEsMTAwLDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxOTIsMjYsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDg0LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwxMTAsMzksMTE2LDMyLDExNSwxMDEsMTAxLDEwOSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTAxLDEwMCwwLDAsMCwwLDAsMCwyMjQsMjYsMCwwLDgyLDAsMCwwLDgzLDAsMCwwLDIyLDAsMCwwLDAsMCwwLDAsODQsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEwMSwxMDEsMTA5LDExNSwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTgsMTAxLDMyLDExMSwxMDgsMTAwLDMyLDExNSwxMTYsMTIxLDEwOCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsMCwwLDAsMCwwLDAsMCwwLDE3NiwyNiwwLDAsODQsMCwwLDAsODUsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExOCw5NywxMDgsMTA1LDEwMCwwLDAsMCwwLDAsMTUyLDIwLDAsMCw4NiwwLDAsMCw4NywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDEwMywxMTEsMTA1LDExMCwxMDMsMzIsMTAwLDExMSwxMTksMTEwLDMzLDAsMCwwLDAsMCwwLDAsMCwwLDEyOCwyOCwwLDAsODgsMCwwLDAsODksMCwwLDAsOTAsMCwwLDAsMzAsMCwwLDAsOTEsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDgsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSwxMTIsMTE2LDExNCw5NSwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsNzMsODAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1MCwxMDUsMTExLDU0LDExNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDksNDgsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDIsMTA1LDEwOCwxMDEsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw1NSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw1NSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDI0MCwyNywwLDAsMTQ0LDM4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwxMjAsMjksMCwwLDkyLDAsMCwwLDkzLDAsMCwwLDk0LDAsMCwwLDMxLDAsMCwwLDk1LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw1MSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw1MSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwyMjQsODUsMCwwLDgsMjksMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDExOCwxMTEsMTA1LDEwMCwwLDAsMCwwLDk4LDExMSwxMTEsMTA4LDAsMCwwLDAsOTksMTA0LDk3LDExNCwwLDAsMCwwLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDk5LDEwNCw5NywxMTQsMCwwLDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsOTksMTA0LDk3LDExNCwwLDAsMCwxMTUsMTA0LDExMSwxMTQsMTE2LDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDEwNCwxMTEsMTE0LDExNiwwLDAsMTA1LDExMCwxMTYsMCwwLDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMCwwLDAsMCwxMDgsMTExLDExMCwxMDMsMCwwLDAsMCwxMTcsMTEwLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDEwOCwxMTEsMTEwLDEwMywwLDAsMCwxMDIsMTA4LDExMSw5NywxMTYsMCwwLDAsMTAwLDExMSwxMTcsOTgsMTA4LDEwMSwwLDAsMTE1LDExNiwxMDAsNTgsNTgsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMCwwLDAsMCwwLDExNSwxMTYsMTAwLDU4LDU4LDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjAsMTE3LDExMCwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiw5OSwxMDQsOTcsMTE0LDYyLDAsMCwwLDAsMCwwLDAsMCwxMTUsMTE2LDEwMCw1OCw1OCwxMTksMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMCwwLDAsMCwxMDEsMTA5LDExNSw5OSwxMTQsMTA1LDExMiwxMTYsMTAxLDExMCw1OCw1OCwxMTgsOTcsMTA4LDAsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNTgsNTgsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE4LDEwNSwxMDEsMTE5LDAsNzgsNDksNDgsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNDksNDksMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE4LDEwNSwxMDEsMTE5LDY5LDAsMCwwLDAsMCwxMjAsODQsMCwwLDIwMCwzMCwwLDAsNzgsNDksNDgsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNTEsMTE4LDk3LDEwOCw2OSwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDI0MCwzMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDksOTUsOTUsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw5NSw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDczLDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDEyMCw4NCwwLDAsODAsMzEsMCwwLDY0LDg2LDAsMCwxNiwzMSwwLDAsMCwwLDAsMCwxLDAsMCwwLDEyMCwzMSwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTAsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw3MywxMDQsNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDEwNCw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3MywxMDQsNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwxNTIsMzEsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMjAsMzEsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDk5LDY5LDY5LDY5LDY5LDAsMCw2NCw4NiwwLDAsMjQwLDMxLDAsMCwwLDAsMCwwLDEsMCwwLDAsMTIwLDMxXSwiaTgiLEFMTE9DX05PTkUsUnVudGltZS5HTE9CQUxfQkFTRSk7YWxsb2NhdGUoWzIwOCwzNiwwLDAsOTYsMCwwLDAsOTcsMCwwLDAsMjksMCwwLDAsMjUsMCwwLDAsMjMsMCwwLDAsMjMsMCwwLDAsMzAsMCwwLDAsMzEsMCwwLDAsMjYsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMzIsMCwwLDAsMjcsMCwwLDAsMzMsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDExNSwxMTYsMTAwLDExMSwxMTcsMTE2LDk4LDExNywxMDIsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDE3NiwzNiwwLDAsMTM2LDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsNTYsMzcsMCwwLDk4LDAsMCwwLDk5LDAsMCwwLDMwLDAsMCwwLDI1LDAsMCwwLDIzLDAsMCwwLDIzLDAsMCwwLDM0LDAsMCwwLDMxLDAsMCwwLDI2LDAsMCwwLDM1LDAsMCwwLDM2LDAsMCwwLDM0LDAsMCwwLDI4LDAsMCwwLDM1LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMTUsMTE2LDEwMCwxMDUsMTEwLDk4LDExNywxMDIsNzMsMTE5LDY5LDY5LDAsMjI0LDg1LDAsMCwzMiwzNywwLDAsMTM2LDQ0LDAsMCwwLDAsMCwwLDExNywxMTAsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsMTA4LDExMSw5OSw5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDMyLDEwNSwxMTAsMTEyLDExNywxMTYsMCwwLDAsMCwwLDAsMCwyMDgsMzcsMCwwLDEwMCwwLDAsMCwxMDEsMCwwLDAsMzEsMCwwLDAsMjIsMCwwLDAsMjQsMCwwLDAsMjQsMCwwLDAsMzcsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMzgsMCwwLDAsMjYsMCwwLDAsMzYsMCwwLDAsMjksMCwwLDAsMzcsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDExNSwxMTYsMTAwLDExMSwxMTcsMTE2LDk4LDExNywxMDIsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTc2LDM3LDAsMCw3Miw0NCwwLDAsMCwwLDAsMCwwLDAsMCwwLDU2LDM4LDAsMCwxMDIsMCwwLDAsMTAzLDAsMCwwLDMyLDAsMCwwLDIyLDAsMCwwLDI0LDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDM5LDAsMCwwLDQwLDAsMCwwLDM4LDAsMCwwLDI0LDAsMCwwLDM5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMTUsMTE2LDEwMCwxMDUsMTEwLDk4LDExNywxMDIsNzMsOTksNjksNjksMCwyMjQsODUsMCwwLDMyLDM4LDAsMCw3Miw0NCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSw5OSwxMTEsMTE3LDExMCwxMTYsNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsNzIsMzgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Nyw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExOSwxMDEsOTcsMTA3LDk1LDk5LDExMSwxMTcsMTEwLDExNiw2OSwwLDAsMCw2NCw4NiwwLDAsMTEyLDM4LDAsMCwwLDAsMCwwLDEsMCwwLDAsMTA0LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMjMyLDM4LDAsMCwxMDQsMCwwLDAsMTA1LDAsMCwwLDQxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MCwzOSwwLDAsMTA2LDAsMCwwLDEwNywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDgzLDExNiw0OSw0OSwxMDgsMTExLDEwMywxMDUsOTksOTUsMTAxLDExNCwxMTQsMTExLDExNCwwLDIyNCw4NSwwLDAsMjE2LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0MCwzOSwwLDAsMTA0LDAsMCwwLDEwOCwwLDAsMCw0MSwwLDAsMCwwLDAsMCwwLDgzLDExNiw0OSw1MCwxMDgsMTAxLDExMCwxMDMsMTE2LDEwNCw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDE2LDM5LDAsMCwyMzIsMzgsMCwwLDAsMCwwLDAsODMsMTE2LDQ5LDUxLDExNCwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCw1NiwzOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDEwMywxMDEsMTEwLDEwMSwxMTQsMTA1LDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1OCwzMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDIwMCwzOSwwLDAsMTA5LDAsMCwwLDExMCwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MCwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDY5LDAsMCwyMjQsODUsMCwwLDE3NiwzOSwwLDAsODAsMzksMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMSwxMTQsMTE0LDExMSwxMTQsOTUsOTksOTcsMTE2LDEwMSwxMDMsMTExLDExNCwxMjEsNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMjE2LDM5LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTAsOTUsOTUsMTAwLDExMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw2OSwwLDAsMjI0LDg1LDAsMCwwLDQwLDAsMCwyNDgsMzksMCwwLDAsMCwwLDAsMCwwLDAsMCwxMjAsNDAsMCwwLDExMSwwLDAsMCwxMTIsMCwwLDAsNDIsMCwwLDAsMjIsMCwwLDAsMzAsMCwwLDAsMzEsMCwwLDAsMjMsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNTIsOTUsOTUsMTAzLDEwMSwxMTAsMTAxLDExNCwxMDUsOTksOTUsMTAxLDExNCwxMTQsMTExLDExNCw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDgwLDQwLDAsMCwyNCw0MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIxNiw0MCwwLDAsMTEzLDAsMCwwLDExNCwwLDAsMCw0MywwLDAsMCwyNCwwLDAsMCwzMCwwLDAsMCwzMSwwLDAsMCwyNSwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw1MSw5NSw5NSwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDk1LDk5LDk3LDExNiwxMDEsMTAzLDExMSwxMTQsMTIxLDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNzYsNDAsMCwwLDI0LDQwLDAsMCwwLDAsMCwwLDEwOSwxMTcsMTE2LDEwMSwxMjAsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDk3LDEwNSwxMDgsMTAxLDEwMCwwLDAsMCwwLDAsMCwwLDEwMSw5OSwzMiw2MSw2MSwzMiw0OCwwLDQ3LDg1LDExNSwxMDEsMTE0LDExNSw0NywxMTgsMTAxLDExNCwxMDksOTcsNDcsMTE2LDEwOSwxMTIsNDcsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNDcsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDcsMTA4LDEwNSw5OCw0NywxMDgsMTA1LDk4LDk5LDEyMCwxMjAsNDcsMTA5LDExNywxMTYsMTAxLDEyMCw0Niw5OSwxMTIsMTEyLDAsMTE3LDExMCwxMDgsMTExLDk5LDEwNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywwLDAsMCwwLDAsMCwwLDAsNzIsNDQsMCwwLDExNSwwLDAsMCwxMTYsMCwwLDAsMjYsMCwwLDAsMjIsMCwwLDAsMjQsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMzgsMCwwLDAsMjYsMCwwLDAsMzYsMCwwLDAsMjQsMCwwLDAsMzksMCwwLDAsMCwwLDAsMCwxMzYsNDQsMCwwLDExNywwLDAsMCwxMTgsMCwwLDAsMzMsMCwwLDAsMjUsMCwwLDAsMjMsMCwwLDAsMjMsMCwwLDAsMzQsMCwwLDAsMzEsMCwwLDAsMjYsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMzIsMCwwLDAsMjgsMCwwLDAsMzUsMCwwLDAsOCwwLDAsMCwwLDAsMCwwLDE5Miw0NCwwLDAsNTYsMCwwLDAsNTcsMCwwLDAsMjQ4LDI1NSwyNTUsMjU1LDI0OCwyNTUsMjU1LDI1NSwxOTIsNDQsMCwwLDU4LDAsMCwwLDU5LDAsMCwwLDgsMCwwLDAsMCwwLDAsMCw4LDQ1LDAsMCwxMTksMCwwLDAsMTIwLDAsMCwwLDI0OCwyNTUsMjU1LDI1NSwyNDgsMjU1LDI1NSwyNTUsOCw0NSwwLDAsMTIxLDAsMCwwLDEyMiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsODAsNDUsMCwwLDEyMywwLDAsMCwxMjQsMCwwLDAsMjUyLDI1NSwyNTUsMjU1LDI1MiwyNTUsMjU1LDI1NSw4MCw0NSwwLDAsMTI1LDAsMCwwLDEyNiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsMTUyLDQ1LDAsMCwxMjcsMCwwLDAsMTI4LDAsMCwwLDI1MiwyNTUsMjU1LDI1NSwyNTIsMjU1LDI1NSwyNTUsMTUyLDQ1LDAsMCwxMjksMCwwLDAsMTMwLDAsMCwwLDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwwLDAsMCwwLDAsMCwwLDAsMTE3LDExMCwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOTYsNDMsMCwwLDEzMSwwLDAsMCwxMzIsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEzNiw0MywwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwxMDUsMTExLDExNSw5NSw5OCw5NywxMTUsMTAxLDU4LDU4LDk5LDEwOCwxMDEsOTcsMTE0LDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDEwNSwxMTEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNTUsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDY0LDQzLDAsMCwyMDAsMzksMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDEwNSwxMTEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNjksMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDExMiw0MywwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk4LDk3LDExNSwxMDUsOTksOTUsMTA1LDExMSwxMTUsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNDQsNDMsMCwwLDEzNiw0MywwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTExLDExNSw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMjA4LDQzLDAsMCwxMzYsNDMsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUzLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwxNiw0NCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUzLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDgwLDQ0LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTEsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwxNDQsNDQsMCwwLDAsMCwwLDAsMSwwLDAsMCwxOTIsNDMsMCwwLDMsMjQ0LDI1NSwyNTUsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUxLDk4LDk3LDExNSwxMDUsOTksOTUsMTA1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwyMTYsNDQsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDQ0LDAsMCwzLDI0NCwyNTUsMjU1LDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MSw5OCw5NywxMTUsMTA1LDk5LDk1LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSwwLDAsNjQsODYsMCwwLDMyLDQ1LDAsMCwwLDAsMCwwLDEsMCwwLDAsMTkyLDQzLDAsMCwzLDI0NCwyNTUsMjU1LDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MSw5OCw5NywxMTUsMTA1LDk5LDk1LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCw2NCw4NiwwLDAsMTA0LDQ1LDAsMCwwLDAsMCwwLDEsMCwwLDAsMCw0NCwwLDAsMywyNDQsMjU1LDI1NSw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTExLDExNSwxMTYsMTE0LDEwMSw5NywxMDksNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDY5LDY5LDAsNjQsODYsMCwwLDE3Niw0NSwwLDAsMywwLDAsMCwyLDAsMCwwLDE5Miw0NCwwLDAsMiwwLDAsMCw4MCw0NSwwLDAsMiw4LDAsMCwwLDAsMCwwLDcyLDQ2LDAsMCwxMzUsMCwwLDAsMTM2LDAsMCwwLDQ0LDAsMCwwLDIyLDAsMCwwLDMwLDAsMCwwLDMxLDAsMCwwLDI2LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU3LDk1LDk1LDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSw2OSwwLDAsMCwyMjQsODUsMCwwLDQwLDQ2LDAsMCwyNCw0MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDU2LDYwLDAsMCwxMzcsMCwwLDAsMTM4LDAsMCwwLDEzOSwwLDAsMCwyMiwwLDAsMCwyNSwwLDAsMCwzMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw5Niw2MCwwLDAsMTQwLDAsMCwwLDE0MSwwLDAsMCwxMzksMCwwLDAsMjMsMCwwLDAsMjYsMCwwLDAsMzMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsNjUsMCwwLDE0MiwwLDAsMCwxNDMsMCwwLDAsMTM5LDAsMCwwLDIyLDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDMxLDAsMCwwLDMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw5Nyw5OCw5OSwxMDAsMTAxLDEwMiw2NSw2Niw2Nyw2OCw2OSw3MCwxMjAsODgsNDMsNDUsMTEyLDgwLDEwNSw3MywxMTAsNzgsMCwwLDAsMCwwLDAsMCwwLDM3LDExMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDE2OCw2NSwwLDAsMTQ0LDAsMCwwLDE0NSwwLDAsMCwxMzksMCwwLDAsMzMsMCwwLDAsMzQsMCwwLDAsMzUsMCwwLDAsMzYsMCwwLDAsMzcsMCwwLDAsMzgsMCwwLDAsMzksMCwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsNDMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTA0LDY2LDAsMCwxNDYsMCwwLDAsMTQ3LDAsMCwwLDEzOSwwLDAsMCwyNSwwLDAsMCwyNiwwLDAsMCw0NCwwLDAsMCwyNywwLDAsMCw0NSwwLDAsMCwyMiwwLDAsMCwyMywwLDAsMCwyOCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjcsMCwwLDE0OCwwLDAsMCwxNDksMCwwLDAsMTM5LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDQ2LDAsMCwwLDMxLDAsMCwwLDQ3LDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDAsMCwwLDAsMzcsMTEyLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDAsNjIsMCwwLDE1MCwwLDAsMCwxNTEsMCwwLDAsMTM5LDAsMCwwLDQ1LDAsMCwwLDQ4LDAsMCwwLDQ5LDAsMCwwLDUwLDAsMCwwLDUxLDAsMCwwLDUyLDAsMCwwLDIyLDAsMCwwLDI0OCwyNTUsMjU1LDI1NSw0MCw2MiwwLDAsNDYsMCwwLDAsNDcsMCwwLDAsNDgsMCwwLDAsNDksMCwwLDAsNTAsMCwwLDAsNTEsMCwwLDAsNTIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsNzIsNTgsMzcsNzcsNTgsMzcsODMsMzcsMTA5LDQ3LDM3LDEwMCw0NywzNywxMjEsMzcsODksNDUsMzcsMTA5LDQ1LDM3LDEwMCwzNyw3Myw1OCwzNyw3Nyw1OCwzNyw4MywzMiwzNywxMTIsMCwwLDAsMCwwLDM3LDcyLDU4LDM3LDc3LDAsMCwwLDM3LDcyLDU4LDM3LDc3LDU4LDM3LDgzLDAsMCwwLDAsMjAwLDYyLDAsMCwxNTIsMCwwLDAsMTUzLDAsMCwwLDEzOSwwLDAsMCw1MywwLDAsMCw1MywwLDAsMCw1NCwwLDAsMCw1NSwwLDAsMCw1NiwwLDAsMCw1NywwLDAsMCwyMywwLDAsMCwyNDgsMjU1LDI1NSwyNTUsMjAwLDYyLDAsMCw1NCwwLDAsMCw1NSwwLDAsMCw1NiwwLDAsMCw1NywwLDAsMCw1OCwwLDAsMCw1OSwwLDAsMCw2MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNywwLDAsMCw3MiwwLDAsMCw1OCwwLDAsMCwzNywwLDAsMCw3NywwLDAsMCw1OCwwLDAsMCwzNywwLDAsMCw4MywwLDAsMCwzNywwLDAsMCwxMDksMCwwLDAsNDcsMCwwLDAsMzcsMCwwLDAsMTAwLDAsMCwwLDQ3LDAsMCwwLDM3LDAsMCwwLDEyMSwwLDAsMCwzNywwLDAsMCw4OSwwLDAsMCw0NSwwLDAsMCwzNywwLDAsMCwxMDksMCwwLDAsNDUsMCwwLDAsMzcsMCwwLDAsMTAwLDAsMCwwLDM3LDAsMCwwLDczLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDgzLDAsMCwwLDMyLDAsMCwwLDM3LDAsMCwwLDExMiwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDcyLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsNzIsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMCwwLDAsMCw4OCw2MywwLDAsMTU0LDAsMCwwLDE1NSwwLDAsMCwxMzksMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTkyLDYzLDAsMCwxNTYsMCwwLDAsMTU3LDAsMCwwLDEzOSwwLDAsMCwyMywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNzYsNjAsMCwwLDE1OCwwLDAsMCwxNTksMCwwLDAsMTM5LDAsMCwwLDYxLDAsMCwwLDYyLDAsMCwwLDM0LDAsMCwwLDM1LDAsMCwwLDM2LDAsMCwwLDM3LDAsMCwwLDYzLDAsMCwwLDM4LDAsMCwwLDM5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI0MCw2MCwwLDAsMTYwLDAsMCwwLDE2MSwwLDAsMCwxMzksMCwwLDAsNjQsMCwwLDAsNjUsMCwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsNDMsMCwwLDAsNjYsMCwwLDAsNDQsMCwwLDAsNDUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDgsNjEsMCwwLDE2MiwwLDAsMCwxNjMsMCwwLDAsMTM5LDAsMCwwLDY3LDAsMCwwLDY4LDAsMCwwLDQ2LDAsMCwwLDQ3LDAsMCwwLDQ4LDAsMCwwLDQ5LDAsMCwwLDY5LDAsMCwwLDUwLDAsMCwwLDUxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDExMiw2MSwwLDAsMTY0LDAsMCwwLDE2NSwwLDAsMCwxMzksMCwwLDAsNzAsMCwwLDAsNzEsMCwwLDAsNTIsMCwwLDAsNTMsMCwwLDAsNTQsMCwwLDAsNTUsMCwwLDAsNzIsMCwwLDAsNTYsMCwwLDAsNTcsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTQ0LDY3LDAsMCwxNjYsMCwwLDAsMTY3LDAsMCwwLDEzOSwwLDAsMCwyNCwwLDAsMCwyNSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1NywwLDAsMCwwLDAsMCwzNyw3NiwxMDIsMCwwLDAsMCwwLDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDAsMCwwLDAsMzIsNjgsMCwwLDE2OCwwLDAsMCwxNjksMCwwLDAsMTM5LDAsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDY4LDAsMCwxNzAsMCwwLDAsMTcxLDAsMCwwLDEzOSwwLDAsMCwyMiwwLDAsMCw1OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNyw0Niw0OCw3NiwxMDIsMCwwLDAsMCwwLDAsMCw2NCw2OSwwLDAsMTcyLDAsMCwwLDE3MywwLDAsMCwxMzksMCwwLDAsMjMsMCwwLDAsNTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyNCw2NCwwLDAsMTc0LDAsMCwwLDE3NSwwLDAsMCwxMzksMCwwLDAsMzQsMCwwLDAsMzMsMCwwLDAsNTgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODAsNjQsMCwwLDE3NiwwLDAsMCwxNzcsMCwwLDAsMTM5LDAsMCwwLDM1LDAsMCwwLDM0LDAsMCwwLDU5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTgsMTAxLDk5LDExNiwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNiw2MCwwLDAsMTc4LDAsMCwwLDE3OSwwLDAsMCwxMzksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMzIsNTYsMCwwLDE4MCwwLDAsMCwxODEsMCwwLDAsMTM5LDAsMCwwLDQwLDAsMCwwLDM2LDAsMCwwLDQxLDAsMCwwLDM3LDAsMCwwLDQyLDAsMCwwLDIyLDAsMCwwLDM4LDAsMCwwLDI0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIwMCw1NywwLDAsMTgyLDAsMCwwLDE4MywwLDAsMCwxMzksMCwwLDAsMjIsMCwwLDAsMjMsMCwwLDAsMjUsMCwwLDAsNzMsMCwwLDAsNzQsMCwwLDAsMjYsMCwwLDAsNzUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTkyLDU5LDAsMCwxODQsMCwwLDAsMTg1LDAsMCwwLDEzOSwwLDAsMCw3NiwwLDAsMCw3NywwLDAsMCw2MCwwLDAsMCw2MSwwLDAsMCw2MiwwLDAsMCwwLDAsMCwwLDIzMiw1OSwwLDAsMTg2LDAsMCwwLDE4NywwLDAsMCwxMzksMCwwLDAsNzgsMCwwLDAsNzksMCwwLDAsNjMsMCwwLDAsNjQsMCwwLDAsNjUsMCwwLDAsMTE2LDAsMCwwLDExNCwwLDAsMCwxMTcsMCwwLDAsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMDIsOTcsMTA4LDExNSwxMDEsMCwwLDAsMTAyLDAsMCwwLDk3LDAsMCwwLDEwOCwwLDAsMCwxMTUsMCwwLDAsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsMTA5LDAsMCwwLDQ3LDAsMCwwLDM3LDAsMCwwLDEwMCwwLDAsMCw0NywwLDAsMCwzNywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDcyLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDgzLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNyw5NywzMiwzNyw5OCwzMiwzNywxMDAsMzIsMzcsNzIsNTgsMzcsNzcsNTgsMzcsODMsMzIsMzcsODksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNywwLDAsMCw5NywwLDAsMCwzMiwwLDAsMCwzNywwLDAsMCw5OCwwLDAsMCwzMiwwLDAsMCwzNywwLDAsMCwxMDAsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsNzIsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsODksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDczLDU4LDM3LDc3LDU4LDM3LDgzLDMyLDM3LDExMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsNzMsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsMTEyLDAsMCwwLDAsMCwwLDAsMTA4LDExMSw5OSw5NywxMDgsMTAxLDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsMCwwLDAsMCwwLDAsMCwzMiw1NiwwLDAsMTg4LDAsMCwwLDE4OSwwLDAsMCwxMzksMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTQsMTA4LDExMSw5OSw5NywxMDgsMTAxLDUzLDEwMiw5Nyw5OSwxMDEsMTE2LDY5LDAsMCwwLDIyNCw4NSwwLDAsOCw1NiwwLDAsMTA0LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDU2LDAsMCwxODgsMCwwLDAsMTkwLDAsMCwwLDEzOSwwLDAsMCwzOSwwLDAsMCwyMywwLDAsMCwyNCwwLDAsMCwyNSwwLDAsMCw0MywwLDAsMCw0MCwwLDAsMCw0NCwwLDAsMCw0MSwwLDAsMCw0NSwwLDAsMCwyNiwwLDAsMCw0MiwwLDAsMCwyNywwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1Myw5OSwxMTYsMTIxLDExMiwxMDEsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDk5LDExNiwxMjEsMTEyLDEwMSw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMTIwLDg0LDAsMCwxNDQsNTYsMCwwLDY0LDg2LDAsMCwxMjAsNTYsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNTYsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUzLDk5LDExNiwxMjEsMTEyLDEwMSw3Myw5OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwyMDgsNTYsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNTYsMCwwLDIsMCwwLDAsMCwwLDAsMCwxMjgsNTcsMCwwLDE4OCwwLDAsMCwxOTEsMCwwLDAsMTM5LDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDI4LDAsMCwwLDgwLDAsMCwwLDgxLDAsMCwwLDI5LDAsMCwwLDgyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTAwLDEwMSw5OSwxMTgsMTE2LDczLDk5LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsOTUsOTgsOTcsMTE1LDEwMSw2OSwwLDAsMTIwLDg0LDAsMCw5Niw1NywwLDAsNjQsODYsMCwwLDU2LDU3LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTIwLDU3LDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTAwLDEwMSw5OSwxMTgsMTE2LDczLDExOSw5OSw0OSw0OSw5NSw5NSwxMDksOTgsMTE1LDExNiw5NywxMTYsMTAxLDk1LDExNiw2OSw2OSwwLDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwxNjAsNTcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMjAsNTcsMCwwLDIsMCwwLDAsMCwwLDAsMCw2NCw1OCwwLDAsMTg4LDAsMCwwLDE5MiwwLDAsMCwxMzksMCwwLDAsMjYsMCwwLDAsMjcsMCwwLDAsMzAsMCwwLDAsODMsMCwwLDAsODQsMCwwLDAsMzEsMCwwLDAsODUsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsNzMsNjgsMTE1LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwyNCw1OCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDEyMCw1NywwLDAsMiwwLDAsMCwwLDAsMCwwLDE4NCw1OCwwLDAsMTg4LDAsMCwwLDE5MywwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsNzMsNjgsMTA1LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwxNDQsNTgsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMjAsNTcsMCwwLDIsMCwwLDAsMCwwLDAsMCw0OCw1OSwwLDAsMTg4LDAsMCwwLDE5NCwwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU0LDk1LDk1LDExMCw5NywxMTQsMTE0LDExMSwxMTksOTUsMTE2LDExMSw5NSwxMTcsMTE2LDEwMiw1Niw3Myw3NiwxMDYsNTEsNTAsNjksNjksNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDgsNTksMCwwLDE4NCw1OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDE1Miw1OSwwLDAsMTg4LDAsMCwwLDE5NSwwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU1LDk1LDk1LDExOSwxMDUsMTAwLDEwMSwxMTAsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNywxMTYsMTAyLDU2LDczLDc2LDEwNiw1MSw1MCw2OSw2OSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDExMiw1OSwwLDAsMTg0LDU4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMTAsMTE3LDEwOSwxMTIsMTE3LDExMCw5OSwxMTYsNzMsOTksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDE2OCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExMCwxMTcsMTA5LDExMiwxMTcsMTEwLDk5LDExNiw3MywxMTksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDIwOCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU0LDEwOCwxMTEsOTksOTcsMTA4LDEwMSw1Myw5NSw5NSwxMDUsMTA5LDExMiw2OSwwLDAsMCwyMjQsODUsMCwwLDI0OCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDgsMTA4LDk3LDExNiwxMDEsNzMsOTksNjksNjksMCwwLDAsMCwwLDIyNCw4NSwwLDAsMzIsNjAsMCwwLDMyLDU2LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTA4LDEwOCw5NywxMTYsMTAxLDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCw3Miw2MCwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDEwOSwxMTEsMTEwLDEwMSwxMjEsMTEyLDExNywxMTAsOTksMTE2LDczLDk5LDc2LDk4LDQ4LDY5LDY5LDY5LDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMTIwLDg0LDAsMCwxNDQsNjAsMCwwLDY0LDg2LDAsMCwxMTIsNjAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjAsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDEwOSwxMTEsMTEwLDEwMSwxMjEsMTEyLDExNywxMTAsOTksMTE2LDczLDk5LDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDAsMCw2NCw4NiwwLDAsMjA4LDYwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTY4LDYwLDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCwxMDksMTExLDExMCwxMDEsMTIxLDExMiwxMTcsMTEwLDk5LDExNiw3MywxMTksNzYsOTgsNDgsNjksNjksNjksMCwwLDAsMCwwLDY0LDg2LDAsMCwxNiw2MSwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDE2OCw2MCwwLDAsMiwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsMTA5LDExMSwxMTAsMTAxLDEyMSwxMTIsMTE3LDExMCw5OSwxMTYsNzMsMTE5LDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDAsMCw2NCw4NiwwLDAsODAsNjEsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjAsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExNiwxMDUsMTA5LDEwMSw5NSwxMDMsMTAxLDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTE2LDEwNSwxMDksMTAxLDk1LDk4LDk3LDExNSwxMDEsNjksMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyMTYsNjEsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTYsMTA1LDEwOSwxMDEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTUsMTE1LDExNiwxMTEsMTE0LDk3LDEwMywxMDEsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDI0OCw2MSwwLDAsNjQsODYsMCwwLDE0NCw2MSwwLDAsMCwwLDAsMCwzLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDI0MCw2MSwwLDAsMiwwLDAsMCwzMiw2MiwwLDAsMCw4LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTYsMTE2LDEwNSwxMDksMTAxLDk1LDEwMywxMDEsMTE2LDczLDExOSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTYsMTA1LDEwOSwxMDEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTUsMTE1LDExNiwxMTEsMTE0LDk3LDEwMywxMDEsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwxNTIsNjIsMCwwLDY0LDg2LDAsMCw4MCw2MiwwLDAsMCwwLDAsMCwzLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDI0MCw2MSwwLDAsMiwwLDAsMCwxOTIsNjIsMCwwLDAsOCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExNiwxMDUsMTA5LDEwMSw5NSwxMTIsMTE3LDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsOTUsOTUsMTE2LDEwNSwxMDksMTAxLDk1LDExMiwxMTcsMTE2LDY5LDAsMCwwLDAsMTIwLDg0LDAsMCw1Niw2MywwLDAsNjQsODYsMCwwLDI0MCw2MiwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDgwLDYzLDAsMCwwLDgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMTYsMTA1LDEwOSwxMDEsOTUsMTEyLDExNywxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsNjQsODYsMCwwLDEyMCw2MywwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDgwLDYzLDAsMCwwLDgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTUsNzMsOTksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTEsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNjksMCwxMjAsODQsMCwwLDI0OCw2MywwLDAsNjQsODYsMCwwLDIyNCw2MywwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDE2LDY0LDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTUsNzMsMTE5LDY5LDY5LDAsMCwwLDAsNjQsODYsMCwwLDU2LDY0LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTYsNjQsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDEwMywxMDEsMTE2LDczLDk5LDc4LDgzLDk1LDQ5LDU3LDEwNSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDEwMywxMDEsMTE2LDczLDk5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Miw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDIwOCw2NCwwLDAsNjQsODYsMCwwLDE4NCw2NCwwLDAsMCwwLDAsMCwxLDAsMCwwLDI0MCw2NCwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsMTEyLDY0LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMjQ4LDY0LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw3MywxMTksNzgsODMsOTUsNDksNTcsMTA1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTgsMTE3LDEwMiw5NSwxMDUsMTE2LDEwMSwxMTQsOTcsMTE2LDExMSwxMTQsNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1Nyw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw3MywxMTksNjksNjksMCwwLDAsNjQsODYsMCwwLDEyMCw2NSwwLDAsMCwwLDAsMCwxLDAsMCwwLDI0MCw2NCwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsNDgsNjUsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNDQsNjUsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDk5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDk5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Miw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMTIsMTE3LDExNiw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDQwLDY2LDAsMCw2NCw4NiwwLDAsMTYsNjYsMCwwLDAsMCwwLDAsMSwwLDAsMCw3Miw2NiwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsMjAwLDY1LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsODAsNjYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDExOSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDExOSw2OSw2OSwwLDAsMCw2NCw4NiwwLDAsMjA4LDY2LDAsMCwwLDAsMCwwLDEsMCwwLDAsNzIsNjYsMCwwLDAsMCwwLDAsNjQsODYsMCwwLDEzNiw2NiwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDIzMiw2NiwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSwxMDMsMTAxLDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMTA0LDY3LDAsMCw2NCw4NiwwLDAsMzIsNjcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMzYsNjcsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDEwNSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OSw5NSw5NSwxMDksMTExLDExMCwxMDEsMTIxLDk1LDEwMywxMDEsMTE2LDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyNDgsNjcsMCwwLDY0LDg2LDAsMCwxNzYsNjcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwyNCw2OCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSwxMTIsMTE3LDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTEyLDExNywxMTYsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMTM2LDY4LDAsMCw2NCw4NiwwLDAsNjQsNjgsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTEyLDExNywxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OSw5NSw5NSwxMDksMTExLDExMCwxMDEsMTIxLDk1LDExMiwxMTcsMTE2LDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyNCw2OSwwLDAsNjQsODYsMCwwLDIwOCw2OCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDU2LDY5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY1LDAsMCwwLDc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MCwwLDAsMCw3NywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY1LDc3LDAsMCwwLDAsMCwwLDgwLDc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NCwwLDAsMCw5NywwLDAsMCwxMTAsMCwwLDAsMTE3LDAsMCwwLDk3LDAsMCwwLDExNCwwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw3MCwwLDAsMCwxMDEsMCwwLDAsOTgsMCwwLDAsMTE0LDAsMCwwLDExNywwLDAsMCw5NywwLDAsMCwxMTQsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NywwLDAsMCw5NywwLDAsMCwxMTQsMCwwLDAsOTksMCwwLDAsMTA0LDAsMCwwLDAsMCwwLDAsNjUsMCwwLDAsMTEyLDAsMCwwLDExNCwwLDAsMCwxMDUsMCwwLDAsMTA4LDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwxMDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDc0LDAsMCwwLDExNywwLDAsMCwxMDgsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2NSwwLDAsMCwxMTcsMCwwLDAsMTAzLDAsMCwwLDExNywwLDAsMCwxMTUsMCwwLDAsMTE2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCwxMDEsMCwwLDAsMTEyLDAsMCwwLDExNiwwLDAsMCwxMDEsMCwwLDAsMTA5LDAsMCwwLDk4LDAsMCwwLDEwMSwwLDAsMCwxMTQsMCwwLDAsMCwwLDAsMCw3OSwwLDAsMCw5OSwwLDAsMCwxMTYsMCwwLDAsMTExLDAsMCwwLDk4LDAsMCwwLDEwMSwwLDAsMCwxMTQsMCwwLDAsMCwwLDAsMCw3OCwwLDAsMCwxMTEsMCwwLDAsMTE4LDAsMCwwLDEwMSwwLDAsMCwxMDksMCwwLDAsOTgsMCwwLDAsMTAxLDAsMCwwLDExNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjgsMCwwLDAsMTAxLDAsMCwwLDk5LDAsMCwwLDEwMSwwLDAsMCwxMDksMCwwLDAsOTgsMCwwLDAsMTAxLDAsMCwwLDExNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsOTcsMCwwLDAsMTEwLDAsMCwwLDAsMCwwLDAsNzAsMCwwLDAsMTAxLDAsMCwwLDk4LDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsOTcsMCwwLDAsMTE0LDAsMCwwLDAsMCwwLDAsNjVdLCJpOCIsQUxMT0NfTk9ORSxSdW50aW1lLkdMT0JBTF9CQVNFKzkzMjQpO2FsbG9jYXRlKFsxMTIsMCwwLDAsMTE0LDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwwLDAsMCwwLDc0LDAsMCwwLDExNywwLDAsMCwxMDgsMCwwLDAsMCwwLDAsMCw2NSwwLDAsMCwxMTcsMCwwLDAsMTAzLDAsMCwwLDAsMCwwLDAsODMsMCwwLDAsMTAxLDAsMCwwLDExMiwwLDAsMCwwLDAsMCwwLDc5LDAsMCwwLDk5LDAsMCwwLDExNiwwLDAsMCwwLDAsMCwwLDc4LDAsMCwwLDExMSwwLDAsMCwxMTgsMCwwLDAsMCwwLDAsMCw2OCwwLDAsMCwxMDEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzQsOTcsMTEwLDExNyw5NywxMTQsMTIxLDAsNzAsMTAxLDk4LDExNCwxMTcsOTcsMTE0LDEyMSwwLDAsMCwwLDAsMCwwLDAsNzcsOTcsMTE0LDk5LDEwNCwwLDAsMCw2NSwxMTIsMTE0LDEwNSwxMDgsMCwwLDAsNzcsOTcsMTIxLDAsMCwwLDAsMCw3NCwxMTcsMTEwLDEwMSwwLDAsMCwwLDc0LDExNywxMDgsMTIxLDAsMCwwLDAsNjUsMTE3LDEwMywxMTcsMTE1LDExNiwwLDAsODMsMTAxLDExMiwxMTYsMTAxLDEwOSw5OCwxMDEsMTE0LDAsMCwwLDAsMCwwLDAsNzksOTksMTE2LDExMSw5OCwxMDEsMTE0LDAsNzgsMTExLDExOCwxMDEsMTA5LDk4LDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDY4LDEwMSw5OSwxMDEsMTA5LDk4LDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDc0LDk3LDExMCwwLDAsMCwwLDAsNzAsMTAxLDk4LDAsMCwwLDAsMCw3Nyw5NywxMTQsMCwwLDAsMCwwLDY1LDExMiwxMTQsMCwwLDAsMCwwLDc0LDExNywxMTAsMCwwLDAsMCwwLDc0LDExNywxMDgsMCwwLDAsMCwwLDY1LDExNywxMDMsMCwwLDAsMCwwLDgzLDEwMSwxMTIsMCwwLDAsMCwwLDc5LDk5LDExNiwwLDAsMCwwLDAsNzgsMTExLDExOCwwLDAsMCwwLDAsNjgsMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NywwLDAsMCwxMTEsMCwwLDAsMTEwLDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDg0LDAsMCwwLDExNywwLDAsMCwxMDEsMCwwLDAsMTE1LDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw4NywwLDAsMCwxMDEsMCwwLDAsMTAwLDAsMCwwLDExMCwwLDAsMCwxMDEsMCwwLDAsMTE1LDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw4NCwwLDAsMCwxMDQsMCwwLDAsMTE3LDAsMCwwLDExNCwwLDAsMCwxMTUsMCwwLDAsMTAwLDAsMCwwLDk3LDAsMCwwLDEyMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzAsMCwwLDAsMTE0LDAsMCwwLDEwNSwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCw5NywwLDAsMCwxMTYsMCwwLDAsMTE3LDAsMCwwLDExNCwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCwxMTcsMCwwLDAsMTEwLDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsMTExLDAsMCwwLDExMCwwLDAsMCwwLDAsMCwwLDg0LDAsMCwwLDExNywwLDAsMCwxMDEsMCwwLDAsMCwwLDAsMCw4NywwLDAsMCwxMDEsMCwwLDAsMTAwLDAsMCwwLDAsMCwwLDAsODQsMCwwLDAsMTA0LDAsMCwwLDExNywwLDAsMCwwLDAsMCwwLDcwLDAsMCwwLDExNCwwLDAsMCwxMDUsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCw5NywwLDAsMCwxMTYsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMTE3LDExMCwxMDAsOTcsMTIxLDAsMCw3NywxMTEsMTEwLDEwMCw5NywxMjEsMCwwLDg0LDExNywxMDEsMTE1LDEwMCw5NywxMjEsMCw4NywxMDEsMTAwLDExMCwxMDEsMTE1LDEwMCw5NywxMjEsMCwwLDAsMCwwLDAsMCw4NCwxMDQsMTE3LDExNCwxMTUsMTAwLDk3LDEyMSwwLDAsMCwwLDAsMCwwLDAsNzAsMTE0LDEwNSwxMDAsOTcsMTIxLDAsMCw4Myw5NywxMTYsMTE3LDExNCwxMDAsOTcsMTIxLDAsMCwwLDAsMCwwLDAsMCw4MywxMTcsMTEwLDAsMCwwLDAsMCw3NywxMTEsMTEwLDAsMCwwLDAsMCw4NCwxMTcsMTAxLDAsMCwwLDAsMCw4NywxMDEsMTAwLDAsMCwwLDAsMCw4NCwxMDQsMTE3LDAsMCwwLDAsMCw3MCwxMTQsMTA1LDAsMCwwLDAsMCw4Myw5NywxMTYsMCwwLDAsMCwwLDIsMCwwLDE5MiwzLDAsMCwxOTIsNCwwLDAsMTkyLDUsMCwwLDE5Miw2LDAsMCwxOTIsNywwLDAsMTkyLDgsMCwwLDE5Miw5LDAsMCwxOTIsMTAsMCwwLDE5MiwxMSwwLDAsMTkyLDEyLDAsMCwxOTIsMTMsMCwwLDE5MiwxNCwwLDAsMTkyLDE1LDAsMCwxOTIsMTYsMCwwLDE5MiwxNywwLDAsMTkyLDE4LDAsMCwxOTIsMTksMCwwLDE5MiwyMCwwLDAsMTkyLDIxLDAsMCwxOTIsMjIsMCwwLDE5MiwyMywwLDAsMTkyLDI0LDAsMCwxOTIsMjUsMCwwLDE5MiwyNiwwLDAsMTkyLDI3LDAsMCwxOTIsMjgsMCwwLDE5MiwyOSwwLDAsMTkyLDMwLDAsMCwxOTIsMzEsMCwwLDE5MiwwLDAsMCwxNzksMSwwLDAsMTk1LDIsMCwwLDE5NSwzLDAsMCwxOTUsNCwwLDAsMTk1LDUsMCwwLDE5NSw2LDAsMCwxOTUsNywwLDAsMTk1LDgsMCwwLDE5NSw5LDAsMCwxOTUsMTAsMCwwLDE5NSwxMSwwLDAsMTk1LDEyLDAsMCwxOTUsMTMsMCwwLDIxMSwxNCwwLDAsMTk1LDE1LDAsMCwxOTUsMCwwLDEyLDE4NywxLDAsMTIsMTk1LDIsMCwxMiwxOTUsMywwLDEyLDE5NSw0LDAsMTIsMjExLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEyOCw4MywwLDAsMTk2LDAsMCwwLDE5NywwLDAsMCw4OSwwLDAsMCwwLDAsMCwwLDExNSwxMTYsMTAwLDU4LDU4LDk4LDk3LDEwMCw5NSw5OSw5NywxMTUsMTE2LDAsMCwwLDgzLDExNiw1NywxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDAsMCwwLDAsMTIwLDg0LDAsMCw4OCw4MywwLDAsODMsMTE2LDU2LDk4LDk3LDEwMCw5NSw5OSw5NywxMTUsMTE2LDAsMCwwLDAsMCwyMjQsODUsMCwwLDExMiw4MywwLDAsMCwwLDAsMCwwLDAsMCwwLDc4LDQ5LDQ4LDk1LDk1LDk5LDEyMCwxMjAsOTcsOTgsMTA1LDExOCw0OSw0OSw1NCw5NSw5NSwxMTUsMTA0LDEwNSwxMDksOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNDQsODMsMCwwLDEwNCw4MywwLDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNDksNTUsOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMjAwLDgzLDAsMCwxODQsODMsMCwwLDAsMCwwLDAsNzgsNDksNDgsOTUsOTUsOTksMTIwLDEyMCw5Nyw5OCwxMDUsMTE4LDQ5LDQ5LDU3LDk1LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw5NSwxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDY5LDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNDksNTUsOTUsOTUsMTEyLDk4LDk3LDExNSwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsNDAsODQsMCwwLDE4NCw4MywwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDAsODQsMCwwLDgwLDg0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQwLDgzLDAsMCwxOTgsMCwwLDAsMTk5LDAsMCwwLDIwMCwwLDAsMCwyMDEsMCwwLDAsNDMsMCwwLDAsMzUsMCwwLDAsMjIsMCwwLDAsMjcsMCwwLDAsMCwwLDAsMCw5Niw4NCwwLDAsMTk4LDAsMCwwLDIwMiwwLDAsMCwyMDAsMCwwLDAsMjAxLDAsMCwwLDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDg1LDAsMCwxOTgsMCwwLDAsMjAzLDAsMCwwLDIwMCwwLDAsMCwyMDEsMCwwLDAsNDUsMCwwLDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNTEsOTUsOTUsMTAyLDExNywxMTAsMTAwLDk3LDEwOSwxMDEsMTEwLDExNiw5NywxMDgsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDIyNCw4NSwwLDAsMjE2LDg0LDAsMCwxODQsODMsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwxMTIsMTcsMCwwLDY4LDExMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDI0LDg1LDAsMCw5OCwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsNDAsODUsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCw1Niw4NSwwLDAsMTA0LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCw3Miw4NSwwLDAsOTcsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDg4LDg1LDAsMCwxOTIsODQsMCwwLDEyOCwxNywwLDAsMTkyLDg0LDAsMCwxMjAsMTcsMCwwLDEwNSwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsMTIwLDg1LDAsMCwxMDYsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDEzNiw4NSwwLDAsMTA4LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwxNTIsODUsMCwwLDEwOSwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsMTY4LDg1LDAsMCwxMDIsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDE4NCw4NSwwLDAsMTAwLDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwyMDAsODUsMCwwLDAsMCwwLDAsNDAsODYsMCwwLDE5OCwwLDAsMCwyMDQsMCwwLDAsMjAwLDAsMCwwLDIwMSwwLDAsMCw0MywwLDAsMCwzNiwwLDAsMCwyMywwLDAsMCwyOCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNDgsOTUsOTUsMTE1LDEwNSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSwxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDY5LDAsMCwwLDAsMjI0LDg1LDAsMCwwLDg2LDAsMCwyNDAsODMsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMzYsODYsMCwwLDE5OCwwLDAsMCwyMDUsMCwwLDAsMjAwLDAsMCwwLDIwMSwwLDAsMCw0MywwLDAsMCwzNywwLDAsMCwyNCwwLDAsMCwyOSwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNDksOTUsOTUsMTE4LDEwOSwxMDUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwyMjQsODUsMCwwLDk2LDg2LDAsMCwyNDAsODMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMDAsODgsMCwwLDIwNiwwLDAsMCwyMDcsMCwwLDAsOTAsMCwwLDAsMCwwLDAsMCwxMTUsMTE2LDEwMCw1OCw1OCw5OCw5NywxMDAsOTUsOTcsMTA4LDEwOCwxMTEsOTksMCwwLDgzLDExNiw1Nyw5OCw5NywxMDAsOTUsOTcsMTA4LDEwOCwxMTEsOTksMCwwLDAsMCwyMjQsODUsMCwwLDE4NCw4OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwwLDEsMiwzLDQsNSw2LDcsOCw5LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMCwwLDAsMCwwLDAsMCwwLDEsMiw0LDcsMyw2LDUsMCwwLDAsMCwwLDAsMCwwLDEwNSwxMTAsMTAyLDEwNSwxMTAsMTA1LDExNiwxMjEsMCwwLDAsMCwwLDAsMCwwLDExMCw5NywxMTAsMCwwLDAsMCwwLDk1LDExMiwxMzcsMCwyNTUsOSw0NywxNSwxMCwwLDAsMCwxMDAsMCwwLDAsMjMyLDMsMCwwLDE2LDM5LDAsMCwxNjAsMTM0LDEsMCw2NCw2NiwxNSwwLDEyOCwxNTAsMTUyLDAsMCwyMjUsMjQ1LDVdLCJpOCIsQUxMT0NfTk9ORSxSdW50aW1lLkdMT0JBTF9CQVNFKzE5NTY0KTt2YXIgdGVtcERvdWJsZVB0cj1SdW50aW1lLmFsaWduTWVtb3J5KGFsbG9jYXRlKDEyLCJpOCIsQUxMT0NfU1RBVElDKSw4KTthc3NlcnQodGVtcERvdWJsZVB0ciU4PT0wKTtmdW5jdGlvbiBjb3B5VGVtcEZsb2F0KHB0cil7SEVBUDhbdGVtcERvdWJsZVB0cl09SEVBUDhbcHRyXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzFdPUhFQVA4W3B0cisxXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzJdPUhFQVA4W3B0cisyXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzNdPUhFQVA4W3B0ciszXX1mdW5jdGlvbiBjb3B5VGVtcERvdWJsZShwdHIpe0hFQVA4W3RlbXBEb3VibGVQdHJdPUhFQVA4W3B0cl07SEVBUDhbdGVtcERvdWJsZVB0cisxXT1IRUFQOFtwdHIrMV07SEVBUDhbdGVtcERvdWJsZVB0cisyXT1IRUFQOFtwdHIrMl07SEVBUDhbdGVtcERvdWJsZVB0ciszXT1IRUFQOFtwdHIrM107SEVBUDhbdGVtcERvdWJsZVB0cis0XT1IRUFQOFtwdHIrNF07SEVBUDhbdGVtcERvdWJsZVB0cis1XT1IRUFQOFtwdHIrNV07SEVBUDhbdGVtcERvdWJsZVB0cis2XT1IRUFQOFtwdHIrNl07SEVBUDhbdGVtcERvdWJsZVB0cis3XT1IRUFQOFtwdHIrN119ZnVuY3Rpb24gX2F0ZXhpdChmdW5jLGFyZyl7X19BVEVYSVRfXy51bnNoaWZ0KHtmdW5jOmZ1bmMsYXJnOmFyZ30pfXZhciBfX19jeGFfYXRleGl0PV9hdGV4aXQ7TW9kdWxlWyJfaTY0U3VidHJhY3QiXT1faTY0U3VidHJhY3Q7TW9kdWxlWyJfaTY0QWRkIl09X2k2NEFkZDtmdW5jdGlvbiBfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udigpe3JldHVybiEhX19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYudW5jYXVnaHRfZXhjZXB0aW9ufWZ1bmN0aW9uIF9fX2N4YV9pc19udW1iZXJfdHlwZSh0eXBlKXt2YXIgaXNOdW1iZXI9ZmFsc2U7dHJ5e2lmKHR5cGU9PV9fWlRJaSlpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElqKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWwpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJbSlpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVEl4KWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSXkpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJZilpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElkKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWUpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJYylpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElhKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWgpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJcylpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVEl0KWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXJldHVybiBpc051bWJlcn1mdW5jdGlvbiBfX19jeGFfZG9lc19pbmhlcml0KGRlZmluaXRlVHlwZSxwb3NzaWJpbGl0eVR5cGUscG9zc2liaWxpdHkpe2lmKHBvc3NpYmlsaXR5PT0wKXJldHVybiBmYWxzZTtpZihwb3NzaWJpbGl0eVR5cGU9PTB8fHBvc3NpYmlsaXR5VHlwZT09ZGVmaW5pdGVUeXBlKXJldHVybiB0cnVlO3ZhciBwb3NzaWJpbGl0eV90eXBlX2luZm87aWYoX19fY3hhX2lzX251bWJlcl90eXBlKHBvc3NpYmlsaXR5VHlwZSkpe3Bvc3NpYmlsaXR5X3R5cGVfaW5mbz1wb3NzaWJpbGl0eVR5cGV9ZWxzZXt2YXIgcG9zc2liaWxpdHlfdHlwZV9pbmZvQWRkcj1IRUFQMzJbcG9zc2liaWxpdHlUeXBlPj4yXS04O3Bvc3NpYmlsaXR5X3R5cGVfaW5mbz1IRUFQMzJbcG9zc2liaWxpdHlfdHlwZV9pbmZvQWRkcj4+Ml19c3dpdGNoKHBvc3NpYmlsaXR5X3R5cGVfaW5mbyl7Y2FzZSAwOnZhciBkZWZpbml0ZV90eXBlX2luZm9BZGRyPUhFQVAzMltkZWZpbml0ZVR5cGU+PjJdLTg7dmFyIGRlZmluaXRlX3R5cGVfaW5mbz1IRUFQMzJbZGVmaW5pdGVfdHlwZV9pbmZvQWRkcj4+Ml07aWYoZGVmaW5pdGVfdHlwZV9pbmZvPT0wKXt2YXIgZGVmUG9pbnRlckJhc2VBZGRyPWRlZmluaXRlVHlwZSs4O3ZhciBkZWZQb2ludGVyQmFzZVR5cGU9SEVBUDMyW2RlZlBvaW50ZXJCYXNlQWRkcj4+Ml07dmFyIHBvc3NQb2ludGVyQmFzZUFkZHI9cG9zc2liaWxpdHlUeXBlKzg7dmFyIHBvc3NQb2ludGVyQmFzZVR5cGU9SEVBUDMyW3Bvc3NQb2ludGVyQmFzZUFkZHI+PjJdO3JldHVybiBfX19jeGFfZG9lc19pbmhlcml0KGRlZlBvaW50ZXJCYXNlVHlwZSxwb3NzUG9pbnRlckJhc2VUeXBlLHBvc3NpYmlsaXR5KX1lbHNlIHJldHVybiBmYWxzZTtjYXNlIDE6cmV0dXJuIGZhbHNlO2Nhc2UgMjp2YXIgcGFyZW50VHlwZUFkZHI9cG9zc2liaWxpdHlUeXBlKzg7dmFyIHBhcmVudFR5cGU9SEVBUDMyW3BhcmVudFR5cGVBZGRyPj4yXTtyZXR1cm4gX19fY3hhX2RvZXNfaW5oZXJpdChkZWZpbml0ZVR5cGUscGFyZW50VHlwZSxwb3NzaWJpbGl0eSk7ZGVmYXVsdDpyZXR1cm4gZmFsc2V9fXZhciBfX19jeGFfbGFzdF90aHJvd25fZXhjZXB0aW9uPTA7ZnVuY3Rpb24gX19fcmVzdW1lRXhjZXB0aW9uKHB0cil7TW9kdWxlLnByaW50KCJSZXN1bWluZyBleGNlcHRpb24iKTtpZighX19fY3hhX2xhc3RfdGhyb3duX2V4Y2VwdGlvbil7X19fY3hhX2xhc3RfdGhyb3duX2V4Y2VwdGlvbj1wdHJ9dGhyb3cgcHRyfXZhciBfX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplPTg7ZnVuY3Rpb24gX19fY3hhX2ZpbmRfbWF0Y2hpbmdfY2F0Y2godGhyb3duLHRocm93bnR5cGUpe2lmKHRocm93bj09LTEpdGhyb3duPV9fX2N4YV9sYXN0X3Rocm93bl9leGNlcHRpb247aGVhZGVyPXRocm93bi1fX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplO2lmKHRocm93bnR5cGU9PS0xKXRocm93bnR5cGU9SEVBUDMyW2hlYWRlcj4+Ml07dmFyIHR5cGVBcnJheT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7aWYodGhyb3dudHlwZSE9MCYmIV9fX2N4YV9pc19udW1iZXJfdHlwZSh0aHJvd250eXBlKSl7dmFyIHRocm93bnR5cGVJbmZvQWRkcj1IRUFQMzJbdGhyb3dudHlwZT4+Ml0tODt2YXIgdGhyb3dudHlwZUluZm89SEVBUDMyW3Rocm93bnR5cGVJbmZvQWRkcj4+Ml07aWYodGhyb3dudHlwZUluZm89PTApdGhyb3duPUhFQVAzMlt0aHJvd24+PjJdfWZvcih2YXIgaT0wO2k8dHlwZUFycmF5Lmxlbmd0aDtpKyspe2lmKF9fX2N4YV9kb2VzX2luaGVyaXQodHlwZUFycmF5W2ldLHRocm93bnR5cGUsdGhyb3duKSlyZXR1cm4oYXNtWyJzZXRUZW1wUmV0MCJdKHR5cGVBcnJheVtpXSksdGhyb3duKXwwfXJldHVybihhc21bInNldFRlbXBSZXQwIl0odGhyb3dudHlwZSksdGhyb3duKXwwfWZ1bmN0aW9uIF9fX2N4YV90aHJvdyhwdHIsdHlwZSxkZXN0cnVjdG9yKXtpZighX19fY3hhX3Rocm93LmluaXRpYWxpemVkKXt0cnl7SEVBUDMyW19fWlRWTjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0U+PjJdPTB9Y2F0Y2goZSl7fXRyeXtIRUFQMzJbX19aVFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0U+PjJdPTF9Y2F0Y2goZSl7fXRyeXtIRUFQMzJbX19aVFZOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0U+PjJdPTJ9Y2F0Y2goZSl7fV9fX2N4YV90aHJvdy5pbml0aWFsaXplZD10cnVlfU1vZHVsZS5wcmludEVycigiQ29tcGlsZWQgY29kZSB0aHJvd2luZyBhbiBleGNlcHRpb24sICIrW3B0cix0eXBlLGRlc3RydWN0b3JdKyIsIGF0ICIrc3RhY2tUcmFjZSgpKTt2YXIgaGVhZGVyPXB0ci1fX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplO0hFQVAzMltoZWFkZXI+PjJdPXR5cGU7SEVBUDMyW2hlYWRlcis0Pj4yXT1kZXN0cnVjdG9yO19fX2N4YV9sYXN0X3Rocm93bl9leGNlcHRpb249cHRyO2lmKCEoInVuY2F1Z2h0X2V4Y2VwdGlvbiJpbiBfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udikpe19fWlN0MTh1bmNhdWdodF9leGNlcHRpb252LnVuY2F1Z2h0X2V4Y2VwdGlvbj0xfWVsc2V7X19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYudW5jYXVnaHRfZXhjZXB0aW9uKyt9dGhyb3cgcHRyfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Jvb2woKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfYm9vbCIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfcHRocmVhZF9tdXRleF9sb2NrKCl7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF9zdHJpbmcoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZyIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZygpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZyIpO2Fib3J0KC0xKX12YXIgRVJSTk9fQ09ERVM9e0VQRVJNOjEsRU5PRU5UOjIsRVNSQ0g6MyxFSU5UUjo0LEVJTzo1LEVOWElPOjYsRTJCSUc6NyxFTk9FWEVDOjgsRUJBREY6OSxFQ0hJTEQ6MTAsRUFHQUlOOjExLEVXT1VMREJMT0NLOjExLEVOT01FTToxMixFQUNDRVM6MTMsRUZBVUxUOjE0LEVOT1RCTEs6MTUsRUJVU1k6MTYsRUVYSVNUOjE3LEVYREVWOjE4LEVOT0RFVjoxOSxFTk9URElSOjIwLEVJU0RJUjoyMSxFSU5WQUw6MjIsRU5GSUxFOjIzLEVNRklMRToyNCxFTk9UVFk6MjUsRVRYVEJTWToyNixFRkJJRzoyNyxFTk9TUEM6MjgsRVNQSVBFOjI5LEVST0ZTOjMwLEVNTElOSzozMSxFUElQRTozMixFRE9NOjMzLEVSQU5HRTozNCxFTk9NU0c6NDIsRUlEUk06NDMsRUNIUk5HOjQ0LEVMMk5TWU5DOjQ1LEVMM0hMVDo0NixFTDNSU1Q6NDcsRUxOUk5HOjQ4LEVVTkFUQ0g6NDksRU5PQ1NJOjUwLEVMMkhMVDo1MSxFREVBRExLOjM1LEVOT0xDSzozNyxFQkFERTo1MixFQkFEUjo1MyxFWEZVTEw6NTQsRU5PQU5POjU1LEVCQURSUUM6NTYsRUJBRFNMVDo1NyxFREVBRExPQ0s6MzUsRUJGT05UOjU5LEVOT1NUUjo2MCxFTk9EQVRBOjYxLEVUSU1FOjYyLEVOT1NSOjYzLEVOT05FVDo2NCxFTk9QS0c6NjUsRVJFTU9URTo2NixFTk9MSU5LOjY3LEVBRFY6NjgsRVNSTU5UOjY5LEVDT01NOjcwLEVQUk9UTzo3MSxFTVVMVElIT1A6NzIsRURPVERPVDo3MyxFQkFETVNHOjc0LEVOT1RVTklROjc2LEVCQURGRDo3NyxFUkVNQ0hHOjc4LEVMSUJBQ0M6NzksRUxJQkJBRDo4MCxFTElCU0NOOjgxLEVMSUJNQVg6ODIsRUxJQkVYRUM6ODMsRU5PU1lTOjM4LEVOT1RFTVBUWTozOSxFTkFNRVRPT0xPTkc6MzYsRUxPT1A6NDAsRU9QTk9UU1VQUDo5NSxFUEZOT1NVUFBPUlQ6OTYsRUNPTk5SRVNFVDoxMDQsRU5PQlVGUzoxMDUsRUFGTk9TVVBQT1JUOjk3LEVQUk9UT1RZUEU6OTEsRU5PVFNPQ0s6ODgsRU5PUFJPVE9PUFQ6OTIsRVNIVVRET1dOOjEwOCxFQ09OTlJFRlVTRUQ6MTExLEVBRERSSU5VU0U6OTgsRUNPTk5BQk9SVEVEOjEwMyxFTkVUVU5SRUFDSDoxMDEsRU5FVERPV046MTAwLEVUSU1FRE9VVDoxMTAsRUhPU1RET1dOOjExMixFSE9TVFVOUkVBQ0g6MTEzLEVJTlBST0dSRVNTOjExNSxFQUxSRUFEWToxMTQsRURFU1RBRERSUkVROjg5LEVNU0dTSVpFOjkwLEVQUk9UT05PU1VQUE9SVDo5MyxFU09DS1ROT1NVUFBPUlQ6OTQsRUFERFJOT1RBVkFJTDo5OSxFTkVUUkVTRVQ6MTAyLEVJU0NPTk46MTA2LEVOT1RDT05OOjEwNyxFVE9PTUFOWVJFRlM6MTA5LEVVU0VSUzo4NyxFRFFVT1Q6MTIyLEVTVEFMRToxMTYsRU5PVFNVUDo5NSxFTk9NRURJVU06MTIzLEVJTFNFUTo4NCxFT1ZFUkZMT1c6NzUsRUNBTkNFTEVEOjEyNSxFTk9UUkVDT1ZFUkFCTEU6MTMxLEVPV05FUkRFQUQ6MTMwLEVTVFJQSVBFOjg2fTt2YXIgRVJSTk9fTUVTU0FHRVM9ezA6IlN1Y2Nlc3MiLDE6Ik5vdCBzdXBlci11c2VyIiwyOiJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IiwzOiJObyBzdWNoIHByb2Nlc3MiLDQ6IkludGVycnVwdGVkIHN5c3RlbSBjYWxsIiw1OiJJL08gZXJyb3IiLDY6Ik5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MiLDc6IkFyZyBsaXN0IHRvbyBsb25nIiw4OiJFeGVjIGZvcm1hdCBlcnJvciIsOToiQmFkIGZpbGUgbnVtYmVyIiwxMDoiTm8gY2hpbGRyZW4iLDExOiJObyBtb3JlIHByb2Nlc3NlcyIsMTI6Ik5vdCBlbm91Z2ggY29yZSIsMTM6IlBlcm1pc3Npb24gZGVuaWVkIiwxNDoiQmFkIGFkZHJlc3MiLDE1OiJCbG9jayBkZXZpY2UgcmVxdWlyZWQiLDE2OiJNb3VudCBkZXZpY2UgYnVzeSIsMTc6IkZpbGUgZXhpc3RzIiwxODoiQ3Jvc3MtZGV2aWNlIGxpbmsiLDE5OiJObyBzdWNoIGRldmljZSIsMjA6Ik5vdCBhIGRpcmVjdG9yeSIsMjE6IklzIGEgZGlyZWN0b3J5IiwyMjoiSW52YWxpZCBhcmd1bWVudCIsMjM6IlRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtIiwyNDoiVG9vIG1hbnkgb3BlbiBmaWxlcyIsMjU6Ik5vdCBhIHR5cGV3cml0ZXIiLDI2OiJUZXh0IGZpbGUgYnVzeSIsMjc6IkZpbGUgdG9vIGxhcmdlIiwyODoiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UiLDI5OiJJbGxlZ2FsIHNlZWsiLDMwOiJSZWFkIG9ubHkgZmlsZSBzeXN0ZW0iLDMxOiJUb28gbWFueSBsaW5rcyIsMzI6IkJyb2tlbiBwaXBlIiwzMzoiTWF0aCBhcmcgb3V0IG9mIGRvbWFpbiBvZiBmdW5jIiwzNDoiTWF0aCByZXN1bHQgbm90IHJlcHJlc2VudGFibGUiLDM1OiJGaWxlIGxvY2tpbmcgZGVhZGxvY2sgZXJyb3IiLDM2OiJGaWxlIG9yIHBhdGggbmFtZSB0b28gbG9uZyIsMzc6Ik5vIHJlY29yZCBsb2NrcyBhdmFpbGFibGUiLDM4OiJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiLDM5OiJEaXJlY3Rvcnkgbm90IGVtcHR5Iiw0MDoiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MiLDQyOiJObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZSIsNDM6IklkZW50aWZpZXIgcmVtb3ZlZCIsNDQ6IkNoYW5uZWwgbnVtYmVyIG91dCBvZiByYW5nZSIsNDU6IkxldmVsIDIgbm90IHN5bmNocm9uaXplZCIsNDY6IkxldmVsIDMgaGFsdGVkIiw0NzoiTGV2ZWwgMyByZXNldCIsNDg6IkxpbmsgbnVtYmVyIG91dCBvZiByYW5nZSIsNDk6IlByb3RvY29sIGRyaXZlciBub3QgYXR0YWNoZWQiLDUwOiJObyBDU0kgc3RydWN0dXJlIGF2YWlsYWJsZSIsNTE6IkxldmVsIDIgaGFsdGVkIiw1MjoiSW52YWxpZCBleGNoYW5nZSIsNTM6IkludmFsaWQgcmVxdWVzdCBkZXNjcmlwdG9yIiw1NDoiRXhjaGFuZ2UgZnVsbCIsNTU6Ik5vIGFub2RlIiw1NjoiSW52YWxpZCByZXF1ZXN0IGNvZGUiLDU3OiJJbnZhbGlkIHNsb3QiLDU5OiJCYWQgZm9udCBmaWxlIGZtdCIsNjA6IkRldmljZSBub3QgYSBzdHJlYW0iLDYxOiJObyBkYXRhIChmb3Igbm8gZGVsYXkgaW8pIiw2MjoiVGltZXIgZXhwaXJlZCIsNjM6Ik91dCBvZiBzdHJlYW1zIHJlc291cmNlcyIsNjQ6Ik1hY2hpbmUgaXMgbm90IG9uIHRoZSBuZXR3b3JrIiw2NToiUGFja2FnZSBub3QgaW5zdGFsbGVkIiw2NjoiVGhlIG9iamVjdCBpcyByZW1vdGUiLDY3OiJUaGUgbGluayBoYXMgYmVlbiBzZXZlcmVkIiw2ODoiQWR2ZXJ0aXNlIGVycm9yIiw2OToiU3Jtb3VudCBlcnJvciIsNzA6IkNvbW11bmljYXRpb24gZXJyb3Igb24gc2VuZCIsNzE6IlByb3RvY29sIGVycm9yIiw3MjoiTXVsdGlob3AgYXR0ZW1wdGVkIiw3MzoiQ3Jvc3MgbW91bnQgcG9pbnQgKG5vdCByZWFsbHkgZXJyb3IpIiw3NDoiVHJ5aW5nIHRvIHJlYWQgdW5yZWFkYWJsZSBtZXNzYWdlIiw3NToiVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZSIsNzY6IkdpdmVuIGxvZy4gbmFtZSBub3QgdW5pcXVlIiw3NzoiZi5kLiBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbiIsNzg6IlJlbW90ZSBhZGRyZXNzIGNoYW5nZWQiLDc5OiJDYW4gICBhY2Nlc3MgYSBuZWVkZWQgc2hhcmVkIGxpYiIsODA6IkFjY2Vzc2luZyBhIGNvcnJ1cHRlZCBzaGFyZWQgbGliIiw4MToiLmxpYiBzZWN0aW9uIGluIGEub3V0IGNvcnJ1cHRlZCIsODI6IkF0dGVtcHRpbmcgdG8gbGluayBpbiB0b28gbWFueSBsaWJzIiw4MzoiQXR0ZW1wdGluZyB0byBleGVjIGEgc2hhcmVkIGxpYnJhcnkiLDg0OiJJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UiLDg2OiJTdHJlYW1zIHBpcGUgZXJyb3IiLDg3OiJUb28gbWFueSB1c2VycyIsODg6IlNvY2tldCBvcGVyYXRpb24gb24gbm9uLXNvY2tldCIsODk6IkRlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQiLDkwOiJNZXNzYWdlIHRvbyBsb25nIiw5MToiUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0Iiw5MjoiUHJvdG9jb2wgbm90IGF2YWlsYWJsZSIsOTM6IlVua25vd24gcHJvdG9jb2wiLDk0OiJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkIiw5NToiTm90IHN1cHBvcnRlZCIsOTY6IlByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkIiw5NzoiQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbCBmYW1pbHkiLDk4OiJBZGRyZXNzIGFscmVhZHkgaW4gdXNlIiw5OToiQWRkcmVzcyBub3QgYXZhaWxhYmxlIiwxMDA6Ik5ldHdvcmsgaW50ZXJmYWNlIGlzIG5vdCBjb25maWd1cmVkIiwxMDE6Ik5ldHdvcmsgaXMgdW5yZWFjaGFibGUiLDEwMjoiQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrIiwxMDM6IkNvbm5lY3Rpb24gYWJvcnRlZCIsMTA0OiJDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIiLDEwNToiTm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZSIsMTA2OiJTb2NrZXQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiLDEwNzoiU29ja2V0IGlzIG5vdCBjb25uZWN0ZWQiLDEwODoiQ2FuJ3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24iLDEwOToiVG9vIG1hbnkgcmVmZXJlbmNlcyIsMTEwOiJDb25uZWN0aW9uIHRpbWVkIG91dCIsMTExOiJDb25uZWN0aW9uIHJlZnVzZWQiLDExMjoiSG9zdCBpcyBkb3duIiwxMTM6Ikhvc3QgaXMgdW5yZWFjaGFibGUiLDExNDoiU29ja2V0IGFscmVhZHkgY29ubmVjdGVkIiwxMTU6IkNvbm5lY3Rpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyIsMTE2OiJTdGFsZSBmaWxlIGhhbmRsZSIsMTIyOiJRdW90YSBleGNlZWRlZCIsMTIzOiJObyBtZWRpdW0gKGluIHRhcGUgZHJpdmUpIiwxMjU6Ik9wZXJhdGlvbiBjYW5jZWxlZCIsMTMwOiJQcmV2aW91cyBvd25lciBkaWVkIiwxMzE6IlN0YXRlIG5vdCByZWNvdmVyYWJsZSJ9O3ZhciBfX19lcnJub19zdGF0ZT0wO2Z1bmN0aW9uIF9fX3NldEVyck5vKHZhbHVlKXtIRUFQMzJbX19fZXJybm9fc3RhdGU+PjJdPXZhbHVlO3JldHVybiB2YWx1ZX12YXIgUEFUSD17c3BsaXRQYXRoOihmdW5jdGlvbihmaWxlbmFtZSl7dmFyIHNwbGl0UGF0aFJlPS9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLztyZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSl9KSxub3JtYWxpemVBcnJheTooZnVuY3Rpb24ocGFydHMsYWxsb3dBYm92ZVJvb3Qpe3ZhciB1cD0wO2Zvcih2YXIgaT1wYXJ0cy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIGxhc3Q9cGFydHNbaV07aWYobGFzdD09PSIuIil7cGFydHMuc3BsaWNlKGksMSl9ZWxzZSBpZihsYXN0PT09Ii4uIil7cGFydHMuc3BsaWNlKGksMSk7dXArK31lbHNlIGlmKHVwKXtwYXJ0cy5zcGxpY2UoaSwxKTt1cC0tfX1pZihhbGxvd0Fib3ZlUm9vdCl7Zm9yKDt1cC0tO3VwKXtwYXJ0cy51bnNoaWZ0KCIuLiIpfX1yZXR1cm4gcGFydHN9KSxub3JtYWxpemU6KGZ1bmN0aW9uKHBhdGgpe3ZhciBpc0Fic29sdXRlPXBhdGguY2hhckF0KDApPT09Ii8iLHRyYWlsaW5nU2xhc2g9cGF0aC5zdWJzdHIoLTEpPT09Ii8iO3BhdGg9UEFUSC5ub3JtYWxpemVBcnJheShwYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKXtyZXR1cm4hIXB9KSksIWlzQWJzb2x1dGUpLmpvaW4oIi8iKTtpZighcGF0aCYmIWlzQWJzb2x1dGUpe3BhdGg9Ii4ifWlmKHBhdGgmJnRyYWlsaW5nU2xhc2gpe3BhdGgrPSIvIn1yZXR1cm4oaXNBYnNvbHV0ZT8iLyI6IiIpK3BhdGh9KSxkaXJuYW1lOihmdW5jdGlvbihwYXRoKXt2YXIgcmVzdWx0PVBBVEguc3BsaXRQYXRoKHBhdGgpLHJvb3Q9cmVzdWx0WzBdLGRpcj1yZXN1bHRbMV07aWYoIXJvb3QmJiFkaXIpe3JldHVybiIuIn1pZihkaXIpe2Rpcj1kaXIuc3Vic3RyKDAsZGlyLmxlbmd0aC0xKX1yZXR1cm4gcm9vdCtkaXJ9KSxiYXNlbmFtZTooZnVuY3Rpb24ocGF0aCl7aWYocGF0aD09PSIvIilyZXR1cm4iLyI7dmFyIGxhc3RTbGFzaD1wYXRoLmxhc3RJbmRleE9mKCIvIik7aWYobGFzdFNsYXNoPT09LTEpcmV0dXJuIHBhdGg7cmV0dXJuIHBhdGguc3Vic3RyKGxhc3RTbGFzaCsxKX0pLGV4dG5hbWU6KGZ1bmN0aW9uKHBhdGgpe3JldHVybiBQQVRILnNwbGl0UGF0aChwYXRoKVszXX0pLGpvaW46KGZ1bmN0aW9uKCl7dmFyIHBhdGhzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gUEFUSC5ub3JtYWxpemUocGF0aHMuam9pbigiLyIpKX0pLGpvaW4yOihmdW5jdGlvbihsLHIpe3JldHVybiBQQVRILm5vcm1hbGl6ZShsKyIvIityKX0pLHJlc29sdmU6KGZ1bmN0aW9uKCl7dmFyIHJlc29sdmVkUGF0aD0iIixyZXNvbHZlZEFic29sdXRlPWZhbHNlO2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLTE7aT49LTEmJiFyZXNvbHZlZEFic29sdXRlO2ktLSl7dmFyIHBhdGg9aT49MD9hcmd1bWVudHNbaV06RlMuY3dkKCk7aWYodHlwZW9mIHBhdGghPT0ic3RyaW5nIil7dGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKX1lbHNlIGlmKCFwYXRoKXtjb250aW51ZX1yZXNvbHZlZFBhdGg9cGF0aCsiLyIrcmVzb2x2ZWRQYXRoO3Jlc29sdmVkQWJzb2x1dGU9cGF0aC5jaGFyQXQoMCk9PT0iLyJ9cmVzb2x2ZWRQYXRoPVBBVEgubm9ybWFsaXplQXJyYXkocmVzb2x2ZWRQYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKXtyZXR1cm4hIXB9KSksIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oIi8iKTtyZXR1cm4ocmVzb2x2ZWRBYnNvbHV0ZT8iLyI6IiIpK3Jlc29sdmVkUGF0aHx8Ii4ifSkscmVsYXRpdmU6KGZ1bmN0aW9uKGZyb20sdG8pe2Zyb209UEFUSC5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTt0bz1QQVRILnJlc29sdmUodG8pLnN1YnN0cigxKTtmdW5jdGlvbiB0cmltKGFycil7dmFyIHN0YXJ0PTA7Zm9yKDtzdGFydDxhcnIubGVuZ3RoO3N0YXJ0Kyspe2lmKGFycltzdGFydF0hPT0iIilicmVha312YXIgZW5kPWFyci5sZW5ndGgtMTtmb3IoO2VuZD49MDtlbmQtLSl7aWYoYXJyW2VuZF0hPT0iIilicmVha31pZihzdGFydD5lbmQpcmV0dXJuW107cmV0dXJuIGFyci5zbGljZShzdGFydCxlbmQtc3RhcnQrMSl9dmFyIGZyb21QYXJ0cz10cmltKGZyb20uc3BsaXQoIi8iKSk7dmFyIHRvUGFydHM9dHJpbSh0by5zcGxpdCgiLyIpKTt2YXIgbGVuZ3RoPU1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsdG9QYXJ0cy5sZW5ndGgpO3ZhciBzYW1lUGFydHNMZW5ndGg9bGVuZ3RoO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7aWYoZnJvbVBhcnRzW2ldIT09dG9QYXJ0c1tpXSl7c2FtZVBhcnRzTGVuZ3RoPWk7YnJlYWt9fXZhciBvdXRwdXRQYXJ0cz1bXTtmb3IodmFyIGk9c2FtZVBhcnRzTGVuZ3RoO2k8ZnJvbVBhcnRzLmxlbmd0aDtpKyspe291dHB1dFBhcnRzLnB1c2goIi4uIil9b3V0cHV0UGFydHM9b3V0cHV0UGFydHMuY29uY2F0KHRvUGFydHMuc2xpY2Uoc2FtZVBhcnRzTGVuZ3RoKSk7cmV0dXJuIG91dHB1dFBhcnRzLmpvaW4oIi8iKX0pfTt2YXIgVFRZPXt0dHlzOltdLGluaXQ6KGZ1bmN0aW9uKCl7fSksc2h1dGRvd246KGZ1bmN0aW9uKCl7fSkscmVnaXN0ZXI6KGZ1bmN0aW9uKGRldixvcHMpe1RUWS50dHlzW2Rldl09e2lucHV0OltdLG91dHB1dDpbXSxvcHM6b3BzfTtGUy5yZWdpc3RlckRldmljZShkZXYsVFRZLnN0cmVhbV9vcHMpfSksc3RyZWFtX29wczp7b3BlbjooZnVuY3Rpb24oc3RyZWFtKXt2YXIgdHR5PVRUWS50dHlzW3N0cmVhbS5ub2RlLnJkZXZdO2lmKCF0dHkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9c3RyZWFtLnR0eT10dHk7c3RyZWFtLnNlZWthYmxlPWZhbHNlfSksY2xvc2U6KGZ1bmN0aW9uKHN0cmVhbSl7aWYoc3RyZWFtLnR0eS5vdXRwdXQubGVuZ3RoKXtzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcihzdHJlYW0udHR5LDEwKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zKXtpZighc3RyZWFtLnR0eXx8IXN0cmVhbS50dHkub3BzLmdldF9jaGFyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTlhJTyl9dmFyIGJ5dGVzUmVhZD0wO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dmFyIHJlc3VsdDt0cnl7cmVzdWx0PXN0cmVhbS50dHkub3BzLmdldF9jaGFyKHN0cmVhbS50dHkpfWNhdGNoKGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyl9aWYocmVzdWx0PT09dW5kZWZpbmVkJiZieXRlc1JlYWQ9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4pfWlmKHJlc3VsdD09PW51bGx8fHJlc3VsdD09PXVuZGVmaW5lZClicmVhaztieXRlc1JlYWQrKztidWZmZXJbb2Zmc2V0K2ldPXJlc3VsdH1pZihieXRlc1JlYWQpe3N0cmVhbS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpfXJldHVybiBieXRlc1JlYWR9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvcyl7aWYoIXN0cmVhbS50dHl8fCFzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5YSU8pfWZvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dHJ5e3N0cmVhbS50dHkub3BzLnB1dF9jaGFyKHN0cmVhbS50dHksYnVmZmVyW29mZnNldCtpXSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlPKX19aWYobGVuZ3RoKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKX1yZXR1cm4gaX0pfSxkZWZhdWx0X3R0eV9vcHM6e2dldF9jaGFyOihmdW5jdGlvbih0dHkpe2lmKCF0dHkuaW5wdXQubGVuZ3RoKXt2YXIgcmVzdWx0PW51bGw7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7cmVzdWx0PXByb2Nlc3NbInN0ZGluIl1bInJlYWQiXSgpO2lmKCFyZXN1bHQpe2lmKHByb2Nlc3NbInN0ZGluIl1bIl9yZWFkYWJsZVN0YXRlIl0mJnByb2Nlc3NbInN0ZGluIl1bIl9yZWFkYWJsZVN0YXRlIl1bImVuZGVkIl0pe3JldHVybiBudWxsfXJldHVybiB1bmRlZmluZWR9fWVsc2UgaWYodHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJnR5cGVvZiB3aW5kb3cucHJvbXB0PT0iZnVuY3Rpb24iKXtyZXN1bHQ9d2luZG93LnByb21wdCgiSW5wdXQ6ICIpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIn19ZWxzZSBpZih0eXBlb2YgcmVhZGxpbmU9PSJmdW5jdGlvbiIpe3Jlc3VsdD1yZWFkbGluZSgpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIn19aWYoIXJlc3VsdCl7cmV0dXJuIG51bGx9dHR5LmlucHV0PWludEFycmF5RnJvbVN0cmluZyhyZXN1bHQsdHJ1ZSl9cmV0dXJuIHR0eS5pbnB1dC5zaGlmdCgpfSkscHV0X2NoYXI6KGZ1bmN0aW9uKHR0eSx2YWwpe2lmKHZhbD09PW51bGx8fHZhbD09PTEwKXtNb2R1bGVbInByaW50Il0odHR5Lm91dHB1dC5qb2luKCIiKSk7dHR5Lm91dHB1dD1bXX1lbHNle3R0eS5vdXRwdXQucHVzaChUVFkudXRmOC5wcm9jZXNzQ0NoYXIodmFsKSl9fSl9LGRlZmF1bHRfdHR5MV9vcHM6e3B1dF9jaGFyOihmdW5jdGlvbih0dHksdmFsKXtpZih2YWw9PT1udWxsfHx2YWw9PT0xMCl7TW9kdWxlWyJwcmludEVyciJdKHR0eS5vdXRwdXQuam9pbigiIikpO3R0eS5vdXRwdXQ9W119ZWxzZXt0dHkub3V0cHV0LnB1c2goVFRZLnV0ZjgucHJvY2Vzc0NDaGFyKHZhbCkpfX0pfX07dmFyIE1FTUZTPXtvcHNfdGFibGU6bnVsbCxDT05URU5UX09XTklORzoxLENPTlRFTlRfRkxFWElCTEU6MixDT05URU5UX0ZJWEVEOjMsbW91bnQ6KGZ1bmN0aW9uKG1vdW50KXtyZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShudWxsLCIvIiwxNjM4NHw1MTEsMCl9KSxjcmVhdGVOb2RlOihmdW5jdGlvbihwYXJlbnQsbmFtZSxtb2RlLGRldil7aWYoRlMuaXNCbGtkZXYobW9kZSl8fEZTLmlzRklGTyhtb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKCFNRU1GUy5vcHNfdGFibGUpe01FTUZTLm9wc190YWJsZT17ZGlyOntub2RlOntnZXRhdHRyOk1FTUZTLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpNRU1GUy5ub2RlX29wcy5zZXRhdHRyLGxvb2t1cDpNRU1GUy5ub2RlX29wcy5sb29rdXAsbWtub2Q6TUVNRlMubm9kZV9vcHMubWtub2QscmVuYW1lOk1FTUZTLm5vZGVfb3BzLnJlbmFtZSx1bmxpbms6TUVNRlMubm9kZV9vcHMudW5saW5rLHJtZGlyOk1FTUZTLm5vZGVfb3BzLnJtZGlyLHJlYWRkaXI6TUVNRlMubm9kZV9vcHMucmVhZGRpcixzeW1saW5rOk1FTUZTLm5vZGVfb3BzLnN5bWxpbmt9LHN0cmVhbTp7bGxzZWVrOk1FTUZTLnN0cmVhbV9vcHMubGxzZWVrfX0sZmlsZTp7bm9kZTp7Z2V0YXR0cjpNRU1GUy5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6TUVNRlMubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOntsbHNlZWs6TUVNRlMuc3RyZWFtX29wcy5sbHNlZWsscmVhZDpNRU1GUy5zdHJlYW1fb3BzLnJlYWQsd3JpdGU6TUVNRlMuc3RyZWFtX29wcy53cml0ZSxhbGxvY2F0ZTpNRU1GUy5zdHJlYW1fb3BzLmFsbG9jYXRlLG1tYXA6TUVNRlMuc3RyZWFtX29wcy5tbWFwfX0sbGluazp7bm9kZTp7Z2V0YXR0cjpNRU1GUy5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6TUVNRlMubm9kZV9vcHMuc2V0YXR0cixyZWFkbGluazpNRU1GUy5ub2RlX29wcy5yZWFkbGlua30sc3RyZWFtOnt9fSxjaHJkZXY6e25vZGU6e2dldGF0dHI6TUVNRlMubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOk1FTUZTLm5vZGVfb3BzLnNldGF0dHJ9LHN0cmVhbTpGUy5jaHJkZXZfc3RyZWFtX29wc319fXZhciBub2RlPUZTLmNyZWF0ZU5vZGUocGFyZW50LG5hbWUsbW9kZSxkZXYpO2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmRpci5ub2RlO25vZGUuc3RyZWFtX29wcz1NRU1GUy5vcHNfdGFibGUuZGlyLnN0cmVhbTtub2RlLmNvbnRlbnRzPXt9fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUuc3RyZWFtO25vZGUuY29udGVudHM9W107bm9kZS5jb250ZW50TW9kZT1NRU1GUy5DT05URU5UX0ZMRVhJQkxFfWVsc2UgaWYoRlMuaXNMaW5rKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmxpbmsubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmxpbmsuc3RyZWFtfWVsc2UgaWYoRlMuaXNDaHJkZXYobm9kZS5tb2RlKSl7bm9kZS5ub2RlX29wcz1NRU1GUy5vcHNfdGFibGUuY2hyZGV2Lm5vZGU7bm9kZS5zdHJlYW1fb3BzPU1FTUZTLm9wc190YWJsZS5jaHJkZXYuc3RyZWFtfW5vZGUudGltZXN0YW1wPURhdGUubm93KCk7aWYocGFyZW50KXtwYXJlbnQuY29udGVudHNbbmFtZV09bm9kZX1yZXR1cm4gbm9kZX0pLGVuc3VyZUZsZXhpYmxlOihmdW5jdGlvbihub2RlKXtpZihub2RlLmNvbnRlbnRNb2RlIT09TUVNRlMuQ09OVEVOVF9GTEVYSUJMRSl7dmFyIGNvbnRlbnRzPW5vZGUuY29udGVudHM7bm9kZS5jb250ZW50cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250ZW50cyk7bm9kZS5jb250ZW50TW9kZT1NRU1GUy5DT05URU5UX0ZMRVhJQkxFfX0pLG5vZGVfb3BzOntnZXRhdHRyOihmdW5jdGlvbihub2RlKXt2YXIgYXR0cj17fTthdHRyLmRldj1GUy5pc0NocmRldihub2RlLm1vZGUpP25vZGUuaWQ6MTthdHRyLmlubz1ub2RlLmlkO2F0dHIubW9kZT1ub2RlLm1vZGU7YXR0ci5ubGluaz0xO2F0dHIudWlkPTA7YXR0ci5naWQ9MDthdHRyLnJkZXY9bm9kZS5yZGV2O2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT00MDk2fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT1ub2RlLmNvbnRlbnRzLmxlbmd0aH1lbHNlIGlmKEZTLmlzTGluayhub2RlLm1vZGUpKXthdHRyLnNpemU9bm9kZS5saW5rLmxlbmd0aH1lbHNle2F0dHIuc2l6ZT0wfWF0dHIuYXRpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIubXRpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIuY3RpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIuYmxrc2l6ZT00MDk2O2F0dHIuYmxvY2tzPU1hdGguY2VpbChhdHRyLnNpemUvYXR0ci5ibGtzaXplKTtyZXR1cm4gYXR0cn0pLHNldGF0dHI6KGZ1bmN0aW9uKG5vZGUsYXR0cil7aWYoYXR0ci5tb2RlIT09dW5kZWZpbmVkKXtub2RlLm1vZGU9YXR0ci5tb2RlfWlmKGF0dHIudGltZXN0YW1wIT09dW5kZWZpbmVkKXtub2RlLnRpbWVzdGFtcD1hdHRyLnRpbWVzdGFtcH1pZihhdHRyLnNpemUhPT11bmRlZmluZWQpe01FTUZTLmVuc3VyZUZsZXhpYmxlKG5vZGUpO3ZhciBjb250ZW50cz1ub2RlLmNvbnRlbnRzO2lmKGF0dHIuc2l6ZTxjb250ZW50cy5sZW5ndGgpY29udGVudHMubGVuZ3RoPWF0dHIuc2l6ZTtlbHNlIHdoaWxlKGF0dHIuc2l6ZT5jb250ZW50cy5sZW5ndGgpY29udGVudHMucHVzaCgwKX19KSxsb29rdXA6KGZ1bmN0aW9uKHBhcmVudCxuYW1lKXt0aHJvdyBGUy5nZW5lcmljRXJyb3JzW0VSUk5PX0NPREVTLkVOT0VOVF19KSxta25vZDooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe3JldHVybiBNRU1GUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0pLHJlbmFtZTooZnVuY3Rpb24ob2xkX25vZGUsbmV3X2RpcixuZXdfbmFtZSl7aWYoRlMuaXNEaXIob2xkX25vZGUubW9kZSkpe3ZhciBuZXdfbm9kZTt0cnl7bmV3X25vZGU9RlMubG9va3VwTm9kZShuZXdfZGlyLG5ld19uYW1lKX1jYXRjaChlKXt9aWYobmV3X25vZGUpe2Zvcih2YXIgaSBpbiBuZXdfbm9kZS5jb250ZW50cyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVEVNUFRZKX19fWRlbGV0ZSBvbGRfbm9kZS5wYXJlbnQuY29udGVudHNbb2xkX25vZGUubmFtZV07b2xkX25vZGUubmFtZT1uZXdfbmFtZTtuZXdfZGlyLmNvbnRlbnRzW25ld19uYW1lXT1vbGRfbm9kZTtvbGRfbm9kZS5wYXJlbnQ9bmV3X2Rpcn0pLHVubGluazooZnVuY3Rpb24ocGFyZW50LG5hbWUpe2RlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV19KSxybWRpcjooZnVuY3Rpb24ocGFyZW50LG5hbWUpe3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO2Zvcih2YXIgaSBpbiBub2RlLmNvbnRlbnRzKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9URU1QVFkpfWRlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV19KSxyZWFkZGlyOihmdW5jdGlvbihub2RlKXt2YXIgZW50cmllcz1bIi4iLCIuLiJdO2Zvcih2YXIga2V5IGluIG5vZGUuY29udGVudHMpe2lmKCFub2RlLmNvbnRlbnRzLmhhc093blByb3BlcnR5KGtleSkpe2NvbnRpbnVlfWVudHJpZXMucHVzaChrZXkpfXJldHVybiBlbnRyaWVzfSksc3ltbGluazooZnVuY3Rpb24ocGFyZW50LG5ld25hbWUsb2xkcGF0aCl7dmFyIG5vZGU9TUVNRlMuY3JlYXRlTm9kZShwYXJlbnQsbmV3bmFtZSw1MTF8NDA5NjAsMCk7bm9kZS5saW5rPW9sZHBhdGg7cmV0dXJuIG5vZGV9KSxyZWFkbGluazooZnVuY3Rpb24obm9kZSl7aWYoIUZTLmlzTGluayhub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfXJldHVybiBub2RlLmxpbmt9KX0sc3RyZWFtX29wczp7cmVhZDooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYocG9zaXRpb24+PWNvbnRlbnRzLmxlbmd0aClyZXR1cm4gMDt2YXIgc2l6ZT1NYXRoLm1pbihjb250ZW50cy5sZW5ndGgtcG9zaXRpb24sbGVuZ3RoKTthc3NlcnQoc2l6ZT49MCk7aWYoc2l6ZT44JiZjb250ZW50cy5zdWJhcnJheSl7YnVmZmVyLnNldChjb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitzaXplKSxvZmZzZXQpfWVsc2V7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXX19cmV0dXJuIHNpemV9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLGNhbk93bil7dmFyIG5vZGU9c3RyZWFtLm5vZGU7bm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTt2YXIgY29udGVudHM9bm9kZS5jb250ZW50cztpZihsZW5ndGgmJmNvbnRlbnRzLmxlbmd0aD09PTAmJnBvc2l0aW9uPT09MCYmYnVmZmVyLnN1YmFycmF5KXtpZihjYW5Pd24mJm9mZnNldD09PTApe25vZGUuY29udGVudHM9YnVmZmVyO25vZGUuY29udGVudE1vZGU9YnVmZmVyLmJ1ZmZlcj09PUhFQVA4LmJ1ZmZlcj9NRU1GUy5DT05URU5UX09XTklORzpNRU1GUy5DT05URU5UX0ZJWEVEfWVsc2V7bm9kZS5jb250ZW50cz1uZXcgVWludDhBcnJheShidWZmZXIuc3ViYXJyYXkob2Zmc2V0LG9mZnNldCtsZW5ndGgpKTtub2RlLmNvbnRlbnRNb2RlPU1FTUZTLkNPTlRFTlRfRklYRUR9cmV0dXJuIGxlbmd0aH1NRU1GUy5lbnN1cmVGbGV4aWJsZShub2RlKTt2YXIgY29udGVudHM9bm9kZS5jb250ZW50czt3aGlsZShjb250ZW50cy5sZW5ndGg8cG9zaXRpb24pY29udGVudHMucHVzaCgwKTtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe2NvbnRlbnRzW3Bvc2l0aW9uK2ldPWJ1ZmZlcltvZmZzZXQraV19cmV0dXJuIGxlbmd0aH0pLGxsc2VlazooZnVuY3Rpb24oc3RyZWFtLG9mZnNldCx3aGVuY2Upe3ZhciBwb3NpdGlvbj1vZmZzZXQ7aWYod2hlbmNlPT09MSl7cG9zaXRpb24rPXN0cmVhbS5wb3NpdGlvbn1lbHNlIGlmKHdoZW5jZT09PTIpe2lmKEZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSl7cG9zaXRpb24rPXN0cmVhbS5ub2RlLmNvbnRlbnRzLmxlbmd0aH19aWYocG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1zdHJlYW0udW5nb3R0ZW49W107c3RyZWFtLnBvc2l0aW9uPXBvc2l0aW9uO3JldHVybiBwb3NpdGlvbn0pLGFsbG9jYXRlOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LGxlbmd0aCl7TUVNRlMuZW5zdXJlRmxleGlibGUoc3RyZWFtLm5vZGUpO3ZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50czt2YXIgbGltaXQ9b2Zmc2V0K2xlbmd0aDt3aGlsZShsaW1pdD5jb250ZW50cy5sZW5ndGgpY29udGVudHMucHVzaCgwKX0pLG1tYXA6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixwcm90LGZsYWdzKXtpZighRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9ERVYpfXZhciBwdHI7dmFyIGFsbG9jYXRlZDt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYoIShmbGFncyYyKSYmKGNvbnRlbnRzLmJ1ZmZlcj09PWJ1ZmZlcnx8Y29udGVudHMuYnVmZmVyPT09YnVmZmVyLmJ1ZmZlcikpe2FsbG9jYXRlZD1mYWxzZTtwdHI9Y29udGVudHMuYnl0ZU9mZnNldH1lbHNle2lmKHBvc2l0aW9uPjB8fHBvc2l0aW9uK2xlbmd0aDxjb250ZW50cy5sZW5ndGgpe2lmKGNvbnRlbnRzLnN1YmFycmF5KXtjb250ZW50cz1jb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitsZW5ndGgpfWVsc2V7Y29udGVudHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY29udGVudHMscG9zaXRpb24scG9zaXRpb24rbGVuZ3RoKX19YWxsb2NhdGVkPXRydWU7cHRyPV9tYWxsb2MobGVuZ3RoKTtpZighcHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9NRU0pfWJ1ZmZlci5zZXQoY29udGVudHMscHRyKX1yZXR1cm57cHRyOnB0cixhbGxvY2F0ZWQ6YWxsb2NhdGVkfX0pfX07dmFyIElEQkZTPXtkYnM6e30saW5kZXhlZERCOihmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuaW5kZXhlZERCfHx3aW5kb3cubW96SW5kZXhlZERCfHx3aW5kb3cud2Via2l0SW5kZXhlZERCfHx3aW5kb3cubXNJbmRleGVkREJ9KSxEQl9WRVJTSU9OOjIxLERCX1NUT1JFX05BTUU6IkZJTEVfREFUQSIsbW91bnQ6KGZ1bmN0aW9uKG1vdW50KXtyZXR1cm4gTUVNRlMubW91bnQuYXBwbHkobnVsbCxhcmd1bWVudHMpfSksc3luY2ZzOihmdW5jdGlvbihtb3VudCxwb3B1bGF0ZSxjYWxsYmFjayl7SURCRlMuZ2V0TG9jYWxTZXQobW91bnQsKGZ1bmN0aW9uKGVycixsb2NhbCl7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO0lEQkZTLmdldFJlbW90ZVNldChtb3VudCwoZnVuY3Rpb24oZXJyLHJlbW90ZSl7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO3ZhciBzcmM9cG9wdWxhdGU/cmVtb3RlOmxvY2FsO3ZhciBkc3Q9cG9wdWxhdGU/bG9jYWw6cmVtb3RlO0lEQkZTLnJlY29uY2lsZShzcmMsZHN0LGNhbGxiYWNrKX0pKX0pKX0pLGdldERCOihmdW5jdGlvbihuYW1lLGNhbGxiYWNrKXt2YXIgZGI9SURCRlMuZGJzW25hbWVdO2lmKGRiKXtyZXR1cm4gY2FsbGJhY2sobnVsbCxkYil9dmFyIHJlcTt0cnl7cmVxPUlEQkZTLmluZGV4ZWREQigpLm9wZW4obmFtZSxJREJGUy5EQl9WRVJTSU9OKX1jYXRjaChlKXtyZXR1cm4gY2FsbGJhY2soZSl9cmVxLm9udXBncmFkZW5lZWRlZD0oZnVuY3Rpb24oZSl7dmFyIGRiPWUudGFyZ2V0LnJlc3VsdDt2YXIgdHJhbnNhY3Rpb249ZS50YXJnZXQudHJhbnNhY3Rpb247dmFyIGZpbGVTdG9yZTtpZihkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKElEQkZTLkRCX1NUT1JFX05BTUUpKXtmaWxlU3RvcmU9dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoSURCRlMuREJfU1RPUkVfTkFNRSl9ZWxzZXtmaWxlU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoSURCRlMuREJfU1RPUkVfTkFNRSl9ZmlsZVN0b3JlLmNyZWF0ZUluZGV4KCJ0aW1lc3RhbXAiLCJ0aW1lc3RhbXAiLHt1bmlxdWU6ZmFsc2V9KX0pO3JlcS5vbnN1Y2Nlc3M9KGZ1bmN0aW9uKCl7ZGI9cmVxLnJlc3VsdDtJREJGUy5kYnNbbmFtZV09ZGI7Y2FsbGJhY2sobnVsbCxkYil9KTtyZXEub25lcnJvcj0oZnVuY3Rpb24oKXtjYWxsYmFjayh0aGlzLmVycm9yKX0pfSksZ2V0TG9jYWxTZXQ6KGZ1bmN0aW9uKG1vdW50LGNhbGxiYWNrKXt2YXIgZW50cmllcz17fTtmdW5jdGlvbiBpc1JlYWxEaXIocCl7cmV0dXJuIHAhPT0iLiImJnAhPT0iLi4ifWZ1bmN0aW9uIHRvQWJzb2x1dGUocm9vdCl7cmV0dXJuKGZ1bmN0aW9uKHApe3JldHVybiBQQVRILmpvaW4yKHJvb3QscCl9KX12YXIgY2hlY2s9RlMucmVhZGRpcihtb3VudC5tb3VudHBvaW50KS5maWx0ZXIoaXNSZWFsRGlyKS5tYXAodG9BYnNvbHV0ZShtb3VudC5tb3VudHBvaW50KSk7d2hpbGUoY2hlY2subGVuZ3RoKXt2YXIgcGF0aD1jaGVjay5wb3AoKTt2YXIgc3RhdDt0cnl7c3RhdD1GUy5zdGF0KHBhdGgpfWNhdGNoKGUpe3JldHVybiBjYWxsYmFjayhlKX1pZihGUy5pc0RpcihzdGF0Lm1vZGUpKXtjaGVjay5wdXNoLmFwcGx5KGNoZWNrLEZTLnJlYWRkaXIocGF0aCkuZmlsdGVyKGlzUmVhbERpcikubWFwKHRvQWJzb2x1dGUocGF0aCkpKX1lbnRyaWVzW3BhdGhdPXt0aW1lc3RhbXA6c3RhdC5tdGltZX19cmV0dXJuIGNhbGxiYWNrKG51bGwse3R5cGU6ImxvY2FsIixlbnRyaWVzOmVudHJpZXN9KX0pLGdldFJlbW90ZVNldDooZnVuY3Rpb24obW91bnQsY2FsbGJhY2spe3ZhciBlbnRyaWVzPXt9O0lEQkZTLmdldERCKG1vdW50Lm1vdW50cG9pbnQsKGZ1bmN0aW9uKGVycixkYil7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO3ZhciB0cmFuc2FjdGlvbj1kYi50cmFuc2FjdGlvbihbSURCRlMuREJfU1RPUkVfTkFNRV0sInJlYWRvbmx5Iik7dHJhbnNhY3Rpb24ub25lcnJvcj0oZnVuY3Rpb24oKXtjYWxsYmFjayh0aGlzLmVycm9yKX0pO3ZhciBzdG9yZT10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShJREJGUy5EQl9TVE9SRV9OQU1FKTt2YXIgaW5kZXg9c3RvcmUuaW5kZXgoInRpbWVzdGFtcCIpO2luZGV4Lm9wZW5LZXlDdXJzb3IoKS5vbnN1Y2Nlc3M9KGZ1bmN0aW9uKGV2ZW50KXt2YXIgY3Vyc29yPWV2ZW50LnRhcmdldC5yZXN1bHQ7aWYoIWN1cnNvcil7cmV0dXJuIGNhbGxiYWNrKG51bGwse3R5cGU6InJlbW90ZSIsZGI6ZGIsZW50cmllczplbnRyaWVzfSl9ZW50cmllc1tjdXJzb3IucHJpbWFyeUtleV09e3RpbWVzdGFtcDpjdXJzb3Iua2V5fTtjdXJzb3IuY29udGludWUoKX0pfSkpfSksbG9hZExvY2FsRW50cnk6KGZ1bmN0aW9uKHBhdGgsY2FsbGJhY2spe3ZhciBzdGF0LG5vZGU7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoKTtub2RlPWxvb2t1cC5ub2RlO3N0YXQ9RlMuc3RhdChwYXRoKX1jYXRjaChlKXtyZXR1cm4gY2FsbGJhY2soZSl9aWYoRlMuaXNEaXIoc3RhdC5tb2RlKSl7cmV0dXJuIGNhbGxiYWNrKG51bGwse3RpbWVzdGFtcDpzdGF0Lm10aW1lLG1vZGU6c3RhdC5tb2RlfSl9ZWxzZSBpZihGUy5pc0ZpbGUoc3RhdC5tb2RlKSl7cmV0dXJuIGNhbGxiYWNrKG51bGwse3RpbWVzdGFtcDpzdGF0Lm10aW1lLG1vZGU6c3RhdC5tb2RlLGNvbnRlbnRzOm5vZGUuY29udGVudHN9KX1lbHNle3JldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpfX0pLHN0b3JlTG9jYWxFbnRyeTooZnVuY3Rpb24ocGF0aCxlbnRyeSxjYWxsYmFjayl7dHJ5e2lmKEZTLmlzRGlyKGVudHJ5Lm1vZGUpKXtGUy5ta2RpcihwYXRoLGVudHJ5Lm1vZGUpfWVsc2UgaWYoRlMuaXNGaWxlKGVudHJ5Lm1vZGUpKXtGUy53cml0ZUZpbGUocGF0aCxlbnRyeS5jb250ZW50cyx7ZW5jb2Rpbmc6ImJpbmFyeSIsY2FuT3duOnRydWV9KX1lbHNle3JldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpfUZTLnV0aW1lKHBhdGgsZW50cnkudGltZXN0YW1wLGVudHJ5LnRpbWVzdGFtcCl9Y2F0Y2goZSl7cmV0dXJuIGNhbGxiYWNrKGUpfWNhbGxiYWNrKG51bGwpfSkscmVtb3ZlTG9jYWxFbnRyeTooZnVuY3Rpb24ocGF0aCxjYWxsYmFjayl7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoKTt2YXIgc3RhdD1GUy5zdGF0KHBhdGgpO2lmKEZTLmlzRGlyKHN0YXQubW9kZSkpe0ZTLnJtZGlyKHBhdGgpfWVsc2UgaWYoRlMuaXNGaWxlKHN0YXQubW9kZSkpe0ZTLnVubGluayhwYXRoKX19Y2F0Y2goZSl7cmV0dXJuIGNhbGxiYWNrKGUpfWNhbGxiYWNrKG51bGwpfSksbG9hZFJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLmdldChwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbihldmVudCl7Y2FsbGJhY2sobnVsbCxldmVudC50YXJnZXQucmVzdWx0KX0pO3JlcS5vbmVycm9yPShmdW5jdGlvbigpe2NhbGxiYWNrKHRoaXMuZXJyb3IpfSl9KSxzdG9yZVJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGVudHJ5LGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLnB1dChlbnRyeSxwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbigpe2NhbGxiYWNrKG51bGwpfSk7cmVxLm9uZXJyb3I9KGZ1bmN0aW9uKCl7Y2FsbGJhY2sodGhpcy5lcnJvcil9KX0pLHJlbW92ZVJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLmRlbGV0ZShwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbigpe2NhbGxiYWNrKG51bGwpfSk7cmVxLm9uZXJyb3I9KGZ1bmN0aW9uKCl7Y2FsbGJhY2sodGhpcy5lcnJvcil9KX0pLHJlY29uY2lsZTooZnVuY3Rpb24oc3JjLGRzdCxjYWxsYmFjayl7dmFyIHRvdGFsPTA7dmFyIGNyZWF0ZT1bXTtPYmplY3Qua2V5cyhzcmMuZW50cmllcykuZm9yRWFjaCgoZnVuY3Rpb24oa2V5KXt2YXIgZT1zcmMuZW50cmllc1trZXldO3ZhciBlMj1kc3QuZW50cmllc1trZXldO2lmKCFlMnx8ZS50aW1lc3RhbXA+ZTIudGltZXN0YW1wKXtjcmVhdGUucHVzaChrZXkpO3RvdGFsKyt9fSkpO3ZhciByZW1vdmU9W107T2JqZWN0LmtleXMoZHN0LmVudHJpZXMpLmZvckVhY2goKGZ1bmN0aW9uKGtleSl7dmFyIGU9ZHN0LmVudHJpZXNba2V5XTt2YXIgZTI9c3JjLmVudHJpZXNba2V5XTtpZighZTIpe3JlbW92ZS5wdXNoKGtleSk7dG90YWwrK319KSk7aWYoIXRvdGFsKXtyZXR1cm4gY2FsbGJhY2sobnVsbCl9dmFyIGVycm9yZWQ9ZmFsc2U7dmFyIGNvbXBsZXRlZD0wO3ZhciBkYj1zcmMudHlwZT09PSJyZW1vdGUiP3NyYy5kYjpkc3QuZGI7dmFyIHRyYW5zYWN0aW9uPWRiLnRyYW5zYWN0aW9uKFtJREJGUy5EQl9TVE9SRV9OQU1FXSwicmVhZHdyaXRlIik7dmFyIHN0b3JlPXRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKElEQkZTLkRCX1NUT1JFX05BTUUpO2Z1bmN0aW9uIGRvbmUoZXJyKXtpZihlcnIpe2lmKCFkb25lLmVycm9yZWQpe2RvbmUuZXJyb3JlZD10cnVlO3JldHVybiBjYWxsYmFjayhlcnIpfXJldHVybn1pZigrK2NvbXBsZXRlZD49dG90YWwpe3JldHVybiBjYWxsYmFjayhudWxsKX19dHJhbnNhY3Rpb24ub25lcnJvcj0oZnVuY3Rpb24oKXtkb25lKHRoaXMuZXJyb3IpfSk7Y3JlYXRlLnNvcnQoKS5mb3JFYWNoKChmdW5jdGlvbihwYXRoKXtpZihkc3QudHlwZT09PSJsb2NhbCIpe0lEQkZTLmxvYWRSZW1vdGVFbnRyeShzdG9yZSxwYXRoLChmdW5jdGlvbihlcnIsZW50cnkpe2lmKGVycilyZXR1cm4gZG9uZShlcnIpO0lEQkZTLnN0b3JlTG9jYWxFbnRyeShwYXRoLGVudHJ5LGRvbmUpfSkpfWVsc2V7SURCRlMubG9hZExvY2FsRW50cnkocGF0aCwoZnVuY3Rpb24oZXJyLGVudHJ5KXtpZihlcnIpcmV0dXJuIGRvbmUoZXJyKTtJREJGUy5zdG9yZVJlbW90ZUVudHJ5KHN0b3JlLHBhdGgsZW50cnksZG9uZSl9KSl9fSkpO3JlbW92ZS5zb3J0KCkucmV2ZXJzZSgpLmZvckVhY2goKGZ1bmN0aW9uKHBhdGgpe2lmKGRzdC50eXBlPT09ImxvY2FsIil7SURCRlMucmVtb3ZlTG9jYWxFbnRyeShwYXRoLGRvbmUpfWVsc2V7SURCRlMucmVtb3ZlUmVtb3RlRW50cnkoc3RvcmUscGF0aCxkb25lKX19KSl9KX07dmFyIE5PREVGUz17aXNXaW5kb3dzOmZhbHNlLHN0YXRpY0luaXQ6KGZ1bmN0aW9uKCl7Tk9ERUZTLmlzV2luZG93cz0hIXByb2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vKX0pLG1vdW50OihmdW5jdGlvbihtb3VudCl7YXNzZXJ0KEVOVklST05NRU5UX0lTX05PREUpO3JldHVybiBOT0RFRlMuY3JlYXRlTm9kZShudWxsLCIvIixOT0RFRlMuZ2V0TW9kZShtb3VudC5vcHRzLnJvb3QpLDApfSksY3JlYXRlTm9kZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe2lmKCFGUy5pc0Rpcihtb2RlKSYmIUZTLmlzRmlsZShtb2RlKSYmIUZTLmlzTGluayhtb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbm9kZT1GUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUpO25vZGUubm9kZV9vcHM9Tk9ERUZTLm5vZGVfb3BzO25vZGUuc3RyZWFtX29wcz1OT0RFRlMuc3RyZWFtX29wcztyZXR1cm4gbm9kZX0pLGdldE1vZGU6KGZ1bmN0aW9uKHBhdGgpe3ZhciBzdGF0O3RyeXtzdGF0PWZzLmxzdGF0U3luYyhwYXRoKTtpZihOT0RFRlMuaXNXaW5kb3dzKXtzdGF0Lm1vZGU9c3RhdC5tb2RlfChzdGF0Lm1vZGUmMTQ2KT4+MX19Y2F0Y2goZSl7aWYoIWUuY29kZSl0aHJvdyBlO3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pfXJldHVybiBzdGF0Lm1vZGV9KSxyZWFsUGF0aDooZnVuY3Rpb24obm9kZSl7dmFyIHBhcnRzPVtdO3doaWxlKG5vZGUucGFyZW50IT09bm9kZSl7cGFydHMucHVzaChub2RlLm5hbWUpO25vZGU9bm9kZS5wYXJlbnR9cGFydHMucHVzaChub2RlLm1vdW50Lm9wdHMucm9vdCk7cGFydHMucmV2ZXJzZSgpO3JldHVybiBQQVRILmpvaW4uYXBwbHkobnVsbCxwYXJ0cyl9KSxmbGFnc1RvUGVybWlzc2lvblN0cmluZ01hcDp7MDoiciIsMToicisiLDI6InIrIiw2NDoiciIsNjU6InIrIiw2NjoicisiLDEyOToicngrIiwxOTM6InJ4KyIsNTE0OiJ3KyIsNTc3OiJ3Iiw1Nzg6IncrIiw3MDU6Ind4Iiw3MDY6Ind4KyIsMTAyNDoiYSIsMTAyNToiYSIsMTAyNjoiYSsiLDEwODk6ImEiLDEwOTA6ImErIiwxMTUzOiJheCIsMTE1NDoiYXgrIiwxMjE3OiJheCIsMTIxODoiYXgrIiw0MDk2OiJycyIsNDA5ODoicnMrIn0sZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmc6KGZ1bmN0aW9uKGZsYWdzKXtpZihmbGFncyBpbiBOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmdNYXApe3JldHVybiBOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmdNYXBbZmxhZ3NdfWVsc2V7cmV0dXJuIGZsYWdzfX0pLG5vZGVfb3BzOntnZXRhdHRyOihmdW5jdGlvbihub2RlKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dmFyIHN0YXQ7dHJ5e3N0YXQ9ZnMubHN0YXRTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1pZihOT0RFRlMuaXNXaW5kb3dzJiYhc3RhdC5ibGtzaXplKXtzdGF0LmJsa3NpemU9NDA5Nn1pZihOT0RFRlMuaXNXaW5kb3dzJiYhc3RhdC5ibG9ja3Mpe3N0YXQuYmxvY2tzPShzdGF0LnNpemUrc3RhdC5ibGtzaXplLTEpL3N0YXQuYmxrc2l6ZXwwfXJldHVybntkZXY6c3RhdC5kZXYsaW5vOnN0YXQuaW5vLG1vZGU6c3RhdC5tb2RlLG5saW5rOnN0YXQubmxpbmssdWlkOnN0YXQudWlkLGdpZDpzdGF0LmdpZCxyZGV2OnN0YXQucmRldixzaXplOnN0YXQuc2l6ZSxhdGltZTpzdGF0LmF0aW1lLG10aW1lOnN0YXQubXRpbWUsY3RpbWU6c3RhdC5jdGltZSxibGtzaXplOnN0YXQuYmxrc2l6ZSxibG9ja3M6c3RhdC5ibG9ja3N9fSksc2V0YXR0cjooZnVuY3Rpb24obm9kZSxhdHRyKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dHJ5e2lmKGF0dHIubW9kZSE9PXVuZGVmaW5lZCl7ZnMuY2htb2RTeW5jKHBhdGgsYXR0ci5tb2RlKTtub2RlLm1vZGU9YXR0ci5tb2RlfWlmKGF0dHIudGltZXN0YW1wIT09dW5kZWZpbmVkKXt2YXIgZGF0ZT1uZXcgRGF0ZShhdHRyLnRpbWVzdGFtcCk7ZnMudXRpbWVzU3luYyhwYXRoLGRhdGUsZGF0ZSl9aWYoYXR0ci5zaXplIT09dW5kZWZpbmVkKXtmcy50cnVuY2F0ZVN5bmMocGF0aCxhdHRyLnNpemUpfX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSksbG9va3VwOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIHBhdGg9UEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSxuYW1lKTt2YXIgbW9kZT1OT0RFRlMuZ2V0TW9kZShwYXRoKTtyZXR1cm4gTk9ERUZTLmNyZWF0ZU5vZGUocGFyZW50LG5hbWUsbW9kZSl9KSxta25vZDooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe3ZhciBub2RlPU5PREVGUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUsZGV2KTt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dHJ5e2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2ZzLm1rZGlyU3luYyhwYXRoLG5vZGUubW9kZSl9ZWxzZXtmcy53cml0ZUZpbGVTeW5jKHBhdGgsIiIse21vZGU6bm9kZS5tb2RlfSl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1yZXR1cm4gbm9kZX0pLHJlbmFtZTooZnVuY3Rpb24ob2xkTm9kZSxuZXdEaXIsbmV3TmFtZSl7dmFyIG9sZFBhdGg9Tk9ERUZTLnJlYWxQYXRoKG9sZE5vZGUpO3ZhciBuZXdQYXRoPVBBVEguam9pbjIoTk9ERUZTLnJlYWxQYXRoKG5ld0RpciksbmV3TmFtZSk7dHJ5e2ZzLnJlbmFtZVN5bmMob2xkUGF0aCxuZXdQYXRoKX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSksdW5saW5rOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIHBhdGg9UEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSxuYW1lKTt0cnl7ZnMudW5saW5rU3luYyhwYXRoKX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSkscm1kaXI6KGZ1bmN0aW9uKHBhcmVudCxuYW1lKXt2YXIgcGF0aD1QQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLG5hbWUpO3RyeXtmcy5ybWRpclN5bmMocGF0aCl9Y2F0Y2goZSl7aWYoIWUuY29kZSl0aHJvdyBlO3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pfX0pLHJlYWRkaXI6KGZ1bmN0aW9uKG5vZGUpe3ZhciBwYXRoPU5PREVGUy5yZWFsUGF0aChub2RlKTt0cnl7cmV0dXJuIGZzLnJlYWRkaXJTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxzeW1saW5rOihmdW5jdGlvbihwYXJlbnQsbmV3TmFtZSxvbGRQYXRoKXt2YXIgbmV3UGF0aD1QQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLG5ld05hbWUpO3RyeXtmcy5zeW1saW5rU3luYyhvbGRQYXRoLG5ld1BhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxyZWFkbGluazooZnVuY3Rpb24obm9kZSl7dmFyIHBhdGg9Tk9ERUZTLnJlYWxQYXRoKG5vZGUpO3RyeXtyZXR1cm4gZnMucmVhZGxpbmtTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KX0sc3RyZWFtX29wczp7b3BlbjooZnVuY3Rpb24oc3RyZWFtKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgoc3RyZWFtLm5vZGUpO3RyeXtpZihGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkpe3N0cmVhbS5uZmQ9ZnMub3BlblN5bmMocGF0aCxOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoc3RyZWFtLmZsYWdzKSl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxjbG9zZTooZnVuY3Rpb24oc3RyZWFtKXt0cnl7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpJiZzdHJlYW0ubmZkKXtmcy5jbG9zZVN5bmMoc3RyZWFtLm5mZCl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBuYnVmZmVyPW5ldyBCdWZmZXIobGVuZ3RoKTt2YXIgcmVzO3RyeXtyZXM9ZnMucmVhZFN5bmMoc3RyZWFtLm5mZCxuYnVmZmVyLDAsbGVuZ3RoLHBvc2l0aW9uKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1pZihyZXM+MCl7Zm9yKHZhciBpPTA7aTxyZXM7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPW5idWZmZXJbaV19fXJldHVybiByZXN9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgbmJ1ZmZlcj1uZXcgQnVmZmVyKGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsb2Zmc2V0K2xlbmd0aCkpO3ZhciByZXM7dHJ5e3Jlcz1mcy53cml0ZVN5bmMoc3RyZWFtLm5mZCxuYnVmZmVyLDAsbGVuZ3RoLHBvc2l0aW9uKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1yZXR1cm4gcmVzfSksbGxzZWVrOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LHdoZW5jZSl7dmFyIHBvc2l0aW9uPW9mZnNldDtpZih3aGVuY2U9PT0xKXtwb3NpdGlvbis9c3RyZWFtLnBvc2l0aW9ufWVsc2UgaWYod2hlbmNlPT09Mil7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXt0cnl7dmFyIHN0YXQ9ZnMuZnN0YXRTeW5jKHN0cmVhbS5uZmQpO3Bvc2l0aW9uKz1zdGF0LnNpemV9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fX1pZihwb3NpdGlvbjwwKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfXN0cmVhbS5wb3NpdGlvbj1wb3NpdGlvbjtyZXR1cm4gcG9zaXRpb259KX19O3ZhciBfc3RkaW49YWxsb2NhdGUoMSwiaTMyKiIsQUxMT0NfU1RBVElDKTt2YXIgX3N0ZG91dD1hbGxvY2F0ZSgxLCJpMzIqIixBTExPQ19TVEFUSUMpO3ZhciBfc3RkZXJyPWFsbG9jYXRlKDEsImkzMioiLEFMTE9DX1NUQVRJQyk7dmFyIEZTPXtyb290Om51bGwsbW91bnRzOltdLGRldmljZXM6W251bGxdLHN0cmVhbXM6W10sbmV4dElub2RlOjEsbmFtZVRhYmxlOm51bGwsY3VycmVudFBhdGg6Ii8iLGluaXRpYWxpemVkOmZhbHNlLGlnbm9yZVBlcm1pc3Npb25zOnRydWUsdHJhY2tpbmdEZWxlZ2F0ZTp7fSx0cmFja2luZzp7b3BlbkZsYWdzOntSRUFEOjEsV1JJVEU6Mn19LEVycm5vRXJyb3I6bnVsbCxnZW5lcmljRXJyb3JzOnt9LGhhbmRsZUZTRXJyb3I6KGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGUrIiA6ICIrc3RhY2tUcmFjZSgpO3JldHVybiBfX19zZXRFcnJObyhlLmVycm5vKX0pLGxvb2t1cFBhdGg6KGZ1bmN0aW9uKHBhdGgsb3B0cyl7cGF0aD1QQVRILnJlc29sdmUoRlMuY3dkKCkscGF0aCk7b3B0cz1vcHRzfHx7fTt2YXIgZGVmYXVsdHM9e2ZvbGxvd19tb3VudDp0cnVlLHJlY3Vyc2VfY291bnQ6MH07Zm9yKHZhciBrZXkgaW4gZGVmYXVsdHMpe2lmKG9wdHNba2V5XT09PXVuZGVmaW5lZCl7b3B0c1trZXldPWRlZmF1bHRzW2tleV19fWlmKG9wdHMucmVjdXJzZV9jb3VudD44KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTE9PUCl9dmFyIHBhcnRzPVBBVEgubm9ybWFsaXplQXJyYXkocGF0aC5zcGxpdCgiLyIpLmZpbHRlcigoZnVuY3Rpb24ocCl7cmV0dXJuISFwfSkpLGZhbHNlKTt2YXIgY3VycmVudD1GUy5yb290O3ZhciBjdXJyZW50X3BhdGg9Ii8iO2Zvcih2YXIgaT0wO2k8cGFydHMubGVuZ3RoO2krKyl7dmFyIGlzbGFzdD1pPT09cGFydHMubGVuZ3RoLTE7aWYoaXNsYXN0JiZvcHRzLnBhcmVudCl7YnJlYWt9Y3VycmVudD1GUy5sb29rdXBOb2RlKGN1cnJlbnQscGFydHNbaV0pO2N1cnJlbnRfcGF0aD1QQVRILmpvaW4yKGN1cnJlbnRfcGF0aCxwYXJ0c1tpXSk7aWYoRlMuaXNNb3VudHBvaW50KGN1cnJlbnQpKXtpZighaXNsYXN0fHxpc2xhc3QmJm9wdHMuZm9sbG93X21vdW50KXtjdXJyZW50PWN1cnJlbnQubW91bnRlZC5yb290fX1pZighaXNsYXN0fHxvcHRzLmZvbGxvdyl7dmFyIGNvdW50PTA7d2hpbGUoRlMuaXNMaW5rKGN1cnJlbnQubW9kZSkpe3ZhciBsaW5rPUZTLnJlYWRsaW5rKGN1cnJlbnRfcGF0aCk7Y3VycmVudF9wYXRoPVBBVEgucmVzb2x2ZShQQVRILmRpcm5hbWUoY3VycmVudF9wYXRoKSxsaW5rKTt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgoY3VycmVudF9wYXRoLHtyZWN1cnNlX2NvdW50Om9wdHMucmVjdXJzZV9jb3VudH0pO2N1cnJlbnQ9bG9va3VwLm5vZGU7aWYoY291bnQrKz40MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUxPT1ApfX19fXJldHVybntwYXRoOmN1cnJlbnRfcGF0aCxub2RlOmN1cnJlbnR9fSksZ2V0UGF0aDooZnVuY3Rpb24obm9kZSl7dmFyIHBhdGg7d2hpbGUodHJ1ZSl7aWYoRlMuaXNSb290KG5vZGUpKXt2YXIgbW91bnQ9bm9kZS5tb3VudC5tb3VudHBvaW50O2lmKCFwYXRoKXJldHVybiBtb3VudDtyZXR1cm4gbW91bnRbbW91bnQubGVuZ3RoLTFdIT09Ii8iP21vdW50KyIvIitwYXRoOm1vdW50K3BhdGh9cGF0aD1wYXRoP25vZGUubmFtZSsiLyIrcGF0aDpub2RlLm5hbWU7bm9kZT1ub2RlLnBhcmVudH19KSxoYXNoTmFtZTooZnVuY3Rpb24ocGFyZW50aWQsbmFtZSl7dmFyIGhhc2g9MDtmb3IodmFyIGk9MDtpPG5hbWUubGVuZ3RoO2krKyl7aGFzaD0oaGFzaDw8NSktaGFzaCtuYW1lLmNoYXJDb2RlQXQoaSl8MH1yZXR1cm4ocGFyZW50aWQraGFzaD4+PjApJUZTLm5hbWVUYWJsZS5sZW5ndGh9KSxoYXNoQWRkTm9kZTooZnVuY3Rpb24obm9kZSl7dmFyIGhhc2g9RlMuaGFzaE5hbWUobm9kZS5wYXJlbnQuaWQsbm9kZS5uYW1lKTtub2RlLm5hbWVfbmV4dD1GUy5uYW1lVGFibGVbaGFzaF07RlMubmFtZVRhYmxlW2hhc2hdPW5vZGV9KSxoYXNoUmVtb3ZlTm9kZTooZnVuY3Rpb24obm9kZSl7dmFyIGhhc2g9RlMuaGFzaE5hbWUobm9kZS5wYXJlbnQuaWQsbm9kZS5uYW1lKTtpZihGUy5uYW1lVGFibGVbaGFzaF09PT1ub2RlKXtGUy5uYW1lVGFibGVbaGFzaF09bm9kZS5uYW1lX25leHR9ZWxzZXt2YXIgY3VycmVudD1GUy5uYW1lVGFibGVbaGFzaF07d2hpbGUoY3VycmVudCl7aWYoY3VycmVudC5uYW1lX25leHQ9PT1ub2RlKXtjdXJyZW50Lm5hbWVfbmV4dD1ub2RlLm5hbWVfbmV4dDticmVha31jdXJyZW50PWN1cnJlbnQubmFtZV9uZXh0fX19KSxsb29rdXBOb2RlOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIGVycj1GUy5tYXlMb29rdXAocGFyZW50KTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9dmFyIGhhc2g9RlMuaGFzaE5hbWUocGFyZW50LmlkLG5hbWUpO2Zvcih2YXIgbm9kZT1GUy5uYW1lVGFibGVbaGFzaF07bm9kZTtub2RlPW5vZGUubmFtZV9uZXh0KXt2YXIgbm9kZU5hbWU9bm9kZS5uYW1lO2lmKG5vZGUucGFyZW50LmlkPT09cGFyZW50LmlkJiZub2RlTmFtZT09PW5hbWUpe3JldHVybiBub2RlfX1yZXR1cm4gRlMubG9va3VwKHBhcmVudCxuYW1lKX0pLGNyZWF0ZU5vZGU6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLG1vZGUscmRldil7aWYoIUZTLkZTTm9kZSl7RlMuRlNOb2RlPShmdW5jdGlvbihwYXJlbnQsbmFtZSxtb2RlLHJkZXYpe2lmKCFwYXJlbnQpe3BhcmVudD10aGlzfXRoaXMucGFyZW50PXBhcmVudDt0aGlzLm1vdW50PXBhcmVudC5tb3VudDt0aGlzLm1vdW50ZWQ9bnVsbDt0aGlzLmlkPUZTLm5leHRJbm9kZSsrO3RoaXMubmFtZT1uYW1lO3RoaXMubW9kZT1tb2RlO3RoaXMubm9kZV9vcHM9e307dGhpcy5zdHJlYW1fb3BzPXt9O3RoaXMucmRldj1yZGV2fSk7RlMuRlNOb2RlLnByb3RvdHlwZT17fTt2YXIgcmVhZE1vZGU9MjkyfDczO3ZhciB3cml0ZU1vZGU9MTQ2O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZTLkZTTm9kZS5wcm90b3R5cGUse3JlYWQ6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5tb2RlJnJlYWRNb2RlKT09PXJlYWRNb2RlfSksc2V0OihmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXJlYWRNb2RlOnRoaXMubW9kZSY9fnJlYWRNb2RlfSl9LHdyaXRlOntnZXQ6KGZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMubW9kZSZ3cml0ZU1vZGUpPT09d3JpdGVNb2RlfSksc2V0OihmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXdyaXRlTW9kZTp0aGlzLm1vZGUmPX53cml0ZU1vZGV9KX0saXNGb2xkZXI6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4gRlMuaXNEaXIodGhpcy5tb2RlKX0pfSxpc0RldmljZTp7Z2V0OihmdW5jdGlvbigpe3JldHVybiBGUy5pc0NocmRldih0aGlzLm1vZGUpfSl9fSl9dmFyIG5vZGU9bmV3IEZTLkZTTm9kZShwYXJlbnQsbmFtZSxtb2RlLHJkZXYpO0ZTLmhhc2hBZGROb2RlKG5vZGUpO3JldHVybiBub2RlfSksZGVzdHJveU5vZGU6KGZ1bmN0aW9uKG5vZGUpe0ZTLmhhc2hSZW1vdmVOb2RlKG5vZGUpfSksaXNSb290OihmdW5jdGlvbihub2RlKXtyZXR1cm4gbm9kZT09PW5vZGUucGFyZW50fSksaXNNb3VudHBvaW50OihmdW5jdGlvbihub2RlKXtyZXR1cm4hIW5vZGUubW91bnRlZH0pLGlzRmlsZTooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MzI3Njh9KSxpc0RpcjooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MTYzODR9KSxpc0xpbms6KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTQwOTYwfSksaXNDaHJkZXY6KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTgxOTJ9KSxpc0Jsa2RldjooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MjQ1NzZ9KSxpc0ZJRk86KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTQwOTZ9KSxpc1NvY2tldDooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNDkxNTIpPT09NDkxNTJ9KSxmbGFnTW9kZXM6eyJyIjowLCJycyI6MTA1MjY3MiwicisiOjIsInciOjU3Nywid3giOjcwNSwieHciOjcwNSwidysiOjU3OCwid3grIjo3MDYsInh3KyI6NzA2LCJhIjoxMDg5LCJheCI6MTIxNywieGEiOjEyMTcsImErIjoxMDkwLCJheCsiOjEyMTgsInhhKyI6MTIxOH0sbW9kZVN0cmluZ1RvRmxhZ3M6KGZ1bmN0aW9uKHN0cil7dmFyIGZsYWdzPUZTLmZsYWdNb2Rlc1tzdHJdO2lmKHR5cGVvZiBmbGFncz09PSJ1bmRlZmluZWQiKXt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZmlsZSBvcGVuIG1vZGU6ICIrc3RyKX1yZXR1cm4gZmxhZ3N9KSxmbGFnc1RvUGVybWlzc2lvblN0cmluZzooZnVuY3Rpb24oZmxhZyl7dmFyIGFjY21vZGU9ZmxhZyYyMDk3MTU1O3ZhciBwZXJtcz1bInIiLCJ3IiwicnciXVthY2Ntb2RlXTtpZihmbGFnJjUxMil7cGVybXMrPSJ3In1yZXR1cm4gcGVybXN9KSxub2RlUGVybWlzc2lvbnM6KGZ1bmN0aW9uKG5vZGUscGVybXMpe2lmKEZTLmlnbm9yZVBlcm1pc3Npb25zKXtyZXR1cm4gMH1pZihwZXJtcy5pbmRleE9mKCJyIikhPT0tMSYmIShub2RlLm1vZGUmMjkyKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVBQ0NFU31lbHNlIGlmKHBlcm1zLmluZGV4T2YoInciKSE9PS0xJiYhKG5vZGUubW9kZSYxNDYpKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUFDQ0VTfWVsc2UgaWYocGVybXMuaW5kZXhPZigieCIpIT09LTEmJiEobm9kZS5tb2RlJjczKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVBQ0NFU31yZXR1cm4gMH0pLG1heUxvb2t1cDooZnVuY3Rpb24oZGlyKXtyZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKGRpciwieCIpfSksbWF5Q3JlYXRlOihmdW5jdGlvbihkaXIsbmFtZSl7dHJ5e3ZhciBub2RlPUZTLmxvb2t1cE5vZGUoZGlyLG5hbWUpO3JldHVybiBFUlJOT19DT0RFUy5FRVhJU1R9Y2F0Y2goZSl7fXJldHVybiBGUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpfSksbWF5RGVsZXRlOihmdW5jdGlvbihkaXIsbmFtZSxpc2Rpcil7dmFyIG5vZGU7dHJ5e25vZGU9RlMubG9va3VwTm9kZShkaXIsbmFtZSl9Y2F0Y2goZSl7cmV0dXJuIGUuZXJybm99dmFyIGVycj1GUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpO2lmKGVycil7cmV0dXJuIGVycn1pZihpc2Rpcil7aWYoIUZTLmlzRGlyKG5vZGUubW9kZSkpe3JldHVybiBFUlJOT19DT0RFUy5FTk9URElSfWlmKEZTLmlzUm9vdChub2RlKXx8RlMuZ2V0UGF0aChub2RlKT09PUZTLmN3ZCgpKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUJVU1l9fWVsc2V7aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVJU0RJUn19cmV0dXJuIDB9KSxtYXlPcGVuOihmdW5jdGlvbihub2RlLGZsYWdzKXtpZighbm9kZSl7cmV0dXJuIEVSUk5PX0NPREVTLkVOT0VOVH1pZihGUy5pc0xpbmsobm9kZS5tb2RlKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVMT09QfWVsc2UgaWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7aWYoKGZsYWdzJjIwOTcxNTUpIT09MHx8ZmxhZ3MmNTEyKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUlTRElSfX1yZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKG5vZGUsRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoZmxhZ3MpKX0pLE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZDooZnVuY3Rpb24oZmRfc3RhcnQsZmRfZW5kKXtmZF9zdGFydD1mZF9zdGFydHx8MDtmZF9lbmQ9ZmRfZW5kfHxGUy5NQVhfT1BFTl9GRFM7Zm9yKHZhciBmZD1mZF9zdGFydDtmZDw9ZmRfZW5kO2ZkKyspe2lmKCFGUy5zdHJlYW1zW2ZkXSl7cmV0dXJuIGZkfX10aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTUZJTEUpfSksZ2V0U3RyZWFtOihmdW5jdGlvbihmZCl7cmV0dXJuIEZTLnN0cmVhbXNbZmRdfSksY3JlYXRlU3RyZWFtOihmdW5jdGlvbihzdHJlYW0sZmRfc3RhcnQsZmRfZW5kKXtpZighRlMuRlNTdHJlYW0pe0ZTLkZTU3RyZWFtPShmdW5jdGlvbigpe30pO0ZTLkZTU3RyZWFtLnByb3RvdHlwZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGUy5GU1N0cmVhbS5wcm90b3R5cGUse29iamVjdDp7Z2V0OihmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9KSxzZXQ6KGZ1bmN0aW9uKHZhbCl7dGhpcy5ub2RlPXZhbH0pfSxpc1JlYWQ6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5mbGFncyYyMDk3MTU1KSE9PTF9KX0saXNXcml0ZTp7Z2V0OihmdW5jdGlvbigpe3JldHVybih0aGlzLmZsYWdzJjIwOTcxNTUpIT09MH0pfSxpc0FwcGVuZDp7Z2V0OihmdW5jdGlvbigpe3JldHVybiB0aGlzLmZsYWdzJjEwMjR9KX19KX12YXIgbmV3U3RyZWFtPW5ldyBGUy5GU1N0cmVhbTtmb3IodmFyIHAgaW4gc3RyZWFtKXtuZXdTdHJlYW1bcF09c3RyZWFtW3BdfXN0cmVhbT1uZXdTdHJlYW07dmFyIGZkPUZTLm5leHRmZChmZF9zdGFydCxmZF9lbmQpO3N0cmVhbS5mZD1mZDtGUy5zdHJlYW1zW2ZkXT1zdHJlYW07cmV0dXJuIHN0cmVhbX0pLGNsb3NlU3RyZWFtOihmdW5jdGlvbihmZCl7RlMuc3RyZWFtc1tmZF09bnVsbH0pLGdldFN0cmVhbUZyb21QdHI6KGZ1bmN0aW9uKHB0cil7cmV0dXJuIEZTLnN0cmVhbXNbcHRyLTFdfSksZ2V0UHRyRm9yU3RyZWFtOihmdW5jdGlvbihzdHJlYW0pe3JldHVybiBzdHJlYW0/c3RyZWFtLmZkKzE6MH0pLGNocmRldl9zdHJlYW1fb3BzOntvcGVuOihmdW5jdGlvbihzdHJlYW0pe3ZhciBkZXZpY2U9RlMuZ2V0RGV2aWNlKHN0cmVhbS5ub2RlLnJkZXYpO3N0cmVhbS5zdHJlYW1fb3BzPWRldmljZS5zdHJlYW1fb3BzO2lmKHN0cmVhbS5zdHJlYW1fb3BzLm9wZW4pe3N0cmVhbS5zdHJlYW1fb3BzLm9wZW4oc3RyZWFtKX19KSxsbHNlZWs6KGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKX0pfSxtYWpvcjooZnVuY3Rpb24oZGV2KXtyZXR1cm4gZGV2Pj44fSksbWlub3I6KGZ1bmN0aW9uKGRldil7cmV0dXJuIGRldiYyNTV9KSxtYWtlZGV2OihmdW5jdGlvbihtYSxtaSl7cmV0dXJuIG1hPDw4fG1pfSkscmVnaXN0ZXJEZXZpY2U6KGZ1bmN0aW9uKGRldixvcHMpe0ZTLmRldmljZXNbZGV2XT17c3RyZWFtX29wczpvcHN9fSksZ2V0RGV2aWNlOihmdW5jdGlvbihkZXYpe3JldHVybiBGUy5kZXZpY2VzW2Rldl19KSxnZXRNb3VudHM6KGZ1bmN0aW9uKG1vdW50KXt2YXIgbW91bnRzPVtdO3ZhciBjaGVjaz1bbW91bnRdO3doaWxlKGNoZWNrLmxlbmd0aCl7dmFyIG09Y2hlY2sucG9wKCk7bW91bnRzLnB1c2gobSk7Y2hlY2sucHVzaC5hcHBseShjaGVjayxtLm1vdW50cyl9cmV0dXJuIG1vdW50c30pLHN5bmNmczooZnVuY3Rpb24ocG9wdWxhdGUsY2FsbGJhY2spe2lmKHR5cGVvZiBwb3B1bGF0ZT09PSJmdW5jdGlvbiIpe2NhbGxiYWNrPXBvcHVsYXRlO3BvcHVsYXRlPWZhbHNlfXZhciBtb3VudHM9RlMuZ2V0TW91bnRzKEZTLnJvb3QubW91bnQpO3ZhciBjb21wbGV0ZWQ9MDtmdW5jdGlvbiBkb25lKGVycil7aWYoZXJyKXtpZighZG9uZS5lcnJvcmVkKXtkb25lLmVycm9yZWQ9dHJ1ZTtyZXR1cm4gY2FsbGJhY2soZXJyKX1yZXR1cm59aWYoKytjb21wbGV0ZWQ+PW1vdW50cy5sZW5ndGgpe2NhbGxiYWNrKG51bGwpfX1tb3VudHMuZm9yRWFjaCgoZnVuY3Rpb24obW91bnQpe2lmKCFtb3VudC50eXBlLnN5bmNmcyl7cmV0dXJuIGRvbmUobnVsbCl9bW91bnQudHlwZS5zeW5jZnMobW91bnQscG9wdWxhdGUsZG9uZSl9KSl9KSxtb3VudDooZnVuY3Rpb24odHlwZSxvcHRzLG1vdW50cG9pbnQpe3ZhciByb290PW1vdW50cG9pbnQ9PT0iLyI7dmFyIHBzZXVkbz0hbW91bnRwb2ludDt2YXIgbm9kZTtpZihyb290JiZGUy5yb290KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQlVTWSl9ZWxzZSBpZighcm9vdCYmIXBzZXVkbyl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKG1vdW50cG9pbnQse2ZvbGxvd19tb3VudDpmYWxzZX0pO21vdW50cG9pbnQ9bG9va3VwLnBhdGg7bm9kZT1sb29rdXAubm9kZTtpZihGUy5pc01vdW50cG9pbnQobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKX1pZighRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVERJUil9fXZhciBtb3VudD17dHlwZTp0eXBlLG9wdHM6b3B0cyxtb3VudHBvaW50Om1vdW50cG9pbnQsbW91bnRzOltdfTt2YXIgbW91bnRSb290PXR5cGUubW91bnQobW91bnQpO21vdW50Um9vdC5tb3VudD1tb3VudDttb3VudC5yb290PW1vdW50Um9vdDtpZihyb290KXtGUy5yb290PW1vdW50Um9vdH1lbHNlIGlmKG5vZGUpe25vZGUubW91bnRlZD1tb3VudDtpZihub2RlLm1vdW50KXtub2RlLm1vdW50Lm1vdW50cy5wdXNoKG1vdW50KX19cmV0dXJuIG1vdW50Um9vdH0pLHVubW91bnQ6KGZ1bmN0aW9uKG1vdW50cG9pbnQpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChtb3VudHBvaW50LHtmb2xsb3dfbW91bnQ6ZmFsc2V9KTtpZighRlMuaXNNb3VudHBvaW50KGxvb2t1cC5ub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbm9kZT1sb29rdXAubm9kZTt2YXIgbW91bnQ9bm9kZS5tb3VudGVkO3ZhciBtb3VudHM9RlMuZ2V0TW91bnRzKG1vdW50KTtPYmplY3Qua2V5cyhGUy5uYW1lVGFibGUpLmZvckVhY2goKGZ1bmN0aW9uKGhhc2gpe3ZhciBjdXJyZW50PUZTLm5hbWVUYWJsZVtoYXNoXTt3aGlsZShjdXJyZW50KXt2YXIgbmV4dD1jdXJyZW50Lm5hbWVfbmV4dDtpZihtb3VudHMuaW5kZXhPZihjdXJyZW50Lm1vdW50KSE9PS0xKXtGUy5kZXN0cm95Tm9kZShjdXJyZW50KX1jdXJyZW50PW5leHR9fSkpO25vZGUubW91bnRlZD1udWxsO3ZhciBpZHg9bm9kZS5tb3VudC5tb3VudHMuaW5kZXhPZihtb3VudCk7YXNzZXJ0KGlkeCE9PS0xKTtub2RlLm1vdW50Lm1vdW50cy5zcGxpY2UoaWR4LDEpfSksbG9va3VwOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7cmV0dXJuIHBhcmVudC5ub2RlX29wcy5sb29rdXAocGFyZW50LG5hbWUpfSksbWtub2Q6KGZ1bmN0aW9uKHBhdGgsbW9kZSxkZXYpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgZXJyPUZTLm1heUNyZWF0ZShwYXJlbnQsbmFtZSk7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfWlmKCFwYXJlbnQubm9kZV9vcHMubWtub2Qpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLm1rbm9kKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0pLGNyZWF0ZTooZnVuY3Rpb24ocGF0aCxtb2RlKXttb2RlPW1vZGUhPT11bmRlZmluZWQ/bW9kZTo0Mzg7bW9kZSY9NDA5NTttb2RlfD0zMjc2ODtyZXR1cm4gRlMubWtub2QocGF0aCxtb2RlLDApfSksbWtkaXI6KGZ1bmN0aW9uKHBhdGgsbW9kZSl7bW9kZT1tb2RlIT09dW5kZWZpbmVkP21vZGU6NTExO21vZGUmPTUxMXw1MTI7bW9kZXw9MTYzODQ7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSwwKX0pLG1rZGV2OihmdW5jdGlvbihwYXRoLG1vZGUsZGV2KXtpZih0eXBlb2YgZGV2PT09InVuZGVmaW5lZCIpe2Rldj1tb2RlO21vZGU9NDM4fW1vZGV8PTgxOTI7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSxkZXYpfSksc3ltbGluazooZnVuY3Rpb24ob2xkcGF0aCxuZXdwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgobmV3cGF0aCx7cGFyZW50OnRydWV9KTt2YXIgcGFyZW50PWxvb2t1cC5ub2RlO3ZhciBuZXduYW1lPVBBVEguYmFzZW5hbWUobmV3cGF0aCk7dmFyIGVycj1GUy5tYXlDcmVhdGUocGFyZW50LG5ld25hbWUpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1pZighcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmsocGFyZW50LG5ld25hbWUsb2xkcGF0aCl9KSxyZW5hbWU6KGZ1bmN0aW9uKG9sZF9wYXRoLG5ld19wYXRoKXt2YXIgb2xkX2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG9sZF9wYXRoKTt2YXIgbmV3X2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG5ld19wYXRoKTt2YXIgb2xkX25hbWU9UEFUSC5iYXNlbmFtZShvbGRfcGF0aCk7dmFyIG5ld19uYW1lPVBBVEguYmFzZW5hbWUobmV3X3BhdGgpO3ZhciBsb29rdXAsb2xkX2RpcixuZXdfZGlyO3RyeXtsb29rdXA9RlMubG9va3VwUGF0aChvbGRfcGF0aCx7cGFyZW50OnRydWV9KTtvbGRfZGlyPWxvb2t1cC5ub2RlO2xvb2t1cD1GUy5sb29rdXBQYXRoKG5ld19wYXRoLHtwYXJlbnQ6dHJ1ZX0pO25ld19kaXI9bG9va3VwLm5vZGV9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfWlmKG9sZF9kaXIubW91bnQhPT1uZXdfZGlyLm1vdW50KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FWERFVil9dmFyIG9sZF9ub2RlPUZTLmxvb2t1cE5vZGUob2xkX2RpcixvbGRfbmFtZSk7dmFyIHJlbGF0aXZlPVBBVEgucmVsYXRpdmUob2xkX3BhdGgsbmV3X2Rpcm5hbWUpO2lmKHJlbGF0aXZlLmNoYXJBdCgwKSE9PSIuIil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1yZWxhdGl2ZT1QQVRILnJlbGF0aXZlKG5ld19wYXRoLG9sZF9kaXJuYW1lKTtpZihyZWxhdGl2ZS5jaGFyQXQoMCkhPT0iLiIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RFTVBUWSl9dmFyIG5ld19ub2RlO3RyeXtuZXdfbm9kZT1GUy5sb29rdXBOb2RlKG5ld19kaXIsbmV3X25hbWUpfWNhdGNoKGUpe31pZihvbGRfbm9kZT09PW5ld19ub2RlKXtyZXR1cm59dmFyIGlzZGlyPUZTLmlzRGlyKG9sZF9ub2RlLm1vZGUpO3ZhciBlcnI9RlMubWF5RGVsZXRlKG9sZF9kaXIsb2xkX25hbWUsaXNkaXIpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1lcnI9bmV3X25vZGU/RlMubWF5RGVsZXRlKG5ld19kaXIsbmV3X25hbWUsaXNkaXIpOkZTLm1heUNyZWF0ZShuZXdfZGlyLG5ld19uYW1lKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoIW9sZF9kaXIubm9kZV9vcHMucmVuYW1lKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9aWYoRlMuaXNNb3VudHBvaW50KG9sZF9ub2RlKXx8bmV3X25vZGUmJkZTLmlzTW91bnRwb2ludChuZXdfbm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKX1pZihuZXdfZGlyIT09b2xkX2Rpcil7ZXJyPUZTLm5vZGVQZXJtaXNzaW9ucyhvbGRfZGlyLCJ3Iik7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfX10cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsid2lsbE1vdmVQYXRoIl0pe0ZTLnRyYWNraW5nRGVsZWdhdGVbIndpbGxNb3ZlUGF0aCJdKG9sZF9wYXRoLG5ld19wYXRoKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxNb3ZlUGF0aCddKCciK29sZF9wYXRoKyInLCAnIituZXdfcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9RlMuaGFzaFJlbW92ZU5vZGUob2xkX25vZGUpO3RyeXtvbGRfZGlyLm5vZGVfb3BzLnJlbmFtZShvbGRfbm9kZSxuZXdfZGlyLG5ld19uYW1lKX1jYXRjaChlKXt0aHJvdyBlfWZpbmFsbHl7RlMuaGFzaEFkZE5vZGUob2xkX25vZGUpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJvbk1vdmVQYXRoIl0pRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25Nb3ZlUGF0aCJdKG9sZF9wYXRoLG5ld19wYXRoKX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25Nb3ZlUGF0aCddKCciK29sZF9wYXRoKyInLCAnIituZXdfcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9fSkscm1kaXI6KGZ1bmN0aW9uKHBhdGgpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgbm9kZT1GUy5sb29rdXBOb2RlKHBhcmVudCxuYW1lKTt2YXIgZXJyPUZTLm1heURlbGV0ZShwYXJlbnQsbmFtZSx0cnVlKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoIXBhcmVudC5ub2RlX29wcy5ybWRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKXtGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKHBhdGgpfX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1wYXJlbnQubm9kZV9vcHMucm1kaXIocGFyZW50LG5hbWUpO0ZTLmRlc3Ryb3lOb2RlKG5vZGUpO3RyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXSlGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXShwYXRoKX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25EZWxldGVQYXRoJ10oJyIrcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9fSkscmVhZGRpcjooZnVuY3Rpb24ocGF0aCl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7aWYoIW5vZGUubm9kZV9vcHMucmVhZGRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVERJUil9cmV0dXJuIG5vZGUubm9kZV9vcHMucmVhZGRpcihub2RlKX0pLHVubGluazooZnVuY3Rpb24ocGF0aCl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse3BhcmVudDp0cnVlfSk7dmFyIHBhcmVudD1sb29rdXAubm9kZTt2YXIgbmFtZT1QQVRILmJhc2VuYW1lKHBhdGgpO3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO3ZhciBlcnI9RlMubWF5RGVsZXRlKHBhcmVudCxuYW1lLGZhbHNlKTtpZihlcnIpe2lmKGVycj09PUVSUk5PX0NPREVTLkVJU0RJUillcnI9RVJSTk9fQ09ERVMuRVBFUk07dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1pZighcGFyZW50Lm5vZGVfb3BzLnVubGluayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKXtGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKHBhdGgpfX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1wYXJlbnQubm9kZV9vcHMudW5saW5rKHBhcmVudCxuYW1lKTtGUy5kZXN0cm95Tm9kZShub2RlKTt0cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25EZWxldGVQYXRoIl0pRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25EZWxldGVQYXRoIl0ocGF0aCl9Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uRGVsZXRlUGF0aCddKCciK3BhdGgrIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UpfX0pLHJlYWRsaW5rOihmdW5jdGlvbihwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCk7dmFyIGxpbms9bG9va3VwLm5vZGU7aWYoIWxpbmsubm9kZV9vcHMucmVhZGxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9cmV0dXJuIGxpbmsubm9kZV9vcHMucmVhZGxpbmsobGluayl9KSxzdGF0OihmdW5jdGlvbihwYXRoLGRvbnRGb2xsb3cpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IWRvbnRGb2xsb3d9KTt2YXIgbm9kZT1sb29rdXAubm9kZTtpZighbm9kZS5ub2RlX29wcy5nZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9cmV0dXJuIG5vZGUubm9kZV9vcHMuZ2V0YXR0cihub2RlKX0pLGxzdGF0OihmdW5jdGlvbihwYXRoKXtyZXR1cm4gRlMuc3RhdChwYXRoLHRydWUpfSksY2htb2Q6KGZ1bmN0aW9uKHBhdGgsbW9kZSxkb250Rm9sbG93KXt2YXIgbm9kZTtpZih0eXBlb2YgcGF0aD09PSJzdHJpbmciKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250Rm9sbG93fSk7bm9kZT1sb29rdXAubm9kZX1lbHNle25vZGU9cGF0aH1pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse21vZGU6bW9kZSY0MDk1fG5vZGUubW9kZSZ+NDA5NSx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSksbGNobW9kOihmdW5jdGlvbihwYXRoLG1vZGUpe0ZTLmNobW9kKHBhdGgsbW9kZSx0cnVlKX0pLGZjaG1vZDooZnVuY3Rpb24oZmQsbW9kZSl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1GUy5jaG1vZChzdHJlYW0ubm9kZSxtb2RlKX0pLGNob3duOihmdW5jdGlvbihwYXRoLHVpZCxnaWQsZG9udEZvbGxvdyl7dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzohZG9udEZvbGxvd30pO25vZGU9bG9va3VwLm5vZGV9ZWxzZXtub2RlPXBhdGh9aWYoIW5vZGUubm9kZV9vcHMuc2V0YXR0cil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfW5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSksbGNob3duOihmdW5jdGlvbihwYXRoLHVpZCxnaWQpe0ZTLmNob3duKHBhdGgsdWlkLGdpZCx0cnVlKX0pLGZjaG93bjooZnVuY3Rpb24oZmQsdWlkLGdpZCl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1GUy5jaG93bihzdHJlYW0ubm9kZSx1aWQsZ2lkKX0pLHRydW5jYXRlOihmdW5jdGlvbihwYXRoLGxlbil7aWYobGVuPDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7bm9kZT1sb29rdXAubm9kZX1lbHNle25vZGU9cGF0aH1pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTRElSKX1pZighRlMuaXNGaWxlKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIGVycj1GUy5ub2RlUGVybWlzc2lvbnMobm9kZSwidyIpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1ub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSx7c2l6ZTpsZW4sdGltZXN0YW1wOkRhdGUubm93KCl9KX0pLGZ0cnVuY2F0ZTooZnVuY3Rpb24oZmQsbGVuKXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmZCk7aWYoIXN0cmVhbSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpfWlmKChzdHJlYW0uZmxhZ3MmMjA5NzE1NSk9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfUZTLnRydW5jYXRlKHN0cmVhbS5ub2RlLGxlbil9KSx1dGltZTooZnVuY3Rpb24ocGF0aCxhdGltZSxtdGltZSl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse3RpbWVzdGFtcDpNYXRoLm1heChhdGltZSxtdGltZSl9KX0pLG9wZW46KGZ1bmN0aW9uKHBhdGgsZmxhZ3MsbW9kZSxmZF9zdGFydCxmZF9lbmQpe2ZsYWdzPXR5cGVvZiBmbGFncz09PSJzdHJpbmciP0ZTLm1vZGVTdHJpbmdUb0ZsYWdzKGZsYWdzKTpmbGFnczttb2RlPXR5cGVvZiBtb2RlPT09InVuZGVmaW5lZCI/NDM4Om1vZGU7aWYoZmxhZ3MmNjQpe21vZGU9bW9kZSY0MDk1fDMyNzY4fWVsc2V7bW9kZT0wfXZhciBub2RlO2lmKHR5cGVvZiBwYXRoPT09Im9iamVjdCIpe25vZGU9cGF0aH1lbHNle3BhdGg9UEFUSC5ub3JtYWxpemUocGF0aCk7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IShmbGFncyYxMzEwNzIpfSk7bm9kZT1sb29rdXAubm9kZX1jYXRjaChlKXt9fWlmKGZsYWdzJjY0KXtpZihub2RlKXtpZihmbGFncyYxMjgpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVFWElTVCl9fWVsc2V7bm9kZT1GUy5ta25vZChwYXRoLG1vZGUsMCl9fWlmKCFub2RlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9FTlQpfWlmKEZTLmlzQ2hyZGV2KG5vZGUubW9kZSkpe2ZsYWdzJj1+NTEyfXZhciBlcnI9RlMubWF5T3Blbihub2RlLGZsYWdzKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoZmxhZ3MmNTEyKXtGUy50cnVuY2F0ZShub2RlLDApfWZsYWdzJj1+KDEyOHw1MTIpO3ZhciBzdHJlYW09RlMuY3JlYXRlU3RyZWFtKHtub2RlOm5vZGUscGF0aDpGUy5nZXRQYXRoKG5vZGUpLGZsYWdzOmZsYWdzLHNlZWthYmxlOnRydWUscG9zaXRpb246MCxzdHJlYW1fb3BzOm5vZGUuc3RyZWFtX29wcyx1bmdvdHRlbjpbXSxlcnJvcjpmYWxzZX0sZmRfc3RhcnQsZmRfZW5kKTtpZihzdHJlYW0uc3RyZWFtX29wcy5vcGVuKXtzdHJlYW0uc3RyZWFtX29wcy5vcGVuKHN0cmVhbSl9aWYoTW9kdWxlWyJsb2dSZWFkRmlsZXMiXSYmIShmbGFncyYxKSl7aWYoIUZTLnJlYWRGaWxlcylGUy5yZWFkRmlsZXM9e307aWYoIShwYXRoIGluIEZTLnJlYWRGaWxlcykpe0ZTLnJlYWRGaWxlc1twYXRoXT0xO01vZHVsZVsicHJpbnRFcnIiXSgicmVhZCBmaWxlOiAiK3BhdGgpfX10cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25PcGVuRmlsZSJdKXt2YXIgdHJhY2tpbmdGbGFncz0wO2lmKChmbGFncyYyMDk3MTU1KSE9PTEpe3RyYWNraW5nRmxhZ3N8PUZTLnRyYWNraW5nLm9wZW5GbGFncy5SRUFEfWlmKChmbGFncyYyMDk3MTU1KSE9PTApe3RyYWNraW5nRmxhZ3N8PUZTLnRyYWNraW5nLm9wZW5GbGFncy5XUklURX1GUy50cmFja2luZ0RlbGVnYXRlWyJvbk9wZW5GaWxlIl0ocGF0aCx0cmFja2luZ0ZsYWdzKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uT3BlbkZpbGUnXSgnIitwYXRoKyInLCBmbGFncykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9cmV0dXJuIHN0cmVhbX0pLGNsb3NlOihmdW5jdGlvbihzdHJlYW0pe3RyeXtpZihzdHJlYW0uc3RyZWFtX29wcy5jbG9zZSl7c3RyZWFtLnN0cmVhbV9vcHMuY2xvc2Uoc3RyZWFtKX19Y2F0Y2goZSl7dGhyb3cgZX1maW5hbGx5e0ZTLmNsb3NlU3RyZWFtKHN0cmVhbS5mZCl9fSksbGxzZWVrOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LHdoZW5jZSl7aWYoIXN0cmVhbS5zZWVrYWJsZXx8IXN0cmVhbS5zdHJlYW1fb3BzLmxsc2Vlayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKX1yZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubGxzZWVrKHN0cmVhbSxvZmZzZXQsd2hlbmNlKX0pLHJlYWQ6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbil7aWYobGVuZ3RoPDB8fHBvc2l0aW9uPDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1pZihGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTRElSKX1pZighc3RyZWFtLnN0cmVhbV9vcHMucmVhZCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgc2Vla2luZz10cnVlO2lmKHR5cGVvZiBwb3NpdGlvbj09PSJ1bmRlZmluZWQiKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247c2Vla2luZz1mYWxzZX1lbHNlIGlmKCFzdHJlYW0uc2Vla2FibGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSl9dmFyIGJ5dGVzUmVhZD1zdHJlYW0uc3RyZWFtX29wcy5yZWFkKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbik7aWYoIXNlZWtpbmcpc3RyZWFtLnBvc2l0aW9uKz1ieXRlc1JlYWQ7cmV0dXJuIGJ5dGVzUmVhZH0pLHdyaXRlOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24sY2FuT3duKXtpZihsZW5ndGg8MHx8cG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1pZigoc3RyZWFtLmZsYWdzJjIwOTcxNTUpPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpfWlmKEZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSVNESVIpfWlmKCFzdHJlYW0uc3RyZWFtX29wcy53cml0ZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgc2Vla2luZz10cnVlO2lmKHR5cGVvZiBwb3NpdGlvbj09PSJ1bmRlZmluZWQiKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247c2Vla2luZz1mYWxzZX1lbHNlIGlmKCFzdHJlYW0uc2Vla2FibGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSl9aWYoc3RyZWFtLmZsYWdzJjEwMjQpe0ZTLmxsc2VlayhzdHJlYW0sMCwyKX12YXIgYnl0ZXNXcml0dGVuPXN0cmVhbS5zdHJlYW1fb3BzLndyaXRlKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixjYW5Pd24pO2lmKCFzZWVraW5nKXN0cmVhbS5wb3NpdGlvbis9Ynl0ZXNXcml0dGVuO3RyeXtpZihzdHJlYW0ucGF0aCYmRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25Xcml0ZVRvRmlsZSJdKUZTLnRyYWNraW5nRGVsZWdhdGVbIm9uV3JpdGVUb0ZpbGUiXShzdHJlYW0ucGF0aCl9Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uV3JpdGVUb0ZpbGUnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1yZXR1cm4gYnl0ZXNXcml0dGVufSksYWxsb2NhdGU6KGZ1bmN0aW9uKHN0cmVhbSxvZmZzZXQsbGVuZ3RoKXtpZihvZmZzZXQ8MHx8bGVuZ3RoPD0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfWlmKChzdHJlYW0uZmxhZ3MmMjA5NzE1NSk9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQkFERil9aWYoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSYmIUZTLmlzRGlyKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLmFsbG9jYXRlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FT1BOT1RTVVBQKX1zdHJlYW0uc3RyZWFtX29wcy5hbGxvY2F0ZShzdHJlYW0sb2Zmc2V0LGxlbmd0aCl9KSxtbWFwOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24scHJvdCxmbGFncyl7aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVBQ0NFUyl9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLm1tYXApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLm1tYXAoc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLHByb3QsZmxhZ3MpfSksaW9jdGw6KGZ1bmN0aW9uKHN0cmVhbSxjbWQsYXJnKXtpZighc3RyZWFtLnN0cmVhbV9vcHMuaW9jdGwpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RUWSl9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLmlvY3RsKHN0cmVhbSxjbWQsYXJnKX0pLHJlYWRGaWxlOihmdW5jdGlvbihwYXRoLG9wdHMpe29wdHM9b3B0c3x8e307b3B0cy5mbGFncz1vcHRzLmZsYWdzfHwiciI7b3B0cy5lbmNvZGluZz1vcHRzLmVuY29kaW5nfHwiYmluYXJ5IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgcmV0O3ZhciBzdHJlYW09RlMub3BlbihwYXRoLG9wdHMuZmxhZ3MpO3ZhciBzdGF0PUZTLnN0YXQocGF0aCk7dmFyIGxlbmd0aD1zdGF0LnNpemU7dmFyIGJ1Zj1uZXcgVWludDhBcnJheShsZW5ndGgpO0ZTLnJlYWQoc3RyZWFtLGJ1ZiwwLGxlbmd0aCwwKTtpZihvcHRzLmVuY29kaW5nPT09InV0ZjgiKXtyZXQ9IiI7dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe3JldCs9dXRmOC5wcm9jZXNzQ0NoYXIoYnVmW2ldKX19ZWxzZSBpZihvcHRzLmVuY29kaW5nPT09ImJpbmFyeSIpe3JldD1idWZ9RlMuY2xvc2Uoc3RyZWFtKTtyZXR1cm4gcmV0fSksd3JpdGVGaWxlOihmdW5jdGlvbihwYXRoLGRhdGEsb3B0cyl7b3B0cz1vcHRzfHx7fTtvcHRzLmZsYWdzPW9wdHMuZmxhZ3N8fCJ3IjtvcHRzLmVuY29kaW5nPW9wdHMuZW5jb2Rpbmd8fCJ1dGY4IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgc3RyZWFtPUZTLm9wZW4ocGF0aCxvcHRzLmZsYWdzLG9wdHMubW9kZSk7aWYob3B0cy5lbmNvZGluZz09PSJ1dGY4Iil7dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjt2YXIgYnVmPW5ldyBVaW50OEFycmF5KHV0ZjgucHJvY2Vzc0pTU3RyaW5nKGRhdGEpKTtGUy53cml0ZShzdHJlYW0sYnVmLDAsYnVmLmxlbmd0aCwwLG9wdHMuY2FuT3duKX1lbHNlIGlmKG9wdHMuZW5jb2Rpbmc9PT0iYmluYXJ5Iil7RlMud3JpdGUoc3RyZWFtLGRhdGEsMCxkYXRhLmxlbmd0aCwwLG9wdHMuY2FuT3duKX1GUy5jbG9zZShzdHJlYW0pfSksY3dkOihmdW5jdGlvbigpe3JldHVybiBGUy5jdXJyZW50UGF0aH0pLGNoZGlyOihmdW5jdGlvbihwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OnRydWV9KTtpZighRlMuaXNEaXIobG9va3VwLm5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RESVIpfXZhciBlcnI9RlMubm9kZVBlcm1pc3Npb25zKGxvb2t1cC5ub2RlLCJ4Iik7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfUZTLmN1cnJlbnRQYXRoPWxvb2t1cC5wYXRofSksY3JlYXRlRGVmYXVsdERpcmVjdG9yaWVzOihmdW5jdGlvbigpe0ZTLm1rZGlyKCIvdG1wIil9KSxjcmVhdGVEZWZhdWx0RGV2aWNlczooZnVuY3Rpb24oKXtGUy5ta2RpcigiL2RldiIpO0ZTLnJlZ2lzdGVyRGV2aWNlKEZTLm1ha2VkZXYoMSwzKSx7cmVhZDooZnVuY3Rpb24oKXtyZXR1cm4gMH0pLHdyaXRlOihmdW5jdGlvbigpe3JldHVybiAwfSl9KTtGUy5ta2RldigiL2Rldi9udWxsIixGUy5tYWtlZGV2KDEsMykpO1RUWS5yZWdpc3RlcihGUy5tYWtlZGV2KDUsMCksVFRZLmRlZmF1bHRfdHR5X29wcyk7VFRZLnJlZ2lzdGVyKEZTLm1ha2VkZXYoNiwwKSxUVFkuZGVmYXVsdF90dHkxX29wcyk7RlMubWtkZXYoIi9kZXYvdHR5IixGUy5tYWtlZGV2KDUsMCkpO0ZTLm1rZGV2KCIvZGV2L3R0eTEiLEZTLm1ha2VkZXYoNiwwKSk7RlMubWtkaXIoIi9kZXYvc2htIik7RlMubWtkaXIoIi9kZXYvc2htL3RtcCIpfSksY3JlYXRlU3RhbmRhcmRTdHJlYW1zOihmdW5jdGlvbigpe2lmKE1vZHVsZVsic3RkaW4iXSl7RlMuY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkaW4iLE1vZHVsZVsic3RkaW4iXSl9ZWxzZXtGUy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3RkaW4iKX1pZihNb2R1bGVbInN0ZG91dCJdKXtGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRvdXQiLG51bGwsTW9kdWxlWyJzdGRvdXQiXSl9ZWxzZXtGUy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3Rkb3V0Iil9aWYoTW9kdWxlWyJzdGRlcnIiXSl7RlMuY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkZXJyIixudWxsLE1vZHVsZVsic3RkZXJyIl0pfWVsc2V7RlMuc3ltbGluaygiL2Rldi90dHkxIiwiL2Rldi9zdGRlcnIiKX12YXIgc3RkaW49RlMub3BlbigiL2Rldi9zdGRpbiIsInIiKTtIRUFQMzJbX3N0ZGluPj4yXT1GUy5nZXRQdHJGb3JTdHJlYW0oc3RkaW4pO2Fzc2VydChzdGRpbi5mZD09PTAsImludmFsaWQgaGFuZGxlIGZvciBzdGRpbiAoIitzdGRpbi5mZCsiKSIpO3ZhciBzdGRvdXQ9RlMub3BlbigiL2Rldi9zdGRvdXQiLCJ3Iik7SEVBUDMyW19zdGRvdXQ+PjJdPUZTLmdldFB0ckZvclN0cmVhbShzdGRvdXQpO2Fzc2VydChzdGRvdXQuZmQ9PT0xLCJpbnZhbGlkIGhhbmRsZSBmb3Igc3Rkb3V0ICgiK3N0ZG91dC5mZCsiKSIpO3ZhciBzdGRlcnI9RlMub3BlbigiL2Rldi9zdGRlcnIiLCJ3Iik7SEVBUDMyW19zdGRlcnI+PjJdPUZTLmdldFB0ckZvclN0cmVhbShzdGRlcnIpO2Fzc2VydChzdGRlcnIuZmQ9PT0yLCJpbnZhbGlkIGhhbmRsZSBmb3Igc3RkZXJyICgiK3N0ZGVyci5mZCsiKSIpfSksZW5zdXJlRXJybm9FcnJvcjooZnVuY3Rpb24oKXtpZihGUy5FcnJub0Vycm9yKXJldHVybjtGUy5FcnJub0Vycm9yPWZ1bmN0aW9uIEVycm5vRXJyb3IoZXJybm8pe3RoaXMuZXJybm89ZXJybm87Zm9yKHZhciBrZXkgaW4gRVJSTk9fQ09ERVMpe2lmKEVSUk5PX0NPREVTW2tleV09PT1lcnJubyl7dGhpcy5jb2RlPWtleTticmVha319dGhpcy5tZXNzYWdlPUVSUk5PX01FU1NBR0VTW2Vycm5vXX07RlMuRXJybm9FcnJvci5wcm90b3R5cGU9bmV3IEVycm9yO0ZTLkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPUZTLkVycm5vRXJyb3I7W0VSUk5PX0NPREVTLkVOT0VOVF0uZm9yRWFjaCgoZnVuY3Rpb24oY29kZSl7RlMuZ2VuZXJpY0Vycm9yc1tjb2RlXT1uZXcgRlMuRXJybm9FcnJvcihjb2RlKTtGUy5nZW5lcmljRXJyb3JzW2NvZGVdLnN0YWNrPSI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+In0pKX0pLHN0YXRpY0luaXQ6KGZ1bmN0aW9uKCl7RlMuZW5zdXJlRXJybm9FcnJvcigpO0ZTLm5hbWVUYWJsZT1uZXcgQXJyYXkoNDA5Nik7RlMubW91bnQoTUVNRlMse30sIi8iKTtGUy5jcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXMoKTtGUy5jcmVhdGVEZWZhdWx0RGV2aWNlcygpfSksaW5pdDooZnVuY3Rpb24oaW5wdXQsb3V0cHV0LGVycm9yKXthc3NlcnQoIUZTLmluaXQuaW5pdGlhbGl6ZWQsIkZTLmluaXQgd2FzIHByZXZpb3VzbHkgY2FsbGVkLiBJZiB5b3Ugd2FudCB0byBpbml0aWFsaXplIGxhdGVyIHdpdGggY3VzdG9tIHBhcmFtZXRlcnMsIHJlbW92ZSBhbnkgZWFybGllciBjYWxscyAobm90ZSB0aGF0IG9uZSBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgY29kZSkiKTtGUy5pbml0LmluaXRpYWxpemVkPXRydWU7RlMuZW5zdXJlRXJybm9FcnJvcigpO01vZHVsZVsic3RkaW4iXT1pbnB1dHx8TW9kdWxlWyJzdGRpbiJdO01vZHVsZVsic3Rkb3V0Il09b3V0cHV0fHxNb2R1bGVbInN0ZG91dCJdO01vZHVsZVsic3RkZXJyIl09ZXJyb3J8fE1vZHVsZVsic3RkZXJyIl07RlMuY3JlYXRlU3RhbmRhcmRTdHJlYW1zKCl9KSxxdWl0OihmdW5jdGlvbigpe0ZTLmluaXQuaW5pdGlhbGl6ZWQ9ZmFsc2U7Zm9yKHZhciBpPTA7aTxGUy5zdHJlYW1zLmxlbmd0aDtpKyspe3ZhciBzdHJlYW09RlMuc3RyZWFtc1tpXTtpZighc3RyZWFtKXtjb250aW51ZX1GUy5jbG9zZShzdHJlYW0pfX0pLGdldE1vZGU6KGZ1bmN0aW9uKGNhblJlYWQsY2FuV3JpdGUpe3ZhciBtb2RlPTA7aWYoY2FuUmVhZCltb2RlfD0yOTJ8NzM7aWYoY2FuV3JpdGUpbW9kZXw9MTQ2O3JldHVybiBtb2RlfSksam9pblBhdGg6KGZ1bmN0aW9uKHBhcnRzLGZvcmNlUmVsYXRpdmUpe3ZhciBwYXRoPVBBVEguam9pbi5hcHBseShudWxsLHBhcnRzKTtpZihmb3JjZVJlbGF0aXZlJiZwYXRoWzBdPT0iLyIpcGF0aD1wYXRoLnN1YnN0cigxKTtyZXR1cm4gcGF0aH0pLGFic29sdXRlUGF0aDooZnVuY3Rpb24ocmVsYXRpdmUsYmFzZSl7cmV0dXJuIFBBVEgucmVzb2x2ZShiYXNlLHJlbGF0aXZlKX0pLHN0YW5kYXJkaXplUGF0aDooZnVuY3Rpb24ocGF0aCl7cmV0dXJuIFBBVEgubm9ybWFsaXplKHBhdGgpfSksZmluZE9iamVjdDooZnVuY3Rpb24ocGF0aCxkb250UmVzb2x2ZUxhc3RMaW5rKXt2YXIgcmV0PUZTLmFuYWx5emVQYXRoKHBhdGgsZG9udFJlc29sdmVMYXN0TGluayk7aWYocmV0LmV4aXN0cyl7cmV0dXJuIHJldC5vYmplY3R9ZWxzZXtfX19zZXRFcnJObyhyZXQuZXJyb3IpO3JldHVybiBudWxsfX0pLGFuYWx5emVQYXRoOihmdW5jdGlvbihwYXRoLGRvbnRSZXNvbHZlTGFzdExpbmspe3RyeXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250UmVzb2x2ZUxhc3RMaW5rfSk7cGF0aD1sb29rdXAucGF0aH1jYXRjaChlKXt9dmFyIHJldD17aXNSb290OmZhbHNlLGV4aXN0czpmYWxzZSxlcnJvcjowLG5hbWU6bnVsbCxwYXRoOm51bGwsb2JqZWN0Om51bGwscGFyZW50RXhpc3RzOmZhbHNlLHBhcmVudFBhdGg6bnVsbCxwYXJlbnRPYmplY3Q6bnVsbH07dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3JldC5wYXJlbnRFeGlzdHM9dHJ1ZTtyZXQucGFyZW50UGF0aD1sb29rdXAucGF0aDtyZXQucGFyZW50T2JqZWN0PWxvb2t1cC5ub2RlO3JldC5uYW1lPVBBVEguYmFzZW5hbWUocGF0aCk7bG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250UmVzb2x2ZUxhc3RMaW5rfSk7cmV0LmV4aXN0cz10cnVlO3JldC5wYXRoPWxvb2t1cC5wYXRoO3JldC5vYmplY3Q9bG9va3VwLm5vZGU7cmV0Lm5hbWU9bG9va3VwLm5vZGUubmFtZTtyZXQuaXNSb290PWxvb2t1cC5wYXRoPT09Ii8ifWNhdGNoKGUpe3JldC5lcnJvcj1lLmVycm5vfXJldHVybiByZXR9KSxjcmVhdGVGb2xkZXI6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLGNhblJlYWQsY2FuV3JpdGUpe3ZhciBwYXRoPVBBVEguam9pbjIodHlwZW9mIHBhcmVudD09PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCksbmFtZSk7dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTtyZXR1cm4gRlMubWtkaXIocGF0aCxtb2RlKX0pLGNyZWF0ZVBhdGg6KGZ1bmN0aW9uKHBhcmVudCxwYXRoLGNhblJlYWQsY2FuV3JpdGUpe3BhcmVudD10eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KTt2YXIgcGFydHM9cGF0aC5zcGxpdCgiLyIpLnJldmVyc2UoKTt3aGlsZShwYXJ0cy5sZW5ndGgpe3ZhciBwYXJ0PXBhcnRzLnBvcCgpO2lmKCFwYXJ0KWNvbnRpbnVlO3ZhciBjdXJyZW50PVBBVEguam9pbjIocGFyZW50LHBhcnQpO3RyeXtGUy5ta2RpcihjdXJyZW50KX1jYXRjaChlKXt9cGFyZW50PWN1cnJlbnR9cmV0dXJuIGN1cnJlbnR9KSxjcmVhdGVGaWxlOihmdW5jdGlvbihwYXJlbnQsbmFtZSxwcm9wZXJ0aWVzLGNhblJlYWQsY2FuV3JpdGUpe3ZhciBwYXRoPVBBVEguam9pbjIodHlwZW9mIHBhcmVudD09PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCksbmFtZSk7dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTtyZXR1cm4gRlMuY3JlYXRlKHBhdGgsbW9kZSl9KSxjcmVhdGVEYXRhRmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsZGF0YSxjYW5SZWFkLGNhbldyaXRlLGNhbk93bil7dmFyIHBhdGg9bmFtZT9QQVRILmpvaW4yKHR5cGVvZiBwYXJlbnQ9PT0ic3RyaW5nIj9wYXJlbnQ6RlMuZ2V0UGF0aChwYXJlbnQpLG5hbWUpOnBhcmVudDt2YXIgbW9kZT1GUy5nZXRNb2RlKGNhblJlYWQsY2FuV3JpdGUpO3ZhciBub2RlPUZTLmNyZWF0ZShwYXRoLG1vZGUpO2lmKGRhdGEpe2lmKHR5cGVvZiBkYXRhPT09InN0cmluZyIpe3ZhciBhcnI9bmV3IEFycmF5KGRhdGEubGVuZ3RoKTtmb3IodmFyIGk9MCxsZW49ZGF0YS5sZW5ndGg7aTxsZW47KytpKWFycltpXT1kYXRhLmNoYXJDb2RlQXQoaSk7ZGF0YT1hcnJ9RlMuY2htb2Qobm9kZSxtb2RlfDE0Nik7dmFyIHN0cmVhbT1GUy5vcGVuKG5vZGUsInciKTtGUy53cml0ZShzdHJlYW0sZGF0YSwwLGRhdGEubGVuZ3RoLDAsY2FuT3duKTtGUy5jbG9zZShzdHJlYW0pO0ZTLmNobW9kKG5vZGUsbW9kZSl9cmV0dXJuIG5vZGV9KSxjcmVhdGVEZXZpY2U6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLGlucHV0LG91dHB1dCl7dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KSxuYW1lKTt2YXIgbW9kZT1GUy5nZXRNb2RlKCEhaW5wdXQsISFvdXRwdXQpO2lmKCFGUy5jcmVhdGVEZXZpY2UubWFqb3IpRlMuY3JlYXRlRGV2aWNlLm1ham9yPTY0O3ZhciBkZXY9RlMubWFrZWRldihGUy5jcmVhdGVEZXZpY2UubWFqb3IrKywwKTtGUy5yZWdpc3RlckRldmljZShkZXYse29wZW46KGZ1bmN0aW9uKHN0cmVhbSl7c3RyZWFtLnNlZWthYmxlPWZhbHNlfSksY2xvc2U6KGZ1bmN0aW9uKHN0cmVhbSl7aWYob3V0cHV0JiZvdXRwdXQuYnVmZmVyJiZvdXRwdXQuYnVmZmVyLmxlbmd0aCl7b3V0cHV0KDEwKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zKXt2YXIgYnl0ZXNSZWFkPTA7Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSsrKXt2YXIgcmVzdWx0O3RyeXtyZXN1bHQ9aW5wdXQoKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfWlmKHJlc3VsdD09PXVuZGVmaW5lZCYmYnl0ZXNSZWFkPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX1pZihyZXN1bHQ9PT1udWxsfHxyZXN1bHQ9PT11bmRlZmluZWQpYnJlYWs7Ynl0ZXNSZWFkKys7YnVmZmVyW29mZnNldCtpXT1yZXN1bHR9aWYoYnl0ZXNSZWFkKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKX1yZXR1cm4gYnl0ZXNSZWFkfSksd3JpdGU6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3Mpe2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dHJ5e291dHB1dChidWZmZXJbb2Zmc2V0K2ldKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfX1pZihsZW5ndGgpe3N0cmVhbS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpfXJldHVybiBpfSl9KTtyZXR1cm4gRlMubWtkZXYocGF0aCxtb2RlLGRldil9KSxjcmVhdGVMaW5rOihmdW5jdGlvbihwYXJlbnQsbmFtZSx0YXJnZXQsY2FuUmVhZCxjYW5Xcml0ZSl7dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KSxuYW1lKTtyZXR1cm4gRlMuc3ltbGluayh0YXJnZXQscGF0aCl9KSxmb3JjZUxvYWRGaWxlOihmdW5jdGlvbihvYmope2lmKG9iai5pc0RldmljZXx8b2JqLmlzRm9sZGVyfHxvYmoubGlua3x8b2JqLmNvbnRlbnRzKXJldHVybiB0cnVlO3ZhciBzdWNjZXNzPXRydWU7aWYodHlwZW9mIFhNTEh0dHBSZXF1ZXN0IT09InVuZGVmaW5lZCIpe3Rocm93IG5ldyBFcnJvcigiTGF6eSBsb2FkaW5nIHNob3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIChjb250ZW50cyBzZXQpIGluIGNyZWF0ZUxhenlGaWxlLCBidXQgaXQgd2FzIG5vdC4gTGF6eSBsb2FkaW5nIG9ubHkgd29ya3MgaW4gd2ViIHdvcmtlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyBvbiB0aGUgbWFpbiB0aHJlYWQuIil9ZWxzZSBpZihNb2R1bGVbInJlYWQiXSl7dHJ5e29iai5jb250ZW50cz1pbnRBcnJheUZyb21TdHJpbmcoTW9kdWxlWyJyZWFkIl0ob2JqLnVybCksdHJ1ZSl9Y2F0Y2goZSl7c3VjY2Vzcz1mYWxzZX19ZWxzZXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIHdpdGhvdXQgcmVhZCgpIG9yIFhNTEh0dHBSZXF1ZXN0LiIpfWlmKCFzdWNjZXNzKV9fX3NldEVyck5vKEVSUk5PX0NPREVTLkVJTyk7cmV0dXJuIHN1Y2Nlc3N9KSxjcmVhdGVMYXp5RmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUpe2Z1bmN0aW9uIExhenlVaW50OEFycmF5KCl7dGhpcy5sZW5ndGhLbm93bj1mYWxzZTt0aGlzLmNodW5rcz1bXX1MYXp5VWludDhBcnJheS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIExhenlVaW50OEFycmF5X2dldChpZHgpe2lmKGlkeD50aGlzLmxlbmd0aC0xfHxpZHg8MCl7cmV0dXJuIHVuZGVmaW5lZH12YXIgY2h1bmtPZmZzZXQ9aWR4JXRoaXMuY2h1bmtTaXplO3ZhciBjaHVua051bT1NYXRoLmZsb29yKGlkeC90aGlzLmNodW5rU2l6ZSk7cmV0dXJuIHRoaXMuZ2V0dGVyKGNodW5rTnVtKVtjaHVua09mZnNldF19O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5zZXREYXRhR2V0dGVyPWZ1bmN0aW9uIExhenlVaW50OEFycmF5X3NldERhdGFHZXR0ZXIoZ2V0dGVyKXt0aGlzLmdldHRlcj1nZXR0ZXJ9O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5jYWNoZUxlbmd0aD1mdW5jdGlvbiBMYXp5VWludDhBcnJheV9jYWNoZUxlbmd0aCgpe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJIRUFEIix1cmwsZmFsc2UpO3hoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTt2YXIgZGF0YWxlbmd0aD1OdW1iZXIoeGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKTt2YXIgaGVhZGVyO3ZhciBoYXNCeXRlU2VydmluZz0oaGVhZGVyPXhoci5nZXRSZXNwb25zZUhlYWRlcigiQWNjZXB0LVJhbmdlcyIpKSYmaGVhZGVyPT09ImJ5dGVzIjt2YXIgY2h1bmtTaXplPTEwMjQqMTAyNDtpZighaGFzQnl0ZVNlcnZpbmcpY2h1bmtTaXplPWRhdGFsZW5ndGg7dmFyIGRvWEhSPShmdW5jdGlvbihmcm9tLHRvKXtpZihmcm9tPnRvKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCByYW5nZSAoIitmcm9tKyIsICIrdG8rIikgb3Igbm8gYnl0ZXMgcmVxdWVzdGVkISIpO2lmKHRvPmRhdGFsZW5ndGgtMSl0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIitkYXRhbGVuZ3RoKyIgYnl0ZXMgYXZhaWxhYmxlISBwcm9ncmFtbWVyIGVycm9yISIpO3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7aWYoZGF0YWxlbmd0aCE9PWNodW5rU2l6ZSl4aHIuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCJieXRlcz0iK2Zyb20rIi0iK3RvKTtpZih0eXBlb2YgVWludDhBcnJheSE9InVuZGVmaW5lZCIpeGhyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO2lmKHhoci5vdmVycmlkZU1pbWVUeXBlKXt4aHIub3ZlcnJpZGVNaW1lVHlwZSgidGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCIpfXhoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTtpZih4aHIucmVzcG9uc2UhPT11bmRlZmluZWQpe3JldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2V8fFtdKX1lbHNle3JldHVybiBpbnRBcnJheUZyb21TdHJpbmcoeGhyLnJlc3BvbnNlVGV4dHx8IiIsdHJ1ZSl9fSk7dmFyIGxhenlBcnJheT10aGlzO2xhenlBcnJheS5zZXREYXRhR2V0dGVyKChmdW5jdGlvbihjaHVua051bSl7dmFyIHN0YXJ0PWNodW5rTnVtKmNodW5rU2l6ZTt2YXIgZW5kPShjaHVua051bSsxKSpjaHVua1NpemUtMTtlbmQ9TWF0aC5taW4oZW5kLGRhdGFsZW5ndGgtMSk7aWYodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPT09InVuZGVmaW5lZCIpe2xhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPWRvWEhSKHN0YXJ0LGVuZCl9aWYodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPT09InVuZGVmaW5lZCIpdGhyb3cgbmV3IEVycm9yKCJkb1hIUiBmYWlsZWQhIik7cmV0dXJuIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dfSkpO3RoaXMuX2xlbmd0aD1kYXRhbGVuZ3RoO3RoaXMuX2NodW5rU2l6ZT1jaHVua1NpemU7dGhpcy5sZW5ndGhLbm93bj10cnVlfTtpZih0eXBlb2YgWE1MSHR0cFJlcXVlc3QhPT0idW5kZWZpbmVkIil7aWYoIUVOVklST05NRU5UX0lTX1dPUktFUil0aHJvdyJDYW5ub3QgZG8gc3luY2hyb25vdXMgYmluYXJ5IFhIUnMgb3V0c2lkZSB3ZWJ3b3JrZXJzIGluIG1vZGVybiBicm93c2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjIjt2YXIgbGF6eUFycmF5PW5ldyBMYXp5VWludDhBcnJheTtPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCJsZW5ndGgiLHtnZXQ6KGZ1bmN0aW9uKCl7aWYoIXRoaXMubGVuZ3RoS25vd24pe3RoaXMuY2FjaGVMZW5ndGgoKX1yZXR1cm4gdGhpcy5fbGVuZ3RofSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCJjaHVua1NpemUiLHtnZXQ6KGZ1bmN0aW9uKCl7aWYoIXRoaXMubGVuZ3RoS25vd24pe3RoaXMuY2FjaGVMZW5ndGgoKX1yZXR1cm4gdGhpcy5fY2h1bmtTaXplfSl9KTt2YXIgcHJvcGVydGllcz17aXNEZXZpY2U6ZmFsc2UsY29udGVudHM6bGF6eUFycmF5fX1lbHNle3ZhciBwcm9wZXJ0aWVzPXtpc0RldmljZTpmYWxzZSx1cmw6dXJsfX12YXIgbm9kZT1GUy5jcmVhdGVGaWxlKHBhcmVudCxuYW1lLHByb3BlcnRpZXMsY2FuUmVhZCxjYW5Xcml0ZSk7aWYocHJvcGVydGllcy5jb250ZW50cyl7bm9kZS5jb250ZW50cz1wcm9wZXJ0aWVzLmNvbnRlbnRzfWVsc2UgaWYocHJvcGVydGllcy51cmwpe25vZGUuY29udGVudHM9bnVsbDtub2RlLnVybD1wcm9wZXJ0aWVzLnVybH12YXIgc3RyZWFtX29wcz17fTt2YXIga2V5cz1PYmplY3Qua2V5cyhub2RlLnN0cmVhbV9vcHMpO2tleXMuZm9yRWFjaCgoZnVuY3Rpb24oa2V5KXt2YXIgZm49bm9kZS5zdHJlYW1fb3BzW2tleV07c3RyZWFtX29wc1trZXldPWZ1bmN0aW9uIGZvcmNlTG9hZExhenlGaWxlKCl7aWYoIUZTLmZvcmNlTG9hZEZpbGUobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyl9cmV0dXJuIGZuLmFwcGx5KG51bGwsYXJndW1lbnRzKX19KSk7c3RyZWFtX29wcy5yZWFkPWZ1bmN0aW9uIHN0cmVhbV9vcHNfcmVhZChzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe2lmKCFGUy5mb3JjZUxvYWRGaWxlKG5vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfXZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50cztpZihwb3NpdGlvbj49Y29udGVudHMubGVuZ3RoKXJldHVybiAwO3ZhciBzaXplPU1hdGgubWluKGNvbnRlbnRzLmxlbmd0aC1wb3NpdGlvbixsZW5ndGgpO2Fzc2VydChzaXplPj0wKTtpZihjb250ZW50cy5zbGljZSl7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXX19ZWxzZXtmb3IodmFyIGk9MDtpPHNpemU7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPWNvbnRlbnRzLmdldChwb3NpdGlvbitpKX19cmV0dXJuIHNpemV9O25vZGUuc3RyZWFtX29wcz1zdHJlYW1fb3BzO3JldHVybiBub2RlfSksY3JlYXRlUHJlbG9hZGVkRmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUsb25sb2FkLG9uZXJyb3IsZG9udENyZWF0ZUZpbGUsY2FuT3duKXtCcm93c2VyLmluaXQoKTt2YXIgZnVsbG5hbWU9bmFtZT9QQVRILnJlc29sdmUoUEFUSC5qb2luMihwYXJlbnQsbmFtZSkpOnBhcmVudDtmdW5jdGlvbiBwcm9jZXNzRGF0YShieXRlQXJyYXkpe2Z1bmN0aW9uIGZpbmlzaChieXRlQXJyYXkpe2lmKCFkb250Q3JlYXRlRmlsZSl7RlMuY3JlYXRlRGF0YUZpbGUocGFyZW50LG5hbWUsYnl0ZUFycmF5LGNhblJlYWQsY2FuV3JpdGUsY2FuT3duKX1pZihvbmxvYWQpb25sb2FkKCk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgiY3AgIitmdWxsbmFtZSl9dmFyIGhhbmRsZWQ9ZmFsc2U7TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLmZvckVhY2goKGZ1bmN0aW9uKHBsdWdpbil7aWYoaGFuZGxlZClyZXR1cm47aWYocGx1Z2luWyJjYW5IYW5kbGUiXShmdWxsbmFtZSkpe3BsdWdpblsiaGFuZGxlIl0oYnl0ZUFycmF5LGZ1bGxuYW1lLGZpbmlzaCwoZnVuY3Rpb24oKXtpZihvbmVycm9yKW9uZXJyb3IoKTtyZW1vdmVSdW5EZXBlbmRlbmN5KCJjcCAiK2Z1bGxuYW1lKX0pKTtoYW5kbGVkPXRydWV9fSkpO2lmKCFoYW5kbGVkKWZpbmlzaChieXRlQXJyYXkpfWFkZFJ1bkRlcGVuZGVuY3koImNwICIrZnVsbG5hbWUpO2lmKHR5cGVvZiB1cmw9PSJzdHJpbmciKXtCcm93c2VyLmFzeW5jTG9hZCh1cmwsKGZ1bmN0aW9uKGJ5dGVBcnJheSl7cHJvY2Vzc0RhdGEoYnl0ZUFycmF5KX0pLG9uZXJyb3IpfWVsc2V7cHJvY2Vzc0RhdGEodXJsKX19KSxpbmRleGVkREI6KGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5pbmRleGVkREJ8fHdpbmRvdy5tb3pJbmRleGVkREJ8fHdpbmRvdy53ZWJraXRJbmRleGVkREJ8fHdpbmRvdy5tc0luZGV4ZWREQn0pLERCX05BTUU6KGZ1bmN0aW9uKCl7cmV0dXJuIkVNX0ZTXyIrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSksREJfVkVSU0lPTjoyMCxEQl9TVE9SRV9OQU1FOiJGSUxFX0RBVEEiLHNhdmVGaWxlc1RvREI6KGZ1bmN0aW9uKHBhdGhzLG9ubG9hZCxvbmVycm9yKXtvbmxvYWQ9b25sb2FkfHwoZnVuY3Rpb24oKXt9KTtvbmVycm9yPW9uZXJyb3J8fChmdW5jdGlvbigpe30pO3ZhciBpbmRleGVkREI9RlMuaW5kZXhlZERCKCk7dHJ5e3ZhciBvcGVuUmVxdWVzdD1pbmRleGVkREIub3BlbihGUy5EQl9OQU1FKCksRlMuREJfVkVSU0lPTil9Y2F0Y2goZSl7cmV0dXJuIG9uZXJyb3IoZSl9b3BlblJlcXVlc3Qub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uIG9wZW5SZXF1ZXN0X29udXBncmFkZW5lZWRlZCgpe2NvbnNvbGUubG9nKCJjcmVhdGluZyBkYiIpO3ZhciBkYj1vcGVuUmVxdWVzdC5yZXN1bHQ7ZGIuY3JlYXRlT2JqZWN0U3RvcmUoRlMuREJfU1RPUkVfTkFNRSl9O29wZW5SZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3MoKXt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3ZhciB0cmFuc2FjdGlvbj1kYi50cmFuc2FjdGlvbihbRlMuREJfU1RPUkVfTkFNRV0sInJlYWR3cml0ZSIpO3ZhciBmaWxlcz10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTt2YXIgb2s9MCxmYWlsPTAsdG90YWw9cGF0aHMubGVuZ3RoO2Z1bmN0aW9uIGZpbmlzaCgpe2lmKGZhaWw9PTApb25sb2FkKCk7ZWxzZSBvbmVycm9yKCl9cGF0aHMuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCl7dmFyIHB1dFJlcXVlc3Q9ZmlsZXMucHV0KEZTLmFuYWx5emVQYXRoKHBhdGgpLm9iamVjdC5jb250ZW50cyxwYXRoKTtwdXRSZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBwdXRSZXF1ZXN0X29uc3VjY2Vzcygpe29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9O3B1dFJlcXVlc3Qub25lcnJvcj1mdW5jdGlvbiBwdXRSZXF1ZXN0X29uZXJyb3IoKXtmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9fSkpO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcn07b3BlblJlcXVlc3Qub25lcnJvcj1vbmVycm9yfSksbG9hZEZpbGVzRnJvbURCOihmdW5jdGlvbihwYXRocyxvbmxvYWQsb25lcnJvcil7b25sb2FkPW9ubG9hZHx8KGZ1bmN0aW9uKCl7fSk7b25lcnJvcj1vbmVycm9yfHwoZnVuY3Rpb24oKXt9KTt2YXIgaW5kZXhlZERCPUZTLmluZGV4ZWREQigpO3RyeXt2YXIgb3BlblJlcXVlc3Q9aW5kZXhlZERCLm9wZW4oRlMuREJfTkFNRSgpLEZTLkRCX1ZFUlNJT04pfWNhdGNoKGUpe3JldHVybiBvbmVycm9yKGUpfW9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZD1vbmVycm9yO29wZW5SZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3MoKXt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3RyeXt2YXIgdHJhbnNhY3Rpb249ZGIudHJhbnNhY3Rpb24oW0ZTLkRCX1NUT1JFX05BTUVdLCJyZWFkb25seSIpfWNhdGNoKGUpe29uZXJyb3IoZSk7cmV0dXJufXZhciBmaWxlcz10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTt2YXIgb2s9MCxmYWlsPTAsdG90YWw9cGF0aHMubGVuZ3RoO2Z1bmN0aW9uIGZpbmlzaCgpe2lmKGZhaWw9PTApb25sb2FkKCk7ZWxzZSBvbmVycm9yKCl9cGF0aHMuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCl7dmFyIGdldFJlcXVlc3Q9ZmlsZXMuZ2V0KHBhdGgpO2dldFJlcXVlc3Qub25zdWNjZXNzPWZ1bmN0aW9uIGdldFJlcXVlc3Rfb25zdWNjZXNzKCl7aWYoRlMuYW5hbHl6ZVBhdGgocGF0aCkuZXhpc3RzKXtGUy51bmxpbmsocGF0aCl9RlMuY3JlYXRlRGF0YUZpbGUoUEFUSC5kaXJuYW1lKHBhdGgpLFBBVEguYmFzZW5hbWUocGF0aCksZ2V0UmVxdWVzdC5yZXN1bHQsdHJ1ZSx0cnVlLHRydWUpO29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9O2dldFJlcXVlc3Qub25lcnJvcj1mdW5jdGlvbiBnZXRSZXF1ZXN0X29uZXJyb3IoKXtmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9fSkpO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcn07b3BlblJlcXVlc3Qub25lcnJvcj1vbmVycm9yfSl9O2Z1bmN0aW9uIF9mZmx1c2goc3RyZWFtKXt9TW9kdWxlWyJfc3RybGVuIl09X3N0cmxlbjtmdW5jdGlvbiBfX3JlYWxseU5lZ2F0aXZlKHgpe3JldHVybiB4PDB8fHg9PT0wJiYxL3g9PT0tSW5maW5pdHl9ZnVuY3Rpb24gX19mb3JtYXRTdHJpbmcoZm9ybWF0LHZhcmFyZ3Mpe3ZhciB0ZXh0SW5kZXg9Zm9ybWF0O3ZhciBhcmdJbmRleD0wO2Z1bmN0aW9uIGdldE5leHRBcmcodHlwZSl7dmFyIHJldDtpZih0eXBlPT09ImRvdWJsZSIpe3JldD0oSEVBUDMyW3RlbXBEb3VibGVQdHI+PjJdPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXSxIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1IRUFQMzJbdmFyYXJncysoYXJnSW5kZXgrNCk+PjJdLCtIRUFQRjY0W3RlbXBEb3VibGVQdHI+PjNdKX1lbHNlIGlmKHR5cGU9PSJpNjQiKXtyZXQ9W0hFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXSxIRUFQMzJbdmFyYXJncysoYXJnSW5kZXgrNCk+PjJdXX1lbHNle3R5cGU9ImkzMiI7cmV0PUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXX1hcmdJbmRleCs9UnVudGltZS5nZXROYXRpdmVGaWVsZFNpemUodHlwZSk7cmV0dXJuIHJldH12YXIgcmV0PVtdO3ZhciBjdXJyLG5leHQsY3VyckFyZzt3aGlsZSgxKXt2YXIgc3RhcnRUZXh0SW5kZXg9dGV4dEluZGV4O2N1cnI9SEVBUDhbdGV4dEluZGV4Pj4wXTtpZihjdXJyPT09MClicmVhaztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtpZihjdXJyPT0zNyl7dmFyIGZsYWdBbHdheXNTaWduZWQ9ZmFsc2U7dmFyIGZsYWdMZWZ0QWxpZ249ZmFsc2U7dmFyIGZsYWdBbHRlcm5hdGl2ZT1mYWxzZTt2YXIgZmxhZ1plcm9QYWQ9ZmFsc2U7dmFyIGZsYWdQYWRTaWduPWZhbHNlO2ZsYWdzTG9vcDp3aGlsZSgxKXtzd2l0Y2gobmV4dCl7Y2FzZSA0MzpmbGFnQWx3YXlzU2lnbmVkPXRydWU7YnJlYWs7Y2FzZSA0NTpmbGFnTGVmdEFsaWduPXRydWU7YnJlYWs7Y2FzZSAzNTpmbGFnQWx0ZXJuYXRpdmU9dHJ1ZTticmVhaztjYXNlIDQ4OmlmKGZsYWdaZXJvUGFkKXticmVhayBmbGFnc0xvb3B9ZWxzZXtmbGFnWmVyb1BhZD10cnVlO2JyZWFrfTtjYXNlIDMyOmZsYWdQYWRTaWduPXRydWU7YnJlYWs7ZGVmYXVsdDpicmVhayBmbGFnc0xvb3B9dGV4dEluZGV4Kys7bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19dmFyIHdpZHRoPTA7aWYobmV4dD09NDIpe3dpZHRoPWdldE5leHRBcmcoImkzMiIpO3RleHRJbmRleCsrO25leHQ9SEVBUDhbdGV4dEluZGV4KzE+PjBdfWVsc2V7d2hpbGUobmV4dD49NDgmJm5leHQ8PTU3KXt3aWR0aD13aWR0aCoxMCsobmV4dC00OCk7dGV4dEluZGV4Kys7bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19fXZhciBwcmVjaXNpb25TZXQ9ZmFsc2UscHJlY2lzaW9uPS0xO2lmKG5leHQ9PTQ2KXtwcmVjaXNpb249MDtwcmVjaXNpb25TZXQ9dHJ1ZTt0ZXh0SW5kZXgrKztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtpZihuZXh0PT00Mil7cHJlY2lzaW9uPWdldE5leHRBcmcoImkzMiIpO3RleHRJbmRleCsrfWVsc2V7d2hpbGUoMSl7dmFyIHByZWNpc2lvbkNocj1IRUFQOFt0ZXh0SW5kZXgrMT4+MF07aWYocHJlY2lzaW9uQ2hyPDQ4fHxwcmVjaXNpb25DaHI+NTcpYnJlYWs7cHJlY2lzaW9uPXByZWNpc2lvbioxMCsocHJlY2lzaW9uQ2hyLTQ4KTt0ZXh0SW5kZXgrK319bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19aWYocHJlY2lzaW9uPDApe3ByZWNpc2lvbj02O3ByZWNpc2lvblNldD1mYWxzZX12YXIgYXJnU2l6ZTtzd2l0Y2goU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0KSl7Y2FzZSJoIjp2YXIgbmV4dE5leHQ9SEVBUDhbdGV4dEluZGV4KzI+PjBdO2lmKG5leHROZXh0PT0xMDQpe3RleHRJbmRleCsrO2FyZ1NpemU9MX1lbHNle2FyZ1NpemU9Mn1icmVhaztjYXNlImwiOnZhciBuZXh0TmV4dD1IRUFQOFt0ZXh0SW5kZXgrMj4+MF07aWYobmV4dE5leHQ9PTEwOCl7dGV4dEluZGV4Kys7YXJnU2l6ZT04fWVsc2V7YXJnU2l6ZT00fWJyZWFrO2Nhc2UiTCI6Y2FzZSJxIjpjYXNlImoiOmFyZ1NpemU9ODticmVhaztjYXNlInoiOmNhc2UidCI6Y2FzZSJJIjphcmdTaXplPTQ7YnJlYWs7ZGVmYXVsdDphcmdTaXplPW51bGx9aWYoYXJnU2l6ZSl0ZXh0SW5kZXgrKztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtzd2l0Y2goU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0KSl7Y2FzZSJkIjpjYXNlImkiOmNhc2UidSI6Y2FzZSJvIjpjYXNlIngiOmNhc2UiWCI6Y2FzZSJwIjp7dmFyIHNpZ25lZD1uZXh0PT0xMDB8fG5leHQ9PTEwNTthcmdTaXplPWFyZ1NpemV8fDQ7dmFyIGN1cnJBcmc9Z2V0TmV4dEFyZygiaSIrYXJnU2l6ZSo4KTt2YXIgb3JpZ0FyZz1jdXJyQXJnO3ZhciBhcmdUZXh0O2lmKGFyZ1NpemU9PTgpe2N1cnJBcmc9UnVudGltZS5tYWtlQmlnSW50KGN1cnJBcmdbMF0sY3VyckFyZ1sxXSxuZXh0PT0xMTcpfWlmKGFyZ1NpemU8PTQpe3ZhciBsaW1pdD1NYXRoLnBvdygyNTYsYXJnU2l6ZSktMTtjdXJyQXJnPShzaWduZWQ/cmVTaWduOnVuU2lnbikoY3VyckFyZyZsaW1pdCxhcmdTaXplKjgpfXZhciBjdXJyQWJzQXJnPU1hdGguYWJzKGN1cnJBcmcpO3ZhciBwcmVmaXg9IiI7aWYobmV4dD09MTAwfHxuZXh0PT0xMDUpe2lmKGFyZ1NpemU9PTgmJmk2NE1hdGgpYXJnVGV4dD1pNjRNYXRoLnN0cmluZ2lmeShvcmlnQXJnWzBdLG9yaWdBcmdbMV0sbnVsbCk7ZWxzZSBhcmdUZXh0PXJlU2lnbihjdXJyQXJnLDgqYXJnU2l6ZSwxKS50b1N0cmluZygxMCl9ZWxzZSBpZihuZXh0PT0xMTcpe2lmKGFyZ1NpemU9PTgmJmk2NE1hdGgpYXJnVGV4dD1pNjRNYXRoLnN0cmluZ2lmeShvcmlnQXJnWzBdLG9yaWdBcmdbMV0sdHJ1ZSk7ZWxzZSBhcmdUZXh0PXVuU2lnbihjdXJyQXJnLDgqYXJnU2l6ZSwxKS50b1N0cmluZygxMCk7Y3VyckFyZz1NYXRoLmFicyhjdXJyQXJnKX1lbHNlIGlmKG5leHQ9PTExMSl7YXJnVGV4dD0oZmxhZ0FsdGVybmF0aXZlPyIwIjoiIikrY3VyckFic0FyZy50b1N0cmluZyg4KX1lbHNlIGlmKG5leHQ9PTEyMHx8bmV4dD09ODgpe3ByZWZpeD1mbGFnQWx0ZXJuYXRpdmUmJmN1cnJBcmchPTA/IjB4IjoiIjtpZihhcmdTaXplPT04JiZpNjRNYXRoKXtpZihvcmlnQXJnWzFdKXthcmdUZXh0PShvcmlnQXJnWzFdPj4+MCkudG9TdHJpbmcoMTYpO3ZhciBsb3dlcj0ob3JpZ0FyZ1swXT4+PjApLnRvU3RyaW5nKDE2KTt3aGlsZShsb3dlci5sZW5ndGg8OClsb3dlcj0iMCIrbG93ZXI7YXJnVGV4dCs9bG93ZXJ9ZWxzZXthcmdUZXh0PShvcmlnQXJnWzBdPj4+MCkudG9TdHJpbmcoMTYpfX1lbHNlIGlmKGN1cnJBcmc8MCl7Y3VyckFyZz0tY3VyckFyZzthcmdUZXh0PShjdXJyQWJzQXJnLTEpLnRvU3RyaW5nKDE2KTt2YXIgYnVmZmVyPVtdO2Zvcih2YXIgaT0wO2k8YXJnVGV4dC5sZW5ndGg7aSsrKXtidWZmZXIucHVzaCgoMTUtcGFyc2VJbnQoYXJnVGV4dFtpXSwxNikpLnRvU3RyaW5nKDE2KSl9YXJnVGV4dD1idWZmZXIuam9pbigiIik7d2hpbGUoYXJnVGV4dC5sZW5ndGg8YXJnU2l6ZSoyKWFyZ1RleHQ9ImYiK2FyZ1RleHR9ZWxzZXthcmdUZXh0PWN1cnJBYnNBcmcudG9TdHJpbmcoMTYpfWlmKG5leHQ9PTg4KXtwcmVmaXg9cHJlZml4LnRvVXBwZXJDYXNlKCk7YXJnVGV4dD1hcmdUZXh0LnRvVXBwZXJDYXNlKCl9fWVsc2UgaWYobmV4dD09MTEyKXtpZihjdXJyQWJzQXJnPT09MCl7YXJnVGV4dD0iKG5pbCkifWVsc2V7cHJlZml4PSIweCI7YXJnVGV4dD1jdXJyQWJzQXJnLnRvU3RyaW5nKDE2KX19aWYocHJlY2lzaW9uU2V0KXt3aGlsZShhcmdUZXh0Lmxlbmd0aDxwcmVjaXNpb24pe2FyZ1RleHQ9IjAiK2FyZ1RleHR9fWlmKGN1cnJBcmc+PTApe2lmKGZsYWdBbHdheXNTaWduZWQpe3ByZWZpeD0iKyIrcHJlZml4fWVsc2UgaWYoZmxhZ1BhZFNpZ24pe3ByZWZpeD0iICIrcHJlZml4fX1pZihhcmdUZXh0LmNoYXJBdCgwKT09Ii0iKXtwcmVmaXg9Ii0iK3ByZWZpeDthcmdUZXh0PWFyZ1RleHQuc3Vic3RyKDEpfXdoaWxlKHByZWZpeC5sZW5ndGgrYXJnVGV4dC5sZW5ndGg8d2lkdGgpe2lmKGZsYWdMZWZ0QWxpZ24pe2FyZ1RleHQrPSIgIn1lbHNle2lmKGZsYWdaZXJvUGFkKXthcmdUZXh0PSIwIithcmdUZXh0fWVsc2V7cHJlZml4PSIgIitwcmVmaXh9fX1hcmdUZXh0PXByZWZpeCthcmdUZXh0O2FyZ1RleHQuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKGNocil7cmV0LnB1c2goY2hyLmNoYXJDb2RlQXQoMCkpfSkpO2JyZWFrfTtjYXNlImYiOmNhc2UiRiI6Y2FzZSJlIjpjYXNlIkUiOmNhc2UiZyI6Y2FzZSJHIjp7dmFyIGN1cnJBcmc9Z2V0TmV4dEFyZygiZG91YmxlIik7dmFyIGFyZ1RleHQ7aWYoaXNOYU4oY3VyckFyZykpe2FyZ1RleHQ9Im5hbiI7ZmxhZ1plcm9QYWQ9ZmFsc2V9ZWxzZSBpZighaXNGaW5pdGUoY3VyckFyZykpe2FyZ1RleHQ9KGN1cnJBcmc8MD8iLSI6IiIpKyJpbmYiO2ZsYWdaZXJvUGFkPWZhbHNlfWVsc2V7dmFyIGlzR2VuZXJhbD1mYWxzZTt2YXIgZWZmZWN0aXZlUHJlY2lzaW9uPU1hdGgubWluKHByZWNpc2lvbiwyMCk7aWYobmV4dD09MTAzfHxuZXh0PT03MSl7aXNHZW5lcmFsPXRydWU7cHJlY2lzaW9uPXByZWNpc2lvbnx8MTt2YXIgZXhwb25lbnQ9cGFyc2VJbnQoY3VyckFyZy50b0V4cG9uZW50aWFsKGVmZmVjdGl2ZVByZWNpc2lvbikuc3BsaXQoImUiKVsxXSwxMCk7aWYocHJlY2lzaW9uPmV4cG9uZW50JiZleHBvbmVudD49LTQpe25leHQ9KG5leHQ9PTEwMz8iZiI6IkYiKS5jaGFyQ29kZUF0KDApO3ByZWNpc2lvbi09ZXhwb25lbnQrMX1lbHNle25leHQ9KG5leHQ9PTEwMz8iZSI6IkUiKS5jaGFyQ29kZUF0KDApO3ByZWNpc2lvbi0tfWVmZmVjdGl2ZVByZWNpc2lvbj1NYXRoLm1pbihwcmVjaXNpb24sMjApfWlmKG5leHQ9PTEwMXx8bmV4dD09Njkpe2FyZ1RleHQ9Y3VyckFyZy50b0V4cG9uZW50aWFsKGVmZmVjdGl2ZVByZWNpc2lvbik7aWYoL1tlRV1bLStdXGQkLy50ZXN0KGFyZ1RleHQpKXthcmdUZXh0PWFyZ1RleHQuc2xpY2UoMCwtMSkrIjAiK2FyZ1RleHQuc2xpY2UoLTEpfX1lbHNlIGlmKG5leHQ9PTEwMnx8bmV4dD09NzApe2FyZ1RleHQ9Y3VyckFyZy50b0ZpeGVkKGVmZmVjdGl2ZVByZWNpc2lvbik7aWYoY3VyckFyZz09PTAmJl9fcmVhbGx5TmVnYXRpdmUoY3VyckFyZykpe2FyZ1RleHQ9Ii0iK2FyZ1RleHR9fXZhciBwYXJ0cz1hcmdUZXh0LnNwbGl0KCJlIik7aWYoaXNHZW5lcmFsJiYhZmxhZ0FsdGVybmF0aXZlKXt3aGlsZShwYXJ0c1swXS5sZW5ndGg+MSYmcGFydHNbMF0uaW5kZXhPZigiLiIpIT0tMSYmKHBhcnRzWzBdLnNsaWNlKC0xKT09IjAifHxwYXJ0c1swXS5zbGljZSgtMSk9PSIuIikpe3BhcnRzWzBdPXBhcnRzWzBdLnNsaWNlKDAsLTEpfX1lbHNle2lmKGZsYWdBbHRlcm5hdGl2ZSYmYXJnVGV4dC5pbmRleE9mKCIuIik9PS0xKXBhcnRzWzBdKz0iLiI7d2hpbGUocHJlY2lzaW9uPmVmZmVjdGl2ZVByZWNpc2lvbisrKXBhcnRzWzBdKz0iMCJ9YXJnVGV4dD1wYXJ0c1swXSsocGFydHMubGVuZ3RoPjE/ImUiK3BhcnRzWzFdOiIiKTtpZihuZXh0PT02OSlhcmdUZXh0PWFyZ1RleHQudG9VcHBlckNhc2UoKTtpZihjdXJyQXJnPj0wKXtpZihmbGFnQWx3YXlzU2lnbmVkKXthcmdUZXh0PSIrIithcmdUZXh0fWVsc2UgaWYoZmxhZ1BhZFNpZ24pe2FyZ1RleHQ9IiAiK2FyZ1RleHR9fX13aGlsZShhcmdUZXh0Lmxlbmd0aDx3aWR0aCl7aWYoZmxhZ0xlZnRBbGlnbil7YXJnVGV4dCs9IiAifWVsc2V7aWYoZmxhZ1plcm9QYWQmJihhcmdUZXh0WzBdPT0iLSJ8fGFyZ1RleHRbMF09PSIrIikpe2FyZ1RleHQ9YXJnVGV4dFswXSsiMCIrYXJnVGV4dC5zbGljZSgxKX1lbHNle2FyZ1RleHQ9KGZsYWdaZXJvUGFkPyIwIjoiICIpK2FyZ1RleHR9fX1pZihuZXh0PDk3KWFyZ1RleHQ9YXJnVGV4dC50b1VwcGVyQ2FzZSgpO2FyZ1RleHQuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKGNocil7cmV0LnB1c2goY2hyLmNoYXJDb2RlQXQoMCkpfSkpO2JyZWFrfTtjYXNlInMiOnt2YXIgYXJnPWdldE5leHRBcmcoImk4KiIpO3ZhciBhcmdMZW5ndGg9YXJnP19zdHJsZW4oYXJnKToiKG51bGwpIi5sZW5ndGg7aWYocHJlY2lzaW9uU2V0KWFyZ0xlbmd0aD1NYXRoLm1pbihhcmdMZW5ndGgscHJlY2lzaW9uKTtpZighZmxhZ0xlZnRBbGlnbil7d2hpbGUoYXJnTGVuZ3RoPHdpZHRoLS0pe3JldC5wdXNoKDMyKX19aWYoYXJnKXtmb3IodmFyIGk9MDtpPGFyZ0xlbmd0aDtpKyspe3JldC5wdXNoKEhFQVBVOFthcmcrKz4+MF0pfX1lbHNle3JldD1yZXQuY29uY2F0KGludEFycmF5RnJvbVN0cmluZygiKG51bGwpIi5zdWJzdHIoMCxhcmdMZW5ndGgpLHRydWUpKX1pZihmbGFnTGVmdEFsaWduKXt3aGlsZShhcmdMZW5ndGg8d2lkdGgtLSl7cmV0LnB1c2goMzIpfX1icmVha307Y2FzZSJjIjp7aWYoZmxhZ0xlZnRBbGlnbilyZXQucHVzaChnZXROZXh0QXJnKCJpOCIpKTt3aGlsZSgtLXdpZHRoPjApe3JldC5wdXNoKDMyKX1pZighZmxhZ0xlZnRBbGlnbilyZXQucHVzaChnZXROZXh0QXJnKCJpOCIpKTticmVha307Y2FzZSJuIjp7dmFyIHB0cj1nZXROZXh0QXJnKCJpMzIqIik7SEVBUDMyW3B0cj4+Ml09cmV0Lmxlbmd0aDticmVha307Y2FzZSIlIjp7cmV0LnB1c2goY3Vycik7YnJlYWt9O2RlZmF1bHQ6e2Zvcih2YXIgaT1zdGFydFRleHRJbmRleDtpPHRleHRJbmRleCsyO2krKyl7cmV0LnB1c2goSEVBUDhbaT4+MF0pfX19dGV4dEluZGV4Kz0yfWVsc2V7cmV0LnB1c2goY3Vycik7dGV4dEluZGV4Kz0xfX1yZXR1cm4gcmV0fWZ1bmN0aW9uIF9tYWxsb2MoYnl0ZXMpe3ZhciBwdHI9UnVudGltZS5keW5hbWljQWxsb2MoYnl0ZXMrOCk7cmV0dXJuIHB0cis4JjQyOTQ5NjcyODh9TW9kdWxlWyJfbWFsbG9jIl09X21hbGxvYztmdW5jdGlvbiBfc25wcmludGYocyxuLGZvcm1hdCx2YXJhcmdzKXt2YXIgcmVzdWx0PV9fZm9ybWF0U3RyaW5nKGZvcm1hdCx2YXJhcmdzKTt2YXIgbGltaXQ9bj09PXVuZGVmaW5lZD9yZXN1bHQubGVuZ3RoOk1hdGgubWluKHJlc3VsdC5sZW5ndGgsTWF0aC5tYXgobi0xLDApKTtpZihzPDApe3M9LXM7dmFyIGJ1Zj1fbWFsbG9jKGxpbWl0KzEpO0hFQVAzMltzPj4yXT1idWY7cz1idWZ9Zm9yKHZhciBpPTA7aTxsaW1pdDtpKyspe0hFQVA4W3MraT4+MF09cmVzdWx0W2ldfWlmKGxpbWl0PG58fG49PT11bmRlZmluZWQpSEVBUDhbcytpPj4wXT0wO3JldHVybiByZXN1bHQubGVuZ3RofWZ1bmN0aW9uIF9ta3BvcnQoKXt0aHJvdyJUT0RPIn12YXIgU09DS0ZTPXttb3VudDooZnVuY3Rpb24obW91bnQpe3JldHVybiBGUy5jcmVhdGVOb2RlKG51bGwsIi8iLDE2Mzg0fDUxMSwwKX0pLGNyZWF0ZVNvY2tldDooZnVuY3Rpb24oZmFtaWx5LHR5cGUscHJvdG9jb2wpe3ZhciBzdHJlYW1pbmc9dHlwZT09MTtpZihwcm90b2NvbCl7YXNzZXJ0KHN0cmVhbWluZz09KHByb3RvY29sPT02KSl9dmFyIHNvY2s9e2ZhbWlseTpmYW1pbHksdHlwZTp0eXBlLHByb3RvY29sOnByb3RvY29sLHNlcnZlcjpudWxsLHBlZXJzOnt9LHBlbmRpbmc6W10scmVjdl9xdWV1ZTpbXSxzb2NrX29wczpTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzfTt2YXIgbmFtZT1TT0NLRlMubmV4dG5hbWUoKTt2YXIgbm9kZT1GUy5jcmVhdGVOb2RlKFNPQ0tGUy5yb290LG5hbWUsNDkxNTIsMCk7bm9kZS5zb2NrPXNvY2s7dmFyIHN0cmVhbT1GUy5jcmVhdGVTdHJlYW0oe3BhdGg6bmFtZSxub2RlOm5vZGUsZmxhZ3M6RlMubW9kZVN0cmluZ1RvRmxhZ3MoInIrIiksc2Vla2FibGU6ZmFsc2Usc3RyZWFtX29wczpTT0NLRlMuc3RyZWFtX29wc30pO3NvY2suc3RyZWFtPXN0cmVhbTtyZXR1cm4gc29ja30pLGdldFNvY2tldDooZnVuY3Rpb24oZmQpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZkKTtpZighc3RyZWFtfHwhRlMuaXNTb2NrZXQoc3RyZWFtLm5vZGUubW9kZSkpe3JldHVybiBudWxsfXJldHVybiBzdHJlYW0ubm9kZS5zb2NrfSksc3RyZWFtX29wczp7cG9sbDooZnVuY3Rpb24oc3RyZWFtKXt2YXIgc29jaz1zdHJlYW0ubm9kZS5zb2NrO3JldHVybiBzb2NrLnNvY2tfb3BzLnBvbGwoc29jayl9KSxpb2N0bDooZnVuY3Rpb24oc3RyZWFtLHJlcXVlc3QsdmFyYXJncyl7dmFyIHNvY2s9c3RyZWFtLm5vZGUuc29jaztyZXR1cm4gc29jay5zb2NrX29wcy5pb2N0bChzb2NrLHJlcXVlc3QsdmFyYXJncyl9KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7dmFyIG1zZz1zb2NrLnNvY2tfb3BzLnJlY3Ztc2coc29jayxsZW5ndGgpO2lmKCFtc2cpe3JldHVybiAwfWJ1ZmZlci5zZXQobXNnLmJ1ZmZlcixvZmZzZXQpO3JldHVybiBtc2cuYnVmZmVyLmxlbmd0aH0pLHdyaXRlOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7cmV0dXJuIHNvY2suc29ja19vcHMuc2VuZG1zZyhzb2NrLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoKX0pLGNsb3NlOihmdW5jdGlvbihzdHJlYW0pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7c29jay5zb2NrX29wcy5jbG9zZShzb2NrKX0pfSxuZXh0bmFtZTooZnVuY3Rpb24oKXtpZighU09DS0ZTLm5leHRuYW1lLmN1cnJlbnQpe1NPQ0tGUy5uZXh0bmFtZS5jdXJyZW50PTB9cmV0dXJuInNvY2tldFsiK1NPQ0tGUy5uZXh0bmFtZS5jdXJyZW50KysgKyJdIn0pLHdlYnNvY2tldF9zb2NrX29wczp7Y3JlYXRlUGVlcjooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe3ZhciB3cztpZih0eXBlb2YgYWRkcj09PSJvYmplY3QiKXt3cz1hZGRyO2FkZHI9bnVsbDtwb3J0PW51bGx9aWYod3Mpe2lmKHdzLl9zb2NrZXQpe2FkZHI9d3MuX3NvY2tldC5yZW1vdGVBZGRyZXNzO3BvcnQ9d3MuX3NvY2tldC5yZW1vdGVQb3J0fWVsc2V7dmFyIHJlc3VsdD0vd3Nbc10/OlwvXC8oW146XSspOihcZCspLy5leGVjKHdzLnVybCk7aWYoIXJlc3VsdCl7dGhyb3cgbmV3IEVycm9yKCJXZWJTb2NrZXQgVVJMIG11c3QgYmUgaW4gdGhlIGZvcm1hdCB3cyhzKTovL2FkZHJlc3M6cG9ydCIpfWFkZHI9cmVzdWx0WzFdO3BvcnQ9cGFyc2VJbnQocmVzdWx0WzJdLDEwKX19ZWxzZXt0cnl7dmFyIHJ1bnRpbWVDb25maWc9TW9kdWxlWyJ3ZWJzb2NrZXQiXSYmIm9iamVjdCI9PT10eXBlb2YgTW9kdWxlWyJ3ZWJzb2NrZXQiXTt2YXIgdXJsPSJ3czojIi5yZXBsYWNlKCIjIiwiLy8iKTtpZihydW50aW1lQ29uZmlnKXtpZigic3RyaW5nIj09PXR5cGVvZiBNb2R1bGVbIndlYnNvY2tldCJdWyJ1cmwiXSl7dXJsPU1vZHVsZVsid2Vic29ja2V0Il1bInVybCJdfX1pZih1cmw9PT0id3M6Ly8ifHx1cmw9PT0id3NzOi8vIil7dXJsPXVybCthZGRyKyI6Iitwb3J0fXZhciBzdWJQcm90b2NvbHM9ImJpbmFyeSI7aWYocnVudGltZUNvbmZpZyl7aWYoInN0cmluZyI9PT10eXBlb2YgTW9kdWxlWyJ3ZWJzb2NrZXQiXVsic3VicHJvdG9jb2wiXSl7c3ViUHJvdG9jb2xzPU1vZHVsZVsid2Vic29ja2V0Il1bInN1YnByb3RvY29sIl19fXN1YlByb3RvY29scz1zdWJQcm90b2NvbHMucmVwbGFjZSgvXiArfCArJC9nLCIiKS5zcGxpdCgvICosICovKTt2YXIgb3B0cz1FTlZJUk9OTUVOVF9JU19OT0RFP3sicHJvdG9jb2wiOnN1YlByb3RvY29scy50b1N0cmluZygpfTpzdWJQcm90b2NvbHM7dmFyIFdlYlNvY2tldD1FTlZJUk9OTUVOVF9JU19OT0RFP3JlcXVpcmUoIndzIik6d2luZG93WyJXZWJTb2NrZXQiXTt3cz1uZXcgV2ViU29ja2V0KHVybCxvcHRzKTt3cy5iaW5hcnlUeXBlPSJhcnJheWJ1ZmZlciJ9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUhPU1RVTlJFQUNIKX19dmFyIHBlZXI9e2FkZHI6YWRkcixwb3J0OnBvcnQsc29ja2V0OndzLGRncmFtX3NlbmRfcXVldWU6W119O1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuYWRkUGVlcihzb2NrLHBlZXIpO1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuaGFuZGxlUGVlckV2ZW50cyhzb2NrLHBlZXIpO2lmKHNvY2sudHlwZT09PTImJnR5cGVvZiBzb2NrLnNwb3J0IT09InVuZGVmaW5lZCIpe3BlZXIuZGdyYW1fc2VuZF9xdWV1ZS5wdXNoKG5ldyBVaW50OEFycmF5KFsyNTUsMjU1LDI1NSwyNTUsInAiLmNoYXJDb2RlQXQoMCksIm8iLmNoYXJDb2RlQXQoMCksInIiLmNoYXJDb2RlQXQoMCksInQiLmNoYXJDb2RlQXQoMCksKHNvY2suc3BvcnQmNjUyODApPj44LHNvY2suc3BvcnQmMjU1XSkpfXJldHVybiBwZWVyfSksZ2V0UGVlcjooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe3JldHVybiBzb2NrLnBlZXJzW2FkZHIrIjoiK3BvcnRdfSksYWRkUGVlcjooZnVuY3Rpb24oc29jayxwZWVyKXtzb2NrLnBlZXJzW3BlZXIuYWRkcisiOiIrcGVlci5wb3J0XT1wZWVyfSkscmVtb3ZlUGVlcjooZnVuY3Rpb24oc29jayxwZWVyKXtkZWxldGUgc29jay5wZWVyc1twZWVyLmFkZHIrIjoiK3BlZXIucG9ydF19KSxoYW5kbGVQZWVyRXZlbnRzOihmdW5jdGlvbihzb2NrLHBlZXIpe3ZhciBmaXJzdD10cnVlO3ZhciBoYW5kbGVPcGVuPShmdW5jdGlvbigpe3RyeXt2YXIgcXVldWVkPXBlZXIuZGdyYW1fc2VuZF9xdWV1ZS5zaGlmdCgpO3doaWxlKHF1ZXVlZCl7cGVlci5zb2NrZXQuc2VuZChxdWV1ZWQpO3F1ZXVlZD1wZWVyLmRncmFtX3NlbmRfcXVldWUuc2hpZnQoKX19Y2F0Y2goZSl7cGVlci5zb2NrZXQuY2xvc2UoKX19KTtmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKGRhdGEpe2Fzc2VydCh0eXBlb2YgZGF0YSE9PSJzdHJpbmciJiZkYXRhLmJ5dGVMZW5ndGghPT11bmRlZmluZWQpO2RhdGE9bmV3IFVpbnQ4QXJyYXkoZGF0YSk7dmFyIHdhc2ZpcnN0PWZpcnN0O2ZpcnN0PWZhbHNlO2lmKHdhc2ZpcnN0JiZkYXRhLmxlbmd0aD09PTEwJiZkYXRhWzBdPT09MjU1JiZkYXRhWzFdPT09MjU1JiZkYXRhWzJdPT09MjU1JiZkYXRhWzNdPT09MjU1JiZkYXRhWzRdPT09InAiLmNoYXJDb2RlQXQoMCkmJmRhdGFbNV09PT0ibyIuY2hhckNvZGVBdCgwKSYmZGF0YVs2XT09PSJyIi5jaGFyQ29kZUF0KDApJiZkYXRhWzddPT09InQiLmNoYXJDb2RlQXQoMCkpe3ZhciBuZXdwb3J0PWRhdGFbOF08PDh8ZGF0YVs5XTtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLnJlbW92ZVBlZXIoc29jayxwZWVyKTtwZWVyLnBvcnQ9bmV3cG9ydDtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmFkZFBlZXIoc29jayxwZWVyKTtyZXR1cm59c29jay5yZWN2X3F1ZXVlLnB1c2goe2FkZHI6cGVlci5hZGRyLHBvcnQ6cGVlci5wb3J0LGRhdGE6ZGF0YX0pfWlmKEVOVklST05NRU5UX0lTX05PREUpe3BlZXIuc29ja2V0Lm9uKCJvcGVuIixoYW5kbGVPcGVuKTtwZWVyLnNvY2tldC5vbigibWVzc2FnZSIsKGZ1bmN0aW9uKGRhdGEsZmxhZ3Mpe2lmKCFmbGFncy5iaW5hcnkpe3JldHVybn1oYW5kbGVNZXNzYWdlKChuZXcgVWludDhBcnJheShkYXRhKSkuYnVmZmVyKX0pKTtwZWVyLnNvY2tldC5vbigiZXJyb3IiLChmdW5jdGlvbigpe30pKX1lbHNle3BlZXIuc29ja2V0Lm9ub3Blbj1oYW5kbGVPcGVuO3BlZXIuc29ja2V0Lm9ubWVzc2FnZT1mdW5jdGlvbiBwZWVyX3NvY2tldF9vbm1lc3NhZ2UoZXZlbnQpe2hhbmRsZU1lc3NhZ2UoZXZlbnQuZGF0YSl9fX0pLHBvbGw6KGZ1bmN0aW9uKHNvY2spe2lmKHNvY2sudHlwZT09PTEmJnNvY2suc2VydmVyKXtyZXR1cm4gc29jay5wZW5kaW5nLmxlbmd0aD82NHwxOjB9dmFyIG1hc2s9MDt2YXIgZGVzdD1zb2NrLnR5cGU9PT0xP1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuZ2V0UGVlcihzb2NrLHNvY2suZGFkZHIsc29jay5kcG9ydCk6bnVsbDtpZihzb2NrLnJlY3ZfcXVldWUubGVuZ3RofHwhZGVzdHx8ZGVzdCYmZGVzdC5zb2NrZXQucmVhZHlTdGF0ZT09PWRlc3Quc29ja2V0LkNMT1NJTkd8fGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TRUQpe21hc2t8PTY0fDF9aWYoIWRlc3R8fGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5PUEVOKXttYXNrfD00fWlmKGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0JiZkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXttYXNrfD0xNn1yZXR1cm4gbWFza30pLGlvY3RsOihmdW5jdGlvbihzb2NrLHJlcXVlc3QsYXJnKXtzd2l0Y2gocmVxdWVzdCl7Y2FzZSAyMTUzMTp2YXIgYnl0ZXM9MDtpZihzb2NrLnJlY3ZfcXVldWUubGVuZ3RoKXtieXRlcz1zb2NrLnJlY3ZfcXVldWVbMF0uZGF0YS5sZW5ndGh9SEVBUDMyW2FyZz4+Ml09Ynl0ZXM7cmV0dXJuIDA7ZGVmYXVsdDpyZXR1cm4gRVJSTk9fQ09ERVMuRUlOVkFMfX0pLGNsb3NlOihmdW5jdGlvbihzb2NrKXtpZihzb2NrLnNlcnZlcil7dHJ5e3NvY2suc2VydmVyLmNsb3NlKCl9Y2F0Y2goZSl7fXNvY2suc2VydmVyPW51bGx9dmFyIHBlZXJzPU9iamVjdC5rZXlzKHNvY2sucGVlcnMpO2Zvcih2YXIgaT0wO2k8cGVlcnMubGVuZ3RoO2krKyl7dmFyIHBlZXI9c29jay5wZWVyc1twZWVyc1tpXV07dHJ5e3BlZXIuc29ja2V0LmNsb3NlKCl9Y2F0Y2goZSl7fVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMucmVtb3ZlUGVlcihzb2NrLHBlZXIpfXJldHVybiAwfSksYmluZDooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe2lmKHR5cGVvZiBzb2NrLnNhZGRyIT09InVuZGVmaW5lZCJ8fHR5cGVvZiBzb2NrLnNwb3J0IT09InVuZGVmaW5lZCIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9c29jay5zYWRkcj1hZGRyO3NvY2suc3BvcnQ9cG9ydHx8X21rcG9ydCgpO2lmKHNvY2sudHlwZT09PTIpe2lmKHNvY2suc2VydmVyKXtzb2NrLnNlcnZlci5jbG9zZSgpO3NvY2suc2VydmVyPW51bGx9dHJ5e3NvY2suc29ja19vcHMubGlzdGVuKHNvY2ssMCl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtpZihlLmVycm5vIT09RVJSTk9fQ09ERVMuRU9QTk9UU1VQUCl0aHJvdyBlfX19KSxjb25uZWN0OihmdW5jdGlvbihzb2NrLGFkZHIscG9ydCl7aWYoc29jay5zZXJ2ZXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPRFMuRU9QTk9UU1VQUCl9aWYodHlwZW9mIHNvY2suZGFkZHIhPT0idW5kZWZpbmVkIiYmdHlwZW9mIHNvY2suZHBvcnQhPT0idW5kZWZpbmVkIil7dmFyIGRlc3Q9U09DS0ZTLndlYnNvY2tldF9zb2NrX29wcy5nZXRQZWVyKHNvY2ssc29jay5kYWRkcixzb2NrLmRwb3J0KTtpZihkZXN0KXtpZihkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ09OTkVDVElORyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFMUkVBRFkpfWVsc2V7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTQ09OTil9fX12YXIgcGVlcj1TT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIoc29jayxhZGRyLHBvcnQpO3NvY2suZGFkZHI9cGVlci5hZGRyO3NvY2suZHBvcnQ9cGVlci5wb3J0O3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlBST0dSRVNTKX0pLGxpc3RlbjooZnVuY3Rpb24oc29jayxiYWNrbG9nKXtpZighRU5WSVJPTk1FTlRfSVNfTk9ERSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU9QTk9UU1VQUCl9aWYoc29jay5zZXJ2ZXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIFdlYlNvY2tldFNlcnZlcj1yZXF1aXJlKCJ3cyIpLlNlcnZlcjt2YXIgaG9zdD1zb2NrLnNhZGRyO3NvY2suc2VydmVyPW5ldyBXZWJTb2NrZXRTZXJ2ZXIoe2hvc3Q6aG9zdCxwb3J0OnNvY2suc3BvcnR9KTtzb2NrLnNlcnZlci5vbigiY29ubmVjdGlvbiIsKGZ1bmN0aW9uKHdzKXtpZihzb2NrLnR5cGU9PT0xKXt2YXIgbmV3c29jaz1TT0NLRlMuY3JlYXRlU29ja2V0KHNvY2suZmFtaWx5LHNvY2sudHlwZSxzb2NrLnByb3RvY29sKTt2YXIgcGVlcj1TT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIobmV3c29jayx3cyk7bmV3c29jay5kYWRkcj1wZWVyLmFkZHI7bmV3c29jay5kcG9ydD1wZWVyLnBvcnQ7c29jay5wZW5kaW5nLnB1c2gobmV3c29jayl9ZWxzZXtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIoc29jayx3cyl9fSkpO3NvY2suc2VydmVyLm9uKCJjbG9zZWQiLChmdW5jdGlvbigpe3NvY2suc2VydmVyPW51bGx9KSk7c29jay5zZXJ2ZXIub24oImVycm9yIiwoZnVuY3Rpb24oKXt9KSl9KSxhY2NlcHQ6KGZ1bmN0aW9uKGxpc3RlbnNvY2spe2lmKCFsaXN0ZW5zb2NrLnNlcnZlcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbmV3c29jaz1saXN0ZW5zb2NrLnBlbmRpbmcuc2hpZnQoKTtuZXdzb2NrLnN0cmVhbS5mbGFncz1saXN0ZW5zb2NrLnN0cmVhbS5mbGFncztyZXR1cm4gbmV3c29ja30pLGdldG5hbWU6KGZ1bmN0aW9uKHNvY2sscGVlcil7dmFyIGFkZHIscG9ydDtpZihwZWVyKXtpZihzb2NrLmRhZGRyPT09dW5kZWZpbmVkfHxzb2NrLmRwb3J0PT09dW5kZWZpbmVkKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9UQ09OTil9YWRkcj1zb2NrLmRhZGRyO3BvcnQ9c29jay5kcG9ydH1lbHNle2FkZHI9c29jay5zYWRkcnx8MDtwb3J0PXNvY2suc3BvcnR8fDB9cmV0dXJue2FkZHI6YWRkcixwb3J0OnBvcnR9fSksc2VuZG1zZzooZnVuY3Rpb24oc29jayxidWZmZXIsb2Zmc2V0LGxlbmd0aCxhZGRyLHBvcnQpe2lmKHNvY2sudHlwZT09PTIpe2lmKGFkZHI9PT11bmRlZmluZWR8fHBvcnQ9PT11bmRlZmluZWQpe2FkZHI9c29jay5kYWRkcjtwb3J0PXNvY2suZHBvcnR9aWYoYWRkcj09PXVuZGVmaW5lZHx8cG9ydD09PXVuZGVmaW5lZCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRURFU1RBRERSUkVRKX19ZWxzZXthZGRyPXNvY2suZGFkZHI7cG9ydD1zb2NrLmRwb3J0fXZhciBkZXN0PVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuZ2V0UGVlcihzb2NrLGFkZHIscG9ydCk7aWYoc29jay50eXBlPT09MSl7aWYoIWRlc3R8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9UQ09OTil9ZWxzZSBpZihkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ09OTkVDVElORyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX19dmFyIGRhdGE7aWYoYnVmZmVyIGluc3RhbmNlb2YgQXJyYXl8fGJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXtkYXRhPWJ1ZmZlci5zbGljZShvZmZzZXQsb2Zmc2V0K2xlbmd0aCl9ZWxzZXtkYXRhPWJ1ZmZlci5idWZmZXIuc2xpY2UoYnVmZmVyLmJ5dGVPZmZzZXQrb2Zmc2V0LGJ1ZmZlci5ieXRlT2Zmc2V0K29mZnNldCtsZW5ndGgpfWlmKHNvY2sudHlwZT09PTIpe2lmKCFkZXN0fHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlIT09ZGVzdC5zb2NrZXQuT1BFTil7aWYoIWRlc3R8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXtkZXN0PVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuY3JlYXRlUGVlcihzb2NrLGFkZHIscG9ydCl9ZGVzdC5kZ3JhbV9zZW5kX3F1ZXVlLnB1c2goZGF0YSk7cmV0dXJuIGxlbmd0aH19dHJ5e2Rlc3Quc29ja2V0LnNlbmQoZGF0YSk7cmV0dXJuIGxlbmd0aH1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfX0pLHJlY3Ztc2c6KGZ1bmN0aW9uKHNvY2ssbGVuZ3RoKXtpZihzb2NrLnR5cGU9PT0xJiZzb2NrLnNlcnZlcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVENPTk4pfXZhciBxdWV1ZWQ9c29jay5yZWN2X3F1ZXVlLnNoaWZ0KCk7aWYoIXF1ZXVlZCl7aWYoc29jay50eXBlPT09MSl7dmFyIGRlc3Q9U09DS0ZTLndlYnNvY2tldF9zb2NrX29wcy5nZXRQZWVyKHNvY2ssc29jay5kYWRkcixzb2NrLmRwb3J0KTtpZighZGVzdCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVENPTk4pfWVsc2UgaWYoZGVzdC5zb2NrZXQucmVhZHlTdGF0ZT09PWRlc3Quc29ja2V0LkNMT1NJTkd8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TRUQpe3JldHVybiBudWxsfWVsc2V7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX19ZWxzZXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4pfX12YXIgcXVldWVkTGVuZ3RoPXF1ZXVlZC5kYXRhLmJ5dGVMZW5ndGh8fHF1ZXVlZC5kYXRhLmxlbmd0aDt2YXIgcXVldWVkT2Zmc2V0PXF1ZXVlZC5kYXRhLmJ5dGVPZmZzZXR8fDA7dmFyIHF1ZXVlZEJ1ZmZlcj1xdWV1ZWQuZGF0YS5idWZmZXJ8fHF1ZXVlZC5kYXRhO3ZhciBieXRlc1JlYWQ9TWF0aC5taW4obGVuZ3RoLHF1ZXVlZExlbmd0aCk7dmFyIHJlcz17YnVmZmVyOm5ldyBVaW50OEFycmF5KHF1ZXVlZEJ1ZmZlcixxdWV1ZWRPZmZzZXQsYnl0ZXNSZWFkKSxhZGRyOnF1ZXVlZC5hZGRyLHBvcnQ6cXVldWVkLnBvcnR9O2lmKHNvY2sudHlwZT09PTEmJmJ5dGVzUmVhZDxxdWV1ZWRMZW5ndGgpe3ZhciBieXRlc1JlbWFpbmluZz1xdWV1ZWRMZW5ndGgtYnl0ZXNSZWFkO3F1ZXVlZC5kYXRhPW5ldyBVaW50OEFycmF5KHF1ZXVlZEJ1ZmZlcixxdWV1ZWRPZmZzZXQrYnl0ZXNSZWFkLGJ5dGVzUmVtYWluaW5nKTtzb2NrLnJlY3ZfcXVldWUudW5zaGlmdChxdWV1ZWQpfXJldHVybiByZXN9KX19O2Z1bmN0aW9uIF9zZW5kKGZkLGJ1ZixsZW4sZmxhZ3Mpe3ZhciBzb2NrPVNPQ0tGUy5nZXRTb2NrZXQoZmQpO2lmKCFzb2NrKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9cmV0dXJuIF93cml0ZShmZCxidWYsbGVuKX1mdW5jdGlvbiBfcHdyaXRlKGZpbGRlcyxidWYsbmJ5dGUsb2Zmc2V0KXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmaWxkZXMpO2lmKCFzdHJlYW0pe19fX3NldEVyck5vKEVSUk5PX0NPREVTLkVCQURGKTtyZXR1cm4tMX10cnl7dmFyIHNsYWI9SEVBUDg7cmV0dXJuIEZTLndyaXRlKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSxvZmZzZXQpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF93cml0ZShmaWxkZXMsYnVmLG5ieXRlKXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmaWxkZXMpO2lmKCFzdHJlYW0pe19fX3NldEVyck5vKEVSUk5PX0NPREVTLkVCQURGKTtyZXR1cm4tMX10cnl7dmFyIHNsYWI9SEVBUDg7cmV0dXJuIEZTLndyaXRlKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSl9Y2F0Y2goZSl7RlMuaGFuZGxlRlNFcnJvcihlKTtyZXR1cm4tMX19ZnVuY3Rpb24gX2ZpbGVubyhzdHJlYW0pe3N0cmVhbT1GUy5nZXRTdHJlYW1Gcm9tUHRyKHN0cmVhbSk7aWYoIXN0cmVhbSlyZXR1cm4tMTtyZXR1cm4gc3RyZWFtLmZkfWZ1bmN0aW9uIF9md3JpdGUocHRyLHNpemUsbml0ZW1zLHN0cmVhbSl7dmFyIGJ5dGVzVG9Xcml0ZT1uaXRlbXMqc2l6ZTtpZihieXRlc1RvV3JpdGU9PTApcmV0dXJuIDA7dmFyIGZkPV9maWxlbm8oc3RyZWFtKTt2YXIgYnl0ZXNXcml0dGVuPV93cml0ZShmZCxwdHIsYnl0ZXNUb1dyaXRlKTtpZihieXRlc1dyaXR0ZW49PS0xKXt2YXIgc3RyZWFtT2JqPUZTLmdldFN0cmVhbUZyb21QdHIoc3RyZWFtKTtpZihzdHJlYW1PYmopc3RyZWFtT2JqLmVycm9yPXRydWU7cmV0dXJuIDB9ZWxzZXtyZXR1cm4gTWF0aC5mbG9vcihieXRlc1dyaXR0ZW4vc2l6ZSl9fWZ1bmN0aW9uIF9yZWN2KGZkLGJ1ZixsZW4sZmxhZ3Mpe3ZhciBzb2NrPVNPQ0tGUy5nZXRTb2NrZXQoZmQpO2lmKCFzb2NrKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9cmV0dXJuIF9yZWFkKGZkLGJ1ZixsZW4pfWZ1bmN0aW9uIF9wcmVhZChmaWxkZXMsYnVmLG5ieXRlLG9mZnNldCl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmlsZGVzKTtpZighc3RyZWFtKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9dHJ5e3ZhciBzbGFiPUhFQVA4O3JldHVybiBGUy5yZWFkKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSxvZmZzZXQpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF9yZWFkKGZpbGRlcyxidWYsbmJ5dGUpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZpbGRlcyk7aWYoIXN0cmVhbSl7X19fc2V0RXJyTm8oRVJSTk9fQ09ERVMuRUJBREYpO3JldHVybi0xfXRyeXt2YXIgc2xhYj1IRUFQODtyZXR1cm4gRlMucmVhZChzdHJlYW0sc2xhYixidWYsbmJ5dGUpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF9mcmVhZChwdHIsc2l6ZSxuaXRlbXMsc3RyZWFtKXt2YXIgYnl0ZXNUb1JlYWQ9bml0ZW1zKnNpemU7aWYoYnl0ZXNUb1JlYWQ9PTApe3JldHVybiAwfXZhciBieXRlc1JlYWQ9MDt2YXIgc3RyZWFtT2JqPUZTLmdldFN0cmVhbUZyb21QdHIoc3RyZWFtKTtpZighc3RyZWFtT2JqKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuIDB9d2hpbGUoc3RyZWFtT2JqLnVuZ290dGVuLmxlbmd0aCYmYnl0ZXNUb1JlYWQ+MCl7SEVBUDhbcHRyKys+PjBdPXN0cmVhbU9iai51bmdvdHRlbi5wb3AoKTtieXRlc1RvUmVhZC0tO2J5dGVzUmVhZCsrfXZhciBlcnI9X3JlYWQoc3RyZWFtT2JqLmZkLHB0cixieXRlc1RvUmVhZCk7aWYoZXJyPT0tMSl7aWYoc3RyZWFtT2JqKXN0cmVhbU9iai5lcnJvcj10cnVlO3JldHVybiAwfWJ5dGVzUmVhZCs9ZXJyO2lmKGJ5dGVzUmVhZDxieXRlc1RvUmVhZClzdHJlYW1PYmouZW9mPXRydWU7cmV0dXJuIE1hdGguZmxvb3IoYnl0ZXNSZWFkL3NpemUpfWZ1bmN0aW9uIF9mZ2V0YyhzdHJlYW0pe3ZhciBzdHJlYW1PYmo9RlMuZ2V0U3RyZWFtRnJvbVB0cihzdHJlYW0pO2lmKCFzdHJlYW1PYmopcmV0dXJuLTE7aWYoc3RyZWFtT2JqLmVvZnx8c3RyZWFtT2JqLmVycm9yKXJldHVybi0xO3ZhciByZXQ9X2ZyZWFkKF9mZ2V0Yy5yZXQsMSwxLHN0cmVhbSk7aWYocmV0PT0wKXtyZXR1cm4tMX1lbHNlIGlmKHJldD09LTEpe3N0cmVhbU9iai5lcnJvcj10cnVlO3JldHVybi0xfWVsc2V7cmV0dXJuIEhFQVBVOFtfZmdldGMucmV0Pj4wXX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZW12YWwoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfZW12YWwiKTthYm9ydCgtMSl9ZnVuY3Rpb24gX19fZ3h4X3BlcnNvbmFsaXR5X3YwKCl7fWZ1bmN0aW9uIF9zeXNjb25mKG5hbWUpe3N3aXRjaChuYW1lKXtjYXNlIDMwOnJldHVybiBQQUdFX1NJWkU7Y2FzZSAxMzI6Y2FzZSAxMzM6Y2FzZSAxMjpjYXNlIDEzNzpjYXNlIDEzODpjYXNlIDE1OmNhc2UgMjM1OmNhc2UgMTY6Y2FzZSAxNzpjYXNlIDE4OmNhc2UgMTk6Y2FzZSAyMDpjYXNlIDE0OTpjYXNlIDEzOmNhc2UgMTA6Y2FzZSAyMzY6Y2FzZSAxNTM6Y2FzZSA5OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDE1OTpjYXNlIDE1NDpjYXNlIDE0OmNhc2UgNzc6Y2FzZSA3ODpjYXNlIDEzOTpjYXNlIDgwOmNhc2UgODE6Y2FzZSA3OTpjYXNlIDgyOmNhc2UgNjg6Y2FzZSA2NzpjYXNlIDE2NDpjYXNlIDExOmNhc2UgMjk6Y2FzZSA0NzpjYXNlIDQ4OmNhc2UgOTU6Y2FzZSA1MjpjYXNlIDUxOmNhc2UgNDY6cmV0dXJuIDIwMDgwOTtjYXNlIDI3OmNhc2UgMjQ2OmNhc2UgMTI3OmNhc2UgMTI4OmNhc2UgMjM6Y2FzZSAyNDpjYXNlIDE2MDpjYXNlIDE2MTpjYXNlIDE4MTpjYXNlIDE4MjpjYXNlIDI0MjpjYXNlIDE4MzpjYXNlIDE4NDpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0NTpjYXNlIDE2NTpjYXNlIDE3ODpjYXNlIDE3OTpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSAxNjg6Y2FzZSAxNjk6Y2FzZSAxNzU6Y2FzZSAxNzA6Y2FzZSAxNzE6Y2FzZSAxNzI6Y2FzZSA5NzpjYXNlIDc2OmNhc2UgMzI6Y2FzZSAxNzM6Y2FzZSAzNTpyZXR1cm4tMTtjYXNlIDE3NjpjYXNlIDE3NzpjYXNlIDc6Y2FzZSAxNTU6Y2FzZSA4OmNhc2UgMTU3OmNhc2UgMTI1OmNhc2UgMTI2OmNhc2UgOTI6Y2FzZSA5MzpjYXNlIDEyOTpjYXNlIDEzMDpjYXNlIDEzMTpjYXNlIDk0OmNhc2UgOTE6cmV0dXJuIDE7Y2FzZSA3NDpjYXNlIDYwOmNhc2UgNjk6Y2FzZSA3MDpjYXNlIDQ6cmV0dXJuIDEwMjQ7Y2FzZSAzMTpjYXNlIDQyOmNhc2UgNzI6cmV0dXJuIDMyO2Nhc2UgODc6Y2FzZSAyNjpjYXNlIDMzOnJldHVybiAyMTQ3NDgzNjQ3O2Nhc2UgMzQ6Y2FzZSAxOnJldHVybiA0NzgzOTtjYXNlIDM4OmNhc2UgMzY6cmV0dXJuIDk5O2Nhc2UgNDM6Y2FzZSAzNzpyZXR1cm4gMjA0ODtjYXNlIDA6cmV0dXJuIDIwOTcxNTI7Y2FzZSAzOnJldHVybiA2NTUzNjtjYXNlIDI4OnJldHVybiAzMjc2ODtjYXNlIDQ0OnJldHVybiAzMjc2NztjYXNlIDc1OnJldHVybiAxNjM4NDtjYXNlIDM5OnJldHVybiAxZTM7Y2FzZSA4OTpyZXR1cm4gNzAwO2Nhc2UgNzE6cmV0dXJuIDI1NjtjYXNlIDQwOnJldHVybiAyNTU7Y2FzZSAyOnJldHVybiAxMDA7Y2FzZSAxODA6cmV0dXJuIDY0O2Nhc2UgMjU6cmV0dXJuIDIwO2Nhc2UgNTpyZXR1cm4gMTY7Y2FzZSA2OnJldHVybiA2O2Nhc2UgNzM6cmV0dXJuIDQ7Y2FzZSA4NDpyZXR1cm4gMX1fX19zZXRFcnJObyhFUlJOT19DT0RFUy5FSU5WQUwpO3JldHVybi0xfU1vZHVsZVsiX2JpdHNoaWZ0NjRMc2hyIl09X2JpdHNoaWZ0NjRMc2hyO2Z1bmN0aW9uIF9wdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCl7cmV0dXJuIDB9ZnVuY3Rpb24gX19leGl0KHN0YXR1cyl7TW9kdWxlWyJleGl0Il0oc3RhdHVzKX1mdW5jdGlvbiBfZXhpdChzdGF0dXMpe19fZXhpdChzdGF0dXMpfWZ1bmN0aW9uIF9fWlN0OXRlcm1pbmF0ZXYoKXtfZXhpdCgtMTIzNCl9ZnVuY3Rpb24gX3B0aHJlYWRfbXV0ZXhfdW5sb2NrKCl7fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX21lbWNweV9iaWcoZGVzdCxzcmMsbnVtKXtIRUFQVTguc2V0KEhFQVBVOC5zdWJhcnJheShzcmMsc3JjK251bSksZGVzdCk7cmV0dXJuIGRlc3R9TW9kdWxlWyJfbWVtY3B5Il09X21lbWNweTtmdW5jdGlvbiBfc2JyayhieXRlcyl7dmFyIHNlbGY9X3Nicms7aWYoIXNlbGYuY2FsbGVkKXtEWU5BTUlDVE9QPWFsaWduTWVtb3J5UGFnZShEWU5BTUlDVE9QKTtzZWxmLmNhbGxlZD10cnVlO2Fzc2VydChSdW50aW1lLmR5bmFtaWNBbGxvYyk7c2VsZi5hbGxvYz1SdW50aW1lLmR5bmFtaWNBbGxvYztSdW50aW1lLmR5bmFtaWNBbGxvYz0oZnVuY3Rpb24oKXthYm9ydCgiY2Fubm90IGR5bmFtaWNhbGx5IGFsbG9jYXRlLCBzYnJrIG5vdyBoYXMgY29udHJvbCIpfSl9dmFyIHJldD1EWU5BTUlDVE9QO2lmKGJ5dGVzIT0wKXNlbGYuYWxsb2MoYnl0ZXMpO3JldHVybiByZXR9ZnVuY3Rpb24gX25ld2xvY2FsZShtYXNrLGxvY2FsZSxiYXNlKXtyZXR1cm4gX21hbGxvYyg0KX1Nb2R1bGVbIl9tZW1tb3ZlIl09X21lbW1vdmU7ZnVuY3Rpb24gX19fZXJybm9fbG9jYXRpb24oKXtyZXR1cm4gX19fZXJybm9fc3RhdGV9ZnVuY3Rpb24gX3N0cmVycm9yX3IoZXJybnVtLHN0cmVycmJ1ZixidWZsZW4pe2lmKGVycm51bSBpbiBFUlJOT19NRVNTQUdFUyl7aWYoRVJSTk9fTUVTU0FHRVNbZXJybnVtXS5sZW5ndGg+YnVmbGVuLTEpe3JldHVybiBfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FUkFOR0UpfWVsc2V7dmFyIG1zZz1FUlJOT19NRVNTQUdFU1tlcnJudW1dO3dyaXRlQXNjaWlUb01lbW9yeShtc2csc3RyZXJyYnVmKTtyZXR1cm4gMH19ZWxzZXtyZXR1cm4gX19fc2V0RXJyTm8oRVJSTk9fQ09ERVMuRUlOVkFMKX19ZnVuY3Rpb24gX3N0cmVycm9yKGVycm51bSl7aWYoIV9zdHJlcnJvci5idWZmZXIpX3N0cmVycm9yLmJ1ZmZlcj1fbWFsbG9jKDI1Nik7X3N0cmVycm9yX3IoZXJybnVtLF9zdHJlcnJvci5idWZmZXIsMjU2KTtyZXR1cm4gX3N0cmVycm9yLmJ1ZmZlcn1mdW5jdGlvbiBfcHRocmVhZF9tdXRleF9kZXN0cm95KCl7fWZ1bmN0aW9uIF9jYXRjbG9zZShjYXRkKXtyZXR1cm4gMH1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldygpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfX19jeGFfZ3VhcmRfcmVsZWFzZSgpe31mdW5jdGlvbiBfdW5nZXRjKGMsc3RyZWFtKXtzdHJlYW09RlMuZ2V0U3RyZWFtRnJvbVB0cihzdHJlYW0pO2lmKCFzdHJlYW0pe3JldHVybi0xfWlmKGM9PT0tMSl7cmV0dXJuIGN9Yz11blNpZ24oYyYyNTUpO3N0cmVhbS51bmdvdHRlbi5wdXNoKGMpO3N0cmVhbS5lb2Y9ZmFsc2U7cmV0dXJuIGN9ZnVuY3Rpb24gX3VzZWxvY2FsZShsb2NhbGUpe3JldHVybiAwfWZ1bmN0aW9uIF92c25wcmludGYocyxuLGZvcm1hdCx2YV9hcmcpe3JldHVybiBfc25wcmludGYocyxuLGZvcm1hdCxIRUFQMzJbdmFfYXJnPj4yXSl9ZnVuY3Rpb24gX19nZXRGbG9hdCh0ZXh0KXtyZXR1cm4vXlsrLV0/WzAtOV0qXC4/WzAtOV0rKFtlRV1bKy1dP1swLTldKyk/Ly5leGVjKHRleHQpfWZ1bmN0aW9uIF9fc2NhblN0cmluZyhmb3JtYXQsZ2V0LHVuZ2V0LHZhcmFyZ3Mpe2lmKCFfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSl7X19zY2FuU3RyaW5nLndoaXRlU3BhY2U9e307X19zY2FuU3RyaW5nLndoaXRlU3BhY2VbMzJdPTE7X19zY2FuU3RyaW5nLndoaXRlU3BhY2VbOV09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMF09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMV09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMl09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxM109MX1mb3JtYXQ9UG9pbnRlcl9zdHJpbmdpZnkoZm9ybWF0KTt2YXIgc29GYXI9MDtpZihmb3JtYXQuaW5kZXhPZigiJW4iKT49MCl7dmFyIF9nZXQ9Z2V0O2dldD1mdW5jdGlvbiBnZXQoKXtzb0ZhcisrO3JldHVybiBfZ2V0KCl9O3ZhciBfdW5nZXQ9dW5nZXQ7dW5nZXQ9ZnVuY3Rpb24gdW5nZXQoKXtzb0Zhci0tO3JldHVybiBfdW5nZXQoKX19dmFyIGZvcm1hdEluZGV4PTA7dmFyIGFyZ3NpPTA7dmFyIGZpZWxkcz0wO3ZhciBhcmdJbmRleD0wO3ZhciBuZXh0O21haW5Mb29wOmZvcih2YXIgZm9ybWF0SW5kZXg9MDtmb3JtYXRJbmRleDxmb3JtYXQubGVuZ3RoOyl7aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIiYmZm9ybWF0W2Zvcm1hdEluZGV4KzFdPT0ibiIpe3ZhciBhcmdQdHI9SEVBUDMyW3ZhcmFyZ3MrYXJnSW5kZXg+PjJdO2FyZ0luZGV4Kz1SdW50aW1lLmdldEFsaWduU2l6ZSgidm9pZCoiLG51bGwsdHJ1ZSk7SEVBUDMyW2FyZ1B0cj4+Ml09c29GYXI7Zm9ybWF0SW5kZXgrPTI7Y29udGludWV9aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIil7dmFyIG5leHRDPWZvcm1hdC5pbmRleE9mKCJjIixmb3JtYXRJbmRleCsxKTtpZihuZXh0Qz4wKXt2YXIgbWF4eD0xO2lmKG5leHRDPmZvcm1hdEluZGV4KzEpe3ZhciBzdWI9Zm9ybWF0LnN1YnN0cmluZyhmb3JtYXRJbmRleCsxLG5leHRDKTttYXh4PXBhcnNlSW50KHN1Yik7aWYobWF4eCE9c3ViKW1heHg9MH1pZihtYXh4KXt2YXIgYXJnUHRyPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXTthcmdJbmRleCs9UnVudGltZS5nZXRBbGlnblNpemUoInZvaWQqIixudWxsLHRydWUpO2ZpZWxkcysrO2Zvcih2YXIgaT0wO2k8bWF4eDtpKyspe25leHQ9Z2V0KCk7SEVBUDhbYXJnUHRyKys+PjBdPW5leHQ7aWYobmV4dD09PTApcmV0dXJuIGk+MD9maWVsZHM6ZmllbGRzLTF9Zm9ybWF0SW5kZXgrPW5leHRDLWZvcm1hdEluZGV4KzE7Y29udGludWV9fX1pZihmb3JtYXRbZm9ybWF0SW5kZXhdPT09IiUiJiZmb3JtYXQuaW5kZXhPZigiWyIsZm9ybWF0SW5kZXgrMSk+MCl7dmFyIG1hdGNoPS9cJShbMC05XSopXFsoXF4pPyhcXT9bXlxdXSopXF0vLmV4ZWMoZm9ybWF0LnN1YnN0cmluZyhmb3JtYXRJbmRleCkpO2lmKG1hdGNoKXt2YXIgbWF4TnVtQ2hhcmFjdGVycz1wYXJzZUludChtYXRjaFsxXSl8fEluZmluaXR5O3ZhciBuZWdhdGVTY2FuTGlzdD1tYXRjaFsyXT09PSJeIjt2YXIgc2Nhbkxpc3Q9bWF0Y2hbM107dmFyIG1pZGRsZURhc2hNYXRjaDt3aGlsZShtaWRkbGVEYXNoTWF0Y2g9LyhbXlwtXSlcLShbXlwtXSkvLmV4ZWMoc2Nhbkxpc3QpKXt2YXIgcmFuZ2VTdGFydENoYXJDb2RlPW1pZGRsZURhc2hNYXRjaFsxXS5jaGFyQ29kZUF0KDApO3ZhciByYW5nZUVuZENoYXJDb2RlPW1pZGRsZURhc2hNYXRjaFsyXS5jaGFyQ29kZUF0KDApO2Zvcih2YXIgZXhwYW5kZWQ9IiI7cmFuZ2VTdGFydENoYXJDb2RlPD1yYW5nZUVuZENoYXJDb2RlO2V4cGFuZGVkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHJhbmdlU3RhcnRDaGFyQ29kZSsrKSk7c2Nhbkxpc3Q9c2Nhbkxpc3QucmVwbGFjZShtaWRkbGVEYXNoTWF0Y2hbMV0rIi0iK21pZGRsZURhc2hNYXRjaFsyXSxleHBhbmRlZCl9dmFyIGFyZ1B0cj1IRUFQMzJbdmFyYXJncythcmdJbmRleD4+Ml07YXJnSW5kZXgrPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKCJ2b2lkKiIsbnVsbCx0cnVlKTtmaWVsZHMrKztmb3IodmFyIGk9MDtpPG1heE51bUNoYXJhY3RlcnM7aSsrKXtuZXh0PWdldCgpO2lmKG5lZ2F0ZVNjYW5MaXN0KXtpZihzY2FuTGlzdC5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpPDApe0hFQVA4W2FyZ1B0cisrPj4wXT1uZXh0fWVsc2V7dW5nZXQoKTticmVha319ZWxzZXtpZihzY2FuTGlzdC5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpPj0wKXtIRUFQOFthcmdQdHIrKz4+MF09bmV4dH1lbHNle3VuZ2V0KCk7YnJlYWt9fX1IRUFQOFthcmdQdHIrKz4+MF09MDtmb3JtYXRJbmRleCs9bWF0Y2hbMF0ubGVuZ3RoO2NvbnRpbnVlfX13aGlsZSgxKXtuZXh0PWdldCgpO2lmKG5leHQ9PTApcmV0dXJuIGZpZWxkcztpZighKG5leHQgaW4gX19zY2FuU3RyaW5nLndoaXRlU3BhY2UpKWJyZWFrfXVuZ2V0KCk7aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIil7Zm9ybWF0SW5kZXgrKzt2YXIgc3VwcHJlc3NBc3NpZ25tZW50PWZhbHNlO2lmKGZvcm1hdFtmb3JtYXRJbmRleF09PSIqIil7c3VwcHJlc3NBc3NpZ25tZW50PXRydWU7Zm9ybWF0SW5kZXgrK312YXIgbWF4U3BlY2lmaWVyU3RhcnQ9Zm9ybWF0SW5kZXg7d2hpbGUoZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApPj00OCYmZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApPD01Nyl7Zm9ybWF0SW5kZXgrK312YXIgbWF4XztpZihmb3JtYXRJbmRleCE9bWF4U3BlY2lmaWVyU3RhcnQpe21heF89cGFyc2VJbnQoZm9ybWF0LnNsaWNlKG1heFNwZWNpZmllclN0YXJ0LGZvcm1hdEluZGV4KSwxMCl9dmFyIGxvbmdfPWZhbHNlO3ZhciBoYWxmPWZhbHNlO3ZhciBxdWFydGVyPWZhbHNlO3ZhciBsb25nTG9uZz1mYWxzZTtpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0ibCIpe2xvbmdfPXRydWU7Zm9ybWF0SW5kZXgrKztpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0ibCIpe2xvbmdMb25nPXRydWU7Zm9ybWF0SW5kZXgrK319ZWxzZSBpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0iaCIpe2hhbGY9dHJ1ZTtmb3JtYXRJbmRleCsrO2lmKGZvcm1hdFtmb3JtYXRJbmRleF09PSJoIil7cXVhcnRlcj10cnVlO2Zvcm1hdEluZGV4Kyt9fXZhciB0eXBlPWZvcm1hdFtmb3JtYXRJbmRleF07Zm9ybWF0SW5kZXgrKzt2YXIgY3Vycj0wO3ZhciBidWZmZXI9W107aWYodHlwZT09ImYifHx0eXBlPT0iZSJ8fHR5cGU9PSJnInx8dHlwZT09IkYifHx0eXBlPT0iRSJ8fHR5cGU9PSJHIil7bmV4dD1nZXQoKTt3aGlsZShuZXh0PjAmJiEobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSkpe2J1ZmZlci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpO25leHQ9Z2V0KCl9dmFyIG09X19nZXRGbG9hdChidWZmZXIuam9pbigiIikpO3ZhciBsYXN0PW0/bVswXS5sZW5ndGg6MDtmb3IodmFyIGk9MDtpPGJ1ZmZlci5sZW5ndGgtbGFzdCsxO2krKyl7dW5nZXQoKX1idWZmZXIubGVuZ3RoPWxhc3R9ZWxzZXtuZXh0PWdldCgpO3ZhciBmaXJzdD10cnVlO2lmKCh0eXBlPT0ieCJ8fHR5cGU9PSJYIikmJm5leHQ9PTQ4KXt2YXIgcGVlaz1nZXQoKTtpZihwZWVrPT0xMjB8fHBlZWs9PTg4KXtuZXh0PWdldCgpfWVsc2V7dW5nZXQoKX19d2hpbGUoKGN1cnI8bWF4X3x8aXNOYU4obWF4XykpJiZuZXh0PjApe2lmKCEobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSkmJih0eXBlPT0icyJ8fCh0eXBlPT09ImQifHx0eXBlPT0idSJ8fHR5cGU9PSJpIikmJihuZXh0Pj00OCYmbmV4dDw9NTd8fGZpcnN0JiZuZXh0PT00NSl8fCh0eXBlPT09IngifHx0eXBlPT09IlgiKSYmKG5leHQ+PTQ4JiZuZXh0PD01N3x8bmV4dD49OTcmJm5leHQ8PTEwMnx8bmV4dD49NjUmJm5leHQ8PTcwKSkmJihmb3JtYXRJbmRleD49Zm9ybWF0Lmxlbmd0aHx8bmV4dCE9PWZvcm1hdFtmb3JtYXRJbmRleF0uY2hhckNvZGVBdCgwKSkpe2J1ZmZlci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpO25leHQ9Z2V0KCk7Y3VycisrO2ZpcnN0PWZhbHNlfWVsc2V7YnJlYWt9fXVuZ2V0KCl9aWYoYnVmZmVyLmxlbmd0aD09PTApcmV0dXJuIDA7aWYoc3VwcHJlc3NBc3NpZ25tZW50KWNvbnRpbnVlO3ZhciB0ZXh0PWJ1ZmZlci5qb2luKCIiKTt2YXIgYXJnUHRyPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXTthcmdJbmRleCs9UnVudGltZS5nZXRBbGlnblNpemUoInZvaWQqIixudWxsLHRydWUpO3ZhciBiYXNlPTEwO3N3aXRjaCh0eXBlKXtjYXNlIlgiOmNhc2UieCI6YmFzZT0xNjtjYXNlImQiOmNhc2UidSI6Y2FzZSJpIjppZihxdWFydGVyKXtIRUFQOFthcmdQdHI+PjBdPXBhcnNlSW50KHRleHQsYmFzZSl9ZWxzZSBpZihoYWxmKXtIRUFQMTZbYXJnUHRyPj4xXT1wYXJzZUludCh0ZXh0LGJhc2UpfWVsc2UgaWYobG9uZ0xvbmcpe3RlbXBJNjQ9W3BhcnNlSW50KHRleHQsYmFzZSk+Pj4wLCh0ZW1wRG91YmxlPXBhcnNlSW50KHRleHQsYmFzZSksK01hdGhfYWJzKHRlbXBEb3VibGUpPj0rMT90ZW1wRG91YmxlPiswPyhNYXRoX21pbigrTWF0aF9mbG9vcih0ZW1wRG91YmxlLys0Mjk0OTY3Mjk2KSwrNDI5NDk2NzI5NSl8MCk+Pj4wOn5+K01hdGhfY2VpbCgodGVtcERvdWJsZS0gKyh+fnRlbXBEb3VibGU+Pj4wKSkvKzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2FyZ1B0cj4+Ml09dGVtcEk2NFswXSxIRUFQMzJbYXJnUHRyKzQ+PjJdPXRlbXBJNjRbMV19ZWxzZXtIRUFQMzJbYXJnUHRyPj4yXT1wYXJzZUludCh0ZXh0LGJhc2UpfWJyZWFrO2Nhc2UiRiI6Y2FzZSJmIjpjYXNlIkUiOmNhc2UiZSI6Y2FzZSJHIjpjYXNlImciOmNhc2UiRSI6aWYobG9uZ18pe0hFQVBGNjRbYXJnUHRyPj4zXT1wYXJzZUZsb2F0KHRleHQpfWVsc2V7SEVBUEYzMlthcmdQdHI+PjJdPXBhcnNlRmxvYXQodGV4dCl9YnJlYWs7Y2FzZSJzIjp2YXIgYXJyYXk9aW50QXJyYXlGcm9tU3RyaW5nKHRleHQpO2Zvcih2YXIgaj0wO2o8YXJyYXkubGVuZ3RoO2orKyl7SEVBUDhbYXJnUHRyK2o+PjBdPWFycmF5W2pdfWJyZWFrfWZpZWxkcysrfWVsc2UgaWYoZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApaW4gX19zY2FuU3RyaW5nLndoaXRlU3BhY2Upe25leHQ9Z2V0KCk7d2hpbGUobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSl7aWYobmV4dDw9MClicmVhayBtYWluTG9vcDtuZXh0PWdldCgpfXVuZ2V0KG5leHQpO2Zvcm1hdEluZGV4Kyt9ZWxzZXtuZXh0PWdldCgpO2lmKGZvcm1hdFtmb3JtYXRJbmRleF0uY2hhckNvZGVBdCgwKSE9PW5leHQpe3VuZ2V0KG5leHQpO2JyZWFrIG1haW5Mb29wfWZvcm1hdEluZGV4Kyt9fXJldHVybiBmaWVsZHN9ZnVuY3Rpb24gX3NzY2FuZihzLGZvcm1hdCx2YXJhcmdzKXt2YXIgaW5kZXg9MDtmdW5jdGlvbiBnZXQoKXtyZXR1cm4gSEVBUDhbcytpbmRleCsrPj4wXX1mdW5jdGlvbiB1bmdldCgpe2luZGV4LS19cmV0dXJuIF9fc2NhblN0cmluZyhmb3JtYXQsZ2V0LHVuZ2V0LHZhcmFyZ3MpfWZ1bmN0aW9uIF92c3NjYW5mKHMsZm9ybWF0LHZhX2FyZyl7cmV0dXJuIF9zc2NhbmYocyxmb3JtYXQsSEVBUDMyW3ZhX2FyZz4+Ml0pfWZ1bmN0aW9uIF9fX2Fzc2VydF9mYWlsKGNvbmRpdGlvbixmaWxlbmFtZSxsaW5lLGZ1bmMpe0FCT1JUPXRydWU7dGhyb3ciQXNzZXJ0aW9uIGZhaWxlZDogIitQb2ludGVyX3N0cmluZ2lmeShjb25kaXRpb24pKyIsIGF0OiAiK1tmaWxlbmFtZT9Qb2ludGVyX3N0cmluZ2lmeShmaWxlbmFtZSk6InVua25vd24gZmlsZW5hbWUiLGxpbmUsZnVuYz9Qb2ludGVyX3N0cmluZ2lmeShmdW5jKToidW5rbm93biBmdW5jdGlvbiJdKyIgYXQgIitzdGFja1RyYWNlKCl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdm9pZCgpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl92b2lkIik7YWJvcnQoLTEpfU1vZHVsZVsiX21lbXNldCJdPV9tZW1zZXQ7dmFyIF9CSXRvRD10cnVlO2Z1bmN0aW9uIF9faXNMZWFwWWVhcih5ZWFyKXtyZXR1cm4geWVhciU0PT09MCYmKHllYXIlMTAwIT09MHx8eWVhciU0MDA9PT0wKX1mdW5jdGlvbiBfX2FycmF5U3VtKGFycmF5LGluZGV4KXt2YXIgc3VtPTA7Zm9yKHZhciBpPTA7aTw9aW5kZXg7c3VtKz1hcnJheVtpKytdKTtyZXR1cm4gc3VtfXZhciBfX01PTlRIX0RBWVNfTEVBUD1bMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO3ZhciBfX01PTlRIX0RBWVNfUkVHVUxBUj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIF9fYWRkRGF5cyhkYXRlLGRheXMpe3ZhciBuZXdEYXRlPW5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTt3aGlsZShkYXlzPjApe3ZhciBsZWFwPV9faXNMZWFwWWVhcihuZXdEYXRlLmdldEZ1bGxZZWFyKCkpO3ZhciBjdXJyZW50TW9udGg9bmV3RGF0ZS5nZXRNb250aCgpO3ZhciBkYXlzSW5DdXJyZW50TW9udGg9KGxlYXA/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIpW2N1cnJlbnRNb250aF07aWYoZGF5cz5kYXlzSW5DdXJyZW50TW9udGgtbmV3RGF0ZS5nZXREYXRlKCkpe2RheXMtPWRheXNJbkN1cnJlbnRNb250aC1uZXdEYXRlLmdldERhdGUoKSsxO25ld0RhdGUuc2V0RGF0ZSgxKTtpZihjdXJyZW50TW9udGg8MTEpe25ld0RhdGUuc2V0TW9udGgoY3VycmVudE1vbnRoKzEpfWVsc2V7bmV3RGF0ZS5zZXRNb250aCgwKTtuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSsxKX19ZWxzZXtuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkrZGF5cyk7cmV0dXJuIG5ld0RhdGV9fXJldHVybiBuZXdEYXRlfWZ1bmN0aW9uIF9zdHJmdGltZShzLG1heHNpemUsZm9ybWF0LHRtKXt2YXIgZGF0ZT17dG1fc2VjOkhFQVAzMlt0bT4+Ml0sdG1fbWluOkhFQVAzMlt0bSs0Pj4yXSx0bV9ob3VyOkhFQVAzMlt0bSs4Pj4yXSx0bV9tZGF5OkhFQVAzMlt0bSsxMj4+Ml0sdG1fbW9uOkhFQVAzMlt0bSsxNj4+Ml0sdG1feWVhcjpIRUFQMzJbdG0rMjA+PjJdLHRtX3dkYXk6SEVBUDMyW3RtKzI0Pj4yXSx0bV95ZGF5OkhFQVAzMlt0bSsyOD4+Ml0sdG1faXNkc3Q6SEVBUDMyW3RtKzMyPj4yXX07dmFyIHBhdHRlcm49UG9pbnRlcl9zdHJpbmdpZnkoZm9ybWF0KTt2YXIgRVhQQU5TSU9OX1JVTEVTXzE9eyIlYyI6IiVhICViICVkICVIOiVNOiVTICVZIiwiJUQiOiIlbS8lZC8leSIsIiVGIjoiJVktJW0tJWQiLCIlaCI6IiViIiwiJXIiOiIlSTolTTolUyAlcCIsIiVSIjoiJUg6JU0iLCIlVCI6IiVIOiVNOiVTIiwiJXgiOiIlbS8lZC8leSIsIiVYIjoiJUg6JU06JVMifTtmb3IodmFyIHJ1bGUgaW4gRVhQQU5TSU9OX1JVTEVTXzEpe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18xW3J1bGVdKX12YXIgV0VFS0RBWVM9WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdO3ZhciBNT05USFM9WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdO2Z1bmN0aW9uIGxlYWRpbmdTb21ldGhpbmcodmFsdWUsZGlnaXRzLGNoYXJhY3Rlcil7dmFyIHN0cj10eXBlb2YgdmFsdWU9PT0ibnVtYmVyIj92YWx1ZS50b1N0cmluZygpOnZhbHVlfHwiIjt3aGlsZShzdHIubGVuZ3RoPGRpZ2l0cyl7c3RyPWNoYXJhY3RlclswXStzdHJ9cmV0dXJuIHN0cn1mdW5jdGlvbiBsZWFkaW5nTnVsbHModmFsdWUsZGlnaXRzKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyh2YWx1ZSxkaWdpdHMsIjAiKX1mdW5jdGlvbiBjb21wYXJlQnlEYXkoZGF0ZTEsZGF0ZTIpe2Z1bmN0aW9uIHNnbih2YWx1ZSl7cmV0dXJuIHZhbHVlPDA/LTE6dmFsdWU+MD8xOjB9dmFyIGNvbXBhcmU7aWYoKGNvbXBhcmU9c2duKGRhdGUxLmdldEZ1bGxZZWFyKCktZGF0ZTIuZ2V0RnVsbFllYXIoKSkpPT09MCl7aWYoKGNvbXBhcmU9c2duKGRhdGUxLmdldE1vbnRoKCktZGF0ZTIuZ2V0TW9udGgoKSkpPT09MCl7Y29tcGFyZT1zZ24oZGF0ZTEuZ2V0RGF0ZSgpLWRhdGUyLmdldERhdGUoKSl9fXJldHVybiBjb21wYXJlfWZ1bmN0aW9uIGdldEZpcnN0V2Vla1N0YXJ0RGF0ZShqYW5Gb3VydGgpe3N3aXRjaChqYW5Gb3VydGguZ2V0RGF5KCkpe2Nhc2UgMDpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCktMSwxMSwyOSk7Y2FzZSAxOnJldHVybiBqYW5Gb3VydGg7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSwwLDMpO2Nhc2UgMzpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCksMCwyKTtjYXNlIDQ6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKS0xLDExLDMxKTtjYXNlIDY6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLTEsMTEsMzApfX1mdW5jdGlvbiBnZXRXZWVrQmFzZWRZZWFyKGRhdGUpe3ZhciB0aGlzRGF0ZT1fX2FkZERheXMobmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsMCwxKSxkYXRlLnRtX3lkYXkpO3ZhciBqYW5Gb3VydGhUaGlzWWVhcj1uZXcgRGF0ZSh0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLDAsNCk7dmFyIGphbkZvdXJ0aE5leHRZZWFyPW5ldyBEYXRlKHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkrMSwwLDQpO3ZhciBmaXJzdFdlZWtTdGFydFRoaXNZZWFyPWdldEZpcnN0V2Vla1N0YXJ0RGF0ZShqYW5Gb3VydGhUaGlzWWVhcik7dmFyIGZpcnN0V2Vla1N0YXJ0TmV4dFllYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aE5leHRZZWFyKTtpZihjb21wYXJlQnlEYXkoZmlyc3RXZWVrU3RhcnRUaGlzWWVhcix0aGlzRGF0ZSk8PTApe2lmKGNvbXBhcmVCeURheShmaXJzdFdlZWtTdGFydE5leHRZZWFyLHRoaXNEYXRlKTw9MCl7cmV0dXJuIHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkrMX1lbHNle3JldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpfX1lbHNle3JldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLTF9fXZhciBFWFBBTlNJT05fUlVMRVNfMj17IiVhIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIFdFRUtEQVlTW2RhdGUudG1fd2RheV0uc3Vic3RyaW5nKDAsMyl9KSwiJUEiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gV0VFS0RBWVNbZGF0ZS50bV93ZGF5XX0pLCIlYiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBNT05USFNbZGF0ZS50bV9tb25dLnN1YnN0cmluZygwLDMpfSksIiVCIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIE1PTlRIU1tkYXRlLnRtX21vbl19KSwiJUMiOihmdW5jdGlvbihkYXRlKXt2YXIgeWVhcj1kYXRlLnRtX3llYXIrMTkwMDtyZXR1cm4gbGVhZGluZ051bGxzKE1hdGguZmxvb3IoeWVhci8xMDApLDIpfSksIiVkIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX21kYXksMil9KSwiJWUiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyhkYXRlLnRtX21kYXksMiwiICIpfSksIiVnIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGdldFdlZWtCYXNlZFllYXIoZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9KSwiJUciOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gZ2V0V2Vla0Jhc2VkWWVhcihkYXRlKX0pLCIlSCI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9ob3VyLDIpfSksIiVJIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX2hvdXI8MTM/ZGF0ZS50bV9ob3VyOmRhdGUudG1faG91ci0xMiwyKX0pLCIlaiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tZGF5K19fYXJyYXlTdW0oX19pc0xlYXBZZWFyKGRhdGUudG1feWVhcisxOTAwKT9fX01PTlRIX0RBWVNfTEVBUDpfX01PTlRIX0RBWVNfUkVHVUxBUixkYXRlLnRtX21vbi0xKSwzKX0pLCIlbSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tb24rMSwyKX0pLCIlTSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9taW4sMil9KSwiJW4iOihmdW5jdGlvbigpe3JldHVybiJcbiJ9KSwiJXAiOihmdW5jdGlvbihkYXRlKXtpZihkYXRlLnRtX2hvdXI+MCYmZGF0ZS50bV9ob3VyPDEzKXtyZXR1cm4iQU0ifWVsc2V7cmV0dXJuIlBNIn19KSwiJVMiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fc2VjLDIpfSksIiV0IjooZnVuY3Rpb24oKXtyZXR1cm4iXHQifSksIiV1IjooZnVuY3Rpb24oZGF0ZSl7dmFyIGRheT1uZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCxkYXRlLnRtX21vbisxLGRhdGUudG1fbWRheSwwLDAsMCwwKTtyZXR1cm4gZGF5LmdldERheSgpfHw3fSksIiVVIjooZnVuY3Rpb24oZGF0ZSl7dmFyIGphbkZpcnN0PW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLDAsMSk7dmFyIGZpcnN0U3VuZGF5PWphbkZpcnN0LmdldERheSgpPT09MD9qYW5GaXJzdDpfX2FkZERheXMoamFuRmlyc3QsNy1qYW5GaXJzdC5nZXREYXkoKSk7dmFyIGVuZERhdGU9bmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsZGF0ZS50bV9tb24sZGF0ZS50bV9tZGF5KTtpZihjb21wYXJlQnlEYXkoZmlyc3RTdW5kYXksZW5kRGF0ZSk8MCl7dmFyIGZlYnJ1YXJ5Rmlyc3RVbnRpbEVuZE1vbnRoPV9fYXJyYXlTdW0oX19pc0xlYXBZZWFyKGVuZERhdGUuZ2V0RnVsbFllYXIoKSk/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIsZW5kRGF0ZS5nZXRNb250aCgpLTEpLTMxO3ZhciBmaXJzdFN1bmRheVVudGlsRW5kSmFudWFyeT0zMS1maXJzdFN1bmRheS5nZXREYXRlKCk7dmFyIGRheXM9Zmlyc3RTdW5kYXlVbnRpbEVuZEphbnVhcnkrZmVicnVhcnlGaXJzdFVudGlsRW5kTW9udGgrZW5kRGF0ZS5nZXREYXRlKCk7cmV0dXJuIGxlYWRpbmdOdWxscyhNYXRoLmNlaWwoZGF5cy83KSwyKX1yZXR1cm4gY29tcGFyZUJ5RGF5KGZpcnN0U3VuZGF5LGphbkZpcnN0KT09PTA/IjAxIjoiMDAifSksIiVWIjooZnVuY3Rpb24oZGF0ZSl7dmFyIGphbkZvdXJ0aFRoaXNZZWFyPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLDAsNCk7dmFyIGphbkZvdXJ0aE5leHRZZWFyPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAxLDAsNCk7dmFyIGZpcnN0V2Vla1N0YXJ0VGhpc1llYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aFRoaXNZZWFyKTt2YXIgZmlyc3RXZWVrU3RhcnROZXh0WWVhcj1nZXRGaXJzdFdlZWtTdGFydERhdGUoamFuRm91cnRoTmV4dFllYXIpO3ZhciBlbmREYXRlPV9fYWRkRGF5cyhuZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCwwLDEpLGRhdGUudG1feWRheSk7aWYoY29tcGFyZUJ5RGF5KGVuZERhdGUsZmlyc3RXZWVrU3RhcnRUaGlzWWVhcik8MCl7cmV0dXJuIjUzIn1pZihjb21wYXJlQnlEYXkoZmlyc3RXZWVrU3RhcnROZXh0WWVhcixlbmREYXRlKTw9MCl7cmV0dXJuIjAxIn12YXIgZGF5c0RpZmZlcmVuY2U7aWYoZmlyc3RXZWVrU3RhcnRUaGlzWWVhci5nZXRGdWxsWWVhcigpPGRhdGUudG1feWVhcisxOTAwKXtkYXlzRGlmZmVyZW5jZT1kYXRlLnRtX3lkYXkrMzItZmlyc3RXZWVrU3RhcnRUaGlzWWVhci5nZXREYXRlKCl9ZWxzZXtkYXlzRGlmZmVyZW5jZT1kYXRlLnRtX3lkYXkrMS1maXJzdFdlZWtTdGFydFRoaXNZZWFyLmdldERhdGUoKX1yZXR1cm4gbGVhZGluZ051bGxzKE1hdGguY2VpbChkYXlzRGlmZmVyZW5jZS83KSwyKX0pLCIldyI6KGZ1bmN0aW9uKGRhdGUpe3ZhciBkYXk9bmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsZGF0ZS50bV9tb24rMSxkYXRlLnRtX21kYXksMCwwLDAsMCk7cmV0dXJuIGRheS5nZXREYXkoKX0pLCIlVyI6KGZ1bmN0aW9uKGRhdGUpe3ZhciBqYW5GaXJzdD1uZXcgRGF0ZShkYXRlLnRtX3llYXIsMCwxKTt2YXIgZmlyc3RNb25kYXk9amFuRmlyc3QuZ2V0RGF5KCk9PT0xP2phbkZpcnN0Ol9fYWRkRGF5cyhqYW5GaXJzdCxqYW5GaXJzdC5nZXREYXkoKT09PTA/MTo3LWphbkZpcnN0LmdldERheSgpKzEpO3ZhciBlbmREYXRlPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLGRhdGUudG1fbW9uLGRhdGUudG1fbWRheSk7aWYoY29tcGFyZUJ5RGF5KGZpcnN0TW9uZGF5LGVuZERhdGUpPDApe3ZhciBmZWJydWFyeUZpcnN0VW50aWxFbmRNb250aD1fX2FycmF5U3VtKF9faXNMZWFwWWVhcihlbmREYXRlLmdldEZ1bGxZZWFyKCkpP19fTU9OVEhfREFZU19MRUFQOl9fTU9OVEhfREFZU19SRUdVTEFSLGVuZERhdGUuZ2V0TW9udGgoKS0xKS0zMTt2YXIgZmlyc3RNb25kYXlVbnRpbEVuZEphbnVhcnk9MzEtZmlyc3RNb25kYXkuZ2V0RGF0ZSgpO3ZhciBkYXlzPWZpcnN0TW9uZGF5VW50aWxFbmRKYW51YXJ5K2ZlYnJ1YXJ5Rmlyc3RVbnRpbEVuZE1vbnRoK2VuZERhdGUuZ2V0RGF0ZSgpO3JldHVybiBsZWFkaW5nTnVsbHMoTWF0aC5jZWlsKGRheXMvNyksMil9cmV0dXJuIGNvbXBhcmVCeURheShmaXJzdE1vbmRheSxqYW5GaXJzdCk9PT0wPyIwMSI6IjAwIn0pLCIleSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybihkYXRlLnRtX3llYXIrMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9KSwiJVkiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gZGF0ZS50bV95ZWFyKzE5MDB9KSwiJXoiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4iIn0pLCIlWiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiIifSksIiUlIjooZnVuY3Rpb24oKXtyZXR1cm4iJSJ9KX07Zm9yKHZhciBydWxlIGluIEVYUEFOU0lPTl9SVUxFU18yKXtpZihwYXR0ZXJuLmluZGV4T2YocnVsZSk+PTApe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18yW3J1bGVdKGRhdGUpKX19dmFyIGJ5dGVzPWludEFycmF5RnJvbVN0cmluZyhwYXR0ZXJuLGZhbHNlKTtpZihieXRlcy5sZW5ndGg+bWF4c2l6ZSl7cmV0dXJuIDB9d3JpdGVBcnJheVRvTWVtb3J5KGJ5dGVzLHMpO3JldHVybiBieXRlcy5sZW5ndGgtMX1mdW5jdGlvbiBfc3RyZnRpbWVfbChzLG1heHNpemUsZm9ybWF0LHRtKXtyZXR1cm4gX3N0cmZ0aW1lKHMsbWF4c2l6ZSxmb3JtYXQsdG0pfWZ1bmN0aW9uIF9hYm9ydCgpe01vZHVsZVsiYWJvcnQiXSgpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzKCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzIik7YWJvcnQoLTEpfWZ1bmN0aW9uIF9wdGhyZWFkX2NvbmRfd2FpdCgpe3JldHVybiAwfXZhciBfZmFicz1NYXRoX2Ficzt2YXIgX2dldGM9X2ZnZXRjO2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlciIpO2Fib3J0KC0xKX12YXIgQnJvd3Nlcj17bWFpbkxvb3A6e3NjaGVkdWxlcjpudWxsLG1ldGhvZDoiIixzaG91bGRQYXVzZTpmYWxzZSxwYXVzZWQ6ZmFsc2UscXVldWU6W10scGF1c2U6KGZ1bmN0aW9uKCl7QnJvd3Nlci5tYWluTG9vcC5zaG91bGRQYXVzZT10cnVlfSkscmVzdW1lOihmdW5jdGlvbigpe2lmKEJyb3dzZXIubWFpbkxvb3AucGF1c2VkKXtCcm93c2VyLm1haW5Mb29wLnBhdXNlZD1mYWxzZTtCcm93c2VyLm1haW5Mb29wLnNjaGVkdWxlcigpfUJyb3dzZXIubWFpbkxvb3Auc2hvdWxkUGF1c2U9ZmFsc2V9KSx1cGRhdGVTdGF0dXM6KGZ1bmN0aW9uKCl7aWYoTW9kdWxlWyJzZXRTdGF0dXMiXSl7dmFyIG1lc3NhZ2U9TW9kdWxlWyJzdGF0dXNNZXNzYWdlIl18fCJQbGVhc2Ugd2FpdC4uLiI7dmFyIHJlbWFpbmluZz1Ccm93c2VyLm1haW5Mb29wLnJlbWFpbmluZ0Jsb2NrZXJzO3ZhciBleHBlY3RlZD1Ccm93c2VyLm1haW5Mb29wLmV4cGVjdGVkQmxvY2tlcnM7aWYocmVtYWluaW5nKXtpZihyZW1haW5pbmc8ZXhwZWN0ZWQpe01vZHVsZVsic2V0U3RhdHVzIl0obWVzc2FnZSsiICgiKyhleHBlY3RlZC1yZW1haW5pbmcpKyIvIitleHBlY3RlZCsiKSIpfWVsc2V7TW9kdWxlWyJzZXRTdGF0dXMiXShtZXNzYWdlKX19ZWxzZXtNb2R1bGVbInNldFN0YXR1cyJdKCIiKX19fSl9LGlzRnVsbFNjcmVlbjpmYWxzZSxwb2ludGVyTG9jazpmYWxzZSxtb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxiYWNrczpbXSx3b3JrZXJzOltdLGluaXQ6KGZ1bmN0aW9uKCl7aWYoIU1vZHVsZVsicHJlbG9hZFBsdWdpbnMiXSlNb2R1bGVbInByZWxvYWRQbHVnaW5zIl09W107aWYoQnJvd3Nlci5pbml0dGVkfHxFTlZJUk9OTUVOVF9JU19XT1JLRVIpcmV0dXJuO0Jyb3dzZXIuaW5pdHRlZD10cnVlO3RyeXtuZXcgQmxvYjtCcm93c2VyLmhhc0Jsb2JDb25zdHJ1Y3Rvcj10cnVlfWNhdGNoKGUpe0Jyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yPWZhbHNlO2NvbnNvbGUubG9nKCJ3YXJuaW5nOiBubyBibG9iIGNvbnN0cnVjdG9yLCBjYW5ub3QgY3JlYXRlIGJsb2JzIHdpdGggbWltZXR5cGVzIil9QnJvd3Nlci5CbG9iQnVpbGRlcj10eXBlb2YgTW96QmxvYkJ1aWxkZXIhPSJ1bmRlZmluZWQiP01vekJsb2JCdWlsZGVyOnR5cGVvZiBXZWJLaXRCbG9iQnVpbGRlciE9InVuZGVmaW5lZCI/V2ViS2l0QmxvYkJ1aWxkZXI6IUJyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yP2NvbnNvbGUubG9nKCJ3YXJuaW5nOiBubyBCbG9iQnVpbGRlciIpOm51bGw7QnJvd3Nlci5VUkxPYmplY3Q9dHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCI/d2luZG93LlVSTD93aW5kb3cuVVJMOndpbmRvdy53ZWJraXRVUkw6dW5kZWZpbmVkO2lmKCFNb2R1bGUubm9JbWFnZURlY29kaW5nJiZ0eXBlb2YgQnJvd3Nlci5VUkxPYmplY3Q9PT0idW5kZWZpbmVkIil7Y29uc29sZS5sb2coIndhcm5pbmc6IEJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBjcmVhdGluZyBvYmplY3QgVVJMcy4gQnVpbHQtaW4gYnJvd3NlciBpbWFnZSBkZWNvZGluZyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIik7TW9kdWxlLm5vSW1hZ2VEZWNvZGluZz10cnVlfXZhciBpbWFnZVBsdWdpbj17fTtpbWFnZVBsdWdpblsiY2FuSGFuZGxlIl09ZnVuY3Rpb24gaW1hZ2VQbHVnaW5fY2FuSGFuZGxlKG5hbWUpe3JldHVybiFNb2R1bGUubm9JbWFnZURlY29kaW5nJiYvXC4oanBnfGpwZWd8cG5nfGJtcCkkL2kudGVzdChuYW1lKX07aW1hZ2VQbHVnaW5bImhhbmRsZSJdPWZ1bmN0aW9uIGltYWdlUGx1Z2luX2hhbmRsZShieXRlQXJyYXksbmFtZSxvbmxvYWQsb25lcnJvcil7dmFyIGI9bnVsbDtpZihCcm93c2VyLmhhc0Jsb2JDb25zdHJ1Y3Rvcil7dHJ5e2I9bmV3IEJsb2IoW2J5dGVBcnJheV0se3R5cGU6QnJvd3Nlci5nZXRNaW1ldHlwZShuYW1lKX0pO2lmKGIuc2l6ZSE9PWJ5dGVBcnJheS5sZW5ndGgpe2I9bmV3IEJsb2IoWyhuZXcgVWludDhBcnJheShieXRlQXJyYXkpKS5idWZmZXJdLHt0eXBlOkJyb3dzZXIuZ2V0TWltZXR5cGUobmFtZSl9KX19Y2F0Y2goZSl7UnVudGltZS53YXJuT25jZSgiQmxvYiBjb25zdHJ1Y3RvciBwcmVzZW50IGJ1dCBmYWlsczogIitlKyI7IGZhbGxpbmcgYmFjayB0byBibG9iIGJ1aWxkZXIiKX19aWYoIWIpe3ZhciBiYj1uZXcgQnJvd3Nlci5CbG9iQnVpbGRlcjtiYi5hcHBlbmQoKG5ldyBVaW50OEFycmF5KGJ5dGVBcnJheSkpLmJ1ZmZlcik7Yj1iYi5nZXRCbG9iKCl9dmFyIHVybD1Ccm93c2VyLlVSTE9iamVjdC5jcmVhdGVPYmplY3RVUkwoYik7dmFyIGltZz1uZXcgSW1hZ2U7aW1nLm9ubG9hZD1mdW5jdGlvbiBpbWdfb25sb2FkKCl7YXNzZXJ0KGltZy5jb21wbGV0ZSwiSW1hZ2UgIituYW1lKyIgY291bGQgbm90IGJlIGRlY29kZWQiKTt2YXIgY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2NhbnZhcy53aWR0aD1pbWcud2lkdGg7Y2FudmFzLmhlaWdodD1pbWcuaGVpZ2h0O3ZhciBjdHg9Y2FudmFzLmdldENvbnRleHQoIjJkIik7Y3R4LmRyYXdJbWFnZShpbWcsMCwwKTtNb2R1bGVbInByZWxvYWRlZEltYWdlcyJdW25hbWVdPWNhbnZhcztCcm93c2VyLlVSTE9iamVjdC5yZXZva2VPYmplY3RVUkwodXJsKTtpZihvbmxvYWQpb25sb2FkKGJ5dGVBcnJheSl9O2ltZy5vbmVycm9yPWZ1bmN0aW9uIGltZ19vbmVycm9yKGV2ZW50KXtjb25zb2xlLmxvZygiSW1hZ2UgIit1cmwrIiBjb3VsZCBub3QgYmUgZGVjb2RlZCIpO2lmKG9uZXJyb3Ipb25lcnJvcigpfTtpbWcuc3JjPXVybH07TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLnB1c2goaW1hZ2VQbHVnaW4pO3ZhciBhdWRpb1BsdWdpbj17fTthdWRpb1BsdWdpblsiY2FuSGFuZGxlIl09ZnVuY3Rpb24gYXVkaW9QbHVnaW5fY2FuSGFuZGxlKG5hbWUpe3JldHVybiFNb2R1bGUubm9BdWRpb0RlY29kaW5nJiZuYW1lLnN1YnN0cigtNClpbnsiLm9nZyI6MSwiLndhdiI6MSwiLm1wMyI6MX19O2F1ZGlvUGx1Z2luWyJoYW5kbGUiXT1mdW5jdGlvbiBhdWRpb1BsdWdpbl9oYW5kbGUoYnl0ZUFycmF5LG5hbWUsb25sb2FkLG9uZXJyb3Ipe3ZhciBkb25lPWZhbHNlO2Z1bmN0aW9uIGZpbmlzaChhdWRpbyl7aWYoZG9uZSlyZXR1cm47ZG9uZT10cnVlO01vZHVsZVsicHJlbG9hZGVkQXVkaW9zIl1bbmFtZV09YXVkaW87aWYob25sb2FkKW9ubG9hZChieXRlQXJyYXkpfWZ1bmN0aW9uIGZhaWwoKXtpZihkb25lKXJldHVybjtkb25lPXRydWU7TW9kdWxlWyJwcmVsb2FkZWRBdWRpb3MiXVtuYW1lXT1uZXcgQXVkaW87aWYob25lcnJvcilvbmVycm9yKCl9aWYoQnJvd3Nlci5oYXNCbG9iQ29uc3RydWN0b3Ipe3RyeXt2YXIgYj1uZXcgQmxvYihbYnl0ZUFycmF5XSx7dHlwZTpCcm93c2VyLmdldE1pbWV0eXBlKG5hbWUpfSl9Y2F0Y2goZSl7cmV0dXJuIGZhaWwoKX12YXIgdXJsPUJyb3dzZXIuVVJMT2JqZWN0LmNyZWF0ZU9iamVjdFVSTChiKTt2YXIgYXVkaW89bmV3IEF1ZGlvO2F1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoImNhbnBsYXl0aHJvdWdoIiwoZnVuY3Rpb24oKXtmaW5pc2goYXVkaW8pfSksZmFsc2UpO2F1ZGlvLm9uZXJyb3I9ZnVuY3Rpb24gYXVkaW9fb25lcnJvcihldmVudCl7aWYoZG9uZSlyZXR1cm47Y29uc29sZS5sb2coIndhcm5pbmc6IGJyb3dzZXIgY291bGQgbm90IGZ1bGx5IGRlY29kZSBhdWRpbyAiK25hbWUrIiwgdHJ5aW5nIHNsb3dlciBiYXNlNjQgYXBwcm9hY2giKTtmdW5jdGlvbiBlbmNvZGU2NChkYXRhKXt2YXIgQkFTRT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7dmFyIFBBRD0iPSI7dmFyIHJldD0iIjt2YXIgbGVmdGNoYXI9MDt2YXIgbGVmdGJpdHM9MDtmb3IodmFyIGk9MDtpPGRhdGEubGVuZ3RoO2krKyl7bGVmdGNoYXI9bGVmdGNoYXI8PDh8ZGF0YVtpXTtsZWZ0Yml0cys9ODt3aGlsZShsZWZ0Yml0cz49Nil7dmFyIGN1cnI9bGVmdGNoYXI+PmxlZnRiaXRzLTYmNjM7bGVmdGJpdHMtPTY7cmV0Kz1CQVNFW2N1cnJdfX1pZihsZWZ0Yml0cz09Mil7cmV0Kz1CQVNFWyhsZWZ0Y2hhciYzKTw8NF07cmV0Kz1QQUQrUEFEfWVsc2UgaWYobGVmdGJpdHM9PTQpe3JldCs9QkFTRVsobGVmdGNoYXImMTUpPDwyXTtyZXQrPVBBRH1yZXR1cm4gcmV0fWF1ZGlvLnNyYz0iZGF0YTphdWRpby94LSIrbmFtZS5zdWJzdHIoLTMpKyI7YmFzZTY0LCIrZW5jb2RlNjQoYnl0ZUFycmF5KTtmaW5pc2goYXVkaW8pfTthdWRpby5zcmM9dXJsO0Jyb3dzZXIuc2FmZVNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZmluaXNoKGF1ZGlvKX0pLDFlNCl9ZWxzZXtyZXR1cm4gZmFpbCgpfX07TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLnB1c2goYXVkaW9QbHVnaW4pO3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtpZihjYW52YXMpe2NhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2s9Y2FudmFzWyJyZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJtb3pSZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJ3ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJtc1JlcXVlc3RQb2ludGVyTG9jayJdfHwoZnVuY3Rpb24oKXt9KTtjYW52YXMuZXhpdFBvaW50ZXJMb2NrPWRvY3VtZW50WyJleGl0UG9pbnRlckxvY2siXXx8ZG9jdW1lbnRbIm1vekV4aXRQb2ludGVyTG9jayJdfHxkb2N1bWVudFsid2Via2l0RXhpdFBvaW50ZXJMb2NrIl18fGRvY3VtZW50WyJtc0V4aXRQb2ludGVyTG9jayJdfHwoZnVuY3Rpb24oKXt9KTtjYW52YXMuZXhpdFBvaW50ZXJMb2NrPWNhbnZhcy5leGl0UG9pbnRlckxvY2suYmluZChkb2N1bWVudCk7ZnVuY3Rpb24gcG9pbnRlckxvY2tDaGFuZ2UoKXtCcm93c2VyLnBvaW50ZXJMb2NrPWRvY3VtZW50WyJwb2ludGVyTG9ja0VsZW1lbnQiXT09PWNhbnZhc3x8ZG9jdW1lbnRbIm1velBvaW50ZXJMb2NrRWxlbWVudCJdPT09Y2FudmFzfHxkb2N1bWVudFsid2Via2l0UG9pbnRlckxvY2tFbGVtZW50Il09PT1jYW52YXN8fGRvY3VtZW50WyJtc1BvaW50ZXJMb2NrRWxlbWVudCJdPT09Y2FudmFzfWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJsb2NrY2hhbmdlIixwb2ludGVyTG9ja0NoYW5nZSxmYWxzZSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW96cG9pbnRlcmxvY2tjaGFuZ2UiLHBvaW50ZXJMb2NrQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2NoYW5nZSIscG9pbnRlckxvY2tDaGFuZ2UsZmFsc2UpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1zcG9pbnRlcmxvY2tjaGFuZ2UiLHBvaW50ZXJMb2NrQ2hhbmdlLGZhbHNlKTtpZihNb2R1bGVbImVsZW1lbnRQb2ludGVyTG9jayJdKXtjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbihldil7aWYoIUJyb3dzZXIucG9pbnRlckxvY2smJmNhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2spe2NhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2soKTtldi5wcmV2ZW50RGVmYXVsdCgpfX0pLGZhbHNlKX19fSksY3JlYXRlQ29udGV4dDooZnVuY3Rpb24oY2FudmFzLHVzZVdlYkdMLHNldEluTW9kdWxlLHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpe3ZhciBjdHg7dmFyIGVycm9ySW5mbz0iPyI7ZnVuY3Rpb24gb25Db250ZXh0Q3JlYXRpb25FcnJvcihldmVudCl7ZXJyb3JJbmZvPWV2ZW50LnN0YXR1c01lc3NhZ2V8fGVycm9ySW5mb310cnl7aWYodXNlV2ViR0wpe3ZhciBjb250ZXh0QXR0cmlidXRlcz17YW50aWFsaWFzOmZhbHNlLGFscGhhOmZhbHNlfTtpZih3ZWJHTENvbnRleHRBdHRyaWJ1dGVzKXtmb3IodmFyIGF0dHJpYnV0ZSBpbiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzKXtjb250ZXh0QXR0cmlidXRlc1thdHRyaWJ1dGVdPXdlYkdMQ29udGV4dEF0dHJpYnV0ZXNbYXR0cmlidXRlXX19Y2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLG9uQ29udGV4dENyZWF0aW9uRXJyb3IsZmFsc2UpO3RyeXtbImV4cGVyaW1lbnRhbC13ZWJnbCIsIndlYmdsIl0uc29tZSgoZnVuY3Rpb24od2ViZ2xJZCl7cmV0dXJuIGN0eD1jYW52YXMuZ2V0Q29udGV4dCh3ZWJnbElkLGNvbnRleHRBdHRyaWJ1dGVzKX0pKX1maW5hbGx5e2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIixvbkNvbnRleHRDcmVhdGlvbkVycm9yLGZhbHNlKX19ZWxzZXtjdHg9Y2FudmFzLmdldENvbnRleHQoIjJkIil9aWYoIWN0eCl0aHJvdyI6KCJ9Y2F0Y2goZSl7TW9kdWxlLnByaW50KCJDb3VsZCBub3QgY3JlYXRlIGNhbnZhczogIitbZXJyb3JJbmZvLGVdKTtyZXR1cm4gbnVsbH1pZih1c2VXZWJHTCl7Y2FudmFzLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iYmxhY2sifWlmKHNldEluTW9kdWxlKXtHTGN0eD1Nb2R1bGUuY3R4PWN0eDtNb2R1bGUudXNlV2ViR0w9dXNlV2ViR0w7QnJvd3Nlci5tb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihjYWxsYmFjayl7Y2FsbGJhY2soKX0pKTtCcm93c2VyLmluaXQoKX1yZXR1cm4gY3R4fSksZGVzdHJveUNvbnRleHQ6KGZ1bmN0aW9uKGNhbnZhcyx1c2VXZWJHTCxzZXRJbk1vZHVsZSl7fSksZnVsbFNjcmVlbkhhbmRsZXJzSW5zdGFsbGVkOmZhbHNlLGxvY2tQb2ludGVyOnVuZGVmaW5lZCxyZXNpemVDYW52YXM6dW5kZWZpbmVkLHJlcXVlc3RGdWxsU2NyZWVuOihmdW5jdGlvbihsb2NrUG9pbnRlcixyZXNpemVDYW52YXMpe0Jyb3dzZXIubG9ja1BvaW50ZXI9bG9ja1BvaW50ZXI7QnJvd3Nlci5yZXNpemVDYW52YXM9cmVzaXplQ2FudmFzO2lmKHR5cGVvZiBCcm93c2VyLmxvY2tQb2ludGVyPT09InVuZGVmaW5lZCIpQnJvd3Nlci5sb2NrUG9pbnRlcj10cnVlO2lmKHR5cGVvZiBCcm93c2VyLnJlc2l6ZUNhbnZhcz09PSJ1bmRlZmluZWQiKUJyb3dzZXIucmVzaXplQ2FudmFzPWZhbHNlO3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtmdW5jdGlvbiBmdWxsU2NyZWVuQ2hhbmdlKCl7QnJvd3Nlci5pc0Z1bGxTY3JlZW49ZmFsc2U7dmFyIGNhbnZhc0NvbnRhaW5lcj1jYW52YXMucGFyZW50Tm9kZTtpZigoZG9jdW1lbnRbIndlYmtpdEZ1bGxTY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1vekZ1bGxzY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJmdWxsU2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsiZnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKT09PWNhbnZhc0NvbnRhaW5lcil7Y2FudmFzLmNhbmNlbEZ1bGxTY3JlZW49ZG9jdW1lbnRbImNhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIm1vekNhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIndlYmtpdENhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIm1zRXhpdEZ1bGxzY3JlZW4iXXx8ZG9jdW1lbnRbImV4aXRGdWxsc2NyZWVuIl18fChmdW5jdGlvbigpe30pO2NhbnZhcy5jYW5jZWxGdWxsU2NyZWVuPWNhbnZhcy5jYW5jZWxGdWxsU2NyZWVuLmJpbmQoZG9jdW1lbnQpO2lmKEJyb3dzZXIubG9ja1BvaW50ZXIpY2FudmFzLnJlcXVlc3RQb2ludGVyTG9jaygpO0Jyb3dzZXIuaXNGdWxsU2NyZWVuPXRydWU7aWYoQnJvd3Nlci5yZXNpemVDYW52YXMpQnJvd3Nlci5zZXRGdWxsU2NyZWVuQ2FudmFzU2l6ZSgpfWVsc2V7Y2FudmFzQ29udGFpbmVyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNhbnZhcyxjYW52YXNDb250YWluZXIpO2NhbnZhc0NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNhbnZhc0NvbnRhaW5lcik7aWYoQnJvd3Nlci5yZXNpemVDYW52YXMpQnJvd3Nlci5zZXRXaW5kb3dlZENhbnZhc1NpemUoKX1pZihNb2R1bGVbIm9uRnVsbFNjcmVlbiJdKU1vZHVsZVsib25GdWxsU2NyZWVuIl0oQnJvd3Nlci5pc0Z1bGxTY3JlZW4pO0Jyb3dzZXIudXBkYXRlQ2FudmFzRGltZW5zaW9ucyhjYW52YXMpfWlmKCFCcm93c2VyLmZ1bGxTY3JlZW5IYW5kbGVyc0luc3RhbGxlZCl7QnJvd3Nlci5mdWxsU2NyZWVuSGFuZGxlcnNJbnN0YWxsZWQ9dHJ1ZTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3pmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJNU0Z1bGxzY3JlZW5DaGFuZ2UiLGZ1bGxTY3JlZW5DaGFuZ2UsZmFsc2UpfXZhciBjYW52YXNDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Y2FudmFzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNhbnZhc0NvbnRhaW5lcixjYW52YXMpO2NhbnZhc0NvbnRhaW5lci5hcHBlbmRDaGlsZChjYW52YXMpO2NhbnZhc0NvbnRhaW5lci5yZXF1ZXN0RnVsbFNjcmVlbj1jYW52YXNDb250YWluZXJbInJlcXVlc3RGdWxsU2NyZWVuIl18fGNhbnZhc0NvbnRhaW5lclsibW96UmVxdWVzdEZ1bGxTY3JlZW4iXXx8Y2FudmFzQ29udGFpbmVyWyJtc1JlcXVlc3RGdWxsc2NyZWVuIl18fChjYW52YXNDb250YWluZXJbIndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuIl0/KGZ1bmN0aW9uKCl7Y2FudmFzQ29udGFpbmVyWyJ3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiJdKEVsZW1lbnRbIkFMTE9XX0tFWUJPQVJEX0lOUFVUIl0pfSk6bnVsbCk7Y2FudmFzQ29udGFpbmVyLnJlcXVlc3RGdWxsU2NyZWVuKCl9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpe2lmKHR5cGVvZiB3aW5kb3c9PT0idW5kZWZpbmVkIil7c2V0VGltZW91dChmdW5jLDFlMy82MCl9ZWxzZXtpZighd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSl7d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT13aW5kb3dbInJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIm1velJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl18fHdpbmRvd1sib1JlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbInNldFRpbWVvdXQiXX13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpfX0sc2FmZUNhbGxiYWNrOihmdW5jdGlvbihmdW5jKXtyZXR1cm4oZnVuY3Rpb24oKXtpZighQUJPUlQpcmV0dXJuIGZ1bmMuYXBwbHkobnVsbCxhcmd1bWVudHMpfSl9KSxzYWZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lOihmdW5jdGlvbihmdW5jKXtyZXR1cm4gQnJvd3Nlci5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7aWYoIUFCT1JUKWZ1bmMoKX0pKX0pLHNhZmVTZXRUaW1lb3V0OihmdW5jdGlvbihmdW5jLHRpbWVvdXQpe01vZHVsZVsibm9FeGl0UnVudGltZSJdPXRydWU7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aWYoIUFCT1JUKWZ1bmMoKX0pLHRpbWVvdXQpfSksc2FmZVNldEludGVydmFsOihmdW5jdGlvbihmdW5jLHRpbWVvdXQpe01vZHVsZVsibm9FeGl0UnVudGltZSJdPXRydWU7cmV0dXJuIHNldEludGVydmFsKChmdW5jdGlvbigpe2lmKCFBQk9SVClmdW5jKCl9KSx0aW1lb3V0KX0pLGdldE1pbWV0eXBlOihmdW5jdGlvbihuYW1lKXtyZXR1cm57ImpwZyI6ImltYWdlL2pwZWciLCJqcGVnIjoiaW1hZ2UvanBlZyIsInBuZyI6ImltYWdlL3BuZyIsImJtcCI6ImltYWdlL2JtcCIsIm9nZyI6ImF1ZGlvL29nZyIsIndhdiI6ImF1ZGlvL3dhdiIsIm1wMyI6ImF1ZGlvL21wZWcifVtuYW1lLnN1YnN0cihuYW1lLmxhc3RJbmRleE9mKCIuIikrMSldfSksZ2V0VXNlck1lZGlhOihmdW5jdGlvbihmdW5jKXtpZighd2luZG93LmdldFVzZXJNZWRpYSl7d2luZG93LmdldFVzZXJNZWRpYT1uYXZpZ2F0b3JbImdldFVzZXJNZWRpYSJdfHxuYXZpZ2F0b3JbIm1vekdldFVzZXJNZWRpYSJdfXdpbmRvdy5nZXRVc2VyTWVkaWEoZnVuYyl9KSxnZXRNb3ZlbWVudFg6KGZ1bmN0aW9uKGV2ZW50KXtyZXR1cm4gZXZlbnRbIm1vdmVtZW50WCJdfHxldmVudFsibW96TW92ZW1lbnRYIl18fGV2ZW50WyJ3ZWJraXRNb3ZlbWVudFgiXXx8MH0pLGdldE1vdmVtZW50WTooZnVuY3Rpb24oZXZlbnQpe3JldHVybiBldmVudFsibW92ZW1lbnRZIl18fGV2ZW50WyJtb3pNb3ZlbWVudFkiXXx8ZXZlbnRbIndlYmtpdE1vdmVtZW50WSJdfHwwfSksZ2V0TW91c2VXaGVlbERlbHRhOihmdW5jdGlvbihldmVudCl7dmFyIGRlbHRhPTA7c3dpdGNoKGV2ZW50LnR5cGUpe2Nhc2UiRE9NTW91c2VTY3JvbGwiOmRlbHRhPWV2ZW50LmRldGFpbDticmVhaztjYXNlIm1vdXNld2hlZWwiOmRlbHRhPS1ldmVudC53aGVlbERlbHRhO2JyZWFrO2Nhc2Uid2hlZWwiOmRlbHRhPWV2ZW50LmRlbHRhWTticmVhaztkZWZhdWx0OnRocm93InVucmVjb2duaXplZCBtb3VzZSB3aGVlbCBldmVudDogIitldmVudC50eXBlfXJldHVybiBNYXRoLm1heCgtMSxNYXRoLm1pbigxLGRlbHRhKSl9KSxtb3VzZVg6MCxtb3VzZVk6MCxtb3VzZU1vdmVtZW50WDowLG1vdXNlTW92ZW1lbnRZOjAsdG91Y2hlczp7fSxsYXN0VG91Y2hlczp7fSxjYWxjdWxhdGVNb3VzZUV2ZW50OihmdW5jdGlvbihldmVudCl7aWYoQnJvd3Nlci5wb2ludGVyTG9jayl7aWYoZXZlbnQudHlwZSE9Im1vdXNlbW92ZSImJiJtb3pNb3ZlbWVudFgiaW4gZXZlbnQpe0Jyb3dzZXIubW91c2VNb3ZlbWVudFg9QnJvd3Nlci5tb3VzZU1vdmVtZW50WT0wfWVsc2V7QnJvd3Nlci5tb3VzZU1vdmVtZW50WD1Ccm93c2VyLmdldE1vdmVtZW50WChldmVudCk7QnJvd3Nlci5tb3VzZU1vdmVtZW50WT1Ccm93c2VyLmdldE1vdmVtZW50WShldmVudCl9aWYodHlwZW9mIFNETCE9InVuZGVmaW5lZCIpe0Jyb3dzZXIubW91c2VYPVNETC5tb3VzZVgrQnJvd3Nlci5tb3VzZU1vdmVtZW50WDtCcm93c2VyLm1vdXNlWT1TREwubW91c2VZK0Jyb3dzZXIubW91c2VNb3ZlbWVudFl9ZWxzZXtCcm93c2VyLm1vdXNlWCs9QnJvd3Nlci5tb3VzZU1vdmVtZW50WDtCcm93c2VyLm1vdXNlWSs9QnJvd3Nlci5tb3VzZU1vdmVtZW50WX19ZWxzZXt2YXIgcmVjdD1Nb2R1bGVbImNhbnZhcyJdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBjdz1Nb2R1bGVbImNhbnZhcyJdLndpZHRoO3ZhciBjaD1Nb2R1bGVbImNhbnZhcyJdLmhlaWdodDt2YXIgc2Nyb2xsWD10eXBlb2Ygd2luZG93LnNjcm9sbFghPT0idW5kZWZpbmVkIj93aW5kb3cuc2Nyb2xsWDp3aW5kb3cucGFnZVhPZmZzZXQ7dmFyIHNjcm9sbFk9dHlwZW9mIHdpbmRvdy5zY3JvbGxZIT09InVuZGVmaW5lZCI/d2luZG93LnNjcm9sbFk6d2luZG93LnBhZ2VZT2Zmc2V0O2lmKGV2ZW50LnR5cGU9PT0idG91Y2hzdGFydCJ8fGV2ZW50LnR5cGU9PT0idG91Y2hlbmQifHxldmVudC50eXBlPT09InRvdWNobW92ZSIpe3ZhciB0b3VjaD1ldmVudC50b3VjaDtpZih0b3VjaD09PXVuZGVmaW5lZCl7cmV0dXJufXZhciBhZGp1c3RlZFg9dG91Y2gucGFnZVgtKHNjcm9sbFgrcmVjdC5sZWZ0KTt2YXIgYWRqdXN0ZWRZPXRvdWNoLnBhZ2VZLShzY3JvbGxZK3JlY3QudG9wKTthZGp1c3RlZFg9YWRqdXN0ZWRYKihjdy9yZWN0LndpZHRoKTthZGp1c3RlZFk9YWRqdXN0ZWRZKihjaC9yZWN0LmhlaWdodCk7dmFyIGNvb3Jkcz17eDphZGp1c3RlZFgseTphZGp1c3RlZFl9O2lmKGV2ZW50LnR5cGU9PT0idG91Y2hzdGFydCIpe0Jyb3dzZXIubGFzdFRvdWNoZXNbdG91Y2guaWRlbnRpZmllcl09Y29vcmRzO0Jyb3dzZXIudG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXT1jb29yZHN9ZWxzZSBpZihldmVudC50eXBlPT09InRvdWNoZW5kInx8ZXZlbnQudHlwZT09PSJ0b3VjaG1vdmUiKXtCcm93c2VyLmxhc3RUb3VjaGVzW3RvdWNoLmlkZW50aWZpZXJdPUJyb3dzZXIudG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXTtCcm93c2VyLnRvdWNoZXNbdG91Y2guaWRlbnRpZmllcl09e3g6YWRqdXN0ZWRYLHk6YWRqdXN0ZWRZfX1yZXR1cm59dmFyIHg9ZXZlbnQucGFnZVgtKHNjcm9sbFgrcmVjdC5sZWZ0KTt2YXIgeT1ldmVudC5wYWdlWS0oc2Nyb2xsWStyZWN0LnRvcCk7eD14Kihjdy9yZWN0LndpZHRoKTt5PXkqKGNoL3JlY3QuaGVpZ2h0KTtCcm93c2VyLm1vdXNlTW92ZW1lbnRYPXgtQnJvd3Nlci5tb3VzZVg7QnJvd3Nlci5tb3VzZU1vdmVtZW50WT15LUJyb3dzZXIubW91c2VZO0Jyb3dzZXIubW91c2VYPXg7QnJvd3Nlci5tb3VzZVk9eX19KSx4aHJMb2FkOihmdW5jdGlvbih1cmwsb25sb2FkLG9uZXJyb3Ipe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCx0cnVlKTt4aHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7eGhyLm9ubG9hZD1mdW5jdGlvbiB4aHJfb25sb2FkKCl7aWYoeGhyLnN0YXR1cz09MjAwfHx4aHIuc3RhdHVzPT0wJiZ4aHIucmVzcG9uc2Upe29ubG9hZCh4aHIucmVzcG9uc2UpfWVsc2V7b25lcnJvcigpfX07eGhyLm9uZXJyb3I9b25lcnJvcjt4aHIuc2VuZChudWxsKX0pLGFzeW5jTG9hZDooZnVuY3Rpb24odXJsLG9ubG9hZCxvbmVycm9yLG5vUnVuRGVwKXtCcm93c2VyLnhockxvYWQodXJsLChmdW5jdGlvbihhcnJheUJ1ZmZlcil7YXNzZXJ0KGFycmF5QnVmZmVyLCdMb2FkaW5nIGRhdGEgZmlsZSAiJyt1cmwrJyIgZmFpbGVkIChubyBhcnJheUJ1ZmZlcikuJyk7b25sb2FkKG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7aWYoIW5vUnVuRGVwKXJlbW92ZVJ1bkRlcGVuZGVuY3koImFsICIrdXJsKX0pLChmdW5jdGlvbihldmVudCl7aWYob25lcnJvcil7b25lcnJvcigpfWVsc2V7dGhyb3cnTG9hZGluZyBkYXRhIGZpbGUgIicrdXJsKyciIGZhaWxlZC4nfX0pKTtpZighbm9SdW5EZXApYWRkUnVuRGVwZW5kZW5jeSgiYWwgIit1cmwpfSkscmVzaXplTGlzdGVuZXJzOltdLHVwZGF0ZVJlc2l6ZUxpc3RlbmVyczooZnVuY3Rpb24oKXt2YXIgY2FudmFzPU1vZHVsZVsiY2FudmFzIl07QnJvd3Nlci5yZXNpemVMaXN0ZW5lcnMuZm9yRWFjaCgoZnVuY3Rpb24obGlzdGVuZXIpe2xpc3RlbmVyKGNhbnZhcy53aWR0aCxjYW52YXMuaGVpZ2h0KX0pKX0pLHNldENhbnZhc1NpemU6KGZ1bmN0aW9uKHdpZHRoLGhlaWdodCxub1VwZGF0ZXMpe3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtCcm93c2VyLnVwZGF0ZUNhbnZhc0RpbWVuc2lvbnMoY2FudmFzLHdpZHRoLGhlaWdodCk7aWYoIW5vVXBkYXRlcylCcm93c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVycygpfSksd2luZG93ZWRXaWR0aDowLHdpbmRvd2VkSGVpZ2h0OjAsc2V0RnVsbFNjcmVlbkNhbnZhc1NpemU6KGZ1bmN0aW9uKCl7aWYodHlwZW9mIFNETCE9InVuZGVmaW5lZCIpe3ZhciBmbGFncz1IRUFQVTMyW1NETC5zY3JlZW4rUnVudGltZS5RVUFOVFVNX1NJWkUqMD4+Ml07ZmxhZ3M9ZmxhZ3N8ODM4ODYwODtIRUFQMzJbU0RMLnNjcmVlbitSdW50aW1lLlFVQU5UVU1fU0laRSowPj4yXT1mbGFnc31Ccm93c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVycygpfSksc2V0V2luZG93ZWRDYW52YXNTaXplOihmdW5jdGlvbigpe2lmKHR5cGVvZiBTREwhPSJ1bmRlZmluZWQiKXt2YXIgZmxhZ3M9SEVBUFUzMltTREwuc2NyZWVuK1J1bnRpbWUuUVVBTlRVTV9TSVpFKjA+PjJdO2ZsYWdzPWZsYWdzJn44Mzg4NjA4O0hFQVAzMltTREwuc2NyZWVuK1J1bnRpbWUuUVVBTlRVTV9TSVpFKjA+PjJdPWZsYWdzfUJyb3dzZXIudXBkYXRlUmVzaXplTGlzdGVuZXJzKCl9KSx1cGRhdGVDYW52YXNEaW1lbnNpb25zOihmdW5jdGlvbihjYW52YXMsd05hdGl2ZSxoTmF0aXZlKXtpZih3TmF0aXZlJiZoTmF0aXZlKXtjYW52YXMud2lkdGhOYXRpdmU9d05hdGl2ZTtjYW52YXMuaGVpZ2h0TmF0aXZlPWhOYXRpdmV9ZWxzZXt3TmF0aXZlPWNhbnZhcy53aWR0aE5hdGl2ZTtoTmF0aXZlPWNhbnZhcy5oZWlnaHROYXRpdmV9dmFyIHc9d05hdGl2ZTt2YXIgaD1oTmF0aXZlO2lmKE1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSYmTW9kdWxlWyJmb3JjZWRBc3BlY3RSYXRpbyJdPjApe2lmKHcvaDxNb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pe3c9TWF0aC5yb3VuZChoKk1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSl9ZWxzZXtoPU1hdGgucm91bmQody9Nb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pfX1pZigoZG9jdW1lbnRbIndlYmtpdEZ1bGxTY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1vekZ1bGxzY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJmdWxsU2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsiZnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKT09PWNhbnZhcy5wYXJlbnROb2RlJiZ0eXBlb2Ygc2NyZWVuIT0idW5kZWZpbmVkIil7dmFyIGZhY3Rvcj1NYXRoLm1pbihzY3JlZW4ud2lkdGgvdyxzY3JlZW4uaGVpZ2h0L2gpO3c9TWF0aC5yb3VuZCh3KmZhY3Rvcik7aD1NYXRoLnJvdW5kKGgqZmFjdG9yKX1pZihCcm93c2VyLnJlc2l6ZUNhbnZhcyl7aWYoY2FudmFzLndpZHRoIT13KWNhbnZhcy53aWR0aD13O2lmKGNhbnZhcy5oZWlnaHQhPWgpY2FudmFzLmhlaWdodD1oO2lmKHR5cGVvZiBjYW52YXMuc3R5bGUhPSJ1bmRlZmluZWQiKXtjYW52YXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Y2FudmFzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKX19ZWxzZXtpZihjYW52YXMud2lkdGghPXdOYXRpdmUpY2FudmFzLndpZHRoPXdOYXRpdmU7aWYoY2FudmFzLmhlaWdodCE9aE5hdGl2ZSljYW52YXMuaGVpZ2h0PWhOYXRpdmU7aWYodHlwZW9mIGNhbnZhcy5zdHlsZSE9InVuZGVmaW5lZCIpe2lmKHchPXdOYXRpdmV8fGghPWhOYXRpdmUpe2NhbnZhcy5zdHlsZS5zZXRQcm9wZXJ0eSgid2lkdGgiLHcrInB4IiwiaW1wb3J0YW50Iik7Y2FudmFzLnN0eWxlLnNldFByb3BlcnR5KCJoZWlnaHQiLGgrInB4IiwiaW1wb3J0YW50Iil9ZWxzZXtjYW52YXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Y2FudmFzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKX19fX0pfTtmdW5jdGlvbiBfX19jdHlwZV9iX2xvYygpe3ZhciBtZT1fX19jdHlwZV9iX2xvYztpZighbWUucmV0KXt2YXIgdmFsdWVzPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwyLDIsMiwyLDIsMiwyLDIsODE5NSw4MTk0LDgxOTQsODE5NCw4MTk0LDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDI0NTc3LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTt2YXIgaTE2c2l6ZT0yO3ZhciBhcnI9X21hbGxvYyh2YWx1ZXMubGVuZ3RoKmkxNnNpemUpO2Zvcih2YXIgaT0wO2k8dmFsdWVzLmxlbmd0aDtpKyspe0hFQVAxNlthcnIraSppMTZzaXplPj4xXT12YWx1ZXNbaV19bWUucmV0PWFsbG9jYXRlKFthcnIrMTI4KmkxNnNpemVdLCJpMTYqIixBTExPQ19OT1JNQUwpfXJldHVybiBtZS5yZXR9ZnVuY3Rpb24gX2ZyZWUoKXt9TW9kdWxlWyJfZnJlZSJdPV9mcmVlO2Z1bmN0aW9uIF9mcmVlbG9jYWxlKGxvY2FsZSl7X2ZyZWUobG9jYWxlKX1mdW5jdGlvbiBfX19jeGFfYWxsb2NhdGVfZXhjZXB0aW9uKHNpemUpe3ZhciBwdHI9X21hbGxvYyhzaXplK19fX2N4YV9leGNlcHRpb25faGVhZGVyX3NpemUpO3JldHVybiBwdHIrX19fY3hhX2V4Y2VwdGlvbl9oZWFkZXJfc2l6ZX1mdW5jdGlvbiBfZm1vZCh4LHkpe3JldHVybiB4JXl9dmFyIF9mbW9kbD1fZm1vZDtmdW5jdGlvbiBfY2F0b3BlbihuYW1lLG9mbGFnKXtyZXR1cm4tMX1mdW5jdGlvbiBfY2F0Z2V0cyhjYXRkLHNldF9pZCxtc2dfaWQscyl7cmV0dXJuIHN9ZnVuY3Rpb24gX3NwcmludGYocyxmb3JtYXQsdmFyYXJncyl7cmV0dXJuIF9zbnByaW50ZihzLHVuZGVmaW5lZCxmb3JtYXQsdmFyYXJncyl9ZnVuY3Rpb24gX2FzcHJpbnRmKHMsZm9ybWF0LHZhcmFyZ3Mpe3JldHVybiBfc3ByaW50Zigtcyxmb3JtYXQsdmFyYXJncyl9ZnVuY3Rpb24gX3Zhc3ByaW50ZihzLGZvcm1hdCx2YV9hcmcpe3JldHVybiBfYXNwcmludGYocyxmb3JtYXQsSEVBUDMyW3ZhX2FyZz4+Ml0pfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0KCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0Iik7YWJvcnQoLTEpfWZ1bmN0aW9uIF90aW1lKHB0cil7dmFyIHJldD1NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKTtpZihwdHIpe0hFQVAzMltwdHI+PjJdPXJldH1yZXR1cm4gcmV0fWZ1bmN0aW9uIF9jb3B5c2lnbihhLGIpe3JldHVybiBfX3JlYWxseU5lZ2F0aXZlKGEpPT09X19yZWFsbHlOZWdhdGl2ZShiKT9hOi1hfWZ1bmN0aW9uIF9fX2N0eXBlX3RvdXBwZXJfbG9jKCl7dmFyIG1lPV9fX2N0eXBlX3RvdXBwZXJfbG9jO2lmKCFtZS5yZXQpe3ZhciB2YWx1ZXM9WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwtMSwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDEyMywxMjQsMTI1LDEyNiwxMjcsMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NV07dmFyIGkzMnNpemU9NDt2YXIgYXJyPV9tYWxsb2ModmFsdWVzLmxlbmd0aCppMzJzaXplKTtmb3IodmFyIGk9MDtpPHZhbHVlcy5sZW5ndGg7aSsrKXtIRUFQMzJbYXJyK2kqaTMyc2l6ZT4+Ml09dmFsdWVzW2ldfW1lLnJldD1hbGxvY2F0ZShbYXJyKzEyOCppMzJzaXplXSwiaTMyKiIsQUxMT0NfTk9STUFMKX1yZXR1cm4gbWUucmV0fWZ1bmN0aW9uIF9fX2N4YV9ndWFyZF9hY3F1aXJlKHZhcmlhYmxlKXtpZighSEVBUDhbdmFyaWFibGU+PjBdKXtIRUFQOFt2YXJpYWJsZT4+MF09MTtyZXR1cm4gMX1yZXR1cm4gMH1mdW5jdGlvbiBfX19jdHlwZV90b2xvd2VyX2xvYygpe3ZhciBtZT1fX19jdHlwZV90b2xvd2VyX2xvYztpZighbWUucmV0KXt2YXIgdmFsdWVzPVsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsLTEsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyNywxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XTt2YXIgaTMyc2l6ZT00O3ZhciBhcnI9X21hbGxvYyh2YWx1ZXMubGVuZ3RoKmkzMnNpemUpO2Zvcih2YXIgaT0wO2k8dmFsdWVzLmxlbmd0aDtpKyspe0hFQVAzMlthcnIraSppMzJzaXplPj4yXT12YWx1ZXNbaV19bWUucmV0PWFsbG9jYXRlKFthcnIrMTI4KmkzMnNpemVdLCJpMzIqIixBTExPQ19OT1JNQUwpfXJldHVybiBtZS5yZXR9dmFyIF9fX2N4YV9jYXVnaHRfZXhjZXB0aW9ucz1bXTtmdW5jdGlvbiBfX19jeGFfYmVnaW5fY2F0Y2gocHRyKXtfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udi51bmNhdWdodF9leGNlcHRpb24tLTtfX19jeGFfY2F1Z2h0X2V4Y2VwdGlvbnMucHVzaChfX19jeGFfbGFzdF90aHJvd25fZXhjZXB0aW9uKTtyZXR1cm4gcHRyfU1vZHVsZVsiX2JpdHNoaWZ0NjRTaGwiXT1fYml0c2hpZnQ2NFNobDtmdW5jdGlvbiBfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYoKXtpZighX19aTktTdDlleGNlcHRpb240d2hhdEV2LmJ1ZmZlcil7dmFyIG5hbWU9InN0ZDo6ZXhjZXB0aW9uIjtfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYuYnVmZmVyPV9tYWxsb2MobmFtZS5sZW5ndGgrMSk7d3JpdGVTdHJpbmdUb01lbW9yeShuYW1lLF9fWk5LU3Q5ZXhjZXB0aW9uNHdoYXRFdi5idWZmZXIpfXJldHVybiBfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYuYnVmZmVyfWZ1bmN0aW9uIF9fWk5TdDlleGNlcHRpb25EMkV2KCl7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yKCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yIik7YWJvcnQoLTEpfXZhciBfY29weXNpZ25sPV9jb3B5c2lnbjtmdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbigpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiIpO2Fib3J0KC0xKX12YXIgX19aVElTdDlleGNlcHRpb249YWxsb2NhdGUoW2FsbG9jYXRlKFsxLDAsMCwwLDAsMCwwXSwiaTgiLEFMTE9DX1NUQVRJQykrOCwwXSwiaTMyIixBTExPQ19TVEFUSUMpO3ZhciBfX19kc29faGFuZGxlPWFsbG9jYXRlKDEsImkzMioiLEFMTE9DX1NUQVRJQyk7RlMuc3RhdGljSW5pdCgpO19fQVRJTklUX18udW5zaGlmdCh7ZnVuYzooZnVuY3Rpb24oKXtpZighTW9kdWxlWyJub0ZTSW5pdCJdJiYhRlMuaW5pdC5pbml0aWFsaXplZClGUy5pbml0KCl9KX0pO19fQVRNQUlOX18ucHVzaCh7ZnVuYzooZnVuY3Rpb24oKXtGUy5pZ25vcmVQZXJtaXNzaW9ucz1mYWxzZX0pfSk7X19BVEVYSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe0ZTLnF1aXQoKX0pfSk7TW9kdWxlWyJGU19jcmVhdGVGb2xkZXIiXT1GUy5jcmVhdGVGb2xkZXI7TW9kdWxlWyJGU19jcmVhdGVQYXRoIl09RlMuY3JlYXRlUGF0aDtNb2R1bGVbIkZTX2NyZWF0ZURhdGFGaWxlIl09RlMuY3JlYXRlRGF0YUZpbGU7TW9kdWxlWyJGU19jcmVhdGVQcmVsb2FkZWRGaWxlIl09RlMuY3JlYXRlUHJlbG9hZGVkRmlsZTtNb2R1bGVbIkZTX2NyZWF0ZUxhenlGaWxlIl09RlMuY3JlYXRlTGF6eUZpbGU7TW9kdWxlWyJGU19jcmVhdGVMaW5rIl09RlMuY3JlYXRlTGluaztNb2R1bGVbIkZTX2NyZWF0ZURldmljZSJdPUZTLmNyZWF0ZURldmljZTtfX19lcnJub19zdGF0ZT1SdW50aW1lLnN0YXRpY0FsbG9jKDQpO0hFQVAzMltfX19lcnJub19zdGF0ZT4+Ml09MDtfX0FUSU5JVF9fLnVuc2hpZnQoe2Z1bmM6KGZ1bmN0aW9uKCl7VFRZLmluaXQoKX0pfSk7X19BVEVYSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe1RUWS5zaHV0ZG93bigpfSl9KTtUVFkudXRmOD1uZXcgUnVudGltZS5VVEY4UHJvY2Vzc29yO2lmKEVOVklST05NRU5UX0lTX05PREUpe3ZhciBmcz1yZXF1aXJlKCJmcyIpO05PREVGUy5zdGF0aWNJbml0KCl9X19BVElOSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe1NPQ0tGUy5yb290PUZTLm1vdW50KFNPQ0tGUyx7fSxudWxsKX0pfSk7X2ZnZXRjLnJldD1hbGxvY2F0ZShbMF0sImk4IixBTExPQ19TVEFUSUMpO01vZHVsZVsicmVxdWVzdEZ1bGxTY3JlZW4iXT1mdW5jdGlvbiBNb2R1bGVfcmVxdWVzdEZ1bGxTY3JlZW4obG9ja1BvaW50ZXIscmVzaXplQ2FudmFzKXtCcm93c2VyLnJlcXVlc3RGdWxsU2NyZWVuKGxvY2tQb2ludGVyLHJlc2l6ZUNhbnZhcyl9O01vZHVsZVsicmVxdWVzdEFuaW1hdGlvbkZyYW1lIl09ZnVuY3Rpb24gTW9kdWxlX3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKXtCcm93c2VyLnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKX07TW9kdWxlWyJzZXRDYW52YXNTaXplIl09ZnVuY3Rpb24gTW9kdWxlX3NldENhbnZhc1NpemUod2lkdGgsaGVpZ2h0LG5vVXBkYXRlcyl7QnJvd3Nlci5zZXRDYW52YXNTaXplKHdpZHRoLGhlaWdodCxub1VwZGF0ZXMpfTtNb2R1bGVbInBhdXNlTWFpbkxvb3AiXT1mdW5jdGlvbiBNb2R1bGVfcGF1c2VNYWluTG9vcCgpe0Jyb3dzZXIubWFpbkxvb3AucGF1c2UoKX07TW9kdWxlWyJyZXN1bWVNYWluTG9vcCJdPWZ1bmN0aW9uIE1vZHVsZV9yZXN1bWVNYWluTG9vcCgpe0Jyb3dzZXIubWFpbkxvb3AucmVzdW1lKCl9O01vZHVsZVsiZ2V0VXNlck1lZGlhIl09ZnVuY3Rpb24gTW9kdWxlX2dldFVzZXJNZWRpYSgpe0Jyb3dzZXIuZ2V0VXNlck1lZGlhKCl9O1NUQUNLX0JBU0U9U1RBQ0tUT1A9UnVudGltZS5hbGlnbk1lbW9yeShTVEFUSUNUT1ApO3N0YXRpY1NlYWxlZD10cnVlO1NUQUNLX01BWD1TVEFDS19CQVNFKzUyNDI4ODA7RFlOQU1JQ19CQVNFPURZTkFNSUNUT1A9UnVudGltZS5hbGlnbk1lbW9yeShTVEFDS19NQVgpO2Fzc2VydChEWU5BTUlDX0JBU0U8VE9UQUxfTUVNT1JZLCJUT1RBTF9NRU1PUlkgbm90IGJpZyBlbm91Z2ggZm9yIHN0YWNrIik7dmFyIGN0bHpfaTg9YWxsb2NhdGUoWzgsNyw2LDYsNSw1LDUsNSw0LDQsNCw0LDQsNCw0LDQsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLCJpOCIsQUxMT0NfRFlOQU1JQyk7dmFyIGN0dHpfaTg9YWxsb2NhdGUoWzgsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNiwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDUsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw3LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNSwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDYsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDBdLCJpOCIsQUxMT0NfRFlOQU1JQyk7dmFyIE1hdGhfbWluPU1hdGgubWluO2Z1bmN0aW9uIGludm9rZV9paWlpKGluZGV4LGExLGEyLGEzKXt0cnl7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paWlpIl0oaW5kZXgsYTEsYTIsYTMpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaShpbmRleCl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaSJdKGluZGV4KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92aShpbmRleCxhMSl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aSJdKGluZGV4LGExKX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92aWkoaW5kZXgsYTEsYTIpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpIl0oaW5kZXgsYTEsYTIpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpaWkoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcsYTgsYTkpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpaWlpaSJdKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3LGE4LGE5KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV9paShpbmRleCxhMSl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWkiXShpbmRleCxhMSl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaWlpaWQoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpaWQiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaShpbmRleCxhMSxhMixhMyl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpIl0oaW5kZXgsYTEsYTIsYTMpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWQoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpZCJdKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92KGluZGV4KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3YiXShpbmRleCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaWlpaWlpaWlpKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3LGE4KXt0cnl7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paWlpaWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaWlpaWkoaW5kZXgsYTEsYTIsYTMsYTQpe3RyeXtyZXR1cm4gTW9kdWxlWyJkeW5DYWxsX2lpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSxhNil7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX2lpaShpbmRleCxhMSxhMil7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWlpIl0oaW5kZXgsYTEsYTIpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX2lpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpKGluZGV4LGExLGEyLGEzLGE0KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3ZpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gYXNtUHJpbnRJbnQoeCx5KXtNb2R1bGUucHJpbnQoImludCAiK3grIiwiK3kpfWZ1bmN0aW9uIGFzbVByaW50RmxvYXQoeCx5KXtNb2R1bGUucHJpbnQoImZsb2F0ICIreCsiLCIreSl9dmFyIGFzbT0oZnVuY3Rpb24oZ2xvYmFsLGVudixidWZmZXIpIHsKLy8gRU1TQ1JJUFRFTl9TVEFSVF9BU00KInVzZSBhc20iO3ZhciBhPW5ldyBnbG9iYWwuSW50OEFycmF5KGJ1ZmZlcik7dmFyIGI9bmV3IGdsb2JhbC5JbnQxNkFycmF5KGJ1ZmZlcik7dmFyIGM9bmV3IGdsb2JhbC5JbnQzMkFycmF5KGJ1ZmZlcik7dmFyIGQ9bmV3IGdsb2JhbC5VaW50OEFycmF5KGJ1ZmZlcik7dmFyIGU9bmV3IGdsb2JhbC5VaW50MTZBcnJheShidWZmZXIpO3ZhciBmPW5ldyBnbG9iYWwuVWludDMyQXJyYXkoYnVmZmVyKTt2YXIgZz1uZXcgZ2xvYmFsLkZsb2F0MzJBcnJheShidWZmZXIpO3ZhciBoPW5ldyBnbG9iYWwuRmxvYXQ2NEFycmF5KGJ1ZmZlcik7dmFyIGk9ZW52LlNUQUNLVE9QfDA7dmFyIGo9ZW52LlNUQUNLX01BWHwwO3ZhciBrPWVudi50ZW1wRG91YmxlUHRyfDA7dmFyIGw9ZW52LkFCT1JUfDA7dmFyIG09ZW52LmN0dHpfaTh8MDt2YXIgbj1lbnYuY3Rsel9pOHwwO3ZhciBvPWVudi5fX1pUSVN0OWV4Y2VwdGlvbnwwO3ZhciBwPWVudi5fX19kc29faGFuZGxlfDA7dmFyIHE9ZW52Ll9zdGRlcnJ8MDt2YXIgcj1lbnYuX3N0ZGlufDA7dmFyIHM9ZW52Ll9zdGRvdXR8MDt2YXIgdD0wO3ZhciB1PTA7dmFyIHY9MDt2YXIgdz0wO3ZhciB4PStlbnYuTmFOLHk9K2Vudi5JbmZpbml0eTt2YXIgej0wLEE9MCxCPTAsQz0wLEQ9MC4wLEU9MCxGPTAsRz0wLEg9MC4wO3ZhciBJPTA7dmFyIEo9MDt2YXIgSz0wO3ZhciBMPTA7dmFyIE09MDt2YXIgTj0wO3ZhciBPPTA7dmFyIFA9MDt2YXIgUT0wO3ZhciBSPTA7dmFyIFM9Z2xvYmFsLk1hdGguZmxvb3I7dmFyIFQ9Z2xvYmFsLk1hdGguYWJzO3ZhciBVPWdsb2JhbC5NYXRoLnNxcnQ7dmFyIFY9Z2xvYmFsLk1hdGgucG93O3ZhciBXPWdsb2JhbC5NYXRoLmNvczt2YXIgWD1nbG9iYWwuTWF0aC5zaW47dmFyIFk9Z2xvYmFsLk1hdGgudGFuO3ZhciBaPWdsb2JhbC5NYXRoLmFjb3M7dmFyIF89Z2xvYmFsLk1hdGguYXNpbjt2YXIgJD1nbG9iYWwuTWF0aC5hdGFuO3ZhciBhYT1nbG9iYWwuTWF0aC5hdGFuMjt2YXIgYmE9Z2xvYmFsLk1hdGguZXhwO3ZhciBjYT1nbG9iYWwuTWF0aC5sb2c7dmFyIGRhPWdsb2JhbC5NYXRoLmNlaWw7dmFyIGVhPWdsb2JhbC5NYXRoLmltdWw7dmFyIGZhPWVudi5hYm9ydDt2YXIgZ2E9ZW52LmFzc2VydDt2YXIgaGE9ZW52LmFzbVByaW50SW50O3ZhciBpYT1lbnYuYXNtUHJpbnRGbG9hdDt2YXIgamE9ZW52Lm1pbjt2YXIga2E9ZW52LmpzQ2FsbDt2YXIgbGE9ZW52Lmludm9rZV9paWlpO3ZhciBtYT1lbnYuaW52b2tlX3ZpaWlpaWlpO3ZhciBuYT1lbnYuaW52b2tlX3ZpaWlpaTt2YXIgb2E9ZW52Lmludm9rZV9pO3ZhciBwYT1lbnYuaW52b2tlX3ZpO3ZhciBxYT1lbnYuaW52b2tlX3ZpaTt2YXIgcmE9ZW52Lmludm9rZV92aWlpaWlpaWlpO3ZhciBzYT1lbnYuaW52b2tlX2lpO3ZhciB0YT1lbnYuaW52b2tlX3ZpaWlpaWlkO3ZhciB1YT1lbnYuaW52b2tlX3ZpaWk7dmFyIHZhPWVudi5pbnZva2VfdmlpaWlpZDt2YXIgd2E9ZW52Lmludm9rZV92O3ZhciB4YT1lbnYuaW52b2tlX2lpaWlpaWlpaTt2YXIgeWE9ZW52Lmludm9rZV9paWlpaTt2YXIgemE9ZW52Lmludm9rZV92aWlpaWlpaWk7dmFyIEFhPWVudi5pbnZva2VfdmlpaWlpaTt2YXIgQmE9ZW52Lmludm9rZV9paWk7dmFyIENhPWVudi5pbnZva2VfaWlpaWlpO3ZhciBEYT1lbnYuaW52b2tlX3ZpaWlpO3ZhciBFYT1lbnYuX2ZhYnM7dmFyIEZhPWVudi5fc3NjYW5mO3ZhciBHYT1lbnYuX3B0aHJlYWRfY29uZF93YWl0O3ZhciBIYT1lbnYuX19fY3R5cGVfdG9sb3dlcl9sb2M7dmFyIElhPWVudi5fYXNwcmludGY7dmFyIEphPWVudi5fX2VtYmluZF9yZWdpc3Rlcl92b2lkO3ZhciBLYT1lbnYuX3NlbmQ7dmFyIExhPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldzt2YXIgTWE9ZW52Ll92c3NjYW5mO3ZhciBOYT1lbnYuX19fY3R5cGVfYl9sb2M7dmFyIE9hPWVudi5fX1pTdDl0ZXJtaW5hdGV2O3ZhciBQYT1lbnYuX2Ztb2Q7dmFyIFFhPWVudi5fX19jeGFfZ3VhcmRfYWNxdWlyZTt2YXIgUmE9ZW52Ll9fX3NldEVyck5vO3ZhciBTYT1lbnYuX19fY3hhX2lzX251bWJlcl90eXBlO3ZhciBUYT1lbnYuX19fZ3h4X3BlcnNvbmFsaXR5X3YwO3ZhciBVYT1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcjt2YXIgVmE9ZW52Ll91bmdldGM7dmFyIFdhPWVudi5fX19hc3NlcnRfZmFpbDt2YXIgWGE9ZW52Ll9fX2N4YV9hbGxvY2F0ZV9leGNlcHRpb247dmFyIFlhPWVudi5fX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udjt2YXIgWmE9ZW52Ll9fX2N0eXBlX3RvdXBwZXJfbG9jO3ZhciBfYT1lbnYuX2ZmbHVzaDt2YXIgJGE9ZW52Ll9fX2N4YV9ndWFyZF9yZWxlYXNlO3ZhciBhYj1lbnYuX19hZGREYXlzO3ZhciBiYj1lbnYuX19fZXJybm9fbG9jYXRpb247dmFyIGNiPWVudi5fcHdyaXRlO3ZhciBkYj1lbnYuX3N0cmVycm9yX3I7dmFyIGViPWVudi5fc3RyZnRpbWVfbDt2YXIgZmI9ZW52Ll9fZm9ybWF0U3RyaW5nO3ZhciBnYj1lbnYuX19yZWFsbHlOZWdhdGl2ZTt2YXIgaGI9ZW52Ll9zYnJrO3ZhciBpYj1lbnYuX3VzZWxvY2FsZTt2YXIgamI9ZW52Ll9jYXRnZXRzO3ZhciBrYj1lbnYuX25ld2xvY2FsZTt2YXIgbGI9ZW52Ll9zbnByaW50Zjt2YXIgbWI9ZW52Ll9fX2N4YV9iZWdpbl9jYXRjaDt2YXIgbmI9ZW52Ll9lbXNjcmlwdGVuX21lbWNweV9iaWc7dmFyIG9iPWVudi5fZmlsZW5vO3ZhciBwYj1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfYm9vbDt2YXIgcWI9ZW52Ll9fX3Jlc3VtZUV4Y2VwdGlvbjt2YXIgcmI9ZW52Ll9fX2N4YV9maW5kX21hdGNoaW5nX2NhdGNoO3ZhciBzYj1lbnYuX3N5c2NvbmY7dmFyIHRiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nO3ZhciB1Yj1lbnYuX3N0cmZ0aW1lO3ZhciB2Yj1lbnYuX19hcnJheVN1bTt2YXIgd2I9ZW52Ll9fX2N4YV90aHJvdzt2YXIgeGI9ZW52Ll9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsO3ZhciB5Yj1lbnYuX19leGl0O3ZhciB6Yj1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfZnVuY3Rpb247dmFyIEFiPWVudi5fX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXY7dmFyIEJiPWVudi5fcHRocmVhZF9tdXRleF9kZXN0cm95O3ZhciBDYj1lbnYuX3B0aHJlYWRfbXV0ZXhfdW5sb2NrO3ZhciBEYj1lbnYuX2ZyZWFkO3ZhciBFYj1lbnYuX3B0aHJlYWRfY29uZF9icm9hZGNhc3Q7dmFyIEZiPWVudi5fbWtwb3J0O3ZhciBHYj1lbnYuX3NwcmludGY7dmFyIEhiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9jbGFzczt2YXIgSWI9ZW52Ll92YXNwcmludGY7dmFyIEpiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZzt2YXIgS2I9ZW52Ll93cml0ZTt2YXIgTGI9ZW52Ll9faXNMZWFwWWVhcjt2YXIgTWI9ZW52Ll9fc2NhblN0cmluZzt2YXIgTmI9ZW52Ll9zdHJlcnJvcjt2YXIgT2I9ZW52Ll9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yO3ZhciBQYj1lbnYuX3JlY3Y7dmFyIFFiPWVudi5fdnNucHJpbnRmO3ZhciBSYj1lbnYuX19aTlN0OWV4Y2VwdGlvbkQyRXY7dmFyIFNiPWVudi5fY29weXNpZ247dmFyIFRiPWVudi5fZmdldGM7dmFyIFViPWVudi5fX19jeGFfZG9lc19pbmhlcml0O3ZhciBWYj1lbnYuX2ZyZWVsb2NhbGU7dmFyIFdiPWVudi5fcmVhZDt2YXIgWGI9ZW52Ll9hYm9ydDt2YXIgWWI9ZW52Ll9jYXRjbG9zZTt2YXIgWmI9ZW52Ll9md3JpdGU7dmFyIF9iPWVudi5fdGltZTt2YXIgJGI9ZW52Ll9wdGhyZWFkX211dGV4X2xvY2s7dmFyIGFjPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9mbG9hdDt2YXIgYmM9ZW52Ll9wcmVhZDt2YXIgY2M9ZW52Ll9hdGV4aXQ7dmFyIGRjPWVudi5fY2F0b3Blbjt2YXIgZWM9ZW52Ll9leGl0O3ZhciBmYz1lbnYuX19nZXRGbG9hdDt2YXIgZ2M9MC4wOwovLyBFTVNDUklQVEVOX1NUQVJUX0ZVTkNTCmZ1bmN0aW9uIEFjKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2k9aSthfDA7aT1pKzcmLTg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBCYygpe3JldHVybiBpfDB9ZnVuY3Rpb24gQ2MoYSl7YT1hfDA7aT1hfWZ1bmN0aW9uIERjKGEsYil7YT1hfDA7Yj1ifDA7aWYoKHR8MCk9PTApe3Q9YTt1PWJ9fWZ1bmN0aW9uIEVjKGIpe2I9YnwwO2Fbaz4+MF09YVtiPj4wXTthW2srMT4+MF09YVtiKzE+PjBdO2FbaysyPj4wXT1hW2IrMj4+MF07YVtrKzM+PjBdPWFbYiszPj4wXX1mdW5jdGlvbiBGYyhiKXtiPWJ8MDthW2s+PjBdPWFbYj4+MF07YVtrKzE+PjBdPWFbYisxPj4wXTthW2srMj4+MF09YVtiKzI+PjBdO2FbayszPj4wXT1hW2IrMz4+MF07YVtrKzQ+PjBdPWFbYis0Pj4wXTthW2srNT4+MF09YVtiKzU+PjBdO2Fbays2Pj4wXT1hW2IrNj4+MF07YVtrKzc+PjBdPWFbYis3Pj4wXX1mdW5jdGlvbiBHYyhhKXthPWF8MDtJPWF9ZnVuY3Rpb24gSGMoKXtyZXR1cm4gSXwwfWZ1bmN0aW9uIEljKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtmPWk7aT1pKzE2fDA7bT1mO2w9U2MoamgoU2MoODM1Miw1MTY4KXwwLGUpfDAsNTE4NCl8MDtqPWNbbCsoKGNbKGNbbD4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO2g9ais0fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1ttPj4yXT0xMzQ1NjtjW20rND4+Ml09MjA4O2NbbSs4Pj4yXT0wO2NnKDEzNDU2LG0pfW09KGNbMTM0NjA+PjJdfDApKyAtMXwwO249Y1tqKzg+PjJdfDA7aWYoKGNbaisxMj4+Ml18MCktbj4+Mj4+PjA+bT4+PjA/KGs9Y1tuKyhtPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywxMCl8MDtuPWNbaD4+Ml18MDtjW2g+PjJdPW4rIC0xO2lmKChufDApPT0wKXtsY1tjWyhjW2o+PjJdfDApKzg+PjJdJjI1NV0oail9bGgobCxrKTtZZyhsKTt3aGlsZSgxKXtoPXVuKDIwKXwwO2lmKChofDApIT0wKXticmVha31oPWNbNTY2Nl18MDtjWzU2NjZdPWgrMDtpZigoaHwwKT09MCl7Zz0xNDticmVha31zY1toJjMxXSgpfWlmKChnfDApPT0xNCl7bj1YYSg0KXwwO2Nbbj4+Ml09MjI2ODA7d2IobnwwLDIyNzI4LDIwNil9Y1toPj4yXT1kO2NbaCs0Pj4yXT1lO2NbaCs4Pj4yXT0wO2FbaCsxMj4+MF09MDthW2grMTM+PjBdPTA7Y1toKzE2Pj4yXT0wO3doaWxlKDEpe2Q9dW4oMTYpfDA7aWYoKGR8MCkhPTApe2JyZWFrfWU9Y1s1NjY2XXwwO2NbNTY2Nl09ZSswO2lmKChlfDApPT0wKXtnPTIwO2JyZWFrfXNjW2UmMzFdKCl9aWYoKGd8MCk9PTIwKXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1jW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2Q+PjJdPTc0MDg7Y1tkKzEyPj4yXT1oO2NbYj4+Ml09aDtuPWIrNHwwO2U9Y1tuPj4yXXwwO2Nbbj4+Ml09ZDtpZigoZXwwKSE9MCl7bT1lKzR8MDtuPWNbbT4+Ml18MDtjW20+PjJdPW4rIC0xO2lmKChufDApPT0wPyhsY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSksbT1lKzh8MCxuPWNbbT4+Ml18MCxjW20+PjJdPW4rIC0xLChufDApPT0wKTowKXtsY1tjWyhjW2U+PjJdfDApKzE2Pj4yXSYyNTVdKGUpfWg9Y1tiPj4yXXwwfXdoaWxlKDEpe2U9dW4oMzUyKXwwO2lmKChlfDApIT0wKXticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7Zz0zMTticmVha31zY1tlJjMxXSgpfWlmKChnfDApPT0zMSl7bj1YYSg0KXwwO2Nbbj4+Ml09MjI2ODA7d2IobnwwLDIyNzI4LDIwNil9Y1tlPj4yXT1oO2NbZSs0Pj4yXT1oO2NbZSs4Pj4yXT0wO2NbZSsxMj4+Ml09MDtqPXVuKDEwNDg2NDQpfDA7aD1qKzY4Ji02NDtjW2grIC00Pj4yXT1qO2NbZSsxNj4+Ml09aDtoPWUrMjc5fDA7YVtoPj4wXT0wO2FbaCsxPj4wXT0wO2g9ZSsyODF8MDthW2g+PjBdPTA7YVtoKzE+PjBdPTA7YVtoKzI+PjBdPTA7YVtoKzM+PjBdPTA7aD1lKzM0NHwwO2o9ZSsyODh8MDtkPWorNTZ8MDtkb3tjW2o+PjJdPTA7aj1qKzR8MH13aGlsZSgoanwwKTwoZHwwKSk7bj1oO2Nbbj4+Ml09LTE7Y1tuKzQ+PjJdPS0xO29lKGUpO3doaWxlKDEpe2Q9dW4oMTYpfDA7aWYoKGR8MCkhPTApe2JyZWFrfWQ9Y1s1NjY2XXwwO2NbNTY2Nl09ZCswO2lmKChkfDApPT0wKXtnPTM3O2JyZWFrfXNjW2QmMzFdKCl9aWYoKGd8MCk9PTM3KXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1jW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2Q+PjJdPTcxMjg7Y1tkKzEyPj4yXT1lO2NbYis4Pj4yXT1lO249YisxMnwwO2c9Y1tuPj4yXXwwO2Nbbj4+Ml09ZDtpZigoZ3wwKT09MCl7aT1mO3JldHVybn1tPWcrNHwwO249Y1ttPj4yXXwwO2NbbT4+Ml09bisgLTE7aWYoKG58MCkhPTApe2k9ZjtyZXR1cm59bGNbY1soY1tnPj4yXXwwKSs4Pj4yXSYyNTVdKGcpO209Zys4fDA7bj1jW20+PjJdfDA7Y1ttPj4yXT1uKyAtMTtpZigobnwwKSE9MCl7aT1mO3JldHVybn1sY1tjWyhjW2c+PjJdfDApKzE2Pj4yXSYyNTVdKGcpO2k9ZjtyZXR1cm59bj1YYSg0KXwwO2Nbbj4+Ml09MjEzMDQ7d2IobnwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gSmMoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7aD1pO2k9aSsxNzZ8MDtnPWg7az1oKzMyfDA7aj1oKzI0fDA7Zj1oKzEyfDA7Yj1jW2IrOD4+Ml18MDttPWIrMzM2fDA7Qj1tO0M9YisyNTl8MDtsPWIrMzIwfDA7aWYoKCEoKGNbQis0Pj4yXXwwKT09MD8oY1tCPj4yXXwwKT09KGRbQz4+MF18ZFtDKzE+PjBdPDw4fGRbQysyPj4wXTw8MTZ8ZFtDKzM+PjBdPDwyNHwwKTowKT8obj1jW2w+PjJdfDAsKG58MCkhPTApOjApPyhjW2IrMzEyPj4yXXwwKSE9MDowKXt6PW47Qj1jW3o+PjJdfDA7Qj1jW0I+PjJdfDA7bWNbQiYxMjddKHosZSk7ej1tO0I9ejtCPWNbQj4+Ml18MDt6PXorNHwwO3o9Y1t6Pj4yXXwwO3o9SW4oQnwwLHp8MCwxLDApfDA7Qj1JO0M9bTtBPUM7Y1tBPj4yXT16O0M9Qys0fDA7Y1tDPj4yXT1CO2k9aDtyZXR1cm59Y1tsPj4yXT0wO249YiszMjR8MDtwPWNbbj4+Ml18MDtjW24+PjJdPTA7aWYoKChwfDApIT0wPyhCPXArNHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApPyhsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCksQj1wKzh8MCxDPWNbQj4+Ml18MCxjW0I+PjJdPUMrIC0xLChDfDApPT0wKTowKXtsY1tjWyhjW3A+PjJdfDApKzE2Pj4yXSYyNTVdKHApfXM9YiszMTJ8MDtjW3M+PjJdPTA7cj1iKzMxNnwwO3A9Y1tyPj4yXXwwO2Nbcj4+Ml09MDtpZigoKHB8MCkhPTA/KEI9cCs0fDAsQz1jW0I+PjJdfDAsY1tCPj4yXT1DKyAtMSwoQ3wwKT09MCk6MCk/KGxjW2NbKGNbcD4+Ml18MCkrOD4+Ml0mMjU1XShwKSxCPXArOHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApe2xjW2NbKGNbcD4+Ml18MCkrMTY+PjJdJjI1NV0ocCl9d2hpbGUoMSl7cD11bigxMil8MDtpZigocHwwKSE9MCl7YnJlYWt9cD1jWzU2NjZdfDA7Y1s1NjY2XT1wKzA7aWYoKHB8MCk9PTApe289MTU7YnJlYWt9c2NbcCYzMV0oKX1pZigob3wwKT09MTUpe0M9WGEoNCl8MDtjW0M+PjJdPTIyNjgwO3diKEN8MCwyMjcyOCwyMDYpfWNbcD4+Ml09Yis0O2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0tMTt3aGlsZSgxKXt0PXVuKDE2KXwwO2lmKCh0fDApIT0wKXticmVha310PWNbNTY2Nl18MDtjWzU2NjZdPXQrMDtpZigodHwwKT09MCl7bz0yMTticmVha31zY1t0JjMxXSgpfWlmKChvfDApPT0yMSl7Qz1YYSg0KXwwO2NbQz4+Ml09MjI2ODA7d2IoQ3wwLDIyNzI4LDIwNil9Y1t0KzQ+PjJdPTA7Y1t0Kzg+PjJdPTA7Y1t0Pj4yXT00ODQwO2NbdCsxMj4+Ml09cDtjW3M+PjJdPXA7dT1jW3I+PjJdfDA7Y1tyPj4yXT10O2lmKCh1fDApIT0wKXtCPXUrNHwwO0M9Y1tCPj4yXXwwO2NbQj4+Ml09QysgLTE7aWYoKEN8MCk9PTA/KGxjW2NbKGNbdT4+Ml18MCkrOD4+Ml0mMjU1XSh1KSxCPXUrOHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApe2xjW2NbKGNbdT4+Ml18MCkrMTY+PjJdJjI1NV0odSl9cD1jW3M+PjJdfDB9eT1rKzY0fDA7cz1rKzh8MDtjW3M+PjJdPTQ1MjA7dT1rKzEyfDA7Y1trPj4yXT00NjUyO2NbeT4+Ml09NDY3MjtjW2srND4+Ml09MDtyPWsrNjR8MDtjW2srODg+PjJdPXU7Y1trKzgwPj4yXT0wO2Nbays4ND4+Ml09MDtjW2srNjg+PjJdPTQwOTg7Y1trKzc2Pj4yXT0wO2Nbays3Mj4+Ml09Njt4PWsrOTJ8MDt0PWsrOTZ8MDt3PXQrNDB8MDtkb3tjW3Q+PjJdPTA7dD10KzR8MH13aGlsZSgodHwwKTwod3wwKSk7WGsoeCk7Y1trKzEzNj4+Ml09MDtjW2srMTQwPj4yXT0tMTtjW2s+PjJdPTQ1MDA7Y1t5Pj4yXT00NTQwO2Nbcz4+Ml09NDUyMDtjW3U+PjJdPTEwNjY0O3Q9aysxNnwwO1hrKHQpO3g9aysyMHwwO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbeCsxMj4+Ml09MDtjW3grMTY+PjJdPTA7Y1t4KzIwPj4yXT0wO2NbdT4+Ml09NDY4ODt1PWsrNDR8MDt5PWsrNjB8MDtjW3UrMD4+Ml09MDtjW3UrND4+Ml09MDtjW3UrOD4+Ml09MDtjW3UrMTI+PjJdPTA7Y1t5Pj4yXT0yNDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDthW3UrMT4+MF09MDtpZigoYVt1Pj4wXSYxKT09MCl7YVt1Pj4wXT0wfWVsc2V7Y1trKzQ4Pj4yXT0wfXc9ays1NnwwO2Nbdz4+Ml09MDt6PWFbdT4+MF18MDtpZigoeiYxKT09MCl7QT11KygoeiYyNTUpPj4+MSkrMXwwO2Nbdz4+Ml09QTt6PXUrMXwwfWVsc2V7ej1jW2srNTI+PjJdfDA7QT16KyhjW2srNDg+PjJdfDApfDA7Y1t3Pj4yXT1BfWNbeD4+Ml09ejtjW2srMjQ+PjJdPXo7Y1trKzI4Pj4yXT1BO0M9YVt1Pj4wXXwwO2lmKChDJjEpPT0wKXt6PShDJjI1NSk+Pj4xO2Nbdz4+Ml09dSt6KzE7QT0xMH1lbHNle3o9Y1trKzQ4Pj4yXXwwO2Nbdz4+Ml09KGNbays1Mj4+Ml18MCkrejtBPWNbdT4+Ml18MDtDPUEmMjU1O0E9KEEmLTIpKyAtMXwwfUI9KEMmMSk9PTA7aWYoQil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1trKzQ4Pj4yXXwwfWRve2lmKCEoQz4+PjA8QT4+PjApKXtpZihCKXthW3UrQSsxPj4wXT0wO2FbdT4+MF09QTw8MTticmVha31lbHNle2FbKGNbays1Mj4+Ml18MCkrQT4+MF09MDtjW2srNDg+PjJdPUE7YnJlYWt9fWVsc2V7aGcodSxBLUN8MCl9fXdoaWxlKDApO0I9YVt1Pj4wXXwwO2lmKChCJjEpPT0wKXtBPXUrMXwwO0I9KEImMjU1KT4+PjF9ZWxzZXtBPWNbays1Mj4+Ml18MDtCPWNbays0OD4+Ml18MH1DPWsrMzZ8MDtjW0M+PjJdPUE7Y1trKzMyPj4yXT1BO2Nbays0MD4+Ml09QStCO2lmKChjW3k+PjJdJjN8MCkhPTApe2NbQz4+Ml09QSt6fWlmKCEoKGFbZz4+MF0mMSk9PTApPyh2PWNbZys4Pj4yXXwwLCh2fDApIT0wKTowKXt2bih2KX1BPWNbYiszMDA+PjJdfDA7dj1jW2IrMzA0Pj4yXXwwO2lmKChBfDApIT0odnwwKSl7ej1rKzh8MDtkb3tCPWNbQT4+Ml18MDtDPWNbQSs0Pj4yXXwwO0Q9Y1tBKzg+PjJdfDA7aWgoU2MoaWgoU2MoaWgoU2Moeiw0NDY0KXwwLEQpfDAsNDQ3Mil8MCxCKXwwLDQ0ODApfDAsQyl8MDtBPUErMTJ8MH13aGlsZSgoQXwwKSE9KHZ8MCkpfXY9Y1t5Pj4yXXwwO2Rve2lmKCh2JjE2fDApPT0wKXtpZigodiY4fDApPT0wKXtjW2YrMD4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDticmVha314PWNbeD4+Ml18MDt3PWNbaysyOD4+Ml18MDt2PXg7QT13LXZ8MDtpZihBPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWRve2lmKEE+Pj4wPDExKXthW2Y+PjBdPUE8PDE7Qj1mKzF8MH1lbHNle3o9QSsxNiYtMTY7eT0oenwwKT09MD8xOno7d2hpbGUoMSl7Qj11bih5KXwwO2lmKChCfDApIT0wKXtvPTkzO2JyZWFrfUI9Y1s1NjY2XXwwO2NbNTY2Nl09QiswO2lmKChCfDApPT0wKXticmVha31zY1tCJjMxXSgpfWlmKChvfDApPT05Myl7Y1tmKzg+PjJdPUI7Y1tmPj4yXT16fDE7Y1tmKzQ+PjJdPUE7YnJlYWt9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKCh4fDApIT0od3wwKSl7bz1CO3doaWxlKDEpe2Fbbz4+MF09YVt4Pj4wXXwwO3g9eCsxfDA7aWYoKHh8MCk9PSh3fDApKXticmVha31lbHNle289bysxfDB9fUI9QisodysoMC12KSl8MH1hW0I+PjBdPTB9ZWxzZXt4PWNbdz4+Ml18MDt2PWNbayszNj4+Ml18MDtpZih4Pj4+MDx2Pj4+MCl7Y1t3Pj4yXT12fWVsc2V7dj14fXg9Y1trKzMyPj4yXXwwO3c9eDt6PXYtd3wwO2lmKHo+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoej4+PjA8MTEpe2FbZj4+MF09ejw8MTtCPWYrMXwwfWVsc2V7eT16KzE2Ji0xNjtBPSh5fDApPT0wPzE6eTt3aGlsZSgxKXtCPXVuKEEpfDA7aWYoKEJ8MCkhPTApe289NzY7YnJlYWt9Qj1jWzU2NjZdfDA7Y1s1NjY2XT1CKzA7aWYoKEJ8MCk9PTApe2JyZWFrfXNjW0ImMzFdKCl9aWYoKG98MCk9PTc2KXtjW2YrOD4+Ml09QjtjW2Y+PjJdPXl8MTtjW2YrND4+Ml09ejticmVha31EPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKHh8MCkhPSh2fDApKXtvPUI7d2hpbGUoMSl7YVtvPj4wXT1hW3g+PjBdfDA7eD14KzF8MDtpZigoeHwwKT09KHZ8MCkpe2JyZWFrfWVsc2V7bz1vKzF8MH19Qj1CKyh2KygwLXcpKXwwfWFbQj4+MF09MH19d2hpbGUoMCk7Y1trPj4yXT00NTAwO2Nbays2ND4+Ml09NDU0MDtjW3M+PjJdPTQ1MjA7bz1rKzEyfDA7Y1tvPj4yXT00Njg4O2lmKCEoKGFbdT4+MF0mMSk9PTApPyhxPWNbays1Mj4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9Y1tvPj4yXT0xMDY2NDtvPWNbdD4+Ml18MDtDPW8rNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1yZyhyKTtxPWFbZj4+MF18MDtyPShxJjEpPT0wO2lmKHIpe3Q9KHEmMjU1KT4+PjE7dj1mKzF8MH1lbHNle3Q9Y1tmKzQ+PjJdfDA7dj1jW2YrOD4+Ml18MH1zPXQ+Pj4wPjc7bz1zPzc6dDthOmRve2lmKChvfDApPT0wKXtvPTExMH1lbHNle3U9MTkyO3doaWxlKDEpe2lmKChhW3Y+PjBdfDApIT0oYVt1Pj4wXXwwKSl7bz0xMzA7YnJlYWsgYX1vPW8rIC0xfDA7aWYoKG98MCk9PTApe289MTEwO2JyZWFrfWVsc2V7dj12KzF8MDt1PXUrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xMTApe2lmKHQ+Pj4wPjYmKHNeMSkpe3doaWxlKDEpe2o9dW4oNDc4OCl8MDtpZigoanwwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe289MTE0O2JyZWFrfXNjW2cmMzFdKCl9aWYoKG98MCk9PTExNCl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZmQoaik7YVtqKzQ3ODQ+PjBdPTE7d2hpbGUoMSl7Zz11bigxMil8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe289MTIxO2JyZWFrfXNjW2cmMzFdKCl9aWYoKG98MCk9PTEyMSl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9Y1tnPj4yXT0zNjA4O2NbZys0Pj4yXT1wO2NbZys4Pj4yXT1qO3doaWxlKDEpe2o9dW4oMTYpfDA7aWYoKGp8MCkhPTApe289MTI5O2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXticmVha31zY1tqJjMxXSgpfWlmKChvfDApPT0xMjkpe2Nbais0Pj4yXT0wO2Nbais4Pj4yXT0wO2Nbaj4+Ml09Mzg3MjtjW2orMTI+PjJdPWc7YnJlYWt9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZWxzZXtvPTEzMH19fXdoaWxlKDApO2I6ZG97aWYoKG98MCk9PTEzMCl7aWYocil7dD0ocSYyNTUpPj4+MTt3PWYrMXwwfWVsc2V7dD1jW2YrND4+Ml18MDt3PWNbZis4Pj4yXXwwfXM9dD4+PjA+MTM7dT1zPzEzOnQ7Yzpkb3tpZigodXwwKT09MCl7bz0xMzZ9ZWxzZXt2PTIwMDt3aGlsZSgxKXtpZigoYVt3Pj4wXXwwKSE9KGFbdj4+MF18MCkpe2JyZWFrIGN9dT11KyAtMXwwO2lmKCh1fDApPT0wKXtvPTEzNjticmVha31lbHNle3c9dysxfDA7dj12KzF8MH19fX13aGlsZSgwKTtkb3tpZigob3wwKT09MTM2KXtpZighKHQ+Pj4wPjEyJihzXjEpKSl7YnJlYWt9d2hpbGUoMSl7aj11big1MTE2KXwwO2lmKChqfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNDA7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTQwKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1mZChqKTtlZChqKzQ3ODR8MCk7Y1tqKzQ5NTI+PjJdPTMyO2Nbais0OTU2Pj4yXT05O2Nbais0OTYwPj4yXT04O2Nbais0OTY0Pj4yXT0wO2Nbais0OTg0Pj4yXT0wO2Nbais0OTg4Pj4yXT0wO2Nbais0OTkyPj4yXT0wO2Nbais1MDA4Pj4yXT0xO2Nbais1MDEyPj4yXT0yO2Nbais1MDA0Pj4yXT00MDk2O2Nbais1ZTM+PjJdPTQ7Y1tqKzQ5OTY+PjJdPTQ7Y1tqKzUwMTY+PjJdPTA7Y1tqKzUwMjA+PjJdPTA7Y1tqKzUwMjQ+PjJdPTA7Y1tqKzQ5Njg+PjJdPTMyO2Nbais0OTcyPj4yXT0wO2Nbais0OTc2Pj4yXT0tMjE0NzQ4MzY0ODtjW2orNDk4MD4+Ml09MjE0NzQ4MzY0NztjW2orNDk0OD4+Ml09MDtjW2orNTAzMj4+Ml09MzI7Y1tqKzUwMzY+PjJdPTk7Y1tqKzUwNDA+PjJdPTg7Y1tqKzUwNDQ+PjJdPTA7Y1tqKzUwNjQ+PjJdPTA7Y1tqKzUwNjg+PjJdPTA7Y1tqKzUwNzI+PjJdPTA7Y1tqKzUwODg+PjJdPTE7Y1tqKzUwOTI+PjJdPTI7Y1tqKzUwODQ+PjJdPTQwOTY7Y1tqKzUwODA+PjJdPTQ7Y1tqKzUwNzY+PjJdPTQ7Y1tqKzUwOTY+PjJdPTA7Y1tqKzUxMDA+PjJdPTA7Y1tqKzUxMDQ+PjJdPTA7Y1tqKzUwNDg+PjJdPTMyO2Nbais1MDUyPj4yXT0wO2Nbais1MDU2Pj4yXT0tMjE0NzQ4MzY0ODtjW2orNTA2MD4+Ml09MjE0NzQ4MzY0NztjW2orNTAyOD4+Ml09MDthW2orNTEwOD4+MF09MDthW2orNTEwOT4+MF09MDthW2orNTExMj4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNDg7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTQ4KXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTI2NjQ7Y1tnKzQ+PjJdPXA7Y1tnKzg+PjJdPWo7d2hpbGUoMSl7aj11bigxNil8MDtpZigoanwwKSE9MCl7bz0xNTY7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKG98MCk9PTE1Nil7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7Y1tqPj4yXT0yOTUyO2NbaisxMj4+Ml09ZzticmVhayBifUQ9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihyKXt0PShxJjI1NSk+Pj4xO3Y9ZisxfDB9ZWxzZXt0PWNbZis0Pj4yXXwwO3Y9Y1tmKzg+PjJdfDB9cz10Pj4+MD4xMzt1PXM/MTM6dDtkOmRve2lmKCh1fDApPT0wKXtvPTE2M31lbHNle3c9MjE2O3doaWxlKDEpe2lmKChhW3Y+PjBdfDApIT0oYVt3Pj4wXXwwKSl7YnJlYWsgZH11PXUrIC0xfDA7aWYoKHV8MCk9PTApe289MTYzO2JyZWFrfWVsc2V7dj12KzF8MDt3PXcrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xNjMpe2lmKCEodD4+PjA+MTImKHNeMSkpKXticmVha313aGlsZSgxKXtqPXVuKDUxMDQpfDA7aWYoKGp8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtvPTE2NzticmVha31zY1tnJjMxXSgpfWlmKChvfDApPT0xNjcpe0Q9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfWZkKGopO2JkKGorNDc4NHwwKTthW2orNTEwMD4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNzU7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTc1KXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTE3MjA7Y1tnKzQ+PjJdPXA7Y1tnKzg+PjJdPWo7d2hpbGUoMSl7aj11bigxNil8MDtpZigoanwwKSE9MCl7bz0xODM7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKG98MCk9PTE4Myl7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7Y1tqPj4yXT0yMDA4O2NbaisxMj4+Ml09ZzticmVhayBifUQ9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihyKXtyPShxJjI1NSk+Pj4xO3Q9ZisxfDB9ZWxzZXtyPWNbZis0Pj4yXXwwO3Q9Y1tmKzg+PjJdfDB9cT1yPj4+MD4xOTtzPXE/MTk6cjtlOmRve2lmKChzfDApPT0wKXtvPTE5MH1lbHNle3U9MjMyO3doaWxlKDEpe2lmKChhW3Q+PjBdfDApIT0oYVt1Pj4wXXwwKSl7YnJlYWsgZX1zPXMrIC0xfDA7aWYoKHN8MCk9PTApe289MTkwO2JyZWFrfWVsc2V7dD10KzF8MDt1PXUrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xOTApe2lmKCEocj4+PjA+MTgmKHFeMSkpKXticmVha313aGlsZSgxKXtqPXVuKDU0MzIpfDA7aWYoKGp8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtvPTE5NDticmVha31zY1tnJjMxXSgpfWlmKChvfDApPT0xOTQpe0Q9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfWZkKGopO2VkKGorNDc4NHwwKTtjW2orNDk1Mj4+Ml09MzI7Y1tqKzQ5NTY+PjJdPTk7Y1tqKzQ5NjA+PjJdPTg7Y1tqKzQ5NjQ+PjJdPTA7Y1tqKzQ5ODQ+PjJdPTA7Y1tqKzQ5ODg+PjJdPTA7Y1tqKzQ5OTI+PjJdPTA7Y1tqKzUwMDg+PjJdPTE7Y1tqKzUwMTI+PjJdPTI7Y1tqKzUwMDQ+PjJdPTQwOTY7Y1tqKzVlMz4+Ml09NDtjW2orNDk5Nj4+Ml09NDtjW2orNTAxNj4+Ml09MDtjW2orNTAyMD4+Ml09MDtjW2orNTAyND4+Ml09MDtjW2orNDk2OD4+Ml09MzI7Y1tqKzQ5NzI+PjJdPTA7Y1tqKzQ5NzY+PjJdPS0yMTQ3NDgzNjQ4O2Nbais0OTgwPj4yXT0yMTQ3NDgzNjQ3O2Nbais0OTQ4Pj4yXT0wO2Nbais1MDMyPj4yXT0zMjtjW2orNTAzNj4+Ml09OTtjW2orNTA0MD4+Ml09ODtjW2orNTA0ND4+Ml09MDtjW2orNTA2ND4+Ml09MDtjW2orNTA2OD4+Ml09MDtjW2orNTA3Mj4+Ml09MDtjW2orNTA4OD4+Ml09MTtjW2orNTA5Mj4+Ml09MjtjW2orNTA4ND4+Ml09NDA5NjtjW2orNTA4MD4+Ml09NDtjW2orNTA3Nj4+Ml09NDtjW2orNTA5Nj4+Ml09MDtjW2orNTEwMD4+Ml09MDtjW2orNTEwND4+Ml09MDtjW2orNTA0OD4+Ml09MzI7Y1tqKzUwNTI+PjJdPTA7Y1tqKzUwNTY+PjJdPS0yMTQ3NDgzNjQ4O2Nbais1MDYwPj4yXT0yMTQ3NDgzNjQ3O2Nbais1MDI4Pj4yXT0wO2Fbais1MTA4Pj4wXT0wO2Fbais1MTA5Pj4wXT0wO2JkKGorNTExMnwwKTthW2orNTQyOD4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0yMDM7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MjAzKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTQyNDtjW2crND4+Ml09cDtjW2crOD4+Ml09ajt3aGlsZSgxKXtqPXVuKDE2KXwwO2lmKChqfDApIT0wKXtvPTIxMTticmVha31qPWNbNTY2Nl18MDtjWzU2NjZdPWorMDtpZigoanwwKT09MCl7YnJlYWt9c2NbaiYzMV0oKX1pZigob3wwKT09MjExKXtjW2orND4+Ml09MDtjW2orOD4+Ml09MDtjW2o+PjJdPTEwMDg7Y1tqKzEyPj4yXT1nO2JyZWFrIGJ9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2g9U2MoODM1MiwyNTYpfDA7YVtrPj4wXT0wO2Nbays0Pj4yXT1oO2U9Y1soY1toPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2grKGUrMTYpPj4yXXwwKT09MCl7ZT1jW2grKGUrNzIpPj4yXXwwO2lmKChlfDApIT0wKXtZZyhlKX1hW2s+PjBdPTE7ZT1hW2Y+PjBdfDA7ZG97aWYoKGUmMSk9PTApe289KGUmMjU1KT4+PjE7bT1jWyhjW2g+PjJdfDApKyAtMTI+PjJdfDA7bD1jW2grKG0rMjQpPj4yXXwwO249ZisxfDA7aWYoKGNbaCsobSs0KT4+Ml0mMTc2fDApIT0zMil7ZT1uO2I9bzticmVha31lPW47Yj1vO249ZitvKzF8MH1lbHNle249Y1tmKzQ+PjJdfDA7bT1jWyhjW2g+PjJdfDApKyAtMTI+PjJdfDA7bD1jW2grKG0rMjQpPj4yXXwwO2Y9Y1tmKzg+PjJdfDA7aWYoKGNbaCsobSs0KT4+Ml0mMTc2fDApIT0zMil7ZT1mO2I9bjtuPWY7YnJlYWt9ZT1mO2I9bjtuPWYrbnwwfX13aGlsZSgwKTtmPWgrbXwwO289aCsobSs3Nil8MDtwPWNbbz4+Ml18MDtmOmRve2lmKChwfDApPT0tMSl7cD1jW2grKG0rMjgpPj4yXXwwO209cCs0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tnPj4yXT0xMzQ1NjtjW2crND4+Ml09MjA4O2NbZys4Pj4yXT0wO2NnKDEzNDU2LGcpfXE9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3I9Y1twKzg+PjJdfDA7ZG97aWYoKGNbcCsxMj4+Ml18MCktcj4+Mj4+PjA+cT4+PjApe3E9Y1tyKyhxPDwyKT4+Ml18MDtpZigocXwwKT09MCl7YnJlYWt9cT14Y1tjWyhjW3E+PjJdfDApKzI4Pj4yXSY2M10ocSwzMil8MDtEPWNbbT4+Ml18MDtjW20+PjJdPUQrIC0xO2lmKChEfDApPT0wKXtsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCl9cD1xPDwyND4+MjQ7Y1tvPj4yXT1wO2JyZWFrIGZ9fXdoaWxlKDApO0Q9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtXYyhqLGwsZSxuLGUrYnwwLGYscCYyNTUpO2lmKChjW2o+PjJdfDApIT0wKXticmVha31EPWNbKGNbaD4+Ml18MCkrIC0xMj4+Ml18MDtxZyhoK0R8MCxjW2grKEQrMTYpPj4yXXw1KX19d2hpbGUoMCk7Z2goayk7Zj1jW2grKChjWyhjW2g+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtlPWYrNHwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZz4+Ml09MTM0NTY7Y1tnKzQ+PjJdPTIwODtjW2crOD4+Ml09MDtjZygxMzQ1NixnKX1qPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtnPWNbZis4Pj4yXXwwO2Rve2lmKChjW2YrMTI+PjJdfDApLWc+PjI+Pj4wPmo+Pj4wKXtnPWNbZysoajw8Mik+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWc9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcsMTApfDA7RD1jW2U+PjJdfDA7Y1tlPj4yXT1EKyAtMTtpZigoRHwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfWxoKGgsZyk7WWcoaCk7Zj1YYSg4KXwwO2NbZj4+Ml09OTkyODt3aGlsZSgxKXtnPXVuKDQ1KXwwO2lmKChnfDApIT0wKXtvPTI1MzticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0yNTE7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MjUxKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1lbHNlIGlmKChvfDApPT0yNTMpe2NbZys0Pj4yXT0zMjtjW2c+PjJdPTMyO3Q9ZysxMnwwO2NbZis0Pj4yXT10O2NbZys4Pj4yXT0wO3Q9dCswfDA7Zz0zMjB8MDt3PXQrMzN8MDtkb3thW3Q+PjBdPWFbZz4+MF18MDt0PXQrMXwwO2c9ZysxfDB9d2hpbGUoKHR8MCk8KHd8MCkpO2NbZj4+Ml09MzY4O3diKGZ8MCwzMDQsMjIpfX19d2hpbGUoMCk7RD1YYSg0KXwwO2NbRD4+Ml09MjEzMDQ7d2IoRHwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2Rve2lmKCEoKGFbZj4+MF0mMSk9PTApKXtmPWNbZis4Pj4yXXwwO2lmKChmfDApPT0wKXticmVha312bihmKX19d2hpbGUoMCk7Y1tsPj4yXT1nO2Y9Y1tuPj4yXXwwO2Nbbj4+Ml09ajtkb3tpZigoZnwwKSE9MCl7Qz1mKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXticmVha31sY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZik7Qz1mKzh8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXticmVha31sY1tjWyhjW2Y+PjJdfDApKzE2Pj4yXSYyNTVdKGYpfX13aGlsZSgwKTtBPWIrMzI4fDA7Qz1BO0M9SW4oY1tDPj4yXXwwLGNbQys0Pj4yXXwwLDEsMCl8MDtjW0E+PjJdPUM7Y1tBKzQ+PjJdPUk7QT1tO2NbQT4+Ml09MDtjW0ErND4+Ml09MDtBPWNbbD4+Ml18MDtDPWNbQT4+Ml18MDtDPWNbQz4+Ml18MDttY1tDJjEyN10oQSxlKTtBPW07Qz1BO0M9Y1tDPj4yXXwwO0E9QSs0fDA7QT1jW0E+PjJdfDA7QT1JbihDfDAsQXwwLDEsMCl8MDtDPUk7RD1tO0I9RDtjW0I+PjJdPUE7RD1EKzR8MDtjW0Q+PjJdPUM7aT1oO3JldHVybn1mdW5jdGlvbiBLYyhhKXthPWF8MDthPShjW2ErOD4+Ml18MCkrMTI3fDA7cmV0dXJuIGRbYT4+MF18ZFthKzE+PjBdPDw4fGRbYSsyPj4wXTw8MTZ8ZFthKzM+PjBdPDwyNHwwfWZ1bmN0aW9uIExjKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTA7ZT1pO2Y9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9ZjthPW9jW2EmMTI3XShiKXwwO2k9ZTtyZXR1cm4gYXwwfWVsc2V7YT1jWyhjW2I+PjJdfDApK2Y+PjJdfDA7YT1vY1thJjEyN10oYil8MDtpPWU7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBNYyhhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTA7Zj1pO2c9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9ZzttY1thJjEyN10oYixlKTtpPWY7cmV0dXJufWVsc2V7YT1jWyhjW2I+PjJdfDApK2c+PjJdfDA7bWNbYSYxMjddKGIsZSk7aT1mO3JldHVybn19ZnVuY3Rpb24gTmMoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTA7Zz1pO2g9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9aDtxY1thJjMxXShiLGUsZik7aT1nO3JldHVybn1lbHNle2E9Y1soY1tiPj4yXXwwKStoPj4yXXwwO3FjW2EmMzFdKGIsZSxmKTtpPWc7cmV0dXJufX1mdW5jdGlvbiBPYygpe3ZhciBhPTAsYj0wLGQ9MDtiPWk7d2hpbGUoMSl7ZD11bigxNil8MDtpZigoZHwwKSE9MCl7YT03O2JyZWFrfWQ9Y1s1NjY2XXwwO2NbNTY2Nl09ZCswO2lmKChkfDApPT0wKXticmVha31zY1tkJjMxXSgpfWlmKChhfDApPT03KXtjW2QrMD4+Ml09MDtjW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2QrMTI+PjJdPTA7aT1iO3JldHVybiBkfDB9ZD1YYSg0KXwwO2NbZD4+Ml09MjI2ODA7d2IoZHwwLDIyNzI4LDIwNik7cmV0dXJuIDB9ZnVuY3Rpb24gUGMoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1rY1thJjMxXSgpfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gUWMoYSl7YT1hfDA7cmV0dXJuIDcyfWZ1bmN0aW9uIFJjKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWQ9Y1thKzEyPj4yXXwwO2lmKCgoZHwwKSE9MD8oZj1kKzR8MCxlPWNbZj4+Ml18MCxjW2Y+PjJdPWUrIC0xLChlfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGU9ZCs4fDAsZj1jW2U+PjJdfDAsY1tlPj4yXT1mKyAtMSwoZnwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX1kPWNbYSs0Pj4yXXwwO2lmKCgoZHwwKSE9MD8oZT1kKzR8MCxmPWNbZT4+Ml18MCxjW2U+PjJdPWYrIC0xLChmfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGU9ZCs4fDAsZj1jW2U+PjJdfDAsY1tlPj4yXT1mKyAtMSwoZnwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX12bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFNjKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtmPWk7aT1pKzMyfDA7bz1mO2U9ZisxNnwwO2c9ZisxMnwwO2FbZT4+MF09MDtjW2UrND4+Ml09YjtwPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtpZigoY1tiKyhwKzE2KT4+Ml18MCk9PTApe2g9Y1tiKyhwKzcyKT4+Ml18MDtpZigoaHwwKSE9MCl7WWcoaCk7cD1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDB9YVtlPj4wXT0xO2o9Sm4oZHwwKXwwO209Y1tiKyhwKzI0KT4+Ml18MDtpZigoY1tiKyhwKzQpPj4yXSYxNzZ8MCk9PTMyKXtoPWQranwwfWVsc2V7aD1kfWw9YitwfDA7bj1iKyhwKzc2KXwwO3E9Y1tuPj4yXXwwO2Rve2lmKChxfDApPT0tMSl7cD1jW2IrKHArMjgpPj4yXXwwO3E9cCs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tvPj4yXT0xMzQ1NjtjW28rND4+Ml09MjA4O2Nbbys4Pj4yXT0wO2NnKDEzNDU2LG8pfXI9KGNbMTM0NjA+PjJdfDApKyAtMXwwO289Y1twKzg+PjJdfDA7aWYoKGNbcCsxMj4+Ml18MCktbz4+Mj4+PjA+cj4+PjA/KGs9Y1tvKyhyPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywzMil8MDtyPWNbcT4+Ml18MDtjW3E+PjJdPXIrIC0xO2lmKChyfDApPT0wKXtsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCl9cT1rPDwyND4+MjQ7Y1tuPj4yXT1xO2JyZWFrfXI9WGEoNCl8MDtjW3I+PjJdPTIxMzA0O3diKHJ8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtXYyhnLG0sZCxoLGQranwwLGwscSYyNTUpO2lmKChjW2c+PjJdfDApPT0wKXtyPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK3J8MCxjW2IrKHIrMTYpPj4yXXw1KX19Z2goZSk7aT1mO3JldHVybiBifDB9ZnVuY3Rpb24gVGMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFVjKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gVmMoYSl7YT1hfDA7bWIoYXwwKXwwO09hKCl9ZnVuY3Rpb24gV2MoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtrPWk7aT1pKzE2fDA7bD1rO2lmKChkfDApPT0wKXtjW2I+PjJdPTA7aT1rO3JldHVybn1wPWU7bj1nLXB8MDtoPWgrMTJ8MDttPWNbaD4+Ml18MDtuPShtfDApPihufDApP20tbnwwOjA7bT1mO3A9bS1wfDA7aWYoKHB8MCk+MD8oaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsZSxwKXwwKSE9KHB8MCk6MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59ZG97aWYoKG58MCk+MCl7ZG97aWYobj4+PjA8MTEpe3A9bjw8MSYyNTU7YVtsPj4wXT1wO289bDtlPWwrMXwwfWVsc2V7cT1uKzE2Ji0xNjtwPShxfDApPT0wPzE6cTt3aGlsZSgxKXtlPXVuKHApfDA7aWYoKGV8MCkhPTApe289MTU7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKG98MCk9PTE1KXtjW2wrOD4+Ml09ZTtwPXF8MTtjW2w+PjJdPXA7Y1tsKzQ+PjJdPW47bz1sO3A9cCYyNTU7YnJlYWt9cT1YYSg0KXwwO2NbcT4+Ml09MjI2ODA7d2IocXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO05uKGV8MCxqfDAsbnwwKXwwO2FbZStuPj4wXT0wO2lmKChwJjEpPT0wKXtqPWwrMXwwfWVsc2V7aj1jW2wrOD4+Ml18MH1pZigoaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsaixuKXwwKT09KG58MCkpe2lmKChhW28+PjBdJjEpPT0wKXticmVha31sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXticmVha312bihsKTticmVha31jW2I+PjJdPTA7aWYoKGFbbz4+MF0mMSk9PTApe2k9aztyZXR1cm59Yj1jW2wrOD4+Ml18MDtpZigoYnwwKT09MCl7aT1rO3JldHVybn12bihiKTtpPWs7cmV0dXJufX13aGlsZSgwKTtsPWctbXwwO2lmKChsfDApPjA/KGhjW2NbKGNbZD4+Ml18MCkrNDg+PjJdJjYzXShkLGYsbCl8MCkhPShsfDApOjApe2NbYj4+Ml09MDtpPWs7cmV0dXJufWNbaD4+Ml09MDtjW2I+PjJdPWQ7aT1rO3JldHVybn1mdW5jdGlvbiBYYyhhKXthPWF8MDt2YXIgYj0wO2I9aTtfYyhhKzQ3Njh8MCk7X2MoYSs0NzM2fDApO19jKGErNDY4OHwwKTtfYyhhKzQ2NTZ8MCk7X2MoYSs0NjA4fDApO19jKGErNDU3NnwwKTtfYyhhKzQ1Mjh8MCk7X2MoYSs0NDk2fDApO19jKGErNDQ0OHwwKTtfYyhhKzQ0MTZ8MCk7WmMoYSs0MzAwfDApO1pjKGErNDIyMHwwKTtaYyhhKzQxNDB8MCk7WmMoYSs0MDYwfDApO1pjKGErMzk4MHwwKTtZYyhhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFljKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2Q9Y1thKzg5Nj4+Ml18MDtpZigoZHwwKSE9MCl7ZT1jW2QrOD4+Ml18MDtpZigoZXwwKSE9MCl7dm4oY1tlKyAtND4+Ml18MCl9ZT1jW2QrMTI+PjJdfDA7aWYoKGV8MCkhPTApe3ZuKGNbZSsgLTQ+PjJdfDApfWU9Y1tkKzE2Pj4yXXwwO2lmKChlfDApIT0wKXt2bihjW2UrIC00Pj4yXXwwKX12bihkKX1kPWNbYSs5MDA+PjJdfDA7aWYoKGR8MCk9PTApe2Q9MH1lbHNle2U9Y1tkKzg+PjJdfDA7aWYoKGV8MCkhPTApe3ZuKGNbZSsgLTQ+PjJdfDApfWU9Y1tkKzEyPj4yXXwwO2lmKChlfDApIT0wKXt2bihjW2UrIC00Pj4yXXwwKX1lPWNbZCsxNj4+Ml18MDtpZigoZXwwKSE9MCl7dm4oY1tlKyAtND4+Ml18MCl9dm4oZCk7ZD0wfWRve2U9Y1thKyhkPDwyKSs5MDQ+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZT1jW2ErKGQ8PDIpKzE5Mjg+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZT1jW2ErKGQ8PDIpKzI5NTI+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZD1kKzF8MH13aGlsZSgoZHwwKSE9MjU2KTtkPWNbYSs4NjA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzg2ND4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9YT1jW2ErODY4Pj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufXZuKGNbYSsgLTQ+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gWmMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2I9aTtkPWErMzZ8MDtlPWNbZD4+Ml18MDtmPWErNDB8MDtnPWNbZj4+Ml18MDtpZigoZ3wwKSE9KGV8MCkpe2Rve2NbZj4+Ml09ZysgLTQ0O2g9Y1tnKyAtMzY+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWg9Y1tnKyAtMzI+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWc9Y1tnKyAtMjg+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1tmPj4yXXwwfXdoaWxlKChnfDApIT0oZXwwKSl9Zj1hKzY4fDA7ZT1jW2Y+PjJdfDA7YT1hKzcyfDA7Zz1jW2E+PjJdfDA7aWYoKGd8MCk9PShlfDApKXtfYyhmKTtfYyhkKTtpPWI7cmV0dXJufWRve2NbYT4+Ml09ZysgLTQ0O2g9Y1tnKyAtMzY+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWg9Y1tnKyAtMzI+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWc9Y1tnKyAtMjg+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1thPj4yXXwwfXdoaWxlKChnfDApIT0oZXwwKSk7X2MoZik7X2MoZCk7aT1iO3JldHVybn1mdW5jdGlvbiBfYyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtiPWk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59ZT1hKzR8MDtmPWNbZT4+Ml18MDtpZigoZnwwKSE9KGR8MCkpe2Rve2NbZT4+Ml09ZisgLTQ0O2c9Y1tmKyAtMzY+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1tmKyAtMzI+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWY9Y1tmKyAtMjg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlPj4yXXwwfXdoaWxlKChmfDApIT0oZHwwKSk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59fXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gJGMoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2Q9Y1thKzU2Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSs2MD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErNjQ+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzEyPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxNj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9YT1jW2ErMjA+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oY1thKyAtND4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiBhZChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7ZD1jW2ErMjgwPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsyODQ+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzI4OD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMjM2Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsyNDA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzI0ND4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTkyPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxOTY+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzIwMD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTQ4Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxNTI+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzE1Nj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTA0Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxMDg+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzExMj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErNjA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzY0Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSs2OD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTY+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzIwPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1hPWNbYSsyND4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn12bihjW2ErIC00Pj4yXXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGJkKGIpe2I9YnwwO3ZhciBjPTAsZD0wO2M9aTtkPWIrOHwwO2FbYiswPj4wXT0wO2FbYisxPj4wXT0wO2FbYisyPj4wXT0wO2FbYiszPj4wXT0wO2FbYis0Pj4wXT0wO2FbYis1Pj4wXT0wO2FbYis2Pj4wXT0wO2NkKGQsMTI4KTtjZChiKzUyfDAsMjU2KTtjZChiKzk2fDAsMjU2KTtjZChiKzE0MHwwLDI1Nik7Y2QoYisxODR8MCwyNTYpO2NkKGIrMjI4fDAsMjU2KTtjZChiKzI3MnwwLDI1Nik7aT1jO3JldHVybn1mdW5jdGlvbiBjZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtlPWk7Y1tiPj4yXT1kO2FbYis0Pj4wXT0wO2o9Yis4fDA7Y1tqPj4yXT0wO2c9YisxMnwwO2NbZz4+Ml09MDtoPWIrMTZ8MDtjW2g+PjJdPTA7aWYoKGQrIC0yfDApPj4+MD4yMDQ2KXtiPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oMzgpfDA7aWYoKGV8MCkhPTApe2Y9ODticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZnwwKT09OCl7Y1tlKzQ+PjJdPTI1O2NbZT4+Ml09MjU7ZD1lKzEyfDA7Y1tiKzQ+PjJdPWQ7Y1tlKzg+PjJdPTA7ZT1kKzB8MDtkPTM4NHwwO2Y9ZSsyNnwwO2Rve2FbZT4+MF09YVtkPj4wXXwwO2U9ZSsxfDA7ZD1kKzF8MH13aGlsZSgoZXwwKTwoZnwwKSk7d2IoYnwwLDEwMDY0LDEwNil9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9Y1tiKzMyPj4yXT1kKyAtMTtpZihkPj4+MD4xNil7Zj0zO3doaWxlKDEpe2lmKDE8PGYrMj4+PjA8ZD4+PjApe2Y9ZisxfDB9ZWxzZXticmVha319az0xPDxmO2NbYiszNj4+Ml09aztjW2IrNDA+PjJdPTE1LWY7az11bigoazw8MikrNzZ8MCl8MDtmPWsrNjgmLTY0O2NbZisgLTQ+PjJdPWs7Y1toPj4yXT1mfWVsc2V7Y1toPj4yXT0wO2NbYis0MD4+Ml09MDtjW2IrMzY+PjJdPTB9az0oZDw8MikrNjh8MDtoPXVuKGspfDA7Zj1oKzY4Ji02NDtjW2YrIC00Pj4yXT1oO2Nbaj4+Ml09ZjtrPXVuKGspfDA7Zj1rKzY4Ji02NDtjW2YrIC00Pj4yXT1rO2NbZz4+Ml09ZjtjW2IrMjA+PjJdPTA7Zz1iKzI0fDA7Y1tnPj4yXT1kO2lmKChkfDApPT0wKXtkZChiKTtqPWNbYj4+Ml18MDtqPWorNnwwO2o9aj4+PjE7Y1tnPj4yXT1qO2s9YisyOHwwO2Nbaz4+Ml09ajtpPWU7cmV0dXJufWVsc2V7ZD0wfWRve2NbZisoZDw8Mik+PjJdPTE7ZD1kKzF8MH13aGlsZShkPj4+MDwoY1tiPj4yXXwwKT4+PjApO2RkKGIpO2o9Y1tiPj4yXXwwO2o9ais2fDA7aj1qPj4+MTtjW2c+PjJdPWo7az1iKzI4fDA7Y1trPj4yXT1qO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZGQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2Q9aTtlPWIrMjR8MDtoPWIrMjB8MDtrPShjW2g+PjJdfDApKyhjW2U+PjJdfDApfDA7Y1toPj4yXT1rO2lmKGs+Pj4wPjMyNzY4KXtjW2g+PjJdPTA7aWYoKGNbYj4+Ml18MCk9PTApe2s9MH1lbHNle2w9Y1tiKzEyPj4yXXwwO2o9MDtkb3tzPWwrKGo8PDIpfDA7az0oKGNbcz4+Ml18MCkrMXwwKT4+PjE7Y1tzPj4yXT1rO2s9aysoY1toPj4yXXwwKXwwO2NbaD4+Ml09aztqPWorMXwwfXdoaWxlKGo+Pj4wPChjW2I+PjJdfDApPj4+MCl9fWg9MjE0NzQ4MzY0OC8oaz4+PjApfDA7aWYoKGFbYis0Pj4wXXwwKT09MD8oZj1iKzM2fDAsKGNbZj4+Ml18MCkhPTApOjApe2lmKChjW2I+PjJdfDApIT0wKXtvPWNbYis4Pj4yXXwwO209Y1tiKzEyPj4yXXwwO2s9Yis0MHwwO249YisxNnwwO2o9MDtzPTA7bD0wO3doaWxlKDEpe3I9KGVhKGwsaCl8MCk+Pj4xNjtjW28rKGo8PDIpPj4yXT1yO2w9KGNbbSsoajw8Mik+PjJdfDApK2x8MDtyPXI+Pj4oY1trPj4yXXwwKTtpZihzPj4+MDxyPj4+MCl7cD1qKyAtMXwwO3E9Y1tuPj4yXXwwO2Rve3M9cysxfDA7Y1txKyhzPDwyKT4+Ml09cH13aGlsZSgoc3wwKSE9KHJ8MCkpfWVsc2V7cj1zfWo9aisxfDA7aWYoIShqPj4+MDwoY1tiPj4yXXwwKT4+PjApKXticmVha31lbHNle3M9cn19aD1jW24+PjJdfDA7Y1toPj4yXT0wO2lmKCEocj4+PjA+KGNbZj4+Ml18MCk+Pj4wKSl7Zz0xOH19ZWxzZXtoPWNbYisxNj4+Ml18MDtjW2g+PjJdPTA7cj0wO2c9MTh9aWYoKGd8MCk9PTE4KXtkb3tyPXIrMXwwO2NbaCsocjw8Mik+PjJdPShjW2I+PjJdfDApKyAtMX13aGlsZSghKHI+Pj4wPihjW2Y+PjJdfDApPj4+MCkpfXM9Y1tiPj4yXXwwO3I9Y1tlPj4yXXwwO3I9cio1fDA7cj1yPj4+MjtzPXM8PDM7cz1zKzQ4fDA7cT1yPj4+MD5zPj4+MDtyPXE/czpyO2NbZT4+Ml09cjtzPWIrMjh8MDtjW3M+PjJdPXI7aT1kO3JldHVybn1pZigoY1tiPj4yXXwwKT09MCl7cz0wO3I9Y1tlPj4yXXwwO3I9cio1fDA7cj1yPj4+MjtzPXM8PDM7cz1zKzQ4fDA7cT1yPj4+MD5zPj4+MDtyPXE/czpyO2NbZT4+Ml09cjtzPWIrMjh8MDtjW3M+PjJdPXI7aT1kO3JldHVybn1qPWNbYis4Pj4yXXwwO2s9Y1tiKzEyPj4yXXwwO2w9MDtnPTA7ZG97Y1tqKyhsPDwyKT4+Ml09KGVhKGcsaCl8MCk+Pj4xNjtnPShjW2srKGw8PDIpPj4yXXwwKStnfDA7bD1sKzF8MDtmPWNbYj4+Ml18MH13aGlsZShsPj4+MDxmPj4+MCk7cj1jW2U+PjJdfDA7cj1yKjV8MDtyPXI+Pj4yO3M9Zjw8MztzPXMrNDh8MDtxPXI+Pj4wPnM+Pj4wO3I9cT9zOnI7Y1tlPj4yXT1yO3M9YisyOHwwO2Nbcz4+Ml09cjtpPWQ7cmV0dXJufWZ1bmN0aW9uIGVkKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Q9aTthW2I+PjBdPTA7Y2QoYis0fDAsNTE2KTtlPWIrNDh8MDtjW2U+PjJdPTY7YVtiKzUyPj4wXT0wO2NbYis4MD4+Ml09NTtjW2IrNjQ+PjJdPTA7Y1tiKzg4Pj4yXT0wO2NbYis4ND4+Ml09MDtnPXVuKDkyKXwwO2Y9Zys2OCYtNjQ7Y1tmKyAtND4+Ml09ZztjW2IrNTY+PjJdPWY7Zj11big5Mil8MDtnPWYrNjgmLTY0O2NbZysgLTQ+PjJdPWY7Y1tiKzYwPj4yXT1nO2NbYis2OD4+Ml09MDtmPWIrNzJ8MDtjW2Y+PjJdPTY7aD0wO2Rve2NbZysoaDw8Mik+PjJdPTE7aD1oKzF8MH13aGlsZShoPj4+MDwoY1tlPj4yXXwwKT4+PjApO2RkKGUpO2U9KChjW2U+PjJdfDApKzZ8MCk+Pj4xO2NbZj4+Ml09ZTtjW2IrNzY+PjJdPWU7ZT1iKzkyfDA7Yj1lKzcyfDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KGJ8MCkpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZmQoZCl7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7Zz1kKzUyfDA7aD1kKzcyfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzc2fDA7Zz1kKzk2fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzEwMHwwO2g9ZCsxMjB8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrMTI0fDA7Zz1kKzE0NHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCsxNDh8MDtoPWQrMTY4fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzE3MnwwO2c9ZCsxOTJ8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrMTk2fDA7aD1kKzIxNnwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCsyMjB8MDtnPWQrMjQwfDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzI0NHwwO2g9ZCsyNjR8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrMjY4fDA7Zz1kKzI4OHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCsyOTJ8MDtoPWQrMzEyfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzMxNnwwO2c9ZCszMzZ8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrMzQwfDA7aD1kKzM2MHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCszNjR8MDtnPWQrMzg0fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzM4OHwwO2g9ZCs0MDh8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNDEyfDA7Zz1kKzQzMnwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs0MzZ8MDtoPWQrNDU2fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzQ2MHwwO2c9ZCs0ODB8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNDg0fDA7aD1kKzUwNHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs1MDh8MDtnPWQrNTI4fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzUzMnwwO2g9ZCs1NTJ8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNTU2fDA7Zz1kKzU3NnwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs1ODB8MDtoPWQrNjAwfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzYwNHwwO2c9ZCs2MjR8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNjI4fDA7aD1kKzY0OHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs2NTJ8MDtnPWQrNjcyfDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzY3NnwwO2g9ZCs2OTZ8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNzAwfDA7Zz1kKzcyMHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs3MjR8MDtoPWQrNzQ0fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzc0OHwwO2c9ZCs3Njh8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNzcyfDA7aD1kKzc5MnwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs3OTZ8MDtnPWQrODE2fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Y2QoZCs4NTJ8MCw2NCk7YVtkKzM5NzY+PjBdPTA7Zz1kKzIwfDA7aD1nKzMyfDA7ZG97YltnPj4xXT0wO2c9ZysyfDB9d2hpbGUoKGd8MCk8KGh8MCkpO3doaWxlKDEpe2c9dW4oNDQpfDA7aWYoKGd8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtmPTU7YnJlYWt9c2NbZyYzMV0oKX1pZigoZnwwKT09NSl7aD1YYSg0KXwwO2NbaD4+Ml09MjI2ODA7d2IoaHwwLDIyNzI4LDIwNil9Y2QoZywyNTYpO2NbZCs4OTY+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9MTI7YnJlYWt9c2NbZyYzMV0oKX1pZigoZnwwKT09MTIpe2g9WGEoNCl8MDtjW2g+PjJdPTIyNjgwO3diKGh8MCwyMjcyOCwyMDYpfWNkKGcsMjU2KTtjW2QrOTAwPj4yXT1nO2Y9ZCs4MjB8MDtjW2YrMD4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDtjW2YrMTI+PjJdPTA7Y1tmKzE2Pj4yXT0wO2NbZisyMD4+Ml09MDtjW2YrMjQ+PjJdPTA7Y1tmKzI4Pj4yXT0wO2Y9MDthOndoaWxlKDEpe3doaWxlKDEpe2c9dW4oNDQpfDA7aWYoKGd8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtmPTIwO2JyZWFrIGF9c2NbZyYzMV0oKX1jZChnLDI1Nik7Y1tkKyhmPDwyKSs5MDQ+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9Mjc7YnJlYWsgYX1zY1tnJjMxXSgpfWNkKGcsMjU2KTtjW2QrKGY8PDIpKzE5Mjg+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9MzQ7YnJlYWsgYX1zY1tnJjMxXSgpfWNkKGcsMjU2KTtjW2QrKGY8PDIpKzI5NTI+PjJdPWc7Zj1mKzF8MDtpZigoZnwwKT49MjU2KXtmPTM4O2JyZWFrfX1pZigoZnwwKT09MjApe2g9WGEoNCl8MDtjW2g+PjJdPTIyNjgwO3diKGh8MCwyMjcyOCwyMDYpfWVsc2UgaWYoKGZ8MCk9PTI3KXtoPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX1lbHNlIGlmKChmfDApPT0zNCl7aD1YYSg0KXwwO2NbaD4+Ml09MjI2ODA7d2IoaHwwLDIyNzI4LDIwNil9ZWxzZSBpZigoZnwwKT09Mzgpe2NbZCszOTg0Pj4yXT0xNjtjW2QrMzk4OD4+Ml09NDtjW2QrMzk5Mj4+Ml09ODtjW2QrMzk5Nj4+Ml09MDtjW2QrNDAxNj4+Ml09MDtjW2QrNDAyMD4+Ml09MDtjW2QrNDAyND4+Ml09MDtjW2QrNDA0MD4+Ml09MTtjW2QrNDA0ND4+Ml09MjtjW2QrNDAzNj4+Ml09NDA5NjtjW2QrNDAzMj4+Ml09NDtjW2QrNDAyOD4+Ml09NDtjW2QrNDA0OD4+Ml09MDtjW2QrNDA1Mj4+Ml09MDtjW2QrNDA1Nj4+Ml09MDtjW2QrNGUzPj4yXT0xNjtjW2QrNDAwND4+Ml09NjU1MzY7Y1tkKzQwMDg+PjJdPS0zMjc2ODtjW2QrNDAxMj4+Ml09MzI3Njc7Y1tkKzM5ODA+PjJdPTA7Y1tkKzQwNjQ+PjJdPTE2O2NbZCs0MDY4Pj4yXT0xO2NbZCs0MDcyPj4yXT04O2NbZCs0MDc2Pj4yXT0wO2NbZCs0MDk2Pj4yXT0wO2NbZCs0MTAwPj4yXT0wO2NbZCs0MTA0Pj4yXT0wO2NbZCs0MTIwPj4yXT0xO2NbZCs0MTI0Pj4yXT0yO2NbZCs0MTE2Pj4yXT00MDk2O2NbZCs0MTEyPj4yXT00O2NbZCs0MTA4Pj4yXT00O2NbZCs0MTI4Pj4yXT0wO2NbZCs0MTMyPj4yXT0wO2NbZCs0MTM2Pj4yXT0wO2NbZCs0MDgwPj4yXT0xNjtjW2QrNDA4ND4+Ml09NjU1MzY7Y1tkKzQwODg+PjJdPS0zMjc2ODtjW2QrNDA5Mj4+Ml09MzI3Njc7Y1tkKzQwNjA+PjJdPTA7Y1tkKzQxNDQ+PjJdPTMyO2NbZCs0MTQ4Pj4yXT0yO2NbZCs0MTUyPj4yXT04O2NbZCs0MTU2Pj4yXT0wO2NbZCs0MTc2Pj4yXT0wO2NbZCs0MTgwPj4yXT0wO2NbZCs0MTg0Pj4yXT0wO2NbZCs0MjAwPj4yXT0xO2NbZCs0MjA0Pj4yXT0yO2NbZCs0MTk2Pj4yXT00MDk2O2NbZCs0MTkyPj4yXT00O2NbZCs0MTg4Pj4yXT00O2NbZCs0MjA4Pj4yXT0wO2NbZCs0MjEyPj4yXT0wO2NbZCs0MjE2Pj4yXT0wO2NbZCs0MTYwPj4yXT0zMjtjW2QrNDE2ND4+Ml09MDtjW2QrNDE2OD4+Ml09LTIxNDc0ODM2NDg7Y1tkKzQxNzI+PjJdPTIxNDc0ODM2NDc7Y1tkKzQxNDA+PjJdPTA7Y1tkKzQyMjQ+PjJdPTMyO2NbZCs0MjI4Pj4yXT0yMjtjW2QrNDIzMj4+Ml09ODtjW2QrNDIzNj4+Ml09MDtjW2QrNDI1Nj4+Ml09MDtjW2QrNDI2MD4+Ml09MDtjW2QrNDI2ND4+Ml09MDtjW2QrNDI4MD4+Ml09MTtjW2QrNDI4ND4+Ml09MjtjW2QrNDI3Nj4+Ml09NDA5NjtjW2QrNDI3Mj4+Ml09NDtjW2QrNDI2OD4+Ml09NDtjW2QrNDI4OD4+Ml09MDtjW2QrNDI5Mj4+Ml09MDtjW2QrNDI5Nj4+Ml09MDtjW2QrNDI0MD4+Ml09MzI7Y1tkKzQyNDQ+PjJdPTA7Y1tkKzQyNDg+PjJdPS0yMTQ3NDgzNjQ4O2NbZCs0MjUyPj4yXT0yMTQ3NDgzNjQ3O2NbZCs0MjIwPj4yXT0wO2NbZCs0MzA0Pj4yXT0zMjtjW2QrNDMwOD4+Ml09MjA7Y1tkKzQzMTI+PjJdPTg7Y1tkKzQzMTY+PjJdPTA7Y1tkKzQzMzY+PjJdPTA7Y1tkKzQzNDA+PjJdPTA7Y1tkKzQzNDQ+PjJdPTA7Y1tkKzQzNjA+PjJdPTE7Y1tkKzQzNjQ+PjJdPTI7Y1tkKzQzNTY+PjJdPTQwOTY7Y1tkKzQzNTI+PjJdPTQ7Y1tkKzQzNDg+PjJdPTQ7Y1tkKzQzNjg+PjJdPTA7Y1tkKzQzNzI+PjJdPTA7Y1tkKzQzNzY+PjJdPTA7Y1tkKzQzMjA+PjJdPTMyO2NbZCs0MzI0Pj4yXT0wO2NbZCs0MzI4Pj4yXT0tMjE0NzQ4MzY0ODtjW2QrNDMzMj4+Ml09MjE0NzQ4MzY0NztjW2QrNDMwMD4+Ml09MDtjW2QrNDM4ND4+Ml09MTY7Y1tkKzQzODg+PjJdPTQ7Y1tkKzQzOTI+PjJdPTg7Y1tkKzQzOTY+PjJdPTA7Y1tkKzQ0MTY+PjJdPTA7Y1tkKzQ0MjA+PjJdPTA7Y1tkKzQ0MjQ+PjJdPTA7Y1tkKzQ0NDA+PjJdPTE7Y1tkKzQ0NDQ+PjJdPTI7Y1tkKzQ0MzY+PjJdPTQwOTY7Y1tkKzQ0MzI+PjJdPTQ7Y1tkKzQ0Mjg+PjJdPTQ7Y1tkKzQ0NDg+PjJdPTA7Y1tkKzQ0NTI+PjJdPTA7Y1tkKzQ0NTY+PjJdPTA7Y1tkKzQ0MDA+PjJdPTE2O2NbZCs0NDA0Pj4yXT02NTUzNjtjW2QrNDQwOD4+Ml09LTMyNzY4O2NbZCs0NDEyPj4yXT0zMjc2NztjW2QrNDM4MD4+Ml09MDtjW2QrNDQ2ND4+Ml09MTY7Y1tkKzQ0Njg+PjJdPTE7Y1tkKzQ0NzI+PjJdPTg7Y1tkKzQ0NzY+PjJdPTA7Y1tkKzQ0OTY+PjJdPTA7Y1tkKzQ1MDA+PjJdPTA7Y1tkKzQ1MDQ+PjJdPTA7Y1tkKzQ1MjA+PjJdPTE7Y1tkKzQ1MjQ+PjJdPTI7Y1tkKzQ1MTY+PjJdPTQwOTY7Y1tkKzQ1MTI+PjJdPTQ7Y1tkKzQ1MDg+PjJdPTQ7Y1tkKzQ1Mjg+PjJdPTA7Y1tkKzQ1MzI+PjJdPTA7Y1tkKzQ1MzY+PjJdPTA7Y1tkKzQ0ODA+PjJdPTE2O2NbZCs0NDg0Pj4yXT02NTUzNjtjW2QrNDQ4OD4+Ml09LTMyNzY4O2NbZCs0NDkyPj4yXT0zMjc2NztjW2QrNDQ2MD4+Ml09MDtjW2QrNDU0ND4+Ml09MzI7Y1tkKzQ1NDg+PjJdPTI7Y1tkKzQ1NTI+PjJdPTg7Y1tkKzQ1NTY+PjJdPTA7Y1tkKzQ1NzY+PjJdPTA7Y1tkKzQ1ODA+PjJdPTA7Y1tkKzQ1ODQ+PjJdPTA7Y1tkKzQ2MDA+PjJdPTE7Y1tkKzQ2MDQ+PjJdPTI7Y1tkKzQ1OTY+PjJdPTQwOTY7Y1tkKzQ1OTI+PjJdPTQ7Y1tkKzQ1ODg+PjJdPTQ7Y1tkKzQ2MDg+PjJdPTA7Y1tkKzQ2MTI+PjJdPTA7Y1tkKzQ2MTY+PjJdPTA7Y1tkKzQ1NjA+PjJdPTMyO2NbZCs0NTY0Pj4yXT0wO2NbZCs0NTY4Pj4yXT0tMjE0NzQ4MzY0ODtjW2QrNDU3Mj4+Ml09MjE0NzQ4MzY0NztjW2QrNDU0MD4+Ml09MDtjW2QrNDYyND4+Ml09MzI7Y1tkKzQ2Mjg+PjJdPTIyO2NbZCs0NjMyPj4yXT04O2NbZCs0NjM2Pj4yXT0wO2NbZCs0NjU2Pj4yXT0wO2NbZCs0NjYwPj4yXT0wO2NbZCs0NjY0Pj4yXT0wO2NbZCs0NjgwPj4yXT0xO2NbZCs0Njg0Pj4yXT0yO2NbZCs0Njc2Pj4yXT00MDk2O2NbZCs0NjcyPj4yXT00O2NbZCs0NjY4Pj4yXT00O2NbZCs0Njg4Pj4yXT0wO2NbZCs0NjkyPj4yXT0wO2NbZCs0Njk2Pj4yXT0wO2NbZCs0NjQwPj4yXT0zMjtjW2QrNDY0ND4+Ml09MDtjW2QrNDY0OD4+Ml09LTIxNDc0ODM2NDg7Y1tkKzQ2NTI+PjJdPTIxNDc0ODM2NDc7Y1tkKzQ2MjA+PjJdPTA7Y1tkKzQ3MDQ+PjJdPTMyO2NbZCs0NzA4Pj4yXT0yMDtjW2QrNDcxMj4+Ml09ODtjW2QrNDcxNj4+Ml09MDtjW2QrNDczNj4+Ml09MDtjW2QrNDc0MD4+Ml09MDtjW2QrNDc0ND4+Ml09MDtjW2QrNDc2MD4+Ml09MTtjW2QrNDc2ND4+Ml09MjtjW2QrNDc1Nj4+Ml09NDA5NjtjW2QrNDc1Mj4+Ml09NDtjW2QrNDc0OD4+Ml09NDtjW2QrNDc2OD4+Ml09MDtjW2QrNDc3Mj4+Ml09MDtjW2QrNDc3Nj4+Ml09MDtjW2QrNDcyMD4+Ml09MzI7Y1tkKzQ3MjQ+PjJdPTA7Y1tkKzQ3Mjg+PjJdPS0yMTQ3NDgzNjQ4O2NbZCs0NzMyPj4yXT0yMTQ3NDgzNjQ3O2NbZCs0NzAwPj4yXT0wO2FbZCs0NzgwPj4wXT0wO2FbZCs0NzgxPj4wXT0wO2k9ZTtyZXR1cm59fWZ1bmN0aW9uIGdkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2k9aSszMnwwO2g9ZTtmPWNbYis4Pj4yXXwwO2I9Y1tiKzQ+PjJdfDA7amQoaCxmLGIpO2c9Y1toPj4yXXwwO2FbZCszPj4wXT1nPj4+MjQ7YVtkKzI+PjBdPWc+Pj4xNjthW2QrMT4+MF09Zz4+Pjg7YVtkPj4wXT1nO2c9Y1toKzQ+PjJdfDA7YVtkKzc+PjBdPWc+Pj4yNDthW2QrNj4+MF09Zz4+PjE2O2FbZCs1Pj4wXT1nPj4+ODthW2QrND4+MF09ZztnPWNbaCs4Pj4yXXwwO2FbZCsxMT4+MF09Zz4+PjI0O2FbZCsxMD4+MF09Zz4+PjE2O2FbZCs5Pj4wXT1nPj4+ODthW2QrOD4+MF09ZztnPWNbaCsxMj4+Ml18MDthW2QrMTM+PjBdPShnJjY1NTM1KT4+Pjg7YVtkKzEyPj4wXT1nO2FbZCsxND4+MF09Zz4+PjE2O2FbZCsxNT4+MF09Zz4+PjI0O2g9Y1toKzE2Pj4yXXwwO2FbZCsxNj4+MF09aDthW2QrMTc+PjBdPShoJjY1NTM1KT4+Pjg7YVtkKzE5Pj4wXT1oPj4+MjQ7YVtkKzE4Pj4wXT1oPj4+MTY7aD1rZChmKzQ3ODR8MCxiKXwwO2c9STthW2QrMjM+PjBdPWg+Pj4yNDthW2QrMjI+PjBdPWg+Pj4xNjthW2QrMjE+PjBdPWg+Pj44O2FbZCsyMD4+MF09aDtqPUtuKGh8MCxnfDAsNTYpfDA7YVtkKzI3Pj4wXT1qO2o9S24oaHwwLGd8MCw0OCl8MDthW2QrMjY+PjBdPWo7aD1LbihofDAsZ3wwLDQwKXwwO2FbZCsyNT4+MF09aDthW2QrMjQ+PjBdPWc7bGQoZis1MTEyfDAsYixkKzI4fDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gaGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7Y1thPj4yXT00MjQ7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1hZChhKzUxMTJ8MCk7X2MoYSs1MDk2fDApO19jKGErNTA2NHwwKTtaYyhhKzQ5NDh8MCk7JGMoYSs0Nzg0fDApO1hjKGEpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gaWQoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2NbYT4+Ml09NDI0O2Q9Y1thKzg+PjJdfDA7aWYoKGR8MCk9PTApe3ZuKGEpO2k9YjtyZXR1cm59YWQoZCs1MTEyfDApO19jKGQrNTA5NnwwKTtfYyhkKzUwNjR8MCk7WmMoZCs0OTQ4fDApOyRjKGQrNDc4NHwwKTtYYyhkKTt2bihkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGpkKGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO2o9aTtpPWkrMzJ8MDtrPWo7bD1nKzQ3ODF8MDtpZigoYVtsPj4wXXwwKT09MCl7dGQoZys0MzgwfDApO3RkKGcrNDQ2MHwwKTt0ZChnKzQ1NDB8MCk7dGQoZys0NjIwfDApO3RkKGcrNDcwMHwwKTthW2w+PjBdPTF9bD1nKzM5NzZ8MDtpZigoYVtsPj4wXXwwKT09MCl7YVtsPj4wXT0xO3BkKGNbaD4+Ml18MCxrLDIwKTtyPWRbaysxPj4wXTw8OHxkW2s+PjBdfGRbaysyPj4wXTw8MTZ8ZFtrKzM+PjBdPDwyNDtvPWRbays1Pj4wXTw8OHxkW2srND4+MF18ZFtrKzY+PjBdPDwxNnxkW2srNz4+MF08PDI0O3A9ZFtrKzk+PjBdPDw4fGRbays4Pj4wXXxkW2srMTA+PjBdPDwxNnxkW2srMTE+PjBdPDwyNDtxPShhW2srMTM+PjBdPDw4fGRbaysxMj4+MF0pJjY1NTM1O3M9YVtrKzE0Pj4wXXwwO3Q9YVtrKzE1Pj4wXXwwO3U9YVtrKzE2Pj4wXXwwO2g9YVtrKzE3Pj4wXXwwO3Y9KGFbaysxOT4+MF08PDh8ZFtrKzE4Pj4wXSkmNjU1MzU7YVtnPj4wXT1yO2FbZysxPj4wXT1yPj44O2FbZysyPj4wXT1yPj4xNjthW2crMz4+MF09cj4+MjQ7cj1nKzR8MDthW3I+PjBdPW87YVtyKzE+PjBdPW8+Pjg7YVtyKzI+PjBdPW8+PjE2O2FbciszPj4wXT1vPj4yNDtyPWcrOHwwO2Fbcj4+MF09cDthW3IrMT4+MF09cD4+ODthW3IrMj4+MF09cD4+MTY7YVtyKzM+PjBdPXA+PjI0O3I9ZysxMnwwO2Fbcj4+MF09cTthW3IrMT4+MF09cT4+ODthW2crMTQ+PjBdPXM7YVtnKzE1Pj4wXT10O2FbZysxNj4+MF09dTthW2crMTc+PjBdPWg7aD1nKzE4fDA7YVtoPj4wXT12O2FbaCsxPj4wXT12Pj44O2Y9ZiswfDA7aD1nKzB8MDtnPWYrMjB8MDtkb3thW2Y+PjBdPWFbaD4+MF18MDtmPWYrMXwwO2g9aCsxfDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2k9ajtyZXR1cm59bT1xZChoLGcrODUyfDApfDA7aWYoKG18MCkhPTApe289ZysxNHwwO2s9YVtvPj4wXXwwO2lmKChtJjMyfDApIT0wKXtrPShxZChoLGNbZysoKCgoayYyNTUpPj4+NyYyNTUpPDw3fGsmN3woKGsmMjU1KT4+PjYmMjU1KTw8NiY2NHwoKGsmMjU1KT4+PjMmMjU1KTw8MyY1Nik8PDIpKzkwND4+Ml18MCl8MCkmMjU1O2Fbbz4+MF09a31sPWsmNztrPShrJjI1NSk+Pj4zJjc7bj1kWzg3Misoazw8MykrbD4+MF18MDtsPWRbOTM2KyhrPDwzKStsPj4wXXwwO2lmKChtJjE2fDApPT0wKXt1PWJbZysobjw8MSkrMjA+PjFdfDA7dj1nKzEyfDA7YVt2Pj4wXT11O2FbdisxPj4wXT11Pj44fWVsc2V7cD1nKyhuPDwxKSsyMHwwO3E9ZVtwPj4xXXwwO3E9KHJkKGcrNDM4MHwwLGgsKGNbZys0NDE2Pj4yXXwwKSsoKG4+Pj4wPDM/bjozKSo0NHwwKXwwKXwwKStxfDA7cj1jW2crNDQwND4+Ml18MDtpZigocXwwKTwwKXtxPXErcnwwfWVsc2V7cT1xLShxPj4+MDxyPj4+MD8wOnIpfDB9dj1xJjY1NTM1O3U9ZysxMnwwO2FbdT4+MF09djthW3UrMT4+MF09dj4+ODtiW3A+PjFdPXZ9aWYoKG0mOHwwKSE9MCl7dj1nKzE1fDA7YVt2Pj4wXT1xZChoLGNbZysoZFt2Pj4wXTw8MikrMTkyOD4+Ml18MCl8MH1pZigobSY0fDApIT0wKXtwPXFkKGgsY1tnKygoKGRbbz4+MF18MCk+Pj42JjEpPDwyKSs4OTY+PjJdfDApfDA7bz1nKzE2fDA7cD0oYVtvPj4wXXwwKStwfDA7aWYoKHB8MCk8MCl7cD1wKzI1NnwwfWVsc2V7cD0ocHwwKT4yNTU/cCsgLTI1NnwwOnB9YVtvPj4wXT1wfWlmKChtJjJ8MCkhPTApe3Y9ZysxN3wwO2Fbdj4+MF09cWQoaCxjW2crKGRbdj4+MF08PDIpKzI5NTI+PjJdfDApfDB9aWYoKG0mMXwwKSE9MCl7bT1nKzE4fDA7cD0oZFttPj4wXXxkW20rMT4+MF08PDgpJjY1NTM1O3A9KHJkKGcrNDQ2MHwwLGgsY1tnKzQ0OTY+PjJdfDApfDApK3B8MDtvPWNbZys0NDg0Pj4yXXwwO2lmKChwfDApPDApe289cCtvfDB9ZWxzZXtvPXAtKHA+Pj4wPG8+Pj4wPzA6byl8MH12PW8mNjU1MzU7YVttPj4wXT12O2FbbSsxPj4wXT12Pj44fX1lbHNle2s9YVtnKzE0Pj4wXXwwO249ayY3O2s9KGsmMjU1KT4+PjMmNztsPWRbOTM2KyhrPDwzKStuPj4wXXwwO249ZFs4NzIrKGs8PDMpK24+PjBdfDB9cT1nKyhuKjI0fDApKzUyfDA7bz1nKyhuKjI0fDApKzYwfDA7cD1jW28+PjJdfDA7bT1nKzQ1NDB8MDtrPShrfDApPT0xJjE7cD0ocmQobSxoLChjW2crNDU3Nj4+Ml18MCkrKGsqNDR8MCl8MCl8MCkrcHwwO3I9Y1tnKzQ1NjQ+PjJdfDA7aWYoKHB8MCk8MCl7cD1wK3J8MH1lbHNle3A9cC0ocD4+PjA8cj4+PjA/MDpyKXwwfXI9KGRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNCkrcHwwO2FbZz4+MF09cjthW2crMT4+MF09cj4+ODthW2crMj4+MF09cj4+MTY7YVtnKzM+PjBdPXI+PjI0O3I9ZysobioyNHwwKSs3MnwwO3M9Y1tvPj4yXXwwO2Rve2lmKChhW3I+PjBdfDApPT0wKXt1PWcrKG4qMjR8MCkrNTZ8MDt0PWNbdT4+Ml18MDtpZigoc3wwKT49KHB8MCkpe2lmKCh0fDApPChwfDApKXtjW3E+PjJdPXQ7Y1t1Pj4yXT1wfWVsc2V7Y1txPj4yXT1wfWFbcj4+MF09MTticmVha31jW3E+PjJdPXQ7Y1t1Pj4yXT1zO3Q9ZysobioyNHwwKSs2OHwwO3E9Y1t0Pj4yXXwwO3M9ZysobioyNHwwKSs2NHwwO3I9Y1tzPj4yXXwwO2lmKChxfDApPChwfDApKXtjW28+PjJdPXI7Y1tzPj4yXT1xO2NbdD4+Ml09cDticmVha31pZigocnwwKTwocHwwKSl7Y1tvPj4yXT1yO2Nbcz4+Ml09cDticmVha31lbHNle2Nbbz4+Ml09cDticmVha319ZWxzZXt0PWcrKG4qMjR8MCkrNjR8MDt1PWNbdD4+Ml18MDtpZigocHwwKT49KHN8MCkpe289ZysobioyNHwwKSs2OHwwO2lmKChwfDApPCh1fDApKXtjW28+PjJdPXU7Y1t0Pj4yXT1wfWVsc2V7Y1tvPj4yXT1wfWFbcj4+MF09MDticmVha31jW2crKG4qMjR8MCkrNjg+PjJdPXU7Y1t0Pj4yXT1zO3M9Y1txPj4yXXwwO3Q9ZysobioyNHwwKSs1NnwwO3I9Y1t0Pj4yXXwwO2lmKChwfDApPChzfDApKXtjW28+PjJdPXI7Y1t0Pj4yXT1zO2NbcT4+Ml09cDticmVha31pZigocHwwKTwocnwwKSl7Y1tvPj4yXT1yO2NbdD4+Ml09cDticmVha31lbHNle2Nbbz4+Ml09cDticmVha319fXdoaWxlKDApO3I9ZysobioyNHwwKSs0MzZ8MDtwPWcrKG4qMjR8MCkrNDQ0fDA7cT1jW3A+PjJdfDA7cz1jW20+PjJdfDA7bz1nKzQ2MjB8MDtxPShyZChvLGgsKGNbZys0NjU2Pj4yXXwwKSsoKChzPj4+MDwyMD9zJi0yOjIwKXxrKSo0NHwwKXwwKXwwKStxfDA7cz1jW2crNDY0ND4+Ml18MDtpZigocXwwKTwwKXtxPXErc3wwfWVsc2V7cT1xLShxPj4+MDxzPj4+MD8wOnMpfDB9cz1nKzR8MDt0PShkW3M+PjBdfGRbcysxPj4wXTw8OHxkW3MrMj4+MF08PDE2fGRbcyszPj4wXTw8MjQpK3F8MDthW3M+PjBdPXQ7YVtzKzE+PjBdPXQ+Pjg7YVtzKzI+PjBdPXQ+PjE2O2FbcyszPj4wXT10Pj4yNDtzPWcrKG4qMjR8MCkrNDU2fDA7dD1jW3A+PjJdfDA7ZG97aWYoKGFbcz4+MF18MCk9PTApe3U9ZysobioyNHwwKSs0NDB8MDt2PWNbdT4+Ml18MDtpZigodHwwKT49KHF8MCkpe2lmKCh2fDApPChxfDApKXtjW3I+PjJdPXY7Y1t1Pj4yXT1xfWVsc2V7Y1tyPj4yXT1xfWFbcz4+MF09MTticmVha31jW3I+PjJdPXY7Y1t1Pj4yXT10O3M9ZysobioyNHwwKSs0NTJ8MDtyPWNbcz4+Ml18MDtuPWcrKG4qMjR8MCkrNDQ4fDA7dD1jW24+PjJdfDA7aWYoKHJ8MCk8KHF8MCkpe2NbcD4+Ml09dDtjW24+PjJdPXI7Y1tzPj4yXT1xO2JyZWFrfWlmKCh0fDApPChxfDApKXtjW3A+PjJdPXQ7Y1tuPj4yXT1xO2JyZWFrfWVsc2V7Y1twPj4yXT1xO2JyZWFrfX1lbHNle3U9ZysobioyNHwwKSs0NDh8MDt2PWNbdT4+Ml18MDtpZigocXwwKT49KHR8MCkpe249ZysobioyNHwwKSs0NTJ8MDtpZigocXwwKTwodnwwKSl7Y1tuPj4yXT12O2NbdT4+Ml09cX1lbHNle2Nbbj4+Ml09cX1hW3M+PjBdPTA7YnJlYWt9Y1tnKyhuKjI0fDApKzQ1Mj4+Ml09djtjW3U+PjJdPXQ7cz1jW3I+PjJdfDA7bj1nKyhuKjI0fDApKzQ0MHwwO3Q9Y1tuPj4yXXwwO2lmKChxfDApPChzfDApKXtjW3A+PjJdPXQ7Y1tuPj4yXT1zO2Nbcj4+Ml09cTticmVha31pZigocXwwKTwodHwwKSl7Y1twPj4yXT10O2Nbbj4+Ml09cTticmVha31lbHNle2NbcD4+Ml09cTticmVha319fXdoaWxlKDApO209KGNbbz4+Ml18MCkrKGNbbT4+Ml18MCl8MDtsPWcrKGw8PDIpKzgyMHwwO249Y1tsPj4yXXwwO2lmKG0+Pj4wPDM2KXttPW0+Pj4xJjIxNDc0ODM2NDZ9ZWxzZXttPTE4fWs9KHJkKGcrNDcwMHwwLGgsKGNbZys0NzM2Pj4yXXwwKSsoKG18aykqNDR8MCl8MCl8MCkrbnwwO2g9Y1tnKzQ3MjQ+PjJdfDA7aWYoKGt8MCk8MCl7aD1rK2h8MH1lbHNle2g9ay0oaz4+PjA8aD4+PjA/MDpoKXwwfXY9Zys4fDA7YVt2Pj4wXT1oO2FbdisxPj4wXT1oPj44O2FbdisyPj4wXT1oPj4xNjthW3YrMz4+MF09aD4+MjQ7Y1tsPj4yXT1oO2Y9ZiswfDA7aD1nKzB8MDtnPWYrMjB8MDtkb3thW2Y+PjBdPWFbaD4+MF18MDtmPWYrMXwwO2g9aCsxfDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2k9ajtyZXR1cm59ZnVuY3Rpb24ga2QoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7Zj1pO2k9aSsxNnwwO2c9ZjtoPWIrMzI1fDA7aWYoKGFbaD4+MF18MCk9PTApe3RkKGIrMjQ0fDApO2FbaD4+MF09MX1pZigoYVtiPj4wXXwwKT09MCl7YVtiPj4wXT0xO3BkKGNbZT4+Ml18MCxnLDgpO249ZFtnKzE+PjBdPDw4fGRbZz4+MF18ZFtnKzI+PjBdPDwxNnxkW2crMz4+MF08PDI0O209ZFtnKzU+PjBdPDw4fGRbZys0Pj4wXXxkW2crNj4+MF08PDE2fGRbZys3Pj4wXTw8MjQ7bD1iKzEwMHwwO2s9bDthW2s+PjBdPW47YVtrKzE+PjBdPW4+Pjg7YVtrKzI+PjBdPW4+PjE2O2FbayszPj4wXT1uPj4yNDtsPWwrNHwwO2FbbD4+MF09bTthW2wrMT4+MF09bT4+ODthW2wrMj4+MF09bT4+MTY7YVtsKzM+PjBdPW0+PjI0O0k9bTtpPWY7cmV0dXJuIG58MH1nPWIrOTJ8MDtkb3tpZigoY1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDApPT0wKXtoPXFkKGUsYis0OHwwKXwwO2lmKChofDApPT0yKXtoPWIrOTZ8MDtjW2g+PjJdPShjW2g+PjJdfDApKzEmMztqPWIrKGNbZz4+Ml08PDMpKzEwNHwwO2o9ZFtqPj4wXXxkW2orMT4+MF08PDh8ZFtqKzI+PjBdPDwxNnxkW2orMz4+MF08PDI0O2o9KHJkKGIrMjQ0fDAsZSwoY1tiKzI4MD4+Ml18MCkrMzUyfDApfDApK2p8MDtrPWNbYisyNjg+PjJdfDA7aWYoKGp8MCk8MCl7aj1qK2t8MH1lbHNle2o9ai0oaj4+PjA8az4+PjA/MDprKXwwfW09KChqfDApPDApPDwzMT4+MzE7az1iKyhjW2g+PjJdPDwzKSsxMDB8MDtuPWs7YVtuPj4wXT1qO2FbbisxPj4wXT1qPj44O2FbbisyPj4wXT1qPj4xNjthW24rMz4+MF09aj4+MjQ7az1rKzR8MDthW2s+PjBdPW07YVtrKzE+PjBdPW0+Pjg7YVtrKzI+PjBdPW0+PjE2O2FbayszPj4wXT1tPj4yNDtrPWIrKGNbaD4+Ml08PDMpKzEwMHwwO209azttPWRbbT4+MF18ZFttKzE+PjBdPDw4fGRbbSsyPj4wXTw8MTZ8ZFttKzM+PjBdPDwyNDtqPWs7YVtqPj4wXT0wO2FbaisxPj4wXT0wO2FbaisyPj4wXT0wO2FbaiszPj4wXT0wO2s9ays0fDA7YVtrPj4wXT1tO2FbaysxPj4wXT1tPj44O2FbaysyPj4wXT1tPj4xNjthW2srMz4+MF09bT4+MjQ7az1lKzR8MDttPWNbaz4+Ml18MDtqPWUrOHwwO249KGNbaj4+Ml18MCk+Pj4xNjtjW2o+PjJdPW47bD0obT4+PjApLyhuPj4+MCl8MDtuPW0tKGVhKG4sbCl8MCl8MDtjW2s+PjJdPW47ZG97bj0obWQoY1tlPj4yXXwwKXwwKSYyNTV8bjw8ODtjW2s+PjJdPW47bT1jW2o+PjJdfDA7bz1tPDw4O2Nbaj4+Ml09b313aGlsZShvPj4+MDwxNjc3NzIxNik7bz1tPj4+OCY2NTUzNTtjW2o+PjJdPW87bT0obj4+PjApLyhvPj4+MCl8MDtuPW4tKGVhKG0sbyl8MCl8MDtjW2s+PjJdPW47ZG97bj0obWQoY1tlPj4yXXwwKXwwKSYyNTV8bjw8ODtjW2s+PjJdPW47bz1jW2o+PjJdPDw4O2Nbaj4+Ml09b313aGlsZShvPj4+MDwxNjc3NzIxNik7bz1iKyhjW2g+PjJdPDwzKSsxMDB8MDtuPW87az1uO249bis0fDA7bj1kW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjQ7bD1kW2s+PjBdfGRbaysxPj4wXTw8OHxkW2srMj4+MF08PDE2fGRbayszPj4wXTw8MjR8KG08PDE2fGwmNjU1MzUpO209bzthW20+PjBdPWw7YVttKzE+PjBdPWw+Pjg7YVttKzI+PjBdPWw+PjE2O2FbbSszPj4wXT1sPj4yNDtvPW8rNHwwO2Fbbz4+MF09bjthW28rMT4+MF09bj4+ODthW28rMj4+MF09bj4+MTY7YVtvKzM+PjBdPW4+PjI0O289Y1toPj4yXXwwO2NbZz4+Ml09bztjW2IrKG88PDIpKzEzMj4+Ml09MDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31lbHNlIGlmKChofDApPT0xKXtlPXJkKGIrMjQ0fDAsZSxjW2IrMjgwPj4yXXwwKXwwO2g9Y1tiKzI2OD4+Ml18MDtpZigoZXwwKTwwKXtlPWgrZXwwfWVsc2V7ZT1lLShlPj4+MDxoPj4+MD8wOmgpfDB9Y1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdPWU7bz1jW2c+PjJdfDA7bD1jW2IrKG88PDIpKzEzMj4+Ml18MDtvPWIrKG88PDMpKzEwMHwwO249bzttPW47bj1uKzR8MDtsPUluKGRbbT4+MF18ZFttKzE+PjBdPDw4fGRbbSsyPj4wXTw8MTZ8ZFttKzM+PjBdPDwyNHwwLGRbbj4+MF18ZFtuKzE+PjBdPDw4fGRbbisyPj4wXTw8MTZ8ZFtuKzM+PjBdPDwyNHwwLGx8MCwoKGx8MCk8MCk8PDMxPj4zMXwwKXwwO249STttPW87YVttPj4wXT1sO2FbbSsxPj4wXT1sPj44O2FbbSsyPj4wXT1sPj4xNjthW20rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW47YVtvKzE+PjBdPW4+Pjg7YVtvKzI+PjBdPW4+PjE2O2FbbyszPj4wXT1uPj4yNDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31lbHNle2lmKChofDApPD0yKXticmVha31jW2c+PjJdPWgrMisoY1tnPj4yXXwwKSYzO2tkKGIsZSl8MDticmVha319ZWxzZXtoPXFkKGUsYis0fDApfDA7aWYoKGh8MCk9PTEpe2g9Y1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDA7ZT0ocmQoYisyNDR8MCxlLChjW2IrMjgwPj4yXXwwKSs0NHwwKXwwKStofDA7aD1jW2IrMjY4Pj4yXXwwO2lmKChlfDApPDApe2U9ZStofDB9ZWxzZXtlPWUtKGU+Pj4wPGg+Pj4wPzA6aCl8MH1vPWIrKGNbZz4+Ml08PDMpKzEwMHwwO2w9bztuPWw7bD1sKzR8MDtsPUluKGRbbj4+MF18ZFtuKzE+PjBdPDw4fGRbbisyPj4wXTw8MTZ8ZFtuKzM+PjBdPDwyNHwwLGRbbD4+MF18ZFtsKzE+PjBdPDw4fGRbbCsyPj4wXTw8MTZ8ZFtsKzM+PjBdPDwyNHwwLGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwKXwwO249STttPW87YVttPj4wXT1sO2FbbSsxPj4wXT1sPj44O2FbbSsyPj4wXT1sPj4xNjthW20rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW47YVtvKzE+PjBdPW4+Pjg7YVtvKzI+PjBdPW4+PjE2O2FbbyszPj4wXT1uPj4yNDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31pZigoaHwwKT49NTExKXtpZigoaHwwKSE9NTEyKXtpZigoaHwwKTw9NTExKXticmVha31jW2c+PjJdPShjW2c+PjJdfDApK2gmMztrZChiLGUpfDA7YnJlYWt9aD1iKzk2fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxJjM7az1iKyhjW2c+PjJdPDwzKSsxMDR8MDtrPWRbaz4+MF18ZFtrKzE+PjBdPDw4fGRbaysyPj4wXTw8MTZ8ZFtrKzM+PjBdPDwyNDtrPShyZChiKzI0NHwwLGUsKGNbYisyODA+PjJdfDApKzM1MnwwKXwwKStrfDA7aj1jW2IrMjY4Pj4yXXwwO2lmKChrfDApPDApe2o9aytqfDB9ZWxzZXtqPWstKGs+Pj4wPGo+Pj4wPzA6ail8MH1vPSgoanwwKTwwKTw8MzE+PjMxO2s9YisoY1toPj4yXTw8MykrMTAwfDA7bD1rO2FbbD4+MF09ajthW2wrMT4+MF09aj4+ODthW2wrMj4+MF09aj4+MTY7YVtsKzM+PjBdPWo+PjI0O2s9ays0fDA7YVtrPj4wXT1vO2FbaysxPj4wXT1vPj44O2FbaysyPj4wXT1vPj4xNjthW2srMz4+MF09bz4+MjQ7az1iKyhjW2g+PjJdPDwzKSsxMDB8MDtvPWs7bz1kW28+PjBdfGRbbysxPj4wXTw8OHxkW28rMj4+MF08PDE2fGRbbyszPj4wXTw8MjQ7bD1rO2FbbD4+MF09MDthW2wrMT4+MF09MDthW2wrMj4+MF09MDthW2wrMz4+MF09MDtrPWsrNHwwO2Fbaz4+MF09bzthW2srMT4+MF09bz4+ODthW2srMj4+MF09bz4+MTY7YVtrKzM+PjBdPW8+PjI0O2s9ZSs0fDA7bz1jW2s+PjJdfDA7bD1lKzh8MDttPShjW2w+PjJdfDApPj4+MTY7Y1tsPj4yXT1tO2o9KG8+Pj4wKS8obT4+PjApfDA7bT1vLShlYShtLGopfDApfDA7Y1trPj4yXT1tO2Rve209KG1kKGNbZT4+Ml18MCl8MCkmMjU1fG08PDg7Y1trPj4yXT1tO249Y1tsPj4yXXwwO289bjw8ODtjW2w+PjJdPW99d2hpbGUobz4+PjA8MTY3NzcyMTYpO289bj4+PjgmNjU1MzU7Y1tsPj4yXT1vO249KG0+Pj4wKS8obz4+PjApfDA7bT1tLShlYShuLG8pfDApfDA7Y1trPj4yXT1tO2Rve209KG1kKGNbZT4+Ml18MCl8MCkmMjU1fG08PDg7Y1trPj4yXT1tO289Y1tsPj4yXTw8ODtjW2w+PjJdPW99d2hpbGUobz4+PjA8MTY3NzcyMTYpO289YisoY1toPj4yXTw8MykrMTAwfDA7bT1vO2w9bTttPW0rNHwwO209ZFttPj4wXXxkW20rMT4+MF08PDh8ZFttKzI+PjBdPDwxNnxkW20rMz4+MF08PDI0O2w9ZFtsPj4wXXxkW2wrMT4+MF08PDh8ZFtsKzI+PjBdPDwxNnxkW2wrMz4+MF08PDI0fChuPDwxNnxqJjY1NTM1KTtuPW87YVtuPj4wXT1sO2FbbisxPj4wXT1sPj44O2FbbisyPj4wXT1sPj4xNjthW24rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW07YVtvKzE+PjBdPW0+Pjg7YVtvKzI+PjBdPW0+PjE2O2FbbyszPj4wXT1tPj4yNDtvPWNbaD4+Ml18MDtjW2c+PjJdPW87Y1tiKyhvPDwyKSsxMzI+PjJdPTA7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTA7YnJlYWt9ZG97aWYoKGh8MCk9PTApe2U9cmQoYisyNDR8MCxlLChjW2IrMjgwPj4yXXwwKSszMDh8MCl8MDtoPWNbYisyNjg+PjJdfDA7aWYoKGV8MCk8MCl7ZT1oK2V8MH1lbHNle2U9ZS0oZT4+PjA8aD4+PjA/MDpoKXwwfWg9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2g9Y1tnPj4yXXwwO2lmKChjW2IrKGg8PDIpKzE0OD4+Ml18MCk+Myl7Y1tiKyhoPDwyKSsxMzI+PjJdPWU7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTB9fWVsc2V7aWYoKGh8MCk8NTAwKXtsPWIrMjQ0fDA7aj1lYShjW2IrKGNbZz4+Ml08PDIpKzEzMj4+Ml18MCxoKXwwO2s9Y1tiKzI4MD4+Ml18MDtpZigoaHwwKTwxMCl7aD0ocmQobCxlLGsrODh8MCl8MCkranwwO2U9Y1tiKzI2OD4+Ml18MDtpZigoaHwwKTwwKXtlPWgrZXwwO2JyZWFrfWVsc2V7ZT1oLShoPj4+MDxlPj4+MD8wOmUpfDA7YnJlYWt9fWVsc2V7aD0ocmQobCxlLGsrMTMyfDApfDApK2p8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MDticmVha31lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwO2JyZWFrfX19aWYoKGh8MCk9PTUwMCl7aD0oY1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDApKjUwMHwwO2g9KHJkKGIrMjQ0fDAsZSwoY1tiKzI4MD4+Ml18MCkrMTc2fDApfDApK2h8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MH1lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwfWg9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2g9Y1tnPj4yXXwwO2lmKChjW2IrKGg8PDIpKzE0OD4+Ml18MCk8PTMpe2JyZWFrfWNbYisoaDw8MikrMTMyPj4yXT1lO2NbYisoY1tnPj4yXTw8MikrMTQ4Pj4yXT0wO2JyZWFrfWg9NTAwLWh8MDtrPWIrMjQ0fDA7aj1jW2IrKGNbZz4+Ml08PDIpKzEzMj4+Ml18MDtpZigoaHwwKT4tMTApe2g9ZWEoaixoKXwwO2g9KHJkKGssZSwoY1tiKzI4MD4+Ml18MCkrMjIwfDApfDApK2h8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MDticmVha31lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwO2JyZWFrfX1oPWVhKGosLTEwKXwwO2U9KHJkKGssZSwoY1tiKzI4MD4+Ml18MCkrMjY0fDApfDApK2h8MDtoPWNbYisyNjg+PjJdfDA7aWYoKGV8MCk8MCl7aD1lK2h8MH1lbHNle2g9ZS0oZT4+PjA8aD4+PjA/MDpoKXwwfWU9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxO2U9Y1tnPj4yXXwwO2lmKChjW2IrKGU8PDIpKzE0OD4+Ml18MCk+Myl7Y1tiKyhlPDwyKSsxMzI+PjJdPWg7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTA7ZT1ofWVsc2V7ZT1ofX19d2hpbGUoMCk7bz1iKyhjW2c+PjJdPDwzKSsxMDB8MDtsPW87bj1sO2w9bCs0fDA7bD1JbihkW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjR8MCxkW2w+PjBdfGRbbCsxPj4wXTw8OHxkW2wrMj4+MF08PDE2fGRbbCszPj4wXTw8MjR8MCxlfDAsKChlfDApPDApPDwzMT4+MzF8MCl8MDtuPUk7bT1vO2FbbT4+MF09bDthW20rMT4+MF09bD4+ODthW20rMj4+MF09bD4+MTY7YVttKzM+PjBdPWw+PjI0O289bys0fDA7YVtvPj4wXT1uO2FbbysxPj4wXT1uPj44O2FbbysyPj4wXT1uPj4xNjthW28rMz4+MF09bj4+MjR9fXdoaWxlKDApO249YisoY1tnPj4yXTw8MykrMTAwfDA7bz1uO249bis0fDA7bj1kW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjQ7bz1kW28+PjBdfGRbbysxPj4wXTw8OHxkW28rMj4+MF08PDE2fGRbbyszPj4wXTw8MjQ7ST1uO2k9ZjtyZXR1cm4gb3wwfWZ1bmN0aW9uIGxkKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtnPWk7aT1pKzE2fDA7aD1nO2lmKChhW2I+PjBdfDApPT0wKXthW2I+PjBdPTE7cGQoY1tlPj4yXXwwLGgsNik7dT1hW2grMT4+MF08PDh8ZFtoPj4wXTtqPXUmNjU1MzU7bD1hW2grMj4+MF18MDtrPShhW2grMz4+MF08PDh8bCYyNTUpJjY1NTM1O249YVtoKzQ+PjBdfDA7bT0oYVtoKzU+PjBdPDw4fG4mMjU1KSY2NTUzNTtoPWIrMXwwO2FbaD4+MF09ajthW2grMT4+MF09aj4+ODtoPWIrM3wwO2FbaD4+MF09azthW2grMT4+MF09az4+ODtoPWIrNXwwO2FbaD4+MF09bTthW2grMT4+MF09bT4+ODtoPXU7bT0obSY2NTUzNSk+Pj44JjI1NX1lbHNle2w9cWQoZSxiKzh8MCl8MDtpZigobCYxfDApPT0wKXttPWIrMXwwO209ZFttPj4wXXxkW20rMT4+MF08PDg7aD1tJjI1NX1lbHNle2g9KHFkKGUsYis1MnwwKXwwKSYyNTU7bT1iKzF8MDttPWRbbT4+MF18ZFttKzE+PjBdPDw4O2g9KG0mMjU1KStofDA7aD0oaHwwKT4yNTU/aCs2NTI4MHwwOmh9aWYoKGwmMnwwKT09MCl7aD1tJjY1MjgwfGgmNjU1MzV9ZWxzZXt1PShxZChlLGIrOTZ8MCl8MCkmMjU1O209YisxfDA7bT1kW20+PjBdfGRbbSsxPj4wXTw8ODt1PSgobSY2NTUzNSk+Pj44KSt1fDA7aD0oKHV8MCk+MjU1P3UrNjUyODB8MDp1KTw8OHxoJjY1NTM1fWo9aCY2NTUzNTtkb3tpZigobCY2NHwwKT09MCl7az1iKzF8MDtsPWIrNXwwO249ajttPWp9ZWxzZXtrPWIrMXwwO209KGgmMjU1KS0obSYyNTUpfDA7ZG97aWYoKGwmNHwwKSE9MCl7cD1xZChlLGIrMTQwfDApfDA7bj1wJjI1NTtvPWIrM3wwO289ZFtvPj4wXXxkW28rMT4+MF08PDg7cT1vJjY1NTM1O3I9KHEmMjU1KSttfDA7cz0ocnwwKTwxO2lmKChyKyAtMXwwKT4+PjA+MjUzKXt0PXM/MDoyNTV9ZWxzZXt0PXErbSYyNTV9aWYoKHQrbnwwKT4yNTUpe2lmKCFzKXtpZigocnwwKT4yNTQpe249MjU1fWVsc2V7bj1xK20mMjU1fX1lbHNle249MH1uPShwfC0yNTYpK258MDticmVha31lbHNle2lmKCFzKXtpZigocnwwKT4yNTQpe3A9MjU1fWVsc2V7cD1xK20mMjU1fX1lbHNle3A9MH1uPXArbnwwO2JyZWFrfX1lbHNle289YiszfDA7bz1kW28+PjBdfGRbbysxPj4wXTw8ODtuPW8mMjU1fX13aGlsZSgwKTtkb3tpZigobCYxNnwwKSE9MCl7cD1xZChlLGIrMjI4fDApfDA7bz1iKzN8MDtvPWRbbz4+MF18ZFtvKzE+PjBdPDw4O3I9KChuJjI1NSkrbS0obyYyNTUpfDApLzJ8MDttPXAmMjU1O3Q9Yis1fDA7dD0oZFt0Pj4wXXxkW3QrMT4+MF08PDgpJjY1NTM1O3U9KHQmMjU1KStyfDA7cz0odXwwKTwxO2lmKCh1KyAtMXwwKT4+PjA+MjUzKXtxPXM/MDoyNTV9ZWxzZXtxPXQrciYyNTV9aWYoKHErbXwwKT4yNTUpe2lmKCFzKXtpZigodXwwKT4yNTQpe209MjU1fWVsc2V7bT10K3ImMjU1fX1lbHNle209MH1tPShwfC0yNTYpK218MDtwPW87YnJlYWt9ZWxzZXtpZighcyl7aWYoKHV8MCk+MjU0KXtwPTI1NX1lbHNle3A9dCtyJjI1NX19ZWxzZXtwPTB9bT1wK218MDtwPW87YnJlYWt9fWVsc2V7bT1iKzV8MDttPShkW20+PjBdfGRbbSsxPj4wXTw8OCkmMjU1O3A9b319d2hpbGUoMCk7bz0oaD4+PjgmMjU1KS0oKChkW2s+PjBdfGRbaysxPj4wXTw8OCkmNjU1MzUpPj4+OCl8MDtpZigobCY4fDApPT0wKXtyPXAmNjUyODB8biY2NTUzNX1lbHNle3A9cWQoZSxiKzE4NHwwKXwwO3E9cCYyNTU7dD1iKzN8MDt0PSgoKGRbdD4+MF18ZFt0KzE+PjBdPDw4KSY2NTUzNSk+Pj44KStvfDA7cj0odHwwKTwxO2lmKHIpe3M9MH1lbHNle3M9KHR8MCk+MjU0PzI1NTp0JjI1NX1pZigocytxfDApPjI1NSl7aWYocil7cT0wfWVsc2V7cT0odHwwKT4yNTQ/MjU1OnQmMjU1fXA9KHB8LTI1NikrcXwwfWVsc2V7aWYocil7cD0wfWVsc2V7cD0odHwwKT4yNTQ/MjU1OnQmMjU1fXA9cCtxfDB9cj1wPDw4fG4mNjU1MzV9bj1yJjY1NTM1O2lmKChsJjMyfDApPT0wKXt1PWIrNXwwO2w9dTttPSgoZFt1Pj4wXXxkW3UrMT4+MF08PDgpJjY1MjgwfG0pJjY1NTM1O2JyZWFrfXE9cWQoZSxiKzI3MnwwKXwwO3U9YiszfDA7cD1xJjI1NTtsPWIrNXwwO3I9KCgoZFtsPj4wXXxkW2wrMT4+MF08PDgpJjY1NTM1KT4+PjgpKygoKHI+Pj44JjI1NSkrby0oKChkW3U+PjBdfGRbdSsxPj4wXTw8OCkmNjU1MzUpPj4+OCl8MCkvMnwwKXwwO289KHJ8MCk8MTtpZihvKXtzPTB9ZWxzZXtzPShyfDApPjI1ND8yNTU6ciYyNTV9aWYoKHMrcHwwKT4yNTUpe2lmKG8pe289MH1lbHNle289KHJ8MCk+MjU0PzI1NTpyJjI1NX1vPShxfC0yNTYpK298MH1lbHNle2lmKG8pe289MH1lbHNle289KHJ8MCk+MjU0PzI1NTpyJjI1NX1vPW8rcHwwfW09KG88PDh8bSkmNjU1MzV9fXdoaWxlKDApO2Fbaz4+MF09ajthW2srMT4+MF09aj4+ODtrPWIrM3wwO2Fbaz4+MF09bjthW2srMT4+MF09bj4+ODthW2w+PjBdPW07YVtsKzE+PjBdPW0+Pjg7az1uO2w9biYyNTU7bj1tJjI1NTttPShtJjY1NTM1KT4+PjgmMjU1fWFbZisxPj4wXT0oaiY2NTUzNSk+Pj44O2FbZj4+MF09aDthW2YrMz4+MF09KGsmNjU1MzUpPj4+ODthW2YrMj4+MF09bDthW2YrNT4+MF09bTthW2YrND4+MF09bjtmPWIrMzE2fDA7aWYoKGFbZj4+MF18MCk9PTApe2k9ZztyZXR1cm59dT0oKG1kKGNbZT4+Ml18MCl8MCkmMjU1KTw8MjQ7dT0oKG1kKGNbZT4+Ml18MCl8MCkmMjU1KTw8MTZ8dTt1PXV8KChtZChjW2U+PjJdfDApfDApJjI1NSk8PDg7Y1tlKzQ+PjJdPXV8KG1kKGNbZT4+Ml18MCl8MCkmMjU1O2FbZj4+MF09MDtpPWc7cmV0dXJufWZ1bmN0aW9uIG1kKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Zz1pO2U9Yis0fDA7aD1jW2U+PjJdfDA7Zj1iKzh8MDtpZigoaHwwKTwoY1tmPj4yXXwwKSl7aj1oO2g9aisxfDA7Y1tlPj4yXT1oO2g9YisxMnwwO2g9Y1toPj4yXXwwO2o9aCtqfDA7aj1hW2o+PjBdfDA7aT1nO3JldHVybiBqfDB9Y1tlPj4yXT0wO2o9Y1tiPj4yXXwwO2g9aisxM3wwO2lmKChhW2g+PjBdfDApPT0wKXtrPWorNHwwO249ais4fDA7bD1jW24+PjJdfDA7bT0oY1trPj4yXXwwKS1sfDA7bT0obXwwKTwxMDQ4NTc2P206MTA0ODU3NjtNbihjW2IrMTI+PjJdfDAsKGNbaj4+Ml18MCkrbHwwLG18MCl8MDtsPShjW24+PjJdfDApK218MDtjW24+PjJdPWw7Y1tqKzE2Pj4yXT1tO2lmKChsfDApPj0oY1trPj4yXXwwKSl7YVtoPj4wXT0xfX1lbHNle2FbaisxMj4+MF09MX1uPWNbKGNbYj4+Ml18MCkrMTY+PjJdfDA7Y1tmPj4yXT1uO2lmKChufDApIT0wKXtuPWNbZT4+Ml18MDttPW4rMXwwO2NbZT4+Ml09bTttPWIrMTJ8MDttPWNbbT4+Ml18MDtuPW0rbnwwO249YVtuPj4wXXwwO2k9ZztyZXR1cm4gbnwwfWI9WGEoOCl8MDtjW2I+PjJdPTk5Mjg7d2hpbGUoMSl7ZT11bigzMil8MDtpZigoZXwwKSE9MCl7ZD0xNDticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZHwwKT09MTQpe2NbZSs0Pj4yXT0xOTtjW2U+PjJdPTE5O2Y9ZSsxMnwwO2NbYis0Pj4yXT1mO2NbZSs4Pj4yXT0wO2Y9ZiswfDA7ZT04MjR8MDtkPWYrMjB8MDtkb3thW2Y+PjBdPWFbZT4+MF18MDtmPWYrMXwwO2U9ZSsxfDB9d2hpbGUoKGZ8MCk8KGR8MCkpO2NbYj4+Ml09ODU2O3diKGJ8MCw4MDgsMjYpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpO3JldHVybiAwfWZ1bmN0aW9uIG5kKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBvZChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHBkKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2Y9aTtnPWIrNHwwO2s9Y1tnPj4yXXwwO2o9Yis4fDA7ZG97aWYoKGt8MCk8KGNbaj4+Ml18MCkpe2o9a31lbHNle2NbZz4+Ml09MDtrPWNbYj4+Ml18MDtsPWsrMTN8MDtpZigoYVtsPj4wXXwwKT09MCl7bT1rKzR8MDtwPWsrOHwwO249Y1twPj4yXXwwO289KGNbbT4+Ml18MCktbnwwO289KG98MCk8MTA0ODU3Nj9vOjEwNDg1NzY7TW4oY1tiKzEyPj4yXXwwLChjW2s+PjJdfDApK258MCxvfDApfDA7bj0oY1twPj4yXXwwKStvfDA7Y1twPj4yXT1uO2NbaysxNj4+Ml09bztpZigobnwwKT49KGNbbT4+Ml18MCkpe2FbbD4+MF09MX19ZWxzZXthW2srMTI+PjBdPTF9cD1jWyhjW2I+PjJdfDApKzE2Pj4yXXwwO2Nbaj4+Ml09cDtpZigocHwwKSE9MCl7aj1jW2c+PjJdfDA7YnJlYWt9ZT1YYSg4KXwwO2NbZT4+Ml09OTkyODt3aGlsZSgxKXtmPXVuKDMyKXwwO2lmKChmfDApIT0wKXtoPTE0O2JyZWFrfWY9Y1s1NjY2XXwwO2NbNTY2Nl09ZiswO2lmKChmfDApPT0wKXticmVha31zY1tmJjMxXSgpfWlmKChofDApPT0xNCl7Y1tmKzQ+PjJdPTE5O2NbZj4+Ml09MTk7ZD1mKzEyfDA7Y1tlKzQ+PjJdPWQ7Y1tmKzg+PjJdPTA7ZD1kKzB8MDtnPTgyNHwwO2Y9ZCsyMHwwO2Rve2FbZD4+MF09YVtnPj4wXXwwO2Q9ZCsxfDA7Zz1nKzF8MH13aGlsZSgoZHwwKTwoZnwwKSk7Y1tlPj4yXT04NTY7d2IoZXwwLDgwOCwyNil9cD1YYSg0KXwwO2NbcD4+Ml09MjI2ODA7d2IocHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2I9Y1tiKzEyPj4yXXwwO2g9YisoaitlKXwwO2lmKChlfDApPT0wKXtwPWo7cD1wK2V8MDtjW2c+PjJdPXA7aT1mO3JldHVybn1iPWIranwwO3doaWxlKDEpe2FbZD4+MF09YVtiPj4wXXwwO2I9YisxfDA7aWYoKGJ8MCk9PShofDApKXticmVha31lbHNle2Q9ZCsxfDB9fXA9Y1tnPj4yXXwwO3A9cCtlfDA7Y1tnPj4yXT1wO2k9ZjtyZXR1cm59ZnVuY3Rpb24gcWQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7ZT1pO2Q9YSs4fDA7Zj1jW2Q+PjJdfDA7aD1jW2IrMTY+PjJdfDA7aWYoKGh8MCkhPTApe2o9Y1thKzQ+PjJdfDA7Zz1mPj4+MTU7Y1tkPj4yXT1nO2w9KGo+Pj4wKS8oZz4+PjApfDA7bT1sPj4+KGNbYis0MD4+Ml18MCk7az1jW2grKG08PDIpPj4yXXwwO209KGNbaCsobSsxPDwyKT4+Ml18MCkrMXwwO249aysxfDA7aD1jW2IrOD4+Ml18MDtpZihtPj4+MD5uPj4+MCl7d2hpbGUoMSl7bj0obStrfDApPj4+MTtvPShjW2grKG48PDIpPj4yXXwwKT4+PjA+bD4+PjA7az1vP2s6bjttPW8/bjptO249aysxfDA7aWYoIShtPj4+MD5uPj4+MCkpe2w9bjticmVha319fWVsc2V7bD1ufW49ZWEoZyxjW2grKGs8PDIpPj4yXXwwKXwwO2lmKChrfDApIT0oY1tiKzMyPj4yXXwwKSl7Zj1lYShjW2grKGw8PDIpPj4yXXwwLGcpfDB9fWVsc2V7aD1mPj4+MTU7Y1tkPj4yXT1oO2w9Y1tiPj4yXXwwO2c9Y1tiKzg+PjJdfDA7aj1jW2ErND4+Ml18MDttPWw+Pj4xO2s9MDtuPTA7ZG97cD1lYShjW2crKG08PDIpPj4yXXwwLGgpfDA7bz1wPj4+MD5qPj4+MDtmPW8/cDpmO249bz9uOnA7az1vP2s6bTtsPW8/bTpsO209KGsrbHwwKT4+PjF9d2hpbGUoKG18MCkhPShrfDApKX1nPWErNHwwO2g9ai1ufDA7Y1tnPj4yXT1oO3A9Zi1ufDA7Y1tkPj4yXT1wO2lmKHA+Pj4wPDE2Nzc3MjE2KXtkb3toPShtZChjW2E+PjJdfDApfDApJjI1NXxoPDw4O2NbZz4+Ml09aDtwPWNbZD4+Ml08PDg7Y1tkPj4yXT1wfXdoaWxlKHA+Pj4wPDE2Nzc3MjE2KX1vPShjW2IrMTI+PjJdfDApKyhrPDwyKXwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtvPWIrMjh8MDtwPShjW28+PjJdfDApKyAtMXwwO2Nbbz4+Ml09cDtpZigocHwwKSE9MCl7aT1lO3JldHVybiBrfDB9ZGQoYik7aT1lO3JldHVybiBrfDB9ZnVuY3Rpb24gcmQoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtmPXFkKGIsZCl8MDtjW2E+PjJdPWY7aWYoKGZ8MCkhPTApe2lmKCEoZj4+PjA8MzIpKXtsPWNbYSsyOD4+Ml18MDtpPWU7cmV0dXJuIGx8MH1kPWNbYSsxMj4+Ml18MDtpZihmPj4+MD5kPj4+MCl7ZD1mLWR8MDtsPXFkKGIsKGNbYSs2OD4+Ml18MCkrKChmKyAtMXwwKSo0NHwwKXwwKXwwO2Q9bDw8ZHwoc2QoYixkKXwwKX1lbHNle2Q9cWQoYiwoY1thKzY4Pj4yXXwwKSsoKGYrIC0xfDApKjQ0fDApfDApfDB9YT1jW2E+PjJdfDA7aWYoKGR8MCk8KDE8PGErIC0xfDApKXtsPWQrMSsoLTE8PGEpfDA7aT1lO3JldHVybiBsfDB9ZWxzZXtsPWQrMXwwO2k9ZTtyZXR1cm4gbHwwfX1mPWErNTZ8MDtoPWIrOHwwO2w9Y1toPj4yXXwwO2o9ZWEobD4+PjEzLGNbZj4+Ml18MCl8MDtnPWIrNHwwO2s9Y1tnPj4yXXwwO209az4+PjA+PWo+Pj4wO2Q9bSYxO2lmKG0pe2NbZz4+Ml09ay1qO2o9bC1qfDA7Y1toPj4yXT1qfWVsc2V7Y1toPj4yXT1qO2o9YSs2MHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtqPWNbaD4+Ml18MH1pZihqPj4+MDwxNjc3NzIxNil7aj1jW2c+PjJdfDA7ZG97aj0obWQoY1tiPj4yXXwwKXwwKSYyNTV8ajw8ODtjW2c+PjJdPWo7bT1jW2g+PjJdPDw4O2NbaD4+Ml09bX13aGlsZShtPj4+MDwxNjc3NzIxNil9aD1hKzUyfDA7bT0oY1toPj4yXXwwKSsgLTF8MDtjW2g+PjJdPW07aWYoKG18MCkhPTApe209ZDtpPWU7cmV0dXJuIG18MH1iPWErNDh8MDtnPWNbYj4+Ml18MDtqPWErNjR8MDtrPShjW2o+PjJdfDApK2d8MDtjW2o+PjJdPWs7aWYoaz4+PjA+ODE5Mil7az0oaysxfDApPj4+MTtjW2o+PjJdPWs7bT1hKzYwfDA7YT0oKGNbbT4+Ml18MCkrMXwwKT4+PjE7Y1ttPj4yXT1hO2lmKChhfDApPT0oa3wwKSl7bT1rKzF8MDtjW2o+PjJdPW07aj1tfWVsc2V7aj1rO2s9YX19ZWxzZXtqPWs7az1jW2ErNjA+PjJdfDB9Y1tmPj4yXT0oZWEoMjE0NzQ4MzY0OC8oaj4+PjApfDAsayl8MCk+Pj4xODttPWcqNXwwO209bT4+PjA+MjU5PzY0Om0+Pj4yO2NbYj4+Ml09bTtjW2g+PjJdPW07bT1kO2k9ZTtyZXR1cm4gbXwwfWZ1bmN0aW9uIHNkKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2Y9aTtkPWErNHwwO2c9Y1tkPj4yXXwwO2U9YSs4fDA7aD1jW2U+PjJdfDA7aWYoYj4+PjA+MTkpe2o9aD4+PjE2O2NbZT4+Ml09ajtoPShnPj4+MCkvKGo+Pj4wKXwwO2c9Zy0oZWEoaCxqKXwwKXwwO2NbZD4+Ml09Zztkb3tnPShtZChjW2E+PjJdfDApfDApJjI1NXxnPDw4O2NbZD4+Ml09ZztqPWNbZT4+Ml08PDg7Y1tlPj4yXT1qfXdoaWxlKGo+Pj4wPDE2Nzc3MjE2KTtqPShzZChhLGIrIC0xNnwwKXwwKTw8MTZ8aCY2NTUzNTtpPWY7cmV0dXJuIGp8MH1qPWg+Pj5iO2NbZT4+Ml09ajtiPShnPj4+MCkvKGo+Pj4wKXwwO2c9Zy0oZWEoYixqKXwwKXwwO2NbZD4+Ml09ZztpZighKGo+Pj4wPDE2Nzc3MjE2KSl7aT1mO3JldHVybiBifDB9ZG97Zz0obWQoY1thPj4yXXwwKXwwKSYyNTV8Zzw8ODtjW2Q+PjJdPWc7aj1jW2U+PjJdPDw4O2NbZT4+Ml09an13aGlsZShqPj4+MDwxNjc3NzIxNik7aT1mO3JldHVybiBifDB9ZnVuY3Rpb24gdGQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7Zj1pO2k9aSs5NnwwO2g9Zis0NHwwO2Q9Zjt3PWIrMzZ8MDt1PWIrNDB8MDtpZigoY1t3Pj4yXXwwKSE9KGNbdT4+Ml18MCkpe2k9ZjtyZXR1cm59aj1iKzh8MDtlPWIrMjB8MDtpZigoY1tqPj4yXXwwKSE9MCl7Zz1iKzQ0fDA7bj1oKzR8MDttPWgrOHwwO2w9aCsxMnwwO2s9aCsxNnwwO289aCsyMHwwO3A9aCsyNHwwO3E9aCsyOHwwO3I9aCszMnwwO3M9aCszNnwwO3Q9aCs0MHwwO3Y9MDtkb3tjZChoLChjW2U+PjJdfDApKzF8MCk7eD1jW3U+PjJdfDA7aWYoeD4+PjA8KGNbZz4+Ml18MCk+Pj4wKXtpZigoeHwwKT09MCl7eD0wfWVsc2V7Y1t4Pj4yXT1jW2g+PjJdO2FbeCs0Pj4wXT1hW24+PjBdfDA7Y1t4Kzg+PjJdPWNbbT4+Ml07Y1t4KzEyPj4yXT1jW2w+PjJdO2NbeCsxNj4+Ml09Y1trPj4yXTtjW3grMjA+PjJdPWNbbz4+Ml07Y1t4KzI0Pj4yXT1jW3A+PjJdO2NbeCsyOD4+Ml09Y1txPj4yXTtjW3grMzI+PjJdPWNbcj4+Ml07Y1t4KzM2Pj4yXT1jW3M+PjJdO2NbeCs0MD4+Ml09Y1t0Pj4yXTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDt4PWNbdT4+Ml18MH1jW3U+PjJdPXgrNDR9ZWxzZXt1ZCh3LGgpfXg9Y1ttPj4yXXwwO2lmKCh4fDApIT0wKXt2bihjW3grIC00Pj4yXXwwKX14PWNbbD4+Ml18MDtpZigoeHwwKSE9MCl7dm4oY1t4KyAtND4+Ml18MCl9eD1jW2s+PjJdfDA7aWYoKHh8MCkhPTApe3ZuKGNbeCsgLTQ+PjJdfDApfXY9disxfDB9d2hpbGUodj4+PjA8KGNbaj4+Ml18MCk+Pj4wKX1pZigoY1tlPj4yXXwwKT09MCl7aT1mO3JldHVybn10PWIrMTJ8MDtrPWIrNzJ8MDtzPWIrNzZ8MDtsPWQrNHwwO2o9ZCs4fDA7bz1kKzEyfDA7aD1kKzE2fDA7bT1kKzIwfDA7bj1kKzI0fDA7Zz1kKzI4fDA7cD1kKzMyfDA7cT1kKzM2fDA7cj1kKzQwfDA7Yj1iKzY4fDA7dT0xO2Rve3Y9Y1t0Pj4yXXwwO2NkKGQsMTw8KHU+Pj4wPnY+Pj4wP3Y6dSkpO3Y9Y1trPj4yXXwwO2lmKHY+Pj4wPChjW3M+PjJdfDApPj4+MCl7aWYoKHZ8MCk9PTApe3Y9MH1lbHNle2Nbdj4+Ml09Y1tkPj4yXTthW3YrND4+MF09YVtsPj4wXXwwO2Nbdis4Pj4yXT1jW2o+PjJdO2NbdisxMj4+Ml09Y1tvPj4yXTtjW3YrMTY+PjJdPWNbaD4+Ml07Y1t2KzIwPj4yXT1jW20+PjJdO2NbdisyND4+Ml09Y1tuPj4yXTtjW3YrMjg+PjJdPWNbZz4+Ml07Y1t2KzMyPj4yXT1jW3A+PjJdO2NbdiszNj4+Ml09Y1txPj4yXTtjW3YrNDA+PjJdPWNbcj4+Ml07Y1tqKzA+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7dj1jW2s+PjJdfDB9Y1trPj4yXT12KzQ0fWVsc2V7dWQoYixkKX12PWNbaj4+Ml18MDtpZigodnwwKSE9MCl7dm4oY1t2KyAtND4+Ml18MCl9dj1jW28+PjJdfDA7aWYoKHZ8MCkhPTApe3ZuKGNbdisgLTQ+PjJdfDApfXY9Y1toPj4yXXwwO2lmKCh2fDApIT0wKXt2bihjW3YrIC00Pj4yXXwwKX11PXUrMXwwfXdoaWxlKCEodT4+PjA+KGNbZT4+Ml18MCk+Pj4wKSk7aT1mO3JldHVybn1mdW5jdGlvbiB1ZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2U9aTtmPWIrNHwwO209Y1tmPj4yXXwwO2s9Y1tiPj4yXXwwO2w9aztoPShtLWx8MCkvNDR8MDtqPWgrMXwwO2lmKGo+Pj4wPjk3NjEyODkzKXtUaygpfWc9Yis4fDA7bD0oKGNbZz4+Ml18MCktbHwwKS80NHwwO2lmKGw+Pj4wPDQ4ODA2NDQ2KXtvPWw8PDE7bz1vPj4+MDxqPj4+MD9qOm87aWYoKG98MCk9PTApe3A9MDtsPTB9ZWxzZXtuPTV9fWVsc2V7bz05NzYxMjg5MztuPTV9ZG97aWYoKG58MCk9PTUpe3A9byo0NHwwO3A9KHB8MCk9PTA/MTpwO3doaWxlKDEpe2w9dW4ocCl8MDtpZigobHwwKSE9MCl7bj0xMTticmVha31sPWNbNTY2Nl18MDtjWzU2NjZdPWwrMDtpZigobHwwKT09MCl7YnJlYWt9c2NbbCYzMV0oKX1pZigobnwwKT09MTEpe3A9bzticmVha31wPVhhKDQpfDA7Y1twPj4yXT0yMjY4MDt3YihwfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7bz1sKyhoKjQ0fDApfDA7bj1sKyhwKjQ0fDApfDA7aWYoKG98MCkhPTApe2Nbbz4+Ml09Y1tkPj4yXTthW2wrKGgqNDR8MCkrND4+MF09YVtkKzQ+PjBdfDA7bT1kKzh8MDtjW2wrKGgqNDR8MCkrOD4+Ml09Y1ttPj4yXTtjW2wrKGgqNDR8MCkrMTI+PjJdPWNbZCsxMj4+Ml07Y1tsKyhoKjQ0fDApKzE2Pj4yXT1jW2QrMTY+PjJdO2NbbCsoaCo0NHwwKSsyMD4+Ml09Y1tkKzIwPj4yXTtjW2wrKGgqNDR8MCkrMjQ+PjJdPWNbZCsyND4+Ml07Y1tsKyhoKjQ0fDApKzI4Pj4yXT1jW2QrMjg+PjJdO2NbbCsoaCo0NHwwKSszMj4+Ml09Y1tkKzMyPj4yXTtjW2wrKGgqNDR8MCkrMzY+PjJdPWNbZCszNj4+Ml07Y1tsKyhoKjQ0fDApKzQwPj4yXT1jW2QrNDA+PjJdO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO209Y1tmPj4yXXwwO2s9Y1tiPj4yXXwwfWo9bCsoaio0NHwwKXwwO2lmKChtfDApIT0oa3wwKSl7aD1oKyAtMS0oKChtKyAtNDQrKDAtayl8MCk+Pj4wKS80NHwwKXwwO3doaWxlKDEpe2Q9bTttPW0rIC00NHwwO2NbbysgLTQ0Pj4yXT1jW20+PjJdO2FbbysgLTQwPj4wXT1hW2QrIC00MD4+MF18MDtwPWQrIC0zNnwwO2NbbysgLTM2Pj4yXT1jW3A+PjJdO2NbbysgLTMyPj4yXT1jW2QrIC0zMj4+Ml07Y1tvKyAtMjg+PjJdPWNbZCsgLTI4Pj4yXTtjW28rIC0yND4+Ml09Y1tkKyAtMjQ+PjJdO2NbbysgLTIwPj4yXT1jW2QrIC0yMD4+Ml07Y1tvKyAtMTY+PjJdPWNbZCsgLTE2Pj4yXTtjW28rIC0xMj4+Ml09Y1tkKyAtMTI+PjJdO2NbbysgLTg+PjJdPWNbZCsgLTg+PjJdO2NbbysgLTQ+PjJdPWNbZCsgLTQ+PjJdO2NbcCswPj4yXT0wO2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0wO2lmKChtfDApPT0oa3wwKSl7YnJlYWt9ZWxzZXtvPW8rIC00NHwwfX1tPWNbYj4+Ml18MDtrPWNbZj4+Ml18MDtjW2I+PjJdPWwrKGgqNDR8MCk7Y1tmPj4yXT1qO2NbZz4+Ml09bjtpZigoa3wwKSE9KG18MCkpe2Rve2Y9Y1trKyAtMzY+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1trKyAtMzI+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1trKyAtMjg+PjJdfDA7az1rKyAtNDR8MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9fXdoaWxlKChrfDApIT0obXwwKSl9fWVsc2V7Y1tiPj4yXT1vO2NbZj4+Ml09ajtjW2c+PjJdPW59aWYoKG18MCk9PTApe2k9ZTtyZXR1cm59dm4obSk7aT1lO3JldHVybn1mdW5jdGlvbiB2ZChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gd2QoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1jW2ErMTI+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24geWQoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT0xNDA4KXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIHpkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEFkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zz1lO2Y9Y1tiKzg+PjJdfDA7Yj1jW2IrND4+Ml18MDtqZChnLGYsYik7aD1jW2c+PjJdfDA7YVtkKzM+PjBdPWg+Pj4yNDthW2QrMj4+MF09aD4+PjE2O2FbZCsxPj4wXT1oPj4+ODthW2Q+PjBdPWg7aD1jW2crND4+Ml18MDthW2QrNz4+MF09aD4+PjI0O2FbZCs2Pj4wXT1oPj4+MTY7YVtkKzU+PjBdPWg+Pj44O2FbZCs0Pj4wXT1oO2g9Y1tnKzg+PjJdfDA7YVtkKzExPj4wXT1oPj4+MjQ7YVtkKzEwPj4wXT1oPj4+MTY7YVtkKzk+PjBdPWg+Pj44O2FbZCs4Pj4wXT1oO2g9Y1tnKzEyPj4yXXwwO2FbZCsxMz4+MF09KGgmNjU1MzUpPj4+ODthW2QrMTI+PjBdPWg7YVtkKzE0Pj4wXT1oPj4+MTY7YVtkKzE1Pj4wXT1oPj4+MjQ7Zz1jW2crMTY+PjJdfDA7YVtkKzE2Pj4wXT1nO2FbZCsxNz4+MF09KGcmNjU1MzUpPj4+ODthW2QrMTk+PjBdPWc+Pj4yNDthW2QrMTg+PjBdPWc+Pj4xNjtsZChmKzQ3ODR8MCxiLGQrMjB8MCk7aT1lO3JldHVybn1mdW5jdGlvbiBCZChhKXthPWF8MDt2YXIgYj0wO2I9aTtjW2E+PjJdPTE3MjA7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1hZChhKzQ3ODR8MCk7WGMoYSk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBDZChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7Y1thPj4yXT0xNzIwO2Q9Y1thKzg+PjJdfDA7aWYoKGR8MCk9PTApe3ZuKGEpO2k9YjtyZXR1cm59YWQoZCs0Nzg0fDApO1hjKGQpO3ZuKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gRGQoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEVkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEZkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2E9Y1thKzEyPj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEdkKGEsYil7YT1hfDA7Yj1ifDA7aWYoKGNbYis0Pj4yXXwwKT09MjM3Nil7YT1hKzEyfDB9ZWxzZXthPTB9cmV0dXJuIGF8MH1mdW5jdGlvbiBIZChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBJZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrMzJ8MDtoPWU7Zj1jW2IrOD4+Ml18MDtiPWNbYis0Pj4yXXwwO2pkKGgsZixiKTtnPWNbaD4+Ml18MDthW2QrMz4+MF09Zz4+PjI0O2FbZCsyPj4wXT1nPj4+MTY7YVtkKzE+PjBdPWc+Pj44O2FbZD4+MF09ZztnPWNbaCs0Pj4yXXwwO2FbZCs3Pj4wXT1nPj4+MjQ7YVtkKzY+PjBdPWc+Pj4xNjthW2QrNT4+MF09Zz4+Pjg7YVtkKzQ+PjBdPWc7Zz1jW2grOD4+Ml18MDthW2QrMTE+PjBdPWc+Pj4yNDthW2QrMTA+PjBdPWc+Pj4xNjthW2QrOT4+MF09Zz4+Pjg7YVtkKzg+PjBdPWc7Zz1jW2grMTI+PjJdfDA7YVtkKzEzPj4wXT0oZyY2NTUzNSk+Pj44O2FbZCsxMj4+MF09ZzthW2QrMTQ+PjBdPWc+Pj4xNjthW2QrMTU+PjBdPWc+Pj4yNDtoPWNbaCsxNj4+Ml18MDthW2QrMTY+PjBdPWg7YVtkKzE3Pj4wXT0oaCY2NTUzNSk+Pj44O2FbZCsxOT4+MF09aD4+PjI0O2FbZCsxOD4+MF09aD4+PjE2O2g9a2QoZis0Nzg0fDAsYil8MDtnPUk7YVtkKzIzPj4wXT1oPj4+MjQ7YVtkKzIyPj4wXT1oPj4+MTY7YVtkKzIxPj4wXT1oPj4+ODthW2QrMjA+PjBdPWg7aj1LbihofDAsZ3wwLDU2KXwwO2FbZCsyNz4+MF09ajtqPUtuKGh8MCxnfDAsNDgpfDA7YVtkKzI2Pj4wXT1qO2g9S24oaHwwLGd8MCw0MCl8MDthW2QrMjU+PjBdPWg7YVtkKzI0Pj4wXT1nO2Q9Zis1MTEyfDA7aWYoKGFbZD4+MF18MCk9PTApe2k9ZTtyZXR1cm59aj0oKG1kKGNbYj4+Ml18MCl8MCkmMjU1KTw8MjQ7aj0oKG1kKGNbYj4+Ml18MCl8MCkmMjU1KTw8MTZ8ajtqPWp8KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDg7Y1tiKzQ+PjJdPWp8KG1kKGNbYj4+Ml18MCl8MCkmMjU1O2FbZD4+MF09MDtpPWU7cmV0dXJufWZ1bmN0aW9uIEpkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2NbYT4+Ml09MjY2NDthPWNbYSs4Pj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufV9jKGErNTA5NnwwKTtfYyhhKzUwNjR8MCk7WmMoYSs0OTQ4fDApOyRjKGErNDc4NHwwKTtYYyhhKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEtkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtjW2E+PjJdPTI2NjQ7ZD1jW2ErOD4+Ml18MDtpZigoZHwwKT09MCl7dm4oYSk7aT1iO3JldHVybn1fYyhkKzUwOTZ8MCk7X2MoZCs1MDY0fDApO1pjKGQrNDk0OHwwKTskYyhkKzQ3ODR8MCk7WGMoZCk7dm4oZCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBMZChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gTWQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gTmQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1jW2ErMTI+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gT2QoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT0zMzIwKXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIFBkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFFkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zz1lO2Y9Y1tiKzg+PjJdfDA7Yj1jW2IrND4+Ml18MDtqZChnLGYsYik7aD1jW2c+PjJdfDA7YVtkKzM+PjBdPWg+Pj4yNDthW2QrMj4+MF09aD4+PjE2O2FbZCsxPj4wXT1oPj4+ODthW2Q+PjBdPWg7aD1jW2crND4+Ml18MDthW2QrNz4+MF09aD4+PjI0O2FbZCs2Pj4wXT1oPj4+MTY7YVtkKzU+PjBdPWg+Pj44O2FbZCs0Pj4wXT1oO2g9Y1tnKzg+PjJdfDA7YVtkKzExPj4wXT1oPj4+MjQ7YVtkKzEwPj4wXT1oPj4+MTY7YVtkKzk+PjBdPWg+Pj44O2FbZCs4Pj4wXT1oO2g9Y1tnKzEyPj4yXXwwO2FbZCsxMz4+MF09KGgmNjU1MzUpPj4+ODthW2QrMTI+PjBdPWg7YVtkKzE0Pj4wXT1oPj4+MTY7YVtkKzE1Pj4wXT1oPj4+MjQ7Zz1jW2crMTY+PjJdfDA7YVtkKzE2Pj4wXT1nO2FbZCsxNz4+MF09KGcmNjU1MzUpPj4+ODthW2QrMTk+PjBdPWc+Pj4yNDthW2QrMTg+PjBdPWc+Pj4xNjtkPWYrNDc4NHwwO2lmKChhW2Q+PjBdfDApPT0wKXtpPWU7cmV0dXJufWg9KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDI0O2g9KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDE2fGg7aD1ofCgobWQoY1tiPj4yXXwwKXwwKSYyNTUpPDw4O2NbYis0Pj4yXT1ofChtZChjW2I+PjJdfDApfDApJjI1NTthW2Q+PjBdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBSZChhKXthPWF8MDt2YXIgYj0wO2I9aTtjW2E+PjJdPTM2MDg7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1YYyhhKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFNkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtjW2E+PjJdPTM2MDg7ZD1jW2ErOD4+Ml18MDtpZigoZHwwKT09MCl7dm4oYSk7aT1iO3JldHVybn1YYyhkKTt2bihkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFRkKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBVZChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBWZChhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1sY1tjWyhjW2E+PjJdfDApKzg+PjJdJjI1NV0oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBXZChhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTQyMTYpe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gWGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gWWQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7Y1tiPj4yXT00NTAwO2NbYis2ND4+Ml09NDU0MDtjW2IrOD4+Ml09NDUyMDtlPWIrMTJ8MDtjW2U+PjJdPTQ2ODg7aWYoISgoYVtiKzQ0Pj4wXSYxKT09MCk/KGY9Y1tiKzUyPj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1jW2U+PjJdPTEwNjY0O2U9Y1tiKzE2Pj4yXXwwO2c9ZSs0fDA7Zj1jW2c+PjJdfDA7Y1tnPj4yXT1mKyAtMTtpZigoZnwwKSE9MCl7Zz1iKzY0fDA7cmcoZyk7aT1kO3JldHVybn1sY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSk7Zz1iKzY0fDA7cmcoZyk7aT1kO3JldHVybn1mdW5jdGlvbiBaZChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9aTtnPWIrIC04fDA7Y1tnPj4yXT00NTAwO2I9Zys2NHwwO2NbYj4+Ml09NDU0MDtjW2crOD4+Ml09NDUyMDtmPWcrMTJ8MDtjW2Y+PjJdPTQ2ODg7aWYoISgoYVtnKzQ0Pj4wXSYxKT09MCk/KGU9Y1tnKzUyPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1jW2Y+PjJdPTEwNjY0O2U9Y1tnKzE2Pj4yXXwwO2Y9ZSs0fDA7Zz1jW2Y+PjJdfDA7Y1tmPj4yXT1nKyAtMTtpZigoZ3wwKSE9MCl7cmcoYik7aT1kO3JldHVybn1sY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSk7cmcoYik7aT1kO3JldHVybn1mdW5jdGlvbiBfZChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtlPWk7Zz1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7Y1tiK2c+PjJdPTQ1MDA7ZD1iKyhnKzY0KXwwO2NbZD4+Ml09NDU0MDtjW2IrKGcrOCk+PjJdPTQ1MjA7Zj1iKyhnKzEyKXwwO2NbZj4+Ml09NDY4ODtpZighKChhW2IrKGcrNDQpPj4wXSYxKT09MCk/KGg9Y1tiKyhnKzUyKT4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9Y1tmPj4yXT0xMDY2NDtiPWNbYisoZysxNik+PjJdfDA7Zz1iKzR8MDtoPWNbZz4+Ml18MDtjW2c+PjJdPWgrIC0xO2lmKChofDApIT0wKXtyZyhkKTtpPWU7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtyZyhkKTtpPWU7cmV0dXJufWZ1bmN0aW9uICRkKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1pO2NbYj4+Ml09NDUwMDtjW2IrNjQ+PjJdPTQ1NDA7Y1tiKzg+PjJdPTQ1MjA7ZT1iKzEyfDA7Y1tlPj4yXT00Njg4O2lmKCEoKGFbYis0ND4+MF0mMSk9PTApPyhmPWNbYis1Mj4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9Y1tlPj4yXT0xMDY2NDtlPWNbYisxNj4+Ml18MDtnPWUrNHwwO2Y9Y1tnPj4yXXwwO2NbZz4+Ml09ZisgLTE7aWYoKGZ8MCk9PTApe2xjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKX1yZyhiKzY0fDApO2lmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gYWUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZD1pO2Y9YisgLTh8MDtjW2Y+PjJdPTQ1MDA7Yj1mKzY0fDA7Y1tiPj4yXT00NTQwO2NbZis4Pj4yXT00NTIwO2c9ZisxMnwwO2NbZz4+Ml09NDY4ODtpZighKChhW2YrNDQ+PjBdJjEpPT0wKT8oZT1jW2YrNTI+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWNbZz4+Ml09MTA2NjQ7ZT1jW2YrMTY+PjJdfDA7aD1lKzR8MDtnPWNbaD4+Ml18MDtjW2g+PjJdPWcrIC0xO2lmKChnfDApIT0wKXtyZyhiKTt2bihmKTtpPWQ7cmV0dXJufWxjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKTtyZyhiKTt2bihmKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGJlKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtkPWk7aD1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7Zj1iK2h8MDtjW2Y+PjJdPTQ1MDA7ZT1iKyhoKzY0KXwwO2NbZT4+Ml09NDU0MDtjW2IrKGgrOCk+PjJdPTQ1MjA7Zz1iKyhoKzEyKXwwO2NbZz4+Ml09NDY4ODtpZighKChhW2IrKGgrNDQpPj4wXSYxKT09MCk/KGo9Y1tiKyhoKzUyKT4+Ml18MCwoanwwKSE9MCk6MCl7dm4oail9Y1tnPj4yXT0xMDY2NDtiPWNbYisoaCsxNik+PjJdfDA7aD1iKzR8MDtqPWNbaD4+Ml18MDtjW2g+PjJdPWorIC0xO2lmKChqfDApPT0wKXtsY1tjWyhjW2I+PjJdfDApKzg+PjJdJjI1NV0oYil9cmcoZSk7aWYoKGZ8MCk9PTApe2k9ZDtyZXR1cm59dm4oZik7aT1kO3JldHVybn1mdW5jdGlvbiBjZShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2NbYj4+Ml09NDY4ODtpZighKChhW2IrMzI+PjBdJjEpPT0wKT8oZT1jW2IrNDA+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWNbYj4+Ml09MTA2NjQ7Yj1jW2IrND4+Ml18MDtmPWIrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe2k9ZDtyZXR1cm59bGNbY1soY1tiPj4yXXwwKSs4Pj4yXSYyNTVdKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZGUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7Y1tiPj4yXT00Njg4O2lmKCEoKGFbYiszMj4+MF0mMSk9PTApPyhlPWNbYis0MD4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9Y1tiPj4yXT0xMDY2NDtlPWNbYis0Pj4yXXwwO2c9ZSs0fDA7Zj1jW2c+PjJdfDA7Y1tnPj4yXT1mKyAtMTtpZigoZnwwKT09MCl7bGNbY1soY1tlPj4yXXwwKSs4Pj4yXSYyNTVdKGUpfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZWUoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtsPWk7bz1kKzQ0fDA7bT1jW28+PjJdfDA7az1kKzI0fDA7aj1jW2s+PjJdfDA7aWYobT4+PjA8aj4+PjApe2Nbbz4+Ml09ajttPWp9bz1oJjI0O2Rve2lmKChvfDApPT0wKXtvPWI7Y1tvPj4yXT0wO2Nbbys0Pj4yXT0wO289Yis4fDA7Y1tvPj4yXT0tMTtjW28rND4+Ml09LTE7aT1sO3JldHVybn1lbHNlIGlmKChvfDApIT0yNCl7aWYoKGd8MCk9PTIpe249MTE7YnJlYWt9ZWxzZSBpZigoZ3wwKT09MCl7Zz0wO289MDticmVha31lbHNlIGlmKChnfDApIT0xKXtuPTE1O2JyZWFrfWlmKChoJjh8MCk9PTApe289ai0oY1tkKzIwPj4yXXwwKXwwO2c9bztvPSgob3wwKTwwKTw8MzE+PjMxO2JyZWFrfWVsc2V7bz0oY1tkKzEyPj4yXXwwKS0oY1tkKzg+PjJdfDApfDA7Zz1vO289KChvfDApPDApPDwzMT4+MzE7YnJlYWt9fWVsc2V7aWYoKGd8MCk9PTIpe249MTE7YnJlYWt9ZWxzZSBpZigoZ3wwKT09MCl7Zz0wO289MDticmVha31lbHNlIGlmKChnfDApIT0xKXtuPTE1O2JyZWFrfW89YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufX13aGlsZSgwKTtpZigobnwwKT09MTUpe289YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufWlmKChufDApPT0xMSl7bj1kKzMyfDA7aWYoKGFbbj4+MF0mMSk9PTApe249bisxfDB9ZWxzZXtuPWNbZCs0MD4+Ml18MH1vPW0tbnwwO2c9bztvPSgob3wwKTwwKTw8MzE+PjMxfWY9SW4oZ3wwLG98MCxlfDAsZnwwKXwwO2U9STtpZigoZXwwKT49MCl7bj1kKzMyfDA7aWYoKGFbbj4+MF0mMSk9PTApe249bisxfDB9ZWxzZXtuPWNbZCs0MD4+Ml18MH1vPW0tbnwwO2c9KChvfDApPDApPDwzMT4+MzE7aWYoISgoZ3wwKTwoZXwwKXwoZ3wwKT09KGV8MCkmbz4+PjA8Zj4+PjApKXtuPWgmODtpZighKChmfDApPT0wJihlfDApPT0wKSl7aWYoKG58MCkhPTA/KGNbZCsxMj4+Ml18MCk9PTA6MCl7bz1iO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtvPWIrOHwwO2Nbbz4+Ml09LTE7Y1tvKzQ+PjJdPS0xO2k9bDtyZXR1cm59aWYoKGgmMTZ8MCkhPTAmKGp8MCk9PTApe289YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufX1pZigobnwwKSE9MCl7Y1tkKzEyPj4yXT0oY1tkKzg+PjJdfDApK2Y7Y1tkKzE2Pj4yXT1tfWlmKChoJjE2fDApIT0wKXtjW2s+PjJdPShjW2QrMjA+PjJdfDApK2Z9bz1iO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtvPWIrOHwwO2Nbbz4+Ml09ZjtjW28rND4+Ml09ZTtpPWw7cmV0dXJufX1vPWI7Y1tvPj4yXT0wO2Nbbys0Pj4yXT0wO289Yis4fDA7Y1tvPj4yXT0tMTtjW28rND4+Ml09LTE7aT1sO3JldHVybn1mdW5jdGlvbiBmZShhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wO2Y9aTtkPWQrOHwwO3djW2NbKGNbYj4+Ml18MCkrMTY+PjJdJjYzXShhLGIsY1tkPj4yXXwwLGNbZCs0Pj4yXXwwLDAsZSk7aT1mO3JldHVybn1mdW5jdGlvbiBnZShhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wO2I9aTtmPWErNDR8MDtnPWNbZj4+Ml18MDtlPWNbYSsyND4+Ml18MDtpZihnPj4+MDxlPj4+MCl7Y1tmPj4yXT1lfWVsc2V7ZT1nfWlmKChjW2ErNDg+PjJdJjh8MCk9PTApe2c9LTE7aT1iO3JldHVybiBnfDB9Zj1hKzE2fDA7Zz1jW2Y+PjJdfDA7YT1jW2ErMTI+PjJdfDA7aWYoZz4+PjA8ZT4+PjApe2NbZj4+Ml09ZX1lbHNle2U9Z31pZighKGE+Pj4wPGU+Pj4wKSl7Zz0tMTtpPWI7cmV0dXJuIGd8MH1nPWRbYT4+MF18MDtpPWI7cmV0dXJuIGd8MH1mdW5jdGlvbiBoZShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZT1pO2c9Yis0NHwwO2Y9Y1tnPj4yXXwwO2o9Y1tiKzI0Pj4yXXwwO2lmKGY+Pj4wPGo+Pj4wKXtjW2c+PjJdPWp9ZWxzZXtqPWZ9Zj1iKzh8MDtnPWNbZj4+Ml18MDtoPWIrMTJ8MDtsPWNbaD4+Ml18MDtpZighKGc+Pj4wPGw+Pj4wKSl7bD0tMTtpPWU7cmV0dXJuIGx8MH1pZigoZHwwKT09LTEpe2NbZj4+Ml09ZztjW2g+PjJdPWwrIC0xO2NbYisxNj4+Ml09ajtsPTA7aT1lO3JldHVybiBsfDB9aWYoKGNbYis0OD4+Ml0mMTZ8MCk9PTApe2s9ZCYyNTU7bD1sKyAtMXwwO2lmKCEoazw8MjQ+PjI0PT0oYVtsPj4wXXwwKSkpe2w9LTE7aT1lO3JldHVybiBsfDB9fWVsc2V7az1kJjI1NTtsPWwrIC0xfDB9Y1tmPj4yXT1nO2NbaD4+Ml09bDtjW2IrMTY+PjJdPWo7YVtsPj4wXT1rO2w9ZDtpPWU7cmV0dXJuIGx8MH1mdW5jdGlvbiBpZShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7aj1pO2lmKChkfDApPT0tMSl7dT0wO2k9ajtyZXR1cm4gdXwwfWc9YisxMnwwO2U9Yis4fDA7Zj0oY1tnPj4yXXwwKS0oY1tlPj4yXXwwKXwwO2g9YisyNHwwO249Y1toPj4yXXwwO2s9YisyOHwwO209Y1trPj4yXXwwO2lmKChufDApPT0obXwwKSl7bD1iKzQ4fDA7aWYoKGNbbD4+Ml0mMTZ8MCk9PTApe3U9LTE7aT1qO3JldHVybiB1fDB9bT1iKzIwfDA7cD1jW20+PjJdfDA7bj1uLXB8MDtvPWIrNDR8MDtwPShjW28+PjJdfDApLXB8MDtxPWIrMzJ8MDtyPWFbcT4+MF18MDtzPShyJjEpIT0wO2lmKHMpe3Q9KGNbcT4+Ml0mLTIpKyAtMXwwO3I9Y1tiKzM2Pj4yXXwwfWVsc2V7dD0xMDtyPShyJjI1NSk+Pj4xfWlmKChyfDApPT0odHwwKSl7bGcocSx0LDEsdCx0LDApO2lmKChhW3E+PjBdJjEpPT0wKXtzPTEyfWVsc2V7cz0xM319ZWxzZXtpZihzKXtzPTEzfWVsc2V7cz0xMn19aWYoKHN8MCk9PTEyKXthW3E+PjBdPShyPDwxKSsyO3U9cSsxfDA7dD1yKzF8MH1lbHNlIGlmKChzfDApPT0xMyl7dT1jW2IrNDA+PjJdfDA7dD1yKzF8MDtjW2IrMzY+PjJdPXR9YVt1K3I+PjBdPTA7YVt1K3Q+PjBdPTA7dD1hW3E+PjBdfDA7aWYoKHQmMSk9PTApe3I9MTB9ZWxzZXtyPWNbcT4+Ml18MDt0PXImMjU1O3I9KHImLTIpKyAtMXwwfXM9KHQmMSk9PTA7aWYocyl7dD0odCYyNTUpPj4+MX1lbHNle3Q9Y1tiKzM2Pj4yXXwwfWRve2lmKCEodD4+PjA8cj4+PjApKXtpZihzKXthW3ErcisxPj4wXT0wO2FbcT4+MF09cjw8MTticmVha31lbHNle2FbKGNbYis0MD4+Ml18MCkrcj4+MF09MDtjW2IrMzY+PjJdPXI7YnJlYWt9fWVsc2V7aGcocSxyLXR8MCl9fXdoaWxlKDApO3I9YVtxPj4wXXwwO2lmKChyJjEpPT0wKXtxPXErMXwwO3I9KHImMjU1KT4+PjF9ZWxzZXtxPWNbYis0MD4+Ml18MDtyPWNbYiszNj4+Ml18MH10PXErcnwwO2NbbT4+Ml09cTtjW2s+PjJdPXQ7bj1xK258MDtjW2g+PjJdPW47dT1xK3B8MDtjW28+PjJdPXU7az10O289dX1lbHNle2w9Yis0OHwwO2s9bTtvPWNbYis0ND4+Ml18MH1tPW4rMXwwO289bT4+PjA8bz4+PjA/bzptO2NbYis0ND4+Ml09bztpZigoY1tsPj4yXSY4fDApIT0wKXtsPWIrMzJ8MDtpZigoYVtsPj4wXSYxKT09MCl7bD1sKzF8MH1lbHNle2w9Y1tiKzQwPj4yXXwwfWNbZT4+Ml09bDtjW2c+PjJdPWwrZjtjW2IrMTY+PjJdPW99aWYoKG58MCk9PShrfDApKXt1PXhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGQmMjU1KXwwO2k9ajtyZXR1cm4gdXwwfWVsc2V7Y1toPj4yXT1tO2Fbbj4+MF09ZDt1PWQmMjU1O2k9ajtyZXR1cm4gdXwwfXJldHVybiAwfWZ1bmN0aW9uIGplKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBrZShhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBsZShhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBtZShhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTUwNDgpe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gbmUoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gb2UoYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxsPTAsbT0wLG49MCxvPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsSj0wLjAsSz0wLjAsTD0wLjAsTT0wLjAsTj0wLjAsTz0wLjA7ZT1pO2k9aSsyNTZ8MDtmPWUrODB8MDtvPWU7bj1lKzEwNHwwO209ZSsyMjR8MDtqPWUrMjA4fDA7Zz1lKzEyOHwwO3g9ZSsyNDB8MDt2PWUrMTEyfDA7cz1lKzU2fDA7ej1jW2I+PjJdfDA7eT16KzEzfDA7aWYoKGFbeT4+MF18MCk9PTApe0g9eis0fDA7RT16Kzh8MDtHPWNbRT4+Ml18MDtGPShjW0g+PjJdfDApLUd8MDtGPShGfDApPDQ/Rjo0O01uKHh8MCwoY1t6Pj4yXXwwKStHfDAsRnwwKXwwO0c9KGNbRT4+Ml18MCkrRnwwO2NbRT4+Ml09RztjW3orMTY+PjJdPUY7aWYoKEd8MCk+PShjW0g+PjJdfDApKXthW3k+PjBdPTF9fWVsc2V7YVt6KzEyPj4wXT0xfWFbdj4+MF09ODtCPXYrMXwwO2FbQj4+MF09YVt4Pj4wXXwwO2FbdisyPj4wXT1hW3grMT4+MF18MDthW3YrMz4+MF09YVt4KzI+PjBdfDA7eT12KzR8MDthW3k+PjBdPWFbeCszPj4wXXwwO2FbdisoeCsoNC14KSkrMT4+MF09MDt6PWFbdj4+MF18MDt4PSh6JjEpPT0wO2lmKHgpe3k9KHomMjU1KT4+PjF9ZWxzZXtCPWNbdis4Pj4yXXwwO3k9Y1t5Pj4yXXwwfXo9eT4+PjA+NDtBPXo/NDp5O2E6ZG97aWYoKEF8MCkhPTApe0M9NTIzMjt3aGlsZSgxKXtEPWFbQj4+MF18MDtFPWFbQz4+MF18MDtpZighKEQ8PDI0Pj4yND09RTw8MjQ+PjI0KSl7YnJlYWt9QT1BKyAtMXwwO2lmKChBfDApPT0wKXtsPTEyO2JyZWFrIGF9ZWxzZXtCPUIrMXwwO0M9QysxfDB9fWlmKCEoRDw8MjQ+PjI0PT1FPDwyND4+MjQpKXt5PShEJjI1NSktKEUmMjU1KXwwfWVsc2V7bD0xMn19ZWxzZXtsPTEyfX13aGlsZSgwKTtpZigobHwwKT09MTIpe3k9eT4+PjA8ND8tMTp6JjF9eT0oeXwwKT09MDtpZigheD8odz1jW3YrOD4+Ml18MCwod3wwKSE9MCk6MCl7dm4odyl9aWYoIXkpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11bigzNil8MDtpZigoYnwwKSE9MCl7bD0yMzticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjMpe2NbYis0Pj4yXT0yMztjW2I+PjJdPTIzO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj03MDU2fDA7ZT1mKzI0fDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTcwODg7d2IoZ3wwLDUyNzIsODYpfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfXY9U2MoODM1Miw1Mjg4KXwwO3c9Y1t2KygoY1soY1t2Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7eD13KzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9ej0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7eT1jW3crOD4+Ml18MDtpZigoY1t3KzEyPj4yXXwwKS15Pj4yPj4+MD56Pj4+MD8odT1jW3krKHo8PDIpPj4yXXwwLCh1fDApIT0wKTowKXt1PXhjW2NbKGNbdT4+Ml18MCkrMjg+PjJdJjYzXSh1LDEwKXwwO0g9Y1t4Pj4yXXwwO2NbeD4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbdz4+Ml18MCkrOD4+Ml0mMjU1XSh3KX1saCh2LHUpO1lnKHYpO3U9Y1tiPj4yXXwwO2lmKChjW3UrND4+Ml18MCk+MCl7Y1t1Kzg+PjJdPTB9ZWxzZXthW3UrMTI+PjBdPTF9dj1jW2I+PjJdfDA7dT1iKzIwfDA7dz12KzEzfDA7aWYoKGFbdz4+MF18MCk9PTApe0g9dis0fDA7RT12Kzh8MDtHPWNbRT4+Ml18MDtGPShjW0g+PjJdfDApLUd8MDtGPShGfDApPDIyNz9GOjIyNztNbih1fDAsKGNbdj4+Ml18MCkrR3wwLEZ8MCl8MDtHPShjW0U+PjJdfDApK0Z8MDtjW0U+PjJdPUc7Y1t2KzE2Pj4yXT1GO2lmKChHfDApPj0oY1tIPj4yXXwwKSl7YVt3Pj4wXT0xfX1lbHNle2FbdisxMj4+MF09MX1DPWIrMTk5fDA7YVtrPj4wXT1hW0M+PjBdO2FbaysxPj4wXT1hW0MrMT4+MF07YVtrKzI+PjBdPWFbQysyPj4wXTthW2srMz4+MF09YVtDKzM+PjBdO2Fbays0Pj4wXT1hW0MrND4+MF07YVtrKzU+PjBdPWFbQys1Pj4wXTthW2srNj4+MF09YVtDKzY+PjBdO2Fbays3Pj4wXT1hW0MrNz4+MF07Tj0raFtrPj4zXTtFPWIrMjA3fDA7YVtrPj4wXT1hW0U+PjBdO2FbaysxPj4wXT1hW0UrMT4+MF07YVtrKzI+PjBdPWFbRSsyPj4wXTthW2srMz4+MF09YVtFKzM+PjBdO2Fbays0Pj4wXT1hW0UrND4+MF07YVtrKzU+PjBdPWFbRSs1Pj4wXTthW2srNj4+MF09YVtFKzY+PjBdO2Fbays3Pj4wXT1hW0UrNz4+MF07Tz0raFtrPj4zXTtHPWIrMjE1fDA7YVtrPj4wXT1hW0c+PjBdO2FbaysxPj4wXT1hW0crMT4+MF07YVtrKzI+PjBdPWFbRysyPj4wXTthW2srMz4+MF09YVtHKzM+PjBdO2Fbays0Pj4wXT1hW0crND4+MF07YVtrKzU+PjBdPWFbRys1Pj4wXTthW2srNj4+MF09YVtHKzY+PjBdO2Fbays3Pj4wXT1hW0crNz4+MF07TD0raFtrPj4zXTtEPWIrMjIzfDA7YVtrPj4wXT1hW0Q+PjBdO2FbaysxPj4wXT1hW0QrMT4+MF07YVtrKzI+PjBdPWFbRCsyPj4wXTthW2srMz4+MF09YVtEKzM+PjBdO2Fbays0Pj4wXT1hW0QrND4+MF07YVtrKzU+PjBdPWFbRCs1Pj4wXTthW2srNj4+MF09YVtEKzY+PjBdO2Fbays3Pj4wXT1hW0QrNz4+MF07TT0raFtrPj4zXTtGPWIrMjMxfDA7YVtrPj4wXT1hW0Y+PjBdO2FbaysxPj4wXT1hW0YrMT4+MF07YVtrKzI+PjBdPWFbRisyPj4wXTthW2srMz4+MF09YVtGKzM+PjBdO2Fbays0Pj4wXT1hW0YrND4+MF07YVtrKzU+PjBdPWFbRis1Pj4wXTthW2srNj4+MF09YVtGKzY+PjBdO2Fbays3Pj4wXT1hW0YrNz4+MF07Sj0raFtrPj4zXTtIPWIrMjM5fDA7YVtrPj4wXT1hW0g+PjBdO2FbaysxPj4wXT1hW0grMT4+MF07YVtrKzI+PjBdPWFbSCsyPj4wXTthW2srMz4+MF09YVtIKzM+PjBdO2Fbays0Pj4wXT1hW0grND4+MF07YVtrKzU+PjBdPWFbSCs1Pj4wXTthW2srNj4+MF09YVtIKzY+PjBdO2Fbays3Pj4wXT1hW0grNz4+MF07Sz0raFtrPj4zXTtoW2s+PjNdPU87YVtDPj4wXT1hW2s+PjBdO2FbQysxPj4wXT1hW2srMT4+MF07YVtDKzI+PjBdPWFbaysyPj4wXTthW0MrMz4+MF09YVtrKzM+PjBdO2FbQys0Pj4wXT1hW2srND4+MF07YVtDKzU+PjBdPWFbays1Pj4wXTthW0MrNj4+MF09YVtrKzY+PjBdO2FbQys3Pj4wXT1hW2srNz4+MF07aFtrPj4zXT1OO2FbRD4+MF09YVtrPj4wXTthW0QrMT4+MF09YVtrKzE+PjBdO2FbRCsyPj4wXT1hW2srMj4+MF07YVtEKzM+PjBdPWFbayszPj4wXTthW0QrND4+MF09YVtrKzQ+PjBdO2FbRCs1Pj4wXT1hW2srNT4+MF07YVtEKzY+PjBdPWFbays2Pj4wXTthW0QrNz4+MF09YVtrKzc+PjBdO2hbaz4+M109TTthW0U+PjBdPWFbaz4+MF07YVtFKzE+PjBdPWFbaysxPj4wXTthW0UrMj4+MF09YVtrKzI+PjBdO2FbRSszPj4wXT1hW2srMz4+MF07YVtFKzQ+PjBdPWFbays0Pj4wXTthW0UrNT4+MF09YVtrKzU+PjBdO2FbRSs2Pj4wXT1hW2srNj4+MF07YVtFKzc+PjBdPWFbays3Pj4wXTtoW2s+PjNdPUw7YVtGPj4wXT1hW2s+PjBdO2FbRisxPj4wXT1hW2srMT4+MF07YVtGKzI+PjBdPWFbaysyPj4wXTthW0YrMz4+MF09YVtrKzM+PjBdO2FbRis0Pj4wXT1hW2srND4+MF07YVtGKzU+PjBdPWFbays1Pj4wXTthW0YrNj4+MF09YVtrKzY+PjBdO2FbRis3Pj4wXT1hW2srNz4+MF07aFtrPj4zXT1LO2FbRz4+MF09YVtrPj4wXTthW0crMT4+MF09YVtrKzE+PjBdO2FbRysyPj4wXT1hW2srMj4+MF07YVtHKzM+PjBdPWFbayszPj4wXTthW0crND4+MF09YVtrKzQ+PjBdO2FbRys1Pj4wXT1hW2srNT4+MF07YVtHKzY+PjBdPWFbays2Pj4wXTthW0crNz4+MF09YVtrKzc+PjBdO2hbaz4+M109SjthW0g+PjBdPWFbaz4+MF07YVtIKzE+PjBdPWFbaysxPj4wXTthW0grMj4+MF09YVtrKzI+PjBdO2FbSCszPj4wXT1hW2srMz4+MF07YVtIKzQ+PjBdPWFbays0Pj4wXTthW0grNT4+MF09YVtrKzU+PjBdO2FbSCs2Pj4wXT1hW2srNj4+MF07YVtIKzc+PjBdPWFbays3Pj4wXTtpZigoYVs2MzY4XXwwKT09MD8oUWEoNjM2OCl8MCkhPTA6MCl7Y1sxNTg4XT0wO2NbNjM1Nj4+Ml09MDtjWzYzNjA+PjJdPTA7Y2MoMjA5LDYzNTIscHwwKXwwOyRhKDYzNjgpfWlmKChhWzY0MDBdfDApPT0wPyhRYSg2NDAwKXwwKSE9MDowKXtjYygyMTAsNjM3NixwfDApfDA7JGEoNjQwMCl9dz1jWzE1ODhdfDA7dj1jWzYzNTY+PjJdfDA7ZG97aWYoKHd8MCk9PSh2fDApKXt2PSRiKDYzNzYpfDA7aWYoKHZ8MCkhPTApe2I9WGEoMTYpfDA7ZG97aWYoKGFbMTAxMjBdfDApPT0wKXtpZigoUWEoMTAxMjApfDApPT0wKXticmVha31jWzI1MjhdPTEwMzg0OyRhKDEwMTIwKX19d2hpbGUoMCk7WWYoYix2LDEwMTEyLDEwNDcyKTt3YihifDAsMTAxODQsMTA5KX14PWNbMTU4OF18MDtkb3tpZigoeHwwKT09KGNbNjM1Nj4+Ml18MCkpe3Y9ZisxNnwwO2Nbdj4+Ml09ZjtjW2Y+PjJdPTY0MTY7dz1jWzYzNjA+PjJdfDA7ZG97aWYoeD4+PjA8dz4+PjApe2lmKCh4fDApPT0wKXt3PTB9ZWxzZXtjW3grMTY+PjJdPXg7dz1jW3Y+PjJdfDA7bWNbY1soY1t3Pj4yXXwwKSsxMj4+Ml0mMTI3XSh3LHgpO3c9Y1s2MzU2Pj4yXXwwfWNbNjM1Nj4+Ml09dysyNH1lbHNle3c9KHcteHwwKS8yNHwwO2lmKHc+Pj4wPDg5NDc4NDg1KXt3PXc8PDE7dz0od3wwKT09MD8xOnd9ZWxzZXt3PTE3ODk1Njk3MH14PXcqMjR8MDt4PSh4fDApPT0wPzE6eDt3aGlsZSgxKXt5PXVuKHgpfDA7aWYoKHl8MCkhPTApe2JyZWFrfXk9Y1s1NjY2XXwwO2NbNTY2Nl09eSswO2lmKCh5fDApPT0wKXtsPTY1O2JyZWFrfXNjW3kmMzFdKCl9aWYoKGx8MCk9PTY1KXtIPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX13PXkrKHcqMjR8MCl8MDtkb3tpZigoeXwwKSE9MCl7eD1jW3Y+PjJdfDA7aWYoKHh8MCk9PTApe2NbeSsxNj4+Ml09MDticmVha31pZigoeHwwKT09KGZ8MCkpe2NbeSsxNj4+Ml09eTttY1tjWyhjW2Y+PjJdfDApKzEyPj4yXSYxMjddKGYseSk7YnJlYWt9ZWxzZXtjW3krMTY+PjJdPXg7Y1t2Pj4yXT0wO2JyZWFrfX19d2hpbGUoMCk7eD15KzI0fDA7ej1jWzE1ODhdfDA7QT1jWzYzNTY+PjJdfDA7ZG97aWYoKEF8MCk9PSh6fDApKXtjWzE1ODhdPXk7Y1s2MzU2Pj4yXT14O2NbNjM2MD4+Ml09d31lbHNle2Rve0M9eTt5PXkrIC0yNHwwO0I9QSsgLTh8MDtBPUErIC0yNHwwO0Q9Y1tCPj4yXXwwO2Rve2lmKChEfDApIT0wKXtpZigoRHwwKT09KEF8MCkpe2NbQysgLTg+PjJdPXk7SD1jW0I+PjJdfDA7bWNbY1soY1tIPj4yXXwwKSsxMj4+Ml0mMTI3XShILHkpO2JyZWFrfWVsc2V7Y1tDKyAtOD4+Ml09RDtjW0I+PjJdPTA7YnJlYWt9fWVsc2V7Y1tDKyAtOD4+Ml09MH19d2hpbGUoMCl9d2hpbGUoKEF8MCkhPSh6fDApKTt6PWNbMTU4OF18MDtBPWNbNjM1Nj4+Ml18MDtjWzE1ODhdPXk7Y1s2MzU2Pj4yXT14O2NbNjM2MD4+Ml09dztpZigoQXwwKT09KHp8MCkpe2JyZWFrfWRve3c9Y1tBKyAtOD4+Ml18MDtBPUErIC0yNHwwO2Rve2lmKCh3fDApPT0oQXwwKSl7bGNbY1soY1t3Pj4yXXwwKSsxNj4+Ml0mMjU1XSh3KX1lbHNle2lmKCh3fDApPT0wKXticmVha31sY1tjWyhjW3c+PjJdfDApKzIwPj4yXSYyNTVdKHcpfX13aGlsZSgwKX13aGlsZSgoQXwwKSE9KHp8MCkpfX13aGlsZSgwKTtpZigoenwwKT09MCl7YnJlYWt9dm4oeil9fXdoaWxlKDApO3Y9Y1t2Pj4yXXwwO2lmKCh2fDApPT0oZnwwKSl7bGNbY1soY1tmPj4yXXwwKSsxNj4+Ml0mMjU1XShmKTticmVha31pZigodnwwKT09MCl7YnJlYWt9bGNbY1soY1t2Pj4yXXwwKSsyMD4+Ml0mMjU1XSh2KX19d2hpbGUoMCk7aWYoKENiKDYzNzYpfDApPT0wKXt0PWNbMTU4OF18MDtyPWNbNjM1Nj4+Ml18MDticmVha31XYSgxMDQ5NiwxMDUwNCw0NiwxMDU2MCl9ZWxzZXt0PXc7cj12fX13aGlsZSgwKTtiOmRve2lmKCh0fDApIT0ocnwwKSl7dj1zKzE2fDA7d2hpbGUoMSl7eD10KzE2fDA7dz1jW3g+PjJdfDA7aWYoKHd8MCk9PTApe2w9MTAxO2JyZWFrfWlmKCh3fDApPT0odHwwKSl7Y1t2Pj4yXT1zO3c9Y1t4Pj4yXXwwO21jW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjEyN10odyxzKTt3PWNbdj4+Ml18MH1lbHNle3c9b2NbY1soY1t3Pj4yXXwwKSs4Pj4yXSYxMjddKHcpfDA7Y1t2Pj4yXT13fWlmKCh3fDApPT0wKXticmVha31tY1tjWyhjW3c+PjJdfDApKzI0Pj4yXSYxMjddKHcsdSk7dz1jW3Y+PjJdfDA7ZG97aWYoKHd8MCk9PShzfDApKXtsY1tjWyhjW3M+PjJdfDApKzE2Pj4yXSYyNTVdKHMpfWVsc2V7aWYoKHd8MCk9PTApe2JyZWFrfWxjW2NbKGNbdz4+Ml18MCkrMjA+PjJdJjI1NV0odyl9fXdoaWxlKDApO3Q9dCsyNHwwO2lmKCh0fDApPT0ocnwwKSl7YnJlYWsgYn19aWYoKGx8MCk9PTEwMSl7Y1t2Pj4yXT0wfUg9WGEoNCl8MDtjW0g+PjJdPTYzMzY7d2IoSHwwLDYzMTIsNzYpfX13aGlsZSgwKTtzPVNjKDgzNTIsNTMwNCl8MDtyPWNbcysoKGNbKGNbcz4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO3Q9cis0fDA7Y1t0Pj4yXT0oY1t0Pj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW2YrND4+Ml09MjA4O2NbZis4Pj4yXT0wO2NnKDEzNDU2LGYpfXU9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3Y9Y1tyKzg+PjJdfDA7aWYoKGNbcisxMj4+Ml18MCktdj4+Mj4+PjA+dT4+PjA/KHE9Y1t2Kyh1PDwyKT4+Ml18MCwocXwwKSE9MCk6MCl7cT14Y1tjWyhjW3E+PjJdfDApKzI4Pj4yXSY2M10ocSwxMCl8MDtIPWNbdD4+Ml18MDtjW3Q+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW3I+PjJdfDApKzg+PjJdJjI1NV0ocil9bGgocyxxKTtZZyhzKTtyPWNbYj4+Ml18MDtxPWIrMTE0fDA7cT1kW3E+PjBdfGRbcSsxPj4wXTw8ODtIPWNbcis0Pj4yXXwwO0c9KChIfDApPDApPDwzMT4+MzE7aWYoMDwoR3wwKXwwPT0oR3wwKSYocSY2NTUzNSk+Pj4wPEg+Pj4wKXtjW3IrOD4+Ml09cSY2NTUzNX1lbHNle2FbcisxMj4+MF09MX1yPWIrMTIwfDA7Yzpkb3tpZigoZFtyPj4wXXxkW3IrMT4+MF08PDh8ZFtyKzI+PjBdPDwxNnxkW3IrMz4+MF08PDI0fDApIT0wKXt3PW8rMnwwO3U9bysxNnwwO3Q9bysxOHwwO3E9bysyMHwwO3g9Zis0fDA7dj1mKzh8MDtzPTA7d2hpbGUoMSl7Rz0oY1tiPj4yXXwwKSsxMnwwO0g9YVtHPj4wXXwwO2FbRz4+MF09MDtpZighKEg8PDI0Pj4yND09MCkpe2JyZWFrIGN9eT1jW2I+PjJdfDA7ej15KzEzfDA7aWYoKGFbej4+MF18MCkhPTApe2JyZWFrIGN9SD15KzR8MDtFPXkrOHwwO0c9Y1tFPj4yXXwwO0Y9KGNbSD4+Ml18MCktR3wwO0Y9KEZ8MCk8NTQ/Rjo1NDtNbihvfDAsKGNbeT4+Ml18MCkrR3wwLEZ8MCl8MDtHPShjW0U+PjJdfDApK0Z8MDtjW0U+PjJdPUc7Y1t5KzE2Pj4yXT1GO2lmKChHfDApPj0oY1tIPj4yXXwwKSl7YVt6Pj4wXT0xfXk9U2MoODM1Miw1ODcyKXwwO3o9Y1t5KygoY1soY1t5Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7QT16KzR8MDtjW0E+PjJdPShjW0E+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbeD4+Ml09MjA4O2Nbdj4+Ml09MDtjZygxMzQ1NixmKX1DPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtCPWNbeis4Pj4yXXwwO2lmKCEoKGNbeisxMj4+Ml18MCktQj4+Mj4+PjA+Qz4+PjApKXtsPTEzNjticmVha31CPWNbQisoQzw8Mik+PjJdfDA7aWYoKEJ8MCk9PTApe2w9MTM2O2JyZWFrfUI9eGNbY1soY1tCPj4yXXwwKSsyOD4+Ml0mNjNdKEIsMTApfDA7SD1jW0E+PjJdfDA7Y1tBPj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1t6Pj4yXXwwKSs4Pj4yXSYyNTVdKHopfWxoKHksQik7WWcoeSk7eT13O3o9NTg1Njt3aGlsZSgxKXtpZigoYVt5Pj4wXXwwKSE9KGFbej4+MF18MCkpe2JyZWFrfXk9eSsxfDA7aWYoKHl8MCk9PSh1fDApKXtsPTE0NDticmVha31lbHNle3o9eisxfDB9fWlmKChsfDApPT0xNDQ/KGw9MCwoZFt0Pj4wXXxkW3QrMT4+MF08PDgpPDwxNj4+MTY9PTIyMjA0KTowKXticmVha31BPWNbYj4+Ml18MDt5PUErOHwwO3o9Y1t5Pj4yXXwwO3o9SW4oenwwLCgoenwwKTwwKTw8MzE+PjMxfDAsKGRbcT4+MF18ZFtxKzE+PjBdPDw4KSY2NTUzNXwwLDApfDA7SD1JO0c9Y1tBKzQ+PjJdfDA7Rj0oKEd8MCk8MCk8PDMxPj4zMTtBPUErMTJ8MDtpZigoSHwwKT4oRnwwKXwoSHwwKT09KEZ8MCkmej4+PjA+PUc+Pj4wfChIfDApPDApe2FbQT4+MF09MX1lbHNle2FbQT4+MF09MDtjW3k+PjJdPXp9cz1zKzF8MDtpZighKHM+Pj4wPChkW3I+PjBdfGRbcisxPj4wXTw8OHxkW3IrMj4+MF08PDE2fGRbciszPj4wXTw8MjQpPj4+MCkpe2JyZWFrIGN9fWlmKChsfDApPT0xMzYpe0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfXI9U2MoODM1Miw1ODk2KXwwO3M9Y1tyKygoY1soY1tyPj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dD1zKzR8MDtjW3Q+PjJdPShjW3Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9dT0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dj1jW3MrOD4+Ml18MDtkb3tpZigoY1tzKzEyPj4yXXwwKS12Pj4yPj4+MD51Pj4+MCl7dT1jW3YrKHU8PDIpPj4yXXwwO2lmKCh1fDApPT0wKXticmVha311PXhjW2NbKGNbdT4+Ml18MCkrMjg+PjJdJjYzXSh1LDEwKXwwO0g9Y1t0Pj4yXXwwO2NbdD4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbcz4+Ml18MCkrOD4+Ml0mMjU1XShzKX1saChyLHUpO1lnKHIpO3I9ZFtxPj4wXXxkW3ErMT4+MF08PDg7cT1yJjY1NTM1O3I9cjw8MTY+PjE2PT0wPzE6cTt3aGlsZSgxKXtzPXVuKHIpfDA7aWYoKHN8MCkhPTApe2JyZWFrfXM9Y1s1NjY2XXwwO2NbNTY2Nl09cyswO2lmKChzfDApPT0wKXtsPTE1ODticmVha31zY1tzJjMxXSgpfWlmKChsfDApPT0xNTgpe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfXQ9Y1tiPj4yXXwwO3I9dCsxM3wwO2Rve2lmKChhW3I+PjBdfDApPT0wKXtIPXQrNHwwO0U9dCs4fDA7Rz1jW0U+PjJdfDA7Rj0oY1tIPj4yXXwwKS1HfDA7Rj0oRnwwKTwocXwwKT9GOnE7TW4oc3wwLChjW3Q+PjJdfDApK0d8MCxGfDApfDA7Rz0oY1tFPj4yXXwwKStGfDA7Y1tFPj4yXT1HO2NbdCsxNj4+Ml09RjtpZigoR3wwKTwoY1tIPj4yXXwwKSl7YnJlYWt9YVtyPj4wXT0xfWVsc2V7YVt0KzEyPj4wXT0xfX13aGlsZSgwKTt0PXMrMzR8MDtxPWIrMjQ3fDA7TW4ocXwwLHN8MCwzNCl8MDtpZighKChkW3E+PjBdfGRbcSsxPj4wXTw8OCk8PDE2Pj4xNj09Mikpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big2OCl8MDtpZigoYnwwKSE9MCl7bD0xNzE7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTE3MSl7Y1tiKzQ+PjJdPTU1O2NbYj4+Ml09NTU7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTYyMDB8MDtlPWYrNTZ8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NjI2NDt3YihnfDAsNjA5Niw3NCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1TYyg4MzUyLDYxMTIpfDA7cT1oaChyLGRbcT4+MF18ZFtxKzE+PjBdPDw4KXwwO3I9Y1txKygoY1soY1txPj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dT1yKzR8MDtjW3U+PjJdPShjW3U+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9dj0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dz1jW3IrOD4+Ml18MDtkb3tpZigoY1tyKzEyPj4yXXwwKS13Pj4yPj4+MD52Pj4+MCl7dj1jW3crKHY8PDIpPj4yXXwwO2lmKCh2fDApPT0wKXticmVha312PXhjW2NbKGNbdj4+Ml18MCkrMjg+PjJdJjYzXSh2LDEwKXwwO0g9Y1t1Pj4yXXwwO2NbdT4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbcj4+Ml18MCkrOD4+Ml0mMjU1XShyKX1saChxLHYpO1lnKHEpO3Y9U2MoODM1Miw2MTI4KXwwO3E9YisyNzl8MDt2PWhoKHYsZFtxPj4wXXxkW3ErMT4+MF08PDgpfDA7cj1jW3YrKChjWyhjW3Y+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDt1PXIrNHwwO2NbdT4+Ml09KGNbdT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX13PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt4PWNbcis4Pj4yXXwwO2Rve2lmKChjW3IrMTI+PjJdfDApLXg+PjI+Pj4wPnc+Pj4wKXt3PWNbeCsodzw8Mik+PjJdfDA7aWYoKHd8MCk9PTApe2JyZWFrfXc9eGNbY1soY1t3Pj4yXXwwKSsyOD4+Ml0mNjNdKHcsMTApfDA7SD1jW3U+PjJdfDA7Y1t1Pj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfWxoKHYsdyk7WWcodik7cj0oKGRbcT4+MF18ZFtxKzE+PjBdPDw4KSY2NTUzNSkqNnwwO3I9KHJ8MCk9PTA/MTpyO3doaWxlKDEpe3U9dW4ocil8MDtpZigodXwwKSE9MCl7YnJlYWt9dT1jWzU2NjZdfDA7Y1s1NjY2XT11KzA7aWYoKHV8MCk9PTApe2w9MTk0O2JyZWFrfXNjW3UmMzFdKCl9aWYoKGx8MCk9PTE5NCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1iKzI4MXwwO2Fbcj4+MF09dTthW3IrMT4+MF09dT4+ODthW3IrMj4+MF09dT4+MTY7YVtyKzM+PjBdPXU+PjI0O3U9U2MoODM1Miw2MTQ0KXwwO3Y9Y1t1KygoY1soY1t1Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dz12KzR8MDtjW3c+PjJdPShjW3c+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9eD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7eT1jW3YrOD4+Ml18MDtkb3tpZigoY1t2KzEyPj4yXXwwKS15Pj4yPj4+MD54Pj4+MCl7eD1jW3krKHg8PDIpPj4yXXwwO2lmKCh4fDApPT0wKXticmVha314PXhjW2NbKGNbeD4+Ml18MCkrMjg+PjJdJjYzXSh4LDEwKXwwO0g9Y1t3Pj4yXXwwO2Nbdz4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbdj4+Ml18MCkrOD4+Ml0mMjU1XSh2KX1saCh1LHgpO1lnKHUpO2Q6ZG97aWYoISgoZFtxPj4wXXxkW3ErMT4+MF08PDgpPDwxNj4+MTY9PTApKXt2PWYrNHwwO3U9Zis4fDA7dz0wO3doaWxlKDEpe01uKChkW3I+PjBdfGRbcisxPj4wXTw8OHxkW3IrMj4+MF08PDE2fGRbciszPj4wXTw8MjQpKyh3KjZ8MCl8MCx0fDAsNil8MDt6PWloKFNjKDgzNTIsNjE3Nil8MCx3KXwwO3k9Y1t6KygoY1soY1t6Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7eD15KzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2Nbdj4+Ml09MjA4O2NbdT4+Ml09MDtjZygxMzQ1NixmKX1BPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtCPWNbeSs4Pj4yXXwwO2lmKCEoKGNbeSsxMj4+Ml18MCktQj4+Mj4+PjA+QT4+PjApKXticmVha31BPWNbQisoQTw8Mik+PjJdfDA7aWYoKEF8MCk9PTApe2JyZWFrfUE9eGNbY1soY1tBPj4yXXwwKSsyOD4+Ml0mNjNdKEEsMTApfDA7SD1jW3g+PjJdfDA7Y1t4Pj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1t5Pj4yXXwwKSs4Pj4yXSYyNTVdKHkpfWxoKHosQSk7WWcoeik7dz13KzF8MDtpZigod3wwKT49KChkW3E+PjBdfGRbcSsxPj4wXTw8OCkmNjU1MzV8MCkpe2JyZWFrIGR9ZWxzZXt0PXQrNnwwfX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dm4ocyk7ZTpkb3tpZighKChkW3E+PjBdfGRbcSsxPj4wXTw8OCk8PDE2Pj4xNj09MCkpe3c9YiszMDR8MDt2PWIrMzA4fDA7eD1iKzMwMHwwO3U9Zis0fDA7dD1mKzh8MDtzPTA7Zjp3aGlsZSgxKXt5PVNjKDgzNTIsNTk2OCl8MDtBPWNbeSsoKGNbKGNbeT4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO3o9QSs0fDA7Y1t6Pj4yXT0oY1t6Pj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW3U+PjJdPTIwODtjW3Q+PjJdPTA7Y2coMTM0NTYsZil9Qj0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7Qz1jW0ErOD4+Ml18MDtpZighKChjW0ErMTI+PjJdfDApLUM+PjI+Pj4wPkI+Pj4wKSl7bD0yMzQ7YnJlYWt9Qj1jW0MrKEI8PDIpPj4yXXwwO2lmKChCfDApPT0wKXtsPTIzNDticmVha31CPXhjW2NbKGNbQj4+Ml18MCkrMjg+PjJdJjYzXShCLDEwKXwwO0g9Y1t6Pj4yXXwwO2Nbej4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbQT4+Ml18MCkrOD4+Ml0mMjU1XShBKX1saCh5LEIpO1lnKHkpO0E9ZFtyPj4wXXxkW3IrMT4+MF08PDh8ZFtyKzI+PjBdPDwxNnxkW3IrMz4+MF08PDI0O3k9QSsocyo2fDApfDA7eT0oZFt5Pj4wXXxkW3krMT4+MF08PDgpJjY1NTM1O3o9QSsocyo2fDApKzJ8MDt6PShkW3o+PjBdfGRbeisxPj4wXTw8OCkmNjU1MzU7QT1BKyhzKjZ8MCkrNHwwO0E9KGRbQT4+MF18ZFtBKzE+PjBdPDw4KSY2NTUzNTtDPWNbdz4+Ml18MDtkb3tpZigoQ3wwKT09KGNbdj4+Ml18MCkpe0I9Y1t4Pj4yXXwwO0U9Qy1CfDA7Qz0oRXwwKS8xMnwwO0Q9QysxfDA7aWYoRD4+PjA+MzU3OTEzOTQxKXtsPTI0NDticmVhayBmfWlmKEM+Pj4wPDE3ODk1Njk3MCl7Rj1DPDwxO0Y9Rj4+PjA8RD4+PjA/RDpGO2lmKChGfDApPT0wKXtGPTA7Rz0wfWVsc2V7bD0yNDd9fWVsc2V7Rj0zNTc5MTM5NDE7bD0yNDd9aWYoKGx8MCk9PTI0Nyl7bD0wO0g9RioxMnwwO0g9KEh8MCk9PTA/MTpIO3doaWxlKDEpe0c9dW4oSCl8MDtpZigoR3wwKSE9MCl7YnJlYWt9Rz1jWzU2NjZdfDA7Y1s1NjY2XT1HKzA7aWYoKEd8MCk9PTApe2w9MjUxO2JyZWFrIGZ9c2NbRyYzMV0oKX19SD1HKyhDKjEyfDApfDA7aWYoKEh8MCkhPTApe2NbSD4+Ml09eTtjW0crKEMqMTJ8MCkrND4+Ml09ejtjW0crKEMqMTJ8MCkrOD4+Ml09QX1IPUcrKCgoKEV8MCkvLTEyfDApK0N8MCkqMTJ8MCl8MDtMbihIfDAsQnwwLEV8MCl8MDtjW3g+PjJdPUg7Y1t3Pj4yXT1HKyhEKjEyfDApO2Nbdj4+Ml09RysoRioxMnwwKTtpZigoQnwwKT09MCl7YnJlYWt9dm4oQil9ZWxzZXtpZigoQ3wwKT09MCl7eT0wfWVsc2V7Y1tDPj4yXT15O2NbQys0Pj4yXT16O2NbQys4Pj4yXT1BO3k9Y1t3Pj4yXXwwfWNbdz4+Ml09eSsxMn19d2hpbGUoMCk7cz1zKzF8MDtpZigoc3wwKT49KChkW3E+PjBdfGRbcSsxPj4wXTw8OCkmNjU1MzV8MCkpe2JyZWFrIGV9fWlmKChsfDApPT0yMzQpe0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfWVsc2UgaWYoKGx8MCk9PTI0NCl7VGsoKX1lbHNlIGlmKChsfDApPT0yNTEpe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfX19d2hpbGUoMCk7cz1TYyg4MzUyLDUzMjApfDA7cj1jW3MrKChjWyhjW3M+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtxPXIrNHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX11PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt0PWNbcis4Pj4yXXwwO2Rve2lmKChjW3IrMTI+PjJdfDApLXQ+PjI+Pj4wPnU+Pj4wKXt0PWNbdCsodTw8Mik+PjJdfDA7aWYoKHR8MCk9PTApe2JyZWFrfXQ9eGNbY1soY1t0Pj4yXXwwKSsyOD4+Ml0mNjNdKHQsMTApfDA7SD1jW3E+PjJdfDA7Y1txPj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfWxoKHMsdCk7WWcocyk7cj1jW2I+PjJdfDA7cT1iKzExNnwwO3M9ZFtxPj4wXXxkW3ErMT4+MF08PDh8ZFtxKzI+PjBdPDwxNnxkW3ErMz4+MF08PDI0O0g9Y1tyKzQ+PjJdfDA7Rz0oKEh8MCk8MCk8PDMxPj4zMTtpZigwPChHfDApfDA9PShHfDApJnM+Pj4wPEg+Pj4wKXtjW3IrOD4+Ml09c31lbHNle2FbcisxMj4+MF09MX1zPW87Y1tzPj4yXT0wO2Nbcys0Pj4yXT0wO3M9Y1tiPj4yXXwwO3I9cysxM3wwO2Rve2lmKChhW3I+PjBdfDApPT0wKXtIPWNbcys0Pj4yXXwwO0U9cys4fDA7Rz1jW0U+PjJdfDA7Rj1ILUd8MDtGPShGfDApPDg/Rjo4O0xuKG98MCwoY1tzPj4yXXwwKStHfDAsRnwwKXwwO0c9RytGfDA7Y1tFPj4yXT1HO2NbcysxNj4+Ml09RjtpZigoR3wwKTwoSHwwKSl7YnJlYWt9YVtyPj4wXT0xfWVsc2V7YVtzKzEyPj4wXT0xfX13aGlsZSgwKTtHPShjW2I+PjJdfDApKzEyfDA7SD1hW0c+PjBdfDA7YVtHPj4wXT0wO2lmKCEoSDw8MjQ+PjI0PT0wKSl7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDU2KXwwO2lmKChifDApIT0wKXtsPTI4MjticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjgyKXtjW2IrND4+Ml09NDM7Y1tiPj4yXT00MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTc4NHwwO2U9Zis0NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT01ODQwO3diKGd8MCw1Mzg0LDcwKX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1zPWNbbz4+Ml18MDtvPWNbbys0Pj4yXXwwO2lmKChzfDApPT0tMSYob3wwKT09LTEpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big2Nyl8MDtpZigoYnwwKSE9MCl7bD0yOTA7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTI5MCl7Y1tiKzQ+PjJdPTU0O2NbYj4+Ml09NTQ7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTU0MDB8MDtlPWYrNTV8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NTc2ODt3YihnfDAsNTQ4OCw2OCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1jW2I+PjJdfDA7SD1jW3IrND4+Ml18MDtHPSgoSHwwKTwwKTw8MzE+PjMxO2lmKChvfDApPChHfDApfChvfDApPT0oR3wwKSZzPj4+MDxIPj4+MCl7Y1tyKzg+PjJdPXN9ZWxzZXthW3IrMTI+PjBdPTF9Rz0oY1tiPj4yXXwwKSsxMnwwO0g9YVtHPj4wXXwwO2FbRz4+MF09MDtpZighKEg8PDI0Pj4yND09MCkpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big1Nil8MDtpZigoYnwwKSE9MCl7bD0zMDE7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTMwMSl7Y1tiKzQ+PjJdPTQzO2NbYj4+Ml09NDM7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTU3ODR8MDtlPWYrNDR8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NTg0MDt3YihnfDAsNTM4NCw3MCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9bz1jW2I+PjJdfDA7cj1vKzEzfDA7ZG97aWYoKGFbcj4+MF18MCk9PTApe0g9Y1tvKzQ+PjJdfDA7RT1vKzh8MDtHPWNbRT4+Ml18MDtGPUgtR3wwO0Y9KEZ8MCk8OD9GOjg7TG4obnwwLChjW28+PjJdfDApK0d8MCxGfDApfDA7Rz1HK0Z8MDtjW0U+PjJdPUc7Y1tvKzE2Pj4yXT1GO2lmKChHfDApPChIfDApKXticmVha31hW3I+PjBdPTF9ZWxzZXthW28rMTI+PjBdPTF9fXdoaWxlKDApO0c9KGNbYj4+Ml18MCkrMTJ8MDtIPWFbRz4+MF18MDthW0c+PjBdPTA7aWYoIShIPDwyND4+MjQ9PTApKXtnPVhhKDgpfDA7Y1tnPj4yXT05OTI4O3doaWxlKDEpe2I9dW4oNTYpfDA7aWYoKGJ8MCkhPTApe2w9MzEzO2JyZWFrfWI9Y1s1NjY2XXwwO2NbNTY2Nl09YiswO2lmKChifDApPT0wKXticmVha31zY1tiJjMxXSgpfWlmKChsfDApPT0zMTMpe2NbYis0Pj4yXT00MztjW2I+PjJdPTQzO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj01Nzg0fDA7ZT1mKzQ0fDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTU4NDA7d2IoZ3wwLDUzODQsNzApfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfWlmKChjW24+PjJdfDApIT0wKXtnPVhhKDgpfDA7Y1tnPj4yXT05OTI4O3doaWxlKDEpe2I9dW4oNTQpfDA7aWYoKGJ8MCkhPTApe2w9MzIxO2JyZWFrfWI9Y1s1NjY2XXwwO2NbNTY2Nl09YiswO2lmKChifDApPT0wKXticmVha31zY1tiJjMxXSgpfWlmKChsfDApPT0zMjEpe2NbYis0Pj4yXT00MTtjW2I+PjJdPTQxO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj01Njg4fDA7ZT1mKzQyfDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTU3NDQ7d2IoZ3wwLDU1NDQsNjYpfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfW89YisyODh8MDtzPWNbbz4+Ml18MDtyPWIrMjkyfDA7dD1jW3I+PjJdfDA7aWYoKHR8MCk9PShzfDApKXt3PXN9ZWxzZXt3PXQrKH4oKHQrIC04KygwLXMpfDApPj4+Myk8PDMpfDA7Y1tyPj4yXT13fUg9YisyNTl8MDtpZigoZFtIPj4wXXxkW0grMT4+MF08PDh8ZFtIKzI+PjBdPDwxNnxkW0grMz4+MF08PDI0fDApPT0tMSl7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDk2KXwwO2lmKChifDApIT0wKXtsPTMzMTticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MzMxKXtjW2IrND4+Ml09ODM7Y1tiPj4yXT04MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTU2MHwwO2U9Zis4NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT01NzY4O3diKGd8MCw1NDg4LDY4KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX12PW4rNHwwO249Y1t2Pj4yXXwwO3U9bisxfDA7ej1zO3Q9dy16Pj4zO2Rve2lmKHQ+Pj4wPHU+Pj4wKXt1PXUtdHwwO3Q9YisyOTZ8MDtBPWNbdD4+Ml18MDt4PXc7aWYoIShBLXg+PjM+Pj4wPHU+Pj4wKSl7dD11O2w9dzt3aGlsZSgxKXtpZigobHwwKSE9MCl7SD1sO2NbSD4+Ml09MDtjW0grND4+Ml09MH10PXQrIC0xfDA7aWYoKHR8MCk9PTApe2JyZWFrfWVsc2V7bD1sKzh8MH19Y1tyPj4yXT13Kyh1PDwzKTticmVha314PXgtenwwO3k9eD4+Mzt3PXkrdXwwO2lmKHc+Pj4wPjUzNjg3MDkxMSl7VGsoKX16PUEtenwwO2lmKHo+PjM+Pj4wPDI2ODQzNTQ1NSl7ej16Pj4yO3o9ej4+PjA8dz4+PjA/dzp6O2lmKCh6fDApPT0wKXt6PTA7Qj0wfWVsc2V7bD0zNDJ9fWVsc2V7ej01MzY4NzA5MTE7bD0zNDJ9ZG97aWYoKGx8MCk9PTM0Mil7QT16PDwzO0E9KEF8MCk9PTA/MTpBO3doaWxlKDEpe0I9dW4oQSl8MDtpZigoQnwwKSE9MCl7bD0zNDg7YnJlYWt9Qj1jWzU2NjZdfDA7Y1s1NjY2XT1CKzA7aWYoKEJ8MCk9PTApe2JyZWFrfXNjW0ImMzFdKCl9aWYoKGx8MCk9PTM0OCl7YnJlYWt9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2w9QisoeTw8Myl8MDt3aGlsZSgxKXtpZigobHwwKSE9MCl7SD1sO2NbSD4+Ml09MDtjW0grND4+Ml09MH11PXUrIC0xfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7bD1sKzh8MH19TG4oQnwwLHN8MCx4fDApfDA7Y1tvPj4yXT1CO2Nbcj4+Ml09Qisodzw8Myk7Y1t0Pj4yXT1CKyh6PDwzKTtpZigoc3wwKT09MCl7cz1CO2JyZWFrfXZuKHMpO3M9Y1tvPj4yXXwwfWVsc2V7aWYoISh0Pj4+MD51Pj4+MCkpe2JyZWFrfWw9cysodTw8Myl8MDtpZigod3wwKT09KGx8MCkpe2JyZWFrfWNbcj4+Ml09dysofigodysgLTgrKDAtbCl8MCk+Pj4zKTw8Myl9fXdoaWxlKDApO2w9ZFtxPj4wXXxkW3ErMT4+MF08PDh8ZFtxKzI+PjBdPDwxNnxkW3ErMz4+MF08PDI0O0g9cztjW0g+PjJdPWwrODtjW0grND4+Ml09MDtnOmRve2lmKG4+Pj4wPjEpe2NbbT4+Ml09Y1tiPj4yXTtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtsPW0rMTJ8MDtzPXVuKDEwNDg2NDQpfDA7eT1zKzY4Ji02NDtjW3krIC00Pj4yXT1zO2NbbD4+Ml09eTtjW2o+PjJdPW07eT1qKzR8MDtjW3k+PjJdPTA7Y1tqKzg+PjJdPS0xO2NbZys0Pj4yXT0zMjtjW2crOD4+Ml09MjtjW2crMTI+PjJdPTg7Y1tnKzE2Pj4yXT0wO3M9ZyszNnwwO2Nbcz4+Ml09MDtuPWcrNDB8MDtjW24+PjJdPTA7Y1tnKzQ0Pj4yXT0wO2NbZys2MD4+Ml09MTtjW2crNjQ+PjJdPTI7Y1tnKzU2Pj4yXT00MDk2O2NbZys1Mj4+Ml09NDtjW2crNDg+PjJdPTQ7dT1nKzY4fDA7Y1t1Pj4yXT0wO3Q9Zys3MnwwO2NbdD4+Ml09MDtjW2crNzY+PjJdPTA7Y1tnKzIwPj4yXT0zMjt3PWcrMjR8MDtjW3c+PjJdPTA7Y1tnKzI4Pj4yXT0tMjE0NzQ4MzY0ODtjW2crMzI+PjJdPTIxNDc0ODM2NDc7Y1tnPj4yXT0wO0g9bWQobSl8MDtHPW1kKG0pfDA7eD1tZChtKXwwO2NbeT4+Ml09KEcmMjU1KTw8MTZ8KEgmMjU1KTw8MjR8KHgmMjU1KTw8OHwobWQobSl8MCkmMjU1O3RkKGcpO3k9U2MoODM1Miw1NjQ4KXwwO209Y1t2Pj4yXXwwO3k9amgoeSxtKXwwO3g9Y1t5KygoY1soY1t5Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dj14KzR8MDtjW3Y+PjJdPShjW3Y+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9QT0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7ej1jW3grOD4+Ml18MDtkb3tpZigoY1t4KzEyPj4yXXwwKS16Pj4yPj4+MD5BPj4+MCl7ej1jW3orKEE8PDIpPj4yXXwwO2lmKCh6fDApPT0wKXticmVha316PXhjW2NbKGNbej4+Ml18MCkrMjg+PjJdJjYzXSh6LDEwKXwwO0g9Y1t2Pj4yXXwwO2Nbdj4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbeD4+Ml18MCkrOD4+Ml0mMjU1XSh4KX1saCh5LHopO1lnKHkpO2g6ZG97aWYoKG18MCkhPTApe3g9Zis0fDA7dj1mKzh8MDt5PTE7d2hpbGUoMSl7aWYoeT4+PjA+MSl7ej1jWyhjW28+PjJdfDApKyh5KyAtMTw8Myk+PjJdfDB9ZWxzZXt6PTB9QT0ocmQoZyxqLChjW3M+PjJdfDApKzQ0fDApfDApK3p8MDt6PWNbdz4+Ml18MDtpZigoQXwwKTwwKXt6PXorQXwwfWVsc2V7ej1BLShBPj4+MDx6Pj4+MD8wOnopfDB9QT0oY1tvPj4yXXwwKSsoeTw8Myl8MDtjW0E+PjJdPXo7Y1tBKzQ+PjJdPSgoenwwKTwwKTw8MzE+PjMxO0E9U2MoamgoU2MoODM1Miw1NjcyKXwwLHkpfDAsNTY4MCl8MDt6PShjW28+PjJdfDApKyh5PDwzKXwwO3o9a2goQSxjW3o+PjJdfDAsY1t6KzQ+PjJdfDApfDA7QT1jW3orKChjWyhjW3o+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtCPUErNHwwO2NbQj4+Ml09KGNbQj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1t4Pj4yXT0yMDg7Y1t2Pj4yXT0wO2NnKDEzNDU2LGYpfUM9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0Q9Y1tBKzg+PjJdfDA7aWYoISgoY1tBKzEyPj4yXXwwKS1EPj4yPj4+MD5DPj4+MCkpe2JyZWFrfUM9Y1tEKyhDPDwyKT4+Ml18MDtpZigoQ3wwKT09MCl7YnJlYWt9Qz14Y1tjWyhjW0M+PjJdfDApKzI4Pj4yXSY2M10oQywxMCl8MDtIPWNbQj4+Ml18MDtjW0I+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0E+PjJdfDApKzg+PjJdJjI1NV0oQSl9bGgoeixDKTtZZyh6KTt5PXkrMXwwO2lmKHk+Pj4wPm0+Pj4wKXticmVhayBofX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dj1jW28+PjJdfDA7aTpkb3tpZigoY1tyPj4yXXwwKS12Pj4zPj4+MD4xKXtqPWYrNHwwO2c9Zis4fDA7bT0xO3doaWxlKDEpe3c9disobSsgLTE8PDMpfDA7dj12KyhtPDwzKXwwO3g9djt3PUluKGNbeD4+Ml18MCxjW3grND4+Ml18MCxjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7Y1t2Pj4yXT13O2Nbdis0Pj4yXT1JO3Y9U2MoamgoU2MoODM1Miw1NjcyKXwwLG0pfDAsNTY4MCl8MDt3PShjW28+PjJdfDApKyhtPDwzKXwwO3c9a2godixjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7dj1jW3crKChjWyhjW3c+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDt4PXYrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tqPj4yXT0yMDg7Y1tnPj4yXT0wO2NnKDEzNDU2LGYpfXo9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3k9Y1t2Kzg+PjJdfDA7aWYoISgoY1t2KzEyPj4yXXwwKS15Pj4yPj4+MD56Pj4+MCkpe2JyZWFrfXk9Y1t5Kyh6PDwyKT4+Ml18MDtpZigoeXwwKT09MCl7YnJlYWt9eT14Y1tjWyhjW3k+PjJdfDApKzI4Pj4yXSY2M10oeSwxMCl8MDtIPWNbeD4+Ml18MDtjW3g+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW3Y+PjJdfDApKzg+PjJdJjI1NV0odil9bGgodyx5KTtZZyh3KTttPW0rMXwwO3Y9Y1tvPj4yXXwwO2lmKCEobT4+PjA8KGNbcj4+Ml18MCktdj4+Mz4+PjApKXticmVhayBpfX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zj1jW3U+PjJdfDA7ZG97aWYoKGZ8MCkhPTApe2c9Y1t0Pj4yXXwwO2lmKChnfDApIT0oZnwwKSl7ZG97Y1t0Pj4yXT1nKyAtNDQ7aj1jW2crIC0zNj4+Ml18MDtpZigoanwwKSE9MCl7dm4oY1tqKyAtND4+Ml18MCl9aj1jW2crIC0zMj4+Ml18MDtpZigoanwwKSE9MCl7dm4oY1tqKyAtND4+Ml18MCl9Zz1jW2crIC0yOD4+Ml18MDtpZigoZ3wwKSE9MCl7dm4oY1tnKyAtND4+Ml18MCl9Zz1jW3Q+PjJdfDB9d2hpbGUoKGd8MCkhPShmfDApKTtmPWNbdT4+Ml18MDtpZigoZnwwKT09MCl7YnJlYWt9fXZuKGYpfX13aGlsZSgwKTtmPWNbcz4+Ml18MDtkb3tpZigoZnwwKSE9MCl7Zz1jW24+PjJdfDA7aWYoKGd8MCkhPShmfDApKXtkb3tjW24+PjJdPWcrIC00NDtqPWNbZysgLTM2Pj4yXXwwO2lmKChqfDApIT0wKXt2bihjW2orIC00Pj4yXXwwKX1qPWNbZysgLTMyPj4yXXwwO2lmKChqfDApIT0wKXt2bihjW2orIC00Pj4yXXwwKX1nPWNbZysgLTI4Pj4yXXwwO2lmKChnfDApIT0wKXt2bihjW2crIC00Pj4yXXwwKX1nPWNbbj4+Ml18MH13aGlsZSgoZ3wwKSE9KGZ8MCkpO2Y9Y1tzPj4yXXwwO2lmKChmfDApPT0wKXticmVha319dm4oZil9fXdoaWxlKDApO3ZuKGNbKGNbbD4+Ml18MCkrIC00Pj4yXXwwKTtsPWRbcT4+MF18ZFtxKzE+PjBdPDw4fGRbcSsyPj4wXTw8MTZ8ZFtxKzM+PjBdPDwyNDticmVhayBnfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zj1jW2I+PjJdfDA7YVtmKzEyPj4wXT0wO2FbZisxMz4+MF09MDtmPWNbYj4+Ml18MDtnPWwrOHwwO0g9Y1tmKzQ+PjJdfDA7Rz0oKEh8MCk8MCk8PDMxPj4zMTtpZigwPChHfDApfDA9PShHfDApJmc+Pj4wPEg+Pj4wKXtjW2YrOD4+Ml09ZztIPWIrMTJ8MDtjW0g+PjJdPTA7SD1iKzh8MDtjW0g+PjJdPTA7aT1lO3JldHVybn1lbHNle2FbZisxMj4+MF09MTtIPWIrMTJ8MDtjW0g+PjJdPTA7SD1iKzh8MDtjW0g+PjJdPTA7aT1lO3JldHVybn19fXdoaWxlKDApO0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDU2KXwwO2lmKChifDApIT0wKXtsPTIyOTticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjI5KXtjW2IrND4+Ml09NDM7Y1tiPj4yXT00MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTk4NHwwO2U9Zis0NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT02MDQwO3diKGd8MCw1OTUyLDcyKX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBwZShhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Yj1pO2k9aSsxNnwwO2Y9YjtnPVNjKDgzNTIsNTE5Mil8MDtoPWNbZysoKGNbKGNbZz4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO2o9aCs0fDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW2YrND4+Ml09MjA4O2NbZis4Pj4yXT0wO2NnKDEzNDU2LGYpfWw9KGNbMTM0NjA+PjJdfDApKyAtMXwwO209Y1toKzg+PjJdfDA7aWYoKGNbaCsxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywxMCl8MDttPWNbaj4+Ml18MDtjW2o+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2g+PjJdfDApKzg+PjJdJjI1NV0oaCl9bGgoZyxrKTtZZyhnKTtnPWErMzR8MDtnPWRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNDtpZigoZ3wwKSE9MCl7dm4oZyl9Zz1TYyg4MzUyLDUyMDgpfDA7aD1jW2crKChjWyhjW2c+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtqPWgrNHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX1mPShjWzEzNDYwPj4yXXwwKSsgLTF8MDthPWNbaCs4Pj4yXXwwO2lmKChjW2grMTI+PjJdfDApLWE+PjI+Pj4wPmY+Pj4wPyhlPWNbYSsoZjw8Mik+PjJdfDAsKGV8MCkhPTApOjApe2U9eGNbY1soY1tlPj4yXXwwKSsyOD4+Ml0mNjNdKGUsMTApfDA7bT1jW2o+PjJdfDA7Y1tqPj4yXT1tKyAtMTtpZigobXwwKT09MCl7bGNbY1soY1toPj4yXXwwKSs4Pj4yXSYyNTVdKGgpfWxoKGcsZSk7WWcoZyk7aT1iO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBxZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gcmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHNlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiB0ZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gdWUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB2ZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHdlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24geGUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHllKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gemUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEFlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gQmUoYSl7YT1hfDA7dmFyIGI9MDtiPWk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIENlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRGUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTA7Yj1pO2Q9Y1thPj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufWU9YSs0fDA7Zj1jW2U+PjJdfDA7aWYoKGZ8MCkhPShkfDApKXtkb3tnPWYrIC0yNHwwO2NbZT4+Ml09ZztmPWNbZisgLTg+PjJdfDA7aWYoKGZ8MCkhPShnfDApKXtpZigoZnwwKSE9MCl7bGNbY1soY1tmPj4yXXwwKSsyMD4+Ml0mMjU1XShmKX19ZWxzZXtsY1tjWyhjW2Y+PjJdfDApKzE2Pj4yXSYyNTVdKGYpfWY9Y1tlPj4yXXwwfXdoaWxlKChmfDApIT0oZHwwKSk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59fXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gRWUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEZlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEdlKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2E9aTt3aGlsZSgxKXtkPXVuKDgpfDA7aWYoKGR8MCkhPTApe2I9NzticmVha31kPWNbNTY2Nl18MDtjWzU2NjZdPWQrMDtpZigoZHwwKT09MCl7YnJlYWt9c2NbZCYzMV0oKX1pZigoYnwwKT09Nyl7Y1tkPj4yXT02NDE2O2k9YTtyZXR1cm4gZHwwfWQ9WGEoNCl8MDtjW2Q+PjJdPTIyNjgwO3diKGR8MCwyMjcyOCwyMDYpO3JldHVybiAwfWZ1bmN0aW9uIEhlKGEsYil7YT1hfDA7Yj1ifDA7aWYoKGJ8MCkhPTApe2NbYj4+Ml09NjQxNn1yZXR1cm59ZnVuY3Rpb24gSWUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEplKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEtlKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtiPWk7aj1lKzEwNHwwO2c9ZFtqPj4wXXwwO2U9Zz4+Pjc7aD1nPj4+NiYxO2lmKCEoKGV8MCkhPTF8KGh8MCk9PTApKXtiPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oODApfDA7aWYoKGV8MCkhPTApe2Y9ODticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZnwwKT09OCl7Y1tlKzQ+PjJdPTY3O2NbZT4+Ml09Njc7Zz1lKzEyfDA7Y1tiKzQ+PjJdPWc7Y1tlKzg+PjJdPTA7Zz1nKzB8MDtlPTY5NjB8MDtmPWcrNjh8MDtkb3thW2c+PjBdPWFbZT4+MF18MDtnPWcrMXwwO2U9ZSsxfDB9d2hpbGUoKGd8MCk8KGZ8MCkpO2NbYj4+Ml09NzA0MDt3YihifDAsNjgzMiw4NCl9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9aWYoKGV8MCkhPShofDApKXthW2o+PjBdPWcmNjM7aT1iO3JldHVybn1iPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oNTEpfDA7aWYoKGV8MCkhPTApe2Y9MTY7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKGZ8MCk9PTE2KXtjW2UrND4+Ml09Mzg7Y1tlPj4yXT0zODtnPWUrMTJ8MDtjW2IrND4+Ml09ZztjW2UrOD4+Ml09MDtnPWcrMHwwO2U9Njg5NnwwO2Y9ZyszOXwwO2Rve2FbZz4+MF09YVtlPj4wXXwwO2c9ZysxfDA7ZT1lKzF8MH13aGlsZSgoZ3wwKTwoZnwwKSk7Y1tiPj4yXT02OTQ0O3diKGJ8MCw2ODgwLDgyKX1qPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX1mdW5jdGlvbiBMZShhLGIpe2E9YXwwO2I9YnwwO3JldHVybigoY1tiKzQ+PjJdfDApPT02Njg4P2ErNHwwOjApfDB9ZnVuY3Rpb24gTWUoYSl7YT1hfDA7cmV0dXJuIDY3ODR9ZnVuY3Rpb24gTmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIE9lKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBQZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFFlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gUmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBTZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2I9aTtpPWkrMTZ8MDtoPWI7ZD1TYyg4MzUyLDcxMDQpfDA7ZT1jW2QrKChjWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtmPWUrNHwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbaD4+Ml09MTM0NTY7Y1toKzQ+PjJdPTIwODtjW2grOD4+Ml09MDtjZygxMzQ1NixoKX1oPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtqPWNbZSs4Pj4yXXwwO2lmKChjW2UrMTI+PjJdfDApLWo+PjI+Pj4wPmg+Pj4wPyhnPWNbaisoaDw8Mik+PjJdfDAsKGd8MCkhPTApOjApe2c9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcsMTApfDA7aj1jW2Y+PjJdfDA7Y1tmPj4yXT1qKyAtMTtpZigoanwwKT09MCl7bGNbY1soY1tlPj4yXXwwKSs4Pj4yXSYyNTVdKGUpfWxoKGQsZyk7WWcoZCk7ZD1jW2ErMzI0Pj4yXXwwO2lmKCgoZHwwKSE9MD8oaD1kKzR8MCxqPWNbaD4+Ml18MCxjW2g+PjJdPWorIC0xLChqfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGg9ZCs4fDAsaj1jW2g+PjJdfDAsY1toPj4yXT1qKyAtMSwoanwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX1kPWNbYSszMTY+PjJdfDA7aWYoKChkfDApIT0wPyhoPWQrNHwwLGo9Y1toPj4yXXwwLGNbaD4+Ml09aisgLTEsKGp8MCk9PTApOjApPyhsY1tjWyhjW2Q+PjJdfDApKzg+PjJdJjI1NV0oZCksaD1kKzh8MCxqPWNbaD4+Ml18MCxjW2g+PjJdPWorIC0xLChqfDApPT0wKTowKXtsY1tjWyhjW2Q+PjJdfDApKzE2Pj4yXSYyNTVdKGQpfWQ9Y1thKzMwMD4+Ml18MDtpZigoZHwwKSE9MCl7ZT1hKzMwNHwwO2Y9Y1tlPj4yXXwwO2lmKChmfDApIT0oZHwwKSl7Y1tlPj4yXT1mKyh+KCgoZisgLTEyKygwLWQpfDApPj4+MCkvMTJ8MCkqMTJ8MCl9dm4oZCl9ZD1jW2ErMjg4Pj4yXXwwO2lmKChkfDApPT0wKXtqPWErMjQ3fDA7cGUoaik7aj1hKzE2fDA7aj1jW2o+PjJdfDA7aj1qKyAtNHwwO2o9Y1tqPj4yXXwwO3ZuKGopO2k9YjtyZXR1cm59ZT1hKzI5MnwwO2Y9Y1tlPj4yXXwwO2lmKChmfDApIT0oZHwwKSl7Y1tlPj4yXT1mKyh+KChmKyAtOCsoMC1kKXwwKT4+PjMpPDwzKX12bihkKTtqPWErMjQ3fDA7cGUoaik7aj1hKzE2fDA7aj1jW2o+PjJdfDA7aj1qKyAtNHwwO2o9Y1tqPj4yXXwwO3ZuKGopO2k9YjtyZXR1cm59aj1YYSg0KXwwO2Nbaj4+Ml09MjEzMDQ7d2IoanwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gVGUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFVlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFZlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2E9Y1thKzEyPj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufVNlKGEpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gV2UoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT03MzEyKXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIFhlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFllKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBaZShhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBfZShhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiAkZShhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTc1NjApe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gYWYoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gYmYoKXt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtiPWk7aT1pKzMyfDA7ZD1iO0hiKDcyLDk2LDE3NiwwLDE1Miw5MSwxNDQsMCwxNDQsMCw4LDEzNiwyMTEpO2NbZD4+Ml09MTtlPWQrNHwwO2NbZT4+Ml09OTY7T2IoNzIsMSxlfDAsMTI4LDkyLDIyKTtjW2Q+PjJdPTQ7ZT1kKzR8MDtjW2U+PjJdPTIxNzc2O2NbZCs4Pj4yXT05NjtjW2QrMTI+PjJdPTIxOTA0O2NbZCsxNj4+Ml09MjE5MDQ7Zj11big4KXwwO2lmKChmfDApIT0wKXthW2Y+PjBdPTI3O2FbZisxPj4wXT0wO2FbZisyPj4wXT0wO2FbZiszPj4wXT0wO2c9Zis0fDA7YVtnPj4wXT0wO2FbZysxPj4wXT0wO2FbZysyPj4wXT0wO2FbZyszPj4wXT0wfXpiKDcyLDE2LDQsZXwwLDEyMCwzMCxmfDAsMCk7Y1tkPj4yXT0zO2U9ZCs0fDA7Y1tlPj4yXT0yMTc3NjtjW2QrOD4+Ml09OTY7Y1tkKzEyPj4yXT0yMTg4ODtmPXVuKDgpfDA7aWYoKGZ8MCkhPTApe2FbZj4+MF09NjY7YVtmKzE+PjBdPTA7YVtmKzI+PjBdPTA7YVtmKzM+PjBdPTA7Zz1mKzR8MDthW2c+PjBdPTA7YVtnKzE+PjBdPTA7YVtnKzI+PjBdPTA7YVtnKzM+PjBdPTB9emIoNzIsMjQsMyxlfDAsMTEyLDI4LGZ8MCwwKTtjW2Q+PjJdPTI7ZT1kKzR8MDtjW2U+PjJdPTIxOTA0O2NbZCs4Pj4yXT05NjtkPXVuKDgpfDA7aWYoKGR8MCk9PTApe3piKDcyLDQwLDIsZXwwLDU2LDQ2LGR8MCwwKTtpPWI7cmV0dXJufWFbZD4+MF09OTM7YVtkKzE+PjBdPTA7YVtkKzI+PjBdPTA7YVtkKzM+PjBdPTA7Zz1kKzR8MDthW2c+PjBdPTA7YVtnKzE+PjBdPTA7YVtnKzI+PjBdPTA7YVtnKzM+PjBdPTA7emIoNzIsNDAsMixlfDAsNTYsNDYsZHwwLDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gY2YoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtkPWNbYSs0Pj4yXXwwO2U9KEpuKGR8MCl8MCkrMXwwO2E9dW4oZSl8MDtpZigoYXwwKT09MCl7ZT0wO2k9YjtyZXR1cm4gZXwwfUxuKGF8MCxkfDAsZXwwKXwwO2U9YTtpPWI7cmV0dXJuIGV8MH1mdW5jdGlvbiBkZigpe3ZhciBhPTA7YT1pO0phKDIxNzc2LDc2MjQpO3BiKDIxODA4LDc2MzIsMSwxLDApO1VhKDIxODI0LDc2NDAsMSwtMTI4LDEyNyk7VWEoMjE4NTYsNzY0OCwxLC0xMjgsMTI3KTtVYSgyMTg0MCw3NjY0LDEsMCwyNTUpO1VhKDIxODY0LDc2ODAsMiwtMzI3NjgsMzI3NjcpO1VhKDIxODcyLDc2ODgsMiwwLDY1NTM1KTtVYSgyMTg4OCw3NzA0LDQsLTIxNDc0ODM2NDgsMjE0NzQ4MzY0Nyk7VWEoMjE5MDQsNzcxMiw0LDAsLTEpO1VhKDIxOTIwLDc3MjgsNCwtMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3KTtVYSgyMTkzNiw3NzM2LDQsMCwtMSk7YWMoMjE5NTIsNzc1Miw0KTthYygyMTk2OCw3NzYwLDgpO3RiKDgyNDAsNzc2OCk7dGIoODE1Miw3Nzg0KTtKYig4MDY0LDQsNzgyNCk7eGIoNzk0NCw3ODQwKTtMYSg3OTEyLDc4NTYpO2k9YTtyZXR1cm59ZnVuY3Rpb24gZWYoYSl7YT1hfDA7YT1pO1lnKDgzNTIpO1lnKDg1MjgpO2JoKDg3MDQpO2JoKDg4ODApO2k9YTtyZXR1cm59ZnVuY3Rpb24gZmYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNzI4O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGdmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gaGYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wO2U9aTtvY1tjWyhjW2I+PjJdfDApKzI0Pj4yXSYxMjddKGIpfDA7ZD1ZayhjW2Q+PjJdfDAsMTM1MjgpfDA7Y1tiKzM2Pj4yXT1kO2FbYis0ND4+MF09KG9jW2NbKGNbZD4+Ml18MCkrMjg+PjJdJjEyN10oZCl8MCkmMTtpPWU7cmV0dXJufWZ1bmN0aW9uIGpmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtiPWk7aT1pKzE2fDA7Zz1iKzh8MDtkPWI7ZT1hKzM2fDA7Zj1hKzQwfDA7aD1nKzh8MDtqPWc7YT1hKzMyfDA7d2hpbGUoMSl7az1jW2U+PjJdfDA7az15Y1tjWyhjW2s+PjJdfDApKzIwPj4yXSY2M10oayxjW2Y+PjJdfDAsZyxoLGQpfDA7bD0oY1tkPj4yXXwwKS1qfDA7aWYoKFpiKGd8MCwxLGx8MCxjW2E+PjJdfDApfDApIT0obHwwKSl7ZT0tMTtkPTU7YnJlYWt9aWYoKGt8MCk9PTIpe2U9LTE7ZD01O2JyZWFrfWVsc2UgaWYoKGt8MCkhPTEpe2Q9NDticmVha319aWYoKGR8MCk9PTQpe2w9KChfYShjW2E+PjJdfDApfDApIT0wKTw8MzE+PjMxO2k9YjtyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTUpe2k9YjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIGtmKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MDtmPWk7aWYoKGFbYis0ND4+MF18MCkhPTApe2c9WmIoZHwwLDQsZXwwLGNbYiszMj4+Ml18MCl8MDtpPWY7cmV0dXJuIGd8MH1pZigoZXwwKT4wKXtnPTB9ZWxzZXtnPTA7aT1mO3JldHVybiBnfDB9d2hpbGUoMSl7aWYoKHhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGNbZD4+Ml18MCl8MCk9PS0xKXtlPTY7YnJlYWt9Zz1nKzF8MDtpZigoZ3wwKTwoZXwwKSl7ZD1kKzR8MH1lbHNle2U9NjticmVha319aWYoKGV8MCk9PTYpe2k9ZjtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIGxmKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtlPWk7aT1pKzMyfDA7az1lKzE2fDA7cD1lKzh8MDtqPWUrNHwwO2g9ZTtmPShkfDApPT0tMTthOmRve2lmKCFmKXtjW3A+PjJdPWQ7aWYoKGFbYis0ND4+MF18MCkhPTApe2lmKChaYihwfDAsNCwxLGNbYiszMj4+Ml18MCl8MCk9PTEpe2JyZWFrfWVsc2V7ZD0tMX1pPWU7cmV0dXJuIGR8MH1jW2o+PjJdPWs7bD1wKzR8MDtuPWIrMzZ8MDtvPWIrNDB8MDtnPWsrOHwwO209aztiPWIrMzJ8MDt3aGlsZSgxKXtxPWNbbj4+Ml18MDtxPXRjW2NbKGNbcT4+Ml18MCkrMTI+PjJdJjMxXShxLGNbbz4+Ml18MCxwLGwsaCxrLGcsail8MDtpZigoY1toPj4yXXwwKT09KHB8MCkpe2Q9LTE7Zz0xMjticmVha31pZigocXwwKT09Myl7Zz03O2JyZWFrfXI9KHF8MCk9PTE7aWYoIShxPj4+MDwyKSl7ZD0tMTtnPTEyO2JyZWFrfXE9KGNbaj4+Ml18MCktbXwwO2lmKChaYihrfDAsMSxxfDAsY1tiPj4yXXwwKXwwKSE9KHF8MCkpe2Q9LTE7Zz0xMjticmVha31pZihyKXtwPXI/Y1toPj4yXXwwOnB9ZWxzZXticmVhayBhfX1pZigoZ3wwKT09Nyl7aWYoKFpiKHB8MCwxLDEsY1tiPj4yXXwwKXwwKT09MSl7YnJlYWt9ZWxzZXtkPS0xfWk9ZTtyZXR1cm4gZHwwfWVsc2UgaWYoKGd8MCk9PTEyKXtpPWU7cmV0dXJuIGR8MH19fXdoaWxlKDApO3I9Zj8wOmQ7aT1lO3JldHVybiByfDB9ZnVuY3Rpb24gbWYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNzI4O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG5mKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gb2YoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2c9WWsoY1tkPj4yXXwwLDEzNTI4KXwwO2Y9YiszNnwwO2NbZj4+Ml09ZztkPWIrNDR8MDtjW2Q+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MDtmPWNbZj4+Ml18MDthW2IrNTM+PjBdPShvY1tjWyhjW2Y+PjJdfDApKzI4Pj4yXSYxMjddKGYpfDApJjE7aWYoKGNbZD4+Ml18MCk+OCl7b2soOTU0NCl9ZWxzZXtpPWU7cmV0dXJufX1mdW5jdGlvbiBwZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPXNmKGEsMCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBxZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPXNmKGEsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiByZihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtpPWkrMzJ8MDtqPWUrMTZ8MDtmPWUrOHwwO2w9ZSs0fDA7az1lO2c9Yis1MnwwO209KGFbZz4+MF18MCkhPTA7aWYoKGR8MCk9PS0xKXtpZihtKXttPS0xO2k9ZTtyZXR1cm4gbXwwfW09Y1tiKzQ4Pj4yXXwwO2FbZz4+MF09KG18MCkhPS0xJjE7aT1lO3JldHVybiBtfDB9aD1iKzQ4fDA7YTpkb3tpZihtKXtjW2w+PjJdPWNbaD4+Ml07bT1jW2IrMzY+PjJdfDA7az10Y1tjWyhjW20+PjJdfDApKzEyPj4yXSYzMV0obSxjW2IrNDA+PjJdfDAsbCxsKzR8MCxrLGosais4fDAsZil8MDtpZigoa3wwKT09Myl7YVtqPj4wXT1jW2g+PjJdO2NbZj4+Ml09aisxfWVsc2UgaWYoKGt8MCk9PTF8KGt8MCk9PTIpe209LTE7aT1lO3JldHVybiBtfDB9Yj1iKzMyfDA7d2hpbGUoMSl7az1jW2Y+PjJdfDA7aWYoIShrPj4+MD5qPj4+MCkpe2JyZWFrIGF9bT1rKyAtMXwwO2NbZj4+Ml09bTtpZigoVmEoYVttPj4wXXwwLGNbYj4+Ml18MCl8MCk9PS0xKXtmPS0xO2JyZWFrfX1pPWU7cmV0dXJuIGZ8MH19d2hpbGUoMCk7Y1toPj4yXT1kO2FbZz4+MF09MTttPWQ7aT1lO3JldHVybiBtfDB9ZnVuY3Rpb24gc2YoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7ZT1pO2k9aSszMnwwO2c9ZSsxNnwwO2o9ZSs4fDA7bT1lKzR8MDtsPWU7bj1iKzUyfDA7aWYoKGFbbj4+MF18MCkhPTApe2Y9Yis0OHwwO2c9Y1tmPj4yXXwwO2lmKCFkKXt2PWc7aT1lO3JldHVybiB2fDB9Y1tmPj4yXT0tMTthW24+PjBdPTA7dj1nO2k9ZTtyZXR1cm4gdnwwfXM9Y1tiKzQ0Pj4yXXwwO3M9KHN8MCk+MT9zOjE7YTpkb3tpZigoc3wwKT4wKXtwPWIrMzJ8MDtuPTA7d2hpbGUoMSl7bz1UYihjW3A+PjJdfDApfDA7aWYoKG98MCk9PS0xKXtoPS0xO2JyZWFrfWFbZytuPj4wXT1vO249bisxfDA7aWYoKG58MCk+PShzfDApKXticmVhayBhfX1pPWU7cmV0dXJuIGh8MH19d2hpbGUoMCk7Yjpkb3tpZigoYVtiKzUzPj4wXXwwKT09MCl7cD1iKzQwfDA7cT1iKzM2fDA7bj1qKzR8MDtvPWIrMzJ8MDt3aGlsZSgxKXt2PWNbcD4+Ml18MDt1PXY7dD1jW3U+PjJdfDA7dT1jW3UrND4+Ml18MDt3PWNbcT4+Ml18MDtyPWcrc3wwO3Y9dGNbY1soY1t3Pj4yXXwwKSsxNj4+Ml0mMzFdKHcsdixnLHIsbSxqLG4sbCl8MDtpZigodnwwKT09Myl7Zj0xNDticmVha31lbHNlIGlmKCh2fDApPT0yKXtoPS0xO2Y9MjI7YnJlYWt9ZWxzZSBpZigodnwwKSE9MSl7az1zO2JyZWFrIGJ9dz1jW3A+PjJdfDA7Y1t3Pj4yXT10O2Nbdys0Pj4yXT11O2lmKChzfDApPT04KXtoPS0xO2Y9MjI7YnJlYWt9dD1UYihjW28+PjJdfDApfDA7aWYoKHR8MCk9PS0xKXtoPS0xO2Y9MjI7YnJlYWt9YVtyPj4wXT10O3M9cysxfDB9aWYoKGZ8MCk9PTE0KXtjW2o+PjJdPWFbZz4+MF18MDtrPXM7YnJlYWt9ZWxzZSBpZigoZnwwKT09MjIpe2k9ZTtyZXR1cm4gaHwwfX1lbHNle2Nbaj4+Ml09YVtnPj4wXXwwO2s9c319d2hpbGUoMCk7aWYoZCl7dz1jW2o+PjJdfDA7Y1tiKzQ4Pj4yXT13O2k9ZTtyZXR1cm4gd3wwfWQ9YiszMnwwO3doaWxlKDEpe2lmKChrfDApPD0wKXticmVha31rPWsrIC0xfDA7aWYoKFZhKGFbZytrPj4wXXwwLGNbZD4+Ml18MCl8MCk9PS0xKXtoPS0xO2Y9MjI7YnJlYWt9fWlmKChmfDApPT0yMil7aT1lO3JldHVybiBofDB9dz1jW2o+PjJdfDA7aT1lO3JldHVybiB3fDB9ZnVuY3Rpb24gdGYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNjY0O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHVmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA2NjQ7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gdmYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wO2U9aTtvY1tjWyhjW2I+PjJdfDApKzI0Pj4yXSYxMjddKGIpfDA7ZD1ZayhjW2Q+PjJdfDAsMTM1MjApfDA7Y1tiKzM2Pj4yXT1kO2FbYis0ND4+MF09KG9jW2NbKGNbZD4+Ml18MCkrMjg+PjJdJjEyN10oZCl8MCkmMTtpPWU7cmV0dXJufWZ1bmN0aW9uIHdmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtiPWk7aT1pKzE2fDA7Zz1iKzh8MDtkPWI7ZT1hKzM2fDA7Zj1hKzQwfDA7aD1nKzh8MDtqPWc7YT1hKzMyfDA7d2hpbGUoMSl7az1jW2U+PjJdfDA7az15Y1tjWyhjW2s+PjJdfDApKzIwPj4yXSY2M10oayxjW2Y+PjJdfDAsZyxoLGQpfDA7bD0oY1tkPj4yXXwwKS1qfDA7aWYoKFpiKGd8MCwxLGx8MCxjW2E+PjJdfDApfDApIT0obHwwKSl7ZT0tMTtkPTU7YnJlYWt9aWYoKGt8MCk9PTIpe2U9LTE7ZD01O2JyZWFrfWVsc2UgaWYoKGt8MCkhPTEpe2Q9NDticmVha319aWYoKGR8MCk9PTQpe2w9KChfYShjW2E+PjJdfDApfDApIT0wKTw8MzE+PjMxO2k9YjtyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTUpe2k9YjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIHhmKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MDtnPWk7aWYoKGFbYis0ND4+MF18MCkhPTApe2g9WmIoZXwwLDEsZnwwLGNbYiszMj4+Ml18MCl8MDtpPWc7cmV0dXJuIGh8MH1pZigoZnwwKT4wKXtoPTB9ZWxzZXtoPTA7aT1nO3JldHVybiBofDB9d2hpbGUoMSl7aWYoKHhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGRbZT4+MF18MCl8MCk9PS0xKXtmPTY7YnJlYWt9aD1oKzF8MDtpZigoaHwwKTwoZnwwKSl7ZT1lKzF8MH1lbHNle2Y9NjticmVha319aWYoKGZ8MCk9PTYpe2k9ZztyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIHlmKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtlPWk7aT1pKzMyfDA7az1lKzE2fDA7cD1lKzh8MDtqPWUrNHwwO2g9ZTtmPShkfDApPT0tMTthOmRve2lmKCFmKXthW3A+PjBdPWQ7aWYoKGFbYis0ND4+MF18MCkhPTApe2lmKChaYihwfDAsMSwxLGNbYiszMj4+Ml18MCl8MCk9PTEpe2JyZWFrfWVsc2V7ZD0tMX1pPWU7cmV0dXJuIGR8MH1jW2o+PjJdPWs7bD1wKzF8MDtuPWIrMzZ8MDtvPWIrNDB8MDtnPWsrOHwwO209aztiPWIrMzJ8MDt3aGlsZSgxKXtxPWNbbj4+Ml18MDtxPXRjW2NbKGNbcT4+Ml18MCkrMTI+PjJdJjMxXShxLGNbbz4+Ml18MCxwLGwsaCxrLGcsail8MDtpZigoY1toPj4yXXwwKT09KHB8MCkpe2Q9LTE7Zz0xMjticmVha31pZigocXwwKT09Myl7Zz03O2JyZWFrfXI9KHF8MCk9PTE7aWYoIShxPj4+MDwyKSl7ZD0tMTtnPTEyO2JyZWFrfXE9KGNbaj4+Ml18MCktbXwwO2lmKChaYihrfDAsMSxxfDAsY1tiPj4yXXwwKXwwKSE9KHF8MCkpe2Q9LTE7Zz0xMjticmVha31pZihyKXtwPXI/Y1toPj4yXXwwOnB9ZWxzZXticmVhayBhfX1pZigoZ3wwKT09Nyl7aWYoKFpiKHB8MCwxLDEsY1tiPj4yXXwwKXwwKT09MSl7YnJlYWt9ZWxzZXtkPS0xfWk9ZTtyZXR1cm4gZHwwfWVsc2UgaWYoKGd8MCk9PTEyKXtpPWU7cmV0dXJuIGR8MH19fXdoaWxlKDApO3I9Zj8wOmQ7aT1lO3JldHVybiByfDB9ZnVuY3Rpb24gemYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNjY0O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEFmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA2NjQ7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gQmYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2c9WWsoY1tkPj4yXXwwLDEzNTIwKXwwO2Y9YiszNnwwO2NbZj4+Ml09ZztkPWIrNDR8MDtjW2Q+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MDtmPWNbZj4+Ml18MDthW2IrNTM+PjBdPShvY1tjWyhjW2Y+PjJdfDApKzI4Pj4yXSYxMjddKGYpfDApJjE7aWYoKGNbZD4+Ml18MCk+OCl7b2soOTU0NCl9ZWxzZXtpPWU7cmV0dXJufX1mdW5jdGlvbiBDZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPUZmKGEsMCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBEZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPUZmKGEsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBFZihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtpPWkrMzJ8MDtqPWUrMTZ8MDtmPWUrNHwwO2w9ZSs4fDA7az1lO2c9Yis1MnwwO209KGFbZz4+MF18MCkhPTA7aWYoKGR8MCk9PS0xKXtpZihtKXttPS0xO2k9ZTtyZXR1cm4gbXwwfW09Y1tiKzQ4Pj4yXXwwO2FbZz4+MF09KG18MCkhPS0xJjE7aT1lO3JldHVybiBtfDB9aD1iKzQ4fDA7YTpkb3tpZihtKXthW2w+PjBdPWNbaD4+Ml07bT1jW2IrMzY+PjJdfDA7az10Y1tjWyhjW20+PjJdfDApKzEyPj4yXSYzMV0obSxjW2IrNDA+PjJdfDAsbCxsKzF8MCxrLGosais4fDAsZil8MDtpZigoa3wwKT09MXwoa3wwKT09Mil7bT0tMTtpPWU7cmV0dXJuIG18MH1lbHNlIGlmKChrfDApPT0zKXthW2o+PjBdPWNbaD4+Ml07Y1tmPj4yXT1qKzF9Yj1iKzMyfDA7d2hpbGUoMSl7az1jW2Y+PjJdfDA7aWYoIShrPj4+MD5qPj4+MCkpe2JyZWFrIGF9bT1rKyAtMXwwO2NbZj4+Ml09bTtpZigoVmEoYVttPj4wXXwwLGNbYj4+Ml18MCl8MCk9PS0xKXtmPS0xO2JyZWFrfX1pPWU7cmV0dXJuIGZ8MH19d2hpbGUoMCk7Y1toPj4yXT1kO2FbZz4+MF09MTttPWQ7aT1lO3JldHVybiBtfDB9ZnVuY3Rpb24gRmYoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7Zj1pO2k9aSszMnwwO2g9ZisxNnwwO2o9Zis4fDA7bj1mKzR8MDttPWY7bz1iKzUyfDA7aWYoKGFbbz4+MF18MCkhPTApe2c9Yis0OHwwO2g9Y1tnPj4yXXwwO2lmKCFlKXt3PWg7aT1mO3JldHVybiB3fDB9Y1tnPj4yXT0tMTthW28+PjBdPTA7dz1oO2k9ZjtyZXR1cm4gd3wwfXA9Y1tiKzQ0Pj4yXXwwO3A9KHB8MCk+MT9wOjE7YTpkb3tpZigocHwwKT4wKXtyPWIrMzJ8MDtvPTA7d2hpbGUoMSl7cT1UYihjW3I+PjJdfDApfDA7aWYoKHF8MCk9PS0xKXtrPS0xO2JyZWFrfWFbaCtvPj4wXT1xO289bysxfDA7aWYoKG98MCk+PShwfDApKXticmVhayBhfX1pPWY7cmV0dXJuIGt8MH19d2hpbGUoMCk7Yjpkb3tpZigoYVtiKzUzPj4wXXwwKT09MCl7cj1iKzQwfDA7cz1iKzM2fDA7bz1qKzF8MDtxPWIrMzJ8MDt3aGlsZSgxKXt3PWNbcj4+Ml18MDt2PXc7dT1jW3Y+PjJdfDA7dj1jW3YrND4+Ml18MDt4PWNbcz4+Ml18MDt0PWgrcHwwO3c9dGNbY1soY1t4Pj4yXXwwKSsxNj4+Ml0mMzFdKHgsdyxoLHQsbixqLG8sbSl8MDtpZigod3wwKT09Mil7az0tMTttPTIzO2JyZWFrfWVsc2UgaWYoKHd8MCk9PTMpe209MTQ7YnJlYWt9ZWxzZSBpZigod3wwKSE9MSl7bD1wO2JyZWFrIGJ9eD1jW3I+PjJdfDA7Y1t4Pj4yXT11O2NbeCs0Pj4yXT12O2lmKChwfDApPT04KXtrPS0xO209MjM7YnJlYWt9dT1UYihjW3E+PjJdfDApfDA7aWYoKHV8MCk9PS0xKXtrPS0xO209MjM7YnJlYWt9YVt0Pj4wXT11O3A9cCsxfDB9aWYoKG18MCk9PTE0KXthW2o+PjBdPWFbaD4+MF18MDtsPXA7YnJlYWt9ZWxzZSBpZigobXwwKT09MjMpe2k9ZjtyZXR1cm4ga3wwfX1lbHNle2Fbaj4+MF09YVtoPj4wXXwwO2w9cH19d2hpbGUoMCk7ZG97aWYoIWUpe2U9YiszMnwwO3doaWxlKDEpe2lmKChsfDApPD0wKXttPTIxO2JyZWFrfWw9bCsgLTF8MDtpZigoVmEoZFtoK2w+PjBdfDAsY1tlPj4yXXwwKXwwKT09LTEpe2s9LTE7bT0yMzticmVha319aWYoKG18MCk9PTIxKXtnPWFbaj4+MF18MDticmVha31lbHNlIGlmKChtfDApPT0yMyl7aT1mO3JldHVybiBrfDB9fWVsc2V7Zz1hW2o+PjBdfDA7Y1tiKzQ4Pj4yXT1nJjI1NX19d2hpbGUoMCk7eD1nJjI1NTtpPWY7cmV0dXJuIHh8MH1mdW5jdGlvbiBHZigpe3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2I9aTtpPWkrMTZ8MDtkPWI7Zj1jW3I+PjJdfDA7Y1syMjQ0XT0xMDY2NDtYayg4OTgwfDApO2NbODk4ND4+Ml09MDtjWzg5ODg+PjJdPTA7Y1s4OTkyPj4yXT0wO2NbODk5Nj4+Ml09MDtjWzllMz4+Ml09MDtjWzkwMDQ+PjJdPTA7Y1syMjQ0XT05NzA0O2NbOTAwOD4+Ml09ZjtjWzkwMTY+PjJdPTkwMzI7Y1s5MDI0Pj4yXT0tMTthWzkwMjg+PjBdPTA7bj1jWzg5ODA+PjJdfDA7bT1uKzR8MDtjW20+PjJdPShjW20+PjJdfDApKzE7aWYoISgoY1szMzgwXXwwKT09LTEpKXtjW2Q+PjJdPTEzNTIwO2NbZCs0Pj4yXT0yMDg7Y1tkKzg+PjJdPTA7Y2coMTM1MjAsZCl9bD0oY1sxMzUyND4+Ml18MCkrIC0xfDA7az1jW24rOD4+Ml18MDtpZigoY1tuKzEyPj4yXXwwKS1rPj4yPj4+MD5sPj4+MD8oaj1jW2srKGw8PDIpPj4yXXwwLChqfDApIT0wKTowKXtjWzkwMTI+PjJdPWo7Y1s5MDIwPj4yXT1vY1tjWyhjW2o+PjJdfDApKzI0Pj4yXSYxMjddKGopfDA7bD1jWzkwMTI+PjJdfDA7YVs5MDI5Pj4wXT0ob2NbY1soY1tsPj4yXXwwKSsyOD4+Ml0mMTI3XShsKXwwKSYxO2lmKChjWzkwMjA+PjJdfDApPjgpe29rKDk1NDQpfWw9Y1ttPj4yXXwwO2NbbT4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKX1jWzIwNjZdPTEwNzk2O2NbODI3Mj4+Ml09MTA4MTY7Y1s4MjY4Pj4yXT0wO2NbODI5Nj4+Ml09ODk3NjtjWzgyODg+PjJdPTA7Y1s4MjkyPj4yXT0wO2NbODI3Nj4+Ml09NDA5ODtjWzgyODQ+PjJdPTA7Y1s4MjgwPj4yXT02O2s9ODMwNHwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4MzAwfDApO2NbODM0ND4+Ml09MDtjWzgzNDg+PjJdPS0xO2o9Y1tzPj4yXXwwO2NbMjI3MF09MTA2NjQ7WGsoOTA4NHwwKTtjWzkwODg+PjJdPTA7Y1s5MDkyPj4yXT0wO2NbOTA5Nj4+Ml09MDtjWzkxMDA+PjJdPTA7Y1s5MTA0Pj4yXT0wO2NbOTEwOD4+Ml09MDtjWzIyNzBdPTk1OTI7Y1s5MTEyPj4yXT1qO2s9Y1s5MDg0Pj4yXXwwO2w9ays0fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO2lmKCEoKGNbMzM4MF18MCk9PS0xKSl7Y1tkPj4yXT0xMzUyMDtjW2QrND4+Ml09MjA4O2NbZCs4Pj4yXT0wO2NnKDEzNTIwLGQpfW09KGNbMTM1MjQ+PjJdfDApKyAtMXwwO249Y1trKzg+PjJdfDA7aWYoKGNbaysxMj4+Ml18MCktbj4+Mj4+PjA+bT4+PjA/KGg9Y1tuKyhtPDwyKT4+Ml18MCwoaHwwKSE9MCk6MCl7bj1jW2w+PjJdfDA7Y1tsPj4yXT1uKyAtMTtpZigobnwwKT09MCl7bGNbY1soY1trPj4yXXwwKSs4Pj4yXSYyNTVdKGspfWNbOTExNj4+Ml09aDtjWzkxMjA+PjJdPTkwNDA7YVs5MTI0Pj4wXT0ob2NbY1soY1toPj4yXXwwKSsyOD4+Ml0mMTI3XShoKXwwKSYxO2NbMjA4OF09MTA4NzY7Y1s4MzU2Pj4yXT0xMDg5NjtjWzgzODA+PjJdPTkwODA7Y1s4MzcyPj4yXT0wO2NbODM3Nj4+Ml09MDtjWzgzNjA+PjJdPTQwOTg7Y1s4MzY4Pj4yXT0wO2NbODM2ND4+Ml09NjtrPTgzODh8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODM4NHwwKTtjWzg0Mjg+PjJdPTA7Y1s4NDMyPj4yXT0tMTtoPWNbcT4+Ml18MDtjWzIyODJdPTEwNjY0O1hrKDkxMzJ8MCk7Y1s5MTM2Pj4yXT0wO2NbOTE0MD4+Ml09MDtjWzkxNDQ+PjJdPTA7Y1s5MTQ4Pj4yXT0wO2NbOTE1Mj4+Ml09MDtjWzkxNTY+PjJdPTA7Y1syMjgyXT05NTkyO2NbOTE2MD4+Ml09aDttPWNbOTEzMj4+Ml18MDtuPW0rNHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtpZighKChjWzMzODBdfDApPT0tMSkpe2NbZD4+Ml09MTM1MjA7Y1tkKzQ+PjJdPTIwODtjW2QrOD4+Ml09MDtjZygxMzUyMCxkKX1sPShjWzEzNTI0Pj4yXXwwKSsgLTF8MDtrPWNbbSs4Pj4yXXwwO2lmKChjW20rMTI+PjJdfDApLWs+PjI+Pj4wPmw+Pj4wPyhnPWNbaysobDw8Mik+PjJdfDAsKGd8MCkhPTApOjApe2w9Y1tuPj4yXXwwO2Nbbj4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbbT4+Ml18MCkrOD4+Ml0mMjU1XShtKX1jWzkxNjQ+PjJdPWc7Y1s5MTY4Pj4yXT05MDQ4O2FbOTE3Mj4+MF09KG9jW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjEyN10oZyl8MCkmMTtjWzIxMTBdPTEwODc2O2NbODQ0ND4+Ml09MTA4OTY7Y1s4NDY4Pj4yXT05MTI4O2NbODQ2MD4+Ml09MDtjWzg0NjQ+PjJdPTA7Y1s4NDQ4Pj4yXT00MDk4O2NbODQ1Nj4+Ml09MDtjWzg0NTI+PjJdPTY7az04NDc2fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg0NzJ8MCk7Y1s4NTE2Pj4yXT0wO2NbODUyMD4+Ml09LTE7az1jWyhjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg0NjQ+PjJdfDA7Y1syMTMyXT0xMDg3NjtjWzg1MzI+PjJdPTEwODk2O2NbODU1Nj4+Ml09aztjWzg1NDg+PjJdPShrfDApPT0wJjE7Y1s4NTUyPj4yXT0wO2NbODUzNj4+Ml09NDA5ODtjWzg1NDQ+PjJdPTA7Y1s4NTQwPj4yXT02O2s9ODU2NHwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4NTYwfDApO2NbODYwND4+Ml09MDtjWzg2MDg+PjJdPS0xO2NbKGNbKGNbMjA2Nl18MCkrIC0xMj4+Ml18MCkrODMzNj4+Ml09ODM1MjtnPShjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg0NDR8MDtjW2c+PjJdPWNbZz4+Ml18ODE5MjtjWyhjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg1MTI+PjJdPTgzNTI7Y1syMjk0XT0xMDcyODtYayg5MTgwfDApO2NbOTE4ND4+Ml09MDtjWzkxODg+PjJdPTA7Y1s5MTkyPj4yXT0wO2NbOTE5Nj4+Ml09MDtjWzkyMDA+PjJdPTA7Y1s5MjA0Pj4yXT0wO2NbMjI5NF09OTQ0ODtjWzkyMDg+PjJdPWY7Y1s5MjE2Pj4yXT05MDU2O2NbOTIyND4+Ml09LTE7YVs5MjI4Pj4wXT0wO2Y9Y1s5MTgwPj4yXXwwO2c9Zis0fDA7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxO2lmKCEoKGNbMzM4Ml18MCk9PS0xKSl7Y1tkPj4yXT0xMzUyODtjW2QrND4+Ml09MjA4O2NbZCs4Pj4yXT0wO2NnKDEzNTI4LGQpfWs9KGNbMTM1MzI+PjJdfDApKyAtMXwwO2w9Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbD4+Mj4+PjA+az4+PjA/KGU9Y1tsKyhrPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7Y1s5MjEyPj4yXT1lO2NbOTIyMD4+Ml09b2NbY1soY1tlPj4yXXwwKSsyND4+Ml0mMTI3XShlKXwwO249Y1s5MjEyPj4yXXwwO2FbOTIyOT4+MF09KG9jW2NbKGNbbj4+Ml18MCkrMjg+PjJdJjEyN10obil8MCkmMTtpZigoY1s5MjIwPj4yXXwwKT44KXtvayg5NTQ0KX1uPWNbZz4+Ml18MDtjW2c+PjJdPW4rIC0xO2lmKChufDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9Y1syMTU0XT0xMDgzNjtjWzg2MjQ+PjJdPTEwODU2O2NbODYyMD4+Ml09MDtjWzg2NDg+PjJdPTkxNzY7Y1s4NjQwPj4yXT0wO2NbODY0ND4+Ml09MDtjWzg2Mjg+PjJdPTQwOTg7Y1s4NjM2Pj4yXT0wO2NbODYzMj4+Ml09NjtrPTg2NTZ8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODY1MnwwKTtjWzg2OTY+PjJdPTA7Y1s4NzAwPj4yXT0tMTtjWzIzMDhdPTEwNzI4O1hrKDkyMzZ8MCk7Y1s5MjQwPj4yXT0wO2NbOTI0ND4+Ml09MDtjWzkyNDg+PjJdPTA7Y1s5MjUyPj4yXT0wO2NbOTI1Nj4+Ml09MDtjWzkyNjA+PjJdPTA7Y1syMzA4XT05MzM2O2NbOTI2ND4+Ml09ajtlPWNbOTIzNj4+Ml18MDtmPWUrNHwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMTtpZighKChjWzMzODJdfDApPT0tMSkpe2NbZD4+Ml09MTM1Mjg7Y1tkKzQ+PjJdPTIwODtjW2QrOD4+Ml09MDtjZygxMzUyOCxkKX1nPShjWzEzNTMyPj4yXXwwKSsgLTF8MDtqPWNbZSs4Pj4yXXwwO2Rve2lmKChjW2UrMTI+PjJdfDApLWo+PjI+Pj4wPmc+Pj4wKXtnPWNbaisoZzw8Mik+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfW49Y1tmPj4yXXwwO2NbZj4+Ml09bisgLTE7aWYoKG58MCk9PTApe2xjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKX1jWzkyNjg+PjJdPWc7Y1s5MjcyPj4yXT05MDY0O2FbOTI3Nj4+MF09KG9jW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjEyN10oZyl8MCkmMTtjWzIxNzZdPTEwOTE2O2NbODcwOD4+Ml09MTA5MzY7Y1s4NzMyPj4yXT05MjMyO2NbODcyND4+Ml09MDtjWzg3Mjg+PjJdPTA7Y1s4NzEyPj4yXT00MDk4O2NbODcyMD4+Ml09MDtjWzg3MTY+PjJdPTY7az04NzQwfDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg3MzZ8MCk7Y1s4NzgwPj4yXT0wO2NbODc4ND4+Ml09LTE7Y1syMzIwXT0xMDcyODtYayg5Mjg0fDApO2NbOTI4OD4+Ml09MDtjWzkyOTI+PjJdPTA7Y1s5Mjk2Pj4yXT0wO2NbOTMwMD4+Ml09MDtjWzkzMDQ+PjJdPTA7Y1s5MzA4Pj4yXT0wO2NbMjMyMF09OTMzNjtjWzkzMTI+PjJdPWg7Zj1jWzkyODQ+PjJdfDA7ZT1mKzR8MDtjW2U+PjJdPShjW2U+PjJdfDApKzE7aWYoISgoY1szMzgyXXwwKT09LTEpKXtjW2Q+PjJdPTEzNTI4O2NbZCs0Pj4yXT0yMDg7Y1tkKzg+PjJdPTA7Y2coMTM1MjgsZCl9ZD0oY1sxMzUzMj4+Ml18MCkrIC0xfDA7Zz1jW2YrOD4+Ml18MDtkb3tpZigoY1tmKzEyPj4yXXwwKS1nPj4yPj4+MD5kPj4+MCl7ZD1jW2crKGQ8PDIpPj4yXXwwO2lmKChkfDApPT0wKXticmVha31uPWNbZT4+Ml18MDtjW2U+PjJdPW4rIC0xO2lmKChufDApIT0wKXtjWzkzMTY+PjJdPWQ7Y1s5MzIwPj4yXT05MDcyO2s9Y1tkPj4yXXwwO2s9aysyOHwwO2s9Y1trPj4yXXwwO2s9b2NbayYxMjddKGQpfDA7az1rJjE7YVs5MzI0Pj4wXT1rO2NbMjE5OF09MTA5MTY7Y1s4Nzk2Pj4yXT0xMDkzNjtjWzg4MjA+PjJdPTkyODA7Y1s4ODEyPj4yXT0wO2NbODgxNj4+Ml09MDtjWzg4MDA+PjJdPTQwOTg7Y1s4ODA4Pj4yXT0wO2NbODgwND4+Ml09NjtrPTg4Mjh8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODgyNHwwKTtjWzg4Njg+PjJdPTA7Y1s4ODcyPj4yXT0tMTtrPWNbMjE5OF18MDtrPWsrIC0xMnwwO2s9Y1trPj4yXXwwO2s9aysyNHwwO2s9ODc5MitrfDA7az1jW2s+PjJdfDA7Y1syMjIwXT0xMDkxNjtjWzg4ODQ+PjJdPTEwOTM2O2NbODkwOD4+Ml09aztrPShrfDApPT0wO2s9ayYxO2NbODkwMD4+Ml09aztjWzg5MDQ+PjJdPTA7Y1s4ODg4Pj4yXT00MDk4O2NbODg5Nj4+Ml09MDtjWzg4OTI+PjJdPTY7az04OTE2fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg5MTJ8MCk7Y1s4OTU2Pj4yXT0wO2NbODk2MD4+Ml09LTE7bj1jWzIxNTRdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNzJ8MDtuPTg2MTYrbnwwO2Nbbj4+Ml09ODcwNDtuPWNbMjE5OF18MDtuPW4rIC0xMnwwO249Y1tuPj4yXXwwO249bis0fDA7bj04NzkyK258MDttPWNbbj4+Ml18MDttPW18ODE5MjtjW24+PjJdPW07bj1jWzIxOThdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNzJ8MDtuPTg3OTIrbnwwO2Nbbj4+Ml09ODcwNDtjYygyMTIsODk2OCxwfDApfDA7aT1iO3JldHVybn1sY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZik7Y1s5MzE2Pj4yXT1kO2NbOTMyMD4+Ml09OTA3MjtrPWNbZD4+Ml18MDtrPWsrMjh8MDtrPWNbaz4+Ml18MDtrPW9jW2smMTI3XShkKXwwO2s9ayYxO2FbOTMyND4+MF09aztjWzIxOThdPTEwOTE2O2NbODc5Nj4+Ml09MTA5MzY7Y1s4ODIwPj4yXT05MjgwO2NbODgxMj4+Ml09MDtjWzg4MTY+PjJdPTA7Y1s4ODAwPj4yXT00MDk4O2NbODgwOD4+Ml09MDtjWzg4MDQ+PjJdPTY7az04ODI4fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg4MjR8MCk7Y1s4ODY4Pj4yXT0wO2NbODg3Mj4+Ml09LTE7az1jWzIxOThdfDA7az1rKyAtMTJ8MDtrPWNbaz4+Ml18MDtrPWsrMjR8MDtrPTg3OTIra3wwO2s9Y1trPj4yXXwwO2NbMjIyMF09MTA5MTY7Y1s4ODg0Pj4yXT0xMDkzNjtjWzg5MDg+PjJdPWs7az0oa3wwKT09MDtrPWsmMTtjWzg5MDA+PjJdPWs7Y1s4OTA0Pj4yXT0wO2NbODg4OD4+Ml09NDA5ODtjWzg4OTY+PjJdPTA7Y1s4ODkyPj4yXT02O2s9ODkxNnwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4OTEyfDApO2NbODk1Nj4+Ml09MDtjWzg5NjA+PjJdPS0xO249Y1syMTU0XXwwO249bisgLTEyfDA7bj1jW24+PjJdfDA7bj1uKzcyfDA7bj04NjE2K258MDtjW24+PjJdPTg3MDQ7bj1jWzIxOThdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNHwwO249ODc5MitufDA7bT1jW24+PjJdfDA7bT1tfDgxOTI7Y1tuPj4yXT1tO249Y1syMTk4XXwwO249bisgLTEyfDA7bj1jW24+PjJdfDA7bj1uKzcyfDA7bj04NzkyK258MDtjW24+PjJdPTg3MDQ7Y2MoMjEyLDg5NjgscHwwKXwwO2k9YjtyZXR1cm59fXdoaWxlKDApO249WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtuPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBIZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5MDQ7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWVsc2V7UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufX1mdW5jdGlvbiBJZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5MDQ7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gSmYoYSl7YT1hfDA7cmV0dXJuIGNbYSs0Pj4yXXwwfWZ1bmN0aW9uIEtmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZWxzZXtSYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59fWZ1bmN0aW9uIExmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBNZihhKXthPWF8MDtyZXR1cm4gY1thKzQ+PjJdfDB9ZnVuY3Rpb24gTmYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTA0O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1lbHNle1JiKGF8MCk7dm4oYSk7aT1iO3JldHVybn19ZnVuY3Rpb24gT2YoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO2NbYT4+Ml09ZDtjW2ErND4+Ml09YjtyZXR1cm59ZnVuY3Rpb24gUGYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWU7cWNbY1soY1thPj4yXXwwKSsxMj4+Ml0mMzFdKGYsYSxiKTtpZigoY1tmKzQ+PjJdfDApIT0oY1tkKzQ+PjJdfDApKXthPTA7aT1lO3JldHVybiBhfDB9YT0oY1tmPj4yXXwwKT09KGNbZD4+Ml18MCk7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gUWYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT1pO2lmKChjW2IrND4+Ml18MCkhPShhfDApKXthPTA7aT1lO3JldHVybiBhfDB9YT0oY1tiPj4yXXwwKT09KGR8MCk7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gUmYoYSl7YT1hfDA7cmV0dXJuIDEwMDgwfWZ1bmN0aW9uIFNmKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2Q9aTtlPU5iKGV8MCl8MDtmPUpuKGV8MCl8MDtpZihmPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWlmKGY+Pj4wPDExKXthW2I+PjBdPWY8PDE7aj1iKzF8MDtMbihqfDAsZXwwLGZ8MCl8MDtqPWorZnwwO2Fbaj4+MF09MDtpPWQ7cmV0dXJufWc9ZisxNiYtMTY7aD0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aj11bihoKXwwO2lmKChqfDApIT0wKXtoPTExO2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXtoPTk7YnJlYWt9c2NbaiYzMV0oKX1pZigoaHwwKT09OSl7aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9ZWxzZSBpZigoaHwwKT09MTEpe2NbYis4Pj4yXT1qO2NbYj4+Ml09Z3wxO2NbYis0Pj4yXT1mO0xuKGp8MCxlfDAsZnwwKXwwO2o9aitmfDA7YVtqPj4wXT0wO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIFRmKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBVZihhKXthPWF8MDtyZXR1cm4gMTAxMDR9ZnVuY3Rpb24gVmYoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7ZD1pO2U9TmIoZXwwKXwwO2Y9Sm4oZXwwKXwwO2lmKGY+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9aWYoZj4+PjA8MTEpe2FbYj4+MF09Zjw8MTtqPWIrMXwwO0xuKGp8MCxlfDAsZnwwKXwwO2o9aitmfDA7YVtqPj4wXT0wO2k9ZDtyZXR1cm59Zz1mKzE2Ji0xNjtoPShnfDApPT0wPzE6Zzt3aGlsZSgxKXtqPXVuKGgpfDA7aWYoKGp8MCkhPTApe2g9MTE7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2g9OTticmVha31zY1tqJjMxXSgpfWlmKChofDApPT05KXtqPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX1lbHNlIGlmKChofDApPT0xMSl7Y1tiKzg+PjJdPWo7Y1tiPj4yXT1nfDE7Y1tiKzQ+PjJdPWY7TG4oanwwLGV8MCxmfDApfDA7aj1qK2Z8MDthW2o+PjBdPTA7aT1kO3JldHVybn19ZnVuY3Rpb24gV2YoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Q9aTtpZigoYVsxMDA5Nl18MCk9PTA/KFFhKDEwMDk2KXwwKSE9MDowKXtjWzI1MjJdPTEwMjg4OyRhKDEwMDk2KX1jW2I+PjJdPWU7Y1tiKzQ+PjJdPTEwMDg4O2k9ZDtyZXR1cm59ZnVuY3Rpb24gWGYoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFlmKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO2c9aTtpPWkrNDh8MDtvPWcrMjR8MDtsPWcrMTJ8MDtoPWc7cD1KbihmfDApfDA7aWYocD4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1kb3tpZihwPj4+MDwxMSl7YVtoPj4wXT1wPDwxO209aDtxPWgrMXwwfWVsc2V7bT1wKzE2Ji0xNjtyPShtfDApPT0wPzE6bTt3aGlsZSgxKXtxPXVuKHIpfDA7aWYoKHF8MCkhPTApe2o9MTE7YnJlYWt9cT1jWzU2NjZdfDA7Y1s1NjY2XT1xKzA7aWYoKHF8MCk9PTApe2JyZWFrfXNjW3EmMzFdKCl9aWYoKGp8MCk9PTExKXtjW2grOD4+Ml09cTtjW2g+PjJdPW18MTtjW2grND4+Ml09cDttPWg7YnJlYWt9cj1YYSg0KXwwO2Nbcj4+Ml09MjI2ODA7d2IocnwwLDIyNzI4LDIwNil9fXdoaWxlKDApO0xuKHF8MCxmfDAscHwwKXwwO2FbcStwPj4wXT0wO2lmKChkfDApIT0wKXtwPWFbbT4+MF18MDtpZigocCYxKT09MCl7cD0ocCYyNTUpPj4+MX1lbHNle3A9Y1toKzQ+PjJdfDB9aWYoKHB8MCkhPTApe2pnKGgsMTAxMjgsMil9cWNbY1soY1tlPj4yXXwwKSsyND4+Ml0mMzFdKG8sZSxkKTtmPWFbbz4+MF18MDtpZigoZiYxKT09MCl7cD1vKzF8MDtmPShmJjI1NSk+Pj4xfWVsc2V7cD1jW28rOD4+Ml18MDtmPWNbbys0Pj4yXXwwfWpnKGgscCxmKTtpZighKChhW28+PjBdJjEpPT0wKT8obj1jW28rOD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9fWNbbCswPj4yXT1jW20rMD4+Ml07Y1tsKzQ+PjJdPWNbbSs0Pj4yXTtjW2wrOD4+Ml09Y1ttKzg+PjJdO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2NbYj4+Ml09OTkyODtuPWIrNHwwO2lmKChhW2w+PjBdJjEpPT0wKXtmPWwrMXwwfWVsc2V7Zj1jW2wrOD4+Ml18MH1wPUpuKGZ8MCl8MDtvPXArMTN8MDtvPShvfDApPT0wPzE6bzt3aGlsZSgxKXtxPXVuKG8pfDA7aWYoKHF8MCkhPTApe2JyZWFrfXE9Y1s1NjY2XXwwO2NbNTY2Nl09cSswO2lmKChxfDApPT0wKXtqPTMzO2JyZWFrfXNjW3EmMzFdKCl9aWYoKGp8MCk9PTMzKXtyPVhhKDQpfDA7Y1tyPj4yXT0yMjY4MDt3YihyfDAsMjI3MjgsMjA2KX1jW3ErND4+Ml09cDtjW3E+PjJdPXA7cj1xKzEyfDA7Y1tuPj4yXT1yO2NbcSs4Pj4yXT0wO0xuKHJ8MCxmfDAscCsxfDApfDA7aWYoISgoYVtsPj4wXSYxKT09MCk/KGs9Y1tsKzg+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKChhW20+PjBdJjEpPT0wKXtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn1oPWNbaCs4Pj4yXXwwO2lmKChofDApPT0wKXtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn12bihoKTtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn1mdW5jdGlvbiBaZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIF9mKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiAkZihhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBhZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn0KCgoKZnVuY3Rpb24gYmcoYSl7YT1hfDA7dmFyIGI9MDtiPWk7QmIoYXwwKXwwO2k9YjtyZXR1cm59ZnVuY3Rpb24gY2coYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pOyRiKDEwNTY4KXwwO2lmKChjW2E+PjJdfDApPT0xKXtkb3tHYSgxMDU5MiwxMDU2OCl8MH13aGlsZSgoY1thPj4yXXwwKT09MSl9aWYoKGNbYT4+Ml18MCkhPTApe0NiKDEwNTY4KXwwO2k9ZTtyZXR1cm59Y1thPj4yXT0xO0NiKDEwNTY4KXwwO2c9Yis0fDA7Zj1kW2c+PjBdfGRbZysxPj4wXTw8OHxkW2crMj4+MF08PDE2fGRbZyszPj4wXTw8MjQ7Zz1nKzR8MDtnPWRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNDtiPShjW2I+PjJdfDApKyhnPj4xKXwwO2lmKChnJjF8MCkhPTApe2Y9Y1soY1tiPj4yXXwwKStmPj4yXXwwfWxjW2YmMjU1XShiKTskYigxMDU2OCl8MDtjW2E+PjJdPS0xO0NiKDEwNTY4KXwwO0ViKDEwNTkyKXwwO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZGcoKXt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9WGEoOCl8MDtjW2I+PjJdPTk5MDQ7d2hpbGUoMSl7ZT11bigyNSl8MDtpZigoZXwwKSE9MCl7ZD03O2JyZWFrfWU9Y1s1NjY2XXwwO2NbNTY2Nl09ZSswO2lmKChlfDApPT0wKXticmVha31zY1tlJjMxXSgpfWlmKChkfDApPT03KXtjW2UrND4+Ml09MTI7Y1tlPj4yXT0xMjtmPWUrMTJ8MDtjW2IrND4+Ml09ZjtjW2UrOD4+Ml09MDtmPWYrMHwwO2U9MTA2NDB8MDtkPWYrMTN8MDtkb3thW2Y+PjBdPWFbZT4+MF18MDtmPWYrMXwwO2U9ZSsxfDB9d2hpbGUoKGZ8MCk8KGR8MCkpO2NbYj4+Ml09OTk4NDt3YihifDAsMTAwMjQsMTA0KX1mPVhhKDQpfDA7Y1tmPj4yXT0yMjY4MDt3YihmfDAsMjI3MjgsMjA2KX1mdW5jdGlvbiBlZyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aWYoZT4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1pZihlPj4+MDwxMSl7YVtiPj4wXT1lPDwxO2o9YisxfDA7TG4oanwwLGR8MCxlfDApfDA7aj1qK2V8MDthW2o+PjBdPTA7aT1mO3JldHVybn1nPWUrMTYmLTE2O2g9KGd8MCk9PTA/MTpnO3doaWxlKDEpe2o9dW4oaCl8MDtpZigoanwwKSE9MCl7aD0xMTticmVha31qPWNbNTY2Nl18MDtjWzU2NjZdPWorMDtpZigoanwwKT09MCl7aD05O2JyZWFrfXNjW2omMzFdKCl9aWYoKGh8MCk9PTkpe2o9WGEoNCl8MDtjW2o+PjJdPTIyNjgwO3diKGp8MCwyMjcyOCwyMDYpfWVsc2UgaWYoKGh8MCk9PTExKXtjW2IrOD4+Ml09ajtjW2I+PjJdPWd8MTtjW2IrND4+Ml09ZTtMbihqfDAsZHwwLGV8MCl8MDtqPWorZXwwO2Fbaj4+MF09MDtpPWY7cmV0dXJufX1mdW5jdGlvbiBmZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aWYoISgoYVtiPj4wXSYxKT09MCk/KGU9Y1tiKzg+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWk9ZDtyZXR1cm59ZnVuY3Rpb24gZ2coYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtmPWk7ZT1KbihkfDApfDA7aD1hW2I+PjBdfDA7aWYoKGgmMSk9PTApe2c9MTB9ZWxzZXtnPWNbYj4+Ml18MDtoPWcmMjU1O2c9KGcmLTIpKyAtMXwwfWo9KGgmMSk9PTA7aWYoZz4+PjA8ZT4+PjApe2lmKGope2g9KGgmMjU1KT4+PjF9ZWxzZXtoPWNbYis0Pj4yXXwwfWtnKGIsZyxlLWd8MCxoLDAsaCxlLGQpO2k9ZjtyZXR1cm59aWYoail7Zz1iKzF8MH1lbHNle2c9Y1tiKzg+PjJdfDB9TW4oZ3wwLGR8MCxlfDApfDA7YVtnK2U+PjBdPTA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZTw8MTtpPWY7cmV0dXJufWVsc2V7Y1tiKzQ+PjJdPWU7aT1mO3JldHVybn19ZnVuY3Rpb24gaGcoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpZigoZHwwKT09MCl7aT1lO3JldHVybn1oPWFbYj4+MF18MDtpZigoaCYxKT09MCl7Zz0xMH1lbHNle2g9Y1tiPj4yXXwwO2c9KGgmLTIpKyAtMXwwO2g9aCYyNTV9aWYoKGgmMSk9PTApe2Y9KGgmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKChnLWZ8MCk+Pj4wPGQ+Pj4wKXtsZyhiLGcsZC1nK2Z8MCxmLGYsMCk7aD1hW2I+PjBdfDB9aWYoKGgmMSk9PTApe2c9YisxfDB9ZWxzZXtnPWNbYis4Pj4yXXwwfU5uKGcrZnwwLDAsZHwwKXwwO2Q9ZitkfDA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZDw8MX1lbHNle2NbYis0Pj4yXT1kfWFbZytkPj4wXT0wO2k9ZTtyZXR1cm59ZnVuY3Rpb24gaWcoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZD1pO2g9YVtiPj4wXXwwO2lmKChoJjEpPT0wKXtsPTEwfWVsc2V7aD1jW2I+PjJdfDA7bD0oaCYtMikrIC0xfDA7aD1oJjI1NX1qPShoJjEpPT0wO2lmKGope2Y9KGgmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKGY+Pj4wPDExKXtlPTEwfWVsc2V7ZT0oZisxNiYtMTYpKyAtMXwwfWlmKChlfDApPT0obHwwKSl7aT1kO3JldHVybn1kb3tpZigoZXwwKT09MTApe2s9YisxfDA7Zz1jW2IrOD4+Ml18MDtpZihqKXtMbihrfDAsZ3wwLCgoaCYyNTUpPj4+MSkrMXwwKXwwO2g9aztrPTA7aj1nO2c9Mjd9ZWxzZXtoPWs7az0wO2o9ZztnPTI1fX1lbHNle2s9ZSsxfDA7az0oa3wwKT09MD8xOms7YTpkb3tpZihlPj4+MD5sPj4+MCl7d2hpbGUoMSl7bD11bihrKXwwO2lmKChsfDApIT0wKXticmVhayBhfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXticmVha31zY1tsJjMxXSgpfWw9WGEoNCl8MDtjW2w+PjJdPTIyNjgwO3diKGx8MCwyMjcyOCwyMDYpfWVsc2V7d2hpbGUoMSl7bD11bihrKXwwO2lmKChsfDApIT0wKXticmVhayBhfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXticmVha31zY1tsJjMxXSgpfWw9WGEoNCl8MDtjW2w+PjJdPTIyNjgwO3diKGx8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihqKXtMbihsfDAsYisxfDAsKChoJjI1NSk+Pj4xKSsxfDApfDA7aD1sO2JyZWFrfWVsc2V7aD1sO2s9MTtqPWNbYis4Pj4yXXwwO2c9MjU7YnJlYWt9fX13aGlsZSgwKTtpZigoZ3wwKT09MjUpe0xuKGh8MCxqfDAsKGNbYis0Pj4yXXwwKSsxfDApfDA7Zz0yN31kb3tpZigoZ3wwKT09Mjcpe2lmKChqfDApPT0wKXtpZihrKXticmVha319ZWxzZXt2bihqKTtpZihrKXticmVha319YVtiPj4wXT1mPDwxO2k9ZDtyZXR1cm59fXdoaWxlKDApO2NbYj4+Ml09ZSsxfDE7Y1tiKzQ+PjJdPWY7Y1tiKzg+PjJdPWg7aT1kO3JldHVybn1mdW5jdGlvbiBqZyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aj1hW2I+PjBdfDA7aWYoKGomMSk9PTApe2c9MTB9ZWxzZXtqPWNbYj4+Ml18MDtnPShqJi0yKSsgLTF8MDtqPWomMjU1fWg9KGomMSk9PTA7aWYoaCl7aj0oaiYyNTUpPj4+MX1lbHNle2o9Y1tiKzQ+PjJdfDB9aWYoKGctanwwKT4+PjA8ZT4+PjApe2tnKGIsZyxlLWcranwwLGosaiwwLGUsZCk7aT1mO3JldHVybn1pZigoZXwwKT09MCl7aT1mO3JldHVybn1pZihoKXtnPWIrMXwwfWVsc2V7Zz1jW2IrOD4+Ml18MH1MbihnK2p8MCxkfDAsZXwwKXwwO2U9aitlfDA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZTw8MX1lbHNle2NbYis0Pj4yXT1lfWFbZytlPj4wXT0wO2k9ZjtyZXR1cm59ZnVuY3Rpb24ga2coYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MDtsPWk7aWYoKC0xOC1kfDApPj4+MDxlPj4+MCl7ZGcoKX1pZigoYVtiPj4wXSYxKT09MCl7bT1iKzF8MH1lbHNle209Y1tiKzg+PjJdfDB9aWYoZD4+PjA8MjE0NzQ4MzYyMyl7ZT1lK2R8MDtwPWQ8PDE7ZT1lPj4+MDxwPj4+MD9wOmU7aWYoZT4+PjA8MTEpe2U9MTF9ZWxzZXtlPWUrMTYmLTE2fX1lbHNle2U9LTE3fW89KGV8MCk9PTA/MTplO3doaWxlKDEpe3A9dW4obyl8MDtpZigocHwwKSE9MCl7YnJlYWt9cD1jWzU2NjZdfDA7Y1s1NjY2XT1wKzA7aWYoKHB8MCk9PTApe249MTM7YnJlYWt9c2NbcCYzMV0oKX1pZigobnwwKT09MTMpe3A9WGEoNCl8MDtjW3A+PjJdPTIyNjgwO3diKHB8MCwyMjcyOCwyMDYpfWlmKChnfDApIT0wKXtMbihwfDAsbXwwLGd8MCl8MH1pZigoanwwKSE9MCl7TG4ocCtnfDAsa3wwLGp8MCl8MH1uPWYtaHwwO2lmKChufDApIT0oZ3wwKSl7TG4ocCsoaitnKXwwLG0rKGgrZyl8MCxuLWd8MCl8MH1pZigoZHwwKT09MTB8KG18MCk9PTApe289Yis4fDA7Y1tvPj4yXT1wO289ZXwxO2NbYj4+Ml09bztvPW4ranwwO2U9Yis0fDA7Y1tlPj4yXT1vO3A9cCtvfDA7YVtwPj4wXT0wO2k9bDtyZXR1cm59dm4obSk7bz1iKzh8MDtjW28+PjJdPXA7bz1lfDE7Y1tiPj4yXT1vO289bitqfDA7ZT1iKzR8MDtjW2U+PjJdPW87cD1wK298MDthW3A+PjBdPTA7aT1sO3JldHVybn1mdW5jdGlvbiBsZyhiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTA7bD1pO2lmKCgtMTctZHwwKT4+PjA8ZT4+PjApe2RnKCl9aWYoKGFbYj4+MF0mMSk9PTApe2s9YisxfDB9ZWxzZXtrPWNbYis4Pj4yXXwwfWlmKGQ+Pj4wPDIxNDc0ODM2MjMpe2U9ZStkfDA7bj1kPDwxO2U9ZT4+PjA8bj4+PjA/bjplO2lmKGU+Pj4wPDExKXtlPTExfWVsc2V7ZT1lKzE2Ji0xNn19ZWxzZXtlPS0xN31tPShlfDApPT0wPzE6ZTt3aGlsZSgxKXtuPXVuKG0pfDA7aWYoKG58MCkhPTApe2JyZWFrfW49Y1s1NjY2XXwwO2NbNTY2Nl09biswO2lmKChufDApPT0wKXtqPTEzO2JyZWFrfXNjW24mMzFdKCl9aWYoKGp8MCk9PTEzKXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1pZigoZ3wwKSE9MCl7TG4obnwwLGt8MCxnfDApfDB9aWYoKGZ8MCkhPShnfDApKXtMbihuKyhoK2cpfDAsaytnfDAsZi1nfDApfDB9aWYoKGR8MCk9PTEwfChrfDApPT0wKXttPWIrOHwwO2NbbT4+Ml09bjtuPWV8MTtjW2I+PjJdPW47aT1sO3JldHVybn12bihrKTttPWIrOHwwO2NbbT4+Ml09bjtuPWV8MTtjW2I+PjJdPW47aT1sO3JldHVybn1mdW5jdGlvbiBtZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aWYoISgoYVtiPj4wXSYxKT09MCk/KGU9Y1tiKzg+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWk9ZDtyZXR1cm59ZnVuY3Rpb24gbmcoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtlPWk7Zj1kO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPT0wKXticmVha31lbHNle2Y9Zis0fDB9fWs9ZDtqPWYta3wwO2Y9aj4+MjtsPWFbYj4+MF18MDtpZigobCYxKT09MCl7Zz0xfWVsc2V7bD1jW2I+PjJdfDA7Zz0obCYtMikrIC0xfDA7bD1sJjI1NX1pZighKGc+Pj4wPGY+Pj4wKSl7aWYoKGwmMSk9PTApe2c9Yis0fDB9ZWxzZXtnPWNbYis4Pj4yXXwwfWg9KGZ8MCk9PTA7aWYoZy1rPj4yPj4+MDxmPj4+MCl7aWYoIWgpe2g9Zjtkb3toPWgrIC0xfDA7Y1tnKyhoPDwyKT4+Ml09Y1tkKyhoPDwyKT4+Ml19d2hpbGUoKGh8MCkhPTApfX1lbHNle2lmKCFoKXtoPWc7az1mO3doaWxlKDEpe2s9aysgLTF8MDtjW2g+PjJdPWNbZD4+Ml07aWYoKGt8MCk9PTApe2JyZWFrfWVsc2V7ZD1kKzR8MDtoPWgrNHwwfX19fWNbZysoZjw8Mik+PjJdPTA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09aj4+PjE7aT1lO3JldHVybn1lbHNle2NbYis0Pj4yXT1mO2k9ZTtyZXR1cm59fWlmKCgxMDczNzQxODA2LWd8MCk+Pj4wPChmLWd8MCk+Pj4wKXtkZygpfWlmKChsJjEpPT0wKXtqPWIrNHwwfWVsc2V7aj1jW2IrOD4+Ml18MH1pZihnPj4+MDw1MzY4NzA4ODcpe2s9Zzw8MTtrPWY+Pj4wPGs+Pj4wP2s6ZjtpZihrPj4+MDwyKXtrPTJ9ZWxzZXtrPWsrNCYtNH19ZWxzZXtrPTEwNzM3NDE4MDd9bT1rPDwyO209KG18MCk9PTA/MTptO3doaWxlKDEpe2w9dW4obSl8MDtpZigobHwwKSE9MCl7YnJlYWt9bD1jWzU2NjZdfDA7Y1s1NjY2XT1sKzA7aWYoKGx8MCk9PTApe2g9Mjk7YnJlYWt9c2NbbCYzMV0oKX1pZigoaHwwKT09Mjkpe209WGEoNCl8MDtjW20+PjJdPTIyNjgwO3diKG18MCwyMjcyOCwyMDYpfWlmKChmfDApIT0wKXtoPWY7bT1sO3doaWxlKDEpe2g9aCsgLTF8MDtjW20+PjJdPWNbZD4+Ml07aWYoKGh8MCk9PTApe2JyZWFrfWVsc2V7ZD1kKzR8MDttPW0rNHwwfX19aWYoISgoZ3wwKT09MXwoanwwKT09MCkpe3ZuKGopfWNbYis4Pj4yXT1sO2NbYj4+Ml09a3wxO2NbYis0Pj4yXT1mO2NbbCsoZjw8Mik+PjJdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBvZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2Q9aTtnPWFbYj4+MF18MDtpZigoZyYxKT09MCl7az0xfWVsc2V7Zz1jW2I+PjJdfDA7az0oZyYtMikrIC0xfDA7Zz1nJjI1NX1oPShnJjEpPT0wO2lmKGgpe2Y9KGcmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKGY+Pj4wPDIpe2U9MX1lbHNle2U9KGYrNCYtNCkrIC0xfDB9aWYoKGV8MCk9PShrfDApKXtpPWQ7cmV0dXJufWRve2lmKChlfDApPT0xKXtuPWIrNHwwO2w9Y1tiKzg+PjJdfDA7aWYoaCl7aj0wO209MTtoPTI2fWVsc2V7Zz1uO2o9MDttPTE7aD0yNX19ZWxzZXtqPShlPDwyKSs0fDA7aj0oanwwKT09MD8xOmo7YTpkb3tpZihlPj4+MD5rPj4+MCl7d2hpbGUoMSl7bj11bihqKXwwO2lmKChufDApIT0wKXticmVhayBhfWs9Y1s1NjY2XXwwO2NbNTY2Nl09ayswO2lmKChrfDApPT0wKXticmVha31zY1trJjMxXSgpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpfWVsc2V7d2hpbGUoMSl7bj11bihqKXwwO2lmKChufDApIT0wKXticmVhayBhfWs9Y1s1NjY2XXwwO2NbNTY2Nl09ayswO2lmKChrfDApPT0wKXticmVha31zY1trJjMxXSgpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihoKXtqPTE7bD1iKzR8MDttPTA7aD0yNjticmVha31lbHNle2c9bjtqPTE7bD1jW2IrOD4+Ml18MDttPTE7aD0yNTticmVha319fXdoaWxlKDApO2lmKChofDApPT0yNSl7az1jW2IrND4+Ml18MH1lbHNlIGlmKChofDApPT0yNil7az0oZyYyNTUpPj4+MTtnPW59az1rKzF8MDtpZigoa3wwKSE9MCl7bj1sO2g9Zzt3aGlsZSgxKXtrPWsrIC0xfDA7Y1toPj4yXT1jW24+PjJdO2lmKChrfDApPT0wKXticmVha31lbHNle249bis0fDA7aD1oKzR8MH19fWlmKCEobV4xfChsfDApPT0wKSl7dm4obCl9aWYoail7Y1tiPj4yXT1lKzF8MTtjW2IrND4+Ml09ZjtjW2IrOD4+Ml09ZztpPWQ7cmV0dXJufWVsc2V7YVtiPj4wXT1mPDwxO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIHBnKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtrPWk7aWYoKDEwNzM3NDE4MDctZHwwKT4+PjA8ZT4+PjApe2RnKCl9aWYoKGFbYj4+MF0mMSk9PTApe2w9Yis0fDB9ZWxzZXtsPWNbYis4Pj4yXXwwfWlmKGQ+Pj4wPDUzNjg3MDg4Nyl7ZT1lK2R8MDtwPWQ8PDE7ZT1lPj4+MDxwPj4+MD9wOmU7aWYoZT4+PjA8Mil7ZT0yfWVsc2V7ZT1lKzQmLTR9fWVsc2V7ZT0xMDczNzQxODA3fW89ZTw8MjtvPShvfDApPT0wPzE6bzt3aGlsZSgxKXttPXVuKG8pfDA7aWYoKG18MCkhPTApe2JyZWFrfW09Y1s1NjY2XXwwO2NbNTY2Nl09bSswO2lmKChtfDApPT0wKXtuPTEzO2JyZWFrfXNjW20mMzFdKCl9aWYoKG58MCk9PTEzKXtwPVhhKDQpfDA7Y1twPj4yXT0yMjY4MDt3YihwfDAsMjI3MjgsMjA2KX1pZigoZ3wwKSE9MCl7bz1nO249bDtwPW07d2hpbGUoMSl7bz1vKyAtMXwwO2NbcD4+Ml09Y1tuPj4yXTtpZigob3wwKT09MCl7YnJlYWt9ZWxzZXtuPW4rNHwwO3A9cCs0fDB9fX1mPWYtaHwwO2lmKChmfDApIT0oZ3wwKSl7Zj1mLWd8MDtoPWwrKGgrZzw8Mil8MDtnPW0rKGorZzw8Mil8MDt3aGlsZSgxKXtmPWYrIC0xfDA7Y1tnPj4yXT1jW2g+PjJdO2lmKChmfDApPT0wKXticmVha31lbHNle2g9aCs0fDA7Zz1nKzR8MH19fWlmKChkfDApPT0xfChsfDApPT0wKXtwPWIrOHwwO2NbcD4+Ml09bTtwPWV8MTtjW2I+PjJdPXA7aT1rO3JldHVybn12bihsKTtwPWIrOHwwO2NbcD4+Ml09bTtwPWV8MTtjW2I+PjJdPXA7aT1rO3JldHVybn1mdW5jdGlvbiBxZyhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT0oY1tiKzI0Pj4yXXwwKT09MDtpZihlKXtjW2IrMTY+PjJdPWR8MX1lbHNle2NbYisxNj4+Ml09ZH1pZigoKGUmMXxkKSZjW2IrMjA+PjJdfDApPT0wKXtyZXR1cm59ZD1YYSgxNil8MDtpZigoYVsxMTAwOF18MCk9PTA/KFFhKDExMDA4KXwwKSE9MDowKXtjWzI3NTBdPTExNzg0OyRhKDExMDA4KX1ZZihkLDEsMTFlMywxMTA1Nik7Y1tkPj4yXT0xMTAyNDt3YihkfDAsMTExMDQsMTMxKX1mdW5jdGlvbiByZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1pO2NbYT4+Ml09MTEwNDg7Zj1jW2ErNDA+PjJdfDA7Yj1hKzMyfDA7ZD1hKzM2fDA7aWYoKGZ8MCkhPTApe2Rve2Y9ZisgLTF8MDtxY1tjWyhjW2I+PjJdfDApKyhmPDwyKT4+Ml0mMzFdKDAsYSxjWyhjW2Q+PjJdfDApKyhmPDwyKT4+Ml18MCl9d2hpbGUoKGZ8MCkhPTApfWY9Y1thKzI4Pj4yXXwwO2g9Zis0fDA7Zz1jW2g+PjJdfDA7Y1toPj4yXT1nKyAtMTtpZigoZ3wwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfXZuKGNbYj4+Ml18MCk7dm4oY1tkPj4yXXwwKTt2bihjW2ErNDg+PjJdfDApO3ZuKGNbYSs2MD4+Ml18MCk7aT1lO3JldHVybn1mdW5jdGlvbiBzZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTEwNjY0O2Q9Y1thKzQ+PjJdfDA7Zj1kKzR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlfDApIT0wKXt2bihhKTtpPWI7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHRnKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7Y1thPj4yXT0xMDY2NDthPWNbYSs0Pj4yXXwwO2U9YSs0fDA7ZD1jW2U+PjJdfDA7Y1tlPj4yXT1kKyAtMTtpZigoZHwwKSE9MCl7aT1iO3JldHVybn1sY1tjWyhjW2E+PjJdfDApKzg+PjJdJjI1NV0oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB1ZyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybn1mdW5jdGlvbiB2ZyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiB3ZyhhLGIsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7Zz1hO2NbZz4+Ml09MDtjW2crND4+Ml09MDtnPWErOHwwO2NbZz4+Ml09LTE7Y1tnKzQ+PjJdPS0xO3JldHVybn1mdW5jdGlvbiB4ZyhhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtlPWE7Y1tlPj4yXT0wO2NbZSs0Pj4yXT0wO2U9YSs4fDA7Y1tlPj4yXT0tMTtjW2UrND4+Ml09LTE7cmV0dXJufWZ1bmN0aW9uIHlnKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIHpnKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIEFnKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtmPWk7aWYoKGV8MCk8PTApe2s9MDtpPWY7cmV0dXJuIGt8MH1nPWIrMTJ8MDtoPWIrMTZ8MDtqPTA7d2hpbGUoMSl7az1jW2c+PjJdfDA7aWYoaz4+PjA8KGNbaD4+Ml18MCk+Pj4wKXtjW2c+PjJdPWsrMTtrPWFbaz4+MF18MH1lbHNle2s9b2NbY1soY1tiPj4yXXwwKSs0MD4+Ml0mMTI3XShiKXwwO2lmKChrfDApPT0tMSl7ZT04O2JyZWFrfWs9ayYyNTV9YVtkPj4wXT1rO2o9aisxfDA7aWYoKGp8MCk8KGV8MCkpe2Q9ZCsxfDB9ZWxzZXtlPTg7YnJlYWt9fWlmKChlfDApPT04KXtpPWY7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBCZyhhKXthPWF8MDtyZXR1cm4tMX1mdW5jdGlvbiBDZyhhKXthPWF8MDt2YXIgYj0wLGU9MDtiPWk7aWYoKG9jW2NbKGNbYT4+Ml18MCkrMzY+PjJdJjEyN10oYSl8MCk9PS0xKXthPS0xO2k9YjtyZXR1cm4gYXwwfWU9YSsxMnwwO2E9Y1tlPj4yXXwwO2NbZT4+Ml09YSsxO2E9ZFthPj4wXXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIERnKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuLTF9ZnVuY3Rpb24gRWcoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtnPWk7aWYoKGZ8MCk8PTApe2w9MDtpPWc7cmV0dXJuIGx8MH1qPWIrMjR8MDtoPWIrMjh8MDtrPTA7d2hpbGUoMSl7bD1jW2o+PjJdfDA7aWYoIShsPj4+MDwoY1toPj4yXXwwKT4+PjApKXtpZigoeGNbY1soY1tiPj4yXXwwKSs1Mj4+Ml0mNjNdKGIsZFtlPj4wXXwwKXwwKT09LTEpe2g9NzticmVha319ZWxzZXttPWFbZT4+MF18MDtjW2o+PjJdPWwrMTthW2w+PjBdPW19az1rKzF8MDtpZigoa3wwKTwoZnwwKSl7ZT1lKzF8MH1lbHNle2g9NzticmVha319aWYoKGh8MCk9PTcpe2k9ZztyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIEZnKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuLTF9ZnVuY3Rpb24gR2coYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT0xMDcyODtkPWNbYSs0Pj4yXXwwO2Y9ZCs0fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZXwwKSE9MCl7dm4oYSk7aT1iO3JldHVybn1sY1tjWyhjW2Q+PjJdfDApKzg+PjJdJjI1NV0oZCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBIZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7YT1jW2ErND4+Ml18MDtlPWErNHwwO2Q9Y1tlPj4yXXwwO2NbZT4+Ml09ZCsgLTE7aWYoKGR8MCkhPTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gSWcoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm59ZnVuY3Rpb24gSmcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBhfDB9ZnVuY3Rpb24gS2coYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2c9YTtjW2c+PjJdPTA7Y1tnKzQ+PjJdPTA7Zz1hKzh8MDtjW2c+PjJdPS0xO2NbZys0Pj4yXT0tMTtyZXR1cm59ZnVuY3Rpb24gTGcoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7ZT1hO2NbZT4+Ml09MDtjW2UrND4+Ml09MDtlPWErOHwwO2NbZT4+Ml09LTE7Y1tlKzQ+PjJdPS0xO3JldHVybn1mdW5jdGlvbiBNZyhhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBOZyhhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBPZyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2lmKChkfDApPD0wKXtqPTA7aT1lO3JldHVybiBqfDB9Zz1hKzEyfDA7Zj1hKzE2fDA7aD0wO3doaWxlKDEpe2o9Y1tnPj4yXXwwO2lmKCEoaj4+PjA8KGNbZj4+Ml18MCk+Pj4wKSl7aj1vY1tjWyhjW2E+PjJdfDApKzQwPj4yXSYxMjddKGEpfDA7aWYoKGp8MCk9PS0xKXthPTg7YnJlYWt9fWVsc2V7Y1tnPj4yXT1qKzQ7aj1jW2o+PjJdfDB9Y1tiPj4yXT1qO2g9aCsxfDA7aWYoKGh8MCk+PShkfDApKXthPTg7YnJlYWt9Yj1iKzR8MH1pZigoYXwwKT09OCl7aT1lO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gUGcoYSl7YT1hfDA7cmV0dXJuLTF9ZnVuY3Rpb24gUWcoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2lmKChvY1tjWyhjW2E+PjJdfDApKzM2Pj4yXSYxMjddKGEpfDApPT0tMSl7YT0tMTtpPWI7cmV0dXJuIGF8MH1kPWErMTJ8MDthPWNbZD4+Ml18MDtjW2Q+PjJdPWErNDthPWNbYT4+Ml18MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBSZyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybi0xfWZ1bmN0aW9uIFNnKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2lmKChkfDApPD0wKXtqPTA7aT1lO3JldHVybiBqfDB9Zz1hKzI0fDA7Zj1hKzI4fDA7aD0wO3doaWxlKDEpe2o9Y1tnPj4yXXwwO2lmKCEoaj4+PjA8KGNbZj4+Ml18MCk+Pj4wKSl7aWYoKHhjW2NbKGNbYT4+Ml18MCkrNTI+PjJdJjYzXShhLGNbYj4+Ml18MCl8MCk9PS0xKXtmPTg7YnJlYWt9fWVsc2V7az1jW2I+PjJdfDA7Y1tnPj4yXT1qKzQ7Y1tqPj4yXT1rfWg9aCsxfDA7aWYoKGh8MCk+PShkfDApKXtmPTg7YnJlYWt9Yj1iKzR8MH1pZigoZnwwKT09OCl7aT1lO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gVGcoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4tMX1mdW5jdGlvbiBVZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBWZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBXZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs4KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFhnKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzgpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gWWcoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7ZT1kO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2IrKGYrMjQpPj4yXXwwKT09MCl7aT1kO3JldHVybn1hW2U+PjBdPTA7Y1tlKzQ+PjJdPWI7aWYoKGNbYisoZisxNik+PjJdfDApPT0wKXtnPWNbYisoZis3Mik+PjJdfDA7aWYoKGd8MCkhPTApe1lnKGcpO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZT4+MF09MTtnPWNbYisoZisyNCk+PjJdfDA7aWYoKG9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MCk9PS0xKXtnPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK2d8MCxjW2IrKGcrMTYpPj4yXXwxKX19Z2goZSk7aT1kO3JldHVybn1mdW5jdGlvbiBaZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBfZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aT1iO3JldHVybn1mdW5jdGlvbiAkZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs4KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGFoKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzgpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gYmgoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7ZT1kO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2IrKGYrMjQpPj4yXXwwKT09MCl7aT1kO3JldHVybn1hW2U+PjBdPTA7Y1tlKzQ+PjJdPWI7aWYoKGNbYisoZisxNik+PjJdfDApPT0wKXtnPWNbYisoZis3Mik+PjJdfDA7aWYoKGd8MCkhPTApe2JoKGcpO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZT4+MF09MTtnPWNbYisoZisyNCk+PjJdfDA7aWYoKG9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MCk9PS0xKXtnPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK2d8MCxjW2IrKGcrMTYpPj4yXXwxKX19cWgoZSk7aT1kO3JldHVybn1mdW5jdGlvbiBjaChhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzR8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBkaChhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzR8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBlaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs0KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGZoKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzQpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gZ2goYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTthPWErNHwwO2Q9Y1thPj4yXXwwO2U9Y1soY1tkPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2QrKGUrMjQpPj4yXXwwKT09MCl7aT1iO3JldHVybn1pZigoY1tkKyhlKzE2KT4+Ml18MCkhPTApe2k9YjtyZXR1cm59aWYoKGNbZCsoZSs0KT4+Ml0mODE5MnwwKT09MCl7aT1iO3JldHVybn1pZihZYSgpfDApe2k9YjtyZXR1cm59ZT1jW2E+PjJdfDA7ZT1jW2UrKChjWyhjW2U+PjJdfDApKyAtMTI+PjJdfDApKzI0KT4+Ml18MDtpZighKChvY1tjWyhjW2U+PjJdfDApKzI0Pj4yXSYxMjddKGUpfDApPT0tMSkpe2k9YjtyZXR1cm59ZD1jW2E+PjJdfDA7ZT1jWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDA7cWcoZCtlfDAsY1tkKyhlKzE2KT4+Ml18MSk7aT1iO3JldHVybn1mdW5jdGlvbiBoaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2g9aTtpPWkrMzJ8MDtrPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG4rMTYpPj4yXXwwKT09MCl7bT1jW2IrKG4rNzIpPj4yXXwwO2lmKChtfDApIT0wKXtZZyhtKTtuPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7bz1jW2IrKG4rMjgpPj4yXXwwO3A9bys0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1trPj4yXT0xMjE5MjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEyMTkyLGspfW49KGNbMTIxOTY+PjJdfDApKyAtMXwwO209Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktbT4+Mj4+PjA+bj4+PjA/KGU9Y1ttKyhuPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfXE9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO209Y1tiKyhxKzI0KT4+Ml18MDtuPWIrcXwwO289YisocSs3Nil8MDtwPWNbbz4+Ml18MDtkb3tpZigocHwwKT09LTEpe3E9Y1tiKyhxKzI4KT4+Ml18MDtwPXErNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NTY7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ1NixrKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXM+PjI+Pj4wPnI+Pj4wPyhsPWNbcysocjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2w9eGNbY1soY1tsPj4yXXwwKSsyOD4+Ml0mNjNdKGwsMzIpfDA7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfXA9bDw8MjQ+PjI0O2Nbbz4+Ml09cDticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7cj1wJjI1NTtzPWQmNjU1MzU7cT1jWyhjW2U+PjJdfDApKzI0Pj4yXXwwO2Nbaj4+Ml09bTtjW2srMD4+Ml09Y1tqKzA+PjJdO3djW3EmNjNdKGYsZSxrLG4scixzKTtpZigoY1tmPj4yXXwwKSE9MCl7YnJlYWt9cz1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7cWcoYitzfDAsY1tiKyhzKzE2KT4+Ml18NSk7YnJlYWt9cz1YYSg0KXwwO2Nbcz4+Ml09MjEzMDQ7d2Ioc3wwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2doKGcpO2k9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIGloKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7aD1pO2k9aSszMnwwO2s9aDtqPWgrMjR8MDtnPWgrMTZ8MDtmPWgrMTJ8MDthW2c+PjBdPTA7Y1tnKzQ+PjJdPWI7bj1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7ZG97aWYoKGNbYisobisxNik+PjJdfDApPT0wKXttPWNbYisobis3Mik+PjJdfDA7aWYoKG18MCkhPTApe1lnKG0pO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZz4+MF09MTtvPWNbYisobisyOCk+PjJdfDA7cD1vKzR8MDtjW3A+PjJdPShjW3A+PjJdfDApKzE7aWYoISgoY1szMDQ4XXwwKT09LTEpKXtjW2s+PjJdPTEyMTkyO2Nbays0Pj4yXT0yMDg7Y1trKzg+PjJdPTA7Y2coMTIxOTIsayl9bj0oY1sxMjE5Nj4+Ml18MCkrIC0xfDA7bT1jW28rOD4+Ml18MDtpZigoY1tvKzEyPj4yXXwwKS1tPj4yPj4+MD5uPj4+MD8oZT1jW20rKG48PDIpPj4yXXwwLChlfDApIT0wKTowKXtzPWNbcD4+Ml18MDtjW3A+PjJdPXMrIC0xO2lmKChzfDApPT0wKXtsY1tjWyhjW28+PjJdfDApKzg+PjJdJjI1NV0obyl9cT1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7bT1jW2IrKHErMjQpPj4yXXwwO249YitxfDA7bz1iKyhxKzc2KXwwO3A9Y1tvPj4yXXwwO2Rve2lmKChwfDApPT0tMSl7cT1jW2IrKHErMjgpPj4yXXwwO3A9cSs0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1trPj4yXT0xMzQ1NjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEzNDU2LGspfXI9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3M9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcz4+Mj4+PjA+cj4+PjA/KGw9Y1tzKyhyPDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7bD14Y1tjWyhjW2w+PjJdfDApKzI4Pj4yXSY2M10obCwzMil8MDtzPWNbcD4+Ml18MDtjW3A+PjJdPXMrIC0xO2lmKChzfDApPT0wKXtsY1tjWyhjW3E+PjJdfDApKzg+PjJdJjI1NV0ocSl9cD1sPDwyND4+MjQ7Y1tvPj4yXT1wO2JyZWFrfXM9WGEoNCl8MDtjW3M+PjJdPTIxMzA0O3diKHN8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtzPXAmMjU1O3I9Y1soY1tlPj4yXXwwKSsxNj4+Ml18MDtjW2o+PjJdPW07Y1trKzA+PjJdPWNbaiswPj4yXTt3Y1tyJjYzXShmLGUsayxuLHMsZCk7aWYoKGNbZj4+Ml18MCkhPTApe2JyZWFrfXM9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO3FnKGIrc3wwLGNbYisocysxNik+PjJdfDUpO2JyZWFrfXM9WGEoNCl8MDtjW3M+PjJdPTIxMzA0O3diKHN8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtnaChnKTtpPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBqaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2g9aTtpPWkrMzJ8MDtrPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG4rMTYpPj4yXXwwKT09MCl7bT1jW2IrKG4rNzIpPj4yXXwwO2lmKChtfDApIT0wKXtZZyhtKTtuPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7bz1jW2IrKG4rMjgpPj4yXXwwO3A9bys0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1trPj4yXT0xMjE5MjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEyMTkyLGspfW49KGNbMTIxOTY+PjJdfDApKyAtMXwwO209Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktbT4+Mj4+PjA+bj4+PjA/KGU9Y1ttKyhuPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfXE9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO209Y1tiKyhxKzI0KT4+Ml18MDtuPWIrcXwwO289YisocSs3Nil8MDtwPWNbbz4+Ml18MDtkb3tpZigocHwwKT09LTEpe3E9Y1tiKyhxKzI4KT4+Ml18MDtwPXErNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NTY7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ1NixrKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXM+PjI+Pj4wPnI+Pj4wPyhsPWNbcysocjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2w9eGNbY1soY1tsPj4yXXwwKSsyOD4+Ml0mNjNdKGwsMzIpfDA7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfXA9bDw8MjQ+PjI0O2Nbbz4+Ml09cDticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7cz1wJjI1NTtyPWNbKGNbZT4+Ml18MCkrMjQ+PjJdfDA7Y1tqPj4yXT1tO2NbayswPj4yXT1jW2orMD4+Ml07d2NbciY2M10oZixlLGssbixzLGQpO2lmKChjW2Y+PjJdfDApIT0wKXticmVha31zPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK3N8MCxjW2IrKHMrMTYpPj4yXXw1KTticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Z2goZyk7aT1oO3JldHVybiBifDB9ZnVuY3Rpb24ga2goYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO2g9aTtpPWkrMzJ8MDtsPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO289Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG8rMTYpPj4yXXwwKT09MCl7bj1jW2IrKG8rNzIpPj4yXXwwO2lmKChufDApIT0wKXtZZyhuKTtvPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7cD1jW2IrKG8rMjgpPj4yXXwwO3E9cCs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1tsPj4yXT0xMjE5MjtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEyMTkyLGwpfW89KGNbMTIxOTY+PjJdfDApKyAtMXwwO249Y1twKzg+PjJdfDA7aWYoKGNbcCsxMj4+Ml18MCktbj4+Mj4+PjA+bz4+PjA/KGs9Y1tuKyhvPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7dD1jW3E+PjJdfDA7Y1txPj4yXT10KyAtMTtpZigodHwwKT09MCl7bGNbY1soY1twPj4yXXwwKSs4Pj4yXSYyNTVdKHApfXI9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO249Y1tiKyhyKzI0KT4+Ml18MDtvPWIrcnwwO3A9Yisocis3Nil8MDtxPWNbcD4+Ml18MDtkb3tpZigocXwwKT09LTEpe3I9Y1tiKyhyKzI4KT4+Ml18MDtxPXIrNHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1zPShjWzEzNDYwPj4yXXwwKSsgLTF8MDt0PWNbcis4Pj4yXXwwO2lmKChjW3IrMTI+PjJdfDApLXQ+PjI+Pj4wPnM+Pj4wPyhtPWNbdCsoczw8Mik+PjJdfDAsKG18MCkhPTApOjApe209eGNbY1soY1ttPj4yXXwwKSsyOD4+Ml0mNjNdKG0sMzIpfDA7dD1jW3E+PjJdfDA7Y1txPj4yXT10KyAtMTtpZigodHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfXE9bTw8MjQ+PjI0O2NbcD4+Ml09cTticmVha310PVhhKDQpfDA7Y1t0Pj4yXT0yMTMwNDt3Yih0fDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dD1xJjI1NTtzPWNbKGNbaz4+Ml18MCkrMjg+PjJdfDA7Y1tqPj4yXT1uO2NbbCswPj4yXT1jW2orMD4+Ml07aWNbcyY2M10oZixrLGwsbyx0LGQsZSk7aWYoKGNbZj4+Ml18MCkhPTApe2JyZWFrfXQ9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO3FnKGIrdHwwLGNbYisodCsxNik+PjJdfDUpO2JyZWFrfXQ9WGEoNCl8MDtjW3Q+PjJdPTIxMzA0O3diKHR8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtnaChnKTtpPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBsaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrMTZ8MDtmPWU7YVtmPj4wXT0wO2NbZis0Pj4yXT1iO2g9Y1tiPj4yXXwwO2c9Y1toKyAtMTI+PjJdfDA7ZG97aWYoKGNbYisoZysxNik+PjJdfDApPT0wKXtqPWNbYisoZys3Mik+PjJdfDA7aWYoKGp8MCkhPTApe1lnKGopO2c9Y1tiPj4yXXwwO2g9ZztnPWNbZysgLTEyPj4yXXwwfWFbZj4+MF09MTtnPWNbYisoZysyNCk+PjJdfDA7aWYoKGd8MCkhPTApe2o9ZysyNHwwO2g9Y1tqPj4yXXwwO2lmKChofDApIT0oY1tnKzI4Pj4yXXwwKSl7Y1tqPj4yXT1oKzE7YVtoPj4wXT1kO2JyZWFrfWlmKCEoKHhjW2NbKGNbZz4+Ml18MCkrNTI+PjJdJjYzXShnLGQmMjU1KXwwKT09LTEpKXticmVha31oPWNbYj4+Ml18MH1qPWNbaCsgLTEyPj4yXXwwO3FnKGIranwwLGNbYisoaisxNik+PjJdfDEpfX13aGlsZSgwKTtnaChmKTtpPWU7cmV0dXJufWZ1bmN0aW9uIG1oKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErNHwwKTtpZigoYXwwKT09MCl7aT1iO3JldHVybn12bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG5oKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErNHwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG9oKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7ZT1jWyhjW2E+PjJdfDApKyAtMTI+PjJdfDA7ZD1hK2V8MDtyZyhhKyhlKzQpfDApO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gcGgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7cmcoYSsoKGNbKGNbYT4+Ml18MCkrIC0xMj4+Ml18MCkrNCl8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBxaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2E9YSs0fDA7ZD1jW2E+PjJdfDA7ZT1jWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDA7aWYoKGNbZCsoZSsyNCk+PjJdfDApPT0wKXtpPWI7cmV0dXJufWlmKChjW2QrKGUrMTYpPj4yXXwwKSE9MCl7aT1iO3JldHVybn1pZigoY1tkKyhlKzQpPj4yXSY4MTkyfDApPT0wKXtpPWI7cmV0dXJufWlmKFlhKCl8MCl7aT1iO3JldHVybn1lPWNbYT4+Ml18MDtlPWNbZSsoKGNbKGNbZT4+Ml18MCkrIC0xMj4+Ml18MCkrMjQpPj4yXXwwO2lmKCEoKG9jW2NbKGNbZT4+Ml18MCkrMjQ+PjJdJjEyN10oZSl8MCk9PS0xKSl7aT1iO3JldHVybn1kPWNbYT4+Ml18MDtlPWNbKGNbZD4+Ml18MCkrIC0xMj4+Ml18MDtxZyhkK2V8MCxjW2QrKGUrMTYpPj4yXXwxKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHJoKGEpe2E9YXwwO3JldHVybiAxMDk0NH1mdW5jdGlvbiBzaChiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7ZD1pO2lmKChlfDApPT0xKXtlZyhiLDEwOTYwLDM1KTtpPWQ7cmV0dXJufWc9TmIoZXwwKXwwO2U9Sm4oZ3wwKXwwO2lmKGU+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoZT4+PjA8MTEpe2FbYj4+MF09ZTw8MTtrPWIrMXwwfWVsc2V7aD1lKzE2Ji0xNjtqPShofDApPT0wPzE6aDt3aGlsZSgxKXtrPXVuKGopfDA7aWYoKGt8MCkhPTApe2Y9MTI7YnJlYWt9az1jWzU2NjZdfDA7Y1s1NjY2XT1rKzA7aWYoKGt8MCk9PTApe2JyZWFrfXNjW2smMzFdKCl9aWYoKGZ8MCk9PTEyKXtjW2IrOD4+Ml09aztjW2I+PjJdPWh8MTtjW2IrND4+Ml09ZTticmVha31rPVhhKDQpfDA7Y1trPj4yXT0yMjY4MDt3YihrfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7TG4oa3wwLGd8MCxlfDApfDA7YVtrK2U+PjBdPTA7aT1kO3JldHVybn1mdW5jdGlvbiB0aChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gdWgoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB2aChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gd2goYSl7YT1hfDA7dmFyIGI9MDtiPWk7cmcoYSk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geWgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gemgoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEFoKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBCaChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MDtiPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2c9Nn1lbHNle3doaWxlKDEpe2lmKChjfDApPT0oZHwwKSl7ZD0tMTticmVhayBhfWg9YVtjPj4wXXwwO2o9YVtlPj4wXXwwO2lmKGg8PDI0Pj4yNDxqPDwyND4+MjQpe2Q9LTE7YnJlYWsgYX1pZihqPDwyND4+MjQ8aDw8MjQ+PjI0KXtkPTE7YnJlYWsgYX1jPWMrMXwwO2U9ZSsxfDA7aWYoKGV8MCk9PShmfDApKXtnPTY7YnJlYWt9fX19d2hpbGUoMCk7aWYoKGd8MCk9PTYpe2Q9KGN8MCkhPShkfDApJjF9aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gQ2goYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2Q9aTtnPWU7aj1mLWd8MDtpZihqPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWRve2lmKGo+Pj4wPDExKXthW2I+PjBdPWo8PDE7bT1iKzF8MH1lbHNle2s9aisxNiYtMTY7bD0oa3wwKT09MD8xOms7d2hpbGUoMSl7bT11bihsKXwwO2lmKChtfDApIT0wKXtoPTExO2JyZWFrfW09Y1s1NjY2XXwwO2NbNTY2Nl09bSswO2lmKChtfDApPT0wKXticmVha31zY1ttJjMxXSgpfWlmKChofDApPT0xMSl7Y1tiKzg+PjJdPW07Y1tiPj4yXT1rfDE7Y1tiKzQ+PjJdPWo7YnJlYWt9bT1YYSg0KXwwO2NbbT4+Ml09MjI2ODA7d2IobXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChlfDApPT0oZnwwKSl7YVttPj4wXT0wO2k9ZDtyZXR1cm59ZWxzZXtiPW19d2hpbGUoMSl7YVtiPj4wXT1hW2U+PjBdfDA7ZT1lKzF8MDtpZigoZXwwKT09KGZ8MCkpe2JyZWFrfWVsc2V7Yj1iKzF8MH19bT1tKyhmKygwLWcpKXwwO2FbbT4+MF09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIERoKGIsYyxkKXtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MDtiPWk7aWYoKGN8MCk9PShkfDApKXtlPTA7aT1iO3JldHVybiBlfDB9ZWxzZXtlPTB9ZG97ZT0oYVtjPj4wXXwwKSsoZTw8NCl8MDtmPWUmLTI2ODQzNTQ1NjtlPShmPj4+MjR8ZileZTtjPWMrMXwwfXdoaWxlKChjfDApIT0oZHwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gRWgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRmgoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEdoKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wO2E9aTthOmRve2lmKChlfDApPT0oZnwwKSl7Zz02fWVsc2V7d2hpbGUoMSl7aWYoKGJ8MCk9PShkfDApKXtkPS0xO2JyZWFrIGF9aD1jW2I+PjJdfDA7aj1jW2U+PjJdfDA7aWYoKGh8MCk8KGp8MCkpe2Q9LTE7YnJlYWsgYX1pZigoanwwKTwoaHwwKSl7ZD0xO2JyZWFrIGF9Yj1iKzR8MDtlPWUrNHwwO2lmKChlfDApPT0oZnwwKSl7Zz02O2JyZWFrfX19fXdoaWxlKDApO2lmKChnfDApPT02KXtkPShifDApIT0oZHwwKSYxfWk9YTtyZXR1cm4gZHwwfWZ1bmN0aW9uIEhoKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtkPWk7aD1lO2s9Zi1ofDA7aj1rPj4yO2lmKGo+Pj4wPjEwNzM3NDE4MDcpe2RnKCl9ZG97aWYoaj4+PjA8Mil7YVtiPj4wXT1rPj4+MTttPWIrNHwwfWVsc2V7az1qKzQmLTQ7bD1rPDwyO2w9KGx8MCk9PTA/MTpsO3doaWxlKDEpe209dW4obCl8MDtpZigobXwwKSE9MCl7Zz0xMTticmVha31tPWNbNTY2Nl18MDtjWzU2NjZdPW0rMDtpZigobXwwKT09MCl7YnJlYWt9c2NbbSYzMV0oKX1pZigoZ3wwKT09MTEpe2NbYis4Pj4yXT1tO2NbYj4+Ml09a3wxO2NbYis0Pj4yXT1qO2JyZWFrfW09WGEoNCl8MDtjW20+PjJdPTIyNjgwO3diKG18MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZigoZXwwKT09KGZ8MCkpe2NbbT4+Ml09MDtpPWQ7cmV0dXJufWI9ZisgLTQrKDAtaCl8MDtnPW07d2hpbGUoMSl7Y1tnPj4yXT1jW2U+PjJdO2U9ZSs0fDA7aWYoKGV8MCk9PShmfDApKXticmVha31lbHNle2c9Zys0fDB9fW09bSsoKGI+Pj4yKSsxPDwyKXwwO2NbbT4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIEloKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDthPWk7aWYoKGJ8MCk9PShkfDApKXtlPTA7aT1hO3JldHVybiBlfDB9ZWxzZXtlPTB9ZG97ZT0oY1tiPj4yXXwwKSsoZTw8NCl8MDtmPWUmLTI2ODQzNTQ1NjtlPShmPj4+MjR8ZileZTtiPWIrNHwwfXdoaWxlKChifDApIT0oZHwwKSk7aT1hO3JldHVybiBlfDB9ZnVuY3Rpb24gSmgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gS2goYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIExoKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2s9aTtpPWkrNjR8MDtwPWs7dT1rKzQ4fDA7cT1rKzUyfDA7dD1rKzU2fDA7cz1rKzE2fDA7cj1rKzEyfDA7bD1rKzI0fDA7aWYoKGNbZys0Pj4yXSYxfDApPT0wKXtjW3E+PjJdPS0xO2w9Y1soY1tkPj4yXXwwKSsxNj4+Ml18MDtjW3M+PjJdPWNbZT4+Ml07Y1tyPj4yXT1jW2Y+PjJdO2NbdSswPj4yXT1jW3MrMD4+Ml07Y1twKzA+PjJdPWNbciswPj4yXTtpY1tsJjYzXSh0LGQsdSxwLGcsaCxxKTtsPWNbdD4+Ml18MDtjW2U+PjJdPWw7ZT1jW3E+PjJdfDA7aWYoKGV8MCk9PTApe2Fbaj4+MF09MH1lbHNlIGlmKChlfDApPT0xKXthW2o+PjBdPTF9ZWxzZXthW2o+PjBdPTE7Y1toPj4yXT00fWNbYj4+Ml09bDtpPWs7cmV0dXJufXE9ZysyOHwwO3I9Y1txPj4yXXwwO2Q9cis0fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1twPj4yXT0xMzQ1NjtjW3ArND4+Ml09MjA4O2NbcCs4Pj4yXT0wO2NnKDEzNDU2LHApfXM9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3Q9Y1tyKzg+PjJdfDA7aWYoKGNbcisxMj4+Ml18MCktdD4+Mj4+PjA+cz4+PjA/KG89Y1t0KyhzPDwyKT4+Ml18MCwob3wwKSE9MCk6MCl7dT1yKzR8MDtkPWNbdT4+Ml18MDtjW3U+PjJdPWQrIC0xO2lmKChkfDApPT0wKXtsY1tjWyhjW3I+PjJdfDApKzg+PjJdJjI1NV0ocil9cT1jW3E+PjJdfDA7ZD1xKzR8MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE7aWYoISgoY1szNDAwXXwwKT09LTEpKXtjW3A+PjJdPTEzNjAwO2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM2MDAscCl9cD0oY1sxMzYwND4+Ml18MCkrIC0xfDA7cj1jW3ErOD4+Ml18MDtpZigoY1txKzEyPj4yXXwwKS1yPj4yPj4+MD5wPj4+MD8obj1jW3IrKHA8PDIpPj4yXXwwLChufDApIT0wKTowKXt1PXErNHwwO2Q9Y1t1Pj4yXXwwO2NbdT4+Ml09ZCsgLTE7aWYoKGR8MCk9PTApe2xjW2NbKGNbcT4+Ml18MCkrOD4+Ml0mMjU1XShxKX1tY1tjWyhjW24+PjJdfDApKzI0Pj4yXSYxMjddKGwsbik7ZD1sKzEyfDA7bWNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mMTI3XShkLG4pO2Fbaj4+MF09KE1oKGUsY1tmPj4yXXwwLGwsbCsyNHwwLG8saCwxKXwwKT09KGx8MCkmMTtjW2I+PjJdPWNbZT4+Ml07aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tsKzIwPj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtsPj4wXSYxKT09MCl7aT1rO3JldHVybn1iPWNbbCs4Pj4yXXwwO2lmKChifDApPT0wKXtpPWs7cmV0dXJufXZuKGIpO2k9aztyZXR1cm59ZD1YYSg0KXwwO2NbZD4+Ml09MjEzMDQ7d2IoZHwwLDIxMzc2LDE5Nil9ZD1YYSg0KXwwO2NbZD4+Ml09MjEzMDQ7d2IoZHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gTWgoYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDttPWk7aT1pKzExMnwwO289bTt0PShnLWZ8MCkvMTJ8MDtpZih0Pj4+MD4xMDApe289dW4odCl8MDtpZigob3wwKT09MCl7QT1YYSg0KXwwO2NbQT4+Ml09MjI2ODA7d2IoQXwwLDIyNzI4LDIwNil9ZWxzZXtsPW99fWVsc2V7bD0wfXA9KGZ8MCk9PShnfDApO2lmKHApe3U9MH1lbHNle3E9Zjt1PTA7cj1vO3doaWxlKDEpe3M9YVtxPj4wXXwwO2lmKChzJjEpPT0wKXtzPShzJjI1NSk+Pj4xfWVsc2V7cz1jW3ErND4+Ml18MH1pZigoc3wwKT09MCl7YVtyPj4wXT0yO3U9dSsxfDA7dD10KyAtMXwwfWVsc2V7YVtyPj4wXT0xfXE9cSsxMnwwO2lmKChxfDApPT0oZ3wwKSl7YnJlYWt9ZWxzZXtyPXIrMXwwfX19cT0wO2E6d2hpbGUoMSl7dj0odHwwKSE9MDtyPXE7d2hpbGUoMSl7cT1jW2I+PjJdfDA7ZG97aWYoKHF8MCkhPTApe2lmKChjW3ErMTI+PjJdfDApPT0oY1txKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbcT4+Ml18MCkrMzY+PjJdJjEyN10ocSl8MCk9PS0xKXtjW2I+PjJdPTA7cT0wO2JyZWFrfWVsc2V7cT1jW2I+PjJdfDA7YnJlYWt9fX1lbHNle3E9MH19d2hpbGUoMCk7dz0ocXwwKT09MDtpZigoZXwwKSE9MCl7aWYoKGNbZSsxMj4+Ml18MCk9PShjW2UrMTY+PjJdfDApKXtBPShvY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDApPT0tMTtxPUE/MDplO2U9QT8wOmV9ZWxzZXtxPWV9fWVsc2V7cT0wO2U9MH1zPShxfDApPT0wO3g9Y1tiPj4yXXwwO2lmKCEoKHdecykmdikpe2JyZWFrIGF9cT1jW3grMTI+PjJdfDA7aWYoKHF8MCk9PShjW3grMTY+PjJdfDApKXtxPW9jW2NbKGNbeD4+Ml18MCkrMzY+PjJdJjEyN10oeCl8MH1lbHNle3E9ZFtxPj4wXXwwfXM9cSYyNTU7aWYoIWspe3M9eGNbY1soY1toPj4yXXwwKSsxMj4+Ml0mNjNdKGgscyl8MH1xPXIrMXwwO2lmKHApe3I9cX1lbHNle2JyZWFrfX1iOmRve2lmKGspe3g9MDt2PWY7dz1vO3doaWxlKDEpe2Rve2lmKChhW3c+PjBdfDApPT0xKXt5PWFbdj4+MF18MDt6PSh5JjEpPT0wO2lmKHope0E9disxfDB9ZWxzZXtBPWNbdis4Pj4yXXwwfWlmKCEoczw8MjQ+PjI0PT0oYVtBK3I+PjBdfDApKSl7YVt3Pj4wXT0wO3Q9dCsgLTF8MDticmVha31pZih6KXt4PSh5JjI1NSk+Pj4xfWVsc2V7eD1jW3YrND4+Ml18MH1pZigoeHwwKT09KHF8MCkpe2Fbdz4+MF09Mjt4PTE7dT11KzF8MDt0PXQrIC0xfDB9ZWxzZXt4PTF9fX13aGlsZSgwKTt2PXYrMTJ8MDtpZigodnwwKT09KGd8MCkpe2JyZWFrIGJ9dz13KzF8MH19ZWxzZXt4PTA7dj1mO3c9bzt3aGlsZSgxKXtkb3tpZigoYVt3Pj4wXXwwKT09MSl7aWYoKGFbdj4+MF0mMSk9PTApe3k9disxfDB9ZWxzZXt5PWNbdis4Pj4yXXwwfWlmKCEoczw8MjQ+PjI0PT0oeGNbY1soY1toPj4yXXwwKSsxMj4+Ml0mNjNdKGgsYVt5K3I+PjBdfDApfDApPDwyND4+MjQpKXthW3c+PjBdPTA7dD10KyAtMXwwO2JyZWFrfXg9YVt2Pj4wXXwwO2lmKCh4JjEpPT0wKXt4PSh4JjI1NSk+Pj4xfWVsc2V7eD1jW3YrND4+Ml18MH1pZigoeHwwKT09KHF8MCkpe2Fbdz4+MF09Mjt4PTE7dT11KzF8MDt0PXQrIC0xfDB9ZWxzZXt4PTF9fX13aGlsZSgwKTt2PXYrMTJ8MDtpZigodnwwKT09KGd8MCkpe2JyZWFrIGJ9dz13KzF8MH19fXdoaWxlKDApO2lmKCF4KXtjb250aW51ZX12PWNbYj4+Ml18MDtzPXYrMTJ8MDtyPWNbcz4+Ml18MDtpZigocnwwKT09KGNbdisxNj4+Ml18MCkpe29jW2NbKGNbdj4+Ml18MCkrNDA+PjJdJjEyN10odil8MH1lbHNle2Nbcz4+Ml09cisxfWlmKCh0K3V8MCk+Pj4wPDIpe2NvbnRpbnVlfWVsc2V7cz1mO3I9b313aGlsZSgxKXtpZigoYVtyPj4wXXwwKT09Mil7dj1hW3M+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbcys0Pj4yXXwwfWlmKCh2fDApIT0ocXwwKSl7YVtyPj4wXT0wO3U9dSsgLTF8MH19cz1zKzEyfDA7aWYoKHN8MCk9PShnfDApKXtjb250aW51ZSBhfWVsc2V7cj1yKzF8MH19fWRve2lmKCh4fDApIT0wKXtpZigoY1t4KzEyPj4yXXwwKT09KGNbeCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDApPT0tMSl7Y1tiPj4yXT0wO3g9MDticmVha31lbHNle3g9Y1tiPj4yXXwwO2JyZWFrfX19ZWxzZXt4PTB9fXdoaWxlKDApO2g9KHh8MCk9PTA7ZG97aWYoIXMpe2lmKChjW3ErMTI+PjJdfDApIT0oY1txKzE2Pj4yXXwwKSl7aWYoaCl7YnJlYWt9ZWxzZXtuPTg1O2JyZWFrfX1pZighKChvY1tjWyhjW3E+PjJdfDApKzM2Pj4yXSYxMjddKHEpfDApPT0tMSkpe2lmKCFoKXtuPTg1fX1lbHNle249ODN9fWVsc2V7bj04M319d2hpbGUoMCk7aWYoKG58MCk9PTgzP2g6MCl7bj04NX1pZigobnwwKT09ODUpe2Nbaj4+Ml09Y1tqPj4yXXwyfWM6ZG97aWYoIXApe2lmKChhW28+PjBdfDApPT0yKXtnPWZ9ZWxzZXt3aGlsZSgxKXtmPWYrMTJ8MDtvPW8rMXwwO2lmKChmfDApPT0oZ3wwKSl7bj05MDticmVhayBjfWlmKChhW28+PjBdfDApPT0yKXtnPWY7YnJlYWt9fX19ZWxzZXtuPTkwfX13aGlsZSgwKTtpZigobnwwKT09OTApe2Nbaj4+Ml09Y1tqPj4yXXw0fWlmKChsfDApPT0wKXtpPW07cmV0dXJuIGd8MH12bihsKTtpPW07cmV0dXJuIGd8MH1mdW5jdGlvbiBOaChiLGUsZixnLGgsaixrKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtlPWk7aT1pKzIyNHwwO3Y9ZSsxOTh8MDt1PWUrMTk2fDA7bj1lKzE2fDA7bz1lKzR8MDtxPWUrMTkyfDA7cz1lKzMyfDA7cj1lO3Q9ZSsyOHwwO3k9Y1tmPj4yXXwwO0E9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT04KXtnPTE2fWVsc2UgaWYoKGd8MCk9PTApe2c9MH1lbHNlIGlmKChnfDApPT02NCl7Zz04fWVsc2V7Zz0xMH1taShuLGgsdix1KTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qj1vKzF8MDt3PUI7Zj1vKzh8MH1lbHNle0I9bys4fDA7dz1vKzF8MDtmPUI7Qj1jW0I+PjJdfDB9Y1txPj4yXT1CO2Nbcj4+Ml09cztjW3Q+PjJdPTA7aD1vKzR8MDt4PWFbdT4+MF18MDt1PW8rOHwwO2E6d2hpbGUoMSl7aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9ej0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZih6KXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXope2JyZWFrIGF9fWVsc2V7bD0xOX19ZWxzZXtsPTE5fX13aGlsZSgwKTtpZigobHwwKT09MTkpe2w9MDtpZih6KXtBPTA7YnJlYWt9ZWxzZXtBPTB9fUQ9YVtvPj4wXXwwO0M9KEQmMSk9PTA7aWYoQyl7RT0oRCYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWlmKCgoY1txPj4yXXwwKS1CfDApPT0oRXwwKSl7aWYoQyl7Qj0oRCYyNTUpPj4+MTtFPShEJjI1NSk+Pj4xO0Q9Qjw8MX1lbHNle0I9Y1toPj4yXXwwO0U9Y1toPj4yXXwwO0Q9Qjw8MX1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUI8PDI7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtFPWFbbz4+MF18MDtpZigoRSYxKT09MCl7RD0xMH1lbHNle0Q9Y1tvPj4yXXwwO0U9RCYyNTU7RD0oRCYtMikrIC0xfDB9Qz0oRSYxKT09MDtpZihDKXtFPShFJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1EPDwxO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9d31lbHNle0M9Y1tmPj4yXXwwfWNbcT4+Ml09QytCO0I9Q31EPXkrMTJ8MDtFPWNbRD4+Ml18MDtDPXkrMTZ8MDtpZigoRXwwKT09KGNbQz4+Ml18MCkpe0U9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7RT1kW0U+PjBdfDB9aWYoKFhoKEUmMjU1LGcsQixxLHQseCxuLHMscix2KXwwKSE9MCl7YnJlYWt9ej1jW0Q+PjJdfDA7aWYoKHp8MCk9PShjW0M+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7Y29udGludWV9ZWxzZXtjW0Q+PjJdPXorMTtjb250aW51ZX19dj1hW24+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbbis0Pj4yXXwwfWlmKCh2fDApIT0wPyhwPWNbcj4+Ml18MCwocC1zfDApPDE2MCk6MCl7RT1jW3Q+PjJdfDA7Y1tyPj4yXT1wKzQ7Y1twPj4yXT1FfWNbaz4+Ml09Tm0oQixjW3E+PjJdfDAsaixnKXwwO3FrKG4scyxjW3I+PjJdfDAsaik7aWYoIXope2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9cD0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZihwKXticmVha31lbHNle2w9NzE7YnJlYWt9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXApe2w9NzF9fWVsc2V7bD02OX19ZWxzZXtsPTY5fX13aGlsZSgwKTtpZigobHwwKT09Njk/cDowKXtsPTcxfWlmKChsfDApPT03MSl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT15O2lmKCEoKGFbbz4+MF0mMSk9PTApPyhtPWNbdT4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoKGFbbj4+MF0mMSk9PTApe2k9ZTtyZXR1cm59bD1jW24rOD4+Ml18MDtpZigobHwwKT09MCl7aT1lO3JldHVybn12bihsKTtpPWU7cmV0dXJufWZ1bmN0aW9uIE9oKGIsZSxmLGcsaCxqLGspe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO2U9aTtpPWkrMjI0fDA7dj1lKzE5OHwwO3U9ZSsxOTZ8MDtuPWUrMTZ8MDtvPWUrNHwwO3E9ZSsxOTJ8MDtzPWUrMzJ8MDtyPWU7dD1lKzI4fDA7eT1jW2Y+PjJdfDA7QT1jW2c+PjJdfDA7Zz1jW2grND4+Ml0mNzQ7aWYoKGd8MCk9PTApe2c9MH1lbHNlIGlmKChnfDApPT04KXtnPTE2fWVsc2UgaWYoKGd8MCk9PTY0KXtnPTh9ZWxzZXtnPTEwfW1pKG4saCx2LHUpO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtCPW8rMXwwO3c9QjtmPW8rOHwwfWVsc2V7Qj1vKzh8MDt3PW8rMXwwO2Y9QjtCPWNbQj4+Ml18MH1jW3E+PjJdPUI7Y1tyPj4yXT1zO2NbdD4+Ml09MDtoPW8rNHwwO3g9YVt1Pj4wXXwwO3U9bys4fDA7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH16PSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHope2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZigheil7YnJlYWsgYX19ZWxzZXtsPTE5fX1lbHNle2w9MTl9fXdoaWxlKDApO2lmKChsfDApPT0xOSl7bD0wO2lmKHope0E9MDticmVha31lbHNle0E9MH19RD1hW28+PjBdfDA7Qz0oRCYxKT09MDtpZihDKXtFPShEJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9aWYoKChjW3E+PjJdfDApLUJ8MCk9PShFfDApKXtpZihDKXtCPShEJjI1NSk+Pj4xO0U9KEQmMjU1KT4+PjE7RD1CPDwxfWVsc2V7Qj1jW2g+PjJdfDA7RT1jW2g+PjJdfDA7RD1CPDwxfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09Qjw8MjticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO0U9YVtvPj4wXXwwO2lmKChFJjEpPT0wKXtEPTEwfWVsc2V7RD1jW28+PjJdfDA7RT1EJjI1NTtEPShEJi0yKSsgLTF8MH1DPShFJjEpPT0wO2lmKEMpe0U9KEUmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUQ8PDE7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz13fWVsc2V7Qz1jW2Y+PjJdfDB9Y1txPj4yXT1DK0I7Qj1DfUQ9eSsxMnwwO0U9Y1tEPj4yXXwwO0M9eSsxNnwwO2lmKChFfDApPT0oY1tDPj4yXXwwKSl7RT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtFPWRbRT4+MF18MH1pZigoWGgoRSYyNTUsZyxCLHEsdCx4LG4scyxyLHYpfDApIT0wKXticmVha316PWNbRD4+Ml18MDtpZigoenwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeT4+Ml18MCkrNDA+PjJdJjEyN10oeSl8MDtjb250aW51ZX1lbHNle2NbRD4+Ml09eisxO2NvbnRpbnVlfX12PWFbbj4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tuKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHA9Y1tyPj4yXXwwLChwLXN8MCk8MTYwKTowKXtFPWNbdD4+Ml18MDtjW3I+PjJdPXArNDtjW3A+PjJdPUV9RD1NbShCLGNbcT4+Ml18MCxqLGcpfDA7RT1rO2NbRT4+Ml09RDtjW0UrND4+Ml09STtxayhuLHMsY1tyPj4yXXwwLGopO2lmKCF6KXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXA9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYocCl7YnJlYWt9ZWxzZXtsPTcxO2JyZWFrfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCFwKXtsPTcxfX1lbHNle2w9Njl9fWVsc2V7bD02OX19d2hpbGUoMCk7aWYoKGx8MCk9PTY5P3A6MCl7bD03MX1pZigobHwwKT09NzEpe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09eTtpZighKChhW28+PjBdJjEpPT0wKT8obT1jW3U+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW24+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWw9Y1tuKzg+PjJdfDA7aWYoKGx8MCk9PTApe2k9ZTtyZXR1cm59dm4obCk7aT1lO3JldHVybn1mdW5jdGlvbiBQaChlLGYsZyxoLGosayxsKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MDtmPWk7aT1pKzIyNHwwO3c9ZisxOTh8MDt2PWYrMTk2fDA7bz1mKzE2fDA7cD1mKzR8MDtyPWYrMTkyfDA7dD1mKzMyfDA7cz1mO3U9ZisyOHwwO3o9Y1tnPj4yXXwwO0I9Y1toPj4yXXwwO2g9Y1tqKzQ+PjJdJjc0O2lmKChofDApPT04KXtoPTE2fWVsc2UgaWYoKGh8MCk9PTY0KXtoPTh9ZWxzZSBpZigoaHwwKT09MCl7aD0wfWVsc2V7aD0xMH1taShvLGosdyx2KTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtoZyhwLDEwKTtpZigoYVtwPj4wXSYxKT09MCl7Qz1wKzF8MDt4PUM7Zz1wKzh8MH1lbHNle0M9cCs4fDA7eD1wKzF8MDtnPUM7Qz1jW0M+PjJdfDB9Y1tyPj4yXT1DO2Nbcz4+Ml09dDtjW3U+PjJdPTA7aj1wKzR8MDt5PWFbdj4+MF18MDt2PXArOHwwO2E6d2hpbGUoMSl7aWYoKHp8MCkhPTApe2lmKChjW3orMTI+PjJdfDApPT0oY1t6KzE2Pj4yXXwwKSl7Rj0ob2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwKT09LTE7ej1GPzA6en19ZWxzZXt6PTB9QT0oenwwKT09MDtkb3tpZigoQnwwKSE9MCl7aWYoKGNbQisxMj4+Ml18MCkhPShjW0IrMTY+PjJdfDApKXtpZihBKXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MCk9PS0xKSl7aWYoIUEpe2JyZWFrIGF9fWVsc2V7bT0xOX19ZWxzZXttPTE5fX13aGlsZSgwKTtpZigobXwwKT09MTkpe209MDtpZihBKXtCPTA7YnJlYWt9ZWxzZXtCPTB9fUU9YVtwPj4wXXwwO0Q9KEUmMSk9PTA7aWYoRCl7Rj0oRSYyNTUpPj4+MX1lbHNle0Y9Y1tqPj4yXXwwfWlmKCgoY1tyPj4yXXwwKS1DfDApPT0oRnwwKSl7aWYoRCl7Qz0oRSYyNTUpPj4+MTtGPShFJjI1NSk+Pj4xO0U9Qzw8MX1lbHNle0M9Y1tqPj4yXXwwO0Y9Y1tqPj4yXXwwO0U9Qzw8MX1kb3tpZighKEY+Pj4wPEU+Pj4wKSl7aWYoRCl7YVtwK0UrMT4+MF09MDthW3A+PjBdPUM8PDI7YnJlYWt9ZWxzZXthWyhjW3Y+PjJdfDApK0U+PjBdPTA7Y1tqPj4yXT1FO2JyZWFrfX1lbHNle2hnKHAsRS1GfDApfX13aGlsZSgwKTtGPWFbcD4+MF18MDtpZigoRiYxKT09MCl7RT0xMH1lbHNle0U9Y1twPj4yXXwwO0Y9RSYyNTU7RT0oRSYtMikrIC0xfDB9RD0oRiYxKT09MDtpZihEKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW2o+PjJdfDB9ZG97aWYoIShGPj4+MDxFPj4+MCkpe2lmKEQpe2FbcCtFKzE+PjBdPTA7YVtwPj4wXT1FPDwxO2JyZWFrfWVsc2V7YVsoY1t2Pj4yXXwwKStFPj4wXT0wO2Nbaj4+Ml09RTticmVha319ZWxzZXtoZyhwLEUtRnwwKX19d2hpbGUoMCk7aWYoKGFbcD4+MF0mMSk9PTApe0Q9eH1lbHNle0Q9Y1tnPj4yXXwwfWNbcj4+Ml09RCtDO0M9RH1FPXorMTJ8MDtGPWNbRT4+Ml18MDtEPXorMTZ8MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe0Y9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7Rj1kW0Y+PjBdfDB9aWYoKFhoKEYmMjU1LGgsQyxyLHUseSxvLHQscyx3KXwwKSE9MCl7YnJlYWt9QT1jW0U+PjJdfDA7aWYoKEF8MCk9PShjW0Q+PjJdfDApKXtvY1tjWyhjW3o+PjJdfDApKzQwPj4yXSYxMjddKHopfDA7Y29udGludWV9ZWxzZXtjW0U+PjJdPUErMTtjb250aW51ZX19dz1hW28+PjBdfDA7aWYoKHcmMSk9PTApe3c9KHcmMjU1KT4+PjF9ZWxzZXt3PWNbbys0Pj4yXXwwfWlmKCh3fDApIT0wPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7Rj1jW3U+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1GfWJbbD4+MV09TG0oQyxjW3I+PjJdfDAsayxoKXwwO3FrKG8sdCxjW3M+PjJdfDAsayk7aWYoIUEpe2lmKChjW3orMTI+PjJdfDApPT0oY1t6KzE2Pj4yXXwwKSl7Rj0ob2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwKT09LTE7ej1GPzA6en19ZWxzZXt6PTB9cT0oenwwKT09MDtkb3tpZigoQnwwKSE9MCl7aWYoKGNbQisxMj4+Ml18MCkhPShjW0IrMTY+PjJdfDApKXtpZihxKXticmVha31lbHNle209NzE7YnJlYWt9fWlmKCEoKG9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MCk9PS0xKSl7aWYoIXEpe209NzF9fWVsc2V7bT02OX19ZWxzZXttPTY5fX13aGlsZSgwKTtpZigobXwwKT09Njk/cTowKXttPTcxfWlmKChtfDApPT03MSl7Y1trPj4yXT1jW2s+PjJdfDJ9Y1tlPj4yXT16O2lmKCEoKGFbcD4+MF0mMSk9PTApPyhuPWNbdj4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZjtyZXR1cm59bT1jW28rOD4+Ml18MDtpZigobXwwKT09MCl7aT1mO3JldHVybn12bihtKTtpPWY7cmV0dXJufWZ1bmN0aW9uIFFoKGIsZSxmLGcsaCxqLGspe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO2U9aTtpPWkrMjI0fDA7dj1lKzE5OHwwO3U9ZSsxOTZ8MDtuPWUrMTZ8MDtvPWUrNHwwO3E9ZSsxOTJ8MDtzPWUrMzJ8MDtyPWU7dD1lKzI4fDA7eT1jW2Y+PjJdfDA7QT1jW2c+PjJdfDA7Zz1jW2grND4+Ml0mNzQ7aWYoKGd8MCk9PTY0KXtnPTh9ZWxzZSBpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT0wKXtnPTB9ZWxzZXtnPTEwfW1pKG4saCx2LHUpO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtCPW8rMXwwO3c9QjtmPW8rOHwwfWVsc2V7Qj1vKzh8MDt3PW8rMXwwO2Y9QjtCPWNbQj4+Ml18MH1jW3E+PjJdPUI7Y1tyPj4yXT1zO2NbdD4+Ml09MDtoPW8rNHwwO3g9YVt1Pj4wXXwwO3U9bys4fDA7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH16PSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHope2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZigheil7YnJlYWsgYX19ZWxzZXtsPTE5fX1lbHNle2w9MTl9fXdoaWxlKDApO2lmKChsfDApPT0xOSl7bD0wO2lmKHope0E9MDticmVha31lbHNle0E9MH19RD1hW28+PjBdfDA7Qz0oRCYxKT09MDtpZihDKXtFPShEJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9aWYoKChjW3E+PjJdfDApLUJ8MCk9PShFfDApKXtpZihDKXtCPShEJjI1NSk+Pj4xO0U9KEQmMjU1KT4+PjE7RD1CPDwxfWVsc2V7Qj1jW2g+PjJdfDA7RT1jW2g+PjJdfDA7RD1CPDwxfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09Qjw8MjticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO0U9YVtvPj4wXXwwO2lmKChFJjEpPT0wKXtEPTEwfWVsc2V7RD1jW28+PjJdfDA7RT1EJjI1NTtEPShEJi0yKSsgLTF8MH1DPShFJjEpPT0wO2lmKEMpe0U9KEUmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUQ8PDE7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz13fWVsc2V7Qz1jW2Y+PjJdfDB9Y1txPj4yXT1DK0I7Qj1DfUQ9eSsxMnwwO0U9Y1tEPj4yXXwwO0M9eSsxNnwwO2lmKChFfDApPT0oY1tDPj4yXXwwKSl7RT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtFPWRbRT4+MF18MH1pZigoWGgoRSYyNTUsZyxCLHEsdCx4LG4scyxyLHYpfDApIT0wKXticmVha316PWNbRD4+Ml18MDtpZigoenwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeT4+Ml18MCkrNDA+PjJdJjEyN10oeSl8MDtjb250aW51ZX1lbHNle2NbRD4+Ml09eisxO2NvbnRpbnVlfX12PWFbbj4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tuKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHA9Y1tyPj4yXXwwLChwLXN8MCk8MTYwKTowKXtFPWNbdD4+Ml18MDtjW3I+PjJdPXArNDtjW3A+PjJdPUV9Y1trPj4yXT1LbShCLGNbcT4+Ml18MCxqLGcpfDA7cWsobixzLGNbcj4+Ml18MCxqKTtpZigheil7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH1wPSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHApe2JyZWFrfWVsc2V7bD03MTticmVha319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZighcCl7bD03MX19ZWxzZXtsPTY5fX1lbHNle2w9Njl9fXdoaWxlKDApO2lmKChsfDApPT02OT9wOjApe2w9NzF9aWYoKGx8MCk9PTcxKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPXk7aWYoISgoYVtvPj4wXSYxKT09MCk/KG09Y1t1Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtuPj4wXSYxKT09MCl7aT1lO3JldHVybn1sPWNbbis4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWU7cmV0dXJufXZuKGwpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gUmgoYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7ZT1pO2k9aSsyMjR8MDt2PWUrMTk4fDA7dT1lKzE5NnwwO249ZSsxNnwwO289ZSs0fDA7cT1lKzE5MnwwO3M9ZSszMnwwO3I9ZTt0PWUrMjh8MDt5PWNbZj4+Ml18MDtBPWNbZz4+Ml18MDtnPWNbaCs0Pj4yXSY3NDtpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09NjQpe2c9OH1lbHNle2c9MTB9bWkobixoLHYsdSk7Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTA7aGcobywxMCk7aWYoKGFbbz4+MF0mMSk9PTApe0I9bysxfDA7dz1CO2Y9bys4fDB9ZWxzZXtCPW8rOHwwO3c9bysxfDA7Zj1CO0I9Y1tCPj4yXXwwfWNbcT4+Ml09QjtjW3I+PjJdPXM7Y1t0Pj4yXT0wO2g9bys0fDA7eD1hW3U+PjBdfDA7dT1vKzh8MDthOndoaWxlKDEpe2lmKCh5fDApIT0wKXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXo9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYoeil7YnJlYWt9ZWxzZXticmVhayBhfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCF6KXticmVhayBhfX1lbHNle2w9MTl9fWVsc2V7bD0xOX19d2hpbGUoMCk7aWYoKGx8MCk9PTE5KXtsPTA7aWYoeil7QT0wO2JyZWFrfWVsc2V7QT0wfX1EPWFbbz4+MF18MDtDPShEJjEpPT0wO2lmKEMpe0U9KEQmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1pZigoKGNbcT4+Ml18MCktQnwwKT09KEV8MCkpe2lmKEMpe0I9KEQmMjU1KT4+PjE7RT0oRCYyNTUpPj4+MTtEPUI8PDF9ZWxzZXtCPWNbaD4+Ml18MDtFPWNbaD4+Ml18MDtEPUI8PDF9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1CPDwyO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7RT1hW28+PjBdfDA7aWYoKEUmMSk9PTApe0Q9MTB9ZWxzZXtEPWNbbz4+Ml18MDtFPUQmMjU1O0Q9KEQmLTIpKyAtMXwwfUM9KEUmMSk9PTA7aWYoQyl7RT0oRSYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09RDw8MTticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO2lmKChhW28+PjBdJjEpPT0wKXtDPXd9ZWxzZXtDPWNbZj4+Ml18MH1jW3E+PjJdPUMrQjtCPUN9RD15KzEyfDA7RT1jW0Q+PjJdfDA7Qz15KzE2fDA7aWYoKEV8MCk9PShjW0M+PjJdfDApKXtFPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0U9ZFtFPj4wXXwwfWlmKChYaChFJjI1NSxnLEIscSx0LHgsbixzLHIsdil8MCkhPTApe2JyZWFrfXo9Y1tEPj4yXXwwO2lmKCh6fDApPT0oY1tDPj4yXXwwKSl7b2NbY1soY1t5Pj4yXXwwKSs0MD4+Ml0mMTI3XSh5KXwwO2NvbnRpbnVlfWVsc2V7Y1tEPj4yXT16KzE7Y29udGludWV9fXY9YVtuPj4wXXwwO2lmKCh2JjEpPT0wKXt2PSh2JjI1NSk+Pj4xfWVsc2V7dj1jW24rND4+Ml18MH1pZigodnwwKSE9MD8ocD1jW3I+PjJdfDAsKHAtc3wwKTwxNjApOjApe0U9Y1t0Pj4yXXwwO2Nbcj4+Ml09cCs0O2NbcD4+Ml09RX1jW2s+PjJdPUptKEIsY1txPj4yXXwwLGosZyl8MDtxayhuLHMsY1tyPj4yXXwwLGopO2lmKCF6KXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXA9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYocCl7YnJlYWt9ZWxzZXtsPTcxO2JyZWFrfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCFwKXtsPTcxfX1lbHNle2w9Njl9fWVsc2V7bD02OX19d2hpbGUoMCk7aWYoKGx8MCk9PTY5P3A6MCl7bD03MX1pZigobHwwKT09NzEpe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09eTtpZighKChhW28+PjBdJjEpPT0wKT8obT1jW3U+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW24+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWw9Y1tuKzg+PjJdfDA7aWYoKGx8MCk9PTApe2k9ZTtyZXR1cm59dm4obCk7aT1lO3JldHVybn1mdW5jdGlvbiBTaChiLGUsZixnLGgsaixrKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtlPWk7aT1pKzIyNHwwO3Y9ZSsxOTh8MDt1PWUrMTk2fDA7bj1lKzE2fDA7bz1lKzR8MDtxPWUrMTkyfDA7cz1lKzMyfDA7cj1lO3Q9ZSsyOHwwO3k9Y1tmPj4yXXwwO0E9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT02NCl7Zz04fWVsc2V7Zz0xMH1taShuLGgsdix1KTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qj1vKzF8MDt3PUI7Zj1vKzh8MH1lbHNle0I9bys4fDA7dz1vKzF8MDtmPUI7Qj1jW0I+PjJdfDB9Y1txPj4yXT1CO2Nbcj4+Ml09cztjW3Q+PjJdPTA7aD1vKzR8MDt4PWFbdT4+MF18MDt1PW8rOHwwO2E6d2hpbGUoMSl7aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9ej0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZih6KXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXope2JyZWFrIGF9fWVsc2V7bD0xOX19ZWxzZXtsPTE5fX13aGlsZSgwKTtpZigobHwwKT09MTkpe2w9MDtpZih6KXtBPTA7YnJlYWt9ZWxzZXtBPTB9fUQ9YVtvPj4wXXwwO0M9KEQmMSk9PTA7aWYoQyl7RT0oRCYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWlmKCgoY1txPj4yXXwwKS1CfDApPT0oRXwwKSl7aWYoQyl7Qj0oRCYyNTUpPj4+MTtFPShEJjI1NSk+Pj4xO0Q9Qjw8MX1lbHNle0I9Y1toPj4yXXwwO0U9Y1toPj4yXXwwO0Q9Qjw8MX1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUI8PDI7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtFPWFbbz4+MF18MDtpZigoRSYxKT09MCl7RD0xMH1lbHNle0Q9Y1tvPj4yXXwwO0U9RCYyNTU7RD0oRCYtMikrIC0xfDB9Qz0oRSYxKT09MDtpZihDKXtFPShFJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1EPDwxO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9d31lbHNle0M9Y1tmPj4yXXwwfWNbcT4+Ml09QytCO0I9Q31EPXkrMTJ8MDtFPWNbRD4+Ml18MDtDPXkrMTZ8MDtpZigoRXwwKT09KGNbQz4+Ml18MCkpe0U9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7RT1kW0U+PjBdfDB9aWYoKFhoKEUmMjU1LGcsQixxLHQseCxuLHMscix2KXwwKSE9MCl7YnJlYWt9ej1jW0Q+PjJdfDA7aWYoKHp8MCk9PShjW0M+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7Y29udGludWV9ZWxzZXtjW0Q+PjJdPXorMTtjb250aW51ZX19dj1hW24+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbbis0Pj4yXXwwfWlmKCh2fDApIT0wPyhwPWNbcj4+Ml18MCwocC1zfDApPDE2MCk6MCl7RT1jW3Q+PjJdfDA7Y1tyPj4yXT1wKzQ7Y1twPj4yXT1FfUQ9SW0oQixjW3E+PjJdfDAsaixnKXwwO0U9aztjW0U+PjJdPUQ7Y1tFKzQ+PjJdPUk7cWsobixzLGNbcj4+Ml18MCxqKTtpZigheil7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH1wPSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHApe2JyZWFrfWVsc2V7bD03MTticmVha319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZighcCl7bD03MX19ZWxzZXtsPTY5fX1lbHNle2w9Njl9fXdoaWxlKDApO2lmKChsfDApPT02OT9wOjApe2w9NzF9aWYoKGx8MCk9PTcxKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPXk7aWYoISgoYVtvPj4wXSYxKT09MCk/KG09Y1t1Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtuPj4wXSYxKT09MCl7aT1lO3JldHVybn1sPWNbbis4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWU7cmV0dXJufXZuKGwpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gVGgoYixlLGYsaCxqLGssbCl7Yj1ifDA7ZT1lfDA7Zj1mfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtlPWk7aT1pKzI1NnwwO3g9ZSsyMDh8MDt6PWUrMjAwfDA7dz1lKzI0MHwwO289ZTtwPWUrMTg4fDA7dj1lKzE4NHwwO3Q9ZSsxNnwwO3M9ZSsxNzZ8MDtyPWUrMTgwfDA7dT1lKzI0MXwwO3k9ZSsyNDJ8MDtBPWNbZj4+Ml18MDtEPWNbaD4+Ml18MDtuaShvLGoseCx6LHcpO2NbcCswPj4yXT0wO2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0wO2hnKHAsMTApO2lmKChhW3A+PjBdJjEpPT0wKXtFPXArMXwwO2g9RTtmPXArOHwwfWVsc2V7RT1wKzh8MDtoPXArMXwwO2Y9RTtFPWNbRT4+Ml18MH1jW3Y+PjJdPUU7Y1tzPj4yXT10O2Nbcj4+Ml09MDthW3U+PjBdPTE7YVt5Pj4wXT02OTtqPXArNHwwO3o9YVt6Pj4wXXwwO0I9YVt3Pj4wXXwwO3c9cCs4fDA7YTp3aGlsZSgxKXtpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCk9PShjW0ErMTY+PjJdfDApKXtIPShvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMTtBPUg/MDpBfX1lbHNle0E9MH1DPShBfDApPT0wO2Rve2lmKChEfDApIT0wKXtpZigoY1tEKzEyPj4yXXwwKSE9KGNbRCsxNj4+Ml18MCkpe2lmKEMpe2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwKT09LTEpKXtpZighQyl7YnJlYWsgYX19ZWxzZXttPTE1fX1lbHNle209MTV9fXdoaWxlKDApO2lmKChtfDApPT0xNSl7bT0wO2lmKEMpe0Q9MDticmVha31lbHNle0Q9MH19Rz1hW3A+PjBdfDA7Rj0oRyYxKT09MDtpZihGKXtIPShHJjI1NSk+Pj4xfWVsc2V7SD1jW2o+PjJdfDB9aWYoKChjW3Y+PjJdfDApLUV8MCk9PShIfDApKXtpZihGKXtFPShHJjI1NSk+Pj4xO0c9KEcmMjU1KT4+PjE7SD1FPDwxfWVsc2V7RT1jW2o+PjJdfDA7Rz1jW2o+PjJdfDA7SD1FPDwxfWRve2lmKCEoRz4+PjA8SD4+PjApKXtpZihGKXthW3ArSCsxPj4wXT0wO2FbcD4+MF09RTw8MjticmVha31lbHNle2FbKGNbdz4+Ml18MCkrSD4+MF09MDtjW2o+PjJdPUg7YnJlYWt9fWVsc2V7aGcocCxILUd8MCl9fXdoaWxlKDApO0g9YVtwPj4wXXwwO2lmKChIJjEpPT0wKXtHPTEwfWVsc2V7Rz1jW3A+PjJdfDA7SD1HJjI1NTtHPShHJi0yKSsgLTF8MH1GPShIJjEpPT0wO2lmKEYpe0g9KEgmMjU1KT4+PjF9ZWxzZXtIPWNbaj4+Ml18MH1kb3tpZighKEg+Pj4wPEc+Pj4wKSl7aWYoRil7YVtwK0crMT4+MF09MDthW3A+PjBdPUc8PDE7YnJlYWt9ZWxzZXthWyhjW3c+PjJdfDApK0c+PjBdPTA7Y1tqPj4yXT1HO2JyZWFrfX1lbHNle2hnKHAsRy1IfDApfX13aGlsZSgwKTtpZigoYVtwPj4wXSYxKT09MCl7Rj1ofWVsc2V7Rj1jW2Y+PjJdfDB9Y1t2Pj4yXT1GK0U7RT1GfUc9QSsxMnwwO0g9Y1tHPj4yXXwwO0Y9QSsxNnwwO2lmKChIfDApPT0oY1tGPj4yXXwwKSl7SD1vY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDB9ZWxzZXtIPWRbSD4+MF18MH1pZigob2koSCYyNTUsdSx5LEUsdix6LEIsbyx0LHMscix4KXwwKSE9MCl7YnJlYWt9Qz1jW0c+PjJdfDA7aWYoKEN8MCk9PShjW0Y+PjJdfDApKXtvY1tjWyhjW0E+PjJdfDApKzQwPj4yXSYxMjddKEEpfDA7Y29udGludWV9ZWxzZXtjW0c+PjJdPUMrMTtjb250aW51ZX19eD1hW28+PjBdfDA7aWYoKHgmMSk9PTApe3g9KHgmMjU1KT4+PjF9ZWxzZXt4PWNbbys0Pj4yXXwwfWlmKCgoeHwwKSE9MD8oYVt1Pj4wXXwwKSE9MDowKT8ocT1jW3M+PjJdfDAsKHEtdHwwKTwxNjApOjApe0g9Y1tyPj4yXXwwO2Nbcz4+Ml09cSs0O2NbcT4+Ml09SH1nW2w+PjJdPStIbShFLGNbdj4+Ml18MCxrKTtxayhvLHQsY1tzPj4yXXwwLGspO2lmKCFDKXtpZigoY1tBKzEyPj4yXXwwKT09KGNbQSsxNj4+Ml18MCkpe0g9KG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xO0E9SD8wOkF9fWVsc2V7QT0wfWw9KEF8MCk9PTA7ZG97aWYoKER8MCkhPTApe2lmKChjW0QrMTI+PjJdfDApIT0oY1tEKzE2Pj4yXXwwKSl7aWYobCl7YnJlYWt9ZWxzZXttPTY4O2JyZWFrfX1pZighKChvY1tjWyhjW0Q+PjJdfDApKzM2Pj4yXSYxMjddKEQpfDApPT0tMSkpe2lmKCFsKXttPTY4fX1lbHNle209NjZ9fWVsc2V7bT02Nn19d2hpbGUoMCk7aWYoKG18MCk9PTY2P2w6MCl7bT02OH1pZigobXwwKT09Njgpe2Nbaz4+Ml09Y1trPj4yXXwyfWNbYj4+Ml09QTtpZighKChhW3A+PjBdJjEpPT0wKT8obj1jW3c+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKChhW28+PjBdJjEpPT0wKXtpPWU7cmV0dXJufW09Y1tvKzg+PjJdfDA7aWYoKG18MCk9PTApe2k9ZTtyZXR1cm59dm4obSk7aT1lO3JldHVybn1mdW5jdGlvbiBVaChiLGUsZixnLGosayxsKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wO2U9aTtpPWkrMjU2fDA7eD1lKzIwOHwwO3o9ZSsyMDB8MDt3PWUrMjQwfDA7bz1lO3A9ZSsxODh8MDt2PWUrMTg0fDA7dD1lKzE2fDA7cz1lKzE3NnwwO3I9ZSsxODB8MDt1PWUrMjQxfDA7eT1lKzI0MnwwO0E9Y1tmPj4yXXwwO0Q9Y1tnPj4yXXwwO25pKG8saix4LHosdyk7Y1twKzA+PjJdPTA7Y1twKzQ+PjJdPTA7Y1twKzg+PjJdPTA7aGcocCwxMCk7aWYoKGFbcD4+MF0mMSk9PTApe0U9cCsxfDA7Zz1FO2Y9cCs4fDB9ZWxzZXtFPXArOHwwO2c9cCsxfDA7Zj1FO0U9Y1tFPj4yXXwwfWNbdj4+Ml09RTtjW3M+PjJdPXQ7Y1tyPj4yXT0wO2FbdT4+MF09MTthW3k+PjBdPTY5O2o9cCs0fDA7ej1hW3o+PjBdfDA7Qj1hW3c+PjBdfDA7dz1wKzh8MDthOndoaWxlKDEpe2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKT09KGNbQSsxNj4+Ml18MCkpe0g9KG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xO0E9SD8wOkF9fWVsc2V7QT0wfUM9KEF8MCk9PTA7ZG97aWYoKER8MCkhPTApe2lmKChjW0QrMTI+PjJdfDApIT0oY1tEKzE2Pj4yXXwwKSl7aWYoQyl7YnJlYWt9ZWxzZXticmVhayBhfX1pZighKChvY1tjWyhjW0Q+PjJdfDApKzM2Pj4yXSYxMjddKEQpfDApPT0tMSkpe2lmKCFDKXticmVhayBhfX1lbHNle209MTV9fWVsc2V7bT0xNX19d2hpbGUoMCk7aWYoKG18MCk9PTE1KXttPTA7aWYoQyl7RD0wO2JyZWFrfWVsc2V7RD0wfX1HPWFbcD4+MF18MDtGPShHJjEpPT0wO2lmKEYpe0g9KEcmMjU1KT4+PjF9ZWxzZXtIPWNbaj4+Ml18MH1pZigoKGNbdj4+Ml18MCktRXwwKT09KEh8MCkpe2lmKEYpe0U9KEcmMjU1KT4+PjE7Rz0oRyYyNTUpPj4+MTtIPUU8PDF9ZWxzZXtFPWNbaj4+Ml18MDtHPWNbaj4+Ml18MDtIPUU8PDF9ZG97aWYoIShHPj4+MDxIPj4+MCkpe2lmKEYpe2FbcCtIKzE+PjBdPTA7YVtwPj4wXT1FPDwyO2JyZWFrfWVsc2V7YVsoY1t3Pj4yXXwwKStIPj4wXT0wO2Nbaj4+Ml09SDticmVha319ZWxzZXtoZyhwLEgtR3wwKX19d2hpbGUoMCk7SD1hW3A+PjBdfDA7aWYoKEgmMSk9PTApe0c9MTB9ZWxzZXtHPWNbcD4+Ml18MDtIPUcmMjU1O0c9KEcmLTIpKyAtMXwwfUY9KEgmMSk9PTA7aWYoRil7SD0oSCYyNTUpPj4+MX1lbHNle0g9Y1tqPj4yXXwwfWRve2lmKCEoSD4+PjA8Rz4+PjApKXtpZihGKXthW3ArRysxPj4wXT0wO2FbcD4+MF09Rzw8MTticmVha31lbHNle2FbKGNbdz4+Ml18MCkrRz4+MF09MDtjW2o+PjJdPUc7YnJlYWt9fWVsc2V7aGcocCxHLUh8MCl9fXdoaWxlKDApO2lmKChhW3A+PjBdJjEpPT0wKXtGPWd9ZWxzZXtGPWNbZj4+Ml18MH1jW3Y+PjJdPUYrRTtFPUZ9Rz1BKzEyfDA7SD1jW0c+PjJdfDA7Rj1BKzE2fDA7aWYoKEh8MCk9PShjW0Y+PjJdfDApKXtIPW9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MH1lbHNle0g9ZFtIPj4wXXwwfWlmKChvaShIJjI1NSx1LHksRSx2LHosQixvLHQscyxyLHgpfDApIT0wKXticmVha31DPWNbRz4+Ml18MDtpZigoQ3wwKT09KGNbRj4+Ml18MCkpe29jW2NbKGNbQT4+Ml18MCkrNDA+PjJdJjEyN10oQSl8MDtjb250aW51ZX1lbHNle2NbRz4+Ml09QysxO2NvbnRpbnVlfX14PWFbbz4+MF18MDtpZigoeCYxKT09MCl7eD0oeCYyNTUpPj4+MX1lbHNle3g9Y1tvKzQ+PjJdfDB9aWYoKCh4fDApIT0wPyhhW3U+PjBdfDApIT0wOjApPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7SD1jW3I+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1IfWhbbD4+M109K0dtKEUsY1t2Pj4yXXwwLGspO3FrKG8sdCxjW3M+PjJdfDAsayk7aWYoIUMpe2lmKChjW0ErMTI+PjJdfDApPT0oY1tBKzE2Pj4yXXwwKSl7SD0ob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTE7QT1IPzA6QX19ZWxzZXtBPTB9bD0oQXwwKT09MDtkb3tpZigoRHwwKSE9MCl7aWYoKGNbRCsxMj4+Ml18MCkhPShjW0QrMTY+PjJdfDApKXtpZihsKXticmVha31lbHNle209Njg7YnJlYWt9fWlmKCEoKG9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MCk9PS0xKSl7aWYoIWwpe209Njh9fWVsc2V7bT02Nn19ZWxzZXttPTY2fX13aGlsZSgwKTtpZigobXwwKT09NjY/bDowKXttPTY4fWlmKChtfDApPT02OCl7Y1trPj4yXT1jW2s+PjJdfDJ9Y1tiPj4yXT1BO2lmKCEoKGFbcD4+MF0mMSk9PTApPyhuPWNbdz4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZTtyZXR1cm59bT1jW28rOD4+Ml18MDtpZigobXwwKT09MCl7aT1lO3JldHVybn12bihtKTtpPWU7cmV0dXJufWZ1bmN0aW9uIFZoKGIsZSxmLGcsaixrLGwpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7ZT1pO2k9aSsyNTZ8MDt4PWUrMjA4fDA7ej1lKzIwMHwwO3c9ZSsyNDB8MDtvPWU7cD1lKzE4OHwwO3Y9ZSsxODR8MDt0PWUrMTZ8MDtzPWUrMTc2fDA7cj1lKzE4MHwwO3U9ZSsyNDF8MDt5PWUrMjQyfDA7QT1jW2Y+PjJdfDA7RD1jW2c+PjJdfDA7bmkobyxqLHgseix3KTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtoZyhwLDEwKTtpZigoYVtwPj4wXSYxKT09MCl7RT1wKzF8MDtnPUU7Zj1wKzh8MH1lbHNle0U9cCs4fDA7Zz1wKzF8MDtmPUU7RT1jW0U+PjJdfDB9Y1t2Pj4yXT1FO2Nbcz4+Ml09dDtjW3I+PjJdPTA7YVt1Pj4wXT0xO2FbeT4+MF09Njk7aj1wKzR8MDt6PWFbej4+MF18MDtCPWFbdz4+MF18MDt3PXArOHwwO2E6d2hpbGUoMSl7aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApPT0oY1tBKzE2Pj4yXXwwKSl7SD0ob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTE7QT1IPzA6QX19ZWxzZXtBPTB9Qz0oQXwwKT09MDtkb3tpZigoRHwwKSE9MCl7aWYoKGNbRCsxMj4+Ml18MCkhPShjW0QrMTY+PjJdfDApKXtpZihDKXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MCk9PS0xKSl7aWYoIUMpe2JyZWFrIGF9fWVsc2V7bT0xNX19ZWxzZXttPTE1fX13aGlsZSgwKTtpZigobXwwKT09MTUpe209MDtpZihDKXtEPTA7YnJlYWt9ZWxzZXtEPTB9fUc9YVtwPj4wXXwwO0Y9KEcmMSk9PTA7aWYoRil7SD0oRyYyNTUpPj4+MX1lbHNle0g9Y1tqPj4yXXwwfWlmKCgoY1t2Pj4yXXwwKS1FfDApPT0oSHwwKSl7aWYoRil7RT0oRyYyNTUpPj4+MTtHPShHJjI1NSk+Pj4xO0g9RTw8MX1lbHNle0U9Y1tqPj4yXXwwO0c9Y1tqPj4yXXwwO0g9RTw8MX1kb3tpZighKEc+Pj4wPEg+Pj4wKSl7aWYoRil7YVtwK0grMT4+MF09MDthW3A+PjBdPUU8PDI7YnJlYWt9ZWxzZXthWyhjW3c+PjJdfDApK0g+PjBdPTA7Y1tqPj4yXT1IO2JyZWFrfX1lbHNle2hnKHAsSC1HfDApfX13aGlsZSgwKTtIPWFbcD4+MF18MDtpZigoSCYxKT09MCl7Rz0xMH1lbHNle0c9Y1twPj4yXXwwO0g9RyYyNTU7Rz0oRyYtMikrIC0xfDB9Rj0oSCYxKT09MDtpZihGKXtIPShIJjI1NSk+Pj4xfWVsc2V7SD1jW2o+PjJdfDB9ZG97aWYoIShIPj4+MDxHPj4+MCkpe2lmKEYpe2FbcCtHKzE+PjBdPTA7YVtwPj4wXT1HPDwxO2JyZWFrfWVsc2V7YVsoY1t3Pj4yXXwwKStHPj4wXT0wO2Nbaj4+Ml09RzticmVha319ZWxzZXtoZyhwLEctSHwwKX19d2hpbGUoMCk7aWYoKGFbcD4+MF0mMSk9PTApe0Y9Z31lbHNle0Y9Y1tmPj4yXXwwfWNbdj4+Ml09RitFO0U9Rn1HPUErMTJ8MDtIPWNbRz4+Ml18MDtGPUErMTZ8MDtpZigoSHwwKT09KGNbRj4+Ml18MCkpe0g9b2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwfWVsc2V7SD1kW0g+PjBdfDB9aWYoKG9pKEgmMjU1LHUseSxFLHYseixCLG8sdCxzLHIseCl8MCkhPTApe2JyZWFrfUM9Y1tHPj4yXXwwO2lmKChDfDApPT0oY1tGPj4yXXwwKSl7b2NbY1soY1tBPj4yXXwwKSs0MD4+Ml0mMTI3XShBKXwwO2NvbnRpbnVlfWVsc2V7Y1tHPj4yXT1DKzE7Y29udGludWV9fXg9YVtvPj4wXXwwO2lmKCh4JjEpPT0wKXt4PSh4JjI1NSk+Pj4xfWVsc2V7eD1jW28rND4+Ml18MH1pZigoKHh8MCkhPTA/KGFbdT4+MF18MCkhPTA6MCk/KHE9Y1tzPj4yXXwwLChxLXR8MCk8MTYwKTowKXtIPWNbcj4+Ml18MDtjW3M+PjJdPXErNDtjW3E+PjJdPUh9aFtsPj4zXT0rRm0oRSxjW3Y+PjJdfDAsayk7cWsobyx0LGNbcz4+Ml18MCxrKTtpZighQyl7aWYoKGNbQSsxMj4+Ml18MCk9PShjW0ErMTY+PjJdfDApKXtIPShvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMTtBPUg/MDpBfX1lbHNle0E9MH1sPShBfDApPT0wO2Rve2lmKChEfDApIT0wKXtpZigoY1tEKzEyPj4yXXwwKSE9KGNbRCsxNj4+Ml18MCkpe2lmKGwpe2JyZWFrfWVsc2V7bT02ODticmVha319aWYoISgob2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwKT09LTEpKXtpZighbCl7bT02OH19ZWxzZXttPTY2fX1lbHNle209NjZ9fXdoaWxlKDApO2lmKChtfDApPT02Nj9sOjApe209Njh9aWYoKG18MCk9PTY4KXtjW2s+PjJdPWNbaz4+Ml18Mn1jW2I+PjJdPUE7aWYoISgoYVtwPj4wXSYxKT09MCk/KG49Y1t3Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZigoYVtvPj4wXSYxKT09MCl7aT1lO3JldHVybn1tPWNbbys4Pj4yXXwwO2lmKChtfDApPT0wKXtpPWU7cmV0dXJufXZuKG0pO2k9ZTtyZXR1cm59ZnVuY3Rpb24gV2goYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtlPWk7aT1pKzIyNHwwO249ZTtvPWUrMTg4fDA7bT1lKzE3NnwwO3c9ZSsxNnwwO3E9Y1toKzI4Pj4yXXwwO0Q9cSs0fDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ1NjtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDU2LG4pfWg9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3I9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcj4+Mj4+PjA+aD4+PjA/KHA9Y1tyKyhoPDwyKT4+Ml18MCwocHwwKSE9MCk6MCl7dWNbY1soY1twPj4yXXwwKSszMj4+Ml0mMzFdKHAsMTIwMTYsMTIwNDJ8MCxvKXwwO0M9cSs0fDA7RD1jW0M+PjJdfDA7Y1tDPj4yXT1EKyAtMTtpZigoRHwwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfWNbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2g9ejtxPW0rOHwwfWVsc2V7ej1tKzh8MDtoPW0rMXwwO3E9ejt6PWNbej4+Ml18MH11PW0rNHwwO3Y9bysyNHwwO3M9bysyNXwwO3Q9bysyNnwwO3I9bztwPW0rOHwwO3k9Y1tmPj4yXXwwO3g9MDtBPXo7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApPyhvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTowKXtjW2Y+PjJdPTA7eT0wfX1lbHNle3k9MH1DPSh5fDApPT0wO0I9Y1tnPj4yXXwwO2Rve2lmKChCfDApIT0wKXtpZigoY1tCKzEyPj4yXXwwKSE9KGNbQisxNj4+Ml18MCkpe2lmKEMpe2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwKT09LTEpKXtpZihDKXticmVha31lbHNle2JyZWFrIGF9fWVsc2V7Y1tnPj4yXT0wO2w9MjY7YnJlYWt9fWVsc2V7bD0yNn19d2hpbGUoMCk7aWYoKGx8MCk9PTI2PyhsPTAsQyk6MCl7YnJlYWt9RD1hW20+PjBdfDA7Qj0oRCYxKT09MDtpZihCKXtDPShEJjI1NSk+Pj4xfWVsc2V7Qz1jW3U+PjJdfDB9aWYoKEEtenwwKT09KEN8MCkpe2lmKEIpe0E9KEQmMjU1KT4+PjE7Qz0oRCYyNTUpPj4+MTt6PUE8PDF9ZWxzZXtBPWNbdT4+Ml18MDtDPWNbdT4+Ml18MDt6PUE8PDF9ZG97aWYoIShDPj4+MDx6Pj4+MCkpe2lmKEIpe2FbbSt6KzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKSt6Pj4wXT0wO2NbdT4+Ml09ejticmVha319ZWxzZXtoZyhtLHotQ3wwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe3o9MTB9ZWxzZXt6PWNbbT4+Ml18MDtDPXomMjU1O3o9KHomLTIpKyAtMXwwfUI9KEMmMSk9PTA7aWYoQil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t1Pj4yXXwwfWRve2lmKCEoQz4+PjA8ej4+PjApKXtpZihCKXthW20reisxPj4wXT0wO2FbbT4+MF09ejw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrej4+MF09MDtjW3U+PjJdPXo7YnJlYWt9fWVsc2V7aGcobSx6LUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWh9ZWxzZXt6PWNbcT4+Ml18MH1BPXorQXwwfUI9Y1t5KzEyPj4yXXwwO2lmKChCfDApPT0oY1t5KzE2Pj4yXXwwKSl7eT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXt5PWRbQj4+MF18MH1CPXkmMjU1O3k9KEF8MCk9PSh6fDApO2Rve2lmKHkpe0M9KGFbdj4+MF18MCk9PUI8PDI0Pj4yNDtpZighQz8hKChhW3M+PjBdfDApPT1CPDwyND4+MjQpOjApe0M9bztsPTYxO2JyZWFrfWFbQT4+MF09Qz80Mzo0NTtBPUErMXwwO3g9MH1lbHNle0M9bztsPTYxfX13aGlsZSgwKTtkb3tpZigobHwwKT09NjEpe3doaWxlKDEpe2w9MDtpZigoYVtDPj4wXXwwKT09Qjw8MjQ+PjI0KXticmVha31DPUMrMXwwO2lmKChDfDApPT0odHwwKSl7Qz10O2JyZWFrfWVsc2V7bD02MX19Qj1DLXJ8MDtpZigoQnwwKT4yMyl7YnJlYWsgYX1pZigoQnwwKTwyMil7YVtBPj4wXT1hWzEyMDE2K0I+PjBdfDA7QT1BKzF8MDt4PXgrMXwwO2JyZWFrfWlmKHkpe3o9QTticmVhayBhfWlmKChBLXp8MCk+PTMpe2JyZWFrIGF9aWYoKGFbQSsgLTE+PjBdfDApIT00OCl7YnJlYWsgYX1hW0E+PjBdPWFbMTIwMTYrQj4+MF18MDtBPUErMXwwO3g9MH19d2hpbGUoMCk7eT1jW2Y+PjJdfDA7Qj15KzEyfDA7Qz1jW0I+PjJdfDA7aWYoKEN8MCk9PShjW3krMTY+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7RD13O3c9RDtjb250aW51ZX1lbHNle2NbQj4+Ml09QysxO0Q9dzt3PUQ7Y29udGludWV9fWFbeiszPj4wXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1EPWNbMzM0MF18MDtjW24+PjJdPWs7aWYoKFloKHosRCxuKXwwKSE9MSl7Y1tqPj4yXT00fWs9Y1tmPj4yXXwwO2lmKChrfDApIT0wKXtpZigoY1trKzEyPj4yXXwwKT09KGNbaysxNj4+Ml18MCk/KG9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MCk9PS0xOjApe2NbZj4+Ml09MDtmPTB9ZWxzZXtmPWt9fWVsc2V7Zj0wfWs9KGZ8MCk9PTA7bj1jW2c+PjJdfDA7ZG97aWYoKG58MCkhPTApe2lmKChjW24rMTI+PjJdfDApIT0oY1tuKzE2Pj4yXXwwKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTkyO2JyZWFrfX1pZighKChvY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDApPT0tMSkpe2lmKGspe2JyZWFrfWVsc2V7bD05MjticmVha319ZWxzZXtjW2c+PjJdPTA7bD05MDticmVha319ZWxzZXtsPTkwfX13aGlsZSgwKTtpZigobHwwKT09OTA/azowKXtsPTkyfWlmKChsfDApPT05Mil7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1mO2lmKChhW20+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWo9Y1twPj4yXXwwO2lmKChqfDApPT0wKXtpPWU7cmV0dXJufXZuKGopO2k9ZTtyZXR1cm59RD1YYSg0KXwwO2NbRD4+Ml09MjEzMDQ7d2IoRHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gWGgoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MDtuPWk7cD1jW2Y+PjJdfDA7bz0ocHwwKT09KGV8MCk7ZG97aWYobyl7cT0oYVttKzI0Pj4wXXwwKT09Yjw8MjQ+PjI0O2lmKCFxPyEoKGFbbSsyNT4+MF18MCk9PWI8PDI0Pj4yNCk6MCl7YnJlYWt9Y1tmPj4yXT1lKzE7YVtlPj4wXT1xPzQzOjQ1O2NbZz4+Ml09MDtxPTA7aT1uO3JldHVybiBxfDB9fXdoaWxlKDApO3E9YVtqPj4wXXwwO2lmKChxJjEpPT0wKXtqPShxJjI1NSk+Pj4xfWVsc2V7aj1jW2orND4+Ml18MH1pZigoanwwKSE9MD9iPDwyND4+MjQ9PWg8PDI0Pj4yNDowKXtvPWNbbD4+Ml18MDtpZigoby1rfDApPj0xNjApe3E9MDtpPW47cmV0dXJuIHF8MH1xPWNbZz4+Ml18MDtjW2w+PjJdPW8rNDtjW28+PjJdPXE7Y1tnPj4yXT0wO3E9MDtpPW47cmV0dXJuIHF8MH1sPW0rMjZ8MDtrPW07d2hpbGUoMSl7aWYoKGFbaz4+MF18MCk9PWI8PDI0Pj4yNCl7YnJlYWt9az1rKzF8MDtpZigoa3wwKT09KGx8MCkpe2s9bDticmVha319bT1rLW18MDtpZigobXwwKT4yMyl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigoZHwwKT09MTB8KGR8MCk9PTgpe2lmKChtfDApPj0oZHwwKSl7cT0tMTtpPW47cmV0dXJuIHF8MH19ZWxzZSBpZigoZHwwKT09MTY/KG18MCk+PTIyOjApe2lmKG8pe3E9LTE7aT1uO3JldHVybiBxfDB9aWYoKHAtZXwwKT49Myl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigoYVtwKyAtMT4+MF18MCkhPTQ4KXtxPS0xO2k9bjtyZXR1cm4gcXwwfWNbZz4+Ml09MDtxPWFbMTIwMTYrbT4+MF18MDtjW2Y+PjJdPXArMTthW3A+PjBdPXE7cT0wO2k9bjtyZXR1cm4gcXwwfXE9YVsxMjAxNittPj4wXXwwO2NbZj4+Ml09cCsxO2FbcD4+MF09cTtjW2c+PjJdPShjW2c+PjJdfDApKzE7cT0wO2k9bjtyZXR1cm4gcXwwfWZ1bmN0aW9uIFloKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDtlPWk7aT1pKzE2fDA7Zj1lO2NbZj4+Ml09ZDtiPWliKGJ8MCl8MDthPU1hKGF8MCwxMjA1NixmfDApfDA7aWYoKGJ8MCk9PTApe2k9ZTtyZXR1cm4gYXwwfWliKGJ8MCl8MDtpPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiBaaChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBfaChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gJGgoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7az1pO2k9aSs2NHwwO3A9azt1PWsrNDh8MDtxPWsrNTJ8MDt0PWsrNTZ8MDtzPWsrMTZ8MDtyPWsrMTJ8MDtsPWsrMjR8MDtpZigoY1tnKzQ+PjJdJjF8MCk9PTApe2NbcT4+Ml09LTE7bD1jWyhjW2Q+PjJdfDApKzE2Pj4yXXwwO2Nbcz4+Ml09Y1tlPj4yXTtjW3I+PjJdPWNbZj4+Ml07Y1t1KzA+PjJdPWNbcyswPj4yXTtjW3ArMD4+Ml09Y1tyKzA+PjJdO2ljW2wmNjNdKHQsZCx1LHAsZyxoLHEpO2w9Y1t0Pj4yXXwwO2NbZT4+Ml09bDtlPWNbcT4+Ml18MDtpZigoZXwwKT09MSl7YVtqPj4wXT0xfWVsc2UgaWYoKGV8MCk9PTApe2Fbaj4+MF09MH1lbHNle2Fbaj4+MF09MTtjW2g+PjJdPTR9Y1tiPj4yXT1sO2k9aztyZXR1cm59cT1nKzI4fDA7cj1jW3E+PjJdfDA7ZD1yKzR8MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW3A+PjJdPTEzNDQ4O2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM0NDgscCl9cz0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dD1jW3IrOD4+Ml18MDtpZigoY1tyKzEyPj4yXXwwKS10Pj4yPj4+MD5zPj4+MD8obz1jW3QrKHM8PDIpPj4yXXwwLChvfDApIT0wKTowKXt1PXIrNHwwO2Q9Y1t1Pj4yXXwwO2NbdT4+Ml09ZCsgLTE7aWYoKGR8MCk9PTApe2xjW2NbKGNbcj4+Ml18MCkrOD4+Ml0mMjU1XShyKX1xPWNbcT4+Ml18MDtkPXErNHwwO2NbZD4+Ml09KGNbZD4+Ml18MCkrMTtpZighKChjWzM0MDJdfDApPT0tMSkpe2NbcD4+Ml09MTM2MDg7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzYwOCxwKX1wPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtyPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXI+PjI+Pj4wPnA+Pj4wPyhuPWNbcisocDw8Mik+PjJdfDAsKG58MCkhPTApOjApe3U9cSs0fDA7ZD1jW3U+PjJdfDA7Y1t1Pj4yXT1kKyAtMTtpZigoZHwwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfW1jW2NbKGNbbj4+Ml18MCkrMjQ+PjJdJjEyN10obCxuKTtkPWwrMTJ8MDttY1tjWyhjW24+PjJdfDApKzI4Pj4yXSYxMjddKGQsbik7YVtqPj4wXT0oYWkoZSxjW2Y+PjJdfDAsbCxsKzI0fDAsbyxoLDEpfDApPT0obHwwKSYxO2NbYj4+Ml09Y1tlPj4yXTtpZighKChhW2Q+PjBdJjEpPT0wKT8obT1jW2wrMjA+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW2w+PjBdJjEpPT0wKXtpPWs7cmV0dXJufWI9Y1tsKzg+PjJdfDA7aWYoKGJ8MCk9PTApe2k9aztyZXR1cm59dm4oYik7aT1rO3JldHVybn1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBhaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO2w9aTtpPWkrMTEyfDA7bj1sO3M9KGYtZXwwKS8xMnwwO2lmKHM+Pj4wPjEwMCl7bj11bihzKXwwO2lmKChufDApPT0wKXt6PVhhKDQpfDA7Y1t6Pj4yXT0yMjY4MDt3Yih6fDAsMjI3MjgsMjA2KX1lbHNle2s9bn19ZWxzZXtrPTB9bz0oZXwwKT09KGZ8MCk7aWYobyl7dD0wfWVsc2V7cD1lO3Q9MDtxPW47d2hpbGUoMSl7cj1hW3A+PjBdfDA7aWYoKHImMSk9PTApe3I9KHImMjU1KT4+PjF9ZWxzZXtyPWNbcCs0Pj4yXXwwfWlmKChyfDApPT0wKXthW3E+PjBdPTI7dD10KzF8MDtzPXMrIC0xfDB9ZWxzZXthW3E+PjBdPTF9cD1wKzEyfDA7aWYoKHB8MCk9PShmfDApKXticmVha31lbHNle3E9cSsxfDB9fX1wPTA7YTp3aGlsZSgxKXt1PShzfDApIT0wO3E9cDt3aGlsZSgxKXtyPWNbYj4+Ml18MDtkb3tpZigocnwwKSE9MCl7cD1jW3IrMTI+PjJdfDA7aWYoKHB8MCk9PShjW3IrMTY+PjJdfDApKXtwPW9jW2NbKGNbcj4+Ml18MCkrMzY+PjJdJjEyN10ocil8MH1lbHNle3A9Y1twPj4yXXwwfWlmKChwfDApPT0tMSl7Y1tiPj4yXT0wO3I9MTticmVha31lbHNle3I9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7cj0xfX13aGlsZSgwKTtpZigoZHwwKT09MCl7cD0wO3c9MTtkPTB9ZWxzZXtwPWNbZCsxMj4+Ml18MDtpZigocHwwKT09KGNbZCsxNj4+Ml18MCkpe3A9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7cD1jW3A+PjJdfDB9ej0ocHwwKT09LTE7cD16PzA6ZDt3PXo/MTowO2Q9ej8wOmR9dj1jW2I+PjJdfDA7aWYoISgocl53KSZ1KSl7YnJlYWsgYX1wPWNbdisxMj4+Ml18MDtpZigocHwwKT09KGNbdisxNj4+Ml18MCkpe3I9b2NbY1soY1t2Pj4yXXwwKSszNj4+Ml0mMTI3XSh2KXwwfWVsc2V7cj1jW3A+PjJdfDB9aWYoIWope3I9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcscil8MH1wPXErMXwwO2lmKG8pe3E9cH1lbHNle2JyZWFrfX1iOmRve2lmKGope3c9MDt1PWU7dj1uO3doaWxlKDEpe2Rve2lmKChhW3Y+PjBdfDApPT0xKXt4PWFbdT4+MF18MDt5PSh4JjEpPT0wO2lmKHkpe3o9dSs0fDB9ZWxzZXt6PWNbdSs4Pj4yXXwwfWlmKChyfDApIT0oY1t6KyhxPDwyKT4+Ml18MCkpe2Fbdj4+MF09MDtzPXMrIC0xfDA7YnJlYWt9aWYoeSl7dz0oeCYyNTUpPj4+MX1lbHNle3c9Y1t1KzQ+PjJdfDB9aWYoKHd8MCk9PShwfDApKXthW3Y+PjBdPTI7dz0xO3Q9dCsxfDA7cz1zKyAtMXwwfWVsc2V7dz0xfX19d2hpbGUoMCk7dT11KzEyfDA7aWYoKHV8MCk9PShmfDApKXticmVhayBifXY9disxfDB9fWVsc2V7dz0wO3U9ZTt2PW47d2hpbGUoMSl7ZG97aWYoKGFbdj4+MF18MCk9PTEpe2lmKChhW3U+PjBdJjEpPT0wKXt4PXUrNHwwfWVsc2V7eD1jW3UrOD4+Ml18MH1pZigocnwwKSE9KHhjW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjYzXShnLGNbeCsocTw8Mik+PjJdfDApfDApKXthW3Y+PjBdPTA7cz1zKyAtMXwwO2JyZWFrfXc9YVt1Pj4wXXwwO2lmKCh3JjEpPT0wKXt3PSh3JjI1NSk+Pj4xfWVsc2V7dz1jW3UrND4+Ml18MH1pZigod3wwKT09KHB8MCkpe2Fbdj4+MF09Mjt3PTE7dD10KzF8MDtzPXMrIC0xfDB9ZWxzZXt3PTF9fX13aGlsZSgwKTt1PXUrMTJ8MDtpZigodXwwKT09KGZ8MCkpe2JyZWFrIGJ9dj12KzF8MH19fXdoaWxlKDApO2lmKCF3KXtjb250aW51ZX11PWNbYj4+Ml18MDtyPXUrMTJ8MDtxPWNbcj4+Ml18MDtpZigocXwwKT09KGNbdSsxNj4+Ml18MCkpe29jW2NbKGNbdT4+Ml18MCkrNDA+PjJdJjEyN10odSl8MH1lbHNle2Nbcj4+Ml09cSs0fWlmKChzK3R8MCk+Pj4wPDIpe2NvbnRpbnVlfWVsc2V7cj1lO3E9bn13aGlsZSgxKXtpZigoYVtxPj4wXXwwKT09Mil7dT1hW3I+PjBdfDA7aWYoKHUmMSk9PTApe3U9KHUmMjU1KT4+PjF9ZWxzZXt1PWNbcis0Pj4yXXwwfWlmKCh1fDApIT0ocHwwKSl7YVtxPj4wXT0wO3Q9dCsgLTF8MH19cj1yKzEyfDA7aWYoKHJ8MCk9PShmfDApKXtjb250aW51ZSBhfWVsc2V7cT1xKzF8MH19fWRve2lmKCh2fDApIT0wKXtqPWNbdisxMj4+Ml18MDtpZigoanwwKT09KGNbdisxNj4+Ml18MCkpe2o9b2NbY1soY1t2Pj4yXXwwKSszNj4+Ml0mMTI3XSh2KXwwfWVsc2V7aj1jW2o+PjJdfDB9aWYoKGp8MCk9PS0xKXtjW2I+PjJdPTA7Yj0xO2JyZWFrfWVsc2V7Yj0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtiPTF9fXdoaWxlKDApO2lmKChwfDApIT0wKXtqPWNbcCsxMj4+Ml18MDtpZigoanwwKT09KGNbcCsxNj4+Ml18MCkpe2o9b2NbY1soY1twPj4yXXwwKSszNj4+Ml0mMTI3XShwKXwwfWVsc2V7aj1jW2o+PjJdfDB9aWYoISgoanwwKT09LTEpKXtpZighYil7bT04OH19ZWxzZXttPTg2fX1lbHNle209ODZ9aWYoKG18MCk9PTg2P2I6MCl7bT04OH1pZigobXwwKT09ODgpe2NbaD4+Ml09Y1toPj4yXXwyfWM6ZG97aWYoIW8pe2lmKChhW24+PjBdfDApPT0yKXtmPWV9ZWxzZXt3aGlsZSgxKXtlPWUrMTJ8MDtuPW4rMXwwO2lmKChlfDApPT0oZnwwKSl7bT05MzticmVhayBjfWlmKChhW24+PjBdfDApPT0yKXtmPWU7YnJlYWt9fX19ZWxzZXttPTkzfX13aGlsZSgwKTtpZigobXwwKT09OTMpe2NbaD4+Ml09Y1toPj4yXXw0fWlmKChrfDApPT0wKXtpPWw7cmV0dXJuIGZ8MH12bihrKTtpPWw7cmV0dXJuIGZ8MH1mdW5jdGlvbiBiaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtkPWk7aT1pKzMwNHwwO3U9ZCsxNjB8MDtvPWQrMjgwfDA7bj1kKzI2NHwwO209ZCsyODR8MDt0PWQrMzAwfDA7cj1kO3M9ZCsyNzZ8MDtxPWQrMjk2fDA7dz1jW2U+PjJdfDA7eT1jW2Y+PjJdfDA7Zj1jW2crND4+Ml0mNzQ7aWYoKGZ8MCk9PTY0KXtmPTh9ZWxzZSBpZigoZnwwKT09MCl7Zj0wfWVsc2UgaWYoKGZ8MCk9PTgpe2Y9MTZ9ZWxzZXtmPTEwfXBpKG4sZyx1LG8pO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2U9ejtnPW0rOHwwfWVsc2V7ej1tKzh8MDtlPW0rMXwwO2c9ejt6PWNbej4+Ml18MH1jW3Q+PjJdPXo7Y1tzPj4yXT1yO2NbcT4+Ml09MDt2PW0rNHwwO3g9Y1tvPj4yXXwwO289bSs4fDA7d2hpbGUoMSl7aWYoKHd8MCk9PTApe0E9MTt3PTB9ZWxzZXtBPWNbdysxMj4+Ml18MDtpZigoQXwwKT09KGNbdysxNj4+Ml18MCkpe0E9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7QT1jW0E+PjJdfDB9Qz0oQXwwKT09LTE7QT1DPzE6MDt3PUM/MDp3fWlmKCh5fDApIT0wKXtCPWNbeSsxMj4+Ml18MDtpZigoQnwwKT09KGNbeSsxNj4+Ml18MCkpe0I9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZighQSl7YnJlYWt9fWVsc2V7az0yMH19ZWxzZXtrPTIwfWlmKChrfDApPT0yMCl7az0wO2lmKEEpe3k9MDticmVha31lbHNle3k9MH19QT1hW20+PjBdfDA7Qj0oQSYxKT09MDtpZihCKXtDPShBJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9aWYoKChjW3Q+PjJdfDApLXp8MCk9PShDfDApKXtpZihCKXtEPShBJjI1NSk+Pj4xO3o9KEEmMjU1KT4+PjE7Qz1EPDwxO0E9RH1lbHNle0E9Y1t2Pj4yXXwwO3o9Y1t2Pj4yXXwwO0M9QTw8MX1kb3tpZighKHo+Pj4wPEM+Pj4wKSl7aWYoQil7YVttK0MrMT4+MF09MDthW20+PjBdPUE8PDI7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0M+PjBdPTA7Y1t2Pj4yXT1DO2JyZWFrfX1lbHNle2hnKG0sQy16fDApfX13aGlsZSgwKTtDPWFbbT4+MF18MDtpZigoQyYxKT09MCl7Qj0xMH1lbHNle0I9Y1ttPj4yXXwwO0M9QiYyNTU7Qj0oQiYtMikrIC0xfDB9ej0oQyYxKT09MDtpZih6KXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9ZG97aWYoIShDPj4+MDxCPj4+MCkpe2lmKHope2FbbStCKzE+PjBdPTA7YVttPj4wXT1CPDwxO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStCPj4wXT0wO2Nbdj4+Ml09QjticmVha319ZWxzZXtoZyhtLEItQ3wwKX19d2hpbGUoMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9ZX1lbHNle3o9Y1tnPj4yXXwwfWNbdD4+Ml09eitBfUE9dysxMnwwO0M9Y1tBPj4yXXwwO0I9dysxNnwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7Qz1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtDPWNbQz4+Ml18MH1pZigobGkoQyxmLHosdCxxLHgsbixyLHMsdSl8MCkhPTApe2JyZWFrfUM9Y1tBPj4yXXwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7b2NbY1soY1t3Pj4yXXwwKSs0MD4+Ml0mMTI3XSh3KXwwO2NvbnRpbnVlfWVsc2V7Y1tBPj4yXT1DKzQ7Y29udGludWV9fXU9YVtuPj4wXXwwO2lmKCh1JjEpPT0wKXt1PSh1JjI1NSk+Pj4xfWVsc2V7dT1jW24rND4+Ml18MH1pZigodXwwKSE9MD8ocD1jW3M+PjJdfDAsKHAtcnwwKTwxNjApOjApe0Q9Y1txPj4yXXwwO2Nbcz4+Ml09cCs0O2NbcD4+Ml09RH1jW2o+PjJdPU5tKHosY1t0Pj4yXXwwLGgsZil8MDtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gY2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7ZD1pO2k9aSszMDR8MDt1PWQrMTYwfDA7bz1kKzI4MHwwO249ZCsyNjR8MDttPWQrMjg0fDA7dD1kKzMwMHwwO3I9ZDtzPWQrMjc2fDA7cT1kKzI5NnwwO3c9Y1tlPj4yXXwwO3k9Y1tmPj4yXXwwO2Y9Y1tnKzQ+PjJdJjc0O2lmKChmfDApPT04KXtmPTE2fWVsc2UgaWYoKGZ8MCk9PTY0KXtmPTh9ZWxzZSBpZigoZnwwKT09MCl7Zj0wfWVsc2V7Zj0xMH1waShuLGcsdSxvKTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtoZyhtLDEwKTtpZigoYVttPj4wXSYxKT09MCl7ej1tKzF8MDtlPXo7Zz1tKzh8MH1lbHNle3o9bSs4fDA7ZT1tKzF8MDtnPXo7ej1jW3o+PjJdfDB9Y1t0Pj4yXT16O2Nbcz4+Ml09cjtjW3E+PjJdPTA7dj1tKzR8MDt4PWNbbz4+Ml18MDtvPW0rOHwwO3doaWxlKDEpe2lmKCh3fDApPT0wKXtBPTE7dz0wfWVsc2V7QT1jW3crMTI+PjJdfDA7aWYoKEF8MCk9PShjW3crMTY+PjJdfDApKXtBPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0E9Y1tBPj4yXXwwfUM9KEF8MCk9PS0xO0E9Qz8xOjA7dz1DPzA6d31pZigoeXwwKSE9MCl7Qj1jW3krMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3krMTY+PjJdfDApKXtCPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0I9Y1tCPj4yXXwwfWlmKCEoKEJ8MCk9PS0xKSl7aWYoIUEpe2JyZWFrfX1lbHNle2s9MjB9fWVsc2V7az0yMH1pZigoa3wwKT09MjApe2s9MDtpZihBKXt5PTA7YnJlYWt9ZWxzZXt5PTB9fUE9YVttPj4wXXwwO0I9KEEmMSk9PTA7aWYoQil7Qz0oQSYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWlmKCgoY1t0Pj4yXXwwKS16fDApPT0oQ3wwKSl7aWYoQil7RD0oQSYyNTUpPj4+MTt6PShBJjI1NSk+Pj4xO0M9RDw8MTtBPUR9ZWxzZXtBPWNbdj4+Ml18MDt6PWNbdj4+Ml18MDtDPUE8PDF9ZG97aWYoISh6Pj4+MDxDPj4+MCkpe2lmKEIpe2FbbStDKzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStDPj4wXT0wO2Nbdj4+Ml09QzticmVha319ZWxzZXtoZyhtLEMtenwwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe0I9MTB9ZWxzZXtCPWNbbT4+Ml18MDtDPUImMjU1O0I9KEImLTIpKyAtMXwwfXo9KEMmMSk9PTA7aWYoeil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWRve2lmKCEoQz4+PjA8Qj4+PjApKXtpZih6KXthW20rQisxPj4wXT0wO2FbbT4+MF09Qjw8MTticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQj4+MF09MDtjW3Y+PjJdPUI7YnJlYWt9fWVsc2V7aGcobSxCLUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWV9ZWxzZXt6PWNbZz4+Ml18MH1jW3Q+PjJdPXorQX1BPXcrMTJ8MDtDPWNbQT4+Ml18MDtCPXcrMTZ8MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe0M9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7Qz1jW0M+PjJdfDB9aWYoKGxpKEMsZix6LHQscSx4LG4scixzLHUpfDApIT0wKXticmVha31DPWNbQT4+Ml18MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe29jW2NbKGNbdz4+Ml18MCkrNDA+PjJdJjEyN10odyl8MDtjb250aW51ZX1lbHNle2NbQT4+Ml09Qys0O2NvbnRpbnVlfX11PWFbbj4+MF18MDtpZigodSYxKT09MCl7dT0odSYyNTUpPj4+MX1lbHNle3U9Y1tuKzQ+PjJdfDB9aWYoKHV8MCkhPTA/KHA9Y1tzPj4yXXwwLChwLXJ8MCk8MTYwKTowKXtEPWNbcT4+Ml18MDtjW3M+PjJdPXArNDtjW3A+PjJdPUR9Qz1NbSh6LGNbdD4+Ml18MCxoLGYpfDA7RD1qO2NbRD4+Ml09QztjW0QrND4+Ml09STtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZGkoZCxlLGYsZyxoLGosayl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7ZT1pO2k9aSszMDR8MDt2PWUrMTYwfDA7cD1lKzI4MHwwO289ZSsyNjR8MDtuPWUrMjg0fDA7dT1lKzMwMHwwO3M9ZTt0PWUrMjc2fDA7cj1lKzI5NnwwO3g9Y1tmPj4yXXwwO3o9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09NjQpe2c9OH1lbHNlIGlmKChnfDApPT04KXtnPTE2fWVsc2V7Zz0xMH1waShvLGgsdixwKTtjW24rMD4+Ml09MDtjW24rND4+Ml09MDtjW24rOD4+Ml09MDtoZyhuLDEwKTtpZigoYVtuPj4wXSYxKT09MCl7QT1uKzF8MDtmPUE7aD1uKzh8MH1lbHNle0E9bis4fDA7Zj1uKzF8MDtoPUE7QT1jW0E+PjJdfDB9Y1t1Pj4yXT1BO2NbdD4+Ml09cztjW3I+PjJdPTA7dz1uKzR8MDt5PWNbcD4+Ml18MDtwPW4rOHwwO3doaWxlKDEpe2lmKCh4fDApPT0wKXtCPTE7eD0wfWVsc2V7Qj1jW3grMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3grMTY+PjJdfDApKXtCPW9jW2NbKGNbeD4+Ml18MCkrMzY+PjJdJjEyN10oeCl8MH1lbHNle0I9Y1tCPj4yXXwwfUQ9KEJ8MCk9PS0xO0I9RD8xOjA7eD1EPzA6eH1pZigoenwwKSE9MCl7Qz1jW3orMTI+PjJdfDA7aWYoKEN8MCk9PShjW3orMTY+PjJdfDApKXtDPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0M9Y1tDPj4yXXwwfWlmKCEoKEN8MCk9PS0xKSl7aWYoIUIpe2JyZWFrfX1lbHNle2w9MjB9fWVsc2V7bD0yMH1pZigobHwwKT09MjApe2w9MDtpZihCKXt6PTA7YnJlYWt9ZWxzZXt6PTB9fUI9YVtuPj4wXXwwO0M9KEImMSk9PTA7aWYoQyl7RD0oQiYyNTUpPj4+MX1lbHNle0Q9Y1t3Pj4yXXwwfWlmKCgoY1t1Pj4yXXwwKS1BfDApPT0oRHwwKSl7aWYoQyl7RT0oQiYyNTUpPj4+MTtBPShCJjI1NSk+Pj4xO0Q9RTw8MTtCPUV9ZWxzZXtCPWNbdz4+Ml18MDtBPWNbdz4+Ml18MDtEPUI8PDF9ZG97aWYoIShBPj4+MDxEPj4+MCkpe2lmKEMpe2FbbitEKzE+PjBdPTA7YVtuPj4wXT1CPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStEPj4wXT0wO2Nbdz4+Ml09RDticmVha319ZWxzZXtoZyhuLEQtQXwwKX19d2hpbGUoMCk7RD1hW24+PjBdfDA7aWYoKEQmMSk9PTApe0M9MTB9ZWxzZXtDPWNbbj4+Ml18MDtEPUMmMjU1O0M9KEMmLTIpKyAtMXwwfUE9KEQmMSk9PTA7aWYoQSl7RD0oRCYyNTUpPj4+MX1lbHNle0Q9Y1t3Pj4yXXwwfWRve2lmKCEoRD4+PjA8Qz4+PjApKXtpZihBKXthW24rQysxPj4wXT0wO2Fbbj4+MF09Qzw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrQz4+MF09MDtjW3c+PjJdPUM7YnJlYWt9fWVsc2V7aGcobixDLUR8MCl9fXdoaWxlKDApO2lmKChhW24+PjBdJjEpPT0wKXtBPWZ9ZWxzZXtBPWNbaD4+Ml18MH1jW3U+PjJdPUErQn1CPXgrMTJ8MDtEPWNbQj4+Ml18MDtDPXgrMTZ8MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe0Q9b2NbY1soY1t4Pj4yXXwwKSszNj4+Ml0mMTI3XSh4KXwwfWVsc2V7RD1jW0Q+PjJdfDB9aWYoKGxpKEQsZyxBLHUscix5LG8scyx0LHYpfDApIT0wKXticmVha31EPWNbQj4+Ml18MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeD4+Ml18MCkrNDA+PjJdJjEyN10oeCl8MDtjb250aW51ZX1lbHNle2NbQj4+Ml09RCs0O2NvbnRpbnVlfX12PWFbbz4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tvKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHE9Y1t0Pj4yXXwwLChxLXN8MCk8MTYwKTowKXtFPWNbcj4+Ml18MDtjW3Q+PjJdPXErNDtjW3E+PjJdPUV9YltrPj4xXT1MbShBLGNbdT4+Ml18MCxqLGcpfDA7cWsobyxzLGNbdD4+Ml18MCxqKTtpZigoeHwwKT09MCl7az0wO3E9MX1lbHNle2s9Y1t4KzEyPj4yXXwwO2lmKChrfDApPT0oY1t4KzE2Pj4yXXwwKSl7az1vY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDB9ZWxzZXtrPWNbaz4+Ml18MH1xPShrfDApPT0tMTtrPXE/MDp4O3E9cT8xOjB9aWYoKHp8MCkhPTApe3I9Y1t6KzEyPj4yXXwwO2lmKChyfDApPT0oY1t6KzE2Pj4yXXwwKSl7cj1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtyPWNbcj4+Ml18MH1pZighKChyfDApPT0tMSkpe2lmKCFxKXtsPTczfX1lbHNle2w9NzF9fWVsc2V7bD03MX1pZigobHwwKT09NzE/cTowKXtsPTczfWlmKChsfDApPT03Myl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tkPj4yXT1rO2lmKCEoKGFbbj4+MF0mMSk9PTApPyhtPWNbcD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZTtyZXR1cm59aj1jW28rOD4+Ml18MDtpZigoanwwKT09MCl7aT1lO3JldHVybn12bihqKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGVpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO2Q9aTtpPWkrMzA0fDA7dT1kKzE2MHwwO289ZCsyODB8MDtuPWQrMjY0fDA7bT1kKzI4NHwwO3Q9ZCszMDB8MDtyPWQ7cz1kKzI3NnwwO3E9ZCsyOTZ8MDt3PWNbZT4+Ml18MDt5PWNbZj4+Ml18MDtmPWNbZys0Pj4yXSY3NDtpZigoZnwwKT09OCl7Zj0xNn1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2UgaWYoKGZ8MCk9PTApe2Y9MH1lbHNle2Y9MTB9cGkobixnLHUsbyk7Y1ttKzA+PjJdPTA7Y1ttKzQ+PjJdPTA7Y1ttKzg+PjJdPTA7aGcobSwxMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9bSsxfDA7ZT16O2c9bSs4fDB9ZWxzZXt6PW0rOHwwO2U9bSsxfDA7Zz16O3o9Y1t6Pj4yXXwwfWNbdD4+Ml09ejtjW3M+PjJdPXI7Y1txPj4yXT0wO3Y9bSs0fDA7eD1jW28+PjJdfDA7bz1tKzh8MDt3aGlsZSgxKXtpZigod3wwKT09MCl7QT0xO3c9MH1lbHNle0E9Y1t3KzEyPj4yXXwwO2lmKChBfDApPT0oY1t3KzE2Pj4yXXwwKSl7QT1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtBPWNbQT4+Ml18MH1DPShBfDApPT0tMTtBPUM/MTowO3c9Qz8wOnd9aWYoKHl8MCkhPTApe0I9Y1t5KzEyPj4yXXwwO2lmKChCfDApPT0oY1t5KzE2Pj4yXXwwKSl7Qj1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtCPWNbQj4+Ml18MH1pZighKChCfDApPT0tMSkpe2lmKCFBKXticmVha319ZWxzZXtrPTIwfX1lbHNle2s9MjB9aWYoKGt8MCk9PTIwKXtrPTA7aWYoQSl7eT0wO2JyZWFrfWVsc2V7eT0wfX1BPWFbbT4+MF18MDtCPShBJjEpPT0wO2lmKEIpe0M9KEEmMjU1KT4+PjF9ZWxzZXtDPWNbdj4+Ml18MH1pZigoKGNbdD4+Ml18MCktenwwKT09KEN8MCkpe2lmKEIpe0Q9KEEmMjU1KT4+PjE7ej0oQSYyNTUpPj4+MTtDPUQ8PDE7QT1EfWVsc2V7QT1jW3Y+PjJdfDA7ej1jW3Y+PjJdfDA7Qz1BPDwxfWRve2lmKCEoej4+PjA8Qz4+PjApKXtpZihCKXthW20rQysxPj4wXT0wO2FbbT4+MF09QTw8MjticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQz4+MF09MDtjW3Y+PjJdPUM7YnJlYWt9fWVsc2V7aGcobSxDLXp8MCl9fXdoaWxlKDApO0M9YVttPj4wXXwwO2lmKChDJjEpPT0wKXtCPTEwfWVsc2V7Qj1jW20+PjJdfDA7Qz1CJjI1NTtCPShCJi0yKSsgLTF8MH16PShDJjEpPT0wO2lmKHope0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbdj4+Ml18MH1kb3tpZighKEM+Pj4wPEI+Pj4wKSl7aWYoeil7YVttK0IrMT4+MF09MDthW20+PjBdPUI8PDE7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0I+PjBdPTA7Y1t2Pj4yXT1CO2JyZWFrfX1lbHNle2hnKG0sQi1DfDApfX13aGlsZSgwKTtpZigoYVttPj4wXSYxKT09MCl7ej1lfWVsc2V7ej1jW2c+PjJdfDB9Y1t0Pj4yXT16K0F9QT13KzEyfDA7Qz1jW0E+PjJdfDA7Qj13KzE2fDA7aWYoKEN8MCk9PShjW0I+PjJdfDApKXtDPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0M9Y1tDPj4yXXwwfWlmKChsaShDLGYseix0LHEseCxuLHIscyx1KXwwKSE9MCl7YnJlYWt9Qz1jW0E+PjJdfDA7aWYoKEN8MCk9PShjW0I+PjJdfDApKXtvY1tjWyhjW3c+PjJdfDApKzQwPj4yXSYxMjddKHcpfDA7Y29udGludWV9ZWxzZXtjW0E+PjJdPUMrNDtjb250aW51ZX19dT1hW24+PjBdfDA7aWYoKHUmMSk9PTApe3U9KHUmMjU1KT4+PjF9ZWxzZXt1PWNbbis0Pj4yXXwwfWlmKCh1fDApIT0wPyhwPWNbcz4+Ml18MCwocC1yfDApPDE2MCk6MCl7RD1jW3E+PjJdfDA7Y1tzPj4yXT1wKzQ7Y1twPj4yXT1EfWNbaj4+Ml09S20oeixjW3Q+PjJdfDAsaCxmKXwwO3FrKG4scixjW3M+PjJdfDAsaCk7aWYoKHd8MCk9PTApe2o9MDtwPTF9ZWxzZXtqPWNbdysxMj4+Ml18MDtpZigoanwwKT09KGNbdysxNj4+Ml18MCkpe2o9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7aj1jW2o+PjJdfDB9cD0oanwwKT09LTE7aj1wPzA6dztwPXA/MTowfWlmKCh5fDApIT0wKXtxPWNbeSsxMj4+Ml18MDtpZigocXwwKT09KGNbeSsxNj4+Ml18MCkpe3E9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7cT1jW3E+PjJdfDB9aWYoISgocXwwKT09LTEpKXtpZighcCl7az03M319ZWxzZXtrPTcxfX1lbHNle2s9NzF9aWYoKGt8MCk9PTcxP3A6MCl7az03M31pZigoa3wwKT09NzMpe2NbaD4+Ml09Y1toPj4yXXwyfWNbYj4+Ml09ajtpZighKChhW20+PjBdJjEpPT0wKT8obD1jW28+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKChhW24+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWg9Y1tuKzg+PjJdfDA7aWYoKGh8MCk9PTApe2k9ZDtyZXR1cm59dm4oaCk7aT1kO3JldHVybn1mdW5jdGlvbiBmaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtkPWk7aT1pKzMwNHwwO3U9ZCsxNjB8MDtvPWQrMjgwfDA7bj1kKzI2NHwwO209ZCsyODR8MDt0PWQrMzAwfDA7cj1kO3M9ZCsyNzZ8MDtxPWQrMjk2fDA7dz1jW2U+PjJdfDA7eT1jW2Y+PjJdfDA7Zj1jW2crND4+Ml0mNzQ7aWYoKGZ8MCk9PTApe2Y9MH1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2UgaWYoKGZ8MCk9PTgpe2Y9MTZ9ZWxzZXtmPTEwfXBpKG4sZyx1LG8pO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2U9ejtnPW0rOHwwfWVsc2V7ej1tKzh8MDtlPW0rMXwwO2c9ejt6PWNbej4+Ml18MH1jW3Q+PjJdPXo7Y1tzPj4yXT1yO2NbcT4+Ml09MDt2PW0rNHwwO3g9Y1tvPj4yXXwwO289bSs4fDA7d2hpbGUoMSl7aWYoKHd8MCk9PTApe0E9MTt3PTB9ZWxzZXtBPWNbdysxMj4+Ml18MDtpZigoQXwwKT09KGNbdysxNj4+Ml18MCkpe0E9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7QT1jW0E+PjJdfDB9Qz0oQXwwKT09LTE7QT1DPzE6MDt3PUM/MDp3fWlmKCh5fDApIT0wKXtCPWNbeSsxMj4+Ml18MDtpZigoQnwwKT09KGNbeSsxNj4+Ml18MCkpe0I9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZighQSl7YnJlYWt9fWVsc2V7az0yMH19ZWxzZXtrPTIwfWlmKChrfDApPT0yMCl7az0wO2lmKEEpe3k9MDticmVha31lbHNle3k9MH19QT1hW20+PjBdfDA7Qj0oQSYxKT09MDtpZihCKXtDPShBJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9aWYoKChjW3Q+PjJdfDApLXp8MCk9PShDfDApKXtpZihCKXtEPShBJjI1NSk+Pj4xO3o9KEEmMjU1KT4+PjE7Qz1EPDwxO0E9RH1lbHNle0E9Y1t2Pj4yXXwwO3o9Y1t2Pj4yXXwwO0M9QTw8MX1kb3tpZighKHo+Pj4wPEM+Pj4wKSl7aWYoQil7YVttK0MrMT4+MF09MDthW20+PjBdPUE8PDI7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0M+PjBdPTA7Y1t2Pj4yXT1DO2JyZWFrfX1lbHNle2hnKG0sQy16fDApfX13aGlsZSgwKTtDPWFbbT4+MF18MDtpZigoQyYxKT09MCl7Qj0xMH1lbHNle0I9Y1ttPj4yXXwwO0M9QiYyNTU7Qj0oQiYtMikrIC0xfDB9ej0oQyYxKT09MDtpZih6KXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9ZG97aWYoIShDPj4+MDxCPj4+MCkpe2lmKHope2FbbStCKzE+PjBdPTA7YVttPj4wXT1CPDwxO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStCPj4wXT0wO2Nbdj4+Ml09QjticmVha319ZWxzZXtoZyhtLEItQ3wwKX19d2hpbGUoMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9ZX1lbHNle3o9Y1tnPj4yXXwwfWNbdD4+Ml09eitBfUE9dysxMnwwO0M9Y1tBPj4yXXwwO0I9dysxNnwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7Qz1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtDPWNbQz4+Ml18MH1pZigobGkoQyxmLHosdCxxLHgsbixyLHMsdSl8MCkhPTApe2JyZWFrfUM9Y1tBPj4yXXwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7b2NbY1soY1t3Pj4yXXwwKSs0MD4+Ml0mMTI3XSh3KXwwO2NvbnRpbnVlfWVsc2V7Y1tBPj4yXT1DKzQ7Y29udGludWV9fXU9YVtuPj4wXXwwO2lmKCh1JjEpPT0wKXt1PSh1JjI1NSk+Pj4xfWVsc2V7dT1jW24rND4+Ml18MH1pZigodXwwKSE9MD8ocD1jW3M+PjJdfDAsKHAtcnwwKTwxNjApOjApe0Q9Y1txPj4yXXwwO2Nbcz4+Ml09cCs0O2NbcD4+Ml09RH1jW2o+PjJdPUptKHosY1t0Pj4yXXwwLGgsZil8MDtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7ZD1pO2k9aSszMDR8MDt1PWQrMTYwfDA7bz1kKzI4MHwwO249ZCsyNjR8MDttPWQrMjg0fDA7dD1kKzMwMHwwO3I9ZDtzPWQrMjc2fDA7cT1kKzI5NnwwO3c9Y1tlPj4yXXwwO3k9Y1tmPj4yXXwwO2Y9Y1tnKzQ+PjJdJjc0O2lmKChmfDApPT04KXtmPTE2fWVsc2UgaWYoKGZ8MCk9PTApe2Y9MH1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2V7Zj0xMH1waShuLGcsdSxvKTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtoZyhtLDEwKTtpZigoYVttPj4wXSYxKT09MCl7ej1tKzF8MDtlPXo7Zz1tKzh8MH1lbHNle3o9bSs4fDA7ZT1tKzF8MDtnPXo7ej1jW3o+PjJdfDB9Y1t0Pj4yXT16O2Nbcz4+Ml09cjtjW3E+PjJdPTA7dj1tKzR8MDt4PWNbbz4+Ml18MDtvPW0rOHwwO3doaWxlKDEpe2lmKCh3fDApPT0wKXtBPTE7dz0wfWVsc2V7QT1jW3crMTI+PjJdfDA7aWYoKEF8MCk9PShjW3crMTY+PjJdfDApKXtBPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0E9Y1tBPj4yXXwwfUM9KEF8MCk9PS0xO0E9Qz8xOjA7dz1DPzA6d31pZigoeXwwKSE9MCl7Qj1jW3krMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3krMTY+PjJdfDApKXtCPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0I9Y1tCPj4yXXwwfWlmKCEoKEJ8MCk9PS0xKSl7aWYoIUEpe2JyZWFrfX1lbHNle2s9MjB9fWVsc2V7az0yMH1pZigoa3wwKT09MjApe2s9MDtpZihBKXt5PTA7YnJlYWt9ZWxzZXt5PTB9fUE9YVttPj4wXXwwO0I9KEEmMSk9PTA7aWYoQil7Qz0oQSYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWlmKCgoY1t0Pj4yXXwwKS16fDApPT0oQ3wwKSl7aWYoQil7RD0oQSYyNTUpPj4+MTt6PShBJjI1NSk+Pj4xO0M9RDw8MTtBPUR9ZWxzZXtBPWNbdj4+Ml18MDt6PWNbdj4+Ml18MDtDPUE8PDF9ZG97aWYoISh6Pj4+MDxDPj4+MCkpe2lmKEIpe2FbbStDKzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStDPj4wXT0wO2Nbdj4+Ml09QzticmVha319ZWxzZXtoZyhtLEMtenwwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe0I9MTB9ZWxzZXtCPWNbbT4+Ml18MDtDPUImMjU1O0I9KEImLTIpKyAtMXwwfXo9KEMmMSk9PTA7aWYoeil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWRve2lmKCEoQz4+PjA8Qj4+PjApKXtpZih6KXthW20rQisxPj4wXT0wO2FbbT4+MF09Qjw8MTticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQj4+MF09MDtjW3Y+PjJdPUI7YnJlYWt9fWVsc2V7aGcobSxCLUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWV9ZWxzZXt6PWNbZz4+Ml18MH1jW3Q+PjJdPXorQX1BPXcrMTJ8MDtDPWNbQT4+Ml18MDtCPXcrMTZ8MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe0M9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7Qz1jW0M+PjJdfDB9aWYoKGxpKEMsZix6LHQscSx4LG4scixzLHUpfDApIT0wKXticmVha31DPWNbQT4+Ml18MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe29jW2NbKGNbdz4+Ml18MCkrNDA+PjJdJjEyN10odyl8MDtjb250aW51ZX1lbHNle2NbQT4+Ml09Qys0O2NvbnRpbnVlfX11PWFbbj4+MF18MDtpZigodSYxKT09MCl7dT0odSYyNTUpPj4+MX1lbHNle3U9Y1tuKzQ+PjJdfDB9aWYoKHV8MCkhPTA/KHA9Y1tzPj4yXXwwLChwLXJ8MCk8MTYwKTowKXtEPWNbcT4+Ml18MDtjW3M+PjJdPXArNDtjW3A+PjJdPUR9Qz1JbSh6LGNbdD4+Ml18MCxoLGYpfDA7RD1qO2NbRD4+Ml09QztjW0QrND4+Ml09STtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gaGkoYixkLGUsZixoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MDtkPWk7aT1pKzM1MnwwO3c9ZCsyMDh8MDt5PWQrMTg0fDA7cD1kKzR8MDtuPWQrOHwwO289ZCsxOTZ8MDt1PWQ7dD1kKzI0fDA7cz1kKzE5MnwwO3Y9ZCsxODh8MDtyPWQrMzM3fDA7eD1kKzMzNnwwO3o9Y1tlPj4yXXwwO0I9Y1tmPj4yXXwwO3FpKG4saCx3LHkscCk7Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTA7aGcobywxMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9bysxfDA7ZT1DO2Y9bys4fDB9ZWxzZXtDPW8rOHwwO2U9bysxfDA7Zj1DO0M9Y1tDPj4yXXwwfWNbdT4+Ml09QztjW3M+PjJdPXQ7Y1t2Pj4yXT0wO2Fbcj4+MF09MTthW3g+PjBdPTY5O2g9bys0fDA7eT1jW3k+PjJdfDA7QT1jW3A+PjJdfDA7cD1vKzh8MDt3aGlsZSgxKXtpZigoenwwKT09MCl7RD0xO3o9MH1lbHNle0Q9Y1t6KzEyPj4yXXwwO2lmKChEfDApPT0oY1t6KzE2Pj4yXXwwKSl7RD1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtEPWNbRD4+Ml18MH1GPShEfDApPT0tMTtEPUY/MTowO3o9Rj8wOnp9aWYoKEJ8MCkhPTApe0U9Y1tCKzEyPj4yXXwwO2lmKChFfDApPT0oY1tCKzE2Pj4yXXwwKSl7RT1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtFPWNbRT4+Ml18MH1pZighKChFfDApPT0tMSkpe2lmKCFEKXticmVha319ZWxzZXttPTE2fX1lbHNle209MTZ9aWYoKG18MCk9PTE2KXttPTA7aWYoRCl7Qj0wO2JyZWFrfWVsc2V7Qj0wfX1EPWFbbz4+MF18MDtFPShEJjEpPT0wO2lmKEUpe0Y9KEQmMjU1KT4+PjF9ZWxzZXtGPWNbaD4+Ml18MH1pZigoKGNbdT4+Ml18MCktQ3wwKT09KEZ8MCkpe2lmKEUpe0c9KEQmMjU1KT4+PjE7Rj0oRCYyNTUpPj4+MTtDPUc8PDE7RD1HfWVsc2V7RD1jW2g+PjJdfDA7Rj1jW2g+PjJdfDA7Qz1EPDwxfWRve2lmKCEoRj4+PjA8Qz4+PjApKXtpZihFKXthW28rQysxPj4wXT0wO2Fbbz4+MF09RDw8MjticmVha31lbHNle2FbKGNbcD4+Ml18MCkrQz4+MF09MDtjW2g+PjJdPUM7YnJlYWt9fWVsc2V7aGcobyxDLUZ8MCl9fXdoaWxlKDApO0Y9YVtvPj4wXXwwO2lmKChGJjEpPT0wKXtFPTEwfWVsc2V7RT1jW28+PjJdfDA7Rj1FJjI1NTtFPShFJi0yKSsgLTF8MH1DPShGJjEpPT0wO2lmKEMpe0Y9KEYmMjU1KT4+PjF9ZWxzZXtGPWNbaD4+Ml18MH1kb3tpZighKEY+Pj4wPEU+Pj4wKSl7aWYoQyl7YVtvK0UrMT4+MF09MDthW28+PjBdPUU8PDE7YnJlYWt9ZWxzZXthWyhjW3A+PjJdfDApK0U+PjBdPTA7Y1toPj4yXT1FO2JyZWFrfX1lbHNle2hnKG8sRS1GfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz1lfWVsc2V7Qz1jW2Y+PjJdfDB9Y1t1Pj4yXT1DK0R9RT16KzEyfDA7Rj1jW0U+PjJdfDA7RD16KzE2fDA7aWYoKEZ8MCk9PShjW0Q+PjJdfDApKXtGPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0Y9Y1tGPj4yXXwwfWlmKChyaShGLHIseCxDLHUseSxBLG4sdCxzLHYsdyl8MCkhPTApe2JyZWFrfUY9Y1tFPj4yXXwwO2lmKChGfDApPT0oY1tEPj4yXXwwKSl7b2NbY1soY1t6Pj4yXXwwKSs0MD4+Ml0mMTI3XSh6KXwwO2NvbnRpbnVlfWVsc2V7Y1tFPj4yXT1GKzQ7Y29udGludWV9fXc9YVtuPj4wXXwwO2lmKCh3JjEpPT0wKXt3PSh3JjI1NSk+Pj4xfWVsc2V7dz1jW24rND4+Ml18MH1pZigoKHd8MCkhPTA/KGFbcj4+MF18MCkhPTA6MCk/KHE9Y1tzPj4yXXwwLChxLXR8MCk8MTYwKTowKXtHPWNbdj4+Ml18MDtjW3M+PjJdPXErNDtjW3E+PjJdPUd9Z1trPj4yXT0rSG0oQyxjW3U+PjJdfDAsaik7cWsobix0LGNbcz4+Ml18MCxqKTtpZigoenwwKT09MCl7az0wO3E9MX1lbHNle2s9Y1t6KzEyPj4yXXwwO2lmKChrfDApPT0oY1t6KzE2Pj4yXXwwKSl7az1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtrPWNbaz4+Ml18MH1xPShrfDApPT0tMTtrPXE/MDp6O3E9cT8xOjB9aWYoKEJ8MCkhPTApe3I9Y1tCKzEyPj4yXXwwO2lmKChyfDApPT0oY1tCKzE2Pj4yXXwwKSl7cj1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtyPWNbcj4+Ml18MH1pZighKChyfDApPT0tMSkpe2lmKCFxKXttPTcwfX1lbHNle209Njh9fWVsc2V7bT02OH1pZigobXwwKT09Njg/cTowKXttPTcwfWlmKChtfDApPT03MCl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1rO2lmKCEoKGFbbz4+MF0mMSk9PTApPyhsPWNbcD4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoKGFbbj4+MF0mMSk9PTApe2k9ZDtyZXR1cm59aj1jW24rOD4+Ml18MDtpZigoanwwKT09MCl7aT1kO3JldHVybn12bihqKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGlpKGIsZCxlLGYsZyxqLGspe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7ZD1pO2k9aSszNTJ8MDt3PWQrMjA4fDA7eT1kKzE4NHwwO3A9ZCs0fDA7bj1kKzh8MDtvPWQrMTk2fDA7dT1kO3Q9ZCsyNHwwO3M9ZCsxOTJ8MDt2PWQrMTg4fDA7cj1kKzMzN3wwO3g9ZCszMzZ8MDt6PWNbZT4+Ml18MDtCPWNbZj4+Ml18MDtxaShuLGcsdyx5LHApO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtDPW8rMXwwO2U9QztmPW8rOHwwfWVsc2V7Qz1vKzh8MDtlPW8rMXwwO2Y9QztDPWNbQz4+Ml18MH1jW3U+PjJdPUM7Y1tzPj4yXT10O2Nbdj4+Ml09MDthW3I+PjBdPTE7YVt4Pj4wXT02OTtnPW8rNHwwO3k9Y1t5Pj4yXXwwO0E9Y1twPj4yXXwwO3A9bys4fDA7d2hpbGUoMSl7aWYoKHp8MCk9PTApe0Q9MTt6PTB9ZWxzZXtEPWNbeisxMj4+Ml18MDtpZigoRHwwKT09KGNbeisxNj4+Ml18MCkpe0Q9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7RD1jW0Q+PjJdfDB9Rj0oRHwwKT09LTE7RD1GPzE6MDt6PUY/MDp6fWlmKChCfDApIT0wKXtFPWNbQisxMj4+Ml18MDtpZigoRXwwKT09KGNbQisxNj4+Ml18MCkpe0U9b2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwfWVsc2V7RT1jW0U+PjJdfDB9aWYoISgoRXwwKT09LTEpKXtpZighRCl7YnJlYWt9fWVsc2V7bT0xNn19ZWxzZXttPTE2fWlmKChtfDApPT0xNil7bT0wO2lmKEQpe0I9MDticmVha31lbHNle0I9MH19RD1hW28+PjBdfDA7RT0oRCYxKT09MDtpZihFKXtGPShEJjI1NSk+Pj4xfWVsc2V7Rj1jW2c+PjJdfDB9aWYoKChjW3U+PjJdfDApLUN8MCk9PShGfDApKXtpZihFKXtHPShEJjI1NSk+Pj4xO0Y9KEQmMjU1KT4+PjE7Qz1HPDwxO0Q9R31lbHNle0Q9Y1tnPj4yXXwwO0Y9Y1tnPj4yXXwwO0M9RDw8MX1kb3tpZighKEY+Pj4wPEM+Pj4wKSl7aWYoRSl7YVtvK0MrMT4+MF09MDthW28+PjBdPUQ8PDI7YnJlYWt9ZWxzZXthWyhjW3A+PjJdfDApK0M+PjBdPTA7Y1tnPj4yXT1DO2JyZWFrfX1lbHNle2hnKG8sQy1GfDApfX13aGlsZSgwKTtGPWFbbz4+MF18MDtpZigoRiYxKT09MCl7RT0xMH1lbHNle0U9Y1tvPj4yXXwwO0Y9RSYyNTU7RT0oRSYtMikrIC0xfDB9Qz0oRiYxKT09MDtpZihDKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW2c+PjJdfDB9ZG97aWYoIShGPj4+MDxFPj4+MCkpe2lmKEMpe2FbbytFKzE+PjBdPTA7YVtvPj4wXT1FPDwxO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStFPj4wXT0wO2NbZz4+Ml09RTticmVha319ZWxzZXtoZyhvLEUtRnwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9ZX1lbHNle0M9Y1tmPj4yXXwwfWNbdT4+Ml09QytEfUU9eisxMnwwO0Y9Y1tFPj4yXXwwO0Q9eisxNnwwO2lmKChGfDApPT0oY1tEPj4yXXwwKSl7Rj1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtGPWNbRj4+Ml18MH1pZigocmkoRixyLHgsQyx1LHksQSxuLHQscyx2LHcpfDApIT0wKXticmVha31GPWNbRT4+Ml18MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe29jW2NbKGNbej4+Ml18MCkrNDA+PjJdJjEyN10oeil8MDtjb250aW51ZX1lbHNle2NbRT4+Ml09Ris0O2NvbnRpbnVlfX13PWFbbj4+MF18MDtpZigodyYxKT09MCl7dz0odyYyNTUpPj4+MX1lbHNle3c9Y1tuKzQ+PjJdfDB9aWYoKCh3fDApIT0wPyhhW3I+PjBdfDApIT0wOjApPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7Rz1jW3Y+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1HfWhbaz4+M109K0dtKEMsY1t1Pj4yXXwwLGopO3FrKG4sdCxjW3M+PjJdfDAsaik7aWYoKHp8MCk9PTApe2s9MDtxPTF9ZWxzZXtrPWNbeisxMj4+Ml18MDtpZigoa3wwKT09KGNbeisxNj4+Ml18MCkpe2s9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7az1jW2s+PjJdfDB9cT0oa3wwKT09LTE7az1xPzA6ejtxPXE/MTowfWlmKChCfDApIT0wKXtyPWNbQisxMj4+Ml18MDtpZigocnwwKT09KGNbQisxNj4+Ml18MCkpe3I9b2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwfWVsc2V7cj1jW3I+PjJdfDB9aWYoISgocnwwKT09LTEpKXtpZighcSl7bT03MH19ZWxzZXttPTY4fX1lbHNle209Njh9aWYoKG18MCk9PTY4P3E6MCl7bT03MH1pZigobXwwKT09NzApe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09aztpZighKChhW28+PjBdJjEpPT0wKT8obD1jW3A+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKChhW24+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWo9Y1tuKzg+PjJdfDA7aWYoKGp8MCk9PTApe2k9ZDtyZXR1cm59dm4oaik7aT1kO3JldHVybn1mdW5jdGlvbiBqaShiLGQsZSxmLGcsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wO2Q9aTtpPWkrMzUyfDA7dz1kKzIwOHwwO3k9ZCsxODR8MDtwPWQrNHwwO249ZCs4fDA7bz1kKzE5NnwwO3U9ZDt0PWQrMjR8MDtzPWQrMTkyfDA7dj1kKzE4OHwwO3I9ZCszMzd8MDt4PWQrMzM2fDA7ej1jW2U+PjJdfDA7Qj1jW2Y+PjJdfDA7cWkobixnLHcseSxwKTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz1vKzF8MDtlPUM7Zj1vKzh8MH1lbHNle0M9bys4fDA7ZT1vKzF8MDtmPUM7Qz1jW0M+PjJdfDB9Y1t1Pj4yXT1DO2Nbcz4+Ml09dDtjW3Y+PjJdPTA7YVtyPj4wXT0xO2FbeD4+MF09Njk7Zz1vKzR8MDt5PWNbeT4+Ml18MDtBPWNbcD4+Ml18MDtwPW8rOHwwO3doaWxlKDEpe2lmKCh6fDApPT0wKXtEPTE7ej0wfWVsc2V7RD1jW3orMTI+PjJdfDA7aWYoKER8MCk9PShjW3orMTY+PjJdfDApKXtEPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0Q9Y1tEPj4yXXwwfUY9KER8MCk9PS0xO0Q9Rj8xOjA7ej1GPzA6en1pZigoQnwwKSE9MCl7RT1jW0IrMTI+PjJdfDA7aWYoKEV8MCk9PShjW0IrMTY+PjJdfDApKXtFPW9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MH1lbHNle0U9Y1tFPj4yXXwwfWlmKCEoKEV8MCk9PS0xKSl7aWYoIUQpe2JyZWFrfX1lbHNle209MTZ9fWVsc2V7bT0xNn1pZigobXwwKT09MTYpe209MDtpZihEKXtCPTA7YnJlYWt9ZWxzZXtCPTB9fUQ9YVtvPj4wXXwwO0U9KEQmMSk9PTA7aWYoRSl7Rj0oRCYyNTUpPj4+MX1lbHNle0Y9Y1tnPj4yXXwwfWlmKCgoY1t1Pj4yXXwwKS1DfDApPT0oRnwwKSl7aWYoRSl7Rz0oRCYyNTUpPj4+MTtGPShEJjI1NSk+Pj4xO0M9Rzw8MTtEPUd9ZWxzZXtEPWNbZz4+Ml18MDtGPWNbZz4+Ml18MDtDPUQ8PDF9ZG97aWYoIShGPj4+MDxDPj4+MCkpe2lmKEUpe2FbbytDKzE+PjBdPTA7YVtvPj4wXT1EPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStDPj4wXT0wO2NbZz4+Ml09QzticmVha319ZWxzZXtoZyhvLEMtRnwwKX19d2hpbGUoMCk7Rj1hW28+PjBdfDA7aWYoKEYmMSk9PTApe0U9MTB9ZWxzZXtFPWNbbz4+Ml18MDtGPUUmMjU1O0U9KEUmLTIpKyAtMXwwfUM9KEYmMSk9PTA7aWYoQyl7Rj0oRiYyNTUpPj4+MX1lbHNle0Y9Y1tnPj4yXXwwfWRve2lmKCEoRj4+PjA8RT4+PjApKXtpZihDKXthW28rRSsxPj4wXT0wO2Fbbz4+MF09RTw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrRT4+MF09MDtjW2c+PjJdPUU7YnJlYWt9fWVsc2V7aGcobyxFLUZ8MCl9fXdoaWxlKDApO2lmKChhW28+PjBdJjEpPT0wKXtDPWV9ZWxzZXtDPWNbZj4+Ml18MH1jW3U+PjJdPUMrRH1FPXorMTJ8MDtGPWNbRT4+Ml18MDtEPXorMTZ8MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe0Y9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7Rj1jW0Y+PjJdfDB9aWYoKHJpKEYscix4LEMsdSx5LEEsbix0LHMsdix3KXwwKSE9MCl7YnJlYWt9Rj1jW0U+PjJdfDA7aWYoKEZ8MCk9PShjW0Q+PjJdfDApKXtvY1tjWyhjW3o+PjJdfDApKzQwPj4yXSYxMjddKHopfDA7Y29udGludWV9ZWxzZXtjW0U+PjJdPUYrNDtjb250aW51ZX19dz1hW24+PjBdfDA7aWYoKHcmMSk9PTApe3c9KHcmMjU1KT4+PjF9ZWxzZXt3PWNbbis0Pj4yXXwwfWlmKCgod3wwKSE9MD8oYVtyPj4wXXwwKSE9MDowKT8ocT1jW3M+PjJdfDAsKHEtdHwwKTwxNjApOjApe0c9Y1t2Pj4yXXwwO2Nbcz4+Ml09cSs0O2NbcT4+Ml09R31oW2s+PjNdPStGbShDLGNbdT4+Ml18MCxqKTtxayhuLHQsY1tzPj4yXXwwLGopO2lmKCh6fDApPT0wKXtrPTA7cT0xfWVsc2V7az1jW3orMTI+PjJdfDA7aWYoKGt8MCk9PShjW3orMTY+PjJdfDApKXtrPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle2s9Y1trPj4yXXwwfXE9KGt8MCk9PS0xO2s9cT8wOno7cT1xPzE6MH1pZigoQnwwKSE9MCl7cj1jW0IrMTI+PjJdfDA7aWYoKHJ8MCk9PShjW0IrMTY+PjJdfDApKXtyPW9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MH1lbHNle3I9Y1tyPj4yXXwwfWlmKCEoKHJ8MCk9PS0xKSl7aWYoIXEpe209NzB9fWVsc2V7bT02OH19ZWxzZXttPTY4fWlmKChtfDApPT02OD9xOjApe209NzB9aWYoKG18MCk9PTcwKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWs7aWYoISgoYVtvPj4wXSYxKT09MCk/KGw9Y1twPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1qPWNbbis4Pj4yXXwwO2lmKChqfDApPT0wKXtpPWQ7cmV0dXJufXZuKGopO2k9ZDtyZXR1cm59ZnVuY3Rpb24ga2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtkPWk7aT1pKzMwNHwwO249ZDtvPWQrMTkyfDA7bD1kKzE3NnwwO3Y9ZCsxNnwwO3E9Y1tnKzI4Pj4yXXwwO0M9cSs0fDA7Y1tDPj4yXT0oY1tDPj4yXXwwKSsxO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ0ODtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDQ4LG4pfWc9KGNbMTM0NTI+PjJdfDApKyAtMXwwO3A9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcD4+Mj4+PjA+Zz4+PjA/KG09Y1twKyhnPDwyKT4+Ml18MCwobXwwKSE9MCk6MCl7dWNbY1soY1ttPj4yXXwwKSs0OD4+Ml0mMzFdKG0sMTIwMTYsMTIwNDJ8MCxvKXwwO0I9cSs0fDA7Qz1jW0I+PjJdfDA7Y1tCPj4yXT1DKyAtMTtpZigoQ3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfWNbbCswPj4yXT0wO2NbbCs0Pj4yXT0wO2NbbCs4Pj4yXT0wO2hnKGwsMTApO2lmKChhW2w+PjBdJjEpPT0wKXt5PWwrMXwwO3A9eTtxPWwrOHwwfWVsc2V7eT1sKzh8MDtwPWwrMXwwO3E9eTt5PWNbeT4+Ml18MH1yPWwrNHwwO3Q9bys5NnwwO3U9bysxMDB8MDtzPW8rMTA0fDA7Zz1vO209bCs4fDA7eD1jW2U+PjJdfDA7dz0wO3o9eTthOndoaWxlKDEpe2lmKCh4fDApIT0wKXtBPWNbeCsxMj4+Ml18MDtpZigoQXwwKT09KGNbeCsxNj4+Ml18MCkpe0E9b2NbY1soY1t4Pj4yXXwwKSszNj4+Ml0mMTI3XSh4KXwwfWVsc2V7QT1jW0E+PjJdfDB9aWYoKEF8MCk9PS0xKXtjW2U+PjJdPTA7eD0wO0E9MX1lbHNle0E9MH19ZWxzZXt4PTA7QT0xfUM9Y1tmPj4yXXwwO2Rve2lmKChDfDApIT0wKXtCPWNbQysxMj4+Ml18MDtpZigoQnwwKT09KGNbQysxNj4+Ml18MCkpe0I9b2NbY1soY1tDPj4yXXwwKSszNj4+Ml0mMTI3XShDKXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZihBKXticmVha31lbHNle2JyZWFrIGF9fWVsc2V7Y1tmPj4yXT0wO2s9Mjc7YnJlYWt9fWVsc2V7az0yN319d2hpbGUoMCk7aWYoKGt8MCk9PTI3PyhrPTAsQSk6MCl7YnJlYWt9Qz1hW2w+PjBdfDA7QT0oQyYxKT09MDtpZihBKXtCPShDJjI1NSk+Pj4xfWVsc2V7Qj1jW3I+PjJdfDB9aWYoKHoteXwwKT09KEJ8MCkpe2lmKEEpe3o9KEMmMjU1KT4+PjE7Qj0oQyYyNTUpPj4+MTt5PXo8PDF9ZWxzZXt6PWNbcj4+Ml18MDtCPWNbcj4+Ml18MDt5PXo8PDF9ZG97aWYoIShCPj4+MDx5Pj4+MCkpe2lmKEEpe2FbbCt5KzE+PjBdPTA7YVtsPj4wXT16PDwyO2JyZWFrfWVsc2V7YVsoY1ttPj4yXXwwKSt5Pj4wXT0wO2Nbcj4+Ml09eTticmVha319ZWxzZXtoZyhsLHktQnwwKX19d2hpbGUoMCk7Qj1hW2w+PjBdfDA7aWYoKEImMSk9PTApe0E9MTB9ZWxzZXtBPWNbbD4+Ml18MDtCPUEmMjU1O0E9KEEmLTIpKyAtMXwwfXk9KEImMSk9PTA7aWYoeSl7Qj0oQiYyNTUpPj4+MX1lbHNle0I9Y1tyPj4yXXwwfWRve2lmKCEoQj4+PjA8QT4+PjApKXtpZih5KXthW2wrQSsxPj4wXT0wO2FbbD4+MF09QTw8MTticmVha31lbHNle2FbKGNbbT4+Ml18MCkrQT4+MF09MDtjW3I+PjJdPUE7YnJlYWt9fWVsc2V7aGcobCxBLUJ8MCl9fXdoaWxlKDApO2lmKChhW2w+PjBdJjEpPT0wKXt5PXB9ZWxzZXt5PWNbcT4+Ml18MH16PXkrenwwfUE9Y1t4KzEyPj4yXXwwO2lmKChBfDApPT0oY1t4KzE2Pj4yXXwwKSl7QT1vY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDB9ZWxzZXtBPWNbQT4+Ml18MH14PSh6fDApPT0oeXwwKTtkb3tpZih4KXtCPShjW3Q+PjJdfDApPT0oQXwwKTtpZighQj8oY1t1Pj4yXXwwKSE9KEF8MCk6MCl7Qj1vO2s9NjI7YnJlYWt9YVt6Pj4wXT1CPzQzOjQ1O3o9eisxfDA7dz0wfWVsc2V7Qj1vO2s9NjJ9fXdoaWxlKDApO2Rve2lmKChrfDApPT02Mil7d2hpbGUoMSl7az0wO2lmKChjW0I+PjJdfDApPT0oQXwwKSl7YnJlYWt9Qj1CKzR8MDtpZigoQnwwKT09KHN8MCkpe0I9czticmVha31lbHNle2s9NjJ9fUI9Qi1nfDA7QT1CPj4yO2lmKChCfDApPjkyKXticmVhayBhfWlmKChCfDApPDg4KXthW3o+PjBdPWFbMTIwMTYrQT4+MF18MDt6PXorMXwwO3c9dysxfDA7YnJlYWt9aWYoeCl7eT16O2JyZWFrIGF9aWYoKHoteXwwKT49Myl7YnJlYWsgYX1pZigoYVt6KyAtMT4+MF18MCkhPTQ4KXticmVhayBhfWFbej4+MF09YVsxMjAxNitBPj4wXXwwO3o9eisxfDA7dz0wfX13aGlsZSgwKTt4PWNbZT4+Ml18MDtCPXgrMTJ8MDtBPWNbQj4+Ml18MDtpZigoQXwwKT09KGNbeCsxNj4+Ml18MCkpe29jW2NbKGNbeD4+Ml18MCkrNDA+PjJdJjEyN10oeCl8MDtDPXY7dj1DO2NvbnRpbnVlfWVsc2V7Y1tCPj4yXT1BKzQ7Qz12O3Y9Qztjb250aW51ZX19YVt5KzM+PjBdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfUM9Y1szMzQwXXwwO2Nbbj4+Ml09ajtpZigoWWgoeSxDLG4pfDApIT0xKXtjW2g+PjJdPTR9aj1jW2U+PjJdfDA7aWYoKGp8MCkhPTApe249Y1tqKzEyPj4yXXwwO2lmKChufDApPT0oY1tqKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtqPTA7ZT0xfWVsc2V7ZT0wfX1lbHNle2o9MDtlPTF9bj1jW2Y+PjJdfDA7ZG97aWYoKG58MCkhPTApe289Y1tuKzEyPj4yXXwwO2lmKChvfDApPT0oY1tuKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXtuPWNbbz4+Ml18MH1pZighKChufDApPT0tMSkpe2lmKGUpe2JyZWFrfWVsc2V7az05NDticmVha319ZWxzZXtjW2Y+PjJdPTA7az05MjticmVha319ZWxzZXtrPTkyfX13aGlsZSgwKTtpZigoa3wwKT09OTI/ZTowKXtrPTk0fWlmKChrfDApPT05NCl7Y1toPj4yXT1jW2g+PjJdfDJ9Y1tiPj4yXT1qO2lmKChhW2w+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWY9Y1ttPj4yXXwwO2lmKChmfDApPT0wKXtpPWQ7cmV0dXJufXZuKGYpO2k9ZDtyZXR1cm59Qz1YYSg0KXwwO2NbQz4+Ml09MjEzMDQ7d2IoQ3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gbGkoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MDtuPWk7cD1jW2Y+PjJdfDA7bz0ocHwwKT09KGV8MCk7ZG97aWYobyl7cT0oY1ttKzk2Pj4yXXwwKT09KGJ8MCk7aWYoIXE/KGNbbSsxMDA+PjJdfDApIT0oYnwwKTowKXticmVha31jW2Y+PjJdPWUrMTthW2U+PjBdPXE/NDM6NDU7Y1tnPj4yXT0wO3E9MDtpPW47cmV0dXJuIHF8MH19d2hpbGUoMCk7cT1hW2o+PjBdfDA7aWYoKHEmMSk9PTApe2o9KHEmMjU1KT4+PjF9ZWxzZXtqPWNbais0Pj4yXXwwfWlmKChqfDApIT0wJihifDApPT0oaHwwKSl7bz1jW2w+PjJdfDA7aWYoKG8ta3wwKT49MTYwKXtxPTA7aT1uO3JldHVybiBxfDB9cT1jW2c+PjJdfDA7Y1tsPj4yXT1vKzQ7Y1tvPj4yXT1xO2NbZz4+Ml09MDtxPTA7aT1uO3JldHVybiBxfDB9bD1tKzEwNHwwO2s9bTt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT09KGJ8MCkpe2JyZWFrfWs9ays0fDA7aWYoKGt8MCk9PShsfDApKXtrPWw7YnJlYWt9fWI9ay1tfDA7bT1iPj4yO2lmKChifDApPjkyKXtxPS0xO2k9bjtyZXR1cm4gcXwwfWlmKChkfDApPT0xMHwoZHwwKT09OCl7aWYoKG18MCk+PShkfDApKXtxPS0xO2k9bjtyZXR1cm4gcXwwfX1lbHNlIGlmKChkfDApPT0xNj8oYnwwKT49ODg6MCl7aWYobyl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigocC1lfDApPj0zKXtxPS0xO2k9bjtyZXR1cm4gcXwwfWlmKChhW3ArIC0xPj4wXXwwKSE9NDgpe3E9LTE7aT1uO3JldHVybiBxfDB9Y1tnPj4yXT0wO3E9YVsxMjAxNittPj4wXXwwO2NbZj4+Ml09cCsxO2FbcD4+MF09cTtxPTA7aT1uO3JldHVybiBxfDB9cT1hWzEyMDE2K20+PjBdfDA7Y1tmPj4yXT1wKzE7YVtwPj4wXT1xO2NbZz4+Ml09KGNbZz4+Ml18MCkrMTtxPTA7aT1uO3JldHVybiBxfDB9ZnVuY3Rpb24gbWkoYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aD1pO2k9aSsxNnwwO2w9aDtkPWNbZCsyOD4+Ml18MDtvPWQrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1uPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtqPWQrMTJ8MDttPWQrOHwwO289Y1ttPj4yXXwwO2lmKChjW2o+PjJdfDApLW8+PjI+Pj4wPm4+Pj4wPyhrPWNbbysobjw8Mik+PjJdfDAsKGt8MCkhPTApOjApe3VjW2NbKGNbaz4+Ml18MCkrMzI+PjJdJjMxXShrLDEyMDE2LDEyMDQyfDAsZSl8MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbD4+Ml09MTM2MDA7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzYwMCxsKX1lPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtrPWNbbT4+Ml18MDtpZigoY1tqPj4yXXwwKS1rPj4yPj4+MD5lPj4+MD8oZz1jW2srKGU8PDIpPj4yXXwwLChnfDApIT0wKTowKXthW2Y+PjBdPW9jW2NbKGNbZz4+Ml18MCkrMTY+PjJdJjEyN10oZyl8MDttY1tjWyhjW2c+PjJdfDApKzIwPj4yXSYxMjddKGIsZyk7bj1kKzR8MDtvPWNbbj4+Ml18MDtjW24+PjJdPW8rIC0xO2lmKChvfDApIT0wKXtpPWg7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTtpPWg7cmV0dXJufW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIG5pKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7aj1pO2k9aSsxNnwwO2w9ajtkPWNbZCsyOD4+Ml18MDtwPWQrNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1vPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtrPWQrMTJ8MDtuPWQrOHwwO3A9Y1tuPj4yXXwwO2lmKChjW2s+PjJdfDApLXA+PjI+Pj4wPm8+Pj4wPyhtPWNbcCsobzw8Mik+PjJdfDAsKG18MCkhPTApOjApe3VjW2NbKGNbbT4+Ml18MCkrMzI+PjJdJjMxXShtLDEyMDE2LDEyMDQ4fDAsZSl8MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbD4+Ml09MTM2MDA7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzYwMCxsKX1lPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtsPWNbbj4+Ml18MDtpZigoY1trPj4yXXwwKS1sPj4yPj4+MD5lPj4+MD8oaD1jW2wrKGU8PDIpPj4yXXwwLChofDApIT0wKTowKXthW2Y+PjBdPW9jW2NbKGNbaD4+Ml18MCkrMTI+PjJdJjEyN10oaCl8MDthW2c+PjBdPW9jW2NbKGNbaD4+Ml18MCkrMTY+PjJdJjEyN10oaCl8MDttY1tjWyhjW2g+PjJdfDApKzIwPj4yXSYxMjddKGIsaCk7bz1kKzR8MDtwPWNbbz4+Ml18MDtjW28+PjJdPXArIC0xO2lmKChwfDApIT0wKXtpPWo7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTtpPWo7cmV0dXJufXA9WGEoNCl8MDtjW3A+PjJdPTIxMzA0O3diKHB8MCwyMTM3NiwxOTYpfXA9WGEoNCl8MDtjW3A+PjJdPTIxMzA0O3diKHB8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIG9pKGIsZCxlLGYsZyxoLGosayxsLG0sbixvKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDt2YXIgcD0wLHE9MDtwPWk7aWYoYjw8MjQ+PjI0PT1oPDwyND4+MjQpe2lmKChhW2Q+PjBdfDApPT0wKXtqPS0xO2k9cDtyZXR1cm4ganwwfWFbZD4+MF09MDtqPWNbZz4+Ml18MDtjW2c+PjJdPWorMTthW2o+PjBdPTQ2O2c9YVtrPj4wXXwwO2lmKChnJjEpPT0wKXtnPShnJjI1NSk+Pj4xfWVsc2V7Zz1jW2srND4+Ml18MH1pZigoZ3wwKT09MCl7aj0wO2k9cDtyZXR1cm4ganwwfWc9Y1ttPj4yXXwwO2lmKChnLWx8MCk+PTE2MCl7aj0wO2k9cDtyZXR1cm4ganwwfWo9Y1tuPj4yXXwwO2NbbT4+Ml09Zys0O2NbZz4+Ml09ajtqPTA7aT1wO3JldHVybiBqfDB9aWYoYjw8MjQ+PjI0PT1qPDwyND4+MjQpe2g9YVtrPj4wXXwwO2lmKChoJjEpPT0wKXtoPShoJjI1NSk+Pj4xfWVsc2V7aD1jW2srND4+Ml18MH1pZigoaHwwKSE9MCl7aWYoKGFbZD4+MF18MCk9PTApe2o9LTE7aT1wO3JldHVybiBqfDB9Zz1jW20+PjJdfDA7aWYoKGctbHwwKT49MTYwKXtqPTA7aT1wO3JldHVybiBqfDB9aj1jW24+PjJdfDA7Y1ttPj4yXT1nKzQ7Y1tnPj4yXT1qO2Nbbj4+Ml09MDtqPTA7aT1wO3JldHVybiBqfDB9fWg9byszMnwwO2o9bztkb3tpZigoYVtqPj4wXXwwKT09Yjw8MjQ+PjI0KXtoPWo7YnJlYWt9aj1qKzF8MH13aGlsZSgoanwwKSE9KGh8MCkpO2I9aC1vfDA7aWYoKGJ8MCk+MzEpe2o9LTE7aT1wO3JldHVybiBqfDB9bz1hWzEyMDE2K2I+PjBdfDA7aWYoKGJ8MCk9PTIzfChifDApPT0yMil7YVtlPj4wXT04MDtqPWNbZz4+Ml18MDtjW2c+PjJdPWorMTthW2o+PjBdPW87aj0wO2k9cDtyZXR1cm4ganwwfWVsc2UgaWYoKGJ8MCk9PTI0fChifDApPT0yNSl7bj1jW2c+PjJdfDA7aWYoKG58MCkhPShmfDApPyhhW24rIC0xPj4wXSY5NXwwKSE9KGFbZT4+MF0mMTI3fDApOjApe2o9LTE7aT1wO3JldHVybiBqfDB9Y1tnPj4yXT1uKzE7YVtuPj4wXT1vO2o9MDtpPXA7cmV0dXJuIGp8MH1lbHNle2Y9byY5NTtpZigoZnwwKT09KGFbZT4+MF18MCk/KGFbZT4+MF09ZnwxMjgsKGFbZD4+MF18MCkhPTApOjApe2FbZD4+MF09MDtlPWFbaz4+MF18MDtpZigoZSYxKT09MCl7az0oZSYyNTUpPj4+MX1lbHNle2s9Y1trKzQ+PjJdfDB9aWYoKGt8MCkhPTA/KHE9Y1ttPj4yXXwwLChxLWx8MCk8MTYwKTowKXtqPWNbbj4+Ml18MDtjW20+PjJdPXErNDtjW3E+PjJdPWp9fWo9Y1tnPj4yXXwwO2NbZz4+Ml09aisxO2Fbaj4+MF09bztpZigoYnwwKT4yMSl7aj0wO2k9cDtyZXR1cm4ganwwfWNbbj4+Ml09KGNbbj4+Ml18MCkrMTtqPTA7aT1wO3JldHVybiBqfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcGkoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Zz1pO2k9aSsxNnwwO2s9ZztiPWNbYisyOD4+Ml18MDtuPWIrNHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1tPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtoPWIrMTJ8MDtsPWIrOHwwO249Y1tsPj4yXXwwO2lmKChjW2g+PjJdfDApLW4+PjI+Pj4wPm0+Pj4wPyhqPWNbbisobTw8Mik+PjJdfDAsKGp8MCkhPTApOjApe3VjW2NbKGNbaj4+Ml18MCkrNDg+PjJdJjMxXShqLDEyMDE2LDEyMDQyfDAsZCl8MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbaz4+Ml09MTM2MDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzYwOCxrKX1kPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtqPWNbbD4+Ml18MDtpZigoY1toPj4yXXwwKS1qPj4yPj4+MD5kPj4+MD8oZj1jW2orKGQ8PDIpPj4yXXwwLChmfDApIT0wKTowKXtjW2U+PjJdPW9jW2NbKGNbZj4+Ml18MCkrMTY+PjJdJjEyN10oZil8MDttY1tjWyhjW2Y+PjJdfDApKzIwPj4yXSYxMjddKGEsZik7bT1iKzR8MDtuPWNbbT4+Ml18MDtjW20+PjJdPW4rIC0xO2lmKChufDApIT0wKXtpPWc7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtpPWc7cmV0dXJufW49WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfW49WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHFpKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aD1pO2k9aSsxNnwwO2s9aDtiPWNbYisyOD4+Ml18MDtvPWIrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1uPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtqPWIrMTJ8MDttPWIrOHwwO289Y1ttPj4yXXwwO2lmKChjW2o+PjJdfDApLW8+PjI+Pj4wPm4+Pj4wPyhsPWNbbysobjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe3VjW2NbKGNbbD4+Ml18MCkrNDg+PjJdJjMxXShsLDEyMDE2LDEyMDQ4fDAsZCl8MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbaz4+Ml09MTM2MDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzYwOCxrKX1kPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtrPWNbbT4+Ml18MDtpZigoY1tqPj4yXXwwKS1rPj4yPj4+MD5kPj4+MD8oZz1jW2srKGQ8PDIpPj4yXXwwLChnfDApIT0wKTowKXtjW2U+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMTI+PjJdJjEyN10oZyl8MDtjW2Y+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMTY+PjJdJjEyN10oZyl8MDttY1tjWyhjW2c+PjJdfDApKzIwPj4yXSYxMjddKGEsZyk7bj1iKzR8MDtvPWNbbj4+Ml18MDtjW24+PjJdPW8rIC0xO2lmKChvfDApIT0wKXtpPWg7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtpPWg7cmV0dXJufW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHJpKGIsZCxlLGYsZyxoLGosayxsLG0sbixvKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDt2YXIgcD0wLHE9MDtwPWk7aWYoKGJ8MCk9PShofDApKXtpZigoYVtkPj4wXXwwKT09MCl7aj0tMTtpPXA7cmV0dXJuIGp8MH1hW2Q+PjBdPTA7aj1jW2c+PjJdfDA7Y1tnPj4yXT1qKzE7YVtqPj4wXT00NjtnPWFbaz4+MF18MDtpZigoZyYxKT09MCl7Zz0oZyYyNTUpPj4+MX1lbHNle2c9Y1trKzQ+PjJdfDB9aWYoKGd8MCk9PTApe2o9MDtpPXA7cmV0dXJuIGp8MH1nPWNbbT4+Ml18MDtpZigoZy1sfDApPj0xNjApe2o9MDtpPXA7cmV0dXJuIGp8MH1qPWNbbj4+Ml18MDtjW20+PjJdPWcrNDtjW2c+PjJdPWo7aj0wO2k9cDtyZXR1cm4ganwwfWlmKChifDApPT0oanwwKSl7aD1hW2s+PjBdfDA7aWYoKGgmMSk9PTApe2g9KGgmMjU1KT4+PjF9ZWxzZXtoPWNbays0Pj4yXXwwfWlmKChofDApIT0wKXtpZigoYVtkPj4wXXwwKT09MCl7aj0tMTtpPXA7cmV0dXJuIGp8MH1nPWNbbT4+Ml18MDtpZigoZy1sfDApPj0xNjApe2o9MDtpPXA7cmV0dXJuIGp8MH1qPWNbbj4+Ml18MDtjW20+PjJdPWcrNDtjW2c+PjJdPWo7Y1tuPj4yXT0wO2o9MDtpPXA7cmV0dXJuIGp8MH19aD1vKzEyOHwwO2o9bztkb3tpZigoY1tqPj4yXXwwKT09KGJ8MCkpe2g9ajticmVha31qPWorNHwwfXdoaWxlKChqfDApIT0oaHwwKSk7Yj1oLW98MDtoPWI+PjI7aWYoKGJ8MCk+MTI0KXtqPS0xO2k9cDtyZXR1cm4ganwwfW89YVsxMjAxNitoPj4wXXwwO2lmKChofDApPT0yNHwoaHwwKT09MjUpe249Y1tnPj4yXXwwO2lmKChufDApIT0oZnwwKT8oYVtuKyAtMT4+MF0mOTV8MCkhPShhW2U+PjBdJjEyN3wwKTowKXtqPS0xO2k9cDtyZXR1cm4ganwwfWNbZz4+Ml09bisxO2Fbbj4+MF09bztqPTA7aT1wO3JldHVybiBqfDB9ZWxzZSBpZighKChofDApPT0yM3woaHwwKT09MjIpKXtmPW8mOTU7aWYoKGZ8MCk9PShhW2U+PjBdfDApPyhhW2U+PjBdPWZ8MTI4LChhW2Q+PjBdfDApIT0wKTowKXthW2Q+PjBdPTA7ZT1hW2s+PjBdfDA7aWYoKGUmMSk9PTApe2s9KGUmMjU1KT4+PjF9ZWxzZXtrPWNbays0Pj4yXXwwfWlmKChrfDApIT0wPyhxPWNbbT4+Ml18MCwocS1sfDApPDE2MCk6MCl7aj1jW24+PjJdfDA7Y1ttPj4yXT1xKzQ7Y1txPj4yXT1qfX19ZWxzZXthW2U+PjBdPTgwfWo9Y1tnPj4yXXwwO2NbZz4+Ml09aisxO2Fbaj4+MF09bztpZigoYnwwKT44NCl7aj0wO2k9cDtyZXR1cm4ganwwfWNbbj4+Ml09KGNbbj4+Ml18MCkrMTtqPTA7aT1wO3JldHVybiBqfDB9ZnVuY3Rpb24gc2koYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gdGkoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHVpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aj1pO2k9aSszMnwwO209ajtuPWorMjR8MDtrPWorMTJ8MDtpZigoY1tmKzQ+PjJdJjF8MCk9PTApe2w9Y1soY1tkPj4yXXwwKSsyND4+Ml18MDtjW24+PjJdPWNbZT4+Ml07bz1oJjE7Y1ttKzA+PjJdPWNbbiswPj4yXTt3Y1tsJjYzXShiLGQsbSxmLGcsbyk7aT1qO3JldHVybn1kPWNbZisyOD4+Ml18MDtvPWQrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbT4+Ml09MTM2MDA7Y1ttKzQ+PjJdPTIwODtjW20rOD4+Ml09MDtjZygxMzYwMCxtKX1mPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDttPWNbZCs4Pj4yXXwwO2lmKChjW2QrMTI+PjJdfDApLW0+PjI+Pj4wPmY+Pj4wPyhsPWNbbSsoZjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2c9ZCs0fDA7bz1jW2c+PjJdfDA7Y1tnPj4yXT1vKyAtMTtpZigob3wwKT09MCl7bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpfW09Y1tsPj4yXXwwO2lmKGgpe21jW2NbbSsyND4+Ml0mMTI3XShrLGwpfWVsc2V7bWNbY1ttKzI4Pj4yXSYxMjddKGssbCl9bj1hW2s+PjBdfDA7aWYoKG4mMSk9PTApe2g9aysxfDA7ZD1oO2w9ays4fDB9ZWxzZXtsPWsrOHwwO2Q9Y1tsPj4yXXwwO2g9aysxfDB9bT1rKzR8MDt3aGlsZSgxKXtmPShuJjEpPT0wO2lmKGYpe2c9aDtuPShuJjI1NSk+Pj4xfWVsc2V7Zz1jW2w+PjJdfDA7bj1jW20+PjJdfDB9aWYoKGR8MCk9PShnK258MCkpe2JyZWFrfW89YVtkPj4wXXwwO249Y1tlPj4yXXwwO2Rve2lmKChufDApIT0wKXtmPW4rMjR8MDtnPWNbZj4+Ml18MDtpZigoZ3wwKSE9KGNbbisyOD4+Ml18MCkpe2NbZj4+Ml09ZysxO2FbZz4+MF09bzticmVha31pZigoeGNbY1soY1tuPj4yXXwwKSs1Mj4+Ml0mNjNdKG4sbyYyNTUpfDApPT0tMSl7Y1tlPj4yXT0wfX19d2hpbGUoMCk7bj1hW2s+PjBdfDA7ZD1kKzF8MH1jW2I+PjJdPWNbZT4+Ml07aWYoZil7aT1qO3JldHVybn1rPWNbays4Pj4yXXwwO2lmKChrfDApPT0wKXtpPWo7cmV0dXJufXZuKGspO2k9ajtyZXR1cm59bz1YYSg0KXwwO2Nbbz4+Ml09MjEzMDQ7d2Iob3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gdmkoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtkPWk7aT1pKzY0fDA7cj1kO3E9ZCsxNnwwO249ZCsyNHwwO209ZCszNnwwO2s9ZCs4fDA7bD1kKzR8MDtvPWQrMTJ8MDthW3ErMD4+MF09YVsxMjI2ND4+MF18MDthW3ErMT4+MF09YVsxMjI2NT4+MF18MDthW3ErMj4+MF09YVsxMjI2Nj4+MF18MDthW3ErMz4+MF09YVsxMjI2Nz4+MF18MDthW3ErND4+MF09YVsxMjI2OD4+MF18MDthW3ErNT4+MF09YVsxMjI2OT4+MF18MDt0PXErMXwwO3A9Zis0fDA7cz1jW3A+PjJdfDA7aWYoKHMmMjA0OHwwKSE9MCl7YVt0Pj4wXT00Mzt0PXErMnwwfWlmKChzJjUxMnwwKSE9MCl7YVt0Pj4wXT0zNTt0PXQrMXwwfWFbdD4+MF09MTA4O3Q9dCsxfDA7dT1zJjc0O2Rve2lmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZSBpZigodXwwKT09OCl7aWYoKHMmMTYzODR8MCk9PTApe2FbdD4+MF09MTIwO2JyZWFrfWVsc2V7YVt0Pj4wXT04ODticmVha319ZWxzZXthW3Q+PjBdPTEwMH19d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO2Nbcj4+Ml09aDtxPXdpKG4sMTIsdSxxLHIpfDA7aD1uK3F8MDtwPWNbcD4+Ml0mMTc2O2Rve2lmKChwfDApPT0zMil7cD1ofWVsc2UgaWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh1PWFbbisxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtqPTIxfX1lbHNle2o9MjF9fXdoaWxlKDApO2lmKChqfDApPT0yMSl7cD1ufWo9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09ajtqPWorNHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTt4aShuLHAsaCxtLGssbCxvKTtqPWNbbz4+Ml18MDt0PWorNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1tsPj4yXXwwO1djKGIscyxtLHQsdSxmLGcpO2k9ZDtyZXR1cm59bGNbY1soY1tqPj4yXXwwKSs4Pj4yXSYyNTVdKGopO3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1tsPj4yXXwwO1djKGIscyxtLHQsdSxmLGcpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gd2koYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MDtnPWk7aT1pKzE2fDA7aD1nO2NbaD4+Ml09ZjtkPWliKGR8MCl8MDtlPVFiKGF8MCxifDAsZXwwLGh8MCl8MDtpZigoZHwwKT09MCl7aT1nO3JldHVybiBlfDB9aWIoZHwwKXwwO2k9ZztyZXR1cm4gZXwwfWZ1bmN0aW9uIHhpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7az1pO2k9aSszMnwwO3A9aztsPWsrMTJ8MDtuPWNbaj4+Ml18MDtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbcD4+Ml09MTM0NTY7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ1NixwKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbbis4Pj4yXXwwO2lmKCEoKGNbbisxMj4+Ml18MCktcz4+Mj4+PjA+cj4+PjApKXt2PVhhKDQpfDA7Y1t2Pj4yXT0yMTMwNDt3Yih2fDAsMjEzNzYsMTk2KX1uPWNbcysocjw8Mik+PjJdfDA7aWYoKG58MCk9PTApe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfWo9Y1tqPj4yXXwwO2lmKCEoKGNbMzQwMF18MCk9PS0xKSl7Y1twPj4yXT0xMzYwMDtjW3ArND4+Ml09MjA4O2NbcCs4Pj4yXT0wO2NnKDEzNjAwLHApfXA9KGNbMTM2MDQ+PjJdfDApKyAtMXwwO3I9Y1tqKzg+PjJdfDA7aWYoISgoY1tqKzEyPj4yXXwwKS1yPj4yPj4+MD5wPj4+MCkpe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfWo9Y1tyKyhwPDwyKT4+Ml18MDtpZigoanwwKT09MCl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9bWNbY1soY1tqPj4yXXwwKSsyMD4+Ml0mMTI3XShsLGopO3A9YVtsPj4wXXwwO2lmKChwJjEpPT0wKXtwPShwJjI1NSk+Pj4xfWVsc2V7cD1jW2wrND4+Ml18MH1pZigocHwwKSE9MCl7Y1toPj4yXT1mO3A9YVtiPj4wXXwwO2lmKHA8PDI0Pj4yND09NDN8cDw8MjQ+PjI0PT00NSl7dj14Y1tjWyhjW24+PjJdfDApKzI4Pj4yXSY2M10obixwKXwwO3A9Y1toPj4yXXwwO2NbaD4+Ml09cCsxO2FbcD4+MF09djtwPWIrMXwwfWVsc2V7cD1ifWlmKCgoZS1wfDApPjE/KGFbcD4+MF18MCk9PTQ4OjApPyhxPXArMXwwLHY9YVtxPj4wXXwwLHY8PDI0Pj4yND09ODh8djw8MjQ+PjI0PT0xMjApOjApe3Y9eGNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mNjNdKG4sNDgpfDA7dT1jW2g+PjJdfDA7Y1toPj4yXT11KzE7YVt1Pj4wXT12O3U9eGNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mNjNdKG4sYVtxPj4wXXwwKXwwO3Y9Y1toPj4yXXwwO2NbaD4+Ml09disxO2Fbdj4+MF09dTtwPXArMnwwfWlmKChwfDApIT0oZXwwKT8obz1lKyAtMXwwLG8+Pj4wPnA+Pj4wKTowKXtxPXA7ZG97dj1hW3E+PjBdfDA7YVtxPj4wXT1hW28+PjBdfDA7YVtvPj4wXT12O3E9cSsxfDA7bz1vKyAtMXwwfXdoaWxlKHE+Pj4wPG8+Pj4wKX1qPW9jW2NbKGNbaj4+Ml18MCkrMTY+PjJdJjEyN10oail8MDtpZihwPj4+MDxlPj4+MCl7cT1sKzF8MDtzPWwrNHwwO289bCs4fDA7dT0wO3Q9MDtyPXA7d2hpbGUoMSl7dj1hWygoYVtsPj4wXSYxKT09MD9xOmNbbz4+Ml18MCkrdD4+MF18MDtpZih2PDwyND4+MjQhPTAmKHV8MCk9PSh2PDwyND4+MjR8MCkpe3U9Y1toPj4yXXwwO2NbaD4+Ml09dSsxO2FbdT4+MF09ajt1PWFbbD4+MF18MDtpZigodSYxKT09MCl7dj0odSYyNTUpPj4+MX1lbHNle3Y9Y1tzPj4yXXwwfXU9MDt0PSh0Pj4+MDwodisgLTF8MCk+Pj4wJjEpK3R8MH13PXhjW2NbKGNbbj4+Ml18MCkrMjg+PjJdJjYzXShuLGFbcj4+MF18MCl8MDt2PWNbaD4+Ml18MDtjW2g+PjJdPXYrMTthW3Y+PjBdPXc7cj1yKzF8MDtpZighKHI+Pj4wPGU+Pj4wKSl7YnJlYWt9ZWxzZXt1PXUrMXwwfX19bz1mKyhwLWIpfDA7bj1jW2g+PjJdfDA7aWYoKG98MCkhPShufDApPyhtPW4rIC0xfDAsbT4+PjA+bz4+PjApOjApe2Rve3c9YVtvPj4wXXwwO2Fbbz4+MF09YVttPj4wXXwwO2FbbT4+MF09dztvPW8rMXwwO209bSsgLTF8MH13aGlsZShvPj4+MDxtPj4+MCl9fWVsc2V7dWNbY1soY1tuPj4yXXwwKSszMj4+Ml0mMzFdKG4sYixlLGYpfDA7Y1toPj4yXT1mKyhlLWIpfWlmKChkfDApPT0oZXwwKSl7Yj1jW2g+PjJdfDB9ZWxzZXtiPWYrKGQtYil8MH1jW2c+PjJdPWI7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59bD1jW2wrOD4+Ml18MDtpZigobHwwKT09MCl7aT1rO3JldHVybn12bihsKTtpPWs7cmV0dXJufWZ1bmN0aW9uIHlpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2Q9aTtpPWkrOTZ8MDtuPWQrOHwwO3M9ZDtvPWQrNjR8MDtrPWQrNjB8MDttPWQrNTZ8MDtwPWQrNTJ8MDt1PXM7Y1t1Pj4yXT0zNztjW3UrND4+Ml09MDt1PXMrMXwwO3E9Zis0fDA7cj1jW3E+PjJdfDA7aWYoKHImMjA0OHwwKSE9MCl7YVt1Pj4wXT00Mzt1PXMrMnwwfWlmKChyJjUxMnwwKSE9MCl7YVt1Pj4wXT0zNTt1PXUrMXwwfXQ9dSsyfDA7YVt1Pj4wXT0xMDg7YVt1KzE+PjBdPTEwODt1PXImNzQ7ZG97aWYoKHV8MCk9PTY0KXthW3Q+PjBdPTExMX1lbHNlIGlmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNle2FbdD4+MF09MTAwfX13aGlsZSgwKTtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dT1jWzMzNDBdfDA7dD1uO2NbdD4+Ml09aDtjW3QrND4+Ml09ajtqPXdpKG8sMjIsdSxzLG4pfDA7aD1vK2p8MDtxPWNbcT4+Ml0mMTc2O2Rve2lmKChxfDApPT0zMil7cT1ofWVsc2UgaWYoKHF8MCk9PTE2KXtxPWFbbz4+MF18MDtpZihxPDwyND4+MjQ9PTQzfHE8PDI0Pj4yND09NDUpe3E9bysxfDA7YnJlYWt9aWYoKGp8MCk+MSZxPDwyND4+MjQ9PTQ4Pyh1PWFbbysxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3E9bysyfDB9ZWxzZXtsPTIxfX1lbHNle2w9MjF9fXdoaWxlKDApO2lmKChsfDApPT0yMSl7cT1vfWw9Y1tmKzI4Pj4yXXwwO2NbcD4+Ml09bDtsPWwrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTt4aShvLHEsaCxuLGssbSxwKTtsPWNbcD4+Ml18MDt0PWwrNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1ttPj4yXXwwO1djKGIscyxuLHQsdSxmLGcpO2k9ZDtyZXR1cm59bGNbY1soY1tsPj4yXXwwKSs4Pj4yXSYyNTVdKGwpO3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1ttPj4yXXwwO1djKGIscyxuLHQsdSxmLGcpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gemkoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDttPWk7aT1pKzY0fDA7cj1tO3E9bSsxNnwwO249bSsyNHwwO2s9bSszNnwwO2Q9bSs4fDA7aj1tKzR8MDtvPW0rMTJ8MDthW3ErMD4+MF09YVsxMjI2ND4+MF18MDthW3ErMT4+MF09YVsxMjI2NT4+MF18MDthW3ErMj4+MF09YVsxMjI2Nj4+MF18MDthW3ErMz4+MF09YVsxMjI2Nz4+MF18MDthW3ErND4+MF09YVsxMjI2OD4+MF18MDthW3ErNT4+MF09YVsxMjI2OT4+MF18MDt0PXErMXwwO3A9Zis0fDA7cz1jW3A+PjJdfDA7aWYoKHMmMjA0OHwwKSE9MCl7YVt0Pj4wXT00Mzt0PXErMnwwfWlmKChzJjUxMnwwKSE9MCl7YVt0Pj4wXT0zNTt0PXQrMXwwfWFbdD4+MF09MTA4O3Q9dCsxfDA7dT1zJjc0O2Rve2lmKCh1fDApPT04KXtpZigocyYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTExN319d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO2Nbcj4+Ml09aDtxPXdpKG4sMTIsdSxxLHIpfDA7aD1uK3F8MDtwPWNbcD4+Ml0mMTc2O2Rve2lmKChwfDApPT0zMil7cD1ofWVsc2UgaWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh1PWFbbisxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtsPTIxfX1lbHNle2w9MjF9fXdoaWxlKDApO2lmKChsfDApPT0yMSl7cD1ufWw9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09bDtsPWwrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTt4aShuLHAsaCxrLGQsaixvKTtsPWNbbz4+Ml18MDt0PWwrNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1tkPj4yXXwwO3U9Y1tqPj4yXXwwO1djKGIscyxrLHQsdSxmLGcpO2k9bTtyZXR1cm59bGNbY1soY1tsPj4yXXwwKSs4Pj4yXSYyNTVdKGwpO3M9Y1tlPj4yXXwwO3Q9Y1tkPj4yXXwwO3U9Y1tqPj4yXXwwO1djKGIscyxrLHQsdSxmLGcpO2k9bTtyZXR1cm59ZnVuY3Rpb24gQWkoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7ZD1pO2k9aSs5NnwwO249ZCs4fDA7cz1kO289ZCs2NHwwO2s9ZCs2MHwwO209ZCs1NnwwO3A9ZCs1MnwwO3U9cztjW3U+PjJdPTM3O2NbdSs0Pj4yXT0wO3U9cysxfDA7cT1mKzR8MDtyPWNbcT4+Ml18MDtpZigociYyMDQ4fDApIT0wKXthW3U+PjBdPTQzO3U9cysyfDB9aWYoKHImNTEyfDApIT0wKXthW3U+PjBdPTM1O3U9dSsxfDB9dD11KzJ8MDthW3U+PjBdPTEwODthW3UrMT4+MF09MTA4O3U9ciY3NDtkb3tpZigodXwwKT09NjQpe2FbdD4+MF09MTExfWVsc2UgaWYoKHV8MCk9PTgpe2lmKChyJjE2Mzg0fDApPT0wKXthW3Q+PjBdPTEyMDticmVha31lbHNle2FbdD4+MF09ODg7YnJlYWt9fWVsc2V7YVt0Pj4wXT0xMTd9fXdoaWxlKDApO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX11PWNbMzM0MF18MDt0PW47Y1t0Pj4yXT1oO2NbdCs0Pj4yXT1qO2o9d2kobywyMyx1LHMsbil8MDtoPW8ranwwO3E9Y1txPj4yXSYxNzY7ZG97aWYoKHF8MCk9PTMyKXtxPWh9ZWxzZSBpZigocXwwKT09MTYpe3E9YVtvPj4wXXwwO2lmKHE8PDI0Pj4yND09NDN8cTw8MjQ+PjI0PT00NSl7cT1vKzF8MDticmVha31pZigoanwwKT4xJnE8PDI0Pj4yND09NDg/KHU9YVtvKzE+PjBdfDAsdTw8MjQ+PjI0PT04OHx1PDwyND4+MjQ9PTEyMCk6MCl7cT1vKzJ8MH1lbHNle2w9MjF9fWVsc2V7bD0yMX19d2hpbGUoMCk7aWYoKGx8MCk9PTIxKXtxPW99bD1jW2YrMjg+PjJdfDA7Y1twPj4yXT1sO2w9bCs0fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO3hpKG8scSxoLG4sayxtLHApO2w9Y1twPj4yXXwwO3Q9bCs0fDA7dT1jW3Q+PjJdfDA7Y1t0Pj4yXT11KyAtMTtpZigodXwwKSE9MCl7cz1jW2U+PjJdfDA7dD1jW2s+PjJdfDA7dT1jW20+PjJdfDA7V2MoYixzLG4sdCx1LGYsZyk7aT1kO3JldHVybn1sY1tjWyhjW2w+PjJdfDApKzg+PjJdJjI1NV0obCk7cz1jW2U+PjJdfDA7dD1jW2s+PjJdfDA7dT1jW20+PjJdfDA7V2MoYixzLG4sdCx1LGYsZyk7aT1kO3JldHVybn1mdW5jdGlvbiBCaShiLGQsZSxmLGcsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aj0rajt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDtkPWk7aT1pKzEyOHwwO3A9ZDt1PWQrNjR8MDtyPWQrOTJ8MDt0PWQrODB8MDtsPWQrNzZ8MDtuPWQrNzJ8MDtvPWQrODR8MDttPWQrODh8MDt2PXU7Y1t2Pj4yXT0zNztjW3YrND4+Ml09MDt2PXUrMXwwO3M9Zis0fDA7dz1jW3M+PjJdfDA7aWYoKHcmMjA0OHwwKSE9MCl7YVt2Pj4wXT00Mzt2PXUrMnwwfWlmKCh3JjEwMjR8MCkhPTApe2Fbdj4+MF09MzU7dj12KzF8MH14PXcmMjYwO3k9dz4+PjE0O2Rve2lmKCh4fDApPT0yNjApe2lmKCh5JjF8MCk9PTApe2Fbdj4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt2Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt2Pj4wXT00Njt3PXYrMnwwO2FbdisxPj4wXT00MjtpZigoeHwwKT09NCl7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDI7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MDt2PTE7YnJlYWt9fWVsc2UgaWYoKHh8MCk9PTI1Nil7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDE7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT02OTt2PTE7YnJlYWt9fWVsc2V7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDM7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MTt2PTE7YnJlYWt9fX19d2hpbGUoMCk7Y1t0Pj4yXT1yO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtpZih2KXtjW3A+PjJdPWNbZis4Pj4yXTt5PXArNHwwO2hbaz4+M109ajtjW3k+PjJdPWNbaz4+Ml07Y1t5KzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9ZWxzZXtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWlmKCh3fDApPjI5KXt3PShhWzEzMzY4XXwwKT09MDtpZih2KXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2NbcD4+Ml09Y1tmKzg+PjJdO3k9cCs0fDA7aFtrPj4zXT1qO2NbeT4+Ml09Y1trPj4yXTtjW3krND4+Ml09Y1trKzQ+PjJdO3c9Q2kodCx3LHUscCl8MH1lbHNle2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eT1wKzR8MDtoW2s+PjNdPWo7Y1t5Pj4yXT1jW2s+PjJdO2NbeSs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0xNil7cz1hW3Y+PjBdfDA7aWYoczw8MjQ+PjI0PT00M3xzPDwyND4+MjQ9PTQ1KXtzPXYrMXwwO2JyZWFrfWlmKCh3fDApPjEmczw8MjQ+PjI0PT00OD8oeT1hW3YrMT4+MF18MCx5PDwyND4+MjQ9PTg4fHk8PDI0Pj4yND09MTIwKTowKXtzPXYrMnwwfWVsc2V7cT00OH19ZWxzZSBpZigoc3wwKT09MzIpe3M9dX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwxKXwwO2lmKChwfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXg9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09eDt4PXgrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtEaShyLHMsdSxwLGwsbixvKTtvPWNbbz4+Ml18MDt4PW8rNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1XYyhtLGNbZT4+Ml18MCxwLGNbbD4+Ml18MCxjW24+PjJdfDAsZixnKTt5PWNbbT4+Ml18MDtjW2U+PjJdPXk7Y1tiPj4yXT15O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1kO3JldHVybn12bih0KTtpPWQ7cmV0dXJufWZ1bmN0aW9uIENpKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWY7Y1tnPj4yXT1lO2I9aWIoYnwwKXwwO2Q9SWIoYXwwLGR8MCxnfDApfDA7aWYoKGJ8MCk9PTApe2k9ZjtyZXR1cm4gZHwwfWliKGJ8MCl8MDtpPWY7cmV0dXJuIGR8MH1mdW5jdGlvbiBEaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO2s9aTtpPWkrMzJ8MDtvPWs7bD1rKzEyfDA7bT1jW2o+PjJdfDA7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW28+PjJdPTEzNDU2O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NTYsbyl9dD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7cj1jW20rOD4+Ml18MDtpZighKChjW20rMTI+PjJdfDApLXI+PjI+Pj4wPnQ+Pj4wKSl7eT1YYSg0KXwwO2NbeT4+Ml09MjEzMDQ7d2IoeXwwLDIxMzc2LDE5Nil9bT1jW3IrKHQ8PDIpPj4yXXwwO2lmKChtfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbaj4+Ml18MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2Nbbz4+Ml09MTM2MDA7Y1tvKzQ+PjJdPTIwODtjW28rOD4+Ml09MDtjZygxMzYwMCxvKX1vPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtyPWNbais4Pj4yXXwwO2lmKCEoKGNbaisxMj4+Ml18MCktcj4+Mj4+PjA+bz4+PjApKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1vPWNbcisobzw8Mik+PjJdfDA7aWYoKG98MCk9PTApe3k9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfW1jW2NbKGNbbz4+Ml18MCkrMjA+PjJdJjEyN10obCxvKTtjW2g+PjJdPWY7aj1hW2I+PjBdfDA7aWYoajw8MjQ+PjI0PT00M3xqPDwyND4+MjQ9PTQ1KXt5PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGopfDA7dD1jW2g+PjJdfDA7Y1toPj4yXT10KzE7YVt0Pj4wXT15O3Q9YisxfDB9ZWxzZXt0PWJ9aj1lO2E6ZG97aWYoKChqLXR8MCk+MT8oYVt0Pj4wXXwwKT09NDg6MCk/KHA9dCsxfDAseT1hW3A+PjBdfDAseTw8MjQ+PjI0PT04OHx5PDwyND4+MjQ9PTEyMCk6MCl7eT14Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSY2M10obSw0OCl8MDt4PWNbaD4+Ml18MDtjW2g+PjJdPXgrMTthW3g+PjBdPXk7dD10KzJ8MDt4PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGFbcD4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrMTthW3k+PjBdPXg7aWYodD4+PjA8ZT4+PjApe3I9dDt3aGlsZSgxKXtwPWFbcj4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9eT1wPDwyND4+MjQ7aWYoISgoeSsgLTQ4fDApPj4+MDwxMCk/ISgoKHl8MzIpKyAtOTd8MCk+Pj4wPDYpOjApe3A9dDticmVhayBhfXI9cisxfDA7aWYoIShyPj4+MDxlPj4+MCkpe3A9dDticmVha319fWVsc2V7cD10O3I9dH19ZWxzZXtzPTE1fX13aGlsZSgwKTtiOmRve2lmKChzfDApPT0xNSl7aWYodD4+PjA8ZT4+PjApe3I9dDt3aGlsZSgxKXtwPWFbcj4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cz1yKzF8MDtpZighKCgocDw8MjQ+PjI0KSsgLTQ4fDApPj4+MDwxMCkpe3A9dDticmVhayBifWlmKHM+Pj4wPGU+Pj4wKXtyPXN9ZWxzZXtwPXQ7cj1zO2JyZWFrfX19ZWxzZXtwPXQ7cj10fX19d2hpbGUoMCk7cz1hW2w+PjBdfDA7aWYoKHMmMSk9PTApe3M9KHMmMjU1KT4+PjF9ZWxzZXtzPWNbbCs0Pj4yXXwwfWlmKChzfDApIT0wKXtpZigocHwwKSE9KHJ8MCk/KHE9cisgLTF8MCxxPj4+MD5wPj4+MCk6MCl7cz1wO2Rve3k9YVtzPj4wXXwwO2Fbcz4+MF09YVtxPj4wXXwwO2FbcT4+MF09eTtzPXMrMXwwO3E9cSsgLTF8MH13aGlsZShzPj4+MDxxPj4+MCl9dT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7aWYocD4+PjA8cj4+PjApe3E9bCsxfDA7dD1sKzR8MDtzPWwrOHwwO3g9MDt3PTA7dj1wO3doaWxlKDEpe3k9YVsoKGFbbD4+MF0mMSk9PTA/cTpjW3M+PjJdfDApK3c+PjBdfDA7aWYoeTw8MjQ+PjI0PjAmKHh8MCk9PSh5PDwyND4+MjR8MCkpe3g9Y1toPj4yXXwwO2NbaD4+Ml09eCsxO2FbeD4+MF09dTt4PWFbbD4+MF18MDtpZigoeCYxKT09MCl7eT0oeCYyNTUpPj4+MX1lbHNle3k9Y1t0Pj4yXXwwfXg9MDt3PSh3Pj4+MDwoeSsgLTF8MCk+Pj4wJjEpK3d8MH16PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGFbdj4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrMTthW3k+PjBdPXo7dj12KzF8MDtpZighKHY+Pj4wPHI+Pj4wKSl7YnJlYWt9ZWxzZXt4PXgrMXwwfX19cD1mKyhwLWIpfDA7cT1jW2g+PjJdfDA7aWYoKHB8MCkhPShxfDApPyhuPXErIC0xfDAsbj4+PjA+cD4+PjApOjApe2Rve3o9YVtwPj4wXXwwO2FbcD4+MF09YVtuPj4wXXwwO2Fbbj4+MF09ejtwPXArMXwwO249bisgLTF8MH13aGlsZShwPj4+MDxuPj4+MCl9fWVsc2V7dWNbY1soY1ttPj4yXXwwKSszMj4+Ml0mMzFdKG0scCxyLGNbaD4+Ml18MCl8MDtjW2g+PjJdPShjW2g+PjJdfDApKyhyLXApfWM6ZG97aWYocj4+PjA8ZT4+PjApe3doaWxlKDEpe249YVtyPj4wXXwwO2lmKG48PDI0Pj4yND09NDYpe2JyZWFrfXk9eGNbY1soY1ttPj4yXXwwKSsyOD4+Ml0mNjNdKG0sbil8MDt6PWNbaD4+Ml18MDtjW2g+PjJdPXorMTthW3o+PjBdPXk7cj1yKzF8MDtpZighKHI+Pj4wPGU+Pj4wKSl7YnJlYWsgY319eT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7ej1jW2g+PjJdfDA7Y1toPj4yXT16KzE7YVt6Pj4wXT15O3I9cisxfDB9fXdoaWxlKDApO3VjW2NbKGNbbT4+Ml18MCkrMzI+PjJdJjMxXShtLHIsZSxjW2g+PjJdfDApfDA7bT0oY1toPj4yXXwwKSsoai1yKXwwO2NbaD4+Ml09bTtpZigoZHwwKSE9KGV8MCkpe209ZisoZC1iKXwwfWNbZz4+Ml09bTtpZigoYVtsPj4wXSYxKT09MCl7aT1rO3JldHVybn1sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWs7cmV0dXJufXZuKGwpO2k9aztyZXR1cm59ZnVuY3Rpb24gRWkoYixkLGUsZixnLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9K2o7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtkPWk7aT1pKzEyOHwwO3A9ZDt1PWQrNjR8MDtyPWQrOTJ8MDt0PWQrODB8MDtsPWQrNzZ8MDttPWQrNzJ8MDtvPWQrODR8MDtuPWQrODh8MDt4PXU7Y1t4Pj4yXT0zNztjW3grND4+Ml09MDt4PXUrMXwwO3M9Zis0fDA7dj1jW3M+PjJdfDA7aWYoKHYmMjA0OHwwKSE9MCl7YVt4Pj4wXT00Mzt4PXUrMnwwfWlmKCh2JjEwMjR8MCkhPTApe2FbeD4+MF09MzU7eD14KzF8MH13PXYmMjYwO3Y9dj4+PjE0O2Rve2lmKCh3fDApPT0yNjApe2FbeD4+MF09NzY7dz14KzF8MDtpZigodiYxfDApPT0wKXthW3c+PjBdPTk3O3Y9MDticmVha31lbHNle2Fbdz4+MF09NjU7dj0wO2JyZWFrfX1lbHNle2FbeD4+MF09NDY7YVt4KzE+PjBdPTQyO2FbeCsyPj4wXT03Njt4PXgrM3wwO2lmKCh3fDApPT0yNTYpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAxO3Y9MTticmVha31lbHNle2FbeD4+MF09Njk7dj0xO2JyZWFrfX1lbHNlIGlmKCh3fDApPT00KXtpZigodiYxfDApPT0wKXthW3g+PjBdPTEwMjt2PTE7YnJlYWt9ZWxzZXthW3g+PjBdPTcwO3Y9MTticmVha319ZWxzZXtpZigodiYxfDApPT0wKXthW3g+PjBdPTEwMzt2PTE7YnJlYWt9ZWxzZXthW3g+PjBdPTcxO3Y9MTticmVha319fX13aGlsZSgwKTtjW3Q+PjJdPXI7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2lmKHYpe2NbcD4+Ml09Y1tmKzg+PjJdO3g9cCs0fDA7aFtrPj4zXT1qO2NbeD4+Ml09Y1trPj4yXTtjW3grND4+Ml09Y1trKzQ+PjJdO3c9d2kociwzMCx3LHUscCl8MH1lbHNle2hbaz4+M109ajtjW3A+PjJdPWNbaz4+Ml07Y1twKzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9aWYoKHd8MCk+Mjkpe3c9KGFbMTMzNjhdfDApPT0wO2lmKHYpe2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eD1wKzR8MDtoW2s+PjNdPWo7Y1t4Pj4yXT1jW2s+PjJdO2NbeCs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfWVsc2V7aWYodz8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0xNil7cz1hW3Y+PjBdfDA7aWYoczw8MjQ+PjI0PT00M3xzPDwyND4+MjQ9PTQ1KXtzPXYrMXwwO2JyZWFrfWlmKCh3fDApPjEmczw8MjQ+PjI0PT00OD8oeD1hW3YrMT4+MF18MCx4PDwyND4+MjQ9PTg4fHg8PDI0Pj4yND09MTIwKTowKXtzPXYrMnwwfWVsc2V7cT00OH19ZWxzZSBpZigoc3wwKT09MzIpe3M9dX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwxKXwwO2lmKChwfDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXc9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09dzt3PXcrNHwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMTtEaShyLHMsdSxwLGwsbSxvKTtvPWNbbz4+Ml18MDt3PW8rNHwwO3g9Y1t3Pj4yXXwwO2Nbdz4+Ml09eCsgLTE7aWYoKHh8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1XYyhuLGNbZT4+Ml18MCxwLGNbbD4+Ml18MCxjW20+PjJdfDAsZixnKTt4PWNbbj4+Ml18MDtjW2U+PjJdPXg7Y1tiPj4yXT14O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1kO3JldHVybn12bih0KTtpPWQ7cmV0dXJufWZ1bmN0aW9uIEZpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtsPWk7aT1pKzgwfDA7bj1sO289bCs3MnwwO2Q9bCs1MnwwO2s9bCsxMnwwO2FbbyswPj4wXT1hWzEyMjcyPj4wXXwwO2FbbysxPj4wXT1hWzEyMjczPj4wXXwwO2FbbysyPj4wXT1hWzEyMjc0Pj4wXXwwO2FbbyszPj4wXT1hWzEyMjc1Pj4wXXwwO2Fbbys0Pj4wXT1hWzEyMjc2Pj4wXXwwO2Fbbys1Pj4wXT1hWzEyMjc3Pj4wXXwwO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1wPWNbMzM0MF18MDtjW24+PjJdPWg7bz13aShkLDIwLHAsbyxuKXwwO2g9ZCtvfDA7cD1jW2YrND4+Ml0mMTc2O2Rve2lmKChwfDApPT0xNil7cD1hW2Q+PjBdfDA7aWYocDw8MjQ+PjI0PT00M3xwPDwyND4+MjQ9PTQ1KXtwPWQrMXwwO2JyZWFrfWlmKChvfDApPjEmcDw8MjQ+PjI0PT00OD8ocT1hW2QrMT4+MF18MCxxPDwyND4+MjQ9PTg4fHE8PDI0Pj4yND09MTIwKTowKXtwPWQrMnwwfWVsc2V7bT0xMX19ZWxzZSBpZigocHwwKT09MzIpe3A9aH1lbHNle209MTF9fXdoaWxlKDApO2lmKChtfDApPT0xMSl7cD1kfW09Y1tmKzI4Pj4yXXwwO3E9bSs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ1NjtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDU2LG4pfXE9KGNbMTM0NjA+PjJdfDApKyAtMXwwO249Y1ttKzg+PjJdfDA7aWYoKGNbbSsxMj4+Ml18MCktbj4+Mj4+PjA+cT4+PjA/KGo9Y1tuKyhxPDwyKT4+Ml18MCwoanwwKSE9MCk6MCl7bj1tKzR8MDtxPWNbbj4+Ml18MDtjW24+PjJdPXErIC0xO2lmKChxfDApPT0wKXtsY1tjWyhjW20+PjJdfDApKzg+PjJdJjI1NV0obSl9dWNbY1soY1tqPj4yXXwwKSszMj4+Ml0mMzFdKGosZCxoLGspfDA7aj1rK298MDtpZigocHwwKT09KGh8MCkpe3E9ajtwPWNbZT4+Ml18MDtXYyhiLHAsayxxLGosZixnKTtpPWw7cmV0dXJufXE9aysocC1kKXwwO3A9Y1tlPj4yXXwwO1djKGIscCxrLHEsaixmLGcpO2k9bDtyZXR1cm59cT1YYSg0KXwwO2NbcT4+Ml09MjEzMDQ7d2IocXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gR2koYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gSGkoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIElpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MDtqPWk7aT1pKzMyfDA7bT1qO249aisyNHwwO2s9aisxMnwwO2lmKChjW2YrND4+Ml0mMXwwKT09MCl7az1jWyhjW2Q+PjJdfDApKzI0Pj4yXXwwO2Nbbj4+Ml09Y1tlPj4yXTtsPWgmMTtjW20rMD4+Ml09Y1tuKzA+PjJdO3djW2smNjNdKGIsZCxtLGYsZyxsKTtpPWo7cmV0dXJufW49Y1tmKzI4Pj4yXXwwO2Q9bis0fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxO2lmKCEoKGNbMzQwMl18MCk9PS0xKSl7Y1ttPj4yXT0xMzYwODtjW20rND4+Ml09MjA4O2NbbSs4Pj4yXT0wO2NnKDEzNjA4LG0pfWc9KGNbMTM2MTI+PjJdfDApKyAtMXwwO209Y1tuKzg+PjJdfDA7aWYoKGNbbisxMj4+Ml18MCktbT4+Mj4+PjA+Zz4+PjA/KGw9Y1ttKyhnPDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7Zj1uKzR8MDtkPWNbZj4+Ml18MDtjW2Y+PjJdPWQrIC0xO2lmKChkfDApPT0wKXtsY1tjWyhjW24+PjJdfDApKzg+PjJdJjI1NV0obil9bT1jW2w+PjJdfDA7aWYoaCl7bWNbY1ttKzI0Pj4yXSYxMjddKGssbCl9ZWxzZXttY1tjW20rMjg+PjJdJjEyN10oayxsKX1nPWFbaz4+MF18MDtpZigoZyYxKT09MCl7aD1rKzR8MDttPWg7bD1rKzh8MH1lbHNle2w9ays4fDA7bT1jW2w+PjJdfDA7aD1rKzR8MH13aGlsZSgxKXtmPShnJjEpPT0wO2lmKGYpe249aDtnPShnJjI1NSk+Pj4xfWVsc2V7bj1jW2w+PjJdfDA7Zz1jW2g+PjJdfDB9aWYoKG18MCk9PShuKyhnPDwyKXwwKSl7YnJlYWt9Zz1jW20+PjJdfDA7Zj1jW2U+PjJdfDA7aWYoKGZ8MCkhPTApe2Q9ZisyNHwwO249Y1tkPj4yXXwwO2lmKChufDApPT0oY1tmKzI4Pj4yXXwwKSl7Zz14Y1tjWyhjW2Y+PjJdfDApKzUyPj4yXSY2M10oZixnKXwwfWVsc2V7Y1tkPj4yXT1uKzQ7Y1tuPj4yXT1nfWlmKChnfDApPT0tMSl7Y1tlPj4yXT0wfX1nPWFbaz4+MF18MDttPW0rNHwwfWNbYj4+Ml09Y1tlPj4yXTtpZihmKXtpPWo7cmV0dXJufWs9Y1trKzg+PjJdfDA7aWYoKGt8MCk9PTApe2k9ajtyZXR1cm59dm4oayk7aT1qO3JldHVybn1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBKaShiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7bT1pO2k9aSsxMjh8MDtsPW07cj1tKzEwOHwwO249bSs5NnwwO2Q9bSs5MnwwO2o9bSs4OHwwO289bSs4NHwwO2FbciswPj4wXT1hWzEyMjY0Pj4wXXwwO2FbcisxPj4wXT1hWzEyMjY1Pj4wXXwwO2FbcisyPj4wXT1hWzEyMjY2Pj4wXXwwO2FbciszPj4wXT1hWzEyMjY3Pj4wXXwwO2Fbcis0Pj4wXT1hWzEyMjY4Pj4wXXwwO2Fbcis1Pj4wXT1hWzEyMjY5Pj4wXXwwO3M9cisxfDA7cD1mKzR8MDtxPWNbcD4+Ml18MDtpZigocSYyMDQ4fDApIT0wKXthW3M+PjBdPTQzO3M9cisyfDB9aWYoKHEmNTEyfDApIT0wKXthW3M+PjBdPTM1O3M9cysxfDB9YVtzPj4wXT0xMDg7cz1zKzF8MDt0PXEmNzQ7ZG97aWYoKHR8MCk9PTgpe2lmKChxJjE2Mzg0fDApPT0wKXthW3M+PjBdPTEyMDticmVha31lbHNle2Fbcz4+MF09ODg7YnJlYWt9fWVsc2UgaWYoKHR8MCk9PTY0KXthW3M+PjBdPTExMX1lbHNle2Fbcz4+MF09MTAwfX13aGlsZSgwKTtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cT1jWzMzNDBdfDA7Y1tsPj4yXT1oO3E9d2kobiwxMixxLHIsbCl8MDtoPW4rcXwwO3A9Y1twPj4yXSYxNzY7ZG97aWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh0PWFbbisxPj4wXXwwLHQ8PDI0Pj4yND09ODh8dDw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtrPTIxfX1lbHNlIGlmKChwfDApPT0zMil7cD1ofWVsc2V7az0yMX19d2hpbGUoMCk7aWYoKGt8MCk9PTIxKXtwPW59az1jW2YrMjg+PjJdfDA7Y1tvPj4yXT1rO2s9ays0fDA7Y1trPj4yXT0oY1trPj4yXXwwKSsxO0tpKG4scCxoLGwsZCxqLG8pO2s9Y1tvPj4yXXwwO3M9ays0fDA7dD1jW3M+PjJdfDA7Y1tzPj4yXT10KyAtMTtpZigodHwwKSE9MCl7cj1jW2U+PjJdfDA7cz1jW2Q+PjJdfDA7dD1jW2o+PjJdfDA7TGkoYixyLGwscyx0LGYsZyk7aT1tO3JldHVybn1sY1tjWyhjW2s+PjJdfDApKzg+PjJdJjI1NV0oayk7cj1jW2U+PjJdfDA7cz1jW2Q+PjJdfDA7dD1jW2o+PjJdfDA7TGkoYixyLGwscyx0LGYsZyk7aT1tO3JldHVybn1mdW5jdGlvbiBLaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtrPWk7aT1pKzMyfDA7bz1rO2w9aysxMnwwO249Y1tqPj4yXXwwO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tvPj4yXT0xMzQ0ODtjW28rND4+Ml09MjA4O2Nbbys4Pj4yXT0wO2NnKDEzNDQ4LG8pfXM9KGNbMTM0NTI+PjJdfDApKyAtMXwwO3I9Y1tuKzg+PjJdfDA7aWYoISgoY1tuKzEyPj4yXXwwKS1yPj4yPj4+MD5zPj4+MCkpe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfW49Y1tyKyhzPDwyKT4+Ml18MDtpZigobnwwKT09MCl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9aj1jW2o+PjJdfDA7aWYoISgoY1szNDAyXXwwKT09LTEpKXtjW28+PjJdPTEzNjA4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM2MDgsbyl9bz0oY1sxMzYxMj4+Ml18MCkrIC0xfDA7cj1jW2orOD4+Ml18MDtpZighKChjW2orMTI+PjJdfDApLXI+PjI+Pj4wPm8+Pj4wKSl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9aj1jW3IrKG88PDIpPj4yXXwwO2lmKChqfDApPT0wKXt2PVhhKDQpfDA7Y1t2Pj4yXT0yMTMwNDt3Yih2fDAsMjEzNzYsMTk2KX1tY1tjWyhjW2o+PjJdfDApKzIwPj4yXSYxMjddKGwsaik7bz1hW2w+PjBdfDA7aWYoKG8mMSk9PTApe289KG8mMjU1KT4+PjF9ZWxzZXtvPWNbbCs0Pj4yXXwwfWlmKChvfDApIT0wKXtjW2g+PjJdPWY7bz1hW2I+PjBdfDA7aWYobzw8MjQ+PjI0PT00M3xvPDwyND4+MjQ9PTQ1KXt2PXhjW2NbKGNbbj4+Ml18MCkrNDQ+PjJdJjYzXShuLG8pfDA7bz1jW2g+PjJdfDA7Y1toPj4yXT1vKzQ7Y1tvPj4yXT12O289YisxfDB9ZWxzZXtvPWJ9aWYoKChlLW98MCk+MT8oYVtvPj4wXXwwKT09NDg6MCk/KHE9bysxfDAsdj1hW3E+PjBdfDAsdjw8MjQ+PjI0PT04OHx2PDwyND4+MjQ9PTEyMCk6MCl7dj14Y1tjWyhjW24+PjJdfDApKzQ0Pj4yXSY2M10obiw0OCl8MDt1PWNbaD4+Ml18MDtjW2g+PjJdPXUrNDtjW3U+PjJdPXY7dT14Y1tjWyhjW24+PjJdfDApKzQ0Pj4yXSY2M10obixhW3E+PjBdfDApfDA7dj1jW2g+PjJdfDA7Y1toPj4yXT12KzQ7Y1t2Pj4yXT11O289bysyfDB9aWYoKG98MCkhPShlfDApPyhwPWUrIC0xfDAscD4+PjA+bz4+PjApOjApe3E9bztkb3t2PWFbcT4+MF18MDthW3E+PjBdPWFbcD4+MF18MDthW3A+PjBdPXY7cT1xKzF8MDtwPXArIC0xfDB9d2hpbGUocT4+PjA8cD4+PjApfXE9b2NbY1soY1tqPj4yXXwwKSsxNj4+Ml0mMTI3XShqKXwwO2lmKG8+Pj4wPGU+Pj4wKXtwPWwrMXwwO3M9bCs0fDA7aj1sKzh8MDt1PTA7dD0wO3I9bzt3aGlsZSgxKXt2PWFbKChhW2w+PjBdJjEpPT0wP3A6Y1tqPj4yXXwwKSt0Pj4wXXwwO2lmKHY8PDI0Pj4yNCE9MCYodXwwKT09KHY8PDI0Pj4yNHwwKSl7dT1jW2g+PjJdfDA7Y1toPj4yXT11KzQ7Y1t1Pj4yXT1xO3U9YVtsPj4wXXwwO2lmKCh1JjEpPT0wKXt2PSh1JjI1NSk+Pj4xfWVsc2V7dj1jW3M+PjJdfDB9dT0wO3Q9KHQ+Pj4wPCh2KyAtMXwwKT4+PjAmMSkrdHwwfXg9eGNbY1soY1tuPj4yXXwwKSs0ND4+Ml0mNjNdKG4sYVtyPj4wXXwwKXwwO3c9Y1toPj4yXXwwO3Y9dys0fDA7Y1toPj4yXT12O2Nbdz4+Ml09eDtyPXIrMXwwO2lmKCEocj4+PjA8ZT4+PjApKXticmVha31lbHNle3U9dSsxfDB9fX1lbHNle3Y9Y1toPj4yXXwwfWg9Zisoby1iPDwyKXwwO2lmKChofDApIT0odnwwKT8obT12KyAtNHwwLG0+Pj4wPmg+Pj4wKTowKXtkb3t4PWNbaD4+Ml18MDtjW2g+PjJdPWNbbT4+Ml07Y1ttPj4yXT14O2g9aCs0fDA7bT1tKyAtNHwwfXdoaWxlKGg+Pj4wPG0+Pj4wKX19ZWxzZXt1Y1tjWyhjW24+PjJdfDApKzQ4Pj4yXSYzMV0obixiLGUsZil8MDt2PWYrKGUtYjw8Mil8MDtjW2g+PjJdPXZ9aWYoKGR8MCkhPShlfDApKXt2PWYrKGQtYjw8Mil8MH1jW2c+PjJdPXY7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59bD1jW2wrOD4+Ml18MDtpZigobHwwKT09MCl7aT1rO3JldHVybn12bihsKTtpPWs7cmV0dXJufWZ1bmN0aW9uIExpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7az1pO2k9aSsxNnwwO2w9aztpZigoZHwwKT09MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59cT1lO249Zy1xPj4yO2g9aCsxMnwwO209Y1toPj4yXXwwO249KG18MCk+KG58MCk/bS1ufDA6MDttPWY7cT1tLXF8MDtwPXE+PjI7aWYoKHF8MCk+MD8oaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsZSxwKXwwKSE9KHB8MCk6MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59ZG97aWYoKG58MCk+MCl7aWYobj4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihuPj4+MDwyKXthW2w+PjBdPW48PDE7ZT1sKzR8MDtvPTE4fWVsc2V7ZT1uKzQmLTQ7cD1lPDwyO3A9KHB8MCk9PTA/MTpwO3doaWxlKDEpe3E9dW4ocCl8MDtpZigocXwwKSE9MCl7bz0xNzticmVha31xPWNbNTY2Nl18MDtjWzU2NjZdPXErMDtpZigocXwwKT09MCl7YnJlYWt9c2NbcSYzMV0oKX1pZigob3wwKT09MTcpe2NbbCs4Pj4yXT1xO2NbbD4+Ml09ZXwxO2NbbCs0Pj4yXT1uO2lmKChufDApPT0wKXtlPXE7YnJlYWt9ZWxzZXtlPXE7bz0xODticmVha319cT1YYSg0KXwwO2NbcT4+Ml09MjI2ODA7d2IocXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChvfDApPT0xOCl7bz1uO3A9ZTt3aGlsZSgxKXtvPW8rIC0xfDA7Y1twPj4yXT1qO2lmKChvfDApPT0wKXticmVha31lbHNle3A9cCs0fDB9fX1jW2UrKG48PDIpPj4yXT0wO2lmKChhW2w+PjBdJjEpPT0wKXtqPWwrNHwwfWVsc2V7aj1jW2wrOD4+Ml18MH1pZigoaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsaixuKXwwKT09KG58MCkpe2lmKChhW2w+PjBdJjEpPT0wKXticmVha31sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXticmVha312bihsKTticmVha31jW2I+PjJdPTA7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59Yj1jW2wrOD4+Ml18MDtpZigoYnwwKT09MCl7aT1rO3JldHVybn12bihiKTtpPWs7cmV0dXJufX13aGlsZSgwKTtxPWctbXwwO2w9cT4+MjtpZigocXwwKT4wPyhoY1tjWyhjW2Q+PjJdfDApKzQ4Pj4yXSY2M10oZCxmLGwpfDApIT0obHwwKTowKXtjW2I+PjJdPTA7aT1rO3JldHVybn1jW2g+PjJdPTA7Y1tiPj4yXT1kO2k9aztyZXR1cm59ZnVuY3Rpb24gTWkoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7bT1pO2k9aSsyMDh8MDtsPW0rOHwwO3M9bTtvPW0rMTg0fDA7ZD1tKzE4MHwwO2s9bSsxNzZ8MDtwPW0rMTcyfDA7dT1zO2NbdT4+Ml09Mzc7Y1t1KzQ+PjJdPTA7dT1zKzF8MDtxPWYrNHwwO3I9Y1txPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2FbdT4+MF09NDM7dT1zKzJ8MH1pZigociY1MTJ8MCkhPTApe2FbdT4+MF09MzU7dT11KzF8MH10PXUrMnwwO2FbdT4+MF09MTA4O2FbdSsxPj4wXT0xMDg7dT1yJjc0O2Rve2lmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTEwMH19d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO3Q9bDtjW3Q+PjJdPWg7Y1t0KzQ+PjJdPWo7aD13aShvLDIyLHUscyxsKXwwO2o9bytofDA7cT1jW3E+PjJdJjE3Njtkb3tpZigocXwwKT09MzIpe3E9an1lbHNlIGlmKChxfDApPT0xNil7cT1hW28+PjBdfDA7aWYocTw8MjQ+PjI0PT00M3xxPDwyND4+MjQ9PTQ1KXtxPW8rMXwwO2JyZWFrfWlmKChofDApPjEmcTw8MjQ+PjI0PT00OD8odT1hW28rMT4+MF18MCx1PDwyND4+MjQ9PTg4fHU8PDI0Pj4yND09MTIwKTowKXtxPW8rMnwwfWVsc2V7bj0yMX19ZWxzZXtuPTIxfX13aGlsZSgwKTtpZigobnwwKT09MjEpe3E9b31uPWNbZisyOD4+Ml18MDtjW3A+PjJdPW47bj1uKzR8MDtjW24+PjJdPShjW24+PjJdfDApKzE7S2kobyxxLGosbCxkLGsscCk7bj1jW3A+PjJdfDA7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApIT0wKXtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWxjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKTtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWZ1bmN0aW9uIE5pKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtkPWk7aT1pKzEyOHwwO2w9ZDtxPWQrMTA4fDA7bj1kKzk2fDA7az1kKzkyfDA7bT1kKzg4fDA7bz1kKzg0fDA7YVtxKzA+PjBdPWFbMTIyNjQ+PjBdfDA7YVtxKzE+PjBdPWFbMTIyNjU+PjBdfDA7YVtxKzI+PjBdPWFbMTIyNjY+PjBdfDA7YVtxKzM+PjBdPWFbMTIyNjc+PjBdfDA7YVtxKzQ+PjBdPWFbMTIyNjg+PjBdfDA7YVtxKzU+PjBdPWFbMTIyNjk+PjBdfDA7cz1xKzF8MDtwPWYrNHwwO3I9Y1twPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2Fbcz4+MF09NDM7cz1xKzJ8MH1pZigociY1MTJ8MCkhPTApe2Fbcz4+MF09MzU7cz1zKzF8MH1hW3M+PjBdPTEwODt0PXMrMXwwO3M9ciY3NDtkb3tpZigoc3wwKT09NjQpe2FbdD4+MF09MTExfWVsc2UgaWYoKHN8MCk9PTgpe2lmKChyJjE2Mzg0fDApPT0wKXthW3Q+PjBdPTEyMDticmVha31lbHNle2FbdD4+MF09ODg7YnJlYWt9fWVsc2V7YVt0Pj4wXT0xMTd9fXdoaWxlKDApO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX10PWNbMzM0MF18MDtjW2w+PjJdPWg7cT13aShuLDEyLHQscSxsKXwwO2g9bitxfDA7cD1jW3A+PjJdJjE3Njtkb3tpZigocHwwKT09MzIpe3A9aH1lbHNlIGlmKChwfDApPT0xNil7cD1hW24+PjBdfDA7aWYocDw8MjQ+PjI0PT00M3xwPDwyND4+MjQ9PTQ1KXtwPW4rMXwwO2JyZWFrfWlmKChxfDApPjEmcDw8MjQ+PjI0PT00OD8odD1hW24rMT4+MF18MCx0PDwyND4+MjQ9PTg4fHQ8PDI0Pj4yND09MTIwKTowKXtwPW4rMnwwfWVsc2V7aj0yMX19ZWxzZXtqPTIxfX13aGlsZSgwKTtpZigoanwwKT09MjEpe3A9bn1qPWNbZisyOD4+Ml18MDtjW28+PjJdPWo7aj1qKzR8MDtjW2o+PjJdPShjW2o+PjJdfDApKzE7S2kobixwLGgsbCxrLG0sbyk7aj1jW28+PjJdfDA7cz1qKzR8MDt0PWNbcz4+Ml18MDtjW3M+PjJdPXQrIC0xO2lmKCh0fDApIT0wKXtyPWNbZT4+Ml18MDtzPWNbaz4+Ml18MDt0PWNbbT4+Ml18MDtMaShiLHIsbCxzLHQsZixnKTtpPWQ7cmV0dXJufWxjW2NbKGNbaj4+Ml18MCkrOD4+Ml0mMjU1XShqKTtyPWNbZT4+Ml18MDtzPWNbaz4+Ml18MDt0PWNbbT4+Ml18MDtMaShiLHIsbCxzLHQsZixnKTtpPWQ7cmV0dXJufQoKCgpmdW5jdGlvbiBYayhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtkPWk7aT1pKzE2fDA7ZT1kO2lmKChhWzEzNDMyXXwwKSE9MCl7aD1jWzMzNTZdfDA7Y1tiPj4yXT1oO2g9aCs0fDA7Zz1jW2g+PjJdfDA7Y1toPj4yXT1nKzE7aT1kO3JldHVybn1pZigoUWEoMTM0MzIpfDApPT0wKXtoPWNbMzM1Nl18MDtjW2I+PjJdPWg7aD1oKzR8MDtnPWNbaD4+Ml18MDtjW2g+PjJdPWcrMTtpPWQ7cmV0dXJufWlmKChhWzEzNDE2XXwwKT09MD8oUWEoMTM0MTYpfDApIT0wOjApe2NbMTc3NjQ+PjJdPTA7Y1s0NDQwXT0xMzM5MjthWzE3ODk2Pj4wXT0xO2NbMTc3NzI+PjJdPTE3Nzg0O2NbMTc3Njg+PjJdPTE3Nzg0O2NbMTc3NzY+PjJdPTE3ODk2O2g9Mjg7Zj0xNzc4NHwwO2Rve2NbZj4+Ml09MDtnPWNbMTc3NzI+PjJdfDA7Zj1nKzR8MDtjWzE3NzcyPj4yXT1mO2g9aCsgLTF8MH13aGlsZSgoaHwwKSE9MCk7YVsxNzkwND4+MF09MjthWzE3OTA1Pj4wXT02NzthWzE3OTA2Pj4wXT0wO2g9Y1sxNzc2OD4+Ml18MDtpZigoZnwwKSE9KGh8MCkpe2NbMTc3NzI+PjJdPWcrKDAtKChnKygwLWgpfDApPj4+Mik8PDIpfWNbMTgyMjg+PjJdPTA7Y1s0NTU2XT0xMTg3MjtpZighKChjWzI5NzRdfDApPT0tMSkpe2NbZT4+Ml09MTE4OTY7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMTg5NixlKX1VaygxNzc2MCwxODIyNCwoY1sxMTkwMD4+Ml18MCkrIC0xfDApO2NbMTgyMjA+PjJdPTA7Y1s0NTU0XT0xMTkxMjtpZighKChjWzI5ODRdfDApPT0tMSkpe2NbZT4+Ml09MTE5MzY7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMTkzNixlKX1VaygxNzc2MCwxODIxNiwoY1sxMTk0MD4+Ml18MCkrIC0xfDApO2NbMTgyMDQ+PjJdPTA7Y1s0NTUwXT0xMzQ3MjtjWzE4MjA4Pj4yXT0wO2FbMTgyMTI+PjBdPTA7Y1sxODIwOD4+Ml09Y1soTmEoKXwwKT4+Ml07aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2U+PjJdPTEzNDU2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM0NTYsZSl9VWsoMTc3NjAsMTgyMDAsKGNbMTM0NjA+PjJdfDApKyAtMXwwKTtjWzE4MTk2Pj4yXT0wO2NbNDU0OF09MTQzOTI7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW2U+PjJdPTEzNDQ4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM0NDgsZSl9VWsoMTc3NjAsMTgxOTIsKGNbMTM0NTI+PjJdfDApKyAtMXwwKTtjWzE4MTg4Pj4yXT0wO2NbNDU0Nl09MTQ2MDg7aWYoISgoY1szMzgwXXwwKT09LTEpKXtjW2U+PjJdPTEzNTIwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1MjAsZSl9VWsoMTc3NjAsMTgxODQsKGNbMTM1MjQ+PjJdfDApKyAtMXwwKTtjWzE4MTcyPj4yXT0wO2NbNDU0Ml09MTM1NDQ7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbMTgxNzY+PjJdPWNbMzM0MF07aWYoISgoY1szMzgyXXwwKT09LTEpKXtjW2U+PjJdPTEzNTI4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1MjgsZSl9VWsoMTc3NjAsMTgxNjgsKGNbMTM1MzI+PjJdfDApKyAtMXwwKTtjWzE4MTY0Pj4yXT0wO2NbNDU0MF09MTQ4MzI7aWYoISgoY1szMzk2XXwwKT09LTEpKXtjW2U+PjJdPTEzNTg0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1ODQsZSl9VWsoMTc3NjAsMTgxNjAsKGNbMTM1ODg+PjJdfDApKyAtMXwwKTtjWzE4MTU2Pj4yXT0wO2NbNDUzOF09MTQ5NTI7aWYoISgoY1szMzk4XXwwKT09LTEpKXtjW2U+PjJdPTEzNTkyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1OTIsZSl9VWsoMTc3NjAsMTgxNTIsKGNbMTM1OTY+PjJdfDApKyAtMXwwKTtjWzE4MTMyPj4yXT0wO2NbNDUzMl09MTM2MjQ7YVsxODEzNj4+MF09NDY7YVsxODEzNz4+MF09NDQ7Y1sxODE0MD4+Ml09MDtjWzE4MTQ0Pj4yXT0wO2NbMTgxNDg+PjJdPTA7aWYoISgoY1szNDAwXXwwKT09LTEpKXtjW2U+PjJdPTEzNjAwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM2MDAsZSl9VWsoMTc3NjAsMTgxMjgsKGNbMTM2MDQ+PjJdfDApKyAtMXwwKTtjWzE4MTAwPj4yXT0wO2NbNDUyNF09MTM2NjQ7Y1sxODEwND4+Ml09NDY7Y1sxODEwOD4+Ml09NDQ7Y1sxODExMj4+Ml09MDtjWzE4MTE2Pj4yXT0wO2NbMTgxMjA+PjJdPTA7aWYoISgoY1szNDAyXXwwKT09LTEpKXtjW2U+PjJdPTEzNjA4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM2MDgsZSl9VWsoMTc3NjAsMTgwOTYsKGNbMTM2MTI+PjJdfDApKyAtMXwwKTtjWzE4MDkyPj4yXT0wO2NbNDUyMl09MTE5NTI7aWYoISgoY1szMDAyXXwwKT09LTEpKXtjW2U+PjJdPTEyMDA4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIwMDgsZSl9VWsoMTc3NjAsMTgwODgsKGNbMTIwMTI+PjJdfDApKyAtMXwwKTtjWzE4MDg0Pj4yXT0wO2NbNDUyMF09MTIwNzI7aWYoISgoY1szMDMyXXwwKT09LTEpKXtjW2U+PjJdPTEyMTI4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIxMjgsZSl9VWsoMTc3NjAsMTgwODAsKGNbMTIxMzI+PjJdfDApKyAtMXwwKTtjWzE4MDc2Pj4yXT0wO2NbNDUxOF09MTIxNDQ7aWYoISgoY1szMDQ4XXwwKT09LTEpKXtjW2U+PjJdPTEyMTkyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIxOTIsZSl9VWsoMTc3NjAsMTgwNzIsKGNbMTIxOTY+PjJdfDApKyAtMXwwKTtjWzE4MDY4Pj4yXT0wO2NbNDUxNl09MTIyMDg7aWYoISgoY1szMDY0XXwwKT09LTEpKXtjW2U+PjJdPTEyMjU2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIyNTYsZSl9VWsoMTc3NjAsMTgwNjQsKGNbMTIyNjA+PjJdfDApKyAtMXwwKTtjWzE4MDYwPj4yXT0wO2NbNDUxNF09MTI4MDA7aWYoISgoY1szMjEyXXwwKT09LTEpKXtjW2U+PjJdPTEyODQ4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI4NDgsZSl9VWsoMTc3NjAsMTgwNTYsKGNbMTI4NTI+PjJdfDApKyAtMXwwKTtjWzE4MDUyPj4yXT0wO2NbNDUxMl09MTI4NjQ7aWYoISgoY1szMjI4XXwwKT09LTEpKXtjW2U+PjJdPTEyOTEyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI5MTIsZSl9VWsoMTc3NjAsMTgwNDgsKGNbMTI5MTY+PjJdfDApKyAtMXwwKTtjWzE4MDQ0Pj4yXT0wO2NbNDUxMF09MTI5Mjg7aWYoISgoY1szMjQ0XXwwKT09LTEpKXtjW2U+PjJdPTEyOTc2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI5NzYsZSl9VWsoMTc3NjAsMTgwNDAsKGNbMTI5ODA+PjJdfDApKyAtMXwwKTtjWzE4MDM2Pj4yXT0wO2NbNDUwOF09MTI5OTI7aWYoISgoY1szMjYwXXwwKT09LTEpKXtjW2U+PjJdPTEzMDQwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMwNDAsZSl9VWsoMTc3NjAsMTgwMzIsKGNbMTMwNDQ+PjJdfDApKyAtMXwwKTtjWzE4MDI4Pj4yXT0wO2NbNDUwNl09MTMwNTY7aWYoISgoY1szMjcwXXwwKT09LTEpKXtjW2U+PjJdPTEzMDgwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMwODAsZSl9VWsoMTc3NjAsMTgwMjQsKGNbMTMwODQ+PjJdfDApKyAtMXwwKTtjWzE4MDIwPj4yXT0wO2NbNDUwNF09MTMxMzY7aWYoISgoY1szMjkwXXwwKT09LTEpKXtjW2U+PjJdPTEzMTYwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMxNjAsZSl9VWsoMTc3NjAsMTgwMTYsKGNbMTMxNjQ+PjJdfDApKyAtMXwwKTtjWzE4MDEyPj4yXT0wO2NbNDUwMl09MTMxOTI7aWYoISgoY1szMzA0XXwwKT09LTEpKXtjW2U+PjJdPTEzMjE2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMyMTYsZSl9VWsoMTc3NjAsMTgwMDgsKGNbMTMyMjA+PjJdfDApKyAtMXwwKTtjWzE4MDA0Pj4yXT0wO2NbNDUwMF09MTMyNDA7aWYoISgoY1szMzE2XXwwKT09LTEpKXtjW2U+PjJdPTEzMjY0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMyNjQsZSl9VWsoMTc3NjAsMThlMywoY1sxMzI2OD4+Ml18MCkrIC0xfDApO2NbMTc5ODg+PjJdPTA7Y1s0NDk2XT0xMjI4ODtjWzE3OTkyPj4yXT0xMjMzNjtpZighKChjWzMwOTJdfDApPT0tMSkpe2NbZT4+Ml09MTIzNjg7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMjM2OCxlKX1VaygxNzc2MCwxNzk4NCwoY1sxMjM3Mj4+Ml18MCkrIC0xfDApO2NbMTc5NzI+PjJdPTA7Y1s0NDkyXT0xMjQ0MDtjWzE3OTc2Pj4yXT0xMjQ4ODtpZighKChjWzMxMzBdfDApPT0tMSkpe2NbZT4+Ml09MTI1MjA7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMjUyMCxlKX1VaygxNzc2MCwxNzk2OCwoY1sxMjUyND4+Ml18MCkrIC0xfDApO2NbMTc5NTY+PjJdPTA7Y1s0NDg4XT0xNDMyODtkb3tpZigoYVsxMzM2OF18MCk9PTApe2lmKChRYSgxMzM2OCl8MCk9PTApe2JyZWFrfWNbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX19d2hpbGUoMCk7Y1sxNzk2MD4+Ml09Y1szMzQwXTtjWzQ0ODhdPTEyNzM2O2lmKCEoKGNbMzE4OF18MCk9PS0xKSl7Y1tlPj4yXT0xMjc1MjtjW2UrND4+Ml09MjA4O2NbZSs4Pj4yXT0wO2NnKDEyNzUyLGUpfVVrKDE3NzYwLDE3OTUyLChjWzEyNzU2Pj4yXXwwKSsgLTF8MCk7Y1sxNzk0MD4+Ml09MDtjWzQ0ODRdPTE0MzI4O2Rve2lmKChhWzEzMzY4XXwwKT09MCl7aWYoKFFhKDEzMzY4KXwwKT09MCl7YnJlYWt9Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfX13aGlsZSgwKTtjWzE3OTQ0Pj4yXT1jWzMzNDBdO2NbNDQ4NF09MTI3Njg7aWYoISgoY1szMTk2XXwwKT09LTEpKXtjW2U+PjJdPTEyNzg0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI3ODQsZSl9VWsoMTc3NjAsMTc5MzYsKGNbMTI3ODg+PjJdfDApKyAtMXwwKTtjWzE3OTMyPj4yXT0wO2NbNDQ4Ml09MTMyODA7aWYoISgoY1szMzI2XXwwKT09LTEpKXtjW2U+PjJdPTEzMzA0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMzMDQsZSl9VWsoMTc3NjAsMTc5MjgsKGNbMTMzMDg+PjJdfDApKyAtMXwwKTtjWzE3OTI0Pj4yXT0wO2NbNDQ4MF09MTMzMjA7aWYoISgoY1szMzM2XXwwKT09LTEpKXtjW2U+PjJdPTEzMzQ0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMzNDQsZSl9VWsoMTc3NjAsMTc5MjAsKGNbMTMzNDg+PjJdfDApKyAtMXwwKTtjWzMzNTJdPTE3NzYwOyRhKDEzNDE2KX1oPWNbMzM1Ml18MDtjWzMzNTZdPWg7aD1oKzR8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7JGEoMTM0MzIpO2g9Y1szMzU2XXwwO2NbYj4+Ml09aDtoPWgrNHwwO2c9Y1toPj4yXXwwO2NbaD4+Ml09ZysxO2k9ZDtyZXR1cm59ZnVuY3Rpb24gWWsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2lmKCEoKGNbYj4+Ml18MCk9PS0xKSl7Y1tlPj4yXT1iO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coYixlKX1lPShjW2IrND4+Ml18MCkrIC0xfDA7Yj1jW2ErOD4+Ml18MDtpZighKChjW2ErMTI+PjJdfDApLWI+PjI+Pj4wPmU+Pj4wKSl7ZT1YYSg0KXwwO2NbZT4+Ml09MjEzMDQ7d2IoZXwwLDIxMzc2LDE5Nil9YT1jW2IrKGU8PDIpPj4yXXwwO2lmKChhfDApPT0wKXtlPVhhKDQpfDA7Y1tlPj4yXT0yMTMwNDt3YihlfDAsMjEzNzYsMTk2KX1lbHNle2k9ZDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIFprKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIF9rKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrND4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uICRrKGEpe2E9YXwwO3ZhciBiPTA7Yj1jWzMzNjBdfDA7Y1szMzYwXT1iKzE7Y1thKzQ+PjJdPWIrMTtyZXR1cm59ZnVuY3Rpb24gYWwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gYmwoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO2E9aTtpZighKGU+Pj4wPDEyOCkpe2Q9MDtpPWE7cmV0dXJuIGR8MH1kPShiWyhjWyhOYSgpfDApPj4yXXwwKSsoZTw8MSk+PjFdJmQpPDwxNj4+MTYhPTA7aT1hO3JldHVybiBkfDB9ZnVuY3Rpb24gY2woYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7aWYoKGR8MCk9PShlfDApKXtnPWQ7aT1hO3JldHVybiBnfDB9d2hpbGUoMSl7Zz1jW2Q+PjJdfDA7aWYoZz4+PjA8MTI4KXtnPWJbKGNbKE5hKCl8MCk+PjJdfDApKyhnPDwxKT4+MV18MH1lbHNle2c9MH1iW2Y+PjFdPWc7ZD1kKzR8MDtpZigoZHwwKT09KGV8MCkpe2JyZWFrfWVsc2V7Zj1mKzJ8MH19aT1hO3JldHVybiBlfDB9ZnVuY3Rpb24gZGwoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2Y9ZX1lbHNle2Rve2c9Y1tlPj4yXXwwO2lmKGc+Pj4wPDEyOD8hKChiWyhjWyhOYSgpfDApPj4yXXwwKSsoZzw8MSk+PjFdJmQpPDwxNj4+MTY9PTApOjApe2Y9ZTticmVhayBhfWU9ZSs0fDB9d2hpbGUoKGV8MCkhPShmfDApKX19d2hpbGUoMCk7aT1hO3JldHVybiBmfDB9ZnVuY3Rpb24gZWwoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2Y9ZX1lbHNle2Rve2c9Y1tlPj4yXXwwO2lmKCEoZz4+PjA8MTI4KSl7Zj1lO2JyZWFrIGF9aWYoKGJbKGNbKE5hKCl8MCk+PjJdfDApKyhnPDwxKT4+MV0mZCk8PDE2Pj4xNj09MCl7Zj1lO2JyZWFrIGF9ZT1lKzR8MH13aGlsZSgoZXwwKSE9KGZ8MCkpfX13aGlsZSgwKTtpPWE7cmV0dXJuIGZ8MH1mdW5jdGlvbiBmbChhLGIpe2E9YXwwO2I9YnwwO2E9aTtpZighKGI+Pj4wPDEyOCkpe2k9YTtyZXR1cm4gYnwwfWI9Y1soY1soWmEoKXwwKT4+Ml18MCkrKGI8PDIpPj4yXXwwO2k9YTtyZXR1cm4gYnwwfWZ1bmN0aW9uIGdsKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wO2E9aTtpZigoYnwwKT09KGR8MCkpe2U9YjtpPWE7cmV0dXJuIGV8MH1kb3tlPWNbYj4+Ml18MDtpZihlPj4+MDwxMjgpe2U9Y1soY1soWmEoKXwwKT4+Ml18MCkrKGU8PDIpPj4yXXwwfWNbYj4+Ml09ZTtiPWIrNHwwfXdoaWxlKChifDApIT0oZHwwKSk7aT1hO3JldHVybiBkfDB9ZnVuY3Rpb24gaGwoYSxiKXthPWF8MDtiPWJ8MDthPWk7aWYoIShiPj4+MDwxMjgpKXtpPWE7cmV0dXJuIGJ8MH1iPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhiPDwyKT4+Ml18MDtpPWE7cmV0dXJuIGJ8MH1mdW5jdGlvbiBpbChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MDthPWk7aWYoKGJ8MCk9PShkfDApKXtlPWI7aT1hO3JldHVybiBlfDB9ZG97ZT1jW2I+PjJdfDA7aWYoZT4+PjA8MTI4KXtlPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhlPDwyKT4+Ml18MH1jW2I+PjJdPWU7Yj1iKzR8MH13aGlsZSgoYnwwKSE9KGR8MCkpO2k9YTtyZXR1cm4gZHwwfWZ1bmN0aW9uIGpsKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGI8PDI0Pj4yNHwwfWZ1bmN0aW9uIGtsKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2I9aTtpZigoZHwwKT09KGV8MCkpe2k9YjtyZXR1cm4gZHwwfXdoaWxlKDEpe2NbZj4+Ml09YVtkPj4wXXwwO2Q9ZCsxfDA7aWYoKGR8MCk9PShlfDApKXticmVha31lbHNle2Y9Zis0fDB9fWk9YjtyZXR1cm4gZXwwfWZ1bmN0aW9uIGxsKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4oYj4+PjA8MTI4P2ImMjU1OmMpfDB9ZnVuY3Rpb24gbWwoYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7aj1kO2k9YjtyZXR1cm4ganwwfWg9KChlKyAtNCsoMC1kKXwwKT4+PjIpKzF8MDtqPWQ7d2hpbGUoMSl7az1jW2o+PjJdfDA7YVtnPj4wXT1rPj4+MDwxMjg/ayYyNTU6ZjtqPWorNHwwO2lmKChqfDApPT0oZXwwKSl7YnJlYWt9ZWxzZXtnPWcrMXwwfX1rPWQrKGg8PDIpfDA7aT1iO3JldHVybiBrfDB9ZnVuY3Rpb24gbmwoYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM0NzI7ZT1jW2IrOD4+Ml18MDtpZigoZXwwKSE9MCl7aWYoKGFbYisxMj4+MF18MCkhPTApe3ZuKGUpfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufX12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIG9sKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNDcyO2U9Y1tiKzg+PjJdfDA7aWYoKGV8MCkhPTA/KGFbYisxMj4+MF18MCkhPTA6MCl7dm4oZSl9aT1kO3JldHVybn1mdW5jdGlvbiBwbChhLGIpe2E9YXwwO2I9YnwwO2E9aTtpZighKGI8PDI0Pj4yND4tMSkpe2k9YTtyZXR1cm4gYnwwfWI9Y1soY1soWmEoKXwwKT4+Ml18MCkrKChiJjI1NSk8PDIpPj4yXSYyNTU7aT1hO3JldHVybiBifDB9ZnVuY3Rpb24gcWwoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7Zj1kO2k9YjtyZXR1cm4gZnwwfWRve2Y9YVtkPj4wXXwwO2lmKGY8PDI0Pj4yND4tMSl7Zj1jWyhjWyhaYSgpfDApPj4yXXwwKSsoZjw8MjQ+PjI0PDwyKT4+Ml0mMjU1fWFbZD4+MF09ZjtkPWQrMXwwfXdoaWxlKChkfDApIT0oZXwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gcmwoYSxiKXthPWF8MDtiPWJ8MDthPWk7aWYoIShiPDwyND4+MjQ+LTEpKXtpPWE7cmV0dXJuIGJ8MH1iPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhiPDwyND4+MjQ8PDIpPj4yXSYyNTU7aT1hO3JldHVybiBifDB9ZnVuY3Rpb24gc2woYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7Zj1kO2k9YjtyZXR1cm4gZnwwfWRve2Y9YVtkPj4wXXwwO2lmKGY8PDI0Pj4yND4tMSl7Zj1jWyhjWyhIYSgpfDApPj4yXXwwKSsoZjw8MjQ+PjI0PDwyKT4+Ml0mMjU1fWFbZD4+MF09ZjtkPWQrMXwwfXdoaWxlKChkfDApIT0oZXwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gdGwoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gYnwwfWZ1bmN0aW9uIHVsKGIsYyxkLGUpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2I9aTtpZigoY3wwKT09KGR8MCkpe2Q9Y31lbHNle3doaWxlKDEpe2FbZT4+MF09YVtjPj4wXXwwO2M9YysxfDA7aWYoKGN8MCk9PShkfDApKXticmVha31lbHNle2U9ZSsxfDB9fX1pPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB2bChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuKGI8PDI0Pj4yND4tMT9iOmMpfDB9ZnVuY3Rpb24gd2woYixjLGQsZSxmKXtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wO2I9aTtpZigoY3wwKT09KGR8MCkpe2k9YjtyZXR1cm4gY3wwfXdoaWxlKDEpe2c9YVtjPj4wXXwwO2FbZj4+MF09Zzw8MjQ+PjI0Pi0xP2c6ZTtjPWMrMXwwO2lmKChjfDApPT0oZHwwKSl7YnJlYWt9ZWxzZXtmPWYrMXwwfX1pPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB4bChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiB5bChhLGIsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2NbZj4+Ml09ZDtjW2k+PjJdPWc7cmV0dXJuIDN9ZnVuY3Rpb24gemwoYSxiLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtjW2Y+PjJdPWQ7Y1tpPj4yXT1nO3JldHVybiAzfWZ1bmN0aW9uIEFsKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Y1tmPj4yXT1kO3JldHVybiAzfWZ1bmN0aW9uIEJsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIENsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIERsKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Yj1kLWN8MDtyZXR1cm4oYj4+PjA8ZT4+PjA/YjplKXwwfWZ1bmN0aW9uIEVsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIEZsKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1NrKGEpO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEdsKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7ZD1pO2k9aSsyNzJ8MDtsPWQrMjY0fDA7bj1kKzh8MDtvPWQ7YTpkb3tpZigoZXwwKSE9KGZ8MCkpe3E9ZTt3aGlsZSgxKXtpZigoY1txPj4yXXwwKT09MCl7YnJlYWt9cT1xKzR8MDtpZigocXwwKT09KGZ8MCkpe3E9ZjticmVha319Y1trPj4yXT1oO2NbZz4+Ml09ZTtpZigoaHwwKSE9KGp8MCkpe3A9ajtiPWIrOHwwO3doaWxlKDEpe3c9cS1lPj4yO3M9aWIoY1tiPj4yXXwwKXwwO3k9Y1tnPj4yXXwwO3I9KGh8MCkhPTA7dj1yP3AtaHwwOjI1Njt1PXI/aDpuO2I6ZG97aWYoKHl8MCk9PTB8KHZ8MCk9PTApe3Q9MH1lbHNle3Q9MDtkb3t4PXc+Pj4wPj12Pj4+MDtpZighKHh8dz4+PjA+MzIpKXticmVhayBifXg9eD92Onc7dz13LXh8MDtjOmRve2lmKCh1fDApPT0wKXtBPWNbeT4+Ml18MDtpZigoQXwwKT09MCl7ej0wfWVsc2V7ej0wO3g9eTt3aGlsZSgxKXtpZihBPj4+MD4xMjcpe0E9V20obCxBKXwwO2lmKChBfDApPT0tMSl7dj0wO3Q9LTE7YnJlYWsgYn19ZWxzZXtBPTF9ej1BK3p8MDt4PXgrNHwwO0E9Y1t4Pj4yXXwwO2lmKChBfDApPT0wKXttPTMyO2JyZWFrfX19fWVsc2V7ZDpkb3tpZih4Pj4+MD4zKXt6PXU7QT14O3doaWxlKDEpe0I9Y1t5Pj4yXXwwO2lmKChCfDApPT0wKXttPTIyO2JyZWFrIGR9aWYoQj4+PjA+MTI3KXtCPVdtKHosQil8MDtpZigoQnwwKT09LTEpe3Y9MDt0PS0xO2JyZWFrIGJ9ej16K0J8MDtBPUEtQnwwfWVsc2V7YVt6Pj4wXT1CO3o9eisxfDA7QT1BKyAtMXwwfXk9eSs0fDA7aWYoIShBPj4+MD4zKSl7bT0xNjticmVha319fWVsc2V7ej11O0E9eDttPTE2fX13aGlsZSgwKTtpZigobXwwKT09MTYpe209MDtpZigoQXwwKT09MCl7QT0wfWVsc2V7bT0yMn19ZTpkb3tpZigobXwwKT09MjIpe3doaWxlKDEpe209MDtCPWNbeT4+Ml18MDtpZigoQnwwKT09MCl7bT0zMDticmVha31pZihCPj4+MD4xMjcpe0I9V20obCxCKXwwO2lmKChCfDApPT0tMSl7dj0wO3Q9LTE7YnJlYWsgYn1pZihCPj4+MD5BPj4+MCl7bT0yNjticmVha31XbSh6LGNbeT4+Ml18MCl8MDt6PXorQnwwO0E9QS1CfDB9ZWxzZXthW3o+PjBdPUI7ej16KzF8MDtBPUErIC0xfDB9aWYoKEF8MCk9PTApe0E9MDticmVhayBlfWVsc2V7eT15KzR8MDttPTIyfX1pZigobXwwKT09MjYpe3o9eC1BfDA7bT0zMjticmVhayBjfWVsc2UgaWYoKG18MCk9PTMwKXthW3o+PjBdPTA7YnJlYWt9fX13aGlsZSgwKTt6PXgtQXwwO3k9MDttPTMyfX13aGlsZSgwKTtpZigobXwwKT09MzIpe209MDtpZigoenwwKT09LTEpe3Y9MDt0PS0xO2JyZWFrIGJ9fWlmKCh1fDApPT0obnwwKSl7dT1ufWVsc2V7dj12LXp8MDt1PXUrenwwfXQ9eit0fDB9d2hpbGUoISgoeXwwKT09MHwodnwwKT09MCkpfX13aGlsZSgwKTtmOmRve2lmKCh5fDApIT0wPyEoKHZ8MCk9PTB8KHd8MCk9PTApOjApe3doaWxlKDEpe3g9V20odSxjW3k+PjJdfDApfDA7aWYoKHgrMXwwKT4+PjA8Mil7YnJlYWt9eT15KzR8MDt3PXcrIC0xfDA7dD10KzF8MDtpZigodnwwKT09KHh8MCl8KHd8MCk9PTApe2JyZWFrIGZ9ZWxzZXt2PXYteHwwO3U9dSt4fDB9fUI9KHh8MCk9PTA7dD1CP3Q6LTE7eT1CPzA6eX19d2hpbGUoMCk7aWYocil7Y1tnPj4yXT15fWlmKChzfDApIT0wKXtpYihzfDApfDB9aWYoKHR8MCk9PTApe2c9MTttPTY3O2JyZWFrfWVsc2UgaWYoKHR8MCk9PS0xKXttPTQ2O2JyZWFrfWg9KGNbaz4+Ml18MCkrdHwwO2Nbaz4+Ml09aDtpZigoaHwwKT09KGp8MCkpe209NjU7YnJlYWt9aWYoKHF8MCk9PShmfDApKXtlPWNbZz4+Ml18MDtxPWZ9ZWxzZXtlPWliKGNbYj4+Ml18MCl8MDthW28+PjBdPTA7aWYoKGV8MCkhPTApe2liKGV8MCl8MH1oPWNbaz4+Ml18MDtpZigoaHwwKT09KGp8MCkpe2c9MTttPTY3O2JyZWFrfWVsc2V7ZT0wO3E9MDtyPW99d2hpbGUoMSl7Y1trPj4yXT1oKzE7YVtoPj4wXT1lO2lmKChxfDApPT0wKXticmVha31CPXIrMXwwO2g9Y1trPj4yXXwwO2U9YVtCPj4wXXwwO3E9cSsgLTF8MDtyPUJ9ZT0oY1tnPj4yXXwwKSs0fDA7Y1tnPj4yXT1lO2c6ZG97aWYoKGV8MCk9PShmfDApKXtxPWZ9ZWxzZXtxPWU7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk9PTApe2JyZWFrIGd9cT1xKzR8MDtpZigocXwwKT09KGZ8MCkpe3E9ZjticmVha319fX13aGlsZSgwKTtoPWNbaz4+Ml18MH1pZigoZXwwKT09KGZ8MCl8KGh8MCk9PShqfDApKXticmVhayBhfX1pZigobXwwKT09NDYpe2Nbaz4+Ml09aDtoOmRve2lmKChlfDApIT0oY1tnPj4yXXwwKSl7ZG97aj1jW2U+PjJdfDA7Zj1pYihjW2I+PjJdfDApfDA7aj1XbShoLGopfDA7aWYoKGZ8MCkhPTApe2liKGZ8MCl8MH1pZigoanwwKT09LTEpe2JyZWFrIGh9aD0oY1trPj4yXXwwKStqfDA7Y1trPj4yXT1oO2U9ZSs0fDB9d2hpbGUoKGV8MCkhPShjW2c+PjJdfDApKX19d2hpbGUoMCk7Y1tnPj4yXT1lO0I9MjtpPWQ7cmV0dXJuIEJ8MH1lbHNlIGlmKChtfDApPT02NSl7ZT1jW2c+PjJdfDA7YnJlYWt9ZWxzZSBpZigobXwwKT09Njcpe2k9ZDtyZXR1cm4gZ3wwfX19ZWxzZXtjW2s+PjJdPWg7Y1tnPj4yXT1lfX13aGlsZSgwKTtCPShlfDApIT0oZnwwKSYxO2k9ZDtyZXR1cm4gQnwwfWZ1bmN0aW9uIEhsKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDtsPWk7aT1pKzEwNDB8MDtuPWwrMTZ8MDtvPWwrOHwwO209bDthOmRve2lmKChlfDApIT0oZnwwKSl7cj1lO3doaWxlKDEpe2lmKChhW3I+PjBdfDApPT0wKXticmVha31yPXIrMXwwO2lmKChyfDApPT0oZnwwKSl7cj1mO2JyZWFrfX1jW2s+PjJdPWg7Y1tnPj4yXT1lO2lmKChofDApIT0oanwwKSl7cD1qO2I9Yis4fDA7d2hpbGUoMSl7dD1kO3U9Y1t0KzQ+PjJdfDA7cT1tO2NbcT4+Ml09Y1t0Pj4yXTtjW3ErND4+Ml09dTtxPXI7dT1xLWV8MDt0PWliKGNbYj4+Ml18MCl8MDt5PWNbZz4+Ml18MDtjW28+PjJdPXk7cz0oaHwwKSE9MDt3PXM/cC1oPj4yOjI1Njt4PXM/aDpuO2I6ZG97aWYoKHl8MCk9PTB8KHd8MCk9PTApe3Y9MH1lbHNle3Y9MDt3aGlsZSgxKXt6PXU+Pj4yO0E9ej4+PjA+PXc+Pj4wO2lmKCEoQXx1Pj4+MD4xMzEpKXticmVhayBifXk9QT93Ono7dT11LXl8MDt5PVZtKHgsbyx5LGQpfDA7aWYoKHl8MCk9PS0xKXticmVha31pZigoeHwwKT09KG58MCkpe3g9bn1lbHNle3c9dy15fDA7eD14Kyh5PDwyKXwwfXY9eSt2fDA7eT1jW28+PjJdfDA7aWYoKHl8MCk9PTB8KHd8MCk9PTApe2JyZWFrIGJ9fXc9MDt5PWNbbz4+Ml18MDt2PS0xfX13aGlsZSgwKTtjOmRve2lmKCh5fDApIT0wKXtpZighKCh3fDApPT0wfCh1fDApPT0wKSl7d2hpbGUoMSl7ej1VbSh4LHksdSxkKXwwO2lmKCh6KzJ8MCk+Pj4wPDMpe2JyZWFrfXk9eSt6fDA7Y1tvPj4yXT15O3c9dysgLTF8MDt2PXYrMXwwO2lmKCh3fDApPT0wfCh1fDApPT0oenwwKSl7YnJlYWsgY31lbHNle3U9dS16fDA7eD14KzR8MH19aWYoKHp8MCk9PS0xKXt2PS0xO2JyZWFrfWVsc2UgaWYoKHp8MCk9PTApe2Nbbz4+Ml09MDt5PTA7YnJlYWt9ZWxzZXtjW2Q+PjJdPTA7YnJlYWt9fX1lbHNle3k9MH19d2hpbGUoMCk7aWYocyl7Y1tnPj4yXT15fWlmKCh0fDApIT0wKXtpYih0fDApfDB9aWYoKHZ8MCk9PTApe2Y9MjtkPTQ4O2JyZWFrfWVsc2UgaWYoKHZ8MCk9PS0xKXtkPTI2O2JyZWFrfWg9KGNbaz4+Ml18MCkrKHY8PDIpfDA7Y1trPj4yXT1oO2lmKChofDApPT0oanwwKSl7ZD00NjticmVha31lPWNbZz4+Ml18MDtpZigocnwwKT09KGZ8MCkpe3I9Zn1lbHNle3E9aWIoY1tiPj4yXXwwKXwwO2U9VW0oaCxlLDEsZCl8MDtpZigocXwwKSE9MCl7aWIocXwwKXwwfWlmKChlfDApIT0wKXtmPTI7ZD00ODticmVha31jW2s+PjJdPShjW2s+PjJdfDApKzQ7ZT0oY1tnPj4yXXwwKSsxfDA7Y1tnPj4yXT1lO2Q6ZG97aWYoKGV8MCk9PShmfDApKXtyPWZ9ZWxzZXtyPWU7d2hpbGUoMSl7aWYoKGFbcj4+MF18MCk9PTApe2JyZWFrIGR9cj1yKzF8MDtpZigocnwwKT09KGZ8MCkpe3I9ZjticmVha319fX13aGlsZSgwKTtoPWNbaz4+Ml18MH1pZigoZXwwKT09KGZ8MCl8KGh8MCk9PShqfDApKXticmVhayBhfX1pZigoZHwwKT09MjYpe2Nbaz4+Ml09aDtlOmRve2lmKChlfDApIT0oY1tnPj4yXXwwKSl7d2hpbGUoMSl7ZD1pYihjW2I+PjJdfDApfDA7bj1VbShoLGUscS1lfDAsbSl8MDtpZigoZHwwKSE9MCl7aWIoZHwwKXwwfWlmKChufDApPT0tMSl7ZD0zMTticmVha31lbHNlIGlmKChufDApPT0tMil7ZD0zMjticmVha31lbHNlIGlmKChufDApPT0wKXtlPWUrMXwwfWVsc2V7ZT1lK258MH1oPShjW2s+PjJdfDApKzR8MDtjW2s+PjJdPWg7aWYoKGV8MCk9PShjW2c+PjJdfDApKXticmVhayBlfX1pZigoZHwwKT09MzEpe2NbZz4+Ml09ZTtBPTI7aT1sO3JldHVybiBBfDB9ZWxzZSBpZigoZHwwKT09MzIpe2NbZz4+Ml09ZTtBPTE7aT1sO3JldHVybiBBfDB9fX13aGlsZSgwKTtjW2c+PjJdPWU7QT0oZXwwKSE9KGZ8MCkmMTtpPWw7cmV0dXJuIEF8MH1lbHNlIGlmKChkfDApPT00Nil7ZT1jW2c+PjJdfDA7YnJlYWt9ZWxzZSBpZigoZHwwKT09NDgpe2k9bDtyZXR1cm4gZnwwfX19ZWxzZXtjW2s+PjJdPWg7Y1tnPj4yXT1lfX13aGlsZSgwKTtBPShlfDApIT0oZnwwKSYxO2k9bDtyZXR1cm4gQXwwfWZ1bmN0aW9uIElsKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Yj1pO2NbZj4+Ml09ZDthPWliKGNbYSs4Pj4yXXwwKXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJuIDB9aWIoYXwwKXwwO2k9YjtyZXR1cm4gMH1mdW5jdGlvbiBKbChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7YT1hKzh8MDtkPWliKGNbYT4+Ml18MCl8MDtpZigoZHwwKSE9MCl7aWIoZHwwKXwwfWE9Y1thPj4yXXwwO2lmKChhfDApIT0wKXthPWliKGF8MCl8MDtpZigoYXwwKT09MCl7YT0wfWVsc2V7aWIoYXwwKXwwO2E9MH19ZWxzZXthPTF9aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gS2woYSl7YT1hfDA7cmV0dXJuIDB9ZnVuY3Rpb24gTGwoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2lmKChmfDApPT0wfChkfDApPT0oZXwwKSl7bT0wO2k9ZztyZXR1cm4gbXwwfWg9ZTthPWErOHwwO2I9KGJ8MCkhPTA/YjoyMTI4MDtrPTA7aj0wO3doaWxlKDEpe209aWIoY1thPj4yXXwwKXwwO2w9VW0oMCxkLGgtZHwwLGIpfDA7aWYoKG18MCkhPTApe2liKG18MCl8MH1pZigobHwwKT09MCl7ZD1kKzF8MDtsPTF9ZWxzZSBpZigobHwwKT09LTJ8KGx8MCk9PS0xKXtmPTk7YnJlYWt9ZWxzZXtkPWQrbHwwfWs9bCtrfDA7aj1qKzF8MDtpZihqPj4+MD49Zj4+PjB8KGR8MCk9PShlfDApKXtmPTk7YnJlYWt9fWlmKChmfDApPT05KXtpPWc7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBNbChhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSs4Pj4yXXwwO2lmKChhfDApIT0wKXthPWliKGF8MCl8MDtpZigoYXwwKT09MCl7YT00fWVsc2V7aWIoYXwwKXwwO2E9NH19ZWxzZXthPTF9aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gTmwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gT2woZCxmLGcsaCxqLGssbCxtKXtkPWR8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDt2YXIgbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7Zj1pO2Q9aDthOmRve2lmKGc+Pj4wPGg+Pj4wKXtvPWc7bj1rO3doaWxlKDEpe3E9YltvPj4xXXwwO3A9cSY2NTUzNTtkb3tpZigocSY2NTUzNSk8MTI4KXtpZigobC1ufDApPDEpe2g9MTticmVhayBhfWFbbj4+MF09cTtuPW4rMXwwfWVsc2V7aWYoKHEmNjU1MzUpPDIwNDgpe2lmKChsLW58MCk8Mil7aD0xO2JyZWFrIGF9YVtuPj4wXT1wPj4+NnwxOTI7YVtuKzE+PjBdPXAmNjN8MTI4O249bisyfDA7YnJlYWt9aWYoKHEmNjU1MzUpPDU1Mjk2KXtpZigobC1ufDApPDMpe2g9MTticmVhayBhfWFbbj4+MF09cD4+PjEyfDIyNDthW24rMT4+MF09cD4+PjYmNjN8MTI4O2FbbisyPj4wXT1wJjYzfDEyODtuPW4rM3wwO2JyZWFrfWlmKCEoKHEmNjU1MzUpPDU2MzIwKSl7aWYoKHEmNjU1MzUpPDU3MzQ0KXtoPTI7YnJlYWsgYX1pZigobC1ufDApPDMpe2g9MTticmVhayBhfWFbbj4+MF09cD4+PjEyfDIyNDthW24rMT4+MF09cD4+PjYmNjN8MTI4O2FbbisyPj4wXT1wJjYzfDEyODtuPW4rM3wwO2JyZWFrfWlmKChkLW98MCk8NCl7aD0xO2JyZWFrIGF9cT1vKzJ8MDtyPWVbcT4+MV18MDtpZigociY2NDUxMnwwKSE9NTYzMjApe2g9MjticmVhayBhfWlmKChsLW58MCk8NCl7aD0xO2JyZWFrIGF9cz1wJjk2MDtpZigoKHM8PDEwKSs2NTUzNnwwKT4+PjA+MTExNDExMSl7aD0yO2JyZWFrIGF9bz0ocz4+PjYpKzF8MDthW24+PjBdPW8+Pj4yfDI0MDthW24rMT4+MF09cD4+PjImMTV8bzw8NCY0OHwxMjg7YVtuKzI+PjBdPXA8PDQmNDh8cj4+PjYmMTV8MTI4O2FbbiszPj4wXT1yJjYzfDEyODtvPXE7bj1uKzR8MH19d2hpbGUoMCk7bz1vKzJ8MDtpZighKG8+Pj4wPGg+Pj4wKSl7aD0wO2JyZWFrfX19ZWxzZXtoPTA7bz1nO249a319d2hpbGUoMCk7Y1tqPj4yXT1nKyhvLWc+PjE8PDEpO2NbbT4+Ml09aysobi1rKTtpPWY7cmV0dXJuIGh8MH1mdW5jdGlvbiBQbChlLGYsZyxoLGosayxsLG0pe2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO209bXwwO3ZhciBuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2Y9aTthOmRve2lmKGc+Pj4wPGg+Pj4wKXtvPWg7cD1sO3E9ZztlPWs7d2hpbGUoMSl7aWYoIShlPj4+MDxsPj4+MCkpe249MzE7YnJlYWsgYX1zPWFbcT4+MF18MDtyPXMmMjU1O2Rve2lmKHM8PDI0Pj4yND4tMSl7YltlPj4xXT1zJjI1NTtxPXErMXwwfWVsc2V7aWYoKHMmMjU1KTwxOTQpe2g9MjticmVhayBhfWlmKChzJjI1NSk8MjI0KXtpZigoby1xfDApPDIpe2g9MTticmVhayBhfXM9ZFtxKzE+PjBdfDA7aWYoKHMmMTkyfDApIT0xMjgpe2g9MjticmVhayBhfWJbZT4+MV09cyY2M3xyPDw2JjE5ODQ7cT1xKzJ8MDticmVha31pZigocyYyNTUpPDI0MCl7aWYoKG8tcXwwKTwzKXtoPTE7YnJlYWsgYX1zPWFbcSsxPj4wXXwwO3Q9YVtxKzI+PjBdfDA7aWYoKHJ8MCk9PTIzNyl7aWYoISgocyYtMzIpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19ZWxzZSBpZigocnwwKT09MjI0KXtpZighKChzJi0zMik8PDI0Pj4yND09LTk2KSl7aD0yO2JyZWFrIGF9fWVsc2V7aWYoISgocyYtNjQpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19dD10JjI1NTtpZigodCYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9YltlPj4xXT0ocyYyNTUpPDw2JjQwMzJ8cjw8MTJ8dCY2MztxPXErM3wwO2JyZWFrfWlmKCEoKHMmMjU1KTwyNDUpKXtoPTI7YnJlYWsgYX1pZigoby1xfDApPDQpe2g9MTticmVhayBhfXM9YVtxKzE+PjBdfDA7dD1hW3ErMj4+MF18MDt1PWFbcSszPj4wXXwwO2lmKChyfDApPT0yNDApe2lmKCEoKHMrMTEyPDwyND4+MjQmMjU1KTw0OCkpe2g9MjticmVhayBhfX1lbHNlIGlmKChyfDApPT0yNDQpe2lmKCEoKHMmLTE2KTw8MjQ+PjI0PT0tMTI4KSl7aD0yO2JyZWFrIGF9fWVsc2V7aWYoISgocyYtNjQpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19dD10JjI1NTtpZigodCYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9dT11JjI1NTtpZigodSYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9aWYoKHAtZXwwKTw0KXtoPTE7YnJlYWsgYX1yPXImNztzPXMmMjU1O2lmKChzPDwxMiYxOTY2MDh8cjw8MTgpPj4+MD4xMTE0MTExKXtoPTI7YnJlYWsgYX1iW2U+PjFdPXM8PDImNjB8dD4+PjQmM3woKHM+Pj40JjN8cjw8Mik8PDYpKzE2MzIwfDU1Mjk2O2U9ZSsyfDA7YltlPj4xXT11JjYzfHQ8PDYmOTYwfDU2MzIwO3E9cSs0fDB9fXdoaWxlKDApO2U9ZSsyfDA7aWYoIShxPj4+MDxoPj4+MCkpe249MzE7YnJlYWt9fX1lbHNle3E9ZztlPWs7bj0zMX19d2hpbGUoMCk7aWYoKG58MCk9PTMxKXtoPXE+Pj4wPGg+Pj4wJjF9Y1tqPj4yXT1nKyhxLWcpO2NbbT4+Ml09aysoZS1rPj4xPDwxKTtpPWY7cmV0dXJuIGh8MH1mdW5jdGlvbiBRbChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2NbZj4+Ml09ZDtyZXR1cm4gM31mdW5jdGlvbiBSbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBTbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBUbChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Yz1pO2E6ZG97aWYoZD4+PjA8ZT4+PjAmKGZ8MCkhPTApe2I9ZTtoPWQ7Zz0wO2I6d2hpbGUoMSl7az1hW2g+PjBdfDA7aj1rJjI1NTtkb3tpZihrPDwyND4+MjQ+LTEpe2g9aCsxfDB9ZWxzZXtpZigoayYyNTUpPDE5NCl7YnJlYWsgYX1pZigoayYyNTUpPDIyNCl7aWYoKGItaHwwKTwyKXticmVhayBhfWlmKCEoKGFbaCsxPj4wXSYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWg9aCsyfDA7YnJlYWt9aWYoKGsmMjU1KTwyNDApe2s9aDtpZigoYi1rfDApPDMpe2JyZWFrIGF9bT1hW2grMT4+MF18MDtsPWFbaCsyPj4wXXwwO2lmKChqfDApPT0yMjQpe2lmKCEoKG0mLTMyKTw8MjQ+PjI0PT0tOTYpKXtlPTE0O2JyZWFrIGJ9fWVsc2UgaWYoKGp8MCk9PTIzNyl7aWYoISgobSYtMzIpPDwyND4+MjQ9PS0xMjgpKXtlPTE2O2JyZWFrIGJ9fWVsc2V7aWYoISgobSYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTE4O2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1oPWgrM3wwO2JyZWFrfWlmKCEoKGsmMjU1KTwyNDUpKXticmVhayBhfWs9aDtpZigoYi1rfDApPDQpe2JyZWFrIGF9aWYoKGYtZ3wwKT4+PjA8Mil7YnJlYWsgYX1uPWFbaCsxPj4wXXwwO2w9YVtoKzI+PjBdfDA7bT1hW2grMz4+MF18MDtpZigoanwwKT09MjQ0KXtpZighKChuJi0xNik8PDI0Pj4yND09LTEyOCkpe2U9Mjg7YnJlYWsgYn19ZWxzZSBpZigoanwwKT09MjQwKXtpZighKChuKzExMjw8MjQ+PjI0JjI1NSk8NDgpKXtlPTI2O2JyZWFrIGJ9fWVsc2V7aWYoISgobiYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTMwO2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1pZighKChtJi02NCk8PDI0Pj4yND09LTEyOCkpe2JyZWFrIGF9aWYoKChuJjI1NSk8PDEyJjE5NjYwOHxqPDwxOCYxODM1MDA4KT4+PjA+MTExNDExMSl7YnJlYWsgYX1oPWgrNHwwO2c9ZysxfDB9fXdoaWxlKDApO2c9ZysxfDA7aWYoIShoPj4+MDxlPj4+MCZnPj4+MDxmPj4+MCkpe2JyZWFrIGF9fWlmKChlfDApPT0xNCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0xNil7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0xOCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0yNil7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0yOCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0zMCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH19ZWxzZXtoPWR9fXdoaWxlKDApO249aC1kfDA7aT1jO3JldHVybiBufDB9ZnVuY3Rpb24gVWwoYSl7YT1hfDA7cmV0dXJuIDR9ZnVuY3Rpb24gVmwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gV2woYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTA7ZD1pO2E6ZG97aWYoZT4+PjA8Zj4+PjApe2I9ZTtsPWg7d2hpbGUoMSl7bT1jW2I+PjJdfDA7aWYoKG0mLTIwNDh8MCk9PTU1Mjk2fG0+Pj4wPjExMTQxMTEpe2Y9MjticmVhayBhfWRve2lmKCEobT4+PjA8MTI4KSl7aWYobT4+PjA8MjA0OCl7aWYoKGotbHwwKTwyKXtmPTE7YnJlYWsgYX1hW2w+PjBdPW0+Pj42fDE5MjthW2wrMT4+MF09bSY2M3wxMjg7bD1sKzJ8MDticmVha31uPWotbHwwO2lmKG0+Pj4wPDY1NTM2KXtpZigobnwwKTwzKXtmPTE7YnJlYWsgYX1hW2w+PjBdPW0+Pj4xMnwyMjQ7YVtsKzE+PjBdPW0+Pj42JjYzfDEyODthW2wrMj4+MF09bSY2M3wxMjg7bD1sKzN8MDticmVha31lbHNle2lmKChufDApPDQpe2Y9MTticmVhayBhfWFbbD4+MF09bT4+PjE4fDI0MDthW2wrMT4+MF09bT4+PjEyJjYzfDEyODthW2wrMj4+MF09bT4+PjYmNjN8MTI4O2FbbCszPj4wXT1tJjYzfDEyODtsPWwrNHwwO2JyZWFrfX1lbHNle2lmKChqLWx8MCk8MSl7Zj0xO2JyZWFrIGF9YVtsPj4wXT1tO2w9bCsxfDB9fXdoaWxlKDApO2I9Yis0fDA7aWYoIShiPj4+MDxmPj4+MCkpe2Y9MDticmVha319fWVsc2V7Zj0wO2I9ZTtsPWh9fXdoaWxlKDApO2NbZz4+Ml09ZSsoYi1lPj4yPDwyKTtjW2s+PjJdPWgrKGwtaCk7aT1kO3JldHVybiBmfDB9ZnVuY3Rpb24gWGwoYixlLGYsZyxoLGosayxsKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2U9aTthOmRve2lmKGY+Pj4wPGc+Pj4wKXtvPWc7bj1mO2I9ajt3aGlsZSgxKXtpZighKGI+Pj4wPGs+Pj4wKSl7bT0zMDticmVhayBhfXE9YVtuPj4wXXwwO3A9cSYyNTU7ZG97aWYocTw8MjQ+PjI0Pi0xKXtjW2I+PjJdPXA7bj1uKzF8MH1lbHNle2lmKChxJjI1NSk8MTk0KXtnPTI7YnJlYWsgYX1pZigocSYyNTUpPDIyNCl7aWYoKG8tbnwwKTwyKXtnPTE7YnJlYWsgYX1xPWRbbisxPj4wXXwwO2lmKChxJjE5MnwwKSE9MTI4KXtnPTI7YnJlYWsgYX1jW2I+PjJdPXEmNjN8cDw8NiYxOTg0O249bisyfDA7YnJlYWt9aWYoKHEmMjU1KTwyNDApe2lmKChvLW58MCk8Myl7Zz0xO2JyZWFrIGF9cT1hW24rMT4+MF18MDtyPWFbbisyPj4wXXwwO2lmKChwfDApPT0yMjQpe2lmKCEoKHEmLTMyKTw8MjQ+PjI0PT0tOTYpKXtnPTI7YnJlYWsgYX19ZWxzZSBpZigocHwwKT09MjM3KXtpZighKChxJi0zMik8PDI0Pj4yND09LTEyOCkpe2c9MjticmVhayBhfX1lbHNle2lmKCEoKHEmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7Zz0yO2JyZWFrIGF9fXI9ciYyNTU7aWYoKHImMTkyfDApIT0xMjgpe2c9MjticmVhayBhfWNbYj4+Ml09KHEmMjU1KTw8NiY0MDMyfHA8PDEyJjYxNDQwfHImNjM7bj1uKzN8MDticmVha31pZighKChxJjI1NSk8MjQ1KSl7Zz0yO2JyZWFrIGF9aWYoKG8tbnwwKTw0KXtnPTE7YnJlYWsgYX1xPWFbbisxPj4wXXwwO3I9YVtuKzI+PjBdfDA7cz1hW24rMz4+MF18MDtpZigocHwwKT09MjQ0KXtpZighKChxJi0xNik8PDI0Pj4yND09LTEyOCkpe2c9MjticmVhayBhfX1lbHNlIGlmKChwfDApPT0yNDApe2lmKCEoKHErMTEyPDwyND4+MjQmMjU1KTw0OCkpe2c9MjticmVhayBhfX1lbHNle2lmKCEoKHEmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7Zz0yO2JyZWFrIGF9fXI9ciYyNTU7aWYoKHImMTkyfDApIT0xMjgpe2c9MjticmVhayBhfXM9cyYyNTU7aWYoKHMmMTkyfDApIT0xMjgpe2c9MjticmVhayBhfXA9KHEmMjU1KTw8MTImMjU4MDQ4fHA8PDE4JjE4MzUwMDh8cjw8NiY0MDMyfHMmNjM7aWYocD4+PjA+MTExNDExMSl7Zz0yO2JyZWFrIGF9Y1tiPj4yXT1wO249bis0fDB9fXdoaWxlKDApO2I9Yis0fDA7aWYoIShuPj4+MDxnPj4+MCkpe209MzA7YnJlYWt9fX1lbHNle249ZjtiPWo7bT0zMH19d2hpbGUoMCk7aWYoKG18MCk9PTMwKXtnPW4+Pj4wPGc+Pj4wJjF9Y1toPj4yXT1mKyhuLWYpO2NbbD4+Ml09aisoYi1qPj4yPDwyKTtpPWU7cmV0dXJuIGd8MH1mdW5jdGlvbiBZbChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2NbZj4+Ml09ZDtyZXR1cm4gM31mdW5jdGlvbiBabChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBfbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiAkbChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Yz1pO2E6ZG97aWYoZD4+PjA8ZT4+PjAmKGZ8MCkhPTApe2c9ZTtqPWQ7Yj0xO2I6d2hpbGUoMSl7az1hW2o+PjBdfDA7aD1rJjI1NTtkb3tpZihrPDwyND4+MjQ+LTEpe2o9aisxfDB9ZWxzZXtpZigoayYyNTUpPDE5NCl7YnJlYWsgYX1pZigoayYyNTUpPDIyNCl7aWYoKGctanwwKTwyKXticmVhayBhfWlmKCEoKGFbaisxPj4wXSYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWo9aisyfDA7YnJlYWt9aWYoKGsmMjU1KTwyNDApe2s9ajtpZigoZy1rfDApPDMpe2JyZWFrIGF9bT1hW2orMT4+MF18MDtsPWFbaisyPj4wXXwwO2lmKChofDApPT0yMjQpe2lmKCEoKG0mLTMyKTw8MjQ+PjI0PT0tOTYpKXtlPTE0O2JyZWFrIGJ9fWVsc2UgaWYoKGh8MCk9PTIzNyl7aWYoISgobSYtMzIpPDwyND4+MjQ9PS0xMjgpKXtlPTE2O2JyZWFrIGJ9fWVsc2V7aWYoISgobSYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTE4O2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1qPWorM3wwO2JyZWFrfWlmKCEoKGsmMjU1KTwyNDUpKXticmVhayBhfWs9ajtpZigoZy1rfDApPDQpe2JyZWFrIGF9bT1hW2orMT4+MF18MDtuPWFbaisyPj4wXXwwO2w9YVtqKzM+PjBdfDA7aWYoKGh8MCk9PTI0MCl7aWYoISgobSsxMTI8PDI0Pj4yNCYyNTUpPDQ4KSl7ZT0yNTticmVhayBifX1lbHNlIGlmKChofDApPT0yNDQpe2lmKCEoKG0mLTE2KTw8MjQ+PjI0PT0tMTI4KSl7ZT0yNzticmVhayBifX1lbHNle2lmKCEoKG0mLTY0KTw8MjQ+PjI0PT0tMTI4KSl7ZT0yOTticmVhayBifX1pZighKChuJi02NCk8PDI0Pj4yND09LTEyOCkpe2JyZWFrIGF9aWYoISgobCYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWlmKCgobSYyNTUpPDwxMiYxOTY2MDh8aDw8MTgmMTgzNTAwOCk+Pj4wPjExMTQxMTEpe2JyZWFrIGF9aj1qKzR8MH19d2hpbGUoMCk7aWYoIShqPj4+MDxlPj4+MCZiPj4+MDxmPj4+MCkpe2JyZWFrIGF9Yj1iKzF8MH1pZigoZXwwKT09MTQpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MTYpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MTgpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MjUpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09Mjcpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09Mjkpe249ay1kfDA7aT1jO3JldHVybiBufDB9fWVsc2V7aj1kfX13aGlsZSgwKTtuPWotZHwwO2k9YztyZXR1cm4gbnwwfWZ1bmN0aW9uIGFtKGEpe2E9YXwwO3JldHVybiA0fWZ1bmN0aW9uIGJtKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGNtKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGRtKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNjI0O2lmKCEoKGFbYisxMj4+MF0mMSk9PTApKXtlPWNbYisyMD4+Ml18MDtpZigoZXwwKSE9MCl7dm4oZSl9aWYoKGJ8MCk9PTApe2k9ZDtyZXR1cm59fXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM2MjQ7aWYoISgoYVtiKzEyPj4wXSYxKT09MCk/KGU9Y1tiKzIwPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pPWQ7cmV0dXJufWZ1bmN0aW9uIGZtKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNjY0O2lmKCEoKGFbYisxNj4+MF0mMSk9PTApKXtlPWNbYisyND4+Ml18MDtpZigoZXwwKSE9MCl7dm4oZSl9aWYoKGJ8MCk9PTApe2k9ZDtyZXR1cm59fXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ20oYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM2NjQ7aWYoISgoYVtiKzE2Pj4wXSYxKT09MCk/KGU9Y1tiKzI0Pj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pPWQ7cmV0dXJufWZ1bmN0aW9uIGhtKGIpe2I9YnwwO3JldHVybiBhW2IrOD4+MF18MH1mdW5jdGlvbiBpbShhKXthPWF8MDtyZXR1cm4gY1thKzg+PjJdfDB9ZnVuY3Rpb24gam0oYil7Yj1ifDA7cmV0dXJuIGFbYis5Pj4wXXwwfWZ1bmN0aW9uIGttKGEpe2E9YXwwO3JldHVybiBjW2ErMTI+PjJdfDB9ZnVuY3Rpb24gbG0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2c9ZCsxMnwwO2lmKChhW2c+PjBdJjEpPT0wKXtjW2IrMD4+Ml09Y1tnKzA+PjJdO2NbYis0Pj4yXT1jW2crND4+Ml07Y1tiKzg+PjJdPWNbZys4Pj4yXTtpPWU7cmV0dXJufWc9Y1tkKzIwPj4yXXwwO2Q9Y1tkKzE2Pj4yXXwwO2lmKGQ+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoZD4+PjA8MTEpe2FbYj4+MF09ZDw8MTtrPWIrMXwwfWVsc2V7aD1kKzE2Ji0xNjtqPShofDApPT0wPzE6aDt3aGlsZSgxKXtrPXVuKGopfDA7aWYoKGt8MCkhPTApe2Y9MTM7YnJlYWt9az1jWzU2NjZdfDA7Y1s1NjY2XT1rKzA7aWYoKGt8MCk9PTApe2JyZWFrfXNjW2smMzFdKCl9aWYoKGZ8MCk9PTEzKXtjW2IrOD4+Ml09aztjW2I+PjJdPWh8MTtjW2IrND4+Ml09ZDticmVha31rPVhhKDQpfDA7Y1trPj4yXT0yMjY4MDt3YihrfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7TG4oa3wwLGd8MCxkfDApfDA7YVtrK2Q+PjBdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBtbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtlPWk7Zz1kKzE2fDA7aWYoKGFbZz4+MF0mMSk9PTApe2NbYiswPj4yXT1jW2crMD4+Ml07Y1tiKzQ+PjJdPWNbZys0Pj4yXTtjW2IrOD4+Ml09Y1tnKzg+PjJdO2k9ZTtyZXR1cm59Zz1jW2QrMjQ+PjJdfDA7ZD1jW2QrMjA+PjJdfDA7aWYoZD4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1kb3tpZihkPj4+MDwxMSl7YVtiPj4wXT1kPDwxO2s9YisxfDB9ZWxzZXtoPWQrMTYmLTE2O2o9KGh8MCk9PTA/MTpoO3doaWxlKDEpe2s9dW4oail8MDtpZigoa3wwKSE9MCl7Zj0xMzticmVha31rPWNbNTY2Nl18MDtjWzU2NjZdPWsrMDtpZigoa3wwKT09MCl7YnJlYWt9c2NbayYzMV0oKX1pZigoZnwwKT09MTMpe2NbYis4Pj4yXT1rO2NbYj4+Ml09aHwxO2NbYis0Pj4yXT1kO2JyZWFrfWs9WGEoNCl8MDtjW2s+PjJdPTIyNjgwO3diKGt8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtMbihrfDAsZ3wwLGR8MCl8MDthW2srZD4+MF09MDtpPWU7cmV0dXJufWZ1bmN0aW9uIG5tKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT04O2M9YisxfDA7YVtjPj4wXT0xNzAyMTk1ODI4O2FbYysxPj4wXT02NjQ5MjAyO2FbYysyPj4wXT0yNTk3MzthW2MrMz4+MF09MTAxO2FbYis1Pj4wXT0wO3JldHVybn1mdW5jdGlvbiBvbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2Q9aTtlPTEzNjk2O3doaWxlKDEpe2lmKChjW2U+PjJdfDApPT0wKXticmVha31lbHNle2U9ZSs0fDB9fWc9ZS0xMzY5NnwwO2U9Zz4+MjtpZihlPj4+MD4xMDczNzQxODA3KXtkZygpfWRve2lmKGU+Pj4wPDIpe2FbYj4+MF09Zz4+PjE7aj1iKzR8MH1lbHNle2c9ZSs0Ji00O2g9Zzw8MjtoPShofDApPT0wPzE6aDt3aGlsZSgxKXtqPXVuKGgpfDA7aWYoKGp8MCkhPTApe2Y9MTM7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKGZ8MCk9PTEzKXtjW2IrOD4+Ml09ajtjW2I+PjJdPWd8MTtjW2IrND4+Ml09ZTticmVha31qPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGV8MCk9PTApe2o9aisoZTw8Mil8MDtjW2o+PjJdPTA7aT1kO3JldHVybn1lbHNle2Y9ZTtnPTEzNjk2O2I9an13aGlsZSgxKXtmPWYrIC0xfDA7Y1tiPj4yXT1jW2c+PjJdO2lmKChmfDApPT0wKXticmVha31lbHNle2c9Zys0fDA7Yj1iKzR8MH19aj1qKyhlPDwyKXwwO2Nbaj4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIHBtKGIsYyl7Yj1ifDA7Yz1jfDA7dmFyIGQ9MDtjPWk7YVtiPj4wXT0xMDtkPWIrMXwwO2FbZCswPj4wXT1hWzEzNzIwPj4wXXwwO2FbZCsxPj4wXT1hWzEzNzIxPj4wXXwwO2FbZCsyPj4wXT1hWzEzNzIyPj4wXXwwO2FbZCszPj4wXT1hWzEzNzIzPj4wXXwwO2FbZCs0Pj4wXT1hWzEzNzI0Pj4wXXwwO2FbYis2Pj4wXT0wO2k9YztyZXR1cm59ZnVuY3Rpb24gcW0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtkPWk7ZT0xMzcyODt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtlPWUrNHwwfX1nPWUtMTM3Mjh8MDtlPWc+PjI7aWYoZT4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihlPj4+MDwyKXthW2I+PjBdPWc+Pj4xO2o9Yis0fDB9ZWxzZXtnPWUrNCYtNDtoPWc8PDI7aD0oaHwwKT09MD8xOmg7d2hpbGUoMSl7aj11bihoKXwwO2lmKChqfDApIT0wKXtmPTEzO2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXticmVha31zY1tqJjMxXSgpfWlmKChmfDApPT0xMyl7Y1tiKzg+PjJdPWo7Y1tiPj4yXT1nfDE7Y1tiKzQ+PjJdPWU7YnJlYWt9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChlfDApPT0wKXtqPWorKGU8PDIpfDA7Y1tqPj4yXT0wO2k9ZDtyZXR1cm59ZWxzZXtmPWU7Zz0xMzcyODtiPWp9d2hpbGUoMSl7Zj1mKyAtMXwwO2NbYj4+Ml09Y1tnPj4yXTtpZigoZnwwKT09MCl7YnJlYWt9ZWxzZXtnPWcrNHwwO2I9Yis0fDB9fWo9aisoZTw8Mil8MDtjW2o+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBybShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzc2MF18MCkhPTApe2Q9Y1szNDM4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzc2MCl8MCk9PTApe2Q9Y1szNDM4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzIwOTI4XXwwKT09MD8oUWEoMjA5MjgpfDApIT0wOjApe05uKDIwNzYwLDAsMTY4KXwwO2NjKDIxNSwwLHB8MCl8MDskYSgyMDkyOCl9Z2coMjA3NjAsMjA5MzYpO2dnKDIwNzcyfDAsMjA5NDQpO2dnKDIwNzg0fDAsMjA5NTIpO2dnKDIwNzk2fDAsMjA5NjApO2dnKDIwODA4fDAsMjA5NzYpO2dnKDIwODIwfDAsMjA5OTIpO2dnKDIwODMyfDAsMjFlMyk7Z2coMjA4NDR8MCwyMTAxNik7Z2coMjA4NTZ8MCwyMTAyNCk7Z2coMjA4Njh8MCwyMTAzMik7Z2coMjA4ODB8MCwyMTA0MCk7Z2coMjA4OTJ8MCwyMTA0OCk7Z2coMjA5MDR8MCwyMTA1Nik7Z2coMjA5MTZ8MCwyMTA2NCk7Y1szNDM4XT0yMDc2MDskYSgxMzc2MCk7ZD1jWzM0MzhdfDA7aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gc20oYil7Yj1ifDA7dmFyIGQ9MDtiPWk7aWYoKGFbMTM3NzZdfDApIT0wKXtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1pZigoUWEoMTM3NzYpfDApPT0wKXtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1pZigoYVsyMDM5Ml18MCk9PTA/KFFhKDIwMzkyKXwwKSE9MDowKXtObigyMDIyNCwwLDE2OCl8MDtjYygyMTYsMCxwfDApfDA7JGEoMjAzOTIpfW5nKDIwMjI0LDIwNDAwKTtuZygyMDIzNnwwLDIwNDMyKTtuZygyMDI0OHwwLDIwNDY0KTtuZygyMDI2MHwwLDIwNDk2KTtuZygyMDI3MnwwLDIwNTM2KTtuZygyMDI4NHwwLDIwNTc2KTtuZygyMDI5NnwwLDIwNjA4KTtuZygyMDMwOHwwLDIwNjQ4KTtuZygyMDMyMHwwLDIwNjY0KTtuZygyMDMzMnwwLDIwNjgwKTtuZygyMDM0NHwwLDIwNjk2KTtuZygyMDM1NnwwLDIwNzEyKTtuZygyMDM2OHwwLDIwNzI4KTtuZygyMDM4MHwwLDIwNzQ0KTtjWzM0NDJdPTIwMjI0OyRhKDEzNzc2KTtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB0bShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzc5Ml18MCkhPTApe2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzc5Mil8MCk9PTApe2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzJlNF18MCk9PTA/KFFhKDJlNCl8MCkhPTA6MCl7Tm4oMTk3MTIsMCwyODgpfDA7Y2MoMjE3LDAscHwwKXwwOyRhKDJlNCl9Z2coMTk3MTIsMjAwMDgpO2dnKDE5NzI0fDAsMjAwMTYpO2dnKDE5NzM2fDAsMjAwMzIpO2dnKDE5NzQ4fDAsMjAwNDApO2dnKDE5NzYwfDAsMjAwNDgpO2dnKDE5NzcyfDAsMjAwNTYpO2dnKDE5Nzg0fDAsMjAwNjQpO2dnKDE5Nzk2fDAsMjAwNzIpO2dnKDE5ODA4fDAsMjAwODApO2dnKDE5ODIwfDAsMjAwOTYpO2dnKDE5ODMyfDAsMjAxMDQpO2dnKDE5ODQ0fDAsMjAxMjApO2dnKDE5ODU2fDAsMjAxMzYpO2dnKDE5ODY4fDAsMjAxNDQpO2dnKDE5ODgwfDAsMjAxNTIpO2dnKDE5ODkyfDAsMjAxNjApO2dnKDE5OTA0fDAsMjAwNDgpO2dnKDE5OTE2fDAsMjAxNjgpO2dnKDE5OTI4fDAsMjAxNzYpO2dnKDE5OTQwfDAsMjAxODQpO2dnKDE5OTUyfDAsMjAxOTIpO2dnKDE5OTY0fDAsMjAyMDApO2dnKDE5OTc2fDAsMjAyMDgpO2dnKDE5OTg4fDAsMjAyMTYpO2NbMzQ0Nl09MTk3MTI7JGEoMTM3OTIpO2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWZ1bmN0aW9uIHVtKGIpe2I9YnwwO3ZhciBkPTA7Yj1pO2lmKChhWzEzODA4XXwwKSE9MCl7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9aWYoKFFhKDEzODA4KXwwKT09MCl7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9aWYoKGFbMTkxNjBdfDApPT0wPyhRYSgxOTE2MCl8MCkhPTA6MCl7Tm4oMTg4NzIsMCwyODgpfDA7Y2MoMjE4LDAscHwwKXwwOyRhKDE5MTYwKX1uZygxODg3MiwxOTE2OCk7bmcoMTg4ODR8MCwxOTIwMCk7bmcoMTg4OTZ8MCwxOTI0MCk7bmcoMTg5MDh8MCwxOTI2NCk7bmcoMTg5MjB8MCwxOTU4NCk7bmcoMTg5MzJ8MCwxOTI4OCk7bmcoMTg5NDR8MCwxOTMxMik7bmcoMTg5NTZ8MCwxOTMzNik7bmcoMTg5Njh8MCwxOTM2OCk7bmcoMTg5ODB8MCwxOTQwOCk7bmcoMTg5OTJ8MCwxOTQ0MCk7bmcoMTkwMDR8MCwxOTQ4MCk7bmcoMTkwMTZ8MCwxOTUyMCk7bmcoMTkwMjh8MCwxOTUzNik7bmcoMTkwNDB8MCwxOTU1Mik7bmcoMTkwNTJ8MCwxOTU2OCk7bmcoMTkwNjR8MCwxOTU4NCk7bmcoMTkwNzZ8MCwxOTYwMCk7bmcoMTkwODh8MCwxOTYxNik7bmcoMTkxMDB8MCwxOTYzMik7bmcoMTkxMTJ8MCwxOTY0OCk7bmcoMTkxMjR8MCwxOTY2NCk7bmcoMTkxMzZ8MCwxOTY4MCk7bmcoMTkxNDh8MCwxOTY5Nik7Y1szNDUwXT0xODg3MjskYSgxMzgwOCk7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gdm0oYil7Yj1ifDA7dmFyIGQ9MDtiPWk7aWYoKGFbMTM4MjRdfDApIT0wKXtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1pZigoUWEoMTM4MjQpfDApPT0wKXtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1pZigoYVsxODg0OF18MCk9PTA/KFFhKDE4ODQ4KXwwKSE9MDowKXtObigxODU2MCwwLDI4OCl8MDtjYygyMTksMCxwfDApfDA7JGEoMTg4NDgpfWdnKDE4NTYwLDE4ODU2KTtnZygxODU3MnwwLDE4ODY0KTtjWzM0NTRdPTE4NTYwOyRhKDEzODI0KTtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB3bShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzg0MF18MCkhPTApe2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzg0MCl8MCk9PTApe2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzE4NTIwXXwwKT09MD8oUWEoMTg1MjApfDApIT0wOjApe05uKDE4MjMyLDAsMjg4KXwwO2NjKDIyMCwwLHB8MCl8MDskYSgxODUyMCl9bmcoMTgyMzIsMTg1MjgpO25nKDE4MjQ0fDAsMTg1NDQpO2NbMzQ1OF09MTgyMzI7JGEoMTM4NDApO2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWZ1bmN0aW9uIHhtKGIpe2I9YnwwO3ZhciBjPTAsZD0wO2I9aTtpZigoYVsxMzg2NF18MCkhPTApe2k9YjtyZXR1cm4gMTM4NDh9aWYoKFFhKDEzODY0KXwwKT09MCl7aT1iO3JldHVybiAxMzg0OH1hWzEzODQ4XT0xNjtjPTEzODQ5fDA7ZD1jO2FbZD4+MF09NjIzODY1MTI1O2FbZCsxPj4wXT0yNDM2OTczO2FbZCsyPj4wXT05NTE5O2FbZCszPj4wXT0zNztjPWMrNHwwO2FbYz4+MF09MjAzMjQ4MDEwMDthW2MrMT4+MF09NzkzOTM3NTthW2MrMj4+MF09MzEwMTM7YVtjKzM+PjBdPTEyMTthWzEzODU3Pj4wXT0wO2NjKDIyMSwxMzg0OCxwfDApfDA7JGEoMTM4NjQpO2k9YjtyZXR1cm4gMTM4NDh9ZnVuY3Rpb24geW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzEzODg4XXwwKSE9MCl7aT1iO3JldHVybiAxMzg3Mn1pZigoUWEoMTM4ODgpfDApPT0wKXtpPWI7cmV0dXJuIDEzODcyfWVsc2V7ZD0xMzg5Nn13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTM4OTZ8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzEzODcyXT1mPj4+MTtlPTEzODc2fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxMzg4MD4+Ml09aDtjWzM0NjhdPWZ8MTtjWzEzODc2Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTEzODk2O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDEzODcyLHB8MCl8MDskYSgxMzg4OCk7aT1iO3JldHVybiAxMzg3Mn1mdW5jdGlvbiB6bShiKXtiPWJ8MDt2YXIgYz0wLGQ9MDtiPWk7aWYoKGFbMTM5NTJdfDApIT0wKXtpPWI7cmV0dXJuIDEzOTM2fWlmKChRYSgxMzk1Mil8MCk9PTApe2k9YjtyZXR1cm4gMTM5MzZ9YVsxMzkzNl09MTY7Yz0xMzkzN3wwO2Q9YzthW2Q+PjBdPTYyNDU3NjU0OTthW2QrMT4+MF09MjQzOTc1MjthW2QrMj4+MF09OTUzMDthW2QrMz4+MF09Mzc7Yz1jKzR8MDthW2M+PjBdPTEzOTQ5NDg2ODU7YVtjKzE+PjBdPTU0NDkwMTg7YVtjKzI+PjBdPTIxMjg1O2FbYyszPj4wXT04MzthWzEzOTQ1Pj4wXT0wO2NjKDIyMSwxMzkzNixwfDApfDA7JGEoMTM5NTIpO2k9YjtyZXR1cm4gMTM5MzZ9ZnVuY3Rpb24gQW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzEzOTc2XXwwKSE9MCl7aT1iO3JldHVybiAxMzk2MH1pZigoUWEoMTM5NzYpfDApPT0wKXtpPWI7cmV0dXJuIDEzOTYwfWVsc2V7ZD0xMzk4NH13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTM5ODR8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzEzOTYwXT1mPj4+MTtlPTEzOTY0fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxMzk2OD4+Ml09aDtjWzM0OTBdPWZ8MTtjWzEzOTY0Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTEzOTg0O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDEzOTYwLHB8MCl8MDskYSgxMzk3Nik7aT1iO3JldHVybiAxMzk2MH1mdW5jdGlvbiBCbShiKXtiPWJ8MDtiPWk7aWYoKGFbMTQwNDBdfDApPT0wPyhRYSgxNDA0MCl8MCkhPTA6MCl7ZWcoMTQwMjQsMTQwNDgsMjApO2NjKDIyMSwxNDAyNCxwfDApfDA7JGEoMTQwNDApfWk9YjtyZXR1cm4gMTQwMjR9ZnVuY3Rpb24gQ20oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzE0MDg4XXwwKSE9MCl7aT1iO3JldHVybiAxNDA3Mn1pZigoUWEoMTQwODgpfDApPT0wKXtpPWI7cmV0dXJuIDE0MDcyfWVsc2V7ZD0xNDA5Nn13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTQwOTZ8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzE0MDcyXT1mPj4+MTtlPTE0MDc2fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxNDA4MD4+Ml09aDtjWzM1MThdPWZ8MTtjWzE0MDc2Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTE0MDk2O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDE0MDcyLHB8MCl8MDskYSgxNDA4OCk7aT1iO3JldHVybiAxNDA3Mn1mdW5jdGlvbiBEbShiKXtiPWJ8MDtiPWk7aWYoKGFbMTQyMDBdfDApPT0wPyhRYSgxNDIwMCl8MCkhPTA6MCl7ZWcoMTQxODQsMTQyMDgsMTEpO2NjKDIyMSwxNDE4NCxwfDApfDA7JGEoMTQyMDApfWk9YjtyZXR1cm4gMTQxODR9ZnVuY3Rpb24gRW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzE0MjQwXXwwKSE9MCl7aT1iO3JldHVybiAxNDIyNH1pZigoUWEoMTQyNDApfDApPT0wKXtpPWI7cmV0dXJuIDE0MjI0fWVsc2V7ZD0xNDI0OH13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTQyNDh8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzE0MjI0XT1mPj4+MTtlPTE0MjI4fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxNDIzMj4+Ml09aDtjWzM1NTZdPWZ8MTtjWzE0MjI4Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTE0MjQ4O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDE0MjI0LHB8MCl8MDskYSgxNDI0MCk7aT1iO3JldHVybiAxNDIyNH1mdW5jdGlvbiBGbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCkhPTM0KXtpPWY7cmV0dXJuK2t9Y1tlPj4yXT00O2k9ZjtyZXR1cm4ra31mdW5jdGlvbiBHbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCkhPTM0KXtpPWY7cmV0dXJuK2t9Y1tlPj4yXT00O2k9ZjtyZXR1cm4ra31mdW5jdGlvbiBIbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCk9PTM0KXtjW2U+PjJdPTR9aT1mO3JldHVybitrfWZ1bmN0aW9uIEltKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7aD1pO2k9aSsxMTJ8MDtrPWg7aWYoKGJ8MCk9PShkfDApKXtjW2U+PjJdPTQ7Zj0wO209MDtJPWY7aT1oO3JldHVybiBtfDB9aWYoKGFbYj4+MF18MCk9PTQ1KXtjW2U+PjJdPTQ7Zj0wO209MDtJPWY7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsLTEsLTEpfDA7Zj1JO2s9YisoKGNbbD4+Ml18MCkrKGNbbj4+Ml18MCktKGNbays4Pj4yXXwwKSl8MDtiPWNbZz4+Ml18MDtpZigoYnwwKT09MCl7Y1tnPj4yXT1qfWlmKChrfDApIT0oZHwwKSl7Y1tlPj4yXT00O209MDtuPTA7ST1tO2k9aDtyZXR1cm4gbnwwfWlmKChifDApIT0zNCl7bj1tO0k9ZjtpPWg7cmV0dXJuIG58MH1jW2U+PjJdPTQ7bT0tMTtuPS0xO0k9bTtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBKbShiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtpPWkrMTEyfDA7az1oO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O209MDtpPWg7cmV0dXJuIG18MH1pZigoYVtiPj4wXXwwKT09NDUpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsLTEsLTEpfDA7Zj1JO2s9YisoKGNbbD4+Ml18MCkrKGNbbj4+Ml18MCktKGNbays4Pj4yXXwwKSl8MDtiPWNbZz4+Ml18MDtpZigoYnwwKT09MCl7Y1tnPj4yXT1qfWlmKChrfDApIT0oZHwwKSl7Y1tlPj4yXT00O249MDtpPWg7cmV0dXJuIG58MH1pZigoYnwwKT09MzR8KGY+Pj4wPjB8KGZ8MCk9PTAmbT4+PjA+NDI5NDk2NzI5NSkpe2NbZT4+Ml09NDtuPS0xO2k9aDtyZXR1cm4gbnwwfWVsc2V7bj1tO2k9aDtyZXR1cm4gbnwwfXJldHVybiAwfWZ1bmN0aW9uIEttKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7aD1pO2k9aSsxMTJ8MDtrPWg7aWYoKGJ8MCk9PShkfDApKXtjW2U+PjJdPTQ7bT0wO2k9aDtyZXR1cm4gbXwwfWlmKChhW2I+PjBdfDApPT00NSl7Y1tlPj4yXT00O209MDtpPWg7cmV0dXJuIG18MH1nPWJiKCl8MDtqPWNbZz4+Ml18MDtjW2c+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbaz4+Ml09MDtsPWsrNHwwO2NbbD4+Ml09YjtjW2srNDQ+PjJdPWI7aWYoKGJ8MCk8MCl7Y1trKzg+PjJdPS0xO209LTF9ZWxzZXttPWIrMjE0NzQ4MzY0N3wwO2Nbays4Pj4yXT1tfWNbays3Nj4+Ml09LTE7Y1trKzEwND4+Ml09MDtuPWsrMTA4fDA7Y1tuPj4yXT1tLWI7Y1trKzEwMD4+Ml09bTttPUJuKGssZiwtMSwtMSl8MDtmPUk7az1iKygoY1tsPj4yXXwwKSsoY1tuPj4yXXwwKS0oY1trKzg+PjJdfDApKXwwO2I9Y1tnPj4yXXwwO2lmKChifDApPT0wKXtjW2c+PjJdPWp9aWYoKGt8MCkhPShkfDApKXtjW2U+PjJdPTQ7bj0wO2k9aDtyZXR1cm4gbnwwfWlmKChifDApPT0zNHwoZj4+PjA+MHwoZnwwKT09MCZtPj4+MD40Mjk0OTY3Mjk1KSl7Y1tlPj4yXT00O249LTE7aT1oO3JldHVybiBufDB9ZWxzZXtuPW07aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTG0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9aWYoKGFbYj4+MF18MCk9PTQ1KXtjW2U+PjJdPTQ7bT0wO2k9aDtyZXR1cm4gbXwwfWc9YmIoKXwwO2o9Y1tnPj4yXXwwO2NbZz4+Ml09MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9Y1trPj4yXT0wO2w9ays0fDA7Y1tsPj4yXT1iO2Nbays0ND4+Ml09YjtpZigoYnwwKTwwKXtjW2srOD4+Ml09LTE7bT0tMX1lbHNle209YisyMTQ3NDgzNjQ3fDA7Y1trKzg+PjJdPW19Y1trKzc2Pj4yXT0tMTtjW2srMTA0Pj4yXT0wO249aysxMDh8MDtjW24+PjJdPW0tYjtjW2srMTAwPj4yXT1tO209Qm4oayxmLC0xLC0xKXwwO2Y9STtrPWIrKChjW2w+PjJdfDApKyhjW24+PjJdfDApLShjW2srOD4+Ml18MCkpfDA7Yj1jW2c+PjJdfDA7aWYoKGJ8MCk9PTApe2NbZz4+Ml09an1pZigoa3wwKSE9KGR8MCkpe2NbZT4+Ml09NDtuPTA7aT1oO3JldHVybiBufDB9aWYoKGJ8MCk9PTM0fChmPj4+MD4wfChmfDApPT0wJm0+Pj4wPjY1NTM1KSl7Y1tlPj4yXT00O249LTE7aT1oO3JldHVybiBufDB9ZWxzZXtuPW0mNjU1MzU7aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTW0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDtmPTA7bT0wO0k9ZjtpPWg7cmV0dXJuIG18MH1nPWJiKCl8MDtqPWNbZz4+Ml18MDtjW2c+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbaz4+Ml09MDtsPWsrNHwwO2NbbD4+Ml09YjtjW2srNDQ+PjJdPWI7aWYoKGJ8MCk8MCl7Y1trKzg+PjJdPS0xO209LTF9ZWxzZXttPWIrMjE0NzQ4MzY0N3wwO2Nbays4Pj4yXT1tfWNbays3Nj4+Ml09LTE7Y1trKzEwND4+Ml09MDtuPWsrMTA4fDA7Y1tuPj4yXT1tLWI7Y1trKzEwMD4+Ml09bTttPUJuKGssZiwwLC0yMTQ3NDgzNjQ4KXwwO2Y9STtrPWIrKChjW2w+PjJdfDApKyhjW24+PjJdfDApLShjW2srOD4+Ml18MCkpfDA7Yj1jW2c+PjJdfDA7aWYoKGJ8MCk9PTApe2NbZz4+Ml09an1pZigoa3wwKSE9KGR8MCkpe2NbZT4+Ml09NDttPTA7bj0wO0k9bTtpPWg7cmV0dXJuIG58MH1pZigoYnwwKT09MzQpe2NbZT4+Ml09NDtuPShmfDApPjB8KGZ8MCk9PTAmbT4+PjA+MDtJPW4/MjE0NzQ4MzY0NzotMjE0NzQ4MzY0ODtpPWg7cmV0dXJuKG4/LTE6MCl8MH1lbHNle249bTtJPWY7aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTm0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsMCwtMjE0NzQ4MzY0OCl8MDtmPUk7az1iKygoY1tsPj4yXXwwKSsoY1tuPj4yXXwwKS0oY1trKzg+PjJdfDApKXwwO2I9Y1tnPj4yXXwwO2lmKChifDApPT0wKXtjW2c+PjJdPWp9aWYoKGt8MCkhPShkfDApKXtjW2U+PjJdPTQ7bj0wO2k9aDtyZXR1cm4gbnwwfWRve2lmKChifDApPT0zNCl7Y1tlPj4yXT00O2lmKChmfDApPjB8KGZ8MCk9PTAmbT4+PjA+MCl7bj0yMTQ3NDgzNjQ3O2k9aDtyZXR1cm4gbnwwfX1lbHNle2lmKChmfDApPC0xfChmfDApPT0tMSZtPj4+MDwyMTQ3NDgzNjQ4KXtjW2U+PjJdPTQ7YnJlYWt9aWYoKGZ8MCk+MHwoZnwwKT09MCZtPj4+MD4yMTQ3NDgzNjQ3KXtjW2U+PjJdPTQ7bj0yMTQ3NDgzNjQ3O2k9aDtyZXR1cm4gbnwwfWVsc2V7bj1tO2k9aDtyZXR1cm4gbnwwfX19d2hpbGUoMCk7bj0tMjE0NzQ4MzY0ODtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBPbShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7Yj1pO2lmKCEoKGFbMTg1MDg+PjBdJjEpPT0wKT8odj1jWzE4NTE2Pj4yXXwwLCh2fDApIT0wKTowKXt2bih2KX1pZighKChhWzE4NDk2Pj4wXSYxKT09MCk/KHU9Y1sxODUwND4+Ml18MCwodXwwKSE9MCk6MCl7dm4odSl9aWYoISgoYVsxODQ4ND4+MF0mMSk9PTApPyh0PWNbMTg0OTI+PjJdfDAsKHR8MCkhPTApOjApe3ZuKHQpfWlmKCEoKGFbMTg0NzI+PjBdJjEpPT0wKT8ocz1jWzE4NDgwPj4yXXwwLChzfDApIT0wKTowKXt2bihzKX1pZighKChhWzE4NDYwPj4wXSYxKT09MCk/KHI9Y1sxODQ2OD4+Ml18MCwocnwwKSE9MCk6MCl7dm4ocil9aWYoISgoYVsxODQ0OD4+MF0mMSk9PTApPyhkPWNbMTg0NTY+PjJdfDAsKGR8MCkhPTApOjApe3ZuKGQpfWlmKCEoKGFbMTg0MzY+PjBdJjEpPT0wKT8ocD1jWzE4NDQ0Pj4yXXwwLChwfDApIT0wKTowKXt2bihwKX1pZighKChhWzE4NDI0Pj4wXSYxKT09MCk/KG89Y1sxODQzMj4+Ml18MCwob3wwKSE9MCk6MCl7dm4obyl9aWYoISgoYVsxODQxMj4+MF0mMSk9PTApPyhuPWNbMTg0MjA+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbMTg0MDA+PjBdJjEpPT0wKT8obT1jWzE4NDA4Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZighKChhWzE4Mzg4Pj4wXSYxKT09MCk/KGw9Y1sxODM5Nj4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoISgoYVsxODM3Nj4+MF0mMSk9PTApPyhrPWNbMTgzODQ+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKCEoKGFbMTgzNjQ+PjBdJjEpPT0wKT8oaj1jWzE4MzcyPj4yXXwwLChqfDApIT0wKTowKXt2bihqKX1pZighKChhWzE4MzUyPj4wXSYxKT09MCk/KGg9Y1sxODM2MD4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9aWYoISgoYVsxODM0MD4+MF0mMSk9PTApPyhnPWNbMTgzNDg+PjJdfDAsKGd8MCkhPTApOjApe3ZuKGcpfWlmKCEoKGFbMTgzMjg+PjBdJjEpPT0wKT8oZj1jWzE4MzM2Pj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1pZighKChhWzE4MzE2Pj4wXSYxKT09MCk/KGU9Y1sxODMyND4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9aWYoISgoYVsxODMwND4+MF0mMSk9PTApPyhxPWNbMTgzMTI+PjJdfDAsKHF8MCkhPTApOjApe3ZuKHEpfWRve2lmKCEoKGFbMTgyOTI+PjBdJjEpPT0wKSl7ZD1jWzE4MzAwPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODI4MD4+MF0mMSk9PTApKXtkPWNbMTgyODg+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4MjY4Pj4wXSYxKT09MCkpe2Q9Y1sxODI3Nj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTgyNTY+PjBdJjEpPT0wKSl7ZD1jWzE4MjY0Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODI0ND4+MF0mMSk9PTApKXtkPWNbMTgyNTI+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtpZigoYVsxODIzMl0mMSk9PTApe2k9YjtyZXR1cm59ZD1jWzE4MjQwPj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gUG0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO2I9aTtpZighKChhWzE4ODM2Pj4wXSYxKT09MCk/KHY9Y1sxODg0ND4+Ml18MCwodnwwKSE9MCk6MCl7dm4odil9aWYoISgoYVsxODgyND4+MF0mMSk9PTApPyh1PWNbMTg4MzI+PjJdfDAsKHV8MCkhPTApOjApe3ZuKHUpfWlmKCEoKGFbMTg4MTI+PjBdJjEpPT0wKT8odD1jWzE4ODIwPj4yXXwwLCh0fDApIT0wKTowKXt2bih0KX1pZighKChhWzE4ODAwPj4wXSYxKT09MCk/KHM9Y1sxODgwOD4+Ml18MCwoc3wwKSE9MCk6MCl7dm4ocyl9aWYoISgoYVsxODc4OD4+MF0mMSk9PTApPyhyPWNbMTg3OTY+PjJdfDAsKHJ8MCkhPTApOjApe3ZuKHIpfWlmKCEoKGFbMTg3NzY+PjBdJjEpPT0wKT8oZD1jWzE4Nzg0Pj4yXXwwLChkfDApIT0wKTowKXt2bihkKX1pZighKChhWzE4NzY0Pj4wXSYxKT09MCk/KHA9Y1sxODc3Mj4+Ml18MCwocHwwKSE9MCk6MCl7dm4ocCl9aWYoISgoYVsxODc1Mj4+MF0mMSk9PTApPyhvPWNbMTg3NjA+PjJdfDAsKG98MCkhPTApOjApe3ZuKG8pfWlmKCEoKGFbMTg3NDA+PjBdJjEpPT0wKT8obj1jWzE4NzQ4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhWzE4NzI4Pj4wXSYxKT09MCk/KG09Y1sxODczNj4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoISgoYVsxODcxNj4+MF0mMSk9PTApPyhsPWNbMTg3MjQ+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKCEoKGFbMTg3MDQ+PjBdJjEpPT0wKT8oaz1jWzE4NzEyPj4yXXwwLChrfDApIT0wKTowKXt2bihrKX1pZighKChhWzE4NjkyPj4wXSYxKT09MCk/KGo9Y1sxODcwMD4+Ml18MCwoanwwKSE9MCk6MCl7dm4oail9aWYoISgoYVsxODY4MD4+MF0mMSk9PTApPyhoPWNbMTg2ODg+PjJdfDAsKGh8MCkhPTApOjApe3ZuKGgpfWlmKCEoKGFbMTg2Njg+PjBdJjEpPT0wKT8oZz1jWzE4Njc2Pj4yXXwwLChnfDApIT0wKTowKXt2bihnKX1pZighKChhWzE4NjU2Pj4wXSYxKT09MCk/KGY9Y1sxODY2ND4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9aWYoISgoYVsxODY0ND4+MF0mMSk9PTApPyhlPWNbMTg2NTI+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWlmKCEoKGFbMTg2MzI+PjBdJjEpPT0wKT8ocT1jWzE4NjQwPj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1kb3tpZighKChhWzE4NjIwPj4wXSYxKT09MCkpe2Q9Y1sxODYyOD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg2MDg+PjBdJjEpPT0wKSl7ZD1jWzE4NjE2Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODU5Nj4+MF0mMSk9PTApKXtkPWNbMTg2MDQ+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4NTg0Pj4wXSYxKT09MCkpe2Q9Y1sxODU5Mj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg1NzI+PjBdJjEpPT0wKSl7ZD1jWzE4NTgwPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7aWYoKGFbMTg1NjBdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1sxODU2OD4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFFtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDtiPWk7aWYoISgoYVsxOTE0OD4+MF0mMSk9PTApPyh2PWNbMTkxNTY+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbMTkxMzY+PjBdJjEpPT0wKT8odT1jWzE5MTQ0Pj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhWzE5MTI0Pj4wXSYxKT09MCk/KHQ9Y1sxOTEzMj4+Ml18MCwodHwwKSE9MCk6MCl7dm4odCl9aWYoISgoYVsxOTExMj4+MF0mMSk9PTApPyhzPWNbMTkxMjA+PjJdfDAsKHN8MCkhPTApOjApe3ZuKHMpfWlmKCEoKGFbMTkxMDA+PjBdJjEpPT0wKT8ocj1jWzE5MTA4Pj4yXXwwLChyfDApIT0wKTowKXt2bihyKX1pZighKChhWzE5MDg4Pj4wXSYxKT09MCk/KGQ9Y1sxOTA5Nj4+Ml18MCwoZHwwKSE9MCk6MCl7dm4oZCl9aWYoISgoYVsxOTA3Nj4+MF0mMSk9PTApPyhwPWNbMTkwODQ+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMTkwNjQ+PjBdJjEpPT0wKT8obz1jWzE5MDcyPj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzE5MDUyPj4wXSYxKT09MCk/KG49Y1sxOTA2MD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsxOTA0MD4+MF0mMSk9PTApPyhtPWNbMTkwNDg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMTkwMjg+PjBdJjEpPT0wKT8obD1jWzE5MDM2Pj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzE5MDE2Pj4wXSYxKT09MCk/KGs9Y1sxOTAyND4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsxOTAwND4+MF0mMSk9PTApPyhqPWNbMTkwMTI+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMTg5OTI+PjBdJjEpPT0wKT8oaD1jWzE5ZTM+PjJdfDAsKGh8MCkhPTApOjApe3ZuKGgpfWlmKCEoKGFbMTg5ODA+PjBdJjEpPT0wKT8oZz1jWzE4OTg4Pj4yXXwwLChnfDApIT0wKTowKXt2bihnKX1pZighKChhWzE4OTY4Pj4wXSYxKT09MCk/KGY9Y1sxODk3Nj4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9aWYoISgoYVsxODk1Nj4+MF0mMSk9PTApPyhlPWNbMTg5NjQ+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWlmKCEoKGFbMTg5NDQ+PjBdJjEpPT0wKT8ocT1jWzE4OTUyPj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1kb3tpZighKChhWzE4OTMyPj4wXSYxKT09MCkpe2Q9Y1sxODk0MD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg5MjA+PjBdJjEpPT0wKSl7ZD1jWzE4OTI4Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODkwOD4+MF0mMSk9PTApKXtkPWNbMTg5MTY+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4ODk2Pj4wXSYxKT09MCkpe2Q9Y1sxODkwND4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg4ODQ+PjBdJjEpPT0wKSl7ZD1jWzE4ODkyPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7aWYoKGFbMTg4NzJdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1sxODg4MD4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFJtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDtiPWk7aWYoISgoYVsxOTk4OD4+MF0mMSk9PTApPyh2PWNbMTk5OTY+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbMTk5NzY+PjBdJjEpPT0wKT8odT1jWzE5OTg0Pj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhWzE5OTY0Pj4wXSYxKT09MCk/KHQ9Y1sxOTk3Mj4+Ml18MCwodHwwKSE9MCk6MCl7dm4odCl9aWYoISgoYVsxOTk1Mj4+MF0mMSk9PTApPyhzPWNbMTk5NjA+PjJdfDAsKHN8MCkhPTApOjApe3ZuKHMpfWlmKCEoKGFbMTk5NDA+PjBdJjEpPT0wKT8ocj1jWzE5OTQ4Pj4yXXwwLChyfDApIT0wKTowKXt2bihyKX1pZighKChhWzE5OTI4Pj4wXSYxKT09MCk/KGQ9Y1sxOTkzNj4+Ml18MCwoZHwwKSE9MCk6MCl7dm4oZCl9aWYoISgoYVsxOTkxNj4+MF0mMSk9PTApPyhwPWNbMTk5MjQ+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMTk5MDQ+PjBdJjEpPT0wKT8obz1jWzE5OTEyPj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzE5ODkyPj4wXSYxKT09MCk/KG49Y1sxOTkwMD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsxOTg4MD4+MF0mMSk9PTApPyhtPWNbMTk4ODg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMTk4Njg+PjBdJjEpPT0wKT8obD1jWzE5ODc2Pj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzE5ODU2Pj4wXSYxKT09MCk/KGs9Y1sxOTg2ND4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsxOTg0ND4+MF0mMSk9PTApPyhqPWNbMTk4NTI+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMTk4MzI+PjBdJjEpPT0wKT8oaD1jWzE5ODQwPj4yXXwwLChofDApIT0wKTowKXt2bihoKX1pZighKChhWzE5ODIwPj4wXSYxKT09MCk/KGc9Y1sxOTgyOD4+Ml18MCwoZ3wwKSE9MCk6MCl7dm4oZyl9aWYoISgoYVsxOTgwOD4+MF0mMSk9PTApPyhmPWNbMTk4MTY+PjJdfDAsKGZ8MCkhPTApOjApe3ZuKGYpfWlmKCEoKGFbMTk3OTY+PjBdJjEpPT0wKT8oZT1jWzE5ODA0Pj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pZighKChhWzE5Nzg0Pj4wXSYxKT09MCk/KHE9Y1sxOTc5Mj4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9ZG97aWYoISgoYVsxOTc3Mj4+MF0mMSk9PTApKXtkPWNbMTk3ODA+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE5NzYwPj4wXSYxKT09MCkpe2Q9Y1sxOTc2OD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTk3NDg+PjBdJjEpPT0wKSl7ZD1jWzE5NzU2Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxOTczNj4+MF0mMSk9PTApKXtkPWNbMTk3NDQ+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE5NzI0Pj4wXSYxKT09MCkpe2Q9Y1sxOTczMj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2lmKChhWzE5NzEyXSYxKT09MCl7aT1iO3JldHVybn1kPWNbMTk3MjA+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59dm4oZCk7aT1iO3JldHVybn1mdW5jdGlvbiBTbShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO2I9aTtpZighKChhWzIwMzgwPj4wXSYxKT09MCk/KHE9Y1syMDM4OD4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9aWYoISgoYVsyMDM2OD4+MF0mMSk9PTApPyhwPWNbMjAzNzY+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMjAzNTY+PjBdJjEpPT0wKT8obz1jWzIwMzY0Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzIwMzQ0Pj4wXSYxKT09MCk/KG49Y1syMDM1Mj4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsyMDMzMj4+MF0mMSk9PTApPyhtPWNbMjAzNDA+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMjAzMjA+PjBdJjEpPT0wKT8oZD1jWzIwMzI4Pj4yXXwwLChkfDApIT0wKTowKXt2bihkKX1pZighKChhWzIwMzA4Pj4wXSYxKT09MCk/KGw9Y1syMDMxNj4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoISgoYVsyMDI5Nj4+MF0mMSk9PTApPyhrPWNbMjAzMDQ+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKCEoKGFbMjAyODQ+PjBdJjEpPT0wKT8oaj1jWzIwMjkyPj4yXXwwLChqfDApIT0wKTowKXt2bihqKX1pZighKChhWzIwMjcyPj4wXSYxKT09MCk/KGg9Y1syMDI4MD4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9aWYoISgoYVsyMDI2MD4+MF0mMSk9PTApPyhnPWNbMjAyNjg+PjJdfDAsKGd8MCkhPTApOjApe3ZuKGcpfWlmKCEoKGFbMjAyNDg+PjBdJjEpPT0wKT8oZj1jWzIwMjU2Pj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1pZighKChhWzIwMjM2Pj4wXSYxKT09MCk/KGU9Y1syMDI0ND4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9aWYoKGFbMjAyMjRdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1syMDIzMj4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFRtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7Yj1pO2lmKCEoKGFbMjA5MTY+PjBdJjEpPT0wKT8ocT1jWzIwOTI0Pj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1pZighKChhWzIwOTA0Pj4wXSYxKT09MCk/KHA9Y1syMDkxMj4+Ml18MCwocHwwKSE9MCk6MCl7dm4ocCl9aWYoISgoYVsyMDg5Mj4+MF0mMSk9PTApPyhvPWNbMjA5MDA+PjJdfDAsKG98MCkhPTApOjApe3ZuKG8pfWlmKCEoKGFbMjA4ODA+PjBdJjEpPT0wKT8obj1jWzIwODg4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhWzIwODY4Pj4wXSYxKT09MCk/KG09Y1syMDg3Nj4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoISgoYVsyMDg1Nj4+MF0mMSk9PTApPyhkPWNbMjA4NjQ+PjJdfDAsKGR8MCkhPTApOjApe3ZuKGQpfWlmKCEoKGFbMjA4NDQ+PjBdJjEpPT0wKT8obD1jWzIwODUyPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzIwODMyPj4wXSYxKT09MCk/KGs9Y1syMDg0MD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsyMDgyMD4+MF0mMSk9PTApPyhqPWNbMjA4Mjg+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMjA4MDg+PjBdJjEpPT0wKT8oaD1jWzIwODE2Pj4yXXwwLChofDApIT0wKTowKXt2bihoKX1pZighKChhWzIwNzk2Pj4wXSYxKT09MCk/KGc9Y1syMDgwND4+Ml18MCwoZ3wwKSE9MCk6MCl7dm4oZyl9aWYoISgoYVsyMDc4ND4+MF0mMSk9PTApPyhmPWNbMjA3OTI+PjJdfDAsKGZ8MCkhPTApOjApe3ZuKGYpfWlmKCEoKGFbMjA3NzI+PjBdJjEpPT0wKT8oZT1jWzIwNzgwPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pZigoYVsyMDc2MF0mMSk9PTApe2k9YjtyZXR1cm59ZD1jWzIwNzY4Pj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gVW0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7Zz1pO2k9aSsxNnwwO2g9ZztjW2g+PjJdPWI7Zj0oZnwwKT09MD8yMTI4ODpmO2o9Y1tmPj4yXXwwO2E6ZG97aWYoKGR8MCk9PTApe2lmKChqfDApPT0wKXtrPTA7aT1nO3JldHVybiBrfDB9fWVsc2V7aWYoKGJ8MCk9PTApe2NbaD4+Ml09aH1lbHNle2g9Yn1pZigoZXwwKT09MCl7az0tMjtpPWc7cmV0dXJuIGt8MH1kb3tpZigoanwwKT09MCl7Yj1hW2Q+PjBdfDA7aj1iJjI1NTtpZihiPDwyND4+MjQ+LTEpe2NbaD4+Ml09ajtrPWI8PDI0Pj4yNCE9MCYxO2k9ZztyZXR1cm4ga3wwfWVsc2V7aj1qKyAtMTk0fDA7aWYoaj4+PjA+NTApe2JyZWFrIGF9Yj1lKyAtMXwwO2o9Y1syMTA3Misoajw8Mik+PjJdfDA7ZD1kKzF8MDticmVha319ZWxzZXtiPWV9fXdoaWxlKDApO2I6ZG97aWYoKGJ8MCkhPTApe2s9YVtkPj4wXXwwO2w9KGsmMjU1KT4+PjM7aWYoKGwrIC0xNnxsKyhqPj4yNikpPj4+MD43KXticmVhayBhfXdoaWxlKDEpe2Q9ZCsxfDA7aj0oayYyNTUpKyAtMTI4fGo8PDY7Yj1iKyAtMXwwO2lmKChqfDApPj0wKXticmVha31pZigoYnwwKT09MCl7YnJlYWsgYn1rPWFbZD4+MF18MDtpZigoKGsmMjU1KSsgLTEyOHwwKT4+PjA+NjMpe2JyZWFrIGF9fWNbZj4+Ml09MDtjW2g+PjJdPWo7bD1lLWJ8MDtpPWc7cmV0dXJuIGx8MH19d2hpbGUoMCk7Y1tmPj4yXT1qO2w9LTI7aT1nO3JldHVybiBsfDB9fXdoaWxlKDApO2NbZj4+Ml09MDtjWyhiYigpfDApPj4yXT04NDtsPS0xO2k9ZztyZXR1cm4gbHwwfWZ1bmN0aW9uIFZtKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO2g9aTtrPWNbZT4+Ml18MDtpZigoZ3wwKSE9MD8obD1jW2c+PjJdfDAsKGx8MCkhPTApOjApe2lmKChifDApPT0wKXtqPWY7Zz0xNn1lbHNle2NbZz4+Ml09MDtqPWY7Zz0zNX19ZWxzZXtpZigoYnwwKT09MCl7aj1mO2c9N31lbHNle2o9ZjtnPTZ9fWE6d2hpbGUoMSl7aWYoKGd8MCk9PTYpe2lmKChqfDApPT0wKXtnPTUzO2JyZWFrfXdoaWxlKDEpe2c9YVtrPj4wXXwwO2I6ZG97aWYoKChnJjI1NSkrIC0xfDApPj4+MDwxMjc/KGsmM3wwKT09MCZqPj4+MD4zOjApe2Rve2c9Y1trPj4yXXwwO2lmKCgoZysgLTE2ODQzMDA5fGcpJi0yMTM5MDYyMTQ0fDApIT0wKXtnPWcmMjU1O2JyZWFrIGJ9Y1tiPj4yXT1nJjI1NTtjW2IrND4+Ml09ZFtrKzE+PjBdfDA7Y1tiKzg+PjJdPWRbaysyPj4wXXwwO2w9aztrPWsrNHwwO209YjtiPWIrMTZ8MDtjW20rMTI+PjJdPWRbbCszPj4wXXwwO2o9aisgLTR8MH13aGlsZShqPj4+MD4zKTtnPWFbaz4+MF18MH19d2hpbGUoMCk7bD1nJjI1NTtpZighKChsKyAtMXwwKT4+PjA8MTI3KSl7YnJlYWt9Y1tiPj4yXT1sO2o9aisgLTF8MDtpZigoanwwKT09MCl7Zz01MzticmVhayBhfWVsc2V7Yj1iKzR8MDtrPWsrMXwwfX1sPWwrIC0xOTR8MDtpZihsPj4+MD41MCl7bD1nO2c9NDc7YnJlYWt9bD1jWzIxMDcyKyhsPDwyKT4+Ml18MDtrPWsrMXwwO2c9MzU7Y29udGludWV9ZWxzZSBpZigoZ3wwKT09Nyl7bD1hW2s+PjBdfDA7aWYoKChsJjI1NSkrIC0xfDApPj4+MDwxMjc/KGsmM3wwKT09MDowKXtsPWNbaz4+Ml18MDtpZigoKGwrIC0xNjg0MzAwOXxsKSYtMjEzOTA2MjE0NHwwKT09MCl7ZG97az1rKzR8MDtqPWorIC00fDA7bD1jW2s+PjJdfDB9d2hpbGUoKChsKyAtMTY4NDMwMDl8bCkmLTIxMzkwNjIxNDR8MCk9PTApfWc9bCYyNTU7bD1sJjI1NX1lbHNle2c9bH1sPWwmMjU1O2lmKChsKyAtMXwwKT4+PjA8MTI3KXtqPWorIC0xfDA7az1rKzF8MDtnPTc7Y29udGludWV9bD1sKyAtMTk0fDA7aWYobD4+PjA+NTApe2w9ZztnPTQ3O2JyZWFrfWw9Y1syMTA3MisobDw8Mik+PjJdfDA7az1rKzF8MDtnPTE2O2NvbnRpbnVlfWVsc2UgaWYoKGd8MCk9PTE2KXttPShkW2s+PjBdfDApPj4+MztpZigobSsgLTE2fG0rKGw+PjI2KSk+Pj4wPjcpe2c9MTc7YnJlYWt9Zz1rKzF8MDtpZigobCYzMzU1NDQzMnwwKSE9MCl7aWYoKChkW2c+PjBdfDApKyAtMTI4fDApPj4+MD42Myl7Zz0yMDticmVha31nPWsrMnwwO2lmKChsJjUyNDI4OHwwKT09MCl7az1nfWVsc2V7aWYoKChkW2c+PjBdfDApKyAtMTI4fDApPj4+MD42Myl7Zz0yMzticmVha31rPWsrM3wwfX1lbHNle2s9Z31qPWorIC0xfDA7Zz03O2NvbnRpbnVlfWVsc2UgaWYoKGd8MCk9PTM1KXttPWRbaz4+MF18MDtnPW0+Pj4zO2lmKChnKyAtMTZ8ZysobD4+MjYpKT4+PjA+Nyl7Zz0zNjticmVha31nPWsrMXwwO2w9bSsgLTEyOHxsPDw2O2lmKChsfDApPDApe209KGRbZz4+MF18MCkrIC0xMjh8MDtpZihtPj4+MD42Myl7Zz0zOTticmVha31nPWsrMnwwO2w9bXxsPDw2O2lmKChsfDApPDApe2c9KGRbZz4+MF18MCkrIC0xMjh8MDtpZihnPj4+MD42Myl7Zz00MjticmVha31sPWd8bDw8NjtrPWsrM3wwfWVsc2V7az1nfX1lbHNle2s9Z31jW2I+PjJdPWw7Yj1iKzR8MDtqPWorIC0xfDA7Zz02O2NvbnRpbnVlfX1pZigoZ3wwKT09MTcpe2s9aysgLTF8MDtnPTQ1fWVsc2UgaWYoKGd8MCk9PTIwKXtrPWsrIC0xfDA7Zz00NX1lbHNlIGlmKChnfDApPT0yMyl7az1rKyAtMXwwO2c9NDV9ZWxzZSBpZigoZ3wwKT09MzYpe2s9aysgLTF8MDtnPTQ1fWVsc2UgaWYoKGd8MCk9PTM5KXtrPWsrIC0xfDA7Zz00NX1lbHNlIGlmKChnfDApPT00Mil7az1rKyAtMXwwO2c9NDV9ZWxzZSBpZigoZ3wwKT09NTMpe2k9aDtyZXR1cm4gZnwwfWlmKChnfDApPT00NSl7aWYoKGx8MCk9PTApe2w9YVtrPj4wXXwwO2c9NDd9fWlmKChnfDApPT00Nyl7aWYobDw8MjQ+PjI0PT0wKXtpZigoYnwwKSE9MCl7Y1tiPj4yXT0wO2NbZT4+Ml09MH1tPWYtanwwO2k9aDtyZXR1cm4gbXwwfX1jWyhiYigpfDApPj4yXT04NDtpZigoYnwwKT09MCl7bT0tMTtpPWg7cmV0dXJuIG18MH1jW2U+PjJdPWs7bT0tMTtpPWg7cmV0dXJuIG18MH1mdW5jdGlvbiBXbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT1pO2lmKChifDApPT0wKXtiPTE7aT1lO3JldHVybiBifDB9aWYoZD4+PjA8MTI4KXthW2I+PjBdPWQ7Yj0xO2k9ZTtyZXR1cm4gYnwwfWlmKGQ+Pj4wPDIwNDgpe2FbYj4+MF09ZD4+PjZ8MTkyO2FbYisxPj4wXT1kJjYzfDEyODtiPTI7aT1lO3JldHVybiBifDB9aWYoZD4+PjA8NTUyOTZ8KGQrIC01NzM0NHwwKT4+PjA8ODE5Mil7YVtiPj4wXT1kPj4+MTJ8MjI0O2FbYisxPj4wXT1kPj4+NiY2M3wxMjg7YVtiKzI+PjBdPWQmNjN8MTI4O2I9MztpPWU7cmV0dXJuIGJ8MH1pZigoZCsgLTY1NTM2fDApPj4+MDwxMDQ4NTc2KXthW2I+PjBdPWQ+Pj4xOHwyNDA7YVtiKzE+PjBdPWQ+Pj4xMiY2M3wxMjg7YVtiKzI+PjBdPWQ+Pj42JjYzfDEyODthW2IrMz4+MF09ZCY2M3wxMjg7Yj00O2k9ZTtyZXR1cm4gYnwwfWVsc2V7Y1soYmIoKXwwKT4+Ml09ODQ7Yj0tMTtpPWU7cmV0dXJuIGJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBYbShhKXthPWF8MDt2YXIgYj0wO2I9aTtSYihhfDApO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFltKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBabShhKXthPWF8MDtyZXR1cm4gMjEzMjB9ZnVuY3Rpb24gX20oYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uICRtKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBhbihhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gYm4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gY24oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZG4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZW4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZm4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZ24oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybihhfDApPT0oYnwwKXwwfWZ1bmN0aW9uIGhuKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrNjR8MDtmPWU7aWYoKGF8MCk9PShifDApKXtoPTE7aT1lO3JldHVybiBofDB9aWYoKGJ8MCk9PTApe2g9MDtpPWU7cmV0dXJuIGh8MH1iPW5uKGIsMjE0ODgpfDA7aWYoKGJ8MCk9PTApe2g9MDtpPWU7cmV0dXJuIGh8MH1oPWYrMHwwO2c9aCs1NnwwO2Rve2NbaD4+Ml09MDtoPWgrNHwwfXdoaWxlKChofDApPChnfDApKTtjW2Y+PjJdPWI7Y1tmKzg+PjJdPWE7Y1tmKzEyPj4yXT0tMTtjW2YrNDg+PjJdPTE7emNbY1soY1tiPj4yXXwwKSsyOD4+Ml0mMzFdKGIsZixjW2Q+PjJdfDAsMSk7aWYoKGNbZisyND4+Ml18MCkhPTEpe2g9MDtpPWU7cmV0dXJuIGh8MH1jW2Q+PjJdPWNbZisxNj4+Ml07aD0xO2k9ZTtyZXR1cm4gaHwwfWZ1bmN0aW9uIGpuKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wO2c9aTtpZigoY1tkKzg+PjJdfDApIT0oYnwwKSl7aT1nO3JldHVybn1iPWQrMTZ8MDtoPWNbYj4+Ml18MDtpZigoaHwwKT09MCl7Y1tiPj4yXT1lO2NbZCsyND4+Ml09ZjtjW2QrMzY+PjJdPTE7aT1nO3JldHVybn1pZigoaHwwKSE9KGV8MCkpe2g9ZCszNnwwO2NbaD4+Ml09KGNbaD4+Ml18MCkrMTtjW2QrMjQ+PjJdPTI7YVtkKzU0Pj4wXT0xO2k9ZztyZXR1cm59ZT1kKzI0fDA7aWYoKGNbZT4+Ml18MCkhPTIpe2k9ZztyZXR1cm59Y1tlPj4yXT1mO2k9ZztyZXR1cm59ZnVuY3Rpb24ga24oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTA7Zz1pO2lmKChifDApIT0oY1tkKzg+PjJdfDApKXtoPWNbYis4Pj4yXXwwO3pjW2NbKGNbaD4+Ml18MCkrMjg+PjJdJjMxXShoLGQsZSxmKTtpPWc7cmV0dXJufWI9ZCsxNnwwO2g9Y1tiPj4yXXwwO2lmKChofDApPT0wKXtjW2I+PjJdPWU7Y1tkKzI0Pj4yXT1mO2NbZCszNj4+Ml09MTtpPWc7cmV0dXJufWlmKChofDApIT0oZXwwKSl7aD1kKzM2fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2NbZCsyND4+Ml09MjthW2QrNTQ+PjBdPTE7aT1nO3JldHVybn1lPWQrMjR8MDtpZigoY1tlPj4yXXwwKSE9Mil7aT1nO3JldHVybn1jW2U+PjJdPWY7aT1nO3JldHVybn1mdW5jdGlvbiBsbihiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2lmKChifDApPT0oY1tkKzg+PjJdfDApKXtiPWQrMTZ8MDtoPWNbYj4+Ml18MDtpZigoaHwwKT09MCl7Y1tiPj4yXT1lO2NbZCsyND4+Ml09ZjtjW2QrMzY+PjJdPTE7aT1nO3JldHVybn1pZigoaHwwKSE9KGV8MCkpe2w9ZCszNnwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtjW2QrMjQ+PjJdPTI7YVtkKzU0Pj4wXT0xO2k9ZztyZXR1cm59ZT1kKzI0fDA7aWYoKGNbZT4+Ml18MCkhPTIpe2k9ZztyZXR1cm59Y1tlPj4yXT1mO2k9ZztyZXR1cm59aj1jW2IrMTI+PjJdfDA7aD1iKyhqPDwzKSsxNnwwO2s9Y1tiKzIwPj4yXXwwO2w9az4+ODtpZigoayYxfDApIT0wKXtsPWNbKGNbZT4+Ml18MCkrbD4+Ml18MH1tPWNbYisxNj4+Ml18MDt6Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSYzMV0obSxkLGUrbHwwLChrJjJ8MCkhPTA/ZjoyKTtpZigoanwwKTw9MSl7aT1nO3JldHVybn1qPWQrNTR8MDtrPWIrMjR8MDt3aGlsZSgxKXtiPWNbays0Pj4yXXwwO2w9Yj4+ODtpZigoYiYxfDApIT0wKXtsPWNbKGNbZT4+Ml18MCkrbD4+Ml18MH1tPWNbaz4+Ml18MDt6Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSYzMV0obSxkLGUrbHwwLChiJjJ8MCkhPTA/ZjoyKTtpZigoYVtqPj4wXXwwKSE9MCl7Zj0xNjticmVha31rPWsrOHwwO2lmKCEoaz4+PjA8aD4+PjApKXtmPTE2O2JyZWFrfX1pZigoZnwwKT09MTYpe2k9ZztyZXR1cm59fWZ1bmN0aW9uIG1uKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2k9aSs2NHwwO2g9ZTtjW2Q+PjJdPWNbY1tkPj4yXT4+Ml07aWYoISgoYXwwKT09KGJ8MCl8KGJ8MCk9PTIxNzkyKSl7aWYoKChifDApIT0wPyhrPW5uKGIsMjE2MDApfDAsKGt8MCkhPTApOjApPyhjW2srOD4+Ml0mfmNbYSs4Pj4yXXwwKT09MDowKXtiPWNbYSsxMj4+Ml18MDtrPWsrMTJ8MDtpZighKChifDApPT0yMTc3Nj8xOihifDApPT0oY1trPj4yXXwwKSkpe2lmKCgoKGJ8MCkhPTA/KGc9bm4oYiwyMTQ4OCl8MCwoZ3wwKSE9MCk6MCk/KGo9Y1trPj4yXXwwLChqfDApIT0wKTowKT8oZj1ubihqLDIxNDg4KXwwLChmfDApIT0wKTowKXtrPWgrMHwwO2o9ays1NnwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChqfDApKTtjW2g+PjJdPWY7Y1toKzg+PjJdPWc7Y1toKzEyPj4yXT0tMTtjW2grNDg+PjJdPTE7emNbY1soY1tmPj4yXXwwKSsyOD4+Ml0mMzFdKGYsaCxjW2Q+PjJdfDAsMSk7aWYoKGNbaCsyND4+Ml18MCk9PTEpe2NbZD4+Ml09Y1toKzE2Pj4yXTtkPTF9ZWxzZXtkPTB9fWVsc2V7ZD0wfX1lbHNle2Q9MX19ZWxzZXtkPTB9fWVsc2V7ZD0xfWk9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIG5uKGQsZSl7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO2Y9aTtpPWkrNjR8MDttPWY7Zz1jW2Q+PjJdfDA7aD1kKyhjW2crIC04Pj4yXXwwKXwwO2c9Y1tnKyAtND4+Ml18MDtjW20+PjJdPWU7Y1ttKzQ+PjJdPWQ7Y1ttKzg+PjJdPTIxNDMyO3A9bSsxMnwwO249bSsxNnwwO289bSsyMHwwO2o9bSsyNHwwO2Q9bSsyOHwwO2s9bSszMnwwO2w9bSs0MHwwO3I9KGd8MCk9PShlfDApO2U9cCswfDA7cT1lKzQwfDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KHF8MCkpO2JbcCs0MD4+MV09MDthW3ArNDI+PjBdPTA7ZG97aWYocil7Y1ttKzQ4Pj4yXT0xO3djW2NbKGNbZz4+Ml18MCkrMjA+PjJdJjYzXShnLG0saCxoLDEsMCk7ZD0oY1tqPj4yXXwwKT09MT9oOjB9ZWxzZXtqY1tjWyhjW2c+PjJdfDApKzI0Pj4yXSYzMV0oZyxtLGgsMSwwKTtnPWNbbSszNj4+Ml18MDtpZigoZ3wwKT09MCl7aWYoKGNbbD4+Ml18MCkhPTEpe2Q9MDticmVha31pZigoY1tkPj4yXXwwKSE9MSl7ZD0wO2JyZWFrfWQ9KGNbaz4+Ml18MCk9PTE/Y1tvPj4yXXwwOjA7YnJlYWt9ZWxzZSBpZigoZ3wwKSE9MSl7ZD0wO2JyZWFrfWlmKChjW2o+PjJdfDApIT0xKXtpZigoY1tsPj4yXXwwKSE9MCl7ZD0wO2JyZWFrfWlmKChjW2Q+PjJdfDApIT0xKXtkPTA7YnJlYWt9aWYoKGNbaz4+Ml18MCkhPTEpe2Q9MDticmVha319ZD1jW24+PjJdfDB9fXdoaWxlKDApO2k9ZjtyZXR1cm4gZHwwfWZ1bmN0aW9uIG9uKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtoPWk7aWYoKGJ8MCk9PShjW2QrOD4+Ml18MCkpe2lmKChjW2QrND4+Ml18MCkhPShlfDApKXtpPWg7cmV0dXJufWU9ZCsyOHwwO2lmKChjW2U+PjJdfDApPT0xKXtpPWg7cmV0dXJufWNbZT4+Ml09ZjtpPWg7cmV0dXJufWlmKChifDApPT0oY1tkPj4yXXwwKSl7aWYoKGNbZCsxNj4+Ml18MCkhPShlfDApPyhsPWQrMjB8MCwoY1tsPj4yXXwwKSE9KGV8MCkpOjApe2NbZCszMj4+Ml09ZjtrPWQrNDR8MDtpZigoY1trPj4yXXwwKT09NCl7aT1oO3JldHVybn13PWNbYisxMj4+Ml18MDtwPWIrKHc8PDMpKzE2fDA7YTpkb3tpZigod3wwKT4wKXtuPWQrNTJ8MDtxPWQrNTN8MDtvPWQrNTR8MDt0PWIrOHwwO3I9ZCsyNHwwO3U9MDtzPTA7Yj1iKzE2fDA7Yjpkb3thW24+PjBdPTA7YVtxPj4wXT0wO3Y9Y1tiKzQ+PjJdfDA7dz12Pj44O2lmKCh2JjF8MCkhPTApe3c9Y1soY1tlPj4yXXwwKSt3Pj4yXXwwfXg9Y1tiPj4yXXwwO3djW2NbKGNbeD4+Ml18MCkrMjA+PjJdJjYzXSh4LGQsZSxlK3d8MCwyLSh2Pj4+MSYxKXwwLGcpO2lmKChhW28+PjBdfDApIT0wKXticmVha31kb3tpZigoYVtxPj4wXXwwKSE9MCl7aWYoKGFbbj4+MF18MCk9PTApe2lmKChjW3Q+PjJdJjF8MCk9PTApe3M9MTticmVhayBifWVsc2V7cz0xO2JyZWFrfX1pZigoY1tyPj4yXXwwKT09MSl7Yj0yNzticmVhayBhfWlmKChjW3Q+PjJdJjJ8MCk9PTApe2I9Mjc7YnJlYWsgYX1lbHNle3U9MTtzPTF9fX13aGlsZSgwKTtiPWIrOHwwfXdoaWxlKGI+Pj4wPHA+Pj4wKTtpZih1KXtqPXM7Yj0yNn1lbHNle209cztiPTIzfX1lbHNle209MDtiPTIzfX13aGlsZSgwKTtpZigoYnwwKT09MjMpe2NbbD4+Ml09ZTt4PWQrNDB8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoKGNbZCszNj4+Ml18MCk9PTE/KGNbZCsyND4+Ml18MCk9PTI6MCl7YVtkKzU0Pj4wXT0xO2lmKG0pe2I9Mjd9ZWxzZXtiPTI4fX1lbHNle2o9bTtiPTI2fX1pZigoYnwwKT09MjYpe2lmKGope2I9Mjd9ZWxzZXtiPTI4fX1pZigoYnwwKT09Mjcpe2Nbaz4+Ml09MztpPWg7cmV0dXJufWVsc2UgaWYoKGJ8MCk9PTI4KXtjW2s+PjJdPTQ7aT1oO3JldHVybn19aWYoKGZ8MCkhPTEpe2k9aDtyZXR1cm59Y1tkKzMyPj4yXT0xO2k9aDtyZXR1cm59bT1jW2IrMTI+PjJdfDA7aj1iKyhtPDwzKSsxNnwwO2w9Y1tiKzIwPj4yXXwwO249bD4+ODtpZigobCYxfDApIT0wKXtuPWNbKGNbZT4+Ml18MCkrbj4+Ml18MH14PWNbYisxNj4+Ml18MDtqY1tjWyhjW3g+PjJdfDApKzI0Pj4yXSYzMV0oeCxkLGUrbnwwLChsJjJ8MCkhPTA/ZjoyLGcpO2w9YisyNHwwO2lmKChtfDApPD0xKXtpPWg7cmV0dXJufW09Y1tiKzg+PjJdfDA7aWYoKG0mMnwwKT09MD8oaz1kKzM2fDAsKGNbaz4+Ml18MCkhPTEpOjApe2lmKChtJjF8MCk9PTApe209ZCs1NHwwO2I9bDt3aGlsZSgxKXtpZigoYVttPj4wXXwwKSE9MCl7Yj01MzticmVha31pZigoY1trPj4yXXwwKT09MSl7Yj01MzticmVha31uPWNbYis0Pj4yXXwwO289bj4+ODtpZigobiYxfDApIT0wKXtvPWNbKGNbZT4+Ml18MCkrbz4+Ml18MH14PWNbYj4+Ml18MDtqY1tjWyhjW3g+PjJdfDApKzI0Pj4yXSYzMV0oeCxkLGUrb3wwLChuJjJ8MCkhPTA/ZjoyLGcpO2I9Yis4fDA7aWYoIShiPj4+MDxqPj4+MCkpe2I9NTM7YnJlYWt9fWlmKChifDApPT01Myl7aT1oO3JldHVybn19bj1kKzI0fDA7bz1kKzU0fDA7Yj1sO3doaWxlKDEpe2lmKChhW28+PjBdfDApIT0wKXtiPTUzO2JyZWFrfWlmKChjW2s+PjJdfDApPT0xPyhjW24+PjJdfDApPT0xOjApe2I9NTM7YnJlYWt9bT1jW2IrND4+Ml18MDtwPW0+Pjg7aWYoKG0mMXwwKSE9MCl7cD1jWyhjW2U+PjJdfDApK3A+PjJdfDB9eD1jW2I+PjJdfDA7amNbY1soY1t4Pj4yXXwwKSsyND4+Ml0mMzFdKHgsZCxlK3B8MCwobSYyfDApIT0wP2Y6MixnKTtiPWIrOHwwO2lmKCEoYj4+PjA8aj4+PjApKXtiPTUzO2JyZWFrfX1pZigoYnwwKT09NTMpe2k9aDtyZXR1cm59fWs9ZCs1NHwwO3doaWxlKDEpe2lmKChhW2s+PjBdfDApIT0wKXtiPTUzO2JyZWFrfW09Y1tsKzQ+PjJdfDA7Yj1tPj44O2lmKChtJjF8MCkhPTApe2I9Y1soY1tlPj4yXXwwKStiPj4yXXwwfXg9Y1tsPj4yXXwwO2pjW2NbKGNbeD4+Ml18MCkrMjQ+PjJdJjMxXSh4LGQsZStifDAsKG0mMnwwKSE9MD9mOjIsZyk7bD1sKzh8MDtpZighKGw+Pj4wPGo+Pj4wKSl7Yj01MzticmVha319aWYoKGJ8MCk9PTUzKXtpPWg7cmV0dXJufX1mdW5jdGlvbiBwbihiLGQsZSxmLGcpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO2g9aTtpZigoYnwwKT09KGNbZCs4Pj4yXXwwKSl7aWYoKGNbZCs0Pj4yXXwwKSE9KGV8MCkpe2k9aDtyZXR1cm59aj1kKzI4fDA7aWYoKGNbaj4+Ml18MCk9PTEpe2k9aDtyZXR1cm59Y1tqPj4yXT1mO2k9aDtyZXR1cm59aWYoKGJ8MCkhPShjW2Q+PjJdfDApKXtsPWNbYis4Pj4yXXwwO2pjW2NbKGNbbD4+Ml18MCkrMjQ+PjJdJjMxXShsLGQsZSxmLGcpO2k9aDtyZXR1cm59aWYoKGNbZCsxNj4+Ml18MCkhPShlfDApPyhrPWQrMjB8MCwoY1trPj4yXXwwKSE9KGV8MCkpOjApe2NbZCszMj4+Ml09ZjtmPWQrNDR8MDtpZigoY1tmPj4yXXwwKT09NCl7aT1oO3JldHVybn1sPWQrNTJ8MDthW2w+PjBdPTA7bT1kKzUzfDA7YVttPj4wXT0wO2I9Y1tiKzg+PjJdfDA7d2NbY1soY1tiPj4yXXwwKSsyMD4+Ml0mNjNdKGIsZCxlLGUsMSxnKTtpZigoYVttPj4wXXwwKSE9MCl7aWYoKGFbbD4+MF18MCk9PTApe2I9MTtqPTEzfX1lbHNle2I9MDtqPTEzfWRve2lmKChqfDApPT0xMyl7Y1trPj4yXT1lO209ZCs0MHwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtpZigoY1tkKzM2Pj4yXXwwKT09MT8oY1tkKzI0Pj4yXXwwKT09MjowKXthW2QrNTQ+PjBdPTE7aWYoYil7YnJlYWt9fWVsc2V7aj0xNn1pZigoanwwKT09MTY/YjowKXticmVha31jW2Y+PjJdPTQ7aT1oO3JldHVybn19d2hpbGUoMCk7Y1tmPj4yXT0zO2k9aDtyZXR1cm59aWYoKGZ8MCkhPTEpe2k9aDtyZXR1cm59Y1tkKzMyPj4yXT0xO2k9aDtyZXR1cm59ZnVuY3Rpb24gcW4oYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wO2c9aTtpZigoY1tkKzg+PjJdfDApPT0oYnwwKSl7aWYoKGNbZCs0Pj4yXXwwKSE9KGV8MCkpe2k9ZztyZXR1cm59ZD1kKzI4fDA7aWYoKGNbZD4+Ml18MCk9PTEpe2k9ZztyZXR1cm59Y1tkPj4yXT1mO2k9ZztyZXR1cm59aWYoKGNbZD4+Ml18MCkhPShifDApKXtpPWc7cmV0dXJufWlmKChjW2QrMTY+PjJdfDApIT0oZXwwKT8oaD1kKzIwfDAsKGNbaD4+Ml18MCkhPShlfDApKTowKXtjW2QrMzI+PjJdPWY7Y1toPj4yXT1lO2I9ZCs0MHwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrMTtpZigoY1tkKzM2Pj4yXXwwKT09MT8oY1tkKzI0Pj4yXXwwKT09MjowKXthW2QrNTQ+PjBdPTF9Y1tkKzQ0Pj4yXT00O2k9ZztyZXR1cm59aWYoKGZ8MCkhPTEpe2k9ZztyZXR1cm59Y1tkKzMyPj4yXT0xO2k9ZztyZXR1cm59ZnVuY3Rpb24gcm4oYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtqPWk7aWYoKGJ8MCkhPShjW2QrOD4+Ml18MCkpe209ZCs1MnwwO2w9YVttPj4wXXwwO289ZCs1M3wwO249YVtvPj4wXXwwO3E9Y1tiKzEyPj4yXXwwO2s9YisocTw8MykrMTZ8MDthW20+PjBdPTA7YVtvPj4wXT0wO3A9Y1tiKzIwPj4yXXwwO3I9cD4+ODtpZigocCYxfDApIT0wKXtyPWNbKGNbZj4+Ml18MCkrcj4+Ml18MH10PWNbYisxNj4+Ml18MDt3Y1tjWyhjW3Q+PjJdfDApKzIwPj4yXSY2M10odCxkLGUsZityfDAsKHAmMnwwKSE9MD9nOjIsaCk7YTpkb3tpZigocXwwKT4xKXtxPWQrMjR8MDtwPWIrOHwwO3I9ZCs1NHwwO2I9YisyNHwwO2Rve2lmKChhW3I+PjBdfDApIT0wKXticmVhayBhfWlmKChhW20+PjBdfDApPT0wKXtpZigoYVtvPj4wXXwwKSE9MD8oY1twPj4yXSYxfDApPT0wOjApe2JyZWFrIGF9fWVsc2V7aWYoKGNbcT4+Ml18MCk9PTEpe2JyZWFrIGF9aWYoKGNbcD4+Ml0mMnwwKT09MCl7YnJlYWsgYX19YVttPj4wXT0wO2Fbbz4+MF09MDtzPWNbYis0Pj4yXXwwO3Q9cz4+ODtpZigocyYxfDApIT0wKXt0PWNbKGNbZj4+Ml18MCkrdD4+Ml18MH11PWNbYj4+Ml18MDt3Y1tjWyhjW3U+PjJdfDApKzIwPj4yXSY2M10odSxkLGUsZit0fDAsKHMmMnwwKSE9MD9nOjIsaCk7Yj1iKzh8MH13aGlsZShiPj4+MDxrPj4+MCl9fXdoaWxlKDApO2FbbT4+MF09bDthW28+PjBdPW47aT1qO3JldHVybn1hW2QrNTM+PjBdPTE7aWYoKGNbZCs0Pj4yXXwwKSE9KGZ8MCkpe2k9ajtyZXR1cm59YVtkKzUyPj4wXT0xO2s9ZCsxNnwwO2Y9Y1trPj4yXXwwO2lmKChmfDApPT0wKXtjW2s+PjJdPWU7Y1tkKzI0Pj4yXT1nO2NbZCszNj4+Ml09MTtpZighKChnfDApPT0xPyhjW2QrNDg+PjJdfDApPT0xOjApKXtpPWo7cmV0dXJufWFbZCs1ND4+MF09MTtpPWo7cmV0dXJufWlmKChmfDApIT0oZXwwKSl7dT1kKzM2fDA7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxO2FbZCs1ND4+MF09MTtpPWo7cmV0dXJufWU9ZCsyNHwwO2s9Y1tlPj4yXXwwO2lmKChrfDApPT0yKXtjW2U+PjJdPWd9ZWxzZXtnPWt9aWYoISgoZ3wwKT09MT8oY1tkKzQ4Pj4yXXwwKT09MTowKSl7aT1qO3JldHVybn1hW2QrNTQ+PjBdPTE7aT1qO3JldHVybn1mdW5jdGlvbiBzbihiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MDtqPWk7aWYoKGJ8MCkhPShjW2QrOD4+Ml18MCkpe2I9Y1tiKzg+PjJdfDA7d2NbY1soY1tiPj4yXXwwKSsyMD4+Ml0mNjNdKGIsZCxlLGYsZyxoKTtpPWo7cmV0dXJufWFbZCs1Mz4+MF09MTtpZigoY1tkKzQ+PjJdfDApIT0oZnwwKSl7aT1qO3JldHVybn1hW2QrNTI+PjBdPTE7Yj1kKzE2fDA7Zj1jW2I+PjJdfDA7aWYoKGZ8MCk9PTApe2NbYj4+Ml09ZTtjW2QrMjQ+PjJdPWc7Y1tkKzM2Pj4yXT0xO2lmKCEoKGd8MCk9PTE/KGNbZCs0OD4+Ml18MCk9PTE6MCkpe2k9ajtyZXR1cm59YVtkKzU0Pj4wXT0xO2k9ajtyZXR1cm59aWYoKGZ8MCkhPShlfDApKXtoPWQrMzZ8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7YVtkKzU0Pj4wXT0xO2k9ajtyZXR1cm59ZT1kKzI0fDA7Yj1jW2U+PjJdfDA7aWYoKGJ8MCk9PTIpe2NbZT4+Ml09Z31lbHNle2c9Yn1pZighKChnfDApPT0xPyhjW2QrNDg+PjJdfDApPT0xOjApKXtpPWo7cmV0dXJufWFbZCs1ND4+MF09MTtpPWo7cmV0dXJufWZ1bmN0aW9uIHRuKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtoPWk7aWYoKGNbZCs4Pj4yXXwwKSE9KGJ8MCkpe2k9aDtyZXR1cm59YVtkKzUzPj4wXT0xO2lmKChjW2QrND4+Ml18MCkhPShmfDApKXtpPWg7cmV0dXJufWFbZCs1Mj4+MF09MTtmPWQrMTZ8MDtiPWNbZj4+Ml18MDtpZigoYnwwKT09MCl7Y1tmPj4yXT1lO2NbZCsyND4+Ml09ZztjW2QrMzY+PjJdPTE7aWYoISgoZ3wwKT09MT8oY1tkKzQ4Pj4yXXwwKT09MTowKSl7aT1oO3JldHVybn1hW2QrNTQ+PjBdPTE7aT1oO3JldHVybn1pZigoYnwwKSE9KGV8MCkpe2I9ZCszNnwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrMTthW2QrNTQ+PjBdPTE7aT1oO3JldHVybn1lPWQrMjR8MDtmPWNbZT4+Ml18MDtpZigoZnwwKT09Mil7Y1tlPj4yXT1nfWVsc2V7Zz1mfWlmKCEoKGd8MCk9PTE/KGNbZCs0OD4+Ml18MCk9PTE6MCkpe2k9aDtyZXR1cm59YVtkKzU0Pj4wXT0xO2k9aDtyZXR1cm59ZnVuY3Rpb24gdW4oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtiPWk7ZG97aWYoYT4+PjA8MjQ1KXtpZihhPj4+MDwxMSl7YT0xNn1lbHNle2E9YSsxMSYtOH12PWE+Pj4zO3A9Y1s1NTQyXXwwO3c9cD4+PnY7aWYoKHcmM3wwKSE9MCl7aD0odyYxXjEpK3Z8MDtnPWg8PDE7ZT0yMjIwOCsoZzw8Mil8MDtnPTIyMjA4KyhnKzI8PDIpfDA7aj1jW2c+PjJdfDA7ZD1qKzh8MDtmPWNbZD4+Ml18MDtkb3tpZigoZXwwKSE9KGZ8MCkpe2lmKGY+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9az1mKzEyfDA7aWYoKGNbaz4+Ml18MCk9PShqfDApKXtjW2s+PjJdPWU7Y1tnPj4yXT1mO2JyZWFrfWVsc2V7WGIoKX19ZWxzZXtjWzU1NDJdPXAmfigxPDxoKX19d2hpbGUoMCk7SD1oPDwzO2Nbais0Pj4yXT1IfDM7SD1qKyhIfDQpfDA7Y1tIPj4yXT1jW0g+PjJdfDE7SD1kO2k9YjtyZXR1cm4gSHwwfWlmKGE+Pj4wPihjWzIyMTc2Pj4yXXwwKT4+PjApe2lmKCh3fDApIT0wKXtoPTI8PHY7aD13PDx2JihofDAtaCk7aD0oaCYwLWgpKyAtMXwwO2Q9aD4+PjEyJjE2O2g9aD4+PmQ7Zj1oPj4+NSY4O2g9aD4+PmY7Zz1oPj4+MiY0O2g9aD4+Pmc7ZT1oPj4+MSYyO2g9aD4+PmU7aj1oPj4+MSYxO2o9KGZ8ZHxnfGV8aikrKGg+Pj5qKXwwO2g9ajw8MTtlPTIyMjA4KyhoPDwyKXwwO2g9MjIyMDgrKGgrMjw8Mil8MDtnPWNbaD4+Ml18MDtkPWcrOHwwO2Y9Y1tkPj4yXXwwO2Rve2lmKChlfDApIT0oZnwwKSl7aWYoZj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1rPWYrMTJ8MDtpZigoY1trPj4yXXwwKT09KGd8MCkpe2Nbaz4+Ml09ZTtjW2g+PjJdPWY7YnJlYWt9ZWxzZXtYYigpfX1lbHNle2NbNTU0Ml09cCZ+KDE8PGopfX13aGlsZSgwKTtoPWo8PDM7Zj1oLWF8MDtjW2crND4+Ml09YXwzO2U9ZythfDA7Y1tnKyhhfDQpPj4yXT1mfDE7Y1tnK2g+PjJdPWY7aD1jWzIyMTc2Pj4yXXwwO2lmKChofDApIT0wKXtnPWNbMjIxODg+PjJdfDA7az1oPj4+MztqPWs8PDE7aD0yMjIwOCsoajw8Mil8MDtsPWNbNTU0Ml18MDtrPTE8PGs7aWYoKGwma3wwKSE9MCl7aj0yMjIwOCsoaisyPDwyKXwwO2s9Y1tqPj4yXXwwO2lmKGs+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtEPWo7Qz1rfX1lbHNle2NbNTU0Ml09bHxrO0Q9MjIyMDgrKGorMjw8Mil8MDtDPWh9Y1tEPj4yXT1nO2NbQysxMj4+Ml09ZztjW2crOD4+Ml09QztjW2crMTI+PjJdPWh9Y1syMjE3Nj4+Ml09ZjtjWzIyMTg4Pj4yXT1lO0g9ZDtpPWI7cmV0dXJuIEh8MH1wPWNbMjIxNzI+PjJdfDA7aWYoKHB8MCkhPTApe2U9KHAmMC1wKSsgLTF8MDtHPWU+Pj4xMiYxNjtlPWU+Pj5HO0Y9ZT4+PjUmODtlPWU+Pj5GO0g9ZT4+PjImNDtlPWU+Pj5IO2Y9ZT4+PjEmMjtlPWU+Pj5mO2Q9ZT4+PjEmMTtkPWNbMjI0NzIrKChGfEd8SHxmfGQpKyhlPj4+ZCk8PDIpPj4yXXwwO2U9KGNbZCs0Pj4yXSYtOCktYXwwO2Y9ZDt3aGlsZSgxKXtnPWNbZisxNj4+Ml18MDtpZigoZ3wwKT09MCl7Zz1jW2YrMjA+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfX1mPShjW2crND4+Ml0mLTgpLWF8MDtIPWY+Pj4wPGU+Pj4wO2U9SD9mOmU7Zj1nO2Q9SD9nOmR9aD1jWzIyMTg0Pj4yXXwwO2lmKGQ+Pj4wPGg+Pj4wKXtYYigpfWY9ZCthfDA7aWYoIShkPj4+MDxmPj4+MCkpe1hiKCl9Zz1jW2QrMjQ+PjJdfDA7az1jW2QrMTI+PjJdfDA7ZG97aWYoKGt8MCk9PShkfDApKXtrPWQrMjB8MDtqPWNbaz4+Ml18MDtpZigoanwwKT09MCl7az1kKzE2fDA7aj1jW2s+PjJdfDA7aWYoKGp8MCk9PTApe0I9MDticmVha319d2hpbGUoMSl7bD1qKzIwfDA7bT1jW2w+PjJdfDA7aWYoKG18MCkhPTApe2o9bTtrPWw7Y29udGludWV9bT1qKzE2fDA7bD1jW20+PjJdfDA7aWYoKGx8MCk9PTApe2JyZWFrfWVsc2V7aj1sO2s9bX19aWYoaz4+PjA8aD4+PjApe1hiKCl9ZWxzZXtjW2s+PjJdPTA7Qj1qO2JyZWFrfX1lbHNle2o9Y1tkKzg+PjJdfDA7aWYoaj4+PjA8aD4+PjApe1hiKCl9aD1qKzEyfDA7aWYoKGNbaD4+Ml18MCkhPShkfDApKXtYYigpfWw9ays4fDA7aWYoKGNbbD4+Ml18MCk9PShkfDApKXtjW2g+PjJdPWs7Y1tsPj4yXT1qO0I9azticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtkb3tpZigoZ3wwKSE9MCl7aD1jW2QrMjg+PjJdfDA7aj0yMjQ3MisoaDw8Mil8MDtpZigoZHwwKT09KGNbaj4+Ml18MCkpe2Nbaj4+Ml09QjtpZigoQnwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxoKTticmVha319ZWxzZXtpZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWg9ZysxNnwwO2lmKChjW2g+PjJdfDApPT0oZHwwKSl7Y1toPj4yXT1CfWVsc2V7Y1tnKzIwPj4yXT1CfWlmKChCfDApPT0wKXticmVha319aWYoQj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW0IrMjQ+PjJdPWc7Zz1jW2QrMTY+PjJdfDA7ZG97aWYoKGd8MCkhPTApe2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW0IrMTY+PjJdPWc7Y1tnKzI0Pj4yXT1CO2JyZWFrfX19d2hpbGUoMCk7Zz1jW2QrMjA+PjJdfDA7aWYoKGd8MCkhPTApe2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW0IrMjA+PjJdPWc7Y1tnKzI0Pj4yXT1CO2JyZWFrfX19fXdoaWxlKDApO2lmKGU+Pj4wPDE2KXtIPWUrYXwwO2NbZCs0Pj4yXT1IfDM7SD1kKyhIKzQpfDA7Y1tIPj4yXT1jW0g+PjJdfDF9ZWxzZXtjW2QrND4+Ml09YXwzO2NbZCsoYXw0KT4+Ml09ZXwxO2NbZCsoZSthKT4+Ml09ZTtoPWNbMjIxNzY+PjJdfDA7aWYoKGh8MCkhPTApe2c9Y1syMjE4OD4+Ml18MDtsPWg+Pj4zO2o9bDw8MTtoPTIyMjA4KyhqPDwyKXwwO2s9Y1s1NTQyXXwwO2w9MTw8bDtpZigoayZsfDApIT0wKXtqPTIyMjA4KyhqKzI8PDIpfDA7az1jW2o+PjJdfDA7aWYoaz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle0E9ajt6PWt9fWVsc2V7Y1s1NTQyXT1rfGw7QT0yMjIwOCsoaisyPDwyKXwwO3o9aH1jW0E+PjJdPWc7Y1t6KzEyPj4yXT1nO2NbZys4Pj4yXT16O2NbZysxMj4+Ml09aH1jWzIyMTc2Pj4yXT1lO2NbMjIxODg+PjJdPWZ9SD1kKzh8MDtpPWI7cmV0dXJuIEh8MH19fWVsc2V7aWYoIShhPj4+MD40Mjk0OTY3MjMxKSl7ej1hKzExfDA7YT16Ji04O0I9Y1syMjE3Mj4+Ml18MDtpZigoQnwwKSE9MCl7QT0wLWF8MDt6PXo+Pj44O2lmKCh6fDApIT0wKXtpZihhPj4+MD4xNjc3NzIxNSl7Qz0zMX1lbHNle0c9KHorMTA0ODMyMHwwKT4+PjE2Jjg7SD16PDxHO0Y9KEgrNTIwMTkyfDApPj4+MTYmNDtIPUg8PEY7Qz0oSCsyNDU3NjB8MCk+Pj4xNiYyO0M9MTQtKEZ8R3xDKSsoSDw8Qz4+PjE1KXwwO0M9YT4+PihDKzd8MCkmMXxDPDwxfX1lbHNle0M9MH1EPWNbMjI0NzIrKEM8PDIpPj4yXXwwO2E6ZG97aWYoKER8MCk9PTApe0Y9MDt6PTB9ZWxzZXtpZigoQ3wwKT09MzEpe3o9MH1lbHNle3o9MjUtKEM+Pj4xKXwwfUY9MDtFPWE8PHo7ej0wO3doaWxlKDEpe0g9Y1tEKzQ+PjJdJi04O0c9SC1hfDA7aWYoRz4+PjA8QT4+PjApe2lmKChIfDApPT0oYXwwKSl7QT1HO0Y9RDt6PUQ7YnJlYWsgYX1lbHNle0E9Rzt6PUR9fUg9Y1tEKzIwPj4yXXwwO0Q9Y1tEKyhFPj4+MzE8PDIpKzE2Pj4yXXwwO0Y9KEh8MCk9PTB8KEh8MCk9PShEfDApP0Y6SDtpZigoRHwwKT09MCl7YnJlYWt9ZWxzZXtFPUU8PDF9fX19d2hpbGUoMCk7aWYoKEZ8MCk9PTAmKHp8MCk9PTApe0g9Mjw8QztCPUImKEh8MC1IKTtpZigoQnwwKT09MCl7YnJlYWt9SD0oQiYwLUIpKyAtMXwwO0Q9SD4+PjEyJjE2O0g9SD4+PkQ7Qz1IPj4+NSY4O0g9SD4+PkM7RT1IPj4+MiY0O0g9SD4+PkU7Rz1IPj4+MSYyO0g9SD4+Pkc7Rj1IPj4+MSYxO0Y9Y1syMjQ3MisoKEN8RHxFfEd8RikrKEg+Pj5GKTw8Mik+PjJdfDB9aWYoKEZ8MCkhPTApe3doaWxlKDEpe0g9KGNbRis0Pj4yXSYtOCktYXwwO0I9SD4+PjA8QT4+PjA7QT1CP0g6QTt6PUI/Rjp6O0I9Y1tGKzE2Pj4yXXwwO2lmKChCfDApIT0wKXtGPUI7Y29udGludWV9Rj1jW0YrMjA+PjJdfDA7aWYoKEZ8MCk9PTApe2JyZWFrfX19aWYoKHp8MCkhPTA/QT4+PjA8KChjWzIyMTc2Pj4yXXwwKS1hfDApPj4+MDowKXtmPWNbMjIxODQ+PjJdfDA7aWYoej4+PjA8Zj4+PjApe1hiKCl9ZD16K2F8MDtpZighKHo+Pj4wPGQ+Pj4wKSl7WGIoKX1lPWNbeisyND4+Ml18MDtoPWNbeisxMj4+Ml18MDtkb3tpZigoaHwwKT09KHp8MCkpe2g9eisyMHwwO2c9Y1toPj4yXXwwO2lmKChnfDApPT0wKXtoPXorMTZ8MDtnPWNbaD4+Ml18MDtpZigoZ3wwKT09MCl7eD0wO2JyZWFrfX13aGlsZSgxKXtqPWcrMjB8MDtrPWNbaj4+Ml18MDtpZigoa3wwKSE9MCl7Zz1rO2g9ajtjb250aW51ZX1qPWcrMTZ8MDtrPWNbaj4+Ml18MDtpZigoa3wwKT09MCl7YnJlYWt9ZWxzZXtnPWs7aD1qfX1pZihoPj4+MDxmPj4+MCl7WGIoKX1lbHNle2NbaD4+Ml09MDt4PWc7YnJlYWt9fWVsc2V7Zz1jW3orOD4+Ml18MDtpZihnPj4+MDxmPj4+MCl7WGIoKX1mPWcrMTJ8MDtpZigoY1tmPj4yXXwwKSE9KHp8MCkpe1hiKCl9aj1oKzh8MDtpZigoY1tqPj4yXXwwKT09KHp8MCkpe2NbZj4+Ml09aDtjW2o+PjJdPWc7eD1oO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2Rve2lmKChlfDApIT0wKXtnPWNbeisyOD4+Ml18MDtmPTIyNDcyKyhnPDwyKXwwO2lmKCh6fDApPT0oY1tmPj4yXXwwKSl7Y1tmPj4yXT14O2lmKCh4fDApPT0wKXtjWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PGcpO2JyZWFrfX1lbHNle2lmKGU+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9Zj1lKzE2fDA7aWYoKGNbZj4+Ml18MCk9PSh6fDApKXtjW2Y+PjJdPXh9ZWxzZXtjW2UrMjA+PjJdPXh9aWYoKHh8MCk9PTApe2JyZWFrfX1pZih4Pj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWNbeCsyND4+Ml09ZTtlPWNbeisxNj4+Ml18MDtkb3tpZigoZXwwKSE9MCl7aWYoZT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbeCsxNj4+Ml09ZTtjW2UrMjQ+PjJdPXg7YnJlYWt9fX13aGlsZSgwKTtlPWNbeisyMD4+Ml18MDtpZigoZXwwKSE9MCl7aWYoZT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbeCsyMD4+Ml09ZTtjW2UrMjQ+PjJdPXg7YnJlYWt9fX19d2hpbGUoMCk7Yjpkb3tpZighKEE+Pj4wPDE2KSl7Y1t6KzQ+PjJdPWF8MztjW3orKGF8NCk+PjJdPUF8MTtjW3orKEErYSk+PjJdPUE7Zj1BPj4+MztpZihBPj4+MDwyNTYpe2g9Zjw8MTtlPTIyMjA4KyhoPDwyKXwwO2c9Y1s1NTQyXXwwO2Y9MTw8Zjtkb3tpZigoZyZmfDApPT0wKXtjWzU1NDJdPWd8Zjt3PTIyMjA4KyhoKzI8PDIpfDA7dj1lfWVsc2V7Zj0yMjIwOCsoaCsyPDwyKXwwO2c9Y1tmPj4yXXwwO2lmKCEoZz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCkpe3c9Zjt2PWc7YnJlYWt9WGIoKX19d2hpbGUoMCk7Y1t3Pj4yXT1kO2NbdisxMj4+Ml09ZDtjW3orKGErOCk+PjJdPXY7Y1t6KyhhKzEyKT4+Ml09ZTticmVha31lPUE+Pj44O2lmKChlfDApIT0wKXtpZihBPj4+MD4xNjc3NzIxNSl7ZT0zMX1lbHNle0c9KGUrMTA0ODMyMHwwKT4+PjE2Jjg7SD1lPDxHO0Y9KEgrNTIwMTkyfDApPj4+MTYmNDtIPUg8PEY7ZT0oSCsyNDU3NjB8MCk+Pj4xNiYyO2U9MTQtKEZ8R3xlKSsoSDw8ZT4+PjE1KXwwO2U9QT4+PihlKzd8MCkmMXxlPDwxfX1lbHNle2U9MH1mPTIyNDcyKyhlPDwyKXwwO2NbeisoYSsyOCk+PjJdPWU7Y1t6KyhhKzIwKT4+Ml09MDtjW3orKGErMTYpPj4yXT0wO2g9Y1syMjE3Mj4+Ml18MDtnPTE8PGU7aWYoKGgmZ3wwKT09MCl7Y1syMjE3Mj4+Ml09aHxnO2NbZj4+Ml09ZDtjW3orKGErMjQpPj4yXT1mO2NbeisoYSsxMik+PjJdPWQ7Y1t6KyhhKzgpPj4yXT1kO2JyZWFrfWY9Y1tmPj4yXXwwO2lmKChlfDApPT0zMSl7ZT0wfWVsc2V7ZT0yNS0oZT4+PjEpfDB9Yzpkb3tpZigoY1tmKzQ+PjJdJi04fDApIT0oQXwwKSl7ZT1BPDxlO3doaWxlKDEpe2c9ZisoZT4+PjMxPDwyKSsxNnwwO2g9Y1tnPj4yXXwwO2lmKChofDApPT0wKXticmVha31pZigoY1toKzQ+PjJdJi04fDApPT0oQXwwKSl7cD1oO2JyZWFrIGN9ZWxzZXtlPWU8PDE7Zj1ofX1pZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tnPj4yXT1kO2NbeisoYSsyNCk+PjJdPWY7Y1t6KyhhKzEyKT4+Ml09ZDtjW3orKGErOCk+PjJdPWQ7YnJlYWsgYn19ZWxzZXtwPWZ9fXdoaWxlKDApO2Y9cCs4fDA7ZT1jW2Y+PjJdfDA7Zz1jWzIyMTg0Pj4yXXwwO2lmKHA+Pj4wPGc+Pj4wKXtYYigpfWlmKGU+Pj4wPGc+Pj4wKXtYYigpfWVsc2V7Y1tlKzEyPj4yXT1kO2NbZj4+Ml09ZDtjW3orKGErOCk+PjJdPWU7Y1t6KyhhKzEyKT4+Ml09cDtjW3orKGErMjQpPj4yXT0wO2JyZWFrfX1lbHNle0g9QSthfDA7Y1t6KzQ+PjJdPUh8MztIPXorKEgrNCl8MDtjW0g+PjJdPWNbSD4+Ml18MX19d2hpbGUoMCk7SD16Kzh8MDtpPWI7cmV0dXJuIEh8MH19fWVsc2V7YT0tMX19fXdoaWxlKDApO3A9Y1syMjE3Nj4+Ml18MDtpZighKGE+Pj4wPnA+Pj4wKSl7ZT1wLWF8MDtkPWNbMjIxODg+PjJdfDA7aWYoZT4+PjA+MTUpe2NbMjIxODg+PjJdPWQrYTtjWzIyMTc2Pj4yXT1lO2NbZCsoYSs0KT4+Ml09ZXwxO2NbZCtwPj4yXT1lO2NbZCs0Pj4yXT1hfDN9ZWxzZXtjWzIyMTc2Pj4yXT0wO2NbMjIxODg+PjJdPTA7Y1tkKzQ+PjJdPXB8MztIPWQrKHArNCl8MDtjW0g+PjJdPWNbSD4+Ml18MX1IPWQrOHwwO2k9YjtyZXR1cm4gSHwwfXA9Y1syMjE4MD4+Ml18MDtpZihhPj4+MDxwPj4+MCl7Rz1wLWF8MDtjWzIyMTgwPj4yXT1HO0g9Y1syMjE5Mj4+Ml18MDtjWzIyMTkyPj4yXT1IK2E7Y1tIKyhhKzQpPj4yXT1HfDE7Y1tIKzQ+PjJdPWF8MztIPUgrOHwwO2k9YjtyZXR1cm4gSHwwfWRve2lmKChjWzU2NjBdfDApPT0wKXtwPXNiKDMwKXwwO2lmKChwKyAtMSZwfDApPT0wKXtjWzIyNjQ4Pj4yXT1wO2NbMjI2NDQ+PjJdPXA7Y1syMjY1Mj4+Ml09LTE7Y1syMjY1Nj4+Ml09LTE7Y1syMjY2MD4+Ml09MDtjWzIyNjEyPj4yXT0wO2NbNTY2MF09KF9iKDApfDApJi0xNl4xNDMxNjU1NzY4O2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO3c9YSs0OHwwO3A9Y1syMjY0OD4+Ml18MDt4PWErNDd8MDt6PXAreHwwO3A9MC1wfDA7dj16JnA7aWYoISh2Pj4+MD5hPj4+MCkpe0g9MDtpPWI7cmV0dXJuIEh8MH1BPWNbMjI2MDg+PjJdfDA7aWYoKEF8MCkhPTA/KEc9Y1syMjYwMD4+Ml18MCxIPUcrdnwwLEg+Pj4wPD1HPj4+MHxIPj4+MD5BPj4+MCk6MCl7SD0wO2k9YjtyZXR1cm4gSHwwfWQ6ZG97aWYoKGNbMjI2MTI+PjJdJjR8MCk9PTApe0I9Y1syMjE5Mj4+Ml18MDtlOmRve2lmKChCfDApIT0wKXtBPTIyNjE2fDA7d2hpbGUoMSl7Qz1jW0E+PjJdfDA7aWYoIShDPj4+MD5CPj4+MCk/KHk9QSs0fDAsKEMrKGNbeT4+Ml18MCl8MCk+Pj4wPkI+Pj4wKTowKXticmVha31BPWNbQSs4Pj4yXXwwO2lmKChBfDApPT0wKXtvPTE4MjticmVhayBlfX1pZigoQXwwKSE9MCl7Qj16LShjWzIyMTgwPj4yXXwwKSZwO2lmKEI+Pj4wPDIxNDc0ODM2NDcpe3A9aGIoQnwwKXwwO0E9KHB8MCk9PSgoY1tBPj4yXXwwKSsoY1t5Pj4yXXwwKXwwKTt5PXA7ej1CO3A9QT9wOi0xO0E9QT9COjA7bz0xOTF9ZWxzZXtBPTB9fWVsc2V7bz0xODJ9fWVsc2V7bz0xODJ9fXdoaWxlKDApO2Rve2lmKChvfDApPT0xODIpe3A9aGIoMCl8MDtpZigocHwwKSE9KC0xfDApKXt6PXA7QT1jWzIyNjQ0Pj4yXXwwO3k9QSsgLTF8MDtpZigoeSZ6fDApPT0wKXtBPXZ9ZWxzZXtBPXYteisoeSt6JjAtQSl8MH15PWNbMjI2MDA+PjJdfDA7ej15K0F8MDtpZihBPj4+MD5hPj4+MCZBPj4+MDwyMTQ3NDgzNjQ3KXtIPWNbMjI2MDg+PjJdfDA7aWYoKEh8MCkhPTA/ej4+PjA8PXk+Pj4wfHo+Pj4wPkg+Pj4wOjApe0E9MDticmVha315PWhiKEF8MCl8MDtvPSh5fDApPT0ocHwwKTt6PUE7cD1vP3A6LTE7QT1vP0E6MDtvPTE5MX1lbHNle0E9MH19ZWxzZXtBPTB9fX13aGlsZSgwKTtmOmRve2lmKChvfDApPT0xOTEpe289MC16fDA7aWYoKHB8MCkhPSgtMXwwKSl7cT1BO289MjAyO2JyZWFrIGR9ZG97aWYoKHl8MCkhPSgtMXwwKSZ6Pj4+MDwyMTQ3NDgzNjQ3Jno+Pj4wPHc+Pj4wPyh1PWNbMjI2NDg+PjJdfDAsdT14LXordSYwLXUsdT4+PjA8MjE0NzQ4MzY0Nyk6MCl7aWYoKGhiKHV8MCl8MCk9PSgtMXwwKSl7aGIob3wwKXwwO2JyZWFrIGZ9ZWxzZXt6PXUrenwwO2JyZWFrfX19d2hpbGUoMCk7aWYoKHl8MCkhPSgtMXwwKSl7cD15O3E9ejtvPTIwMjticmVhayBkfX19d2hpbGUoMCk7Y1syMjYxMj4+Ml09Y1syMjYxMj4+Ml18NDtvPTE5OX1lbHNle0E9MDtvPTE5OX19d2hpbGUoMCk7aWYoKCgob3wwKT09MTk5P3Y+Pj4wPDIxNDc0ODM2NDc6MCk/KHQ9aGIodnwwKXwwLHM9aGIoMCl8MCwoc3wwKSE9KC0xfDApJih0fDApIT0oLTF8MCkmdD4+PjA8cz4+PjApOjApPyhyPXMtdHwwLHE9cj4+PjA+KGErNDB8MCk+Pj4wLHEpOjApe3A9dDtxPXE/cjpBO289MjAyfWlmKChvfDApPT0yMDIpe3I9KGNbMjI2MDA+PjJdfDApK3F8MDtjWzIyNjAwPj4yXT1yO2lmKHI+Pj4wPihjWzIyNjA0Pj4yXXwwKT4+PjApe2NbMjI2MDQ+PjJdPXJ9cj1jWzIyMTkyPj4yXXwwO2c6ZG97aWYoKHJ8MCkhPTApe3Y9MjI2MTZ8MDt3aGlsZSgxKXt0PWNbdj4+Ml18MDt1PXYrNHwwO3M9Y1t1Pj4yXXwwO2lmKChwfDApPT0odCtzfDApKXtvPTIxNDticmVha313PWNbdis4Pj4yXXwwO2lmKCh3fDApPT0wKXticmVha31lbHNle3Y9d319aWYoKChvfDApPT0yMTQ/KGNbdisxMj4+Ml0mOHwwKT09MDowKT9yPj4+MD49dD4+PjAmcj4+PjA8cD4+PjA6MCl7Y1t1Pj4yXT1zK3E7ZD0oY1syMjE4MD4+Ml18MCkrcXwwO2U9cis4fDA7aWYoKGUmN3wwKT09MCl7ZT0wfWVsc2V7ZT0wLWUmN31IPWQtZXwwO2NbMjIxOTI+PjJdPXIrZTtjWzIyMTgwPj4yXT1IO2NbcisoZSs0KT4+Ml09SHwxO2NbcisoZCs0KT4+Ml09NDA7Y1syMjE5Nj4+Ml09Y1syMjY1Nj4+Ml07YnJlYWt9aWYocD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7Y1syMjE4ND4+Ml09cH10PXArcXwwO3M9MjI2MTZ8MDt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT09KHR8MCkpe289MjI0O2JyZWFrfXU9Y1tzKzg+PjJdfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7cz11fX1pZigob3wwKT09MjI0PyhjW3MrMTI+PjJdJjh8MCk9PTA6MCl7Y1tzPj4yXT1wO2g9cys0fDA7Y1toPj4yXT0oY1toPj4yXXwwKStxO2g9cCs4fDA7aWYoKGgmN3wwKT09MCl7aD0wfWVsc2V7aD0wLWgmN31qPXArKHErOCl8MDtpZigoaiY3fDApPT0wKXtuPTB9ZWxzZXtuPTAtaiY3fW89cCsobitxKXwwO2o9aCthfDA7az1wK2p8MDttPW8tKHAraCktYXwwO2NbcCsoaCs0KT4+Ml09YXwzO2g6ZG97aWYoKG98MCkhPShjWzIyMTkyPj4yXXwwKSl7aWYoKG98MCk9PShjWzIyMTg4Pj4yXXwwKSl7SD0oY1syMjE3Nj4+Ml18MCkrbXwwO2NbMjIxNzY+PjJdPUg7Y1syMjE4OD4+Ml09aztjW3ArKGorNCk+PjJdPUh8MTtjW3ArKEgraik+PjJdPUg7YnJlYWt9cj1xKzR8MDt0PWNbcCsocituKT4+Ml18MDtpZigodCYzfDApPT0xKXthPXQmLTg7cz10Pj4+MztpOmRve2lmKCEodD4+PjA8MjU2KSl7bD1jW3ArKChufDI0KStxKT4+Ml18MDt1PWNbcCsocSsxMituKT4+Ml18MDtkb3tpZigodXwwKT09KG98MCkpe3U9bnwxNjt0PXArKHIrdSl8MDtzPWNbdD4+Ml18MDtpZigoc3wwKT09MCl7dD1wKyh1K3EpfDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe2c9MDticmVha319d2hpbGUoMSl7dT1zKzIwfDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCkhPTApe3M9djt0PXU7Y29udGludWV9dT1zKzE2fDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCk9PTApe2JyZWFrfWVsc2V7cz12O3Q9dX19aWYodD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbdD4+Ml09MDtnPXM7YnJlYWt9fWVsc2V7dD1jW3ArKChufDgpK3EpPj4yXXwwO2lmKHQ+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9dj10KzEyfDA7aWYoKGNbdj4+Ml18MCkhPShvfDApKXtYYigpfXM9dSs4fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtjW3Y+PjJdPXU7Y1tzPj4yXT10O2c9dTticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtpZigobHwwKT09MCl7YnJlYWt9dD1jW3ArKHErMjgrbik+PjJdfDA7cz0yMjQ3MisodDw8Mil8MDtkb3tpZigob3wwKSE9KGNbcz4+Ml18MCkpe2lmKGw+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9cz1sKzE2fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtjW3M+PjJdPWd9ZWxzZXtjW2wrMjA+PjJdPWd9aWYoKGd8MCk9PTApe2JyZWFrIGl9fWVsc2V7Y1tzPj4yXT1nO2lmKChnfDApIT0wKXticmVha31jWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PHQpO2JyZWFrIGl9fXdoaWxlKDApO2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9Y1tnKzI0Pj4yXT1sO2w9bnwxNjtvPWNbcCsobCtxKT4+Ml18MDtkb3tpZigob3wwKSE9MCl7aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbZysxNj4+Ml09bztjW28rMjQ+PjJdPWc7YnJlYWt9fX13aGlsZSgwKTtsPWNbcCsocitsKT4+Ml18MDtpZigobHwwKT09MCl7YnJlYWt9aWYobD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbZysyMD4+Ml09bDtjW2wrMjQ+PjJdPWc7YnJlYWt9fWVsc2V7cj1jW3ArKChufDgpK3EpPj4yXXwwO2c9Y1twKyhxKzEyK24pPj4yXXwwO3Q9MjIyMDgrKHM8PDE8PDIpfDA7ZG97aWYoKHJ8MCkhPSh0fDApKXtpZihyPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWlmKChjW3IrMTI+PjJdfDApPT0ob3wwKSl7YnJlYWt9WGIoKX19d2hpbGUoMCk7aWYoKGd8MCk9PShyfDApKXtjWzU1NDJdPWNbNTU0Ml0mfigxPDxzKTticmVha31kb3tpZigoZ3wwKT09KHR8MCkpe2w9Zys4fDB9ZWxzZXtpZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfXM9Zys4fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtsPXM7YnJlYWt9WGIoKX19d2hpbGUoMCk7Y1tyKzEyPj4yXT1nO2NbbD4+Ml09cn19d2hpbGUoMCk7bz1wKygoYXxuKStxKXwwO209YSttfDB9Zz1vKzR8MDtjW2c+PjJdPWNbZz4+Ml0mLTI7Y1twKyhqKzQpPj4yXT1tfDE7Y1twKyhtK2opPj4yXT1tO2c9bT4+PjM7aWYobT4+PjA8MjU2KXttPWc8PDE7ZD0yMjIwOCsobTw8Mil8MDtsPWNbNTU0Ml18MDtnPTE8PGc7ZG97aWYoKGwmZ3wwKT09MCl7Y1s1NTQyXT1sfGc7Zj0yMjIwOCsobSsyPDwyKXwwO2U9ZH1lbHNle2w9MjIyMDgrKG0rMjw8Mil8MDtnPWNbbD4+Ml18MDtpZighKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApKXtmPWw7ZT1nO2JyZWFrfVhiKCl9fXdoaWxlKDApO2NbZj4+Ml09aztjW2UrMTI+PjJdPWs7Y1twKyhqKzgpPj4yXT1lO2NbcCsoaisxMik+PjJdPWQ7YnJlYWt9ZT1tPj4+ODtkb3tpZigoZXwwKT09MCl7ZT0wfWVsc2V7aWYobT4+PjA+MTY3NzcyMTUpe2U9MzE7YnJlYWt9Rz0oZSsxMDQ4MzIwfDApPj4+MTYmODtIPWU8PEc7Rj0oSCs1MjAxOTJ8MCk+Pj4xNiY0O0g9SDw8RjtlPShIKzI0NTc2MHwwKT4+PjE2JjI7ZT0xNC0oRnxHfGUpKyhIPDxlPj4+MTUpfDA7ZT1tPj4+KGUrN3wwKSYxfGU8PDF9fXdoaWxlKDApO2w9MjI0NzIrKGU8PDIpfDA7Y1twKyhqKzI4KT4+Ml09ZTtjW3ArKGorMjApPj4yXT0wO2NbcCsoaisxNik+PjJdPTA7Zj1jWzIyMTcyPj4yXXwwO2c9MTw8ZTtpZigoZiZnfDApPT0wKXtjWzIyMTcyPj4yXT1mfGc7Y1tsPj4yXT1rO2NbcCsoaisyNCk+PjJdPWw7Y1twKyhqKzEyKT4+Ml09aztjW3ArKGorOCk+PjJdPWs7YnJlYWt9bD1jW2w+PjJdfDA7aWYoKGV8MCk9PTMxKXtlPTB9ZWxzZXtlPTI1LShlPj4+MSl8MH1qOmRve2lmKChjW2wrND4+Ml0mLTh8MCkhPShtfDApKXtlPW08PGU7d2hpbGUoMSl7Zz1sKyhlPj4+MzE8PDIpKzE2fDA7Zj1jW2c+PjJdfDA7aWYoKGZ8MCk9PTApe2JyZWFrfWlmKChjW2YrND4+Ml0mLTh8MCk9PShtfDApKXtkPWY7YnJlYWsgan1lbHNle2U9ZTw8MTtsPWZ9fWlmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2c+PjJdPWs7Y1twKyhqKzI0KT4+Ml09bDtjW3ArKGorMTIpPj4yXT1rO2NbcCsoais4KT4+Ml09azticmVhayBofX1lbHNle2Q9bH19d2hpbGUoMCk7Zj1kKzh8MDtlPWNbZj4+Ml18MDtnPWNbMjIxODQ+PjJdfDA7aWYoZD4+PjA8Zz4+PjApe1hiKCl9aWYoZT4+PjA8Zz4+PjApe1hiKCl9ZWxzZXtjW2UrMTI+PjJdPWs7Y1tmPj4yXT1rO2NbcCsoais4KT4+Ml09ZTtjW3ArKGorMTIpPj4yXT1kO2NbcCsoaisyNCk+PjJdPTA7YnJlYWt9fWVsc2V7SD0oY1syMjE4MD4+Ml18MCkrbXwwO2NbMjIxODA+PjJdPUg7Y1syMjE5Mj4+Ml09aztjW3ArKGorNCk+PjJdPUh8MX19d2hpbGUoMCk7SD1wKyhofDgpfDA7aT1iO3JldHVybiBIfDB9ZT0yMjYxNnwwO3doaWxlKDEpe2Q9Y1tlPj4yXXwwO2lmKCEoZD4+PjA+cj4+PjApPyhuPWNbZSs0Pj4yXXwwLG09ZCtufDAsbT4+PjA+cj4+PjApOjApe2JyZWFrfWU9Y1tlKzg+PjJdfDB9ZT1kKyhuKyAtMzkpfDA7aWYoKGUmN3wwKT09MCl7ZT0wfWVsc2V7ZT0wLWUmN31kPWQrKG4rIC00NytlKXwwO2Q9ZD4+PjA8KHIrMTZ8MCk+Pj4wP3I6ZDtlPWQrOHwwO2Y9cCs4fDA7aWYoKGYmN3wwKT09MCl7Zj0wfWVsc2V7Zj0wLWYmN31IPXErIC00MC1mfDA7Y1syMjE5Mj4+Ml09cCtmO2NbMjIxODA+PjJdPUg7Y1twKyhmKzQpPj4yXT1IfDE7Y1twKyhxKyAtMzYpPj4yXT00MDtjWzIyMTk2Pj4yXT1jWzIyNjU2Pj4yXTtjW2QrND4+Ml09Mjc7Y1tlKzA+PjJdPWNbMjI2MTY+PjJdO2NbZSs0Pj4yXT1jWzIyNjIwPj4yXTtjW2UrOD4+Ml09Y1syMjYyND4+Ml07Y1tlKzEyPj4yXT1jWzIyNjI4Pj4yXTtjWzIyNjE2Pj4yXT1wO2NbMjI2MjA+PjJdPXE7Y1syMjYyOD4+Ml09MDtjWzIyNjI0Pj4yXT1lO2U9ZCsyOHwwO2NbZT4+Ml09NztpZigoZCszMnwwKT4+PjA8bT4+PjApe2Rve0g9ZTtlPWUrNHwwO2NbZT4+Ml09N313aGlsZSgoSCs4fDApPj4+MDxtPj4+MCl9aWYoKGR8MCkhPShyfDApKXtkPWQtcnwwO2U9cisoZCs0KXwwO2NbZT4+Ml09Y1tlPj4yXSYtMjtjW3IrND4+Ml09ZHwxO2NbcitkPj4yXT1kO2U9ZD4+PjM7aWYoZD4+PjA8MjU2KXtnPWU8PDE7ZD0yMjIwOCsoZzw8Mil8MDtmPWNbNTU0Ml18MDtlPTE8PGU7ZG97aWYoKGYmZXwwKT09MCl7Y1s1NTQyXT1mfGU7az0yMjIwOCsoZysyPDwyKXwwO2o9ZH1lbHNle2Y9MjIyMDgrKGcrMjw8Mil8MDtlPWNbZj4+Ml18MDtpZighKGU+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApKXtrPWY7aj1lO2JyZWFrfVhiKCl9fXdoaWxlKDApO2Nbaz4+Ml09cjtjW2orMTI+PjJdPXI7Y1tyKzg+PjJdPWo7Y1tyKzEyPj4yXT1kO2JyZWFrfWU9ZD4+Pjg7aWYoKGV8MCkhPTApe2lmKGQ+Pj4wPjE2Nzc3MjE1KXtlPTMxfWVsc2V7Rz0oZSsxMDQ4MzIwfDApPj4+MTYmODtIPWU8PEc7Rj0oSCs1MjAxOTJ8MCk+Pj4xNiY0O0g9SDw8RjtlPShIKzI0NTc2MHwwKT4+PjE2JjI7ZT0xNC0oRnxHfGUpKyhIPDxlPj4+MTUpfDA7ZT1kPj4+KGUrN3wwKSYxfGU8PDF9fWVsc2V7ZT0wfWo9MjI0NzIrKGU8PDIpfDA7Y1tyKzI4Pj4yXT1lO2NbcisyMD4+Ml09MDtjW3IrMTY+PjJdPTA7Zj1jWzIyMTcyPj4yXXwwO2c9MTw8ZTtpZigoZiZnfDApPT0wKXtjWzIyMTcyPj4yXT1mfGc7Y1tqPj4yXT1yO2NbcisyND4+Ml09ajtjW3IrMTI+PjJdPXI7Y1tyKzg+PjJdPXI7YnJlYWt9Zj1jW2o+PjJdfDA7aWYoKGV8MCk9PTMxKXtlPTB9ZWxzZXtlPTI1LShlPj4+MSl8MH1rOmRve2lmKChjW2YrND4+Ml0mLTh8MCkhPShkfDApKXtlPWQ8PGU7d2hpbGUoMSl7aj1mKyhlPj4+MzE8PDIpKzE2fDA7Zz1jW2o+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShkfDApKXtoPWc7YnJlYWsga31lbHNle2U9ZTw8MTtmPWd9fWlmKGo+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2o+PjJdPXI7Y1tyKzI0Pj4yXT1mO2NbcisxMj4+Ml09cjtjW3IrOD4+Ml09cjticmVhayBnfX1lbHNle2g9Zn19d2hpbGUoMCk7Zj1oKzh8MDtlPWNbZj4+Ml18MDtkPWNbMjIxODQ+PjJdfDA7aWYoaD4+PjA8ZD4+PjApe1hiKCl9aWYoZT4+PjA8ZD4+PjApe1hiKCl9ZWxzZXtjW2UrMTI+PjJdPXI7Y1tmPj4yXT1yO2Nbcis4Pj4yXT1lO2NbcisxMj4+Ml09aDtjW3IrMjQ+PjJdPTA7YnJlYWt9fX1lbHNle0g9Y1syMjE4ND4+Ml18MDtpZigoSHwwKT09MHxwPj4+MDxIPj4+MCl7Y1syMjE4ND4+Ml09cH1jWzIyNjE2Pj4yXT1wO2NbMjI2MjA+PjJdPXE7Y1syMjYyOD4+Ml09MDtjWzIyMjA0Pj4yXT1jWzU2NjBdO2NbMjIyMDA+PjJdPS0xO2Q9MDtkb3tIPWQ8PDE7Rz0yMjIwOCsoSDw8Mil8MDtjWzIyMjA4KyhIKzM8PDIpPj4yXT1HO2NbMjIyMDgrKEgrMjw8Mik+PjJdPUc7ZD1kKzF8MH13aGlsZSgoZHwwKSE9MzIpO2Q9cCs4fDA7aWYoKGQmN3wwKT09MCl7ZD0wfWVsc2V7ZD0wLWQmN31IPXErIC00MC1kfDA7Y1syMjE5Mj4+Ml09cCtkO2NbMjIxODA+PjJdPUg7Y1twKyhkKzQpPj4yXT1IfDE7Y1twKyhxKyAtMzYpPj4yXT00MDtjWzIyMTk2Pj4yXT1jWzIyNjU2Pj4yXX19d2hpbGUoMCk7ZD1jWzIyMTgwPj4yXXwwO2lmKGQ+Pj4wPmE+Pj4wKXtHPWQtYXwwO2NbMjIxODA+PjJdPUc7SD1jWzIyMTkyPj4yXXwwO2NbMjIxOTI+PjJdPUgrYTtjW0grKGErNCk+PjJdPUd8MTtjW0grND4+Ml09YXwzO0g9SCs4fDA7aT1iO3JldHVybiBIfDB9fWNbKGJiKCl8MCk+PjJdPTEyO0g9MDtpPWI7cmV0dXJuIEh8MH1mdW5jdGlvbiB2bihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDtiPWk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59cT1hKyAtOHwwO3I9Y1syMjE4ND4+Ml18MDtpZihxPj4+MDxyPj4+MCl7WGIoKX1vPWNbYSsgLTQ+PjJdfDA7bj1vJjM7aWYoKG58MCk9PTEpe1hiKCl9aj1vJi04O2g9YSsoaisgLTgpfDA7ZG97aWYoKG8mMXwwKT09MCl7dT1jW3E+PjJdfDA7aWYoKG58MCk9PTApe2k9YjtyZXR1cm59cT0tOC11fDA7bz1hK3F8MDtuPXUranwwO2lmKG8+Pj4wPHI+Pj4wKXtYYigpfWlmKChvfDApPT0oY1syMjE4OD4+Ml18MCkpe2Q9YSsoaisgLTQpfDA7aWYoKGNbZD4+Ml0mM3wwKSE9Myl7ZD1vO209bjticmVha31jWzIyMTc2Pj4yXT1uO2NbZD4+Ml09Y1tkPj4yXSYtMjtjW2ErKHErNCk+PjJdPW58MTtjW2g+PjJdPW47aT1iO3JldHVybn10PXU+Pj4zO2lmKHU+Pj4wPDI1Nil7ZD1jW2ErKHErOCk+PjJdfDA7bT1jW2ErKHErMTIpPj4yXXwwO3A9MjIyMDgrKHQ8PDE8PDIpfDA7aWYoKGR8MCkhPShwfDApKXtpZihkPj4+MDxyPj4+MCl7WGIoKX1pZigoY1tkKzEyPj4yXXwwKSE9KG98MCkpe1hiKCl9fWlmKChtfDApPT0oZHwwKSl7Y1s1NTQyXT1jWzU1NDJdJn4oMTw8dCk7ZD1vO209bjticmVha31pZigobXwwKSE9KHB8MCkpe2lmKG0+Pj4wPHI+Pj4wKXtYYigpfXA9bSs4fDA7aWYoKGNbcD4+Ml18MCk9PShvfDApKXtzPXB9ZWxzZXtYYigpfX1lbHNle3M9bSs4fDB9Y1tkKzEyPj4yXT1tO2Nbcz4+Ml09ZDtkPW87bT1uO2JyZWFrfXM9Y1thKyhxKzI0KT4+Ml18MDt0PWNbYSsocSsxMik+PjJdfDA7ZG97aWYoKHR8MCk9PShvfDApKXt1PWErKHErMjApfDA7dD1jW3U+PjJdfDA7aWYoKHR8MCk9PTApe3U9YSsocSsxNil8MDt0PWNbdT4+Ml18MDtpZigodHwwKT09MCl7cD0wO2JyZWFrfX13aGlsZSgxKXt3PXQrMjB8MDt2PWNbdz4+Ml18MDtpZigodnwwKSE9MCl7dD12O3U9dztjb250aW51ZX12PXQrMTZ8MDt3PWNbdj4+Ml18MDtpZigod3wwKT09MCl7YnJlYWt9ZWxzZXt0PXc7dT12fX1pZih1Pj4+MDxyPj4+MCl7WGIoKX1lbHNle2NbdT4+Ml09MDtwPXQ7YnJlYWt9fWVsc2V7dT1jW2ErKHErOCk+PjJdfDA7aWYodT4+PjA8cj4+PjApe1hiKCl9cj11KzEyfDA7aWYoKGNbcj4+Ml18MCkhPShvfDApKXtYYigpfXY9dCs4fDA7aWYoKGNbdj4+Ml18MCk9PShvfDApKXtjW3I+PjJdPXQ7Y1t2Pj4yXT11O3A9dDticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtpZigoc3wwKSE9MCl7dD1jW2ErKHErMjgpPj4yXXwwO3I9MjI0NzIrKHQ8PDIpfDA7aWYoKG98MCk9PShjW3I+PjJdfDApKXtjW3I+PjJdPXA7aWYoKHB8MCk9PTApe2NbMjIxNzI+PjJdPWNbMjIxNzI+PjJdJn4oMTw8dCk7ZD1vO209bjticmVha319ZWxzZXtpZihzPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfXI9cysxNnwwO2lmKChjW3I+PjJdfDApPT0ob3wwKSl7Y1tyPj4yXT1wfWVsc2V7Y1tzKzIwPj4yXT1wfWlmKChwfDApPT0wKXtkPW87bT1uO2JyZWFrfX1pZihwPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWNbcCsyND4+Ml09cztyPWNbYSsocSsxNik+PjJdfDA7ZG97aWYoKHJ8MCkhPTApe2lmKHI+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW3ArMTY+PjJdPXI7Y1tyKzI0Pj4yXT1wO2JyZWFrfX19d2hpbGUoMCk7cT1jW2ErKHErMjApPj4yXXwwO2lmKChxfDApIT0wKXtpZihxPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1twKzIwPj4yXT1xO2NbcSsyND4+Ml09cDtkPW87bT1uO2JyZWFrfX1lbHNle2Q9bzttPW59fWVsc2V7ZD1vO209bn19ZWxzZXtkPXE7bT1qfX13aGlsZSgwKTtpZighKGQ+Pj4wPGg+Pj4wKSl7WGIoKX1uPWErKGorIC00KXwwO289Y1tuPj4yXXwwO2lmKChvJjF8MCk9PTApe1hiKCl9aWYoKG8mMnwwKT09MCl7aWYoKGh8MCk9PShjWzIyMTkyPj4yXXwwKSl7dz0oY1syMjE4MD4+Ml18MCkrbXwwO2NbMjIxODA+PjJdPXc7Y1syMjE5Mj4+Ml09ZDtjW2QrND4+Ml09d3wxO2lmKChkfDApIT0oY1syMjE4OD4+Ml18MCkpe2k9YjtyZXR1cm59Y1syMjE4OD4+Ml09MDtjWzIyMTc2Pj4yXT0wO2k9YjtyZXR1cm59aWYoKGh8MCk9PShjWzIyMTg4Pj4yXXwwKSl7dz0oY1syMjE3Nj4+Ml18MCkrbXwwO2NbMjIxNzY+PjJdPXc7Y1syMjE4OD4+Ml09ZDtjW2QrND4+Ml09d3wxO2NbZCt3Pj4yXT13O2k9YjtyZXR1cm59bT0obyYtOCkrbXwwO249bz4+PjM7ZG97aWYoIShvPj4+MDwyNTYpKXtsPWNbYSsoaisxNik+PjJdfDA7cT1jW2ErKGp8NCk+PjJdfDA7ZG97aWYoKHF8MCk9PShofDApKXtvPWErKGorMTIpfDA7bj1jW28+PjJdfDA7aWYoKG58MCk9PTApe289YSsoais4KXwwO249Y1tvPj4yXXwwO2lmKChufDApPT0wKXtrPTA7YnJlYWt9fXdoaWxlKDEpe3A9bisyMHwwO3E9Y1twPj4yXXwwO2lmKChxfDApIT0wKXtuPXE7bz1wO2NvbnRpbnVlfXA9bisxNnwwO3E9Y1twPj4yXXwwO2lmKChxfDApPT0wKXticmVha31lbHNle249cTtvPXB9fWlmKG8+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW28+PjJdPTA7az1uO2JyZWFrfX1lbHNle289Y1thK2o+PjJdfDA7aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1wPW8rMTJ8MDtpZigoY1twPj4yXXwwKSE9KGh8MCkpe1hiKCl9bj1xKzh8MDtpZigoY1tuPj4yXXwwKT09KGh8MCkpe2NbcD4+Ml09cTtjW24+PjJdPW87az1xO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChsfDApIT0wKXtuPWNbYSsoaisyMCk+PjJdfDA7bz0yMjQ3Misobjw8Mil8MDtpZigoaHwwKT09KGNbbz4+Ml18MCkpe2Nbbz4+Ml09aztpZigoa3wwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxuKTticmVha319ZWxzZXtpZihsPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfW49bCsxNnwwO2lmKChjW24+PjJdfDApPT0oaHwwKSl7Y1tuPj4yXT1rfWVsc2V7Y1tsKzIwPj4yXT1rfWlmKChrfDApPT0wKXticmVha319aWYoaz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2srMjQ+PjJdPWw7aD1jW2ErKGorOCk+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2srMTY+PjJdPWg7Y1toKzI0Pj4yXT1rO2JyZWFrfX19d2hpbGUoMCk7aD1jW2ErKGorMTIpPj4yXXwwO2lmKChofDApIT0wKXtpZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1trKzIwPj4yXT1oO2NbaCsyND4+Ml09azticmVha319fX1lbHNle2s9Y1thK2o+PjJdfDA7YT1jW2ErKGp8NCk+PjJdfDA7aj0yMjIwOCsobjw8MTw8Mil8MDtpZigoa3wwKSE9KGp8MCkpe2lmKGs+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9aWYoKGNbaysxMj4+Ml18MCkhPShofDApKXtYYigpfX1pZigoYXwwKT09KGt8MCkpe2NbNTU0Ml09Y1s1NTQyXSZ+KDE8PG4pO2JyZWFrfWlmKChhfDApIT0oanwwKSl7aWYoYT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1qPWErOHwwO2lmKChjW2o+PjJdfDApPT0oaHwwKSl7bD1qfWVsc2V7WGIoKX19ZWxzZXtsPWErOHwwfWNbaysxMj4+Ml09YTtjW2w+PjJdPWt9fXdoaWxlKDApO2NbZCs0Pj4yXT1tfDE7Y1tkK20+PjJdPW07aWYoKGR8MCk9PShjWzIyMTg4Pj4yXXwwKSl7Y1syMjE3Nj4+Ml09bTtpPWI7cmV0dXJufX1lbHNle2Nbbj4+Ml09byYtMjtjW2QrND4+Ml09bXwxO2NbZCttPj4yXT1tfWg9bT4+PjM7aWYobT4+PjA8MjU2KXthPWg8PDE7ZT0yMjIwOCsoYTw8Mil8MDtqPWNbNTU0Ml18MDtoPTE8PGg7aWYoKGomaHwwKSE9MCl7aD0yMjIwOCsoYSsyPDwyKXwwO2E9Y1toPj4yXXwwO2lmKGE+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtmPWg7Zz1hfX1lbHNle2NbNTU0Ml09anxoO2Y9MjIyMDgrKGErMjw8Mil8MDtnPWV9Y1tmPj4yXT1kO2NbZysxMj4+Ml09ZDtjW2QrOD4+Ml09ZztjW2QrMTI+PjJdPWU7aT1iO3JldHVybn1mPW0+Pj44O2lmKChmfDApIT0wKXtpZihtPj4+MD4xNjc3NzIxNSl7Zj0zMX1lbHNle3Y9KGYrMTA0ODMyMHwwKT4+PjE2Jjg7dz1mPDx2O3U9KHcrNTIwMTkyfDApPj4+MTYmNDt3PXc8PHU7Zj0odysyNDU3NjB8MCk+Pj4xNiYyO2Y9MTQtKHV8dnxmKSsodzw8Zj4+PjE1KXwwO2Y9bT4+PihmKzd8MCkmMXxmPDwxfX1lbHNle2Y9MH1nPTIyNDcyKyhmPDwyKXwwO2NbZCsyOD4+Ml09ZjtjW2QrMjA+PjJdPTA7Y1tkKzE2Pj4yXT0wO2E9Y1syMjE3Mj4+Ml18MDtoPTE8PGY7YTpkb3tpZigoYSZofDApIT0wKXtnPWNbZz4+Ml18MDtpZigoZnwwKT09MzEpe2Y9MH1lbHNle2Y9MjUtKGY+Pj4xKXwwfWI6ZG97aWYoKGNbZys0Pj4yXSYtOHwwKSE9KG18MCkpe2Y9bTw8ZjthPWc7d2hpbGUoMSl7aD1hKyhmPj4+MzE8PDIpKzE2fDA7Zz1jW2g+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShtfDApKXtlPWc7YnJlYWsgYn1lbHNle2Y9Zjw8MTthPWd9fWlmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2g+PjJdPWQ7Y1tkKzI0Pj4yXT1hO2NbZCsxMj4+Ml09ZDtjW2QrOD4+Ml09ZDticmVhayBhfX1lbHNle2U9Z319d2hpbGUoMCk7Zz1lKzh8MDtmPWNbZz4+Ml18MDtoPWNbMjIxODQ+PjJdfDA7aWYoZT4+PjA8aD4+PjApe1hiKCl9aWYoZj4+PjA8aD4+PjApe1hiKCl9ZWxzZXtjW2YrMTI+PjJdPWQ7Y1tnPj4yXT1kO2NbZCs4Pj4yXT1mO2NbZCsxMj4+Ml09ZTtjW2QrMjQ+PjJdPTA7YnJlYWt9fWVsc2V7Y1syMjE3Mj4+Ml09YXxoO2NbZz4+Ml09ZDtjW2QrMjQ+PjJdPWc7Y1tkKzEyPj4yXT1kO2NbZCs4Pj4yXT1kfX13aGlsZSgwKTt3PShjWzIyMjAwPj4yXXwwKSsgLTF8MDtjWzIyMjAwPj4yXT13O2lmKCh3fDApPT0wKXtkPTIyNjI0fDB9ZWxzZXtpPWI7cmV0dXJufXdoaWxlKDEpe2Q9Y1tkPj4yXXwwO2lmKChkfDApPT0wKXticmVha31lbHNle2Q9ZCs4fDB9fWNbMjIyMDA+PjJdPS0xO2k9YjtyZXR1cm59ZnVuY3Rpb24gd24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtkPWk7aWYoKGF8MCk9PTApe3I9dW4oYil8MDtpPWQ7cmV0dXJuIHJ8MH1pZihiPj4+MD40Mjk0OTY3MjMxKXtjWyhiYigpfDApPj4yXT0xMjtyPTA7aT1kO3JldHVybiByfDB9aWYoYj4+PjA8MTEpe2Y9MTZ9ZWxzZXtmPWIrMTEmLTh9ZT1hKyAtNHwwO2s9Y1tlPj4yXXwwO2w9ayYtODtvPWwrIC04fDA7aD1hK298MDttPWNbMjIxODQ+PjJdfDA7aWYoKGErIC04fDApPj4+MDxtPj4+MCl7WGIoKX1yPWsmMztpZighKChyfDApIT0xJihvfDApPi04KSl7WGIoKX1vPWx8NDtxPWErKG8rIC04KXwwO3A9Y1txPj4yXXwwO2lmKChwJjF8MCk9PTApe1hiKCl9ZG97aWYoKHJ8MCk9PTApe2lmKCEoZj4+PjA8MjU2fGw+Pj4wPChmfDQpPj4+MCk/ISgobC1mfDApPj4+MD5jWzIyNjQ4Pj4yXTw8MT4+PjApOjApe3I9YTtpPWQ7cmV0dXJuIHJ8MH19ZWxzZXtpZighKGw+Pj4wPGY+Pj4wKSl7Zz1sLWZ8MDtpZighKGc+Pj4wPjE1KSl7cj1hO2k9ZDtyZXR1cm4gcnwwfWNbZT4+Ml09ayYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPWd8MztjW3E+PjJdPWNbcT4+Ml18MTt4bihhKyhmKyAtOCl8MCxnKTtyPWE7aT1kO3JldHVybiByfDB9aWYoKGh8MCk9PShjWzIyMTkyPj4yXXwwKSl7Zz0oY1syMjE4MD4+Ml18MCkrbHwwO2lmKCEoZz4+PjA+Zj4+PjApKXticmVha31yPWctZnwwO2NbZT4+Ml09ayYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPXJ8MTtjWzIyMTkyPj4yXT1hKyhmKyAtOCk7Y1syMjE4MD4+Ml09cjtyPWE7aT1kO3JldHVybiByfDB9aWYoKGh8MCk9PShjWzIyMTg4Pj4yXXwwKSl7Zz0oY1syMjE3Nj4+Ml18MCkrbHwwO2lmKGc+Pj4wPGY+Pj4wKXticmVha31oPWctZnwwO2lmKGg+Pj4wPjE1KXtjW2U+PjJdPWsmMXxmfDI7Y1thKygoZnw0KSsgLTgpPj4yXT1ofDE7Y1thKyhnKyAtOCk+PjJdPWg7ZT1hKyhnKyAtNCl8MDtjW2U+PjJdPWNbZT4+Ml0mLTI7ZT1hKyhmKyAtOCl8MH1lbHNle2NbZT4+Ml09ayYxfGd8MjtlPWErKGcrIC00KXwwO2NbZT4+Ml09Y1tlPj4yXXwxO2U9MDtoPTB9Y1syMjE3Nj4+Ml09aDtjWzIyMTg4Pj4yXT1lO3I9YTtpPWQ7cmV0dXJuIHJ8MH1pZigocCYyfDApPT0wPyhnPShwJi04KStsfDAsIShnPj4+MDxmPj4+MCkpOjApe2s9Zy1mfDA7Yj1wPj4+Mztkb3tpZighKHA+Pj4wPDI1Nikpe249Y1thKyhsKzE2KT4+Ml18MDtvPWNbYStvPj4yXXwwO2Rve2lmKChvfDApPT0oaHwwKSl7Yj1hKyhsKzEyKXwwO289Y1tiPj4yXXwwO2lmKChvfDApPT0wKXtiPWErKGwrOCl8MDtvPWNbYj4+Ml18MDtpZigob3wwKT09MCl7aj0wO2JyZWFrfX13aGlsZSgxKXtxPW8rMjB8MDtwPWNbcT4+Ml18MDtpZigocHwwKSE9MCl7bz1wO2I9cTtjb250aW51ZX1wPW8rMTZ8MDtxPWNbcD4+Ml18MDtpZigocXwwKT09MCl7YnJlYWt9ZWxzZXtvPXE7Yj1wfX1pZihiPj4+MDxtPj4+MCl7WGIoKX1lbHNle2NbYj4+Ml09MDtqPW87YnJlYWt9fWVsc2V7Yj1jW2ErbD4+Ml18MDtpZihiPj4+MDxtPj4+MCl7WGIoKX1wPWIrMTJ8MDtpZigoY1twPj4yXXwwKSE9KGh8MCkpe1hiKCl9bT1vKzh8MDtpZigoY1ttPj4yXXwwKT09KGh8MCkpe2NbcD4+Ml09bztjW20+PjJdPWI7aj1vO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChufDApIT0wKXtvPWNbYSsobCsyMCk+PjJdfDA7bT0yMjQ3Misobzw8Mil8MDtpZigoaHwwKT09KGNbbT4+Ml18MCkpe2NbbT4+Ml09ajtpZigoanwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxvKTticmVha319ZWxzZXtpZihuPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfW09bisxNnwwO2lmKChjW20+PjJdfDApPT0oaHwwKSl7Y1ttPj4yXT1qfWVsc2V7Y1tuKzIwPj4yXT1qfWlmKChqfDApPT0wKXticmVha319aWYoaj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2orMjQ+PjJdPW47aD1jW2ErKGwrOCk+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2orMTY+PjJdPWg7Y1toKzI0Pj4yXT1qO2JyZWFrfX19d2hpbGUoMCk7aD1jW2ErKGwrMTIpPj4yXXwwO2lmKChofDApPT0wKXticmVha31pZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tqKzIwPj4yXT1oO2NbaCsyND4+Ml09ajticmVha319fWVsc2V7aj1jW2ErbD4+Ml18MDtsPWNbYStvPj4yXXwwO289MjIyMDgrKGI8PDE8PDIpfDA7aWYoKGp8MCkhPShvfDApKXtpZihqPj4+MDxtPj4+MCl7WGIoKX1pZigoY1tqKzEyPj4yXXwwKSE9KGh8MCkpe1hiKCl9fWlmKChsfDApPT0oanwwKSl7Y1s1NTQyXT1jWzU1NDJdJn4oMTw8Yik7YnJlYWt9ZG97aWYoKGx8MCk9PShvfDApKXtuPWwrOHwwfWVsc2V7aWYobD4+PjA8bT4+PjApe1hiKCl9bT1sKzh8MDtpZigoY1ttPj4yXXwwKT09KGh8MCkpe249bTticmVha31YYigpfX13aGlsZSgwKTtjW2orMTI+PjJdPWw7Y1tuPj4yXT1qfX13aGlsZSgwKTtpZihrPj4+MDwxNil7Y1tlPj4yXT1nfGNbZT4+Ml0mMXwyO3I9YSsoKGd8NCkrIC04KXwwO2Nbcj4+Ml09Y1tyPj4yXXwxO3I9YTtpPWQ7cmV0dXJuIHJ8MH1lbHNle2NbZT4+Ml09Y1tlPj4yXSYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPWt8MztyPWErKChnfDQpKyAtOCl8MDtjW3I+PjJdPWNbcj4+Ml18MTt4bihhKyhmKyAtOCl8MCxrKTtyPWE7aT1kO3JldHVybiByfDB9fX19d2hpbGUoMCk7Zj11bihiKXwwO2lmKChmfDApPT0wKXtyPTA7aT1kO3JldHVybiByfDB9cj1jW2U+PjJdfDA7cj0ociYtOCktKChyJjN8MCk9PTA/ODo0KXwwO0xuKGZ8MCxhfDAsKHI+Pj4wPGI+Pj4wP3I6Yil8MCl8MDt2bihhKTtyPWY7aT1kO3JldHVybiByfDB9ZnVuY3Rpb24geG4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7ZD1pO2g9YStifDA7bD1jW2ErND4+Ml18MDtkb3tpZigobCYxfDApPT0wKXtwPWNbYT4+Ml18MDtpZigobCYzfDApPT0wKXtpPWQ7cmV0dXJufWw9YSsoMC1wKXwwO209cCtifDA7cT1jWzIyMTg0Pj4yXXwwO2lmKGw+Pj4wPHE+Pj4wKXtYYigpfWlmKChsfDApPT0oY1syMjE4OD4+Ml18MCkpe2U9YSsoYis0KXwwO2lmKChjW2U+PjJdJjN8MCkhPTMpe2U9bDtuPW07YnJlYWt9Y1syMjE3Nj4+Ml09bTtjW2U+PjJdPWNbZT4+Ml0mLTI7Y1thKyg0LXApPj4yXT1tfDE7Y1toPj4yXT1tO2k9ZDtyZXR1cm59cz1wPj4+MztpZihwPj4+MDwyNTYpe2U9Y1thKyg4LXApPj4yXXwwO249Y1thKygxMi1wKT4+Ml18MDtvPTIyMjA4KyhzPDwxPDwyKXwwO2lmKChlfDApIT0ob3wwKSl7aWYoZT4+PjA8cT4+PjApe1hiKCl9aWYoKGNbZSsxMj4+Ml18MCkhPShsfDApKXtYYigpfX1pZigobnwwKT09KGV8MCkpe2NbNTU0Ml09Y1s1NTQyXSZ+KDE8PHMpO2U9bDtuPW07YnJlYWt9aWYoKG58MCkhPShvfDApKXtpZihuPj4+MDxxPj4+MCl7WGIoKX1vPW4rOHwwO2lmKChjW28+PjJdfDApPT0obHwwKSl7cj1vfWVsc2V7WGIoKX19ZWxzZXtyPW4rOHwwfWNbZSsxMj4+Ml09bjtjW3I+PjJdPWU7ZT1sO249bTticmVha31yPWNbYSsoMjQtcCk+PjJdfDA7dD1jW2ErKDEyLXApPj4yXXwwO2Rve2lmKCh0fDApPT0obHwwKSl7dT0xNi1wfDA7dD1hKyh1KzQpfDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe3Q9YSt1fDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe289MDticmVha319d2hpbGUoMSl7dT1zKzIwfDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCkhPTApe3M9djt0PXU7Y29udGludWV9dj1zKzE2fDA7dT1jW3Y+PjJdfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7cz11O3Q9dn19aWYodD4+PjA8cT4+PjApe1hiKCl9ZWxzZXtjW3Q+PjJdPTA7bz1zO2JyZWFrfX1lbHNle3M9Y1thKyg4LXApPj4yXXwwO2lmKHM+Pj4wPHE+Pj4wKXtYYigpfXU9cysxMnwwO2lmKChjW3U+PjJdfDApIT0obHwwKSl7WGIoKX1xPXQrOHwwO2lmKChjW3E+PjJdfDApPT0obHwwKSl7Y1t1Pj4yXT10O2NbcT4+Ml09cztvPXQ7YnJlYWt9ZWxzZXtYYigpfX19d2hpbGUoMCk7aWYoKHJ8MCkhPTApe3E9Y1thKygyOC1wKT4+Ml18MDtzPTIyNDcyKyhxPDwyKXwwO2lmKChsfDApPT0oY1tzPj4yXXwwKSl7Y1tzPj4yXT1vO2lmKChvfDApPT0wKXtjWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PHEpO2U9bDtuPW07YnJlYWt9fWVsc2V7aWYocj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1xPXIrMTZ8MDtpZigoY1txPj4yXXwwKT09KGx8MCkpe2NbcT4+Ml09b31lbHNle2NbcisyMD4+Ml09b31pZigob3wwKT09MCl7ZT1sO249bTticmVha319aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW28rMjQ+PjJdPXI7cD0xNi1wfDA7cT1jW2ErcD4+Ml18MDtkb3tpZigocXwwKSE9MCl7aWYocT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbbysxNj4+Ml09cTtjW3ErMjQ+PjJdPW87YnJlYWt9fX13aGlsZSgwKTtwPWNbYSsocCs0KT4+Ml18MDtpZigocHwwKSE9MCl7aWYocD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbbysyMD4+Ml09cDtjW3ArMjQ+PjJdPW87ZT1sO249bTticmVha319ZWxzZXtlPWw7bj1tfX1lbHNle2U9bDtuPW19fWVsc2V7ZT1hO249Yn19d2hpbGUoMCk7bD1jWzIyMTg0Pj4yXXwwO2lmKGg+Pj4wPGw+Pj4wKXtYYigpfW09YSsoYis0KXwwO289Y1ttPj4yXXwwO2lmKChvJjJ8MCk9PTApe2lmKChofDApPT0oY1syMjE5Mj4+Ml18MCkpe3Y9KGNbMjIxODA+PjJdfDApK258MDtjWzIyMTgwPj4yXT12O2NbMjIxOTI+PjJdPWU7Y1tlKzQ+PjJdPXZ8MTtpZigoZXwwKSE9KGNbMjIxODg+PjJdfDApKXtpPWQ7cmV0dXJufWNbMjIxODg+PjJdPTA7Y1syMjE3Nj4+Ml09MDtpPWQ7cmV0dXJufWlmKChofDApPT0oY1syMjE4OD4+Ml18MCkpe3Y9KGNbMjIxNzY+PjJdfDApK258MDtjWzIyMTc2Pj4yXT12O2NbMjIxODg+PjJdPWU7Y1tlKzQ+PjJdPXZ8MTtjW2Urdj4+Ml09djtpPWQ7cmV0dXJufW49KG8mLTgpK258MDttPW8+Pj4zO2Rve2lmKCEobz4+PjA8MjU2KSl7az1jW2ErKGIrMjQpPj4yXXwwO209Y1thKyhiKzEyKT4+Ml18MDtkb3tpZigobXwwKT09KGh8MCkpe289YSsoYisyMCl8MDttPWNbbz4+Ml18MDtpZigobXwwKT09MCl7bz1hKyhiKzE2KXwwO209Y1tvPj4yXXwwO2lmKChtfDApPT0wKXtqPTA7YnJlYWt9fXdoaWxlKDEpe3E9bSsyMHwwO3A9Y1txPj4yXXwwO2lmKChwfDApIT0wKXttPXA7bz1xO2NvbnRpbnVlfXA9bSsxNnwwO3E9Y1twPj4yXXwwO2lmKChxfDApPT0wKXticmVha31lbHNle209cTtvPXB9fWlmKG8+Pj4wPGw+Pj4wKXtYYigpfWVsc2V7Y1tvPj4yXT0wO2o9bTticmVha319ZWxzZXtvPWNbYSsoYis4KT4+Ml18MDtpZihvPj4+MDxsPj4+MCl7WGIoKX1sPW8rMTJ8MDtpZigoY1tsPj4yXXwwKSE9KGh8MCkpe1hiKCl9cD1tKzh8MDtpZigoY1twPj4yXXwwKT09KGh8MCkpe2NbbD4+Ml09bTtjW3A+PjJdPW87aj1tO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChrfDApIT0wKXtsPWNbYSsoYisyOCk+PjJdfDA7bT0yMjQ3MisobDw8Mil8MDtpZigoaHwwKT09KGNbbT4+Ml18MCkpe2NbbT4+Ml09ajtpZigoanwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxsKTticmVha319ZWxzZXtpZihrPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWw9aysxNnwwO2lmKChjW2w+PjJdfDApPT0oaHwwKSl7Y1tsPj4yXT1qfWVsc2V7Y1trKzIwPj4yXT1qfWlmKChqfDApPT0wKXticmVha319aWYoaj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2orMjQ+PjJdPWs7aD1jW2ErKGIrMTYpPj4yXXwwO2Rve2lmKChofDApIT0wKXtpZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tqKzE2Pj4yXT1oO2NbaCsyND4+Ml09ajticmVha319fXdoaWxlKDApO2g9Y1thKyhiKzIwKT4+Ml18MDtpZigoaHwwKSE9MCl7aWYoaD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbaisyMD4+Ml09aDtjW2grMjQ+PjJdPWo7YnJlYWt9fX19ZWxzZXtqPWNbYSsoYis4KT4+Ml18MDthPWNbYSsoYisxMik+PjJdfDA7Yj0yMjIwOCsobTw8MTw8Mil8MDtpZigoanwwKSE9KGJ8MCkpe2lmKGo+Pj4wPGw+Pj4wKXtYYigpfWlmKChjW2orMTI+PjJdfDApIT0oaHwwKSl7WGIoKX19aWYoKGF8MCk9PShqfDApKXtjWzU1NDJdPWNbNTU0Ml0mfigxPDxtKTticmVha31pZigoYXwwKSE9KGJ8MCkpe2lmKGE+Pj4wPGw+Pj4wKXtYYigpfWI9YSs4fDA7aWYoKGNbYj4+Ml18MCk9PShofDApKXtrPWJ9ZWxzZXtYYigpfX1lbHNle2s9YSs4fDB9Y1tqKzEyPj4yXT1hO2Nbaz4+Ml09an19d2hpbGUoMCk7Y1tlKzQ+PjJdPW58MTtjW2Urbj4+Ml09bjtpZigoZXwwKT09KGNbMjIxODg+PjJdfDApKXtjWzIyMTc2Pj4yXT1uO2k9ZDtyZXR1cm59fWVsc2V7Y1ttPj4yXT1vJi0yO2NbZSs0Pj4yXT1ufDE7Y1tlK24+PjJdPW59YT1uPj4+MztpZihuPj4+MDwyNTYpe2I9YTw8MTtoPTIyMjA4KyhiPDwyKXwwO2o9Y1s1NTQyXXwwO2E9MTw8YTtpZigoaiZhfDApIT0wKXtiPTIyMjA4KyhiKzI8PDIpfDA7YT1jW2I+PjJdfDA7aWYoYT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2c9YjtmPWF9fWVsc2V7Y1s1NTQyXT1qfGE7Zz0yMjIwOCsoYisyPDwyKXwwO2Y9aH1jW2c+PjJdPWU7Y1tmKzEyPj4yXT1lO2NbZSs4Pj4yXT1mO2NbZSsxMj4+Ml09aDtpPWQ7cmV0dXJufWY9bj4+Pjg7aWYoKGZ8MCkhPTApe2lmKG4+Pj4wPjE2Nzc3MjE1KXtmPTMxfWVsc2V7dT0oZisxMDQ4MzIwfDApPj4+MTYmODt2PWY8PHU7dD0odis1MjAxOTJ8MCk+Pj4xNiY0O3Y9djw8dDtmPSh2KzI0NTc2MHwwKT4+PjE2JjI7Zj0xNC0odHx1fGYpKyh2PDxmPj4+MTUpfDA7Zj1uPj4+KGYrN3wwKSYxfGY8PDF9fWVsc2V7Zj0wfWE9MjI0NzIrKGY8PDIpfDA7Y1tlKzI4Pj4yXT1mO2NbZSsyMD4+Ml09MDtjW2UrMTY+PjJdPTA7aD1jWzIyMTcyPj4yXXwwO2c9MTw8ZjtpZigoaCZnfDApPT0wKXtjWzIyMTcyPj4yXT1ofGc7Y1thPj4yXT1lO2NbZSsyND4+Ml09YTtjW2UrMTI+PjJdPWU7Y1tlKzg+PjJdPWU7aT1kO3JldHVybn1nPWNbYT4+Ml18MDtpZigoZnwwKT09MzEpe2Y9MH1lbHNle2Y9MjUtKGY+Pj4xKXwwfWE6ZG97aWYoKGNbZys0Pj4yXSYtOHwwKSE9KG58MCkpe2Y9bjw8ZjthPWc7d2hpbGUoMSl7aD1hKyhmPj4+MzE8PDIpKzE2fDA7Zz1jW2g+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShufDApKXticmVhayBhfWVsc2V7Zj1mPDwxO2E9Z319aWYoaD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2g+PjJdPWU7Y1tlKzI0Pj4yXT1hO2NbZSsxMj4+Ml09ZTtjW2UrOD4+Ml09ZTtpPWQ7cmV0dXJufX13aGlsZSgwKTtmPWcrOHwwO2E9Y1tmPj4yXXwwO2g9Y1syMjE4ND4+Ml18MDtpZihnPj4+MDxoPj4+MCl7WGIoKX1pZihhPj4+MDxoPj4+MCl7WGIoKX1jW2ErMTI+PjJdPWU7Y1tmPj4yXT1lO2NbZSs4Pj4yXT1hO2NbZSsxMj4+Ml09ZztjW2UrMjQ+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiB5bihhKXthPWF8MDt2YXIgYj0wO2I9aTtSYihhfDApO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIHpuKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBBbihhKXthPWF8MDtyZXR1cm4gMjI2OTZ9ZnVuY3Rpb24gQm4oYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO2g9aTtpZihlPj4+MD4zNil7Y1soYmIoKXwwKT4+Ml09MjI7cz0wO3Q9MDtJPXM7aT1oO3JldHVybiB0fDB9az1iKzR8MDtqPWIrMTAwfDA7ZG97bD1jW2s+PjJdfDA7aWYobD4+PjA8KGNbaj4+Ml18MCk+Pj4wKXtjW2s+PjJdPWwrMTtvPWRbbD4+MF18MH1lbHNle289RG4oYil8MH19d2hpbGUoKG98MCk9PTMyfChvKyAtOXwwKT4+PjA8NSk7ZG97aWYoKG98MCk9PTQzfChvfDApPT00NSl7bD0oKG98MCk9PTQ1KTw8MzE+PjMxO209Y1trPj4yXXwwO2lmKG0+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1tKzE7bz1kW20+PjBdfDA7YnJlYWt9ZWxzZXtvPURuKGIpfDA7YnJlYWt9fWVsc2V7bD0wfX13aGlsZSgwKTttPShlfDApPT0wO2Rve2lmKChlJi0xN3wwKT09MCYob3wwKT09NDgpe249Y1trPj4yXXwwO2lmKG4+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1uKzE7bz1kW24+PjBdfDB9ZWxzZXtvPURuKGIpfDB9aWYoKG98MzJ8MCkhPTEyMCl7ZT1tPzg6ZTttPTI4O2JyZWFrfWU9Y1trPj4yXXwwO2lmKGU+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1lKzE7bz1kW2U+PjBdfDB9ZWxzZXtvPURuKGIpfDB9aWYoKGRbbysyMjc0NT4+MF18MCk+MTUpe2lmKChjW2o+PjJdfDApPT0wKXtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH1jW2s+PjJdPShjW2s+PjJdfDApKyAtMjtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH1lbHNle2U9MTY7bT00M319ZWxzZXtlPW0/MTA6ZTtpZigoZFtvKzIyNzQ1Pj4wXXwwKT4+PjA8ZT4+PjApe209Mjh9ZWxzZXtmPWNbaz4+Ml18MDtpZigoY1tqPj4yXXwwKSE9MCl7Zj1mKyAtMXwwO2Nbaz4+Ml09Zn1jW2IrMTA0Pj4yXT0wO3M9Y1tiKzg+PjJdfDA7Y1tiKzEwOD4+Ml09cy1mO2Nbaj4+Ml09cztjWyhiYigpfDApPj4yXT0yMjtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH19fXdoaWxlKDApO2lmKChtfDApPT0yOCl7aWYoKGV8MCk9PTEwKXtlPW8rIC00OHwwO2lmKGU+Pj4wPDEwKXtuPTA7d2hpbGUoMSl7bj1uK2V8MDtlPWNbaz4+Ml18MDtpZihlPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09ZSsxO289ZFtlPj4wXXwwfWVsc2V7bz1EbihiKXwwfWU9bysgLTQ4fDA7aWYoIShlPj4+MDwxMCZuPj4+MDw0Mjk0OTY3MjkpKXticmVha31uPW4qMTB8MH1wPTB9ZWxzZXtuPTA7cD0wfWU9bysgLTQ4fDA7aWYoZT4+PjA8MTApe2Rve3M9Vm4obnwwLHB8MCwxMCwwKXwwO3I9STtxPSgoZXwwKTwwKTw8MzE+PjMxO3Q9fnE7aWYocj4+PjA+dD4+PjB8KHJ8MCk9PSh0fDApJnM+Pj4wPn5lPj4+MCl7YnJlYWt9bj1JbihzfDAscnwwLGV8MCxxfDApfDA7cD1JO2U9Y1trPj4yXXwwO2lmKGU+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1lKzE7bz1kW2U+PjBdfDB9ZWxzZXtvPURuKGIpfDB9ZT1vKyAtNDh8MH13aGlsZShlPj4+MDwxMCYocD4+PjA8NDI5NDk2NzI5fChwfDApPT00Mjk0OTY3Mjkmbj4+PjA8MjU3Njk4MDM3OCkpO2lmKCEoZT4+PjA+OSkpe2U9MTA7bT02OX19fWVsc2V7bT00M319YTpkb3tpZigobXwwKT09NDMpe2lmKChlKyAtMSZlfDApPT0wKXttPWFbMjMwMDgrKChlKjIzfDApPj4+NSY3KT4+MF18MDtyPWFbbysyMjc0NT4+MF18MDtuPXImMjU1O2lmKG4+Pj4wPGU+Pj4wKXtvPW47bj0wO2Rve249b3xuPDxtO289Y1trPj4yXXwwO2lmKG8+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1vKzE7cz1kW28+PjBdfDB9ZWxzZXtzPURuKGIpfDB9cj1hW3MrMjI3NDU+PjBdfDA7bz1yJjI1NX13aGlsZShvPj4+MDxlPj4+MCZuPj4+MDwxMzQyMTc3MjgpO3A9MH1lbHNle3A9MDtuPTA7cz1vfXE9S24oLTEsLTEsbXwwKXwwO289STtpZigociYyNTUpPj4+MD49ZT4+PjB8KHA+Pj4wPm8+Pj4wfChwfDApPT0ob3wwKSZuPj4+MD5xPj4+MCkpe289czttPTY5O2JyZWFrfXdoaWxlKDEpe249T24obnwwLHB8MCxtfDApfDA7cD1JO249ciYyNTV8bjtyPWNbaz4+Ml18MDtpZihyPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09cisxO3M9ZFtyPj4wXXwwfWVsc2V7cz1EbihiKXwwfXI9YVtzKzIyNzQ1Pj4wXXwwO2lmKChyJjI1NSk+Pj4wPj1lPj4+MHwocD4+PjA+bz4+PjB8KHB8MCk9PShvfDApJm4+Pj4wPnE+Pj4wKSl7bz1zO209Njk7YnJlYWsgYX19fXE9YVtvKzIyNzQ1Pj4wXXwwO209cSYyNTU7aWYobT4+PjA8ZT4+PjApe249MDtkb3tuPW0rKGVhKG4sZSl8MCl8MDttPWNbaz4+Ml18MDtpZihtPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09bSsxO3I9ZFttPj4wXXwwfWVsc2V7cj1EbihiKXwwfXE9YVtyKzIyNzQ1Pj4wXXwwO209cSYyNTV9d2hpbGUobT4+PjA8ZT4+PjAmbj4+PjA8MTE5MzA0NjQ3KTtwPTB9ZWxzZXtuPTA7cD0wO3I9b31pZigocSYyNTUpPj4+MDxlPj4+MCl7bT1XbigtMSwtMSxlfDAsMCl8MDtvPUk7d2hpbGUoMSl7aWYocD4+PjA+bz4+PjB8KHB8MCk9PShvfDApJm4+Pj4wPm0+Pj4wKXtvPXI7bT02OTticmVhayBhfXM9Vm4obnwwLHB8MCxlfDAsMCl8MDt0PUk7cT1xJjI1NTtpZih0Pj4+MD40Mjk0OTY3Mjk1fCh0fDApPT0tMSZzPj4+MD5+cT4+PjApe289cjttPTY5O2JyZWFrIGF9bj1JbihxfDAsMCxzfDAsdHwwKXwwO3A9STtxPWNbaz4+Ml18MDtpZihxPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09cSsxO3I9ZFtxPj4wXXwwfWVsc2V7cj1EbihiKXwwfXE9YVtyKzIyNzQ1Pj4wXXwwO2lmKCEoKHEmMjU1KT4+PjA8ZT4+PjApKXtvPXI7bT02OTticmVha319fWVsc2V7bz1yO209Njl9fX13aGlsZSgwKTtpZigobXwwKT09Njkpe2lmKChkW28rMjI3NDU+PjBdfDApPj4+MDxlPj4+MCl7ZG97bT1jW2s+PjJdfDA7aWYobT4+PjA8KGNbaj4+Ml18MCk+Pj4wKXtjW2s+PjJdPW0rMTttPWRbbT4+MF18MH1lbHNle209RG4oYil8MH19d2hpbGUoKGRbbSsyMjc0NT4+MF18MCk+Pj4wPGU+Pj4wKTtjWyhiYigpfDApPj4yXT0zNDtwPWc7bj1mfX1pZigoY1tqPj4yXXwwKSE9MCl7Y1trPj4yXT0oY1trPj4yXXwwKSsgLTF9aWYoIShwPj4+MDxnPj4+MHwocHwwKT09KGd8MCkmbj4+PjA8Zj4+PjApKXtpZigoZiYxfDApPT0wJjA9PTAmKGx8MCk9PTApe2NbKGJiKCl8MCk+PjJdPTM0O3Q9SW4oZnwwLGd8MCwtMSwtMSl8MDtzPUk7ST1zO2k9aDtyZXR1cm4gdHwwfWlmKHA+Pj4wPmc+Pj4wfChwfDApPT0oZ3wwKSZuPj4+MD5mPj4+MCl7Y1soYmIoKXwwKT4+Ml09MzQ7cz1nO3Q9ZjtJPXM7aT1oO3JldHVybiB0fDB9fXQ9KChsfDApPDApPDwzMT4+MzE7dD1IbihuXmx8MCxwXnR8MCxsfDAsdHwwKXwwO3M9STtJPXM7aT1oO3JldHVybiB0fDB9ZnVuY3Rpb24gQ24oYSl7YT1hfDA7dmFyIGI9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZT1pO2Y9YSs0fDA7Zz1jW2Y+PjJdfDA7Yj1hKzEwMHwwO2lmKGc+Pj4wPChjW2I+PjJdfDApPj4+MCl7Y1tmPj4yXT1nKzE7aj1kW2c+PjBdfDB9ZWxzZXtqPURuKGEpfDB9aWYoKGp8MCk9PTQzfChqfDApPT00NSl7Zz0oanwwKT09NDUmMTtoPWNbZj4+Ml18MDtpZihoPj4+MDwoY1tiPj4yXXwwKT4+PjApe2NbZj4+Ml09aCsxO2o9ZFtoPj4wXXwwfWVsc2V7aj1EbihhKXwwfWlmKCEoKGorIC00OHwwKT4+PjA8MTApPyhjW2I+PjJdfDApIT0wOjApe2NbZj4+Ml09KGNbZj4+Ml18MCkrIC0xfX1lbHNle2c9MH1pZigoaisgLTQ4fDApPj4+MD45KXtpZigoY1tiPj4yXXwwKT09MCl7az0tMjE0NzQ4MzY0ODtsPTA7ST1rO2k9ZTtyZXR1cm4gbHwwfWNbZj4+Ml09KGNbZj4+Ml18MCkrIC0xO2s9LTIxNDc0ODM2NDg7bD0wO0k9aztpPWU7cmV0dXJuIGx8MH1lbHNle2g9MH13aGlsZSgxKXtoPWorIC00OCtofDA7aj1jW2Y+PjJdfDA7aWYoaj4+PjA8KGNbYj4+Ml18MCk+Pj4wKXtjW2Y+PjJdPWorMTtqPWRbaj4+MF18MH1lbHNle2o9RG4oYSl8MH1sPShqKyAtNDh8MCk+Pj4wPDEwO2lmKCEobCYoaHwwKTwyMTQ3NDgzNjQpKXticmVha31oPWgqMTB8MH1rPSgoaHwwKTwwKTw8MzE+PjMxO2lmKGwpe2Rve2s9Vm4oaHwwLGt8MCwxMCwwKXwwO2g9STtqPUluKGp8MCwoKGp8MCk8MCk8PDMxPj4zMXwwLC00OCwtMSl8MDtoPUluKGp8MCxJfDAsa3wwLGh8MCl8MDtrPUk7aj1jW2Y+PjJdfDA7aWYoaj4+PjA8KGNbYj4+Ml18MCk+Pj4wKXtjW2Y+PjJdPWorMTtqPWRbaj4+MF18MH1lbHNle2o9RG4oYSl8MH19d2hpbGUoKGorIC00OHwwKT4+PjA8MTAmKChrfDApPDIxNDc0ODM2fChrfDApPT0yMTQ3NDgzNiZoPj4+MDwyMDYxNTg0MzAyKSl9aWYoKGorIC00OHwwKT4+PjA8MTApe2Rve2o9Y1tmPj4yXXwwO2lmKGo+Pj4wPChjW2I+PjJdfDApPj4+MCl7Y1tmPj4yXT1qKzE7aj1kW2o+PjBdfDB9ZWxzZXtqPURuKGEpfDB9fXdoaWxlKChqKyAtNDh8MCk+Pj4wPDEwKX1pZigoY1tiPj4yXXwwKSE9MCl7Y1tmPj4yXT0oY1tmPj4yXXwwKSsgLTF9aj0oZ3wwKSE9MDtsPUhuKDAsMCxofDAsa3wwKXwwO2s9aj9JOms7bD1qP2w6aDtJPWs7aT1lO3JldHVybiBsfDB9ZnVuY3Rpb24gRG4oYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtlPWk7aD1iKzEwNHwwO2w9Y1toPj4yXXwwO2lmKCEoKGx8MCkhPTA/KGNbYisxMDg+PjJdfDApPj0obHwwKTowKSl7Zz0zfWlmKChnfDApPT0zPyhmPUVuKGIpfDAsKGZ8MCk+PTApOjApe2w9Y1toPj4yXXwwO2g9Y1tiKzg+PjJdfDA7az1jW2IrND4+Ml18MDtpZigobHwwKSE9MD8oaj1sLShjW2IrMTA4Pj4yXXwwKSsgLTF8MCwoaC1rfDApPihqfDApKTowKXtjW2IrMTAwPj4yXT1rK2p9ZWxzZXtnPTh9aWYoKGd8MCk9PTgpe2NbYisxMDA+PjJdPWh9aWYoKGh8MCkhPTApe2w9YisxMDh8MDtjW2w+PjJdPWgrMS1rKyhjW2w+PjJdfDApfWI9aysgLTF8MDtpZigoZFtiPj4wXXwwfDApPT0oZnwwKSl7bD1mO2k9ZTtyZXR1cm4gbHwwfWFbYj4+MF09ZjtsPWY7aT1lO3JldHVybiBsfDB9Y1tiKzEwMD4+Ml09MDtsPS0xO2k9ZTtyZXR1cm4gbHwwfWZ1bmN0aW9uIEVuKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2c9aTtpPWkrMTZ8MDtlPWc7Zj1iKzh8MDtkb3tpZigoY1tmPj4yXXwwKT09MCl7aj1iKzc0fDA7aD1hW2o+PjBdfDA7YVtqPj4wXT1oKzI1NXxoO2o9YisyMHwwO2g9Yis0NHwwO2lmKChjW2o+PjJdfDApPj4+MD4oY1toPj4yXXwwKT4+PjApe2hjW2NbYiszNj4+Ml0mNjNdKGIsMCwwKXwwfWNbYisxNj4+Ml09MDtjW2IrMjg+PjJdPTA7Y1tqPj4yXT0wO2o9Y1tiPj4yXXwwO2lmKChqJjIwfDApPT0wKXtqPWNbaD4+Ml18MDtjW2Y+PjJdPWo7Y1tiKzQ+PjJdPWo7YnJlYWt9aWYoKGomNHwwKT09MCl7aj0tMTtpPWc7cmV0dXJuIGp8MH1jW2I+PjJdPWp8MzI7aj0tMTtpPWc7cmV0dXJuIGp8MH19d2hpbGUoMCk7aWYoKGhjW2NbYiszMj4+Ml0mNjNdKGIsZSwxKXwwKSE9MSl7aj0tMTtpPWc7cmV0dXJuIGp8MH1qPWRbZT4+MF18MDtpPWc7cmV0dXJuIGp8MH1mdW5jdGlvbiBGbihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MC4wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLjAsSj0wLEs9MCxMPTAuMCxNPTAuMCxOPTAuMCxPPTAuMDtmPWk7aT1pKzYyNHwwO289ZisxMTJ8MDtxPWY7bD1xKzB8MDtqPWwrMTA4fDA7ZG97Y1tsPj4yXT0wO2w9bCs0fDB9d2hpbGUoKGx8MCk8KGp8MCkpO209cSs0fDA7Y1ttPj4yXT1iO2w9cSs4fDA7Y1tsPj4yXT0tMTtjW3ErNDQ+PjJdPWI7Y1txKzc2Pj4yXT0tMTtzPXErMTA0fDA7Y1tzPj4yXT0wO2o9cSsxMDh8MDtjW2o+PjJdPX5iO3A9cSsxMDB8MDtjW3A+PjJdPS0xO249Yjt6PS0xO3doaWxlKDEpe2lmKG4+Pj4wPHo+Pj4wKXtjW20+PjJdPW4rMTt6PWRbbj4+MF18MH1lbHNle3o9RG4ocSl8MH1pZighKCh6fDApPT0zMnwoeisgLTl8MCk+Pj4wPDUpKXticmVha31uPWNbbT4+Ml18MDt6PWNbcD4+Ml18MH1kb3tpZigoenwwKT09NDN8KHp8MCk9PTQ1KXtuPTEtKCgoenwwKT09NDUmMSk8PDEpfDA7ej1jW20+PjJdfDA7aWYoej4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXorMTt6PWRbej4+MF18MDticmVha31lbHNle3o9RG4ocSl8MDticmVha319ZWxzZXtuPTF9fXdoaWxlKDApO0I9MDtkb3tpZigoenwzMnwwKSE9KGFbMjMwMjQrQj4+MF18MCkpe2JyZWFrfWRve2lmKEI+Pj4wPDcpe3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDA7YnJlYWt9ZWxzZXt6PURuKHEpfDA7YnJlYWt9fX13aGlsZSgwKTtCPUIrMXwwfXdoaWxlKEI+Pj4wPDgpO2E6ZG97aWYoKEJ8MCk9PTMpe2c9MjF9ZWxzZSBpZigoQnwwKSE9OCl7aWYoIShCPj4+MDw0KSl7aWYoKEJ8MCk9PTgpe2c9MjU7YnJlYWt9ZWxzZXtnPTIxO2JyZWFrfX1iOmRve2lmKChCfDApPT0wKXtCPTA7ZG97aWYoKHp8MzJ8MCkhPShhWzIzMDQwK0I+PjBdfDApKXticmVhayBifWRve2lmKEI+Pj4wPDIpe3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDA7YnJlYWt9ZWxzZXt6PURuKHEpfDA7YnJlYWt9fX13aGlsZSgwKTtCPUIrMXwwfXdoaWxlKEI+Pj4wPDMpfX13aGlsZSgwKTtpZigoQnwwKT09MCl7ZG97aWYoKHp8MCk9PTQ4KXt6PWNbbT4+Ml18MDtpZih6Pj4+MDwoY1twPj4yXXwwKT4+PjApe2NbbT4+Ml09eisxO3o9ZFt6Pj4wXXwwfWVsc2V7ej1EbihxKXwwfWlmKCh6fDMyfDApIT0xMjApe2lmKChjW3A+PjJdfDApPT0wKXt6PTQ4O2JyZWFrfWNbbT4+Ml09KGNbbT4+Ml18MCkrIC0xO3o9NDg7YnJlYWt9bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtGPWRbbz4+MF18MDtEPTB9ZWxzZXtGPURuKHEpfDA7RD0wfXdoaWxlKDEpe2lmKChGfDApPT00Nil7Zz02NTticmVha31lbHNlIGlmKChGfDApIT00OCl7bz0wO3M9MDtBPTA7ej0wO0M9MDtFPTA7SD0xLjA7Qj0wO3c9MC4wO2JyZWFrfW89Y1ttPj4yXXwwO2lmKG8+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1vKzE7Rj1kW28+PjBdfDA7RD0xO2NvbnRpbnVlfWVsc2V7Rj1EbihxKXwwO0Q9MTtjb250aW51ZX19Yzpkb3tpZigoZ3wwKT09NjUpe289Y1ttPj4yXXwwO2lmKG8+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1vKzE7Rj1kW28+PjBdfDB9ZWxzZXtGPURuKHEpfDB9aWYoKEZ8MCk9PTQ4KXtBPS0xO3o9LTE7d2hpbGUoMSl7bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtGPWRbbz4+MF18MH1lbHNle0Y9RG4ocSl8MH1pZigoRnwwKSE9NDgpe289MDtzPTA7RD0xO0M9MTtFPTA7SD0xLjA7Qj0wO3c9MC4wO2JyZWFrIGN9Sz1JbihBfDAsenwwLC0xLC0xKXwwO0E9Szt6PUl9fWVsc2V7bz0wO3M9MDtBPTA7ej0wO0M9MTtFPTA7SD0xLjA7Qj0wO3c9MC4wfX19d2hpbGUoMCk7ZDp3aGlsZSgxKXtLPUYrIC00OHwwO2Rve2lmKCEoSz4+PjA8MTApKXtHPUZ8MzI7Sj0oRnwwKT09NDY7aWYoISgoRysgLTk3fDApPj4+MDw2fEopKXticmVhayBkfWlmKEope2lmKChDfDApPT0wKXtBPXM7ej1vO0M9MTticmVha31lbHNle0Y9NDY7YnJlYWsgZH19ZWxzZXtLPShGfDApPjU3P0crIC04N3wwOks7Zz03OTticmVha319ZWxzZXtnPTc5fX13aGlsZSgwKTtpZigoZ3wwKT09Nzkpe2c9MDtkb3tpZighKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCkpe2lmKChvfDApPDB8KG98MCk9PTAmcz4+PjA8MTQpe049SCouMDYyNTtMPU47dz13K04qKyhLfDApO2JyZWFrfWlmKChLfDApIT0wJihFfDApPT0wKXtFPTE7TD1IO3c9dytIKi41fWVsc2V7TD1IfX1lbHNle0w9SDtCPUsrKEI8PDQpfDB9fXdoaWxlKDApO3M9SW4oc3wwLG98MCwxLDApfDA7bz1JO0Q9MTtIPUx9Rj1jW20+PjJdfDA7aWYoRj4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPUYrMTtGPWRbRj4+MF18MDtjb250aW51ZX1lbHNle0Y9RG4ocSl8MDtjb250aW51ZX19aWYoKER8MCk9PTApe2lmKChjW3A+PjJdfDApIT0wPyh2PWNbbT4+Ml18MCxjW20+PjJdPXYrIC0yLChDfDApIT0wKTowKXtjW20+PjJdPXYrIC0zfXc9KyhufDApKjAuMDticmVhayBhfUs9KEN8MCk9PTA7dj1LP3M6QTt6PUs/bzp6O2lmKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCl7ZG97Qj1CPDw0O3M9SW4oc3wwLG98MCwxLDApfDA7bz1JfXdoaWxlKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCl9aWYoISgoRnwzMnwwKT09MTEyPyh1PUNuKHEpfDAsdD1JLCEoKHV8MCk9PTAmKHR8MCk9PS0yMTQ3NDgzNjQ4KSk6MCkpe2lmKChjW3A+PjJdfDApPT0wKXt1PTA7dD0wfWVsc2V7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTE7dT0wO3Q9MH19bz1Pbih2fDAsenwwLDIpfDA7bz1JbihvfDAsSXwwLC0zMiwtMSl8MDtvPUluKG98MCxJfDAsdXwwLHR8MCl8MDtwPUk7aWYoKEJ8MCk9PTApe3c9KyhufDApKjAuMDticmVhayBhfWlmKChwfDApPjB8KHB8MCk9PTAmbz4+PjA+MTA3NCl7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7YnJlYWsgYX1pZigocHwwKTwtMXwocHwwKT09LTEmbz4+PjA8NDI5NDk2NjExNil7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWsgYX1pZigoQnwwKT4tMSl7ZG97Qj1CPDwxO2lmKCEodz49LjUpKXtIPXd9ZWxzZXtIPXcrLTEuMDtCPUJ8MX13PXcrSDtvPUluKG98MCxwfDAsLTEsLTEpfDA7cD1JfXdoaWxlKChCfDApPi0xKX1wPUluKG98MCxwfDAsMTEwNiwwKXwwO0s9STtkb3tpZigoS3wwKTwwfChLfDApPT0wJnA+Pj4wPDUzPyhyPShwfDApPDA/MDpwLChyfDApPDUzKTowKXtwPTg0LXJ8MDtkb3tpZigocHwwKT4xMDIzKXtxPXArIC0xMDIzfDA7aWYoKHF8MCk8PTEwMjMpe3A9cTtIPTguOTg4NDY1Njc0MzExNThlKzMwNzticmVha31wPXArIC0yMDQ2fDA7cD0ocHwwKT4xMDIzPzEwMjM6cDtIPXl9ZWxzZXtpZighKChwfDApPC0xMDIyKSl7SD0xLjA7YnJlYWt9cT1wKzEwMjJ8MDtpZighKChxfDApPC0xMDIyKSl7cD1xO0g9Mi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWt9cD1wKzIwNDR8MDtwPShwfDApPC0xMDIyPy0xMDIyOnA7SD0wLjB9fXdoaWxlKDApO0o9T24ocCsxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO009KyhufDApO0w9K1NiKCsoSCoraFtrPj4zXSksK00pO2lmKCEoKHJ8MCk8MzImdyE9MC4wKSl7SD1NO2JyZWFrfUs9QiYxO0g9TTtCPShLXjEpK0J8MDt3PShLfDApPT0wPzAuMDp3fWVsc2V7Zz0xMTR9fXdoaWxlKDApO2lmKChnfDApPT0xMTQpe0g9KyhufDApO0w9MC4wfXc9SCp3KyhMK0gqKyhCPj4+MCkpLUw7aWYoISh3IT0wLjApKXtjWyhiYigpfDApPj4yXT0zNH1kb3tpZigob3wwKT4xMDIzKXt3PXcqOC45ODg0NjU2NzQzMTE1OGUrMzA3O249bysgLTEwMjN8MDtpZigobnwwKTw9MTAyMyl7bz1uO2JyZWFrfW89bysgLTIwNDZ8MDtvPShvfDApPjEwMjM/MTAyMzpvO3c9dyo4Ljk4ODQ2NTY3NDMxMTU4ZSszMDd9ZWxzZXtpZighKChvfDApPC0xMDIyKSl7YnJlYWt9dz13KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O249bysxMDIyfDA7aWYoISgobnwwKTwtMTAyMikpe289bjticmVha31vPW8rMjA0NHwwO289KG98MCk8LTEwMjI/LTEwMjI6bzt3PXcqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDh9fXdoaWxlKDApO0o9T24obysxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO3c9dyoraFtrPj4zXTticmVhayBhfX13aGlsZSgwKTtHPTA7d2hpbGUoMSl7aWYoKHp8MCk9PTQ2KXtnPTEzOTticmVha31lbHNlIGlmKCh6fDApIT00OCl7cj0wO0Y9MDtDPTA7YnJlYWt9cj1jW20+PjJdfDA7aWYocj4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXIrMTt6PWRbcj4+MF18MDtHPTE7Y29udGludWV9ZWxzZXt6PURuKHEpfDA7Rz0xO2NvbnRpbnVlfX1lOmRve2lmKChnfDApPT0xMzkpe3I9Y1ttPj4yXXwwO2lmKHI+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1yKzE7ej1kW3I+PjBdfDB9ZWxzZXt6PURuKHEpfDB9aWYoKHp8MCk9PTQ4KXtyPS0xO0Y9LTE7d2hpbGUoMSl7dD1jW20+PjJdfDA7aWYodD4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXQrMTt6PWRbdD4+MF18MH1lbHNle3o9RG4ocSl8MH1pZigoenwwKSE9NDgpe0c9MTtDPTE7YnJlYWsgZX1LPUluKHJ8MCxGfDAsLTEsLTEpfDA7cj1LO0Y9SX19ZWxzZXtyPTA7Rj0wO0M9MX19fXdoaWxlKDApO2Nbbz4+Ml09MDtEPXorIC00OHwwO0o9KHp8MCk9PTQ2O2Y6ZG97aWYoRD4+PjA8MTB8Sil7dD1vKzQ5NnwwO0U9MDtCPTA7QT0wO3Y9MDt1PTA7d2hpbGUoMSl7ZG97aWYoSil7aWYoKEN8MCk9PTApe3I9RTtGPUI7Qz0xfWVsc2V7YnJlYWsgZn19ZWxzZXtKPUluKEV8MCxCfDAsMSwwKXwwO0I9STtLPSh6fDApIT00ODtpZigodnwwKT49MTI1KXtpZighSyl7RT1KO2JyZWFrfWNbdD4+Ml09Y1t0Pj4yXXwxO0U9SjticmVha31FPW8rKHY8PDIpfDA7aWYoKEF8MCkhPTApe0Q9eisgLTQ4KygoY1tFPj4yXXwwKSoxMHwwKXwwfWNbRT4+Ml09RDtBPUErMXwwO0Q9KEF8MCk9PTk7RT1KO0c9MTtBPUQ/MDpBO3Y9KEQmMSkrdnwwO3U9Sz9KOnV9fXdoaWxlKDApO3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDB9ZWxzZXt6PURuKHEpfDB9RD16KyAtNDh8MDtKPSh6fDApPT00NjtpZighKEQ+Pj4wPDEwfEopKXtnPTE2MjticmVha319fWVsc2V7RT0wO0I9MDtBPTA7dj0wO3U9MDtnPTE2Mn19d2hpbGUoMCk7aWYoKGd8MCk9PTE2Mil7Sz0oQ3wwKT09MDtyPUs/RTpyO0Y9Sz9COkZ9dD0oR3wwKSE9MDtpZih0Pyh6fDMyfDApPT0xMDE6MCl7ej1DbihxKXwwO3E9STtpZigoenwwKT09MCYocXwwKT09LTIxNDc0ODM2NDgpe2lmKChjW3A+PjJdfDApPT0wKXt6PTA7cT0wfWVsc2V7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTE7ej0wO3E9MH19cj1Jbih6fDAscXwwLHJ8MCxGfDApfDA7Rj1JfWVsc2V7aWYoKHp8MCk+LTE/KGNbcD4+Ml18MCkhPTA6MCl7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTF9fWlmKCF0KXtjWyhiYigpfDApPj4yXT0yMjtjW3M+PjJdPTA7Sz1jW2w+PjJdfDA7Y1tqPj4yXT1LLShjW20+PjJdfDApO2NbcD4+Ml09Szt3PTAuMDticmVha31wPWNbbz4+Ml18MDtpZigocHwwKT09MCl7dz0rKG58MCkqMC4wO2JyZWFrfWlmKChyfDApPT0oRXwwKSYoRnwwKT09KEJ8MCkmKChCfDApPDB8KEJ8MCk9PTAmRT4+PjA8MTApKXt3PSsobnwwKSorKHA+Pj4wKTticmVha31pZigoRnwwKT4wfChGfDApPT0wJnI+Pj4wPjUzNyl7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7YnJlYWt9aWYoKEZ8MCk8LTF8KEZ8MCk9PS0xJnI+Pj4wPDQyOTQ5NjYxMTYpe2NbKGJiKCl8MCk+PjJdPTM0O3c9KyhufDApKjIuMjI1MDczODU4NTA3MjAxNGUtMzA4KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O2JyZWFrfWlmKChBfDApIT0wKXtpZigoQXwwKTw5KXtxPW8rKHY8PDIpfDA7cD1jW3E+PjJdfDA7ZG97cD1wKjEwfDA7QT1BKzF8MH13aGlsZSgoQXwwKSE9OSk7Y1txPj4yXT1wfXY9disxfDB9ZG97aWYoKHV8MCk8OT8odXwwKTw9KHJ8MCkmKHJ8MCk8MTg6MCl7aWYoKHJ8MCk9PTkpe3c9KyhufDApKisoKGNbbz4+Ml18MCk+Pj4wKTticmVhayBhfWlmKChyfDApPDkpe3c9KyhufDApKisoKGNbbz4+Ml18MCk+Pj4wKS8rKGNbMjMwNTYrKDgtcjw8Mik+PjJdfDApO2JyZWFrIGF9Sz0oZWEociwtMyl8MCkrODB8MDtwPWNbbz4+Ml18MDtpZigoS3wwKTw9MzA/KHA+Pj5LfDApIT0wOjApe2JyZWFrfXc9KyhufDApKisocD4+PjApKisoY1syMzA1NisocisgLTEwPDwyKT4+Ml18MCk7YnJlYWsgYX19d2hpbGUoMCk7cD0ocnwwKSU5fDA7aWYoKHB8MCk9PTApe3A9MDtxPTB9ZWxzZXtzPShyfDApPi0xP3A6cCs5fDA7cT1jWzIzMDU2Kyg4LXM8PDIpPj4yXXwwO2lmKCh2fDApIT0wKXt0PTFlOS8ocXwwKXwwO3A9MDt6PTA7dT0wO2Rve0c9bysodTw8Mil8MDtKPWNbRz4+Ml18MDtLPSgoSj4+PjApLyhxPj4+MCl8MCkrenwwO2NbRz4+Ml09Szt6PWVhKChKPj4+MCklKHE+Pj4wKXwwLHQpfDA7Sj11O3U9dSsxfDA7aWYoKEp8MCk9PShwfDApJihLfDApPT0wKXtwPXUmMTI3O3I9cisgLTl8MH19d2hpbGUoKHV8MCkhPSh2fDApKTtpZigoenwwKSE9MCl7Y1tvKyh2PDwyKT4+Ml09ejt2PXYrMXwwfX1lbHNle3A9MDt2PTB9cT0wO3I9OS1zK3J8MH1nOndoaWxlKDEpe3M9bysocDw8Mil8MDtpZigocnwwKTwxOCl7ZG97dT0wO3M9disxMjd8MDt3aGlsZSgxKXtzPXMmMTI3O3Q9bysoczw8Mil8MDt6PU9uKGNbdD4+Ml18MCwwLDI5KXwwO3o9SW4oenwwLEl8MCx1fDAsMCl8MDt1PUk7aWYodT4+PjA+MHwodXwwKT09MCZ6Pj4+MD4xZTkpe0s9V24oenwwLHV8MCwxZTksMCl8MDt6PVhuKHp8MCx1fDAsMWU5LDApfDA7dT1LfWVsc2V7dT0wfWNbdD4+Ml09ejt0PShzfDApPT0ocHwwKTtpZighKChzfDApIT0odisxMjcmMTI3fDApfHQpKXt2PSh6fDApPT0wP3M6dn1pZih0KXticmVha31lbHNle3M9cysgLTF8MH19cT1xKyAtMjl8MH13aGlsZSgodXwwKT09MCl9ZWxzZXtpZigocnwwKSE9MTgpe2JyZWFrfWRve2lmKCEoKGNbcz4+Ml18MCk+Pj4wPDkwMDcxOTkpKXtyPTE4O2JyZWFrIGd9dT0wO3Q9disxMjd8MDt3aGlsZSgxKXt0PXQmMTI3O3o9bysodDw8Mil8MDtBPU9uKGNbej4+Ml18MCwwLDI5KXwwO0E9SW4oQXwwLEl8MCx1fDAsMCl8MDt1PUk7aWYodT4+PjA+MHwodXwwKT09MCZBPj4+MD4xZTkpe0s9V24oQXwwLHV8MCwxZTksMCl8MDtBPVhuKEF8MCx1fDAsMWU5LDApfDA7dT1LfWVsc2V7dT0wfWNbej4+Ml09QTt6PSh0fDApPT0ocHwwKTtpZighKCh0fDApIT0odisxMjcmMTI3fDApfHopKXt2PShBfDApPT0wP3Q6dn1pZih6KXticmVha31lbHNle3Q9dCsgLTF8MH19cT1xKyAtMjl8MH13aGlsZSgodXwwKT09MCl9cD1wKzEyNyYxMjc7aWYoKHB8MCk9PSh2fDApKXtLPXYrMTI3JjEyNzt2PW8rKCh2KzEyNiYxMjcpPDwyKXwwO2Nbdj4+Ml09Y1t2Pj4yXXxjW28rKEs8PDIpPj4yXTt2PUt9Y1tvKyhwPDwyKT4+Ml09dTtyPXIrOXwwfWg6d2hpbGUoMSl7cz12KzEmMTI3O3Q9bysoKHYrMTI3JjEyNyk8PDIpfDA7d2hpbGUoMSl7ej0ocnwwKT09MTg7dT0ocnwwKT4yNz85OjE7d2hpbGUoMSl7QT0wO3doaWxlKDEpe0I9QStwJjEyNztpZigoQnwwKT09KHZ8MCkpe0E9MjticmVha31CPWNbbysoQjw8Mik+PjJdfDA7RD1jWzIzMDQ4KyhBPDwyKT4+Ml18MDtpZihCPj4+MDxEPj4+MCl7QT0yO2JyZWFrfUM9QSsxfDA7aWYoQj4+PjA+RD4+PjApe2JyZWFrfWlmKChDfDApPDIpe0E9Q31lbHNle0E9QzticmVha319aWYoKEF8MCk9PTImeil7YnJlYWsgaH1xPXUrcXwwO2lmKChwfDApPT0odnwwKSl7cD12fWVsc2V7YnJlYWt9fXo9KDE8PHUpKyAtMXwwO0E9MWU5Pj4+dTtCPXA7Qz0wO2Rve0c9bysocDw8Mil8MDtKPWNbRz4+Ml18MDtLPShKPj4+dSkrQ3wwO2NbRz4+Ml09SztDPWVhKEomeixBKXwwO0s9KHB8MCk9PShCfDApJihLfDApPT0wO3A9cCsxJjEyNztyPUs/cisgLTl8MDpyO0I9Sz9wOkJ9d2hpbGUoKHB8MCkhPSh2fDApKTtpZigoQ3wwKT09MCl7cD1CO2NvbnRpbnVlfWlmKChzfDApIT0oQnwwKSl7YnJlYWt9Y1t0Pj4yXT1jW3Q+PjJdfDE7cD1CfWNbbysodjw8Mik+PjJdPUM7cD1CO3Y9c31yPXAmMTI3O2lmKChyfDApPT0odnwwKSl7Y1tvKyhzKyAtMTw8Mik+PjJdPTA7dj1zfUg9KygoY1tvKyhyPDwyKT4+Ml18MCk+Pj4wKTtyPXArMSYxMjc7aWYoKHJ8MCk9PSh2fDApKXt2PXYrMSYxMjc7Y1tvKyh2KyAtMTw8Mik+PjJdPTB9dz0rKG58MCk7SD13KihIKjEuMGU5KyArKChjW28rKHI8PDIpPj4yXXwwKT4+PjApKTtuPXErNTN8MDtyPXErMTEyN3wwO2Rve2lmKChyfDApPDUzKXtzPShyfDApPDA/MDpyO2lmKChzfDApPj01Myl7TT0wLjA7dD0xO049MC4wO2JyZWFrfXQ9MTA1LXN8MDtkb3tpZigodHwwKT4xMDIzKXt1PXQrIC0xMDIzfDA7aWYoKHV8MCk8PTEwMjMpe3Q9dTtMPTguOTg4NDY1Njc0MzExNThlKzMwNzticmVha310PXQrIC0yMDQ2fDA7dD0odHwwKT4xMDIzPzEwMjM6dDtMPXl9ZWxzZXtpZighKCh0fDApPC0xMDIyKSl7TD0xLjA7YnJlYWt9dT10KzEwMjJ8MDtpZighKCh1fDApPC0xMDIyKSl7dD11O0w9Mi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWt9dD10KzIwNDR8MDt0PSh0fDApPC0xMDIyPy0xMDIyOnQ7TD0wLjB9fXdoaWxlKDApO0s9T24odCsxMDIzfDAsMCw1Mil8MDt0PUk7Y1trPj4yXT1LO2Nbays0Pj4yXT10O0w9K1NiKCsoTCoraFtrPj4zXSksK0gpO3Q9NTMtc3wwO2Rve2lmKCh0fDApPjEwMjMpe3U9dCsgLTEwMjN8MDtpZigodXwwKTw9MTAyMyl7dD11O009OC45ODg0NjU2NzQzMTE1OGUrMzA3O2JyZWFrfXQ9dCsgLTIwNDZ8MDt0PSh0fDApPjEwMjM/MTAyMzp0O009eX1lbHNle2lmKCEoKHR8MCk8LTEwMjIpKXtNPTEuMDticmVha311PXQrMTAyMnwwO2lmKCEoKHV8MCk8LTEwMjIpKXt0PXU7TT0yLjIyNTA3Mzg1ODUwNzIwMTRlLTMwODticmVha310PXQrMjA0NHwwO3Q9KHR8MCk8LTEwMjI/LTEwMjI6dDtNPTAuMH19d2hpbGUoMCk7Sz1Pbih0KzEwMjN8MCwwLDUyKXwwO3Q9STtjW2s+PjJdPUs7Y1trKzQ+PjJdPXQ7Tz0rUGEoK0gsKyhNKitoW2s+PjNdKSk7TT1MO3Q9MTtOPU87SD1MKyhILU8pfWVsc2V7cz01MztNPTAuMDt0PTA7Tj0wLjB9fXdoaWxlKDApO3U9cCsyJjEyNztkb3tpZigodXwwKSE9KHZ8MCkpe289Y1tvKyh1PDwyKT4+Ml18MDtkb3tpZighKG8+Pj4wPDVlOCkpe2lmKG8+Pj4wPjVlOCl7Tj13Ki43NStOO2JyZWFrfWlmKChwKzMmMTI3fDApPT0odnwwKSl7Tj13Ki41K047YnJlYWt9ZWxzZXtOPXcqLjc1K047YnJlYWt9fWVsc2V7aWYoKG98MCk9PTA/KHArMyYxMjd8MCk9PSh2fDApOjApe2JyZWFrfU49dyouMjUrTn19d2hpbGUoMCk7aWYoKDUzLXN8MCk8PTEpe2JyZWFrfWlmKCtQYSgrTiwxLjApIT0wLjApe2JyZWFrfU49TisxLjB9fXdoaWxlKDApO3c9SCtOLU07ZG97aWYoKG4mMjE0NzQ4MzY0NCk+Pj4wPjEwMTkpe2lmKCtUKCt3KT49OTAwNzE5OTI1NDc0MDk5Mi4wKXt0PSh0fDApIT0wJihzfDApPT0ocnwwKT8wOnQ7cT1xKzF8MDt3PXcqLjV9aWYoKHErNTB8MCk8PTEwMjE/ISgodHwwKSE9MCZOIT0wLjApOjApe2JyZWFrfWNbKGJiKCl8MCk+PjJdPTM0fX13aGlsZSgwKTtkb3tpZigocXwwKT4xMDIzKXt3PXcqOC45ODg0NjU2NzQzMTE1OGUrMzA3O249cSsgLTEwMjN8MDtpZigobnwwKTw9MTAyMyl7cT1uO2JyZWFrfXE9cSsgLTIwNDZ8MDtxPShxfDApPjEwMjM/MTAyMzpxO3c9dyo4Ljk4ODQ2NTY3NDMxMTU4ZSszMDd9ZWxzZXtpZighKChxfDApPC0xMDIyKSl7YnJlYWt9dz13KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O249cSsxMDIyfDA7aWYoISgobnwwKTwtMTAyMikpe3E9bjticmVha31xPXErMjA0NHwwO3E9KHF8MCk8LTEwMjI/LTEwMjI6cTt3PXcqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDh9fXdoaWxlKDApO0o9T24ocSsxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO3c9dyoraFtrPj4zXTticmVha31lbHNlIGlmKChCfDApPT0zKXtuPWNbbT4+Ml18MDtpZihuPj4+MDwoY1twPj4yXXwwKT4+PjApe2NbbT4+Ml09bisxO249ZFtuPj4wXXwwfWVsc2V7bj1EbihxKXwwfWlmKChufDApPT00MCl7bj0xfWVsc2V7aWYoKGNbcD4+Ml18MCk9PTApe3c9eDticmVha31jW20+PjJdPShjW20+PjJdfDApKyAtMTt3PXg7YnJlYWt9d2hpbGUoMSl7bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtvPWRbbz4+MF18MH1lbHNle289RG4ocSl8MH1pZighKChvKyAtNDh8MCk+Pj4wPDEwfChvKyAtNjV8MCk+Pj4wPDI2KT8hKChvKyAtOTd8MCk+Pj4wPDI2fChvfDApPT05NSk6MCl7YnJlYWt9bj1uKzF8MH1pZigob3wwKT09NDEpe3c9eDticmVha31pZigoY1twPj4yXXwwKT09MCl7dz14O2JyZWFrfW89KGNbbT4+Ml18MCkrIC0xfDA7Y1ttPj4yXT1vO2lmKChufDApPT0wKXt3PXg7YnJlYWt9ZG97bj1uKyAtMXwwO289bysgLTF8MH13aGlsZSgobnwwKSE9MCk7Y1ttPj4yXT1vO3c9eDticmVha31lbHNle249Y1ttPj4yXXwwO2lmKChjW3A+PjJdfDApIT0wKXtuPW4rIC0xfDA7Y1ttPj4yXT1ufWNbKGJiKCl8MCk+PjJdPTIyO2Nbcz4+Ml09MDtLPWNbbD4+Ml18MDtjW2o+PjJdPUstbjtjW3A+PjJdPUs7dz0wLjA7YnJlYWt9fWVsc2V7Zz0yNX19d2hpbGUoMCk7aWYoKGd8MCk9PTIxKXtpZigoY1twPj4yXXwwKSE9MD8oQT0oY1ttPj4yXXwwKSsgLTF8MCxjW20+PjJdPUEsIShCPj4+MDw0KSk6MCl7ZG97QT1BKyAtMXwwO0I9QisgLTF8MH13aGlsZShCPj4+MD4zKTtjW20+PjJdPUE7Zz0yNX1lbHNle2c9MjV9fWlmKChnfDApPT0yNSl7dz0rKG58MCkqeX1nPShjW20+PjJdfDApLShjW2w+PjJdfDApKyhjW2o+PjJdfDApfDA7aWYoKGV8MCk9PTApe2k9ZjtyZXR1cm4rd31pZigoZ3wwKSE9MCl7Yj1iK2d8MH1jW2U+PjJdPWI7aT1mO3JldHVybit3fWZ1bmN0aW9uIEduKCl7Y1sxNTgwXT1vO2NbMjQ5Ml09bztjWzI1MThdPW87Y1s1MzQ2XT1vO2NbNTY4NF09b31mdW5jdGlvbiBIbihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtiPWItZC0oYz4+PjA+YT4+PjB8MCk+Pj4wO3JldHVybihJPWIsYS1jPj4+MHwwKXwwfWZ1bmN0aW9uIEluKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2M9YStjPj4+MDtyZXR1cm4oST1iK2QrKGM+Pj4wPGE+Pj4wfDApPj4+MCxjfDApfDB9ZnVuY3Rpb24gSm4oYil7Yj1ifDA7dmFyIGM9MDtjPWI7d2hpbGUoYVtjPj4wXXwwKXtjPWMrMXwwfXJldHVybiBjLWJ8MH1mdW5jdGlvbiBLbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7aWYoKGN8MCk8MzIpe0k9Yj4+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31JPTA7cmV0dXJuIGI+Pj5jLTMyfDB9ZnVuY3Rpb24gTG4oYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7aWYoKGV8MCk+PTQwOTYpcmV0dXJuIG5iKGJ8MCxkfDAsZXwwKXwwO2Y9YnwwO2lmKChiJjMpPT0oZCYzKSl7d2hpbGUoYiYzKXtpZigoZXwwKT09MClyZXR1cm4gZnwwO2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXdoaWxlKChlfDApPj00KXtjW2I+PjJdPWNbZD4+Ml07Yj1iKzR8MDtkPWQrNHwwO2U9ZS00fDB9fXdoaWxlKChlfDApPjApe2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXJldHVybiBmfDB9ZnVuY3Rpb24gTW4oYixjLGQpe2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTA7aWYoKGN8MCk8KGJ8MCkmKGJ8MCk8KGMrZHwwKSl7ZT1iO2M9YytkfDA7Yj1iK2R8MDt3aGlsZSgoZHwwKT4wKXtiPWItMXwwO2M9Yy0xfDA7ZD1kLTF8MDthW2I+PjBdPWFbYz4+MF18MH1iPWV9ZWxzZXtMbihiLGMsZCl8MH1yZXR1cm4gYnwwfWZ1bmN0aW9uIE5uKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wO2Y9YitlfDA7aWYoKGV8MCk+PTIwKXtkPWQmMjU1O2k9YiYzO2g9ZHxkPDw4fGQ8PDE2fGQ8PDI0O2c9ZiZ+MztpZihpKXtpPWIrNC1pfDA7d2hpbGUoKGJ8MCk8KGl8MCkpe2FbYj4+MF09ZDtiPWIrMXwwfX13aGlsZSgoYnwwKTwoZ3wwKSl7Y1tiPj4yXT1oO2I9Yis0fDB9fXdoaWxlKChifDApPChmfDApKXthW2I+PjBdPWQ7Yj1iKzF8MH1yZXR1cm4gYi1lfDB9ZnVuY3Rpb24gT24oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtJPWI8PGN8KGEmKDE8PGMpLTE8PDMyLWMpPj4+MzItYztyZXR1cm4gYTw8Y31JPWE8PGMtMzI7cmV0dXJuIDB9ZnVuY3Rpb24gUG4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtJPWI+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31JPShifDApPDA/LTE6MDtyZXR1cm4gYj4+Yy0zMnwwfWZ1bmN0aW9uIFFuKGIpe2I9YnwwO3ZhciBjPTA7Yz1hW24rKGI+Pj4yNCk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gY3wwO2M9YVtuKyhiPj4xNiYyNTUpPj4wXXwwO2lmKChjfDApPDgpcmV0dXJuIGMrOHwwO2M9YVtuKyhiPj44JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYysxNnwwO3JldHVybihhW24rKGImMjU1KT4+MF18MCkrMjR8MH1mdW5jdGlvbiBSbihiKXtiPWJ8MDt2YXIgYz0wO2M9YVttKyhiJjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gY3wwO2M9YVttKyhiPj44JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYys4fDA7Yz1hW20rKGI+PjE2JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYysxNnwwO3JldHVybihhW20rKGI+Pj4yNCk+PjBdfDApKzI0fDB9ZnVuY3Rpb24gU24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9YSY2NTUzNTtkPWImNjU1MzU7Yz1lYShkLGYpfDA7ZT1hPj4+MTY7ZD0oYz4+PjE2KSsoZWEoZCxlKXwwKXwwO2I9Yj4+PjE2O2E9ZWEoYixmKXwwO3JldHVybihJPShkPj4+MTYpKyhlYShiLGUpfDApKygoKGQmNjU1MzUpK2F8MCk+Pj4xNil8MCxkK2E8PDE2fGMmNjU1MzV8MCl8MH1mdW5jdGlvbiBUbihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1iPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtpPSgoYnwwKTwwPy0xOjApPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtmPWQ+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2U9KChkfDApPDA/LTE6MCk+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2g9SG4oal5hLGleYixqLGkpfDA7Zz1JO2I9Zl5qO2E9ZV5pO2E9SG4oKFluKGgsZyxIbihmXmMsZV5kLGYsZSl8MCxJLDApfDApXmIsSV5hLGIsYSl8MDtyZXR1cm4gYXwwfWZ1bmN0aW9uIFVuKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtmPWk7aT1pKzh8MDtqPWZ8MDtoPWI+PjMxfCgoYnwwKTwwPy0xOjApPDwxO2c9KChifDApPDA/LTE6MCk+PjMxfCgoYnwwKTwwPy0xOjApPDwxO2w9ZT4+MzF8KChlfDApPDA/LTE6MCk8PDE7az0oKGV8MCk8MD8tMTowKT4+MzF8KChlfDApPDA/LTE6MCk8PDE7Yj1IbihoXmEsZ15iLGgsZyl8MDthPUk7WW4oYixhLEhuKGxeZCxrXmUsbCxrKXwwLEksail8MDthPUhuKGNbaj4+Ml1eaCxjW2orND4+Ml1eZyxoLGcpfDA7Yj1JO2k9ZjtyZXR1cm4oST1iLGEpfDB9ZnVuY3Rpb24gVm4oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZT1hO2Y9YzthPVNuKGUsZil8MDtjPUk7cmV0dXJuKEk9KGVhKGIsZil8MCkrKGVhKGQsZSl8MCkrY3xjJjAsYXwwfDApfDB9ZnVuY3Rpb24gV24oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7YT1ZbihhLGIsYyxkLDApfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiBYbihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MDtnPWk7aT1pKzh8MDtmPWd8MDtZbihhLGIsZCxlLGYpfDA7aT1nO3JldHVybihJPWNbZis0Pj4yXXwwLGNbZj4+Ml18MCl8MH1mdW5jdGlvbiBZbihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7aD1hO2o9YjtpPWo7bD1kO2c9ZTtrPWc7aWYoKGl8MCk9PTApe2c9KGZ8MCkhPTA7aWYoKGt8MCk9PTApe2lmKGcpe2NbZj4+Ml09KGg+Pj4wKSUobD4+PjApO2NbZis0Pj4yXT0wfWs9MDttPShoPj4+MCkvKGw+Pj4wKT4+PjA7cmV0dXJuKEk9ayxtKXwwfWVsc2V7aWYoIWcpe2w9MDttPTA7cmV0dXJuKEk9bCxtKXwwfWNbZj4+Ml09YXwwO2NbZis0Pj4yXT1iJjA7bD0wO209MDtyZXR1cm4oST1sLG0pfDB9fW09KGt8MCk9PTA7ZG97aWYoKGx8MCkhPTApe2lmKCFtKXtrPShRbihrfDApfDApLShRbihpfDApfDApfDA7aWYoaz4+PjA8PTMxKXttPWsrMXwwO2w9MzEta3wwO2E9ay0zMT4+MzE7aj1tO2I9aD4+PihtPj4+MCkmYXxpPDxsO2E9aT4+PihtPj4+MCkmYTtrPTA7bD1oPDxsO2JyZWFrfWlmKChmfDApPT0wKXtsPTA7bT0wO3JldHVybihJPWwsbSl8MH1jW2Y+PjJdPWF8MDtjW2YrND4+Ml09anxiJjA7bD0wO209MDtyZXR1cm4oST1sLG0pfDB9az1sLTF8MDtpZigoayZsfDApIT0wKXtsPShRbihsfDApfDApKzMzLShRbihpfDApfDApfDA7cD02NC1sfDA7bT0zMi1sfDA7bj1tPj4zMTtvPWwtMzJ8MDthPW8+PjMxO2o9bDtiPW0tMT4+MzEmaT4+PihvPj4+MCl8KGk8PG18aD4+PihsPj4+MCkpJmE7YT1hJmk+Pj4obD4+PjApO2s9aDw8cCZuO2w9KGk8PHB8aD4+PihvPj4+MCkpJm58aDw8bSZsLTMzPj4zMTticmVha31pZigoZnwwKSE9MCl7Y1tmPj4yXT1rJmg7Y1tmKzQ+PjJdPTB9aWYoKGx8MCk9PTEpe289anxiJjA7cD1hfDB8MDtyZXR1cm4oST1vLHApfDB9ZWxzZXtwPVJuKGx8MCl8MDtvPWk+Pj4ocD4+PjApfDA7cD1pPDwzMi1wfGg+Pj4ocD4+PjApfDA7cmV0dXJuKEk9byxwKXwwfX1lbHNle2lmKG0pe2lmKChmfDApIT0wKXtjW2Y+PjJdPShpPj4+MCklKGw+Pj4wKTtjW2YrND4+Ml09MH1vPTA7cD0oaT4+PjApLyhsPj4+MCk+Pj4wO3JldHVybihJPW8scCl8MH1pZigoaHwwKT09MCl7aWYoKGZ8MCkhPTApe2NbZj4+Ml09MDtjW2YrND4+Ml09KGk+Pj4wKSUoaz4+PjApfW89MDtwPShpPj4+MCkvKGs+Pj4wKT4+PjA7cmV0dXJuKEk9byxwKXwwfWw9ay0xfDA7aWYoKGwma3wwKT09MCl7aWYoKGZ8MCkhPTApe2NbZj4+Ml09YXwwO2NbZis0Pj4yXT1sJml8YiYwfW89MDtwPWk+Pj4oKFJuKGt8MCl8MCk+Pj4wKTtyZXR1cm4oST1vLHApfDB9az0oUW4oa3wwKXwwKS0oUW4oaXwwKXwwKXwwO2lmKGs+Pj4wPD0zMCl7YT1rKzF8MDtsPTMxLWt8MDtqPWE7Yj1pPDxsfGg+Pj4oYT4+PjApO2E9aT4+PihhPj4+MCk7az0wO2w9aDw8bDticmVha31pZigoZnwwKT09MCl7bz0wO3A9MDtyZXR1cm4oST1vLHApfDB9Y1tmPj4yXT1hfDA7Y1tmKzQ+PjJdPWp8YiYwO289MDtwPTA7cmV0dXJuKEk9byxwKXwwfX13aGlsZSgwKTtpZigoanwwKT09MCl7Zz1sO2U9MDtpPTB9ZWxzZXtoPWR8MHwwO2c9Z3xlJjA7ZT1JbihoLGcsLTEsLTEpfDA7ZD1JO2k9MDtkb3ttPWw7bD1rPj4+MzF8bDw8MTtrPWl8azw8MTttPWI8PDF8bT4+PjMxfDA7bj1iPj4+MzF8YTw8MXwwO0huKGUsZCxtLG4pfDA7cD1JO289cD4+MzF8KChwfDApPDA/LTE6MCk8PDE7aT1vJjE7Yj1IbihtLG4sbyZoLCgoKHB8MCk8MD8tMTowKT4+MzF8KChwfDApPDA/LTE6MCk8PDEpJmcpfDA7YT1JO2o9ai0xfDB9d2hpbGUoKGp8MCkhPTApO2c9bDtlPTB9aD0wO2lmKChmfDApIT0wKXtjW2Y+PjJdPWI7Y1tmKzQ+PjJdPWF9bz0oa3wwKT4+PjMxfChnfGgpPDwxfChoPDwxfGs+Pj4zMSkmMHxlO3A9KGs8PDF8MD4+PjMxKSYtMnxpO3JldHVybihJPW8scCl8MH0KCgoKZnVuY3Rpb24gT2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7bT1pO2k9aSsyMjR8MDtsPW0rOHwwO3M9bTtvPW0rMTkyfDA7ZD1tKzE4OHwwO2s9bSsxODR8MDtwPW0rMTgwfDA7dT1zO2NbdT4+Ml09Mzc7Y1t1KzQ+PjJdPTA7dT1zKzF8MDtxPWYrNHwwO3I9Y1txPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2FbdT4+MF09NDM7dT1zKzJ8MH1pZigociY1MTJ8MCkhPTApe2FbdT4+MF09MzU7dT11KzF8MH10PXUrMnwwO2FbdT4+MF09MTA4O2FbdSsxPj4wXT0xMDg7dT1yJjc0O2Rve2lmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTExN319d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO3Q9bDtjW3Q+PjJdPWg7Y1t0KzQ+PjJdPWo7aD13aShvLDIzLHUscyxsKXwwO2o9bytofDA7cT1jW3E+PjJdJjE3Njtkb3tpZigocXwwKT09MzIpe3E9an1lbHNlIGlmKChxfDApPT0xNil7cT1hW28+PjBdfDA7aWYocTw8MjQ+PjI0PT00M3xxPDwyND4+MjQ9PTQ1KXtxPW8rMXwwO2JyZWFrfWlmKChofDApPjEmcTw8MjQ+PjI0PT00OD8odT1hW28rMT4+MF18MCx1PDwyND4+MjQ9PTg4fHU8PDI0Pj4yND09MTIwKTowKXtxPW8rMnwwfWVsc2V7bj0yMX19ZWxzZXtuPTIxfX13aGlsZSgwKTtpZigobnwwKT09MjEpe3E9b31uPWNbZisyOD4+Ml18MDtjW3A+PjJdPW47bj1uKzR8MDtjW24+PjJdPShjW24+PjJdfDApKzE7S2kobyxxLGosbCxkLGsscCk7bj1jW3A+PjJdfDA7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApIT0wKXtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWxjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKTtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWZ1bmN0aW9uIFBpKGIsZCxlLGYsZyxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPStqO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO2w9aTtpPWkrMzA0fDA7cD1sO3U9bCsyMzJ8MDtyPWwrMjYwfDA7dD1sKzI0OHwwO2Q9bCsyNDR8MDtuPWwrMjQwfDA7bz1sKzI1MnwwO209bCsyNTZ8MDt2PXU7Y1t2Pj4yXT0zNztjW3YrND4+Ml09MDt2PXUrMXwwO3M9Zis0fDA7dz1jW3M+PjJdfDA7aWYoKHcmMjA0OHwwKSE9MCl7YVt2Pj4wXT00Mzt2PXUrMnwwfWlmKCh3JjEwMjR8MCkhPTApe2Fbdj4+MF09MzU7dj12KzF8MH14PXcmMjYwO3k9dz4+PjE0O2Rve2lmKCh4fDApPT0yNjApe2lmKCh5JjF8MCk9PTApe2Fbdj4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt2Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt2Pj4wXT00Njt3PXYrMnwwO2FbdisxPj4wXT00MjtpZigoeHwwKT09MjU2KXtpZigoeSYxfDApPT0wKXthW3c+PjBdPTEwMTt2PTE7YnJlYWt9ZWxzZXthW3c+PjBdPTY5O3Y9MTticmVha319ZWxzZSBpZigoeHwwKT09NCl7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDI7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MDt2PTE7YnJlYWt9fWVsc2V7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDM7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MTt2PTE7YnJlYWt9fX19d2hpbGUoMCk7Y1t0Pj4yXT1yO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtpZih2KXtjW3A+PjJdPWNbZis4Pj4yXTt5PXArNHwwO2hbaz4+M109ajtjW3k+PjJdPWNbaz4+Ml07Y1t5KzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9ZWxzZXtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWlmKCh3fDApPjI5KXt3PShhWzEzMzY4XXwwKT09MDtpZih2KXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2NbcD4+Ml09Y1tmKzg+PjJdO3k9cCs0fDA7aFtrPj4zXT1qO2NbeT4+Ml09Y1trPj4yXTtjW3krND4+Ml09Y1trKzQ+PjJdO3c9Q2kodCx3LHUscCl8MH1lbHNle2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eT1wKzR8MDtoW2s+PjNdPWo7Y1t5Pj4yXT1jW2s+PjJdO2NbeSs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0zMil7cz11fWVsc2UgaWYoKHN8MCk9PTE2KXtzPWFbdj4+MF18MDtpZihzPDwyND4+MjQ9PTQzfHM8PDI0Pj4yND09NDUpe3M9disxfDA7YnJlYWt9aWYoKHd8MCk+MSZzPDwyND4+MjQ9PTQ4Pyh5PWFbdisxPj4wXXwwLHk8PDI0Pj4yND09ODh8eTw8MjQ+PjI0PT0xMjApOjApe3M9disyfDB9ZWxzZXtxPTQ4fX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwzKXwwO2lmKChwfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXg9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09eDt4PXgrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtRaShyLHMsdSxwLGQsbixvKTtvPWNbbz4+Ml18MDt4PW8rNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1MaShtLGNbZT4+Ml18MCxwLGNbZD4+Ml18MCxjW24+PjJdfDAsZixnKTt5PWNbbT4+Ml18MDtjW2U+PjJdPXk7Y1tiPj4yXT15O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1sO3JldHVybn12bih0KTtpPWw7cmV0dXJufWZ1bmN0aW9uIFFpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO2s9aTtpPWkrMzJ8MDtvPWs7bD1rKzEyfDA7cT1jW2o+PjJdfDA7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW28+PjJdPTEzNDQ4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NDgsbyl9bT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dD1jW3ErOD4+Ml18MDtpZighKChjW3ErMTI+PjJdfDApLXQ+PjI+Pj4wPm0+Pj4wKSl7eT1YYSg0KXwwO2NbeT4+Ml09MjEzMDQ7d2IoeXwwLDIxMzc2LDE5Nil9bT1jW3QrKG08PDIpPj4yXXwwO2lmKChtfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbaj4+Ml18MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbbz4+Ml09MTM2MDg7Y1tvKzQ+PjJdPTIwODtjW28rOD4+Ml09MDtjZygxMzYwOCxvKX1vPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtxPWNbais4Pj4yXXwwO2lmKCEoKGNbaisxMj4+Ml18MCktcT4+Mj4+PjA+bz4+PjApKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbcSsobzw8Mik+PjJdfDA7aWYoKGp8MCk9PTApe3k9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfW1jW2NbKGNbaj4+Ml18MCkrMjA+PjJdJjEyN10obCxqKTtjW2g+PjJdPWY7bz1hW2I+PjBdfDA7aWYobzw8MjQ+PjI0PT00M3xvPDwyND4+MjQ9PTQ1KXt5PXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLG8pfDA7dD1jW2g+PjJdfDA7Y1toPj4yXT10KzQ7Y1t0Pj4yXT15O3Q9YisxfDB9ZWxzZXt0PWJ9bz1lO2E6ZG97aWYoKChvLXR8MCk+MT8oYVt0Pj4wXXwwKT09NDg6MCk/KHA9dCsxfDAseT1hW3A+PjBdfDAseTw8MjQ+PjI0PT04OHx5PDwyND4+MjQ9PTEyMCk6MCl7eT14Y1tjWyhjW20+PjJdfDApKzQ0Pj4yXSY2M10obSw0OCl8MDt4PWNbaD4+Ml18MDtjW2g+PjJdPXgrNDtjW3g+PjJdPXk7dD10KzJ8MDt4PXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLGFbcD4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrNDtjW3k+PjJdPXg7aWYodD4+PjA8ZT4+PjApe3E9dDt3aGlsZSgxKXtwPWFbcT4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9eT1wPDwyND4+MjQ7aWYoISgoeSsgLTQ4fDApPj4+MDwxMCk/ISgoKHl8MzIpKyAtOTd8MCk+Pj4wPDYpOjApe3A9dDticmVhayBhfXE9cSsxfDA7aWYoIShxPj4+MDxlPj4+MCkpe3A9dDticmVha319fWVsc2V7cD10O3E9dH19ZWxzZXtzPTE1fX13aGlsZSgwKTtiOmRve2lmKChzfDApPT0xNSl7aWYodD4+PjA8ZT4+PjApe3E9dDt3aGlsZSgxKXtwPWFbcT4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cz1xKzF8MDtpZighKCgocDw8MjQ+PjI0KSsgLTQ4fDApPj4+MDwxMCkpe3A9dDticmVhayBifWlmKHM+Pj4wPGU+Pj4wKXtxPXN9ZWxzZXtwPXQ7cT1zO2JyZWFrfX19ZWxzZXtwPXQ7cT10fX19d2hpbGUoMCk7cz1hW2w+PjBdfDA7aWYoKHMmMSk9PTApe3M9KHMmMjU1KT4+PjF9ZWxzZXtzPWNbbCs0Pj4yXXwwfWlmKChzfDApIT0wKXtpZigocHwwKSE9KHF8MCk/KHI9cSsgLTF8MCxyPj4+MD5wPj4+MCk6MCl7cz1wO2Rve3k9YVtzPj4wXXwwO2Fbcz4+MF09YVtyPj4wXXwwO2Fbcj4+MF09eTtzPXMrMXwwO3I9cisgLTF8MH13aGlsZShzPj4+MDxyPj4+MCl9dj1vY1tjWyhjW2o+PjJdfDApKzE2Pj4yXSYxMjddKGopfDA7aWYocD4+PjA8cT4+PjApe3Q9bCsxfDA7cj1sKzR8MDt1PWwrOHwwO3g9MDt3PTA7cz1wO3doaWxlKDEpe3k9YVsoKGFbbD4+MF0mMSk9PTA/dDpjW3U+PjJdfDApK3c+PjBdfDA7aWYoeTw8MjQ+PjI0PjAmKHh8MCk9PSh5PDwyND4+MjR8MCkpe3g9Y1toPj4yXXwwO2NbaD4+Ml09eCs0O2NbeD4+Ml09djt4PWFbbD4+MF18MDtpZigoeCYxKT09MCl7eT0oeCYyNTUpPj4+MX1lbHNle3k9Y1tyPj4yXXwwfXg9MDt3PSh3Pj4+MDwoeSsgLTF8MCk+Pj4wJjEpK3d8MH1BPXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLGFbcz4+MF18MCl8MDt6PWNbaD4+Ml18MDt5PXorNHwwO2NbaD4+Ml09eTtjW3o+PjJdPUE7cz1zKzF8MDtpZighKHM+Pj4wPHE+Pj4wKSl7YnJlYWt9ZWxzZXt4PXgrMXwwfX19ZWxzZXt5PWNbaD4+Ml18MH1wPWYrKHAtYjw8Mil8MDtpZigocHwwKSE9KHl8MCk/KG49eSsgLTR8MCxuPj4+MD5wPj4+MCk6MCl7ZG97QT1jW3A+PjJdfDA7Y1twPj4yXT1jW24+PjJdO2Nbbj4+Ml09QTtwPXArNHwwO249bisgLTR8MH13aGlsZShwPj4+MDxuPj4+MCl9fWVsc2V7dWNbY1soY1ttPj4yXXwwKSs0OD4+Ml0mMzFdKG0scCxxLGNbaD4+Ml18MCl8MDt5PShjW2g+PjJdfDApKyhxLXA8PDIpfDA7Y1toPj4yXT15fWM6ZG97aWYocT4+PjA8ZT4+PjApe3doaWxlKDEpe249YVtxPj4wXXwwO2lmKG48PDI0Pj4yND09NDYpe2JyZWFrfXo9eGNbY1soY1ttPj4yXXwwKSs0ND4+Ml0mNjNdKG0sbil8MDtBPWNbaD4+Ml18MDt5PUErNHwwO2NbaD4+Ml09eTtjW0E+PjJdPXo7cT1xKzF8MDtpZighKHE+Pj4wPGU+Pj4wKSl7YnJlYWsgY319ej1vY1tjWyhjW2o+PjJdfDApKzEyPj4yXSYxMjddKGopfDA7QT1jW2g+PjJdfDA7eT1BKzR8MDtjW2g+PjJdPXk7Y1tBPj4yXT16O3E9cSsxfDB9fXdoaWxlKDApO3VjW2NbKGNbbT4+Ml18MCkrNDg+PjJdJjMxXShtLHEsZSx5KXwwO209KGNbaD4+Ml18MCkrKG8tcTw8Mil8MDtjW2g+PjJdPW07aWYoKGR8MCkhPShlfDApKXttPWYrKGQtYjw8Mil8MH1jW2c+PjJdPW07aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59Zz1jW2wrOD4+Ml18MDtpZigoZ3wwKT09MCl7aT1rO3JldHVybn12bihnKTtpPWs7cmV0dXJufWZ1bmN0aW9uIFJpKGIsZCxlLGYsZyxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPStqO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7bD1pO2k9aSszMDR8MDtwPWw7dT1sKzIzMnwwO3I9bCsyNjB8MDt0PWwrMjQ4fDA7bT1sKzI0NHwwO2Q9bCsyNDB8MDtvPWwrMjUyfDA7bj1sKzI1NnwwO3g9dTtjW3g+PjJdPTM3O2NbeCs0Pj4yXT0wO3g9dSsxfDA7cz1mKzR8MDt2PWNbcz4+Ml18MDtpZigodiYyMDQ4fDApIT0wKXthW3g+PjBdPTQzO3g9dSsyfDB9aWYoKHYmMTAyNHwwKSE9MCl7YVt4Pj4wXT0zNTt4PXgrMXwwfXc9diYyNjA7dj12Pj4+MTQ7ZG97aWYoKHd8MCk9PTI2MCl7YVt4Pj4wXT03Njt3PXgrMXwwO2lmKCh2JjF8MCk9PTApe2Fbdz4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt3Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt4Pj4wXT00NjthW3grMT4+MF09NDI7YVt4KzI+PjBdPTc2O3g9eCszfDA7aWYoKHd8MCk9PTQpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAyO3Y9MTticmVha31lbHNle2FbeD4+MF09NzA7dj0xO2JyZWFrfX1lbHNlIGlmKCh3fDApPT0yNTYpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAxO3Y9MTticmVha31lbHNle2FbeD4+MF09Njk7dj0xO2JyZWFrfX1lbHNle2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAzO3Y9MTticmVha31lbHNle2FbeD4+MF09NzE7dj0xO2JyZWFrfX19fXdoaWxlKDApO2NbdD4+Ml09cjtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7aWYodil7Y1twPj4yXT1jW2YrOD4+Ml07eD1wKzR8MDtoW2s+PjNdPWo7Y1t4Pj4yXT1jW2s+PjJdO2NbeCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWVsc2V7aFtrPj4zXT1qO2NbcD4+Ml09Y1trPj4yXTtjW3ArND4+Ml09Y1trKzQ+PjJdO3c9d2kociwzMCx3LHUscCl8MH1pZigod3wwKT4yOSl7dz0oYVsxMzM2OF18MCk9PTA7aWYodil7aWYodz8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtjW3A+PjJdPWNbZis4Pj4yXTt4PXArNHwwO2hbaz4+M109ajtjW3g+PjJdPWNbaz4+Ml07Y1t4KzQ+PjJdPWNbays0Pj4yXTt3PUNpKHQsdyx1LHApfDB9ZWxzZXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2hbaz4+M109ajtjW3A+PjJdPWNbaz4+Ml07Y1twKzQ+PjJdPWNbays0Pj4yXTt3PUNpKHQsdyx1LHApfDB9dD1jW3Q+PjJdfDA7aWYoKHR8MCk9PTApe3g9WGEoNCl8MDtjW3g+PjJdPTIyNjgwO3diKHh8MCwyMjcyOCwyMDYpfWVsc2V7dj10fX1lbHNle3Y9Y1t0Pj4yXXwwO3Q9MH11PXYrd3wwO3M9Y1tzPj4yXSYxNzY7ZG97aWYoKHN8MCk9PTMyKXtzPXV9ZWxzZSBpZigoc3wwKT09MTYpe3M9YVt2Pj4wXXwwO2lmKHM8PDI0Pj4yND09NDN8czw8MjQ+PjI0PT00NSl7cz12KzF8MDticmVha31pZigod3wwKT4xJnM8PDI0Pj4yND09NDg/KHg9YVt2KzE+PjBdfDAseDw8MjQ+PjI0PT04OHx4PDwyND4+MjQ9PTEyMCk6MCl7cz12KzJ8MH1lbHNle3E9NDh9fWVsc2V7cT00OH19d2hpbGUoMCk7aWYoKHF8MCk9PTQ4KXtzPXZ9aWYoKHZ8MCkhPShyfDApKXtwPXVuKHc8PDMpfDA7aWYoKHB8MCk9PTApe3g9WGEoNCl8MDtjW3g+PjJdPTIyNjgwO3diKHh8MCwyMjcyOCwyMDYpfWVsc2V7cj12O3E9cH19ZWxzZXtxPTB9dz1jW2YrMjg+PjJdfDA7Y1tvPj4yXT13O3c9dys0fDA7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxO1FpKHIscyx1LHAsbSxkLG8pO289Y1tvPj4yXXwwO3c9bys0fDA7eD1jW3c+PjJdfDA7Y1t3Pj4yXT14KyAtMTtpZigoeHwwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfUxpKG4sY1tlPj4yXXwwLHAsY1ttPj4yXXwwLGNbZD4+Ml18MCxmLGcpO3g9Y1tuPj4yXXwwO2NbZT4+Ml09eDtjW2I+PjJdPXg7aWYoKHF8MCkhPTApe3ZuKHEpfWlmKCh0fDApPT0wKXtpPWw7cmV0dXJufXZuKHQpO2k9bDtyZXR1cm59ZnVuY3Rpb24gU2koYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO2Q9aTtpPWkrMTkyfDA7bj1kO289ZCsxODB8MDtrPWQrMTYwfDA7bD1kKzEyfDA7YVtvKzA+PjBdPWFbMTIyNzI+PjBdfDA7YVtvKzE+PjBdPWFbMTIyNzM+PjBdfDA7YVtvKzI+PjBdPWFbMTIyNzQ+PjBdfDA7YVtvKzM+PjBdPWFbMTIyNzU+PjBdfDA7YVtvKzQ+PjBdPWFbMTIyNzY+PjBdfDA7YVtvKzU+PjBdPWFbMTIyNzc+PjBdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXA9Y1szMzQwXXwwO2Nbbj4+Ml09aDtvPXdpKGssMjAscCxvLG4pfDA7aD1rK298MDtwPWNbZis0Pj4yXSYxNzY7ZG97aWYoKHB8MCk9PTMyKXtwPWh9ZWxzZSBpZigocHwwKT09MTYpe3A9YVtrPj4wXXwwO2lmKHA8PDI0Pj4yND09NDN8cDw8MjQ+PjI0PT00NSl7cD1rKzF8MDticmVha31pZigob3wwKT4xJnA8PDI0Pj4yND09NDg/KHE9YVtrKzE+PjBdfDAscTw8MjQ+PjI0PT04OHxxPDwyND4+MjQ9PTEyMCk6MCl7cD1rKzJ8MH1lbHNle209MTF9fWVsc2V7bT0xMX19d2hpbGUoMCk7aWYoKG18MCk9PTExKXtwPWt9bT1jW2YrMjg+PjJdfDA7cT1tKzR8MDtjW3E+PjJdPShjW3E+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW24+PjJdPTEzNDQ4O2Nbbis0Pj4yXT0yMDg7Y1tuKzg+PjJdPTA7Y2coMTM0NDgsbil9cT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7bj1jW20rOD4+Ml18MDtpZigoY1ttKzEyPj4yXXwwKS1uPj4yPj4+MD5xPj4+MD8oaj1jW24rKHE8PDIpPj4yXXwwLChqfDApIT0wKTowKXtuPW0rNHwwO3E9Y1tuPj4yXXwwO2Nbbj4+Ml09cSsgLTE7aWYoKHF8MCk9PTApe2xjW2NbKGNbbT4+Ml18MCkrOD4+Ml0mMjU1XShtKX11Y1tjWyhjW2o+PjJdfDApKzQ4Pj4yXSYzMV0oaixrLGgsbCl8MDtqPWwrKG88PDIpfDA7aWYoKHB8MCk9PShofDApKXtxPWo7cD1jW2U+PjJdfDA7TGkoYixwLGwscSxqLGYsZyk7aT1kO3JldHVybn1xPWwrKHAtazw8Mil8MDtwPWNbZT4+Ml18MDtMaShiLHAsbCxxLGosZixnKTtpPWQ7cmV0dXJufXE9WGEoNCl8MDtjW3E+PjJdPTIxMzA0O3diKHF8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIFRpKGUsZixnLGgsaixrLGwsbSxuKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDt2YXIgbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO3A9aTtpPWkrMzJ8MDtxPXA7cj1wKzI0fDA7dT1wKzIwfDA7dD1wKzE2fDA7cz1wKzEyfDA7eT1jW2orMjg+PjJdfDA7RD15KzR8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3E+PjJdPTEzNDU2O2NbcSs0Pj4yXT0yMDg7Y1txKzg+PjJdPTA7Y2coMTM0NTYscSl9eD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7ej1jW3krOD4+Ml18MDtpZigoY1t5KzEyPj4yXXwwKS16Pj4yPj4+MD54Pj4+MD8odz1jW3orKHg8PDIpPj4yXXwwLCh3fDApIT0wKTowKXtDPXkrNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbeT4+Ml18MCkrOD4+Ml0mMjU1XSh5KX1jW2s+PjJdPTA7YTpkb3tpZigobXwwKSE9KG58MCkpe3g9dys4fDA7eT0wO2I6d2hpbGUoMSl7ej15O3k9Zzt3aGlsZSgxKXtpZigoenwwKSE9MCl7Zz15O2JyZWFrIGF9aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RD0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7Zz1EPzA6eTt5PUQ/MDp5fWVsc2V7Zz15fX1lbHNle2c9MDt5PTB9ej0oZ3wwKT09MDtkb3tpZigoaHwwKSE9MCl7aWYoKGNbaCsxMj4+Ml18MCk9PShjW2grMTY+PjJdfDApPyhvY1tjWyhjW2g+PjJdfDApKzM2Pj4yXSYxMjddKGgpfDApPT0tMTowKXtvPTIwO2JyZWFrfWlmKCF6KXtvPTIxO2JyZWFrIGJ9fWVsc2V7bz0yMH19d2hpbGUoMCk7aWYoKG98MCk9PTIwKXtvPTA7aWYoeil7aD0wO289MjE7YnJlYWsgYn1lbHNle2g9MH19aWYoKGhjW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjYzXSh3LGFbbT4+MF18MCwwKXwwKTw8MjQ+PjI0PT0zNyl7bz0yMzticmVha316PWFbbT4+MF18MDtpZih6PDwyND4+MjQ+LTE/KHY9Y1t4Pj4yXXwwLCEoKGJbdisoejw8MjQ+PjI0PDwxKT4+MV0mODE5Mik9PTApKTowKXtvPTM0O2JyZWFrfXo9ZysxMnwwO0I9Y1t6Pj4yXXwwO0E9ZysxNnwwO2lmKChCfDApPT0oY1tBPj4yXXwwKSl7Qj1vY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSYxMjddKGcpfDB9ZWxzZXtCPWRbQj4+MF18MH1EPXhjW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjYzXSh3LEImMjU1KXwwO2lmKEQ8PDI0Pj4yND09KHhjW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjYzXSh3LGFbbT4+MF18MCl8MCk8PDI0Pj4yNCl7bz01OTticmVha31jW2s+PjJdPTQ7ej00fWM6ZG97aWYoKG98MCk9PTIzKXtvPTA7ej1tKzF8MDtpZigoenwwKT09KG58MCkpe289MjQ7YnJlYWsgYn15PWhjW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjYzXSh3LGFbej4+MF18MCwwKXwwO2lmKHk8PDI0Pj4yND09NDh8eTw8MjQ+PjI0PT02OSl7ej1tKzJ8MDtpZigoenwwKT09KG58MCkpe289Mjc7YnJlYWsgYn1tPXo7ej1oY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSY2M10odyxhW3o+PjBdfDAsMCl8MH1lbHNle209ejt6PXk7eT0wfUQ9Y1soY1tmPj4yXXwwKSszNj4+Ml18MDtjW3Q+PjJdPWc7Y1tzPj4yXT1oO2NbciswPj4yXT1jW3QrMD4+Ml07Y1txKzA+PjJdPWNbcyswPj4yXTtuY1tEJjMxXSh1LGYscixxLGosayxsLHoseSk7bT1tKzF8MDtnPWNbdT4+Ml18MH1lbHNlIGlmKChvfDApPT0zNCl7d2hpbGUoMSl7bz0wO209bSsxfDA7aWYoKG18MCk9PShufDApKXttPW47YnJlYWt9ej1hW20+PjBdfDA7aWYoISh6PDwyND4+MjQ+LTEpKXticmVha31pZigoYlt2Kyh6PDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7YnJlYWt9ZWxzZXtvPTM0fX1CPWg7QT1oO3doaWxlKDEpe2lmKChnfDApIT0wKXtpZigoY1tnKzEyPj4yXXwwKT09KGNbZysxNj4+Ml18MCkpe0Q9KG9jW2NbKGNbZz4+Ml18MCkrMzY+PjJdJjEyN10oZyl8MCk9PS0xO2c9RD8wOmc7eT1EPzA6eX19ZWxzZXtnPTB9Qz0oZ3wwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZihDKXt6PUI7YnJlYWt9ZWxzZXtnPXk7YnJlYWsgY319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZihDXihCfDApPT0wKXt6PUI7QT1CfWVsc2V7Zz15O2JyZWFrIGN9fWVsc2V7ej0wO2g9MDtvPTQ1fX1lbHNle3o9QjtvPTQ1fX13aGlsZSgwKTtpZigob3wwKT09NDUpe289MDtpZihDKXtnPXk7YnJlYWsgY31lbHNle0E9MH19Qj1nKzEyfDA7RD1jW0I+PjJdfDA7Qz1nKzE2fDA7aWYoKER8MCk9PShjW0M+PjJdfDApKXtEPW9jW2NbKGNbZz4+Ml18MCkrMzY+PjJdJjEyN10oZyl8MH1lbHNle0Q9ZFtEPj4wXXwwfWlmKCEoKEQmMjU1KTw8MjQ+PjI0Pi0xKSl7Zz15O2JyZWFrIGN9aWYoKGJbKGNbeD4+Ml18MCkrKEQ8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXtnPXk7YnJlYWsgY31EPWNbQj4+Ml18MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbZz4+Ml18MCkrNDA+PjJdJjEyN10oZyl8MDtCPXo7Y29udGludWV9ZWxzZXtjW0I+PjJdPUQrMTtCPXo7Y29udGludWV9fX1lbHNlIGlmKChvfDApPT01OSl7bz0wO0I9Y1t6Pj4yXXwwO2lmKChCfDApPT0oY1tBPj4yXXwwKSl7b2NbY1soY1tnPj4yXXwwKSs0MD4+Ml0mMTI3XShnKXwwfWVsc2V7Y1t6Pj4yXT1CKzF9bT1tKzF8MDtnPXl9fXdoaWxlKDApO2lmKChtfDApPT0obnwwKSl7YnJlYWsgYX15PWNbaz4+Ml18MH1pZigob3wwKT09MjEpe2Nbaz4+Ml09NDticmVha31lbHNlIGlmKChvfDApPT0yNCl7Y1trPj4yXT00O2JyZWFrfWVsc2UgaWYoKG98MCk9PTI3KXtjW2s+PjJdPTQ7YnJlYWt9fX13aGlsZSgwKTtpZigoZ3wwKSE9MCl7aWYoKGNbZysxMj4+Ml18MCk9PShjW2crMTY+PjJdfDApKXtEPShvY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSYxMjddKGcpfDApPT0tMTtnPUQ/MDpnfX1lbHNle2c9MH1mPShnfDApPT0wO2Rve2lmKChofDApIT0wKXtpZigoY1toKzEyPj4yXXwwKT09KGNbaCsxNj4+Ml18MCk/KG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xOjApe289NzE7YnJlYWt9aWYoZil7Y1tlPj4yXT1nO2k9cDtyZXR1cm59fWVsc2V7bz03MX19d2hpbGUoMCk7aWYoKG98MCk9PTcxPyFmOjApe2NbZT4+Ml09ZztpPXA7cmV0dXJufWNbaz4+Ml09Y1trPj4yXXwyO2NbZT4+Ml09ZztpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIFVpKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFZpKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBXaShhKXthPWF8MDtyZXR1cm4gMn1mdW5jdGlvbiBYaShhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wO2o9aTtUaShhLGIsY1tkPj4yXXwwLGNbZT4+Ml18MCxmLGcsaCwxMjM3NiwxMjM4NHwwKTtpPWo7cmV0dXJufWZ1bmN0aW9uIFlpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTA7az1pO209ZCs4fDA7bT1vY1tjWyhjW20+PjJdfDApKzIwPj4yXSYxMjddKG0pfDA7bj1hW20+PjBdfDA7aWYoKG4mMSk9PTApe2w9bSsxfDA7bT0obiYyNTUpPj4+MX1lbHNle2w9Y1ttKzg+PjJdfDA7bT1jW20rND4+Ml18MH1UaShiLGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaixsLGwrbXwwKTtpPWs7cmV0dXJufWZ1bmN0aW9uIFppKGEsYixkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTA7aj1pO2k9aSsxNnwwO2w9ajtmPWNbZisyOD4+Ml18MDttPWYrNHwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1sPShjWzEzNDYwPj4yXXwwKSsgLTF8MDttPWNbZis4Pj4yXXwwO2lmKChjW2YrMTI+PjJdfDApLW0+PjI+Pj4wPmw+Pj4wPyhrPWNbbSsobDw8Mik+PjJdfDAsKGt8MCkhPTApOjApe2w9Zis0fDA7bT1jW2w+PjJdfDA7Y1tsPj4yXT1tKyAtMTtpZigobXwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfW09Y1tlPj4yXXwwO2I9Yis4fDA7Yj1vY1tjW2NbYj4+Ml0+PjJdJjEyN10oYil8MDtiPShNaChkLG0sYixiKzE2OHwwLGssZywwKXwwKS1ifDA7aWYoKGJ8MCk+PTE2OCl7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59Y1toKzI0Pj4yXT0oKGJ8MCkvMTJ8MHwwKSU3fDA7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59bT1YYSg0KXwwO2NbbT4+Ml09MjEzMDQ7d2IobXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gX2koYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MDtqPWk7aT1pKzE2fDA7bD1qO2Y9Y1tmKzI4Pj4yXXwwO209Zis0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tsPj4yXT0xMzQ1NjtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEzNDU2LGwpfWw9KGNbMTM0NjA+PjJdfDApKyAtMXwwO209Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7bD1mKzR8MDttPWNbbD4+Ml18MDtjW2w+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9bT1jW2U+PjJdfDA7Yj1iKzh8MDtiPW9jW2NbKGNbYj4+Ml18MCkrND4+Ml0mMTI3XShiKXwwO2I9KE1oKGQsbSxiLGIrMjg4fDAsayxnLDApfDApLWJ8MDtpZigoYnwwKT49Mjg4KXttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1jW2grMTY+PjJdPSgoYnwwKS8xMnwwfDApJTEyfDA7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59bT1YYSg0KXwwO2NbbT4+Ml09MjEzMDQ7d2IobXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gJGkoYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wO2I9aTtpPWkrMTZ8MDtrPWI7Zj1jW2YrMjg+PjJdfDA7bD1mKzR8MDtjW2w+PjJdPShjW2w+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2s+PjJdPTEzNDU2O2Nbays0Pj4yXT0yMDg7Y1trKzg+PjJdPTA7Y2coMTM0NTYsayl9az0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7bD1jW2YrOD4+Ml18MDtpZigoY1tmKzEyPj4yXXwwKS1sPj4yPj4+MD5rPj4+MD8oaj1jW2wrKGs8PDIpPj4yXXwwLChqfDApIT0wKTowKXtrPWYrNHwwO2w9Y1trPj4yXXwwO2Nbaz4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbZj4+Ml18MCkrOD4+Ml0mMjU1XShmKX1lPWJqKGQsY1tlPj4yXXwwLGcsaiw0KXwwO2lmKChjW2c+PjJdJjR8MCkhPTApe2w9Y1tkPj4yXXwwO2NbYT4+Ml09bDtpPWI7cmV0dXJufWlmKChlfDApPDY5KXtnPWUrMmUzfDB9ZWxzZXtnPShlKyAtNjl8MCk+Pj4wPDMxP2UrMTkwMHwwOmV9Y1toKzIwPj4yXT1nKyAtMTkwMDtsPWNbZD4+Ml18MDtjW2E+PjJdPWw7aT1iO3JldHVybn1sPVhhKDQpfDA7Y1tsPj4yXT0yMTMwNDt3YihsfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBhaihlLGYsZyxoLGosayxsLG0sbil7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7dmFyIG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7bj1pO2k9aSs2NHwwO3c9bjtFPW4rMTZ8MDtyPW4rMjh8MDt1PW4rMjR8MDt2PW4rMzJ8MDt5PW4rMTJ8MDt6PW4rMjB8MDt4PW4rMzZ8MDtCPW4rNDB8MDt0PW4rNDR8MDtzPW4rNDh8MDtjW2s+PjJdPTA7QT1jW2orMjg+PjJdfDA7RD1BKzR8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3c+PjJdPTEzNDU2O2Nbdys0Pj4yXT0yMDg7Y1t3Kzg+PjJdPTA7Y2coMTM0NTYsdyl9Qz0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7RD1jW0ErOD4+Ml18MDtpZigoY1tBKzEyPj4yXXwwKS1EPj4yPj4+MD5DPj4+MD8ocD1jW0QrKEM8PDIpPj4yXXwwLChwfDApIT0wKTowKXtDPUErNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbQT4+Ml18MCkrOD4+Ml0mMjU1XShBKX1hOmRve3N3aXRjaChtPDwyND4+MjR8MCl7Y2FzZSAxMTI6e289bCs4fDA7bD1jW2g+PjJdfDA7aD1mKzh8MDtoPW9jW2NbKGNbaD4+Ml18MCkrOD4+Ml0mMTI3XShoKXwwO2Y9YVtoPj4wXXwwO2lmKChmJjEpPT0wKXtmPShmJjI1NSk+Pj4xfWVsc2V7Zj1jW2grND4+Ml18MH1qPWFbaCsxMj4+MF18MDtpZigoaiYxKT09MCl7aj0oaiYyNTUpPj4+MX1lbHNle2o9Y1toKzE2Pj4yXXwwfWlmKChmfDApPT0oMC1qfDApKXtjW2s+PjJdPWNbaz4+Ml18NDticmVhayBhfUU9TWgoZyxsLGgsaCsyNHwwLHAsaywwKXwwO2s9RS1ofDA7aWYoKEV8MCk9PShofDApPyhjW28+PjJdfDApPT0xMjowKXtjW28+PjJdPTA7YnJlYWsgYX1pZigoa3wwKT09MTI/KHE9Y1tvPj4yXXwwLChxfDApPDEyKTowKXtjW28+PjJdPXErMTJ9YnJlYWt9O2Nhc2UgMTIwOntEPWNbKGNbZj4+Ml18MCkrMjA+PjJdfDA7Y1tCPj4yXT1jW2c+PjJdO2NbdD4+Ml09Y1toPj4yXTtjW0UrMD4+Ml09Y1tCKzA+PjJdO2NbdyswPj4yXT1jW3QrMD4+Ml07aWNbRCY2M10oZSxmLEUsdyxqLGssbCk7aT1uO3JldHVybn07Y2FzZSA4ODp7cT1mKzh8MDtxPW9jW2NbKGNbcT4+Ml18MCkrMjQ+PjJdJjEyN10ocSl8MDtwPWFbcT4+MF18MDtpZigocCYxKT09MCl7bz1xKzF8MDtwPShwJjI1NSk+Pj4xfWVsc2V7bz1jW3ErOD4+Ml18MDtwPWNbcSs0Pj4yXXwwfVRpKHMsZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLG8sbytwfDApO2NbZz4+Ml09Y1tzPj4yXTticmVha307Y2FzZSAxMjE6e289bCsyMHwwO2w9YmooZyxjW2g+PjJdfDAsayxwLDQpfDA7aWYoKGNbaz4+Ml0mNHwwKT09MCl7aWYoKGx8MCk8Njkpe2s9bCsyZTN8MH1lbHNle2s9KGwrIC02OXwwKT4+PjA8MzE/bCsxOTAwfDA6bH1jW28+PjJdPWsrIC0xOTAwfWJyZWFrfTtjYXNlIDgzOntvPWJqKGcsY1toPj4yXXwwLGsscCwyKXwwO3A9Y1trPj4yXXwwO2lmKChwJjR8MCk9PTAmKG98MCk8NjEpe2NbbD4+Ml09bzticmVhayBhfWVsc2V7Y1trPj4yXT1wfDQ7YnJlYWsgYX19O2Nhc2UgODI6e1RpKHosZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyNDE2LDEyNDIxfDApO2NbZz4+Ml09Y1t6Pj4yXTticmVha307Y2FzZSAxMTQ6e1RpKHksZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyNDAwLDEyNDExfDApO2NbZz4+Ml09Y1t5Pj4yXTticmVha307Y2FzZSA4OTp7bz1iaihnLGNbaD4+Ml18MCxrLHAsNCl8MDtpZigoY1trPj4yXSY0fDApPT0wKXtjW2wrMjA+PjJdPW8rIC0xOTAwfWJyZWFrfTtjYXNlIDM3OntsPWNbaD4+Ml18MDtoPWNbZz4+Ml18MDtkb3tpZigoaHwwKSE9MCl7aWYoKGNbaCsxMj4+Ml18MCk9PShjW2grMTY+PjJdfDApKXtpZigob2NbY1soY1toPj4yXXwwKSszNj4+Ml0mMTI3XShoKXwwKT09LTEpe2NbZz4+Ml09MDtoPTA7YnJlYWt9ZWxzZXtoPWNbZz4+Ml18MDticmVha319fWVsc2V7aD0wfX13aGlsZSgwKTtoPShofDApPT0wO2Rve2lmKChsfDApIT0wKXtpZigoY1tsKzEyPj4yXXwwKT09KGNbbCsxNj4+Ml18MCk/KG9jW2NbKGNbbD4+Ml18MCkrMzY+PjJdJjEyN10obCl8MCk9PS0xOjApe289MTE1O2JyZWFrfWlmKCFoKXtvPTExNn19ZWxzZXtvPTExNX19d2hpbGUoMCk7aWYoKG98MCk9PTExNSl7aWYoaCl7bz0xMTZ9ZWxzZXtsPTB9fWlmKChvfDApPT0xMTYpe2Nbaz4+Ml09Y1trPj4yXXw2O2JyZWFrIGF9aD1jW2c+PjJdfDA7Zj1jW2grMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2grMTY+PjJdfDApKXtoPW9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MH1lbHNle2g9ZFtmPj4wXXwwfWlmKCEoKGhjW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjYzXShwLGgmMjU1LDApfDApPDwyND4+MjQ9PTM3KSl7Y1trPj4yXT1jW2s+PjJdfDQ7YnJlYWsgYX1wPWNbZz4+Ml18MDtoPXArMTJ8MDtmPWNbaD4+Ml18MDtpZigoZnwwKT09KGNbcCsxNj4+Ml18MCkpe29jW2NbKGNbcD4+Ml18MCkrNDA+PjJdJjEyN10ocCl8MH1lbHNle2NbaD4+Ml09ZisxfXA9Y1tnPj4yXXwwO2Rve2lmKChwfDApIT0wKXtpZigoY1twKzEyPj4yXXwwKT09KGNbcCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjW3A+PjJdfDApKzM2Pj4yXSYxMjddKHApfDApPT0tMSl7Y1tnPj4yXT0wO3A9MDticmVha31lbHNle3A9Y1tnPj4yXXwwO2JyZWFrfX19ZWxzZXtwPTB9fXdoaWxlKDApO3A9KHB8MCk9PTA7ZG97aWYoKGx8MCkhPTApe2lmKChjW2wrMTI+PjJdfDApPT0oY1tsKzE2Pj4yXXwwKT8ob2NbY1soY1tsPj4yXXwwKSszNj4+Ml0mMTI3XShsKXwwKT09LTE6MCl7bz0xMzQ7YnJlYWt9aWYocCl7YnJlYWsgYX19ZWxzZXtvPTEzNH19d2hpbGUoMCk7aWYoKG98MCk9PTEzND8hcDowKXticmVhayBhfWNbaz4+Ml09Y1trPj4yXXwyO2JyZWFrfTtjYXNlIDg0OntUaSh4LGYsY1tnPj4yXXwwLGNbaD4+Ml18MCxqLGssbCwxMjQyNCwxMjQzMnwwKTtjW2c+PjJdPWNbeD4+Ml07YnJlYWt9O2Nhc2UgMTE5OntvPWJqKGcsY1toPj4yXXwwLGsscCwxKXwwO3A9Y1trPj4yXXwwO2lmKChwJjR8MCk9PTAmKG98MCk8Nyl7Y1tsKzI0Pj4yXT1vO2JyZWFrIGF9ZWxzZXtjW2s+PjJdPXB8NDticmVhayBhfX07Y2FzZSAxMDk6e289YmooZyxjW2g+PjJdfDAsayxwLDIpfDA7cD1jW2s+PjJdfDA7aWYoKHAmNHwwKT09MCYob3wwKTwxMyl7Y1tsKzE2Pj4yXT1vKyAtMTticmVhayBhfWVsc2V7Y1trPj4yXT1wfDQ7YnJlYWsgYX19O2Nhc2UgNzc6e289YmooZyxjW2g+PjJdfDAsayxwLDIpfDA7cD1jW2s+PjJdfDA7aWYoKHAmNHwwKT09MCYob3wwKTw2MCl7Y1tsKzQ+PjJdPW87YnJlYWsgYX1lbHNle2Nbaz4+Ml09cHw0O2JyZWFrIGF9fTtjYXNlIDEwNjp7bz1iaihnLGNbaD4+Ml18MCxrLHAsMyl8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wJihvfDApPDM2Nil7Y1tsKzI4Pj4yXT1vO2JyZWFrIGF9ZWxzZXtjW2s+PjJdPXB8NDticmVhayBhfX07Y2FzZSA3Mjp7cD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtvPWNbaz4+Ml18MDtpZigobyY0fDApPT0wJihwfDApPDI0KXtjW2wrOD4+Ml09cDticmVhayBhfWVsc2V7Y1trPj4yXT1vfDQ7YnJlYWsgYX19O2Nhc2UgNzA6e1RpKHYsZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyMzkyLDEyNDAwfDApO2NbZz4+Ml09Y1t2Pj4yXTticmVha307Y2FzZSA2ODp7VGkodSxmLGNbZz4+Ml18MCxjW2g+PjJdfDAsaixrLGwsMTIzODQsMTIzOTJ8MCk7Y1tnPj4yXT1jW3U+PjJdO2JyZWFrfTtjYXNlIDEwNDpjYXNlIDY2OmNhc2UgOTg6e0Q9Y1toPj4yXXwwO0U9Zis4fDA7RT1vY1tjWyhjW0U+PjJdfDApKzQ+PjJdJjEyN10oRSl8MDtrPShNaChnLEQsRSxFKzI4OHwwLHAsaywwKXwwKS1FfDA7aWYoKGt8MCk8Mjg4KXtjW2wrMTY+PjJdPSgoa3wwKS8xMnwwfDApJTEyfDB9YnJlYWt9O2Nhc2UgNzM6e289bCs4fDA7bD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wPyhsKyAtMXwwKT4+PjA8MTI6MCl7Y1tvPj4yXT1sO2JyZWFrIGF9Y1trPj4yXT1wfDQ7YnJlYWt9O2Nhc2UgNjU6Y2FzZSA5Nzp7RD1jW2g+PjJdfDA7RT1mKzh8MDtFPW9jW2NbY1tFPj4yXT4+Ml0mMTI3XShFKXwwO2s9KE1oKGcsRCxFLEUrMTY4fDAscCxrLDApfDApLUV8MDtpZigoa3wwKTwxNjgpe2NbbCsyND4+Ml09KChrfDApLzEyfDB8MCklN3wwfWJyZWFrfTtjYXNlIDEwMTpjYXNlIDEwMDp7bz1sKzEyfDA7bD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wPyhsKyAtMXwwKT4+PjA8MzE6MCl7Y1tvPj4yXT1sO2JyZWFrIGF9Y1trPj4yXT1wfDQ7YnJlYWt9O2Nhc2UgMTE2OmNhc2UgMTEwOntsPXArOHwwO3A9Y1toPj4yXXwwO2I6d2hpbGUoMSl7aD1jW2c+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKChjW2grMTI+PjJdfDApPT0oY1toKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xKXtjW2c+PjJdPTA7aD0wO2JyZWFrfWVsc2V7aD1jW2c+PjJdfDA7YnJlYWt9fX1lbHNle2g9MH19d2hpbGUoMCk7aD0oaHwwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCkhPShjW3ArMTY+PjJdfDApKXtpZihoKXticmVha31lbHNle2JyZWFrIGJ9fWlmKCEoKG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xKSl7aWYoIWgpe2JyZWFrIGJ9fWVsc2V7bz01MH19ZWxzZXtvPTUwfX13aGlsZSgwKTtpZigob3wwKT09NTApe289MDtpZihoKXtwPTA7YnJlYWt9ZWxzZXtwPTB9fWg9Y1tnPj4yXXwwO2Y9Y1toKzEyPj4yXXwwO2lmKChmfDApPT0oY1toKzE2Pj4yXXwwKSl7aD1vY1tjWyhjW2g+PjJdfDApKzM2Pj4yXSYxMjddKGgpfDB9ZWxzZXtoPWRbZj4+MF18MH1pZighKChoJjI1NSk8PDI0Pj4yND4tMSkpe2JyZWFrfWlmKChiWyhjW2w+PjJdfDApKyhoPDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7YnJlYWt9aj1jW2c+PjJdfDA7aD1qKzEyfDA7Zj1jW2g+PjJdfDA7aWYoKGZ8MCk9PShjW2orMTY+PjJdfDApKXtvY1tjWyhjW2o+PjJdfDApKzQwPj4yXSYxMjddKGopfDA7Y29udGludWV9ZWxzZXtjW2g+PjJdPWYrMTtjb250aW51ZX19bD1jW2c+PjJdfDA7ZG97aWYoKGx8MCkhPTApe2lmKChjW2wrMTI+PjJdfDApPT0oY1tsKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbbD4+Ml18MCkrMzY+PjJdJjEyN10obCl8MCk9PS0xKXtjW2c+PjJdPTA7bD0wO2JyZWFrfWVsc2V7bD1jW2c+PjJdfDA7YnJlYWt9fX1lbHNle2w9MH19d2hpbGUoMCk7bD0obHwwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCk9PShjW3ArMTY+PjJdfDApPyhvY1tjWyhjW3A+PjJdfDApKzM2Pj4yXSYxMjddKHApfDApPT0tMTowKXtvPTY5O2JyZWFrfWlmKGwpe2JyZWFrIGF9fWVsc2V7bz02OX19d2hpbGUoMCk7aWYoKG98MCk9PTY5PyFsOjApe2JyZWFrIGF9Y1trPj4yXT1jW2s+PjJdfDI7YnJlYWt9O2Nhc2UgOTk6e3E9Zis4fDA7cT1vY1tjWyhjW3E+PjJdfDApKzEyPj4yXSYxMjddKHEpfDA7cD1hW3E+PjBdfDA7aWYoKHAmMSk9PTApe289cSsxfDA7cD0ocCYyNTUpPj4+MX1lbHNle289Y1txKzg+PjJdfDA7cD1jW3ErND4+Ml18MH1UaShyLGYsY1tnPj4yXXwwLGNbaD4+Ml18MCxqLGssbCxvLG8rcHwwKTtjW2c+PjJdPWNbcj4+Ml07YnJlYWt9O2RlZmF1bHQ6e2Nbaz4+Ml09Y1trPj4yXXw0fX19d2hpbGUoMCk7Y1tlPj4yXT1jW2c+PjJdO2k9bjtyZXR1cm59RT1YYSg0KXwwO2NbRT4+Ml09MjEzMDQ7d2IoRXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gYmooYSxlLGYsZyxoKXthPWF8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2o9aTtsPWNbYT4+Ml18MDtkb3tpZigobHwwKSE9MCl7aWYoKGNbbCsxMj4+Ml18MCk9PShjW2wrMTY+PjJdfDApKXtpZigob2NbY1soY1tsPj4yXXwwKSszNj4+Ml0mMTI3XShsKXwwKT09LTEpe2NbYT4+Ml09MDtsPTA7YnJlYWt9ZWxzZXtsPWNbYT4+Ml18MDticmVha319fWVsc2V7bD0wfX13aGlsZSgwKTtsPShsfDApPT0wO2Rve2lmKChlfDApIT0wKXtpZigoY1tlKzEyPj4yXXwwKT09KGNbZSsxNj4+Ml18MCk/KG9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MCk9PS0xOjApe209MTA7YnJlYWt9aWYoIWwpe209MTF9fWVsc2V7bT0xMH19d2hpbGUoMCk7aWYoKG18MCk9PTEwKXtpZihsKXttPTExfWVsc2V7ZT0wfX1pZigobXwwKT09MTEpe2NbZj4+Ml09Y1tmPj4yXXw2O3A9MDtpPWo7cmV0dXJuIHB8MH1tPWNbYT4+Ml18MDtsPWNbbSsxMj4+Ml18MDtpZigobHwwKT09KGNbbSsxNj4+Ml18MCkpe209b2NbY1soY1ttPj4yXXwwKSszNj4+Ml0mMTI3XShtKXwwfWVsc2V7bT1kW2w+PjBdfDB9bD1tJjI1NTtpZihsPDwyND4+MjQ+LTE/KGs9Zys4fDAsISgoYlsoY1trPj4yXXwwKSsobTw8MjQ+PjI0PDwxKT4+MV0mMjA0OCk9PTApKTowKXtsPShoY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSY2M10oZyxsLDApfDApPDwyND4+MjQ7bz1jW2E+PjJdfDA7bT1vKzEyfDA7bj1jW20+PjJdfDA7aWYoKG58MCk9PShjW28rMTY+PjJdfDApKXtvY1tjWyhjW28+PjJdfDApKzQwPj4yXSYxMjddKG8pfDA7bj1lO209ZX1lbHNle2NbbT4+Ml09bisxO249ZTttPWV9d2hpbGUoMSl7bD1sKyAtNDh8MDtoPWgrIC0xfDA7ZT1jW2E+PjJdfDA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApPT0oY1tlKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MCk9PS0xKXtjW2E+PjJdPTA7ZT0wO2JyZWFrfWVsc2V7ZT1jW2E+PjJdfDA7YnJlYWt9fX1lbHNle2U9MH19d2hpbGUoMCk7bz0oZXwwKT09MDtpZigobXwwKSE9MCl7aWYoKGNbbSsxMj4+Ml18MCk9PShjW20rMTY+PjJdfDApKXttPShvY1tjWyhjW20+PjJdfDApKzM2Pj4yXSYxMjddKG0pfDApPT0tMTtlPW0/MDpuO209bT8wOm59ZWxzZXtlPW59fWVsc2V7ZT1uO209MH1uPWNbYT4+Ml18MDtpZighKChvXihtfDApPT0wKSYoaHwwKT4wKSl7bT0zODticmVha31vPWNbbisxMj4+Ml18MDtpZigob3wwKT09KGNbbisxNj4+Ml18MCkpe249b2NbY1soY1tuPj4yXXwwKSszNj4+Ml0mMTI3XShuKXwwfWVsc2V7bj1kW28+PjBdfDB9bz1uJjI1NTtpZighKG88PDI0Pj4yND4tMSkpe209NDk7YnJlYWt9aWYoKGJbKGNbaz4+Ml18MCkrKG48PDI0Pj4yNDw8MSk+PjFdJjIwNDgpPT0wKXttPTQ5O2JyZWFrfWw9KChoY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSY2M10oZyxvLDApfDApPDwyND4+MjQpKyhsKjEwfDApfDA7bj1jW2E+PjJdfDA7cD1uKzEyfDA7bz1jW3A+PjJdfDA7aWYoKG98MCk9PShjW24rMTY+PjJdfDApKXtvY1tjWyhjW24+PjJdfDApKzQwPj4yXSYxMjddKG4pfDA7bj1lO2NvbnRpbnVlfWVsc2V7Y1twPj4yXT1vKzE7bj1lO2NvbnRpbnVlfX1pZigobXwwKT09Mzgpe2Rve2lmKChufDApIT0wKXtpZigoY1tuKzEyPj4yXXwwKT09KGNbbisxNj4+Ml18MCkpe2lmKChvY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDApPT0tMSl7Y1thPj4yXT0wO249MDticmVha31lbHNle249Y1thPj4yXXwwO2JyZWFrfX19ZWxzZXtuPTB9fXdoaWxlKDApO2c9KG58MCk9PTA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApPT0oY1tlKzE2Pj4yXXwwKT8ob2NbY1soY1tlPj4yXXwwKSszNj4+Ml0mMTI3XShlKXwwKT09LTE6MCl7bT00NzticmVha31pZihnKXtwPWw7aT1qO3JldHVybiBwfDB9fWVsc2V7bT00N319d2hpbGUoMCk7aWYoKG18MCk9PTQ3PyFnOjApe3A9bDtpPWo7cmV0dXJuIHB8MH1jW2Y+PjJdPWNbZj4+Ml18MjtwPWw7aT1qO3JldHVybiBwfDB9ZWxzZSBpZigobXwwKT09NDkpe2k9ajtyZXR1cm4gbHwwfX1jW2Y+PjJdPWNbZj4+Ml18NDtwPTA7aT1qO3JldHVybiBwfDB9ZnVuY3Rpb24gY2ooYSxiLGQsZSxmLGcsaCxqLGspe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO209aTtpPWkrMzJ8MDtvPW07cD1tKzI0fDA7bj1tKzIwfDA7cj1tKzE2fDA7cT1tKzEyfDA7dD1jW2YrMjg+PjJdfDA7eT10KzR8MDtjW3k+PjJdPShjW3k+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW28+PjJdPTEzNDQ4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NDgsbyl9dT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dj1jW3QrOD4+Ml18MDtpZigoY1t0KzEyPj4yXXwwKS12Pj4yPj4+MD51Pj4+MD8ocz1jW3YrKHU8PDIpPj4yXXwwLChzfDApIT0wKTowKXt4PXQrNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbdD4+Ml18MCkrOD4+Ml0mMjU1XSh0KX1jW2c+PjJdPTA7YTpkb3tpZigoanwwKSE9KGt8MCkpe3Q9MDtiOndoaWxlKDEpe3U9dDt0PWQ7d2hpbGUoMSl7aWYoKHV8MCkhPTApe2Q9dDticmVhayBhfWlmKCh0fDApPT0wKXt1PTE7ZD0wO3Q9MH1lbHNle2Q9Y1t0KzEyPj4yXXwwO2lmKChkfDApPT0oY1t0KzE2Pj4yXXwwKSl7ZD1vY1tjWyhjW3Q+PjJdfDApKzM2Pj4yXSYxMjddKHQpfDB9ZWxzZXtkPWNbZD4+Ml18MH15PShkfDApPT0tMTt1PXk/MTowO2Q9eT8wOnQ7dD15PzA6dH1pZigoZXwwKSE9MCl7dj1jW2UrMTI+PjJdfDA7aWYoKHZ8MCk9PShjW2UrMTY+PjJdfDApKXt2PW9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MH1lbHNle3Y9Y1t2Pj4yXXwwfWlmKCEoKHZ8MCk9PS0xKSl7aWYoIXUpe2w9MjU7YnJlYWsgYn19ZWxzZXtsPTIzfX1lbHNle2w9MjN9aWYoKGx8MCk9PTIzKXtsPTA7aWYodSl7ZT0wO2w9MjU7YnJlYWsgYn1lbHNle2U9MH19aWYoKGhjW2NbKGNbcz4+Ml18MCkrNTI+PjJdJjYzXShzLGNbaj4+Ml18MCwwKXwwKTw8MjQ+PjI0PT0zNyl7bD0yNzticmVha31pZihoY1tjWyhjW3M+PjJdfDApKzEyPj4yXSY2M10ocyw4MTkyLGNbaj4+Ml18MCl8MCl7bD0zNzticmVha311PWQrMTJ8MDt3PWNbdT4+Ml18MDt2PWQrMTZ8MDtpZigod3wwKT09KGNbdj4+Ml18MCkpe3c9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7dz1jW3c+PjJdfDB9eT14Y1tjWyhjW3M+PjJdfDApKzI4Pj4yXSY2M10ocyx3KXwwO2lmKCh5fDApPT0oeGNbY1soY1tzPj4yXXwwKSsyOD4+Ml0mNjNdKHMsY1tqPj4yXXwwKXwwKSl7bD02MzticmVha31jW2c+PjJdPTQ7dT00fWM6ZG97aWYoKGx8MCk9PTI3KXtsPTA7dT1qKzR8MDtpZigodXwwKT09KGt8MCkpe2w9Mjg7YnJlYWsgYn10PWhjW2NbKGNbcz4+Ml18MCkrNTI+PjJdJjYzXShzLGNbdT4+Ml18MCwwKXwwO2lmKHQ8PDI0Pj4yND09NDh8dDw8MjQ+PjI0PT02OSl7dT1qKzh8MDtpZigodXwwKT09KGt8MCkpe2w9MzE7YnJlYWsgYn1qPXU7dT1oY1tjWyhjW3M+PjJdfDApKzUyPj4yXSY2M10ocyxjW3U+PjJdfDAsMCl8MH1lbHNle2o9dTt1PXQ7dD0wfXk9Y1soY1tiPj4yXXwwKSszNj4+Ml18MDtjW3I+PjJdPWQ7Y1txPj4yXT1lO2NbcCswPj4yXT1jW3IrMD4+Ml07Y1tvKzA+PjJdPWNbcSswPj4yXTtuY1t5JjMxXShuLGIscCxvLGYsZyxoLHUsdCk7aj1qKzR8MDtkPWNbbj4+Ml18MH1lbHNlIGlmKChsfDApPT0zNyl7d2hpbGUoMSl7bD0wO2o9ais0fDA7aWYoKGp8MCk9PShrfDApKXtqPWs7YnJlYWt9aWYoaGNbY1soY1tzPj4yXXwwKSsxMj4+Ml0mNjNdKHMsODE5MixjW2o+PjJdfDApfDApe2w9Mzd9ZWxzZXticmVha319dT1lO3c9ZTt3aGlsZSgxKXtpZigoZHwwKT09MCl7dj0xO2Q9MH1lbHNle3Y9Y1tkKzEyPj4yXXwwO2lmKCh2fDApPT0oY1tkKzE2Pj4yXXwwKSl7dj1vY1tjWyhjW2Q+PjJdfDApKzM2Pj4yXSYxMjddKGQpfDB9ZWxzZXt2PWNbdj4+Ml18MH15PSh2fDApPT0tMTt2PXk/MTowO2Q9eT8wOmQ7dD15PzA6dH1pZigod3wwKSE9MCl7eD1jW3crMTI+PjJdfDA7aWYoKHh8MCk9PShjW3crMTY+PjJdfDApKXt3PW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle3c9Y1t4Pj4yXXwwfWlmKCEoKHd8MCk9PS0xKSl7aWYodl4odXwwKT09MCl7dj11O3c9dX1lbHNle2Q9dDticmVhayBjfX1lbHNle3U9MDtlPTA7bD01MH19ZWxzZXtsPTUwfWlmKChsfDApPT01MCl7bD0wO2lmKHYpe2Q9dDticmVhayBjfWVsc2V7dj11O3c9MH19eD1kKzEyfDA7eT1jW3g+PjJdfDA7dT1kKzE2fDA7aWYoKHl8MCk9PShjW3U+PjJdfDApKXt5PW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle3k9Y1t5Pj4yXXwwfWlmKCEoaGNbY1soY1tzPj4yXXwwKSsxMj4+Ml0mNjNdKHMsODE5Mix5KXwwKSl7ZD10O2JyZWFrIGN9eT1jW3g+PjJdfDA7aWYoKHl8MCk9PShjW3U+PjJdfDApKXtvY1tjWyhjW2Q+PjJdfDApKzQwPj4yXSYxMjddKGQpfDA7dT12O2NvbnRpbnVlfWVsc2V7Y1t4Pj4yXT15KzQ7dT12O2NvbnRpbnVlfX19ZWxzZSBpZigobHwwKT09NjMpe2w9MDt3PWNbdT4+Ml18MDtpZigod3wwKT09KGNbdj4+Ml18MCkpe29jW2NbKGNbZD4+Ml18MCkrNDA+PjJdJjEyN10oZCl8MH1lbHNle2NbdT4+Ml09dys0fWo9ais0fDA7ZD10fX13aGlsZSgwKTtpZigoanwwKT09KGt8MCkpe2JyZWFrIGF9dD1jW2c+PjJdfDB9aWYoKGx8MCk9PTI1KXtjW2c+PjJdPTQ7YnJlYWt9ZWxzZSBpZigobHwwKT09Mjgpe2NbZz4+Ml09NDticmVha31lbHNlIGlmKChsfDApPT0zMSl7Y1tnPj4yXT00O2JyZWFrfX19d2hpbGUoMCk7aWYoKGR8MCk9PTApe249MDtvPTF9ZWxzZXtuPWNbZCsxMj4+Ml18MDtpZigobnwwKT09KGNbZCsxNj4+Ml18MCkpe249b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7bj1jW24+PjJdfDB9bz0obnwwKT09LTE7bj1vPzA6ZDtvPW8/MTowfWlmKChlfDApIT0wKXtwPWNbZSsxMj4+Ml18MDtpZigocHwwKT09KGNbZSsxNj4+Ml18MCkpe3A9b2NbY1soY1tlPj4yXXwwKSszNj4+Ml0mMTI3XShlKXwwfWVsc2V7cD1jW3A+PjJdfDB9aWYoISgocHwwKT09LTEpKXtpZihvKXtjW2E+PjJdPW47aT1tO3JldHVybn19ZWxzZXtsPTc4fX1lbHNle2w9Nzh9aWYoKGx8MCk9PTc4PyFvOjApe2NbYT4+Ml09bjtpPW07cmV0dXJufWNbZz4+Ml09Y1tnPj4yXXwyO2NbYT4+Ml09bjtpPW07cmV0dXJufXk9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIGRqKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGVqKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBmaihhKXthPWF8MDtyZXR1cm4gMn1mdW5jdGlvbiBnaihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wO2o9aTtjaihhLGIsY1tkPj4yXXwwLGNbZT4+Ml18MCxmLGcsaCwxMjUyOCwxMjU2MHwwKTtpPWo7cmV0dXJufWZ1bmN0aW9uIGhqKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTA7az1pO209ZCs4fDA7bT1vY1tjWyhjW20+PjJdfDApKzIwPj4yXSYxMjddKG0pfDA7bj1hW20+PjBdfDA7aWYoKG4mMSk9PTApe2w9bSs0fDA7bT0obiYyNTUpPj4+MX1lbHNle2w9Y1ttKzg+PjJdfDA7bT1jW20rND4+Ml18MH1jaihiLGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaixsLGwrKG08PDIpfDApO2k9aztyZXR1cm59ZnVuY3Rpb24gaWooYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MDtqPWk7aT1pKzE2fDA7bD1qO2Y9Y1tmKzI4Pj4yXXwwO209Zis0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tsPj4yXT0xMzQ0ODtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEzNDQ4LGwpfWw9KGNbMTM0NTI+PjJdfDApKyAtMXwwO209Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7bD1mKzR8MDttPWNbbD4+Ml18MDtjW2w+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9bT1jW2U+PjJdfDA7Yj1iKzh8MDtiPW9jW2NbY1tiPj4yXT4+Ml0mMTI3XShiKXwwO2I9KGFpKGQsbSxiLGIrMTY4fDAsayxnLDApfDApLWJ8MDtpZigoYnwwKT49MTY4KXttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1jW2grMjQ+PjJdPSgoYnwwKS8xMnwwfDApJTd8MDttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBqaihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wO2o9aTtpPWkrMTZ8MDtsPWo7Zj1jW2YrMjg+PjJdfDA7bT1mKzR8MDtjW20+PjJdPShjW20+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW2w+PjJdPTEzNDQ4O2NbbCs0Pj4yXT0yMDg7Y1tsKzg+PjJdPTA7Y2coMTM0NDgsbCl9bD0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7bT1jW2YrOD4+Ml18MDtpZigoY1tmKzEyPj4yXXwwKS1tPj4yPj4+MD5sPj4+MD8oaz1jW20rKGw8PDIpPj4yXXwwLChrfDApIT0wKTowKXtsPWYrNHwwO209Y1tsPj4yXXwwO2NbbD4+Ml09bSsgLTE7aWYoKG18MCk9PTApe2xjW2NbKGNbZj4+Ml18MCkrOD4+Ml0mMjU1XShmKX1tPWNbZT4+Ml18MDtiPWIrOHwwO2I9b2NbY1soY1tiPj4yXXwwKSs0Pj4yXSYxMjddKGIpfDA7Yj0oYWkoZCxtLGIsYisyODh8MCxrLGcsMCl8MCktYnwwO2lmKChifDApPj0yODgpe209Y1tkPj4yXXwwO2NbYT4+Ml09bTtpPWo7cmV0dXJufWNbaCsxNj4+Ml09KChifDApLzEyfDB8MCklMTJ8MDttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBraihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTA7Yj1pO2k9aSsxNnwwO2s9YjtmPWNbZisyOD4+Ml18MDtsPWYrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1rPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtsPWNbZis4Pj4yXXwwO2lmKChjW2YrMTI+PjJdfDApLWw+PjI+Pj4wPms+Pj4wPyhqPWNbbCsoazw8Mik+PjJdfDAsKGp8MCkhPTApOjApe2s9Zis0fDA7bD1jW2s+PjJdfDA7Y1trPj4yXT1sKyAtMTtpZigobHwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfWU9bWooZCxjW2U+PjJdfDAsZyxqLDQpfDA7aWYoKGNbZz4+Ml0mNHwwKSE9MCl7bD1jW2Q+PjJdfDA7Y1thPj4yXT1sO2k9YjtyZXR1cm59aWYoKGV8MCk8Njkpe2c9ZSsyZTN8MH1lbHNle2c9KGUrIC02OXwwKT4+PjA8MzE/ZSsxOTAwfDA6ZX1jW2grMjA+PjJdPWcrIC0xOTAwO2w9Y1tkPj4yXXwwO2NbYT4+Ml09bDtpPWI7cmV0dXJufWw9WGEoNCl8MDtjW2w+PjJdPTIxMzA0O3diKGx8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIGxqKGIsZCxlLGYsZyxoLGosayxsKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtsPWk7aT1pKzY0fDA7eT1sO3g9bCsxNnwwO3A9bCsyOHwwO3Y9bCsyNHwwO3c9bCszMnwwO0M9bCsxMnwwO3I9bCsyMHwwO3M9bCszNnwwO3Q9bCs0MHwwO3o9bCs0NHwwO3E9bCs0OHwwO2NbaD4+Ml09MDt1PWNbZysyOD4+Ml18MDtCPXUrNHwwO2NbQj4+Ml09KGNbQj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbeT4+Ml09MTM0NDg7Y1t5KzQ+PjJdPTIwODtjW3krOD4+Ml09MDtjZygxMzQ0OCx5KX1BPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtCPWNbdSs4Pj4yXXwwO2lmKChjW3UrMTI+PjJdfDApLUI+PjI+Pj4wPkE+Pj4wPyhuPWNbQisoQTw8Mik+PjJdfDAsKG58MCkhPTApOjApe0E9dSs0fDA7Qj1jW0E+PjJdfDA7Y1tBPj4yXT1CKyAtMTtpZigoQnwwKT09MCl7bGNbY1soY1t1Pj4yXXwwKSs4Pj4yXSYyNTVdKHUpfWE6ZG97c3dpdGNoKGs8PDI0Pj4yNHwwKXtjYXNlIDgzOntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8NjEpe2Nbaj4+Ml09bjticmVhayBhfWVsc2V7Y1toPj4yXT1tfDQ7YnJlYWsgYX19O2Nhc2UgODQ6e2NqKHMsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLDEyNjk2LDEyNzI4fDApO2NbZT4+Ml09Y1tzPj4yXTticmVha307Y2FzZSA4Mjp7Y2oocixkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosMTI2NzIsMTI2OTJ8MCk7Y1tlPj4yXT1jW3I+PjJdO2JyZWFrfTtjYXNlIDExMjp7bT1qKzh8MDtqPWNbZj4+Ml18MDtmPWQrOHwwO2Y9b2NbY1soY1tmPj4yXXwwKSs4Pj4yXSYxMjddKGYpfDA7ZD1hW2Y+PjBdfDA7aWYoKGQmMSk9PTApe2Q9KGQmMjU1KT4+PjF9ZWxzZXtkPWNbZis0Pj4yXXwwfWc9YVtmKzEyPj4wXXwwO2lmKChnJjEpPT0wKXtnPShnJjI1NSk+Pj4xfWVsc2V7Zz1jW2YrMTY+PjJdfDB9aWYoKGR8MCk9PSgwLWd8MCkpe2NbaD4+Ml09Y1toPj4yXXw0O2JyZWFrIGF9Qz1haShlLGosZixmKzI0fDAsbixoLDApfDA7aD1DLWZ8MDtpZigoQ3wwKT09KGZ8MCk/KGNbbT4+Ml18MCk9PTEyOjApe2NbbT4+Ml09MDticmVhayBhfWlmKChofDApPT0xMj8obz1jW20+PjJdfDAsKG98MCk8MTIpOjApe2NbbT4+Ml09bysxMn1icmVha307Y2FzZSAxMTQ6e2NqKEMsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLDEyNjI0LDEyNjY4fDApO2NbZT4+Ml09Y1tDPj4yXTticmVha307Y2FzZSAxMjA6e0M9Y1soY1tkPj4yXXwwKSsyMD4+Ml18MDtjW3Q+PjJdPWNbZT4+Ml07Y1t6Pj4yXT1jW2Y+PjJdO2NbeCswPj4yXT1jW3QrMD4+Ml07Y1t5KzA+PjJdPWNbeiswPj4yXTtpY1tDJjYzXShiLGQseCx5LGcsaCxqKTtpPWw7cmV0dXJufTtjYXNlIDg4OntvPWQrOHwwO289b2NbY1soY1tvPj4yXXwwKSsyND4+Ml0mMTI3XShvKXwwO249YVtvPj4wXXwwO2lmKChuJjEpPT0wKXttPW8rNHwwO249KG4mMjU1KT4+PjF9ZWxzZXttPWNbbys4Pj4yXXwwO249Y1tvKzQ+PjJdfDB9Y2oocSxkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosbSxtKyhuPDwyKXwwKTtjW2U+PjJdPWNbcT4+Ml07YnJlYWt9O2Nhc2UgMTE5OntuPW1qKGUsY1tmPj4yXXwwLGgsbiwxKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8Nyl7Y1tqKzI0Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMjE6e209aisyMHwwO249bWooZSxjW2Y+PjJdfDAsaCxuLDQpfDA7aWYoKGNbaD4+Ml0mNHwwKT09MCl7aWYoKG58MCk8Njkpe2g9bisyZTN8MH1lbHNle2g9KG4rIC02OXwwKT4+PjA8MzE/bisxOTAwfDA6bn1jW20+PjJdPWgrIC0xOTAwfWJyZWFrfTtjYXNlIDg5OnttPW1qKGUsY1tmPj4yXXwwLGgsbiw0KXwwO2lmKChjW2g+PjJdJjR8MCk9PTApe2NbaisyMD4+Ml09bSsgLTE5MDB9YnJlYWt9O2Nhc2UgMzc6e2o9Y1tmPj4yXXwwO2Y9Y1tlPj4yXXwwO2Rve2lmKChmfDApIT0wKXtkPWNbZisxMj4+Ml18MDtpZigoZHwwKT09KGNbZisxNj4+Ml18MCkpe2Y9b2NbY1soY1tmPj4yXXwwKSszNj4+Ml0mMTI3XShmKXwwfWVsc2V7Zj1jW2Q+PjJdfDB9aWYoKGZ8MCk9PS0xKXtjW2U+PjJdPTA7Zj0xO2JyZWFrfWVsc2V7Zj0oY1tlPj4yXXwwKT09MDticmVha319ZWxzZXtmPTF9fXdoaWxlKDApO2lmKChqfDApIT0wKXtkPWNbaisxMj4+Ml18MDtpZigoZHwwKT09KGNbaisxNj4+Ml18MCkpe2Q9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7ZD1jW2Q+PjJdfDB9aWYoISgoZHwwKT09LTEpKXtpZighZil7bT0xMjZ9fWVsc2V7bT0xMjR9fWVsc2V7bT0xMjR9aWYoKG18MCk9PTEyNCl7aWYoZil7bT0xMjZ9ZWxzZXtqPTB9fWlmKChtfDApPT0xMjYpe2NbaD4+Ml09Y1toPj4yXXw2O2JyZWFrIGF9ZD1jW2U+PjJdfDA7Zj1jW2QrMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2QrMTY+PjJdfDApKXtmPW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle2Y9Y1tmPj4yXXwwfWlmKCEoKGhjW2NbKGNbbj4+Ml18MCkrNTI+PjJdJjYzXShuLGYsMCl8MCk8PDI0Pj4yND09MzcpKXtjW2g+PjJdPWNbaD4+Ml18NDticmVhayBhfWQ9Y1tlPj4yXXwwO2Y9ZCsxMnwwO249Y1tmPj4yXXwwO2lmKChufDApPT0oY1tkKzE2Pj4yXXwwKSl7b2NbY1soY1tkPj4yXXwwKSs0MD4+Ml0mMTI3XShkKXwwfWVsc2V7Y1tmPj4yXT1uKzR9bj1jW2U+PjJdfDA7ZG97aWYoKG58MCkhPTApe2Y9Y1tuKzEyPj4yXXwwO2lmKChmfDApPT0oY1tuKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXtuPWNbZj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtuPTE7YnJlYWt9ZWxzZXtuPShjW2U+PjJdfDApPT0wO2JyZWFrfX1lbHNle249MX19d2hpbGUoMCk7aWYoKGp8MCkhPTApe2Y9Y1tqKzEyPj4yXXwwO2lmKChmfDApPT0oY1tqKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtqPWNbZj4+Ml18MH1pZighKChqfDApPT0tMSkpe2lmKG4pe2JyZWFrIGF9fWVsc2V7bT0xNDd9fWVsc2V7bT0xNDd9aWYoKG18MCk9PTE0Nz8hbjowKXticmVhayBhfWNbaD4+Ml09Y1toPj4yXXwyO2JyZWFrfTtjYXNlIDEwOTp7bj1taihlLGNbZj4+Ml18MCxoLG4sMil8MDttPWNbaD4+Ml18MDtpZigobSY0fDApPT0wJihufDApPDEzKXtjW2orMTY+PjJdPW4rIC0xO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSA3MDp7Y2oodyxkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosMTI1OTIsMTI2MjR8MCk7Y1tlPj4yXT1jW3c+PjJdO2JyZWFrfTtjYXNlIDY4Ontjaih2LGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaiwxMjU2MCwxMjU5MnwwKTtjW2U+PjJdPWNbdj4+Ml07YnJlYWt9O2Nhc2UgMTA0OmNhc2UgNjY6Y2FzZSA5ODp7Qj1jW2Y+PjJdfDA7Qz1kKzh8MDtDPW9jW2NbKGNbQz4+Ml18MCkrND4+Ml0mMTI3XShDKXwwO2g9KGFpKGUsQixDLEMrMjg4fDAsbixoLDApfDApLUN8MDtpZigoaHwwKTwyODgpe2NbaisxNj4+Ml09KChofDApLzEyfDB8MCklMTJ8MH1icmVha307Y2FzZSAxMTY6Y2FzZSAxMTA6e2o9Y1tmPj4yXXwwO3doaWxlKDEpe2Q9Y1tlPj4yXXwwO2Rve2lmKChkfDApIT0wKXtmPWNbZCsxMj4+Ml18MDtpZigoZnwwKT09KGNbZCsxNj4+Ml18MCkpe2Y9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7Zj1jW2Y+PjJdfDB9aWYoKGZ8MCk9PS0xKXtjW2U+PjJdPTA7Zj0xO2JyZWFrfWVsc2V7Zj0oY1tlPj4yXXwwKT09MDticmVha319ZWxzZXtmPTF9fXdoaWxlKDApO2lmKChqfDApIT0wKXtkPWNbaisxMj4+Ml18MDtpZigoZHwwKT09KGNbaisxNj4+Ml18MCkpe2Q9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7ZD1jW2Q+PjJdfDB9aWYoISgoZHwwKT09LTEpKXtpZighZil7YnJlYWt9fWVsc2V7bT01M319ZWxzZXttPTUzfWlmKChtfDApPT01Myl7bT0wO2lmKGYpe2o9MDticmVha31lbHNle2o9MH19ZD1jW2U+PjJdfDA7Zj1jW2QrMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2QrMTY+PjJdfDApKXtmPW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle2Y9Y1tmPj4yXXwwfWlmKCEoaGNbY1soY1tuPj4yXXwwKSsxMj4+Ml0mNjNdKG4sODE5MixmKXwwKSl7YnJlYWt9bz1jW2U+PjJdfDA7ZD1vKzEyfDA7Zj1jW2Q+PjJdfDA7aWYoKGZ8MCk9PShjW28rMTY+PjJdfDApKXtvY1tjWyhjW28+PjJdfDApKzQwPj4yXSYxMjddKG8pfDA7Y29udGludWV9ZWxzZXtjW2Q+PjJdPWYrNDtjb250aW51ZX19Zj1jW2U+PjJdfDA7ZG97aWYoKGZ8MCkhPTApe249Y1tmKzEyPj4yXXwwO2lmKChufDApPT0oY1tmKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2Y+PjJdfDApKzM2Pj4yXSYxMjddKGYpfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtuPTE7YnJlYWt9ZWxzZXtuPShjW2U+PjJdfDApPT0wO2JyZWFrfX1lbHNle249MX19d2hpbGUoMCk7aWYoKGp8MCkhPTApe2Y9Y1tqKzEyPj4yXXwwO2lmKChmfDApPT0oY1tqKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtqPWNbZj4+Ml18MH1pZighKChqfDApPT0tMSkpe2lmKG4pe2JyZWFrIGF9fWVsc2V7bT03NH19ZWxzZXttPTc0fWlmKChtfDApPT03ND8hbjowKXticmVhayBhfWNbaD4+Ml09Y1toPj4yXXwyO2JyZWFrfTtjYXNlIDY1OmNhc2UgOTc6e0I9Y1tmPj4yXXwwO0M9ZCs4fDA7Qz1vY1tjW2NbQz4+Ml0+PjJdJjEyN10oQyl8MDtoPShhaShlLEIsQyxDKzE2OHwwLG4saCwwKXwwKS1DfDA7aWYoKGh8MCk8MTY4KXtjW2orMjQ+PjJdPSgoaHwwKS8xMnwwfDApJTd8MH1icmVha307Y2FzZSA5OTp7bz1kKzh8MDtvPW9jW2NbKGNbbz4+Ml18MCkrMTI+PjJdJjEyN10obyl8MDtuPWFbbz4+MF18MDtpZigobiYxKT09MCl7bT1vKzR8MDtuPShuJjI1NSk+Pj4xfWVsc2V7bT1jW28rOD4+Ml18MDtuPWNbbys0Pj4yXXwwfWNqKHAsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLG0sbSsobjw8Mil8MCk7Y1tlPj4yXT1jW3A+PjJdO2JyZWFrfTtjYXNlIDcyOntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8MjQpe2Nbais4Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMDE6Y2FzZSAxMDA6e209aisxMnwwO2o9bWooZSxjW2Y+PjJdfDAsaCxuLDIpfDA7bj1jW2g+PjJdfDA7aWYoKG4mNHwwKT09MD8oaisgLTF8MCk+Pj4wPDMxOjApe2NbbT4+Ml09ajticmVhayBhfWNbaD4+Ml09bnw0O2JyZWFrfTtjYXNlIDczOnttPWorOHwwO249bWooZSxjW2Y+PjJdfDAsaCxuLDIpfDA7aj1jW2g+PjJdfDA7aWYoKGomNHwwKT09MD8obisgLTF8MCk+Pj4wPDEyOjApe2NbbT4+Ml09bjticmVhayBhfWNbaD4+Ml09anw0O2JyZWFrfTtjYXNlIDc3OntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8NjApe2Nbais0Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMDY6e249bWooZSxjW2Y+PjJdfDAsaCxuLDMpfDA7bT1jW2g+PjJdfDA7aWYoKG0mNHwwKT09MCYobnwwKTwzNjYpe2NbaisyOD4+Ml09bjticmVhayBhfWVsc2V7Y1toPj4yXT1tfDQ7YnJlYWsgYX19O2RlZmF1bHQ6e2NbaD4+Ml09Y1toPj4yXXw0fX19d2hpbGUoMCk7Y1tiPj4yXT1jW2U+PjJdO2k9bDtyZXR1cm59Qz1YYSg0KXwwO2NbQz4+Ml09MjEzMDQ7d2IoQ3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gbWooYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtrPWNbYT4+Ml18MDtkb3tpZigoa3wwKSE9MCl7aj1jW2srMTI+PjJdfDA7aWYoKGp8MCk9PShjW2srMTY+PjJdfDApKXtqPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2o9Y1tqPj4yXXwwfWlmKChqfDApPT0tMSl7Y1thPj4yXT0wO2o9MTticmVha31lbHNle2o9KGNbYT4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7aj0xfX13aGlsZSgwKTtpZigoYnwwKSE9MCl7az1jW2IrMTI+PjJdfDA7aWYoKGt8MCk9PShjW2IrMTY+PjJdfDApKXtrPW9jW2NbKGNbYj4+Ml18MCkrMzY+PjJdJjEyN10oYil8MH1lbHNle2s9Y1trPj4yXXwwfWlmKCEoKGt8MCk9PS0xKSl7aWYoIWope2c9MTV9fWVsc2V7Zz0xM319ZWxzZXtnPTEzfWlmKChnfDApPT0xMyl7aWYoail7Zz0xNX1lbHNle2I9MH19aWYoKGd8MCk9PTE1KXtjW2Q+PjJdPWNbZD4+Ml18NjtuPTA7aT1oO3JldHVybiBufDB9aj1jW2E+PjJdfDA7az1jW2orMTI+PjJdfDA7aWYoKGt8MCk9PShjW2orMTY+PjJdfDApKXtqPW9jW2NbKGNbaj4+Ml18MCkrMzY+PjJdJjEyN10oail8MH1lbHNle2o9Y1trPj4yXXwwfWlmKCEoaGNbY1soY1tlPj4yXXwwKSsxMj4+Ml0mNjNdKGUsMjA0OCxqKXwwKSl7Y1tkPj4yXT1jW2Q+PjJdfDQ7bj0wO2k9aDtyZXR1cm4gbnwwfWo9KGhjW2NbKGNbZT4+Ml18MCkrNTI+PjJdJjYzXShlLGosMCl8MCk8PDI0Pj4yNDtsPWNbYT4+Ml18MDtrPWwrMTJ8MDttPWNbaz4+Ml18MDtpZigobXwwKT09KGNbbCsxNj4+Ml18MCkpe29jW2NbKGNbbD4+Ml18MCkrNDA+PjJdJjEyN10obCl8MDtrPWI7bD1iO2I9an1lbHNle2Nbaz4+Ml09bSs0O2s9YjtsPWI7Yj1qfXdoaWxlKDEpe2I9YisgLTQ4fDA7Zj1mKyAtMXwwO2o9Y1thPj4yXXwwO2Rve2lmKChqfDApIT0wKXttPWNbaisxMj4+Ml18MDtpZigobXwwKT09KGNbaisxNj4+Ml18MCkpe2o9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7aj1jW20+PjJdfDB9aWYoKGp8MCk9PS0xKXtjW2E+PjJdPTA7bT0xO2JyZWFrfWVsc2V7bT0oY1thPj4yXXwwKT09MDticmVha319ZWxzZXttPTF9fXdoaWxlKDApO2lmKChsfDApPT0wKXtqPWs7bD0wO249MX1lbHNle2o9Y1tsKzEyPj4yXXwwO2lmKChqfDApPT0oY1tsKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2w+PjJdfDApKzM2Pj4yXSYxMjddKGwpfDB9ZWxzZXtqPWNbaj4+Ml18MH1uPShqfDApPT0tMTtqPW4/MDprO2w9bj8wOms7bj1uPzE6KGt8MCk9PTB9az1jW2E+PjJdfDA7aWYoISgobV5uKSYoZnwwKT4wKSl7YnJlYWt9bT1jW2srMTI+PjJdfDA7aWYoKG18MCk9PShjW2srMTY+PjJdfDApKXtrPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2s9Y1ttPj4yXXwwfWlmKCEoaGNbY1soY1tlPj4yXXwwKSsxMj4+Ml0mNjNdKGUsMjA0OCxrKXwwKSl7Zz01OTticmVha31iPSgoaGNbY1soY1tlPj4yXXwwKSs1Mj4+Ml0mNjNdKGUsaywwKXwwKTw8MjQ+PjI0KSsoYioxMHwwKXwwO209Y1thPj4yXXwwO249bSsxMnwwO2s9Y1tuPj4yXXwwO2lmKChrfDApPT0oY1ttKzE2Pj4yXXwwKSl7b2NbY1soY1ttPj4yXXwwKSs0MD4+Ml0mMTI3XShtKXwwO2s9ajtjb250aW51ZX1lbHNle2Nbbj4+Ml09ays0O2s9ajtjb250aW51ZX19aWYoKGd8MCk9PTU5KXtpPWg7cmV0dXJuIGJ8MH1kb3tpZigoa3wwKSE9MCl7ZT1jW2srMTI+PjJdfDA7aWYoKGV8MCk9PShjW2srMTY+PjJdfDApKXtlPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2U9Y1tlPj4yXXwwfWlmKChlfDApPT0tMSl7Y1thPj4yXT0wO2E9MTticmVha31lbHNle2E9KGNbYT4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7YT0xfX13aGlsZSgwKTtpZigoanwwKSE9MCl7ZT1jW2orMTI+PjJdfDA7aWYoKGV8MCk9PShjW2orMTY+PjJdfDApKXtlPW9jW2NbKGNbaj4+Ml18MCkrMzY+PjJdJjEyN10oail8MH1lbHNle2U9Y1tlPj4yXXwwfWlmKCEoKGV8MCk9PS0xKSl7aWYoYSl7bj1iO2k9aDtyZXR1cm4gbnwwfX1lbHNle2c9NTZ9fWVsc2V7Zz01Nn1pZigoZ3wwKT09NTY/IWE6MCl7bj1iO2k9aDtyZXR1cm4gbnwwfWNbZD4+Ml09Y1tkPj4yXXwyO249YjtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBuaihiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2U9Yis4fDA7Zj1jW2U+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChmfDApIT0oY1szMzQwXXwwKSl7VmIoY1tlPj4yXXwwKX1pZigoYnwwKT09MCl7aT1kO3JldHVybn12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIG9qKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtiPWIrOHwwO2U9Y1tiPj4yXXwwO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1pZigoZXwwKT09KGNbMzM0MF18MCkpe2k9ZDtyZXR1cm59VmIoY1tiPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIHBqKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wO2Y9aTtpPWkrMTEyfDA7bj1mKzEwMHwwO2c9ZjthW24+PjBdPTM3O2w9bisxfDA7YVtsPj4wXT1qO209bisyfDA7YVttPj4wXT1rO2FbbiszPj4wXT0wO2lmKCEoazw8MjQ+PjI0PT0wKSl7YVtsPj4wXT1rO2FbbT4+MF09an1uPWViKGd8MCwxMDAsbnwwLGh8MCxjW2QrOD4+Ml18MCl8MDtoPWcrbnwwO2Q9Y1tlPj4yXXwwO2lmKChufDApPT0wKXtuPWQ7Y1tiPj4yXT1uO2k9ZjtyZXR1cm59ZWxzZXtlPWQ7bD1kfWRve2o9YVtnPj4wXXwwO2Rve2lmKChlfDApIT0wKXtrPWUrMjR8MDtkPWNbaz4+Ml18MDtpZigoZHwwKT09KGNbZSsyOD4+Ml18MCkpe249KHhjW2NbKGNbZT4+Ml18MCkrNTI+PjJdJjYzXShlLGomMjU1KXwwKT09LTE7bD1uPzA6bDtlPW4/MDplO2JyZWFrfWVsc2V7Y1trPj4yXT1kKzE7YVtkPj4wXT1qO2JyZWFrfX1lbHNle2U9MH19d2hpbGUoMCk7Zz1nKzF8MH13aGlsZSgoZ3wwKSE9KGh8MCkpO2NbYj4+Ml09bDtpPWY7cmV0dXJufWZ1bmN0aW9uIHFqKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7ZT1iKzh8MDtmPWNbZT4+Ml18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9aWYoKGZ8MCkhPShjWzMzNDBdfDApKXtWYihjW2U+PjJdfDApfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gcmooYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2I9Yis4fDA7ZT1jW2I+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChlfDApPT0oY1szMzQwXXwwKSl7aT1kO3JldHVybn1WYihjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gc2ooYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7Zj1pO2k9aSs1Mjh8MDtvPWYrNTEyfDA7cD1mKzQxMnwwO209ZjtsPWYrNDA4fDA7Zz1mKzh8MDthW28+PjBdPTM3O249bysxfDA7YVtuPj4wXT1qO3E9bysyfDA7YVtxPj4wXT1rO2FbbyszPj4wXT0wO2lmKCEoazw8MjQ+PjI0PT0wKSl7YVtuPj4wXT1rO2FbcT4+MF09an1qPWQrOHwwO2ViKHB8MCwxMDAsb3wwLGh8MCxjW2o+PjJdfDApfDA7az1tO2Nbaz4+Ml09MDtjW2srND4+Ml09MDtjW2w+PjJdPXA7aj1pYihjW2o+PjJdfDApfDA7az1WbShnLGwsMTAwLG0pfDA7aWYoKGp8MCkhPTApe2liKGp8MCl8MH1pZigoa3wwKT09LTEpe29rKDE0Mjk2KX1qPWcrKGs8PDIpfDA7ZD1jW2U+PjJdfDA7aWYoKGt8MCk9PTApe3E9ZDtjW2I+PjJdPXE7aT1mO3JldHVybn1lbHNle2U9ZDtrPWR9ZG97ZD1jW2c+PjJdfDA7aWYoKGV8MCk9PTApe2U9MH1lbHNle2g9ZSsyNHwwO2w9Y1toPj4yXXwwO2lmKChsfDApPT0oY1tlKzI4Pj4yXXwwKSl7ZD14Y1tjWyhjW2U+PjJdfDApKzUyPj4yXSY2M10oZSxkKXwwfWVsc2V7Y1toPj4yXT1sKzQ7Y1tsPj4yXT1kfXE9KGR8MCk9PS0xO2s9cT8wOms7ZT1xPzA6ZX1nPWcrNHwwfXdoaWxlKChnfDApIT0oanwwKSk7Y1tiPj4yXT1rO2k9ZjtyZXR1cm59ZnVuY3Rpb24gdGooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gdWooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHZqKGEpe2E9YXwwO3JldHVybiAxMjd9ZnVuY3Rpb24gd2ooYSl7YT1hfDA7cmV0dXJuIDEyN31mdW5jdGlvbiB4aihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIHlqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gemooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBBaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09MjthW2IrMT4+MF09NDU7YVtiKzI+PjBdPTA7cmV0dXJufWZ1bmN0aW9uIEJqKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIENqKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBEaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gRWooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRmooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEdqKGEpe2E9YXwwO3JldHVybiAxMjd9ZnVuY3Rpb24gSGooYSl7YT1hfDA7cmV0dXJuIDEyN31mdW5jdGlvbiBJaihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIEpqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gS2ooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBMaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09MjthW2IrMT4+MF09NDU7YVtiKzI+PjBdPTA7cmV0dXJufWZ1bmN0aW9uIE1qKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIE5qKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBPaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gUGooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gUWooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFJqKGEpe2E9YXwwO3JldHVybiAyMTQ3NDgzNjQ3fWZ1bmN0aW9uIFNqKGEpe2E9YXwwO3JldHVybiAyMTQ3NDgzNjQ3fWZ1bmN0aW9uIFRqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gVWooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBWaihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIFdqKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZD1pO2FbYj4+MF09MjtiPWIrNHwwO2Y9MTtlPWI7d2hpbGUoMSl7Zj1mKyAtMXwwO2NbZT4+Ml09NDU7aWYoKGZ8MCk9PTApe2JyZWFrfWVsc2V7ZT1lKzR8MH19Y1tiKzQ+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBYaihhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBZaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gWmooYixjKXtiPWJ8MDtjPWN8MDthW2I+PjBdPTY3MTA5NjM0O2FbYisxPj4wXT0yNjIxNDc7YVtiKzI+PjBdPTEwMjQ7YVtiKzM+PjBdPTQ7cmV0dXJufWZ1bmN0aW9uIF9qKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uICRqKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBhayhhKXthPWF8MDtyZXR1cm4gMjE0NzQ4MzY0N31mdW5jdGlvbiBiayhhKXthPWF8MDtyZXR1cm4gMjE0NzQ4MzY0N31mdW5jdGlvbiBjayhhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIGRrKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gZWsoYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBmayhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2Q9aTthW2I+PjBdPTI7Yj1iKzR8MDtmPTE7ZT1iO3doaWxlKDEpe2Y9ZisgLTF8MDtjW2U+PjJdPTQ1O2lmKChmfDApPT0wKXticmVha31lbHNle2U9ZSs0fDB9fWNbYis0Pj4yXT0wO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ2soYSl7YT1hfDA7cmV0dXJuIDB9ZnVuY3Rpb24gaGsoYixjKXtiPWJ8MDtjPWN8MDthW2I+PjBdPTY3MTA5NjM0O2FbYisxPj4wXT0yNjIxNDc7YVtiKzI+PjBdPTEwMjQ7YVtiKzM+PjBdPTQ7cmV0dXJufWZ1bmN0aW9uIGlrKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBqayhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBrayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gbGsoYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO249aTtpPWkrMjQwfDA7cD1uO3g9bisxNDB8MDtkPW4rMTZ8MDtyPW4rMjR8MDt1PW4rMTM4fDA7cz1uKzEyOHwwO3E9bisyOHwwO2NbZD4+Ml09eDttPWQrNHwwO2NbbT4+Ml09MjEzO3g9eCsxMDB8MDtvPWNbaCsyOD4+Ml18MDt3PW8rNHwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbcD4+Ml09MTM0NTY7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ1NixwKX13PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt2PWNbbys4Pj4yXXwwO2lmKChjW28rMTI+PjJdfDApLXY+PjI+Pj4wPnc+Pj4wPyh0PWNbdisodzw8Mik+PjJdfDAsKHR8MCkhPTApOjApe2FbdT4+MF09MDtkb3tpZihuayhlLGNbZj4+Ml18MCxnLG8sY1toKzQ+PjJdfDAsaix1LHQsZCxyLHgpfDApe3VjW2NbKGNbdD4+Ml18MCkrMzI+PjJdJjMxXSh0LDEzMDg4LDEzMDk4fDAscyl8MDtnPWNbcj4+Ml18MDtoPWNbZD4+Ml18MDt0PWctaHwwO2lmKCh0fDApPjk4KXt2PXVuKHQrMnwwKXwwO2lmKCh2fDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3Q9dn19ZWxzZXt0PTA7dj1xfWlmKChhW3U+PjBdfDApIT0wKXthW3Y+PjBdPTQ1O3Y9disxfDB9aWYoaD4+PjA8Zz4+PjApe3U9cysxMHwwO2c9cztkb3t3PWFbaD4+MF18MDt4PXM7d2hpbGUoMSl7aWYoKGFbeD4+MF18MCk9PXc8PDI0Pj4yNCl7YnJlYWt9eD14KzF8MDtpZigoeHwwKT09KHV8MCkpe3g9dTticmVha319YVt2Pj4wXT1hWzEzMDg4Kyh4LWcpPj4wXXwwO2g9aCsxfDA7dj12KzF8MH13aGlsZShoPj4+MDwoY1tyPj4yXXwwKT4+PjApfWFbdj4+MF09MDtjW3A+PjJdPWs7aWYoKEZhKHF8MCwxMzEwNCxwfDApfDApPT0xKXtpZigodHwwKT09MCl7YnJlYWt9dm4odCk7YnJlYWt9Zj1YYSg4KXwwO2NbZj4+Ml09OTkyODt3aGlsZSgxKXtqPXVuKDI4KXwwO2lmKChqfDApIT0wKXtsPTI5O2JyZWFrfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXtsPTI3O2JyZWFrfXNjW2wmMzFdKCl9aWYoKGx8MCk9PTI3KXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNlIGlmKChsfDApPT0yOSl7Y1tqKzQ+PjJdPTE1O2Nbaj4+Ml09MTU7bD1qKzEyfDA7Y1tmKzQ+PjJdPWw7Y1tqKzg+PjJdPTA7aj1sKzB8MDtsPTEzMTEyfDA7Yj1qKzE2fDA7ZG97YVtqPj4wXT1hW2w+PjBdfDA7aj1qKzF8MDtsPWwrMXwwfXdoaWxlKChqfDApPChifDApKTt3YihmfDAsMTAwNjQsMTA2KX19fXdoaWxlKDApO3A9Y1tlPj4yXXwwO2lmKChwfDApIT0wKXtpZigoY1twKzEyPj4yXXwwKT09KGNbcCsxNj4+Ml18MCk/KG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xOjApe2NbZT4+Ml09MDtwPTB9fWVsc2V7cD0wfWs9KHB8MCk9PTA7ZT1jW2Y+PjJdfDA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApIT0oY1tlKzE2Pj4yXXwwKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTQ2O2JyZWFrfX1pZighKChvY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDApPT0tMSkpe2lmKGspe2JyZWFrfWVsc2V7bD00NjticmVha319ZWxzZXtjW2Y+PjJdPTA7bD00NDticmVha319ZWxzZXtsPTQ0fX13aGlsZSgwKTtpZigobHwwKT09NDQ/azowKXtsPTQ2fWlmKChsfDApPT00Nil7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1wO3c9bys0fDA7eD1jW3c+PjJdfDA7Y1t3Pj4yXT14KyAtMTtpZigoeHwwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfWw9Y1tkPj4yXXwwO2NbZD4+Ml09MDtpZigobHwwKT09MCl7aT1uO3JldHVybn1sY1tjW20+PjJdJjI1NV0obCk7aT1uO3JldHVybn14PVhhKDQpfDA7Y1t4Pj4yXT0yMTMwNDt3Yih4fDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBtayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gbmsoZSxmLGcsaCxqLGssbCxtLG4sbyxwKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDtwPXB8MDt2YXIgcT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MDt1PWk7aT1pKzU5MnwwO1E9dTtPPXUrMTEyfDA7Rz11KzEyfDA7TT11KzEwMHwwO0o9dSs0MHwwO0s9dSsyNHwwO0w9dSszNnwwO1A9dSs4OHwwO049dSs3NnwwO0g9dSs1MnwwO0k9dSs2NHwwO1Q9dSsxMjB8MDtGPXUrNTIwfDA7dD11KzUyNHwwO3k9dSs1MzZ8MDt4PXUrNTQ4fDA7cz11KzU2MHwwO3c9dSs1NzJ8MDtCPXUrNTg0fDA7Y1tGPj4yXT0wO2NbdCswPj4yXT0wO2NbdCs0Pj4yXT0wO2NbdCs4Pj4yXT0wO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbcyswPj4yXT0wO2Nbcys0Pj4yXT0wO2Nbcys4Pj4yXT0wO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wO2Rve2lmKGcpe2lmKCEoKGNbMzIyOF18MCk9PS0xKSl7Y1tRPj4yXT0xMjkxMjtjW1ErND4+Ml09MjA4O2NbUSs4Pj4yXT0wO2NnKDEyOTEyLFEpfUg9KGNbMTI5MTY+PjJdfDApKyAtMXwwO0U9Y1toKzg+PjJdfDA7aWYoKGNbaCsxMj4+Ml18MCktRT4+Mj4+PjA+SD4+PjA/KEQ9Y1tFKyhIPDwyKT4+Ml18MCwoRHwwKSE9MCk6MCl7bWNbY1soY1tEPj4yXXwwKSs0ND4+Ml0mMTI3XShPLEQpO2NbRj4+Ml09Y1tPPj4yXTttY1tjWyhjW0Q+PjJdfDApKzMyPj4yXSYxMjddKEcsRCk7aWYoKGFbcz4+MF0mMSk9PTApe2FbcysxPj4wXT0wO2Fbcz4+MF09MH1lbHNle2FbY1tzKzg+PjJdPj4wXT0wO2Nbcys0Pj4yXT0wfWlnKHMpO2NbcyswPj4yXT1jW0crMD4+Ml07Y1tzKzQ+PjJdPWNbRys0Pj4yXTtjW3MrOD4+Ml09Y1tHKzg+PjJdO2NbRyswPj4yXT0wO2NbRys0Pj4yXT0wO2NbRys4Pj4yXT0wO21jW2NbKGNbRD4+Ml18MCkrMjg+PjJdJjEyN10oTSxEKTtpZigoYVt4Pj4wXSYxKT09MCl7YVt4KzE+PjBdPTA7YVt4Pj4wXT0wfWVsc2V7YVtjW3grOD4+Ml0+PjBdPTA7Y1t4KzQ+PjJdPTB9aWcoeCk7Y1t4KzA+PjJdPWNbTSswPj4yXTtjW3grND4+Ml09Y1tNKzQ+PjJdO2NbeCs4Pj4yXT1jW00rOD4+Ml07Y1tNKzA+PjJdPTA7Y1tNKzQ+PjJdPTA7Y1tNKzg+PjJdPTA7aD1vY1tjWyhjW0Q+PjJdfDApKzEyPj4yXSYxMjddKEQpfDA7Rz1vY1tjWyhjW0Q+PjJdfDApKzE2Pj4yXSYxMjddKEQpfDA7bWNbY1soY1tEPj4yXXwwKSsyMD4+Ml0mMTI3XShKLEQpO2lmKChhW3Q+PjBdJjEpPT0wKXthW3QrMT4+MF09MDthW3Q+PjBdPTB9ZWxzZXthW2NbdCs4Pj4yXT4+MF09MDtjW3QrND4+Ml09MH1pZyh0KTtjW3QrMD4+Ml09Y1tKKzA+PjJdO2NbdCs0Pj4yXT1jW0orND4+Ml07Y1t0Kzg+PjJdPWNbSis4Pj4yXTtjW0orMD4+Ml09MDtjW0orND4+Ml09MDtjW0orOD4+Ml09MDttY1tjWyhjW0Q+PjJdfDApKzI0Pj4yXSYxMjddKEssRCk7aWYoKGFbeT4+MF0mMSk9PTApe2FbeSsxPj4wXT0wO2FbeT4+MF09MH1lbHNle2FbY1t5Kzg+PjJdPj4wXT0wO2NbeSs0Pj4yXT0wfWlnKHkpO2NbeSswPj4yXT1jW0srMD4+Ml07Y1t5KzQ+PjJdPWNbSys0Pj4yXTtjW3krOD4+Ml09Y1tLKzg+PjJdO2NbSyswPj4yXT0wO2NbSys0Pj4yXT0wO2NbSys4Pj4yXT0wO1Y9b2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwO2JyZWFrfWVhPVhhKDQpfDA7Y1tlYT4+Ml09MjEzMDQ7d2IoZWF8MCwyMTM3NiwxOTYpfWVsc2V7aWYoISgoY1szMjEyXXwwKT09LTEpKXtjW1E+PjJdPTEyODQ4O2NbUSs0Pj4yXT0yMDg7Y1tRKzg+PjJdPTA7Y2coMTI4NDgsUSl9Rz0oY1sxMjg1Mj4+Ml18MCkrIC0xfDA7RD1jW2grOD4+Ml18MDtpZigoY1toKzEyPj4yXXwwKS1EPj4yPj4+MD5HPj4+MD8oRT1jW0QrKEc8PDIpPj4yXXwwLChFfDApIT0wKTowKXttY1tjWyhjW0U+PjJdfDApKzQ0Pj4yXSYxMjddKEwsRSk7Y1tGPj4yXT1jW0w+PjJdO21jW2NbKGNbRT4+Ml18MCkrMzI+PjJdJjEyN10oUCxFKTtpZigoYVtzPj4wXSYxKT09MCl7YVtzKzE+PjBdPTA7YVtzPj4wXT0wfWVsc2V7YVtjW3MrOD4+Ml0+PjBdPTA7Y1tzKzQ+PjJdPTB9aWcocyk7Y1tzKzA+PjJdPWNbUCswPj4yXTtjW3MrND4+Ml09Y1tQKzQ+PjJdO2Nbcys4Pj4yXT1jW1ArOD4+Ml07Y1tQKzA+PjJdPTA7Y1tQKzQ+PjJdPTA7Y1tQKzg+PjJdPTA7bWNbY1soY1tFPj4yXXwwKSsyOD4+Ml0mMTI3XShOLEUpO2lmKChhW3g+PjBdJjEpPT0wKXthW3grMT4+MF09MDthW3g+PjBdPTB9ZWxzZXthW2NbeCs4Pj4yXT4+MF09MDtjW3grND4+Ml09MH1pZyh4KTtjW3grMD4+Ml09Y1tOKzA+PjJdO2NbeCs0Pj4yXT1jW04rND4+Ml07Y1t4Kzg+PjJdPWNbTis4Pj4yXTtjW04rMD4+Ml09MDtjW04rND4+Ml09MDtjW04rOD4+Ml09MDtoPW9jW2NbKGNbRT4+Ml18MCkrMTI+PjJdJjEyN10oRSl8MDtHPW9jW2NbKGNbRT4+Ml18MCkrMTY+PjJdJjEyN10oRSl8MDttY1tjWyhjW0U+PjJdfDApKzIwPj4yXSYxMjddKEgsRSk7aWYoKGFbdD4+MF0mMSk9PTApe2FbdCsxPj4wXT0wO2FbdD4+MF09MH1lbHNle2FbY1t0Kzg+PjJdPj4wXT0wO2NbdCs0Pj4yXT0wfWlnKHQpO2NbdCswPj4yXT1jW0grMD4+Ml07Y1t0KzQ+PjJdPWNbSCs0Pj4yXTtjW3QrOD4+Ml09Y1tIKzg+PjJdO2NbSCswPj4yXT0wO2NbSCs0Pj4yXT0wO2NbSCs4Pj4yXT0wO21jW2NbKGNbRT4+Ml18MCkrMjQ+PjJdJjEyN10oSSxFKTtpZigoYVt5Pj4wXSYxKT09MCl7YVt5KzE+PjBdPTA7YVt5Pj4wXT0wfWVsc2V7YVtjW3krOD4+Ml0+PjBdPTA7Y1t5KzQ+PjJdPTB9aWcoeSk7Y1t5KzA+PjJdPWNbSSswPj4yXTtjW3krND4+Ml09Y1tJKzQ+PjJdO2NbeSs4Pj4yXT1jW0krOD4+Ml07Y1tJKzA+PjJdPTA7Y1tJKzQ+PjJdPTA7Y1tJKzg+PjJdPTA7Vj1vY1tjWyhjW0U+PjJdfDApKzM2Pj4yXSYxMjddKEUpfDA7YnJlYWt9ZWE9WGEoNCl8MDtjW2VhPj4yXT0yMTMwNDt3YihlYXwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2Nbbz4+Ml09Y1tuPj4yXTtKPW0rOHwwO0k9cysxfDA7TD1zKzR8MDttPXMrOHwwO0s9eCsxfDA7SD14KzR8MDtEPXgrOHwwO009KGomNTEyfDApIT0wO1M9eSsxfDA7aj15Kzh8MDtRPXkrNHwwO2c9dysxfDA7RT13Kzh8MDtPPXcrNHwwO049RiszfDA7Uj1uKzR8MDtQPXQrNHwwO1g9VCs0MDB8MDtZPVQ7Wj1UO1U9MDtUPTA7Vz0yMTM7YTp3aGlsZSgxKXtfPWNbZT4+Ml18MDtkb3tpZigoX3wwKSE9MCl7aWYoKGNbXysxMj4+Ml18MCk9PShjW18rMTY+PjJdfDApKXtpZigob2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwKT09LTEpe2NbZT4+Ml09MDtfPTA7YnJlYWt9ZWxzZXtfPWNbZT4+Ml18MDticmVha319fWVsc2V7Xz0wfX13aGlsZSgwKTtfPShffDApPT0wO2Rve2lmKChmfDApIT0wKXtpZigoY1tmKzEyPj4yXXwwKSE9KGNbZisxNj4+Ml18MCkpe2lmKF8pe2JyZWFrfWVsc2V7Qz0zNjM7YnJlYWsgYX19aWYoISgob2NbY1soY1tmPj4yXXwwKSszNj4+Ml0mMTI3XShmKXwwKT09LTEpKXtpZighXyl7Qz0zNjM7YnJlYWsgYX19ZWxzZXtDPTc0fX1lbHNle0M9NzR9fXdoaWxlKDApO2lmKChDfDApPT03NCl7Qz0wO2lmKF8pe2Y9MDtDPTM2MzticmVha31lbHNle2Y9MH19Yjpkb3tzd2l0Y2goYVtGK1U+PjBdfDApe2Nhc2UgMjp7aWYoISgoVHwwKSE9MHxVPj4+MDwyKSl7aWYoKFV8MCk9PTIpe189KGFbTj4+MF18MCkhPTB9ZWxzZXtfPTB9aWYoIShNfF8pKXtUPTA7YnJlYWsgYn19JD1hW3k+PjBdfDA7YWE9KCQmMSk9PTA7Xz1hYT9TOmNbaj4+Ml18MDtjOmRve2lmKChVfDApIT0wPyhkW0YrKFUrIC0xKT4+MF18MCk8MjowKXtiYT1fKyhhYT8oJCYyNTUpPj4+MTpjW1E+PjJdfDApfDA7Y2E9Xzt3aGlsZSgxKXtpZigoY2F8MCk9PShiYXwwKSl7YnJlYWt9YWE9YVtjYT4+MF18MDtpZighKGFhPDwyND4+MjQ+LTEpKXtiYT1jYTticmVha31pZigoYlsoY1tKPj4yXXwwKSsoYWE8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXtiYT1jYTticmVha31lbHNle2NhPWNhKzF8MH19YWE9YmEtX3wwO2NhPWFbdz4+MF18MDtkYT0oY2EmMSk9PTA7aWYoZGEpe2VhPShjYSYyNTUpPj4+MX1lbHNle2VhPWNbTz4+Ml18MH1pZighKGFhPj4+MD5lYT4+PjApKXtpZihkYSl7ZGE9KGNhJjI1NSk+Pj4xO2NhPWc7ZWE9ZGE7ZGE9dysoZGEtYWEpKzF8MH1lbHNle2ZhPWNbRT4+Ml18MDtkYT1jW08+PjJdfDA7Y2E9ZmE7ZWE9ZGE7ZGE9ZmErKGRhLWFhKXwwfWFhPWNhK2VhfDA7aWYoKGRhfDApPT0oYWF8MCkpe2FhPWY7Xz1iYTtiYT1mfWVsc2V7Y2E9Xzt3aGlsZSgxKXtpZigoYVtkYT4+MF18MCkhPShhW2NhPj4wXXwwKSl7YWE9ZjtiYT1mO2JyZWFrIGN9ZGE9ZGErMXwwO2lmKChkYXwwKT09KGFhfDApKXthYT1mO189YmE7YmE9ZjticmVha31lbHNle2NhPWNhKzF8MH19fX1lbHNle2FhPWY7YmE9Zn19ZWxzZXthYT1mO2JhPWZ9fXdoaWxlKDApO2Q6d2hpbGUoMSl7aWYoKCQmMSk9PTApe2NhPVM7JD0oJCYyNTUpPj4+MX1lbHNle2NhPWNbaj4+Ml18MDskPWNbUT4+Ml18MH1pZigoX3wwKT09KGNhKyR8MCkpe2JyZWFrfSQ9Y1tlPj4yXXwwO2Rve2lmKCgkfDApIT0wKXtpZigoY1skKzEyPj4yXXwwKT09KGNbJCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjWyQ+PjJdfDApKzM2Pj4yXSYxMjddKCQpfDApPT0tMSl7Y1tlPj4yXT0wOyQ9MDticmVha31lbHNleyQ9Y1tlPj4yXXwwO2JyZWFrfX19ZWxzZXskPTB9fXdoaWxlKDApOyQ9KCR8MCk9PTA7ZG97aWYoKGJhfDApIT0wKXtpZigoY1tiYSsxMj4+Ml18MCkhPShjW2JhKzE2Pj4yXXwwKSl7aWYoJCl7JD1hYTticmVha31lbHNle2JyZWFrIGR9fWlmKCEoKG9jW2NbKGNbYmE+PjJdfDApKzM2Pj4yXSYxMjddKGJhKXwwKT09LTEpKXtpZigkXihhYXwwKT09MCl7JD1hYTtiYT1hYX1lbHNle2JyZWFrIGR9fWVsc2V7YWE9MDtmPTA7Qz0yMzJ9fWVsc2V7Qz0yMzJ9fXdoaWxlKDApO2lmKChDfDApPT0yMzIpe0M9MDtpZigkKXticmVha31lbHNleyQ9YWE7YmE9MH19YWE9Y1tlPj4yXXwwO2NhPWNbYWErMTI+PjJdfDA7aWYoKGNhfDApPT0oY1thYSsxNj4+Ml18MCkpe2FhPW9jW2NbKGNbYWE+PjJdfDApKzM2Pj4yXSYxMjddKGFhKXwwfWVsc2V7YWE9ZFtjYT4+MF18MH1pZighKChhYSYyNTUpPDwyND4+MjQ9PShhW18+PjBdfDApKSl7YnJlYWt9ZGE9Y1tlPj4yXXwwO2NhPWRhKzEyfDA7YWE9Y1tjYT4+Ml18MDtpZigoYWF8MCk9PShjW2RhKzE2Pj4yXXwwKSl7b2NbY1soY1tkYT4+Ml18MCkrNDA+PjJdJjEyN10oZGEpfDB9ZWxzZXtjW2NhPj4yXT1hYSsxfWFhPSQ7JD1hW3k+PjBdfDA7Xz1fKzF8MH1pZihNKXthYT1hW3k+PjBdfDA7aWYoKGFhJjEpPT0wKXskPVM7YWE9KGFhJjI1NSk+Pj4xfWVsc2V7JD1jW2o+PjJdfDA7YWE9Y1tRPj4yXXwwfWlmKChffDApIT0oJCthYXwwKSl7Qz0yNDc7YnJlYWsgYX19YnJlYWt9O2Nhc2UgMDp7Qz05NzticmVha307Y2FzZSAzOntfPWFbeD4+MF18MDthYT0oXyYxKT09MDtpZihhYSl7ZGE9KF8mMjU1KT4+PjF9ZWxzZXtkYT1jW0g+PjJdfDB9JD1hW3M+PjBdfDA7YmE9KCQmMSk9PTA7aWYoYmEpe2NhPSgkJjI1NSk+Pj4xfWVsc2V7Y2E9Y1tMPj4yXXwwfWlmKChkYXwwKSE9KDAtY2F8MCkpe2lmKGFhKXtjYT0oXyYyNTUpPj4+MX1lbHNle2NhPWNbSD4+Ml18MH1pZigoY2F8MCkhPTApe2lmKGJhKXtiYT0oJCYyNTUpPj4+MX1lbHNle2JhPWNbTD4+Ml18MH1pZigoYmF8MCkhPTApe2FhPWNbZT4+Ml18MDtiYT1jW2FhKzEyPj4yXXwwO2NhPWNbYWErMTY+PjJdfDA7aWYoKGJhfDApPT0oY2F8MCkpeyQ9b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDA7Y2E9Y1tlPj4yXXwwO189YVt4Pj4wXXwwO2FhPWNhO2JhPWNbY2ErMTI+PjJdfDA7Y2E9Y1tjYSsxNj4+Ml18MH1lbHNleyQ9ZFtiYT4+MF18MH1kYT1hYSsxMnwwO2NhPShiYXwwKT09KGNhfDApO2lmKCgkJjI1NSk8PDI0Pj4yND09KGFbKChfJjEpPT0wP0s6Y1tEPj4yXXwwKT4+MF18MCkpe2lmKGNhKXtvY1tjWyhjW2FhPj4yXXwwKSs0MD4+Ml0mMTI3XShhYSl8MH1lbHNle2NbZGE+PjJdPWJhKzF9Xz1hW3g+PjBdfDA7aWYoKF8mMSk9PTApe189KF8mMjU1KT4+PjF9ZWxzZXtfPWNbSD4+Ml18MH1UPV8+Pj4wPjE/eDpUO2JyZWFrIGJ9aWYoY2Epe189b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDB9ZWxzZXtfPWRbYmE+PjBdfDB9aWYoISgoXyYyNTUpPDwyND4+MjQ9PShhWygoYVtzPj4wXSYxKT09MD9JOmNbbT4+Ml18MCk+PjBdfDApKSl7Qz0xOTY7YnJlYWsgYX1hYT1jW2U+PjJdfDA7Xz1hYSsxMnwwOyQ9Y1tfPj4yXXwwO2lmKCgkfDApPT0oY1thYSsxNj4+Ml18MCkpe29jW2NbKGNbYWE+PjJdfDApKzQwPj4yXSYxMjddKGFhKXwwfWVsc2V7Y1tfPj4yXT0kKzF9YVtsPj4wXT0xO189YVtzPj4wXXwwO2lmKChfJjEpPT0wKXtfPShfJjI1NSk+Pj4xfWVsc2V7Xz1jW0w+PjJdfDB9VD1fPj4+MD4xP3M6VDticmVhayBifX1pZihhYSl7YWE9KF8mMjU1KT4+PjF9ZWxzZXthYT1jW0g+PjJdfDB9YmE9Y1tlPj4yXXwwO2NhPWNbYmErMTI+PjJdfDA7ZGE9KGNhfDApPT0oY1tiYSsxNj4+Ml18MCk7aWYoKGFhfDApPT0wKXtpZihkYSl7Xz1vY1tjWyhjW2JhPj4yXXwwKSszNj4+Ml0mMTI3XShiYSl8MDskPWFbcz4+MF18MH1lbHNle189ZFtjYT4+MF18MH1pZighKChfJjI1NSk8PDI0Pj4yND09KGFbKCgkJjEpPT0wP0k6Y1ttPj4yXXwwKT4+MF18MCkpKXticmVhayBifWFhPWNbZT4+Ml18MDtfPWFhKzEyfDA7JD1jW18+PjJdfDA7aWYoKCR8MCk9PShjW2FhKzE2Pj4yXXwwKSl7b2NbY1soY1thYT4+Ml18MCkrNDA+PjJdJjEyN10oYWEpfDB9ZWxzZXtjW18+PjJdPSQrMX1hW2w+PjBdPTE7Xz1hW3M+PjBdfDA7aWYoKF8mMSk9PTApe189KF8mMjU1KT4+PjF9ZWxzZXtfPWNbTD4+Ml18MH1UPV8+Pj4wPjE/czpUO2JyZWFrIGJ9aWYoZGEpeyQ9b2NbY1soY1tiYT4+Ml18MCkrMzY+PjJdJjEyN10oYmEpfDA7Xz1hW3g+PjBdfDB9ZWxzZXskPWRbY2E+PjBdfDB9aWYoISgoJCYyNTUpPDwyND4+MjQ9PShhWygoXyYxKT09MD9LOmNbRD4+Ml18MCk+PjBdfDApKSl7YVtsPj4wXT0xO2JyZWFrIGJ9Xz1jW2U+PjJdfDA7JD1fKzEyfDA7YWE9Y1skPj4yXXwwO2lmKChhYXwwKT09KGNbXysxNj4+Ml18MCkpe29jW2NbKGNbXz4+Ml18MCkrNDA+PjJdJjEyN10oXyl8MH1lbHNle2NbJD4+Ml09YWErMX1fPWFbeD4+MF18MDtpZigoXyYxKT09MCl7Xz0oXyYyNTUpPj4+MX1lbHNle189Y1tIPj4yXXwwfVQ9Xz4+PjA+MT94OlR9YnJlYWt9O2Nhc2UgNDp7Xz0wO2U6d2hpbGUoMSl7JD1jW2U+PjJdfDA7ZG97aWYoKCR8MCkhPTApe2lmKChjWyQrMTI+PjJdfDApPT0oY1skKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbJD4+Ml18MCkrMzY+PjJdJjEyN10oJCl8MCk9PS0xKXtjW2U+PjJdPTA7JD0wO2JyZWFrfWVsc2V7JD1jW2U+PjJdfDA7YnJlYWt9fX1lbHNleyQ9MH19d2hpbGUoMCk7JD0oJHwwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZigkKXticmVha31lbHNle2JyZWFrIGV9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoISQpe2JyZWFrIGV9fWVsc2V7Qz0yNTl9fWVsc2V7Qz0yNTl9fXdoaWxlKDApO2lmKChDfDApPT0yNTkpe0M9MDtpZigkKXtmPTA7YnJlYWt9ZWxzZXtmPTB9fSQ9Y1tlPj4yXXwwO2FhPWNbJCsxMj4+Ml18MDtpZigoYWF8MCk9PShjWyQrMTY+PjJdfDApKXthYT1vY1tjWyhjWyQ+PjJdfDApKzM2Pj4yXSYxMjddKCQpfDB9ZWxzZXthYT1kW2FhPj4wXXwwfSQ9YWEmMjU1O2lmKCQ8PDI0Pj4yND4tMT8hKChiWyhjW0o+PjJdfDApKyhhYTw8MjQ+PjI0PDwxKT4+MV0mMjA0OCk9PTApOjApe2FhPWNbbz4+Ml18MDtpZigoYWF8MCk9PShwfDApKXtiYT0oY1tSPj4yXXwwKSE9MjEzO2NhPWNbbj4+Ml18MDthYT1wLWNhfDA7cD1hYT4+PjA8MjE0NzQ4MzY0Nz9hYTw8MTotMTtjYT13bihiYT9jYTowLHApfDA7aWYoKGNhfDApPT0wKXtDPTI2ODticmVhayBhfWlmKCFiYSl7YmE9Y1tuPj4yXXwwO2Nbbj4+Ml09Y2E7aWYoKGJhfDApIT0wKXtsY1tjW1I+PjJdJjI1NV0oYmEpO2NhPWNbbj4+Ml18MH19ZWxzZXtjW24+PjJdPWNhfWNbUj4+Ml09MjE0O2FhPWNhK2FhfDA7Y1tvPj4yXT1hYTtwPShjW24+PjJdfDApK3B8MH1jW28+PjJdPWFhKzE7YVthYT4+MF09JDtfPV8rMXwwfWVsc2V7YWE9YVt0Pj4wXXwwO2lmKChhYSYxKT09MCl7YWE9KGFhJjI1NSk+Pj4xfWVsc2V7YWE9Y1tQPj4yXXwwfWlmKCEoKCgoYWF8MCk9PTB8KF98MCk9PTApXjEpJiQ8PDI0Pj4yND09Rzw8MjQ+PjI0KSl7YnJlYWt9aWYoKFl8MCk9PShYfDApKXtZPVktWnwwO1g9WT4+PjA8MjE0NzQ4MzY0Nz9ZPDwxOi0xO2lmKChXfDApPT0yMTMpe1o9MH1XPXduKFosWCl8MDtpZigoV3wwKT09MCl7Qz0yODU7YnJlYWsgYX1aPVc7WD1XKyhYPj4+Mjw8Mil8MDtZPVcrKFk+PjI8PDIpfDA7Vz0yMTR9Y1tZPj4yXT1fO1k9WSs0fDA7Xz0wfSQ9Y1tlPj4yXXwwO2FhPSQrMTJ8MDtiYT1jW2FhPj4yXXwwO2lmKChiYXwwKT09KGNbJCsxNj4+Ml18MCkpe29jW2NbKGNbJD4+Ml18MCkrNDA+PjJdJjEyN10oJCl8MDtjb250aW51ZX1lbHNle2NbYWE+PjJdPWJhKzE7Y29udGludWV9fWlmKCEoKFp8MCk9PShZfDApfChffDApPT0wKSl7aWYoKFl8MCk9PShYfDApKXtZPVktWnwwO1g9WT4+PjA8MjE0NzQ4MzY0Nz9ZPDwxOi0xO2lmKChXfDApPT0yMTMpe1o9MH1XPXduKFosWCl8MDtpZigoV3wwKT09MCl7Qz0yOTc7YnJlYWsgYX1aPVc7WD1XKyhYPj4+Mjw8Mil8MDtZPVcrKFk+PjI8PDIpfDA7Vz0yMTR9Y1tZPj4yXT1fO1k9WSs0fDB9aWYoKFZ8MCk+MCl7Xz1jW2U+PjJdfDA7ZG97aWYoKF98MCkhPTApe2lmKChjW18rMTI+PjJdfDApPT0oY1tfKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbXz4+Ml18MCkrMzY+PjJdJjEyN10oXyl8MCk9PS0xKXtjW2U+PjJdPTA7Xz0wO2JyZWFrfWVsc2V7Xz1jW2U+PjJdfDA7YnJlYWt9fX1lbHNle189MH19d2hpbGUoMCk7Xz0oX3wwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZihfKXticmVha31lbHNle0M9MzE5O2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoIV8pe0M9MzE5O2JyZWFrIGF9fWVsc2V7Qz0zMTN9fWVsc2V7Qz0zMTN9fXdoaWxlKDApO2lmKChDfDApPT0zMTMpe0M9MDtpZihfKXtDPTMxOTticmVhayBhfWVsc2V7Zj0wfX1fPWNbZT4+Ml18MDskPWNbXysxMj4+Ml18MDtpZigoJHwwKT09KGNbXysxNj4+Ml18MCkpe189b2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwfWVsc2V7Xz1kWyQ+PjBdfDB9aWYoISgoXyYyNTUpPDwyND4+MjQ9PWg8PDI0Pj4yNCkpe0M9MzE5O2JyZWFrIGF9Xz1jW2U+PjJdfDA7JD1fKzEyfDA7YWE9Y1skPj4yXXwwO2lmKChhYXwwKT09KGNbXysxNj4+Ml18MCkpe29jW2NbKGNbXz4+Ml18MCkrNDA+PjJdJjEyN10oXyl8MDthYT1mOyQ9Zn1lbHNle2NbJD4+Ml09YWErMTthYT1mOyQ9Zn13aGlsZSgxKXtfPWNbZT4+Ml18MDtkb3tpZigoX3wwKSE9MCl7aWYoKGNbXysxMj4+Ml18MCk9PShjW18rMTY+PjJdfDApKXtpZigob2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwKT09LTEpe2NbZT4+Ml09MDtfPTA7YnJlYWt9ZWxzZXtfPWNbZT4+Ml18MDticmVha319fWVsc2V7Xz0wfX13aGlsZSgwKTtiYT0oX3wwKT09MDtkb3tpZigoJHwwKSE9MCl7aWYoKGNbJCsxMj4+Ml18MCkhPShjWyQrMTY+PjJdfDApKXtpZihiYSl7Xz1hYTticmVha31lbHNle0M9MzQxO2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbJD4+Ml18MCkrMzY+PjJdJjEyN10oJCl8MCk9PS0xKSl7aWYoYmFeKGFhfDApPT0wKXtfPWFhOyQ9YWF9ZWxzZXtDPTM0MTticmVhayBhfX1lbHNle189MDtmPTA7Qz0zMzR9fWVsc2V7Xz1hYTtDPTMzNH19d2hpbGUoMCk7aWYoKEN8MCk9PTMzNCl7Qz0wO2lmKGJhKXtDPTM0MTticmVhayBhfWVsc2V7JD0wfX1hYT1jW2U+PjJdfDA7YmE9Y1thYSsxMj4+Ml18MDtpZigoYmF8MCk9PShjW2FhKzE2Pj4yXXwwKSl7YWE9b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDB9ZWxzZXthYT1kW2JhPj4wXXwwfWlmKCEoKGFhJjI1NSk8PDI0Pj4yND4tMSkpe0M9MzQxO2JyZWFrIGF9aWYoKGJbKGNbSj4+Ml18MCkrKGFhPDwyND4+MjQ8PDEpPj4xXSYyMDQ4KT09MCl7Qz0zNDE7YnJlYWsgYX1hYT1jW28+PjJdfDA7aWYoKGFhfDApPT0ocHwwKSl7YmE9KGNbUj4+Ml18MCkhPTIxMztjYT1jW24+PjJdfDA7YWE9cC1jYXwwO3A9YWE+Pj4wPDIxNDc0ODM2NDc/YWE8PDE6LTE7Y2E9d24oYmE/Y2E6MCxwKXwwO2lmKChjYXwwKT09MCl7Qz0zNDQ7YnJlYWsgYX1kb3tpZihiYSl7Y1tuPj4yXT1jYX1lbHNle2JhPWNbbj4+Ml18MDtjW24+PjJdPWNhO2lmKChiYXwwKT09MCl7YnJlYWt9bGNbY1tSPj4yXSYyNTVdKGJhKTtjYT1jW24+PjJdfDB9fXdoaWxlKDApO2NbUj4+Ml09MjE0O2FhPWNhK2FhfDA7Y1tvPj4yXT1hYTtwPShjW24+PjJdfDApK3B8MH1jYT1jW2U+PjJdfDA7YmE9Y1tjYSsxMj4+Ml18MDtpZigoYmF8MCk9PShjW2NhKzE2Pj4yXXwwKSl7YmE9b2NbY1soY1tjYT4+Ml18MCkrMzY+PjJdJjEyN10oY2EpfDA7YWE9Y1tvPj4yXXwwfWVsc2V7YmE9ZFtiYT4+MF18MH1jW28+PjJdPWFhKzE7YVthYT4+MF09YmE7Vj1WKyAtMXwwO2NhPWNbZT4+Ml18MDthYT1jYSsxMnwwO2JhPWNbYWE+PjJdfDA7aWYoKGJhfDApPT0oY1tjYSsxNj4+Ml18MCkpe29jW2NbKGNbY2E+PjJdfDApKzQwPj4yXSYxMjddKGNhKXwwfWVsc2V7Y1thYT4+Ml09YmErMX1pZigoVnwwKT4wKXthYT1ffWVsc2V7YnJlYWt9fX1pZigoY1tvPj4yXXwwKT09KGNbbj4+Ml18MCkpe0M9MzYxO2JyZWFrIGF9YnJlYWt9O2Nhc2UgMTp7aWYoKFV8MCk9PTMpe0M9MzYzO2JyZWFrIGF9Qz1jW2U+PjJdfDA7Xz1jW0MrMTI+PjJdfDA7aWYoKF98MCk9PShjW0MrMTY+PjJdfDApKXtDPW9jW2NbKGNbQz4+Ml18MCkrMzY+PjJdJjEyN10oQyl8MH1lbHNle0M9ZFtfPj4wXXwwfWlmKCEoKEMmMjU1KTw8MjQ+PjI0Pi0xKSl7Qz05NjticmVhayBhfWlmKChiWyhjW0o+PjJdfDApKyhDPDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7Qz05NjticmVhayBhfUM9Y1tlPj4yXXwwOyQ9QysxMnwwO189Y1skPj4yXXwwO2lmKChffDApPT0oY1tDKzE2Pj4yXXwwKSl7Qz1vY1tjWyhjW0M+PjJdfDApKzQwPj4yXSYxMjddKEMpfDB9ZWxzZXtjWyQ+PjJdPV8rMTtDPWRbXz4+MF18MH1fPUMmMjU1OyQ9YVt3Pj4wXXwwO0M9KCQmMSkhPTA7aWYoQyl7YWE9KGNbdz4+Ml0mLTIpKyAtMXwwOyQ9Y1tPPj4yXXwwfWVsc2V7YWE9MTA7JD0oJCYyNTUpPj4+MX1pZigoJHwwKT09KGFhfDApKXtsZyh3LGFhLDEsYWEsYWEsMCk7aWYoKGFbdz4+MF0mMSk9PTApe0M9OTN9ZWxzZXtDPTk0fX1lbHNle2lmKEMpe0M9OTR9ZWxzZXtDPTkzfX1pZigoQ3wwKT09OTMpe2Fbdz4+MF09KCQ8PDEpKzI7YmE9ZzthYT0kKzF8MH1lbHNlIGlmKChDfDApPT05NCl7YmE9Y1tFPj4yXXwwO2FhPSQrMXwwO2NbTz4+Ml09YWF9YVtiYSskPj4wXT1fO2FbYmErYWE+PjBdPTA7Qz05NzticmVha307ZGVmYXVsdDp7fX19d2hpbGUoMCk7Zjpkb3tpZigoQ3wwKT09OTcpe0M9MDtpZigoVXwwKT09Myl7Qz0zNjM7YnJlYWsgYX1lbHNle2FhPWY7JD1mfXdoaWxlKDEpe189Y1tlPj4yXXwwO2Rve2lmKChffDApIT0wKXtpZigoY1tfKzEyPj4yXXwwKT09KGNbXysxNj4+Ml18MCkpe2lmKChvY1tjWyhjW18+PjJdfDApKzM2Pj4yXSYxMjddKF8pfDApPT0tMSl7Y1tlPj4yXT0wO189MDticmVha31lbHNle189Y1tlPj4yXXwwO2JyZWFrfX19ZWxzZXtfPTB9fXdoaWxlKDApO2JhPShffDApPT0wO2Rve2lmKCgkfDApIT0wKXtpZigoY1skKzEyPj4yXXwwKSE9KGNbJCsxNj4+Ml18MCkpe2lmKGJhKXtfPWFhO2JyZWFrfWVsc2V7YnJlYWsgZn19aWYoISgob2NbY1soY1skPj4yXXwwKSszNj4+Ml0mMTI3XSgkKXwwKT09LTEpKXtpZihiYV4oYWF8MCk9PTApe189YWE7JD1hYX1lbHNle2JyZWFrIGZ9fWVsc2V7Xz0wO2Y9MDtDPTEwOX19ZWxzZXtfPWFhO0M9MTA5fX13aGlsZSgwKTtpZigoQ3wwKT09MTA5KXtDPTA7aWYoYmEpe2JyZWFrIGZ9ZWxzZXskPTB9fWJhPWNbZT4+Ml18MDthYT1jW2JhKzEyPj4yXXwwO2lmKChhYXwwKT09KGNbYmErMTY+PjJdfDApKXthYT1vY1tjWyhjW2JhPj4yXXwwKSszNj4+Ml0mMTI3XShiYSl8MH1lbHNle2FhPWRbYWE+PjBdfDB9aWYoISgoYWEmMjU1KTw8MjQ+PjI0Pi0xKSl7YnJlYWsgZn1pZigoYlsoY1tKPj4yXXwwKSsoYWE8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXticmVhayBmfWJhPWNbZT4+Ml18MDtDPWJhKzEyfDA7YWE9Y1tDPj4yXXwwO2lmKChhYXwwKT09KGNbYmErMTY+PjJdfDApKXtDPW9jW2NbKGNbYmE+PjJdfDApKzQwPj4yXSYxMjddKGJhKXwwfWVsc2V7Y1tDPj4yXT1hYSsxO0M9ZFthYT4+MF18MH1hYT1DJjI1NTtiYT1hW3c+PjBdfDA7Y2E9KGJhJjEpIT0wO2lmKGNhKXtDPShjW3c+PjJdJi0yKSsgLTF8MDtiYT1jW08+PjJdfDB9ZWxzZXtDPTEwO2JhPShiYSYyNTUpPj4+MX1pZigoYmF8MCk9PShDfDApKXtsZyh3LEMsMSxDLEMsMCk7aWYoKGFbdz4+MF0mMSk9PTApe0M9MTI2fWVsc2V7Qz0xMjd9fWVsc2V7aWYoY2Epe0M9MTI3fWVsc2V7Qz0xMjZ9fWlmKChDfDApPT0xMjYpe0M9MDthW3c+PjBdPShiYTw8MSkrMjtjYT1nO2RhPWJhKzF8MH1lbHNlIGlmKChDfDApPT0xMjcpe0M9MDtjYT1jW0U+PjJdfDA7ZGE9YmErMXwwO2NbTz4+Ml09ZGF9YVtjYStiYT4+MF09YWE7YVtjYStkYT4+MF09MDthYT1ffX19d2hpbGUoMCk7VT1VKzF8MDtpZighKFU+Pj4wPDQpKXtDPTM2MzticmVha319Zzpzd2l0Y2goQ3wwKXtjYXNlIDk2OntjW2s+PjJdPWNbaz4+Ml18NDtlPTA7WT1aO2JyZWFrfTtjYXNlIDE5Njp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAyNDc6e2Nbaz4+Ml09Y1trPj4yXXw0O2U9MDtZPVo7YnJlYWt9O2Nhc2UgMjY4OntmYT1YYSg0KXwwO2NbZmE+PjJdPTIyNjgwO3diKGZhfDAsMjI3MjgsMjA2KX07Y2FzZSAyODU6e2ZhPVhhKDQpfDA7Y1tmYT4+Ml09MjI2ODA7d2IoZmF8MCwyMjcyOCwyMDYpfTtjYXNlIDI5Nzp7ZmE9WGEoNCl8MDtjW2ZhPj4yXT0yMjY4MDt3YihmYXwwLDIyNzI4LDIwNil9O2Nhc2UgMzE5OntjW2s+PjJdPWNbaz4+Ml18NDtlPTA7WT1aO2JyZWFrfTtjYXNlIDM0MTp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAzNDQ6e2ZhPVhhKDQpfDA7Y1tmYT4+Ml09MjI2ODA7d2IoZmF8MCwyMjcyOCwyMDYpfTtjYXNlIDM2MTp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAzNjM6e2g6ZG97aWYoKFR8MCkhPTApe0Y9VCsxfDA7bj1UKzh8MDtsPVQrNHwwO289MTtpOndoaWxlKDEpe2g9YVtUPj4wXXwwO2lmKChoJjEpPT0wKXtoPShoJjI1NSk+Pj4xfWVsc2V7aD1jW2w+PjJdfDB9aWYoIShvPj4+MDxoPj4+MCkpe2JyZWFrIGh9aD1jW2U+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKChjW2grMTI+PjJdfDApPT0oY1toKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xKXtjW2U+PjJdPTA7aD0wO2JyZWFrfWVsc2V7aD1jW2U+PjJdfDA7YnJlYWt9fX1lbHNle2g9MH19d2hpbGUoMCk7aD0oaHwwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZihoKXticmVha31lbHNle2JyZWFrIGl9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoIWgpe2JyZWFrIGl9fWVsc2V7Qz0zODB9fWVsc2V7Qz0zODB9fXdoaWxlKDApO2lmKChDfDApPT0zODApe0M9MDtpZihoKXticmVha31lbHNle2Y9MH19aD1jW2U+PjJdfDA7Rz1jW2grMTI+PjJdfDA7aWYoKEd8MCk9PShjW2grMTY+PjJdfDApKXtoPW9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MH1lbHNle2g9ZFtHPj4wXXwwfWlmKChhW1Q+PjBdJjEpPT0wKXtHPUZ9ZWxzZXtHPWNbbj4+Ml18MH1pZighKChoJjI1NSk8PDI0Pj4yND09KGFbRytvPj4wXXwwKSkpe2JyZWFrfW89bysxfDA7aD1jW2U+PjJdfDA7Rz1oKzEyfDA7SD1jW0c+PjJdfDA7aWYoKEh8MCk9PShjW2grMTY+PjJdfDApKXtvY1tjWyhjW2g+PjJdfDApKzQwPj4yXSYxMjddKGgpfDA7Y29udGludWV9ZWxzZXtjW0c+PjJdPUgrMTtjb250aW51ZX19Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVhayBnfX13aGlsZSgwKTtpZigoWnwwKSE9KFl8MCkpe2NbQj4+Ml09MDtxayh0LFosWSxCKTtpZigoY1tCPj4yXXwwKT09MCl7ZT0xO1k9Wn1lbHNle2Nbaz4+Ml09Y1trPj4yXXw0O2U9MDtZPVp9fWVsc2V7ZT0xfWJyZWFrfX1pZighKChhW3c+PjBdJjEpPT0wKT8odj1jW0U+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbcz4+MF0mMSk9PTApPyh6PWNbbT4+Ml18MCwoenwwKSE9MCk6MCl7dm4oeil9aWYoISgoYVt4Pj4wXSYxKT09MCk/KEE9Y1tEPj4yXXwwLChBfDApIT0wKTowKXt2bihBKX1pZighKChhW3k+PjBdJjEpPT0wKT8ocj1jW2o+PjJdfDAsKHJ8MCkhPTApOjApe3ZuKHIpfWlmKCEoKGFbdD4+MF0mMSk9PTApPyhxPWNbdCs4Pj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1pZigoWXwwKT09MCl7aT11O3JldHVybiBlfDB9bGNbVyYyNTVdKFkpO2k9dTtyZXR1cm4gZXwwfWZ1bmN0aW9uIG9rKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2Q9WGEoOCl8MDtjW2Q+PjJdPTk5Mjg7Yj1KbihhfDApfDA7ZT1iKzEzfDA7ZT0oZXwwKT09MD8xOmU7d2hpbGUoMSl7Zz11bihlKXwwO2lmKChnfDApIT0wKXtmPTc7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2JyZWFrfXNjW2cmMzFdKCl9aWYoKGZ8MCk9PTcpe2NbZys0Pj4yXT1iO2NbZz4+Ml09YjtmPWcrMTJ8MDtjW2QrND4+Ml09ZjtjW2crOD4+Ml09MDtMbihmfDAsYXwwLGIrMXwwKXwwO3diKGR8MCwxMDA2NCwxMDYpfWc9WGEoNCl8MDtjW2c+PjJdPTIyNjgwO3diKGd8MCwyMjcyOCwyMDYpfWZ1bmN0aW9uIHBrKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDttPWk7aT1pKzEyOHwwO3A9bTtzPW0rMjh8MDtkPW0rMTZ8MDtxPW0rMTJ8MDt0PW0rMjR8MDtjW2Q+PjJdPXM7bD1kKzR8MDtjW2w+PjJdPTIxMztzPXMrMTAwfDA7bj1jW2grMjg+PjJdfDA7dT1uKzR8MDtjW3U+PjJdPShjW3U+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3A+PjJdPTEzNDU2O2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM0NTYscCl9cD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dT1jW24rOD4+Ml18MDtpZigoY1tuKzEyPj4yXXwwKS11Pj4yPj4+MD5wPj4+MD8ocj1jW3UrKHA8PDIpPj4yXXwwLChyfDApIT0wKTowKXthW3Q+PjBdPTA7cD1jW2Y+PjJdfDA7ZG97aWYobmsoZSxwLGcsbixjW2grND4+Ml18MCxqLHQscixkLHEscyl8MCl7aWYoKGFbaz4+MF0mMSk9PTApe2FbaysxPj4wXT0wO2Fbaz4+MF09MH1lbHNle2FbY1trKzg+PjJdPj4wXT0wO2Nbays0Pj4yXT0wfWlmKChhW3Q+PjBdfDApIT0wKXtnPXhjW2NbKGNbcj4+Ml18MCkrMjg+PjJdJjYzXShyLDQ1KXwwO2g9YVtrPj4wXXwwO289KGgmMSkhPTA7aWYobyl7cz0oY1trPj4yXSYtMikrIC0xfDA7aD1jW2srND4+Ml18MH1lbHNle3M9MTA7aD0oaCYyNTUpPj4+MX1pZigoaHwwKT09KHN8MCkpe2xnKGsscywxLHMscywwKTtpZigoYVtrPj4wXSYxKT09MCl7bz0yMX1lbHNle289MjJ9fWVsc2V7aWYobyl7bz0yMn1lbHNle289MjF9fWlmKChvfDApPT0yMSl7YVtrPj4wXT0oaDw8MSkrMjtzPWsrMXwwO3Q9aCsxfDB9ZWxzZSBpZigob3wwKT09MjIpe3M9Y1trKzg+PjJdfDA7dD1oKzF8MDtjW2srND4+Ml09dH1hW3MraD4+MF09ZzthW3MrdD4+MF09MH1yPXhjW2NbKGNbcj4+Ml18MCkrMjg+PjJdJjYzXShyLDQ4KXwwO2g9Y1tkPj4yXXwwO3E9Y1txPj4yXXwwO2c9cSsgLTF8MDthOmRve2lmKGg+Pj4wPGc+Pj4wKXt3aGlsZSgxKXtzPWgrMXwwO2lmKCEoKGFbaD4+MF18MCk9PXI8PDI0Pj4yNCkpe2JyZWFrIGF9aWYocz4+PjA8Zz4+PjApe2g9c31lbHNle2g9czticmVha319fX13aGlsZSgwKTtzPWg7cj1hW2s+PjBdfDA7aWYoKHImMSk9PTApe3Q9cjt1PTEwO3I9KHImMjU1KT4+PjF9ZWxzZXt1PWNbaz4+Ml18MDt0PXUmMjU1O3U9KHUmLTIpKyAtMXwwO3I9Y1trKzQ+PjJdfDB9Zz1xLXN8MDtpZigocXwwKSE9KGh8MCkpe2lmKCh1LXJ8MCk+Pj4wPGc+Pj4wKXtsZyhrLHUscitnLXV8MCxyLHIsMCk7dD1hW2s+PjBdfDB9aWYoKHQmMSk9PTApe3Q9aysxfDB9ZWxzZXt0PWNbays4Pj4yXXwwfXM9cSsoci1zKXwwO3U9dCtyfDA7d2hpbGUoMSl7YVt1Pj4wXT1hW2g+PjBdfDA7aD1oKzF8MDtpZigoaHwwKT09KHF8MCkpe2JyZWFrfXU9dSsxfDB9YVt0K3M+PjBdPTA7cT1yK2d8MDtpZigoYVtrPj4wXSYxKT09MCl7YVtrPj4wXT1xPDwxO2JyZWFrfWVsc2V7Y1trKzQ+PjJdPXE7YnJlYWt9fX19d2hpbGUoMCk7az1jW2U+PjJdfDA7aWYoKGt8MCkhPTApe2lmKChjW2srMTI+PjJdfDApPT0oY1trKzE2Pj4yXXwwKT8ob2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwKT09LTE6MCl7Y1tlPj4yXT0wO2s9MH19ZWxzZXtrPTB9ZT0oa3wwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCkhPShjW3ArMTY+PjJdfDApKXtpZihlKXticmVha31lbHNle289NTc7YnJlYWt9fWlmKCEoKG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xKSl7aWYoZSl7YnJlYWt9ZWxzZXtvPTU3O2JyZWFrfX1lbHNle2NbZj4+Ml09MDtvPTU1O2JyZWFrfX1lbHNle289NTV9fXdoaWxlKDApO2lmKChvfDApPT01NT9lOjApe289NTd9aWYoKG98MCk9PTU3KXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWs7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApPT0wKXtsY1tjWyhjW24+PjJdfDApKzg+PjJdJjI1NV0obil9aj1jW2Q+PjJdfDA7Y1tkPj4yXT0wO2lmKChqfDApPT0wKXtpPW07cmV0dXJufWxjW2NbbD4+Ml0mMjU1XShqKTtpPW07cmV0dXJufXU9WGEoNCl8MDtjW3U+PjJdPTIxMzA0O3diKHV8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHFrKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTA7Zz1pO2s9YVtiPj4wXXwwO2lmKChrJjEpPT0wKXtqPShrJjI1NSk+Pj4xfWVsc2V7aj1jW2IrND4+Ml18MH1pZigoanwwKT09MCl7aT1nO3JldHVybn1pZigoZHwwKSE9KGV8MCk/KGg9ZSsgLTR8MCxoPj4+MD5kPj4+MCk6MCl7aj1kO2Rve2s9Y1tqPj4yXXwwO2Nbaj4+Ml09Y1toPj4yXTtjW2g+PjJdPWs7aj1qKzR8MDtoPWgrIC00fDB9d2hpbGUoaj4+PjA8aD4+PjApO2s9YVtiPj4wXXwwfWlmKChrJjEpPT0wKXtoPWIrMXwwO2I9KGsmMjU1KT4+PjF9ZWxzZXtoPWNbYis4Pj4yXXwwO2I9Y1tiKzQ+PjJdfDB9ZT1lKyAtNHwwO2s9YVtoPj4wXXwwO2o9azw8MjQ+PjI0PDF8azw8MjQ+PjI0PT0xMjc7YTpkb3tpZihlPj4+MD5kPj4+MCl7Yj1oK2J8MDt3aGlsZSgxKXtpZighaj8oazw8MjQ+PjI0fDApIT0oY1tkPj4yXXwwKTowKXticmVha31oPShiLWh8MCk+MT9oKzF8MDpoO2Q9ZCs0fDA7az1hW2g+PjBdfDA7aj1rPDwyND4+MjQ8MXxrPDwyND4+MjQ9PTEyNztpZighKGQ+Pj4wPGU+Pj4wKSl7YnJlYWsgYX19Y1tmPj4yXT00O2k9ZztyZXR1cm59fXdoaWxlKDApO2lmKGope2k9ZztyZXR1cm59aj1jW2U+PjJdfDA7aWYoIShrPDwyND4+MjQ+Pj4wPGo+Pj4wfChqfDApPT0wKSl7aT1nO3JldHVybn1jW2Y+PjJdPTQ7aT1nO3JldHVybn1mdW5jdGlvbiByayhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBzayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gdGsoYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO249aTtpPWkrNTc2fDA7cT1uO3Y9bisyNHwwO2Q9bisxNnwwO3I9bis0NjR8MDt1PW4rNTY4fDA7cz1uKzQyNHwwO3A9bis0Njh8MDtjW2Q+PjJdPXY7bT1kKzR8MDtjW20+PjJdPTIxMzt2PXYrNDAwfDA7bz1jW2grMjg+PjJdfDA7eD1vKzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW3E+PjJdPTEzNDQ4O2NbcSs0Pj4yXT0yMDg7Y1txKzg+PjJdPTA7Y2coMTM0NDgscSl9eD0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dz1jW28rOD4+Ml18MDtpZigoY1tvKzEyPj4yXXwwKS13Pj4yPj4+MD54Pj4+MD8odD1jW3crKHg8PDIpPj4yXXwwLCh0fDApIT0wKTowKXthW3U+PjBdPTA7ZG97aWYodWsoZSxjW2Y+PjJdfDAsZyxvLGNbaCs0Pj4yXXwwLGosdSx0LGQscix2KXwwKXt1Y1tjWyhjW3Q+PjJdfDApKzQ4Pj4yXSYzMV0odCwxMzE2OCwxMzE3OHwwLHMpfDA7aD1jW3I+PjJdfDA7Zz1jW2Q+PjJdfDA7dD1oLWd8MDtpZigodHwwKT4zOTIpe3Y9dW4oKHQ+PjIpKzJ8MCl8MDtpZigodnwwKT09MCl7eD1YYSg0KXwwO2NbeD4+Ml09MjI2ODA7d2IoeHwwLDIyNzI4LDIwNil9ZWxzZXt0PXZ9fWVsc2V7dD0wO3Y9cH1pZigoYVt1Pj4wXXwwKSE9MCl7YVt2Pj4wXT00NTt2PXYrMXwwfWlmKGc+Pj4wPGg+Pj4wKXtoPXMrNDB8MDt1PXM7ZG97eD1jW2c+PjJdfDA7dz1zO3doaWxlKDEpe2lmKChjW3c+PjJdfDApPT0oeHwwKSl7YnJlYWt9dz13KzR8MDtpZigod3wwKT09KGh8MCkpe3c9aDticmVha319YVt2Pj4wXT1hWzEzMTY4Kyh3LXU+PjIpPj4wXXwwO2c9Zys0fDA7dj12KzF8MH13aGlsZShnPj4+MDwoY1tyPj4yXXwwKT4+PjApfWFbdj4+MF09MDtjW3E+PjJdPWs7aWYoKEZhKHB8MCwxMzEwNCxxfDApfDApPT0xKXtpZigodHwwKT09MCl7YnJlYWt9dm4odCk7YnJlYWt9aj1YYSg4KXwwO2Nbaj4+Ml09OTkyODt3aGlsZSgxKXtkPXVuKDI4KXwwO2lmKChkfDApIT0wKXtsPTI5O2JyZWFrfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXtsPTI3O2JyZWFrfXNjW2wmMzFdKCl9aWYoKGx8MCk9PTI3KXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNlIGlmKChsfDApPT0yOSl7Y1tkKzQ+PjJdPTE1O2NbZD4+Ml09MTU7Yj1kKzEyfDA7Y1tqKzQ+PjJdPWI7Y1tkKzg+PjJdPTA7Yj1iKzB8MDtkPTEzMTEyfDA7bD1iKzE2fDA7ZG97YVtiPj4wXT1hW2Q+PjBdfDA7Yj1iKzF8MDtkPWQrMXwwfXdoaWxlKChifDApPChsfDApKTt3YihqfDAsMTAwNjQsMTA2KX19fXdoaWxlKDApO2s9Y1tlPj4yXXwwO2lmKChrfDApIT0wKXtwPWNbaysxMj4+Ml18MDtpZigocHwwKT09KGNbaysxNj4+Ml18MCkpe3A9b2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwfWVsc2V7cD1jW3A+PjJdfDB9aWYoKHB8MCk9PS0xKXtjW2U+PjJdPTA7ZT0wO2s9MX1lbHNle2U9aztrPTB9fWVsc2V7ZT0wO2s9MX1xPWNbZj4+Ml18MDtkb3tpZigocXwwKSE9MCl7cD1jW3ErMTI+PjJdfDA7aWYoKHB8MCk9PShjW3ErMTY+PjJdfDApKXtwPW9jW2NbKGNbcT4+Ml18MCkrMzY+PjJdJjEyN10ocSl8MH1lbHNle3A9Y1twPj4yXXwwfWlmKCEoKHB8MCk9PS0xKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTQ3O2JyZWFrfX1lbHNle2NbZj4+Ml09MDtsPTQ1O2JyZWFrfX1lbHNle2w9NDV9fXdoaWxlKDApO2lmKChsfDApPT00NT9rOjApe2w9NDd9aWYoKGx8MCk9PTQ3KXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWU7dz1vKzR8MDt4PWNbdz4+Ml18MDtjW3c+PjJdPXgrIC0xO2lmKCh4fDApPT0wKXtsY1tjWyhjW28+PjJdfDApKzg+PjJdJjI1NV0obyl9bD1jW2Q+PjJdfDA7Y1tkPj4yXT0wO2lmKChsfDApPT0wKXtpPW47cmV0dXJufWxjW2NbbT4+Ml0mMjU1XShsKTtpPW47cmV0dXJufXg9WGEoNCl8MDtjW3g+PjJdPTIxMzA0O3diKHh8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHVrKGIsZSxmLGcsaCxqLGssbCxtLG4sbyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7dmFyIHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTA7dj1pO2k9aSs1OTJ8MDtRPXY7Tz12KzExMnwwO0s9disxMnwwO0c9disxMDB8MDtIPXYrNDB8MDtFPXYrMjR8MDtOPXYrMzZ8MDtNPXYrODh8MDtMPXYrNzZ8MDtKPXYrNTJ8MDtJPXYrNjR8MDtQPXYrMTIwfDA7Rj12KzUyMHwwO3Q9dis1MjR8MDt3PXYrNTM2fDA7eD12KzU0OHwwO3I9dis1NjB8MDtzPXYrNTcyfDA7QT12KzU4NHwwO2NbRj4+Ml09MDtjW3QrMD4+Ml09MDtjW3QrND4+Ml09MDtjW3QrOD4+Ml09MDtjW3crMD4+Ml09MDtjW3crND4+Ml09MDtjW3crOD4+Ml09MDtjW3grMD4+Ml09MDtjW3grND4+Ml09MDtjW3grOD4+Ml09MDtjW3IrMD4+Ml09MDtjW3IrND4+Ml09MDtjW3IrOD4+Ml09MDtjW3MrMD4+Ml09MDtjW3MrND4+Ml09MDtjW3MrOD4+Ml09MDtkb3tpZihmKXtpZighKChjWzMyNjBdfDApPT0tMSkpe2NbUT4+Ml09MTMwNDA7Y1tRKzQ+PjJdPTIwODtjW1ErOD4+Ml09MDtjZygxMzA0MCxRKX1DPShjWzEzMDQ0Pj4yXXwwKSsgLTF8MDtJPWNbZys4Pj4yXXwwO2lmKChjW2crMTI+PjJdfDApLUk+PjI+Pj4wPkM+Pj4wPyhEPWNbSSsoQzw8Mik+PjJdfDAsKER8MCkhPTApOjApe21jW2NbKGNbRD4+Ml18MCkrNDQ+PjJdJjEyN10oTyxEKTtjW0Y+PjJdPWNbTz4+Ml07bWNbY1soY1tEPj4yXXwwKSszMj4+Ml0mMTI3XShLLEQpO2lmKChhW3I+PjBdJjEpPT0wKXtjW3IrND4+Ml09MDthW3I+PjBdPTB9ZWxzZXtjW2Nbcis4Pj4yXT4+Ml09MDtjW3IrND4+Ml09MH1vZyhyKTtjW3IrMD4+Ml09Y1tLKzA+PjJdO2Nbcis0Pj4yXT1jW0srND4+Ml07Y1tyKzg+PjJdPWNbSys4Pj4yXTtjW0srMD4+Ml09MDtjW0srND4+Ml09MDtjW0srOD4+Ml09MDttY1tjWyhjW0Q+PjJdfDApKzI4Pj4yXSYxMjddKEcsRCk7aWYoKGFbeD4+MF0mMSk9PTApe2NbeCs0Pj4yXT0wO2FbeD4+MF09MH1lbHNle2NbY1t4Kzg+PjJdPj4yXT0wO2NbeCs0Pj4yXT0wfW9nKHgpO2NbeCswPj4yXT1jW0crMD4+Ml07Y1t4KzQ+PjJdPWNbRys0Pj4yXTtjW3grOD4+Ml09Y1tHKzg+PjJdO2NbRyswPj4yXT0wO2NbRys0Pj4yXT0wO2NbRys4Pj4yXT0wO2c9b2NbY1soY1tEPj4yXXwwKSsxMj4+Ml0mMTI3XShEKXwwO0c9b2NbY1soY1tEPj4yXXwwKSsxNj4+Ml0mMTI3XShEKXwwO21jW2NbKGNbRD4+Ml18MCkrMjA+PjJdJjEyN10oSCxEKTtpZigoYVt0Pj4wXSYxKT09MCl7YVt0KzE+PjBdPTA7YVt0Pj4wXT0wfWVsc2V7YVtjW3QrOD4+Ml0+PjBdPTA7Y1t0KzQ+PjJdPTB9aWcodCk7Y1t0KzA+PjJdPWNbSCswPj4yXTtjW3QrND4+Ml09Y1tIKzQ+PjJdO2NbdCs4Pj4yXT1jW0grOD4+Ml07Y1tIKzA+PjJdPTA7Y1tIKzQ+PjJdPTA7Y1tIKzg+PjJdPTA7bWNbY1soY1tEPj4yXXwwKSsyND4+Ml0mMTI3XShFLEQpO2lmKChhW3c+PjBdJjEpPT0wKXtjW3crND4+Ml09MDthW3c+PjBdPTB9ZWxzZXtjW2Nbdys4Pj4yXT4+Ml09MDtjW3crND4+Ml09MH1vZyh3KTtjW3crMD4+Ml09Y1tFKzA+PjJdO2Nbdys0Pj4yXT1jW0UrND4+Ml07Y1t3Kzg+PjJdPWNbRSs4Pj4yXTtjW0UrMD4+Ml09MDtjW0UrND4+Ml09MDtjW0UrOD4+Ml09MDtmPW9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MDticmVha30kPVhhKDQpfDA7Y1skPj4yXT0yMTMwNDt3YigkfDAsMjEzNzYsMTk2KX1lbHNle2lmKCEoKGNbMzI0NF18MCk9PS0xKSl7Y1tRPj4yXT0xMjk3NjtjW1ErND4+Ml09MjA4O2NbUSs4Pj4yXT0wO2NnKDEyOTc2LFEpfUQ9KGNbMTI5ODA+PjJdfDApKyAtMXwwO0U9Y1tnKzg+PjJdfDA7aWYoKGNbZysxMj4+Ml18MCktRT4+Mj4+PjA+RD4+PjA/KEM9Y1tFKyhEPDwyKT4+Ml18MCwoQ3wwKSE9MCk6MCl7bWNbY1soY1tDPj4yXXwwKSs0ND4+Ml0mMTI3XShOLEMpO2NbRj4+Ml09Y1tOPj4yXTttY1tjWyhjW0M+PjJdfDApKzMyPj4yXSYxMjddKE0sQyk7aWYoKGFbcj4+MF0mMSk9PTApe2Nbcis0Pj4yXT0wO2Fbcj4+MF09MH1lbHNle2NbY1tyKzg+PjJdPj4yXT0wO2Nbcis0Pj4yXT0wfW9nKHIpO2NbciswPj4yXT1jW00rMD4+Ml07Y1tyKzQ+PjJdPWNbTSs0Pj4yXTtjW3IrOD4+Ml09Y1tNKzg+PjJdO2NbTSswPj4yXT0wO2NbTSs0Pj4yXT0wO2NbTSs4Pj4yXT0wO21jW2NbKGNbQz4+Ml18MCkrMjg+PjJdJjEyN10oTCxDKTtpZigoYVt4Pj4wXSYxKT09MCl7Y1t4KzQ+PjJdPTA7YVt4Pj4wXT0wfWVsc2V7Y1tjW3grOD4+Ml0+PjJdPTA7Y1t4KzQ+PjJdPTB9b2coeCk7Y1t4KzA+PjJdPWNbTCswPj4yXTtjW3grND4+Ml09Y1tMKzQ+PjJdO2NbeCs4Pj4yXT1jW0wrOD4+Ml07Y1tMKzA+PjJdPTA7Y1tMKzQ+PjJdPTA7Y1tMKzg+PjJdPTA7Zz1vY1tjWyhjW0M+PjJdfDApKzEyPj4yXSYxMjddKEMpfDA7Rz1vY1tjWyhjW0M+PjJdfDApKzE2Pj4yXSYxMjddKEMpfDA7bWNbY1soY1tDPj4yXXwwKSsyMD4+Ml0mMTI3XShKLEMpO2lmKChhW3Q+PjBdJjEpPT0wKXthW3QrMT4+MF09MDthW3Q+PjBdPTB9ZWxzZXthW2NbdCs4Pj4yXT4+MF09MDtjW3QrND4+Ml09MH1pZyh0KTtjW3QrMD4+Ml09Y1tKKzA+PjJdO2NbdCs0Pj4yXT1jW0orND4+Ml07Y1t0Kzg+PjJdPWNbSis4Pj4yXTtjW0orMD4+Ml09MDtjW0orND4+Ml09MDtjW0orOD4+Ml09MDttY1tjWyhjW0M+PjJdfDApKzI0Pj4yXSYxMjddKEksQyk7aWYoKGFbdz4+MF0mMSk9PTApe2Nbdys0Pj4yXT0wO2Fbdz4+MF09MH1lbHNle2NbY1t3Kzg+PjJdPj4yXT0wO2Nbdys0Pj4yXT0wfW9nKHcpO2NbdyswPj4yXT1jW0krMD4+Ml07Y1t3KzQ+PjJdPWNbSSs0Pj4yXTtjW3crOD4+Ml09Y1tJKzg+PjJdO2NbSSswPj4yXT0wO2NbSSs0Pj4yXT0wO2NbSSs4Pj4yXT0wO2Y9b2NbY1soY1tDPj4yXXwwKSszNj4+Ml0mMTI3XShDKXwwO2JyZWFrfSQ9WGEoNCl8MDtjWyQ+PjJdPTIxMzA0O3diKCR8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtjW24+PjJdPWNbbT4+Ml07ST1yKzR8MDtEPXIrOHwwO0g9eCs0fDA7Qz14Kzh8MDtMPShoJjUxMnwwKSE9MDtKPXcrNHwwO2g9dys4fDA7TT1zKzR8MDtFPXMrOHwwO049RiszfDA7Sz1tKzR8MDtPPXQrNHwwO1M9UCs0MDB8MDtVPVA7VD1QO1E9MDtQPTA7Uj0yMTM7YTp3aGlsZSgxKXtWPWNbYj4+Ml18MDtkb3tpZigoVnwwKSE9MCl7Vz1jW1YrMTI+PjJdfDA7aWYoKFd8MCk9PShjW1YrMTY+PjJdfDApKXtWPW9jW2NbKGNbVj4+Ml18MCkrMzY+PjJdJjEyN10oVil8MH1lbHNle1Y9Y1tXPj4yXXwwfWlmKChWfDApPT0tMSl7Y1tiPj4yXT0wO1Y9MTticmVha31lbHNle1Y9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7Vj0xfX13aGlsZSgwKTtpZigoZXwwKSE9MCl7Vz1jW2UrMTI+PjJdfDA7aWYoKFd8MCk9PShjW2UrMTY+PjJdfDApKXtXPW9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MH1lbHNle1c9Y1tXPj4yXXwwfWlmKCEoKFd8MCk9PS0xKSl7aWYoIVYpe0I9Mzc4O2JyZWFrfX1lbHNle0I9NzV9fWVsc2V7Qj03NX1pZigoQnwwKT09NzUpe0I9MDtpZihWKXtlPTA7Qj0zNzg7YnJlYWt9ZWxzZXtlPTB9fWI6ZG97c3dpdGNoKGFbRitRPj4wXXwwKXtjYXNlIDE6e2lmKChRfDApPT0zKXtCPTM3ODticmVhayBhfUI9Y1tiPj4yXXwwO1Y9Y1tCKzEyPj4yXXwwO2lmKChWfDApPT0oY1tCKzE2Pj4yXXwwKSl7Qj1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtCPWNbVj4+Ml18MH1pZighKGhjW2NbKGNbbD4+Ml18MCkrMTI+PjJdJjYzXShsLDgxOTIsQil8MCkpe0I9OTc7YnJlYWsgYX1XPWNbYj4+Ml18MDtCPVcrMTJ8MDtWPWNbQj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSs0MD4+Ml0mMTI3XShXKXwwfWVsc2V7Y1tCPj4yXT1WKzQ7Vj1jW1Y+PjJdfDB9Vz1hW3M+PjBdfDA7Qj0oVyYxKSE9MDtpZihCKXtYPShjW3M+PjJdJi0yKSsgLTF8MDtXPWNbTT4+Ml18MH1lbHNle1g9MTtXPShXJjI1NSk+Pj4xfWlmKChXfDApPT0oWHwwKSl7cGcocyxYLDEsWCxYLDAsMCk7aWYoKGFbcz4+MF0mMSk9PTApe0I9OTR9ZWxzZXtCPTk1fX1lbHNle2lmKEIpe0I9OTV9ZWxzZXtCPTk0fX1pZigoQnwwKT09OTQpe2Fbcz4+MF09KFc8PDEpKzI7WD1NO1k9VysxfDB9ZWxzZSBpZigoQnwwKT09OTUpe1g9Y1tFPj4yXXwwO1k9VysxfDA7Y1tNPj4yXT1ZfWNbWCsoVzw8Mik+PjJdPVY7Y1tYKyhZPDwyKT4+Ml09MDtCPTk4O2JyZWFrfTtjYXNlIDI6e2lmKCEoKFB8MCkhPTB8UT4+PjA8Mikpe2lmKChRfDApPT0yKXtWPShhW04+PjBdfDApIT0wfWVsc2V7Vj0wfWlmKCEoTHxWKSl7UD0wO2JyZWFrIGJ9fVk9YVt3Pj4wXXwwO1Y9KFkmMSk9PTA/SjpjW2g+PjJdfDA7Yzpkb3tpZigoUXwwKSE9MD8oZFtGKyhRKyAtMSk+PjBdfDApPDI6MCl7d2hpbGUoMSl7aWYoKFkmMSk9PTApe1g9SjtXPShZJjI1NSk+Pj4xfWVsc2V7WD1jW2g+PjJdfDA7Vz1jW0o+PjJdfDB9aWYoKFZ8MCk9PShYKyhXPDwyKXwwKSl7YnJlYWt9aWYoIShoY1tjWyhjW2w+PjJdfDApKzEyPj4yXSY2M10obCw4MTkyLGNbVj4+Ml18MCl8MCkpe0I9MjEyO2JyZWFrfVk9YVt3Pj4wXXwwO1Y9Vis0fDB9aWYoKEJ8MCk9PTIxMil7Qj0wO1k9YVt3Pj4wXXwwfVg9KFkmMSk9PTA/SjpjW2g+PjJdfDA7Vz1WLVg+PjI7Wj1hW3M+PjBdfDA7JD0oWiYxKT09MDtpZigkKXtfPShaJjI1NSk+Pj4xfWVsc2V7Xz1jW00+PjJdfDB9aWYoIShXPj4+MD5fPj4+MCkpe2lmKCQpe189KFomMjU1KT4+PjE7JD1NO1o9XztfPU0rKF8tVzw8Mil8MH1lbHNle2FhPWNbRT4+Ml18MDtfPWNbTT4+Ml18MDskPWFhO1o9XztfPWFhKyhfLVc8PDIpfDB9Vz0kKyhaPDwyKXwwO2lmKChffDApPT0oV3wwKSl7Vz1lO1g9ZX1lbHNle1o9WDt3aGlsZSgxKXtpZigoY1tfPj4yXXwwKSE9KGNbWj4+Ml18MCkpe1c9ZTtWPVg7WD1lO2JyZWFrIGN9Xz1fKzR8MDtpZigoX3wwKT09KFd8MCkpe1c9ZTtYPWU7YnJlYWsgY31aPVorNHwwfX19ZWxzZXtXPWU7Vj1YO1g9ZX19ZWxzZXtXPWU7WD1lfX13aGlsZSgwKTt3aGlsZSgxKXtpZigoWSYxKT09MCl7Wj1KO1k9KFkmMjU1KT4+PjF9ZWxzZXtaPWNbaD4+Ml18MDtZPWNbSj4+Ml18MH1pZigoVnwwKT09KForKFk8PDIpfDApKXticmVha31ZPWNbYj4+Ml18MDtkb3tpZigoWXwwKSE9MCl7Wj1jW1krMTI+PjJdfDA7aWYoKFp8MCk9PShjW1krMTY+PjJdfDApKXtZPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1k9Y1taPj4yXXwwfWlmKChZfDApPT0tMSl7Y1tiPj4yXT0wO1k9MTticmVha31lbHNle1k9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7WT0xfX13aGlsZSgwKTtpZigoWHwwKSE9MCl7Wj1jW1grMTI+PjJdfDA7aWYoKFp8MCk9PShjW1grMTY+PjJdfDApKXtYPW9jW2NbKGNbWD4+Ml18MCkrMzY+PjJdJjEyN10oWCl8MH1lbHNle1g9Y1taPj4yXXwwfWlmKCEoKFh8MCk9PS0xKSl7aWYoWV4oV3wwKT09MCl7WT1XO1g9V31lbHNle2JyZWFrfX1lbHNle1c9MDtlPTA7Qj0yNDB9fWVsc2V7Qj0yNDB9aWYoKEJ8MCk9PTI0MCl7Qj0wO2lmKFkpe2JyZWFrfWVsc2V7WT1XO1g9MH19Wj1jW2I+PjJdfDA7Vz1jW1orMTI+PjJdfDA7aWYoKFd8MCk9PShjW1orMTY+PjJdfDApKXtXPW9jW2NbKGNbWj4+Ml18MCkrMzY+PjJdJjEyN10oWil8MH1lbHNle1c9Y1tXPj4yXXwwfWlmKChXfDApIT0oY1tWPj4yXXwwKSl7YnJlYWt9Xz1jW2I+PjJdfDA7Vz1fKzEyfDA7Wj1jW1c+PjJdfDA7aWYoKFp8MCk9PShjW18rMTY+PjJdfDApKXtvY1tjWyhjW18+PjJdfDApKzQwPj4yXSYxMjddKF8pfDB9ZWxzZXtjW1c+PjJdPVorNH1XPVk7WT1hW3c+PjBdfDA7Vj1WKzR8MH1pZihMKXtYPWFbdz4+MF18MDtpZigoWCYxKT09MCl7Vz1KO1g9KFgmMjU1KT4+PjF9ZWxzZXtXPWNbaD4+Ml18MDtYPWNbSj4+Ml18MH1pZigoVnwwKSE9KFcrKFg8PDIpfDApKXtCPTI1NTticmVhayBhfX1icmVha307Y2FzZSAwOntCPTk4O2JyZWFrfTtjYXNlIDM6e1Y9YVt4Pj4wXXwwO1g9KFYmMSk9PTA7aWYoWCl7Wj0oViYyNTUpPj4+MX1lbHNle1o9Y1tIPj4yXXwwfVc9YVtyPj4wXXwwO1k9KFcmMSk9PTA7aWYoWSl7Xz0oVyYyNTUpPj4+MX1lbHNle189Y1tJPj4yXXwwfWlmKChafDApIT0oMC1ffDApKXtpZihYKXtaPShWJjI1NSk+Pj4xfWVsc2V7Wj1jW0g+PjJdfDB9aWYoKFp8MCkhPTApe2lmKFkpe1k9KFcmMjU1KT4+PjF9ZWxzZXtZPWNbST4+Ml18MH1pZigoWXwwKSE9MCl7WD1jW2I+PjJdfDA7WT1jW1grMTI+PjJdfDA7Wj1jW1grMTY+PjJdfDA7aWYoKFl8MCk9PShafDApKXtXPW9jW2NbKGNbWD4+Ml18MCkrMzY+PjJdJjEyN10oWCl8MDtaPWNbYj4+Ml18MDtWPWFbeD4+MF18MDtYPVo7WT1jW1orMTI+PjJdfDA7Wj1jW1orMTY+PjJdfDB9ZWxzZXtXPWNbWT4+Ml18MH1fPVgrMTJ8MDtaPShZfDApPT0oWnwwKTtpZigoV3wwKT09KGNbKChWJjEpPT0wP0g6Y1tDPj4yXXwwKT4+Ml18MCkpe2lmKFope29jW2NbKGNbWD4+Ml18MCkrNDA+PjJdJjEyN10oWCl8MH1lbHNle2NbXz4+Ml09WSs0fVY9YVt4Pj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0g+PjJdfDB9UD1WPj4+MD4xP3g6UDticmVhayBifWlmKFope1Y9b2NbY1soY1tYPj4yXXwwKSszNj4+Ml0mMTI3XShYKXwwfWVsc2V7Vj1jW1k+PjJdfDB9aWYoKFZ8MCkhPShjWygoYVtyPj4wXSYxKT09MD9JOmNbRD4+Ml18MCk+PjJdfDApKXtCPTE5ODticmVhayBhfVY9Y1tiPj4yXXwwO1c9VisxMnwwO1g9Y1tXPj4yXXwwO2lmKChYfDApPT0oY1tWKzE2Pj4yXXwwKSl7b2NbY1soY1tWPj4yXXwwKSs0MD4+Ml0mMTI3XShWKXwwfWVsc2V7Y1tXPj4yXT1YKzR9YVtrPj4wXT0xO1Y9YVtyPj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0k+PjJdfDB9UD1WPj4+MD4xP3I6UDticmVhayBifX1pZihYKXtYPShWJjI1NSk+Pj4xfWVsc2V7WD1jW0g+PjJdfDB9WT1jW2I+PjJdfDA7Wj1jW1krMTI+PjJdfDA7Xz0oWnwwKT09KGNbWSsxNj4+Ml18MCk7aWYoKFh8MCk9PTApe2lmKF8pe1Y9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwO1c9YVtyPj4wXXwwfWVsc2V7Vj1jW1o+PjJdfDB9aWYoKFZ8MCkhPShjWygoVyYxKT09MD9JOmNbRD4+Ml18MCk+PjJdfDApKXticmVhayBifVg9Y1tiPj4yXXwwO1c9WCsxMnwwO1Y9Y1tXPj4yXXwwO2lmKChWfDApPT0oY1tYKzE2Pj4yXXwwKSl7b2NbY1soY1tYPj4yXXwwKSs0MD4+Ml0mMTI3XShYKXwwfWVsc2V7Y1tXPj4yXT1WKzR9YVtrPj4wXT0xO1Y9YVtyPj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0k+PjJdfDB9UD1WPj4+MD4xP3I6UDticmVhayBifWlmKF8pe1c9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwO1Y9YVt4Pj4wXXwwfWVsc2V7Vz1jW1o+PjJdfDB9aWYoKFd8MCkhPShjWygoViYxKT09MD9IOmNbQz4+Ml18MCk+PjJdfDApKXthW2s+PjBdPTE7YnJlYWsgYn1YPWNbYj4+Ml18MDtXPVgrMTJ8MDtWPWNbVz4+Ml18MDtpZigoVnwwKT09KGNbWCsxNj4+Ml18MCkpe29jW2NbKGNbWD4+Ml18MCkrNDA+PjJdJjEyN10oWCl8MH1lbHNle2NbVz4+Ml09Vis0fVY9YVt4Pj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0g+PjJdfDB9UD1WPj4+MD4xP3g6UH1icmVha307Y2FzZSA0OntWPTA7d2hpbGUoMSl7WD1jW2I+PjJdfDA7ZG97aWYoKFh8MCkhPTApe1c9Y1tYKzEyPj4yXXwwO2lmKChXfDApPT0oY1tYKzE2Pj4yXXwwKSl7Vz1vY1tjWyhjW1g+PjJdfDApKzM2Pj4yXSYxMjddKFgpfDB9ZWxzZXtXPWNbVz4+Ml18MH1pZigoV3wwKT09LTEpe2NbYj4+Ml09MDtXPTE7YnJlYWt9ZWxzZXtXPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle1c9MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe1g9Y1tlKzEyPj4yXXwwO2lmKChYfDApPT0oY1tlKzE2Pj4yXXwwKSl7WD1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtYPWNbWD4+Ml18MH1pZighKChYfDApPT0tMSkpe2lmKCFXKXticmVha319ZWxzZXtCPTI2OH19ZWxzZXtCPTI2OH1pZigoQnwwKT09MjY4KXtCPTA7aWYoVyl7ZT0wO2JyZWFrfWVsc2V7ZT0wfX1YPWNbYj4+Ml18MDtXPWNbWCsxMj4+Ml18MDtpZigoV3wwKT09KGNbWCsxNj4+Ml18MCkpe1c9b2NbY1soY1tYPj4yXXwwKSszNj4+Ml0mMTI3XShYKXwwfWVsc2V7Vz1jW1c+PjJdfDB9aWYoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsMjA0OCxXKXwwKXtYPWNbbj4+Ml18MDtpZigoWHwwKT09KG98MCkpe1k9KGNbSz4+Ml18MCkhPTIxMztaPWNbbT4+Ml18MDtvPW8tWnwwO1g9bz4+PjA8MjE0NzQ4MzY0Nz9vPDwxOi0xO289bz4+MjtpZighWSl7Wj0wfVo9d24oWixYKXwwO2lmKChafDApPT0wKXtCPTI3OTticmVhayBhfWlmKCFZKXtZPWNbbT4+Ml18MDtjW20+PjJdPVo7aWYoKFl8MCkhPTApe2xjW2NbSz4+Ml0mMjU1XShZKTtaPWNbbT4+Ml18MH19ZWxzZXtjW20+PjJdPVp9Y1tLPj4yXT0yMTQ7YWE9Wisobzw8Mil8MDtjW24+PjJdPWFhO289KGNbbT4+Ml18MCkrKFg+Pj4yPDwyKXwwO1g9YWF9Y1tuPj4yXT1YKzQ7Y1tYPj4yXT1XO1Y9VisxfDB9ZWxzZXtYPWFbdD4+MF18MDtpZigoWCYxKT09MCl7WD0oWCYyNTUpPj4+MX1lbHNle1g9Y1tPPj4yXXwwfWlmKCEoKCgoWHwwKT09MHwoVnwwKT09MCleMSkmKFd8MCk9PShHfDApKSl7YnJlYWt9aWYoKFV8MCk9PShTfDApKXtVPVUtVHwwO1M9VT4+PjA8MjE0NzQ4MzY0Nz9VPDwxOi0xO2lmKChSfDApPT0yMTMpe1Q9MH1SPXduKFQsUyl8MDtpZigoUnwwKT09MCl7Qj0yOTY7YnJlYWsgYX1UPVI7Uz1SKyhTPj4+Mjw8Mil8MDtVPVIrKFU+PjI8PDIpfDA7Uj0yMTR9Y1tVPj4yXT1WO1U9VSs0fDA7Vj0wfVc9Y1tiPj4yXXwwO1g9VysxMnwwO1k9Y1tYPj4yXXwwO2lmKChZfDApPT0oY1tXKzE2Pj4yXXwwKSl7b2NbY1soY1tXPj4yXXwwKSs0MD4+Ml0mMTI3XShXKXwwO2NvbnRpbnVlfWVsc2V7Y1tYPj4yXT1ZKzQ7Y29udGludWV9fWlmKCEoKFR8MCk9PShVfDApfChWfDApPT0wKSl7aWYoKFV8MCk9PShTfDApKXtVPVUtVHwwO1M9VT4+PjA8MjE0NzQ4MzY0Nz9VPDwxOi0xO2lmKChSfDApPT0yMTMpe1Q9MH1SPXduKFQsUyl8MDtpZigoUnwwKT09MCl7Qj0zMDg7YnJlYWsgYX1UPVI7Uz1SKyhTPj4+Mjw8Mil8MDtVPVIrKFU+PjI8PDIpfDA7Uj0yMTR9Y1tVPj4yXT1WO1U9VSs0fDB9aWYoKGZ8MCk+MCl7Vz1jW2I+PjJdfDA7ZG97aWYoKFd8MCkhPTApe1Y9Y1tXKzEyPj4yXXwwO2lmKChWfDApPT0oY1tXKzE2Pj4yXXwwKSl7Vj1vY1tjWyhjW1c+PjJdfDApKzM2Pj4yXSYxMjddKFcpfDB9ZWxzZXtWPWNbVj4+Ml18MH1pZigoVnwwKT09LTEpe2NbYj4+Ml09MDtWPTE7YnJlYWt9ZWxzZXtWPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle1Y9MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe1c9Y1tlKzEyPj4yXXwwO2lmKChXfDApPT0oY1tlKzE2Pj4yXXwwKSl7Vz1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtXPWNbVz4+Ml18MH1pZighKChXfDApPT0tMSkpe2lmKCFWKXtCPTMzMTticmVhayBhfX1lbHNle0I9MzI1fX1lbHNle0I9MzI1fWlmKChCfDApPT0zMjUpe0I9MDtpZihWKXtCPTMzMTticmVhayBhfWVsc2V7ZT0wfX1XPWNbYj4+Ml18MDtWPWNbVysxMj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoKFZ8MCkhPShnfDApKXtCPTMzMTticmVhayBhfVY9Y1tiPj4yXXwwO1c9VisxMnwwO1g9Y1tXPj4yXXwwO2lmKChYfDApPT0oY1tWKzE2Pj4yXXwwKSl7b2NbY1soY1tWPj4yXXwwKSs0MD4+Ml0mMTI3XShWKXwwO1g9ZTtXPWV9ZWxzZXtjW1c+PjJdPVgrNDtYPWU7Vz1lfXdoaWxlKDEpe1k9Y1tiPj4yXXwwO2Rve2lmKChZfDApIT0wKXtWPWNbWSsxMj4+Ml18MDtpZigoVnwwKT09KGNbWSsxNj4+Ml18MCkpe1Y9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoKFZ8MCk9PS0xKXtjW2I+PjJdPTA7WT0xO2JyZWFrfWVsc2V7WT0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtZPTF9fXdoaWxlKDApO2lmKChXfDApIT0wKXtWPWNbVysxMj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoISgoVnwwKT09LTEpKXtpZihZXihYfDApPT0wKXtWPVg7Vz1YfWVsc2V7Qj0zNTQ7YnJlYWsgYX19ZWxzZXtWPTA7ZT0wO0I9MzQ3fX1lbHNle1Y9WDtCPTM0N31pZigoQnwwKT09MzQ3KXtCPTA7aWYoWSl7Qj0zNTQ7YnJlYWsgYX1lbHNle1c9MH19WT1jW2I+PjJdfDA7WD1jW1krMTI+PjJdfDA7aWYoKFh8MCk9PShjW1krMTY+PjJdfDApKXtYPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1g9Y1tYPj4yXXwwfWlmKCEoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsMjA0OCxYKXwwKSl7Qj0zNTQ7YnJlYWsgYX1YPWNbbj4+Ml18MDtpZigoWHwwKT09KG98MCkpe1k9KGNbSz4+Ml18MCkhPTIxMztaPWNbbT4+Ml18MDtYPW8tWnwwO289WD4+PjA8MjE0NzQ4MzY0Nz9YPDwxOi0xO1g9WD4+MjtpZighWSl7Wj0wfVo9d24oWixvKXwwO2lmKChafDApPT0wKXtCPTM1OTticmVhayBhfWRve2lmKFkpe2NbbT4+Ml09Wn1lbHNle1k9Y1ttPj4yXXwwO2NbbT4+Ml09WjtpZigoWXwwKT09MCl7YnJlYWt9bGNbY1tLPj4yXSYyNTVdKFkpO1o9Y1ttPj4yXXwwfX13aGlsZSgwKTtjW0s+PjJdPTIxNDtYPVorKFg8PDIpfDA7Y1tuPj4yXT1YO289KGNbbT4+Ml18MCkrKG8+Pj4yPDwyKXwwfVk9Y1tiPj4yXXwwO1o9Y1tZKzEyPj4yXXwwO2lmKChafDApPT0oY1tZKzE2Pj4yXXwwKSl7WT1vY1tjWyhjW1k+PjJdfDApKzM2Pj4yXSYxMjddKFkpfDA7WD1jW24+PjJdfDB9ZWxzZXtZPWNbWj4+Ml18MH1jW24+PjJdPVgrNDtjW1g+PjJdPVk7Zj1mKyAtMXwwO1g9Y1tiPj4yXXwwO1k9WCsxMnwwO1o9Y1tZPj4yXXwwO2lmKChafDApPT0oY1tYKzE2Pj4yXXwwKSl7b2NbY1soY1tYPj4yXXwwKSs0MD4+Ml0mMTI3XShYKXwwfWVsc2V7Y1tZPj4yXT1aKzR9aWYoKGZ8MCk+MCl7WD1WfWVsc2V7YnJlYWt9fX1pZigoY1tuPj4yXXwwKT09KGNbbT4+Ml18MCkpe0I9Mzc2O2JyZWFrIGF9YnJlYWt9O2RlZmF1bHQ6e319fXdoaWxlKDApO2Q6ZG97aWYoKEJ8MCk9PTk4KXtCPTA7aWYoKFF8MCk9PTMpe0I9Mzc4O2JyZWFrIGF9ZWxzZXtYPWU7Vj1lfXdoaWxlKDEpe1c9Y1tiPj4yXXwwO2Rve2lmKChXfDApIT0wKXtZPWNbVysxMj4+Ml18MDtpZigoWXwwKT09KGNbVysxNj4+Ml18MCkpe1c9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vz1jW1k+PjJdfDB9aWYoKFd8MCk9PS0xKXtjW2I+PjJdPTA7WT0xO2JyZWFrfWVsc2V7WT0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtZPTF9fXdoaWxlKDApO2lmKChWfDApIT0wKXtXPWNbVisxMj4+Ml18MDtpZigoV3wwKT09KGNbVisxNj4+Ml18MCkpe1Y9b2NbY1soY1tWPj4yXXwwKSszNj4+Ml0mMTI3XShWKXwwfWVsc2V7Vj1jW1c+PjJdfDB9aWYoISgoVnwwKT09LTEpKXtpZihZXihYfDApPT0wKXtXPVg7Vj1YfWVsc2V7YnJlYWsgZH19ZWxzZXtXPTA7ZT0wO0I9MTExfX1lbHNle1c9WDtCPTExMX1pZigoQnwwKT09MTExKXtCPTA7aWYoWSl7YnJlYWsgZH1lbHNle1Y9MH19WT1jW2I+PjJdfDA7WD1jW1krMTI+PjJdfDA7aWYoKFh8MCk9PShjW1krMTY+PjJdfDApKXtYPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1g9Y1tYPj4yXXwwfWlmKCEoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsODE5MixYKXwwKSl7YnJlYWsgZH1CPWNbYj4+Ml18MDtYPUIrMTJ8MDtZPWNbWD4+Ml18MDtpZigoWXwwKT09KGNbQisxNj4+Ml18MCkpe1g9b2NbY1soY1tCPj4yXXwwKSs0MD4+Ml0mMTI3XShCKXwwfWVsc2V7Y1tYPj4yXT1ZKzQ7WD1jW1k+PjJdfDB9WT1hW3M+PjBdfDA7Wj0oWSYxKSE9MDtpZihaKXtCPShjW3M+PjJdJi0yKSsgLTF8MDtZPWNbTT4+Ml18MH1lbHNle0I9MTtZPShZJjI1NSk+Pj4xfWlmKChZfDApPT0oQnwwKSl7cGcocyxCLDEsQixCLDAsMCk7aWYoKGFbcz4+MF0mMSk9PTApe0I9MTI4fWVsc2V7Qj0xMjl9fWVsc2V7aWYoWil7Qj0xMjl9ZWxzZXtCPTEyOH19aWYoKEJ8MCk9PTEyOCl7Qj0wO2Fbcz4+MF09KFk8PDEpKzI7Wj1NO189WSsxfDB9ZWxzZSBpZigoQnwwKT09MTI5KXtCPTA7Wj1jW0U+PjJdfDA7Xz1ZKzF8MDtjW00+PjJdPV99Y1taKyhZPDwyKT4+Ml09WDtjW1orKF88PDIpPj4yXT0wO1g9V319fXdoaWxlKDApO1E9USsxfDA7aWYoIShRPj4+MDw0KSl7Qj0zNzg7YnJlYWt9fWU6c3dpdGNoKEJ8MCl7Y2FzZSA5Nzp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDE5ODp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDI1NTp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDI3OTp7YWE9WGEoNCl8MDtjW2FhPj4yXT0yMjY4MDt3YihhYXwwLDIyNzI4LDIwNil9O2Nhc2UgMjk2OnthYT1YYSg0KXwwO2NbYWE+PjJdPTIyNjgwO3diKGFhfDAsMjI3MjgsMjA2KX07Y2FzZSAzMDg6e2FhPVhhKDQpfDA7Y1thYT4+Ml09MjI2ODA7d2IoYWF8MCwyMjcyOCwyMDYpfTtjYXNlIDMzMTp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDM1NDp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDM1OTp7YWE9WGEoNCl8MDtjW2FhPj4yXT0yMjY4MDt3YihhYXwwLDIyNzI4LDIwNil9O2Nhc2UgMzc2OntjW2o+PjJdPWNbaj4+Ml18NDtiPTA7YnJlYWt9O2Nhc2UgMzc4OntmOmRve2lmKChQfDApIT0wKXtsPVArNHwwO0Y9UCs4fDA7az0xO3doaWxlKDEpe209YVtQPj4wXXwwO2lmKChtJjEpPT0wKXttPShtJjI1NSk+Pj4xfWVsc2V7bT1jW2w+PjJdfDB9aWYoIShrPj4+MDxtPj4+MCkpe2JyZWFrIGZ9bj1jW2I+PjJdfDA7ZG97aWYoKG58MCkhPTApe209Y1tuKzEyPj4yXXwwO2lmKChtfDApPT0oY1tuKzE2Pj4yXXwwKSl7bT1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXttPWNbbT4+Ml18MH1pZigobXwwKT09LTEpe2NbYj4+Ml09MDttPTE7YnJlYWt9ZWxzZXttPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle209MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe249Y1tlKzEyPj4yXXwwO2lmKChufDApPT0oY1tlKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZighKChufDApPT0tMSkpe2lmKCFtKXticmVha319ZWxzZXtCPTM5Nn19ZWxzZXtCPTM5Nn1pZigoQnwwKT09Mzk2KXtCPTA7aWYobSl7YnJlYWt9ZWxzZXtlPTB9fW09Y1tiPj4yXXwwO249Y1ttKzEyPj4yXXwwO2lmKChufDApPT0oY1ttKzE2Pj4yXXwwKSl7bT1vY1tjWyhjW20+PjJdfDApKzM2Pj4yXSYxMjddKG0pfDB9ZWxzZXttPWNbbj4+Ml18MH1pZigoYVtQPj4wXSYxKT09MCl7bj1sfWVsc2V7bj1jW0Y+PjJdfDB9aWYoKG18MCkhPShjW24rKGs8PDIpPj4yXXwwKSl7YnJlYWt9az1rKzF8MDtnPWNbYj4+Ml18MDtuPWcrMTJ8MDttPWNbbj4+Ml18MDtpZigobXwwKT09KGNbZysxNj4+Ml18MCkpe29jW2NbKGNbZz4+Ml18MCkrNDA+PjJdJjEyN10oZyl8MDtjb250aW51ZX1lbHNle2Nbbj4+Ml09bSs0O2NvbnRpbnVlfX1jW2o+PjJdPWNbaj4+Ml18NDtiPTA7YnJlYWsgZX19d2hpbGUoMCk7aWYoKFR8MCkhPShVfDApKXtjW0E+PjJdPTA7cWsodCxULFUsQSk7aWYoKGNbQT4+Ml18MCk9PTApe2I9MX1lbHNle2Nbaj4+Ml09Y1tqPj4yXXw0O2I9MH19ZWxzZXtiPTE7VD1VfWJyZWFrfX1pZighKChhW3M+PjBdJjEpPT0wKT8oej1jW0U+PjJdfDAsKHp8MCkhPTApOjApe3ZuKHopfWlmKCEoKGFbcj4+MF0mMSk9PTApPyh5PWNbRD4+Ml18MCwoeXwwKSE9MCk6MCl7dm4oeSl9aWYoISgoYVt4Pj4wXSYxKT09MCk/KHU9Y1tDPj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhW3c+PjBdJjEpPT0wKT8ocT1jW2g+PjJdfDAsKHF8MCkhPTApOjApe3ZuKHEpfWlmKCEoKGFbdD4+MF0mMSk9PTApPyhwPWNbdCs4Pj4yXXwwLChwfDApIT0wKTowKXt2bihwKX1pZigoVHwwKT09MCl7aT12O3JldHVybiBifDB9bGNbUiYyNTVdKFQpO2k9djtyZXR1cm4gYnwwfWZ1bmN0aW9uIHZrKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7bT1pO2k9aSs0MzJ8MDtwPW07cz1tKzI0fDA7ZD1tKzE2fDA7cT1tKzEyfDA7dD1tKzQyNHwwO2NbZD4+Ml09cztsPWQrNHwwO2NbbD4+Ml09MjEzO3M9cys0MDB8MDtuPWNbaCsyOD4+Ml18MDt2PW4rNHwwO2Nbdj4+Ml09KGNbdj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbcD4+Ml09MTM0NDg7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ0OCxwKX1wPShjWzEzNDUyPj4yXXwwKSsgLTF8MDt1PWNbbis4Pj4yXXwwO2lmKChjW24rMTI+PjJdfDApLXU+PjI+Pj4wPnA+Pj4wPyhyPWNbdSsocDw8Mik+PjJdfDAsKHJ8MCkhPTApOjApe2FbdD4+MF09MDtwPWNbZj4+Ml18MDtkb3tpZih1ayhlLHAsZyxuLGNbaCs0Pj4yXXwwLGosdCxyLGQscSxzKXwwKXtpZigoYVtrPj4wXSYxKT09MCl7Y1trKzQ+PjJdPTA7YVtrPj4wXT0wfWVsc2V7Y1tjW2srOD4+Ml0+PjJdPTA7Y1trKzQ+PjJdPTB9aWYoKGFbdD4+MF18MCkhPTApe2c9eGNbY1soY1tyPj4yXXwwKSs0ND4+Ml0mNjNdKHIsNDUpfDA7aD1hW2s+PjBdfDA7bz0oaCYxKSE9MDtpZihvKXtzPShjW2s+PjJdJi0yKSsgLTF8MDtoPWNbays0Pj4yXXwwfWVsc2V7cz0xO2g9KGgmMjU1KT4+PjF9aWYoKGh8MCk9PShzfDApKXtwZyhrLHMsMSxzLHMsMCwwKTtpZigoYVtrPj4wXSYxKT09MCl7bz0yMX1lbHNle289MjJ9fWVsc2V7aWYobyl7bz0yMn1lbHNle289MjF9fWlmKChvfDApPT0yMSl7YVtrPj4wXT0oaDw8MSkrMjt0PWsrNHwwO3M9aCsxfDB9ZWxzZSBpZigob3wwKT09MjIpe3Q9Y1trKzg+PjJdfDA7cz1oKzF8MDtjW2srND4+Ml09c31jW3QrKGg8PDIpPj4yXT1nO2NbdCsoczw8Mik+PjJdPTB9cj14Y1tjWyhjW3I+PjJdfDApKzQ0Pj4yXSY2M10ociw0OCl8MDtzPWNbZD4+Ml18MDtxPWNbcT4+Ml18MDtoPXErIC00fDA7YTpkb3tpZihzPj4+MDxoPj4+MCl7d2hpbGUoMSl7Zz1zKzR8MDtpZigoY1tzPj4yXXwwKSE9KHJ8MCkpe2JyZWFrIGF9aWYoZz4+PjA8aD4+PjApe3M9Z31lbHNle3M9ZzticmVha319fX13aGlsZSgwKTt0PXM7cj1hW2s+PjBdfDA7aWYoKHImMSk9PTApe3Y9cjt1PTE7Zz0ociYyNTUpPj4+MX1lbHNle3U9Y1trPj4yXXwwO3Y9dSYyNTU7dT0odSYtMikrIC0xfDA7Zz1jW2srND4+Ml18MH1yPXEtdD4+MjtpZigocnwwKSE9MCl7aWYoKHUtZ3wwKT4+PjA8cj4+PjApe3BnKGssdSxnK3ItdXwwLGcsZywwLDApO3Y9YVtrPj4wXXwwfWlmKCh2JjEpPT0wKXt1PWsrNHwwfWVsc2V7dT1jW2srOD4+Ml18MH12PXUrKGc8PDIpfDA7aWYoKHN8MCkhPShxfDApKXtoPWcrKChoKygwLXQpfDApPj4+MikrMXwwO3doaWxlKDEpe2Nbdj4+Ml09Y1tzPj4yXTtzPXMrNHwwO2lmKChzfDApPT0ocXwwKSl7YnJlYWt9dj12KzR8MH12PXUrKGg8PDIpfDB9Y1t2Pj4yXT0wO3E9ZytyfDA7aWYoKGFbaz4+MF0mMSk9PTApe2Fbaz4+MF09cTw8MTticmVha31lbHNle2Nbays0Pj4yXT1xO2JyZWFrfX19fXdoaWxlKDApO2s9Y1tlPj4yXXwwO2lmKChrfDApIT0wKXtxPWNbaysxMj4+Ml18MDtpZigocXwwKT09KGNbaysxNj4+Ml18MCkpe3E9b2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwfWVsc2V7cT1jW3E+PjJdfDB9aWYoKHF8MCk9PS0xKXtjW2U+PjJdPTA7az0wO2U9MX1lbHNle2U9MH19ZWxzZXtrPTA7ZT0xfWRve2lmKChwfDApIT0wKXtxPWNbcCsxMj4+Ml18MDtpZigocXwwKT09KGNbcCsxNj4+Ml18MCkpe3A9b2NbY1soY1twPj4yXXwwKSszNj4+Ml0mMTI3XShwKXwwfWVsc2V7cD1jW3E+PjJdfDB9aWYoISgocHwwKT09LTEpKXtpZihlKXticmVha31lbHNle289NjA7YnJlYWt9fWVsc2V7Y1tmPj4yXT0wO289NTg7YnJlYWt9fWVsc2V7bz01OH19d2hpbGUoMCk7aWYoKG98MCk9PTU4P2U6MCl7bz02MH1pZigob3wwKT09NjApe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09azt1PW4rNHwwO3Y9Y1t1Pj4yXXwwO2NbdT4+Ml09disgLTE7aWYoKHZ8MCk9PTApe2xjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKX1qPWNbZD4+Ml18MDtjW2Q+PjJdPTA7aWYoKGp8MCk9PTApe2k9bTtyZXR1cm59bGNbY1tsPj4yXSYyNTVdKGopO2k9bTtyZXR1cm59dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gd2soYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGsoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHlrKGIsZCxlLGYsZyxqLGwpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2w9K2w7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtxPWk7aT1pKzM2OHwwO0E9cTtDPXErMTU2fDA7RT1xKzEzMnwwO0I9cSsyNTZ8MDt0PXErMTQ4fDA7cz1xKzM1NnwwO3I9cSszNTd8MDt4PXErMTM2fDA7ZD1xKzEwNHwwO3c9cSsxMTZ8MDtGPXErMTAwfDA7dj1xKzEyOHwwO3U9cSsxNTJ8MDtjW0U+PjJdPUM7aFtrPj4zXT1sO2NbQT4+Ml09Y1trPj4yXTtjW0ErND4+Ml09Y1trKzQ+PjJdO0M9bGIoQ3wwLDEwMCwxMzIyNCxBfDApfDA7aWYoQz4+PjA+OTkpe2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1DPWNbMzM0MF18MDtoW2s+PjNdPWw7Y1tBPj4yXT1jW2s+PjJdO2NbQSs0Pj4yXT1jW2srND4+Ml07Qz1DaShFLEMsMTMyMjQsQSl8MDt6PWNbRT4+Ml18MDtpZigoenwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9Qj11bihDKXwwO2lmKChCfDApPT0wKXtIPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1lbHNle3k9Qn19ZWxzZXt5PTA7ej0wfUQ9Y1tnKzI4Pj4yXXwwO0g9RCs0fDA7Y1tIPj4yXT0oY1tIPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tBPj4yXT0xMzQ1NjtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEzNDU2LEEpfUc9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0g9Y1tEKzg+PjJdfDA7aWYoKGNbRCsxMj4+Ml18MCktSD4+Mj4+PjA+Rz4+PjA/KHA9Y1tIKyhHPDwyKT4+Ml18MCwocHwwKSE9MCk6MCl7SD1jW0U+PjJdfDA7dWNbY1soY1twPj4yXXwwKSszMj4+Ml0mMzFdKHAsSCxIK0N8MCxCKXwwO2lmKChDfDApPT0wKXtFPTB9ZWxzZXtFPShhW2NbRT4+Ml0+PjBdfDApPT00NX1jW3Q+PjJdPTA7Y1t4KzA+PjJdPTA7Y1t4KzQ+PjJdPTA7Y1t4Kzg+PjJdPTA7Y1tkKzA+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tkKzg+PjJdPTA7Y1t3KzA+PjJdPTA7Y1t3KzQ+PjJdPTA7Y1t3Kzg+PjJdPTA7emsoZixFLEQsdCxzLHIseCxkLHcsRik7Zj1jW0Y+PjJdfDA7aWYoKEN8MCk+KGZ8MCkpe0Y9YVt3Pj4wXXwwO2lmKChGJjEpPT0wKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW3crND4+Ml18MH1HPWFbZD4+MF18MDtpZigoRyYxKT09MCl7Rz0oRyYyNTUpPj4+MX1lbHNle0c9Y1tkKzQ+PjJdfDB9Rj1GKyhDLWY8PDF8MSkrR3wwfWVsc2V7Rj1hW3c+PjBdfDA7aWYoKEYmMSk9PTApe0Y9KEYmMjU1KT4+PjF9ZWxzZXtGPWNbdys0Pj4yXXwwfUc9YVtkPj4wXXwwO2lmKChHJjEpPT0wKXtHPShHJjI1NSk+Pj4xfWVsc2V7Rz1jW2QrND4+Ml18MH1GPUYrMitHfDB9Rj1GK2Z8MDtpZihGPj4+MD4xMDApe0E9dW4oRil8MDtpZigoQXwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9ZWxzZXtGPUF9fWVsc2V7Rj0wfUFrKEEsdix1LGNbZys0Pj4yXXwwLEIsQitDfDAscCxFLHQsYVtzPj4wXXwwLGFbcj4+MF18MCx4LGQsdyxmKTtXYyhiLGNbZT4+Ml18MCxBLGNbdj4+Ml18MCxjW3U+PjJdfDAsZyxqKTtpZigoRnwwKSE9MCl7dm4oRil9aWYoISgoYVt3Pj4wXSYxKT09MCk/KG49Y1t3Kzg+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbZD4+MF0mMSk9PTApPyhvPWNbZCs4Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhW3g+PjBdJjEpPT0wKT8obT1jW3grOD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9Rz1EKzR8MDtIPWNbRz4+Ml18MDtjW0c+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0Q+PjJdfDApKzg+PjJdJjI1NV0oRCl9aWYoKHl8MCkhPTApe3ZuKHkpfWlmKCh6fDApPT0wKXtpPXE7cmV0dXJufXZuKHopO2k9cTtyZXR1cm59SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gemsoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7bj1pO2k9aSsxMjh8MDtBPW47eD1uKzEyfDA7bz1uKzQwfDA7dj1uKzUyfDA7dz1uKzU2fDA7dT1uKzE2fDA7ej1uKzI4fDA7cj1uKzY4fDA7cT1uKzcyfDA7dD1uKzg0fDA7cz1uKzg4fDA7cD1uKzEwMHwwO3k9bisxMTJ8MDtpZihiKXtpZighKChjWzMyMjhdfDApPT0tMSkpe2NbQT4+Ml09MTI5MTI7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMjkxMixBKX1xPShjWzEyOTE2Pj4yXXwwKSsgLTF8MDtwPWNbZSs4Pj4yXXwwO2lmKCEoKGNbZSsxMj4+Ml18MCktcD4+Mj4+PjA+cT4+PjApKXtiPVhhKDQpfDA7Y1tiPj4yXT0yMTMwNDt3YihifDAsMjEzNzYsMTk2KX1wPWNbcCsocTw8Mik+PjJdfDA7aWYoKHB8MCk9PTApe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfXE9Y1twPj4yXXwwO2lmKGQpe21jW2NbcSs0ND4+Ml0mMTI3XSh4LHApO2I9Y1t4Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbcD4+Ml18MCkrMzI+PjJdJjEyN10obyxwKTtpZigoYVtsPj4wXSYxKT09MCl7YVtsKzE+PjBdPTA7YVtsPj4wXT0wfWVsc2V7YVtjW2wrOD4+Ml0+PjBdPTA7Y1tsKzQ+PjJdPTB9aWcobCk7Y1tsKzA+PjJdPWNbbyswPj4yXTtjW2wrND4+Ml09Y1tvKzQ+PjJdO2NbbCs4Pj4yXT1jW28rOD4+Ml07Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTB9ZWxzZXttY1tjW3ErNDA+PjJdJjEyN10odixwKTtiPWNbdj4+Ml18MDthW2Y+PjBdPWI7YVtmKzE+PjBdPWI+Pjg7YVtmKzI+PjBdPWI+PjE2O2FbZiszPj4wXT1iPj4yNDttY1tjWyhjW3A+PjJdfDApKzI4Pj4yXSYxMjddKHcscCk7aWYoKGFbbD4+MF0mMSk9PTApe2FbbCsxPj4wXT0wO2FbbD4+MF09MH1lbHNle2FbY1tsKzg+PjJdPj4wXT0wO2NbbCs0Pj4yXT0wfWlnKGwpO2NbbCswPj4yXT1jW3crMD4+Ml07Y1tsKzQ+PjJdPWNbdys0Pj4yXTtjW2wrOD4+Ml09Y1t3Kzg+PjJdO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wfWFbZz4+MF09b2NbY1soY1twPj4yXXwwKSsxMj4+Ml0mMTI3XShwKXwwO2FbaD4+MF09b2NbY1soY1twPj4yXXwwKSsxNj4+Ml0mMTI3XShwKXwwO21jW2NbKGNbcD4+Ml18MCkrMjA+PjJdJjEyN10odSxwKTtpZigoYVtqPj4wXSYxKT09MCl7YVtqKzE+PjBdPTA7YVtqPj4wXT0wfWVsc2V7YVtjW2orOD4+Ml0+PjBdPTA7Y1tqKzQ+PjJdPTB9aWcoaik7Y1tqKzA+PjJdPWNbdSswPj4yXTtjW2orND4+Ml09Y1t1KzQ+PjJdO2Nbais4Pj4yXT1jW3UrOD4+Ml07Y1t1KzA+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7bWNbY1soY1twPj4yXXwwKSsyND4+Ml0mMTI3XSh6LHApO2lmKChhW2s+PjBdJjEpPT0wKXthW2srMT4+MF09MDthW2s+PjBdPTB9ZWxzZXthW2Nbays4Pj4yXT4+MF09MDtjW2srND4+Ml09MH1pZyhrKTtjW2srMD4+Ml09Y1t6KzA+PjJdO2Nbays0Pj4yXT1jW3orND4+Ml07Y1trKzg+PjJdPWNbeis4Pj4yXTtjW3orMD4+Ml09MDtjW3orND4+Ml09MDtjW3orOD4+Ml09MDtiPW9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MDtjW20+PjJdPWI7aT1uO3JldHVybn1lbHNle2lmKCEoKGNbMzIxMl18MCk9PS0xKSl7Y1tBPj4yXT0xMjg0ODtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEyODQ4LEEpfXU9KGNbMTI4NTI+PjJdfDApKyAtMXwwO289Y1tlKzg+PjJdfDA7aWYoISgoY1tlKzEyPj4yXXwwKS1vPj4yPj4+MD51Pj4+MCkpe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfW89Y1tvKyh1PDwyKT4+Ml18MDtpZigob3wwKT09MCl7Yj1YYSg0KXwwO2NbYj4+Ml09MjEzMDQ7d2IoYnwwLDIxMzc2LDE5Nil9ZT1jW28+PjJdfDA7aWYoZCl7bWNbY1tlKzQ0Pj4yXSYxMjddKHIsbyk7Yj1jW3I+PjJdfDA7YVtmPj4wXT1iO2FbZisxPj4wXT1iPj44O2FbZisyPj4wXT1iPj4xNjthW2YrMz4+MF09Yj4+MjQ7bWNbY1soY1tvPj4yXXwwKSszMj4+Ml0mMTI3XShxLG8pO2lmKChhW2w+PjBdJjEpPT0wKXthW2wrMT4+MF09MDthW2w+PjBdPTB9ZWxzZXthW2NbbCs4Pj4yXT4+MF09MDtjW2wrND4+Ml09MH1pZyhsKTtjW2wrMD4+Ml09Y1txKzA+PjJdO2NbbCs0Pj4yXT1jW3ErND4+Ml07Y1tsKzg+PjJdPWNbcSs4Pj4yXTtjW3ErMD4+Ml09MDtjW3ErND4+Ml09MDtjW3ErOD4+Ml09MH1lbHNle21jW2NbZSs0MD4+Ml0mMTI3XSh0LG8pO2I9Y1t0Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbbz4+Ml18MCkrMjg+PjJdJjEyN10ocyxvKTtpZigoYVtsPj4wXSYxKT09MCl7YVtsKzE+PjBdPTA7YVtsPj4wXT0wfWVsc2V7YVtjW2wrOD4+Ml0+PjBdPTA7Y1tsKzQ+PjJdPTB9aWcobCk7Y1tsKzA+PjJdPWNbcyswPj4yXTtjW2wrND4+Ml09Y1tzKzQ+PjJdO2NbbCs4Pj4yXT1jW3MrOD4+Ml07Y1tzKzA+PjJdPTA7Y1tzKzQ+PjJdPTA7Y1tzKzg+PjJdPTB9YVtnPj4wXT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7YVtoPj4wXT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7bWNbY1soY1tvPj4yXXwwKSsyMD4+Ml0mMTI3XShwLG8pO2lmKChhW2o+PjBdJjEpPT0wKXthW2orMT4+MF09MDthW2o+PjBdPTB9ZWxzZXthW2Nbais4Pj4yXT4+MF09MDtjW2orND4+Ml09MH1pZyhqKTtjW2orMD4+Ml09Y1twKzA+PjJdO2Nbais0Pj4yXT1jW3ArND4+Ml07Y1tqKzg+PjJdPWNbcCs4Pj4yXTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDttY1tjWyhjW28+PjJdfDApKzI0Pj4yXSYxMjddKHksbyk7aWYoKGFbaz4+MF0mMSk9PTApe2FbaysxPj4wXT0wO2Fbaz4+MF09MH1lbHNle2FbY1trKzg+PjJdPj4wXT0wO2Nbays0Pj4yXT0wfWlnKGspO2NbayswPj4yXT1jW3krMD4+Ml07Y1trKzQ+PjJdPWNbeSs0Pj4yXTtjW2srOD4+Ml09Y1t5Kzg+PjJdO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2I9b2NbY1soY1tvPj4yXXwwKSszNj4+Ml0mMTI3XShvKXwwO2NbbT4+Ml09YjtpPW47cmV0dXJufX1mdW5jdGlvbiBBayhkLGUsZixnLGgsaixrLGwsbSxuLG8scCxxLHIscyl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7cT1xfDA7cj1yfDA7cz1zfDA7dmFyIHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MDt0PWk7Y1tmPj4yXT1kO3Y9cisxfDA7dz1yKzh8MDt1PXIrNHwwO3g9KGcmNTEyfDApPT0wO0Q9cSsxfDA7SD1xKzh8MDtJPXErNHwwO0E9KHN8MCk+MDtCPXArMXwwO0U9cCs4fDA7eT1wKzR8MDtDPWsrOHwwO3o9MC1zfDA7Sj0wO2Rve3N3aXRjaChhW20rSj4+MF18MCl7Y2FzZSAwOntjW2U+PjJdPWNbZj4+Ml07YnJlYWt9O2Nhc2UgNDp7Sz1jW2Y+PjJdfDA7aD1sP2grMXwwOmg7YTpkb3tpZihoPj4+MDxqPj4+MCl7TD1oO3doaWxlKDEpe049YVtMPj4wXXwwO2lmKCEoTjw8MjQ+PjI0Pi0xKSl7YnJlYWsgYX1NPUwrMXwwO2lmKChiWyhjW0M+PjJdfDApKyhOPDwyND4+MjQ8PDEpPj4xXSYyMDQ4KT09MCl7YnJlYWsgYX1pZihNPj4+MDxqPj4+MCl7TD1NfWVsc2V7TD1NO2JyZWFrfX19ZWxzZXtMPWh9fXdoaWxlKDApO009TDtpZihBKXtpZihMPj4+MD5oPj4+MCl7Tj1oKygwLU0pfDA7Tj1OPj4+MDx6Pj4+MD96Ok47TT1OK3N8MDtRPUs7UD1MO089czt3aGlsZSgxKXtQPVArIC0xfDA7Uj1hW1A+PjBdfDA7Y1tmPj4yXT1RKzE7YVtRPj4wXT1SO089TysgLTF8MDtRPShPfDApPjA7aWYoIShQPj4+MD5oPj4+MCZRKSl7YnJlYWt9UT1jW2Y+PjJdfDB9TD1MK058MDtpZihRKXtHPTMyfWVsc2V7Tj0wfX1lbHNle009cztHPTMyfWlmKChHfDApPT0zMil7Rz0wO049eGNbY1soY1trPj4yXXwwKSsyOD4+Ml0mNjNdKGssNDgpfDB9Tz1jW2Y+PjJdfDA7Y1tmPj4yXT1PKzE7aWYoKE18MCk+MCl7ZG97YVtPPj4wXT1OO009TSsgLTF8MDtPPWNbZj4+Ml18MDtjW2Y+PjJdPU8rMX13aGlsZSgoTXwwKT4wKX1hW08+PjBdPW59aWYoKEx8MCk9PShofDApKXtRPXhjW2NbKGNbaz4+Ml18MCkrMjg+PjJdJjYzXShrLDQ4KXwwO1I9Y1tmPj4yXXwwO2NbZj4+Ml09UisxO2FbUj4+MF09UX1lbHNle049YVtwPj4wXXwwO009KE4mMSk9PTA7aWYoTSl7Tj0oTiYyNTUpPj4+MX1lbHNle049Y1t5Pj4yXXwwfWlmKChOfDApPT0wKXtNPS0xO049MDtPPTB9ZWxzZXtpZihNKXtNPUJ9ZWxzZXtNPWNbRT4+Ml18MH1NPWFbTT4+MF18MDtOPTA7Tz0wfXdoaWxlKDEpe2lmKChPfDApPT0oTXwwKSl7UD1jW2Y+PjJdfDA7Y1tmPj4yXT1QKzE7YVtQPj4wXT1vO049TisxfDA7UD1hW3A+PjBdfDA7Tz0oUCYxKT09MDtpZihPKXtQPShQJjI1NSk+Pj4xfWVsc2V7UD1jW3k+PjJdfDB9aWYoTj4+PjA8UD4+PjApe2lmKE8pe009Qn1lbHNle009Y1tFPj4yXXwwfWlmKChhW00rTj4+MF18MCk9PTEyNyl7TT0tMTtPPTB9ZWxzZXtpZihPKXtNPUJ9ZWxzZXtNPWNbRT4+Ml18MH1NPWFbTStOPj4wXXwwO089MH19ZWxzZXtPPTB9fUw9TCsgLTF8MDtRPWFbTD4+MF18MDtSPWNbZj4+Ml18MDtjW2Y+PjJdPVIrMTthW1I+PjBdPVE7aWYoKEx8MCk9PShofDApKXticmVha31lbHNle089TysxfDB9fX1MPWNbZj4+Ml18MDtpZigoS3wwKSE9KEx8MCk/KEY9TCsgLTF8MCxGPj4+MD5LPj4+MCk6MCl7TD1GO2Rve1I9YVtLPj4wXXwwO2FbSz4+MF09YVtMPj4wXXwwO2FbTD4+MF09UjtLPUsrMXwwO0w9TCsgLTF8MH13aGlsZShLPj4+MDxMPj4+MCl9YnJlYWt9O2Nhc2UgMjp7TD1hW3E+PjBdfDA7TT0oTCYxKT09MDtpZihNKXtLPShMJjI1NSk+Pj4xfWVsc2V7Sz1jW0k+PjJdfDB9aWYoISgoS3wwKT09MHx4KSl7aWYoTSl7Sz1EO0w9KEwmMjU1KT4+PjF9ZWxzZXtLPWNbSD4+Ml18MDtMPWNbST4+Ml18MH1MPUsrTHwwO009Y1tmPj4yXXwwO2lmKChLfDApIT0oTHwwKSl7ZG97YVtNPj4wXT1hW0s+PjBdfDA7Sz1LKzF8MDtNPU0rMXwwfXdoaWxlKChLfDApIT0oTHwwKSl9Y1tmPj4yXT1NfWJyZWFrfTtjYXNlIDM6e0w9YVtyPj4wXXwwO0s9KEwmMSk9PTA7aWYoSyl7TD0oTCYyNTUpPj4+MX1lbHNle0w9Y1t1Pj4yXXwwfWlmKChMfDApIT0wKXtpZihLKXtLPXZ9ZWxzZXtLPWNbdz4+Ml18MH1RPWFbSz4+MF18MDtSPWNbZj4+Ml18MDtjW2Y+PjJdPVIrMTthW1I+PjBdPVF9YnJlYWt9O2Nhc2UgMTp7Y1tlPj4yXT1jW2Y+PjJdO1E9eGNbY1soY1trPj4yXXwwKSsyOD4+Ml0mNjNdKGssMzIpfDA7Uj1jW2Y+PjJdfDA7Y1tmPj4yXT1SKzE7YVtSPj4wXT1RO2JyZWFrfTtkZWZhdWx0Ont9fUo9SisxfDB9d2hpbGUoKEp8MCkhPTQpO2s9YVtyPj4wXXwwO3g9KGsmMSk9PTA7aWYoeCl7cj0oayYyNTUpPj4+MX1lbHNle3I9Y1t1Pj4yXXwwfWlmKHI+Pj4wPjEpe2lmKHgpe3U9KGsmMjU1KT4+PjF9ZWxzZXt2PWNbdz4+Ml18MDt1PWNbdT4+Ml18MH13PXYrMXwwO3U9dit1fDA7dj1jW2Y+PjJdfDA7aWYoKHd8MCkhPSh1fDApKXtkb3thW3Y+PjBdPWFbdz4+MF18MDt3PXcrMXwwO3Y9disxfDB9d2hpbGUoKHd8MCkhPSh1fDApKX1jW2Y+PjJdPXZ9Zz1nJjE3NjtpZigoZ3wwKT09MTYpe2k9dDtyZXR1cm59ZWxzZSBpZigoZ3wwKT09MzIpe2NbZT4+Ml09Y1tmPj4yXTtpPXQ7cmV0dXJufWVsc2V7Y1tlPj4yXT1kO2k9dDtyZXR1cm59fWZ1bmN0aW9uIEJrKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO3A9aTtpPWkrMTYwfDA7eD1wO3Q9cCsxNDB8MDtzPXArMTUyfDA7cj1wKzE1M3wwO3E9cCsxMTJ8MDt2PXArMTAwfDA7ZD1wKzEyOHwwO3o9cCsxMjR8MDt3PXArMTQ0fDA7dT1wKzE0OHwwO289Y1tnKzI4Pj4yXXwwO0Q9bys0fDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1t4Pj4yXT0xMzQ1NjtjW3grND4+Ml09MjA4O2NbeCs4Pj4yXT0wO2NnKDEzNDU2LHgpfXk9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0E9Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktQT4+Mj4+PjA+eT4+PjA/KGw9Y1tBKyh5PDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7QT1hW2o+PjBdfDA7eT0oQSYxKT09MDtpZih5KXtBPShBJjI1NSk+Pj4xfWVsc2V7QT1jW2orND4+Ml18MH1pZigoQXwwKT09MCl7eT0wfWVsc2V7aWYoeSl7eT1qKzF8MH1lbHNle3k9Y1tqKzg+PjJdfDB9eT1hW3k+PjBdfDA7eT15PDwyND4+MjQ9PSh4Y1tjWyhjW2w+PjJdfDApKzI4Pj4yXSY2M10obCw0NSl8MCk8PDI0Pj4yNH1jW3Q+PjJdPTA7Y1txKzA+PjJdPTA7Y1txKzQ+PjJdPTA7Y1txKzg+PjJdPTA7Y1t2KzA+PjJdPTA7Y1t2KzQ+PjJdPTA7Y1t2Kzg+PjJdPTA7Y1tkKzA+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tkKzg+PjJdPTA7emsoZix5LG8sdCxzLHIscSx2LGQseik7Zj1hW2o+PjBdfDA7QT0oZiYxKT09MDtpZihBKXtCPShmJjI1NSk+Pj4xfWVsc2V7Qj1jW2orND4+Ml18MH16PWNbej4+Ml18MDtpZigoQnwwKT4oenwwKSl7aWYoQSl7Qj0oZiYyNTUpPj4+MX1lbHNle0I9Y1tqKzQ+PjJdfDB9Qz1hW2Q+PjBdfDA7aWYoKEMmMSk9PTApe0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbZCs0Pj4yXXwwfUQ9YVt2Pj4wXXwwO2lmKChEJjEpPT0wKXtEPShEJjI1NSk+Pj4xfWVsc2V7RD1jW3YrND4+Ml18MH1CPUMrKEItejw8MXwxKStEfDB9ZWxzZXtCPWFbZD4+MF18MDtpZigoQiYxKT09MCl7Qj0oQiYyNTUpPj4+MX1lbHNle0I9Y1tkKzQ+PjJdfDB9Qz1hW3Y+PjBdfDA7aWYoKEMmMSk9PTApe0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbdis0Pj4yXXwwfUI9QisyK0N8MH1CPUIrenwwO2lmKEI+Pj4wPjEwMCl7eD11bihCKXwwO2lmKCh4fDApPT0wKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1lbHNle0I9eH19ZWxzZXtCPTB9aWYoQSl7QT1qKzF8MDtqPShmJjI1NSk+Pj4xfWVsc2V7QT1jW2orOD4+Ml18MDtqPWNbais0Pj4yXXwwfUFrKHgsdyx1LGNbZys0Pj4yXXwwLEEsQStqfDAsbCx5LHQsYVtzPj4wXXwwLGFbcj4+MF18MCxxLHYsZCx6KTtXYyhiLGNbZT4+Ml18MCx4LGNbdz4+Ml18MCxjW3U+PjJdfDAsZyxoKTtpZigoQnwwKSE9MCl7dm4oQil9aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tkKzg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbdj4+MF0mMSk9PTApPyhuPWNbdis4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhW3E+PjBdJjEpPT0wKT8oaz1jW3ErOD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9Qz1vKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXtpPXA7cmV0dXJufWxjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKTtpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIENrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIERrKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBFayhiLGQsZSxmLGcsaixsKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtsPStsO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7cT1pO2k9aSs5NzZ8MDtBPXE7Qz1xKzg2OHwwO0U9cSs4MTZ8MDtCPXErNDE2fDA7dD1xKzQwOHwwO3M9cSs4NjB8MDtyPXErNDAwfDA7eD1xKzgyNHwwO2Q9cSs4MzZ8MDt3PXErODQ4fDA7Rj1xKzgyMHwwO3Y9cSs0MDR8MDt1PXErODY0fDA7Y1tFPj4yXT1DO2hbaz4+M109bDtjW0E+PjJdPWNbaz4+Ml07Y1tBKzQ+PjJdPWNbays0Pj4yXTtDPWxiKEN8MCwxMDAsMTMyMjQsQXwwKXwwO2lmKEM+Pj4wPjk5KXtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9Qz1jWzMzNDBdfDA7aFtrPj4zXT1sO2NbQT4+Ml09Y1trPj4yXTtjW0ErND4+Ml09Y1trKzQ+PjJdO0M9Q2koRSxDLDEzMjI0LEEpfDA7ej1jW0U+PjJdfDA7aWYoKHp8MCk9PTApe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfUI9dW4oQzw8Mil8MDtpZigoQnwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9ZWxzZXt5PUJ9fWVsc2V7eT0wO3o9MH1EPWNbZysyOD4+Ml18MDtIPUQrNHwwO2NbSD4+Ml09KGNbSD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbQT4+Ml09MTM0NDg7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMzQ0OCxBKX1HPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtIPWNbRCs4Pj4yXXwwO2lmKChjW0QrMTI+PjJdfDApLUg+PjI+Pj4wPkc+Pj4wPyhwPWNbSCsoRzw8Mik+PjJdfDAsKHB8MCkhPTApOjApe0g9Y1tFPj4yXXwwO3VjW2NbKGNbcD4+Ml18MCkrNDg+PjJdJjMxXShwLEgsSCtDfDAsQil8MDtpZigoQ3wwKT09MCl7RT0wfWVsc2V7RT0oYVtjW0U+PjJdPj4wXXwwKT09NDV9Y1t0Pj4yXT0wO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbZCswPj4yXT0wO2NbZCs0Pj4yXT0wO2NbZCs4Pj4yXT0wO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wO0ZrKGYsRSxELHQscyxyLHgsZCx3LEYpO2Y9Y1tGPj4yXXwwO2lmKChDfDApPihmfDApKXtGPWFbdz4+MF18MDtpZigoRiYxKT09MCl7Rj0oRiYyNTUpPj4+MX1lbHNle0Y9Y1t3KzQ+PjJdfDB9Rz1hW2Q+PjBdfDA7aWYoKEcmMSk9PTApe0c9KEcmMjU1KT4+PjF9ZWxzZXtHPWNbZCs0Pj4yXXwwfUY9RisoQy1mPDwxfDEpK0d8MH1lbHNle0Y9YVt3Pj4wXXwwO2lmKChGJjEpPT0wKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW3crND4+Ml18MH1HPWFbZD4+MF18MDtpZigoRyYxKT09MCl7Rz0oRyYyNTUpPj4+MX1lbHNle0c9Y1tkKzQ+PjJdfDB9Rj1GKzIrR3wwfUY9RitmfDA7aWYoRj4+PjA+MTAwKXtBPXVuKEY8PDIpfDA7aWYoKEF8MCk9PTApe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfWVsc2V7Rj1BfX1lbHNle0Y9MH1HayhBLHYsdSxjW2crND4+Ml18MCxCLEIrKEM8PDIpfDAscCxFLHQsY1tzPj4yXXwwLGNbcj4+Ml18MCx4LGQsdyxmKTtMaShiLGNbZT4+Ml18MCxBLGNbdj4+Ml18MCxjW3U+PjJdfDAsZyxqKTtpZigoRnwwKSE9MCl7dm4oRil9aWYoISgoYVt3Pj4wXSYxKT09MCk/KG49Y1t3Kzg+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbZD4+MF0mMSk9PTApPyhvPWNbZCs4Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhW3g+PjBdJjEpPT0wKT8obT1jW3grOD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9Rz1EKzR8MDtIPWNbRz4+Ml18MDtjW0c+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0Q+PjJdfDApKzg+PjJdJjI1NV0oRCl9aWYoKHl8MCkhPTApe3ZuKHkpfWlmKCh6fDApPT0wKXtpPXE7cmV0dXJufXZuKHopO2k9cTtyZXR1cm59SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gRmsoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7bj1pO2k9aSsxMjh8MDtBPW47eD1uKzEyfDA7bz1uKzQwfDA7dj1uKzUyfDA7dz1uKzU2fDA7dT1uKzE2fDA7ej1uKzI4fDA7cj1uKzY4fDA7cT1uKzcyfDA7dD1uKzg0fDA7cz1uKzg4fDA7cD1uKzEwMHwwO3k9bisxMTJ8MDtpZihiKXtpZighKChjWzMyNjBdfDApPT0tMSkpe2NbQT4+Ml09MTMwNDA7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMzA0MCxBKX1xPShjWzEzMDQ0Pj4yXXwwKSsgLTF8MDtwPWNbZSs4Pj4yXXwwO2lmKCEoKGNbZSsxMj4+Ml18MCktcD4+Mj4+PjA+cT4+PjApKXtiPVhhKDQpfDA7Y1tiPj4yXT0yMTMwNDt3YihifDAsMjEzNzYsMTk2KX1wPWNbcCsocTw8Mik+PjJdfDA7aWYoKHB8MCk9PTApe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfXE9Y1twPj4yXXwwO2lmKGQpe21jW2NbcSs0ND4+Ml0mMTI3XSh4LHApO2I9Y1t4Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbcD4+Ml18MCkrMzI+PjJdJjEyN10obyxwKTtpZigoYVtsPj4wXSYxKT09MCl7Y1tsKzQ+PjJdPTA7YVtsPj4wXT0wfWVsc2V7Y1tjW2wrOD4+Ml0+PjJdPTA7Y1tsKzQ+PjJdPTB9b2cobCk7Y1tsKzA+PjJdPWNbbyswPj4yXTtjW2wrND4+Ml09Y1tvKzQ+PjJdO2NbbCs4Pj4yXT1jW28rOD4+Ml07Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTB9ZWxzZXttY1tjW3ErNDA+PjJdJjEyN10odixwKTtiPWNbdj4+Ml18MDthW2Y+PjBdPWI7YVtmKzE+PjBdPWI+Pjg7YVtmKzI+PjBdPWI+PjE2O2FbZiszPj4wXT1iPj4yNDttY1tjWyhjW3A+PjJdfDApKzI4Pj4yXSYxMjddKHcscCk7aWYoKGFbbD4+MF0mMSk9PTApe2NbbCs0Pj4yXT0wO2FbbD4+MF09MH1lbHNle2NbY1tsKzg+PjJdPj4yXT0wO2NbbCs0Pj4yXT0wfW9nKGwpO2NbbCswPj4yXT1jW3crMD4+Ml07Y1tsKzQ+PjJdPWNbdys0Pj4yXTtjW2wrOD4+Ml09Y1t3Kzg+PjJdO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wfWNbZz4+Ml09b2NbY1soY1twPj4yXXwwKSsxMj4+Ml0mMTI3XShwKXwwO2NbaD4+Ml09b2NbY1soY1twPj4yXXwwKSsxNj4+Ml0mMTI3XShwKXwwO21jW2NbKGNbcD4+Ml18MCkrMjA+PjJdJjEyN10odSxwKTtpZigoYVtqPj4wXSYxKT09MCl7YVtqKzE+PjBdPTA7YVtqPj4wXT0wfWVsc2V7YVtjW2orOD4+Ml0+PjBdPTA7Y1tqKzQ+PjJdPTB9aWcoaik7Y1tqKzA+PjJdPWNbdSswPj4yXTtjW2orND4+Ml09Y1t1KzQ+PjJdO2Nbais4Pj4yXT1jW3UrOD4+Ml07Y1t1KzA+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7bWNbY1soY1twPj4yXXwwKSsyND4+Ml0mMTI3XSh6LHApO2lmKChhW2s+PjBdJjEpPT0wKXtjW2srND4+Ml09MDthW2s+PjBdPTB9ZWxzZXtjW2Nbays4Pj4yXT4+Ml09MDtjW2srND4+Ml09MH1vZyhrKTtjW2srMD4+Ml09Y1t6KzA+PjJdO2Nbays0Pj4yXT1jW3orND4+Ml07Y1trKzg+PjJdPWNbeis4Pj4yXTtjW3orMD4+Ml09MDtjW3orND4+Ml09MDtjW3orOD4+Ml09MDtiPW9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MDtjW20+PjJdPWI7aT1uO3JldHVybn1lbHNle2lmKCEoKGNbMzI0NF18MCk9PS0xKSl7Y1tBPj4yXT0xMjk3NjtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEyOTc2LEEpfXU9KGNbMTI5ODA+PjJdfDApKyAtMXwwO289Y1tlKzg+PjJdfDA7aWYoISgoY1tlKzEyPj4yXXwwKS1vPj4yPj4+MD51Pj4+MCkpe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfW89Y1tvKyh1PDwyKT4+Ml18MDtpZigob3wwKT09MCl7Yj1YYSg0KXwwO2NbYj4+Ml09MjEzMDQ7d2IoYnwwLDIxMzc2LDE5Nil9ZT1jW28+PjJdfDA7aWYoZCl7bWNbY1tlKzQ0Pj4yXSYxMjddKHIsbyk7Yj1jW3I+PjJdfDA7YVtmPj4wXT1iO2FbZisxPj4wXT1iPj44O2FbZisyPj4wXT1iPj4xNjthW2YrMz4+MF09Yj4+MjQ7bWNbY1soY1tvPj4yXXwwKSszMj4+Ml0mMTI3XShxLG8pO2lmKChhW2w+PjBdJjEpPT0wKXtjW2wrND4+Ml09MDthW2w+PjBdPTB9ZWxzZXtjW2NbbCs4Pj4yXT4+Ml09MDtjW2wrND4+Ml09MH1vZyhsKTtjW2wrMD4+Ml09Y1txKzA+PjJdO2NbbCs0Pj4yXT1jW3ErND4+Ml07Y1tsKzg+PjJdPWNbcSs4Pj4yXTtjW3ErMD4+Ml09MDtjW3ErND4+Ml09MDtjW3ErOD4+Ml09MH1lbHNle21jW2NbZSs0MD4+Ml0mMTI3XSh0LG8pO2I9Y1t0Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbbz4+Ml18MCkrMjg+PjJdJjEyN10ocyxvKTtpZigoYVtsPj4wXSYxKT09MCl7Y1tsKzQ+PjJdPTA7YVtsPj4wXT0wfWVsc2V7Y1tjW2wrOD4+Ml0+PjJdPTA7Y1tsKzQ+PjJdPTB9b2cobCk7Y1tsKzA+PjJdPWNbcyswPj4yXTtjW2wrND4+Ml09Y1tzKzQ+PjJdO2NbbCs4Pj4yXT1jW3MrOD4+Ml07Y1tzKzA+PjJdPTA7Y1tzKzQ+PjJdPTA7Y1tzKzg+PjJdPTB9Y1tnPj4yXT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7Y1toPj4yXT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7bWNbY1soY1tvPj4yXXwwKSsyMD4+Ml0mMTI3XShwLG8pO2lmKChhW2o+PjBdJjEpPT0wKXthW2orMT4+MF09MDthW2o+PjBdPTB9ZWxzZXthW2Nbais4Pj4yXT4+MF09MDtjW2orND4+Ml09MH1pZyhqKTtjW2orMD4+Ml09Y1twKzA+PjJdO2Nbais0Pj4yXT1jW3ArND4+Ml07Y1tqKzg+PjJdPWNbcCs4Pj4yXTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDttY1tjWyhjW28+PjJdfDApKzI0Pj4yXSYxMjddKHksbyk7aWYoKGFbaz4+MF0mMSk9PTApe2Nbays0Pj4yXT0wO2Fbaz4+MF09MH1lbHNle2NbY1trKzg+PjJdPj4yXT0wO2Nbays0Pj4yXT0wfW9nKGspO2NbayswPj4yXT1jW3krMD4+Ml07Y1trKzQ+PjJdPWNbeSs0Pj4yXTtjW2srOD4+Ml09Y1t5Kzg+PjJdO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2I9b2NbY1soY1tvPj4yXXwwKSszNj4+Ml0mMTI3XShvKXwwO2NbbT4+Ml09YjtpPW47cmV0dXJufX1mdW5jdGlvbiBHayhiLGQsZSxmLGcsaCxqLGssbCxtLG4sbyxwLHEscil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7cT1xfDA7cj1yfDA7dmFyIHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wO3M9aTtjW2U+PjJdPWI7dD1xKzR8MDt1PXErOHwwO3k9KGYmNTEyfDApPT0wO3g9cCs0fDA7QT1wKzh8MDt3PShyfDApPjA7Qj1vKzF8MDtDPW8rOHwwO0Q9bys0fDA7RT0wO2Rve3N3aXRjaChhW2wrRT4+MF18MCl7Y2FzZSAyOntGPWFbcD4+MF18MDtIPShGJjEpPT0wO2lmKEgpe0c9KEYmMjU1KT4+PjF9ZWxzZXtHPWNbeD4+Ml18MH1pZighKChHfDApPT0wfHkpKXtpZihIKXtIPXg7ST0oRiYyNTUpPj4+MX1lbHNle0g9Y1tBPj4yXXwwO0k9Y1t4Pj4yXXwwfUc9SCsoSTw8Mil8MDtGPWNbZT4+Ml18MDtpZigoSHwwKSE9KEd8MCkpe0o9KEgrKEkrIC0xPDwyKSsoMC1IKXwwKT4+PjI7ST1GO3doaWxlKDEpe2NbST4+Ml09Y1tIPj4yXTtIPUgrNHwwO2lmKChIfDApPT0oR3wwKSl7YnJlYWt9ST1JKzR8MH1GPUYrKEorMTw8Mil8MH1jW2U+PjJdPUZ9YnJlYWt9O2Nhc2UgMzp7Rz1hW3E+PjBdfDA7Rj0oRyYxKT09MDtpZihGKXtHPShHJjI1NSk+Pj4xfWVsc2V7Rz1jW3Q+PjJdfDB9aWYoKEd8MCkhPTApe2lmKEYpe0Y9dH1lbHNle0Y9Y1t1Pj4yXXwwfUw9Y1tGPj4yXXwwO009Y1tlPj4yXXwwO2NbZT4+Ml09TSs0O2NbTT4+Ml09TH1icmVha307Y2FzZSA0OntGPWNbZT4+Ml18MDtnPWs/Zys0fDA6ZzthOmRve2lmKGc+Pj4wPGg+Pj4wKXtHPWc7d2hpbGUoMSl7SD1HKzR8MDtpZighKGhjW2NbKGNbaj4+Ml18MCkrMTI+PjJdJjYzXShqLDIwNDgsY1tHPj4yXXwwKXwwKSl7YnJlYWsgYX1pZihIPj4+MDxoPj4+MCl7Rz1IfWVsc2V7Rz1IO2JyZWFrfX19ZWxzZXtHPWd9fXdoaWxlKDApO2lmKHcpe2lmKEc+Pj4wPmc+Pj4wKXtIPWNbZT4+Ml18MDtJPXI7d2hpbGUoMSl7Rz1HKyAtNHwwO0s9SCs0fDA7Y1tIPj4yXT1jW0c+PjJdO0k9SSsgLTF8MDtKPShJfDApPjA7aWYoIShHPj4+MD5nPj4+MCZKKSl7YnJlYWt9ZWxzZXtIPUt9fWNbZT4+Ml09SztpZihKKXt6PTM0fWVsc2V7Y1tlPj4yXT1IKzh9fWVsc2V7ST1yO3o9MzR9aWYoKHp8MCk9PTM0KXt6PTA7Sj14Y1tjWyhjW2o+PjJdfDApKzQ0Pj4yXSY2M10oaiw0OCl8MDtLPWNbZT4+Ml18MDtNPUsrNHwwO2NbZT4+Ml09TTtpZigoSXwwKT4wKXtIPUs7TD1JO3doaWxlKDEpe2NbSD4+Ml09SjtMPUwrIC0xfDA7aWYoKEx8MCk8PTApe2JyZWFrfWVsc2V7SD1NO009TSs0fDB9fWNbZT4+Ml09SysoSSsxPDwyKTtLPUsrKEk8PDIpfDB9fWNbSz4+Ml09bX1pZigoR3wwKT09KGd8MCkpe0s9eGNbY1soY1tqPj4yXXwwKSs0ND4+Ml0mNjNdKGosNDgpfDA7TT1jW2U+PjJdfDA7TD1NKzR8MDtjW2U+PjJdPUw7Y1tNPj4yXT1LfWVsc2V7ST1hW28+PjBdfDA7SD0oSSYxKT09MDtpZihIKXtJPShJJjI1NSk+Pj4xfWVsc2V7ST1jW0Q+PjJdfDB9aWYoKEl8MCk9PTApe0g9LTF9ZWxzZXtpZihIKXtIPUJ9ZWxzZXtIPWNbQz4+Ml18MH1IPWFbSD4+MF18MH1JPWNbZT4+Ml18MDtLPTA7Sj0wO3doaWxlKDEpe2lmKChKfDApPT0oSHwwKSl7Sj1JKzR8MDtjW2U+PjJdPUo7Y1tJPj4yXT1uO0s9SysxfDA7TD1hW28+PjBdfDA7ST0oTCYxKT09MDtpZihJKXtMPShMJjI1NSk+Pj4xfWVsc2V7TD1jW0Q+PjJdfDB9aWYoSz4+PjA8TD4+PjApe2lmKEkpe0g9Qn1lbHNle0g9Y1tDPj4yXXwwfWlmKChhW0grSz4+MF18MCk9PTEyNyl7ST1KO0g9LTE7Sj0wfWVsc2V7aWYoSSl7SD1CfWVsc2V7SD1jW0M+PjJdfDB9ST1KO0g9YVtIK0s+PjBdfDA7Sj0wfX1lbHNle0k9SjtKPTB9fUc9RysgLTR8MDtNPWNbRz4+Ml18MDtMPUkrNHwwO2NbZT4+Ml09TDtjW0k+PjJdPU07aWYoKEd8MCk9PShnfDApKXticmVha31lbHNle0k9TDtKPUorMXwwfX19aWYoKEZ8MCkhPShMfDApPyh2PUwrIC00fDAsdj4+PjA+Rj4+PjApOjApe0c9djtkb3tNPWNbRj4+Ml18MDtjW0Y+PjJdPWNbRz4+Ml07Y1tHPj4yXT1NO0Y9Ris0fDA7Rz1HKyAtNHwwfXdoaWxlKEY+Pj4wPEc+Pj4wKX1icmVha307Y2FzZSAxOntjW2Q+PjJdPWNbZT4+Ml07TD14Y1tjWyhjW2o+PjJdfDApKzQ0Pj4yXSY2M10oaiwzMil8MDtNPWNbZT4+Ml18MDtjW2U+PjJdPU0rNDtjW00+PjJdPUw7YnJlYWt9O2Nhc2UgMDp7Y1tkPj4yXT1jW2U+PjJdO2JyZWFrfTtkZWZhdWx0Ont9fUU9RSsxfDB9d2hpbGUoKEV8MCkhPTQpO3c9YVtxPj4wXXwwO3Y9KHcmMSk9PTA7aWYodil7cT0odyYyNTUpPj4+MX1lbHNle3E9Y1t0Pj4yXXwwfWlmKHE+Pj4wPjEpe2lmKHYpe3Y9dDtxPSh3JjI1NSk+Pj4xfWVsc2V7dj1jW3U+PjJdfDA7cT1jW3Q+PjJdfDB9dz12KzR8MDt1PXYrKHE8PDIpfDA7dD1jW2U+PjJdfDA7aWYoKHd8MCkhPSh1fDApKXtxPSh2KyhxKyAtMTw8MikrKDAtdyl8MCk+Pj4yO3Y9dDt3aGlsZSgxKXtjW3Y+PjJdPWNbdz4+Ml07dz13KzR8MDtpZigod3wwKT09KHV8MCkpe2JyZWFrfWVsc2V7dj12KzR8MH19dD10KyhxKzE8PDIpfDB9Y1tlPj4yXT10fWY9ZiYxNzY7aWYoKGZ8MCk9PTE2KXtpPXM7cmV0dXJufWVsc2UgaWYoKGZ8MCk9PTMyKXtjW2Q+PjJdPWNbZT4+Ml07aT1zO3JldHVybn1lbHNle2NbZD4+Ml09YjtpPXM7cmV0dXJufX1mdW5jdGlvbiBIayhiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtwPWk7aT1pKzQ2NHwwO3g9cDt0PXArNDM2fDA7cz1wKzQ0MHwwO3I9cCs0NDR8MDtxPXArNDEyfDA7dj1wKzQwMHwwO2Q9cCs0MjR8MDt6PXArNDQ4fDA7dz1wKzQ1MnwwO3U9cCs0NTZ8MDtvPWNbZysyOD4+Ml18MDtEPW8rNHwwO2NbRD4+Ml09KGNbRD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbeD4+Ml09MTM0NDg7Y1t4KzQ+PjJdPTIwODtjW3grOD4+Ml09MDtjZygxMzQ0OCx4KX15PShjWzEzNDUyPj4yXXwwKSsgLTF8MDtBPWNbbys4Pj4yXXwwO2lmKChjW28rMTI+PjJdfDApLUE+PjI+Pj4wPnk+Pj4wPyhsPWNbQSsoeTw8Mik+PjJdfDAsKGx8MCkhPTApOjApe0E9YVtqPj4wXXwwO3k9KEEmMSk9PTA7aWYoeSl7QT0oQSYyNTUpPj4+MX1lbHNle0E9Y1tqKzQ+PjJdfDB9aWYoKEF8MCk9PTApe3k9MH1lbHNle2lmKHkpe3k9ais0fDB9ZWxzZXt5PWNbais4Pj4yXXwwfXk9Y1t5Pj4yXXwwO3k9KHl8MCk9PSh4Y1tjWyhjW2w+PjJdfDApKzQ0Pj4yXSY2M10obCw0NSl8MCl9Y1t0Pj4yXT0wO2NbcSswPj4yXT0wO2NbcSs0Pj4yXT0wO2NbcSs4Pj4yXT0wO2NbdiswPj4yXT0wO2Nbdis0Pj4yXT0wO2Nbdis4Pj4yXT0wO2NbZCswPj4yXT0wO2NbZCs0Pj4yXT0wO2NbZCs4Pj4yXT0wO0ZrKGYseSxvLHQscyxyLHEsdixkLHopO2Y9YVtqPj4wXXwwO0E9KGYmMSk9PTA7aWYoQSl7Qj0oZiYyNTUpPj4+MX1lbHNle0I9Y1tqKzQ+PjJdfDB9ej1jW3o+PjJdfDA7aWYoKEJ8MCk+KHp8MCkpe2lmKEEpe0I9KGYmMjU1KT4+PjF9ZWxzZXtCPWNbais0Pj4yXXwwfUM9YVtkPj4wXXwwO2lmKChDJjEpPT0wKXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW2QrND4+Ml18MH1EPWFbdj4+MF18MDtpZigoRCYxKT09MCl7RD0oRCYyNTUpPj4+MX1lbHNle0Q9Y1t2KzQ+PjJdfDB9Qj1DKyhCLXo8PDF8MSkrRHwwfWVsc2V7Qj1hW2Q+PjBdfDA7aWYoKEImMSk9PTApe0I9KEImMjU1KT4+PjF9ZWxzZXtCPWNbZCs0Pj4yXXwwfUM9YVt2Pj4wXXwwO2lmKChDJjEpPT0wKXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3YrND4+Ml18MH1CPUIrMitDfDB9Qj1CK3p8MDtpZihCPj4+MD4xMDApe3g9dW4oQjw8Mil8MDtpZigoeHwwKT09MCl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZWxzZXtCPXh9fWVsc2V7Qj0wfWlmKEEpe0E9ais0fDA7aj0oZiYyNTUpPj4+MX1lbHNle0E9Y1tqKzg+PjJdfDA7aj1jW2orND4+Ml18MH1Hayh4LHcsdSxjW2crND4+Ml18MCxBLEErKGo8PDIpfDAsbCx5LHQsY1tzPj4yXXwwLGNbcj4+Ml18MCxxLHYsZCx6KTtMaShiLGNbZT4+Ml18MCx4LGNbdz4+Ml18MCxjW3U+PjJdfDAsZyxoKTtpZigoQnwwKSE9MCl7dm4oQil9aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tkKzg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbdj4+MF0mMSk9PTApPyhuPWNbdis4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhW3E+PjBdJjEpPT0wKT8oaz1jW3ErOD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9Qz1vKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXtpPXA7cmV0dXJufWxjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKTtpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIElrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEprKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBLayhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Yj1pO2lmKChhW2Q+PjBdJjEpPT0wKXtkPWQrMXwwfWVsc2V7ZD1jW2QrOD4+Ml18MH1lPWRjKGR8MCwxKXwwO2k9YjtyZXR1cm4gZT4+PigoZXwwKSE9KC0xfDApJjEpfDB9ZnVuY3Rpb24gTGsoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7ZD1pO2k9aSsxNnwwO2o9ZDtjW2orMD4+Ml09MDtjW2orND4+Ml09MDtjW2orOD4+Ml09MDtrPWFbaD4+MF18MDtpZigoayYxKT09MCl7cD1oKzF8MDtoPShrJjI1NSk+Pj4xfWVsc2V7cD1jW2grOD4+Ml18MDtoPWNbaCs0Pj4yXXwwfW09cCtofDA7aWYocD4+PjA8bT4+PjApe249ais0fDA7bD1qKzF8MDtrPWorOHwwO3E9MDtkb3tvPWFbcD4+MF18MDtoPShxJjEpIT0wO2lmKGgpe3I9KGNbaj4+Ml0mLTIpKyAtMXwwO3E9Y1tuPj4yXXwwfWVsc2V7cj0xMDtxPShxJjI1NSk+Pj4xfWlmKChxfDApPT0ocnwwKSl7bGcoaixyLDEscixyLDApO2lmKChhW2o+PjBdJjEpPT0wKXtoPTE0fWVsc2V7aD0xNX19ZWxzZXtpZihoKXtoPTE1fWVsc2V7aD0xNH19aWYoKGh8MCk9PTE0KXthW2o+PjBdPShxPDwxKSsyO3I9bDtzPXErMXwwfWVsc2UgaWYoKGh8MCk9PTE1KXtyPWNbaz4+Ml18MDtzPXErMXwwO2Nbbj4+Ml09c31hW3IrcT4+MF09bzthW3Ircz4+MF09MDtwPXArMXwwO3E9YVtqPj4wXXwwfXdoaWxlKChwfDApIT0obXwwKSk7aD0oZXwwKT09LTE/LTE6ZTw8MTtlPShxJjEpPT0wP2w6Y1trPj4yXXwwfWVsc2V7aD0oZXwwKT09LTE/LTE6ZTw8MTtlPWorMXwwfWw9amIoaHwwLGZ8MCxnfDAsZXwwKXwwO2NbYiswPj4yXT0wO2NbYis0Pj4yXT0wO2NbYis4Pj4yXT0wO3M9Sm4obHwwKXwwO2s9bCtzfDA7YTpkb3tpZigoc3wwKT4wKXtmPWIrNHwwO2c9YisxfDA7ZT1iKzh8MDtuPTA7d2hpbGUoMSl7bT1hW2w+PjBdfDA7aD0obiYxKSE9MDtpZihoKXtvPShjW2I+PjJdJi0yKSsgLTF8MDtuPWNbZj4+Ml18MH1lbHNle289MTA7bj0obiYyNTUpPj4+MX1pZigobnwwKT09KG98MCkpe2xnKGIsbywxLG8sbywwKTtpZigoYVtiPj4wXSYxKT09MCl7aD0yOH1lbHNle2g9Mjl9fWVsc2V7aWYoaCl7aD0yOX1lbHNle2g9Mjh9fWlmKChofDApPT0yOCl7YVtiPj4wXT0objw8MSkrMjtwPWc7bz1uKzF8MH1lbHNlIGlmKChofDApPT0yOSl7cD1jW2U+PjJdfDA7bz1uKzF8MDtjW2Y+PjJdPW99YVtwK24+PjBdPW07YVtwK28+PjBdPTA7bD1sKzF8MDtpZigobHwwKT09KGt8MCkpe2JyZWFrIGF9bj1hW2I+PjBdfDB9fX13aGlsZSgwKTtpZigoYVtqPj4wXSYxKT09MCl7aT1kO3JldHVybn1iPWNbais4Pj4yXXwwO2lmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gTWsoYSxiKXthPWF8MDtiPWJ8MDthPWk7WWIoKChifDApPT0tMT8tMTpiPDwxKXwwKXwwO2k9YTtyZXR1cm59ZnVuY3Rpb24gTmsoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gT2soYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFBrKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDtiPWk7aWYoKGFbZD4+MF0mMSk9PTApe2Q9ZCsxfDB9ZWxzZXtkPWNbZCs4Pj4yXXwwfWU9ZGMoZHwwLDEpfDA7aT1iO3JldHVybiBlPj4+KChlfDApIT0oLTF8MCkmMSl8MH1mdW5jdGlvbiBRayhiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO2Q9aTtpPWkrMTc2fDA7bT1kO249ZCs0MHwwO2s9ZCsxNjh8MDtsPWQrMTcyfDA7bz1kKzE2fDA7cj1kKzh8MDtqPWQrMzJ8MDtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtjW3IrND4+Ml09MDtjW3I+PjJdPTE1MDcyO3M9YVtoPj4wXXwwO2lmKChzJjEpPT0wKXt3PWgrNHwwO2g9KHMmMjU1KT4+PjF9ZWxzZXt3PWNbaCs4Pj4yXXwwO2g9Y1toKzQ+PjJdfDB9dj13KyhoPDwyKXwwO0E9bTtjW0E+PjJdPTA7Y1tBKzQ+PjJdPTA7ZG97aWYodz4+PjA8dj4+PjApe3Q9biszMnwwO3U9bys0fDA7cz1vKzF8MDtoPW8rOHwwO3g9MTUwNzJ8MDt3aGlsZSgxKXtjW2w+PjJdPXc7QT0odGNbY1t4KzEyPj4yXSYzMV0ocixtLHcsdixsLG4sdCxrKXwwKT09Mjt4PWNbbD4+Ml18MDtpZihBfCh4fDApPT0od3wwKSl7YnJlYWt9aWYobj4+PjA8KGNbaz4+Ml18MCk+Pj4wKXt4PW47ZG97dz1hW3g+PjBdfDA7eT1hW28+PjBdfDA7ej0oeSYxKSE9MDtpZih6KXtwPShjW28+PjJdJi0yKSsgLTF8MDt5PWNbdT4+Ml18MH1lbHNle3A9MTA7eT0oeSYyNTUpPj4+MX1pZigoeXwwKT09KHB8MCkpe2xnKG8scCwxLHAscCwwKTtpZigoYVtvPj4wXSYxKT09MCl7cD0xOH1lbHNle3A9MTl9fWVsc2V7aWYoeil7cD0xOX1lbHNle3A9MTh9fWlmKChwfDApPT0xOCl7cD0wO2Fbbz4+MF09KHk8PDEpKzI7QT1zO3o9eSsxfDB9ZWxzZSBpZigocHwwKT09MTkpe3A9MDtBPWNbaD4+Ml18MDt6PXkrMXwwO2NbdT4+Ml09en1hW0EreT4+MF09dzthW0Erej4+MF09MDt4PXgrMXwwfXdoaWxlKHg+Pj4wPChjW2s+PjJdfDApPj4+MCk7dz1jW2w+PjJdfDB9ZWxzZXt3PXh9aWYoISh3Pj4+MDx2Pj4+MCkpe3A9MjQ7YnJlYWt9eD1jW3I+PjJdfDB9aWYoKHB8MCk9PTI0KXtxPShhW28+PjBdJjEpPT0wO2JyZWFrfW9rKDE0Mjk2KX1lbHNle3E9MX19d2hpbGUoMCk7aWYocSl7cD1vKzF8MH1lbHNle3A9Y1tvKzg+PjJdfDB9cD1qYigoKGV8MCk9PS0xPy0xOmU8PDEpfDAsZnwwLGd8MCxwfDApfDA7Y1tiKzA+PjJdPTA7Y1tiKzQ+PjJdPTA7Y1tiKzg+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1tqPj4yXT0xNTE3NjtBPUpuKHB8MCl8MDtxPXArQXwwO3o9bTtjW3o+PjJdPTA7Y1t6KzQ+PjJdPTA7YTpkb3tpZigoQXwwKT4wKXtlPXE7cj1uKzEyOHwwO2c9Yis0fDA7Zj1iKzh8MDtoPTE1MTc2fDA7d2hpbGUoMSl7Y1tsPj4yXT1wO0E9KHRjW2NbaCsxNj4+Ml0mMzFdKGosbSxwLChlLXB8MCk+MzI/cCszMnwwOnEsbCxuLHIsayl8MCk9PTI7aD1jW2w+PjJdfDA7aWYoQXwoaHwwKT09KHB8MCkpe2JyZWFrfWlmKG4+Pj4wPChjW2s+PjJdfDApPj4+MCl7cz1uO2Rve2g9Y1tzPj4yXXwwO3Q9YVtiPj4wXXwwO3U9KHQmMSkhPTA7aWYodSl7cD0oY1tiPj4yXSYtMikrIC0xfDA7dD1jW2c+PjJdfDB9ZWxzZXtwPTE7dD0odCYyNTUpPj4+MX1pZigodHwwKT09KHB8MCkpe3BnKGIscCwxLHAscCwwLDApO2lmKChhW2I+PjBdJjEpPT0wKXtwPTQzfWVsc2V7cD00NH19ZWxzZXtpZih1KXtwPTQ0fWVsc2V7cD00M319aWYoKHB8MCk9PTQzKXthW2I+PjBdPSh0PDwxKSsyO3Y9Zzt1PXQrMXwwfWVsc2UgaWYoKHB8MCk9PTQ0KXt2PWNbZj4+Ml18MDt1PXQrMXwwO2NbZz4+Ml09dX1jW3YrKHQ8PDIpPj4yXT1oO2NbdisodTw8Mik+PjJdPTA7cz1zKzR8MH13aGlsZShzPj4+MDwoY1trPj4yXXwwKT4+PjApO3A9Y1tsPj4yXXwwfWVsc2V7cD1ofWlmKCEocD4+PjA8cT4+PjApKXticmVhayBhfWg9Y1tqPj4yXXwwfW9rKDE0Mjk2KX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe2k9ZDtyZXR1cm59Yj1jW28rOD4+Ml18MDtpZigoYnwwKT09MCl7aT1kO3JldHVybn12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIFJrKGEsYil7YT1hfDA7Yj1ifDA7YT1pO1liKCgoYnwwKT09LTE/LTE6Yjw8MSl8MCl8MDtpPWE7cmV0dXJufWZ1bmN0aW9uIFNrKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNTQ0O2I9Yis4fDA7ZT1jW2I+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChlfDApPT0oY1szMzQwXXwwKSl7aT1kO3JldHVybn1WYihjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gVGsoKXt2YXIgYj0wLGQ9MCxlPTA7ZD1YYSg4KXwwO2NbZD4+Ml09OTkwNDt3aGlsZSgxKXtlPXVuKDE5KXwwO2lmKChlfDApIT0wKXtiPTc7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKGJ8MCk9PTcpe2NbZSs0Pj4yXT02O2NbZT4+Ml09NjtiPWUrMTJ8MDtjW2QrND4+Ml09YjtjW2UrOD4+Ml09MDthW2IrMD4+MF09YVsxMzM1Mj4+MF18MDthW2IrMT4+MF09YVsxMzM1Mz4+MF18MDthW2IrMj4+MF09YVsxMzM1ND4+MF18MDthW2IrMz4+MF09YVsxMzM1NT4+MF18MDthW2IrND4+MF09YVsxMzM1Nj4+MF18MDthW2IrNT4+MF09YVsxMzM1Nz4+MF18MDthW2IrNj4+MF09YVsxMzM1OD4+MF18MDtjW2Q+PjJdPTk5ODQ7d2IoZHwwLDEwMDI0LDEwNCl9ZT1YYSg0KXwwO2NbZT4+Ml09MjI2ODA7d2IoZXwwLDIyNzI4LDIwNil9ZnVuY3Rpb24gVWsoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtmPWk7aD1kKzR8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7aD1iKzEyfDA7bD1jW2g+PjJdfDA7Zz1iKzh8MDtrPWNbZz4+Ml18MDtxPWw7cD1rO2o9cS1wPj4yO2Rve2lmKCEoaj4+PjA+ZT4+PjApKXtvPWUrMXwwO2lmKCEoaj4+PjA8bz4+PjApKXtpZighKGo+Pj4wPm8+Pj4wKSl7YnJlYWt9aj1rKyhvPDwyKXwwO2lmKChsfDApPT0oanwwKSl7YnJlYWt9Y1toPj4yXT1sKyh+KChsKyAtNCsoMC1qKXwwKT4+PjIpPDwyKTticmVha31uPW8tanwwO2s9YisxNnwwO3I9Y1trPj4yXXwwO2Rve2lmKHItcT4+Mj4+PjA8bj4+PjApe2w9YisyNHwwO2lmKG8+Pj4wPjEwNzM3NDE4MjMpe1RrKCl9cD1yLXB8MDtpZihwPj4yPj4+MDw1MzY4NzA5MTEpe3I9cD4+MTtvPXI+Pj4wPG8+Pj4wP286cjtpZigob3wwKSE9MCl7cD1iKzEzNnwwO2lmKChhW3A+PjBdfDApPT0wJm8+Pj4wPDI5KXthW3A+PjBdPTE7cD1sfWVsc2V7bT0xNH19ZWxzZXtvPTA7cD0wfX1lbHNle289MTA3Mzc0MTgyMzttPTE0fWRve2lmKChtfDApPT0xNCl7cT1vPDwyO3E9KHF8MCk9PTA/MTpxO3doaWxlKDEpe3A9dW4ocSl8MDtpZigocHwwKSE9MCl7bT0yMDticmVha31wPWNbNTY2Nl18MDtjWzU2NjZdPXArMDtpZigocHwwKT09MCl7YnJlYWt9c2NbcCYzMV0oKX1pZigobXwwKT09MjApe2JyZWFrfXI9WGEoNCl8MDtjW3I+PjJdPTIyNjgwO3diKHJ8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTttPXArKGo8PDIpfDA7ZG97aWYoKG18MCk9PTApe209MH1lbHNle2NbbT4+Ml09MH1tPW0rNHwwO249bisgLTF8MH13aGlsZSgobnwwKSE9MCk7bj1jW2c+PjJdfDA7cT0oY1toPj4yXXwwKS1ufDA7cj1wKyhqLShxPj4yKTw8Mil8MDtMbihyfDAsbnwwLHF8MCl8MDtjW2c+PjJdPXI7Y1toPj4yXT1tO2Nbaz4+Ml09cCsobzw8Mik7aWYoKG58MCkhPTApe2lmKChsfDApPT0obnwwKSl7YVtiKzEzNj4+MF09MDticmVha31lbHNle3ZuKG4pO2JyZWFrfX19ZWxzZXtkb3tpZigobHwwKT09MCl7aj0wfWVsc2V7Y1tsPj4yXT0wO2o9Y1toPj4yXXwwfWw9ais0fDA7Y1toPj4yXT1sO249bisgLTF8MH13aGlsZSgobnwwKSE9MCl9fXdoaWxlKDApO2s9Y1tnPj4yXXwwfX13aGlsZSgwKTtoPWNbaysoZTw8Mik+PjJdfDA7aWYoKGh8MCk9PTApe3I9aztyPXIrKGU8PDIpfDA7Y1tyPj4yXT1kO2k9ZjtyZXR1cm59cT1oKzR8MDtyPWNbcT4+Ml18MDtjW3E+PjJdPXIrIC0xO2lmKChyfDApPT0wKXtsY1tjWyhjW2g+PjJdfDApKzg+PjJdJjI1NV0oaCl9cj1jW2c+PjJdfDA7cj1yKyhlPDwyKXwwO2Nbcj4+Ml09ZDtpPWY7cmV0dXJufWZ1bmN0aW9uIFZrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1drKGEpO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFdrKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2U9aTtjW2I+PjJdPTEzMzkyO2Q9YisxMnwwO2o9Y1tkPj4yXXwwO2Y9Yis4fDA7az1jW2Y+PjJdfDA7aWYoKGp8MCkhPShrfDApKXtoPTA7d2hpbGUoMSl7bD1jW2srKGg8PDIpPj4yXXwwO2lmKChsfDApIT0wKXtqPWwrNHwwO2s9Y1tqPj4yXXwwO2Nbaj4+Ml09aysgLTE7aWYoKGt8MCk9PTApe2xjW2NbKGNbbD4+Ml18MCkrOD4+Ml0mMjU1XShsKX1qPWNbZD4+Ml18MDtrPWNbZj4+Ml18MH1oPWgrMXwwO2lmKCEoaD4+PjA8ai1rPj4yPj4+MCkpe2o9azticmVha319fWlmKCEoKGFbYisxNDQ+PjBdJjEpPT0wKT8oZz1jW2IrMTUyPj4yXXwwLChnfDApIT0wKTowKXt2bihnKTtqPWNbZj4+Ml18MH1pZigoanwwKT09MCl7aT1lO3JldHVybn1mPWNbZD4+Ml18MDtpZigoZnwwKSE9KGp8MCkpe2NbZD4+Ml09ZisofigoZisgLTQrKDAtail8MCk+Pj4yKTw8Mil9aWYoKGIrMjR8MCk9PShqfDApKXthW2IrMTM2Pj4wXT0wO2k9ZTtyZXR1cm59ZWxzZXt2bihqKTtpPWU7cmV0dXJufX0KCgoKZnVuY3Rpb24gWm4oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGhjW2EmNjNdKGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIF9uKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiAkbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gYW8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGJvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBjbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gZW8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGZvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBnbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gaG8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGlvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBqbyhhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2ljW2EmNjNdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24ga28oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIGxvKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBtbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gbm8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIG9vKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBwbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gcW8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIHJvKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBzbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gdG8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIHVvKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtqY1thJjMxXShifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiB2byhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gd28oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIHhvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiB5byhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gem8oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIEFvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiBCbyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gQ28oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIERvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiBFbyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gRm8oYSl7YT1hfDA7cmV0dXJuIGtjW2EmMzFdKCl8MH1mdW5jdGlvbiBHbygpe3JldHVybiBrYSgwKXwwfWZ1bmN0aW9uIEhvKCl7cmV0dXJuIGthKDEpfDB9ZnVuY3Rpb24gSW8oKXtyZXR1cm4ga2EoMil8MH1mdW5jdGlvbiBKbygpe3JldHVybiBrYSgzKXwwfWZ1bmN0aW9uIEtvKCl7cmV0dXJuIGthKDQpfDB9ZnVuY3Rpb24gTG8oKXtyZXR1cm4ga2EoNSl8MH1mdW5jdGlvbiBNbygpe3JldHVybiBrYSg2KXwwfWZ1bmN0aW9uIE5vKCl7cmV0dXJuIGthKDcpfDB9ZnVuY3Rpb24gT28oKXtyZXR1cm4ga2EoOCl8MH1mdW5jdGlvbiBQbygpe3JldHVybiBrYSg5KXwwfWZ1bmN0aW9uIFFvKGEsYil7YT1hfDA7Yj1ifDA7bGNbYSYyNTVdKGJ8MCl9ZnVuY3Rpb24gUm8oYSl7YT1hfDA7a2EoMCxhfDApfWZ1bmN0aW9uIFNvKGEpe2E9YXwwO2thKDEsYXwwKX1mdW5jdGlvbiBUbyhhKXthPWF8MDtrYSgyLGF8MCl9ZnVuY3Rpb24gVW8oYSl7YT1hfDA7a2EoMyxhfDApfWZ1bmN0aW9uIFZvKGEpe2E9YXwwO2thKDQsYXwwKX1mdW5jdGlvbiBXbyhhKXthPWF8MDtrYSg1LGF8MCl9ZnVuY3Rpb24gWG8oYSl7YT1hfDA7a2EoNixhfDApfWZ1bmN0aW9uIFlvKGEpe2E9YXwwO2thKDcsYXwwKX1mdW5jdGlvbiBabyhhKXthPWF8MDtrYSg4LGF8MCl9ZnVuY3Rpb24gX28oYSl7YT1hfDA7a2EoOSxhfDApfWZ1bmN0aW9uICRvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDttY1thJjEyN10oYnwwLGN8MCl9ZnVuY3Rpb24gYXAoYSxiKXthPWF8MDtiPWJ8MDtrYSgwLGF8MCxifDApfWZ1bmN0aW9uIGJwKGEsYil7YT1hfDA7Yj1ifDA7a2EoMSxhfDAsYnwwKX1mdW5jdGlvbiBjcChhLGIpe2E9YXwwO2I9YnwwO2thKDIsYXwwLGJ8MCl9ZnVuY3Rpb24gZHAoYSxiKXthPWF8MDtiPWJ8MDtrYSgzLGF8MCxifDApfWZ1bmN0aW9uIGVwKGEsYil7YT1hfDA7Yj1ifDA7a2EoNCxhfDAsYnwwKX1mdW5jdGlvbiBmcChhLGIpe2E9YXwwO2I9YnwwO2thKDUsYXwwLGJ8MCl9ZnVuY3Rpb24gZ3AoYSxiKXthPWF8MDtiPWJ8MDtrYSg2LGF8MCxifDApfWZ1bmN0aW9uIGhwKGEsYil7YT1hfDA7Yj1ifDA7a2EoNyxhfDAsYnwwKX1mdW5jdGlvbiBpcChhLGIpe2E9YXwwO2I9YnwwO2thKDgsYXwwLGJ8MCl9ZnVuY3Rpb24ganAoYSxiKXthPWF8MDtiPWJ8MDtrYSg5LGF8MCxifDApfWZ1bmN0aW9uIGtwKGEsYixjLGQsZSxmLGcsaCxpLGope2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2o9anwwO25jW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDAsanwwKX1mdW5jdGlvbiBscChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gbXAoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIG5wKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiBvcChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gcHAoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIHFwKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiBycChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gc3AoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIHRwKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiB1cChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gdnAoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gb2NbYSYxMjddKGJ8MCl8MH1mdW5jdGlvbiB3cChhKXthPWF8MDtyZXR1cm4ga2EoMCxhfDApfDB9ZnVuY3Rpb24geHAoYSl7YT1hfDA7cmV0dXJuIGthKDEsYXwwKXwwfWZ1bmN0aW9uIHlwKGEpe2E9YXwwO3JldHVybiBrYSgyLGF8MCl8MH1mdW5jdGlvbiB6cChhKXthPWF8MDtyZXR1cm4ga2EoMyxhfDApfDB9ZnVuY3Rpb24gQXAoYSl7YT1hfDA7cmV0dXJuIGthKDQsYXwwKXwwfWZ1bmN0aW9uIEJwKGEpe2E9YXwwO3JldHVybiBrYSg1LGF8MCl8MH1mdW5jdGlvbiBDcChhKXthPWF8MDtyZXR1cm4ga2EoNixhfDApfDB9ZnVuY3Rpb24gRHAoYSl7YT1hfDA7cmV0dXJuIGthKDcsYXwwKXwwfWZ1bmN0aW9uIEVwKGEpe2E9YXwwO3JldHVybiBrYSg4LGF8MCl8MH1mdW5jdGlvbiBGcChhKXthPWF8MDtyZXR1cm4ga2EoOSxhfDApfDB9ZnVuY3Rpb24gR3AoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPStoO3BjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLCtoKX1mdW5jdGlvbiBIcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIElwKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoMSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gSnAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBLcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIExwKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoNCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gTXAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBOcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIE9wKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoNyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gUHAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBRcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIFJwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3FjW2EmMzFdKGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBTcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoMCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gVHAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDEsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFVwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSgyLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBWcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoMyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gV3AoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDQsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFhwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSg1LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBZcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoNixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gWnAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDcsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIF9wKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSg4LGF8MCxifDAsY3wwKX1mdW5jdGlvbiAkcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoOSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gYXEoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztyY1thJjMxXShifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBicShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSgwLGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGNxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24gZHEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBlcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSgzLGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGZxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24gZ3EoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBocShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSg2LGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGlxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24ganEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBrcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSg5LGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGxxKGEpe2E9YXwwO3NjW2EmMzFdKCl9ZnVuY3Rpb24gbXEoKXtrYSgwKX1mdW5jdGlvbiBucSgpe2thKDEpfWZ1bmN0aW9uIG9xKCl7a2EoMil9ZnVuY3Rpb24gcHEoKXtrYSgzKX1mdW5jdGlvbiBxcSgpe2thKDQpfWZ1bmN0aW9uIHJxKCl7a2EoNSl9ZnVuY3Rpb24gc3EoKXtrYSg2KX1mdW5jdGlvbiB0cSgpe2thKDcpfWZ1bmN0aW9uIHVxKCl7a2EoOCl9ZnVuY3Rpb24gdnEoKXtrYSg5KX1mdW5jdGlvbiB3cShhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7cmV0dXJuIHRjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfDB9ZnVuY3Rpb24geHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIHlxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiB6cShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gQXEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEJxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiBDcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gRHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEVxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiBGcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gR3EoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEhxKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIHVjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBJcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gSnEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEtxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBMcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gTXEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIE5xKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBPcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gUHEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFFxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBScShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gU3EoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO3ZjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIFRxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBVcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gVnEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIFdxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBYcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gWXEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIFpxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBfcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gJHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIGFyKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBicihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt3Y1thJjYzXShifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gY3IoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGRyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBlcihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gZnIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGdyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBocihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gaXIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGpyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBrcihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gbHIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIG1yKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4geGNbYSY2M10oYnwwLGN8MCl8MH1mdW5jdGlvbiBucihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSgwLGF8MCxifDApfDB9ZnVuY3Rpb24gb3IoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoMSxhfDAsYnwwKXwwfWZ1bmN0aW9uIHByKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDIsYXwwLGJ8MCl8MH1mdW5jdGlvbiBxcihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSgzLGF8MCxifDApfDB9ZnVuY3Rpb24gcnIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoNCxhfDAsYnwwKXwwfWZ1bmN0aW9uIHNyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDUsYXwwLGJ8MCl8MH1mdW5jdGlvbiB0cihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSg2LGF8MCxifDApfDB9ZnVuY3Rpb24gdXIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoNyxhfDAsYnwwKXwwfWZ1bmN0aW9uIHZyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDgsYXwwLGJ8MCl8MH1mdW5jdGlvbiB3cihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSg5LGF8MCxifDApfDB9ZnVuY3Rpb24geHIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB5Y1thJjYzXShifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIHlyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiB6cihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gQXIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEJyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBDcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gRHIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEVyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBGcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gR3IoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEhyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBJcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3pjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gSnIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEtyKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBMcihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gTXIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIE5yKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBPcihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gUHIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoNixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFFyKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBScihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gU3IoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFRyKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtmYSgwKTtyZXR1cm4gMH1mdW5jdGlvbiBVcihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtmYSgxKX1mdW5jdGlvbiBWcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2ZhKDIpfWZ1bmN0aW9uIFdyKCl7ZmEoMyk7cmV0dXJuIDB9ZnVuY3Rpb24gWHIoYSl7YT1hfDA7ZmEoNCl9ZnVuY3Rpb24gWXIoYSxiKXthPWF8MDtiPWJ8MDtmYSg1KX1mdW5jdGlvbiBacihhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7ZmEoNil9ZnVuY3Rpb24gX3IoYSl7YT1hfDA7ZmEoNyk7cmV0dXJuIDB9ZnVuY3Rpb24gJHIoYSl7YT1hfDA7cmV0dXJuIEFiKGF8MCl8MH1mdW5jdGlvbiBhcyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2ZhKDgpfWZ1bmN0aW9uIGJzKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtmYSg5KX1mdW5jdGlvbiBjcyhhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtmYSgxMCl9ZnVuY3Rpb24gZHMoKXtmYSgxMSl9ZnVuY3Rpb24gZXMoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtmYSgxMik7cmV0dXJuIDB9ZnVuY3Rpb24gZnMoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZmEoMTMpO3JldHVybiAwfWZ1bmN0aW9uIGdzKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7ZmEoMTQpfWZ1bmN0aW9uIGhzKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtmYSgxNSl9ZnVuY3Rpb24gaXMoYSxiKXthPWF8MDtiPWJ8MDtmYSgxNik7cmV0dXJuIDB9ZnVuY3Rpb24ganMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmYSgxNyk7cmV0dXJuIDB9ZnVuY3Rpb24ga3MoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZmEoMTgpfQoKCgoKLy8gRU1TQ1JJUFRFTl9FTkRfRlVOQ1MKdmFyIGhjPVtUcixUcixfbixUciwkbixUcixhbyxUcixibyxUcixjbyxUcixlbyxUcixmbyxUcixnbyxUcixobyxUcixpbyxUcix2ZyxBZyxFZyxKZyxPZyxrZixTZyx4ZixQZixRZixEaCxJaCxLayxQayxxbCxzbCx2bCxibCxnbCxpbCxsbCxobixtbixnbixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcl07dmFyIGljPVtVcixVcixrbyxVcixsbyxVcixtbyxVcixubyxVcixvbyxVcixwbyxVcixxbyxVcixybyxVcixzbyxVcix0byxVcixMaCxOaCxPaCxQaCxRaCxSaCxTaCxUaCxVaCxWaCxXaCwkaCxiaSxjaSxkaSxlaSxmaSxnaSxoaSxpaSxqaSxraSx5aSxBaSxNaSxPaSxYaSxZaSxaaSxfaSwkaSxnaixoaixpaixqaixraixCayxIayxVcixVcixVcixVcl07dmFyIGpjPVtWcixWcix2byxWcix3byxWcix4byxWcix5byxWcix6byxWcixBbyxWcixCbyxWcixDbyxWcixEbyxWcixFbyxWcixxbixwbixvbixWcixWcixWcixWcixWcixWcixWcl07dmFyIGtjPVtXcixXcixHbyxXcixIbyxXcixJbyxXcixKbyxXcixLbyxXcixMbyxXcixNbyxXcixObyxXcixPbyxXcixQbyxXcixPYyxXcixXcixXcixXcixXcixXcixXcixXcixXcl07dmFyIGxjPVtYcixYcixSbyxYcixTbyxYcixUbyxYcixVbyxYcixWbyxYcixXbyxYcixYbyxYcixZbyxYcixabyxYcixfbyxYcixUYyxVYyxoZCxpZCxuZCxvZCx2ZCx3ZCx4ZCx6ZCxCZCxDZCxEZCxFZCxGZCxIZCxKZCxLZCxMZCxNZCxOZCxQZCxSZCxTZCxUZCxVZCxWZCxYZCxZZCwkZCxaZCxhZSxfZCxiZSxWZyxVZyxYZyxXZyxjZSxkZSxqZSxrZSxsZSxuZSx0ZSx1ZSxzZSx2ZSxyZSx3ZSx4ZSx5ZSx6ZSxBZSxCZSxDZSxFZSxGZSxJZSxKZSxPZSxQZSxOZSxRZSxxZSxSZSxUZSxVZSxWZSxYZSxZZSxaZSxfZSxhZixmZixnZixtZixuZix0Zix1Zix6ZixBZixJZixIZixMZixLZixOZixfZixaZixUZiwkZixYZixhZyx0ZyxzZyxIZyxHZyxfZyxaZyxhaCwkZyxkaCxjaCxmaCxlaCxuaCxtaCxwaCxvaCx2aCx1aCxyZyx3aCx0aCx4aCx6aCx5aCxfayxGaCxFaCxLaCxKaCxfaCxaaCx0aSxzaSxIaSxHaSxWaSxVaSxlaixkaixvaixuaixyaixxaix1aix0aixGaixFaixRaixQaiwkaixfaixrayxqayxzayxyayx4ayx3ayxEayxDayxKayxJayxPayxOayxXayxWayxvbCxubCxTayxGbCxlbSxkbSxnbSxmbSxBaCxaayxhbCx4bCxObCxWbCxibSxjbSxZbSxYbSxfbSxjbiwkbSxhbixmbixibixkbixlbix6bix5biwkayxEZSxiZyxSYyxlZixtayx2bixUbSxTbSxSbSxRbSxQbSxPbSxmZyxtZyxYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcl07dmFyIG1jPVtZcixZcixhcCxZcixicCxZcixjcCxZcixkcCxZcixlcCxZcixmcCxZcixncCxZcixocCxZcixpcCxZcixqcCxZcixnZCxBZCxJZCxRZCx1ZyxIZSxLZSxoZixvZix2ZixCZixJZyx4aix5aix6aixBaixDaixEaixJaixKaixLaixMaixOaixPaixUaixVaixWaixXaixZaixaaixjayxkayxlayxmayxoayxpayxNayxSayxsbSxubSxwbSxtbSxvbSxxbSxKYyxZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcl07dmFyIG5jPVtacixacixscCxacixtcCxacixucCxacixvcCxacixwcCxacixxcCxacixycCxacixzcCxacix0cCxacix1cCxacixhaixsaixacixacixacixacixacixacixacixacl07dmFyIG9jPVtfcixfcix3cCxfcix4cCxfcix5cCxfcix6cCxfcixBcCxfcixCcCxfcixDcCxfcixEcCxfcixFcCxfcixGcCxfcixNZix5Zyx6ZyxnZSxDZywkcixHZSxNZSxqZixOZyxQZyxRZyxNZyxwZixxZix3ZixCZyxDZixEZixKZixSZixVZixyaCxXaSxybSx0bSx2bSxCbSxEbSx4bSx6bSxmaixzbSx1bSx3bSxDbSxFbSx5bSxBbSx2aix3aixCaixHaixIaixNaixSaixTaixYaixhayxiayxnayxKbCxLbCxNbCxobSxqbSxpbSxrbSxCbCxDbCxFbCxSbCxTbCxVbCxabCxfbCxhbSxabSxBbixRYyxQYyxLYyxfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcl07dmFyIHBjPVthcyxhcyxIcCxhcyxJcCxhcyxKcCxhcyxLcCxhcyxMcCxhcyxNcCxhcyxOcCxhcyxPcCxhcyxQcCxhcyxRcCxhcyx5ayxFayxhcyxhcyxhcyxhcyxhcyxhcyxhcyxhc107dmFyIHFjPVticyxicyxTcCxicyxUcCxicyxVcCxicyxWcCxicyxXcCxicyxYcCxicyxZcCxicyxacCxicyxfcCxicywkcCxicyxPZixTZixXZixWZixzaCxJYyxNYyxicyxicyxic107dmFyIHJjPVtjcyxjcyxicSxjcyxjcSxjcyxkcSxjcyxlcSxjcyxmcSxjcyxncSxjcyxocSxjcyxpcSxjcyxqcSxjcyxrcSxjcyxCaSxFaSxQaSxSaSxjcyxjcyxjcyxjcyxjcyxjc107dmFyIHNjPVtkcyxkcyxtcSxkcyxucSxkcyxvcSxkcyxwcSxkcyxxcSxkcyxycSxkcyxzcSxkcyx0cSxkcyx1cSxkcyx2cSxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkc107dmFyIHRjPVtlcyxlcyx4cSxlcyx5cSxlcyx6cSxlcyxBcSxlcyxCcSxlcyxDcSxlcyxEcSxlcyxFcSxlcyxGcSxlcyxHcSxlcyxHbCxIbCx5bCx6bCxPbCxQbCxXbCxYbCxlcyxlc107dmFyIHVjPVtmcyxmcyxJcSxmcyxKcSxmcyxLcSxmcyxMcSxmcyxNcSxmcyxOcSxmcyxPcSxmcyxQcSxmcyxRcSxmcyxScSxmcyx1bCxjbCxkbCxlbCxrbCxmcyxmcyxmcyxmcyxmc107dmFyIHZjPVtncyxncyxUcSxncyxVcSxncyxWcSxncyxXcSxncyxYcSxncyxZcSxncyxacSxncyxfcSxncywkcSxncyxhcixncyxwaixzaixsayxwayx0ayx2ayxncyxncyxncyxnc107dmFyIHdjPVtocyxocyxjcixocyxkcixocyxlcixocyxmcixocyxncixocyxocixocyxpcixocyxqcixocyxrcixocyxscixocyxlZSxLZyx3Zyx1aSx2aSx6aSxGaSxJaSxKaSxOaSxTaSxMayxRayx0bixzbixybixocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxoc107dmFyIHhjPVtpcyxpcyxucixpcyxvcixpcyxwcixpcyxxcixpcyxycixpcyxzcixpcyx0cixpcyx1cixpcyx2cixpcyx3cixpcyx5ZCxHZCxPZCxXZCxoZSxpZSxtZSxMZSxXZSwkZSxSZyxsZixyZixUZyxEZyx5ZixFZixGZyxwbCxybCx0bCxmbCxobCxqbCxMYyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpc107dmFyIHljPVtqcyxqcyx5cixqcyx6cixqcyxBcixqcyxCcixqcyxDcixqcyxEcixqcyxFcixqcyxGcixqcyxHcixqcyxIcixqcyxCaCxHaCx3bCxJbCxMbCxtbCxBbCxEbCxRbCxUbCxZbCwkbCxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqc107dmFyIHpjPVtrcyxrcyxKcixrcyxLcixrcyxMcixrcyxNcixrcyxOcixrcyxPcixrcyxQcixrcyxRcixrcyxScixrcyxTcixrcyxmZSxMZyx4ZyxDaCxIaCxqbixrbixsbixOYyxrc107cmV0dXJue19pNjRTdWJ0cmFjdDpIbixfZnJlZTp2bixfcmVhbGxvYzp3bixfaTY0QWRkOkluLF9tZW1tb3ZlOk1uLF9zdHJsZW46Sm4sX21lbXNldDpObixfbWFsbG9jOnVuLF9tZW1jcHk6TG4sX19fZ2V0VHlwZU5hbWU6Y2YsX2JpdHNoaWZ0NjRMc2hyOktuLF9iaXRzaGlmdDY0U2hsOk9uLF9fR0xPQkFMX19JX2E6YmYsX19HTE9CQUxfX0lfYTY1OmRmLF9fR0xPQkFMX19JX2ExNTM6R2YscnVuUG9zdFNldHM6R24sc3RhY2tBbGxvYzpBYyxzdGFja1NhdmU6QmMsc3RhY2tSZXN0b3JlOkNjLHNldFRocmV3OkRjLHNldFRlbXBSZXQwOkdjLGdldFRlbXBSZXQwOkhjLGR5bkNhbGxfaWlpaTpabixkeW5DYWxsX3ZpaWlpaWlpOmpvLGR5bkNhbGxfdmlpaWlpOnVvLGR5bkNhbGxfaTpGbyxkeW5DYWxsX3ZpOlFvLGR5bkNhbGxfdmlpOiRvLGR5bkNhbGxfdmlpaWlpaWlpaTprcCxkeW5DYWxsX2lpOnZwLGR5bkNhbGxfdmlpaWlpaWQ6R3AsZHluQ2FsbF92aWlpOlJwLGR5bkNhbGxfdmlpaWlpZDphcSxkeW5DYWxsX3Y6bHEsZHluQ2FsbF9paWlpaWlpaWk6d3EsZHluQ2FsbF9paWlpaTpIcSxkeW5DYWxsX3ZpaWlpaWlpaTpTcSxkeW5DYWxsX3ZpaWlpaWk6YnIsZHluQ2FsbF9paWk6bXIsZHluQ2FsbF9paWlpaWk6eHIsZHluQ2FsbF92aWlpaTpJcn0KLy8gRU1TQ1JJUFRFTl9FTkRfQVNNCgp9KSh7Ik1hdGgiOk1hdGgsIkludDhBcnJheSI6SW50OEFycmF5LCJJbnQxNkFycmF5IjpJbnQxNkFycmF5LCJJbnQzMkFycmF5IjpJbnQzMkFycmF5LCJVaW50OEFycmF5IjpVaW50OEFycmF5LCJVaW50MTZBcnJheSI6VWludDE2QXJyYXksIlVpbnQzMkFycmF5IjpVaW50MzJBcnJheSwiRmxvYXQzMkFycmF5IjpGbG9hdDMyQXJyYXksIkZsb2F0NjRBcnJheSI6RmxvYXQ2NEFycmF5fSx7ImFib3J0IjphYm9ydCwiYXNzZXJ0Ijphc3NlcnQsImFzbVByaW50SW50Ijphc21QcmludEludCwiYXNtUHJpbnRGbG9hdCI6YXNtUHJpbnRGbG9hdCwibWluIjpNYXRoX21pbiwianNDYWxsIjpqc0NhbGwsImludm9rZV9paWlpIjppbnZva2VfaWlpaSwiaW52b2tlX3ZpaWlpaWlpIjppbnZva2VfdmlpaWlpaWksImludm9rZV92aWlpaWkiOmludm9rZV92aWlpaWksImludm9rZV9pIjppbnZva2VfaSwiaW52b2tlX3ZpIjppbnZva2VfdmksImludm9rZV92aWkiOmludm9rZV92aWksImludm9rZV92aWlpaWlpaWlpIjppbnZva2VfdmlpaWlpaWlpaSwiaW52b2tlX2lpIjppbnZva2VfaWksImludm9rZV92aWlpaWlpZCI6aW52b2tlX3ZpaWlpaWlkLCJpbnZva2VfdmlpaSI6aW52b2tlX3ZpaWksImludm9rZV92aWlpaWlkIjppbnZva2VfdmlpaWlpZCwiaW52b2tlX3YiOmludm9rZV92LCJpbnZva2VfaWlpaWlpaWlpIjppbnZva2VfaWlpaWlpaWlpLCJpbnZva2VfaWlpaWkiOmludm9rZV9paWlpaSwiaW52b2tlX3ZpaWlpaWlpaSI6aW52b2tlX3ZpaWlpaWlpaSwiaW52b2tlX3ZpaWlpaWkiOmludm9rZV92aWlpaWlpLCJpbnZva2VfaWlpIjppbnZva2VfaWlpLCJpbnZva2VfaWlpaWlpIjppbnZva2VfaWlpaWlpLCJpbnZva2VfdmlpaWkiOmludm9rZV92aWlpaSwiX2ZhYnMiOl9mYWJzLCJfc3NjYW5mIjpfc3NjYW5mLCJfcHRocmVhZF9jb25kX3dhaXQiOl9wdGhyZWFkX2NvbmRfd2FpdCwiX19fY3R5cGVfdG9sb3dlcl9sb2MiOl9fX2N0eXBlX3RvbG93ZXJfbG9jLCJfYXNwcmludGYiOl9hc3ByaW50ZiwiX19lbWJpbmRfcmVnaXN0ZXJfdm9pZCI6X19lbWJpbmRfcmVnaXN0ZXJfdm9pZCwiX3NlbmQiOl9zZW5kLCJfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyI6X19lbWJpbmRfcmVnaXN0ZXJfbWVtb3J5X3ZpZXcsIl92c3NjYW5mIjpfdnNzY2FuZiwiX19fY3R5cGVfYl9sb2MiOl9fX2N0eXBlX2JfbG9jLCJfX1pTdDl0ZXJtaW5hdGV2IjpfX1pTdDl0ZXJtaW5hdGV2LCJfZm1vZCI6X2Ztb2QsIl9fX2N4YV9ndWFyZF9hY3F1aXJlIjpfX19jeGFfZ3VhcmRfYWNxdWlyZSwiX19fc2V0RXJyTm8iOl9fX3NldEVyck5vLCJfX19jeGFfaXNfbnVtYmVyX3R5cGUiOl9fX2N4YV9pc19udW1iZXJfdHlwZSwiX19fZ3h4X3BlcnNvbmFsaXR5X3YwIjpfX19neHhfcGVyc29uYWxpdHlfdjAsIl9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIiOl9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIsIl91bmdldGMiOl91bmdldGMsIl9fX2Fzc2VydF9mYWlsIjpfX19hc3NlcnRfZmFpbCwiX19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiI6X19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiwiX19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYiOl9fWlN0MTh1bmNhdWdodF9leGNlcHRpb252LCJfX19jdHlwZV90b3VwcGVyX2xvYyI6X19fY3R5cGVfdG91cHBlcl9sb2MsIl9mZmx1c2giOl9mZmx1c2gsIl9fX2N4YV9ndWFyZF9yZWxlYXNlIjpfX19jeGFfZ3VhcmRfcmVsZWFzZSwiX19hZGREYXlzIjpfX2FkZERheXMsIl9fX2Vycm5vX2xvY2F0aW9uIjpfX19lcnJub19sb2NhdGlvbiwiX3B3cml0ZSI6X3B3cml0ZSwiX3N0cmVycm9yX3IiOl9zdHJlcnJvcl9yLCJfc3RyZnRpbWVfbCI6X3N0cmZ0aW1lX2wsIl9fZm9ybWF0U3RyaW5nIjpfX2Zvcm1hdFN0cmluZywiX19yZWFsbHlOZWdhdGl2ZSI6X19yZWFsbHlOZWdhdGl2ZSwiX3NicmsiOl9zYnJrLCJfdXNlbG9jYWxlIjpfdXNlbG9jYWxlLCJfY2F0Z2V0cyI6X2NhdGdldHMsIl9uZXdsb2NhbGUiOl9uZXdsb2NhbGUsIl9zbnByaW50ZiI6X3NucHJpbnRmLCJfX19jeGFfYmVnaW5fY2F0Y2giOl9fX2N4YV9iZWdpbl9jYXRjaCwiX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZyI6X2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZywiX2ZpbGVubyI6X2ZpbGVubywiX19lbWJpbmRfcmVnaXN0ZXJfYm9vbCI6X19lbWJpbmRfcmVnaXN0ZXJfYm9vbCwiX19fcmVzdW1lRXhjZXB0aW9uIjpfX19yZXN1bWVFeGNlcHRpb24sIl9fX2N4YV9maW5kX21hdGNoaW5nX2NhdGNoIjpfX19jeGFfZmluZF9tYXRjaGluZ19jYXRjaCwiX3N5c2NvbmYiOl9zeXNjb25mLCJfX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nIjpfX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nLCJfc3RyZnRpbWUiOl9zdHJmdGltZSwiX19hcnJheVN1bSI6X19hcnJheVN1bSwiX19fY3hhX3Rocm93IjpfX19jeGFfdGhyb3csIl9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsIjpfX2VtYmluZF9yZWdpc3Rlcl9lbXZhbCwiX19leGl0IjpfX2V4aXQsIl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiwiX19aTktTdDlleGNlcHRpb240d2hhdEV2IjpfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYsIl9wdGhyZWFkX211dGV4X2Rlc3Ryb3kiOl9wdGhyZWFkX211dGV4X2Rlc3Ryb3ksIl9wdGhyZWFkX211dGV4X3VubG9jayI6X3B0aHJlYWRfbXV0ZXhfdW5sb2NrLCJfZnJlYWQiOl9mcmVhZCwiX3B0aHJlYWRfY29uZF9icm9hZGNhc3QiOl9wdGhyZWFkX2NvbmRfYnJvYWRjYXN0LCJfbWtwb3J0IjpfbWtwb3J0LCJfc3ByaW50ZiI6X3NwcmludGYsIl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzcywiX3Zhc3ByaW50ZiI6X3Zhc3ByaW50ZiwiX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmciOl9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF93c3RyaW5nLCJfd3JpdGUiOl93cml0ZSwiX19pc0xlYXBZZWFyIjpfX2lzTGVhcFllYXIsIl9fc2NhblN0cmluZyI6X19zY2FuU3RyaW5nLCJfc3RyZXJyb3IiOl9zdHJlcnJvciwiX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IiOl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yLCJfcmVjdiI6X3JlY3YsIl92c25wcmludGYiOl92c25wcmludGYsIl9fWk5TdDlleGNlcHRpb25EMkV2IjpfX1pOU3Q5ZXhjZXB0aW9uRDJFdiwiX2NvcHlzaWduIjpfY29weXNpZ24sIl9mZ2V0YyI6X2ZnZXRjLCJfX19jeGFfZG9lc19pbmhlcml0IjpfX19jeGFfZG9lc19pbmhlcml0LCJfZnJlZWxvY2FsZSI6X2ZyZWVsb2NhbGUsIl9yZWFkIjpfcmVhZCwiX2Fib3J0IjpfYWJvcnQsIl9jYXRjbG9zZSI6X2NhdGNsb3NlLCJfZndyaXRlIjpfZndyaXRlLCJfdGltZSI6X3RpbWUsIl9wdGhyZWFkX211dGV4X2xvY2siOl9wdGhyZWFkX211dGV4X2xvY2ssIl9fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0IjpfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdCwiX3ByZWFkIjpfcHJlYWQsIl9hdGV4aXQiOl9hdGV4aXQsIl9jYXRvcGVuIjpfY2F0b3BlbiwiX2V4aXQiOl9leGl0LCJfX2dldEZsb2F0IjpfX2dldEZsb2F0LCJTVEFDS1RPUCI6U1RBQ0tUT1AsIlNUQUNLX01BWCI6U1RBQ0tfTUFYLCJ0ZW1wRG91YmxlUHRyIjp0ZW1wRG91YmxlUHRyLCJBQk9SVCI6QUJPUlQsImN0dHpfaTgiOmN0dHpfaTgsImN0bHpfaTgiOmN0bHpfaTgsIk5hTiI6TmFOLCJJbmZpbml0eSI6SW5maW5pdHksIl9fWlRJU3Q5ZXhjZXB0aW9uIjpfX1pUSVN0OWV4Y2VwdGlvbiwiX19fZHNvX2hhbmRsZSI6X19fZHNvX2hhbmRsZSwiX3N0ZGVyciI6X3N0ZGVyciwiX3N0ZGluIjpfc3RkaW4sIl9zdGRvdXQiOl9zdGRvdXR9LGJ1ZmZlcik7dmFyIF9pNjRTdWJ0cmFjdD1Nb2R1bGVbIl9pNjRTdWJ0cmFjdCJdPWFzbVsiX2k2NFN1YnRyYWN0Il07dmFyIF9mcmVlPU1vZHVsZVsiX2ZyZWUiXT1hc21bIl9mcmVlIl07dmFyIF9yZWFsbG9jPU1vZHVsZVsiX3JlYWxsb2MiXT1hc21bIl9yZWFsbG9jIl07dmFyIF9pNjRBZGQ9TW9kdWxlWyJfaTY0QWRkIl09YXNtWyJfaTY0QWRkIl07dmFyIF9tZW1tb3ZlPU1vZHVsZVsiX21lbW1vdmUiXT1hc21bIl9tZW1tb3ZlIl07dmFyIF9zdHJsZW49TW9kdWxlWyJfc3RybGVuIl09YXNtWyJfc3RybGVuIl07dmFyIF9tZW1zZXQ9TW9kdWxlWyJfbWVtc2V0Il09YXNtWyJfbWVtc2V0Il07dmFyIF9tYWxsb2M9TW9kdWxlWyJfbWFsbG9jIl09YXNtWyJfbWFsbG9jIl07dmFyIF9tZW1jcHk9TW9kdWxlWyJfbWVtY3B5Il09YXNtWyJfbWVtY3B5Il07dmFyIF9fX2dldFR5cGVOYW1lPU1vZHVsZVsiX19fZ2V0VHlwZU5hbWUiXT1hc21bIl9fX2dldFR5cGVOYW1lIl07dmFyIF9iaXRzaGlmdDY0THNocj1Nb2R1bGVbIl9iaXRzaGlmdDY0THNociJdPWFzbVsiX2JpdHNoaWZ0NjRMc2hyIl07dmFyIF9iaXRzaGlmdDY0U2hsPU1vZHVsZVsiX2JpdHNoaWZ0NjRTaGwiXT1hc21bIl9iaXRzaGlmdDY0U2hsIl07dmFyIF9fR0xPQkFMX19JX2E9TW9kdWxlWyJfX0dMT0JBTF9fSV9hIl09YXNtWyJfX0dMT0JBTF9fSV9hIl07dmFyIF9fR0xPQkFMX19JX2E2NT1Nb2R1bGVbIl9fR0xPQkFMX19JX2E2NSJdPWFzbVsiX19HTE9CQUxfX0lfYTY1Il07dmFyIF9fR0xPQkFMX19JX2ExNTM9TW9kdWxlWyJfX0dMT0JBTF9fSV9hMTUzIl09YXNtWyJfX0dMT0JBTF9fSV9hMTUzIl07dmFyIHJ1blBvc3RTZXRzPU1vZHVsZVsicnVuUG9zdFNldHMiXT1hc21bInJ1blBvc3RTZXRzIl07dmFyIGR5bkNhbGxfaWlpaT1Nb2R1bGVbImR5bkNhbGxfaWlpaSJdPWFzbVsiZHluQ2FsbF9paWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWk9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlpIl09YXNtWyJkeW5DYWxsX3ZpaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpPU1vZHVsZVsiZHluQ2FsbF92aWlpaWkiXT1hc21bImR5bkNhbGxfdmlpaWlpIl07dmFyIGR5bkNhbGxfaT1Nb2R1bGVbImR5bkNhbGxfaSJdPWFzbVsiZHluQ2FsbF9pIl07dmFyIGR5bkNhbGxfdmk9TW9kdWxlWyJkeW5DYWxsX3ZpIl09YXNtWyJkeW5DYWxsX3ZpIl07dmFyIGR5bkNhbGxfdmlpPU1vZHVsZVsiZHluQ2FsbF92aWkiXT1hc21bImR5bkNhbGxfdmlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpaWlpaSJdPWFzbVsiZHluQ2FsbF92aWlpaWlpaWlpIl07dmFyIGR5bkNhbGxfaWk9TW9kdWxlWyJkeW5DYWxsX2lpIl09YXNtWyJkeW5DYWxsX2lpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWQ9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlkIl09YXNtWyJkeW5DYWxsX3ZpaWlpaWlkIl07dmFyIGR5bkNhbGxfdmlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaSJdPWFzbVsiZHluQ2FsbF92aWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpZD1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpZCJdPWFzbVsiZHluQ2FsbF92aWlpaWlkIl07dmFyIGR5bkNhbGxfdj1Nb2R1bGVbImR5bkNhbGxfdiJdPWFzbVsiZHluQ2FsbF92Il07dmFyIGR5bkNhbGxfaWlpaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF9paWlpaWlpaWkiXT1hc21bImR5bkNhbGxfaWlpaWlpaWlpIl07dmFyIGR5bkNhbGxfaWlpaWk9TW9kdWxlWyJkeW5DYWxsX2lpaWlpIl09YXNtWyJkeW5DYWxsX2lpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF92aWlpaWlpaWkiXT1hc21bImR5bkNhbGxfdmlpaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpaSJdPWFzbVsiZHluQ2FsbF92aWlpaWlpIl07dmFyIGR5bkNhbGxfaWlpPU1vZHVsZVsiZHluQ2FsbF9paWkiXT1hc21bImR5bkNhbGxfaWlpIl07dmFyIGR5bkNhbGxfaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF9paWlpaWkiXT1hc21bImR5bkNhbGxfaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWk9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpIl09YXNtWyJkeW5DYWxsX3ZpaWlpIl07UnVudGltZS5zdGFja0FsbG9jPWFzbVsic3RhY2tBbGxvYyJdO1J1bnRpbWUuc3RhY2tTYXZlPWFzbVsic3RhY2tTYXZlIl07UnVudGltZS5zdGFja1Jlc3RvcmU9YXNtWyJzdGFja1Jlc3RvcmUiXTtSdW50aW1lLnNldFRlbXBSZXQwPWFzbVsic2V0VGVtcFJldDAiXTtSdW50aW1lLmdldFRlbXBSZXQwPWFzbVsiZ2V0VGVtcFJldDAiXTt2YXIgaTY0TWF0aD0oZnVuY3Rpb24oKXt2YXIgZ29vZz17bWF0aDp7fX07Z29vZy5tYXRoLkxvbmc9KGZ1bmN0aW9uKGxvdyxoaWdoKXt0aGlzLmxvd189bG93fDA7dGhpcy5oaWdoXz1oaWdofDB9KTtnb29nLm1hdGguTG9uZy5JbnRDYWNoZV89e307Z29vZy5tYXRoLkxvbmcuZnJvbUludD0oZnVuY3Rpb24odmFsdWUpe2lmKC0xMjg8PXZhbHVlJiZ2YWx1ZTwxMjgpe3ZhciBjYWNoZWRPYmo9Z29vZy5tYXRoLkxvbmcuSW50Q2FjaGVfW3ZhbHVlXTtpZihjYWNoZWRPYmope3JldHVybiBjYWNoZWRPYmp9fXZhciBvYmo9bmV3IGdvb2cubWF0aC5Mb25nKHZhbHVlfDAsdmFsdWU8MD8tMTowKTtpZigtMTI4PD12YWx1ZSYmdmFsdWU8MTI4KXtnb29nLm1hdGguTG9uZy5JbnRDYWNoZV9bdmFsdWVdPW9ian1yZXR1cm4gb2JqfSk7Z29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcj0oZnVuY3Rpb24odmFsdWUpe2lmKGlzTmFOKHZhbHVlKXx8IWlzRmluaXRlKHZhbHVlKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99ZWxzZSBpZih2YWx1ZTw9LWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjNfREJMXyl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRX1lbHNlIGlmKHZhbHVlKzE+PWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjNfREJMXyl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1BWF9WQUxVRX1lbHNlIGlmKHZhbHVlPDApe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKC12YWx1ZSkubmVnYXRlKCl9ZWxzZXtyZXR1cm4gbmV3IGdvb2cubWF0aC5Mb25nKHZhbHVlJWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMX3wwLHZhbHVlL2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMX3wwKX19KTtnb29nLm1hdGguTG9uZy5mcm9tQml0cz0oZnVuY3Rpb24obG93Qml0cyxoaWdoQml0cyl7cmV0dXJuIG5ldyBnb29nLm1hdGguTG9uZyhsb3dCaXRzLGhpZ2hCaXRzKX0pO2dvb2cubWF0aC5Mb25nLmZyb21TdHJpbmc9KGZ1bmN0aW9uKHN0cixvcHRfcmFkaXgpe2lmKHN0ci5sZW5ndGg9PTApe3Rocm93IEVycm9yKCJudW1iZXIgZm9ybWF0IGVycm9yOiBlbXB0eSBzdHJpbmciKX12YXIgcmFkaXg9b3B0X3JhZGl4fHwxMDtpZihyYWRpeDwyfHwzNjxyYWRpeCl7dGhyb3cgRXJyb3IoInJhZGl4IG91dCBvZiByYW5nZTogIityYWRpeCl9aWYoc3RyLmNoYXJBdCgwKT09Ii0iKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbVN0cmluZyhzdHIuc3Vic3RyaW5nKDEpLHJhZGl4KS5uZWdhdGUoKX1lbHNlIGlmKHN0ci5pbmRleE9mKCItIik+PTApe3Rocm93IEVycm9yKCdudW1iZXIgZm9ybWF0IGVycm9yOiBpbnRlcmlvciAiLSIgY2hhcmFjdGVyOiAnK3N0cil9dmFyIHJhZGl4VG9Qb3dlcj1nb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LDgpKTt2YXIgcmVzdWx0PWdvb2cubWF0aC5Mb25nLlpFUk87Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoO2krPTgpe3ZhciBzaXplPU1hdGgubWluKDgsc3RyLmxlbmd0aC1pKTt2YXIgdmFsdWU9cGFyc2VJbnQoc3RyLnN1YnN0cmluZyhpLGkrc2l6ZSkscmFkaXgpO2lmKHNpemU8OCl7dmFyIHBvd2VyPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsc2l6ZSkpO3Jlc3VsdD1yZXN1bHQubXVsdGlwbHkocG93ZXIpLmFkZChnb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKHZhbHVlKSl9ZWxzZXtyZXN1bHQ9cmVzdWx0Lm11bHRpcGx5KHJhZGl4VG9Qb3dlcik7cmVzdWx0PXJlc3VsdC5hZGQoZ29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcih2YWx1ZSkpfX1yZXR1cm4gcmVzdWx0fSk7Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8xNl9EQkxfPTE8PDE2O2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfREJMXz0xPDwyNDtnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF89Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8xNl9EQkxfKmdvb2cubWF0aC5Mb25nLlRXT19QV1JfMTZfREJMXztnb29nLm1hdGguTG9uZy5UV09fUFdSXzMxX0RCTF89Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8zMl9EQkxfLzI7Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl80OF9EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXypnb29nLm1hdGguTG9uZy5UV09fUFdSXzE2X0RCTF87Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl82NF9EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXypnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF87Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl82M19EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjRfREJMXy8yO2dvb2cubWF0aC5Mb25nLlpFUk89Z29vZy5tYXRoLkxvbmcuZnJvbUludCgwKTtnb29nLm1hdGguTG9uZy5PTkU9Z29vZy5tYXRoLkxvbmcuZnJvbUludCgxKTtnb29nLm1hdGguTG9uZy5ORUdfT05FPWdvb2cubWF0aC5Mb25nLmZyb21JbnQoLTEpO2dvb2cubWF0aC5Mb25nLk1BWF9WQUxVRT1nb29nLm1hdGguTG9uZy5mcm9tQml0cyg0Mjk0OTY3Mjk1fDAsMjE0NzQ4MzY0N3wwKTtnb29nLm1hdGguTG9uZy5NSU5fVkFMVUU9Z29vZy5tYXRoLkxvbmcuZnJvbUJpdHMoMCwyMTQ3NDgzNjQ4fDApO2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfPWdvb2cubWF0aC5Mb25nLmZyb21JbnQoMTw8MjQpO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS50b0ludD0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnRvTnVtYmVyPShmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZ2hfKmdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXyt0aGlzLmdldExvd0JpdHNVbnNpZ25lZCgpfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnRvU3RyaW5nPShmdW5jdGlvbihvcHRfcmFkaXgpe3ZhciByYWRpeD1vcHRfcmFkaXh8fDEwO2lmKHJhZGl4PDJ8fDM2PHJhZGl4KXt0aHJvdyBFcnJvcigicmFkaXggb3V0IG9mIHJhbmdlOiAiK3JhZGl4KX1pZih0aGlzLmlzWmVybygpKXtyZXR1cm4iMCJ9aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKHRoaXMuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRSkpe3ZhciByYWRpeExvbmc9Z29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcihyYWRpeCk7dmFyIGRpdj10aGlzLmRpdihyYWRpeExvbmcpO3ZhciByZW09ZGl2Lm11bHRpcGx5KHJhZGl4TG9uZykuc3VidHJhY3QodGhpcyk7cmV0dXJuIGRpdi50b1N0cmluZyhyYWRpeCkrcmVtLnRvSW50KCkudG9TdHJpbmcocmFkaXgpfWVsc2V7cmV0dXJuIi0iK3RoaXMubmVnYXRlKCkudG9TdHJpbmcocmFkaXgpfX12YXIgcmFkaXhUb1Bvd2VyPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsNikpO3ZhciByZW09dGhpczt2YXIgcmVzdWx0PSIiO3doaWxlKHRydWUpe3ZhciByZW1EaXY9cmVtLmRpdihyYWRpeFRvUG93ZXIpO3ZhciBpbnR2YWw9cmVtLnN1YnRyYWN0KHJlbURpdi5tdWx0aXBseShyYWRpeFRvUG93ZXIpKS50b0ludCgpO3ZhciBkaWdpdHM9aW50dmFsLnRvU3RyaW5nKHJhZGl4KTtyZW09cmVtRGl2O2lmKHJlbS5pc1plcm8oKSl7cmV0dXJuIGRpZ2l0cytyZXN1bHR9ZWxzZXt3aGlsZShkaWdpdHMubGVuZ3RoPDYpe2RpZ2l0cz0iMCIrZGlnaXRzfXJlc3VsdD0iIitkaWdpdHMrcmVzdWx0fX19KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZ2V0SGlnaEJpdHM9KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGlnaF99KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZ2V0TG93Qml0cz0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdldExvd0JpdHNVbnNpZ25lZD0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dfPj0wP3RoaXMubG93Xzpnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF8rdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdldE51bUJpdHNBYnM9KGZ1bmN0aW9uKCl7aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKHRoaXMuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRSkpe3JldHVybiA2NH1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLmdldE51bUJpdHNBYnMoKX19ZWxzZXt2YXIgdmFsPXRoaXMuaGlnaF8hPTA/dGhpcy5oaWdoXzp0aGlzLmxvd187Zm9yKHZhciBiaXQ9MzE7Yml0PjA7Yml0LS0pe2lmKCh2YWwmMTw8Yml0KSE9MCl7YnJlYWt9fXJldHVybiB0aGlzLmhpZ2hfIT0wP2JpdCszMzpiaXQrMX19KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuaXNaZXJvPShmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZ2hfPT0wJiZ0aGlzLmxvd189PTB9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuaXNOZWdhdGl2ZT0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWdoXzwwfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmlzT2RkPShmdW5jdGlvbigpe3JldHVybih0aGlzLmxvd18mMSk9PTF9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZXF1YWxzPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuaGlnaF89PW90aGVyLmhpZ2hfJiZ0aGlzLmxvd189PW90aGVyLmxvd199KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubm90RXF1YWxzPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuaGlnaF8hPW90aGVyLmhpZ2hffHx0aGlzLmxvd18hPW90aGVyLmxvd199KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubGVzc1RoYW49KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5jb21wYXJlKG90aGVyKTwwfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmxlc3NUaGFuT3JFcXVhbD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0aGlzLmNvbXBhcmUob3RoZXIpPD0wfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdyZWF0ZXJUaGFuPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuY29tcGFyZShvdGhlcik+MH0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5ncmVhdGVyVGhhbk9yRXF1YWw9KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5jb21wYXJlKG90aGVyKT49MH0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5jb21wYXJlPShmdW5jdGlvbihvdGhlcil7aWYodGhpcy5lcXVhbHMob3RoZXIpKXtyZXR1cm4gMH12YXIgdGhpc05lZz10aGlzLmlzTmVnYXRpdmUoKTt2YXIgb3RoZXJOZWc9b3RoZXIuaXNOZWdhdGl2ZSgpO2lmKHRoaXNOZWcmJiFvdGhlck5lZyl7cmV0dXJuLTF9aWYoIXRoaXNOZWcmJm90aGVyTmVnKXtyZXR1cm4gMX1pZih0aGlzLnN1YnRyYWN0KG90aGVyKS5pc05lZ2F0aXZlKCkpe3JldHVybi0xfWVsc2V7cmV0dXJuIDF9fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLm5lZ2F0ZT0oZnVuY3Rpb24oKXtpZih0aGlzLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFfWVsc2V7cmV0dXJuIHRoaXMubm90KCkuYWRkKGdvb2cubWF0aC5Mb25nLk9ORSl9fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmFkZD0oZnVuY3Rpb24ob3RoZXIpe3ZhciBhNDg9dGhpcy5oaWdoXz4+PjE2O3ZhciBhMzI9dGhpcy5oaWdoXyY2NTUzNTt2YXIgYTE2PXRoaXMubG93Xz4+PjE2O3ZhciBhMDA9dGhpcy5sb3dfJjY1NTM1O3ZhciBiNDg9b3RoZXIuaGlnaF8+Pj4xNjt2YXIgYjMyPW90aGVyLmhpZ2hfJjY1NTM1O3ZhciBiMTY9b3RoZXIubG93Xz4+PjE2O3ZhciBiMDA9b3RoZXIubG93XyY2NTUzNTt2YXIgYzQ4PTAsYzMyPTAsYzE2PTAsYzAwPTA7YzAwKz1hMDArYjAwO2MxNis9YzAwPj4+MTY7YzAwJj02NTUzNTtjMTYrPWExNitiMTY7YzMyKz1jMTY+Pj4xNjtjMTYmPTY1NTM1O2MzMis9YTMyK2IzMjtjNDgrPWMzMj4+PjE2O2MzMiY9NjU1MzU7YzQ4Kz1hNDgrYjQ4O2M0OCY9NjU1MzU7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGMxNjw8MTZ8YzAwLGM0ODw8MTZ8YzMyKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5zdWJ0cmFjdD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0aGlzLmFkZChvdGhlci5uZWdhdGUoKSl9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubXVsdGlwbHk9KGZ1bmN0aW9uKG90aGVyKXtpZih0aGlzLmlzWmVybygpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuWkVST31lbHNlIGlmKG90aGVyLmlzWmVybygpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuWkVST31pZih0aGlzLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gb3RoZXIuaXNPZGQoKT9nb29nLm1hdGguTG9uZy5NSU5fVkFMVUU6Z29vZy5tYXRoLkxvbmcuWkVST31lbHNlIGlmKG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gdGhpcy5pc09kZCgpP2dvb2cubWF0aC5Mb25nLk1JTl9WQUxVRTpnb29nLm1hdGguTG9uZy5aRVJPfWlmKHRoaXMuaXNOZWdhdGl2ZSgpKXtpZihvdGhlci5pc05lZ2F0aXZlKCkpe3JldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG90aGVyLm5lZ2F0ZSgpKX1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG90aGVyKS5uZWdhdGUoKX19ZWxzZSBpZihvdGhlci5pc05lZ2F0aXZlKCkpe3JldHVybiB0aGlzLm11bHRpcGx5KG90aGVyLm5lZ2F0ZSgpKS5uZWdhdGUoKX1pZih0aGlzLmxlc3NUaGFuKGdvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfKSYmb3RoZXIubGVzc1RoYW4oZ29vZy5tYXRoLkxvbmcuVFdPX1BXUl8yNF8pKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcih0aGlzLnRvTnVtYmVyKCkqb3RoZXIudG9OdW1iZXIoKSl9dmFyIGE0OD10aGlzLmhpZ2hfPj4+MTY7dmFyIGEzMj10aGlzLmhpZ2hfJjY1NTM1O3ZhciBhMTY9dGhpcy5sb3dfPj4+MTY7dmFyIGEwMD10aGlzLmxvd18mNjU1MzU7dmFyIGI0OD1vdGhlci5oaWdoXz4+PjE2O3ZhciBiMzI9b3RoZXIuaGlnaF8mNjU1MzU7dmFyIGIxNj1vdGhlci5sb3dfPj4+MTY7dmFyIGIwMD1vdGhlci5sb3dfJjY1NTM1O3ZhciBjNDg9MCxjMzI9MCxjMTY9MCxjMDA9MDtjMDArPWEwMCpiMDA7YzE2Kz1jMDA+Pj4xNjtjMDAmPTY1NTM1O2MxNis9YTE2KmIwMDtjMzIrPWMxNj4+PjE2O2MxNiY9NjU1MzU7YzE2Kz1hMDAqYjE2O2MzMis9YzE2Pj4+MTY7YzE2Jj02NTUzNTtjMzIrPWEzMipiMDA7YzQ4Kz1jMzI+Pj4xNjtjMzImPTY1NTM1O2MzMis9YTE2KmIxNjtjNDgrPWMzMj4+PjE2O2MzMiY9NjU1MzU7YzMyKz1hMDAqYjMyO2M0OCs9YzMyPj4+MTY7YzMyJj02NTUzNTtjNDgrPWE0OCpiMDArYTMyKmIxNithMTYqYjMyK2EwMCpiNDg7YzQ4Jj02NTUzNTtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHMoYzE2PDwxNnxjMDAsYzQ4PDwxNnxjMzIpfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmRpdj0oZnVuY3Rpb24ob3RoZXIpe2lmKG90aGVyLmlzWmVybygpKXt0aHJvdyBFcnJvcigiZGl2aXNpb24gYnkgemVybyIpfWVsc2UgaWYodGhpcy5pc1plcm8oKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99aWYodGhpcy5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFKSl7aWYob3RoZXIuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk9ORSl8fG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5ORUdfT05FKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRX1lbHNlIGlmKG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuT05FfWVsc2V7dmFyIGhhbGZUaGlzPXRoaXMuc2hpZnRSaWdodCgxKTt2YXIgYXBwcm94PWhhbGZUaGlzLmRpdihvdGhlcikuc2hpZnRMZWZ0KDEpO2lmKGFwcHJveC5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuWkVSTykpe3JldHVybiBvdGhlci5pc05lZ2F0aXZlKCk/Z29vZy5tYXRoLkxvbmcuT05FOmdvb2cubWF0aC5Mb25nLk5FR19PTkV9ZWxzZXt2YXIgcmVtPXRoaXMuc3VidHJhY3Qob3RoZXIubXVsdGlwbHkoYXBwcm94KSk7dmFyIHJlc3VsdD1hcHByb3guYWRkKHJlbS5kaXYob3RoZXIpKTtyZXR1cm4gcmVzdWx0fX19ZWxzZSBpZihvdGhlci5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKG90aGVyLmlzTmVnYXRpdmUoKSl7cmV0dXJuIHRoaXMubmVnYXRlKCkuZGl2KG90aGVyLm5lZ2F0ZSgpKX1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLmRpdihvdGhlcikubmVnYXRlKCl9fWVsc2UgaWYob3RoZXIuaXNOZWdhdGl2ZSgpKXtyZXR1cm4gdGhpcy5kaXYob3RoZXIubmVnYXRlKCkpLm5lZ2F0ZSgpfXZhciByZXM9Z29vZy5tYXRoLkxvbmcuWkVSTzt2YXIgcmVtPXRoaXM7d2hpbGUocmVtLmdyZWF0ZXJUaGFuT3JFcXVhbChvdGhlcikpe3ZhciBhcHByb3g9TWF0aC5tYXgoMSxNYXRoLmZsb29yKHJlbS50b051bWJlcigpL290aGVyLnRvTnVtYmVyKCkpKTt2YXIgbG9nMj1NYXRoLmNlaWwoTWF0aC5sb2coYXBwcm94KS9NYXRoLkxOMik7dmFyIGRlbHRhPWxvZzI8PTQ4PzE6TWF0aC5wb3coMixsb2cyLTQ4KTt2YXIgYXBwcm94UmVzPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoYXBwcm94KTt2YXIgYXBwcm94UmVtPWFwcHJveFJlcy5tdWx0aXBseShvdGhlcik7d2hpbGUoYXBwcm94UmVtLmlzTmVnYXRpdmUoKXx8YXBwcm94UmVtLmdyZWF0ZXJUaGFuKHJlbSkpe2FwcHJveC09ZGVsdGE7YXBwcm94UmVzPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoYXBwcm94KTthcHByb3hSZW09YXBwcm94UmVzLm11bHRpcGx5KG90aGVyKX1pZihhcHByb3hSZXMuaXNaZXJvKCkpe2FwcHJveFJlcz1nb29nLm1hdGguTG9uZy5PTkV9cmVzPXJlcy5hZGQoYXBwcm94UmVzKTtyZW09cmVtLnN1YnRyYWN0KGFwcHJveFJlbSl9cmV0dXJuIHJlc30pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5tb2R1bG89KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5zdWJ0cmFjdCh0aGlzLmRpdihvdGhlcikubXVsdGlwbHkob3RoZXIpKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5ub3Q9KGZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKH50aGlzLmxvd18sfnRoaXMuaGlnaF8pfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmFuZD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyh0aGlzLmxvd18mb3RoZXIubG93Xyx0aGlzLmhpZ2hfJm90aGVyLmhpZ2hfKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5vcj0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyh0aGlzLmxvd198b3RoZXIubG93Xyx0aGlzLmhpZ2hffG90aGVyLmhpZ2hfKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS54b3I9KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHModGhpcy5sb3dfXm90aGVyLmxvd18sdGhpcy5oaWdoX15vdGhlci5oaWdoXyl9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuc2hpZnRMZWZ0PShmdW5jdGlvbihudW1CaXRzKXtudW1CaXRzJj02MztpZihudW1CaXRzPT0wKXtyZXR1cm4gdGhpc31lbHNle3ZhciBsb3c9dGhpcy5sb3dfO2lmKG51bUJpdHM8MzIpe3ZhciBoaWdoPXRoaXMuaGlnaF87cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGxvdzw8bnVtQml0cyxoaWdoPDxudW1CaXRzfGxvdz4+PjMyLW51bUJpdHMpfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKDAsbG93PDxudW1CaXRzLTMyKX19fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnNoaWZ0UmlnaHQ9KGZ1bmN0aW9uKG51bUJpdHMpe251bUJpdHMmPTYzO2lmKG51bUJpdHM9PTApe3JldHVybiB0aGlzfWVsc2V7dmFyIGhpZ2g9dGhpcy5oaWdoXztpZihudW1CaXRzPDMyKXt2YXIgbG93PXRoaXMubG93XztyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHMobG93Pj4+bnVtQml0c3xoaWdoPDwzMi1udW1CaXRzLGhpZ2g+Pm51bUJpdHMpfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGhpZ2g+Pm51bUJpdHMtMzIsaGlnaD49MD8wOi0xKX19fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnNoaWZ0UmlnaHRVbnNpZ25lZD0oZnVuY3Rpb24obnVtQml0cyl7bnVtQml0cyY9NjM7aWYobnVtQml0cz09MCl7cmV0dXJuIHRoaXN9ZWxzZXt2YXIgaGlnaD10aGlzLmhpZ2hfO2lmKG51bUJpdHM8MzIpe3ZhciBsb3c9dGhpcy5sb3dfO3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyhsb3c+Pj5udW1CaXRzfGhpZ2g8PDMyLW51bUJpdHMsaGlnaD4+Pm51bUJpdHMpfWVsc2UgaWYobnVtQml0cz09MzIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyhoaWdoLDApfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGhpZ2g+Pj5udW1CaXRzLTMyLDApfX19KTt2YXIgbmF2aWdhdG9yPXthcHBOYW1lOiJNb2Rlcm4gQnJvd3NlciJ9O3ZhciBkYml0czt2YXIgY2FuYXJ5PTB4ZGVhZGJlZWZjYWZlO3ZhciBqX2xtPShjYW5hcnkmMTY3NzcyMTUpPT0xNTcxNTA3MDtmdW5jdGlvbiBCaWdJbnRlZ2VyKGEsYixjKXtpZihhIT1udWxsKWlmKCJudW1iZXIiPT10eXBlb2YgYSl0aGlzLmZyb21OdW1iZXIoYSxiLGMpO2Vsc2UgaWYoYj09bnVsbCYmInN0cmluZyIhPXR5cGVvZiBhKXRoaXMuZnJvbVN0cmluZyhhLDI1Nik7ZWxzZSB0aGlzLmZyb21TdHJpbmcoYSxiKX1mdW5jdGlvbiBuYmkoKXtyZXR1cm4gbmV3IEJpZ0ludGVnZXIobnVsbCl9ZnVuY3Rpb24gYW0xKGkseCx3LGosYyxuKXt3aGlsZSgtLW4+PTApe3ZhciB2PXgqdGhpc1tpKytdK3dbal0rYztjPU1hdGguZmxvb3Iodi82NzEwODg2NCk7d1tqKytdPXYmNjcxMDg4NjN9cmV0dXJuIGN9ZnVuY3Rpb24gYW0yKGkseCx3LGosYyxuKXt2YXIgeGw9eCYzMjc2Nyx4aD14Pj4xNTt3aGlsZSgtLW4+PTApe3ZhciBsPXRoaXNbaV0mMzI3Njc7dmFyIGg9dGhpc1tpKytdPj4xNTt2YXIgbT14aCpsK2gqeGw7bD14bCpsKygobSYzMjc2Nyk8PDE1KSt3W2pdKyhjJjEwNzM3NDE4MjMpO2M9KGw+Pj4zMCkrKG0+Pj4xNSkreGgqaCsoYz4+PjMwKTt3W2orK109bCYxMDczNzQxODIzfXJldHVybiBjfWZ1bmN0aW9uIGFtMyhpLHgsdyxqLGMsbil7dmFyIHhsPXgmMTYzODMseGg9eD4+MTQ7d2hpbGUoLS1uPj0wKXt2YXIgbD10aGlzW2ldJjE2MzgzO3ZhciBoPXRoaXNbaSsrXT4+MTQ7dmFyIG09eGgqbCtoKnhsO2w9eGwqbCsoKG0mMTYzODMpPDwxNCkrd1tqXStjO2M9KGw+PjI4KSsobT4+MTQpK3hoKmg7d1tqKytdPWwmMjY4NDM1NDU1fXJldHVybiBjfWlmKGpfbG0mJm5hdmlnYXRvci5hcHBOYW1lPT0iTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIil7QmlnSW50ZWdlci5wcm90b3R5cGUuYW09YW0yO2RiaXRzPTMwfWVsc2UgaWYoal9sbSYmbmF2aWdhdG9yLmFwcE5hbWUhPSJOZXRzY2FwZSIpe0JpZ0ludGVnZXIucHJvdG90eXBlLmFtPWFtMTtkYml0cz0yNn1lbHNle0JpZ0ludGVnZXIucHJvdG90eXBlLmFtPWFtMztkYml0cz0yOH1CaWdJbnRlZ2VyLnByb3RvdHlwZS5EQj1kYml0cztCaWdJbnRlZ2VyLnByb3RvdHlwZS5ETT0oMTw8ZGJpdHMpLTE7QmlnSW50ZWdlci5wcm90b3R5cGUuRFY9MTw8ZGJpdHM7dmFyIEJJX0ZQPTUyO0JpZ0ludGVnZXIucHJvdG90eXBlLkZWPU1hdGgucG93KDIsQklfRlApO0JpZ0ludGVnZXIucHJvdG90eXBlLkYxPUJJX0ZQLWRiaXRzO0JpZ0ludGVnZXIucHJvdG90eXBlLkYyPTIqZGJpdHMtQklfRlA7dmFyIEJJX1JNPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO3ZhciBCSV9SQz1uZXcgQXJyYXk7dmFyIHJyLHZ2O3JyPSIwIi5jaGFyQ29kZUF0KDApO2Zvcih2dj0wO3Z2PD05OysrdnYpQklfUkNbcnIrK109dnY7cnI9ImEiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpQklfUkNbcnIrK109dnY7cnI9IkEiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpQklfUkNbcnIrK109dnY7ZnVuY3Rpb24gaW50MmNoYXIobil7cmV0dXJuIEJJX1JNLmNoYXJBdChuKX1mdW5jdGlvbiBpbnRBdChzLGkpe3ZhciBjPUJJX1JDW3MuY2hhckNvZGVBdChpKV07cmV0dXJuIGM9PW51bGw/LTE6Y31mdW5jdGlvbiBibnBDb3B5VG8ocil7Zm9yKHZhciBpPXRoaXMudC0xO2k+PTA7LS1pKXJbaV09dGhpc1tpXTtyLnQ9dGhpcy50O3Iucz10aGlzLnN9ZnVuY3Rpb24gYm5wRnJvbUludCh4KXt0aGlzLnQ9MTt0aGlzLnM9eDwwPy0xOjA7aWYoeD4wKXRoaXNbMF09eDtlbHNlIGlmKHg8LTEpdGhpc1swXT14K0RWO2Vsc2UgdGhpcy50PTB9ZnVuY3Rpb24gbmJ2KGkpe3ZhciByPW5iaSgpO3IuZnJvbUludChpKTtyZXR1cm4gcn1mdW5jdGlvbiBibnBGcm9tU3RyaW5nKHMsYil7dmFyIGs7aWYoYj09MTYpaz00O2Vsc2UgaWYoYj09OClrPTM7ZWxzZSBpZihiPT0yNTYpaz04O2Vsc2UgaWYoYj09MilrPTE7ZWxzZSBpZihiPT0zMilrPTU7ZWxzZSBpZihiPT00KWs9MjtlbHNle3RoaXMuZnJvbVJhZGl4KHMsYik7cmV0dXJufXRoaXMudD0wO3RoaXMucz0wO3ZhciBpPXMubGVuZ3RoLG1pPWZhbHNlLHNoPTA7d2hpbGUoLS1pPj0wKXt2YXIgeD1rPT04P3NbaV0mMjU1OmludEF0KHMsaSk7aWYoeDwwKXtpZihzLmNoYXJBdChpKT09Ii0iKW1pPXRydWU7Y29udGludWV9bWk9ZmFsc2U7aWYoc2g9PTApdGhpc1t0aGlzLnQrK109eDtlbHNlIGlmKHNoK2s+dGhpcy5EQil7dGhpc1t0aGlzLnQtMV18PSh4JigxPDx0aGlzLkRCLXNoKS0xKTw8c2g7dGhpc1t0aGlzLnQrK109eD4+dGhpcy5EQi1zaH1lbHNlIHRoaXNbdGhpcy50LTFdfD14PDxzaDtzaCs9aztpZihzaD49dGhpcy5EQilzaC09dGhpcy5EQn1pZihrPT04JiYoc1swXSYxMjgpIT0wKXt0aGlzLnM9LTE7aWYoc2g+MCl0aGlzW3RoaXMudC0xXXw9KDE8PHRoaXMuREItc2gpLTE8PHNofXRoaXMuY2xhbXAoKTtpZihtaSlCaWdJbnRlZ2VyLlpFUk8uc3ViVG8odGhpcyx0aGlzKX1mdW5jdGlvbiBibnBDbGFtcCgpe3ZhciBjPXRoaXMucyZ0aGlzLkRNO3doaWxlKHRoaXMudD4wJiZ0aGlzW3RoaXMudC0xXT09YyktLXRoaXMudH1mdW5jdGlvbiBiblRvU3RyaW5nKGIpe2lmKHRoaXMuczwwKXJldHVybiItIit0aGlzLm5lZ2F0ZSgpLnRvU3RyaW5nKGIpO3ZhciBrO2lmKGI9PTE2KWs9NDtlbHNlIGlmKGI9PTgpaz0zO2Vsc2UgaWYoYj09MilrPTE7ZWxzZSBpZihiPT0zMilrPTU7ZWxzZSBpZihiPT00KWs9MjtlbHNlIHJldHVybiB0aGlzLnRvUmFkaXgoYik7dmFyIGttPSgxPDxrKS0xLGQsbT1mYWxzZSxyPSIiLGk9dGhpcy50O3ZhciBwPXRoaXMuREItaSp0aGlzLkRCJWs7aWYoaS0tPjApe2lmKHA8dGhpcy5EQiYmKGQ9dGhpc1tpXT4+cCk+MCl7bT10cnVlO3I9aW50MmNoYXIoZCl9d2hpbGUoaT49MCl7aWYocDxrKXtkPSh0aGlzW2ldJigxPDxwKS0xKTw8ay1wO2R8PXRoaXNbLS1pXT4+KHArPXRoaXMuREItayl9ZWxzZXtkPXRoaXNbaV0+PihwLT1rKSZrbTtpZihwPD0wKXtwKz10aGlzLkRCOy0taX19aWYoZD4wKW09dHJ1ZTtpZihtKXIrPWludDJjaGFyKGQpfX1yZXR1cm4gbT9yOiIwIn1mdW5jdGlvbiBibk5lZ2F0ZSgpe3ZhciByPW5iaSgpO0JpZ0ludGVnZXIuWkVSTy5zdWJUbyh0aGlzLHIpO3JldHVybiByfWZ1bmN0aW9uIGJuQWJzKCl7cmV0dXJuIHRoaXMuczwwP3RoaXMubmVnYXRlKCk6dGhpc31mdW5jdGlvbiBibkNvbXBhcmVUbyhhKXt2YXIgcj10aGlzLnMtYS5zO2lmKHIhPTApcmV0dXJuIHI7dmFyIGk9dGhpcy50O3I9aS1hLnQ7aWYociE9MClyZXR1cm4gdGhpcy5zPDA/LXI6cjt3aGlsZSgtLWk+PTApaWYoKHI9dGhpc1tpXS1hW2ldKSE9MClyZXR1cm4gcjtyZXR1cm4gMH1mdW5jdGlvbiBuYml0cyh4KXt2YXIgcj0xLHQ7aWYoKHQ9eD4+PjE2KSE9MCl7eD10O3IrPTE2fWlmKCh0PXg+PjgpIT0wKXt4PXQ7cis9OH1pZigodD14Pj40KSE9MCl7eD10O3IrPTR9aWYoKHQ9eD4+MikhPTApe3g9dDtyKz0yfWlmKCh0PXg+PjEpIT0wKXt4PXQ7cis9MX1yZXR1cm4gcn1mdW5jdGlvbiBibkJpdExlbmd0aCgpe2lmKHRoaXMudDw9MClyZXR1cm4gMDtyZXR1cm4gdGhpcy5EQioodGhpcy50LTEpK25iaXRzKHRoaXNbdGhpcy50LTFdXnRoaXMucyZ0aGlzLkRNKX1mdW5jdGlvbiBibnBETFNoaWZ0VG8obixyKXt2YXIgaTtmb3IoaT10aGlzLnQtMTtpPj0wOy0taSlyW2krbl09dGhpc1tpXTtmb3IoaT1uLTE7aT49MDstLWkpcltpXT0wO3IudD10aGlzLnQrbjtyLnM9dGhpcy5zfWZ1bmN0aW9uIGJucERSU2hpZnRUbyhuLHIpe2Zvcih2YXIgaT1uO2k8dGhpcy50OysraSlyW2ktbl09dGhpc1tpXTtyLnQ9TWF0aC5tYXgodGhpcy50LW4sMCk7ci5zPXRoaXMuc31mdW5jdGlvbiBibnBMU2hpZnRUbyhuLHIpe3ZhciBicz1uJXRoaXMuREI7dmFyIGNicz10aGlzLkRCLWJzO3ZhciBibT0oMTw8Y2JzKS0xO3ZhciBkcz1NYXRoLmZsb29yKG4vdGhpcy5EQiksYz10aGlzLnM8PGJzJnRoaXMuRE0saTtmb3IoaT10aGlzLnQtMTtpPj0wOy0taSl7cltpK2RzKzFdPXRoaXNbaV0+PmNic3xjO2M9KHRoaXNbaV0mYm0pPDxic31mb3IoaT1kcy0xO2k+PTA7LS1pKXJbaV09MDtyW2RzXT1jO3IudD10aGlzLnQrZHMrMTtyLnM9dGhpcy5zO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBSU2hpZnRUbyhuLHIpe3Iucz10aGlzLnM7dmFyIGRzPU1hdGguZmxvb3Iobi90aGlzLkRCKTtpZihkcz49dGhpcy50KXtyLnQ9MDtyZXR1cm59dmFyIGJzPW4ldGhpcy5EQjt2YXIgY2JzPXRoaXMuREItYnM7dmFyIGJtPSgxPDxicyktMTtyWzBdPXRoaXNbZHNdPj5icztmb3IodmFyIGk9ZHMrMTtpPHRoaXMudDsrK2kpe3JbaS1kcy0xXXw9KHRoaXNbaV0mYm0pPDxjYnM7cltpLWRzXT10aGlzW2ldPj5ic31pZihicz4wKXJbdGhpcy50LWRzLTFdfD0odGhpcy5zJmJtKTw8Y2JzO3IudD10aGlzLnQtZHM7ci5jbGFtcCgpfWZ1bmN0aW9uIGJucFN1YlRvKGEscil7dmFyIGk9MCxjPTAsbT1NYXRoLm1pbihhLnQsdGhpcy50KTt3aGlsZShpPG0pe2MrPXRoaXNbaV0tYVtpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWlmKGEudDx0aGlzLnQpe2MtPWEuczt3aGlsZShpPHRoaXMudCl7Yys9dGhpc1tpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWMrPXRoaXMuc31lbHNle2MrPXRoaXMuczt3aGlsZShpPGEudCl7Yy09YVtpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWMtPWEuc31yLnM9YzwwPy0xOjA7aWYoYzwtMSlyW2krK109dGhpcy5EVitjO2Vsc2UgaWYoYz4wKXJbaSsrXT1jO3IudD1pO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBNdWx0aXBseVRvKGEscil7dmFyIHg9dGhpcy5hYnMoKSx5PWEuYWJzKCk7dmFyIGk9eC50O3IudD1pK3kudDt3aGlsZSgtLWk+PTApcltpXT0wO2ZvcihpPTA7aTx5LnQ7KytpKXJbaSt4LnRdPXguYW0oMCx5W2ldLHIsaSwwLHgudCk7ci5zPTA7ci5jbGFtcCgpO2lmKHRoaXMucyE9YS5zKUJpZ0ludGVnZXIuWkVSTy5zdWJUbyhyLHIpfWZ1bmN0aW9uIGJucFNxdWFyZVRvKHIpe3ZhciB4PXRoaXMuYWJzKCk7dmFyIGk9ci50PTIqeC50O3doaWxlKC0taT49MClyW2ldPTA7Zm9yKGk9MDtpPHgudC0xOysraSl7dmFyIGM9eC5hbShpLHhbaV0sciwyKmksMCwxKTtpZigocltpK3gudF0rPXguYW0oaSsxLDIqeFtpXSxyLDIqaSsxLGMseC50LWktMSkpPj14LkRWKXtyW2kreC50XS09eC5EVjtyW2kreC50KzFdPTF9fWlmKHIudD4wKXJbci50LTFdKz14LmFtKGkseFtpXSxyLDIqaSwwLDEpO3Iucz0wO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBEaXZSZW1UbyhtLHEscil7dmFyIHBtPW0uYWJzKCk7aWYocG0udDw9MClyZXR1cm47dmFyIHB0PXRoaXMuYWJzKCk7aWYocHQudDxwbS50KXtpZihxIT1udWxsKXEuZnJvbUludCgwKTtpZihyIT1udWxsKXRoaXMuY29weVRvKHIpO3JldHVybn1pZihyPT1udWxsKXI9bmJpKCk7dmFyIHk9bmJpKCksdHM9dGhpcy5zLG1zPW0uczt2YXIgbnNoPXRoaXMuREItbmJpdHMocG1bcG0udC0xXSk7aWYobnNoPjApe3BtLmxTaGlmdFRvKG5zaCx5KTtwdC5sU2hpZnRUbyhuc2gscil9ZWxzZXtwbS5jb3B5VG8oeSk7cHQuY29weVRvKHIpfXZhciB5cz15LnQ7dmFyIHkwPXlbeXMtMV07aWYoeTA9PTApcmV0dXJuO3ZhciB5dD15MCooMTw8dGhpcy5GMSkrKHlzPjE/eVt5cy0yXT4+dGhpcy5GMjowKTt2YXIgZDE9dGhpcy5GVi95dCxkMj0oMTw8dGhpcy5GMSkveXQsZT0xPDx0aGlzLkYyO3ZhciBpPXIudCxqPWkteXMsdD1xPT1udWxsP25iaSgpOnE7eS5kbFNoaWZ0VG8oaix0KTtpZihyLmNvbXBhcmVUbyh0KT49MCl7cltyLnQrK109MTtyLnN1YlRvKHQscil9QmlnSW50ZWdlci5PTkUuZGxTaGlmdFRvKHlzLHQpO3Quc3ViVG8oeSx5KTt3aGlsZSh5LnQ8eXMpeVt5LnQrK109MDt3aGlsZSgtLWo+PTApe3ZhciBxZD1yWy0taV09PXkwP3RoaXMuRE06TWF0aC5mbG9vcihyW2ldKmQxKyhyW2ktMV0rZSkqZDIpO2lmKChyW2ldKz15LmFtKDAscWQscixqLDAseXMpKTxxZCl7eS5kbFNoaWZ0VG8oaix0KTtyLnN1YlRvKHQscik7d2hpbGUocltpXTwtLXFkKXIuc3ViVG8odCxyKX19aWYocSE9bnVsbCl7ci5kclNoaWZ0VG8oeXMscSk7aWYodHMhPW1zKUJpZ0ludGVnZXIuWkVSTy5zdWJUbyhxLHEpfXIudD15cztyLmNsYW1wKCk7aWYobnNoPjApci5yU2hpZnRUbyhuc2gscik7aWYodHM8MClCaWdJbnRlZ2VyLlpFUk8uc3ViVG8ocixyKX1mdW5jdGlvbiBibk1vZChhKXt2YXIgcj1uYmkoKTt0aGlzLmFicygpLmRpdlJlbVRvKGEsbnVsbCxyKTtpZih0aGlzLnM8MCYmci5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKT4wKWEuc3ViVG8ocixyKTtyZXR1cm4gcn1mdW5jdGlvbiBDbGFzc2ljKG0pe3RoaXMubT1tfWZ1bmN0aW9uIGNDb252ZXJ0KHgpe2lmKHguczwwfHx4LmNvbXBhcmVUbyh0aGlzLm0pPj0wKXJldHVybiB4Lm1vZCh0aGlzLm0pO2Vsc2UgcmV0dXJuIHh9ZnVuY3Rpb24gY1JldmVydCh4KXtyZXR1cm4geH1mdW5jdGlvbiBjUmVkdWNlKHgpe3guZGl2UmVtVG8odGhpcy5tLG51bGwseCl9ZnVuY3Rpb24gY011bFRvKHgseSxyKXt4Lm11bHRpcGx5VG8oeSxyKTt0aGlzLnJlZHVjZShyKX1mdW5jdGlvbiBjU3FyVG8oeCxyKXt4LnNxdWFyZVRvKHIpO3RoaXMucmVkdWNlKHIpfUNsYXNzaWMucHJvdG90eXBlLmNvbnZlcnQ9Y0NvbnZlcnQ7Q2xhc3NpYy5wcm90b3R5cGUucmV2ZXJ0PWNSZXZlcnQ7Q2xhc3NpYy5wcm90b3R5cGUucmVkdWNlPWNSZWR1Y2U7Q2xhc3NpYy5wcm90b3R5cGUubXVsVG89Y011bFRvO0NsYXNzaWMucHJvdG90eXBlLnNxclRvPWNTcXJUbztmdW5jdGlvbiBibnBJbnZEaWdpdCgpe2lmKHRoaXMudDwxKXJldHVybiAwO3ZhciB4PXRoaXNbMF07aWYoKHgmMSk9PTApcmV0dXJuIDA7dmFyIHk9eCYzO3k9eSooMi0oeCYxNSkqeSkmMTU7eT15KigyLSh4JjI1NSkqeSkmMjU1O3k9eSooMi0oKHgmNjU1MzUpKnkmNjU1MzUpKSY2NTUzNTt5PXkqKDIteCp5JXRoaXMuRFYpJXRoaXMuRFY7cmV0dXJuIHk+MD90aGlzLkRWLXk6LXl9ZnVuY3Rpb24gTW9udGdvbWVyeShtKXt0aGlzLm09bTt0aGlzLm1wPW0uaW52RGlnaXQoKTt0aGlzLm1wbD10aGlzLm1wJjMyNzY3O3RoaXMubXBoPXRoaXMubXA+PjE1O3RoaXMudW09KDE8PG0uREItMTUpLTE7dGhpcy5tdDI9MiptLnR9ZnVuY3Rpb24gbW9udENvbnZlcnQoeCl7dmFyIHI9bmJpKCk7eC5hYnMoKS5kbFNoaWZ0VG8odGhpcy5tLnQscik7ci5kaXZSZW1Ubyh0aGlzLm0sbnVsbCxyKTtpZih4LnM8MCYmci5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKT4wKXRoaXMubS5zdWJUbyhyLHIpO3JldHVybiByfWZ1bmN0aW9uIG1vbnRSZXZlcnQoeCl7dmFyIHI9bmJpKCk7eC5jb3B5VG8ocik7dGhpcy5yZWR1Y2Uocik7cmV0dXJuIHJ9ZnVuY3Rpb24gbW9udFJlZHVjZSh4KXt3aGlsZSh4LnQ8PXRoaXMubXQyKXhbeC50KytdPTA7Zm9yKHZhciBpPTA7aTx0aGlzLm0udDsrK2kpe3ZhciBqPXhbaV0mMzI3Njc7dmFyIHUwPWoqdGhpcy5tcGwrKChqKnRoaXMubXBoKyh4W2ldPj4xNSkqdGhpcy5tcGwmdGhpcy51bSk8PDE1KSZ4LkRNO2o9aSt0aGlzLm0udDt4W2pdKz10aGlzLm0uYW0oMCx1MCx4LGksMCx0aGlzLm0udCk7d2hpbGUoeFtqXT49eC5EVil7eFtqXS09eC5EVjt4Wysral0rK319eC5jbGFtcCgpO3guZHJTaGlmdFRvKHRoaXMubS50LHgpO2lmKHguY29tcGFyZVRvKHRoaXMubSk+PTApeC5zdWJUbyh0aGlzLm0seCl9ZnVuY3Rpb24gbW9udFNxclRvKHgscil7eC5zcXVhcmVUbyhyKTt0aGlzLnJlZHVjZShyKX1mdW5jdGlvbiBtb250TXVsVG8oeCx5LHIpe3gubXVsdGlwbHlUbyh5LHIpO3RoaXMucmVkdWNlKHIpfU1vbnRnb21lcnkucHJvdG90eXBlLmNvbnZlcnQ9bW9udENvbnZlcnQ7TW9udGdvbWVyeS5wcm90b3R5cGUucmV2ZXJ0PW1vbnRSZXZlcnQ7TW9udGdvbWVyeS5wcm90b3R5cGUucmVkdWNlPW1vbnRSZWR1Y2U7TW9udGdvbWVyeS5wcm90b3R5cGUubXVsVG89bW9udE11bFRvO01vbnRnb21lcnkucHJvdG90eXBlLnNxclRvPW1vbnRTcXJUbztmdW5jdGlvbiBibnBJc0V2ZW4oKXtyZXR1cm4odGhpcy50PjA/dGhpc1swXSYxOnRoaXMucyk9PTB9ZnVuY3Rpb24gYm5wRXhwKGUseil7aWYoZT40Mjk0OTY3Mjk1fHxlPDEpcmV0dXJuIEJpZ0ludGVnZXIuT05FO3ZhciByPW5iaSgpLHIyPW5iaSgpLGc9ei5jb252ZXJ0KHRoaXMpLGk9bmJpdHMoZSktMTtnLmNvcHlUbyhyKTt3aGlsZSgtLWk+PTApe3ouc3FyVG8ocixyMik7aWYoKGUmMTw8aSk+MCl6Lm11bFRvKHIyLGcscik7ZWxzZXt2YXIgdD1yO3I9cjI7cjI9dH19cmV0dXJuIHoucmV2ZXJ0KHIpfWZ1bmN0aW9uIGJuTW9kUG93SW50KGUsbSl7dmFyIHo7aWYoZTwyNTZ8fG0uaXNFdmVuKCkpej1uZXcgQ2xhc3NpYyhtKTtlbHNlIHo9bmV3IE1vbnRnb21lcnkobSk7cmV0dXJuIHRoaXMuZXhwKGUseil9QmlnSW50ZWdlci5wcm90b3R5cGUuY29weVRvPWJucENvcHlUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tSW50PWJucEZyb21JbnQ7QmlnSW50ZWdlci5wcm90b3R5cGUuZnJvbVN0cmluZz1ibnBGcm9tU3RyaW5nO0JpZ0ludGVnZXIucHJvdG90eXBlLmNsYW1wPWJucENsYW1wO0JpZ0ludGVnZXIucHJvdG90eXBlLmRsU2hpZnRUbz1ibnBETFNoaWZ0VG87QmlnSW50ZWdlci5wcm90b3R5cGUuZHJTaGlmdFRvPWJucERSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5sU2hpZnRUbz1ibnBMU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5yU2hpZnRUbz1ibnBSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJUbz1ibnBTdWJUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseVRvPWJucE11bHRpcGx5VG87QmlnSW50ZWdlci5wcm90b3R5cGUuc3F1YXJlVG89Ym5wU3F1YXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuZGl2UmVtVG89Ym5wRGl2UmVtVG87QmlnSW50ZWdlci5wcm90b3R5cGUuaW52RGlnaXQ9Ym5wSW52RGlnaXQ7QmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuPWJucElzRXZlbjtCaWdJbnRlZ2VyLnByb3RvdHlwZS5leHA9Ym5wRXhwO0JpZ0ludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nPWJuVG9TdHJpbmc7QmlnSW50ZWdlci5wcm90b3R5cGUubmVnYXRlPWJuTmVnYXRlO0JpZ0ludGVnZXIucHJvdG90eXBlLmFicz1ibkFicztCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG89Ym5Db21wYXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoPWJuQml0TGVuZ3RoO0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZD1ibk1vZDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3dJbnQ9Ym5Nb2RQb3dJbnQ7QmlnSW50ZWdlci5aRVJPPW5idigwKTtCaWdJbnRlZ2VyLk9ORT1uYnYoMSk7ZnVuY3Rpb24gYm5wRnJvbVJhZGl4KHMsYil7dGhpcy5mcm9tSW50KDApO2lmKGI9PW51bGwpYj0xMDt2YXIgY3M9dGhpcy5jaHVua1NpemUoYik7dmFyIGQ9TWF0aC5wb3coYixjcyksbWk9ZmFsc2Usaj0wLHc9MDtmb3IodmFyIGk9MDtpPHMubGVuZ3RoOysraSl7dmFyIHg9aW50QXQocyxpKTtpZih4PDApe2lmKHMuY2hhckF0KGkpPT0iLSImJnRoaXMuc2lnbnVtKCk9PTApbWk9dHJ1ZTtjb250aW51ZX13PWIqdyt4O2lmKCsraj49Y3Mpe3RoaXMuZE11bHRpcGx5KGQpO3RoaXMuZEFkZE9mZnNldCh3LDApO2o9MDt3PTB9fWlmKGo+MCl7dGhpcy5kTXVsdGlwbHkoTWF0aC5wb3coYixqKSk7dGhpcy5kQWRkT2Zmc2V0KHcsMCl9aWYobWkpQmlnSW50ZWdlci5aRVJPLnN1YlRvKHRoaXMsdGhpcyl9ZnVuY3Rpb24gYm5wQ2h1bmtTaXplKHIpe3JldHVybiBNYXRoLmZsb29yKE1hdGguTE4yKnRoaXMuREIvTWF0aC5sb2cocikpfWZ1bmN0aW9uIGJuU2lnTnVtKCl7aWYodGhpcy5zPDApcmV0dXJuLTE7ZWxzZSBpZih0aGlzLnQ8PTB8fHRoaXMudD09MSYmdGhpc1swXTw9MClyZXR1cm4gMDtlbHNlIHJldHVybiAxfWZ1bmN0aW9uIGJucERNdWx0aXBseShuKXt0aGlzW3RoaXMudF09dGhpcy5hbSgwLG4tMSx0aGlzLDAsMCx0aGlzLnQpOysrdGhpcy50O3RoaXMuY2xhbXAoKX1mdW5jdGlvbiBibnBEQWRkT2Zmc2V0KG4sdyl7aWYobj09MClyZXR1cm47d2hpbGUodGhpcy50PD13KXRoaXNbdGhpcy50KytdPTA7dGhpc1t3XSs9bjt3aGlsZSh0aGlzW3ddPj10aGlzLkRWKXt0aGlzW3ddLT10aGlzLkRWO2lmKCsrdz49dGhpcy50KXRoaXNbdGhpcy50KytdPTA7Kyt0aGlzW3ddfX1mdW5jdGlvbiBibnBUb1JhZGl4KGIpe2lmKGI9PW51bGwpYj0xMDtpZih0aGlzLnNpZ251bSgpPT0wfHxiPDJ8fGI+MzYpcmV0dXJuIjAiO3ZhciBjcz10aGlzLmNodW5rU2l6ZShiKTt2YXIgYT1NYXRoLnBvdyhiLGNzKTt2YXIgZD1uYnYoYSkseT1uYmkoKSx6PW5iaSgpLHI9IiI7dGhpcy5kaXZSZW1UbyhkLHkseik7d2hpbGUoeS5zaWdudW0oKT4wKXtyPShhK3ouaW50VmFsdWUoKSkudG9TdHJpbmcoYikuc3Vic3RyKDEpK3I7eS5kaXZSZW1UbyhkLHkseil9cmV0dXJuIHouaW50VmFsdWUoKS50b1N0cmluZyhiKStyfWZ1bmN0aW9uIGJuSW50VmFsdWUoKXtpZih0aGlzLnM8MCl7aWYodGhpcy50PT0xKXJldHVybiB0aGlzWzBdLXRoaXMuRFY7ZWxzZSBpZih0aGlzLnQ9PTApcmV0dXJuLTF9ZWxzZSBpZih0aGlzLnQ9PTEpcmV0dXJuIHRoaXNbMF07ZWxzZSBpZih0aGlzLnQ9PTApcmV0dXJuIDA7cmV0dXJuKHRoaXNbMV0mKDE8PDMyLXRoaXMuREIpLTEpPDx0aGlzLkRCfHRoaXNbMF19ZnVuY3Rpb24gYm5wQWRkVG8oYSxyKXt2YXIgaT0wLGM9MCxtPU1hdGgubWluKGEudCx0aGlzLnQpO3doaWxlKGk8bSl7Yys9dGhpc1tpXSthW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9aWYoYS50PHRoaXMudCl7Yys9YS5zO3doaWxlKGk8dGhpcy50KXtjKz10aGlzW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9Yys9dGhpcy5zfWVsc2V7Yys9dGhpcy5zO3doaWxlKGk8YS50KXtjKz1hW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9Yys9YS5zfXIucz1jPDA/LTE6MDtpZihjPjApcltpKytdPWM7ZWxzZSBpZihjPC0xKXJbaSsrXT10aGlzLkRWK2M7ci50PWk7ci5jbGFtcCgpfUJpZ0ludGVnZXIucHJvdG90eXBlLmZyb21SYWRpeD1ibnBGcm9tUmFkaXg7QmlnSW50ZWdlci5wcm90b3R5cGUuY2h1bmtTaXplPWJucENodW5rU2l6ZTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaWdudW09Ym5TaWdOdW07QmlnSW50ZWdlci5wcm90b3R5cGUuZE11bHRpcGx5PWJucERNdWx0aXBseTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5kQWRkT2Zmc2V0PWJucERBZGRPZmZzZXQ7QmlnSW50ZWdlci5wcm90b3R5cGUudG9SYWRpeD1ibnBUb1JhZGl4O0JpZ0ludGVnZXIucHJvdG90eXBlLmludFZhbHVlPWJuSW50VmFsdWU7QmlnSW50ZWdlci5wcm90b3R5cGUuYWRkVG89Ym5wQWRkVG87dmFyIFdyYXBwZXI9e2FiczooZnVuY3Rpb24obCxoKXt2YXIgeD1uZXcgZ29vZy5tYXRoLkxvbmcobCxoKTt2YXIgcmV0O2lmKHguaXNOZWdhdGl2ZSgpKXtyZXQ9eC5uZWdhdGUoKX1lbHNle3JldD14fUhFQVAzMlt0ZW1wRG91YmxlUHRyPj4yXT1yZXQubG93XztIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1yZXQuaGlnaF99KSxlbnN1cmVUZW1wczooZnVuY3Rpb24oKXtpZihXcmFwcGVyLmVuc3VyZWRUZW1wcylyZXR1cm47V3JhcHBlci5lbnN1cmVkVGVtcHM9dHJ1ZTtXcmFwcGVyLnR3bzMyPW5ldyBCaWdJbnRlZ2VyO1dyYXBwZXIudHdvMzIuZnJvbVN0cmluZygiNDI5NDk2NzI5NiIsMTApO1dyYXBwZXIudHdvNjQ9bmV3IEJpZ0ludGVnZXI7V3JhcHBlci50d282NC5mcm9tU3RyaW5nKCIxODQ0Njc0NDA3MzcwOTU1MTYxNiIsMTApO1dyYXBwZXIudGVtcDE9bmV3IEJpZ0ludGVnZXI7V3JhcHBlci50ZW1wMj1uZXcgQmlnSW50ZWdlcn0pLGxoMmJpZ251bTooZnVuY3Rpb24obCxoKXt2YXIgYT1uZXcgQmlnSW50ZWdlcjthLmZyb21TdHJpbmcoaC50b1N0cmluZygpLDEwKTt2YXIgYj1uZXcgQmlnSW50ZWdlcjthLm11bHRpcGx5VG8oV3JhcHBlci50d28zMixiKTt2YXIgYz1uZXcgQmlnSW50ZWdlcjtjLmZyb21TdHJpbmcobC50b1N0cmluZygpLDEwKTt2YXIgZD1uZXcgQmlnSW50ZWdlcjtjLmFkZFRvKGIsZCk7cmV0dXJuIGR9KSxzdHJpbmdpZnk6KGZ1bmN0aW9uKGwsaCx1bnNpZ25lZCl7dmFyIHJldD0obmV3IGdvb2cubWF0aC5Mb25nKGwsaCkpLnRvU3RyaW5nKCk7aWYodW5zaWduZWQmJnJldFswXT09Ii0iKXtXcmFwcGVyLmVuc3VyZVRlbXBzKCk7dmFyIGJpZ251bT1uZXcgQmlnSW50ZWdlcjtiaWdudW0uZnJvbVN0cmluZyhyZXQsMTApO3JldD1uZXcgQmlnSW50ZWdlcjtXcmFwcGVyLnR3bzY0LmFkZFRvKGJpZ251bSxyZXQpO3JldD1yZXQudG9TdHJpbmcoMTApfXJldHVybiByZXR9KSxmcm9tU3RyaW5nOihmdW5jdGlvbihzdHIsYmFzZSxtaW4sbWF4LHVuc2lnbmVkKXtXcmFwcGVyLmVuc3VyZVRlbXBzKCk7dmFyIGJpZ251bT1uZXcgQmlnSW50ZWdlcjtiaWdudW0uZnJvbVN0cmluZyhzdHIsYmFzZSk7dmFyIGJpZ21pbj1uZXcgQmlnSW50ZWdlcjtiaWdtaW4uZnJvbVN0cmluZyhtaW4sMTApO3ZhciBiaWdtYXg9bmV3IEJpZ0ludGVnZXI7YmlnbWF4LmZyb21TdHJpbmcobWF4LDEwKTtpZih1bnNpZ25lZCYmYmlnbnVtLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pPDApe3ZhciB0ZW1wPW5ldyBCaWdJbnRlZ2VyO2JpZ251bS5hZGRUbyhXcmFwcGVyLnR3bzY0LHRlbXApO2JpZ251bT10ZW1wfXZhciBlcnJvcj1mYWxzZTtpZihiaWdudW0uY29tcGFyZVRvKGJpZ21pbik8MCl7YmlnbnVtPWJpZ21pbjtlcnJvcj10cnVlfWVsc2UgaWYoYmlnbnVtLmNvbXBhcmVUbyhiaWdtYXgpPjApe2JpZ251bT1iaWdtYXg7ZXJyb3I9dHJ1ZX12YXIgcmV0PWdvb2cubWF0aC5Mb25nLmZyb21TdHJpbmcoYmlnbnVtLnRvU3RyaW5nKCkpO0hFQVAzMlt0ZW1wRG91YmxlUHRyPj4yXT1yZXQubG93XztIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1yZXQuaGlnaF87aWYoZXJyb3IpdGhyb3cicmFuZ2UgZXJyb3IifSl9O3JldHVybiBXcmFwcGVyfSkoKTtpZihtZW1vcnlJbml0aWFsaXplcil7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERXx8RU5WSVJPTk1FTlRfSVNfU0hFTEwpe3ZhciBkYXRhPU1vZHVsZVsicmVhZEJpbmFyeSJdKG1lbW9yeUluaXRpYWxpemVyKTtIRUFQVTguc2V0KGRhdGEsU1RBVElDX0JBU0UpfWVsc2V7YWRkUnVuRGVwZW5kZW5jeSgibWVtb3J5IGluaXRpYWxpemVyIik7QnJvd3Nlci5hc3luY0xvYWQobWVtb3J5SW5pdGlhbGl6ZXIsKGZ1bmN0aW9uKGRhdGEpe0hFQVBVOC5zZXQoZGF0YSxTVEFUSUNfQkFTRSk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgibWVtb3J5IGluaXRpYWxpemVyIil9KSwoZnVuY3Rpb24oZGF0YSl7dGhyb3ciY291bGQgbm90IGxvYWQgbWVtb3J5IGluaXRpYWxpemVyICIrbWVtb3J5SW5pdGlhbGl6ZXJ9KSl9fWZ1bmN0aW9uIEV4aXRTdGF0dXMoc3RhdHVzKXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiO3RoaXMubWVzc2FnZT0iUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgiK3N0YXR1cysiKSI7dGhpcy5zdGF0dXM9c3RhdHVzfUV4aXRTdGF0dXMucHJvdG90eXBlPW5ldyBFcnJvcjtFeGl0U3RhdHVzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FeGl0U3RhdHVzO3ZhciBpbml0aWFsU3RhY2tUb3A7dmFyIHByZWxvYWRTdGFydFRpbWU9bnVsbDt2YXIgY2FsbGVkTWFpbj1mYWxzZTtkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9ZnVuY3Rpb24gcnVuQ2FsbGVyKCl7aWYoIU1vZHVsZVsiY2FsbGVkUnVuIl0mJnNob3VsZFJ1bk5vdylydW4oKTtpZighTW9kdWxlWyJjYWxsZWRSdW4iXSlkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9cnVuQ2FsbGVyfTtNb2R1bGVbImNhbGxNYWluIl09TW9kdWxlLmNhbGxNYWluPWZ1bmN0aW9uIGNhbGxNYWluKGFyZ3Mpe2Fzc2VydChydW5EZXBlbmRlbmNpZXM9PTAsImNhbm5vdCBjYWxsIG1haW4gd2hlbiBhc3luYyBkZXBlbmRlbmNpZXMgcmVtYWluISAobGlzdGVuIG9uIF9fQVRNQUlOX18pIik7YXNzZXJ0KF9fQVRQUkVSVU5fXy5sZW5ndGg9PTAsImNhbm5vdCBjYWxsIG1haW4gd2hlbiBwcmVSdW4gZnVuY3Rpb25zIHJlbWFpbiB0byBiZSBjYWxsZWQiKTthcmdzPWFyZ3N8fFtdO2Vuc3VyZUluaXRSdW50aW1lKCk7dmFyIGFyZ2M9YXJncy5sZW5ndGgrMTtmdW5jdGlvbiBwYWQoKXtmb3IodmFyIGk9MDtpPDQtMTtpKyspe2FyZ3YucHVzaCgwKX19dmFyIGFyZ3Y9W2FsbG9jYXRlKGludEFycmF5RnJvbVN0cmluZygiL2Jpbi90aGlzLnByb2dyYW0iKSwiaTgiLEFMTE9DX05PUk1BTCldO3BhZCgpO2Zvcih2YXIgaT0wO2k8YXJnYy0xO2k9aSsxKXthcmd2LnB1c2goYWxsb2NhdGUoaW50QXJyYXlGcm9tU3RyaW5nKGFyZ3NbaV0pLCJpOCIsQUxMT0NfTk9STUFMKSk7cGFkKCl9YXJndi5wdXNoKDApO2FyZ3Y9YWxsb2NhdGUoYXJndiwiaTMyIixBTExPQ19OT1JNQUwpO2luaXRpYWxTdGFja1RvcD1TVEFDS1RPUDt0cnl7dmFyIHJldD1Nb2R1bGVbIl9tYWluIl0oYXJnYyxhcmd2LDApO2lmKCFNb2R1bGVbIm5vRXhpdFJ1bnRpbWUiXSl7ZXhpdChyZXQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1cyl7cmV0dXJufWVsc2UgaWYoZT09IlNpbXVsYXRlSW5maW5pdGVMb29wIil7TW9kdWxlWyJub0V4aXRSdW50aW1lIl09dHJ1ZTtyZXR1cm59ZWxzZXtpZihlJiZ0eXBlb2YgZT09PSJvYmplY3QiJiZlLnN0YWNrKU1vZHVsZS5wcmludEVycigiZXhjZXB0aW9uIHRocm93bjogIitbZSxlLnN0YWNrXSk7dGhyb3cgZX19ZmluYWxseXtjYWxsZWRNYWluPXRydWV9fTtmdW5jdGlvbiBydW4oYXJncyl7YXJncz1hcmdzfHxNb2R1bGVbImFyZ3VtZW50cyJdO2lmKHByZWxvYWRTdGFydFRpbWU9PT1udWxsKXByZWxvYWRTdGFydFRpbWU9RGF0ZS5ub3coKTtpZihydW5EZXBlbmRlbmNpZXM+MCl7TW9kdWxlLnByaW50RXJyKCJydW4oKSBjYWxsZWQsIGJ1dCBkZXBlbmRlbmNpZXMgcmVtYWluLCBzbyBub3QgcnVubmluZyIpO3JldHVybn1wcmVSdW4oKTtpZihydW5EZXBlbmRlbmNpZXM+MClyZXR1cm47aWYoTW9kdWxlWyJjYWxsZWRSdW4iXSlyZXR1cm47ZnVuY3Rpb24gZG9SdW4oKXtpZihNb2R1bGVbImNhbGxlZFJ1biJdKXJldHVybjtNb2R1bGVbImNhbGxlZFJ1biJdPXRydWU7ZW5zdXJlSW5pdFJ1bnRpbWUoKTtwcmVNYWluKCk7aWYoRU5WSVJPTk1FTlRfSVNfV0VCJiZwcmVsb2FkU3RhcnRUaW1lIT09bnVsbCl7TW9kdWxlLnByaW50RXJyKCJwcmUtbWFpbiBwcmVwIHRpbWU6ICIrKERhdGUubm93KCktcHJlbG9hZFN0YXJ0VGltZSkrIiBtcyIpfWlmKE1vZHVsZVsiX21haW4iXSYmc2hvdWxkUnVuTm93KXtNb2R1bGVbImNhbGxNYWluIl0oYXJncyl9cG9zdFJ1bigpfWlmKE1vZHVsZVsic2V0U3RhdHVzIl0pe01vZHVsZVsic2V0U3RhdHVzIl0oIlJ1bm5pbmcuLi4iKTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7TW9kdWxlWyJzZXRTdGF0dXMiXSgiIil9KSwxKTtpZighQUJPUlQpZG9SdW4oKX0pLDEpfWVsc2V7ZG9SdW4oKX19TW9kdWxlWyJydW4iXT1Nb2R1bGUucnVuPXJ1bjtmdW5jdGlvbiBleGl0KHN0YXR1cyl7QUJPUlQ9dHJ1ZTtFWElUU1RBVFVTPXN0YXR1cztTVEFDS1RPUD1pbml0aWFsU3RhY2tUb3A7ZXhpdFJ1bnRpbWUoKTt0aHJvdyBuZXcgRXhpdFN0YXR1cyhzdGF0dXMpfU1vZHVsZVsiZXhpdCJdPU1vZHVsZS5leGl0PWV4aXQ7ZnVuY3Rpb24gYWJvcnQodGV4dCl7aWYodGV4dCl7TW9kdWxlLnByaW50KHRleHQpO01vZHVsZS5wcmludEVycih0ZXh0KX1BQk9SVD10cnVlO0VYSVRTVEFUVVM9MTt2YXIgZXh0cmE9IlxuSWYgdGhpcyBhYm9ydCgpIGlzIHVuZXhwZWN0ZWQsIGJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIHdoaWNoIGNhbiBnaXZlIG1vcmUgaW5mb3JtYXRpb24uIjt0aHJvdyJhYm9ydCgpIGF0ICIrc3RhY2tUcmFjZSgpK2V4dHJhfU1vZHVsZVsiYWJvcnQiXT1Nb2R1bGUuYWJvcnQ9YWJvcnQ7dmFyIEludGVybmFsRXJyb3I9TW9kdWxlWyJJbnRlcm5hbEVycm9yIl09ZXh0ZW5kRXJyb3IoRXJyb3IsIkludGVybmFsRXJyb3IiKTt2YXIgQmluZGluZ0Vycm9yPU1vZHVsZVsiQmluZGluZ0Vycm9yIl09ZXh0ZW5kRXJyb3IoRXJyb3IsIkJpbmRpbmdFcnJvciIpO3ZhciBVbmJvdW5kVHlwZUVycm9yPU1vZHVsZVsiVW5ib3VuZFR5cGVFcnJvciJdPWV4dGVuZEVycm9yKEJpbmRpbmdFcnJvciwiVW5ib3VuZFR5cGVFcnJvciIpO3ZhciBQdXJlVmlydHVhbEVycm9yPU1vZHVsZVsiUHVyZVZpcnR1YWxFcnJvciJdPWV4dGVuZEVycm9yKEJpbmRpbmdFcnJvciwiUHVyZVZpcnR1YWxFcnJvciIpO2Z1bmN0aW9uIHRocm93SW50ZXJuYWxFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtZXNzYWdlKX1mdW5jdGlvbiB0aHJvd0JpbmRpbmdFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKG1lc3NhZ2UpfWZ1bmN0aW9uIHRocm93VW5ib3VuZFR5cGVFcnJvcihtZXNzYWdlLHR5cGVzKXt2YXIgdW5ib3VuZFR5cGVzPVtdO3ZhciBzZWVuPXt9O2Z1bmN0aW9uIHZpc2l0KHR5cGUpe2lmKHNlZW5bdHlwZV0pe3JldHVybn1pZihyZWdpc3RlcmVkVHlwZXNbdHlwZV0pe3JldHVybn1pZih0eXBlRGVwZW5kZW5jaWVzW3R5cGVdKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdLmZvckVhY2godmlzaXQpO3JldHVybn11bmJvdW5kVHlwZXMucHVzaCh0eXBlKTtzZWVuW3R5cGVdPXRydWV9dHlwZXMuZm9yRWFjaCh2aXNpdCk7dGhyb3cgbmV3IFVuYm91bmRUeXBlRXJyb3IobWVzc2FnZSsiOiAiK3VuYm91bmRUeXBlcy5tYXAoZ2V0VHlwZU5hbWUpLmpvaW4oWyIsICJdKSl9ZnVuY3Rpb24gZW5zdXJlT3ZlcmxvYWRUYWJsZShwcm90byxtZXRob2ROYW1lLGh1bWFuTmFtZSl7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7dmFyIHByZXZGdW5jPXByb3RvW21ldGhvZE5hbWVdO3Byb3RvW21ldGhvZE5hbWVdPShmdW5jdGlvbigpe2lmKCFwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlLmhhc093blByb3BlcnR5KGFyZ3VtZW50cy5sZW5ndGgpKXt0aHJvd0JpbmRpbmdFcnJvcigiRnVuY3Rpb24gJyIraHVtYW5OYW1lKyInIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyAoIithcmd1bWVudHMubGVuZ3RoKyIpIC0gZXhwZWN0cyBvbmUgb2YgKCIrcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSsiKSEiKX1yZXR1cm4gcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmd1bWVudHMubGVuZ3RoXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KTtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlPVtdO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbcHJldkZ1bmMuYXJnQ291bnRdPXByZXZGdW5jfX1mdW5jdGlvbiBleHBvc2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShuYW1lKSl7aWYodW5kZWZpbmVkPT09bnVtQXJndW1lbnRzfHx1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGVbbnVtQXJndW1lbnRzXSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBwdWJsaWMgbmFtZSAnIituYW1lKyInIHR3aWNlIil9ZW5zdXJlT3ZlcmxvYWRUYWJsZShNb2R1bGUsbmFtZSxuYW1lKTtpZihNb2R1bGUuaGFzT3duUHJvcGVydHkobnVtQXJndW1lbnRzKSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBtdWx0aXBsZSBvdmVybG9hZHMgb2YgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1bWVudHMgKCIrbnVtQXJndW1lbnRzKyIpISIpfU1vZHVsZVtuYW1lXS5vdmVybG9hZFRhYmxlW251bUFyZ3VtZW50c109dmFsdWV9ZWxzZXtNb2R1bGVbbmFtZV09dmFsdWU7aWYodW5kZWZpbmVkIT09bnVtQXJndW1lbnRzKXtNb2R1bGVbbmFtZV0ubnVtQXJndW1lbnRzPW51bUFyZ3VtZW50c319fWZ1bmN0aW9uIHJlcGxhY2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKCFNb2R1bGUuaGFzT3duUHJvcGVydHkobmFtZSkpe3Rocm93SW50ZXJuYWxFcnJvcigiUmVwbGFjaW5nIG5vbmV4aXN0YW50IHB1YmxpYyBzeW1ib2wiKX1pZih1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09bnVtQXJndW1lbnRzKXtNb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZVtudW1Bcmd1bWVudHNdPXZhbHVlfWVsc2V7TW9kdWxlW25hbWVdPXZhbHVlfX1mdW5jdGlvbiBleHRlbmRFcnJvcihiYXNlRXJyb3JUeXBlLGVycm9yTmFtZSl7dmFyIGVycm9yQ2xhc3M9Y3JlYXRlTmFtZWRGdW5jdGlvbihlcnJvck5hbWUsKGZ1bmN0aW9uKG1lc3NhZ2Upe3RoaXMubmFtZT1lcnJvck5hbWU7dGhpcy5tZXNzYWdlPW1lc3NhZ2U7dmFyIHN0YWNrPShuZXcgRXJyb3IobWVzc2FnZSkpLnN0YWNrO2lmKHN0YWNrIT09dW5kZWZpbmVkKXt0aGlzLnN0YWNrPXRoaXMudG9TdHJpbmcoKSsiXG4iK3N0YWNrLnJlcGxhY2UoL15FcnJvcig6W15cbl0qKT9cbi8sIiIpfX0pKTtlcnJvckNsYXNzLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGJhc2VFcnJvclR5cGUucHJvdG90eXBlKTtlcnJvckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lcnJvckNsYXNzO2Vycm9yQ2xhc3MucHJvdG90eXBlLnRvU3RyaW5nPShmdW5jdGlvbigpe2lmKHRoaXMubWVzc2FnZT09PXVuZGVmaW5lZCl7cmV0dXJuIHRoaXMubmFtZX1lbHNle3JldHVybiB0aGlzLm5hbWUrIjogIit0aGlzLm1lc3NhZ2V9fSk7cmV0dXJuIGVycm9yQ2xhc3N9ZnVuY3Rpb24gY3JlYXRlTmFtZWRGdW5jdGlvbihuYW1lLGJvZHkpe25hbWU9bWFrZUxlZ2FsRnVuY3Rpb25OYW1lKG5hbWUpO3JldHVybihuZXcgRnVuY3Rpb24oImJvZHkiLCJyZXR1cm4gZnVuY3Rpb24gIituYW1lKyIoKSB7XG4iKycgICAgInVzZSBzdHJpY3QiOycrIiAgICByZXR1cm4gYm9keS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuIisifTtcbiIpKShib2R5KX1mdW5jdGlvbiBfZW1iaW5kX3JlcHIodil7dmFyIHQ9dHlwZW9mIHY7aWYodD09PSJvYmplY3QifHx0PT09ImFycmF5Inx8dD09PSJmdW5jdGlvbiIpe3JldHVybiB2LnRvU3RyaW5nKCl9ZWxzZXtyZXR1cm4iIit2fX12YXIgcmVnaXN0ZXJlZEluc3RhbmNlcz17fTtmdW5jdGlvbiBnZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpe2lmKHB0cj09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoInB0ciBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpfXdoaWxlKGNsYXNzXy5iYXNlQ2xhc3Mpe3B0cj1jbGFzc18udXBjYXN0KHB0cik7Y2xhc3NfPWNsYXNzXy5iYXNlQ2xhc3N9cmV0dXJuIHB0cn1mdW5jdGlvbiByZWdpc3RlckluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIsaW5zdGFuY2Upe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO2lmKHJlZ2lzdGVyZWRJbnN0YW5jZXMuaGFzT3duUHJvcGVydHkocHRyKSl7dGhyb3dCaW5kaW5nRXJyb3IoIlRyaWVkIHRvIHJlZ2lzdGVyIHJlZ2lzdGVyZWQgaW5zdGFuY2U6ICIrcHRyKX1lbHNle3JlZ2lzdGVyZWRJbnN0YW5jZXNbcHRyXT1pbnN0YW5jZX19ZnVuY3Rpb24gdW5yZWdpc3RlckluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIpe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO2lmKHJlZ2lzdGVyZWRJbnN0YW5jZXMuaGFzT3duUHJvcGVydHkocHRyKSl7ZGVsZXRlIHJlZ2lzdGVyZWRJbnN0YW5jZXNbcHRyXX1lbHNle3Rocm93QmluZGluZ0Vycm9yKCJUcmllZCB0byB1bnJlZ2lzdGVyIHVucmVnaXN0ZXJlZCBpbnN0YW5jZTogIitwdHIpfX1mdW5jdGlvbiBnZXRJbmhlcml0ZWRJbnN0YW5jZShjbGFzc18scHRyKXtwdHI9Z2V0QmFzZXN0UG9pbnRlcihjbGFzc18scHRyKTtyZXR1cm4gcmVnaXN0ZXJlZEluc3RhbmNlc1twdHJdfWZ1bmN0aW9uIGdldEluaGVyaXRlZEluc3RhbmNlQ291bnQoKXtyZXR1cm4gT2JqZWN0LmtleXMocmVnaXN0ZXJlZEluc3RhbmNlcykubGVuZ3RofU1vZHVsZVsiZ2V0SW5oZXJpdGVkSW5zdGFuY2VDb3VudCJdPWdldEluaGVyaXRlZEluc3RhbmNlQ291bnQ7ZnVuY3Rpb24gZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcygpe3ZhciBydj1bXTtmb3IodmFyIGsgaW4gcmVnaXN0ZXJlZEluc3RhbmNlcyl7aWYocmVnaXN0ZXJlZEluc3RhbmNlcy5oYXNPd25Qcm9wZXJ0eShrKSl7cnYucHVzaChyZWdpc3RlcmVkSW5zdGFuY2VzW2tdKX19cmV0dXJuIHJ2fU1vZHVsZVsiZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcyJdPWdldExpdmVJbmhlcml0ZWRJbnN0YW5jZXM7dmFyIHJlZ2lzdGVyZWRUeXBlcz17fTt2YXIgYXdhaXRpbmdEZXBlbmRlbmNpZXM9e307dmFyIHR5cGVEZXBlbmRlbmNpZXM9e307dmFyIHJlZ2lzdGVyZWRQb2ludGVycz17fTtmdW5jdGlvbiByZWdpc3RlclR5cGUocmF3VHlwZSxyZWdpc3RlcmVkSW5zdGFuY2Upe2lmKCEoImFyZ1BhY2tBZHZhbmNlImluIHJlZ2lzdGVyZWRJbnN0YW5jZSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2UiKX12YXIgbmFtZT1yZWdpc3RlcmVkSW5zdGFuY2UubmFtZTtpZighcmF3VHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoJ3R5cGUgIicrbmFtZSsnIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyJyl9aWYocmVnaXN0ZXJlZFR5cGVzLmhhc093blByb3BlcnR5KHJhd1R5cGUpKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIHR5cGUgJyIrbmFtZSsiJyB0d2ljZSIpfXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXT1yZWdpc3RlcmVkSW5zdGFuY2U7ZGVsZXRlIHR5cGVEZXBlbmRlbmNpZXNbcmF3VHlwZV07aWYoYXdhaXRpbmdEZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkocmF3VHlwZSkpe3ZhciBjYWxsYmFja3M9YXdhaXRpbmdEZXBlbmRlbmNpZXNbcmF3VHlwZV07ZGVsZXRlIGF3YWl0aW5nRGVwZW5kZW5jaWVzW3Jhd1R5cGVdO2NhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihjYil7Y2IoKX0pKX19ZnVuY3Rpb24gd2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQobXlUeXBlcyxkZXBlbmRlbnRUeXBlcyxnZXRUeXBlQ29udmVydGVycyl7bXlUeXBlcy5mb3JFYWNoKChmdW5jdGlvbih0eXBlKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdPWRlcGVuZGVudFR5cGVzfSkpO2Z1bmN0aW9uIG9uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpe3ZhciBteVR5cGVDb252ZXJ0ZXJzPWdldFR5cGVDb252ZXJ0ZXJzKHR5cGVDb252ZXJ0ZXJzKTtpZihteVR5cGVDb252ZXJ0ZXJzLmxlbmd0aCE9PW15VHlwZXMubGVuZ3RoKXt0aHJvd0ludGVybmFsRXJyb3IoIk1pc21hdGNoZWQgdHlwZSBjb252ZXJ0ZXIgY291bnQiKX1mb3IodmFyIGk9MDtpPG15VHlwZXMubGVuZ3RoOysraSl7cmVnaXN0ZXJUeXBlKG15VHlwZXNbaV0sbXlUeXBlQ29udmVydGVyc1tpXSl9fXZhciB0eXBlQ29udmVydGVycz1uZXcgQXJyYXkoZGVwZW5kZW50VHlwZXMubGVuZ3RoKTt2YXIgdW5yZWdpc3RlcmVkVHlwZXM9W107dmFyIHJlZ2lzdGVyZWQ9MDtkZXBlbmRlbnRUeXBlcy5mb3JFYWNoKChmdW5jdGlvbihkdCxpKXtpZihyZWdpc3RlcmVkVHlwZXMuaGFzT3duUHJvcGVydHkoZHQpKXt0eXBlQ29udmVydGVyc1tpXT1yZWdpc3RlcmVkVHlwZXNbZHRdfWVsc2V7dW5yZWdpc3RlcmVkVHlwZXMucHVzaChkdCk7aWYoIWF3YWl0aW5nRGVwZW5kZW5jaWVzLmhhc093blByb3BlcnR5KGR0KSl7YXdhaXRpbmdEZXBlbmRlbmNpZXNbZHRdPVtdfWF3YWl0aW5nRGVwZW5kZW5jaWVzW2R0XS5wdXNoKChmdW5jdGlvbigpe3R5cGVDb252ZXJ0ZXJzW2ldPXJlZ2lzdGVyZWRUeXBlc1tkdF07KytyZWdpc3RlcmVkO2lmKHJlZ2lzdGVyZWQ9PT11bnJlZ2lzdGVyZWRUeXBlcy5sZW5ndGgpe29uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpfX0pKX19KSk7aWYoMD09PXVucmVnaXN0ZXJlZFR5cGVzLmxlbmd0aCl7b25Db21wbGV0ZSh0eXBlQ29udmVydGVycyl9fXZhciBfX2NoYXJDb2Rlcz0oZnVuY3Rpb24oKXt2YXIgY29kZXM9bmV3IEFycmF5KDI1Nik7Zm9yKHZhciBpPTA7aTwyNTY7KytpKXtjb2Rlc1tpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpfXJldHVybiBjb2Rlc30pKCk7ZnVuY3Rpb24gcmVhZExhdGluMVN0cmluZyhwdHIpe3ZhciByZXQ9IiI7dmFyIGM9cHRyO3doaWxlKEhFQVBVOFtjXSl7cmV0Kz1fX2NoYXJDb2Rlc1tIRUFQVThbYysrXV19cmV0dXJuIHJldH1mdW5jdGlvbiBnZXRUeXBlTmFtZSh0eXBlKXt2YXIgcHRyPV9fX2dldFR5cGVOYW1lKHR5cGUpO3ZhciBydj1yZWFkTGF0aW4xU3RyaW5nKHB0cik7X2ZyZWUocHRyKTtyZXR1cm4gcnZ9ZnVuY3Rpb24gaGVhcDMyVmVjdG9yVG9BcnJheShjb3VudCxmaXJzdEVsZW1lbnQpe3ZhciBhcnJheT1bXTtmb3IodmFyIGk9MDtpPGNvdW50O2krKyl7YXJyYXkucHVzaChIRUFQMzJbKGZpcnN0RWxlbWVudD4+MikraV0pfXJldHVybiBhcnJheX1mdW5jdGlvbiByZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmF3VHlwZSxodW1hbk5hbWUpe3ZhciBpbXBsPXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXTtpZih1bmRlZmluZWQ9PT1pbXBsKXt0aHJvd0JpbmRpbmdFcnJvcihodW1hbk5hbWUrIiBoYXMgdW5rbm93biB0eXBlICIrZ2V0VHlwZU5hbWUocmF3VHlwZSkpfXJldHVybiBpbXBsfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3ZvaWQocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiYXJnUGFja0FkdmFuY2UiOjAsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKCl7cmV0dXJuIHVuZGVmaW5lZH0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7cmV0dXJuIHVuZGVmaW5lZH0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfYm9vbChyYXdUeXBlLG5hbWUsc2l6ZSx0cnVlVmFsdWUsZmFsc2VWYWx1ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHd0KXtyZXR1cm4hIXd0fSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyxvKXtyZXR1cm4gbz90cnVlVmFsdWU6ZmFsc2VWYWx1ZX0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcDtpZihzaXplPT09MSl7aGVhcD1IRUFQOH1lbHNlIGlmKHNpemU9PT0yKXtoZWFwPUhFQVAxNn1lbHNlIGlmKHNpemU9PT00KXtoZWFwPUhFQVAzMn1lbHNle3Rocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gYm9vbGVhbiB0eXBlIHNpemU6ICIrbmFtZSl9cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+c2hpZnRdKX0pLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gZ2V0U2hpZnRGcm9tU2l6ZShzaXplKXtzd2l0Y2goc2l6ZSl7Y2FzZSAxOnJldHVybiAwO2Nhc2UgMjpyZXR1cm4gMTtjYXNlIDQ6cmV0dXJuIDI7Y2FzZSA4OnJldHVybiAzO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biB0eXBlIHNpemU6ICIrc2l6ZSl9fWZ1bmN0aW9uIGludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LHNpZ25lZCl7c3dpdGNoKHNoaWZ0KXtjYXNlIDA6cmV0dXJuKGZ1bmN0aW9uKHBvaW50ZXIpe3ZhciBoZWFwPXNpZ25lZD9IRUFQODpIRUFQVTg7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcl0pfSk7Y2FzZSAxOnJldHVybihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcD1zaWduZWQ/SEVBUDE2OkhFQVBVMTY7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+MV0pfSk7Y2FzZSAyOnJldHVybihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcD1zaWduZWQ/SEVBUDMyOkhFQVBVMzI7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+Ml0pfSk7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGludGVnZXIgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gZmxvYXRSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0KXtzd2l0Y2goc2hpZnQpe2Nhc2UgMjpyZXR1cm4oZnVuY3Rpb24ocG9pbnRlcil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKEhFQVBGMzJbcG9pbnRlcj4+Ml0pfSk7Y2FzZSAzOnJldHVybihmdW5jdGlvbihwb2ludGVyKXtyZXR1cm4gdGhpc1siZnJvbVdpcmVUeXBlIl0oSEVBUEY2NFtwb2ludGVyPj4zXSl9KTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZmxvYXQgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcihwcmltaXRpdmVUeXBlLG5hbWUsc2l6ZSxtaW5SYW5nZSxtYXhSYW5nZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO2lmKG1heFJhbmdlPT09LTEpe21heFJhbmdlPTQyOTQ5NjcyOTV9dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7cmVnaXN0ZXJUeXBlKHByaW1pdGl2ZVR5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3JldHVybiB2YWx1ZX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHR5cGVvZiB2YWx1ZSE9PSJudW1iZXIiJiZ0eXBlb2YgdmFsdWUhPT0iYm9vbGVhbiIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0ICInK19lbWJpbmRfcmVwcih2YWx1ZSkrJyIgdG8gJyt0aGlzLm5hbWUpfWlmKHZhbHVlPG1pblJhbmdlfHx2YWx1ZT5tYXhSYW5nZSl7dGhyb3cgbmV3IFR5cGVFcnJvcignUGFzc2luZyBhIG51bWJlciAiJytfZW1iaW5kX3JlcHIodmFsdWUpKyciIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgIicrbmFtZSsnIiwgd2hpY2ggaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgWycrbWluUmFuZ2UrIiwgIittYXhSYW5nZSsiXSEiKX1yZXR1cm4gdmFsdWV8MH0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LG1pblJhbmdlIT09MCksZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdChyYXdUeXBlLG5hbWUsc2l6ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdmFsdWV9KSwidG9XaXJlVHlwZSI6KGZ1bmN0aW9uKGRlc3RydWN0b3JzLHZhbHVlKXtpZih0eXBlb2YgdmFsdWUhPT0ibnVtYmVyIiYmdHlwZW9mIHZhbHVlIT09ImJvb2xlYW4iKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCAiJytfZW1iaW5kX3JlcHIodmFsdWUpKyciIHRvICcrdGhpcy5uYW1lKX1yZXR1cm4gdmFsdWV9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpmbG9hdFJlYWRWYWx1ZUZyb21Qb2ludGVyKG5hbWUsc2hpZnQpLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gc2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXIocG9pbnRlcil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKEhFQVBVMzJbcG9pbnRlcj4+Ml0pfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF9zdHJpbmcocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIGE9bmV3IEFycmF5KGxlbmd0aCk7Zm9yKHZhciBpPTA7aTxsZW5ndGg7KytpKXthW2ldPVN0cmluZy5mcm9tQ2hhckNvZGUoSEVBUFU4W3ZhbHVlKzQraV0pfV9mcmVlKHZhbHVlKTtyZXR1cm4gYS5qb2luKCIiKX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3ZhbHVlPW5ldyBVaW50OEFycmF5KHZhbHVlKX1mdW5jdGlvbiBnZXRUQUVsZW1lbnQodGEsaW5kZXgpe3JldHVybiB0YVtpbmRleF19ZnVuY3Rpb24gZ2V0U3RyaW5nRWxlbWVudChzdHJpbmcsaW5kZXgpe3JldHVybiBzdHJpbmcuY2hhckNvZGVBdChpbmRleCl9dmFyIGdldEVsZW1lbnQ7aWYodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtnZXRFbGVtZW50PWdldFRBRWxlbWVudH1lbHNlIGlmKHZhbHVlIGluc3RhbmNlb2YgSW50OEFycmF5KXtnZXRFbGVtZW50PWdldFRBRWxlbWVudH1lbHNlIGlmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtnZXRFbGVtZW50PWdldFN0cmluZ0VsZW1lbnR9ZWxzZXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBzdGQ6OnN0cmluZyIpfXZhciBsZW5ndGg9dmFsdWUubGVuZ3RoO3ZhciBwdHI9X21hbGxvYyg0K2xlbmd0aCk7SEVBUFUzMltwdHI+PjJdPWxlbmd0aDtmb3IodmFyIGk9MDtpPGxlbmd0aDsrK2kpe3ZhciBjaGFyQ29kZT1nZXRFbGVtZW50KHZhbHVlLGkpO2lmKGNoYXJDb2RlPjI1NSl7X2ZyZWUocHRyKTt0aHJvd0JpbmRpbmdFcnJvcigiU3RyaW5nIGhhcyBVVEYtMTYgY29kZSB1bml0cyB0aGF0IGRvIG5vdCBmaXQgaW4gOCBiaXRzIil9SEVBUFU4W3B0cis0K2ldPWNoYXJDb2RlfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246KGZ1bmN0aW9uKHB0cil7X2ZyZWUocHRyKX0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmcocmF3VHlwZSxjaGFyU2l6ZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7dmFyIEhFQVAsc2hpZnQ7aWYoY2hhclNpemU9PT0yKXtIRUFQPUhFQVBVMTY7c2hpZnQ9MX1lbHNlIGlmKGNoYXJTaXplPT09NCl7SEVBUD1IRUFQVTMyO3NoaWZ0PTJ9cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIGE9bmV3IEFycmF5KGxlbmd0aCk7dmFyIHN0YXJ0PXZhbHVlKzQ+PnNoaWZ0O2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7YVtpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKEhFQVBbc3RhcnQraV0pfV9mcmVlKHZhbHVlKTtyZXR1cm4gYS5qb2luKCIiKX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe3ZhciBsZW5ndGg9dmFsdWUubGVuZ3RoO3ZhciBwdHI9X21hbGxvYyg0K2xlbmd0aCpjaGFyU2l6ZSk7SEVBUFUzMltwdHI+PjJdPWxlbmd0aDt2YXIgc3RhcnQ9cHRyKzQ+PnNoaWZ0O2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7SEVBUFtzdGFydCtpXT12YWx1ZS5jaGFyQ29kZUF0KGkpfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246KGZ1bmN0aW9uKHB0cil7X2ZyZWUocHRyKX0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZW12YWwocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24oaGFuZGxlKXt2YXIgcnY9X2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnZhbHVlO19fZW12YWxfZGVjcmVmKGhhbmRsZSk7cmV0dXJuIHJ2fSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyx2YWx1ZSl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodmFsdWUpfSksImFyZ1BhY2tBZHZhbmNlIjo4LCJyZWFkVmFsdWVGcm9tUG9pbnRlciI6c2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXIsZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyhyYXdUeXBlLG5hbWUpe3ZhciB0eXBlTWFwcGluZz1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXldO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyZWdpc3RlclR5cGUocmF3VHlwZSx7bmFtZTpuYW1lLCJmcm9tV2lyZVR5cGUiOihmdW5jdGlvbihoYW5kbGUpe3ZhciB0eXBlPUhFQVBVMzJbaGFuZGxlPj4yXTt2YXIgc2l6ZT1IRUFQVTMyWyhoYW5kbGU+PjIpKzFdO3ZhciBkYXRhPUhFQVBVMzJbKGhhbmRsZT4+MikrMl07dmFyIFRBPXR5cGVNYXBwaW5nW3R5cGVdO3JldHVybiBuZXcgVEEoSEVBUDguYnVmZmVyLGRhdGEsc2l6ZSl9KSwiYXJnUGFja0FkdmFuY2UiOjE2LCJyZWFkVmFsdWVGcm9tUG9pbnRlciI6KGZ1bmN0aW9uKHB0cil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKHB0cil9KX0pfWZ1bmN0aW9uIHJ1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKXt3aGlsZShkZXN0cnVjdG9ycy5sZW5ndGgpe3ZhciBwdHI9ZGVzdHJ1Y3RvcnMucG9wKCk7dmFyIGRlbD1kZXN0cnVjdG9ycy5wb3AoKTtkZWwocHRyKX19ZnVuY3Rpb24gbmV3Xyhjb25zdHJ1Y3Rvcixhcmd1bWVudExpc3Qpe2lmKCEoY29uc3RydWN0b3IgaW5zdGFuY2VvZiBGdW5jdGlvbikpe3Rocm93IG5ldyBUeXBlRXJyb3IoIm5ld18gY2FsbGVkIHdpdGggY29uc3RydWN0b3IgdHlwZSAiK3R5cGVvZiBjb25zdHJ1Y3RvcisiIHdoaWNoIGlzIG5vdCBhIGZ1bmN0aW9uIil9dmFyIGR1bW15PWNyZWF0ZU5hbWVkRnVuY3Rpb24oY29uc3RydWN0b3IubmFtZSwoZnVuY3Rpb24oKXt9KSk7ZHVtbXkucHJvdG90eXBlPWNvbnN0cnVjdG9yLnByb3RvdHlwZTt2YXIgb2JqPW5ldyBkdW1teTt2YXIgcj1jb25zdHJ1Y3Rvci5hcHBseShvYmosYXJndW1lbnRMaXN0KTtyZXR1cm4gciBpbnN0YW5jZW9mIE9iamVjdD9yOm9ian1mdW5jdGlvbiBjcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsY2xhc3NUeXBlLGNwcEludm9rZXJGdW5jLGNwcFRhcmdldEZ1bmMpe3ZhciBhcmdDb3VudD1hcmdUeXBlcy5sZW5ndGg7aWYoYXJnQ291bnQ8Mil7dGhyb3dCaW5kaW5nRXJyb3IoImFyZ1R5cGVzIGFycmF5IHNpemUgbWlzbWF0Y2ghIE11c3QgYXQgbGVhc3QgZ2V0IHJldHVybiB2YWx1ZSBhbmQgJ3RoaXMnIHR5cGVzISIpfXZhciBpc0NsYXNzTWV0aG9kRnVuYz1hcmdUeXBlc1sxXSE9PW51bGwmJmNsYXNzVHlwZSE9PW51bGw7dmFyIGFyZ3NMaXN0PSIiO3ZhciBhcmdzTGlzdFdpcmVkPSIiO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2FyZ3NMaXN0Kz0oaSE9PTA/IiwgIjoiIikrImFyZyIraTthcmdzTGlzdFdpcmVkKz0oaSE9PTA/IiwgIjoiIikrImFyZyIraSsiV2lyZWQifXZhciBpbnZva2VyRm5Cb2R5PSJyZXR1cm4gZnVuY3Rpb24gIittYWtlTGVnYWxGdW5jdGlvbk5hbWUoaHVtYW5OYW1lKSsiKCIrYXJnc0xpc3QrIikge1xuIisiaWYgKGFyZ3VtZW50cy5sZW5ndGggIT09ICIrKGFyZ0NvdW50LTIpKyIpIHtcbiIrInRocm93QmluZGluZ0Vycm9yKCdmdW5jdGlvbiAiK2h1bWFuTmFtZSsiIGNhbGxlZCB3aXRoICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBhcmd1bWVudHMsIGV4cGVjdGVkICIrKGFyZ0NvdW50LTIpKyIgYXJncyEnKTtcbiIrIn1cbiI7dmFyIG5lZWRzRGVzdHJ1Y3RvclN0YWNrPWZhbHNlO2Zvcih2YXIgaT0xO2k8YXJnVHlwZXMubGVuZ3RoOysraSl7aWYoYXJnVHlwZXNbaV0hPT1udWxsJiZhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb249PT11bmRlZmluZWQpe25lZWRzRGVzdHJ1Y3RvclN0YWNrPXRydWU7YnJlYWt9fWlmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0idmFyIGRlc3RydWN0b3JzID0gW107XG4ifXZhciBkdG9yU3RhY2s9bmVlZHNEZXN0cnVjdG9yU3RhY2s/ImRlc3RydWN0b3JzIjoibnVsbCI7dmFyIGFyZ3MxPVsidGhyb3dCaW5kaW5nRXJyb3IiLCJpbnZva2VyIiwiZm4iLCJydW5EZXN0cnVjdG9ycyIsInJldFR5cGUiLCJjbGFzc1BhcmFtIl07dmFyIGFyZ3MyPVt0aHJvd0JpbmRpbmdFcnJvcixjcHBJbnZva2VyRnVuYyxjcHBUYXJnZXRGdW5jLHJ1bkRlc3RydWN0b3JzLGFyZ1R5cGVzWzBdLGFyZ1R5cGVzWzFdXTtpZihpc0NsYXNzTWV0aG9kRnVuYyl7aW52b2tlckZuQm9keSs9InZhciB0aGlzV2lyZWQgPSBjbGFzc1BhcmFtLnRvV2lyZVR5cGUoIitkdG9yU3RhY2srIiwgdGhpcyk7XG4ifWZvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2ludm9rZXJGbkJvZHkrPSJ2YXIgYXJnIitpKyJXaXJlZCA9IGFyZ1R5cGUiK2krIi50b1dpcmVUeXBlKCIrZHRvclN0YWNrKyIsIGFyZyIraSsiKTsgLy8gIithcmdUeXBlc1tpKzJdLm5hbWUrIlxuIjthcmdzMS5wdXNoKCJhcmdUeXBlIitpKTthcmdzMi5wdXNoKGFyZ1R5cGVzW2krMl0pfWlmKGlzQ2xhc3NNZXRob2RGdW5jKXthcmdzTGlzdFdpcmVkPSJ0aGlzV2lyZWQiKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWR9dmFyIHJldHVybnM9YXJnVHlwZXNbMF0ubmFtZSE9PSJ2b2lkIjtpbnZva2VyRm5Cb2R5Kz0ocmV0dXJucz8idmFyIHJ2ID0gIjoiIikrImludm9rZXIoZm4iKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWQrIik7XG4iO2lmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0icnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpO1xuIn1lbHNle2Zvcih2YXIgaT1pc0NsYXNzTWV0aG9kRnVuYz8xOjI7aTxhcmdUeXBlcy5sZW5ndGg7KytpKXt2YXIgcGFyYW1OYW1lPWk9PT0xPyJ0aGlzV2lyZWQiOiJhcmciKyhpLTIpKyJXaXJlZCI7aWYoYXJnVHlwZXNbaV0uZGVzdHJ1Y3RvckZ1bmN0aW9uIT09bnVsbCl7aW52b2tlckZuQm9keSs9cGFyYW1OYW1lKyJfZHRvcigiK3BhcmFtTmFtZSsiKTsgLy8gIithcmdUeXBlc1tpXS5uYW1lKyJcbiI7YXJnczEucHVzaChwYXJhbU5hbWUrIl9kdG9yIik7YXJnczIucHVzaChhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb24pfX19aWYocmV0dXJucyl7aW52b2tlckZuQm9keSs9InJldHVybiByZXRUeXBlLmZyb21XaXJlVHlwZShydik7XG4ifWludm9rZXJGbkJvZHkrPSJ9XG4iO2FyZ3MxLnB1c2goaW52b2tlckZuQm9keSk7dmFyIGludm9rZXJGdW5jdGlvbj1uZXdfKEZ1bmN0aW9uLGFyZ3MxKS5hcHBseShudWxsLGFyZ3MyKTtyZXR1cm4gaW52b2tlckZ1bmN0aW9ufWZ1bmN0aW9uIHJlcXVpcmVGdW5jdGlvbihzaWduYXR1cmUscmF3RnVuY3Rpb24pe3NpZ25hdHVyZT1yZWFkTGF0aW4xU3RyaW5nKHNpZ25hdHVyZSk7dmFyIGZwO2lmKHR5cGVvZiBGVU5DVElPTl9UQUJMRT09PSJ1bmRlZmluZWQiKXt2YXIgZGM9YXNtWyJkeW5DYWxsXyIrc2lnbmF0dXJlXTtpZihkYz09PXVuZGVmaW5lZCl7ZGM9YXNtWyJkeW5DYWxsXyIrc2lnbmF0dXJlLnJlcGxhY2UoL2YvZywiZCIpXTtpZihkYz09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoIk5vIGR5bkNhbGwgaW52b2tlciBmb3Igc2lnbmF0dXJlOiAiK3NpZ25hdHVyZSl9fWZwPWRjLmJpbmQodW5kZWZpbmVkLHJhd0Z1bmN0aW9uKX1lbHNle2ZwPUZVTkNUSU9OX1RBQkxFW3Jhd0Z1bmN0aW9uXX1pZih0eXBlb2YgZnAhPT0iZnVuY3Rpb24iKXt0aHJvd0JpbmRpbmdFcnJvcigidW5rbm93biBmdW5jdGlvbiBwb2ludGVyIHdpdGggc2lnbmF0dXJlICIrc2lnbmF0dXJlKyI6ICIrcmF3RnVuY3Rpb24pfXJldHVybiBmcH1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mdW5jdGlvbihuYW1lLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixzaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIGFyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmF3SW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oc2lnbmF0dXJlLHJhd0ludm9rZXIpO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLChmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIituYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLGFyZ1R5cGVzKX0pLGFyZ0NvdW50LTEpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLGFyZ1R5cGVzLChmdW5jdGlvbihhcmdUeXBlcyl7dmFyIGludm9rZXJBcmdzQXJyYXk9W2FyZ1R5cGVzWzBdLG51bGxdLmNvbmNhdChhcmdUeXBlcy5zbGljZSgxKSk7cmVwbGFjZVB1YmxpY1N5bWJvbChuYW1lLGNyYWZ0SW52b2tlckZ1bmN0aW9uKG5hbWUsaW52b2tlckFyZ3NBcnJheSxudWxsLHJhd0ludm9rZXIsZm4pLGFyZ0NvdW50LTEpO3JldHVybltdfSkpfXZhciB0dXBsZVJlZ2lzdHJhdGlvbnM9e307ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdmFsdWVfYXJyYXkocmF3VHlwZSxuYW1lLGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yLGRlc3RydWN0b3JTaWduYXR1cmUscmF3RGVzdHJ1Y3Rvcil7dHVwbGVSZWdpc3RyYXRpb25zW3Jhd1R5cGVdPXtuYW1lOnJlYWRMYXRpbjFTdHJpbmcobmFtZSkscmF3Q29uc3RydWN0b3I6cmVxdWlyZUZ1bmN0aW9uKGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yKSxyYXdEZXN0cnVjdG9yOnJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpLGVsZW1lbnRzOltdfX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl92YWx1ZV9hcnJheV9lbGVtZW50KHJhd1R1cGxlVHlwZSxnZXR0ZXJSZXR1cm5UeXBlLGdldHRlclNpZ25hdHVyZSxnZXR0ZXIsZ2V0dGVyQ29udGV4dCxzZXR0ZXJBcmd1bWVudFR5cGUsc2V0dGVyU2lnbmF0dXJlLHNldHRlcixzZXR0ZXJDb250ZXh0KXt0dXBsZVJlZ2lzdHJhdGlvbnNbcmF3VHVwbGVUeXBlXS5lbGVtZW50cy5wdXNoKHtnZXR0ZXJSZXR1cm5UeXBlOmdldHRlclJldHVyblR5cGUsZ2V0dGVyOnJlcXVpcmVGdW5jdGlvbihnZXR0ZXJTaWduYXR1cmUsZ2V0dGVyKSxnZXR0ZXJDb250ZXh0OmdldHRlckNvbnRleHQsc2V0dGVyQXJndW1lbnRUeXBlOnNldHRlckFyZ3VtZW50VHlwZSxzZXR0ZXI6cmVxdWlyZUZ1bmN0aW9uKHNldHRlclNpZ25hdHVyZSxzZXR0ZXIpLHNldHRlckNvbnRleHQ6c2V0dGVyQ29udGV4dH0pfWZ1bmN0aW9uIF9fZW1iaW5kX2ZpbmFsaXplX3ZhbHVlX2FycmF5KHJhd1R1cGxlVHlwZSl7dmFyIHJlZz10dXBsZVJlZ2lzdHJhdGlvbnNbcmF3VHVwbGVUeXBlXTtkZWxldGUgdHVwbGVSZWdpc3RyYXRpb25zW3Jhd1R1cGxlVHlwZV07dmFyIGVsZW1lbnRzPXJlZy5lbGVtZW50czt2YXIgZWxlbWVudHNMZW5ndGg9ZWxlbWVudHMubGVuZ3RoO3ZhciBlbGVtZW50VHlwZXM9ZWxlbWVudHMubWFwKChmdW5jdGlvbihlbHQpe3JldHVybiBlbHQuZ2V0dGVyUmV0dXJuVHlwZX0pKS5jb25jYXQoZWxlbWVudHMubWFwKChmdW5jdGlvbihlbHQpe3JldHVybiBlbHQuc2V0dGVyQXJndW1lbnRUeXBlfSkpKTt2YXIgcmF3Q29uc3RydWN0b3I9cmVnLnJhd0NvbnN0cnVjdG9yO3ZhciByYXdEZXN0cnVjdG9yPXJlZy5yYXdEZXN0cnVjdG9yO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtyYXdUdXBsZVR5cGVdLGVsZW1lbnRUeXBlcywoZnVuY3Rpb24oZWxlbWVudFR5cGVzKXtlbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlbHQsaSl7dmFyIGdldHRlclJldHVyblR5cGU9ZWxlbWVudFR5cGVzW2ldO3ZhciBnZXR0ZXI9ZWx0LmdldHRlcjt2YXIgZ2V0dGVyQ29udGV4dD1lbHQuZ2V0dGVyQ29udGV4dDt2YXIgc2V0dGVyQXJndW1lbnRUeXBlPWVsZW1lbnRUeXBlc1tpK2VsZW1lbnRzTGVuZ3RoXTt2YXIgc2V0dGVyPWVsdC5zZXR0ZXI7dmFyIHNldHRlckNvbnRleHQ9ZWx0LnNldHRlckNvbnRleHQ7ZWx0LnJlYWQ9KGZ1bmN0aW9uKHB0cil7cmV0dXJuIGdldHRlclJldHVyblR5cGVbImZyb21XaXJlVHlwZSJdKGdldHRlcihnZXR0ZXJDb250ZXh0LHB0cikpfSk7ZWx0LndyaXRlPShmdW5jdGlvbihwdHIsbyl7dmFyIGRlc3RydWN0b3JzPVtdO3NldHRlcihzZXR0ZXJDb250ZXh0LHB0cixzZXR0ZXJBcmd1bWVudFR5cGVbInRvV2lyZVR5cGUiXShkZXN0cnVjdG9ycyxvKSk7cnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpfSl9KSk7cmV0dXJuW3tuYW1lOnJlZy5uYW1lLCJmcm9tV2lyZVR5cGUiOihmdW5jdGlvbihwdHIpe3ZhciBydj1uZXcgQXJyYXkoZWxlbWVudHNMZW5ndGgpO2Zvcih2YXIgaT0wO2k8ZWxlbWVudHNMZW5ndGg7KytpKXtydltpXT1lbGVtZW50c1tpXS5yZWFkKHB0cil9cmF3RGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7aWYoZWxlbWVudHNMZW5ndGghPT1vLmxlbmd0aCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW5jb3JyZWN0IG51bWJlciBvZiB0dXBsZSBlbGVtZW50cyBmb3IgIityZWcubmFtZSsiOiBleHBlY3RlZD0iK2VsZW1lbnRzTGVuZ3RoKyIsIGFjdHVhbD0iK28ubGVuZ3RoKX12YXIgcHRyPXJhd0NvbnN0cnVjdG9yKCk7Zm9yKHZhciBpPTA7aTxlbGVtZW50c0xlbmd0aDsrK2kpe2VsZW1lbnRzW2ldLndyaXRlKHB0cixvW2ldKX1pZihkZXN0cnVjdG9ycyE9PW51bGwpe2Rlc3RydWN0b3JzLnB1c2gocmF3RGVzdHJ1Y3RvcixwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246cmF3RGVzdHJ1Y3Rvcn1dfSkpfXZhciBzdHJ1Y3RSZWdpc3RyYXRpb25zPXt9O2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3ZhbHVlX29iamVjdChyYXdUeXBlLG5hbWUsY29uc3RydWN0b3JTaWduYXR1cmUscmF3Q29uc3RydWN0b3IsZGVzdHJ1Y3RvclNpZ25hdHVyZSxyYXdEZXN0cnVjdG9yKXtzdHJ1Y3RSZWdpc3RyYXRpb25zW3Jhd1R5cGVdPXtuYW1lOnJlYWRMYXRpbjFTdHJpbmcobmFtZSkscmF3Q29uc3RydWN0b3I6cmVxdWlyZUZ1bmN0aW9uKGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yKSxyYXdEZXN0cnVjdG9yOnJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpLGZpZWxkczpbXX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdmFsdWVfb2JqZWN0X2ZpZWxkKHN0cnVjdFR5cGUsZmllbGROYW1lLGdldHRlclJldHVyblR5cGUsZ2V0dGVyU2lnbmF0dXJlLGdldHRlcixnZXR0ZXJDb250ZXh0LHNldHRlckFyZ3VtZW50VHlwZSxzZXR0ZXJTaWduYXR1cmUsc2V0dGVyLHNldHRlckNvbnRleHQpe3N0cnVjdFJlZ2lzdHJhdGlvbnNbc3RydWN0VHlwZV0uZmllbGRzLnB1c2goe2ZpZWxkTmFtZTpyZWFkTGF0aW4xU3RyaW5nKGZpZWxkTmFtZSksZ2V0dGVyUmV0dXJuVHlwZTpnZXR0ZXJSZXR1cm5UeXBlLGdldHRlcjpyZXF1aXJlRnVuY3Rpb24oZ2V0dGVyU2lnbmF0dXJlLGdldHRlciksZ2V0dGVyQ29udGV4dDpnZXR0ZXJDb250ZXh0LHNldHRlckFyZ3VtZW50VHlwZTpzZXR0ZXJBcmd1bWVudFR5cGUsc2V0dGVyOnJlcXVpcmVGdW5jdGlvbihzZXR0ZXJTaWduYXR1cmUsc2V0dGVyKSxzZXR0ZXJDb250ZXh0OnNldHRlckNvbnRleHR9KX1mdW5jdGlvbiBfX2VtYmluZF9maW5hbGl6ZV92YWx1ZV9vYmplY3Qoc3RydWN0VHlwZSl7dmFyIHJlZz1zdHJ1Y3RSZWdpc3RyYXRpb25zW3N0cnVjdFR5cGVdO2RlbGV0ZSBzdHJ1Y3RSZWdpc3RyYXRpb25zW3N0cnVjdFR5cGVdO3ZhciByYXdDb25zdHJ1Y3Rvcj1yZWcucmF3Q29uc3RydWN0b3I7dmFyIHJhd0Rlc3RydWN0b3I9cmVnLnJhd0Rlc3RydWN0b3I7dmFyIGZpZWxkUmVjb3Jkcz1yZWcuZmllbGRzO3ZhciBmaWVsZFR5cGVzPWZpZWxkUmVjb3Jkcy5tYXAoKGZ1bmN0aW9uKGZpZWxkKXtyZXR1cm4gZmllbGQuZ2V0dGVyUmV0dXJuVHlwZX0pKS5jb25jYXQoZmllbGRSZWNvcmRzLm1hcCgoZnVuY3Rpb24oZmllbGQpe3JldHVybiBmaWVsZC5zZXR0ZXJBcmd1bWVudFR5cGV9KSkpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtzdHJ1Y3RUeXBlXSxmaWVsZFR5cGVzLChmdW5jdGlvbihmaWVsZFR5cGVzKXt2YXIgZmllbGRzPXt9O2ZpZWxkUmVjb3Jkcy5mb3JFYWNoKChmdW5jdGlvbihmaWVsZCxpKXt2YXIgZmllbGROYW1lPWZpZWxkLmZpZWxkTmFtZTt2YXIgZ2V0dGVyUmV0dXJuVHlwZT1maWVsZFR5cGVzW2ldO3ZhciBnZXR0ZXI9ZmllbGQuZ2V0dGVyO3ZhciBnZXR0ZXJDb250ZXh0PWZpZWxkLmdldHRlckNvbnRleHQ7dmFyIHNldHRlckFyZ3VtZW50VHlwZT1maWVsZFR5cGVzW2krZmllbGRSZWNvcmRzLmxlbmd0aF07dmFyIHNldHRlcj1maWVsZC5zZXR0ZXI7dmFyIHNldHRlckNvbnRleHQ9ZmllbGQuc2V0dGVyQ29udGV4dDtmaWVsZHNbZmllbGROYW1lXT17cmVhZDooZnVuY3Rpb24ocHRyKXtyZXR1cm4gZ2V0dGVyUmV0dXJuVHlwZVsiZnJvbVdpcmVUeXBlIl0oZ2V0dGVyKGdldHRlckNvbnRleHQscHRyKSl9KSx3cml0ZTooZnVuY3Rpb24ocHRyLG8pe3ZhciBkZXN0cnVjdG9ycz1bXTtzZXR0ZXIoc2V0dGVyQ29udGV4dCxwdHIsc2V0dGVyQXJndW1lbnRUeXBlWyJ0b1dpcmVUeXBlIl0oZGVzdHJ1Y3RvcnMsbykpO3J1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKX0pfX0pKTtyZXR1cm5be25hbWU6cmVnLm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHB0cil7dmFyIHJ2PXt9O2Zvcih2YXIgaSBpbiBmaWVsZHMpe3J2W2ldPWZpZWxkc1tpXS5yZWFkKHB0cil9cmF3RGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7Zm9yKHZhciBmaWVsZE5hbWUgaW4gZmllbGRzKXtpZighKGZpZWxkTmFtZSBpbiBvKSl7dGhyb3cgbmV3IFR5cGVFcnJvcigiTWlzc2luZyBmaWVsZCIpfX12YXIgcHRyPXJhd0NvbnN0cnVjdG9yKCk7Zm9yKGZpZWxkTmFtZSBpbiBmaWVsZHMpe2ZpZWxkc1tmaWVsZE5hbWVdLndyaXRlKHB0cixvW2ZpZWxkTmFtZV0pfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChyYXdEZXN0cnVjdG9yLHB0cil9cmV0dXJuIHB0cn0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOnNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyLGRlc3RydWN0b3JGdW5jdGlvbjpyYXdEZXN0cnVjdG9yfV19KSl9dmFyIGdlbmVyaWNQb2ludGVyVG9XaXJlVHlwZT0oZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsaGFuZGxlKXtpZihoYW5kbGU9PT1udWxsKXtpZih0aGlzLmlzUmVmZXJlbmNlKXt0aHJvd0JpbmRpbmdFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCAiK3RoaXMubmFtZSl9aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7dmFyIHB0cj10aGlzLnJhd0NvbnN0cnVjdG9yKCk7aWYoZGVzdHJ1Y3RvcnMhPT1udWxsKXtkZXN0cnVjdG9ycy5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixwdHIpfXJldHVybiBwdHJ9ZWxzZXtyZXR1cm4gMH19aWYoIWhhbmRsZS4kJCl7dGhyb3dCaW5kaW5nRXJyb3IoJ0Nhbm5vdCBwYXNzICInK19lbWJpbmRfcmVwcihoYW5kbGUpKyciIGFzIGEgJyt0aGlzLm5hbWUpfWlmKCFoYW5kbGUuJCQucHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgIit0aGlzLm5hbWUpfWlmKCF0aGlzLmlzQ29uc3QmJmhhbmRsZS4kJC5wdHJUeXBlLmlzQ29uc3Qpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlICIrKGhhbmRsZS4kJC5zbWFydFB0clR5cGU/aGFuZGxlLiQkLnNtYXJ0UHRyVHlwZS5uYW1lOmhhbmRsZS4kJC5wdHJUeXBlLm5hbWUpKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpfXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO2lmKHRoaXMuaXNTbWFydFBvaW50ZXIpe2lmKHVuZGVmaW5lZD09PWhhbmRsZS4kJC5zbWFydFB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIil9c3dpdGNoKHRoaXMuc2hhcmluZ1BvbGljeSl7Y2FzZSAwOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyfWVsc2V7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIisoaGFuZGxlLiQkLnNtYXJ0UHRyVHlwZT9oYW5kbGUuJCQuc21hcnRQdHJUeXBlLm5hbWU6aGFuZGxlLiQkLnB0clR5cGUubmFtZSkrIiB0byBwYXJhbWV0ZXIgdHlwZSAiK3RoaXMubmFtZSl9YnJlYWs7Y2FzZSAxOnB0cj1oYW5kbGUuJCQuc21hcnRQdHI7YnJlYWs7Y2FzZSAyOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyfWVsc2V7dmFyIGNsb25lZEhhbmRsZT1oYW5kbGVbImNsb25lIl0oKTtwdHI9dGhpcy5yYXdTaGFyZShwdHIsX19lbXZhbF9yZWdpc3RlcigoZnVuY3Rpb24oKXtjbG9uZWRIYW5kbGVbImRlbGV0ZSJdKCl9KSkpO2lmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaCh0aGlzLnJhd0Rlc3RydWN0b3IscHRyKX19YnJlYWs7ZGVmYXVsdDp0aHJvd0JpbmRpbmdFcnJvcigiVW5zdXBwb3J0aW5nIHNoYXJpbmcgcG9saWN5Iil9fXJldHVybiBwdHJ9KTt2YXIgY29uc3ROb1NtYXJ0UHRyUmF3UG9pbnRlclRvV2lyZVR5cGU9KGZ1bmN0aW9uKGRlc3RydWN0b3JzLGhhbmRsZSl7aWYoaGFuZGxlPT09bnVsbCl7aWYodGhpcy5pc1JlZmVyZW5jZSl7dGhyb3dCaW5kaW5nRXJyb3IoIm51bGwgaXMgbm90IGEgdmFsaWQgIit0aGlzLm5hbWUpfXJldHVybiAwfWlmKCFoYW5kbGUuJCQpe3Rocm93QmluZGluZ0Vycm9yKCdDYW5ub3QgcGFzcyAiJytfZW1iaW5kX3JlcHIoaGFuZGxlKSsnIiBhcyBhICcrdGhpcy5uYW1lKX1pZighaGFuZGxlLiQkLnB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKX12YXIgaGFuZGxlQ2xhc3M9aGFuZGxlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBwdHI9dXBjYXN0UG9pbnRlcihoYW5kbGUuJCQucHRyLGhhbmRsZUNsYXNzLHRoaXMucmVnaXN0ZXJlZENsYXNzKTtyZXR1cm4gcHRyfSk7dmFyIG5vbkNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlPShmdW5jdGlvbihkZXN0cnVjdG9ycyxoYW5kbGUpe2lmKGhhbmRsZT09PW51bGwpe2lmKHRoaXMuaXNSZWZlcmVuY2Upe3Rocm93QmluZGluZ0Vycm9yKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKX1yZXR1cm4gMH1pZighaGFuZGxlLiQkKXt0aHJvd0JpbmRpbmdFcnJvcignQ2Fubm90IHBhc3MgIicrX2VtYmluZF9yZXByKGhhbmRsZSkrJyIgYXMgYSAnK3RoaXMubmFtZSl9aWYoIWhhbmRsZS4kJC5wdHIpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAiK3RoaXMubmFtZSl9aWYoaGFuZGxlLiQkLnB0clR5cGUuaXNDb25zdCl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIitoYW5kbGUuJCQucHRyVHlwZS5uYW1lKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpfXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBwdHJ9KTtmdW5jdGlvbiBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHJlZ2lzdGVyZWRDbGFzcyxpc1JlZmVyZW5jZSxpc0NvbnN0LGlzU21hcnRQb2ludGVyLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKXt0aGlzLm5hbWU9bmFtZTt0aGlzLnJlZ2lzdGVyZWRDbGFzcz1yZWdpc3RlcmVkQ2xhc3M7dGhpcy5pc1JlZmVyZW5jZT1pc1JlZmVyZW5jZTt0aGlzLmlzQ29uc3Q9aXNDb25zdDt0aGlzLmlzU21hcnRQb2ludGVyPWlzU21hcnRQb2ludGVyO3RoaXMucG9pbnRlZVR5cGU9cG9pbnRlZVR5cGU7dGhpcy5zaGFyaW5nUG9saWN5PXNoYXJpbmdQb2xpY3k7dGhpcy5yYXdHZXRQb2ludGVlPXJhd0dldFBvaW50ZWU7dGhpcy5yYXdDb25zdHJ1Y3Rvcj1yYXdDb25zdHJ1Y3Rvcjt0aGlzLnJhd1NoYXJlPXJhd1NoYXJlO3RoaXMucmF3RGVzdHJ1Y3Rvcj1yYXdEZXN0cnVjdG9yO2lmKCFpc1NtYXJ0UG9pbnRlciYmcmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcz09PXVuZGVmaW5lZCl7aWYoaXNDb25zdCl7dGhpc1sidG9XaXJlVHlwZSJdPWNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlO3RoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGx9ZWxzZXt0aGlzWyJ0b1dpcmVUeXBlIl09bm9uQ29uc3ROb1NtYXJ0UHRyUmF3UG9pbnRlclRvV2lyZVR5cGU7dGhpcy5kZXN0cnVjdG9yRnVuY3Rpb249bnVsbH19ZWxzZXt0aGlzWyJ0b1dpcmVUeXBlIl09Z2VuZXJpY1BvaW50ZXJUb1dpcmVUeXBlfX1SZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGUuZ2V0UG9pbnRlZT1mdW5jdGlvbiBnZXRQb2ludGVlKHB0cil7aWYodGhpcy5yYXdHZXRQb2ludGVlKXtwdHI9dGhpcy5yYXdHZXRQb2ludGVlKHB0cil9cmV0dXJuIHB0cn07UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24gZGVzdHJ1Y3RvcihwdHIpe2lmKHRoaXMucmF3RGVzdHJ1Y3Rvcil7dGhpcy5yYXdEZXN0cnVjdG9yKHB0cil9fTtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbImFyZ1BhY2tBZHZhbmNlIl09ODtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl09c2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXI7UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlWyJkZWxldGVPYmplY3QiXT1mdW5jdGlvbiBkZWxldGVPYmplY3QoaGFuZGxlKXtpZihoYW5kbGUhPT1udWxsKXtoYW5kbGVbImRlbGV0ZSJdKCl9fTtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbImZyb21XaXJlVHlwZSJdPWZ1bmN0aW9uIGZyb21XaXJlVHlwZShwdHIpe3ZhciByYXdQb2ludGVyPXRoaXMuZ2V0UG9pbnRlZShwdHIpO2lmKCFyYXdQb2ludGVyKXt0aGlzLmRlc3RydWN0b3IocHRyKTtyZXR1cm4gbnVsbH12YXIgcmVnaXN0ZXJlZEluc3RhbmNlPWdldEluaGVyaXRlZEluc3RhbmNlKHRoaXMucmVnaXN0ZXJlZENsYXNzLHJhd1BvaW50ZXIpO2lmKHVuZGVmaW5lZCE9PXJlZ2lzdGVyZWRJbnN0YW5jZSl7aWYoMD09PXJlZ2lzdGVyZWRJbnN0YW5jZS4kJC5jb3VudC52YWx1ZSl7cmVnaXN0ZXJlZEluc3RhbmNlLiQkLnB0cj1yYXdQb2ludGVyO3JlZ2lzdGVyZWRJbnN0YW5jZS4kJC5zbWFydFB0cj1wdHI7cmV0dXJuIHJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpfWVsc2V7dmFyIHJ2PXJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpO3RoaXMuZGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn19ZnVuY3Rpb24gbWFrZURlZmF1bHRIYW5kbGUoKXtpZih0aGlzLmlzU21hcnRQb2ludGVyKXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMucG9pbnRlZVR5cGUscHRyOnJhd1BvaW50ZXIsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMscHRyOnB0cn0pfX12YXIgYWN0dWFsVHlwZT10aGlzLnJlZ2lzdGVyZWRDbGFzcy5nZXRBY3R1YWxUeXBlKHJhd1BvaW50ZXIpO3ZhciByZWdpc3RlcmVkUG9pbnRlclJlY29yZD1yZWdpc3RlcmVkUG9pbnRlcnNbYWN0dWFsVHlwZV07aWYoIXJlZ2lzdGVyZWRQb2ludGVyUmVjb3JkKXtyZXR1cm4gbWFrZURlZmF1bHRIYW5kbGUuY2FsbCh0aGlzKX12YXIgdG9UeXBlO2lmKHRoaXMuaXNDb25zdCl7dG9UeXBlPXJlZ2lzdGVyZWRQb2ludGVyUmVjb3JkLmNvbnN0UG9pbnRlclR5cGV9ZWxzZXt0b1R5cGU9cmVnaXN0ZXJlZFBvaW50ZXJSZWNvcmQucG9pbnRlclR5cGV9dmFyIGRwPWRvd25jYXN0UG9pbnRlcihyYXdQb2ludGVyLHRoaXMucmVnaXN0ZXJlZENsYXNzLHRvVHlwZS5yZWdpc3RlcmVkQ2xhc3MpO2lmKGRwPT09bnVsbCl7cmV0dXJuIG1ha2VEZWZhdWx0SGFuZGxlLmNhbGwodGhpcyl9aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7cmV0dXJuIG1ha2VDbGFzc0hhbmRsZSh0b1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRvVHlwZSxwdHI6ZHAsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRvVHlwZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUse3B0clR5cGU6dG9UeXBlLHB0cjpkcH0pfX07ZnVuY3Rpb24gbWFrZUNsYXNzSGFuZGxlKHByb3RvdHlwZSxyZWNvcmQpe2lmKCFyZWNvcmQucHRyVHlwZXx8IXJlY29yZC5wdHIpe3Rocm93SW50ZXJuYWxFcnJvcigibWFrZUNsYXNzSGFuZGxlIHJlcXVpcmVzIHB0ciBhbmQgcHRyVHlwZSIpfXZhciBoYXNTbWFydFB0clR5cGU9ISFyZWNvcmQuc21hcnRQdHJUeXBlO3ZhciBoYXNTbWFydFB0cj0hIXJlY29yZC5zbWFydFB0cjtpZihoYXNTbWFydFB0clR5cGUhPT1oYXNTbWFydFB0cil7dGhyb3dJbnRlcm5hbEVycm9yKCJCb3RoIHNtYXJ0UHRyVHlwZSBhbmQgc21hcnRQdHIgbXVzdCBiZSBzcGVjaWZpZWQiKX1yZWNvcmQuY291bnQ9e3ZhbHVlOjF9O3JldHVybiBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSx7JCQ6e3ZhbHVlOnJlY29yZH19KX1mdW5jdGlvbiBDbGFzc0hhbmRsZSgpe31mdW5jdGlvbiBnZXRJbnN0YW5jZVR5cGVOYW1lKGhhbmRsZSl7cmV0dXJuIGhhbmRsZS4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5uYW1lfUNsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNBbGlhc09mIl09ZnVuY3Rpb24gaXNBbGlhc09mKG90aGVyKXtpZighKHRoaXMgaW5zdGFuY2VvZiBDbGFzc0hhbmRsZSkpe3JldHVybiBmYWxzZX1pZighKG90aGVyIGluc3RhbmNlb2YgQ2xhc3NIYW5kbGUpKXtyZXR1cm4gZmFsc2V9dmFyIGxlZnRDbGFzcz10aGlzLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBsZWZ0PXRoaXMuJCQucHRyO3ZhciByaWdodENsYXNzPW90aGVyLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciByaWdodD1vdGhlci4kJC5wdHI7d2hpbGUobGVmdENsYXNzLmJhc2VDbGFzcyl7bGVmdD1sZWZ0Q2xhc3MudXBjYXN0KGxlZnQpO2xlZnRDbGFzcz1sZWZ0Q2xhc3MuYmFzZUNsYXNzfXdoaWxlKHJpZ2h0Q2xhc3MuYmFzZUNsYXNzKXtyaWdodD1yaWdodENsYXNzLnVwY2FzdChyaWdodCk7cmlnaHRDbGFzcz1yaWdodENsYXNzLmJhc2VDbGFzc31yZXR1cm4gbGVmdENsYXNzPT09cmlnaHRDbGFzcyYmbGVmdD09PXJpZ2h0fTtmdW5jdGlvbiB0aHJvd0luc3RhbmNlQWxyZWFkeURlbGV0ZWQob2JqKXt0aHJvd0JpbmRpbmdFcnJvcihnZXRJbnN0YW5jZVR5cGVOYW1lKG9iaikrIiBpbnN0YW5jZSBhbHJlYWR5IGRlbGV0ZWQiKX1DbGFzc0hhbmRsZS5wcm90b3R5cGVbImNsb25lIl09ZnVuY3Rpb24gY2xvbmUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlKXt0aGlzLiQkLmNvdW50LnZhbHVlKz0xO3JldHVybiB0aGlzfWVsc2V7dmFyIGNsb25lPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLHskJDp7dmFsdWU6c2hhbGxvd0NvcHkodGhpcy4kJCl9fSk7Y2xvbmUuJCQuY291bnQudmFsdWUrPTE7cmV0dXJuIGNsb25lfX07ZnVuY3Rpb24gcnVuRGVzdHJ1Y3RvcihoYW5kbGUpe3ZhciAkJD1oYW5kbGUuJCQ7aWYoJCQuc21hcnRQdHIpeyQkLnNtYXJ0UHRyVHlwZS5yYXdEZXN0cnVjdG9yKCQkLnNtYXJ0UHRyKX1lbHNleyQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLnJhd0Rlc3RydWN0b3IoJCQucHRyKX19Q2xhc3NIYW5kbGUucHJvdG90eXBlWyJkZWxldGUiXT1mdW5jdGlvbiBDbGFzc0hhbmRsZV9kZWxldGUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3Rocm93QmluZGluZ0Vycm9yKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIil9dGhpcy4kJC5jb3VudC52YWx1ZS09MTt2YXIgdG9EZWxldGU9MD09PXRoaXMuJCQuY291bnQudmFsdWU7aWYodG9EZWxldGUpe3J1bkRlc3RydWN0b3IodGhpcyl9aWYoIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3RoaXMuJCQuc21hcnRQdHI9dW5kZWZpbmVkO3RoaXMuJCQucHRyPXVuZGVmaW5lZH19O3ZhciBkZWxldGlvblF1ZXVlPVtdO0NsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNEZWxldGVkIl09ZnVuY3Rpb24gaXNEZWxldGVkKCl7cmV0dXJuIXRoaXMuJCQucHRyfTtDbGFzc0hhbmRsZS5wcm90b3R5cGVbImRlbGV0ZUxhdGVyIl09ZnVuY3Rpb24gZGVsZXRlTGF0ZXIoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3Rocm93QmluZGluZ0Vycm9yKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIil9ZGVsZXRpb25RdWV1ZS5wdXNoKHRoaXMpO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoPT09MSYmZGVsYXlGdW5jdGlvbil7ZGVsYXlGdW5jdGlvbihmbHVzaFBlbmRpbmdEZWxldGVzKX10aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZD10cnVlO3JldHVybiB0aGlzfTtmdW5jdGlvbiBmbHVzaFBlbmRpbmdEZWxldGVzKCl7d2hpbGUoZGVsZXRpb25RdWV1ZS5sZW5ndGgpe3ZhciBvYmo9ZGVsZXRpb25RdWV1ZS5wb3AoKTtvYmouJCQuZGVsZXRlU2NoZWR1bGVkPWZhbHNlO29ialsiZGVsZXRlIl0oKX19TW9kdWxlWyJmbHVzaFBlbmRpbmdEZWxldGVzIl09Zmx1c2hQZW5kaW5nRGVsZXRlczt2YXIgZGVsYXlGdW5jdGlvbjtNb2R1bGVbInNldERlbGF5RnVuY3Rpb24iXT1mdW5jdGlvbiBzZXREZWxheUZ1bmN0aW9uKGZuKXtkZWxheUZ1bmN0aW9uPWZuO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoJiZkZWxheUZ1bmN0aW9uKXtkZWxheUZ1bmN0aW9uKGZsdXNoUGVuZGluZ0RlbGV0ZXMpfX07ZnVuY3Rpb24gUmVnaXN0ZXJlZENsYXNzKG5hbWUsY29uc3RydWN0b3IsaW5zdGFuY2VQcm90b3R5cGUscmF3RGVzdHJ1Y3RvcixiYXNlQ2xhc3MsZ2V0QWN0dWFsVHlwZSx1cGNhc3QsZG93bmNhc3Qpe3RoaXMubmFtZT1uYW1lO3RoaXMuY29uc3RydWN0b3I9Y29uc3RydWN0b3I7dGhpcy5pbnN0YW5jZVByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt0aGlzLnJhd0Rlc3RydWN0b3I9cmF3RGVzdHJ1Y3Rvcjt0aGlzLmJhc2VDbGFzcz1iYXNlQ2xhc3M7dGhpcy5nZXRBY3R1YWxUeXBlPWdldEFjdHVhbFR5cGU7dGhpcy51cGNhc3Q9dXBjYXN0O3RoaXMuZG93bmNhc3Q9ZG93bmNhc3Q7dGhpcy5wdXJlVmlydHVhbEZ1bmN0aW9ucz1bXX1mdW5jdGlvbiBzaGFsbG93Q29weShvKXt2YXIgcnY9e307Zm9yKHZhciBrIGluIG8pe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLGspKXtydltrXT1vW2tdfX1yZXR1cm4gcnZ9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3MocmF3VHlwZSxyYXdQb2ludGVyVHlwZSxyYXdDb25zdFBvaW50ZXJUeXBlLGJhc2VDbGFzc1Jhd1R5cGUsZ2V0QWN0dWFsVHlwZVNpZ25hdHVyZSxnZXRBY3R1YWxUeXBlLHVwY2FzdFNpZ25hdHVyZSx1cGNhc3QsZG93bmNhc3RTaWduYXR1cmUsZG93bmNhc3QsbmFtZSxkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3Ipe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtnZXRBY3R1YWxUeXBlPXJlcXVpcmVGdW5jdGlvbihnZXRBY3R1YWxUeXBlU2lnbmF0dXJlLGdldEFjdHVhbFR5cGUpO2lmKHVwY2FzdCl7dXBjYXN0PXJlcXVpcmVGdW5jdGlvbih1cGNhc3RTaWduYXR1cmUsdXBjYXN0KX1pZihkb3duY2FzdCl7ZG93bmNhc3Q9cmVxdWlyZUZ1bmN0aW9uKGRvd25jYXN0U2lnbmF0dXJlLGRvd25jYXN0KX1yYXdEZXN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpO3ZhciBsZWdhbEZ1bmN0aW9uTmFtZT1tYWtlTGVnYWxGdW5jdGlvbk5hbWUobmFtZSk7ZXhwb3NlUHVibGljU3ltYm9sKGxlZ2FsRnVuY3Rpb25OYW1lLChmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNvbnN0cnVjdCAiK25hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsW2Jhc2VDbGFzc1Jhd1R5cGVdKX0pKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbcmF3VHlwZSxyYXdQb2ludGVyVHlwZSxyYXdDb25zdFBvaW50ZXJUeXBlXSxiYXNlQ2xhc3NSYXdUeXBlP1tiYXNlQ2xhc3NSYXdUeXBlXTpbXSwoZnVuY3Rpb24oYmFzZSl7YmFzZT1iYXNlWzBdO3ZhciBiYXNlQ2xhc3M7dmFyIGJhc2VQcm90b3R5cGU7aWYoYmFzZUNsYXNzUmF3VHlwZSl7YmFzZUNsYXNzPWJhc2UucmVnaXN0ZXJlZENsYXNzO2Jhc2VQcm90b3R5cGU9YmFzZUNsYXNzLmluc3RhbmNlUHJvdG90eXBlfWVsc2V7YmFzZVByb3RvdHlwZT1DbGFzc0hhbmRsZS5wcm90b3R5cGV9dmFyIGNvbnN0cnVjdG9yPWNyZWF0ZU5hbWVkRnVuY3Rpb24obGVnYWxGdW5jdGlvbk5hbWUsKGZ1bmN0aW9uKCl7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpIT09aW5zdGFuY2VQcm90b3R5cGUpe3Rocm93IG5ldyBCaW5kaW5nRXJyb3IoIlVzZSAnbmV3JyB0byBjb25zdHJ1Y3QgIituYW1lKX1pZih1bmRlZmluZWQ9PT1yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keSl7dGhyb3cgbmV3IEJpbmRpbmdFcnJvcihuYW1lKyIgaGFzIG5vIGFjY2Vzc2libGUgY29uc3RydWN0b3IiKX12YXIgYm9keT1yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmd1bWVudHMubGVuZ3RoXTtpZih1bmRlZmluZWQ9PT1ib2R5KXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJUcmllZCB0byBpbnZva2UgY3RvciBvZiAiK25hbWUrIiB3aXRoIGludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCIrYXJndW1lbnRzLmxlbmd0aCsiKSAtIGV4cGVjdGVkICgiK09iamVjdC5rZXlzKHJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KS50b1N0cmluZygpKyIpIHBhcmFtZXRlcnMgaW5zdGVhZCEiKX1yZXR1cm4gYm9keS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSk7dmFyIGluc3RhbmNlUHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYmFzZVByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmNvbnN0cnVjdG9yfX0pO2NvbnN0cnVjdG9yLnByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt2YXIgcmVnaXN0ZXJlZENsYXNzPW5ldyBSZWdpc3RlcmVkQ2xhc3MobmFtZSxjb25zdHJ1Y3RvcixpbnN0YW5jZVByb3RvdHlwZSxyYXdEZXN0cnVjdG9yLGJhc2VDbGFzcyxnZXRBY3R1YWxUeXBlLHVwY2FzdCxkb3duY2FzdCk7dmFyIHJlZmVyZW5jZUNvbnZlcnRlcj1uZXcgUmVnaXN0ZXJlZFBvaW50ZXIobmFtZSxyZWdpc3RlcmVkQ2xhc3MsdHJ1ZSxmYWxzZSxmYWxzZSk7dmFyIHBvaW50ZXJDb252ZXJ0ZXI9bmV3IFJlZ2lzdGVyZWRQb2ludGVyKG5hbWUrIioiLHJlZ2lzdGVyZWRDbGFzcyxmYWxzZSxmYWxzZSxmYWxzZSk7dmFyIGNvbnN0UG9pbnRlckNvbnZlcnRlcj1uZXcgUmVnaXN0ZXJlZFBvaW50ZXIobmFtZSsiIGNvbnN0KiIscmVnaXN0ZXJlZENsYXNzLGZhbHNlLHRydWUsZmFsc2UpO3JlZ2lzdGVyZWRQb2ludGVyc1tyYXdUeXBlXT17cG9pbnRlclR5cGU6cG9pbnRlckNvbnZlcnRlcixjb25zdFBvaW50ZXJUeXBlOmNvbnN0UG9pbnRlckNvbnZlcnRlcn07cmVwbGFjZVB1YmxpY1N5bWJvbChsZWdhbEZ1bmN0aW9uTmFtZSxjb25zdHJ1Y3Rvcik7cmV0dXJuW3JlZmVyZW5jZUNvbnZlcnRlcixwb2ludGVyQ29udmVydGVyLGNvbnN0UG9pbnRlckNvbnZlcnRlcl19KSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IocmF3Q2xhc3NUeXBlLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLGludm9rZXIscmF3Q29uc3RydWN0b3Ipe3ZhciByYXdBcmdUeXBlcz1oZWFwMzJWZWN0b3JUb0FycmF5KGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcik7aW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxpbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSwoZnVuY3Rpb24oY2xhc3NUeXBlKXtjbGFzc1R5cGU9Y2xhc3NUeXBlWzBdO3ZhciBodW1hbk5hbWU9ImNvbnN0cnVjdG9yICIrY2xhc3NUeXBlLm5hbWU7aWYodW5kZWZpbmVkPT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KXtjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHk9W119aWYodW5kZWZpbmVkIT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgY29uc3RydWN0b3JzIHdpdGggaWRlbnRpY2FsIG51bWJlciBvZiBwYXJhbWV0ZXJzICgiKyhhcmdDb3VudC0xKSsiKSBmb3IgY2xhc3MgJyIrY2xhc3NUeXBlLm5hbWUrIichIE92ZXJsb2FkIHJlc29sdXRpb24gaXMgY3VycmVudGx5IG9ubHkgcGVyZm9ybWVkIHVzaW5nIHRoZSBwYXJhbWV0ZXIgY291bnQsIG5vdCBhY3R1YWwgdHlwZSBpbmZvISIpfWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmdDb3VudC0xXT1mdW5jdGlvbiB1bmJvdW5kVHlwZUhhbmRsZXIoKXt0aHJvd1VuYm91bmRUeXBlRXJyb3IoIkNhbm5vdCBjb25zdHJ1Y3QgIitjbGFzc1R5cGUubmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixyYXdBcmdUeXBlcyl9O3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLHJhd0FyZ1R5cGVzLChmdW5jdGlvbihhcmdUeXBlcyl7Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdPWZ1bmN0aW9uIGNvbnN0cnVjdG9yX2JvZHkoKXtpZihhcmd1bWVudHMubGVuZ3RoIT09YXJnQ291bnQtMSl7dGhyb3dCaW5kaW5nRXJyb3IoaHVtYW5OYW1lKyIgY2FsbGVkIHdpdGggIithcmd1bWVudHMubGVuZ3RoKyIgYXJndW1lbnRzLCBleHBlY3RlZCAiKyhhcmdDb3VudC0xKSl9dmFyIGRlc3RydWN0b3JzPVtdO3ZhciBhcmdzPW5ldyBBcnJheShhcmdDb3VudCk7YXJnc1swXT1yYXdDb25zdHJ1Y3Rvcjtmb3IodmFyIGk9MTtpPGFyZ0NvdW50OysraSl7YXJnc1tpXT1hcmdUeXBlc1tpXVsidG9XaXJlVHlwZSJdKGRlc3RydWN0b3JzLGFyZ3VtZW50c1tpLTFdKX12YXIgcHRyPWludm9rZXIuYXBwbHkobnVsbCxhcmdzKTtydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyk7cmV0dXJuIGFyZ1R5cGVzWzBdWyJmcm9tV2lyZVR5cGUiXShwdHIpfTtyZXR1cm5bXX0pKTtyZXR1cm5bXX0pKX1mdW5jdGlvbiBkb3duY2FzdFBvaW50ZXIocHRyLHB0ckNsYXNzLGRlc2lyZWRDbGFzcyl7aWYocHRyQ2xhc3M9PT1kZXNpcmVkQ2xhc3Mpe3JldHVybiBwdHJ9aWYodW5kZWZpbmVkPT09ZGVzaXJlZENsYXNzLmJhc2VDbGFzcyl7cmV0dXJuIG51bGx9dmFyIHJ2PWRvd25jYXN0UG9pbnRlcihwdHIscHRyQ2xhc3MsZGVzaXJlZENsYXNzLmJhc2VDbGFzcyk7aWYocnY9PT1udWxsKXtyZXR1cm4gbnVsbH1yZXR1cm4gZGVzaXJlZENsYXNzLmRvd25jYXN0KHJ2KX1mdW5jdGlvbiB1cGNhc3RQb2ludGVyKHB0cixwdHJDbGFzcyxkZXNpcmVkQ2xhc3Mpe3doaWxlKHB0ckNsYXNzIT09ZGVzaXJlZENsYXNzKXtpZighcHRyQ2xhc3MudXBjYXN0KXt0aHJvd0JpbmRpbmdFcnJvcigiRXhwZWN0ZWQgbnVsbCBvciBpbnN0YW5jZSBvZiAiK2Rlc2lyZWRDbGFzcy5uYW1lKyIsIGdvdCBhbiBpbnN0YW5jZSBvZiAiK3B0ckNsYXNzLm5hbWUpfXB0cj1wdHJDbGFzcy51cGNhc3QocHRyKTtwdHJDbGFzcz1wdHJDbGFzcy5iYXNlQ2xhc3N9cmV0dXJuIHB0cn1mdW5jdGlvbiB2YWxpZGF0ZVRoaXModGhpc18sY2xhc3NUeXBlLGh1bWFuTmFtZSl7aWYoISh0aGlzXyBpbnN0YW5jZW9mIE9iamVjdCkpe3Rocm93QmluZGluZ0Vycm9yKGh1bWFuTmFtZSsnIHdpdGggaW52YWxpZCAidGhpcyI6ICcrdGhpc18pfWlmKCEodGhpc18gaW5zdGFuY2VvZiBjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yKSl7dGhyb3dCaW5kaW5nRXJyb3IoaHVtYW5OYW1lKycgaW5jb21wYXRpYmxlIHdpdGggInRoaXMiIG9mIHR5cGUgJyt0aGlzXy5jb25zdHJ1Y3Rvci5uYW1lKX1pZighdGhpc18uJCQucHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiY2Fubm90IGNhbGwgZW1zY3JpcHRlbiBiaW5kaW5nIG1ldGhvZCAiK2h1bWFuTmFtZSsiIG9uIGRlbGV0ZWQgb2JqZWN0Iil9cmV0dXJuIHVwY2FzdFBvaW50ZXIodGhpc18uJCQucHRyLHRoaXNfLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLGNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uKHJhd0NsYXNzVHlwZSxtZXRob2ROYW1lLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIsY29udGV4dCxpc1B1cmVWaXJ0dWFsKXt2YXIgcmF3QXJnVHlwZXM9aGVhcDMyVmVjdG9yVG9BcnJheShhcmdDb3VudCxyYXdBcmdUeXBlc0FkZHIpO21ldGhvZE5hbWU9cmVhZExhdGluMVN0cmluZyhtZXRob2ROYW1lKTtyYXdJbnZva2VyPXJlcXVpcmVGdW5jdGlvbihpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtyYXdDbGFzc1R5cGVdLChmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrbWV0aG9kTmFtZTtpZihpc1B1cmVWaXJ0dWFsKXtjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLnB1cmVWaXJ0dWFsRnVuY3Rpb25zLnB1c2gobWV0aG9kTmFtZSl9ZnVuY3Rpb24gdW5ib3VuZFR5cGVzSGFuZGxlcigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIitodW1hbk5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIscmF3QXJnVHlwZXMpfXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBtZXRob2Q9cHJvdG9bbWV0aG9kTmFtZV07aWYodW5kZWZpbmVkPT09bWV0aG9kfHx1bmRlZmluZWQ9PT1tZXRob2Qub3ZlcmxvYWRUYWJsZSYmbWV0aG9kLmNsYXNzTmFtZSE9PWNsYXNzVHlwZS5uYW1lJiZtZXRob2QuYXJnQ291bnQ9PT1hcmdDb3VudC0yKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTI7dW5ib3VuZFR5cGVzSGFuZGxlci5jbGFzc05hbWU9Y2xhc3NUeXBlLm5hbWU7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcn1lbHNle2Vuc3VyZU92ZXJsb2FkVGFibGUocHJvdG8sbWV0aG9kTmFtZSxodW1hbk5hbWUpO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMl09dW5ib3VuZFR5cGVzSGFuZGxlcn13aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcywoZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBtZW1iZXJGdW5jdGlvbj1jcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsY2xhc3NUeXBlLHJhd0ludm9rZXIsY29udGV4dCk7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7cHJvdG9bbWV0aG9kTmFtZV09bWVtYmVyRnVuY3Rpb259ZWxzZXtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlW2FyZ0NvdW50LTJdPW1lbWJlckZ1bmN0aW9ufXJldHVybltdfSkpO3JldHVybltdfSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX3Byb3BlcnR5KGNsYXNzVHlwZSxmaWVsZE5hbWUsZ2V0dGVyUmV0dXJuVHlwZSxnZXR0ZXJTaWduYXR1cmUsZ2V0dGVyLGdldHRlckNvbnRleHQsc2V0dGVyQXJndW1lbnRUeXBlLHNldHRlclNpZ25hdHVyZSxzZXR0ZXIsc2V0dGVyQ29udGV4dCl7ZmllbGROYW1lPXJlYWRMYXRpbjFTdHJpbmcoZmllbGROYW1lKTtnZXR0ZXI9cmVxdWlyZUZ1bmN0aW9uKGdldHRlclNpZ25hdHVyZSxnZXR0ZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtjbGFzc1R5cGVdLChmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrZmllbGROYW1lO3ZhciBkZXNjPXtnZXQ6KGZ1bmN0aW9uKCl7dGhyb3dVbmJvdW5kVHlwZUVycm9yKCJDYW5ub3QgYWNjZXNzICIraHVtYW5OYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLFtnZXR0ZXJSZXR1cm5UeXBlLHNldHRlckFyZ3VtZW50VHlwZV0pfSksZW51bWVyYWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfTtpZihzZXR0ZXIpe2Rlc2Muc2V0PShmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGFjY2VzcyAiK2h1bWFuTmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixbZ2V0dGVyUmV0dXJuVHlwZSxzZXR0ZXJBcmd1bWVudFR5cGVdKX0pfWVsc2V7ZGVzYy5zZXQ9KGZ1bmN0aW9uKHYpe3Rocm93QmluZGluZ0Vycm9yKGh1bWFuTmFtZSsiIGlzIGEgcmVhZC1vbmx5IHByb3BlcnR5Iil9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoY2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxmaWVsZE5hbWUsZGVzYyk7d2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQoW10sc2V0dGVyP1tnZXR0ZXJSZXR1cm5UeXBlLHNldHRlckFyZ3VtZW50VHlwZV06W2dldHRlclJldHVyblR5cGVdLChmdW5jdGlvbih0eXBlcyl7dmFyIGdldHRlclJldHVyblR5cGU9dHlwZXNbMF07dmFyIGRlc2M9e2dldDooZnVuY3Rpb24oKXt2YXIgcHRyPXZhbGlkYXRlVGhpcyh0aGlzLGNsYXNzVHlwZSxodW1hbk5hbWUrIiBnZXR0ZXIiKTtyZXR1cm4gZ2V0dGVyUmV0dXJuVHlwZVsiZnJvbVdpcmVUeXBlIl0oZ2V0dGVyKGdldHRlckNvbnRleHQscHRyKSl9KSxlbnVtZXJhYmxlOnRydWV9O2lmKHNldHRlcil7c2V0dGVyPXJlcXVpcmVGdW5jdGlvbihzZXR0ZXJTaWduYXR1cmUsc2V0dGVyKTt2YXIgc2V0dGVyQXJndW1lbnRUeXBlPXR5cGVzWzFdO2Rlc2Muc2V0PShmdW5jdGlvbih2KXt2YXIgcHRyPXZhbGlkYXRlVGhpcyh0aGlzLGNsYXNzVHlwZSxodW1hbk5hbWUrIiBzZXR0ZXIiKTt2YXIgZGVzdHJ1Y3RvcnM9W107c2V0dGVyKHNldHRlckNvbnRleHQscHRyLHNldHRlckFyZ3VtZW50VHlwZVsidG9XaXJlVHlwZSJdKGRlc3RydWN0b3JzLHYpKTtydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyl9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoY2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxmaWVsZE5hbWUsZGVzYyk7cmV0dXJuW119KSk7cmV0dXJuW119KSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY2xhc3NfZnVuY3Rpb24ocmF3Q2xhc3NUeXBlLG1ldGhvZE5hbWUsYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyLGludm9rZXJTaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIHJhd0FyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTttZXRob2ROYW1lPXJlYWRMYXRpbjFTdHJpbmcobWV0aG9kTmFtZSk7cmF3SW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxyYXdJbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSwoZnVuY3Rpb24oY2xhc3NUeXBlKXtjbGFzc1R5cGU9Y2xhc3NUeXBlWzBdO3ZhciBodW1hbk5hbWU9Y2xhc3NUeXBlLm5hbWUrIi4iK21ldGhvZE5hbWU7ZnVuY3Rpb24gdW5ib3VuZFR5cGVzSGFuZGxlcigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIitodW1hbk5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIscmF3QXJnVHlwZXMpfXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yO2lmKHVuZGVmaW5lZD09PXByb3RvW21ldGhvZE5hbWVdKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTE7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcn1lbHNle2Vuc3VyZU92ZXJsb2FkVGFibGUocHJvdG8sbWV0aG9kTmFtZSxodW1hbk5hbWUpO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMV09dW5ib3VuZFR5cGVzSGFuZGxlcn13aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcywoZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBpbnZva2VyQXJnc0FycmF5PVthcmdUeXBlc1swXSxudWxsXS5jb25jYXQoYXJnVHlwZXMuc2xpY2UoMSkpO3ZhciBmdW5jPWNyYWZ0SW52b2tlckZ1bmN0aW9uKGh1bWFuTmFtZSxpbnZva2VyQXJnc0FycmF5LG51bGwscmF3SW52b2tlcixmbik7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7cHJvdG9bbWV0aG9kTmFtZV09ZnVuY31lbHNle3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMV09ZnVuY31yZXR1cm5bXX0pKTtyZXR1cm5bXX0pKX1mdW5jdGlvbiBfX2VtYmluZF9jcmVhdGVfaW5oZXJpdGluZ19jb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvck5hbWUsd3JhcHBlclR5cGUscHJvcGVydGllcyl7Y29uc3RydWN0b3JOYW1lPXJlYWRMYXRpbjFTdHJpbmcoY29uc3RydWN0b3JOYW1lKTt3cmFwcGVyVHlwZT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUod3JhcHBlclR5cGUsIndyYXBwZXIiKTtwcm9wZXJ0aWVzPXJlcXVpcmVIYW5kbGUocHJvcGVydGllcyk7dmFyIGFycmF5U2xpY2U9W10uc2xpY2U7dmFyIHJlZ2lzdGVyZWRDbGFzcz13cmFwcGVyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHdyYXBwZXJQcm90b3R5cGU9cmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBiYXNlQ2xhc3M9cmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzczt2YXIgYmFzZUNsYXNzUHJvdG90eXBlPWJhc2VDbGFzcy5pbnN0YW5jZVByb3RvdHlwZTt2YXIgYmFzZUNvbnN0cnVjdG9yPXJlZ2lzdGVyZWRDbGFzcy5iYXNlQ2xhc3MuY29uc3RydWN0b3I7dmFyIGN0b3I9Y3JlYXRlTmFtZWRGdW5jdGlvbihjb25zdHJ1Y3Rvck5hbWUsKGZ1bmN0aW9uKCl7cmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcy5wdXJlVmlydHVhbEZ1bmN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbihuYW1lKXtpZih0aGlzW25hbWVdPT09YmFzZUNsYXNzUHJvdG90eXBlW25hbWVdKXt0aHJvdyBuZXcgUHVyZVZpcnR1YWxFcnJvcigiUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uICIrbmFtZSsiIG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gSmF2YVNjcmlwdCIpfX0pLmJpbmQodGhpcykpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJfX3BhcmVudCIse3ZhbHVlOndyYXBwZXJQcm90b3R5cGV9KTt0aGlzLl9fY29uc3RydWN0LmFwcGx5KHRoaXMsYXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cykpfSkpO3dyYXBwZXJQcm90b3R5cGUuX19jb25zdHJ1Y3Q9ZnVuY3Rpb24gX19jb25zdHJ1Y3QoKXtpZih0aGlzPT09d3JhcHBlclByb3RvdHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3MgY29ycmVjdCAndGhpcycgdG8gX19jb25zdHJ1Y3QiKX12YXIgaW5uZXI9YmFzZUNvbnN0cnVjdG9yLmltcGxlbWVudC5hcHBseSh1bmRlZmluZWQsW3RoaXNdLmNvbmNhdChhcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO3ZhciAkJD1pbm5lci4kJDtpbm5lci5ub3RpZnlPbkRlc3RydWN0aW9uKCk7JCQucHJlc2VydmVQb2ludGVyT25EZWxldGU9dHJ1ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiJCQiLHt2YWx1ZTokJH0pO3JlZ2lzdGVySW5oZXJpdGVkSW5zdGFuY2UocmVnaXN0ZXJlZENsYXNzLCQkLnB0cix0aGlzKX07d3JhcHBlclByb3RvdHlwZS5fX2Rlc3RydWN0PWZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKXtpZih0aGlzPT09d3JhcHBlclByb3RvdHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3MgY29ycmVjdCAndGhpcycgdG8gX19kZXN0cnVjdCIpfXVucmVnaXN0ZXJJbmhlcml0ZWRJbnN0YW5jZShyZWdpc3RlcmVkQ2xhc3MsdGhpcy4kJC5wdHIpfTtjdG9yLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHdyYXBwZXJQcm90b3R5cGUpO2Zvcih2YXIgcCBpbiBwcm9wZXJ0aWVzKXtjdG9yLnByb3RvdHlwZVtwXT1wcm9wZXJ0aWVzW3BdfXJldHVybiBfX2VtdmFsX3JlZ2lzdGVyKGN0b3IpfXZhciBjaGFyXzA9IjAiLmNoYXJDb2RlQXQoMCk7dmFyIGNoYXJfOT0iOSIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBtYWtlTGVnYWxGdW5jdGlvbk5hbWUobmFtZSl7bmFtZT1uYW1lLnJlcGxhY2UoL1teYS16QS1aMC05X10vZywiJCIpO3ZhciBmPW5hbWUuY2hhckNvZGVBdCgwKTtpZihmPj1jaGFyXzAmJmY8PWNoYXJfOSl7cmV0dXJuIl8iK25hbWV9ZWxzZXtyZXR1cm4gbmFtZX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc21hcnRfcHRyKHJhd1R5cGUscmF3UG9pbnRlZVR5cGUsbmFtZSxzaGFyaW5nUG9saWN5LGdldFBvaW50ZWVTaWduYXR1cmUscmF3R2V0UG9pbnRlZSxjb25zdHJ1Y3RvclNpZ25hdHVyZSxyYXdDb25zdHJ1Y3RvcixzaGFyZVNpZ25hdHVyZSxyYXdTaGFyZSxkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3Ipe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyYXdHZXRQb2ludGVlPXJlcXVpcmVGdW5jdGlvbihnZXRQb2ludGVlU2lnbmF0dXJlLHJhd0dldFBvaW50ZWUpO3Jhd0NvbnN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihjb25zdHJ1Y3RvclNpZ25hdHVyZSxyYXdDb25zdHJ1Y3Rvcik7cmF3U2hhcmU9cmVxdWlyZUZ1bmN0aW9uKHNoYXJlU2lnbmF0dXJlLHJhd1NoYXJlKTtyYXdEZXN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtyYXdUeXBlXSxbcmF3UG9pbnRlZVR5cGVdLChmdW5jdGlvbihwb2ludGVlVHlwZSl7cG9pbnRlZVR5cGU9cG9pbnRlZVR5cGVbMF07dmFyIHJlZ2lzdGVyZWRQb2ludGVyPW5ldyBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHBvaW50ZWVUeXBlLnJlZ2lzdGVyZWRDbGFzcyxmYWxzZSxmYWxzZSx0cnVlLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKTtyZXR1cm5bcmVnaXN0ZXJlZFBvaW50ZXJdfSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2VudW0ocmF3VHlwZSxuYW1lLHNpemUsaXNTaWduZWQpe3ZhciBzaGlmdD1nZXRTaGlmdEZyb21TaXplKHNpemUpO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtmdW5jdGlvbiBjb25zdHJ1Y3Rvcigpe31jb25zdHJ1Y3Rvci52YWx1ZXM9e307cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSxjb25zdHJ1Y3Rvcjpjb25zdHJ1Y3RvciwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IudmFsdWVzW2NdfSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyxjKXtyZXR1cm4gYy52YWx1ZX0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LGlzU2lnbmVkKSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLGNvbnN0cnVjdG9yKX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9lbnVtX3ZhbHVlKHJhd0VudW1UeXBlLG5hbWUsZW51bVZhbHVlKXt2YXIgZW51bVR5cGU9cmVxdWlyZVJlZ2lzdGVyZWRUeXBlKHJhd0VudW1UeXBlLCJlbnVtIik7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3ZhciBFbnVtPWVudW1UeXBlLmNvbnN0cnVjdG9yO3ZhciBWYWx1ZT1PYmplY3QuY3JlYXRlKGVudW1UeXBlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx7dmFsdWU6e3ZhbHVlOmVudW1WYWx1ZX0sY29uc3RydWN0b3I6e3ZhbHVlOmNyZWF0ZU5hbWVkRnVuY3Rpb24oZW51bVR5cGUubmFtZSsiXyIrbmFtZSwoZnVuY3Rpb24oKXt9KSl9fSk7RW51bS52YWx1ZXNbZW51bVZhbHVlXT1WYWx1ZTtFbnVtW25hbWVdPVZhbHVlfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NvbnN0YW50KG5hbWUsdHlwZSx2YWx1ZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFt0eXBlXSwoZnVuY3Rpb24odHlwZSl7dHlwZT10eXBlWzBdO01vZHVsZVtuYW1lXT10eXBlWyJmcm9tV2lyZVR5cGUiXSh2YWx1ZSk7cmV0dXJuW119KSl9dmFyIE1vZHVsZT1Nb2R1bGV8fHt9O3ZhciBfZW12YWxfaGFuZGxlX2FycmF5PVt7fV07dmFyIF9lbXZhbF9mcmVlX2xpc3Q9W107TW9kdWxlLmNvdW50X2VtdmFsX2hhbmRsZXM9KGZ1bmN0aW9uKCl7dmFyIGNvdW50PTA7Zm9yKHZhciBpPTE7aTxfZW12YWxfaGFuZGxlX2FycmF5Lmxlbmd0aDsrK2kpe2lmKF9lbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpeysrY291bnR9fXJldHVybiBjb3VudH0pO01vZHVsZS5nZXRfZmlyc3RfZW12YWw9KGZ1bmN0aW9uKCl7Zm9yKHZhciBpPTE7aTxfZW12YWxfaGFuZGxlX2FycmF5Lmxlbmd0aDsrK2kpe2lmKF9lbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpe3JldHVybiBfZW12YWxfaGFuZGxlX2FycmF5W2ldfX1yZXR1cm4gbnVsbH0pO3ZhciBfZW12YWxfc3ltYm9scz17fTtmdW5jdGlvbiBfX2VtdmFsX3JlZ2lzdGVyX3N5bWJvbChhZGRyZXNzKXtfZW12YWxfc3ltYm9sc1thZGRyZXNzXT1yZWFkTGF0aW4xU3RyaW5nKGFkZHJlc3MpfWZ1bmN0aW9uIGdldFN0cmluZ09yU3ltYm9sKGFkZHJlc3Mpe3ZhciBzeW1ib2w9X2VtdmFsX3N5bWJvbHNbYWRkcmVzc107aWYoc3ltYm9sPT09dW5kZWZpbmVkKXtyZXR1cm4gcmVhZExhdGluMVN0cmluZyhhZGRyZXNzKX1lbHNle3JldHVybiBzeW1ib2x9fWZ1bmN0aW9uIHJlcXVpcmVIYW5kbGUoaGFuZGxlKXtpZighaGFuZGxlKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHVzZSBkZWxldGVkIHZhbC4gaGFuZGxlID0gIitoYW5kbGUpfXJldHVybiBfZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV0udmFsdWV9ZnVuY3Rpb24gX19lbXZhbF9yZWdpc3Rlcih2YWx1ZSl7dmFyIGhhbmRsZT1fZW12YWxfZnJlZV9saXN0Lmxlbmd0aD9fZW12YWxfZnJlZV9saXN0LnBvcCgpOl9lbXZhbF9oYW5kbGVfYXJyYXkubGVuZ3RoO19lbXZhbF9oYW5kbGVfYXJyYXlbaGFuZGxlXT17cmVmY291bnQ6MSx2YWx1ZTp2YWx1ZX07cmV0dXJuIGhhbmRsZX1mdW5jdGlvbiBfX2VtdmFsX2luY3JlZihoYW5kbGUpe2lmKGhhbmRsZSl7X2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50Kz0xfX1mdW5jdGlvbiBfX2VtdmFsX2RlY3JlZihoYW5kbGUpe2lmKGhhbmRsZSYmMD09PS0tX2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50KXtfZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV09dW5kZWZpbmVkO19lbXZhbF9mcmVlX2xpc3QucHVzaChoYW5kbGUpfX1mdW5jdGlvbiBfX2VtdmFsX3J1bl9kZXN0cnVjdG9ycyhoYW5kbGUpe3ZhciBkZXN0cnVjdG9ycz1fZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV0udmFsdWU7cnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpO19fZW12YWxfZGVjcmVmKGhhbmRsZSl9ZnVuY3Rpb24gX19lbXZhbF9uZXdfYXJyYXkoKXtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihbXSl9ZnVuY3Rpb24gX19lbXZhbF9uZXdfb2JqZWN0KCl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIoe30pfWZ1bmN0aW9uIF9fZW12YWxfdW5kZWZpbmVkKCl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodW5kZWZpbmVkKX1mdW5jdGlvbiBfX2VtdmFsX251bGwoKXtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihudWxsKX1mdW5jdGlvbiBfX2VtdmFsX25ld19jc3RyaW5nKHYpe3JldHVybiBfX2VtdmFsX3JlZ2lzdGVyKGdldFN0cmluZ09yU3ltYm9sKHYpKX1mdW5jdGlvbiBfX2VtdmFsX3Rha2VfdmFsdWUodHlwZSxhcmd2KXt0eXBlPXJlcXVpcmVSZWdpc3RlcmVkVHlwZSh0eXBlLCJfZW12YWxfdGFrZV92YWx1ZSIpO3ZhciB2PXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJndik7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodil9dmFyIF9fbmV3ZXJzPXt9O2Z1bmN0aW9uIGNyYWZ0RW12YWxBbGxvY2F0b3IoYXJnQ291bnQpe3ZhciBhcmdzTGlzdD0iIjtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7YXJnc0xpc3QrPShpIT09MD8iLCAiOiIiKSsiYXJnIitpfXZhciBmdW5jdGlvbkJvZHk9InJldHVybiBmdW5jdGlvbiBlbXZhbF9hbGxvY2F0b3JfIithcmdDb3VudCsiKGNvbnN0cnVjdG9yLCBhcmdUeXBlcywgYXJncykge1xuIjtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7ZnVuY3Rpb25Cb2R5Kz0idmFyIGFyZ1R5cGUiK2krIiA9IHJlcXVpcmVSZWdpc3RlcmVkVHlwZShIRUFQMzJbKGFyZ1R5cGVzID4+IDIpICsgIitpKyddLCAicGFyYW1ldGVyICcraSsnIik7XG4nKyJ2YXIgYXJnIitpKyIgPSBhcmdUeXBlIitpKyIucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyk7XG4iKyJhcmdzICs9IGFyZ1R5cGUiK2krIi5hcmdQYWNrQWR2YW5jZTtcbiJ9ZnVuY3Rpb25Cb2R5Kz0idmFyIG9iaiA9IG5ldyBjb25zdHJ1Y3RvcigiK2FyZ3NMaXN0KyIpO1xuIisicmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIob2JqKTtcbiIrIn1cbiI7cmV0dXJuKG5ldyBGdW5jdGlvbigicmVxdWlyZVJlZ2lzdGVyZWRUeXBlIiwiSEVBUDMyIiwiX19lbXZhbF9yZWdpc3RlciIsZnVuY3Rpb25Cb2R5KSkocmVxdWlyZVJlZ2lzdGVyZWRUeXBlLEhFQVAzMixfX2VtdmFsX3JlZ2lzdGVyKX1mdW5jdGlvbiBfX2VtdmFsX25ldyhoYW5kbGUsYXJnQ291bnQsYXJnVHlwZXMsYXJncyl7aGFuZGxlPXJlcXVpcmVIYW5kbGUoaGFuZGxlKTt2YXIgbmV3ZXI9X19uZXdlcnNbYXJnQ291bnRdO2lmKCFuZXdlcil7bmV3ZXI9Y3JhZnRFbXZhbEFsbG9jYXRvcihhcmdDb3VudCk7X19uZXdlcnNbYXJnQ291bnRdPW5ld2VyfXJldHVybiBuZXdlcihoYW5kbGUsYXJnVHlwZXMsYXJncyl9dmFyIGdsb2JhbD0oZnVuY3Rpb24oKXtyZXR1cm4gRnVuY3Rpb259KSgpKCJyZXR1cm4gdGhpcyIpKCk7ZnVuY3Rpb24gX19lbXZhbF9nZXRfZ2xvYmFsKG5hbWUpe25hbWU9Z2V0U3RyaW5nT3JTeW1ib2wobmFtZSk7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIoZ2xvYmFsW25hbWVdKX1mdW5jdGlvbiBfX2VtdmFsX2dldF9tb2R1bGVfcHJvcGVydHkobmFtZSl7bmFtZT1nZXRTdHJpbmdPclN5bWJvbChuYW1lKTtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihNb2R1bGVbbmFtZV0pfWZ1bmN0aW9uIF9fZW12YWxfZ2V0X3Byb3BlcnR5KGhhbmRsZSxrZXkpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7a2V5PXJlcXVpcmVIYW5kbGUoa2V5KTtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihoYW5kbGVba2V5XSl9ZnVuY3Rpb24gX19lbXZhbF9zZXRfcHJvcGVydHkoaGFuZGxlLGtleSx2YWx1ZSl7aGFuZGxlPXJlcXVpcmVIYW5kbGUoaGFuZGxlKTtrZXk9cmVxdWlyZUhhbmRsZShrZXkpO3ZhbHVlPXJlcXVpcmVIYW5kbGUodmFsdWUpO2hhbmRsZVtrZXldPXZhbHVlfWZ1bmN0aW9uIF9fZW12YWxfYXMoaGFuZGxlLHJldHVyblR5cGUsZGVzdHJ1Y3RvcnNSZWYpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7cmV0dXJuVHlwZT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmV0dXJuVHlwZSwiZW12YWw6OmFzIik7dmFyIGRlc3RydWN0b3JzPVtdO3ZhciByZD1fX2VtdmFsX3JlZ2lzdGVyKGRlc3RydWN0b3JzKTtIRUFQMzJbZGVzdHJ1Y3RvcnNSZWY+PjJdPXJkO3JldHVybiByZXR1cm5UeXBlWyJ0b1dpcmVUeXBlIl0oZGVzdHJ1Y3RvcnMsaGFuZGxlKX1mdW5jdGlvbiBfX2VtdmFsX2NhbGwoaGFuZGxlLGFyZ0NvdW50LGFyZ1R5cGVzLGFyZ3Ype2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7dmFyIHR5cGVzPWxvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgYXJncz1uZXcgQXJyYXkoYXJnQ291bnQpO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQ7KytpKXt2YXIgdHlwZT10eXBlc1tpXTthcmdzW2ldPXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJndik7YXJndis9dHlwZS5hcmdQYWNrQWR2YW5jZX12YXIgcnY9aGFuZGxlLmFwcGx5KHVuZGVmaW5lZCxhcmdzKTtyZXR1cm4gX19lbXZhbF9yZWdpc3Rlcihydil9ZnVuY3Rpb24gbG9va3VwVHlwZXMoYXJnQ291bnQsYXJnVHlwZXMsYXJnV2lyZVR5cGVzKXt2YXIgYT1uZXcgQXJyYXkoYXJnQ291bnQpO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQ7KytpKXthW2ldPXJlcXVpcmVSZWdpc3RlcmVkVHlwZShIRUFQMzJbKGFyZ1R5cGVzPj4yKStpXSwicGFyYW1ldGVyICIraSl9cmV0dXJuIGF9ZnVuY3Rpb24gYWxsb2NhdGVEZXN0cnVjdG9ycyhkZXN0cnVjdG9yc1JlZil7dmFyIGRlc3RydWN0b3JzPVtdO0hFQVAzMltkZXN0cnVjdG9yc1JlZj4+Ml09X19lbXZhbF9yZWdpc3RlcihkZXN0cnVjdG9ycyk7cmV0dXJuIGRlc3RydWN0b3JzfXZhciBtZXRob2RDYWxsZXJzPVt1bmRlZmluZWRdO2Z1bmN0aW9uIGFkZE1ldGhvZENhbGxlcihjYWxsZXIpe3ZhciBpZD1tZXRob2RDYWxsZXJzLmxlbmd0aDttZXRob2RDYWxsZXJzLnB1c2goY2FsbGVyKTtyZXR1cm4gaWR9ZnVuY3Rpb24gX19lbXZhbF9nZXRfbWV0aG9kX2NhbGxlcihhcmdDb3VudCxhcmdUeXBlcyl7dmFyIHR5cGVzPWxvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgcmV0VHlwZT10eXBlc1swXTt2YXIgc2lnbmF0dXJlTmFtZT1yZXRUeXBlLm5hbWUrIl8kIit0eXBlcy5zbGljZSgxKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWV9KSkuam9pbigiXyIpKyIkIjt2YXIgcGFyYW1zPVsicmV0VHlwZSJdO3ZhciBhcmdzPVtyZXRUeXBlXTt2YXIgYXJnc0xpc3Q9IiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7YXJnc0xpc3QrPShpIT09MD8iLCAiOiIiKSsiYXJnIitpO3BhcmFtcy5wdXNoKCJhcmdUeXBlIitpKTthcmdzLnB1c2godHlwZXNbMStpXSl9dmFyIGZ1bmN0aW9uQm9keT0icmV0dXJuIGZ1bmN0aW9uIChoYW5kbGUsIG5hbWUsIGRlc3RydWN0b3JzLCBhcmdzKSB7XG4iO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMTsrK2kpe2Z1bmN0aW9uQm9keSs9IiAgICB2YXIgYXJnIitpKyIgPSBhcmdUeXBlIitpKyIucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyk7XG4iKyIgICAgYXJncyArPSBhcmdUeXBlIitpKyIuYXJnUGFja0FkdmFuY2U7XG4ifWZ1bmN0aW9uQm9keSs9IiAgICB2YXIgcnYgPSBoYW5kbGVbbmFtZV0oIithcmdzTGlzdCsiKTtcbiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7aWYodHlwZXNbaSsxXVsiZGVsZXRlT2JqZWN0Il0pe2Z1bmN0aW9uQm9keSs9IiAgICBhcmdUeXBlIitpKyIuZGVsZXRlT2JqZWN0KGFyZyIraSsiKTtcbiJ9fWZ1bmN0aW9uQm9keSs9IiAgICByZXR1cm4gcmV0VHlwZS50b1dpcmVUeXBlKGRlc3RydWN0b3JzLCBydik7XG4iKyJ9O1xuIjtwYXJhbXMucHVzaChmdW5jdGlvbkJvZHkpO3ZhciBpbnZva2VyRnVuY3Rpb249bmV3XyhGdW5jdGlvbixwYXJhbXMpLmFwcGx5KG51bGwsYXJncyk7cmV0dXJuIGFkZE1ldGhvZENhbGxlcihjcmVhdGVOYW1lZEZ1bmN0aW9uKHNpZ25hdHVyZU5hbWUsaW52b2tlckZ1bmN0aW9uKSl9ZnVuY3Rpb24gX19lbXZhbF9jYWxsX21ldGhvZChjYWxsZXIsaGFuZGxlLG1ldGhvZE5hbWUsZGVzdHJ1Y3RvcnNSZWYsYXJncyl7Y2FsbGVyPW1ldGhvZENhbGxlcnNbY2FsbGVyXTtoYW5kbGU9cmVxdWlyZUhhbmRsZShoYW5kbGUpO21ldGhvZE5hbWU9Z2V0U3RyaW5nT3JTeW1ib2wobWV0aG9kTmFtZSk7cmV0dXJuIGNhbGxlcihoYW5kbGUsbWV0aG9kTmFtZSxhbGxvY2F0ZURlc3RydWN0b3JzKGRlc3RydWN0b3JzUmVmKSxhcmdzKX1mdW5jdGlvbiBfX2VtdmFsX2hhc19mdW5jdGlvbihoYW5kbGUsbmFtZSxjbGFzc1R5cGUpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7bmFtZT1nZXRTdHJpbmdPclN5bWJvbChuYW1lKTtjbGFzc1R5cGU9cmVxdWlyZVJlZ2lzdGVyZWRUeXBlKGNsYXNzVHlwZSwiY2xhc3Mgd3JhcHBlciBmaWx0ZXIiKTt2YXIgZmlsdGVyPWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGVbbmFtZV07cmV0dXJuIGhhbmRsZVtuYW1lXWluc3RhbmNlb2YgRnVuY3Rpb24mJihmaWx0ZXI9PT11bmRlZmluZWR8fGhhbmRsZVtuYW1lXSE9PWZpbHRlcil9ZnVuY3Rpb24gX19lbXZhbF90eXBlb2YoaGFuZGxlKXtoYW5kbGU9cmVxdWlyZUhhbmRsZShoYW5kbGUpO3JldHVybiBfX2VtdmFsX3JlZ2lzdGVyKHR5cGVvZiBoYW5kbGUpfWlmKE1vZHVsZVsicHJlSW5pdCJdKXtpZih0eXBlb2YgTW9kdWxlWyJwcmVJbml0Il09PSJmdW5jdGlvbiIpTW9kdWxlWyJwcmVJbml0Il09W01vZHVsZVsicHJlSW5pdCJdXTt3aGlsZShNb2R1bGVbInByZUluaXQiXS5sZW5ndGg+MCl7TW9kdWxlWyJwcmVJbml0Il0ucG9wKCkoKX19dmFyIHNob3VsZFJ1bk5vdz10cnVlO2lmKE1vZHVsZVsibm9Jbml0aWFsUnVuIl0pe3Nob3VsZFJ1bk5vdz1mYWxzZX1ydW4oKQoKCgoKLy8gbGF6LWxvYWRlci13b3JrZXIuanMKLy8KCi8vaW1wb3J0U2NyaXB0cygnbGF6LXBlcmYuanMnKTsKCnZhciBpbnN0YW5jZSA9IG51bGw7IC8vIGxhei1wZXJmIGluc3RhbmNlCgpmdW5jdGlvbiByZWFkQXMoYnVmLCBUeXBlLCBvZmZzZXQsIGNvdW50KSB7Cgljb3VudCA9IChjb3VudCA9PT0gdW5kZWZpbmVkIHx8IGNvdW50ID09PSAwID8gMSA6IGNvdW50KTsKCXZhciBzdWIgPSBidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBUeXBlLkJZVEVTX1BFUl9FTEVNRU5UICogY291bnQpOwoKCXZhciByID0gbmV3IFR5cGUoc3ViKTsKCWlmIChjb3VudCA9PT0gdW5kZWZpbmVkIHx8IGNvdW50ID09PSAxKQoJCXJldHVybiByWzBdOwoKCXZhciByZXQgPSBbXTsKCWZvciAodmFyIGkgPSAwIDsgaSA8IGNvdW50IDsgaSArKykgewoJCXJldC5wdXNoKHJbaV0pOwoJfQoKCXJldHVybiByZXQ7Cn0KCmZ1bmN0aW9uIHBhcnNlTEFTSGVhZGVyKGFycmF5YnVmZmVyKSB7Cgl2YXIgbyA9IHt9OwoKCW8ucG9pbnRzT2Zmc2V0ID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50MzJBcnJheSwgMzIqMyk7CglvLnBvaW50c0Zvcm1hdElkID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50OEFycmF5LCAzMiozKzgpOwoJby5wb2ludHNTdHJ1Y3RTaXplID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50MTZBcnJheSwgMzIqMys4KzEpOwoJby5wb2ludHNDb3VudCA9IHJlYWRBcyhhcnJheWJ1ZmZlciwgVWludDMyQXJyYXksIDMyKjMgKyAxMSk7CgoKCXZhciBzdGFydCA9IDMyKjMgKyAzNTsKCW8uc2NhbGUgPSByZWFkQXMoYXJyYXlidWZmZXIsIEZsb2F0NjRBcnJheSwgc3RhcnQsIDMpOyBzdGFydCArPSAyNDsgLy8gOCozCglvLm9mZnNldCA9IHJlYWRBcyhhcnJheWJ1ZmZlciwgRmxvYXQ2NEFycmF5LCBzdGFydCwgMyk7IHN0YXJ0ICs9IDI0OwoKCXZhciBib3VuZHMgPSByZWFkQXMoYXJyYXlidWZmZXIsIEZsb2F0NjRBcnJheSwgc3RhcnQsIDYpOyBzdGFydCArPSA0ODsgLy8gOCo2OwoJby5tYXhzID0gW2JvdW5kc1swXSwgYm91bmRzWzJdLCBib3VuZHNbNF1dOwoJby5taW5zID0gW2JvdW5kc1sxXSwgYm91bmRzWzNdLCBib3VuZHNbNV1dOwoKCXJldHVybiBvOwp9CgpmdW5jdGlvbiBoYW5kbGVFdmVudChtc2cpIHsKCXN3aXRjaChtc2cudHlwZSkgewoJCWNhc2UgIm9wZW4iOgoJCQl0cnkgewoJCQkJaW5zdGFuY2UgPSBuZXcgTW9kdWxlLkxBU1ppcCgpOwoJCQkJdmFyIGFiSW50ID0gbmV3IFVpbnQ4QXJyYXkobXNnLmFycmF5YnVmZmVyKTsKCQkJCXZhciBidWYgPSBNb2R1bGUuX21hbGxvYyhtc2cuYXJyYXlidWZmZXIuYnl0ZUxlbmd0aCk7CgoJCQkJaW5zdGFuY2UuYXJyYXlidWZmZXIgPSBtc2cuYXJyYXlidWZmZXI7CgkJCQlpbnN0YW5jZS5idWYgPSBidWY7CgkJCQlNb2R1bGUuSEVBUFU4LnNldChhYkludCwgYnVmKTsKCQkJCWluc3RhbmNlLm9wZW4oYnVmLCBtc2cuYXJyYXlidWZmZXIuYnl0ZUxlbmd0aCk7CgoJCQkJaW5zdGFuY2UucmVhZE9mZnNldCA9IDA7CgoJCQkJcG9zdE1lc3NhZ2UoeyB0eXBlOiAib3BlbiIsIHN0YXR1czogMX0pOwoJCQl9CgkJCWNhdGNoKGUpIHsKCQkJCXBvc3RNZXNzYWdlKHsgdHlwZTogIm9wZW4iLCBzdGF0dXM6IDAsIGRldGFpbHM6IGUgfSk7CgkJCX0KCQkJYnJlYWs7CgoJCWNhc2UgImhlYWRlciI6CgkJCWlmICghaW5zdGFuY2UpCgkJCQl0aHJvdyBuZXcgRXJyb3IoIllvdSBuZWVkIHRvIG9wZW4gdGhlIGZpbGUgYmVmb3JlIHRyeWluZyB0byByZWFkIGhlYWRlciIpOwoKCgoJCQl2YXIgaGVhZGVyID0gcGFyc2VMQVNIZWFkZXIoaW5zdGFuY2UuYXJyYXlidWZmZXIpOwoJCQloZWFkZXIucG9pbnRzRm9ybWF0SWQgJj0gMHgzZjsKCQkJaW5zdGFuY2UuaGVhZGVyID0gaGVhZGVyOwoJCQlwb3N0TWVzc2FnZSh7dHlwZTogImhlYWRlciIsIHN0YXR1czogMSwgaGVhZGVyOiBoZWFkZXJ9KTsKCQkJYnJlYWs7CgoJCWNhc2UgInJlYWQiOgoJCQlpZiAoIWluc3RhbmNlKQoJCQkJdGhyb3cgbmV3IEVycm9yKCJZb3UgbmVlZCB0byBvcGVuIHRoZSBmaWxlIGJlZm9yZSB0cnlpbmcgdG8gcmVhZCBzdHVmZiIpOwoKCQkJdmFyIHN0YXJ0ID0gbXNnLnN0YXJ0LCBjb3VudCA9IG1zZy5jb3VudCwgc2tpcCA9IG1zZy5za2lwOwoJCQl2YXIgbyA9IGluc3RhbmNlOwoKCQkJaWYgKCFvLmhlYWRlcikKCQkJCXRocm93IG5ldyBFcnJvcigiWW91IG5lZWQgdG8gcXVlcnkgaGVhZGVyIGJlZm9yZSByZWFkaW5nLCBJIG1haW50YWluIHN0YXRlIHRoYXQgd2F5LCBzb3JyeSA6KCIpOwoKCQkJdmFyIHBvaW50c1RvUmVhZCA9IE1hdGgubWluKGNvdW50ICogc2tpcCwgby5oZWFkZXIucG9pbnRzQ291bnQgLSBvLnJlYWRPZmZzZXQpOwoJCQl2YXIgYnVmZmVyU2l6ZSA9IE1hdGguY2VpbChwb2ludHNUb1JlYWQgLyBza2lwKTsKCQkJdmFyIHBvaW50c1JlYWQgPSAwOwoKCQkJdmFyIHRoaXNfYnVmID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyU2l6ZSAqIG8uaGVhZGVyLnBvaW50c1N0cnVjdFNpemUpOwoJCQl2YXIgYnVmX3JlYWQgPSBNb2R1bGUuX21hbGxvYyhvLmhlYWRlci5wb2ludHNTdHJ1Y3RTaXplKTsKCQkJZm9yICh2YXIgaSA9IDAgOyBpIDwgcG9pbnRzVG9SZWFkIDsgaSArKykgewoJCQkJby5nZXRQb2ludChidWZfcmVhZCk7CgoJCQkJaWYgKGkgJSBza2lwID09PSAwKSB7CgkJCQkJdmFyIGEgPSBuZXcgVWludDhBcnJheShNb2R1bGUuSEVBUFU4LmJ1ZmZlciwgYnVmX3JlYWQsIG8uaGVhZGVyLnBvaW50c1N0cnVjdFNpemUpOwoJCQkJCXRoaXNfYnVmLnNldChhLCBwb2ludHNSZWFkICogby5oZWFkZXIucG9pbnRzU3RydWN0U2l6ZSwgby5oZWFkZXIucG9pbnRzU3RydWN0U2l6ZSk7CgkJCQkJcG9pbnRzUmVhZCArKzsKCQkJCX0KCgkJCQlvLnJlYWRPZmZzZXQgKys7CgkJCX0KCgkJCXBvc3RNZXNzYWdlKHsKCQkJCXR5cGU6ICdoZWFkZXInLAoJCQkJc3RhdHVzOiAxLAoJCQkJYnVmZmVyOiB0aGlzX2J1Zi5idWZmZXIsCgkJCQljb3VudDogcG9pbnRzUmVhZCwKCQkJCWhhc01vcmVEYXRhOiBvLnJlYWRPZmZzZXQgPCBvLmhlYWRlci5wb2ludHNDb3VudAoJCQl9KTsKCgkJCWJyZWFrOwoKCgkJY2FzZSAiY2xvc2UiOgoJCQlpZiAoaW5zdGFuY2UgIT09IG51bGwpIHsKCQkJCWluc3RhbmNlLmRlbGV0ZSgpOwoJCQkJaW5zdGFuY2UgPSBudWxsOwoJCQl9CgkJCXBvc3RNZXNzYWdlKHsgdHlwZTogImNsb3NlIiwgc3RhdHVzOiAxfSk7CgkJCWJyZWFrOwoJfQp9Cgpvbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewoJdHJ5IHsKCQloYW5kbGVFdmVudChldmVudC5kYXRhKTsKCX0gY2F0Y2goZSkgewoJCXBvc3RNZXNzYWdlKHt0eXBlOiBldmVudC5kYXRhLnR5cGUsIHN0YXR1czogMCwgZGV0YWlsczogZX0pOwoJfQp9OwoKCg==")), +Potree.workers.lasdecoder=new Potree.WorkerManager(atob("CgovL3ZhciBwb2ludEZvcm1hdFJlYWRlcnMgPSB7Ci8vCTA6IGZ1bmN0aW9uKGR2KSB7Ci8vCQlyZXR1cm4gewovLwkJCSJwb3NpdGlvbiI6IFsgZHYuZ2V0SW50MzIoMCwgdHJ1ZSksIGR2LmdldEludDMyKDQsIHRydWUpLCBkdi5nZXRJbnQzMig4LCB0cnVlKV0sCi8vCQkJImludGVuc2l0eSI6IGR2LmdldFVpbnQxNigxMiwgdHJ1ZSksCi8vCQkJImNsYXNzaWZpY2F0aW9uIjogZHYuZ2V0VWludDgoMTYsIHRydWUpCi8vCQl9OwovLwl9LAovLwkxOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKQovLwkJfTsKLy8JfSwKLy8JMjogZnVuY3Rpb24oZHYpIHsKLy8JCXJldHVybiB7Ci8vCQkJInBvc2l0aW9uIjogWyBkdi5nZXRJbnQzMigwLCB0cnVlKSwgZHYuZ2V0SW50MzIoNCwgdHJ1ZSksIGR2LmdldEludDMyKDgsIHRydWUpXSwKLy8JCQkiaW50ZW5zaXR5IjogZHYuZ2V0VWludDE2KDEyLCB0cnVlKSwKLy8JCQkiY2xhc3NpZmljYXRpb24iOiBkdi5nZXRVaW50OCgxNiwgdHJ1ZSksCi8vCQkJImNvbG9yIjogW2R2LmdldFVpbnQxNigyMCwgdHJ1ZSksIGR2LmdldFVpbnQxNigyMiwgdHJ1ZSksIGR2LmdldFVpbnQxNigyNCwgdHJ1ZSldCi8vCQl9OwovLwl9LAovLwkzOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKSwKLy8JCQkiY29sb3IiOiBbZHYuZ2V0VWludDE2KDI4LCB0cnVlKSwgZHYuZ2V0VWludDE2KDMwLCB0cnVlKSwgZHYuZ2V0VWludDE2KDMyLCB0cnVlKV0KLy8JCX07Ci8vCX0KLy99OwovLwkKLy8JCi8vIERlY29kZXMgTEFTIHJlY29yZHMgaW50byBwb2ludHMKLy8KLy92YXIgTEFTRGVjb2RlciA9IGZ1bmN0aW9uKGJ1ZmZlciwgcG9pbnRGb3JtYXRJRCwgcG9pbnRTaXplLCBwb2ludHNDb3VudCwgc2NhbGUsIG9mZnNldCkgewovLwl0aGlzLmFycmF5YiA9IGJ1ZmZlcjsKLy8JdGhpcy5kZWNvZGVyID0gcG9pbnRGb3JtYXRSZWFkZXJzW3BvaW50Rm9ybWF0SURdOwovLwl0aGlzLnBvaW50c0NvdW50ID0gcG9pbnRzQ291bnQ7Ci8vCXRoaXMucG9pbnRTaXplID0gcG9pbnRTaXplOwovLwl0aGlzLnNjYWxlID0gc2NhbGU7Ci8vCXRoaXMub2Zmc2V0ID0gb2Zmc2V0OwovL307Ci8vCi8vTEFTRGVjb2Rlci5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbihpbmRleCkgewovLwlpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucG9pbnRzQ291bnQpCi8vCQl0aHJvdyBuZXcgRXJyb3IoIlBvaW50IGluZGV4IG91dCBvZiByYW5nZSIpOwovLwovLwl2YXIgZHYgPSBuZXcgRGF0YVZpZXcodGhpcy5hcnJheWIsIGluZGV4ICogdGhpcy5wb2ludFNpemUsIHRoaXMucG9pbnRTaXplKTsKLy8JcmV0dXJuIHRoaXMuZGVjb2Rlcihkdik7Ci8vfTsKCm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KXsKCXZhciBidWZmZXIgPSBldmVudC5kYXRhLmJ1ZmZlcjsKCXZhciBudW1Qb2ludHMgPSBldmVudC5kYXRhLm51bVBvaW50czsKCXZhciBwb2ludFNpemUgPSBldmVudC5kYXRhLnBvaW50U2l6ZTsKCXZhciBwb2ludEZvcm1hdElEID0gZXZlbnQuZGF0YS5wb2ludEZvcm1hdElEOwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCXZhciBvZmZzZXQgPSBldmVudC5kYXRhLm9mZnNldDsKCXZhciBtaW5zID0gZXZlbnQuZGF0YS5taW5zOwoJdmFyIG1heHMgPSBldmVudC5kYXRhLm1heHM7Cgl2YXIgYmJPZmZzZXQgPSBldmVudC5kYXRhLmJiT2Zmc2V0OwoJCgl2YXIgdGVtcCA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKCXZhciB0ZW1wVWludDggPSBuZXcgVWludDhBcnJheSh0ZW1wKTsKCXZhciB0ZW1wVWludDE2ID0gbmV3IFVpbnQxNkFycmF5KHRlbXApOwoJdmFyIHRlbXBGbG9hdDMyID0gbmV3IEZsb2F0MzJBcnJheSh0ZW1wKTsKCXZhciB0ZW1wSW50MzIgPSBuZXcgSW50MzJBcnJheSh0ZW1wKTsKCXZhciBidWZmZXJWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKCQoJdmFyIHBCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGNCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGlCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KTsKCXZhciBjbEJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBybkJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBwc0J1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzICogMik7CgkKCXZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KHBCdWZmKTsKCXZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkFycmF5KGNCdWZmKTsKCXZhciBpbnRlbnNpdGllcyA9IG5ldyBGbG9hdDMyQXJyYXkoaUJ1ZmYpOwoJdmFyIGNsYXNzaWZpY2F0aW9ucyA9IG5ldyBVaW50OEFycmF5KGNsQnVmZik7Cgl2YXIgcmV0dXJuTnVtYmVycyA9IG5ldyBVaW50OEFycmF5KHJuQnVmZik7Cgl2YXIgcG9pbnRTb3VyY2VJRHMgPSBuZXcgVWludDE2QXJyYXkocHNCdWZmKTsKCQoJCgkvLyB0ZW1wIGFycmF5cyBzZWVtIHRvIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gRGF0YVZpZXdzCgkvLyBhdCB0aGUgbW9tZW50OiBodHRwOi8vanNwZXJmLmNvbS9kYXRhdmlldy12cy10ZW1wb3JhcnktZmxvYXQ2NGFycmF5Cglmb3IodmFyIGkgPSAwOyBpIDwgbnVtUG9pbnRzOyBpKyspewoJCgkJLy8gUE9TSVRJT04KCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzBdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMV07CgkJdGVtcFVpbnQ4WzJdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyXTsKCQl0ZW1wVWludDhbM10gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzNdOwoJCXZhciB4ID0gdGVtcEludDMyWzBdOwoJCQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrNF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs1XTsKCQl0ZW1wVWludDhbMl0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzZdOwoJCXRlbXBVaW50OFszXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrN107CgkJdmFyIHkgPSB0ZW1wSW50MzJbMF07CgkJCgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs4XTsKCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzldOwoJCXRlbXBVaW50OFsyXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTBdOwoJCXRlbXBVaW50OFszXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTFdOwoJCXZhciB6ID0gdGVtcEludDMyWzBdOwoJCQoJCXBvc2l0aW9uc1szKmkrMF0gPSB4ICogc2NhbGVbMF0gKyBvZmZzZXRbMF0gKyBiYk9mZnNldFswXTsKCQlwb3NpdGlvbnNbMyppKzFdID0geSAqIHNjYWxlWzFdICsgb2Zmc2V0WzFdICsgYmJPZmZzZXRbMV07CgkJcG9zaXRpb25zWzMqaSsyXSA9IHogKiBzY2FsZVsyXSArIG9mZnNldFsyXSArIGJiT2Zmc2V0WzJdOwoJCQoJCS8vIElOVEVOU0lUWQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTJdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTNdOwoJCXZhciBpbnRlbnNpdHkgPSB0ZW1wVWludDE2WzBdOwoJCWludGVuc2l0aWVzW2ldID0gaW50ZW5zaXR5OwoJCQoJCS8vIFJFVFVSTiBOVU1CRVIsIHN0b3JlZCBpbiB0aGUgZmlyc3QgMyBiaXRzCgkJdmFyIHJldHVybk51bWJlciA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTRdICYgNzsKCQlyZXR1cm5OdW1iZXJzW2ldID0gcmV0dXJuTnVtYmVyOwoJCQoJCS8vIENMQVNTSUZJQ0FUSU9OCgkJdmFyIGNsYXNzaWZpY2F0aW9uID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxNV07CgkJY2xhc3NpZmljYXRpb25zW2ldID0gY2xhc3NpZmljYXRpb247CgkJCgkJLy8gUE9JTlQgU09VUkNFIElECgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxOF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxOV07CgkJdmFyIHBvaW50U291cmNlSUQgPSB0ZW1wVWludDE2WzBdOwoJCXBvaW50U291cmNlSURzW2ldID0gcG9pbnRTb3VyY2VJRDsKCQkKCQkvLyBDT0xPUiwgaWYgYXZhaWxhYmxlCgkJaWYocG9pbnRGb3JtYXRJRCA9PT0gMil7CgkJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjBdOwoJCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzIxXTsKCQkJdmFyIHIgPSB0ZW1wVWludDE2WzBdOwoJCQkKCQkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyMl07CgkJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjNdOwoJCQl2YXIgZyA9IHRlbXBVaW50MTZbMF07CgkJCQoJCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzI0XTsKCQkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyNV07CgkJCXZhciBiID0gdGVtcFVpbnQxNlswXTsKCQkJCgkJCWNvbG9yc1szKmkrMF0gPSByIC8gNjU1MzY7CgkJCWNvbG9yc1szKmkrMV0gPSBnIC8gNjU1MzY7CgkJCWNvbG9yc1szKmkrMl0gPSBiIC8gNjU1MzY7CgkJfQoJfQoJCgl2YXIgbWVzc2FnZSA9IHsKCQlwb3NpdGlvbjogcEJ1ZmYsIAoJCWNvbG9yOiBjQnVmZiwgCgkJaW50ZW5zaXR5OiBpQnVmZiwKCQljbGFzc2lmaWNhdGlvbjogY2xCdWZmLAoJCXJldHVybk51bWJlcjogcm5CdWZmLAoJCXBvaW50U291cmNlSUQ6IHBzQnVmZn07CgkJCgl2YXIgdHJhbnNmZXJhYmxlcyA9IFsKCQltZXNzYWdlLnBvc2l0aW9uLAoJCW1lc3NhZ2UuY29sb3IsIAoJCW1lc3NhZ2UuaW50ZW5zaXR5LAoJCW1lc3NhZ2UuY2xhc3NpZmljYXRpb24sCgkJbWVzc2FnZS5yZXR1cm5OdW1iZXIsCgkJbWVzc2FnZS5wb2ludFNvdXJjZUlEXTsKCQkKCXBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRyYW5zZmVyYWJsZXMpOwp9Cg==")); \ No newline at end of file diff --git a/build/js/potree.js b/build/js/potree.js index ac14ed90f2..229997249f 100644 --- a/build/js/potree.js +++ b/build/js/potree.js @@ -3903,20 +3903,20 @@ Potree.PointCloudOctree.prototype.updateProfileRequests = function(){ } }; -Potree.PointCloudOctree.prototype.updateMaterial = function(vn, camera, renderer){ - this.material.fov = camera.fov * (Math.PI / 180); - this.material.screenWidth = renderer.domElement.clientWidth; - this.material.screenHeight = renderer.domElement.clientHeight; - this.material.spacing = this.pcoGeometry.spacing; - this.material.near = camera.near; - this.material.far = camera.far; - this.material.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.size().x; +Potree.PointCloudOctree.prototype.updateMaterial = function(material, vn, camera, renderer){ + material.fov = camera.fov * (Math.PI / 180); + material.screenWidth = renderer.domElement.clientWidth; + material.screenHeight = renderer.domElement.clientHeight; + material.spacing = this.pcoGeometry.spacing; + material.near = camera.near; + material.far = camera.far; + material.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.size().x; - if(this.material.pointSizeType){ - if(this.material.pointSizeType === Potree.PointSizeType.ADAPTIVE - || this.material.pointColorType === Potree.PointColorType.OCTREE_DEPTH){ + if(material.pointSizeType){ + if(material.pointSizeType === Potree.PointSizeType.ADAPTIVE + || material.pointColorType === Potree.PointColorType.OCTREE_DEPTH){ - this.updateVisibilityTexture(this.material, vn); + this.updateVisibilityTexture(material, vn); } } }; @@ -4049,16 +4049,7 @@ Potree.PointCloudOctree.prototype.update = function(camera, renderer){ vn.push(this.visibleNodes[i].node); } - // update visibility texture - if(this.material.pointSizeType){ - if(this.material.pointSizeType === Potree.PointSizeType.ADAPTIVE - || this.material.pointColorType === Potree.PointColorType.OCTREE_DEPTH){ - - this.updateVisibilityTexture(this.material, vn); - } - } - - this.updateMaterial(vn, camera, renderer); + this.updateMaterial(this.material, vn, camera, renderer); Potree.PointCloudOctree.lru.freeMemory(); }; @@ -4711,25 +4702,14 @@ Potree.PointCloudOctree.prototype.pick = function(renderer, camera, ray, params) if(!this.pickMaterial){ this.pickMaterial = new Potree.PointCloudMaterial(); this.pickMaterial.pointColorType = Potree.PointColorType.POINT_INDEX; - this.pickMaterial.pointSizeType = Potree.PointSizeType.FIXED; } this.pickMaterial.pointSizeType = this.material.pointSizeType; this.pickMaterial.size = this.material.size; - - if(this.pickMaterial.pointSizeType === Potree.PointSizeType.ADAPTIVE){ - this.updateVisibilityTexture(this.pickMaterial, nodes); - } - - this.pickMaterial.fov = this.material.fov; - this.pickMaterial.screenWidth = this.material.screenWidth; - this.pickMaterial.screenHeight = this.material.screenHeight; - this.pickMaterial.spacing = this.material.spacing; - this.pickMaterial.near = this.material.near; - this.pickMaterial.far = this.material.far; this.pickMaterial.pointShape = this.material.pointShape; + this.pickMaterial.interpolate = this.material.interpolate; - + this.updateMaterial(this.pickMaterial, nodes, camera, renderer); var _gl = renderer.context; diff --git a/build/js/potree.min.js b/build/js/potree.min.js index 921a2f2cdc..4d7089a740 100644 --- a/build/js/potree.min.js +++ b/build/js/potree.min.js @@ -1,8 +1,6 @@ function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var n=new THREE.Vector3(e.x,e.y,.5);n.unproject(t);for(var r=n.sub(t.position).normalize(),a=new THREE.Ray(t.position,r),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var n=o.getContext("2d");e=new e.constructor(e);for(var r=0;r 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying float vDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float depth = texture2D(depthMap, uv).r;"," if(vLinearDepth > depth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float w = 1.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += w * vRadius;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," gl_FragDepthEXT = (pos.z + 1.0) / 2.0;"," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(vColor, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(vColor, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," ","}","","",""].join("\n"), Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," vec4 color = texture2D(texture, vUv); "," float depth = texture2D(depthMap, vUv).g; "," color = color / color.w;"," gl_FragColor = color; "," "," gl_FragDepthEXT = depth;","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld();var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var n=o.radius,r=this.fov*Math.PI/180;this.aspect<1&&(r*=this.aspect);var a=Math.abs(n/Math.sin(r/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var n=JSON.parse(o.responseText),r=new Potree.Version(n.version);i.octreeDir=0===n.octreeDir.indexOf("http")?n.octreeDir:e+"/../"+n.octreeDir,i.spacing=n.spacing,i.hierarchyStepSize=n.hierarchyStepSize,i.pointAttributes=n.pointAttributes;var a=new THREE.Vector3(n.boundingBox.lx,n.boundingBox.ly,n.boundingBox.lz),s=new THREE.Vector3(n.boundingBox.ux,n.boundingBox.uy,n.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();n.tightBoundingBox&&(d.min.copy(new THREE.Vector3(n.tightBoundingBox.lx,n.tightBoundingBox.ly,n.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(n.tightBoundingBox.ux,n.tightBoundingBox.uy,n.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):"LAZ"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):(i.loader=new Potree.BinaryLoader(n.version,l,n.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=r.upTo("1.5")?n.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,r.upTo("1.4"))for(var m=1;m=n?i.pointsCount:i.pointsCount/n,s=function(){var e=t.readData(1e6,0,n);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),r+=e.count,Potree.LasLazLoader.progressCB(r/a),e.hasMoreData?s():(i.totalRead=r,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(e,t){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),n=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),n.add(e.pcoGeometry.offset),i.onmessage=function(r){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=r.data.position,d=r.data.color,c=r.data.intensity,u=new Uint8Array(r.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(r.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(r.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,n),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var r={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(r,[r.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(0),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,n=e.minSize||1,r=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16711680)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:n,maxSize:r,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;ir;r++)for(var a=0;i>a;a++){var s,l=r+t*a;s=e[r]?e[r]:e.DEFAULT,n[3*l+0]=255*s.r,n[3*l+1]=255*s.g,n[3*l+2]=255*s.b}return o},THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",n,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function n(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",n,!1),l.dispatchEvent(x),P=T.NONE)}function r(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,n=o.clone(),r=n.length();r*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*r/i.clientHeight),l.panUp(2*t*r/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed), -this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var n=(new THREE.Matrix4).makeRotationY(g),r=(new THREE.Matrix4).multiplyMatrices(n,this.object.matrix);this.object.quaternion.setFromRotationMatrix(r),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",r,!1),this.domElement.addEventListener("DOMMouseScroll",r,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function n(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",r,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function r(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",r,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(i*i+o*o);R.set(0,n),C.subVectors(R,P);var r=t.clientWidth,a=t.clientHeight,s=Math.sqrt(r*r+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,n=o.clone().sub(h.target),r=n.length();r*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*r/i.clientHeight),h.panUp(2*t*r/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),n=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var r=Math.min(1,this.fadeFactor*e);o+=r*w,n+=r*x,n=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,n)),n=Math.max(p,Math.min(Math.PI-p,n));var a=T.length();a+=(H-1)*a*r,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(r)),T.x=a*Math.sin(n)*Math.sin(o),T.y=a*Math.cos(n),T.z=a*Math.sin(n)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",n,!1),s.domElement.addEventListener("mouseup",r,!1)}}}function n(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function r(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",n,!1),s.domElement.removeEventListener("mouseup",r,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},n=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(n){var r=n.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(n,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*r*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},n=new THREE.Vector3(o.x,o.y,.5);n.unproject(f);var r=n.sub(f.position).normalize(),a=new THREE.Ray(f.position,r),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,r.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var r=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,r),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var n=i.children[o];n.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,n){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=n,this.loadQueue=[];var r=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(r,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var r=n.shift();if(r instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(r.boundingBox,r.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var r=c.loadQueue[0],u=r.geometryNode;if(u.loaded===!0&&void 0!==r.parent){var h=this.replaceProxy(r);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else r.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i){this.material.fov=t.fov*(Math.PI/180),this.material.screenWidth=i.domElement.clientWidth,this.material.screenHeight=i.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=t.near,this.material.far=t.far,this.material.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,this.material.pointSizeType&&(this.material.pointSizeType===Potree.PointSizeType.ADAPTIVE||this.material.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(this.material,e)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o,n){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var a=0;a=0;if(l)for(var d=0;d0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var t=0;t0;){{var a=r.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,r,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=n.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var n=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(n);for(var r={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dr;r++)if(void 0!==t.children[r]){var a=t.children[r],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),n=(new THREE.Matrix4).makeTranslation(r,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(n),a}}(r,a,o),d={start:r,end:a,points:s,project:l};i.push(d),o+=r.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,n){if(void 0===n){var r=[];r.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;r.length>0;){var f=r.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),n=e.clone();return n.applyMatrix4(t),n.applyMatrix4(o),n}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,n))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},n=o.pickWindowSize||17,r=this.nodesOnRay(this.visibleNodes,i);if(0===r.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX,this.pickMaterial.pointSizeType=Potree.PointSizeType.FIXED),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointSizeType===Potree.PointSizeType.ADAPTIVE&&this.updateVisibilityTexture(this.pickMaterial,r),this.pickMaterial.fov=this.material.fov,this.pickMaterial.screenWidth=this.material.screenWidth,this.pickMaterial.screenHeight=this.material.screenHeight,this.pickMaterial.spacing=this.material.spacing,this.pickMaterial.near=this.material.near,this.pickMaterial.far=this.material.far,this.pickMaterial.pointShape=this.material.pointShape;var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(n-1)/2,l.y-(n-1)/2,n,n),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),r.length>0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+D];else{for(var O=[],D=0;Dc;c++){var u=r[3*c+0],h=r[3*c+1],p=r[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/n.x),v=parseInt(a*(m.z-o.min.z)/n.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&r.x.5&&r.y0;){{var r=n.shift(),a=r.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,r.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),n[r+0]=c,n[r+1]=h,n[r+2]=u,r+=3}o.addAttribute("position",new THREE.BufferAttribute(n,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),n=0;o>n;n++)e+=i.substr(n*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],n=i.getUint8(0),r=i.getUint32(1,!0);e.numPoints=r,o.push({children:n,numPoints:r,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(n){console.log("fehler beim laden der punktwolke: "+n)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",n=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],r=THREE.ImageUtils.loadTextureCube(n,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:r},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var n=new THREE.LineBasicMaterial({color:o||8947848}),r=new THREE.Geometry,a=0;t>=a;a++)r.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),r.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(r,n,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var n=o.image.data,r=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,n[3*u+0]=255*(h/15+.05+p)*r[0],n[3*u+1]=255*(h/15+.05+p)*r[1],n[3*u+2]=255*(h/15+.05+p)*r[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(n)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(n)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,n=-t.radius,r=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(n>s)return 0;r=Math.min(r,s)}return r>=t.radius?2:1},Potree.Features=function(){var e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");if(null===t)return null;var i,o=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT),n=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT),r=(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.LOW_FLOAT),t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT)),a=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT),s=(t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.LOW_FLOAT),o.precision>0&&r.precision>0),l=n.precision>0&&a.precision>0;return i=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getExtension("OES_texture_float"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},precision:i}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,n=o+2*this.borderThickness,r=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=n,t.canvas.height=r,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*n,.01*r,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,n,r){e.beginPath(),e.moveTo(t+r,i),e.lineTo(t+o-r,i),e.quadraticCurveTo(t+o,i,t+o,i+r),e.lineTo(t+o,i+n-r),e.quadraticCurveTo(t+o,i+n,t+o-r,i+n),e.lineTo(t+r,i+n),e.quadraticCurveTo(t,i+n,t,i+n-r),e.lineTo(t,i+r),e.quadraticCurveTo(t,i,t+r,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},n=function(e){e.target.material.emissive.setHex(0)},r=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var n=e.spheres.indexOf(i.dragstart.object);e.setPosition(n,o)}},a=function(e){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",n),s.addEventListener("drag",r),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){var t=this.points[n];o.add(t)}o.divideScalar(this.points.length);for(var n=0;i>=n;n++){var r=n,a=n+1>i?0:n+1,s=0===n?i:n-1,t=this.points[r],l=this.points[a],d=this.points[s],c=this.spheres[r];c.position.copy(t),c.material.color=e.color;var u=this.edges[r];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>r||this.closed;var h=this.edgeLabels[n],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>r||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[n],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>r||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function n(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var n=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(n,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function r(e){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&r(e)}function s(e){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,n="undefined"!=typeof e.closed?e.closed:!1,r=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=n,a.maxMarkers=r,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){{var e=this.points[r],a=this.spheres[r],s=0===r?n:r-1,l=r===n?0:r+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[r],p=this.boxes[s];this.boxes[r],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var r=0;r0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed", -profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),n=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(n);var r=function(e){n.material.color.setHex(5592405)},a=function(e){n.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),n=t.clone().unproject(s.camera),r=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(r,n),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,n).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=n;n++){var r=2*Math.PI*n/o,a=3*Math.cos(r),l=3*Math.sin(r);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,n=0;nt;t++)n.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function n(e){}function r(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?r[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ac)&&(n=l,r=c)}}return n?n.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(e){if(u===c.INSERT_VOLUME){var t=l();if(t){this.activeVolume.position.copy(t);var o=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),n=(new THREE.Vector4(o.x,o.y,o.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(o.z/10));this.activeVolume.scale.set(n,n,n)}}for(var r=[],a=0;a=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",n,!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var n=0;nH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var n=0;n0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var t=0;t0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),n=0;n0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+D];else{for(var O=[],D=0;Dn?-1:n>r?1:0};t.sort(n);for(var r=[],a=0;a0&&(l+=1,d=r.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&r.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?r.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),n=e.byteLength/17,r=new Float32Array(3*n),a=new Float32Array(3*n),s=new Uint32Array(n),l=0;n>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;r[3*l+0]=d,r[3*l+1]=c,r[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(r,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*n),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=n}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"]); - -},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),n=new Potree.PointCloudArena4DGeometry;n.url=e,n.name=o.Name,n.provider=o.Provider,n.numNodes=o.Nodes,n.numPoints=o.Points,n.version=o.Version,n.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(n.spacing=o.Spacing);var r=n.boundingBox.min.clone().multiplyScalar(-1);n.boundingBox.min.add(r),n.boundingBox.max.add(r),n.offset=r;var a=n.boundingBox.center(),s=n.boundingBox.size().length()/2;n.boundingSphere=new THREE.Sphere(a,s),n.loadHierarchy(),t(n)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,n=new DataView(e),r=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=n.getUint8(3*l+0,!0),c=(n.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=r.length,s=Math.max(s,v.level),r.length>0){var g=r[r.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,r.push(v),v.isLeaf)for(var P=!1;!P&&r.length>0;){r.pop();var R=r[r.length-1];P=r.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file +this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var n=(new THREE.Matrix4).makeRotationY(g),r=(new THREE.Matrix4).multiplyMatrices(n,this.object.matrix);this.object.quaternion.setFromRotationMatrix(r),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",r,!1),this.domElement.addEventListener("DOMMouseScroll",r,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function n(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",r,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function r(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",r,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(i*i+o*o);R.set(0,n),C.subVectors(R,P);var r=t.clientWidth,a=t.clientHeight,s=Math.sqrt(r*r+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,n=o.clone().sub(h.target),r=n.length();r*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*r/i.clientHeight),h.panUp(2*t*r/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),n=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var r=Math.min(1,this.fadeFactor*e);o+=r*w,n+=r*x,n=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,n)),n=Math.max(p,Math.min(Math.PI-p,n));var a=T.length();a+=(H-1)*a*r,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(r)),T.x=a*Math.sin(n)*Math.sin(o),T.y=a*Math.cos(n),T.z=a*Math.sin(n)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",n,!1),s.domElement.addEventListener("mouseup",r,!1)}}}function n(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function r(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",n,!1),s.domElement.removeEventListener("mouseup",r,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},n=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(n){var r=n.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(n,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*r*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},n=new THREE.Vector3(o.x,o.y,.5);n.unproject(f);var r=n.sub(f.position).normalize(),a=new THREE.Ray(f.position,r),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,r.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var r=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,r),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var n=i.children[o];n.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,n){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=n,this.loadQueue=[];var r=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(r,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var r=n.shift();if(r instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(r.boundingBox,r.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var r=c.loadQueue[0],u=r.geometryNode;if(u.loaded===!0&&void 0!==r.parent){var h=this.replaceProxy(r);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else r.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i,o){e.fov=i.fov*(Math.PI/180),e.screenWidth=o.domElement.clientWidth,e.screenHeight=o.domElement.clientHeight,e.spacing=this.pcoGeometry.spacing,e.near=i.near,e.far=i.far,e.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,e.pointSizeType&&(e.pointSizeType===Potree.PointSizeType.ADAPTIVE||e.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(e,t)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o,n){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var a=0;a=0;if(l)for(var d=0;d0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var t=0;t0;){{var a=r.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,r,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=n.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var n=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(n);for(var r={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dr;r++)if(void 0!==t.children[r]){var a=t.children[r],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),n=(new THREE.Matrix4).makeTranslation(r,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(n),a}}(r,a,o),d={start:r,end:a,points:s,project:l};i.push(d),o+=r.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,n){if(void 0===n){var r=[];r.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;r.length>0;){var f=r.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),n=e.clone();return n.applyMatrix4(t),n.applyMatrix4(o),n}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,n))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},n=o.pickWindowSize||17,r=this.nodesOnRay(this.visibleNodes,i);if(0===r.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointShape=this.material.pointShape,this.pickMaterial.interpolate=this.material.interpolate,this.updateMaterial(this.pickMaterial,r,t,e);var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(n-1)/2,l.y-(n-1)/2,n,n),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),r.length>0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+D];else{for(var O=[],D=0;Dc;c++){var u=r[3*c+0],h=r[3*c+1],p=r[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/n.x),v=parseInt(a*(m.z-o.min.z)/n.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&r.x.5&&r.y0;){{var r=n.shift(),a=r.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,r.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){ +var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),n[r+0]=c,n[r+1]=h,n[r+2]=u,r+=3}o.addAttribute("position",new THREE.BufferAttribute(n,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),n=0;o>n;n++)e+=i.substr(n*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],n=i.getUint8(0),r=i.getUint32(1,!0);e.numPoints=r,o.push({children:n,numPoints:r,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(n){console.log("fehler beim laden der punktwolke: "+n)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",n=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],r=THREE.ImageUtils.loadTextureCube(n,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:r},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var n=new THREE.LineBasicMaterial({color:o||8947848}),r=new THREE.Geometry,a=0;t>=a;a++)r.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),r.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(r,n,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var n=o.image.data,r=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,n[3*u+0]=255*(h/15+.05+p)*r[0],n[3*u+1]=255*(h/15+.05+p)*r[1],n[3*u+2]=255*(h/15+.05+p)*r[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(n)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(n)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,n=-t.radius,r=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(n>s)return 0;r=Math.min(r,s)}return r>=t.radius?2:1},Potree.Features=function(){var e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");if(null===t)return null;var i,o=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT),n=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT),r=(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.LOW_FLOAT),t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT)),a=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT),s=(t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.LOW_FLOAT),o.precision>0&&r.precision>0),l=n.precision>0&&a.precision>0;return i=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getExtension("OES_texture_float"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},precision:i}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,n=o+2*this.borderThickness,r=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=n,t.canvas.height=r,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*n,.01*r,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,n,r){e.beginPath(),e.moveTo(t+r,i),e.lineTo(t+o-r,i),e.quadraticCurveTo(t+o,i,t+o,i+r),e.lineTo(t+o,i+n-r),e.quadraticCurveTo(t+o,i+n,t+o-r,i+n),e.lineTo(t+r,i+n),e.quadraticCurveTo(t,i+n,t,i+n-r),e.lineTo(t,i+r),e.quadraticCurveTo(t,i,t+r,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},n=function(e){e.target.material.emissive.setHex(0)},r=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var n=e.spheres.indexOf(i.dragstart.object);e.setPosition(n,o)}},a=function(e){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",n),s.addEventListener("drag",r),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){var t=this.points[n];o.add(t)}o.divideScalar(this.points.length);for(var n=0;i>=n;n++){var r=n,a=n+1>i?0:n+1,s=0===n?i:n-1,t=this.points[r],l=this.points[a],d=this.points[s],c=this.spheres[r];c.position.copy(t),c.material.color=e.color;var u=this.edges[r];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>r||this.closed;var h=this.edgeLabels[n],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>r||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[n],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>r||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function n(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var n=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(n,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function r(e){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&r(e)}function s(e){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,n="undefined"!=typeof e.closed?e.closed:!1,r=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=n,a.maxMarkers=r,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){{var e=this.points[r],a=this.spheres[r],s=0===r?n:r-1,l=r===n?0:r+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[r],p=this.boxes[s];this.boxes[r],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var r=0;r0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),n=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(n);var r=function(e){n.material.color.setHex(5592405)},a=function(e){n.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),n=t.clone().unproject(s.camera),r=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(r,n),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,n).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=n;n++){var r=2*Math.PI*n/o,a=3*Math.cos(r),l=3*Math.sin(r);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,n=0;nt;t++)n.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function n(e){}function r(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?r[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ac)&&(n=l,r=c)}}return n?n.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(e){if(u===c.INSERT_VOLUME){var t=l();if(t){this.activeVolume.position.copy(t);var o=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),n=(new THREE.Vector4(o.x,o.y,o.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(o.z/10));this.activeVolume.scale.set(n,n,n)}}for(var r=[],a=0;a=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",n,!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var n=0;nH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var n=0;n0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var t=0;t0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),n=0;n0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=r[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(G,W,N);X.applyMatrix4(this.matrixWorld),A[B]=X}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+D];else{for(var O=[],D=0;Dn?-1:n>r?1:0};t.sort(n);for(var r=[],a=0;a0&&(l+=1,d=r.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&r.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?r.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),n=e.byteLength/17,r=new Float32Array(3*n),a=new Float32Array(3*n),s=new Uint32Array(n),l=0;n>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;r[3*l+0]=d,r[3*l+1]=c,r[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(r,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*n),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=n}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),n=new Potree.PointCloudArena4DGeometry;n.url=e,n.name=o.Name,n.provider=o.Provider,n.numNodes=o.Nodes,n.numPoints=o.Points,n.version=o.Version,n.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(n.spacing=o.Spacing);var r=n.boundingBox.min.clone().multiplyScalar(-1);n.boundingBox.min.add(r),n.boundingBox.max.add(r),n.offset=r;var a=n.boundingBox.center(),s=n.boundingBox.size().length()/2;n.boundingSphere=new THREE.Sphere(a,s),n.loadHierarchy(), +t(n)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,n=new DataView(e),r=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=n.getUint8(3*l+0,!0),c=(n.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=r.length,s=Math.max(s,v.level),r.length>0){var g=r[r.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,r.push(v),v.isLeaf)for(var P=!1;!P&&r.length>0;){r.pop();var R=r[r.length-1];P=r.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file From 3f6dfdba1b87ba27283e55c874cd3bcfd182455d Mon Sep 17 00:00:00 2001 From: mschuetz Date: Tue, 1 Sep 2015 18:23:52 +0200 Subject: [PATCH 20/35] remove tightBoundingBox --- src/PointCloudOctree.js | 2 +- src/loader/POCLoader.js | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/src/PointCloudOctree.js b/src/PointCloudOctree.js index 6712a25023..3253999183 100644 --- a/src/PointCloudOctree.js +++ b/src/PointCloudOctree.js @@ -61,7 +61,7 @@ Potree.PointCloudOctree = function(geometry, material){ Potree.PointCloudOctree.lru = Potree.PointCloudOctree.lru || new LRU(); this.pcoGeometry = geometry; - this.boundingBox = this.pcoGeometry.tightBoundingBox; + this.boundingBox = this.pcoGeometry.boundingBox; this.boundingSphere = this.boundingBox.getBoundingSphere(); this.material = material || new Potree.PointCloudMaterial(); this.visiblePointsTarget = 2*1000*1000; diff --git a/src/loader/POCLoader.js b/src/loader/POCLoader.js index 89bf5f0f4c..c7e480ccd8 100644 --- a/src/loader/POCLoader.js +++ b/src/loader/POCLoader.js @@ -45,12 +45,6 @@ Potree.POCLoader.load = function load(url, callback) { var min = new THREE.Vector3(fMno.boundingBox.lx, fMno.boundingBox.ly, fMno.boundingBox.lz); var max = new THREE.Vector3(fMno.boundingBox.ux, fMno.boundingBox.uy, fMno.boundingBox.uz); var boundingBox = new THREE.Box3(min, max); - var tightBoundingBox = boundingBox.clone(); - - if(fMno.tightBoundingBox){ - tightBoundingBox.min.copy(new THREE.Vector3(fMno.tightBoundingBox.lx, fMno.tightBoundingBox.ly, fMno.tightBoundingBox.lz)); - tightBoundingBox.max.copy(new THREE.Vector3(fMno.tightBoundingBox.ux, fMno.tightBoundingBox.uy, fMno.tightBoundingBox.uz)); - } var offset = new THREE.Vector3(0,0,0); offset.set(-min.x, -min.y, -min.z); @@ -58,13 +52,8 @@ Potree.POCLoader.load = function load(url, callback) { boundingBox.min.add(offset); boundingBox.max.add(offset); - tightBoundingBox.min.add(offset); - tightBoundingBox.max.add(offset); - pco.boundingBox = boundingBox; - pco.tightBoundingBox = tightBoundingBox; pco.boundingSphere = boundingBox.getBoundingSphere(); - pco.tightBoundingSphere = tightBoundingBox.getBoundingSphere(); pco.offset = offset; if(fMno.pointAttributes === "LAS"){ pco.loader = new Potree.LasLazLoader(fMno.version); From 5b1f1df41b8f3e04760374efac05de73d3e6ae0b Mon Sep 17 00:00:00 2001 From: mschuetz Date: Tue, 1 Sep 2015 19:28:09 +0200 Subject: [PATCH 21/35] calculate tightBoundingBox for each node at load time --- build/js/laslaz.js | 2 +- build/js/laslaz.min.js | 2 +- build/js/potree.js | 27 +++++++++++++++++++++------ build/js/potree.min.js | 12 ++++++------ build/workers/BinaryDecoderWorker.js | 2 +- build/workers/lasdecoder-worker.js | 2 +- examples/viewer.html | 7 +++++-- src/PointCloudOctree.js | 6 +++++- src/loader/BinaryLoader.js | 10 +++++++--- src/loader/LasLazLoader.js | 9 ++++++++- src/workers/BinaryDecoderWorker.js | 11 +++++++++++ src/workers/LASDecoderWorker.js | 16 +++++++++++++++- 12 files changed, 82 insertions(+), 24 deletions(-) diff --git a/build/js/laslaz.js b/build/js/laslaz.js index b5386f8899..cfc3e5557f 100644 --- a/build/js/laslaz.js +++ b/build/js/laslaz.js @@ -1,2 +1,2 @@ Potree.workers.laslaz = new Potree.WorkerManager(atob("dmFyIE1vZHVsZTtpZighTW9kdWxlKU1vZHVsZT0odHlwZW9mIE1vZHVsZSE9PSJ1bmRlZmluZWQiP01vZHVsZTpudWxsKXx8e307dmFyIG1vZHVsZU92ZXJyaWRlcz17fTtmb3IodmFyIGtleSBpbiBNb2R1bGUpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKXttb2R1bGVPdmVycmlkZXNba2V5XT1Nb2R1bGVba2V5XX19dmFyIEVOVklST05NRU5UX0lTX05PREU9dHlwZW9mIHByb2Nlc3M9PT0ib2JqZWN0IiYmdHlwZW9mIHJlcXVpcmU9PT0iZnVuY3Rpb24iO3ZhciBFTlZJUk9OTUVOVF9JU19XRUI9dHlwZW9mIHdpbmRvdz09PSJvYmplY3QiO3ZhciBFTlZJUk9OTUVOVF9JU19XT1JLRVI9dHlwZW9mIGltcG9ydFNjcmlwdHM9PT0iZnVuY3Rpb24iO3ZhciBFTlZJUk9OTUVOVF9JU19TSEVMTD0hRU5WSVJPTk1FTlRfSVNfV0VCJiYhRU5WSVJPTk1FTlRfSVNfTk9ERSYmIUVOVklST05NRU5UX0lTX1dPUktFUjtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtpZighTW9kdWxlWyJwcmludCJdKU1vZHVsZVsicHJpbnQiXT1mdW5jdGlvbiBwcmludCh4KXtwcm9jZXNzWyJzdGRvdXQiXS53cml0ZSh4KyJcbiIpfTtpZighTW9kdWxlWyJwcmludEVyciJdKU1vZHVsZVsicHJpbnRFcnIiXT1mdW5jdGlvbiBwcmludEVycih4KXtwcm9jZXNzWyJzdGRlcnIiXS53cml0ZSh4KyJcbiIpfTt2YXIgbm9kZUZTPXJlcXVpcmUoImZzIik7dmFyIG5vZGVQYXRoPXJlcXVpcmUoInBhdGgiKTtNb2R1bGVbInJlYWQiXT1mdW5jdGlvbiByZWFkKGZpbGVuYW1lLGJpbmFyeSl7ZmlsZW5hbWU9bm9kZVBhdGhbIm5vcm1hbGl6ZSJdKGZpbGVuYW1lKTt2YXIgcmV0PW5vZGVGU1sicmVhZEZpbGVTeW5jIl0oZmlsZW5hbWUpO2lmKCFyZXQmJmZpbGVuYW1lIT1ub2RlUGF0aFsicmVzb2x2ZSJdKGZpbGVuYW1lKSl7ZmlsZW5hbWU9cGF0aC5qb2luKF9fZGlybmFtZSwiLi4iLCJzcmMiLGZpbGVuYW1lKTtyZXQ9bm9kZUZTWyJyZWFkRmlsZVN5bmMiXShmaWxlbmFtZSl9aWYocmV0JiYhYmluYXJ5KXJldD1yZXQudG9TdHJpbmcoKTtyZXR1cm4gcmV0fTtNb2R1bGVbInJlYWRCaW5hcnkiXT1mdW5jdGlvbiByZWFkQmluYXJ5KGZpbGVuYW1lKXtyZXR1cm4gTW9kdWxlWyJyZWFkIl0oZmlsZW5hbWUsdHJ1ZSl9O01vZHVsZVsibG9hZCJdPWZ1bmN0aW9uIGxvYWQoZil7Z2xvYmFsRXZhbChyZWFkKGYpKX07TW9kdWxlWyJhcmd1bWVudHMiXT1wcm9jZXNzWyJhcmd2Il0uc2xpY2UoMik7bW9kdWxlWyJleHBvcnRzIl09TW9kdWxlfWVsc2UgaWYoRU5WSVJPTk1FTlRfSVNfU0hFTEwpe2lmKCFNb2R1bGVbInByaW50Il0pTW9kdWxlWyJwcmludCJdPXByaW50O2lmKHR5cGVvZiBwcmludEVyciE9InVuZGVmaW5lZCIpTW9kdWxlWyJwcmludEVyciJdPXByaW50RXJyO2lmKHR5cGVvZiByZWFkIT0idW5kZWZpbmVkIil7TW9kdWxlWyJyZWFkIl09cmVhZH1lbHNle01vZHVsZVsicmVhZCJdPWZ1bmN0aW9uIHJlYWQoKXt0aHJvdyJubyByZWFkKCkgYXZhaWxhYmxlIChqc2M/KSJ9fU1vZHVsZVsicmVhZEJpbmFyeSJdPWZ1bmN0aW9uIHJlYWRCaW5hcnkoZil7cmV0dXJuIHJlYWQoZiwiYmluYXJ5Iil9O2lmKHR5cGVvZiBzY3JpcHRBcmdzIT0idW5kZWZpbmVkIil7TW9kdWxlWyJhcmd1bWVudHMiXT1zY3JpcHRBcmdzfWVsc2UgaWYodHlwZW9mIGFyZ3VtZW50cyE9InVuZGVmaW5lZCIpe01vZHVsZVsiYXJndW1lbnRzIl09YXJndW1lbnRzfXRoaXNbIk1vZHVsZSJdPU1vZHVsZTtldmFsKCJpZiAodHlwZW9mIGdjID09PSAnZnVuY3Rpb24nICYmIGdjLnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlXScpID4gMCkgdmFyIGdjID0gdW5kZWZpbmVkIil9ZWxzZSBpZihFTlZJUk9OTUVOVF9JU19XRUJ8fEVOVklST05NRU5UX0lTX1dPUktFUil7TW9kdWxlWyJyZWFkIl09ZnVuY3Rpb24gcmVhZCh1cmwpe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7eGhyLnNlbmQobnVsbCk7cmV0dXJuIHhoci5yZXNwb25zZVRleHR9O2lmKHR5cGVvZiBhcmd1bWVudHMhPSJ1bmRlZmluZWQiKXtNb2R1bGVbImFyZ3VtZW50cyJdPWFyZ3VtZW50c31pZih0eXBlb2YgY29uc29sZSE9PSJ1bmRlZmluZWQiKXtpZighTW9kdWxlWyJwcmludCJdKU1vZHVsZVsicHJpbnQiXT1mdW5jdGlvbiBwcmludCh4KXt9O2lmKCFNb2R1bGVbInByaW50RXJyIl0pTW9kdWxlWyJwcmludEVyciJdPWZ1bmN0aW9uIHByaW50RXJyKHgpe319ZWxzZXt2YXIgVFJZX1VTRV9EVU1QPWZhbHNlO2lmKCFNb2R1bGVbInByaW50Il0pTW9kdWxlWyJwcmludCJdPVRSWV9VU0VfRFVNUCYmdHlwZW9mIGR1bXAhPT0idW5kZWZpbmVkIj8oZnVuY3Rpb24oeCl7ZHVtcCh4KX0pOihmdW5jdGlvbih4KXt9KX1pZihFTlZJUk9OTUVOVF9JU19XRUIpe3dpbmRvd1siTW9kdWxlIl09TW9kdWxlfWVsc2V7TW9kdWxlWyJsb2FkIl09aW1wb3J0U2NyaXB0c319ZWxzZXt0aHJvdyJVbmtub3duIHJ1bnRpbWUgZW52aXJvbm1lbnQuIFdoZXJlIGFyZSB3ZT8ifWZ1bmN0aW9uIGdsb2JhbEV2YWwoeCl7ZXZhbC5jYWxsKG51bGwseCl9aWYoIU1vZHVsZVsibG9hZCJdPT0idW5kZWZpbmVkIiYmTW9kdWxlWyJyZWFkIl0pe01vZHVsZVsibG9hZCJdPWZ1bmN0aW9uIGxvYWQoZil7Z2xvYmFsRXZhbChNb2R1bGVbInJlYWQiXShmKSl9fWlmKCFNb2R1bGVbInByaW50Il0pe01vZHVsZVsicHJpbnQiXT0oZnVuY3Rpb24oKXt9KX1pZighTW9kdWxlWyJwcmludEVyciJdKXtNb2R1bGVbInByaW50RXJyIl09TW9kdWxlWyJwcmludCJdfWlmKCFNb2R1bGVbImFyZ3VtZW50cyJdKXtNb2R1bGVbImFyZ3VtZW50cyJdPVtdfU1vZHVsZS5wcmludD1Nb2R1bGVbInByaW50Il07TW9kdWxlLnByaW50RXJyPU1vZHVsZVsicHJpbnRFcnIiXTtNb2R1bGVbInByZVJ1biJdPVtdO01vZHVsZVsicG9zdFJ1biJdPVtdO2Zvcih2YXIga2V5IGluIG1vZHVsZU92ZXJyaWRlcyl7aWYobW9kdWxlT3ZlcnJpZGVzLmhhc093blByb3BlcnR5KGtleSkpe01vZHVsZVtrZXldPW1vZHVsZU92ZXJyaWRlc1trZXldfX12YXIgUnVudGltZT17c2V0VGVtcFJldDA6KGZ1bmN0aW9uKHZhbHVlKXt0ZW1wUmV0MD12YWx1ZX0pLGdldFRlbXBSZXQwOihmdW5jdGlvbigpe3JldHVybiB0ZW1wUmV0MH0pLHN0YWNrU2F2ZTooZnVuY3Rpb24oKXtyZXR1cm4gU1RBQ0tUT1B9KSxzdGFja1Jlc3RvcmU6KGZ1bmN0aW9uKHN0YWNrVG9wKXtTVEFDS1RPUD1zdGFja1RvcH0pLGZvcmNlQWxpZ246KGZ1bmN0aW9uKHRhcmdldCxxdWFudHVtKXtxdWFudHVtPXF1YW50dW18fDQ7aWYocXVhbnR1bT09MSlyZXR1cm4gdGFyZ2V0O2lmKGlzTnVtYmVyKHRhcmdldCkmJmlzTnVtYmVyKHF1YW50dW0pKXtyZXR1cm4gTWF0aC5jZWlsKHRhcmdldC9xdWFudHVtKSpxdWFudHVtfWVsc2UgaWYoaXNOdW1iZXIocXVhbnR1bSkmJmlzUG93ZXJPZlR3byhxdWFudHVtKSl7cmV0dXJuIigoKCIrdGFyZ2V0KyIpKyIrKHF1YW50dW0tMSkrIikmIisgLXF1YW50dW0rIikifXJldHVybiJNYXRoLmNlaWwoKCIrdGFyZ2V0KyIpLyIrcXVhbnR1bSsiKSoiK3F1YW50dW19KSxpc051bWJlclR5cGU6KGZ1bmN0aW9uKHR5cGUpe3JldHVybiB0eXBlIGluIFJ1bnRpbWUuSU5UX1RZUEVTfHx0eXBlIGluIFJ1bnRpbWUuRkxPQVRfVFlQRVN9KSxpc1BvaW50ZXJUeXBlOmZ1bmN0aW9uIGlzUG9pbnRlclR5cGUodHlwZSl7cmV0dXJuIHR5cGVbdHlwZS5sZW5ndGgtMV09PSIqIn0saXNTdHJ1Y3RUeXBlOmZ1bmN0aW9uIGlzU3RydWN0VHlwZSh0eXBlKXtpZihpc1BvaW50ZXJUeXBlKHR5cGUpKXJldHVybiBmYWxzZTtpZihpc0FycmF5VHlwZSh0eXBlKSlyZXR1cm4gdHJ1ZTtpZigvPD9ceyA/W159XSogP1x9Pj8vLnRlc3QodHlwZSkpcmV0dXJuIHRydWU7cmV0dXJuIHR5cGVbMF09PSIlIn0sSU5UX1RZUEVTOnsiaTEiOjAsImk4IjowLCJpMTYiOjAsImkzMiI6MCwiaTY0IjowfSxGTE9BVF9UWVBFUzp7ImZsb2F0IjowLCJkb3VibGUiOjB9LG9yNjQ6KGZ1bmN0aW9uKHgseSl7dmFyIGw9eHwwfCh5fDApO3ZhciBoPShNYXRoLnJvdW5kKHgvNDI5NDk2NzI5Nil8TWF0aC5yb3VuZCh5LzQyOTQ5NjcyOTYpKSo0Mjk0OTY3Mjk2O3JldHVybiBsK2h9KSxhbmQ2NDooZnVuY3Rpb24oeCx5KXt2YXIgbD0oeHwwKSYoeXwwKTt2YXIgaD0oTWF0aC5yb3VuZCh4LzQyOTQ5NjcyOTYpJk1hdGgucm91bmQoeS80Mjk0OTY3Mjk2KSkqNDI5NDk2NzI5NjtyZXR1cm4gbCtofSkseG9yNjQ6KGZ1bmN0aW9uKHgseSl7dmFyIGw9KHh8MCleKHl8MCk7dmFyIGg9KE1hdGgucm91bmQoeC80Mjk0OTY3Mjk2KV5NYXRoLnJvdW5kKHkvNDI5NDk2NzI5NikpKjQyOTQ5NjcyOTY7cmV0dXJuIGwraH0pLGdldE5hdGl2ZVR5cGVTaXplOihmdW5jdGlvbih0eXBlKXtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6Y2FzZSJpOCI6cmV0dXJuIDE7Y2FzZSJpMTYiOnJldHVybiAyO2Nhc2UiaTMyIjpyZXR1cm4gNDtjYXNlImk2NCI6cmV0dXJuIDg7Y2FzZSJmbG9hdCI6cmV0dXJuIDQ7Y2FzZSJkb3VibGUiOnJldHVybiA4O2RlZmF1bHQ6e2lmKHR5cGVbdHlwZS5sZW5ndGgtMV09PT0iKiIpe3JldHVybiBSdW50aW1lLlFVQU5UVU1fU0laRX1lbHNlIGlmKHR5cGVbMF09PT0iaSIpe3ZhciBiaXRzPXBhcnNlSW50KHR5cGUuc3Vic3RyKDEpKTthc3NlcnQoYml0cyU4PT09MCk7cmV0dXJuIGJpdHMvOH1lbHNle3JldHVybiAwfX19fSksZ2V0TmF0aXZlRmllbGRTaXplOihmdW5jdGlvbih0eXBlKXtyZXR1cm4gTWF0aC5tYXgoUnVudGltZS5nZXROYXRpdmVUeXBlU2l6ZSh0eXBlKSxSdW50aW1lLlFVQU5UVU1fU0laRSl9KSxkZWR1cDpmdW5jdGlvbiBkZWR1cChpdGVtcyxpZGVudCl7dmFyIHNlZW49e307aWYoaWRlbnQpe3JldHVybiBpdGVtcy5maWx0ZXIoKGZ1bmN0aW9uKGl0ZW0pe2lmKHNlZW5baXRlbVtpZGVudF1dKXJldHVybiBmYWxzZTtzZWVuW2l0ZW1baWRlbnRdXT10cnVlO3JldHVybiB0cnVlfSkpfWVsc2V7cmV0dXJuIGl0ZW1zLmZpbHRlcigoZnVuY3Rpb24oaXRlbSl7aWYoc2VlbltpdGVtXSlyZXR1cm4gZmFsc2U7c2VlbltpdGVtXT10cnVlO3JldHVybiB0cnVlfSkpfX0sc2V0OmZ1bmN0aW9uIHNldCgpe3ZhciBhcmdzPXR5cGVvZiBhcmd1bWVudHNbMF09PT0ib2JqZWN0Ij9hcmd1bWVudHNbMF06YXJndW1lbnRzO3ZhciByZXQ9e307Zm9yKHZhciBpPTA7aTxhcmdzLmxlbmd0aDtpKyspe3JldFthcmdzW2ldXT0wfXJldHVybiByZXR9LFNUQUNLX0FMSUdOOjgsZ2V0QWxpZ25TaXplOihmdW5jdGlvbih0eXBlLHNpemUsdmFyYXJnKXtpZighdmFyYXJnJiYodHlwZT09Imk2NCJ8fHR5cGU9PSJkb3VibGUiKSlyZXR1cm4gODtpZighdHlwZSlyZXR1cm4gTWF0aC5taW4oc2l6ZSw4KTtyZXR1cm4gTWF0aC5taW4oc2l6ZXx8KHR5cGU/UnVudGltZS5nZXROYXRpdmVGaWVsZFNpemUodHlwZSk6MCksUnVudGltZS5RVUFOVFVNX1NJWkUpfSksY2FsY3VsYXRlU3RydWN0QWxpZ25tZW50OmZ1bmN0aW9uIGNhbGN1bGF0ZVN0cnVjdEFsaWdubWVudCh0eXBlKXt0eXBlLmZsYXRTaXplPTA7dHlwZS5hbGlnblNpemU9MDt2YXIgZGlmZnM9W107dmFyIHByZXY9LTE7dmFyIGluZGV4PTA7dHlwZS5mbGF0SW5kZXhlcz10eXBlLmZpZWxkcy5tYXAoKGZ1bmN0aW9uKGZpZWxkKXtpbmRleCsrO3ZhciBzaXplLGFsaWduU2l6ZTtpZihSdW50aW1lLmlzTnVtYmVyVHlwZShmaWVsZCl8fFJ1bnRpbWUuaXNQb2ludGVyVHlwZShmaWVsZCkpe3NpemU9UnVudGltZS5nZXROYXRpdmVUeXBlU2l6ZShmaWVsZCk7YWxpZ25TaXplPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKGZpZWxkLHNpemUpfWVsc2UgaWYoUnVudGltZS5pc1N0cnVjdFR5cGUoZmllbGQpKXtpZihmaWVsZFsxXT09PSIwIil7c2l6ZT0wO2lmKFR5cGVzLnR5cGVzW2ZpZWxkXSl7YWxpZ25TaXplPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKG51bGwsVHlwZXMudHlwZXNbZmllbGRdLmFsaWduU2l6ZSl9ZWxzZXthbGlnblNpemU9dHlwZS5hbGlnblNpemV8fFFVQU5UVU1fU0laRX19ZWxzZXtzaXplPVR5cGVzLnR5cGVzW2ZpZWxkXS5mbGF0U2l6ZTthbGlnblNpemU9UnVudGltZS5nZXRBbGlnblNpemUobnVsbCxUeXBlcy50eXBlc1tmaWVsZF0uYWxpZ25TaXplKX19ZWxzZSBpZihmaWVsZFswXT09ImIiKXtzaXplPWZpZWxkLnN1YnN0cigxKXwwO2FsaWduU2l6ZT0xfWVsc2UgaWYoZmllbGRbMF09PT0iPCIpe3NpemU9YWxpZ25TaXplPVR5cGVzLnR5cGVzW2ZpZWxkXS5mbGF0U2l6ZX1lbHNlIGlmKGZpZWxkWzBdPT09ImkiKXtzaXplPWFsaWduU2l6ZT1wYXJzZUludChmaWVsZC5zdWJzdHIoMSkpLzg7YXNzZXJ0KHNpemUlMT09PTAsImNhbm5vdCBoYW5kbGUgbm9uLWJ5dGUtc2l6ZSBmaWVsZCAiK2ZpZWxkKX1lbHNle2Fzc2VydChmYWxzZSwiaW52YWxpZCB0eXBlIGZvciBjYWxjdWxhdGVTdHJ1Y3RBbGlnbm1lbnQiKX1pZih0eXBlLnBhY2tlZClhbGlnblNpemU9MTt0eXBlLmFsaWduU2l6ZT1NYXRoLm1heCh0eXBlLmFsaWduU2l6ZSxhbGlnblNpemUpO3ZhciBjdXJyPVJ1bnRpbWUuYWxpZ25NZW1vcnkodHlwZS5mbGF0U2l6ZSxhbGlnblNpemUpO3R5cGUuZmxhdFNpemU9Y3VycitzaXplO2lmKHByZXY+PTApe2RpZmZzLnB1c2goY3Vyci1wcmV2KX1wcmV2PWN1cnI7cmV0dXJuIGN1cnJ9KSk7aWYodHlwZS5uYW1lXyYmdHlwZS5uYW1lX1swXT09PSJbIil7dHlwZS5mbGF0U2l6ZT1wYXJzZUludCh0eXBlLm5hbWVfLnN1YnN0cigxKSkqdHlwZS5mbGF0U2l6ZS8yfXR5cGUuZmxhdFNpemU9UnVudGltZS5hbGlnbk1lbW9yeSh0eXBlLmZsYXRTaXplLHR5cGUuYWxpZ25TaXplKTtpZihkaWZmcy5sZW5ndGg9PTApe3R5cGUuZmxhdEZhY3Rvcj10eXBlLmZsYXRTaXplfWVsc2UgaWYoUnVudGltZS5kZWR1cChkaWZmcykubGVuZ3RoPT0xKXt0eXBlLmZsYXRGYWN0b3I9ZGlmZnNbMF19dHlwZS5uZWVkc0ZsYXR0ZW5pbmc9dHlwZS5mbGF0RmFjdG9yIT0xO3JldHVybiB0eXBlLmZsYXRJbmRleGVzfSxnZW5lcmF0ZVN0cnVjdEluZm86KGZ1bmN0aW9uKHN0cnVjdCx0eXBlTmFtZSxvZmZzZXQpe3ZhciB0eXBlLGFsaWdubWVudDtpZih0eXBlTmFtZSl7b2Zmc2V0PW9mZnNldHx8MDt0eXBlPSh0eXBlb2YgVHlwZXM9PT0idW5kZWZpbmVkIj9SdW50aW1lLnR5cGVJbmZvOlR5cGVzLnR5cGVzKVt0eXBlTmFtZV07aWYoIXR5cGUpcmV0dXJuIG51bGw7aWYodHlwZS5maWVsZHMubGVuZ3RoIT1zdHJ1Y3QubGVuZ3RoKXtwcmludEVycigiTnVtYmVyIG9mIG5hbWVkIGZpZWxkcyBtdXN0IG1hdGNoIHRoZSB0eXBlIGZvciAiK3R5cGVOYW1lKyI6IHBvc3NpYmx5IGR1cGxpY2F0ZSBzdHJ1Y3QgbmFtZXMuIENhbm5vdCByZXR1cm4gc3RydWN0SW5mbyIpO3JldHVybiBudWxsfWFsaWdubWVudD10eXBlLmZsYXRJbmRleGVzfWVsc2V7dmFyIHR5cGU9e2ZpZWxkczpzdHJ1Y3QubWFwKChmdW5jdGlvbihpdGVtKXtyZXR1cm4gaXRlbVswXX0pKX07YWxpZ25tZW50PVJ1bnRpbWUuY2FsY3VsYXRlU3RydWN0QWxpZ25tZW50KHR5cGUpfXZhciByZXQ9e19fc2l6ZV9fOnR5cGUuZmxhdFNpemV9O2lmKHR5cGVOYW1lKXtzdHJ1Y3QuZm9yRWFjaCgoZnVuY3Rpb24oaXRlbSxpKXtpZih0eXBlb2YgaXRlbT09PSJzdHJpbmciKXtyZXRbaXRlbV09YWxpZ25tZW50W2ldK29mZnNldH1lbHNle3ZhciBrZXk7Zm9yKHZhciBrIGluIGl0ZW0pa2V5PWs7cmV0W2tleV09UnVudGltZS5nZW5lcmF0ZVN0cnVjdEluZm8oaXRlbVtrZXldLHR5cGUuZmllbGRzW2ldLGFsaWdubWVudFtpXSl9fSkpfWVsc2V7c3RydWN0LmZvckVhY2goKGZ1bmN0aW9uKGl0ZW0saSl7cmV0W2l0ZW1bMV1dPWFsaWdubWVudFtpXX0pKX1yZXR1cm4gcmV0fSksZHluQ2FsbDooZnVuY3Rpb24oc2lnLHB0cixhcmdzKXtpZihhcmdzJiZhcmdzLmxlbmd0aCl7aWYoIWFyZ3Muc3BsaWNlKWFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7YXJncy5zcGxpY2UoMCwwLHB0cik7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF8iK3NpZ10uYXBwbHkobnVsbCxhcmdzKX1lbHNle3JldHVybiBNb2R1bGVbImR5bkNhbGxfIitzaWddLmNhbGwobnVsbCxwdHIpfX0pLGZ1bmN0aW9uUG9pbnRlcnM6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGFkZEZ1bmN0aW9uOihmdW5jdGlvbihmdW5jKXtmb3IodmFyIGk9MDtpPFJ1bnRpbWUuZnVuY3Rpb25Qb2ludGVycy5sZW5ndGg7aSsrKXtpZighUnVudGltZS5mdW5jdGlvblBvaW50ZXJzW2ldKXtSdW50aW1lLmZ1bmN0aW9uUG9pbnRlcnNbaV09ZnVuYztyZXR1cm4gMiooMStpKX19dGhyb3ciRmluaXNoZWQgdXAgYWxsIHJlc2VydmVkIGZ1bmN0aW9uIHBvaW50ZXJzLiBVc2UgYSBoaWdoZXIgdmFsdWUgZm9yIFJFU0VSVkVEX0ZVTkNUSU9OX1BPSU5URVJTLiJ9KSxyZW1vdmVGdW5jdGlvbjooZnVuY3Rpb24oaW5kZXgpe1J1bnRpbWUuZnVuY3Rpb25Qb2ludGVyc1soaW5kZXgtMikvMl09bnVsbH0pLGdldEFzbUNvbnN0OihmdW5jdGlvbihjb2RlLG51bUFyZ3Mpe2lmKCFSdW50aW1lLmFzbUNvbnN0Q2FjaGUpUnVudGltZS5hc21Db25zdENhY2hlPXt9O3ZhciBmdW5jPVJ1bnRpbWUuYXNtQ29uc3RDYWNoZVtjb2RlXTtpZihmdW5jKXJldHVybiBmdW5jO3ZhciBhcmdzPVtdO2Zvcih2YXIgaT0wO2k8bnVtQXJncztpKyspe2FyZ3MucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDM2KStpKX12YXIgc291cmNlPVBvaW50ZXJfc3RyaW5naWZ5KGNvZGUpO2lmKHNvdXJjZVswXT09PSciJyl7aWYoc291cmNlLmluZGV4T2YoJyInLDEpPT09c291cmNlLmxlbmd0aC0xKXtzb3VyY2U9c291cmNlLnN1YnN0cigxLHNvdXJjZS5sZW5ndGgtMil9ZWxzZXthYm9ydCgiaW52YWxpZCBFTV9BU00gaW5wdXQgfCIrc291cmNlKyJ8LiBQbGVhc2UgdXNlIEVNX0FTTSguLmNvZGUuLikgKG5vIHF1b3Rlcykgb3IgRU1fQVNNKHsgLi5jb2RlKCQwKS4uIH0sIGlucHV0KSAodG8gaW5wdXQgdmFsdWVzKSIpfX10cnl7dmFyIGV2YWxsZWQ9ZXZhbCgiKGZ1bmN0aW9uKCIrYXJncy5qb2luKCIsIikrIil7ICIrc291cmNlKyIgfSkiKX1jYXRjaChlKXtNb2R1bGUucHJpbnRFcnIoImVycm9yIGluIGV4ZWN1dGluZyBpbmxpbmUgRU1fQVNNIGNvZGU6ICIrZSsiIG9uOiBcblxuIitzb3VyY2UrIlxuXG53aXRoIGFyZ3MgfCIrYXJncysifCAobWFrZSBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgb25lIG91dCBvZiBFTV9BU00sIEVNX0FTTV9BUkdTLCBldGMuKSIpO3Rocm93IGV9cmV0dXJuIFJ1bnRpbWUuYXNtQ29uc3RDYWNoZVtjb2RlXT1ldmFsbGVkfSksd2Fybk9uY2U6KGZ1bmN0aW9uKHRleHQpe2lmKCFSdW50aW1lLndhcm5PbmNlLnNob3duKVJ1bnRpbWUud2Fybk9uY2Uuc2hvd249e307aWYoIVJ1bnRpbWUud2Fybk9uY2Uuc2hvd25bdGV4dF0pe1J1bnRpbWUud2Fybk9uY2Uuc2hvd25bdGV4dF09MTtNb2R1bGUucHJpbnRFcnIodGV4dCl9fSksZnVuY1dyYXBwZXJzOnt9LGdldEZ1bmNXcmFwcGVyOihmdW5jdGlvbihmdW5jLHNpZyl7YXNzZXJ0KHNpZyk7aWYoIVJ1bnRpbWUuZnVuY1dyYXBwZXJzW2Z1bmNdKXtSdW50aW1lLmZ1bmNXcmFwcGVyc1tmdW5jXT1mdW5jdGlvbiBkeW5DYWxsX3dyYXBwZXIoKXtyZXR1cm4gUnVudGltZS5keW5DYWxsKHNpZyxmdW5jLGFyZ3VtZW50cyl9fXJldHVybiBSdW50aW1lLmZ1bmNXcmFwcGVyc1tmdW5jXX0pLFVURjhQcm9jZXNzb3I6KGZ1bmN0aW9uKCl7dmFyIGJ1ZmZlcj1bXTt2YXIgbmVlZGVkPTA7dGhpcy5wcm9jZXNzQ0NoYXI9KGZ1bmN0aW9uKGNvZGUpe2NvZGU9Y29kZSYyNTU7aWYoYnVmZmVyLmxlbmd0aD09MCl7aWYoKGNvZGUmMTI4KT09MCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSl9YnVmZmVyLnB1c2goY29kZSk7aWYoKGNvZGUmMjI0KT09MTkyKXtuZWVkZWQ9MX1lbHNlIGlmKChjb2RlJjI0MCk9PTIyNCl7bmVlZGVkPTJ9ZWxzZXtuZWVkZWQ9M31yZXR1cm4iIn1pZihuZWVkZWQpe2J1ZmZlci5wdXNoKGNvZGUpO25lZWRlZC0tO2lmKG5lZWRlZD4wKXJldHVybiIifXZhciBjMT1idWZmZXJbMF07dmFyIGMyPWJ1ZmZlclsxXTt2YXIgYzM9YnVmZmVyWzJdO3ZhciBjND1idWZmZXJbM107dmFyIHJldDtpZihidWZmZXIubGVuZ3RoPT0yKXtyZXQ9U3RyaW5nLmZyb21DaGFyQ29kZSgoYzEmMzEpPDw2fGMyJjYzKX1lbHNlIGlmKGJ1ZmZlci5sZW5ndGg9PTMpe3JldD1TdHJpbmcuZnJvbUNoYXJDb2RlKChjMSYxNSk8PDEyfChjMiY2Myk8PDZ8YzMmNjMpfWVsc2V7dmFyIGNvZGVQb2ludD0oYzEmNyk8PDE4fChjMiY2Myk8PDEyfChjMyY2Myk8PDZ8YzQmNjM7cmV0PVN0cmluZy5mcm9tQ2hhckNvZGUoTWF0aC5mbG9vcigoY29kZVBvaW50LTY1NTM2KS8xMDI0KSs1NTI5NiwoY29kZVBvaW50LTY1NTM2KSUxMDI0KzU2MzIwKX1idWZmZXIubGVuZ3RoPTA7cmV0dXJuIHJldH0pO3RoaXMucHJvY2Vzc0pTU3RyaW5nPWZ1bmN0aW9uIHByb2Nlc3NKU1N0cmluZyhzdHJpbmcpe3N0cmluZz11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKSk7dmFyIHJldD1bXTtmb3IodmFyIGk9MDtpPHN0cmluZy5sZW5ndGg7aSsrKXtyZXQucHVzaChzdHJpbmcuY2hhckNvZGVBdChpKSl9cmV0dXJuIHJldH19KSxnZXRDb21waWxlclNldHRpbmc6KGZ1bmN0aW9uKG5hbWUpe3Rocm93IllvdSBtdXN0IGJ1aWxkIHdpdGggLXMgUkVUQUlOX0NPTVBJTEVSX1NFVFRJTkdTPTEgZm9yIFJ1bnRpbWUuZ2V0Q29tcGlsZXJTZXR0aW5nIG9yIGVtc2NyaXB0ZW5fZ2V0X2NvbXBpbGVyX3NldHRpbmcgdG8gd29yayJ9KSxzdGFja0FsbG9jOihmdW5jdGlvbihzaXplKXt2YXIgcmV0PVNUQUNLVE9QO1NUQUNLVE9QPVNUQUNLVE9QK3NpemV8MDtTVEFDS1RPUD1TVEFDS1RPUCs3Ji04O3JldHVybiByZXR9KSxzdGF0aWNBbGxvYzooZnVuY3Rpb24oc2l6ZSl7dmFyIHJldD1TVEFUSUNUT1A7U1RBVElDVE9QPVNUQVRJQ1RPUCtzaXplfDA7U1RBVElDVE9QPVNUQVRJQ1RPUCs3Ji04O3JldHVybiByZXR9KSxkeW5hbWljQWxsb2M6KGZ1bmN0aW9uKHNpemUpe3ZhciByZXQ9RFlOQU1JQ1RPUDtEWU5BTUlDVE9QPURZTkFNSUNUT1Arc2l6ZXwwO0RZTkFNSUNUT1A9RFlOQU1JQ1RPUCs3Ji04O2lmKERZTkFNSUNUT1A+PVRPVEFMX01FTU9SWSllbmxhcmdlTWVtb3J5KCk7cmV0dXJuIHJldH0pLGFsaWduTWVtb3J5OihmdW5jdGlvbihzaXplLHF1YW50dW0pe3ZhciByZXQ9c2l6ZT1NYXRoLmNlaWwoc2l6ZS8ocXVhbnR1bT9xdWFudHVtOjgpKSoocXVhbnR1bT9xdWFudHVtOjgpO3JldHVybiByZXR9KSxtYWtlQmlnSW50OihmdW5jdGlvbihsb3csaGlnaCx1bnNpZ25lZCl7dmFyIHJldD11bnNpZ25lZD8rKGxvdz4+PjApKyArKGhpZ2g+Pj4wKSorNDI5NDk2NzI5NjorKGxvdz4+PjApKyArKGhpZ2h8MCkqKzQyOTQ5NjcyOTY7cmV0dXJuIHJldH0pLEdMT0JBTF9CQVNFOjgsUVVBTlRVTV9TSVpFOjQsX19kdW1teV9fOjB9O01vZHVsZVsiUnVudGltZSJdPVJ1bnRpbWU7ZnVuY3Rpb24ganNDYWxsKCl7dmFyIGFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gUnVudGltZS5mdW5jdGlvblBvaW50ZXJzW2FyZ3NbMF1dLmFwcGx5KG51bGwsYXJncy5zbGljZSgxKSl9dmFyIF9fVEhSRVdfXz0wO3ZhciBBQk9SVD1mYWxzZTt2YXIgRVhJVFNUQVRVUz0wO3ZhciB1bmRlZj0wO3ZhciB0ZW1wVmFsdWUsdGVtcEludCx0ZW1wQmlnSW50LHRlbXBJbnQyLHRlbXBCaWdJbnQyLHRlbXBQYWlyLHRlbXBCaWdJbnRJLHRlbXBCaWdJbnRSLHRlbXBCaWdJbnRTLHRlbXBCaWdJbnRQLHRlbXBCaWdJbnRELHRlbXBEb3VibGUsdGVtcEZsb2F0O3ZhciB0ZW1wSTY0LHRlbXBJNjRiO3ZhciB0ZW1wUmV0MCx0ZW1wUmV0MSx0ZW1wUmV0Mix0ZW1wUmV0Myx0ZW1wUmV0NCx0ZW1wUmV0NSx0ZW1wUmV0Nix0ZW1wUmV0Nyx0ZW1wUmV0OCx0ZW1wUmV0OTtmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLHRleHQpe2lmKCFjb25kaXRpb24pe2Fib3J0KCJBc3NlcnRpb24gZmFpbGVkOiAiK3RleHQpfX12YXIgZ2xvYmFsU2NvcGU9dGhpcztmdW5jdGlvbiBnZXRDRnVuYyhpZGVudCl7dHJ5e3ZhciBmdW5jPU1vZHVsZVsiXyIraWRlbnRdO2lmKCFmdW5jKWZ1bmM9ZXZhbCgiXyIraWRlbnQpfWNhdGNoKGUpe31hc3NlcnQoZnVuYywiQ2Fubm90IGNhbGwgdW5rbm93biBmdW5jdGlvbiAiK2lkZW50KyIgKHBlcmhhcHMgTExWTSBvcHRpbWl6YXRpb25zIG9yIGNsb3N1cmUgcmVtb3ZlZCBpdD8pIik7cmV0dXJuIGZ1bmN9dmFyIGN3cmFwLGNjYWxsOygoZnVuY3Rpb24oKXt2YXIgc3RhY2s9MDt2YXIgSlNmdW5jcz17InN0YWNrU2F2ZSI6KGZ1bmN0aW9uKCl7c3RhY2s9UnVudGltZS5zdGFja1NhdmUoKX0pLCJzdGFja1Jlc3RvcmUiOihmdW5jdGlvbigpe1J1bnRpbWUuc3RhY2tSZXN0b3JlKHN0YWNrKX0pLCJhcnJheVRvQyI6KGZ1bmN0aW9uKGFycil7dmFyIHJldD1SdW50aW1lLnN0YWNrQWxsb2MoYXJyLmxlbmd0aCk7d3JpdGVBcnJheVRvTWVtb3J5KGFycixyZXQpO3JldHVybiByZXR9KSwic3RyaW5nVG9DIjooZnVuY3Rpb24oc3RyKXt2YXIgcmV0PTA7aWYoc3RyIT09bnVsbCYmc3RyIT09dW5kZWZpbmVkJiZzdHIhPT0wKXtyZXQ9UnVudGltZS5zdGFja0FsbG9jKHN0ci5sZW5ndGgrMSk7d3JpdGVTdHJpbmdUb01lbW9yeShzdHIscmV0KX1yZXR1cm4gcmV0fSl9O3ZhciB0b0M9eyJzdHJpbmciOkpTZnVuY3NbInN0cmluZ1RvQyJdLCJhcnJheSI6SlNmdW5jc1siYXJyYXlUb0MiXX07Y2NhbGw9ZnVuY3Rpb24gY2NhbGxGdW5jKGlkZW50LHJldHVyblR5cGUsYXJnVHlwZXMsYXJncyl7dmFyIGZ1bmM9Z2V0Q0Z1bmMoaWRlbnQpO3ZhciBjQXJncz1bXTtpZihhcmdzKXtmb3IodmFyIGk9MDtpPGFyZ3MubGVuZ3RoO2krKyl7dmFyIGNvbnZlcnRlcj10b0NbYXJnVHlwZXNbaV1dO2lmKGNvbnZlcnRlcil7aWYoc3RhY2s9PT0wKXN0YWNrPVJ1bnRpbWUuc3RhY2tTYXZlKCk7Y0FyZ3NbaV09Y29udmVydGVyKGFyZ3NbaV0pfWVsc2V7Y0FyZ3NbaV09YXJnc1tpXX19fXZhciByZXQ9ZnVuYy5hcHBseShudWxsLGNBcmdzKTtpZihyZXR1cm5UeXBlPT09InN0cmluZyIpcmV0PVBvaW50ZXJfc3RyaW5naWZ5KHJldCk7aWYoc3RhY2shPT0wKUpTZnVuY3NbInN0YWNrUmVzdG9yZSJdKCk7cmV0dXJuIHJldH07dmFyIHNvdXJjZVJlZ2V4PS9eZnVuY3Rpb25cc1woKFteKV0qKVwpXHMqe1xzKihbXipdKj8pW1xzO10qKD86cmV0dXJuXHMqKC4qPylbO1xzXSopP30kLztmdW5jdGlvbiBwYXJzZUpTRnVuYyhqc2Z1bmMpe3ZhciBwYXJzZWQ9anNmdW5jLnRvU3RyaW5nKCkubWF0Y2goc291cmNlUmVnZXgpLnNsaWNlKDEpO3JldHVybnthcmd1bWVudHM6cGFyc2VkWzBdLGJvZHk6cGFyc2VkWzFdLHJldHVyblZhbHVlOnBhcnNlZFsyXX19dmFyIEpTc291cmNlPXt9O2Zvcih2YXIgZnVuIGluIEpTZnVuY3Mpe2lmKEpTZnVuY3MuaGFzT3duUHJvcGVydHkoZnVuKSl7SlNzb3VyY2VbZnVuXT1wYXJzZUpTRnVuYyhKU2Z1bmNzW2Z1bl0pfX1jd3JhcD1mdW5jdGlvbiBjd3JhcChpZGVudCxyZXR1cm5UeXBlLGFyZ1R5cGVzKXt2YXIgY2Z1bmM9Z2V0Q0Z1bmMoaWRlbnQpO3ZhciBudW1lcmljQXJncz1hcmdUeXBlcy5ldmVyeSgoZnVuY3Rpb24odHlwZSl7cmV0dXJuIHR5cGU9PT0ibnVtYmVyIn0pKTt2YXIgbnVtZXJpY1JldD1yZXR1cm5UeXBlIT09InN0cmluZyI7aWYobnVtZXJpY1JldCYmbnVtZXJpY0FyZ3Mpe3JldHVybiBjZnVuY312YXIgYXJnTmFtZXM9YXJnVHlwZXMubWFwKChmdW5jdGlvbih4LGkpe3JldHVybiIkIitpfSkpO3ZhciBmdW5jc3RyPSIoZnVuY3Rpb24oIithcmdOYW1lcy5qb2luKCIsIikrIikgeyI7dmFyIG5hcmdzPWFyZ1R5cGVzLmxlbmd0aDtpZighbnVtZXJpY0FyZ3Mpe2Z1bmNzdHIrPUpTc291cmNlWyJzdGFja1NhdmUiXS5ib2R5KyI7Ijtmb3IodmFyIGk9MDtpPG5hcmdzO2krKyl7dmFyIGFyZz1hcmdOYW1lc1tpXSx0eXBlPWFyZ1R5cGVzW2ldO2lmKHR5cGU9PT0ibnVtYmVyIiljb250aW51ZTt2YXIgY29udmVydENvZGU9SlNzb3VyY2VbdHlwZSsiVG9DIl07ZnVuY3N0cis9InZhciAiK2NvbnZlcnRDb2RlLmFyZ3VtZW50cysiID0gIithcmcrIjsiO2Z1bmNzdHIrPWNvbnZlcnRDb2RlLmJvZHkrIjsiO2Z1bmNzdHIrPWFyZysiPSIrY29udmVydENvZGUucmV0dXJuVmFsdWUrIjsifX12YXIgY2Z1bmNuYW1lPXBhcnNlSlNGdW5jKChmdW5jdGlvbigpe3JldHVybiBjZnVuY30pKS5yZXR1cm5WYWx1ZTtmdW5jc3RyKz0idmFyIHJldCA9ICIrY2Z1bmNuYW1lKyIoIithcmdOYW1lcy5qb2luKCIsIikrIik7IjtpZighbnVtZXJpY1JldCl7dmFyIHN0cmdmeT1wYXJzZUpTRnVuYygoZnVuY3Rpb24oKXtyZXR1cm4gUG9pbnRlcl9zdHJpbmdpZnl9KSkucmV0dXJuVmFsdWU7ZnVuY3N0cis9InJldCA9ICIrc3RyZ2Z5KyIocmV0KTsifWlmKCFudW1lcmljQXJncyl7ZnVuY3N0cis9SlNzb3VyY2VbInN0YWNrUmVzdG9yZSJdLmJvZHkrIjsifWZ1bmNzdHIrPSJyZXR1cm4gcmV0fSkiO3JldHVybiBldmFsKGZ1bmNzdHIpfX0pKSgpO01vZHVsZVsiY3dyYXAiXT1jd3JhcDtNb2R1bGVbImNjYWxsIl09Y2NhbGw7ZnVuY3Rpb24gc2V0VmFsdWUocHRyLHZhbHVlLHR5cGUsbm9TYWZlKXt0eXBlPXR5cGV8fCJpOCI7aWYodHlwZS5jaGFyQXQodHlwZS5sZW5ndGgtMSk9PT0iKiIpdHlwZT0iaTMyIjtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6SEVBUDhbcHRyPj4wXT12YWx1ZTticmVhaztjYXNlImk4IjpIRUFQOFtwdHI+PjBdPXZhbHVlO2JyZWFrO2Nhc2UiaTE2IjpIRUFQMTZbcHRyPj4xXT12YWx1ZTticmVhaztjYXNlImkzMiI6SEVBUDMyW3B0cj4+Ml09dmFsdWU7YnJlYWs7Y2FzZSJpNjQiOnRlbXBJNjQ9W3ZhbHVlPj4+MCwodGVtcERvdWJsZT12YWx1ZSwrTWF0aF9hYnModGVtcERvdWJsZSk+PSsxP3RlbXBEb3VibGU+KzA/KE1hdGhfbWluKCtNYXRoX2Zsb29yKHRlbXBEb3VibGUvKzQyOTQ5NjcyOTYpLCs0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aF9jZWlsKCh0ZW1wRG91YmxlLSArKH5+dGVtcERvdWJsZT4+PjApKS8rNDI5NDk2NzI5Nik+Pj4wOjApXSxIRUFQMzJbcHRyPj4yXT10ZW1wSTY0WzBdLEhFQVAzMltwdHIrND4+Ml09dGVtcEk2NFsxXTticmVhaztjYXNlImZsb2F0IjpIRUFQRjMyW3B0cj4+Ml09dmFsdWU7YnJlYWs7Y2FzZSJkb3VibGUiOkhFQVBGNjRbcHRyPj4zXT12YWx1ZTticmVhaztkZWZhdWx0OmFib3J0KCJpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAiK3R5cGUpfX1Nb2R1bGVbInNldFZhbHVlIl09c2V0VmFsdWU7ZnVuY3Rpb24gZ2V0VmFsdWUocHRyLHR5cGUsbm9TYWZlKXt0eXBlPXR5cGV8fCJpOCI7aWYodHlwZS5jaGFyQXQodHlwZS5sZW5ndGgtMSk9PT0iKiIpdHlwZT0iaTMyIjtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6cmV0dXJuIEhFQVA4W3B0cj4+MF07Y2FzZSJpOCI6cmV0dXJuIEhFQVA4W3B0cj4+MF07Y2FzZSJpMTYiOnJldHVybiBIRUFQMTZbcHRyPj4xXTtjYXNlImkzMiI6cmV0dXJuIEhFQVAzMltwdHI+PjJdO2Nhc2UiaTY0IjpyZXR1cm4gSEVBUDMyW3B0cj4+Ml07Y2FzZSJmbG9hdCI6cmV0dXJuIEhFQVBGMzJbcHRyPj4yXTtjYXNlImRvdWJsZSI6cmV0dXJuIEhFQVBGNjRbcHRyPj4zXTtkZWZhdWx0OmFib3J0KCJpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAiK3R5cGUpfXJldHVybiBudWxsfU1vZHVsZVsiZ2V0VmFsdWUiXT1nZXRWYWx1ZTt2YXIgQUxMT0NfTk9STUFMPTA7dmFyIEFMTE9DX1NUQUNLPTE7dmFyIEFMTE9DX1NUQVRJQz0yO3ZhciBBTExPQ19EWU5BTUlDPTM7dmFyIEFMTE9DX05PTkU9NDtNb2R1bGVbIkFMTE9DX05PUk1BTCJdPUFMTE9DX05PUk1BTDtNb2R1bGVbIkFMTE9DX1NUQUNLIl09QUxMT0NfU1RBQ0s7TW9kdWxlWyJBTExPQ19TVEFUSUMiXT1BTExPQ19TVEFUSUM7TW9kdWxlWyJBTExPQ19EWU5BTUlDIl09QUxMT0NfRFlOQU1JQztNb2R1bGVbIkFMTE9DX05PTkUiXT1BTExPQ19OT05FO2Z1bmN0aW9uIGFsbG9jYXRlKHNsYWIsdHlwZXMsYWxsb2NhdG9yLHB0cil7dmFyIHplcm9pbml0LHNpemU7aWYodHlwZW9mIHNsYWI9PT0ibnVtYmVyIil7emVyb2luaXQ9dHJ1ZTtzaXplPXNsYWJ9ZWxzZXt6ZXJvaW5pdD1mYWxzZTtzaXplPXNsYWIubGVuZ3RofXZhciBzaW5nbGVUeXBlPXR5cGVvZiB0eXBlcz09PSJzdHJpbmciP3R5cGVzOm51bGw7dmFyIHJldDtpZihhbGxvY2F0b3I9PUFMTE9DX05PTkUpe3JldD1wdHJ9ZWxzZXtyZXQ9W19tYWxsb2MsUnVudGltZS5zdGFja0FsbG9jLFJ1bnRpbWUuc3RhdGljQWxsb2MsUnVudGltZS5keW5hbWljQWxsb2NdW2FsbG9jYXRvcj09PXVuZGVmaW5lZD9BTExPQ19TVEFUSUM6YWxsb2NhdG9yXShNYXRoLm1heChzaXplLHNpbmdsZVR5cGU/MTp0eXBlcy5sZW5ndGgpKX1pZih6ZXJvaW5pdCl7dmFyIHB0cj1yZXQsc3RvcDthc3NlcnQoKHJldCYzKT09MCk7c3RvcD1yZXQrKHNpemUmfjMpO2Zvcig7cHRyPHN0b3A7cHRyKz00KXtIRUFQMzJbcHRyPj4yXT0wfXN0b3A9cmV0K3NpemU7d2hpbGUocHRyPHN0b3Ape0hFQVA4W3B0cisrPj4wXT0wfXJldHVybiByZXR9aWYoc2luZ2xlVHlwZT09PSJpOCIpe2lmKHNsYWIuc3ViYXJyYXl8fHNsYWIuc2xpY2Upe0hFQVBVOC5zZXQoc2xhYixyZXQpfWVsc2V7SEVBUFU4LnNldChuZXcgVWludDhBcnJheShzbGFiKSxyZXQpfXJldHVybiByZXR9dmFyIGk9MCx0eXBlLHR5cGVTaXplLHByZXZpb3VzVHlwZTt3aGlsZShpPHNpemUpe3ZhciBjdXJyPXNsYWJbaV07aWYodHlwZW9mIGN1cnI9PT0iZnVuY3Rpb24iKXtjdXJyPVJ1bnRpbWUuZ2V0RnVuY3Rpb25JbmRleChjdXJyKX10eXBlPXNpbmdsZVR5cGV8fHR5cGVzW2ldO2lmKHR5cGU9PT0wKXtpKys7Y29udGludWV9aWYodHlwZT09Imk2NCIpdHlwZT0iaTMyIjtzZXRWYWx1ZShyZXQraSxjdXJyLHR5cGUpO2lmKHByZXZpb3VzVHlwZSE9PXR5cGUpe3R5cGVTaXplPVJ1bnRpbWUuZ2V0TmF0aXZlVHlwZVNpemUodHlwZSk7cHJldmlvdXNUeXBlPXR5cGV9aSs9dHlwZVNpemV9cmV0dXJuIHJldH1Nb2R1bGVbImFsbG9jYXRlIl09YWxsb2NhdGU7ZnVuY3Rpb24gUG9pbnRlcl9zdHJpbmdpZnkocHRyLGxlbmd0aCl7dmFyIGhhc1V0Zj1mYWxzZTt2YXIgdDt2YXIgaT0wO3doaWxlKDEpe3Q9SEVBUFU4W3B0citpPj4wXTtpZih0Pj0xMjgpaGFzVXRmPXRydWU7ZWxzZSBpZih0PT0wJiYhbGVuZ3RoKWJyZWFrO2krKztpZihsZW5ndGgmJmk9PWxlbmd0aClicmVha31pZighbGVuZ3RoKWxlbmd0aD1pO3ZhciByZXQ9IiI7aWYoIWhhc1V0Zil7dmFyIE1BWF9DSFVOSz0xMDI0O3ZhciBjdXJyO3doaWxlKGxlbmd0aD4wKXtjdXJyPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLEhFQVBVOC5zdWJhcnJheShwdHIscHRyK01hdGgubWluKGxlbmd0aCxNQVhfQ0hVTkspKSk7cmV0PXJldD9yZXQrY3VycjpjdXJyO3B0cis9TUFYX0NIVU5LO2xlbmd0aC09TUFYX0NIVU5LfXJldHVybiByZXR9dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjtmb3IoaT0wO2k8bGVuZ3RoO2krKyl7dD1IRUFQVThbcHRyK2k+PjBdO3JldCs9dXRmOC5wcm9jZXNzQ0NoYXIodCl9cmV0dXJuIHJldH1Nb2R1bGVbIlBvaW50ZXJfc3RyaW5naWZ5Il09UG9pbnRlcl9zdHJpbmdpZnk7ZnVuY3Rpb24gVVRGMTZUb1N0cmluZyhwdHIpe3ZhciBpPTA7dmFyIHN0cj0iIjt3aGlsZSgxKXt2YXIgY29kZVVuaXQ9SEVBUDE2W3B0citpKjI+PjFdO2lmKGNvZGVVbml0PT0wKXJldHVybiBzdHI7KytpO3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZShjb2RlVW5pdCl9fU1vZHVsZVsiVVRGMTZUb1N0cmluZyJdPVVURjE2VG9TdHJpbmc7ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNihzdHIsb3V0UHRyKXtmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGg7KytpKXt2YXIgY29kZVVuaXQ9c3RyLmNoYXJDb2RlQXQoaSk7SEVBUDE2W291dFB0citpKjI+PjFdPWNvZGVVbml0fUhFQVAxNltvdXRQdHIrc3RyLmxlbmd0aCoyPj4xXT0wfU1vZHVsZVsic3RyaW5nVG9VVEYxNiJdPXN0cmluZ1RvVVRGMTY7ZnVuY3Rpb24gVVRGMzJUb1N0cmluZyhwdHIpe3ZhciBpPTA7dmFyIHN0cj0iIjt3aGlsZSgxKXt2YXIgdXRmMzI9SEVBUDMyW3B0citpKjQ+PjJdO2lmKHV0ZjMyPT0wKXJldHVybiBzdHI7KytpO2lmKHV0ZjMyPj02NTUzNil7dmFyIGNoPXV0ZjMyLTY1NTM2O3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjaD4+MTAsNTYzMjB8Y2gmMTAyMyl9ZWxzZXtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUodXRmMzIpfX19TW9kdWxlWyJVVEYzMlRvU3RyaW5nIl09VVRGMzJUb1N0cmluZztmdW5jdGlvbiBzdHJpbmdUb1VURjMyKHN0cixvdXRQdHIpe3ZhciBpQ2hhcj0wO2Zvcih2YXIgaUNvZGVVbml0PTA7aUNvZGVVbml0PHN0ci5sZW5ndGg7KytpQ29kZVVuaXQpe3ZhciBjb2RlVW5pdD1zdHIuY2hhckNvZGVBdChpQ29kZVVuaXQpO2lmKGNvZGVVbml0Pj01NTI5NiYmY29kZVVuaXQ8PTU3MzQzKXt2YXIgdHJhaWxTdXJyb2dhdGU9c3RyLmNoYXJDb2RlQXQoKytpQ29kZVVuaXQpO2NvZGVVbml0PTY1NTM2KygoY29kZVVuaXQmMTAyMyk8PDEwKXx0cmFpbFN1cnJvZ2F0ZSYxMDIzfUhFQVAzMltvdXRQdHIraUNoYXIqND4+Ml09Y29kZVVuaXQ7KytpQ2hhcn1IRUFQMzJbb3V0UHRyK2lDaGFyKjQ+PjJdPTB9TW9kdWxlWyJzdHJpbmdUb1VURjMyIl09c3RyaW5nVG9VVEYzMjtmdW5jdGlvbiBkZW1hbmdsZShmdW5jKXt2YXIgaT0zO3ZhciBiYXNpY1R5cGVzPXsidiI6InZvaWQiLCJiIjoiYm9vbCIsImMiOiJjaGFyIiwicyI6InNob3J0IiwiaSI6ImludCIsImwiOiJsb25nIiwiZiI6ImZsb2F0IiwiZCI6ImRvdWJsZSIsInciOiJ3Y2hhcl90IiwiYSI6InNpZ25lZCBjaGFyIiwiaCI6InVuc2lnbmVkIGNoYXIiLCJ0IjoidW5zaWduZWQgc2hvcnQiLCJqIjoidW5zaWduZWQgaW50IiwibSI6InVuc2lnbmVkIGxvbmciLCJ4IjoibG9uZyBsb25nIiwieSI6InVuc2lnbmVkIGxvbmcgbG9uZyIsInoiOiIuLi4ifTt2YXIgc3Vicz1bXTt2YXIgZmlyc3Q9dHJ1ZTtmdW5jdGlvbiBkdW1wKHgpe2lmKHgpTW9kdWxlLnByaW50KHgpO01vZHVsZS5wcmludChmdW5jKTt2YXIgcHJlPSIiO2Zvcih2YXIgYT0wO2E8aTthKyspcHJlKz0iICI7TW9kdWxlLnByaW50KHByZSsiXiIpfWZ1bmN0aW9uIHBhcnNlTmVzdGVkKCl7aSsrO2lmKGZ1bmNbaV09PT0iSyIpaSsrO3ZhciBwYXJ0cz1bXTt3aGlsZShmdW5jW2ldIT09IkUiKXtpZihmdW5jW2ldPT09IlMiKXtpKys7dmFyIG5leHQ9ZnVuYy5pbmRleE9mKCJfIixpKTt2YXIgbnVtPWZ1bmMuc3Vic3RyaW5nKGksbmV4dCl8fDA7cGFydHMucHVzaChzdWJzW251bV18fCI/Iik7aT1uZXh0KzE7Y29udGludWV9aWYoZnVuY1tpXT09PSJDIil7cGFydHMucHVzaChwYXJ0c1twYXJ0cy5sZW5ndGgtMV0pO2krPTI7Y29udGludWV9dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO3ZhciBwcmU9c2l6ZS50b1N0cmluZygpLmxlbmd0aDtpZighc2l6ZXx8IXByZSl7aS0tO2JyZWFrfXZhciBjdXJyPWZ1bmMuc3Vic3RyKGkrcHJlLHNpemUpO3BhcnRzLnB1c2goY3Vycik7c3Vicy5wdXNoKGN1cnIpO2krPXByZStzaXplfWkrKztyZXR1cm4gcGFydHN9ZnVuY3Rpb24gcGFyc2UocmF3TGlzdCxsaW1pdCxhbGxvd1ZvaWQpe2xpbWl0PWxpbWl0fHxJbmZpbml0eTt2YXIgcmV0PSIiLGxpc3Q9W107ZnVuY3Rpb24gZmx1c2hMaXN0KCl7cmV0dXJuIigiK2xpc3Quam9pbigiLCAiKSsiKSJ9dmFyIG5hbWU7aWYoZnVuY1tpXT09PSJOIil7bmFtZT1wYXJzZU5lc3RlZCgpLmpvaW4oIjo6Iik7bGltaXQtLTtpZihsaW1pdD09PTApcmV0dXJuIHJhd0xpc3Q/W25hbWVdOm5hbWV9ZWxzZXtpZihmdW5jW2ldPT09IksifHxmaXJzdCYmZnVuY1tpXT09PSJMIilpKys7dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO2lmKHNpemUpe3ZhciBwcmU9c2l6ZS50b1N0cmluZygpLmxlbmd0aDtuYW1lPWZ1bmMuc3Vic3RyKGkrcHJlLHNpemUpO2krPXByZStzaXplfX1maXJzdD1mYWxzZTtpZihmdW5jW2ldPT09IkkiKXtpKys7dmFyIGlMaXN0PXBhcnNlKHRydWUpO3ZhciBpUmV0PXBhcnNlKHRydWUsMSx0cnVlKTtyZXQrPWlSZXRbMF0rIiAiK25hbWUrIjwiK2lMaXN0LmpvaW4oIiwgIikrIj4ifWVsc2V7cmV0PW5hbWV9cGFyYW1Mb29wOndoaWxlKGk8ZnVuYy5sZW5ndGgmJmxpbWl0LS0+MCl7dmFyIGM9ZnVuY1tpKytdO2lmKGMgaW4gYmFzaWNUeXBlcyl7bGlzdC5wdXNoKGJhc2ljVHlwZXNbY10pfWVsc2V7c3dpdGNoKGMpe2Nhc2UiUCI6bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiKiIpO2JyZWFrO2Nhc2UiUiI6bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiJiIpO2JyZWFrO2Nhc2UiTCI6e2krKzt2YXIgZW5kPWZ1bmMuaW5kZXhPZigiRSIsaSk7dmFyIHNpemU9ZW5kLWk7bGlzdC5wdXNoKGZ1bmMuc3Vic3RyKGksc2l6ZSkpO2krPXNpemUrMjticmVha307Y2FzZSJBIjp7dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO2krPXNpemUudG9TdHJpbmcoKS5sZW5ndGg7aWYoZnVuY1tpXSE9PSJfIil0aHJvdyI/IjtpKys7bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiIFsiK3NpemUrIl0iKTticmVha307Y2FzZSJFIjpicmVhayBwYXJhbUxvb3A7ZGVmYXVsdDpyZXQrPSI/IitjO2JyZWFrIHBhcmFtTG9vcH19fWlmKCFhbGxvd1ZvaWQmJmxpc3QubGVuZ3RoPT09MSYmbGlzdFswXT09PSJ2b2lkIilsaXN0PVtdO2lmKHJhd0xpc3Qpe2lmKHJldCl7bGlzdC5wdXNoKHJldCsiPyIpfXJldHVybiBsaXN0fWVsc2V7cmV0dXJuIHJldCtmbHVzaExpc3QoKX19dHJ5e2lmKGZ1bmM9PSJPYmplY3QuX21haW4ifHxmdW5jPT0iX21haW4iKXtyZXR1cm4ibWFpbigpIn1pZih0eXBlb2YgZnVuYz09PSJudW1iZXIiKWZ1bmM9UG9pbnRlcl9zdHJpbmdpZnkoZnVuYyk7aWYoZnVuY1swXSE9PSJfIilyZXR1cm4gZnVuYztpZihmdW5jWzFdIT09Il8iKXJldHVybiBmdW5jO2lmKGZ1bmNbMl0hPT0iWiIpcmV0dXJuIGZ1bmM7c3dpdGNoKGZ1bmNbM10pe2Nhc2UibiI6cmV0dXJuIm9wZXJhdG9yIG5ldygpIjtjYXNlImQiOnJldHVybiJvcGVyYXRvciBkZWxldGUoKSJ9cmV0dXJuIHBhcnNlKCl9Y2F0Y2goZSl7cmV0dXJuIGZ1bmN9fWZ1bmN0aW9uIGRlbWFuZ2xlQWxsKHRleHQpe3JldHVybiB0ZXh0LnJlcGxhY2UoL19fWltcd1xkX10rL2csKGZ1bmN0aW9uKHgpe3ZhciB5PWRlbWFuZ2xlKHgpO3JldHVybiB4PT09eT94OngrIiBbIit5KyJdIn0pKX1mdW5jdGlvbiBzdGFja1RyYWNlKCl7dmFyIHN0YWNrPShuZXcgRXJyb3IpLnN0YWNrO3JldHVybiBzdGFjaz9kZW1hbmdsZUFsbChzdGFjayk6IihubyBzdGFjayB0cmFjZSBhdmFpbGFibGUpIn12YXIgUEFHRV9TSVpFPTQwOTY7ZnVuY3Rpb24gYWxpZ25NZW1vcnlQYWdlKHgpe3JldHVybiB4KzQwOTUmLTQwOTZ9dmFyIEhFQVA7dmFyIEhFQVA4LEhFQVBVOCxIRUFQMTYsSEVBUFUxNixIRUFQMzIsSEVBUFUzMixIRUFQRjMyLEhFQVBGNjQ7dmFyIFNUQVRJQ19CQVNFPTAsU1RBVElDVE9QPTAsc3RhdGljU2VhbGVkPWZhbHNlO3ZhciBTVEFDS19CQVNFPTAsU1RBQ0tUT1A9MCxTVEFDS19NQVg9MDt2YXIgRFlOQU1JQ19CQVNFPTAsRFlOQU1JQ1RPUD0wO2Z1bmN0aW9uIGVubGFyZ2VNZW1vcnkoKXthYm9ydCgiQ2Fubm90IGVubGFyZ2UgbWVtb3J5IGFycmF5cy4gRWl0aGVyICgxKSBjb21waWxlIHdpdGggLXMgVE9UQUxfTUVNT1JZPVggd2l0aCBYIGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50IHZhbHVlICIrVE9UQUxfTUVNT1JZKyIsICgyKSBjb21waWxlIHdpdGggQUxMT1dfTUVNT1JZX0dST1dUSCB3aGljaCBhZGp1c3RzIHRoZSBzaXplIGF0IHJ1bnRpbWUgYnV0IHByZXZlbnRzIHNvbWUgb3B0aW1pemF0aW9ucywgb3IgKDMpIHNldCBNb2R1bGUuVE9UQUxfTUVNT1JZIGJlZm9yZSB0aGUgcHJvZ3JhbSBydW5zLiIpfXZhciBUT1RBTF9TVEFDSz1Nb2R1bGVbIlRPVEFMX1NUQUNLIl18fDUyNDI4ODA7dmFyIFRPVEFMX01FTU9SWT1Nb2R1bGVbIlRPVEFMX01FTU9SWSJdfHwxNjc3NzIxNjA7dmFyIEZBU1RfTUVNT1JZPU1vZHVsZVsiRkFTVF9NRU1PUlkiXXx8MTA0ODU3NjA7dmFyIHRvdGFsTWVtb3J5PTQwOTY7d2hpbGUodG90YWxNZW1vcnk8VE9UQUxfTUVNT1JZfHx0b3RhbE1lbW9yeTwyKlRPVEFMX1NUQUNLKXtpZih0b3RhbE1lbW9yeTwxNioxMDI0KjEwMjQpe3RvdGFsTWVtb3J5Kj0yfWVsc2V7dG90YWxNZW1vcnkrPTE2KjEwMjQqMTAyNH19aWYodG90YWxNZW1vcnkhPT1UT1RBTF9NRU1PUlkpe01vZHVsZS5wcmludEVycigiaW5jcmVhc2luZyBUT1RBTF9NRU1PUlkgdG8gIit0b3RhbE1lbW9yeSsiIHRvIGJlIG1vcmUgcmVhc29uYWJsZSIpO1RPVEFMX01FTU9SWT10b3RhbE1lbW9yeX1hc3NlcnQodHlwZW9mIEludDMyQXJyYXkhPT0idW5kZWZpbmVkIiYmdHlwZW9mIEZsb2F0NjRBcnJheSE9PSJ1bmRlZmluZWQiJiYhIShuZXcgSW50MzJBcnJheSgxKSlbInN1YmFycmF5Il0mJiEhKG5ldyBJbnQzMkFycmF5KDEpKVsic2V0Il0sIkpTIGVuZ2luZSBkb2VzIG5vdCBwcm92aWRlIGZ1bGwgdHlwZWQgYXJyYXkgc3VwcG9ydCIpO3ZhciBidWZmZXI9bmV3IEFycmF5QnVmZmVyKFRPVEFMX01FTU9SWSk7SEVBUDg9bmV3IEludDhBcnJheShidWZmZXIpO0hFQVAxNj1uZXcgSW50MTZBcnJheShidWZmZXIpO0hFQVAzMj1uZXcgSW50MzJBcnJheShidWZmZXIpO0hFQVBVOD1uZXcgVWludDhBcnJheShidWZmZXIpO0hFQVBVMTY9bmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7SEVBUFUzMj1uZXcgVWludDMyQXJyYXkoYnVmZmVyKTtIRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTtIRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoYnVmZmVyKTtIRUFQMzJbMF09MjU1O2Fzc2VydChIRUFQVThbMF09PT0yNTUmJkhFQVBVOFszXT09PTAsIlR5cGVkIGFycmF5cyAyIG11c3QgYmUgcnVuIG9uIGEgbGl0dGxlLWVuZGlhbiBzeXN0ZW0iKTtNb2R1bGVbIkhFQVAiXT1IRUFQO01vZHVsZVsiSEVBUDgiXT1IRUFQODtNb2R1bGVbIkhFQVAxNiJdPUhFQVAxNjtNb2R1bGVbIkhFQVAzMiJdPUhFQVAzMjtNb2R1bGVbIkhFQVBVOCJdPUhFQVBVODtNb2R1bGVbIkhFQVBVMTYiXT1IRUFQVTE2O01vZHVsZVsiSEVBUFUzMiJdPUhFQVBVMzI7TW9kdWxlWyJIRUFQRjMyIl09SEVBUEYzMjtNb2R1bGVbIkhFQVBGNjQiXT1IRUFQRjY0O2Z1bmN0aW9uIGNhbGxSdW50aW1lQ2FsbGJhY2tzKGNhbGxiYWNrcyl7d2hpbGUoY2FsbGJhY2tzLmxlbmd0aD4wKXt2YXIgY2FsbGJhY2s9Y2FsbGJhY2tzLnNoaWZ0KCk7aWYodHlwZW9mIGNhbGxiYWNrPT0iZnVuY3Rpb24iKXtjYWxsYmFjaygpO2NvbnRpbnVlfXZhciBmdW5jPWNhbGxiYWNrLmZ1bmM7aWYodHlwZW9mIGZ1bmM9PT0ibnVtYmVyIil7aWYoY2FsbGJhY2suYXJnPT09dW5kZWZpbmVkKXtSdW50aW1lLmR5bkNhbGwoInYiLGZ1bmMpfWVsc2V7UnVudGltZS5keW5DYWxsKCJ2aSIsZnVuYyxbY2FsbGJhY2suYXJnXSl9fWVsc2V7ZnVuYyhjYWxsYmFjay5hcmc9PT11bmRlZmluZWQ/bnVsbDpjYWxsYmFjay5hcmcpfX19dmFyIF9fQVRQUkVSVU5fXz1bXTt2YXIgX19BVElOSVRfXz1bXTt2YXIgX19BVE1BSU5fXz1bXTt2YXIgX19BVEVYSVRfXz1bXTt2YXIgX19BVFBPU1RSVU5fXz1bXTt2YXIgcnVudGltZUluaXRpYWxpemVkPWZhbHNlO2Z1bmN0aW9uIHByZVJ1bigpe2lmKE1vZHVsZVsicHJlUnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInByZVJ1biJdPT0iZnVuY3Rpb24iKU1vZHVsZVsicHJlUnVuIl09W01vZHVsZVsicHJlUnVuIl1dO3doaWxlKE1vZHVsZVsicHJlUnVuIl0ubGVuZ3RoKXthZGRPblByZVJ1bihNb2R1bGVbInByZVJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pfWZ1bmN0aW9uIGVuc3VyZUluaXRSdW50aW1lKCl7aWYocnVudGltZUluaXRpYWxpemVkKXJldHVybjtydW50aW1lSW5pdGlhbGl6ZWQ9dHJ1ZTtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUSU5JVF9fKX1mdW5jdGlvbiBwcmVNYWluKCl7Y2FsbFJ1bnRpbWVDYWxsYmFja3MoX19BVE1BSU5fXyl9ZnVuY3Rpb24gZXhpdFJ1bnRpbWUoKXtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FURVhJVF9fKX1mdW5jdGlvbiBwb3N0UnVuKCl7aWYoTW9kdWxlWyJwb3N0UnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInBvc3RSdW4iXT09ImZ1bmN0aW9uIilNb2R1bGVbInBvc3RSdW4iXT1bTW9kdWxlWyJwb3N0UnVuIl1dO3doaWxlKE1vZHVsZVsicG9zdFJ1biJdLmxlbmd0aCl7YWRkT25Qb3N0UnVuKE1vZHVsZVsicG9zdFJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUE9TVFJVTl9fKX1mdW5jdGlvbiBhZGRPblByZVJ1bihjYil7X19BVFBSRVJVTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25QcmVSdW4iXT1Nb2R1bGUuYWRkT25QcmVSdW49YWRkT25QcmVSdW47ZnVuY3Rpb24gYWRkT25Jbml0KGNiKXtfX0FUSU5JVF9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25Jbml0Il09TW9kdWxlLmFkZE9uSW5pdD1hZGRPbkluaXQ7ZnVuY3Rpb24gYWRkT25QcmVNYWluKGNiKXtfX0FUTUFJTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25QcmVNYWluIl09TW9kdWxlLmFkZE9uUHJlTWFpbj1hZGRPblByZU1haW47ZnVuY3Rpb24gYWRkT25FeGl0KGNiKXtfX0FURVhJVF9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25FeGl0Il09TW9kdWxlLmFkZE9uRXhpdD1hZGRPbkV4aXQ7ZnVuY3Rpb24gYWRkT25Qb3N0UnVuKGNiKXtfX0FUUE9TVFJVTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25Qb3N0UnVuIl09TW9kdWxlLmFkZE9uUG9zdFJ1bj1hZGRPblBvc3RSdW47ZnVuY3Rpb24gaW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZ3ksZG9udEFkZE51bGwsbGVuZ3RoKXt2YXIgcmV0PShuZXcgUnVudGltZS5VVEY4UHJvY2Vzc29yKS5wcm9jZXNzSlNTdHJpbmcoc3RyaW5neSk7aWYobGVuZ3RoKXtyZXQubGVuZ3RoPWxlbmd0aH1pZighZG9udEFkZE51bGwpe3JldC5wdXNoKDApfXJldHVybiByZXR9TW9kdWxlWyJpbnRBcnJheUZyb21TdHJpbmciXT1pbnRBcnJheUZyb21TdHJpbmc7ZnVuY3Rpb24gaW50QXJyYXlUb1N0cmluZyhhcnJheSl7dmFyIHJldD1bXTtmb3IodmFyIGk9MDtpPGFycmF5Lmxlbmd0aDtpKyspe3ZhciBjaHI9YXJyYXlbaV07aWYoY2hyPjI1NSl7Y2hyJj0yNTV9cmV0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpKX1yZXR1cm4gcmV0LmpvaW4oIiIpfU1vZHVsZVsiaW50QXJyYXlUb1N0cmluZyJdPWludEFycmF5VG9TdHJpbmc7ZnVuY3Rpb24gd3JpdGVTdHJpbmdUb01lbW9yeShzdHJpbmcsYnVmZmVyLGRvbnRBZGROdWxsKXt2YXIgYXJyYXk9aW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZyxkb250QWRkTnVsbCk7dmFyIGk9MDt3aGlsZShpPGFycmF5Lmxlbmd0aCl7dmFyIGNocj1hcnJheVtpXTtIRUFQOFtidWZmZXIraT4+MF09Y2hyO2k9aSsxfX1Nb2R1bGVbIndyaXRlU3RyaW5nVG9NZW1vcnkiXT13cml0ZVN0cmluZ1RvTWVtb3J5O2Z1bmN0aW9uIHdyaXRlQXJyYXlUb01lbW9yeShhcnJheSxidWZmZXIpe2Zvcih2YXIgaT0wO2k8YXJyYXkubGVuZ3RoO2krKyl7SEVBUDhbYnVmZmVyK2k+PjBdPWFycmF5W2ldfX1Nb2R1bGVbIndyaXRlQXJyYXlUb01lbW9yeSJdPXdyaXRlQXJyYXlUb01lbW9yeTtmdW5jdGlvbiB3cml0ZUFzY2lpVG9NZW1vcnkoc3RyLGJ1ZmZlcixkb250QWRkTnVsbCl7Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoO2krKyl7SEVBUDhbYnVmZmVyK2k+PjBdPXN0ci5jaGFyQ29kZUF0KGkpfWlmKCFkb250QWRkTnVsbClIRUFQOFtidWZmZXIrc3RyLmxlbmd0aD4+MF09MH1Nb2R1bGVbIndyaXRlQXNjaWlUb01lbW9yeSJdPXdyaXRlQXNjaWlUb01lbW9yeTtmdW5jdGlvbiB1blNpZ24odmFsdWUsYml0cyxpZ25vcmUpe2lmKHZhbHVlPj0wKXtyZXR1cm4gdmFsdWV9cmV0dXJuIGJpdHM8PTMyPzIqTWF0aC5hYnMoMTw8Yml0cy0xKSt2YWx1ZTpNYXRoLnBvdygyLGJpdHMpK3ZhbHVlfWZ1bmN0aW9uIHJlU2lnbih2YWx1ZSxiaXRzLGlnbm9yZSl7aWYodmFsdWU8PTApe3JldHVybiB2YWx1ZX12YXIgaGFsZj1iaXRzPD0zMj9NYXRoLmFicygxPDxiaXRzLTEpOk1hdGgucG93KDIsYml0cy0xKTtpZih2YWx1ZT49aGFsZiYmKGJpdHM8PTMyfHx2YWx1ZT5oYWxmKSl7dmFsdWU9LTIqaGFsZit2YWx1ZX1yZXR1cm4gdmFsdWV9aWYoIU1hdGhbImltdWwiXXx8TWF0aFsiaW11bCJdKDQyOTQ5NjcyOTUsNSkhPT0tNSlNYXRoWyJpbXVsIl09ZnVuY3Rpb24gaW11bChhLGIpe3ZhciBhaD1hPj4+MTY7dmFyIGFsPWEmNjU1MzU7dmFyIGJoPWI+Pj4xNjt2YXIgYmw9YiY2NTUzNTtyZXR1cm4gYWwqYmwrKGFoKmJsK2FsKmJoPDwxNil8MH07TWF0aC5pbXVsPU1hdGhbImltdWwiXTt2YXIgTWF0aF9hYnM9TWF0aC5hYnM7dmFyIE1hdGhfY29zPU1hdGguY29zO3ZhciBNYXRoX3Npbj1NYXRoLnNpbjt2YXIgTWF0aF90YW49TWF0aC50YW47dmFyIE1hdGhfYWNvcz1NYXRoLmFjb3M7dmFyIE1hdGhfYXNpbj1NYXRoLmFzaW47dmFyIE1hdGhfYXRhbj1NYXRoLmF0YW47dmFyIE1hdGhfYXRhbjI9TWF0aC5hdGFuMjt2YXIgTWF0aF9leHA9TWF0aC5leHA7dmFyIE1hdGhfbG9nPU1hdGgubG9nO3ZhciBNYXRoX3NxcnQ9TWF0aC5zcXJ0O3ZhciBNYXRoX2NlaWw9TWF0aC5jZWlsO3ZhciBNYXRoX2Zsb29yPU1hdGguZmxvb3I7dmFyIE1hdGhfcG93PU1hdGgucG93O3ZhciBNYXRoX2ltdWw9TWF0aC5pbXVsO3ZhciBNYXRoX2Zyb3VuZD1NYXRoLmZyb3VuZDt2YXIgTWF0aF9taW49TWF0aC5taW47dmFyIHJ1bkRlcGVuZGVuY2llcz0wO3ZhciBydW5EZXBlbmRlbmN5V2F0Y2hlcj1udWxsO3ZhciBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9bnVsbDtmdW5jdGlvbiBhZGRSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMrKztpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKX19TW9kdWxlWyJhZGRSdW5EZXBlbmRlbmN5Il09YWRkUnVuRGVwZW5kZW5jeTtmdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMtLTtpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKX1pZihydW5EZXBlbmRlbmNpZXM9PTApe2lmKHJ1bkRlcGVuZGVuY3lXYXRjaGVyIT09bnVsbCl7Y2xlYXJJbnRlcnZhbChydW5EZXBlbmRlbmN5V2F0Y2hlcik7cnVuRGVwZW5kZW5jeVdhdGNoZXI9bnVsbH1pZihkZXBlbmRlbmNpZXNGdWxmaWxsZWQpe3ZhciBjYWxsYmFjaz1kZXBlbmRlbmNpZXNGdWxmaWxsZWQ7ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7Y2FsbGJhY2soKX19fU1vZHVsZVsicmVtb3ZlUnVuRGVwZW5kZW5jeSJdPXJlbW92ZVJ1bkRlcGVuZGVuY3k7TW9kdWxlWyJwcmVsb2FkZWRJbWFnZXMiXT17fTtNb2R1bGVbInByZWxvYWRlZEF1ZGlvcyJdPXt9O3ZhciBtZW1vcnlJbml0aWFsaXplcj1udWxsO3ZhciBfX1pUSXQ9MjE4NzI7dmFyIF9fWlRJcz0yMTg2NDt2YXIgX19aVEltPTIxOTM2O3ZhciBfX1pUSWw9MjE5MjA7dmFyIF9fWlRWTjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0U9MjE2NTY7dmFyIF9fWlRJaT0yMTg4ODt2YXIgX19aVEloPTIxODQwO3ZhciBfX1pUSWo9MjE5MDQ7dmFyIF9fWlRJZD0yMTk2ODt2YXIgX19aVFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0U9MjE2MTY7dmFyIF9fWlRJZj0yMTk1Mjt2YXIgX19aVElhPTIxODU2O3ZhciBfX1pUVk4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRT0yMTk3Njt2YXIgX19aVEljPTIxODI0O1NUQVRJQ19CQVNFPTg7U1RBVElDVE9QPVNUQVRJQ19CQVNFK1J1bnRpbWUuYWxpZ25NZW1vcnkoMjMwODMpO19fQVRJTklUX18ucHVzaCh7ZnVuYzooZnVuY3Rpb24oKXtfX0dMT0JBTF9fSV9hKCl9KX0se2Z1bmM6KGZ1bmN0aW9uKCl7X19HTE9CQUxfX0lfYTY1KCl9KX0se2Z1bmM6KGZ1bmN0aW9uKCl7X19HTE9CQUxfX0lfYTE1MygpfSl9KTthbGxvY2F0ZShbNzYsNjUsODMsOTAsMTA1LDExMiwwLDAsMTExLDExMiwxMDEsMTEwLDAsMCwwLDAsMTAzLDEwMSwxMTYsODAsMTExLDEwNSwxMTAsMTE2LDAsMCwwLDAsMCwwLDAsMCwxMDMsMTAxLDExNiw2NywxMTEsMTE3LDExMCwxMTYsMCwwLDAsMCwwLDAsMCwwLDEwNSwxMDUsMTA1LDAsMCwwLDAsMCw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMTIwLDg0LDAsMCw2NCwwLDAsMCw4MCw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMCwwLDAsMCwwLDAsMCwxNjAsODQsMCwwLDgwLDAsMCwwLDAsMCwwLDAsNzIsMCwwLDAsMTE4LDEwNSwxMDUsMTA1LDAsMCwwLDAsMTE4LDEwNSwxMDUsMTA1LDEwNSwwLDAsMCwxMDUsMTA1LDAsMCwwLDAsMCwwLDExOCwxMDUsMCwwLDAsMCwwLDAsMTE4LDAsMCwwLDAsMCwwLDAsMTA1LDEwNSwwLDAsMCwwLDAsMCw4MCw3NSw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMCwwLDAsMCwwLDAsMTYwLDg0LDAsMCwxNjAsMCwwLDAsMSwwLDAsMCw3MiwwLDAsMCwxMTgsNTAsMTE2LDU0LDExNSw1MCw0OCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTUsMTE1LDU2LDAsMCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTYsMTE1LDU0LDAsMCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTUsMTE1LDU2LDExOCw1MCwxMTYsNTYsMTE1LDU0LDAsMCwwLDAsMCwxMDQsOTcsMTE1LDMyLDEwNSwxMTUsNTgsMzIsMCwwLDAsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTcsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDk1LDExNSw5OSwxMDQsMTAxLDEwOSw5Nyw5NSwxMTYsMTIxLDExMiwxMDEsNjksMCwwLDIyNCw4NSwwLDAsMTYsMSwwLDAsODAsMzksMCwwLDAsMCwwLDAsODQsMTA0LDEwMSwzMiw3Niw2NSw5MCwzMiwxMTUsOTksMTA0LDEwMSwxMDksOTcsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDk5LDExMSwxMDMsMTEwLDEwNSwxMjIsMTAxLDEwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCwxLDAsMCwyMiwwLDAsMCwyMywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNSwxMjEsMTA5LDk4LDExMSwxMDgsMTE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDIyLDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY2LDk1LDczLDc4LDgzLDY3LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2Niw5NSw3Myw3OCw4Myw2Nyw5NSw1MSwxMTQsMTAzLDk4LDY5LDc4LDgzLDY5LDk1LDczLDgzLDc1LDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OCwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNjksMCwxMjAsODQsMCwwLDIwOCwyLDAsMCwyMjQsODUsMCwwLDE4NCwxLDAsMCwyNDgsMiwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDQ5LDQ5LDEwMSwxMTAsMTAwLDk1LDExMSwxMDIsOTUsMTAyLDEwNSwxMDgsMTAxLDY5LDAsMCwyMjQsODUsMCwwLDE2LDMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDgyLDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSwxMTAsMTAwLDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDQwLDMsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDIyLDAsMCwwLDAsMCwwLDAsMTUsMTQsMTMsMTIsMTEsMTAsOSw4LDE0LDAsMSwzLDYsMTAsMTAsOSwxMywxLDIsNCw3LDExLDExLDEwLDEyLDMsNCw1LDgsMTIsMTIsMTEsMTEsNiw3LDgsOSwxMywxMywxMiwxMCwxMCwxMSwxMiwxMywxNCwxNCwxMyw5LDEwLDExLDEyLDEzLDE0LDE1LDE0LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwwLDEsMiwzLDQsNSw2LDcsMSwwLDEsMiwzLDQsNSw2LDIsMSwwLDEsMiwzLDQsNSwzLDIsMSwwLDEsMiwzLDQsNCwzLDIsMSwwLDEsMiwzLDUsNCwzLDIsMSwwLDEsMiw2LDUsNCwzLDIsMSwwLDEsNyw2LDUsNCwzLDIsMSwwLDAsMCwwLDAsMTEyLDUsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDIyLDAsMCwwLDMxLDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3Nyw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw4MSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw4MSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsOCw0LDAsMCwxNDQsMzgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDk1LDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDczLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3Nyw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwxOTIsNywwLDAsMjMsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDQ4LDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw0OCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDQ4LDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw0OCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNjgsOTUsNjksNjksNjksNjksNzgsODMsNjYsOTUsNzMsNzgsODMsNjcsOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCwyMDAsNiwwLDAsMjQ4LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCw1Niw5LDAsMCwzNCwwLDAsMCwzNSwwLDAsMCwzNiwwLDAsMCwyMywwLDAsMCwzNywwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExMiwxMTYsMTE0LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw3Myw4MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw0OSw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDUwLDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw1MCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDUwLDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw1MCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNzAsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3OCw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3OCw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCwyNDAsNywwLDAsMTQ0LDM4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw0OSw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDUwLDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw1MCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDUwLDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw1MCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNzAsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTIsMTEsMCwwLDI0LDAsMCwwLDM4LDAsMCwwLDM5LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY2LDk1LDczLDc4LDgzLDY3LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDIyNCw4NSwwLDAsMTIwLDEwLDAsMCwyNDgsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDIzMiwxMiwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsMjQsMCwwLDAsNDMsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDgsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSwxMTIsMTE2LDExNCw5NSwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsNzMsODAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsNDksOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsNDksOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw1MCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNTAsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw1MCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNTAsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDcwLDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY4LDk1LDczLDc4LDgzLDY5LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3OCw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3OCw5NSw2OSw2OSw2OSw2OSwwLDIyNCw4NSwwLDAsMTYwLDExLDAsMCwxNDQsMzgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDk1LDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDczLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNjksNjksNjksNjksNjksNjksNjksMCwwLDAsMCwwLDAsMCwwLDgsMTUsMCwwLDI1LDAsMCwwLDQ0LDAsMCwwLDQ1LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCw0MCwxNCwwLDAsMjQ4LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMDQsMTYsMCwwLDQ2LDAsMCwwLDQ3LDAsMCwwLDQ4LDAsMCwwLDI1LDAsMCwwLDQ5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3NSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3NSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsNTYsMTUsMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsNDksOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsNDksOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw1MCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNTAsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw1MCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNTAsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDcwLDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwxMTgsMCwwLDAsMCwwLDAsMCwxMTYsMCwwLDAsMCwwLDAsMCwxMTUsMCwwLDAsMCwwLDAsMCw2NCwwLDAsMCwwLDAsMCwwLDE2LDE4LDAsMCw1MCwwLDAsMCw1MSwwLDAsMCw1NiwwLDAsMCwyNDgsMjU1LDI1NSwyNTUsMTYsMTgsMCwwLDUyLDAsMCwwLDUzLDAsMCwwLDE5MiwyNTUsMjU1LDI1NSwxOTIsMjU1LDI1NSwyNTUsMTYsMTgsMCwwLDU0LDAsMCwwLDU1LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU2LDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsOTksNjksNjksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDIwMCwxNywwLDAsMjI0LDQ1LDAsMCwwLDAsMCwwLDY0LDAsMCwwLDAsMCwwLDAsMTkyLDQ0LDAsMCw1NiwwLDAsMCw1NywwLDAsMCwxOTIsMjU1LDI1NSwyNTUsMTkyLDI1NSwyNTUsMjU1LDE5Miw0NCwwLDAsNTgsMCwwLDAsNTksMCwwLDAsMCwwLDAsMCwyMDgsMTgsMCwwLDYwLDAsMCwwLDYxLDAsMCwwLDI2LDAsMCwwLDIyLDAsMCwwLDIyLDAsMCwwLDIyLDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDI1LDAsMCwwLDI2LDAsMCwwLDI2LDAsMCwwLDI0LDAsMCwwLDI3LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Myw5OCw5NywxMTUsMTA1LDk5LDk1LDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDk4LDExNywxMDIsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDk5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxMzYsMTgsMCwwLDcyLDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDE5LDAsMCw2MiwwLDAsMCw2MywwLDAsMCw2NCwwLDAsMCwyOCwwLDAsMCw2NSwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExMiwxMTYsMTE0LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw3Myw4MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsOTUsNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsODMsNTcsOTUsNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsODMsNTcsOTUsNjksNjksNjksNjksMCwyMjQsODUsMCwwLDAsMTksMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsNzEsMTExLDExNiwzMiwxMDAsOTcsMTE2LDk3LDMyLDAsMCwwLDAsMCwwLDAsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDAsMCwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwxMDQsMTA1LDExNiwzMywwLDAsMTAwLDExMSwxMTAsMTAxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMTYsMTA1LDExMCwxMDMsMzIsMTE1LDEwNCwxMDUsMTE2LDMzLDAsMCwwLDAsMCw3Niw2NSw4Myw3MCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTEsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTUsMTA5LDk3LDEwMywxMDUsOTksNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTIwLDIwLDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw3Nyw5NywxMDMsMTA1LDk5LDMyLDExNCwxMDEsOTcsMTAwLDMzLDAsMCwwLDAsMCwxMTIsOTcsMTE0LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDAsMCwxMTIsOTcsMTE0LDExNSwxMDUsMTEwLDEwMywzMiw5OSwxMDQsMTE3LDExMCwxMDcsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNTAsOTksMTA0LDExNywxMTAsMTA3LDk1LDExNiw5Nyw5OCwxMDgsMTAxLDk1LDExNCwxMDEsOTcsMTAwLDk1LDEwMSwxMTQsMTE0LDExMSwxMTQsNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDIyNCwyMCwwLDAsODAsMzksMCwwLDAsMCwwLDAsNjcsMTA0LDExNywxMTAsMTA3LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMSwxMDIsMTAyLDExNSwxMDEsMTE2LDMyLDYxLDYxLDMyLDQ1LDQ5LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE2LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTYsMTA1LDEwOSwxMDEsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTEsMTEwLDExMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsODAsMjEsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNTQsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDk1LDk5LDEwNCwxMTcsMTEwLDEwNyw5NSwxMTYsOTcsOTgsMTA4LDEwMSw5NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDY5LDAsMCwwLDIyNCw4NSwwLDAsMTI4LDIxLDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw5OSwxMDQsMTE3LDExMCwxMDcsOTUsMTE1LDEwNSwxMjIsMTAxLDMyLDYxLDYxLDMyLDExNywxMDUsMTEwLDExNiw0NiwxMDksOTcsMTIwLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE2LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTYsMTA1LDEwOSwxMDEsNDQsMzIsOTksOTcsMTA4LDEwOCwzMiw0OSw0NSw1Niw0OCw0OCw0NSw2OCw2NSw3MCw4NSw4MSwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsNDYsMCwwLDAsMCwwLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiw5OSwxMTEsMTE3LDExMCwxMTYsMzIsMTA1LDExNSw1OCwzMiwwLDAsOTksMTE2LDExMSw5MSwwLDAsMCwwLDkzLDU4LDMyLDAsMCwwLDAsMCw4NCwxMDQsMTAxLDMyLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDIxLDAsMCw2NiwwLDAsMCw2NywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTEyLDIxLDAsMCw2OCwwLDAsMCw2OSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDg0LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTksOTcsMTE1LDMyLDk3LDMyLDExMiwxMTQsMTExLDk4LDEwOCwxMDEsMTA5LDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwwLDAsMCwwLDAsMCwwLDAsMCw4LDIxLDAsMCw3MCwwLDAsMCw3MSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsMzIsMTAxLDExMCw5OSwxMTEsMTAwLDEwMSwxMDAsMCwwLDExOCwxMDgsMTE0LDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMzIsMTE0LDEwMSw5NywxMDAsMzMsMCwwLDAsMCwwLDAsMCwwLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsMzIsMTE4LDEwOCwxMTQsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwwLDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw0OSw1MSwxMTAsMTExLDk1LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsOTUsMTE4LDEwOCwxMTQsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMzIsMjMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDExMiwxMTcsMTE1LDEwNCwxMDUsMTEwLDEwMywzMywwLDAsMCwwLDAsMCwwLDAsNzgsMTExLDMyLDc2LDY1LDgzLDEyMiwxMDUsMTEyLDMyLDg2LDc2LDgyLDMyLDExOSw5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDg2LDc2LDgyLDExNSwzMiwxMTUsMTAxLDk5LDExNiwxMDUsMTExLDExMCwwLDAsMCwwLDAsMCwwLDAsMCw2NCwyMywwLDAsNzIsMCwwLDAsNzMsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDUzLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsOTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiw5NSwxMTcsMTEwLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDY5LDAsMCwwLDAsMjI0LDg1LDAsMCwxNjgsMjMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDMyLDEwNSwxMTUsNTgsMzIsMCwxMTYsMTExLDExNiw5NywxMDgsMzIsMTA1LDExNiwxMDEsMTA5LDExNSw1OCwzMiwwLDAsMCw4MCw5NywxMTQsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMTE1LDMyLDExMCwxMTEsMTE5LDMzLDAsMCwwLDAsMCwwLDgwLDExNywxMTUsMTA0LDEwNSwxMTAsMTAzLDMyLDEwNSwxMTYsMTAxLDEwOSwzMiw5NywxMTYsMzIsMTA1LDExMCwxMDAsMTAxLDEyMCw1OCwzMiwwLDc5LDExMCwxMDgsMTIxLDMyLDc2LDY1LDgzLDEyMiwxMDUsMTEyLDMyLDgwLDc5LDczLDc4LDg0LDg3LDczLDgzLDY5LDMyLDY3LDcyLDg1LDc4LDc1LDY5LDY4LDMyLDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwwLDAsMCwwLDAsMjA4LDIzLDAsMCw3NCwwLDAsMCw3NSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1NSw5OCw5NywxMDAsOTUsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk1LDk5LDk3LDEwOCwxMDgsNjksMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTM2LDI0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNjgsMjQsMCwwLDc2LDAsMCwwLDc3LDAsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsMjYsMCwwLDc4LDAsMCwwLDc5LDAsMCwwLDI4LDAsMCwwLDI3LDAsMCwwLDgwLDAsMCwwLDgxLDAsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDI5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDk1LDk1LDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw1NCw5NSw5NSwxMDIsMTE3LDExMCw5OSw3Myw5MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw1MCw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDQ5LDQ5LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTExLDExNCwxMTUsNjksMTE4LDY5LDg1LDEwOCw4Miw3OCw4Myw1MSw5NSw1NCwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDY5LDY5LDk1LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDgzLDY2LDk1LDY5LDY5LDcwLDExOCw4Myw2NSw5NSw2OSw2OSw2OSwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsNTQsOTUsOTUsOTgsOTcsMTE1LDEwMSw3Myw3MCwxMTgsODIsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1MCwxMDUsMTExLDU0LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNjksNjksNjksNjksMCwwLDAsMCwxMjAsODQsMCwwLDIwOCwyNSwwLDAsMjI0LDg1LDAsMCw1NiwyNSwwLDAsOCwyNiwwLDAsMCwwLDAsMCw5MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDQ5LDQ5LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTExLDExNCwxMTUsNjksMTE4LDY5LDg1LDEwOCw4Miw3OCw4Myw0OCw5NSw1NCwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDY5LDY5LDk1LDAsMCwwLDEyMCw4NCwwLDAsMzIsMjYsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNDksMTExLDEwOCwxMDAsOTUsMTE1LDExNiwxMjEsMTA4LDEwMSw5NSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTA1LDExMSwxMTAsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTM2LDI2LDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDQ5LDUyLDExMCwxMTEsMTE2LDk1LDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMDEsMTAwLDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxOTIsMjYsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDg0LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwxMTAsMzksMTE2LDMyLDExNSwxMDEsMTAxLDEwOSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTAxLDEwMCwwLDAsMCwwLDAsMCwyMjQsMjYsMCwwLDgyLDAsMCwwLDgzLDAsMCwwLDIyLDAsMCwwLDAsMCwwLDAsODQsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEwMSwxMDEsMTA5LDExNSwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTgsMTAxLDMyLDExMSwxMDgsMTAwLDMyLDExNSwxMTYsMTIxLDEwOCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsMCwwLDAsMCwwLDAsMCwwLDE3NiwyNiwwLDAsODQsMCwwLDAsODUsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExOCw5NywxMDgsMTA1LDEwMCwwLDAsMCwwLDAsMTUyLDIwLDAsMCw4NiwwLDAsMCw4NywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDEwMywxMTEsMTA1LDExMCwxMDMsMzIsMTAwLDExMSwxMTksMTEwLDMzLDAsMCwwLDAsMCwwLDAsMCwwLDEyOCwyOCwwLDAsODgsMCwwLDAsODksMCwwLDAsOTAsMCwwLDAsMzAsMCwwLDAsOTEsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDgsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSwxMTIsMTE2LDExNCw5NSwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsNzMsODAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1MCwxMDUsMTExLDU0LDExNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDksNDgsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDIsMTA1LDEwOCwxMDEsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw1NSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw1NSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDI0MCwyNywwLDAsMTQ0LDM4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwxMjAsMjksMCwwLDkyLDAsMCwwLDkzLDAsMCwwLDk0LDAsMCwwLDMxLDAsMCwwLDk1LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw1MSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw1MSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwyMjQsODUsMCwwLDgsMjksMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDExOCwxMTEsMTA1LDEwMCwwLDAsMCwwLDk4LDExMSwxMTEsMTA4LDAsMCwwLDAsOTksMTA0LDk3LDExNCwwLDAsMCwwLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDk5LDEwNCw5NywxMTQsMCwwLDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsOTksMTA0LDk3LDExNCwwLDAsMCwxMTUsMTA0LDExMSwxMTQsMTE2LDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDEwNCwxMTEsMTE0LDExNiwwLDAsMTA1LDExMCwxMTYsMCwwLDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMCwwLDAsMCwxMDgsMTExLDExMCwxMDMsMCwwLDAsMCwxMTcsMTEwLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDEwOCwxMTEsMTEwLDEwMywwLDAsMCwxMDIsMTA4LDExMSw5NywxMTYsMCwwLDAsMTAwLDExMSwxMTcsOTgsMTA4LDEwMSwwLDAsMTE1LDExNiwxMDAsNTgsNTgsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMCwwLDAsMCwwLDExNSwxMTYsMTAwLDU4LDU4LDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjAsMTE3LDExMCwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiw5OSwxMDQsOTcsMTE0LDYyLDAsMCwwLDAsMCwwLDAsMCwxMTUsMTE2LDEwMCw1OCw1OCwxMTksMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMCwwLDAsMCwxMDEsMTA5LDExNSw5OSwxMTQsMTA1LDExMiwxMTYsMTAxLDExMCw1OCw1OCwxMTgsOTcsMTA4LDAsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNTgsNTgsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE4LDEwNSwxMDEsMTE5LDAsNzgsNDksNDgsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNDksNDksMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE4LDEwNSwxMDEsMTE5LDY5LDAsMCwwLDAsMCwxMjAsODQsMCwwLDIwMCwzMCwwLDAsNzgsNDksNDgsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNTEsMTE4LDk3LDEwOCw2OSwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDI0MCwzMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDksOTUsOTUsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw5NSw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDczLDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDEyMCw4NCwwLDAsODAsMzEsMCwwLDY0LDg2LDAsMCwxNiwzMSwwLDAsMCwwLDAsMCwxLDAsMCwwLDEyMCwzMSwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTAsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw3MywxMDQsNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDEwNCw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3MywxMDQsNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwxNTIsMzEsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMjAsMzEsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDk5LDY5LDY5LDY5LDY5LDAsMCw2NCw4NiwwLDAsMjQwLDMxLDAsMCwwLDAsMCwwLDEsMCwwLDAsMTIwLDMxXSwiaTgiLEFMTE9DX05PTkUsUnVudGltZS5HTE9CQUxfQkFTRSk7YWxsb2NhdGUoWzIwOCwzNiwwLDAsOTYsMCwwLDAsOTcsMCwwLDAsMjksMCwwLDAsMjUsMCwwLDAsMjMsMCwwLDAsMjMsMCwwLDAsMzAsMCwwLDAsMzEsMCwwLDAsMjYsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMzIsMCwwLDAsMjcsMCwwLDAsMzMsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDExNSwxMTYsMTAwLDExMSwxMTcsMTE2LDk4LDExNywxMDIsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDE3NiwzNiwwLDAsMTM2LDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsNTYsMzcsMCwwLDk4LDAsMCwwLDk5LDAsMCwwLDMwLDAsMCwwLDI1LDAsMCwwLDIzLDAsMCwwLDIzLDAsMCwwLDM0LDAsMCwwLDMxLDAsMCwwLDI2LDAsMCwwLDM1LDAsMCwwLDM2LDAsMCwwLDM0LDAsMCwwLDI4LDAsMCwwLDM1LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMTUsMTE2LDEwMCwxMDUsMTEwLDk4LDExNywxMDIsNzMsMTE5LDY5LDY5LDAsMjI0LDg1LDAsMCwzMiwzNywwLDAsMTM2LDQ0LDAsMCwwLDAsMCwwLDExNywxMTAsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsMTA4LDExMSw5OSw5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDMyLDEwNSwxMTAsMTEyLDExNywxMTYsMCwwLDAsMCwwLDAsMCwyMDgsMzcsMCwwLDEwMCwwLDAsMCwxMDEsMCwwLDAsMzEsMCwwLDAsMjIsMCwwLDAsMjQsMCwwLDAsMjQsMCwwLDAsMzcsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMzgsMCwwLDAsMjYsMCwwLDAsMzYsMCwwLDAsMjksMCwwLDAsMzcsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDExNSwxMTYsMTAwLDExMSwxMTcsMTE2LDk4LDExNywxMDIsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTc2LDM3LDAsMCw3Miw0NCwwLDAsMCwwLDAsMCwwLDAsMCwwLDU2LDM4LDAsMCwxMDIsMCwwLDAsMTAzLDAsMCwwLDMyLDAsMCwwLDIyLDAsMCwwLDI0LDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDM5LDAsMCwwLDQwLDAsMCwwLDM4LDAsMCwwLDI0LDAsMCwwLDM5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMTUsMTE2LDEwMCwxMDUsMTEwLDk4LDExNywxMDIsNzMsOTksNjksNjksMCwyMjQsODUsMCwwLDMyLDM4LDAsMCw3Miw0NCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSw5OSwxMTEsMTE3LDExMCwxMTYsNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsNzIsMzgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Nyw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExOSwxMDEsOTcsMTA3LDk1LDk5LDExMSwxMTcsMTEwLDExNiw2OSwwLDAsMCw2NCw4NiwwLDAsMTEyLDM4LDAsMCwwLDAsMCwwLDEsMCwwLDAsMTA0LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMjMyLDM4LDAsMCwxMDQsMCwwLDAsMTA1LDAsMCwwLDQxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MCwzOSwwLDAsMTA2LDAsMCwwLDEwNywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDgzLDExNiw0OSw0OSwxMDgsMTExLDEwMywxMDUsOTksOTUsMTAxLDExNCwxMTQsMTExLDExNCwwLDIyNCw4NSwwLDAsMjE2LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0MCwzOSwwLDAsMTA0LDAsMCwwLDEwOCwwLDAsMCw0MSwwLDAsMCwwLDAsMCwwLDgzLDExNiw0OSw1MCwxMDgsMTAxLDExMCwxMDMsMTE2LDEwNCw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDE2LDM5LDAsMCwyMzIsMzgsMCwwLDAsMCwwLDAsODMsMTE2LDQ5LDUxLDExNCwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCw1NiwzOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDEwMywxMDEsMTEwLDEwMSwxMTQsMTA1LDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1OCwzMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDIwMCwzOSwwLDAsMTA5LDAsMCwwLDExMCwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MCwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDY5LDAsMCwyMjQsODUsMCwwLDE3NiwzOSwwLDAsODAsMzksMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMSwxMTQsMTE0LDExMSwxMTQsOTUsOTksOTcsMTE2LDEwMSwxMDMsMTExLDExNCwxMjEsNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMjE2LDM5LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTAsOTUsOTUsMTAwLDExMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw2OSwwLDAsMjI0LDg1LDAsMCwwLDQwLDAsMCwyNDgsMzksMCwwLDAsMCwwLDAsMCwwLDAsMCwxMjAsNDAsMCwwLDExMSwwLDAsMCwxMTIsMCwwLDAsNDIsMCwwLDAsMjIsMCwwLDAsMzAsMCwwLDAsMzEsMCwwLDAsMjMsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNTIsOTUsOTUsMTAzLDEwMSwxMTAsMTAxLDExNCwxMDUsOTksOTUsMTAxLDExNCwxMTQsMTExLDExNCw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDgwLDQwLDAsMCwyNCw0MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIxNiw0MCwwLDAsMTEzLDAsMCwwLDExNCwwLDAsMCw0MywwLDAsMCwyNCwwLDAsMCwzMCwwLDAsMCwzMSwwLDAsMCwyNSwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw1MSw5NSw5NSwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDk1LDk5LDk3LDExNiwxMDEsMTAzLDExMSwxMTQsMTIxLDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNzYsNDAsMCwwLDI0LDQwLDAsMCwwLDAsMCwwLDEwOSwxMTcsMTE2LDEwMSwxMjAsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDk3LDEwNSwxMDgsMTAxLDEwMCwwLDAsMCwwLDAsMCwwLDEwMSw5OSwzMiw2MSw2MSwzMiw0OCwwLDQ3LDg1LDExNSwxMDEsMTE0LDExNSw0NywxMTgsMTAxLDExNCwxMDksOTcsNDcsMTE2LDEwOSwxMTIsNDcsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNDcsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDcsMTA4LDEwNSw5OCw0NywxMDgsMTA1LDk4LDk5LDEyMCwxMjAsNDcsMTA5LDExNywxMTYsMTAxLDEyMCw0Niw5OSwxMTIsMTEyLDAsMTE3LDExMCwxMDgsMTExLDk5LDEwNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywwLDAsMCwwLDAsMCwwLDAsNzIsNDQsMCwwLDExNSwwLDAsMCwxMTYsMCwwLDAsMjYsMCwwLDAsMjIsMCwwLDAsMjQsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMzgsMCwwLDAsMjYsMCwwLDAsMzYsMCwwLDAsMjQsMCwwLDAsMzksMCwwLDAsMCwwLDAsMCwxMzYsNDQsMCwwLDExNywwLDAsMCwxMTgsMCwwLDAsMzMsMCwwLDAsMjUsMCwwLDAsMjMsMCwwLDAsMjMsMCwwLDAsMzQsMCwwLDAsMzEsMCwwLDAsMjYsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMzIsMCwwLDAsMjgsMCwwLDAsMzUsMCwwLDAsOCwwLDAsMCwwLDAsMCwwLDE5Miw0NCwwLDAsNTYsMCwwLDAsNTcsMCwwLDAsMjQ4LDI1NSwyNTUsMjU1LDI0OCwyNTUsMjU1LDI1NSwxOTIsNDQsMCwwLDU4LDAsMCwwLDU5LDAsMCwwLDgsMCwwLDAsMCwwLDAsMCw4LDQ1LDAsMCwxMTksMCwwLDAsMTIwLDAsMCwwLDI0OCwyNTUsMjU1LDI1NSwyNDgsMjU1LDI1NSwyNTUsOCw0NSwwLDAsMTIxLDAsMCwwLDEyMiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsODAsNDUsMCwwLDEyMywwLDAsMCwxMjQsMCwwLDAsMjUyLDI1NSwyNTUsMjU1LDI1MiwyNTUsMjU1LDI1NSw4MCw0NSwwLDAsMTI1LDAsMCwwLDEyNiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsMTUyLDQ1LDAsMCwxMjcsMCwwLDAsMTI4LDAsMCwwLDI1MiwyNTUsMjU1LDI1NSwyNTIsMjU1LDI1NSwyNTUsMTUyLDQ1LDAsMCwxMjksMCwwLDAsMTMwLDAsMCwwLDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwwLDAsMCwwLDAsMCwwLDAsMTE3LDExMCwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOTYsNDMsMCwwLDEzMSwwLDAsMCwxMzIsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEzNiw0MywwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwxMDUsMTExLDExNSw5NSw5OCw5NywxMTUsMTAxLDU4LDU4LDk5LDEwOCwxMDEsOTcsMTE0LDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDEwNSwxMTEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNTUsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDY0LDQzLDAsMCwyMDAsMzksMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDEwNSwxMTEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNjksMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDExMiw0MywwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk4LDk3LDExNSwxMDUsOTksOTUsMTA1LDExMSwxMTUsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNDQsNDMsMCwwLDEzNiw0MywwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTExLDExNSw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMjA4LDQzLDAsMCwxMzYsNDMsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUzLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwxNiw0NCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUzLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDgwLDQ0LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTEsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwxNDQsNDQsMCwwLDAsMCwwLDAsMSwwLDAsMCwxOTIsNDMsMCwwLDMsMjQ0LDI1NSwyNTUsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUxLDk4LDk3LDExNSwxMDUsOTksOTUsMTA1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwyMTYsNDQsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDQ0LDAsMCwzLDI0NCwyNTUsMjU1LDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MSw5OCw5NywxMTUsMTA1LDk5LDk1LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSwwLDAsNjQsODYsMCwwLDMyLDQ1LDAsMCwwLDAsMCwwLDEsMCwwLDAsMTkyLDQzLDAsMCwzLDI0NCwyNTUsMjU1LDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MSw5OCw5NywxMTUsMTA1LDk5LDk1LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCw2NCw4NiwwLDAsMTA0LDQ1LDAsMCwwLDAsMCwwLDEsMCwwLDAsMCw0NCwwLDAsMywyNDQsMjU1LDI1NSw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTExLDExNSwxMTYsMTE0LDEwMSw5NywxMDksNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDY5LDY5LDAsNjQsODYsMCwwLDE3Niw0NSwwLDAsMywwLDAsMCwyLDAsMCwwLDE5Miw0NCwwLDAsMiwwLDAsMCw4MCw0NSwwLDAsMiw4LDAsMCwwLDAsMCwwLDcyLDQ2LDAsMCwxMzUsMCwwLDAsMTM2LDAsMCwwLDQ0LDAsMCwwLDIyLDAsMCwwLDMwLDAsMCwwLDMxLDAsMCwwLDI2LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU3LDk1LDk1LDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSw2OSwwLDAsMCwyMjQsODUsMCwwLDQwLDQ2LDAsMCwyNCw0MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDU2LDYwLDAsMCwxMzcsMCwwLDAsMTM4LDAsMCwwLDEzOSwwLDAsMCwyMiwwLDAsMCwyNSwwLDAsMCwzMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw5Niw2MCwwLDAsMTQwLDAsMCwwLDE0MSwwLDAsMCwxMzksMCwwLDAsMjMsMCwwLDAsMjYsMCwwLDAsMzMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsNjUsMCwwLDE0MiwwLDAsMCwxNDMsMCwwLDAsMTM5LDAsMCwwLDIyLDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDMxLDAsMCwwLDMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw5Nyw5OCw5OSwxMDAsMTAxLDEwMiw2NSw2Niw2Nyw2OCw2OSw3MCwxMjAsODgsNDMsNDUsMTEyLDgwLDEwNSw3MywxMTAsNzgsMCwwLDAsMCwwLDAsMCwwLDM3LDExMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDE2OCw2NSwwLDAsMTQ0LDAsMCwwLDE0NSwwLDAsMCwxMzksMCwwLDAsMzMsMCwwLDAsMzQsMCwwLDAsMzUsMCwwLDAsMzYsMCwwLDAsMzcsMCwwLDAsMzgsMCwwLDAsMzksMCwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsNDMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTA0LDY2LDAsMCwxNDYsMCwwLDAsMTQ3LDAsMCwwLDEzOSwwLDAsMCwyNSwwLDAsMCwyNiwwLDAsMCw0NCwwLDAsMCwyNywwLDAsMCw0NSwwLDAsMCwyMiwwLDAsMCwyMywwLDAsMCwyOCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjcsMCwwLDE0OCwwLDAsMCwxNDksMCwwLDAsMTM5LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDQ2LDAsMCwwLDMxLDAsMCwwLDQ3LDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDAsMCwwLDAsMzcsMTEyLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDAsNjIsMCwwLDE1MCwwLDAsMCwxNTEsMCwwLDAsMTM5LDAsMCwwLDQ1LDAsMCwwLDQ4LDAsMCwwLDQ5LDAsMCwwLDUwLDAsMCwwLDUxLDAsMCwwLDUyLDAsMCwwLDIyLDAsMCwwLDI0OCwyNTUsMjU1LDI1NSw0MCw2MiwwLDAsNDYsMCwwLDAsNDcsMCwwLDAsNDgsMCwwLDAsNDksMCwwLDAsNTAsMCwwLDAsNTEsMCwwLDAsNTIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsNzIsNTgsMzcsNzcsNTgsMzcsODMsMzcsMTA5LDQ3LDM3LDEwMCw0NywzNywxMjEsMzcsODksNDUsMzcsMTA5LDQ1LDM3LDEwMCwzNyw3Myw1OCwzNyw3Nyw1OCwzNyw4MywzMiwzNywxMTIsMCwwLDAsMCwwLDM3LDcyLDU4LDM3LDc3LDAsMCwwLDM3LDcyLDU4LDM3LDc3LDU4LDM3LDgzLDAsMCwwLDAsMjAwLDYyLDAsMCwxNTIsMCwwLDAsMTUzLDAsMCwwLDEzOSwwLDAsMCw1MywwLDAsMCw1MywwLDAsMCw1NCwwLDAsMCw1NSwwLDAsMCw1NiwwLDAsMCw1NywwLDAsMCwyMywwLDAsMCwyNDgsMjU1LDI1NSwyNTUsMjAwLDYyLDAsMCw1NCwwLDAsMCw1NSwwLDAsMCw1NiwwLDAsMCw1NywwLDAsMCw1OCwwLDAsMCw1OSwwLDAsMCw2MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNywwLDAsMCw3MiwwLDAsMCw1OCwwLDAsMCwzNywwLDAsMCw3NywwLDAsMCw1OCwwLDAsMCwzNywwLDAsMCw4MywwLDAsMCwzNywwLDAsMCwxMDksMCwwLDAsNDcsMCwwLDAsMzcsMCwwLDAsMTAwLDAsMCwwLDQ3LDAsMCwwLDM3LDAsMCwwLDEyMSwwLDAsMCwzNywwLDAsMCw4OSwwLDAsMCw0NSwwLDAsMCwzNywwLDAsMCwxMDksMCwwLDAsNDUsMCwwLDAsMzcsMCwwLDAsMTAwLDAsMCwwLDM3LDAsMCwwLDczLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDgzLDAsMCwwLDMyLDAsMCwwLDM3LDAsMCwwLDExMiwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDcyLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsNzIsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMCwwLDAsMCw4OCw2MywwLDAsMTU0LDAsMCwwLDE1NSwwLDAsMCwxMzksMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTkyLDYzLDAsMCwxNTYsMCwwLDAsMTU3LDAsMCwwLDEzOSwwLDAsMCwyMywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNzYsNjAsMCwwLDE1OCwwLDAsMCwxNTksMCwwLDAsMTM5LDAsMCwwLDYxLDAsMCwwLDYyLDAsMCwwLDM0LDAsMCwwLDM1LDAsMCwwLDM2LDAsMCwwLDM3LDAsMCwwLDYzLDAsMCwwLDM4LDAsMCwwLDM5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI0MCw2MCwwLDAsMTYwLDAsMCwwLDE2MSwwLDAsMCwxMzksMCwwLDAsNjQsMCwwLDAsNjUsMCwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsNDMsMCwwLDAsNjYsMCwwLDAsNDQsMCwwLDAsNDUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDgsNjEsMCwwLDE2MiwwLDAsMCwxNjMsMCwwLDAsMTM5LDAsMCwwLDY3LDAsMCwwLDY4LDAsMCwwLDQ2LDAsMCwwLDQ3LDAsMCwwLDQ4LDAsMCwwLDQ5LDAsMCwwLDY5LDAsMCwwLDUwLDAsMCwwLDUxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDExMiw2MSwwLDAsMTY0LDAsMCwwLDE2NSwwLDAsMCwxMzksMCwwLDAsNzAsMCwwLDAsNzEsMCwwLDAsNTIsMCwwLDAsNTMsMCwwLDAsNTQsMCwwLDAsNTUsMCwwLDAsNzIsMCwwLDAsNTYsMCwwLDAsNTcsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTQ0LDY3LDAsMCwxNjYsMCwwLDAsMTY3LDAsMCwwLDEzOSwwLDAsMCwyNCwwLDAsMCwyNSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1NywwLDAsMCwwLDAsMCwzNyw3NiwxMDIsMCwwLDAsMCwwLDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDAsMCwwLDAsMzIsNjgsMCwwLDE2OCwwLDAsMCwxNjksMCwwLDAsMTM5LDAsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDY4LDAsMCwxNzAsMCwwLDAsMTcxLDAsMCwwLDEzOSwwLDAsMCwyMiwwLDAsMCw1OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNyw0Niw0OCw3NiwxMDIsMCwwLDAsMCwwLDAsMCw2NCw2OSwwLDAsMTcyLDAsMCwwLDE3MywwLDAsMCwxMzksMCwwLDAsMjMsMCwwLDAsNTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyNCw2NCwwLDAsMTc0LDAsMCwwLDE3NSwwLDAsMCwxMzksMCwwLDAsMzQsMCwwLDAsMzMsMCwwLDAsNTgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODAsNjQsMCwwLDE3NiwwLDAsMCwxNzcsMCwwLDAsMTM5LDAsMCwwLDM1LDAsMCwwLDM0LDAsMCwwLDU5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTgsMTAxLDk5LDExNiwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNiw2MCwwLDAsMTc4LDAsMCwwLDE3OSwwLDAsMCwxMzksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMzIsNTYsMCwwLDE4MCwwLDAsMCwxODEsMCwwLDAsMTM5LDAsMCwwLDQwLDAsMCwwLDM2LDAsMCwwLDQxLDAsMCwwLDM3LDAsMCwwLDQyLDAsMCwwLDIyLDAsMCwwLDM4LDAsMCwwLDI0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIwMCw1NywwLDAsMTgyLDAsMCwwLDE4MywwLDAsMCwxMzksMCwwLDAsMjIsMCwwLDAsMjMsMCwwLDAsMjUsMCwwLDAsNzMsMCwwLDAsNzQsMCwwLDAsMjYsMCwwLDAsNzUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTkyLDU5LDAsMCwxODQsMCwwLDAsMTg1LDAsMCwwLDEzOSwwLDAsMCw3NiwwLDAsMCw3NywwLDAsMCw2MCwwLDAsMCw2MSwwLDAsMCw2MiwwLDAsMCwwLDAsMCwwLDIzMiw1OSwwLDAsMTg2LDAsMCwwLDE4NywwLDAsMCwxMzksMCwwLDAsNzgsMCwwLDAsNzksMCwwLDAsNjMsMCwwLDAsNjQsMCwwLDAsNjUsMCwwLDAsMTE2LDAsMCwwLDExNCwwLDAsMCwxMTcsMCwwLDAsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMDIsOTcsMTA4LDExNSwxMDEsMCwwLDAsMTAyLDAsMCwwLDk3LDAsMCwwLDEwOCwwLDAsMCwxMTUsMCwwLDAsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsMTA5LDAsMCwwLDQ3LDAsMCwwLDM3LDAsMCwwLDEwMCwwLDAsMCw0NywwLDAsMCwzNywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDcyLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDgzLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNyw5NywzMiwzNyw5OCwzMiwzNywxMDAsMzIsMzcsNzIsNTgsMzcsNzcsNTgsMzcsODMsMzIsMzcsODksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNywwLDAsMCw5NywwLDAsMCwzMiwwLDAsMCwzNywwLDAsMCw5OCwwLDAsMCwzMiwwLDAsMCwzNywwLDAsMCwxMDAsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsNzIsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsODksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDczLDU4LDM3LDc3LDU4LDM3LDgzLDMyLDM3LDExMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsNzMsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsMTEyLDAsMCwwLDAsMCwwLDAsMTA4LDExMSw5OSw5NywxMDgsMTAxLDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsMCwwLDAsMCwwLDAsMCwzMiw1NiwwLDAsMTg4LDAsMCwwLDE4OSwwLDAsMCwxMzksMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTQsMTA4LDExMSw5OSw5NywxMDgsMTAxLDUzLDEwMiw5Nyw5OSwxMDEsMTE2LDY5LDAsMCwwLDIyNCw4NSwwLDAsOCw1NiwwLDAsMTA0LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDU2LDAsMCwxODgsMCwwLDAsMTkwLDAsMCwwLDEzOSwwLDAsMCwzOSwwLDAsMCwyMywwLDAsMCwyNCwwLDAsMCwyNSwwLDAsMCw0MywwLDAsMCw0MCwwLDAsMCw0NCwwLDAsMCw0MSwwLDAsMCw0NSwwLDAsMCwyNiwwLDAsMCw0MiwwLDAsMCwyNywwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1Myw5OSwxMTYsMTIxLDExMiwxMDEsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDk5LDExNiwxMjEsMTEyLDEwMSw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMTIwLDg0LDAsMCwxNDQsNTYsMCwwLDY0LDg2LDAsMCwxMjAsNTYsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNTYsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUzLDk5LDExNiwxMjEsMTEyLDEwMSw3Myw5OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwyMDgsNTYsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNTYsMCwwLDIsMCwwLDAsMCwwLDAsMCwxMjgsNTcsMCwwLDE4OCwwLDAsMCwxOTEsMCwwLDAsMTM5LDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDI4LDAsMCwwLDgwLDAsMCwwLDgxLDAsMCwwLDI5LDAsMCwwLDgyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTAwLDEwMSw5OSwxMTgsMTE2LDczLDk5LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsOTUsOTgsOTcsMTE1LDEwMSw2OSwwLDAsMTIwLDg0LDAsMCw5Niw1NywwLDAsNjQsODYsMCwwLDU2LDU3LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTIwLDU3LDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTAwLDEwMSw5OSwxMTgsMTE2LDczLDExOSw5OSw0OSw0OSw5NSw5NSwxMDksOTgsMTE1LDExNiw5NywxMTYsMTAxLDk1LDExNiw2OSw2OSwwLDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwxNjAsNTcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMjAsNTcsMCwwLDIsMCwwLDAsMCwwLDAsMCw2NCw1OCwwLDAsMTg4LDAsMCwwLDE5MiwwLDAsMCwxMzksMCwwLDAsMjYsMCwwLDAsMjcsMCwwLDAsMzAsMCwwLDAsODMsMCwwLDAsODQsMCwwLDAsMzEsMCwwLDAsODUsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsNzMsNjgsMTE1LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwyNCw1OCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDEyMCw1NywwLDAsMiwwLDAsMCwwLDAsMCwwLDE4NCw1OCwwLDAsMTg4LDAsMCwwLDE5MywwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsNzMsNjgsMTA1LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwxNDQsNTgsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMjAsNTcsMCwwLDIsMCwwLDAsMCwwLDAsMCw0OCw1OSwwLDAsMTg4LDAsMCwwLDE5NCwwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU0LDk1LDk1LDExMCw5NywxMTQsMTE0LDExMSwxMTksOTUsMTE2LDExMSw5NSwxMTcsMTE2LDEwMiw1Niw3Myw3NiwxMDYsNTEsNTAsNjksNjksNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDgsNTksMCwwLDE4NCw1OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDE1Miw1OSwwLDAsMTg4LDAsMCwwLDE5NSwwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU1LDk1LDk1LDExOSwxMDUsMTAwLDEwMSwxMTAsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNywxMTYsMTAyLDU2LDczLDc2LDEwNiw1MSw1MCw2OSw2OSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDExMiw1OSwwLDAsMTg0LDU4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMTAsMTE3LDEwOSwxMTIsMTE3LDExMCw5OSwxMTYsNzMsOTksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDE2OCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExMCwxMTcsMTA5LDExMiwxMTcsMTEwLDk5LDExNiw3MywxMTksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDIwOCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU0LDEwOCwxMTEsOTksOTcsMTA4LDEwMSw1Myw5NSw5NSwxMDUsMTA5LDExMiw2OSwwLDAsMCwyMjQsODUsMCwwLDI0OCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDgsMTA4LDk3LDExNiwxMDEsNzMsOTksNjksNjksMCwwLDAsMCwwLDIyNCw4NSwwLDAsMzIsNjAsMCwwLDMyLDU2LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTA4LDEwOCw5NywxMTYsMTAxLDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCw3Miw2MCwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDEwOSwxMTEsMTEwLDEwMSwxMjEsMTEyLDExNywxMTAsOTksMTE2LDczLDk5LDc2LDk4LDQ4LDY5LDY5LDY5LDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMTIwLDg0LDAsMCwxNDQsNjAsMCwwLDY0LDg2LDAsMCwxMTIsNjAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjAsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDEwOSwxMTEsMTEwLDEwMSwxMjEsMTEyLDExNywxMTAsOTksMTE2LDczLDk5LDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDAsMCw2NCw4NiwwLDAsMjA4LDYwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTY4LDYwLDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCwxMDksMTExLDExMCwxMDEsMTIxLDExMiwxMTcsMTEwLDk5LDExNiw3MywxMTksNzYsOTgsNDgsNjksNjksNjksMCwwLDAsMCwwLDY0LDg2LDAsMCwxNiw2MSwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDE2OCw2MCwwLDAsMiwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsMTA5LDExMSwxMTAsMTAxLDEyMSwxMTIsMTE3LDExMCw5OSwxMTYsNzMsMTE5LDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDAsMCw2NCw4NiwwLDAsODAsNjEsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjAsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExNiwxMDUsMTA5LDEwMSw5NSwxMDMsMTAxLDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTE2LDEwNSwxMDksMTAxLDk1LDk4LDk3LDExNSwxMDEsNjksMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyMTYsNjEsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTYsMTA1LDEwOSwxMDEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTUsMTE1LDExNiwxMTEsMTE0LDk3LDEwMywxMDEsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDI0OCw2MSwwLDAsNjQsODYsMCwwLDE0NCw2MSwwLDAsMCwwLDAsMCwzLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDI0MCw2MSwwLDAsMiwwLDAsMCwzMiw2MiwwLDAsMCw4LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTYsMTE2LDEwNSwxMDksMTAxLDk1LDEwMywxMDEsMTE2LDczLDExOSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTYsMTA1LDEwOSwxMDEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTUsMTE1LDExNiwxMTEsMTE0LDk3LDEwMywxMDEsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwxNTIsNjIsMCwwLDY0LDg2LDAsMCw4MCw2MiwwLDAsMCwwLDAsMCwzLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDI0MCw2MSwwLDAsMiwwLDAsMCwxOTIsNjIsMCwwLDAsOCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExNiwxMDUsMTA5LDEwMSw5NSwxMTIsMTE3LDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsOTUsOTUsMTE2LDEwNSwxMDksMTAxLDk1LDExMiwxMTcsMTE2LDY5LDAsMCwwLDAsMTIwLDg0LDAsMCw1Niw2MywwLDAsNjQsODYsMCwwLDI0MCw2MiwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDgwLDYzLDAsMCwwLDgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMTYsMTA1LDEwOSwxMDEsOTUsMTEyLDExNywxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsNjQsODYsMCwwLDEyMCw2MywwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDgwLDYzLDAsMCwwLDgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTUsNzMsOTksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTEsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNjksMCwxMjAsODQsMCwwLDI0OCw2MywwLDAsNjQsODYsMCwwLDIyNCw2MywwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDE2LDY0LDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTUsNzMsMTE5LDY5LDY5LDAsMCwwLDAsNjQsODYsMCwwLDU2LDY0LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTYsNjQsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDEwMywxMDEsMTE2LDczLDk5LDc4LDgzLDk1LDQ5LDU3LDEwNSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDEwMywxMDEsMTE2LDczLDk5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Miw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDIwOCw2NCwwLDAsNjQsODYsMCwwLDE4NCw2NCwwLDAsMCwwLDAsMCwxLDAsMCwwLDI0MCw2NCwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsMTEyLDY0LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMjQ4LDY0LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw3MywxMTksNzgsODMsOTUsNDksNTcsMTA1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTgsMTE3LDEwMiw5NSwxMDUsMTE2LDEwMSwxMTQsOTcsMTE2LDExMSwxMTQsNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1Nyw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw3MywxMTksNjksNjksMCwwLDAsNjQsODYsMCwwLDEyMCw2NSwwLDAsMCwwLDAsMCwxLDAsMCwwLDI0MCw2NCwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsNDgsNjUsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNDQsNjUsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDk5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDk5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Miw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMTIsMTE3LDExNiw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDQwLDY2LDAsMCw2NCw4NiwwLDAsMTYsNjYsMCwwLDAsMCwwLDAsMSwwLDAsMCw3Miw2NiwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsMjAwLDY1LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsODAsNjYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDExOSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDExOSw2OSw2OSwwLDAsMCw2NCw4NiwwLDAsMjA4LDY2LDAsMCwwLDAsMCwwLDEsMCwwLDAsNzIsNjYsMCwwLDAsMCwwLDAsNjQsODYsMCwwLDEzNiw2NiwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDIzMiw2NiwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSwxMDMsMTAxLDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMTA0LDY3LDAsMCw2NCw4NiwwLDAsMzIsNjcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMzYsNjcsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDEwNSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OSw5NSw5NSwxMDksMTExLDExMCwxMDEsMTIxLDk1LDEwMywxMDEsMTE2LDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyNDgsNjcsMCwwLDY0LDg2LDAsMCwxNzYsNjcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwyNCw2OCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSwxMTIsMTE3LDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTEyLDExNywxMTYsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMTM2LDY4LDAsMCw2NCw4NiwwLDAsNjQsNjgsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTEyLDExNywxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OSw5NSw5NSwxMDksMTExLDExMCwxMDEsMTIxLDk1LDExMiwxMTcsMTE2LDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyNCw2OSwwLDAsNjQsODYsMCwwLDIwOCw2OCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDU2LDY5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY1LDAsMCwwLDc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MCwwLDAsMCw3NywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY1LDc3LDAsMCwwLDAsMCwwLDgwLDc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NCwwLDAsMCw5NywwLDAsMCwxMTAsMCwwLDAsMTE3LDAsMCwwLDk3LDAsMCwwLDExNCwwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw3MCwwLDAsMCwxMDEsMCwwLDAsOTgsMCwwLDAsMTE0LDAsMCwwLDExNywwLDAsMCw5NywwLDAsMCwxMTQsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NywwLDAsMCw5NywwLDAsMCwxMTQsMCwwLDAsOTksMCwwLDAsMTA0LDAsMCwwLDAsMCwwLDAsNjUsMCwwLDAsMTEyLDAsMCwwLDExNCwwLDAsMCwxMDUsMCwwLDAsMTA4LDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwxMDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDc0LDAsMCwwLDExNywwLDAsMCwxMDgsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2NSwwLDAsMCwxMTcsMCwwLDAsMTAzLDAsMCwwLDExNywwLDAsMCwxMTUsMCwwLDAsMTE2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCwxMDEsMCwwLDAsMTEyLDAsMCwwLDExNiwwLDAsMCwxMDEsMCwwLDAsMTA5LDAsMCwwLDk4LDAsMCwwLDEwMSwwLDAsMCwxMTQsMCwwLDAsMCwwLDAsMCw3OSwwLDAsMCw5OSwwLDAsMCwxMTYsMCwwLDAsMTExLDAsMCwwLDk4LDAsMCwwLDEwMSwwLDAsMCwxMTQsMCwwLDAsMCwwLDAsMCw3OCwwLDAsMCwxMTEsMCwwLDAsMTE4LDAsMCwwLDEwMSwwLDAsMCwxMDksMCwwLDAsOTgsMCwwLDAsMTAxLDAsMCwwLDExNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjgsMCwwLDAsMTAxLDAsMCwwLDk5LDAsMCwwLDEwMSwwLDAsMCwxMDksMCwwLDAsOTgsMCwwLDAsMTAxLDAsMCwwLDExNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsOTcsMCwwLDAsMTEwLDAsMCwwLDAsMCwwLDAsNzAsMCwwLDAsMTAxLDAsMCwwLDk4LDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsOTcsMCwwLDAsMTE0LDAsMCwwLDAsMCwwLDAsNjVdLCJpOCIsQUxMT0NfTk9ORSxSdW50aW1lLkdMT0JBTF9CQVNFKzkzMjQpO2FsbG9jYXRlKFsxMTIsMCwwLDAsMTE0LDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwwLDAsMCwwLDc0LDAsMCwwLDExNywwLDAsMCwxMDgsMCwwLDAsMCwwLDAsMCw2NSwwLDAsMCwxMTcsMCwwLDAsMTAzLDAsMCwwLDAsMCwwLDAsODMsMCwwLDAsMTAxLDAsMCwwLDExMiwwLDAsMCwwLDAsMCwwLDc5LDAsMCwwLDk5LDAsMCwwLDExNiwwLDAsMCwwLDAsMCwwLDc4LDAsMCwwLDExMSwwLDAsMCwxMTgsMCwwLDAsMCwwLDAsMCw2OCwwLDAsMCwxMDEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzQsOTcsMTEwLDExNyw5NywxMTQsMTIxLDAsNzAsMTAxLDk4LDExNCwxMTcsOTcsMTE0LDEyMSwwLDAsMCwwLDAsMCwwLDAsNzcsOTcsMTE0LDk5LDEwNCwwLDAsMCw2NSwxMTIsMTE0LDEwNSwxMDgsMCwwLDAsNzcsOTcsMTIxLDAsMCwwLDAsMCw3NCwxMTcsMTEwLDEwMSwwLDAsMCwwLDc0LDExNywxMDgsMTIxLDAsMCwwLDAsNjUsMTE3LDEwMywxMTcsMTE1LDExNiwwLDAsODMsMTAxLDExMiwxMTYsMTAxLDEwOSw5OCwxMDEsMTE0LDAsMCwwLDAsMCwwLDAsNzksOTksMTE2LDExMSw5OCwxMDEsMTE0LDAsNzgsMTExLDExOCwxMDEsMTA5LDk4LDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDY4LDEwMSw5OSwxMDEsMTA5LDk4LDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDc0LDk3LDExMCwwLDAsMCwwLDAsNzAsMTAxLDk4LDAsMCwwLDAsMCw3Nyw5NywxMTQsMCwwLDAsMCwwLDY1LDExMiwxMTQsMCwwLDAsMCwwLDc0LDExNywxMTAsMCwwLDAsMCwwLDc0LDExNywxMDgsMCwwLDAsMCwwLDY1LDExNywxMDMsMCwwLDAsMCwwLDgzLDEwMSwxMTIsMCwwLDAsMCwwLDc5LDk5LDExNiwwLDAsMCwwLDAsNzgsMTExLDExOCwwLDAsMCwwLDAsNjgsMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NywwLDAsMCwxMTEsMCwwLDAsMTEwLDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDg0LDAsMCwwLDExNywwLDAsMCwxMDEsMCwwLDAsMTE1LDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw4NywwLDAsMCwxMDEsMCwwLDAsMTAwLDAsMCwwLDExMCwwLDAsMCwxMDEsMCwwLDAsMTE1LDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw4NCwwLDAsMCwxMDQsMCwwLDAsMTE3LDAsMCwwLDExNCwwLDAsMCwxMTUsMCwwLDAsMTAwLDAsMCwwLDk3LDAsMCwwLDEyMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzAsMCwwLDAsMTE0LDAsMCwwLDEwNSwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCw5NywwLDAsMCwxMTYsMCwwLDAsMTE3LDAsMCwwLDExNCwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCwxMTcsMCwwLDAsMTEwLDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsMTExLDAsMCwwLDExMCwwLDAsMCwwLDAsMCwwLDg0LDAsMCwwLDExNywwLDAsMCwxMDEsMCwwLDAsMCwwLDAsMCw4NywwLDAsMCwxMDEsMCwwLDAsMTAwLDAsMCwwLDAsMCwwLDAsODQsMCwwLDAsMTA0LDAsMCwwLDExNywwLDAsMCwwLDAsMCwwLDcwLDAsMCwwLDExNCwwLDAsMCwxMDUsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCw5NywwLDAsMCwxMTYsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMTE3LDExMCwxMDAsOTcsMTIxLDAsMCw3NywxMTEsMTEwLDEwMCw5NywxMjEsMCwwLDg0LDExNywxMDEsMTE1LDEwMCw5NywxMjEsMCw4NywxMDEsMTAwLDExMCwxMDEsMTE1LDEwMCw5NywxMjEsMCwwLDAsMCwwLDAsMCw4NCwxMDQsMTE3LDExNCwxMTUsMTAwLDk3LDEyMSwwLDAsMCwwLDAsMCwwLDAsNzAsMTE0LDEwNSwxMDAsOTcsMTIxLDAsMCw4Myw5NywxMTYsMTE3LDExNCwxMDAsOTcsMTIxLDAsMCwwLDAsMCwwLDAsMCw4MywxMTcsMTEwLDAsMCwwLDAsMCw3NywxMTEsMTEwLDAsMCwwLDAsMCw4NCwxMTcsMTAxLDAsMCwwLDAsMCw4NywxMDEsMTAwLDAsMCwwLDAsMCw4NCwxMDQsMTE3LDAsMCwwLDAsMCw3MCwxMTQsMTA1LDAsMCwwLDAsMCw4Myw5NywxMTYsMCwwLDAsMCwwLDIsMCwwLDE5MiwzLDAsMCwxOTIsNCwwLDAsMTkyLDUsMCwwLDE5Miw2LDAsMCwxOTIsNywwLDAsMTkyLDgsMCwwLDE5Miw5LDAsMCwxOTIsMTAsMCwwLDE5MiwxMSwwLDAsMTkyLDEyLDAsMCwxOTIsMTMsMCwwLDE5MiwxNCwwLDAsMTkyLDE1LDAsMCwxOTIsMTYsMCwwLDE5MiwxNywwLDAsMTkyLDE4LDAsMCwxOTIsMTksMCwwLDE5MiwyMCwwLDAsMTkyLDIxLDAsMCwxOTIsMjIsMCwwLDE5MiwyMywwLDAsMTkyLDI0LDAsMCwxOTIsMjUsMCwwLDE5MiwyNiwwLDAsMTkyLDI3LDAsMCwxOTIsMjgsMCwwLDE5MiwyOSwwLDAsMTkyLDMwLDAsMCwxOTIsMzEsMCwwLDE5MiwwLDAsMCwxNzksMSwwLDAsMTk1LDIsMCwwLDE5NSwzLDAsMCwxOTUsNCwwLDAsMTk1LDUsMCwwLDE5NSw2LDAsMCwxOTUsNywwLDAsMTk1LDgsMCwwLDE5NSw5LDAsMCwxOTUsMTAsMCwwLDE5NSwxMSwwLDAsMTk1LDEyLDAsMCwxOTUsMTMsMCwwLDIxMSwxNCwwLDAsMTk1LDE1LDAsMCwxOTUsMCwwLDEyLDE4NywxLDAsMTIsMTk1LDIsMCwxMiwxOTUsMywwLDEyLDE5NSw0LDAsMTIsMjExLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEyOCw4MywwLDAsMTk2LDAsMCwwLDE5NywwLDAsMCw4OSwwLDAsMCwwLDAsMCwwLDExNSwxMTYsMTAwLDU4LDU4LDk4LDk3LDEwMCw5NSw5OSw5NywxMTUsMTE2LDAsMCwwLDgzLDExNiw1NywxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDAsMCwwLDAsMTIwLDg0LDAsMCw4OCw4MywwLDAsODMsMTE2LDU2LDk4LDk3LDEwMCw5NSw5OSw5NywxMTUsMTE2LDAsMCwwLDAsMCwyMjQsODUsMCwwLDExMiw4MywwLDAsMCwwLDAsMCwwLDAsMCwwLDc4LDQ5LDQ4LDk1LDk1LDk5LDEyMCwxMjAsOTcsOTgsMTA1LDExOCw0OSw0OSw1NCw5NSw5NSwxMTUsMTA0LDEwNSwxMDksOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNDQsODMsMCwwLDEwNCw4MywwLDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNDksNTUsOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMjAwLDgzLDAsMCwxODQsODMsMCwwLDAsMCwwLDAsNzgsNDksNDgsOTUsOTUsOTksMTIwLDEyMCw5Nyw5OCwxMDUsMTE4LDQ5LDQ5LDU3LDk1LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw5NSwxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDY5LDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNDksNTUsOTUsOTUsMTEyLDk4LDk3LDExNSwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsNDAsODQsMCwwLDE4NCw4MywwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDAsODQsMCwwLDgwLDg0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQwLDgzLDAsMCwxOTgsMCwwLDAsMTk5LDAsMCwwLDIwMCwwLDAsMCwyMDEsMCwwLDAsNDMsMCwwLDAsMzUsMCwwLDAsMjIsMCwwLDAsMjcsMCwwLDAsMCwwLDAsMCw5Niw4NCwwLDAsMTk4LDAsMCwwLDIwMiwwLDAsMCwyMDAsMCwwLDAsMjAxLDAsMCwwLDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDg1LDAsMCwxOTgsMCwwLDAsMjAzLDAsMCwwLDIwMCwwLDAsMCwyMDEsMCwwLDAsNDUsMCwwLDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNTEsOTUsOTUsMTAyLDExNywxMTAsMTAwLDk3LDEwOSwxMDEsMTEwLDExNiw5NywxMDgsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDIyNCw4NSwwLDAsMjE2LDg0LDAsMCwxODQsODMsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwxMTIsMTcsMCwwLDY4LDExMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDI0LDg1LDAsMCw5OCwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsNDAsODUsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCw1Niw4NSwwLDAsMTA0LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCw3Miw4NSwwLDAsOTcsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDg4LDg1LDAsMCwxOTIsODQsMCwwLDEyOCwxNywwLDAsMTkyLDg0LDAsMCwxMjAsMTcsMCwwLDEwNSwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsMTIwLDg1LDAsMCwxMDYsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDEzNiw4NSwwLDAsMTA4LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwxNTIsODUsMCwwLDEwOSwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsMTY4LDg1LDAsMCwxMDIsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDE4NCw4NSwwLDAsMTAwLDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwyMDAsODUsMCwwLDAsMCwwLDAsNDAsODYsMCwwLDE5OCwwLDAsMCwyMDQsMCwwLDAsMjAwLDAsMCwwLDIwMSwwLDAsMCw0MywwLDAsMCwzNiwwLDAsMCwyMywwLDAsMCwyOCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNDgsOTUsOTUsMTE1LDEwNSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSwxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDY5LDAsMCwwLDAsMjI0LDg1LDAsMCwwLDg2LDAsMCwyNDAsODMsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMzYsODYsMCwwLDE5OCwwLDAsMCwyMDUsMCwwLDAsMjAwLDAsMCwwLDIwMSwwLDAsMCw0MywwLDAsMCwzNywwLDAsMCwyNCwwLDAsMCwyOSwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNDksOTUsOTUsMTE4LDEwOSwxMDUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwyMjQsODUsMCwwLDk2LDg2LDAsMCwyNDAsODMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMDAsODgsMCwwLDIwNiwwLDAsMCwyMDcsMCwwLDAsOTAsMCwwLDAsMCwwLDAsMCwxMTUsMTE2LDEwMCw1OCw1OCw5OCw5NywxMDAsOTUsOTcsMTA4LDEwOCwxMTEsOTksMCwwLDgzLDExNiw1Nyw5OCw5NywxMDAsOTUsOTcsMTA4LDEwOCwxMTEsOTksMCwwLDAsMCwyMjQsODUsMCwwLDE4NCw4OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwwLDEsMiwzLDQsNSw2LDcsOCw5LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMCwwLDAsMCwwLDAsMCwwLDEsMiw0LDcsMyw2LDUsMCwwLDAsMCwwLDAsMCwwLDEwNSwxMTAsMTAyLDEwNSwxMTAsMTA1LDExNiwxMjEsMCwwLDAsMCwwLDAsMCwwLDExMCw5NywxMTAsMCwwLDAsMCwwLDk1LDExMiwxMzcsMCwyNTUsOSw0NywxNSwxMCwwLDAsMCwxMDAsMCwwLDAsMjMyLDMsMCwwLDE2LDM5LDAsMCwxNjAsMTM0LDEsMCw2NCw2NiwxNSwwLDEyOCwxNTAsMTUyLDAsMCwyMjUsMjQ1LDVdLCJpOCIsQUxMT0NfTk9ORSxSdW50aW1lLkdMT0JBTF9CQVNFKzE5NTY0KTt2YXIgdGVtcERvdWJsZVB0cj1SdW50aW1lLmFsaWduTWVtb3J5KGFsbG9jYXRlKDEyLCJpOCIsQUxMT0NfU1RBVElDKSw4KTthc3NlcnQodGVtcERvdWJsZVB0ciU4PT0wKTtmdW5jdGlvbiBjb3B5VGVtcEZsb2F0KHB0cil7SEVBUDhbdGVtcERvdWJsZVB0cl09SEVBUDhbcHRyXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzFdPUhFQVA4W3B0cisxXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzJdPUhFQVA4W3B0cisyXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzNdPUhFQVA4W3B0ciszXX1mdW5jdGlvbiBjb3B5VGVtcERvdWJsZShwdHIpe0hFQVA4W3RlbXBEb3VibGVQdHJdPUhFQVA4W3B0cl07SEVBUDhbdGVtcERvdWJsZVB0cisxXT1IRUFQOFtwdHIrMV07SEVBUDhbdGVtcERvdWJsZVB0cisyXT1IRUFQOFtwdHIrMl07SEVBUDhbdGVtcERvdWJsZVB0ciszXT1IRUFQOFtwdHIrM107SEVBUDhbdGVtcERvdWJsZVB0cis0XT1IRUFQOFtwdHIrNF07SEVBUDhbdGVtcERvdWJsZVB0cis1XT1IRUFQOFtwdHIrNV07SEVBUDhbdGVtcERvdWJsZVB0cis2XT1IRUFQOFtwdHIrNl07SEVBUDhbdGVtcERvdWJsZVB0cis3XT1IRUFQOFtwdHIrN119ZnVuY3Rpb24gX2F0ZXhpdChmdW5jLGFyZyl7X19BVEVYSVRfXy51bnNoaWZ0KHtmdW5jOmZ1bmMsYXJnOmFyZ30pfXZhciBfX19jeGFfYXRleGl0PV9hdGV4aXQ7TW9kdWxlWyJfaTY0U3VidHJhY3QiXT1faTY0U3VidHJhY3Q7TW9kdWxlWyJfaTY0QWRkIl09X2k2NEFkZDtmdW5jdGlvbiBfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udigpe3JldHVybiEhX19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYudW5jYXVnaHRfZXhjZXB0aW9ufWZ1bmN0aW9uIF9fX2N4YV9pc19udW1iZXJfdHlwZSh0eXBlKXt2YXIgaXNOdW1iZXI9ZmFsc2U7dHJ5e2lmKHR5cGU9PV9fWlRJaSlpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElqKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWwpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJbSlpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVEl4KWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSXkpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJZilpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElkKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWUpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJYylpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElhKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWgpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJcylpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVEl0KWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXJldHVybiBpc051bWJlcn1mdW5jdGlvbiBfX19jeGFfZG9lc19pbmhlcml0KGRlZmluaXRlVHlwZSxwb3NzaWJpbGl0eVR5cGUscG9zc2liaWxpdHkpe2lmKHBvc3NpYmlsaXR5PT0wKXJldHVybiBmYWxzZTtpZihwb3NzaWJpbGl0eVR5cGU9PTB8fHBvc3NpYmlsaXR5VHlwZT09ZGVmaW5pdGVUeXBlKXJldHVybiB0cnVlO3ZhciBwb3NzaWJpbGl0eV90eXBlX2luZm87aWYoX19fY3hhX2lzX251bWJlcl90eXBlKHBvc3NpYmlsaXR5VHlwZSkpe3Bvc3NpYmlsaXR5X3R5cGVfaW5mbz1wb3NzaWJpbGl0eVR5cGV9ZWxzZXt2YXIgcG9zc2liaWxpdHlfdHlwZV9pbmZvQWRkcj1IRUFQMzJbcG9zc2liaWxpdHlUeXBlPj4yXS04O3Bvc3NpYmlsaXR5X3R5cGVfaW5mbz1IRUFQMzJbcG9zc2liaWxpdHlfdHlwZV9pbmZvQWRkcj4+Ml19c3dpdGNoKHBvc3NpYmlsaXR5X3R5cGVfaW5mbyl7Y2FzZSAwOnZhciBkZWZpbml0ZV90eXBlX2luZm9BZGRyPUhFQVAzMltkZWZpbml0ZVR5cGU+PjJdLTg7dmFyIGRlZmluaXRlX3R5cGVfaW5mbz1IRUFQMzJbZGVmaW5pdGVfdHlwZV9pbmZvQWRkcj4+Ml07aWYoZGVmaW5pdGVfdHlwZV9pbmZvPT0wKXt2YXIgZGVmUG9pbnRlckJhc2VBZGRyPWRlZmluaXRlVHlwZSs4O3ZhciBkZWZQb2ludGVyQmFzZVR5cGU9SEVBUDMyW2RlZlBvaW50ZXJCYXNlQWRkcj4+Ml07dmFyIHBvc3NQb2ludGVyQmFzZUFkZHI9cG9zc2liaWxpdHlUeXBlKzg7dmFyIHBvc3NQb2ludGVyQmFzZVR5cGU9SEVBUDMyW3Bvc3NQb2ludGVyQmFzZUFkZHI+PjJdO3JldHVybiBfX19jeGFfZG9lc19pbmhlcml0KGRlZlBvaW50ZXJCYXNlVHlwZSxwb3NzUG9pbnRlckJhc2VUeXBlLHBvc3NpYmlsaXR5KX1lbHNlIHJldHVybiBmYWxzZTtjYXNlIDE6cmV0dXJuIGZhbHNlO2Nhc2UgMjp2YXIgcGFyZW50VHlwZUFkZHI9cG9zc2liaWxpdHlUeXBlKzg7dmFyIHBhcmVudFR5cGU9SEVBUDMyW3BhcmVudFR5cGVBZGRyPj4yXTtyZXR1cm4gX19fY3hhX2RvZXNfaW5oZXJpdChkZWZpbml0ZVR5cGUscGFyZW50VHlwZSxwb3NzaWJpbGl0eSk7ZGVmYXVsdDpyZXR1cm4gZmFsc2V9fXZhciBfX19jeGFfbGFzdF90aHJvd25fZXhjZXB0aW9uPTA7ZnVuY3Rpb24gX19fcmVzdW1lRXhjZXB0aW9uKHB0cil7TW9kdWxlLnByaW50KCJSZXN1bWluZyBleGNlcHRpb24iKTtpZighX19fY3hhX2xhc3RfdGhyb3duX2V4Y2VwdGlvbil7X19fY3hhX2xhc3RfdGhyb3duX2V4Y2VwdGlvbj1wdHJ9dGhyb3cgcHRyfXZhciBfX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplPTg7ZnVuY3Rpb24gX19fY3hhX2ZpbmRfbWF0Y2hpbmdfY2F0Y2godGhyb3duLHRocm93bnR5cGUpe2lmKHRocm93bj09LTEpdGhyb3duPV9fX2N4YV9sYXN0X3Rocm93bl9leGNlcHRpb247aGVhZGVyPXRocm93bi1fX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplO2lmKHRocm93bnR5cGU9PS0xKXRocm93bnR5cGU9SEVBUDMyW2hlYWRlcj4+Ml07dmFyIHR5cGVBcnJheT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7aWYodGhyb3dudHlwZSE9MCYmIV9fX2N4YV9pc19udW1iZXJfdHlwZSh0aHJvd250eXBlKSl7dmFyIHRocm93bnR5cGVJbmZvQWRkcj1IRUFQMzJbdGhyb3dudHlwZT4+Ml0tODt2YXIgdGhyb3dudHlwZUluZm89SEVBUDMyW3Rocm93bnR5cGVJbmZvQWRkcj4+Ml07aWYodGhyb3dudHlwZUluZm89PTApdGhyb3duPUhFQVAzMlt0aHJvd24+PjJdfWZvcih2YXIgaT0wO2k8dHlwZUFycmF5Lmxlbmd0aDtpKyspe2lmKF9fX2N4YV9kb2VzX2luaGVyaXQodHlwZUFycmF5W2ldLHRocm93bnR5cGUsdGhyb3duKSlyZXR1cm4oYXNtWyJzZXRUZW1wUmV0MCJdKHR5cGVBcnJheVtpXSksdGhyb3duKXwwfXJldHVybihhc21bInNldFRlbXBSZXQwIl0odGhyb3dudHlwZSksdGhyb3duKXwwfWZ1bmN0aW9uIF9fX2N4YV90aHJvdyhwdHIsdHlwZSxkZXN0cnVjdG9yKXtpZighX19fY3hhX3Rocm93LmluaXRpYWxpemVkKXt0cnl7SEVBUDMyW19fWlRWTjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0U+PjJdPTB9Y2F0Y2goZSl7fXRyeXtIRUFQMzJbX19aVFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0U+PjJdPTF9Y2F0Y2goZSl7fXRyeXtIRUFQMzJbX19aVFZOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0U+PjJdPTJ9Y2F0Y2goZSl7fV9fX2N4YV90aHJvdy5pbml0aWFsaXplZD10cnVlfU1vZHVsZS5wcmludEVycigiQ29tcGlsZWQgY29kZSB0aHJvd2luZyBhbiBleGNlcHRpb24sICIrW3B0cix0eXBlLGRlc3RydWN0b3JdKyIsIGF0ICIrc3RhY2tUcmFjZSgpKTt2YXIgaGVhZGVyPXB0ci1fX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplO0hFQVAzMltoZWFkZXI+PjJdPXR5cGU7SEVBUDMyW2hlYWRlcis0Pj4yXT1kZXN0cnVjdG9yO19fX2N4YV9sYXN0X3Rocm93bl9leGNlcHRpb249cHRyO2lmKCEoInVuY2F1Z2h0X2V4Y2VwdGlvbiJpbiBfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udikpe19fWlN0MTh1bmNhdWdodF9leGNlcHRpb252LnVuY2F1Z2h0X2V4Y2VwdGlvbj0xfWVsc2V7X19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYudW5jYXVnaHRfZXhjZXB0aW9uKyt9dGhyb3cgcHRyfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Jvb2woKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfYm9vbCIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfcHRocmVhZF9tdXRleF9sb2NrKCl7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF9zdHJpbmcoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZyIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZygpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZyIpO2Fib3J0KC0xKX12YXIgRVJSTk9fQ09ERVM9e0VQRVJNOjEsRU5PRU5UOjIsRVNSQ0g6MyxFSU5UUjo0LEVJTzo1LEVOWElPOjYsRTJCSUc6NyxFTk9FWEVDOjgsRUJBREY6OSxFQ0hJTEQ6MTAsRUFHQUlOOjExLEVXT1VMREJMT0NLOjExLEVOT01FTToxMixFQUNDRVM6MTMsRUZBVUxUOjE0LEVOT1RCTEs6MTUsRUJVU1k6MTYsRUVYSVNUOjE3LEVYREVWOjE4LEVOT0RFVjoxOSxFTk9URElSOjIwLEVJU0RJUjoyMSxFSU5WQUw6MjIsRU5GSUxFOjIzLEVNRklMRToyNCxFTk9UVFk6MjUsRVRYVEJTWToyNixFRkJJRzoyNyxFTk9TUEM6MjgsRVNQSVBFOjI5LEVST0ZTOjMwLEVNTElOSzozMSxFUElQRTozMixFRE9NOjMzLEVSQU5HRTozNCxFTk9NU0c6NDIsRUlEUk06NDMsRUNIUk5HOjQ0LEVMMk5TWU5DOjQ1LEVMM0hMVDo0NixFTDNSU1Q6NDcsRUxOUk5HOjQ4LEVVTkFUQ0g6NDksRU5PQ1NJOjUwLEVMMkhMVDo1MSxFREVBRExLOjM1LEVOT0xDSzozNyxFQkFERTo1MixFQkFEUjo1MyxFWEZVTEw6NTQsRU5PQU5POjU1LEVCQURSUUM6NTYsRUJBRFNMVDo1NyxFREVBRExPQ0s6MzUsRUJGT05UOjU5LEVOT1NUUjo2MCxFTk9EQVRBOjYxLEVUSU1FOjYyLEVOT1NSOjYzLEVOT05FVDo2NCxFTk9QS0c6NjUsRVJFTU9URTo2NixFTk9MSU5LOjY3LEVBRFY6NjgsRVNSTU5UOjY5LEVDT01NOjcwLEVQUk9UTzo3MSxFTVVMVElIT1A6NzIsRURPVERPVDo3MyxFQkFETVNHOjc0LEVOT1RVTklROjc2LEVCQURGRDo3NyxFUkVNQ0hHOjc4LEVMSUJBQ0M6NzksRUxJQkJBRDo4MCxFTElCU0NOOjgxLEVMSUJNQVg6ODIsRUxJQkVYRUM6ODMsRU5PU1lTOjM4LEVOT1RFTVBUWTozOSxFTkFNRVRPT0xPTkc6MzYsRUxPT1A6NDAsRU9QTk9UU1VQUDo5NSxFUEZOT1NVUFBPUlQ6OTYsRUNPTk5SRVNFVDoxMDQsRU5PQlVGUzoxMDUsRUFGTk9TVVBQT1JUOjk3LEVQUk9UT1RZUEU6OTEsRU5PVFNPQ0s6ODgsRU5PUFJPVE9PUFQ6OTIsRVNIVVRET1dOOjEwOCxFQ09OTlJFRlVTRUQ6MTExLEVBRERSSU5VU0U6OTgsRUNPTk5BQk9SVEVEOjEwMyxFTkVUVU5SRUFDSDoxMDEsRU5FVERPV046MTAwLEVUSU1FRE9VVDoxMTAsRUhPU1RET1dOOjExMixFSE9TVFVOUkVBQ0g6MTEzLEVJTlBST0dSRVNTOjExNSxFQUxSRUFEWToxMTQsRURFU1RBRERSUkVROjg5LEVNU0dTSVpFOjkwLEVQUk9UT05PU1VQUE9SVDo5MyxFU09DS1ROT1NVUFBPUlQ6OTQsRUFERFJOT1RBVkFJTDo5OSxFTkVUUkVTRVQ6MTAyLEVJU0NPTk46MTA2LEVOT1RDT05OOjEwNyxFVE9PTUFOWVJFRlM6MTA5LEVVU0VSUzo4NyxFRFFVT1Q6MTIyLEVTVEFMRToxMTYsRU5PVFNVUDo5NSxFTk9NRURJVU06MTIzLEVJTFNFUTo4NCxFT1ZFUkZMT1c6NzUsRUNBTkNFTEVEOjEyNSxFTk9UUkVDT1ZFUkFCTEU6MTMxLEVPV05FUkRFQUQ6MTMwLEVTVFJQSVBFOjg2fTt2YXIgRVJSTk9fTUVTU0FHRVM9ezA6IlN1Y2Nlc3MiLDE6Ik5vdCBzdXBlci11c2VyIiwyOiJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IiwzOiJObyBzdWNoIHByb2Nlc3MiLDQ6IkludGVycnVwdGVkIHN5c3RlbSBjYWxsIiw1OiJJL08gZXJyb3IiLDY6Ik5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MiLDc6IkFyZyBsaXN0IHRvbyBsb25nIiw4OiJFeGVjIGZvcm1hdCBlcnJvciIsOToiQmFkIGZpbGUgbnVtYmVyIiwxMDoiTm8gY2hpbGRyZW4iLDExOiJObyBtb3JlIHByb2Nlc3NlcyIsMTI6Ik5vdCBlbm91Z2ggY29yZSIsMTM6IlBlcm1pc3Npb24gZGVuaWVkIiwxNDoiQmFkIGFkZHJlc3MiLDE1OiJCbG9jayBkZXZpY2UgcmVxdWlyZWQiLDE2OiJNb3VudCBkZXZpY2UgYnVzeSIsMTc6IkZpbGUgZXhpc3RzIiwxODoiQ3Jvc3MtZGV2aWNlIGxpbmsiLDE5OiJObyBzdWNoIGRldmljZSIsMjA6Ik5vdCBhIGRpcmVjdG9yeSIsMjE6IklzIGEgZGlyZWN0b3J5IiwyMjoiSW52YWxpZCBhcmd1bWVudCIsMjM6IlRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtIiwyNDoiVG9vIG1hbnkgb3BlbiBmaWxlcyIsMjU6Ik5vdCBhIHR5cGV3cml0ZXIiLDI2OiJUZXh0IGZpbGUgYnVzeSIsMjc6IkZpbGUgdG9vIGxhcmdlIiwyODoiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UiLDI5OiJJbGxlZ2FsIHNlZWsiLDMwOiJSZWFkIG9ubHkgZmlsZSBzeXN0ZW0iLDMxOiJUb28gbWFueSBsaW5rcyIsMzI6IkJyb2tlbiBwaXBlIiwzMzoiTWF0aCBhcmcgb3V0IG9mIGRvbWFpbiBvZiBmdW5jIiwzNDoiTWF0aCByZXN1bHQgbm90IHJlcHJlc2VudGFibGUiLDM1OiJGaWxlIGxvY2tpbmcgZGVhZGxvY2sgZXJyb3IiLDM2OiJGaWxlIG9yIHBhdGggbmFtZSB0b28gbG9uZyIsMzc6Ik5vIHJlY29yZCBsb2NrcyBhdmFpbGFibGUiLDM4OiJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiLDM5OiJEaXJlY3Rvcnkgbm90IGVtcHR5Iiw0MDoiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MiLDQyOiJObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZSIsNDM6IklkZW50aWZpZXIgcmVtb3ZlZCIsNDQ6IkNoYW5uZWwgbnVtYmVyIG91dCBvZiByYW5nZSIsNDU6IkxldmVsIDIgbm90IHN5bmNocm9uaXplZCIsNDY6IkxldmVsIDMgaGFsdGVkIiw0NzoiTGV2ZWwgMyByZXNldCIsNDg6IkxpbmsgbnVtYmVyIG91dCBvZiByYW5nZSIsNDk6IlByb3RvY29sIGRyaXZlciBub3QgYXR0YWNoZWQiLDUwOiJObyBDU0kgc3RydWN0dXJlIGF2YWlsYWJsZSIsNTE6IkxldmVsIDIgaGFsdGVkIiw1MjoiSW52YWxpZCBleGNoYW5nZSIsNTM6IkludmFsaWQgcmVxdWVzdCBkZXNjcmlwdG9yIiw1NDoiRXhjaGFuZ2UgZnVsbCIsNTU6Ik5vIGFub2RlIiw1NjoiSW52YWxpZCByZXF1ZXN0IGNvZGUiLDU3OiJJbnZhbGlkIHNsb3QiLDU5OiJCYWQgZm9udCBmaWxlIGZtdCIsNjA6IkRldmljZSBub3QgYSBzdHJlYW0iLDYxOiJObyBkYXRhIChmb3Igbm8gZGVsYXkgaW8pIiw2MjoiVGltZXIgZXhwaXJlZCIsNjM6Ik91dCBvZiBzdHJlYW1zIHJlc291cmNlcyIsNjQ6Ik1hY2hpbmUgaXMgbm90IG9uIHRoZSBuZXR3b3JrIiw2NToiUGFja2FnZSBub3QgaW5zdGFsbGVkIiw2NjoiVGhlIG9iamVjdCBpcyByZW1vdGUiLDY3OiJUaGUgbGluayBoYXMgYmVlbiBzZXZlcmVkIiw2ODoiQWR2ZXJ0aXNlIGVycm9yIiw2OToiU3Jtb3VudCBlcnJvciIsNzA6IkNvbW11bmljYXRpb24gZXJyb3Igb24gc2VuZCIsNzE6IlByb3RvY29sIGVycm9yIiw3MjoiTXVsdGlob3AgYXR0ZW1wdGVkIiw3MzoiQ3Jvc3MgbW91bnQgcG9pbnQgKG5vdCByZWFsbHkgZXJyb3IpIiw3NDoiVHJ5aW5nIHRvIHJlYWQgdW5yZWFkYWJsZSBtZXNzYWdlIiw3NToiVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZSIsNzY6IkdpdmVuIGxvZy4gbmFtZSBub3QgdW5pcXVlIiw3NzoiZi5kLiBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbiIsNzg6IlJlbW90ZSBhZGRyZXNzIGNoYW5nZWQiLDc5OiJDYW4gICBhY2Nlc3MgYSBuZWVkZWQgc2hhcmVkIGxpYiIsODA6IkFjY2Vzc2luZyBhIGNvcnJ1cHRlZCBzaGFyZWQgbGliIiw4MToiLmxpYiBzZWN0aW9uIGluIGEub3V0IGNvcnJ1cHRlZCIsODI6IkF0dGVtcHRpbmcgdG8gbGluayBpbiB0b28gbWFueSBsaWJzIiw4MzoiQXR0ZW1wdGluZyB0byBleGVjIGEgc2hhcmVkIGxpYnJhcnkiLDg0OiJJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UiLDg2OiJTdHJlYW1zIHBpcGUgZXJyb3IiLDg3OiJUb28gbWFueSB1c2VycyIsODg6IlNvY2tldCBvcGVyYXRpb24gb24gbm9uLXNvY2tldCIsODk6IkRlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQiLDkwOiJNZXNzYWdlIHRvbyBsb25nIiw5MToiUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0Iiw5MjoiUHJvdG9jb2wgbm90IGF2YWlsYWJsZSIsOTM6IlVua25vd24gcHJvdG9jb2wiLDk0OiJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkIiw5NToiTm90IHN1cHBvcnRlZCIsOTY6IlByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkIiw5NzoiQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbCBmYW1pbHkiLDk4OiJBZGRyZXNzIGFscmVhZHkgaW4gdXNlIiw5OToiQWRkcmVzcyBub3QgYXZhaWxhYmxlIiwxMDA6Ik5ldHdvcmsgaW50ZXJmYWNlIGlzIG5vdCBjb25maWd1cmVkIiwxMDE6Ik5ldHdvcmsgaXMgdW5yZWFjaGFibGUiLDEwMjoiQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrIiwxMDM6IkNvbm5lY3Rpb24gYWJvcnRlZCIsMTA0OiJDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIiLDEwNToiTm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZSIsMTA2OiJTb2NrZXQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiLDEwNzoiU29ja2V0IGlzIG5vdCBjb25uZWN0ZWQiLDEwODoiQ2FuJ3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24iLDEwOToiVG9vIG1hbnkgcmVmZXJlbmNlcyIsMTEwOiJDb25uZWN0aW9uIHRpbWVkIG91dCIsMTExOiJDb25uZWN0aW9uIHJlZnVzZWQiLDExMjoiSG9zdCBpcyBkb3duIiwxMTM6Ikhvc3QgaXMgdW5yZWFjaGFibGUiLDExNDoiU29ja2V0IGFscmVhZHkgY29ubmVjdGVkIiwxMTU6IkNvbm5lY3Rpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyIsMTE2OiJTdGFsZSBmaWxlIGhhbmRsZSIsMTIyOiJRdW90YSBleGNlZWRlZCIsMTIzOiJObyBtZWRpdW0gKGluIHRhcGUgZHJpdmUpIiwxMjU6Ik9wZXJhdGlvbiBjYW5jZWxlZCIsMTMwOiJQcmV2aW91cyBvd25lciBkaWVkIiwxMzE6IlN0YXRlIG5vdCByZWNvdmVyYWJsZSJ9O3ZhciBfX19lcnJub19zdGF0ZT0wO2Z1bmN0aW9uIF9fX3NldEVyck5vKHZhbHVlKXtIRUFQMzJbX19fZXJybm9fc3RhdGU+PjJdPXZhbHVlO3JldHVybiB2YWx1ZX12YXIgUEFUSD17c3BsaXRQYXRoOihmdW5jdGlvbihmaWxlbmFtZSl7dmFyIHNwbGl0UGF0aFJlPS9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLztyZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSl9KSxub3JtYWxpemVBcnJheTooZnVuY3Rpb24ocGFydHMsYWxsb3dBYm92ZVJvb3Qpe3ZhciB1cD0wO2Zvcih2YXIgaT1wYXJ0cy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIGxhc3Q9cGFydHNbaV07aWYobGFzdD09PSIuIil7cGFydHMuc3BsaWNlKGksMSl9ZWxzZSBpZihsYXN0PT09Ii4uIil7cGFydHMuc3BsaWNlKGksMSk7dXArK31lbHNlIGlmKHVwKXtwYXJ0cy5zcGxpY2UoaSwxKTt1cC0tfX1pZihhbGxvd0Fib3ZlUm9vdCl7Zm9yKDt1cC0tO3VwKXtwYXJ0cy51bnNoaWZ0KCIuLiIpfX1yZXR1cm4gcGFydHN9KSxub3JtYWxpemU6KGZ1bmN0aW9uKHBhdGgpe3ZhciBpc0Fic29sdXRlPXBhdGguY2hhckF0KDApPT09Ii8iLHRyYWlsaW5nU2xhc2g9cGF0aC5zdWJzdHIoLTEpPT09Ii8iO3BhdGg9UEFUSC5ub3JtYWxpemVBcnJheShwYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKXtyZXR1cm4hIXB9KSksIWlzQWJzb2x1dGUpLmpvaW4oIi8iKTtpZighcGF0aCYmIWlzQWJzb2x1dGUpe3BhdGg9Ii4ifWlmKHBhdGgmJnRyYWlsaW5nU2xhc2gpe3BhdGgrPSIvIn1yZXR1cm4oaXNBYnNvbHV0ZT8iLyI6IiIpK3BhdGh9KSxkaXJuYW1lOihmdW5jdGlvbihwYXRoKXt2YXIgcmVzdWx0PVBBVEguc3BsaXRQYXRoKHBhdGgpLHJvb3Q9cmVzdWx0WzBdLGRpcj1yZXN1bHRbMV07aWYoIXJvb3QmJiFkaXIpe3JldHVybiIuIn1pZihkaXIpe2Rpcj1kaXIuc3Vic3RyKDAsZGlyLmxlbmd0aC0xKX1yZXR1cm4gcm9vdCtkaXJ9KSxiYXNlbmFtZTooZnVuY3Rpb24ocGF0aCl7aWYocGF0aD09PSIvIilyZXR1cm4iLyI7dmFyIGxhc3RTbGFzaD1wYXRoLmxhc3RJbmRleE9mKCIvIik7aWYobGFzdFNsYXNoPT09LTEpcmV0dXJuIHBhdGg7cmV0dXJuIHBhdGguc3Vic3RyKGxhc3RTbGFzaCsxKX0pLGV4dG5hbWU6KGZ1bmN0aW9uKHBhdGgpe3JldHVybiBQQVRILnNwbGl0UGF0aChwYXRoKVszXX0pLGpvaW46KGZ1bmN0aW9uKCl7dmFyIHBhdGhzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gUEFUSC5ub3JtYWxpemUocGF0aHMuam9pbigiLyIpKX0pLGpvaW4yOihmdW5jdGlvbihsLHIpe3JldHVybiBQQVRILm5vcm1hbGl6ZShsKyIvIityKX0pLHJlc29sdmU6KGZ1bmN0aW9uKCl7dmFyIHJlc29sdmVkUGF0aD0iIixyZXNvbHZlZEFic29sdXRlPWZhbHNlO2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLTE7aT49LTEmJiFyZXNvbHZlZEFic29sdXRlO2ktLSl7dmFyIHBhdGg9aT49MD9hcmd1bWVudHNbaV06RlMuY3dkKCk7aWYodHlwZW9mIHBhdGghPT0ic3RyaW5nIil7dGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKX1lbHNlIGlmKCFwYXRoKXtjb250aW51ZX1yZXNvbHZlZFBhdGg9cGF0aCsiLyIrcmVzb2x2ZWRQYXRoO3Jlc29sdmVkQWJzb2x1dGU9cGF0aC5jaGFyQXQoMCk9PT0iLyJ9cmVzb2x2ZWRQYXRoPVBBVEgubm9ybWFsaXplQXJyYXkocmVzb2x2ZWRQYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKXtyZXR1cm4hIXB9KSksIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oIi8iKTtyZXR1cm4ocmVzb2x2ZWRBYnNvbHV0ZT8iLyI6IiIpK3Jlc29sdmVkUGF0aHx8Ii4ifSkscmVsYXRpdmU6KGZ1bmN0aW9uKGZyb20sdG8pe2Zyb209UEFUSC5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTt0bz1QQVRILnJlc29sdmUodG8pLnN1YnN0cigxKTtmdW5jdGlvbiB0cmltKGFycil7dmFyIHN0YXJ0PTA7Zm9yKDtzdGFydDxhcnIubGVuZ3RoO3N0YXJ0Kyspe2lmKGFycltzdGFydF0hPT0iIilicmVha312YXIgZW5kPWFyci5sZW5ndGgtMTtmb3IoO2VuZD49MDtlbmQtLSl7aWYoYXJyW2VuZF0hPT0iIilicmVha31pZihzdGFydD5lbmQpcmV0dXJuW107cmV0dXJuIGFyci5zbGljZShzdGFydCxlbmQtc3RhcnQrMSl9dmFyIGZyb21QYXJ0cz10cmltKGZyb20uc3BsaXQoIi8iKSk7dmFyIHRvUGFydHM9dHJpbSh0by5zcGxpdCgiLyIpKTt2YXIgbGVuZ3RoPU1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsdG9QYXJ0cy5sZW5ndGgpO3ZhciBzYW1lUGFydHNMZW5ndGg9bGVuZ3RoO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7aWYoZnJvbVBhcnRzW2ldIT09dG9QYXJ0c1tpXSl7c2FtZVBhcnRzTGVuZ3RoPWk7YnJlYWt9fXZhciBvdXRwdXRQYXJ0cz1bXTtmb3IodmFyIGk9c2FtZVBhcnRzTGVuZ3RoO2k8ZnJvbVBhcnRzLmxlbmd0aDtpKyspe291dHB1dFBhcnRzLnB1c2goIi4uIil9b3V0cHV0UGFydHM9b3V0cHV0UGFydHMuY29uY2F0KHRvUGFydHMuc2xpY2Uoc2FtZVBhcnRzTGVuZ3RoKSk7cmV0dXJuIG91dHB1dFBhcnRzLmpvaW4oIi8iKX0pfTt2YXIgVFRZPXt0dHlzOltdLGluaXQ6KGZ1bmN0aW9uKCl7fSksc2h1dGRvd246KGZ1bmN0aW9uKCl7fSkscmVnaXN0ZXI6KGZ1bmN0aW9uKGRldixvcHMpe1RUWS50dHlzW2Rldl09e2lucHV0OltdLG91dHB1dDpbXSxvcHM6b3BzfTtGUy5yZWdpc3RlckRldmljZShkZXYsVFRZLnN0cmVhbV9vcHMpfSksc3RyZWFtX29wczp7b3BlbjooZnVuY3Rpb24oc3RyZWFtKXt2YXIgdHR5PVRUWS50dHlzW3N0cmVhbS5ub2RlLnJkZXZdO2lmKCF0dHkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9c3RyZWFtLnR0eT10dHk7c3RyZWFtLnNlZWthYmxlPWZhbHNlfSksY2xvc2U6KGZ1bmN0aW9uKHN0cmVhbSl7aWYoc3RyZWFtLnR0eS5vdXRwdXQubGVuZ3RoKXtzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcihzdHJlYW0udHR5LDEwKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zKXtpZighc3RyZWFtLnR0eXx8IXN0cmVhbS50dHkub3BzLmdldF9jaGFyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTlhJTyl9dmFyIGJ5dGVzUmVhZD0wO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dmFyIHJlc3VsdDt0cnl7cmVzdWx0PXN0cmVhbS50dHkub3BzLmdldF9jaGFyKHN0cmVhbS50dHkpfWNhdGNoKGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyl9aWYocmVzdWx0PT09dW5kZWZpbmVkJiZieXRlc1JlYWQ9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4pfWlmKHJlc3VsdD09PW51bGx8fHJlc3VsdD09PXVuZGVmaW5lZClicmVhaztieXRlc1JlYWQrKztidWZmZXJbb2Zmc2V0K2ldPXJlc3VsdH1pZihieXRlc1JlYWQpe3N0cmVhbS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpfXJldHVybiBieXRlc1JlYWR9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvcyl7aWYoIXN0cmVhbS50dHl8fCFzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5YSU8pfWZvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dHJ5e3N0cmVhbS50dHkub3BzLnB1dF9jaGFyKHN0cmVhbS50dHksYnVmZmVyW29mZnNldCtpXSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlPKX19aWYobGVuZ3RoKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKX1yZXR1cm4gaX0pfSxkZWZhdWx0X3R0eV9vcHM6e2dldF9jaGFyOihmdW5jdGlvbih0dHkpe2lmKCF0dHkuaW5wdXQubGVuZ3RoKXt2YXIgcmVzdWx0PW51bGw7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7cmVzdWx0PXByb2Nlc3NbInN0ZGluIl1bInJlYWQiXSgpO2lmKCFyZXN1bHQpe2lmKHByb2Nlc3NbInN0ZGluIl1bIl9yZWFkYWJsZVN0YXRlIl0mJnByb2Nlc3NbInN0ZGluIl1bIl9yZWFkYWJsZVN0YXRlIl1bImVuZGVkIl0pe3JldHVybiBudWxsfXJldHVybiB1bmRlZmluZWR9fWVsc2UgaWYodHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJnR5cGVvZiB3aW5kb3cucHJvbXB0PT0iZnVuY3Rpb24iKXtyZXN1bHQ9d2luZG93LnByb21wdCgiSW5wdXQ6ICIpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIn19ZWxzZSBpZih0eXBlb2YgcmVhZGxpbmU9PSJmdW5jdGlvbiIpe3Jlc3VsdD1yZWFkbGluZSgpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIn19aWYoIXJlc3VsdCl7cmV0dXJuIG51bGx9dHR5LmlucHV0PWludEFycmF5RnJvbVN0cmluZyhyZXN1bHQsdHJ1ZSl9cmV0dXJuIHR0eS5pbnB1dC5zaGlmdCgpfSkscHV0X2NoYXI6KGZ1bmN0aW9uKHR0eSx2YWwpe2lmKHZhbD09PW51bGx8fHZhbD09PTEwKXtNb2R1bGVbInByaW50Il0odHR5Lm91dHB1dC5qb2luKCIiKSk7dHR5Lm91dHB1dD1bXX1lbHNle3R0eS5vdXRwdXQucHVzaChUVFkudXRmOC5wcm9jZXNzQ0NoYXIodmFsKSl9fSl9LGRlZmF1bHRfdHR5MV9vcHM6e3B1dF9jaGFyOihmdW5jdGlvbih0dHksdmFsKXtpZih2YWw9PT1udWxsfHx2YWw9PT0xMCl7TW9kdWxlWyJwcmludEVyciJdKHR0eS5vdXRwdXQuam9pbigiIikpO3R0eS5vdXRwdXQ9W119ZWxzZXt0dHkub3V0cHV0LnB1c2goVFRZLnV0ZjgucHJvY2Vzc0NDaGFyKHZhbCkpfX0pfX07dmFyIE1FTUZTPXtvcHNfdGFibGU6bnVsbCxDT05URU5UX09XTklORzoxLENPTlRFTlRfRkxFWElCTEU6MixDT05URU5UX0ZJWEVEOjMsbW91bnQ6KGZ1bmN0aW9uKG1vdW50KXtyZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShudWxsLCIvIiwxNjM4NHw1MTEsMCl9KSxjcmVhdGVOb2RlOihmdW5jdGlvbihwYXJlbnQsbmFtZSxtb2RlLGRldil7aWYoRlMuaXNCbGtkZXYobW9kZSl8fEZTLmlzRklGTyhtb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKCFNRU1GUy5vcHNfdGFibGUpe01FTUZTLm9wc190YWJsZT17ZGlyOntub2RlOntnZXRhdHRyOk1FTUZTLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpNRU1GUy5ub2RlX29wcy5zZXRhdHRyLGxvb2t1cDpNRU1GUy5ub2RlX29wcy5sb29rdXAsbWtub2Q6TUVNRlMubm9kZV9vcHMubWtub2QscmVuYW1lOk1FTUZTLm5vZGVfb3BzLnJlbmFtZSx1bmxpbms6TUVNRlMubm9kZV9vcHMudW5saW5rLHJtZGlyOk1FTUZTLm5vZGVfb3BzLnJtZGlyLHJlYWRkaXI6TUVNRlMubm9kZV9vcHMucmVhZGRpcixzeW1saW5rOk1FTUZTLm5vZGVfb3BzLnN5bWxpbmt9LHN0cmVhbTp7bGxzZWVrOk1FTUZTLnN0cmVhbV9vcHMubGxzZWVrfX0sZmlsZTp7bm9kZTp7Z2V0YXR0cjpNRU1GUy5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6TUVNRlMubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOntsbHNlZWs6TUVNRlMuc3RyZWFtX29wcy5sbHNlZWsscmVhZDpNRU1GUy5zdHJlYW1fb3BzLnJlYWQsd3JpdGU6TUVNRlMuc3RyZWFtX29wcy53cml0ZSxhbGxvY2F0ZTpNRU1GUy5zdHJlYW1fb3BzLmFsbG9jYXRlLG1tYXA6TUVNRlMuc3RyZWFtX29wcy5tbWFwfX0sbGluazp7bm9kZTp7Z2V0YXR0cjpNRU1GUy5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6TUVNRlMubm9kZV9vcHMuc2V0YXR0cixyZWFkbGluazpNRU1GUy5ub2RlX29wcy5yZWFkbGlua30sc3RyZWFtOnt9fSxjaHJkZXY6e25vZGU6e2dldGF0dHI6TUVNRlMubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOk1FTUZTLm5vZGVfb3BzLnNldGF0dHJ9LHN0cmVhbTpGUy5jaHJkZXZfc3RyZWFtX29wc319fXZhciBub2RlPUZTLmNyZWF0ZU5vZGUocGFyZW50LG5hbWUsbW9kZSxkZXYpO2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmRpci5ub2RlO25vZGUuc3RyZWFtX29wcz1NRU1GUy5vcHNfdGFibGUuZGlyLnN0cmVhbTtub2RlLmNvbnRlbnRzPXt9fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUuc3RyZWFtO25vZGUuY29udGVudHM9W107bm9kZS5jb250ZW50TW9kZT1NRU1GUy5DT05URU5UX0ZMRVhJQkxFfWVsc2UgaWYoRlMuaXNMaW5rKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmxpbmsubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmxpbmsuc3RyZWFtfWVsc2UgaWYoRlMuaXNDaHJkZXYobm9kZS5tb2RlKSl7bm9kZS5ub2RlX29wcz1NRU1GUy5vcHNfdGFibGUuY2hyZGV2Lm5vZGU7bm9kZS5zdHJlYW1fb3BzPU1FTUZTLm9wc190YWJsZS5jaHJkZXYuc3RyZWFtfW5vZGUudGltZXN0YW1wPURhdGUubm93KCk7aWYocGFyZW50KXtwYXJlbnQuY29udGVudHNbbmFtZV09bm9kZX1yZXR1cm4gbm9kZX0pLGVuc3VyZUZsZXhpYmxlOihmdW5jdGlvbihub2RlKXtpZihub2RlLmNvbnRlbnRNb2RlIT09TUVNRlMuQ09OVEVOVF9GTEVYSUJMRSl7dmFyIGNvbnRlbnRzPW5vZGUuY29udGVudHM7bm9kZS5jb250ZW50cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250ZW50cyk7bm9kZS5jb250ZW50TW9kZT1NRU1GUy5DT05URU5UX0ZMRVhJQkxFfX0pLG5vZGVfb3BzOntnZXRhdHRyOihmdW5jdGlvbihub2RlKXt2YXIgYXR0cj17fTthdHRyLmRldj1GUy5pc0NocmRldihub2RlLm1vZGUpP25vZGUuaWQ6MTthdHRyLmlubz1ub2RlLmlkO2F0dHIubW9kZT1ub2RlLm1vZGU7YXR0ci5ubGluaz0xO2F0dHIudWlkPTA7YXR0ci5naWQ9MDthdHRyLnJkZXY9bm9kZS5yZGV2O2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT00MDk2fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT1ub2RlLmNvbnRlbnRzLmxlbmd0aH1lbHNlIGlmKEZTLmlzTGluayhub2RlLm1vZGUpKXthdHRyLnNpemU9bm9kZS5saW5rLmxlbmd0aH1lbHNle2F0dHIuc2l6ZT0wfWF0dHIuYXRpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIubXRpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIuY3RpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIuYmxrc2l6ZT00MDk2O2F0dHIuYmxvY2tzPU1hdGguY2VpbChhdHRyLnNpemUvYXR0ci5ibGtzaXplKTtyZXR1cm4gYXR0cn0pLHNldGF0dHI6KGZ1bmN0aW9uKG5vZGUsYXR0cil7aWYoYXR0ci5tb2RlIT09dW5kZWZpbmVkKXtub2RlLm1vZGU9YXR0ci5tb2RlfWlmKGF0dHIudGltZXN0YW1wIT09dW5kZWZpbmVkKXtub2RlLnRpbWVzdGFtcD1hdHRyLnRpbWVzdGFtcH1pZihhdHRyLnNpemUhPT11bmRlZmluZWQpe01FTUZTLmVuc3VyZUZsZXhpYmxlKG5vZGUpO3ZhciBjb250ZW50cz1ub2RlLmNvbnRlbnRzO2lmKGF0dHIuc2l6ZTxjb250ZW50cy5sZW5ndGgpY29udGVudHMubGVuZ3RoPWF0dHIuc2l6ZTtlbHNlIHdoaWxlKGF0dHIuc2l6ZT5jb250ZW50cy5sZW5ndGgpY29udGVudHMucHVzaCgwKX19KSxsb29rdXA6KGZ1bmN0aW9uKHBhcmVudCxuYW1lKXt0aHJvdyBGUy5nZW5lcmljRXJyb3JzW0VSUk5PX0NPREVTLkVOT0VOVF19KSxta25vZDooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe3JldHVybiBNRU1GUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0pLHJlbmFtZTooZnVuY3Rpb24ob2xkX25vZGUsbmV3X2RpcixuZXdfbmFtZSl7aWYoRlMuaXNEaXIob2xkX25vZGUubW9kZSkpe3ZhciBuZXdfbm9kZTt0cnl7bmV3X25vZGU9RlMubG9va3VwTm9kZShuZXdfZGlyLG5ld19uYW1lKX1jYXRjaChlKXt9aWYobmV3X25vZGUpe2Zvcih2YXIgaSBpbiBuZXdfbm9kZS5jb250ZW50cyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVEVNUFRZKX19fWRlbGV0ZSBvbGRfbm9kZS5wYXJlbnQuY29udGVudHNbb2xkX25vZGUubmFtZV07b2xkX25vZGUubmFtZT1uZXdfbmFtZTtuZXdfZGlyLmNvbnRlbnRzW25ld19uYW1lXT1vbGRfbm9kZTtvbGRfbm9kZS5wYXJlbnQ9bmV3X2Rpcn0pLHVubGluazooZnVuY3Rpb24ocGFyZW50LG5hbWUpe2RlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV19KSxybWRpcjooZnVuY3Rpb24ocGFyZW50LG5hbWUpe3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO2Zvcih2YXIgaSBpbiBub2RlLmNvbnRlbnRzKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9URU1QVFkpfWRlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV19KSxyZWFkZGlyOihmdW5jdGlvbihub2RlKXt2YXIgZW50cmllcz1bIi4iLCIuLiJdO2Zvcih2YXIga2V5IGluIG5vZGUuY29udGVudHMpe2lmKCFub2RlLmNvbnRlbnRzLmhhc093blByb3BlcnR5KGtleSkpe2NvbnRpbnVlfWVudHJpZXMucHVzaChrZXkpfXJldHVybiBlbnRyaWVzfSksc3ltbGluazooZnVuY3Rpb24ocGFyZW50LG5ld25hbWUsb2xkcGF0aCl7dmFyIG5vZGU9TUVNRlMuY3JlYXRlTm9kZShwYXJlbnQsbmV3bmFtZSw1MTF8NDA5NjAsMCk7bm9kZS5saW5rPW9sZHBhdGg7cmV0dXJuIG5vZGV9KSxyZWFkbGluazooZnVuY3Rpb24obm9kZSl7aWYoIUZTLmlzTGluayhub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfXJldHVybiBub2RlLmxpbmt9KX0sc3RyZWFtX29wczp7cmVhZDooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYocG9zaXRpb24+PWNvbnRlbnRzLmxlbmd0aClyZXR1cm4gMDt2YXIgc2l6ZT1NYXRoLm1pbihjb250ZW50cy5sZW5ndGgtcG9zaXRpb24sbGVuZ3RoKTthc3NlcnQoc2l6ZT49MCk7aWYoc2l6ZT44JiZjb250ZW50cy5zdWJhcnJheSl7YnVmZmVyLnNldChjb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitzaXplKSxvZmZzZXQpfWVsc2V7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXX19cmV0dXJuIHNpemV9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLGNhbk93bil7dmFyIG5vZGU9c3RyZWFtLm5vZGU7bm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTt2YXIgY29udGVudHM9bm9kZS5jb250ZW50cztpZihsZW5ndGgmJmNvbnRlbnRzLmxlbmd0aD09PTAmJnBvc2l0aW9uPT09MCYmYnVmZmVyLnN1YmFycmF5KXtpZihjYW5Pd24mJm9mZnNldD09PTApe25vZGUuY29udGVudHM9YnVmZmVyO25vZGUuY29udGVudE1vZGU9YnVmZmVyLmJ1ZmZlcj09PUhFQVA4LmJ1ZmZlcj9NRU1GUy5DT05URU5UX09XTklORzpNRU1GUy5DT05URU5UX0ZJWEVEfWVsc2V7bm9kZS5jb250ZW50cz1uZXcgVWludDhBcnJheShidWZmZXIuc3ViYXJyYXkob2Zmc2V0LG9mZnNldCtsZW5ndGgpKTtub2RlLmNvbnRlbnRNb2RlPU1FTUZTLkNPTlRFTlRfRklYRUR9cmV0dXJuIGxlbmd0aH1NRU1GUy5lbnN1cmVGbGV4aWJsZShub2RlKTt2YXIgY29udGVudHM9bm9kZS5jb250ZW50czt3aGlsZShjb250ZW50cy5sZW5ndGg8cG9zaXRpb24pY29udGVudHMucHVzaCgwKTtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe2NvbnRlbnRzW3Bvc2l0aW9uK2ldPWJ1ZmZlcltvZmZzZXQraV19cmV0dXJuIGxlbmd0aH0pLGxsc2VlazooZnVuY3Rpb24oc3RyZWFtLG9mZnNldCx3aGVuY2Upe3ZhciBwb3NpdGlvbj1vZmZzZXQ7aWYod2hlbmNlPT09MSl7cG9zaXRpb24rPXN0cmVhbS5wb3NpdGlvbn1lbHNlIGlmKHdoZW5jZT09PTIpe2lmKEZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSl7cG9zaXRpb24rPXN0cmVhbS5ub2RlLmNvbnRlbnRzLmxlbmd0aH19aWYocG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1zdHJlYW0udW5nb3R0ZW49W107c3RyZWFtLnBvc2l0aW9uPXBvc2l0aW9uO3JldHVybiBwb3NpdGlvbn0pLGFsbG9jYXRlOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LGxlbmd0aCl7TUVNRlMuZW5zdXJlRmxleGlibGUoc3RyZWFtLm5vZGUpO3ZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50czt2YXIgbGltaXQ9b2Zmc2V0K2xlbmd0aDt3aGlsZShsaW1pdD5jb250ZW50cy5sZW5ndGgpY29udGVudHMucHVzaCgwKX0pLG1tYXA6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixwcm90LGZsYWdzKXtpZighRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9ERVYpfXZhciBwdHI7dmFyIGFsbG9jYXRlZDt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYoIShmbGFncyYyKSYmKGNvbnRlbnRzLmJ1ZmZlcj09PWJ1ZmZlcnx8Y29udGVudHMuYnVmZmVyPT09YnVmZmVyLmJ1ZmZlcikpe2FsbG9jYXRlZD1mYWxzZTtwdHI9Y29udGVudHMuYnl0ZU9mZnNldH1lbHNle2lmKHBvc2l0aW9uPjB8fHBvc2l0aW9uK2xlbmd0aDxjb250ZW50cy5sZW5ndGgpe2lmKGNvbnRlbnRzLnN1YmFycmF5KXtjb250ZW50cz1jb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitsZW5ndGgpfWVsc2V7Y29udGVudHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY29udGVudHMscG9zaXRpb24scG9zaXRpb24rbGVuZ3RoKX19YWxsb2NhdGVkPXRydWU7cHRyPV9tYWxsb2MobGVuZ3RoKTtpZighcHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9NRU0pfWJ1ZmZlci5zZXQoY29udGVudHMscHRyKX1yZXR1cm57cHRyOnB0cixhbGxvY2F0ZWQ6YWxsb2NhdGVkfX0pfX07dmFyIElEQkZTPXtkYnM6e30saW5kZXhlZERCOihmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuaW5kZXhlZERCfHx3aW5kb3cubW96SW5kZXhlZERCfHx3aW5kb3cud2Via2l0SW5kZXhlZERCfHx3aW5kb3cubXNJbmRleGVkREJ9KSxEQl9WRVJTSU9OOjIxLERCX1NUT1JFX05BTUU6IkZJTEVfREFUQSIsbW91bnQ6KGZ1bmN0aW9uKG1vdW50KXtyZXR1cm4gTUVNRlMubW91bnQuYXBwbHkobnVsbCxhcmd1bWVudHMpfSksc3luY2ZzOihmdW5jdGlvbihtb3VudCxwb3B1bGF0ZSxjYWxsYmFjayl7SURCRlMuZ2V0TG9jYWxTZXQobW91bnQsKGZ1bmN0aW9uKGVycixsb2NhbCl7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO0lEQkZTLmdldFJlbW90ZVNldChtb3VudCwoZnVuY3Rpb24oZXJyLHJlbW90ZSl7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO3ZhciBzcmM9cG9wdWxhdGU/cmVtb3RlOmxvY2FsO3ZhciBkc3Q9cG9wdWxhdGU/bG9jYWw6cmVtb3RlO0lEQkZTLnJlY29uY2lsZShzcmMsZHN0LGNhbGxiYWNrKX0pKX0pKX0pLGdldERCOihmdW5jdGlvbihuYW1lLGNhbGxiYWNrKXt2YXIgZGI9SURCRlMuZGJzW25hbWVdO2lmKGRiKXtyZXR1cm4gY2FsbGJhY2sobnVsbCxkYil9dmFyIHJlcTt0cnl7cmVxPUlEQkZTLmluZGV4ZWREQigpLm9wZW4obmFtZSxJREJGUy5EQl9WRVJTSU9OKX1jYXRjaChlKXtyZXR1cm4gY2FsbGJhY2soZSl9cmVxLm9udXBncmFkZW5lZWRlZD0oZnVuY3Rpb24oZSl7dmFyIGRiPWUudGFyZ2V0LnJlc3VsdDt2YXIgdHJhbnNhY3Rpb249ZS50YXJnZXQudHJhbnNhY3Rpb247dmFyIGZpbGVTdG9yZTtpZihkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKElEQkZTLkRCX1NUT1JFX05BTUUpKXtmaWxlU3RvcmU9dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoSURCRlMuREJfU1RPUkVfTkFNRSl9ZWxzZXtmaWxlU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoSURCRlMuREJfU1RPUkVfTkFNRSl9ZmlsZVN0b3JlLmNyZWF0ZUluZGV4KCJ0aW1lc3RhbXAiLCJ0aW1lc3RhbXAiLHt1bmlxdWU6ZmFsc2V9KX0pO3JlcS5vbnN1Y2Nlc3M9KGZ1bmN0aW9uKCl7ZGI9cmVxLnJlc3VsdDtJREJGUy5kYnNbbmFtZV09ZGI7Y2FsbGJhY2sobnVsbCxkYil9KTtyZXEub25lcnJvcj0oZnVuY3Rpb24oKXtjYWxsYmFjayh0aGlzLmVycm9yKX0pfSksZ2V0TG9jYWxTZXQ6KGZ1bmN0aW9uKG1vdW50LGNhbGxiYWNrKXt2YXIgZW50cmllcz17fTtmdW5jdGlvbiBpc1JlYWxEaXIocCl7cmV0dXJuIHAhPT0iLiImJnAhPT0iLi4ifWZ1bmN0aW9uIHRvQWJzb2x1dGUocm9vdCl7cmV0dXJuKGZ1bmN0aW9uKHApe3JldHVybiBQQVRILmpvaW4yKHJvb3QscCl9KX12YXIgY2hlY2s9RlMucmVhZGRpcihtb3VudC5tb3VudHBvaW50KS5maWx0ZXIoaXNSZWFsRGlyKS5tYXAodG9BYnNvbHV0ZShtb3VudC5tb3VudHBvaW50KSk7d2hpbGUoY2hlY2subGVuZ3RoKXt2YXIgcGF0aD1jaGVjay5wb3AoKTt2YXIgc3RhdDt0cnl7c3RhdD1GUy5zdGF0KHBhdGgpfWNhdGNoKGUpe3JldHVybiBjYWxsYmFjayhlKX1pZihGUy5pc0RpcihzdGF0Lm1vZGUpKXtjaGVjay5wdXNoLmFwcGx5KGNoZWNrLEZTLnJlYWRkaXIocGF0aCkuZmlsdGVyKGlzUmVhbERpcikubWFwKHRvQWJzb2x1dGUocGF0aCkpKX1lbnRyaWVzW3BhdGhdPXt0aW1lc3RhbXA6c3RhdC5tdGltZX19cmV0dXJuIGNhbGxiYWNrKG51bGwse3R5cGU6ImxvY2FsIixlbnRyaWVzOmVudHJpZXN9KX0pLGdldFJlbW90ZVNldDooZnVuY3Rpb24obW91bnQsY2FsbGJhY2spe3ZhciBlbnRyaWVzPXt9O0lEQkZTLmdldERCKG1vdW50Lm1vdW50cG9pbnQsKGZ1bmN0aW9uKGVycixkYil7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO3ZhciB0cmFuc2FjdGlvbj1kYi50cmFuc2FjdGlvbihbSURCRlMuREJfU1RPUkVfTkFNRV0sInJlYWRvbmx5Iik7dHJhbnNhY3Rpb24ub25lcnJvcj0oZnVuY3Rpb24oKXtjYWxsYmFjayh0aGlzLmVycm9yKX0pO3ZhciBzdG9yZT10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShJREJGUy5EQl9TVE9SRV9OQU1FKTt2YXIgaW5kZXg9c3RvcmUuaW5kZXgoInRpbWVzdGFtcCIpO2luZGV4Lm9wZW5LZXlDdXJzb3IoKS5vbnN1Y2Nlc3M9KGZ1bmN0aW9uKGV2ZW50KXt2YXIgY3Vyc29yPWV2ZW50LnRhcmdldC5yZXN1bHQ7aWYoIWN1cnNvcil7cmV0dXJuIGNhbGxiYWNrKG51bGwse3R5cGU6InJlbW90ZSIsZGI6ZGIsZW50cmllczplbnRyaWVzfSl9ZW50cmllc1tjdXJzb3IucHJpbWFyeUtleV09e3RpbWVzdGFtcDpjdXJzb3Iua2V5fTtjdXJzb3IuY29udGludWUoKX0pfSkpfSksbG9hZExvY2FsRW50cnk6KGZ1bmN0aW9uKHBhdGgsY2FsbGJhY2spe3ZhciBzdGF0LG5vZGU7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoKTtub2RlPWxvb2t1cC5ub2RlO3N0YXQ9RlMuc3RhdChwYXRoKX1jYXRjaChlKXtyZXR1cm4gY2FsbGJhY2soZSl9aWYoRlMuaXNEaXIoc3RhdC5tb2RlKSl7cmV0dXJuIGNhbGxiYWNrKG51bGwse3RpbWVzdGFtcDpzdGF0Lm10aW1lLG1vZGU6c3RhdC5tb2RlfSl9ZWxzZSBpZihGUy5pc0ZpbGUoc3RhdC5tb2RlKSl7cmV0dXJuIGNhbGxiYWNrKG51bGwse3RpbWVzdGFtcDpzdGF0Lm10aW1lLG1vZGU6c3RhdC5tb2RlLGNvbnRlbnRzOm5vZGUuY29udGVudHN9KX1lbHNle3JldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpfX0pLHN0b3JlTG9jYWxFbnRyeTooZnVuY3Rpb24ocGF0aCxlbnRyeSxjYWxsYmFjayl7dHJ5e2lmKEZTLmlzRGlyKGVudHJ5Lm1vZGUpKXtGUy5ta2RpcihwYXRoLGVudHJ5Lm1vZGUpfWVsc2UgaWYoRlMuaXNGaWxlKGVudHJ5Lm1vZGUpKXtGUy53cml0ZUZpbGUocGF0aCxlbnRyeS5jb250ZW50cyx7ZW5jb2Rpbmc6ImJpbmFyeSIsY2FuT3duOnRydWV9KX1lbHNle3JldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpfUZTLnV0aW1lKHBhdGgsZW50cnkudGltZXN0YW1wLGVudHJ5LnRpbWVzdGFtcCl9Y2F0Y2goZSl7cmV0dXJuIGNhbGxiYWNrKGUpfWNhbGxiYWNrKG51bGwpfSkscmVtb3ZlTG9jYWxFbnRyeTooZnVuY3Rpb24ocGF0aCxjYWxsYmFjayl7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoKTt2YXIgc3RhdD1GUy5zdGF0KHBhdGgpO2lmKEZTLmlzRGlyKHN0YXQubW9kZSkpe0ZTLnJtZGlyKHBhdGgpfWVsc2UgaWYoRlMuaXNGaWxlKHN0YXQubW9kZSkpe0ZTLnVubGluayhwYXRoKX19Y2F0Y2goZSl7cmV0dXJuIGNhbGxiYWNrKGUpfWNhbGxiYWNrKG51bGwpfSksbG9hZFJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLmdldChwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbihldmVudCl7Y2FsbGJhY2sobnVsbCxldmVudC50YXJnZXQucmVzdWx0KX0pO3JlcS5vbmVycm9yPShmdW5jdGlvbigpe2NhbGxiYWNrKHRoaXMuZXJyb3IpfSl9KSxzdG9yZVJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGVudHJ5LGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLnB1dChlbnRyeSxwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbigpe2NhbGxiYWNrKG51bGwpfSk7cmVxLm9uZXJyb3I9KGZ1bmN0aW9uKCl7Y2FsbGJhY2sodGhpcy5lcnJvcil9KX0pLHJlbW92ZVJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLmRlbGV0ZShwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbigpe2NhbGxiYWNrKG51bGwpfSk7cmVxLm9uZXJyb3I9KGZ1bmN0aW9uKCl7Y2FsbGJhY2sodGhpcy5lcnJvcil9KX0pLHJlY29uY2lsZTooZnVuY3Rpb24oc3JjLGRzdCxjYWxsYmFjayl7dmFyIHRvdGFsPTA7dmFyIGNyZWF0ZT1bXTtPYmplY3Qua2V5cyhzcmMuZW50cmllcykuZm9yRWFjaCgoZnVuY3Rpb24oa2V5KXt2YXIgZT1zcmMuZW50cmllc1trZXldO3ZhciBlMj1kc3QuZW50cmllc1trZXldO2lmKCFlMnx8ZS50aW1lc3RhbXA+ZTIudGltZXN0YW1wKXtjcmVhdGUucHVzaChrZXkpO3RvdGFsKyt9fSkpO3ZhciByZW1vdmU9W107T2JqZWN0LmtleXMoZHN0LmVudHJpZXMpLmZvckVhY2goKGZ1bmN0aW9uKGtleSl7dmFyIGU9ZHN0LmVudHJpZXNba2V5XTt2YXIgZTI9c3JjLmVudHJpZXNba2V5XTtpZighZTIpe3JlbW92ZS5wdXNoKGtleSk7dG90YWwrK319KSk7aWYoIXRvdGFsKXtyZXR1cm4gY2FsbGJhY2sobnVsbCl9dmFyIGVycm9yZWQ9ZmFsc2U7dmFyIGNvbXBsZXRlZD0wO3ZhciBkYj1zcmMudHlwZT09PSJyZW1vdGUiP3NyYy5kYjpkc3QuZGI7dmFyIHRyYW5zYWN0aW9uPWRiLnRyYW5zYWN0aW9uKFtJREJGUy5EQl9TVE9SRV9OQU1FXSwicmVhZHdyaXRlIik7dmFyIHN0b3JlPXRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKElEQkZTLkRCX1NUT1JFX05BTUUpO2Z1bmN0aW9uIGRvbmUoZXJyKXtpZihlcnIpe2lmKCFkb25lLmVycm9yZWQpe2RvbmUuZXJyb3JlZD10cnVlO3JldHVybiBjYWxsYmFjayhlcnIpfXJldHVybn1pZigrK2NvbXBsZXRlZD49dG90YWwpe3JldHVybiBjYWxsYmFjayhudWxsKX19dHJhbnNhY3Rpb24ub25lcnJvcj0oZnVuY3Rpb24oKXtkb25lKHRoaXMuZXJyb3IpfSk7Y3JlYXRlLnNvcnQoKS5mb3JFYWNoKChmdW5jdGlvbihwYXRoKXtpZihkc3QudHlwZT09PSJsb2NhbCIpe0lEQkZTLmxvYWRSZW1vdGVFbnRyeShzdG9yZSxwYXRoLChmdW5jdGlvbihlcnIsZW50cnkpe2lmKGVycilyZXR1cm4gZG9uZShlcnIpO0lEQkZTLnN0b3JlTG9jYWxFbnRyeShwYXRoLGVudHJ5LGRvbmUpfSkpfWVsc2V7SURCRlMubG9hZExvY2FsRW50cnkocGF0aCwoZnVuY3Rpb24oZXJyLGVudHJ5KXtpZihlcnIpcmV0dXJuIGRvbmUoZXJyKTtJREJGUy5zdG9yZVJlbW90ZUVudHJ5KHN0b3JlLHBhdGgsZW50cnksZG9uZSl9KSl9fSkpO3JlbW92ZS5zb3J0KCkucmV2ZXJzZSgpLmZvckVhY2goKGZ1bmN0aW9uKHBhdGgpe2lmKGRzdC50eXBlPT09ImxvY2FsIil7SURCRlMucmVtb3ZlTG9jYWxFbnRyeShwYXRoLGRvbmUpfWVsc2V7SURCRlMucmVtb3ZlUmVtb3RlRW50cnkoc3RvcmUscGF0aCxkb25lKX19KSl9KX07dmFyIE5PREVGUz17aXNXaW5kb3dzOmZhbHNlLHN0YXRpY0luaXQ6KGZ1bmN0aW9uKCl7Tk9ERUZTLmlzV2luZG93cz0hIXByb2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vKX0pLG1vdW50OihmdW5jdGlvbihtb3VudCl7YXNzZXJ0KEVOVklST05NRU5UX0lTX05PREUpO3JldHVybiBOT0RFRlMuY3JlYXRlTm9kZShudWxsLCIvIixOT0RFRlMuZ2V0TW9kZShtb3VudC5vcHRzLnJvb3QpLDApfSksY3JlYXRlTm9kZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe2lmKCFGUy5pc0Rpcihtb2RlKSYmIUZTLmlzRmlsZShtb2RlKSYmIUZTLmlzTGluayhtb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbm9kZT1GUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUpO25vZGUubm9kZV9vcHM9Tk9ERUZTLm5vZGVfb3BzO25vZGUuc3RyZWFtX29wcz1OT0RFRlMuc3RyZWFtX29wcztyZXR1cm4gbm9kZX0pLGdldE1vZGU6KGZ1bmN0aW9uKHBhdGgpe3ZhciBzdGF0O3RyeXtzdGF0PWZzLmxzdGF0U3luYyhwYXRoKTtpZihOT0RFRlMuaXNXaW5kb3dzKXtzdGF0Lm1vZGU9c3RhdC5tb2RlfChzdGF0Lm1vZGUmMTQ2KT4+MX19Y2F0Y2goZSl7aWYoIWUuY29kZSl0aHJvdyBlO3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pfXJldHVybiBzdGF0Lm1vZGV9KSxyZWFsUGF0aDooZnVuY3Rpb24obm9kZSl7dmFyIHBhcnRzPVtdO3doaWxlKG5vZGUucGFyZW50IT09bm9kZSl7cGFydHMucHVzaChub2RlLm5hbWUpO25vZGU9bm9kZS5wYXJlbnR9cGFydHMucHVzaChub2RlLm1vdW50Lm9wdHMucm9vdCk7cGFydHMucmV2ZXJzZSgpO3JldHVybiBQQVRILmpvaW4uYXBwbHkobnVsbCxwYXJ0cyl9KSxmbGFnc1RvUGVybWlzc2lvblN0cmluZ01hcDp7MDoiciIsMToicisiLDI6InIrIiw2NDoiciIsNjU6InIrIiw2NjoicisiLDEyOToicngrIiwxOTM6InJ4KyIsNTE0OiJ3KyIsNTc3OiJ3Iiw1Nzg6IncrIiw3MDU6Ind4Iiw3MDY6Ind4KyIsMTAyNDoiYSIsMTAyNToiYSIsMTAyNjoiYSsiLDEwODk6ImEiLDEwOTA6ImErIiwxMTUzOiJheCIsMTE1NDoiYXgrIiwxMjE3OiJheCIsMTIxODoiYXgrIiw0MDk2OiJycyIsNDA5ODoicnMrIn0sZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmc6KGZ1bmN0aW9uKGZsYWdzKXtpZihmbGFncyBpbiBOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmdNYXApe3JldHVybiBOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmdNYXBbZmxhZ3NdfWVsc2V7cmV0dXJuIGZsYWdzfX0pLG5vZGVfb3BzOntnZXRhdHRyOihmdW5jdGlvbihub2RlKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dmFyIHN0YXQ7dHJ5e3N0YXQ9ZnMubHN0YXRTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1pZihOT0RFRlMuaXNXaW5kb3dzJiYhc3RhdC5ibGtzaXplKXtzdGF0LmJsa3NpemU9NDA5Nn1pZihOT0RFRlMuaXNXaW5kb3dzJiYhc3RhdC5ibG9ja3Mpe3N0YXQuYmxvY2tzPShzdGF0LnNpemUrc3RhdC5ibGtzaXplLTEpL3N0YXQuYmxrc2l6ZXwwfXJldHVybntkZXY6c3RhdC5kZXYsaW5vOnN0YXQuaW5vLG1vZGU6c3RhdC5tb2RlLG5saW5rOnN0YXQubmxpbmssdWlkOnN0YXQudWlkLGdpZDpzdGF0LmdpZCxyZGV2OnN0YXQucmRldixzaXplOnN0YXQuc2l6ZSxhdGltZTpzdGF0LmF0aW1lLG10aW1lOnN0YXQubXRpbWUsY3RpbWU6c3RhdC5jdGltZSxibGtzaXplOnN0YXQuYmxrc2l6ZSxibG9ja3M6c3RhdC5ibG9ja3N9fSksc2V0YXR0cjooZnVuY3Rpb24obm9kZSxhdHRyKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dHJ5e2lmKGF0dHIubW9kZSE9PXVuZGVmaW5lZCl7ZnMuY2htb2RTeW5jKHBhdGgsYXR0ci5tb2RlKTtub2RlLm1vZGU9YXR0ci5tb2RlfWlmKGF0dHIudGltZXN0YW1wIT09dW5kZWZpbmVkKXt2YXIgZGF0ZT1uZXcgRGF0ZShhdHRyLnRpbWVzdGFtcCk7ZnMudXRpbWVzU3luYyhwYXRoLGRhdGUsZGF0ZSl9aWYoYXR0ci5zaXplIT09dW5kZWZpbmVkKXtmcy50cnVuY2F0ZVN5bmMocGF0aCxhdHRyLnNpemUpfX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSksbG9va3VwOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIHBhdGg9UEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSxuYW1lKTt2YXIgbW9kZT1OT0RFRlMuZ2V0TW9kZShwYXRoKTtyZXR1cm4gTk9ERUZTLmNyZWF0ZU5vZGUocGFyZW50LG5hbWUsbW9kZSl9KSxta25vZDooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe3ZhciBub2RlPU5PREVGUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUsZGV2KTt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dHJ5e2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2ZzLm1rZGlyU3luYyhwYXRoLG5vZGUubW9kZSl9ZWxzZXtmcy53cml0ZUZpbGVTeW5jKHBhdGgsIiIse21vZGU6bm9kZS5tb2RlfSl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1yZXR1cm4gbm9kZX0pLHJlbmFtZTooZnVuY3Rpb24ob2xkTm9kZSxuZXdEaXIsbmV3TmFtZSl7dmFyIG9sZFBhdGg9Tk9ERUZTLnJlYWxQYXRoKG9sZE5vZGUpO3ZhciBuZXdQYXRoPVBBVEguam9pbjIoTk9ERUZTLnJlYWxQYXRoKG5ld0RpciksbmV3TmFtZSk7dHJ5e2ZzLnJlbmFtZVN5bmMob2xkUGF0aCxuZXdQYXRoKX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSksdW5saW5rOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIHBhdGg9UEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSxuYW1lKTt0cnl7ZnMudW5saW5rU3luYyhwYXRoKX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSkscm1kaXI6KGZ1bmN0aW9uKHBhcmVudCxuYW1lKXt2YXIgcGF0aD1QQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLG5hbWUpO3RyeXtmcy5ybWRpclN5bmMocGF0aCl9Y2F0Y2goZSl7aWYoIWUuY29kZSl0aHJvdyBlO3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pfX0pLHJlYWRkaXI6KGZ1bmN0aW9uKG5vZGUpe3ZhciBwYXRoPU5PREVGUy5yZWFsUGF0aChub2RlKTt0cnl7cmV0dXJuIGZzLnJlYWRkaXJTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxzeW1saW5rOihmdW5jdGlvbihwYXJlbnQsbmV3TmFtZSxvbGRQYXRoKXt2YXIgbmV3UGF0aD1QQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLG5ld05hbWUpO3RyeXtmcy5zeW1saW5rU3luYyhvbGRQYXRoLG5ld1BhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxyZWFkbGluazooZnVuY3Rpb24obm9kZSl7dmFyIHBhdGg9Tk9ERUZTLnJlYWxQYXRoKG5vZGUpO3RyeXtyZXR1cm4gZnMucmVhZGxpbmtTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KX0sc3RyZWFtX29wczp7b3BlbjooZnVuY3Rpb24oc3RyZWFtKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgoc3RyZWFtLm5vZGUpO3RyeXtpZihGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkpe3N0cmVhbS5uZmQ9ZnMub3BlblN5bmMocGF0aCxOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoc3RyZWFtLmZsYWdzKSl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxjbG9zZTooZnVuY3Rpb24oc3RyZWFtKXt0cnl7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpJiZzdHJlYW0ubmZkKXtmcy5jbG9zZVN5bmMoc3RyZWFtLm5mZCl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBuYnVmZmVyPW5ldyBCdWZmZXIobGVuZ3RoKTt2YXIgcmVzO3RyeXtyZXM9ZnMucmVhZFN5bmMoc3RyZWFtLm5mZCxuYnVmZmVyLDAsbGVuZ3RoLHBvc2l0aW9uKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1pZihyZXM+MCl7Zm9yKHZhciBpPTA7aTxyZXM7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPW5idWZmZXJbaV19fXJldHVybiByZXN9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgbmJ1ZmZlcj1uZXcgQnVmZmVyKGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsb2Zmc2V0K2xlbmd0aCkpO3ZhciByZXM7dHJ5e3Jlcz1mcy53cml0ZVN5bmMoc3RyZWFtLm5mZCxuYnVmZmVyLDAsbGVuZ3RoLHBvc2l0aW9uKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1yZXR1cm4gcmVzfSksbGxzZWVrOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LHdoZW5jZSl7dmFyIHBvc2l0aW9uPW9mZnNldDtpZih3aGVuY2U9PT0xKXtwb3NpdGlvbis9c3RyZWFtLnBvc2l0aW9ufWVsc2UgaWYod2hlbmNlPT09Mil7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXt0cnl7dmFyIHN0YXQ9ZnMuZnN0YXRTeW5jKHN0cmVhbS5uZmQpO3Bvc2l0aW9uKz1zdGF0LnNpemV9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fX1pZihwb3NpdGlvbjwwKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfXN0cmVhbS5wb3NpdGlvbj1wb3NpdGlvbjtyZXR1cm4gcG9zaXRpb259KX19O3ZhciBfc3RkaW49YWxsb2NhdGUoMSwiaTMyKiIsQUxMT0NfU1RBVElDKTt2YXIgX3N0ZG91dD1hbGxvY2F0ZSgxLCJpMzIqIixBTExPQ19TVEFUSUMpO3ZhciBfc3RkZXJyPWFsbG9jYXRlKDEsImkzMioiLEFMTE9DX1NUQVRJQyk7dmFyIEZTPXtyb290Om51bGwsbW91bnRzOltdLGRldmljZXM6W251bGxdLHN0cmVhbXM6W10sbmV4dElub2RlOjEsbmFtZVRhYmxlOm51bGwsY3VycmVudFBhdGg6Ii8iLGluaXRpYWxpemVkOmZhbHNlLGlnbm9yZVBlcm1pc3Npb25zOnRydWUsdHJhY2tpbmdEZWxlZ2F0ZTp7fSx0cmFja2luZzp7b3BlbkZsYWdzOntSRUFEOjEsV1JJVEU6Mn19LEVycm5vRXJyb3I6bnVsbCxnZW5lcmljRXJyb3JzOnt9LGhhbmRsZUZTRXJyb3I6KGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGUrIiA6ICIrc3RhY2tUcmFjZSgpO3JldHVybiBfX19zZXRFcnJObyhlLmVycm5vKX0pLGxvb2t1cFBhdGg6KGZ1bmN0aW9uKHBhdGgsb3B0cyl7cGF0aD1QQVRILnJlc29sdmUoRlMuY3dkKCkscGF0aCk7b3B0cz1vcHRzfHx7fTt2YXIgZGVmYXVsdHM9e2ZvbGxvd19tb3VudDp0cnVlLHJlY3Vyc2VfY291bnQ6MH07Zm9yKHZhciBrZXkgaW4gZGVmYXVsdHMpe2lmKG9wdHNba2V5XT09PXVuZGVmaW5lZCl7b3B0c1trZXldPWRlZmF1bHRzW2tleV19fWlmKG9wdHMucmVjdXJzZV9jb3VudD44KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTE9PUCl9dmFyIHBhcnRzPVBBVEgubm9ybWFsaXplQXJyYXkocGF0aC5zcGxpdCgiLyIpLmZpbHRlcigoZnVuY3Rpb24ocCl7cmV0dXJuISFwfSkpLGZhbHNlKTt2YXIgY3VycmVudD1GUy5yb290O3ZhciBjdXJyZW50X3BhdGg9Ii8iO2Zvcih2YXIgaT0wO2k8cGFydHMubGVuZ3RoO2krKyl7dmFyIGlzbGFzdD1pPT09cGFydHMubGVuZ3RoLTE7aWYoaXNsYXN0JiZvcHRzLnBhcmVudCl7YnJlYWt9Y3VycmVudD1GUy5sb29rdXBOb2RlKGN1cnJlbnQscGFydHNbaV0pO2N1cnJlbnRfcGF0aD1QQVRILmpvaW4yKGN1cnJlbnRfcGF0aCxwYXJ0c1tpXSk7aWYoRlMuaXNNb3VudHBvaW50KGN1cnJlbnQpKXtpZighaXNsYXN0fHxpc2xhc3QmJm9wdHMuZm9sbG93X21vdW50KXtjdXJyZW50PWN1cnJlbnQubW91bnRlZC5yb290fX1pZighaXNsYXN0fHxvcHRzLmZvbGxvdyl7dmFyIGNvdW50PTA7d2hpbGUoRlMuaXNMaW5rKGN1cnJlbnQubW9kZSkpe3ZhciBsaW5rPUZTLnJlYWRsaW5rKGN1cnJlbnRfcGF0aCk7Y3VycmVudF9wYXRoPVBBVEgucmVzb2x2ZShQQVRILmRpcm5hbWUoY3VycmVudF9wYXRoKSxsaW5rKTt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgoY3VycmVudF9wYXRoLHtyZWN1cnNlX2NvdW50Om9wdHMucmVjdXJzZV9jb3VudH0pO2N1cnJlbnQ9bG9va3VwLm5vZGU7aWYoY291bnQrKz40MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUxPT1ApfX19fXJldHVybntwYXRoOmN1cnJlbnRfcGF0aCxub2RlOmN1cnJlbnR9fSksZ2V0UGF0aDooZnVuY3Rpb24obm9kZSl7dmFyIHBhdGg7d2hpbGUodHJ1ZSl7aWYoRlMuaXNSb290KG5vZGUpKXt2YXIgbW91bnQ9bm9kZS5tb3VudC5tb3VudHBvaW50O2lmKCFwYXRoKXJldHVybiBtb3VudDtyZXR1cm4gbW91bnRbbW91bnQubGVuZ3RoLTFdIT09Ii8iP21vdW50KyIvIitwYXRoOm1vdW50K3BhdGh9cGF0aD1wYXRoP25vZGUubmFtZSsiLyIrcGF0aDpub2RlLm5hbWU7bm9kZT1ub2RlLnBhcmVudH19KSxoYXNoTmFtZTooZnVuY3Rpb24ocGFyZW50aWQsbmFtZSl7dmFyIGhhc2g9MDtmb3IodmFyIGk9MDtpPG5hbWUubGVuZ3RoO2krKyl7aGFzaD0oaGFzaDw8NSktaGFzaCtuYW1lLmNoYXJDb2RlQXQoaSl8MH1yZXR1cm4ocGFyZW50aWQraGFzaD4+PjApJUZTLm5hbWVUYWJsZS5sZW5ndGh9KSxoYXNoQWRkTm9kZTooZnVuY3Rpb24obm9kZSl7dmFyIGhhc2g9RlMuaGFzaE5hbWUobm9kZS5wYXJlbnQuaWQsbm9kZS5uYW1lKTtub2RlLm5hbWVfbmV4dD1GUy5uYW1lVGFibGVbaGFzaF07RlMubmFtZVRhYmxlW2hhc2hdPW5vZGV9KSxoYXNoUmVtb3ZlTm9kZTooZnVuY3Rpb24obm9kZSl7dmFyIGhhc2g9RlMuaGFzaE5hbWUobm9kZS5wYXJlbnQuaWQsbm9kZS5uYW1lKTtpZihGUy5uYW1lVGFibGVbaGFzaF09PT1ub2RlKXtGUy5uYW1lVGFibGVbaGFzaF09bm9kZS5uYW1lX25leHR9ZWxzZXt2YXIgY3VycmVudD1GUy5uYW1lVGFibGVbaGFzaF07d2hpbGUoY3VycmVudCl7aWYoY3VycmVudC5uYW1lX25leHQ9PT1ub2RlKXtjdXJyZW50Lm5hbWVfbmV4dD1ub2RlLm5hbWVfbmV4dDticmVha31jdXJyZW50PWN1cnJlbnQubmFtZV9uZXh0fX19KSxsb29rdXBOb2RlOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIGVycj1GUy5tYXlMb29rdXAocGFyZW50KTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9dmFyIGhhc2g9RlMuaGFzaE5hbWUocGFyZW50LmlkLG5hbWUpO2Zvcih2YXIgbm9kZT1GUy5uYW1lVGFibGVbaGFzaF07bm9kZTtub2RlPW5vZGUubmFtZV9uZXh0KXt2YXIgbm9kZU5hbWU9bm9kZS5uYW1lO2lmKG5vZGUucGFyZW50LmlkPT09cGFyZW50LmlkJiZub2RlTmFtZT09PW5hbWUpe3JldHVybiBub2RlfX1yZXR1cm4gRlMubG9va3VwKHBhcmVudCxuYW1lKX0pLGNyZWF0ZU5vZGU6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLG1vZGUscmRldil7aWYoIUZTLkZTTm9kZSl7RlMuRlNOb2RlPShmdW5jdGlvbihwYXJlbnQsbmFtZSxtb2RlLHJkZXYpe2lmKCFwYXJlbnQpe3BhcmVudD10aGlzfXRoaXMucGFyZW50PXBhcmVudDt0aGlzLm1vdW50PXBhcmVudC5tb3VudDt0aGlzLm1vdW50ZWQ9bnVsbDt0aGlzLmlkPUZTLm5leHRJbm9kZSsrO3RoaXMubmFtZT1uYW1lO3RoaXMubW9kZT1tb2RlO3RoaXMubm9kZV9vcHM9e307dGhpcy5zdHJlYW1fb3BzPXt9O3RoaXMucmRldj1yZGV2fSk7RlMuRlNOb2RlLnByb3RvdHlwZT17fTt2YXIgcmVhZE1vZGU9MjkyfDczO3ZhciB3cml0ZU1vZGU9MTQ2O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZTLkZTTm9kZS5wcm90b3R5cGUse3JlYWQ6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5tb2RlJnJlYWRNb2RlKT09PXJlYWRNb2RlfSksc2V0OihmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXJlYWRNb2RlOnRoaXMubW9kZSY9fnJlYWRNb2RlfSl9LHdyaXRlOntnZXQ6KGZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMubW9kZSZ3cml0ZU1vZGUpPT09d3JpdGVNb2RlfSksc2V0OihmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXdyaXRlTW9kZTp0aGlzLm1vZGUmPX53cml0ZU1vZGV9KX0saXNGb2xkZXI6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4gRlMuaXNEaXIodGhpcy5tb2RlKX0pfSxpc0RldmljZTp7Z2V0OihmdW5jdGlvbigpe3JldHVybiBGUy5pc0NocmRldih0aGlzLm1vZGUpfSl9fSl9dmFyIG5vZGU9bmV3IEZTLkZTTm9kZShwYXJlbnQsbmFtZSxtb2RlLHJkZXYpO0ZTLmhhc2hBZGROb2RlKG5vZGUpO3JldHVybiBub2RlfSksZGVzdHJveU5vZGU6KGZ1bmN0aW9uKG5vZGUpe0ZTLmhhc2hSZW1vdmVOb2RlKG5vZGUpfSksaXNSb290OihmdW5jdGlvbihub2RlKXtyZXR1cm4gbm9kZT09PW5vZGUucGFyZW50fSksaXNNb3VudHBvaW50OihmdW5jdGlvbihub2RlKXtyZXR1cm4hIW5vZGUubW91bnRlZH0pLGlzRmlsZTooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MzI3Njh9KSxpc0RpcjooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MTYzODR9KSxpc0xpbms6KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTQwOTYwfSksaXNDaHJkZXY6KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTgxOTJ9KSxpc0Jsa2RldjooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MjQ1NzZ9KSxpc0ZJRk86KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTQwOTZ9KSxpc1NvY2tldDooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNDkxNTIpPT09NDkxNTJ9KSxmbGFnTW9kZXM6eyJyIjowLCJycyI6MTA1MjY3MiwicisiOjIsInciOjU3Nywid3giOjcwNSwieHciOjcwNSwidysiOjU3OCwid3grIjo3MDYsInh3KyI6NzA2LCJhIjoxMDg5LCJheCI6MTIxNywieGEiOjEyMTcsImErIjoxMDkwLCJheCsiOjEyMTgsInhhKyI6MTIxOH0sbW9kZVN0cmluZ1RvRmxhZ3M6KGZ1bmN0aW9uKHN0cil7dmFyIGZsYWdzPUZTLmZsYWdNb2Rlc1tzdHJdO2lmKHR5cGVvZiBmbGFncz09PSJ1bmRlZmluZWQiKXt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZmlsZSBvcGVuIG1vZGU6ICIrc3RyKX1yZXR1cm4gZmxhZ3N9KSxmbGFnc1RvUGVybWlzc2lvblN0cmluZzooZnVuY3Rpb24oZmxhZyl7dmFyIGFjY21vZGU9ZmxhZyYyMDk3MTU1O3ZhciBwZXJtcz1bInIiLCJ3IiwicnciXVthY2Ntb2RlXTtpZihmbGFnJjUxMil7cGVybXMrPSJ3In1yZXR1cm4gcGVybXN9KSxub2RlUGVybWlzc2lvbnM6KGZ1bmN0aW9uKG5vZGUscGVybXMpe2lmKEZTLmlnbm9yZVBlcm1pc3Npb25zKXtyZXR1cm4gMH1pZihwZXJtcy5pbmRleE9mKCJyIikhPT0tMSYmIShub2RlLm1vZGUmMjkyKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVBQ0NFU31lbHNlIGlmKHBlcm1zLmluZGV4T2YoInciKSE9PS0xJiYhKG5vZGUubW9kZSYxNDYpKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUFDQ0VTfWVsc2UgaWYocGVybXMuaW5kZXhPZigieCIpIT09LTEmJiEobm9kZS5tb2RlJjczKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVBQ0NFU31yZXR1cm4gMH0pLG1heUxvb2t1cDooZnVuY3Rpb24oZGlyKXtyZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKGRpciwieCIpfSksbWF5Q3JlYXRlOihmdW5jdGlvbihkaXIsbmFtZSl7dHJ5e3ZhciBub2RlPUZTLmxvb2t1cE5vZGUoZGlyLG5hbWUpO3JldHVybiBFUlJOT19DT0RFUy5FRVhJU1R9Y2F0Y2goZSl7fXJldHVybiBGUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpfSksbWF5RGVsZXRlOihmdW5jdGlvbihkaXIsbmFtZSxpc2Rpcil7dmFyIG5vZGU7dHJ5e25vZGU9RlMubG9va3VwTm9kZShkaXIsbmFtZSl9Y2F0Y2goZSl7cmV0dXJuIGUuZXJybm99dmFyIGVycj1GUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpO2lmKGVycil7cmV0dXJuIGVycn1pZihpc2Rpcil7aWYoIUZTLmlzRGlyKG5vZGUubW9kZSkpe3JldHVybiBFUlJOT19DT0RFUy5FTk9URElSfWlmKEZTLmlzUm9vdChub2RlKXx8RlMuZ2V0UGF0aChub2RlKT09PUZTLmN3ZCgpKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUJVU1l9fWVsc2V7aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVJU0RJUn19cmV0dXJuIDB9KSxtYXlPcGVuOihmdW5jdGlvbihub2RlLGZsYWdzKXtpZighbm9kZSl7cmV0dXJuIEVSUk5PX0NPREVTLkVOT0VOVH1pZihGUy5pc0xpbmsobm9kZS5tb2RlKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVMT09QfWVsc2UgaWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7aWYoKGZsYWdzJjIwOTcxNTUpIT09MHx8ZmxhZ3MmNTEyKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUlTRElSfX1yZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKG5vZGUsRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoZmxhZ3MpKX0pLE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZDooZnVuY3Rpb24oZmRfc3RhcnQsZmRfZW5kKXtmZF9zdGFydD1mZF9zdGFydHx8MDtmZF9lbmQ9ZmRfZW5kfHxGUy5NQVhfT1BFTl9GRFM7Zm9yKHZhciBmZD1mZF9zdGFydDtmZDw9ZmRfZW5kO2ZkKyspe2lmKCFGUy5zdHJlYW1zW2ZkXSl7cmV0dXJuIGZkfX10aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTUZJTEUpfSksZ2V0U3RyZWFtOihmdW5jdGlvbihmZCl7cmV0dXJuIEZTLnN0cmVhbXNbZmRdfSksY3JlYXRlU3RyZWFtOihmdW5jdGlvbihzdHJlYW0sZmRfc3RhcnQsZmRfZW5kKXtpZighRlMuRlNTdHJlYW0pe0ZTLkZTU3RyZWFtPShmdW5jdGlvbigpe30pO0ZTLkZTU3RyZWFtLnByb3RvdHlwZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGUy5GU1N0cmVhbS5wcm90b3R5cGUse29iamVjdDp7Z2V0OihmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9KSxzZXQ6KGZ1bmN0aW9uKHZhbCl7dGhpcy5ub2RlPXZhbH0pfSxpc1JlYWQ6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5mbGFncyYyMDk3MTU1KSE9PTF9KX0saXNXcml0ZTp7Z2V0OihmdW5jdGlvbigpe3JldHVybih0aGlzLmZsYWdzJjIwOTcxNTUpIT09MH0pfSxpc0FwcGVuZDp7Z2V0OihmdW5jdGlvbigpe3JldHVybiB0aGlzLmZsYWdzJjEwMjR9KX19KX12YXIgbmV3U3RyZWFtPW5ldyBGUy5GU1N0cmVhbTtmb3IodmFyIHAgaW4gc3RyZWFtKXtuZXdTdHJlYW1bcF09c3RyZWFtW3BdfXN0cmVhbT1uZXdTdHJlYW07dmFyIGZkPUZTLm5leHRmZChmZF9zdGFydCxmZF9lbmQpO3N0cmVhbS5mZD1mZDtGUy5zdHJlYW1zW2ZkXT1zdHJlYW07cmV0dXJuIHN0cmVhbX0pLGNsb3NlU3RyZWFtOihmdW5jdGlvbihmZCl7RlMuc3RyZWFtc1tmZF09bnVsbH0pLGdldFN0cmVhbUZyb21QdHI6KGZ1bmN0aW9uKHB0cil7cmV0dXJuIEZTLnN0cmVhbXNbcHRyLTFdfSksZ2V0UHRyRm9yU3RyZWFtOihmdW5jdGlvbihzdHJlYW0pe3JldHVybiBzdHJlYW0/c3RyZWFtLmZkKzE6MH0pLGNocmRldl9zdHJlYW1fb3BzOntvcGVuOihmdW5jdGlvbihzdHJlYW0pe3ZhciBkZXZpY2U9RlMuZ2V0RGV2aWNlKHN0cmVhbS5ub2RlLnJkZXYpO3N0cmVhbS5zdHJlYW1fb3BzPWRldmljZS5zdHJlYW1fb3BzO2lmKHN0cmVhbS5zdHJlYW1fb3BzLm9wZW4pe3N0cmVhbS5zdHJlYW1fb3BzLm9wZW4oc3RyZWFtKX19KSxsbHNlZWs6KGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKX0pfSxtYWpvcjooZnVuY3Rpb24oZGV2KXtyZXR1cm4gZGV2Pj44fSksbWlub3I6KGZ1bmN0aW9uKGRldil7cmV0dXJuIGRldiYyNTV9KSxtYWtlZGV2OihmdW5jdGlvbihtYSxtaSl7cmV0dXJuIG1hPDw4fG1pfSkscmVnaXN0ZXJEZXZpY2U6KGZ1bmN0aW9uKGRldixvcHMpe0ZTLmRldmljZXNbZGV2XT17c3RyZWFtX29wczpvcHN9fSksZ2V0RGV2aWNlOihmdW5jdGlvbihkZXYpe3JldHVybiBGUy5kZXZpY2VzW2Rldl19KSxnZXRNb3VudHM6KGZ1bmN0aW9uKG1vdW50KXt2YXIgbW91bnRzPVtdO3ZhciBjaGVjaz1bbW91bnRdO3doaWxlKGNoZWNrLmxlbmd0aCl7dmFyIG09Y2hlY2sucG9wKCk7bW91bnRzLnB1c2gobSk7Y2hlY2sucHVzaC5hcHBseShjaGVjayxtLm1vdW50cyl9cmV0dXJuIG1vdW50c30pLHN5bmNmczooZnVuY3Rpb24ocG9wdWxhdGUsY2FsbGJhY2spe2lmKHR5cGVvZiBwb3B1bGF0ZT09PSJmdW5jdGlvbiIpe2NhbGxiYWNrPXBvcHVsYXRlO3BvcHVsYXRlPWZhbHNlfXZhciBtb3VudHM9RlMuZ2V0TW91bnRzKEZTLnJvb3QubW91bnQpO3ZhciBjb21wbGV0ZWQ9MDtmdW5jdGlvbiBkb25lKGVycil7aWYoZXJyKXtpZighZG9uZS5lcnJvcmVkKXtkb25lLmVycm9yZWQ9dHJ1ZTtyZXR1cm4gY2FsbGJhY2soZXJyKX1yZXR1cm59aWYoKytjb21wbGV0ZWQ+PW1vdW50cy5sZW5ndGgpe2NhbGxiYWNrKG51bGwpfX1tb3VudHMuZm9yRWFjaCgoZnVuY3Rpb24obW91bnQpe2lmKCFtb3VudC50eXBlLnN5bmNmcyl7cmV0dXJuIGRvbmUobnVsbCl9bW91bnQudHlwZS5zeW5jZnMobW91bnQscG9wdWxhdGUsZG9uZSl9KSl9KSxtb3VudDooZnVuY3Rpb24odHlwZSxvcHRzLG1vdW50cG9pbnQpe3ZhciByb290PW1vdW50cG9pbnQ9PT0iLyI7dmFyIHBzZXVkbz0hbW91bnRwb2ludDt2YXIgbm9kZTtpZihyb290JiZGUy5yb290KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQlVTWSl9ZWxzZSBpZighcm9vdCYmIXBzZXVkbyl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKG1vdW50cG9pbnQse2ZvbGxvd19tb3VudDpmYWxzZX0pO21vdW50cG9pbnQ9bG9va3VwLnBhdGg7bm9kZT1sb29rdXAubm9kZTtpZihGUy5pc01vdW50cG9pbnQobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKX1pZighRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVERJUil9fXZhciBtb3VudD17dHlwZTp0eXBlLG9wdHM6b3B0cyxtb3VudHBvaW50Om1vdW50cG9pbnQsbW91bnRzOltdfTt2YXIgbW91bnRSb290PXR5cGUubW91bnQobW91bnQpO21vdW50Um9vdC5tb3VudD1tb3VudDttb3VudC5yb290PW1vdW50Um9vdDtpZihyb290KXtGUy5yb290PW1vdW50Um9vdH1lbHNlIGlmKG5vZGUpe25vZGUubW91bnRlZD1tb3VudDtpZihub2RlLm1vdW50KXtub2RlLm1vdW50Lm1vdW50cy5wdXNoKG1vdW50KX19cmV0dXJuIG1vdW50Um9vdH0pLHVubW91bnQ6KGZ1bmN0aW9uKG1vdW50cG9pbnQpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChtb3VudHBvaW50LHtmb2xsb3dfbW91bnQ6ZmFsc2V9KTtpZighRlMuaXNNb3VudHBvaW50KGxvb2t1cC5ub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbm9kZT1sb29rdXAubm9kZTt2YXIgbW91bnQ9bm9kZS5tb3VudGVkO3ZhciBtb3VudHM9RlMuZ2V0TW91bnRzKG1vdW50KTtPYmplY3Qua2V5cyhGUy5uYW1lVGFibGUpLmZvckVhY2goKGZ1bmN0aW9uKGhhc2gpe3ZhciBjdXJyZW50PUZTLm5hbWVUYWJsZVtoYXNoXTt3aGlsZShjdXJyZW50KXt2YXIgbmV4dD1jdXJyZW50Lm5hbWVfbmV4dDtpZihtb3VudHMuaW5kZXhPZihjdXJyZW50Lm1vdW50KSE9PS0xKXtGUy5kZXN0cm95Tm9kZShjdXJyZW50KX1jdXJyZW50PW5leHR9fSkpO25vZGUubW91bnRlZD1udWxsO3ZhciBpZHg9bm9kZS5tb3VudC5tb3VudHMuaW5kZXhPZihtb3VudCk7YXNzZXJ0KGlkeCE9PS0xKTtub2RlLm1vdW50Lm1vdW50cy5zcGxpY2UoaWR4LDEpfSksbG9va3VwOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7cmV0dXJuIHBhcmVudC5ub2RlX29wcy5sb29rdXAocGFyZW50LG5hbWUpfSksbWtub2Q6KGZ1bmN0aW9uKHBhdGgsbW9kZSxkZXYpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgZXJyPUZTLm1heUNyZWF0ZShwYXJlbnQsbmFtZSk7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfWlmKCFwYXJlbnQubm9kZV9vcHMubWtub2Qpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLm1rbm9kKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0pLGNyZWF0ZTooZnVuY3Rpb24ocGF0aCxtb2RlKXttb2RlPW1vZGUhPT11bmRlZmluZWQ/bW9kZTo0Mzg7bW9kZSY9NDA5NTttb2RlfD0zMjc2ODtyZXR1cm4gRlMubWtub2QocGF0aCxtb2RlLDApfSksbWtkaXI6KGZ1bmN0aW9uKHBhdGgsbW9kZSl7bW9kZT1tb2RlIT09dW5kZWZpbmVkP21vZGU6NTExO21vZGUmPTUxMXw1MTI7bW9kZXw9MTYzODQ7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSwwKX0pLG1rZGV2OihmdW5jdGlvbihwYXRoLG1vZGUsZGV2KXtpZih0eXBlb2YgZGV2PT09InVuZGVmaW5lZCIpe2Rldj1tb2RlO21vZGU9NDM4fW1vZGV8PTgxOTI7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSxkZXYpfSksc3ltbGluazooZnVuY3Rpb24ob2xkcGF0aCxuZXdwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgobmV3cGF0aCx7cGFyZW50OnRydWV9KTt2YXIgcGFyZW50PWxvb2t1cC5ub2RlO3ZhciBuZXduYW1lPVBBVEguYmFzZW5hbWUobmV3cGF0aCk7dmFyIGVycj1GUy5tYXlDcmVhdGUocGFyZW50LG5ld25hbWUpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1pZighcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmsocGFyZW50LG5ld25hbWUsb2xkcGF0aCl9KSxyZW5hbWU6KGZ1bmN0aW9uKG9sZF9wYXRoLG5ld19wYXRoKXt2YXIgb2xkX2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG9sZF9wYXRoKTt2YXIgbmV3X2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG5ld19wYXRoKTt2YXIgb2xkX25hbWU9UEFUSC5iYXNlbmFtZShvbGRfcGF0aCk7dmFyIG5ld19uYW1lPVBBVEguYmFzZW5hbWUobmV3X3BhdGgpO3ZhciBsb29rdXAsb2xkX2RpcixuZXdfZGlyO3RyeXtsb29rdXA9RlMubG9va3VwUGF0aChvbGRfcGF0aCx7cGFyZW50OnRydWV9KTtvbGRfZGlyPWxvb2t1cC5ub2RlO2xvb2t1cD1GUy5sb29rdXBQYXRoKG5ld19wYXRoLHtwYXJlbnQ6dHJ1ZX0pO25ld19kaXI9bG9va3VwLm5vZGV9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfWlmKG9sZF9kaXIubW91bnQhPT1uZXdfZGlyLm1vdW50KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FWERFVil9dmFyIG9sZF9ub2RlPUZTLmxvb2t1cE5vZGUob2xkX2RpcixvbGRfbmFtZSk7dmFyIHJlbGF0aXZlPVBBVEgucmVsYXRpdmUob2xkX3BhdGgsbmV3X2Rpcm5hbWUpO2lmKHJlbGF0aXZlLmNoYXJBdCgwKSE9PSIuIil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1yZWxhdGl2ZT1QQVRILnJlbGF0aXZlKG5ld19wYXRoLG9sZF9kaXJuYW1lKTtpZihyZWxhdGl2ZS5jaGFyQXQoMCkhPT0iLiIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RFTVBUWSl9dmFyIG5ld19ub2RlO3RyeXtuZXdfbm9kZT1GUy5sb29rdXBOb2RlKG5ld19kaXIsbmV3X25hbWUpfWNhdGNoKGUpe31pZihvbGRfbm9kZT09PW5ld19ub2RlKXtyZXR1cm59dmFyIGlzZGlyPUZTLmlzRGlyKG9sZF9ub2RlLm1vZGUpO3ZhciBlcnI9RlMubWF5RGVsZXRlKG9sZF9kaXIsb2xkX25hbWUsaXNkaXIpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1lcnI9bmV3X25vZGU/RlMubWF5RGVsZXRlKG5ld19kaXIsbmV3X25hbWUsaXNkaXIpOkZTLm1heUNyZWF0ZShuZXdfZGlyLG5ld19uYW1lKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoIW9sZF9kaXIubm9kZV9vcHMucmVuYW1lKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9aWYoRlMuaXNNb3VudHBvaW50KG9sZF9ub2RlKXx8bmV3X25vZGUmJkZTLmlzTW91bnRwb2ludChuZXdfbm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKX1pZihuZXdfZGlyIT09b2xkX2Rpcil7ZXJyPUZTLm5vZGVQZXJtaXNzaW9ucyhvbGRfZGlyLCJ3Iik7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfX10cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsid2lsbE1vdmVQYXRoIl0pe0ZTLnRyYWNraW5nRGVsZWdhdGVbIndpbGxNb3ZlUGF0aCJdKG9sZF9wYXRoLG5ld19wYXRoKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxNb3ZlUGF0aCddKCciK29sZF9wYXRoKyInLCAnIituZXdfcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9RlMuaGFzaFJlbW92ZU5vZGUob2xkX25vZGUpO3RyeXtvbGRfZGlyLm5vZGVfb3BzLnJlbmFtZShvbGRfbm9kZSxuZXdfZGlyLG5ld19uYW1lKX1jYXRjaChlKXt0aHJvdyBlfWZpbmFsbHl7RlMuaGFzaEFkZE5vZGUob2xkX25vZGUpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJvbk1vdmVQYXRoIl0pRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25Nb3ZlUGF0aCJdKG9sZF9wYXRoLG5ld19wYXRoKX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25Nb3ZlUGF0aCddKCciK29sZF9wYXRoKyInLCAnIituZXdfcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9fSkscm1kaXI6KGZ1bmN0aW9uKHBhdGgpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgbm9kZT1GUy5sb29rdXBOb2RlKHBhcmVudCxuYW1lKTt2YXIgZXJyPUZTLm1heURlbGV0ZShwYXJlbnQsbmFtZSx0cnVlKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoIXBhcmVudC5ub2RlX29wcy5ybWRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKXtGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKHBhdGgpfX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1wYXJlbnQubm9kZV9vcHMucm1kaXIocGFyZW50LG5hbWUpO0ZTLmRlc3Ryb3lOb2RlKG5vZGUpO3RyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXSlGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXShwYXRoKX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25EZWxldGVQYXRoJ10oJyIrcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9fSkscmVhZGRpcjooZnVuY3Rpb24ocGF0aCl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7aWYoIW5vZGUubm9kZV9vcHMucmVhZGRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVERJUil9cmV0dXJuIG5vZGUubm9kZV9vcHMucmVhZGRpcihub2RlKX0pLHVubGluazooZnVuY3Rpb24ocGF0aCl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse3BhcmVudDp0cnVlfSk7dmFyIHBhcmVudD1sb29rdXAubm9kZTt2YXIgbmFtZT1QQVRILmJhc2VuYW1lKHBhdGgpO3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO3ZhciBlcnI9RlMubWF5RGVsZXRlKHBhcmVudCxuYW1lLGZhbHNlKTtpZihlcnIpe2lmKGVycj09PUVSUk5PX0NPREVTLkVJU0RJUillcnI9RVJSTk9fQ09ERVMuRVBFUk07dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1pZighcGFyZW50Lm5vZGVfb3BzLnVubGluayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKXtGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKHBhdGgpfX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1wYXJlbnQubm9kZV9vcHMudW5saW5rKHBhcmVudCxuYW1lKTtGUy5kZXN0cm95Tm9kZShub2RlKTt0cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25EZWxldGVQYXRoIl0pRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25EZWxldGVQYXRoIl0ocGF0aCl9Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uRGVsZXRlUGF0aCddKCciK3BhdGgrIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UpfX0pLHJlYWRsaW5rOihmdW5jdGlvbihwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCk7dmFyIGxpbms9bG9va3VwLm5vZGU7aWYoIWxpbmsubm9kZV9vcHMucmVhZGxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9cmV0dXJuIGxpbmsubm9kZV9vcHMucmVhZGxpbmsobGluayl9KSxzdGF0OihmdW5jdGlvbihwYXRoLGRvbnRGb2xsb3cpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IWRvbnRGb2xsb3d9KTt2YXIgbm9kZT1sb29rdXAubm9kZTtpZighbm9kZS5ub2RlX29wcy5nZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9cmV0dXJuIG5vZGUubm9kZV9vcHMuZ2V0YXR0cihub2RlKX0pLGxzdGF0OihmdW5jdGlvbihwYXRoKXtyZXR1cm4gRlMuc3RhdChwYXRoLHRydWUpfSksY2htb2Q6KGZ1bmN0aW9uKHBhdGgsbW9kZSxkb250Rm9sbG93KXt2YXIgbm9kZTtpZih0eXBlb2YgcGF0aD09PSJzdHJpbmciKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250Rm9sbG93fSk7bm9kZT1sb29rdXAubm9kZX1lbHNle25vZGU9cGF0aH1pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse21vZGU6bW9kZSY0MDk1fG5vZGUubW9kZSZ+NDA5NSx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSksbGNobW9kOihmdW5jdGlvbihwYXRoLG1vZGUpe0ZTLmNobW9kKHBhdGgsbW9kZSx0cnVlKX0pLGZjaG1vZDooZnVuY3Rpb24oZmQsbW9kZSl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1GUy5jaG1vZChzdHJlYW0ubm9kZSxtb2RlKX0pLGNob3duOihmdW5jdGlvbihwYXRoLHVpZCxnaWQsZG9udEZvbGxvdyl7dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzohZG9udEZvbGxvd30pO25vZGU9bG9va3VwLm5vZGV9ZWxzZXtub2RlPXBhdGh9aWYoIW5vZGUubm9kZV9vcHMuc2V0YXR0cil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfW5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSksbGNob3duOihmdW5jdGlvbihwYXRoLHVpZCxnaWQpe0ZTLmNob3duKHBhdGgsdWlkLGdpZCx0cnVlKX0pLGZjaG93bjooZnVuY3Rpb24oZmQsdWlkLGdpZCl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1GUy5jaG93bihzdHJlYW0ubm9kZSx1aWQsZ2lkKX0pLHRydW5jYXRlOihmdW5jdGlvbihwYXRoLGxlbil7aWYobGVuPDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7bm9kZT1sb29rdXAubm9kZX1lbHNle25vZGU9cGF0aH1pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTRElSKX1pZighRlMuaXNGaWxlKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIGVycj1GUy5ub2RlUGVybWlzc2lvbnMobm9kZSwidyIpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1ub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSx7c2l6ZTpsZW4sdGltZXN0YW1wOkRhdGUubm93KCl9KX0pLGZ0cnVuY2F0ZTooZnVuY3Rpb24oZmQsbGVuKXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmZCk7aWYoIXN0cmVhbSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpfWlmKChzdHJlYW0uZmxhZ3MmMjA5NzE1NSk9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfUZTLnRydW5jYXRlKHN0cmVhbS5ub2RlLGxlbil9KSx1dGltZTooZnVuY3Rpb24ocGF0aCxhdGltZSxtdGltZSl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse3RpbWVzdGFtcDpNYXRoLm1heChhdGltZSxtdGltZSl9KX0pLG9wZW46KGZ1bmN0aW9uKHBhdGgsZmxhZ3MsbW9kZSxmZF9zdGFydCxmZF9lbmQpe2ZsYWdzPXR5cGVvZiBmbGFncz09PSJzdHJpbmciP0ZTLm1vZGVTdHJpbmdUb0ZsYWdzKGZsYWdzKTpmbGFnczttb2RlPXR5cGVvZiBtb2RlPT09InVuZGVmaW5lZCI/NDM4Om1vZGU7aWYoZmxhZ3MmNjQpe21vZGU9bW9kZSY0MDk1fDMyNzY4fWVsc2V7bW9kZT0wfXZhciBub2RlO2lmKHR5cGVvZiBwYXRoPT09Im9iamVjdCIpe25vZGU9cGF0aH1lbHNle3BhdGg9UEFUSC5ub3JtYWxpemUocGF0aCk7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IShmbGFncyYxMzEwNzIpfSk7bm9kZT1sb29rdXAubm9kZX1jYXRjaChlKXt9fWlmKGZsYWdzJjY0KXtpZihub2RlKXtpZihmbGFncyYxMjgpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVFWElTVCl9fWVsc2V7bm9kZT1GUy5ta25vZChwYXRoLG1vZGUsMCl9fWlmKCFub2RlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9FTlQpfWlmKEZTLmlzQ2hyZGV2KG5vZGUubW9kZSkpe2ZsYWdzJj1+NTEyfXZhciBlcnI9RlMubWF5T3Blbihub2RlLGZsYWdzKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoZmxhZ3MmNTEyKXtGUy50cnVuY2F0ZShub2RlLDApfWZsYWdzJj1+KDEyOHw1MTIpO3ZhciBzdHJlYW09RlMuY3JlYXRlU3RyZWFtKHtub2RlOm5vZGUscGF0aDpGUy5nZXRQYXRoKG5vZGUpLGZsYWdzOmZsYWdzLHNlZWthYmxlOnRydWUscG9zaXRpb246MCxzdHJlYW1fb3BzOm5vZGUuc3RyZWFtX29wcyx1bmdvdHRlbjpbXSxlcnJvcjpmYWxzZX0sZmRfc3RhcnQsZmRfZW5kKTtpZihzdHJlYW0uc3RyZWFtX29wcy5vcGVuKXtzdHJlYW0uc3RyZWFtX29wcy5vcGVuKHN0cmVhbSl9aWYoTW9kdWxlWyJsb2dSZWFkRmlsZXMiXSYmIShmbGFncyYxKSl7aWYoIUZTLnJlYWRGaWxlcylGUy5yZWFkRmlsZXM9e307aWYoIShwYXRoIGluIEZTLnJlYWRGaWxlcykpe0ZTLnJlYWRGaWxlc1twYXRoXT0xO01vZHVsZVsicHJpbnRFcnIiXSgicmVhZCBmaWxlOiAiK3BhdGgpfX10cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25PcGVuRmlsZSJdKXt2YXIgdHJhY2tpbmdGbGFncz0wO2lmKChmbGFncyYyMDk3MTU1KSE9PTEpe3RyYWNraW5nRmxhZ3N8PUZTLnRyYWNraW5nLm9wZW5GbGFncy5SRUFEfWlmKChmbGFncyYyMDk3MTU1KSE9PTApe3RyYWNraW5nRmxhZ3N8PUZTLnRyYWNraW5nLm9wZW5GbGFncy5XUklURX1GUy50cmFja2luZ0RlbGVnYXRlWyJvbk9wZW5GaWxlIl0ocGF0aCx0cmFja2luZ0ZsYWdzKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uT3BlbkZpbGUnXSgnIitwYXRoKyInLCBmbGFncykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9cmV0dXJuIHN0cmVhbX0pLGNsb3NlOihmdW5jdGlvbihzdHJlYW0pe3RyeXtpZihzdHJlYW0uc3RyZWFtX29wcy5jbG9zZSl7c3RyZWFtLnN0cmVhbV9vcHMuY2xvc2Uoc3RyZWFtKX19Y2F0Y2goZSl7dGhyb3cgZX1maW5hbGx5e0ZTLmNsb3NlU3RyZWFtKHN0cmVhbS5mZCl9fSksbGxzZWVrOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LHdoZW5jZSl7aWYoIXN0cmVhbS5zZWVrYWJsZXx8IXN0cmVhbS5zdHJlYW1fb3BzLmxsc2Vlayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKX1yZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubGxzZWVrKHN0cmVhbSxvZmZzZXQsd2hlbmNlKX0pLHJlYWQ6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbil7aWYobGVuZ3RoPDB8fHBvc2l0aW9uPDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1pZihGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTRElSKX1pZighc3RyZWFtLnN0cmVhbV9vcHMucmVhZCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgc2Vla2luZz10cnVlO2lmKHR5cGVvZiBwb3NpdGlvbj09PSJ1bmRlZmluZWQiKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247c2Vla2luZz1mYWxzZX1lbHNlIGlmKCFzdHJlYW0uc2Vla2FibGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSl9dmFyIGJ5dGVzUmVhZD1zdHJlYW0uc3RyZWFtX29wcy5yZWFkKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbik7aWYoIXNlZWtpbmcpc3RyZWFtLnBvc2l0aW9uKz1ieXRlc1JlYWQ7cmV0dXJuIGJ5dGVzUmVhZH0pLHdyaXRlOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24sY2FuT3duKXtpZihsZW5ndGg8MHx8cG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1pZigoc3RyZWFtLmZsYWdzJjIwOTcxNTUpPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpfWlmKEZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSVNESVIpfWlmKCFzdHJlYW0uc3RyZWFtX29wcy53cml0ZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgc2Vla2luZz10cnVlO2lmKHR5cGVvZiBwb3NpdGlvbj09PSJ1bmRlZmluZWQiKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247c2Vla2luZz1mYWxzZX1lbHNlIGlmKCFzdHJlYW0uc2Vla2FibGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSl9aWYoc3RyZWFtLmZsYWdzJjEwMjQpe0ZTLmxsc2VlayhzdHJlYW0sMCwyKX12YXIgYnl0ZXNXcml0dGVuPXN0cmVhbS5zdHJlYW1fb3BzLndyaXRlKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixjYW5Pd24pO2lmKCFzZWVraW5nKXN0cmVhbS5wb3NpdGlvbis9Ynl0ZXNXcml0dGVuO3RyeXtpZihzdHJlYW0ucGF0aCYmRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25Xcml0ZVRvRmlsZSJdKUZTLnRyYWNraW5nRGVsZWdhdGVbIm9uV3JpdGVUb0ZpbGUiXShzdHJlYW0ucGF0aCl9Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uV3JpdGVUb0ZpbGUnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1yZXR1cm4gYnl0ZXNXcml0dGVufSksYWxsb2NhdGU6KGZ1bmN0aW9uKHN0cmVhbSxvZmZzZXQsbGVuZ3RoKXtpZihvZmZzZXQ8MHx8bGVuZ3RoPD0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfWlmKChzdHJlYW0uZmxhZ3MmMjA5NzE1NSk9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQkFERil9aWYoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSYmIUZTLmlzRGlyKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLmFsbG9jYXRlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FT1BOT1RTVVBQKX1zdHJlYW0uc3RyZWFtX29wcy5hbGxvY2F0ZShzdHJlYW0sb2Zmc2V0LGxlbmd0aCl9KSxtbWFwOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24scHJvdCxmbGFncyl7aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVBQ0NFUyl9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLm1tYXApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLm1tYXAoc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLHByb3QsZmxhZ3MpfSksaW9jdGw6KGZ1bmN0aW9uKHN0cmVhbSxjbWQsYXJnKXtpZighc3RyZWFtLnN0cmVhbV9vcHMuaW9jdGwpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RUWSl9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLmlvY3RsKHN0cmVhbSxjbWQsYXJnKX0pLHJlYWRGaWxlOihmdW5jdGlvbihwYXRoLG9wdHMpe29wdHM9b3B0c3x8e307b3B0cy5mbGFncz1vcHRzLmZsYWdzfHwiciI7b3B0cy5lbmNvZGluZz1vcHRzLmVuY29kaW5nfHwiYmluYXJ5IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgcmV0O3ZhciBzdHJlYW09RlMub3BlbihwYXRoLG9wdHMuZmxhZ3MpO3ZhciBzdGF0PUZTLnN0YXQocGF0aCk7dmFyIGxlbmd0aD1zdGF0LnNpemU7dmFyIGJ1Zj1uZXcgVWludDhBcnJheShsZW5ndGgpO0ZTLnJlYWQoc3RyZWFtLGJ1ZiwwLGxlbmd0aCwwKTtpZihvcHRzLmVuY29kaW5nPT09InV0ZjgiKXtyZXQ9IiI7dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe3JldCs9dXRmOC5wcm9jZXNzQ0NoYXIoYnVmW2ldKX19ZWxzZSBpZihvcHRzLmVuY29kaW5nPT09ImJpbmFyeSIpe3JldD1idWZ9RlMuY2xvc2Uoc3RyZWFtKTtyZXR1cm4gcmV0fSksd3JpdGVGaWxlOihmdW5jdGlvbihwYXRoLGRhdGEsb3B0cyl7b3B0cz1vcHRzfHx7fTtvcHRzLmZsYWdzPW9wdHMuZmxhZ3N8fCJ3IjtvcHRzLmVuY29kaW5nPW9wdHMuZW5jb2Rpbmd8fCJ1dGY4IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgc3RyZWFtPUZTLm9wZW4ocGF0aCxvcHRzLmZsYWdzLG9wdHMubW9kZSk7aWYob3B0cy5lbmNvZGluZz09PSJ1dGY4Iil7dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjt2YXIgYnVmPW5ldyBVaW50OEFycmF5KHV0ZjgucHJvY2Vzc0pTU3RyaW5nKGRhdGEpKTtGUy53cml0ZShzdHJlYW0sYnVmLDAsYnVmLmxlbmd0aCwwLG9wdHMuY2FuT3duKX1lbHNlIGlmKG9wdHMuZW5jb2Rpbmc9PT0iYmluYXJ5Iil7RlMud3JpdGUoc3RyZWFtLGRhdGEsMCxkYXRhLmxlbmd0aCwwLG9wdHMuY2FuT3duKX1GUy5jbG9zZShzdHJlYW0pfSksY3dkOihmdW5jdGlvbigpe3JldHVybiBGUy5jdXJyZW50UGF0aH0pLGNoZGlyOihmdW5jdGlvbihwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OnRydWV9KTtpZighRlMuaXNEaXIobG9va3VwLm5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RESVIpfXZhciBlcnI9RlMubm9kZVBlcm1pc3Npb25zKGxvb2t1cC5ub2RlLCJ4Iik7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfUZTLmN1cnJlbnRQYXRoPWxvb2t1cC5wYXRofSksY3JlYXRlRGVmYXVsdERpcmVjdG9yaWVzOihmdW5jdGlvbigpe0ZTLm1rZGlyKCIvdG1wIil9KSxjcmVhdGVEZWZhdWx0RGV2aWNlczooZnVuY3Rpb24oKXtGUy5ta2RpcigiL2RldiIpO0ZTLnJlZ2lzdGVyRGV2aWNlKEZTLm1ha2VkZXYoMSwzKSx7cmVhZDooZnVuY3Rpb24oKXtyZXR1cm4gMH0pLHdyaXRlOihmdW5jdGlvbigpe3JldHVybiAwfSl9KTtGUy5ta2RldigiL2Rldi9udWxsIixGUy5tYWtlZGV2KDEsMykpO1RUWS5yZWdpc3RlcihGUy5tYWtlZGV2KDUsMCksVFRZLmRlZmF1bHRfdHR5X29wcyk7VFRZLnJlZ2lzdGVyKEZTLm1ha2VkZXYoNiwwKSxUVFkuZGVmYXVsdF90dHkxX29wcyk7RlMubWtkZXYoIi9kZXYvdHR5IixGUy5tYWtlZGV2KDUsMCkpO0ZTLm1rZGV2KCIvZGV2L3R0eTEiLEZTLm1ha2VkZXYoNiwwKSk7RlMubWtkaXIoIi9kZXYvc2htIik7RlMubWtkaXIoIi9kZXYvc2htL3RtcCIpfSksY3JlYXRlU3RhbmRhcmRTdHJlYW1zOihmdW5jdGlvbigpe2lmKE1vZHVsZVsic3RkaW4iXSl7RlMuY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkaW4iLE1vZHVsZVsic3RkaW4iXSl9ZWxzZXtGUy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3RkaW4iKX1pZihNb2R1bGVbInN0ZG91dCJdKXtGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRvdXQiLG51bGwsTW9kdWxlWyJzdGRvdXQiXSl9ZWxzZXtGUy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3Rkb3V0Iil9aWYoTW9kdWxlWyJzdGRlcnIiXSl7RlMuY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkZXJyIixudWxsLE1vZHVsZVsic3RkZXJyIl0pfWVsc2V7RlMuc3ltbGluaygiL2Rldi90dHkxIiwiL2Rldi9zdGRlcnIiKX12YXIgc3RkaW49RlMub3BlbigiL2Rldi9zdGRpbiIsInIiKTtIRUFQMzJbX3N0ZGluPj4yXT1GUy5nZXRQdHJGb3JTdHJlYW0oc3RkaW4pO2Fzc2VydChzdGRpbi5mZD09PTAsImludmFsaWQgaGFuZGxlIGZvciBzdGRpbiAoIitzdGRpbi5mZCsiKSIpO3ZhciBzdGRvdXQ9RlMub3BlbigiL2Rldi9zdGRvdXQiLCJ3Iik7SEVBUDMyW19zdGRvdXQ+PjJdPUZTLmdldFB0ckZvclN0cmVhbShzdGRvdXQpO2Fzc2VydChzdGRvdXQuZmQ9PT0xLCJpbnZhbGlkIGhhbmRsZSBmb3Igc3Rkb3V0ICgiK3N0ZG91dC5mZCsiKSIpO3ZhciBzdGRlcnI9RlMub3BlbigiL2Rldi9zdGRlcnIiLCJ3Iik7SEVBUDMyW19zdGRlcnI+PjJdPUZTLmdldFB0ckZvclN0cmVhbShzdGRlcnIpO2Fzc2VydChzdGRlcnIuZmQ9PT0yLCJpbnZhbGlkIGhhbmRsZSBmb3Igc3RkZXJyICgiK3N0ZGVyci5mZCsiKSIpfSksZW5zdXJlRXJybm9FcnJvcjooZnVuY3Rpb24oKXtpZihGUy5FcnJub0Vycm9yKXJldHVybjtGUy5FcnJub0Vycm9yPWZ1bmN0aW9uIEVycm5vRXJyb3IoZXJybm8pe3RoaXMuZXJybm89ZXJybm87Zm9yKHZhciBrZXkgaW4gRVJSTk9fQ09ERVMpe2lmKEVSUk5PX0NPREVTW2tleV09PT1lcnJubyl7dGhpcy5jb2RlPWtleTticmVha319dGhpcy5tZXNzYWdlPUVSUk5PX01FU1NBR0VTW2Vycm5vXX07RlMuRXJybm9FcnJvci5wcm90b3R5cGU9bmV3IEVycm9yO0ZTLkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPUZTLkVycm5vRXJyb3I7W0VSUk5PX0NPREVTLkVOT0VOVF0uZm9yRWFjaCgoZnVuY3Rpb24oY29kZSl7RlMuZ2VuZXJpY0Vycm9yc1tjb2RlXT1uZXcgRlMuRXJybm9FcnJvcihjb2RlKTtGUy5nZW5lcmljRXJyb3JzW2NvZGVdLnN0YWNrPSI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+In0pKX0pLHN0YXRpY0luaXQ6KGZ1bmN0aW9uKCl7RlMuZW5zdXJlRXJybm9FcnJvcigpO0ZTLm5hbWVUYWJsZT1uZXcgQXJyYXkoNDA5Nik7RlMubW91bnQoTUVNRlMse30sIi8iKTtGUy5jcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXMoKTtGUy5jcmVhdGVEZWZhdWx0RGV2aWNlcygpfSksaW5pdDooZnVuY3Rpb24oaW5wdXQsb3V0cHV0LGVycm9yKXthc3NlcnQoIUZTLmluaXQuaW5pdGlhbGl6ZWQsIkZTLmluaXQgd2FzIHByZXZpb3VzbHkgY2FsbGVkLiBJZiB5b3Ugd2FudCB0byBpbml0aWFsaXplIGxhdGVyIHdpdGggY3VzdG9tIHBhcmFtZXRlcnMsIHJlbW92ZSBhbnkgZWFybGllciBjYWxscyAobm90ZSB0aGF0IG9uZSBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgY29kZSkiKTtGUy5pbml0LmluaXRpYWxpemVkPXRydWU7RlMuZW5zdXJlRXJybm9FcnJvcigpO01vZHVsZVsic3RkaW4iXT1pbnB1dHx8TW9kdWxlWyJzdGRpbiJdO01vZHVsZVsic3Rkb3V0Il09b3V0cHV0fHxNb2R1bGVbInN0ZG91dCJdO01vZHVsZVsic3RkZXJyIl09ZXJyb3J8fE1vZHVsZVsic3RkZXJyIl07RlMuY3JlYXRlU3RhbmRhcmRTdHJlYW1zKCl9KSxxdWl0OihmdW5jdGlvbigpe0ZTLmluaXQuaW5pdGlhbGl6ZWQ9ZmFsc2U7Zm9yKHZhciBpPTA7aTxGUy5zdHJlYW1zLmxlbmd0aDtpKyspe3ZhciBzdHJlYW09RlMuc3RyZWFtc1tpXTtpZighc3RyZWFtKXtjb250aW51ZX1GUy5jbG9zZShzdHJlYW0pfX0pLGdldE1vZGU6KGZ1bmN0aW9uKGNhblJlYWQsY2FuV3JpdGUpe3ZhciBtb2RlPTA7aWYoY2FuUmVhZCltb2RlfD0yOTJ8NzM7aWYoY2FuV3JpdGUpbW9kZXw9MTQ2O3JldHVybiBtb2RlfSksam9pblBhdGg6KGZ1bmN0aW9uKHBhcnRzLGZvcmNlUmVsYXRpdmUpe3ZhciBwYXRoPVBBVEguam9pbi5hcHBseShudWxsLHBhcnRzKTtpZihmb3JjZVJlbGF0aXZlJiZwYXRoWzBdPT0iLyIpcGF0aD1wYXRoLnN1YnN0cigxKTtyZXR1cm4gcGF0aH0pLGFic29sdXRlUGF0aDooZnVuY3Rpb24ocmVsYXRpdmUsYmFzZSl7cmV0dXJuIFBBVEgucmVzb2x2ZShiYXNlLHJlbGF0aXZlKX0pLHN0YW5kYXJkaXplUGF0aDooZnVuY3Rpb24ocGF0aCl7cmV0dXJuIFBBVEgubm9ybWFsaXplKHBhdGgpfSksZmluZE9iamVjdDooZnVuY3Rpb24ocGF0aCxkb250UmVzb2x2ZUxhc3RMaW5rKXt2YXIgcmV0PUZTLmFuYWx5emVQYXRoKHBhdGgsZG9udFJlc29sdmVMYXN0TGluayk7aWYocmV0LmV4aXN0cyl7cmV0dXJuIHJldC5vYmplY3R9ZWxzZXtfX19zZXRFcnJObyhyZXQuZXJyb3IpO3JldHVybiBudWxsfX0pLGFuYWx5emVQYXRoOihmdW5jdGlvbihwYXRoLGRvbnRSZXNvbHZlTGFzdExpbmspe3RyeXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250UmVzb2x2ZUxhc3RMaW5rfSk7cGF0aD1sb29rdXAucGF0aH1jYXRjaChlKXt9dmFyIHJldD17aXNSb290OmZhbHNlLGV4aXN0czpmYWxzZSxlcnJvcjowLG5hbWU6bnVsbCxwYXRoOm51bGwsb2JqZWN0Om51bGwscGFyZW50RXhpc3RzOmZhbHNlLHBhcmVudFBhdGg6bnVsbCxwYXJlbnRPYmplY3Q6bnVsbH07dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3JldC5wYXJlbnRFeGlzdHM9dHJ1ZTtyZXQucGFyZW50UGF0aD1sb29rdXAucGF0aDtyZXQucGFyZW50T2JqZWN0PWxvb2t1cC5ub2RlO3JldC5uYW1lPVBBVEguYmFzZW5hbWUocGF0aCk7bG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250UmVzb2x2ZUxhc3RMaW5rfSk7cmV0LmV4aXN0cz10cnVlO3JldC5wYXRoPWxvb2t1cC5wYXRoO3JldC5vYmplY3Q9bG9va3VwLm5vZGU7cmV0Lm5hbWU9bG9va3VwLm5vZGUubmFtZTtyZXQuaXNSb290PWxvb2t1cC5wYXRoPT09Ii8ifWNhdGNoKGUpe3JldC5lcnJvcj1lLmVycm5vfXJldHVybiByZXR9KSxjcmVhdGVGb2xkZXI6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLGNhblJlYWQsY2FuV3JpdGUpe3ZhciBwYXRoPVBBVEguam9pbjIodHlwZW9mIHBhcmVudD09PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCksbmFtZSk7dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTtyZXR1cm4gRlMubWtkaXIocGF0aCxtb2RlKX0pLGNyZWF0ZVBhdGg6KGZ1bmN0aW9uKHBhcmVudCxwYXRoLGNhblJlYWQsY2FuV3JpdGUpe3BhcmVudD10eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KTt2YXIgcGFydHM9cGF0aC5zcGxpdCgiLyIpLnJldmVyc2UoKTt3aGlsZShwYXJ0cy5sZW5ndGgpe3ZhciBwYXJ0PXBhcnRzLnBvcCgpO2lmKCFwYXJ0KWNvbnRpbnVlO3ZhciBjdXJyZW50PVBBVEguam9pbjIocGFyZW50LHBhcnQpO3RyeXtGUy5ta2RpcihjdXJyZW50KX1jYXRjaChlKXt9cGFyZW50PWN1cnJlbnR9cmV0dXJuIGN1cnJlbnR9KSxjcmVhdGVGaWxlOihmdW5jdGlvbihwYXJlbnQsbmFtZSxwcm9wZXJ0aWVzLGNhblJlYWQsY2FuV3JpdGUpe3ZhciBwYXRoPVBBVEguam9pbjIodHlwZW9mIHBhcmVudD09PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCksbmFtZSk7dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTtyZXR1cm4gRlMuY3JlYXRlKHBhdGgsbW9kZSl9KSxjcmVhdGVEYXRhRmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsZGF0YSxjYW5SZWFkLGNhbldyaXRlLGNhbk93bil7dmFyIHBhdGg9bmFtZT9QQVRILmpvaW4yKHR5cGVvZiBwYXJlbnQ9PT0ic3RyaW5nIj9wYXJlbnQ6RlMuZ2V0UGF0aChwYXJlbnQpLG5hbWUpOnBhcmVudDt2YXIgbW9kZT1GUy5nZXRNb2RlKGNhblJlYWQsY2FuV3JpdGUpO3ZhciBub2RlPUZTLmNyZWF0ZShwYXRoLG1vZGUpO2lmKGRhdGEpe2lmKHR5cGVvZiBkYXRhPT09InN0cmluZyIpe3ZhciBhcnI9bmV3IEFycmF5KGRhdGEubGVuZ3RoKTtmb3IodmFyIGk9MCxsZW49ZGF0YS5sZW5ndGg7aTxsZW47KytpKWFycltpXT1kYXRhLmNoYXJDb2RlQXQoaSk7ZGF0YT1hcnJ9RlMuY2htb2Qobm9kZSxtb2RlfDE0Nik7dmFyIHN0cmVhbT1GUy5vcGVuKG5vZGUsInciKTtGUy53cml0ZShzdHJlYW0sZGF0YSwwLGRhdGEubGVuZ3RoLDAsY2FuT3duKTtGUy5jbG9zZShzdHJlYW0pO0ZTLmNobW9kKG5vZGUsbW9kZSl9cmV0dXJuIG5vZGV9KSxjcmVhdGVEZXZpY2U6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLGlucHV0LG91dHB1dCl7dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KSxuYW1lKTt2YXIgbW9kZT1GUy5nZXRNb2RlKCEhaW5wdXQsISFvdXRwdXQpO2lmKCFGUy5jcmVhdGVEZXZpY2UubWFqb3IpRlMuY3JlYXRlRGV2aWNlLm1ham9yPTY0O3ZhciBkZXY9RlMubWFrZWRldihGUy5jcmVhdGVEZXZpY2UubWFqb3IrKywwKTtGUy5yZWdpc3RlckRldmljZShkZXYse29wZW46KGZ1bmN0aW9uKHN0cmVhbSl7c3RyZWFtLnNlZWthYmxlPWZhbHNlfSksY2xvc2U6KGZ1bmN0aW9uKHN0cmVhbSl7aWYob3V0cHV0JiZvdXRwdXQuYnVmZmVyJiZvdXRwdXQuYnVmZmVyLmxlbmd0aCl7b3V0cHV0KDEwKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zKXt2YXIgYnl0ZXNSZWFkPTA7Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSsrKXt2YXIgcmVzdWx0O3RyeXtyZXN1bHQ9aW5wdXQoKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfWlmKHJlc3VsdD09PXVuZGVmaW5lZCYmYnl0ZXNSZWFkPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX1pZihyZXN1bHQ9PT1udWxsfHxyZXN1bHQ9PT11bmRlZmluZWQpYnJlYWs7Ynl0ZXNSZWFkKys7YnVmZmVyW29mZnNldCtpXT1yZXN1bHR9aWYoYnl0ZXNSZWFkKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKX1yZXR1cm4gYnl0ZXNSZWFkfSksd3JpdGU6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3Mpe2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dHJ5e291dHB1dChidWZmZXJbb2Zmc2V0K2ldKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfX1pZihsZW5ndGgpe3N0cmVhbS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpfXJldHVybiBpfSl9KTtyZXR1cm4gRlMubWtkZXYocGF0aCxtb2RlLGRldil9KSxjcmVhdGVMaW5rOihmdW5jdGlvbihwYXJlbnQsbmFtZSx0YXJnZXQsY2FuUmVhZCxjYW5Xcml0ZSl7dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KSxuYW1lKTtyZXR1cm4gRlMuc3ltbGluayh0YXJnZXQscGF0aCl9KSxmb3JjZUxvYWRGaWxlOihmdW5jdGlvbihvYmope2lmKG9iai5pc0RldmljZXx8b2JqLmlzRm9sZGVyfHxvYmoubGlua3x8b2JqLmNvbnRlbnRzKXJldHVybiB0cnVlO3ZhciBzdWNjZXNzPXRydWU7aWYodHlwZW9mIFhNTEh0dHBSZXF1ZXN0IT09InVuZGVmaW5lZCIpe3Rocm93IG5ldyBFcnJvcigiTGF6eSBsb2FkaW5nIHNob3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIChjb250ZW50cyBzZXQpIGluIGNyZWF0ZUxhenlGaWxlLCBidXQgaXQgd2FzIG5vdC4gTGF6eSBsb2FkaW5nIG9ubHkgd29ya3MgaW4gd2ViIHdvcmtlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyBvbiB0aGUgbWFpbiB0aHJlYWQuIil9ZWxzZSBpZihNb2R1bGVbInJlYWQiXSl7dHJ5e29iai5jb250ZW50cz1pbnRBcnJheUZyb21TdHJpbmcoTW9kdWxlWyJyZWFkIl0ob2JqLnVybCksdHJ1ZSl9Y2F0Y2goZSl7c3VjY2Vzcz1mYWxzZX19ZWxzZXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIHdpdGhvdXQgcmVhZCgpIG9yIFhNTEh0dHBSZXF1ZXN0LiIpfWlmKCFzdWNjZXNzKV9fX3NldEVyck5vKEVSUk5PX0NPREVTLkVJTyk7cmV0dXJuIHN1Y2Nlc3N9KSxjcmVhdGVMYXp5RmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUpe2Z1bmN0aW9uIExhenlVaW50OEFycmF5KCl7dGhpcy5sZW5ndGhLbm93bj1mYWxzZTt0aGlzLmNodW5rcz1bXX1MYXp5VWludDhBcnJheS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIExhenlVaW50OEFycmF5X2dldChpZHgpe2lmKGlkeD50aGlzLmxlbmd0aC0xfHxpZHg8MCl7cmV0dXJuIHVuZGVmaW5lZH12YXIgY2h1bmtPZmZzZXQ9aWR4JXRoaXMuY2h1bmtTaXplO3ZhciBjaHVua051bT1NYXRoLmZsb29yKGlkeC90aGlzLmNodW5rU2l6ZSk7cmV0dXJuIHRoaXMuZ2V0dGVyKGNodW5rTnVtKVtjaHVua09mZnNldF19O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5zZXREYXRhR2V0dGVyPWZ1bmN0aW9uIExhenlVaW50OEFycmF5X3NldERhdGFHZXR0ZXIoZ2V0dGVyKXt0aGlzLmdldHRlcj1nZXR0ZXJ9O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5jYWNoZUxlbmd0aD1mdW5jdGlvbiBMYXp5VWludDhBcnJheV9jYWNoZUxlbmd0aCgpe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJIRUFEIix1cmwsZmFsc2UpO3hoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTt2YXIgZGF0YWxlbmd0aD1OdW1iZXIoeGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKTt2YXIgaGVhZGVyO3ZhciBoYXNCeXRlU2VydmluZz0oaGVhZGVyPXhoci5nZXRSZXNwb25zZUhlYWRlcigiQWNjZXB0LVJhbmdlcyIpKSYmaGVhZGVyPT09ImJ5dGVzIjt2YXIgY2h1bmtTaXplPTEwMjQqMTAyNDtpZighaGFzQnl0ZVNlcnZpbmcpY2h1bmtTaXplPWRhdGFsZW5ndGg7dmFyIGRvWEhSPShmdW5jdGlvbihmcm9tLHRvKXtpZihmcm9tPnRvKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCByYW5nZSAoIitmcm9tKyIsICIrdG8rIikgb3Igbm8gYnl0ZXMgcmVxdWVzdGVkISIpO2lmKHRvPmRhdGFsZW5ndGgtMSl0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIitkYXRhbGVuZ3RoKyIgYnl0ZXMgYXZhaWxhYmxlISBwcm9ncmFtbWVyIGVycm9yISIpO3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7aWYoZGF0YWxlbmd0aCE9PWNodW5rU2l6ZSl4aHIuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCJieXRlcz0iK2Zyb20rIi0iK3RvKTtpZih0eXBlb2YgVWludDhBcnJheSE9InVuZGVmaW5lZCIpeGhyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO2lmKHhoci5vdmVycmlkZU1pbWVUeXBlKXt4aHIub3ZlcnJpZGVNaW1lVHlwZSgidGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCIpfXhoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTtpZih4aHIucmVzcG9uc2UhPT11bmRlZmluZWQpe3JldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2V8fFtdKX1lbHNle3JldHVybiBpbnRBcnJheUZyb21TdHJpbmcoeGhyLnJlc3BvbnNlVGV4dHx8IiIsdHJ1ZSl9fSk7dmFyIGxhenlBcnJheT10aGlzO2xhenlBcnJheS5zZXREYXRhR2V0dGVyKChmdW5jdGlvbihjaHVua051bSl7dmFyIHN0YXJ0PWNodW5rTnVtKmNodW5rU2l6ZTt2YXIgZW5kPShjaHVua051bSsxKSpjaHVua1NpemUtMTtlbmQ9TWF0aC5taW4oZW5kLGRhdGFsZW5ndGgtMSk7aWYodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPT09InVuZGVmaW5lZCIpe2xhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPWRvWEhSKHN0YXJ0LGVuZCl9aWYodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPT09InVuZGVmaW5lZCIpdGhyb3cgbmV3IEVycm9yKCJkb1hIUiBmYWlsZWQhIik7cmV0dXJuIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dfSkpO3RoaXMuX2xlbmd0aD1kYXRhbGVuZ3RoO3RoaXMuX2NodW5rU2l6ZT1jaHVua1NpemU7dGhpcy5sZW5ndGhLbm93bj10cnVlfTtpZih0eXBlb2YgWE1MSHR0cFJlcXVlc3QhPT0idW5kZWZpbmVkIil7aWYoIUVOVklST05NRU5UX0lTX1dPUktFUil0aHJvdyJDYW5ub3QgZG8gc3luY2hyb25vdXMgYmluYXJ5IFhIUnMgb3V0c2lkZSB3ZWJ3b3JrZXJzIGluIG1vZGVybiBicm93c2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjIjt2YXIgbGF6eUFycmF5PW5ldyBMYXp5VWludDhBcnJheTtPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCJsZW5ndGgiLHtnZXQ6KGZ1bmN0aW9uKCl7aWYoIXRoaXMubGVuZ3RoS25vd24pe3RoaXMuY2FjaGVMZW5ndGgoKX1yZXR1cm4gdGhpcy5fbGVuZ3RofSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCJjaHVua1NpemUiLHtnZXQ6KGZ1bmN0aW9uKCl7aWYoIXRoaXMubGVuZ3RoS25vd24pe3RoaXMuY2FjaGVMZW5ndGgoKX1yZXR1cm4gdGhpcy5fY2h1bmtTaXplfSl9KTt2YXIgcHJvcGVydGllcz17aXNEZXZpY2U6ZmFsc2UsY29udGVudHM6bGF6eUFycmF5fX1lbHNle3ZhciBwcm9wZXJ0aWVzPXtpc0RldmljZTpmYWxzZSx1cmw6dXJsfX12YXIgbm9kZT1GUy5jcmVhdGVGaWxlKHBhcmVudCxuYW1lLHByb3BlcnRpZXMsY2FuUmVhZCxjYW5Xcml0ZSk7aWYocHJvcGVydGllcy5jb250ZW50cyl7bm9kZS5jb250ZW50cz1wcm9wZXJ0aWVzLmNvbnRlbnRzfWVsc2UgaWYocHJvcGVydGllcy51cmwpe25vZGUuY29udGVudHM9bnVsbDtub2RlLnVybD1wcm9wZXJ0aWVzLnVybH12YXIgc3RyZWFtX29wcz17fTt2YXIga2V5cz1PYmplY3Qua2V5cyhub2RlLnN0cmVhbV9vcHMpO2tleXMuZm9yRWFjaCgoZnVuY3Rpb24oa2V5KXt2YXIgZm49bm9kZS5zdHJlYW1fb3BzW2tleV07c3RyZWFtX29wc1trZXldPWZ1bmN0aW9uIGZvcmNlTG9hZExhenlGaWxlKCl7aWYoIUZTLmZvcmNlTG9hZEZpbGUobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyl9cmV0dXJuIGZuLmFwcGx5KG51bGwsYXJndW1lbnRzKX19KSk7c3RyZWFtX29wcy5yZWFkPWZ1bmN0aW9uIHN0cmVhbV9vcHNfcmVhZChzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe2lmKCFGUy5mb3JjZUxvYWRGaWxlKG5vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfXZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50cztpZihwb3NpdGlvbj49Y29udGVudHMubGVuZ3RoKXJldHVybiAwO3ZhciBzaXplPU1hdGgubWluKGNvbnRlbnRzLmxlbmd0aC1wb3NpdGlvbixsZW5ndGgpO2Fzc2VydChzaXplPj0wKTtpZihjb250ZW50cy5zbGljZSl7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXX19ZWxzZXtmb3IodmFyIGk9MDtpPHNpemU7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPWNvbnRlbnRzLmdldChwb3NpdGlvbitpKX19cmV0dXJuIHNpemV9O25vZGUuc3RyZWFtX29wcz1zdHJlYW1fb3BzO3JldHVybiBub2RlfSksY3JlYXRlUHJlbG9hZGVkRmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUsb25sb2FkLG9uZXJyb3IsZG9udENyZWF0ZUZpbGUsY2FuT3duKXtCcm93c2VyLmluaXQoKTt2YXIgZnVsbG5hbWU9bmFtZT9QQVRILnJlc29sdmUoUEFUSC5qb2luMihwYXJlbnQsbmFtZSkpOnBhcmVudDtmdW5jdGlvbiBwcm9jZXNzRGF0YShieXRlQXJyYXkpe2Z1bmN0aW9uIGZpbmlzaChieXRlQXJyYXkpe2lmKCFkb250Q3JlYXRlRmlsZSl7RlMuY3JlYXRlRGF0YUZpbGUocGFyZW50LG5hbWUsYnl0ZUFycmF5LGNhblJlYWQsY2FuV3JpdGUsY2FuT3duKX1pZihvbmxvYWQpb25sb2FkKCk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgiY3AgIitmdWxsbmFtZSl9dmFyIGhhbmRsZWQ9ZmFsc2U7TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLmZvckVhY2goKGZ1bmN0aW9uKHBsdWdpbil7aWYoaGFuZGxlZClyZXR1cm47aWYocGx1Z2luWyJjYW5IYW5kbGUiXShmdWxsbmFtZSkpe3BsdWdpblsiaGFuZGxlIl0oYnl0ZUFycmF5LGZ1bGxuYW1lLGZpbmlzaCwoZnVuY3Rpb24oKXtpZihvbmVycm9yKW9uZXJyb3IoKTtyZW1vdmVSdW5EZXBlbmRlbmN5KCJjcCAiK2Z1bGxuYW1lKX0pKTtoYW5kbGVkPXRydWV9fSkpO2lmKCFoYW5kbGVkKWZpbmlzaChieXRlQXJyYXkpfWFkZFJ1bkRlcGVuZGVuY3koImNwICIrZnVsbG5hbWUpO2lmKHR5cGVvZiB1cmw9PSJzdHJpbmciKXtCcm93c2VyLmFzeW5jTG9hZCh1cmwsKGZ1bmN0aW9uKGJ5dGVBcnJheSl7cHJvY2Vzc0RhdGEoYnl0ZUFycmF5KX0pLG9uZXJyb3IpfWVsc2V7cHJvY2Vzc0RhdGEodXJsKX19KSxpbmRleGVkREI6KGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5pbmRleGVkREJ8fHdpbmRvdy5tb3pJbmRleGVkREJ8fHdpbmRvdy53ZWJraXRJbmRleGVkREJ8fHdpbmRvdy5tc0luZGV4ZWREQn0pLERCX05BTUU6KGZ1bmN0aW9uKCl7cmV0dXJuIkVNX0ZTXyIrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSksREJfVkVSU0lPTjoyMCxEQl9TVE9SRV9OQU1FOiJGSUxFX0RBVEEiLHNhdmVGaWxlc1RvREI6KGZ1bmN0aW9uKHBhdGhzLG9ubG9hZCxvbmVycm9yKXtvbmxvYWQ9b25sb2FkfHwoZnVuY3Rpb24oKXt9KTtvbmVycm9yPW9uZXJyb3J8fChmdW5jdGlvbigpe30pO3ZhciBpbmRleGVkREI9RlMuaW5kZXhlZERCKCk7dHJ5e3ZhciBvcGVuUmVxdWVzdD1pbmRleGVkREIub3BlbihGUy5EQl9OQU1FKCksRlMuREJfVkVSU0lPTil9Y2F0Y2goZSl7cmV0dXJuIG9uZXJyb3IoZSl9b3BlblJlcXVlc3Qub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uIG9wZW5SZXF1ZXN0X29udXBncmFkZW5lZWRlZCgpe2NvbnNvbGUubG9nKCJjcmVhdGluZyBkYiIpO3ZhciBkYj1vcGVuUmVxdWVzdC5yZXN1bHQ7ZGIuY3JlYXRlT2JqZWN0U3RvcmUoRlMuREJfU1RPUkVfTkFNRSl9O29wZW5SZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3MoKXt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3ZhciB0cmFuc2FjdGlvbj1kYi50cmFuc2FjdGlvbihbRlMuREJfU1RPUkVfTkFNRV0sInJlYWR3cml0ZSIpO3ZhciBmaWxlcz10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTt2YXIgb2s9MCxmYWlsPTAsdG90YWw9cGF0aHMubGVuZ3RoO2Z1bmN0aW9uIGZpbmlzaCgpe2lmKGZhaWw9PTApb25sb2FkKCk7ZWxzZSBvbmVycm9yKCl9cGF0aHMuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCl7dmFyIHB1dFJlcXVlc3Q9ZmlsZXMucHV0KEZTLmFuYWx5emVQYXRoKHBhdGgpLm9iamVjdC5jb250ZW50cyxwYXRoKTtwdXRSZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBwdXRSZXF1ZXN0X29uc3VjY2Vzcygpe29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9O3B1dFJlcXVlc3Qub25lcnJvcj1mdW5jdGlvbiBwdXRSZXF1ZXN0X29uZXJyb3IoKXtmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9fSkpO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcn07b3BlblJlcXVlc3Qub25lcnJvcj1vbmVycm9yfSksbG9hZEZpbGVzRnJvbURCOihmdW5jdGlvbihwYXRocyxvbmxvYWQsb25lcnJvcil7b25sb2FkPW9ubG9hZHx8KGZ1bmN0aW9uKCl7fSk7b25lcnJvcj1vbmVycm9yfHwoZnVuY3Rpb24oKXt9KTt2YXIgaW5kZXhlZERCPUZTLmluZGV4ZWREQigpO3RyeXt2YXIgb3BlblJlcXVlc3Q9aW5kZXhlZERCLm9wZW4oRlMuREJfTkFNRSgpLEZTLkRCX1ZFUlNJT04pfWNhdGNoKGUpe3JldHVybiBvbmVycm9yKGUpfW9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZD1vbmVycm9yO29wZW5SZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3MoKXt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3RyeXt2YXIgdHJhbnNhY3Rpb249ZGIudHJhbnNhY3Rpb24oW0ZTLkRCX1NUT1JFX05BTUVdLCJyZWFkb25seSIpfWNhdGNoKGUpe29uZXJyb3IoZSk7cmV0dXJufXZhciBmaWxlcz10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTt2YXIgb2s9MCxmYWlsPTAsdG90YWw9cGF0aHMubGVuZ3RoO2Z1bmN0aW9uIGZpbmlzaCgpe2lmKGZhaWw9PTApb25sb2FkKCk7ZWxzZSBvbmVycm9yKCl9cGF0aHMuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCl7dmFyIGdldFJlcXVlc3Q9ZmlsZXMuZ2V0KHBhdGgpO2dldFJlcXVlc3Qub25zdWNjZXNzPWZ1bmN0aW9uIGdldFJlcXVlc3Rfb25zdWNjZXNzKCl7aWYoRlMuYW5hbHl6ZVBhdGgocGF0aCkuZXhpc3RzKXtGUy51bmxpbmsocGF0aCl9RlMuY3JlYXRlRGF0YUZpbGUoUEFUSC5kaXJuYW1lKHBhdGgpLFBBVEguYmFzZW5hbWUocGF0aCksZ2V0UmVxdWVzdC5yZXN1bHQsdHJ1ZSx0cnVlLHRydWUpO29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9O2dldFJlcXVlc3Qub25lcnJvcj1mdW5jdGlvbiBnZXRSZXF1ZXN0X29uZXJyb3IoKXtmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9fSkpO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcn07b3BlblJlcXVlc3Qub25lcnJvcj1vbmVycm9yfSl9O2Z1bmN0aW9uIF9mZmx1c2goc3RyZWFtKXt9TW9kdWxlWyJfc3RybGVuIl09X3N0cmxlbjtmdW5jdGlvbiBfX3JlYWxseU5lZ2F0aXZlKHgpe3JldHVybiB4PDB8fHg9PT0wJiYxL3g9PT0tSW5maW5pdHl9ZnVuY3Rpb24gX19mb3JtYXRTdHJpbmcoZm9ybWF0LHZhcmFyZ3Mpe3ZhciB0ZXh0SW5kZXg9Zm9ybWF0O3ZhciBhcmdJbmRleD0wO2Z1bmN0aW9uIGdldE5leHRBcmcodHlwZSl7dmFyIHJldDtpZih0eXBlPT09ImRvdWJsZSIpe3JldD0oSEVBUDMyW3RlbXBEb3VibGVQdHI+PjJdPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXSxIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1IRUFQMzJbdmFyYXJncysoYXJnSW5kZXgrNCk+PjJdLCtIRUFQRjY0W3RlbXBEb3VibGVQdHI+PjNdKX1lbHNlIGlmKHR5cGU9PSJpNjQiKXtyZXQ9W0hFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXSxIRUFQMzJbdmFyYXJncysoYXJnSW5kZXgrNCk+PjJdXX1lbHNle3R5cGU9ImkzMiI7cmV0PUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXX1hcmdJbmRleCs9UnVudGltZS5nZXROYXRpdmVGaWVsZFNpemUodHlwZSk7cmV0dXJuIHJldH12YXIgcmV0PVtdO3ZhciBjdXJyLG5leHQsY3VyckFyZzt3aGlsZSgxKXt2YXIgc3RhcnRUZXh0SW5kZXg9dGV4dEluZGV4O2N1cnI9SEVBUDhbdGV4dEluZGV4Pj4wXTtpZihjdXJyPT09MClicmVhaztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtpZihjdXJyPT0zNyl7dmFyIGZsYWdBbHdheXNTaWduZWQ9ZmFsc2U7dmFyIGZsYWdMZWZ0QWxpZ249ZmFsc2U7dmFyIGZsYWdBbHRlcm5hdGl2ZT1mYWxzZTt2YXIgZmxhZ1plcm9QYWQ9ZmFsc2U7dmFyIGZsYWdQYWRTaWduPWZhbHNlO2ZsYWdzTG9vcDp3aGlsZSgxKXtzd2l0Y2gobmV4dCl7Y2FzZSA0MzpmbGFnQWx3YXlzU2lnbmVkPXRydWU7YnJlYWs7Y2FzZSA0NTpmbGFnTGVmdEFsaWduPXRydWU7YnJlYWs7Y2FzZSAzNTpmbGFnQWx0ZXJuYXRpdmU9dHJ1ZTticmVhaztjYXNlIDQ4OmlmKGZsYWdaZXJvUGFkKXticmVhayBmbGFnc0xvb3B9ZWxzZXtmbGFnWmVyb1BhZD10cnVlO2JyZWFrfTtjYXNlIDMyOmZsYWdQYWRTaWduPXRydWU7YnJlYWs7ZGVmYXVsdDpicmVhayBmbGFnc0xvb3B9dGV4dEluZGV4Kys7bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19dmFyIHdpZHRoPTA7aWYobmV4dD09NDIpe3dpZHRoPWdldE5leHRBcmcoImkzMiIpO3RleHRJbmRleCsrO25leHQ9SEVBUDhbdGV4dEluZGV4KzE+PjBdfWVsc2V7d2hpbGUobmV4dD49NDgmJm5leHQ8PTU3KXt3aWR0aD13aWR0aCoxMCsobmV4dC00OCk7dGV4dEluZGV4Kys7bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19fXZhciBwcmVjaXNpb25TZXQ9ZmFsc2UscHJlY2lzaW9uPS0xO2lmKG5leHQ9PTQ2KXtwcmVjaXNpb249MDtwcmVjaXNpb25TZXQ9dHJ1ZTt0ZXh0SW5kZXgrKztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtpZihuZXh0PT00Mil7cHJlY2lzaW9uPWdldE5leHRBcmcoImkzMiIpO3RleHRJbmRleCsrfWVsc2V7d2hpbGUoMSl7dmFyIHByZWNpc2lvbkNocj1IRUFQOFt0ZXh0SW5kZXgrMT4+MF07aWYocHJlY2lzaW9uQ2hyPDQ4fHxwcmVjaXNpb25DaHI+NTcpYnJlYWs7cHJlY2lzaW9uPXByZWNpc2lvbioxMCsocHJlY2lzaW9uQ2hyLTQ4KTt0ZXh0SW5kZXgrK319bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19aWYocHJlY2lzaW9uPDApe3ByZWNpc2lvbj02O3ByZWNpc2lvblNldD1mYWxzZX12YXIgYXJnU2l6ZTtzd2l0Y2goU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0KSl7Y2FzZSJoIjp2YXIgbmV4dE5leHQ9SEVBUDhbdGV4dEluZGV4KzI+PjBdO2lmKG5leHROZXh0PT0xMDQpe3RleHRJbmRleCsrO2FyZ1NpemU9MX1lbHNle2FyZ1NpemU9Mn1icmVhaztjYXNlImwiOnZhciBuZXh0TmV4dD1IRUFQOFt0ZXh0SW5kZXgrMj4+MF07aWYobmV4dE5leHQ9PTEwOCl7dGV4dEluZGV4Kys7YXJnU2l6ZT04fWVsc2V7YXJnU2l6ZT00fWJyZWFrO2Nhc2UiTCI6Y2FzZSJxIjpjYXNlImoiOmFyZ1NpemU9ODticmVhaztjYXNlInoiOmNhc2UidCI6Y2FzZSJJIjphcmdTaXplPTQ7YnJlYWs7ZGVmYXVsdDphcmdTaXplPW51bGx9aWYoYXJnU2l6ZSl0ZXh0SW5kZXgrKztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtzd2l0Y2goU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0KSl7Y2FzZSJkIjpjYXNlImkiOmNhc2UidSI6Y2FzZSJvIjpjYXNlIngiOmNhc2UiWCI6Y2FzZSJwIjp7dmFyIHNpZ25lZD1uZXh0PT0xMDB8fG5leHQ9PTEwNTthcmdTaXplPWFyZ1NpemV8fDQ7dmFyIGN1cnJBcmc9Z2V0TmV4dEFyZygiaSIrYXJnU2l6ZSo4KTt2YXIgb3JpZ0FyZz1jdXJyQXJnO3ZhciBhcmdUZXh0O2lmKGFyZ1NpemU9PTgpe2N1cnJBcmc9UnVudGltZS5tYWtlQmlnSW50KGN1cnJBcmdbMF0sY3VyckFyZ1sxXSxuZXh0PT0xMTcpfWlmKGFyZ1NpemU8PTQpe3ZhciBsaW1pdD1NYXRoLnBvdygyNTYsYXJnU2l6ZSktMTtjdXJyQXJnPShzaWduZWQ/cmVTaWduOnVuU2lnbikoY3VyckFyZyZsaW1pdCxhcmdTaXplKjgpfXZhciBjdXJyQWJzQXJnPU1hdGguYWJzKGN1cnJBcmcpO3ZhciBwcmVmaXg9IiI7aWYobmV4dD09MTAwfHxuZXh0PT0xMDUpe2lmKGFyZ1NpemU9PTgmJmk2NE1hdGgpYXJnVGV4dD1pNjRNYXRoLnN0cmluZ2lmeShvcmlnQXJnWzBdLG9yaWdBcmdbMV0sbnVsbCk7ZWxzZSBhcmdUZXh0PXJlU2lnbihjdXJyQXJnLDgqYXJnU2l6ZSwxKS50b1N0cmluZygxMCl9ZWxzZSBpZihuZXh0PT0xMTcpe2lmKGFyZ1NpemU9PTgmJmk2NE1hdGgpYXJnVGV4dD1pNjRNYXRoLnN0cmluZ2lmeShvcmlnQXJnWzBdLG9yaWdBcmdbMV0sdHJ1ZSk7ZWxzZSBhcmdUZXh0PXVuU2lnbihjdXJyQXJnLDgqYXJnU2l6ZSwxKS50b1N0cmluZygxMCk7Y3VyckFyZz1NYXRoLmFicyhjdXJyQXJnKX1lbHNlIGlmKG5leHQ9PTExMSl7YXJnVGV4dD0oZmxhZ0FsdGVybmF0aXZlPyIwIjoiIikrY3VyckFic0FyZy50b1N0cmluZyg4KX1lbHNlIGlmKG5leHQ9PTEyMHx8bmV4dD09ODgpe3ByZWZpeD1mbGFnQWx0ZXJuYXRpdmUmJmN1cnJBcmchPTA/IjB4IjoiIjtpZihhcmdTaXplPT04JiZpNjRNYXRoKXtpZihvcmlnQXJnWzFdKXthcmdUZXh0PShvcmlnQXJnWzFdPj4+MCkudG9TdHJpbmcoMTYpO3ZhciBsb3dlcj0ob3JpZ0FyZ1swXT4+PjApLnRvU3RyaW5nKDE2KTt3aGlsZShsb3dlci5sZW5ndGg8OClsb3dlcj0iMCIrbG93ZXI7YXJnVGV4dCs9bG93ZXJ9ZWxzZXthcmdUZXh0PShvcmlnQXJnWzBdPj4+MCkudG9TdHJpbmcoMTYpfX1lbHNlIGlmKGN1cnJBcmc8MCl7Y3VyckFyZz0tY3VyckFyZzthcmdUZXh0PShjdXJyQWJzQXJnLTEpLnRvU3RyaW5nKDE2KTt2YXIgYnVmZmVyPVtdO2Zvcih2YXIgaT0wO2k8YXJnVGV4dC5sZW5ndGg7aSsrKXtidWZmZXIucHVzaCgoMTUtcGFyc2VJbnQoYXJnVGV4dFtpXSwxNikpLnRvU3RyaW5nKDE2KSl9YXJnVGV4dD1idWZmZXIuam9pbigiIik7d2hpbGUoYXJnVGV4dC5sZW5ndGg8YXJnU2l6ZSoyKWFyZ1RleHQ9ImYiK2FyZ1RleHR9ZWxzZXthcmdUZXh0PWN1cnJBYnNBcmcudG9TdHJpbmcoMTYpfWlmKG5leHQ9PTg4KXtwcmVmaXg9cHJlZml4LnRvVXBwZXJDYXNlKCk7YXJnVGV4dD1hcmdUZXh0LnRvVXBwZXJDYXNlKCl9fWVsc2UgaWYobmV4dD09MTEyKXtpZihjdXJyQWJzQXJnPT09MCl7YXJnVGV4dD0iKG5pbCkifWVsc2V7cHJlZml4PSIweCI7YXJnVGV4dD1jdXJyQWJzQXJnLnRvU3RyaW5nKDE2KX19aWYocHJlY2lzaW9uU2V0KXt3aGlsZShhcmdUZXh0Lmxlbmd0aDxwcmVjaXNpb24pe2FyZ1RleHQ9IjAiK2FyZ1RleHR9fWlmKGN1cnJBcmc+PTApe2lmKGZsYWdBbHdheXNTaWduZWQpe3ByZWZpeD0iKyIrcHJlZml4fWVsc2UgaWYoZmxhZ1BhZFNpZ24pe3ByZWZpeD0iICIrcHJlZml4fX1pZihhcmdUZXh0LmNoYXJBdCgwKT09Ii0iKXtwcmVmaXg9Ii0iK3ByZWZpeDthcmdUZXh0PWFyZ1RleHQuc3Vic3RyKDEpfXdoaWxlKHByZWZpeC5sZW5ndGgrYXJnVGV4dC5sZW5ndGg8d2lkdGgpe2lmKGZsYWdMZWZ0QWxpZ24pe2FyZ1RleHQrPSIgIn1lbHNle2lmKGZsYWdaZXJvUGFkKXthcmdUZXh0PSIwIithcmdUZXh0fWVsc2V7cHJlZml4PSIgIitwcmVmaXh9fX1hcmdUZXh0PXByZWZpeCthcmdUZXh0O2FyZ1RleHQuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKGNocil7cmV0LnB1c2goY2hyLmNoYXJDb2RlQXQoMCkpfSkpO2JyZWFrfTtjYXNlImYiOmNhc2UiRiI6Y2FzZSJlIjpjYXNlIkUiOmNhc2UiZyI6Y2FzZSJHIjp7dmFyIGN1cnJBcmc9Z2V0TmV4dEFyZygiZG91YmxlIik7dmFyIGFyZ1RleHQ7aWYoaXNOYU4oY3VyckFyZykpe2FyZ1RleHQ9Im5hbiI7ZmxhZ1plcm9QYWQ9ZmFsc2V9ZWxzZSBpZighaXNGaW5pdGUoY3VyckFyZykpe2FyZ1RleHQ9KGN1cnJBcmc8MD8iLSI6IiIpKyJpbmYiO2ZsYWdaZXJvUGFkPWZhbHNlfWVsc2V7dmFyIGlzR2VuZXJhbD1mYWxzZTt2YXIgZWZmZWN0aXZlUHJlY2lzaW9uPU1hdGgubWluKHByZWNpc2lvbiwyMCk7aWYobmV4dD09MTAzfHxuZXh0PT03MSl7aXNHZW5lcmFsPXRydWU7cHJlY2lzaW9uPXByZWNpc2lvbnx8MTt2YXIgZXhwb25lbnQ9cGFyc2VJbnQoY3VyckFyZy50b0V4cG9uZW50aWFsKGVmZmVjdGl2ZVByZWNpc2lvbikuc3BsaXQoImUiKVsxXSwxMCk7aWYocHJlY2lzaW9uPmV4cG9uZW50JiZleHBvbmVudD49LTQpe25leHQ9KG5leHQ9PTEwMz8iZiI6IkYiKS5jaGFyQ29kZUF0KDApO3ByZWNpc2lvbi09ZXhwb25lbnQrMX1lbHNle25leHQ9KG5leHQ9PTEwMz8iZSI6IkUiKS5jaGFyQ29kZUF0KDApO3ByZWNpc2lvbi0tfWVmZmVjdGl2ZVByZWNpc2lvbj1NYXRoLm1pbihwcmVjaXNpb24sMjApfWlmKG5leHQ9PTEwMXx8bmV4dD09Njkpe2FyZ1RleHQ9Y3VyckFyZy50b0V4cG9uZW50aWFsKGVmZmVjdGl2ZVByZWNpc2lvbik7aWYoL1tlRV1bLStdXGQkLy50ZXN0KGFyZ1RleHQpKXthcmdUZXh0PWFyZ1RleHQuc2xpY2UoMCwtMSkrIjAiK2FyZ1RleHQuc2xpY2UoLTEpfX1lbHNlIGlmKG5leHQ9PTEwMnx8bmV4dD09NzApe2FyZ1RleHQ9Y3VyckFyZy50b0ZpeGVkKGVmZmVjdGl2ZVByZWNpc2lvbik7aWYoY3VyckFyZz09PTAmJl9fcmVhbGx5TmVnYXRpdmUoY3VyckFyZykpe2FyZ1RleHQ9Ii0iK2FyZ1RleHR9fXZhciBwYXJ0cz1hcmdUZXh0LnNwbGl0KCJlIik7aWYoaXNHZW5lcmFsJiYhZmxhZ0FsdGVybmF0aXZlKXt3aGlsZShwYXJ0c1swXS5sZW5ndGg+MSYmcGFydHNbMF0uaW5kZXhPZigiLiIpIT0tMSYmKHBhcnRzWzBdLnNsaWNlKC0xKT09IjAifHxwYXJ0c1swXS5zbGljZSgtMSk9PSIuIikpe3BhcnRzWzBdPXBhcnRzWzBdLnNsaWNlKDAsLTEpfX1lbHNle2lmKGZsYWdBbHRlcm5hdGl2ZSYmYXJnVGV4dC5pbmRleE9mKCIuIik9PS0xKXBhcnRzWzBdKz0iLiI7d2hpbGUocHJlY2lzaW9uPmVmZmVjdGl2ZVByZWNpc2lvbisrKXBhcnRzWzBdKz0iMCJ9YXJnVGV4dD1wYXJ0c1swXSsocGFydHMubGVuZ3RoPjE/ImUiK3BhcnRzWzFdOiIiKTtpZihuZXh0PT02OSlhcmdUZXh0PWFyZ1RleHQudG9VcHBlckNhc2UoKTtpZihjdXJyQXJnPj0wKXtpZihmbGFnQWx3YXlzU2lnbmVkKXthcmdUZXh0PSIrIithcmdUZXh0fWVsc2UgaWYoZmxhZ1BhZFNpZ24pe2FyZ1RleHQ9IiAiK2FyZ1RleHR9fX13aGlsZShhcmdUZXh0Lmxlbmd0aDx3aWR0aCl7aWYoZmxhZ0xlZnRBbGlnbil7YXJnVGV4dCs9IiAifWVsc2V7aWYoZmxhZ1plcm9QYWQmJihhcmdUZXh0WzBdPT0iLSJ8fGFyZ1RleHRbMF09PSIrIikpe2FyZ1RleHQ9YXJnVGV4dFswXSsiMCIrYXJnVGV4dC5zbGljZSgxKX1lbHNle2FyZ1RleHQ9KGZsYWdaZXJvUGFkPyIwIjoiICIpK2FyZ1RleHR9fX1pZihuZXh0PDk3KWFyZ1RleHQ9YXJnVGV4dC50b1VwcGVyQ2FzZSgpO2FyZ1RleHQuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKGNocil7cmV0LnB1c2goY2hyLmNoYXJDb2RlQXQoMCkpfSkpO2JyZWFrfTtjYXNlInMiOnt2YXIgYXJnPWdldE5leHRBcmcoImk4KiIpO3ZhciBhcmdMZW5ndGg9YXJnP19zdHJsZW4oYXJnKToiKG51bGwpIi5sZW5ndGg7aWYocHJlY2lzaW9uU2V0KWFyZ0xlbmd0aD1NYXRoLm1pbihhcmdMZW5ndGgscHJlY2lzaW9uKTtpZighZmxhZ0xlZnRBbGlnbil7d2hpbGUoYXJnTGVuZ3RoPHdpZHRoLS0pe3JldC5wdXNoKDMyKX19aWYoYXJnKXtmb3IodmFyIGk9MDtpPGFyZ0xlbmd0aDtpKyspe3JldC5wdXNoKEhFQVBVOFthcmcrKz4+MF0pfX1lbHNle3JldD1yZXQuY29uY2F0KGludEFycmF5RnJvbVN0cmluZygiKG51bGwpIi5zdWJzdHIoMCxhcmdMZW5ndGgpLHRydWUpKX1pZihmbGFnTGVmdEFsaWduKXt3aGlsZShhcmdMZW5ndGg8d2lkdGgtLSl7cmV0LnB1c2goMzIpfX1icmVha307Y2FzZSJjIjp7aWYoZmxhZ0xlZnRBbGlnbilyZXQucHVzaChnZXROZXh0QXJnKCJpOCIpKTt3aGlsZSgtLXdpZHRoPjApe3JldC5wdXNoKDMyKX1pZighZmxhZ0xlZnRBbGlnbilyZXQucHVzaChnZXROZXh0QXJnKCJpOCIpKTticmVha307Y2FzZSJuIjp7dmFyIHB0cj1nZXROZXh0QXJnKCJpMzIqIik7SEVBUDMyW3B0cj4+Ml09cmV0Lmxlbmd0aDticmVha307Y2FzZSIlIjp7cmV0LnB1c2goY3Vycik7YnJlYWt9O2RlZmF1bHQ6e2Zvcih2YXIgaT1zdGFydFRleHRJbmRleDtpPHRleHRJbmRleCsyO2krKyl7cmV0LnB1c2goSEVBUDhbaT4+MF0pfX19dGV4dEluZGV4Kz0yfWVsc2V7cmV0LnB1c2goY3Vycik7dGV4dEluZGV4Kz0xfX1yZXR1cm4gcmV0fWZ1bmN0aW9uIF9tYWxsb2MoYnl0ZXMpe3ZhciBwdHI9UnVudGltZS5keW5hbWljQWxsb2MoYnl0ZXMrOCk7cmV0dXJuIHB0cis4JjQyOTQ5NjcyODh9TW9kdWxlWyJfbWFsbG9jIl09X21hbGxvYztmdW5jdGlvbiBfc25wcmludGYocyxuLGZvcm1hdCx2YXJhcmdzKXt2YXIgcmVzdWx0PV9fZm9ybWF0U3RyaW5nKGZvcm1hdCx2YXJhcmdzKTt2YXIgbGltaXQ9bj09PXVuZGVmaW5lZD9yZXN1bHQubGVuZ3RoOk1hdGgubWluKHJlc3VsdC5sZW5ndGgsTWF0aC5tYXgobi0xLDApKTtpZihzPDApe3M9LXM7dmFyIGJ1Zj1fbWFsbG9jKGxpbWl0KzEpO0hFQVAzMltzPj4yXT1idWY7cz1idWZ9Zm9yKHZhciBpPTA7aTxsaW1pdDtpKyspe0hFQVA4W3MraT4+MF09cmVzdWx0W2ldfWlmKGxpbWl0PG58fG49PT11bmRlZmluZWQpSEVBUDhbcytpPj4wXT0wO3JldHVybiByZXN1bHQubGVuZ3RofWZ1bmN0aW9uIF9ta3BvcnQoKXt0aHJvdyJUT0RPIn12YXIgU09DS0ZTPXttb3VudDooZnVuY3Rpb24obW91bnQpe3JldHVybiBGUy5jcmVhdGVOb2RlKG51bGwsIi8iLDE2Mzg0fDUxMSwwKX0pLGNyZWF0ZVNvY2tldDooZnVuY3Rpb24oZmFtaWx5LHR5cGUscHJvdG9jb2wpe3ZhciBzdHJlYW1pbmc9dHlwZT09MTtpZihwcm90b2NvbCl7YXNzZXJ0KHN0cmVhbWluZz09KHByb3RvY29sPT02KSl9dmFyIHNvY2s9e2ZhbWlseTpmYW1pbHksdHlwZTp0eXBlLHByb3RvY29sOnByb3RvY29sLHNlcnZlcjpudWxsLHBlZXJzOnt9LHBlbmRpbmc6W10scmVjdl9xdWV1ZTpbXSxzb2NrX29wczpTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzfTt2YXIgbmFtZT1TT0NLRlMubmV4dG5hbWUoKTt2YXIgbm9kZT1GUy5jcmVhdGVOb2RlKFNPQ0tGUy5yb290LG5hbWUsNDkxNTIsMCk7bm9kZS5zb2NrPXNvY2s7dmFyIHN0cmVhbT1GUy5jcmVhdGVTdHJlYW0oe3BhdGg6bmFtZSxub2RlOm5vZGUsZmxhZ3M6RlMubW9kZVN0cmluZ1RvRmxhZ3MoInIrIiksc2Vla2FibGU6ZmFsc2Usc3RyZWFtX29wczpTT0NLRlMuc3RyZWFtX29wc30pO3NvY2suc3RyZWFtPXN0cmVhbTtyZXR1cm4gc29ja30pLGdldFNvY2tldDooZnVuY3Rpb24oZmQpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZkKTtpZighc3RyZWFtfHwhRlMuaXNTb2NrZXQoc3RyZWFtLm5vZGUubW9kZSkpe3JldHVybiBudWxsfXJldHVybiBzdHJlYW0ubm9kZS5zb2NrfSksc3RyZWFtX29wczp7cG9sbDooZnVuY3Rpb24oc3RyZWFtKXt2YXIgc29jaz1zdHJlYW0ubm9kZS5zb2NrO3JldHVybiBzb2NrLnNvY2tfb3BzLnBvbGwoc29jayl9KSxpb2N0bDooZnVuY3Rpb24oc3RyZWFtLHJlcXVlc3QsdmFyYXJncyl7dmFyIHNvY2s9c3RyZWFtLm5vZGUuc29jaztyZXR1cm4gc29jay5zb2NrX29wcy5pb2N0bChzb2NrLHJlcXVlc3QsdmFyYXJncyl9KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7dmFyIG1zZz1zb2NrLnNvY2tfb3BzLnJlY3Ztc2coc29jayxsZW5ndGgpO2lmKCFtc2cpe3JldHVybiAwfWJ1ZmZlci5zZXQobXNnLmJ1ZmZlcixvZmZzZXQpO3JldHVybiBtc2cuYnVmZmVyLmxlbmd0aH0pLHdyaXRlOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7cmV0dXJuIHNvY2suc29ja19vcHMuc2VuZG1zZyhzb2NrLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoKX0pLGNsb3NlOihmdW5jdGlvbihzdHJlYW0pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7c29jay5zb2NrX29wcy5jbG9zZShzb2NrKX0pfSxuZXh0bmFtZTooZnVuY3Rpb24oKXtpZighU09DS0ZTLm5leHRuYW1lLmN1cnJlbnQpe1NPQ0tGUy5uZXh0bmFtZS5jdXJyZW50PTB9cmV0dXJuInNvY2tldFsiK1NPQ0tGUy5uZXh0bmFtZS5jdXJyZW50KysgKyJdIn0pLHdlYnNvY2tldF9zb2NrX29wczp7Y3JlYXRlUGVlcjooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe3ZhciB3cztpZih0eXBlb2YgYWRkcj09PSJvYmplY3QiKXt3cz1hZGRyO2FkZHI9bnVsbDtwb3J0PW51bGx9aWYod3Mpe2lmKHdzLl9zb2NrZXQpe2FkZHI9d3MuX3NvY2tldC5yZW1vdGVBZGRyZXNzO3BvcnQ9d3MuX3NvY2tldC5yZW1vdGVQb3J0fWVsc2V7dmFyIHJlc3VsdD0vd3Nbc10/OlwvXC8oW146XSspOihcZCspLy5leGVjKHdzLnVybCk7aWYoIXJlc3VsdCl7dGhyb3cgbmV3IEVycm9yKCJXZWJTb2NrZXQgVVJMIG11c3QgYmUgaW4gdGhlIGZvcm1hdCB3cyhzKTovL2FkZHJlc3M6cG9ydCIpfWFkZHI9cmVzdWx0WzFdO3BvcnQ9cGFyc2VJbnQocmVzdWx0WzJdLDEwKX19ZWxzZXt0cnl7dmFyIHJ1bnRpbWVDb25maWc9TW9kdWxlWyJ3ZWJzb2NrZXQiXSYmIm9iamVjdCI9PT10eXBlb2YgTW9kdWxlWyJ3ZWJzb2NrZXQiXTt2YXIgdXJsPSJ3czojIi5yZXBsYWNlKCIjIiwiLy8iKTtpZihydW50aW1lQ29uZmlnKXtpZigic3RyaW5nIj09PXR5cGVvZiBNb2R1bGVbIndlYnNvY2tldCJdWyJ1cmwiXSl7dXJsPU1vZHVsZVsid2Vic29ja2V0Il1bInVybCJdfX1pZih1cmw9PT0id3M6Ly8ifHx1cmw9PT0id3NzOi8vIil7dXJsPXVybCthZGRyKyI6Iitwb3J0fXZhciBzdWJQcm90b2NvbHM9ImJpbmFyeSI7aWYocnVudGltZUNvbmZpZyl7aWYoInN0cmluZyI9PT10eXBlb2YgTW9kdWxlWyJ3ZWJzb2NrZXQiXVsic3VicHJvdG9jb2wiXSl7c3ViUHJvdG9jb2xzPU1vZHVsZVsid2Vic29ja2V0Il1bInN1YnByb3RvY29sIl19fXN1YlByb3RvY29scz1zdWJQcm90b2NvbHMucmVwbGFjZSgvXiArfCArJC9nLCIiKS5zcGxpdCgvICosICovKTt2YXIgb3B0cz1FTlZJUk9OTUVOVF9JU19OT0RFP3sicHJvdG9jb2wiOnN1YlByb3RvY29scy50b1N0cmluZygpfTpzdWJQcm90b2NvbHM7dmFyIFdlYlNvY2tldD1FTlZJUk9OTUVOVF9JU19OT0RFP3JlcXVpcmUoIndzIik6d2luZG93WyJXZWJTb2NrZXQiXTt3cz1uZXcgV2ViU29ja2V0KHVybCxvcHRzKTt3cy5iaW5hcnlUeXBlPSJhcnJheWJ1ZmZlciJ9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUhPU1RVTlJFQUNIKX19dmFyIHBlZXI9e2FkZHI6YWRkcixwb3J0OnBvcnQsc29ja2V0OndzLGRncmFtX3NlbmRfcXVldWU6W119O1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuYWRkUGVlcihzb2NrLHBlZXIpO1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuaGFuZGxlUGVlckV2ZW50cyhzb2NrLHBlZXIpO2lmKHNvY2sudHlwZT09PTImJnR5cGVvZiBzb2NrLnNwb3J0IT09InVuZGVmaW5lZCIpe3BlZXIuZGdyYW1fc2VuZF9xdWV1ZS5wdXNoKG5ldyBVaW50OEFycmF5KFsyNTUsMjU1LDI1NSwyNTUsInAiLmNoYXJDb2RlQXQoMCksIm8iLmNoYXJDb2RlQXQoMCksInIiLmNoYXJDb2RlQXQoMCksInQiLmNoYXJDb2RlQXQoMCksKHNvY2suc3BvcnQmNjUyODApPj44LHNvY2suc3BvcnQmMjU1XSkpfXJldHVybiBwZWVyfSksZ2V0UGVlcjooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe3JldHVybiBzb2NrLnBlZXJzW2FkZHIrIjoiK3BvcnRdfSksYWRkUGVlcjooZnVuY3Rpb24oc29jayxwZWVyKXtzb2NrLnBlZXJzW3BlZXIuYWRkcisiOiIrcGVlci5wb3J0XT1wZWVyfSkscmVtb3ZlUGVlcjooZnVuY3Rpb24oc29jayxwZWVyKXtkZWxldGUgc29jay5wZWVyc1twZWVyLmFkZHIrIjoiK3BlZXIucG9ydF19KSxoYW5kbGVQZWVyRXZlbnRzOihmdW5jdGlvbihzb2NrLHBlZXIpe3ZhciBmaXJzdD10cnVlO3ZhciBoYW5kbGVPcGVuPShmdW5jdGlvbigpe3RyeXt2YXIgcXVldWVkPXBlZXIuZGdyYW1fc2VuZF9xdWV1ZS5zaGlmdCgpO3doaWxlKHF1ZXVlZCl7cGVlci5zb2NrZXQuc2VuZChxdWV1ZWQpO3F1ZXVlZD1wZWVyLmRncmFtX3NlbmRfcXVldWUuc2hpZnQoKX19Y2F0Y2goZSl7cGVlci5zb2NrZXQuY2xvc2UoKX19KTtmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKGRhdGEpe2Fzc2VydCh0eXBlb2YgZGF0YSE9PSJzdHJpbmciJiZkYXRhLmJ5dGVMZW5ndGghPT11bmRlZmluZWQpO2RhdGE9bmV3IFVpbnQ4QXJyYXkoZGF0YSk7dmFyIHdhc2ZpcnN0PWZpcnN0O2ZpcnN0PWZhbHNlO2lmKHdhc2ZpcnN0JiZkYXRhLmxlbmd0aD09PTEwJiZkYXRhWzBdPT09MjU1JiZkYXRhWzFdPT09MjU1JiZkYXRhWzJdPT09MjU1JiZkYXRhWzNdPT09MjU1JiZkYXRhWzRdPT09InAiLmNoYXJDb2RlQXQoMCkmJmRhdGFbNV09PT0ibyIuY2hhckNvZGVBdCgwKSYmZGF0YVs2XT09PSJyIi5jaGFyQ29kZUF0KDApJiZkYXRhWzddPT09InQiLmNoYXJDb2RlQXQoMCkpe3ZhciBuZXdwb3J0PWRhdGFbOF08PDh8ZGF0YVs5XTtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLnJlbW92ZVBlZXIoc29jayxwZWVyKTtwZWVyLnBvcnQ9bmV3cG9ydDtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmFkZFBlZXIoc29jayxwZWVyKTtyZXR1cm59c29jay5yZWN2X3F1ZXVlLnB1c2goe2FkZHI6cGVlci5hZGRyLHBvcnQ6cGVlci5wb3J0LGRhdGE6ZGF0YX0pfWlmKEVOVklST05NRU5UX0lTX05PREUpe3BlZXIuc29ja2V0Lm9uKCJvcGVuIixoYW5kbGVPcGVuKTtwZWVyLnNvY2tldC5vbigibWVzc2FnZSIsKGZ1bmN0aW9uKGRhdGEsZmxhZ3Mpe2lmKCFmbGFncy5iaW5hcnkpe3JldHVybn1oYW5kbGVNZXNzYWdlKChuZXcgVWludDhBcnJheShkYXRhKSkuYnVmZmVyKX0pKTtwZWVyLnNvY2tldC5vbigiZXJyb3IiLChmdW5jdGlvbigpe30pKX1lbHNle3BlZXIuc29ja2V0Lm9ub3Blbj1oYW5kbGVPcGVuO3BlZXIuc29ja2V0Lm9ubWVzc2FnZT1mdW5jdGlvbiBwZWVyX3NvY2tldF9vbm1lc3NhZ2UoZXZlbnQpe2hhbmRsZU1lc3NhZ2UoZXZlbnQuZGF0YSl9fX0pLHBvbGw6KGZ1bmN0aW9uKHNvY2spe2lmKHNvY2sudHlwZT09PTEmJnNvY2suc2VydmVyKXtyZXR1cm4gc29jay5wZW5kaW5nLmxlbmd0aD82NHwxOjB9dmFyIG1hc2s9MDt2YXIgZGVzdD1zb2NrLnR5cGU9PT0xP1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuZ2V0UGVlcihzb2NrLHNvY2suZGFkZHIsc29jay5kcG9ydCk6bnVsbDtpZihzb2NrLnJlY3ZfcXVldWUubGVuZ3RofHwhZGVzdHx8ZGVzdCYmZGVzdC5zb2NrZXQucmVhZHlTdGF0ZT09PWRlc3Quc29ja2V0LkNMT1NJTkd8fGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TRUQpe21hc2t8PTY0fDF9aWYoIWRlc3R8fGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5PUEVOKXttYXNrfD00fWlmKGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0JiZkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXttYXNrfD0xNn1yZXR1cm4gbWFza30pLGlvY3RsOihmdW5jdGlvbihzb2NrLHJlcXVlc3QsYXJnKXtzd2l0Y2gocmVxdWVzdCl7Y2FzZSAyMTUzMTp2YXIgYnl0ZXM9MDtpZihzb2NrLnJlY3ZfcXVldWUubGVuZ3RoKXtieXRlcz1zb2NrLnJlY3ZfcXVldWVbMF0uZGF0YS5sZW5ndGh9SEVBUDMyW2FyZz4+Ml09Ynl0ZXM7cmV0dXJuIDA7ZGVmYXVsdDpyZXR1cm4gRVJSTk9fQ09ERVMuRUlOVkFMfX0pLGNsb3NlOihmdW5jdGlvbihzb2NrKXtpZihzb2NrLnNlcnZlcil7dHJ5e3NvY2suc2VydmVyLmNsb3NlKCl9Y2F0Y2goZSl7fXNvY2suc2VydmVyPW51bGx9dmFyIHBlZXJzPU9iamVjdC5rZXlzKHNvY2sucGVlcnMpO2Zvcih2YXIgaT0wO2k8cGVlcnMubGVuZ3RoO2krKyl7dmFyIHBlZXI9c29jay5wZWVyc1twZWVyc1tpXV07dHJ5e3BlZXIuc29ja2V0LmNsb3NlKCl9Y2F0Y2goZSl7fVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMucmVtb3ZlUGVlcihzb2NrLHBlZXIpfXJldHVybiAwfSksYmluZDooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe2lmKHR5cGVvZiBzb2NrLnNhZGRyIT09InVuZGVmaW5lZCJ8fHR5cGVvZiBzb2NrLnNwb3J0IT09InVuZGVmaW5lZCIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9c29jay5zYWRkcj1hZGRyO3NvY2suc3BvcnQ9cG9ydHx8X21rcG9ydCgpO2lmKHNvY2sudHlwZT09PTIpe2lmKHNvY2suc2VydmVyKXtzb2NrLnNlcnZlci5jbG9zZSgpO3NvY2suc2VydmVyPW51bGx9dHJ5e3NvY2suc29ja19vcHMubGlzdGVuKHNvY2ssMCl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtpZihlLmVycm5vIT09RVJSTk9fQ09ERVMuRU9QTk9UU1VQUCl0aHJvdyBlfX19KSxjb25uZWN0OihmdW5jdGlvbihzb2NrLGFkZHIscG9ydCl7aWYoc29jay5zZXJ2ZXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPRFMuRU9QTk9UU1VQUCl9aWYodHlwZW9mIHNvY2suZGFkZHIhPT0idW5kZWZpbmVkIiYmdHlwZW9mIHNvY2suZHBvcnQhPT0idW5kZWZpbmVkIil7dmFyIGRlc3Q9U09DS0ZTLndlYnNvY2tldF9zb2NrX29wcy5nZXRQZWVyKHNvY2ssc29jay5kYWRkcixzb2NrLmRwb3J0KTtpZihkZXN0KXtpZihkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ09OTkVDVElORyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFMUkVBRFkpfWVsc2V7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTQ09OTil9fX12YXIgcGVlcj1TT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIoc29jayxhZGRyLHBvcnQpO3NvY2suZGFkZHI9cGVlci5hZGRyO3NvY2suZHBvcnQ9cGVlci5wb3J0O3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlBST0dSRVNTKX0pLGxpc3RlbjooZnVuY3Rpb24oc29jayxiYWNrbG9nKXtpZighRU5WSVJPTk1FTlRfSVNfTk9ERSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU9QTk9UU1VQUCl9aWYoc29jay5zZXJ2ZXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIFdlYlNvY2tldFNlcnZlcj1yZXF1aXJlKCJ3cyIpLlNlcnZlcjt2YXIgaG9zdD1zb2NrLnNhZGRyO3NvY2suc2VydmVyPW5ldyBXZWJTb2NrZXRTZXJ2ZXIoe2hvc3Q6aG9zdCxwb3J0OnNvY2suc3BvcnR9KTtzb2NrLnNlcnZlci5vbigiY29ubmVjdGlvbiIsKGZ1bmN0aW9uKHdzKXtpZihzb2NrLnR5cGU9PT0xKXt2YXIgbmV3c29jaz1TT0NLRlMuY3JlYXRlU29ja2V0KHNvY2suZmFtaWx5LHNvY2sudHlwZSxzb2NrLnByb3RvY29sKTt2YXIgcGVlcj1TT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIobmV3c29jayx3cyk7bmV3c29jay5kYWRkcj1wZWVyLmFkZHI7bmV3c29jay5kcG9ydD1wZWVyLnBvcnQ7c29jay5wZW5kaW5nLnB1c2gobmV3c29jayl9ZWxzZXtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIoc29jayx3cyl9fSkpO3NvY2suc2VydmVyLm9uKCJjbG9zZWQiLChmdW5jdGlvbigpe3NvY2suc2VydmVyPW51bGx9KSk7c29jay5zZXJ2ZXIub24oImVycm9yIiwoZnVuY3Rpb24oKXt9KSl9KSxhY2NlcHQ6KGZ1bmN0aW9uKGxpc3RlbnNvY2spe2lmKCFsaXN0ZW5zb2NrLnNlcnZlcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbmV3c29jaz1saXN0ZW5zb2NrLnBlbmRpbmcuc2hpZnQoKTtuZXdzb2NrLnN0cmVhbS5mbGFncz1saXN0ZW5zb2NrLnN0cmVhbS5mbGFncztyZXR1cm4gbmV3c29ja30pLGdldG5hbWU6KGZ1bmN0aW9uKHNvY2sscGVlcil7dmFyIGFkZHIscG9ydDtpZihwZWVyKXtpZihzb2NrLmRhZGRyPT09dW5kZWZpbmVkfHxzb2NrLmRwb3J0PT09dW5kZWZpbmVkKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9UQ09OTil9YWRkcj1zb2NrLmRhZGRyO3BvcnQ9c29jay5kcG9ydH1lbHNle2FkZHI9c29jay5zYWRkcnx8MDtwb3J0PXNvY2suc3BvcnR8fDB9cmV0dXJue2FkZHI6YWRkcixwb3J0OnBvcnR9fSksc2VuZG1zZzooZnVuY3Rpb24oc29jayxidWZmZXIsb2Zmc2V0LGxlbmd0aCxhZGRyLHBvcnQpe2lmKHNvY2sudHlwZT09PTIpe2lmKGFkZHI9PT11bmRlZmluZWR8fHBvcnQ9PT11bmRlZmluZWQpe2FkZHI9c29jay5kYWRkcjtwb3J0PXNvY2suZHBvcnR9aWYoYWRkcj09PXVuZGVmaW5lZHx8cG9ydD09PXVuZGVmaW5lZCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRURFU1RBRERSUkVRKX19ZWxzZXthZGRyPXNvY2suZGFkZHI7cG9ydD1zb2NrLmRwb3J0fXZhciBkZXN0PVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuZ2V0UGVlcihzb2NrLGFkZHIscG9ydCk7aWYoc29jay50eXBlPT09MSl7aWYoIWRlc3R8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9UQ09OTil9ZWxzZSBpZihkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ09OTkVDVElORyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX19dmFyIGRhdGE7aWYoYnVmZmVyIGluc3RhbmNlb2YgQXJyYXl8fGJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXtkYXRhPWJ1ZmZlci5zbGljZShvZmZzZXQsb2Zmc2V0K2xlbmd0aCl9ZWxzZXtkYXRhPWJ1ZmZlci5idWZmZXIuc2xpY2UoYnVmZmVyLmJ5dGVPZmZzZXQrb2Zmc2V0LGJ1ZmZlci5ieXRlT2Zmc2V0K29mZnNldCtsZW5ndGgpfWlmKHNvY2sudHlwZT09PTIpe2lmKCFkZXN0fHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlIT09ZGVzdC5zb2NrZXQuT1BFTil7aWYoIWRlc3R8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXtkZXN0PVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuY3JlYXRlUGVlcihzb2NrLGFkZHIscG9ydCl9ZGVzdC5kZ3JhbV9zZW5kX3F1ZXVlLnB1c2goZGF0YSk7cmV0dXJuIGxlbmd0aH19dHJ5e2Rlc3Quc29ja2V0LnNlbmQoZGF0YSk7cmV0dXJuIGxlbmd0aH1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfX0pLHJlY3Ztc2c6KGZ1bmN0aW9uKHNvY2ssbGVuZ3RoKXtpZihzb2NrLnR5cGU9PT0xJiZzb2NrLnNlcnZlcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVENPTk4pfXZhciBxdWV1ZWQ9c29jay5yZWN2X3F1ZXVlLnNoaWZ0KCk7aWYoIXF1ZXVlZCl7aWYoc29jay50eXBlPT09MSl7dmFyIGRlc3Q9U09DS0ZTLndlYnNvY2tldF9zb2NrX29wcy5nZXRQZWVyKHNvY2ssc29jay5kYWRkcixzb2NrLmRwb3J0KTtpZighZGVzdCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVENPTk4pfWVsc2UgaWYoZGVzdC5zb2NrZXQucmVhZHlTdGF0ZT09PWRlc3Quc29ja2V0LkNMT1NJTkd8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TRUQpe3JldHVybiBudWxsfWVsc2V7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX19ZWxzZXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4pfX12YXIgcXVldWVkTGVuZ3RoPXF1ZXVlZC5kYXRhLmJ5dGVMZW5ndGh8fHF1ZXVlZC5kYXRhLmxlbmd0aDt2YXIgcXVldWVkT2Zmc2V0PXF1ZXVlZC5kYXRhLmJ5dGVPZmZzZXR8fDA7dmFyIHF1ZXVlZEJ1ZmZlcj1xdWV1ZWQuZGF0YS5idWZmZXJ8fHF1ZXVlZC5kYXRhO3ZhciBieXRlc1JlYWQ9TWF0aC5taW4obGVuZ3RoLHF1ZXVlZExlbmd0aCk7dmFyIHJlcz17YnVmZmVyOm5ldyBVaW50OEFycmF5KHF1ZXVlZEJ1ZmZlcixxdWV1ZWRPZmZzZXQsYnl0ZXNSZWFkKSxhZGRyOnF1ZXVlZC5hZGRyLHBvcnQ6cXVldWVkLnBvcnR9O2lmKHNvY2sudHlwZT09PTEmJmJ5dGVzUmVhZDxxdWV1ZWRMZW5ndGgpe3ZhciBieXRlc1JlbWFpbmluZz1xdWV1ZWRMZW5ndGgtYnl0ZXNSZWFkO3F1ZXVlZC5kYXRhPW5ldyBVaW50OEFycmF5KHF1ZXVlZEJ1ZmZlcixxdWV1ZWRPZmZzZXQrYnl0ZXNSZWFkLGJ5dGVzUmVtYWluaW5nKTtzb2NrLnJlY3ZfcXVldWUudW5zaGlmdChxdWV1ZWQpfXJldHVybiByZXN9KX19O2Z1bmN0aW9uIF9zZW5kKGZkLGJ1ZixsZW4sZmxhZ3Mpe3ZhciBzb2NrPVNPQ0tGUy5nZXRTb2NrZXQoZmQpO2lmKCFzb2NrKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9cmV0dXJuIF93cml0ZShmZCxidWYsbGVuKX1mdW5jdGlvbiBfcHdyaXRlKGZpbGRlcyxidWYsbmJ5dGUsb2Zmc2V0KXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmaWxkZXMpO2lmKCFzdHJlYW0pe19fX3NldEVyck5vKEVSUk5PX0NPREVTLkVCQURGKTtyZXR1cm4tMX10cnl7dmFyIHNsYWI9SEVBUDg7cmV0dXJuIEZTLndyaXRlKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSxvZmZzZXQpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF93cml0ZShmaWxkZXMsYnVmLG5ieXRlKXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmaWxkZXMpO2lmKCFzdHJlYW0pe19fX3NldEVyck5vKEVSUk5PX0NPREVTLkVCQURGKTtyZXR1cm4tMX10cnl7dmFyIHNsYWI9SEVBUDg7cmV0dXJuIEZTLndyaXRlKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSl9Y2F0Y2goZSl7RlMuaGFuZGxlRlNFcnJvcihlKTtyZXR1cm4tMX19ZnVuY3Rpb24gX2ZpbGVubyhzdHJlYW0pe3N0cmVhbT1GUy5nZXRTdHJlYW1Gcm9tUHRyKHN0cmVhbSk7aWYoIXN0cmVhbSlyZXR1cm4tMTtyZXR1cm4gc3RyZWFtLmZkfWZ1bmN0aW9uIF9md3JpdGUocHRyLHNpemUsbml0ZW1zLHN0cmVhbSl7dmFyIGJ5dGVzVG9Xcml0ZT1uaXRlbXMqc2l6ZTtpZihieXRlc1RvV3JpdGU9PTApcmV0dXJuIDA7dmFyIGZkPV9maWxlbm8oc3RyZWFtKTt2YXIgYnl0ZXNXcml0dGVuPV93cml0ZShmZCxwdHIsYnl0ZXNUb1dyaXRlKTtpZihieXRlc1dyaXR0ZW49PS0xKXt2YXIgc3RyZWFtT2JqPUZTLmdldFN0cmVhbUZyb21QdHIoc3RyZWFtKTtpZihzdHJlYW1PYmopc3RyZWFtT2JqLmVycm9yPXRydWU7cmV0dXJuIDB9ZWxzZXtyZXR1cm4gTWF0aC5mbG9vcihieXRlc1dyaXR0ZW4vc2l6ZSl9fWZ1bmN0aW9uIF9yZWN2KGZkLGJ1ZixsZW4sZmxhZ3Mpe3ZhciBzb2NrPVNPQ0tGUy5nZXRTb2NrZXQoZmQpO2lmKCFzb2NrKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9cmV0dXJuIF9yZWFkKGZkLGJ1ZixsZW4pfWZ1bmN0aW9uIF9wcmVhZChmaWxkZXMsYnVmLG5ieXRlLG9mZnNldCl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmlsZGVzKTtpZighc3RyZWFtKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9dHJ5e3ZhciBzbGFiPUhFQVA4O3JldHVybiBGUy5yZWFkKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSxvZmZzZXQpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF9yZWFkKGZpbGRlcyxidWYsbmJ5dGUpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZpbGRlcyk7aWYoIXN0cmVhbSl7X19fc2V0RXJyTm8oRVJSTk9fQ09ERVMuRUJBREYpO3JldHVybi0xfXRyeXt2YXIgc2xhYj1IRUFQODtyZXR1cm4gRlMucmVhZChzdHJlYW0sc2xhYixidWYsbmJ5dGUpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF9mcmVhZChwdHIsc2l6ZSxuaXRlbXMsc3RyZWFtKXt2YXIgYnl0ZXNUb1JlYWQ9bml0ZW1zKnNpemU7aWYoYnl0ZXNUb1JlYWQ9PTApe3JldHVybiAwfXZhciBieXRlc1JlYWQ9MDt2YXIgc3RyZWFtT2JqPUZTLmdldFN0cmVhbUZyb21QdHIoc3RyZWFtKTtpZighc3RyZWFtT2JqKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuIDB9d2hpbGUoc3RyZWFtT2JqLnVuZ290dGVuLmxlbmd0aCYmYnl0ZXNUb1JlYWQ+MCl7SEVBUDhbcHRyKys+PjBdPXN0cmVhbU9iai51bmdvdHRlbi5wb3AoKTtieXRlc1RvUmVhZC0tO2J5dGVzUmVhZCsrfXZhciBlcnI9X3JlYWQoc3RyZWFtT2JqLmZkLHB0cixieXRlc1RvUmVhZCk7aWYoZXJyPT0tMSl7aWYoc3RyZWFtT2JqKXN0cmVhbU9iai5lcnJvcj10cnVlO3JldHVybiAwfWJ5dGVzUmVhZCs9ZXJyO2lmKGJ5dGVzUmVhZDxieXRlc1RvUmVhZClzdHJlYW1PYmouZW9mPXRydWU7cmV0dXJuIE1hdGguZmxvb3IoYnl0ZXNSZWFkL3NpemUpfWZ1bmN0aW9uIF9mZ2V0YyhzdHJlYW0pe3ZhciBzdHJlYW1PYmo9RlMuZ2V0U3RyZWFtRnJvbVB0cihzdHJlYW0pO2lmKCFzdHJlYW1PYmopcmV0dXJuLTE7aWYoc3RyZWFtT2JqLmVvZnx8c3RyZWFtT2JqLmVycm9yKXJldHVybi0xO3ZhciByZXQ9X2ZyZWFkKF9mZ2V0Yy5yZXQsMSwxLHN0cmVhbSk7aWYocmV0PT0wKXtyZXR1cm4tMX1lbHNlIGlmKHJldD09LTEpe3N0cmVhbU9iai5lcnJvcj10cnVlO3JldHVybi0xfWVsc2V7cmV0dXJuIEhFQVBVOFtfZmdldGMucmV0Pj4wXX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZW12YWwoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfZW12YWwiKTthYm9ydCgtMSl9ZnVuY3Rpb24gX19fZ3h4X3BlcnNvbmFsaXR5X3YwKCl7fWZ1bmN0aW9uIF9zeXNjb25mKG5hbWUpe3N3aXRjaChuYW1lKXtjYXNlIDMwOnJldHVybiBQQUdFX1NJWkU7Y2FzZSAxMzI6Y2FzZSAxMzM6Y2FzZSAxMjpjYXNlIDEzNzpjYXNlIDEzODpjYXNlIDE1OmNhc2UgMjM1OmNhc2UgMTY6Y2FzZSAxNzpjYXNlIDE4OmNhc2UgMTk6Y2FzZSAyMDpjYXNlIDE0OTpjYXNlIDEzOmNhc2UgMTA6Y2FzZSAyMzY6Y2FzZSAxNTM6Y2FzZSA5OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDE1OTpjYXNlIDE1NDpjYXNlIDE0OmNhc2UgNzc6Y2FzZSA3ODpjYXNlIDEzOTpjYXNlIDgwOmNhc2UgODE6Y2FzZSA3OTpjYXNlIDgyOmNhc2UgNjg6Y2FzZSA2NzpjYXNlIDE2NDpjYXNlIDExOmNhc2UgMjk6Y2FzZSA0NzpjYXNlIDQ4OmNhc2UgOTU6Y2FzZSA1MjpjYXNlIDUxOmNhc2UgNDY6cmV0dXJuIDIwMDgwOTtjYXNlIDI3OmNhc2UgMjQ2OmNhc2UgMTI3OmNhc2UgMTI4OmNhc2UgMjM6Y2FzZSAyNDpjYXNlIDE2MDpjYXNlIDE2MTpjYXNlIDE4MTpjYXNlIDE4MjpjYXNlIDI0MjpjYXNlIDE4MzpjYXNlIDE4NDpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0NTpjYXNlIDE2NTpjYXNlIDE3ODpjYXNlIDE3OTpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSAxNjg6Y2FzZSAxNjk6Y2FzZSAxNzU6Y2FzZSAxNzA6Y2FzZSAxNzE6Y2FzZSAxNzI6Y2FzZSA5NzpjYXNlIDc2OmNhc2UgMzI6Y2FzZSAxNzM6Y2FzZSAzNTpyZXR1cm4tMTtjYXNlIDE3NjpjYXNlIDE3NzpjYXNlIDc6Y2FzZSAxNTU6Y2FzZSA4OmNhc2UgMTU3OmNhc2UgMTI1OmNhc2UgMTI2OmNhc2UgOTI6Y2FzZSA5MzpjYXNlIDEyOTpjYXNlIDEzMDpjYXNlIDEzMTpjYXNlIDk0OmNhc2UgOTE6cmV0dXJuIDE7Y2FzZSA3NDpjYXNlIDYwOmNhc2UgNjk6Y2FzZSA3MDpjYXNlIDQ6cmV0dXJuIDEwMjQ7Y2FzZSAzMTpjYXNlIDQyOmNhc2UgNzI6cmV0dXJuIDMyO2Nhc2UgODc6Y2FzZSAyNjpjYXNlIDMzOnJldHVybiAyMTQ3NDgzNjQ3O2Nhc2UgMzQ6Y2FzZSAxOnJldHVybiA0NzgzOTtjYXNlIDM4OmNhc2UgMzY6cmV0dXJuIDk5O2Nhc2UgNDM6Y2FzZSAzNzpyZXR1cm4gMjA0ODtjYXNlIDA6cmV0dXJuIDIwOTcxNTI7Y2FzZSAzOnJldHVybiA2NTUzNjtjYXNlIDI4OnJldHVybiAzMjc2ODtjYXNlIDQ0OnJldHVybiAzMjc2NztjYXNlIDc1OnJldHVybiAxNjM4NDtjYXNlIDM5OnJldHVybiAxZTM7Y2FzZSA4OTpyZXR1cm4gNzAwO2Nhc2UgNzE6cmV0dXJuIDI1NjtjYXNlIDQwOnJldHVybiAyNTU7Y2FzZSAyOnJldHVybiAxMDA7Y2FzZSAxODA6cmV0dXJuIDY0O2Nhc2UgMjU6cmV0dXJuIDIwO2Nhc2UgNTpyZXR1cm4gMTY7Y2FzZSA2OnJldHVybiA2O2Nhc2UgNzM6cmV0dXJuIDQ7Y2FzZSA4NDpyZXR1cm4gMX1fX19zZXRFcnJObyhFUlJOT19DT0RFUy5FSU5WQUwpO3JldHVybi0xfU1vZHVsZVsiX2JpdHNoaWZ0NjRMc2hyIl09X2JpdHNoaWZ0NjRMc2hyO2Z1bmN0aW9uIF9wdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCl7cmV0dXJuIDB9ZnVuY3Rpb24gX19leGl0KHN0YXR1cyl7TW9kdWxlWyJleGl0Il0oc3RhdHVzKX1mdW5jdGlvbiBfZXhpdChzdGF0dXMpe19fZXhpdChzdGF0dXMpfWZ1bmN0aW9uIF9fWlN0OXRlcm1pbmF0ZXYoKXtfZXhpdCgtMTIzNCl9ZnVuY3Rpb24gX3B0aHJlYWRfbXV0ZXhfdW5sb2NrKCl7fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX21lbWNweV9iaWcoZGVzdCxzcmMsbnVtKXtIRUFQVTguc2V0KEhFQVBVOC5zdWJhcnJheShzcmMsc3JjK251bSksZGVzdCk7cmV0dXJuIGRlc3R9TW9kdWxlWyJfbWVtY3B5Il09X21lbWNweTtmdW5jdGlvbiBfc2JyayhieXRlcyl7dmFyIHNlbGY9X3Nicms7aWYoIXNlbGYuY2FsbGVkKXtEWU5BTUlDVE9QPWFsaWduTWVtb3J5UGFnZShEWU5BTUlDVE9QKTtzZWxmLmNhbGxlZD10cnVlO2Fzc2VydChSdW50aW1lLmR5bmFtaWNBbGxvYyk7c2VsZi5hbGxvYz1SdW50aW1lLmR5bmFtaWNBbGxvYztSdW50aW1lLmR5bmFtaWNBbGxvYz0oZnVuY3Rpb24oKXthYm9ydCgiY2Fubm90IGR5bmFtaWNhbGx5IGFsbG9jYXRlLCBzYnJrIG5vdyBoYXMgY29udHJvbCIpfSl9dmFyIHJldD1EWU5BTUlDVE9QO2lmKGJ5dGVzIT0wKXNlbGYuYWxsb2MoYnl0ZXMpO3JldHVybiByZXR9ZnVuY3Rpb24gX25ld2xvY2FsZShtYXNrLGxvY2FsZSxiYXNlKXtyZXR1cm4gX21hbGxvYyg0KX1Nb2R1bGVbIl9tZW1tb3ZlIl09X21lbW1vdmU7ZnVuY3Rpb24gX19fZXJybm9fbG9jYXRpb24oKXtyZXR1cm4gX19fZXJybm9fc3RhdGV9ZnVuY3Rpb24gX3N0cmVycm9yX3IoZXJybnVtLHN0cmVycmJ1ZixidWZsZW4pe2lmKGVycm51bSBpbiBFUlJOT19NRVNTQUdFUyl7aWYoRVJSTk9fTUVTU0FHRVNbZXJybnVtXS5sZW5ndGg+YnVmbGVuLTEpe3JldHVybiBfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FUkFOR0UpfWVsc2V7dmFyIG1zZz1FUlJOT19NRVNTQUdFU1tlcnJudW1dO3dyaXRlQXNjaWlUb01lbW9yeShtc2csc3RyZXJyYnVmKTtyZXR1cm4gMH19ZWxzZXtyZXR1cm4gX19fc2V0RXJyTm8oRVJSTk9fQ09ERVMuRUlOVkFMKX19ZnVuY3Rpb24gX3N0cmVycm9yKGVycm51bSl7aWYoIV9zdHJlcnJvci5idWZmZXIpX3N0cmVycm9yLmJ1ZmZlcj1fbWFsbG9jKDI1Nik7X3N0cmVycm9yX3IoZXJybnVtLF9zdHJlcnJvci5idWZmZXIsMjU2KTtyZXR1cm4gX3N0cmVycm9yLmJ1ZmZlcn1mdW5jdGlvbiBfcHRocmVhZF9tdXRleF9kZXN0cm95KCl7fWZ1bmN0aW9uIF9jYXRjbG9zZShjYXRkKXtyZXR1cm4gMH1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldygpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfX19jeGFfZ3VhcmRfcmVsZWFzZSgpe31mdW5jdGlvbiBfdW5nZXRjKGMsc3RyZWFtKXtzdHJlYW09RlMuZ2V0U3RyZWFtRnJvbVB0cihzdHJlYW0pO2lmKCFzdHJlYW0pe3JldHVybi0xfWlmKGM9PT0tMSl7cmV0dXJuIGN9Yz11blNpZ24oYyYyNTUpO3N0cmVhbS51bmdvdHRlbi5wdXNoKGMpO3N0cmVhbS5lb2Y9ZmFsc2U7cmV0dXJuIGN9ZnVuY3Rpb24gX3VzZWxvY2FsZShsb2NhbGUpe3JldHVybiAwfWZ1bmN0aW9uIF92c25wcmludGYocyxuLGZvcm1hdCx2YV9hcmcpe3JldHVybiBfc25wcmludGYocyxuLGZvcm1hdCxIRUFQMzJbdmFfYXJnPj4yXSl9ZnVuY3Rpb24gX19nZXRGbG9hdCh0ZXh0KXtyZXR1cm4vXlsrLV0/WzAtOV0qXC4/WzAtOV0rKFtlRV1bKy1dP1swLTldKyk/Ly5leGVjKHRleHQpfWZ1bmN0aW9uIF9fc2NhblN0cmluZyhmb3JtYXQsZ2V0LHVuZ2V0LHZhcmFyZ3Mpe2lmKCFfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSl7X19zY2FuU3RyaW5nLndoaXRlU3BhY2U9e307X19zY2FuU3RyaW5nLndoaXRlU3BhY2VbMzJdPTE7X19zY2FuU3RyaW5nLndoaXRlU3BhY2VbOV09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMF09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMV09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMl09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxM109MX1mb3JtYXQ9UG9pbnRlcl9zdHJpbmdpZnkoZm9ybWF0KTt2YXIgc29GYXI9MDtpZihmb3JtYXQuaW5kZXhPZigiJW4iKT49MCl7dmFyIF9nZXQ9Z2V0O2dldD1mdW5jdGlvbiBnZXQoKXtzb0ZhcisrO3JldHVybiBfZ2V0KCl9O3ZhciBfdW5nZXQ9dW5nZXQ7dW5nZXQ9ZnVuY3Rpb24gdW5nZXQoKXtzb0Zhci0tO3JldHVybiBfdW5nZXQoKX19dmFyIGZvcm1hdEluZGV4PTA7dmFyIGFyZ3NpPTA7dmFyIGZpZWxkcz0wO3ZhciBhcmdJbmRleD0wO3ZhciBuZXh0O21haW5Mb29wOmZvcih2YXIgZm9ybWF0SW5kZXg9MDtmb3JtYXRJbmRleDxmb3JtYXQubGVuZ3RoOyl7aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIiYmZm9ybWF0W2Zvcm1hdEluZGV4KzFdPT0ibiIpe3ZhciBhcmdQdHI9SEVBUDMyW3ZhcmFyZ3MrYXJnSW5kZXg+PjJdO2FyZ0luZGV4Kz1SdW50aW1lLmdldEFsaWduU2l6ZSgidm9pZCoiLG51bGwsdHJ1ZSk7SEVBUDMyW2FyZ1B0cj4+Ml09c29GYXI7Zm9ybWF0SW5kZXgrPTI7Y29udGludWV9aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIil7dmFyIG5leHRDPWZvcm1hdC5pbmRleE9mKCJjIixmb3JtYXRJbmRleCsxKTtpZihuZXh0Qz4wKXt2YXIgbWF4eD0xO2lmKG5leHRDPmZvcm1hdEluZGV4KzEpe3ZhciBzdWI9Zm9ybWF0LnN1YnN0cmluZyhmb3JtYXRJbmRleCsxLG5leHRDKTttYXh4PXBhcnNlSW50KHN1Yik7aWYobWF4eCE9c3ViKW1heHg9MH1pZihtYXh4KXt2YXIgYXJnUHRyPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXTthcmdJbmRleCs9UnVudGltZS5nZXRBbGlnblNpemUoInZvaWQqIixudWxsLHRydWUpO2ZpZWxkcysrO2Zvcih2YXIgaT0wO2k8bWF4eDtpKyspe25leHQ9Z2V0KCk7SEVBUDhbYXJnUHRyKys+PjBdPW5leHQ7aWYobmV4dD09PTApcmV0dXJuIGk+MD9maWVsZHM6ZmllbGRzLTF9Zm9ybWF0SW5kZXgrPW5leHRDLWZvcm1hdEluZGV4KzE7Y29udGludWV9fX1pZihmb3JtYXRbZm9ybWF0SW5kZXhdPT09IiUiJiZmb3JtYXQuaW5kZXhPZigiWyIsZm9ybWF0SW5kZXgrMSk+MCl7dmFyIG1hdGNoPS9cJShbMC05XSopXFsoXF4pPyhcXT9bXlxdXSopXF0vLmV4ZWMoZm9ybWF0LnN1YnN0cmluZyhmb3JtYXRJbmRleCkpO2lmKG1hdGNoKXt2YXIgbWF4TnVtQ2hhcmFjdGVycz1wYXJzZUludChtYXRjaFsxXSl8fEluZmluaXR5O3ZhciBuZWdhdGVTY2FuTGlzdD1tYXRjaFsyXT09PSJeIjt2YXIgc2Nhbkxpc3Q9bWF0Y2hbM107dmFyIG1pZGRsZURhc2hNYXRjaDt3aGlsZShtaWRkbGVEYXNoTWF0Y2g9LyhbXlwtXSlcLShbXlwtXSkvLmV4ZWMoc2Nhbkxpc3QpKXt2YXIgcmFuZ2VTdGFydENoYXJDb2RlPW1pZGRsZURhc2hNYXRjaFsxXS5jaGFyQ29kZUF0KDApO3ZhciByYW5nZUVuZENoYXJDb2RlPW1pZGRsZURhc2hNYXRjaFsyXS5jaGFyQ29kZUF0KDApO2Zvcih2YXIgZXhwYW5kZWQ9IiI7cmFuZ2VTdGFydENoYXJDb2RlPD1yYW5nZUVuZENoYXJDb2RlO2V4cGFuZGVkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHJhbmdlU3RhcnRDaGFyQ29kZSsrKSk7c2Nhbkxpc3Q9c2Nhbkxpc3QucmVwbGFjZShtaWRkbGVEYXNoTWF0Y2hbMV0rIi0iK21pZGRsZURhc2hNYXRjaFsyXSxleHBhbmRlZCl9dmFyIGFyZ1B0cj1IRUFQMzJbdmFyYXJncythcmdJbmRleD4+Ml07YXJnSW5kZXgrPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKCJ2b2lkKiIsbnVsbCx0cnVlKTtmaWVsZHMrKztmb3IodmFyIGk9MDtpPG1heE51bUNoYXJhY3RlcnM7aSsrKXtuZXh0PWdldCgpO2lmKG5lZ2F0ZVNjYW5MaXN0KXtpZihzY2FuTGlzdC5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpPDApe0hFQVA4W2FyZ1B0cisrPj4wXT1uZXh0fWVsc2V7dW5nZXQoKTticmVha319ZWxzZXtpZihzY2FuTGlzdC5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpPj0wKXtIRUFQOFthcmdQdHIrKz4+MF09bmV4dH1lbHNle3VuZ2V0KCk7YnJlYWt9fX1IRUFQOFthcmdQdHIrKz4+MF09MDtmb3JtYXRJbmRleCs9bWF0Y2hbMF0ubGVuZ3RoO2NvbnRpbnVlfX13aGlsZSgxKXtuZXh0PWdldCgpO2lmKG5leHQ9PTApcmV0dXJuIGZpZWxkcztpZighKG5leHQgaW4gX19zY2FuU3RyaW5nLndoaXRlU3BhY2UpKWJyZWFrfXVuZ2V0KCk7aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIil7Zm9ybWF0SW5kZXgrKzt2YXIgc3VwcHJlc3NBc3NpZ25tZW50PWZhbHNlO2lmKGZvcm1hdFtmb3JtYXRJbmRleF09PSIqIil7c3VwcHJlc3NBc3NpZ25tZW50PXRydWU7Zm9ybWF0SW5kZXgrK312YXIgbWF4U3BlY2lmaWVyU3RhcnQ9Zm9ybWF0SW5kZXg7d2hpbGUoZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApPj00OCYmZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApPD01Nyl7Zm9ybWF0SW5kZXgrK312YXIgbWF4XztpZihmb3JtYXRJbmRleCE9bWF4U3BlY2lmaWVyU3RhcnQpe21heF89cGFyc2VJbnQoZm9ybWF0LnNsaWNlKG1heFNwZWNpZmllclN0YXJ0LGZvcm1hdEluZGV4KSwxMCl9dmFyIGxvbmdfPWZhbHNlO3ZhciBoYWxmPWZhbHNlO3ZhciBxdWFydGVyPWZhbHNlO3ZhciBsb25nTG9uZz1mYWxzZTtpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0ibCIpe2xvbmdfPXRydWU7Zm9ybWF0SW5kZXgrKztpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0ibCIpe2xvbmdMb25nPXRydWU7Zm9ybWF0SW5kZXgrK319ZWxzZSBpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0iaCIpe2hhbGY9dHJ1ZTtmb3JtYXRJbmRleCsrO2lmKGZvcm1hdFtmb3JtYXRJbmRleF09PSJoIil7cXVhcnRlcj10cnVlO2Zvcm1hdEluZGV4Kyt9fXZhciB0eXBlPWZvcm1hdFtmb3JtYXRJbmRleF07Zm9ybWF0SW5kZXgrKzt2YXIgY3Vycj0wO3ZhciBidWZmZXI9W107aWYodHlwZT09ImYifHx0eXBlPT0iZSJ8fHR5cGU9PSJnInx8dHlwZT09IkYifHx0eXBlPT0iRSJ8fHR5cGU9PSJHIil7bmV4dD1nZXQoKTt3aGlsZShuZXh0PjAmJiEobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSkpe2J1ZmZlci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpO25leHQ9Z2V0KCl9dmFyIG09X19nZXRGbG9hdChidWZmZXIuam9pbigiIikpO3ZhciBsYXN0PW0/bVswXS5sZW5ndGg6MDtmb3IodmFyIGk9MDtpPGJ1ZmZlci5sZW5ndGgtbGFzdCsxO2krKyl7dW5nZXQoKX1idWZmZXIubGVuZ3RoPWxhc3R9ZWxzZXtuZXh0PWdldCgpO3ZhciBmaXJzdD10cnVlO2lmKCh0eXBlPT0ieCJ8fHR5cGU9PSJYIikmJm5leHQ9PTQ4KXt2YXIgcGVlaz1nZXQoKTtpZihwZWVrPT0xMjB8fHBlZWs9PTg4KXtuZXh0PWdldCgpfWVsc2V7dW5nZXQoKX19d2hpbGUoKGN1cnI8bWF4X3x8aXNOYU4obWF4XykpJiZuZXh0PjApe2lmKCEobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSkmJih0eXBlPT0icyJ8fCh0eXBlPT09ImQifHx0eXBlPT0idSJ8fHR5cGU9PSJpIikmJihuZXh0Pj00OCYmbmV4dDw9NTd8fGZpcnN0JiZuZXh0PT00NSl8fCh0eXBlPT09IngifHx0eXBlPT09IlgiKSYmKG5leHQ+PTQ4JiZuZXh0PD01N3x8bmV4dD49OTcmJm5leHQ8PTEwMnx8bmV4dD49NjUmJm5leHQ8PTcwKSkmJihmb3JtYXRJbmRleD49Zm9ybWF0Lmxlbmd0aHx8bmV4dCE9PWZvcm1hdFtmb3JtYXRJbmRleF0uY2hhckNvZGVBdCgwKSkpe2J1ZmZlci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpO25leHQ9Z2V0KCk7Y3VycisrO2ZpcnN0PWZhbHNlfWVsc2V7YnJlYWt9fXVuZ2V0KCl9aWYoYnVmZmVyLmxlbmd0aD09PTApcmV0dXJuIDA7aWYoc3VwcHJlc3NBc3NpZ25tZW50KWNvbnRpbnVlO3ZhciB0ZXh0PWJ1ZmZlci5qb2luKCIiKTt2YXIgYXJnUHRyPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXTthcmdJbmRleCs9UnVudGltZS5nZXRBbGlnblNpemUoInZvaWQqIixudWxsLHRydWUpO3ZhciBiYXNlPTEwO3N3aXRjaCh0eXBlKXtjYXNlIlgiOmNhc2UieCI6YmFzZT0xNjtjYXNlImQiOmNhc2UidSI6Y2FzZSJpIjppZihxdWFydGVyKXtIRUFQOFthcmdQdHI+PjBdPXBhcnNlSW50KHRleHQsYmFzZSl9ZWxzZSBpZihoYWxmKXtIRUFQMTZbYXJnUHRyPj4xXT1wYXJzZUludCh0ZXh0LGJhc2UpfWVsc2UgaWYobG9uZ0xvbmcpe3RlbXBJNjQ9W3BhcnNlSW50KHRleHQsYmFzZSk+Pj4wLCh0ZW1wRG91YmxlPXBhcnNlSW50KHRleHQsYmFzZSksK01hdGhfYWJzKHRlbXBEb3VibGUpPj0rMT90ZW1wRG91YmxlPiswPyhNYXRoX21pbigrTWF0aF9mbG9vcih0ZW1wRG91YmxlLys0Mjk0OTY3Mjk2KSwrNDI5NDk2NzI5NSl8MCk+Pj4wOn5+K01hdGhfY2VpbCgodGVtcERvdWJsZS0gKyh+fnRlbXBEb3VibGU+Pj4wKSkvKzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2FyZ1B0cj4+Ml09dGVtcEk2NFswXSxIRUFQMzJbYXJnUHRyKzQ+PjJdPXRlbXBJNjRbMV19ZWxzZXtIRUFQMzJbYXJnUHRyPj4yXT1wYXJzZUludCh0ZXh0LGJhc2UpfWJyZWFrO2Nhc2UiRiI6Y2FzZSJmIjpjYXNlIkUiOmNhc2UiZSI6Y2FzZSJHIjpjYXNlImciOmNhc2UiRSI6aWYobG9uZ18pe0hFQVBGNjRbYXJnUHRyPj4zXT1wYXJzZUZsb2F0KHRleHQpfWVsc2V7SEVBUEYzMlthcmdQdHI+PjJdPXBhcnNlRmxvYXQodGV4dCl9YnJlYWs7Y2FzZSJzIjp2YXIgYXJyYXk9aW50QXJyYXlGcm9tU3RyaW5nKHRleHQpO2Zvcih2YXIgaj0wO2o8YXJyYXkubGVuZ3RoO2orKyl7SEVBUDhbYXJnUHRyK2o+PjBdPWFycmF5W2pdfWJyZWFrfWZpZWxkcysrfWVsc2UgaWYoZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApaW4gX19zY2FuU3RyaW5nLndoaXRlU3BhY2Upe25leHQ9Z2V0KCk7d2hpbGUobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSl7aWYobmV4dDw9MClicmVhayBtYWluTG9vcDtuZXh0PWdldCgpfXVuZ2V0KG5leHQpO2Zvcm1hdEluZGV4Kyt9ZWxzZXtuZXh0PWdldCgpO2lmKGZvcm1hdFtmb3JtYXRJbmRleF0uY2hhckNvZGVBdCgwKSE9PW5leHQpe3VuZ2V0KG5leHQpO2JyZWFrIG1haW5Mb29wfWZvcm1hdEluZGV4Kyt9fXJldHVybiBmaWVsZHN9ZnVuY3Rpb24gX3NzY2FuZihzLGZvcm1hdCx2YXJhcmdzKXt2YXIgaW5kZXg9MDtmdW5jdGlvbiBnZXQoKXtyZXR1cm4gSEVBUDhbcytpbmRleCsrPj4wXX1mdW5jdGlvbiB1bmdldCgpe2luZGV4LS19cmV0dXJuIF9fc2NhblN0cmluZyhmb3JtYXQsZ2V0LHVuZ2V0LHZhcmFyZ3MpfWZ1bmN0aW9uIF92c3NjYW5mKHMsZm9ybWF0LHZhX2FyZyl7cmV0dXJuIF9zc2NhbmYocyxmb3JtYXQsSEVBUDMyW3ZhX2FyZz4+Ml0pfWZ1bmN0aW9uIF9fX2Fzc2VydF9mYWlsKGNvbmRpdGlvbixmaWxlbmFtZSxsaW5lLGZ1bmMpe0FCT1JUPXRydWU7dGhyb3ciQXNzZXJ0aW9uIGZhaWxlZDogIitQb2ludGVyX3N0cmluZ2lmeShjb25kaXRpb24pKyIsIGF0OiAiK1tmaWxlbmFtZT9Qb2ludGVyX3N0cmluZ2lmeShmaWxlbmFtZSk6InVua25vd24gZmlsZW5hbWUiLGxpbmUsZnVuYz9Qb2ludGVyX3N0cmluZ2lmeShmdW5jKToidW5rbm93biBmdW5jdGlvbiJdKyIgYXQgIitzdGFja1RyYWNlKCl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdm9pZCgpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl92b2lkIik7YWJvcnQoLTEpfU1vZHVsZVsiX21lbXNldCJdPV9tZW1zZXQ7dmFyIF9CSXRvRD10cnVlO2Z1bmN0aW9uIF9faXNMZWFwWWVhcih5ZWFyKXtyZXR1cm4geWVhciU0PT09MCYmKHllYXIlMTAwIT09MHx8eWVhciU0MDA9PT0wKX1mdW5jdGlvbiBfX2FycmF5U3VtKGFycmF5LGluZGV4KXt2YXIgc3VtPTA7Zm9yKHZhciBpPTA7aTw9aW5kZXg7c3VtKz1hcnJheVtpKytdKTtyZXR1cm4gc3VtfXZhciBfX01PTlRIX0RBWVNfTEVBUD1bMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO3ZhciBfX01PTlRIX0RBWVNfUkVHVUxBUj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIF9fYWRkRGF5cyhkYXRlLGRheXMpe3ZhciBuZXdEYXRlPW5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTt3aGlsZShkYXlzPjApe3ZhciBsZWFwPV9faXNMZWFwWWVhcihuZXdEYXRlLmdldEZ1bGxZZWFyKCkpO3ZhciBjdXJyZW50TW9udGg9bmV3RGF0ZS5nZXRNb250aCgpO3ZhciBkYXlzSW5DdXJyZW50TW9udGg9KGxlYXA/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIpW2N1cnJlbnRNb250aF07aWYoZGF5cz5kYXlzSW5DdXJyZW50TW9udGgtbmV3RGF0ZS5nZXREYXRlKCkpe2RheXMtPWRheXNJbkN1cnJlbnRNb250aC1uZXdEYXRlLmdldERhdGUoKSsxO25ld0RhdGUuc2V0RGF0ZSgxKTtpZihjdXJyZW50TW9udGg8MTEpe25ld0RhdGUuc2V0TW9udGgoY3VycmVudE1vbnRoKzEpfWVsc2V7bmV3RGF0ZS5zZXRNb250aCgwKTtuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSsxKX19ZWxzZXtuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkrZGF5cyk7cmV0dXJuIG5ld0RhdGV9fXJldHVybiBuZXdEYXRlfWZ1bmN0aW9uIF9zdHJmdGltZShzLG1heHNpemUsZm9ybWF0LHRtKXt2YXIgZGF0ZT17dG1fc2VjOkhFQVAzMlt0bT4+Ml0sdG1fbWluOkhFQVAzMlt0bSs0Pj4yXSx0bV9ob3VyOkhFQVAzMlt0bSs4Pj4yXSx0bV9tZGF5OkhFQVAzMlt0bSsxMj4+Ml0sdG1fbW9uOkhFQVAzMlt0bSsxNj4+Ml0sdG1feWVhcjpIRUFQMzJbdG0rMjA+PjJdLHRtX3dkYXk6SEVBUDMyW3RtKzI0Pj4yXSx0bV95ZGF5OkhFQVAzMlt0bSsyOD4+Ml0sdG1faXNkc3Q6SEVBUDMyW3RtKzMyPj4yXX07dmFyIHBhdHRlcm49UG9pbnRlcl9zdHJpbmdpZnkoZm9ybWF0KTt2YXIgRVhQQU5TSU9OX1JVTEVTXzE9eyIlYyI6IiVhICViICVkICVIOiVNOiVTICVZIiwiJUQiOiIlbS8lZC8leSIsIiVGIjoiJVktJW0tJWQiLCIlaCI6IiViIiwiJXIiOiIlSTolTTolUyAlcCIsIiVSIjoiJUg6JU0iLCIlVCI6IiVIOiVNOiVTIiwiJXgiOiIlbS8lZC8leSIsIiVYIjoiJUg6JU06JVMifTtmb3IodmFyIHJ1bGUgaW4gRVhQQU5TSU9OX1JVTEVTXzEpe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18xW3J1bGVdKX12YXIgV0VFS0RBWVM9WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdO3ZhciBNT05USFM9WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdO2Z1bmN0aW9uIGxlYWRpbmdTb21ldGhpbmcodmFsdWUsZGlnaXRzLGNoYXJhY3Rlcil7dmFyIHN0cj10eXBlb2YgdmFsdWU9PT0ibnVtYmVyIj92YWx1ZS50b1N0cmluZygpOnZhbHVlfHwiIjt3aGlsZShzdHIubGVuZ3RoPGRpZ2l0cyl7c3RyPWNoYXJhY3RlclswXStzdHJ9cmV0dXJuIHN0cn1mdW5jdGlvbiBsZWFkaW5nTnVsbHModmFsdWUsZGlnaXRzKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyh2YWx1ZSxkaWdpdHMsIjAiKX1mdW5jdGlvbiBjb21wYXJlQnlEYXkoZGF0ZTEsZGF0ZTIpe2Z1bmN0aW9uIHNnbih2YWx1ZSl7cmV0dXJuIHZhbHVlPDA/LTE6dmFsdWU+MD8xOjB9dmFyIGNvbXBhcmU7aWYoKGNvbXBhcmU9c2duKGRhdGUxLmdldEZ1bGxZZWFyKCktZGF0ZTIuZ2V0RnVsbFllYXIoKSkpPT09MCl7aWYoKGNvbXBhcmU9c2duKGRhdGUxLmdldE1vbnRoKCktZGF0ZTIuZ2V0TW9udGgoKSkpPT09MCl7Y29tcGFyZT1zZ24oZGF0ZTEuZ2V0RGF0ZSgpLWRhdGUyLmdldERhdGUoKSl9fXJldHVybiBjb21wYXJlfWZ1bmN0aW9uIGdldEZpcnN0V2Vla1N0YXJ0RGF0ZShqYW5Gb3VydGgpe3N3aXRjaChqYW5Gb3VydGguZ2V0RGF5KCkpe2Nhc2UgMDpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCktMSwxMSwyOSk7Y2FzZSAxOnJldHVybiBqYW5Gb3VydGg7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSwwLDMpO2Nhc2UgMzpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCksMCwyKTtjYXNlIDQ6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKS0xLDExLDMxKTtjYXNlIDY6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLTEsMTEsMzApfX1mdW5jdGlvbiBnZXRXZWVrQmFzZWRZZWFyKGRhdGUpe3ZhciB0aGlzRGF0ZT1fX2FkZERheXMobmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsMCwxKSxkYXRlLnRtX3lkYXkpO3ZhciBqYW5Gb3VydGhUaGlzWWVhcj1uZXcgRGF0ZSh0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLDAsNCk7dmFyIGphbkZvdXJ0aE5leHRZZWFyPW5ldyBEYXRlKHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkrMSwwLDQpO3ZhciBmaXJzdFdlZWtTdGFydFRoaXNZZWFyPWdldEZpcnN0V2Vla1N0YXJ0RGF0ZShqYW5Gb3VydGhUaGlzWWVhcik7dmFyIGZpcnN0V2Vla1N0YXJ0TmV4dFllYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aE5leHRZZWFyKTtpZihjb21wYXJlQnlEYXkoZmlyc3RXZWVrU3RhcnRUaGlzWWVhcix0aGlzRGF0ZSk8PTApe2lmKGNvbXBhcmVCeURheShmaXJzdFdlZWtTdGFydE5leHRZZWFyLHRoaXNEYXRlKTw9MCl7cmV0dXJuIHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkrMX1lbHNle3JldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpfX1lbHNle3JldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLTF9fXZhciBFWFBBTlNJT05fUlVMRVNfMj17IiVhIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIFdFRUtEQVlTW2RhdGUudG1fd2RheV0uc3Vic3RyaW5nKDAsMyl9KSwiJUEiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gV0VFS0RBWVNbZGF0ZS50bV93ZGF5XX0pLCIlYiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBNT05USFNbZGF0ZS50bV9tb25dLnN1YnN0cmluZygwLDMpfSksIiVCIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIE1PTlRIU1tkYXRlLnRtX21vbl19KSwiJUMiOihmdW5jdGlvbihkYXRlKXt2YXIgeWVhcj1kYXRlLnRtX3llYXIrMTkwMDtyZXR1cm4gbGVhZGluZ051bGxzKE1hdGguZmxvb3IoeWVhci8xMDApLDIpfSksIiVkIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX21kYXksMil9KSwiJWUiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyhkYXRlLnRtX21kYXksMiwiICIpfSksIiVnIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGdldFdlZWtCYXNlZFllYXIoZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9KSwiJUciOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gZ2V0V2Vla0Jhc2VkWWVhcihkYXRlKX0pLCIlSCI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9ob3VyLDIpfSksIiVJIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX2hvdXI8MTM/ZGF0ZS50bV9ob3VyOmRhdGUudG1faG91ci0xMiwyKX0pLCIlaiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tZGF5K19fYXJyYXlTdW0oX19pc0xlYXBZZWFyKGRhdGUudG1feWVhcisxOTAwKT9fX01PTlRIX0RBWVNfTEVBUDpfX01PTlRIX0RBWVNfUkVHVUxBUixkYXRlLnRtX21vbi0xKSwzKX0pLCIlbSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tb24rMSwyKX0pLCIlTSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9taW4sMil9KSwiJW4iOihmdW5jdGlvbigpe3JldHVybiJcbiJ9KSwiJXAiOihmdW5jdGlvbihkYXRlKXtpZihkYXRlLnRtX2hvdXI+MCYmZGF0ZS50bV9ob3VyPDEzKXtyZXR1cm4iQU0ifWVsc2V7cmV0dXJuIlBNIn19KSwiJVMiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fc2VjLDIpfSksIiV0IjooZnVuY3Rpb24oKXtyZXR1cm4iXHQifSksIiV1IjooZnVuY3Rpb24oZGF0ZSl7dmFyIGRheT1uZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCxkYXRlLnRtX21vbisxLGRhdGUudG1fbWRheSwwLDAsMCwwKTtyZXR1cm4gZGF5LmdldERheSgpfHw3fSksIiVVIjooZnVuY3Rpb24oZGF0ZSl7dmFyIGphbkZpcnN0PW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLDAsMSk7dmFyIGZpcnN0U3VuZGF5PWphbkZpcnN0LmdldERheSgpPT09MD9qYW5GaXJzdDpfX2FkZERheXMoamFuRmlyc3QsNy1qYW5GaXJzdC5nZXREYXkoKSk7dmFyIGVuZERhdGU9bmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsZGF0ZS50bV9tb24sZGF0ZS50bV9tZGF5KTtpZihjb21wYXJlQnlEYXkoZmlyc3RTdW5kYXksZW5kRGF0ZSk8MCl7dmFyIGZlYnJ1YXJ5Rmlyc3RVbnRpbEVuZE1vbnRoPV9fYXJyYXlTdW0oX19pc0xlYXBZZWFyKGVuZERhdGUuZ2V0RnVsbFllYXIoKSk/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIsZW5kRGF0ZS5nZXRNb250aCgpLTEpLTMxO3ZhciBmaXJzdFN1bmRheVVudGlsRW5kSmFudWFyeT0zMS1maXJzdFN1bmRheS5nZXREYXRlKCk7dmFyIGRheXM9Zmlyc3RTdW5kYXlVbnRpbEVuZEphbnVhcnkrZmVicnVhcnlGaXJzdFVudGlsRW5kTW9udGgrZW5kRGF0ZS5nZXREYXRlKCk7cmV0dXJuIGxlYWRpbmdOdWxscyhNYXRoLmNlaWwoZGF5cy83KSwyKX1yZXR1cm4gY29tcGFyZUJ5RGF5KGZpcnN0U3VuZGF5LGphbkZpcnN0KT09PTA/IjAxIjoiMDAifSksIiVWIjooZnVuY3Rpb24oZGF0ZSl7dmFyIGphbkZvdXJ0aFRoaXNZZWFyPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLDAsNCk7dmFyIGphbkZvdXJ0aE5leHRZZWFyPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAxLDAsNCk7dmFyIGZpcnN0V2Vla1N0YXJ0VGhpc1llYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aFRoaXNZZWFyKTt2YXIgZmlyc3RXZWVrU3RhcnROZXh0WWVhcj1nZXRGaXJzdFdlZWtTdGFydERhdGUoamFuRm91cnRoTmV4dFllYXIpO3ZhciBlbmREYXRlPV9fYWRkRGF5cyhuZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCwwLDEpLGRhdGUudG1feWRheSk7aWYoY29tcGFyZUJ5RGF5KGVuZERhdGUsZmlyc3RXZWVrU3RhcnRUaGlzWWVhcik8MCl7cmV0dXJuIjUzIn1pZihjb21wYXJlQnlEYXkoZmlyc3RXZWVrU3RhcnROZXh0WWVhcixlbmREYXRlKTw9MCl7cmV0dXJuIjAxIn12YXIgZGF5c0RpZmZlcmVuY2U7aWYoZmlyc3RXZWVrU3RhcnRUaGlzWWVhci5nZXRGdWxsWWVhcigpPGRhdGUudG1feWVhcisxOTAwKXtkYXlzRGlmZmVyZW5jZT1kYXRlLnRtX3lkYXkrMzItZmlyc3RXZWVrU3RhcnRUaGlzWWVhci5nZXREYXRlKCl9ZWxzZXtkYXlzRGlmZmVyZW5jZT1kYXRlLnRtX3lkYXkrMS1maXJzdFdlZWtTdGFydFRoaXNZZWFyLmdldERhdGUoKX1yZXR1cm4gbGVhZGluZ051bGxzKE1hdGguY2VpbChkYXlzRGlmZmVyZW5jZS83KSwyKX0pLCIldyI6KGZ1bmN0aW9uKGRhdGUpe3ZhciBkYXk9bmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsZGF0ZS50bV9tb24rMSxkYXRlLnRtX21kYXksMCwwLDAsMCk7cmV0dXJuIGRheS5nZXREYXkoKX0pLCIlVyI6KGZ1bmN0aW9uKGRhdGUpe3ZhciBqYW5GaXJzdD1uZXcgRGF0ZShkYXRlLnRtX3llYXIsMCwxKTt2YXIgZmlyc3RNb25kYXk9amFuRmlyc3QuZ2V0RGF5KCk9PT0xP2phbkZpcnN0Ol9fYWRkRGF5cyhqYW5GaXJzdCxqYW5GaXJzdC5nZXREYXkoKT09PTA/MTo3LWphbkZpcnN0LmdldERheSgpKzEpO3ZhciBlbmREYXRlPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLGRhdGUudG1fbW9uLGRhdGUudG1fbWRheSk7aWYoY29tcGFyZUJ5RGF5KGZpcnN0TW9uZGF5LGVuZERhdGUpPDApe3ZhciBmZWJydWFyeUZpcnN0VW50aWxFbmRNb250aD1fX2FycmF5U3VtKF9faXNMZWFwWWVhcihlbmREYXRlLmdldEZ1bGxZZWFyKCkpP19fTU9OVEhfREFZU19MRUFQOl9fTU9OVEhfREFZU19SRUdVTEFSLGVuZERhdGUuZ2V0TW9udGgoKS0xKS0zMTt2YXIgZmlyc3RNb25kYXlVbnRpbEVuZEphbnVhcnk9MzEtZmlyc3RNb25kYXkuZ2V0RGF0ZSgpO3ZhciBkYXlzPWZpcnN0TW9uZGF5VW50aWxFbmRKYW51YXJ5K2ZlYnJ1YXJ5Rmlyc3RVbnRpbEVuZE1vbnRoK2VuZERhdGUuZ2V0RGF0ZSgpO3JldHVybiBsZWFkaW5nTnVsbHMoTWF0aC5jZWlsKGRheXMvNyksMil9cmV0dXJuIGNvbXBhcmVCeURheShmaXJzdE1vbmRheSxqYW5GaXJzdCk9PT0wPyIwMSI6IjAwIn0pLCIleSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybihkYXRlLnRtX3llYXIrMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9KSwiJVkiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gZGF0ZS50bV95ZWFyKzE5MDB9KSwiJXoiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4iIn0pLCIlWiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiIifSksIiUlIjooZnVuY3Rpb24oKXtyZXR1cm4iJSJ9KX07Zm9yKHZhciBydWxlIGluIEVYUEFOU0lPTl9SVUxFU18yKXtpZihwYXR0ZXJuLmluZGV4T2YocnVsZSk+PTApe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18yW3J1bGVdKGRhdGUpKX19dmFyIGJ5dGVzPWludEFycmF5RnJvbVN0cmluZyhwYXR0ZXJuLGZhbHNlKTtpZihieXRlcy5sZW5ndGg+bWF4c2l6ZSl7cmV0dXJuIDB9d3JpdGVBcnJheVRvTWVtb3J5KGJ5dGVzLHMpO3JldHVybiBieXRlcy5sZW5ndGgtMX1mdW5jdGlvbiBfc3RyZnRpbWVfbChzLG1heHNpemUsZm9ybWF0LHRtKXtyZXR1cm4gX3N0cmZ0aW1lKHMsbWF4c2l6ZSxmb3JtYXQsdG0pfWZ1bmN0aW9uIF9hYm9ydCgpe01vZHVsZVsiYWJvcnQiXSgpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzKCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzIik7YWJvcnQoLTEpfWZ1bmN0aW9uIF9wdGhyZWFkX2NvbmRfd2FpdCgpe3JldHVybiAwfXZhciBfZmFicz1NYXRoX2Ficzt2YXIgX2dldGM9X2ZnZXRjO2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlciIpO2Fib3J0KC0xKX12YXIgQnJvd3Nlcj17bWFpbkxvb3A6e3NjaGVkdWxlcjpudWxsLG1ldGhvZDoiIixzaG91bGRQYXVzZTpmYWxzZSxwYXVzZWQ6ZmFsc2UscXVldWU6W10scGF1c2U6KGZ1bmN0aW9uKCl7QnJvd3Nlci5tYWluTG9vcC5zaG91bGRQYXVzZT10cnVlfSkscmVzdW1lOihmdW5jdGlvbigpe2lmKEJyb3dzZXIubWFpbkxvb3AucGF1c2VkKXtCcm93c2VyLm1haW5Mb29wLnBhdXNlZD1mYWxzZTtCcm93c2VyLm1haW5Mb29wLnNjaGVkdWxlcigpfUJyb3dzZXIubWFpbkxvb3Auc2hvdWxkUGF1c2U9ZmFsc2V9KSx1cGRhdGVTdGF0dXM6KGZ1bmN0aW9uKCl7aWYoTW9kdWxlWyJzZXRTdGF0dXMiXSl7dmFyIG1lc3NhZ2U9TW9kdWxlWyJzdGF0dXNNZXNzYWdlIl18fCJQbGVhc2Ugd2FpdC4uLiI7dmFyIHJlbWFpbmluZz1Ccm93c2VyLm1haW5Mb29wLnJlbWFpbmluZ0Jsb2NrZXJzO3ZhciBleHBlY3RlZD1Ccm93c2VyLm1haW5Mb29wLmV4cGVjdGVkQmxvY2tlcnM7aWYocmVtYWluaW5nKXtpZihyZW1haW5pbmc8ZXhwZWN0ZWQpe01vZHVsZVsic2V0U3RhdHVzIl0obWVzc2FnZSsiICgiKyhleHBlY3RlZC1yZW1haW5pbmcpKyIvIitleHBlY3RlZCsiKSIpfWVsc2V7TW9kdWxlWyJzZXRTdGF0dXMiXShtZXNzYWdlKX19ZWxzZXtNb2R1bGVbInNldFN0YXR1cyJdKCIiKX19fSl9LGlzRnVsbFNjcmVlbjpmYWxzZSxwb2ludGVyTG9jazpmYWxzZSxtb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxiYWNrczpbXSx3b3JrZXJzOltdLGluaXQ6KGZ1bmN0aW9uKCl7aWYoIU1vZHVsZVsicHJlbG9hZFBsdWdpbnMiXSlNb2R1bGVbInByZWxvYWRQbHVnaW5zIl09W107aWYoQnJvd3Nlci5pbml0dGVkfHxFTlZJUk9OTUVOVF9JU19XT1JLRVIpcmV0dXJuO0Jyb3dzZXIuaW5pdHRlZD10cnVlO3RyeXtuZXcgQmxvYjtCcm93c2VyLmhhc0Jsb2JDb25zdHJ1Y3Rvcj10cnVlfWNhdGNoKGUpe0Jyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yPWZhbHNlO2NvbnNvbGUubG9nKCJ3YXJuaW5nOiBubyBibG9iIGNvbnN0cnVjdG9yLCBjYW5ub3QgY3JlYXRlIGJsb2JzIHdpdGggbWltZXR5cGVzIil9QnJvd3Nlci5CbG9iQnVpbGRlcj10eXBlb2YgTW96QmxvYkJ1aWxkZXIhPSJ1bmRlZmluZWQiP01vekJsb2JCdWlsZGVyOnR5cGVvZiBXZWJLaXRCbG9iQnVpbGRlciE9InVuZGVmaW5lZCI/V2ViS2l0QmxvYkJ1aWxkZXI6IUJyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yP2NvbnNvbGUubG9nKCJ3YXJuaW5nOiBubyBCbG9iQnVpbGRlciIpOm51bGw7QnJvd3Nlci5VUkxPYmplY3Q9dHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCI/d2luZG93LlVSTD93aW5kb3cuVVJMOndpbmRvdy53ZWJraXRVUkw6dW5kZWZpbmVkO2lmKCFNb2R1bGUubm9JbWFnZURlY29kaW5nJiZ0eXBlb2YgQnJvd3Nlci5VUkxPYmplY3Q9PT0idW5kZWZpbmVkIil7Y29uc29sZS5sb2coIndhcm5pbmc6IEJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBjcmVhdGluZyBvYmplY3QgVVJMcy4gQnVpbHQtaW4gYnJvd3NlciBpbWFnZSBkZWNvZGluZyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIik7TW9kdWxlLm5vSW1hZ2VEZWNvZGluZz10cnVlfXZhciBpbWFnZVBsdWdpbj17fTtpbWFnZVBsdWdpblsiY2FuSGFuZGxlIl09ZnVuY3Rpb24gaW1hZ2VQbHVnaW5fY2FuSGFuZGxlKG5hbWUpe3JldHVybiFNb2R1bGUubm9JbWFnZURlY29kaW5nJiYvXC4oanBnfGpwZWd8cG5nfGJtcCkkL2kudGVzdChuYW1lKX07aW1hZ2VQbHVnaW5bImhhbmRsZSJdPWZ1bmN0aW9uIGltYWdlUGx1Z2luX2hhbmRsZShieXRlQXJyYXksbmFtZSxvbmxvYWQsb25lcnJvcil7dmFyIGI9bnVsbDtpZihCcm93c2VyLmhhc0Jsb2JDb25zdHJ1Y3Rvcil7dHJ5e2I9bmV3IEJsb2IoW2J5dGVBcnJheV0se3R5cGU6QnJvd3Nlci5nZXRNaW1ldHlwZShuYW1lKX0pO2lmKGIuc2l6ZSE9PWJ5dGVBcnJheS5sZW5ndGgpe2I9bmV3IEJsb2IoWyhuZXcgVWludDhBcnJheShieXRlQXJyYXkpKS5idWZmZXJdLHt0eXBlOkJyb3dzZXIuZ2V0TWltZXR5cGUobmFtZSl9KX19Y2F0Y2goZSl7UnVudGltZS53YXJuT25jZSgiQmxvYiBjb25zdHJ1Y3RvciBwcmVzZW50IGJ1dCBmYWlsczogIitlKyI7IGZhbGxpbmcgYmFjayB0byBibG9iIGJ1aWxkZXIiKX19aWYoIWIpe3ZhciBiYj1uZXcgQnJvd3Nlci5CbG9iQnVpbGRlcjtiYi5hcHBlbmQoKG5ldyBVaW50OEFycmF5KGJ5dGVBcnJheSkpLmJ1ZmZlcik7Yj1iYi5nZXRCbG9iKCl9dmFyIHVybD1Ccm93c2VyLlVSTE9iamVjdC5jcmVhdGVPYmplY3RVUkwoYik7dmFyIGltZz1uZXcgSW1hZ2U7aW1nLm9ubG9hZD1mdW5jdGlvbiBpbWdfb25sb2FkKCl7YXNzZXJ0KGltZy5jb21wbGV0ZSwiSW1hZ2UgIituYW1lKyIgY291bGQgbm90IGJlIGRlY29kZWQiKTt2YXIgY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2NhbnZhcy53aWR0aD1pbWcud2lkdGg7Y2FudmFzLmhlaWdodD1pbWcuaGVpZ2h0O3ZhciBjdHg9Y2FudmFzLmdldENvbnRleHQoIjJkIik7Y3R4LmRyYXdJbWFnZShpbWcsMCwwKTtNb2R1bGVbInByZWxvYWRlZEltYWdlcyJdW25hbWVdPWNhbnZhcztCcm93c2VyLlVSTE9iamVjdC5yZXZva2VPYmplY3RVUkwodXJsKTtpZihvbmxvYWQpb25sb2FkKGJ5dGVBcnJheSl9O2ltZy5vbmVycm9yPWZ1bmN0aW9uIGltZ19vbmVycm9yKGV2ZW50KXtjb25zb2xlLmxvZygiSW1hZ2UgIit1cmwrIiBjb3VsZCBub3QgYmUgZGVjb2RlZCIpO2lmKG9uZXJyb3Ipb25lcnJvcigpfTtpbWcuc3JjPXVybH07TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLnB1c2goaW1hZ2VQbHVnaW4pO3ZhciBhdWRpb1BsdWdpbj17fTthdWRpb1BsdWdpblsiY2FuSGFuZGxlIl09ZnVuY3Rpb24gYXVkaW9QbHVnaW5fY2FuSGFuZGxlKG5hbWUpe3JldHVybiFNb2R1bGUubm9BdWRpb0RlY29kaW5nJiZuYW1lLnN1YnN0cigtNClpbnsiLm9nZyI6MSwiLndhdiI6MSwiLm1wMyI6MX19O2F1ZGlvUGx1Z2luWyJoYW5kbGUiXT1mdW5jdGlvbiBhdWRpb1BsdWdpbl9oYW5kbGUoYnl0ZUFycmF5LG5hbWUsb25sb2FkLG9uZXJyb3Ipe3ZhciBkb25lPWZhbHNlO2Z1bmN0aW9uIGZpbmlzaChhdWRpbyl7aWYoZG9uZSlyZXR1cm47ZG9uZT10cnVlO01vZHVsZVsicHJlbG9hZGVkQXVkaW9zIl1bbmFtZV09YXVkaW87aWYob25sb2FkKW9ubG9hZChieXRlQXJyYXkpfWZ1bmN0aW9uIGZhaWwoKXtpZihkb25lKXJldHVybjtkb25lPXRydWU7TW9kdWxlWyJwcmVsb2FkZWRBdWRpb3MiXVtuYW1lXT1uZXcgQXVkaW87aWYob25lcnJvcilvbmVycm9yKCl9aWYoQnJvd3Nlci5oYXNCbG9iQ29uc3RydWN0b3Ipe3RyeXt2YXIgYj1uZXcgQmxvYihbYnl0ZUFycmF5XSx7dHlwZTpCcm93c2VyLmdldE1pbWV0eXBlKG5hbWUpfSl9Y2F0Y2goZSl7cmV0dXJuIGZhaWwoKX12YXIgdXJsPUJyb3dzZXIuVVJMT2JqZWN0LmNyZWF0ZU9iamVjdFVSTChiKTt2YXIgYXVkaW89bmV3IEF1ZGlvO2F1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoImNhbnBsYXl0aHJvdWdoIiwoZnVuY3Rpb24oKXtmaW5pc2goYXVkaW8pfSksZmFsc2UpO2F1ZGlvLm9uZXJyb3I9ZnVuY3Rpb24gYXVkaW9fb25lcnJvcihldmVudCl7aWYoZG9uZSlyZXR1cm47Y29uc29sZS5sb2coIndhcm5pbmc6IGJyb3dzZXIgY291bGQgbm90IGZ1bGx5IGRlY29kZSBhdWRpbyAiK25hbWUrIiwgdHJ5aW5nIHNsb3dlciBiYXNlNjQgYXBwcm9hY2giKTtmdW5jdGlvbiBlbmNvZGU2NChkYXRhKXt2YXIgQkFTRT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7dmFyIFBBRD0iPSI7dmFyIHJldD0iIjt2YXIgbGVmdGNoYXI9MDt2YXIgbGVmdGJpdHM9MDtmb3IodmFyIGk9MDtpPGRhdGEubGVuZ3RoO2krKyl7bGVmdGNoYXI9bGVmdGNoYXI8PDh8ZGF0YVtpXTtsZWZ0Yml0cys9ODt3aGlsZShsZWZ0Yml0cz49Nil7dmFyIGN1cnI9bGVmdGNoYXI+PmxlZnRiaXRzLTYmNjM7bGVmdGJpdHMtPTY7cmV0Kz1CQVNFW2N1cnJdfX1pZihsZWZ0Yml0cz09Mil7cmV0Kz1CQVNFWyhsZWZ0Y2hhciYzKTw8NF07cmV0Kz1QQUQrUEFEfWVsc2UgaWYobGVmdGJpdHM9PTQpe3JldCs9QkFTRVsobGVmdGNoYXImMTUpPDwyXTtyZXQrPVBBRH1yZXR1cm4gcmV0fWF1ZGlvLnNyYz0iZGF0YTphdWRpby94LSIrbmFtZS5zdWJzdHIoLTMpKyI7YmFzZTY0LCIrZW5jb2RlNjQoYnl0ZUFycmF5KTtmaW5pc2goYXVkaW8pfTthdWRpby5zcmM9dXJsO0Jyb3dzZXIuc2FmZVNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZmluaXNoKGF1ZGlvKX0pLDFlNCl9ZWxzZXtyZXR1cm4gZmFpbCgpfX07TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLnB1c2goYXVkaW9QbHVnaW4pO3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtpZihjYW52YXMpe2NhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2s9Y2FudmFzWyJyZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJtb3pSZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJ3ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJtc1JlcXVlc3RQb2ludGVyTG9jayJdfHwoZnVuY3Rpb24oKXt9KTtjYW52YXMuZXhpdFBvaW50ZXJMb2NrPWRvY3VtZW50WyJleGl0UG9pbnRlckxvY2siXXx8ZG9jdW1lbnRbIm1vekV4aXRQb2ludGVyTG9jayJdfHxkb2N1bWVudFsid2Via2l0RXhpdFBvaW50ZXJMb2NrIl18fGRvY3VtZW50WyJtc0V4aXRQb2ludGVyTG9jayJdfHwoZnVuY3Rpb24oKXt9KTtjYW52YXMuZXhpdFBvaW50ZXJMb2NrPWNhbnZhcy5leGl0UG9pbnRlckxvY2suYmluZChkb2N1bWVudCk7ZnVuY3Rpb24gcG9pbnRlckxvY2tDaGFuZ2UoKXtCcm93c2VyLnBvaW50ZXJMb2NrPWRvY3VtZW50WyJwb2ludGVyTG9ja0VsZW1lbnQiXT09PWNhbnZhc3x8ZG9jdW1lbnRbIm1velBvaW50ZXJMb2NrRWxlbWVudCJdPT09Y2FudmFzfHxkb2N1bWVudFsid2Via2l0UG9pbnRlckxvY2tFbGVtZW50Il09PT1jYW52YXN8fGRvY3VtZW50WyJtc1BvaW50ZXJMb2NrRWxlbWVudCJdPT09Y2FudmFzfWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJsb2NrY2hhbmdlIixwb2ludGVyTG9ja0NoYW5nZSxmYWxzZSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW96cG9pbnRlcmxvY2tjaGFuZ2UiLHBvaW50ZXJMb2NrQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2NoYW5nZSIscG9pbnRlckxvY2tDaGFuZ2UsZmFsc2UpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1zcG9pbnRlcmxvY2tjaGFuZ2UiLHBvaW50ZXJMb2NrQ2hhbmdlLGZhbHNlKTtpZihNb2R1bGVbImVsZW1lbnRQb2ludGVyTG9jayJdKXtjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbihldil7aWYoIUJyb3dzZXIucG9pbnRlckxvY2smJmNhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2spe2NhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2soKTtldi5wcmV2ZW50RGVmYXVsdCgpfX0pLGZhbHNlKX19fSksY3JlYXRlQ29udGV4dDooZnVuY3Rpb24oY2FudmFzLHVzZVdlYkdMLHNldEluTW9kdWxlLHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpe3ZhciBjdHg7dmFyIGVycm9ySW5mbz0iPyI7ZnVuY3Rpb24gb25Db250ZXh0Q3JlYXRpb25FcnJvcihldmVudCl7ZXJyb3JJbmZvPWV2ZW50LnN0YXR1c01lc3NhZ2V8fGVycm9ySW5mb310cnl7aWYodXNlV2ViR0wpe3ZhciBjb250ZXh0QXR0cmlidXRlcz17YW50aWFsaWFzOmZhbHNlLGFscGhhOmZhbHNlfTtpZih3ZWJHTENvbnRleHRBdHRyaWJ1dGVzKXtmb3IodmFyIGF0dHJpYnV0ZSBpbiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzKXtjb250ZXh0QXR0cmlidXRlc1thdHRyaWJ1dGVdPXdlYkdMQ29udGV4dEF0dHJpYnV0ZXNbYXR0cmlidXRlXX19Y2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLG9uQ29udGV4dENyZWF0aW9uRXJyb3IsZmFsc2UpO3RyeXtbImV4cGVyaW1lbnRhbC13ZWJnbCIsIndlYmdsIl0uc29tZSgoZnVuY3Rpb24od2ViZ2xJZCl7cmV0dXJuIGN0eD1jYW52YXMuZ2V0Q29udGV4dCh3ZWJnbElkLGNvbnRleHRBdHRyaWJ1dGVzKX0pKX1maW5hbGx5e2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIixvbkNvbnRleHRDcmVhdGlvbkVycm9yLGZhbHNlKX19ZWxzZXtjdHg9Y2FudmFzLmdldENvbnRleHQoIjJkIil9aWYoIWN0eCl0aHJvdyI6KCJ9Y2F0Y2goZSl7TW9kdWxlLnByaW50KCJDb3VsZCBub3QgY3JlYXRlIGNhbnZhczogIitbZXJyb3JJbmZvLGVdKTtyZXR1cm4gbnVsbH1pZih1c2VXZWJHTCl7Y2FudmFzLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iYmxhY2sifWlmKHNldEluTW9kdWxlKXtHTGN0eD1Nb2R1bGUuY3R4PWN0eDtNb2R1bGUudXNlV2ViR0w9dXNlV2ViR0w7QnJvd3Nlci5tb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihjYWxsYmFjayl7Y2FsbGJhY2soKX0pKTtCcm93c2VyLmluaXQoKX1yZXR1cm4gY3R4fSksZGVzdHJveUNvbnRleHQ6KGZ1bmN0aW9uKGNhbnZhcyx1c2VXZWJHTCxzZXRJbk1vZHVsZSl7fSksZnVsbFNjcmVlbkhhbmRsZXJzSW5zdGFsbGVkOmZhbHNlLGxvY2tQb2ludGVyOnVuZGVmaW5lZCxyZXNpemVDYW52YXM6dW5kZWZpbmVkLHJlcXVlc3RGdWxsU2NyZWVuOihmdW5jdGlvbihsb2NrUG9pbnRlcixyZXNpemVDYW52YXMpe0Jyb3dzZXIubG9ja1BvaW50ZXI9bG9ja1BvaW50ZXI7QnJvd3Nlci5yZXNpemVDYW52YXM9cmVzaXplQ2FudmFzO2lmKHR5cGVvZiBCcm93c2VyLmxvY2tQb2ludGVyPT09InVuZGVmaW5lZCIpQnJvd3Nlci5sb2NrUG9pbnRlcj10cnVlO2lmKHR5cGVvZiBCcm93c2VyLnJlc2l6ZUNhbnZhcz09PSJ1bmRlZmluZWQiKUJyb3dzZXIucmVzaXplQ2FudmFzPWZhbHNlO3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtmdW5jdGlvbiBmdWxsU2NyZWVuQ2hhbmdlKCl7QnJvd3Nlci5pc0Z1bGxTY3JlZW49ZmFsc2U7dmFyIGNhbnZhc0NvbnRhaW5lcj1jYW52YXMucGFyZW50Tm9kZTtpZigoZG9jdW1lbnRbIndlYmtpdEZ1bGxTY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1vekZ1bGxzY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJmdWxsU2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsiZnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKT09PWNhbnZhc0NvbnRhaW5lcil7Y2FudmFzLmNhbmNlbEZ1bGxTY3JlZW49ZG9jdW1lbnRbImNhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIm1vekNhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIndlYmtpdENhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIm1zRXhpdEZ1bGxzY3JlZW4iXXx8ZG9jdW1lbnRbImV4aXRGdWxsc2NyZWVuIl18fChmdW5jdGlvbigpe30pO2NhbnZhcy5jYW5jZWxGdWxsU2NyZWVuPWNhbnZhcy5jYW5jZWxGdWxsU2NyZWVuLmJpbmQoZG9jdW1lbnQpO2lmKEJyb3dzZXIubG9ja1BvaW50ZXIpY2FudmFzLnJlcXVlc3RQb2ludGVyTG9jaygpO0Jyb3dzZXIuaXNGdWxsU2NyZWVuPXRydWU7aWYoQnJvd3Nlci5yZXNpemVDYW52YXMpQnJvd3Nlci5zZXRGdWxsU2NyZWVuQ2FudmFzU2l6ZSgpfWVsc2V7Y2FudmFzQ29udGFpbmVyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNhbnZhcyxjYW52YXNDb250YWluZXIpO2NhbnZhc0NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNhbnZhc0NvbnRhaW5lcik7aWYoQnJvd3Nlci5yZXNpemVDYW52YXMpQnJvd3Nlci5zZXRXaW5kb3dlZENhbnZhc1NpemUoKX1pZihNb2R1bGVbIm9uRnVsbFNjcmVlbiJdKU1vZHVsZVsib25GdWxsU2NyZWVuIl0oQnJvd3Nlci5pc0Z1bGxTY3JlZW4pO0Jyb3dzZXIudXBkYXRlQ2FudmFzRGltZW5zaW9ucyhjYW52YXMpfWlmKCFCcm93c2VyLmZ1bGxTY3JlZW5IYW5kbGVyc0luc3RhbGxlZCl7QnJvd3Nlci5mdWxsU2NyZWVuSGFuZGxlcnNJbnN0YWxsZWQ9dHJ1ZTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3pmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJNU0Z1bGxzY3JlZW5DaGFuZ2UiLGZ1bGxTY3JlZW5DaGFuZ2UsZmFsc2UpfXZhciBjYW52YXNDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Y2FudmFzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNhbnZhc0NvbnRhaW5lcixjYW52YXMpO2NhbnZhc0NvbnRhaW5lci5hcHBlbmRDaGlsZChjYW52YXMpO2NhbnZhc0NvbnRhaW5lci5yZXF1ZXN0RnVsbFNjcmVlbj1jYW52YXNDb250YWluZXJbInJlcXVlc3RGdWxsU2NyZWVuIl18fGNhbnZhc0NvbnRhaW5lclsibW96UmVxdWVzdEZ1bGxTY3JlZW4iXXx8Y2FudmFzQ29udGFpbmVyWyJtc1JlcXVlc3RGdWxsc2NyZWVuIl18fChjYW52YXNDb250YWluZXJbIndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuIl0/KGZ1bmN0aW9uKCl7Y2FudmFzQ29udGFpbmVyWyJ3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiJdKEVsZW1lbnRbIkFMTE9XX0tFWUJPQVJEX0lOUFVUIl0pfSk6bnVsbCk7Y2FudmFzQ29udGFpbmVyLnJlcXVlc3RGdWxsU2NyZWVuKCl9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpe2lmKHR5cGVvZiB3aW5kb3c9PT0idW5kZWZpbmVkIil7c2V0VGltZW91dChmdW5jLDFlMy82MCl9ZWxzZXtpZighd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSl7d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT13aW5kb3dbInJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIm1velJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl18fHdpbmRvd1sib1JlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbInNldFRpbWVvdXQiXX13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpfX0sc2FmZUNhbGxiYWNrOihmdW5jdGlvbihmdW5jKXtyZXR1cm4oZnVuY3Rpb24oKXtpZighQUJPUlQpcmV0dXJuIGZ1bmMuYXBwbHkobnVsbCxhcmd1bWVudHMpfSl9KSxzYWZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lOihmdW5jdGlvbihmdW5jKXtyZXR1cm4gQnJvd3Nlci5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7aWYoIUFCT1JUKWZ1bmMoKX0pKX0pLHNhZmVTZXRUaW1lb3V0OihmdW5jdGlvbihmdW5jLHRpbWVvdXQpe01vZHVsZVsibm9FeGl0UnVudGltZSJdPXRydWU7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aWYoIUFCT1JUKWZ1bmMoKX0pLHRpbWVvdXQpfSksc2FmZVNldEludGVydmFsOihmdW5jdGlvbihmdW5jLHRpbWVvdXQpe01vZHVsZVsibm9FeGl0UnVudGltZSJdPXRydWU7cmV0dXJuIHNldEludGVydmFsKChmdW5jdGlvbigpe2lmKCFBQk9SVClmdW5jKCl9KSx0aW1lb3V0KX0pLGdldE1pbWV0eXBlOihmdW5jdGlvbihuYW1lKXtyZXR1cm57ImpwZyI6ImltYWdlL2pwZWciLCJqcGVnIjoiaW1hZ2UvanBlZyIsInBuZyI6ImltYWdlL3BuZyIsImJtcCI6ImltYWdlL2JtcCIsIm9nZyI6ImF1ZGlvL29nZyIsIndhdiI6ImF1ZGlvL3dhdiIsIm1wMyI6ImF1ZGlvL21wZWcifVtuYW1lLnN1YnN0cihuYW1lLmxhc3RJbmRleE9mKCIuIikrMSldfSksZ2V0VXNlck1lZGlhOihmdW5jdGlvbihmdW5jKXtpZighd2luZG93LmdldFVzZXJNZWRpYSl7d2luZG93LmdldFVzZXJNZWRpYT1uYXZpZ2F0b3JbImdldFVzZXJNZWRpYSJdfHxuYXZpZ2F0b3JbIm1vekdldFVzZXJNZWRpYSJdfXdpbmRvdy5nZXRVc2VyTWVkaWEoZnVuYyl9KSxnZXRNb3ZlbWVudFg6KGZ1bmN0aW9uKGV2ZW50KXtyZXR1cm4gZXZlbnRbIm1vdmVtZW50WCJdfHxldmVudFsibW96TW92ZW1lbnRYIl18fGV2ZW50WyJ3ZWJraXRNb3ZlbWVudFgiXXx8MH0pLGdldE1vdmVtZW50WTooZnVuY3Rpb24oZXZlbnQpe3JldHVybiBldmVudFsibW92ZW1lbnRZIl18fGV2ZW50WyJtb3pNb3ZlbWVudFkiXXx8ZXZlbnRbIndlYmtpdE1vdmVtZW50WSJdfHwwfSksZ2V0TW91c2VXaGVlbERlbHRhOihmdW5jdGlvbihldmVudCl7dmFyIGRlbHRhPTA7c3dpdGNoKGV2ZW50LnR5cGUpe2Nhc2UiRE9NTW91c2VTY3JvbGwiOmRlbHRhPWV2ZW50LmRldGFpbDticmVhaztjYXNlIm1vdXNld2hlZWwiOmRlbHRhPS1ldmVudC53aGVlbERlbHRhO2JyZWFrO2Nhc2Uid2hlZWwiOmRlbHRhPWV2ZW50LmRlbHRhWTticmVhaztkZWZhdWx0OnRocm93InVucmVjb2duaXplZCBtb3VzZSB3aGVlbCBldmVudDogIitldmVudC50eXBlfXJldHVybiBNYXRoLm1heCgtMSxNYXRoLm1pbigxLGRlbHRhKSl9KSxtb3VzZVg6MCxtb3VzZVk6MCxtb3VzZU1vdmVtZW50WDowLG1vdXNlTW92ZW1lbnRZOjAsdG91Y2hlczp7fSxsYXN0VG91Y2hlczp7fSxjYWxjdWxhdGVNb3VzZUV2ZW50OihmdW5jdGlvbihldmVudCl7aWYoQnJvd3Nlci5wb2ludGVyTG9jayl7aWYoZXZlbnQudHlwZSE9Im1vdXNlbW92ZSImJiJtb3pNb3ZlbWVudFgiaW4gZXZlbnQpe0Jyb3dzZXIubW91c2VNb3ZlbWVudFg9QnJvd3Nlci5tb3VzZU1vdmVtZW50WT0wfWVsc2V7QnJvd3Nlci5tb3VzZU1vdmVtZW50WD1Ccm93c2VyLmdldE1vdmVtZW50WChldmVudCk7QnJvd3Nlci5tb3VzZU1vdmVtZW50WT1Ccm93c2VyLmdldE1vdmVtZW50WShldmVudCl9aWYodHlwZW9mIFNETCE9InVuZGVmaW5lZCIpe0Jyb3dzZXIubW91c2VYPVNETC5tb3VzZVgrQnJvd3Nlci5tb3VzZU1vdmVtZW50WDtCcm93c2VyLm1vdXNlWT1TREwubW91c2VZK0Jyb3dzZXIubW91c2VNb3ZlbWVudFl9ZWxzZXtCcm93c2VyLm1vdXNlWCs9QnJvd3Nlci5tb3VzZU1vdmVtZW50WDtCcm93c2VyLm1vdXNlWSs9QnJvd3Nlci5tb3VzZU1vdmVtZW50WX19ZWxzZXt2YXIgcmVjdD1Nb2R1bGVbImNhbnZhcyJdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBjdz1Nb2R1bGVbImNhbnZhcyJdLndpZHRoO3ZhciBjaD1Nb2R1bGVbImNhbnZhcyJdLmhlaWdodDt2YXIgc2Nyb2xsWD10eXBlb2Ygd2luZG93LnNjcm9sbFghPT0idW5kZWZpbmVkIj93aW5kb3cuc2Nyb2xsWDp3aW5kb3cucGFnZVhPZmZzZXQ7dmFyIHNjcm9sbFk9dHlwZW9mIHdpbmRvdy5zY3JvbGxZIT09InVuZGVmaW5lZCI/d2luZG93LnNjcm9sbFk6d2luZG93LnBhZ2VZT2Zmc2V0O2lmKGV2ZW50LnR5cGU9PT0idG91Y2hzdGFydCJ8fGV2ZW50LnR5cGU9PT0idG91Y2hlbmQifHxldmVudC50eXBlPT09InRvdWNobW92ZSIpe3ZhciB0b3VjaD1ldmVudC50b3VjaDtpZih0b3VjaD09PXVuZGVmaW5lZCl7cmV0dXJufXZhciBhZGp1c3RlZFg9dG91Y2gucGFnZVgtKHNjcm9sbFgrcmVjdC5sZWZ0KTt2YXIgYWRqdXN0ZWRZPXRvdWNoLnBhZ2VZLShzY3JvbGxZK3JlY3QudG9wKTthZGp1c3RlZFg9YWRqdXN0ZWRYKihjdy9yZWN0LndpZHRoKTthZGp1c3RlZFk9YWRqdXN0ZWRZKihjaC9yZWN0LmhlaWdodCk7dmFyIGNvb3Jkcz17eDphZGp1c3RlZFgseTphZGp1c3RlZFl9O2lmKGV2ZW50LnR5cGU9PT0idG91Y2hzdGFydCIpe0Jyb3dzZXIubGFzdFRvdWNoZXNbdG91Y2guaWRlbnRpZmllcl09Y29vcmRzO0Jyb3dzZXIudG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXT1jb29yZHN9ZWxzZSBpZihldmVudC50eXBlPT09InRvdWNoZW5kInx8ZXZlbnQudHlwZT09PSJ0b3VjaG1vdmUiKXtCcm93c2VyLmxhc3RUb3VjaGVzW3RvdWNoLmlkZW50aWZpZXJdPUJyb3dzZXIudG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXTtCcm93c2VyLnRvdWNoZXNbdG91Y2guaWRlbnRpZmllcl09e3g6YWRqdXN0ZWRYLHk6YWRqdXN0ZWRZfX1yZXR1cm59dmFyIHg9ZXZlbnQucGFnZVgtKHNjcm9sbFgrcmVjdC5sZWZ0KTt2YXIgeT1ldmVudC5wYWdlWS0oc2Nyb2xsWStyZWN0LnRvcCk7eD14Kihjdy9yZWN0LndpZHRoKTt5PXkqKGNoL3JlY3QuaGVpZ2h0KTtCcm93c2VyLm1vdXNlTW92ZW1lbnRYPXgtQnJvd3Nlci5tb3VzZVg7QnJvd3Nlci5tb3VzZU1vdmVtZW50WT15LUJyb3dzZXIubW91c2VZO0Jyb3dzZXIubW91c2VYPXg7QnJvd3Nlci5tb3VzZVk9eX19KSx4aHJMb2FkOihmdW5jdGlvbih1cmwsb25sb2FkLG9uZXJyb3Ipe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCx0cnVlKTt4aHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7eGhyLm9ubG9hZD1mdW5jdGlvbiB4aHJfb25sb2FkKCl7aWYoeGhyLnN0YXR1cz09MjAwfHx4aHIuc3RhdHVzPT0wJiZ4aHIucmVzcG9uc2Upe29ubG9hZCh4aHIucmVzcG9uc2UpfWVsc2V7b25lcnJvcigpfX07eGhyLm9uZXJyb3I9b25lcnJvcjt4aHIuc2VuZChudWxsKX0pLGFzeW5jTG9hZDooZnVuY3Rpb24odXJsLG9ubG9hZCxvbmVycm9yLG5vUnVuRGVwKXtCcm93c2VyLnhockxvYWQodXJsLChmdW5jdGlvbihhcnJheUJ1ZmZlcil7YXNzZXJ0KGFycmF5QnVmZmVyLCdMb2FkaW5nIGRhdGEgZmlsZSAiJyt1cmwrJyIgZmFpbGVkIChubyBhcnJheUJ1ZmZlcikuJyk7b25sb2FkKG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7aWYoIW5vUnVuRGVwKXJlbW92ZVJ1bkRlcGVuZGVuY3koImFsICIrdXJsKX0pLChmdW5jdGlvbihldmVudCl7aWYob25lcnJvcil7b25lcnJvcigpfWVsc2V7dGhyb3cnTG9hZGluZyBkYXRhIGZpbGUgIicrdXJsKyciIGZhaWxlZC4nfX0pKTtpZighbm9SdW5EZXApYWRkUnVuRGVwZW5kZW5jeSgiYWwgIit1cmwpfSkscmVzaXplTGlzdGVuZXJzOltdLHVwZGF0ZVJlc2l6ZUxpc3RlbmVyczooZnVuY3Rpb24oKXt2YXIgY2FudmFzPU1vZHVsZVsiY2FudmFzIl07QnJvd3Nlci5yZXNpemVMaXN0ZW5lcnMuZm9yRWFjaCgoZnVuY3Rpb24obGlzdGVuZXIpe2xpc3RlbmVyKGNhbnZhcy53aWR0aCxjYW52YXMuaGVpZ2h0KX0pKX0pLHNldENhbnZhc1NpemU6KGZ1bmN0aW9uKHdpZHRoLGhlaWdodCxub1VwZGF0ZXMpe3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtCcm93c2VyLnVwZGF0ZUNhbnZhc0RpbWVuc2lvbnMoY2FudmFzLHdpZHRoLGhlaWdodCk7aWYoIW5vVXBkYXRlcylCcm93c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVycygpfSksd2luZG93ZWRXaWR0aDowLHdpbmRvd2VkSGVpZ2h0OjAsc2V0RnVsbFNjcmVlbkNhbnZhc1NpemU6KGZ1bmN0aW9uKCl7aWYodHlwZW9mIFNETCE9InVuZGVmaW5lZCIpe3ZhciBmbGFncz1IRUFQVTMyW1NETC5zY3JlZW4rUnVudGltZS5RVUFOVFVNX1NJWkUqMD4+Ml07ZmxhZ3M9ZmxhZ3N8ODM4ODYwODtIRUFQMzJbU0RMLnNjcmVlbitSdW50aW1lLlFVQU5UVU1fU0laRSowPj4yXT1mbGFnc31Ccm93c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVycygpfSksc2V0V2luZG93ZWRDYW52YXNTaXplOihmdW5jdGlvbigpe2lmKHR5cGVvZiBTREwhPSJ1bmRlZmluZWQiKXt2YXIgZmxhZ3M9SEVBUFUzMltTREwuc2NyZWVuK1J1bnRpbWUuUVVBTlRVTV9TSVpFKjA+PjJdO2ZsYWdzPWZsYWdzJn44Mzg4NjA4O0hFQVAzMltTREwuc2NyZWVuK1J1bnRpbWUuUVVBTlRVTV9TSVpFKjA+PjJdPWZsYWdzfUJyb3dzZXIudXBkYXRlUmVzaXplTGlzdGVuZXJzKCl9KSx1cGRhdGVDYW52YXNEaW1lbnNpb25zOihmdW5jdGlvbihjYW52YXMsd05hdGl2ZSxoTmF0aXZlKXtpZih3TmF0aXZlJiZoTmF0aXZlKXtjYW52YXMud2lkdGhOYXRpdmU9d05hdGl2ZTtjYW52YXMuaGVpZ2h0TmF0aXZlPWhOYXRpdmV9ZWxzZXt3TmF0aXZlPWNhbnZhcy53aWR0aE5hdGl2ZTtoTmF0aXZlPWNhbnZhcy5oZWlnaHROYXRpdmV9dmFyIHc9d05hdGl2ZTt2YXIgaD1oTmF0aXZlO2lmKE1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSYmTW9kdWxlWyJmb3JjZWRBc3BlY3RSYXRpbyJdPjApe2lmKHcvaDxNb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pe3c9TWF0aC5yb3VuZChoKk1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSl9ZWxzZXtoPU1hdGgucm91bmQody9Nb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pfX1pZigoZG9jdW1lbnRbIndlYmtpdEZ1bGxTY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1vekZ1bGxzY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJmdWxsU2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsiZnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKT09PWNhbnZhcy5wYXJlbnROb2RlJiZ0eXBlb2Ygc2NyZWVuIT0idW5kZWZpbmVkIil7dmFyIGZhY3Rvcj1NYXRoLm1pbihzY3JlZW4ud2lkdGgvdyxzY3JlZW4uaGVpZ2h0L2gpO3c9TWF0aC5yb3VuZCh3KmZhY3Rvcik7aD1NYXRoLnJvdW5kKGgqZmFjdG9yKX1pZihCcm93c2VyLnJlc2l6ZUNhbnZhcyl7aWYoY2FudmFzLndpZHRoIT13KWNhbnZhcy53aWR0aD13O2lmKGNhbnZhcy5oZWlnaHQhPWgpY2FudmFzLmhlaWdodD1oO2lmKHR5cGVvZiBjYW52YXMuc3R5bGUhPSJ1bmRlZmluZWQiKXtjYW52YXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Y2FudmFzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKX19ZWxzZXtpZihjYW52YXMud2lkdGghPXdOYXRpdmUpY2FudmFzLndpZHRoPXdOYXRpdmU7aWYoY2FudmFzLmhlaWdodCE9aE5hdGl2ZSljYW52YXMuaGVpZ2h0PWhOYXRpdmU7aWYodHlwZW9mIGNhbnZhcy5zdHlsZSE9InVuZGVmaW5lZCIpe2lmKHchPXdOYXRpdmV8fGghPWhOYXRpdmUpe2NhbnZhcy5zdHlsZS5zZXRQcm9wZXJ0eSgid2lkdGgiLHcrInB4IiwiaW1wb3J0YW50Iik7Y2FudmFzLnN0eWxlLnNldFByb3BlcnR5KCJoZWlnaHQiLGgrInB4IiwiaW1wb3J0YW50Iil9ZWxzZXtjYW52YXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Y2FudmFzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKX19fX0pfTtmdW5jdGlvbiBfX19jdHlwZV9iX2xvYygpe3ZhciBtZT1fX19jdHlwZV9iX2xvYztpZighbWUucmV0KXt2YXIgdmFsdWVzPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwyLDIsMiwyLDIsMiwyLDIsODE5NSw4MTk0LDgxOTQsODE5NCw4MTk0LDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDI0NTc3LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTt2YXIgaTE2c2l6ZT0yO3ZhciBhcnI9X21hbGxvYyh2YWx1ZXMubGVuZ3RoKmkxNnNpemUpO2Zvcih2YXIgaT0wO2k8dmFsdWVzLmxlbmd0aDtpKyspe0hFQVAxNlthcnIraSppMTZzaXplPj4xXT12YWx1ZXNbaV19bWUucmV0PWFsbG9jYXRlKFthcnIrMTI4KmkxNnNpemVdLCJpMTYqIixBTExPQ19OT1JNQUwpfXJldHVybiBtZS5yZXR9ZnVuY3Rpb24gX2ZyZWUoKXt9TW9kdWxlWyJfZnJlZSJdPV9mcmVlO2Z1bmN0aW9uIF9mcmVlbG9jYWxlKGxvY2FsZSl7X2ZyZWUobG9jYWxlKX1mdW5jdGlvbiBfX19jeGFfYWxsb2NhdGVfZXhjZXB0aW9uKHNpemUpe3ZhciBwdHI9X21hbGxvYyhzaXplK19fX2N4YV9leGNlcHRpb25faGVhZGVyX3NpemUpO3JldHVybiBwdHIrX19fY3hhX2V4Y2VwdGlvbl9oZWFkZXJfc2l6ZX1mdW5jdGlvbiBfZm1vZCh4LHkpe3JldHVybiB4JXl9dmFyIF9mbW9kbD1fZm1vZDtmdW5jdGlvbiBfY2F0b3BlbihuYW1lLG9mbGFnKXtyZXR1cm4tMX1mdW5jdGlvbiBfY2F0Z2V0cyhjYXRkLHNldF9pZCxtc2dfaWQscyl7cmV0dXJuIHN9ZnVuY3Rpb24gX3NwcmludGYocyxmb3JtYXQsdmFyYXJncyl7cmV0dXJuIF9zbnByaW50ZihzLHVuZGVmaW5lZCxmb3JtYXQsdmFyYXJncyl9ZnVuY3Rpb24gX2FzcHJpbnRmKHMsZm9ybWF0LHZhcmFyZ3Mpe3JldHVybiBfc3ByaW50Zigtcyxmb3JtYXQsdmFyYXJncyl9ZnVuY3Rpb24gX3Zhc3ByaW50ZihzLGZvcm1hdCx2YV9hcmcpe3JldHVybiBfYXNwcmludGYocyxmb3JtYXQsSEVBUDMyW3ZhX2FyZz4+Ml0pfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0KCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0Iik7YWJvcnQoLTEpfWZ1bmN0aW9uIF90aW1lKHB0cil7dmFyIHJldD1NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKTtpZihwdHIpe0hFQVAzMltwdHI+PjJdPXJldH1yZXR1cm4gcmV0fWZ1bmN0aW9uIF9jb3B5c2lnbihhLGIpe3JldHVybiBfX3JlYWxseU5lZ2F0aXZlKGEpPT09X19yZWFsbHlOZWdhdGl2ZShiKT9hOi1hfWZ1bmN0aW9uIF9fX2N0eXBlX3RvdXBwZXJfbG9jKCl7dmFyIG1lPV9fX2N0eXBlX3RvdXBwZXJfbG9jO2lmKCFtZS5yZXQpe3ZhciB2YWx1ZXM9WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwtMSwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDEyMywxMjQsMTI1LDEyNiwxMjcsMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NV07dmFyIGkzMnNpemU9NDt2YXIgYXJyPV9tYWxsb2ModmFsdWVzLmxlbmd0aCppMzJzaXplKTtmb3IodmFyIGk9MDtpPHZhbHVlcy5sZW5ndGg7aSsrKXtIRUFQMzJbYXJyK2kqaTMyc2l6ZT4+Ml09dmFsdWVzW2ldfW1lLnJldD1hbGxvY2F0ZShbYXJyKzEyOCppMzJzaXplXSwiaTMyKiIsQUxMT0NfTk9STUFMKX1yZXR1cm4gbWUucmV0fWZ1bmN0aW9uIF9fX2N4YV9ndWFyZF9hY3F1aXJlKHZhcmlhYmxlKXtpZighSEVBUDhbdmFyaWFibGU+PjBdKXtIRUFQOFt2YXJpYWJsZT4+MF09MTtyZXR1cm4gMX1yZXR1cm4gMH1mdW5jdGlvbiBfX19jdHlwZV90b2xvd2VyX2xvYygpe3ZhciBtZT1fX19jdHlwZV90b2xvd2VyX2xvYztpZighbWUucmV0KXt2YXIgdmFsdWVzPVsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsLTEsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyNywxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XTt2YXIgaTMyc2l6ZT00O3ZhciBhcnI9X21hbGxvYyh2YWx1ZXMubGVuZ3RoKmkzMnNpemUpO2Zvcih2YXIgaT0wO2k8dmFsdWVzLmxlbmd0aDtpKyspe0hFQVAzMlthcnIraSppMzJzaXplPj4yXT12YWx1ZXNbaV19bWUucmV0PWFsbG9jYXRlKFthcnIrMTI4KmkzMnNpemVdLCJpMzIqIixBTExPQ19OT1JNQUwpfXJldHVybiBtZS5yZXR9dmFyIF9fX2N4YV9jYXVnaHRfZXhjZXB0aW9ucz1bXTtmdW5jdGlvbiBfX19jeGFfYmVnaW5fY2F0Y2gocHRyKXtfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udi51bmNhdWdodF9leGNlcHRpb24tLTtfX19jeGFfY2F1Z2h0X2V4Y2VwdGlvbnMucHVzaChfX19jeGFfbGFzdF90aHJvd25fZXhjZXB0aW9uKTtyZXR1cm4gcHRyfU1vZHVsZVsiX2JpdHNoaWZ0NjRTaGwiXT1fYml0c2hpZnQ2NFNobDtmdW5jdGlvbiBfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYoKXtpZighX19aTktTdDlleGNlcHRpb240d2hhdEV2LmJ1ZmZlcil7dmFyIG5hbWU9InN0ZDo6ZXhjZXB0aW9uIjtfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYuYnVmZmVyPV9tYWxsb2MobmFtZS5sZW5ndGgrMSk7d3JpdGVTdHJpbmdUb01lbW9yeShuYW1lLF9fWk5LU3Q5ZXhjZXB0aW9uNHdoYXRFdi5idWZmZXIpfXJldHVybiBfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYuYnVmZmVyfWZ1bmN0aW9uIF9fWk5TdDlleGNlcHRpb25EMkV2KCl7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yKCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yIik7YWJvcnQoLTEpfXZhciBfY29weXNpZ25sPV9jb3B5c2lnbjtmdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbigpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiIpO2Fib3J0KC0xKX12YXIgX19aVElTdDlleGNlcHRpb249YWxsb2NhdGUoW2FsbG9jYXRlKFsxLDAsMCwwLDAsMCwwXSwiaTgiLEFMTE9DX1NUQVRJQykrOCwwXSwiaTMyIixBTExPQ19TVEFUSUMpO3ZhciBfX19kc29faGFuZGxlPWFsbG9jYXRlKDEsImkzMioiLEFMTE9DX1NUQVRJQyk7RlMuc3RhdGljSW5pdCgpO19fQVRJTklUX18udW5zaGlmdCh7ZnVuYzooZnVuY3Rpb24oKXtpZighTW9kdWxlWyJub0ZTSW5pdCJdJiYhRlMuaW5pdC5pbml0aWFsaXplZClGUy5pbml0KCl9KX0pO19fQVRNQUlOX18ucHVzaCh7ZnVuYzooZnVuY3Rpb24oKXtGUy5pZ25vcmVQZXJtaXNzaW9ucz1mYWxzZX0pfSk7X19BVEVYSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe0ZTLnF1aXQoKX0pfSk7TW9kdWxlWyJGU19jcmVhdGVGb2xkZXIiXT1GUy5jcmVhdGVGb2xkZXI7TW9kdWxlWyJGU19jcmVhdGVQYXRoIl09RlMuY3JlYXRlUGF0aDtNb2R1bGVbIkZTX2NyZWF0ZURhdGFGaWxlIl09RlMuY3JlYXRlRGF0YUZpbGU7TW9kdWxlWyJGU19jcmVhdGVQcmVsb2FkZWRGaWxlIl09RlMuY3JlYXRlUHJlbG9hZGVkRmlsZTtNb2R1bGVbIkZTX2NyZWF0ZUxhenlGaWxlIl09RlMuY3JlYXRlTGF6eUZpbGU7TW9kdWxlWyJGU19jcmVhdGVMaW5rIl09RlMuY3JlYXRlTGluaztNb2R1bGVbIkZTX2NyZWF0ZURldmljZSJdPUZTLmNyZWF0ZURldmljZTtfX19lcnJub19zdGF0ZT1SdW50aW1lLnN0YXRpY0FsbG9jKDQpO0hFQVAzMltfX19lcnJub19zdGF0ZT4+Ml09MDtfX0FUSU5JVF9fLnVuc2hpZnQoe2Z1bmM6KGZ1bmN0aW9uKCl7VFRZLmluaXQoKX0pfSk7X19BVEVYSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe1RUWS5zaHV0ZG93bigpfSl9KTtUVFkudXRmOD1uZXcgUnVudGltZS5VVEY4UHJvY2Vzc29yO2lmKEVOVklST05NRU5UX0lTX05PREUpe3ZhciBmcz1yZXF1aXJlKCJmcyIpO05PREVGUy5zdGF0aWNJbml0KCl9X19BVElOSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe1NPQ0tGUy5yb290PUZTLm1vdW50KFNPQ0tGUyx7fSxudWxsKX0pfSk7X2ZnZXRjLnJldD1hbGxvY2F0ZShbMF0sImk4IixBTExPQ19TVEFUSUMpO01vZHVsZVsicmVxdWVzdEZ1bGxTY3JlZW4iXT1mdW5jdGlvbiBNb2R1bGVfcmVxdWVzdEZ1bGxTY3JlZW4obG9ja1BvaW50ZXIscmVzaXplQ2FudmFzKXtCcm93c2VyLnJlcXVlc3RGdWxsU2NyZWVuKGxvY2tQb2ludGVyLHJlc2l6ZUNhbnZhcyl9O01vZHVsZVsicmVxdWVzdEFuaW1hdGlvbkZyYW1lIl09ZnVuY3Rpb24gTW9kdWxlX3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKXtCcm93c2VyLnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKX07TW9kdWxlWyJzZXRDYW52YXNTaXplIl09ZnVuY3Rpb24gTW9kdWxlX3NldENhbnZhc1NpemUod2lkdGgsaGVpZ2h0LG5vVXBkYXRlcyl7QnJvd3Nlci5zZXRDYW52YXNTaXplKHdpZHRoLGhlaWdodCxub1VwZGF0ZXMpfTtNb2R1bGVbInBhdXNlTWFpbkxvb3AiXT1mdW5jdGlvbiBNb2R1bGVfcGF1c2VNYWluTG9vcCgpe0Jyb3dzZXIubWFpbkxvb3AucGF1c2UoKX07TW9kdWxlWyJyZXN1bWVNYWluTG9vcCJdPWZ1bmN0aW9uIE1vZHVsZV9yZXN1bWVNYWluTG9vcCgpe0Jyb3dzZXIubWFpbkxvb3AucmVzdW1lKCl9O01vZHVsZVsiZ2V0VXNlck1lZGlhIl09ZnVuY3Rpb24gTW9kdWxlX2dldFVzZXJNZWRpYSgpe0Jyb3dzZXIuZ2V0VXNlck1lZGlhKCl9O1NUQUNLX0JBU0U9U1RBQ0tUT1A9UnVudGltZS5hbGlnbk1lbW9yeShTVEFUSUNUT1ApO3N0YXRpY1NlYWxlZD10cnVlO1NUQUNLX01BWD1TVEFDS19CQVNFKzUyNDI4ODA7RFlOQU1JQ19CQVNFPURZTkFNSUNUT1A9UnVudGltZS5hbGlnbk1lbW9yeShTVEFDS19NQVgpO2Fzc2VydChEWU5BTUlDX0JBU0U8VE9UQUxfTUVNT1JZLCJUT1RBTF9NRU1PUlkgbm90IGJpZyBlbm91Z2ggZm9yIHN0YWNrIik7dmFyIGN0bHpfaTg9YWxsb2NhdGUoWzgsNyw2LDYsNSw1LDUsNSw0LDQsNCw0LDQsNCw0LDQsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLCJpOCIsQUxMT0NfRFlOQU1JQyk7dmFyIGN0dHpfaTg9YWxsb2NhdGUoWzgsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNiwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDUsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw3LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNSwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDYsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDBdLCJpOCIsQUxMT0NfRFlOQU1JQyk7dmFyIE1hdGhfbWluPU1hdGgubWluO2Z1bmN0aW9uIGludm9rZV9paWlpKGluZGV4LGExLGEyLGEzKXt0cnl7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paWlpIl0oaW5kZXgsYTEsYTIsYTMpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaShpbmRleCl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaSJdKGluZGV4KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92aShpbmRleCxhMSl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aSJdKGluZGV4LGExKX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92aWkoaW5kZXgsYTEsYTIpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpIl0oaW5kZXgsYTEsYTIpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpaWkoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcsYTgsYTkpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpaWlpaSJdKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3LGE4LGE5KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV9paShpbmRleCxhMSl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWkiXShpbmRleCxhMSl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaWlpaWQoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpaWQiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaShpbmRleCxhMSxhMixhMyl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpIl0oaW5kZXgsYTEsYTIsYTMpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWQoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpZCJdKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92KGluZGV4KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3YiXShpbmRleCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaWlpaWlpaWlpKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3LGE4KXt0cnl7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paWlpaWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaWlpaWkoaW5kZXgsYTEsYTIsYTMsYTQpe3RyeXtyZXR1cm4gTW9kdWxlWyJkeW5DYWxsX2lpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSxhNil7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX2lpaShpbmRleCxhMSxhMil7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWlpIl0oaW5kZXgsYTEsYTIpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX2lpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpKGluZGV4LGExLGEyLGEzLGE0KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3ZpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gYXNtUHJpbnRJbnQoeCx5KXtNb2R1bGUucHJpbnQoImludCAiK3grIiwiK3kpfWZ1bmN0aW9uIGFzbVByaW50RmxvYXQoeCx5KXtNb2R1bGUucHJpbnQoImZsb2F0ICIreCsiLCIreSl9dmFyIGFzbT0oZnVuY3Rpb24oZ2xvYmFsLGVudixidWZmZXIpIHsKLy8gRU1TQ1JJUFRFTl9TVEFSVF9BU00KInVzZSBhc20iO3ZhciBhPW5ldyBnbG9iYWwuSW50OEFycmF5KGJ1ZmZlcik7dmFyIGI9bmV3IGdsb2JhbC5JbnQxNkFycmF5KGJ1ZmZlcik7dmFyIGM9bmV3IGdsb2JhbC5JbnQzMkFycmF5KGJ1ZmZlcik7dmFyIGQ9bmV3IGdsb2JhbC5VaW50OEFycmF5KGJ1ZmZlcik7dmFyIGU9bmV3IGdsb2JhbC5VaW50MTZBcnJheShidWZmZXIpO3ZhciBmPW5ldyBnbG9iYWwuVWludDMyQXJyYXkoYnVmZmVyKTt2YXIgZz1uZXcgZ2xvYmFsLkZsb2F0MzJBcnJheShidWZmZXIpO3ZhciBoPW5ldyBnbG9iYWwuRmxvYXQ2NEFycmF5KGJ1ZmZlcik7dmFyIGk9ZW52LlNUQUNLVE9QfDA7dmFyIGo9ZW52LlNUQUNLX01BWHwwO3ZhciBrPWVudi50ZW1wRG91YmxlUHRyfDA7dmFyIGw9ZW52LkFCT1JUfDA7dmFyIG09ZW52LmN0dHpfaTh8MDt2YXIgbj1lbnYuY3Rsel9pOHwwO3ZhciBvPWVudi5fX1pUSVN0OWV4Y2VwdGlvbnwwO3ZhciBwPWVudi5fX19kc29faGFuZGxlfDA7dmFyIHE9ZW52Ll9zdGRlcnJ8MDt2YXIgcj1lbnYuX3N0ZGlufDA7dmFyIHM9ZW52Ll9zdGRvdXR8MDt2YXIgdD0wO3ZhciB1PTA7dmFyIHY9MDt2YXIgdz0wO3ZhciB4PStlbnYuTmFOLHk9K2Vudi5JbmZpbml0eTt2YXIgej0wLEE9MCxCPTAsQz0wLEQ9MC4wLEU9MCxGPTAsRz0wLEg9MC4wO3ZhciBJPTA7dmFyIEo9MDt2YXIgSz0wO3ZhciBMPTA7dmFyIE09MDt2YXIgTj0wO3ZhciBPPTA7dmFyIFA9MDt2YXIgUT0wO3ZhciBSPTA7dmFyIFM9Z2xvYmFsLk1hdGguZmxvb3I7dmFyIFQ9Z2xvYmFsLk1hdGguYWJzO3ZhciBVPWdsb2JhbC5NYXRoLnNxcnQ7dmFyIFY9Z2xvYmFsLk1hdGgucG93O3ZhciBXPWdsb2JhbC5NYXRoLmNvczt2YXIgWD1nbG9iYWwuTWF0aC5zaW47dmFyIFk9Z2xvYmFsLk1hdGgudGFuO3ZhciBaPWdsb2JhbC5NYXRoLmFjb3M7dmFyIF89Z2xvYmFsLk1hdGguYXNpbjt2YXIgJD1nbG9iYWwuTWF0aC5hdGFuO3ZhciBhYT1nbG9iYWwuTWF0aC5hdGFuMjt2YXIgYmE9Z2xvYmFsLk1hdGguZXhwO3ZhciBjYT1nbG9iYWwuTWF0aC5sb2c7dmFyIGRhPWdsb2JhbC5NYXRoLmNlaWw7dmFyIGVhPWdsb2JhbC5NYXRoLmltdWw7dmFyIGZhPWVudi5hYm9ydDt2YXIgZ2E9ZW52LmFzc2VydDt2YXIgaGE9ZW52LmFzbVByaW50SW50O3ZhciBpYT1lbnYuYXNtUHJpbnRGbG9hdDt2YXIgamE9ZW52Lm1pbjt2YXIga2E9ZW52LmpzQ2FsbDt2YXIgbGE9ZW52Lmludm9rZV9paWlpO3ZhciBtYT1lbnYuaW52b2tlX3ZpaWlpaWlpO3ZhciBuYT1lbnYuaW52b2tlX3ZpaWlpaTt2YXIgb2E9ZW52Lmludm9rZV9pO3ZhciBwYT1lbnYuaW52b2tlX3ZpO3ZhciBxYT1lbnYuaW52b2tlX3ZpaTt2YXIgcmE9ZW52Lmludm9rZV92aWlpaWlpaWlpO3ZhciBzYT1lbnYuaW52b2tlX2lpO3ZhciB0YT1lbnYuaW52b2tlX3ZpaWlpaWlkO3ZhciB1YT1lbnYuaW52b2tlX3ZpaWk7dmFyIHZhPWVudi5pbnZva2VfdmlpaWlpZDt2YXIgd2E9ZW52Lmludm9rZV92O3ZhciB4YT1lbnYuaW52b2tlX2lpaWlpaWlpaTt2YXIgeWE9ZW52Lmludm9rZV9paWlpaTt2YXIgemE9ZW52Lmludm9rZV92aWlpaWlpaWk7dmFyIEFhPWVudi5pbnZva2VfdmlpaWlpaTt2YXIgQmE9ZW52Lmludm9rZV9paWk7dmFyIENhPWVudi5pbnZva2VfaWlpaWlpO3ZhciBEYT1lbnYuaW52b2tlX3ZpaWlpO3ZhciBFYT1lbnYuX2ZhYnM7dmFyIEZhPWVudi5fc3NjYW5mO3ZhciBHYT1lbnYuX3B0aHJlYWRfY29uZF93YWl0O3ZhciBIYT1lbnYuX19fY3R5cGVfdG9sb3dlcl9sb2M7dmFyIElhPWVudi5fYXNwcmludGY7dmFyIEphPWVudi5fX2VtYmluZF9yZWdpc3Rlcl92b2lkO3ZhciBLYT1lbnYuX3NlbmQ7dmFyIExhPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldzt2YXIgTWE9ZW52Ll92c3NjYW5mO3ZhciBOYT1lbnYuX19fY3R5cGVfYl9sb2M7dmFyIE9hPWVudi5fX1pTdDl0ZXJtaW5hdGV2O3ZhciBQYT1lbnYuX2Ztb2Q7dmFyIFFhPWVudi5fX19jeGFfZ3VhcmRfYWNxdWlyZTt2YXIgUmE9ZW52Ll9fX3NldEVyck5vO3ZhciBTYT1lbnYuX19fY3hhX2lzX251bWJlcl90eXBlO3ZhciBUYT1lbnYuX19fZ3h4X3BlcnNvbmFsaXR5X3YwO3ZhciBVYT1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcjt2YXIgVmE9ZW52Ll91bmdldGM7dmFyIFdhPWVudi5fX19hc3NlcnRfZmFpbDt2YXIgWGE9ZW52Ll9fX2N4YV9hbGxvY2F0ZV9leGNlcHRpb247dmFyIFlhPWVudi5fX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udjt2YXIgWmE9ZW52Ll9fX2N0eXBlX3RvdXBwZXJfbG9jO3ZhciBfYT1lbnYuX2ZmbHVzaDt2YXIgJGE9ZW52Ll9fX2N4YV9ndWFyZF9yZWxlYXNlO3ZhciBhYj1lbnYuX19hZGREYXlzO3ZhciBiYj1lbnYuX19fZXJybm9fbG9jYXRpb247dmFyIGNiPWVudi5fcHdyaXRlO3ZhciBkYj1lbnYuX3N0cmVycm9yX3I7dmFyIGViPWVudi5fc3RyZnRpbWVfbDt2YXIgZmI9ZW52Ll9fZm9ybWF0U3RyaW5nO3ZhciBnYj1lbnYuX19yZWFsbHlOZWdhdGl2ZTt2YXIgaGI9ZW52Ll9zYnJrO3ZhciBpYj1lbnYuX3VzZWxvY2FsZTt2YXIgamI9ZW52Ll9jYXRnZXRzO3ZhciBrYj1lbnYuX25ld2xvY2FsZTt2YXIgbGI9ZW52Ll9zbnByaW50Zjt2YXIgbWI9ZW52Ll9fX2N4YV9iZWdpbl9jYXRjaDt2YXIgbmI9ZW52Ll9lbXNjcmlwdGVuX21lbWNweV9iaWc7dmFyIG9iPWVudi5fZmlsZW5vO3ZhciBwYj1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfYm9vbDt2YXIgcWI9ZW52Ll9fX3Jlc3VtZUV4Y2VwdGlvbjt2YXIgcmI9ZW52Ll9fX2N4YV9maW5kX21hdGNoaW5nX2NhdGNoO3ZhciBzYj1lbnYuX3N5c2NvbmY7dmFyIHRiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nO3ZhciB1Yj1lbnYuX3N0cmZ0aW1lO3ZhciB2Yj1lbnYuX19hcnJheVN1bTt2YXIgd2I9ZW52Ll9fX2N4YV90aHJvdzt2YXIgeGI9ZW52Ll9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsO3ZhciB5Yj1lbnYuX19leGl0O3ZhciB6Yj1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfZnVuY3Rpb247dmFyIEFiPWVudi5fX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXY7dmFyIEJiPWVudi5fcHRocmVhZF9tdXRleF9kZXN0cm95O3ZhciBDYj1lbnYuX3B0aHJlYWRfbXV0ZXhfdW5sb2NrO3ZhciBEYj1lbnYuX2ZyZWFkO3ZhciBFYj1lbnYuX3B0aHJlYWRfY29uZF9icm9hZGNhc3Q7dmFyIEZiPWVudi5fbWtwb3J0O3ZhciBHYj1lbnYuX3NwcmludGY7dmFyIEhiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9jbGFzczt2YXIgSWI9ZW52Ll92YXNwcmludGY7dmFyIEpiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZzt2YXIgS2I9ZW52Ll93cml0ZTt2YXIgTGI9ZW52Ll9faXNMZWFwWWVhcjt2YXIgTWI9ZW52Ll9fc2NhblN0cmluZzt2YXIgTmI9ZW52Ll9zdHJlcnJvcjt2YXIgT2I9ZW52Ll9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yO3ZhciBQYj1lbnYuX3JlY3Y7dmFyIFFiPWVudi5fdnNucHJpbnRmO3ZhciBSYj1lbnYuX19aTlN0OWV4Y2VwdGlvbkQyRXY7dmFyIFNiPWVudi5fY29weXNpZ247dmFyIFRiPWVudi5fZmdldGM7dmFyIFViPWVudi5fX19jeGFfZG9lc19pbmhlcml0O3ZhciBWYj1lbnYuX2ZyZWVsb2NhbGU7dmFyIFdiPWVudi5fcmVhZDt2YXIgWGI9ZW52Ll9hYm9ydDt2YXIgWWI9ZW52Ll9jYXRjbG9zZTt2YXIgWmI9ZW52Ll9md3JpdGU7dmFyIF9iPWVudi5fdGltZTt2YXIgJGI9ZW52Ll9wdGhyZWFkX211dGV4X2xvY2s7dmFyIGFjPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9mbG9hdDt2YXIgYmM9ZW52Ll9wcmVhZDt2YXIgY2M9ZW52Ll9hdGV4aXQ7dmFyIGRjPWVudi5fY2F0b3Blbjt2YXIgZWM9ZW52Ll9leGl0O3ZhciBmYz1lbnYuX19nZXRGbG9hdDt2YXIgZ2M9MC4wOwovLyBFTVNDUklQVEVOX1NUQVJUX0ZVTkNTCmZ1bmN0aW9uIEFjKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2k9aSthfDA7aT1pKzcmLTg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBCYygpe3JldHVybiBpfDB9ZnVuY3Rpb24gQ2MoYSl7YT1hfDA7aT1hfWZ1bmN0aW9uIERjKGEsYil7YT1hfDA7Yj1ifDA7aWYoKHR8MCk9PTApe3Q9YTt1PWJ9fWZ1bmN0aW9uIEVjKGIpe2I9YnwwO2Fbaz4+MF09YVtiPj4wXTthW2srMT4+MF09YVtiKzE+PjBdO2FbaysyPj4wXT1hW2IrMj4+MF07YVtrKzM+PjBdPWFbYiszPj4wXX1mdW5jdGlvbiBGYyhiKXtiPWJ8MDthW2s+PjBdPWFbYj4+MF07YVtrKzE+PjBdPWFbYisxPj4wXTthW2srMj4+MF09YVtiKzI+PjBdO2FbayszPj4wXT1hW2IrMz4+MF07YVtrKzQ+PjBdPWFbYis0Pj4wXTthW2srNT4+MF09YVtiKzU+PjBdO2Fbays2Pj4wXT1hW2IrNj4+MF07YVtrKzc+PjBdPWFbYis3Pj4wXX1mdW5jdGlvbiBHYyhhKXthPWF8MDtJPWF9ZnVuY3Rpb24gSGMoKXtyZXR1cm4gSXwwfWZ1bmN0aW9uIEljKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtmPWk7aT1pKzE2fDA7bT1mO2w9U2MoamgoU2MoODM1Miw1MTY4KXwwLGUpfDAsNTE4NCl8MDtqPWNbbCsoKGNbKGNbbD4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO2g9ais0fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1ttPj4yXT0xMzQ1NjtjW20rND4+Ml09MjA4O2NbbSs4Pj4yXT0wO2NnKDEzNDU2LG0pfW09KGNbMTM0NjA+PjJdfDApKyAtMXwwO249Y1tqKzg+PjJdfDA7aWYoKGNbaisxMj4+Ml18MCktbj4+Mj4+PjA+bT4+PjA/KGs9Y1tuKyhtPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywxMCl8MDtuPWNbaD4+Ml18MDtjW2g+PjJdPW4rIC0xO2lmKChufDApPT0wKXtsY1tjWyhjW2o+PjJdfDApKzg+PjJdJjI1NV0oail9bGgobCxrKTtZZyhsKTt3aGlsZSgxKXtoPXVuKDIwKXwwO2lmKChofDApIT0wKXticmVha31oPWNbNTY2Nl18MDtjWzU2NjZdPWgrMDtpZigoaHwwKT09MCl7Zz0xNDticmVha31zY1toJjMxXSgpfWlmKChnfDApPT0xNCl7bj1YYSg0KXwwO2Nbbj4+Ml09MjI2ODA7d2IobnwwLDIyNzI4LDIwNil9Y1toPj4yXT1kO2NbaCs0Pj4yXT1lO2NbaCs4Pj4yXT0wO2FbaCsxMj4+MF09MDthW2grMTM+PjBdPTA7Y1toKzE2Pj4yXT0wO3doaWxlKDEpe2Q9dW4oMTYpfDA7aWYoKGR8MCkhPTApe2JyZWFrfWU9Y1s1NjY2XXwwO2NbNTY2Nl09ZSswO2lmKChlfDApPT0wKXtnPTIwO2JyZWFrfXNjW2UmMzFdKCl9aWYoKGd8MCk9PTIwKXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1jW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2Q+PjJdPTc0MDg7Y1tkKzEyPj4yXT1oO2NbYj4+Ml09aDtuPWIrNHwwO2U9Y1tuPj4yXXwwO2Nbbj4+Ml09ZDtpZigoZXwwKSE9MCl7bT1lKzR8MDtuPWNbbT4+Ml18MDtjW20+PjJdPW4rIC0xO2lmKChufDApPT0wPyhsY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSksbT1lKzh8MCxuPWNbbT4+Ml18MCxjW20+PjJdPW4rIC0xLChufDApPT0wKTowKXtsY1tjWyhjW2U+PjJdfDApKzE2Pj4yXSYyNTVdKGUpfWg9Y1tiPj4yXXwwfXdoaWxlKDEpe2U9dW4oMzUyKXwwO2lmKChlfDApIT0wKXticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7Zz0zMTticmVha31zY1tlJjMxXSgpfWlmKChnfDApPT0zMSl7bj1YYSg0KXwwO2Nbbj4+Ml09MjI2ODA7d2IobnwwLDIyNzI4LDIwNil9Y1tlPj4yXT1oO2NbZSs0Pj4yXT1oO2NbZSs4Pj4yXT0wO2NbZSsxMj4+Ml09MDtqPXVuKDEwNDg2NDQpfDA7aD1qKzY4Ji02NDtjW2grIC00Pj4yXT1qO2NbZSsxNj4+Ml09aDtoPWUrMjc5fDA7YVtoPj4wXT0wO2FbaCsxPj4wXT0wO2g9ZSsyODF8MDthW2g+PjBdPTA7YVtoKzE+PjBdPTA7YVtoKzI+PjBdPTA7YVtoKzM+PjBdPTA7aD1lKzM0NHwwO2o9ZSsyODh8MDtkPWorNTZ8MDtkb3tjW2o+PjJdPTA7aj1qKzR8MH13aGlsZSgoanwwKTwoZHwwKSk7bj1oO2Nbbj4+Ml09LTE7Y1tuKzQ+PjJdPS0xO29lKGUpO3doaWxlKDEpe2Q9dW4oMTYpfDA7aWYoKGR8MCkhPTApe2JyZWFrfWQ9Y1s1NjY2XXwwO2NbNTY2Nl09ZCswO2lmKChkfDApPT0wKXtnPTM3O2JyZWFrfXNjW2QmMzFdKCl9aWYoKGd8MCk9PTM3KXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1jW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2Q+PjJdPTcxMjg7Y1tkKzEyPj4yXT1lO2NbYis4Pj4yXT1lO249YisxMnwwO2c9Y1tuPj4yXXwwO2Nbbj4+Ml09ZDtpZigoZ3wwKT09MCl7aT1mO3JldHVybn1tPWcrNHwwO249Y1ttPj4yXXwwO2NbbT4+Ml09bisgLTE7aWYoKG58MCkhPTApe2k9ZjtyZXR1cm59bGNbY1soY1tnPj4yXXwwKSs4Pj4yXSYyNTVdKGcpO209Zys4fDA7bj1jW20+PjJdfDA7Y1ttPj4yXT1uKyAtMTtpZigobnwwKSE9MCl7aT1mO3JldHVybn1sY1tjWyhjW2c+PjJdfDApKzE2Pj4yXSYyNTVdKGcpO2k9ZjtyZXR1cm59bj1YYSg0KXwwO2Nbbj4+Ml09MjEzMDQ7d2IobnwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gSmMoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7aD1pO2k9aSsxNzZ8MDtnPWg7az1oKzMyfDA7aj1oKzI0fDA7Zj1oKzEyfDA7Yj1jW2IrOD4+Ml18MDttPWIrMzM2fDA7Qj1tO0M9YisyNTl8MDtsPWIrMzIwfDA7aWYoKCEoKGNbQis0Pj4yXXwwKT09MD8oY1tCPj4yXXwwKT09KGRbQz4+MF18ZFtDKzE+PjBdPDw4fGRbQysyPj4wXTw8MTZ8ZFtDKzM+PjBdPDwyNHwwKTowKT8obj1jW2w+PjJdfDAsKG58MCkhPTApOjApPyhjW2IrMzEyPj4yXXwwKSE9MDowKXt6PW47Qj1jW3o+PjJdfDA7Qj1jW0I+PjJdfDA7bWNbQiYxMjddKHosZSk7ej1tO0I9ejtCPWNbQj4+Ml18MDt6PXorNHwwO3o9Y1t6Pj4yXXwwO3o9SW4oQnwwLHp8MCwxLDApfDA7Qj1JO0M9bTtBPUM7Y1tBPj4yXT16O0M9Qys0fDA7Y1tDPj4yXT1CO2k9aDtyZXR1cm59Y1tsPj4yXT0wO249YiszMjR8MDtwPWNbbj4+Ml18MDtjW24+PjJdPTA7aWYoKChwfDApIT0wPyhCPXArNHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApPyhsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCksQj1wKzh8MCxDPWNbQj4+Ml18MCxjW0I+PjJdPUMrIC0xLChDfDApPT0wKTowKXtsY1tjWyhjW3A+PjJdfDApKzE2Pj4yXSYyNTVdKHApfXM9YiszMTJ8MDtjW3M+PjJdPTA7cj1iKzMxNnwwO3A9Y1tyPj4yXXwwO2Nbcj4+Ml09MDtpZigoKHB8MCkhPTA/KEI9cCs0fDAsQz1jW0I+PjJdfDAsY1tCPj4yXT1DKyAtMSwoQ3wwKT09MCk6MCk/KGxjW2NbKGNbcD4+Ml18MCkrOD4+Ml0mMjU1XShwKSxCPXArOHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApe2xjW2NbKGNbcD4+Ml18MCkrMTY+PjJdJjI1NV0ocCl9d2hpbGUoMSl7cD11bigxMil8MDtpZigocHwwKSE9MCl7YnJlYWt9cD1jWzU2NjZdfDA7Y1s1NjY2XT1wKzA7aWYoKHB8MCk9PTApe289MTU7YnJlYWt9c2NbcCYzMV0oKX1pZigob3wwKT09MTUpe0M9WGEoNCl8MDtjW0M+PjJdPTIyNjgwO3diKEN8MCwyMjcyOCwyMDYpfWNbcD4+Ml09Yis0O2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0tMTt3aGlsZSgxKXt0PXVuKDE2KXwwO2lmKCh0fDApIT0wKXticmVha310PWNbNTY2Nl18MDtjWzU2NjZdPXQrMDtpZigodHwwKT09MCl7bz0yMTticmVha31zY1t0JjMxXSgpfWlmKChvfDApPT0yMSl7Qz1YYSg0KXwwO2NbQz4+Ml09MjI2ODA7d2IoQ3wwLDIyNzI4LDIwNil9Y1t0KzQ+PjJdPTA7Y1t0Kzg+PjJdPTA7Y1t0Pj4yXT00ODQwO2NbdCsxMj4+Ml09cDtjW3M+PjJdPXA7dT1jW3I+PjJdfDA7Y1tyPj4yXT10O2lmKCh1fDApIT0wKXtCPXUrNHwwO0M9Y1tCPj4yXXwwO2NbQj4+Ml09QysgLTE7aWYoKEN8MCk9PTA/KGxjW2NbKGNbdT4+Ml18MCkrOD4+Ml0mMjU1XSh1KSxCPXUrOHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApe2xjW2NbKGNbdT4+Ml18MCkrMTY+PjJdJjI1NV0odSl9cD1jW3M+PjJdfDB9eT1rKzY0fDA7cz1rKzh8MDtjW3M+PjJdPTQ1MjA7dT1rKzEyfDA7Y1trPj4yXT00NjUyO2NbeT4+Ml09NDY3MjtjW2srND4+Ml09MDtyPWsrNjR8MDtjW2srODg+PjJdPXU7Y1trKzgwPj4yXT0wO2Nbays4ND4+Ml09MDtjW2srNjg+PjJdPTQwOTg7Y1trKzc2Pj4yXT0wO2Nbays3Mj4+Ml09Njt4PWsrOTJ8MDt0PWsrOTZ8MDt3PXQrNDB8MDtkb3tjW3Q+PjJdPTA7dD10KzR8MH13aGlsZSgodHwwKTwod3wwKSk7WGsoeCk7Y1trKzEzNj4+Ml09MDtjW2srMTQwPj4yXT0tMTtjW2s+PjJdPTQ1MDA7Y1t5Pj4yXT00NTQwO2Nbcz4+Ml09NDUyMDtjW3U+PjJdPTEwNjY0O3Q9aysxNnwwO1hrKHQpO3g9aysyMHwwO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbeCsxMj4+Ml09MDtjW3grMTY+PjJdPTA7Y1t4KzIwPj4yXT0wO2NbdT4+Ml09NDY4ODt1PWsrNDR8MDt5PWsrNjB8MDtjW3UrMD4+Ml09MDtjW3UrND4+Ml09MDtjW3UrOD4+Ml09MDtjW3UrMTI+PjJdPTA7Y1t5Pj4yXT0yNDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDthW3UrMT4+MF09MDtpZigoYVt1Pj4wXSYxKT09MCl7YVt1Pj4wXT0wfWVsc2V7Y1trKzQ4Pj4yXT0wfXc9ays1NnwwO2Nbdz4+Ml09MDt6PWFbdT4+MF18MDtpZigoeiYxKT09MCl7QT11KygoeiYyNTUpPj4+MSkrMXwwO2Nbdz4+Ml09QTt6PXUrMXwwfWVsc2V7ej1jW2srNTI+PjJdfDA7QT16KyhjW2srNDg+PjJdfDApfDA7Y1t3Pj4yXT1BfWNbeD4+Ml09ejtjW2srMjQ+PjJdPXo7Y1trKzI4Pj4yXT1BO0M9YVt1Pj4wXXwwO2lmKChDJjEpPT0wKXt6PShDJjI1NSk+Pj4xO2Nbdz4+Ml09dSt6KzE7QT0xMH1lbHNle3o9Y1trKzQ4Pj4yXXwwO2Nbdz4+Ml09KGNbays1Mj4+Ml18MCkrejtBPWNbdT4+Ml18MDtDPUEmMjU1O0E9KEEmLTIpKyAtMXwwfUI9KEMmMSk9PTA7aWYoQil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1trKzQ4Pj4yXXwwfWRve2lmKCEoQz4+PjA8QT4+PjApKXtpZihCKXthW3UrQSsxPj4wXT0wO2FbdT4+MF09QTw8MTticmVha31lbHNle2FbKGNbays1Mj4+Ml18MCkrQT4+MF09MDtjW2srNDg+PjJdPUE7YnJlYWt9fWVsc2V7aGcodSxBLUN8MCl9fXdoaWxlKDApO0I9YVt1Pj4wXXwwO2lmKChCJjEpPT0wKXtBPXUrMXwwO0I9KEImMjU1KT4+PjF9ZWxzZXtBPWNbays1Mj4+Ml18MDtCPWNbays0OD4+Ml18MH1DPWsrMzZ8MDtjW0M+PjJdPUE7Y1trKzMyPj4yXT1BO2Nbays0MD4+Ml09QStCO2lmKChjW3k+PjJdJjN8MCkhPTApe2NbQz4+Ml09QSt6fWlmKCEoKGFbZz4+MF0mMSk9PTApPyh2PWNbZys4Pj4yXXwwLCh2fDApIT0wKTowKXt2bih2KX1BPWNbYiszMDA+PjJdfDA7dj1jW2IrMzA0Pj4yXXwwO2lmKChBfDApIT0odnwwKSl7ej1rKzh8MDtkb3tCPWNbQT4+Ml18MDtDPWNbQSs0Pj4yXXwwO0Q9Y1tBKzg+PjJdfDA7aWgoU2MoaWgoU2MoaWgoU2Moeiw0NDY0KXwwLEQpfDAsNDQ3Mil8MCxCKXwwLDQ0ODApfDAsQyl8MDtBPUErMTJ8MH13aGlsZSgoQXwwKSE9KHZ8MCkpfXY9Y1t5Pj4yXXwwO2Rve2lmKCh2JjE2fDApPT0wKXtpZigodiY4fDApPT0wKXtjW2YrMD4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDticmVha314PWNbeD4+Ml18MDt3PWNbaysyOD4+Ml18MDt2PXg7QT13LXZ8MDtpZihBPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWRve2lmKEE+Pj4wPDExKXthW2Y+PjBdPUE8PDE7Qj1mKzF8MH1lbHNle3o9QSsxNiYtMTY7eT0oenwwKT09MD8xOno7d2hpbGUoMSl7Qj11bih5KXwwO2lmKChCfDApIT0wKXtvPTkzO2JyZWFrfUI9Y1s1NjY2XXwwO2NbNTY2Nl09QiswO2lmKChCfDApPT0wKXticmVha31zY1tCJjMxXSgpfWlmKChvfDApPT05Myl7Y1tmKzg+PjJdPUI7Y1tmPj4yXT16fDE7Y1tmKzQ+PjJdPUE7YnJlYWt9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKCh4fDApIT0od3wwKSl7bz1CO3doaWxlKDEpe2Fbbz4+MF09YVt4Pj4wXXwwO3g9eCsxfDA7aWYoKHh8MCk9PSh3fDApKXticmVha31lbHNle289bysxfDB9fUI9QisodysoMC12KSl8MH1hW0I+PjBdPTB9ZWxzZXt4PWNbdz4+Ml18MDt2PWNbayszNj4+Ml18MDtpZih4Pj4+MDx2Pj4+MCl7Y1t3Pj4yXT12fWVsc2V7dj14fXg9Y1trKzMyPj4yXXwwO3c9eDt6PXYtd3wwO2lmKHo+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoej4+PjA8MTEpe2FbZj4+MF09ejw8MTtCPWYrMXwwfWVsc2V7eT16KzE2Ji0xNjtBPSh5fDApPT0wPzE6eTt3aGlsZSgxKXtCPXVuKEEpfDA7aWYoKEJ8MCkhPTApe289NzY7YnJlYWt9Qj1jWzU2NjZdfDA7Y1s1NjY2XT1CKzA7aWYoKEJ8MCk9PTApe2JyZWFrfXNjW0ImMzFdKCl9aWYoKG98MCk9PTc2KXtjW2YrOD4+Ml09QjtjW2Y+PjJdPXl8MTtjW2YrND4+Ml09ejticmVha31EPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKHh8MCkhPSh2fDApKXtvPUI7d2hpbGUoMSl7YVtvPj4wXT1hW3g+PjBdfDA7eD14KzF8MDtpZigoeHwwKT09KHZ8MCkpe2JyZWFrfWVsc2V7bz1vKzF8MH19Qj1CKyh2KygwLXcpKXwwfWFbQj4+MF09MH19d2hpbGUoMCk7Y1trPj4yXT00NTAwO2Nbays2ND4+Ml09NDU0MDtjW3M+PjJdPTQ1MjA7bz1rKzEyfDA7Y1tvPj4yXT00Njg4O2lmKCEoKGFbdT4+MF0mMSk9PTApPyhxPWNbays1Mj4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9Y1tvPj4yXT0xMDY2NDtvPWNbdD4+Ml18MDtDPW8rNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1yZyhyKTtxPWFbZj4+MF18MDtyPShxJjEpPT0wO2lmKHIpe3Q9KHEmMjU1KT4+PjE7dj1mKzF8MH1lbHNle3Q9Y1tmKzQ+PjJdfDA7dj1jW2YrOD4+Ml18MH1zPXQ+Pj4wPjc7bz1zPzc6dDthOmRve2lmKChvfDApPT0wKXtvPTExMH1lbHNle3U9MTkyO3doaWxlKDEpe2lmKChhW3Y+PjBdfDApIT0oYVt1Pj4wXXwwKSl7bz0xMzA7YnJlYWsgYX1vPW8rIC0xfDA7aWYoKG98MCk9PTApe289MTEwO2JyZWFrfWVsc2V7dj12KzF8MDt1PXUrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xMTApe2lmKHQ+Pj4wPjYmKHNeMSkpe3doaWxlKDEpe2o9dW4oNDc4OCl8MDtpZigoanwwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe289MTE0O2JyZWFrfXNjW2cmMzFdKCl9aWYoKG98MCk9PTExNCl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZmQoaik7YVtqKzQ3ODQ+PjBdPTE7d2hpbGUoMSl7Zz11bigxMil8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe289MTIxO2JyZWFrfXNjW2cmMzFdKCl9aWYoKG98MCk9PTEyMSl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9Y1tnPj4yXT0zNjA4O2NbZys0Pj4yXT1wO2NbZys4Pj4yXT1qO3doaWxlKDEpe2o9dW4oMTYpfDA7aWYoKGp8MCkhPTApe289MTI5O2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXticmVha31zY1tqJjMxXSgpfWlmKChvfDApPT0xMjkpe2Nbais0Pj4yXT0wO2Nbais4Pj4yXT0wO2Nbaj4+Ml09Mzg3MjtjW2orMTI+PjJdPWc7YnJlYWt9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZWxzZXtvPTEzMH19fXdoaWxlKDApO2I6ZG97aWYoKG98MCk9PTEzMCl7aWYocil7dD0ocSYyNTUpPj4+MTt3PWYrMXwwfWVsc2V7dD1jW2YrND4+Ml18MDt3PWNbZis4Pj4yXXwwfXM9dD4+PjA+MTM7dT1zPzEzOnQ7Yzpkb3tpZigodXwwKT09MCl7bz0xMzZ9ZWxzZXt2PTIwMDt3aGlsZSgxKXtpZigoYVt3Pj4wXXwwKSE9KGFbdj4+MF18MCkpe2JyZWFrIGN9dT11KyAtMXwwO2lmKCh1fDApPT0wKXtvPTEzNjticmVha31lbHNle3c9dysxfDA7dj12KzF8MH19fX13aGlsZSgwKTtkb3tpZigob3wwKT09MTM2KXtpZighKHQ+Pj4wPjEyJihzXjEpKSl7YnJlYWt9d2hpbGUoMSl7aj11big1MTE2KXwwO2lmKChqfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNDA7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTQwKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1mZChqKTtlZChqKzQ3ODR8MCk7Y1tqKzQ5NTI+PjJdPTMyO2Nbais0OTU2Pj4yXT05O2Nbais0OTYwPj4yXT04O2Nbais0OTY0Pj4yXT0wO2Nbais0OTg0Pj4yXT0wO2Nbais0OTg4Pj4yXT0wO2Nbais0OTkyPj4yXT0wO2Nbais1MDA4Pj4yXT0xO2Nbais1MDEyPj4yXT0yO2Nbais1MDA0Pj4yXT00MDk2O2Nbais1ZTM+PjJdPTQ7Y1tqKzQ5OTY+PjJdPTQ7Y1tqKzUwMTY+PjJdPTA7Y1tqKzUwMjA+PjJdPTA7Y1tqKzUwMjQ+PjJdPTA7Y1tqKzQ5Njg+PjJdPTMyO2Nbais0OTcyPj4yXT0wO2Nbais0OTc2Pj4yXT0tMjE0NzQ4MzY0ODtjW2orNDk4MD4+Ml09MjE0NzQ4MzY0NztjW2orNDk0OD4+Ml09MDtjW2orNTAzMj4+Ml09MzI7Y1tqKzUwMzY+PjJdPTk7Y1tqKzUwNDA+PjJdPTg7Y1tqKzUwNDQ+PjJdPTA7Y1tqKzUwNjQ+PjJdPTA7Y1tqKzUwNjg+PjJdPTA7Y1tqKzUwNzI+PjJdPTA7Y1tqKzUwODg+PjJdPTE7Y1tqKzUwOTI+PjJdPTI7Y1tqKzUwODQ+PjJdPTQwOTY7Y1tqKzUwODA+PjJdPTQ7Y1tqKzUwNzY+PjJdPTQ7Y1tqKzUwOTY+PjJdPTA7Y1tqKzUxMDA+PjJdPTA7Y1tqKzUxMDQ+PjJdPTA7Y1tqKzUwNDg+PjJdPTMyO2Nbais1MDUyPj4yXT0wO2Nbais1MDU2Pj4yXT0tMjE0NzQ4MzY0ODtjW2orNTA2MD4+Ml09MjE0NzQ4MzY0NztjW2orNTAyOD4+Ml09MDthW2orNTEwOD4+MF09MDthW2orNTEwOT4+MF09MDthW2orNTExMj4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNDg7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTQ4KXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTI2NjQ7Y1tnKzQ+PjJdPXA7Y1tnKzg+PjJdPWo7d2hpbGUoMSl7aj11bigxNil8MDtpZigoanwwKSE9MCl7bz0xNTY7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKG98MCk9PTE1Nil7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7Y1tqPj4yXT0yOTUyO2NbaisxMj4+Ml09ZzticmVhayBifUQ9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihyKXt0PShxJjI1NSk+Pj4xO3Y9ZisxfDB9ZWxzZXt0PWNbZis0Pj4yXXwwO3Y9Y1tmKzg+PjJdfDB9cz10Pj4+MD4xMzt1PXM/MTM6dDtkOmRve2lmKCh1fDApPT0wKXtvPTE2M31lbHNle3c9MjE2O3doaWxlKDEpe2lmKChhW3Y+PjBdfDApIT0oYVt3Pj4wXXwwKSl7YnJlYWsgZH11PXUrIC0xfDA7aWYoKHV8MCk9PTApe289MTYzO2JyZWFrfWVsc2V7dj12KzF8MDt3PXcrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xNjMpe2lmKCEodD4+PjA+MTImKHNeMSkpKXticmVha313aGlsZSgxKXtqPXVuKDUxMDQpfDA7aWYoKGp8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtvPTE2NzticmVha31zY1tnJjMxXSgpfWlmKChvfDApPT0xNjcpe0Q9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfWZkKGopO2JkKGorNDc4NHwwKTthW2orNTEwMD4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNzU7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTc1KXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTE3MjA7Y1tnKzQ+PjJdPXA7Y1tnKzg+PjJdPWo7d2hpbGUoMSl7aj11bigxNil8MDtpZigoanwwKSE9MCl7bz0xODM7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKG98MCk9PTE4Myl7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7Y1tqPj4yXT0yMDA4O2NbaisxMj4+Ml09ZzticmVhayBifUQ9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihyKXtyPShxJjI1NSk+Pj4xO3Q9ZisxfDB9ZWxzZXtyPWNbZis0Pj4yXXwwO3Q9Y1tmKzg+PjJdfDB9cT1yPj4+MD4xOTtzPXE/MTk6cjtlOmRve2lmKChzfDApPT0wKXtvPTE5MH1lbHNle3U9MjMyO3doaWxlKDEpe2lmKChhW3Q+PjBdfDApIT0oYVt1Pj4wXXwwKSl7YnJlYWsgZX1zPXMrIC0xfDA7aWYoKHN8MCk9PTApe289MTkwO2JyZWFrfWVsc2V7dD10KzF8MDt1PXUrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xOTApe2lmKCEocj4+PjA+MTgmKHFeMSkpKXticmVha313aGlsZSgxKXtqPXVuKDU0MzIpfDA7aWYoKGp8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtvPTE5NDticmVha31zY1tnJjMxXSgpfWlmKChvfDApPT0xOTQpe0Q9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfWZkKGopO2VkKGorNDc4NHwwKTtjW2orNDk1Mj4+Ml09MzI7Y1tqKzQ5NTY+PjJdPTk7Y1tqKzQ5NjA+PjJdPTg7Y1tqKzQ5NjQ+PjJdPTA7Y1tqKzQ5ODQ+PjJdPTA7Y1tqKzQ5ODg+PjJdPTA7Y1tqKzQ5OTI+PjJdPTA7Y1tqKzUwMDg+PjJdPTE7Y1tqKzUwMTI+PjJdPTI7Y1tqKzUwMDQ+PjJdPTQwOTY7Y1tqKzVlMz4+Ml09NDtjW2orNDk5Nj4+Ml09NDtjW2orNTAxNj4+Ml09MDtjW2orNTAyMD4+Ml09MDtjW2orNTAyND4+Ml09MDtjW2orNDk2OD4+Ml09MzI7Y1tqKzQ5NzI+PjJdPTA7Y1tqKzQ5NzY+PjJdPS0yMTQ3NDgzNjQ4O2Nbais0OTgwPj4yXT0yMTQ3NDgzNjQ3O2Nbais0OTQ4Pj4yXT0wO2Nbais1MDMyPj4yXT0zMjtjW2orNTAzNj4+Ml09OTtjW2orNTA0MD4+Ml09ODtjW2orNTA0ND4+Ml09MDtjW2orNTA2ND4+Ml09MDtjW2orNTA2OD4+Ml09MDtjW2orNTA3Mj4+Ml09MDtjW2orNTA4OD4+Ml09MTtjW2orNTA5Mj4+Ml09MjtjW2orNTA4ND4+Ml09NDA5NjtjW2orNTA4MD4+Ml09NDtjW2orNTA3Nj4+Ml09NDtjW2orNTA5Nj4+Ml09MDtjW2orNTEwMD4+Ml09MDtjW2orNTEwND4+Ml09MDtjW2orNTA0OD4+Ml09MzI7Y1tqKzUwNTI+PjJdPTA7Y1tqKzUwNTY+PjJdPS0yMTQ3NDgzNjQ4O2Nbais1MDYwPj4yXT0yMTQ3NDgzNjQ3O2Nbais1MDI4Pj4yXT0wO2Fbais1MTA4Pj4wXT0wO2Fbais1MTA5Pj4wXT0wO2JkKGorNTExMnwwKTthW2orNTQyOD4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0yMDM7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MjAzKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTQyNDtjW2crND4+Ml09cDtjW2crOD4+Ml09ajt3aGlsZSgxKXtqPXVuKDE2KXwwO2lmKChqfDApIT0wKXtvPTIxMTticmVha31qPWNbNTY2Nl18MDtjWzU2NjZdPWorMDtpZigoanwwKT09MCl7YnJlYWt9c2NbaiYzMV0oKX1pZigob3wwKT09MjExKXtjW2orND4+Ml09MDtjW2orOD4+Ml09MDtjW2o+PjJdPTEwMDg7Y1tqKzEyPj4yXT1nO2JyZWFrIGJ9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2g9U2MoODM1MiwyNTYpfDA7YVtrPj4wXT0wO2Nbays0Pj4yXT1oO2U9Y1soY1toPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2grKGUrMTYpPj4yXXwwKT09MCl7ZT1jW2grKGUrNzIpPj4yXXwwO2lmKChlfDApIT0wKXtZZyhlKX1hW2s+PjBdPTE7ZT1hW2Y+PjBdfDA7ZG97aWYoKGUmMSk9PTApe289KGUmMjU1KT4+PjE7bT1jWyhjW2g+PjJdfDApKyAtMTI+PjJdfDA7bD1jW2grKG0rMjQpPj4yXXwwO249ZisxfDA7aWYoKGNbaCsobSs0KT4+Ml0mMTc2fDApIT0zMil7ZT1uO2I9bzticmVha31lPW47Yj1vO249ZitvKzF8MH1lbHNle249Y1tmKzQ+PjJdfDA7bT1jWyhjW2g+PjJdfDApKyAtMTI+PjJdfDA7bD1jW2grKG0rMjQpPj4yXXwwO2Y9Y1tmKzg+PjJdfDA7aWYoKGNbaCsobSs0KT4+Ml0mMTc2fDApIT0zMil7ZT1mO2I9bjtuPWY7YnJlYWt9ZT1mO2I9bjtuPWYrbnwwfX13aGlsZSgwKTtmPWgrbXwwO289aCsobSs3Nil8MDtwPWNbbz4+Ml18MDtmOmRve2lmKChwfDApPT0tMSl7cD1jW2grKG0rMjgpPj4yXXwwO209cCs0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tnPj4yXT0xMzQ1NjtjW2crND4+Ml09MjA4O2NbZys4Pj4yXT0wO2NnKDEzNDU2LGcpfXE9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3I9Y1twKzg+PjJdfDA7ZG97aWYoKGNbcCsxMj4+Ml18MCktcj4+Mj4+PjA+cT4+PjApe3E9Y1tyKyhxPDwyKT4+Ml18MDtpZigocXwwKT09MCl7YnJlYWt9cT14Y1tjWyhjW3E+PjJdfDApKzI4Pj4yXSY2M10ocSwzMil8MDtEPWNbbT4+Ml18MDtjW20+PjJdPUQrIC0xO2lmKChEfDApPT0wKXtsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCl9cD1xPDwyND4+MjQ7Y1tvPj4yXT1wO2JyZWFrIGZ9fXdoaWxlKDApO0Q9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtXYyhqLGwsZSxuLGUrYnwwLGYscCYyNTUpO2lmKChjW2o+PjJdfDApIT0wKXticmVha31EPWNbKGNbaD4+Ml18MCkrIC0xMj4+Ml18MDtxZyhoK0R8MCxjW2grKEQrMTYpPj4yXXw1KX19d2hpbGUoMCk7Z2goayk7Zj1jW2grKChjWyhjW2g+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtlPWYrNHwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZz4+Ml09MTM0NTY7Y1tnKzQ+PjJdPTIwODtjW2crOD4+Ml09MDtjZygxMzQ1NixnKX1qPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtnPWNbZis4Pj4yXXwwO2Rve2lmKChjW2YrMTI+PjJdfDApLWc+PjI+Pj4wPmo+Pj4wKXtnPWNbZysoajw8Mik+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWc9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcsMTApfDA7RD1jW2U+PjJdfDA7Y1tlPj4yXT1EKyAtMTtpZigoRHwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfWxoKGgsZyk7WWcoaCk7Zj1YYSg4KXwwO2NbZj4+Ml09OTkyODt3aGlsZSgxKXtnPXVuKDQ1KXwwO2lmKChnfDApIT0wKXtvPTI1MzticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0yNTE7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MjUxKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1lbHNlIGlmKChvfDApPT0yNTMpe2NbZys0Pj4yXT0zMjtjW2c+PjJdPTMyO3Q9ZysxMnwwO2NbZis0Pj4yXT10O2NbZys4Pj4yXT0wO3Q9dCswfDA7Zz0zMjB8MDt3PXQrMzN8MDtkb3thW3Q+PjBdPWFbZz4+MF18MDt0PXQrMXwwO2c9ZysxfDB9d2hpbGUoKHR8MCk8KHd8MCkpO2NbZj4+Ml09MzY4O3diKGZ8MCwzMDQsMjIpfX19d2hpbGUoMCk7RD1YYSg0KXwwO2NbRD4+Ml09MjEzMDQ7d2IoRHwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2Rve2lmKCEoKGFbZj4+MF0mMSk9PTApKXtmPWNbZis4Pj4yXXwwO2lmKChmfDApPT0wKXticmVha312bihmKX19d2hpbGUoMCk7Y1tsPj4yXT1nO2Y9Y1tuPj4yXXwwO2Nbbj4+Ml09ajtkb3tpZigoZnwwKSE9MCl7Qz1mKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXticmVha31sY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZik7Qz1mKzh8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXticmVha31sY1tjWyhjW2Y+PjJdfDApKzE2Pj4yXSYyNTVdKGYpfX13aGlsZSgwKTtBPWIrMzI4fDA7Qz1BO0M9SW4oY1tDPj4yXXwwLGNbQys0Pj4yXXwwLDEsMCl8MDtjW0E+PjJdPUM7Y1tBKzQ+PjJdPUk7QT1tO2NbQT4+Ml09MDtjW0ErND4+Ml09MDtBPWNbbD4+Ml18MDtDPWNbQT4+Ml18MDtDPWNbQz4+Ml18MDttY1tDJjEyN10oQSxlKTtBPW07Qz1BO0M9Y1tDPj4yXXwwO0E9QSs0fDA7QT1jW0E+PjJdfDA7QT1JbihDfDAsQXwwLDEsMCl8MDtDPUk7RD1tO0I9RDtjW0I+PjJdPUE7RD1EKzR8MDtjW0Q+PjJdPUM7aT1oO3JldHVybn1mdW5jdGlvbiBLYyhhKXthPWF8MDthPShjW2ErOD4+Ml18MCkrMTI3fDA7cmV0dXJuIGRbYT4+MF18ZFthKzE+PjBdPDw4fGRbYSsyPj4wXTw8MTZ8ZFthKzM+PjBdPDwyNHwwfWZ1bmN0aW9uIExjKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTA7ZT1pO2Y9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9ZjthPW9jW2EmMTI3XShiKXwwO2k9ZTtyZXR1cm4gYXwwfWVsc2V7YT1jWyhjW2I+PjJdfDApK2Y+PjJdfDA7YT1vY1thJjEyN10oYil8MDtpPWU7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBNYyhhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTA7Zj1pO2c9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9ZzttY1thJjEyN10oYixlKTtpPWY7cmV0dXJufWVsc2V7YT1jWyhjW2I+PjJdfDApK2c+PjJdfDA7bWNbYSYxMjddKGIsZSk7aT1mO3JldHVybn19ZnVuY3Rpb24gTmMoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTA7Zz1pO2g9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9aDtxY1thJjMxXShiLGUsZik7aT1nO3JldHVybn1lbHNle2E9Y1soY1tiPj4yXXwwKStoPj4yXXwwO3FjW2EmMzFdKGIsZSxmKTtpPWc7cmV0dXJufX1mdW5jdGlvbiBPYygpe3ZhciBhPTAsYj0wLGQ9MDtiPWk7d2hpbGUoMSl7ZD11bigxNil8MDtpZigoZHwwKSE9MCl7YT03O2JyZWFrfWQ9Y1s1NjY2XXwwO2NbNTY2Nl09ZCswO2lmKChkfDApPT0wKXticmVha31zY1tkJjMxXSgpfWlmKChhfDApPT03KXtjW2QrMD4+Ml09MDtjW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2QrMTI+PjJdPTA7aT1iO3JldHVybiBkfDB9ZD1YYSg0KXwwO2NbZD4+Ml09MjI2ODA7d2IoZHwwLDIyNzI4LDIwNik7cmV0dXJuIDB9ZnVuY3Rpb24gUGMoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1rY1thJjMxXSgpfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gUWMoYSl7YT1hfDA7cmV0dXJuIDcyfWZ1bmN0aW9uIFJjKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWQ9Y1thKzEyPj4yXXwwO2lmKCgoZHwwKSE9MD8oZj1kKzR8MCxlPWNbZj4+Ml18MCxjW2Y+PjJdPWUrIC0xLChlfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGU9ZCs4fDAsZj1jW2U+PjJdfDAsY1tlPj4yXT1mKyAtMSwoZnwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX1kPWNbYSs0Pj4yXXwwO2lmKCgoZHwwKSE9MD8oZT1kKzR8MCxmPWNbZT4+Ml18MCxjW2U+PjJdPWYrIC0xLChmfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGU9ZCs4fDAsZj1jW2U+PjJdfDAsY1tlPj4yXT1mKyAtMSwoZnwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX12bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFNjKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtmPWk7aT1pKzMyfDA7bz1mO2U9ZisxNnwwO2c9ZisxMnwwO2FbZT4+MF09MDtjW2UrND4+Ml09YjtwPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtpZigoY1tiKyhwKzE2KT4+Ml18MCk9PTApe2g9Y1tiKyhwKzcyKT4+Ml18MDtpZigoaHwwKSE9MCl7WWcoaCk7cD1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDB9YVtlPj4wXT0xO2o9Sm4oZHwwKXwwO209Y1tiKyhwKzI0KT4+Ml18MDtpZigoY1tiKyhwKzQpPj4yXSYxNzZ8MCk9PTMyKXtoPWQranwwfWVsc2V7aD1kfWw9YitwfDA7bj1iKyhwKzc2KXwwO3E9Y1tuPj4yXXwwO2Rve2lmKChxfDApPT0tMSl7cD1jW2IrKHArMjgpPj4yXXwwO3E9cCs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tvPj4yXT0xMzQ1NjtjW28rND4+Ml09MjA4O2Nbbys4Pj4yXT0wO2NnKDEzNDU2LG8pfXI9KGNbMTM0NjA+PjJdfDApKyAtMXwwO289Y1twKzg+PjJdfDA7aWYoKGNbcCsxMj4+Ml18MCktbz4+Mj4+PjA+cj4+PjA/KGs9Y1tvKyhyPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywzMil8MDtyPWNbcT4+Ml18MDtjW3E+PjJdPXIrIC0xO2lmKChyfDApPT0wKXtsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCl9cT1rPDwyND4+MjQ7Y1tuPj4yXT1xO2JyZWFrfXI9WGEoNCl8MDtjW3I+PjJdPTIxMzA0O3diKHJ8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtXYyhnLG0sZCxoLGQranwwLGwscSYyNTUpO2lmKChjW2c+PjJdfDApPT0wKXtyPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK3J8MCxjW2IrKHIrMTYpPj4yXXw1KX19Z2goZSk7aT1mO3JldHVybiBifDB9ZnVuY3Rpb24gVGMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFVjKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gVmMoYSl7YT1hfDA7bWIoYXwwKXwwO09hKCl9ZnVuY3Rpb24gV2MoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtrPWk7aT1pKzE2fDA7bD1rO2lmKChkfDApPT0wKXtjW2I+PjJdPTA7aT1rO3JldHVybn1wPWU7bj1nLXB8MDtoPWgrMTJ8MDttPWNbaD4+Ml18MDtuPShtfDApPihufDApP20tbnwwOjA7bT1mO3A9bS1wfDA7aWYoKHB8MCk+MD8oaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsZSxwKXwwKSE9KHB8MCk6MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59ZG97aWYoKG58MCk+MCl7ZG97aWYobj4+PjA8MTEpe3A9bjw8MSYyNTU7YVtsPj4wXT1wO289bDtlPWwrMXwwfWVsc2V7cT1uKzE2Ji0xNjtwPShxfDApPT0wPzE6cTt3aGlsZSgxKXtlPXVuKHApfDA7aWYoKGV8MCkhPTApe289MTU7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKG98MCk9PTE1KXtjW2wrOD4+Ml09ZTtwPXF8MTtjW2w+PjJdPXA7Y1tsKzQ+PjJdPW47bz1sO3A9cCYyNTU7YnJlYWt9cT1YYSg0KXwwO2NbcT4+Ml09MjI2ODA7d2IocXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO05uKGV8MCxqfDAsbnwwKXwwO2FbZStuPj4wXT0wO2lmKChwJjEpPT0wKXtqPWwrMXwwfWVsc2V7aj1jW2wrOD4+Ml18MH1pZigoaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsaixuKXwwKT09KG58MCkpe2lmKChhW28+PjBdJjEpPT0wKXticmVha31sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXticmVha312bihsKTticmVha31jW2I+PjJdPTA7aWYoKGFbbz4+MF0mMSk9PTApe2k9aztyZXR1cm59Yj1jW2wrOD4+Ml18MDtpZigoYnwwKT09MCl7aT1rO3JldHVybn12bihiKTtpPWs7cmV0dXJufX13aGlsZSgwKTtsPWctbXwwO2lmKChsfDApPjA/KGhjW2NbKGNbZD4+Ml18MCkrNDg+PjJdJjYzXShkLGYsbCl8MCkhPShsfDApOjApe2NbYj4+Ml09MDtpPWs7cmV0dXJufWNbaD4+Ml09MDtjW2I+PjJdPWQ7aT1rO3JldHVybn1mdW5jdGlvbiBYYyhhKXthPWF8MDt2YXIgYj0wO2I9aTtfYyhhKzQ3Njh8MCk7X2MoYSs0NzM2fDApO19jKGErNDY4OHwwKTtfYyhhKzQ2NTZ8MCk7X2MoYSs0NjA4fDApO19jKGErNDU3NnwwKTtfYyhhKzQ1Mjh8MCk7X2MoYSs0NDk2fDApO19jKGErNDQ0OHwwKTtfYyhhKzQ0MTZ8MCk7WmMoYSs0MzAwfDApO1pjKGErNDIyMHwwKTtaYyhhKzQxNDB8MCk7WmMoYSs0MDYwfDApO1pjKGErMzk4MHwwKTtZYyhhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFljKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2Q9Y1thKzg5Nj4+Ml18MDtpZigoZHwwKSE9MCl7ZT1jW2QrOD4+Ml18MDtpZigoZXwwKSE9MCl7dm4oY1tlKyAtND4+Ml18MCl9ZT1jW2QrMTI+PjJdfDA7aWYoKGV8MCkhPTApe3ZuKGNbZSsgLTQ+PjJdfDApfWU9Y1tkKzE2Pj4yXXwwO2lmKChlfDApIT0wKXt2bihjW2UrIC00Pj4yXXwwKX12bihkKX1kPWNbYSs5MDA+PjJdfDA7aWYoKGR8MCk9PTApe2Q9MH1lbHNle2U9Y1tkKzg+PjJdfDA7aWYoKGV8MCkhPTApe3ZuKGNbZSsgLTQ+PjJdfDApfWU9Y1tkKzEyPj4yXXwwO2lmKChlfDApIT0wKXt2bihjW2UrIC00Pj4yXXwwKX1lPWNbZCsxNj4+Ml18MDtpZigoZXwwKSE9MCl7dm4oY1tlKyAtND4+Ml18MCl9dm4oZCk7ZD0wfWRve2U9Y1thKyhkPDwyKSs5MDQ+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZT1jW2ErKGQ8PDIpKzE5Mjg+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZT1jW2ErKGQ8PDIpKzI5NTI+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZD1kKzF8MH13aGlsZSgoZHwwKSE9MjU2KTtkPWNbYSs4NjA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzg2ND4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9YT1jW2ErODY4Pj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufXZuKGNbYSsgLTQ+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gWmMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2I9aTtkPWErMzZ8MDtlPWNbZD4+Ml18MDtmPWErNDB8MDtnPWNbZj4+Ml18MDtpZigoZ3wwKSE9KGV8MCkpe2Rve2NbZj4+Ml09ZysgLTQ0O2g9Y1tnKyAtMzY+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWg9Y1tnKyAtMzI+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWc9Y1tnKyAtMjg+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1tmPj4yXXwwfXdoaWxlKChnfDApIT0oZXwwKSl9Zj1hKzY4fDA7ZT1jW2Y+PjJdfDA7YT1hKzcyfDA7Zz1jW2E+PjJdfDA7aWYoKGd8MCk9PShlfDApKXtfYyhmKTtfYyhkKTtpPWI7cmV0dXJufWRve2NbYT4+Ml09ZysgLTQ0O2g9Y1tnKyAtMzY+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWg9Y1tnKyAtMzI+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWc9Y1tnKyAtMjg+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1thPj4yXXwwfXdoaWxlKChnfDApIT0oZXwwKSk7X2MoZik7X2MoZCk7aT1iO3JldHVybn1mdW5jdGlvbiBfYyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtiPWk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59ZT1hKzR8MDtmPWNbZT4+Ml18MDtpZigoZnwwKSE9KGR8MCkpe2Rve2NbZT4+Ml09ZisgLTQ0O2c9Y1tmKyAtMzY+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1tmKyAtMzI+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWY9Y1tmKyAtMjg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlPj4yXXwwfXdoaWxlKChmfDApIT0oZHwwKSk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59fXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gJGMoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2Q9Y1thKzU2Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSs2MD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErNjQ+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzEyPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxNj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9YT1jW2ErMjA+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oY1thKyAtND4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiBhZChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7ZD1jW2ErMjgwPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsyODQ+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzI4OD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMjM2Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsyNDA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzI0ND4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTkyPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxOTY+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzIwMD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTQ4Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxNTI+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzE1Nj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTA0Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxMDg+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzExMj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErNjA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzY0Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSs2OD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTY+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzIwPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1hPWNbYSsyND4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn12bihjW2ErIC00Pj4yXXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGJkKGIpe2I9YnwwO3ZhciBjPTAsZD0wO2M9aTtkPWIrOHwwO2FbYiswPj4wXT0wO2FbYisxPj4wXT0wO2FbYisyPj4wXT0wO2FbYiszPj4wXT0wO2FbYis0Pj4wXT0wO2FbYis1Pj4wXT0wO2FbYis2Pj4wXT0wO2NkKGQsMTI4KTtjZChiKzUyfDAsMjU2KTtjZChiKzk2fDAsMjU2KTtjZChiKzE0MHwwLDI1Nik7Y2QoYisxODR8MCwyNTYpO2NkKGIrMjI4fDAsMjU2KTtjZChiKzI3MnwwLDI1Nik7aT1jO3JldHVybn1mdW5jdGlvbiBjZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtlPWk7Y1tiPj4yXT1kO2FbYis0Pj4wXT0wO2o9Yis4fDA7Y1tqPj4yXT0wO2c9YisxMnwwO2NbZz4+Ml09MDtoPWIrMTZ8MDtjW2g+PjJdPTA7aWYoKGQrIC0yfDApPj4+MD4yMDQ2KXtiPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oMzgpfDA7aWYoKGV8MCkhPTApe2Y9ODticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZnwwKT09OCl7Y1tlKzQ+PjJdPTI1O2NbZT4+Ml09MjU7ZD1lKzEyfDA7Y1tiKzQ+PjJdPWQ7Y1tlKzg+PjJdPTA7ZT1kKzB8MDtkPTM4NHwwO2Y9ZSsyNnwwO2Rve2FbZT4+MF09YVtkPj4wXXwwO2U9ZSsxfDA7ZD1kKzF8MH13aGlsZSgoZXwwKTwoZnwwKSk7d2IoYnwwLDEwMDY0LDEwNil9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9Y1tiKzMyPj4yXT1kKyAtMTtpZihkPj4+MD4xNil7Zj0zO3doaWxlKDEpe2lmKDE8PGYrMj4+PjA8ZD4+PjApe2Y9ZisxfDB9ZWxzZXticmVha319az0xPDxmO2NbYiszNj4+Ml09aztjW2IrNDA+PjJdPTE1LWY7az11bigoazw8MikrNzZ8MCl8MDtmPWsrNjgmLTY0O2NbZisgLTQ+PjJdPWs7Y1toPj4yXT1mfWVsc2V7Y1toPj4yXT0wO2NbYis0MD4+Ml09MDtjW2IrMzY+PjJdPTB9az0oZDw8MikrNjh8MDtoPXVuKGspfDA7Zj1oKzY4Ji02NDtjW2YrIC00Pj4yXT1oO2Nbaj4+Ml09ZjtrPXVuKGspfDA7Zj1rKzY4Ji02NDtjW2YrIC00Pj4yXT1rO2NbZz4+Ml09ZjtjW2IrMjA+PjJdPTA7Zz1iKzI0fDA7Y1tnPj4yXT1kO2lmKChkfDApPT0wKXtkZChiKTtqPWNbYj4+Ml18MDtqPWorNnwwO2o9aj4+PjE7Y1tnPj4yXT1qO2s9YisyOHwwO2Nbaz4+Ml09ajtpPWU7cmV0dXJufWVsc2V7ZD0wfWRve2NbZisoZDw8Mik+PjJdPTE7ZD1kKzF8MH13aGlsZShkPj4+MDwoY1tiPj4yXXwwKT4+PjApO2RkKGIpO2o9Y1tiPj4yXXwwO2o9ais2fDA7aj1qPj4+MTtjW2c+PjJdPWo7az1iKzI4fDA7Y1trPj4yXT1qO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZGQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2Q9aTtlPWIrMjR8MDtoPWIrMjB8MDtrPShjW2g+PjJdfDApKyhjW2U+PjJdfDApfDA7Y1toPj4yXT1rO2lmKGs+Pj4wPjMyNzY4KXtjW2g+PjJdPTA7aWYoKGNbYj4+Ml18MCk9PTApe2s9MH1lbHNle2w9Y1tiKzEyPj4yXXwwO2o9MDtkb3tzPWwrKGo8PDIpfDA7az0oKGNbcz4+Ml18MCkrMXwwKT4+PjE7Y1tzPj4yXT1rO2s9aysoY1toPj4yXXwwKXwwO2NbaD4+Ml09aztqPWorMXwwfXdoaWxlKGo+Pj4wPChjW2I+PjJdfDApPj4+MCl9fWg9MjE0NzQ4MzY0OC8oaz4+PjApfDA7aWYoKGFbYis0Pj4wXXwwKT09MD8oZj1iKzM2fDAsKGNbZj4+Ml18MCkhPTApOjApe2lmKChjW2I+PjJdfDApIT0wKXtvPWNbYis4Pj4yXXwwO209Y1tiKzEyPj4yXXwwO2s9Yis0MHwwO249YisxNnwwO2o9MDtzPTA7bD0wO3doaWxlKDEpe3I9KGVhKGwsaCl8MCk+Pj4xNjtjW28rKGo8PDIpPj4yXT1yO2w9KGNbbSsoajw8Mik+PjJdfDApK2x8MDtyPXI+Pj4oY1trPj4yXXwwKTtpZihzPj4+MDxyPj4+MCl7cD1qKyAtMXwwO3E9Y1tuPj4yXXwwO2Rve3M9cysxfDA7Y1txKyhzPDwyKT4+Ml09cH13aGlsZSgoc3wwKSE9KHJ8MCkpfWVsc2V7cj1zfWo9aisxfDA7aWYoIShqPj4+MDwoY1tiPj4yXXwwKT4+PjApKXticmVha31lbHNle3M9cn19aD1jW24+PjJdfDA7Y1toPj4yXT0wO2lmKCEocj4+PjA+KGNbZj4+Ml18MCk+Pj4wKSl7Zz0xOH19ZWxzZXtoPWNbYisxNj4+Ml18MDtjW2g+PjJdPTA7cj0wO2c9MTh9aWYoKGd8MCk9PTE4KXtkb3tyPXIrMXwwO2NbaCsocjw8Mik+PjJdPShjW2I+PjJdfDApKyAtMX13aGlsZSghKHI+Pj4wPihjW2Y+PjJdfDApPj4+MCkpfXM9Y1tiPj4yXXwwO3I9Y1tlPj4yXXwwO3I9cio1fDA7cj1yPj4+MjtzPXM8PDM7cz1zKzQ4fDA7cT1yPj4+MD5zPj4+MDtyPXE/czpyO2NbZT4+Ml09cjtzPWIrMjh8MDtjW3M+PjJdPXI7aT1kO3JldHVybn1pZigoY1tiPj4yXXwwKT09MCl7cz0wO3I9Y1tlPj4yXXwwO3I9cio1fDA7cj1yPj4+MjtzPXM8PDM7cz1zKzQ4fDA7cT1yPj4+MD5zPj4+MDtyPXE/czpyO2NbZT4+Ml09cjtzPWIrMjh8MDtjW3M+PjJdPXI7aT1kO3JldHVybn1qPWNbYis4Pj4yXXwwO2s9Y1tiKzEyPj4yXXwwO2w9MDtnPTA7ZG97Y1tqKyhsPDwyKT4+Ml09KGVhKGcsaCl8MCk+Pj4xNjtnPShjW2srKGw8PDIpPj4yXXwwKStnfDA7bD1sKzF8MDtmPWNbYj4+Ml18MH13aGlsZShsPj4+MDxmPj4+MCk7cj1jW2U+PjJdfDA7cj1yKjV8MDtyPXI+Pj4yO3M9Zjw8MztzPXMrNDh8MDtxPXI+Pj4wPnM+Pj4wO3I9cT9zOnI7Y1tlPj4yXT1yO3M9YisyOHwwO2Nbcz4+Ml09cjtpPWQ7cmV0dXJufWZ1bmN0aW9uIGVkKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Q9aTthW2I+PjBdPTA7Y2QoYis0fDAsNTE2KTtlPWIrNDh8MDtjW2U+PjJdPTY7YVtiKzUyPj4wXT0wO2NbYis4MD4+Ml09NTtjW2IrNjQ+PjJdPTA7Y1tiKzg4Pj4yXT0wO2NbYis4ND4+Ml09MDtnPXVuKDkyKXwwO2Y9Zys2OCYtNjQ7Y1tmKyAtND4+Ml09ZztjW2IrNTY+PjJdPWY7Zj11big5Mil8MDtnPWYrNjgmLTY0O2NbZysgLTQ+PjJdPWY7Y1tiKzYwPj4yXT1nO2NbYis2OD4+Ml09MDtmPWIrNzJ8MDtjW2Y+PjJdPTY7aD0wO2Rve2NbZysoaDw8Mik+PjJdPTE7aD1oKzF8MH13aGlsZShoPj4+MDwoY1tlPj4yXXwwKT4+PjApO2RkKGUpO2U9KChjW2U+PjJdfDApKzZ8MCk+Pj4xO2NbZj4+Ml09ZTtjW2IrNzY+PjJdPWU7ZT1iKzkyfDA7Yj1lKzcyfDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KGJ8MCkpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZmQoZCl7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7Zz1kKzUyfDA7aD1kKzcyfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzc2fDA7Zz1kKzk2fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzEwMHwwO2g9ZCsxMjB8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrMTI0fDA7Zz1kKzE0NHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCsxNDh8MDtoPWQrMTY4fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzE3MnwwO2c9ZCsxOTJ8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrMTk2fDA7aD1kKzIxNnwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCsyMjB8MDtnPWQrMjQwfDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzI0NHwwO2g9ZCsyNjR8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrMjY4fDA7Zz1kKzI4OHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCsyOTJ8MDtoPWQrMzEyfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzMxNnwwO2c9ZCszMzZ8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrMzQwfDA7aD1kKzM2MHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCszNjR8MDtnPWQrMzg0fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzM4OHwwO2g9ZCs0MDh8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNDEyfDA7Zz1kKzQzMnwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs0MzZ8MDtoPWQrNDU2fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzQ2MHwwO2c9ZCs0ODB8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNDg0fDA7aD1kKzUwNHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs1MDh8MDtnPWQrNTI4fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzUzMnwwO2g9ZCs1NTJ8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNTU2fDA7Zz1kKzU3NnwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs1ODB8MDtoPWQrNjAwfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzYwNHwwO2c9ZCs2MjR8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNjI4fDA7aD1kKzY0OHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs2NTJ8MDtnPWQrNjcyfDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzY3NnwwO2g9ZCs2OTZ8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNzAwfDA7Zz1kKzcyMHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs3MjR8MDtoPWQrNzQ0fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzc0OHwwO2c9ZCs3Njh8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNzcyfDA7aD1kKzc5MnwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs3OTZ8MDtnPWQrODE2fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Y2QoZCs4NTJ8MCw2NCk7YVtkKzM5NzY+PjBdPTA7Zz1kKzIwfDA7aD1nKzMyfDA7ZG97YltnPj4xXT0wO2c9ZysyfDB9d2hpbGUoKGd8MCk8KGh8MCkpO3doaWxlKDEpe2c9dW4oNDQpfDA7aWYoKGd8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtmPTU7YnJlYWt9c2NbZyYzMV0oKX1pZigoZnwwKT09NSl7aD1YYSg0KXwwO2NbaD4+Ml09MjI2ODA7d2IoaHwwLDIyNzI4LDIwNil9Y2QoZywyNTYpO2NbZCs4OTY+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9MTI7YnJlYWt9c2NbZyYzMV0oKX1pZigoZnwwKT09MTIpe2g9WGEoNCl8MDtjW2g+PjJdPTIyNjgwO3diKGh8MCwyMjcyOCwyMDYpfWNkKGcsMjU2KTtjW2QrOTAwPj4yXT1nO2Y9ZCs4MjB8MDtjW2YrMD4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDtjW2YrMTI+PjJdPTA7Y1tmKzE2Pj4yXT0wO2NbZisyMD4+Ml09MDtjW2YrMjQ+PjJdPTA7Y1tmKzI4Pj4yXT0wO2Y9MDthOndoaWxlKDEpe3doaWxlKDEpe2c9dW4oNDQpfDA7aWYoKGd8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtmPTIwO2JyZWFrIGF9c2NbZyYzMV0oKX1jZChnLDI1Nik7Y1tkKyhmPDwyKSs5MDQ+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9Mjc7YnJlYWsgYX1zY1tnJjMxXSgpfWNkKGcsMjU2KTtjW2QrKGY8PDIpKzE5Mjg+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9MzQ7YnJlYWsgYX1zY1tnJjMxXSgpfWNkKGcsMjU2KTtjW2QrKGY8PDIpKzI5NTI+PjJdPWc7Zj1mKzF8MDtpZigoZnwwKT49MjU2KXtmPTM4O2JyZWFrfX1pZigoZnwwKT09MjApe2g9WGEoNCl8MDtjW2g+PjJdPTIyNjgwO3diKGh8MCwyMjcyOCwyMDYpfWVsc2UgaWYoKGZ8MCk9PTI3KXtoPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX1lbHNlIGlmKChmfDApPT0zNCl7aD1YYSg0KXwwO2NbaD4+Ml09MjI2ODA7d2IoaHwwLDIyNzI4LDIwNil9ZWxzZSBpZigoZnwwKT09Mzgpe2NbZCszOTg0Pj4yXT0xNjtjW2QrMzk4OD4+Ml09NDtjW2QrMzk5Mj4+Ml09ODtjW2QrMzk5Nj4+Ml09MDtjW2QrNDAxNj4+Ml09MDtjW2QrNDAyMD4+Ml09MDtjW2QrNDAyND4+Ml09MDtjW2QrNDA0MD4+Ml09MTtjW2QrNDA0ND4+Ml09MjtjW2QrNDAzNj4+Ml09NDA5NjtjW2QrNDAzMj4+Ml09NDtjW2QrNDAyOD4+Ml09NDtjW2QrNDA0OD4+Ml09MDtjW2QrNDA1Mj4+Ml09MDtjW2QrNDA1Nj4+Ml09MDtjW2QrNGUzPj4yXT0xNjtjW2QrNDAwND4+Ml09NjU1MzY7Y1tkKzQwMDg+PjJdPS0zMjc2ODtjW2QrNDAxMj4+Ml09MzI3Njc7Y1tkKzM5ODA+PjJdPTA7Y1tkKzQwNjQ+PjJdPTE2O2NbZCs0MDY4Pj4yXT0xO2NbZCs0MDcyPj4yXT04O2NbZCs0MDc2Pj4yXT0wO2NbZCs0MDk2Pj4yXT0wO2NbZCs0MTAwPj4yXT0wO2NbZCs0MTA0Pj4yXT0wO2NbZCs0MTIwPj4yXT0xO2NbZCs0MTI0Pj4yXT0yO2NbZCs0MTE2Pj4yXT00MDk2O2NbZCs0MTEyPj4yXT00O2NbZCs0MTA4Pj4yXT00O2NbZCs0MTI4Pj4yXT0wO2NbZCs0MTMyPj4yXT0wO2NbZCs0MTM2Pj4yXT0wO2NbZCs0MDgwPj4yXT0xNjtjW2QrNDA4ND4+Ml09NjU1MzY7Y1tkKzQwODg+PjJdPS0zMjc2ODtjW2QrNDA5Mj4+Ml09MzI3Njc7Y1tkKzQwNjA+PjJdPTA7Y1tkKzQxNDQ+PjJdPTMyO2NbZCs0MTQ4Pj4yXT0yO2NbZCs0MTUyPj4yXT04O2NbZCs0MTU2Pj4yXT0wO2NbZCs0MTc2Pj4yXT0wO2NbZCs0MTgwPj4yXT0wO2NbZCs0MTg0Pj4yXT0wO2NbZCs0MjAwPj4yXT0xO2NbZCs0MjA0Pj4yXT0yO2NbZCs0MTk2Pj4yXT00MDk2O2NbZCs0MTkyPj4yXT00O2NbZCs0MTg4Pj4yXT00O2NbZCs0MjA4Pj4yXT0wO2NbZCs0MjEyPj4yXT0wO2NbZCs0MjE2Pj4yXT0wO2NbZCs0MTYwPj4yXT0zMjtjW2QrNDE2ND4+Ml09MDtjW2QrNDE2OD4+Ml09LTIxNDc0ODM2NDg7Y1tkKzQxNzI+PjJdPTIxNDc0ODM2NDc7Y1tkKzQxNDA+PjJdPTA7Y1tkKzQyMjQ+PjJdPTMyO2NbZCs0MjI4Pj4yXT0yMjtjW2QrNDIzMj4+Ml09ODtjW2QrNDIzNj4+Ml09MDtjW2QrNDI1Nj4+Ml09MDtjW2QrNDI2MD4+Ml09MDtjW2QrNDI2ND4+Ml09MDtjW2QrNDI4MD4+Ml09MTtjW2QrNDI4ND4+Ml09MjtjW2QrNDI3Nj4+Ml09NDA5NjtjW2QrNDI3Mj4+Ml09NDtjW2QrNDI2OD4+Ml09NDtjW2QrNDI4OD4+Ml09MDtjW2QrNDI5Mj4+Ml09MDtjW2QrNDI5Nj4+Ml09MDtjW2QrNDI0MD4+Ml09MzI7Y1tkKzQyNDQ+PjJdPTA7Y1tkKzQyNDg+PjJdPS0yMTQ3NDgzNjQ4O2NbZCs0MjUyPj4yXT0yMTQ3NDgzNjQ3O2NbZCs0MjIwPj4yXT0wO2NbZCs0MzA0Pj4yXT0zMjtjW2QrNDMwOD4+Ml09MjA7Y1tkKzQzMTI+PjJdPTg7Y1tkKzQzMTY+PjJdPTA7Y1tkKzQzMzY+PjJdPTA7Y1tkKzQzNDA+PjJdPTA7Y1tkKzQzNDQ+PjJdPTA7Y1tkKzQzNjA+PjJdPTE7Y1tkKzQzNjQ+PjJdPTI7Y1tkKzQzNTY+PjJdPTQwOTY7Y1tkKzQzNTI+PjJdPTQ7Y1tkKzQzNDg+PjJdPTQ7Y1tkKzQzNjg+PjJdPTA7Y1tkKzQzNzI+PjJdPTA7Y1tkKzQzNzY+PjJdPTA7Y1tkKzQzMjA+PjJdPTMyO2NbZCs0MzI0Pj4yXT0wO2NbZCs0MzI4Pj4yXT0tMjE0NzQ4MzY0ODtjW2QrNDMzMj4+Ml09MjE0NzQ4MzY0NztjW2QrNDMwMD4+Ml09MDtjW2QrNDM4ND4+Ml09MTY7Y1tkKzQzODg+PjJdPTQ7Y1tkKzQzOTI+PjJdPTg7Y1tkKzQzOTY+PjJdPTA7Y1tkKzQ0MTY+PjJdPTA7Y1tkKzQ0MjA+PjJdPTA7Y1tkKzQ0MjQ+PjJdPTA7Y1tkKzQ0NDA+PjJdPTE7Y1tkKzQ0NDQ+PjJdPTI7Y1tkKzQ0MzY+PjJdPTQwOTY7Y1tkKzQ0MzI+PjJdPTQ7Y1tkKzQ0Mjg+PjJdPTQ7Y1tkKzQ0NDg+PjJdPTA7Y1tkKzQ0NTI+PjJdPTA7Y1tkKzQ0NTY+PjJdPTA7Y1tkKzQ0MDA+PjJdPTE2O2NbZCs0NDA0Pj4yXT02NTUzNjtjW2QrNDQwOD4+Ml09LTMyNzY4O2NbZCs0NDEyPj4yXT0zMjc2NztjW2QrNDM4MD4+Ml09MDtjW2QrNDQ2ND4+Ml09MTY7Y1tkKzQ0Njg+PjJdPTE7Y1tkKzQ0NzI+PjJdPTg7Y1tkKzQ0NzY+PjJdPTA7Y1tkKzQ0OTY+PjJdPTA7Y1tkKzQ1MDA+PjJdPTA7Y1tkKzQ1MDQ+PjJdPTA7Y1tkKzQ1MjA+PjJdPTE7Y1tkKzQ1MjQ+PjJdPTI7Y1tkKzQ1MTY+PjJdPTQwOTY7Y1tkKzQ1MTI+PjJdPTQ7Y1tkKzQ1MDg+PjJdPTQ7Y1tkKzQ1Mjg+PjJdPTA7Y1tkKzQ1MzI+PjJdPTA7Y1tkKzQ1MzY+PjJdPTA7Y1tkKzQ0ODA+PjJdPTE2O2NbZCs0NDg0Pj4yXT02NTUzNjtjW2QrNDQ4OD4+Ml09LTMyNzY4O2NbZCs0NDkyPj4yXT0zMjc2NztjW2QrNDQ2MD4+Ml09MDtjW2QrNDU0ND4+Ml09MzI7Y1tkKzQ1NDg+PjJdPTI7Y1tkKzQ1NTI+PjJdPTg7Y1tkKzQ1NTY+PjJdPTA7Y1tkKzQ1NzY+PjJdPTA7Y1tkKzQ1ODA+PjJdPTA7Y1tkKzQ1ODQ+PjJdPTA7Y1tkKzQ2MDA+PjJdPTE7Y1tkKzQ2MDQ+PjJdPTI7Y1tkKzQ1OTY+PjJdPTQwOTY7Y1tkKzQ1OTI+PjJdPTQ7Y1tkKzQ1ODg+PjJdPTQ7Y1tkKzQ2MDg+PjJdPTA7Y1tkKzQ2MTI+PjJdPTA7Y1tkKzQ2MTY+PjJdPTA7Y1tkKzQ1NjA+PjJdPTMyO2NbZCs0NTY0Pj4yXT0wO2NbZCs0NTY4Pj4yXT0tMjE0NzQ4MzY0ODtjW2QrNDU3Mj4+Ml09MjE0NzQ4MzY0NztjW2QrNDU0MD4+Ml09MDtjW2QrNDYyND4+Ml09MzI7Y1tkKzQ2Mjg+PjJdPTIyO2NbZCs0NjMyPj4yXT04O2NbZCs0NjM2Pj4yXT0wO2NbZCs0NjU2Pj4yXT0wO2NbZCs0NjYwPj4yXT0wO2NbZCs0NjY0Pj4yXT0wO2NbZCs0NjgwPj4yXT0xO2NbZCs0Njg0Pj4yXT0yO2NbZCs0Njc2Pj4yXT00MDk2O2NbZCs0NjcyPj4yXT00O2NbZCs0NjY4Pj4yXT00O2NbZCs0Njg4Pj4yXT0wO2NbZCs0NjkyPj4yXT0wO2NbZCs0Njk2Pj4yXT0wO2NbZCs0NjQwPj4yXT0zMjtjW2QrNDY0ND4+Ml09MDtjW2QrNDY0OD4+Ml09LTIxNDc0ODM2NDg7Y1tkKzQ2NTI+PjJdPTIxNDc0ODM2NDc7Y1tkKzQ2MjA+PjJdPTA7Y1tkKzQ3MDQ+PjJdPTMyO2NbZCs0NzA4Pj4yXT0yMDtjW2QrNDcxMj4+Ml09ODtjW2QrNDcxNj4+Ml09MDtjW2QrNDczNj4+Ml09MDtjW2QrNDc0MD4+Ml09MDtjW2QrNDc0ND4+Ml09MDtjW2QrNDc2MD4+Ml09MTtjW2QrNDc2ND4+Ml09MjtjW2QrNDc1Nj4+Ml09NDA5NjtjW2QrNDc1Mj4+Ml09NDtjW2QrNDc0OD4+Ml09NDtjW2QrNDc2OD4+Ml09MDtjW2QrNDc3Mj4+Ml09MDtjW2QrNDc3Nj4+Ml09MDtjW2QrNDcyMD4+Ml09MzI7Y1tkKzQ3MjQ+PjJdPTA7Y1tkKzQ3Mjg+PjJdPS0yMTQ3NDgzNjQ4O2NbZCs0NzMyPj4yXT0yMTQ3NDgzNjQ3O2NbZCs0NzAwPj4yXT0wO2FbZCs0NzgwPj4wXT0wO2FbZCs0NzgxPj4wXT0wO2k9ZTtyZXR1cm59fWZ1bmN0aW9uIGdkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2k9aSszMnwwO2g9ZTtmPWNbYis4Pj4yXXwwO2I9Y1tiKzQ+PjJdfDA7amQoaCxmLGIpO2c9Y1toPj4yXXwwO2FbZCszPj4wXT1nPj4+MjQ7YVtkKzI+PjBdPWc+Pj4xNjthW2QrMT4+MF09Zz4+Pjg7YVtkPj4wXT1nO2c9Y1toKzQ+PjJdfDA7YVtkKzc+PjBdPWc+Pj4yNDthW2QrNj4+MF09Zz4+PjE2O2FbZCs1Pj4wXT1nPj4+ODthW2QrND4+MF09ZztnPWNbaCs4Pj4yXXwwO2FbZCsxMT4+MF09Zz4+PjI0O2FbZCsxMD4+MF09Zz4+PjE2O2FbZCs5Pj4wXT1nPj4+ODthW2QrOD4+MF09ZztnPWNbaCsxMj4+Ml18MDthW2QrMTM+PjBdPShnJjY1NTM1KT4+Pjg7YVtkKzEyPj4wXT1nO2FbZCsxND4+MF09Zz4+PjE2O2FbZCsxNT4+MF09Zz4+PjI0O2g9Y1toKzE2Pj4yXXwwO2FbZCsxNj4+MF09aDthW2QrMTc+PjBdPShoJjY1NTM1KT4+Pjg7YVtkKzE5Pj4wXT1oPj4+MjQ7YVtkKzE4Pj4wXT1oPj4+MTY7aD1rZChmKzQ3ODR8MCxiKXwwO2c9STthW2QrMjM+PjBdPWg+Pj4yNDthW2QrMjI+PjBdPWg+Pj4xNjthW2QrMjE+PjBdPWg+Pj44O2FbZCsyMD4+MF09aDtqPUtuKGh8MCxnfDAsNTYpfDA7YVtkKzI3Pj4wXT1qO2o9S24oaHwwLGd8MCw0OCl8MDthW2QrMjY+PjBdPWo7aD1LbihofDAsZ3wwLDQwKXwwO2FbZCsyNT4+MF09aDthW2QrMjQ+PjBdPWc7bGQoZis1MTEyfDAsYixkKzI4fDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gaGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7Y1thPj4yXT00MjQ7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1hZChhKzUxMTJ8MCk7X2MoYSs1MDk2fDApO19jKGErNTA2NHwwKTtaYyhhKzQ5NDh8MCk7JGMoYSs0Nzg0fDApO1hjKGEpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gaWQoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2NbYT4+Ml09NDI0O2Q9Y1thKzg+PjJdfDA7aWYoKGR8MCk9PTApe3ZuKGEpO2k9YjtyZXR1cm59YWQoZCs1MTEyfDApO19jKGQrNTA5NnwwKTtfYyhkKzUwNjR8MCk7WmMoZCs0OTQ4fDApOyRjKGQrNDc4NHwwKTtYYyhkKTt2bihkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGpkKGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO2o9aTtpPWkrMzJ8MDtrPWo7bD1nKzQ3ODF8MDtpZigoYVtsPj4wXXwwKT09MCl7dGQoZys0MzgwfDApO3RkKGcrNDQ2MHwwKTt0ZChnKzQ1NDB8MCk7dGQoZys0NjIwfDApO3RkKGcrNDcwMHwwKTthW2w+PjBdPTF9bD1nKzM5NzZ8MDtpZigoYVtsPj4wXXwwKT09MCl7YVtsPj4wXT0xO3BkKGNbaD4+Ml18MCxrLDIwKTtyPWRbaysxPj4wXTw8OHxkW2s+PjBdfGRbaysyPj4wXTw8MTZ8ZFtrKzM+PjBdPDwyNDtvPWRbays1Pj4wXTw8OHxkW2srND4+MF18ZFtrKzY+PjBdPDwxNnxkW2srNz4+MF08PDI0O3A9ZFtrKzk+PjBdPDw4fGRbays4Pj4wXXxkW2srMTA+PjBdPDwxNnxkW2srMTE+PjBdPDwyNDtxPShhW2srMTM+PjBdPDw4fGRbaysxMj4+MF0pJjY1NTM1O3M9YVtrKzE0Pj4wXXwwO3Q9YVtrKzE1Pj4wXXwwO3U9YVtrKzE2Pj4wXXwwO2g9YVtrKzE3Pj4wXXwwO3Y9KGFbaysxOT4+MF08PDh8ZFtrKzE4Pj4wXSkmNjU1MzU7YVtnPj4wXT1yO2FbZysxPj4wXT1yPj44O2FbZysyPj4wXT1yPj4xNjthW2crMz4+MF09cj4+MjQ7cj1nKzR8MDthW3I+PjBdPW87YVtyKzE+PjBdPW8+Pjg7YVtyKzI+PjBdPW8+PjE2O2FbciszPj4wXT1vPj4yNDtyPWcrOHwwO2Fbcj4+MF09cDthW3IrMT4+MF09cD4+ODthW3IrMj4+MF09cD4+MTY7YVtyKzM+PjBdPXA+PjI0O3I9ZysxMnwwO2Fbcj4+MF09cTthW3IrMT4+MF09cT4+ODthW2crMTQ+PjBdPXM7YVtnKzE1Pj4wXT10O2FbZysxNj4+MF09dTthW2crMTc+PjBdPWg7aD1nKzE4fDA7YVtoPj4wXT12O2FbaCsxPj4wXT12Pj44O2Y9ZiswfDA7aD1nKzB8MDtnPWYrMjB8MDtkb3thW2Y+PjBdPWFbaD4+MF18MDtmPWYrMXwwO2g9aCsxfDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2k9ajtyZXR1cm59bT1xZChoLGcrODUyfDApfDA7aWYoKG18MCkhPTApe289ZysxNHwwO2s9YVtvPj4wXXwwO2lmKChtJjMyfDApIT0wKXtrPShxZChoLGNbZysoKCgoayYyNTUpPj4+NyYyNTUpPDw3fGsmN3woKGsmMjU1KT4+PjYmMjU1KTw8NiY2NHwoKGsmMjU1KT4+PjMmMjU1KTw8MyY1Nik8PDIpKzkwND4+Ml18MCl8MCkmMjU1O2Fbbz4+MF09a31sPWsmNztrPShrJjI1NSk+Pj4zJjc7bj1kWzg3Misoazw8MykrbD4+MF18MDtsPWRbOTM2KyhrPDwzKStsPj4wXXwwO2lmKChtJjE2fDApPT0wKXt1PWJbZysobjw8MSkrMjA+PjFdfDA7dj1nKzEyfDA7YVt2Pj4wXT11O2FbdisxPj4wXT11Pj44fWVsc2V7cD1nKyhuPDwxKSsyMHwwO3E9ZVtwPj4xXXwwO3E9KHJkKGcrNDM4MHwwLGgsKGNbZys0NDE2Pj4yXXwwKSsoKG4+Pj4wPDM/bjozKSo0NHwwKXwwKXwwKStxfDA7cj1jW2crNDQwND4+Ml18MDtpZigocXwwKTwwKXtxPXErcnwwfWVsc2V7cT1xLShxPj4+MDxyPj4+MD8wOnIpfDB9dj1xJjY1NTM1O3U9ZysxMnwwO2FbdT4+MF09djthW3UrMT4+MF09dj4+ODtiW3A+PjFdPXZ9aWYoKG0mOHwwKSE9MCl7dj1nKzE1fDA7YVt2Pj4wXT1xZChoLGNbZysoZFt2Pj4wXTw8MikrMTkyOD4+Ml18MCl8MH1pZigobSY0fDApIT0wKXtwPXFkKGgsY1tnKygoKGRbbz4+MF18MCk+Pj42JjEpPDwyKSs4OTY+PjJdfDApfDA7bz1nKzE2fDA7cD0oYVtvPj4wXXwwKStwfDA7aWYoKHB8MCk8MCl7cD1wKzI1NnwwfWVsc2V7cD0ocHwwKT4yNTU/cCsgLTI1NnwwOnB9YVtvPj4wXT1wfWlmKChtJjJ8MCkhPTApe3Y9ZysxN3wwO2Fbdj4+MF09cWQoaCxjW2crKGRbdj4+MF08PDIpKzI5NTI+PjJdfDApfDB9aWYoKG0mMXwwKSE9MCl7bT1nKzE4fDA7cD0oZFttPj4wXXxkW20rMT4+MF08PDgpJjY1NTM1O3A9KHJkKGcrNDQ2MHwwLGgsY1tnKzQ0OTY+PjJdfDApfDApK3B8MDtvPWNbZys0NDg0Pj4yXXwwO2lmKChwfDApPDApe289cCtvfDB9ZWxzZXtvPXAtKHA+Pj4wPG8+Pj4wPzA6byl8MH12PW8mNjU1MzU7YVttPj4wXT12O2FbbSsxPj4wXT12Pj44fX1lbHNle2s9YVtnKzE0Pj4wXXwwO249ayY3O2s9KGsmMjU1KT4+PjMmNztsPWRbOTM2KyhrPDwzKStuPj4wXXwwO249ZFs4NzIrKGs8PDMpK24+PjBdfDB9cT1nKyhuKjI0fDApKzUyfDA7bz1nKyhuKjI0fDApKzYwfDA7cD1jW28+PjJdfDA7bT1nKzQ1NDB8MDtrPShrfDApPT0xJjE7cD0ocmQobSxoLChjW2crNDU3Nj4+Ml18MCkrKGsqNDR8MCl8MCl8MCkrcHwwO3I9Y1tnKzQ1NjQ+PjJdfDA7aWYoKHB8MCk8MCl7cD1wK3J8MH1lbHNle3A9cC0ocD4+PjA8cj4+PjA/MDpyKXwwfXI9KGRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNCkrcHwwO2FbZz4+MF09cjthW2crMT4+MF09cj4+ODthW2crMj4+MF09cj4+MTY7YVtnKzM+PjBdPXI+PjI0O3I9ZysobioyNHwwKSs3MnwwO3M9Y1tvPj4yXXwwO2Rve2lmKChhW3I+PjBdfDApPT0wKXt1PWcrKG4qMjR8MCkrNTZ8MDt0PWNbdT4+Ml18MDtpZigoc3wwKT49KHB8MCkpe2lmKCh0fDApPChwfDApKXtjW3E+PjJdPXQ7Y1t1Pj4yXT1wfWVsc2V7Y1txPj4yXT1wfWFbcj4+MF09MTticmVha31jW3E+PjJdPXQ7Y1t1Pj4yXT1zO3Q9ZysobioyNHwwKSs2OHwwO3E9Y1t0Pj4yXXwwO3M9ZysobioyNHwwKSs2NHwwO3I9Y1tzPj4yXXwwO2lmKChxfDApPChwfDApKXtjW28+PjJdPXI7Y1tzPj4yXT1xO2NbdD4+Ml09cDticmVha31pZigocnwwKTwocHwwKSl7Y1tvPj4yXT1yO2Nbcz4+Ml09cDticmVha31lbHNle2Nbbz4+Ml09cDticmVha319ZWxzZXt0PWcrKG4qMjR8MCkrNjR8MDt1PWNbdD4+Ml18MDtpZigocHwwKT49KHN8MCkpe289ZysobioyNHwwKSs2OHwwO2lmKChwfDApPCh1fDApKXtjW28+PjJdPXU7Y1t0Pj4yXT1wfWVsc2V7Y1tvPj4yXT1wfWFbcj4+MF09MDticmVha31jW2crKG4qMjR8MCkrNjg+PjJdPXU7Y1t0Pj4yXT1zO3M9Y1txPj4yXXwwO3Q9ZysobioyNHwwKSs1NnwwO3I9Y1t0Pj4yXXwwO2lmKChwfDApPChzfDApKXtjW28+PjJdPXI7Y1t0Pj4yXT1zO2NbcT4+Ml09cDticmVha31pZigocHwwKTwocnwwKSl7Y1tvPj4yXT1yO2NbdD4+Ml09cDticmVha31lbHNle2Nbbz4+Ml09cDticmVha319fXdoaWxlKDApO3I9ZysobioyNHwwKSs0MzZ8MDtwPWcrKG4qMjR8MCkrNDQ0fDA7cT1jW3A+PjJdfDA7cz1jW20+PjJdfDA7bz1nKzQ2MjB8MDtxPShyZChvLGgsKGNbZys0NjU2Pj4yXXwwKSsoKChzPj4+MDwyMD9zJi0yOjIwKXxrKSo0NHwwKXwwKXwwKStxfDA7cz1jW2crNDY0ND4+Ml18MDtpZigocXwwKTwwKXtxPXErc3wwfWVsc2V7cT1xLShxPj4+MDxzPj4+MD8wOnMpfDB9cz1nKzR8MDt0PShkW3M+PjBdfGRbcysxPj4wXTw8OHxkW3MrMj4+MF08PDE2fGRbcyszPj4wXTw8MjQpK3F8MDthW3M+PjBdPXQ7YVtzKzE+PjBdPXQ+Pjg7YVtzKzI+PjBdPXQ+PjE2O2FbcyszPj4wXT10Pj4yNDtzPWcrKG4qMjR8MCkrNDU2fDA7dD1jW3A+PjJdfDA7ZG97aWYoKGFbcz4+MF18MCk9PTApe3U9ZysobioyNHwwKSs0NDB8MDt2PWNbdT4+Ml18MDtpZigodHwwKT49KHF8MCkpe2lmKCh2fDApPChxfDApKXtjW3I+PjJdPXY7Y1t1Pj4yXT1xfWVsc2V7Y1tyPj4yXT1xfWFbcz4+MF09MTticmVha31jW3I+PjJdPXY7Y1t1Pj4yXT10O3M9ZysobioyNHwwKSs0NTJ8MDtyPWNbcz4+Ml18MDtuPWcrKG4qMjR8MCkrNDQ4fDA7dD1jW24+PjJdfDA7aWYoKHJ8MCk8KHF8MCkpe2NbcD4+Ml09dDtjW24+PjJdPXI7Y1tzPj4yXT1xO2JyZWFrfWlmKCh0fDApPChxfDApKXtjW3A+PjJdPXQ7Y1tuPj4yXT1xO2JyZWFrfWVsc2V7Y1twPj4yXT1xO2JyZWFrfX1lbHNle3U9ZysobioyNHwwKSs0NDh8MDt2PWNbdT4+Ml18MDtpZigocXwwKT49KHR8MCkpe249ZysobioyNHwwKSs0NTJ8MDtpZigocXwwKTwodnwwKSl7Y1tuPj4yXT12O2NbdT4+Ml09cX1lbHNle2Nbbj4+Ml09cX1hW3M+PjBdPTA7YnJlYWt9Y1tnKyhuKjI0fDApKzQ1Mj4+Ml09djtjW3U+PjJdPXQ7cz1jW3I+PjJdfDA7bj1nKyhuKjI0fDApKzQ0MHwwO3Q9Y1tuPj4yXXwwO2lmKChxfDApPChzfDApKXtjW3A+PjJdPXQ7Y1tuPj4yXT1zO2Nbcj4+Ml09cTticmVha31pZigocXwwKTwodHwwKSl7Y1twPj4yXT10O2Nbbj4+Ml09cTticmVha31lbHNle2NbcD4+Ml09cTticmVha319fXdoaWxlKDApO209KGNbbz4+Ml18MCkrKGNbbT4+Ml18MCl8MDtsPWcrKGw8PDIpKzgyMHwwO249Y1tsPj4yXXwwO2lmKG0+Pj4wPDM2KXttPW0+Pj4xJjIxNDc0ODM2NDZ9ZWxzZXttPTE4fWs9KHJkKGcrNDcwMHwwLGgsKGNbZys0NzM2Pj4yXXwwKSsoKG18aykqNDR8MCl8MCl8MCkrbnwwO2g9Y1tnKzQ3MjQ+PjJdfDA7aWYoKGt8MCk8MCl7aD1rK2h8MH1lbHNle2g9ay0oaz4+PjA8aD4+PjA/MDpoKXwwfXY9Zys4fDA7YVt2Pj4wXT1oO2FbdisxPj4wXT1oPj44O2FbdisyPj4wXT1oPj4xNjthW3YrMz4+MF09aD4+MjQ7Y1tsPj4yXT1oO2Y9ZiswfDA7aD1nKzB8MDtnPWYrMjB8MDtkb3thW2Y+PjBdPWFbaD4+MF18MDtmPWYrMXwwO2g9aCsxfDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2k9ajtyZXR1cm59ZnVuY3Rpb24ga2QoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7Zj1pO2k9aSsxNnwwO2c9ZjtoPWIrMzI1fDA7aWYoKGFbaD4+MF18MCk9PTApe3RkKGIrMjQ0fDApO2FbaD4+MF09MX1pZigoYVtiPj4wXXwwKT09MCl7YVtiPj4wXT0xO3BkKGNbZT4+Ml18MCxnLDgpO249ZFtnKzE+PjBdPDw4fGRbZz4+MF18ZFtnKzI+PjBdPDwxNnxkW2crMz4+MF08PDI0O209ZFtnKzU+PjBdPDw4fGRbZys0Pj4wXXxkW2crNj4+MF08PDE2fGRbZys3Pj4wXTw8MjQ7bD1iKzEwMHwwO2s9bDthW2s+PjBdPW47YVtrKzE+PjBdPW4+Pjg7YVtrKzI+PjBdPW4+PjE2O2FbayszPj4wXT1uPj4yNDtsPWwrNHwwO2FbbD4+MF09bTthW2wrMT4+MF09bT4+ODthW2wrMj4+MF09bT4+MTY7YVtsKzM+PjBdPW0+PjI0O0k9bTtpPWY7cmV0dXJuIG58MH1nPWIrOTJ8MDtkb3tpZigoY1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDApPT0wKXtoPXFkKGUsYis0OHwwKXwwO2lmKChofDApPT0yKXtoPWIrOTZ8MDtjW2g+PjJdPShjW2g+PjJdfDApKzEmMztqPWIrKGNbZz4+Ml08PDMpKzEwNHwwO2o9ZFtqPj4wXXxkW2orMT4+MF08PDh8ZFtqKzI+PjBdPDwxNnxkW2orMz4+MF08PDI0O2o9KHJkKGIrMjQ0fDAsZSwoY1tiKzI4MD4+Ml18MCkrMzUyfDApfDApK2p8MDtrPWNbYisyNjg+PjJdfDA7aWYoKGp8MCk8MCl7aj1qK2t8MH1lbHNle2o9ai0oaj4+PjA8az4+PjA/MDprKXwwfW09KChqfDApPDApPDwzMT4+MzE7az1iKyhjW2g+PjJdPDwzKSsxMDB8MDtuPWs7YVtuPj4wXT1qO2FbbisxPj4wXT1qPj44O2FbbisyPj4wXT1qPj4xNjthW24rMz4+MF09aj4+MjQ7az1rKzR8MDthW2s+PjBdPW07YVtrKzE+PjBdPW0+Pjg7YVtrKzI+PjBdPW0+PjE2O2FbayszPj4wXT1tPj4yNDtrPWIrKGNbaD4+Ml08PDMpKzEwMHwwO209azttPWRbbT4+MF18ZFttKzE+PjBdPDw4fGRbbSsyPj4wXTw8MTZ8ZFttKzM+PjBdPDwyNDtqPWs7YVtqPj4wXT0wO2FbaisxPj4wXT0wO2FbaisyPj4wXT0wO2FbaiszPj4wXT0wO2s9ays0fDA7YVtrPj4wXT1tO2FbaysxPj4wXT1tPj44O2FbaysyPj4wXT1tPj4xNjthW2srMz4+MF09bT4+MjQ7az1lKzR8MDttPWNbaz4+Ml18MDtqPWUrOHwwO249KGNbaj4+Ml18MCk+Pj4xNjtjW2o+PjJdPW47bD0obT4+PjApLyhuPj4+MCl8MDtuPW0tKGVhKG4sbCl8MCl8MDtjW2s+PjJdPW47ZG97bj0obWQoY1tlPj4yXXwwKXwwKSYyNTV8bjw8ODtjW2s+PjJdPW47bT1jW2o+PjJdfDA7bz1tPDw4O2Nbaj4+Ml09b313aGlsZShvPj4+MDwxNjc3NzIxNik7bz1tPj4+OCY2NTUzNTtjW2o+PjJdPW87bT0obj4+PjApLyhvPj4+MCl8MDtuPW4tKGVhKG0sbyl8MCl8MDtjW2s+PjJdPW47ZG97bj0obWQoY1tlPj4yXXwwKXwwKSYyNTV8bjw8ODtjW2s+PjJdPW47bz1jW2o+PjJdPDw4O2Nbaj4+Ml09b313aGlsZShvPj4+MDwxNjc3NzIxNik7bz1iKyhjW2g+PjJdPDwzKSsxMDB8MDtuPW87az1uO249bis0fDA7bj1kW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjQ7bD1kW2s+PjBdfGRbaysxPj4wXTw8OHxkW2srMj4+MF08PDE2fGRbayszPj4wXTw8MjR8KG08PDE2fGwmNjU1MzUpO209bzthW20+PjBdPWw7YVttKzE+PjBdPWw+Pjg7YVttKzI+PjBdPWw+PjE2O2FbbSszPj4wXT1sPj4yNDtvPW8rNHwwO2Fbbz4+MF09bjthW28rMT4+MF09bj4+ODthW28rMj4+MF09bj4+MTY7YVtvKzM+PjBdPW4+PjI0O289Y1toPj4yXXwwO2NbZz4+Ml09bztjW2IrKG88PDIpKzEzMj4+Ml09MDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31lbHNlIGlmKChofDApPT0xKXtlPXJkKGIrMjQ0fDAsZSxjW2IrMjgwPj4yXXwwKXwwO2g9Y1tiKzI2OD4+Ml18MDtpZigoZXwwKTwwKXtlPWgrZXwwfWVsc2V7ZT1lLShlPj4+MDxoPj4+MD8wOmgpfDB9Y1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdPWU7bz1jW2c+PjJdfDA7bD1jW2IrKG88PDIpKzEzMj4+Ml18MDtvPWIrKG88PDMpKzEwMHwwO249bzttPW47bj1uKzR8MDtsPUluKGRbbT4+MF18ZFttKzE+PjBdPDw4fGRbbSsyPj4wXTw8MTZ8ZFttKzM+PjBdPDwyNHwwLGRbbj4+MF18ZFtuKzE+PjBdPDw4fGRbbisyPj4wXTw8MTZ8ZFtuKzM+PjBdPDwyNHwwLGx8MCwoKGx8MCk8MCk8PDMxPj4zMXwwKXwwO249STttPW87YVttPj4wXT1sO2FbbSsxPj4wXT1sPj44O2FbbSsyPj4wXT1sPj4xNjthW20rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW47YVtvKzE+PjBdPW4+Pjg7YVtvKzI+PjBdPW4+PjE2O2FbbyszPj4wXT1uPj4yNDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31lbHNle2lmKChofDApPD0yKXticmVha31jW2c+PjJdPWgrMisoY1tnPj4yXXwwKSYzO2tkKGIsZSl8MDticmVha319ZWxzZXtoPXFkKGUsYis0fDApfDA7aWYoKGh8MCk9PTEpe2g9Y1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDA7ZT0ocmQoYisyNDR8MCxlLChjW2IrMjgwPj4yXXwwKSs0NHwwKXwwKStofDA7aD1jW2IrMjY4Pj4yXXwwO2lmKChlfDApPDApe2U9ZStofDB9ZWxzZXtlPWUtKGU+Pj4wPGg+Pj4wPzA6aCl8MH1vPWIrKGNbZz4+Ml08PDMpKzEwMHwwO2w9bztuPWw7bD1sKzR8MDtsPUluKGRbbj4+MF18ZFtuKzE+PjBdPDw4fGRbbisyPj4wXTw8MTZ8ZFtuKzM+PjBdPDwyNHwwLGRbbD4+MF18ZFtsKzE+PjBdPDw4fGRbbCsyPj4wXTw8MTZ8ZFtsKzM+PjBdPDwyNHwwLGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwKXwwO249STttPW87YVttPj4wXT1sO2FbbSsxPj4wXT1sPj44O2FbbSsyPj4wXT1sPj4xNjthW20rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW47YVtvKzE+PjBdPW4+Pjg7YVtvKzI+PjBdPW4+PjE2O2FbbyszPj4wXT1uPj4yNDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31pZigoaHwwKT49NTExKXtpZigoaHwwKSE9NTEyKXtpZigoaHwwKTw9NTExKXticmVha31jW2c+PjJdPShjW2c+PjJdfDApK2gmMztrZChiLGUpfDA7YnJlYWt9aD1iKzk2fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxJjM7az1iKyhjW2c+PjJdPDwzKSsxMDR8MDtrPWRbaz4+MF18ZFtrKzE+PjBdPDw4fGRbaysyPj4wXTw8MTZ8ZFtrKzM+PjBdPDwyNDtrPShyZChiKzI0NHwwLGUsKGNbYisyODA+PjJdfDApKzM1MnwwKXwwKStrfDA7aj1jW2IrMjY4Pj4yXXwwO2lmKChrfDApPDApe2o9aytqfDB9ZWxzZXtqPWstKGs+Pj4wPGo+Pj4wPzA6ail8MH1vPSgoanwwKTwwKTw8MzE+PjMxO2s9YisoY1toPj4yXTw8MykrMTAwfDA7bD1rO2FbbD4+MF09ajthW2wrMT4+MF09aj4+ODthW2wrMj4+MF09aj4+MTY7YVtsKzM+PjBdPWo+PjI0O2s9ays0fDA7YVtrPj4wXT1vO2FbaysxPj4wXT1vPj44O2FbaysyPj4wXT1vPj4xNjthW2srMz4+MF09bz4+MjQ7az1iKyhjW2g+PjJdPDwzKSsxMDB8MDtvPWs7bz1kW28+PjBdfGRbbysxPj4wXTw8OHxkW28rMj4+MF08PDE2fGRbbyszPj4wXTw8MjQ7bD1rO2FbbD4+MF09MDthW2wrMT4+MF09MDthW2wrMj4+MF09MDthW2wrMz4+MF09MDtrPWsrNHwwO2Fbaz4+MF09bzthW2srMT4+MF09bz4+ODthW2srMj4+MF09bz4+MTY7YVtrKzM+PjBdPW8+PjI0O2s9ZSs0fDA7bz1jW2s+PjJdfDA7bD1lKzh8MDttPShjW2w+PjJdfDApPj4+MTY7Y1tsPj4yXT1tO2o9KG8+Pj4wKS8obT4+PjApfDA7bT1vLShlYShtLGopfDApfDA7Y1trPj4yXT1tO2Rve209KG1kKGNbZT4+Ml18MCl8MCkmMjU1fG08PDg7Y1trPj4yXT1tO249Y1tsPj4yXXwwO289bjw8ODtjW2w+PjJdPW99d2hpbGUobz4+PjA8MTY3NzcyMTYpO289bj4+PjgmNjU1MzU7Y1tsPj4yXT1vO249KG0+Pj4wKS8obz4+PjApfDA7bT1tLShlYShuLG8pfDApfDA7Y1trPj4yXT1tO2Rve209KG1kKGNbZT4+Ml18MCl8MCkmMjU1fG08PDg7Y1trPj4yXT1tO289Y1tsPj4yXTw8ODtjW2w+PjJdPW99d2hpbGUobz4+PjA8MTY3NzcyMTYpO289YisoY1toPj4yXTw8MykrMTAwfDA7bT1vO2w9bTttPW0rNHwwO209ZFttPj4wXXxkW20rMT4+MF08PDh8ZFttKzI+PjBdPDwxNnxkW20rMz4+MF08PDI0O2w9ZFtsPj4wXXxkW2wrMT4+MF08PDh8ZFtsKzI+PjBdPDwxNnxkW2wrMz4+MF08PDI0fChuPDwxNnxqJjY1NTM1KTtuPW87YVtuPj4wXT1sO2FbbisxPj4wXT1sPj44O2FbbisyPj4wXT1sPj4xNjthW24rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW07YVtvKzE+PjBdPW0+Pjg7YVtvKzI+PjBdPW0+PjE2O2FbbyszPj4wXT1tPj4yNDtvPWNbaD4+Ml18MDtjW2c+PjJdPW87Y1tiKyhvPDwyKSsxMzI+PjJdPTA7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTA7YnJlYWt9ZG97aWYoKGh8MCk9PTApe2U9cmQoYisyNDR8MCxlLChjW2IrMjgwPj4yXXwwKSszMDh8MCl8MDtoPWNbYisyNjg+PjJdfDA7aWYoKGV8MCk8MCl7ZT1oK2V8MH1lbHNle2U9ZS0oZT4+PjA8aD4+PjA/MDpoKXwwfWg9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2g9Y1tnPj4yXXwwO2lmKChjW2IrKGg8PDIpKzE0OD4+Ml18MCk+Myl7Y1tiKyhoPDwyKSsxMzI+PjJdPWU7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTB9fWVsc2V7aWYoKGh8MCk8NTAwKXtsPWIrMjQ0fDA7aj1lYShjW2IrKGNbZz4+Ml08PDIpKzEzMj4+Ml18MCxoKXwwO2s9Y1tiKzI4MD4+Ml18MDtpZigoaHwwKTwxMCl7aD0ocmQobCxlLGsrODh8MCl8MCkranwwO2U9Y1tiKzI2OD4+Ml18MDtpZigoaHwwKTwwKXtlPWgrZXwwO2JyZWFrfWVsc2V7ZT1oLShoPj4+MDxlPj4+MD8wOmUpfDA7YnJlYWt9fWVsc2V7aD0ocmQobCxlLGsrMTMyfDApfDApK2p8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MDticmVha31lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwO2JyZWFrfX19aWYoKGh8MCk9PTUwMCl7aD0oY1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDApKjUwMHwwO2g9KHJkKGIrMjQ0fDAsZSwoY1tiKzI4MD4+Ml18MCkrMTc2fDApfDApK2h8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MH1lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwfWg9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2g9Y1tnPj4yXXwwO2lmKChjW2IrKGg8PDIpKzE0OD4+Ml18MCk8PTMpe2JyZWFrfWNbYisoaDw8MikrMTMyPj4yXT1lO2NbYisoY1tnPj4yXTw8MikrMTQ4Pj4yXT0wO2JyZWFrfWg9NTAwLWh8MDtrPWIrMjQ0fDA7aj1jW2IrKGNbZz4+Ml08PDIpKzEzMj4+Ml18MDtpZigoaHwwKT4tMTApe2g9ZWEoaixoKXwwO2g9KHJkKGssZSwoY1tiKzI4MD4+Ml18MCkrMjIwfDApfDApK2h8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MDticmVha31lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwO2JyZWFrfX1oPWVhKGosLTEwKXwwO2U9KHJkKGssZSwoY1tiKzI4MD4+Ml18MCkrMjY0fDApfDApK2h8MDtoPWNbYisyNjg+PjJdfDA7aWYoKGV8MCk8MCl7aD1lK2h8MH1lbHNle2g9ZS0oZT4+PjA8aD4+PjA/MDpoKXwwfWU9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxO2U9Y1tnPj4yXXwwO2lmKChjW2IrKGU8PDIpKzE0OD4+Ml18MCk+Myl7Y1tiKyhlPDwyKSsxMzI+PjJdPWg7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTA7ZT1ofWVsc2V7ZT1ofX19d2hpbGUoMCk7bz1iKyhjW2c+PjJdPDwzKSsxMDB8MDtsPW87bj1sO2w9bCs0fDA7bD1JbihkW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjR8MCxkW2w+PjBdfGRbbCsxPj4wXTw8OHxkW2wrMj4+MF08PDE2fGRbbCszPj4wXTw8MjR8MCxlfDAsKChlfDApPDApPDwzMT4+MzF8MCl8MDtuPUk7bT1vO2FbbT4+MF09bDthW20rMT4+MF09bD4+ODthW20rMj4+MF09bD4+MTY7YVttKzM+PjBdPWw+PjI0O289bys0fDA7YVtvPj4wXT1uO2FbbysxPj4wXT1uPj44O2FbbysyPj4wXT1uPj4xNjthW28rMz4+MF09bj4+MjR9fXdoaWxlKDApO249YisoY1tnPj4yXTw8MykrMTAwfDA7bz1uO249bis0fDA7bj1kW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjQ7bz1kW28+PjBdfGRbbysxPj4wXTw8OHxkW28rMj4+MF08PDE2fGRbbyszPj4wXTw8MjQ7ST1uO2k9ZjtyZXR1cm4gb3wwfWZ1bmN0aW9uIGxkKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtnPWk7aT1pKzE2fDA7aD1nO2lmKChhW2I+PjBdfDApPT0wKXthW2I+PjBdPTE7cGQoY1tlPj4yXXwwLGgsNik7dT1hW2grMT4+MF08PDh8ZFtoPj4wXTtqPXUmNjU1MzU7bD1hW2grMj4+MF18MDtrPShhW2grMz4+MF08PDh8bCYyNTUpJjY1NTM1O249YVtoKzQ+PjBdfDA7bT0oYVtoKzU+PjBdPDw4fG4mMjU1KSY2NTUzNTtoPWIrMXwwO2FbaD4+MF09ajthW2grMT4+MF09aj4+ODtoPWIrM3wwO2FbaD4+MF09azthW2grMT4+MF09az4+ODtoPWIrNXwwO2FbaD4+MF09bTthW2grMT4+MF09bT4+ODtoPXU7bT0obSY2NTUzNSk+Pj44JjI1NX1lbHNle2w9cWQoZSxiKzh8MCl8MDtpZigobCYxfDApPT0wKXttPWIrMXwwO209ZFttPj4wXXxkW20rMT4+MF08PDg7aD1tJjI1NX1lbHNle2g9KHFkKGUsYis1MnwwKXwwKSYyNTU7bT1iKzF8MDttPWRbbT4+MF18ZFttKzE+PjBdPDw4O2g9KG0mMjU1KStofDA7aD0oaHwwKT4yNTU/aCs2NTI4MHwwOmh9aWYoKGwmMnwwKT09MCl7aD1tJjY1MjgwfGgmNjU1MzV9ZWxzZXt1PShxZChlLGIrOTZ8MCl8MCkmMjU1O209YisxfDA7bT1kW20+PjBdfGRbbSsxPj4wXTw8ODt1PSgobSY2NTUzNSk+Pj44KSt1fDA7aD0oKHV8MCk+MjU1P3UrNjUyODB8MDp1KTw8OHxoJjY1NTM1fWo9aCY2NTUzNTtkb3tpZigobCY2NHwwKT09MCl7az1iKzF8MDtsPWIrNXwwO249ajttPWp9ZWxzZXtrPWIrMXwwO209KGgmMjU1KS0obSYyNTUpfDA7ZG97aWYoKGwmNHwwKSE9MCl7cD1xZChlLGIrMTQwfDApfDA7bj1wJjI1NTtvPWIrM3wwO289ZFtvPj4wXXxkW28rMT4+MF08PDg7cT1vJjY1NTM1O3I9KHEmMjU1KSttfDA7cz0ocnwwKTwxO2lmKChyKyAtMXwwKT4+PjA+MjUzKXt0PXM/MDoyNTV9ZWxzZXt0PXErbSYyNTV9aWYoKHQrbnwwKT4yNTUpe2lmKCFzKXtpZigocnwwKT4yNTQpe249MjU1fWVsc2V7bj1xK20mMjU1fX1lbHNle249MH1uPShwfC0yNTYpK258MDticmVha31lbHNle2lmKCFzKXtpZigocnwwKT4yNTQpe3A9MjU1fWVsc2V7cD1xK20mMjU1fX1lbHNle3A9MH1uPXArbnwwO2JyZWFrfX1lbHNle289YiszfDA7bz1kW28+PjBdfGRbbysxPj4wXTw8ODtuPW8mMjU1fX13aGlsZSgwKTtkb3tpZigobCYxNnwwKSE9MCl7cD1xZChlLGIrMjI4fDApfDA7bz1iKzN8MDtvPWRbbz4+MF18ZFtvKzE+PjBdPDw4O3I9KChuJjI1NSkrbS0obyYyNTUpfDApLzJ8MDttPXAmMjU1O3Q9Yis1fDA7dD0oZFt0Pj4wXXxkW3QrMT4+MF08PDgpJjY1NTM1O3U9KHQmMjU1KStyfDA7cz0odXwwKTwxO2lmKCh1KyAtMXwwKT4+PjA+MjUzKXtxPXM/MDoyNTV9ZWxzZXtxPXQrciYyNTV9aWYoKHErbXwwKT4yNTUpe2lmKCFzKXtpZigodXwwKT4yNTQpe209MjU1fWVsc2V7bT10K3ImMjU1fX1lbHNle209MH1tPShwfC0yNTYpK218MDtwPW87YnJlYWt9ZWxzZXtpZighcyl7aWYoKHV8MCk+MjU0KXtwPTI1NX1lbHNle3A9dCtyJjI1NX19ZWxzZXtwPTB9bT1wK218MDtwPW87YnJlYWt9fWVsc2V7bT1iKzV8MDttPShkW20+PjBdfGRbbSsxPj4wXTw8OCkmMjU1O3A9b319d2hpbGUoMCk7bz0oaD4+PjgmMjU1KS0oKChkW2s+PjBdfGRbaysxPj4wXTw8OCkmNjU1MzUpPj4+OCl8MDtpZigobCY4fDApPT0wKXtyPXAmNjUyODB8biY2NTUzNX1lbHNle3A9cWQoZSxiKzE4NHwwKXwwO3E9cCYyNTU7dD1iKzN8MDt0PSgoKGRbdD4+MF18ZFt0KzE+PjBdPDw4KSY2NTUzNSk+Pj44KStvfDA7cj0odHwwKTwxO2lmKHIpe3M9MH1lbHNle3M9KHR8MCk+MjU0PzI1NTp0JjI1NX1pZigocytxfDApPjI1NSl7aWYocil7cT0wfWVsc2V7cT0odHwwKT4yNTQ/MjU1OnQmMjU1fXA9KHB8LTI1NikrcXwwfWVsc2V7aWYocil7cD0wfWVsc2V7cD0odHwwKT4yNTQ/MjU1OnQmMjU1fXA9cCtxfDB9cj1wPDw4fG4mNjU1MzV9bj1yJjY1NTM1O2lmKChsJjMyfDApPT0wKXt1PWIrNXwwO2w9dTttPSgoZFt1Pj4wXXxkW3UrMT4+MF08PDgpJjY1MjgwfG0pJjY1NTM1O2JyZWFrfXE9cWQoZSxiKzI3MnwwKXwwO3U9YiszfDA7cD1xJjI1NTtsPWIrNXwwO3I9KCgoZFtsPj4wXXxkW2wrMT4+MF08PDgpJjY1NTM1KT4+PjgpKygoKHI+Pj44JjI1NSkrby0oKChkW3U+PjBdfGRbdSsxPj4wXTw8OCkmNjU1MzUpPj4+OCl8MCkvMnwwKXwwO289KHJ8MCk8MTtpZihvKXtzPTB9ZWxzZXtzPShyfDApPjI1ND8yNTU6ciYyNTV9aWYoKHMrcHwwKT4yNTUpe2lmKG8pe289MH1lbHNle289KHJ8MCk+MjU0PzI1NTpyJjI1NX1vPShxfC0yNTYpK298MH1lbHNle2lmKG8pe289MH1lbHNle289KHJ8MCk+MjU0PzI1NTpyJjI1NX1vPW8rcHwwfW09KG88PDh8bSkmNjU1MzV9fXdoaWxlKDApO2Fbaz4+MF09ajthW2srMT4+MF09aj4+ODtrPWIrM3wwO2Fbaz4+MF09bjthW2srMT4+MF09bj4+ODthW2w+PjBdPW07YVtsKzE+PjBdPW0+Pjg7az1uO2w9biYyNTU7bj1tJjI1NTttPShtJjY1NTM1KT4+PjgmMjU1fWFbZisxPj4wXT0oaiY2NTUzNSk+Pj44O2FbZj4+MF09aDthW2YrMz4+MF09KGsmNjU1MzUpPj4+ODthW2YrMj4+MF09bDthW2YrNT4+MF09bTthW2YrND4+MF09bjtmPWIrMzE2fDA7aWYoKGFbZj4+MF18MCk9PTApe2k9ZztyZXR1cm59dT0oKG1kKGNbZT4+Ml18MCl8MCkmMjU1KTw8MjQ7dT0oKG1kKGNbZT4+Ml18MCl8MCkmMjU1KTw8MTZ8dTt1PXV8KChtZChjW2U+PjJdfDApfDApJjI1NSk8PDg7Y1tlKzQ+PjJdPXV8KG1kKGNbZT4+Ml18MCl8MCkmMjU1O2FbZj4+MF09MDtpPWc7cmV0dXJufWZ1bmN0aW9uIG1kKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Zz1pO2U9Yis0fDA7aD1jW2U+PjJdfDA7Zj1iKzh8MDtpZigoaHwwKTwoY1tmPj4yXXwwKSl7aj1oO2g9aisxfDA7Y1tlPj4yXT1oO2g9YisxMnwwO2g9Y1toPj4yXXwwO2o9aCtqfDA7aj1hW2o+PjBdfDA7aT1nO3JldHVybiBqfDB9Y1tlPj4yXT0wO2o9Y1tiPj4yXXwwO2g9aisxM3wwO2lmKChhW2g+PjBdfDApPT0wKXtrPWorNHwwO249ais4fDA7bD1jW24+PjJdfDA7bT0oY1trPj4yXXwwKS1sfDA7bT0obXwwKTwxMDQ4NTc2P206MTA0ODU3NjtNbihjW2IrMTI+PjJdfDAsKGNbaj4+Ml18MCkrbHwwLG18MCl8MDtsPShjW24+PjJdfDApK218MDtjW24+PjJdPWw7Y1tqKzE2Pj4yXT1tO2lmKChsfDApPj0oY1trPj4yXXwwKSl7YVtoPj4wXT0xfX1lbHNle2FbaisxMj4+MF09MX1uPWNbKGNbYj4+Ml18MCkrMTY+PjJdfDA7Y1tmPj4yXT1uO2lmKChufDApIT0wKXtuPWNbZT4+Ml18MDttPW4rMXwwO2NbZT4+Ml09bTttPWIrMTJ8MDttPWNbbT4+Ml18MDtuPW0rbnwwO249YVtuPj4wXXwwO2k9ZztyZXR1cm4gbnwwfWI9WGEoOCl8MDtjW2I+PjJdPTk5Mjg7d2hpbGUoMSl7ZT11bigzMil8MDtpZigoZXwwKSE9MCl7ZD0xNDticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZHwwKT09MTQpe2NbZSs0Pj4yXT0xOTtjW2U+PjJdPTE5O2Y9ZSsxMnwwO2NbYis0Pj4yXT1mO2NbZSs4Pj4yXT0wO2Y9ZiswfDA7ZT04MjR8MDtkPWYrMjB8MDtkb3thW2Y+PjBdPWFbZT4+MF18MDtmPWYrMXwwO2U9ZSsxfDB9d2hpbGUoKGZ8MCk8KGR8MCkpO2NbYj4+Ml09ODU2O3diKGJ8MCw4MDgsMjYpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpO3JldHVybiAwfWZ1bmN0aW9uIG5kKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBvZChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHBkKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2Y9aTtnPWIrNHwwO2s9Y1tnPj4yXXwwO2o9Yis4fDA7ZG97aWYoKGt8MCk8KGNbaj4+Ml18MCkpe2o9a31lbHNle2NbZz4+Ml09MDtrPWNbYj4+Ml18MDtsPWsrMTN8MDtpZigoYVtsPj4wXXwwKT09MCl7bT1rKzR8MDtwPWsrOHwwO249Y1twPj4yXXwwO289KGNbbT4+Ml18MCktbnwwO289KG98MCk8MTA0ODU3Nj9vOjEwNDg1NzY7TW4oY1tiKzEyPj4yXXwwLChjW2s+PjJdfDApK258MCxvfDApfDA7bj0oY1twPj4yXXwwKStvfDA7Y1twPj4yXT1uO2NbaysxNj4+Ml09bztpZigobnwwKT49KGNbbT4+Ml18MCkpe2FbbD4+MF09MX19ZWxzZXthW2srMTI+PjBdPTF9cD1jWyhjW2I+PjJdfDApKzE2Pj4yXXwwO2Nbaj4+Ml09cDtpZigocHwwKSE9MCl7aj1jW2c+PjJdfDA7YnJlYWt9ZT1YYSg4KXwwO2NbZT4+Ml09OTkyODt3aGlsZSgxKXtmPXVuKDMyKXwwO2lmKChmfDApIT0wKXtoPTE0O2JyZWFrfWY9Y1s1NjY2XXwwO2NbNTY2Nl09ZiswO2lmKChmfDApPT0wKXticmVha31zY1tmJjMxXSgpfWlmKChofDApPT0xNCl7Y1tmKzQ+PjJdPTE5O2NbZj4+Ml09MTk7ZD1mKzEyfDA7Y1tlKzQ+PjJdPWQ7Y1tmKzg+PjJdPTA7ZD1kKzB8MDtnPTgyNHwwO2Y9ZCsyMHwwO2Rve2FbZD4+MF09YVtnPj4wXXwwO2Q9ZCsxfDA7Zz1nKzF8MH13aGlsZSgoZHwwKTwoZnwwKSk7Y1tlPj4yXT04NTY7d2IoZXwwLDgwOCwyNil9cD1YYSg0KXwwO2NbcD4+Ml09MjI2ODA7d2IocHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2I9Y1tiKzEyPj4yXXwwO2g9YisoaitlKXwwO2lmKChlfDApPT0wKXtwPWo7cD1wK2V8MDtjW2c+PjJdPXA7aT1mO3JldHVybn1iPWIranwwO3doaWxlKDEpe2FbZD4+MF09YVtiPj4wXXwwO2I9YisxfDA7aWYoKGJ8MCk9PShofDApKXticmVha31lbHNle2Q9ZCsxfDB9fXA9Y1tnPj4yXXwwO3A9cCtlfDA7Y1tnPj4yXT1wO2k9ZjtyZXR1cm59ZnVuY3Rpb24gcWQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7ZT1pO2Q9YSs4fDA7Zj1jW2Q+PjJdfDA7aD1jW2IrMTY+PjJdfDA7aWYoKGh8MCkhPTApe2o9Y1thKzQ+PjJdfDA7Zz1mPj4+MTU7Y1tkPj4yXT1nO2w9KGo+Pj4wKS8oZz4+PjApfDA7bT1sPj4+KGNbYis0MD4+Ml18MCk7az1jW2grKG08PDIpPj4yXXwwO209KGNbaCsobSsxPDwyKT4+Ml18MCkrMXwwO249aysxfDA7aD1jW2IrOD4+Ml18MDtpZihtPj4+MD5uPj4+MCl7d2hpbGUoMSl7bj0obStrfDApPj4+MTtvPShjW2grKG48PDIpPj4yXXwwKT4+PjA+bD4+PjA7az1vP2s6bjttPW8/bjptO249aysxfDA7aWYoIShtPj4+MD5uPj4+MCkpe2w9bjticmVha319fWVsc2V7bD1ufW49ZWEoZyxjW2grKGs8PDIpPj4yXXwwKXwwO2lmKChrfDApIT0oY1tiKzMyPj4yXXwwKSl7Zj1lYShjW2grKGw8PDIpPj4yXXwwLGcpfDB9fWVsc2V7aD1mPj4+MTU7Y1tkPj4yXT1oO2w9Y1tiPj4yXXwwO2c9Y1tiKzg+PjJdfDA7aj1jW2ErND4+Ml18MDttPWw+Pj4xO2s9MDtuPTA7ZG97cD1lYShjW2crKG08PDIpPj4yXXwwLGgpfDA7bz1wPj4+MD5qPj4+MDtmPW8/cDpmO249bz9uOnA7az1vP2s6bTtsPW8/bTpsO209KGsrbHwwKT4+PjF9d2hpbGUoKG18MCkhPShrfDApKX1nPWErNHwwO2g9ai1ufDA7Y1tnPj4yXT1oO3A9Zi1ufDA7Y1tkPj4yXT1wO2lmKHA+Pj4wPDE2Nzc3MjE2KXtkb3toPShtZChjW2E+PjJdfDApfDApJjI1NXxoPDw4O2NbZz4+Ml09aDtwPWNbZD4+Ml08PDg7Y1tkPj4yXT1wfXdoaWxlKHA+Pj4wPDE2Nzc3MjE2KX1vPShjW2IrMTI+PjJdfDApKyhrPDwyKXwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtvPWIrMjh8MDtwPShjW28+PjJdfDApKyAtMXwwO2Nbbz4+Ml09cDtpZigocHwwKSE9MCl7aT1lO3JldHVybiBrfDB9ZGQoYik7aT1lO3JldHVybiBrfDB9ZnVuY3Rpb24gcmQoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtmPXFkKGIsZCl8MDtjW2E+PjJdPWY7aWYoKGZ8MCkhPTApe2lmKCEoZj4+PjA8MzIpKXtsPWNbYSsyOD4+Ml18MDtpPWU7cmV0dXJuIGx8MH1kPWNbYSsxMj4+Ml18MDtpZihmPj4+MD5kPj4+MCl7ZD1mLWR8MDtsPXFkKGIsKGNbYSs2OD4+Ml18MCkrKChmKyAtMXwwKSo0NHwwKXwwKXwwO2Q9bDw8ZHwoc2QoYixkKXwwKX1lbHNle2Q9cWQoYiwoY1thKzY4Pj4yXXwwKSsoKGYrIC0xfDApKjQ0fDApfDApfDB9YT1jW2E+PjJdfDA7aWYoKGR8MCk8KDE8PGErIC0xfDApKXtsPWQrMSsoLTE8PGEpfDA7aT1lO3JldHVybiBsfDB9ZWxzZXtsPWQrMXwwO2k9ZTtyZXR1cm4gbHwwfX1mPWErNTZ8MDtoPWIrOHwwO2w9Y1toPj4yXXwwO2o9ZWEobD4+PjEzLGNbZj4+Ml18MCl8MDtnPWIrNHwwO2s9Y1tnPj4yXXwwO209az4+PjA+PWo+Pj4wO2Q9bSYxO2lmKG0pe2NbZz4+Ml09ay1qO2o9bC1qfDA7Y1toPj4yXT1qfWVsc2V7Y1toPj4yXT1qO2o9YSs2MHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtqPWNbaD4+Ml18MH1pZihqPj4+MDwxNjc3NzIxNil7aj1jW2c+PjJdfDA7ZG97aj0obWQoY1tiPj4yXXwwKXwwKSYyNTV8ajw8ODtjW2c+PjJdPWo7bT1jW2g+PjJdPDw4O2NbaD4+Ml09bX13aGlsZShtPj4+MDwxNjc3NzIxNil9aD1hKzUyfDA7bT0oY1toPj4yXXwwKSsgLTF8MDtjW2g+PjJdPW07aWYoKG18MCkhPTApe209ZDtpPWU7cmV0dXJuIG18MH1iPWErNDh8MDtnPWNbYj4+Ml18MDtqPWErNjR8MDtrPShjW2o+PjJdfDApK2d8MDtjW2o+PjJdPWs7aWYoaz4+PjA+ODE5Mil7az0oaysxfDApPj4+MTtjW2o+PjJdPWs7bT1hKzYwfDA7YT0oKGNbbT4+Ml18MCkrMXwwKT4+PjE7Y1ttPj4yXT1hO2lmKChhfDApPT0oa3wwKSl7bT1rKzF8MDtjW2o+PjJdPW07aj1tfWVsc2V7aj1rO2s9YX19ZWxzZXtqPWs7az1jW2ErNjA+PjJdfDB9Y1tmPj4yXT0oZWEoMjE0NzQ4MzY0OC8oaj4+PjApfDAsayl8MCk+Pj4xODttPWcqNXwwO209bT4+PjA+MjU5PzY0Om0+Pj4yO2NbYj4+Ml09bTtjW2g+PjJdPW07bT1kO2k9ZTtyZXR1cm4gbXwwfWZ1bmN0aW9uIHNkKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2Y9aTtkPWErNHwwO2c9Y1tkPj4yXXwwO2U9YSs4fDA7aD1jW2U+PjJdfDA7aWYoYj4+PjA+MTkpe2o9aD4+PjE2O2NbZT4+Ml09ajtoPShnPj4+MCkvKGo+Pj4wKXwwO2c9Zy0oZWEoaCxqKXwwKXwwO2NbZD4+Ml09Zztkb3tnPShtZChjW2E+PjJdfDApfDApJjI1NXxnPDw4O2NbZD4+Ml09ZztqPWNbZT4+Ml08PDg7Y1tlPj4yXT1qfXdoaWxlKGo+Pj4wPDE2Nzc3MjE2KTtqPShzZChhLGIrIC0xNnwwKXwwKTw8MTZ8aCY2NTUzNTtpPWY7cmV0dXJuIGp8MH1qPWg+Pj5iO2NbZT4+Ml09ajtiPShnPj4+MCkvKGo+Pj4wKXwwO2c9Zy0oZWEoYixqKXwwKXwwO2NbZD4+Ml09ZztpZighKGo+Pj4wPDE2Nzc3MjE2KSl7aT1mO3JldHVybiBifDB9ZG97Zz0obWQoY1thPj4yXXwwKXwwKSYyNTV8Zzw8ODtjW2Q+PjJdPWc7aj1jW2U+PjJdPDw4O2NbZT4+Ml09an13aGlsZShqPj4+MDwxNjc3NzIxNik7aT1mO3JldHVybiBifDB9ZnVuY3Rpb24gdGQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7Zj1pO2k9aSs5NnwwO2g9Zis0NHwwO2Q9Zjt3PWIrMzZ8MDt1PWIrNDB8MDtpZigoY1t3Pj4yXXwwKSE9KGNbdT4+Ml18MCkpe2k9ZjtyZXR1cm59aj1iKzh8MDtlPWIrMjB8MDtpZigoY1tqPj4yXXwwKSE9MCl7Zz1iKzQ0fDA7bj1oKzR8MDttPWgrOHwwO2w9aCsxMnwwO2s9aCsxNnwwO289aCsyMHwwO3A9aCsyNHwwO3E9aCsyOHwwO3I9aCszMnwwO3M9aCszNnwwO3Q9aCs0MHwwO3Y9MDtkb3tjZChoLChjW2U+PjJdfDApKzF8MCk7eD1jW3U+PjJdfDA7aWYoeD4+PjA8KGNbZz4+Ml18MCk+Pj4wKXtpZigoeHwwKT09MCl7eD0wfWVsc2V7Y1t4Pj4yXT1jW2g+PjJdO2FbeCs0Pj4wXT1hW24+PjBdfDA7Y1t4Kzg+PjJdPWNbbT4+Ml07Y1t4KzEyPj4yXT1jW2w+PjJdO2NbeCsxNj4+Ml09Y1trPj4yXTtjW3grMjA+PjJdPWNbbz4+Ml07Y1t4KzI0Pj4yXT1jW3A+PjJdO2NbeCsyOD4+Ml09Y1txPj4yXTtjW3grMzI+PjJdPWNbcj4+Ml07Y1t4KzM2Pj4yXT1jW3M+PjJdO2NbeCs0MD4+Ml09Y1t0Pj4yXTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDt4PWNbdT4+Ml18MH1jW3U+PjJdPXgrNDR9ZWxzZXt1ZCh3LGgpfXg9Y1ttPj4yXXwwO2lmKCh4fDApIT0wKXt2bihjW3grIC00Pj4yXXwwKX14PWNbbD4+Ml18MDtpZigoeHwwKSE9MCl7dm4oY1t4KyAtND4+Ml18MCl9eD1jW2s+PjJdfDA7aWYoKHh8MCkhPTApe3ZuKGNbeCsgLTQ+PjJdfDApfXY9disxfDB9d2hpbGUodj4+PjA8KGNbaj4+Ml18MCk+Pj4wKX1pZigoY1tlPj4yXXwwKT09MCl7aT1mO3JldHVybn10PWIrMTJ8MDtrPWIrNzJ8MDtzPWIrNzZ8MDtsPWQrNHwwO2o9ZCs4fDA7bz1kKzEyfDA7aD1kKzE2fDA7bT1kKzIwfDA7bj1kKzI0fDA7Zz1kKzI4fDA7cD1kKzMyfDA7cT1kKzM2fDA7cj1kKzQwfDA7Yj1iKzY4fDA7dT0xO2Rve3Y9Y1t0Pj4yXXwwO2NkKGQsMTw8KHU+Pj4wPnY+Pj4wP3Y6dSkpO3Y9Y1trPj4yXXwwO2lmKHY+Pj4wPChjW3M+PjJdfDApPj4+MCl7aWYoKHZ8MCk9PTApe3Y9MH1lbHNle2Nbdj4+Ml09Y1tkPj4yXTthW3YrND4+MF09YVtsPj4wXXwwO2Nbdis4Pj4yXT1jW2o+PjJdO2NbdisxMj4+Ml09Y1tvPj4yXTtjW3YrMTY+PjJdPWNbaD4+Ml07Y1t2KzIwPj4yXT1jW20+PjJdO2NbdisyND4+Ml09Y1tuPj4yXTtjW3YrMjg+PjJdPWNbZz4+Ml07Y1t2KzMyPj4yXT1jW3A+PjJdO2NbdiszNj4+Ml09Y1txPj4yXTtjW3YrNDA+PjJdPWNbcj4+Ml07Y1tqKzA+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7dj1jW2s+PjJdfDB9Y1trPj4yXT12KzQ0fWVsc2V7dWQoYixkKX12PWNbaj4+Ml18MDtpZigodnwwKSE9MCl7dm4oY1t2KyAtND4+Ml18MCl9dj1jW28+PjJdfDA7aWYoKHZ8MCkhPTApe3ZuKGNbdisgLTQ+PjJdfDApfXY9Y1toPj4yXXwwO2lmKCh2fDApIT0wKXt2bihjW3YrIC00Pj4yXXwwKX11PXUrMXwwfXdoaWxlKCEodT4+PjA+KGNbZT4+Ml18MCk+Pj4wKSk7aT1mO3JldHVybn1mdW5jdGlvbiB1ZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2U9aTtmPWIrNHwwO209Y1tmPj4yXXwwO2s9Y1tiPj4yXXwwO2w9aztoPShtLWx8MCkvNDR8MDtqPWgrMXwwO2lmKGo+Pj4wPjk3NjEyODkzKXtUaygpfWc9Yis4fDA7bD0oKGNbZz4+Ml18MCktbHwwKS80NHwwO2lmKGw+Pj4wPDQ4ODA2NDQ2KXtvPWw8PDE7bz1vPj4+MDxqPj4+MD9qOm87aWYoKG98MCk9PTApe3A9MDtsPTB9ZWxzZXtuPTV9fWVsc2V7bz05NzYxMjg5MztuPTV9ZG97aWYoKG58MCk9PTUpe3A9byo0NHwwO3A9KHB8MCk9PTA/MTpwO3doaWxlKDEpe2w9dW4ocCl8MDtpZigobHwwKSE9MCl7bj0xMTticmVha31sPWNbNTY2Nl18MDtjWzU2NjZdPWwrMDtpZigobHwwKT09MCl7YnJlYWt9c2NbbCYzMV0oKX1pZigobnwwKT09MTEpe3A9bzticmVha31wPVhhKDQpfDA7Y1twPj4yXT0yMjY4MDt3YihwfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7bz1sKyhoKjQ0fDApfDA7bj1sKyhwKjQ0fDApfDA7aWYoKG98MCkhPTApe2Nbbz4+Ml09Y1tkPj4yXTthW2wrKGgqNDR8MCkrND4+MF09YVtkKzQ+PjBdfDA7bT1kKzh8MDtjW2wrKGgqNDR8MCkrOD4+Ml09Y1ttPj4yXTtjW2wrKGgqNDR8MCkrMTI+PjJdPWNbZCsxMj4+Ml07Y1tsKyhoKjQ0fDApKzE2Pj4yXT1jW2QrMTY+PjJdO2NbbCsoaCo0NHwwKSsyMD4+Ml09Y1tkKzIwPj4yXTtjW2wrKGgqNDR8MCkrMjQ+PjJdPWNbZCsyND4+Ml07Y1tsKyhoKjQ0fDApKzI4Pj4yXT1jW2QrMjg+PjJdO2NbbCsoaCo0NHwwKSszMj4+Ml09Y1tkKzMyPj4yXTtjW2wrKGgqNDR8MCkrMzY+PjJdPWNbZCszNj4+Ml07Y1tsKyhoKjQ0fDApKzQwPj4yXT1jW2QrNDA+PjJdO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO209Y1tmPj4yXXwwO2s9Y1tiPj4yXXwwfWo9bCsoaio0NHwwKXwwO2lmKChtfDApIT0oa3wwKSl7aD1oKyAtMS0oKChtKyAtNDQrKDAtayl8MCk+Pj4wKS80NHwwKXwwO3doaWxlKDEpe2Q9bTttPW0rIC00NHwwO2NbbysgLTQ0Pj4yXT1jW20+PjJdO2FbbysgLTQwPj4wXT1hW2QrIC00MD4+MF18MDtwPWQrIC0zNnwwO2NbbysgLTM2Pj4yXT1jW3A+PjJdO2NbbysgLTMyPj4yXT1jW2QrIC0zMj4+Ml07Y1tvKyAtMjg+PjJdPWNbZCsgLTI4Pj4yXTtjW28rIC0yND4+Ml09Y1tkKyAtMjQ+PjJdO2NbbysgLTIwPj4yXT1jW2QrIC0yMD4+Ml07Y1tvKyAtMTY+PjJdPWNbZCsgLTE2Pj4yXTtjW28rIC0xMj4+Ml09Y1tkKyAtMTI+PjJdO2NbbysgLTg+PjJdPWNbZCsgLTg+PjJdO2NbbysgLTQ+PjJdPWNbZCsgLTQ+PjJdO2NbcCswPj4yXT0wO2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0wO2lmKChtfDApPT0oa3wwKSl7YnJlYWt9ZWxzZXtvPW8rIC00NHwwfX1tPWNbYj4+Ml18MDtrPWNbZj4+Ml18MDtjW2I+PjJdPWwrKGgqNDR8MCk7Y1tmPj4yXT1qO2NbZz4+Ml09bjtpZigoa3wwKSE9KG18MCkpe2Rve2Y9Y1trKyAtMzY+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1trKyAtMzI+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1trKyAtMjg+PjJdfDA7az1rKyAtNDR8MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9fXdoaWxlKChrfDApIT0obXwwKSl9fWVsc2V7Y1tiPj4yXT1vO2NbZj4+Ml09ajtjW2c+PjJdPW59aWYoKG18MCk9PTApe2k9ZTtyZXR1cm59dm4obSk7aT1lO3JldHVybn1mdW5jdGlvbiB2ZChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gd2QoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1jW2ErMTI+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24geWQoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT0xNDA4KXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIHpkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEFkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zz1lO2Y9Y1tiKzg+PjJdfDA7Yj1jW2IrND4+Ml18MDtqZChnLGYsYik7aD1jW2c+PjJdfDA7YVtkKzM+PjBdPWg+Pj4yNDthW2QrMj4+MF09aD4+PjE2O2FbZCsxPj4wXT1oPj4+ODthW2Q+PjBdPWg7aD1jW2crND4+Ml18MDthW2QrNz4+MF09aD4+PjI0O2FbZCs2Pj4wXT1oPj4+MTY7YVtkKzU+PjBdPWg+Pj44O2FbZCs0Pj4wXT1oO2g9Y1tnKzg+PjJdfDA7YVtkKzExPj4wXT1oPj4+MjQ7YVtkKzEwPj4wXT1oPj4+MTY7YVtkKzk+PjBdPWg+Pj44O2FbZCs4Pj4wXT1oO2g9Y1tnKzEyPj4yXXwwO2FbZCsxMz4+MF09KGgmNjU1MzUpPj4+ODthW2QrMTI+PjBdPWg7YVtkKzE0Pj4wXT1oPj4+MTY7YVtkKzE1Pj4wXT1oPj4+MjQ7Zz1jW2crMTY+PjJdfDA7YVtkKzE2Pj4wXT1nO2FbZCsxNz4+MF09KGcmNjU1MzUpPj4+ODthW2QrMTk+PjBdPWc+Pj4yNDthW2QrMTg+PjBdPWc+Pj4xNjtsZChmKzQ3ODR8MCxiLGQrMjB8MCk7aT1lO3JldHVybn1mdW5jdGlvbiBCZChhKXthPWF8MDt2YXIgYj0wO2I9aTtjW2E+PjJdPTE3MjA7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1hZChhKzQ3ODR8MCk7WGMoYSk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBDZChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7Y1thPj4yXT0xNzIwO2Q9Y1thKzg+PjJdfDA7aWYoKGR8MCk9PTApe3ZuKGEpO2k9YjtyZXR1cm59YWQoZCs0Nzg0fDApO1hjKGQpO3ZuKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gRGQoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEVkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEZkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2E9Y1thKzEyPj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEdkKGEsYil7YT1hfDA7Yj1ifDA7aWYoKGNbYis0Pj4yXXwwKT09MjM3Nil7YT1hKzEyfDB9ZWxzZXthPTB9cmV0dXJuIGF8MH1mdW5jdGlvbiBIZChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBJZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrMzJ8MDtoPWU7Zj1jW2IrOD4+Ml18MDtiPWNbYis0Pj4yXXwwO2pkKGgsZixiKTtnPWNbaD4+Ml18MDthW2QrMz4+MF09Zz4+PjI0O2FbZCsyPj4wXT1nPj4+MTY7YVtkKzE+PjBdPWc+Pj44O2FbZD4+MF09ZztnPWNbaCs0Pj4yXXwwO2FbZCs3Pj4wXT1nPj4+MjQ7YVtkKzY+PjBdPWc+Pj4xNjthW2QrNT4+MF09Zz4+Pjg7YVtkKzQ+PjBdPWc7Zz1jW2grOD4+Ml18MDthW2QrMTE+PjBdPWc+Pj4yNDthW2QrMTA+PjBdPWc+Pj4xNjthW2QrOT4+MF09Zz4+Pjg7YVtkKzg+PjBdPWc7Zz1jW2grMTI+PjJdfDA7YVtkKzEzPj4wXT0oZyY2NTUzNSk+Pj44O2FbZCsxMj4+MF09ZzthW2QrMTQ+PjBdPWc+Pj4xNjthW2QrMTU+PjBdPWc+Pj4yNDtoPWNbaCsxNj4+Ml18MDthW2QrMTY+PjBdPWg7YVtkKzE3Pj4wXT0oaCY2NTUzNSk+Pj44O2FbZCsxOT4+MF09aD4+PjI0O2FbZCsxOD4+MF09aD4+PjE2O2g9a2QoZis0Nzg0fDAsYil8MDtnPUk7YVtkKzIzPj4wXT1oPj4+MjQ7YVtkKzIyPj4wXT1oPj4+MTY7YVtkKzIxPj4wXT1oPj4+ODthW2QrMjA+PjBdPWg7aj1LbihofDAsZ3wwLDU2KXwwO2FbZCsyNz4+MF09ajtqPUtuKGh8MCxnfDAsNDgpfDA7YVtkKzI2Pj4wXT1qO2g9S24oaHwwLGd8MCw0MCl8MDthW2QrMjU+PjBdPWg7YVtkKzI0Pj4wXT1nO2Q9Zis1MTEyfDA7aWYoKGFbZD4+MF18MCk9PTApe2k9ZTtyZXR1cm59aj0oKG1kKGNbYj4+Ml18MCl8MCkmMjU1KTw8MjQ7aj0oKG1kKGNbYj4+Ml18MCl8MCkmMjU1KTw8MTZ8ajtqPWp8KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDg7Y1tiKzQ+PjJdPWp8KG1kKGNbYj4+Ml18MCl8MCkmMjU1O2FbZD4+MF09MDtpPWU7cmV0dXJufWZ1bmN0aW9uIEpkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2NbYT4+Ml09MjY2NDthPWNbYSs4Pj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufV9jKGErNTA5NnwwKTtfYyhhKzUwNjR8MCk7WmMoYSs0OTQ4fDApOyRjKGErNDc4NHwwKTtYYyhhKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEtkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtjW2E+PjJdPTI2NjQ7ZD1jW2ErOD4+Ml18MDtpZigoZHwwKT09MCl7dm4oYSk7aT1iO3JldHVybn1fYyhkKzUwOTZ8MCk7X2MoZCs1MDY0fDApO1pjKGQrNDk0OHwwKTskYyhkKzQ3ODR8MCk7WGMoZCk7dm4oZCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBMZChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gTWQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gTmQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1jW2ErMTI+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gT2QoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT0zMzIwKXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIFBkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFFkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zz1lO2Y9Y1tiKzg+PjJdfDA7Yj1jW2IrND4+Ml18MDtqZChnLGYsYik7aD1jW2c+PjJdfDA7YVtkKzM+PjBdPWg+Pj4yNDthW2QrMj4+MF09aD4+PjE2O2FbZCsxPj4wXT1oPj4+ODthW2Q+PjBdPWg7aD1jW2crND4+Ml18MDthW2QrNz4+MF09aD4+PjI0O2FbZCs2Pj4wXT1oPj4+MTY7YVtkKzU+PjBdPWg+Pj44O2FbZCs0Pj4wXT1oO2g9Y1tnKzg+PjJdfDA7YVtkKzExPj4wXT1oPj4+MjQ7YVtkKzEwPj4wXT1oPj4+MTY7YVtkKzk+PjBdPWg+Pj44O2FbZCs4Pj4wXT1oO2g9Y1tnKzEyPj4yXXwwO2FbZCsxMz4+MF09KGgmNjU1MzUpPj4+ODthW2QrMTI+PjBdPWg7YVtkKzE0Pj4wXT1oPj4+MTY7YVtkKzE1Pj4wXT1oPj4+MjQ7Zz1jW2crMTY+PjJdfDA7YVtkKzE2Pj4wXT1nO2FbZCsxNz4+MF09KGcmNjU1MzUpPj4+ODthW2QrMTk+PjBdPWc+Pj4yNDthW2QrMTg+PjBdPWc+Pj4xNjtkPWYrNDc4NHwwO2lmKChhW2Q+PjBdfDApPT0wKXtpPWU7cmV0dXJufWg9KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDI0O2g9KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDE2fGg7aD1ofCgobWQoY1tiPj4yXXwwKXwwKSYyNTUpPDw4O2NbYis0Pj4yXT1ofChtZChjW2I+PjJdfDApfDApJjI1NTthW2Q+PjBdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBSZChhKXthPWF8MDt2YXIgYj0wO2I9aTtjW2E+PjJdPTM2MDg7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1YYyhhKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFNkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtjW2E+PjJdPTM2MDg7ZD1jW2ErOD4+Ml18MDtpZigoZHwwKT09MCl7dm4oYSk7aT1iO3JldHVybn1YYyhkKTt2bihkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFRkKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBVZChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBWZChhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1sY1tjWyhjW2E+PjJdfDApKzg+PjJdJjI1NV0oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBXZChhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTQyMTYpe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gWGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gWWQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7Y1tiPj4yXT00NTAwO2NbYis2ND4+Ml09NDU0MDtjW2IrOD4+Ml09NDUyMDtlPWIrMTJ8MDtjW2U+PjJdPTQ2ODg7aWYoISgoYVtiKzQ0Pj4wXSYxKT09MCk/KGY9Y1tiKzUyPj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1jW2U+PjJdPTEwNjY0O2U9Y1tiKzE2Pj4yXXwwO2c9ZSs0fDA7Zj1jW2c+PjJdfDA7Y1tnPj4yXT1mKyAtMTtpZigoZnwwKSE9MCl7Zz1iKzY0fDA7cmcoZyk7aT1kO3JldHVybn1sY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSk7Zz1iKzY0fDA7cmcoZyk7aT1kO3JldHVybn1mdW5jdGlvbiBaZChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9aTtnPWIrIC04fDA7Y1tnPj4yXT00NTAwO2I9Zys2NHwwO2NbYj4+Ml09NDU0MDtjW2crOD4+Ml09NDUyMDtmPWcrMTJ8MDtjW2Y+PjJdPTQ2ODg7aWYoISgoYVtnKzQ0Pj4wXSYxKT09MCk/KGU9Y1tnKzUyPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1jW2Y+PjJdPTEwNjY0O2U9Y1tnKzE2Pj4yXXwwO2Y9ZSs0fDA7Zz1jW2Y+PjJdfDA7Y1tmPj4yXT1nKyAtMTtpZigoZ3wwKSE9MCl7cmcoYik7aT1kO3JldHVybn1sY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSk7cmcoYik7aT1kO3JldHVybn1mdW5jdGlvbiBfZChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtlPWk7Zz1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7Y1tiK2c+PjJdPTQ1MDA7ZD1iKyhnKzY0KXwwO2NbZD4+Ml09NDU0MDtjW2IrKGcrOCk+PjJdPTQ1MjA7Zj1iKyhnKzEyKXwwO2NbZj4+Ml09NDY4ODtpZighKChhW2IrKGcrNDQpPj4wXSYxKT09MCk/KGg9Y1tiKyhnKzUyKT4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9Y1tmPj4yXT0xMDY2NDtiPWNbYisoZysxNik+PjJdfDA7Zz1iKzR8MDtoPWNbZz4+Ml18MDtjW2c+PjJdPWgrIC0xO2lmKChofDApIT0wKXtyZyhkKTtpPWU7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtyZyhkKTtpPWU7cmV0dXJufWZ1bmN0aW9uICRkKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1pO2NbYj4+Ml09NDUwMDtjW2IrNjQ+PjJdPTQ1NDA7Y1tiKzg+PjJdPTQ1MjA7ZT1iKzEyfDA7Y1tlPj4yXT00Njg4O2lmKCEoKGFbYis0ND4+MF0mMSk9PTApPyhmPWNbYis1Mj4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9Y1tlPj4yXT0xMDY2NDtlPWNbYisxNj4+Ml18MDtnPWUrNHwwO2Y9Y1tnPj4yXXwwO2NbZz4+Ml09ZisgLTE7aWYoKGZ8MCk9PTApe2xjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKX1yZyhiKzY0fDApO2lmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gYWUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZD1pO2Y9YisgLTh8MDtjW2Y+PjJdPTQ1MDA7Yj1mKzY0fDA7Y1tiPj4yXT00NTQwO2NbZis4Pj4yXT00NTIwO2c9ZisxMnwwO2NbZz4+Ml09NDY4ODtpZighKChhW2YrNDQ+PjBdJjEpPT0wKT8oZT1jW2YrNTI+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWNbZz4+Ml09MTA2NjQ7ZT1jW2YrMTY+PjJdfDA7aD1lKzR8MDtnPWNbaD4+Ml18MDtjW2g+PjJdPWcrIC0xO2lmKChnfDApIT0wKXtyZyhiKTt2bihmKTtpPWQ7cmV0dXJufWxjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKTtyZyhiKTt2bihmKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGJlKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtkPWk7aD1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7Zj1iK2h8MDtjW2Y+PjJdPTQ1MDA7ZT1iKyhoKzY0KXwwO2NbZT4+Ml09NDU0MDtjW2IrKGgrOCk+PjJdPTQ1MjA7Zz1iKyhoKzEyKXwwO2NbZz4+Ml09NDY4ODtpZighKChhW2IrKGgrNDQpPj4wXSYxKT09MCk/KGo9Y1tiKyhoKzUyKT4+Ml18MCwoanwwKSE9MCk6MCl7dm4oail9Y1tnPj4yXT0xMDY2NDtiPWNbYisoaCsxNik+PjJdfDA7aD1iKzR8MDtqPWNbaD4+Ml18MDtjW2g+PjJdPWorIC0xO2lmKChqfDApPT0wKXtsY1tjWyhjW2I+PjJdfDApKzg+PjJdJjI1NV0oYil9cmcoZSk7aWYoKGZ8MCk9PTApe2k9ZDtyZXR1cm59dm4oZik7aT1kO3JldHVybn1mdW5jdGlvbiBjZShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2NbYj4+Ml09NDY4ODtpZighKChhW2IrMzI+PjBdJjEpPT0wKT8oZT1jW2IrNDA+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWNbYj4+Ml09MTA2NjQ7Yj1jW2IrND4+Ml18MDtmPWIrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe2k9ZDtyZXR1cm59bGNbY1soY1tiPj4yXXwwKSs4Pj4yXSYyNTVdKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZGUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7Y1tiPj4yXT00Njg4O2lmKCEoKGFbYiszMj4+MF0mMSk9PTApPyhlPWNbYis0MD4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9Y1tiPj4yXT0xMDY2NDtlPWNbYis0Pj4yXXwwO2c9ZSs0fDA7Zj1jW2c+PjJdfDA7Y1tnPj4yXT1mKyAtMTtpZigoZnwwKT09MCl7bGNbY1soY1tlPj4yXXwwKSs4Pj4yXSYyNTVdKGUpfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZWUoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtsPWk7bz1kKzQ0fDA7bT1jW28+PjJdfDA7az1kKzI0fDA7aj1jW2s+PjJdfDA7aWYobT4+PjA8aj4+PjApe2Nbbz4+Ml09ajttPWp9bz1oJjI0O2Rve2lmKChvfDApPT0wKXtvPWI7Y1tvPj4yXT0wO2Nbbys0Pj4yXT0wO289Yis4fDA7Y1tvPj4yXT0tMTtjW28rND4+Ml09LTE7aT1sO3JldHVybn1lbHNlIGlmKChvfDApIT0yNCl7aWYoKGd8MCk9PTIpe249MTE7YnJlYWt9ZWxzZSBpZigoZ3wwKT09MCl7Zz0wO289MDticmVha31lbHNlIGlmKChnfDApIT0xKXtuPTE1O2JyZWFrfWlmKChoJjh8MCk9PTApe289ai0oY1tkKzIwPj4yXXwwKXwwO2c9bztvPSgob3wwKTwwKTw8MzE+PjMxO2JyZWFrfWVsc2V7bz0oY1tkKzEyPj4yXXwwKS0oY1tkKzg+PjJdfDApfDA7Zz1vO289KChvfDApPDApPDwzMT4+MzE7YnJlYWt9fWVsc2V7aWYoKGd8MCk9PTIpe249MTE7YnJlYWt9ZWxzZSBpZigoZ3wwKT09MCl7Zz0wO289MDticmVha31lbHNlIGlmKChnfDApIT0xKXtuPTE1O2JyZWFrfW89YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufX13aGlsZSgwKTtpZigobnwwKT09MTUpe289YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufWlmKChufDApPT0xMSl7bj1kKzMyfDA7aWYoKGFbbj4+MF0mMSk9PTApe249bisxfDB9ZWxzZXtuPWNbZCs0MD4+Ml18MH1vPW0tbnwwO2c9bztvPSgob3wwKTwwKTw8MzE+PjMxfWY9SW4oZ3wwLG98MCxlfDAsZnwwKXwwO2U9STtpZigoZXwwKT49MCl7bj1kKzMyfDA7aWYoKGFbbj4+MF0mMSk9PTApe249bisxfDB9ZWxzZXtuPWNbZCs0MD4+Ml18MH1vPW0tbnwwO2c9KChvfDApPDApPDwzMT4+MzE7aWYoISgoZ3wwKTwoZXwwKXwoZ3wwKT09KGV8MCkmbz4+PjA8Zj4+PjApKXtuPWgmODtpZighKChmfDApPT0wJihlfDApPT0wKSl7aWYoKG58MCkhPTA/KGNbZCsxMj4+Ml18MCk9PTA6MCl7bz1iO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtvPWIrOHwwO2Nbbz4+Ml09LTE7Y1tvKzQ+PjJdPS0xO2k9bDtyZXR1cm59aWYoKGgmMTZ8MCkhPTAmKGp8MCk9PTApe289YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufX1pZigobnwwKSE9MCl7Y1tkKzEyPj4yXT0oY1tkKzg+PjJdfDApK2Y7Y1tkKzE2Pj4yXT1tfWlmKChoJjE2fDApIT0wKXtjW2s+PjJdPShjW2QrMjA+PjJdfDApK2Z9bz1iO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtvPWIrOHwwO2Nbbz4+Ml09ZjtjW28rND4+Ml09ZTtpPWw7cmV0dXJufX1vPWI7Y1tvPj4yXT0wO2Nbbys0Pj4yXT0wO289Yis4fDA7Y1tvPj4yXT0tMTtjW28rND4+Ml09LTE7aT1sO3JldHVybn1mdW5jdGlvbiBmZShhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wO2Y9aTtkPWQrOHwwO3djW2NbKGNbYj4+Ml18MCkrMTY+PjJdJjYzXShhLGIsY1tkPj4yXXwwLGNbZCs0Pj4yXXwwLDAsZSk7aT1mO3JldHVybn1mdW5jdGlvbiBnZShhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wO2I9aTtmPWErNDR8MDtnPWNbZj4+Ml18MDtlPWNbYSsyND4+Ml18MDtpZihnPj4+MDxlPj4+MCl7Y1tmPj4yXT1lfWVsc2V7ZT1nfWlmKChjW2ErNDg+PjJdJjh8MCk9PTApe2c9LTE7aT1iO3JldHVybiBnfDB9Zj1hKzE2fDA7Zz1jW2Y+PjJdfDA7YT1jW2ErMTI+PjJdfDA7aWYoZz4+PjA8ZT4+PjApe2NbZj4+Ml09ZX1lbHNle2U9Z31pZighKGE+Pj4wPGU+Pj4wKSl7Zz0tMTtpPWI7cmV0dXJuIGd8MH1nPWRbYT4+MF18MDtpPWI7cmV0dXJuIGd8MH1mdW5jdGlvbiBoZShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZT1pO2c9Yis0NHwwO2Y9Y1tnPj4yXXwwO2o9Y1tiKzI0Pj4yXXwwO2lmKGY+Pj4wPGo+Pj4wKXtjW2c+PjJdPWp9ZWxzZXtqPWZ9Zj1iKzh8MDtnPWNbZj4+Ml18MDtoPWIrMTJ8MDtsPWNbaD4+Ml18MDtpZighKGc+Pj4wPGw+Pj4wKSl7bD0tMTtpPWU7cmV0dXJuIGx8MH1pZigoZHwwKT09LTEpe2NbZj4+Ml09ZztjW2g+PjJdPWwrIC0xO2NbYisxNj4+Ml09ajtsPTA7aT1lO3JldHVybiBsfDB9aWYoKGNbYis0OD4+Ml0mMTZ8MCk9PTApe2s9ZCYyNTU7bD1sKyAtMXwwO2lmKCEoazw8MjQ+PjI0PT0oYVtsPj4wXXwwKSkpe2w9LTE7aT1lO3JldHVybiBsfDB9fWVsc2V7az1kJjI1NTtsPWwrIC0xfDB9Y1tmPj4yXT1nO2NbaD4+Ml09bDtjW2IrMTY+PjJdPWo7YVtsPj4wXT1rO2w9ZDtpPWU7cmV0dXJuIGx8MH1mdW5jdGlvbiBpZShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7aj1pO2lmKChkfDApPT0tMSl7dT0wO2k9ajtyZXR1cm4gdXwwfWc9YisxMnwwO2U9Yis4fDA7Zj0oY1tnPj4yXXwwKS0oY1tlPj4yXXwwKXwwO2g9YisyNHwwO249Y1toPj4yXXwwO2s9YisyOHwwO209Y1trPj4yXXwwO2lmKChufDApPT0obXwwKSl7bD1iKzQ4fDA7aWYoKGNbbD4+Ml0mMTZ8MCk9PTApe3U9LTE7aT1qO3JldHVybiB1fDB9bT1iKzIwfDA7cD1jW20+PjJdfDA7bj1uLXB8MDtvPWIrNDR8MDtwPShjW28+PjJdfDApLXB8MDtxPWIrMzJ8MDtyPWFbcT4+MF18MDtzPShyJjEpIT0wO2lmKHMpe3Q9KGNbcT4+Ml0mLTIpKyAtMXwwO3I9Y1tiKzM2Pj4yXXwwfWVsc2V7dD0xMDtyPShyJjI1NSk+Pj4xfWlmKChyfDApPT0odHwwKSl7bGcocSx0LDEsdCx0LDApO2lmKChhW3E+PjBdJjEpPT0wKXtzPTEyfWVsc2V7cz0xM319ZWxzZXtpZihzKXtzPTEzfWVsc2V7cz0xMn19aWYoKHN8MCk9PTEyKXthW3E+PjBdPShyPDwxKSsyO3U9cSsxfDA7dD1yKzF8MH1lbHNlIGlmKChzfDApPT0xMyl7dT1jW2IrNDA+PjJdfDA7dD1yKzF8MDtjW2IrMzY+PjJdPXR9YVt1K3I+PjBdPTA7YVt1K3Q+PjBdPTA7dD1hW3E+PjBdfDA7aWYoKHQmMSk9PTApe3I9MTB9ZWxzZXtyPWNbcT4+Ml18MDt0PXImMjU1O3I9KHImLTIpKyAtMXwwfXM9KHQmMSk9PTA7aWYocyl7dD0odCYyNTUpPj4+MX1lbHNle3Q9Y1tiKzM2Pj4yXXwwfWRve2lmKCEodD4+PjA8cj4+PjApKXtpZihzKXthW3ErcisxPj4wXT0wO2FbcT4+MF09cjw8MTticmVha31lbHNle2FbKGNbYis0MD4+Ml18MCkrcj4+MF09MDtjW2IrMzY+PjJdPXI7YnJlYWt9fWVsc2V7aGcocSxyLXR8MCl9fXdoaWxlKDApO3I9YVtxPj4wXXwwO2lmKChyJjEpPT0wKXtxPXErMXwwO3I9KHImMjU1KT4+PjF9ZWxzZXtxPWNbYis0MD4+Ml18MDtyPWNbYiszNj4+Ml18MH10PXErcnwwO2NbbT4+Ml09cTtjW2s+PjJdPXQ7bj1xK258MDtjW2g+PjJdPW47dT1xK3B8MDtjW28+PjJdPXU7az10O289dX1lbHNle2w9Yis0OHwwO2s9bTtvPWNbYis0ND4+Ml18MH1tPW4rMXwwO289bT4+PjA8bz4+PjA/bzptO2NbYis0ND4+Ml09bztpZigoY1tsPj4yXSY4fDApIT0wKXtsPWIrMzJ8MDtpZigoYVtsPj4wXSYxKT09MCl7bD1sKzF8MH1lbHNle2w9Y1tiKzQwPj4yXXwwfWNbZT4+Ml09bDtjW2c+PjJdPWwrZjtjW2IrMTY+PjJdPW99aWYoKG58MCk9PShrfDApKXt1PXhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGQmMjU1KXwwO2k9ajtyZXR1cm4gdXwwfWVsc2V7Y1toPj4yXT1tO2Fbbj4+MF09ZDt1PWQmMjU1O2k9ajtyZXR1cm4gdXwwfXJldHVybiAwfWZ1bmN0aW9uIGplKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBrZShhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBsZShhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBtZShhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTUwNDgpe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gbmUoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gb2UoYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxsPTAsbT0wLG49MCxvPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsSj0wLjAsSz0wLjAsTD0wLjAsTT0wLjAsTj0wLjAsTz0wLjA7ZT1pO2k9aSsyNTZ8MDtmPWUrODB8MDtvPWU7bj1lKzEwNHwwO209ZSsyMjR8MDtqPWUrMjA4fDA7Zz1lKzEyOHwwO3g9ZSsyNDB8MDt2PWUrMTEyfDA7cz1lKzU2fDA7ej1jW2I+PjJdfDA7eT16KzEzfDA7aWYoKGFbeT4+MF18MCk9PTApe0g9eis0fDA7RT16Kzh8MDtHPWNbRT4+Ml18MDtGPShjW0g+PjJdfDApLUd8MDtGPShGfDApPDQ/Rjo0O01uKHh8MCwoY1t6Pj4yXXwwKStHfDAsRnwwKXwwO0c9KGNbRT4+Ml18MCkrRnwwO2NbRT4+Ml09RztjW3orMTY+PjJdPUY7aWYoKEd8MCk+PShjW0g+PjJdfDApKXthW3k+PjBdPTF9fWVsc2V7YVt6KzEyPj4wXT0xfWFbdj4+MF09ODtCPXYrMXwwO2FbQj4+MF09YVt4Pj4wXXwwO2FbdisyPj4wXT1hW3grMT4+MF18MDthW3YrMz4+MF09YVt4KzI+PjBdfDA7eT12KzR8MDthW3k+PjBdPWFbeCszPj4wXXwwO2FbdisoeCsoNC14KSkrMT4+MF09MDt6PWFbdj4+MF18MDt4PSh6JjEpPT0wO2lmKHgpe3k9KHomMjU1KT4+PjF9ZWxzZXtCPWNbdis4Pj4yXXwwO3k9Y1t5Pj4yXXwwfXo9eT4+PjA+NDtBPXo/NDp5O2E6ZG97aWYoKEF8MCkhPTApe0M9NTIzMjt3aGlsZSgxKXtEPWFbQj4+MF18MDtFPWFbQz4+MF18MDtpZighKEQ8PDI0Pj4yND09RTw8MjQ+PjI0KSl7YnJlYWt9QT1BKyAtMXwwO2lmKChBfDApPT0wKXtsPTEyO2JyZWFrIGF9ZWxzZXtCPUIrMXwwO0M9QysxfDB9fWlmKCEoRDw8MjQ+PjI0PT1FPDwyND4+MjQpKXt5PShEJjI1NSktKEUmMjU1KXwwfWVsc2V7bD0xMn19ZWxzZXtsPTEyfX13aGlsZSgwKTtpZigobHwwKT09MTIpe3k9eT4+PjA8ND8tMTp6JjF9eT0oeXwwKT09MDtpZigheD8odz1jW3YrOD4+Ml18MCwod3wwKSE9MCk6MCl7dm4odyl9aWYoIXkpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11bigzNil8MDtpZigoYnwwKSE9MCl7bD0yMzticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjMpe2NbYis0Pj4yXT0yMztjW2I+PjJdPTIzO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj03MDU2fDA7ZT1mKzI0fDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTcwODg7d2IoZ3wwLDUyNzIsODYpfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfXY9U2MoODM1Miw1Mjg4KXwwO3c9Y1t2KygoY1soY1t2Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7eD13KzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9ej0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7eT1jW3crOD4+Ml18MDtpZigoY1t3KzEyPj4yXXwwKS15Pj4yPj4+MD56Pj4+MD8odT1jW3krKHo8PDIpPj4yXXwwLCh1fDApIT0wKTowKXt1PXhjW2NbKGNbdT4+Ml18MCkrMjg+PjJdJjYzXSh1LDEwKXwwO0g9Y1t4Pj4yXXwwO2NbeD4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbdz4+Ml18MCkrOD4+Ml0mMjU1XSh3KX1saCh2LHUpO1lnKHYpO3U9Y1tiPj4yXXwwO2lmKChjW3UrND4+Ml18MCk+MCl7Y1t1Kzg+PjJdPTB9ZWxzZXthW3UrMTI+PjBdPTF9dj1jW2I+PjJdfDA7dT1iKzIwfDA7dz12KzEzfDA7aWYoKGFbdz4+MF18MCk9PTApe0g9dis0fDA7RT12Kzh8MDtHPWNbRT4+Ml18MDtGPShjW0g+PjJdfDApLUd8MDtGPShGfDApPDIyNz9GOjIyNztNbih1fDAsKGNbdj4+Ml18MCkrR3wwLEZ8MCl8MDtHPShjW0U+PjJdfDApK0Z8MDtjW0U+PjJdPUc7Y1t2KzE2Pj4yXT1GO2lmKChHfDApPj0oY1tIPj4yXXwwKSl7YVt3Pj4wXT0xfX1lbHNle2FbdisxMj4+MF09MX1DPWIrMTk5fDA7YVtrPj4wXT1hW0M+PjBdO2FbaysxPj4wXT1hW0MrMT4+MF07YVtrKzI+PjBdPWFbQysyPj4wXTthW2srMz4+MF09YVtDKzM+PjBdO2Fbays0Pj4wXT1hW0MrND4+MF07YVtrKzU+PjBdPWFbQys1Pj4wXTthW2srNj4+MF09YVtDKzY+PjBdO2Fbays3Pj4wXT1hW0MrNz4+MF07Tj0raFtrPj4zXTtFPWIrMjA3fDA7YVtrPj4wXT1hW0U+PjBdO2FbaysxPj4wXT1hW0UrMT4+MF07YVtrKzI+PjBdPWFbRSsyPj4wXTthW2srMz4+MF09YVtFKzM+PjBdO2Fbays0Pj4wXT1hW0UrND4+MF07YVtrKzU+PjBdPWFbRSs1Pj4wXTthW2srNj4+MF09YVtFKzY+PjBdO2Fbays3Pj4wXT1hW0UrNz4+MF07Tz0raFtrPj4zXTtHPWIrMjE1fDA7YVtrPj4wXT1hW0c+PjBdO2FbaysxPj4wXT1hW0crMT4+MF07YVtrKzI+PjBdPWFbRysyPj4wXTthW2srMz4+MF09YVtHKzM+PjBdO2Fbays0Pj4wXT1hW0crND4+MF07YVtrKzU+PjBdPWFbRys1Pj4wXTthW2srNj4+MF09YVtHKzY+PjBdO2Fbays3Pj4wXT1hW0crNz4+MF07TD0raFtrPj4zXTtEPWIrMjIzfDA7YVtrPj4wXT1hW0Q+PjBdO2FbaysxPj4wXT1hW0QrMT4+MF07YVtrKzI+PjBdPWFbRCsyPj4wXTthW2srMz4+MF09YVtEKzM+PjBdO2Fbays0Pj4wXT1hW0QrND4+MF07YVtrKzU+PjBdPWFbRCs1Pj4wXTthW2srNj4+MF09YVtEKzY+PjBdO2Fbays3Pj4wXT1hW0QrNz4+MF07TT0raFtrPj4zXTtGPWIrMjMxfDA7YVtrPj4wXT1hW0Y+PjBdO2FbaysxPj4wXT1hW0YrMT4+MF07YVtrKzI+PjBdPWFbRisyPj4wXTthW2srMz4+MF09YVtGKzM+PjBdO2Fbays0Pj4wXT1hW0YrND4+MF07YVtrKzU+PjBdPWFbRis1Pj4wXTthW2srNj4+MF09YVtGKzY+PjBdO2Fbays3Pj4wXT1hW0YrNz4+MF07Sj0raFtrPj4zXTtIPWIrMjM5fDA7YVtrPj4wXT1hW0g+PjBdO2FbaysxPj4wXT1hW0grMT4+MF07YVtrKzI+PjBdPWFbSCsyPj4wXTthW2srMz4+MF09YVtIKzM+PjBdO2Fbays0Pj4wXT1hW0grND4+MF07YVtrKzU+PjBdPWFbSCs1Pj4wXTthW2srNj4+MF09YVtIKzY+PjBdO2Fbays3Pj4wXT1hW0grNz4+MF07Sz0raFtrPj4zXTtoW2s+PjNdPU87YVtDPj4wXT1hW2s+PjBdO2FbQysxPj4wXT1hW2srMT4+MF07YVtDKzI+PjBdPWFbaysyPj4wXTthW0MrMz4+MF09YVtrKzM+PjBdO2FbQys0Pj4wXT1hW2srND4+MF07YVtDKzU+PjBdPWFbays1Pj4wXTthW0MrNj4+MF09YVtrKzY+PjBdO2FbQys3Pj4wXT1hW2srNz4+MF07aFtrPj4zXT1OO2FbRD4+MF09YVtrPj4wXTthW0QrMT4+MF09YVtrKzE+PjBdO2FbRCsyPj4wXT1hW2srMj4+MF07YVtEKzM+PjBdPWFbayszPj4wXTthW0QrND4+MF09YVtrKzQ+PjBdO2FbRCs1Pj4wXT1hW2srNT4+MF07YVtEKzY+PjBdPWFbays2Pj4wXTthW0QrNz4+MF09YVtrKzc+PjBdO2hbaz4+M109TTthW0U+PjBdPWFbaz4+MF07YVtFKzE+PjBdPWFbaysxPj4wXTthW0UrMj4+MF09YVtrKzI+PjBdO2FbRSszPj4wXT1hW2srMz4+MF07YVtFKzQ+PjBdPWFbays0Pj4wXTthW0UrNT4+MF09YVtrKzU+PjBdO2FbRSs2Pj4wXT1hW2srNj4+MF07YVtFKzc+PjBdPWFbays3Pj4wXTtoW2s+PjNdPUw7YVtGPj4wXT1hW2s+PjBdO2FbRisxPj4wXT1hW2srMT4+MF07YVtGKzI+PjBdPWFbaysyPj4wXTthW0YrMz4+MF09YVtrKzM+PjBdO2FbRis0Pj4wXT1hW2srND4+MF07YVtGKzU+PjBdPWFbays1Pj4wXTthW0YrNj4+MF09YVtrKzY+PjBdO2FbRis3Pj4wXT1hW2srNz4+MF07aFtrPj4zXT1LO2FbRz4+MF09YVtrPj4wXTthW0crMT4+MF09YVtrKzE+PjBdO2FbRysyPj4wXT1hW2srMj4+MF07YVtHKzM+PjBdPWFbayszPj4wXTthW0crND4+MF09YVtrKzQ+PjBdO2FbRys1Pj4wXT1hW2srNT4+MF07YVtHKzY+PjBdPWFbays2Pj4wXTthW0crNz4+MF09YVtrKzc+PjBdO2hbaz4+M109SjthW0g+PjBdPWFbaz4+MF07YVtIKzE+PjBdPWFbaysxPj4wXTthW0grMj4+MF09YVtrKzI+PjBdO2FbSCszPj4wXT1hW2srMz4+MF07YVtIKzQ+PjBdPWFbays0Pj4wXTthW0grNT4+MF09YVtrKzU+PjBdO2FbSCs2Pj4wXT1hW2srNj4+MF07YVtIKzc+PjBdPWFbays3Pj4wXTtpZigoYVs2MzY4XXwwKT09MD8oUWEoNjM2OCl8MCkhPTA6MCl7Y1sxNTg4XT0wO2NbNjM1Nj4+Ml09MDtjWzYzNjA+PjJdPTA7Y2MoMjA5LDYzNTIscHwwKXwwOyRhKDYzNjgpfWlmKChhWzY0MDBdfDApPT0wPyhRYSg2NDAwKXwwKSE9MDowKXtjYygyMTAsNjM3NixwfDApfDA7JGEoNjQwMCl9dz1jWzE1ODhdfDA7dj1jWzYzNTY+PjJdfDA7ZG97aWYoKHd8MCk9PSh2fDApKXt2PSRiKDYzNzYpfDA7aWYoKHZ8MCkhPTApe2I9WGEoMTYpfDA7ZG97aWYoKGFbMTAxMjBdfDApPT0wKXtpZigoUWEoMTAxMjApfDApPT0wKXticmVha31jWzI1MjhdPTEwMzg0OyRhKDEwMTIwKX19d2hpbGUoMCk7WWYoYix2LDEwMTEyLDEwNDcyKTt3YihifDAsMTAxODQsMTA5KX14PWNbMTU4OF18MDtkb3tpZigoeHwwKT09KGNbNjM1Nj4+Ml18MCkpe3Y9ZisxNnwwO2Nbdj4+Ml09ZjtjW2Y+PjJdPTY0MTY7dz1jWzYzNjA+PjJdfDA7ZG97aWYoeD4+PjA8dz4+PjApe2lmKCh4fDApPT0wKXt3PTB9ZWxzZXtjW3grMTY+PjJdPXg7dz1jW3Y+PjJdfDA7bWNbY1soY1t3Pj4yXXwwKSsxMj4+Ml0mMTI3XSh3LHgpO3c9Y1s2MzU2Pj4yXXwwfWNbNjM1Nj4+Ml09dysyNH1lbHNle3c9KHcteHwwKS8yNHwwO2lmKHc+Pj4wPDg5NDc4NDg1KXt3PXc8PDE7dz0od3wwKT09MD8xOnd9ZWxzZXt3PTE3ODk1Njk3MH14PXcqMjR8MDt4PSh4fDApPT0wPzE6eDt3aGlsZSgxKXt5PXVuKHgpfDA7aWYoKHl8MCkhPTApe2JyZWFrfXk9Y1s1NjY2XXwwO2NbNTY2Nl09eSswO2lmKCh5fDApPT0wKXtsPTY1O2JyZWFrfXNjW3kmMzFdKCl9aWYoKGx8MCk9PTY1KXtIPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX13PXkrKHcqMjR8MCl8MDtkb3tpZigoeXwwKSE9MCl7eD1jW3Y+PjJdfDA7aWYoKHh8MCk9PTApe2NbeSsxNj4+Ml09MDticmVha31pZigoeHwwKT09KGZ8MCkpe2NbeSsxNj4+Ml09eTttY1tjWyhjW2Y+PjJdfDApKzEyPj4yXSYxMjddKGYseSk7YnJlYWt9ZWxzZXtjW3krMTY+PjJdPXg7Y1t2Pj4yXT0wO2JyZWFrfX19d2hpbGUoMCk7eD15KzI0fDA7ej1jWzE1ODhdfDA7QT1jWzYzNTY+PjJdfDA7ZG97aWYoKEF8MCk9PSh6fDApKXtjWzE1ODhdPXk7Y1s2MzU2Pj4yXT14O2NbNjM2MD4+Ml09d31lbHNle2Rve0M9eTt5PXkrIC0yNHwwO0I9QSsgLTh8MDtBPUErIC0yNHwwO0Q9Y1tCPj4yXXwwO2Rve2lmKChEfDApIT0wKXtpZigoRHwwKT09KEF8MCkpe2NbQysgLTg+PjJdPXk7SD1jW0I+PjJdfDA7bWNbY1soY1tIPj4yXXwwKSsxMj4+Ml0mMTI3XShILHkpO2JyZWFrfWVsc2V7Y1tDKyAtOD4+Ml09RDtjW0I+PjJdPTA7YnJlYWt9fWVsc2V7Y1tDKyAtOD4+Ml09MH19d2hpbGUoMCl9d2hpbGUoKEF8MCkhPSh6fDApKTt6PWNbMTU4OF18MDtBPWNbNjM1Nj4+Ml18MDtjWzE1ODhdPXk7Y1s2MzU2Pj4yXT14O2NbNjM2MD4+Ml09dztpZigoQXwwKT09KHp8MCkpe2JyZWFrfWRve3c9Y1tBKyAtOD4+Ml18MDtBPUErIC0yNHwwO2Rve2lmKCh3fDApPT0oQXwwKSl7bGNbY1soY1t3Pj4yXXwwKSsxNj4+Ml0mMjU1XSh3KX1lbHNle2lmKCh3fDApPT0wKXticmVha31sY1tjWyhjW3c+PjJdfDApKzIwPj4yXSYyNTVdKHcpfX13aGlsZSgwKX13aGlsZSgoQXwwKSE9KHp8MCkpfX13aGlsZSgwKTtpZigoenwwKT09MCl7YnJlYWt9dm4oeil9fXdoaWxlKDApO3Y9Y1t2Pj4yXXwwO2lmKCh2fDApPT0oZnwwKSl7bGNbY1soY1tmPj4yXXwwKSsxNj4+Ml0mMjU1XShmKTticmVha31pZigodnwwKT09MCl7YnJlYWt9bGNbY1soY1t2Pj4yXXwwKSsyMD4+Ml0mMjU1XSh2KX19d2hpbGUoMCk7aWYoKENiKDYzNzYpfDApPT0wKXt0PWNbMTU4OF18MDtyPWNbNjM1Nj4+Ml18MDticmVha31XYSgxMDQ5NiwxMDUwNCw0NiwxMDU2MCl9ZWxzZXt0PXc7cj12fX13aGlsZSgwKTtiOmRve2lmKCh0fDApIT0ocnwwKSl7dj1zKzE2fDA7d2hpbGUoMSl7eD10KzE2fDA7dz1jW3g+PjJdfDA7aWYoKHd8MCk9PTApe2w9MTAxO2JyZWFrfWlmKCh3fDApPT0odHwwKSl7Y1t2Pj4yXT1zO3c9Y1t4Pj4yXXwwO21jW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjEyN10odyxzKTt3PWNbdj4+Ml18MH1lbHNle3c9b2NbY1soY1t3Pj4yXXwwKSs4Pj4yXSYxMjddKHcpfDA7Y1t2Pj4yXT13fWlmKCh3fDApPT0wKXticmVha31tY1tjWyhjW3c+PjJdfDApKzI0Pj4yXSYxMjddKHcsdSk7dz1jW3Y+PjJdfDA7ZG97aWYoKHd8MCk9PShzfDApKXtsY1tjWyhjW3M+PjJdfDApKzE2Pj4yXSYyNTVdKHMpfWVsc2V7aWYoKHd8MCk9PTApe2JyZWFrfWxjW2NbKGNbdz4+Ml18MCkrMjA+PjJdJjI1NV0odyl9fXdoaWxlKDApO3Q9dCsyNHwwO2lmKCh0fDApPT0ocnwwKSl7YnJlYWsgYn19aWYoKGx8MCk9PTEwMSl7Y1t2Pj4yXT0wfUg9WGEoNCl8MDtjW0g+PjJdPTYzMzY7d2IoSHwwLDYzMTIsNzYpfX13aGlsZSgwKTtzPVNjKDgzNTIsNTMwNCl8MDtyPWNbcysoKGNbKGNbcz4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO3Q9cis0fDA7Y1t0Pj4yXT0oY1t0Pj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW2YrND4+Ml09MjA4O2NbZis4Pj4yXT0wO2NnKDEzNDU2LGYpfXU9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3Y9Y1tyKzg+PjJdfDA7aWYoKGNbcisxMj4+Ml18MCktdj4+Mj4+PjA+dT4+PjA/KHE9Y1t2Kyh1PDwyKT4+Ml18MCwocXwwKSE9MCk6MCl7cT14Y1tjWyhjW3E+PjJdfDApKzI4Pj4yXSY2M10ocSwxMCl8MDtIPWNbdD4+Ml18MDtjW3Q+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW3I+PjJdfDApKzg+PjJdJjI1NV0ocil9bGgocyxxKTtZZyhzKTtyPWNbYj4+Ml18MDtxPWIrMTE0fDA7cT1kW3E+PjBdfGRbcSsxPj4wXTw8ODtIPWNbcis0Pj4yXXwwO0c9KChIfDApPDApPDwzMT4+MzE7aWYoMDwoR3wwKXwwPT0oR3wwKSYocSY2NTUzNSk+Pj4wPEg+Pj4wKXtjW3IrOD4+Ml09cSY2NTUzNX1lbHNle2FbcisxMj4+MF09MX1yPWIrMTIwfDA7Yzpkb3tpZigoZFtyPj4wXXxkW3IrMT4+MF08PDh8ZFtyKzI+PjBdPDwxNnxkW3IrMz4+MF08PDI0fDApIT0wKXt3PW8rMnwwO3U9bysxNnwwO3Q9bysxOHwwO3E9bysyMHwwO3g9Zis0fDA7dj1mKzh8MDtzPTA7d2hpbGUoMSl7Rz0oY1tiPj4yXXwwKSsxMnwwO0g9YVtHPj4wXXwwO2FbRz4+MF09MDtpZighKEg8PDI0Pj4yND09MCkpe2JyZWFrIGN9eT1jW2I+PjJdfDA7ej15KzEzfDA7aWYoKGFbej4+MF18MCkhPTApe2JyZWFrIGN9SD15KzR8MDtFPXkrOHwwO0c9Y1tFPj4yXXwwO0Y9KGNbSD4+Ml18MCktR3wwO0Y9KEZ8MCk8NTQ/Rjo1NDtNbihvfDAsKGNbeT4+Ml18MCkrR3wwLEZ8MCl8MDtHPShjW0U+PjJdfDApK0Z8MDtjW0U+PjJdPUc7Y1t5KzE2Pj4yXT1GO2lmKChHfDApPj0oY1tIPj4yXXwwKSl7YVt6Pj4wXT0xfXk9U2MoODM1Miw1ODcyKXwwO3o9Y1t5KygoY1soY1t5Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7QT16KzR8MDtjW0E+PjJdPShjW0E+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbeD4+Ml09MjA4O2Nbdj4+Ml09MDtjZygxMzQ1NixmKX1DPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtCPWNbeis4Pj4yXXwwO2lmKCEoKGNbeisxMj4+Ml18MCktQj4+Mj4+PjA+Qz4+PjApKXtsPTEzNjticmVha31CPWNbQisoQzw8Mik+PjJdfDA7aWYoKEJ8MCk9PTApe2w9MTM2O2JyZWFrfUI9eGNbY1soY1tCPj4yXXwwKSsyOD4+Ml0mNjNdKEIsMTApfDA7SD1jW0E+PjJdfDA7Y1tBPj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1t6Pj4yXXwwKSs4Pj4yXSYyNTVdKHopfWxoKHksQik7WWcoeSk7eT13O3o9NTg1Njt3aGlsZSgxKXtpZigoYVt5Pj4wXXwwKSE9KGFbej4+MF18MCkpe2JyZWFrfXk9eSsxfDA7aWYoKHl8MCk9PSh1fDApKXtsPTE0NDticmVha31lbHNle3o9eisxfDB9fWlmKChsfDApPT0xNDQ/KGw9MCwoZFt0Pj4wXXxkW3QrMT4+MF08PDgpPDwxNj4+MTY9PTIyMjA0KTowKXticmVha31BPWNbYj4+Ml18MDt5PUErOHwwO3o9Y1t5Pj4yXXwwO3o9SW4oenwwLCgoenwwKTwwKTw8MzE+PjMxfDAsKGRbcT4+MF18ZFtxKzE+PjBdPDw4KSY2NTUzNXwwLDApfDA7SD1JO0c9Y1tBKzQ+PjJdfDA7Rj0oKEd8MCk8MCk8PDMxPj4zMTtBPUErMTJ8MDtpZigoSHwwKT4oRnwwKXwoSHwwKT09KEZ8MCkmej4+PjA+PUc+Pj4wfChIfDApPDApe2FbQT4+MF09MX1lbHNle2FbQT4+MF09MDtjW3k+PjJdPXp9cz1zKzF8MDtpZighKHM+Pj4wPChkW3I+PjBdfGRbcisxPj4wXTw8OHxkW3IrMj4+MF08PDE2fGRbciszPj4wXTw8MjQpPj4+MCkpe2JyZWFrIGN9fWlmKChsfDApPT0xMzYpe0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfXI9U2MoODM1Miw1ODk2KXwwO3M9Y1tyKygoY1soY1tyPj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dD1zKzR8MDtjW3Q+PjJdPShjW3Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9dT0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dj1jW3MrOD4+Ml18MDtkb3tpZigoY1tzKzEyPj4yXXwwKS12Pj4yPj4+MD51Pj4+MCl7dT1jW3YrKHU8PDIpPj4yXXwwO2lmKCh1fDApPT0wKXticmVha311PXhjW2NbKGNbdT4+Ml18MCkrMjg+PjJdJjYzXSh1LDEwKXwwO0g9Y1t0Pj4yXXwwO2NbdD4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbcz4+Ml18MCkrOD4+Ml0mMjU1XShzKX1saChyLHUpO1lnKHIpO3I9ZFtxPj4wXXxkW3ErMT4+MF08PDg7cT1yJjY1NTM1O3I9cjw8MTY+PjE2PT0wPzE6cTt3aGlsZSgxKXtzPXVuKHIpfDA7aWYoKHN8MCkhPTApe2JyZWFrfXM9Y1s1NjY2XXwwO2NbNTY2Nl09cyswO2lmKChzfDApPT0wKXtsPTE1ODticmVha31zY1tzJjMxXSgpfWlmKChsfDApPT0xNTgpe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfXQ9Y1tiPj4yXXwwO3I9dCsxM3wwO2Rve2lmKChhW3I+PjBdfDApPT0wKXtIPXQrNHwwO0U9dCs4fDA7Rz1jW0U+PjJdfDA7Rj0oY1tIPj4yXXwwKS1HfDA7Rj0oRnwwKTwocXwwKT9GOnE7TW4oc3wwLChjW3Q+PjJdfDApK0d8MCxGfDApfDA7Rz0oY1tFPj4yXXwwKStGfDA7Y1tFPj4yXT1HO2NbdCsxNj4+Ml09RjtpZigoR3wwKTwoY1tIPj4yXXwwKSl7YnJlYWt9YVtyPj4wXT0xfWVsc2V7YVt0KzEyPj4wXT0xfX13aGlsZSgwKTt0PXMrMzR8MDtxPWIrMjQ3fDA7TW4ocXwwLHN8MCwzNCl8MDtpZighKChkW3E+PjBdfGRbcSsxPj4wXTw8OCk8PDE2Pj4xNj09Mikpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big2OCl8MDtpZigoYnwwKSE9MCl7bD0xNzE7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTE3MSl7Y1tiKzQ+PjJdPTU1O2NbYj4+Ml09NTU7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTYyMDB8MDtlPWYrNTZ8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NjI2NDt3YihnfDAsNjA5Niw3NCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1TYyg4MzUyLDYxMTIpfDA7cT1oaChyLGRbcT4+MF18ZFtxKzE+PjBdPDw4KXwwO3I9Y1txKygoY1soY1txPj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dT1yKzR8MDtjW3U+PjJdPShjW3U+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9dj0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dz1jW3IrOD4+Ml18MDtkb3tpZigoY1tyKzEyPj4yXXwwKS13Pj4yPj4+MD52Pj4+MCl7dj1jW3crKHY8PDIpPj4yXXwwO2lmKCh2fDApPT0wKXticmVha312PXhjW2NbKGNbdj4+Ml18MCkrMjg+PjJdJjYzXSh2LDEwKXwwO0g9Y1t1Pj4yXXwwO2NbdT4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbcj4+Ml18MCkrOD4+Ml0mMjU1XShyKX1saChxLHYpO1lnKHEpO3Y9U2MoODM1Miw2MTI4KXwwO3E9YisyNzl8MDt2PWhoKHYsZFtxPj4wXXxkW3ErMT4+MF08PDgpfDA7cj1jW3YrKChjWyhjW3Y+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDt1PXIrNHwwO2NbdT4+Ml09KGNbdT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX13PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt4PWNbcis4Pj4yXXwwO2Rve2lmKChjW3IrMTI+PjJdfDApLXg+PjI+Pj4wPnc+Pj4wKXt3PWNbeCsodzw8Mik+PjJdfDA7aWYoKHd8MCk9PTApe2JyZWFrfXc9eGNbY1soY1t3Pj4yXXwwKSsyOD4+Ml0mNjNdKHcsMTApfDA7SD1jW3U+PjJdfDA7Y1t1Pj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfWxoKHYsdyk7WWcodik7cj0oKGRbcT4+MF18ZFtxKzE+PjBdPDw4KSY2NTUzNSkqNnwwO3I9KHJ8MCk9PTA/MTpyO3doaWxlKDEpe3U9dW4ocil8MDtpZigodXwwKSE9MCl7YnJlYWt9dT1jWzU2NjZdfDA7Y1s1NjY2XT11KzA7aWYoKHV8MCk9PTApe2w9MTk0O2JyZWFrfXNjW3UmMzFdKCl9aWYoKGx8MCk9PTE5NCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1iKzI4MXwwO2Fbcj4+MF09dTthW3IrMT4+MF09dT4+ODthW3IrMj4+MF09dT4+MTY7YVtyKzM+PjBdPXU+PjI0O3U9U2MoODM1Miw2MTQ0KXwwO3Y9Y1t1KygoY1soY1t1Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dz12KzR8MDtjW3c+PjJdPShjW3c+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9eD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7eT1jW3YrOD4+Ml18MDtkb3tpZigoY1t2KzEyPj4yXXwwKS15Pj4yPj4+MD54Pj4+MCl7eD1jW3krKHg8PDIpPj4yXXwwO2lmKCh4fDApPT0wKXticmVha314PXhjW2NbKGNbeD4+Ml18MCkrMjg+PjJdJjYzXSh4LDEwKXwwO0g9Y1t3Pj4yXXwwO2Nbdz4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbdj4+Ml18MCkrOD4+Ml0mMjU1XSh2KX1saCh1LHgpO1lnKHUpO2Q6ZG97aWYoISgoZFtxPj4wXXxkW3ErMT4+MF08PDgpPDwxNj4+MTY9PTApKXt2PWYrNHwwO3U9Zis4fDA7dz0wO3doaWxlKDEpe01uKChkW3I+PjBdfGRbcisxPj4wXTw8OHxkW3IrMj4+MF08PDE2fGRbciszPj4wXTw8MjQpKyh3KjZ8MCl8MCx0fDAsNil8MDt6PWloKFNjKDgzNTIsNjE3Nil8MCx3KXwwO3k9Y1t6KygoY1soY1t6Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7eD15KzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2Nbdj4+Ml09MjA4O2NbdT4+Ml09MDtjZygxMzQ1NixmKX1BPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtCPWNbeSs4Pj4yXXwwO2lmKCEoKGNbeSsxMj4+Ml18MCktQj4+Mj4+PjA+QT4+PjApKXticmVha31BPWNbQisoQTw8Mik+PjJdfDA7aWYoKEF8MCk9PTApe2JyZWFrfUE9eGNbY1soY1tBPj4yXXwwKSsyOD4+Ml0mNjNdKEEsMTApfDA7SD1jW3g+PjJdfDA7Y1t4Pj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1t5Pj4yXXwwKSs4Pj4yXSYyNTVdKHkpfWxoKHosQSk7WWcoeik7dz13KzF8MDtpZigod3wwKT49KChkW3E+PjBdfGRbcSsxPj4wXTw8OCkmNjU1MzV8MCkpe2JyZWFrIGR9ZWxzZXt0PXQrNnwwfX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dm4ocyk7ZTpkb3tpZighKChkW3E+PjBdfGRbcSsxPj4wXTw8OCk8PDE2Pj4xNj09MCkpe3c9YiszMDR8MDt2PWIrMzA4fDA7eD1iKzMwMHwwO3U9Zis0fDA7dD1mKzh8MDtzPTA7Zjp3aGlsZSgxKXt5PVNjKDgzNTIsNTk2OCl8MDtBPWNbeSsoKGNbKGNbeT4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO3o9QSs0fDA7Y1t6Pj4yXT0oY1t6Pj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW3U+PjJdPTIwODtjW3Q+PjJdPTA7Y2coMTM0NTYsZil9Qj0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7Qz1jW0ErOD4+Ml18MDtpZighKChjW0ErMTI+PjJdfDApLUM+PjI+Pj4wPkI+Pj4wKSl7bD0yMzQ7YnJlYWt9Qj1jW0MrKEI8PDIpPj4yXXwwO2lmKChCfDApPT0wKXtsPTIzNDticmVha31CPXhjW2NbKGNbQj4+Ml18MCkrMjg+PjJdJjYzXShCLDEwKXwwO0g9Y1t6Pj4yXXwwO2Nbej4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbQT4+Ml18MCkrOD4+Ml0mMjU1XShBKX1saCh5LEIpO1lnKHkpO0E9ZFtyPj4wXXxkW3IrMT4+MF08PDh8ZFtyKzI+PjBdPDwxNnxkW3IrMz4+MF08PDI0O3k9QSsocyo2fDApfDA7eT0oZFt5Pj4wXXxkW3krMT4+MF08PDgpJjY1NTM1O3o9QSsocyo2fDApKzJ8MDt6PShkW3o+PjBdfGRbeisxPj4wXTw8OCkmNjU1MzU7QT1BKyhzKjZ8MCkrNHwwO0E9KGRbQT4+MF18ZFtBKzE+PjBdPDw4KSY2NTUzNTtDPWNbdz4+Ml18MDtkb3tpZigoQ3wwKT09KGNbdj4+Ml18MCkpe0I9Y1t4Pj4yXXwwO0U9Qy1CfDA7Qz0oRXwwKS8xMnwwO0Q9QysxfDA7aWYoRD4+PjA+MzU3OTEzOTQxKXtsPTI0NDticmVhayBmfWlmKEM+Pj4wPDE3ODk1Njk3MCl7Rj1DPDwxO0Y9Rj4+PjA8RD4+PjA/RDpGO2lmKChGfDApPT0wKXtGPTA7Rz0wfWVsc2V7bD0yNDd9fWVsc2V7Rj0zNTc5MTM5NDE7bD0yNDd9aWYoKGx8MCk9PTI0Nyl7bD0wO0g9RioxMnwwO0g9KEh8MCk9PTA/MTpIO3doaWxlKDEpe0c9dW4oSCl8MDtpZigoR3wwKSE9MCl7YnJlYWt9Rz1jWzU2NjZdfDA7Y1s1NjY2XT1HKzA7aWYoKEd8MCk9PTApe2w9MjUxO2JyZWFrIGZ9c2NbRyYzMV0oKX19SD1HKyhDKjEyfDApfDA7aWYoKEh8MCkhPTApe2NbSD4+Ml09eTtjW0crKEMqMTJ8MCkrND4+Ml09ejtjW0crKEMqMTJ8MCkrOD4+Ml09QX1IPUcrKCgoKEV8MCkvLTEyfDApK0N8MCkqMTJ8MCl8MDtMbihIfDAsQnwwLEV8MCl8MDtjW3g+PjJdPUg7Y1t3Pj4yXT1HKyhEKjEyfDApO2Nbdj4+Ml09RysoRioxMnwwKTtpZigoQnwwKT09MCl7YnJlYWt9dm4oQil9ZWxzZXtpZigoQ3wwKT09MCl7eT0wfWVsc2V7Y1tDPj4yXT15O2NbQys0Pj4yXT16O2NbQys4Pj4yXT1BO3k9Y1t3Pj4yXXwwfWNbdz4+Ml09eSsxMn19d2hpbGUoMCk7cz1zKzF8MDtpZigoc3wwKT49KChkW3E+PjBdfGRbcSsxPj4wXTw8OCkmNjU1MzV8MCkpe2JyZWFrIGV9fWlmKChsfDApPT0yMzQpe0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfWVsc2UgaWYoKGx8MCk9PTI0NCl7VGsoKX1lbHNlIGlmKChsfDApPT0yNTEpe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfX19d2hpbGUoMCk7cz1TYyg4MzUyLDUzMjApfDA7cj1jW3MrKChjWyhjW3M+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtxPXIrNHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX11PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt0PWNbcis4Pj4yXXwwO2Rve2lmKChjW3IrMTI+PjJdfDApLXQ+PjI+Pj4wPnU+Pj4wKXt0PWNbdCsodTw8Mik+PjJdfDA7aWYoKHR8MCk9PTApe2JyZWFrfXQ9eGNbY1soY1t0Pj4yXXwwKSsyOD4+Ml0mNjNdKHQsMTApfDA7SD1jW3E+PjJdfDA7Y1txPj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfWxoKHMsdCk7WWcocyk7cj1jW2I+PjJdfDA7cT1iKzExNnwwO3M9ZFtxPj4wXXxkW3ErMT4+MF08PDh8ZFtxKzI+PjBdPDwxNnxkW3ErMz4+MF08PDI0O0g9Y1tyKzQ+PjJdfDA7Rz0oKEh8MCk8MCk8PDMxPj4zMTtpZigwPChHfDApfDA9PShHfDApJnM+Pj4wPEg+Pj4wKXtjW3IrOD4+Ml09c31lbHNle2FbcisxMj4+MF09MX1zPW87Y1tzPj4yXT0wO2Nbcys0Pj4yXT0wO3M9Y1tiPj4yXXwwO3I9cysxM3wwO2Rve2lmKChhW3I+PjBdfDApPT0wKXtIPWNbcys0Pj4yXXwwO0U9cys4fDA7Rz1jW0U+PjJdfDA7Rj1ILUd8MDtGPShGfDApPDg/Rjo4O0xuKG98MCwoY1tzPj4yXXwwKStHfDAsRnwwKXwwO0c9RytGfDA7Y1tFPj4yXT1HO2NbcysxNj4+Ml09RjtpZigoR3wwKTwoSHwwKSl7YnJlYWt9YVtyPj4wXT0xfWVsc2V7YVtzKzEyPj4wXT0xfX13aGlsZSgwKTtHPShjW2I+PjJdfDApKzEyfDA7SD1hW0c+PjBdfDA7YVtHPj4wXT0wO2lmKCEoSDw8MjQ+PjI0PT0wKSl7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDU2KXwwO2lmKChifDApIT0wKXtsPTI4MjticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjgyKXtjW2IrND4+Ml09NDM7Y1tiPj4yXT00MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTc4NHwwO2U9Zis0NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT01ODQwO3diKGd8MCw1Mzg0LDcwKX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1zPWNbbz4+Ml18MDtvPWNbbys0Pj4yXXwwO2lmKChzfDApPT0tMSYob3wwKT09LTEpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big2Nyl8MDtpZigoYnwwKSE9MCl7bD0yOTA7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTI5MCl7Y1tiKzQ+PjJdPTU0O2NbYj4+Ml09NTQ7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTU0MDB8MDtlPWYrNTV8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NTc2ODt3YihnfDAsNTQ4OCw2OCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1jW2I+PjJdfDA7SD1jW3IrND4+Ml18MDtHPSgoSHwwKTwwKTw8MzE+PjMxO2lmKChvfDApPChHfDApfChvfDApPT0oR3wwKSZzPj4+MDxIPj4+MCl7Y1tyKzg+PjJdPXN9ZWxzZXthW3IrMTI+PjBdPTF9Rz0oY1tiPj4yXXwwKSsxMnwwO0g9YVtHPj4wXXwwO2FbRz4+MF09MDtpZighKEg8PDI0Pj4yND09MCkpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big1Nil8MDtpZigoYnwwKSE9MCl7bD0zMDE7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTMwMSl7Y1tiKzQ+PjJdPTQzO2NbYj4+Ml09NDM7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTU3ODR8MDtlPWYrNDR8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NTg0MDt3YihnfDAsNTM4NCw3MCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9bz1jW2I+PjJdfDA7cj1vKzEzfDA7ZG97aWYoKGFbcj4+MF18MCk9PTApe0g9Y1tvKzQ+PjJdfDA7RT1vKzh8MDtHPWNbRT4+Ml18MDtGPUgtR3wwO0Y9KEZ8MCk8OD9GOjg7TG4obnwwLChjW28+PjJdfDApK0d8MCxGfDApfDA7Rz1HK0Z8MDtjW0U+PjJdPUc7Y1tvKzE2Pj4yXT1GO2lmKChHfDApPChIfDApKXticmVha31hW3I+PjBdPTF9ZWxzZXthW28rMTI+PjBdPTF9fXdoaWxlKDApO0c9KGNbYj4+Ml18MCkrMTJ8MDtIPWFbRz4+MF18MDthW0c+PjBdPTA7aWYoIShIPDwyND4+MjQ9PTApKXtnPVhhKDgpfDA7Y1tnPj4yXT05OTI4O3doaWxlKDEpe2I9dW4oNTYpfDA7aWYoKGJ8MCkhPTApe2w9MzEzO2JyZWFrfWI9Y1s1NjY2XXwwO2NbNTY2Nl09YiswO2lmKChifDApPT0wKXticmVha31zY1tiJjMxXSgpfWlmKChsfDApPT0zMTMpe2NbYis0Pj4yXT00MztjW2I+PjJdPTQzO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj01Nzg0fDA7ZT1mKzQ0fDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTU4NDA7d2IoZ3wwLDUzODQsNzApfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfWlmKChjW24+PjJdfDApIT0wKXtnPVhhKDgpfDA7Y1tnPj4yXT05OTI4O3doaWxlKDEpe2I9dW4oNTQpfDA7aWYoKGJ8MCkhPTApe2w9MzIxO2JyZWFrfWI9Y1s1NjY2XXwwO2NbNTY2Nl09YiswO2lmKChifDApPT0wKXticmVha31zY1tiJjMxXSgpfWlmKChsfDApPT0zMjEpe2NbYis0Pj4yXT00MTtjW2I+PjJdPTQxO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj01Njg4fDA7ZT1mKzQyfDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTU3NDQ7d2IoZ3wwLDU1NDQsNjYpfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfW89YisyODh8MDtzPWNbbz4+Ml18MDtyPWIrMjkyfDA7dD1jW3I+PjJdfDA7aWYoKHR8MCk9PShzfDApKXt3PXN9ZWxzZXt3PXQrKH4oKHQrIC04KygwLXMpfDApPj4+Myk8PDMpfDA7Y1tyPj4yXT13fUg9YisyNTl8MDtpZigoZFtIPj4wXXxkW0grMT4+MF08PDh8ZFtIKzI+PjBdPDwxNnxkW0grMz4+MF08PDI0fDApPT0tMSl7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDk2KXwwO2lmKChifDApIT0wKXtsPTMzMTticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MzMxKXtjW2IrND4+Ml09ODM7Y1tiPj4yXT04MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTU2MHwwO2U9Zis4NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT01NzY4O3diKGd8MCw1NDg4LDY4KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX12PW4rNHwwO249Y1t2Pj4yXXwwO3U9bisxfDA7ej1zO3Q9dy16Pj4zO2Rve2lmKHQ+Pj4wPHU+Pj4wKXt1PXUtdHwwO3Q9YisyOTZ8MDtBPWNbdD4+Ml18MDt4PXc7aWYoIShBLXg+PjM+Pj4wPHU+Pj4wKSl7dD11O2w9dzt3aGlsZSgxKXtpZigobHwwKSE9MCl7SD1sO2NbSD4+Ml09MDtjW0grND4+Ml09MH10PXQrIC0xfDA7aWYoKHR8MCk9PTApe2JyZWFrfWVsc2V7bD1sKzh8MH19Y1tyPj4yXT13Kyh1PDwzKTticmVha314PXgtenwwO3k9eD4+Mzt3PXkrdXwwO2lmKHc+Pj4wPjUzNjg3MDkxMSl7VGsoKX16PUEtenwwO2lmKHo+PjM+Pj4wPDI2ODQzNTQ1NSl7ej16Pj4yO3o9ej4+PjA8dz4+PjA/dzp6O2lmKCh6fDApPT0wKXt6PTA7Qj0wfWVsc2V7bD0zNDJ9fWVsc2V7ej01MzY4NzA5MTE7bD0zNDJ9ZG97aWYoKGx8MCk9PTM0Mil7QT16PDwzO0E9KEF8MCk9PTA/MTpBO3doaWxlKDEpe0I9dW4oQSl8MDtpZigoQnwwKSE9MCl7bD0zNDg7YnJlYWt9Qj1jWzU2NjZdfDA7Y1s1NjY2XT1CKzA7aWYoKEJ8MCk9PTApe2JyZWFrfXNjW0ImMzFdKCl9aWYoKGx8MCk9PTM0OCl7YnJlYWt9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2w9QisoeTw8Myl8MDt3aGlsZSgxKXtpZigobHwwKSE9MCl7SD1sO2NbSD4+Ml09MDtjW0grND4+Ml09MH11PXUrIC0xfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7bD1sKzh8MH19TG4oQnwwLHN8MCx4fDApfDA7Y1tvPj4yXT1CO2Nbcj4+Ml09Qisodzw8Myk7Y1t0Pj4yXT1CKyh6PDwzKTtpZigoc3wwKT09MCl7cz1CO2JyZWFrfXZuKHMpO3M9Y1tvPj4yXXwwfWVsc2V7aWYoISh0Pj4+MD51Pj4+MCkpe2JyZWFrfWw9cysodTw8Myl8MDtpZigod3wwKT09KGx8MCkpe2JyZWFrfWNbcj4+Ml09dysofigodysgLTgrKDAtbCl8MCk+Pj4zKTw8Myl9fXdoaWxlKDApO2w9ZFtxPj4wXXxkW3ErMT4+MF08PDh8ZFtxKzI+PjBdPDwxNnxkW3ErMz4+MF08PDI0O0g9cztjW0g+PjJdPWwrODtjW0grND4+Ml09MDtnOmRve2lmKG4+Pj4wPjEpe2NbbT4+Ml09Y1tiPj4yXTtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtsPW0rMTJ8MDtzPXVuKDEwNDg2NDQpfDA7eT1zKzY4Ji02NDtjW3krIC00Pj4yXT1zO2NbbD4+Ml09eTtjW2o+PjJdPW07eT1qKzR8MDtjW3k+PjJdPTA7Y1tqKzg+PjJdPS0xO2NbZys0Pj4yXT0zMjtjW2crOD4+Ml09MjtjW2crMTI+PjJdPTg7Y1tnKzE2Pj4yXT0wO3M9ZyszNnwwO2Nbcz4+Ml09MDtuPWcrNDB8MDtjW24+PjJdPTA7Y1tnKzQ0Pj4yXT0wO2NbZys2MD4+Ml09MTtjW2crNjQ+PjJdPTI7Y1tnKzU2Pj4yXT00MDk2O2NbZys1Mj4+Ml09NDtjW2crNDg+PjJdPTQ7dT1nKzY4fDA7Y1t1Pj4yXT0wO3Q9Zys3MnwwO2NbdD4+Ml09MDtjW2crNzY+PjJdPTA7Y1tnKzIwPj4yXT0zMjt3PWcrMjR8MDtjW3c+PjJdPTA7Y1tnKzI4Pj4yXT0tMjE0NzQ4MzY0ODtjW2crMzI+PjJdPTIxNDc0ODM2NDc7Y1tnPj4yXT0wO0g9bWQobSl8MDtHPW1kKG0pfDA7eD1tZChtKXwwO2NbeT4+Ml09KEcmMjU1KTw8MTZ8KEgmMjU1KTw8MjR8KHgmMjU1KTw8OHwobWQobSl8MCkmMjU1O3RkKGcpO3k9U2MoODM1Miw1NjQ4KXwwO209Y1t2Pj4yXXwwO3k9amgoeSxtKXwwO3g9Y1t5KygoY1soY1t5Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dj14KzR8MDtjW3Y+PjJdPShjW3Y+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9QT0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7ej1jW3grOD4+Ml18MDtkb3tpZigoY1t4KzEyPj4yXXwwKS16Pj4yPj4+MD5BPj4+MCl7ej1jW3orKEE8PDIpPj4yXXwwO2lmKCh6fDApPT0wKXticmVha316PXhjW2NbKGNbej4+Ml18MCkrMjg+PjJdJjYzXSh6LDEwKXwwO0g9Y1t2Pj4yXXwwO2Nbdj4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbeD4+Ml18MCkrOD4+Ml0mMjU1XSh4KX1saCh5LHopO1lnKHkpO2g6ZG97aWYoKG18MCkhPTApe3g9Zis0fDA7dj1mKzh8MDt5PTE7d2hpbGUoMSl7aWYoeT4+PjA+MSl7ej1jWyhjW28+PjJdfDApKyh5KyAtMTw8Myk+PjJdfDB9ZWxzZXt6PTB9QT0ocmQoZyxqLChjW3M+PjJdfDApKzQ0fDApfDApK3p8MDt6PWNbdz4+Ml18MDtpZigoQXwwKTwwKXt6PXorQXwwfWVsc2V7ej1BLShBPj4+MDx6Pj4+MD8wOnopfDB9QT0oY1tvPj4yXXwwKSsoeTw8Myl8MDtjW0E+PjJdPXo7Y1tBKzQ+PjJdPSgoenwwKTwwKTw8MzE+PjMxO0E9U2MoamgoU2MoODM1Miw1NjcyKXwwLHkpfDAsNTY4MCl8MDt6PShjW28+PjJdfDApKyh5PDwzKXwwO3o9a2goQSxjW3o+PjJdfDAsY1t6KzQ+PjJdfDApfDA7QT1jW3orKChjWyhjW3o+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtCPUErNHwwO2NbQj4+Ml09KGNbQj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1t4Pj4yXT0yMDg7Y1t2Pj4yXT0wO2NnKDEzNDU2LGYpfUM9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0Q9Y1tBKzg+PjJdfDA7aWYoISgoY1tBKzEyPj4yXXwwKS1EPj4yPj4+MD5DPj4+MCkpe2JyZWFrfUM9Y1tEKyhDPDwyKT4+Ml18MDtpZigoQ3wwKT09MCl7YnJlYWt9Qz14Y1tjWyhjW0M+PjJdfDApKzI4Pj4yXSY2M10oQywxMCl8MDtIPWNbQj4+Ml18MDtjW0I+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0E+PjJdfDApKzg+PjJdJjI1NV0oQSl9bGgoeixDKTtZZyh6KTt5PXkrMXwwO2lmKHk+Pj4wPm0+Pj4wKXticmVhayBofX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dj1jW28+PjJdfDA7aTpkb3tpZigoY1tyPj4yXXwwKS12Pj4zPj4+MD4xKXtqPWYrNHwwO2c9Zis4fDA7bT0xO3doaWxlKDEpe3c9disobSsgLTE8PDMpfDA7dj12KyhtPDwzKXwwO3g9djt3PUluKGNbeD4+Ml18MCxjW3grND4+Ml18MCxjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7Y1t2Pj4yXT13O2Nbdis0Pj4yXT1JO3Y9U2MoamgoU2MoODM1Miw1NjcyKXwwLG0pfDAsNTY4MCl8MDt3PShjW28+PjJdfDApKyhtPDwzKXwwO3c9a2godixjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7dj1jW3crKChjWyhjW3c+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDt4PXYrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tqPj4yXT0yMDg7Y1tnPj4yXT0wO2NnKDEzNDU2LGYpfXo9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3k9Y1t2Kzg+PjJdfDA7aWYoISgoY1t2KzEyPj4yXXwwKS15Pj4yPj4+MD56Pj4+MCkpe2JyZWFrfXk9Y1t5Kyh6PDwyKT4+Ml18MDtpZigoeXwwKT09MCl7YnJlYWt9eT14Y1tjWyhjW3k+PjJdfDApKzI4Pj4yXSY2M10oeSwxMCl8MDtIPWNbeD4+Ml18MDtjW3g+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW3Y+PjJdfDApKzg+PjJdJjI1NV0odil9bGgodyx5KTtZZyh3KTttPW0rMXwwO3Y9Y1tvPj4yXXwwO2lmKCEobT4+PjA8KGNbcj4+Ml18MCktdj4+Mz4+PjApKXticmVhayBpfX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zj1jW3U+PjJdfDA7ZG97aWYoKGZ8MCkhPTApe2c9Y1t0Pj4yXXwwO2lmKChnfDApIT0oZnwwKSl7ZG97Y1t0Pj4yXT1nKyAtNDQ7aj1jW2crIC0zNj4+Ml18MDtpZigoanwwKSE9MCl7dm4oY1tqKyAtND4+Ml18MCl9aj1jW2crIC0zMj4+Ml18MDtpZigoanwwKSE9MCl7dm4oY1tqKyAtND4+Ml18MCl9Zz1jW2crIC0yOD4+Ml18MDtpZigoZ3wwKSE9MCl7dm4oY1tnKyAtND4+Ml18MCl9Zz1jW3Q+PjJdfDB9d2hpbGUoKGd8MCkhPShmfDApKTtmPWNbdT4+Ml18MDtpZigoZnwwKT09MCl7YnJlYWt9fXZuKGYpfX13aGlsZSgwKTtmPWNbcz4+Ml18MDtkb3tpZigoZnwwKSE9MCl7Zz1jW24+PjJdfDA7aWYoKGd8MCkhPShmfDApKXtkb3tjW24+PjJdPWcrIC00NDtqPWNbZysgLTM2Pj4yXXwwO2lmKChqfDApIT0wKXt2bihjW2orIC00Pj4yXXwwKX1qPWNbZysgLTMyPj4yXXwwO2lmKChqfDApIT0wKXt2bihjW2orIC00Pj4yXXwwKX1nPWNbZysgLTI4Pj4yXXwwO2lmKChnfDApIT0wKXt2bihjW2crIC00Pj4yXXwwKX1nPWNbbj4+Ml18MH13aGlsZSgoZ3wwKSE9KGZ8MCkpO2Y9Y1tzPj4yXXwwO2lmKChmfDApPT0wKXticmVha319dm4oZil9fXdoaWxlKDApO3ZuKGNbKGNbbD4+Ml18MCkrIC00Pj4yXXwwKTtsPWRbcT4+MF18ZFtxKzE+PjBdPDw4fGRbcSsyPj4wXTw8MTZ8ZFtxKzM+PjBdPDwyNDticmVhayBnfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zj1jW2I+PjJdfDA7YVtmKzEyPj4wXT0wO2FbZisxMz4+MF09MDtmPWNbYj4+Ml18MDtnPWwrOHwwO0g9Y1tmKzQ+PjJdfDA7Rz0oKEh8MCk8MCk8PDMxPj4zMTtpZigwPChHfDApfDA9PShHfDApJmc+Pj4wPEg+Pj4wKXtjW2YrOD4+Ml09ZztIPWIrMTJ8MDtjW0g+PjJdPTA7SD1iKzh8MDtjW0g+PjJdPTA7aT1lO3JldHVybn1lbHNle2FbZisxMj4+MF09MTtIPWIrMTJ8MDtjW0g+PjJdPTA7SD1iKzh8MDtjW0g+PjJdPTA7aT1lO3JldHVybn19fXdoaWxlKDApO0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDU2KXwwO2lmKChifDApIT0wKXtsPTIyOTticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjI5KXtjW2IrND4+Ml09NDM7Y1tiPj4yXT00MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTk4NHwwO2U9Zis0NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT02MDQwO3diKGd8MCw1OTUyLDcyKX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBwZShhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Yj1pO2k9aSsxNnwwO2Y9YjtnPVNjKDgzNTIsNTE5Mil8MDtoPWNbZysoKGNbKGNbZz4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO2o9aCs0fDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW2YrND4+Ml09MjA4O2NbZis4Pj4yXT0wO2NnKDEzNDU2LGYpfWw9KGNbMTM0NjA+PjJdfDApKyAtMXwwO209Y1toKzg+PjJdfDA7aWYoKGNbaCsxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywxMCl8MDttPWNbaj4+Ml18MDtjW2o+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2g+PjJdfDApKzg+PjJdJjI1NV0oaCl9bGgoZyxrKTtZZyhnKTtnPWErMzR8MDtnPWRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNDtpZigoZ3wwKSE9MCl7dm4oZyl9Zz1TYyg4MzUyLDUyMDgpfDA7aD1jW2crKChjWyhjW2c+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtqPWgrNHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX1mPShjWzEzNDYwPj4yXXwwKSsgLTF8MDthPWNbaCs4Pj4yXXwwO2lmKChjW2grMTI+PjJdfDApLWE+PjI+Pj4wPmY+Pj4wPyhlPWNbYSsoZjw8Mik+PjJdfDAsKGV8MCkhPTApOjApe2U9eGNbY1soY1tlPj4yXXwwKSsyOD4+Ml0mNjNdKGUsMTApfDA7bT1jW2o+PjJdfDA7Y1tqPj4yXT1tKyAtMTtpZigobXwwKT09MCl7bGNbY1soY1toPj4yXXwwKSs4Pj4yXSYyNTVdKGgpfWxoKGcsZSk7WWcoZyk7aT1iO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBxZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gcmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHNlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiB0ZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gdWUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB2ZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHdlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24geGUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHllKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gemUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEFlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gQmUoYSl7YT1hfDA7dmFyIGI9MDtiPWk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIENlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRGUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTA7Yj1pO2Q9Y1thPj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufWU9YSs0fDA7Zj1jW2U+PjJdfDA7aWYoKGZ8MCkhPShkfDApKXtkb3tnPWYrIC0yNHwwO2NbZT4+Ml09ZztmPWNbZisgLTg+PjJdfDA7aWYoKGZ8MCkhPShnfDApKXtpZigoZnwwKSE9MCl7bGNbY1soY1tmPj4yXXwwKSsyMD4+Ml0mMjU1XShmKX19ZWxzZXtsY1tjWyhjW2Y+PjJdfDApKzE2Pj4yXSYyNTVdKGYpfWY9Y1tlPj4yXXwwfXdoaWxlKChmfDApIT0oZHwwKSk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59fXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gRWUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEZlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEdlKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2E9aTt3aGlsZSgxKXtkPXVuKDgpfDA7aWYoKGR8MCkhPTApe2I9NzticmVha31kPWNbNTY2Nl18MDtjWzU2NjZdPWQrMDtpZigoZHwwKT09MCl7YnJlYWt9c2NbZCYzMV0oKX1pZigoYnwwKT09Nyl7Y1tkPj4yXT02NDE2O2k9YTtyZXR1cm4gZHwwfWQ9WGEoNCl8MDtjW2Q+PjJdPTIyNjgwO3diKGR8MCwyMjcyOCwyMDYpO3JldHVybiAwfWZ1bmN0aW9uIEhlKGEsYil7YT1hfDA7Yj1ifDA7aWYoKGJ8MCkhPTApe2NbYj4+Ml09NjQxNn1yZXR1cm59ZnVuY3Rpb24gSWUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEplKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEtlKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtiPWk7aj1lKzEwNHwwO2c9ZFtqPj4wXXwwO2U9Zz4+Pjc7aD1nPj4+NiYxO2lmKCEoKGV8MCkhPTF8KGh8MCk9PTApKXtiPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oODApfDA7aWYoKGV8MCkhPTApe2Y9ODticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZnwwKT09OCl7Y1tlKzQ+PjJdPTY3O2NbZT4+Ml09Njc7Zz1lKzEyfDA7Y1tiKzQ+PjJdPWc7Y1tlKzg+PjJdPTA7Zz1nKzB8MDtlPTY5NjB8MDtmPWcrNjh8MDtkb3thW2c+PjBdPWFbZT4+MF18MDtnPWcrMXwwO2U9ZSsxfDB9d2hpbGUoKGd8MCk8KGZ8MCkpO2NbYj4+Ml09NzA0MDt3YihifDAsNjgzMiw4NCl9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9aWYoKGV8MCkhPShofDApKXthW2o+PjBdPWcmNjM7aT1iO3JldHVybn1iPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oNTEpfDA7aWYoKGV8MCkhPTApe2Y9MTY7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKGZ8MCk9PTE2KXtjW2UrND4+Ml09Mzg7Y1tlPj4yXT0zODtnPWUrMTJ8MDtjW2IrND4+Ml09ZztjW2UrOD4+Ml09MDtnPWcrMHwwO2U9Njg5NnwwO2Y9ZyszOXwwO2Rve2FbZz4+MF09YVtlPj4wXXwwO2c9ZysxfDA7ZT1lKzF8MH13aGlsZSgoZ3wwKTwoZnwwKSk7Y1tiPj4yXT02OTQ0O3diKGJ8MCw2ODgwLDgyKX1qPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX1mdW5jdGlvbiBMZShhLGIpe2E9YXwwO2I9YnwwO3JldHVybigoY1tiKzQ+PjJdfDApPT02Njg4P2ErNHwwOjApfDB9ZnVuY3Rpb24gTWUoYSl7YT1hfDA7cmV0dXJuIDY3ODR9ZnVuY3Rpb24gTmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIE9lKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBQZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFFlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gUmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBTZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2I9aTtpPWkrMTZ8MDtoPWI7ZD1TYyg4MzUyLDcxMDQpfDA7ZT1jW2QrKChjWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtmPWUrNHwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbaD4+Ml09MTM0NTY7Y1toKzQ+PjJdPTIwODtjW2grOD4+Ml09MDtjZygxMzQ1NixoKX1oPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtqPWNbZSs4Pj4yXXwwO2lmKChjW2UrMTI+PjJdfDApLWo+PjI+Pj4wPmg+Pj4wPyhnPWNbaisoaDw8Mik+PjJdfDAsKGd8MCkhPTApOjApe2c9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcsMTApfDA7aj1jW2Y+PjJdfDA7Y1tmPj4yXT1qKyAtMTtpZigoanwwKT09MCl7bGNbY1soY1tlPj4yXXwwKSs4Pj4yXSYyNTVdKGUpfWxoKGQsZyk7WWcoZCk7ZD1jW2ErMzI0Pj4yXXwwO2lmKCgoZHwwKSE9MD8oaD1kKzR8MCxqPWNbaD4+Ml18MCxjW2g+PjJdPWorIC0xLChqfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGg9ZCs4fDAsaj1jW2g+PjJdfDAsY1toPj4yXT1qKyAtMSwoanwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX1kPWNbYSszMTY+PjJdfDA7aWYoKChkfDApIT0wPyhoPWQrNHwwLGo9Y1toPj4yXXwwLGNbaD4+Ml09aisgLTEsKGp8MCk9PTApOjApPyhsY1tjWyhjW2Q+PjJdfDApKzg+PjJdJjI1NV0oZCksaD1kKzh8MCxqPWNbaD4+Ml18MCxjW2g+PjJdPWorIC0xLChqfDApPT0wKTowKXtsY1tjWyhjW2Q+PjJdfDApKzE2Pj4yXSYyNTVdKGQpfWQ9Y1thKzMwMD4+Ml18MDtpZigoZHwwKSE9MCl7ZT1hKzMwNHwwO2Y9Y1tlPj4yXXwwO2lmKChmfDApIT0oZHwwKSl7Y1tlPj4yXT1mKyh+KCgoZisgLTEyKygwLWQpfDApPj4+MCkvMTJ8MCkqMTJ8MCl9dm4oZCl9ZD1jW2ErMjg4Pj4yXXwwO2lmKChkfDApPT0wKXtqPWErMjQ3fDA7cGUoaik7aj1hKzE2fDA7aj1jW2o+PjJdfDA7aj1qKyAtNHwwO2o9Y1tqPj4yXXwwO3ZuKGopO2k9YjtyZXR1cm59ZT1hKzI5MnwwO2Y9Y1tlPj4yXXwwO2lmKChmfDApIT0oZHwwKSl7Y1tlPj4yXT1mKyh+KChmKyAtOCsoMC1kKXwwKT4+PjMpPDwzKX12bihkKTtqPWErMjQ3fDA7cGUoaik7aj1hKzE2fDA7aj1jW2o+PjJdfDA7aj1qKyAtNHwwO2o9Y1tqPj4yXXwwO3ZuKGopO2k9YjtyZXR1cm59aj1YYSg0KXwwO2Nbaj4+Ml09MjEzMDQ7d2IoanwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gVGUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFVlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFZlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2E9Y1thKzEyPj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufVNlKGEpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gV2UoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT03MzEyKXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIFhlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFllKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBaZShhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBfZShhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiAkZShhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTc1NjApe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gYWYoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gYmYoKXt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtiPWk7aT1pKzMyfDA7ZD1iO0hiKDcyLDk2LDE3NiwwLDE1Miw5MSwxNDQsMCwxNDQsMCw4LDEzNiwyMTEpO2NbZD4+Ml09MTtlPWQrNHwwO2NbZT4+Ml09OTY7T2IoNzIsMSxlfDAsMTI4LDkyLDIyKTtjW2Q+PjJdPTQ7ZT1kKzR8MDtjW2U+PjJdPTIxNzc2O2NbZCs4Pj4yXT05NjtjW2QrMTI+PjJdPTIxOTA0O2NbZCsxNj4+Ml09MjE5MDQ7Zj11big4KXwwO2lmKChmfDApIT0wKXthW2Y+PjBdPTI3O2FbZisxPj4wXT0wO2FbZisyPj4wXT0wO2FbZiszPj4wXT0wO2c9Zis0fDA7YVtnPj4wXT0wO2FbZysxPj4wXT0wO2FbZysyPj4wXT0wO2FbZyszPj4wXT0wfXpiKDcyLDE2LDQsZXwwLDEyMCwzMCxmfDAsMCk7Y1tkPj4yXT0zO2U9ZCs0fDA7Y1tlPj4yXT0yMTc3NjtjW2QrOD4+Ml09OTY7Y1tkKzEyPj4yXT0yMTg4ODtmPXVuKDgpfDA7aWYoKGZ8MCkhPTApe2FbZj4+MF09NjY7YVtmKzE+PjBdPTA7YVtmKzI+PjBdPTA7YVtmKzM+PjBdPTA7Zz1mKzR8MDthW2c+PjBdPTA7YVtnKzE+PjBdPTA7YVtnKzI+PjBdPTA7YVtnKzM+PjBdPTB9emIoNzIsMjQsMyxlfDAsMTEyLDI4LGZ8MCwwKTtjW2Q+PjJdPTI7ZT1kKzR8MDtjW2U+PjJdPTIxOTA0O2NbZCs4Pj4yXT05NjtkPXVuKDgpfDA7aWYoKGR8MCk9PTApe3piKDcyLDQwLDIsZXwwLDU2LDQ2LGR8MCwwKTtpPWI7cmV0dXJufWFbZD4+MF09OTM7YVtkKzE+PjBdPTA7YVtkKzI+PjBdPTA7YVtkKzM+PjBdPTA7Zz1kKzR8MDthW2c+PjBdPTA7YVtnKzE+PjBdPTA7YVtnKzI+PjBdPTA7YVtnKzM+PjBdPTA7emIoNzIsNDAsMixlfDAsNTYsNDYsZHwwLDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gY2YoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtkPWNbYSs0Pj4yXXwwO2U9KEpuKGR8MCl8MCkrMXwwO2E9dW4oZSl8MDtpZigoYXwwKT09MCl7ZT0wO2k9YjtyZXR1cm4gZXwwfUxuKGF8MCxkfDAsZXwwKXwwO2U9YTtpPWI7cmV0dXJuIGV8MH1mdW5jdGlvbiBkZigpe3ZhciBhPTA7YT1pO0phKDIxNzc2LDc2MjQpO3BiKDIxODA4LDc2MzIsMSwxLDApO1VhKDIxODI0LDc2NDAsMSwtMTI4LDEyNyk7VWEoMjE4NTYsNzY0OCwxLC0xMjgsMTI3KTtVYSgyMTg0MCw3NjY0LDEsMCwyNTUpO1VhKDIxODY0LDc2ODAsMiwtMzI3NjgsMzI3NjcpO1VhKDIxODcyLDc2ODgsMiwwLDY1NTM1KTtVYSgyMTg4OCw3NzA0LDQsLTIxNDc0ODM2NDgsMjE0NzQ4MzY0Nyk7VWEoMjE5MDQsNzcxMiw0LDAsLTEpO1VhKDIxOTIwLDc3MjgsNCwtMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3KTtVYSgyMTkzNiw3NzM2LDQsMCwtMSk7YWMoMjE5NTIsNzc1Miw0KTthYygyMTk2OCw3NzYwLDgpO3RiKDgyNDAsNzc2OCk7dGIoODE1Miw3Nzg0KTtKYig4MDY0LDQsNzgyNCk7eGIoNzk0NCw3ODQwKTtMYSg3OTEyLDc4NTYpO2k9YTtyZXR1cm59ZnVuY3Rpb24gZWYoYSl7YT1hfDA7YT1pO1lnKDgzNTIpO1lnKDg1MjgpO2JoKDg3MDQpO2JoKDg4ODApO2k9YTtyZXR1cm59ZnVuY3Rpb24gZmYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNzI4O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGdmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gaGYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wO2U9aTtvY1tjWyhjW2I+PjJdfDApKzI0Pj4yXSYxMjddKGIpfDA7ZD1ZayhjW2Q+PjJdfDAsMTM1MjgpfDA7Y1tiKzM2Pj4yXT1kO2FbYis0ND4+MF09KG9jW2NbKGNbZD4+Ml18MCkrMjg+PjJdJjEyN10oZCl8MCkmMTtpPWU7cmV0dXJufWZ1bmN0aW9uIGpmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtiPWk7aT1pKzE2fDA7Zz1iKzh8MDtkPWI7ZT1hKzM2fDA7Zj1hKzQwfDA7aD1nKzh8MDtqPWc7YT1hKzMyfDA7d2hpbGUoMSl7az1jW2U+PjJdfDA7az15Y1tjWyhjW2s+PjJdfDApKzIwPj4yXSY2M10oayxjW2Y+PjJdfDAsZyxoLGQpfDA7bD0oY1tkPj4yXXwwKS1qfDA7aWYoKFpiKGd8MCwxLGx8MCxjW2E+PjJdfDApfDApIT0obHwwKSl7ZT0tMTtkPTU7YnJlYWt9aWYoKGt8MCk9PTIpe2U9LTE7ZD01O2JyZWFrfWVsc2UgaWYoKGt8MCkhPTEpe2Q9NDticmVha319aWYoKGR8MCk9PTQpe2w9KChfYShjW2E+PjJdfDApfDApIT0wKTw8MzE+PjMxO2k9YjtyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTUpe2k9YjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIGtmKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MDtmPWk7aWYoKGFbYis0ND4+MF18MCkhPTApe2c9WmIoZHwwLDQsZXwwLGNbYiszMj4+Ml18MCl8MDtpPWY7cmV0dXJuIGd8MH1pZigoZXwwKT4wKXtnPTB9ZWxzZXtnPTA7aT1mO3JldHVybiBnfDB9d2hpbGUoMSl7aWYoKHhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGNbZD4+Ml18MCl8MCk9PS0xKXtlPTY7YnJlYWt9Zz1nKzF8MDtpZigoZ3wwKTwoZXwwKSl7ZD1kKzR8MH1lbHNle2U9NjticmVha319aWYoKGV8MCk9PTYpe2k9ZjtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIGxmKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtlPWk7aT1pKzMyfDA7az1lKzE2fDA7cD1lKzh8MDtqPWUrNHwwO2g9ZTtmPShkfDApPT0tMTthOmRve2lmKCFmKXtjW3A+PjJdPWQ7aWYoKGFbYis0ND4+MF18MCkhPTApe2lmKChaYihwfDAsNCwxLGNbYiszMj4+Ml18MCl8MCk9PTEpe2JyZWFrfWVsc2V7ZD0tMX1pPWU7cmV0dXJuIGR8MH1jW2o+PjJdPWs7bD1wKzR8MDtuPWIrMzZ8MDtvPWIrNDB8MDtnPWsrOHwwO209aztiPWIrMzJ8MDt3aGlsZSgxKXtxPWNbbj4+Ml18MDtxPXRjW2NbKGNbcT4+Ml18MCkrMTI+PjJdJjMxXShxLGNbbz4+Ml18MCxwLGwsaCxrLGcsail8MDtpZigoY1toPj4yXXwwKT09KHB8MCkpe2Q9LTE7Zz0xMjticmVha31pZigocXwwKT09Myl7Zz03O2JyZWFrfXI9KHF8MCk9PTE7aWYoIShxPj4+MDwyKSl7ZD0tMTtnPTEyO2JyZWFrfXE9KGNbaj4+Ml18MCktbXwwO2lmKChaYihrfDAsMSxxfDAsY1tiPj4yXXwwKXwwKSE9KHF8MCkpe2Q9LTE7Zz0xMjticmVha31pZihyKXtwPXI/Y1toPj4yXXwwOnB9ZWxzZXticmVhayBhfX1pZigoZ3wwKT09Nyl7aWYoKFpiKHB8MCwxLDEsY1tiPj4yXXwwKXwwKT09MSl7YnJlYWt9ZWxzZXtkPS0xfWk9ZTtyZXR1cm4gZHwwfWVsc2UgaWYoKGd8MCk9PTEyKXtpPWU7cmV0dXJuIGR8MH19fXdoaWxlKDApO3I9Zj8wOmQ7aT1lO3JldHVybiByfDB9ZnVuY3Rpb24gbWYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNzI4O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG5mKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gb2YoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2c9WWsoY1tkPj4yXXwwLDEzNTI4KXwwO2Y9YiszNnwwO2NbZj4+Ml09ZztkPWIrNDR8MDtjW2Q+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MDtmPWNbZj4+Ml18MDthW2IrNTM+PjBdPShvY1tjWyhjW2Y+PjJdfDApKzI4Pj4yXSYxMjddKGYpfDApJjE7aWYoKGNbZD4+Ml18MCk+OCl7b2soOTU0NCl9ZWxzZXtpPWU7cmV0dXJufX1mdW5jdGlvbiBwZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPXNmKGEsMCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBxZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPXNmKGEsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiByZihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtpPWkrMzJ8MDtqPWUrMTZ8MDtmPWUrOHwwO2w9ZSs0fDA7az1lO2c9Yis1MnwwO209KGFbZz4+MF18MCkhPTA7aWYoKGR8MCk9PS0xKXtpZihtKXttPS0xO2k9ZTtyZXR1cm4gbXwwfW09Y1tiKzQ4Pj4yXXwwO2FbZz4+MF09KG18MCkhPS0xJjE7aT1lO3JldHVybiBtfDB9aD1iKzQ4fDA7YTpkb3tpZihtKXtjW2w+PjJdPWNbaD4+Ml07bT1jW2IrMzY+PjJdfDA7az10Y1tjWyhjW20+PjJdfDApKzEyPj4yXSYzMV0obSxjW2IrNDA+PjJdfDAsbCxsKzR8MCxrLGosais4fDAsZil8MDtpZigoa3wwKT09Myl7YVtqPj4wXT1jW2g+PjJdO2NbZj4+Ml09aisxfWVsc2UgaWYoKGt8MCk9PTF8KGt8MCk9PTIpe209LTE7aT1lO3JldHVybiBtfDB9Yj1iKzMyfDA7d2hpbGUoMSl7az1jW2Y+PjJdfDA7aWYoIShrPj4+MD5qPj4+MCkpe2JyZWFrIGF9bT1rKyAtMXwwO2NbZj4+Ml09bTtpZigoVmEoYVttPj4wXXwwLGNbYj4+Ml18MCl8MCk9PS0xKXtmPS0xO2JyZWFrfX1pPWU7cmV0dXJuIGZ8MH19d2hpbGUoMCk7Y1toPj4yXT1kO2FbZz4+MF09MTttPWQ7aT1lO3JldHVybiBtfDB9ZnVuY3Rpb24gc2YoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7ZT1pO2k9aSszMnwwO2c9ZSsxNnwwO2o9ZSs4fDA7bT1lKzR8MDtsPWU7bj1iKzUyfDA7aWYoKGFbbj4+MF18MCkhPTApe2Y9Yis0OHwwO2c9Y1tmPj4yXXwwO2lmKCFkKXt2PWc7aT1lO3JldHVybiB2fDB9Y1tmPj4yXT0tMTthW24+PjBdPTA7dj1nO2k9ZTtyZXR1cm4gdnwwfXM9Y1tiKzQ0Pj4yXXwwO3M9KHN8MCk+MT9zOjE7YTpkb3tpZigoc3wwKT4wKXtwPWIrMzJ8MDtuPTA7d2hpbGUoMSl7bz1UYihjW3A+PjJdfDApfDA7aWYoKG98MCk9PS0xKXtoPS0xO2JyZWFrfWFbZytuPj4wXT1vO249bisxfDA7aWYoKG58MCk+PShzfDApKXticmVhayBhfX1pPWU7cmV0dXJuIGh8MH19d2hpbGUoMCk7Yjpkb3tpZigoYVtiKzUzPj4wXXwwKT09MCl7cD1iKzQwfDA7cT1iKzM2fDA7bj1qKzR8MDtvPWIrMzJ8MDt3aGlsZSgxKXt2PWNbcD4+Ml18MDt1PXY7dD1jW3U+PjJdfDA7dT1jW3UrND4+Ml18MDt3PWNbcT4+Ml18MDtyPWcrc3wwO3Y9dGNbY1soY1t3Pj4yXXwwKSsxNj4+Ml0mMzFdKHcsdixnLHIsbSxqLG4sbCl8MDtpZigodnwwKT09Myl7Zj0xNDticmVha31lbHNlIGlmKCh2fDApPT0yKXtoPS0xO2Y9MjI7YnJlYWt9ZWxzZSBpZigodnwwKSE9MSl7az1zO2JyZWFrIGJ9dz1jW3A+PjJdfDA7Y1t3Pj4yXT10O2Nbdys0Pj4yXT11O2lmKChzfDApPT04KXtoPS0xO2Y9MjI7YnJlYWt9dD1UYihjW28+PjJdfDApfDA7aWYoKHR8MCk9PS0xKXtoPS0xO2Y9MjI7YnJlYWt9YVtyPj4wXT10O3M9cysxfDB9aWYoKGZ8MCk9PTE0KXtjW2o+PjJdPWFbZz4+MF18MDtrPXM7YnJlYWt9ZWxzZSBpZigoZnwwKT09MjIpe2k9ZTtyZXR1cm4gaHwwfX1lbHNle2Nbaj4+Ml09YVtnPj4wXXwwO2s9c319d2hpbGUoMCk7aWYoZCl7dz1jW2o+PjJdfDA7Y1tiKzQ4Pj4yXT13O2k9ZTtyZXR1cm4gd3wwfWQ9YiszMnwwO3doaWxlKDEpe2lmKChrfDApPD0wKXticmVha31rPWsrIC0xfDA7aWYoKFZhKGFbZytrPj4wXXwwLGNbZD4+Ml18MCl8MCk9PS0xKXtoPS0xO2Y9MjI7YnJlYWt9fWlmKChmfDApPT0yMil7aT1lO3JldHVybiBofDB9dz1jW2o+PjJdfDA7aT1lO3JldHVybiB3fDB9ZnVuY3Rpb24gdGYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNjY0O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHVmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA2NjQ7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gdmYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wO2U9aTtvY1tjWyhjW2I+PjJdfDApKzI0Pj4yXSYxMjddKGIpfDA7ZD1ZayhjW2Q+PjJdfDAsMTM1MjApfDA7Y1tiKzM2Pj4yXT1kO2FbYis0ND4+MF09KG9jW2NbKGNbZD4+Ml18MCkrMjg+PjJdJjEyN10oZCl8MCkmMTtpPWU7cmV0dXJufWZ1bmN0aW9uIHdmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtiPWk7aT1pKzE2fDA7Zz1iKzh8MDtkPWI7ZT1hKzM2fDA7Zj1hKzQwfDA7aD1nKzh8MDtqPWc7YT1hKzMyfDA7d2hpbGUoMSl7az1jW2U+PjJdfDA7az15Y1tjWyhjW2s+PjJdfDApKzIwPj4yXSY2M10oayxjW2Y+PjJdfDAsZyxoLGQpfDA7bD0oY1tkPj4yXXwwKS1qfDA7aWYoKFpiKGd8MCwxLGx8MCxjW2E+PjJdfDApfDApIT0obHwwKSl7ZT0tMTtkPTU7YnJlYWt9aWYoKGt8MCk9PTIpe2U9LTE7ZD01O2JyZWFrfWVsc2UgaWYoKGt8MCkhPTEpe2Q9NDticmVha319aWYoKGR8MCk9PTQpe2w9KChfYShjW2E+PjJdfDApfDApIT0wKTw8MzE+PjMxO2k9YjtyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTUpe2k9YjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIHhmKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MDtnPWk7aWYoKGFbYis0ND4+MF18MCkhPTApe2g9WmIoZXwwLDEsZnwwLGNbYiszMj4+Ml18MCl8MDtpPWc7cmV0dXJuIGh8MH1pZigoZnwwKT4wKXtoPTB9ZWxzZXtoPTA7aT1nO3JldHVybiBofDB9d2hpbGUoMSl7aWYoKHhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGRbZT4+MF18MCl8MCk9PS0xKXtmPTY7YnJlYWt9aD1oKzF8MDtpZigoaHwwKTwoZnwwKSl7ZT1lKzF8MH1lbHNle2Y9NjticmVha319aWYoKGZ8MCk9PTYpe2k9ZztyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIHlmKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtlPWk7aT1pKzMyfDA7az1lKzE2fDA7cD1lKzh8MDtqPWUrNHwwO2g9ZTtmPShkfDApPT0tMTthOmRve2lmKCFmKXthW3A+PjBdPWQ7aWYoKGFbYis0ND4+MF18MCkhPTApe2lmKChaYihwfDAsMSwxLGNbYiszMj4+Ml18MCl8MCk9PTEpe2JyZWFrfWVsc2V7ZD0tMX1pPWU7cmV0dXJuIGR8MH1jW2o+PjJdPWs7bD1wKzF8MDtuPWIrMzZ8MDtvPWIrNDB8MDtnPWsrOHwwO209aztiPWIrMzJ8MDt3aGlsZSgxKXtxPWNbbj4+Ml18MDtxPXRjW2NbKGNbcT4+Ml18MCkrMTI+PjJdJjMxXShxLGNbbz4+Ml18MCxwLGwsaCxrLGcsail8MDtpZigoY1toPj4yXXwwKT09KHB8MCkpe2Q9LTE7Zz0xMjticmVha31pZigocXwwKT09Myl7Zz03O2JyZWFrfXI9KHF8MCk9PTE7aWYoIShxPj4+MDwyKSl7ZD0tMTtnPTEyO2JyZWFrfXE9KGNbaj4+Ml18MCktbXwwO2lmKChaYihrfDAsMSxxfDAsY1tiPj4yXXwwKXwwKSE9KHF8MCkpe2Q9LTE7Zz0xMjticmVha31pZihyKXtwPXI/Y1toPj4yXXwwOnB9ZWxzZXticmVhayBhfX1pZigoZ3wwKT09Nyl7aWYoKFpiKHB8MCwxLDEsY1tiPj4yXXwwKXwwKT09MSl7YnJlYWt9ZWxzZXtkPS0xfWk9ZTtyZXR1cm4gZHwwfWVsc2UgaWYoKGd8MCk9PTEyKXtpPWU7cmV0dXJuIGR8MH19fXdoaWxlKDApO3I9Zj8wOmQ7aT1lO3JldHVybiByfDB9ZnVuY3Rpb24gemYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNjY0O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEFmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA2NjQ7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gQmYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2c9WWsoY1tkPj4yXXwwLDEzNTIwKXwwO2Y9YiszNnwwO2NbZj4+Ml09ZztkPWIrNDR8MDtjW2Q+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MDtmPWNbZj4+Ml18MDthW2IrNTM+PjBdPShvY1tjWyhjW2Y+PjJdfDApKzI4Pj4yXSYxMjddKGYpfDApJjE7aWYoKGNbZD4+Ml18MCk+OCl7b2soOTU0NCl9ZWxzZXtpPWU7cmV0dXJufX1mdW5jdGlvbiBDZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPUZmKGEsMCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBEZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPUZmKGEsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBFZihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtpPWkrMzJ8MDtqPWUrMTZ8MDtmPWUrNHwwO2w9ZSs4fDA7az1lO2c9Yis1MnwwO209KGFbZz4+MF18MCkhPTA7aWYoKGR8MCk9PS0xKXtpZihtKXttPS0xO2k9ZTtyZXR1cm4gbXwwfW09Y1tiKzQ4Pj4yXXwwO2FbZz4+MF09KG18MCkhPS0xJjE7aT1lO3JldHVybiBtfDB9aD1iKzQ4fDA7YTpkb3tpZihtKXthW2w+PjBdPWNbaD4+Ml07bT1jW2IrMzY+PjJdfDA7az10Y1tjWyhjW20+PjJdfDApKzEyPj4yXSYzMV0obSxjW2IrNDA+PjJdfDAsbCxsKzF8MCxrLGosais4fDAsZil8MDtpZigoa3wwKT09MXwoa3wwKT09Mil7bT0tMTtpPWU7cmV0dXJuIG18MH1lbHNlIGlmKChrfDApPT0zKXthW2o+PjBdPWNbaD4+Ml07Y1tmPj4yXT1qKzF9Yj1iKzMyfDA7d2hpbGUoMSl7az1jW2Y+PjJdfDA7aWYoIShrPj4+MD5qPj4+MCkpe2JyZWFrIGF9bT1rKyAtMXwwO2NbZj4+Ml09bTtpZigoVmEoYVttPj4wXXwwLGNbYj4+Ml18MCl8MCk9PS0xKXtmPS0xO2JyZWFrfX1pPWU7cmV0dXJuIGZ8MH19d2hpbGUoMCk7Y1toPj4yXT1kO2FbZz4+MF09MTttPWQ7aT1lO3JldHVybiBtfDB9ZnVuY3Rpb24gRmYoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7Zj1pO2k9aSszMnwwO2g9ZisxNnwwO2o9Zis4fDA7bj1mKzR8MDttPWY7bz1iKzUyfDA7aWYoKGFbbz4+MF18MCkhPTApe2c9Yis0OHwwO2g9Y1tnPj4yXXwwO2lmKCFlKXt3PWg7aT1mO3JldHVybiB3fDB9Y1tnPj4yXT0tMTthW28+PjBdPTA7dz1oO2k9ZjtyZXR1cm4gd3wwfXA9Y1tiKzQ0Pj4yXXwwO3A9KHB8MCk+MT9wOjE7YTpkb3tpZigocHwwKT4wKXtyPWIrMzJ8MDtvPTA7d2hpbGUoMSl7cT1UYihjW3I+PjJdfDApfDA7aWYoKHF8MCk9PS0xKXtrPS0xO2JyZWFrfWFbaCtvPj4wXT1xO289bysxfDA7aWYoKG98MCk+PShwfDApKXticmVhayBhfX1pPWY7cmV0dXJuIGt8MH19d2hpbGUoMCk7Yjpkb3tpZigoYVtiKzUzPj4wXXwwKT09MCl7cj1iKzQwfDA7cz1iKzM2fDA7bz1qKzF8MDtxPWIrMzJ8MDt3aGlsZSgxKXt3PWNbcj4+Ml18MDt2PXc7dT1jW3Y+PjJdfDA7dj1jW3YrND4+Ml18MDt4PWNbcz4+Ml18MDt0PWgrcHwwO3c9dGNbY1soY1t4Pj4yXXwwKSsxNj4+Ml0mMzFdKHgsdyxoLHQsbixqLG8sbSl8MDtpZigod3wwKT09Mil7az0tMTttPTIzO2JyZWFrfWVsc2UgaWYoKHd8MCk9PTMpe209MTQ7YnJlYWt9ZWxzZSBpZigod3wwKSE9MSl7bD1wO2JyZWFrIGJ9eD1jW3I+PjJdfDA7Y1t4Pj4yXT11O2NbeCs0Pj4yXT12O2lmKChwfDApPT04KXtrPS0xO209MjM7YnJlYWt9dT1UYihjW3E+PjJdfDApfDA7aWYoKHV8MCk9PS0xKXtrPS0xO209MjM7YnJlYWt9YVt0Pj4wXT11O3A9cCsxfDB9aWYoKG18MCk9PTE0KXthW2o+PjBdPWFbaD4+MF18MDtsPXA7YnJlYWt9ZWxzZSBpZigobXwwKT09MjMpe2k9ZjtyZXR1cm4ga3wwfX1lbHNle2Fbaj4+MF09YVtoPj4wXXwwO2w9cH19d2hpbGUoMCk7ZG97aWYoIWUpe2U9YiszMnwwO3doaWxlKDEpe2lmKChsfDApPD0wKXttPTIxO2JyZWFrfWw9bCsgLTF8MDtpZigoVmEoZFtoK2w+PjBdfDAsY1tlPj4yXXwwKXwwKT09LTEpe2s9LTE7bT0yMzticmVha319aWYoKG18MCk9PTIxKXtnPWFbaj4+MF18MDticmVha31lbHNlIGlmKChtfDApPT0yMyl7aT1mO3JldHVybiBrfDB9fWVsc2V7Zz1hW2o+PjBdfDA7Y1tiKzQ4Pj4yXT1nJjI1NX19d2hpbGUoMCk7eD1nJjI1NTtpPWY7cmV0dXJuIHh8MH1mdW5jdGlvbiBHZigpe3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2I9aTtpPWkrMTZ8MDtkPWI7Zj1jW3I+PjJdfDA7Y1syMjQ0XT0xMDY2NDtYayg4OTgwfDApO2NbODk4ND4+Ml09MDtjWzg5ODg+PjJdPTA7Y1s4OTkyPj4yXT0wO2NbODk5Nj4+Ml09MDtjWzllMz4+Ml09MDtjWzkwMDQ+PjJdPTA7Y1syMjQ0XT05NzA0O2NbOTAwOD4+Ml09ZjtjWzkwMTY+PjJdPTkwMzI7Y1s5MDI0Pj4yXT0tMTthWzkwMjg+PjBdPTA7bj1jWzg5ODA+PjJdfDA7bT1uKzR8MDtjW20+PjJdPShjW20+PjJdfDApKzE7aWYoISgoY1szMzgwXXwwKT09LTEpKXtjW2Q+PjJdPTEzNTIwO2NbZCs0Pj4yXT0yMDg7Y1tkKzg+PjJdPTA7Y2coMTM1MjAsZCl9bD0oY1sxMzUyND4+Ml18MCkrIC0xfDA7az1jW24rOD4+Ml18MDtpZigoY1tuKzEyPj4yXXwwKS1rPj4yPj4+MD5sPj4+MD8oaj1jW2srKGw8PDIpPj4yXXwwLChqfDApIT0wKTowKXtjWzkwMTI+PjJdPWo7Y1s5MDIwPj4yXT1vY1tjWyhjW2o+PjJdfDApKzI0Pj4yXSYxMjddKGopfDA7bD1jWzkwMTI+PjJdfDA7YVs5MDI5Pj4wXT0ob2NbY1soY1tsPj4yXXwwKSsyOD4+Ml0mMTI3XShsKXwwKSYxO2lmKChjWzkwMjA+PjJdfDApPjgpe29rKDk1NDQpfWw9Y1ttPj4yXXwwO2NbbT4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKX1jWzIwNjZdPTEwNzk2O2NbODI3Mj4+Ml09MTA4MTY7Y1s4MjY4Pj4yXT0wO2NbODI5Nj4+Ml09ODk3NjtjWzgyODg+PjJdPTA7Y1s4MjkyPj4yXT0wO2NbODI3Nj4+Ml09NDA5ODtjWzgyODQ+PjJdPTA7Y1s4MjgwPj4yXT02O2s9ODMwNHwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4MzAwfDApO2NbODM0ND4+Ml09MDtjWzgzNDg+PjJdPS0xO2o9Y1tzPj4yXXwwO2NbMjI3MF09MTA2NjQ7WGsoOTA4NHwwKTtjWzkwODg+PjJdPTA7Y1s5MDkyPj4yXT0wO2NbOTA5Nj4+Ml09MDtjWzkxMDA+PjJdPTA7Y1s5MTA0Pj4yXT0wO2NbOTEwOD4+Ml09MDtjWzIyNzBdPTk1OTI7Y1s5MTEyPj4yXT1qO2s9Y1s5MDg0Pj4yXXwwO2w9ays0fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO2lmKCEoKGNbMzM4MF18MCk9PS0xKSl7Y1tkPj4yXT0xMzUyMDtjW2QrND4+Ml09MjA4O2NbZCs4Pj4yXT0wO2NnKDEzNTIwLGQpfW09KGNbMTM1MjQ+PjJdfDApKyAtMXwwO249Y1trKzg+PjJdfDA7aWYoKGNbaysxMj4+Ml18MCktbj4+Mj4+PjA+bT4+PjA/KGg9Y1tuKyhtPDwyKT4+Ml18MCwoaHwwKSE9MCk6MCl7bj1jW2w+PjJdfDA7Y1tsPj4yXT1uKyAtMTtpZigobnwwKT09MCl7bGNbY1soY1trPj4yXXwwKSs4Pj4yXSYyNTVdKGspfWNbOTExNj4+Ml09aDtjWzkxMjA+PjJdPTkwNDA7YVs5MTI0Pj4wXT0ob2NbY1soY1toPj4yXXwwKSsyOD4+Ml0mMTI3XShoKXwwKSYxO2NbMjA4OF09MTA4NzY7Y1s4MzU2Pj4yXT0xMDg5NjtjWzgzODA+PjJdPTkwODA7Y1s4MzcyPj4yXT0wO2NbODM3Nj4+Ml09MDtjWzgzNjA+PjJdPTQwOTg7Y1s4MzY4Pj4yXT0wO2NbODM2ND4+Ml09NjtrPTgzODh8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODM4NHwwKTtjWzg0Mjg+PjJdPTA7Y1s4NDMyPj4yXT0tMTtoPWNbcT4+Ml18MDtjWzIyODJdPTEwNjY0O1hrKDkxMzJ8MCk7Y1s5MTM2Pj4yXT0wO2NbOTE0MD4+Ml09MDtjWzkxNDQ+PjJdPTA7Y1s5MTQ4Pj4yXT0wO2NbOTE1Mj4+Ml09MDtjWzkxNTY+PjJdPTA7Y1syMjgyXT05NTkyO2NbOTE2MD4+Ml09aDttPWNbOTEzMj4+Ml18MDtuPW0rNHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtpZighKChjWzMzODBdfDApPT0tMSkpe2NbZD4+Ml09MTM1MjA7Y1tkKzQ+PjJdPTIwODtjW2QrOD4+Ml09MDtjZygxMzUyMCxkKX1sPShjWzEzNTI0Pj4yXXwwKSsgLTF8MDtrPWNbbSs4Pj4yXXwwO2lmKChjW20rMTI+PjJdfDApLWs+PjI+Pj4wPmw+Pj4wPyhnPWNbaysobDw8Mik+PjJdfDAsKGd8MCkhPTApOjApe2w9Y1tuPj4yXXwwO2Nbbj4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbbT4+Ml18MCkrOD4+Ml0mMjU1XShtKX1jWzkxNjQ+PjJdPWc7Y1s5MTY4Pj4yXT05MDQ4O2FbOTE3Mj4+MF09KG9jW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjEyN10oZyl8MCkmMTtjWzIxMTBdPTEwODc2O2NbODQ0ND4+Ml09MTA4OTY7Y1s4NDY4Pj4yXT05MTI4O2NbODQ2MD4+Ml09MDtjWzg0NjQ+PjJdPTA7Y1s4NDQ4Pj4yXT00MDk4O2NbODQ1Nj4+Ml09MDtjWzg0NTI+PjJdPTY7az04NDc2fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg0NzJ8MCk7Y1s4NTE2Pj4yXT0wO2NbODUyMD4+Ml09LTE7az1jWyhjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg0NjQ+PjJdfDA7Y1syMTMyXT0xMDg3NjtjWzg1MzI+PjJdPTEwODk2O2NbODU1Nj4+Ml09aztjWzg1NDg+PjJdPShrfDApPT0wJjE7Y1s4NTUyPj4yXT0wO2NbODUzNj4+Ml09NDA5ODtjWzg1NDQ+PjJdPTA7Y1s4NTQwPj4yXT02O2s9ODU2NHwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4NTYwfDApO2NbODYwND4+Ml09MDtjWzg2MDg+PjJdPS0xO2NbKGNbKGNbMjA2Nl18MCkrIC0xMj4+Ml18MCkrODMzNj4+Ml09ODM1MjtnPShjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg0NDR8MDtjW2c+PjJdPWNbZz4+Ml18ODE5MjtjWyhjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg1MTI+PjJdPTgzNTI7Y1syMjk0XT0xMDcyODtYayg5MTgwfDApO2NbOTE4ND4+Ml09MDtjWzkxODg+PjJdPTA7Y1s5MTkyPj4yXT0wO2NbOTE5Nj4+Ml09MDtjWzkyMDA+PjJdPTA7Y1s5MjA0Pj4yXT0wO2NbMjI5NF09OTQ0ODtjWzkyMDg+PjJdPWY7Y1s5MjE2Pj4yXT05MDU2O2NbOTIyND4+Ml09LTE7YVs5MjI4Pj4wXT0wO2Y9Y1s5MTgwPj4yXXwwO2c9Zis0fDA7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxO2lmKCEoKGNbMzM4Ml18MCk9PS0xKSl7Y1tkPj4yXT0xMzUyODtjW2QrND4+Ml09MjA4O2NbZCs4Pj4yXT0wO2NnKDEzNTI4LGQpfWs9KGNbMTM1MzI+PjJdfDApKyAtMXwwO2w9Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbD4+Mj4+PjA+az4+PjA/KGU9Y1tsKyhrPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7Y1s5MjEyPj4yXT1lO2NbOTIyMD4+Ml09b2NbY1soY1tlPj4yXXwwKSsyND4+Ml0mMTI3XShlKXwwO249Y1s5MjEyPj4yXXwwO2FbOTIyOT4+MF09KG9jW2NbKGNbbj4+Ml18MCkrMjg+PjJdJjEyN10obil8MCkmMTtpZigoY1s5MjIwPj4yXXwwKT44KXtvayg5NTQ0KX1uPWNbZz4+Ml18MDtjW2c+PjJdPW4rIC0xO2lmKChufDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9Y1syMTU0XT0xMDgzNjtjWzg2MjQ+PjJdPTEwODU2O2NbODYyMD4+Ml09MDtjWzg2NDg+PjJdPTkxNzY7Y1s4NjQwPj4yXT0wO2NbODY0ND4+Ml09MDtjWzg2Mjg+PjJdPTQwOTg7Y1s4NjM2Pj4yXT0wO2NbODYzMj4+Ml09NjtrPTg2NTZ8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODY1MnwwKTtjWzg2OTY+PjJdPTA7Y1s4NzAwPj4yXT0tMTtjWzIzMDhdPTEwNzI4O1hrKDkyMzZ8MCk7Y1s5MjQwPj4yXT0wO2NbOTI0ND4+Ml09MDtjWzkyNDg+PjJdPTA7Y1s5MjUyPj4yXT0wO2NbOTI1Nj4+Ml09MDtjWzkyNjA+PjJdPTA7Y1syMzA4XT05MzM2O2NbOTI2ND4+Ml09ajtlPWNbOTIzNj4+Ml18MDtmPWUrNHwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMTtpZighKChjWzMzODJdfDApPT0tMSkpe2NbZD4+Ml09MTM1Mjg7Y1tkKzQ+PjJdPTIwODtjW2QrOD4+Ml09MDtjZygxMzUyOCxkKX1nPShjWzEzNTMyPj4yXXwwKSsgLTF8MDtqPWNbZSs4Pj4yXXwwO2Rve2lmKChjW2UrMTI+PjJdfDApLWo+PjI+Pj4wPmc+Pj4wKXtnPWNbaisoZzw8Mik+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfW49Y1tmPj4yXXwwO2NbZj4+Ml09bisgLTE7aWYoKG58MCk9PTApe2xjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKX1jWzkyNjg+PjJdPWc7Y1s5MjcyPj4yXT05MDY0O2FbOTI3Nj4+MF09KG9jW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjEyN10oZyl8MCkmMTtjWzIxNzZdPTEwOTE2O2NbODcwOD4+Ml09MTA5MzY7Y1s4NzMyPj4yXT05MjMyO2NbODcyND4+Ml09MDtjWzg3Mjg+PjJdPTA7Y1s4NzEyPj4yXT00MDk4O2NbODcyMD4+Ml09MDtjWzg3MTY+PjJdPTY7az04NzQwfDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg3MzZ8MCk7Y1s4NzgwPj4yXT0wO2NbODc4ND4+Ml09LTE7Y1syMzIwXT0xMDcyODtYayg5Mjg0fDApO2NbOTI4OD4+Ml09MDtjWzkyOTI+PjJdPTA7Y1s5Mjk2Pj4yXT0wO2NbOTMwMD4+Ml09MDtjWzkzMDQ+PjJdPTA7Y1s5MzA4Pj4yXT0wO2NbMjMyMF09OTMzNjtjWzkzMTI+PjJdPWg7Zj1jWzkyODQ+PjJdfDA7ZT1mKzR8MDtjW2U+PjJdPShjW2U+PjJdfDApKzE7aWYoISgoY1szMzgyXXwwKT09LTEpKXtjW2Q+PjJdPTEzNTI4O2NbZCs0Pj4yXT0yMDg7Y1tkKzg+PjJdPTA7Y2coMTM1MjgsZCl9ZD0oY1sxMzUzMj4+Ml18MCkrIC0xfDA7Zz1jW2YrOD4+Ml18MDtkb3tpZigoY1tmKzEyPj4yXXwwKS1nPj4yPj4+MD5kPj4+MCl7ZD1jW2crKGQ8PDIpPj4yXXwwO2lmKChkfDApPT0wKXticmVha31uPWNbZT4+Ml18MDtjW2U+PjJdPW4rIC0xO2lmKChufDApIT0wKXtjWzkzMTY+PjJdPWQ7Y1s5MzIwPj4yXT05MDcyO2s9Y1tkPj4yXXwwO2s9aysyOHwwO2s9Y1trPj4yXXwwO2s9b2NbayYxMjddKGQpfDA7az1rJjE7YVs5MzI0Pj4wXT1rO2NbMjE5OF09MTA5MTY7Y1s4Nzk2Pj4yXT0xMDkzNjtjWzg4MjA+PjJdPTkyODA7Y1s4ODEyPj4yXT0wO2NbODgxNj4+Ml09MDtjWzg4MDA+PjJdPTQwOTg7Y1s4ODA4Pj4yXT0wO2NbODgwND4+Ml09NjtrPTg4Mjh8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODgyNHwwKTtjWzg4Njg+PjJdPTA7Y1s4ODcyPj4yXT0tMTtrPWNbMjE5OF18MDtrPWsrIC0xMnwwO2s9Y1trPj4yXXwwO2s9aysyNHwwO2s9ODc5MitrfDA7az1jW2s+PjJdfDA7Y1syMjIwXT0xMDkxNjtjWzg4ODQ+PjJdPTEwOTM2O2NbODkwOD4+Ml09aztrPShrfDApPT0wO2s9ayYxO2NbODkwMD4+Ml09aztjWzg5MDQ+PjJdPTA7Y1s4ODg4Pj4yXT00MDk4O2NbODg5Nj4+Ml09MDtjWzg4OTI+PjJdPTY7az04OTE2fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg5MTJ8MCk7Y1s4OTU2Pj4yXT0wO2NbODk2MD4+Ml09LTE7bj1jWzIxNTRdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNzJ8MDtuPTg2MTYrbnwwO2Nbbj4+Ml09ODcwNDtuPWNbMjE5OF18MDtuPW4rIC0xMnwwO249Y1tuPj4yXXwwO249bis0fDA7bj04NzkyK258MDttPWNbbj4+Ml18MDttPW18ODE5MjtjW24+PjJdPW07bj1jWzIxOThdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNzJ8MDtuPTg3OTIrbnwwO2Nbbj4+Ml09ODcwNDtjYygyMTIsODk2OCxwfDApfDA7aT1iO3JldHVybn1sY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZik7Y1s5MzE2Pj4yXT1kO2NbOTMyMD4+Ml09OTA3MjtrPWNbZD4+Ml18MDtrPWsrMjh8MDtrPWNbaz4+Ml18MDtrPW9jW2smMTI3XShkKXwwO2s9ayYxO2FbOTMyND4+MF09aztjWzIxOThdPTEwOTE2O2NbODc5Nj4+Ml09MTA5MzY7Y1s4ODIwPj4yXT05MjgwO2NbODgxMj4+Ml09MDtjWzg4MTY+PjJdPTA7Y1s4ODAwPj4yXT00MDk4O2NbODgwOD4+Ml09MDtjWzg4MDQ+PjJdPTY7az04ODI4fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg4MjR8MCk7Y1s4ODY4Pj4yXT0wO2NbODg3Mj4+Ml09LTE7az1jWzIxOThdfDA7az1rKyAtMTJ8MDtrPWNbaz4+Ml18MDtrPWsrMjR8MDtrPTg3OTIra3wwO2s9Y1trPj4yXXwwO2NbMjIyMF09MTA5MTY7Y1s4ODg0Pj4yXT0xMDkzNjtjWzg5MDg+PjJdPWs7az0oa3wwKT09MDtrPWsmMTtjWzg5MDA+PjJdPWs7Y1s4OTA0Pj4yXT0wO2NbODg4OD4+Ml09NDA5ODtjWzg4OTY+PjJdPTA7Y1s4ODkyPj4yXT02O2s9ODkxNnwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4OTEyfDApO2NbODk1Nj4+Ml09MDtjWzg5NjA+PjJdPS0xO249Y1syMTU0XXwwO249bisgLTEyfDA7bj1jW24+PjJdfDA7bj1uKzcyfDA7bj04NjE2K258MDtjW24+PjJdPTg3MDQ7bj1jWzIxOThdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNHwwO249ODc5MitufDA7bT1jW24+PjJdfDA7bT1tfDgxOTI7Y1tuPj4yXT1tO249Y1syMTk4XXwwO249bisgLTEyfDA7bj1jW24+PjJdfDA7bj1uKzcyfDA7bj04NzkyK258MDtjW24+PjJdPTg3MDQ7Y2MoMjEyLDg5NjgscHwwKXwwO2k9YjtyZXR1cm59fXdoaWxlKDApO249WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtuPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBIZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5MDQ7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWVsc2V7UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufX1mdW5jdGlvbiBJZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5MDQ7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gSmYoYSl7YT1hfDA7cmV0dXJuIGNbYSs0Pj4yXXwwfWZ1bmN0aW9uIEtmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZWxzZXtSYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59fWZ1bmN0aW9uIExmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBNZihhKXthPWF8MDtyZXR1cm4gY1thKzQ+PjJdfDB9ZnVuY3Rpb24gTmYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTA0O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1lbHNle1JiKGF8MCk7dm4oYSk7aT1iO3JldHVybn19ZnVuY3Rpb24gT2YoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO2NbYT4+Ml09ZDtjW2ErND4+Ml09YjtyZXR1cm59ZnVuY3Rpb24gUGYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWU7cWNbY1soY1thPj4yXXwwKSsxMj4+Ml0mMzFdKGYsYSxiKTtpZigoY1tmKzQ+PjJdfDApIT0oY1tkKzQ+PjJdfDApKXthPTA7aT1lO3JldHVybiBhfDB9YT0oY1tmPj4yXXwwKT09KGNbZD4+Ml18MCk7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gUWYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT1pO2lmKChjW2IrND4+Ml18MCkhPShhfDApKXthPTA7aT1lO3JldHVybiBhfDB9YT0oY1tiPj4yXXwwKT09KGR8MCk7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gUmYoYSl7YT1hfDA7cmV0dXJuIDEwMDgwfWZ1bmN0aW9uIFNmKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2Q9aTtlPU5iKGV8MCl8MDtmPUpuKGV8MCl8MDtpZihmPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWlmKGY+Pj4wPDExKXthW2I+PjBdPWY8PDE7aj1iKzF8MDtMbihqfDAsZXwwLGZ8MCl8MDtqPWorZnwwO2Fbaj4+MF09MDtpPWQ7cmV0dXJufWc9ZisxNiYtMTY7aD0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aj11bihoKXwwO2lmKChqfDApIT0wKXtoPTExO2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXtoPTk7YnJlYWt9c2NbaiYzMV0oKX1pZigoaHwwKT09OSl7aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9ZWxzZSBpZigoaHwwKT09MTEpe2NbYis4Pj4yXT1qO2NbYj4+Ml09Z3wxO2NbYis0Pj4yXT1mO0xuKGp8MCxlfDAsZnwwKXwwO2o9aitmfDA7YVtqPj4wXT0wO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIFRmKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBVZihhKXthPWF8MDtyZXR1cm4gMTAxMDR9ZnVuY3Rpb24gVmYoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7ZD1pO2U9TmIoZXwwKXwwO2Y9Sm4oZXwwKXwwO2lmKGY+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9aWYoZj4+PjA8MTEpe2FbYj4+MF09Zjw8MTtqPWIrMXwwO0xuKGp8MCxlfDAsZnwwKXwwO2o9aitmfDA7YVtqPj4wXT0wO2k9ZDtyZXR1cm59Zz1mKzE2Ji0xNjtoPShnfDApPT0wPzE6Zzt3aGlsZSgxKXtqPXVuKGgpfDA7aWYoKGp8MCkhPTApe2g9MTE7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2g9OTticmVha31zY1tqJjMxXSgpfWlmKChofDApPT05KXtqPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX1lbHNlIGlmKChofDApPT0xMSl7Y1tiKzg+PjJdPWo7Y1tiPj4yXT1nfDE7Y1tiKzQ+PjJdPWY7TG4oanwwLGV8MCxmfDApfDA7aj1qK2Z8MDthW2o+PjBdPTA7aT1kO3JldHVybn19ZnVuY3Rpb24gV2YoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Q9aTtpZigoYVsxMDA5Nl18MCk9PTA/KFFhKDEwMDk2KXwwKSE9MDowKXtjWzI1MjJdPTEwMjg4OyRhKDEwMDk2KX1jW2I+PjJdPWU7Y1tiKzQ+PjJdPTEwMDg4O2k9ZDtyZXR1cm59ZnVuY3Rpb24gWGYoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFlmKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO2c9aTtpPWkrNDh8MDtvPWcrMjR8MDtsPWcrMTJ8MDtoPWc7cD1KbihmfDApfDA7aWYocD4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1kb3tpZihwPj4+MDwxMSl7YVtoPj4wXT1wPDwxO209aDtxPWgrMXwwfWVsc2V7bT1wKzE2Ji0xNjtyPShtfDApPT0wPzE6bTt3aGlsZSgxKXtxPXVuKHIpfDA7aWYoKHF8MCkhPTApe2o9MTE7YnJlYWt9cT1jWzU2NjZdfDA7Y1s1NjY2XT1xKzA7aWYoKHF8MCk9PTApe2JyZWFrfXNjW3EmMzFdKCl9aWYoKGp8MCk9PTExKXtjW2grOD4+Ml09cTtjW2g+PjJdPW18MTtjW2grND4+Ml09cDttPWg7YnJlYWt9cj1YYSg0KXwwO2Nbcj4+Ml09MjI2ODA7d2IocnwwLDIyNzI4LDIwNil9fXdoaWxlKDApO0xuKHF8MCxmfDAscHwwKXwwO2FbcStwPj4wXT0wO2lmKChkfDApIT0wKXtwPWFbbT4+MF18MDtpZigocCYxKT09MCl7cD0ocCYyNTUpPj4+MX1lbHNle3A9Y1toKzQ+PjJdfDB9aWYoKHB8MCkhPTApe2pnKGgsMTAxMjgsMil9cWNbY1soY1tlPj4yXXwwKSsyND4+Ml0mMzFdKG8sZSxkKTtmPWFbbz4+MF18MDtpZigoZiYxKT09MCl7cD1vKzF8MDtmPShmJjI1NSk+Pj4xfWVsc2V7cD1jW28rOD4+Ml18MDtmPWNbbys0Pj4yXXwwfWpnKGgscCxmKTtpZighKChhW28+PjBdJjEpPT0wKT8obj1jW28rOD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9fWNbbCswPj4yXT1jW20rMD4+Ml07Y1tsKzQ+PjJdPWNbbSs0Pj4yXTtjW2wrOD4+Ml09Y1ttKzg+PjJdO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2NbYj4+Ml09OTkyODtuPWIrNHwwO2lmKChhW2w+PjBdJjEpPT0wKXtmPWwrMXwwfWVsc2V7Zj1jW2wrOD4+Ml18MH1wPUpuKGZ8MCl8MDtvPXArMTN8MDtvPShvfDApPT0wPzE6bzt3aGlsZSgxKXtxPXVuKG8pfDA7aWYoKHF8MCkhPTApe2JyZWFrfXE9Y1s1NjY2XXwwO2NbNTY2Nl09cSswO2lmKChxfDApPT0wKXtqPTMzO2JyZWFrfXNjW3EmMzFdKCl9aWYoKGp8MCk9PTMzKXtyPVhhKDQpfDA7Y1tyPj4yXT0yMjY4MDt3YihyfDAsMjI3MjgsMjA2KX1jW3ErND4+Ml09cDtjW3E+PjJdPXA7cj1xKzEyfDA7Y1tuPj4yXT1yO2NbcSs4Pj4yXT0wO0xuKHJ8MCxmfDAscCsxfDApfDA7aWYoISgoYVtsPj4wXSYxKT09MCk/KGs9Y1tsKzg+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKChhW20+PjBdJjEpPT0wKXtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn1oPWNbaCs4Pj4yXXwwO2lmKChofDApPT0wKXtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn12bihoKTtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn1mdW5jdGlvbiBaZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIF9mKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiAkZihhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBhZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn0KCgoKZnVuY3Rpb24gYmcoYSl7YT1hfDA7dmFyIGI9MDtiPWk7QmIoYXwwKXwwO2k9YjtyZXR1cm59ZnVuY3Rpb24gY2coYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pOyRiKDEwNTY4KXwwO2lmKChjW2E+PjJdfDApPT0xKXtkb3tHYSgxMDU5MiwxMDU2OCl8MH13aGlsZSgoY1thPj4yXXwwKT09MSl9aWYoKGNbYT4+Ml18MCkhPTApe0NiKDEwNTY4KXwwO2k9ZTtyZXR1cm59Y1thPj4yXT0xO0NiKDEwNTY4KXwwO2c9Yis0fDA7Zj1kW2c+PjBdfGRbZysxPj4wXTw8OHxkW2crMj4+MF08PDE2fGRbZyszPj4wXTw8MjQ7Zz1nKzR8MDtnPWRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNDtiPShjW2I+PjJdfDApKyhnPj4xKXwwO2lmKChnJjF8MCkhPTApe2Y9Y1soY1tiPj4yXXwwKStmPj4yXXwwfWxjW2YmMjU1XShiKTskYigxMDU2OCl8MDtjW2E+PjJdPS0xO0NiKDEwNTY4KXwwO0ViKDEwNTkyKXwwO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZGcoKXt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9WGEoOCl8MDtjW2I+PjJdPTk5MDQ7d2hpbGUoMSl7ZT11bigyNSl8MDtpZigoZXwwKSE9MCl7ZD03O2JyZWFrfWU9Y1s1NjY2XXwwO2NbNTY2Nl09ZSswO2lmKChlfDApPT0wKXticmVha31zY1tlJjMxXSgpfWlmKChkfDApPT03KXtjW2UrND4+Ml09MTI7Y1tlPj4yXT0xMjtmPWUrMTJ8MDtjW2IrND4+Ml09ZjtjW2UrOD4+Ml09MDtmPWYrMHwwO2U9MTA2NDB8MDtkPWYrMTN8MDtkb3thW2Y+PjBdPWFbZT4+MF18MDtmPWYrMXwwO2U9ZSsxfDB9d2hpbGUoKGZ8MCk8KGR8MCkpO2NbYj4+Ml09OTk4NDt3YihifDAsMTAwMjQsMTA0KX1mPVhhKDQpfDA7Y1tmPj4yXT0yMjY4MDt3YihmfDAsMjI3MjgsMjA2KX1mdW5jdGlvbiBlZyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aWYoZT4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1pZihlPj4+MDwxMSl7YVtiPj4wXT1lPDwxO2o9YisxfDA7TG4oanwwLGR8MCxlfDApfDA7aj1qK2V8MDthW2o+PjBdPTA7aT1mO3JldHVybn1nPWUrMTYmLTE2O2g9KGd8MCk9PTA/MTpnO3doaWxlKDEpe2o9dW4oaCl8MDtpZigoanwwKSE9MCl7aD0xMTticmVha31qPWNbNTY2Nl18MDtjWzU2NjZdPWorMDtpZigoanwwKT09MCl7aD05O2JyZWFrfXNjW2omMzFdKCl9aWYoKGh8MCk9PTkpe2o9WGEoNCl8MDtjW2o+PjJdPTIyNjgwO3diKGp8MCwyMjcyOCwyMDYpfWVsc2UgaWYoKGh8MCk9PTExKXtjW2IrOD4+Ml09ajtjW2I+PjJdPWd8MTtjW2IrND4+Ml09ZTtMbihqfDAsZHwwLGV8MCl8MDtqPWorZXwwO2Fbaj4+MF09MDtpPWY7cmV0dXJufX1mdW5jdGlvbiBmZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aWYoISgoYVtiPj4wXSYxKT09MCk/KGU9Y1tiKzg+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWk9ZDtyZXR1cm59ZnVuY3Rpb24gZ2coYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtmPWk7ZT1KbihkfDApfDA7aD1hW2I+PjBdfDA7aWYoKGgmMSk9PTApe2c9MTB9ZWxzZXtnPWNbYj4+Ml18MDtoPWcmMjU1O2c9KGcmLTIpKyAtMXwwfWo9KGgmMSk9PTA7aWYoZz4+PjA8ZT4+PjApe2lmKGope2g9KGgmMjU1KT4+PjF9ZWxzZXtoPWNbYis0Pj4yXXwwfWtnKGIsZyxlLWd8MCxoLDAsaCxlLGQpO2k9ZjtyZXR1cm59aWYoail7Zz1iKzF8MH1lbHNle2c9Y1tiKzg+PjJdfDB9TW4oZ3wwLGR8MCxlfDApfDA7YVtnK2U+PjBdPTA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZTw8MTtpPWY7cmV0dXJufWVsc2V7Y1tiKzQ+PjJdPWU7aT1mO3JldHVybn19ZnVuY3Rpb24gaGcoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpZigoZHwwKT09MCl7aT1lO3JldHVybn1oPWFbYj4+MF18MDtpZigoaCYxKT09MCl7Zz0xMH1lbHNle2g9Y1tiPj4yXXwwO2c9KGgmLTIpKyAtMXwwO2g9aCYyNTV9aWYoKGgmMSk9PTApe2Y9KGgmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKChnLWZ8MCk+Pj4wPGQ+Pj4wKXtsZyhiLGcsZC1nK2Z8MCxmLGYsMCk7aD1hW2I+PjBdfDB9aWYoKGgmMSk9PTApe2c9YisxfDB9ZWxzZXtnPWNbYis4Pj4yXXwwfU5uKGcrZnwwLDAsZHwwKXwwO2Q9ZitkfDA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZDw8MX1lbHNle2NbYis0Pj4yXT1kfWFbZytkPj4wXT0wO2k9ZTtyZXR1cm59ZnVuY3Rpb24gaWcoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZD1pO2g9YVtiPj4wXXwwO2lmKChoJjEpPT0wKXtsPTEwfWVsc2V7aD1jW2I+PjJdfDA7bD0oaCYtMikrIC0xfDA7aD1oJjI1NX1qPShoJjEpPT0wO2lmKGope2Y9KGgmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKGY+Pj4wPDExKXtlPTEwfWVsc2V7ZT0oZisxNiYtMTYpKyAtMXwwfWlmKChlfDApPT0obHwwKSl7aT1kO3JldHVybn1kb3tpZigoZXwwKT09MTApe2s9YisxfDA7Zz1jW2IrOD4+Ml18MDtpZihqKXtMbihrfDAsZ3wwLCgoaCYyNTUpPj4+MSkrMXwwKXwwO2g9aztrPTA7aj1nO2c9Mjd9ZWxzZXtoPWs7az0wO2o9ZztnPTI1fX1lbHNle2s9ZSsxfDA7az0oa3wwKT09MD8xOms7YTpkb3tpZihlPj4+MD5sPj4+MCl7d2hpbGUoMSl7bD11bihrKXwwO2lmKChsfDApIT0wKXticmVhayBhfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXticmVha31zY1tsJjMxXSgpfWw9WGEoNCl8MDtjW2w+PjJdPTIyNjgwO3diKGx8MCwyMjcyOCwyMDYpfWVsc2V7d2hpbGUoMSl7bD11bihrKXwwO2lmKChsfDApIT0wKXticmVhayBhfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXticmVha31zY1tsJjMxXSgpfWw9WGEoNCl8MDtjW2w+PjJdPTIyNjgwO3diKGx8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihqKXtMbihsfDAsYisxfDAsKChoJjI1NSk+Pj4xKSsxfDApfDA7aD1sO2JyZWFrfWVsc2V7aD1sO2s9MTtqPWNbYis4Pj4yXXwwO2c9MjU7YnJlYWt9fX13aGlsZSgwKTtpZigoZ3wwKT09MjUpe0xuKGh8MCxqfDAsKGNbYis0Pj4yXXwwKSsxfDApfDA7Zz0yN31kb3tpZigoZ3wwKT09Mjcpe2lmKChqfDApPT0wKXtpZihrKXticmVha319ZWxzZXt2bihqKTtpZihrKXticmVha319YVtiPj4wXT1mPDwxO2k9ZDtyZXR1cm59fXdoaWxlKDApO2NbYj4+Ml09ZSsxfDE7Y1tiKzQ+PjJdPWY7Y1tiKzg+PjJdPWg7aT1kO3JldHVybn1mdW5jdGlvbiBqZyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aj1hW2I+PjBdfDA7aWYoKGomMSk9PTApe2c9MTB9ZWxzZXtqPWNbYj4+Ml18MDtnPShqJi0yKSsgLTF8MDtqPWomMjU1fWg9KGomMSk9PTA7aWYoaCl7aj0oaiYyNTUpPj4+MX1lbHNle2o9Y1tiKzQ+PjJdfDB9aWYoKGctanwwKT4+PjA8ZT4+PjApe2tnKGIsZyxlLWcranwwLGosaiwwLGUsZCk7aT1mO3JldHVybn1pZigoZXwwKT09MCl7aT1mO3JldHVybn1pZihoKXtnPWIrMXwwfWVsc2V7Zz1jW2IrOD4+Ml18MH1MbihnK2p8MCxkfDAsZXwwKXwwO2U9aitlfDA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZTw8MX1lbHNle2NbYis0Pj4yXT1lfWFbZytlPj4wXT0wO2k9ZjtyZXR1cm59ZnVuY3Rpb24ga2coYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MDtsPWk7aWYoKC0xOC1kfDApPj4+MDxlPj4+MCl7ZGcoKX1pZigoYVtiPj4wXSYxKT09MCl7bT1iKzF8MH1lbHNle209Y1tiKzg+PjJdfDB9aWYoZD4+PjA8MjE0NzQ4MzYyMyl7ZT1lK2R8MDtwPWQ8PDE7ZT1lPj4+MDxwPj4+MD9wOmU7aWYoZT4+PjA8MTEpe2U9MTF9ZWxzZXtlPWUrMTYmLTE2fX1lbHNle2U9LTE3fW89KGV8MCk9PTA/MTplO3doaWxlKDEpe3A9dW4obyl8MDtpZigocHwwKSE9MCl7YnJlYWt9cD1jWzU2NjZdfDA7Y1s1NjY2XT1wKzA7aWYoKHB8MCk9PTApe249MTM7YnJlYWt9c2NbcCYzMV0oKX1pZigobnwwKT09MTMpe3A9WGEoNCl8MDtjW3A+PjJdPTIyNjgwO3diKHB8MCwyMjcyOCwyMDYpfWlmKChnfDApIT0wKXtMbihwfDAsbXwwLGd8MCl8MH1pZigoanwwKSE9MCl7TG4ocCtnfDAsa3wwLGp8MCl8MH1uPWYtaHwwO2lmKChufDApIT0oZ3wwKSl7TG4ocCsoaitnKXwwLG0rKGgrZyl8MCxuLWd8MCl8MH1pZigoZHwwKT09MTB8KG18MCk9PTApe289Yis4fDA7Y1tvPj4yXT1wO289ZXwxO2NbYj4+Ml09bztvPW4ranwwO2U9Yis0fDA7Y1tlPj4yXT1vO3A9cCtvfDA7YVtwPj4wXT0wO2k9bDtyZXR1cm59dm4obSk7bz1iKzh8MDtjW28+PjJdPXA7bz1lfDE7Y1tiPj4yXT1vO289bitqfDA7ZT1iKzR8MDtjW2U+PjJdPW87cD1wK298MDthW3A+PjBdPTA7aT1sO3JldHVybn1mdW5jdGlvbiBsZyhiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTA7bD1pO2lmKCgtMTctZHwwKT4+PjA8ZT4+PjApe2RnKCl9aWYoKGFbYj4+MF0mMSk9PTApe2s9YisxfDB9ZWxzZXtrPWNbYis4Pj4yXXwwfWlmKGQ+Pj4wPDIxNDc0ODM2MjMpe2U9ZStkfDA7bj1kPDwxO2U9ZT4+PjA8bj4+PjA/bjplO2lmKGU+Pj4wPDExKXtlPTExfWVsc2V7ZT1lKzE2Ji0xNn19ZWxzZXtlPS0xN31tPShlfDApPT0wPzE6ZTt3aGlsZSgxKXtuPXVuKG0pfDA7aWYoKG58MCkhPTApe2JyZWFrfW49Y1s1NjY2XXwwO2NbNTY2Nl09biswO2lmKChufDApPT0wKXtqPTEzO2JyZWFrfXNjW24mMzFdKCl9aWYoKGp8MCk9PTEzKXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1pZigoZ3wwKSE9MCl7TG4obnwwLGt8MCxnfDApfDB9aWYoKGZ8MCkhPShnfDApKXtMbihuKyhoK2cpfDAsaytnfDAsZi1nfDApfDB9aWYoKGR8MCk9PTEwfChrfDApPT0wKXttPWIrOHwwO2NbbT4+Ml09bjtuPWV8MTtjW2I+PjJdPW47aT1sO3JldHVybn12bihrKTttPWIrOHwwO2NbbT4+Ml09bjtuPWV8MTtjW2I+PjJdPW47aT1sO3JldHVybn1mdW5jdGlvbiBtZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aWYoISgoYVtiPj4wXSYxKT09MCk/KGU9Y1tiKzg+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWk9ZDtyZXR1cm59ZnVuY3Rpb24gbmcoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtlPWk7Zj1kO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPT0wKXticmVha31lbHNle2Y9Zis0fDB9fWs9ZDtqPWYta3wwO2Y9aj4+MjtsPWFbYj4+MF18MDtpZigobCYxKT09MCl7Zz0xfWVsc2V7bD1jW2I+PjJdfDA7Zz0obCYtMikrIC0xfDA7bD1sJjI1NX1pZighKGc+Pj4wPGY+Pj4wKSl7aWYoKGwmMSk9PTApe2c9Yis0fDB9ZWxzZXtnPWNbYis4Pj4yXXwwfWg9KGZ8MCk9PTA7aWYoZy1rPj4yPj4+MDxmPj4+MCl7aWYoIWgpe2g9Zjtkb3toPWgrIC0xfDA7Y1tnKyhoPDwyKT4+Ml09Y1tkKyhoPDwyKT4+Ml19d2hpbGUoKGh8MCkhPTApfX1lbHNle2lmKCFoKXtoPWc7az1mO3doaWxlKDEpe2s9aysgLTF8MDtjW2g+PjJdPWNbZD4+Ml07aWYoKGt8MCk9PTApe2JyZWFrfWVsc2V7ZD1kKzR8MDtoPWgrNHwwfX19fWNbZysoZjw8Mik+PjJdPTA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09aj4+PjE7aT1lO3JldHVybn1lbHNle2NbYis0Pj4yXT1mO2k9ZTtyZXR1cm59fWlmKCgxMDczNzQxODA2LWd8MCk+Pj4wPChmLWd8MCk+Pj4wKXtkZygpfWlmKChsJjEpPT0wKXtqPWIrNHwwfWVsc2V7aj1jW2IrOD4+Ml18MH1pZihnPj4+MDw1MzY4NzA4ODcpe2s9Zzw8MTtrPWY+Pj4wPGs+Pj4wP2s6ZjtpZihrPj4+MDwyKXtrPTJ9ZWxzZXtrPWsrNCYtNH19ZWxzZXtrPTEwNzM3NDE4MDd9bT1rPDwyO209KG18MCk9PTA/MTptO3doaWxlKDEpe2w9dW4obSl8MDtpZigobHwwKSE9MCl7YnJlYWt9bD1jWzU2NjZdfDA7Y1s1NjY2XT1sKzA7aWYoKGx8MCk9PTApe2g9Mjk7YnJlYWt9c2NbbCYzMV0oKX1pZigoaHwwKT09Mjkpe209WGEoNCl8MDtjW20+PjJdPTIyNjgwO3diKG18MCwyMjcyOCwyMDYpfWlmKChmfDApIT0wKXtoPWY7bT1sO3doaWxlKDEpe2g9aCsgLTF8MDtjW20+PjJdPWNbZD4+Ml07aWYoKGh8MCk9PTApe2JyZWFrfWVsc2V7ZD1kKzR8MDttPW0rNHwwfX19aWYoISgoZ3wwKT09MXwoanwwKT09MCkpe3ZuKGopfWNbYis4Pj4yXT1sO2NbYj4+Ml09a3wxO2NbYis0Pj4yXT1mO2NbbCsoZjw8Mik+PjJdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBvZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2Q9aTtnPWFbYj4+MF18MDtpZigoZyYxKT09MCl7az0xfWVsc2V7Zz1jW2I+PjJdfDA7az0oZyYtMikrIC0xfDA7Zz1nJjI1NX1oPShnJjEpPT0wO2lmKGgpe2Y9KGcmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKGY+Pj4wPDIpe2U9MX1lbHNle2U9KGYrNCYtNCkrIC0xfDB9aWYoKGV8MCk9PShrfDApKXtpPWQ7cmV0dXJufWRve2lmKChlfDApPT0xKXtuPWIrNHwwO2w9Y1tiKzg+PjJdfDA7aWYoaCl7aj0wO209MTtoPTI2fWVsc2V7Zz1uO2o9MDttPTE7aD0yNX19ZWxzZXtqPShlPDwyKSs0fDA7aj0oanwwKT09MD8xOmo7YTpkb3tpZihlPj4+MD5rPj4+MCl7d2hpbGUoMSl7bj11bihqKXwwO2lmKChufDApIT0wKXticmVhayBhfWs9Y1s1NjY2XXwwO2NbNTY2Nl09ayswO2lmKChrfDApPT0wKXticmVha31zY1trJjMxXSgpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpfWVsc2V7d2hpbGUoMSl7bj11bihqKXwwO2lmKChufDApIT0wKXticmVhayBhfWs9Y1s1NjY2XXwwO2NbNTY2Nl09ayswO2lmKChrfDApPT0wKXticmVha31zY1trJjMxXSgpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihoKXtqPTE7bD1iKzR8MDttPTA7aD0yNjticmVha31lbHNle2c9bjtqPTE7bD1jW2IrOD4+Ml18MDttPTE7aD0yNTticmVha319fXdoaWxlKDApO2lmKChofDApPT0yNSl7az1jW2IrND4+Ml18MH1lbHNlIGlmKChofDApPT0yNil7az0oZyYyNTUpPj4+MTtnPW59az1rKzF8MDtpZigoa3wwKSE9MCl7bj1sO2g9Zzt3aGlsZSgxKXtrPWsrIC0xfDA7Y1toPj4yXT1jW24+PjJdO2lmKChrfDApPT0wKXticmVha31lbHNle249bis0fDA7aD1oKzR8MH19fWlmKCEobV4xfChsfDApPT0wKSl7dm4obCl9aWYoail7Y1tiPj4yXT1lKzF8MTtjW2IrND4+Ml09ZjtjW2IrOD4+Ml09ZztpPWQ7cmV0dXJufWVsc2V7YVtiPj4wXT1mPDwxO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIHBnKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtrPWk7aWYoKDEwNzM3NDE4MDctZHwwKT4+PjA8ZT4+PjApe2RnKCl9aWYoKGFbYj4+MF0mMSk9PTApe2w9Yis0fDB9ZWxzZXtsPWNbYis4Pj4yXXwwfWlmKGQ+Pj4wPDUzNjg3MDg4Nyl7ZT1lK2R8MDtwPWQ8PDE7ZT1lPj4+MDxwPj4+MD9wOmU7aWYoZT4+PjA8Mil7ZT0yfWVsc2V7ZT1lKzQmLTR9fWVsc2V7ZT0xMDczNzQxODA3fW89ZTw8MjtvPShvfDApPT0wPzE6bzt3aGlsZSgxKXttPXVuKG8pfDA7aWYoKG18MCkhPTApe2JyZWFrfW09Y1s1NjY2XXwwO2NbNTY2Nl09bSswO2lmKChtfDApPT0wKXtuPTEzO2JyZWFrfXNjW20mMzFdKCl9aWYoKG58MCk9PTEzKXtwPVhhKDQpfDA7Y1twPj4yXT0yMjY4MDt3YihwfDAsMjI3MjgsMjA2KX1pZigoZ3wwKSE9MCl7bz1nO249bDtwPW07d2hpbGUoMSl7bz1vKyAtMXwwO2NbcD4+Ml09Y1tuPj4yXTtpZigob3wwKT09MCl7YnJlYWt9ZWxzZXtuPW4rNHwwO3A9cCs0fDB9fX1mPWYtaHwwO2lmKChmfDApIT0oZ3wwKSl7Zj1mLWd8MDtoPWwrKGgrZzw8Mil8MDtnPW0rKGorZzw8Mil8MDt3aGlsZSgxKXtmPWYrIC0xfDA7Y1tnPj4yXT1jW2g+PjJdO2lmKChmfDApPT0wKXticmVha31lbHNle2g9aCs0fDA7Zz1nKzR8MH19fWlmKChkfDApPT0xfChsfDApPT0wKXtwPWIrOHwwO2NbcD4+Ml09bTtwPWV8MTtjW2I+PjJdPXA7aT1rO3JldHVybn12bihsKTtwPWIrOHwwO2NbcD4+Ml09bTtwPWV8MTtjW2I+PjJdPXA7aT1rO3JldHVybn1mdW5jdGlvbiBxZyhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT0oY1tiKzI0Pj4yXXwwKT09MDtpZihlKXtjW2IrMTY+PjJdPWR8MX1lbHNle2NbYisxNj4+Ml09ZH1pZigoKGUmMXxkKSZjW2IrMjA+PjJdfDApPT0wKXtyZXR1cm59ZD1YYSgxNil8MDtpZigoYVsxMTAwOF18MCk9PTA/KFFhKDExMDA4KXwwKSE9MDowKXtjWzI3NTBdPTExNzg0OyRhKDExMDA4KX1ZZihkLDEsMTFlMywxMTA1Nik7Y1tkPj4yXT0xMTAyNDt3YihkfDAsMTExMDQsMTMxKX1mdW5jdGlvbiByZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1pO2NbYT4+Ml09MTEwNDg7Zj1jW2ErNDA+PjJdfDA7Yj1hKzMyfDA7ZD1hKzM2fDA7aWYoKGZ8MCkhPTApe2Rve2Y9ZisgLTF8MDtxY1tjWyhjW2I+PjJdfDApKyhmPDwyKT4+Ml0mMzFdKDAsYSxjWyhjW2Q+PjJdfDApKyhmPDwyKT4+Ml18MCl9d2hpbGUoKGZ8MCkhPTApfWY9Y1thKzI4Pj4yXXwwO2g9Zis0fDA7Zz1jW2g+PjJdfDA7Y1toPj4yXT1nKyAtMTtpZigoZ3wwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfXZuKGNbYj4+Ml18MCk7dm4oY1tkPj4yXXwwKTt2bihjW2ErNDg+PjJdfDApO3ZuKGNbYSs2MD4+Ml18MCk7aT1lO3JldHVybn1mdW5jdGlvbiBzZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTEwNjY0O2Q9Y1thKzQ+PjJdfDA7Zj1kKzR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlfDApIT0wKXt2bihhKTtpPWI7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHRnKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7Y1thPj4yXT0xMDY2NDthPWNbYSs0Pj4yXXwwO2U9YSs0fDA7ZD1jW2U+PjJdfDA7Y1tlPj4yXT1kKyAtMTtpZigoZHwwKSE9MCl7aT1iO3JldHVybn1sY1tjWyhjW2E+PjJdfDApKzg+PjJdJjI1NV0oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB1ZyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybn1mdW5jdGlvbiB2ZyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiB3ZyhhLGIsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7Zz1hO2NbZz4+Ml09MDtjW2crND4+Ml09MDtnPWErOHwwO2NbZz4+Ml09LTE7Y1tnKzQ+PjJdPS0xO3JldHVybn1mdW5jdGlvbiB4ZyhhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtlPWE7Y1tlPj4yXT0wO2NbZSs0Pj4yXT0wO2U9YSs4fDA7Y1tlPj4yXT0tMTtjW2UrND4+Ml09LTE7cmV0dXJufWZ1bmN0aW9uIHlnKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIHpnKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIEFnKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtmPWk7aWYoKGV8MCk8PTApe2s9MDtpPWY7cmV0dXJuIGt8MH1nPWIrMTJ8MDtoPWIrMTZ8MDtqPTA7d2hpbGUoMSl7az1jW2c+PjJdfDA7aWYoaz4+PjA8KGNbaD4+Ml18MCk+Pj4wKXtjW2c+PjJdPWsrMTtrPWFbaz4+MF18MH1lbHNle2s9b2NbY1soY1tiPj4yXXwwKSs0MD4+Ml0mMTI3XShiKXwwO2lmKChrfDApPT0tMSl7ZT04O2JyZWFrfWs9ayYyNTV9YVtkPj4wXT1rO2o9aisxfDA7aWYoKGp8MCk8KGV8MCkpe2Q9ZCsxfDB9ZWxzZXtlPTg7YnJlYWt9fWlmKChlfDApPT04KXtpPWY7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBCZyhhKXthPWF8MDtyZXR1cm4tMX1mdW5jdGlvbiBDZyhhKXthPWF8MDt2YXIgYj0wLGU9MDtiPWk7aWYoKG9jW2NbKGNbYT4+Ml18MCkrMzY+PjJdJjEyN10oYSl8MCk9PS0xKXthPS0xO2k9YjtyZXR1cm4gYXwwfWU9YSsxMnwwO2E9Y1tlPj4yXXwwO2NbZT4+Ml09YSsxO2E9ZFthPj4wXXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIERnKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuLTF9ZnVuY3Rpb24gRWcoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtnPWk7aWYoKGZ8MCk8PTApe2w9MDtpPWc7cmV0dXJuIGx8MH1qPWIrMjR8MDtoPWIrMjh8MDtrPTA7d2hpbGUoMSl7bD1jW2o+PjJdfDA7aWYoIShsPj4+MDwoY1toPj4yXXwwKT4+PjApKXtpZigoeGNbY1soY1tiPj4yXXwwKSs1Mj4+Ml0mNjNdKGIsZFtlPj4wXXwwKXwwKT09LTEpe2g9NzticmVha319ZWxzZXttPWFbZT4+MF18MDtjW2o+PjJdPWwrMTthW2w+PjBdPW19az1rKzF8MDtpZigoa3wwKTwoZnwwKSl7ZT1lKzF8MH1lbHNle2g9NzticmVha319aWYoKGh8MCk9PTcpe2k9ZztyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIEZnKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuLTF9ZnVuY3Rpb24gR2coYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT0xMDcyODtkPWNbYSs0Pj4yXXwwO2Y9ZCs0fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZXwwKSE9MCl7dm4oYSk7aT1iO3JldHVybn1sY1tjWyhjW2Q+PjJdfDApKzg+PjJdJjI1NV0oZCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBIZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7YT1jW2ErND4+Ml18MDtlPWErNHwwO2Q9Y1tlPj4yXXwwO2NbZT4+Ml09ZCsgLTE7aWYoKGR8MCkhPTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gSWcoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm59ZnVuY3Rpb24gSmcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBhfDB9ZnVuY3Rpb24gS2coYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2c9YTtjW2c+PjJdPTA7Y1tnKzQ+PjJdPTA7Zz1hKzh8MDtjW2c+PjJdPS0xO2NbZys0Pj4yXT0tMTtyZXR1cm59ZnVuY3Rpb24gTGcoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7ZT1hO2NbZT4+Ml09MDtjW2UrND4+Ml09MDtlPWErOHwwO2NbZT4+Ml09LTE7Y1tlKzQ+PjJdPS0xO3JldHVybn1mdW5jdGlvbiBNZyhhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBOZyhhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBPZyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2lmKChkfDApPD0wKXtqPTA7aT1lO3JldHVybiBqfDB9Zz1hKzEyfDA7Zj1hKzE2fDA7aD0wO3doaWxlKDEpe2o9Y1tnPj4yXXwwO2lmKCEoaj4+PjA8KGNbZj4+Ml18MCk+Pj4wKSl7aj1vY1tjWyhjW2E+PjJdfDApKzQwPj4yXSYxMjddKGEpfDA7aWYoKGp8MCk9PS0xKXthPTg7YnJlYWt9fWVsc2V7Y1tnPj4yXT1qKzQ7aj1jW2o+PjJdfDB9Y1tiPj4yXT1qO2g9aCsxfDA7aWYoKGh8MCk+PShkfDApKXthPTg7YnJlYWt9Yj1iKzR8MH1pZigoYXwwKT09OCl7aT1lO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gUGcoYSl7YT1hfDA7cmV0dXJuLTF9ZnVuY3Rpb24gUWcoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2lmKChvY1tjWyhjW2E+PjJdfDApKzM2Pj4yXSYxMjddKGEpfDApPT0tMSl7YT0tMTtpPWI7cmV0dXJuIGF8MH1kPWErMTJ8MDthPWNbZD4+Ml18MDtjW2Q+PjJdPWErNDthPWNbYT4+Ml18MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBSZyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybi0xfWZ1bmN0aW9uIFNnKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2lmKChkfDApPD0wKXtqPTA7aT1lO3JldHVybiBqfDB9Zz1hKzI0fDA7Zj1hKzI4fDA7aD0wO3doaWxlKDEpe2o9Y1tnPj4yXXwwO2lmKCEoaj4+PjA8KGNbZj4+Ml18MCk+Pj4wKSl7aWYoKHhjW2NbKGNbYT4+Ml18MCkrNTI+PjJdJjYzXShhLGNbYj4+Ml18MCl8MCk9PS0xKXtmPTg7YnJlYWt9fWVsc2V7az1jW2I+PjJdfDA7Y1tnPj4yXT1qKzQ7Y1tqPj4yXT1rfWg9aCsxfDA7aWYoKGh8MCk+PShkfDApKXtmPTg7YnJlYWt9Yj1iKzR8MH1pZigoZnwwKT09OCl7aT1lO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gVGcoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4tMX1mdW5jdGlvbiBVZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBWZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBXZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs4KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFhnKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzgpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gWWcoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7ZT1kO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2IrKGYrMjQpPj4yXXwwKT09MCl7aT1kO3JldHVybn1hW2U+PjBdPTA7Y1tlKzQ+PjJdPWI7aWYoKGNbYisoZisxNik+PjJdfDApPT0wKXtnPWNbYisoZis3Mik+PjJdfDA7aWYoKGd8MCkhPTApe1lnKGcpO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZT4+MF09MTtnPWNbYisoZisyNCk+PjJdfDA7aWYoKG9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MCk9PS0xKXtnPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK2d8MCxjW2IrKGcrMTYpPj4yXXwxKX19Z2goZSk7aT1kO3JldHVybn1mdW5jdGlvbiBaZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBfZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aT1iO3JldHVybn1mdW5jdGlvbiAkZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs4KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGFoKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzgpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gYmgoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7ZT1kO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2IrKGYrMjQpPj4yXXwwKT09MCl7aT1kO3JldHVybn1hW2U+PjBdPTA7Y1tlKzQ+PjJdPWI7aWYoKGNbYisoZisxNik+PjJdfDApPT0wKXtnPWNbYisoZis3Mik+PjJdfDA7aWYoKGd8MCkhPTApe2JoKGcpO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZT4+MF09MTtnPWNbYisoZisyNCk+PjJdfDA7aWYoKG9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MCk9PS0xKXtnPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK2d8MCxjW2IrKGcrMTYpPj4yXXwxKX19cWgoZSk7aT1kO3JldHVybn1mdW5jdGlvbiBjaChhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzR8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBkaChhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzR8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBlaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs0KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGZoKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzQpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gZ2goYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTthPWErNHwwO2Q9Y1thPj4yXXwwO2U9Y1soY1tkPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2QrKGUrMjQpPj4yXXwwKT09MCl7aT1iO3JldHVybn1pZigoY1tkKyhlKzE2KT4+Ml18MCkhPTApe2k9YjtyZXR1cm59aWYoKGNbZCsoZSs0KT4+Ml0mODE5MnwwKT09MCl7aT1iO3JldHVybn1pZihZYSgpfDApe2k9YjtyZXR1cm59ZT1jW2E+PjJdfDA7ZT1jW2UrKChjWyhjW2U+PjJdfDApKyAtMTI+PjJdfDApKzI0KT4+Ml18MDtpZighKChvY1tjWyhjW2U+PjJdfDApKzI0Pj4yXSYxMjddKGUpfDApPT0tMSkpe2k9YjtyZXR1cm59ZD1jW2E+PjJdfDA7ZT1jWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDA7cWcoZCtlfDAsY1tkKyhlKzE2KT4+Ml18MSk7aT1iO3JldHVybn1mdW5jdGlvbiBoaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2g9aTtpPWkrMzJ8MDtrPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG4rMTYpPj4yXXwwKT09MCl7bT1jW2IrKG4rNzIpPj4yXXwwO2lmKChtfDApIT0wKXtZZyhtKTtuPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7bz1jW2IrKG4rMjgpPj4yXXwwO3A9bys0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1trPj4yXT0xMjE5MjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEyMTkyLGspfW49KGNbMTIxOTY+PjJdfDApKyAtMXwwO209Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktbT4+Mj4+PjA+bj4+PjA/KGU9Y1ttKyhuPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfXE9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO209Y1tiKyhxKzI0KT4+Ml18MDtuPWIrcXwwO289YisocSs3Nil8MDtwPWNbbz4+Ml18MDtkb3tpZigocHwwKT09LTEpe3E9Y1tiKyhxKzI4KT4+Ml18MDtwPXErNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NTY7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ1NixrKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXM+PjI+Pj4wPnI+Pj4wPyhsPWNbcysocjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2w9eGNbY1soY1tsPj4yXXwwKSsyOD4+Ml0mNjNdKGwsMzIpfDA7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfXA9bDw8MjQ+PjI0O2Nbbz4+Ml09cDticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7cj1wJjI1NTtzPWQmNjU1MzU7cT1jWyhjW2U+PjJdfDApKzI0Pj4yXXwwO2Nbaj4+Ml09bTtjW2srMD4+Ml09Y1tqKzA+PjJdO3djW3EmNjNdKGYsZSxrLG4scixzKTtpZigoY1tmPj4yXXwwKSE9MCl7YnJlYWt9cz1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7cWcoYitzfDAsY1tiKyhzKzE2KT4+Ml18NSk7YnJlYWt9cz1YYSg0KXwwO2Nbcz4+Ml09MjEzMDQ7d2Ioc3wwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2doKGcpO2k9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIGloKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7aD1pO2k9aSszMnwwO2s9aDtqPWgrMjR8MDtnPWgrMTZ8MDtmPWgrMTJ8MDthW2c+PjBdPTA7Y1tnKzQ+PjJdPWI7bj1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7ZG97aWYoKGNbYisobisxNik+PjJdfDApPT0wKXttPWNbYisobis3Mik+PjJdfDA7aWYoKG18MCkhPTApe1lnKG0pO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZz4+MF09MTtvPWNbYisobisyOCk+PjJdfDA7cD1vKzR8MDtjW3A+PjJdPShjW3A+PjJdfDApKzE7aWYoISgoY1szMDQ4XXwwKT09LTEpKXtjW2s+PjJdPTEyMTkyO2Nbays0Pj4yXT0yMDg7Y1trKzg+PjJdPTA7Y2coMTIxOTIsayl9bj0oY1sxMjE5Nj4+Ml18MCkrIC0xfDA7bT1jW28rOD4+Ml18MDtpZigoY1tvKzEyPj4yXXwwKS1tPj4yPj4+MD5uPj4+MD8oZT1jW20rKG48PDIpPj4yXXwwLChlfDApIT0wKTowKXtzPWNbcD4+Ml18MDtjW3A+PjJdPXMrIC0xO2lmKChzfDApPT0wKXtsY1tjWyhjW28+PjJdfDApKzg+PjJdJjI1NV0obyl9cT1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7bT1jW2IrKHErMjQpPj4yXXwwO249YitxfDA7bz1iKyhxKzc2KXwwO3A9Y1tvPj4yXXwwO2Rve2lmKChwfDApPT0tMSl7cT1jW2IrKHErMjgpPj4yXXwwO3A9cSs0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1trPj4yXT0xMzQ1NjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEzNDU2LGspfXI9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3M9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcz4+Mj4+PjA+cj4+PjA/KGw9Y1tzKyhyPDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7bD14Y1tjWyhjW2w+PjJdfDApKzI4Pj4yXSY2M10obCwzMil8MDtzPWNbcD4+Ml18MDtjW3A+PjJdPXMrIC0xO2lmKChzfDApPT0wKXtsY1tjWyhjW3E+PjJdfDApKzg+PjJdJjI1NV0ocSl9cD1sPDwyND4+MjQ7Y1tvPj4yXT1wO2JyZWFrfXM9WGEoNCl8MDtjW3M+PjJdPTIxMzA0O3diKHN8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtzPXAmMjU1O3I9Y1soY1tlPj4yXXwwKSsxNj4+Ml18MDtjW2o+PjJdPW07Y1trKzA+PjJdPWNbaiswPj4yXTt3Y1tyJjYzXShmLGUsayxuLHMsZCk7aWYoKGNbZj4+Ml18MCkhPTApe2JyZWFrfXM9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO3FnKGIrc3wwLGNbYisocysxNik+PjJdfDUpO2JyZWFrfXM9WGEoNCl8MDtjW3M+PjJdPTIxMzA0O3diKHN8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtnaChnKTtpPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBqaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2g9aTtpPWkrMzJ8MDtrPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG4rMTYpPj4yXXwwKT09MCl7bT1jW2IrKG4rNzIpPj4yXXwwO2lmKChtfDApIT0wKXtZZyhtKTtuPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7bz1jW2IrKG4rMjgpPj4yXXwwO3A9bys0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1trPj4yXT0xMjE5MjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEyMTkyLGspfW49KGNbMTIxOTY+PjJdfDApKyAtMXwwO209Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktbT4+Mj4+PjA+bj4+PjA/KGU9Y1ttKyhuPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfXE9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO209Y1tiKyhxKzI0KT4+Ml18MDtuPWIrcXwwO289YisocSs3Nil8MDtwPWNbbz4+Ml18MDtkb3tpZigocHwwKT09LTEpe3E9Y1tiKyhxKzI4KT4+Ml18MDtwPXErNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NTY7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ1NixrKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXM+PjI+Pj4wPnI+Pj4wPyhsPWNbcysocjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2w9eGNbY1soY1tsPj4yXXwwKSsyOD4+Ml0mNjNdKGwsMzIpfDA7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfXA9bDw8MjQ+PjI0O2Nbbz4+Ml09cDticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7cz1wJjI1NTtyPWNbKGNbZT4+Ml18MCkrMjQ+PjJdfDA7Y1tqPj4yXT1tO2NbayswPj4yXT1jW2orMD4+Ml07d2NbciY2M10oZixlLGssbixzLGQpO2lmKChjW2Y+PjJdfDApIT0wKXticmVha31zPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK3N8MCxjW2IrKHMrMTYpPj4yXXw1KTticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Z2goZyk7aT1oO3JldHVybiBifDB9ZnVuY3Rpb24ga2goYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO2g9aTtpPWkrMzJ8MDtsPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO289Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG8rMTYpPj4yXXwwKT09MCl7bj1jW2IrKG8rNzIpPj4yXXwwO2lmKChufDApIT0wKXtZZyhuKTtvPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7cD1jW2IrKG8rMjgpPj4yXXwwO3E9cCs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1tsPj4yXT0xMjE5MjtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEyMTkyLGwpfW89KGNbMTIxOTY+PjJdfDApKyAtMXwwO249Y1twKzg+PjJdfDA7aWYoKGNbcCsxMj4+Ml18MCktbj4+Mj4+PjA+bz4+PjA/KGs9Y1tuKyhvPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7dD1jW3E+PjJdfDA7Y1txPj4yXT10KyAtMTtpZigodHwwKT09MCl7bGNbY1soY1twPj4yXXwwKSs4Pj4yXSYyNTVdKHApfXI9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO249Y1tiKyhyKzI0KT4+Ml18MDtvPWIrcnwwO3A9Yisocis3Nil8MDtxPWNbcD4+Ml18MDtkb3tpZigocXwwKT09LTEpe3I9Y1tiKyhyKzI4KT4+Ml18MDtxPXIrNHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1zPShjWzEzNDYwPj4yXXwwKSsgLTF8MDt0PWNbcis4Pj4yXXwwO2lmKChjW3IrMTI+PjJdfDApLXQ+PjI+Pj4wPnM+Pj4wPyhtPWNbdCsoczw8Mik+PjJdfDAsKG18MCkhPTApOjApe209eGNbY1soY1ttPj4yXXwwKSsyOD4+Ml0mNjNdKG0sMzIpfDA7dD1jW3E+PjJdfDA7Y1txPj4yXT10KyAtMTtpZigodHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfXE9bTw8MjQ+PjI0O2NbcD4+Ml09cTticmVha310PVhhKDQpfDA7Y1t0Pj4yXT0yMTMwNDt3Yih0fDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dD1xJjI1NTtzPWNbKGNbaz4+Ml18MCkrMjg+PjJdfDA7Y1tqPj4yXT1uO2NbbCswPj4yXT1jW2orMD4+Ml07aWNbcyY2M10oZixrLGwsbyx0LGQsZSk7aWYoKGNbZj4+Ml18MCkhPTApe2JyZWFrfXQ9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO3FnKGIrdHwwLGNbYisodCsxNik+PjJdfDUpO2JyZWFrfXQ9WGEoNCl8MDtjW3Q+PjJdPTIxMzA0O3diKHR8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtnaChnKTtpPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBsaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrMTZ8MDtmPWU7YVtmPj4wXT0wO2NbZis0Pj4yXT1iO2g9Y1tiPj4yXXwwO2c9Y1toKyAtMTI+PjJdfDA7ZG97aWYoKGNbYisoZysxNik+PjJdfDApPT0wKXtqPWNbYisoZys3Mik+PjJdfDA7aWYoKGp8MCkhPTApe1lnKGopO2c9Y1tiPj4yXXwwO2g9ZztnPWNbZysgLTEyPj4yXXwwfWFbZj4+MF09MTtnPWNbYisoZysyNCk+PjJdfDA7aWYoKGd8MCkhPTApe2o9ZysyNHwwO2g9Y1tqPj4yXXwwO2lmKChofDApIT0oY1tnKzI4Pj4yXXwwKSl7Y1tqPj4yXT1oKzE7YVtoPj4wXT1kO2JyZWFrfWlmKCEoKHhjW2NbKGNbZz4+Ml18MCkrNTI+PjJdJjYzXShnLGQmMjU1KXwwKT09LTEpKXticmVha31oPWNbYj4+Ml18MH1qPWNbaCsgLTEyPj4yXXwwO3FnKGIranwwLGNbYisoaisxNik+PjJdfDEpfX13aGlsZSgwKTtnaChmKTtpPWU7cmV0dXJufWZ1bmN0aW9uIG1oKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErNHwwKTtpZigoYXwwKT09MCl7aT1iO3JldHVybn12bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG5oKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErNHwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG9oKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7ZT1jWyhjW2E+PjJdfDApKyAtMTI+PjJdfDA7ZD1hK2V8MDtyZyhhKyhlKzQpfDApO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gcGgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7cmcoYSsoKGNbKGNbYT4+Ml18MCkrIC0xMj4+Ml18MCkrNCl8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBxaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2E9YSs0fDA7ZD1jW2E+PjJdfDA7ZT1jWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDA7aWYoKGNbZCsoZSsyNCk+PjJdfDApPT0wKXtpPWI7cmV0dXJufWlmKChjW2QrKGUrMTYpPj4yXXwwKSE9MCl7aT1iO3JldHVybn1pZigoY1tkKyhlKzQpPj4yXSY4MTkyfDApPT0wKXtpPWI7cmV0dXJufWlmKFlhKCl8MCl7aT1iO3JldHVybn1lPWNbYT4+Ml18MDtlPWNbZSsoKGNbKGNbZT4+Ml18MCkrIC0xMj4+Ml18MCkrMjQpPj4yXXwwO2lmKCEoKG9jW2NbKGNbZT4+Ml18MCkrMjQ+PjJdJjEyN10oZSl8MCk9PS0xKSl7aT1iO3JldHVybn1kPWNbYT4+Ml18MDtlPWNbKGNbZD4+Ml18MCkrIC0xMj4+Ml18MDtxZyhkK2V8MCxjW2QrKGUrMTYpPj4yXXwxKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHJoKGEpe2E9YXwwO3JldHVybiAxMDk0NH1mdW5jdGlvbiBzaChiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7ZD1pO2lmKChlfDApPT0xKXtlZyhiLDEwOTYwLDM1KTtpPWQ7cmV0dXJufWc9TmIoZXwwKXwwO2U9Sm4oZ3wwKXwwO2lmKGU+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoZT4+PjA8MTEpe2FbYj4+MF09ZTw8MTtrPWIrMXwwfWVsc2V7aD1lKzE2Ji0xNjtqPShofDApPT0wPzE6aDt3aGlsZSgxKXtrPXVuKGopfDA7aWYoKGt8MCkhPTApe2Y9MTI7YnJlYWt9az1jWzU2NjZdfDA7Y1s1NjY2XT1rKzA7aWYoKGt8MCk9PTApe2JyZWFrfXNjW2smMzFdKCl9aWYoKGZ8MCk9PTEyKXtjW2IrOD4+Ml09aztjW2I+PjJdPWh8MTtjW2IrND4+Ml09ZTticmVha31rPVhhKDQpfDA7Y1trPj4yXT0yMjY4MDt3YihrfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7TG4oa3wwLGd8MCxlfDApfDA7YVtrK2U+PjBdPTA7aT1kO3JldHVybn1mdW5jdGlvbiB0aChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gdWgoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB2aChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gd2goYSl7YT1hfDA7dmFyIGI9MDtiPWk7cmcoYSk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geWgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gemgoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEFoKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBCaChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MDtiPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2c9Nn1lbHNle3doaWxlKDEpe2lmKChjfDApPT0oZHwwKSl7ZD0tMTticmVhayBhfWg9YVtjPj4wXXwwO2o9YVtlPj4wXXwwO2lmKGg8PDI0Pj4yNDxqPDwyND4+MjQpe2Q9LTE7YnJlYWsgYX1pZihqPDwyND4+MjQ8aDw8MjQ+PjI0KXtkPTE7YnJlYWsgYX1jPWMrMXwwO2U9ZSsxfDA7aWYoKGV8MCk9PShmfDApKXtnPTY7YnJlYWt9fX19d2hpbGUoMCk7aWYoKGd8MCk9PTYpe2Q9KGN8MCkhPShkfDApJjF9aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gQ2goYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2Q9aTtnPWU7aj1mLWd8MDtpZihqPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWRve2lmKGo+Pj4wPDExKXthW2I+PjBdPWo8PDE7bT1iKzF8MH1lbHNle2s9aisxNiYtMTY7bD0oa3wwKT09MD8xOms7d2hpbGUoMSl7bT11bihsKXwwO2lmKChtfDApIT0wKXtoPTExO2JyZWFrfW09Y1s1NjY2XXwwO2NbNTY2Nl09bSswO2lmKChtfDApPT0wKXticmVha31zY1ttJjMxXSgpfWlmKChofDApPT0xMSl7Y1tiKzg+PjJdPW07Y1tiPj4yXT1rfDE7Y1tiKzQ+PjJdPWo7YnJlYWt9bT1YYSg0KXwwO2NbbT4+Ml09MjI2ODA7d2IobXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChlfDApPT0oZnwwKSl7YVttPj4wXT0wO2k9ZDtyZXR1cm59ZWxzZXtiPW19d2hpbGUoMSl7YVtiPj4wXT1hW2U+PjBdfDA7ZT1lKzF8MDtpZigoZXwwKT09KGZ8MCkpe2JyZWFrfWVsc2V7Yj1iKzF8MH19bT1tKyhmKygwLWcpKXwwO2FbbT4+MF09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIERoKGIsYyxkKXtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MDtiPWk7aWYoKGN8MCk9PShkfDApKXtlPTA7aT1iO3JldHVybiBlfDB9ZWxzZXtlPTB9ZG97ZT0oYVtjPj4wXXwwKSsoZTw8NCl8MDtmPWUmLTI2ODQzNTQ1NjtlPShmPj4+MjR8ZileZTtjPWMrMXwwfXdoaWxlKChjfDApIT0oZHwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gRWgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRmgoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEdoKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wO2E9aTthOmRve2lmKChlfDApPT0oZnwwKSl7Zz02fWVsc2V7d2hpbGUoMSl7aWYoKGJ8MCk9PShkfDApKXtkPS0xO2JyZWFrIGF9aD1jW2I+PjJdfDA7aj1jW2U+PjJdfDA7aWYoKGh8MCk8KGp8MCkpe2Q9LTE7YnJlYWsgYX1pZigoanwwKTwoaHwwKSl7ZD0xO2JyZWFrIGF9Yj1iKzR8MDtlPWUrNHwwO2lmKChlfDApPT0oZnwwKSl7Zz02O2JyZWFrfX19fXdoaWxlKDApO2lmKChnfDApPT02KXtkPShifDApIT0oZHwwKSYxfWk9YTtyZXR1cm4gZHwwfWZ1bmN0aW9uIEhoKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtkPWk7aD1lO2s9Zi1ofDA7aj1rPj4yO2lmKGo+Pj4wPjEwNzM3NDE4MDcpe2RnKCl9ZG97aWYoaj4+PjA8Mil7YVtiPj4wXT1rPj4+MTttPWIrNHwwfWVsc2V7az1qKzQmLTQ7bD1rPDwyO2w9KGx8MCk9PTA/MTpsO3doaWxlKDEpe209dW4obCl8MDtpZigobXwwKSE9MCl7Zz0xMTticmVha31tPWNbNTY2Nl18MDtjWzU2NjZdPW0rMDtpZigobXwwKT09MCl7YnJlYWt9c2NbbSYzMV0oKX1pZigoZ3wwKT09MTEpe2NbYis4Pj4yXT1tO2NbYj4+Ml09a3wxO2NbYis0Pj4yXT1qO2JyZWFrfW09WGEoNCl8MDtjW20+PjJdPTIyNjgwO3diKG18MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZigoZXwwKT09KGZ8MCkpe2NbbT4+Ml09MDtpPWQ7cmV0dXJufWI9ZisgLTQrKDAtaCl8MDtnPW07d2hpbGUoMSl7Y1tnPj4yXT1jW2U+PjJdO2U9ZSs0fDA7aWYoKGV8MCk9PShmfDApKXticmVha31lbHNle2c9Zys0fDB9fW09bSsoKGI+Pj4yKSsxPDwyKXwwO2NbbT4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIEloKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDthPWk7aWYoKGJ8MCk9PShkfDApKXtlPTA7aT1hO3JldHVybiBlfDB9ZWxzZXtlPTB9ZG97ZT0oY1tiPj4yXXwwKSsoZTw8NCl8MDtmPWUmLTI2ODQzNTQ1NjtlPShmPj4+MjR8ZileZTtiPWIrNHwwfXdoaWxlKChifDApIT0oZHwwKSk7aT1hO3JldHVybiBlfDB9ZnVuY3Rpb24gSmgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gS2goYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIExoKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2s9aTtpPWkrNjR8MDtwPWs7dT1rKzQ4fDA7cT1rKzUyfDA7dD1rKzU2fDA7cz1rKzE2fDA7cj1rKzEyfDA7bD1rKzI0fDA7aWYoKGNbZys0Pj4yXSYxfDApPT0wKXtjW3E+PjJdPS0xO2w9Y1soY1tkPj4yXXwwKSsxNj4+Ml18MDtjW3M+PjJdPWNbZT4+Ml07Y1tyPj4yXT1jW2Y+PjJdO2NbdSswPj4yXT1jW3MrMD4+Ml07Y1twKzA+PjJdPWNbciswPj4yXTtpY1tsJjYzXSh0LGQsdSxwLGcsaCxxKTtsPWNbdD4+Ml18MDtjW2U+PjJdPWw7ZT1jW3E+PjJdfDA7aWYoKGV8MCk9PTApe2Fbaj4+MF09MH1lbHNlIGlmKChlfDApPT0xKXthW2o+PjBdPTF9ZWxzZXthW2o+PjBdPTE7Y1toPj4yXT00fWNbYj4+Ml09bDtpPWs7cmV0dXJufXE9ZysyOHwwO3I9Y1txPj4yXXwwO2Q9cis0fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1twPj4yXT0xMzQ1NjtjW3ArND4+Ml09MjA4O2NbcCs4Pj4yXT0wO2NnKDEzNDU2LHApfXM9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3Q9Y1tyKzg+PjJdfDA7aWYoKGNbcisxMj4+Ml18MCktdD4+Mj4+PjA+cz4+PjA/KG89Y1t0KyhzPDwyKT4+Ml18MCwob3wwKSE9MCk6MCl7dT1yKzR8MDtkPWNbdT4+Ml18MDtjW3U+PjJdPWQrIC0xO2lmKChkfDApPT0wKXtsY1tjWyhjW3I+PjJdfDApKzg+PjJdJjI1NV0ocil9cT1jW3E+PjJdfDA7ZD1xKzR8MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE7aWYoISgoY1szNDAwXXwwKT09LTEpKXtjW3A+PjJdPTEzNjAwO2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM2MDAscCl9cD0oY1sxMzYwND4+Ml18MCkrIC0xfDA7cj1jW3ErOD4+Ml18MDtpZigoY1txKzEyPj4yXXwwKS1yPj4yPj4+MD5wPj4+MD8obj1jW3IrKHA8PDIpPj4yXXwwLChufDApIT0wKTowKXt1PXErNHwwO2Q9Y1t1Pj4yXXwwO2NbdT4+Ml09ZCsgLTE7aWYoKGR8MCk9PTApe2xjW2NbKGNbcT4+Ml18MCkrOD4+Ml0mMjU1XShxKX1tY1tjWyhjW24+PjJdfDApKzI0Pj4yXSYxMjddKGwsbik7ZD1sKzEyfDA7bWNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mMTI3XShkLG4pO2Fbaj4+MF09KE1oKGUsY1tmPj4yXXwwLGwsbCsyNHwwLG8saCwxKXwwKT09KGx8MCkmMTtjW2I+PjJdPWNbZT4+Ml07aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tsKzIwPj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtsPj4wXSYxKT09MCl7aT1rO3JldHVybn1iPWNbbCs4Pj4yXXwwO2lmKChifDApPT0wKXtpPWs7cmV0dXJufXZuKGIpO2k9aztyZXR1cm59ZD1YYSg0KXwwO2NbZD4+Ml09MjEzMDQ7d2IoZHwwLDIxMzc2LDE5Nil9ZD1YYSg0KXwwO2NbZD4+Ml09MjEzMDQ7d2IoZHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gTWgoYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDttPWk7aT1pKzExMnwwO289bTt0PShnLWZ8MCkvMTJ8MDtpZih0Pj4+MD4xMDApe289dW4odCl8MDtpZigob3wwKT09MCl7QT1YYSg0KXwwO2NbQT4+Ml09MjI2ODA7d2IoQXwwLDIyNzI4LDIwNil9ZWxzZXtsPW99fWVsc2V7bD0wfXA9KGZ8MCk9PShnfDApO2lmKHApe3U9MH1lbHNle3E9Zjt1PTA7cj1vO3doaWxlKDEpe3M9YVtxPj4wXXwwO2lmKChzJjEpPT0wKXtzPShzJjI1NSk+Pj4xfWVsc2V7cz1jW3ErND4+Ml18MH1pZigoc3wwKT09MCl7YVtyPj4wXT0yO3U9dSsxfDA7dD10KyAtMXwwfWVsc2V7YVtyPj4wXT0xfXE9cSsxMnwwO2lmKChxfDApPT0oZ3wwKSl7YnJlYWt9ZWxzZXtyPXIrMXwwfX19cT0wO2E6d2hpbGUoMSl7dj0odHwwKSE9MDtyPXE7d2hpbGUoMSl7cT1jW2I+PjJdfDA7ZG97aWYoKHF8MCkhPTApe2lmKChjW3ErMTI+PjJdfDApPT0oY1txKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbcT4+Ml18MCkrMzY+PjJdJjEyN10ocSl8MCk9PS0xKXtjW2I+PjJdPTA7cT0wO2JyZWFrfWVsc2V7cT1jW2I+PjJdfDA7YnJlYWt9fX1lbHNle3E9MH19d2hpbGUoMCk7dz0ocXwwKT09MDtpZigoZXwwKSE9MCl7aWYoKGNbZSsxMj4+Ml18MCk9PShjW2UrMTY+PjJdfDApKXtBPShvY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDApPT0tMTtxPUE/MDplO2U9QT8wOmV9ZWxzZXtxPWV9fWVsc2V7cT0wO2U9MH1zPShxfDApPT0wO3g9Y1tiPj4yXXwwO2lmKCEoKHdecykmdikpe2JyZWFrIGF9cT1jW3grMTI+PjJdfDA7aWYoKHF8MCk9PShjW3grMTY+PjJdfDApKXtxPW9jW2NbKGNbeD4+Ml18MCkrMzY+PjJdJjEyN10oeCl8MH1lbHNle3E9ZFtxPj4wXXwwfXM9cSYyNTU7aWYoIWspe3M9eGNbY1soY1toPj4yXXwwKSsxMj4+Ml0mNjNdKGgscyl8MH1xPXIrMXwwO2lmKHApe3I9cX1lbHNle2JyZWFrfX1iOmRve2lmKGspe3g9MDt2PWY7dz1vO3doaWxlKDEpe2Rve2lmKChhW3c+PjBdfDApPT0xKXt5PWFbdj4+MF18MDt6PSh5JjEpPT0wO2lmKHope0E9disxfDB9ZWxzZXtBPWNbdis4Pj4yXXwwfWlmKCEoczw8MjQ+PjI0PT0oYVtBK3I+PjBdfDApKSl7YVt3Pj4wXT0wO3Q9dCsgLTF8MDticmVha31pZih6KXt4PSh5JjI1NSk+Pj4xfWVsc2V7eD1jW3YrND4+Ml18MH1pZigoeHwwKT09KHF8MCkpe2Fbdz4+MF09Mjt4PTE7dT11KzF8MDt0PXQrIC0xfDB9ZWxzZXt4PTF9fX13aGlsZSgwKTt2PXYrMTJ8MDtpZigodnwwKT09KGd8MCkpe2JyZWFrIGJ9dz13KzF8MH19ZWxzZXt4PTA7dj1mO3c9bzt3aGlsZSgxKXtkb3tpZigoYVt3Pj4wXXwwKT09MSl7aWYoKGFbdj4+MF0mMSk9PTApe3k9disxfDB9ZWxzZXt5PWNbdis4Pj4yXXwwfWlmKCEoczw8MjQ+PjI0PT0oeGNbY1soY1toPj4yXXwwKSsxMj4+Ml0mNjNdKGgsYVt5K3I+PjBdfDApfDApPDwyND4+MjQpKXthW3c+PjBdPTA7dD10KyAtMXwwO2JyZWFrfXg9YVt2Pj4wXXwwO2lmKCh4JjEpPT0wKXt4PSh4JjI1NSk+Pj4xfWVsc2V7eD1jW3YrND4+Ml18MH1pZigoeHwwKT09KHF8MCkpe2Fbdz4+MF09Mjt4PTE7dT11KzF8MDt0PXQrIC0xfDB9ZWxzZXt4PTF9fX13aGlsZSgwKTt2PXYrMTJ8MDtpZigodnwwKT09KGd8MCkpe2JyZWFrIGJ9dz13KzF8MH19fXdoaWxlKDApO2lmKCF4KXtjb250aW51ZX12PWNbYj4+Ml18MDtzPXYrMTJ8MDtyPWNbcz4+Ml18MDtpZigocnwwKT09KGNbdisxNj4+Ml18MCkpe29jW2NbKGNbdj4+Ml18MCkrNDA+PjJdJjEyN10odil8MH1lbHNle2Nbcz4+Ml09cisxfWlmKCh0K3V8MCk+Pj4wPDIpe2NvbnRpbnVlfWVsc2V7cz1mO3I9b313aGlsZSgxKXtpZigoYVtyPj4wXXwwKT09Mil7dj1hW3M+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbcys0Pj4yXXwwfWlmKCh2fDApIT0ocXwwKSl7YVtyPj4wXT0wO3U9dSsgLTF8MH19cz1zKzEyfDA7aWYoKHN8MCk9PShnfDApKXtjb250aW51ZSBhfWVsc2V7cj1yKzF8MH19fWRve2lmKCh4fDApIT0wKXtpZigoY1t4KzEyPj4yXXwwKT09KGNbeCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDApPT0tMSl7Y1tiPj4yXT0wO3g9MDticmVha31lbHNle3g9Y1tiPj4yXXwwO2JyZWFrfX19ZWxzZXt4PTB9fXdoaWxlKDApO2g9KHh8MCk9PTA7ZG97aWYoIXMpe2lmKChjW3ErMTI+PjJdfDApIT0oY1txKzE2Pj4yXXwwKSl7aWYoaCl7YnJlYWt9ZWxzZXtuPTg1O2JyZWFrfX1pZighKChvY1tjWyhjW3E+PjJdfDApKzM2Pj4yXSYxMjddKHEpfDApPT0tMSkpe2lmKCFoKXtuPTg1fX1lbHNle249ODN9fWVsc2V7bj04M319d2hpbGUoMCk7aWYoKG58MCk9PTgzP2g6MCl7bj04NX1pZigobnwwKT09ODUpe2Nbaj4+Ml09Y1tqPj4yXXwyfWM6ZG97aWYoIXApe2lmKChhW28+PjBdfDApPT0yKXtnPWZ9ZWxzZXt3aGlsZSgxKXtmPWYrMTJ8MDtvPW8rMXwwO2lmKChmfDApPT0oZ3wwKSl7bj05MDticmVhayBjfWlmKChhW28+PjBdfDApPT0yKXtnPWY7YnJlYWt9fX19ZWxzZXtuPTkwfX13aGlsZSgwKTtpZigobnwwKT09OTApe2Nbaj4+Ml09Y1tqPj4yXXw0fWlmKChsfDApPT0wKXtpPW07cmV0dXJuIGd8MH12bihsKTtpPW07cmV0dXJuIGd8MH1mdW5jdGlvbiBOaChiLGUsZixnLGgsaixrKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtlPWk7aT1pKzIyNHwwO3Y9ZSsxOTh8MDt1PWUrMTk2fDA7bj1lKzE2fDA7bz1lKzR8MDtxPWUrMTkyfDA7cz1lKzMyfDA7cj1lO3Q9ZSsyOHwwO3k9Y1tmPj4yXXwwO0E9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT04KXtnPTE2fWVsc2UgaWYoKGd8MCk9PTApe2c9MH1lbHNlIGlmKChnfDApPT02NCl7Zz04fWVsc2V7Zz0xMH1taShuLGgsdix1KTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qj1vKzF8MDt3PUI7Zj1vKzh8MH1lbHNle0I9bys4fDA7dz1vKzF8MDtmPUI7Qj1jW0I+PjJdfDB9Y1txPj4yXT1CO2Nbcj4+Ml09cztjW3Q+PjJdPTA7aD1vKzR8MDt4PWFbdT4+MF18MDt1PW8rOHwwO2E6d2hpbGUoMSl7aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9ej0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZih6KXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXope2JyZWFrIGF9fWVsc2V7bD0xOX19ZWxzZXtsPTE5fX13aGlsZSgwKTtpZigobHwwKT09MTkpe2w9MDtpZih6KXtBPTA7YnJlYWt9ZWxzZXtBPTB9fUQ9YVtvPj4wXXwwO0M9KEQmMSk9PTA7aWYoQyl7RT0oRCYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWlmKCgoY1txPj4yXXwwKS1CfDApPT0oRXwwKSl7aWYoQyl7Qj0oRCYyNTUpPj4+MTtFPShEJjI1NSk+Pj4xO0Q9Qjw8MX1lbHNle0I9Y1toPj4yXXwwO0U9Y1toPj4yXXwwO0Q9Qjw8MX1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUI8PDI7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtFPWFbbz4+MF18MDtpZigoRSYxKT09MCl7RD0xMH1lbHNle0Q9Y1tvPj4yXXwwO0U9RCYyNTU7RD0oRCYtMikrIC0xfDB9Qz0oRSYxKT09MDtpZihDKXtFPShFJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1EPDwxO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9d31lbHNle0M9Y1tmPj4yXXwwfWNbcT4+Ml09QytCO0I9Q31EPXkrMTJ8MDtFPWNbRD4+Ml18MDtDPXkrMTZ8MDtpZigoRXwwKT09KGNbQz4+Ml18MCkpe0U9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7RT1kW0U+PjBdfDB9aWYoKFhoKEUmMjU1LGcsQixxLHQseCxuLHMscix2KXwwKSE9MCl7YnJlYWt9ej1jW0Q+PjJdfDA7aWYoKHp8MCk9PShjW0M+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7Y29udGludWV9ZWxzZXtjW0Q+PjJdPXorMTtjb250aW51ZX19dj1hW24+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbbis0Pj4yXXwwfWlmKCh2fDApIT0wPyhwPWNbcj4+Ml18MCwocC1zfDApPDE2MCk6MCl7RT1jW3Q+PjJdfDA7Y1tyPj4yXT1wKzQ7Y1twPj4yXT1FfWNbaz4+Ml09Tm0oQixjW3E+PjJdfDAsaixnKXwwO3FrKG4scyxjW3I+PjJdfDAsaik7aWYoIXope2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9cD0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZihwKXticmVha31lbHNle2w9NzE7YnJlYWt9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXApe2w9NzF9fWVsc2V7bD02OX19ZWxzZXtsPTY5fX13aGlsZSgwKTtpZigobHwwKT09Njk/cDowKXtsPTcxfWlmKChsfDApPT03MSl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT15O2lmKCEoKGFbbz4+MF0mMSk9PTApPyhtPWNbdT4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoKGFbbj4+MF0mMSk9PTApe2k9ZTtyZXR1cm59bD1jW24rOD4+Ml18MDtpZigobHwwKT09MCl7aT1lO3JldHVybn12bihsKTtpPWU7cmV0dXJufWZ1bmN0aW9uIE9oKGIsZSxmLGcsaCxqLGspe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO2U9aTtpPWkrMjI0fDA7dj1lKzE5OHwwO3U9ZSsxOTZ8MDtuPWUrMTZ8MDtvPWUrNHwwO3E9ZSsxOTJ8MDtzPWUrMzJ8MDtyPWU7dD1lKzI4fDA7eT1jW2Y+PjJdfDA7QT1jW2c+PjJdfDA7Zz1jW2grND4+Ml0mNzQ7aWYoKGd8MCk9PTApe2c9MH1lbHNlIGlmKChnfDApPT04KXtnPTE2fWVsc2UgaWYoKGd8MCk9PTY0KXtnPTh9ZWxzZXtnPTEwfW1pKG4saCx2LHUpO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtCPW8rMXwwO3c9QjtmPW8rOHwwfWVsc2V7Qj1vKzh8MDt3PW8rMXwwO2Y9QjtCPWNbQj4+Ml18MH1jW3E+PjJdPUI7Y1tyPj4yXT1zO2NbdD4+Ml09MDtoPW8rNHwwO3g9YVt1Pj4wXXwwO3U9bys4fDA7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH16PSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHope2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZigheil7YnJlYWsgYX19ZWxzZXtsPTE5fX1lbHNle2w9MTl9fXdoaWxlKDApO2lmKChsfDApPT0xOSl7bD0wO2lmKHope0E9MDticmVha31lbHNle0E9MH19RD1hW28+PjBdfDA7Qz0oRCYxKT09MDtpZihDKXtFPShEJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9aWYoKChjW3E+PjJdfDApLUJ8MCk9PShFfDApKXtpZihDKXtCPShEJjI1NSk+Pj4xO0U9KEQmMjU1KT4+PjE7RD1CPDwxfWVsc2V7Qj1jW2g+PjJdfDA7RT1jW2g+PjJdfDA7RD1CPDwxfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09Qjw8MjticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO0U9YVtvPj4wXXwwO2lmKChFJjEpPT0wKXtEPTEwfWVsc2V7RD1jW28+PjJdfDA7RT1EJjI1NTtEPShEJi0yKSsgLTF8MH1DPShFJjEpPT0wO2lmKEMpe0U9KEUmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUQ8PDE7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz13fWVsc2V7Qz1jW2Y+PjJdfDB9Y1txPj4yXT1DK0I7Qj1DfUQ9eSsxMnwwO0U9Y1tEPj4yXXwwO0M9eSsxNnwwO2lmKChFfDApPT0oY1tDPj4yXXwwKSl7RT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtFPWRbRT4+MF18MH1pZigoWGgoRSYyNTUsZyxCLHEsdCx4LG4scyxyLHYpfDApIT0wKXticmVha316PWNbRD4+Ml18MDtpZigoenwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeT4+Ml18MCkrNDA+PjJdJjEyN10oeSl8MDtjb250aW51ZX1lbHNle2NbRD4+Ml09eisxO2NvbnRpbnVlfX12PWFbbj4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tuKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHA9Y1tyPj4yXXwwLChwLXN8MCk8MTYwKTowKXtFPWNbdD4+Ml18MDtjW3I+PjJdPXArNDtjW3A+PjJdPUV9RD1NbShCLGNbcT4+Ml18MCxqLGcpfDA7RT1rO2NbRT4+Ml09RDtjW0UrND4+Ml09STtxayhuLHMsY1tyPj4yXXwwLGopO2lmKCF6KXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXA9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYocCl7YnJlYWt9ZWxzZXtsPTcxO2JyZWFrfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCFwKXtsPTcxfX1lbHNle2w9Njl9fWVsc2V7bD02OX19d2hpbGUoMCk7aWYoKGx8MCk9PTY5P3A6MCl7bD03MX1pZigobHwwKT09NzEpe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09eTtpZighKChhW28+PjBdJjEpPT0wKT8obT1jW3U+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW24+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWw9Y1tuKzg+PjJdfDA7aWYoKGx8MCk9PTApe2k9ZTtyZXR1cm59dm4obCk7aT1lO3JldHVybn1mdW5jdGlvbiBQaChlLGYsZyxoLGosayxsKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MDtmPWk7aT1pKzIyNHwwO3c9ZisxOTh8MDt2PWYrMTk2fDA7bz1mKzE2fDA7cD1mKzR8MDtyPWYrMTkyfDA7dD1mKzMyfDA7cz1mO3U9ZisyOHwwO3o9Y1tnPj4yXXwwO0I9Y1toPj4yXXwwO2g9Y1tqKzQ+PjJdJjc0O2lmKChofDApPT04KXtoPTE2fWVsc2UgaWYoKGh8MCk9PTY0KXtoPTh9ZWxzZSBpZigoaHwwKT09MCl7aD0wfWVsc2V7aD0xMH1taShvLGosdyx2KTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtoZyhwLDEwKTtpZigoYVtwPj4wXSYxKT09MCl7Qz1wKzF8MDt4PUM7Zz1wKzh8MH1lbHNle0M9cCs4fDA7eD1wKzF8MDtnPUM7Qz1jW0M+PjJdfDB9Y1tyPj4yXT1DO2Nbcz4+Ml09dDtjW3U+PjJdPTA7aj1wKzR8MDt5PWFbdj4+MF18MDt2PXArOHwwO2E6d2hpbGUoMSl7aWYoKHp8MCkhPTApe2lmKChjW3orMTI+PjJdfDApPT0oY1t6KzE2Pj4yXXwwKSl7Rj0ob2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwKT09LTE7ej1GPzA6en19ZWxzZXt6PTB9QT0oenwwKT09MDtkb3tpZigoQnwwKSE9MCl7aWYoKGNbQisxMj4+Ml18MCkhPShjW0IrMTY+PjJdfDApKXtpZihBKXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MCk9PS0xKSl7aWYoIUEpe2JyZWFrIGF9fWVsc2V7bT0xOX19ZWxzZXttPTE5fX13aGlsZSgwKTtpZigobXwwKT09MTkpe209MDtpZihBKXtCPTA7YnJlYWt9ZWxzZXtCPTB9fUU9YVtwPj4wXXwwO0Q9KEUmMSk9PTA7aWYoRCl7Rj0oRSYyNTUpPj4+MX1lbHNle0Y9Y1tqPj4yXXwwfWlmKCgoY1tyPj4yXXwwKS1DfDApPT0oRnwwKSl7aWYoRCl7Qz0oRSYyNTUpPj4+MTtGPShFJjI1NSk+Pj4xO0U9Qzw8MX1lbHNle0M9Y1tqPj4yXXwwO0Y9Y1tqPj4yXXwwO0U9Qzw8MX1kb3tpZighKEY+Pj4wPEU+Pj4wKSl7aWYoRCl7YVtwK0UrMT4+MF09MDthW3A+PjBdPUM8PDI7YnJlYWt9ZWxzZXthWyhjW3Y+PjJdfDApK0U+PjBdPTA7Y1tqPj4yXT1FO2JyZWFrfX1lbHNle2hnKHAsRS1GfDApfX13aGlsZSgwKTtGPWFbcD4+MF18MDtpZigoRiYxKT09MCl7RT0xMH1lbHNle0U9Y1twPj4yXXwwO0Y9RSYyNTU7RT0oRSYtMikrIC0xfDB9RD0oRiYxKT09MDtpZihEKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW2o+PjJdfDB9ZG97aWYoIShGPj4+MDxFPj4+MCkpe2lmKEQpe2FbcCtFKzE+PjBdPTA7YVtwPj4wXT1FPDwxO2JyZWFrfWVsc2V7YVsoY1t2Pj4yXXwwKStFPj4wXT0wO2Nbaj4+Ml09RTticmVha319ZWxzZXtoZyhwLEUtRnwwKX19d2hpbGUoMCk7aWYoKGFbcD4+MF0mMSk9PTApe0Q9eH1lbHNle0Q9Y1tnPj4yXXwwfWNbcj4+Ml09RCtDO0M9RH1FPXorMTJ8MDtGPWNbRT4+Ml18MDtEPXorMTZ8MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe0Y9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7Rj1kW0Y+PjBdfDB9aWYoKFhoKEYmMjU1LGgsQyxyLHUseSxvLHQscyx3KXwwKSE9MCl7YnJlYWt9QT1jW0U+PjJdfDA7aWYoKEF8MCk9PShjW0Q+PjJdfDApKXtvY1tjWyhjW3o+PjJdfDApKzQwPj4yXSYxMjddKHopfDA7Y29udGludWV9ZWxzZXtjW0U+PjJdPUErMTtjb250aW51ZX19dz1hW28+PjBdfDA7aWYoKHcmMSk9PTApe3c9KHcmMjU1KT4+PjF9ZWxzZXt3PWNbbys0Pj4yXXwwfWlmKCh3fDApIT0wPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7Rj1jW3U+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1GfWJbbD4+MV09TG0oQyxjW3I+PjJdfDAsayxoKXwwO3FrKG8sdCxjW3M+PjJdfDAsayk7aWYoIUEpe2lmKChjW3orMTI+PjJdfDApPT0oY1t6KzE2Pj4yXXwwKSl7Rj0ob2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwKT09LTE7ej1GPzA6en19ZWxzZXt6PTB9cT0oenwwKT09MDtkb3tpZigoQnwwKSE9MCl7aWYoKGNbQisxMj4+Ml18MCkhPShjW0IrMTY+PjJdfDApKXtpZihxKXticmVha31lbHNle209NzE7YnJlYWt9fWlmKCEoKG9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MCk9PS0xKSl7aWYoIXEpe209NzF9fWVsc2V7bT02OX19ZWxzZXttPTY5fX13aGlsZSgwKTtpZigobXwwKT09Njk/cTowKXttPTcxfWlmKChtfDApPT03MSl7Y1trPj4yXT1jW2s+PjJdfDJ9Y1tlPj4yXT16O2lmKCEoKGFbcD4+MF0mMSk9PTApPyhuPWNbdj4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZjtyZXR1cm59bT1jW28rOD4+Ml18MDtpZigobXwwKT09MCl7aT1mO3JldHVybn12bihtKTtpPWY7cmV0dXJufWZ1bmN0aW9uIFFoKGIsZSxmLGcsaCxqLGspe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO2U9aTtpPWkrMjI0fDA7dj1lKzE5OHwwO3U9ZSsxOTZ8MDtuPWUrMTZ8MDtvPWUrNHwwO3E9ZSsxOTJ8MDtzPWUrMzJ8MDtyPWU7dD1lKzI4fDA7eT1jW2Y+PjJdfDA7QT1jW2c+PjJdfDA7Zz1jW2grND4+Ml0mNzQ7aWYoKGd8MCk9PTY0KXtnPTh9ZWxzZSBpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT0wKXtnPTB9ZWxzZXtnPTEwfW1pKG4saCx2LHUpO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtCPW8rMXwwO3c9QjtmPW8rOHwwfWVsc2V7Qj1vKzh8MDt3PW8rMXwwO2Y9QjtCPWNbQj4+Ml18MH1jW3E+PjJdPUI7Y1tyPj4yXT1zO2NbdD4+Ml09MDtoPW8rNHwwO3g9YVt1Pj4wXXwwO3U9bys4fDA7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH16PSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHope2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZigheil7YnJlYWsgYX19ZWxzZXtsPTE5fX1lbHNle2w9MTl9fXdoaWxlKDApO2lmKChsfDApPT0xOSl7bD0wO2lmKHope0E9MDticmVha31lbHNle0E9MH19RD1hW28+PjBdfDA7Qz0oRCYxKT09MDtpZihDKXtFPShEJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9aWYoKChjW3E+PjJdfDApLUJ8MCk9PShFfDApKXtpZihDKXtCPShEJjI1NSk+Pj4xO0U9KEQmMjU1KT4+PjE7RD1CPDwxfWVsc2V7Qj1jW2g+PjJdfDA7RT1jW2g+PjJdfDA7RD1CPDwxfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09Qjw8MjticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO0U9YVtvPj4wXXwwO2lmKChFJjEpPT0wKXtEPTEwfWVsc2V7RD1jW28+PjJdfDA7RT1EJjI1NTtEPShEJi0yKSsgLTF8MH1DPShFJjEpPT0wO2lmKEMpe0U9KEUmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUQ8PDE7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz13fWVsc2V7Qz1jW2Y+PjJdfDB9Y1txPj4yXT1DK0I7Qj1DfUQ9eSsxMnwwO0U9Y1tEPj4yXXwwO0M9eSsxNnwwO2lmKChFfDApPT0oY1tDPj4yXXwwKSl7RT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtFPWRbRT4+MF18MH1pZigoWGgoRSYyNTUsZyxCLHEsdCx4LG4scyxyLHYpfDApIT0wKXticmVha316PWNbRD4+Ml18MDtpZigoenwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeT4+Ml18MCkrNDA+PjJdJjEyN10oeSl8MDtjb250aW51ZX1lbHNle2NbRD4+Ml09eisxO2NvbnRpbnVlfX12PWFbbj4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tuKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHA9Y1tyPj4yXXwwLChwLXN8MCk8MTYwKTowKXtFPWNbdD4+Ml18MDtjW3I+PjJdPXArNDtjW3A+PjJdPUV9Y1trPj4yXT1LbShCLGNbcT4+Ml18MCxqLGcpfDA7cWsobixzLGNbcj4+Ml18MCxqKTtpZigheil7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH1wPSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHApe2JyZWFrfWVsc2V7bD03MTticmVha319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZighcCl7bD03MX19ZWxzZXtsPTY5fX1lbHNle2w9Njl9fXdoaWxlKDApO2lmKChsfDApPT02OT9wOjApe2w9NzF9aWYoKGx8MCk9PTcxKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPXk7aWYoISgoYVtvPj4wXSYxKT09MCk/KG09Y1t1Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtuPj4wXSYxKT09MCl7aT1lO3JldHVybn1sPWNbbis4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWU7cmV0dXJufXZuKGwpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gUmgoYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7ZT1pO2k9aSsyMjR8MDt2PWUrMTk4fDA7dT1lKzE5NnwwO249ZSsxNnwwO289ZSs0fDA7cT1lKzE5MnwwO3M9ZSszMnwwO3I9ZTt0PWUrMjh8MDt5PWNbZj4+Ml18MDtBPWNbZz4+Ml18MDtnPWNbaCs0Pj4yXSY3NDtpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09NjQpe2c9OH1lbHNle2c9MTB9bWkobixoLHYsdSk7Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTA7aGcobywxMCk7aWYoKGFbbz4+MF0mMSk9PTApe0I9bysxfDA7dz1CO2Y9bys4fDB9ZWxzZXtCPW8rOHwwO3c9bysxfDA7Zj1CO0I9Y1tCPj4yXXwwfWNbcT4+Ml09QjtjW3I+PjJdPXM7Y1t0Pj4yXT0wO2g9bys0fDA7eD1hW3U+PjBdfDA7dT1vKzh8MDthOndoaWxlKDEpe2lmKCh5fDApIT0wKXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXo9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYoeil7YnJlYWt9ZWxzZXticmVhayBhfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCF6KXticmVhayBhfX1lbHNle2w9MTl9fWVsc2V7bD0xOX19d2hpbGUoMCk7aWYoKGx8MCk9PTE5KXtsPTA7aWYoeil7QT0wO2JyZWFrfWVsc2V7QT0wfX1EPWFbbz4+MF18MDtDPShEJjEpPT0wO2lmKEMpe0U9KEQmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1pZigoKGNbcT4+Ml18MCktQnwwKT09KEV8MCkpe2lmKEMpe0I9KEQmMjU1KT4+PjE7RT0oRCYyNTUpPj4+MTtEPUI8PDF9ZWxzZXtCPWNbaD4+Ml18MDtFPWNbaD4+Ml18MDtEPUI8PDF9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1CPDwyO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7RT1hW28+PjBdfDA7aWYoKEUmMSk9PTApe0Q9MTB9ZWxzZXtEPWNbbz4+Ml18MDtFPUQmMjU1O0Q9KEQmLTIpKyAtMXwwfUM9KEUmMSk9PTA7aWYoQyl7RT0oRSYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09RDw8MTticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO2lmKChhW28+PjBdJjEpPT0wKXtDPXd9ZWxzZXtDPWNbZj4+Ml18MH1jW3E+PjJdPUMrQjtCPUN9RD15KzEyfDA7RT1jW0Q+PjJdfDA7Qz15KzE2fDA7aWYoKEV8MCk9PShjW0M+PjJdfDApKXtFPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0U9ZFtFPj4wXXwwfWlmKChYaChFJjI1NSxnLEIscSx0LHgsbixzLHIsdil8MCkhPTApe2JyZWFrfXo9Y1tEPj4yXXwwO2lmKCh6fDApPT0oY1tDPj4yXXwwKSl7b2NbY1soY1t5Pj4yXXwwKSs0MD4+Ml0mMTI3XSh5KXwwO2NvbnRpbnVlfWVsc2V7Y1tEPj4yXT16KzE7Y29udGludWV9fXY9YVtuPj4wXXwwO2lmKCh2JjEpPT0wKXt2PSh2JjI1NSk+Pj4xfWVsc2V7dj1jW24rND4+Ml18MH1pZigodnwwKSE9MD8ocD1jW3I+PjJdfDAsKHAtc3wwKTwxNjApOjApe0U9Y1t0Pj4yXXwwO2Nbcj4+Ml09cCs0O2NbcD4+Ml09RX1jW2s+PjJdPUptKEIsY1txPj4yXXwwLGosZyl8MDtxayhuLHMsY1tyPj4yXXwwLGopO2lmKCF6KXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXA9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYocCl7YnJlYWt9ZWxzZXtsPTcxO2JyZWFrfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCFwKXtsPTcxfX1lbHNle2w9Njl9fWVsc2V7bD02OX19d2hpbGUoMCk7aWYoKGx8MCk9PTY5P3A6MCl7bD03MX1pZigobHwwKT09NzEpe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09eTtpZighKChhW28+PjBdJjEpPT0wKT8obT1jW3U+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW24+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWw9Y1tuKzg+PjJdfDA7aWYoKGx8MCk9PTApe2k9ZTtyZXR1cm59dm4obCk7aT1lO3JldHVybn1mdW5jdGlvbiBTaChiLGUsZixnLGgsaixrKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtlPWk7aT1pKzIyNHwwO3Y9ZSsxOTh8MDt1PWUrMTk2fDA7bj1lKzE2fDA7bz1lKzR8MDtxPWUrMTkyfDA7cz1lKzMyfDA7cj1lO3Q9ZSsyOHwwO3k9Y1tmPj4yXXwwO0E9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT02NCl7Zz04fWVsc2V7Zz0xMH1taShuLGgsdix1KTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qj1vKzF8MDt3PUI7Zj1vKzh8MH1lbHNle0I9bys4fDA7dz1vKzF8MDtmPUI7Qj1jW0I+PjJdfDB9Y1txPj4yXT1CO2Nbcj4+Ml09cztjW3Q+PjJdPTA7aD1vKzR8MDt4PWFbdT4+MF18MDt1PW8rOHwwO2E6d2hpbGUoMSl7aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9ej0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZih6KXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXope2JyZWFrIGF9fWVsc2V7bD0xOX19ZWxzZXtsPTE5fX13aGlsZSgwKTtpZigobHwwKT09MTkpe2w9MDtpZih6KXtBPTA7YnJlYWt9ZWxzZXtBPTB9fUQ9YVtvPj4wXXwwO0M9KEQmMSk9PTA7aWYoQyl7RT0oRCYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWlmKCgoY1txPj4yXXwwKS1CfDApPT0oRXwwKSl7aWYoQyl7Qj0oRCYyNTUpPj4+MTtFPShEJjI1NSk+Pj4xO0Q9Qjw8MX1lbHNle0I9Y1toPj4yXXwwO0U9Y1toPj4yXXwwO0Q9Qjw8MX1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUI8PDI7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtFPWFbbz4+MF18MDtpZigoRSYxKT09MCl7RD0xMH1lbHNle0Q9Y1tvPj4yXXwwO0U9RCYyNTU7RD0oRCYtMikrIC0xfDB9Qz0oRSYxKT09MDtpZihDKXtFPShFJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1EPDwxO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9d31lbHNle0M9Y1tmPj4yXXwwfWNbcT4+Ml09QytCO0I9Q31EPXkrMTJ8MDtFPWNbRD4+Ml18MDtDPXkrMTZ8MDtpZigoRXwwKT09KGNbQz4+Ml18MCkpe0U9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7RT1kW0U+PjBdfDB9aWYoKFhoKEUmMjU1LGcsQixxLHQseCxuLHMscix2KXwwKSE9MCl7YnJlYWt9ej1jW0Q+PjJdfDA7aWYoKHp8MCk9PShjW0M+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7Y29udGludWV9ZWxzZXtjW0Q+PjJdPXorMTtjb250aW51ZX19dj1hW24+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbbis0Pj4yXXwwfWlmKCh2fDApIT0wPyhwPWNbcj4+Ml18MCwocC1zfDApPDE2MCk6MCl7RT1jW3Q+PjJdfDA7Y1tyPj4yXT1wKzQ7Y1twPj4yXT1FfUQ9SW0oQixjW3E+PjJdfDAsaixnKXwwO0U9aztjW0U+PjJdPUQ7Y1tFKzQ+PjJdPUk7cWsobixzLGNbcj4+Ml18MCxqKTtpZigheil7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH1wPSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHApe2JyZWFrfWVsc2V7bD03MTticmVha319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZighcCl7bD03MX19ZWxzZXtsPTY5fX1lbHNle2w9Njl9fXdoaWxlKDApO2lmKChsfDApPT02OT9wOjApe2w9NzF9aWYoKGx8MCk9PTcxKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPXk7aWYoISgoYVtvPj4wXSYxKT09MCk/KG09Y1t1Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtuPj4wXSYxKT09MCl7aT1lO3JldHVybn1sPWNbbis4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWU7cmV0dXJufXZuKGwpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gVGgoYixlLGYsaCxqLGssbCl7Yj1ifDA7ZT1lfDA7Zj1mfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtlPWk7aT1pKzI1NnwwO3g9ZSsyMDh8MDt6PWUrMjAwfDA7dz1lKzI0MHwwO289ZTtwPWUrMTg4fDA7dj1lKzE4NHwwO3Q9ZSsxNnwwO3M9ZSsxNzZ8MDtyPWUrMTgwfDA7dT1lKzI0MXwwO3k9ZSsyNDJ8MDtBPWNbZj4+Ml18MDtEPWNbaD4+Ml18MDtuaShvLGoseCx6LHcpO2NbcCswPj4yXT0wO2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0wO2hnKHAsMTApO2lmKChhW3A+PjBdJjEpPT0wKXtFPXArMXwwO2g9RTtmPXArOHwwfWVsc2V7RT1wKzh8MDtoPXArMXwwO2Y9RTtFPWNbRT4+Ml18MH1jW3Y+PjJdPUU7Y1tzPj4yXT10O2Nbcj4+Ml09MDthW3U+PjBdPTE7YVt5Pj4wXT02OTtqPXArNHwwO3o9YVt6Pj4wXXwwO0I9YVt3Pj4wXXwwO3c9cCs4fDA7YTp3aGlsZSgxKXtpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCk9PShjW0ErMTY+PjJdfDApKXtIPShvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMTtBPUg/MDpBfX1lbHNle0E9MH1DPShBfDApPT0wO2Rve2lmKChEfDApIT0wKXtpZigoY1tEKzEyPj4yXXwwKSE9KGNbRCsxNj4+Ml18MCkpe2lmKEMpe2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwKT09LTEpKXtpZighQyl7YnJlYWsgYX19ZWxzZXttPTE1fX1lbHNle209MTV9fXdoaWxlKDApO2lmKChtfDApPT0xNSl7bT0wO2lmKEMpe0Q9MDticmVha31lbHNle0Q9MH19Rz1hW3A+PjBdfDA7Rj0oRyYxKT09MDtpZihGKXtIPShHJjI1NSk+Pj4xfWVsc2V7SD1jW2o+PjJdfDB9aWYoKChjW3Y+PjJdfDApLUV8MCk9PShIfDApKXtpZihGKXtFPShHJjI1NSk+Pj4xO0c9KEcmMjU1KT4+PjE7SD1FPDwxfWVsc2V7RT1jW2o+PjJdfDA7Rz1jW2o+PjJdfDA7SD1FPDwxfWRve2lmKCEoRz4+PjA8SD4+PjApKXtpZihGKXthW3ArSCsxPj4wXT0wO2FbcD4+MF09RTw8MjticmVha31lbHNle2FbKGNbdz4+Ml18MCkrSD4+MF09MDtjW2o+PjJdPUg7YnJlYWt9fWVsc2V7aGcocCxILUd8MCl9fXdoaWxlKDApO0g9YVtwPj4wXXwwO2lmKChIJjEpPT0wKXtHPTEwfWVsc2V7Rz1jW3A+PjJdfDA7SD1HJjI1NTtHPShHJi0yKSsgLTF8MH1GPShIJjEpPT0wO2lmKEYpe0g9KEgmMjU1KT4+PjF9ZWxzZXtIPWNbaj4+Ml18MH1kb3tpZighKEg+Pj4wPEc+Pj4wKSl7aWYoRil7YVtwK0crMT4+MF09MDthW3A+PjBdPUc8PDE7YnJlYWt9ZWxzZXthWyhjW3c+PjJdfDApK0c+PjBdPTA7Y1tqPj4yXT1HO2JyZWFrfX1lbHNle2hnKHAsRy1IfDApfX13aGlsZSgwKTtpZigoYVtwPj4wXSYxKT09MCl7Rj1ofWVsc2V7Rj1jW2Y+PjJdfDB9Y1t2Pj4yXT1GK0U7RT1GfUc9QSsxMnwwO0g9Y1tHPj4yXXwwO0Y9QSsxNnwwO2lmKChIfDApPT0oY1tGPj4yXXwwKSl7SD1vY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDB9ZWxzZXtIPWRbSD4+MF18MH1pZigob2koSCYyNTUsdSx5LEUsdix6LEIsbyx0LHMscix4KXwwKSE9MCl7YnJlYWt9Qz1jW0c+PjJdfDA7aWYoKEN8MCk9PShjW0Y+PjJdfDApKXtvY1tjWyhjW0E+PjJdfDApKzQwPj4yXSYxMjddKEEpfDA7Y29udGludWV9ZWxzZXtjW0c+PjJdPUMrMTtjb250aW51ZX19eD1hW28+PjBdfDA7aWYoKHgmMSk9PTApe3g9KHgmMjU1KT4+PjF9ZWxzZXt4PWNbbys0Pj4yXXwwfWlmKCgoeHwwKSE9MD8oYVt1Pj4wXXwwKSE9MDowKT8ocT1jW3M+PjJdfDAsKHEtdHwwKTwxNjApOjApe0g9Y1tyPj4yXXwwO2Nbcz4+Ml09cSs0O2NbcT4+Ml09SH1nW2w+PjJdPStIbShFLGNbdj4+Ml18MCxrKTtxayhvLHQsY1tzPj4yXXwwLGspO2lmKCFDKXtpZigoY1tBKzEyPj4yXXwwKT09KGNbQSsxNj4+Ml18MCkpe0g9KG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xO0E9SD8wOkF9fWVsc2V7QT0wfWw9KEF8MCk9PTA7ZG97aWYoKER8MCkhPTApe2lmKChjW0QrMTI+PjJdfDApIT0oY1tEKzE2Pj4yXXwwKSl7aWYobCl7YnJlYWt9ZWxzZXttPTY4O2JyZWFrfX1pZighKChvY1tjWyhjW0Q+PjJdfDApKzM2Pj4yXSYxMjddKEQpfDApPT0tMSkpe2lmKCFsKXttPTY4fX1lbHNle209NjZ9fWVsc2V7bT02Nn19d2hpbGUoMCk7aWYoKG18MCk9PTY2P2w6MCl7bT02OH1pZigobXwwKT09Njgpe2Nbaz4+Ml09Y1trPj4yXXwyfWNbYj4+Ml09QTtpZighKChhW3A+PjBdJjEpPT0wKT8obj1jW3c+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKChhW28+PjBdJjEpPT0wKXtpPWU7cmV0dXJufW09Y1tvKzg+PjJdfDA7aWYoKG18MCk9PTApe2k9ZTtyZXR1cm59dm4obSk7aT1lO3JldHVybn1mdW5jdGlvbiBVaChiLGUsZixnLGosayxsKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wO2U9aTtpPWkrMjU2fDA7eD1lKzIwOHwwO3o9ZSsyMDB8MDt3PWUrMjQwfDA7bz1lO3A9ZSsxODh8MDt2PWUrMTg0fDA7dD1lKzE2fDA7cz1lKzE3NnwwO3I9ZSsxODB8MDt1PWUrMjQxfDA7eT1lKzI0MnwwO0E9Y1tmPj4yXXwwO0Q9Y1tnPj4yXXwwO25pKG8saix4LHosdyk7Y1twKzA+PjJdPTA7Y1twKzQ+PjJdPTA7Y1twKzg+PjJdPTA7aGcocCwxMCk7aWYoKGFbcD4+MF0mMSk9PTApe0U9cCsxfDA7Zz1FO2Y9cCs4fDB9ZWxzZXtFPXArOHwwO2c9cCsxfDA7Zj1FO0U9Y1tFPj4yXXwwfWNbdj4+Ml09RTtjW3M+PjJdPXQ7Y1tyPj4yXT0wO2FbdT4+MF09MTthW3k+PjBdPTY5O2o9cCs0fDA7ej1hW3o+PjBdfDA7Qj1hW3c+PjBdfDA7dz1wKzh8MDthOndoaWxlKDEpe2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKT09KGNbQSsxNj4+Ml18MCkpe0g9KG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xO0E9SD8wOkF9fWVsc2V7QT0wfUM9KEF8MCk9PTA7ZG97aWYoKER8MCkhPTApe2lmKChjW0QrMTI+PjJdfDApIT0oY1tEKzE2Pj4yXXwwKSl7aWYoQyl7YnJlYWt9ZWxzZXticmVhayBhfX1pZighKChvY1tjWyhjW0Q+PjJdfDApKzM2Pj4yXSYxMjddKEQpfDApPT0tMSkpe2lmKCFDKXticmVhayBhfX1lbHNle209MTV9fWVsc2V7bT0xNX19d2hpbGUoMCk7aWYoKG18MCk9PTE1KXttPTA7aWYoQyl7RD0wO2JyZWFrfWVsc2V7RD0wfX1HPWFbcD4+MF18MDtGPShHJjEpPT0wO2lmKEYpe0g9KEcmMjU1KT4+PjF9ZWxzZXtIPWNbaj4+Ml18MH1pZigoKGNbdj4+Ml18MCktRXwwKT09KEh8MCkpe2lmKEYpe0U9KEcmMjU1KT4+PjE7Rz0oRyYyNTUpPj4+MTtIPUU8PDF9ZWxzZXtFPWNbaj4+Ml18MDtHPWNbaj4+Ml18MDtIPUU8PDF9ZG97aWYoIShHPj4+MDxIPj4+MCkpe2lmKEYpe2FbcCtIKzE+PjBdPTA7YVtwPj4wXT1FPDwyO2JyZWFrfWVsc2V7YVsoY1t3Pj4yXXwwKStIPj4wXT0wO2Nbaj4+Ml09SDticmVha319ZWxzZXtoZyhwLEgtR3wwKX19d2hpbGUoMCk7SD1hW3A+PjBdfDA7aWYoKEgmMSk9PTApe0c9MTB9ZWxzZXtHPWNbcD4+Ml18MDtIPUcmMjU1O0c9KEcmLTIpKyAtMXwwfUY9KEgmMSk9PTA7aWYoRil7SD0oSCYyNTUpPj4+MX1lbHNle0g9Y1tqPj4yXXwwfWRve2lmKCEoSD4+PjA8Rz4+PjApKXtpZihGKXthW3ArRysxPj4wXT0wO2FbcD4+MF09Rzw8MTticmVha31lbHNle2FbKGNbdz4+Ml18MCkrRz4+MF09MDtjW2o+PjJdPUc7YnJlYWt9fWVsc2V7aGcocCxHLUh8MCl9fXdoaWxlKDApO2lmKChhW3A+PjBdJjEpPT0wKXtGPWd9ZWxzZXtGPWNbZj4+Ml18MH1jW3Y+PjJdPUYrRTtFPUZ9Rz1BKzEyfDA7SD1jW0c+PjJdfDA7Rj1BKzE2fDA7aWYoKEh8MCk9PShjW0Y+PjJdfDApKXtIPW9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MH1lbHNle0g9ZFtIPj4wXXwwfWlmKChvaShIJjI1NSx1LHksRSx2LHosQixvLHQscyxyLHgpfDApIT0wKXticmVha31DPWNbRz4+Ml18MDtpZigoQ3wwKT09KGNbRj4+Ml18MCkpe29jW2NbKGNbQT4+Ml18MCkrNDA+PjJdJjEyN10oQSl8MDtjb250aW51ZX1lbHNle2NbRz4+Ml09QysxO2NvbnRpbnVlfX14PWFbbz4+MF18MDtpZigoeCYxKT09MCl7eD0oeCYyNTUpPj4+MX1lbHNle3g9Y1tvKzQ+PjJdfDB9aWYoKCh4fDApIT0wPyhhW3U+PjBdfDApIT0wOjApPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7SD1jW3I+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1IfWhbbD4+M109K0dtKEUsY1t2Pj4yXXwwLGspO3FrKG8sdCxjW3M+PjJdfDAsayk7aWYoIUMpe2lmKChjW0ErMTI+PjJdfDApPT0oY1tBKzE2Pj4yXXwwKSl7SD0ob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTE7QT1IPzA6QX19ZWxzZXtBPTB9bD0oQXwwKT09MDtkb3tpZigoRHwwKSE9MCl7aWYoKGNbRCsxMj4+Ml18MCkhPShjW0QrMTY+PjJdfDApKXtpZihsKXticmVha31lbHNle209Njg7YnJlYWt9fWlmKCEoKG9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MCk9PS0xKSl7aWYoIWwpe209Njh9fWVsc2V7bT02Nn19ZWxzZXttPTY2fX13aGlsZSgwKTtpZigobXwwKT09NjY/bDowKXttPTY4fWlmKChtfDApPT02OCl7Y1trPj4yXT1jW2s+PjJdfDJ9Y1tiPj4yXT1BO2lmKCEoKGFbcD4+MF0mMSk9PTApPyhuPWNbdz4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZTtyZXR1cm59bT1jW28rOD4+Ml18MDtpZigobXwwKT09MCl7aT1lO3JldHVybn12bihtKTtpPWU7cmV0dXJufWZ1bmN0aW9uIFZoKGIsZSxmLGcsaixrLGwpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7ZT1pO2k9aSsyNTZ8MDt4PWUrMjA4fDA7ej1lKzIwMHwwO3c9ZSsyNDB8MDtvPWU7cD1lKzE4OHwwO3Y9ZSsxODR8MDt0PWUrMTZ8MDtzPWUrMTc2fDA7cj1lKzE4MHwwO3U9ZSsyNDF8MDt5PWUrMjQyfDA7QT1jW2Y+PjJdfDA7RD1jW2c+PjJdfDA7bmkobyxqLHgseix3KTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtoZyhwLDEwKTtpZigoYVtwPj4wXSYxKT09MCl7RT1wKzF8MDtnPUU7Zj1wKzh8MH1lbHNle0U9cCs4fDA7Zz1wKzF8MDtmPUU7RT1jW0U+PjJdfDB9Y1t2Pj4yXT1FO2Nbcz4+Ml09dDtjW3I+PjJdPTA7YVt1Pj4wXT0xO2FbeT4+MF09Njk7aj1wKzR8MDt6PWFbej4+MF18MDtCPWFbdz4+MF18MDt3PXArOHwwO2E6d2hpbGUoMSl7aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApPT0oY1tBKzE2Pj4yXXwwKSl7SD0ob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTE7QT1IPzA6QX19ZWxzZXtBPTB9Qz0oQXwwKT09MDtkb3tpZigoRHwwKSE9MCl7aWYoKGNbRCsxMj4+Ml18MCkhPShjW0QrMTY+PjJdfDApKXtpZihDKXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MCk9PS0xKSl7aWYoIUMpe2JyZWFrIGF9fWVsc2V7bT0xNX19ZWxzZXttPTE1fX13aGlsZSgwKTtpZigobXwwKT09MTUpe209MDtpZihDKXtEPTA7YnJlYWt9ZWxzZXtEPTB9fUc9YVtwPj4wXXwwO0Y9KEcmMSk9PTA7aWYoRil7SD0oRyYyNTUpPj4+MX1lbHNle0g9Y1tqPj4yXXwwfWlmKCgoY1t2Pj4yXXwwKS1FfDApPT0oSHwwKSl7aWYoRil7RT0oRyYyNTUpPj4+MTtHPShHJjI1NSk+Pj4xO0g9RTw8MX1lbHNle0U9Y1tqPj4yXXwwO0c9Y1tqPj4yXXwwO0g9RTw8MX1kb3tpZighKEc+Pj4wPEg+Pj4wKSl7aWYoRil7YVtwK0grMT4+MF09MDthW3A+PjBdPUU8PDI7YnJlYWt9ZWxzZXthWyhjW3c+PjJdfDApK0g+PjBdPTA7Y1tqPj4yXT1IO2JyZWFrfX1lbHNle2hnKHAsSC1HfDApfX13aGlsZSgwKTtIPWFbcD4+MF18MDtpZigoSCYxKT09MCl7Rz0xMH1lbHNle0c9Y1twPj4yXXwwO0g9RyYyNTU7Rz0oRyYtMikrIC0xfDB9Rj0oSCYxKT09MDtpZihGKXtIPShIJjI1NSk+Pj4xfWVsc2V7SD1jW2o+PjJdfDB9ZG97aWYoIShIPj4+MDxHPj4+MCkpe2lmKEYpe2FbcCtHKzE+PjBdPTA7YVtwPj4wXT1HPDwxO2JyZWFrfWVsc2V7YVsoY1t3Pj4yXXwwKStHPj4wXT0wO2Nbaj4+Ml09RzticmVha319ZWxzZXtoZyhwLEctSHwwKX19d2hpbGUoMCk7aWYoKGFbcD4+MF0mMSk9PTApe0Y9Z31lbHNle0Y9Y1tmPj4yXXwwfWNbdj4+Ml09RitFO0U9Rn1HPUErMTJ8MDtIPWNbRz4+Ml18MDtGPUErMTZ8MDtpZigoSHwwKT09KGNbRj4+Ml18MCkpe0g9b2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwfWVsc2V7SD1kW0g+PjBdfDB9aWYoKG9pKEgmMjU1LHUseSxFLHYseixCLG8sdCxzLHIseCl8MCkhPTApe2JyZWFrfUM9Y1tHPj4yXXwwO2lmKChDfDApPT0oY1tGPj4yXXwwKSl7b2NbY1soY1tBPj4yXXwwKSs0MD4+Ml0mMTI3XShBKXwwO2NvbnRpbnVlfWVsc2V7Y1tHPj4yXT1DKzE7Y29udGludWV9fXg9YVtvPj4wXXwwO2lmKCh4JjEpPT0wKXt4PSh4JjI1NSk+Pj4xfWVsc2V7eD1jW28rND4+Ml18MH1pZigoKHh8MCkhPTA/KGFbdT4+MF18MCkhPTA6MCk/KHE9Y1tzPj4yXXwwLChxLXR8MCk8MTYwKTowKXtIPWNbcj4+Ml18MDtjW3M+PjJdPXErNDtjW3E+PjJdPUh9aFtsPj4zXT0rRm0oRSxjW3Y+PjJdfDAsayk7cWsobyx0LGNbcz4+Ml18MCxrKTtpZighQyl7aWYoKGNbQSsxMj4+Ml18MCk9PShjW0ErMTY+PjJdfDApKXtIPShvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMTtBPUg/MDpBfX1lbHNle0E9MH1sPShBfDApPT0wO2Rve2lmKChEfDApIT0wKXtpZigoY1tEKzEyPj4yXXwwKSE9KGNbRCsxNj4+Ml18MCkpe2lmKGwpe2JyZWFrfWVsc2V7bT02ODticmVha319aWYoISgob2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwKT09LTEpKXtpZighbCl7bT02OH19ZWxzZXttPTY2fX1lbHNle209NjZ9fXdoaWxlKDApO2lmKChtfDApPT02Nj9sOjApe209Njh9aWYoKG18MCk9PTY4KXtjW2s+PjJdPWNbaz4+Ml18Mn1jW2I+PjJdPUE7aWYoISgoYVtwPj4wXSYxKT09MCk/KG49Y1t3Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZigoYVtvPj4wXSYxKT09MCl7aT1lO3JldHVybn1tPWNbbys4Pj4yXXwwO2lmKChtfDApPT0wKXtpPWU7cmV0dXJufXZuKG0pO2k9ZTtyZXR1cm59ZnVuY3Rpb24gV2goYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtlPWk7aT1pKzIyNHwwO249ZTtvPWUrMTg4fDA7bT1lKzE3NnwwO3c9ZSsxNnwwO3E9Y1toKzI4Pj4yXXwwO0Q9cSs0fDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ1NjtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDU2LG4pfWg9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3I9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcj4+Mj4+PjA+aD4+PjA/KHA9Y1tyKyhoPDwyKT4+Ml18MCwocHwwKSE9MCk6MCl7dWNbY1soY1twPj4yXXwwKSszMj4+Ml0mMzFdKHAsMTIwMTYsMTIwNDJ8MCxvKXwwO0M9cSs0fDA7RD1jW0M+PjJdfDA7Y1tDPj4yXT1EKyAtMTtpZigoRHwwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfWNbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2g9ejtxPW0rOHwwfWVsc2V7ej1tKzh8MDtoPW0rMXwwO3E9ejt6PWNbej4+Ml18MH11PW0rNHwwO3Y9bysyNHwwO3M9bysyNXwwO3Q9bysyNnwwO3I9bztwPW0rOHwwO3k9Y1tmPj4yXXwwO3g9MDtBPXo7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApPyhvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTowKXtjW2Y+PjJdPTA7eT0wfX1lbHNle3k9MH1DPSh5fDApPT0wO0I9Y1tnPj4yXXwwO2Rve2lmKChCfDApIT0wKXtpZigoY1tCKzEyPj4yXXwwKSE9KGNbQisxNj4+Ml18MCkpe2lmKEMpe2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwKT09LTEpKXtpZihDKXticmVha31lbHNle2JyZWFrIGF9fWVsc2V7Y1tnPj4yXT0wO2w9MjY7YnJlYWt9fWVsc2V7bD0yNn19d2hpbGUoMCk7aWYoKGx8MCk9PTI2PyhsPTAsQyk6MCl7YnJlYWt9RD1hW20+PjBdfDA7Qj0oRCYxKT09MDtpZihCKXtDPShEJjI1NSk+Pj4xfWVsc2V7Qz1jW3U+PjJdfDB9aWYoKEEtenwwKT09KEN8MCkpe2lmKEIpe0E9KEQmMjU1KT4+PjE7Qz0oRCYyNTUpPj4+MTt6PUE8PDF9ZWxzZXtBPWNbdT4+Ml18MDtDPWNbdT4+Ml18MDt6PUE8PDF9ZG97aWYoIShDPj4+MDx6Pj4+MCkpe2lmKEIpe2FbbSt6KzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKSt6Pj4wXT0wO2NbdT4+Ml09ejticmVha319ZWxzZXtoZyhtLHotQ3wwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe3o9MTB9ZWxzZXt6PWNbbT4+Ml18MDtDPXomMjU1O3o9KHomLTIpKyAtMXwwfUI9KEMmMSk9PTA7aWYoQil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t1Pj4yXXwwfWRve2lmKCEoQz4+PjA8ej4+PjApKXtpZihCKXthW20reisxPj4wXT0wO2FbbT4+MF09ejw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrej4+MF09MDtjW3U+PjJdPXo7YnJlYWt9fWVsc2V7aGcobSx6LUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWh9ZWxzZXt6PWNbcT4+Ml18MH1BPXorQXwwfUI9Y1t5KzEyPj4yXXwwO2lmKChCfDApPT0oY1t5KzE2Pj4yXXwwKSl7eT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXt5PWRbQj4+MF18MH1CPXkmMjU1O3k9KEF8MCk9PSh6fDApO2Rve2lmKHkpe0M9KGFbdj4+MF18MCk9PUI8PDI0Pj4yNDtpZighQz8hKChhW3M+PjBdfDApPT1CPDwyND4+MjQpOjApe0M9bztsPTYxO2JyZWFrfWFbQT4+MF09Qz80Mzo0NTtBPUErMXwwO3g9MH1lbHNle0M9bztsPTYxfX13aGlsZSgwKTtkb3tpZigobHwwKT09NjEpe3doaWxlKDEpe2w9MDtpZigoYVtDPj4wXXwwKT09Qjw8MjQ+PjI0KXticmVha31DPUMrMXwwO2lmKChDfDApPT0odHwwKSl7Qz10O2JyZWFrfWVsc2V7bD02MX19Qj1DLXJ8MDtpZigoQnwwKT4yMyl7YnJlYWsgYX1pZigoQnwwKTwyMil7YVtBPj4wXT1hWzEyMDE2K0I+PjBdfDA7QT1BKzF8MDt4PXgrMXwwO2JyZWFrfWlmKHkpe3o9QTticmVhayBhfWlmKChBLXp8MCk+PTMpe2JyZWFrIGF9aWYoKGFbQSsgLTE+PjBdfDApIT00OCl7YnJlYWsgYX1hW0E+PjBdPWFbMTIwMTYrQj4+MF18MDtBPUErMXwwO3g9MH19d2hpbGUoMCk7eT1jW2Y+PjJdfDA7Qj15KzEyfDA7Qz1jW0I+PjJdfDA7aWYoKEN8MCk9PShjW3krMTY+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7RD13O3c9RDtjb250aW51ZX1lbHNle2NbQj4+Ml09QysxO0Q9dzt3PUQ7Y29udGludWV9fWFbeiszPj4wXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1EPWNbMzM0MF18MDtjW24+PjJdPWs7aWYoKFloKHosRCxuKXwwKSE9MSl7Y1tqPj4yXT00fWs9Y1tmPj4yXXwwO2lmKChrfDApIT0wKXtpZigoY1trKzEyPj4yXXwwKT09KGNbaysxNj4+Ml18MCk/KG9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MCk9PS0xOjApe2NbZj4+Ml09MDtmPTB9ZWxzZXtmPWt9fWVsc2V7Zj0wfWs9KGZ8MCk9PTA7bj1jW2c+PjJdfDA7ZG97aWYoKG58MCkhPTApe2lmKChjW24rMTI+PjJdfDApIT0oY1tuKzE2Pj4yXXwwKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTkyO2JyZWFrfX1pZighKChvY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDApPT0tMSkpe2lmKGspe2JyZWFrfWVsc2V7bD05MjticmVha319ZWxzZXtjW2c+PjJdPTA7bD05MDticmVha319ZWxzZXtsPTkwfX13aGlsZSgwKTtpZigobHwwKT09OTA/azowKXtsPTkyfWlmKChsfDApPT05Mil7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1mO2lmKChhW20+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWo9Y1twPj4yXXwwO2lmKChqfDApPT0wKXtpPWU7cmV0dXJufXZuKGopO2k9ZTtyZXR1cm59RD1YYSg0KXwwO2NbRD4+Ml09MjEzMDQ7d2IoRHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gWGgoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MDtuPWk7cD1jW2Y+PjJdfDA7bz0ocHwwKT09KGV8MCk7ZG97aWYobyl7cT0oYVttKzI0Pj4wXXwwKT09Yjw8MjQ+PjI0O2lmKCFxPyEoKGFbbSsyNT4+MF18MCk9PWI8PDI0Pj4yNCk6MCl7YnJlYWt9Y1tmPj4yXT1lKzE7YVtlPj4wXT1xPzQzOjQ1O2NbZz4+Ml09MDtxPTA7aT1uO3JldHVybiBxfDB9fXdoaWxlKDApO3E9YVtqPj4wXXwwO2lmKChxJjEpPT0wKXtqPShxJjI1NSk+Pj4xfWVsc2V7aj1jW2orND4+Ml18MH1pZigoanwwKSE9MD9iPDwyND4+MjQ9PWg8PDI0Pj4yNDowKXtvPWNbbD4+Ml18MDtpZigoby1rfDApPj0xNjApe3E9MDtpPW47cmV0dXJuIHF8MH1xPWNbZz4+Ml18MDtjW2w+PjJdPW8rNDtjW28+PjJdPXE7Y1tnPj4yXT0wO3E9MDtpPW47cmV0dXJuIHF8MH1sPW0rMjZ8MDtrPW07d2hpbGUoMSl7aWYoKGFbaz4+MF18MCk9PWI8PDI0Pj4yNCl7YnJlYWt9az1rKzF8MDtpZigoa3wwKT09KGx8MCkpe2s9bDticmVha319bT1rLW18MDtpZigobXwwKT4yMyl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigoZHwwKT09MTB8KGR8MCk9PTgpe2lmKChtfDApPj0oZHwwKSl7cT0tMTtpPW47cmV0dXJuIHF8MH19ZWxzZSBpZigoZHwwKT09MTY/KG18MCk+PTIyOjApe2lmKG8pe3E9LTE7aT1uO3JldHVybiBxfDB9aWYoKHAtZXwwKT49Myl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigoYVtwKyAtMT4+MF18MCkhPTQ4KXtxPS0xO2k9bjtyZXR1cm4gcXwwfWNbZz4+Ml09MDtxPWFbMTIwMTYrbT4+MF18MDtjW2Y+PjJdPXArMTthW3A+PjBdPXE7cT0wO2k9bjtyZXR1cm4gcXwwfXE9YVsxMjAxNittPj4wXXwwO2NbZj4+Ml09cCsxO2FbcD4+MF09cTtjW2c+PjJdPShjW2c+PjJdfDApKzE7cT0wO2k9bjtyZXR1cm4gcXwwfWZ1bmN0aW9uIFloKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDtlPWk7aT1pKzE2fDA7Zj1lO2NbZj4+Ml09ZDtiPWliKGJ8MCl8MDthPU1hKGF8MCwxMjA1NixmfDApfDA7aWYoKGJ8MCk9PTApe2k9ZTtyZXR1cm4gYXwwfWliKGJ8MCl8MDtpPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiBaaChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBfaChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gJGgoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7az1pO2k9aSs2NHwwO3A9azt1PWsrNDh8MDtxPWsrNTJ8MDt0PWsrNTZ8MDtzPWsrMTZ8MDtyPWsrMTJ8MDtsPWsrMjR8MDtpZigoY1tnKzQ+PjJdJjF8MCk9PTApe2NbcT4+Ml09LTE7bD1jWyhjW2Q+PjJdfDApKzE2Pj4yXXwwO2Nbcz4+Ml09Y1tlPj4yXTtjW3I+PjJdPWNbZj4+Ml07Y1t1KzA+PjJdPWNbcyswPj4yXTtjW3ArMD4+Ml09Y1tyKzA+PjJdO2ljW2wmNjNdKHQsZCx1LHAsZyxoLHEpO2w9Y1t0Pj4yXXwwO2NbZT4+Ml09bDtlPWNbcT4+Ml18MDtpZigoZXwwKT09MSl7YVtqPj4wXT0xfWVsc2UgaWYoKGV8MCk9PTApe2Fbaj4+MF09MH1lbHNle2Fbaj4+MF09MTtjW2g+PjJdPTR9Y1tiPj4yXT1sO2k9aztyZXR1cm59cT1nKzI4fDA7cj1jW3E+PjJdfDA7ZD1yKzR8MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW3A+PjJdPTEzNDQ4O2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM0NDgscCl9cz0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dD1jW3IrOD4+Ml18MDtpZigoY1tyKzEyPj4yXXwwKS10Pj4yPj4+MD5zPj4+MD8obz1jW3QrKHM8PDIpPj4yXXwwLChvfDApIT0wKTowKXt1PXIrNHwwO2Q9Y1t1Pj4yXXwwO2NbdT4+Ml09ZCsgLTE7aWYoKGR8MCk9PTApe2xjW2NbKGNbcj4+Ml18MCkrOD4+Ml0mMjU1XShyKX1xPWNbcT4+Ml18MDtkPXErNHwwO2NbZD4+Ml09KGNbZD4+Ml18MCkrMTtpZighKChjWzM0MDJdfDApPT0tMSkpe2NbcD4+Ml09MTM2MDg7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzYwOCxwKX1wPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtyPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXI+PjI+Pj4wPnA+Pj4wPyhuPWNbcisocDw8Mik+PjJdfDAsKG58MCkhPTApOjApe3U9cSs0fDA7ZD1jW3U+PjJdfDA7Y1t1Pj4yXT1kKyAtMTtpZigoZHwwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfW1jW2NbKGNbbj4+Ml18MCkrMjQ+PjJdJjEyN10obCxuKTtkPWwrMTJ8MDttY1tjWyhjW24+PjJdfDApKzI4Pj4yXSYxMjddKGQsbik7YVtqPj4wXT0oYWkoZSxjW2Y+PjJdfDAsbCxsKzI0fDAsbyxoLDEpfDApPT0obHwwKSYxO2NbYj4+Ml09Y1tlPj4yXTtpZighKChhW2Q+PjBdJjEpPT0wKT8obT1jW2wrMjA+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW2w+PjBdJjEpPT0wKXtpPWs7cmV0dXJufWI9Y1tsKzg+PjJdfDA7aWYoKGJ8MCk9PTApe2k9aztyZXR1cm59dm4oYik7aT1rO3JldHVybn1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBhaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO2w9aTtpPWkrMTEyfDA7bj1sO3M9KGYtZXwwKS8xMnwwO2lmKHM+Pj4wPjEwMCl7bj11bihzKXwwO2lmKChufDApPT0wKXt6PVhhKDQpfDA7Y1t6Pj4yXT0yMjY4MDt3Yih6fDAsMjI3MjgsMjA2KX1lbHNle2s9bn19ZWxzZXtrPTB9bz0oZXwwKT09KGZ8MCk7aWYobyl7dD0wfWVsc2V7cD1lO3Q9MDtxPW47d2hpbGUoMSl7cj1hW3A+PjBdfDA7aWYoKHImMSk9PTApe3I9KHImMjU1KT4+PjF9ZWxzZXtyPWNbcCs0Pj4yXXwwfWlmKChyfDApPT0wKXthW3E+PjBdPTI7dD10KzF8MDtzPXMrIC0xfDB9ZWxzZXthW3E+PjBdPTF9cD1wKzEyfDA7aWYoKHB8MCk9PShmfDApKXticmVha31lbHNle3E9cSsxfDB9fX1wPTA7YTp3aGlsZSgxKXt1PShzfDApIT0wO3E9cDt3aGlsZSgxKXtyPWNbYj4+Ml18MDtkb3tpZigocnwwKSE9MCl7cD1jW3IrMTI+PjJdfDA7aWYoKHB8MCk9PShjW3IrMTY+PjJdfDApKXtwPW9jW2NbKGNbcj4+Ml18MCkrMzY+PjJdJjEyN10ocil8MH1lbHNle3A9Y1twPj4yXXwwfWlmKChwfDApPT0tMSl7Y1tiPj4yXT0wO3I9MTticmVha31lbHNle3I9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7cj0xfX13aGlsZSgwKTtpZigoZHwwKT09MCl7cD0wO3c9MTtkPTB9ZWxzZXtwPWNbZCsxMj4+Ml18MDtpZigocHwwKT09KGNbZCsxNj4+Ml18MCkpe3A9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7cD1jW3A+PjJdfDB9ej0ocHwwKT09LTE7cD16PzA6ZDt3PXo/MTowO2Q9ej8wOmR9dj1jW2I+PjJdfDA7aWYoISgocl53KSZ1KSl7YnJlYWsgYX1wPWNbdisxMj4+Ml18MDtpZigocHwwKT09KGNbdisxNj4+Ml18MCkpe3I9b2NbY1soY1t2Pj4yXXwwKSszNj4+Ml0mMTI3XSh2KXwwfWVsc2V7cj1jW3A+PjJdfDB9aWYoIWope3I9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcscil8MH1wPXErMXwwO2lmKG8pe3E9cH1lbHNle2JyZWFrfX1iOmRve2lmKGope3c9MDt1PWU7dj1uO3doaWxlKDEpe2Rve2lmKChhW3Y+PjBdfDApPT0xKXt4PWFbdT4+MF18MDt5PSh4JjEpPT0wO2lmKHkpe3o9dSs0fDB9ZWxzZXt6PWNbdSs4Pj4yXXwwfWlmKChyfDApIT0oY1t6KyhxPDwyKT4+Ml18MCkpe2Fbdj4+MF09MDtzPXMrIC0xfDA7YnJlYWt9aWYoeSl7dz0oeCYyNTUpPj4+MX1lbHNle3c9Y1t1KzQ+PjJdfDB9aWYoKHd8MCk9PShwfDApKXthW3Y+PjBdPTI7dz0xO3Q9dCsxfDA7cz1zKyAtMXwwfWVsc2V7dz0xfX19d2hpbGUoMCk7dT11KzEyfDA7aWYoKHV8MCk9PShmfDApKXticmVhayBifXY9disxfDB9fWVsc2V7dz0wO3U9ZTt2PW47d2hpbGUoMSl7ZG97aWYoKGFbdj4+MF18MCk9PTEpe2lmKChhW3U+PjBdJjEpPT0wKXt4PXUrNHwwfWVsc2V7eD1jW3UrOD4+Ml18MH1pZigocnwwKSE9KHhjW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjYzXShnLGNbeCsocTw8Mik+PjJdfDApfDApKXthW3Y+PjBdPTA7cz1zKyAtMXwwO2JyZWFrfXc9YVt1Pj4wXXwwO2lmKCh3JjEpPT0wKXt3PSh3JjI1NSk+Pj4xfWVsc2V7dz1jW3UrND4+Ml18MH1pZigod3wwKT09KHB8MCkpe2Fbdj4+MF09Mjt3PTE7dD10KzF8MDtzPXMrIC0xfDB9ZWxzZXt3PTF9fX13aGlsZSgwKTt1PXUrMTJ8MDtpZigodXwwKT09KGZ8MCkpe2JyZWFrIGJ9dj12KzF8MH19fXdoaWxlKDApO2lmKCF3KXtjb250aW51ZX11PWNbYj4+Ml18MDtyPXUrMTJ8MDtxPWNbcj4+Ml18MDtpZigocXwwKT09KGNbdSsxNj4+Ml18MCkpe29jW2NbKGNbdT4+Ml18MCkrNDA+PjJdJjEyN10odSl8MH1lbHNle2Nbcj4+Ml09cSs0fWlmKChzK3R8MCk+Pj4wPDIpe2NvbnRpbnVlfWVsc2V7cj1lO3E9bn13aGlsZSgxKXtpZigoYVtxPj4wXXwwKT09Mil7dT1hW3I+PjBdfDA7aWYoKHUmMSk9PTApe3U9KHUmMjU1KT4+PjF9ZWxzZXt1PWNbcis0Pj4yXXwwfWlmKCh1fDApIT0ocHwwKSl7YVtxPj4wXT0wO3Q9dCsgLTF8MH19cj1yKzEyfDA7aWYoKHJ8MCk9PShmfDApKXtjb250aW51ZSBhfWVsc2V7cT1xKzF8MH19fWRve2lmKCh2fDApIT0wKXtqPWNbdisxMj4+Ml18MDtpZigoanwwKT09KGNbdisxNj4+Ml18MCkpe2o9b2NbY1soY1t2Pj4yXXwwKSszNj4+Ml0mMTI3XSh2KXwwfWVsc2V7aj1jW2o+PjJdfDB9aWYoKGp8MCk9PS0xKXtjW2I+PjJdPTA7Yj0xO2JyZWFrfWVsc2V7Yj0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtiPTF9fXdoaWxlKDApO2lmKChwfDApIT0wKXtqPWNbcCsxMj4+Ml18MDtpZigoanwwKT09KGNbcCsxNj4+Ml18MCkpe2o9b2NbY1soY1twPj4yXXwwKSszNj4+Ml0mMTI3XShwKXwwfWVsc2V7aj1jW2o+PjJdfDB9aWYoISgoanwwKT09LTEpKXtpZighYil7bT04OH19ZWxzZXttPTg2fX1lbHNle209ODZ9aWYoKG18MCk9PTg2P2I6MCl7bT04OH1pZigobXwwKT09ODgpe2NbaD4+Ml09Y1toPj4yXXwyfWM6ZG97aWYoIW8pe2lmKChhW24+PjBdfDApPT0yKXtmPWV9ZWxzZXt3aGlsZSgxKXtlPWUrMTJ8MDtuPW4rMXwwO2lmKChlfDApPT0oZnwwKSl7bT05MzticmVhayBjfWlmKChhW24+PjBdfDApPT0yKXtmPWU7YnJlYWt9fX19ZWxzZXttPTkzfX13aGlsZSgwKTtpZigobXwwKT09OTMpe2NbaD4+Ml09Y1toPj4yXXw0fWlmKChrfDApPT0wKXtpPWw7cmV0dXJuIGZ8MH12bihrKTtpPWw7cmV0dXJuIGZ8MH1mdW5jdGlvbiBiaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtkPWk7aT1pKzMwNHwwO3U9ZCsxNjB8MDtvPWQrMjgwfDA7bj1kKzI2NHwwO209ZCsyODR8MDt0PWQrMzAwfDA7cj1kO3M9ZCsyNzZ8MDtxPWQrMjk2fDA7dz1jW2U+PjJdfDA7eT1jW2Y+PjJdfDA7Zj1jW2crND4+Ml0mNzQ7aWYoKGZ8MCk9PTY0KXtmPTh9ZWxzZSBpZigoZnwwKT09MCl7Zj0wfWVsc2UgaWYoKGZ8MCk9PTgpe2Y9MTZ9ZWxzZXtmPTEwfXBpKG4sZyx1LG8pO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2U9ejtnPW0rOHwwfWVsc2V7ej1tKzh8MDtlPW0rMXwwO2c9ejt6PWNbej4+Ml18MH1jW3Q+PjJdPXo7Y1tzPj4yXT1yO2NbcT4+Ml09MDt2PW0rNHwwO3g9Y1tvPj4yXXwwO289bSs4fDA7d2hpbGUoMSl7aWYoKHd8MCk9PTApe0E9MTt3PTB9ZWxzZXtBPWNbdysxMj4+Ml18MDtpZigoQXwwKT09KGNbdysxNj4+Ml18MCkpe0E9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7QT1jW0E+PjJdfDB9Qz0oQXwwKT09LTE7QT1DPzE6MDt3PUM/MDp3fWlmKCh5fDApIT0wKXtCPWNbeSsxMj4+Ml18MDtpZigoQnwwKT09KGNbeSsxNj4+Ml18MCkpe0I9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZighQSl7YnJlYWt9fWVsc2V7az0yMH19ZWxzZXtrPTIwfWlmKChrfDApPT0yMCl7az0wO2lmKEEpe3k9MDticmVha31lbHNle3k9MH19QT1hW20+PjBdfDA7Qj0oQSYxKT09MDtpZihCKXtDPShBJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9aWYoKChjW3Q+PjJdfDApLXp8MCk9PShDfDApKXtpZihCKXtEPShBJjI1NSk+Pj4xO3o9KEEmMjU1KT4+PjE7Qz1EPDwxO0E9RH1lbHNle0E9Y1t2Pj4yXXwwO3o9Y1t2Pj4yXXwwO0M9QTw8MX1kb3tpZighKHo+Pj4wPEM+Pj4wKSl7aWYoQil7YVttK0MrMT4+MF09MDthW20+PjBdPUE8PDI7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0M+PjBdPTA7Y1t2Pj4yXT1DO2JyZWFrfX1lbHNle2hnKG0sQy16fDApfX13aGlsZSgwKTtDPWFbbT4+MF18MDtpZigoQyYxKT09MCl7Qj0xMH1lbHNle0I9Y1ttPj4yXXwwO0M9QiYyNTU7Qj0oQiYtMikrIC0xfDB9ej0oQyYxKT09MDtpZih6KXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9ZG97aWYoIShDPj4+MDxCPj4+MCkpe2lmKHope2FbbStCKzE+PjBdPTA7YVttPj4wXT1CPDwxO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStCPj4wXT0wO2Nbdj4+Ml09QjticmVha319ZWxzZXtoZyhtLEItQ3wwKX19d2hpbGUoMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9ZX1lbHNle3o9Y1tnPj4yXXwwfWNbdD4+Ml09eitBfUE9dysxMnwwO0M9Y1tBPj4yXXwwO0I9dysxNnwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7Qz1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtDPWNbQz4+Ml18MH1pZigobGkoQyxmLHosdCxxLHgsbixyLHMsdSl8MCkhPTApe2JyZWFrfUM9Y1tBPj4yXXwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7b2NbY1soY1t3Pj4yXXwwKSs0MD4+Ml0mMTI3XSh3KXwwO2NvbnRpbnVlfWVsc2V7Y1tBPj4yXT1DKzQ7Y29udGludWV9fXU9YVtuPj4wXXwwO2lmKCh1JjEpPT0wKXt1PSh1JjI1NSk+Pj4xfWVsc2V7dT1jW24rND4+Ml18MH1pZigodXwwKSE9MD8ocD1jW3M+PjJdfDAsKHAtcnwwKTwxNjApOjApe0Q9Y1txPj4yXXwwO2Nbcz4+Ml09cCs0O2NbcD4+Ml09RH1jW2o+PjJdPU5tKHosY1t0Pj4yXXwwLGgsZil8MDtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gY2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7ZD1pO2k9aSszMDR8MDt1PWQrMTYwfDA7bz1kKzI4MHwwO249ZCsyNjR8MDttPWQrMjg0fDA7dD1kKzMwMHwwO3I9ZDtzPWQrMjc2fDA7cT1kKzI5NnwwO3c9Y1tlPj4yXXwwO3k9Y1tmPj4yXXwwO2Y9Y1tnKzQ+PjJdJjc0O2lmKChmfDApPT04KXtmPTE2fWVsc2UgaWYoKGZ8MCk9PTY0KXtmPTh9ZWxzZSBpZigoZnwwKT09MCl7Zj0wfWVsc2V7Zj0xMH1waShuLGcsdSxvKTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtoZyhtLDEwKTtpZigoYVttPj4wXSYxKT09MCl7ej1tKzF8MDtlPXo7Zz1tKzh8MH1lbHNle3o9bSs4fDA7ZT1tKzF8MDtnPXo7ej1jW3o+PjJdfDB9Y1t0Pj4yXT16O2Nbcz4+Ml09cjtjW3E+PjJdPTA7dj1tKzR8MDt4PWNbbz4+Ml18MDtvPW0rOHwwO3doaWxlKDEpe2lmKCh3fDApPT0wKXtBPTE7dz0wfWVsc2V7QT1jW3crMTI+PjJdfDA7aWYoKEF8MCk9PShjW3crMTY+PjJdfDApKXtBPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0E9Y1tBPj4yXXwwfUM9KEF8MCk9PS0xO0E9Qz8xOjA7dz1DPzA6d31pZigoeXwwKSE9MCl7Qj1jW3krMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3krMTY+PjJdfDApKXtCPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0I9Y1tCPj4yXXwwfWlmKCEoKEJ8MCk9PS0xKSl7aWYoIUEpe2JyZWFrfX1lbHNle2s9MjB9fWVsc2V7az0yMH1pZigoa3wwKT09MjApe2s9MDtpZihBKXt5PTA7YnJlYWt9ZWxzZXt5PTB9fUE9YVttPj4wXXwwO0I9KEEmMSk9PTA7aWYoQil7Qz0oQSYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWlmKCgoY1t0Pj4yXXwwKS16fDApPT0oQ3wwKSl7aWYoQil7RD0oQSYyNTUpPj4+MTt6PShBJjI1NSk+Pj4xO0M9RDw8MTtBPUR9ZWxzZXtBPWNbdj4+Ml18MDt6PWNbdj4+Ml18MDtDPUE8PDF9ZG97aWYoISh6Pj4+MDxDPj4+MCkpe2lmKEIpe2FbbStDKzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStDPj4wXT0wO2Nbdj4+Ml09QzticmVha319ZWxzZXtoZyhtLEMtenwwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe0I9MTB9ZWxzZXtCPWNbbT4+Ml18MDtDPUImMjU1O0I9KEImLTIpKyAtMXwwfXo9KEMmMSk9PTA7aWYoeil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWRve2lmKCEoQz4+PjA8Qj4+PjApKXtpZih6KXthW20rQisxPj4wXT0wO2FbbT4+MF09Qjw8MTticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQj4+MF09MDtjW3Y+PjJdPUI7YnJlYWt9fWVsc2V7aGcobSxCLUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWV9ZWxzZXt6PWNbZz4+Ml18MH1jW3Q+PjJdPXorQX1BPXcrMTJ8MDtDPWNbQT4+Ml18MDtCPXcrMTZ8MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe0M9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7Qz1jW0M+PjJdfDB9aWYoKGxpKEMsZix6LHQscSx4LG4scixzLHUpfDApIT0wKXticmVha31DPWNbQT4+Ml18MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe29jW2NbKGNbdz4+Ml18MCkrNDA+PjJdJjEyN10odyl8MDtjb250aW51ZX1lbHNle2NbQT4+Ml09Qys0O2NvbnRpbnVlfX11PWFbbj4+MF18MDtpZigodSYxKT09MCl7dT0odSYyNTUpPj4+MX1lbHNle3U9Y1tuKzQ+PjJdfDB9aWYoKHV8MCkhPTA/KHA9Y1tzPj4yXXwwLChwLXJ8MCk8MTYwKTowKXtEPWNbcT4+Ml18MDtjW3M+PjJdPXArNDtjW3A+PjJdPUR9Qz1NbSh6LGNbdD4+Ml18MCxoLGYpfDA7RD1qO2NbRD4+Ml09QztjW0QrND4+Ml09STtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZGkoZCxlLGYsZyxoLGosayl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7ZT1pO2k9aSszMDR8MDt2PWUrMTYwfDA7cD1lKzI4MHwwO289ZSsyNjR8MDtuPWUrMjg0fDA7dT1lKzMwMHwwO3M9ZTt0PWUrMjc2fDA7cj1lKzI5NnwwO3g9Y1tmPj4yXXwwO3o9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09NjQpe2c9OH1lbHNlIGlmKChnfDApPT04KXtnPTE2fWVsc2V7Zz0xMH1waShvLGgsdixwKTtjW24rMD4+Ml09MDtjW24rND4+Ml09MDtjW24rOD4+Ml09MDtoZyhuLDEwKTtpZigoYVtuPj4wXSYxKT09MCl7QT1uKzF8MDtmPUE7aD1uKzh8MH1lbHNle0E9bis4fDA7Zj1uKzF8MDtoPUE7QT1jW0E+PjJdfDB9Y1t1Pj4yXT1BO2NbdD4+Ml09cztjW3I+PjJdPTA7dz1uKzR8MDt5PWNbcD4+Ml18MDtwPW4rOHwwO3doaWxlKDEpe2lmKCh4fDApPT0wKXtCPTE7eD0wfWVsc2V7Qj1jW3grMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3grMTY+PjJdfDApKXtCPW9jW2NbKGNbeD4+Ml18MCkrMzY+PjJdJjEyN10oeCl8MH1lbHNle0I9Y1tCPj4yXXwwfUQ9KEJ8MCk9PS0xO0I9RD8xOjA7eD1EPzA6eH1pZigoenwwKSE9MCl7Qz1jW3orMTI+PjJdfDA7aWYoKEN8MCk9PShjW3orMTY+PjJdfDApKXtDPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0M9Y1tDPj4yXXwwfWlmKCEoKEN8MCk9PS0xKSl7aWYoIUIpe2JyZWFrfX1lbHNle2w9MjB9fWVsc2V7bD0yMH1pZigobHwwKT09MjApe2w9MDtpZihCKXt6PTA7YnJlYWt9ZWxzZXt6PTB9fUI9YVtuPj4wXXwwO0M9KEImMSk9PTA7aWYoQyl7RD0oQiYyNTUpPj4+MX1lbHNle0Q9Y1t3Pj4yXXwwfWlmKCgoY1t1Pj4yXXwwKS1BfDApPT0oRHwwKSl7aWYoQyl7RT0oQiYyNTUpPj4+MTtBPShCJjI1NSk+Pj4xO0Q9RTw8MTtCPUV9ZWxzZXtCPWNbdz4+Ml18MDtBPWNbdz4+Ml18MDtEPUI8PDF9ZG97aWYoIShBPj4+MDxEPj4+MCkpe2lmKEMpe2FbbitEKzE+PjBdPTA7YVtuPj4wXT1CPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStEPj4wXT0wO2Nbdz4+Ml09RDticmVha319ZWxzZXtoZyhuLEQtQXwwKX19d2hpbGUoMCk7RD1hW24+PjBdfDA7aWYoKEQmMSk9PTApe0M9MTB9ZWxzZXtDPWNbbj4+Ml18MDtEPUMmMjU1O0M9KEMmLTIpKyAtMXwwfUE9KEQmMSk9PTA7aWYoQSl7RD0oRCYyNTUpPj4+MX1lbHNle0Q9Y1t3Pj4yXXwwfWRve2lmKCEoRD4+PjA8Qz4+PjApKXtpZihBKXthW24rQysxPj4wXT0wO2Fbbj4+MF09Qzw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrQz4+MF09MDtjW3c+PjJdPUM7YnJlYWt9fWVsc2V7aGcobixDLUR8MCl9fXdoaWxlKDApO2lmKChhW24+PjBdJjEpPT0wKXtBPWZ9ZWxzZXtBPWNbaD4+Ml18MH1jW3U+PjJdPUErQn1CPXgrMTJ8MDtEPWNbQj4+Ml18MDtDPXgrMTZ8MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe0Q9b2NbY1soY1t4Pj4yXXwwKSszNj4+Ml0mMTI3XSh4KXwwfWVsc2V7RD1jW0Q+PjJdfDB9aWYoKGxpKEQsZyxBLHUscix5LG8scyx0LHYpfDApIT0wKXticmVha31EPWNbQj4+Ml18MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeD4+Ml18MCkrNDA+PjJdJjEyN10oeCl8MDtjb250aW51ZX1lbHNle2NbQj4+Ml09RCs0O2NvbnRpbnVlfX12PWFbbz4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tvKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHE9Y1t0Pj4yXXwwLChxLXN8MCk8MTYwKTowKXtFPWNbcj4+Ml18MDtjW3Q+PjJdPXErNDtjW3E+PjJdPUV9YltrPj4xXT1MbShBLGNbdT4+Ml18MCxqLGcpfDA7cWsobyxzLGNbdD4+Ml18MCxqKTtpZigoeHwwKT09MCl7az0wO3E9MX1lbHNle2s9Y1t4KzEyPj4yXXwwO2lmKChrfDApPT0oY1t4KzE2Pj4yXXwwKSl7az1vY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDB9ZWxzZXtrPWNbaz4+Ml18MH1xPShrfDApPT0tMTtrPXE/MDp4O3E9cT8xOjB9aWYoKHp8MCkhPTApe3I9Y1t6KzEyPj4yXXwwO2lmKChyfDApPT0oY1t6KzE2Pj4yXXwwKSl7cj1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtyPWNbcj4+Ml18MH1pZighKChyfDApPT0tMSkpe2lmKCFxKXtsPTczfX1lbHNle2w9NzF9fWVsc2V7bD03MX1pZigobHwwKT09NzE/cTowKXtsPTczfWlmKChsfDApPT03Myl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tkPj4yXT1rO2lmKCEoKGFbbj4+MF0mMSk9PTApPyhtPWNbcD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZTtyZXR1cm59aj1jW28rOD4+Ml18MDtpZigoanwwKT09MCl7aT1lO3JldHVybn12bihqKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGVpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO2Q9aTtpPWkrMzA0fDA7dT1kKzE2MHwwO289ZCsyODB8MDtuPWQrMjY0fDA7bT1kKzI4NHwwO3Q9ZCszMDB8MDtyPWQ7cz1kKzI3NnwwO3E9ZCsyOTZ8MDt3PWNbZT4+Ml18MDt5PWNbZj4+Ml18MDtmPWNbZys0Pj4yXSY3NDtpZigoZnwwKT09OCl7Zj0xNn1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2UgaWYoKGZ8MCk9PTApe2Y9MH1lbHNle2Y9MTB9cGkobixnLHUsbyk7Y1ttKzA+PjJdPTA7Y1ttKzQ+PjJdPTA7Y1ttKzg+PjJdPTA7aGcobSwxMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9bSsxfDA7ZT16O2c9bSs4fDB9ZWxzZXt6PW0rOHwwO2U9bSsxfDA7Zz16O3o9Y1t6Pj4yXXwwfWNbdD4+Ml09ejtjW3M+PjJdPXI7Y1txPj4yXT0wO3Y9bSs0fDA7eD1jW28+PjJdfDA7bz1tKzh8MDt3aGlsZSgxKXtpZigod3wwKT09MCl7QT0xO3c9MH1lbHNle0E9Y1t3KzEyPj4yXXwwO2lmKChBfDApPT0oY1t3KzE2Pj4yXXwwKSl7QT1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtBPWNbQT4+Ml18MH1DPShBfDApPT0tMTtBPUM/MTowO3c9Qz8wOnd9aWYoKHl8MCkhPTApe0I9Y1t5KzEyPj4yXXwwO2lmKChCfDApPT0oY1t5KzE2Pj4yXXwwKSl7Qj1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtCPWNbQj4+Ml18MH1pZighKChCfDApPT0tMSkpe2lmKCFBKXticmVha319ZWxzZXtrPTIwfX1lbHNle2s9MjB9aWYoKGt8MCk9PTIwKXtrPTA7aWYoQSl7eT0wO2JyZWFrfWVsc2V7eT0wfX1BPWFbbT4+MF18MDtCPShBJjEpPT0wO2lmKEIpe0M9KEEmMjU1KT4+PjF9ZWxzZXtDPWNbdj4+Ml18MH1pZigoKGNbdD4+Ml18MCktenwwKT09KEN8MCkpe2lmKEIpe0Q9KEEmMjU1KT4+PjE7ej0oQSYyNTUpPj4+MTtDPUQ8PDE7QT1EfWVsc2V7QT1jW3Y+PjJdfDA7ej1jW3Y+PjJdfDA7Qz1BPDwxfWRve2lmKCEoej4+PjA8Qz4+PjApKXtpZihCKXthW20rQysxPj4wXT0wO2FbbT4+MF09QTw8MjticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQz4+MF09MDtjW3Y+PjJdPUM7YnJlYWt9fWVsc2V7aGcobSxDLXp8MCl9fXdoaWxlKDApO0M9YVttPj4wXXwwO2lmKChDJjEpPT0wKXtCPTEwfWVsc2V7Qj1jW20+PjJdfDA7Qz1CJjI1NTtCPShCJi0yKSsgLTF8MH16PShDJjEpPT0wO2lmKHope0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbdj4+Ml18MH1kb3tpZighKEM+Pj4wPEI+Pj4wKSl7aWYoeil7YVttK0IrMT4+MF09MDthW20+PjBdPUI8PDE7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0I+PjBdPTA7Y1t2Pj4yXT1CO2JyZWFrfX1lbHNle2hnKG0sQi1DfDApfX13aGlsZSgwKTtpZigoYVttPj4wXSYxKT09MCl7ej1lfWVsc2V7ej1jW2c+PjJdfDB9Y1t0Pj4yXT16K0F9QT13KzEyfDA7Qz1jW0E+PjJdfDA7Qj13KzE2fDA7aWYoKEN8MCk9PShjW0I+PjJdfDApKXtDPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0M9Y1tDPj4yXXwwfWlmKChsaShDLGYseix0LHEseCxuLHIscyx1KXwwKSE9MCl7YnJlYWt9Qz1jW0E+PjJdfDA7aWYoKEN8MCk9PShjW0I+PjJdfDApKXtvY1tjWyhjW3c+PjJdfDApKzQwPj4yXSYxMjddKHcpfDA7Y29udGludWV9ZWxzZXtjW0E+PjJdPUMrNDtjb250aW51ZX19dT1hW24+PjBdfDA7aWYoKHUmMSk9PTApe3U9KHUmMjU1KT4+PjF9ZWxzZXt1PWNbbis0Pj4yXXwwfWlmKCh1fDApIT0wPyhwPWNbcz4+Ml18MCwocC1yfDApPDE2MCk6MCl7RD1jW3E+PjJdfDA7Y1tzPj4yXT1wKzQ7Y1twPj4yXT1EfWNbaj4+Ml09S20oeixjW3Q+PjJdfDAsaCxmKXwwO3FrKG4scixjW3M+PjJdfDAsaCk7aWYoKHd8MCk9PTApe2o9MDtwPTF9ZWxzZXtqPWNbdysxMj4+Ml18MDtpZigoanwwKT09KGNbdysxNj4+Ml18MCkpe2o9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7aj1jW2o+PjJdfDB9cD0oanwwKT09LTE7aj1wPzA6dztwPXA/MTowfWlmKCh5fDApIT0wKXtxPWNbeSsxMj4+Ml18MDtpZigocXwwKT09KGNbeSsxNj4+Ml18MCkpe3E9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7cT1jW3E+PjJdfDB9aWYoISgocXwwKT09LTEpKXtpZighcCl7az03M319ZWxzZXtrPTcxfX1lbHNle2s9NzF9aWYoKGt8MCk9PTcxP3A6MCl7az03M31pZigoa3wwKT09NzMpe2NbaD4+Ml09Y1toPj4yXXwyfWNbYj4+Ml09ajtpZighKChhW20+PjBdJjEpPT0wKT8obD1jW28+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKChhW24+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWg9Y1tuKzg+PjJdfDA7aWYoKGh8MCk9PTApe2k9ZDtyZXR1cm59dm4oaCk7aT1kO3JldHVybn1mdW5jdGlvbiBmaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtkPWk7aT1pKzMwNHwwO3U9ZCsxNjB8MDtvPWQrMjgwfDA7bj1kKzI2NHwwO209ZCsyODR8MDt0PWQrMzAwfDA7cj1kO3M9ZCsyNzZ8MDtxPWQrMjk2fDA7dz1jW2U+PjJdfDA7eT1jW2Y+PjJdfDA7Zj1jW2crND4+Ml0mNzQ7aWYoKGZ8MCk9PTApe2Y9MH1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2UgaWYoKGZ8MCk9PTgpe2Y9MTZ9ZWxzZXtmPTEwfXBpKG4sZyx1LG8pO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2U9ejtnPW0rOHwwfWVsc2V7ej1tKzh8MDtlPW0rMXwwO2c9ejt6PWNbej4+Ml18MH1jW3Q+PjJdPXo7Y1tzPj4yXT1yO2NbcT4+Ml09MDt2PW0rNHwwO3g9Y1tvPj4yXXwwO289bSs4fDA7d2hpbGUoMSl7aWYoKHd8MCk9PTApe0E9MTt3PTB9ZWxzZXtBPWNbdysxMj4+Ml18MDtpZigoQXwwKT09KGNbdysxNj4+Ml18MCkpe0E9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7QT1jW0E+PjJdfDB9Qz0oQXwwKT09LTE7QT1DPzE6MDt3PUM/MDp3fWlmKCh5fDApIT0wKXtCPWNbeSsxMj4+Ml18MDtpZigoQnwwKT09KGNbeSsxNj4+Ml18MCkpe0I9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZighQSl7YnJlYWt9fWVsc2V7az0yMH19ZWxzZXtrPTIwfWlmKChrfDApPT0yMCl7az0wO2lmKEEpe3k9MDticmVha31lbHNle3k9MH19QT1hW20+PjBdfDA7Qj0oQSYxKT09MDtpZihCKXtDPShBJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9aWYoKChjW3Q+PjJdfDApLXp8MCk9PShDfDApKXtpZihCKXtEPShBJjI1NSk+Pj4xO3o9KEEmMjU1KT4+PjE7Qz1EPDwxO0E9RH1lbHNle0E9Y1t2Pj4yXXwwO3o9Y1t2Pj4yXXwwO0M9QTw8MX1kb3tpZighKHo+Pj4wPEM+Pj4wKSl7aWYoQil7YVttK0MrMT4+MF09MDthW20+PjBdPUE8PDI7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0M+PjBdPTA7Y1t2Pj4yXT1DO2JyZWFrfX1lbHNle2hnKG0sQy16fDApfX13aGlsZSgwKTtDPWFbbT4+MF18MDtpZigoQyYxKT09MCl7Qj0xMH1lbHNle0I9Y1ttPj4yXXwwO0M9QiYyNTU7Qj0oQiYtMikrIC0xfDB9ej0oQyYxKT09MDtpZih6KXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9ZG97aWYoIShDPj4+MDxCPj4+MCkpe2lmKHope2FbbStCKzE+PjBdPTA7YVttPj4wXT1CPDwxO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStCPj4wXT0wO2Nbdj4+Ml09QjticmVha319ZWxzZXtoZyhtLEItQ3wwKX19d2hpbGUoMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9ZX1lbHNle3o9Y1tnPj4yXXwwfWNbdD4+Ml09eitBfUE9dysxMnwwO0M9Y1tBPj4yXXwwO0I9dysxNnwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7Qz1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtDPWNbQz4+Ml18MH1pZigobGkoQyxmLHosdCxxLHgsbixyLHMsdSl8MCkhPTApe2JyZWFrfUM9Y1tBPj4yXXwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7b2NbY1soY1t3Pj4yXXwwKSs0MD4+Ml0mMTI3XSh3KXwwO2NvbnRpbnVlfWVsc2V7Y1tBPj4yXT1DKzQ7Y29udGludWV9fXU9YVtuPj4wXXwwO2lmKCh1JjEpPT0wKXt1PSh1JjI1NSk+Pj4xfWVsc2V7dT1jW24rND4+Ml18MH1pZigodXwwKSE9MD8ocD1jW3M+PjJdfDAsKHAtcnwwKTwxNjApOjApe0Q9Y1txPj4yXXwwO2Nbcz4+Ml09cCs0O2NbcD4+Ml09RH1jW2o+PjJdPUptKHosY1t0Pj4yXXwwLGgsZil8MDtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7ZD1pO2k9aSszMDR8MDt1PWQrMTYwfDA7bz1kKzI4MHwwO249ZCsyNjR8MDttPWQrMjg0fDA7dD1kKzMwMHwwO3I9ZDtzPWQrMjc2fDA7cT1kKzI5NnwwO3c9Y1tlPj4yXXwwO3k9Y1tmPj4yXXwwO2Y9Y1tnKzQ+PjJdJjc0O2lmKChmfDApPT04KXtmPTE2fWVsc2UgaWYoKGZ8MCk9PTApe2Y9MH1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2V7Zj0xMH1waShuLGcsdSxvKTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtoZyhtLDEwKTtpZigoYVttPj4wXSYxKT09MCl7ej1tKzF8MDtlPXo7Zz1tKzh8MH1lbHNle3o9bSs4fDA7ZT1tKzF8MDtnPXo7ej1jW3o+PjJdfDB9Y1t0Pj4yXT16O2Nbcz4+Ml09cjtjW3E+PjJdPTA7dj1tKzR8MDt4PWNbbz4+Ml18MDtvPW0rOHwwO3doaWxlKDEpe2lmKCh3fDApPT0wKXtBPTE7dz0wfWVsc2V7QT1jW3crMTI+PjJdfDA7aWYoKEF8MCk9PShjW3crMTY+PjJdfDApKXtBPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0E9Y1tBPj4yXXwwfUM9KEF8MCk9PS0xO0E9Qz8xOjA7dz1DPzA6d31pZigoeXwwKSE9MCl7Qj1jW3krMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3krMTY+PjJdfDApKXtCPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0I9Y1tCPj4yXXwwfWlmKCEoKEJ8MCk9PS0xKSl7aWYoIUEpe2JyZWFrfX1lbHNle2s9MjB9fWVsc2V7az0yMH1pZigoa3wwKT09MjApe2s9MDtpZihBKXt5PTA7YnJlYWt9ZWxzZXt5PTB9fUE9YVttPj4wXXwwO0I9KEEmMSk9PTA7aWYoQil7Qz0oQSYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWlmKCgoY1t0Pj4yXXwwKS16fDApPT0oQ3wwKSl7aWYoQil7RD0oQSYyNTUpPj4+MTt6PShBJjI1NSk+Pj4xO0M9RDw8MTtBPUR9ZWxzZXtBPWNbdj4+Ml18MDt6PWNbdj4+Ml18MDtDPUE8PDF9ZG97aWYoISh6Pj4+MDxDPj4+MCkpe2lmKEIpe2FbbStDKzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStDPj4wXT0wO2Nbdj4+Ml09QzticmVha319ZWxzZXtoZyhtLEMtenwwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe0I9MTB9ZWxzZXtCPWNbbT4+Ml18MDtDPUImMjU1O0I9KEImLTIpKyAtMXwwfXo9KEMmMSk9PTA7aWYoeil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWRve2lmKCEoQz4+PjA8Qj4+PjApKXtpZih6KXthW20rQisxPj4wXT0wO2FbbT4+MF09Qjw8MTticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQj4+MF09MDtjW3Y+PjJdPUI7YnJlYWt9fWVsc2V7aGcobSxCLUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWV9ZWxzZXt6PWNbZz4+Ml18MH1jW3Q+PjJdPXorQX1BPXcrMTJ8MDtDPWNbQT4+Ml18MDtCPXcrMTZ8MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe0M9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7Qz1jW0M+PjJdfDB9aWYoKGxpKEMsZix6LHQscSx4LG4scixzLHUpfDApIT0wKXticmVha31DPWNbQT4+Ml18MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe29jW2NbKGNbdz4+Ml18MCkrNDA+PjJdJjEyN10odyl8MDtjb250aW51ZX1lbHNle2NbQT4+Ml09Qys0O2NvbnRpbnVlfX11PWFbbj4+MF18MDtpZigodSYxKT09MCl7dT0odSYyNTUpPj4+MX1lbHNle3U9Y1tuKzQ+PjJdfDB9aWYoKHV8MCkhPTA/KHA9Y1tzPj4yXXwwLChwLXJ8MCk8MTYwKTowKXtEPWNbcT4+Ml18MDtjW3M+PjJdPXArNDtjW3A+PjJdPUR9Qz1JbSh6LGNbdD4+Ml18MCxoLGYpfDA7RD1qO2NbRD4+Ml09QztjW0QrND4+Ml09STtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gaGkoYixkLGUsZixoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MDtkPWk7aT1pKzM1MnwwO3c9ZCsyMDh8MDt5PWQrMTg0fDA7cD1kKzR8MDtuPWQrOHwwO289ZCsxOTZ8MDt1PWQ7dD1kKzI0fDA7cz1kKzE5MnwwO3Y9ZCsxODh8MDtyPWQrMzM3fDA7eD1kKzMzNnwwO3o9Y1tlPj4yXXwwO0I9Y1tmPj4yXXwwO3FpKG4saCx3LHkscCk7Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTA7aGcobywxMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9bysxfDA7ZT1DO2Y9bys4fDB9ZWxzZXtDPW8rOHwwO2U9bysxfDA7Zj1DO0M9Y1tDPj4yXXwwfWNbdT4+Ml09QztjW3M+PjJdPXQ7Y1t2Pj4yXT0wO2Fbcj4+MF09MTthW3g+PjBdPTY5O2g9bys0fDA7eT1jW3k+PjJdfDA7QT1jW3A+PjJdfDA7cD1vKzh8MDt3aGlsZSgxKXtpZigoenwwKT09MCl7RD0xO3o9MH1lbHNle0Q9Y1t6KzEyPj4yXXwwO2lmKChEfDApPT0oY1t6KzE2Pj4yXXwwKSl7RD1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtEPWNbRD4+Ml18MH1GPShEfDApPT0tMTtEPUY/MTowO3o9Rj8wOnp9aWYoKEJ8MCkhPTApe0U9Y1tCKzEyPj4yXXwwO2lmKChFfDApPT0oY1tCKzE2Pj4yXXwwKSl7RT1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtFPWNbRT4+Ml18MH1pZighKChFfDApPT0tMSkpe2lmKCFEKXticmVha319ZWxzZXttPTE2fX1lbHNle209MTZ9aWYoKG18MCk9PTE2KXttPTA7aWYoRCl7Qj0wO2JyZWFrfWVsc2V7Qj0wfX1EPWFbbz4+MF18MDtFPShEJjEpPT0wO2lmKEUpe0Y9KEQmMjU1KT4+PjF9ZWxzZXtGPWNbaD4+Ml18MH1pZigoKGNbdT4+Ml18MCktQ3wwKT09KEZ8MCkpe2lmKEUpe0c9KEQmMjU1KT4+PjE7Rj0oRCYyNTUpPj4+MTtDPUc8PDE7RD1HfWVsc2V7RD1jW2g+PjJdfDA7Rj1jW2g+PjJdfDA7Qz1EPDwxfWRve2lmKCEoRj4+PjA8Qz4+PjApKXtpZihFKXthW28rQysxPj4wXT0wO2Fbbz4+MF09RDw8MjticmVha31lbHNle2FbKGNbcD4+Ml18MCkrQz4+MF09MDtjW2g+PjJdPUM7YnJlYWt9fWVsc2V7aGcobyxDLUZ8MCl9fXdoaWxlKDApO0Y9YVtvPj4wXXwwO2lmKChGJjEpPT0wKXtFPTEwfWVsc2V7RT1jW28+PjJdfDA7Rj1FJjI1NTtFPShFJi0yKSsgLTF8MH1DPShGJjEpPT0wO2lmKEMpe0Y9KEYmMjU1KT4+PjF9ZWxzZXtGPWNbaD4+Ml18MH1kb3tpZighKEY+Pj4wPEU+Pj4wKSl7aWYoQyl7YVtvK0UrMT4+MF09MDthW28+PjBdPUU8PDE7YnJlYWt9ZWxzZXthWyhjW3A+PjJdfDApK0U+PjBdPTA7Y1toPj4yXT1FO2JyZWFrfX1lbHNle2hnKG8sRS1GfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz1lfWVsc2V7Qz1jW2Y+PjJdfDB9Y1t1Pj4yXT1DK0R9RT16KzEyfDA7Rj1jW0U+PjJdfDA7RD16KzE2fDA7aWYoKEZ8MCk9PShjW0Q+PjJdfDApKXtGPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0Y9Y1tGPj4yXXwwfWlmKChyaShGLHIseCxDLHUseSxBLG4sdCxzLHYsdyl8MCkhPTApe2JyZWFrfUY9Y1tFPj4yXXwwO2lmKChGfDApPT0oY1tEPj4yXXwwKSl7b2NbY1soY1t6Pj4yXXwwKSs0MD4+Ml0mMTI3XSh6KXwwO2NvbnRpbnVlfWVsc2V7Y1tFPj4yXT1GKzQ7Y29udGludWV9fXc9YVtuPj4wXXwwO2lmKCh3JjEpPT0wKXt3PSh3JjI1NSk+Pj4xfWVsc2V7dz1jW24rND4+Ml18MH1pZigoKHd8MCkhPTA/KGFbcj4+MF18MCkhPTA6MCk/KHE9Y1tzPj4yXXwwLChxLXR8MCk8MTYwKTowKXtHPWNbdj4+Ml18MDtjW3M+PjJdPXErNDtjW3E+PjJdPUd9Z1trPj4yXT0rSG0oQyxjW3U+PjJdfDAsaik7cWsobix0LGNbcz4+Ml18MCxqKTtpZigoenwwKT09MCl7az0wO3E9MX1lbHNle2s9Y1t6KzEyPj4yXXwwO2lmKChrfDApPT0oY1t6KzE2Pj4yXXwwKSl7az1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtrPWNbaz4+Ml18MH1xPShrfDApPT0tMTtrPXE/MDp6O3E9cT8xOjB9aWYoKEJ8MCkhPTApe3I9Y1tCKzEyPj4yXXwwO2lmKChyfDApPT0oY1tCKzE2Pj4yXXwwKSl7cj1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtyPWNbcj4+Ml18MH1pZighKChyfDApPT0tMSkpe2lmKCFxKXttPTcwfX1lbHNle209Njh9fWVsc2V7bT02OH1pZigobXwwKT09Njg/cTowKXttPTcwfWlmKChtfDApPT03MCl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1rO2lmKCEoKGFbbz4+MF0mMSk9PTApPyhsPWNbcD4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoKGFbbj4+MF0mMSk9PTApe2k9ZDtyZXR1cm59aj1jW24rOD4+Ml18MDtpZigoanwwKT09MCl7aT1kO3JldHVybn12bihqKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGlpKGIsZCxlLGYsZyxqLGspe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7ZD1pO2k9aSszNTJ8MDt3PWQrMjA4fDA7eT1kKzE4NHwwO3A9ZCs0fDA7bj1kKzh8MDtvPWQrMTk2fDA7dT1kO3Q9ZCsyNHwwO3M9ZCsxOTJ8MDt2PWQrMTg4fDA7cj1kKzMzN3wwO3g9ZCszMzZ8MDt6PWNbZT4+Ml18MDtCPWNbZj4+Ml18MDtxaShuLGcsdyx5LHApO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtDPW8rMXwwO2U9QztmPW8rOHwwfWVsc2V7Qz1vKzh8MDtlPW8rMXwwO2Y9QztDPWNbQz4+Ml18MH1jW3U+PjJdPUM7Y1tzPj4yXT10O2Nbdj4+Ml09MDthW3I+PjBdPTE7YVt4Pj4wXT02OTtnPW8rNHwwO3k9Y1t5Pj4yXXwwO0E9Y1twPj4yXXwwO3A9bys4fDA7d2hpbGUoMSl7aWYoKHp8MCk9PTApe0Q9MTt6PTB9ZWxzZXtEPWNbeisxMj4+Ml18MDtpZigoRHwwKT09KGNbeisxNj4+Ml18MCkpe0Q9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7RD1jW0Q+PjJdfDB9Rj0oRHwwKT09LTE7RD1GPzE6MDt6PUY/MDp6fWlmKChCfDApIT0wKXtFPWNbQisxMj4+Ml18MDtpZigoRXwwKT09KGNbQisxNj4+Ml18MCkpe0U9b2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwfWVsc2V7RT1jW0U+PjJdfDB9aWYoISgoRXwwKT09LTEpKXtpZighRCl7YnJlYWt9fWVsc2V7bT0xNn19ZWxzZXttPTE2fWlmKChtfDApPT0xNil7bT0wO2lmKEQpe0I9MDticmVha31lbHNle0I9MH19RD1hW28+PjBdfDA7RT0oRCYxKT09MDtpZihFKXtGPShEJjI1NSk+Pj4xfWVsc2V7Rj1jW2c+PjJdfDB9aWYoKChjW3U+PjJdfDApLUN8MCk9PShGfDApKXtpZihFKXtHPShEJjI1NSk+Pj4xO0Y9KEQmMjU1KT4+PjE7Qz1HPDwxO0Q9R31lbHNle0Q9Y1tnPj4yXXwwO0Y9Y1tnPj4yXXwwO0M9RDw8MX1kb3tpZighKEY+Pj4wPEM+Pj4wKSl7aWYoRSl7YVtvK0MrMT4+MF09MDthW28+PjBdPUQ8PDI7YnJlYWt9ZWxzZXthWyhjW3A+PjJdfDApK0M+PjBdPTA7Y1tnPj4yXT1DO2JyZWFrfX1lbHNle2hnKG8sQy1GfDApfX13aGlsZSgwKTtGPWFbbz4+MF18MDtpZigoRiYxKT09MCl7RT0xMH1lbHNle0U9Y1tvPj4yXXwwO0Y9RSYyNTU7RT0oRSYtMikrIC0xfDB9Qz0oRiYxKT09MDtpZihDKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW2c+PjJdfDB9ZG97aWYoIShGPj4+MDxFPj4+MCkpe2lmKEMpe2FbbytFKzE+PjBdPTA7YVtvPj4wXT1FPDwxO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStFPj4wXT0wO2NbZz4+Ml09RTticmVha319ZWxzZXtoZyhvLEUtRnwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9ZX1lbHNle0M9Y1tmPj4yXXwwfWNbdT4+Ml09QytEfUU9eisxMnwwO0Y9Y1tFPj4yXXwwO0Q9eisxNnwwO2lmKChGfDApPT0oY1tEPj4yXXwwKSl7Rj1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtGPWNbRj4+Ml18MH1pZigocmkoRixyLHgsQyx1LHksQSxuLHQscyx2LHcpfDApIT0wKXticmVha31GPWNbRT4+Ml18MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe29jW2NbKGNbej4+Ml18MCkrNDA+PjJdJjEyN10oeil8MDtjb250aW51ZX1lbHNle2NbRT4+Ml09Ris0O2NvbnRpbnVlfX13PWFbbj4+MF18MDtpZigodyYxKT09MCl7dz0odyYyNTUpPj4+MX1lbHNle3c9Y1tuKzQ+PjJdfDB9aWYoKCh3fDApIT0wPyhhW3I+PjBdfDApIT0wOjApPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7Rz1jW3Y+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1HfWhbaz4+M109K0dtKEMsY1t1Pj4yXXwwLGopO3FrKG4sdCxjW3M+PjJdfDAsaik7aWYoKHp8MCk9PTApe2s9MDtxPTF9ZWxzZXtrPWNbeisxMj4+Ml18MDtpZigoa3wwKT09KGNbeisxNj4+Ml18MCkpe2s9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7az1jW2s+PjJdfDB9cT0oa3wwKT09LTE7az1xPzA6ejtxPXE/MTowfWlmKChCfDApIT0wKXtyPWNbQisxMj4+Ml18MDtpZigocnwwKT09KGNbQisxNj4+Ml18MCkpe3I9b2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwfWVsc2V7cj1jW3I+PjJdfDB9aWYoISgocnwwKT09LTEpKXtpZighcSl7bT03MH19ZWxzZXttPTY4fX1lbHNle209Njh9aWYoKG18MCk9PTY4P3E6MCl7bT03MH1pZigobXwwKT09NzApe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09aztpZighKChhW28+PjBdJjEpPT0wKT8obD1jW3A+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKChhW24+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWo9Y1tuKzg+PjJdfDA7aWYoKGp8MCk9PTApe2k9ZDtyZXR1cm59dm4oaik7aT1kO3JldHVybn1mdW5jdGlvbiBqaShiLGQsZSxmLGcsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wO2Q9aTtpPWkrMzUyfDA7dz1kKzIwOHwwO3k9ZCsxODR8MDtwPWQrNHwwO249ZCs4fDA7bz1kKzE5NnwwO3U9ZDt0PWQrMjR8MDtzPWQrMTkyfDA7dj1kKzE4OHwwO3I9ZCszMzd8MDt4PWQrMzM2fDA7ej1jW2U+PjJdfDA7Qj1jW2Y+PjJdfDA7cWkobixnLHcseSxwKTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz1vKzF8MDtlPUM7Zj1vKzh8MH1lbHNle0M9bys4fDA7ZT1vKzF8MDtmPUM7Qz1jW0M+PjJdfDB9Y1t1Pj4yXT1DO2Nbcz4+Ml09dDtjW3Y+PjJdPTA7YVtyPj4wXT0xO2FbeD4+MF09Njk7Zz1vKzR8MDt5PWNbeT4+Ml18MDtBPWNbcD4+Ml18MDtwPW8rOHwwO3doaWxlKDEpe2lmKCh6fDApPT0wKXtEPTE7ej0wfWVsc2V7RD1jW3orMTI+PjJdfDA7aWYoKER8MCk9PShjW3orMTY+PjJdfDApKXtEPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0Q9Y1tEPj4yXXwwfUY9KER8MCk9PS0xO0Q9Rj8xOjA7ej1GPzA6en1pZigoQnwwKSE9MCl7RT1jW0IrMTI+PjJdfDA7aWYoKEV8MCk9PShjW0IrMTY+PjJdfDApKXtFPW9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MH1lbHNle0U9Y1tFPj4yXXwwfWlmKCEoKEV8MCk9PS0xKSl7aWYoIUQpe2JyZWFrfX1lbHNle209MTZ9fWVsc2V7bT0xNn1pZigobXwwKT09MTYpe209MDtpZihEKXtCPTA7YnJlYWt9ZWxzZXtCPTB9fUQ9YVtvPj4wXXwwO0U9KEQmMSk9PTA7aWYoRSl7Rj0oRCYyNTUpPj4+MX1lbHNle0Y9Y1tnPj4yXXwwfWlmKCgoY1t1Pj4yXXwwKS1DfDApPT0oRnwwKSl7aWYoRSl7Rz0oRCYyNTUpPj4+MTtGPShEJjI1NSk+Pj4xO0M9Rzw8MTtEPUd9ZWxzZXtEPWNbZz4+Ml18MDtGPWNbZz4+Ml18MDtDPUQ8PDF9ZG97aWYoIShGPj4+MDxDPj4+MCkpe2lmKEUpe2FbbytDKzE+PjBdPTA7YVtvPj4wXT1EPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStDPj4wXT0wO2NbZz4+Ml09QzticmVha319ZWxzZXtoZyhvLEMtRnwwKX19d2hpbGUoMCk7Rj1hW28+PjBdfDA7aWYoKEYmMSk9PTApe0U9MTB9ZWxzZXtFPWNbbz4+Ml18MDtGPUUmMjU1O0U9KEUmLTIpKyAtMXwwfUM9KEYmMSk9PTA7aWYoQyl7Rj0oRiYyNTUpPj4+MX1lbHNle0Y9Y1tnPj4yXXwwfWRve2lmKCEoRj4+PjA8RT4+PjApKXtpZihDKXthW28rRSsxPj4wXT0wO2Fbbz4+MF09RTw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrRT4+MF09MDtjW2c+PjJdPUU7YnJlYWt9fWVsc2V7aGcobyxFLUZ8MCl9fXdoaWxlKDApO2lmKChhW28+PjBdJjEpPT0wKXtDPWV9ZWxzZXtDPWNbZj4+Ml18MH1jW3U+PjJdPUMrRH1FPXorMTJ8MDtGPWNbRT4+Ml18MDtEPXorMTZ8MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe0Y9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7Rj1jW0Y+PjJdfDB9aWYoKHJpKEYscix4LEMsdSx5LEEsbix0LHMsdix3KXwwKSE9MCl7YnJlYWt9Rj1jW0U+PjJdfDA7aWYoKEZ8MCk9PShjW0Q+PjJdfDApKXtvY1tjWyhjW3o+PjJdfDApKzQwPj4yXSYxMjddKHopfDA7Y29udGludWV9ZWxzZXtjW0U+PjJdPUYrNDtjb250aW51ZX19dz1hW24+PjBdfDA7aWYoKHcmMSk9PTApe3c9KHcmMjU1KT4+PjF9ZWxzZXt3PWNbbis0Pj4yXXwwfWlmKCgod3wwKSE9MD8oYVtyPj4wXXwwKSE9MDowKT8ocT1jW3M+PjJdfDAsKHEtdHwwKTwxNjApOjApe0c9Y1t2Pj4yXXwwO2Nbcz4+Ml09cSs0O2NbcT4+Ml09R31oW2s+PjNdPStGbShDLGNbdT4+Ml18MCxqKTtxayhuLHQsY1tzPj4yXXwwLGopO2lmKCh6fDApPT0wKXtrPTA7cT0xfWVsc2V7az1jW3orMTI+PjJdfDA7aWYoKGt8MCk9PShjW3orMTY+PjJdfDApKXtrPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle2s9Y1trPj4yXXwwfXE9KGt8MCk9PS0xO2s9cT8wOno7cT1xPzE6MH1pZigoQnwwKSE9MCl7cj1jW0IrMTI+PjJdfDA7aWYoKHJ8MCk9PShjW0IrMTY+PjJdfDApKXtyPW9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MH1lbHNle3I9Y1tyPj4yXXwwfWlmKCEoKHJ8MCk9PS0xKSl7aWYoIXEpe209NzB9fWVsc2V7bT02OH19ZWxzZXttPTY4fWlmKChtfDApPT02OD9xOjApe209NzB9aWYoKG18MCk9PTcwKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWs7aWYoISgoYVtvPj4wXSYxKT09MCk/KGw9Y1twPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1qPWNbbis4Pj4yXXwwO2lmKChqfDApPT0wKXtpPWQ7cmV0dXJufXZuKGopO2k9ZDtyZXR1cm59ZnVuY3Rpb24ga2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtkPWk7aT1pKzMwNHwwO249ZDtvPWQrMTkyfDA7bD1kKzE3NnwwO3Y9ZCsxNnwwO3E9Y1tnKzI4Pj4yXXwwO0M9cSs0fDA7Y1tDPj4yXT0oY1tDPj4yXXwwKSsxO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ0ODtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDQ4LG4pfWc9KGNbMTM0NTI+PjJdfDApKyAtMXwwO3A9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcD4+Mj4+PjA+Zz4+PjA/KG09Y1twKyhnPDwyKT4+Ml18MCwobXwwKSE9MCk6MCl7dWNbY1soY1ttPj4yXXwwKSs0OD4+Ml0mMzFdKG0sMTIwMTYsMTIwNDJ8MCxvKXwwO0I9cSs0fDA7Qz1jW0I+PjJdfDA7Y1tCPj4yXT1DKyAtMTtpZigoQ3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfWNbbCswPj4yXT0wO2NbbCs0Pj4yXT0wO2NbbCs4Pj4yXT0wO2hnKGwsMTApO2lmKChhW2w+PjBdJjEpPT0wKXt5PWwrMXwwO3A9eTtxPWwrOHwwfWVsc2V7eT1sKzh8MDtwPWwrMXwwO3E9eTt5PWNbeT4+Ml18MH1yPWwrNHwwO3Q9bys5NnwwO3U9bysxMDB8MDtzPW8rMTA0fDA7Zz1vO209bCs4fDA7eD1jW2U+PjJdfDA7dz0wO3o9eTthOndoaWxlKDEpe2lmKCh4fDApIT0wKXtBPWNbeCsxMj4+Ml18MDtpZigoQXwwKT09KGNbeCsxNj4+Ml18MCkpe0E9b2NbY1soY1t4Pj4yXXwwKSszNj4+Ml0mMTI3XSh4KXwwfWVsc2V7QT1jW0E+PjJdfDB9aWYoKEF8MCk9PS0xKXtjW2U+PjJdPTA7eD0wO0E9MX1lbHNle0E9MH19ZWxzZXt4PTA7QT0xfUM9Y1tmPj4yXXwwO2Rve2lmKChDfDApIT0wKXtCPWNbQysxMj4+Ml18MDtpZigoQnwwKT09KGNbQysxNj4+Ml18MCkpe0I9b2NbY1soY1tDPj4yXXwwKSszNj4+Ml0mMTI3XShDKXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZihBKXticmVha31lbHNle2JyZWFrIGF9fWVsc2V7Y1tmPj4yXT0wO2s9Mjc7YnJlYWt9fWVsc2V7az0yN319d2hpbGUoMCk7aWYoKGt8MCk9PTI3PyhrPTAsQSk6MCl7YnJlYWt9Qz1hW2w+PjBdfDA7QT0oQyYxKT09MDtpZihBKXtCPShDJjI1NSk+Pj4xfWVsc2V7Qj1jW3I+PjJdfDB9aWYoKHoteXwwKT09KEJ8MCkpe2lmKEEpe3o9KEMmMjU1KT4+PjE7Qj0oQyYyNTUpPj4+MTt5PXo8PDF9ZWxzZXt6PWNbcj4+Ml18MDtCPWNbcj4+Ml18MDt5PXo8PDF9ZG97aWYoIShCPj4+MDx5Pj4+MCkpe2lmKEEpe2FbbCt5KzE+PjBdPTA7YVtsPj4wXT16PDwyO2JyZWFrfWVsc2V7YVsoY1ttPj4yXXwwKSt5Pj4wXT0wO2Nbcj4+Ml09eTticmVha319ZWxzZXtoZyhsLHktQnwwKX19d2hpbGUoMCk7Qj1hW2w+PjBdfDA7aWYoKEImMSk9PTApe0E9MTB9ZWxzZXtBPWNbbD4+Ml18MDtCPUEmMjU1O0E9KEEmLTIpKyAtMXwwfXk9KEImMSk9PTA7aWYoeSl7Qj0oQiYyNTUpPj4+MX1lbHNle0I9Y1tyPj4yXXwwfWRve2lmKCEoQj4+PjA8QT4+PjApKXtpZih5KXthW2wrQSsxPj4wXT0wO2FbbD4+MF09QTw8MTticmVha31lbHNle2FbKGNbbT4+Ml18MCkrQT4+MF09MDtjW3I+PjJdPUE7YnJlYWt9fWVsc2V7aGcobCxBLUJ8MCl9fXdoaWxlKDApO2lmKChhW2w+PjBdJjEpPT0wKXt5PXB9ZWxzZXt5PWNbcT4+Ml18MH16PXkrenwwfUE9Y1t4KzEyPj4yXXwwO2lmKChBfDApPT0oY1t4KzE2Pj4yXXwwKSl7QT1vY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDB9ZWxzZXtBPWNbQT4+Ml18MH14PSh6fDApPT0oeXwwKTtkb3tpZih4KXtCPShjW3Q+PjJdfDApPT0oQXwwKTtpZighQj8oY1t1Pj4yXXwwKSE9KEF8MCk6MCl7Qj1vO2s9NjI7YnJlYWt9YVt6Pj4wXT1CPzQzOjQ1O3o9eisxfDA7dz0wfWVsc2V7Qj1vO2s9NjJ9fXdoaWxlKDApO2Rve2lmKChrfDApPT02Mil7d2hpbGUoMSl7az0wO2lmKChjW0I+PjJdfDApPT0oQXwwKSl7YnJlYWt9Qj1CKzR8MDtpZigoQnwwKT09KHN8MCkpe0I9czticmVha31lbHNle2s9NjJ9fUI9Qi1nfDA7QT1CPj4yO2lmKChCfDApPjkyKXticmVhayBhfWlmKChCfDApPDg4KXthW3o+PjBdPWFbMTIwMTYrQT4+MF18MDt6PXorMXwwO3c9dysxfDA7YnJlYWt9aWYoeCl7eT16O2JyZWFrIGF9aWYoKHoteXwwKT49Myl7YnJlYWsgYX1pZigoYVt6KyAtMT4+MF18MCkhPTQ4KXticmVhayBhfWFbej4+MF09YVsxMjAxNitBPj4wXXwwO3o9eisxfDA7dz0wfX13aGlsZSgwKTt4PWNbZT4+Ml18MDtCPXgrMTJ8MDtBPWNbQj4+Ml18MDtpZigoQXwwKT09KGNbeCsxNj4+Ml18MCkpe29jW2NbKGNbeD4+Ml18MCkrNDA+PjJdJjEyN10oeCl8MDtDPXY7dj1DO2NvbnRpbnVlfWVsc2V7Y1tCPj4yXT1BKzQ7Qz12O3Y9Qztjb250aW51ZX19YVt5KzM+PjBdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfUM9Y1szMzQwXXwwO2Nbbj4+Ml09ajtpZigoWWgoeSxDLG4pfDApIT0xKXtjW2g+PjJdPTR9aj1jW2U+PjJdfDA7aWYoKGp8MCkhPTApe249Y1tqKzEyPj4yXXwwO2lmKChufDApPT0oY1tqKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtqPTA7ZT0xfWVsc2V7ZT0wfX1lbHNle2o9MDtlPTF9bj1jW2Y+PjJdfDA7ZG97aWYoKG58MCkhPTApe289Y1tuKzEyPj4yXXwwO2lmKChvfDApPT0oY1tuKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXtuPWNbbz4+Ml18MH1pZighKChufDApPT0tMSkpe2lmKGUpe2JyZWFrfWVsc2V7az05NDticmVha319ZWxzZXtjW2Y+PjJdPTA7az05MjticmVha319ZWxzZXtrPTkyfX13aGlsZSgwKTtpZigoa3wwKT09OTI/ZTowKXtrPTk0fWlmKChrfDApPT05NCl7Y1toPj4yXT1jW2g+PjJdfDJ9Y1tiPj4yXT1qO2lmKChhW2w+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWY9Y1ttPj4yXXwwO2lmKChmfDApPT0wKXtpPWQ7cmV0dXJufXZuKGYpO2k9ZDtyZXR1cm59Qz1YYSg0KXwwO2NbQz4+Ml09MjEzMDQ7d2IoQ3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gbGkoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MDtuPWk7cD1jW2Y+PjJdfDA7bz0ocHwwKT09KGV8MCk7ZG97aWYobyl7cT0oY1ttKzk2Pj4yXXwwKT09KGJ8MCk7aWYoIXE/KGNbbSsxMDA+PjJdfDApIT0oYnwwKTowKXticmVha31jW2Y+PjJdPWUrMTthW2U+PjBdPXE/NDM6NDU7Y1tnPj4yXT0wO3E9MDtpPW47cmV0dXJuIHF8MH19d2hpbGUoMCk7cT1hW2o+PjBdfDA7aWYoKHEmMSk9PTApe2o9KHEmMjU1KT4+PjF9ZWxzZXtqPWNbais0Pj4yXXwwfWlmKChqfDApIT0wJihifDApPT0oaHwwKSl7bz1jW2w+PjJdfDA7aWYoKG8ta3wwKT49MTYwKXtxPTA7aT1uO3JldHVybiBxfDB9cT1jW2c+PjJdfDA7Y1tsPj4yXT1vKzQ7Y1tvPj4yXT1xO2NbZz4+Ml09MDtxPTA7aT1uO3JldHVybiBxfDB9bD1tKzEwNHwwO2s9bTt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT09KGJ8MCkpe2JyZWFrfWs9ays0fDA7aWYoKGt8MCk9PShsfDApKXtrPWw7YnJlYWt9fWI9ay1tfDA7bT1iPj4yO2lmKChifDApPjkyKXtxPS0xO2k9bjtyZXR1cm4gcXwwfWlmKChkfDApPT0xMHwoZHwwKT09OCl7aWYoKG18MCk+PShkfDApKXtxPS0xO2k9bjtyZXR1cm4gcXwwfX1lbHNlIGlmKChkfDApPT0xNj8oYnwwKT49ODg6MCl7aWYobyl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigocC1lfDApPj0zKXtxPS0xO2k9bjtyZXR1cm4gcXwwfWlmKChhW3ArIC0xPj4wXXwwKSE9NDgpe3E9LTE7aT1uO3JldHVybiBxfDB9Y1tnPj4yXT0wO3E9YVsxMjAxNittPj4wXXwwO2NbZj4+Ml09cCsxO2FbcD4+MF09cTtxPTA7aT1uO3JldHVybiBxfDB9cT1hWzEyMDE2K20+PjBdfDA7Y1tmPj4yXT1wKzE7YVtwPj4wXT1xO2NbZz4+Ml09KGNbZz4+Ml18MCkrMTtxPTA7aT1uO3JldHVybiBxfDB9ZnVuY3Rpb24gbWkoYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aD1pO2k9aSsxNnwwO2w9aDtkPWNbZCsyOD4+Ml18MDtvPWQrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1uPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtqPWQrMTJ8MDttPWQrOHwwO289Y1ttPj4yXXwwO2lmKChjW2o+PjJdfDApLW8+PjI+Pj4wPm4+Pj4wPyhrPWNbbysobjw8Mik+PjJdfDAsKGt8MCkhPTApOjApe3VjW2NbKGNbaz4+Ml18MCkrMzI+PjJdJjMxXShrLDEyMDE2LDEyMDQyfDAsZSl8MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbD4+Ml09MTM2MDA7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzYwMCxsKX1lPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtrPWNbbT4+Ml18MDtpZigoY1tqPj4yXXwwKS1rPj4yPj4+MD5lPj4+MD8oZz1jW2srKGU8PDIpPj4yXXwwLChnfDApIT0wKTowKXthW2Y+PjBdPW9jW2NbKGNbZz4+Ml18MCkrMTY+PjJdJjEyN10oZyl8MDttY1tjWyhjW2c+PjJdfDApKzIwPj4yXSYxMjddKGIsZyk7bj1kKzR8MDtvPWNbbj4+Ml18MDtjW24+PjJdPW8rIC0xO2lmKChvfDApIT0wKXtpPWg7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTtpPWg7cmV0dXJufW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIG5pKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7aj1pO2k9aSsxNnwwO2w9ajtkPWNbZCsyOD4+Ml18MDtwPWQrNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1vPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtrPWQrMTJ8MDtuPWQrOHwwO3A9Y1tuPj4yXXwwO2lmKChjW2s+PjJdfDApLXA+PjI+Pj4wPm8+Pj4wPyhtPWNbcCsobzw8Mik+PjJdfDAsKG18MCkhPTApOjApe3VjW2NbKGNbbT4+Ml18MCkrMzI+PjJdJjMxXShtLDEyMDE2LDEyMDQ4fDAsZSl8MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbD4+Ml09MTM2MDA7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzYwMCxsKX1lPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtsPWNbbj4+Ml18MDtpZigoY1trPj4yXXwwKS1sPj4yPj4+MD5lPj4+MD8oaD1jW2wrKGU8PDIpPj4yXXwwLChofDApIT0wKTowKXthW2Y+PjBdPW9jW2NbKGNbaD4+Ml18MCkrMTI+PjJdJjEyN10oaCl8MDthW2c+PjBdPW9jW2NbKGNbaD4+Ml18MCkrMTY+PjJdJjEyN10oaCl8MDttY1tjWyhjW2g+PjJdfDApKzIwPj4yXSYxMjddKGIsaCk7bz1kKzR8MDtwPWNbbz4+Ml18MDtjW28+PjJdPXArIC0xO2lmKChwfDApIT0wKXtpPWo7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTtpPWo7cmV0dXJufXA9WGEoNCl8MDtjW3A+PjJdPTIxMzA0O3diKHB8MCwyMTM3NiwxOTYpfXA9WGEoNCl8MDtjW3A+PjJdPTIxMzA0O3diKHB8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIG9pKGIsZCxlLGYsZyxoLGosayxsLG0sbixvKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDt2YXIgcD0wLHE9MDtwPWk7aWYoYjw8MjQ+PjI0PT1oPDwyND4+MjQpe2lmKChhW2Q+PjBdfDApPT0wKXtqPS0xO2k9cDtyZXR1cm4ganwwfWFbZD4+MF09MDtqPWNbZz4+Ml18MDtjW2c+PjJdPWorMTthW2o+PjBdPTQ2O2c9YVtrPj4wXXwwO2lmKChnJjEpPT0wKXtnPShnJjI1NSk+Pj4xfWVsc2V7Zz1jW2srND4+Ml18MH1pZigoZ3wwKT09MCl7aj0wO2k9cDtyZXR1cm4ganwwfWc9Y1ttPj4yXXwwO2lmKChnLWx8MCk+PTE2MCl7aj0wO2k9cDtyZXR1cm4ganwwfWo9Y1tuPj4yXXwwO2NbbT4+Ml09Zys0O2NbZz4+Ml09ajtqPTA7aT1wO3JldHVybiBqfDB9aWYoYjw8MjQ+PjI0PT1qPDwyND4+MjQpe2g9YVtrPj4wXXwwO2lmKChoJjEpPT0wKXtoPShoJjI1NSk+Pj4xfWVsc2V7aD1jW2srND4+Ml18MH1pZigoaHwwKSE9MCl7aWYoKGFbZD4+MF18MCk9PTApe2o9LTE7aT1wO3JldHVybiBqfDB9Zz1jW20+PjJdfDA7aWYoKGctbHwwKT49MTYwKXtqPTA7aT1wO3JldHVybiBqfDB9aj1jW24+PjJdfDA7Y1ttPj4yXT1nKzQ7Y1tnPj4yXT1qO2Nbbj4+Ml09MDtqPTA7aT1wO3JldHVybiBqfDB9fWg9byszMnwwO2o9bztkb3tpZigoYVtqPj4wXXwwKT09Yjw8MjQ+PjI0KXtoPWo7YnJlYWt9aj1qKzF8MH13aGlsZSgoanwwKSE9KGh8MCkpO2I9aC1vfDA7aWYoKGJ8MCk+MzEpe2o9LTE7aT1wO3JldHVybiBqfDB9bz1hWzEyMDE2K2I+PjBdfDA7aWYoKGJ8MCk9PTIzfChifDApPT0yMil7YVtlPj4wXT04MDtqPWNbZz4+Ml18MDtjW2c+PjJdPWorMTthW2o+PjBdPW87aj0wO2k9cDtyZXR1cm4ganwwfWVsc2UgaWYoKGJ8MCk9PTI0fChifDApPT0yNSl7bj1jW2c+PjJdfDA7aWYoKG58MCkhPShmfDApPyhhW24rIC0xPj4wXSY5NXwwKSE9KGFbZT4+MF0mMTI3fDApOjApe2o9LTE7aT1wO3JldHVybiBqfDB9Y1tnPj4yXT1uKzE7YVtuPj4wXT1vO2o9MDtpPXA7cmV0dXJuIGp8MH1lbHNle2Y9byY5NTtpZigoZnwwKT09KGFbZT4+MF18MCk/KGFbZT4+MF09ZnwxMjgsKGFbZD4+MF18MCkhPTApOjApe2FbZD4+MF09MDtlPWFbaz4+MF18MDtpZigoZSYxKT09MCl7az0oZSYyNTUpPj4+MX1lbHNle2s9Y1trKzQ+PjJdfDB9aWYoKGt8MCkhPTA/KHE9Y1ttPj4yXXwwLChxLWx8MCk8MTYwKTowKXtqPWNbbj4+Ml18MDtjW20+PjJdPXErNDtjW3E+PjJdPWp9fWo9Y1tnPj4yXXwwO2NbZz4+Ml09aisxO2Fbaj4+MF09bztpZigoYnwwKT4yMSl7aj0wO2k9cDtyZXR1cm4ganwwfWNbbj4+Ml09KGNbbj4+Ml18MCkrMTtqPTA7aT1wO3JldHVybiBqfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcGkoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Zz1pO2k9aSsxNnwwO2s9ZztiPWNbYisyOD4+Ml18MDtuPWIrNHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1tPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtoPWIrMTJ8MDtsPWIrOHwwO249Y1tsPj4yXXwwO2lmKChjW2g+PjJdfDApLW4+PjI+Pj4wPm0+Pj4wPyhqPWNbbisobTw8Mik+PjJdfDAsKGp8MCkhPTApOjApe3VjW2NbKGNbaj4+Ml18MCkrNDg+PjJdJjMxXShqLDEyMDE2LDEyMDQyfDAsZCl8MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbaz4+Ml09MTM2MDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzYwOCxrKX1kPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtqPWNbbD4+Ml18MDtpZigoY1toPj4yXXwwKS1qPj4yPj4+MD5kPj4+MD8oZj1jW2orKGQ8PDIpPj4yXXwwLChmfDApIT0wKTowKXtjW2U+PjJdPW9jW2NbKGNbZj4+Ml18MCkrMTY+PjJdJjEyN10oZil8MDttY1tjWyhjW2Y+PjJdfDApKzIwPj4yXSYxMjddKGEsZik7bT1iKzR8MDtuPWNbbT4+Ml18MDtjW20+PjJdPW4rIC0xO2lmKChufDApIT0wKXtpPWc7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtpPWc7cmV0dXJufW49WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfW49WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHFpKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aD1pO2k9aSsxNnwwO2s9aDtiPWNbYisyOD4+Ml18MDtvPWIrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1uPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtqPWIrMTJ8MDttPWIrOHwwO289Y1ttPj4yXXwwO2lmKChjW2o+PjJdfDApLW8+PjI+Pj4wPm4+Pj4wPyhsPWNbbysobjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe3VjW2NbKGNbbD4+Ml18MCkrNDg+PjJdJjMxXShsLDEyMDE2LDEyMDQ4fDAsZCl8MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbaz4+Ml09MTM2MDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzYwOCxrKX1kPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtrPWNbbT4+Ml18MDtpZigoY1tqPj4yXXwwKS1rPj4yPj4+MD5kPj4+MD8oZz1jW2srKGQ8PDIpPj4yXXwwLChnfDApIT0wKTowKXtjW2U+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMTI+PjJdJjEyN10oZyl8MDtjW2Y+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMTY+PjJdJjEyN10oZyl8MDttY1tjWyhjW2c+PjJdfDApKzIwPj4yXSYxMjddKGEsZyk7bj1iKzR8MDtvPWNbbj4+Ml18MDtjW24+PjJdPW8rIC0xO2lmKChvfDApIT0wKXtpPWg7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtpPWg7cmV0dXJufW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHJpKGIsZCxlLGYsZyxoLGosayxsLG0sbixvKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDt2YXIgcD0wLHE9MDtwPWk7aWYoKGJ8MCk9PShofDApKXtpZigoYVtkPj4wXXwwKT09MCl7aj0tMTtpPXA7cmV0dXJuIGp8MH1hW2Q+PjBdPTA7aj1jW2c+PjJdfDA7Y1tnPj4yXT1qKzE7YVtqPj4wXT00NjtnPWFbaz4+MF18MDtpZigoZyYxKT09MCl7Zz0oZyYyNTUpPj4+MX1lbHNle2c9Y1trKzQ+PjJdfDB9aWYoKGd8MCk9PTApe2o9MDtpPXA7cmV0dXJuIGp8MH1nPWNbbT4+Ml18MDtpZigoZy1sfDApPj0xNjApe2o9MDtpPXA7cmV0dXJuIGp8MH1qPWNbbj4+Ml18MDtjW20+PjJdPWcrNDtjW2c+PjJdPWo7aj0wO2k9cDtyZXR1cm4ganwwfWlmKChifDApPT0oanwwKSl7aD1hW2s+PjBdfDA7aWYoKGgmMSk9PTApe2g9KGgmMjU1KT4+PjF9ZWxzZXtoPWNbays0Pj4yXXwwfWlmKChofDApIT0wKXtpZigoYVtkPj4wXXwwKT09MCl7aj0tMTtpPXA7cmV0dXJuIGp8MH1nPWNbbT4+Ml18MDtpZigoZy1sfDApPj0xNjApe2o9MDtpPXA7cmV0dXJuIGp8MH1qPWNbbj4+Ml18MDtjW20+PjJdPWcrNDtjW2c+PjJdPWo7Y1tuPj4yXT0wO2o9MDtpPXA7cmV0dXJuIGp8MH19aD1vKzEyOHwwO2o9bztkb3tpZigoY1tqPj4yXXwwKT09KGJ8MCkpe2g9ajticmVha31qPWorNHwwfXdoaWxlKChqfDApIT0oaHwwKSk7Yj1oLW98MDtoPWI+PjI7aWYoKGJ8MCk+MTI0KXtqPS0xO2k9cDtyZXR1cm4ganwwfW89YVsxMjAxNitoPj4wXXwwO2lmKChofDApPT0yNHwoaHwwKT09MjUpe249Y1tnPj4yXXwwO2lmKChufDApIT0oZnwwKT8oYVtuKyAtMT4+MF0mOTV8MCkhPShhW2U+PjBdJjEyN3wwKTowKXtqPS0xO2k9cDtyZXR1cm4ganwwfWNbZz4+Ml09bisxO2Fbbj4+MF09bztqPTA7aT1wO3JldHVybiBqfDB9ZWxzZSBpZighKChofDApPT0yM3woaHwwKT09MjIpKXtmPW8mOTU7aWYoKGZ8MCk9PShhW2U+PjBdfDApPyhhW2U+PjBdPWZ8MTI4LChhW2Q+PjBdfDApIT0wKTowKXthW2Q+PjBdPTA7ZT1hW2s+PjBdfDA7aWYoKGUmMSk9PTApe2s9KGUmMjU1KT4+PjF9ZWxzZXtrPWNbays0Pj4yXXwwfWlmKChrfDApIT0wPyhxPWNbbT4+Ml18MCwocS1sfDApPDE2MCk6MCl7aj1jW24+PjJdfDA7Y1ttPj4yXT1xKzQ7Y1txPj4yXT1qfX19ZWxzZXthW2U+PjBdPTgwfWo9Y1tnPj4yXXwwO2NbZz4+Ml09aisxO2Fbaj4+MF09bztpZigoYnwwKT44NCl7aj0wO2k9cDtyZXR1cm4ganwwfWNbbj4+Ml09KGNbbj4+Ml18MCkrMTtqPTA7aT1wO3JldHVybiBqfDB9ZnVuY3Rpb24gc2koYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gdGkoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHVpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aj1pO2k9aSszMnwwO209ajtuPWorMjR8MDtrPWorMTJ8MDtpZigoY1tmKzQ+PjJdJjF8MCk9PTApe2w9Y1soY1tkPj4yXXwwKSsyND4+Ml18MDtjW24+PjJdPWNbZT4+Ml07bz1oJjE7Y1ttKzA+PjJdPWNbbiswPj4yXTt3Y1tsJjYzXShiLGQsbSxmLGcsbyk7aT1qO3JldHVybn1kPWNbZisyOD4+Ml18MDtvPWQrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbT4+Ml09MTM2MDA7Y1ttKzQ+PjJdPTIwODtjW20rOD4+Ml09MDtjZygxMzYwMCxtKX1mPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDttPWNbZCs4Pj4yXXwwO2lmKChjW2QrMTI+PjJdfDApLW0+PjI+Pj4wPmY+Pj4wPyhsPWNbbSsoZjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2c9ZCs0fDA7bz1jW2c+PjJdfDA7Y1tnPj4yXT1vKyAtMTtpZigob3wwKT09MCl7bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpfW09Y1tsPj4yXXwwO2lmKGgpe21jW2NbbSsyND4+Ml0mMTI3XShrLGwpfWVsc2V7bWNbY1ttKzI4Pj4yXSYxMjddKGssbCl9bj1hW2s+PjBdfDA7aWYoKG4mMSk9PTApe2g9aysxfDA7ZD1oO2w9ays4fDB9ZWxzZXtsPWsrOHwwO2Q9Y1tsPj4yXXwwO2g9aysxfDB9bT1rKzR8MDt3aGlsZSgxKXtmPShuJjEpPT0wO2lmKGYpe2c9aDtuPShuJjI1NSk+Pj4xfWVsc2V7Zz1jW2w+PjJdfDA7bj1jW20+PjJdfDB9aWYoKGR8MCk9PShnK258MCkpe2JyZWFrfW89YVtkPj4wXXwwO249Y1tlPj4yXXwwO2Rve2lmKChufDApIT0wKXtmPW4rMjR8MDtnPWNbZj4+Ml18MDtpZigoZ3wwKSE9KGNbbisyOD4+Ml18MCkpe2NbZj4+Ml09ZysxO2FbZz4+MF09bzticmVha31pZigoeGNbY1soY1tuPj4yXXwwKSs1Mj4+Ml0mNjNdKG4sbyYyNTUpfDApPT0tMSl7Y1tlPj4yXT0wfX19d2hpbGUoMCk7bj1hW2s+PjBdfDA7ZD1kKzF8MH1jW2I+PjJdPWNbZT4+Ml07aWYoZil7aT1qO3JldHVybn1rPWNbays4Pj4yXXwwO2lmKChrfDApPT0wKXtpPWo7cmV0dXJufXZuKGspO2k9ajtyZXR1cm59bz1YYSg0KXwwO2Nbbz4+Ml09MjEzMDQ7d2Iob3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gdmkoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtkPWk7aT1pKzY0fDA7cj1kO3E9ZCsxNnwwO249ZCsyNHwwO209ZCszNnwwO2s9ZCs4fDA7bD1kKzR8MDtvPWQrMTJ8MDthW3ErMD4+MF09YVsxMjI2ND4+MF18MDthW3ErMT4+MF09YVsxMjI2NT4+MF18MDthW3ErMj4+MF09YVsxMjI2Nj4+MF18MDthW3ErMz4+MF09YVsxMjI2Nz4+MF18MDthW3ErND4+MF09YVsxMjI2OD4+MF18MDthW3ErNT4+MF09YVsxMjI2OT4+MF18MDt0PXErMXwwO3A9Zis0fDA7cz1jW3A+PjJdfDA7aWYoKHMmMjA0OHwwKSE9MCl7YVt0Pj4wXT00Mzt0PXErMnwwfWlmKChzJjUxMnwwKSE9MCl7YVt0Pj4wXT0zNTt0PXQrMXwwfWFbdD4+MF09MTA4O3Q9dCsxfDA7dT1zJjc0O2Rve2lmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZSBpZigodXwwKT09OCl7aWYoKHMmMTYzODR8MCk9PTApe2FbdD4+MF09MTIwO2JyZWFrfWVsc2V7YVt0Pj4wXT04ODticmVha319ZWxzZXthW3Q+PjBdPTEwMH19d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO2Nbcj4+Ml09aDtxPXdpKG4sMTIsdSxxLHIpfDA7aD1uK3F8MDtwPWNbcD4+Ml0mMTc2O2Rve2lmKChwfDApPT0zMil7cD1ofWVsc2UgaWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh1PWFbbisxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtqPTIxfX1lbHNle2o9MjF9fXdoaWxlKDApO2lmKChqfDApPT0yMSl7cD1ufWo9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09ajtqPWorNHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTt4aShuLHAsaCxtLGssbCxvKTtqPWNbbz4+Ml18MDt0PWorNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1tsPj4yXXwwO1djKGIscyxtLHQsdSxmLGcpO2k9ZDtyZXR1cm59bGNbY1soY1tqPj4yXXwwKSs4Pj4yXSYyNTVdKGopO3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1tsPj4yXXwwO1djKGIscyxtLHQsdSxmLGcpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gd2koYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MDtnPWk7aT1pKzE2fDA7aD1nO2NbaD4+Ml09ZjtkPWliKGR8MCl8MDtlPVFiKGF8MCxifDAsZXwwLGh8MCl8MDtpZigoZHwwKT09MCl7aT1nO3JldHVybiBlfDB9aWIoZHwwKXwwO2k9ZztyZXR1cm4gZXwwfWZ1bmN0aW9uIHhpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7az1pO2k9aSszMnwwO3A9aztsPWsrMTJ8MDtuPWNbaj4+Ml18MDtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbcD4+Ml09MTM0NTY7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ1NixwKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbbis4Pj4yXXwwO2lmKCEoKGNbbisxMj4+Ml18MCktcz4+Mj4+PjA+cj4+PjApKXt2PVhhKDQpfDA7Y1t2Pj4yXT0yMTMwNDt3Yih2fDAsMjEzNzYsMTk2KX1uPWNbcysocjw8Mik+PjJdfDA7aWYoKG58MCk9PTApe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfWo9Y1tqPj4yXXwwO2lmKCEoKGNbMzQwMF18MCk9PS0xKSl7Y1twPj4yXT0xMzYwMDtjW3ArND4+Ml09MjA4O2NbcCs4Pj4yXT0wO2NnKDEzNjAwLHApfXA9KGNbMTM2MDQ+PjJdfDApKyAtMXwwO3I9Y1tqKzg+PjJdfDA7aWYoISgoY1tqKzEyPj4yXXwwKS1yPj4yPj4+MD5wPj4+MCkpe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfWo9Y1tyKyhwPDwyKT4+Ml18MDtpZigoanwwKT09MCl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9bWNbY1soY1tqPj4yXXwwKSsyMD4+Ml0mMTI3XShsLGopO3A9YVtsPj4wXXwwO2lmKChwJjEpPT0wKXtwPShwJjI1NSk+Pj4xfWVsc2V7cD1jW2wrND4+Ml18MH1pZigocHwwKSE9MCl7Y1toPj4yXT1mO3A9YVtiPj4wXXwwO2lmKHA8PDI0Pj4yND09NDN8cDw8MjQ+PjI0PT00NSl7dj14Y1tjWyhjW24+PjJdfDApKzI4Pj4yXSY2M10obixwKXwwO3A9Y1toPj4yXXwwO2NbaD4+Ml09cCsxO2FbcD4+MF09djtwPWIrMXwwfWVsc2V7cD1ifWlmKCgoZS1wfDApPjE/KGFbcD4+MF18MCk9PTQ4OjApPyhxPXArMXwwLHY9YVtxPj4wXXwwLHY8PDI0Pj4yND09ODh8djw8MjQ+PjI0PT0xMjApOjApe3Y9eGNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mNjNdKG4sNDgpfDA7dT1jW2g+PjJdfDA7Y1toPj4yXT11KzE7YVt1Pj4wXT12O3U9eGNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mNjNdKG4sYVtxPj4wXXwwKXwwO3Y9Y1toPj4yXXwwO2NbaD4+Ml09disxO2Fbdj4+MF09dTtwPXArMnwwfWlmKChwfDApIT0oZXwwKT8obz1lKyAtMXwwLG8+Pj4wPnA+Pj4wKTowKXtxPXA7ZG97dj1hW3E+PjBdfDA7YVtxPj4wXT1hW28+PjBdfDA7YVtvPj4wXT12O3E9cSsxfDA7bz1vKyAtMXwwfXdoaWxlKHE+Pj4wPG8+Pj4wKX1qPW9jW2NbKGNbaj4+Ml18MCkrMTY+PjJdJjEyN10oail8MDtpZihwPj4+MDxlPj4+MCl7cT1sKzF8MDtzPWwrNHwwO289bCs4fDA7dT0wO3Q9MDtyPXA7d2hpbGUoMSl7dj1hWygoYVtsPj4wXSYxKT09MD9xOmNbbz4+Ml18MCkrdD4+MF18MDtpZih2PDwyND4+MjQhPTAmKHV8MCk9PSh2PDwyND4+MjR8MCkpe3U9Y1toPj4yXXwwO2NbaD4+Ml09dSsxO2FbdT4+MF09ajt1PWFbbD4+MF18MDtpZigodSYxKT09MCl7dj0odSYyNTUpPj4+MX1lbHNle3Y9Y1tzPj4yXXwwfXU9MDt0PSh0Pj4+MDwodisgLTF8MCk+Pj4wJjEpK3R8MH13PXhjW2NbKGNbbj4+Ml18MCkrMjg+PjJdJjYzXShuLGFbcj4+MF18MCl8MDt2PWNbaD4+Ml18MDtjW2g+PjJdPXYrMTthW3Y+PjBdPXc7cj1yKzF8MDtpZighKHI+Pj4wPGU+Pj4wKSl7YnJlYWt9ZWxzZXt1PXUrMXwwfX19bz1mKyhwLWIpfDA7bj1jW2g+PjJdfDA7aWYoKG98MCkhPShufDApPyhtPW4rIC0xfDAsbT4+PjA+bz4+PjApOjApe2Rve3c9YVtvPj4wXXwwO2Fbbz4+MF09YVttPj4wXXwwO2FbbT4+MF09dztvPW8rMXwwO209bSsgLTF8MH13aGlsZShvPj4+MDxtPj4+MCl9fWVsc2V7dWNbY1soY1tuPj4yXXwwKSszMj4+Ml0mMzFdKG4sYixlLGYpfDA7Y1toPj4yXT1mKyhlLWIpfWlmKChkfDApPT0oZXwwKSl7Yj1jW2g+PjJdfDB9ZWxzZXtiPWYrKGQtYil8MH1jW2c+PjJdPWI7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59bD1jW2wrOD4+Ml18MDtpZigobHwwKT09MCl7aT1rO3JldHVybn12bihsKTtpPWs7cmV0dXJufWZ1bmN0aW9uIHlpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2Q9aTtpPWkrOTZ8MDtuPWQrOHwwO3M9ZDtvPWQrNjR8MDtrPWQrNjB8MDttPWQrNTZ8MDtwPWQrNTJ8MDt1PXM7Y1t1Pj4yXT0zNztjW3UrND4+Ml09MDt1PXMrMXwwO3E9Zis0fDA7cj1jW3E+PjJdfDA7aWYoKHImMjA0OHwwKSE9MCl7YVt1Pj4wXT00Mzt1PXMrMnwwfWlmKChyJjUxMnwwKSE9MCl7YVt1Pj4wXT0zNTt1PXUrMXwwfXQ9dSsyfDA7YVt1Pj4wXT0xMDg7YVt1KzE+PjBdPTEwODt1PXImNzQ7ZG97aWYoKHV8MCk9PTY0KXthW3Q+PjBdPTExMX1lbHNlIGlmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNle2FbdD4+MF09MTAwfX13aGlsZSgwKTtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dT1jWzMzNDBdfDA7dD1uO2NbdD4+Ml09aDtjW3QrND4+Ml09ajtqPXdpKG8sMjIsdSxzLG4pfDA7aD1vK2p8MDtxPWNbcT4+Ml0mMTc2O2Rve2lmKChxfDApPT0zMil7cT1ofWVsc2UgaWYoKHF8MCk9PTE2KXtxPWFbbz4+MF18MDtpZihxPDwyND4+MjQ9PTQzfHE8PDI0Pj4yND09NDUpe3E9bysxfDA7YnJlYWt9aWYoKGp8MCk+MSZxPDwyND4+MjQ9PTQ4Pyh1PWFbbysxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3E9bysyfDB9ZWxzZXtsPTIxfX1lbHNle2w9MjF9fXdoaWxlKDApO2lmKChsfDApPT0yMSl7cT1vfWw9Y1tmKzI4Pj4yXXwwO2NbcD4+Ml09bDtsPWwrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTt4aShvLHEsaCxuLGssbSxwKTtsPWNbcD4+Ml18MDt0PWwrNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1ttPj4yXXwwO1djKGIscyxuLHQsdSxmLGcpO2k9ZDtyZXR1cm59bGNbY1soY1tsPj4yXXwwKSs4Pj4yXSYyNTVdKGwpO3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1ttPj4yXXwwO1djKGIscyxuLHQsdSxmLGcpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gemkoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDttPWk7aT1pKzY0fDA7cj1tO3E9bSsxNnwwO249bSsyNHwwO2s9bSszNnwwO2Q9bSs4fDA7aj1tKzR8MDtvPW0rMTJ8MDthW3ErMD4+MF09YVsxMjI2ND4+MF18MDthW3ErMT4+MF09YVsxMjI2NT4+MF18MDthW3ErMj4+MF09YVsxMjI2Nj4+MF18MDthW3ErMz4+MF09YVsxMjI2Nz4+MF18MDthW3ErND4+MF09YVsxMjI2OD4+MF18MDthW3ErNT4+MF09YVsxMjI2OT4+MF18MDt0PXErMXwwO3A9Zis0fDA7cz1jW3A+PjJdfDA7aWYoKHMmMjA0OHwwKSE9MCl7YVt0Pj4wXT00Mzt0PXErMnwwfWlmKChzJjUxMnwwKSE9MCl7YVt0Pj4wXT0zNTt0PXQrMXwwfWFbdD4+MF09MTA4O3Q9dCsxfDA7dT1zJjc0O2Rve2lmKCh1fDApPT04KXtpZigocyYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTExN319d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO2Nbcj4+Ml09aDtxPXdpKG4sMTIsdSxxLHIpfDA7aD1uK3F8MDtwPWNbcD4+Ml0mMTc2O2Rve2lmKChwfDApPT0zMil7cD1ofWVsc2UgaWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh1PWFbbisxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtsPTIxfX1lbHNle2w9MjF9fXdoaWxlKDApO2lmKChsfDApPT0yMSl7cD1ufWw9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09bDtsPWwrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTt4aShuLHAsaCxrLGQsaixvKTtsPWNbbz4+Ml18MDt0PWwrNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1tkPj4yXXwwO3U9Y1tqPj4yXXwwO1djKGIscyxrLHQsdSxmLGcpO2k9bTtyZXR1cm59bGNbY1soY1tsPj4yXXwwKSs4Pj4yXSYyNTVdKGwpO3M9Y1tlPj4yXXwwO3Q9Y1tkPj4yXXwwO3U9Y1tqPj4yXXwwO1djKGIscyxrLHQsdSxmLGcpO2k9bTtyZXR1cm59ZnVuY3Rpb24gQWkoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7ZD1pO2k9aSs5NnwwO249ZCs4fDA7cz1kO289ZCs2NHwwO2s9ZCs2MHwwO209ZCs1NnwwO3A9ZCs1MnwwO3U9cztjW3U+PjJdPTM3O2NbdSs0Pj4yXT0wO3U9cysxfDA7cT1mKzR8MDtyPWNbcT4+Ml18MDtpZigociYyMDQ4fDApIT0wKXthW3U+PjBdPTQzO3U9cysyfDB9aWYoKHImNTEyfDApIT0wKXthW3U+PjBdPTM1O3U9dSsxfDB9dD11KzJ8MDthW3U+PjBdPTEwODthW3UrMT4+MF09MTA4O3U9ciY3NDtkb3tpZigodXwwKT09NjQpe2FbdD4+MF09MTExfWVsc2UgaWYoKHV8MCk9PTgpe2lmKChyJjE2Mzg0fDApPT0wKXthW3Q+PjBdPTEyMDticmVha31lbHNle2FbdD4+MF09ODg7YnJlYWt9fWVsc2V7YVt0Pj4wXT0xMTd9fXdoaWxlKDApO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX11PWNbMzM0MF18MDt0PW47Y1t0Pj4yXT1oO2NbdCs0Pj4yXT1qO2o9d2kobywyMyx1LHMsbil8MDtoPW8ranwwO3E9Y1txPj4yXSYxNzY7ZG97aWYoKHF8MCk9PTMyKXtxPWh9ZWxzZSBpZigocXwwKT09MTYpe3E9YVtvPj4wXXwwO2lmKHE8PDI0Pj4yND09NDN8cTw8MjQ+PjI0PT00NSl7cT1vKzF8MDticmVha31pZigoanwwKT4xJnE8PDI0Pj4yND09NDg/KHU9YVtvKzE+PjBdfDAsdTw8MjQ+PjI0PT04OHx1PDwyND4+MjQ9PTEyMCk6MCl7cT1vKzJ8MH1lbHNle2w9MjF9fWVsc2V7bD0yMX19d2hpbGUoMCk7aWYoKGx8MCk9PTIxKXtxPW99bD1jW2YrMjg+PjJdfDA7Y1twPj4yXT1sO2w9bCs0fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO3hpKG8scSxoLG4sayxtLHApO2w9Y1twPj4yXXwwO3Q9bCs0fDA7dT1jW3Q+PjJdfDA7Y1t0Pj4yXT11KyAtMTtpZigodXwwKSE9MCl7cz1jW2U+PjJdfDA7dD1jW2s+PjJdfDA7dT1jW20+PjJdfDA7V2MoYixzLG4sdCx1LGYsZyk7aT1kO3JldHVybn1sY1tjWyhjW2w+PjJdfDApKzg+PjJdJjI1NV0obCk7cz1jW2U+PjJdfDA7dD1jW2s+PjJdfDA7dT1jW20+PjJdfDA7V2MoYixzLG4sdCx1LGYsZyk7aT1kO3JldHVybn1mdW5jdGlvbiBCaShiLGQsZSxmLGcsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aj0rajt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDtkPWk7aT1pKzEyOHwwO3A9ZDt1PWQrNjR8MDtyPWQrOTJ8MDt0PWQrODB8MDtsPWQrNzZ8MDtuPWQrNzJ8MDtvPWQrODR8MDttPWQrODh8MDt2PXU7Y1t2Pj4yXT0zNztjW3YrND4+Ml09MDt2PXUrMXwwO3M9Zis0fDA7dz1jW3M+PjJdfDA7aWYoKHcmMjA0OHwwKSE9MCl7YVt2Pj4wXT00Mzt2PXUrMnwwfWlmKCh3JjEwMjR8MCkhPTApe2Fbdj4+MF09MzU7dj12KzF8MH14PXcmMjYwO3k9dz4+PjE0O2Rve2lmKCh4fDApPT0yNjApe2lmKCh5JjF8MCk9PTApe2Fbdj4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt2Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt2Pj4wXT00Njt3PXYrMnwwO2FbdisxPj4wXT00MjtpZigoeHwwKT09NCl7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDI7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MDt2PTE7YnJlYWt9fWVsc2UgaWYoKHh8MCk9PTI1Nil7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDE7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT02OTt2PTE7YnJlYWt9fWVsc2V7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDM7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MTt2PTE7YnJlYWt9fX19d2hpbGUoMCk7Y1t0Pj4yXT1yO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtpZih2KXtjW3A+PjJdPWNbZis4Pj4yXTt5PXArNHwwO2hbaz4+M109ajtjW3k+PjJdPWNbaz4+Ml07Y1t5KzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9ZWxzZXtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWlmKCh3fDApPjI5KXt3PShhWzEzMzY4XXwwKT09MDtpZih2KXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2NbcD4+Ml09Y1tmKzg+PjJdO3k9cCs0fDA7aFtrPj4zXT1qO2NbeT4+Ml09Y1trPj4yXTtjW3krND4+Ml09Y1trKzQ+PjJdO3c9Q2kodCx3LHUscCl8MH1lbHNle2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eT1wKzR8MDtoW2s+PjNdPWo7Y1t5Pj4yXT1jW2s+PjJdO2NbeSs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0xNil7cz1hW3Y+PjBdfDA7aWYoczw8MjQ+PjI0PT00M3xzPDwyND4+MjQ9PTQ1KXtzPXYrMXwwO2JyZWFrfWlmKCh3fDApPjEmczw8MjQ+PjI0PT00OD8oeT1hW3YrMT4+MF18MCx5PDwyND4+MjQ9PTg4fHk8PDI0Pj4yND09MTIwKTowKXtzPXYrMnwwfWVsc2V7cT00OH19ZWxzZSBpZigoc3wwKT09MzIpe3M9dX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwxKXwwO2lmKChwfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXg9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09eDt4PXgrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtEaShyLHMsdSxwLGwsbixvKTtvPWNbbz4+Ml18MDt4PW8rNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1XYyhtLGNbZT4+Ml18MCxwLGNbbD4+Ml18MCxjW24+PjJdfDAsZixnKTt5PWNbbT4+Ml18MDtjW2U+PjJdPXk7Y1tiPj4yXT15O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1kO3JldHVybn12bih0KTtpPWQ7cmV0dXJufWZ1bmN0aW9uIENpKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWY7Y1tnPj4yXT1lO2I9aWIoYnwwKXwwO2Q9SWIoYXwwLGR8MCxnfDApfDA7aWYoKGJ8MCk9PTApe2k9ZjtyZXR1cm4gZHwwfWliKGJ8MCl8MDtpPWY7cmV0dXJuIGR8MH1mdW5jdGlvbiBEaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO2s9aTtpPWkrMzJ8MDtvPWs7bD1rKzEyfDA7bT1jW2o+PjJdfDA7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW28+PjJdPTEzNDU2O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NTYsbyl9dD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7cj1jW20rOD4+Ml18MDtpZighKChjW20rMTI+PjJdfDApLXI+PjI+Pj4wPnQ+Pj4wKSl7eT1YYSg0KXwwO2NbeT4+Ml09MjEzMDQ7d2IoeXwwLDIxMzc2LDE5Nil9bT1jW3IrKHQ8PDIpPj4yXXwwO2lmKChtfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbaj4+Ml18MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2Nbbz4+Ml09MTM2MDA7Y1tvKzQ+PjJdPTIwODtjW28rOD4+Ml09MDtjZygxMzYwMCxvKX1vPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtyPWNbais4Pj4yXXwwO2lmKCEoKGNbaisxMj4+Ml18MCktcj4+Mj4+PjA+bz4+PjApKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1vPWNbcisobzw8Mik+PjJdfDA7aWYoKG98MCk9PTApe3k9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfW1jW2NbKGNbbz4+Ml18MCkrMjA+PjJdJjEyN10obCxvKTtjW2g+PjJdPWY7aj1hW2I+PjBdfDA7aWYoajw8MjQ+PjI0PT00M3xqPDwyND4+MjQ9PTQ1KXt5PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGopfDA7dD1jW2g+PjJdfDA7Y1toPj4yXT10KzE7YVt0Pj4wXT15O3Q9YisxfDB9ZWxzZXt0PWJ9aj1lO2E6ZG97aWYoKChqLXR8MCk+MT8oYVt0Pj4wXXwwKT09NDg6MCk/KHA9dCsxfDAseT1hW3A+PjBdfDAseTw8MjQ+PjI0PT04OHx5PDwyND4+MjQ9PTEyMCk6MCl7eT14Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSY2M10obSw0OCl8MDt4PWNbaD4+Ml18MDtjW2g+PjJdPXgrMTthW3g+PjBdPXk7dD10KzJ8MDt4PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGFbcD4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrMTthW3k+PjBdPXg7aWYodD4+PjA8ZT4+PjApe3I9dDt3aGlsZSgxKXtwPWFbcj4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9eT1wPDwyND4+MjQ7aWYoISgoeSsgLTQ4fDApPj4+MDwxMCk/ISgoKHl8MzIpKyAtOTd8MCk+Pj4wPDYpOjApe3A9dDticmVhayBhfXI9cisxfDA7aWYoIShyPj4+MDxlPj4+MCkpe3A9dDticmVha319fWVsc2V7cD10O3I9dH19ZWxzZXtzPTE1fX13aGlsZSgwKTtiOmRve2lmKChzfDApPT0xNSl7aWYodD4+PjA8ZT4+PjApe3I9dDt3aGlsZSgxKXtwPWFbcj4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cz1yKzF8MDtpZighKCgocDw8MjQ+PjI0KSsgLTQ4fDApPj4+MDwxMCkpe3A9dDticmVhayBifWlmKHM+Pj4wPGU+Pj4wKXtyPXN9ZWxzZXtwPXQ7cj1zO2JyZWFrfX19ZWxzZXtwPXQ7cj10fX19d2hpbGUoMCk7cz1hW2w+PjBdfDA7aWYoKHMmMSk9PTApe3M9KHMmMjU1KT4+PjF9ZWxzZXtzPWNbbCs0Pj4yXXwwfWlmKChzfDApIT0wKXtpZigocHwwKSE9KHJ8MCk/KHE9cisgLTF8MCxxPj4+MD5wPj4+MCk6MCl7cz1wO2Rve3k9YVtzPj4wXXwwO2Fbcz4+MF09YVtxPj4wXXwwO2FbcT4+MF09eTtzPXMrMXwwO3E9cSsgLTF8MH13aGlsZShzPj4+MDxxPj4+MCl9dT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7aWYocD4+PjA8cj4+PjApe3E9bCsxfDA7dD1sKzR8MDtzPWwrOHwwO3g9MDt3PTA7dj1wO3doaWxlKDEpe3k9YVsoKGFbbD4+MF0mMSk9PTA/cTpjW3M+PjJdfDApK3c+PjBdfDA7aWYoeTw8MjQ+PjI0PjAmKHh8MCk9PSh5PDwyND4+MjR8MCkpe3g9Y1toPj4yXXwwO2NbaD4+Ml09eCsxO2FbeD4+MF09dTt4PWFbbD4+MF18MDtpZigoeCYxKT09MCl7eT0oeCYyNTUpPj4+MX1lbHNle3k9Y1t0Pj4yXXwwfXg9MDt3PSh3Pj4+MDwoeSsgLTF8MCk+Pj4wJjEpK3d8MH16PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGFbdj4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrMTthW3k+PjBdPXo7dj12KzF8MDtpZighKHY+Pj4wPHI+Pj4wKSl7YnJlYWt9ZWxzZXt4PXgrMXwwfX19cD1mKyhwLWIpfDA7cT1jW2g+PjJdfDA7aWYoKHB8MCkhPShxfDApPyhuPXErIC0xfDAsbj4+PjA+cD4+PjApOjApe2Rve3o9YVtwPj4wXXwwO2FbcD4+MF09YVtuPj4wXXwwO2Fbbj4+MF09ejtwPXArMXwwO249bisgLTF8MH13aGlsZShwPj4+MDxuPj4+MCl9fWVsc2V7dWNbY1soY1ttPj4yXXwwKSszMj4+Ml0mMzFdKG0scCxyLGNbaD4+Ml18MCl8MDtjW2g+PjJdPShjW2g+PjJdfDApKyhyLXApfWM6ZG97aWYocj4+PjA8ZT4+PjApe3doaWxlKDEpe249YVtyPj4wXXwwO2lmKG48PDI0Pj4yND09NDYpe2JyZWFrfXk9eGNbY1soY1ttPj4yXXwwKSsyOD4+Ml0mNjNdKG0sbil8MDt6PWNbaD4+Ml18MDtjW2g+PjJdPXorMTthW3o+PjBdPXk7cj1yKzF8MDtpZighKHI+Pj4wPGU+Pj4wKSl7YnJlYWsgY319eT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7ej1jW2g+PjJdfDA7Y1toPj4yXT16KzE7YVt6Pj4wXT15O3I9cisxfDB9fXdoaWxlKDApO3VjW2NbKGNbbT4+Ml18MCkrMzI+PjJdJjMxXShtLHIsZSxjW2g+PjJdfDApfDA7bT0oY1toPj4yXXwwKSsoai1yKXwwO2NbaD4+Ml09bTtpZigoZHwwKSE9KGV8MCkpe209ZisoZC1iKXwwfWNbZz4+Ml09bTtpZigoYVtsPj4wXSYxKT09MCl7aT1rO3JldHVybn1sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWs7cmV0dXJufXZuKGwpO2k9aztyZXR1cm59ZnVuY3Rpb24gRWkoYixkLGUsZixnLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9K2o7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtkPWk7aT1pKzEyOHwwO3A9ZDt1PWQrNjR8MDtyPWQrOTJ8MDt0PWQrODB8MDtsPWQrNzZ8MDttPWQrNzJ8MDtvPWQrODR8MDtuPWQrODh8MDt4PXU7Y1t4Pj4yXT0zNztjW3grND4+Ml09MDt4PXUrMXwwO3M9Zis0fDA7dj1jW3M+PjJdfDA7aWYoKHYmMjA0OHwwKSE9MCl7YVt4Pj4wXT00Mzt4PXUrMnwwfWlmKCh2JjEwMjR8MCkhPTApe2FbeD4+MF09MzU7eD14KzF8MH13PXYmMjYwO3Y9dj4+PjE0O2Rve2lmKCh3fDApPT0yNjApe2FbeD4+MF09NzY7dz14KzF8MDtpZigodiYxfDApPT0wKXthW3c+PjBdPTk3O3Y9MDticmVha31lbHNle2Fbdz4+MF09NjU7dj0wO2JyZWFrfX1lbHNle2FbeD4+MF09NDY7YVt4KzE+PjBdPTQyO2FbeCsyPj4wXT03Njt4PXgrM3wwO2lmKCh3fDApPT0yNTYpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAxO3Y9MTticmVha31lbHNle2FbeD4+MF09Njk7dj0xO2JyZWFrfX1lbHNlIGlmKCh3fDApPT00KXtpZigodiYxfDApPT0wKXthW3g+PjBdPTEwMjt2PTE7YnJlYWt9ZWxzZXthW3g+PjBdPTcwO3Y9MTticmVha319ZWxzZXtpZigodiYxfDApPT0wKXthW3g+PjBdPTEwMzt2PTE7YnJlYWt9ZWxzZXthW3g+PjBdPTcxO3Y9MTticmVha319fX13aGlsZSgwKTtjW3Q+PjJdPXI7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2lmKHYpe2NbcD4+Ml09Y1tmKzg+PjJdO3g9cCs0fDA7aFtrPj4zXT1qO2NbeD4+Ml09Y1trPj4yXTtjW3grND4+Ml09Y1trKzQ+PjJdO3c9d2kociwzMCx3LHUscCl8MH1lbHNle2hbaz4+M109ajtjW3A+PjJdPWNbaz4+Ml07Y1twKzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9aWYoKHd8MCk+Mjkpe3c9KGFbMTMzNjhdfDApPT0wO2lmKHYpe2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eD1wKzR8MDtoW2s+PjNdPWo7Y1t4Pj4yXT1jW2s+PjJdO2NbeCs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfWVsc2V7aWYodz8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0xNil7cz1hW3Y+PjBdfDA7aWYoczw8MjQ+PjI0PT00M3xzPDwyND4+MjQ9PTQ1KXtzPXYrMXwwO2JyZWFrfWlmKCh3fDApPjEmczw8MjQ+PjI0PT00OD8oeD1hW3YrMT4+MF18MCx4PDwyND4+MjQ9PTg4fHg8PDI0Pj4yND09MTIwKTowKXtzPXYrMnwwfWVsc2V7cT00OH19ZWxzZSBpZigoc3wwKT09MzIpe3M9dX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwxKXwwO2lmKChwfDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXc9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09dzt3PXcrNHwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMTtEaShyLHMsdSxwLGwsbSxvKTtvPWNbbz4+Ml18MDt3PW8rNHwwO3g9Y1t3Pj4yXXwwO2Nbdz4+Ml09eCsgLTE7aWYoKHh8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1XYyhuLGNbZT4+Ml18MCxwLGNbbD4+Ml18MCxjW20+PjJdfDAsZixnKTt4PWNbbj4+Ml18MDtjW2U+PjJdPXg7Y1tiPj4yXT14O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1kO3JldHVybn12bih0KTtpPWQ7cmV0dXJufWZ1bmN0aW9uIEZpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtsPWk7aT1pKzgwfDA7bj1sO289bCs3MnwwO2Q9bCs1MnwwO2s9bCsxMnwwO2FbbyswPj4wXT1hWzEyMjcyPj4wXXwwO2FbbysxPj4wXT1hWzEyMjczPj4wXXwwO2FbbysyPj4wXT1hWzEyMjc0Pj4wXXwwO2FbbyszPj4wXT1hWzEyMjc1Pj4wXXwwO2Fbbys0Pj4wXT1hWzEyMjc2Pj4wXXwwO2Fbbys1Pj4wXT1hWzEyMjc3Pj4wXXwwO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1wPWNbMzM0MF18MDtjW24+PjJdPWg7bz13aShkLDIwLHAsbyxuKXwwO2g9ZCtvfDA7cD1jW2YrND4+Ml0mMTc2O2Rve2lmKChwfDApPT0xNil7cD1hW2Q+PjBdfDA7aWYocDw8MjQ+PjI0PT00M3xwPDwyND4+MjQ9PTQ1KXtwPWQrMXwwO2JyZWFrfWlmKChvfDApPjEmcDw8MjQ+PjI0PT00OD8ocT1hW2QrMT4+MF18MCxxPDwyND4+MjQ9PTg4fHE8PDI0Pj4yND09MTIwKTowKXtwPWQrMnwwfWVsc2V7bT0xMX19ZWxzZSBpZigocHwwKT09MzIpe3A9aH1lbHNle209MTF9fXdoaWxlKDApO2lmKChtfDApPT0xMSl7cD1kfW09Y1tmKzI4Pj4yXXwwO3E9bSs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ1NjtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDU2LG4pfXE9KGNbMTM0NjA+PjJdfDApKyAtMXwwO249Y1ttKzg+PjJdfDA7aWYoKGNbbSsxMj4+Ml18MCktbj4+Mj4+PjA+cT4+PjA/KGo9Y1tuKyhxPDwyKT4+Ml18MCwoanwwKSE9MCk6MCl7bj1tKzR8MDtxPWNbbj4+Ml18MDtjW24+PjJdPXErIC0xO2lmKChxfDApPT0wKXtsY1tjWyhjW20+PjJdfDApKzg+PjJdJjI1NV0obSl9dWNbY1soY1tqPj4yXXwwKSszMj4+Ml0mMzFdKGosZCxoLGspfDA7aj1rK298MDtpZigocHwwKT09KGh8MCkpe3E9ajtwPWNbZT4+Ml18MDtXYyhiLHAsayxxLGosZixnKTtpPWw7cmV0dXJufXE9aysocC1kKXwwO3A9Y1tlPj4yXXwwO1djKGIscCxrLHEsaixmLGcpO2k9bDtyZXR1cm59cT1YYSg0KXwwO2NbcT4+Ml09MjEzMDQ7d2IocXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gR2koYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gSGkoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIElpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MDtqPWk7aT1pKzMyfDA7bT1qO249aisyNHwwO2s9aisxMnwwO2lmKChjW2YrND4+Ml0mMXwwKT09MCl7az1jWyhjW2Q+PjJdfDApKzI0Pj4yXXwwO2Nbbj4+Ml09Y1tlPj4yXTtsPWgmMTtjW20rMD4+Ml09Y1tuKzA+PjJdO3djW2smNjNdKGIsZCxtLGYsZyxsKTtpPWo7cmV0dXJufW49Y1tmKzI4Pj4yXXwwO2Q9bis0fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxO2lmKCEoKGNbMzQwMl18MCk9PS0xKSl7Y1ttPj4yXT0xMzYwODtjW20rND4+Ml09MjA4O2NbbSs4Pj4yXT0wO2NnKDEzNjA4LG0pfWc9KGNbMTM2MTI+PjJdfDApKyAtMXwwO209Y1tuKzg+PjJdfDA7aWYoKGNbbisxMj4+Ml18MCktbT4+Mj4+PjA+Zz4+PjA/KGw9Y1ttKyhnPDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7Zj1uKzR8MDtkPWNbZj4+Ml18MDtjW2Y+PjJdPWQrIC0xO2lmKChkfDApPT0wKXtsY1tjWyhjW24+PjJdfDApKzg+PjJdJjI1NV0obil9bT1jW2w+PjJdfDA7aWYoaCl7bWNbY1ttKzI0Pj4yXSYxMjddKGssbCl9ZWxzZXttY1tjW20rMjg+PjJdJjEyN10oayxsKX1nPWFbaz4+MF18MDtpZigoZyYxKT09MCl7aD1rKzR8MDttPWg7bD1rKzh8MH1lbHNle2w9ays4fDA7bT1jW2w+PjJdfDA7aD1rKzR8MH13aGlsZSgxKXtmPShnJjEpPT0wO2lmKGYpe249aDtnPShnJjI1NSk+Pj4xfWVsc2V7bj1jW2w+PjJdfDA7Zz1jW2g+PjJdfDB9aWYoKG18MCk9PShuKyhnPDwyKXwwKSl7YnJlYWt9Zz1jW20+PjJdfDA7Zj1jW2U+PjJdfDA7aWYoKGZ8MCkhPTApe2Q9ZisyNHwwO249Y1tkPj4yXXwwO2lmKChufDApPT0oY1tmKzI4Pj4yXXwwKSl7Zz14Y1tjWyhjW2Y+PjJdfDApKzUyPj4yXSY2M10oZixnKXwwfWVsc2V7Y1tkPj4yXT1uKzQ7Y1tuPj4yXT1nfWlmKChnfDApPT0tMSl7Y1tlPj4yXT0wfX1nPWFbaz4+MF18MDttPW0rNHwwfWNbYj4+Ml09Y1tlPj4yXTtpZihmKXtpPWo7cmV0dXJufWs9Y1trKzg+PjJdfDA7aWYoKGt8MCk9PTApe2k9ajtyZXR1cm59dm4oayk7aT1qO3JldHVybn1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBKaShiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7bT1pO2k9aSsxMjh8MDtsPW07cj1tKzEwOHwwO249bSs5NnwwO2Q9bSs5MnwwO2o9bSs4OHwwO289bSs4NHwwO2FbciswPj4wXT1hWzEyMjY0Pj4wXXwwO2FbcisxPj4wXT1hWzEyMjY1Pj4wXXwwO2FbcisyPj4wXT1hWzEyMjY2Pj4wXXwwO2FbciszPj4wXT1hWzEyMjY3Pj4wXXwwO2Fbcis0Pj4wXT1hWzEyMjY4Pj4wXXwwO2Fbcis1Pj4wXT1hWzEyMjY5Pj4wXXwwO3M9cisxfDA7cD1mKzR8MDtxPWNbcD4+Ml18MDtpZigocSYyMDQ4fDApIT0wKXthW3M+PjBdPTQzO3M9cisyfDB9aWYoKHEmNTEyfDApIT0wKXthW3M+PjBdPTM1O3M9cysxfDB9YVtzPj4wXT0xMDg7cz1zKzF8MDt0PXEmNzQ7ZG97aWYoKHR8MCk9PTgpe2lmKChxJjE2Mzg0fDApPT0wKXthW3M+PjBdPTEyMDticmVha31lbHNle2Fbcz4+MF09ODg7YnJlYWt9fWVsc2UgaWYoKHR8MCk9PTY0KXthW3M+PjBdPTExMX1lbHNle2Fbcz4+MF09MTAwfX13aGlsZSgwKTtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cT1jWzMzNDBdfDA7Y1tsPj4yXT1oO3E9d2kobiwxMixxLHIsbCl8MDtoPW4rcXwwO3A9Y1twPj4yXSYxNzY7ZG97aWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh0PWFbbisxPj4wXXwwLHQ8PDI0Pj4yND09ODh8dDw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtrPTIxfX1lbHNlIGlmKChwfDApPT0zMil7cD1ofWVsc2V7az0yMX19d2hpbGUoMCk7aWYoKGt8MCk9PTIxKXtwPW59az1jW2YrMjg+PjJdfDA7Y1tvPj4yXT1rO2s9ays0fDA7Y1trPj4yXT0oY1trPj4yXXwwKSsxO0tpKG4scCxoLGwsZCxqLG8pO2s9Y1tvPj4yXXwwO3M9ays0fDA7dD1jW3M+PjJdfDA7Y1tzPj4yXT10KyAtMTtpZigodHwwKSE9MCl7cj1jW2U+PjJdfDA7cz1jW2Q+PjJdfDA7dD1jW2o+PjJdfDA7TGkoYixyLGwscyx0LGYsZyk7aT1tO3JldHVybn1sY1tjWyhjW2s+PjJdfDApKzg+PjJdJjI1NV0oayk7cj1jW2U+PjJdfDA7cz1jW2Q+PjJdfDA7dD1jW2o+PjJdfDA7TGkoYixyLGwscyx0LGYsZyk7aT1tO3JldHVybn1mdW5jdGlvbiBLaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtrPWk7aT1pKzMyfDA7bz1rO2w9aysxMnwwO249Y1tqPj4yXXwwO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tvPj4yXT0xMzQ0ODtjW28rND4+Ml09MjA4O2Nbbys4Pj4yXT0wO2NnKDEzNDQ4LG8pfXM9KGNbMTM0NTI+PjJdfDApKyAtMXwwO3I9Y1tuKzg+PjJdfDA7aWYoISgoY1tuKzEyPj4yXXwwKS1yPj4yPj4+MD5zPj4+MCkpe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfW49Y1tyKyhzPDwyKT4+Ml18MDtpZigobnwwKT09MCl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9aj1jW2o+PjJdfDA7aWYoISgoY1szNDAyXXwwKT09LTEpKXtjW28+PjJdPTEzNjA4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM2MDgsbyl9bz0oY1sxMzYxMj4+Ml18MCkrIC0xfDA7cj1jW2orOD4+Ml18MDtpZighKChjW2orMTI+PjJdfDApLXI+PjI+Pj4wPm8+Pj4wKSl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9aj1jW3IrKG88PDIpPj4yXXwwO2lmKChqfDApPT0wKXt2PVhhKDQpfDA7Y1t2Pj4yXT0yMTMwNDt3Yih2fDAsMjEzNzYsMTk2KX1tY1tjWyhjW2o+PjJdfDApKzIwPj4yXSYxMjddKGwsaik7bz1hW2w+PjBdfDA7aWYoKG8mMSk9PTApe289KG8mMjU1KT4+PjF9ZWxzZXtvPWNbbCs0Pj4yXXwwfWlmKChvfDApIT0wKXtjW2g+PjJdPWY7bz1hW2I+PjBdfDA7aWYobzw8MjQ+PjI0PT00M3xvPDwyND4+MjQ9PTQ1KXt2PXhjW2NbKGNbbj4+Ml18MCkrNDQ+PjJdJjYzXShuLG8pfDA7bz1jW2g+PjJdfDA7Y1toPj4yXT1vKzQ7Y1tvPj4yXT12O289YisxfDB9ZWxzZXtvPWJ9aWYoKChlLW98MCk+MT8oYVtvPj4wXXwwKT09NDg6MCk/KHE9bysxfDAsdj1hW3E+PjBdfDAsdjw8MjQ+PjI0PT04OHx2PDwyND4+MjQ9PTEyMCk6MCl7dj14Y1tjWyhjW24+PjJdfDApKzQ0Pj4yXSY2M10obiw0OCl8MDt1PWNbaD4+Ml18MDtjW2g+PjJdPXUrNDtjW3U+PjJdPXY7dT14Y1tjWyhjW24+PjJdfDApKzQ0Pj4yXSY2M10obixhW3E+PjBdfDApfDA7dj1jW2g+PjJdfDA7Y1toPj4yXT12KzQ7Y1t2Pj4yXT11O289bysyfDB9aWYoKG98MCkhPShlfDApPyhwPWUrIC0xfDAscD4+PjA+bz4+PjApOjApe3E9bztkb3t2PWFbcT4+MF18MDthW3E+PjBdPWFbcD4+MF18MDthW3A+PjBdPXY7cT1xKzF8MDtwPXArIC0xfDB9d2hpbGUocT4+PjA8cD4+PjApfXE9b2NbY1soY1tqPj4yXXwwKSsxNj4+Ml0mMTI3XShqKXwwO2lmKG8+Pj4wPGU+Pj4wKXtwPWwrMXwwO3M9bCs0fDA7aj1sKzh8MDt1PTA7dD0wO3I9bzt3aGlsZSgxKXt2PWFbKChhW2w+PjBdJjEpPT0wP3A6Y1tqPj4yXXwwKSt0Pj4wXXwwO2lmKHY8PDI0Pj4yNCE9MCYodXwwKT09KHY8PDI0Pj4yNHwwKSl7dT1jW2g+PjJdfDA7Y1toPj4yXT11KzQ7Y1t1Pj4yXT1xO3U9YVtsPj4wXXwwO2lmKCh1JjEpPT0wKXt2PSh1JjI1NSk+Pj4xfWVsc2V7dj1jW3M+PjJdfDB9dT0wO3Q9KHQ+Pj4wPCh2KyAtMXwwKT4+PjAmMSkrdHwwfXg9eGNbY1soY1tuPj4yXXwwKSs0ND4+Ml0mNjNdKG4sYVtyPj4wXXwwKXwwO3c9Y1toPj4yXXwwO3Y9dys0fDA7Y1toPj4yXT12O2Nbdz4+Ml09eDtyPXIrMXwwO2lmKCEocj4+PjA8ZT4+PjApKXticmVha31lbHNle3U9dSsxfDB9fX1lbHNle3Y9Y1toPj4yXXwwfWg9Zisoby1iPDwyKXwwO2lmKChofDApIT0odnwwKT8obT12KyAtNHwwLG0+Pj4wPmg+Pj4wKTowKXtkb3t4PWNbaD4+Ml18MDtjW2g+PjJdPWNbbT4+Ml07Y1ttPj4yXT14O2g9aCs0fDA7bT1tKyAtNHwwfXdoaWxlKGg+Pj4wPG0+Pj4wKX19ZWxzZXt1Y1tjWyhjW24+PjJdfDApKzQ4Pj4yXSYzMV0obixiLGUsZil8MDt2PWYrKGUtYjw8Mil8MDtjW2g+PjJdPXZ9aWYoKGR8MCkhPShlfDApKXt2PWYrKGQtYjw8Mil8MH1jW2c+PjJdPXY7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59bD1jW2wrOD4+Ml18MDtpZigobHwwKT09MCl7aT1rO3JldHVybn12bihsKTtpPWs7cmV0dXJufWZ1bmN0aW9uIExpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7az1pO2k9aSsxNnwwO2w9aztpZigoZHwwKT09MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59cT1lO249Zy1xPj4yO2g9aCsxMnwwO209Y1toPj4yXXwwO249KG18MCk+KG58MCk/bS1ufDA6MDttPWY7cT1tLXF8MDtwPXE+PjI7aWYoKHF8MCk+MD8oaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsZSxwKXwwKSE9KHB8MCk6MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59ZG97aWYoKG58MCk+MCl7aWYobj4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihuPj4+MDwyKXthW2w+PjBdPW48PDE7ZT1sKzR8MDtvPTE4fWVsc2V7ZT1uKzQmLTQ7cD1lPDwyO3A9KHB8MCk9PTA/MTpwO3doaWxlKDEpe3E9dW4ocCl8MDtpZigocXwwKSE9MCl7bz0xNzticmVha31xPWNbNTY2Nl18MDtjWzU2NjZdPXErMDtpZigocXwwKT09MCl7YnJlYWt9c2NbcSYzMV0oKX1pZigob3wwKT09MTcpe2NbbCs4Pj4yXT1xO2NbbD4+Ml09ZXwxO2NbbCs0Pj4yXT1uO2lmKChufDApPT0wKXtlPXE7YnJlYWt9ZWxzZXtlPXE7bz0xODticmVha319cT1YYSg0KXwwO2NbcT4+Ml09MjI2ODA7d2IocXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChvfDApPT0xOCl7bz1uO3A9ZTt3aGlsZSgxKXtvPW8rIC0xfDA7Y1twPj4yXT1qO2lmKChvfDApPT0wKXticmVha31lbHNle3A9cCs0fDB9fX1jW2UrKG48PDIpPj4yXT0wO2lmKChhW2w+PjBdJjEpPT0wKXtqPWwrNHwwfWVsc2V7aj1jW2wrOD4+Ml18MH1pZigoaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsaixuKXwwKT09KG58MCkpe2lmKChhW2w+PjBdJjEpPT0wKXticmVha31sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXticmVha312bihsKTticmVha31jW2I+PjJdPTA7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59Yj1jW2wrOD4+Ml18MDtpZigoYnwwKT09MCl7aT1rO3JldHVybn12bihiKTtpPWs7cmV0dXJufX13aGlsZSgwKTtxPWctbXwwO2w9cT4+MjtpZigocXwwKT4wPyhoY1tjWyhjW2Q+PjJdfDApKzQ4Pj4yXSY2M10oZCxmLGwpfDApIT0obHwwKTowKXtjW2I+PjJdPTA7aT1rO3JldHVybn1jW2g+PjJdPTA7Y1tiPj4yXT1kO2k9aztyZXR1cm59ZnVuY3Rpb24gTWkoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7bT1pO2k9aSsyMDh8MDtsPW0rOHwwO3M9bTtvPW0rMTg0fDA7ZD1tKzE4MHwwO2s9bSsxNzZ8MDtwPW0rMTcyfDA7dT1zO2NbdT4+Ml09Mzc7Y1t1KzQ+PjJdPTA7dT1zKzF8MDtxPWYrNHwwO3I9Y1txPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2FbdT4+MF09NDM7dT1zKzJ8MH1pZigociY1MTJ8MCkhPTApe2FbdT4+MF09MzU7dT11KzF8MH10PXUrMnwwO2FbdT4+MF09MTA4O2FbdSsxPj4wXT0xMDg7dT1yJjc0O2Rve2lmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTEwMH19d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO3Q9bDtjW3Q+PjJdPWg7Y1t0KzQ+PjJdPWo7aD13aShvLDIyLHUscyxsKXwwO2o9bytofDA7cT1jW3E+PjJdJjE3Njtkb3tpZigocXwwKT09MzIpe3E9an1lbHNlIGlmKChxfDApPT0xNil7cT1hW28+PjBdfDA7aWYocTw8MjQ+PjI0PT00M3xxPDwyND4+MjQ9PTQ1KXtxPW8rMXwwO2JyZWFrfWlmKChofDApPjEmcTw8MjQ+PjI0PT00OD8odT1hW28rMT4+MF18MCx1PDwyND4+MjQ9PTg4fHU8PDI0Pj4yND09MTIwKTowKXtxPW8rMnwwfWVsc2V7bj0yMX19ZWxzZXtuPTIxfX13aGlsZSgwKTtpZigobnwwKT09MjEpe3E9b31uPWNbZisyOD4+Ml18MDtjW3A+PjJdPW47bj1uKzR8MDtjW24+PjJdPShjW24+PjJdfDApKzE7S2kobyxxLGosbCxkLGsscCk7bj1jW3A+PjJdfDA7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApIT0wKXtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWxjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKTtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWZ1bmN0aW9uIE5pKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtkPWk7aT1pKzEyOHwwO2w9ZDtxPWQrMTA4fDA7bj1kKzk2fDA7az1kKzkyfDA7bT1kKzg4fDA7bz1kKzg0fDA7YVtxKzA+PjBdPWFbMTIyNjQ+PjBdfDA7YVtxKzE+PjBdPWFbMTIyNjU+PjBdfDA7YVtxKzI+PjBdPWFbMTIyNjY+PjBdfDA7YVtxKzM+PjBdPWFbMTIyNjc+PjBdfDA7YVtxKzQ+PjBdPWFbMTIyNjg+PjBdfDA7YVtxKzU+PjBdPWFbMTIyNjk+PjBdfDA7cz1xKzF8MDtwPWYrNHwwO3I9Y1twPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2Fbcz4+MF09NDM7cz1xKzJ8MH1pZigociY1MTJ8MCkhPTApe2Fbcz4+MF09MzU7cz1zKzF8MH1hW3M+PjBdPTEwODt0PXMrMXwwO3M9ciY3NDtkb3tpZigoc3wwKT09NjQpe2FbdD4+MF09MTExfWVsc2UgaWYoKHN8MCk9PTgpe2lmKChyJjE2Mzg0fDApPT0wKXthW3Q+PjBdPTEyMDticmVha31lbHNle2FbdD4+MF09ODg7YnJlYWt9fWVsc2V7YVt0Pj4wXT0xMTd9fXdoaWxlKDApO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX10PWNbMzM0MF18MDtjW2w+PjJdPWg7cT13aShuLDEyLHQscSxsKXwwO2g9bitxfDA7cD1jW3A+PjJdJjE3Njtkb3tpZigocHwwKT09MzIpe3A9aH1lbHNlIGlmKChwfDApPT0xNil7cD1hW24+PjBdfDA7aWYocDw8MjQ+PjI0PT00M3xwPDwyND4+MjQ9PTQ1KXtwPW4rMXwwO2JyZWFrfWlmKChxfDApPjEmcDw8MjQ+PjI0PT00OD8odD1hW24rMT4+MF18MCx0PDwyND4+MjQ9PTg4fHQ8PDI0Pj4yND09MTIwKTowKXtwPW4rMnwwfWVsc2V7aj0yMX19ZWxzZXtqPTIxfX13aGlsZSgwKTtpZigoanwwKT09MjEpe3A9bn1qPWNbZisyOD4+Ml18MDtjW28+PjJdPWo7aj1qKzR8MDtjW2o+PjJdPShjW2o+PjJdfDApKzE7S2kobixwLGgsbCxrLG0sbyk7aj1jW28+PjJdfDA7cz1qKzR8MDt0PWNbcz4+Ml18MDtjW3M+PjJdPXQrIC0xO2lmKCh0fDApIT0wKXtyPWNbZT4+Ml18MDtzPWNbaz4+Ml18MDt0PWNbbT4+Ml18MDtMaShiLHIsbCxzLHQsZixnKTtpPWQ7cmV0dXJufWxjW2NbKGNbaj4+Ml18MCkrOD4+Ml0mMjU1XShqKTtyPWNbZT4+Ml18MDtzPWNbaz4+Ml18MDt0PWNbbT4+Ml18MDtMaShiLHIsbCxzLHQsZixnKTtpPWQ7cmV0dXJufQoKCgpmdW5jdGlvbiBYayhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtkPWk7aT1pKzE2fDA7ZT1kO2lmKChhWzEzNDMyXXwwKSE9MCl7aD1jWzMzNTZdfDA7Y1tiPj4yXT1oO2g9aCs0fDA7Zz1jW2g+PjJdfDA7Y1toPj4yXT1nKzE7aT1kO3JldHVybn1pZigoUWEoMTM0MzIpfDApPT0wKXtoPWNbMzM1Nl18MDtjW2I+PjJdPWg7aD1oKzR8MDtnPWNbaD4+Ml18MDtjW2g+PjJdPWcrMTtpPWQ7cmV0dXJufWlmKChhWzEzNDE2XXwwKT09MD8oUWEoMTM0MTYpfDApIT0wOjApe2NbMTc3NjQ+PjJdPTA7Y1s0NDQwXT0xMzM5MjthWzE3ODk2Pj4wXT0xO2NbMTc3NzI+PjJdPTE3Nzg0O2NbMTc3Njg+PjJdPTE3Nzg0O2NbMTc3NzY+PjJdPTE3ODk2O2g9Mjg7Zj0xNzc4NHwwO2Rve2NbZj4+Ml09MDtnPWNbMTc3NzI+PjJdfDA7Zj1nKzR8MDtjWzE3NzcyPj4yXT1mO2g9aCsgLTF8MH13aGlsZSgoaHwwKSE9MCk7YVsxNzkwND4+MF09MjthWzE3OTA1Pj4wXT02NzthWzE3OTA2Pj4wXT0wO2g9Y1sxNzc2OD4+Ml18MDtpZigoZnwwKSE9KGh8MCkpe2NbMTc3NzI+PjJdPWcrKDAtKChnKygwLWgpfDApPj4+Mik8PDIpfWNbMTgyMjg+PjJdPTA7Y1s0NTU2XT0xMTg3MjtpZighKChjWzI5NzRdfDApPT0tMSkpe2NbZT4+Ml09MTE4OTY7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMTg5NixlKX1VaygxNzc2MCwxODIyNCwoY1sxMTkwMD4+Ml18MCkrIC0xfDApO2NbMTgyMjA+PjJdPTA7Y1s0NTU0XT0xMTkxMjtpZighKChjWzI5ODRdfDApPT0tMSkpe2NbZT4+Ml09MTE5MzY7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMTkzNixlKX1VaygxNzc2MCwxODIxNiwoY1sxMTk0MD4+Ml18MCkrIC0xfDApO2NbMTgyMDQ+PjJdPTA7Y1s0NTUwXT0xMzQ3MjtjWzE4MjA4Pj4yXT0wO2FbMTgyMTI+PjBdPTA7Y1sxODIwOD4+Ml09Y1soTmEoKXwwKT4+Ml07aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2U+PjJdPTEzNDU2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM0NTYsZSl9VWsoMTc3NjAsMTgyMDAsKGNbMTM0NjA+PjJdfDApKyAtMXwwKTtjWzE4MTk2Pj4yXT0wO2NbNDU0OF09MTQzOTI7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW2U+PjJdPTEzNDQ4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM0NDgsZSl9VWsoMTc3NjAsMTgxOTIsKGNbMTM0NTI+PjJdfDApKyAtMXwwKTtjWzE4MTg4Pj4yXT0wO2NbNDU0Nl09MTQ2MDg7aWYoISgoY1szMzgwXXwwKT09LTEpKXtjW2U+PjJdPTEzNTIwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1MjAsZSl9VWsoMTc3NjAsMTgxODQsKGNbMTM1MjQ+PjJdfDApKyAtMXwwKTtjWzE4MTcyPj4yXT0wO2NbNDU0Ml09MTM1NDQ7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbMTgxNzY+PjJdPWNbMzM0MF07aWYoISgoY1szMzgyXXwwKT09LTEpKXtjW2U+PjJdPTEzNTI4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1MjgsZSl9VWsoMTc3NjAsMTgxNjgsKGNbMTM1MzI+PjJdfDApKyAtMXwwKTtjWzE4MTY0Pj4yXT0wO2NbNDU0MF09MTQ4MzI7aWYoISgoY1szMzk2XXwwKT09LTEpKXtjW2U+PjJdPTEzNTg0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1ODQsZSl9VWsoMTc3NjAsMTgxNjAsKGNbMTM1ODg+PjJdfDApKyAtMXwwKTtjWzE4MTU2Pj4yXT0wO2NbNDUzOF09MTQ5NTI7aWYoISgoY1szMzk4XXwwKT09LTEpKXtjW2U+PjJdPTEzNTkyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1OTIsZSl9VWsoMTc3NjAsMTgxNTIsKGNbMTM1OTY+PjJdfDApKyAtMXwwKTtjWzE4MTMyPj4yXT0wO2NbNDUzMl09MTM2MjQ7YVsxODEzNj4+MF09NDY7YVsxODEzNz4+MF09NDQ7Y1sxODE0MD4+Ml09MDtjWzE4MTQ0Pj4yXT0wO2NbMTgxNDg+PjJdPTA7aWYoISgoY1szNDAwXXwwKT09LTEpKXtjW2U+PjJdPTEzNjAwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM2MDAsZSl9VWsoMTc3NjAsMTgxMjgsKGNbMTM2MDQ+PjJdfDApKyAtMXwwKTtjWzE4MTAwPj4yXT0wO2NbNDUyNF09MTM2NjQ7Y1sxODEwND4+Ml09NDY7Y1sxODEwOD4+Ml09NDQ7Y1sxODExMj4+Ml09MDtjWzE4MTE2Pj4yXT0wO2NbMTgxMjA+PjJdPTA7aWYoISgoY1szNDAyXXwwKT09LTEpKXtjW2U+PjJdPTEzNjA4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM2MDgsZSl9VWsoMTc3NjAsMTgwOTYsKGNbMTM2MTI+PjJdfDApKyAtMXwwKTtjWzE4MDkyPj4yXT0wO2NbNDUyMl09MTE5NTI7aWYoISgoY1szMDAyXXwwKT09LTEpKXtjW2U+PjJdPTEyMDA4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIwMDgsZSl9VWsoMTc3NjAsMTgwODgsKGNbMTIwMTI+PjJdfDApKyAtMXwwKTtjWzE4MDg0Pj4yXT0wO2NbNDUyMF09MTIwNzI7aWYoISgoY1szMDMyXXwwKT09LTEpKXtjW2U+PjJdPTEyMTI4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIxMjgsZSl9VWsoMTc3NjAsMTgwODAsKGNbMTIxMzI+PjJdfDApKyAtMXwwKTtjWzE4MDc2Pj4yXT0wO2NbNDUxOF09MTIxNDQ7aWYoISgoY1szMDQ4XXwwKT09LTEpKXtjW2U+PjJdPTEyMTkyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIxOTIsZSl9VWsoMTc3NjAsMTgwNzIsKGNbMTIxOTY+PjJdfDApKyAtMXwwKTtjWzE4MDY4Pj4yXT0wO2NbNDUxNl09MTIyMDg7aWYoISgoY1szMDY0XXwwKT09LTEpKXtjW2U+PjJdPTEyMjU2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIyNTYsZSl9VWsoMTc3NjAsMTgwNjQsKGNbMTIyNjA+PjJdfDApKyAtMXwwKTtjWzE4MDYwPj4yXT0wO2NbNDUxNF09MTI4MDA7aWYoISgoY1szMjEyXXwwKT09LTEpKXtjW2U+PjJdPTEyODQ4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI4NDgsZSl9VWsoMTc3NjAsMTgwNTYsKGNbMTI4NTI+PjJdfDApKyAtMXwwKTtjWzE4MDUyPj4yXT0wO2NbNDUxMl09MTI4NjQ7aWYoISgoY1szMjI4XXwwKT09LTEpKXtjW2U+PjJdPTEyOTEyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI5MTIsZSl9VWsoMTc3NjAsMTgwNDgsKGNbMTI5MTY+PjJdfDApKyAtMXwwKTtjWzE4MDQ0Pj4yXT0wO2NbNDUxMF09MTI5Mjg7aWYoISgoY1szMjQ0XXwwKT09LTEpKXtjW2U+PjJdPTEyOTc2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI5NzYsZSl9VWsoMTc3NjAsMTgwNDAsKGNbMTI5ODA+PjJdfDApKyAtMXwwKTtjWzE4MDM2Pj4yXT0wO2NbNDUwOF09MTI5OTI7aWYoISgoY1szMjYwXXwwKT09LTEpKXtjW2U+PjJdPTEzMDQwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMwNDAsZSl9VWsoMTc3NjAsMTgwMzIsKGNbMTMwNDQ+PjJdfDApKyAtMXwwKTtjWzE4MDI4Pj4yXT0wO2NbNDUwNl09MTMwNTY7aWYoISgoY1szMjcwXXwwKT09LTEpKXtjW2U+PjJdPTEzMDgwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMwODAsZSl9VWsoMTc3NjAsMTgwMjQsKGNbMTMwODQ+PjJdfDApKyAtMXwwKTtjWzE4MDIwPj4yXT0wO2NbNDUwNF09MTMxMzY7aWYoISgoY1szMjkwXXwwKT09LTEpKXtjW2U+PjJdPTEzMTYwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMxNjAsZSl9VWsoMTc3NjAsMTgwMTYsKGNbMTMxNjQ+PjJdfDApKyAtMXwwKTtjWzE4MDEyPj4yXT0wO2NbNDUwMl09MTMxOTI7aWYoISgoY1szMzA0XXwwKT09LTEpKXtjW2U+PjJdPTEzMjE2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMyMTYsZSl9VWsoMTc3NjAsMTgwMDgsKGNbMTMyMjA+PjJdfDApKyAtMXwwKTtjWzE4MDA0Pj4yXT0wO2NbNDUwMF09MTMyNDA7aWYoISgoY1szMzE2XXwwKT09LTEpKXtjW2U+PjJdPTEzMjY0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMyNjQsZSl9VWsoMTc3NjAsMThlMywoY1sxMzI2OD4+Ml18MCkrIC0xfDApO2NbMTc5ODg+PjJdPTA7Y1s0NDk2XT0xMjI4ODtjWzE3OTkyPj4yXT0xMjMzNjtpZighKChjWzMwOTJdfDApPT0tMSkpe2NbZT4+Ml09MTIzNjg7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMjM2OCxlKX1VaygxNzc2MCwxNzk4NCwoY1sxMjM3Mj4+Ml18MCkrIC0xfDApO2NbMTc5NzI+PjJdPTA7Y1s0NDkyXT0xMjQ0MDtjWzE3OTc2Pj4yXT0xMjQ4ODtpZighKChjWzMxMzBdfDApPT0tMSkpe2NbZT4+Ml09MTI1MjA7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMjUyMCxlKX1VaygxNzc2MCwxNzk2OCwoY1sxMjUyND4+Ml18MCkrIC0xfDApO2NbMTc5NTY+PjJdPTA7Y1s0NDg4XT0xNDMyODtkb3tpZigoYVsxMzM2OF18MCk9PTApe2lmKChRYSgxMzM2OCl8MCk9PTApe2JyZWFrfWNbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX19d2hpbGUoMCk7Y1sxNzk2MD4+Ml09Y1szMzQwXTtjWzQ0ODhdPTEyNzM2O2lmKCEoKGNbMzE4OF18MCk9PS0xKSl7Y1tlPj4yXT0xMjc1MjtjW2UrND4+Ml09MjA4O2NbZSs4Pj4yXT0wO2NnKDEyNzUyLGUpfVVrKDE3NzYwLDE3OTUyLChjWzEyNzU2Pj4yXXwwKSsgLTF8MCk7Y1sxNzk0MD4+Ml09MDtjWzQ0ODRdPTE0MzI4O2Rve2lmKChhWzEzMzY4XXwwKT09MCl7aWYoKFFhKDEzMzY4KXwwKT09MCl7YnJlYWt9Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfX13aGlsZSgwKTtjWzE3OTQ0Pj4yXT1jWzMzNDBdO2NbNDQ4NF09MTI3Njg7aWYoISgoY1szMTk2XXwwKT09LTEpKXtjW2U+PjJdPTEyNzg0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI3ODQsZSl9VWsoMTc3NjAsMTc5MzYsKGNbMTI3ODg+PjJdfDApKyAtMXwwKTtjWzE3OTMyPj4yXT0wO2NbNDQ4Ml09MTMyODA7aWYoISgoY1szMzI2XXwwKT09LTEpKXtjW2U+PjJdPTEzMzA0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMzMDQsZSl9VWsoMTc3NjAsMTc5MjgsKGNbMTMzMDg+PjJdfDApKyAtMXwwKTtjWzE3OTI0Pj4yXT0wO2NbNDQ4MF09MTMzMjA7aWYoISgoY1szMzM2XXwwKT09LTEpKXtjW2U+PjJdPTEzMzQ0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMzNDQsZSl9VWsoMTc3NjAsMTc5MjAsKGNbMTMzNDg+PjJdfDApKyAtMXwwKTtjWzMzNTJdPTE3NzYwOyRhKDEzNDE2KX1oPWNbMzM1Ml18MDtjWzMzNTZdPWg7aD1oKzR8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7JGEoMTM0MzIpO2g9Y1szMzU2XXwwO2NbYj4+Ml09aDtoPWgrNHwwO2c9Y1toPj4yXXwwO2NbaD4+Ml09ZysxO2k9ZDtyZXR1cm59ZnVuY3Rpb24gWWsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2lmKCEoKGNbYj4+Ml18MCk9PS0xKSl7Y1tlPj4yXT1iO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coYixlKX1lPShjW2IrND4+Ml18MCkrIC0xfDA7Yj1jW2ErOD4+Ml18MDtpZighKChjW2ErMTI+PjJdfDApLWI+PjI+Pj4wPmU+Pj4wKSl7ZT1YYSg0KXwwO2NbZT4+Ml09MjEzMDQ7d2IoZXwwLDIxMzc2LDE5Nil9YT1jW2IrKGU8PDIpPj4yXXwwO2lmKChhfDApPT0wKXtlPVhhKDQpfDA7Y1tlPj4yXT0yMTMwNDt3YihlfDAsMjEzNzYsMTk2KX1lbHNle2k9ZDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIFprKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIF9rKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrND4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uICRrKGEpe2E9YXwwO3ZhciBiPTA7Yj1jWzMzNjBdfDA7Y1szMzYwXT1iKzE7Y1thKzQ+PjJdPWIrMTtyZXR1cm59ZnVuY3Rpb24gYWwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gYmwoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO2E9aTtpZighKGU+Pj4wPDEyOCkpe2Q9MDtpPWE7cmV0dXJuIGR8MH1kPShiWyhjWyhOYSgpfDApPj4yXXwwKSsoZTw8MSk+PjFdJmQpPDwxNj4+MTYhPTA7aT1hO3JldHVybiBkfDB9ZnVuY3Rpb24gY2woYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7aWYoKGR8MCk9PShlfDApKXtnPWQ7aT1hO3JldHVybiBnfDB9d2hpbGUoMSl7Zz1jW2Q+PjJdfDA7aWYoZz4+PjA8MTI4KXtnPWJbKGNbKE5hKCl8MCk+PjJdfDApKyhnPDwxKT4+MV18MH1lbHNle2c9MH1iW2Y+PjFdPWc7ZD1kKzR8MDtpZigoZHwwKT09KGV8MCkpe2JyZWFrfWVsc2V7Zj1mKzJ8MH19aT1hO3JldHVybiBlfDB9ZnVuY3Rpb24gZGwoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2Y9ZX1lbHNle2Rve2c9Y1tlPj4yXXwwO2lmKGc+Pj4wPDEyOD8hKChiWyhjWyhOYSgpfDApPj4yXXwwKSsoZzw8MSk+PjFdJmQpPDwxNj4+MTY9PTApOjApe2Y9ZTticmVhayBhfWU9ZSs0fDB9d2hpbGUoKGV8MCkhPShmfDApKX19d2hpbGUoMCk7aT1hO3JldHVybiBmfDB9ZnVuY3Rpb24gZWwoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2Y9ZX1lbHNle2Rve2c9Y1tlPj4yXXwwO2lmKCEoZz4+PjA8MTI4KSl7Zj1lO2JyZWFrIGF9aWYoKGJbKGNbKE5hKCl8MCk+PjJdfDApKyhnPDwxKT4+MV0mZCk8PDE2Pj4xNj09MCl7Zj1lO2JyZWFrIGF9ZT1lKzR8MH13aGlsZSgoZXwwKSE9KGZ8MCkpfX13aGlsZSgwKTtpPWE7cmV0dXJuIGZ8MH1mdW5jdGlvbiBmbChhLGIpe2E9YXwwO2I9YnwwO2E9aTtpZighKGI+Pj4wPDEyOCkpe2k9YTtyZXR1cm4gYnwwfWI9Y1soY1soWmEoKXwwKT4+Ml18MCkrKGI8PDIpPj4yXXwwO2k9YTtyZXR1cm4gYnwwfWZ1bmN0aW9uIGdsKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wO2E9aTtpZigoYnwwKT09KGR8MCkpe2U9YjtpPWE7cmV0dXJuIGV8MH1kb3tlPWNbYj4+Ml18MDtpZihlPj4+MDwxMjgpe2U9Y1soY1soWmEoKXwwKT4+Ml18MCkrKGU8PDIpPj4yXXwwfWNbYj4+Ml09ZTtiPWIrNHwwfXdoaWxlKChifDApIT0oZHwwKSk7aT1hO3JldHVybiBkfDB9ZnVuY3Rpb24gaGwoYSxiKXthPWF8MDtiPWJ8MDthPWk7aWYoIShiPj4+MDwxMjgpKXtpPWE7cmV0dXJuIGJ8MH1iPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhiPDwyKT4+Ml18MDtpPWE7cmV0dXJuIGJ8MH1mdW5jdGlvbiBpbChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MDthPWk7aWYoKGJ8MCk9PShkfDApKXtlPWI7aT1hO3JldHVybiBlfDB9ZG97ZT1jW2I+PjJdfDA7aWYoZT4+PjA8MTI4KXtlPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhlPDwyKT4+Ml18MH1jW2I+PjJdPWU7Yj1iKzR8MH13aGlsZSgoYnwwKSE9KGR8MCkpO2k9YTtyZXR1cm4gZHwwfWZ1bmN0aW9uIGpsKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGI8PDI0Pj4yNHwwfWZ1bmN0aW9uIGtsKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2I9aTtpZigoZHwwKT09KGV8MCkpe2k9YjtyZXR1cm4gZHwwfXdoaWxlKDEpe2NbZj4+Ml09YVtkPj4wXXwwO2Q9ZCsxfDA7aWYoKGR8MCk9PShlfDApKXticmVha31lbHNle2Y9Zis0fDB9fWk9YjtyZXR1cm4gZXwwfWZ1bmN0aW9uIGxsKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4oYj4+PjA8MTI4P2ImMjU1OmMpfDB9ZnVuY3Rpb24gbWwoYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7aj1kO2k9YjtyZXR1cm4ganwwfWg9KChlKyAtNCsoMC1kKXwwKT4+PjIpKzF8MDtqPWQ7d2hpbGUoMSl7az1jW2o+PjJdfDA7YVtnPj4wXT1rPj4+MDwxMjg/ayYyNTU6ZjtqPWorNHwwO2lmKChqfDApPT0oZXwwKSl7YnJlYWt9ZWxzZXtnPWcrMXwwfX1rPWQrKGg8PDIpfDA7aT1iO3JldHVybiBrfDB9ZnVuY3Rpb24gbmwoYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM0NzI7ZT1jW2IrOD4+Ml18MDtpZigoZXwwKSE9MCl7aWYoKGFbYisxMj4+MF18MCkhPTApe3ZuKGUpfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufX12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIG9sKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNDcyO2U9Y1tiKzg+PjJdfDA7aWYoKGV8MCkhPTA/KGFbYisxMj4+MF18MCkhPTA6MCl7dm4oZSl9aT1kO3JldHVybn1mdW5jdGlvbiBwbChhLGIpe2E9YXwwO2I9YnwwO2E9aTtpZighKGI8PDI0Pj4yND4tMSkpe2k9YTtyZXR1cm4gYnwwfWI9Y1soY1soWmEoKXwwKT4+Ml18MCkrKChiJjI1NSk8PDIpPj4yXSYyNTU7aT1hO3JldHVybiBifDB9ZnVuY3Rpb24gcWwoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7Zj1kO2k9YjtyZXR1cm4gZnwwfWRve2Y9YVtkPj4wXXwwO2lmKGY8PDI0Pj4yND4tMSl7Zj1jWyhjWyhaYSgpfDApPj4yXXwwKSsoZjw8MjQ+PjI0PDwyKT4+Ml0mMjU1fWFbZD4+MF09ZjtkPWQrMXwwfXdoaWxlKChkfDApIT0oZXwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gcmwoYSxiKXthPWF8MDtiPWJ8MDthPWk7aWYoIShiPDwyND4+MjQ+LTEpKXtpPWE7cmV0dXJuIGJ8MH1iPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhiPDwyND4+MjQ8PDIpPj4yXSYyNTU7aT1hO3JldHVybiBifDB9ZnVuY3Rpb24gc2woYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7Zj1kO2k9YjtyZXR1cm4gZnwwfWRve2Y9YVtkPj4wXXwwO2lmKGY8PDI0Pj4yND4tMSl7Zj1jWyhjWyhIYSgpfDApPj4yXXwwKSsoZjw8MjQ+PjI0PDwyKT4+Ml0mMjU1fWFbZD4+MF09ZjtkPWQrMXwwfXdoaWxlKChkfDApIT0oZXwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gdGwoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gYnwwfWZ1bmN0aW9uIHVsKGIsYyxkLGUpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2I9aTtpZigoY3wwKT09KGR8MCkpe2Q9Y31lbHNle3doaWxlKDEpe2FbZT4+MF09YVtjPj4wXXwwO2M9YysxfDA7aWYoKGN8MCk9PShkfDApKXticmVha31lbHNle2U9ZSsxfDB9fX1pPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB2bChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuKGI8PDI0Pj4yND4tMT9iOmMpfDB9ZnVuY3Rpb24gd2woYixjLGQsZSxmKXtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wO2I9aTtpZigoY3wwKT09KGR8MCkpe2k9YjtyZXR1cm4gY3wwfXdoaWxlKDEpe2c9YVtjPj4wXXwwO2FbZj4+MF09Zzw8MjQ+PjI0Pi0xP2c6ZTtjPWMrMXwwO2lmKChjfDApPT0oZHwwKSl7YnJlYWt9ZWxzZXtmPWYrMXwwfX1pPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB4bChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiB5bChhLGIsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2NbZj4+Ml09ZDtjW2k+PjJdPWc7cmV0dXJuIDN9ZnVuY3Rpb24gemwoYSxiLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtjW2Y+PjJdPWQ7Y1tpPj4yXT1nO3JldHVybiAzfWZ1bmN0aW9uIEFsKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Y1tmPj4yXT1kO3JldHVybiAzfWZ1bmN0aW9uIEJsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIENsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIERsKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Yj1kLWN8MDtyZXR1cm4oYj4+PjA8ZT4+PjA/YjplKXwwfWZ1bmN0aW9uIEVsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIEZsKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1NrKGEpO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEdsKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7ZD1pO2k9aSsyNzJ8MDtsPWQrMjY0fDA7bj1kKzh8MDtvPWQ7YTpkb3tpZigoZXwwKSE9KGZ8MCkpe3E9ZTt3aGlsZSgxKXtpZigoY1txPj4yXXwwKT09MCl7YnJlYWt9cT1xKzR8MDtpZigocXwwKT09KGZ8MCkpe3E9ZjticmVha319Y1trPj4yXT1oO2NbZz4+Ml09ZTtpZigoaHwwKSE9KGp8MCkpe3A9ajtiPWIrOHwwO3doaWxlKDEpe3c9cS1lPj4yO3M9aWIoY1tiPj4yXXwwKXwwO3k9Y1tnPj4yXXwwO3I9KGh8MCkhPTA7dj1yP3AtaHwwOjI1Njt1PXI/aDpuO2I6ZG97aWYoKHl8MCk9PTB8KHZ8MCk9PTApe3Q9MH1lbHNle3Q9MDtkb3t4PXc+Pj4wPj12Pj4+MDtpZighKHh8dz4+PjA+MzIpKXticmVhayBifXg9eD92Onc7dz13LXh8MDtjOmRve2lmKCh1fDApPT0wKXtBPWNbeT4+Ml18MDtpZigoQXwwKT09MCl7ej0wfWVsc2V7ej0wO3g9eTt3aGlsZSgxKXtpZihBPj4+MD4xMjcpe0E9V20obCxBKXwwO2lmKChBfDApPT0tMSl7dj0wO3Q9LTE7YnJlYWsgYn19ZWxzZXtBPTF9ej1BK3p8MDt4PXgrNHwwO0E9Y1t4Pj4yXXwwO2lmKChBfDApPT0wKXttPTMyO2JyZWFrfX19fWVsc2V7ZDpkb3tpZih4Pj4+MD4zKXt6PXU7QT14O3doaWxlKDEpe0I9Y1t5Pj4yXXwwO2lmKChCfDApPT0wKXttPTIyO2JyZWFrIGR9aWYoQj4+PjA+MTI3KXtCPVdtKHosQil8MDtpZigoQnwwKT09LTEpe3Y9MDt0PS0xO2JyZWFrIGJ9ej16K0J8MDtBPUEtQnwwfWVsc2V7YVt6Pj4wXT1CO3o9eisxfDA7QT1BKyAtMXwwfXk9eSs0fDA7aWYoIShBPj4+MD4zKSl7bT0xNjticmVha319fWVsc2V7ej11O0E9eDttPTE2fX13aGlsZSgwKTtpZigobXwwKT09MTYpe209MDtpZigoQXwwKT09MCl7QT0wfWVsc2V7bT0yMn19ZTpkb3tpZigobXwwKT09MjIpe3doaWxlKDEpe209MDtCPWNbeT4+Ml18MDtpZigoQnwwKT09MCl7bT0zMDticmVha31pZihCPj4+MD4xMjcpe0I9V20obCxCKXwwO2lmKChCfDApPT0tMSl7dj0wO3Q9LTE7YnJlYWsgYn1pZihCPj4+MD5BPj4+MCl7bT0yNjticmVha31XbSh6LGNbeT4+Ml18MCl8MDt6PXorQnwwO0E9QS1CfDB9ZWxzZXthW3o+PjBdPUI7ej16KzF8MDtBPUErIC0xfDB9aWYoKEF8MCk9PTApe0E9MDticmVhayBlfWVsc2V7eT15KzR8MDttPTIyfX1pZigobXwwKT09MjYpe3o9eC1BfDA7bT0zMjticmVhayBjfWVsc2UgaWYoKG18MCk9PTMwKXthW3o+PjBdPTA7YnJlYWt9fX13aGlsZSgwKTt6PXgtQXwwO3k9MDttPTMyfX13aGlsZSgwKTtpZigobXwwKT09MzIpe209MDtpZigoenwwKT09LTEpe3Y9MDt0PS0xO2JyZWFrIGJ9fWlmKCh1fDApPT0obnwwKSl7dT1ufWVsc2V7dj12LXp8MDt1PXUrenwwfXQ9eit0fDB9d2hpbGUoISgoeXwwKT09MHwodnwwKT09MCkpfX13aGlsZSgwKTtmOmRve2lmKCh5fDApIT0wPyEoKHZ8MCk9PTB8KHd8MCk9PTApOjApe3doaWxlKDEpe3g9V20odSxjW3k+PjJdfDApfDA7aWYoKHgrMXwwKT4+PjA8Mil7YnJlYWt9eT15KzR8MDt3PXcrIC0xfDA7dD10KzF8MDtpZigodnwwKT09KHh8MCl8KHd8MCk9PTApe2JyZWFrIGZ9ZWxzZXt2PXYteHwwO3U9dSt4fDB9fUI9KHh8MCk9PTA7dD1CP3Q6LTE7eT1CPzA6eX19d2hpbGUoMCk7aWYocil7Y1tnPj4yXT15fWlmKChzfDApIT0wKXtpYihzfDApfDB9aWYoKHR8MCk9PTApe2c9MTttPTY3O2JyZWFrfWVsc2UgaWYoKHR8MCk9PS0xKXttPTQ2O2JyZWFrfWg9KGNbaz4+Ml18MCkrdHwwO2Nbaz4+Ml09aDtpZigoaHwwKT09KGp8MCkpe209NjU7YnJlYWt9aWYoKHF8MCk9PShmfDApKXtlPWNbZz4+Ml18MDtxPWZ9ZWxzZXtlPWliKGNbYj4+Ml18MCl8MDthW28+PjBdPTA7aWYoKGV8MCkhPTApe2liKGV8MCl8MH1oPWNbaz4+Ml18MDtpZigoaHwwKT09KGp8MCkpe2c9MTttPTY3O2JyZWFrfWVsc2V7ZT0wO3E9MDtyPW99d2hpbGUoMSl7Y1trPj4yXT1oKzE7YVtoPj4wXT1lO2lmKChxfDApPT0wKXticmVha31CPXIrMXwwO2g9Y1trPj4yXXwwO2U9YVtCPj4wXXwwO3E9cSsgLTF8MDtyPUJ9ZT0oY1tnPj4yXXwwKSs0fDA7Y1tnPj4yXT1lO2c6ZG97aWYoKGV8MCk9PShmfDApKXtxPWZ9ZWxzZXtxPWU7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk9PTApe2JyZWFrIGd9cT1xKzR8MDtpZigocXwwKT09KGZ8MCkpe3E9ZjticmVha319fX13aGlsZSgwKTtoPWNbaz4+Ml18MH1pZigoZXwwKT09KGZ8MCl8KGh8MCk9PShqfDApKXticmVhayBhfX1pZigobXwwKT09NDYpe2Nbaz4+Ml09aDtoOmRve2lmKChlfDApIT0oY1tnPj4yXXwwKSl7ZG97aj1jW2U+PjJdfDA7Zj1pYihjW2I+PjJdfDApfDA7aj1XbShoLGopfDA7aWYoKGZ8MCkhPTApe2liKGZ8MCl8MH1pZigoanwwKT09LTEpe2JyZWFrIGh9aD0oY1trPj4yXXwwKStqfDA7Y1trPj4yXT1oO2U9ZSs0fDB9d2hpbGUoKGV8MCkhPShjW2c+PjJdfDApKX19d2hpbGUoMCk7Y1tnPj4yXT1lO0I9MjtpPWQ7cmV0dXJuIEJ8MH1lbHNlIGlmKChtfDApPT02NSl7ZT1jW2c+PjJdfDA7YnJlYWt9ZWxzZSBpZigobXwwKT09Njcpe2k9ZDtyZXR1cm4gZ3wwfX19ZWxzZXtjW2s+PjJdPWg7Y1tnPj4yXT1lfX13aGlsZSgwKTtCPShlfDApIT0oZnwwKSYxO2k9ZDtyZXR1cm4gQnwwfWZ1bmN0aW9uIEhsKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDtsPWk7aT1pKzEwNDB8MDtuPWwrMTZ8MDtvPWwrOHwwO209bDthOmRve2lmKChlfDApIT0oZnwwKSl7cj1lO3doaWxlKDEpe2lmKChhW3I+PjBdfDApPT0wKXticmVha31yPXIrMXwwO2lmKChyfDApPT0oZnwwKSl7cj1mO2JyZWFrfX1jW2s+PjJdPWg7Y1tnPj4yXT1lO2lmKChofDApIT0oanwwKSl7cD1qO2I9Yis4fDA7d2hpbGUoMSl7dD1kO3U9Y1t0KzQ+PjJdfDA7cT1tO2NbcT4+Ml09Y1t0Pj4yXTtjW3ErND4+Ml09dTtxPXI7dT1xLWV8MDt0PWliKGNbYj4+Ml18MCl8MDt5PWNbZz4+Ml18MDtjW28+PjJdPXk7cz0oaHwwKSE9MDt3PXM/cC1oPj4yOjI1Njt4PXM/aDpuO2I6ZG97aWYoKHl8MCk9PTB8KHd8MCk9PTApe3Y9MH1lbHNle3Y9MDt3aGlsZSgxKXt6PXU+Pj4yO0E9ej4+PjA+PXc+Pj4wO2lmKCEoQXx1Pj4+MD4xMzEpKXticmVhayBifXk9QT93Ono7dT11LXl8MDt5PVZtKHgsbyx5LGQpfDA7aWYoKHl8MCk9PS0xKXticmVha31pZigoeHwwKT09KG58MCkpe3g9bn1lbHNle3c9dy15fDA7eD14Kyh5PDwyKXwwfXY9eSt2fDA7eT1jW28+PjJdfDA7aWYoKHl8MCk9PTB8KHd8MCk9PTApe2JyZWFrIGJ9fXc9MDt5PWNbbz4+Ml18MDt2PS0xfX13aGlsZSgwKTtjOmRve2lmKCh5fDApIT0wKXtpZighKCh3fDApPT0wfCh1fDApPT0wKSl7d2hpbGUoMSl7ej1VbSh4LHksdSxkKXwwO2lmKCh6KzJ8MCk+Pj4wPDMpe2JyZWFrfXk9eSt6fDA7Y1tvPj4yXT15O3c9dysgLTF8MDt2PXYrMXwwO2lmKCh3fDApPT0wfCh1fDApPT0oenwwKSl7YnJlYWsgY31lbHNle3U9dS16fDA7eD14KzR8MH19aWYoKHp8MCk9PS0xKXt2PS0xO2JyZWFrfWVsc2UgaWYoKHp8MCk9PTApe2Nbbz4+Ml09MDt5PTA7YnJlYWt9ZWxzZXtjW2Q+PjJdPTA7YnJlYWt9fX1lbHNle3k9MH19d2hpbGUoMCk7aWYocyl7Y1tnPj4yXT15fWlmKCh0fDApIT0wKXtpYih0fDApfDB9aWYoKHZ8MCk9PTApe2Y9MjtkPTQ4O2JyZWFrfWVsc2UgaWYoKHZ8MCk9PS0xKXtkPTI2O2JyZWFrfWg9KGNbaz4+Ml18MCkrKHY8PDIpfDA7Y1trPj4yXT1oO2lmKChofDApPT0oanwwKSl7ZD00NjticmVha31lPWNbZz4+Ml18MDtpZigocnwwKT09KGZ8MCkpe3I9Zn1lbHNle3E9aWIoY1tiPj4yXXwwKXwwO2U9VW0oaCxlLDEsZCl8MDtpZigocXwwKSE9MCl7aWIocXwwKXwwfWlmKChlfDApIT0wKXtmPTI7ZD00ODticmVha31jW2s+PjJdPShjW2s+PjJdfDApKzQ7ZT0oY1tnPj4yXXwwKSsxfDA7Y1tnPj4yXT1lO2Q6ZG97aWYoKGV8MCk9PShmfDApKXtyPWZ9ZWxzZXtyPWU7d2hpbGUoMSl7aWYoKGFbcj4+MF18MCk9PTApe2JyZWFrIGR9cj1yKzF8MDtpZigocnwwKT09KGZ8MCkpe3I9ZjticmVha319fX13aGlsZSgwKTtoPWNbaz4+Ml18MH1pZigoZXwwKT09KGZ8MCl8KGh8MCk9PShqfDApKXticmVhayBhfX1pZigoZHwwKT09MjYpe2Nbaz4+Ml09aDtlOmRve2lmKChlfDApIT0oY1tnPj4yXXwwKSl7d2hpbGUoMSl7ZD1pYihjW2I+PjJdfDApfDA7bj1VbShoLGUscS1lfDAsbSl8MDtpZigoZHwwKSE9MCl7aWIoZHwwKXwwfWlmKChufDApPT0tMSl7ZD0zMTticmVha31lbHNlIGlmKChufDApPT0tMil7ZD0zMjticmVha31lbHNlIGlmKChufDApPT0wKXtlPWUrMXwwfWVsc2V7ZT1lK258MH1oPShjW2s+PjJdfDApKzR8MDtjW2s+PjJdPWg7aWYoKGV8MCk9PShjW2c+PjJdfDApKXticmVhayBlfX1pZigoZHwwKT09MzEpe2NbZz4+Ml09ZTtBPTI7aT1sO3JldHVybiBBfDB9ZWxzZSBpZigoZHwwKT09MzIpe2NbZz4+Ml09ZTtBPTE7aT1sO3JldHVybiBBfDB9fX13aGlsZSgwKTtjW2c+PjJdPWU7QT0oZXwwKSE9KGZ8MCkmMTtpPWw7cmV0dXJuIEF8MH1lbHNlIGlmKChkfDApPT00Nil7ZT1jW2c+PjJdfDA7YnJlYWt9ZWxzZSBpZigoZHwwKT09NDgpe2k9bDtyZXR1cm4gZnwwfX19ZWxzZXtjW2s+PjJdPWg7Y1tnPj4yXT1lfX13aGlsZSgwKTtBPShlfDApIT0oZnwwKSYxO2k9bDtyZXR1cm4gQXwwfWZ1bmN0aW9uIElsKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Yj1pO2NbZj4+Ml09ZDthPWliKGNbYSs4Pj4yXXwwKXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJuIDB9aWIoYXwwKXwwO2k9YjtyZXR1cm4gMH1mdW5jdGlvbiBKbChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7YT1hKzh8MDtkPWliKGNbYT4+Ml18MCl8MDtpZigoZHwwKSE9MCl7aWIoZHwwKXwwfWE9Y1thPj4yXXwwO2lmKChhfDApIT0wKXthPWliKGF8MCl8MDtpZigoYXwwKT09MCl7YT0wfWVsc2V7aWIoYXwwKXwwO2E9MH19ZWxzZXthPTF9aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gS2woYSl7YT1hfDA7cmV0dXJuIDB9ZnVuY3Rpb24gTGwoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2lmKChmfDApPT0wfChkfDApPT0oZXwwKSl7bT0wO2k9ZztyZXR1cm4gbXwwfWg9ZTthPWErOHwwO2I9KGJ8MCkhPTA/YjoyMTI4MDtrPTA7aj0wO3doaWxlKDEpe209aWIoY1thPj4yXXwwKXwwO2w9VW0oMCxkLGgtZHwwLGIpfDA7aWYoKG18MCkhPTApe2liKG18MCl8MH1pZigobHwwKT09MCl7ZD1kKzF8MDtsPTF9ZWxzZSBpZigobHwwKT09LTJ8KGx8MCk9PS0xKXtmPTk7YnJlYWt9ZWxzZXtkPWQrbHwwfWs9bCtrfDA7aj1qKzF8MDtpZihqPj4+MD49Zj4+PjB8KGR8MCk9PShlfDApKXtmPTk7YnJlYWt9fWlmKChmfDApPT05KXtpPWc7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBNbChhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSs4Pj4yXXwwO2lmKChhfDApIT0wKXthPWliKGF8MCl8MDtpZigoYXwwKT09MCl7YT00fWVsc2V7aWIoYXwwKXwwO2E9NH19ZWxzZXthPTF9aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gTmwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gT2woZCxmLGcsaCxqLGssbCxtKXtkPWR8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDt2YXIgbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7Zj1pO2Q9aDthOmRve2lmKGc+Pj4wPGg+Pj4wKXtvPWc7bj1rO3doaWxlKDEpe3E9YltvPj4xXXwwO3A9cSY2NTUzNTtkb3tpZigocSY2NTUzNSk8MTI4KXtpZigobC1ufDApPDEpe2g9MTticmVhayBhfWFbbj4+MF09cTtuPW4rMXwwfWVsc2V7aWYoKHEmNjU1MzUpPDIwNDgpe2lmKChsLW58MCk8Mil7aD0xO2JyZWFrIGF9YVtuPj4wXT1wPj4+NnwxOTI7YVtuKzE+PjBdPXAmNjN8MTI4O249bisyfDA7YnJlYWt9aWYoKHEmNjU1MzUpPDU1Mjk2KXtpZigobC1ufDApPDMpe2g9MTticmVhayBhfWFbbj4+MF09cD4+PjEyfDIyNDthW24rMT4+MF09cD4+PjYmNjN8MTI4O2FbbisyPj4wXT1wJjYzfDEyODtuPW4rM3wwO2JyZWFrfWlmKCEoKHEmNjU1MzUpPDU2MzIwKSl7aWYoKHEmNjU1MzUpPDU3MzQ0KXtoPTI7YnJlYWsgYX1pZigobC1ufDApPDMpe2g9MTticmVhayBhfWFbbj4+MF09cD4+PjEyfDIyNDthW24rMT4+MF09cD4+PjYmNjN8MTI4O2FbbisyPj4wXT1wJjYzfDEyODtuPW4rM3wwO2JyZWFrfWlmKChkLW98MCk8NCl7aD0xO2JyZWFrIGF9cT1vKzJ8MDtyPWVbcT4+MV18MDtpZigociY2NDUxMnwwKSE9NTYzMjApe2g9MjticmVhayBhfWlmKChsLW58MCk8NCl7aD0xO2JyZWFrIGF9cz1wJjk2MDtpZigoKHM8PDEwKSs2NTUzNnwwKT4+PjA+MTExNDExMSl7aD0yO2JyZWFrIGF9bz0ocz4+PjYpKzF8MDthW24+PjBdPW8+Pj4yfDI0MDthW24rMT4+MF09cD4+PjImMTV8bzw8NCY0OHwxMjg7YVtuKzI+PjBdPXA8PDQmNDh8cj4+PjYmMTV8MTI4O2FbbiszPj4wXT1yJjYzfDEyODtvPXE7bj1uKzR8MH19d2hpbGUoMCk7bz1vKzJ8MDtpZighKG8+Pj4wPGg+Pj4wKSl7aD0wO2JyZWFrfX19ZWxzZXtoPTA7bz1nO249a319d2hpbGUoMCk7Y1tqPj4yXT1nKyhvLWc+PjE8PDEpO2NbbT4+Ml09aysobi1rKTtpPWY7cmV0dXJuIGh8MH1mdW5jdGlvbiBQbChlLGYsZyxoLGosayxsLG0pe2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO209bXwwO3ZhciBuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2Y9aTthOmRve2lmKGc+Pj4wPGg+Pj4wKXtvPWg7cD1sO3E9ZztlPWs7d2hpbGUoMSl7aWYoIShlPj4+MDxsPj4+MCkpe249MzE7YnJlYWsgYX1zPWFbcT4+MF18MDtyPXMmMjU1O2Rve2lmKHM8PDI0Pj4yND4tMSl7YltlPj4xXT1zJjI1NTtxPXErMXwwfWVsc2V7aWYoKHMmMjU1KTwxOTQpe2g9MjticmVhayBhfWlmKChzJjI1NSk8MjI0KXtpZigoby1xfDApPDIpe2g9MTticmVhayBhfXM9ZFtxKzE+PjBdfDA7aWYoKHMmMTkyfDApIT0xMjgpe2g9MjticmVhayBhfWJbZT4+MV09cyY2M3xyPDw2JjE5ODQ7cT1xKzJ8MDticmVha31pZigocyYyNTUpPDI0MCl7aWYoKG8tcXwwKTwzKXtoPTE7YnJlYWsgYX1zPWFbcSsxPj4wXXwwO3Q9YVtxKzI+PjBdfDA7aWYoKHJ8MCk9PTIzNyl7aWYoISgocyYtMzIpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19ZWxzZSBpZigocnwwKT09MjI0KXtpZighKChzJi0zMik8PDI0Pj4yND09LTk2KSl7aD0yO2JyZWFrIGF9fWVsc2V7aWYoISgocyYtNjQpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19dD10JjI1NTtpZigodCYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9YltlPj4xXT0ocyYyNTUpPDw2JjQwMzJ8cjw8MTJ8dCY2MztxPXErM3wwO2JyZWFrfWlmKCEoKHMmMjU1KTwyNDUpKXtoPTI7YnJlYWsgYX1pZigoby1xfDApPDQpe2g9MTticmVhayBhfXM9YVtxKzE+PjBdfDA7dD1hW3ErMj4+MF18MDt1PWFbcSszPj4wXXwwO2lmKChyfDApPT0yNDApe2lmKCEoKHMrMTEyPDwyND4+MjQmMjU1KTw0OCkpe2g9MjticmVhayBhfX1lbHNlIGlmKChyfDApPT0yNDQpe2lmKCEoKHMmLTE2KTw8MjQ+PjI0PT0tMTI4KSl7aD0yO2JyZWFrIGF9fWVsc2V7aWYoISgocyYtNjQpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19dD10JjI1NTtpZigodCYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9dT11JjI1NTtpZigodSYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9aWYoKHAtZXwwKTw0KXtoPTE7YnJlYWsgYX1yPXImNztzPXMmMjU1O2lmKChzPDwxMiYxOTY2MDh8cjw8MTgpPj4+MD4xMTE0MTExKXtoPTI7YnJlYWsgYX1iW2U+PjFdPXM8PDImNjB8dD4+PjQmM3woKHM+Pj40JjN8cjw8Mik8PDYpKzE2MzIwfDU1Mjk2O2U9ZSsyfDA7YltlPj4xXT11JjYzfHQ8PDYmOTYwfDU2MzIwO3E9cSs0fDB9fXdoaWxlKDApO2U9ZSsyfDA7aWYoIShxPj4+MDxoPj4+MCkpe249MzE7YnJlYWt9fX1lbHNle3E9ZztlPWs7bj0zMX19d2hpbGUoMCk7aWYoKG58MCk9PTMxKXtoPXE+Pj4wPGg+Pj4wJjF9Y1tqPj4yXT1nKyhxLWcpO2NbbT4+Ml09aysoZS1rPj4xPDwxKTtpPWY7cmV0dXJuIGh8MH1mdW5jdGlvbiBRbChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2NbZj4+Ml09ZDtyZXR1cm4gM31mdW5jdGlvbiBSbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBTbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBUbChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Yz1pO2E6ZG97aWYoZD4+PjA8ZT4+PjAmKGZ8MCkhPTApe2I9ZTtoPWQ7Zz0wO2I6d2hpbGUoMSl7az1hW2g+PjBdfDA7aj1rJjI1NTtkb3tpZihrPDwyND4+MjQ+LTEpe2g9aCsxfDB9ZWxzZXtpZigoayYyNTUpPDE5NCl7YnJlYWsgYX1pZigoayYyNTUpPDIyNCl7aWYoKGItaHwwKTwyKXticmVhayBhfWlmKCEoKGFbaCsxPj4wXSYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWg9aCsyfDA7YnJlYWt9aWYoKGsmMjU1KTwyNDApe2s9aDtpZigoYi1rfDApPDMpe2JyZWFrIGF9bT1hW2grMT4+MF18MDtsPWFbaCsyPj4wXXwwO2lmKChqfDApPT0yMjQpe2lmKCEoKG0mLTMyKTw8MjQ+PjI0PT0tOTYpKXtlPTE0O2JyZWFrIGJ9fWVsc2UgaWYoKGp8MCk9PTIzNyl7aWYoISgobSYtMzIpPDwyND4+MjQ9PS0xMjgpKXtlPTE2O2JyZWFrIGJ9fWVsc2V7aWYoISgobSYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTE4O2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1oPWgrM3wwO2JyZWFrfWlmKCEoKGsmMjU1KTwyNDUpKXticmVhayBhfWs9aDtpZigoYi1rfDApPDQpe2JyZWFrIGF9aWYoKGYtZ3wwKT4+PjA8Mil7YnJlYWsgYX1uPWFbaCsxPj4wXXwwO2w9YVtoKzI+PjBdfDA7bT1hW2grMz4+MF18MDtpZigoanwwKT09MjQ0KXtpZighKChuJi0xNik8PDI0Pj4yND09LTEyOCkpe2U9Mjg7YnJlYWsgYn19ZWxzZSBpZigoanwwKT09MjQwKXtpZighKChuKzExMjw8MjQ+PjI0JjI1NSk8NDgpKXtlPTI2O2JyZWFrIGJ9fWVsc2V7aWYoISgobiYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTMwO2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1pZighKChtJi02NCk8PDI0Pj4yND09LTEyOCkpe2JyZWFrIGF9aWYoKChuJjI1NSk8PDEyJjE5NjYwOHxqPDwxOCYxODM1MDA4KT4+PjA+MTExNDExMSl7YnJlYWsgYX1oPWgrNHwwO2c9ZysxfDB9fXdoaWxlKDApO2c9ZysxfDA7aWYoIShoPj4+MDxlPj4+MCZnPj4+MDxmPj4+MCkpe2JyZWFrIGF9fWlmKChlfDApPT0xNCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0xNil7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0xOCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0yNil7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0yOCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0zMCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH19ZWxzZXtoPWR9fXdoaWxlKDApO249aC1kfDA7aT1jO3JldHVybiBufDB9ZnVuY3Rpb24gVWwoYSl7YT1hfDA7cmV0dXJuIDR9ZnVuY3Rpb24gVmwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gV2woYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTA7ZD1pO2E6ZG97aWYoZT4+PjA8Zj4+PjApe2I9ZTtsPWg7d2hpbGUoMSl7bT1jW2I+PjJdfDA7aWYoKG0mLTIwNDh8MCk9PTU1Mjk2fG0+Pj4wPjExMTQxMTEpe2Y9MjticmVhayBhfWRve2lmKCEobT4+PjA8MTI4KSl7aWYobT4+PjA8MjA0OCl7aWYoKGotbHwwKTwyKXtmPTE7YnJlYWsgYX1hW2w+PjBdPW0+Pj42fDE5MjthW2wrMT4+MF09bSY2M3wxMjg7bD1sKzJ8MDticmVha31uPWotbHwwO2lmKG0+Pj4wPDY1NTM2KXtpZigobnwwKTwzKXtmPTE7YnJlYWsgYX1hW2w+PjBdPW0+Pj4xMnwyMjQ7YVtsKzE+PjBdPW0+Pj42JjYzfDEyODthW2wrMj4+MF09bSY2M3wxMjg7bD1sKzN8MDticmVha31lbHNle2lmKChufDApPDQpe2Y9MTticmVhayBhfWFbbD4+MF09bT4+PjE4fDI0MDthW2wrMT4+MF09bT4+PjEyJjYzfDEyODthW2wrMj4+MF09bT4+PjYmNjN8MTI4O2FbbCszPj4wXT1tJjYzfDEyODtsPWwrNHwwO2JyZWFrfX1lbHNle2lmKChqLWx8MCk8MSl7Zj0xO2JyZWFrIGF9YVtsPj4wXT1tO2w9bCsxfDB9fXdoaWxlKDApO2I9Yis0fDA7aWYoIShiPj4+MDxmPj4+MCkpe2Y9MDticmVha319fWVsc2V7Zj0wO2I9ZTtsPWh9fXdoaWxlKDApO2NbZz4+Ml09ZSsoYi1lPj4yPDwyKTtjW2s+PjJdPWgrKGwtaCk7aT1kO3JldHVybiBmfDB9ZnVuY3Rpb24gWGwoYixlLGYsZyxoLGosayxsKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2U9aTthOmRve2lmKGY+Pj4wPGc+Pj4wKXtvPWc7bj1mO2I9ajt3aGlsZSgxKXtpZighKGI+Pj4wPGs+Pj4wKSl7bT0zMDticmVhayBhfXE9YVtuPj4wXXwwO3A9cSYyNTU7ZG97aWYocTw8MjQ+PjI0Pi0xKXtjW2I+PjJdPXA7bj1uKzF8MH1lbHNle2lmKChxJjI1NSk8MTk0KXtnPTI7YnJlYWsgYX1pZigocSYyNTUpPDIyNCl7aWYoKG8tbnwwKTwyKXtnPTE7YnJlYWsgYX1xPWRbbisxPj4wXXwwO2lmKChxJjE5MnwwKSE9MTI4KXtnPTI7YnJlYWsgYX1jW2I+PjJdPXEmNjN8cDw8NiYxOTg0O249bisyfDA7YnJlYWt9aWYoKHEmMjU1KTwyNDApe2lmKChvLW58MCk8Myl7Zz0xO2JyZWFrIGF9cT1hW24rMT4+MF18MDtyPWFbbisyPj4wXXwwO2lmKChwfDApPT0yMjQpe2lmKCEoKHEmLTMyKTw8MjQ+PjI0PT0tOTYpKXtnPTI7YnJlYWsgYX19ZWxzZSBpZigocHwwKT09MjM3KXtpZighKChxJi0zMik8PDI0Pj4yND09LTEyOCkpe2c9MjticmVhayBhfX1lbHNle2lmKCEoKHEmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7Zz0yO2JyZWFrIGF9fXI9ciYyNTU7aWYoKHImMTkyfDApIT0xMjgpe2c9MjticmVhayBhfWNbYj4+Ml09KHEmMjU1KTw8NiY0MDMyfHA8PDEyJjYxNDQwfHImNjM7bj1uKzN8MDticmVha31pZighKChxJjI1NSk8MjQ1KSl7Zz0yO2JyZWFrIGF9aWYoKG8tbnwwKTw0KXtnPTE7YnJlYWsgYX1xPWFbbisxPj4wXXwwO3I9YVtuKzI+PjBdfDA7cz1hW24rMz4+MF18MDtpZigocHwwKT09MjQ0KXtpZighKChxJi0xNik8PDI0Pj4yND09LTEyOCkpe2c9MjticmVhayBhfX1lbHNlIGlmKChwfDApPT0yNDApe2lmKCEoKHErMTEyPDwyND4+MjQmMjU1KTw0OCkpe2c9MjticmVhayBhfX1lbHNle2lmKCEoKHEmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7Zz0yO2JyZWFrIGF9fXI9ciYyNTU7aWYoKHImMTkyfDApIT0xMjgpe2c9MjticmVhayBhfXM9cyYyNTU7aWYoKHMmMTkyfDApIT0xMjgpe2c9MjticmVhayBhfXA9KHEmMjU1KTw8MTImMjU4MDQ4fHA8PDE4JjE4MzUwMDh8cjw8NiY0MDMyfHMmNjM7aWYocD4+PjA+MTExNDExMSl7Zz0yO2JyZWFrIGF9Y1tiPj4yXT1wO249bis0fDB9fXdoaWxlKDApO2I9Yis0fDA7aWYoIShuPj4+MDxnPj4+MCkpe209MzA7YnJlYWt9fX1lbHNle249ZjtiPWo7bT0zMH19d2hpbGUoMCk7aWYoKG18MCk9PTMwKXtnPW4+Pj4wPGc+Pj4wJjF9Y1toPj4yXT1mKyhuLWYpO2NbbD4+Ml09aisoYi1qPj4yPDwyKTtpPWU7cmV0dXJuIGd8MH1mdW5jdGlvbiBZbChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2NbZj4+Ml09ZDtyZXR1cm4gM31mdW5jdGlvbiBabChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBfbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiAkbChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Yz1pO2E6ZG97aWYoZD4+PjA8ZT4+PjAmKGZ8MCkhPTApe2c9ZTtqPWQ7Yj0xO2I6d2hpbGUoMSl7az1hW2o+PjBdfDA7aD1rJjI1NTtkb3tpZihrPDwyND4+MjQ+LTEpe2o9aisxfDB9ZWxzZXtpZigoayYyNTUpPDE5NCl7YnJlYWsgYX1pZigoayYyNTUpPDIyNCl7aWYoKGctanwwKTwyKXticmVhayBhfWlmKCEoKGFbaisxPj4wXSYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWo9aisyfDA7YnJlYWt9aWYoKGsmMjU1KTwyNDApe2s9ajtpZigoZy1rfDApPDMpe2JyZWFrIGF9bT1hW2orMT4+MF18MDtsPWFbaisyPj4wXXwwO2lmKChofDApPT0yMjQpe2lmKCEoKG0mLTMyKTw8MjQ+PjI0PT0tOTYpKXtlPTE0O2JyZWFrIGJ9fWVsc2UgaWYoKGh8MCk9PTIzNyl7aWYoISgobSYtMzIpPDwyND4+MjQ9PS0xMjgpKXtlPTE2O2JyZWFrIGJ9fWVsc2V7aWYoISgobSYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTE4O2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1qPWorM3wwO2JyZWFrfWlmKCEoKGsmMjU1KTwyNDUpKXticmVhayBhfWs9ajtpZigoZy1rfDApPDQpe2JyZWFrIGF9bT1hW2orMT4+MF18MDtuPWFbaisyPj4wXXwwO2w9YVtqKzM+PjBdfDA7aWYoKGh8MCk9PTI0MCl7aWYoISgobSsxMTI8PDI0Pj4yNCYyNTUpPDQ4KSl7ZT0yNTticmVhayBifX1lbHNlIGlmKChofDApPT0yNDQpe2lmKCEoKG0mLTE2KTw8MjQ+PjI0PT0tMTI4KSl7ZT0yNzticmVhayBifX1lbHNle2lmKCEoKG0mLTY0KTw8MjQ+PjI0PT0tMTI4KSl7ZT0yOTticmVhayBifX1pZighKChuJi02NCk8PDI0Pj4yND09LTEyOCkpe2JyZWFrIGF9aWYoISgobCYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWlmKCgobSYyNTUpPDwxMiYxOTY2MDh8aDw8MTgmMTgzNTAwOCk+Pj4wPjExMTQxMTEpe2JyZWFrIGF9aj1qKzR8MH19d2hpbGUoMCk7aWYoIShqPj4+MDxlPj4+MCZiPj4+MDxmPj4+MCkpe2JyZWFrIGF9Yj1iKzF8MH1pZigoZXwwKT09MTQpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MTYpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MTgpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MjUpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09Mjcpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09Mjkpe249ay1kfDA7aT1jO3JldHVybiBufDB9fWVsc2V7aj1kfX13aGlsZSgwKTtuPWotZHwwO2k9YztyZXR1cm4gbnwwfWZ1bmN0aW9uIGFtKGEpe2E9YXwwO3JldHVybiA0fWZ1bmN0aW9uIGJtKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGNtKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGRtKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNjI0O2lmKCEoKGFbYisxMj4+MF0mMSk9PTApKXtlPWNbYisyMD4+Ml18MDtpZigoZXwwKSE9MCl7dm4oZSl9aWYoKGJ8MCk9PTApe2k9ZDtyZXR1cm59fXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM2MjQ7aWYoISgoYVtiKzEyPj4wXSYxKT09MCk/KGU9Y1tiKzIwPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pPWQ7cmV0dXJufWZ1bmN0aW9uIGZtKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNjY0O2lmKCEoKGFbYisxNj4+MF0mMSk9PTApKXtlPWNbYisyND4+Ml18MDtpZigoZXwwKSE9MCl7dm4oZSl9aWYoKGJ8MCk9PTApe2k9ZDtyZXR1cm59fXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ20oYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM2NjQ7aWYoISgoYVtiKzE2Pj4wXSYxKT09MCk/KGU9Y1tiKzI0Pj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pPWQ7cmV0dXJufWZ1bmN0aW9uIGhtKGIpe2I9YnwwO3JldHVybiBhW2IrOD4+MF18MH1mdW5jdGlvbiBpbShhKXthPWF8MDtyZXR1cm4gY1thKzg+PjJdfDB9ZnVuY3Rpb24gam0oYil7Yj1ifDA7cmV0dXJuIGFbYis5Pj4wXXwwfWZ1bmN0aW9uIGttKGEpe2E9YXwwO3JldHVybiBjW2ErMTI+PjJdfDB9ZnVuY3Rpb24gbG0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2c9ZCsxMnwwO2lmKChhW2c+PjBdJjEpPT0wKXtjW2IrMD4+Ml09Y1tnKzA+PjJdO2NbYis0Pj4yXT1jW2crND4+Ml07Y1tiKzg+PjJdPWNbZys4Pj4yXTtpPWU7cmV0dXJufWc9Y1tkKzIwPj4yXXwwO2Q9Y1tkKzE2Pj4yXXwwO2lmKGQ+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoZD4+PjA8MTEpe2FbYj4+MF09ZDw8MTtrPWIrMXwwfWVsc2V7aD1kKzE2Ji0xNjtqPShofDApPT0wPzE6aDt3aGlsZSgxKXtrPXVuKGopfDA7aWYoKGt8MCkhPTApe2Y9MTM7YnJlYWt9az1jWzU2NjZdfDA7Y1s1NjY2XT1rKzA7aWYoKGt8MCk9PTApe2JyZWFrfXNjW2smMzFdKCl9aWYoKGZ8MCk9PTEzKXtjW2IrOD4+Ml09aztjW2I+PjJdPWh8MTtjW2IrND4+Ml09ZDticmVha31rPVhhKDQpfDA7Y1trPj4yXT0yMjY4MDt3YihrfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7TG4oa3wwLGd8MCxkfDApfDA7YVtrK2Q+PjBdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBtbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtlPWk7Zz1kKzE2fDA7aWYoKGFbZz4+MF0mMSk9PTApe2NbYiswPj4yXT1jW2crMD4+Ml07Y1tiKzQ+PjJdPWNbZys0Pj4yXTtjW2IrOD4+Ml09Y1tnKzg+PjJdO2k9ZTtyZXR1cm59Zz1jW2QrMjQ+PjJdfDA7ZD1jW2QrMjA+PjJdfDA7aWYoZD4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1kb3tpZihkPj4+MDwxMSl7YVtiPj4wXT1kPDwxO2s9YisxfDB9ZWxzZXtoPWQrMTYmLTE2O2o9KGh8MCk9PTA/MTpoO3doaWxlKDEpe2s9dW4oail8MDtpZigoa3wwKSE9MCl7Zj0xMzticmVha31rPWNbNTY2Nl18MDtjWzU2NjZdPWsrMDtpZigoa3wwKT09MCl7YnJlYWt9c2NbayYzMV0oKX1pZigoZnwwKT09MTMpe2NbYis4Pj4yXT1rO2NbYj4+Ml09aHwxO2NbYis0Pj4yXT1kO2JyZWFrfWs9WGEoNCl8MDtjW2s+PjJdPTIyNjgwO3diKGt8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtMbihrfDAsZ3wwLGR8MCl8MDthW2srZD4+MF09MDtpPWU7cmV0dXJufWZ1bmN0aW9uIG5tKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT04O2M9YisxfDA7YVtjPj4wXT0xNzAyMTk1ODI4O2FbYysxPj4wXT02NjQ5MjAyO2FbYysyPj4wXT0yNTk3MzthW2MrMz4+MF09MTAxO2FbYis1Pj4wXT0wO3JldHVybn1mdW5jdGlvbiBvbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2Q9aTtlPTEzNjk2O3doaWxlKDEpe2lmKChjW2U+PjJdfDApPT0wKXticmVha31lbHNle2U9ZSs0fDB9fWc9ZS0xMzY5NnwwO2U9Zz4+MjtpZihlPj4+MD4xMDczNzQxODA3KXtkZygpfWRve2lmKGU+Pj4wPDIpe2FbYj4+MF09Zz4+PjE7aj1iKzR8MH1lbHNle2c9ZSs0Ji00O2g9Zzw8MjtoPShofDApPT0wPzE6aDt3aGlsZSgxKXtqPXVuKGgpfDA7aWYoKGp8MCkhPTApe2Y9MTM7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKGZ8MCk9PTEzKXtjW2IrOD4+Ml09ajtjW2I+PjJdPWd8MTtjW2IrND4+Ml09ZTticmVha31qPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGV8MCk9PTApe2o9aisoZTw8Mil8MDtjW2o+PjJdPTA7aT1kO3JldHVybn1lbHNle2Y9ZTtnPTEzNjk2O2I9an13aGlsZSgxKXtmPWYrIC0xfDA7Y1tiPj4yXT1jW2c+PjJdO2lmKChmfDApPT0wKXticmVha31lbHNle2c9Zys0fDA7Yj1iKzR8MH19aj1qKyhlPDwyKXwwO2Nbaj4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIHBtKGIsYyl7Yj1ifDA7Yz1jfDA7dmFyIGQ9MDtjPWk7YVtiPj4wXT0xMDtkPWIrMXwwO2FbZCswPj4wXT1hWzEzNzIwPj4wXXwwO2FbZCsxPj4wXT1hWzEzNzIxPj4wXXwwO2FbZCsyPj4wXT1hWzEzNzIyPj4wXXwwO2FbZCszPj4wXT1hWzEzNzIzPj4wXXwwO2FbZCs0Pj4wXT1hWzEzNzI0Pj4wXXwwO2FbYis2Pj4wXT0wO2k9YztyZXR1cm59ZnVuY3Rpb24gcW0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtkPWk7ZT0xMzcyODt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtlPWUrNHwwfX1nPWUtMTM3Mjh8MDtlPWc+PjI7aWYoZT4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihlPj4+MDwyKXthW2I+PjBdPWc+Pj4xO2o9Yis0fDB9ZWxzZXtnPWUrNCYtNDtoPWc8PDI7aD0oaHwwKT09MD8xOmg7d2hpbGUoMSl7aj11bihoKXwwO2lmKChqfDApIT0wKXtmPTEzO2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXticmVha31zY1tqJjMxXSgpfWlmKChmfDApPT0xMyl7Y1tiKzg+PjJdPWo7Y1tiPj4yXT1nfDE7Y1tiKzQ+PjJdPWU7YnJlYWt9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChlfDApPT0wKXtqPWorKGU8PDIpfDA7Y1tqPj4yXT0wO2k9ZDtyZXR1cm59ZWxzZXtmPWU7Zz0xMzcyODtiPWp9d2hpbGUoMSl7Zj1mKyAtMXwwO2NbYj4+Ml09Y1tnPj4yXTtpZigoZnwwKT09MCl7YnJlYWt9ZWxzZXtnPWcrNHwwO2I9Yis0fDB9fWo9aisoZTw8Mil8MDtjW2o+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBybShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzc2MF18MCkhPTApe2Q9Y1szNDM4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzc2MCl8MCk9PTApe2Q9Y1szNDM4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzIwOTI4XXwwKT09MD8oUWEoMjA5MjgpfDApIT0wOjApe05uKDIwNzYwLDAsMTY4KXwwO2NjKDIxNSwwLHB8MCl8MDskYSgyMDkyOCl9Z2coMjA3NjAsMjA5MzYpO2dnKDIwNzcyfDAsMjA5NDQpO2dnKDIwNzg0fDAsMjA5NTIpO2dnKDIwNzk2fDAsMjA5NjApO2dnKDIwODA4fDAsMjA5NzYpO2dnKDIwODIwfDAsMjA5OTIpO2dnKDIwODMyfDAsMjFlMyk7Z2coMjA4NDR8MCwyMTAxNik7Z2coMjA4NTZ8MCwyMTAyNCk7Z2coMjA4Njh8MCwyMTAzMik7Z2coMjA4ODB8MCwyMTA0MCk7Z2coMjA4OTJ8MCwyMTA0OCk7Z2coMjA5MDR8MCwyMTA1Nik7Z2coMjA5MTZ8MCwyMTA2NCk7Y1szNDM4XT0yMDc2MDskYSgxMzc2MCk7ZD1jWzM0MzhdfDA7aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gc20oYil7Yj1ifDA7dmFyIGQ9MDtiPWk7aWYoKGFbMTM3NzZdfDApIT0wKXtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1pZigoUWEoMTM3NzYpfDApPT0wKXtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1pZigoYVsyMDM5Ml18MCk9PTA/KFFhKDIwMzkyKXwwKSE9MDowKXtObigyMDIyNCwwLDE2OCl8MDtjYygyMTYsMCxwfDApfDA7JGEoMjAzOTIpfW5nKDIwMjI0LDIwNDAwKTtuZygyMDIzNnwwLDIwNDMyKTtuZygyMDI0OHwwLDIwNDY0KTtuZygyMDI2MHwwLDIwNDk2KTtuZygyMDI3MnwwLDIwNTM2KTtuZygyMDI4NHwwLDIwNTc2KTtuZygyMDI5NnwwLDIwNjA4KTtuZygyMDMwOHwwLDIwNjQ4KTtuZygyMDMyMHwwLDIwNjY0KTtuZygyMDMzMnwwLDIwNjgwKTtuZygyMDM0NHwwLDIwNjk2KTtuZygyMDM1NnwwLDIwNzEyKTtuZygyMDM2OHwwLDIwNzI4KTtuZygyMDM4MHwwLDIwNzQ0KTtjWzM0NDJdPTIwMjI0OyRhKDEzNzc2KTtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB0bShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzc5Ml18MCkhPTApe2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzc5Mil8MCk9PTApe2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzJlNF18MCk9PTA/KFFhKDJlNCl8MCkhPTA6MCl7Tm4oMTk3MTIsMCwyODgpfDA7Y2MoMjE3LDAscHwwKXwwOyRhKDJlNCl9Z2coMTk3MTIsMjAwMDgpO2dnKDE5NzI0fDAsMjAwMTYpO2dnKDE5NzM2fDAsMjAwMzIpO2dnKDE5NzQ4fDAsMjAwNDApO2dnKDE5NzYwfDAsMjAwNDgpO2dnKDE5NzcyfDAsMjAwNTYpO2dnKDE5Nzg0fDAsMjAwNjQpO2dnKDE5Nzk2fDAsMjAwNzIpO2dnKDE5ODA4fDAsMjAwODApO2dnKDE5ODIwfDAsMjAwOTYpO2dnKDE5ODMyfDAsMjAxMDQpO2dnKDE5ODQ0fDAsMjAxMjApO2dnKDE5ODU2fDAsMjAxMzYpO2dnKDE5ODY4fDAsMjAxNDQpO2dnKDE5ODgwfDAsMjAxNTIpO2dnKDE5ODkyfDAsMjAxNjApO2dnKDE5OTA0fDAsMjAwNDgpO2dnKDE5OTE2fDAsMjAxNjgpO2dnKDE5OTI4fDAsMjAxNzYpO2dnKDE5OTQwfDAsMjAxODQpO2dnKDE5OTUyfDAsMjAxOTIpO2dnKDE5OTY0fDAsMjAyMDApO2dnKDE5OTc2fDAsMjAyMDgpO2dnKDE5OTg4fDAsMjAyMTYpO2NbMzQ0Nl09MTk3MTI7JGEoMTM3OTIpO2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWZ1bmN0aW9uIHVtKGIpe2I9YnwwO3ZhciBkPTA7Yj1pO2lmKChhWzEzODA4XXwwKSE9MCl7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9aWYoKFFhKDEzODA4KXwwKT09MCl7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9aWYoKGFbMTkxNjBdfDApPT0wPyhRYSgxOTE2MCl8MCkhPTA6MCl7Tm4oMTg4NzIsMCwyODgpfDA7Y2MoMjE4LDAscHwwKXwwOyRhKDE5MTYwKX1uZygxODg3MiwxOTE2OCk7bmcoMTg4ODR8MCwxOTIwMCk7bmcoMTg4OTZ8MCwxOTI0MCk7bmcoMTg5MDh8MCwxOTI2NCk7bmcoMTg5MjB8MCwxOTU4NCk7bmcoMTg5MzJ8MCwxOTI4OCk7bmcoMTg5NDR8MCwxOTMxMik7bmcoMTg5NTZ8MCwxOTMzNik7bmcoMTg5Njh8MCwxOTM2OCk7bmcoMTg5ODB8MCwxOTQwOCk7bmcoMTg5OTJ8MCwxOTQ0MCk7bmcoMTkwMDR8MCwxOTQ4MCk7bmcoMTkwMTZ8MCwxOTUyMCk7bmcoMTkwMjh8MCwxOTUzNik7bmcoMTkwNDB8MCwxOTU1Mik7bmcoMTkwNTJ8MCwxOTU2OCk7bmcoMTkwNjR8MCwxOTU4NCk7bmcoMTkwNzZ8MCwxOTYwMCk7bmcoMTkwODh8MCwxOTYxNik7bmcoMTkxMDB8MCwxOTYzMik7bmcoMTkxMTJ8MCwxOTY0OCk7bmcoMTkxMjR8MCwxOTY2NCk7bmcoMTkxMzZ8MCwxOTY4MCk7bmcoMTkxNDh8MCwxOTY5Nik7Y1szNDUwXT0xODg3MjskYSgxMzgwOCk7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gdm0oYil7Yj1ifDA7dmFyIGQ9MDtiPWk7aWYoKGFbMTM4MjRdfDApIT0wKXtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1pZigoUWEoMTM4MjQpfDApPT0wKXtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1pZigoYVsxODg0OF18MCk9PTA/KFFhKDE4ODQ4KXwwKSE9MDowKXtObigxODU2MCwwLDI4OCl8MDtjYygyMTksMCxwfDApfDA7JGEoMTg4NDgpfWdnKDE4NTYwLDE4ODU2KTtnZygxODU3MnwwLDE4ODY0KTtjWzM0NTRdPTE4NTYwOyRhKDEzODI0KTtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB3bShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzg0MF18MCkhPTApe2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzg0MCl8MCk9PTApe2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzE4NTIwXXwwKT09MD8oUWEoMTg1MjApfDApIT0wOjApe05uKDE4MjMyLDAsMjg4KXwwO2NjKDIyMCwwLHB8MCl8MDskYSgxODUyMCl9bmcoMTgyMzIsMTg1MjgpO25nKDE4MjQ0fDAsMTg1NDQpO2NbMzQ1OF09MTgyMzI7JGEoMTM4NDApO2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWZ1bmN0aW9uIHhtKGIpe2I9YnwwO3ZhciBjPTAsZD0wO2I9aTtpZigoYVsxMzg2NF18MCkhPTApe2k9YjtyZXR1cm4gMTM4NDh9aWYoKFFhKDEzODY0KXwwKT09MCl7aT1iO3JldHVybiAxMzg0OH1hWzEzODQ4XT0xNjtjPTEzODQ5fDA7ZD1jO2FbZD4+MF09NjIzODY1MTI1O2FbZCsxPj4wXT0yNDM2OTczO2FbZCsyPj4wXT05NTE5O2FbZCszPj4wXT0zNztjPWMrNHwwO2FbYz4+MF09MjAzMjQ4MDEwMDthW2MrMT4+MF09NzkzOTM3NTthW2MrMj4+MF09MzEwMTM7YVtjKzM+PjBdPTEyMTthWzEzODU3Pj4wXT0wO2NjKDIyMSwxMzg0OCxwfDApfDA7JGEoMTM4NjQpO2k9YjtyZXR1cm4gMTM4NDh9ZnVuY3Rpb24geW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzEzODg4XXwwKSE9MCl7aT1iO3JldHVybiAxMzg3Mn1pZigoUWEoMTM4ODgpfDApPT0wKXtpPWI7cmV0dXJuIDEzODcyfWVsc2V7ZD0xMzg5Nn13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTM4OTZ8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzEzODcyXT1mPj4+MTtlPTEzODc2fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxMzg4MD4+Ml09aDtjWzM0NjhdPWZ8MTtjWzEzODc2Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTEzODk2O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDEzODcyLHB8MCl8MDskYSgxMzg4OCk7aT1iO3JldHVybiAxMzg3Mn1mdW5jdGlvbiB6bShiKXtiPWJ8MDt2YXIgYz0wLGQ9MDtiPWk7aWYoKGFbMTM5NTJdfDApIT0wKXtpPWI7cmV0dXJuIDEzOTM2fWlmKChRYSgxMzk1Mil8MCk9PTApe2k9YjtyZXR1cm4gMTM5MzZ9YVsxMzkzNl09MTY7Yz0xMzkzN3wwO2Q9YzthW2Q+PjBdPTYyNDU3NjU0OTthW2QrMT4+MF09MjQzOTc1MjthW2QrMj4+MF09OTUzMDthW2QrMz4+MF09Mzc7Yz1jKzR8MDthW2M+PjBdPTEzOTQ5NDg2ODU7YVtjKzE+PjBdPTU0NDkwMTg7YVtjKzI+PjBdPTIxMjg1O2FbYyszPj4wXT04MzthWzEzOTQ1Pj4wXT0wO2NjKDIyMSwxMzkzNixwfDApfDA7JGEoMTM5NTIpO2k9YjtyZXR1cm4gMTM5MzZ9ZnVuY3Rpb24gQW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzEzOTc2XXwwKSE9MCl7aT1iO3JldHVybiAxMzk2MH1pZigoUWEoMTM5NzYpfDApPT0wKXtpPWI7cmV0dXJuIDEzOTYwfWVsc2V7ZD0xMzk4NH13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTM5ODR8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzEzOTYwXT1mPj4+MTtlPTEzOTY0fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxMzk2OD4+Ml09aDtjWzM0OTBdPWZ8MTtjWzEzOTY0Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTEzOTg0O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDEzOTYwLHB8MCl8MDskYSgxMzk3Nik7aT1iO3JldHVybiAxMzk2MH1mdW5jdGlvbiBCbShiKXtiPWJ8MDtiPWk7aWYoKGFbMTQwNDBdfDApPT0wPyhRYSgxNDA0MCl8MCkhPTA6MCl7ZWcoMTQwMjQsMTQwNDgsMjApO2NjKDIyMSwxNDAyNCxwfDApfDA7JGEoMTQwNDApfWk9YjtyZXR1cm4gMTQwMjR9ZnVuY3Rpb24gQ20oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzE0MDg4XXwwKSE9MCl7aT1iO3JldHVybiAxNDA3Mn1pZigoUWEoMTQwODgpfDApPT0wKXtpPWI7cmV0dXJuIDE0MDcyfWVsc2V7ZD0xNDA5Nn13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTQwOTZ8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzE0MDcyXT1mPj4+MTtlPTE0MDc2fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxNDA4MD4+Ml09aDtjWzM1MThdPWZ8MTtjWzE0MDc2Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTE0MDk2O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDE0MDcyLHB8MCl8MDskYSgxNDA4OCk7aT1iO3JldHVybiAxNDA3Mn1mdW5jdGlvbiBEbShiKXtiPWJ8MDtiPWk7aWYoKGFbMTQyMDBdfDApPT0wPyhRYSgxNDIwMCl8MCkhPTA6MCl7ZWcoMTQxODQsMTQyMDgsMTEpO2NjKDIyMSwxNDE4NCxwfDApfDA7JGEoMTQyMDApfWk9YjtyZXR1cm4gMTQxODR9ZnVuY3Rpb24gRW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzE0MjQwXXwwKSE9MCl7aT1iO3JldHVybiAxNDIyNH1pZigoUWEoMTQyNDApfDApPT0wKXtpPWI7cmV0dXJuIDE0MjI0fWVsc2V7ZD0xNDI0OH13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTQyNDh8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzE0MjI0XT1mPj4+MTtlPTE0MjI4fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxNDIzMj4+Ml09aDtjWzM1NTZdPWZ8MTtjWzE0MjI4Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTE0MjQ4O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDE0MjI0LHB8MCl8MDskYSgxNDI0MCk7aT1iO3JldHVybiAxNDIyNH1mdW5jdGlvbiBGbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCkhPTM0KXtpPWY7cmV0dXJuK2t9Y1tlPj4yXT00O2k9ZjtyZXR1cm4ra31mdW5jdGlvbiBHbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCkhPTM0KXtpPWY7cmV0dXJuK2t9Y1tlPj4yXT00O2k9ZjtyZXR1cm4ra31mdW5jdGlvbiBIbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCk9PTM0KXtjW2U+PjJdPTR9aT1mO3JldHVybitrfWZ1bmN0aW9uIEltKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7aD1pO2k9aSsxMTJ8MDtrPWg7aWYoKGJ8MCk9PShkfDApKXtjW2U+PjJdPTQ7Zj0wO209MDtJPWY7aT1oO3JldHVybiBtfDB9aWYoKGFbYj4+MF18MCk9PTQ1KXtjW2U+PjJdPTQ7Zj0wO209MDtJPWY7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsLTEsLTEpfDA7Zj1JO2s9YisoKGNbbD4+Ml18MCkrKGNbbj4+Ml18MCktKGNbays4Pj4yXXwwKSl8MDtiPWNbZz4+Ml18MDtpZigoYnwwKT09MCl7Y1tnPj4yXT1qfWlmKChrfDApIT0oZHwwKSl7Y1tlPj4yXT00O209MDtuPTA7ST1tO2k9aDtyZXR1cm4gbnwwfWlmKChifDApIT0zNCl7bj1tO0k9ZjtpPWg7cmV0dXJuIG58MH1jW2U+PjJdPTQ7bT0tMTtuPS0xO0k9bTtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBKbShiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtpPWkrMTEyfDA7az1oO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O209MDtpPWg7cmV0dXJuIG18MH1pZigoYVtiPj4wXXwwKT09NDUpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsLTEsLTEpfDA7Zj1JO2s9YisoKGNbbD4+Ml18MCkrKGNbbj4+Ml18MCktKGNbays4Pj4yXXwwKSl8MDtiPWNbZz4+Ml18MDtpZigoYnwwKT09MCl7Y1tnPj4yXT1qfWlmKChrfDApIT0oZHwwKSl7Y1tlPj4yXT00O249MDtpPWg7cmV0dXJuIG58MH1pZigoYnwwKT09MzR8KGY+Pj4wPjB8KGZ8MCk9PTAmbT4+PjA+NDI5NDk2NzI5NSkpe2NbZT4+Ml09NDtuPS0xO2k9aDtyZXR1cm4gbnwwfWVsc2V7bj1tO2k9aDtyZXR1cm4gbnwwfXJldHVybiAwfWZ1bmN0aW9uIEttKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7aD1pO2k9aSsxMTJ8MDtrPWg7aWYoKGJ8MCk9PShkfDApKXtjW2U+PjJdPTQ7bT0wO2k9aDtyZXR1cm4gbXwwfWlmKChhW2I+PjBdfDApPT00NSl7Y1tlPj4yXT00O209MDtpPWg7cmV0dXJuIG18MH1nPWJiKCl8MDtqPWNbZz4+Ml18MDtjW2c+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbaz4+Ml09MDtsPWsrNHwwO2NbbD4+Ml09YjtjW2srNDQ+PjJdPWI7aWYoKGJ8MCk8MCl7Y1trKzg+PjJdPS0xO209LTF9ZWxzZXttPWIrMjE0NzQ4MzY0N3wwO2Nbays4Pj4yXT1tfWNbays3Nj4+Ml09LTE7Y1trKzEwND4+Ml09MDtuPWsrMTA4fDA7Y1tuPj4yXT1tLWI7Y1trKzEwMD4+Ml09bTttPUJuKGssZiwtMSwtMSl8MDtmPUk7az1iKygoY1tsPj4yXXwwKSsoY1tuPj4yXXwwKS0oY1trKzg+PjJdfDApKXwwO2I9Y1tnPj4yXXwwO2lmKChifDApPT0wKXtjW2c+PjJdPWp9aWYoKGt8MCkhPShkfDApKXtjW2U+PjJdPTQ7bj0wO2k9aDtyZXR1cm4gbnwwfWlmKChifDApPT0zNHwoZj4+PjA+MHwoZnwwKT09MCZtPj4+MD40Mjk0OTY3Mjk1KSl7Y1tlPj4yXT00O249LTE7aT1oO3JldHVybiBufDB9ZWxzZXtuPW07aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTG0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9aWYoKGFbYj4+MF18MCk9PTQ1KXtjW2U+PjJdPTQ7bT0wO2k9aDtyZXR1cm4gbXwwfWc9YmIoKXwwO2o9Y1tnPj4yXXwwO2NbZz4+Ml09MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9Y1trPj4yXT0wO2w9ays0fDA7Y1tsPj4yXT1iO2Nbays0ND4+Ml09YjtpZigoYnwwKTwwKXtjW2srOD4+Ml09LTE7bT0tMX1lbHNle209YisyMTQ3NDgzNjQ3fDA7Y1trKzg+PjJdPW19Y1trKzc2Pj4yXT0tMTtjW2srMTA0Pj4yXT0wO249aysxMDh8MDtjW24+PjJdPW0tYjtjW2srMTAwPj4yXT1tO209Qm4oayxmLC0xLC0xKXwwO2Y9STtrPWIrKChjW2w+PjJdfDApKyhjW24+PjJdfDApLShjW2srOD4+Ml18MCkpfDA7Yj1jW2c+PjJdfDA7aWYoKGJ8MCk9PTApe2NbZz4+Ml09an1pZigoa3wwKSE9KGR8MCkpe2NbZT4+Ml09NDtuPTA7aT1oO3JldHVybiBufDB9aWYoKGJ8MCk9PTM0fChmPj4+MD4wfChmfDApPT0wJm0+Pj4wPjY1NTM1KSl7Y1tlPj4yXT00O249LTE7aT1oO3JldHVybiBufDB9ZWxzZXtuPW0mNjU1MzU7aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTW0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDtmPTA7bT0wO0k9ZjtpPWg7cmV0dXJuIG18MH1nPWJiKCl8MDtqPWNbZz4+Ml18MDtjW2c+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbaz4+Ml09MDtsPWsrNHwwO2NbbD4+Ml09YjtjW2srNDQ+PjJdPWI7aWYoKGJ8MCk8MCl7Y1trKzg+PjJdPS0xO209LTF9ZWxzZXttPWIrMjE0NzQ4MzY0N3wwO2Nbays4Pj4yXT1tfWNbays3Nj4+Ml09LTE7Y1trKzEwND4+Ml09MDtuPWsrMTA4fDA7Y1tuPj4yXT1tLWI7Y1trKzEwMD4+Ml09bTttPUJuKGssZiwwLC0yMTQ3NDgzNjQ4KXwwO2Y9STtrPWIrKChjW2w+PjJdfDApKyhjW24+PjJdfDApLShjW2srOD4+Ml18MCkpfDA7Yj1jW2c+PjJdfDA7aWYoKGJ8MCk9PTApe2NbZz4+Ml09an1pZigoa3wwKSE9KGR8MCkpe2NbZT4+Ml09NDttPTA7bj0wO0k9bTtpPWg7cmV0dXJuIG58MH1pZigoYnwwKT09MzQpe2NbZT4+Ml09NDtuPShmfDApPjB8KGZ8MCk9PTAmbT4+PjA+MDtJPW4/MjE0NzQ4MzY0NzotMjE0NzQ4MzY0ODtpPWg7cmV0dXJuKG4/LTE6MCl8MH1lbHNle249bTtJPWY7aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTm0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsMCwtMjE0NzQ4MzY0OCl8MDtmPUk7az1iKygoY1tsPj4yXXwwKSsoY1tuPj4yXXwwKS0oY1trKzg+PjJdfDApKXwwO2I9Y1tnPj4yXXwwO2lmKChifDApPT0wKXtjW2c+PjJdPWp9aWYoKGt8MCkhPShkfDApKXtjW2U+PjJdPTQ7bj0wO2k9aDtyZXR1cm4gbnwwfWRve2lmKChifDApPT0zNCl7Y1tlPj4yXT00O2lmKChmfDApPjB8KGZ8MCk9PTAmbT4+PjA+MCl7bj0yMTQ3NDgzNjQ3O2k9aDtyZXR1cm4gbnwwfX1lbHNle2lmKChmfDApPC0xfChmfDApPT0tMSZtPj4+MDwyMTQ3NDgzNjQ4KXtjW2U+PjJdPTQ7YnJlYWt9aWYoKGZ8MCk+MHwoZnwwKT09MCZtPj4+MD4yMTQ3NDgzNjQ3KXtjW2U+PjJdPTQ7bj0yMTQ3NDgzNjQ3O2k9aDtyZXR1cm4gbnwwfWVsc2V7bj1tO2k9aDtyZXR1cm4gbnwwfX19d2hpbGUoMCk7bj0tMjE0NzQ4MzY0ODtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBPbShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7Yj1pO2lmKCEoKGFbMTg1MDg+PjBdJjEpPT0wKT8odj1jWzE4NTE2Pj4yXXwwLCh2fDApIT0wKTowKXt2bih2KX1pZighKChhWzE4NDk2Pj4wXSYxKT09MCk/KHU9Y1sxODUwND4+Ml18MCwodXwwKSE9MCk6MCl7dm4odSl9aWYoISgoYVsxODQ4ND4+MF0mMSk9PTApPyh0PWNbMTg0OTI+PjJdfDAsKHR8MCkhPTApOjApe3ZuKHQpfWlmKCEoKGFbMTg0NzI+PjBdJjEpPT0wKT8ocz1jWzE4NDgwPj4yXXwwLChzfDApIT0wKTowKXt2bihzKX1pZighKChhWzE4NDYwPj4wXSYxKT09MCk/KHI9Y1sxODQ2OD4+Ml18MCwocnwwKSE9MCk6MCl7dm4ocil9aWYoISgoYVsxODQ0OD4+MF0mMSk9PTApPyhkPWNbMTg0NTY+PjJdfDAsKGR8MCkhPTApOjApe3ZuKGQpfWlmKCEoKGFbMTg0MzY+PjBdJjEpPT0wKT8ocD1jWzE4NDQ0Pj4yXXwwLChwfDApIT0wKTowKXt2bihwKX1pZighKChhWzE4NDI0Pj4wXSYxKT09MCk/KG89Y1sxODQzMj4+Ml18MCwob3wwKSE9MCk6MCl7dm4obyl9aWYoISgoYVsxODQxMj4+MF0mMSk9PTApPyhuPWNbMTg0MjA+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbMTg0MDA+PjBdJjEpPT0wKT8obT1jWzE4NDA4Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZighKChhWzE4Mzg4Pj4wXSYxKT09MCk/KGw9Y1sxODM5Nj4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoISgoYVsxODM3Nj4+MF0mMSk9PTApPyhrPWNbMTgzODQ+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKCEoKGFbMTgzNjQ+PjBdJjEpPT0wKT8oaj1jWzE4MzcyPj4yXXwwLChqfDApIT0wKTowKXt2bihqKX1pZighKChhWzE4MzUyPj4wXSYxKT09MCk/KGg9Y1sxODM2MD4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9aWYoISgoYVsxODM0MD4+MF0mMSk9PTApPyhnPWNbMTgzNDg+PjJdfDAsKGd8MCkhPTApOjApe3ZuKGcpfWlmKCEoKGFbMTgzMjg+PjBdJjEpPT0wKT8oZj1jWzE4MzM2Pj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1pZighKChhWzE4MzE2Pj4wXSYxKT09MCk/KGU9Y1sxODMyND4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9aWYoISgoYVsxODMwND4+MF0mMSk9PTApPyhxPWNbMTgzMTI+PjJdfDAsKHF8MCkhPTApOjApe3ZuKHEpfWRve2lmKCEoKGFbMTgyOTI+PjBdJjEpPT0wKSl7ZD1jWzE4MzAwPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODI4MD4+MF0mMSk9PTApKXtkPWNbMTgyODg+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4MjY4Pj4wXSYxKT09MCkpe2Q9Y1sxODI3Nj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTgyNTY+PjBdJjEpPT0wKSl7ZD1jWzE4MjY0Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODI0ND4+MF0mMSk9PTApKXtkPWNbMTgyNTI+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtpZigoYVsxODIzMl0mMSk9PTApe2k9YjtyZXR1cm59ZD1jWzE4MjQwPj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gUG0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO2I9aTtpZighKChhWzE4ODM2Pj4wXSYxKT09MCk/KHY9Y1sxODg0ND4+Ml18MCwodnwwKSE9MCk6MCl7dm4odil9aWYoISgoYVsxODgyND4+MF0mMSk9PTApPyh1PWNbMTg4MzI+PjJdfDAsKHV8MCkhPTApOjApe3ZuKHUpfWlmKCEoKGFbMTg4MTI+PjBdJjEpPT0wKT8odD1jWzE4ODIwPj4yXXwwLCh0fDApIT0wKTowKXt2bih0KX1pZighKChhWzE4ODAwPj4wXSYxKT09MCk/KHM9Y1sxODgwOD4+Ml18MCwoc3wwKSE9MCk6MCl7dm4ocyl9aWYoISgoYVsxODc4OD4+MF0mMSk9PTApPyhyPWNbMTg3OTY+PjJdfDAsKHJ8MCkhPTApOjApe3ZuKHIpfWlmKCEoKGFbMTg3NzY+PjBdJjEpPT0wKT8oZD1jWzE4Nzg0Pj4yXXwwLChkfDApIT0wKTowKXt2bihkKX1pZighKChhWzE4NzY0Pj4wXSYxKT09MCk/KHA9Y1sxODc3Mj4+Ml18MCwocHwwKSE9MCk6MCl7dm4ocCl9aWYoISgoYVsxODc1Mj4+MF0mMSk9PTApPyhvPWNbMTg3NjA+PjJdfDAsKG98MCkhPTApOjApe3ZuKG8pfWlmKCEoKGFbMTg3NDA+PjBdJjEpPT0wKT8obj1jWzE4NzQ4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhWzE4NzI4Pj4wXSYxKT09MCk/KG09Y1sxODczNj4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoISgoYVsxODcxNj4+MF0mMSk9PTApPyhsPWNbMTg3MjQ+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKCEoKGFbMTg3MDQ+PjBdJjEpPT0wKT8oaz1jWzE4NzEyPj4yXXwwLChrfDApIT0wKTowKXt2bihrKX1pZighKChhWzE4NjkyPj4wXSYxKT09MCk/KGo9Y1sxODcwMD4+Ml18MCwoanwwKSE9MCk6MCl7dm4oail9aWYoISgoYVsxODY4MD4+MF0mMSk9PTApPyhoPWNbMTg2ODg+PjJdfDAsKGh8MCkhPTApOjApe3ZuKGgpfWlmKCEoKGFbMTg2Njg+PjBdJjEpPT0wKT8oZz1jWzE4Njc2Pj4yXXwwLChnfDApIT0wKTowKXt2bihnKX1pZighKChhWzE4NjU2Pj4wXSYxKT09MCk/KGY9Y1sxODY2ND4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9aWYoISgoYVsxODY0ND4+MF0mMSk9PTApPyhlPWNbMTg2NTI+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWlmKCEoKGFbMTg2MzI+PjBdJjEpPT0wKT8ocT1jWzE4NjQwPj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1kb3tpZighKChhWzE4NjIwPj4wXSYxKT09MCkpe2Q9Y1sxODYyOD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg2MDg+PjBdJjEpPT0wKSl7ZD1jWzE4NjE2Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODU5Nj4+MF0mMSk9PTApKXtkPWNbMTg2MDQ+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4NTg0Pj4wXSYxKT09MCkpe2Q9Y1sxODU5Mj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg1NzI+PjBdJjEpPT0wKSl7ZD1jWzE4NTgwPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7aWYoKGFbMTg1NjBdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1sxODU2OD4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFFtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDtiPWk7aWYoISgoYVsxOTE0OD4+MF0mMSk9PTApPyh2PWNbMTkxNTY+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbMTkxMzY+PjBdJjEpPT0wKT8odT1jWzE5MTQ0Pj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhWzE5MTI0Pj4wXSYxKT09MCk/KHQ9Y1sxOTEzMj4+Ml18MCwodHwwKSE9MCk6MCl7dm4odCl9aWYoISgoYVsxOTExMj4+MF0mMSk9PTApPyhzPWNbMTkxMjA+PjJdfDAsKHN8MCkhPTApOjApe3ZuKHMpfWlmKCEoKGFbMTkxMDA+PjBdJjEpPT0wKT8ocj1jWzE5MTA4Pj4yXXwwLChyfDApIT0wKTowKXt2bihyKX1pZighKChhWzE5MDg4Pj4wXSYxKT09MCk/KGQ9Y1sxOTA5Nj4+Ml18MCwoZHwwKSE9MCk6MCl7dm4oZCl9aWYoISgoYVsxOTA3Nj4+MF0mMSk9PTApPyhwPWNbMTkwODQ+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMTkwNjQ+PjBdJjEpPT0wKT8obz1jWzE5MDcyPj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzE5MDUyPj4wXSYxKT09MCk/KG49Y1sxOTA2MD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsxOTA0MD4+MF0mMSk9PTApPyhtPWNbMTkwNDg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMTkwMjg+PjBdJjEpPT0wKT8obD1jWzE5MDM2Pj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzE5MDE2Pj4wXSYxKT09MCk/KGs9Y1sxOTAyND4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsxOTAwND4+MF0mMSk9PTApPyhqPWNbMTkwMTI+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMTg5OTI+PjBdJjEpPT0wKT8oaD1jWzE5ZTM+PjJdfDAsKGh8MCkhPTApOjApe3ZuKGgpfWlmKCEoKGFbMTg5ODA+PjBdJjEpPT0wKT8oZz1jWzE4OTg4Pj4yXXwwLChnfDApIT0wKTowKXt2bihnKX1pZighKChhWzE4OTY4Pj4wXSYxKT09MCk/KGY9Y1sxODk3Nj4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9aWYoISgoYVsxODk1Nj4+MF0mMSk9PTApPyhlPWNbMTg5NjQ+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWlmKCEoKGFbMTg5NDQ+PjBdJjEpPT0wKT8ocT1jWzE4OTUyPj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1kb3tpZighKChhWzE4OTMyPj4wXSYxKT09MCkpe2Q9Y1sxODk0MD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg5MjA+PjBdJjEpPT0wKSl7ZD1jWzE4OTI4Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODkwOD4+MF0mMSk9PTApKXtkPWNbMTg5MTY+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4ODk2Pj4wXSYxKT09MCkpe2Q9Y1sxODkwND4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg4ODQ+PjBdJjEpPT0wKSl7ZD1jWzE4ODkyPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7aWYoKGFbMTg4NzJdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1sxODg4MD4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFJtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDtiPWk7aWYoISgoYVsxOTk4OD4+MF0mMSk9PTApPyh2PWNbMTk5OTY+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbMTk5NzY+PjBdJjEpPT0wKT8odT1jWzE5OTg0Pj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhWzE5OTY0Pj4wXSYxKT09MCk/KHQ9Y1sxOTk3Mj4+Ml18MCwodHwwKSE9MCk6MCl7dm4odCl9aWYoISgoYVsxOTk1Mj4+MF0mMSk9PTApPyhzPWNbMTk5NjA+PjJdfDAsKHN8MCkhPTApOjApe3ZuKHMpfWlmKCEoKGFbMTk5NDA+PjBdJjEpPT0wKT8ocj1jWzE5OTQ4Pj4yXXwwLChyfDApIT0wKTowKXt2bihyKX1pZighKChhWzE5OTI4Pj4wXSYxKT09MCk/KGQ9Y1sxOTkzNj4+Ml18MCwoZHwwKSE9MCk6MCl7dm4oZCl9aWYoISgoYVsxOTkxNj4+MF0mMSk9PTApPyhwPWNbMTk5MjQ+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMTk5MDQ+PjBdJjEpPT0wKT8obz1jWzE5OTEyPj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzE5ODkyPj4wXSYxKT09MCk/KG49Y1sxOTkwMD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsxOTg4MD4+MF0mMSk9PTApPyhtPWNbMTk4ODg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMTk4Njg+PjBdJjEpPT0wKT8obD1jWzE5ODc2Pj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzE5ODU2Pj4wXSYxKT09MCk/KGs9Y1sxOTg2ND4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsxOTg0ND4+MF0mMSk9PTApPyhqPWNbMTk4NTI+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMTk4MzI+PjBdJjEpPT0wKT8oaD1jWzE5ODQwPj4yXXwwLChofDApIT0wKTowKXt2bihoKX1pZighKChhWzE5ODIwPj4wXSYxKT09MCk/KGc9Y1sxOTgyOD4+Ml18MCwoZ3wwKSE9MCk6MCl7dm4oZyl9aWYoISgoYVsxOTgwOD4+MF0mMSk9PTApPyhmPWNbMTk4MTY+PjJdfDAsKGZ8MCkhPTApOjApe3ZuKGYpfWlmKCEoKGFbMTk3OTY+PjBdJjEpPT0wKT8oZT1jWzE5ODA0Pj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pZighKChhWzE5Nzg0Pj4wXSYxKT09MCk/KHE9Y1sxOTc5Mj4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9ZG97aWYoISgoYVsxOTc3Mj4+MF0mMSk9PTApKXtkPWNbMTk3ODA+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE5NzYwPj4wXSYxKT09MCkpe2Q9Y1sxOTc2OD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTk3NDg+PjBdJjEpPT0wKSl7ZD1jWzE5NzU2Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxOTczNj4+MF0mMSk9PTApKXtkPWNbMTk3NDQ+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE5NzI0Pj4wXSYxKT09MCkpe2Q9Y1sxOTczMj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2lmKChhWzE5NzEyXSYxKT09MCl7aT1iO3JldHVybn1kPWNbMTk3MjA+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59dm4oZCk7aT1iO3JldHVybn1mdW5jdGlvbiBTbShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO2I9aTtpZighKChhWzIwMzgwPj4wXSYxKT09MCk/KHE9Y1syMDM4OD4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9aWYoISgoYVsyMDM2OD4+MF0mMSk9PTApPyhwPWNbMjAzNzY+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMjAzNTY+PjBdJjEpPT0wKT8obz1jWzIwMzY0Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzIwMzQ0Pj4wXSYxKT09MCk/KG49Y1syMDM1Mj4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsyMDMzMj4+MF0mMSk9PTApPyhtPWNbMjAzNDA+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMjAzMjA+PjBdJjEpPT0wKT8oZD1jWzIwMzI4Pj4yXXwwLChkfDApIT0wKTowKXt2bihkKX1pZighKChhWzIwMzA4Pj4wXSYxKT09MCk/KGw9Y1syMDMxNj4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoISgoYVsyMDI5Nj4+MF0mMSk9PTApPyhrPWNbMjAzMDQ+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKCEoKGFbMjAyODQ+PjBdJjEpPT0wKT8oaj1jWzIwMjkyPj4yXXwwLChqfDApIT0wKTowKXt2bihqKX1pZighKChhWzIwMjcyPj4wXSYxKT09MCk/KGg9Y1syMDI4MD4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9aWYoISgoYVsyMDI2MD4+MF0mMSk9PTApPyhnPWNbMjAyNjg+PjJdfDAsKGd8MCkhPTApOjApe3ZuKGcpfWlmKCEoKGFbMjAyNDg+PjBdJjEpPT0wKT8oZj1jWzIwMjU2Pj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1pZighKChhWzIwMjM2Pj4wXSYxKT09MCk/KGU9Y1syMDI0ND4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9aWYoKGFbMjAyMjRdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1syMDIzMj4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFRtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7Yj1pO2lmKCEoKGFbMjA5MTY+PjBdJjEpPT0wKT8ocT1jWzIwOTI0Pj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1pZighKChhWzIwOTA0Pj4wXSYxKT09MCk/KHA9Y1syMDkxMj4+Ml18MCwocHwwKSE9MCk6MCl7dm4ocCl9aWYoISgoYVsyMDg5Mj4+MF0mMSk9PTApPyhvPWNbMjA5MDA+PjJdfDAsKG98MCkhPTApOjApe3ZuKG8pfWlmKCEoKGFbMjA4ODA+PjBdJjEpPT0wKT8obj1jWzIwODg4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhWzIwODY4Pj4wXSYxKT09MCk/KG09Y1syMDg3Nj4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoISgoYVsyMDg1Nj4+MF0mMSk9PTApPyhkPWNbMjA4NjQ+PjJdfDAsKGR8MCkhPTApOjApe3ZuKGQpfWlmKCEoKGFbMjA4NDQ+PjBdJjEpPT0wKT8obD1jWzIwODUyPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzIwODMyPj4wXSYxKT09MCk/KGs9Y1syMDg0MD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsyMDgyMD4+MF0mMSk9PTApPyhqPWNbMjA4Mjg+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMjA4MDg+PjBdJjEpPT0wKT8oaD1jWzIwODE2Pj4yXXwwLChofDApIT0wKTowKXt2bihoKX1pZighKChhWzIwNzk2Pj4wXSYxKT09MCk/KGc9Y1syMDgwND4+Ml18MCwoZ3wwKSE9MCk6MCl7dm4oZyl9aWYoISgoYVsyMDc4ND4+MF0mMSk9PTApPyhmPWNbMjA3OTI+PjJdfDAsKGZ8MCkhPTApOjApe3ZuKGYpfWlmKCEoKGFbMjA3NzI+PjBdJjEpPT0wKT8oZT1jWzIwNzgwPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pZigoYVsyMDc2MF0mMSk9PTApe2k9YjtyZXR1cm59ZD1jWzIwNzY4Pj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gVW0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7Zz1pO2k9aSsxNnwwO2g9ZztjW2g+PjJdPWI7Zj0oZnwwKT09MD8yMTI4ODpmO2o9Y1tmPj4yXXwwO2E6ZG97aWYoKGR8MCk9PTApe2lmKChqfDApPT0wKXtrPTA7aT1nO3JldHVybiBrfDB9fWVsc2V7aWYoKGJ8MCk9PTApe2NbaD4+Ml09aH1lbHNle2g9Yn1pZigoZXwwKT09MCl7az0tMjtpPWc7cmV0dXJuIGt8MH1kb3tpZigoanwwKT09MCl7Yj1hW2Q+PjBdfDA7aj1iJjI1NTtpZihiPDwyND4+MjQ+LTEpe2NbaD4+Ml09ajtrPWI8PDI0Pj4yNCE9MCYxO2k9ZztyZXR1cm4ga3wwfWVsc2V7aj1qKyAtMTk0fDA7aWYoaj4+PjA+NTApe2JyZWFrIGF9Yj1lKyAtMXwwO2o9Y1syMTA3Misoajw8Mik+PjJdfDA7ZD1kKzF8MDticmVha319ZWxzZXtiPWV9fXdoaWxlKDApO2I6ZG97aWYoKGJ8MCkhPTApe2s9YVtkPj4wXXwwO2w9KGsmMjU1KT4+PjM7aWYoKGwrIC0xNnxsKyhqPj4yNikpPj4+MD43KXticmVhayBhfXdoaWxlKDEpe2Q9ZCsxfDA7aj0oayYyNTUpKyAtMTI4fGo8PDY7Yj1iKyAtMXwwO2lmKChqfDApPj0wKXticmVha31pZigoYnwwKT09MCl7YnJlYWsgYn1rPWFbZD4+MF18MDtpZigoKGsmMjU1KSsgLTEyOHwwKT4+PjA+NjMpe2JyZWFrIGF9fWNbZj4+Ml09MDtjW2g+PjJdPWo7bD1lLWJ8MDtpPWc7cmV0dXJuIGx8MH19d2hpbGUoMCk7Y1tmPj4yXT1qO2w9LTI7aT1nO3JldHVybiBsfDB9fXdoaWxlKDApO2NbZj4+Ml09MDtjWyhiYigpfDApPj4yXT04NDtsPS0xO2k9ZztyZXR1cm4gbHwwfWZ1bmN0aW9uIFZtKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO2g9aTtrPWNbZT4+Ml18MDtpZigoZ3wwKSE9MD8obD1jW2c+PjJdfDAsKGx8MCkhPTApOjApe2lmKChifDApPT0wKXtqPWY7Zz0xNn1lbHNle2NbZz4+Ml09MDtqPWY7Zz0zNX19ZWxzZXtpZigoYnwwKT09MCl7aj1mO2c9N31lbHNle2o9ZjtnPTZ9fWE6d2hpbGUoMSl7aWYoKGd8MCk9PTYpe2lmKChqfDApPT0wKXtnPTUzO2JyZWFrfXdoaWxlKDEpe2c9YVtrPj4wXXwwO2I6ZG97aWYoKChnJjI1NSkrIC0xfDApPj4+MDwxMjc/KGsmM3wwKT09MCZqPj4+MD4zOjApe2Rve2c9Y1trPj4yXXwwO2lmKCgoZysgLTE2ODQzMDA5fGcpJi0yMTM5MDYyMTQ0fDApIT0wKXtnPWcmMjU1O2JyZWFrIGJ9Y1tiPj4yXT1nJjI1NTtjW2IrND4+Ml09ZFtrKzE+PjBdfDA7Y1tiKzg+PjJdPWRbaysyPj4wXXwwO2w9aztrPWsrNHwwO209YjtiPWIrMTZ8MDtjW20rMTI+PjJdPWRbbCszPj4wXXwwO2o9aisgLTR8MH13aGlsZShqPj4+MD4zKTtnPWFbaz4+MF18MH19d2hpbGUoMCk7bD1nJjI1NTtpZighKChsKyAtMXwwKT4+PjA8MTI3KSl7YnJlYWt9Y1tiPj4yXT1sO2o9aisgLTF8MDtpZigoanwwKT09MCl7Zz01MzticmVhayBhfWVsc2V7Yj1iKzR8MDtrPWsrMXwwfX1sPWwrIC0xOTR8MDtpZihsPj4+MD41MCl7bD1nO2c9NDc7YnJlYWt9bD1jWzIxMDcyKyhsPDwyKT4+Ml18MDtrPWsrMXwwO2c9MzU7Y29udGludWV9ZWxzZSBpZigoZ3wwKT09Nyl7bD1hW2s+PjBdfDA7aWYoKChsJjI1NSkrIC0xfDApPj4+MDwxMjc/KGsmM3wwKT09MDowKXtsPWNbaz4+Ml18MDtpZigoKGwrIC0xNjg0MzAwOXxsKSYtMjEzOTA2MjE0NHwwKT09MCl7ZG97az1rKzR8MDtqPWorIC00fDA7bD1jW2s+PjJdfDB9d2hpbGUoKChsKyAtMTY4NDMwMDl8bCkmLTIxMzkwNjIxNDR8MCk9PTApfWc9bCYyNTU7bD1sJjI1NX1lbHNle2c9bH1sPWwmMjU1O2lmKChsKyAtMXwwKT4+PjA8MTI3KXtqPWorIC0xfDA7az1rKzF8MDtnPTc7Y29udGludWV9bD1sKyAtMTk0fDA7aWYobD4+PjA+NTApe2w9ZztnPTQ3O2JyZWFrfWw9Y1syMTA3MisobDw8Mik+PjJdfDA7az1rKzF8MDtnPTE2O2NvbnRpbnVlfWVsc2UgaWYoKGd8MCk9PTE2KXttPShkW2s+PjBdfDApPj4+MztpZigobSsgLTE2fG0rKGw+PjI2KSk+Pj4wPjcpe2c9MTc7YnJlYWt9Zz1rKzF8MDtpZigobCYzMzU1NDQzMnwwKSE9MCl7aWYoKChkW2c+PjBdfDApKyAtMTI4fDApPj4+MD42Myl7Zz0yMDticmVha31nPWsrMnwwO2lmKChsJjUyNDI4OHwwKT09MCl7az1nfWVsc2V7aWYoKChkW2c+PjBdfDApKyAtMTI4fDApPj4+MD42Myl7Zz0yMzticmVha31rPWsrM3wwfX1lbHNle2s9Z31qPWorIC0xfDA7Zz03O2NvbnRpbnVlfWVsc2UgaWYoKGd8MCk9PTM1KXttPWRbaz4+MF18MDtnPW0+Pj4zO2lmKChnKyAtMTZ8ZysobD4+MjYpKT4+PjA+Nyl7Zz0zNjticmVha31nPWsrMXwwO2w9bSsgLTEyOHxsPDw2O2lmKChsfDApPDApe209KGRbZz4+MF18MCkrIC0xMjh8MDtpZihtPj4+MD42Myl7Zz0zOTticmVha31nPWsrMnwwO2w9bXxsPDw2O2lmKChsfDApPDApe2c9KGRbZz4+MF18MCkrIC0xMjh8MDtpZihnPj4+MD42Myl7Zz00MjticmVha31sPWd8bDw8NjtrPWsrM3wwfWVsc2V7az1nfX1lbHNle2s9Z31jW2I+PjJdPWw7Yj1iKzR8MDtqPWorIC0xfDA7Zz02O2NvbnRpbnVlfX1pZigoZ3wwKT09MTcpe2s9aysgLTF8MDtnPTQ1fWVsc2UgaWYoKGd8MCk9PTIwKXtrPWsrIC0xfDA7Zz00NX1lbHNlIGlmKChnfDApPT0yMyl7az1rKyAtMXwwO2c9NDV9ZWxzZSBpZigoZ3wwKT09MzYpe2s9aysgLTF8MDtnPTQ1fWVsc2UgaWYoKGd8MCk9PTM5KXtrPWsrIC0xfDA7Zz00NX1lbHNlIGlmKChnfDApPT00Mil7az1rKyAtMXwwO2c9NDV9ZWxzZSBpZigoZ3wwKT09NTMpe2k9aDtyZXR1cm4gZnwwfWlmKChnfDApPT00NSl7aWYoKGx8MCk9PTApe2w9YVtrPj4wXXwwO2c9NDd9fWlmKChnfDApPT00Nyl7aWYobDw8MjQ+PjI0PT0wKXtpZigoYnwwKSE9MCl7Y1tiPj4yXT0wO2NbZT4+Ml09MH1tPWYtanwwO2k9aDtyZXR1cm4gbXwwfX1jWyhiYigpfDApPj4yXT04NDtpZigoYnwwKT09MCl7bT0tMTtpPWg7cmV0dXJuIG18MH1jW2U+PjJdPWs7bT0tMTtpPWg7cmV0dXJuIG18MH1mdW5jdGlvbiBXbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT1pO2lmKChifDApPT0wKXtiPTE7aT1lO3JldHVybiBifDB9aWYoZD4+PjA8MTI4KXthW2I+PjBdPWQ7Yj0xO2k9ZTtyZXR1cm4gYnwwfWlmKGQ+Pj4wPDIwNDgpe2FbYj4+MF09ZD4+PjZ8MTkyO2FbYisxPj4wXT1kJjYzfDEyODtiPTI7aT1lO3JldHVybiBifDB9aWYoZD4+PjA8NTUyOTZ8KGQrIC01NzM0NHwwKT4+PjA8ODE5Mil7YVtiPj4wXT1kPj4+MTJ8MjI0O2FbYisxPj4wXT1kPj4+NiY2M3wxMjg7YVtiKzI+PjBdPWQmNjN8MTI4O2I9MztpPWU7cmV0dXJuIGJ8MH1pZigoZCsgLTY1NTM2fDApPj4+MDwxMDQ4NTc2KXthW2I+PjBdPWQ+Pj4xOHwyNDA7YVtiKzE+PjBdPWQ+Pj4xMiY2M3wxMjg7YVtiKzI+PjBdPWQ+Pj42JjYzfDEyODthW2IrMz4+MF09ZCY2M3wxMjg7Yj00O2k9ZTtyZXR1cm4gYnwwfWVsc2V7Y1soYmIoKXwwKT4+Ml09ODQ7Yj0tMTtpPWU7cmV0dXJuIGJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBYbShhKXthPWF8MDt2YXIgYj0wO2I9aTtSYihhfDApO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFltKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBabShhKXthPWF8MDtyZXR1cm4gMjEzMjB9ZnVuY3Rpb24gX20oYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uICRtKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBhbihhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gYm4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gY24oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZG4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZW4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZm4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZ24oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybihhfDApPT0oYnwwKXwwfWZ1bmN0aW9uIGhuKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrNjR8MDtmPWU7aWYoKGF8MCk9PShifDApKXtoPTE7aT1lO3JldHVybiBofDB9aWYoKGJ8MCk9PTApe2g9MDtpPWU7cmV0dXJuIGh8MH1iPW5uKGIsMjE0ODgpfDA7aWYoKGJ8MCk9PTApe2g9MDtpPWU7cmV0dXJuIGh8MH1oPWYrMHwwO2c9aCs1NnwwO2Rve2NbaD4+Ml09MDtoPWgrNHwwfXdoaWxlKChofDApPChnfDApKTtjW2Y+PjJdPWI7Y1tmKzg+PjJdPWE7Y1tmKzEyPj4yXT0tMTtjW2YrNDg+PjJdPTE7emNbY1soY1tiPj4yXXwwKSsyOD4+Ml0mMzFdKGIsZixjW2Q+PjJdfDAsMSk7aWYoKGNbZisyND4+Ml18MCkhPTEpe2g9MDtpPWU7cmV0dXJuIGh8MH1jW2Q+PjJdPWNbZisxNj4+Ml07aD0xO2k9ZTtyZXR1cm4gaHwwfWZ1bmN0aW9uIGpuKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wO2c9aTtpZigoY1tkKzg+PjJdfDApIT0oYnwwKSl7aT1nO3JldHVybn1iPWQrMTZ8MDtoPWNbYj4+Ml18MDtpZigoaHwwKT09MCl7Y1tiPj4yXT1lO2NbZCsyND4+Ml09ZjtjW2QrMzY+PjJdPTE7aT1nO3JldHVybn1pZigoaHwwKSE9KGV8MCkpe2g9ZCszNnwwO2NbaD4+Ml09KGNbaD4+Ml18MCkrMTtjW2QrMjQ+PjJdPTI7YVtkKzU0Pj4wXT0xO2k9ZztyZXR1cm59ZT1kKzI0fDA7aWYoKGNbZT4+Ml18MCkhPTIpe2k9ZztyZXR1cm59Y1tlPj4yXT1mO2k9ZztyZXR1cm59ZnVuY3Rpb24ga24oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTA7Zz1pO2lmKChifDApIT0oY1tkKzg+PjJdfDApKXtoPWNbYis4Pj4yXXwwO3pjW2NbKGNbaD4+Ml18MCkrMjg+PjJdJjMxXShoLGQsZSxmKTtpPWc7cmV0dXJufWI9ZCsxNnwwO2g9Y1tiPj4yXXwwO2lmKChofDApPT0wKXtjW2I+PjJdPWU7Y1tkKzI0Pj4yXT1mO2NbZCszNj4+Ml09MTtpPWc7cmV0dXJufWlmKChofDApIT0oZXwwKSl7aD1kKzM2fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2NbZCsyND4+Ml09MjthW2QrNTQ+PjBdPTE7aT1nO3JldHVybn1lPWQrMjR8MDtpZigoY1tlPj4yXXwwKSE9Mil7aT1nO3JldHVybn1jW2U+PjJdPWY7aT1nO3JldHVybn1mdW5jdGlvbiBsbihiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2lmKChifDApPT0oY1tkKzg+PjJdfDApKXtiPWQrMTZ8MDtoPWNbYj4+Ml18MDtpZigoaHwwKT09MCl7Y1tiPj4yXT1lO2NbZCsyND4+Ml09ZjtjW2QrMzY+PjJdPTE7aT1nO3JldHVybn1pZigoaHwwKSE9KGV8MCkpe2w9ZCszNnwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtjW2QrMjQ+PjJdPTI7YVtkKzU0Pj4wXT0xO2k9ZztyZXR1cm59ZT1kKzI0fDA7aWYoKGNbZT4+Ml18MCkhPTIpe2k9ZztyZXR1cm59Y1tlPj4yXT1mO2k9ZztyZXR1cm59aj1jW2IrMTI+PjJdfDA7aD1iKyhqPDwzKSsxNnwwO2s9Y1tiKzIwPj4yXXwwO2w9az4+ODtpZigoayYxfDApIT0wKXtsPWNbKGNbZT4+Ml18MCkrbD4+Ml18MH1tPWNbYisxNj4+Ml18MDt6Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSYzMV0obSxkLGUrbHwwLChrJjJ8MCkhPTA/ZjoyKTtpZigoanwwKTw9MSl7aT1nO3JldHVybn1qPWQrNTR8MDtrPWIrMjR8MDt3aGlsZSgxKXtiPWNbays0Pj4yXXwwO2w9Yj4+ODtpZigoYiYxfDApIT0wKXtsPWNbKGNbZT4+Ml18MCkrbD4+Ml18MH1tPWNbaz4+Ml18MDt6Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSYzMV0obSxkLGUrbHwwLChiJjJ8MCkhPTA/ZjoyKTtpZigoYVtqPj4wXXwwKSE9MCl7Zj0xNjticmVha31rPWsrOHwwO2lmKCEoaz4+PjA8aD4+PjApKXtmPTE2O2JyZWFrfX1pZigoZnwwKT09MTYpe2k9ZztyZXR1cm59fWZ1bmN0aW9uIG1uKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2k9aSs2NHwwO2g9ZTtjW2Q+PjJdPWNbY1tkPj4yXT4+Ml07aWYoISgoYXwwKT09KGJ8MCl8KGJ8MCk9PTIxNzkyKSl7aWYoKChifDApIT0wPyhrPW5uKGIsMjE2MDApfDAsKGt8MCkhPTApOjApPyhjW2srOD4+Ml0mfmNbYSs4Pj4yXXwwKT09MDowKXtiPWNbYSsxMj4+Ml18MDtrPWsrMTJ8MDtpZighKChifDApPT0yMTc3Nj8xOihifDApPT0oY1trPj4yXXwwKSkpe2lmKCgoKGJ8MCkhPTA/KGc9bm4oYiwyMTQ4OCl8MCwoZ3wwKSE9MCk6MCk/KGo9Y1trPj4yXXwwLChqfDApIT0wKTowKT8oZj1ubihqLDIxNDg4KXwwLChmfDApIT0wKTowKXtrPWgrMHwwO2o9ays1NnwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChqfDApKTtjW2g+PjJdPWY7Y1toKzg+PjJdPWc7Y1toKzEyPj4yXT0tMTtjW2grNDg+PjJdPTE7emNbY1soY1tmPj4yXXwwKSsyOD4+Ml0mMzFdKGYsaCxjW2Q+PjJdfDAsMSk7aWYoKGNbaCsyND4+Ml18MCk9PTEpe2NbZD4+Ml09Y1toKzE2Pj4yXTtkPTF9ZWxzZXtkPTB9fWVsc2V7ZD0wfX1lbHNle2Q9MX19ZWxzZXtkPTB9fWVsc2V7ZD0xfWk9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIG5uKGQsZSl7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO2Y9aTtpPWkrNjR8MDttPWY7Zz1jW2Q+PjJdfDA7aD1kKyhjW2crIC04Pj4yXXwwKXwwO2c9Y1tnKyAtND4+Ml18MDtjW20+PjJdPWU7Y1ttKzQ+PjJdPWQ7Y1ttKzg+PjJdPTIxNDMyO3A9bSsxMnwwO249bSsxNnwwO289bSsyMHwwO2o9bSsyNHwwO2Q9bSsyOHwwO2s9bSszMnwwO2w9bSs0MHwwO3I9KGd8MCk9PShlfDApO2U9cCswfDA7cT1lKzQwfDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KHF8MCkpO2JbcCs0MD4+MV09MDthW3ArNDI+PjBdPTA7ZG97aWYocil7Y1ttKzQ4Pj4yXT0xO3djW2NbKGNbZz4+Ml18MCkrMjA+PjJdJjYzXShnLG0saCxoLDEsMCk7ZD0oY1tqPj4yXXwwKT09MT9oOjB9ZWxzZXtqY1tjWyhjW2c+PjJdfDApKzI0Pj4yXSYzMV0oZyxtLGgsMSwwKTtnPWNbbSszNj4+Ml18MDtpZigoZ3wwKT09MCl7aWYoKGNbbD4+Ml18MCkhPTEpe2Q9MDticmVha31pZigoY1tkPj4yXXwwKSE9MSl7ZD0wO2JyZWFrfWQ9KGNbaz4+Ml18MCk9PTE/Y1tvPj4yXXwwOjA7YnJlYWt9ZWxzZSBpZigoZ3wwKSE9MSl7ZD0wO2JyZWFrfWlmKChjW2o+PjJdfDApIT0xKXtpZigoY1tsPj4yXXwwKSE9MCl7ZD0wO2JyZWFrfWlmKChjW2Q+PjJdfDApIT0xKXtkPTA7YnJlYWt9aWYoKGNbaz4+Ml18MCkhPTEpe2Q9MDticmVha319ZD1jW24+PjJdfDB9fXdoaWxlKDApO2k9ZjtyZXR1cm4gZHwwfWZ1bmN0aW9uIG9uKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtoPWk7aWYoKGJ8MCk9PShjW2QrOD4+Ml18MCkpe2lmKChjW2QrND4+Ml18MCkhPShlfDApKXtpPWg7cmV0dXJufWU9ZCsyOHwwO2lmKChjW2U+PjJdfDApPT0xKXtpPWg7cmV0dXJufWNbZT4+Ml09ZjtpPWg7cmV0dXJufWlmKChifDApPT0oY1tkPj4yXXwwKSl7aWYoKGNbZCsxNj4+Ml18MCkhPShlfDApPyhsPWQrMjB8MCwoY1tsPj4yXXwwKSE9KGV8MCkpOjApe2NbZCszMj4+Ml09ZjtrPWQrNDR8MDtpZigoY1trPj4yXXwwKT09NCl7aT1oO3JldHVybn13PWNbYisxMj4+Ml18MDtwPWIrKHc8PDMpKzE2fDA7YTpkb3tpZigod3wwKT4wKXtuPWQrNTJ8MDtxPWQrNTN8MDtvPWQrNTR8MDt0PWIrOHwwO3I9ZCsyNHwwO3U9MDtzPTA7Yj1iKzE2fDA7Yjpkb3thW24+PjBdPTA7YVtxPj4wXT0wO3Y9Y1tiKzQ+PjJdfDA7dz12Pj44O2lmKCh2JjF8MCkhPTApe3c9Y1soY1tlPj4yXXwwKSt3Pj4yXXwwfXg9Y1tiPj4yXXwwO3djW2NbKGNbeD4+Ml18MCkrMjA+PjJdJjYzXSh4LGQsZSxlK3d8MCwyLSh2Pj4+MSYxKXwwLGcpO2lmKChhW28+PjBdfDApIT0wKXticmVha31kb3tpZigoYVtxPj4wXXwwKSE9MCl7aWYoKGFbbj4+MF18MCk9PTApe2lmKChjW3Q+PjJdJjF8MCk9PTApe3M9MTticmVhayBifWVsc2V7cz0xO2JyZWFrfX1pZigoY1tyPj4yXXwwKT09MSl7Yj0yNzticmVhayBhfWlmKChjW3Q+PjJdJjJ8MCk9PTApe2I9Mjc7YnJlYWsgYX1lbHNle3U9MTtzPTF9fX13aGlsZSgwKTtiPWIrOHwwfXdoaWxlKGI+Pj4wPHA+Pj4wKTtpZih1KXtqPXM7Yj0yNn1lbHNle209cztiPTIzfX1lbHNle209MDtiPTIzfX13aGlsZSgwKTtpZigoYnwwKT09MjMpe2NbbD4+Ml09ZTt4PWQrNDB8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoKGNbZCszNj4+Ml18MCk9PTE/KGNbZCsyND4+Ml18MCk9PTI6MCl7YVtkKzU0Pj4wXT0xO2lmKG0pe2I9Mjd9ZWxzZXtiPTI4fX1lbHNle2o9bTtiPTI2fX1pZigoYnwwKT09MjYpe2lmKGope2I9Mjd9ZWxzZXtiPTI4fX1pZigoYnwwKT09Mjcpe2Nbaz4+Ml09MztpPWg7cmV0dXJufWVsc2UgaWYoKGJ8MCk9PTI4KXtjW2s+PjJdPTQ7aT1oO3JldHVybn19aWYoKGZ8MCkhPTEpe2k9aDtyZXR1cm59Y1tkKzMyPj4yXT0xO2k9aDtyZXR1cm59bT1jW2IrMTI+PjJdfDA7aj1iKyhtPDwzKSsxNnwwO2w9Y1tiKzIwPj4yXXwwO249bD4+ODtpZigobCYxfDApIT0wKXtuPWNbKGNbZT4+Ml18MCkrbj4+Ml18MH14PWNbYisxNj4+Ml18MDtqY1tjWyhjW3g+PjJdfDApKzI0Pj4yXSYzMV0oeCxkLGUrbnwwLChsJjJ8MCkhPTA/ZjoyLGcpO2w9YisyNHwwO2lmKChtfDApPD0xKXtpPWg7cmV0dXJufW09Y1tiKzg+PjJdfDA7aWYoKG0mMnwwKT09MD8oaz1kKzM2fDAsKGNbaz4+Ml18MCkhPTEpOjApe2lmKChtJjF8MCk9PTApe209ZCs1NHwwO2I9bDt3aGlsZSgxKXtpZigoYVttPj4wXXwwKSE9MCl7Yj01MzticmVha31pZigoY1trPj4yXXwwKT09MSl7Yj01MzticmVha31uPWNbYis0Pj4yXXwwO289bj4+ODtpZigobiYxfDApIT0wKXtvPWNbKGNbZT4+Ml18MCkrbz4+Ml18MH14PWNbYj4+Ml18MDtqY1tjWyhjW3g+PjJdfDApKzI0Pj4yXSYzMV0oeCxkLGUrb3wwLChuJjJ8MCkhPTA/ZjoyLGcpO2I9Yis4fDA7aWYoIShiPj4+MDxqPj4+MCkpe2I9NTM7YnJlYWt9fWlmKChifDApPT01Myl7aT1oO3JldHVybn19bj1kKzI0fDA7bz1kKzU0fDA7Yj1sO3doaWxlKDEpe2lmKChhW28+PjBdfDApIT0wKXtiPTUzO2JyZWFrfWlmKChjW2s+PjJdfDApPT0xPyhjW24+PjJdfDApPT0xOjApe2I9NTM7YnJlYWt9bT1jW2IrND4+Ml18MDtwPW0+Pjg7aWYoKG0mMXwwKSE9MCl7cD1jWyhjW2U+PjJdfDApK3A+PjJdfDB9eD1jW2I+PjJdfDA7amNbY1soY1t4Pj4yXXwwKSsyND4+Ml0mMzFdKHgsZCxlK3B8MCwobSYyfDApIT0wP2Y6MixnKTtiPWIrOHwwO2lmKCEoYj4+PjA8aj4+PjApKXtiPTUzO2JyZWFrfX1pZigoYnwwKT09NTMpe2k9aDtyZXR1cm59fWs9ZCs1NHwwO3doaWxlKDEpe2lmKChhW2s+PjBdfDApIT0wKXtiPTUzO2JyZWFrfW09Y1tsKzQ+PjJdfDA7Yj1tPj44O2lmKChtJjF8MCkhPTApe2I9Y1soY1tlPj4yXXwwKStiPj4yXXwwfXg9Y1tsPj4yXXwwO2pjW2NbKGNbeD4+Ml18MCkrMjQ+PjJdJjMxXSh4LGQsZStifDAsKG0mMnwwKSE9MD9mOjIsZyk7bD1sKzh8MDtpZighKGw+Pj4wPGo+Pj4wKSl7Yj01MzticmVha319aWYoKGJ8MCk9PTUzKXtpPWg7cmV0dXJufX1mdW5jdGlvbiBwbihiLGQsZSxmLGcpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO2g9aTtpZigoYnwwKT09KGNbZCs4Pj4yXXwwKSl7aWYoKGNbZCs0Pj4yXXwwKSE9KGV8MCkpe2k9aDtyZXR1cm59aj1kKzI4fDA7aWYoKGNbaj4+Ml18MCk9PTEpe2k9aDtyZXR1cm59Y1tqPj4yXT1mO2k9aDtyZXR1cm59aWYoKGJ8MCkhPShjW2Q+PjJdfDApKXtsPWNbYis4Pj4yXXwwO2pjW2NbKGNbbD4+Ml18MCkrMjQ+PjJdJjMxXShsLGQsZSxmLGcpO2k9aDtyZXR1cm59aWYoKGNbZCsxNj4+Ml18MCkhPShlfDApPyhrPWQrMjB8MCwoY1trPj4yXXwwKSE9KGV8MCkpOjApe2NbZCszMj4+Ml09ZjtmPWQrNDR8MDtpZigoY1tmPj4yXXwwKT09NCl7aT1oO3JldHVybn1sPWQrNTJ8MDthW2w+PjBdPTA7bT1kKzUzfDA7YVttPj4wXT0wO2I9Y1tiKzg+PjJdfDA7d2NbY1soY1tiPj4yXXwwKSsyMD4+Ml0mNjNdKGIsZCxlLGUsMSxnKTtpZigoYVttPj4wXXwwKSE9MCl7aWYoKGFbbD4+MF18MCk9PTApe2I9MTtqPTEzfX1lbHNle2I9MDtqPTEzfWRve2lmKChqfDApPT0xMyl7Y1trPj4yXT1lO209ZCs0MHwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtpZigoY1tkKzM2Pj4yXXwwKT09MT8oY1tkKzI0Pj4yXXwwKT09MjowKXthW2QrNTQ+PjBdPTE7aWYoYil7YnJlYWt9fWVsc2V7aj0xNn1pZigoanwwKT09MTY/YjowKXticmVha31jW2Y+PjJdPTQ7aT1oO3JldHVybn19d2hpbGUoMCk7Y1tmPj4yXT0zO2k9aDtyZXR1cm59aWYoKGZ8MCkhPTEpe2k9aDtyZXR1cm59Y1tkKzMyPj4yXT0xO2k9aDtyZXR1cm59ZnVuY3Rpb24gcW4oYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wO2c9aTtpZigoY1tkKzg+PjJdfDApPT0oYnwwKSl7aWYoKGNbZCs0Pj4yXXwwKSE9KGV8MCkpe2k9ZztyZXR1cm59ZD1kKzI4fDA7aWYoKGNbZD4+Ml18MCk9PTEpe2k9ZztyZXR1cm59Y1tkPj4yXT1mO2k9ZztyZXR1cm59aWYoKGNbZD4+Ml18MCkhPShifDApKXtpPWc7cmV0dXJufWlmKChjW2QrMTY+PjJdfDApIT0oZXwwKT8oaD1kKzIwfDAsKGNbaD4+Ml18MCkhPShlfDApKTowKXtjW2QrMzI+PjJdPWY7Y1toPj4yXT1lO2I9ZCs0MHwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrMTtpZigoY1tkKzM2Pj4yXXwwKT09MT8oY1tkKzI0Pj4yXXwwKT09MjowKXthW2QrNTQ+PjBdPTF9Y1tkKzQ0Pj4yXT00O2k9ZztyZXR1cm59aWYoKGZ8MCkhPTEpe2k9ZztyZXR1cm59Y1tkKzMyPj4yXT0xO2k9ZztyZXR1cm59ZnVuY3Rpb24gcm4oYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtqPWk7aWYoKGJ8MCkhPShjW2QrOD4+Ml18MCkpe209ZCs1MnwwO2w9YVttPj4wXXwwO289ZCs1M3wwO249YVtvPj4wXXwwO3E9Y1tiKzEyPj4yXXwwO2s9YisocTw8MykrMTZ8MDthW20+PjBdPTA7YVtvPj4wXT0wO3A9Y1tiKzIwPj4yXXwwO3I9cD4+ODtpZigocCYxfDApIT0wKXtyPWNbKGNbZj4+Ml18MCkrcj4+Ml18MH10PWNbYisxNj4+Ml18MDt3Y1tjWyhjW3Q+PjJdfDApKzIwPj4yXSY2M10odCxkLGUsZityfDAsKHAmMnwwKSE9MD9nOjIsaCk7YTpkb3tpZigocXwwKT4xKXtxPWQrMjR8MDtwPWIrOHwwO3I9ZCs1NHwwO2I9YisyNHwwO2Rve2lmKChhW3I+PjBdfDApIT0wKXticmVhayBhfWlmKChhW20+PjBdfDApPT0wKXtpZigoYVtvPj4wXXwwKSE9MD8oY1twPj4yXSYxfDApPT0wOjApe2JyZWFrIGF9fWVsc2V7aWYoKGNbcT4+Ml18MCk9PTEpe2JyZWFrIGF9aWYoKGNbcD4+Ml0mMnwwKT09MCl7YnJlYWsgYX19YVttPj4wXT0wO2Fbbz4+MF09MDtzPWNbYis0Pj4yXXwwO3Q9cz4+ODtpZigocyYxfDApIT0wKXt0PWNbKGNbZj4+Ml18MCkrdD4+Ml18MH11PWNbYj4+Ml18MDt3Y1tjWyhjW3U+PjJdfDApKzIwPj4yXSY2M10odSxkLGUsZit0fDAsKHMmMnwwKSE9MD9nOjIsaCk7Yj1iKzh8MH13aGlsZShiPj4+MDxrPj4+MCl9fXdoaWxlKDApO2FbbT4+MF09bDthW28+PjBdPW47aT1qO3JldHVybn1hW2QrNTM+PjBdPTE7aWYoKGNbZCs0Pj4yXXwwKSE9KGZ8MCkpe2k9ajtyZXR1cm59YVtkKzUyPj4wXT0xO2s9ZCsxNnwwO2Y9Y1trPj4yXXwwO2lmKChmfDApPT0wKXtjW2s+PjJdPWU7Y1tkKzI0Pj4yXT1nO2NbZCszNj4+Ml09MTtpZighKChnfDApPT0xPyhjW2QrNDg+PjJdfDApPT0xOjApKXtpPWo7cmV0dXJufWFbZCs1ND4+MF09MTtpPWo7cmV0dXJufWlmKChmfDApIT0oZXwwKSl7dT1kKzM2fDA7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxO2FbZCs1ND4+MF09MTtpPWo7cmV0dXJufWU9ZCsyNHwwO2s9Y1tlPj4yXXwwO2lmKChrfDApPT0yKXtjW2U+PjJdPWd9ZWxzZXtnPWt9aWYoISgoZ3wwKT09MT8oY1tkKzQ4Pj4yXXwwKT09MTowKSl7aT1qO3JldHVybn1hW2QrNTQ+PjBdPTE7aT1qO3JldHVybn1mdW5jdGlvbiBzbihiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MDtqPWk7aWYoKGJ8MCkhPShjW2QrOD4+Ml18MCkpe2I9Y1tiKzg+PjJdfDA7d2NbY1soY1tiPj4yXXwwKSsyMD4+Ml0mNjNdKGIsZCxlLGYsZyxoKTtpPWo7cmV0dXJufWFbZCs1Mz4+MF09MTtpZigoY1tkKzQ+PjJdfDApIT0oZnwwKSl7aT1qO3JldHVybn1hW2QrNTI+PjBdPTE7Yj1kKzE2fDA7Zj1jW2I+PjJdfDA7aWYoKGZ8MCk9PTApe2NbYj4+Ml09ZTtjW2QrMjQ+PjJdPWc7Y1tkKzM2Pj4yXT0xO2lmKCEoKGd8MCk9PTE/KGNbZCs0OD4+Ml18MCk9PTE6MCkpe2k9ajtyZXR1cm59YVtkKzU0Pj4wXT0xO2k9ajtyZXR1cm59aWYoKGZ8MCkhPShlfDApKXtoPWQrMzZ8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7YVtkKzU0Pj4wXT0xO2k9ajtyZXR1cm59ZT1kKzI0fDA7Yj1jW2U+PjJdfDA7aWYoKGJ8MCk9PTIpe2NbZT4+Ml09Z31lbHNle2c9Yn1pZighKChnfDApPT0xPyhjW2QrNDg+PjJdfDApPT0xOjApKXtpPWo7cmV0dXJufWFbZCs1ND4+MF09MTtpPWo7cmV0dXJufWZ1bmN0aW9uIHRuKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtoPWk7aWYoKGNbZCs4Pj4yXXwwKSE9KGJ8MCkpe2k9aDtyZXR1cm59YVtkKzUzPj4wXT0xO2lmKChjW2QrND4+Ml18MCkhPShmfDApKXtpPWg7cmV0dXJufWFbZCs1Mj4+MF09MTtmPWQrMTZ8MDtiPWNbZj4+Ml18MDtpZigoYnwwKT09MCl7Y1tmPj4yXT1lO2NbZCsyND4+Ml09ZztjW2QrMzY+PjJdPTE7aWYoISgoZ3wwKT09MT8oY1tkKzQ4Pj4yXXwwKT09MTowKSl7aT1oO3JldHVybn1hW2QrNTQ+PjBdPTE7aT1oO3JldHVybn1pZigoYnwwKSE9KGV8MCkpe2I9ZCszNnwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrMTthW2QrNTQ+PjBdPTE7aT1oO3JldHVybn1lPWQrMjR8MDtmPWNbZT4+Ml18MDtpZigoZnwwKT09Mil7Y1tlPj4yXT1nfWVsc2V7Zz1mfWlmKCEoKGd8MCk9PTE/KGNbZCs0OD4+Ml18MCk9PTE6MCkpe2k9aDtyZXR1cm59YVtkKzU0Pj4wXT0xO2k9aDtyZXR1cm59ZnVuY3Rpb24gdW4oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtiPWk7ZG97aWYoYT4+PjA8MjQ1KXtpZihhPj4+MDwxMSl7YT0xNn1lbHNle2E9YSsxMSYtOH12PWE+Pj4zO3A9Y1s1NTQyXXwwO3c9cD4+PnY7aWYoKHcmM3wwKSE9MCl7aD0odyYxXjEpK3Z8MDtnPWg8PDE7ZT0yMjIwOCsoZzw8Mil8MDtnPTIyMjA4KyhnKzI8PDIpfDA7aj1jW2c+PjJdfDA7ZD1qKzh8MDtmPWNbZD4+Ml18MDtkb3tpZigoZXwwKSE9KGZ8MCkpe2lmKGY+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9az1mKzEyfDA7aWYoKGNbaz4+Ml18MCk9PShqfDApKXtjW2s+PjJdPWU7Y1tnPj4yXT1mO2JyZWFrfWVsc2V7WGIoKX19ZWxzZXtjWzU1NDJdPXAmfigxPDxoKX19d2hpbGUoMCk7SD1oPDwzO2Nbais0Pj4yXT1IfDM7SD1qKyhIfDQpfDA7Y1tIPj4yXT1jW0g+PjJdfDE7SD1kO2k9YjtyZXR1cm4gSHwwfWlmKGE+Pj4wPihjWzIyMTc2Pj4yXXwwKT4+PjApe2lmKCh3fDApIT0wKXtoPTI8PHY7aD13PDx2JihofDAtaCk7aD0oaCYwLWgpKyAtMXwwO2Q9aD4+PjEyJjE2O2g9aD4+PmQ7Zj1oPj4+NSY4O2g9aD4+PmY7Zz1oPj4+MiY0O2g9aD4+Pmc7ZT1oPj4+MSYyO2g9aD4+PmU7aj1oPj4+MSYxO2o9KGZ8ZHxnfGV8aikrKGg+Pj5qKXwwO2g9ajw8MTtlPTIyMjA4KyhoPDwyKXwwO2g9MjIyMDgrKGgrMjw8Mil8MDtnPWNbaD4+Ml18MDtkPWcrOHwwO2Y9Y1tkPj4yXXwwO2Rve2lmKChlfDApIT0oZnwwKSl7aWYoZj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1rPWYrMTJ8MDtpZigoY1trPj4yXXwwKT09KGd8MCkpe2Nbaz4+Ml09ZTtjW2g+PjJdPWY7YnJlYWt9ZWxzZXtYYigpfX1lbHNle2NbNTU0Ml09cCZ+KDE8PGopfX13aGlsZSgwKTtoPWo8PDM7Zj1oLWF8MDtjW2crND4+Ml09YXwzO2U9ZythfDA7Y1tnKyhhfDQpPj4yXT1mfDE7Y1tnK2g+PjJdPWY7aD1jWzIyMTc2Pj4yXXwwO2lmKChofDApIT0wKXtnPWNbMjIxODg+PjJdfDA7az1oPj4+MztqPWs8PDE7aD0yMjIwOCsoajw8Mil8MDtsPWNbNTU0Ml18MDtrPTE8PGs7aWYoKGwma3wwKSE9MCl7aj0yMjIwOCsoaisyPDwyKXwwO2s9Y1tqPj4yXXwwO2lmKGs+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtEPWo7Qz1rfX1lbHNle2NbNTU0Ml09bHxrO0Q9MjIyMDgrKGorMjw8Mil8MDtDPWh9Y1tEPj4yXT1nO2NbQysxMj4+Ml09ZztjW2crOD4+Ml09QztjW2crMTI+PjJdPWh9Y1syMjE3Nj4+Ml09ZjtjWzIyMTg4Pj4yXT1lO0g9ZDtpPWI7cmV0dXJuIEh8MH1wPWNbMjIxNzI+PjJdfDA7aWYoKHB8MCkhPTApe2U9KHAmMC1wKSsgLTF8MDtHPWU+Pj4xMiYxNjtlPWU+Pj5HO0Y9ZT4+PjUmODtlPWU+Pj5GO0g9ZT4+PjImNDtlPWU+Pj5IO2Y9ZT4+PjEmMjtlPWU+Pj5mO2Q9ZT4+PjEmMTtkPWNbMjI0NzIrKChGfEd8SHxmfGQpKyhlPj4+ZCk8PDIpPj4yXXwwO2U9KGNbZCs0Pj4yXSYtOCktYXwwO2Y9ZDt3aGlsZSgxKXtnPWNbZisxNj4+Ml18MDtpZigoZ3wwKT09MCl7Zz1jW2YrMjA+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfX1mPShjW2crND4+Ml0mLTgpLWF8MDtIPWY+Pj4wPGU+Pj4wO2U9SD9mOmU7Zj1nO2Q9SD9nOmR9aD1jWzIyMTg0Pj4yXXwwO2lmKGQ+Pj4wPGg+Pj4wKXtYYigpfWY9ZCthfDA7aWYoIShkPj4+MDxmPj4+MCkpe1hiKCl9Zz1jW2QrMjQ+PjJdfDA7az1jW2QrMTI+PjJdfDA7ZG97aWYoKGt8MCk9PShkfDApKXtrPWQrMjB8MDtqPWNbaz4+Ml18MDtpZigoanwwKT09MCl7az1kKzE2fDA7aj1jW2s+PjJdfDA7aWYoKGp8MCk9PTApe0I9MDticmVha319d2hpbGUoMSl7bD1qKzIwfDA7bT1jW2w+PjJdfDA7aWYoKG18MCkhPTApe2o9bTtrPWw7Y29udGludWV9bT1qKzE2fDA7bD1jW20+PjJdfDA7aWYoKGx8MCk9PTApe2JyZWFrfWVsc2V7aj1sO2s9bX19aWYoaz4+PjA8aD4+PjApe1hiKCl9ZWxzZXtjW2s+PjJdPTA7Qj1qO2JyZWFrfX1lbHNle2o9Y1tkKzg+PjJdfDA7aWYoaj4+PjA8aD4+PjApe1hiKCl9aD1qKzEyfDA7aWYoKGNbaD4+Ml18MCkhPShkfDApKXtYYigpfWw9ays4fDA7aWYoKGNbbD4+Ml18MCk9PShkfDApKXtjW2g+PjJdPWs7Y1tsPj4yXT1qO0I9azticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtkb3tpZigoZ3wwKSE9MCl7aD1jW2QrMjg+PjJdfDA7aj0yMjQ3MisoaDw8Mil8MDtpZigoZHwwKT09KGNbaj4+Ml18MCkpe2Nbaj4+Ml09QjtpZigoQnwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxoKTticmVha319ZWxzZXtpZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWg9ZysxNnwwO2lmKChjW2g+PjJdfDApPT0oZHwwKSl7Y1toPj4yXT1CfWVsc2V7Y1tnKzIwPj4yXT1CfWlmKChCfDApPT0wKXticmVha319aWYoQj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW0IrMjQ+PjJdPWc7Zz1jW2QrMTY+PjJdfDA7ZG97aWYoKGd8MCkhPTApe2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW0IrMTY+PjJdPWc7Y1tnKzI0Pj4yXT1CO2JyZWFrfX19d2hpbGUoMCk7Zz1jW2QrMjA+PjJdfDA7aWYoKGd8MCkhPTApe2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW0IrMjA+PjJdPWc7Y1tnKzI0Pj4yXT1CO2JyZWFrfX19fXdoaWxlKDApO2lmKGU+Pj4wPDE2KXtIPWUrYXwwO2NbZCs0Pj4yXT1IfDM7SD1kKyhIKzQpfDA7Y1tIPj4yXT1jW0g+PjJdfDF9ZWxzZXtjW2QrND4+Ml09YXwzO2NbZCsoYXw0KT4+Ml09ZXwxO2NbZCsoZSthKT4+Ml09ZTtoPWNbMjIxNzY+PjJdfDA7aWYoKGh8MCkhPTApe2c9Y1syMjE4OD4+Ml18MDtsPWg+Pj4zO2o9bDw8MTtoPTIyMjA4KyhqPDwyKXwwO2s9Y1s1NTQyXXwwO2w9MTw8bDtpZigoayZsfDApIT0wKXtqPTIyMjA4KyhqKzI8PDIpfDA7az1jW2o+PjJdfDA7aWYoaz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle0E9ajt6PWt9fWVsc2V7Y1s1NTQyXT1rfGw7QT0yMjIwOCsoaisyPDwyKXwwO3o9aH1jW0E+PjJdPWc7Y1t6KzEyPj4yXT1nO2NbZys4Pj4yXT16O2NbZysxMj4+Ml09aH1jWzIyMTc2Pj4yXT1lO2NbMjIxODg+PjJdPWZ9SD1kKzh8MDtpPWI7cmV0dXJuIEh8MH19fWVsc2V7aWYoIShhPj4+MD40Mjk0OTY3MjMxKSl7ej1hKzExfDA7YT16Ji04O0I9Y1syMjE3Mj4+Ml18MDtpZigoQnwwKSE9MCl7QT0wLWF8MDt6PXo+Pj44O2lmKCh6fDApIT0wKXtpZihhPj4+MD4xNjc3NzIxNSl7Qz0zMX1lbHNle0c9KHorMTA0ODMyMHwwKT4+PjE2Jjg7SD16PDxHO0Y9KEgrNTIwMTkyfDApPj4+MTYmNDtIPUg8PEY7Qz0oSCsyNDU3NjB8MCk+Pj4xNiYyO0M9MTQtKEZ8R3xDKSsoSDw8Qz4+PjE1KXwwO0M9YT4+PihDKzd8MCkmMXxDPDwxfX1lbHNle0M9MH1EPWNbMjI0NzIrKEM8PDIpPj4yXXwwO2E6ZG97aWYoKER8MCk9PTApe0Y9MDt6PTB9ZWxzZXtpZigoQ3wwKT09MzEpe3o9MH1lbHNle3o9MjUtKEM+Pj4xKXwwfUY9MDtFPWE8PHo7ej0wO3doaWxlKDEpe0g9Y1tEKzQ+PjJdJi04O0c9SC1hfDA7aWYoRz4+PjA8QT4+PjApe2lmKChIfDApPT0oYXwwKSl7QT1HO0Y9RDt6PUQ7YnJlYWsgYX1lbHNle0E9Rzt6PUR9fUg9Y1tEKzIwPj4yXXwwO0Q9Y1tEKyhFPj4+MzE8PDIpKzE2Pj4yXXwwO0Y9KEh8MCk9PTB8KEh8MCk9PShEfDApP0Y6SDtpZigoRHwwKT09MCl7YnJlYWt9ZWxzZXtFPUU8PDF9fX19d2hpbGUoMCk7aWYoKEZ8MCk9PTAmKHp8MCk9PTApe0g9Mjw8QztCPUImKEh8MC1IKTtpZigoQnwwKT09MCl7YnJlYWt9SD0oQiYwLUIpKyAtMXwwO0Q9SD4+PjEyJjE2O0g9SD4+PkQ7Qz1IPj4+NSY4O0g9SD4+PkM7RT1IPj4+MiY0O0g9SD4+PkU7Rz1IPj4+MSYyO0g9SD4+Pkc7Rj1IPj4+MSYxO0Y9Y1syMjQ3MisoKEN8RHxFfEd8RikrKEg+Pj5GKTw8Mik+PjJdfDB9aWYoKEZ8MCkhPTApe3doaWxlKDEpe0g9KGNbRis0Pj4yXSYtOCktYXwwO0I9SD4+PjA8QT4+PjA7QT1CP0g6QTt6PUI/Rjp6O0I9Y1tGKzE2Pj4yXXwwO2lmKChCfDApIT0wKXtGPUI7Y29udGludWV9Rj1jW0YrMjA+PjJdfDA7aWYoKEZ8MCk9PTApe2JyZWFrfX19aWYoKHp8MCkhPTA/QT4+PjA8KChjWzIyMTc2Pj4yXXwwKS1hfDApPj4+MDowKXtmPWNbMjIxODQ+PjJdfDA7aWYoej4+PjA8Zj4+PjApe1hiKCl9ZD16K2F8MDtpZighKHo+Pj4wPGQ+Pj4wKSl7WGIoKX1lPWNbeisyND4+Ml18MDtoPWNbeisxMj4+Ml18MDtkb3tpZigoaHwwKT09KHp8MCkpe2g9eisyMHwwO2c9Y1toPj4yXXwwO2lmKChnfDApPT0wKXtoPXorMTZ8MDtnPWNbaD4+Ml18MDtpZigoZ3wwKT09MCl7eD0wO2JyZWFrfX13aGlsZSgxKXtqPWcrMjB8MDtrPWNbaj4+Ml18MDtpZigoa3wwKSE9MCl7Zz1rO2g9ajtjb250aW51ZX1qPWcrMTZ8MDtrPWNbaj4+Ml18MDtpZigoa3wwKT09MCl7YnJlYWt9ZWxzZXtnPWs7aD1qfX1pZihoPj4+MDxmPj4+MCl7WGIoKX1lbHNle2NbaD4+Ml09MDt4PWc7YnJlYWt9fWVsc2V7Zz1jW3orOD4+Ml18MDtpZihnPj4+MDxmPj4+MCl7WGIoKX1mPWcrMTJ8MDtpZigoY1tmPj4yXXwwKSE9KHp8MCkpe1hiKCl9aj1oKzh8MDtpZigoY1tqPj4yXXwwKT09KHp8MCkpe2NbZj4+Ml09aDtjW2o+PjJdPWc7eD1oO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2Rve2lmKChlfDApIT0wKXtnPWNbeisyOD4+Ml18MDtmPTIyNDcyKyhnPDwyKXwwO2lmKCh6fDApPT0oY1tmPj4yXXwwKSl7Y1tmPj4yXT14O2lmKCh4fDApPT0wKXtjWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PGcpO2JyZWFrfX1lbHNle2lmKGU+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9Zj1lKzE2fDA7aWYoKGNbZj4+Ml18MCk9PSh6fDApKXtjW2Y+PjJdPXh9ZWxzZXtjW2UrMjA+PjJdPXh9aWYoKHh8MCk9PTApe2JyZWFrfX1pZih4Pj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWNbeCsyND4+Ml09ZTtlPWNbeisxNj4+Ml18MDtkb3tpZigoZXwwKSE9MCl7aWYoZT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbeCsxNj4+Ml09ZTtjW2UrMjQ+PjJdPXg7YnJlYWt9fX13aGlsZSgwKTtlPWNbeisyMD4+Ml18MDtpZigoZXwwKSE9MCl7aWYoZT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbeCsyMD4+Ml09ZTtjW2UrMjQ+PjJdPXg7YnJlYWt9fX19d2hpbGUoMCk7Yjpkb3tpZighKEE+Pj4wPDE2KSl7Y1t6KzQ+PjJdPWF8MztjW3orKGF8NCk+PjJdPUF8MTtjW3orKEErYSk+PjJdPUE7Zj1BPj4+MztpZihBPj4+MDwyNTYpe2g9Zjw8MTtlPTIyMjA4KyhoPDwyKXwwO2c9Y1s1NTQyXXwwO2Y9MTw8Zjtkb3tpZigoZyZmfDApPT0wKXtjWzU1NDJdPWd8Zjt3PTIyMjA4KyhoKzI8PDIpfDA7dj1lfWVsc2V7Zj0yMjIwOCsoaCsyPDwyKXwwO2c9Y1tmPj4yXXwwO2lmKCEoZz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCkpe3c9Zjt2PWc7YnJlYWt9WGIoKX19d2hpbGUoMCk7Y1t3Pj4yXT1kO2NbdisxMj4+Ml09ZDtjW3orKGErOCk+PjJdPXY7Y1t6KyhhKzEyKT4+Ml09ZTticmVha31lPUE+Pj44O2lmKChlfDApIT0wKXtpZihBPj4+MD4xNjc3NzIxNSl7ZT0zMX1lbHNle0c9KGUrMTA0ODMyMHwwKT4+PjE2Jjg7SD1lPDxHO0Y9KEgrNTIwMTkyfDApPj4+MTYmNDtIPUg8PEY7ZT0oSCsyNDU3NjB8MCk+Pj4xNiYyO2U9MTQtKEZ8R3xlKSsoSDw8ZT4+PjE1KXwwO2U9QT4+PihlKzd8MCkmMXxlPDwxfX1lbHNle2U9MH1mPTIyNDcyKyhlPDwyKXwwO2NbeisoYSsyOCk+PjJdPWU7Y1t6KyhhKzIwKT4+Ml09MDtjW3orKGErMTYpPj4yXT0wO2g9Y1syMjE3Mj4+Ml18MDtnPTE8PGU7aWYoKGgmZ3wwKT09MCl7Y1syMjE3Mj4+Ml09aHxnO2NbZj4+Ml09ZDtjW3orKGErMjQpPj4yXT1mO2NbeisoYSsxMik+PjJdPWQ7Y1t6KyhhKzgpPj4yXT1kO2JyZWFrfWY9Y1tmPj4yXXwwO2lmKChlfDApPT0zMSl7ZT0wfWVsc2V7ZT0yNS0oZT4+PjEpfDB9Yzpkb3tpZigoY1tmKzQ+PjJdJi04fDApIT0oQXwwKSl7ZT1BPDxlO3doaWxlKDEpe2c9ZisoZT4+PjMxPDwyKSsxNnwwO2g9Y1tnPj4yXXwwO2lmKChofDApPT0wKXticmVha31pZigoY1toKzQ+PjJdJi04fDApPT0oQXwwKSl7cD1oO2JyZWFrIGN9ZWxzZXtlPWU8PDE7Zj1ofX1pZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tnPj4yXT1kO2NbeisoYSsyNCk+PjJdPWY7Y1t6KyhhKzEyKT4+Ml09ZDtjW3orKGErOCk+PjJdPWQ7YnJlYWsgYn19ZWxzZXtwPWZ9fXdoaWxlKDApO2Y9cCs4fDA7ZT1jW2Y+PjJdfDA7Zz1jWzIyMTg0Pj4yXXwwO2lmKHA+Pj4wPGc+Pj4wKXtYYigpfWlmKGU+Pj4wPGc+Pj4wKXtYYigpfWVsc2V7Y1tlKzEyPj4yXT1kO2NbZj4+Ml09ZDtjW3orKGErOCk+PjJdPWU7Y1t6KyhhKzEyKT4+Ml09cDtjW3orKGErMjQpPj4yXT0wO2JyZWFrfX1lbHNle0g9QSthfDA7Y1t6KzQ+PjJdPUh8MztIPXorKEgrNCl8MDtjW0g+PjJdPWNbSD4+Ml18MX19d2hpbGUoMCk7SD16Kzh8MDtpPWI7cmV0dXJuIEh8MH19fWVsc2V7YT0tMX19fXdoaWxlKDApO3A9Y1syMjE3Nj4+Ml18MDtpZighKGE+Pj4wPnA+Pj4wKSl7ZT1wLWF8MDtkPWNbMjIxODg+PjJdfDA7aWYoZT4+PjA+MTUpe2NbMjIxODg+PjJdPWQrYTtjWzIyMTc2Pj4yXT1lO2NbZCsoYSs0KT4+Ml09ZXwxO2NbZCtwPj4yXT1lO2NbZCs0Pj4yXT1hfDN9ZWxzZXtjWzIyMTc2Pj4yXT0wO2NbMjIxODg+PjJdPTA7Y1tkKzQ+PjJdPXB8MztIPWQrKHArNCl8MDtjW0g+PjJdPWNbSD4+Ml18MX1IPWQrOHwwO2k9YjtyZXR1cm4gSHwwfXA9Y1syMjE4MD4+Ml18MDtpZihhPj4+MDxwPj4+MCl7Rz1wLWF8MDtjWzIyMTgwPj4yXT1HO0g9Y1syMjE5Mj4+Ml18MDtjWzIyMTkyPj4yXT1IK2E7Y1tIKyhhKzQpPj4yXT1HfDE7Y1tIKzQ+PjJdPWF8MztIPUgrOHwwO2k9YjtyZXR1cm4gSHwwfWRve2lmKChjWzU2NjBdfDApPT0wKXtwPXNiKDMwKXwwO2lmKChwKyAtMSZwfDApPT0wKXtjWzIyNjQ4Pj4yXT1wO2NbMjI2NDQ+PjJdPXA7Y1syMjY1Mj4+Ml09LTE7Y1syMjY1Nj4+Ml09LTE7Y1syMjY2MD4+Ml09MDtjWzIyNjEyPj4yXT0wO2NbNTY2MF09KF9iKDApfDApJi0xNl4xNDMxNjU1NzY4O2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO3c9YSs0OHwwO3A9Y1syMjY0OD4+Ml18MDt4PWErNDd8MDt6PXAreHwwO3A9MC1wfDA7dj16JnA7aWYoISh2Pj4+MD5hPj4+MCkpe0g9MDtpPWI7cmV0dXJuIEh8MH1BPWNbMjI2MDg+PjJdfDA7aWYoKEF8MCkhPTA/KEc9Y1syMjYwMD4+Ml18MCxIPUcrdnwwLEg+Pj4wPD1HPj4+MHxIPj4+MD5BPj4+MCk6MCl7SD0wO2k9YjtyZXR1cm4gSHwwfWQ6ZG97aWYoKGNbMjI2MTI+PjJdJjR8MCk9PTApe0I9Y1syMjE5Mj4+Ml18MDtlOmRve2lmKChCfDApIT0wKXtBPTIyNjE2fDA7d2hpbGUoMSl7Qz1jW0E+PjJdfDA7aWYoIShDPj4+MD5CPj4+MCk/KHk9QSs0fDAsKEMrKGNbeT4+Ml18MCl8MCk+Pj4wPkI+Pj4wKTowKXticmVha31BPWNbQSs4Pj4yXXwwO2lmKChBfDApPT0wKXtvPTE4MjticmVhayBlfX1pZigoQXwwKSE9MCl7Qj16LShjWzIyMTgwPj4yXXwwKSZwO2lmKEI+Pj4wPDIxNDc0ODM2NDcpe3A9aGIoQnwwKXwwO0E9KHB8MCk9PSgoY1tBPj4yXXwwKSsoY1t5Pj4yXXwwKXwwKTt5PXA7ej1CO3A9QT9wOi0xO0E9QT9COjA7bz0xOTF9ZWxzZXtBPTB9fWVsc2V7bz0xODJ9fWVsc2V7bz0xODJ9fXdoaWxlKDApO2Rve2lmKChvfDApPT0xODIpe3A9aGIoMCl8MDtpZigocHwwKSE9KC0xfDApKXt6PXA7QT1jWzIyNjQ0Pj4yXXwwO3k9QSsgLTF8MDtpZigoeSZ6fDApPT0wKXtBPXZ9ZWxzZXtBPXYteisoeSt6JjAtQSl8MH15PWNbMjI2MDA+PjJdfDA7ej15K0F8MDtpZihBPj4+MD5hPj4+MCZBPj4+MDwyMTQ3NDgzNjQ3KXtIPWNbMjI2MDg+PjJdfDA7aWYoKEh8MCkhPTA/ej4+PjA8PXk+Pj4wfHo+Pj4wPkg+Pj4wOjApe0E9MDticmVha315PWhiKEF8MCl8MDtvPSh5fDApPT0ocHwwKTt6PUE7cD1vP3A6LTE7QT1vP0E6MDtvPTE5MX1lbHNle0E9MH19ZWxzZXtBPTB9fX13aGlsZSgwKTtmOmRve2lmKChvfDApPT0xOTEpe289MC16fDA7aWYoKHB8MCkhPSgtMXwwKSl7cT1BO289MjAyO2JyZWFrIGR9ZG97aWYoKHl8MCkhPSgtMXwwKSZ6Pj4+MDwyMTQ3NDgzNjQ3Jno+Pj4wPHc+Pj4wPyh1PWNbMjI2NDg+PjJdfDAsdT14LXordSYwLXUsdT4+PjA8MjE0NzQ4MzY0Nyk6MCl7aWYoKGhiKHV8MCl8MCk9PSgtMXwwKSl7aGIob3wwKXwwO2JyZWFrIGZ9ZWxzZXt6PXUrenwwO2JyZWFrfX19d2hpbGUoMCk7aWYoKHl8MCkhPSgtMXwwKSl7cD15O3E9ejtvPTIwMjticmVhayBkfX19d2hpbGUoMCk7Y1syMjYxMj4+Ml09Y1syMjYxMj4+Ml18NDtvPTE5OX1lbHNle0E9MDtvPTE5OX19d2hpbGUoMCk7aWYoKCgob3wwKT09MTk5P3Y+Pj4wPDIxNDc0ODM2NDc6MCk/KHQ9aGIodnwwKXwwLHM9aGIoMCl8MCwoc3wwKSE9KC0xfDApJih0fDApIT0oLTF8MCkmdD4+PjA8cz4+PjApOjApPyhyPXMtdHwwLHE9cj4+PjA+KGErNDB8MCk+Pj4wLHEpOjApe3A9dDtxPXE/cjpBO289MjAyfWlmKChvfDApPT0yMDIpe3I9KGNbMjI2MDA+PjJdfDApK3F8MDtjWzIyNjAwPj4yXT1yO2lmKHI+Pj4wPihjWzIyNjA0Pj4yXXwwKT4+PjApe2NbMjI2MDQ+PjJdPXJ9cj1jWzIyMTkyPj4yXXwwO2c6ZG97aWYoKHJ8MCkhPTApe3Y9MjI2MTZ8MDt3aGlsZSgxKXt0PWNbdj4+Ml18MDt1PXYrNHwwO3M9Y1t1Pj4yXXwwO2lmKChwfDApPT0odCtzfDApKXtvPTIxNDticmVha313PWNbdis4Pj4yXXwwO2lmKCh3fDApPT0wKXticmVha31lbHNle3Y9d319aWYoKChvfDApPT0yMTQ/KGNbdisxMj4+Ml0mOHwwKT09MDowKT9yPj4+MD49dD4+PjAmcj4+PjA8cD4+PjA6MCl7Y1t1Pj4yXT1zK3E7ZD0oY1syMjE4MD4+Ml18MCkrcXwwO2U9cis4fDA7aWYoKGUmN3wwKT09MCl7ZT0wfWVsc2V7ZT0wLWUmN31IPWQtZXwwO2NbMjIxOTI+PjJdPXIrZTtjWzIyMTgwPj4yXT1IO2NbcisoZSs0KT4+Ml09SHwxO2NbcisoZCs0KT4+Ml09NDA7Y1syMjE5Nj4+Ml09Y1syMjY1Nj4+Ml07YnJlYWt9aWYocD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7Y1syMjE4ND4+Ml09cH10PXArcXwwO3M9MjI2MTZ8MDt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT09KHR8MCkpe289MjI0O2JyZWFrfXU9Y1tzKzg+PjJdfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7cz11fX1pZigob3wwKT09MjI0PyhjW3MrMTI+PjJdJjh8MCk9PTA6MCl7Y1tzPj4yXT1wO2g9cys0fDA7Y1toPj4yXT0oY1toPj4yXXwwKStxO2g9cCs4fDA7aWYoKGgmN3wwKT09MCl7aD0wfWVsc2V7aD0wLWgmN31qPXArKHErOCl8MDtpZigoaiY3fDApPT0wKXtuPTB9ZWxzZXtuPTAtaiY3fW89cCsobitxKXwwO2o9aCthfDA7az1wK2p8MDttPW8tKHAraCktYXwwO2NbcCsoaCs0KT4+Ml09YXwzO2g6ZG97aWYoKG98MCkhPShjWzIyMTkyPj4yXXwwKSl7aWYoKG98MCk9PShjWzIyMTg4Pj4yXXwwKSl7SD0oY1syMjE3Nj4+Ml18MCkrbXwwO2NbMjIxNzY+PjJdPUg7Y1syMjE4OD4+Ml09aztjW3ArKGorNCk+PjJdPUh8MTtjW3ArKEgraik+PjJdPUg7YnJlYWt9cj1xKzR8MDt0PWNbcCsocituKT4+Ml18MDtpZigodCYzfDApPT0xKXthPXQmLTg7cz10Pj4+MztpOmRve2lmKCEodD4+PjA8MjU2KSl7bD1jW3ArKChufDI0KStxKT4+Ml18MDt1PWNbcCsocSsxMituKT4+Ml18MDtkb3tpZigodXwwKT09KG98MCkpe3U9bnwxNjt0PXArKHIrdSl8MDtzPWNbdD4+Ml18MDtpZigoc3wwKT09MCl7dD1wKyh1K3EpfDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe2c9MDticmVha319d2hpbGUoMSl7dT1zKzIwfDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCkhPTApe3M9djt0PXU7Y29udGludWV9dT1zKzE2fDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCk9PTApe2JyZWFrfWVsc2V7cz12O3Q9dX19aWYodD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbdD4+Ml09MDtnPXM7YnJlYWt9fWVsc2V7dD1jW3ArKChufDgpK3EpPj4yXXwwO2lmKHQ+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9dj10KzEyfDA7aWYoKGNbdj4+Ml18MCkhPShvfDApKXtYYigpfXM9dSs4fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtjW3Y+PjJdPXU7Y1tzPj4yXT10O2c9dTticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtpZigobHwwKT09MCl7YnJlYWt9dD1jW3ArKHErMjgrbik+PjJdfDA7cz0yMjQ3MisodDw8Mil8MDtkb3tpZigob3wwKSE9KGNbcz4+Ml18MCkpe2lmKGw+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9cz1sKzE2fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtjW3M+PjJdPWd9ZWxzZXtjW2wrMjA+PjJdPWd9aWYoKGd8MCk9PTApe2JyZWFrIGl9fWVsc2V7Y1tzPj4yXT1nO2lmKChnfDApIT0wKXticmVha31jWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PHQpO2JyZWFrIGl9fXdoaWxlKDApO2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9Y1tnKzI0Pj4yXT1sO2w9bnwxNjtvPWNbcCsobCtxKT4+Ml18MDtkb3tpZigob3wwKSE9MCl7aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbZysxNj4+Ml09bztjW28rMjQ+PjJdPWc7YnJlYWt9fX13aGlsZSgwKTtsPWNbcCsocitsKT4+Ml18MDtpZigobHwwKT09MCl7YnJlYWt9aWYobD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbZysyMD4+Ml09bDtjW2wrMjQ+PjJdPWc7YnJlYWt9fWVsc2V7cj1jW3ArKChufDgpK3EpPj4yXXwwO2c9Y1twKyhxKzEyK24pPj4yXXwwO3Q9MjIyMDgrKHM8PDE8PDIpfDA7ZG97aWYoKHJ8MCkhPSh0fDApKXtpZihyPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWlmKChjW3IrMTI+PjJdfDApPT0ob3wwKSl7YnJlYWt9WGIoKX19d2hpbGUoMCk7aWYoKGd8MCk9PShyfDApKXtjWzU1NDJdPWNbNTU0Ml0mfigxPDxzKTticmVha31kb3tpZigoZ3wwKT09KHR8MCkpe2w9Zys4fDB9ZWxzZXtpZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfXM9Zys4fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtsPXM7YnJlYWt9WGIoKX19d2hpbGUoMCk7Y1tyKzEyPj4yXT1nO2NbbD4+Ml09cn19d2hpbGUoMCk7bz1wKygoYXxuKStxKXwwO209YSttfDB9Zz1vKzR8MDtjW2c+PjJdPWNbZz4+Ml0mLTI7Y1twKyhqKzQpPj4yXT1tfDE7Y1twKyhtK2opPj4yXT1tO2c9bT4+PjM7aWYobT4+PjA8MjU2KXttPWc8PDE7ZD0yMjIwOCsobTw8Mil8MDtsPWNbNTU0Ml18MDtnPTE8PGc7ZG97aWYoKGwmZ3wwKT09MCl7Y1s1NTQyXT1sfGc7Zj0yMjIwOCsobSsyPDwyKXwwO2U9ZH1lbHNle2w9MjIyMDgrKG0rMjw8Mil8MDtnPWNbbD4+Ml18MDtpZighKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApKXtmPWw7ZT1nO2JyZWFrfVhiKCl9fXdoaWxlKDApO2NbZj4+Ml09aztjW2UrMTI+PjJdPWs7Y1twKyhqKzgpPj4yXT1lO2NbcCsoaisxMik+PjJdPWQ7YnJlYWt9ZT1tPj4+ODtkb3tpZigoZXwwKT09MCl7ZT0wfWVsc2V7aWYobT4+PjA+MTY3NzcyMTUpe2U9MzE7YnJlYWt9Rz0oZSsxMDQ4MzIwfDApPj4+MTYmODtIPWU8PEc7Rj0oSCs1MjAxOTJ8MCk+Pj4xNiY0O0g9SDw8RjtlPShIKzI0NTc2MHwwKT4+PjE2JjI7ZT0xNC0oRnxHfGUpKyhIPDxlPj4+MTUpfDA7ZT1tPj4+KGUrN3wwKSYxfGU8PDF9fXdoaWxlKDApO2w9MjI0NzIrKGU8PDIpfDA7Y1twKyhqKzI4KT4+Ml09ZTtjW3ArKGorMjApPj4yXT0wO2NbcCsoaisxNik+PjJdPTA7Zj1jWzIyMTcyPj4yXXwwO2c9MTw8ZTtpZigoZiZnfDApPT0wKXtjWzIyMTcyPj4yXT1mfGc7Y1tsPj4yXT1rO2NbcCsoaisyNCk+PjJdPWw7Y1twKyhqKzEyKT4+Ml09aztjW3ArKGorOCk+PjJdPWs7YnJlYWt9bD1jW2w+PjJdfDA7aWYoKGV8MCk9PTMxKXtlPTB9ZWxzZXtlPTI1LShlPj4+MSl8MH1qOmRve2lmKChjW2wrND4+Ml0mLTh8MCkhPShtfDApKXtlPW08PGU7d2hpbGUoMSl7Zz1sKyhlPj4+MzE8PDIpKzE2fDA7Zj1jW2c+PjJdfDA7aWYoKGZ8MCk9PTApe2JyZWFrfWlmKChjW2YrND4+Ml0mLTh8MCk9PShtfDApKXtkPWY7YnJlYWsgan1lbHNle2U9ZTw8MTtsPWZ9fWlmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2c+PjJdPWs7Y1twKyhqKzI0KT4+Ml09bDtjW3ArKGorMTIpPj4yXT1rO2NbcCsoais4KT4+Ml09azticmVhayBofX1lbHNle2Q9bH19d2hpbGUoMCk7Zj1kKzh8MDtlPWNbZj4+Ml18MDtnPWNbMjIxODQ+PjJdfDA7aWYoZD4+PjA8Zz4+PjApe1hiKCl9aWYoZT4+PjA8Zz4+PjApe1hiKCl9ZWxzZXtjW2UrMTI+PjJdPWs7Y1tmPj4yXT1rO2NbcCsoais4KT4+Ml09ZTtjW3ArKGorMTIpPj4yXT1kO2NbcCsoaisyNCk+PjJdPTA7YnJlYWt9fWVsc2V7SD0oY1syMjE4MD4+Ml18MCkrbXwwO2NbMjIxODA+PjJdPUg7Y1syMjE5Mj4+Ml09aztjW3ArKGorNCk+PjJdPUh8MX19d2hpbGUoMCk7SD1wKyhofDgpfDA7aT1iO3JldHVybiBIfDB9ZT0yMjYxNnwwO3doaWxlKDEpe2Q9Y1tlPj4yXXwwO2lmKCEoZD4+PjA+cj4+PjApPyhuPWNbZSs0Pj4yXXwwLG09ZCtufDAsbT4+PjA+cj4+PjApOjApe2JyZWFrfWU9Y1tlKzg+PjJdfDB9ZT1kKyhuKyAtMzkpfDA7aWYoKGUmN3wwKT09MCl7ZT0wfWVsc2V7ZT0wLWUmN31kPWQrKG4rIC00NytlKXwwO2Q9ZD4+PjA8KHIrMTZ8MCk+Pj4wP3I6ZDtlPWQrOHwwO2Y9cCs4fDA7aWYoKGYmN3wwKT09MCl7Zj0wfWVsc2V7Zj0wLWYmN31IPXErIC00MC1mfDA7Y1syMjE5Mj4+Ml09cCtmO2NbMjIxODA+PjJdPUg7Y1twKyhmKzQpPj4yXT1IfDE7Y1twKyhxKyAtMzYpPj4yXT00MDtjWzIyMTk2Pj4yXT1jWzIyNjU2Pj4yXTtjW2QrND4+Ml09Mjc7Y1tlKzA+PjJdPWNbMjI2MTY+PjJdO2NbZSs0Pj4yXT1jWzIyNjIwPj4yXTtjW2UrOD4+Ml09Y1syMjYyND4+Ml07Y1tlKzEyPj4yXT1jWzIyNjI4Pj4yXTtjWzIyNjE2Pj4yXT1wO2NbMjI2MjA+PjJdPXE7Y1syMjYyOD4+Ml09MDtjWzIyNjI0Pj4yXT1lO2U9ZCsyOHwwO2NbZT4+Ml09NztpZigoZCszMnwwKT4+PjA8bT4+PjApe2Rve0g9ZTtlPWUrNHwwO2NbZT4+Ml09N313aGlsZSgoSCs4fDApPj4+MDxtPj4+MCl9aWYoKGR8MCkhPShyfDApKXtkPWQtcnwwO2U9cisoZCs0KXwwO2NbZT4+Ml09Y1tlPj4yXSYtMjtjW3IrND4+Ml09ZHwxO2NbcitkPj4yXT1kO2U9ZD4+PjM7aWYoZD4+PjA8MjU2KXtnPWU8PDE7ZD0yMjIwOCsoZzw8Mil8MDtmPWNbNTU0Ml18MDtlPTE8PGU7ZG97aWYoKGYmZXwwKT09MCl7Y1s1NTQyXT1mfGU7az0yMjIwOCsoZysyPDwyKXwwO2o9ZH1lbHNle2Y9MjIyMDgrKGcrMjw8Mil8MDtlPWNbZj4+Ml18MDtpZighKGU+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApKXtrPWY7aj1lO2JyZWFrfVhiKCl9fXdoaWxlKDApO2Nbaz4+Ml09cjtjW2orMTI+PjJdPXI7Y1tyKzg+PjJdPWo7Y1tyKzEyPj4yXT1kO2JyZWFrfWU9ZD4+Pjg7aWYoKGV8MCkhPTApe2lmKGQ+Pj4wPjE2Nzc3MjE1KXtlPTMxfWVsc2V7Rz0oZSsxMDQ4MzIwfDApPj4+MTYmODtIPWU8PEc7Rj0oSCs1MjAxOTJ8MCk+Pj4xNiY0O0g9SDw8RjtlPShIKzI0NTc2MHwwKT4+PjE2JjI7ZT0xNC0oRnxHfGUpKyhIPDxlPj4+MTUpfDA7ZT1kPj4+KGUrN3wwKSYxfGU8PDF9fWVsc2V7ZT0wfWo9MjI0NzIrKGU8PDIpfDA7Y1tyKzI4Pj4yXT1lO2NbcisyMD4+Ml09MDtjW3IrMTY+PjJdPTA7Zj1jWzIyMTcyPj4yXXwwO2c9MTw8ZTtpZigoZiZnfDApPT0wKXtjWzIyMTcyPj4yXT1mfGc7Y1tqPj4yXT1yO2NbcisyND4+Ml09ajtjW3IrMTI+PjJdPXI7Y1tyKzg+PjJdPXI7YnJlYWt9Zj1jW2o+PjJdfDA7aWYoKGV8MCk9PTMxKXtlPTB9ZWxzZXtlPTI1LShlPj4+MSl8MH1rOmRve2lmKChjW2YrND4+Ml0mLTh8MCkhPShkfDApKXtlPWQ8PGU7d2hpbGUoMSl7aj1mKyhlPj4+MzE8PDIpKzE2fDA7Zz1jW2o+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShkfDApKXtoPWc7YnJlYWsga31lbHNle2U9ZTw8MTtmPWd9fWlmKGo+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2o+PjJdPXI7Y1tyKzI0Pj4yXT1mO2NbcisxMj4+Ml09cjtjW3IrOD4+Ml09cjticmVhayBnfX1lbHNle2g9Zn19d2hpbGUoMCk7Zj1oKzh8MDtlPWNbZj4+Ml18MDtkPWNbMjIxODQ+PjJdfDA7aWYoaD4+PjA8ZD4+PjApe1hiKCl9aWYoZT4+PjA8ZD4+PjApe1hiKCl9ZWxzZXtjW2UrMTI+PjJdPXI7Y1tmPj4yXT1yO2Nbcis4Pj4yXT1lO2NbcisxMj4+Ml09aDtjW3IrMjQ+PjJdPTA7YnJlYWt9fX1lbHNle0g9Y1syMjE4ND4+Ml18MDtpZigoSHwwKT09MHxwPj4+MDxIPj4+MCl7Y1syMjE4ND4+Ml09cH1jWzIyNjE2Pj4yXT1wO2NbMjI2MjA+PjJdPXE7Y1syMjYyOD4+Ml09MDtjWzIyMjA0Pj4yXT1jWzU2NjBdO2NbMjIyMDA+PjJdPS0xO2Q9MDtkb3tIPWQ8PDE7Rz0yMjIwOCsoSDw8Mil8MDtjWzIyMjA4KyhIKzM8PDIpPj4yXT1HO2NbMjIyMDgrKEgrMjw8Mik+PjJdPUc7ZD1kKzF8MH13aGlsZSgoZHwwKSE9MzIpO2Q9cCs4fDA7aWYoKGQmN3wwKT09MCl7ZD0wfWVsc2V7ZD0wLWQmN31IPXErIC00MC1kfDA7Y1syMjE5Mj4+Ml09cCtkO2NbMjIxODA+PjJdPUg7Y1twKyhkKzQpPj4yXT1IfDE7Y1twKyhxKyAtMzYpPj4yXT00MDtjWzIyMTk2Pj4yXT1jWzIyNjU2Pj4yXX19d2hpbGUoMCk7ZD1jWzIyMTgwPj4yXXwwO2lmKGQ+Pj4wPmE+Pj4wKXtHPWQtYXwwO2NbMjIxODA+PjJdPUc7SD1jWzIyMTkyPj4yXXwwO2NbMjIxOTI+PjJdPUgrYTtjW0grKGErNCk+PjJdPUd8MTtjW0grND4+Ml09YXwzO0g9SCs4fDA7aT1iO3JldHVybiBIfDB9fWNbKGJiKCl8MCk+PjJdPTEyO0g9MDtpPWI7cmV0dXJuIEh8MH1mdW5jdGlvbiB2bihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDtiPWk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59cT1hKyAtOHwwO3I9Y1syMjE4ND4+Ml18MDtpZihxPj4+MDxyPj4+MCl7WGIoKX1vPWNbYSsgLTQ+PjJdfDA7bj1vJjM7aWYoKG58MCk9PTEpe1hiKCl9aj1vJi04O2g9YSsoaisgLTgpfDA7ZG97aWYoKG8mMXwwKT09MCl7dT1jW3E+PjJdfDA7aWYoKG58MCk9PTApe2k9YjtyZXR1cm59cT0tOC11fDA7bz1hK3F8MDtuPXUranwwO2lmKG8+Pj4wPHI+Pj4wKXtYYigpfWlmKChvfDApPT0oY1syMjE4OD4+Ml18MCkpe2Q9YSsoaisgLTQpfDA7aWYoKGNbZD4+Ml0mM3wwKSE9Myl7ZD1vO209bjticmVha31jWzIyMTc2Pj4yXT1uO2NbZD4+Ml09Y1tkPj4yXSYtMjtjW2ErKHErNCk+PjJdPW58MTtjW2g+PjJdPW47aT1iO3JldHVybn10PXU+Pj4zO2lmKHU+Pj4wPDI1Nil7ZD1jW2ErKHErOCk+PjJdfDA7bT1jW2ErKHErMTIpPj4yXXwwO3A9MjIyMDgrKHQ8PDE8PDIpfDA7aWYoKGR8MCkhPShwfDApKXtpZihkPj4+MDxyPj4+MCl7WGIoKX1pZigoY1tkKzEyPj4yXXwwKSE9KG98MCkpe1hiKCl9fWlmKChtfDApPT0oZHwwKSl7Y1s1NTQyXT1jWzU1NDJdJn4oMTw8dCk7ZD1vO209bjticmVha31pZigobXwwKSE9KHB8MCkpe2lmKG0+Pj4wPHI+Pj4wKXtYYigpfXA9bSs4fDA7aWYoKGNbcD4+Ml18MCk9PShvfDApKXtzPXB9ZWxzZXtYYigpfX1lbHNle3M9bSs4fDB9Y1tkKzEyPj4yXT1tO2Nbcz4+Ml09ZDtkPW87bT1uO2JyZWFrfXM9Y1thKyhxKzI0KT4+Ml18MDt0PWNbYSsocSsxMik+PjJdfDA7ZG97aWYoKHR8MCk9PShvfDApKXt1PWErKHErMjApfDA7dD1jW3U+PjJdfDA7aWYoKHR8MCk9PTApe3U9YSsocSsxNil8MDt0PWNbdT4+Ml18MDtpZigodHwwKT09MCl7cD0wO2JyZWFrfX13aGlsZSgxKXt3PXQrMjB8MDt2PWNbdz4+Ml18MDtpZigodnwwKSE9MCl7dD12O3U9dztjb250aW51ZX12PXQrMTZ8MDt3PWNbdj4+Ml18MDtpZigod3wwKT09MCl7YnJlYWt9ZWxzZXt0PXc7dT12fX1pZih1Pj4+MDxyPj4+MCl7WGIoKX1lbHNle2NbdT4+Ml09MDtwPXQ7YnJlYWt9fWVsc2V7dT1jW2ErKHErOCk+PjJdfDA7aWYodT4+PjA8cj4+PjApe1hiKCl9cj11KzEyfDA7aWYoKGNbcj4+Ml18MCkhPShvfDApKXtYYigpfXY9dCs4fDA7aWYoKGNbdj4+Ml18MCk9PShvfDApKXtjW3I+PjJdPXQ7Y1t2Pj4yXT11O3A9dDticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtpZigoc3wwKSE9MCl7dD1jW2ErKHErMjgpPj4yXXwwO3I9MjI0NzIrKHQ8PDIpfDA7aWYoKG98MCk9PShjW3I+PjJdfDApKXtjW3I+PjJdPXA7aWYoKHB8MCk9PTApe2NbMjIxNzI+PjJdPWNbMjIxNzI+PjJdJn4oMTw8dCk7ZD1vO209bjticmVha319ZWxzZXtpZihzPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfXI9cysxNnwwO2lmKChjW3I+PjJdfDApPT0ob3wwKSl7Y1tyPj4yXT1wfWVsc2V7Y1tzKzIwPj4yXT1wfWlmKChwfDApPT0wKXtkPW87bT1uO2JyZWFrfX1pZihwPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWNbcCsyND4+Ml09cztyPWNbYSsocSsxNik+PjJdfDA7ZG97aWYoKHJ8MCkhPTApe2lmKHI+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW3ArMTY+PjJdPXI7Y1tyKzI0Pj4yXT1wO2JyZWFrfX19d2hpbGUoMCk7cT1jW2ErKHErMjApPj4yXXwwO2lmKChxfDApIT0wKXtpZihxPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1twKzIwPj4yXT1xO2NbcSsyND4+Ml09cDtkPW87bT1uO2JyZWFrfX1lbHNle2Q9bzttPW59fWVsc2V7ZD1vO209bn19ZWxzZXtkPXE7bT1qfX13aGlsZSgwKTtpZighKGQ+Pj4wPGg+Pj4wKSl7WGIoKX1uPWErKGorIC00KXwwO289Y1tuPj4yXXwwO2lmKChvJjF8MCk9PTApe1hiKCl9aWYoKG8mMnwwKT09MCl7aWYoKGh8MCk9PShjWzIyMTkyPj4yXXwwKSl7dz0oY1syMjE4MD4+Ml18MCkrbXwwO2NbMjIxODA+PjJdPXc7Y1syMjE5Mj4+Ml09ZDtjW2QrND4+Ml09d3wxO2lmKChkfDApIT0oY1syMjE4OD4+Ml18MCkpe2k9YjtyZXR1cm59Y1syMjE4OD4+Ml09MDtjWzIyMTc2Pj4yXT0wO2k9YjtyZXR1cm59aWYoKGh8MCk9PShjWzIyMTg4Pj4yXXwwKSl7dz0oY1syMjE3Nj4+Ml18MCkrbXwwO2NbMjIxNzY+PjJdPXc7Y1syMjE4OD4+Ml09ZDtjW2QrND4+Ml09d3wxO2NbZCt3Pj4yXT13O2k9YjtyZXR1cm59bT0obyYtOCkrbXwwO249bz4+PjM7ZG97aWYoIShvPj4+MDwyNTYpKXtsPWNbYSsoaisxNik+PjJdfDA7cT1jW2ErKGp8NCk+PjJdfDA7ZG97aWYoKHF8MCk9PShofDApKXtvPWErKGorMTIpfDA7bj1jW28+PjJdfDA7aWYoKG58MCk9PTApe289YSsoais4KXwwO249Y1tvPj4yXXwwO2lmKChufDApPT0wKXtrPTA7YnJlYWt9fXdoaWxlKDEpe3A9bisyMHwwO3E9Y1twPj4yXXwwO2lmKChxfDApIT0wKXtuPXE7bz1wO2NvbnRpbnVlfXA9bisxNnwwO3E9Y1twPj4yXXwwO2lmKChxfDApPT0wKXticmVha31lbHNle249cTtvPXB9fWlmKG8+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW28+PjJdPTA7az1uO2JyZWFrfX1lbHNle289Y1thK2o+PjJdfDA7aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1wPW8rMTJ8MDtpZigoY1twPj4yXXwwKSE9KGh8MCkpe1hiKCl9bj1xKzh8MDtpZigoY1tuPj4yXXwwKT09KGh8MCkpe2NbcD4+Ml09cTtjW24+PjJdPW87az1xO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChsfDApIT0wKXtuPWNbYSsoaisyMCk+PjJdfDA7bz0yMjQ3Misobjw8Mil8MDtpZigoaHwwKT09KGNbbz4+Ml18MCkpe2Nbbz4+Ml09aztpZigoa3wwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxuKTticmVha319ZWxzZXtpZihsPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfW49bCsxNnwwO2lmKChjW24+PjJdfDApPT0oaHwwKSl7Y1tuPj4yXT1rfWVsc2V7Y1tsKzIwPj4yXT1rfWlmKChrfDApPT0wKXticmVha319aWYoaz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2srMjQ+PjJdPWw7aD1jW2ErKGorOCk+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2srMTY+PjJdPWg7Y1toKzI0Pj4yXT1rO2JyZWFrfX19d2hpbGUoMCk7aD1jW2ErKGorMTIpPj4yXXwwO2lmKChofDApIT0wKXtpZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1trKzIwPj4yXT1oO2NbaCsyND4+Ml09azticmVha319fX1lbHNle2s9Y1thK2o+PjJdfDA7YT1jW2ErKGp8NCk+PjJdfDA7aj0yMjIwOCsobjw8MTw8Mil8MDtpZigoa3wwKSE9KGp8MCkpe2lmKGs+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9aWYoKGNbaysxMj4+Ml18MCkhPShofDApKXtYYigpfX1pZigoYXwwKT09KGt8MCkpe2NbNTU0Ml09Y1s1NTQyXSZ+KDE8PG4pO2JyZWFrfWlmKChhfDApIT0oanwwKSl7aWYoYT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1qPWErOHwwO2lmKChjW2o+PjJdfDApPT0oaHwwKSl7bD1qfWVsc2V7WGIoKX19ZWxzZXtsPWErOHwwfWNbaysxMj4+Ml09YTtjW2w+PjJdPWt9fXdoaWxlKDApO2NbZCs0Pj4yXT1tfDE7Y1tkK20+PjJdPW07aWYoKGR8MCk9PShjWzIyMTg4Pj4yXXwwKSl7Y1syMjE3Nj4+Ml09bTtpPWI7cmV0dXJufX1lbHNle2Nbbj4+Ml09byYtMjtjW2QrND4+Ml09bXwxO2NbZCttPj4yXT1tfWg9bT4+PjM7aWYobT4+PjA8MjU2KXthPWg8PDE7ZT0yMjIwOCsoYTw8Mil8MDtqPWNbNTU0Ml18MDtoPTE8PGg7aWYoKGomaHwwKSE9MCl7aD0yMjIwOCsoYSsyPDwyKXwwO2E9Y1toPj4yXXwwO2lmKGE+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtmPWg7Zz1hfX1lbHNle2NbNTU0Ml09anxoO2Y9MjIyMDgrKGErMjw8Mil8MDtnPWV9Y1tmPj4yXT1kO2NbZysxMj4+Ml09ZDtjW2QrOD4+Ml09ZztjW2QrMTI+PjJdPWU7aT1iO3JldHVybn1mPW0+Pj44O2lmKChmfDApIT0wKXtpZihtPj4+MD4xNjc3NzIxNSl7Zj0zMX1lbHNle3Y9KGYrMTA0ODMyMHwwKT4+PjE2Jjg7dz1mPDx2O3U9KHcrNTIwMTkyfDApPj4+MTYmNDt3PXc8PHU7Zj0odysyNDU3NjB8MCk+Pj4xNiYyO2Y9MTQtKHV8dnxmKSsodzw8Zj4+PjE1KXwwO2Y9bT4+PihmKzd8MCkmMXxmPDwxfX1lbHNle2Y9MH1nPTIyNDcyKyhmPDwyKXwwO2NbZCsyOD4+Ml09ZjtjW2QrMjA+PjJdPTA7Y1tkKzE2Pj4yXT0wO2E9Y1syMjE3Mj4+Ml18MDtoPTE8PGY7YTpkb3tpZigoYSZofDApIT0wKXtnPWNbZz4+Ml18MDtpZigoZnwwKT09MzEpe2Y9MH1lbHNle2Y9MjUtKGY+Pj4xKXwwfWI6ZG97aWYoKGNbZys0Pj4yXSYtOHwwKSE9KG18MCkpe2Y9bTw8ZjthPWc7d2hpbGUoMSl7aD1hKyhmPj4+MzE8PDIpKzE2fDA7Zz1jW2g+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShtfDApKXtlPWc7YnJlYWsgYn1lbHNle2Y9Zjw8MTthPWd9fWlmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2g+PjJdPWQ7Y1tkKzI0Pj4yXT1hO2NbZCsxMj4+Ml09ZDtjW2QrOD4+Ml09ZDticmVhayBhfX1lbHNle2U9Z319d2hpbGUoMCk7Zz1lKzh8MDtmPWNbZz4+Ml18MDtoPWNbMjIxODQ+PjJdfDA7aWYoZT4+PjA8aD4+PjApe1hiKCl9aWYoZj4+PjA8aD4+PjApe1hiKCl9ZWxzZXtjW2YrMTI+PjJdPWQ7Y1tnPj4yXT1kO2NbZCs4Pj4yXT1mO2NbZCsxMj4+Ml09ZTtjW2QrMjQ+PjJdPTA7YnJlYWt9fWVsc2V7Y1syMjE3Mj4+Ml09YXxoO2NbZz4+Ml09ZDtjW2QrMjQ+PjJdPWc7Y1tkKzEyPj4yXT1kO2NbZCs4Pj4yXT1kfX13aGlsZSgwKTt3PShjWzIyMjAwPj4yXXwwKSsgLTF8MDtjWzIyMjAwPj4yXT13O2lmKCh3fDApPT0wKXtkPTIyNjI0fDB9ZWxzZXtpPWI7cmV0dXJufXdoaWxlKDEpe2Q9Y1tkPj4yXXwwO2lmKChkfDApPT0wKXticmVha31lbHNle2Q9ZCs4fDB9fWNbMjIyMDA+PjJdPS0xO2k9YjtyZXR1cm59ZnVuY3Rpb24gd24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtkPWk7aWYoKGF8MCk9PTApe3I9dW4oYil8MDtpPWQ7cmV0dXJuIHJ8MH1pZihiPj4+MD40Mjk0OTY3MjMxKXtjWyhiYigpfDApPj4yXT0xMjtyPTA7aT1kO3JldHVybiByfDB9aWYoYj4+PjA8MTEpe2Y9MTZ9ZWxzZXtmPWIrMTEmLTh9ZT1hKyAtNHwwO2s9Y1tlPj4yXXwwO2w9ayYtODtvPWwrIC04fDA7aD1hK298MDttPWNbMjIxODQ+PjJdfDA7aWYoKGErIC04fDApPj4+MDxtPj4+MCl7WGIoKX1yPWsmMztpZighKChyfDApIT0xJihvfDApPi04KSl7WGIoKX1vPWx8NDtxPWErKG8rIC04KXwwO3A9Y1txPj4yXXwwO2lmKChwJjF8MCk9PTApe1hiKCl9ZG97aWYoKHJ8MCk9PTApe2lmKCEoZj4+PjA8MjU2fGw+Pj4wPChmfDQpPj4+MCk/ISgobC1mfDApPj4+MD5jWzIyNjQ4Pj4yXTw8MT4+PjApOjApe3I9YTtpPWQ7cmV0dXJuIHJ8MH19ZWxzZXtpZighKGw+Pj4wPGY+Pj4wKSl7Zz1sLWZ8MDtpZighKGc+Pj4wPjE1KSl7cj1hO2k9ZDtyZXR1cm4gcnwwfWNbZT4+Ml09ayYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPWd8MztjW3E+PjJdPWNbcT4+Ml18MTt4bihhKyhmKyAtOCl8MCxnKTtyPWE7aT1kO3JldHVybiByfDB9aWYoKGh8MCk9PShjWzIyMTkyPj4yXXwwKSl7Zz0oY1syMjE4MD4+Ml18MCkrbHwwO2lmKCEoZz4+PjA+Zj4+PjApKXticmVha31yPWctZnwwO2NbZT4+Ml09ayYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPXJ8MTtjWzIyMTkyPj4yXT1hKyhmKyAtOCk7Y1syMjE4MD4+Ml09cjtyPWE7aT1kO3JldHVybiByfDB9aWYoKGh8MCk9PShjWzIyMTg4Pj4yXXwwKSl7Zz0oY1syMjE3Nj4+Ml18MCkrbHwwO2lmKGc+Pj4wPGY+Pj4wKXticmVha31oPWctZnwwO2lmKGg+Pj4wPjE1KXtjW2U+PjJdPWsmMXxmfDI7Y1thKygoZnw0KSsgLTgpPj4yXT1ofDE7Y1thKyhnKyAtOCk+PjJdPWg7ZT1hKyhnKyAtNCl8MDtjW2U+PjJdPWNbZT4+Ml0mLTI7ZT1hKyhmKyAtOCl8MH1lbHNle2NbZT4+Ml09ayYxfGd8MjtlPWErKGcrIC00KXwwO2NbZT4+Ml09Y1tlPj4yXXwxO2U9MDtoPTB9Y1syMjE3Nj4+Ml09aDtjWzIyMTg4Pj4yXT1lO3I9YTtpPWQ7cmV0dXJuIHJ8MH1pZigocCYyfDApPT0wPyhnPShwJi04KStsfDAsIShnPj4+MDxmPj4+MCkpOjApe2s9Zy1mfDA7Yj1wPj4+Mztkb3tpZighKHA+Pj4wPDI1Nikpe249Y1thKyhsKzE2KT4+Ml18MDtvPWNbYStvPj4yXXwwO2Rve2lmKChvfDApPT0oaHwwKSl7Yj1hKyhsKzEyKXwwO289Y1tiPj4yXXwwO2lmKChvfDApPT0wKXtiPWErKGwrOCl8MDtvPWNbYj4+Ml18MDtpZigob3wwKT09MCl7aj0wO2JyZWFrfX13aGlsZSgxKXtxPW8rMjB8MDtwPWNbcT4+Ml18MDtpZigocHwwKSE9MCl7bz1wO2I9cTtjb250aW51ZX1wPW8rMTZ8MDtxPWNbcD4+Ml18MDtpZigocXwwKT09MCl7YnJlYWt9ZWxzZXtvPXE7Yj1wfX1pZihiPj4+MDxtPj4+MCl7WGIoKX1lbHNle2NbYj4+Ml09MDtqPW87YnJlYWt9fWVsc2V7Yj1jW2ErbD4+Ml18MDtpZihiPj4+MDxtPj4+MCl7WGIoKX1wPWIrMTJ8MDtpZigoY1twPj4yXXwwKSE9KGh8MCkpe1hiKCl9bT1vKzh8MDtpZigoY1ttPj4yXXwwKT09KGh8MCkpe2NbcD4+Ml09bztjW20+PjJdPWI7aj1vO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChufDApIT0wKXtvPWNbYSsobCsyMCk+PjJdfDA7bT0yMjQ3Misobzw8Mil8MDtpZigoaHwwKT09KGNbbT4+Ml18MCkpe2NbbT4+Ml09ajtpZigoanwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxvKTticmVha319ZWxzZXtpZihuPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfW09bisxNnwwO2lmKChjW20+PjJdfDApPT0oaHwwKSl7Y1ttPj4yXT1qfWVsc2V7Y1tuKzIwPj4yXT1qfWlmKChqfDApPT0wKXticmVha319aWYoaj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2orMjQ+PjJdPW47aD1jW2ErKGwrOCk+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2orMTY+PjJdPWg7Y1toKzI0Pj4yXT1qO2JyZWFrfX19d2hpbGUoMCk7aD1jW2ErKGwrMTIpPj4yXXwwO2lmKChofDApPT0wKXticmVha31pZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tqKzIwPj4yXT1oO2NbaCsyND4+Ml09ajticmVha319fWVsc2V7aj1jW2ErbD4+Ml18MDtsPWNbYStvPj4yXXwwO289MjIyMDgrKGI8PDE8PDIpfDA7aWYoKGp8MCkhPShvfDApKXtpZihqPj4+MDxtPj4+MCl7WGIoKX1pZigoY1tqKzEyPj4yXXwwKSE9KGh8MCkpe1hiKCl9fWlmKChsfDApPT0oanwwKSl7Y1s1NTQyXT1jWzU1NDJdJn4oMTw8Yik7YnJlYWt9ZG97aWYoKGx8MCk9PShvfDApKXtuPWwrOHwwfWVsc2V7aWYobD4+PjA8bT4+PjApe1hiKCl9bT1sKzh8MDtpZigoY1ttPj4yXXwwKT09KGh8MCkpe249bTticmVha31YYigpfX13aGlsZSgwKTtjW2orMTI+PjJdPWw7Y1tuPj4yXT1qfX13aGlsZSgwKTtpZihrPj4+MDwxNil7Y1tlPj4yXT1nfGNbZT4+Ml0mMXwyO3I9YSsoKGd8NCkrIC04KXwwO2Nbcj4+Ml09Y1tyPj4yXXwxO3I9YTtpPWQ7cmV0dXJuIHJ8MH1lbHNle2NbZT4+Ml09Y1tlPj4yXSYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPWt8MztyPWErKChnfDQpKyAtOCl8MDtjW3I+PjJdPWNbcj4+Ml18MTt4bihhKyhmKyAtOCl8MCxrKTtyPWE7aT1kO3JldHVybiByfDB9fX19d2hpbGUoMCk7Zj11bihiKXwwO2lmKChmfDApPT0wKXtyPTA7aT1kO3JldHVybiByfDB9cj1jW2U+PjJdfDA7cj0ociYtOCktKChyJjN8MCk9PTA/ODo0KXwwO0xuKGZ8MCxhfDAsKHI+Pj4wPGI+Pj4wP3I6Yil8MCl8MDt2bihhKTtyPWY7aT1kO3JldHVybiByfDB9ZnVuY3Rpb24geG4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7ZD1pO2g9YStifDA7bD1jW2ErND4+Ml18MDtkb3tpZigobCYxfDApPT0wKXtwPWNbYT4+Ml18MDtpZigobCYzfDApPT0wKXtpPWQ7cmV0dXJufWw9YSsoMC1wKXwwO209cCtifDA7cT1jWzIyMTg0Pj4yXXwwO2lmKGw+Pj4wPHE+Pj4wKXtYYigpfWlmKChsfDApPT0oY1syMjE4OD4+Ml18MCkpe2U9YSsoYis0KXwwO2lmKChjW2U+PjJdJjN8MCkhPTMpe2U9bDtuPW07YnJlYWt9Y1syMjE3Nj4+Ml09bTtjW2U+PjJdPWNbZT4+Ml0mLTI7Y1thKyg0LXApPj4yXT1tfDE7Y1toPj4yXT1tO2k9ZDtyZXR1cm59cz1wPj4+MztpZihwPj4+MDwyNTYpe2U9Y1thKyg4LXApPj4yXXwwO249Y1thKygxMi1wKT4+Ml18MDtvPTIyMjA4KyhzPDwxPDwyKXwwO2lmKChlfDApIT0ob3wwKSl7aWYoZT4+PjA8cT4+PjApe1hiKCl9aWYoKGNbZSsxMj4+Ml18MCkhPShsfDApKXtYYigpfX1pZigobnwwKT09KGV8MCkpe2NbNTU0Ml09Y1s1NTQyXSZ+KDE8PHMpO2U9bDtuPW07YnJlYWt9aWYoKG58MCkhPShvfDApKXtpZihuPj4+MDxxPj4+MCl7WGIoKX1vPW4rOHwwO2lmKChjW28+PjJdfDApPT0obHwwKSl7cj1vfWVsc2V7WGIoKX19ZWxzZXtyPW4rOHwwfWNbZSsxMj4+Ml09bjtjW3I+PjJdPWU7ZT1sO249bTticmVha31yPWNbYSsoMjQtcCk+PjJdfDA7dD1jW2ErKDEyLXApPj4yXXwwO2Rve2lmKCh0fDApPT0obHwwKSl7dT0xNi1wfDA7dD1hKyh1KzQpfDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe3Q9YSt1fDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe289MDticmVha319d2hpbGUoMSl7dT1zKzIwfDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCkhPTApe3M9djt0PXU7Y29udGludWV9dj1zKzE2fDA7dT1jW3Y+PjJdfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7cz11O3Q9dn19aWYodD4+PjA8cT4+PjApe1hiKCl9ZWxzZXtjW3Q+PjJdPTA7bz1zO2JyZWFrfX1lbHNle3M9Y1thKyg4LXApPj4yXXwwO2lmKHM+Pj4wPHE+Pj4wKXtYYigpfXU9cysxMnwwO2lmKChjW3U+PjJdfDApIT0obHwwKSl7WGIoKX1xPXQrOHwwO2lmKChjW3E+PjJdfDApPT0obHwwKSl7Y1t1Pj4yXT10O2NbcT4+Ml09cztvPXQ7YnJlYWt9ZWxzZXtYYigpfX19d2hpbGUoMCk7aWYoKHJ8MCkhPTApe3E9Y1thKygyOC1wKT4+Ml18MDtzPTIyNDcyKyhxPDwyKXwwO2lmKChsfDApPT0oY1tzPj4yXXwwKSl7Y1tzPj4yXT1vO2lmKChvfDApPT0wKXtjWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PHEpO2U9bDtuPW07YnJlYWt9fWVsc2V7aWYocj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1xPXIrMTZ8MDtpZigoY1txPj4yXXwwKT09KGx8MCkpe2NbcT4+Ml09b31lbHNle2NbcisyMD4+Ml09b31pZigob3wwKT09MCl7ZT1sO249bTticmVha319aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW28rMjQ+PjJdPXI7cD0xNi1wfDA7cT1jW2ErcD4+Ml18MDtkb3tpZigocXwwKSE9MCl7aWYocT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbbysxNj4+Ml09cTtjW3ErMjQ+PjJdPW87YnJlYWt9fX13aGlsZSgwKTtwPWNbYSsocCs0KT4+Ml18MDtpZigocHwwKSE9MCl7aWYocD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbbysyMD4+Ml09cDtjW3ArMjQ+PjJdPW87ZT1sO249bTticmVha319ZWxzZXtlPWw7bj1tfX1lbHNle2U9bDtuPW19fWVsc2V7ZT1hO249Yn19d2hpbGUoMCk7bD1jWzIyMTg0Pj4yXXwwO2lmKGg+Pj4wPGw+Pj4wKXtYYigpfW09YSsoYis0KXwwO289Y1ttPj4yXXwwO2lmKChvJjJ8MCk9PTApe2lmKChofDApPT0oY1syMjE5Mj4+Ml18MCkpe3Y9KGNbMjIxODA+PjJdfDApK258MDtjWzIyMTgwPj4yXT12O2NbMjIxOTI+PjJdPWU7Y1tlKzQ+PjJdPXZ8MTtpZigoZXwwKSE9KGNbMjIxODg+PjJdfDApKXtpPWQ7cmV0dXJufWNbMjIxODg+PjJdPTA7Y1syMjE3Nj4+Ml09MDtpPWQ7cmV0dXJufWlmKChofDApPT0oY1syMjE4OD4+Ml18MCkpe3Y9KGNbMjIxNzY+PjJdfDApK258MDtjWzIyMTc2Pj4yXT12O2NbMjIxODg+PjJdPWU7Y1tlKzQ+PjJdPXZ8MTtjW2Urdj4+Ml09djtpPWQ7cmV0dXJufW49KG8mLTgpK258MDttPW8+Pj4zO2Rve2lmKCEobz4+PjA8MjU2KSl7az1jW2ErKGIrMjQpPj4yXXwwO209Y1thKyhiKzEyKT4+Ml18MDtkb3tpZigobXwwKT09KGh8MCkpe289YSsoYisyMCl8MDttPWNbbz4+Ml18MDtpZigobXwwKT09MCl7bz1hKyhiKzE2KXwwO209Y1tvPj4yXXwwO2lmKChtfDApPT0wKXtqPTA7YnJlYWt9fXdoaWxlKDEpe3E9bSsyMHwwO3A9Y1txPj4yXXwwO2lmKChwfDApIT0wKXttPXA7bz1xO2NvbnRpbnVlfXA9bSsxNnwwO3E9Y1twPj4yXXwwO2lmKChxfDApPT0wKXticmVha31lbHNle209cTtvPXB9fWlmKG8+Pj4wPGw+Pj4wKXtYYigpfWVsc2V7Y1tvPj4yXT0wO2o9bTticmVha319ZWxzZXtvPWNbYSsoYis4KT4+Ml18MDtpZihvPj4+MDxsPj4+MCl7WGIoKX1sPW8rMTJ8MDtpZigoY1tsPj4yXXwwKSE9KGh8MCkpe1hiKCl9cD1tKzh8MDtpZigoY1twPj4yXXwwKT09KGh8MCkpe2NbbD4+Ml09bTtjW3A+PjJdPW87aj1tO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChrfDApIT0wKXtsPWNbYSsoYisyOCk+PjJdfDA7bT0yMjQ3MisobDw8Mil8MDtpZigoaHwwKT09KGNbbT4+Ml18MCkpe2NbbT4+Ml09ajtpZigoanwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxsKTticmVha319ZWxzZXtpZihrPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWw9aysxNnwwO2lmKChjW2w+PjJdfDApPT0oaHwwKSl7Y1tsPj4yXT1qfWVsc2V7Y1trKzIwPj4yXT1qfWlmKChqfDApPT0wKXticmVha319aWYoaj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2orMjQ+PjJdPWs7aD1jW2ErKGIrMTYpPj4yXXwwO2Rve2lmKChofDApIT0wKXtpZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tqKzE2Pj4yXT1oO2NbaCsyND4+Ml09ajticmVha319fXdoaWxlKDApO2g9Y1thKyhiKzIwKT4+Ml18MDtpZigoaHwwKSE9MCl7aWYoaD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbaisyMD4+Ml09aDtjW2grMjQ+PjJdPWo7YnJlYWt9fX19ZWxzZXtqPWNbYSsoYis4KT4+Ml18MDthPWNbYSsoYisxMik+PjJdfDA7Yj0yMjIwOCsobTw8MTw8Mil8MDtpZigoanwwKSE9KGJ8MCkpe2lmKGo+Pj4wPGw+Pj4wKXtYYigpfWlmKChjW2orMTI+PjJdfDApIT0oaHwwKSl7WGIoKX19aWYoKGF8MCk9PShqfDApKXtjWzU1NDJdPWNbNTU0Ml0mfigxPDxtKTticmVha31pZigoYXwwKSE9KGJ8MCkpe2lmKGE+Pj4wPGw+Pj4wKXtYYigpfWI9YSs4fDA7aWYoKGNbYj4+Ml18MCk9PShofDApKXtrPWJ9ZWxzZXtYYigpfX1lbHNle2s9YSs4fDB9Y1tqKzEyPj4yXT1hO2Nbaz4+Ml09an19d2hpbGUoMCk7Y1tlKzQ+PjJdPW58MTtjW2Urbj4+Ml09bjtpZigoZXwwKT09KGNbMjIxODg+PjJdfDApKXtjWzIyMTc2Pj4yXT1uO2k9ZDtyZXR1cm59fWVsc2V7Y1ttPj4yXT1vJi0yO2NbZSs0Pj4yXT1ufDE7Y1tlK24+PjJdPW59YT1uPj4+MztpZihuPj4+MDwyNTYpe2I9YTw8MTtoPTIyMjA4KyhiPDwyKXwwO2o9Y1s1NTQyXXwwO2E9MTw8YTtpZigoaiZhfDApIT0wKXtiPTIyMjA4KyhiKzI8PDIpfDA7YT1jW2I+PjJdfDA7aWYoYT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2c9YjtmPWF9fWVsc2V7Y1s1NTQyXT1qfGE7Zz0yMjIwOCsoYisyPDwyKXwwO2Y9aH1jW2c+PjJdPWU7Y1tmKzEyPj4yXT1lO2NbZSs4Pj4yXT1mO2NbZSsxMj4+Ml09aDtpPWQ7cmV0dXJufWY9bj4+Pjg7aWYoKGZ8MCkhPTApe2lmKG4+Pj4wPjE2Nzc3MjE1KXtmPTMxfWVsc2V7dT0oZisxMDQ4MzIwfDApPj4+MTYmODt2PWY8PHU7dD0odis1MjAxOTJ8MCk+Pj4xNiY0O3Y9djw8dDtmPSh2KzI0NTc2MHwwKT4+PjE2JjI7Zj0xNC0odHx1fGYpKyh2PDxmPj4+MTUpfDA7Zj1uPj4+KGYrN3wwKSYxfGY8PDF9fWVsc2V7Zj0wfWE9MjI0NzIrKGY8PDIpfDA7Y1tlKzI4Pj4yXT1mO2NbZSsyMD4+Ml09MDtjW2UrMTY+PjJdPTA7aD1jWzIyMTcyPj4yXXwwO2c9MTw8ZjtpZigoaCZnfDApPT0wKXtjWzIyMTcyPj4yXT1ofGc7Y1thPj4yXT1lO2NbZSsyND4+Ml09YTtjW2UrMTI+PjJdPWU7Y1tlKzg+PjJdPWU7aT1kO3JldHVybn1nPWNbYT4+Ml18MDtpZigoZnwwKT09MzEpe2Y9MH1lbHNle2Y9MjUtKGY+Pj4xKXwwfWE6ZG97aWYoKGNbZys0Pj4yXSYtOHwwKSE9KG58MCkpe2Y9bjw8ZjthPWc7d2hpbGUoMSl7aD1hKyhmPj4+MzE8PDIpKzE2fDA7Zz1jW2g+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShufDApKXticmVhayBhfWVsc2V7Zj1mPDwxO2E9Z319aWYoaD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2g+PjJdPWU7Y1tlKzI0Pj4yXT1hO2NbZSsxMj4+Ml09ZTtjW2UrOD4+Ml09ZTtpPWQ7cmV0dXJufX13aGlsZSgwKTtmPWcrOHwwO2E9Y1tmPj4yXXwwO2g9Y1syMjE4ND4+Ml18MDtpZihnPj4+MDxoPj4+MCl7WGIoKX1pZihhPj4+MDxoPj4+MCl7WGIoKX1jW2ErMTI+PjJdPWU7Y1tmPj4yXT1lO2NbZSs4Pj4yXT1hO2NbZSsxMj4+Ml09ZztjW2UrMjQ+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiB5bihhKXthPWF8MDt2YXIgYj0wO2I9aTtSYihhfDApO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIHpuKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBBbihhKXthPWF8MDtyZXR1cm4gMjI2OTZ9ZnVuY3Rpb24gQm4oYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO2g9aTtpZihlPj4+MD4zNil7Y1soYmIoKXwwKT4+Ml09MjI7cz0wO3Q9MDtJPXM7aT1oO3JldHVybiB0fDB9az1iKzR8MDtqPWIrMTAwfDA7ZG97bD1jW2s+PjJdfDA7aWYobD4+PjA8KGNbaj4+Ml18MCk+Pj4wKXtjW2s+PjJdPWwrMTtvPWRbbD4+MF18MH1lbHNle289RG4oYil8MH19d2hpbGUoKG98MCk9PTMyfChvKyAtOXwwKT4+PjA8NSk7ZG97aWYoKG98MCk9PTQzfChvfDApPT00NSl7bD0oKG98MCk9PTQ1KTw8MzE+PjMxO209Y1trPj4yXXwwO2lmKG0+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1tKzE7bz1kW20+PjBdfDA7YnJlYWt9ZWxzZXtvPURuKGIpfDA7YnJlYWt9fWVsc2V7bD0wfX13aGlsZSgwKTttPShlfDApPT0wO2Rve2lmKChlJi0xN3wwKT09MCYob3wwKT09NDgpe249Y1trPj4yXXwwO2lmKG4+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1uKzE7bz1kW24+PjBdfDB9ZWxzZXtvPURuKGIpfDB9aWYoKG98MzJ8MCkhPTEyMCl7ZT1tPzg6ZTttPTI4O2JyZWFrfWU9Y1trPj4yXXwwO2lmKGU+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1lKzE7bz1kW2U+PjBdfDB9ZWxzZXtvPURuKGIpfDB9aWYoKGRbbysyMjc0NT4+MF18MCk+MTUpe2lmKChjW2o+PjJdfDApPT0wKXtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH1jW2s+PjJdPShjW2s+PjJdfDApKyAtMjtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH1lbHNle2U9MTY7bT00M319ZWxzZXtlPW0/MTA6ZTtpZigoZFtvKzIyNzQ1Pj4wXXwwKT4+PjA8ZT4+PjApe209Mjh9ZWxzZXtmPWNbaz4+Ml18MDtpZigoY1tqPj4yXXwwKSE9MCl7Zj1mKyAtMXwwO2Nbaz4+Ml09Zn1jW2IrMTA0Pj4yXT0wO3M9Y1tiKzg+PjJdfDA7Y1tiKzEwOD4+Ml09cy1mO2Nbaj4+Ml09cztjWyhiYigpfDApPj4yXT0yMjtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH19fXdoaWxlKDApO2lmKChtfDApPT0yOCl7aWYoKGV8MCk9PTEwKXtlPW8rIC00OHwwO2lmKGU+Pj4wPDEwKXtuPTA7d2hpbGUoMSl7bj1uK2V8MDtlPWNbaz4+Ml18MDtpZihlPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09ZSsxO289ZFtlPj4wXXwwfWVsc2V7bz1EbihiKXwwfWU9bysgLTQ4fDA7aWYoIShlPj4+MDwxMCZuPj4+MDw0Mjk0OTY3MjkpKXticmVha31uPW4qMTB8MH1wPTB9ZWxzZXtuPTA7cD0wfWU9bysgLTQ4fDA7aWYoZT4+PjA8MTApe2Rve3M9Vm4obnwwLHB8MCwxMCwwKXwwO3I9STtxPSgoZXwwKTwwKTw8MzE+PjMxO3Q9fnE7aWYocj4+PjA+dD4+PjB8KHJ8MCk9PSh0fDApJnM+Pj4wPn5lPj4+MCl7YnJlYWt9bj1JbihzfDAscnwwLGV8MCxxfDApfDA7cD1JO2U9Y1trPj4yXXwwO2lmKGU+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1lKzE7bz1kW2U+PjBdfDB9ZWxzZXtvPURuKGIpfDB9ZT1vKyAtNDh8MH13aGlsZShlPj4+MDwxMCYocD4+PjA8NDI5NDk2NzI5fChwfDApPT00Mjk0OTY3Mjkmbj4+PjA8MjU3Njk4MDM3OCkpO2lmKCEoZT4+PjA+OSkpe2U9MTA7bT02OX19fWVsc2V7bT00M319YTpkb3tpZigobXwwKT09NDMpe2lmKChlKyAtMSZlfDApPT0wKXttPWFbMjMwMDgrKChlKjIzfDApPj4+NSY3KT4+MF18MDtyPWFbbysyMjc0NT4+MF18MDtuPXImMjU1O2lmKG4+Pj4wPGU+Pj4wKXtvPW47bj0wO2Rve249b3xuPDxtO289Y1trPj4yXXwwO2lmKG8+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1vKzE7cz1kW28+PjBdfDB9ZWxzZXtzPURuKGIpfDB9cj1hW3MrMjI3NDU+PjBdfDA7bz1yJjI1NX13aGlsZShvPj4+MDxlPj4+MCZuPj4+MDwxMzQyMTc3MjgpO3A9MH1lbHNle3A9MDtuPTA7cz1vfXE9S24oLTEsLTEsbXwwKXwwO289STtpZigociYyNTUpPj4+MD49ZT4+PjB8KHA+Pj4wPm8+Pj4wfChwfDApPT0ob3wwKSZuPj4+MD5xPj4+MCkpe289czttPTY5O2JyZWFrfXdoaWxlKDEpe249T24obnwwLHB8MCxtfDApfDA7cD1JO249ciYyNTV8bjtyPWNbaz4+Ml18MDtpZihyPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09cisxO3M9ZFtyPj4wXXwwfWVsc2V7cz1EbihiKXwwfXI9YVtzKzIyNzQ1Pj4wXXwwO2lmKChyJjI1NSk+Pj4wPj1lPj4+MHwocD4+PjA+bz4+PjB8KHB8MCk9PShvfDApJm4+Pj4wPnE+Pj4wKSl7bz1zO209Njk7YnJlYWsgYX19fXE9YVtvKzIyNzQ1Pj4wXXwwO209cSYyNTU7aWYobT4+PjA8ZT4+PjApe249MDtkb3tuPW0rKGVhKG4sZSl8MCl8MDttPWNbaz4+Ml18MDtpZihtPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09bSsxO3I9ZFttPj4wXXwwfWVsc2V7cj1EbihiKXwwfXE9YVtyKzIyNzQ1Pj4wXXwwO209cSYyNTV9d2hpbGUobT4+PjA8ZT4+PjAmbj4+PjA8MTE5MzA0NjQ3KTtwPTB9ZWxzZXtuPTA7cD0wO3I9b31pZigocSYyNTUpPj4+MDxlPj4+MCl7bT1XbigtMSwtMSxlfDAsMCl8MDtvPUk7d2hpbGUoMSl7aWYocD4+PjA+bz4+PjB8KHB8MCk9PShvfDApJm4+Pj4wPm0+Pj4wKXtvPXI7bT02OTticmVhayBhfXM9Vm4obnwwLHB8MCxlfDAsMCl8MDt0PUk7cT1xJjI1NTtpZih0Pj4+MD40Mjk0OTY3Mjk1fCh0fDApPT0tMSZzPj4+MD5+cT4+PjApe289cjttPTY5O2JyZWFrIGF9bj1JbihxfDAsMCxzfDAsdHwwKXwwO3A9STtxPWNbaz4+Ml18MDtpZihxPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09cSsxO3I9ZFtxPj4wXXwwfWVsc2V7cj1EbihiKXwwfXE9YVtyKzIyNzQ1Pj4wXXwwO2lmKCEoKHEmMjU1KT4+PjA8ZT4+PjApKXtvPXI7bT02OTticmVha319fWVsc2V7bz1yO209Njl9fX13aGlsZSgwKTtpZigobXwwKT09Njkpe2lmKChkW28rMjI3NDU+PjBdfDApPj4+MDxlPj4+MCl7ZG97bT1jW2s+PjJdfDA7aWYobT4+PjA8KGNbaj4+Ml18MCk+Pj4wKXtjW2s+PjJdPW0rMTttPWRbbT4+MF18MH1lbHNle209RG4oYil8MH19d2hpbGUoKGRbbSsyMjc0NT4+MF18MCk+Pj4wPGU+Pj4wKTtjWyhiYigpfDApPj4yXT0zNDtwPWc7bj1mfX1pZigoY1tqPj4yXXwwKSE9MCl7Y1trPj4yXT0oY1trPj4yXXwwKSsgLTF9aWYoIShwPj4+MDxnPj4+MHwocHwwKT09KGd8MCkmbj4+PjA8Zj4+PjApKXtpZigoZiYxfDApPT0wJjA9PTAmKGx8MCk9PTApe2NbKGJiKCl8MCk+PjJdPTM0O3Q9SW4oZnwwLGd8MCwtMSwtMSl8MDtzPUk7ST1zO2k9aDtyZXR1cm4gdHwwfWlmKHA+Pj4wPmc+Pj4wfChwfDApPT0oZ3wwKSZuPj4+MD5mPj4+MCl7Y1soYmIoKXwwKT4+Ml09MzQ7cz1nO3Q9ZjtJPXM7aT1oO3JldHVybiB0fDB9fXQ9KChsfDApPDApPDwzMT4+MzE7dD1IbihuXmx8MCxwXnR8MCxsfDAsdHwwKXwwO3M9STtJPXM7aT1oO3JldHVybiB0fDB9ZnVuY3Rpb24gQ24oYSl7YT1hfDA7dmFyIGI9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZT1pO2Y9YSs0fDA7Zz1jW2Y+PjJdfDA7Yj1hKzEwMHwwO2lmKGc+Pj4wPChjW2I+PjJdfDApPj4+MCl7Y1tmPj4yXT1nKzE7aj1kW2c+PjBdfDB9ZWxzZXtqPURuKGEpfDB9aWYoKGp8MCk9PTQzfChqfDApPT00NSl7Zz0oanwwKT09NDUmMTtoPWNbZj4+Ml18MDtpZihoPj4+MDwoY1tiPj4yXXwwKT4+PjApe2NbZj4+Ml09aCsxO2o9ZFtoPj4wXXwwfWVsc2V7aj1EbihhKXwwfWlmKCEoKGorIC00OHwwKT4+PjA8MTApPyhjW2I+PjJdfDApIT0wOjApe2NbZj4+Ml09KGNbZj4+Ml18MCkrIC0xfX1lbHNle2c9MH1pZigoaisgLTQ4fDApPj4+MD45KXtpZigoY1tiPj4yXXwwKT09MCl7az0tMjE0NzQ4MzY0ODtsPTA7ST1rO2k9ZTtyZXR1cm4gbHwwfWNbZj4+Ml09KGNbZj4+Ml18MCkrIC0xO2s9LTIxNDc0ODM2NDg7bD0wO0k9aztpPWU7cmV0dXJuIGx8MH1lbHNle2g9MH13aGlsZSgxKXtoPWorIC00OCtofDA7aj1jW2Y+PjJdfDA7aWYoaj4+PjA8KGNbYj4+Ml18MCk+Pj4wKXtjW2Y+PjJdPWorMTtqPWRbaj4+MF18MH1lbHNle2o9RG4oYSl8MH1sPShqKyAtNDh8MCk+Pj4wPDEwO2lmKCEobCYoaHwwKTwyMTQ3NDgzNjQpKXticmVha31oPWgqMTB8MH1rPSgoaHwwKTwwKTw8MzE+PjMxO2lmKGwpe2Rve2s9Vm4oaHwwLGt8MCwxMCwwKXwwO2g9STtqPUluKGp8MCwoKGp8MCk8MCk8PDMxPj4zMXwwLC00OCwtMSl8MDtoPUluKGp8MCxJfDAsa3wwLGh8MCl8MDtrPUk7aj1jW2Y+PjJdfDA7aWYoaj4+PjA8KGNbYj4+Ml18MCk+Pj4wKXtjW2Y+PjJdPWorMTtqPWRbaj4+MF18MH1lbHNle2o9RG4oYSl8MH19d2hpbGUoKGorIC00OHwwKT4+PjA8MTAmKChrfDApPDIxNDc0ODM2fChrfDApPT0yMTQ3NDgzNiZoPj4+MDwyMDYxNTg0MzAyKSl9aWYoKGorIC00OHwwKT4+PjA8MTApe2Rve2o9Y1tmPj4yXXwwO2lmKGo+Pj4wPChjW2I+PjJdfDApPj4+MCl7Y1tmPj4yXT1qKzE7aj1kW2o+PjBdfDB9ZWxzZXtqPURuKGEpfDB9fXdoaWxlKChqKyAtNDh8MCk+Pj4wPDEwKX1pZigoY1tiPj4yXXwwKSE9MCl7Y1tmPj4yXT0oY1tmPj4yXXwwKSsgLTF9aj0oZ3wwKSE9MDtsPUhuKDAsMCxofDAsa3wwKXwwO2s9aj9JOms7bD1qP2w6aDtJPWs7aT1lO3JldHVybiBsfDB9ZnVuY3Rpb24gRG4oYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtlPWk7aD1iKzEwNHwwO2w9Y1toPj4yXXwwO2lmKCEoKGx8MCkhPTA/KGNbYisxMDg+PjJdfDApPj0obHwwKTowKSl7Zz0zfWlmKChnfDApPT0zPyhmPUVuKGIpfDAsKGZ8MCk+PTApOjApe2w9Y1toPj4yXXwwO2g9Y1tiKzg+PjJdfDA7az1jW2IrND4+Ml18MDtpZigobHwwKSE9MD8oaj1sLShjW2IrMTA4Pj4yXXwwKSsgLTF8MCwoaC1rfDApPihqfDApKTowKXtjW2IrMTAwPj4yXT1rK2p9ZWxzZXtnPTh9aWYoKGd8MCk9PTgpe2NbYisxMDA+PjJdPWh9aWYoKGh8MCkhPTApe2w9YisxMDh8MDtjW2w+PjJdPWgrMS1rKyhjW2w+PjJdfDApfWI9aysgLTF8MDtpZigoZFtiPj4wXXwwfDApPT0oZnwwKSl7bD1mO2k9ZTtyZXR1cm4gbHwwfWFbYj4+MF09ZjtsPWY7aT1lO3JldHVybiBsfDB9Y1tiKzEwMD4+Ml09MDtsPS0xO2k9ZTtyZXR1cm4gbHwwfWZ1bmN0aW9uIEVuKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2c9aTtpPWkrMTZ8MDtlPWc7Zj1iKzh8MDtkb3tpZigoY1tmPj4yXXwwKT09MCl7aj1iKzc0fDA7aD1hW2o+PjBdfDA7YVtqPj4wXT1oKzI1NXxoO2o9YisyMHwwO2g9Yis0NHwwO2lmKChjW2o+PjJdfDApPj4+MD4oY1toPj4yXXwwKT4+PjApe2hjW2NbYiszNj4+Ml0mNjNdKGIsMCwwKXwwfWNbYisxNj4+Ml09MDtjW2IrMjg+PjJdPTA7Y1tqPj4yXT0wO2o9Y1tiPj4yXXwwO2lmKChqJjIwfDApPT0wKXtqPWNbaD4+Ml18MDtjW2Y+PjJdPWo7Y1tiKzQ+PjJdPWo7YnJlYWt9aWYoKGomNHwwKT09MCl7aj0tMTtpPWc7cmV0dXJuIGp8MH1jW2I+PjJdPWp8MzI7aj0tMTtpPWc7cmV0dXJuIGp8MH19d2hpbGUoMCk7aWYoKGhjW2NbYiszMj4+Ml0mNjNdKGIsZSwxKXwwKSE9MSl7aj0tMTtpPWc7cmV0dXJuIGp8MH1qPWRbZT4+MF18MDtpPWc7cmV0dXJuIGp8MH1mdW5jdGlvbiBGbihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MC4wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLjAsSj0wLEs9MCxMPTAuMCxNPTAuMCxOPTAuMCxPPTAuMDtmPWk7aT1pKzYyNHwwO289ZisxMTJ8MDtxPWY7bD1xKzB8MDtqPWwrMTA4fDA7ZG97Y1tsPj4yXT0wO2w9bCs0fDB9d2hpbGUoKGx8MCk8KGp8MCkpO209cSs0fDA7Y1ttPj4yXT1iO2w9cSs4fDA7Y1tsPj4yXT0tMTtjW3ErNDQ+PjJdPWI7Y1txKzc2Pj4yXT0tMTtzPXErMTA0fDA7Y1tzPj4yXT0wO2o9cSsxMDh8MDtjW2o+PjJdPX5iO3A9cSsxMDB8MDtjW3A+PjJdPS0xO249Yjt6PS0xO3doaWxlKDEpe2lmKG4+Pj4wPHo+Pj4wKXtjW20+PjJdPW4rMTt6PWRbbj4+MF18MH1lbHNle3o9RG4ocSl8MH1pZighKCh6fDApPT0zMnwoeisgLTl8MCk+Pj4wPDUpKXticmVha31uPWNbbT4+Ml18MDt6PWNbcD4+Ml18MH1kb3tpZigoenwwKT09NDN8KHp8MCk9PTQ1KXtuPTEtKCgoenwwKT09NDUmMSk8PDEpfDA7ej1jW20+PjJdfDA7aWYoej4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXorMTt6PWRbej4+MF18MDticmVha31lbHNle3o9RG4ocSl8MDticmVha319ZWxzZXtuPTF9fXdoaWxlKDApO0I9MDtkb3tpZigoenwzMnwwKSE9KGFbMjMwMjQrQj4+MF18MCkpe2JyZWFrfWRve2lmKEI+Pj4wPDcpe3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDA7YnJlYWt9ZWxzZXt6PURuKHEpfDA7YnJlYWt9fX13aGlsZSgwKTtCPUIrMXwwfXdoaWxlKEI+Pj4wPDgpO2E6ZG97aWYoKEJ8MCk9PTMpe2c9MjF9ZWxzZSBpZigoQnwwKSE9OCl7aWYoIShCPj4+MDw0KSl7aWYoKEJ8MCk9PTgpe2c9MjU7YnJlYWt9ZWxzZXtnPTIxO2JyZWFrfX1iOmRve2lmKChCfDApPT0wKXtCPTA7ZG97aWYoKHp8MzJ8MCkhPShhWzIzMDQwK0I+PjBdfDApKXticmVhayBifWRve2lmKEI+Pj4wPDIpe3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDA7YnJlYWt9ZWxzZXt6PURuKHEpfDA7YnJlYWt9fX13aGlsZSgwKTtCPUIrMXwwfXdoaWxlKEI+Pj4wPDMpfX13aGlsZSgwKTtpZigoQnwwKT09MCl7ZG97aWYoKHp8MCk9PTQ4KXt6PWNbbT4+Ml18MDtpZih6Pj4+MDwoY1twPj4yXXwwKT4+PjApe2NbbT4+Ml09eisxO3o9ZFt6Pj4wXXwwfWVsc2V7ej1EbihxKXwwfWlmKCh6fDMyfDApIT0xMjApe2lmKChjW3A+PjJdfDApPT0wKXt6PTQ4O2JyZWFrfWNbbT4+Ml09KGNbbT4+Ml18MCkrIC0xO3o9NDg7YnJlYWt9bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtGPWRbbz4+MF18MDtEPTB9ZWxzZXtGPURuKHEpfDA7RD0wfXdoaWxlKDEpe2lmKChGfDApPT00Nil7Zz02NTticmVha31lbHNlIGlmKChGfDApIT00OCl7bz0wO3M9MDtBPTA7ej0wO0M9MDtFPTA7SD0xLjA7Qj0wO3c9MC4wO2JyZWFrfW89Y1ttPj4yXXwwO2lmKG8+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1vKzE7Rj1kW28+PjBdfDA7RD0xO2NvbnRpbnVlfWVsc2V7Rj1EbihxKXwwO0Q9MTtjb250aW51ZX19Yzpkb3tpZigoZ3wwKT09NjUpe289Y1ttPj4yXXwwO2lmKG8+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1vKzE7Rj1kW28+PjBdfDB9ZWxzZXtGPURuKHEpfDB9aWYoKEZ8MCk9PTQ4KXtBPS0xO3o9LTE7d2hpbGUoMSl7bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtGPWRbbz4+MF18MH1lbHNle0Y9RG4ocSl8MH1pZigoRnwwKSE9NDgpe289MDtzPTA7RD0xO0M9MTtFPTA7SD0xLjA7Qj0wO3c9MC4wO2JyZWFrIGN9Sz1JbihBfDAsenwwLC0xLC0xKXwwO0E9Szt6PUl9fWVsc2V7bz0wO3M9MDtBPTA7ej0wO0M9MTtFPTA7SD0xLjA7Qj0wO3c9MC4wfX19d2hpbGUoMCk7ZDp3aGlsZSgxKXtLPUYrIC00OHwwO2Rve2lmKCEoSz4+PjA8MTApKXtHPUZ8MzI7Sj0oRnwwKT09NDY7aWYoISgoRysgLTk3fDApPj4+MDw2fEopKXticmVhayBkfWlmKEope2lmKChDfDApPT0wKXtBPXM7ej1vO0M9MTticmVha31lbHNle0Y9NDY7YnJlYWsgZH19ZWxzZXtLPShGfDApPjU3P0crIC04N3wwOks7Zz03OTticmVha319ZWxzZXtnPTc5fX13aGlsZSgwKTtpZigoZ3wwKT09Nzkpe2c9MDtkb3tpZighKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCkpe2lmKChvfDApPDB8KG98MCk9PTAmcz4+PjA8MTQpe049SCouMDYyNTtMPU47dz13K04qKyhLfDApO2JyZWFrfWlmKChLfDApIT0wJihFfDApPT0wKXtFPTE7TD1IO3c9dytIKi41fWVsc2V7TD1IfX1lbHNle0w9SDtCPUsrKEI8PDQpfDB9fXdoaWxlKDApO3M9SW4oc3wwLG98MCwxLDApfDA7bz1JO0Q9MTtIPUx9Rj1jW20+PjJdfDA7aWYoRj4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPUYrMTtGPWRbRj4+MF18MDtjb250aW51ZX1lbHNle0Y9RG4ocSl8MDtjb250aW51ZX19aWYoKER8MCk9PTApe2lmKChjW3A+PjJdfDApIT0wPyh2PWNbbT4+Ml18MCxjW20+PjJdPXYrIC0yLChDfDApIT0wKTowKXtjW20+PjJdPXYrIC0zfXc9KyhufDApKjAuMDticmVhayBhfUs9KEN8MCk9PTA7dj1LP3M6QTt6PUs/bzp6O2lmKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCl7ZG97Qj1CPDw0O3M9SW4oc3wwLG98MCwxLDApfDA7bz1JfXdoaWxlKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCl9aWYoISgoRnwzMnwwKT09MTEyPyh1PUNuKHEpfDAsdD1JLCEoKHV8MCk9PTAmKHR8MCk9PS0yMTQ3NDgzNjQ4KSk6MCkpe2lmKChjW3A+PjJdfDApPT0wKXt1PTA7dD0wfWVsc2V7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTE7dT0wO3Q9MH19bz1Pbih2fDAsenwwLDIpfDA7bz1JbihvfDAsSXwwLC0zMiwtMSl8MDtvPUluKG98MCxJfDAsdXwwLHR8MCl8MDtwPUk7aWYoKEJ8MCk9PTApe3c9KyhufDApKjAuMDticmVhayBhfWlmKChwfDApPjB8KHB8MCk9PTAmbz4+PjA+MTA3NCl7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7YnJlYWsgYX1pZigocHwwKTwtMXwocHwwKT09LTEmbz4+PjA8NDI5NDk2NjExNil7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWsgYX1pZigoQnwwKT4tMSl7ZG97Qj1CPDwxO2lmKCEodz49LjUpKXtIPXd9ZWxzZXtIPXcrLTEuMDtCPUJ8MX13PXcrSDtvPUluKG98MCxwfDAsLTEsLTEpfDA7cD1JfXdoaWxlKChCfDApPi0xKX1wPUluKG98MCxwfDAsMTEwNiwwKXwwO0s9STtkb3tpZigoS3wwKTwwfChLfDApPT0wJnA+Pj4wPDUzPyhyPShwfDApPDA/MDpwLChyfDApPDUzKTowKXtwPTg0LXJ8MDtkb3tpZigocHwwKT4xMDIzKXtxPXArIC0xMDIzfDA7aWYoKHF8MCk8PTEwMjMpe3A9cTtIPTguOTg4NDY1Njc0MzExNThlKzMwNzticmVha31wPXArIC0yMDQ2fDA7cD0ocHwwKT4xMDIzPzEwMjM6cDtIPXl9ZWxzZXtpZighKChwfDApPC0xMDIyKSl7SD0xLjA7YnJlYWt9cT1wKzEwMjJ8MDtpZighKChxfDApPC0xMDIyKSl7cD1xO0g9Mi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWt9cD1wKzIwNDR8MDtwPShwfDApPC0xMDIyPy0xMDIyOnA7SD0wLjB9fXdoaWxlKDApO0o9T24ocCsxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO009KyhufDApO0w9K1NiKCsoSCoraFtrPj4zXSksK00pO2lmKCEoKHJ8MCk8MzImdyE9MC4wKSl7SD1NO2JyZWFrfUs9QiYxO0g9TTtCPShLXjEpK0J8MDt3PShLfDApPT0wPzAuMDp3fWVsc2V7Zz0xMTR9fXdoaWxlKDApO2lmKChnfDApPT0xMTQpe0g9KyhufDApO0w9MC4wfXc9SCp3KyhMK0gqKyhCPj4+MCkpLUw7aWYoISh3IT0wLjApKXtjWyhiYigpfDApPj4yXT0zNH1kb3tpZigob3wwKT4xMDIzKXt3PXcqOC45ODg0NjU2NzQzMTE1OGUrMzA3O249bysgLTEwMjN8MDtpZigobnwwKTw9MTAyMyl7bz1uO2JyZWFrfW89bysgLTIwNDZ8MDtvPShvfDApPjEwMjM/MTAyMzpvO3c9dyo4Ljk4ODQ2NTY3NDMxMTU4ZSszMDd9ZWxzZXtpZighKChvfDApPC0xMDIyKSl7YnJlYWt9dz13KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O249bysxMDIyfDA7aWYoISgobnwwKTwtMTAyMikpe289bjticmVha31vPW8rMjA0NHwwO289KG98MCk8LTEwMjI/LTEwMjI6bzt3PXcqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDh9fXdoaWxlKDApO0o9T24obysxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO3c9dyoraFtrPj4zXTticmVhayBhfX13aGlsZSgwKTtHPTA7d2hpbGUoMSl7aWYoKHp8MCk9PTQ2KXtnPTEzOTticmVha31lbHNlIGlmKCh6fDApIT00OCl7cj0wO0Y9MDtDPTA7YnJlYWt9cj1jW20+PjJdfDA7aWYocj4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXIrMTt6PWRbcj4+MF18MDtHPTE7Y29udGludWV9ZWxzZXt6PURuKHEpfDA7Rz0xO2NvbnRpbnVlfX1lOmRve2lmKChnfDApPT0xMzkpe3I9Y1ttPj4yXXwwO2lmKHI+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1yKzE7ej1kW3I+PjBdfDB9ZWxzZXt6PURuKHEpfDB9aWYoKHp8MCk9PTQ4KXtyPS0xO0Y9LTE7d2hpbGUoMSl7dD1jW20+PjJdfDA7aWYodD4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXQrMTt6PWRbdD4+MF18MH1lbHNle3o9RG4ocSl8MH1pZigoenwwKSE9NDgpe0c9MTtDPTE7YnJlYWsgZX1LPUluKHJ8MCxGfDAsLTEsLTEpfDA7cj1LO0Y9SX19ZWxzZXtyPTA7Rj0wO0M9MX19fXdoaWxlKDApO2Nbbz4+Ml09MDtEPXorIC00OHwwO0o9KHp8MCk9PTQ2O2Y6ZG97aWYoRD4+PjA8MTB8Sil7dD1vKzQ5NnwwO0U9MDtCPTA7QT0wO3Y9MDt1PTA7d2hpbGUoMSl7ZG97aWYoSil7aWYoKEN8MCk9PTApe3I9RTtGPUI7Qz0xfWVsc2V7YnJlYWsgZn19ZWxzZXtKPUluKEV8MCxCfDAsMSwwKXwwO0I9STtLPSh6fDApIT00ODtpZigodnwwKT49MTI1KXtpZighSyl7RT1KO2JyZWFrfWNbdD4+Ml09Y1t0Pj4yXXwxO0U9SjticmVha31FPW8rKHY8PDIpfDA7aWYoKEF8MCkhPTApe0Q9eisgLTQ4KygoY1tFPj4yXXwwKSoxMHwwKXwwfWNbRT4+Ml09RDtBPUErMXwwO0Q9KEF8MCk9PTk7RT1KO0c9MTtBPUQ/MDpBO3Y9KEQmMSkrdnwwO3U9Sz9KOnV9fXdoaWxlKDApO3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDB9ZWxzZXt6PURuKHEpfDB9RD16KyAtNDh8MDtKPSh6fDApPT00NjtpZighKEQ+Pj4wPDEwfEopKXtnPTE2MjticmVha319fWVsc2V7RT0wO0I9MDtBPTA7dj0wO3U9MDtnPTE2Mn19d2hpbGUoMCk7aWYoKGd8MCk9PTE2Mil7Sz0oQ3wwKT09MDtyPUs/RTpyO0Y9Sz9COkZ9dD0oR3wwKSE9MDtpZih0Pyh6fDMyfDApPT0xMDE6MCl7ej1DbihxKXwwO3E9STtpZigoenwwKT09MCYocXwwKT09LTIxNDc0ODM2NDgpe2lmKChjW3A+PjJdfDApPT0wKXt6PTA7cT0wfWVsc2V7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTE7ej0wO3E9MH19cj1Jbih6fDAscXwwLHJ8MCxGfDApfDA7Rj1JfWVsc2V7aWYoKHp8MCk+LTE/KGNbcD4+Ml18MCkhPTA6MCl7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTF9fWlmKCF0KXtjWyhiYigpfDApPj4yXT0yMjtjW3M+PjJdPTA7Sz1jW2w+PjJdfDA7Y1tqPj4yXT1LLShjW20+PjJdfDApO2NbcD4+Ml09Szt3PTAuMDticmVha31wPWNbbz4+Ml18MDtpZigocHwwKT09MCl7dz0rKG58MCkqMC4wO2JyZWFrfWlmKChyfDApPT0oRXwwKSYoRnwwKT09KEJ8MCkmKChCfDApPDB8KEJ8MCk9PTAmRT4+PjA8MTApKXt3PSsobnwwKSorKHA+Pj4wKTticmVha31pZigoRnwwKT4wfChGfDApPT0wJnI+Pj4wPjUzNyl7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7YnJlYWt9aWYoKEZ8MCk8LTF8KEZ8MCk9PS0xJnI+Pj4wPDQyOTQ5NjYxMTYpe2NbKGJiKCl8MCk+PjJdPTM0O3c9KyhufDApKjIuMjI1MDczODU4NTA3MjAxNGUtMzA4KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O2JyZWFrfWlmKChBfDApIT0wKXtpZigoQXwwKTw5KXtxPW8rKHY8PDIpfDA7cD1jW3E+PjJdfDA7ZG97cD1wKjEwfDA7QT1BKzF8MH13aGlsZSgoQXwwKSE9OSk7Y1txPj4yXT1wfXY9disxfDB9ZG97aWYoKHV8MCk8OT8odXwwKTw9KHJ8MCkmKHJ8MCk8MTg6MCl7aWYoKHJ8MCk9PTkpe3c9KyhufDApKisoKGNbbz4+Ml18MCk+Pj4wKTticmVhayBhfWlmKChyfDApPDkpe3c9KyhufDApKisoKGNbbz4+Ml18MCk+Pj4wKS8rKGNbMjMwNTYrKDgtcjw8Mik+PjJdfDApO2JyZWFrIGF9Sz0oZWEociwtMyl8MCkrODB8MDtwPWNbbz4+Ml18MDtpZigoS3wwKTw9MzA/KHA+Pj5LfDApIT0wOjApe2JyZWFrfXc9KyhufDApKisocD4+PjApKisoY1syMzA1NisocisgLTEwPDwyKT4+Ml18MCk7YnJlYWsgYX19d2hpbGUoMCk7cD0ocnwwKSU5fDA7aWYoKHB8MCk9PTApe3A9MDtxPTB9ZWxzZXtzPShyfDApPi0xP3A6cCs5fDA7cT1jWzIzMDU2Kyg4LXM8PDIpPj4yXXwwO2lmKCh2fDApIT0wKXt0PTFlOS8ocXwwKXwwO3A9MDt6PTA7dT0wO2Rve0c9bysodTw8Mil8MDtKPWNbRz4+Ml18MDtLPSgoSj4+PjApLyhxPj4+MCl8MCkrenwwO2NbRz4+Ml09Szt6PWVhKChKPj4+MCklKHE+Pj4wKXwwLHQpfDA7Sj11O3U9dSsxfDA7aWYoKEp8MCk9PShwfDApJihLfDApPT0wKXtwPXUmMTI3O3I9cisgLTl8MH19d2hpbGUoKHV8MCkhPSh2fDApKTtpZigoenwwKSE9MCl7Y1tvKyh2PDwyKT4+Ml09ejt2PXYrMXwwfX1lbHNle3A9MDt2PTB9cT0wO3I9OS1zK3J8MH1nOndoaWxlKDEpe3M9bysocDw8Mil8MDtpZigocnwwKTwxOCl7ZG97dT0wO3M9disxMjd8MDt3aGlsZSgxKXtzPXMmMTI3O3Q9bysoczw8Mil8MDt6PU9uKGNbdD4+Ml18MCwwLDI5KXwwO3o9SW4oenwwLEl8MCx1fDAsMCl8MDt1PUk7aWYodT4+PjA+MHwodXwwKT09MCZ6Pj4+MD4xZTkpe0s9V24oenwwLHV8MCwxZTksMCl8MDt6PVhuKHp8MCx1fDAsMWU5LDApfDA7dT1LfWVsc2V7dT0wfWNbdD4+Ml09ejt0PShzfDApPT0ocHwwKTtpZighKChzfDApIT0odisxMjcmMTI3fDApfHQpKXt2PSh6fDApPT0wP3M6dn1pZih0KXticmVha31lbHNle3M9cysgLTF8MH19cT1xKyAtMjl8MH13aGlsZSgodXwwKT09MCl9ZWxzZXtpZigocnwwKSE9MTgpe2JyZWFrfWRve2lmKCEoKGNbcz4+Ml18MCk+Pj4wPDkwMDcxOTkpKXtyPTE4O2JyZWFrIGd9dT0wO3Q9disxMjd8MDt3aGlsZSgxKXt0PXQmMTI3O3o9bysodDw8Mil8MDtBPU9uKGNbej4+Ml18MCwwLDI5KXwwO0E9SW4oQXwwLEl8MCx1fDAsMCl8MDt1PUk7aWYodT4+PjA+MHwodXwwKT09MCZBPj4+MD4xZTkpe0s9V24oQXwwLHV8MCwxZTksMCl8MDtBPVhuKEF8MCx1fDAsMWU5LDApfDA7dT1LfWVsc2V7dT0wfWNbej4+Ml09QTt6PSh0fDApPT0ocHwwKTtpZighKCh0fDApIT0odisxMjcmMTI3fDApfHopKXt2PShBfDApPT0wP3Q6dn1pZih6KXticmVha31lbHNle3Q9dCsgLTF8MH19cT1xKyAtMjl8MH13aGlsZSgodXwwKT09MCl9cD1wKzEyNyYxMjc7aWYoKHB8MCk9PSh2fDApKXtLPXYrMTI3JjEyNzt2PW8rKCh2KzEyNiYxMjcpPDwyKXwwO2Nbdj4+Ml09Y1t2Pj4yXXxjW28rKEs8PDIpPj4yXTt2PUt9Y1tvKyhwPDwyKT4+Ml09dTtyPXIrOXwwfWg6d2hpbGUoMSl7cz12KzEmMTI3O3Q9bysoKHYrMTI3JjEyNyk8PDIpfDA7d2hpbGUoMSl7ej0ocnwwKT09MTg7dT0ocnwwKT4yNz85OjE7d2hpbGUoMSl7QT0wO3doaWxlKDEpe0I9QStwJjEyNztpZigoQnwwKT09KHZ8MCkpe0E9MjticmVha31CPWNbbysoQjw8Mik+PjJdfDA7RD1jWzIzMDQ4KyhBPDwyKT4+Ml18MDtpZihCPj4+MDxEPj4+MCl7QT0yO2JyZWFrfUM9QSsxfDA7aWYoQj4+PjA+RD4+PjApe2JyZWFrfWlmKChDfDApPDIpe0E9Q31lbHNle0E9QzticmVha319aWYoKEF8MCk9PTImeil7YnJlYWsgaH1xPXUrcXwwO2lmKChwfDApPT0odnwwKSl7cD12fWVsc2V7YnJlYWt9fXo9KDE8PHUpKyAtMXwwO0E9MWU5Pj4+dTtCPXA7Qz0wO2Rve0c9bysocDw8Mil8MDtKPWNbRz4+Ml18MDtLPShKPj4+dSkrQ3wwO2NbRz4+Ml09SztDPWVhKEomeixBKXwwO0s9KHB8MCk9PShCfDApJihLfDApPT0wO3A9cCsxJjEyNztyPUs/cisgLTl8MDpyO0I9Sz9wOkJ9d2hpbGUoKHB8MCkhPSh2fDApKTtpZigoQ3wwKT09MCl7cD1CO2NvbnRpbnVlfWlmKChzfDApIT0oQnwwKSl7YnJlYWt9Y1t0Pj4yXT1jW3Q+PjJdfDE7cD1CfWNbbysodjw8Mik+PjJdPUM7cD1CO3Y9c31yPXAmMTI3O2lmKChyfDApPT0odnwwKSl7Y1tvKyhzKyAtMTw8Mik+PjJdPTA7dj1zfUg9KygoY1tvKyhyPDwyKT4+Ml18MCk+Pj4wKTtyPXArMSYxMjc7aWYoKHJ8MCk9PSh2fDApKXt2PXYrMSYxMjc7Y1tvKyh2KyAtMTw8Mik+PjJdPTB9dz0rKG58MCk7SD13KihIKjEuMGU5KyArKChjW28rKHI8PDIpPj4yXXwwKT4+PjApKTtuPXErNTN8MDtyPXErMTEyN3wwO2Rve2lmKChyfDApPDUzKXtzPShyfDApPDA/MDpyO2lmKChzfDApPj01Myl7TT0wLjA7dD0xO049MC4wO2JyZWFrfXQ9MTA1LXN8MDtkb3tpZigodHwwKT4xMDIzKXt1PXQrIC0xMDIzfDA7aWYoKHV8MCk8PTEwMjMpe3Q9dTtMPTguOTg4NDY1Njc0MzExNThlKzMwNzticmVha310PXQrIC0yMDQ2fDA7dD0odHwwKT4xMDIzPzEwMjM6dDtMPXl9ZWxzZXtpZighKCh0fDApPC0xMDIyKSl7TD0xLjA7YnJlYWt9dT10KzEwMjJ8MDtpZighKCh1fDApPC0xMDIyKSl7dD11O0w9Mi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWt9dD10KzIwNDR8MDt0PSh0fDApPC0xMDIyPy0xMDIyOnQ7TD0wLjB9fXdoaWxlKDApO0s9T24odCsxMDIzfDAsMCw1Mil8MDt0PUk7Y1trPj4yXT1LO2Nbays0Pj4yXT10O0w9K1NiKCsoTCoraFtrPj4zXSksK0gpO3Q9NTMtc3wwO2Rve2lmKCh0fDApPjEwMjMpe3U9dCsgLTEwMjN8MDtpZigodXwwKTw9MTAyMyl7dD11O009OC45ODg0NjU2NzQzMTE1OGUrMzA3O2JyZWFrfXQ9dCsgLTIwNDZ8MDt0PSh0fDApPjEwMjM/MTAyMzp0O009eX1lbHNle2lmKCEoKHR8MCk8LTEwMjIpKXtNPTEuMDticmVha311PXQrMTAyMnwwO2lmKCEoKHV8MCk8LTEwMjIpKXt0PXU7TT0yLjIyNTA3Mzg1ODUwNzIwMTRlLTMwODticmVha310PXQrMjA0NHwwO3Q9KHR8MCk8LTEwMjI/LTEwMjI6dDtNPTAuMH19d2hpbGUoMCk7Sz1Pbih0KzEwMjN8MCwwLDUyKXwwO3Q9STtjW2s+PjJdPUs7Y1trKzQ+PjJdPXQ7Tz0rUGEoK0gsKyhNKitoW2s+PjNdKSk7TT1MO3Q9MTtOPU87SD1MKyhILU8pfWVsc2V7cz01MztNPTAuMDt0PTA7Tj0wLjB9fXdoaWxlKDApO3U9cCsyJjEyNztkb3tpZigodXwwKSE9KHZ8MCkpe289Y1tvKyh1PDwyKT4+Ml18MDtkb3tpZighKG8+Pj4wPDVlOCkpe2lmKG8+Pj4wPjVlOCl7Tj13Ki43NStOO2JyZWFrfWlmKChwKzMmMTI3fDApPT0odnwwKSl7Tj13Ki41K047YnJlYWt9ZWxzZXtOPXcqLjc1K047YnJlYWt9fWVsc2V7aWYoKG98MCk9PTA/KHArMyYxMjd8MCk9PSh2fDApOjApe2JyZWFrfU49dyouMjUrTn19d2hpbGUoMCk7aWYoKDUzLXN8MCk8PTEpe2JyZWFrfWlmKCtQYSgrTiwxLjApIT0wLjApe2JyZWFrfU49TisxLjB9fXdoaWxlKDApO3c9SCtOLU07ZG97aWYoKG4mMjE0NzQ4MzY0NCk+Pj4wPjEwMTkpe2lmKCtUKCt3KT49OTAwNzE5OTI1NDc0MDk5Mi4wKXt0PSh0fDApIT0wJihzfDApPT0ocnwwKT8wOnQ7cT1xKzF8MDt3PXcqLjV9aWYoKHErNTB8MCk8PTEwMjE/ISgodHwwKSE9MCZOIT0wLjApOjApe2JyZWFrfWNbKGJiKCl8MCk+PjJdPTM0fX13aGlsZSgwKTtkb3tpZigocXwwKT4xMDIzKXt3PXcqOC45ODg0NjU2NzQzMTE1OGUrMzA3O249cSsgLTEwMjN8MDtpZigobnwwKTw9MTAyMyl7cT1uO2JyZWFrfXE9cSsgLTIwNDZ8MDtxPShxfDApPjEwMjM/MTAyMzpxO3c9dyo4Ljk4ODQ2NTY3NDMxMTU4ZSszMDd9ZWxzZXtpZighKChxfDApPC0xMDIyKSl7YnJlYWt9dz13KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O249cSsxMDIyfDA7aWYoISgobnwwKTwtMTAyMikpe3E9bjticmVha31xPXErMjA0NHwwO3E9KHF8MCk8LTEwMjI/LTEwMjI6cTt3PXcqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDh9fXdoaWxlKDApO0o9T24ocSsxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO3c9dyoraFtrPj4zXTticmVha31lbHNlIGlmKChCfDApPT0zKXtuPWNbbT4+Ml18MDtpZihuPj4+MDwoY1twPj4yXXwwKT4+PjApe2NbbT4+Ml09bisxO249ZFtuPj4wXXwwfWVsc2V7bj1EbihxKXwwfWlmKChufDApPT00MCl7bj0xfWVsc2V7aWYoKGNbcD4+Ml18MCk9PTApe3c9eDticmVha31jW20+PjJdPShjW20+PjJdfDApKyAtMTt3PXg7YnJlYWt9d2hpbGUoMSl7bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtvPWRbbz4+MF18MH1lbHNle289RG4ocSl8MH1pZighKChvKyAtNDh8MCk+Pj4wPDEwfChvKyAtNjV8MCk+Pj4wPDI2KT8hKChvKyAtOTd8MCk+Pj4wPDI2fChvfDApPT05NSk6MCl7YnJlYWt9bj1uKzF8MH1pZigob3wwKT09NDEpe3c9eDticmVha31pZigoY1twPj4yXXwwKT09MCl7dz14O2JyZWFrfW89KGNbbT4+Ml18MCkrIC0xfDA7Y1ttPj4yXT1vO2lmKChufDApPT0wKXt3PXg7YnJlYWt9ZG97bj1uKyAtMXwwO289bysgLTF8MH13aGlsZSgobnwwKSE9MCk7Y1ttPj4yXT1vO3c9eDticmVha31lbHNle249Y1ttPj4yXXwwO2lmKChjW3A+PjJdfDApIT0wKXtuPW4rIC0xfDA7Y1ttPj4yXT1ufWNbKGJiKCl8MCk+PjJdPTIyO2Nbcz4+Ml09MDtLPWNbbD4+Ml18MDtjW2o+PjJdPUstbjtjW3A+PjJdPUs7dz0wLjA7YnJlYWt9fWVsc2V7Zz0yNX19d2hpbGUoMCk7aWYoKGd8MCk9PTIxKXtpZigoY1twPj4yXXwwKSE9MD8oQT0oY1ttPj4yXXwwKSsgLTF8MCxjW20+PjJdPUEsIShCPj4+MDw0KSk6MCl7ZG97QT1BKyAtMXwwO0I9QisgLTF8MH13aGlsZShCPj4+MD4zKTtjW20+PjJdPUE7Zz0yNX1lbHNle2c9MjV9fWlmKChnfDApPT0yNSl7dz0rKG58MCkqeX1nPShjW20+PjJdfDApLShjW2w+PjJdfDApKyhjW2o+PjJdfDApfDA7aWYoKGV8MCk9PTApe2k9ZjtyZXR1cm4rd31pZigoZ3wwKSE9MCl7Yj1iK2d8MH1jW2U+PjJdPWI7aT1mO3JldHVybit3fWZ1bmN0aW9uIEduKCl7Y1sxNTgwXT1vO2NbMjQ5Ml09bztjWzI1MThdPW87Y1s1MzQ2XT1vO2NbNTY4NF09b31mdW5jdGlvbiBIbihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtiPWItZC0oYz4+PjA+YT4+PjB8MCk+Pj4wO3JldHVybihJPWIsYS1jPj4+MHwwKXwwfWZ1bmN0aW9uIEluKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2M9YStjPj4+MDtyZXR1cm4oST1iK2QrKGM+Pj4wPGE+Pj4wfDApPj4+MCxjfDApfDB9ZnVuY3Rpb24gSm4oYil7Yj1ifDA7dmFyIGM9MDtjPWI7d2hpbGUoYVtjPj4wXXwwKXtjPWMrMXwwfXJldHVybiBjLWJ8MH1mdW5jdGlvbiBLbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7aWYoKGN8MCk8MzIpe0k9Yj4+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31JPTA7cmV0dXJuIGI+Pj5jLTMyfDB9ZnVuY3Rpb24gTG4oYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7aWYoKGV8MCk+PTQwOTYpcmV0dXJuIG5iKGJ8MCxkfDAsZXwwKXwwO2Y9YnwwO2lmKChiJjMpPT0oZCYzKSl7d2hpbGUoYiYzKXtpZigoZXwwKT09MClyZXR1cm4gZnwwO2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXdoaWxlKChlfDApPj00KXtjW2I+PjJdPWNbZD4+Ml07Yj1iKzR8MDtkPWQrNHwwO2U9ZS00fDB9fXdoaWxlKChlfDApPjApe2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXJldHVybiBmfDB9ZnVuY3Rpb24gTW4oYixjLGQpe2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTA7aWYoKGN8MCk8KGJ8MCkmKGJ8MCk8KGMrZHwwKSl7ZT1iO2M9YytkfDA7Yj1iK2R8MDt3aGlsZSgoZHwwKT4wKXtiPWItMXwwO2M9Yy0xfDA7ZD1kLTF8MDthW2I+PjBdPWFbYz4+MF18MH1iPWV9ZWxzZXtMbihiLGMsZCl8MH1yZXR1cm4gYnwwfWZ1bmN0aW9uIE5uKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wO2Y9YitlfDA7aWYoKGV8MCk+PTIwKXtkPWQmMjU1O2k9YiYzO2g9ZHxkPDw4fGQ8PDE2fGQ8PDI0O2c9ZiZ+MztpZihpKXtpPWIrNC1pfDA7d2hpbGUoKGJ8MCk8KGl8MCkpe2FbYj4+MF09ZDtiPWIrMXwwfX13aGlsZSgoYnwwKTwoZ3wwKSl7Y1tiPj4yXT1oO2I9Yis0fDB9fXdoaWxlKChifDApPChmfDApKXthW2I+PjBdPWQ7Yj1iKzF8MH1yZXR1cm4gYi1lfDB9ZnVuY3Rpb24gT24oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtJPWI8PGN8KGEmKDE8PGMpLTE8PDMyLWMpPj4+MzItYztyZXR1cm4gYTw8Y31JPWE8PGMtMzI7cmV0dXJuIDB9ZnVuY3Rpb24gUG4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtJPWI+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31JPShifDApPDA/LTE6MDtyZXR1cm4gYj4+Yy0zMnwwfWZ1bmN0aW9uIFFuKGIpe2I9YnwwO3ZhciBjPTA7Yz1hW24rKGI+Pj4yNCk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gY3wwO2M9YVtuKyhiPj4xNiYyNTUpPj4wXXwwO2lmKChjfDApPDgpcmV0dXJuIGMrOHwwO2M9YVtuKyhiPj44JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYysxNnwwO3JldHVybihhW24rKGImMjU1KT4+MF18MCkrMjR8MH1mdW5jdGlvbiBSbihiKXtiPWJ8MDt2YXIgYz0wO2M9YVttKyhiJjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gY3wwO2M9YVttKyhiPj44JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYys4fDA7Yz1hW20rKGI+PjE2JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYysxNnwwO3JldHVybihhW20rKGI+Pj4yNCk+PjBdfDApKzI0fDB9ZnVuY3Rpb24gU24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9YSY2NTUzNTtkPWImNjU1MzU7Yz1lYShkLGYpfDA7ZT1hPj4+MTY7ZD0oYz4+PjE2KSsoZWEoZCxlKXwwKXwwO2I9Yj4+PjE2O2E9ZWEoYixmKXwwO3JldHVybihJPShkPj4+MTYpKyhlYShiLGUpfDApKygoKGQmNjU1MzUpK2F8MCk+Pj4xNil8MCxkK2E8PDE2fGMmNjU1MzV8MCl8MH1mdW5jdGlvbiBUbihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1iPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtpPSgoYnwwKTwwPy0xOjApPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtmPWQ+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2U9KChkfDApPDA/LTE6MCk+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2g9SG4oal5hLGleYixqLGkpfDA7Zz1JO2I9Zl5qO2E9ZV5pO2E9SG4oKFluKGgsZyxIbihmXmMsZV5kLGYsZSl8MCxJLDApfDApXmIsSV5hLGIsYSl8MDtyZXR1cm4gYXwwfWZ1bmN0aW9uIFVuKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtmPWk7aT1pKzh8MDtqPWZ8MDtoPWI+PjMxfCgoYnwwKTwwPy0xOjApPDwxO2c9KChifDApPDA/LTE6MCk+PjMxfCgoYnwwKTwwPy0xOjApPDwxO2w9ZT4+MzF8KChlfDApPDA/LTE6MCk8PDE7az0oKGV8MCk8MD8tMTowKT4+MzF8KChlfDApPDA/LTE6MCk8PDE7Yj1IbihoXmEsZ15iLGgsZyl8MDthPUk7WW4oYixhLEhuKGxeZCxrXmUsbCxrKXwwLEksail8MDthPUhuKGNbaj4+Ml1eaCxjW2orND4+Ml1eZyxoLGcpfDA7Yj1JO2k9ZjtyZXR1cm4oST1iLGEpfDB9ZnVuY3Rpb24gVm4oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZT1hO2Y9YzthPVNuKGUsZil8MDtjPUk7cmV0dXJuKEk9KGVhKGIsZil8MCkrKGVhKGQsZSl8MCkrY3xjJjAsYXwwfDApfDB9ZnVuY3Rpb24gV24oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7YT1ZbihhLGIsYyxkLDApfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiBYbihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MDtnPWk7aT1pKzh8MDtmPWd8MDtZbihhLGIsZCxlLGYpfDA7aT1nO3JldHVybihJPWNbZis0Pj4yXXwwLGNbZj4+Ml18MCl8MH1mdW5jdGlvbiBZbihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7aD1hO2o9YjtpPWo7bD1kO2c9ZTtrPWc7aWYoKGl8MCk9PTApe2c9KGZ8MCkhPTA7aWYoKGt8MCk9PTApe2lmKGcpe2NbZj4+Ml09KGg+Pj4wKSUobD4+PjApO2NbZis0Pj4yXT0wfWs9MDttPShoPj4+MCkvKGw+Pj4wKT4+PjA7cmV0dXJuKEk9ayxtKXwwfWVsc2V7aWYoIWcpe2w9MDttPTA7cmV0dXJuKEk9bCxtKXwwfWNbZj4+Ml09YXwwO2NbZis0Pj4yXT1iJjA7bD0wO209MDtyZXR1cm4oST1sLG0pfDB9fW09KGt8MCk9PTA7ZG97aWYoKGx8MCkhPTApe2lmKCFtKXtrPShRbihrfDApfDApLShRbihpfDApfDApfDA7aWYoaz4+PjA8PTMxKXttPWsrMXwwO2w9MzEta3wwO2E9ay0zMT4+MzE7aj1tO2I9aD4+PihtPj4+MCkmYXxpPDxsO2E9aT4+PihtPj4+MCkmYTtrPTA7bD1oPDxsO2JyZWFrfWlmKChmfDApPT0wKXtsPTA7bT0wO3JldHVybihJPWwsbSl8MH1jW2Y+PjJdPWF8MDtjW2YrND4+Ml09anxiJjA7bD0wO209MDtyZXR1cm4oST1sLG0pfDB9az1sLTF8MDtpZigoayZsfDApIT0wKXtsPShRbihsfDApfDApKzMzLShRbihpfDApfDApfDA7cD02NC1sfDA7bT0zMi1sfDA7bj1tPj4zMTtvPWwtMzJ8MDthPW8+PjMxO2o9bDtiPW0tMT4+MzEmaT4+PihvPj4+MCl8KGk8PG18aD4+PihsPj4+MCkpJmE7YT1hJmk+Pj4obD4+PjApO2s9aDw8cCZuO2w9KGk8PHB8aD4+PihvPj4+MCkpJm58aDw8bSZsLTMzPj4zMTticmVha31pZigoZnwwKSE9MCl7Y1tmPj4yXT1rJmg7Y1tmKzQ+PjJdPTB9aWYoKGx8MCk9PTEpe289anxiJjA7cD1hfDB8MDtyZXR1cm4oST1vLHApfDB9ZWxzZXtwPVJuKGx8MCl8MDtvPWk+Pj4ocD4+PjApfDA7cD1pPDwzMi1wfGg+Pj4ocD4+PjApfDA7cmV0dXJuKEk9byxwKXwwfX1lbHNle2lmKG0pe2lmKChmfDApIT0wKXtjW2Y+PjJdPShpPj4+MCklKGw+Pj4wKTtjW2YrND4+Ml09MH1vPTA7cD0oaT4+PjApLyhsPj4+MCk+Pj4wO3JldHVybihJPW8scCl8MH1pZigoaHwwKT09MCl7aWYoKGZ8MCkhPTApe2NbZj4+Ml09MDtjW2YrND4+Ml09KGk+Pj4wKSUoaz4+PjApfW89MDtwPShpPj4+MCkvKGs+Pj4wKT4+PjA7cmV0dXJuKEk9byxwKXwwfWw9ay0xfDA7aWYoKGwma3wwKT09MCl7aWYoKGZ8MCkhPTApe2NbZj4+Ml09YXwwO2NbZis0Pj4yXT1sJml8YiYwfW89MDtwPWk+Pj4oKFJuKGt8MCl8MCk+Pj4wKTtyZXR1cm4oST1vLHApfDB9az0oUW4oa3wwKXwwKS0oUW4oaXwwKXwwKXwwO2lmKGs+Pj4wPD0zMCl7YT1rKzF8MDtsPTMxLWt8MDtqPWE7Yj1pPDxsfGg+Pj4oYT4+PjApO2E9aT4+PihhPj4+MCk7az0wO2w9aDw8bDticmVha31pZigoZnwwKT09MCl7bz0wO3A9MDtyZXR1cm4oST1vLHApfDB9Y1tmPj4yXT1hfDA7Y1tmKzQ+PjJdPWp8YiYwO289MDtwPTA7cmV0dXJuKEk9byxwKXwwfX13aGlsZSgwKTtpZigoanwwKT09MCl7Zz1sO2U9MDtpPTB9ZWxzZXtoPWR8MHwwO2c9Z3xlJjA7ZT1JbihoLGcsLTEsLTEpfDA7ZD1JO2k9MDtkb3ttPWw7bD1rPj4+MzF8bDw8MTtrPWl8azw8MTttPWI8PDF8bT4+PjMxfDA7bj1iPj4+MzF8YTw8MXwwO0huKGUsZCxtLG4pfDA7cD1JO289cD4+MzF8KChwfDApPDA/LTE6MCk8PDE7aT1vJjE7Yj1IbihtLG4sbyZoLCgoKHB8MCk8MD8tMTowKT4+MzF8KChwfDApPDA/LTE6MCk8PDEpJmcpfDA7YT1JO2o9ai0xfDB9d2hpbGUoKGp8MCkhPTApO2c9bDtlPTB9aD0wO2lmKChmfDApIT0wKXtjW2Y+PjJdPWI7Y1tmKzQ+PjJdPWF9bz0oa3wwKT4+PjMxfChnfGgpPDwxfChoPDwxfGs+Pj4zMSkmMHxlO3A9KGs8PDF8MD4+PjMxKSYtMnxpO3JldHVybihJPW8scCl8MH0KCgoKZnVuY3Rpb24gT2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7bT1pO2k9aSsyMjR8MDtsPW0rOHwwO3M9bTtvPW0rMTkyfDA7ZD1tKzE4OHwwO2s9bSsxODR8MDtwPW0rMTgwfDA7dT1zO2NbdT4+Ml09Mzc7Y1t1KzQ+PjJdPTA7dT1zKzF8MDtxPWYrNHwwO3I9Y1txPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2FbdT4+MF09NDM7dT1zKzJ8MH1pZigociY1MTJ8MCkhPTApe2FbdT4+MF09MzU7dT11KzF8MH10PXUrMnwwO2FbdT4+MF09MTA4O2FbdSsxPj4wXT0xMDg7dT1yJjc0O2Rve2lmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTExN319d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO3Q9bDtjW3Q+PjJdPWg7Y1t0KzQ+PjJdPWo7aD13aShvLDIzLHUscyxsKXwwO2o9bytofDA7cT1jW3E+PjJdJjE3Njtkb3tpZigocXwwKT09MzIpe3E9an1lbHNlIGlmKChxfDApPT0xNil7cT1hW28+PjBdfDA7aWYocTw8MjQ+PjI0PT00M3xxPDwyND4+MjQ9PTQ1KXtxPW8rMXwwO2JyZWFrfWlmKChofDApPjEmcTw8MjQ+PjI0PT00OD8odT1hW28rMT4+MF18MCx1PDwyND4+MjQ9PTg4fHU8PDI0Pj4yND09MTIwKTowKXtxPW8rMnwwfWVsc2V7bj0yMX19ZWxzZXtuPTIxfX13aGlsZSgwKTtpZigobnwwKT09MjEpe3E9b31uPWNbZisyOD4+Ml18MDtjW3A+PjJdPW47bj1uKzR8MDtjW24+PjJdPShjW24+PjJdfDApKzE7S2kobyxxLGosbCxkLGsscCk7bj1jW3A+PjJdfDA7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApIT0wKXtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWxjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKTtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWZ1bmN0aW9uIFBpKGIsZCxlLGYsZyxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPStqO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO2w9aTtpPWkrMzA0fDA7cD1sO3U9bCsyMzJ8MDtyPWwrMjYwfDA7dD1sKzI0OHwwO2Q9bCsyNDR8MDtuPWwrMjQwfDA7bz1sKzI1MnwwO209bCsyNTZ8MDt2PXU7Y1t2Pj4yXT0zNztjW3YrND4+Ml09MDt2PXUrMXwwO3M9Zis0fDA7dz1jW3M+PjJdfDA7aWYoKHcmMjA0OHwwKSE9MCl7YVt2Pj4wXT00Mzt2PXUrMnwwfWlmKCh3JjEwMjR8MCkhPTApe2Fbdj4+MF09MzU7dj12KzF8MH14PXcmMjYwO3k9dz4+PjE0O2Rve2lmKCh4fDApPT0yNjApe2lmKCh5JjF8MCk9PTApe2Fbdj4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt2Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt2Pj4wXT00Njt3PXYrMnwwO2FbdisxPj4wXT00MjtpZigoeHwwKT09MjU2KXtpZigoeSYxfDApPT0wKXthW3c+PjBdPTEwMTt2PTE7YnJlYWt9ZWxzZXthW3c+PjBdPTY5O3Y9MTticmVha319ZWxzZSBpZigoeHwwKT09NCl7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDI7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MDt2PTE7YnJlYWt9fWVsc2V7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDM7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MTt2PTE7YnJlYWt9fX19d2hpbGUoMCk7Y1t0Pj4yXT1yO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtpZih2KXtjW3A+PjJdPWNbZis4Pj4yXTt5PXArNHwwO2hbaz4+M109ajtjW3k+PjJdPWNbaz4+Ml07Y1t5KzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9ZWxzZXtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWlmKCh3fDApPjI5KXt3PShhWzEzMzY4XXwwKT09MDtpZih2KXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2NbcD4+Ml09Y1tmKzg+PjJdO3k9cCs0fDA7aFtrPj4zXT1qO2NbeT4+Ml09Y1trPj4yXTtjW3krND4+Ml09Y1trKzQ+PjJdO3c9Q2kodCx3LHUscCl8MH1lbHNle2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eT1wKzR8MDtoW2s+PjNdPWo7Y1t5Pj4yXT1jW2s+PjJdO2NbeSs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0zMil7cz11fWVsc2UgaWYoKHN8MCk9PTE2KXtzPWFbdj4+MF18MDtpZihzPDwyND4+MjQ9PTQzfHM8PDI0Pj4yND09NDUpe3M9disxfDA7YnJlYWt9aWYoKHd8MCk+MSZzPDwyND4+MjQ9PTQ4Pyh5PWFbdisxPj4wXXwwLHk8PDI0Pj4yND09ODh8eTw8MjQ+PjI0PT0xMjApOjApe3M9disyfDB9ZWxzZXtxPTQ4fX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwzKXwwO2lmKChwfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXg9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09eDt4PXgrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtRaShyLHMsdSxwLGQsbixvKTtvPWNbbz4+Ml18MDt4PW8rNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1MaShtLGNbZT4+Ml18MCxwLGNbZD4+Ml18MCxjW24+PjJdfDAsZixnKTt5PWNbbT4+Ml18MDtjW2U+PjJdPXk7Y1tiPj4yXT15O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1sO3JldHVybn12bih0KTtpPWw7cmV0dXJufWZ1bmN0aW9uIFFpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO2s9aTtpPWkrMzJ8MDtvPWs7bD1rKzEyfDA7cT1jW2o+PjJdfDA7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW28+PjJdPTEzNDQ4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NDgsbyl9bT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dD1jW3ErOD4+Ml18MDtpZighKChjW3ErMTI+PjJdfDApLXQ+PjI+Pj4wPm0+Pj4wKSl7eT1YYSg0KXwwO2NbeT4+Ml09MjEzMDQ7d2IoeXwwLDIxMzc2LDE5Nil9bT1jW3QrKG08PDIpPj4yXXwwO2lmKChtfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbaj4+Ml18MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbbz4+Ml09MTM2MDg7Y1tvKzQ+PjJdPTIwODtjW28rOD4+Ml09MDtjZygxMzYwOCxvKX1vPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtxPWNbais4Pj4yXXwwO2lmKCEoKGNbaisxMj4+Ml18MCktcT4+Mj4+PjA+bz4+PjApKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbcSsobzw8Mik+PjJdfDA7aWYoKGp8MCk9PTApe3k9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfW1jW2NbKGNbaj4+Ml18MCkrMjA+PjJdJjEyN10obCxqKTtjW2g+PjJdPWY7bz1hW2I+PjBdfDA7aWYobzw8MjQ+PjI0PT00M3xvPDwyND4+MjQ9PTQ1KXt5PXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLG8pfDA7dD1jW2g+PjJdfDA7Y1toPj4yXT10KzQ7Y1t0Pj4yXT15O3Q9YisxfDB9ZWxzZXt0PWJ9bz1lO2E6ZG97aWYoKChvLXR8MCk+MT8oYVt0Pj4wXXwwKT09NDg6MCk/KHA9dCsxfDAseT1hW3A+PjBdfDAseTw8MjQ+PjI0PT04OHx5PDwyND4+MjQ9PTEyMCk6MCl7eT14Y1tjWyhjW20+PjJdfDApKzQ0Pj4yXSY2M10obSw0OCl8MDt4PWNbaD4+Ml18MDtjW2g+PjJdPXgrNDtjW3g+PjJdPXk7dD10KzJ8MDt4PXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLGFbcD4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrNDtjW3k+PjJdPXg7aWYodD4+PjA8ZT4+PjApe3E9dDt3aGlsZSgxKXtwPWFbcT4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9eT1wPDwyND4+MjQ7aWYoISgoeSsgLTQ4fDApPj4+MDwxMCk/ISgoKHl8MzIpKyAtOTd8MCk+Pj4wPDYpOjApe3A9dDticmVhayBhfXE9cSsxfDA7aWYoIShxPj4+MDxlPj4+MCkpe3A9dDticmVha319fWVsc2V7cD10O3E9dH19ZWxzZXtzPTE1fX13aGlsZSgwKTtiOmRve2lmKChzfDApPT0xNSl7aWYodD4+PjA8ZT4+PjApe3E9dDt3aGlsZSgxKXtwPWFbcT4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cz1xKzF8MDtpZighKCgocDw8MjQ+PjI0KSsgLTQ4fDApPj4+MDwxMCkpe3A9dDticmVhayBifWlmKHM+Pj4wPGU+Pj4wKXtxPXN9ZWxzZXtwPXQ7cT1zO2JyZWFrfX19ZWxzZXtwPXQ7cT10fX19d2hpbGUoMCk7cz1hW2w+PjBdfDA7aWYoKHMmMSk9PTApe3M9KHMmMjU1KT4+PjF9ZWxzZXtzPWNbbCs0Pj4yXXwwfWlmKChzfDApIT0wKXtpZigocHwwKSE9KHF8MCk/KHI9cSsgLTF8MCxyPj4+MD5wPj4+MCk6MCl7cz1wO2Rve3k9YVtzPj4wXXwwO2Fbcz4+MF09YVtyPj4wXXwwO2Fbcj4+MF09eTtzPXMrMXwwO3I9cisgLTF8MH13aGlsZShzPj4+MDxyPj4+MCl9dj1vY1tjWyhjW2o+PjJdfDApKzE2Pj4yXSYxMjddKGopfDA7aWYocD4+PjA8cT4+PjApe3Q9bCsxfDA7cj1sKzR8MDt1PWwrOHwwO3g9MDt3PTA7cz1wO3doaWxlKDEpe3k9YVsoKGFbbD4+MF0mMSk9PTA/dDpjW3U+PjJdfDApK3c+PjBdfDA7aWYoeTw8MjQ+PjI0PjAmKHh8MCk9PSh5PDwyND4+MjR8MCkpe3g9Y1toPj4yXXwwO2NbaD4+Ml09eCs0O2NbeD4+Ml09djt4PWFbbD4+MF18MDtpZigoeCYxKT09MCl7eT0oeCYyNTUpPj4+MX1lbHNle3k9Y1tyPj4yXXwwfXg9MDt3PSh3Pj4+MDwoeSsgLTF8MCk+Pj4wJjEpK3d8MH1BPXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLGFbcz4+MF18MCl8MDt6PWNbaD4+Ml18MDt5PXorNHwwO2NbaD4+Ml09eTtjW3o+PjJdPUE7cz1zKzF8MDtpZighKHM+Pj4wPHE+Pj4wKSl7YnJlYWt9ZWxzZXt4PXgrMXwwfX19ZWxzZXt5PWNbaD4+Ml18MH1wPWYrKHAtYjw8Mil8MDtpZigocHwwKSE9KHl8MCk/KG49eSsgLTR8MCxuPj4+MD5wPj4+MCk6MCl7ZG97QT1jW3A+PjJdfDA7Y1twPj4yXT1jW24+PjJdO2Nbbj4+Ml09QTtwPXArNHwwO249bisgLTR8MH13aGlsZShwPj4+MDxuPj4+MCl9fWVsc2V7dWNbY1soY1ttPj4yXXwwKSs0OD4+Ml0mMzFdKG0scCxxLGNbaD4+Ml18MCl8MDt5PShjW2g+PjJdfDApKyhxLXA8PDIpfDA7Y1toPj4yXT15fWM6ZG97aWYocT4+PjA8ZT4+PjApe3doaWxlKDEpe249YVtxPj4wXXwwO2lmKG48PDI0Pj4yND09NDYpe2JyZWFrfXo9eGNbY1soY1ttPj4yXXwwKSs0ND4+Ml0mNjNdKG0sbil8MDtBPWNbaD4+Ml18MDt5PUErNHwwO2NbaD4+Ml09eTtjW0E+PjJdPXo7cT1xKzF8MDtpZighKHE+Pj4wPGU+Pj4wKSl7YnJlYWsgY319ej1vY1tjWyhjW2o+PjJdfDApKzEyPj4yXSYxMjddKGopfDA7QT1jW2g+PjJdfDA7eT1BKzR8MDtjW2g+PjJdPXk7Y1tBPj4yXT16O3E9cSsxfDB9fXdoaWxlKDApO3VjW2NbKGNbbT4+Ml18MCkrNDg+PjJdJjMxXShtLHEsZSx5KXwwO209KGNbaD4+Ml18MCkrKG8tcTw8Mil8MDtjW2g+PjJdPW07aWYoKGR8MCkhPShlfDApKXttPWYrKGQtYjw8Mil8MH1jW2c+PjJdPW07aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59Zz1jW2wrOD4+Ml18MDtpZigoZ3wwKT09MCl7aT1rO3JldHVybn12bihnKTtpPWs7cmV0dXJufWZ1bmN0aW9uIFJpKGIsZCxlLGYsZyxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPStqO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7bD1pO2k9aSszMDR8MDtwPWw7dT1sKzIzMnwwO3I9bCsyNjB8MDt0PWwrMjQ4fDA7bT1sKzI0NHwwO2Q9bCsyNDB8MDtvPWwrMjUyfDA7bj1sKzI1NnwwO3g9dTtjW3g+PjJdPTM3O2NbeCs0Pj4yXT0wO3g9dSsxfDA7cz1mKzR8MDt2PWNbcz4+Ml18MDtpZigodiYyMDQ4fDApIT0wKXthW3g+PjBdPTQzO3g9dSsyfDB9aWYoKHYmMTAyNHwwKSE9MCl7YVt4Pj4wXT0zNTt4PXgrMXwwfXc9diYyNjA7dj12Pj4+MTQ7ZG97aWYoKHd8MCk9PTI2MCl7YVt4Pj4wXT03Njt3PXgrMXwwO2lmKCh2JjF8MCk9PTApe2Fbdz4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt3Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt4Pj4wXT00NjthW3grMT4+MF09NDI7YVt4KzI+PjBdPTc2O3g9eCszfDA7aWYoKHd8MCk9PTQpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAyO3Y9MTticmVha31lbHNle2FbeD4+MF09NzA7dj0xO2JyZWFrfX1lbHNlIGlmKCh3fDApPT0yNTYpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAxO3Y9MTticmVha31lbHNle2FbeD4+MF09Njk7dj0xO2JyZWFrfX1lbHNle2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAzO3Y9MTticmVha31lbHNle2FbeD4+MF09NzE7dj0xO2JyZWFrfX19fXdoaWxlKDApO2NbdD4+Ml09cjtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7aWYodil7Y1twPj4yXT1jW2YrOD4+Ml07eD1wKzR8MDtoW2s+PjNdPWo7Y1t4Pj4yXT1jW2s+PjJdO2NbeCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWVsc2V7aFtrPj4zXT1qO2NbcD4+Ml09Y1trPj4yXTtjW3ArND4+Ml09Y1trKzQ+PjJdO3c9d2kociwzMCx3LHUscCl8MH1pZigod3wwKT4yOSl7dz0oYVsxMzM2OF18MCk9PTA7aWYodil7aWYodz8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtjW3A+PjJdPWNbZis4Pj4yXTt4PXArNHwwO2hbaz4+M109ajtjW3g+PjJdPWNbaz4+Ml07Y1t4KzQ+PjJdPWNbays0Pj4yXTt3PUNpKHQsdyx1LHApfDB9ZWxzZXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2hbaz4+M109ajtjW3A+PjJdPWNbaz4+Ml07Y1twKzQ+PjJdPWNbays0Pj4yXTt3PUNpKHQsdyx1LHApfDB9dD1jW3Q+PjJdfDA7aWYoKHR8MCk9PTApe3g9WGEoNCl8MDtjW3g+PjJdPTIyNjgwO3diKHh8MCwyMjcyOCwyMDYpfWVsc2V7dj10fX1lbHNle3Y9Y1t0Pj4yXXwwO3Q9MH11PXYrd3wwO3M9Y1tzPj4yXSYxNzY7ZG97aWYoKHN8MCk9PTMyKXtzPXV9ZWxzZSBpZigoc3wwKT09MTYpe3M9YVt2Pj4wXXwwO2lmKHM8PDI0Pj4yND09NDN8czw8MjQ+PjI0PT00NSl7cz12KzF8MDticmVha31pZigod3wwKT4xJnM8PDI0Pj4yND09NDg/KHg9YVt2KzE+PjBdfDAseDw8MjQ+PjI0PT04OHx4PDwyND4+MjQ9PTEyMCk6MCl7cz12KzJ8MH1lbHNle3E9NDh9fWVsc2V7cT00OH19d2hpbGUoMCk7aWYoKHF8MCk9PTQ4KXtzPXZ9aWYoKHZ8MCkhPShyfDApKXtwPXVuKHc8PDMpfDA7aWYoKHB8MCk9PTApe3g9WGEoNCl8MDtjW3g+PjJdPTIyNjgwO3diKHh8MCwyMjcyOCwyMDYpfWVsc2V7cj12O3E9cH19ZWxzZXtxPTB9dz1jW2YrMjg+PjJdfDA7Y1tvPj4yXT13O3c9dys0fDA7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxO1FpKHIscyx1LHAsbSxkLG8pO289Y1tvPj4yXXwwO3c9bys0fDA7eD1jW3c+PjJdfDA7Y1t3Pj4yXT14KyAtMTtpZigoeHwwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfUxpKG4sY1tlPj4yXXwwLHAsY1ttPj4yXXwwLGNbZD4+Ml18MCxmLGcpO3g9Y1tuPj4yXXwwO2NbZT4+Ml09eDtjW2I+PjJdPXg7aWYoKHF8MCkhPTApe3ZuKHEpfWlmKCh0fDApPT0wKXtpPWw7cmV0dXJufXZuKHQpO2k9bDtyZXR1cm59ZnVuY3Rpb24gU2koYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO2Q9aTtpPWkrMTkyfDA7bj1kO289ZCsxODB8MDtrPWQrMTYwfDA7bD1kKzEyfDA7YVtvKzA+PjBdPWFbMTIyNzI+PjBdfDA7YVtvKzE+PjBdPWFbMTIyNzM+PjBdfDA7YVtvKzI+PjBdPWFbMTIyNzQ+PjBdfDA7YVtvKzM+PjBdPWFbMTIyNzU+PjBdfDA7YVtvKzQ+PjBdPWFbMTIyNzY+PjBdfDA7YVtvKzU+PjBdPWFbMTIyNzc+PjBdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXA9Y1szMzQwXXwwO2Nbbj4+Ml09aDtvPXdpKGssMjAscCxvLG4pfDA7aD1rK298MDtwPWNbZis0Pj4yXSYxNzY7ZG97aWYoKHB8MCk9PTMyKXtwPWh9ZWxzZSBpZigocHwwKT09MTYpe3A9YVtrPj4wXXwwO2lmKHA8PDI0Pj4yND09NDN8cDw8MjQ+PjI0PT00NSl7cD1rKzF8MDticmVha31pZigob3wwKT4xJnA8PDI0Pj4yND09NDg/KHE9YVtrKzE+PjBdfDAscTw8MjQ+PjI0PT04OHxxPDwyND4+MjQ9PTEyMCk6MCl7cD1rKzJ8MH1lbHNle209MTF9fWVsc2V7bT0xMX19d2hpbGUoMCk7aWYoKG18MCk9PTExKXtwPWt9bT1jW2YrMjg+PjJdfDA7cT1tKzR8MDtjW3E+PjJdPShjW3E+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW24+PjJdPTEzNDQ4O2Nbbis0Pj4yXT0yMDg7Y1tuKzg+PjJdPTA7Y2coMTM0NDgsbil9cT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7bj1jW20rOD4+Ml18MDtpZigoY1ttKzEyPj4yXXwwKS1uPj4yPj4+MD5xPj4+MD8oaj1jW24rKHE8PDIpPj4yXXwwLChqfDApIT0wKTowKXtuPW0rNHwwO3E9Y1tuPj4yXXwwO2Nbbj4+Ml09cSsgLTE7aWYoKHF8MCk9PTApe2xjW2NbKGNbbT4+Ml18MCkrOD4+Ml0mMjU1XShtKX11Y1tjWyhjW2o+PjJdfDApKzQ4Pj4yXSYzMV0oaixrLGgsbCl8MDtqPWwrKG88PDIpfDA7aWYoKHB8MCk9PShofDApKXtxPWo7cD1jW2U+PjJdfDA7TGkoYixwLGwscSxqLGYsZyk7aT1kO3JldHVybn1xPWwrKHAtazw8Mil8MDtwPWNbZT4+Ml18MDtMaShiLHAsbCxxLGosZixnKTtpPWQ7cmV0dXJufXE9WGEoNCl8MDtjW3E+PjJdPTIxMzA0O3diKHF8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIFRpKGUsZixnLGgsaixrLGwsbSxuKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDt2YXIgbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO3A9aTtpPWkrMzJ8MDtxPXA7cj1wKzI0fDA7dT1wKzIwfDA7dD1wKzE2fDA7cz1wKzEyfDA7eT1jW2orMjg+PjJdfDA7RD15KzR8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3E+PjJdPTEzNDU2O2NbcSs0Pj4yXT0yMDg7Y1txKzg+PjJdPTA7Y2coMTM0NTYscSl9eD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7ej1jW3krOD4+Ml18MDtpZigoY1t5KzEyPj4yXXwwKS16Pj4yPj4+MD54Pj4+MD8odz1jW3orKHg8PDIpPj4yXXwwLCh3fDApIT0wKTowKXtDPXkrNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbeT4+Ml18MCkrOD4+Ml0mMjU1XSh5KX1jW2s+PjJdPTA7YTpkb3tpZigobXwwKSE9KG58MCkpe3g9dys4fDA7eT0wO2I6d2hpbGUoMSl7ej15O3k9Zzt3aGlsZSgxKXtpZigoenwwKSE9MCl7Zz15O2JyZWFrIGF9aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RD0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7Zz1EPzA6eTt5PUQ/MDp5fWVsc2V7Zz15fX1lbHNle2c9MDt5PTB9ej0oZ3wwKT09MDtkb3tpZigoaHwwKSE9MCl7aWYoKGNbaCsxMj4+Ml18MCk9PShjW2grMTY+PjJdfDApPyhvY1tjWyhjW2g+PjJdfDApKzM2Pj4yXSYxMjddKGgpfDApPT0tMTowKXtvPTIwO2JyZWFrfWlmKCF6KXtvPTIxO2JyZWFrIGJ9fWVsc2V7bz0yMH19d2hpbGUoMCk7aWYoKG98MCk9PTIwKXtvPTA7aWYoeil7aD0wO289MjE7YnJlYWsgYn1lbHNle2g9MH19aWYoKGhjW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjYzXSh3LGFbbT4+MF18MCwwKXwwKTw8MjQ+PjI0PT0zNyl7bz0yMzticmVha316PWFbbT4+MF18MDtpZih6PDwyND4+MjQ+LTE/KHY9Y1t4Pj4yXXwwLCEoKGJbdisoejw8MjQ+PjI0PDwxKT4+MV0mODE5Mik9PTApKTowKXtvPTM0O2JyZWFrfXo9ZysxMnwwO0I9Y1t6Pj4yXXwwO0E9ZysxNnwwO2lmKChCfDApPT0oY1tBPj4yXXwwKSl7Qj1vY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSYxMjddKGcpfDB9ZWxzZXtCPWRbQj4+MF18MH1EPXhjW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjYzXSh3LEImMjU1KXwwO2lmKEQ8PDI0Pj4yND09KHhjW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjYzXSh3LGFbbT4+MF18MCl8MCk8PDI0Pj4yNCl7bz01OTticmVha31jW2s+PjJdPTQ7ej00fWM6ZG97aWYoKG98MCk9PTIzKXtvPTA7ej1tKzF8MDtpZigoenwwKT09KG58MCkpe289MjQ7YnJlYWsgYn15PWhjW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjYzXSh3LGFbej4+MF18MCwwKXwwO2lmKHk8PDI0Pj4yND09NDh8eTw8MjQ+PjI0PT02OSl7ej1tKzJ8MDtpZigoenwwKT09KG58MCkpe289Mjc7YnJlYWsgYn1tPXo7ej1oY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSY2M10odyxhW3o+PjBdfDAsMCl8MH1lbHNle209ejt6PXk7eT0wfUQ9Y1soY1tmPj4yXXwwKSszNj4+Ml18MDtjW3Q+PjJdPWc7Y1tzPj4yXT1oO2NbciswPj4yXT1jW3QrMD4+Ml07Y1txKzA+PjJdPWNbcyswPj4yXTtuY1tEJjMxXSh1LGYscixxLGosayxsLHoseSk7bT1tKzF8MDtnPWNbdT4+Ml18MH1lbHNlIGlmKChvfDApPT0zNCl7d2hpbGUoMSl7bz0wO209bSsxfDA7aWYoKG18MCk9PShufDApKXttPW47YnJlYWt9ej1hW20+PjBdfDA7aWYoISh6PDwyND4+MjQ+LTEpKXticmVha31pZigoYlt2Kyh6PDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7YnJlYWt9ZWxzZXtvPTM0fX1CPWg7QT1oO3doaWxlKDEpe2lmKChnfDApIT0wKXtpZigoY1tnKzEyPj4yXXwwKT09KGNbZysxNj4+Ml18MCkpe0Q9KG9jW2NbKGNbZz4+Ml18MCkrMzY+PjJdJjEyN10oZyl8MCk9PS0xO2c9RD8wOmc7eT1EPzA6eX19ZWxzZXtnPTB9Qz0oZ3wwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZihDKXt6PUI7YnJlYWt9ZWxzZXtnPXk7YnJlYWsgY319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZihDXihCfDApPT0wKXt6PUI7QT1CfWVsc2V7Zz15O2JyZWFrIGN9fWVsc2V7ej0wO2g9MDtvPTQ1fX1lbHNle3o9QjtvPTQ1fX13aGlsZSgwKTtpZigob3wwKT09NDUpe289MDtpZihDKXtnPXk7YnJlYWsgY31lbHNle0E9MH19Qj1nKzEyfDA7RD1jW0I+PjJdfDA7Qz1nKzE2fDA7aWYoKER8MCk9PShjW0M+PjJdfDApKXtEPW9jW2NbKGNbZz4+Ml18MCkrMzY+PjJdJjEyN10oZyl8MH1lbHNle0Q9ZFtEPj4wXXwwfWlmKCEoKEQmMjU1KTw8MjQ+PjI0Pi0xKSl7Zz15O2JyZWFrIGN9aWYoKGJbKGNbeD4+Ml18MCkrKEQ8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXtnPXk7YnJlYWsgY31EPWNbQj4+Ml18MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbZz4+Ml18MCkrNDA+PjJdJjEyN10oZyl8MDtCPXo7Y29udGludWV9ZWxzZXtjW0I+PjJdPUQrMTtCPXo7Y29udGludWV9fX1lbHNlIGlmKChvfDApPT01OSl7bz0wO0I9Y1t6Pj4yXXwwO2lmKChCfDApPT0oY1tBPj4yXXwwKSl7b2NbY1soY1tnPj4yXXwwKSs0MD4+Ml0mMTI3XShnKXwwfWVsc2V7Y1t6Pj4yXT1CKzF9bT1tKzF8MDtnPXl9fXdoaWxlKDApO2lmKChtfDApPT0obnwwKSl7YnJlYWsgYX15PWNbaz4+Ml18MH1pZigob3wwKT09MjEpe2Nbaz4+Ml09NDticmVha31lbHNlIGlmKChvfDApPT0yNCl7Y1trPj4yXT00O2JyZWFrfWVsc2UgaWYoKG98MCk9PTI3KXtjW2s+PjJdPTQ7YnJlYWt9fX13aGlsZSgwKTtpZigoZ3wwKSE9MCl7aWYoKGNbZysxMj4+Ml18MCk9PShjW2crMTY+PjJdfDApKXtEPShvY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSYxMjddKGcpfDApPT0tMTtnPUQ/MDpnfX1lbHNle2c9MH1mPShnfDApPT0wO2Rve2lmKChofDApIT0wKXtpZigoY1toKzEyPj4yXXwwKT09KGNbaCsxNj4+Ml18MCk/KG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xOjApe289NzE7YnJlYWt9aWYoZil7Y1tlPj4yXT1nO2k9cDtyZXR1cm59fWVsc2V7bz03MX19d2hpbGUoMCk7aWYoKG98MCk9PTcxPyFmOjApe2NbZT4+Ml09ZztpPXA7cmV0dXJufWNbaz4+Ml09Y1trPj4yXXwyO2NbZT4+Ml09ZztpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIFVpKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFZpKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBXaShhKXthPWF8MDtyZXR1cm4gMn1mdW5jdGlvbiBYaShhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wO2o9aTtUaShhLGIsY1tkPj4yXXwwLGNbZT4+Ml18MCxmLGcsaCwxMjM3NiwxMjM4NHwwKTtpPWo7cmV0dXJufWZ1bmN0aW9uIFlpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTA7az1pO209ZCs4fDA7bT1vY1tjWyhjW20+PjJdfDApKzIwPj4yXSYxMjddKG0pfDA7bj1hW20+PjBdfDA7aWYoKG4mMSk9PTApe2w9bSsxfDA7bT0obiYyNTUpPj4+MX1lbHNle2w9Y1ttKzg+PjJdfDA7bT1jW20rND4+Ml18MH1UaShiLGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaixsLGwrbXwwKTtpPWs7cmV0dXJufWZ1bmN0aW9uIFppKGEsYixkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTA7aj1pO2k9aSsxNnwwO2w9ajtmPWNbZisyOD4+Ml18MDttPWYrNHwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1sPShjWzEzNDYwPj4yXXwwKSsgLTF8MDttPWNbZis4Pj4yXXwwO2lmKChjW2YrMTI+PjJdfDApLW0+PjI+Pj4wPmw+Pj4wPyhrPWNbbSsobDw8Mik+PjJdfDAsKGt8MCkhPTApOjApe2w9Zis0fDA7bT1jW2w+PjJdfDA7Y1tsPj4yXT1tKyAtMTtpZigobXwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfW09Y1tlPj4yXXwwO2I9Yis4fDA7Yj1vY1tjW2NbYj4+Ml0+PjJdJjEyN10oYil8MDtiPShNaChkLG0sYixiKzE2OHwwLGssZywwKXwwKS1ifDA7aWYoKGJ8MCk+PTE2OCl7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59Y1toKzI0Pj4yXT0oKGJ8MCkvMTJ8MHwwKSU3fDA7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59bT1YYSg0KXwwO2NbbT4+Ml09MjEzMDQ7d2IobXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gX2koYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MDtqPWk7aT1pKzE2fDA7bD1qO2Y9Y1tmKzI4Pj4yXXwwO209Zis0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tsPj4yXT0xMzQ1NjtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEzNDU2LGwpfWw9KGNbMTM0NjA+PjJdfDApKyAtMXwwO209Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7bD1mKzR8MDttPWNbbD4+Ml18MDtjW2w+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9bT1jW2U+PjJdfDA7Yj1iKzh8MDtiPW9jW2NbKGNbYj4+Ml18MCkrND4+Ml0mMTI3XShiKXwwO2I9KE1oKGQsbSxiLGIrMjg4fDAsayxnLDApfDApLWJ8MDtpZigoYnwwKT49Mjg4KXttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1jW2grMTY+PjJdPSgoYnwwKS8xMnwwfDApJTEyfDA7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59bT1YYSg0KXwwO2NbbT4+Ml09MjEzMDQ7d2IobXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gJGkoYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wO2I9aTtpPWkrMTZ8MDtrPWI7Zj1jW2YrMjg+PjJdfDA7bD1mKzR8MDtjW2w+PjJdPShjW2w+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2s+PjJdPTEzNDU2O2Nbays0Pj4yXT0yMDg7Y1trKzg+PjJdPTA7Y2coMTM0NTYsayl9az0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7bD1jW2YrOD4+Ml18MDtpZigoY1tmKzEyPj4yXXwwKS1sPj4yPj4+MD5rPj4+MD8oaj1jW2wrKGs8PDIpPj4yXXwwLChqfDApIT0wKTowKXtrPWYrNHwwO2w9Y1trPj4yXXwwO2Nbaz4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbZj4+Ml18MCkrOD4+Ml0mMjU1XShmKX1lPWJqKGQsY1tlPj4yXXwwLGcsaiw0KXwwO2lmKChjW2c+PjJdJjR8MCkhPTApe2w9Y1tkPj4yXXwwO2NbYT4+Ml09bDtpPWI7cmV0dXJufWlmKChlfDApPDY5KXtnPWUrMmUzfDB9ZWxzZXtnPShlKyAtNjl8MCk+Pj4wPDMxP2UrMTkwMHwwOmV9Y1toKzIwPj4yXT1nKyAtMTkwMDtsPWNbZD4+Ml18MDtjW2E+PjJdPWw7aT1iO3JldHVybn1sPVhhKDQpfDA7Y1tsPj4yXT0yMTMwNDt3YihsfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBhaihlLGYsZyxoLGosayxsLG0sbil7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7dmFyIG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7bj1pO2k9aSs2NHwwO3c9bjtFPW4rMTZ8MDtyPW4rMjh8MDt1PW4rMjR8MDt2PW4rMzJ8MDt5PW4rMTJ8MDt6PW4rMjB8MDt4PW4rMzZ8MDtCPW4rNDB8MDt0PW4rNDR8MDtzPW4rNDh8MDtjW2s+PjJdPTA7QT1jW2orMjg+PjJdfDA7RD1BKzR8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3c+PjJdPTEzNDU2O2Nbdys0Pj4yXT0yMDg7Y1t3Kzg+PjJdPTA7Y2coMTM0NTYsdyl9Qz0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7RD1jW0ErOD4+Ml18MDtpZigoY1tBKzEyPj4yXXwwKS1EPj4yPj4+MD5DPj4+MD8ocD1jW0QrKEM8PDIpPj4yXXwwLChwfDApIT0wKTowKXtDPUErNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbQT4+Ml18MCkrOD4+Ml0mMjU1XShBKX1hOmRve3N3aXRjaChtPDwyND4+MjR8MCl7Y2FzZSAxMTI6e289bCs4fDA7bD1jW2g+PjJdfDA7aD1mKzh8MDtoPW9jW2NbKGNbaD4+Ml18MCkrOD4+Ml0mMTI3XShoKXwwO2Y9YVtoPj4wXXwwO2lmKChmJjEpPT0wKXtmPShmJjI1NSk+Pj4xfWVsc2V7Zj1jW2grND4+Ml18MH1qPWFbaCsxMj4+MF18MDtpZigoaiYxKT09MCl7aj0oaiYyNTUpPj4+MX1lbHNle2o9Y1toKzE2Pj4yXXwwfWlmKChmfDApPT0oMC1qfDApKXtjW2s+PjJdPWNbaz4+Ml18NDticmVhayBhfUU9TWgoZyxsLGgsaCsyNHwwLHAsaywwKXwwO2s9RS1ofDA7aWYoKEV8MCk9PShofDApPyhjW28+PjJdfDApPT0xMjowKXtjW28+PjJdPTA7YnJlYWsgYX1pZigoa3wwKT09MTI/KHE9Y1tvPj4yXXwwLChxfDApPDEyKTowKXtjW28+PjJdPXErMTJ9YnJlYWt9O2Nhc2UgMTIwOntEPWNbKGNbZj4+Ml18MCkrMjA+PjJdfDA7Y1tCPj4yXT1jW2c+PjJdO2NbdD4+Ml09Y1toPj4yXTtjW0UrMD4+Ml09Y1tCKzA+PjJdO2NbdyswPj4yXT1jW3QrMD4+Ml07aWNbRCY2M10oZSxmLEUsdyxqLGssbCk7aT1uO3JldHVybn07Y2FzZSA4ODp7cT1mKzh8MDtxPW9jW2NbKGNbcT4+Ml18MCkrMjQ+PjJdJjEyN10ocSl8MDtwPWFbcT4+MF18MDtpZigocCYxKT09MCl7bz1xKzF8MDtwPShwJjI1NSk+Pj4xfWVsc2V7bz1jW3ErOD4+Ml18MDtwPWNbcSs0Pj4yXXwwfVRpKHMsZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLG8sbytwfDApO2NbZz4+Ml09Y1tzPj4yXTticmVha307Y2FzZSAxMjE6e289bCsyMHwwO2w9YmooZyxjW2g+PjJdfDAsayxwLDQpfDA7aWYoKGNbaz4+Ml0mNHwwKT09MCl7aWYoKGx8MCk8Njkpe2s9bCsyZTN8MH1lbHNle2s9KGwrIC02OXwwKT4+PjA8MzE/bCsxOTAwfDA6bH1jW28+PjJdPWsrIC0xOTAwfWJyZWFrfTtjYXNlIDgzOntvPWJqKGcsY1toPj4yXXwwLGsscCwyKXwwO3A9Y1trPj4yXXwwO2lmKChwJjR8MCk9PTAmKG98MCk8NjEpe2NbbD4+Ml09bzticmVhayBhfWVsc2V7Y1trPj4yXT1wfDQ7YnJlYWsgYX19O2Nhc2UgODI6e1RpKHosZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyNDE2LDEyNDIxfDApO2NbZz4+Ml09Y1t6Pj4yXTticmVha307Y2FzZSAxMTQ6e1RpKHksZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyNDAwLDEyNDExfDApO2NbZz4+Ml09Y1t5Pj4yXTticmVha307Y2FzZSA4OTp7bz1iaihnLGNbaD4+Ml18MCxrLHAsNCl8MDtpZigoY1trPj4yXSY0fDApPT0wKXtjW2wrMjA+PjJdPW8rIC0xOTAwfWJyZWFrfTtjYXNlIDM3OntsPWNbaD4+Ml18MDtoPWNbZz4+Ml18MDtkb3tpZigoaHwwKSE9MCl7aWYoKGNbaCsxMj4+Ml18MCk9PShjW2grMTY+PjJdfDApKXtpZigob2NbY1soY1toPj4yXXwwKSszNj4+Ml0mMTI3XShoKXwwKT09LTEpe2NbZz4+Ml09MDtoPTA7YnJlYWt9ZWxzZXtoPWNbZz4+Ml18MDticmVha319fWVsc2V7aD0wfX13aGlsZSgwKTtoPShofDApPT0wO2Rve2lmKChsfDApIT0wKXtpZigoY1tsKzEyPj4yXXwwKT09KGNbbCsxNj4+Ml18MCk/KG9jW2NbKGNbbD4+Ml18MCkrMzY+PjJdJjEyN10obCl8MCk9PS0xOjApe289MTE1O2JyZWFrfWlmKCFoKXtvPTExNn19ZWxzZXtvPTExNX19d2hpbGUoMCk7aWYoKG98MCk9PTExNSl7aWYoaCl7bz0xMTZ9ZWxzZXtsPTB9fWlmKChvfDApPT0xMTYpe2Nbaz4+Ml09Y1trPj4yXXw2O2JyZWFrIGF9aD1jW2c+PjJdfDA7Zj1jW2grMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2grMTY+PjJdfDApKXtoPW9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MH1lbHNle2g9ZFtmPj4wXXwwfWlmKCEoKGhjW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjYzXShwLGgmMjU1LDApfDApPDwyND4+MjQ9PTM3KSl7Y1trPj4yXT1jW2s+PjJdfDQ7YnJlYWsgYX1wPWNbZz4+Ml18MDtoPXArMTJ8MDtmPWNbaD4+Ml18MDtpZigoZnwwKT09KGNbcCsxNj4+Ml18MCkpe29jW2NbKGNbcD4+Ml18MCkrNDA+PjJdJjEyN10ocCl8MH1lbHNle2NbaD4+Ml09ZisxfXA9Y1tnPj4yXXwwO2Rve2lmKChwfDApIT0wKXtpZigoY1twKzEyPj4yXXwwKT09KGNbcCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjW3A+PjJdfDApKzM2Pj4yXSYxMjddKHApfDApPT0tMSl7Y1tnPj4yXT0wO3A9MDticmVha31lbHNle3A9Y1tnPj4yXXwwO2JyZWFrfX19ZWxzZXtwPTB9fXdoaWxlKDApO3A9KHB8MCk9PTA7ZG97aWYoKGx8MCkhPTApe2lmKChjW2wrMTI+PjJdfDApPT0oY1tsKzE2Pj4yXXwwKT8ob2NbY1soY1tsPj4yXXwwKSszNj4+Ml0mMTI3XShsKXwwKT09LTE6MCl7bz0xMzQ7YnJlYWt9aWYocCl7YnJlYWsgYX19ZWxzZXtvPTEzNH19d2hpbGUoMCk7aWYoKG98MCk9PTEzND8hcDowKXticmVhayBhfWNbaz4+Ml09Y1trPj4yXXwyO2JyZWFrfTtjYXNlIDg0OntUaSh4LGYsY1tnPj4yXXwwLGNbaD4+Ml18MCxqLGssbCwxMjQyNCwxMjQzMnwwKTtjW2c+PjJdPWNbeD4+Ml07YnJlYWt9O2Nhc2UgMTE5OntvPWJqKGcsY1toPj4yXXwwLGsscCwxKXwwO3A9Y1trPj4yXXwwO2lmKChwJjR8MCk9PTAmKG98MCk8Nyl7Y1tsKzI0Pj4yXT1vO2JyZWFrIGF9ZWxzZXtjW2s+PjJdPXB8NDticmVhayBhfX07Y2FzZSAxMDk6e289YmooZyxjW2g+PjJdfDAsayxwLDIpfDA7cD1jW2s+PjJdfDA7aWYoKHAmNHwwKT09MCYob3wwKTwxMyl7Y1tsKzE2Pj4yXT1vKyAtMTticmVhayBhfWVsc2V7Y1trPj4yXT1wfDQ7YnJlYWsgYX19O2Nhc2UgNzc6e289YmooZyxjW2g+PjJdfDAsayxwLDIpfDA7cD1jW2s+PjJdfDA7aWYoKHAmNHwwKT09MCYob3wwKTw2MCl7Y1tsKzQ+PjJdPW87YnJlYWsgYX1lbHNle2Nbaz4+Ml09cHw0O2JyZWFrIGF9fTtjYXNlIDEwNjp7bz1iaihnLGNbaD4+Ml18MCxrLHAsMyl8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wJihvfDApPDM2Nil7Y1tsKzI4Pj4yXT1vO2JyZWFrIGF9ZWxzZXtjW2s+PjJdPXB8NDticmVhayBhfX07Y2FzZSA3Mjp7cD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtvPWNbaz4+Ml18MDtpZigobyY0fDApPT0wJihwfDApPDI0KXtjW2wrOD4+Ml09cDticmVhayBhfWVsc2V7Y1trPj4yXT1vfDQ7YnJlYWsgYX19O2Nhc2UgNzA6e1RpKHYsZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyMzkyLDEyNDAwfDApO2NbZz4+Ml09Y1t2Pj4yXTticmVha307Y2FzZSA2ODp7VGkodSxmLGNbZz4+Ml18MCxjW2g+PjJdfDAsaixrLGwsMTIzODQsMTIzOTJ8MCk7Y1tnPj4yXT1jW3U+PjJdO2JyZWFrfTtjYXNlIDEwNDpjYXNlIDY2OmNhc2UgOTg6e0Q9Y1toPj4yXXwwO0U9Zis4fDA7RT1vY1tjWyhjW0U+PjJdfDApKzQ+PjJdJjEyN10oRSl8MDtrPShNaChnLEQsRSxFKzI4OHwwLHAsaywwKXwwKS1FfDA7aWYoKGt8MCk8Mjg4KXtjW2wrMTY+PjJdPSgoa3wwKS8xMnwwfDApJTEyfDB9YnJlYWt9O2Nhc2UgNzM6e289bCs4fDA7bD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wPyhsKyAtMXwwKT4+PjA8MTI6MCl7Y1tvPj4yXT1sO2JyZWFrIGF9Y1trPj4yXT1wfDQ7YnJlYWt9O2Nhc2UgNjU6Y2FzZSA5Nzp7RD1jW2g+PjJdfDA7RT1mKzh8MDtFPW9jW2NbY1tFPj4yXT4+Ml0mMTI3XShFKXwwO2s9KE1oKGcsRCxFLEUrMTY4fDAscCxrLDApfDApLUV8MDtpZigoa3wwKTwxNjgpe2NbbCsyND4+Ml09KChrfDApLzEyfDB8MCklN3wwfWJyZWFrfTtjYXNlIDEwMTpjYXNlIDEwMDp7bz1sKzEyfDA7bD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wPyhsKyAtMXwwKT4+PjA8MzE6MCl7Y1tvPj4yXT1sO2JyZWFrIGF9Y1trPj4yXT1wfDQ7YnJlYWt9O2Nhc2UgMTE2OmNhc2UgMTEwOntsPXArOHwwO3A9Y1toPj4yXXwwO2I6d2hpbGUoMSl7aD1jW2c+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKChjW2grMTI+PjJdfDApPT0oY1toKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xKXtjW2c+PjJdPTA7aD0wO2JyZWFrfWVsc2V7aD1jW2c+PjJdfDA7YnJlYWt9fX1lbHNle2g9MH19d2hpbGUoMCk7aD0oaHwwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCkhPShjW3ArMTY+PjJdfDApKXtpZihoKXticmVha31lbHNle2JyZWFrIGJ9fWlmKCEoKG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xKSl7aWYoIWgpe2JyZWFrIGJ9fWVsc2V7bz01MH19ZWxzZXtvPTUwfX13aGlsZSgwKTtpZigob3wwKT09NTApe289MDtpZihoKXtwPTA7YnJlYWt9ZWxzZXtwPTB9fWg9Y1tnPj4yXXwwO2Y9Y1toKzEyPj4yXXwwO2lmKChmfDApPT0oY1toKzE2Pj4yXXwwKSl7aD1vY1tjWyhjW2g+PjJdfDApKzM2Pj4yXSYxMjddKGgpfDB9ZWxzZXtoPWRbZj4+MF18MH1pZighKChoJjI1NSk8PDI0Pj4yND4tMSkpe2JyZWFrfWlmKChiWyhjW2w+PjJdfDApKyhoPDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7YnJlYWt9aj1jW2c+PjJdfDA7aD1qKzEyfDA7Zj1jW2g+PjJdfDA7aWYoKGZ8MCk9PShjW2orMTY+PjJdfDApKXtvY1tjWyhjW2o+PjJdfDApKzQwPj4yXSYxMjddKGopfDA7Y29udGludWV9ZWxzZXtjW2g+PjJdPWYrMTtjb250aW51ZX19bD1jW2c+PjJdfDA7ZG97aWYoKGx8MCkhPTApe2lmKChjW2wrMTI+PjJdfDApPT0oY1tsKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbbD4+Ml18MCkrMzY+PjJdJjEyN10obCl8MCk9PS0xKXtjW2c+PjJdPTA7bD0wO2JyZWFrfWVsc2V7bD1jW2c+PjJdfDA7YnJlYWt9fX1lbHNle2w9MH19d2hpbGUoMCk7bD0obHwwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCk9PShjW3ArMTY+PjJdfDApPyhvY1tjWyhjW3A+PjJdfDApKzM2Pj4yXSYxMjddKHApfDApPT0tMTowKXtvPTY5O2JyZWFrfWlmKGwpe2JyZWFrIGF9fWVsc2V7bz02OX19d2hpbGUoMCk7aWYoKG98MCk9PTY5PyFsOjApe2JyZWFrIGF9Y1trPj4yXT1jW2s+PjJdfDI7YnJlYWt9O2Nhc2UgOTk6e3E9Zis4fDA7cT1vY1tjWyhjW3E+PjJdfDApKzEyPj4yXSYxMjddKHEpfDA7cD1hW3E+PjBdfDA7aWYoKHAmMSk9PTApe289cSsxfDA7cD0ocCYyNTUpPj4+MX1lbHNle289Y1txKzg+PjJdfDA7cD1jW3ErND4+Ml18MH1UaShyLGYsY1tnPj4yXXwwLGNbaD4+Ml18MCxqLGssbCxvLG8rcHwwKTtjW2c+PjJdPWNbcj4+Ml07YnJlYWt9O2RlZmF1bHQ6e2Nbaz4+Ml09Y1trPj4yXXw0fX19d2hpbGUoMCk7Y1tlPj4yXT1jW2c+PjJdO2k9bjtyZXR1cm59RT1YYSg0KXwwO2NbRT4+Ml09MjEzMDQ7d2IoRXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gYmooYSxlLGYsZyxoKXthPWF8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2o9aTtsPWNbYT4+Ml18MDtkb3tpZigobHwwKSE9MCl7aWYoKGNbbCsxMj4+Ml18MCk9PShjW2wrMTY+PjJdfDApKXtpZigob2NbY1soY1tsPj4yXXwwKSszNj4+Ml0mMTI3XShsKXwwKT09LTEpe2NbYT4+Ml09MDtsPTA7YnJlYWt9ZWxzZXtsPWNbYT4+Ml18MDticmVha319fWVsc2V7bD0wfX13aGlsZSgwKTtsPShsfDApPT0wO2Rve2lmKChlfDApIT0wKXtpZigoY1tlKzEyPj4yXXwwKT09KGNbZSsxNj4+Ml18MCk/KG9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MCk9PS0xOjApe209MTA7YnJlYWt9aWYoIWwpe209MTF9fWVsc2V7bT0xMH19d2hpbGUoMCk7aWYoKG18MCk9PTEwKXtpZihsKXttPTExfWVsc2V7ZT0wfX1pZigobXwwKT09MTEpe2NbZj4+Ml09Y1tmPj4yXXw2O3A9MDtpPWo7cmV0dXJuIHB8MH1tPWNbYT4+Ml18MDtsPWNbbSsxMj4+Ml18MDtpZigobHwwKT09KGNbbSsxNj4+Ml18MCkpe209b2NbY1soY1ttPj4yXXwwKSszNj4+Ml0mMTI3XShtKXwwfWVsc2V7bT1kW2w+PjBdfDB9bD1tJjI1NTtpZihsPDwyND4+MjQ+LTE/KGs9Zys4fDAsISgoYlsoY1trPj4yXXwwKSsobTw8MjQ+PjI0PDwxKT4+MV0mMjA0OCk9PTApKTowKXtsPShoY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSY2M10oZyxsLDApfDApPDwyND4+MjQ7bz1jW2E+PjJdfDA7bT1vKzEyfDA7bj1jW20+PjJdfDA7aWYoKG58MCk9PShjW28rMTY+PjJdfDApKXtvY1tjWyhjW28+PjJdfDApKzQwPj4yXSYxMjddKG8pfDA7bj1lO209ZX1lbHNle2NbbT4+Ml09bisxO249ZTttPWV9d2hpbGUoMSl7bD1sKyAtNDh8MDtoPWgrIC0xfDA7ZT1jW2E+PjJdfDA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApPT0oY1tlKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MCk9PS0xKXtjW2E+PjJdPTA7ZT0wO2JyZWFrfWVsc2V7ZT1jW2E+PjJdfDA7YnJlYWt9fX1lbHNle2U9MH19d2hpbGUoMCk7bz0oZXwwKT09MDtpZigobXwwKSE9MCl7aWYoKGNbbSsxMj4+Ml18MCk9PShjW20rMTY+PjJdfDApKXttPShvY1tjWyhjW20+PjJdfDApKzM2Pj4yXSYxMjddKG0pfDApPT0tMTtlPW0/MDpuO209bT8wOm59ZWxzZXtlPW59fWVsc2V7ZT1uO209MH1uPWNbYT4+Ml18MDtpZighKChvXihtfDApPT0wKSYoaHwwKT4wKSl7bT0zODticmVha31vPWNbbisxMj4+Ml18MDtpZigob3wwKT09KGNbbisxNj4+Ml18MCkpe249b2NbY1soY1tuPj4yXXwwKSszNj4+Ml0mMTI3XShuKXwwfWVsc2V7bj1kW28+PjBdfDB9bz1uJjI1NTtpZighKG88PDI0Pj4yND4tMSkpe209NDk7YnJlYWt9aWYoKGJbKGNbaz4+Ml18MCkrKG48PDI0Pj4yNDw8MSk+PjFdJjIwNDgpPT0wKXttPTQ5O2JyZWFrfWw9KChoY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSY2M10oZyxvLDApfDApPDwyND4+MjQpKyhsKjEwfDApfDA7bj1jW2E+PjJdfDA7cD1uKzEyfDA7bz1jW3A+PjJdfDA7aWYoKG98MCk9PShjW24rMTY+PjJdfDApKXtvY1tjWyhjW24+PjJdfDApKzQwPj4yXSYxMjddKG4pfDA7bj1lO2NvbnRpbnVlfWVsc2V7Y1twPj4yXT1vKzE7bj1lO2NvbnRpbnVlfX1pZigobXwwKT09Mzgpe2Rve2lmKChufDApIT0wKXtpZigoY1tuKzEyPj4yXXwwKT09KGNbbisxNj4+Ml18MCkpe2lmKChvY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDApPT0tMSl7Y1thPj4yXT0wO249MDticmVha31lbHNle249Y1thPj4yXXwwO2JyZWFrfX19ZWxzZXtuPTB9fXdoaWxlKDApO2c9KG58MCk9PTA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApPT0oY1tlKzE2Pj4yXXwwKT8ob2NbY1soY1tlPj4yXXwwKSszNj4+Ml0mMTI3XShlKXwwKT09LTE6MCl7bT00NzticmVha31pZihnKXtwPWw7aT1qO3JldHVybiBwfDB9fWVsc2V7bT00N319d2hpbGUoMCk7aWYoKG18MCk9PTQ3PyFnOjApe3A9bDtpPWo7cmV0dXJuIHB8MH1jW2Y+PjJdPWNbZj4+Ml18MjtwPWw7aT1qO3JldHVybiBwfDB9ZWxzZSBpZigobXwwKT09NDkpe2k9ajtyZXR1cm4gbHwwfX1jW2Y+PjJdPWNbZj4+Ml18NDtwPTA7aT1qO3JldHVybiBwfDB9ZnVuY3Rpb24gY2ooYSxiLGQsZSxmLGcsaCxqLGspe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO209aTtpPWkrMzJ8MDtvPW07cD1tKzI0fDA7bj1tKzIwfDA7cj1tKzE2fDA7cT1tKzEyfDA7dD1jW2YrMjg+PjJdfDA7eT10KzR8MDtjW3k+PjJdPShjW3k+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW28+PjJdPTEzNDQ4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NDgsbyl9dT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dj1jW3QrOD4+Ml18MDtpZigoY1t0KzEyPj4yXXwwKS12Pj4yPj4+MD51Pj4+MD8ocz1jW3YrKHU8PDIpPj4yXXwwLChzfDApIT0wKTowKXt4PXQrNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbdD4+Ml18MCkrOD4+Ml0mMjU1XSh0KX1jW2c+PjJdPTA7YTpkb3tpZigoanwwKSE9KGt8MCkpe3Q9MDtiOndoaWxlKDEpe3U9dDt0PWQ7d2hpbGUoMSl7aWYoKHV8MCkhPTApe2Q9dDticmVhayBhfWlmKCh0fDApPT0wKXt1PTE7ZD0wO3Q9MH1lbHNle2Q9Y1t0KzEyPj4yXXwwO2lmKChkfDApPT0oY1t0KzE2Pj4yXXwwKSl7ZD1vY1tjWyhjW3Q+PjJdfDApKzM2Pj4yXSYxMjddKHQpfDB9ZWxzZXtkPWNbZD4+Ml18MH15PShkfDApPT0tMTt1PXk/MTowO2Q9eT8wOnQ7dD15PzA6dH1pZigoZXwwKSE9MCl7dj1jW2UrMTI+PjJdfDA7aWYoKHZ8MCk9PShjW2UrMTY+PjJdfDApKXt2PW9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MH1lbHNle3Y9Y1t2Pj4yXXwwfWlmKCEoKHZ8MCk9PS0xKSl7aWYoIXUpe2w9MjU7YnJlYWsgYn19ZWxzZXtsPTIzfX1lbHNle2w9MjN9aWYoKGx8MCk9PTIzKXtsPTA7aWYodSl7ZT0wO2w9MjU7YnJlYWsgYn1lbHNle2U9MH19aWYoKGhjW2NbKGNbcz4+Ml18MCkrNTI+PjJdJjYzXShzLGNbaj4+Ml18MCwwKXwwKTw8MjQ+PjI0PT0zNyl7bD0yNzticmVha31pZihoY1tjWyhjW3M+PjJdfDApKzEyPj4yXSY2M10ocyw4MTkyLGNbaj4+Ml18MCl8MCl7bD0zNzticmVha311PWQrMTJ8MDt3PWNbdT4+Ml18MDt2PWQrMTZ8MDtpZigod3wwKT09KGNbdj4+Ml18MCkpe3c9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7dz1jW3c+PjJdfDB9eT14Y1tjWyhjW3M+PjJdfDApKzI4Pj4yXSY2M10ocyx3KXwwO2lmKCh5fDApPT0oeGNbY1soY1tzPj4yXXwwKSsyOD4+Ml0mNjNdKHMsY1tqPj4yXXwwKXwwKSl7bD02MzticmVha31jW2c+PjJdPTQ7dT00fWM6ZG97aWYoKGx8MCk9PTI3KXtsPTA7dT1qKzR8MDtpZigodXwwKT09KGt8MCkpe2w9Mjg7YnJlYWsgYn10PWhjW2NbKGNbcz4+Ml18MCkrNTI+PjJdJjYzXShzLGNbdT4+Ml18MCwwKXwwO2lmKHQ8PDI0Pj4yND09NDh8dDw8MjQ+PjI0PT02OSl7dT1qKzh8MDtpZigodXwwKT09KGt8MCkpe2w9MzE7YnJlYWsgYn1qPXU7dT1oY1tjWyhjW3M+PjJdfDApKzUyPj4yXSY2M10ocyxjW3U+PjJdfDAsMCl8MH1lbHNle2o9dTt1PXQ7dD0wfXk9Y1soY1tiPj4yXXwwKSszNj4+Ml18MDtjW3I+PjJdPWQ7Y1txPj4yXT1lO2NbcCswPj4yXT1jW3IrMD4+Ml07Y1tvKzA+PjJdPWNbcSswPj4yXTtuY1t5JjMxXShuLGIscCxvLGYsZyxoLHUsdCk7aj1qKzR8MDtkPWNbbj4+Ml18MH1lbHNlIGlmKChsfDApPT0zNyl7d2hpbGUoMSl7bD0wO2o9ais0fDA7aWYoKGp8MCk9PShrfDApKXtqPWs7YnJlYWt9aWYoaGNbY1soY1tzPj4yXXwwKSsxMj4+Ml0mNjNdKHMsODE5MixjW2o+PjJdfDApfDApe2w9Mzd9ZWxzZXticmVha319dT1lO3c9ZTt3aGlsZSgxKXtpZigoZHwwKT09MCl7dj0xO2Q9MH1lbHNle3Y9Y1tkKzEyPj4yXXwwO2lmKCh2fDApPT0oY1tkKzE2Pj4yXXwwKSl7dj1vY1tjWyhjW2Q+PjJdfDApKzM2Pj4yXSYxMjddKGQpfDB9ZWxzZXt2PWNbdj4+Ml18MH15PSh2fDApPT0tMTt2PXk/MTowO2Q9eT8wOmQ7dD15PzA6dH1pZigod3wwKSE9MCl7eD1jW3crMTI+PjJdfDA7aWYoKHh8MCk9PShjW3crMTY+PjJdfDApKXt3PW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle3c9Y1t4Pj4yXXwwfWlmKCEoKHd8MCk9PS0xKSl7aWYodl4odXwwKT09MCl7dj11O3c9dX1lbHNle2Q9dDticmVhayBjfX1lbHNle3U9MDtlPTA7bD01MH19ZWxzZXtsPTUwfWlmKChsfDApPT01MCl7bD0wO2lmKHYpe2Q9dDticmVhayBjfWVsc2V7dj11O3c9MH19eD1kKzEyfDA7eT1jW3g+PjJdfDA7dT1kKzE2fDA7aWYoKHl8MCk9PShjW3U+PjJdfDApKXt5PW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle3k9Y1t5Pj4yXXwwfWlmKCEoaGNbY1soY1tzPj4yXXwwKSsxMj4+Ml0mNjNdKHMsODE5Mix5KXwwKSl7ZD10O2JyZWFrIGN9eT1jW3g+PjJdfDA7aWYoKHl8MCk9PShjW3U+PjJdfDApKXtvY1tjWyhjW2Q+PjJdfDApKzQwPj4yXSYxMjddKGQpfDA7dT12O2NvbnRpbnVlfWVsc2V7Y1t4Pj4yXT15KzQ7dT12O2NvbnRpbnVlfX19ZWxzZSBpZigobHwwKT09NjMpe2w9MDt3PWNbdT4+Ml18MDtpZigod3wwKT09KGNbdj4+Ml18MCkpe29jW2NbKGNbZD4+Ml18MCkrNDA+PjJdJjEyN10oZCl8MH1lbHNle2NbdT4+Ml09dys0fWo9ais0fDA7ZD10fX13aGlsZSgwKTtpZigoanwwKT09KGt8MCkpe2JyZWFrIGF9dD1jW2c+PjJdfDB9aWYoKGx8MCk9PTI1KXtjW2c+PjJdPTQ7YnJlYWt9ZWxzZSBpZigobHwwKT09Mjgpe2NbZz4+Ml09NDticmVha31lbHNlIGlmKChsfDApPT0zMSl7Y1tnPj4yXT00O2JyZWFrfX19d2hpbGUoMCk7aWYoKGR8MCk9PTApe249MDtvPTF9ZWxzZXtuPWNbZCsxMj4+Ml18MDtpZigobnwwKT09KGNbZCsxNj4+Ml18MCkpe249b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7bj1jW24+PjJdfDB9bz0obnwwKT09LTE7bj1vPzA6ZDtvPW8/MTowfWlmKChlfDApIT0wKXtwPWNbZSsxMj4+Ml18MDtpZigocHwwKT09KGNbZSsxNj4+Ml18MCkpe3A9b2NbY1soY1tlPj4yXXwwKSszNj4+Ml0mMTI3XShlKXwwfWVsc2V7cD1jW3A+PjJdfDB9aWYoISgocHwwKT09LTEpKXtpZihvKXtjW2E+PjJdPW47aT1tO3JldHVybn19ZWxzZXtsPTc4fX1lbHNle2w9Nzh9aWYoKGx8MCk9PTc4PyFvOjApe2NbYT4+Ml09bjtpPW07cmV0dXJufWNbZz4+Ml09Y1tnPj4yXXwyO2NbYT4+Ml09bjtpPW07cmV0dXJufXk9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIGRqKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGVqKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBmaihhKXthPWF8MDtyZXR1cm4gMn1mdW5jdGlvbiBnaihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wO2o9aTtjaihhLGIsY1tkPj4yXXwwLGNbZT4+Ml18MCxmLGcsaCwxMjUyOCwxMjU2MHwwKTtpPWo7cmV0dXJufWZ1bmN0aW9uIGhqKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTA7az1pO209ZCs4fDA7bT1vY1tjWyhjW20+PjJdfDApKzIwPj4yXSYxMjddKG0pfDA7bj1hW20+PjBdfDA7aWYoKG4mMSk9PTApe2w9bSs0fDA7bT0obiYyNTUpPj4+MX1lbHNle2w9Y1ttKzg+PjJdfDA7bT1jW20rND4+Ml18MH1jaihiLGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaixsLGwrKG08PDIpfDApO2k9aztyZXR1cm59ZnVuY3Rpb24gaWooYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MDtqPWk7aT1pKzE2fDA7bD1qO2Y9Y1tmKzI4Pj4yXXwwO209Zis0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tsPj4yXT0xMzQ0ODtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEzNDQ4LGwpfWw9KGNbMTM0NTI+PjJdfDApKyAtMXwwO209Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7bD1mKzR8MDttPWNbbD4+Ml18MDtjW2w+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9bT1jW2U+PjJdfDA7Yj1iKzh8MDtiPW9jW2NbY1tiPj4yXT4+Ml0mMTI3XShiKXwwO2I9KGFpKGQsbSxiLGIrMTY4fDAsayxnLDApfDApLWJ8MDtpZigoYnwwKT49MTY4KXttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1jW2grMjQ+PjJdPSgoYnwwKS8xMnwwfDApJTd8MDttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBqaihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wO2o9aTtpPWkrMTZ8MDtsPWo7Zj1jW2YrMjg+PjJdfDA7bT1mKzR8MDtjW20+PjJdPShjW20+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW2w+PjJdPTEzNDQ4O2NbbCs0Pj4yXT0yMDg7Y1tsKzg+PjJdPTA7Y2coMTM0NDgsbCl9bD0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7bT1jW2YrOD4+Ml18MDtpZigoY1tmKzEyPj4yXXwwKS1tPj4yPj4+MD5sPj4+MD8oaz1jW20rKGw8PDIpPj4yXXwwLChrfDApIT0wKTowKXtsPWYrNHwwO209Y1tsPj4yXXwwO2NbbD4+Ml09bSsgLTE7aWYoKG18MCk9PTApe2xjW2NbKGNbZj4+Ml18MCkrOD4+Ml0mMjU1XShmKX1tPWNbZT4+Ml18MDtiPWIrOHwwO2I9b2NbY1soY1tiPj4yXXwwKSs0Pj4yXSYxMjddKGIpfDA7Yj0oYWkoZCxtLGIsYisyODh8MCxrLGcsMCl8MCktYnwwO2lmKChifDApPj0yODgpe209Y1tkPj4yXXwwO2NbYT4+Ml09bTtpPWo7cmV0dXJufWNbaCsxNj4+Ml09KChifDApLzEyfDB8MCklMTJ8MDttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBraihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTA7Yj1pO2k9aSsxNnwwO2s9YjtmPWNbZisyOD4+Ml18MDtsPWYrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1rPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtsPWNbZis4Pj4yXXwwO2lmKChjW2YrMTI+PjJdfDApLWw+PjI+Pj4wPms+Pj4wPyhqPWNbbCsoazw8Mik+PjJdfDAsKGp8MCkhPTApOjApe2s9Zis0fDA7bD1jW2s+PjJdfDA7Y1trPj4yXT1sKyAtMTtpZigobHwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfWU9bWooZCxjW2U+PjJdfDAsZyxqLDQpfDA7aWYoKGNbZz4+Ml0mNHwwKSE9MCl7bD1jW2Q+PjJdfDA7Y1thPj4yXT1sO2k9YjtyZXR1cm59aWYoKGV8MCk8Njkpe2c9ZSsyZTN8MH1lbHNle2c9KGUrIC02OXwwKT4+PjA8MzE/ZSsxOTAwfDA6ZX1jW2grMjA+PjJdPWcrIC0xOTAwO2w9Y1tkPj4yXXwwO2NbYT4+Ml09bDtpPWI7cmV0dXJufWw9WGEoNCl8MDtjW2w+PjJdPTIxMzA0O3diKGx8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIGxqKGIsZCxlLGYsZyxoLGosayxsKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtsPWk7aT1pKzY0fDA7eT1sO3g9bCsxNnwwO3A9bCsyOHwwO3Y9bCsyNHwwO3c9bCszMnwwO0M9bCsxMnwwO3I9bCsyMHwwO3M9bCszNnwwO3Q9bCs0MHwwO3o9bCs0NHwwO3E9bCs0OHwwO2NbaD4+Ml09MDt1PWNbZysyOD4+Ml18MDtCPXUrNHwwO2NbQj4+Ml09KGNbQj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbeT4+Ml09MTM0NDg7Y1t5KzQ+PjJdPTIwODtjW3krOD4+Ml09MDtjZygxMzQ0OCx5KX1BPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtCPWNbdSs4Pj4yXXwwO2lmKChjW3UrMTI+PjJdfDApLUI+PjI+Pj4wPkE+Pj4wPyhuPWNbQisoQTw8Mik+PjJdfDAsKG58MCkhPTApOjApe0E9dSs0fDA7Qj1jW0E+PjJdfDA7Y1tBPj4yXT1CKyAtMTtpZigoQnwwKT09MCl7bGNbY1soY1t1Pj4yXXwwKSs4Pj4yXSYyNTVdKHUpfWE6ZG97c3dpdGNoKGs8PDI0Pj4yNHwwKXtjYXNlIDgzOntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8NjEpe2Nbaj4+Ml09bjticmVhayBhfWVsc2V7Y1toPj4yXT1tfDQ7YnJlYWsgYX19O2Nhc2UgODQ6e2NqKHMsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLDEyNjk2LDEyNzI4fDApO2NbZT4+Ml09Y1tzPj4yXTticmVha307Y2FzZSA4Mjp7Y2oocixkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosMTI2NzIsMTI2OTJ8MCk7Y1tlPj4yXT1jW3I+PjJdO2JyZWFrfTtjYXNlIDExMjp7bT1qKzh8MDtqPWNbZj4+Ml18MDtmPWQrOHwwO2Y9b2NbY1soY1tmPj4yXXwwKSs4Pj4yXSYxMjddKGYpfDA7ZD1hW2Y+PjBdfDA7aWYoKGQmMSk9PTApe2Q9KGQmMjU1KT4+PjF9ZWxzZXtkPWNbZis0Pj4yXXwwfWc9YVtmKzEyPj4wXXwwO2lmKChnJjEpPT0wKXtnPShnJjI1NSk+Pj4xfWVsc2V7Zz1jW2YrMTY+PjJdfDB9aWYoKGR8MCk9PSgwLWd8MCkpe2NbaD4+Ml09Y1toPj4yXXw0O2JyZWFrIGF9Qz1haShlLGosZixmKzI0fDAsbixoLDApfDA7aD1DLWZ8MDtpZigoQ3wwKT09KGZ8MCk/KGNbbT4+Ml18MCk9PTEyOjApe2NbbT4+Ml09MDticmVhayBhfWlmKChofDApPT0xMj8obz1jW20+PjJdfDAsKG98MCk8MTIpOjApe2NbbT4+Ml09bysxMn1icmVha307Y2FzZSAxMTQ6e2NqKEMsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLDEyNjI0LDEyNjY4fDApO2NbZT4+Ml09Y1tDPj4yXTticmVha307Y2FzZSAxMjA6e0M9Y1soY1tkPj4yXXwwKSsyMD4+Ml18MDtjW3Q+PjJdPWNbZT4+Ml07Y1t6Pj4yXT1jW2Y+PjJdO2NbeCswPj4yXT1jW3QrMD4+Ml07Y1t5KzA+PjJdPWNbeiswPj4yXTtpY1tDJjYzXShiLGQseCx5LGcsaCxqKTtpPWw7cmV0dXJufTtjYXNlIDg4OntvPWQrOHwwO289b2NbY1soY1tvPj4yXXwwKSsyND4+Ml0mMTI3XShvKXwwO249YVtvPj4wXXwwO2lmKChuJjEpPT0wKXttPW8rNHwwO249KG4mMjU1KT4+PjF9ZWxzZXttPWNbbys4Pj4yXXwwO249Y1tvKzQ+PjJdfDB9Y2oocSxkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosbSxtKyhuPDwyKXwwKTtjW2U+PjJdPWNbcT4+Ml07YnJlYWt9O2Nhc2UgMTE5OntuPW1qKGUsY1tmPj4yXXwwLGgsbiwxKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8Nyl7Y1tqKzI0Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMjE6e209aisyMHwwO249bWooZSxjW2Y+PjJdfDAsaCxuLDQpfDA7aWYoKGNbaD4+Ml0mNHwwKT09MCl7aWYoKG58MCk8Njkpe2g9bisyZTN8MH1lbHNle2g9KG4rIC02OXwwKT4+PjA8MzE/bisxOTAwfDA6bn1jW20+PjJdPWgrIC0xOTAwfWJyZWFrfTtjYXNlIDg5OnttPW1qKGUsY1tmPj4yXXwwLGgsbiw0KXwwO2lmKChjW2g+PjJdJjR8MCk9PTApe2NbaisyMD4+Ml09bSsgLTE5MDB9YnJlYWt9O2Nhc2UgMzc6e2o9Y1tmPj4yXXwwO2Y9Y1tlPj4yXXwwO2Rve2lmKChmfDApIT0wKXtkPWNbZisxMj4+Ml18MDtpZigoZHwwKT09KGNbZisxNj4+Ml18MCkpe2Y9b2NbY1soY1tmPj4yXXwwKSszNj4+Ml0mMTI3XShmKXwwfWVsc2V7Zj1jW2Q+PjJdfDB9aWYoKGZ8MCk9PS0xKXtjW2U+PjJdPTA7Zj0xO2JyZWFrfWVsc2V7Zj0oY1tlPj4yXXwwKT09MDticmVha319ZWxzZXtmPTF9fXdoaWxlKDApO2lmKChqfDApIT0wKXtkPWNbaisxMj4+Ml18MDtpZigoZHwwKT09KGNbaisxNj4+Ml18MCkpe2Q9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7ZD1jW2Q+PjJdfDB9aWYoISgoZHwwKT09LTEpKXtpZighZil7bT0xMjZ9fWVsc2V7bT0xMjR9fWVsc2V7bT0xMjR9aWYoKG18MCk9PTEyNCl7aWYoZil7bT0xMjZ9ZWxzZXtqPTB9fWlmKChtfDApPT0xMjYpe2NbaD4+Ml09Y1toPj4yXXw2O2JyZWFrIGF9ZD1jW2U+PjJdfDA7Zj1jW2QrMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2QrMTY+PjJdfDApKXtmPW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle2Y9Y1tmPj4yXXwwfWlmKCEoKGhjW2NbKGNbbj4+Ml18MCkrNTI+PjJdJjYzXShuLGYsMCl8MCk8PDI0Pj4yND09MzcpKXtjW2g+PjJdPWNbaD4+Ml18NDticmVhayBhfWQ9Y1tlPj4yXXwwO2Y9ZCsxMnwwO249Y1tmPj4yXXwwO2lmKChufDApPT0oY1tkKzE2Pj4yXXwwKSl7b2NbY1soY1tkPj4yXXwwKSs0MD4+Ml0mMTI3XShkKXwwfWVsc2V7Y1tmPj4yXT1uKzR9bj1jW2U+PjJdfDA7ZG97aWYoKG58MCkhPTApe2Y9Y1tuKzEyPj4yXXwwO2lmKChmfDApPT0oY1tuKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXtuPWNbZj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtuPTE7YnJlYWt9ZWxzZXtuPShjW2U+PjJdfDApPT0wO2JyZWFrfX1lbHNle249MX19d2hpbGUoMCk7aWYoKGp8MCkhPTApe2Y9Y1tqKzEyPj4yXXwwO2lmKChmfDApPT0oY1tqKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtqPWNbZj4+Ml18MH1pZighKChqfDApPT0tMSkpe2lmKG4pe2JyZWFrIGF9fWVsc2V7bT0xNDd9fWVsc2V7bT0xNDd9aWYoKG18MCk9PTE0Nz8hbjowKXticmVhayBhfWNbaD4+Ml09Y1toPj4yXXwyO2JyZWFrfTtjYXNlIDEwOTp7bj1taihlLGNbZj4+Ml18MCxoLG4sMil8MDttPWNbaD4+Ml18MDtpZigobSY0fDApPT0wJihufDApPDEzKXtjW2orMTY+PjJdPW4rIC0xO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSA3MDp7Y2oodyxkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosMTI1OTIsMTI2MjR8MCk7Y1tlPj4yXT1jW3c+PjJdO2JyZWFrfTtjYXNlIDY4Ontjaih2LGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaiwxMjU2MCwxMjU5MnwwKTtjW2U+PjJdPWNbdj4+Ml07YnJlYWt9O2Nhc2UgMTA0OmNhc2UgNjY6Y2FzZSA5ODp7Qj1jW2Y+PjJdfDA7Qz1kKzh8MDtDPW9jW2NbKGNbQz4+Ml18MCkrND4+Ml0mMTI3XShDKXwwO2g9KGFpKGUsQixDLEMrMjg4fDAsbixoLDApfDApLUN8MDtpZigoaHwwKTwyODgpe2NbaisxNj4+Ml09KChofDApLzEyfDB8MCklMTJ8MH1icmVha307Y2FzZSAxMTY6Y2FzZSAxMTA6e2o9Y1tmPj4yXXwwO3doaWxlKDEpe2Q9Y1tlPj4yXXwwO2Rve2lmKChkfDApIT0wKXtmPWNbZCsxMj4+Ml18MDtpZigoZnwwKT09KGNbZCsxNj4+Ml18MCkpe2Y9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7Zj1jW2Y+PjJdfDB9aWYoKGZ8MCk9PS0xKXtjW2U+PjJdPTA7Zj0xO2JyZWFrfWVsc2V7Zj0oY1tlPj4yXXwwKT09MDticmVha319ZWxzZXtmPTF9fXdoaWxlKDApO2lmKChqfDApIT0wKXtkPWNbaisxMj4+Ml18MDtpZigoZHwwKT09KGNbaisxNj4+Ml18MCkpe2Q9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7ZD1jW2Q+PjJdfDB9aWYoISgoZHwwKT09LTEpKXtpZighZil7YnJlYWt9fWVsc2V7bT01M319ZWxzZXttPTUzfWlmKChtfDApPT01Myl7bT0wO2lmKGYpe2o9MDticmVha31lbHNle2o9MH19ZD1jW2U+PjJdfDA7Zj1jW2QrMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2QrMTY+PjJdfDApKXtmPW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle2Y9Y1tmPj4yXXwwfWlmKCEoaGNbY1soY1tuPj4yXXwwKSsxMj4+Ml0mNjNdKG4sODE5MixmKXwwKSl7YnJlYWt9bz1jW2U+PjJdfDA7ZD1vKzEyfDA7Zj1jW2Q+PjJdfDA7aWYoKGZ8MCk9PShjW28rMTY+PjJdfDApKXtvY1tjWyhjW28+PjJdfDApKzQwPj4yXSYxMjddKG8pfDA7Y29udGludWV9ZWxzZXtjW2Q+PjJdPWYrNDtjb250aW51ZX19Zj1jW2U+PjJdfDA7ZG97aWYoKGZ8MCkhPTApe249Y1tmKzEyPj4yXXwwO2lmKChufDApPT0oY1tmKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2Y+PjJdfDApKzM2Pj4yXSYxMjddKGYpfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtuPTE7YnJlYWt9ZWxzZXtuPShjW2U+PjJdfDApPT0wO2JyZWFrfX1lbHNle249MX19d2hpbGUoMCk7aWYoKGp8MCkhPTApe2Y9Y1tqKzEyPj4yXXwwO2lmKChmfDApPT0oY1tqKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtqPWNbZj4+Ml18MH1pZighKChqfDApPT0tMSkpe2lmKG4pe2JyZWFrIGF9fWVsc2V7bT03NH19ZWxzZXttPTc0fWlmKChtfDApPT03ND8hbjowKXticmVhayBhfWNbaD4+Ml09Y1toPj4yXXwyO2JyZWFrfTtjYXNlIDY1OmNhc2UgOTc6e0I9Y1tmPj4yXXwwO0M9ZCs4fDA7Qz1vY1tjW2NbQz4+Ml0+PjJdJjEyN10oQyl8MDtoPShhaShlLEIsQyxDKzE2OHwwLG4saCwwKXwwKS1DfDA7aWYoKGh8MCk8MTY4KXtjW2orMjQ+PjJdPSgoaHwwKS8xMnwwfDApJTd8MH1icmVha307Y2FzZSA5OTp7bz1kKzh8MDtvPW9jW2NbKGNbbz4+Ml18MCkrMTI+PjJdJjEyN10obyl8MDtuPWFbbz4+MF18MDtpZigobiYxKT09MCl7bT1vKzR8MDtuPShuJjI1NSk+Pj4xfWVsc2V7bT1jW28rOD4+Ml18MDtuPWNbbys0Pj4yXXwwfWNqKHAsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLG0sbSsobjw8Mil8MCk7Y1tlPj4yXT1jW3A+PjJdO2JyZWFrfTtjYXNlIDcyOntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8MjQpe2Nbais4Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMDE6Y2FzZSAxMDA6e209aisxMnwwO2o9bWooZSxjW2Y+PjJdfDAsaCxuLDIpfDA7bj1jW2g+PjJdfDA7aWYoKG4mNHwwKT09MD8oaisgLTF8MCk+Pj4wPDMxOjApe2NbbT4+Ml09ajticmVhayBhfWNbaD4+Ml09bnw0O2JyZWFrfTtjYXNlIDczOnttPWorOHwwO249bWooZSxjW2Y+PjJdfDAsaCxuLDIpfDA7aj1jW2g+PjJdfDA7aWYoKGomNHwwKT09MD8obisgLTF8MCk+Pj4wPDEyOjApe2NbbT4+Ml09bjticmVhayBhfWNbaD4+Ml09anw0O2JyZWFrfTtjYXNlIDc3OntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8NjApe2Nbais0Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMDY6e249bWooZSxjW2Y+PjJdfDAsaCxuLDMpfDA7bT1jW2g+PjJdfDA7aWYoKG0mNHwwKT09MCYobnwwKTwzNjYpe2NbaisyOD4+Ml09bjticmVhayBhfWVsc2V7Y1toPj4yXT1tfDQ7YnJlYWsgYX19O2RlZmF1bHQ6e2NbaD4+Ml09Y1toPj4yXXw0fX19d2hpbGUoMCk7Y1tiPj4yXT1jW2U+PjJdO2k9bDtyZXR1cm59Qz1YYSg0KXwwO2NbQz4+Ml09MjEzMDQ7d2IoQ3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gbWooYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtrPWNbYT4+Ml18MDtkb3tpZigoa3wwKSE9MCl7aj1jW2srMTI+PjJdfDA7aWYoKGp8MCk9PShjW2srMTY+PjJdfDApKXtqPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2o9Y1tqPj4yXXwwfWlmKChqfDApPT0tMSl7Y1thPj4yXT0wO2o9MTticmVha31lbHNle2o9KGNbYT4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7aj0xfX13aGlsZSgwKTtpZigoYnwwKSE9MCl7az1jW2IrMTI+PjJdfDA7aWYoKGt8MCk9PShjW2IrMTY+PjJdfDApKXtrPW9jW2NbKGNbYj4+Ml18MCkrMzY+PjJdJjEyN10oYil8MH1lbHNle2s9Y1trPj4yXXwwfWlmKCEoKGt8MCk9PS0xKSl7aWYoIWope2c9MTV9fWVsc2V7Zz0xM319ZWxzZXtnPTEzfWlmKChnfDApPT0xMyl7aWYoail7Zz0xNX1lbHNle2I9MH19aWYoKGd8MCk9PTE1KXtjW2Q+PjJdPWNbZD4+Ml18NjtuPTA7aT1oO3JldHVybiBufDB9aj1jW2E+PjJdfDA7az1jW2orMTI+PjJdfDA7aWYoKGt8MCk9PShjW2orMTY+PjJdfDApKXtqPW9jW2NbKGNbaj4+Ml18MCkrMzY+PjJdJjEyN10oail8MH1lbHNle2o9Y1trPj4yXXwwfWlmKCEoaGNbY1soY1tlPj4yXXwwKSsxMj4+Ml0mNjNdKGUsMjA0OCxqKXwwKSl7Y1tkPj4yXT1jW2Q+PjJdfDQ7bj0wO2k9aDtyZXR1cm4gbnwwfWo9KGhjW2NbKGNbZT4+Ml18MCkrNTI+PjJdJjYzXShlLGosMCl8MCk8PDI0Pj4yNDtsPWNbYT4+Ml18MDtrPWwrMTJ8MDttPWNbaz4+Ml18MDtpZigobXwwKT09KGNbbCsxNj4+Ml18MCkpe29jW2NbKGNbbD4+Ml18MCkrNDA+PjJdJjEyN10obCl8MDtrPWI7bD1iO2I9an1lbHNle2Nbaz4+Ml09bSs0O2s9YjtsPWI7Yj1qfXdoaWxlKDEpe2I9YisgLTQ4fDA7Zj1mKyAtMXwwO2o9Y1thPj4yXXwwO2Rve2lmKChqfDApIT0wKXttPWNbaisxMj4+Ml18MDtpZigobXwwKT09KGNbaisxNj4+Ml18MCkpe2o9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7aj1jW20+PjJdfDB9aWYoKGp8MCk9PS0xKXtjW2E+PjJdPTA7bT0xO2JyZWFrfWVsc2V7bT0oY1thPj4yXXwwKT09MDticmVha319ZWxzZXttPTF9fXdoaWxlKDApO2lmKChsfDApPT0wKXtqPWs7bD0wO249MX1lbHNle2o9Y1tsKzEyPj4yXXwwO2lmKChqfDApPT0oY1tsKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2w+PjJdfDApKzM2Pj4yXSYxMjddKGwpfDB9ZWxzZXtqPWNbaj4+Ml18MH1uPShqfDApPT0tMTtqPW4/MDprO2w9bj8wOms7bj1uPzE6KGt8MCk9PTB9az1jW2E+PjJdfDA7aWYoISgobV5uKSYoZnwwKT4wKSl7YnJlYWt9bT1jW2srMTI+PjJdfDA7aWYoKG18MCk9PShjW2srMTY+PjJdfDApKXtrPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2s9Y1ttPj4yXXwwfWlmKCEoaGNbY1soY1tlPj4yXXwwKSsxMj4+Ml0mNjNdKGUsMjA0OCxrKXwwKSl7Zz01OTticmVha31iPSgoaGNbY1soY1tlPj4yXXwwKSs1Mj4+Ml0mNjNdKGUsaywwKXwwKTw8MjQ+PjI0KSsoYioxMHwwKXwwO209Y1thPj4yXXwwO249bSsxMnwwO2s9Y1tuPj4yXXwwO2lmKChrfDApPT0oY1ttKzE2Pj4yXXwwKSl7b2NbY1soY1ttPj4yXXwwKSs0MD4+Ml0mMTI3XShtKXwwO2s9ajtjb250aW51ZX1lbHNle2Nbbj4+Ml09ays0O2s9ajtjb250aW51ZX19aWYoKGd8MCk9PTU5KXtpPWg7cmV0dXJuIGJ8MH1kb3tpZigoa3wwKSE9MCl7ZT1jW2srMTI+PjJdfDA7aWYoKGV8MCk9PShjW2srMTY+PjJdfDApKXtlPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2U9Y1tlPj4yXXwwfWlmKChlfDApPT0tMSl7Y1thPj4yXT0wO2E9MTticmVha31lbHNle2E9KGNbYT4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7YT0xfX13aGlsZSgwKTtpZigoanwwKSE9MCl7ZT1jW2orMTI+PjJdfDA7aWYoKGV8MCk9PShjW2orMTY+PjJdfDApKXtlPW9jW2NbKGNbaj4+Ml18MCkrMzY+PjJdJjEyN10oail8MH1lbHNle2U9Y1tlPj4yXXwwfWlmKCEoKGV8MCk9PS0xKSl7aWYoYSl7bj1iO2k9aDtyZXR1cm4gbnwwfX1lbHNle2c9NTZ9fWVsc2V7Zz01Nn1pZigoZ3wwKT09NTY/IWE6MCl7bj1iO2k9aDtyZXR1cm4gbnwwfWNbZD4+Ml09Y1tkPj4yXXwyO249YjtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBuaihiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2U9Yis4fDA7Zj1jW2U+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChmfDApIT0oY1szMzQwXXwwKSl7VmIoY1tlPj4yXXwwKX1pZigoYnwwKT09MCl7aT1kO3JldHVybn12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIG9qKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtiPWIrOHwwO2U9Y1tiPj4yXXwwO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1pZigoZXwwKT09KGNbMzM0MF18MCkpe2k9ZDtyZXR1cm59VmIoY1tiPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIHBqKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wO2Y9aTtpPWkrMTEyfDA7bj1mKzEwMHwwO2c9ZjthW24+PjBdPTM3O2w9bisxfDA7YVtsPj4wXT1qO209bisyfDA7YVttPj4wXT1rO2FbbiszPj4wXT0wO2lmKCEoazw8MjQ+PjI0PT0wKSl7YVtsPj4wXT1rO2FbbT4+MF09an1uPWViKGd8MCwxMDAsbnwwLGh8MCxjW2QrOD4+Ml18MCl8MDtoPWcrbnwwO2Q9Y1tlPj4yXXwwO2lmKChufDApPT0wKXtuPWQ7Y1tiPj4yXT1uO2k9ZjtyZXR1cm59ZWxzZXtlPWQ7bD1kfWRve2o9YVtnPj4wXXwwO2Rve2lmKChlfDApIT0wKXtrPWUrMjR8MDtkPWNbaz4+Ml18MDtpZigoZHwwKT09KGNbZSsyOD4+Ml18MCkpe249KHhjW2NbKGNbZT4+Ml18MCkrNTI+PjJdJjYzXShlLGomMjU1KXwwKT09LTE7bD1uPzA6bDtlPW4/MDplO2JyZWFrfWVsc2V7Y1trPj4yXT1kKzE7YVtkPj4wXT1qO2JyZWFrfX1lbHNle2U9MH19d2hpbGUoMCk7Zz1nKzF8MH13aGlsZSgoZ3wwKSE9KGh8MCkpO2NbYj4+Ml09bDtpPWY7cmV0dXJufWZ1bmN0aW9uIHFqKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7ZT1iKzh8MDtmPWNbZT4+Ml18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9aWYoKGZ8MCkhPShjWzMzNDBdfDApKXtWYihjW2U+PjJdfDApfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gcmooYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2I9Yis4fDA7ZT1jW2I+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChlfDApPT0oY1szMzQwXXwwKSl7aT1kO3JldHVybn1WYihjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gc2ooYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7Zj1pO2k9aSs1Mjh8MDtvPWYrNTEyfDA7cD1mKzQxMnwwO209ZjtsPWYrNDA4fDA7Zz1mKzh8MDthW28+PjBdPTM3O249bysxfDA7YVtuPj4wXT1qO3E9bysyfDA7YVtxPj4wXT1rO2FbbyszPj4wXT0wO2lmKCEoazw8MjQ+PjI0PT0wKSl7YVtuPj4wXT1rO2FbcT4+MF09an1qPWQrOHwwO2ViKHB8MCwxMDAsb3wwLGh8MCxjW2o+PjJdfDApfDA7az1tO2Nbaz4+Ml09MDtjW2srND4+Ml09MDtjW2w+PjJdPXA7aj1pYihjW2o+PjJdfDApfDA7az1WbShnLGwsMTAwLG0pfDA7aWYoKGp8MCkhPTApe2liKGp8MCl8MH1pZigoa3wwKT09LTEpe29rKDE0Mjk2KX1qPWcrKGs8PDIpfDA7ZD1jW2U+PjJdfDA7aWYoKGt8MCk9PTApe3E9ZDtjW2I+PjJdPXE7aT1mO3JldHVybn1lbHNle2U9ZDtrPWR9ZG97ZD1jW2c+PjJdfDA7aWYoKGV8MCk9PTApe2U9MH1lbHNle2g9ZSsyNHwwO2w9Y1toPj4yXXwwO2lmKChsfDApPT0oY1tlKzI4Pj4yXXwwKSl7ZD14Y1tjWyhjW2U+PjJdfDApKzUyPj4yXSY2M10oZSxkKXwwfWVsc2V7Y1toPj4yXT1sKzQ7Y1tsPj4yXT1kfXE9KGR8MCk9PS0xO2s9cT8wOms7ZT1xPzA6ZX1nPWcrNHwwfXdoaWxlKChnfDApIT0oanwwKSk7Y1tiPj4yXT1rO2k9ZjtyZXR1cm59ZnVuY3Rpb24gdGooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gdWooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHZqKGEpe2E9YXwwO3JldHVybiAxMjd9ZnVuY3Rpb24gd2ooYSl7YT1hfDA7cmV0dXJuIDEyN31mdW5jdGlvbiB4aihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIHlqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gemooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBBaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09MjthW2IrMT4+MF09NDU7YVtiKzI+PjBdPTA7cmV0dXJufWZ1bmN0aW9uIEJqKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIENqKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBEaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gRWooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRmooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEdqKGEpe2E9YXwwO3JldHVybiAxMjd9ZnVuY3Rpb24gSGooYSl7YT1hfDA7cmV0dXJuIDEyN31mdW5jdGlvbiBJaihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIEpqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gS2ooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBMaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09MjthW2IrMT4+MF09NDU7YVtiKzI+PjBdPTA7cmV0dXJufWZ1bmN0aW9uIE1qKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIE5qKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBPaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gUGooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gUWooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFJqKGEpe2E9YXwwO3JldHVybiAyMTQ3NDgzNjQ3fWZ1bmN0aW9uIFNqKGEpe2E9YXwwO3JldHVybiAyMTQ3NDgzNjQ3fWZ1bmN0aW9uIFRqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gVWooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBWaihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIFdqKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZD1pO2FbYj4+MF09MjtiPWIrNHwwO2Y9MTtlPWI7d2hpbGUoMSl7Zj1mKyAtMXwwO2NbZT4+Ml09NDU7aWYoKGZ8MCk9PTApe2JyZWFrfWVsc2V7ZT1lKzR8MH19Y1tiKzQ+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBYaihhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBZaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gWmooYixjKXtiPWJ8MDtjPWN8MDthW2I+PjBdPTY3MTA5NjM0O2FbYisxPj4wXT0yNjIxNDc7YVtiKzI+PjBdPTEwMjQ7YVtiKzM+PjBdPTQ7cmV0dXJufWZ1bmN0aW9uIF9qKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uICRqKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBhayhhKXthPWF8MDtyZXR1cm4gMjE0NzQ4MzY0N31mdW5jdGlvbiBiayhhKXthPWF8MDtyZXR1cm4gMjE0NzQ4MzY0N31mdW5jdGlvbiBjayhhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIGRrKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gZWsoYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBmayhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2Q9aTthW2I+PjBdPTI7Yj1iKzR8MDtmPTE7ZT1iO3doaWxlKDEpe2Y9ZisgLTF8MDtjW2U+PjJdPTQ1O2lmKChmfDApPT0wKXticmVha31lbHNle2U9ZSs0fDB9fWNbYis0Pj4yXT0wO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ2soYSl7YT1hfDA7cmV0dXJuIDB9ZnVuY3Rpb24gaGsoYixjKXtiPWJ8MDtjPWN8MDthW2I+PjBdPTY3MTA5NjM0O2FbYisxPj4wXT0yNjIxNDc7YVtiKzI+PjBdPTEwMjQ7YVtiKzM+PjBdPTQ7cmV0dXJufWZ1bmN0aW9uIGlrKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBqayhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBrayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gbGsoYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO249aTtpPWkrMjQwfDA7cD1uO3g9bisxNDB8MDtkPW4rMTZ8MDtyPW4rMjR8MDt1PW4rMTM4fDA7cz1uKzEyOHwwO3E9bisyOHwwO2NbZD4+Ml09eDttPWQrNHwwO2NbbT4+Ml09MjEzO3g9eCsxMDB8MDtvPWNbaCsyOD4+Ml18MDt3PW8rNHwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbcD4+Ml09MTM0NTY7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ1NixwKX13PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt2PWNbbys4Pj4yXXwwO2lmKChjW28rMTI+PjJdfDApLXY+PjI+Pj4wPnc+Pj4wPyh0PWNbdisodzw8Mik+PjJdfDAsKHR8MCkhPTApOjApe2FbdT4+MF09MDtkb3tpZihuayhlLGNbZj4+Ml18MCxnLG8sY1toKzQ+PjJdfDAsaix1LHQsZCxyLHgpfDApe3VjW2NbKGNbdD4+Ml18MCkrMzI+PjJdJjMxXSh0LDEzMDg4LDEzMDk4fDAscyl8MDtnPWNbcj4+Ml18MDtoPWNbZD4+Ml18MDt0PWctaHwwO2lmKCh0fDApPjk4KXt2PXVuKHQrMnwwKXwwO2lmKCh2fDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3Q9dn19ZWxzZXt0PTA7dj1xfWlmKChhW3U+PjBdfDApIT0wKXthW3Y+PjBdPTQ1O3Y9disxfDB9aWYoaD4+PjA8Zz4+PjApe3U9cysxMHwwO2c9cztkb3t3PWFbaD4+MF18MDt4PXM7d2hpbGUoMSl7aWYoKGFbeD4+MF18MCk9PXc8PDI0Pj4yNCl7YnJlYWt9eD14KzF8MDtpZigoeHwwKT09KHV8MCkpe3g9dTticmVha319YVt2Pj4wXT1hWzEzMDg4Kyh4LWcpPj4wXXwwO2g9aCsxfDA7dj12KzF8MH13aGlsZShoPj4+MDwoY1tyPj4yXXwwKT4+PjApfWFbdj4+MF09MDtjW3A+PjJdPWs7aWYoKEZhKHF8MCwxMzEwNCxwfDApfDApPT0xKXtpZigodHwwKT09MCl7YnJlYWt9dm4odCk7YnJlYWt9Zj1YYSg4KXwwO2NbZj4+Ml09OTkyODt3aGlsZSgxKXtqPXVuKDI4KXwwO2lmKChqfDApIT0wKXtsPTI5O2JyZWFrfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXtsPTI3O2JyZWFrfXNjW2wmMzFdKCl9aWYoKGx8MCk9PTI3KXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNlIGlmKChsfDApPT0yOSl7Y1tqKzQ+PjJdPTE1O2Nbaj4+Ml09MTU7bD1qKzEyfDA7Y1tmKzQ+PjJdPWw7Y1tqKzg+PjJdPTA7aj1sKzB8MDtsPTEzMTEyfDA7Yj1qKzE2fDA7ZG97YVtqPj4wXT1hW2w+PjBdfDA7aj1qKzF8MDtsPWwrMXwwfXdoaWxlKChqfDApPChifDApKTt3YihmfDAsMTAwNjQsMTA2KX19fXdoaWxlKDApO3A9Y1tlPj4yXXwwO2lmKChwfDApIT0wKXtpZigoY1twKzEyPj4yXXwwKT09KGNbcCsxNj4+Ml18MCk/KG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xOjApe2NbZT4+Ml09MDtwPTB9fWVsc2V7cD0wfWs9KHB8MCk9PTA7ZT1jW2Y+PjJdfDA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApIT0oY1tlKzE2Pj4yXXwwKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTQ2O2JyZWFrfX1pZighKChvY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDApPT0tMSkpe2lmKGspe2JyZWFrfWVsc2V7bD00NjticmVha319ZWxzZXtjW2Y+PjJdPTA7bD00NDticmVha319ZWxzZXtsPTQ0fX13aGlsZSgwKTtpZigobHwwKT09NDQ/azowKXtsPTQ2fWlmKChsfDApPT00Nil7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1wO3c9bys0fDA7eD1jW3c+PjJdfDA7Y1t3Pj4yXT14KyAtMTtpZigoeHwwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfWw9Y1tkPj4yXXwwO2NbZD4+Ml09MDtpZigobHwwKT09MCl7aT1uO3JldHVybn1sY1tjW20+PjJdJjI1NV0obCk7aT1uO3JldHVybn14PVhhKDQpfDA7Y1t4Pj4yXT0yMTMwNDt3Yih4fDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBtayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gbmsoZSxmLGcsaCxqLGssbCxtLG4sbyxwKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDtwPXB8MDt2YXIgcT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MDt1PWk7aT1pKzU5MnwwO1E9dTtPPXUrMTEyfDA7Rz11KzEyfDA7TT11KzEwMHwwO0o9dSs0MHwwO0s9dSsyNHwwO0w9dSszNnwwO1A9dSs4OHwwO049dSs3NnwwO0g9dSs1MnwwO0k9dSs2NHwwO1Q9dSsxMjB8MDtGPXUrNTIwfDA7dD11KzUyNHwwO3k9dSs1MzZ8MDt4PXUrNTQ4fDA7cz11KzU2MHwwO3c9dSs1NzJ8MDtCPXUrNTg0fDA7Y1tGPj4yXT0wO2NbdCswPj4yXT0wO2NbdCs0Pj4yXT0wO2NbdCs4Pj4yXT0wO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbcyswPj4yXT0wO2Nbcys0Pj4yXT0wO2Nbcys4Pj4yXT0wO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wO2Rve2lmKGcpe2lmKCEoKGNbMzIyOF18MCk9PS0xKSl7Y1tRPj4yXT0xMjkxMjtjW1ErND4+Ml09MjA4O2NbUSs4Pj4yXT0wO2NnKDEyOTEyLFEpfUg9KGNbMTI5MTY+PjJdfDApKyAtMXwwO0U9Y1toKzg+PjJdfDA7aWYoKGNbaCsxMj4+Ml18MCktRT4+Mj4+PjA+SD4+PjA/KEQ9Y1tFKyhIPDwyKT4+Ml18MCwoRHwwKSE9MCk6MCl7bWNbY1soY1tEPj4yXXwwKSs0ND4+Ml0mMTI3XShPLEQpO2NbRj4+Ml09Y1tPPj4yXTttY1tjWyhjW0Q+PjJdfDApKzMyPj4yXSYxMjddKEcsRCk7aWYoKGFbcz4+MF0mMSk9PTApe2FbcysxPj4wXT0wO2Fbcz4+MF09MH1lbHNle2FbY1tzKzg+PjJdPj4wXT0wO2Nbcys0Pj4yXT0wfWlnKHMpO2NbcyswPj4yXT1jW0crMD4+Ml07Y1tzKzQ+PjJdPWNbRys0Pj4yXTtjW3MrOD4+Ml09Y1tHKzg+PjJdO2NbRyswPj4yXT0wO2NbRys0Pj4yXT0wO2NbRys4Pj4yXT0wO21jW2NbKGNbRD4+Ml18MCkrMjg+PjJdJjEyN10oTSxEKTtpZigoYVt4Pj4wXSYxKT09MCl7YVt4KzE+PjBdPTA7YVt4Pj4wXT0wfWVsc2V7YVtjW3grOD4+Ml0+PjBdPTA7Y1t4KzQ+PjJdPTB9aWcoeCk7Y1t4KzA+PjJdPWNbTSswPj4yXTtjW3grND4+Ml09Y1tNKzQ+PjJdO2NbeCs4Pj4yXT1jW00rOD4+Ml07Y1tNKzA+PjJdPTA7Y1tNKzQ+PjJdPTA7Y1tNKzg+PjJdPTA7aD1vY1tjWyhjW0Q+PjJdfDApKzEyPj4yXSYxMjddKEQpfDA7Rz1vY1tjWyhjW0Q+PjJdfDApKzE2Pj4yXSYxMjddKEQpfDA7bWNbY1soY1tEPj4yXXwwKSsyMD4+Ml0mMTI3XShKLEQpO2lmKChhW3Q+PjBdJjEpPT0wKXthW3QrMT4+MF09MDthW3Q+PjBdPTB9ZWxzZXthW2NbdCs4Pj4yXT4+MF09MDtjW3QrND4+Ml09MH1pZyh0KTtjW3QrMD4+Ml09Y1tKKzA+PjJdO2NbdCs0Pj4yXT1jW0orND4+Ml07Y1t0Kzg+PjJdPWNbSis4Pj4yXTtjW0orMD4+Ml09MDtjW0orND4+Ml09MDtjW0orOD4+Ml09MDttY1tjWyhjW0Q+PjJdfDApKzI0Pj4yXSYxMjddKEssRCk7aWYoKGFbeT4+MF0mMSk9PTApe2FbeSsxPj4wXT0wO2FbeT4+MF09MH1lbHNle2FbY1t5Kzg+PjJdPj4wXT0wO2NbeSs0Pj4yXT0wfWlnKHkpO2NbeSswPj4yXT1jW0srMD4+Ml07Y1t5KzQ+PjJdPWNbSys0Pj4yXTtjW3krOD4+Ml09Y1tLKzg+PjJdO2NbSyswPj4yXT0wO2NbSys0Pj4yXT0wO2NbSys4Pj4yXT0wO1Y9b2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwO2JyZWFrfWVhPVhhKDQpfDA7Y1tlYT4+Ml09MjEzMDQ7d2IoZWF8MCwyMTM3NiwxOTYpfWVsc2V7aWYoISgoY1szMjEyXXwwKT09LTEpKXtjW1E+PjJdPTEyODQ4O2NbUSs0Pj4yXT0yMDg7Y1tRKzg+PjJdPTA7Y2coMTI4NDgsUSl9Rz0oY1sxMjg1Mj4+Ml18MCkrIC0xfDA7RD1jW2grOD4+Ml18MDtpZigoY1toKzEyPj4yXXwwKS1EPj4yPj4+MD5HPj4+MD8oRT1jW0QrKEc8PDIpPj4yXXwwLChFfDApIT0wKTowKXttY1tjWyhjW0U+PjJdfDApKzQ0Pj4yXSYxMjddKEwsRSk7Y1tGPj4yXT1jW0w+PjJdO21jW2NbKGNbRT4+Ml18MCkrMzI+PjJdJjEyN10oUCxFKTtpZigoYVtzPj4wXSYxKT09MCl7YVtzKzE+PjBdPTA7YVtzPj4wXT0wfWVsc2V7YVtjW3MrOD4+Ml0+PjBdPTA7Y1tzKzQ+PjJdPTB9aWcocyk7Y1tzKzA+PjJdPWNbUCswPj4yXTtjW3MrND4+Ml09Y1tQKzQ+PjJdO2Nbcys4Pj4yXT1jW1ArOD4+Ml07Y1tQKzA+PjJdPTA7Y1tQKzQ+PjJdPTA7Y1tQKzg+PjJdPTA7bWNbY1soY1tFPj4yXXwwKSsyOD4+Ml0mMTI3XShOLEUpO2lmKChhW3g+PjBdJjEpPT0wKXthW3grMT4+MF09MDthW3g+PjBdPTB9ZWxzZXthW2NbeCs4Pj4yXT4+MF09MDtjW3grND4+Ml09MH1pZyh4KTtjW3grMD4+Ml09Y1tOKzA+PjJdO2NbeCs0Pj4yXT1jW04rND4+Ml07Y1t4Kzg+PjJdPWNbTis4Pj4yXTtjW04rMD4+Ml09MDtjW04rND4+Ml09MDtjW04rOD4+Ml09MDtoPW9jW2NbKGNbRT4+Ml18MCkrMTI+PjJdJjEyN10oRSl8MDtHPW9jW2NbKGNbRT4+Ml18MCkrMTY+PjJdJjEyN10oRSl8MDttY1tjWyhjW0U+PjJdfDApKzIwPj4yXSYxMjddKEgsRSk7aWYoKGFbdD4+MF0mMSk9PTApe2FbdCsxPj4wXT0wO2FbdD4+MF09MH1lbHNle2FbY1t0Kzg+PjJdPj4wXT0wO2NbdCs0Pj4yXT0wfWlnKHQpO2NbdCswPj4yXT1jW0grMD4+Ml07Y1t0KzQ+PjJdPWNbSCs0Pj4yXTtjW3QrOD4+Ml09Y1tIKzg+PjJdO2NbSCswPj4yXT0wO2NbSCs0Pj4yXT0wO2NbSCs4Pj4yXT0wO21jW2NbKGNbRT4+Ml18MCkrMjQ+PjJdJjEyN10oSSxFKTtpZigoYVt5Pj4wXSYxKT09MCl7YVt5KzE+PjBdPTA7YVt5Pj4wXT0wfWVsc2V7YVtjW3krOD4+Ml0+PjBdPTA7Y1t5KzQ+PjJdPTB9aWcoeSk7Y1t5KzA+PjJdPWNbSSswPj4yXTtjW3krND4+Ml09Y1tJKzQ+PjJdO2NbeSs4Pj4yXT1jW0krOD4+Ml07Y1tJKzA+PjJdPTA7Y1tJKzQ+PjJdPTA7Y1tJKzg+PjJdPTA7Vj1vY1tjWyhjW0U+PjJdfDApKzM2Pj4yXSYxMjddKEUpfDA7YnJlYWt9ZWE9WGEoNCl8MDtjW2VhPj4yXT0yMTMwNDt3YihlYXwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2Nbbz4+Ml09Y1tuPj4yXTtKPW0rOHwwO0k9cysxfDA7TD1zKzR8MDttPXMrOHwwO0s9eCsxfDA7SD14KzR8MDtEPXgrOHwwO009KGomNTEyfDApIT0wO1M9eSsxfDA7aj15Kzh8MDtRPXkrNHwwO2c9dysxfDA7RT13Kzh8MDtPPXcrNHwwO049RiszfDA7Uj1uKzR8MDtQPXQrNHwwO1g9VCs0MDB8MDtZPVQ7Wj1UO1U9MDtUPTA7Vz0yMTM7YTp3aGlsZSgxKXtfPWNbZT4+Ml18MDtkb3tpZigoX3wwKSE9MCl7aWYoKGNbXysxMj4+Ml18MCk9PShjW18rMTY+PjJdfDApKXtpZigob2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwKT09LTEpe2NbZT4+Ml09MDtfPTA7YnJlYWt9ZWxzZXtfPWNbZT4+Ml18MDticmVha319fWVsc2V7Xz0wfX13aGlsZSgwKTtfPShffDApPT0wO2Rve2lmKChmfDApIT0wKXtpZigoY1tmKzEyPj4yXXwwKSE9KGNbZisxNj4+Ml18MCkpe2lmKF8pe2JyZWFrfWVsc2V7Qz0zNjM7YnJlYWsgYX19aWYoISgob2NbY1soY1tmPj4yXXwwKSszNj4+Ml0mMTI3XShmKXwwKT09LTEpKXtpZighXyl7Qz0zNjM7YnJlYWsgYX19ZWxzZXtDPTc0fX1lbHNle0M9NzR9fXdoaWxlKDApO2lmKChDfDApPT03NCl7Qz0wO2lmKF8pe2Y9MDtDPTM2MzticmVha31lbHNle2Y9MH19Yjpkb3tzd2l0Y2goYVtGK1U+PjBdfDApe2Nhc2UgMjp7aWYoISgoVHwwKSE9MHxVPj4+MDwyKSl7aWYoKFV8MCk9PTIpe189KGFbTj4+MF18MCkhPTB9ZWxzZXtfPTB9aWYoIShNfF8pKXtUPTA7YnJlYWsgYn19JD1hW3k+PjBdfDA7YWE9KCQmMSk9PTA7Xz1hYT9TOmNbaj4+Ml18MDtjOmRve2lmKChVfDApIT0wPyhkW0YrKFUrIC0xKT4+MF18MCk8MjowKXtiYT1fKyhhYT8oJCYyNTUpPj4+MTpjW1E+PjJdfDApfDA7Y2E9Xzt3aGlsZSgxKXtpZigoY2F8MCk9PShiYXwwKSl7YnJlYWt9YWE9YVtjYT4+MF18MDtpZighKGFhPDwyND4+MjQ+LTEpKXtiYT1jYTticmVha31pZigoYlsoY1tKPj4yXXwwKSsoYWE8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXtiYT1jYTticmVha31lbHNle2NhPWNhKzF8MH19YWE9YmEtX3wwO2NhPWFbdz4+MF18MDtkYT0oY2EmMSk9PTA7aWYoZGEpe2VhPShjYSYyNTUpPj4+MX1lbHNle2VhPWNbTz4+Ml18MH1pZighKGFhPj4+MD5lYT4+PjApKXtpZihkYSl7ZGE9KGNhJjI1NSk+Pj4xO2NhPWc7ZWE9ZGE7ZGE9dysoZGEtYWEpKzF8MH1lbHNle2ZhPWNbRT4+Ml18MDtkYT1jW08+PjJdfDA7Y2E9ZmE7ZWE9ZGE7ZGE9ZmErKGRhLWFhKXwwfWFhPWNhK2VhfDA7aWYoKGRhfDApPT0oYWF8MCkpe2FhPWY7Xz1iYTtiYT1mfWVsc2V7Y2E9Xzt3aGlsZSgxKXtpZigoYVtkYT4+MF18MCkhPShhW2NhPj4wXXwwKSl7YWE9ZjtiYT1mO2JyZWFrIGN9ZGE9ZGErMXwwO2lmKChkYXwwKT09KGFhfDApKXthYT1mO189YmE7YmE9ZjticmVha31lbHNle2NhPWNhKzF8MH19fX1lbHNle2FhPWY7YmE9Zn19ZWxzZXthYT1mO2JhPWZ9fXdoaWxlKDApO2Q6d2hpbGUoMSl7aWYoKCQmMSk9PTApe2NhPVM7JD0oJCYyNTUpPj4+MX1lbHNle2NhPWNbaj4+Ml18MDskPWNbUT4+Ml18MH1pZigoX3wwKT09KGNhKyR8MCkpe2JyZWFrfSQ9Y1tlPj4yXXwwO2Rve2lmKCgkfDApIT0wKXtpZigoY1skKzEyPj4yXXwwKT09KGNbJCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjWyQ+PjJdfDApKzM2Pj4yXSYxMjddKCQpfDApPT0tMSl7Y1tlPj4yXT0wOyQ9MDticmVha31lbHNleyQ9Y1tlPj4yXXwwO2JyZWFrfX19ZWxzZXskPTB9fXdoaWxlKDApOyQ9KCR8MCk9PTA7ZG97aWYoKGJhfDApIT0wKXtpZigoY1tiYSsxMj4+Ml18MCkhPShjW2JhKzE2Pj4yXXwwKSl7aWYoJCl7JD1hYTticmVha31lbHNle2JyZWFrIGR9fWlmKCEoKG9jW2NbKGNbYmE+PjJdfDApKzM2Pj4yXSYxMjddKGJhKXwwKT09LTEpKXtpZigkXihhYXwwKT09MCl7JD1hYTtiYT1hYX1lbHNle2JyZWFrIGR9fWVsc2V7YWE9MDtmPTA7Qz0yMzJ9fWVsc2V7Qz0yMzJ9fXdoaWxlKDApO2lmKChDfDApPT0yMzIpe0M9MDtpZigkKXticmVha31lbHNleyQ9YWE7YmE9MH19YWE9Y1tlPj4yXXwwO2NhPWNbYWErMTI+PjJdfDA7aWYoKGNhfDApPT0oY1thYSsxNj4+Ml18MCkpe2FhPW9jW2NbKGNbYWE+PjJdfDApKzM2Pj4yXSYxMjddKGFhKXwwfWVsc2V7YWE9ZFtjYT4+MF18MH1pZighKChhYSYyNTUpPDwyND4+MjQ9PShhW18+PjBdfDApKSl7YnJlYWt9ZGE9Y1tlPj4yXXwwO2NhPWRhKzEyfDA7YWE9Y1tjYT4+Ml18MDtpZigoYWF8MCk9PShjW2RhKzE2Pj4yXXwwKSl7b2NbY1soY1tkYT4+Ml18MCkrNDA+PjJdJjEyN10oZGEpfDB9ZWxzZXtjW2NhPj4yXT1hYSsxfWFhPSQ7JD1hW3k+PjBdfDA7Xz1fKzF8MH1pZihNKXthYT1hW3k+PjBdfDA7aWYoKGFhJjEpPT0wKXskPVM7YWE9KGFhJjI1NSk+Pj4xfWVsc2V7JD1jW2o+PjJdfDA7YWE9Y1tRPj4yXXwwfWlmKChffDApIT0oJCthYXwwKSl7Qz0yNDc7YnJlYWsgYX19YnJlYWt9O2Nhc2UgMDp7Qz05NzticmVha307Y2FzZSAzOntfPWFbeD4+MF18MDthYT0oXyYxKT09MDtpZihhYSl7ZGE9KF8mMjU1KT4+PjF9ZWxzZXtkYT1jW0g+PjJdfDB9JD1hW3M+PjBdfDA7YmE9KCQmMSk9PTA7aWYoYmEpe2NhPSgkJjI1NSk+Pj4xfWVsc2V7Y2E9Y1tMPj4yXXwwfWlmKChkYXwwKSE9KDAtY2F8MCkpe2lmKGFhKXtjYT0oXyYyNTUpPj4+MX1lbHNle2NhPWNbSD4+Ml18MH1pZigoY2F8MCkhPTApe2lmKGJhKXtiYT0oJCYyNTUpPj4+MX1lbHNle2JhPWNbTD4+Ml18MH1pZigoYmF8MCkhPTApe2FhPWNbZT4+Ml18MDtiYT1jW2FhKzEyPj4yXXwwO2NhPWNbYWErMTY+PjJdfDA7aWYoKGJhfDApPT0oY2F8MCkpeyQ9b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDA7Y2E9Y1tlPj4yXXwwO189YVt4Pj4wXXwwO2FhPWNhO2JhPWNbY2ErMTI+PjJdfDA7Y2E9Y1tjYSsxNj4+Ml18MH1lbHNleyQ9ZFtiYT4+MF18MH1kYT1hYSsxMnwwO2NhPShiYXwwKT09KGNhfDApO2lmKCgkJjI1NSk8PDI0Pj4yND09KGFbKChfJjEpPT0wP0s6Y1tEPj4yXXwwKT4+MF18MCkpe2lmKGNhKXtvY1tjWyhjW2FhPj4yXXwwKSs0MD4+Ml0mMTI3XShhYSl8MH1lbHNle2NbZGE+PjJdPWJhKzF9Xz1hW3g+PjBdfDA7aWYoKF8mMSk9PTApe189KF8mMjU1KT4+PjF9ZWxzZXtfPWNbSD4+Ml18MH1UPV8+Pj4wPjE/eDpUO2JyZWFrIGJ9aWYoY2Epe189b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDB9ZWxzZXtfPWRbYmE+PjBdfDB9aWYoISgoXyYyNTUpPDwyND4+MjQ9PShhWygoYVtzPj4wXSYxKT09MD9JOmNbbT4+Ml18MCk+PjBdfDApKSl7Qz0xOTY7YnJlYWsgYX1hYT1jW2U+PjJdfDA7Xz1hYSsxMnwwOyQ9Y1tfPj4yXXwwO2lmKCgkfDApPT0oY1thYSsxNj4+Ml18MCkpe29jW2NbKGNbYWE+PjJdfDApKzQwPj4yXSYxMjddKGFhKXwwfWVsc2V7Y1tfPj4yXT0kKzF9YVtsPj4wXT0xO189YVtzPj4wXXwwO2lmKChfJjEpPT0wKXtfPShfJjI1NSk+Pj4xfWVsc2V7Xz1jW0w+PjJdfDB9VD1fPj4+MD4xP3M6VDticmVhayBifX1pZihhYSl7YWE9KF8mMjU1KT4+PjF9ZWxzZXthYT1jW0g+PjJdfDB9YmE9Y1tlPj4yXXwwO2NhPWNbYmErMTI+PjJdfDA7ZGE9KGNhfDApPT0oY1tiYSsxNj4+Ml18MCk7aWYoKGFhfDApPT0wKXtpZihkYSl7Xz1vY1tjWyhjW2JhPj4yXXwwKSszNj4+Ml0mMTI3XShiYSl8MDskPWFbcz4+MF18MH1lbHNle189ZFtjYT4+MF18MH1pZighKChfJjI1NSk8PDI0Pj4yND09KGFbKCgkJjEpPT0wP0k6Y1ttPj4yXXwwKT4+MF18MCkpKXticmVhayBifWFhPWNbZT4+Ml18MDtfPWFhKzEyfDA7JD1jW18+PjJdfDA7aWYoKCR8MCk9PShjW2FhKzE2Pj4yXXwwKSl7b2NbY1soY1thYT4+Ml18MCkrNDA+PjJdJjEyN10oYWEpfDB9ZWxzZXtjW18+PjJdPSQrMX1hW2w+PjBdPTE7Xz1hW3M+PjBdfDA7aWYoKF8mMSk9PTApe189KF8mMjU1KT4+PjF9ZWxzZXtfPWNbTD4+Ml18MH1UPV8+Pj4wPjE/czpUO2JyZWFrIGJ9aWYoZGEpeyQ9b2NbY1soY1tiYT4+Ml18MCkrMzY+PjJdJjEyN10oYmEpfDA7Xz1hW3g+PjBdfDB9ZWxzZXskPWRbY2E+PjBdfDB9aWYoISgoJCYyNTUpPDwyND4+MjQ9PShhWygoXyYxKT09MD9LOmNbRD4+Ml18MCk+PjBdfDApKSl7YVtsPj4wXT0xO2JyZWFrIGJ9Xz1jW2U+PjJdfDA7JD1fKzEyfDA7YWE9Y1skPj4yXXwwO2lmKChhYXwwKT09KGNbXysxNj4+Ml18MCkpe29jW2NbKGNbXz4+Ml18MCkrNDA+PjJdJjEyN10oXyl8MH1lbHNle2NbJD4+Ml09YWErMX1fPWFbeD4+MF18MDtpZigoXyYxKT09MCl7Xz0oXyYyNTUpPj4+MX1lbHNle189Y1tIPj4yXXwwfVQ9Xz4+PjA+MT94OlR9YnJlYWt9O2Nhc2UgNDp7Xz0wO2U6d2hpbGUoMSl7JD1jW2U+PjJdfDA7ZG97aWYoKCR8MCkhPTApe2lmKChjWyQrMTI+PjJdfDApPT0oY1skKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbJD4+Ml18MCkrMzY+PjJdJjEyN10oJCl8MCk9PS0xKXtjW2U+PjJdPTA7JD0wO2JyZWFrfWVsc2V7JD1jW2U+PjJdfDA7YnJlYWt9fX1lbHNleyQ9MH19d2hpbGUoMCk7JD0oJHwwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZigkKXticmVha31lbHNle2JyZWFrIGV9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoISQpe2JyZWFrIGV9fWVsc2V7Qz0yNTl9fWVsc2V7Qz0yNTl9fXdoaWxlKDApO2lmKChDfDApPT0yNTkpe0M9MDtpZigkKXtmPTA7YnJlYWt9ZWxzZXtmPTB9fSQ9Y1tlPj4yXXwwO2FhPWNbJCsxMj4+Ml18MDtpZigoYWF8MCk9PShjWyQrMTY+PjJdfDApKXthYT1vY1tjWyhjWyQ+PjJdfDApKzM2Pj4yXSYxMjddKCQpfDB9ZWxzZXthYT1kW2FhPj4wXXwwfSQ9YWEmMjU1O2lmKCQ8PDI0Pj4yND4tMT8hKChiWyhjW0o+PjJdfDApKyhhYTw8MjQ+PjI0PDwxKT4+MV0mMjA0OCk9PTApOjApe2FhPWNbbz4+Ml18MDtpZigoYWF8MCk9PShwfDApKXtiYT0oY1tSPj4yXXwwKSE9MjEzO2NhPWNbbj4+Ml18MDthYT1wLWNhfDA7cD1hYT4+PjA8MjE0NzQ4MzY0Nz9hYTw8MTotMTtjYT13bihiYT9jYTowLHApfDA7aWYoKGNhfDApPT0wKXtDPTI2ODticmVhayBhfWlmKCFiYSl7YmE9Y1tuPj4yXXwwO2Nbbj4+Ml09Y2E7aWYoKGJhfDApIT0wKXtsY1tjW1I+PjJdJjI1NV0oYmEpO2NhPWNbbj4+Ml18MH19ZWxzZXtjW24+PjJdPWNhfWNbUj4+Ml09MjE0O2FhPWNhK2FhfDA7Y1tvPj4yXT1hYTtwPShjW24+PjJdfDApK3B8MH1jW28+PjJdPWFhKzE7YVthYT4+MF09JDtfPV8rMXwwfWVsc2V7YWE9YVt0Pj4wXXwwO2lmKChhYSYxKT09MCl7YWE9KGFhJjI1NSk+Pj4xfWVsc2V7YWE9Y1tQPj4yXXwwfWlmKCEoKCgoYWF8MCk9PTB8KF98MCk9PTApXjEpJiQ8PDI0Pj4yND09Rzw8MjQ+PjI0KSl7YnJlYWt9aWYoKFl8MCk9PShYfDApKXtZPVktWnwwO1g9WT4+PjA8MjE0NzQ4MzY0Nz9ZPDwxOi0xO2lmKChXfDApPT0yMTMpe1o9MH1XPXduKFosWCl8MDtpZigoV3wwKT09MCl7Qz0yODU7YnJlYWsgYX1aPVc7WD1XKyhYPj4+Mjw8Mil8MDtZPVcrKFk+PjI8PDIpfDA7Vz0yMTR9Y1tZPj4yXT1fO1k9WSs0fDA7Xz0wfSQ9Y1tlPj4yXXwwO2FhPSQrMTJ8MDtiYT1jW2FhPj4yXXwwO2lmKChiYXwwKT09KGNbJCsxNj4+Ml18MCkpe29jW2NbKGNbJD4+Ml18MCkrNDA+PjJdJjEyN10oJCl8MDtjb250aW51ZX1lbHNle2NbYWE+PjJdPWJhKzE7Y29udGludWV9fWlmKCEoKFp8MCk9PShZfDApfChffDApPT0wKSl7aWYoKFl8MCk9PShYfDApKXtZPVktWnwwO1g9WT4+PjA8MjE0NzQ4MzY0Nz9ZPDwxOi0xO2lmKChXfDApPT0yMTMpe1o9MH1XPXduKFosWCl8MDtpZigoV3wwKT09MCl7Qz0yOTc7YnJlYWsgYX1aPVc7WD1XKyhYPj4+Mjw8Mil8MDtZPVcrKFk+PjI8PDIpfDA7Vz0yMTR9Y1tZPj4yXT1fO1k9WSs0fDB9aWYoKFZ8MCk+MCl7Xz1jW2U+PjJdfDA7ZG97aWYoKF98MCkhPTApe2lmKChjW18rMTI+PjJdfDApPT0oY1tfKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbXz4+Ml18MCkrMzY+PjJdJjEyN10oXyl8MCk9PS0xKXtjW2U+PjJdPTA7Xz0wO2JyZWFrfWVsc2V7Xz1jW2U+PjJdfDA7YnJlYWt9fX1lbHNle189MH19d2hpbGUoMCk7Xz0oX3wwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZihfKXticmVha31lbHNle0M9MzE5O2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoIV8pe0M9MzE5O2JyZWFrIGF9fWVsc2V7Qz0zMTN9fWVsc2V7Qz0zMTN9fXdoaWxlKDApO2lmKChDfDApPT0zMTMpe0M9MDtpZihfKXtDPTMxOTticmVhayBhfWVsc2V7Zj0wfX1fPWNbZT4+Ml18MDskPWNbXysxMj4+Ml18MDtpZigoJHwwKT09KGNbXysxNj4+Ml18MCkpe189b2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwfWVsc2V7Xz1kWyQ+PjBdfDB9aWYoISgoXyYyNTUpPDwyND4+MjQ9PWg8PDI0Pj4yNCkpe0M9MzE5O2JyZWFrIGF9Xz1jW2U+PjJdfDA7JD1fKzEyfDA7YWE9Y1skPj4yXXwwO2lmKChhYXwwKT09KGNbXysxNj4+Ml18MCkpe29jW2NbKGNbXz4+Ml18MCkrNDA+PjJdJjEyN10oXyl8MDthYT1mOyQ9Zn1lbHNle2NbJD4+Ml09YWErMTthYT1mOyQ9Zn13aGlsZSgxKXtfPWNbZT4+Ml18MDtkb3tpZigoX3wwKSE9MCl7aWYoKGNbXysxMj4+Ml18MCk9PShjW18rMTY+PjJdfDApKXtpZigob2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwKT09LTEpe2NbZT4+Ml09MDtfPTA7YnJlYWt9ZWxzZXtfPWNbZT4+Ml18MDticmVha319fWVsc2V7Xz0wfX13aGlsZSgwKTtiYT0oX3wwKT09MDtkb3tpZigoJHwwKSE9MCl7aWYoKGNbJCsxMj4+Ml18MCkhPShjWyQrMTY+PjJdfDApKXtpZihiYSl7Xz1hYTticmVha31lbHNle0M9MzQxO2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbJD4+Ml18MCkrMzY+PjJdJjEyN10oJCl8MCk9PS0xKSl7aWYoYmFeKGFhfDApPT0wKXtfPWFhOyQ9YWF9ZWxzZXtDPTM0MTticmVhayBhfX1lbHNle189MDtmPTA7Qz0zMzR9fWVsc2V7Xz1hYTtDPTMzNH19d2hpbGUoMCk7aWYoKEN8MCk9PTMzNCl7Qz0wO2lmKGJhKXtDPTM0MTticmVhayBhfWVsc2V7JD0wfX1hYT1jW2U+PjJdfDA7YmE9Y1thYSsxMj4+Ml18MDtpZigoYmF8MCk9PShjW2FhKzE2Pj4yXXwwKSl7YWE9b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDB9ZWxzZXthYT1kW2JhPj4wXXwwfWlmKCEoKGFhJjI1NSk8PDI0Pj4yND4tMSkpe0M9MzQxO2JyZWFrIGF9aWYoKGJbKGNbSj4+Ml18MCkrKGFhPDwyND4+MjQ8PDEpPj4xXSYyMDQ4KT09MCl7Qz0zNDE7YnJlYWsgYX1hYT1jW28+PjJdfDA7aWYoKGFhfDApPT0ocHwwKSl7YmE9KGNbUj4+Ml18MCkhPTIxMztjYT1jW24+PjJdfDA7YWE9cC1jYXwwO3A9YWE+Pj4wPDIxNDc0ODM2NDc/YWE8PDE6LTE7Y2E9d24oYmE/Y2E6MCxwKXwwO2lmKChjYXwwKT09MCl7Qz0zNDQ7YnJlYWsgYX1kb3tpZihiYSl7Y1tuPj4yXT1jYX1lbHNle2JhPWNbbj4+Ml18MDtjW24+PjJdPWNhO2lmKChiYXwwKT09MCl7YnJlYWt9bGNbY1tSPj4yXSYyNTVdKGJhKTtjYT1jW24+PjJdfDB9fXdoaWxlKDApO2NbUj4+Ml09MjE0O2FhPWNhK2FhfDA7Y1tvPj4yXT1hYTtwPShjW24+PjJdfDApK3B8MH1jYT1jW2U+PjJdfDA7YmE9Y1tjYSsxMj4+Ml18MDtpZigoYmF8MCk9PShjW2NhKzE2Pj4yXXwwKSl7YmE9b2NbY1soY1tjYT4+Ml18MCkrMzY+PjJdJjEyN10oY2EpfDA7YWE9Y1tvPj4yXXwwfWVsc2V7YmE9ZFtiYT4+MF18MH1jW28+PjJdPWFhKzE7YVthYT4+MF09YmE7Vj1WKyAtMXwwO2NhPWNbZT4+Ml18MDthYT1jYSsxMnwwO2JhPWNbYWE+PjJdfDA7aWYoKGJhfDApPT0oY1tjYSsxNj4+Ml18MCkpe29jW2NbKGNbY2E+PjJdfDApKzQwPj4yXSYxMjddKGNhKXwwfWVsc2V7Y1thYT4+Ml09YmErMX1pZigoVnwwKT4wKXthYT1ffWVsc2V7YnJlYWt9fX1pZigoY1tvPj4yXXwwKT09KGNbbj4+Ml18MCkpe0M9MzYxO2JyZWFrIGF9YnJlYWt9O2Nhc2UgMTp7aWYoKFV8MCk9PTMpe0M9MzYzO2JyZWFrIGF9Qz1jW2U+PjJdfDA7Xz1jW0MrMTI+PjJdfDA7aWYoKF98MCk9PShjW0MrMTY+PjJdfDApKXtDPW9jW2NbKGNbQz4+Ml18MCkrMzY+PjJdJjEyN10oQyl8MH1lbHNle0M9ZFtfPj4wXXwwfWlmKCEoKEMmMjU1KTw8MjQ+PjI0Pi0xKSl7Qz05NjticmVhayBhfWlmKChiWyhjW0o+PjJdfDApKyhDPDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7Qz05NjticmVhayBhfUM9Y1tlPj4yXXwwOyQ9QysxMnwwO189Y1skPj4yXXwwO2lmKChffDApPT0oY1tDKzE2Pj4yXXwwKSl7Qz1vY1tjWyhjW0M+PjJdfDApKzQwPj4yXSYxMjddKEMpfDB9ZWxzZXtjWyQ+PjJdPV8rMTtDPWRbXz4+MF18MH1fPUMmMjU1OyQ9YVt3Pj4wXXwwO0M9KCQmMSkhPTA7aWYoQyl7YWE9KGNbdz4+Ml0mLTIpKyAtMXwwOyQ9Y1tPPj4yXXwwfWVsc2V7YWE9MTA7JD0oJCYyNTUpPj4+MX1pZigoJHwwKT09KGFhfDApKXtsZyh3LGFhLDEsYWEsYWEsMCk7aWYoKGFbdz4+MF0mMSk9PTApe0M9OTN9ZWxzZXtDPTk0fX1lbHNle2lmKEMpe0M9OTR9ZWxzZXtDPTkzfX1pZigoQ3wwKT09OTMpe2Fbdz4+MF09KCQ8PDEpKzI7YmE9ZzthYT0kKzF8MH1lbHNlIGlmKChDfDApPT05NCl7YmE9Y1tFPj4yXXwwO2FhPSQrMXwwO2NbTz4+Ml09YWF9YVtiYSskPj4wXT1fO2FbYmErYWE+PjBdPTA7Qz05NzticmVha307ZGVmYXVsdDp7fX19d2hpbGUoMCk7Zjpkb3tpZigoQ3wwKT09OTcpe0M9MDtpZigoVXwwKT09Myl7Qz0zNjM7YnJlYWsgYX1lbHNle2FhPWY7JD1mfXdoaWxlKDEpe189Y1tlPj4yXXwwO2Rve2lmKChffDApIT0wKXtpZigoY1tfKzEyPj4yXXwwKT09KGNbXysxNj4+Ml18MCkpe2lmKChvY1tjWyhjW18+PjJdfDApKzM2Pj4yXSYxMjddKF8pfDApPT0tMSl7Y1tlPj4yXT0wO189MDticmVha31lbHNle189Y1tlPj4yXXwwO2JyZWFrfX19ZWxzZXtfPTB9fXdoaWxlKDApO2JhPShffDApPT0wO2Rve2lmKCgkfDApIT0wKXtpZigoY1skKzEyPj4yXXwwKSE9KGNbJCsxNj4+Ml18MCkpe2lmKGJhKXtfPWFhO2JyZWFrfWVsc2V7YnJlYWsgZn19aWYoISgob2NbY1soY1skPj4yXXwwKSszNj4+Ml0mMTI3XSgkKXwwKT09LTEpKXtpZihiYV4oYWF8MCk9PTApe189YWE7JD1hYX1lbHNle2JyZWFrIGZ9fWVsc2V7Xz0wO2Y9MDtDPTEwOX19ZWxzZXtfPWFhO0M9MTA5fX13aGlsZSgwKTtpZigoQ3wwKT09MTA5KXtDPTA7aWYoYmEpe2JyZWFrIGZ9ZWxzZXskPTB9fWJhPWNbZT4+Ml18MDthYT1jW2JhKzEyPj4yXXwwO2lmKChhYXwwKT09KGNbYmErMTY+PjJdfDApKXthYT1vY1tjWyhjW2JhPj4yXXwwKSszNj4+Ml0mMTI3XShiYSl8MH1lbHNle2FhPWRbYWE+PjBdfDB9aWYoISgoYWEmMjU1KTw8MjQ+PjI0Pi0xKSl7YnJlYWsgZn1pZigoYlsoY1tKPj4yXXwwKSsoYWE8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXticmVhayBmfWJhPWNbZT4+Ml18MDtDPWJhKzEyfDA7YWE9Y1tDPj4yXXwwO2lmKChhYXwwKT09KGNbYmErMTY+PjJdfDApKXtDPW9jW2NbKGNbYmE+PjJdfDApKzQwPj4yXSYxMjddKGJhKXwwfWVsc2V7Y1tDPj4yXT1hYSsxO0M9ZFthYT4+MF18MH1hYT1DJjI1NTtiYT1hW3c+PjBdfDA7Y2E9KGJhJjEpIT0wO2lmKGNhKXtDPShjW3c+PjJdJi0yKSsgLTF8MDtiYT1jW08+PjJdfDB9ZWxzZXtDPTEwO2JhPShiYSYyNTUpPj4+MX1pZigoYmF8MCk9PShDfDApKXtsZyh3LEMsMSxDLEMsMCk7aWYoKGFbdz4+MF0mMSk9PTApe0M9MTI2fWVsc2V7Qz0xMjd9fWVsc2V7aWYoY2Epe0M9MTI3fWVsc2V7Qz0xMjZ9fWlmKChDfDApPT0xMjYpe0M9MDthW3c+PjBdPShiYTw8MSkrMjtjYT1nO2RhPWJhKzF8MH1lbHNlIGlmKChDfDApPT0xMjcpe0M9MDtjYT1jW0U+PjJdfDA7ZGE9YmErMXwwO2NbTz4+Ml09ZGF9YVtjYStiYT4+MF09YWE7YVtjYStkYT4+MF09MDthYT1ffX19d2hpbGUoMCk7VT1VKzF8MDtpZighKFU+Pj4wPDQpKXtDPTM2MzticmVha319Zzpzd2l0Y2goQ3wwKXtjYXNlIDk2OntjW2s+PjJdPWNbaz4+Ml18NDtlPTA7WT1aO2JyZWFrfTtjYXNlIDE5Njp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAyNDc6e2Nbaz4+Ml09Y1trPj4yXXw0O2U9MDtZPVo7YnJlYWt9O2Nhc2UgMjY4OntmYT1YYSg0KXwwO2NbZmE+PjJdPTIyNjgwO3diKGZhfDAsMjI3MjgsMjA2KX07Y2FzZSAyODU6e2ZhPVhhKDQpfDA7Y1tmYT4+Ml09MjI2ODA7d2IoZmF8MCwyMjcyOCwyMDYpfTtjYXNlIDI5Nzp7ZmE9WGEoNCl8MDtjW2ZhPj4yXT0yMjY4MDt3YihmYXwwLDIyNzI4LDIwNil9O2Nhc2UgMzE5OntjW2s+PjJdPWNbaz4+Ml18NDtlPTA7WT1aO2JyZWFrfTtjYXNlIDM0MTp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAzNDQ6e2ZhPVhhKDQpfDA7Y1tmYT4+Ml09MjI2ODA7d2IoZmF8MCwyMjcyOCwyMDYpfTtjYXNlIDM2MTp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAzNjM6e2g6ZG97aWYoKFR8MCkhPTApe0Y9VCsxfDA7bj1UKzh8MDtsPVQrNHwwO289MTtpOndoaWxlKDEpe2g9YVtUPj4wXXwwO2lmKChoJjEpPT0wKXtoPShoJjI1NSk+Pj4xfWVsc2V7aD1jW2w+PjJdfDB9aWYoIShvPj4+MDxoPj4+MCkpe2JyZWFrIGh9aD1jW2U+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKChjW2grMTI+PjJdfDApPT0oY1toKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xKXtjW2U+PjJdPTA7aD0wO2JyZWFrfWVsc2V7aD1jW2U+PjJdfDA7YnJlYWt9fX1lbHNle2g9MH19d2hpbGUoMCk7aD0oaHwwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZihoKXticmVha31lbHNle2JyZWFrIGl9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoIWgpe2JyZWFrIGl9fWVsc2V7Qz0zODB9fWVsc2V7Qz0zODB9fXdoaWxlKDApO2lmKChDfDApPT0zODApe0M9MDtpZihoKXticmVha31lbHNle2Y9MH19aD1jW2U+PjJdfDA7Rz1jW2grMTI+PjJdfDA7aWYoKEd8MCk9PShjW2grMTY+PjJdfDApKXtoPW9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MH1lbHNle2g9ZFtHPj4wXXwwfWlmKChhW1Q+PjBdJjEpPT0wKXtHPUZ9ZWxzZXtHPWNbbj4+Ml18MH1pZighKChoJjI1NSk8PDI0Pj4yND09KGFbRytvPj4wXXwwKSkpe2JyZWFrfW89bysxfDA7aD1jW2U+PjJdfDA7Rz1oKzEyfDA7SD1jW0c+PjJdfDA7aWYoKEh8MCk9PShjW2grMTY+PjJdfDApKXtvY1tjWyhjW2g+PjJdfDApKzQwPj4yXSYxMjddKGgpfDA7Y29udGludWV9ZWxzZXtjW0c+PjJdPUgrMTtjb250aW51ZX19Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVhayBnfX13aGlsZSgwKTtpZigoWnwwKSE9KFl8MCkpe2NbQj4+Ml09MDtxayh0LFosWSxCKTtpZigoY1tCPj4yXXwwKT09MCl7ZT0xO1k9Wn1lbHNle2Nbaz4+Ml09Y1trPj4yXXw0O2U9MDtZPVp9fWVsc2V7ZT0xfWJyZWFrfX1pZighKChhW3c+PjBdJjEpPT0wKT8odj1jW0U+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbcz4+MF0mMSk9PTApPyh6PWNbbT4+Ml18MCwoenwwKSE9MCk6MCl7dm4oeil9aWYoISgoYVt4Pj4wXSYxKT09MCk/KEE9Y1tEPj4yXXwwLChBfDApIT0wKTowKXt2bihBKX1pZighKChhW3k+PjBdJjEpPT0wKT8ocj1jW2o+PjJdfDAsKHJ8MCkhPTApOjApe3ZuKHIpfWlmKCEoKGFbdD4+MF0mMSk9PTApPyhxPWNbdCs4Pj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1pZigoWXwwKT09MCl7aT11O3JldHVybiBlfDB9bGNbVyYyNTVdKFkpO2k9dTtyZXR1cm4gZXwwfWZ1bmN0aW9uIG9rKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2Q9WGEoOCl8MDtjW2Q+PjJdPTk5Mjg7Yj1KbihhfDApfDA7ZT1iKzEzfDA7ZT0oZXwwKT09MD8xOmU7d2hpbGUoMSl7Zz11bihlKXwwO2lmKChnfDApIT0wKXtmPTc7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2JyZWFrfXNjW2cmMzFdKCl9aWYoKGZ8MCk9PTcpe2NbZys0Pj4yXT1iO2NbZz4+Ml09YjtmPWcrMTJ8MDtjW2QrND4+Ml09ZjtjW2crOD4+Ml09MDtMbihmfDAsYXwwLGIrMXwwKXwwO3diKGR8MCwxMDA2NCwxMDYpfWc9WGEoNCl8MDtjW2c+PjJdPTIyNjgwO3diKGd8MCwyMjcyOCwyMDYpfWZ1bmN0aW9uIHBrKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDttPWk7aT1pKzEyOHwwO3A9bTtzPW0rMjh8MDtkPW0rMTZ8MDtxPW0rMTJ8MDt0PW0rMjR8MDtjW2Q+PjJdPXM7bD1kKzR8MDtjW2w+PjJdPTIxMztzPXMrMTAwfDA7bj1jW2grMjg+PjJdfDA7dT1uKzR8MDtjW3U+PjJdPShjW3U+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3A+PjJdPTEzNDU2O2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM0NTYscCl9cD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dT1jW24rOD4+Ml18MDtpZigoY1tuKzEyPj4yXXwwKS11Pj4yPj4+MD5wPj4+MD8ocj1jW3UrKHA8PDIpPj4yXXwwLChyfDApIT0wKTowKXthW3Q+PjBdPTA7cD1jW2Y+PjJdfDA7ZG97aWYobmsoZSxwLGcsbixjW2grND4+Ml18MCxqLHQscixkLHEscyl8MCl7aWYoKGFbaz4+MF0mMSk9PTApe2FbaysxPj4wXT0wO2Fbaz4+MF09MH1lbHNle2FbY1trKzg+PjJdPj4wXT0wO2Nbays0Pj4yXT0wfWlmKChhW3Q+PjBdfDApIT0wKXtnPXhjW2NbKGNbcj4+Ml18MCkrMjg+PjJdJjYzXShyLDQ1KXwwO2g9YVtrPj4wXXwwO289KGgmMSkhPTA7aWYobyl7cz0oY1trPj4yXSYtMikrIC0xfDA7aD1jW2srND4+Ml18MH1lbHNle3M9MTA7aD0oaCYyNTUpPj4+MX1pZigoaHwwKT09KHN8MCkpe2xnKGsscywxLHMscywwKTtpZigoYVtrPj4wXSYxKT09MCl7bz0yMX1lbHNle289MjJ9fWVsc2V7aWYobyl7bz0yMn1lbHNle289MjF9fWlmKChvfDApPT0yMSl7YVtrPj4wXT0oaDw8MSkrMjtzPWsrMXwwO3Q9aCsxfDB9ZWxzZSBpZigob3wwKT09MjIpe3M9Y1trKzg+PjJdfDA7dD1oKzF8MDtjW2srND4+Ml09dH1hW3MraD4+MF09ZzthW3MrdD4+MF09MH1yPXhjW2NbKGNbcj4+Ml18MCkrMjg+PjJdJjYzXShyLDQ4KXwwO2g9Y1tkPj4yXXwwO3E9Y1txPj4yXXwwO2c9cSsgLTF8MDthOmRve2lmKGg+Pj4wPGc+Pj4wKXt3aGlsZSgxKXtzPWgrMXwwO2lmKCEoKGFbaD4+MF18MCk9PXI8PDI0Pj4yNCkpe2JyZWFrIGF9aWYocz4+PjA8Zz4+PjApe2g9c31lbHNle2g9czticmVha319fX13aGlsZSgwKTtzPWg7cj1hW2s+PjBdfDA7aWYoKHImMSk9PTApe3Q9cjt1PTEwO3I9KHImMjU1KT4+PjF9ZWxzZXt1PWNbaz4+Ml18MDt0PXUmMjU1O3U9KHUmLTIpKyAtMXwwO3I9Y1trKzQ+PjJdfDB9Zz1xLXN8MDtpZigocXwwKSE9KGh8MCkpe2lmKCh1LXJ8MCk+Pj4wPGc+Pj4wKXtsZyhrLHUscitnLXV8MCxyLHIsMCk7dD1hW2s+PjBdfDB9aWYoKHQmMSk9PTApe3Q9aysxfDB9ZWxzZXt0PWNbays4Pj4yXXwwfXM9cSsoci1zKXwwO3U9dCtyfDA7d2hpbGUoMSl7YVt1Pj4wXT1hW2g+PjBdfDA7aD1oKzF8MDtpZigoaHwwKT09KHF8MCkpe2JyZWFrfXU9dSsxfDB9YVt0K3M+PjBdPTA7cT1yK2d8MDtpZigoYVtrPj4wXSYxKT09MCl7YVtrPj4wXT1xPDwxO2JyZWFrfWVsc2V7Y1trKzQ+PjJdPXE7YnJlYWt9fX19d2hpbGUoMCk7az1jW2U+PjJdfDA7aWYoKGt8MCkhPTApe2lmKChjW2srMTI+PjJdfDApPT0oY1trKzE2Pj4yXXwwKT8ob2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwKT09LTE6MCl7Y1tlPj4yXT0wO2s9MH19ZWxzZXtrPTB9ZT0oa3wwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCkhPShjW3ArMTY+PjJdfDApKXtpZihlKXticmVha31lbHNle289NTc7YnJlYWt9fWlmKCEoKG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xKSl7aWYoZSl7YnJlYWt9ZWxzZXtvPTU3O2JyZWFrfX1lbHNle2NbZj4+Ml09MDtvPTU1O2JyZWFrfX1lbHNle289NTV9fXdoaWxlKDApO2lmKChvfDApPT01NT9lOjApe289NTd9aWYoKG98MCk9PTU3KXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWs7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApPT0wKXtsY1tjWyhjW24+PjJdfDApKzg+PjJdJjI1NV0obil9aj1jW2Q+PjJdfDA7Y1tkPj4yXT0wO2lmKChqfDApPT0wKXtpPW07cmV0dXJufWxjW2NbbD4+Ml0mMjU1XShqKTtpPW07cmV0dXJufXU9WGEoNCl8MDtjW3U+PjJdPTIxMzA0O3diKHV8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHFrKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTA7Zz1pO2s9YVtiPj4wXXwwO2lmKChrJjEpPT0wKXtqPShrJjI1NSk+Pj4xfWVsc2V7aj1jW2IrND4+Ml18MH1pZigoanwwKT09MCl7aT1nO3JldHVybn1pZigoZHwwKSE9KGV8MCk/KGg9ZSsgLTR8MCxoPj4+MD5kPj4+MCk6MCl7aj1kO2Rve2s9Y1tqPj4yXXwwO2Nbaj4+Ml09Y1toPj4yXTtjW2g+PjJdPWs7aj1qKzR8MDtoPWgrIC00fDB9d2hpbGUoaj4+PjA8aD4+PjApO2s9YVtiPj4wXXwwfWlmKChrJjEpPT0wKXtoPWIrMXwwO2I9KGsmMjU1KT4+PjF9ZWxzZXtoPWNbYis4Pj4yXXwwO2I9Y1tiKzQ+PjJdfDB9ZT1lKyAtNHwwO2s9YVtoPj4wXXwwO2o9azw8MjQ+PjI0PDF8azw8MjQ+PjI0PT0xMjc7YTpkb3tpZihlPj4+MD5kPj4+MCl7Yj1oK2J8MDt3aGlsZSgxKXtpZighaj8oazw8MjQ+PjI0fDApIT0oY1tkPj4yXXwwKTowKXticmVha31oPShiLWh8MCk+MT9oKzF8MDpoO2Q9ZCs0fDA7az1hW2g+PjBdfDA7aj1rPDwyND4+MjQ8MXxrPDwyND4+MjQ9PTEyNztpZighKGQ+Pj4wPGU+Pj4wKSl7YnJlYWsgYX19Y1tmPj4yXT00O2k9ZztyZXR1cm59fXdoaWxlKDApO2lmKGope2k9ZztyZXR1cm59aj1jW2U+PjJdfDA7aWYoIShrPDwyND4+MjQ+Pj4wPGo+Pj4wfChqfDApPT0wKSl7aT1nO3JldHVybn1jW2Y+PjJdPTQ7aT1nO3JldHVybn1mdW5jdGlvbiByayhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBzayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gdGsoYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO249aTtpPWkrNTc2fDA7cT1uO3Y9bisyNHwwO2Q9bisxNnwwO3I9bis0NjR8MDt1PW4rNTY4fDA7cz1uKzQyNHwwO3A9bis0Njh8MDtjW2Q+PjJdPXY7bT1kKzR8MDtjW20+PjJdPTIxMzt2PXYrNDAwfDA7bz1jW2grMjg+PjJdfDA7eD1vKzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW3E+PjJdPTEzNDQ4O2NbcSs0Pj4yXT0yMDg7Y1txKzg+PjJdPTA7Y2coMTM0NDgscSl9eD0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dz1jW28rOD4+Ml18MDtpZigoY1tvKzEyPj4yXXwwKS13Pj4yPj4+MD54Pj4+MD8odD1jW3crKHg8PDIpPj4yXXwwLCh0fDApIT0wKTowKXthW3U+PjBdPTA7ZG97aWYodWsoZSxjW2Y+PjJdfDAsZyxvLGNbaCs0Pj4yXXwwLGosdSx0LGQscix2KXwwKXt1Y1tjWyhjW3Q+PjJdfDApKzQ4Pj4yXSYzMV0odCwxMzE2OCwxMzE3OHwwLHMpfDA7aD1jW3I+PjJdfDA7Zz1jW2Q+PjJdfDA7dD1oLWd8MDtpZigodHwwKT4zOTIpe3Y9dW4oKHQ+PjIpKzJ8MCl8MDtpZigodnwwKT09MCl7eD1YYSg0KXwwO2NbeD4+Ml09MjI2ODA7d2IoeHwwLDIyNzI4LDIwNil9ZWxzZXt0PXZ9fWVsc2V7dD0wO3Y9cH1pZigoYVt1Pj4wXXwwKSE9MCl7YVt2Pj4wXT00NTt2PXYrMXwwfWlmKGc+Pj4wPGg+Pj4wKXtoPXMrNDB8MDt1PXM7ZG97eD1jW2c+PjJdfDA7dz1zO3doaWxlKDEpe2lmKChjW3c+PjJdfDApPT0oeHwwKSl7YnJlYWt9dz13KzR8MDtpZigod3wwKT09KGh8MCkpe3c9aDticmVha319YVt2Pj4wXT1hWzEzMTY4Kyh3LXU+PjIpPj4wXXwwO2c9Zys0fDA7dj12KzF8MH13aGlsZShnPj4+MDwoY1tyPj4yXXwwKT4+PjApfWFbdj4+MF09MDtjW3E+PjJdPWs7aWYoKEZhKHB8MCwxMzEwNCxxfDApfDApPT0xKXtpZigodHwwKT09MCl7YnJlYWt9dm4odCk7YnJlYWt9aj1YYSg4KXwwO2Nbaj4+Ml09OTkyODt3aGlsZSgxKXtkPXVuKDI4KXwwO2lmKChkfDApIT0wKXtsPTI5O2JyZWFrfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXtsPTI3O2JyZWFrfXNjW2wmMzFdKCl9aWYoKGx8MCk9PTI3KXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNlIGlmKChsfDApPT0yOSl7Y1tkKzQ+PjJdPTE1O2NbZD4+Ml09MTU7Yj1kKzEyfDA7Y1tqKzQ+PjJdPWI7Y1tkKzg+PjJdPTA7Yj1iKzB8MDtkPTEzMTEyfDA7bD1iKzE2fDA7ZG97YVtiPj4wXT1hW2Q+PjBdfDA7Yj1iKzF8MDtkPWQrMXwwfXdoaWxlKChifDApPChsfDApKTt3YihqfDAsMTAwNjQsMTA2KX19fXdoaWxlKDApO2s9Y1tlPj4yXXwwO2lmKChrfDApIT0wKXtwPWNbaysxMj4+Ml18MDtpZigocHwwKT09KGNbaysxNj4+Ml18MCkpe3A9b2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwfWVsc2V7cD1jW3A+PjJdfDB9aWYoKHB8MCk9PS0xKXtjW2U+PjJdPTA7ZT0wO2s9MX1lbHNle2U9aztrPTB9fWVsc2V7ZT0wO2s9MX1xPWNbZj4+Ml18MDtkb3tpZigocXwwKSE9MCl7cD1jW3ErMTI+PjJdfDA7aWYoKHB8MCk9PShjW3ErMTY+PjJdfDApKXtwPW9jW2NbKGNbcT4+Ml18MCkrMzY+PjJdJjEyN10ocSl8MH1lbHNle3A9Y1twPj4yXXwwfWlmKCEoKHB8MCk9PS0xKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTQ3O2JyZWFrfX1lbHNle2NbZj4+Ml09MDtsPTQ1O2JyZWFrfX1lbHNle2w9NDV9fXdoaWxlKDApO2lmKChsfDApPT00NT9rOjApe2w9NDd9aWYoKGx8MCk9PTQ3KXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWU7dz1vKzR8MDt4PWNbdz4+Ml18MDtjW3c+PjJdPXgrIC0xO2lmKCh4fDApPT0wKXtsY1tjWyhjW28+PjJdfDApKzg+PjJdJjI1NV0obyl9bD1jW2Q+PjJdfDA7Y1tkPj4yXT0wO2lmKChsfDApPT0wKXtpPW47cmV0dXJufWxjW2NbbT4+Ml0mMjU1XShsKTtpPW47cmV0dXJufXg9WGEoNCl8MDtjW3g+PjJdPTIxMzA0O3diKHh8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHVrKGIsZSxmLGcsaCxqLGssbCxtLG4sbyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7dmFyIHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTA7dj1pO2k9aSs1OTJ8MDtRPXY7Tz12KzExMnwwO0s9disxMnwwO0c9disxMDB8MDtIPXYrNDB8MDtFPXYrMjR8MDtOPXYrMzZ8MDtNPXYrODh8MDtMPXYrNzZ8MDtKPXYrNTJ8MDtJPXYrNjR8MDtQPXYrMTIwfDA7Rj12KzUyMHwwO3Q9dis1MjR8MDt3PXYrNTM2fDA7eD12KzU0OHwwO3I9dis1NjB8MDtzPXYrNTcyfDA7QT12KzU4NHwwO2NbRj4+Ml09MDtjW3QrMD4+Ml09MDtjW3QrND4+Ml09MDtjW3QrOD4+Ml09MDtjW3crMD4+Ml09MDtjW3crND4+Ml09MDtjW3crOD4+Ml09MDtjW3grMD4+Ml09MDtjW3grND4+Ml09MDtjW3grOD4+Ml09MDtjW3IrMD4+Ml09MDtjW3IrND4+Ml09MDtjW3IrOD4+Ml09MDtjW3MrMD4+Ml09MDtjW3MrND4+Ml09MDtjW3MrOD4+Ml09MDtkb3tpZihmKXtpZighKChjWzMyNjBdfDApPT0tMSkpe2NbUT4+Ml09MTMwNDA7Y1tRKzQ+PjJdPTIwODtjW1ErOD4+Ml09MDtjZygxMzA0MCxRKX1DPShjWzEzMDQ0Pj4yXXwwKSsgLTF8MDtJPWNbZys4Pj4yXXwwO2lmKChjW2crMTI+PjJdfDApLUk+PjI+Pj4wPkM+Pj4wPyhEPWNbSSsoQzw8Mik+PjJdfDAsKER8MCkhPTApOjApe21jW2NbKGNbRD4+Ml18MCkrNDQ+PjJdJjEyN10oTyxEKTtjW0Y+PjJdPWNbTz4+Ml07bWNbY1soY1tEPj4yXXwwKSszMj4+Ml0mMTI3XShLLEQpO2lmKChhW3I+PjBdJjEpPT0wKXtjW3IrND4+Ml09MDthW3I+PjBdPTB9ZWxzZXtjW2Nbcis4Pj4yXT4+Ml09MDtjW3IrND4+Ml09MH1vZyhyKTtjW3IrMD4+Ml09Y1tLKzA+PjJdO2Nbcis0Pj4yXT1jW0srND4+Ml07Y1tyKzg+PjJdPWNbSys4Pj4yXTtjW0srMD4+Ml09MDtjW0srND4+Ml09MDtjW0srOD4+Ml09MDttY1tjWyhjW0Q+PjJdfDApKzI4Pj4yXSYxMjddKEcsRCk7aWYoKGFbeD4+MF0mMSk9PTApe2NbeCs0Pj4yXT0wO2FbeD4+MF09MH1lbHNle2NbY1t4Kzg+PjJdPj4yXT0wO2NbeCs0Pj4yXT0wfW9nKHgpO2NbeCswPj4yXT1jW0crMD4+Ml07Y1t4KzQ+PjJdPWNbRys0Pj4yXTtjW3grOD4+Ml09Y1tHKzg+PjJdO2NbRyswPj4yXT0wO2NbRys0Pj4yXT0wO2NbRys4Pj4yXT0wO2c9b2NbY1soY1tEPj4yXXwwKSsxMj4+Ml0mMTI3XShEKXwwO0c9b2NbY1soY1tEPj4yXXwwKSsxNj4+Ml0mMTI3XShEKXwwO21jW2NbKGNbRD4+Ml18MCkrMjA+PjJdJjEyN10oSCxEKTtpZigoYVt0Pj4wXSYxKT09MCl7YVt0KzE+PjBdPTA7YVt0Pj4wXT0wfWVsc2V7YVtjW3QrOD4+Ml0+PjBdPTA7Y1t0KzQ+PjJdPTB9aWcodCk7Y1t0KzA+PjJdPWNbSCswPj4yXTtjW3QrND4+Ml09Y1tIKzQ+PjJdO2NbdCs4Pj4yXT1jW0grOD4+Ml07Y1tIKzA+PjJdPTA7Y1tIKzQ+PjJdPTA7Y1tIKzg+PjJdPTA7bWNbY1soY1tEPj4yXXwwKSsyND4+Ml0mMTI3XShFLEQpO2lmKChhW3c+PjBdJjEpPT0wKXtjW3crND4+Ml09MDthW3c+PjBdPTB9ZWxzZXtjW2Nbdys4Pj4yXT4+Ml09MDtjW3crND4+Ml09MH1vZyh3KTtjW3crMD4+Ml09Y1tFKzA+PjJdO2Nbdys0Pj4yXT1jW0UrND4+Ml07Y1t3Kzg+PjJdPWNbRSs4Pj4yXTtjW0UrMD4+Ml09MDtjW0UrND4+Ml09MDtjW0UrOD4+Ml09MDtmPW9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MDticmVha30kPVhhKDQpfDA7Y1skPj4yXT0yMTMwNDt3YigkfDAsMjEzNzYsMTk2KX1lbHNle2lmKCEoKGNbMzI0NF18MCk9PS0xKSl7Y1tRPj4yXT0xMjk3NjtjW1ErND4+Ml09MjA4O2NbUSs4Pj4yXT0wO2NnKDEyOTc2LFEpfUQ9KGNbMTI5ODA+PjJdfDApKyAtMXwwO0U9Y1tnKzg+PjJdfDA7aWYoKGNbZysxMj4+Ml18MCktRT4+Mj4+PjA+RD4+PjA/KEM9Y1tFKyhEPDwyKT4+Ml18MCwoQ3wwKSE9MCk6MCl7bWNbY1soY1tDPj4yXXwwKSs0ND4+Ml0mMTI3XShOLEMpO2NbRj4+Ml09Y1tOPj4yXTttY1tjWyhjW0M+PjJdfDApKzMyPj4yXSYxMjddKE0sQyk7aWYoKGFbcj4+MF0mMSk9PTApe2Nbcis0Pj4yXT0wO2Fbcj4+MF09MH1lbHNle2NbY1tyKzg+PjJdPj4yXT0wO2Nbcis0Pj4yXT0wfW9nKHIpO2NbciswPj4yXT1jW00rMD4+Ml07Y1tyKzQ+PjJdPWNbTSs0Pj4yXTtjW3IrOD4+Ml09Y1tNKzg+PjJdO2NbTSswPj4yXT0wO2NbTSs0Pj4yXT0wO2NbTSs4Pj4yXT0wO21jW2NbKGNbQz4+Ml18MCkrMjg+PjJdJjEyN10oTCxDKTtpZigoYVt4Pj4wXSYxKT09MCl7Y1t4KzQ+PjJdPTA7YVt4Pj4wXT0wfWVsc2V7Y1tjW3grOD4+Ml0+PjJdPTA7Y1t4KzQ+PjJdPTB9b2coeCk7Y1t4KzA+PjJdPWNbTCswPj4yXTtjW3grND4+Ml09Y1tMKzQ+PjJdO2NbeCs4Pj4yXT1jW0wrOD4+Ml07Y1tMKzA+PjJdPTA7Y1tMKzQ+PjJdPTA7Y1tMKzg+PjJdPTA7Zz1vY1tjWyhjW0M+PjJdfDApKzEyPj4yXSYxMjddKEMpfDA7Rz1vY1tjWyhjW0M+PjJdfDApKzE2Pj4yXSYxMjddKEMpfDA7bWNbY1soY1tDPj4yXXwwKSsyMD4+Ml0mMTI3XShKLEMpO2lmKChhW3Q+PjBdJjEpPT0wKXthW3QrMT4+MF09MDthW3Q+PjBdPTB9ZWxzZXthW2NbdCs4Pj4yXT4+MF09MDtjW3QrND4+Ml09MH1pZyh0KTtjW3QrMD4+Ml09Y1tKKzA+PjJdO2NbdCs0Pj4yXT1jW0orND4+Ml07Y1t0Kzg+PjJdPWNbSis4Pj4yXTtjW0orMD4+Ml09MDtjW0orND4+Ml09MDtjW0orOD4+Ml09MDttY1tjWyhjW0M+PjJdfDApKzI0Pj4yXSYxMjddKEksQyk7aWYoKGFbdz4+MF0mMSk9PTApe2Nbdys0Pj4yXT0wO2Fbdz4+MF09MH1lbHNle2NbY1t3Kzg+PjJdPj4yXT0wO2Nbdys0Pj4yXT0wfW9nKHcpO2NbdyswPj4yXT1jW0krMD4+Ml07Y1t3KzQ+PjJdPWNbSSs0Pj4yXTtjW3crOD4+Ml09Y1tJKzg+PjJdO2NbSSswPj4yXT0wO2NbSSs0Pj4yXT0wO2NbSSs4Pj4yXT0wO2Y9b2NbY1soY1tDPj4yXXwwKSszNj4+Ml0mMTI3XShDKXwwO2JyZWFrfSQ9WGEoNCl8MDtjWyQ+PjJdPTIxMzA0O3diKCR8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtjW24+PjJdPWNbbT4+Ml07ST1yKzR8MDtEPXIrOHwwO0g9eCs0fDA7Qz14Kzh8MDtMPShoJjUxMnwwKSE9MDtKPXcrNHwwO2g9dys4fDA7TT1zKzR8MDtFPXMrOHwwO049RiszfDA7Sz1tKzR8MDtPPXQrNHwwO1M9UCs0MDB8MDtVPVA7VD1QO1E9MDtQPTA7Uj0yMTM7YTp3aGlsZSgxKXtWPWNbYj4+Ml18MDtkb3tpZigoVnwwKSE9MCl7Vz1jW1YrMTI+PjJdfDA7aWYoKFd8MCk9PShjW1YrMTY+PjJdfDApKXtWPW9jW2NbKGNbVj4+Ml18MCkrMzY+PjJdJjEyN10oVil8MH1lbHNle1Y9Y1tXPj4yXXwwfWlmKChWfDApPT0tMSl7Y1tiPj4yXT0wO1Y9MTticmVha31lbHNle1Y9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7Vj0xfX13aGlsZSgwKTtpZigoZXwwKSE9MCl7Vz1jW2UrMTI+PjJdfDA7aWYoKFd8MCk9PShjW2UrMTY+PjJdfDApKXtXPW9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MH1lbHNle1c9Y1tXPj4yXXwwfWlmKCEoKFd8MCk9PS0xKSl7aWYoIVYpe0I9Mzc4O2JyZWFrfX1lbHNle0I9NzV9fWVsc2V7Qj03NX1pZigoQnwwKT09NzUpe0I9MDtpZihWKXtlPTA7Qj0zNzg7YnJlYWt9ZWxzZXtlPTB9fWI6ZG97c3dpdGNoKGFbRitRPj4wXXwwKXtjYXNlIDE6e2lmKChRfDApPT0zKXtCPTM3ODticmVhayBhfUI9Y1tiPj4yXXwwO1Y9Y1tCKzEyPj4yXXwwO2lmKChWfDApPT0oY1tCKzE2Pj4yXXwwKSl7Qj1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtCPWNbVj4+Ml18MH1pZighKGhjW2NbKGNbbD4+Ml18MCkrMTI+PjJdJjYzXShsLDgxOTIsQil8MCkpe0I9OTc7YnJlYWsgYX1XPWNbYj4+Ml18MDtCPVcrMTJ8MDtWPWNbQj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSs0MD4+Ml0mMTI3XShXKXwwfWVsc2V7Y1tCPj4yXT1WKzQ7Vj1jW1Y+PjJdfDB9Vz1hW3M+PjBdfDA7Qj0oVyYxKSE9MDtpZihCKXtYPShjW3M+PjJdJi0yKSsgLTF8MDtXPWNbTT4+Ml18MH1lbHNle1g9MTtXPShXJjI1NSk+Pj4xfWlmKChXfDApPT0oWHwwKSl7cGcocyxYLDEsWCxYLDAsMCk7aWYoKGFbcz4+MF0mMSk9PTApe0I9OTR9ZWxzZXtCPTk1fX1lbHNle2lmKEIpe0I9OTV9ZWxzZXtCPTk0fX1pZigoQnwwKT09OTQpe2Fbcz4+MF09KFc8PDEpKzI7WD1NO1k9VysxfDB9ZWxzZSBpZigoQnwwKT09OTUpe1g9Y1tFPj4yXXwwO1k9VysxfDA7Y1tNPj4yXT1ZfWNbWCsoVzw8Mik+PjJdPVY7Y1tYKyhZPDwyKT4+Ml09MDtCPTk4O2JyZWFrfTtjYXNlIDI6e2lmKCEoKFB8MCkhPTB8UT4+PjA8Mikpe2lmKChRfDApPT0yKXtWPShhW04+PjBdfDApIT0wfWVsc2V7Vj0wfWlmKCEoTHxWKSl7UD0wO2JyZWFrIGJ9fVk9YVt3Pj4wXXwwO1Y9KFkmMSk9PTA/SjpjW2g+PjJdfDA7Yzpkb3tpZigoUXwwKSE9MD8oZFtGKyhRKyAtMSk+PjBdfDApPDI6MCl7d2hpbGUoMSl7aWYoKFkmMSk9PTApe1g9SjtXPShZJjI1NSk+Pj4xfWVsc2V7WD1jW2g+PjJdfDA7Vz1jW0o+PjJdfDB9aWYoKFZ8MCk9PShYKyhXPDwyKXwwKSl7YnJlYWt9aWYoIShoY1tjWyhjW2w+PjJdfDApKzEyPj4yXSY2M10obCw4MTkyLGNbVj4+Ml18MCl8MCkpe0I9MjEyO2JyZWFrfVk9YVt3Pj4wXXwwO1Y9Vis0fDB9aWYoKEJ8MCk9PTIxMil7Qj0wO1k9YVt3Pj4wXXwwfVg9KFkmMSk9PTA/SjpjW2g+PjJdfDA7Vz1WLVg+PjI7Wj1hW3M+PjBdfDA7JD0oWiYxKT09MDtpZigkKXtfPShaJjI1NSk+Pj4xfWVsc2V7Xz1jW00+PjJdfDB9aWYoIShXPj4+MD5fPj4+MCkpe2lmKCQpe189KFomMjU1KT4+PjE7JD1NO1o9XztfPU0rKF8tVzw8Mil8MH1lbHNle2FhPWNbRT4+Ml18MDtfPWNbTT4+Ml18MDskPWFhO1o9XztfPWFhKyhfLVc8PDIpfDB9Vz0kKyhaPDwyKXwwO2lmKChffDApPT0oV3wwKSl7Vz1lO1g9ZX1lbHNle1o9WDt3aGlsZSgxKXtpZigoY1tfPj4yXXwwKSE9KGNbWj4+Ml18MCkpe1c9ZTtWPVg7WD1lO2JyZWFrIGN9Xz1fKzR8MDtpZigoX3wwKT09KFd8MCkpe1c9ZTtYPWU7YnJlYWsgY31aPVorNHwwfX19ZWxzZXtXPWU7Vj1YO1g9ZX19ZWxzZXtXPWU7WD1lfX13aGlsZSgwKTt3aGlsZSgxKXtpZigoWSYxKT09MCl7Wj1KO1k9KFkmMjU1KT4+PjF9ZWxzZXtaPWNbaD4+Ml18MDtZPWNbSj4+Ml18MH1pZigoVnwwKT09KForKFk8PDIpfDApKXticmVha31ZPWNbYj4+Ml18MDtkb3tpZigoWXwwKSE9MCl7Wj1jW1krMTI+PjJdfDA7aWYoKFp8MCk9PShjW1krMTY+PjJdfDApKXtZPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1k9Y1taPj4yXXwwfWlmKChZfDApPT0tMSl7Y1tiPj4yXT0wO1k9MTticmVha31lbHNle1k9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7WT0xfX13aGlsZSgwKTtpZigoWHwwKSE9MCl7Wj1jW1grMTI+PjJdfDA7aWYoKFp8MCk9PShjW1grMTY+PjJdfDApKXtYPW9jW2NbKGNbWD4+Ml18MCkrMzY+PjJdJjEyN10oWCl8MH1lbHNle1g9Y1taPj4yXXwwfWlmKCEoKFh8MCk9PS0xKSl7aWYoWV4oV3wwKT09MCl7WT1XO1g9V31lbHNle2JyZWFrfX1lbHNle1c9MDtlPTA7Qj0yNDB9fWVsc2V7Qj0yNDB9aWYoKEJ8MCk9PTI0MCl7Qj0wO2lmKFkpe2JyZWFrfWVsc2V7WT1XO1g9MH19Wj1jW2I+PjJdfDA7Vz1jW1orMTI+PjJdfDA7aWYoKFd8MCk9PShjW1orMTY+PjJdfDApKXtXPW9jW2NbKGNbWj4+Ml18MCkrMzY+PjJdJjEyN10oWil8MH1lbHNle1c9Y1tXPj4yXXwwfWlmKChXfDApIT0oY1tWPj4yXXwwKSl7YnJlYWt9Xz1jW2I+PjJdfDA7Vz1fKzEyfDA7Wj1jW1c+PjJdfDA7aWYoKFp8MCk9PShjW18rMTY+PjJdfDApKXtvY1tjWyhjW18+PjJdfDApKzQwPj4yXSYxMjddKF8pfDB9ZWxzZXtjW1c+PjJdPVorNH1XPVk7WT1hW3c+PjBdfDA7Vj1WKzR8MH1pZihMKXtYPWFbdz4+MF18MDtpZigoWCYxKT09MCl7Vz1KO1g9KFgmMjU1KT4+PjF9ZWxzZXtXPWNbaD4+Ml18MDtYPWNbSj4+Ml18MH1pZigoVnwwKSE9KFcrKFg8PDIpfDApKXtCPTI1NTticmVhayBhfX1icmVha307Y2FzZSAwOntCPTk4O2JyZWFrfTtjYXNlIDM6e1Y9YVt4Pj4wXXwwO1g9KFYmMSk9PTA7aWYoWCl7Wj0oViYyNTUpPj4+MX1lbHNle1o9Y1tIPj4yXXwwfVc9YVtyPj4wXXwwO1k9KFcmMSk9PTA7aWYoWSl7Xz0oVyYyNTUpPj4+MX1lbHNle189Y1tJPj4yXXwwfWlmKChafDApIT0oMC1ffDApKXtpZihYKXtaPShWJjI1NSk+Pj4xfWVsc2V7Wj1jW0g+PjJdfDB9aWYoKFp8MCkhPTApe2lmKFkpe1k9KFcmMjU1KT4+PjF9ZWxzZXtZPWNbST4+Ml18MH1pZigoWXwwKSE9MCl7WD1jW2I+PjJdfDA7WT1jW1grMTI+PjJdfDA7Wj1jW1grMTY+PjJdfDA7aWYoKFl8MCk9PShafDApKXtXPW9jW2NbKGNbWD4+Ml18MCkrMzY+PjJdJjEyN10oWCl8MDtaPWNbYj4+Ml18MDtWPWFbeD4+MF18MDtYPVo7WT1jW1orMTI+PjJdfDA7Wj1jW1orMTY+PjJdfDB9ZWxzZXtXPWNbWT4+Ml18MH1fPVgrMTJ8MDtaPShZfDApPT0oWnwwKTtpZigoV3wwKT09KGNbKChWJjEpPT0wP0g6Y1tDPj4yXXwwKT4+Ml18MCkpe2lmKFope29jW2NbKGNbWD4+Ml18MCkrNDA+PjJdJjEyN10oWCl8MH1lbHNle2NbXz4+Ml09WSs0fVY9YVt4Pj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0g+PjJdfDB9UD1WPj4+MD4xP3g6UDticmVhayBifWlmKFope1Y9b2NbY1soY1tYPj4yXXwwKSszNj4+Ml0mMTI3XShYKXwwfWVsc2V7Vj1jW1k+PjJdfDB9aWYoKFZ8MCkhPShjWygoYVtyPj4wXSYxKT09MD9JOmNbRD4+Ml18MCk+PjJdfDApKXtCPTE5ODticmVhayBhfVY9Y1tiPj4yXXwwO1c9VisxMnwwO1g9Y1tXPj4yXXwwO2lmKChYfDApPT0oY1tWKzE2Pj4yXXwwKSl7b2NbY1soY1tWPj4yXXwwKSs0MD4+Ml0mMTI3XShWKXwwfWVsc2V7Y1tXPj4yXT1YKzR9YVtrPj4wXT0xO1Y9YVtyPj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0k+PjJdfDB9UD1WPj4+MD4xP3I6UDticmVhayBifX1pZihYKXtYPShWJjI1NSk+Pj4xfWVsc2V7WD1jW0g+PjJdfDB9WT1jW2I+PjJdfDA7Wj1jW1krMTI+PjJdfDA7Xz0oWnwwKT09KGNbWSsxNj4+Ml18MCk7aWYoKFh8MCk9PTApe2lmKF8pe1Y9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwO1c9YVtyPj4wXXwwfWVsc2V7Vj1jW1o+PjJdfDB9aWYoKFZ8MCkhPShjWygoVyYxKT09MD9JOmNbRD4+Ml18MCk+PjJdfDApKXticmVhayBifVg9Y1tiPj4yXXwwO1c9WCsxMnwwO1Y9Y1tXPj4yXXwwO2lmKChWfDApPT0oY1tYKzE2Pj4yXXwwKSl7b2NbY1soY1tYPj4yXXwwKSs0MD4+Ml0mMTI3XShYKXwwfWVsc2V7Y1tXPj4yXT1WKzR9YVtrPj4wXT0xO1Y9YVtyPj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0k+PjJdfDB9UD1WPj4+MD4xP3I6UDticmVhayBifWlmKF8pe1c9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwO1Y9YVt4Pj4wXXwwfWVsc2V7Vz1jW1o+PjJdfDB9aWYoKFd8MCkhPShjWygoViYxKT09MD9IOmNbQz4+Ml18MCk+PjJdfDApKXthW2s+PjBdPTE7YnJlYWsgYn1YPWNbYj4+Ml18MDtXPVgrMTJ8MDtWPWNbVz4+Ml18MDtpZigoVnwwKT09KGNbWCsxNj4+Ml18MCkpe29jW2NbKGNbWD4+Ml18MCkrNDA+PjJdJjEyN10oWCl8MH1lbHNle2NbVz4+Ml09Vis0fVY9YVt4Pj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0g+PjJdfDB9UD1WPj4+MD4xP3g6UH1icmVha307Y2FzZSA0OntWPTA7d2hpbGUoMSl7WD1jW2I+PjJdfDA7ZG97aWYoKFh8MCkhPTApe1c9Y1tYKzEyPj4yXXwwO2lmKChXfDApPT0oY1tYKzE2Pj4yXXwwKSl7Vz1vY1tjWyhjW1g+PjJdfDApKzM2Pj4yXSYxMjddKFgpfDB9ZWxzZXtXPWNbVz4+Ml18MH1pZigoV3wwKT09LTEpe2NbYj4+Ml09MDtXPTE7YnJlYWt9ZWxzZXtXPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle1c9MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe1g9Y1tlKzEyPj4yXXwwO2lmKChYfDApPT0oY1tlKzE2Pj4yXXwwKSl7WD1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtYPWNbWD4+Ml18MH1pZighKChYfDApPT0tMSkpe2lmKCFXKXticmVha319ZWxzZXtCPTI2OH19ZWxzZXtCPTI2OH1pZigoQnwwKT09MjY4KXtCPTA7aWYoVyl7ZT0wO2JyZWFrfWVsc2V7ZT0wfX1YPWNbYj4+Ml18MDtXPWNbWCsxMj4+Ml18MDtpZigoV3wwKT09KGNbWCsxNj4+Ml18MCkpe1c9b2NbY1soY1tYPj4yXXwwKSszNj4+Ml0mMTI3XShYKXwwfWVsc2V7Vz1jW1c+PjJdfDB9aWYoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsMjA0OCxXKXwwKXtYPWNbbj4+Ml18MDtpZigoWHwwKT09KG98MCkpe1k9KGNbSz4+Ml18MCkhPTIxMztaPWNbbT4+Ml18MDtvPW8tWnwwO1g9bz4+PjA8MjE0NzQ4MzY0Nz9vPDwxOi0xO289bz4+MjtpZighWSl7Wj0wfVo9d24oWixYKXwwO2lmKChafDApPT0wKXtCPTI3OTticmVhayBhfWlmKCFZKXtZPWNbbT4+Ml18MDtjW20+PjJdPVo7aWYoKFl8MCkhPTApe2xjW2NbSz4+Ml0mMjU1XShZKTtaPWNbbT4+Ml18MH19ZWxzZXtjW20+PjJdPVp9Y1tLPj4yXT0yMTQ7YWE9Wisobzw8Mil8MDtjW24+PjJdPWFhO289KGNbbT4+Ml18MCkrKFg+Pj4yPDwyKXwwO1g9YWF9Y1tuPj4yXT1YKzQ7Y1tYPj4yXT1XO1Y9VisxfDB9ZWxzZXtYPWFbdD4+MF18MDtpZigoWCYxKT09MCl7WD0oWCYyNTUpPj4+MX1lbHNle1g9Y1tPPj4yXXwwfWlmKCEoKCgoWHwwKT09MHwoVnwwKT09MCleMSkmKFd8MCk9PShHfDApKSl7YnJlYWt9aWYoKFV8MCk9PShTfDApKXtVPVUtVHwwO1M9VT4+PjA8MjE0NzQ4MzY0Nz9VPDwxOi0xO2lmKChSfDApPT0yMTMpe1Q9MH1SPXduKFQsUyl8MDtpZigoUnwwKT09MCl7Qj0yOTY7YnJlYWsgYX1UPVI7Uz1SKyhTPj4+Mjw8Mil8MDtVPVIrKFU+PjI8PDIpfDA7Uj0yMTR9Y1tVPj4yXT1WO1U9VSs0fDA7Vj0wfVc9Y1tiPj4yXXwwO1g9VysxMnwwO1k9Y1tYPj4yXXwwO2lmKChZfDApPT0oY1tXKzE2Pj4yXXwwKSl7b2NbY1soY1tXPj4yXXwwKSs0MD4+Ml0mMTI3XShXKXwwO2NvbnRpbnVlfWVsc2V7Y1tYPj4yXT1ZKzQ7Y29udGludWV9fWlmKCEoKFR8MCk9PShVfDApfChWfDApPT0wKSl7aWYoKFV8MCk9PShTfDApKXtVPVUtVHwwO1M9VT4+PjA8MjE0NzQ4MzY0Nz9VPDwxOi0xO2lmKChSfDApPT0yMTMpe1Q9MH1SPXduKFQsUyl8MDtpZigoUnwwKT09MCl7Qj0zMDg7YnJlYWsgYX1UPVI7Uz1SKyhTPj4+Mjw8Mil8MDtVPVIrKFU+PjI8PDIpfDA7Uj0yMTR9Y1tVPj4yXT1WO1U9VSs0fDB9aWYoKGZ8MCk+MCl7Vz1jW2I+PjJdfDA7ZG97aWYoKFd8MCkhPTApe1Y9Y1tXKzEyPj4yXXwwO2lmKChWfDApPT0oY1tXKzE2Pj4yXXwwKSl7Vj1vY1tjWyhjW1c+PjJdfDApKzM2Pj4yXSYxMjddKFcpfDB9ZWxzZXtWPWNbVj4+Ml18MH1pZigoVnwwKT09LTEpe2NbYj4+Ml09MDtWPTE7YnJlYWt9ZWxzZXtWPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle1Y9MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe1c9Y1tlKzEyPj4yXXwwO2lmKChXfDApPT0oY1tlKzE2Pj4yXXwwKSl7Vz1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtXPWNbVz4+Ml18MH1pZighKChXfDApPT0tMSkpe2lmKCFWKXtCPTMzMTticmVhayBhfX1lbHNle0I9MzI1fX1lbHNle0I9MzI1fWlmKChCfDApPT0zMjUpe0I9MDtpZihWKXtCPTMzMTticmVhayBhfWVsc2V7ZT0wfX1XPWNbYj4+Ml18MDtWPWNbVysxMj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoKFZ8MCkhPShnfDApKXtCPTMzMTticmVhayBhfVY9Y1tiPj4yXXwwO1c9VisxMnwwO1g9Y1tXPj4yXXwwO2lmKChYfDApPT0oY1tWKzE2Pj4yXXwwKSl7b2NbY1soY1tWPj4yXXwwKSs0MD4+Ml0mMTI3XShWKXwwO1g9ZTtXPWV9ZWxzZXtjW1c+PjJdPVgrNDtYPWU7Vz1lfXdoaWxlKDEpe1k9Y1tiPj4yXXwwO2Rve2lmKChZfDApIT0wKXtWPWNbWSsxMj4+Ml18MDtpZigoVnwwKT09KGNbWSsxNj4+Ml18MCkpe1Y9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoKFZ8MCk9PS0xKXtjW2I+PjJdPTA7WT0xO2JyZWFrfWVsc2V7WT0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtZPTF9fXdoaWxlKDApO2lmKChXfDApIT0wKXtWPWNbVysxMj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoISgoVnwwKT09LTEpKXtpZihZXihYfDApPT0wKXtWPVg7Vz1YfWVsc2V7Qj0zNTQ7YnJlYWsgYX19ZWxzZXtWPTA7ZT0wO0I9MzQ3fX1lbHNle1Y9WDtCPTM0N31pZigoQnwwKT09MzQ3KXtCPTA7aWYoWSl7Qj0zNTQ7YnJlYWsgYX1lbHNle1c9MH19WT1jW2I+PjJdfDA7WD1jW1krMTI+PjJdfDA7aWYoKFh8MCk9PShjW1krMTY+PjJdfDApKXtYPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1g9Y1tYPj4yXXwwfWlmKCEoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsMjA0OCxYKXwwKSl7Qj0zNTQ7YnJlYWsgYX1YPWNbbj4+Ml18MDtpZigoWHwwKT09KG98MCkpe1k9KGNbSz4+Ml18MCkhPTIxMztaPWNbbT4+Ml18MDtYPW8tWnwwO289WD4+PjA8MjE0NzQ4MzY0Nz9YPDwxOi0xO1g9WD4+MjtpZighWSl7Wj0wfVo9d24oWixvKXwwO2lmKChafDApPT0wKXtCPTM1OTticmVhayBhfWRve2lmKFkpe2NbbT4+Ml09Wn1lbHNle1k9Y1ttPj4yXXwwO2NbbT4+Ml09WjtpZigoWXwwKT09MCl7YnJlYWt9bGNbY1tLPj4yXSYyNTVdKFkpO1o9Y1ttPj4yXXwwfX13aGlsZSgwKTtjW0s+PjJdPTIxNDtYPVorKFg8PDIpfDA7Y1tuPj4yXT1YO289KGNbbT4+Ml18MCkrKG8+Pj4yPDwyKXwwfVk9Y1tiPj4yXXwwO1o9Y1tZKzEyPj4yXXwwO2lmKChafDApPT0oY1tZKzE2Pj4yXXwwKSl7WT1vY1tjWyhjW1k+PjJdfDApKzM2Pj4yXSYxMjddKFkpfDA7WD1jW24+PjJdfDB9ZWxzZXtZPWNbWj4+Ml18MH1jW24+PjJdPVgrNDtjW1g+PjJdPVk7Zj1mKyAtMXwwO1g9Y1tiPj4yXXwwO1k9WCsxMnwwO1o9Y1tZPj4yXXwwO2lmKChafDApPT0oY1tYKzE2Pj4yXXwwKSl7b2NbY1soY1tYPj4yXXwwKSs0MD4+Ml0mMTI3XShYKXwwfWVsc2V7Y1tZPj4yXT1aKzR9aWYoKGZ8MCk+MCl7WD1WfWVsc2V7YnJlYWt9fX1pZigoY1tuPj4yXXwwKT09KGNbbT4+Ml18MCkpe0I9Mzc2O2JyZWFrIGF9YnJlYWt9O2RlZmF1bHQ6e319fXdoaWxlKDApO2Q6ZG97aWYoKEJ8MCk9PTk4KXtCPTA7aWYoKFF8MCk9PTMpe0I9Mzc4O2JyZWFrIGF9ZWxzZXtYPWU7Vj1lfXdoaWxlKDEpe1c9Y1tiPj4yXXwwO2Rve2lmKChXfDApIT0wKXtZPWNbVysxMj4+Ml18MDtpZigoWXwwKT09KGNbVysxNj4+Ml18MCkpe1c9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vz1jW1k+PjJdfDB9aWYoKFd8MCk9PS0xKXtjW2I+PjJdPTA7WT0xO2JyZWFrfWVsc2V7WT0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtZPTF9fXdoaWxlKDApO2lmKChWfDApIT0wKXtXPWNbVisxMj4+Ml18MDtpZigoV3wwKT09KGNbVisxNj4+Ml18MCkpe1Y9b2NbY1soY1tWPj4yXXwwKSszNj4+Ml0mMTI3XShWKXwwfWVsc2V7Vj1jW1c+PjJdfDB9aWYoISgoVnwwKT09LTEpKXtpZihZXihYfDApPT0wKXtXPVg7Vj1YfWVsc2V7YnJlYWsgZH19ZWxzZXtXPTA7ZT0wO0I9MTExfX1lbHNle1c9WDtCPTExMX1pZigoQnwwKT09MTExKXtCPTA7aWYoWSl7YnJlYWsgZH1lbHNle1Y9MH19WT1jW2I+PjJdfDA7WD1jW1krMTI+PjJdfDA7aWYoKFh8MCk9PShjW1krMTY+PjJdfDApKXtYPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1g9Y1tYPj4yXXwwfWlmKCEoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsODE5MixYKXwwKSl7YnJlYWsgZH1CPWNbYj4+Ml18MDtYPUIrMTJ8MDtZPWNbWD4+Ml18MDtpZigoWXwwKT09KGNbQisxNj4+Ml18MCkpe1g9b2NbY1soY1tCPj4yXXwwKSs0MD4+Ml0mMTI3XShCKXwwfWVsc2V7Y1tYPj4yXT1ZKzQ7WD1jW1k+PjJdfDB9WT1hW3M+PjBdfDA7Wj0oWSYxKSE9MDtpZihaKXtCPShjW3M+PjJdJi0yKSsgLTF8MDtZPWNbTT4+Ml18MH1lbHNle0I9MTtZPShZJjI1NSk+Pj4xfWlmKChZfDApPT0oQnwwKSl7cGcocyxCLDEsQixCLDAsMCk7aWYoKGFbcz4+MF0mMSk9PTApe0I9MTI4fWVsc2V7Qj0xMjl9fWVsc2V7aWYoWil7Qj0xMjl9ZWxzZXtCPTEyOH19aWYoKEJ8MCk9PTEyOCl7Qj0wO2Fbcz4+MF09KFk8PDEpKzI7Wj1NO189WSsxfDB9ZWxzZSBpZigoQnwwKT09MTI5KXtCPTA7Wj1jW0U+PjJdfDA7Xz1ZKzF8MDtjW00+PjJdPV99Y1taKyhZPDwyKT4+Ml09WDtjW1orKF88PDIpPj4yXT0wO1g9V319fXdoaWxlKDApO1E9USsxfDA7aWYoIShRPj4+MDw0KSl7Qj0zNzg7YnJlYWt9fWU6c3dpdGNoKEJ8MCl7Y2FzZSA5Nzp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDE5ODp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDI1NTp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDI3OTp7YWE9WGEoNCl8MDtjW2FhPj4yXT0yMjY4MDt3YihhYXwwLDIyNzI4LDIwNil9O2Nhc2UgMjk2OnthYT1YYSg0KXwwO2NbYWE+PjJdPTIyNjgwO3diKGFhfDAsMjI3MjgsMjA2KX07Y2FzZSAzMDg6e2FhPVhhKDQpfDA7Y1thYT4+Ml09MjI2ODA7d2IoYWF8MCwyMjcyOCwyMDYpfTtjYXNlIDMzMTp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDM1NDp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDM1OTp7YWE9WGEoNCl8MDtjW2FhPj4yXT0yMjY4MDt3YihhYXwwLDIyNzI4LDIwNil9O2Nhc2UgMzc2OntjW2o+PjJdPWNbaj4+Ml18NDtiPTA7YnJlYWt9O2Nhc2UgMzc4OntmOmRve2lmKChQfDApIT0wKXtsPVArNHwwO0Y9UCs4fDA7az0xO3doaWxlKDEpe209YVtQPj4wXXwwO2lmKChtJjEpPT0wKXttPShtJjI1NSk+Pj4xfWVsc2V7bT1jW2w+PjJdfDB9aWYoIShrPj4+MDxtPj4+MCkpe2JyZWFrIGZ9bj1jW2I+PjJdfDA7ZG97aWYoKG58MCkhPTApe209Y1tuKzEyPj4yXXwwO2lmKChtfDApPT0oY1tuKzE2Pj4yXXwwKSl7bT1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXttPWNbbT4+Ml18MH1pZigobXwwKT09LTEpe2NbYj4+Ml09MDttPTE7YnJlYWt9ZWxzZXttPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle209MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe249Y1tlKzEyPj4yXXwwO2lmKChufDApPT0oY1tlKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZighKChufDApPT0tMSkpe2lmKCFtKXticmVha319ZWxzZXtCPTM5Nn19ZWxzZXtCPTM5Nn1pZigoQnwwKT09Mzk2KXtCPTA7aWYobSl7YnJlYWt9ZWxzZXtlPTB9fW09Y1tiPj4yXXwwO249Y1ttKzEyPj4yXXwwO2lmKChufDApPT0oY1ttKzE2Pj4yXXwwKSl7bT1vY1tjWyhjW20+PjJdfDApKzM2Pj4yXSYxMjddKG0pfDB9ZWxzZXttPWNbbj4+Ml18MH1pZigoYVtQPj4wXSYxKT09MCl7bj1sfWVsc2V7bj1jW0Y+PjJdfDB9aWYoKG18MCkhPShjW24rKGs8PDIpPj4yXXwwKSl7YnJlYWt9az1rKzF8MDtnPWNbYj4+Ml18MDtuPWcrMTJ8MDttPWNbbj4+Ml18MDtpZigobXwwKT09KGNbZysxNj4+Ml18MCkpe29jW2NbKGNbZz4+Ml18MCkrNDA+PjJdJjEyN10oZyl8MDtjb250aW51ZX1lbHNle2Nbbj4+Ml09bSs0O2NvbnRpbnVlfX1jW2o+PjJdPWNbaj4+Ml18NDtiPTA7YnJlYWsgZX19d2hpbGUoMCk7aWYoKFR8MCkhPShVfDApKXtjW0E+PjJdPTA7cWsodCxULFUsQSk7aWYoKGNbQT4+Ml18MCk9PTApe2I9MX1lbHNle2Nbaj4+Ml09Y1tqPj4yXXw0O2I9MH19ZWxzZXtiPTE7VD1VfWJyZWFrfX1pZighKChhW3M+PjBdJjEpPT0wKT8oej1jW0U+PjJdfDAsKHp8MCkhPTApOjApe3ZuKHopfWlmKCEoKGFbcj4+MF0mMSk9PTApPyh5PWNbRD4+Ml18MCwoeXwwKSE9MCk6MCl7dm4oeSl9aWYoISgoYVt4Pj4wXSYxKT09MCk/KHU9Y1tDPj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhW3c+PjBdJjEpPT0wKT8ocT1jW2g+PjJdfDAsKHF8MCkhPTApOjApe3ZuKHEpfWlmKCEoKGFbdD4+MF0mMSk9PTApPyhwPWNbdCs4Pj4yXXwwLChwfDApIT0wKTowKXt2bihwKX1pZigoVHwwKT09MCl7aT12O3JldHVybiBifDB9bGNbUiYyNTVdKFQpO2k9djtyZXR1cm4gYnwwfWZ1bmN0aW9uIHZrKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7bT1pO2k9aSs0MzJ8MDtwPW07cz1tKzI0fDA7ZD1tKzE2fDA7cT1tKzEyfDA7dD1tKzQyNHwwO2NbZD4+Ml09cztsPWQrNHwwO2NbbD4+Ml09MjEzO3M9cys0MDB8MDtuPWNbaCsyOD4+Ml18MDt2PW4rNHwwO2Nbdj4+Ml09KGNbdj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbcD4+Ml09MTM0NDg7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ0OCxwKX1wPShjWzEzNDUyPj4yXXwwKSsgLTF8MDt1PWNbbis4Pj4yXXwwO2lmKChjW24rMTI+PjJdfDApLXU+PjI+Pj4wPnA+Pj4wPyhyPWNbdSsocDw8Mik+PjJdfDAsKHJ8MCkhPTApOjApe2FbdD4+MF09MDtwPWNbZj4+Ml18MDtkb3tpZih1ayhlLHAsZyxuLGNbaCs0Pj4yXXwwLGosdCxyLGQscSxzKXwwKXtpZigoYVtrPj4wXSYxKT09MCl7Y1trKzQ+PjJdPTA7YVtrPj4wXT0wfWVsc2V7Y1tjW2srOD4+Ml0+PjJdPTA7Y1trKzQ+PjJdPTB9aWYoKGFbdD4+MF18MCkhPTApe2c9eGNbY1soY1tyPj4yXXwwKSs0ND4+Ml0mNjNdKHIsNDUpfDA7aD1hW2s+PjBdfDA7bz0oaCYxKSE9MDtpZihvKXtzPShjW2s+PjJdJi0yKSsgLTF8MDtoPWNbays0Pj4yXXwwfWVsc2V7cz0xO2g9KGgmMjU1KT4+PjF9aWYoKGh8MCk9PShzfDApKXtwZyhrLHMsMSxzLHMsMCwwKTtpZigoYVtrPj4wXSYxKT09MCl7bz0yMX1lbHNle289MjJ9fWVsc2V7aWYobyl7bz0yMn1lbHNle289MjF9fWlmKChvfDApPT0yMSl7YVtrPj4wXT0oaDw8MSkrMjt0PWsrNHwwO3M9aCsxfDB9ZWxzZSBpZigob3wwKT09MjIpe3Q9Y1trKzg+PjJdfDA7cz1oKzF8MDtjW2srND4+Ml09c31jW3QrKGg8PDIpPj4yXT1nO2NbdCsoczw8Mik+PjJdPTB9cj14Y1tjWyhjW3I+PjJdfDApKzQ0Pj4yXSY2M10ociw0OCl8MDtzPWNbZD4+Ml18MDtxPWNbcT4+Ml18MDtoPXErIC00fDA7YTpkb3tpZihzPj4+MDxoPj4+MCl7d2hpbGUoMSl7Zz1zKzR8MDtpZigoY1tzPj4yXXwwKSE9KHJ8MCkpe2JyZWFrIGF9aWYoZz4+PjA8aD4+PjApe3M9Z31lbHNle3M9ZzticmVha319fX13aGlsZSgwKTt0PXM7cj1hW2s+PjBdfDA7aWYoKHImMSk9PTApe3Y9cjt1PTE7Zz0ociYyNTUpPj4+MX1lbHNle3U9Y1trPj4yXXwwO3Y9dSYyNTU7dT0odSYtMikrIC0xfDA7Zz1jW2srND4+Ml18MH1yPXEtdD4+MjtpZigocnwwKSE9MCl7aWYoKHUtZ3wwKT4+PjA8cj4+PjApe3BnKGssdSxnK3ItdXwwLGcsZywwLDApO3Y9YVtrPj4wXXwwfWlmKCh2JjEpPT0wKXt1PWsrNHwwfWVsc2V7dT1jW2srOD4+Ml18MH12PXUrKGc8PDIpfDA7aWYoKHN8MCkhPShxfDApKXtoPWcrKChoKygwLXQpfDApPj4+MikrMXwwO3doaWxlKDEpe2Nbdj4+Ml09Y1tzPj4yXTtzPXMrNHwwO2lmKChzfDApPT0ocXwwKSl7YnJlYWt9dj12KzR8MH12PXUrKGg8PDIpfDB9Y1t2Pj4yXT0wO3E9ZytyfDA7aWYoKGFbaz4+MF0mMSk9PTApe2Fbaz4+MF09cTw8MTticmVha31lbHNle2Nbays0Pj4yXT1xO2JyZWFrfX19fXdoaWxlKDApO2s9Y1tlPj4yXXwwO2lmKChrfDApIT0wKXtxPWNbaysxMj4+Ml18MDtpZigocXwwKT09KGNbaysxNj4+Ml18MCkpe3E9b2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwfWVsc2V7cT1jW3E+PjJdfDB9aWYoKHF8MCk9PS0xKXtjW2U+PjJdPTA7az0wO2U9MX1lbHNle2U9MH19ZWxzZXtrPTA7ZT0xfWRve2lmKChwfDApIT0wKXtxPWNbcCsxMj4+Ml18MDtpZigocXwwKT09KGNbcCsxNj4+Ml18MCkpe3A9b2NbY1soY1twPj4yXXwwKSszNj4+Ml0mMTI3XShwKXwwfWVsc2V7cD1jW3E+PjJdfDB9aWYoISgocHwwKT09LTEpKXtpZihlKXticmVha31lbHNle289NjA7YnJlYWt9fWVsc2V7Y1tmPj4yXT0wO289NTg7YnJlYWt9fWVsc2V7bz01OH19d2hpbGUoMCk7aWYoKG98MCk9PTU4P2U6MCl7bz02MH1pZigob3wwKT09NjApe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09azt1PW4rNHwwO3Y9Y1t1Pj4yXXwwO2NbdT4+Ml09disgLTE7aWYoKHZ8MCk9PTApe2xjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKX1qPWNbZD4+Ml18MDtjW2Q+PjJdPTA7aWYoKGp8MCk9PTApe2k9bTtyZXR1cm59bGNbY1tsPj4yXSYyNTVdKGopO2k9bTtyZXR1cm59dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gd2soYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGsoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHlrKGIsZCxlLGYsZyxqLGwpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2w9K2w7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtxPWk7aT1pKzM2OHwwO0E9cTtDPXErMTU2fDA7RT1xKzEzMnwwO0I9cSsyNTZ8MDt0PXErMTQ4fDA7cz1xKzM1NnwwO3I9cSszNTd8MDt4PXErMTM2fDA7ZD1xKzEwNHwwO3c9cSsxMTZ8MDtGPXErMTAwfDA7dj1xKzEyOHwwO3U9cSsxNTJ8MDtjW0U+PjJdPUM7aFtrPj4zXT1sO2NbQT4+Ml09Y1trPj4yXTtjW0ErND4+Ml09Y1trKzQ+PjJdO0M9bGIoQ3wwLDEwMCwxMzIyNCxBfDApfDA7aWYoQz4+PjA+OTkpe2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1DPWNbMzM0MF18MDtoW2s+PjNdPWw7Y1tBPj4yXT1jW2s+PjJdO2NbQSs0Pj4yXT1jW2srND4+Ml07Qz1DaShFLEMsMTMyMjQsQSl8MDt6PWNbRT4+Ml18MDtpZigoenwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9Qj11bihDKXwwO2lmKChCfDApPT0wKXtIPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1lbHNle3k9Qn19ZWxzZXt5PTA7ej0wfUQ9Y1tnKzI4Pj4yXXwwO0g9RCs0fDA7Y1tIPj4yXT0oY1tIPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tBPj4yXT0xMzQ1NjtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEzNDU2LEEpfUc9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0g9Y1tEKzg+PjJdfDA7aWYoKGNbRCsxMj4+Ml18MCktSD4+Mj4+PjA+Rz4+PjA/KHA9Y1tIKyhHPDwyKT4+Ml18MCwocHwwKSE9MCk6MCl7SD1jW0U+PjJdfDA7dWNbY1soY1twPj4yXXwwKSszMj4+Ml0mMzFdKHAsSCxIK0N8MCxCKXwwO2lmKChDfDApPT0wKXtFPTB9ZWxzZXtFPShhW2NbRT4+Ml0+PjBdfDApPT00NX1jW3Q+PjJdPTA7Y1t4KzA+PjJdPTA7Y1t4KzQ+PjJdPTA7Y1t4Kzg+PjJdPTA7Y1tkKzA+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tkKzg+PjJdPTA7Y1t3KzA+PjJdPTA7Y1t3KzQ+PjJdPTA7Y1t3Kzg+PjJdPTA7emsoZixFLEQsdCxzLHIseCxkLHcsRik7Zj1jW0Y+PjJdfDA7aWYoKEN8MCk+KGZ8MCkpe0Y9YVt3Pj4wXXwwO2lmKChGJjEpPT0wKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW3crND4+Ml18MH1HPWFbZD4+MF18MDtpZigoRyYxKT09MCl7Rz0oRyYyNTUpPj4+MX1lbHNle0c9Y1tkKzQ+PjJdfDB9Rj1GKyhDLWY8PDF8MSkrR3wwfWVsc2V7Rj1hW3c+PjBdfDA7aWYoKEYmMSk9PTApe0Y9KEYmMjU1KT4+PjF9ZWxzZXtGPWNbdys0Pj4yXXwwfUc9YVtkPj4wXXwwO2lmKChHJjEpPT0wKXtHPShHJjI1NSk+Pj4xfWVsc2V7Rz1jW2QrND4+Ml18MH1GPUYrMitHfDB9Rj1GK2Z8MDtpZihGPj4+MD4xMDApe0E9dW4oRil8MDtpZigoQXwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9ZWxzZXtGPUF9fWVsc2V7Rj0wfUFrKEEsdix1LGNbZys0Pj4yXXwwLEIsQitDfDAscCxFLHQsYVtzPj4wXXwwLGFbcj4+MF18MCx4LGQsdyxmKTtXYyhiLGNbZT4+Ml18MCxBLGNbdj4+Ml18MCxjW3U+PjJdfDAsZyxqKTtpZigoRnwwKSE9MCl7dm4oRil9aWYoISgoYVt3Pj4wXSYxKT09MCk/KG49Y1t3Kzg+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbZD4+MF0mMSk9PTApPyhvPWNbZCs4Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhW3g+PjBdJjEpPT0wKT8obT1jW3grOD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9Rz1EKzR8MDtIPWNbRz4+Ml18MDtjW0c+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0Q+PjJdfDApKzg+PjJdJjI1NV0oRCl9aWYoKHl8MCkhPTApe3ZuKHkpfWlmKCh6fDApPT0wKXtpPXE7cmV0dXJufXZuKHopO2k9cTtyZXR1cm59SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gemsoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7bj1pO2k9aSsxMjh8MDtBPW47eD1uKzEyfDA7bz1uKzQwfDA7dj1uKzUyfDA7dz1uKzU2fDA7dT1uKzE2fDA7ej1uKzI4fDA7cj1uKzY4fDA7cT1uKzcyfDA7dD1uKzg0fDA7cz1uKzg4fDA7cD1uKzEwMHwwO3k9bisxMTJ8MDtpZihiKXtpZighKChjWzMyMjhdfDApPT0tMSkpe2NbQT4+Ml09MTI5MTI7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMjkxMixBKX1xPShjWzEyOTE2Pj4yXXwwKSsgLTF8MDtwPWNbZSs4Pj4yXXwwO2lmKCEoKGNbZSsxMj4+Ml18MCktcD4+Mj4+PjA+cT4+PjApKXtiPVhhKDQpfDA7Y1tiPj4yXT0yMTMwNDt3YihifDAsMjEzNzYsMTk2KX1wPWNbcCsocTw8Mik+PjJdfDA7aWYoKHB8MCk9PTApe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfXE9Y1twPj4yXXwwO2lmKGQpe21jW2NbcSs0ND4+Ml0mMTI3XSh4LHApO2I9Y1t4Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbcD4+Ml18MCkrMzI+PjJdJjEyN10obyxwKTtpZigoYVtsPj4wXSYxKT09MCl7YVtsKzE+PjBdPTA7YVtsPj4wXT0wfWVsc2V7YVtjW2wrOD4+Ml0+PjBdPTA7Y1tsKzQ+PjJdPTB9aWcobCk7Y1tsKzA+PjJdPWNbbyswPj4yXTtjW2wrND4+Ml09Y1tvKzQ+PjJdO2NbbCs4Pj4yXT1jW28rOD4+Ml07Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTB9ZWxzZXttY1tjW3ErNDA+PjJdJjEyN10odixwKTtiPWNbdj4+Ml18MDthW2Y+PjBdPWI7YVtmKzE+PjBdPWI+Pjg7YVtmKzI+PjBdPWI+PjE2O2FbZiszPj4wXT1iPj4yNDttY1tjWyhjW3A+PjJdfDApKzI4Pj4yXSYxMjddKHcscCk7aWYoKGFbbD4+MF0mMSk9PTApe2FbbCsxPj4wXT0wO2FbbD4+MF09MH1lbHNle2FbY1tsKzg+PjJdPj4wXT0wO2NbbCs0Pj4yXT0wfWlnKGwpO2NbbCswPj4yXT1jW3crMD4+Ml07Y1tsKzQ+PjJdPWNbdys0Pj4yXTtjW2wrOD4+Ml09Y1t3Kzg+PjJdO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wfWFbZz4+MF09b2NbY1soY1twPj4yXXwwKSsxMj4+Ml0mMTI3XShwKXwwO2FbaD4+MF09b2NbY1soY1twPj4yXXwwKSsxNj4+Ml0mMTI3XShwKXwwO21jW2NbKGNbcD4+Ml18MCkrMjA+PjJdJjEyN10odSxwKTtpZigoYVtqPj4wXSYxKT09MCl7YVtqKzE+PjBdPTA7YVtqPj4wXT0wfWVsc2V7YVtjW2orOD4+Ml0+PjBdPTA7Y1tqKzQ+PjJdPTB9aWcoaik7Y1tqKzA+PjJdPWNbdSswPj4yXTtjW2orND4+Ml09Y1t1KzQ+PjJdO2Nbais4Pj4yXT1jW3UrOD4+Ml07Y1t1KzA+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7bWNbY1soY1twPj4yXXwwKSsyND4+Ml0mMTI3XSh6LHApO2lmKChhW2s+PjBdJjEpPT0wKXthW2srMT4+MF09MDthW2s+PjBdPTB9ZWxzZXthW2Nbays4Pj4yXT4+MF09MDtjW2srND4+Ml09MH1pZyhrKTtjW2srMD4+Ml09Y1t6KzA+PjJdO2Nbays0Pj4yXT1jW3orND4+Ml07Y1trKzg+PjJdPWNbeis4Pj4yXTtjW3orMD4+Ml09MDtjW3orND4+Ml09MDtjW3orOD4+Ml09MDtiPW9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MDtjW20+PjJdPWI7aT1uO3JldHVybn1lbHNle2lmKCEoKGNbMzIxMl18MCk9PS0xKSl7Y1tBPj4yXT0xMjg0ODtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEyODQ4LEEpfXU9KGNbMTI4NTI+PjJdfDApKyAtMXwwO289Y1tlKzg+PjJdfDA7aWYoISgoY1tlKzEyPj4yXXwwKS1vPj4yPj4+MD51Pj4+MCkpe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfW89Y1tvKyh1PDwyKT4+Ml18MDtpZigob3wwKT09MCl7Yj1YYSg0KXwwO2NbYj4+Ml09MjEzMDQ7d2IoYnwwLDIxMzc2LDE5Nil9ZT1jW28+PjJdfDA7aWYoZCl7bWNbY1tlKzQ0Pj4yXSYxMjddKHIsbyk7Yj1jW3I+PjJdfDA7YVtmPj4wXT1iO2FbZisxPj4wXT1iPj44O2FbZisyPj4wXT1iPj4xNjthW2YrMz4+MF09Yj4+MjQ7bWNbY1soY1tvPj4yXXwwKSszMj4+Ml0mMTI3XShxLG8pO2lmKChhW2w+PjBdJjEpPT0wKXthW2wrMT4+MF09MDthW2w+PjBdPTB9ZWxzZXthW2NbbCs4Pj4yXT4+MF09MDtjW2wrND4+Ml09MH1pZyhsKTtjW2wrMD4+Ml09Y1txKzA+PjJdO2NbbCs0Pj4yXT1jW3ErND4+Ml07Y1tsKzg+PjJdPWNbcSs4Pj4yXTtjW3ErMD4+Ml09MDtjW3ErND4+Ml09MDtjW3ErOD4+Ml09MH1lbHNle21jW2NbZSs0MD4+Ml0mMTI3XSh0LG8pO2I9Y1t0Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbbz4+Ml18MCkrMjg+PjJdJjEyN10ocyxvKTtpZigoYVtsPj4wXSYxKT09MCl7YVtsKzE+PjBdPTA7YVtsPj4wXT0wfWVsc2V7YVtjW2wrOD4+Ml0+PjBdPTA7Y1tsKzQ+PjJdPTB9aWcobCk7Y1tsKzA+PjJdPWNbcyswPj4yXTtjW2wrND4+Ml09Y1tzKzQ+PjJdO2NbbCs4Pj4yXT1jW3MrOD4+Ml07Y1tzKzA+PjJdPTA7Y1tzKzQ+PjJdPTA7Y1tzKzg+PjJdPTB9YVtnPj4wXT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7YVtoPj4wXT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7bWNbY1soY1tvPj4yXXwwKSsyMD4+Ml0mMTI3XShwLG8pO2lmKChhW2o+PjBdJjEpPT0wKXthW2orMT4+MF09MDthW2o+PjBdPTB9ZWxzZXthW2Nbais4Pj4yXT4+MF09MDtjW2orND4+Ml09MH1pZyhqKTtjW2orMD4+Ml09Y1twKzA+PjJdO2Nbais0Pj4yXT1jW3ArND4+Ml07Y1tqKzg+PjJdPWNbcCs4Pj4yXTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDttY1tjWyhjW28+PjJdfDApKzI0Pj4yXSYxMjddKHksbyk7aWYoKGFbaz4+MF0mMSk9PTApe2FbaysxPj4wXT0wO2Fbaz4+MF09MH1lbHNle2FbY1trKzg+PjJdPj4wXT0wO2Nbays0Pj4yXT0wfWlnKGspO2NbayswPj4yXT1jW3krMD4+Ml07Y1trKzQ+PjJdPWNbeSs0Pj4yXTtjW2srOD4+Ml09Y1t5Kzg+PjJdO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2I9b2NbY1soY1tvPj4yXXwwKSszNj4+Ml0mMTI3XShvKXwwO2NbbT4+Ml09YjtpPW47cmV0dXJufX1mdW5jdGlvbiBBayhkLGUsZixnLGgsaixrLGwsbSxuLG8scCxxLHIscyl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7cT1xfDA7cj1yfDA7cz1zfDA7dmFyIHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MDt0PWk7Y1tmPj4yXT1kO3Y9cisxfDA7dz1yKzh8MDt1PXIrNHwwO3g9KGcmNTEyfDApPT0wO0Q9cSsxfDA7SD1xKzh8MDtJPXErNHwwO0E9KHN8MCk+MDtCPXArMXwwO0U9cCs4fDA7eT1wKzR8MDtDPWsrOHwwO3o9MC1zfDA7Sj0wO2Rve3N3aXRjaChhW20rSj4+MF18MCl7Y2FzZSAwOntjW2U+PjJdPWNbZj4+Ml07YnJlYWt9O2Nhc2UgNDp7Sz1jW2Y+PjJdfDA7aD1sP2grMXwwOmg7YTpkb3tpZihoPj4+MDxqPj4+MCl7TD1oO3doaWxlKDEpe049YVtMPj4wXXwwO2lmKCEoTjw8MjQ+PjI0Pi0xKSl7YnJlYWsgYX1NPUwrMXwwO2lmKChiWyhjW0M+PjJdfDApKyhOPDwyND4+MjQ8PDEpPj4xXSYyMDQ4KT09MCl7YnJlYWsgYX1pZihNPj4+MDxqPj4+MCl7TD1NfWVsc2V7TD1NO2JyZWFrfX19ZWxzZXtMPWh9fXdoaWxlKDApO009TDtpZihBKXtpZihMPj4+MD5oPj4+MCl7Tj1oKygwLU0pfDA7Tj1OPj4+MDx6Pj4+MD96Ok47TT1OK3N8MDtRPUs7UD1MO089czt3aGlsZSgxKXtQPVArIC0xfDA7Uj1hW1A+PjBdfDA7Y1tmPj4yXT1RKzE7YVtRPj4wXT1SO089TysgLTF8MDtRPShPfDApPjA7aWYoIShQPj4+MD5oPj4+MCZRKSl7YnJlYWt9UT1jW2Y+PjJdfDB9TD1MK058MDtpZihRKXtHPTMyfWVsc2V7Tj0wfX1lbHNle009cztHPTMyfWlmKChHfDApPT0zMil7Rz0wO049eGNbY1soY1trPj4yXXwwKSsyOD4+Ml0mNjNdKGssNDgpfDB9Tz1jW2Y+PjJdfDA7Y1tmPj4yXT1PKzE7aWYoKE18MCk+MCl7ZG97YVtPPj4wXT1OO009TSsgLTF8MDtPPWNbZj4+Ml18MDtjW2Y+PjJdPU8rMX13aGlsZSgoTXwwKT4wKX1hW08+PjBdPW59aWYoKEx8MCk9PShofDApKXtRPXhjW2NbKGNbaz4+Ml18MCkrMjg+PjJdJjYzXShrLDQ4KXwwO1I9Y1tmPj4yXXwwO2NbZj4+Ml09UisxO2FbUj4+MF09UX1lbHNle049YVtwPj4wXXwwO009KE4mMSk9PTA7aWYoTSl7Tj0oTiYyNTUpPj4+MX1lbHNle049Y1t5Pj4yXXwwfWlmKChOfDApPT0wKXtNPS0xO049MDtPPTB9ZWxzZXtpZihNKXtNPUJ9ZWxzZXtNPWNbRT4+Ml18MH1NPWFbTT4+MF18MDtOPTA7Tz0wfXdoaWxlKDEpe2lmKChPfDApPT0oTXwwKSl7UD1jW2Y+PjJdfDA7Y1tmPj4yXT1QKzE7YVtQPj4wXT1vO049TisxfDA7UD1hW3A+PjBdfDA7Tz0oUCYxKT09MDtpZihPKXtQPShQJjI1NSk+Pj4xfWVsc2V7UD1jW3k+PjJdfDB9aWYoTj4+PjA8UD4+PjApe2lmKE8pe009Qn1lbHNle009Y1tFPj4yXXwwfWlmKChhW00rTj4+MF18MCk9PTEyNyl7TT0tMTtPPTB9ZWxzZXtpZihPKXtNPUJ9ZWxzZXtNPWNbRT4+Ml18MH1NPWFbTStOPj4wXXwwO089MH19ZWxzZXtPPTB9fUw9TCsgLTF8MDtRPWFbTD4+MF18MDtSPWNbZj4+Ml18MDtjW2Y+PjJdPVIrMTthW1I+PjBdPVE7aWYoKEx8MCk9PShofDApKXticmVha31lbHNle089TysxfDB9fX1MPWNbZj4+Ml18MDtpZigoS3wwKSE9KEx8MCk/KEY9TCsgLTF8MCxGPj4+MD5LPj4+MCk6MCl7TD1GO2Rve1I9YVtLPj4wXXwwO2FbSz4+MF09YVtMPj4wXXwwO2FbTD4+MF09UjtLPUsrMXwwO0w9TCsgLTF8MH13aGlsZShLPj4+MDxMPj4+MCl9YnJlYWt9O2Nhc2UgMjp7TD1hW3E+PjBdfDA7TT0oTCYxKT09MDtpZihNKXtLPShMJjI1NSk+Pj4xfWVsc2V7Sz1jW0k+PjJdfDB9aWYoISgoS3wwKT09MHx4KSl7aWYoTSl7Sz1EO0w9KEwmMjU1KT4+PjF9ZWxzZXtLPWNbSD4+Ml18MDtMPWNbST4+Ml18MH1MPUsrTHwwO009Y1tmPj4yXXwwO2lmKChLfDApIT0oTHwwKSl7ZG97YVtNPj4wXT1hW0s+PjBdfDA7Sz1LKzF8MDtNPU0rMXwwfXdoaWxlKChLfDApIT0oTHwwKSl9Y1tmPj4yXT1NfWJyZWFrfTtjYXNlIDM6e0w9YVtyPj4wXXwwO0s9KEwmMSk9PTA7aWYoSyl7TD0oTCYyNTUpPj4+MX1lbHNle0w9Y1t1Pj4yXXwwfWlmKChMfDApIT0wKXtpZihLKXtLPXZ9ZWxzZXtLPWNbdz4+Ml18MH1RPWFbSz4+MF18MDtSPWNbZj4+Ml18MDtjW2Y+PjJdPVIrMTthW1I+PjBdPVF9YnJlYWt9O2Nhc2UgMTp7Y1tlPj4yXT1jW2Y+PjJdO1E9eGNbY1soY1trPj4yXXwwKSsyOD4+Ml0mNjNdKGssMzIpfDA7Uj1jW2Y+PjJdfDA7Y1tmPj4yXT1SKzE7YVtSPj4wXT1RO2JyZWFrfTtkZWZhdWx0Ont9fUo9SisxfDB9d2hpbGUoKEp8MCkhPTQpO2s9YVtyPj4wXXwwO3g9KGsmMSk9PTA7aWYoeCl7cj0oayYyNTUpPj4+MX1lbHNle3I9Y1t1Pj4yXXwwfWlmKHI+Pj4wPjEpe2lmKHgpe3U9KGsmMjU1KT4+PjF9ZWxzZXt2PWNbdz4+Ml18MDt1PWNbdT4+Ml18MH13PXYrMXwwO3U9dit1fDA7dj1jW2Y+PjJdfDA7aWYoKHd8MCkhPSh1fDApKXtkb3thW3Y+PjBdPWFbdz4+MF18MDt3PXcrMXwwO3Y9disxfDB9d2hpbGUoKHd8MCkhPSh1fDApKX1jW2Y+PjJdPXZ9Zz1nJjE3NjtpZigoZ3wwKT09MTYpe2k9dDtyZXR1cm59ZWxzZSBpZigoZ3wwKT09MzIpe2NbZT4+Ml09Y1tmPj4yXTtpPXQ7cmV0dXJufWVsc2V7Y1tlPj4yXT1kO2k9dDtyZXR1cm59fWZ1bmN0aW9uIEJrKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO3A9aTtpPWkrMTYwfDA7eD1wO3Q9cCsxNDB8MDtzPXArMTUyfDA7cj1wKzE1M3wwO3E9cCsxMTJ8MDt2PXArMTAwfDA7ZD1wKzEyOHwwO3o9cCsxMjR8MDt3PXArMTQ0fDA7dT1wKzE0OHwwO289Y1tnKzI4Pj4yXXwwO0Q9bys0fDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1t4Pj4yXT0xMzQ1NjtjW3grND4+Ml09MjA4O2NbeCs4Pj4yXT0wO2NnKDEzNDU2LHgpfXk9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0E9Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktQT4+Mj4+PjA+eT4+PjA/KGw9Y1tBKyh5PDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7QT1hW2o+PjBdfDA7eT0oQSYxKT09MDtpZih5KXtBPShBJjI1NSk+Pj4xfWVsc2V7QT1jW2orND4+Ml18MH1pZigoQXwwKT09MCl7eT0wfWVsc2V7aWYoeSl7eT1qKzF8MH1lbHNle3k9Y1tqKzg+PjJdfDB9eT1hW3k+PjBdfDA7eT15PDwyND4+MjQ9PSh4Y1tjWyhjW2w+PjJdfDApKzI4Pj4yXSY2M10obCw0NSl8MCk8PDI0Pj4yNH1jW3Q+PjJdPTA7Y1txKzA+PjJdPTA7Y1txKzQ+PjJdPTA7Y1txKzg+PjJdPTA7Y1t2KzA+PjJdPTA7Y1t2KzQ+PjJdPTA7Y1t2Kzg+PjJdPTA7Y1tkKzA+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tkKzg+PjJdPTA7emsoZix5LG8sdCxzLHIscSx2LGQseik7Zj1hW2o+PjBdfDA7QT0oZiYxKT09MDtpZihBKXtCPShmJjI1NSk+Pj4xfWVsc2V7Qj1jW2orND4+Ml18MH16PWNbej4+Ml18MDtpZigoQnwwKT4oenwwKSl7aWYoQSl7Qj0oZiYyNTUpPj4+MX1lbHNle0I9Y1tqKzQ+PjJdfDB9Qz1hW2Q+PjBdfDA7aWYoKEMmMSk9PTApe0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbZCs0Pj4yXXwwfUQ9YVt2Pj4wXXwwO2lmKChEJjEpPT0wKXtEPShEJjI1NSk+Pj4xfWVsc2V7RD1jW3YrND4+Ml18MH1CPUMrKEItejw8MXwxKStEfDB9ZWxzZXtCPWFbZD4+MF18MDtpZigoQiYxKT09MCl7Qj0oQiYyNTUpPj4+MX1lbHNle0I9Y1tkKzQ+PjJdfDB9Qz1hW3Y+PjBdfDA7aWYoKEMmMSk9PTApe0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbdis0Pj4yXXwwfUI9QisyK0N8MH1CPUIrenwwO2lmKEI+Pj4wPjEwMCl7eD11bihCKXwwO2lmKCh4fDApPT0wKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1lbHNle0I9eH19ZWxzZXtCPTB9aWYoQSl7QT1qKzF8MDtqPShmJjI1NSk+Pj4xfWVsc2V7QT1jW2orOD4+Ml18MDtqPWNbais0Pj4yXXwwfUFrKHgsdyx1LGNbZys0Pj4yXXwwLEEsQStqfDAsbCx5LHQsYVtzPj4wXXwwLGFbcj4+MF18MCxxLHYsZCx6KTtXYyhiLGNbZT4+Ml18MCx4LGNbdz4+Ml18MCxjW3U+PjJdfDAsZyxoKTtpZigoQnwwKSE9MCl7dm4oQil9aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tkKzg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbdj4+MF0mMSk9PTApPyhuPWNbdis4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhW3E+PjBdJjEpPT0wKT8oaz1jW3ErOD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9Qz1vKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXtpPXA7cmV0dXJufWxjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKTtpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIENrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIERrKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBFayhiLGQsZSxmLGcsaixsKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtsPStsO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7cT1pO2k9aSs5NzZ8MDtBPXE7Qz1xKzg2OHwwO0U9cSs4MTZ8MDtCPXErNDE2fDA7dD1xKzQwOHwwO3M9cSs4NjB8MDtyPXErNDAwfDA7eD1xKzgyNHwwO2Q9cSs4MzZ8MDt3PXErODQ4fDA7Rj1xKzgyMHwwO3Y9cSs0MDR8MDt1PXErODY0fDA7Y1tFPj4yXT1DO2hbaz4+M109bDtjW0E+PjJdPWNbaz4+Ml07Y1tBKzQ+PjJdPWNbays0Pj4yXTtDPWxiKEN8MCwxMDAsMTMyMjQsQXwwKXwwO2lmKEM+Pj4wPjk5KXtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9Qz1jWzMzNDBdfDA7aFtrPj4zXT1sO2NbQT4+Ml09Y1trPj4yXTtjW0ErND4+Ml09Y1trKzQ+PjJdO0M9Q2koRSxDLDEzMjI0LEEpfDA7ej1jW0U+PjJdfDA7aWYoKHp8MCk9PTApe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfUI9dW4oQzw8Mil8MDtpZigoQnwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9ZWxzZXt5PUJ9fWVsc2V7eT0wO3o9MH1EPWNbZysyOD4+Ml18MDtIPUQrNHwwO2NbSD4+Ml09KGNbSD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbQT4+Ml09MTM0NDg7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMzQ0OCxBKX1HPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtIPWNbRCs4Pj4yXXwwO2lmKChjW0QrMTI+PjJdfDApLUg+PjI+Pj4wPkc+Pj4wPyhwPWNbSCsoRzw8Mik+PjJdfDAsKHB8MCkhPTApOjApe0g9Y1tFPj4yXXwwO3VjW2NbKGNbcD4+Ml18MCkrNDg+PjJdJjMxXShwLEgsSCtDfDAsQil8MDtpZigoQ3wwKT09MCl7RT0wfWVsc2V7RT0oYVtjW0U+PjJdPj4wXXwwKT09NDV9Y1t0Pj4yXT0wO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbZCswPj4yXT0wO2NbZCs0Pj4yXT0wO2NbZCs4Pj4yXT0wO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wO0ZrKGYsRSxELHQscyxyLHgsZCx3LEYpO2Y9Y1tGPj4yXXwwO2lmKChDfDApPihmfDApKXtGPWFbdz4+MF18MDtpZigoRiYxKT09MCl7Rj0oRiYyNTUpPj4+MX1lbHNle0Y9Y1t3KzQ+PjJdfDB9Rz1hW2Q+PjBdfDA7aWYoKEcmMSk9PTApe0c9KEcmMjU1KT4+PjF9ZWxzZXtHPWNbZCs0Pj4yXXwwfUY9RisoQy1mPDwxfDEpK0d8MH1lbHNle0Y9YVt3Pj4wXXwwO2lmKChGJjEpPT0wKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW3crND4+Ml18MH1HPWFbZD4+MF18MDtpZigoRyYxKT09MCl7Rz0oRyYyNTUpPj4+MX1lbHNle0c9Y1tkKzQ+PjJdfDB9Rj1GKzIrR3wwfUY9RitmfDA7aWYoRj4+PjA+MTAwKXtBPXVuKEY8PDIpfDA7aWYoKEF8MCk9PTApe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfWVsc2V7Rj1BfX1lbHNle0Y9MH1HayhBLHYsdSxjW2crND4+Ml18MCxCLEIrKEM8PDIpfDAscCxFLHQsY1tzPj4yXXwwLGNbcj4+Ml18MCx4LGQsdyxmKTtMaShiLGNbZT4+Ml18MCxBLGNbdj4+Ml18MCxjW3U+PjJdfDAsZyxqKTtpZigoRnwwKSE9MCl7dm4oRil9aWYoISgoYVt3Pj4wXSYxKT09MCk/KG49Y1t3Kzg+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbZD4+MF0mMSk9PTApPyhvPWNbZCs4Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhW3g+PjBdJjEpPT0wKT8obT1jW3grOD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9Rz1EKzR8MDtIPWNbRz4+Ml18MDtjW0c+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0Q+PjJdfDApKzg+PjJdJjI1NV0oRCl9aWYoKHl8MCkhPTApe3ZuKHkpfWlmKCh6fDApPT0wKXtpPXE7cmV0dXJufXZuKHopO2k9cTtyZXR1cm59SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gRmsoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7bj1pO2k9aSsxMjh8MDtBPW47eD1uKzEyfDA7bz1uKzQwfDA7dj1uKzUyfDA7dz1uKzU2fDA7dT1uKzE2fDA7ej1uKzI4fDA7cj1uKzY4fDA7cT1uKzcyfDA7dD1uKzg0fDA7cz1uKzg4fDA7cD1uKzEwMHwwO3k9bisxMTJ8MDtpZihiKXtpZighKChjWzMyNjBdfDApPT0tMSkpe2NbQT4+Ml09MTMwNDA7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMzA0MCxBKX1xPShjWzEzMDQ0Pj4yXXwwKSsgLTF8MDtwPWNbZSs4Pj4yXXwwO2lmKCEoKGNbZSsxMj4+Ml18MCktcD4+Mj4+PjA+cT4+PjApKXtiPVhhKDQpfDA7Y1tiPj4yXT0yMTMwNDt3YihifDAsMjEzNzYsMTk2KX1wPWNbcCsocTw8Mik+PjJdfDA7aWYoKHB8MCk9PTApe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfXE9Y1twPj4yXXwwO2lmKGQpe21jW2NbcSs0ND4+Ml0mMTI3XSh4LHApO2I9Y1t4Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbcD4+Ml18MCkrMzI+PjJdJjEyN10obyxwKTtpZigoYVtsPj4wXSYxKT09MCl7Y1tsKzQ+PjJdPTA7YVtsPj4wXT0wfWVsc2V7Y1tjW2wrOD4+Ml0+PjJdPTA7Y1tsKzQ+PjJdPTB9b2cobCk7Y1tsKzA+PjJdPWNbbyswPj4yXTtjW2wrND4+Ml09Y1tvKzQ+PjJdO2NbbCs4Pj4yXT1jW28rOD4+Ml07Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTB9ZWxzZXttY1tjW3ErNDA+PjJdJjEyN10odixwKTtiPWNbdj4+Ml18MDthW2Y+PjBdPWI7YVtmKzE+PjBdPWI+Pjg7YVtmKzI+PjBdPWI+PjE2O2FbZiszPj4wXT1iPj4yNDttY1tjWyhjW3A+PjJdfDApKzI4Pj4yXSYxMjddKHcscCk7aWYoKGFbbD4+MF0mMSk9PTApe2NbbCs0Pj4yXT0wO2FbbD4+MF09MH1lbHNle2NbY1tsKzg+PjJdPj4yXT0wO2NbbCs0Pj4yXT0wfW9nKGwpO2NbbCswPj4yXT1jW3crMD4+Ml07Y1tsKzQ+PjJdPWNbdys0Pj4yXTtjW2wrOD4+Ml09Y1t3Kzg+PjJdO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wfWNbZz4+Ml09b2NbY1soY1twPj4yXXwwKSsxMj4+Ml0mMTI3XShwKXwwO2NbaD4+Ml09b2NbY1soY1twPj4yXXwwKSsxNj4+Ml0mMTI3XShwKXwwO21jW2NbKGNbcD4+Ml18MCkrMjA+PjJdJjEyN10odSxwKTtpZigoYVtqPj4wXSYxKT09MCl7YVtqKzE+PjBdPTA7YVtqPj4wXT0wfWVsc2V7YVtjW2orOD4+Ml0+PjBdPTA7Y1tqKzQ+PjJdPTB9aWcoaik7Y1tqKzA+PjJdPWNbdSswPj4yXTtjW2orND4+Ml09Y1t1KzQ+PjJdO2Nbais4Pj4yXT1jW3UrOD4+Ml07Y1t1KzA+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7bWNbY1soY1twPj4yXXwwKSsyND4+Ml0mMTI3XSh6LHApO2lmKChhW2s+PjBdJjEpPT0wKXtjW2srND4+Ml09MDthW2s+PjBdPTB9ZWxzZXtjW2Nbays4Pj4yXT4+Ml09MDtjW2srND4+Ml09MH1vZyhrKTtjW2srMD4+Ml09Y1t6KzA+PjJdO2Nbays0Pj4yXT1jW3orND4+Ml07Y1trKzg+PjJdPWNbeis4Pj4yXTtjW3orMD4+Ml09MDtjW3orND4+Ml09MDtjW3orOD4+Ml09MDtiPW9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MDtjW20+PjJdPWI7aT1uO3JldHVybn1lbHNle2lmKCEoKGNbMzI0NF18MCk9PS0xKSl7Y1tBPj4yXT0xMjk3NjtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEyOTc2LEEpfXU9KGNbMTI5ODA+PjJdfDApKyAtMXwwO289Y1tlKzg+PjJdfDA7aWYoISgoY1tlKzEyPj4yXXwwKS1vPj4yPj4+MD51Pj4+MCkpe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfW89Y1tvKyh1PDwyKT4+Ml18MDtpZigob3wwKT09MCl7Yj1YYSg0KXwwO2NbYj4+Ml09MjEzMDQ7d2IoYnwwLDIxMzc2LDE5Nil9ZT1jW28+PjJdfDA7aWYoZCl7bWNbY1tlKzQ0Pj4yXSYxMjddKHIsbyk7Yj1jW3I+PjJdfDA7YVtmPj4wXT1iO2FbZisxPj4wXT1iPj44O2FbZisyPj4wXT1iPj4xNjthW2YrMz4+MF09Yj4+MjQ7bWNbY1soY1tvPj4yXXwwKSszMj4+Ml0mMTI3XShxLG8pO2lmKChhW2w+PjBdJjEpPT0wKXtjW2wrND4+Ml09MDthW2w+PjBdPTB9ZWxzZXtjW2NbbCs4Pj4yXT4+Ml09MDtjW2wrND4+Ml09MH1vZyhsKTtjW2wrMD4+Ml09Y1txKzA+PjJdO2NbbCs0Pj4yXT1jW3ErND4+Ml07Y1tsKzg+PjJdPWNbcSs4Pj4yXTtjW3ErMD4+Ml09MDtjW3ErND4+Ml09MDtjW3ErOD4+Ml09MH1lbHNle21jW2NbZSs0MD4+Ml0mMTI3XSh0LG8pO2I9Y1t0Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbbz4+Ml18MCkrMjg+PjJdJjEyN10ocyxvKTtpZigoYVtsPj4wXSYxKT09MCl7Y1tsKzQ+PjJdPTA7YVtsPj4wXT0wfWVsc2V7Y1tjW2wrOD4+Ml0+PjJdPTA7Y1tsKzQ+PjJdPTB9b2cobCk7Y1tsKzA+PjJdPWNbcyswPj4yXTtjW2wrND4+Ml09Y1tzKzQ+PjJdO2NbbCs4Pj4yXT1jW3MrOD4+Ml07Y1tzKzA+PjJdPTA7Y1tzKzQ+PjJdPTA7Y1tzKzg+PjJdPTB9Y1tnPj4yXT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7Y1toPj4yXT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7bWNbY1soY1tvPj4yXXwwKSsyMD4+Ml0mMTI3XShwLG8pO2lmKChhW2o+PjBdJjEpPT0wKXthW2orMT4+MF09MDthW2o+PjBdPTB9ZWxzZXthW2Nbais4Pj4yXT4+MF09MDtjW2orND4+Ml09MH1pZyhqKTtjW2orMD4+Ml09Y1twKzA+PjJdO2Nbais0Pj4yXT1jW3ArND4+Ml07Y1tqKzg+PjJdPWNbcCs4Pj4yXTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDttY1tjWyhjW28+PjJdfDApKzI0Pj4yXSYxMjddKHksbyk7aWYoKGFbaz4+MF0mMSk9PTApe2Nbays0Pj4yXT0wO2Fbaz4+MF09MH1lbHNle2NbY1trKzg+PjJdPj4yXT0wO2Nbays0Pj4yXT0wfW9nKGspO2NbayswPj4yXT1jW3krMD4+Ml07Y1trKzQ+PjJdPWNbeSs0Pj4yXTtjW2srOD4+Ml09Y1t5Kzg+PjJdO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2I9b2NbY1soY1tvPj4yXXwwKSszNj4+Ml0mMTI3XShvKXwwO2NbbT4+Ml09YjtpPW47cmV0dXJufX1mdW5jdGlvbiBHayhiLGQsZSxmLGcsaCxqLGssbCxtLG4sbyxwLHEscil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7cT1xfDA7cj1yfDA7dmFyIHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wO3M9aTtjW2U+PjJdPWI7dD1xKzR8MDt1PXErOHwwO3k9KGYmNTEyfDApPT0wO3g9cCs0fDA7QT1wKzh8MDt3PShyfDApPjA7Qj1vKzF8MDtDPW8rOHwwO0Q9bys0fDA7RT0wO2Rve3N3aXRjaChhW2wrRT4+MF18MCl7Y2FzZSAyOntGPWFbcD4+MF18MDtIPShGJjEpPT0wO2lmKEgpe0c9KEYmMjU1KT4+PjF9ZWxzZXtHPWNbeD4+Ml18MH1pZighKChHfDApPT0wfHkpKXtpZihIKXtIPXg7ST0oRiYyNTUpPj4+MX1lbHNle0g9Y1tBPj4yXXwwO0k9Y1t4Pj4yXXwwfUc9SCsoSTw8Mil8MDtGPWNbZT4+Ml18MDtpZigoSHwwKSE9KEd8MCkpe0o9KEgrKEkrIC0xPDwyKSsoMC1IKXwwKT4+PjI7ST1GO3doaWxlKDEpe2NbST4+Ml09Y1tIPj4yXTtIPUgrNHwwO2lmKChIfDApPT0oR3wwKSl7YnJlYWt9ST1JKzR8MH1GPUYrKEorMTw8Mil8MH1jW2U+PjJdPUZ9YnJlYWt9O2Nhc2UgMzp7Rz1hW3E+PjBdfDA7Rj0oRyYxKT09MDtpZihGKXtHPShHJjI1NSk+Pj4xfWVsc2V7Rz1jW3Q+PjJdfDB9aWYoKEd8MCkhPTApe2lmKEYpe0Y9dH1lbHNle0Y9Y1t1Pj4yXXwwfUw9Y1tGPj4yXXwwO009Y1tlPj4yXXwwO2NbZT4+Ml09TSs0O2NbTT4+Ml09TH1icmVha307Y2FzZSA0OntGPWNbZT4+Ml18MDtnPWs/Zys0fDA6ZzthOmRve2lmKGc+Pj4wPGg+Pj4wKXtHPWc7d2hpbGUoMSl7SD1HKzR8MDtpZighKGhjW2NbKGNbaj4+Ml18MCkrMTI+PjJdJjYzXShqLDIwNDgsY1tHPj4yXXwwKXwwKSl7YnJlYWsgYX1pZihIPj4+MDxoPj4+MCl7Rz1IfWVsc2V7Rz1IO2JyZWFrfX19ZWxzZXtHPWd9fXdoaWxlKDApO2lmKHcpe2lmKEc+Pj4wPmc+Pj4wKXtIPWNbZT4+Ml18MDtJPXI7d2hpbGUoMSl7Rz1HKyAtNHwwO0s9SCs0fDA7Y1tIPj4yXT1jW0c+PjJdO0k9SSsgLTF8MDtKPShJfDApPjA7aWYoIShHPj4+MD5nPj4+MCZKKSl7YnJlYWt9ZWxzZXtIPUt9fWNbZT4+Ml09SztpZihKKXt6PTM0fWVsc2V7Y1tlPj4yXT1IKzh9fWVsc2V7ST1yO3o9MzR9aWYoKHp8MCk9PTM0KXt6PTA7Sj14Y1tjWyhjW2o+PjJdfDApKzQ0Pj4yXSY2M10oaiw0OCl8MDtLPWNbZT4+Ml18MDtNPUsrNHwwO2NbZT4+Ml09TTtpZigoSXwwKT4wKXtIPUs7TD1JO3doaWxlKDEpe2NbSD4+Ml09SjtMPUwrIC0xfDA7aWYoKEx8MCk8PTApe2JyZWFrfWVsc2V7SD1NO009TSs0fDB9fWNbZT4+Ml09SysoSSsxPDwyKTtLPUsrKEk8PDIpfDB9fWNbSz4+Ml09bX1pZigoR3wwKT09KGd8MCkpe0s9eGNbY1soY1tqPj4yXXwwKSs0ND4+Ml0mNjNdKGosNDgpfDA7TT1jW2U+PjJdfDA7TD1NKzR8MDtjW2U+PjJdPUw7Y1tNPj4yXT1LfWVsc2V7ST1hW28+PjBdfDA7SD0oSSYxKT09MDtpZihIKXtJPShJJjI1NSk+Pj4xfWVsc2V7ST1jW0Q+PjJdfDB9aWYoKEl8MCk9PTApe0g9LTF9ZWxzZXtpZihIKXtIPUJ9ZWxzZXtIPWNbQz4+Ml18MH1IPWFbSD4+MF18MH1JPWNbZT4+Ml18MDtLPTA7Sj0wO3doaWxlKDEpe2lmKChKfDApPT0oSHwwKSl7Sj1JKzR8MDtjW2U+PjJdPUo7Y1tJPj4yXT1uO0s9SysxfDA7TD1hW28+PjBdfDA7ST0oTCYxKT09MDtpZihJKXtMPShMJjI1NSk+Pj4xfWVsc2V7TD1jW0Q+PjJdfDB9aWYoSz4+PjA8TD4+PjApe2lmKEkpe0g9Qn1lbHNle0g9Y1tDPj4yXXwwfWlmKChhW0grSz4+MF18MCk9PTEyNyl7ST1KO0g9LTE7Sj0wfWVsc2V7aWYoSSl7SD1CfWVsc2V7SD1jW0M+PjJdfDB9ST1KO0g9YVtIK0s+PjBdfDA7Sj0wfX1lbHNle0k9SjtKPTB9fUc9RysgLTR8MDtNPWNbRz4+Ml18MDtMPUkrNHwwO2NbZT4+Ml09TDtjW0k+PjJdPU07aWYoKEd8MCk9PShnfDApKXticmVha31lbHNle0k9TDtKPUorMXwwfX19aWYoKEZ8MCkhPShMfDApPyh2PUwrIC00fDAsdj4+PjA+Rj4+PjApOjApe0c9djtkb3tNPWNbRj4+Ml18MDtjW0Y+PjJdPWNbRz4+Ml07Y1tHPj4yXT1NO0Y9Ris0fDA7Rz1HKyAtNHwwfXdoaWxlKEY+Pj4wPEc+Pj4wKX1icmVha307Y2FzZSAxOntjW2Q+PjJdPWNbZT4+Ml07TD14Y1tjWyhjW2o+PjJdfDApKzQ0Pj4yXSY2M10oaiwzMil8MDtNPWNbZT4+Ml18MDtjW2U+PjJdPU0rNDtjW00+PjJdPUw7YnJlYWt9O2Nhc2UgMDp7Y1tkPj4yXT1jW2U+PjJdO2JyZWFrfTtkZWZhdWx0Ont9fUU9RSsxfDB9d2hpbGUoKEV8MCkhPTQpO3c9YVtxPj4wXXwwO3Y9KHcmMSk9PTA7aWYodil7cT0odyYyNTUpPj4+MX1lbHNle3E9Y1t0Pj4yXXwwfWlmKHE+Pj4wPjEpe2lmKHYpe3Y9dDtxPSh3JjI1NSk+Pj4xfWVsc2V7dj1jW3U+PjJdfDA7cT1jW3Q+PjJdfDB9dz12KzR8MDt1PXYrKHE8PDIpfDA7dD1jW2U+PjJdfDA7aWYoKHd8MCkhPSh1fDApKXtxPSh2KyhxKyAtMTw8MikrKDAtdyl8MCk+Pj4yO3Y9dDt3aGlsZSgxKXtjW3Y+PjJdPWNbdz4+Ml07dz13KzR8MDtpZigod3wwKT09KHV8MCkpe2JyZWFrfWVsc2V7dj12KzR8MH19dD10KyhxKzE8PDIpfDB9Y1tlPj4yXT10fWY9ZiYxNzY7aWYoKGZ8MCk9PTE2KXtpPXM7cmV0dXJufWVsc2UgaWYoKGZ8MCk9PTMyKXtjW2Q+PjJdPWNbZT4+Ml07aT1zO3JldHVybn1lbHNle2NbZD4+Ml09YjtpPXM7cmV0dXJufX1mdW5jdGlvbiBIayhiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtwPWk7aT1pKzQ2NHwwO3g9cDt0PXArNDM2fDA7cz1wKzQ0MHwwO3I9cCs0NDR8MDtxPXArNDEyfDA7dj1wKzQwMHwwO2Q9cCs0MjR8MDt6PXArNDQ4fDA7dz1wKzQ1MnwwO3U9cCs0NTZ8MDtvPWNbZysyOD4+Ml18MDtEPW8rNHwwO2NbRD4+Ml09KGNbRD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbeD4+Ml09MTM0NDg7Y1t4KzQ+PjJdPTIwODtjW3grOD4+Ml09MDtjZygxMzQ0OCx4KX15PShjWzEzNDUyPj4yXXwwKSsgLTF8MDtBPWNbbys4Pj4yXXwwO2lmKChjW28rMTI+PjJdfDApLUE+PjI+Pj4wPnk+Pj4wPyhsPWNbQSsoeTw8Mik+PjJdfDAsKGx8MCkhPTApOjApe0E9YVtqPj4wXXwwO3k9KEEmMSk9PTA7aWYoeSl7QT0oQSYyNTUpPj4+MX1lbHNle0E9Y1tqKzQ+PjJdfDB9aWYoKEF8MCk9PTApe3k9MH1lbHNle2lmKHkpe3k9ais0fDB9ZWxzZXt5PWNbais4Pj4yXXwwfXk9Y1t5Pj4yXXwwO3k9KHl8MCk9PSh4Y1tjWyhjW2w+PjJdfDApKzQ0Pj4yXSY2M10obCw0NSl8MCl9Y1t0Pj4yXT0wO2NbcSswPj4yXT0wO2NbcSs0Pj4yXT0wO2NbcSs4Pj4yXT0wO2NbdiswPj4yXT0wO2Nbdis0Pj4yXT0wO2Nbdis4Pj4yXT0wO2NbZCswPj4yXT0wO2NbZCs0Pj4yXT0wO2NbZCs4Pj4yXT0wO0ZrKGYseSxvLHQscyxyLHEsdixkLHopO2Y9YVtqPj4wXXwwO0E9KGYmMSk9PTA7aWYoQSl7Qj0oZiYyNTUpPj4+MX1lbHNle0I9Y1tqKzQ+PjJdfDB9ej1jW3o+PjJdfDA7aWYoKEJ8MCk+KHp8MCkpe2lmKEEpe0I9KGYmMjU1KT4+PjF9ZWxzZXtCPWNbais0Pj4yXXwwfUM9YVtkPj4wXXwwO2lmKChDJjEpPT0wKXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW2QrND4+Ml18MH1EPWFbdj4+MF18MDtpZigoRCYxKT09MCl7RD0oRCYyNTUpPj4+MX1lbHNle0Q9Y1t2KzQ+PjJdfDB9Qj1DKyhCLXo8PDF8MSkrRHwwfWVsc2V7Qj1hW2Q+PjBdfDA7aWYoKEImMSk9PTApe0I9KEImMjU1KT4+PjF9ZWxzZXtCPWNbZCs0Pj4yXXwwfUM9YVt2Pj4wXXwwO2lmKChDJjEpPT0wKXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3YrND4+Ml18MH1CPUIrMitDfDB9Qj1CK3p8MDtpZihCPj4+MD4xMDApe3g9dW4oQjw8Mil8MDtpZigoeHwwKT09MCl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZWxzZXtCPXh9fWVsc2V7Qj0wfWlmKEEpe0E9ais0fDA7aj0oZiYyNTUpPj4+MX1lbHNle0E9Y1tqKzg+PjJdfDA7aj1jW2orND4+Ml18MH1Hayh4LHcsdSxjW2crND4+Ml18MCxBLEErKGo8PDIpfDAsbCx5LHQsY1tzPj4yXXwwLGNbcj4+Ml18MCxxLHYsZCx6KTtMaShiLGNbZT4+Ml18MCx4LGNbdz4+Ml18MCxjW3U+PjJdfDAsZyxoKTtpZigoQnwwKSE9MCl7dm4oQil9aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tkKzg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbdj4+MF0mMSk9PTApPyhuPWNbdis4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhW3E+PjBdJjEpPT0wKT8oaz1jW3ErOD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9Qz1vKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXtpPXA7cmV0dXJufWxjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKTtpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIElrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEprKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBLayhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Yj1pO2lmKChhW2Q+PjBdJjEpPT0wKXtkPWQrMXwwfWVsc2V7ZD1jW2QrOD4+Ml18MH1lPWRjKGR8MCwxKXwwO2k9YjtyZXR1cm4gZT4+PigoZXwwKSE9KC0xfDApJjEpfDB9ZnVuY3Rpb24gTGsoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7ZD1pO2k9aSsxNnwwO2o9ZDtjW2orMD4+Ml09MDtjW2orND4+Ml09MDtjW2orOD4+Ml09MDtrPWFbaD4+MF18MDtpZigoayYxKT09MCl7cD1oKzF8MDtoPShrJjI1NSk+Pj4xfWVsc2V7cD1jW2grOD4+Ml18MDtoPWNbaCs0Pj4yXXwwfW09cCtofDA7aWYocD4+PjA8bT4+PjApe249ais0fDA7bD1qKzF8MDtrPWorOHwwO3E9MDtkb3tvPWFbcD4+MF18MDtoPShxJjEpIT0wO2lmKGgpe3I9KGNbaj4+Ml0mLTIpKyAtMXwwO3E9Y1tuPj4yXXwwfWVsc2V7cj0xMDtxPShxJjI1NSk+Pj4xfWlmKChxfDApPT0ocnwwKSl7bGcoaixyLDEscixyLDApO2lmKChhW2o+PjBdJjEpPT0wKXtoPTE0fWVsc2V7aD0xNX19ZWxzZXtpZihoKXtoPTE1fWVsc2V7aD0xNH19aWYoKGh8MCk9PTE0KXthW2o+PjBdPShxPDwxKSsyO3I9bDtzPXErMXwwfWVsc2UgaWYoKGh8MCk9PTE1KXtyPWNbaz4+Ml18MDtzPXErMXwwO2Nbbj4+Ml09c31hW3IrcT4+MF09bzthW3Ircz4+MF09MDtwPXArMXwwO3E9YVtqPj4wXXwwfXdoaWxlKChwfDApIT0obXwwKSk7aD0oZXwwKT09LTE/LTE6ZTw8MTtlPShxJjEpPT0wP2w6Y1trPj4yXXwwfWVsc2V7aD0oZXwwKT09LTE/LTE6ZTw8MTtlPWorMXwwfWw9amIoaHwwLGZ8MCxnfDAsZXwwKXwwO2NbYiswPj4yXT0wO2NbYis0Pj4yXT0wO2NbYis4Pj4yXT0wO3M9Sm4obHwwKXwwO2s9bCtzfDA7YTpkb3tpZigoc3wwKT4wKXtmPWIrNHwwO2c9YisxfDA7ZT1iKzh8MDtuPTA7d2hpbGUoMSl7bT1hW2w+PjBdfDA7aD0obiYxKSE9MDtpZihoKXtvPShjW2I+PjJdJi0yKSsgLTF8MDtuPWNbZj4+Ml18MH1lbHNle289MTA7bj0obiYyNTUpPj4+MX1pZigobnwwKT09KG98MCkpe2xnKGIsbywxLG8sbywwKTtpZigoYVtiPj4wXSYxKT09MCl7aD0yOH1lbHNle2g9Mjl9fWVsc2V7aWYoaCl7aD0yOX1lbHNle2g9Mjh9fWlmKChofDApPT0yOCl7YVtiPj4wXT0objw8MSkrMjtwPWc7bz1uKzF8MH1lbHNlIGlmKChofDApPT0yOSl7cD1jW2U+PjJdfDA7bz1uKzF8MDtjW2Y+PjJdPW99YVtwK24+PjBdPW07YVtwK28+PjBdPTA7bD1sKzF8MDtpZigobHwwKT09KGt8MCkpe2JyZWFrIGF9bj1hW2I+PjBdfDB9fX13aGlsZSgwKTtpZigoYVtqPj4wXSYxKT09MCl7aT1kO3JldHVybn1iPWNbais4Pj4yXXwwO2lmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gTWsoYSxiKXthPWF8MDtiPWJ8MDthPWk7WWIoKChifDApPT0tMT8tMTpiPDwxKXwwKXwwO2k9YTtyZXR1cm59ZnVuY3Rpb24gTmsoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gT2soYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFBrKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDtiPWk7aWYoKGFbZD4+MF0mMSk9PTApe2Q9ZCsxfDB9ZWxzZXtkPWNbZCs4Pj4yXXwwfWU9ZGMoZHwwLDEpfDA7aT1iO3JldHVybiBlPj4+KChlfDApIT0oLTF8MCkmMSl8MH1mdW5jdGlvbiBRayhiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO2Q9aTtpPWkrMTc2fDA7bT1kO249ZCs0MHwwO2s9ZCsxNjh8MDtsPWQrMTcyfDA7bz1kKzE2fDA7cj1kKzh8MDtqPWQrMzJ8MDtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtjW3IrND4+Ml09MDtjW3I+PjJdPTE1MDcyO3M9YVtoPj4wXXwwO2lmKChzJjEpPT0wKXt3PWgrNHwwO2g9KHMmMjU1KT4+PjF9ZWxzZXt3PWNbaCs4Pj4yXXwwO2g9Y1toKzQ+PjJdfDB9dj13KyhoPDwyKXwwO0E9bTtjW0E+PjJdPTA7Y1tBKzQ+PjJdPTA7ZG97aWYodz4+PjA8dj4+PjApe3Q9biszMnwwO3U9bys0fDA7cz1vKzF8MDtoPW8rOHwwO3g9MTUwNzJ8MDt3aGlsZSgxKXtjW2w+PjJdPXc7QT0odGNbY1t4KzEyPj4yXSYzMV0ocixtLHcsdixsLG4sdCxrKXwwKT09Mjt4PWNbbD4+Ml18MDtpZihBfCh4fDApPT0od3wwKSl7YnJlYWt9aWYobj4+PjA8KGNbaz4+Ml18MCk+Pj4wKXt4PW47ZG97dz1hW3g+PjBdfDA7eT1hW28+PjBdfDA7ej0oeSYxKSE9MDtpZih6KXtwPShjW28+PjJdJi0yKSsgLTF8MDt5PWNbdT4+Ml18MH1lbHNle3A9MTA7eT0oeSYyNTUpPj4+MX1pZigoeXwwKT09KHB8MCkpe2xnKG8scCwxLHAscCwwKTtpZigoYVtvPj4wXSYxKT09MCl7cD0xOH1lbHNle3A9MTl9fWVsc2V7aWYoeil7cD0xOX1lbHNle3A9MTh9fWlmKChwfDApPT0xOCl7cD0wO2Fbbz4+MF09KHk8PDEpKzI7QT1zO3o9eSsxfDB9ZWxzZSBpZigocHwwKT09MTkpe3A9MDtBPWNbaD4+Ml18MDt6PXkrMXwwO2NbdT4+Ml09en1hW0EreT4+MF09dzthW0Erej4+MF09MDt4PXgrMXwwfXdoaWxlKHg+Pj4wPChjW2s+PjJdfDApPj4+MCk7dz1jW2w+PjJdfDB9ZWxzZXt3PXh9aWYoISh3Pj4+MDx2Pj4+MCkpe3A9MjQ7YnJlYWt9eD1jW3I+PjJdfDB9aWYoKHB8MCk9PTI0KXtxPShhW28+PjBdJjEpPT0wO2JyZWFrfW9rKDE0Mjk2KX1lbHNle3E9MX19d2hpbGUoMCk7aWYocSl7cD1vKzF8MH1lbHNle3A9Y1tvKzg+PjJdfDB9cD1qYigoKGV8MCk9PS0xPy0xOmU8PDEpfDAsZnwwLGd8MCxwfDApfDA7Y1tiKzA+PjJdPTA7Y1tiKzQ+PjJdPTA7Y1tiKzg+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1tqPj4yXT0xNTE3NjtBPUpuKHB8MCl8MDtxPXArQXwwO3o9bTtjW3o+PjJdPTA7Y1t6KzQ+PjJdPTA7YTpkb3tpZigoQXwwKT4wKXtlPXE7cj1uKzEyOHwwO2c9Yis0fDA7Zj1iKzh8MDtoPTE1MTc2fDA7d2hpbGUoMSl7Y1tsPj4yXT1wO0E9KHRjW2NbaCsxNj4+Ml0mMzFdKGosbSxwLChlLXB8MCk+MzI/cCszMnwwOnEsbCxuLHIsayl8MCk9PTI7aD1jW2w+PjJdfDA7aWYoQXwoaHwwKT09KHB8MCkpe2JyZWFrfWlmKG4+Pj4wPChjW2s+PjJdfDApPj4+MCl7cz1uO2Rve2g9Y1tzPj4yXXwwO3Q9YVtiPj4wXXwwO3U9KHQmMSkhPTA7aWYodSl7cD0oY1tiPj4yXSYtMikrIC0xfDA7dD1jW2c+PjJdfDB9ZWxzZXtwPTE7dD0odCYyNTUpPj4+MX1pZigodHwwKT09KHB8MCkpe3BnKGIscCwxLHAscCwwLDApO2lmKChhW2I+PjBdJjEpPT0wKXtwPTQzfWVsc2V7cD00NH19ZWxzZXtpZih1KXtwPTQ0fWVsc2V7cD00M319aWYoKHB8MCk9PTQzKXthW2I+PjBdPSh0PDwxKSsyO3Y9Zzt1PXQrMXwwfWVsc2UgaWYoKHB8MCk9PTQ0KXt2PWNbZj4+Ml18MDt1PXQrMXwwO2NbZz4+Ml09dX1jW3YrKHQ8PDIpPj4yXT1oO2NbdisodTw8Mik+PjJdPTA7cz1zKzR8MH13aGlsZShzPj4+MDwoY1trPj4yXXwwKT4+PjApO3A9Y1tsPj4yXXwwfWVsc2V7cD1ofWlmKCEocD4+PjA8cT4+PjApKXticmVhayBhfWg9Y1tqPj4yXXwwfW9rKDE0Mjk2KX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe2k9ZDtyZXR1cm59Yj1jW28rOD4+Ml18MDtpZigoYnwwKT09MCl7aT1kO3JldHVybn12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIFJrKGEsYil7YT1hfDA7Yj1ifDA7YT1pO1liKCgoYnwwKT09LTE/LTE6Yjw8MSl8MCl8MDtpPWE7cmV0dXJufWZ1bmN0aW9uIFNrKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNTQ0O2I9Yis4fDA7ZT1jW2I+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChlfDApPT0oY1szMzQwXXwwKSl7aT1kO3JldHVybn1WYihjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gVGsoKXt2YXIgYj0wLGQ9MCxlPTA7ZD1YYSg4KXwwO2NbZD4+Ml09OTkwNDt3aGlsZSgxKXtlPXVuKDE5KXwwO2lmKChlfDApIT0wKXtiPTc7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKGJ8MCk9PTcpe2NbZSs0Pj4yXT02O2NbZT4+Ml09NjtiPWUrMTJ8MDtjW2QrND4+Ml09YjtjW2UrOD4+Ml09MDthW2IrMD4+MF09YVsxMzM1Mj4+MF18MDthW2IrMT4+MF09YVsxMzM1Mz4+MF18MDthW2IrMj4+MF09YVsxMzM1ND4+MF18MDthW2IrMz4+MF09YVsxMzM1NT4+MF18MDthW2IrND4+MF09YVsxMzM1Nj4+MF18MDthW2IrNT4+MF09YVsxMzM1Nz4+MF18MDthW2IrNj4+MF09YVsxMzM1OD4+MF18MDtjW2Q+PjJdPTk5ODQ7d2IoZHwwLDEwMDI0LDEwNCl9ZT1YYSg0KXwwO2NbZT4+Ml09MjI2ODA7d2IoZXwwLDIyNzI4LDIwNil9ZnVuY3Rpb24gVWsoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtmPWk7aD1kKzR8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7aD1iKzEyfDA7bD1jW2g+PjJdfDA7Zz1iKzh8MDtrPWNbZz4+Ml18MDtxPWw7cD1rO2o9cS1wPj4yO2Rve2lmKCEoaj4+PjA+ZT4+PjApKXtvPWUrMXwwO2lmKCEoaj4+PjA8bz4+PjApKXtpZighKGo+Pj4wPm8+Pj4wKSl7YnJlYWt9aj1rKyhvPDwyKXwwO2lmKChsfDApPT0oanwwKSl7YnJlYWt9Y1toPj4yXT1sKyh+KChsKyAtNCsoMC1qKXwwKT4+PjIpPDwyKTticmVha31uPW8tanwwO2s9YisxNnwwO3I9Y1trPj4yXXwwO2Rve2lmKHItcT4+Mj4+PjA8bj4+PjApe2w9YisyNHwwO2lmKG8+Pj4wPjEwNzM3NDE4MjMpe1RrKCl9cD1yLXB8MDtpZihwPj4yPj4+MDw1MzY4NzA5MTEpe3I9cD4+MTtvPXI+Pj4wPG8+Pj4wP286cjtpZigob3wwKSE9MCl7cD1iKzEzNnwwO2lmKChhW3A+PjBdfDApPT0wJm8+Pj4wPDI5KXthW3A+PjBdPTE7cD1sfWVsc2V7bT0xNH19ZWxzZXtvPTA7cD0wfX1lbHNle289MTA3Mzc0MTgyMzttPTE0fWRve2lmKChtfDApPT0xNCl7cT1vPDwyO3E9KHF8MCk9PTA/MTpxO3doaWxlKDEpe3A9dW4ocSl8MDtpZigocHwwKSE9MCl7bT0yMDticmVha31wPWNbNTY2Nl18MDtjWzU2NjZdPXArMDtpZigocHwwKT09MCl7YnJlYWt9c2NbcCYzMV0oKX1pZigobXwwKT09MjApe2JyZWFrfXI9WGEoNCl8MDtjW3I+PjJdPTIyNjgwO3diKHJ8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTttPXArKGo8PDIpfDA7ZG97aWYoKG18MCk9PTApe209MH1lbHNle2NbbT4+Ml09MH1tPW0rNHwwO249bisgLTF8MH13aGlsZSgobnwwKSE9MCk7bj1jW2c+PjJdfDA7cT0oY1toPj4yXXwwKS1ufDA7cj1wKyhqLShxPj4yKTw8Mil8MDtMbihyfDAsbnwwLHF8MCl8MDtjW2c+PjJdPXI7Y1toPj4yXT1tO2Nbaz4+Ml09cCsobzw8Mik7aWYoKG58MCkhPTApe2lmKChsfDApPT0obnwwKSl7YVtiKzEzNj4+MF09MDticmVha31lbHNle3ZuKG4pO2JyZWFrfX19ZWxzZXtkb3tpZigobHwwKT09MCl7aj0wfWVsc2V7Y1tsPj4yXT0wO2o9Y1toPj4yXXwwfWw9ais0fDA7Y1toPj4yXT1sO249bisgLTF8MH13aGlsZSgobnwwKSE9MCl9fXdoaWxlKDApO2s9Y1tnPj4yXXwwfX13aGlsZSgwKTtoPWNbaysoZTw8Mik+PjJdfDA7aWYoKGh8MCk9PTApe3I9aztyPXIrKGU8PDIpfDA7Y1tyPj4yXT1kO2k9ZjtyZXR1cm59cT1oKzR8MDtyPWNbcT4+Ml18MDtjW3E+PjJdPXIrIC0xO2lmKChyfDApPT0wKXtsY1tjWyhjW2g+PjJdfDApKzg+PjJdJjI1NV0oaCl9cj1jW2c+PjJdfDA7cj1yKyhlPDwyKXwwO2Nbcj4+Ml09ZDtpPWY7cmV0dXJufWZ1bmN0aW9uIFZrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1drKGEpO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFdrKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2U9aTtjW2I+PjJdPTEzMzkyO2Q9YisxMnwwO2o9Y1tkPj4yXXwwO2Y9Yis4fDA7az1jW2Y+PjJdfDA7aWYoKGp8MCkhPShrfDApKXtoPTA7d2hpbGUoMSl7bD1jW2srKGg8PDIpPj4yXXwwO2lmKChsfDApIT0wKXtqPWwrNHwwO2s9Y1tqPj4yXXwwO2Nbaj4+Ml09aysgLTE7aWYoKGt8MCk9PTApe2xjW2NbKGNbbD4+Ml18MCkrOD4+Ml0mMjU1XShsKX1qPWNbZD4+Ml18MDtrPWNbZj4+Ml18MH1oPWgrMXwwO2lmKCEoaD4+PjA8ai1rPj4yPj4+MCkpe2o9azticmVha319fWlmKCEoKGFbYisxNDQ+PjBdJjEpPT0wKT8oZz1jW2IrMTUyPj4yXXwwLChnfDApIT0wKTowKXt2bihnKTtqPWNbZj4+Ml18MH1pZigoanwwKT09MCl7aT1lO3JldHVybn1mPWNbZD4+Ml18MDtpZigoZnwwKSE9KGp8MCkpe2NbZD4+Ml09ZisofigoZisgLTQrKDAtail8MCk+Pj4yKTw8Mil9aWYoKGIrMjR8MCk9PShqfDApKXthW2IrMTM2Pj4wXT0wO2k9ZTtyZXR1cm59ZWxzZXt2bihqKTtpPWU7cmV0dXJufX0KCgoKZnVuY3Rpb24gWm4oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGhjW2EmNjNdKGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIF9uKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiAkbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gYW8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGJvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBjbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gZW8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGZvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBnbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gaG8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGlvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBqbyhhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2ljW2EmNjNdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24ga28oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIGxvKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBtbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gbm8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIG9vKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBwbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gcW8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIHJvKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBzbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gdG8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIHVvKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtqY1thJjMxXShifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiB2byhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gd28oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIHhvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiB5byhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gem8oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIEFvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiBCbyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gQ28oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIERvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiBFbyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gRm8oYSl7YT1hfDA7cmV0dXJuIGtjW2EmMzFdKCl8MH1mdW5jdGlvbiBHbygpe3JldHVybiBrYSgwKXwwfWZ1bmN0aW9uIEhvKCl7cmV0dXJuIGthKDEpfDB9ZnVuY3Rpb24gSW8oKXtyZXR1cm4ga2EoMil8MH1mdW5jdGlvbiBKbygpe3JldHVybiBrYSgzKXwwfWZ1bmN0aW9uIEtvKCl7cmV0dXJuIGthKDQpfDB9ZnVuY3Rpb24gTG8oKXtyZXR1cm4ga2EoNSl8MH1mdW5jdGlvbiBNbygpe3JldHVybiBrYSg2KXwwfWZ1bmN0aW9uIE5vKCl7cmV0dXJuIGthKDcpfDB9ZnVuY3Rpb24gT28oKXtyZXR1cm4ga2EoOCl8MH1mdW5jdGlvbiBQbygpe3JldHVybiBrYSg5KXwwfWZ1bmN0aW9uIFFvKGEsYil7YT1hfDA7Yj1ifDA7bGNbYSYyNTVdKGJ8MCl9ZnVuY3Rpb24gUm8oYSl7YT1hfDA7a2EoMCxhfDApfWZ1bmN0aW9uIFNvKGEpe2E9YXwwO2thKDEsYXwwKX1mdW5jdGlvbiBUbyhhKXthPWF8MDtrYSgyLGF8MCl9ZnVuY3Rpb24gVW8oYSl7YT1hfDA7a2EoMyxhfDApfWZ1bmN0aW9uIFZvKGEpe2E9YXwwO2thKDQsYXwwKX1mdW5jdGlvbiBXbyhhKXthPWF8MDtrYSg1LGF8MCl9ZnVuY3Rpb24gWG8oYSl7YT1hfDA7a2EoNixhfDApfWZ1bmN0aW9uIFlvKGEpe2E9YXwwO2thKDcsYXwwKX1mdW5jdGlvbiBabyhhKXthPWF8MDtrYSg4LGF8MCl9ZnVuY3Rpb24gX28oYSl7YT1hfDA7a2EoOSxhfDApfWZ1bmN0aW9uICRvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDttY1thJjEyN10oYnwwLGN8MCl9ZnVuY3Rpb24gYXAoYSxiKXthPWF8MDtiPWJ8MDtrYSgwLGF8MCxifDApfWZ1bmN0aW9uIGJwKGEsYil7YT1hfDA7Yj1ifDA7a2EoMSxhfDAsYnwwKX1mdW5jdGlvbiBjcChhLGIpe2E9YXwwO2I9YnwwO2thKDIsYXwwLGJ8MCl9ZnVuY3Rpb24gZHAoYSxiKXthPWF8MDtiPWJ8MDtrYSgzLGF8MCxifDApfWZ1bmN0aW9uIGVwKGEsYil7YT1hfDA7Yj1ifDA7a2EoNCxhfDAsYnwwKX1mdW5jdGlvbiBmcChhLGIpe2E9YXwwO2I9YnwwO2thKDUsYXwwLGJ8MCl9ZnVuY3Rpb24gZ3AoYSxiKXthPWF8MDtiPWJ8MDtrYSg2LGF8MCxifDApfWZ1bmN0aW9uIGhwKGEsYil7YT1hfDA7Yj1ifDA7a2EoNyxhfDAsYnwwKX1mdW5jdGlvbiBpcChhLGIpe2E9YXwwO2I9YnwwO2thKDgsYXwwLGJ8MCl9ZnVuY3Rpb24ganAoYSxiKXthPWF8MDtiPWJ8MDtrYSg5LGF8MCxifDApfWZ1bmN0aW9uIGtwKGEsYixjLGQsZSxmLGcsaCxpLGope2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2o9anwwO25jW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDAsanwwKX1mdW5jdGlvbiBscChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gbXAoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIG5wKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiBvcChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gcHAoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIHFwKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiBycChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gc3AoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIHRwKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiB1cChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gdnAoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gb2NbYSYxMjddKGJ8MCl8MH1mdW5jdGlvbiB3cChhKXthPWF8MDtyZXR1cm4ga2EoMCxhfDApfDB9ZnVuY3Rpb24geHAoYSl7YT1hfDA7cmV0dXJuIGthKDEsYXwwKXwwfWZ1bmN0aW9uIHlwKGEpe2E9YXwwO3JldHVybiBrYSgyLGF8MCl8MH1mdW5jdGlvbiB6cChhKXthPWF8MDtyZXR1cm4ga2EoMyxhfDApfDB9ZnVuY3Rpb24gQXAoYSl7YT1hfDA7cmV0dXJuIGthKDQsYXwwKXwwfWZ1bmN0aW9uIEJwKGEpe2E9YXwwO3JldHVybiBrYSg1LGF8MCl8MH1mdW5jdGlvbiBDcChhKXthPWF8MDtyZXR1cm4ga2EoNixhfDApfDB9ZnVuY3Rpb24gRHAoYSl7YT1hfDA7cmV0dXJuIGthKDcsYXwwKXwwfWZ1bmN0aW9uIEVwKGEpe2E9YXwwO3JldHVybiBrYSg4LGF8MCl8MH1mdW5jdGlvbiBGcChhKXthPWF8MDtyZXR1cm4ga2EoOSxhfDApfDB9ZnVuY3Rpb24gR3AoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPStoO3BjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLCtoKX1mdW5jdGlvbiBIcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIElwKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoMSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gSnAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBLcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIExwKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoNCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gTXAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBOcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIE9wKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoNyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gUHAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBRcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIFJwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3FjW2EmMzFdKGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBTcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoMCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gVHAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDEsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFVwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSgyLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBWcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoMyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gV3AoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDQsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFhwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSg1LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBZcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoNixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gWnAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDcsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIF9wKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSg4LGF8MCxifDAsY3wwKX1mdW5jdGlvbiAkcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoOSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gYXEoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztyY1thJjMxXShifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBicShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSgwLGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGNxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24gZHEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBlcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSgzLGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGZxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24gZ3EoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBocShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSg2LGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGlxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24ganEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBrcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSg5LGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGxxKGEpe2E9YXwwO3NjW2EmMzFdKCl9ZnVuY3Rpb24gbXEoKXtrYSgwKX1mdW5jdGlvbiBucSgpe2thKDEpfWZ1bmN0aW9uIG9xKCl7a2EoMil9ZnVuY3Rpb24gcHEoKXtrYSgzKX1mdW5jdGlvbiBxcSgpe2thKDQpfWZ1bmN0aW9uIHJxKCl7a2EoNSl9ZnVuY3Rpb24gc3EoKXtrYSg2KX1mdW5jdGlvbiB0cSgpe2thKDcpfWZ1bmN0aW9uIHVxKCl7a2EoOCl9ZnVuY3Rpb24gdnEoKXtrYSg5KX1mdW5jdGlvbiB3cShhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7cmV0dXJuIHRjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfDB9ZnVuY3Rpb24geHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIHlxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiB6cShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gQXEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEJxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiBDcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gRHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEVxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiBGcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gR3EoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEhxKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIHVjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBJcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gSnEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEtxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBMcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gTXEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIE5xKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBPcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gUHEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFFxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBScShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gU3EoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO3ZjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIFRxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBVcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gVnEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIFdxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBYcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gWXEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIFpxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBfcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gJHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIGFyKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBicihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt3Y1thJjYzXShifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gY3IoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGRyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBlcihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gZnIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGdyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBocihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gaXIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGpyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBrcihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gbHIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIG1yKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4geGNbYSY2M10oYnwwLGN8MCl8MH1mdW5jdGlvbiBucihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSgwLGF8MCxifDApfDB9ZnVuY3Rpb24gb3IoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoMSxhfDAsYnwwKXwwfWZ1bmN0aW9uIHByKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDIsYXwwLGJ8MCl8MH1mdW5jdGlvbiBxcihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSgzLGF8MCxifDApfDB9ZnVuY3Rpb24gcnIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoNCxhfDAsYnwwKXwwfWZ1bmN0aW9uIHNyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDUsYXwwLGJ8MCl8MH1mdW5jdGlvbiB0cihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSg2LGF8MCxifDApfDB9ZnVuY3Rpb24gdXIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoNyxhfDAsYnwwKXwwfWZ1bmN0aW9uIHZyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDgsYXwwLGJ8MCl8MH1mdW5jdGlvbiB3cihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSg5LGF8MCxifDApfDB9ZnVuY3Rpb24geHIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB5Y1thJjYzXShifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIHlyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiB6cihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gQXIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEJyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBDcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gRHIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEVyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBGcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gR3IoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEhyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBJcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3pjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gSnIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEtyKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBMcihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gTXIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIE5yKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBPcihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gUHIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoNixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFFyKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBScihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gU3IoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFRyKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtmYSgwKTtyZXR1cm4gMH1mdW5jdGlvbiBVcihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtmYSgxKX1mdW5jdGlvbiBWcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2ZhKDIpfWZ1bmN0aW9uIFdyKCl7ZmEoMyk7cmV0dXJuIDB9ZnVuY3Rpb24gWHIoYSl7YT1hfDA7ZmEoNCl9ZnVuY3Rpb24gWXIoYSxiKXthPWF8MDtiPWJ8MDtmYSg1KX1mdW5jdGlvbiBacihhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7ZmEoNil9ZnVuY3Rpb24gX3IoYSl7YT1hfDA7ZmEoNyk7cmV0dXJuIDB9ZnVuY3Rpb24gJHIoYSl7YT1hfDA7cmV0dXJuIEFiKGF8MCl8MH1mdW5jdGlvbiBhcyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2ZhKDgpfWZ1bmN0aW9uIGJzKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtmYSg5KX1mdW5jdGlvbiBjcyhhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtmYSgxMCl9ZnVuY3Rpb24gZHMoKXtmYSgxMSl9ZnVuY3Rpb24gZXMoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtmYSgxMik7cmV0dXJuIDB9ZnVuY3Rpb24gZnMoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZmEoMTMpO3JldHVybiAwfWZ1bmN0aW9uIGdzKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7ZmEoMTQpfWZ1bmN0aW9uIGhzKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtmYSgxNSl9ZnVuY3Rpb24gaXMoYSxiKXthPWF8MDtiPWJ8MDtmYSgxNik7cmV0dXJuIDB9ZnVuY3Rpb24ganMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmYSgxNyk7cmV0dXJuIDB9ZnVuY3Rpb24ga3MoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZmEoMTgpfQoKCgoKLy8gRU1TQ1JJUFRFTl9FTkRfRlVOQ1MKdmFyIGhjPVtUcixUcixfbixUciwkbixUcixhbyxUcixibyxUcixjbyxUcixlbyxUcixmbyxUcixnbyxUcixobyxUcixpbyxUcix2ZyxBZyxFZyxKZyxPZyxrZixTZyx4ZixQZixRZixEaCxJaCxLayxQayxxbCxzbCx2bCxibCxnbCxpbCxsbCxobixtbixnbixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcl07dmFyIGljPVtVcixVcixrbyxVcixsbyxVcixtbyxVcixubyxVcixvbyxVcixwbyxVcixxbyxVcixybyxVcixzbyxVcix0byxVcixMaCxOaCxPaCxQaCxRaCxSaCxTaCxUaCxVaCxWaCxXaCwkaCxiaSxjaSxkaSxlaSxmaSxnaSxoaSxpaSxqaSxraSx5aSxBaSxNaSxPaSxYaSxZaSxaaSxfaSwkaSxnaixoaixpaixqaixraixCayxIayxVcixVcixVcixVcl07dmFyIGpjPVtWcixWcix2byxWcix3byxWcix4byxWcix5byxWcix6byxWcixBbyxWcixCbyxWcixDbyxWcixEbyxWcixFbyxWcixxbixwbixvbixWcixWcixWcixWcixWcixWcixWcl07dmFyIGtjPVtXcixXcixHbyxXcixIbyxXcixJbyxXcixKbyxXcixLbyxXcixMbyxXcixNbyxXcixObyxXcixPbyxXcixQbyxXcixPYyxXcixXcixXcixXcixXcixXcixXcixXcixXcl07dmFyIGxjPVtYcixYcixSbyxYcixTbyxYcixUbyxYcixVbyxYcixWbyxYcixXbyxYcixYbyxYcixZbyxYcixabyxYcixfbyxYcixUYyxVYyxoZCxpZCxuZCxvZCx2ZCx3ZCx4ZCx6ZCxCZCxDZCxEZCxFZCxGZCxIZCxKZCxLZCxMZCxNZCxOZCxQZCxSZCxTZCxUZCxVZCxWZCxYZCxZZCwkZCxaZCxhZSxfZCxiZSxWZyxVZyxYZyxXZyxjZSxkZSxqZSxrZSxsZSxuZSx0ZSx1ZSxzZSx2ZSxyZSx3ZSx4ZSx5ZSx6ZSxBZSxCZSxDZSxFZSxGZSxJZSxKZSxPZSxQZSxOZSxRZSxxZSxSZSxUZSxVZSxWZSxYZSxZZSxaZSxfZSxhZixmZixnZixtZixuZix0Zix1Zix6ZixBZixJZixIZixMZixLZixOZixfZixaZixUZiwkZixYZixhZyx0ZyxzZyxIZyxHZyxfZyxaZyxhaCwkZyxkaCxjaCxmaCxlaCxuaCxtaCxwaCxvaCx2aCx1aCxyZyx3aCx0aCx4aCx6aCx5aCxfayxGaCxFaCxLaCxKaCxfaCxaaCx0aSxzaSxIaSxHaSxWaSxVaSxlaixkaixvaixuaixyaixxaix1aix0aixGaixFaixRaixQaiwkaixfaixrayxqayxzayxyayx4ayx3ayxEayxDayxKayxJayxPayxOayxXayxWayxvbCxubCxTayxGbCxlbSxkbSxnbSxmbSxBaCxaayxhbCx4bCxObCxWbCxibSxjbSxZbSxYbSxfbSxjbiwkbSxhbixmbixibixkbixlbix6bix5biwkayxEZSxiZyxSYyxlZixtayx2bixUbSxTbSxSbSxRbSxQbSxPbSxmZyxtZyxYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcl07dmFyIG1jPVtZcixZcixhcCxZcixicCxZcixjcCxZcixkcCxZcixlcCxZcixmcCxZcixncCxZcixocCxZcixpcCxZcixqcCxZcixnZCxBZCxJZCxRZCx1ZyxIZSxLZSxoZixvZix2ZixCZixJZyx4aix5aix6aixBaixDaixEaixJaixKaixLaixMaixOaixPaixUaixVaixWaixXaixZaixaaixjayxkayxlayxmayxoayxpayxNayxSayxsbSxubSxwbSxtbSxvbSxxbSxKYyxZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcl07dmFyIG5jPVtacixacixscCxacixtcCxacixucCxacixvcCxacixwcCxacixxcCxacixycCxacixzcCxacix0cCxacix1cCxacixhaixsaixacixacixacixacixacixacixacixacl07dmFyIG9jPVtfcixfcix3cCxfcix4cCxfcix5cCxfcix6cCxfcixBcCxfcixCcCxfcixDcCxfcixEcCxfcixFcCxfcixGcCxfcixNZix5Zyx6ZyxnZSxDZywkcixHZSxNZSxqZixOZyxQZyxRZyxNZyxwZixxZix3ZixCZyxDZixEZixKZixSZixVZixyaCxXaSxybSx0bSx2bSxCbSxEbSx4bSx6bSxmaixzbSx1bSx3bSxDbSxFbSx5bSxBbSx2aix3aixCaixHaixIaixNaixSaixTaixYaixhayxiayxnayxKbCxLbCxNbCxobSxqbSxpbSxrbSxCbCxDbCxFbCxSbCxTbCxVbCxabCxfbCxhbSxabSxBbixRYyxQYyxLYyxfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcl07dmFyIHBjPVthcyxhcyxIcCxhcyxJcCxhcyxKcCxhcyxLcCxhcyxMcCxhcyxNcCxhcyxOcCxhcyxPcCxhcyxQcCxhcyxRcCxhcyx5ayxFayxhcyxhcyxhcyxhcyxhcyxhcyxhcyxhc107dmFyIHFjPVticyxicyxTcCxicyxUcCxicyxVcCxicyxWcCxicyxXcCxicyxYcCxicyxZcCxicyxacCxicyxfcCxicywkcCxicyxPZixTZixXZixWZixzaCxJYyxNYyxicyxicyxic107dmFyIHJjPVtjcyxjcyxicSxjcyxjcSxjcyxkcSxjcyxlcSxjcyxmcSxjcyxncSxjcyxocSxjcyxpcSxjcyxqcSxjcyxrcSxjcyxCaSxFaSxQaSxSaSxjcyxjcyxjcyxjcyxjcyxjc107dmFyIHNjPVtkcyxkcyxtcSxkcyxucSxkcyxvcSxkcyxwcSxkcyxxcSxkcyxycSxkcyxzcSxkcyx0cSxkcyx1cSxkcyx2cSxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkc107dmFyIHRjPVtlcyxlcyx4cSxlcyx5cSxlcyx6cSxlcyxBcSxlcyxCcSxlcyxDcSxlcyxEcSxlcyxFcSxlcyxGcSxlcyxHcSxlcyxHbCxIbCx5bCx6bCxPbCxQbCxXbCxYbCxlcyxlc107dmFyIHVjPVtmcyxmcyxJcSxmcyxKcSxmcyxLcSxmcyxMcSxmcyxNcSxmcyxOcSxmcyxPcSxmcyxQcSxmcyxRcSxmcyxScSxmcyx1bCxjbCxkbCxlbCxrbCxmcyxmcyxmcyxmcyxmc107dmFyIHZjPVtncyxncyxUcSxncyxVcSxncyxWcSxncyxXcSxncyxYcSxncyxZcSxncyxacSxncyxfcSxncywkcSxncyxhcixncyxwaixzaixsayxwayx0ayx2ayxncyxncyxncyxnc107dmFyIHdjPVtocyxocyxjcixocyxkcixocyxlcixocyxmcixocyxncixocyxocixocyxpcixocyxqcixocyxrcixocyxscixocyxlZSxLZyx3Zyx1aSx2aSx6aSxGaSxJaSxKaSxOaSxTaSxMayxRayx0bixzbixybixocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxoc107dmFyIHhjPVtpcyxpcyxucixpcyxvcixpcyxwcixpcyxxcixpcyxycixpcyxzcixpcyx0cixpcyx1cixpcyx2cixpcyx3cixpcyx5ZCxHZCxPZCxXZCxoZSxpZSxtZSxMZSxXZSwkZSxSZyxsZixyZixUZyxEZyx5ZixFZixGZyxwbCxybCx0bCxmbCxobCxqbCxMYyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpc107dmFyIHljPVtqcyxqcyx5cixqcyx6cixqcyxBcixqcyxCcixqcyxDcixqcyxEcixqcyxFcixqcyxGcixqcyxHcixqcyxIcixqcyxCaCxHaCx3bCxJbCxMbCxtbCxBbCxEbCxRbCxUbCxZbCwkbCxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqc107dmFyIHpjPVtrcyxrcyxKcixrcyxLcixrcyxMcixrcyxNcixrcyxOcixrcyxPcixrcyxQcixrcyxRcixrcyxScixrcyxTcixrcyxmZSxMZyx4ZyxDaCxIaCxqbixrbixsbixOYyxrc107cmV0dXJue19pNjRTdWJ0cmFjdDpIbixfZnJlZTp2bixfcmVhbGxvYzp3bixfaTY0QWRkOkluLF9tZW1tb3ZlOk1uLF9zdHJsZW46Sm4sX21lbXNldDpObixfbWFsbG9jOnVuLF9tZW1jcHk6TG4sX19fZ2V0VHlwZU5hbWU6Y2YsX2JpdHNoaWZ0NjRMc2hyOktuLF9iaXRzaGlmdDY0U2hsOk9uLF9fR0xPQkFMX19JX2E6YmYsX19HTE9CQUxfX0lfYTY1OmRmLF9fR0xPQkFMX19JX2ExNTM6R2YscnVuUG9zdFNldHM6R24sc3RhY2tBbGxvYzpBYyxzdGFja1NhdmU6QmMsc3RhY2tSZXN0b3JlOkNjLHNldFRocmV3OkRjLHNldFRlbXBSZXQwOkdjLGdldFRlbXBSZXQwOkhjLGR5bkNhbGxfaWlpaTpabixkeW5DYWxsX3ZpaWlpaWlpOmpvLGR5bkNhbGxfdmlpaWlpOnVvLGR5bkNhbGxfaTpGbyxkeW5DYWxsX3ZpOlFvLGR5bkNhbGxfdmlpOiRvLGR5bkNhbGxfdmlpaWlpaWlpaTprcCxkeW5DYWxsX2lpOnZwLGR5bkNhbGxfdmlpaWlpaWQ6R3AsZHluQ2FsbF92aWlpOlJwLGR5bkNhbGxfdmlpaWlpZDphcSxkeW5DYWxsX3Y6bHEsZHluQ2FsbF9paWlpaWlpaWk6d3EsZHluQ2FsbF9paWlpaTpIcSxkeW5DYWxsX3ZpaWlpaWlpaTpTcSxkeW5DYWxsX3ZpaWlpaWk6YnIsZHluQ2FsbF9paWk6bXIsZHluQ2FsbF9paWlpaWk6eHIsZHluQ2FsbF92aWlpaTpJcn0KLy8gRU1TQ1JJUFRFTl9FTkRfQVNNCgp9KSh7Ik1hdGgiOk1hdGgsIkludDhBcnJheSI6SW50OEFycmF5LCJJbnQxNkFycmF5IjpJbnQxNkFycmF5LCJJbnQzMkFycmF5IjpJbnQzMkFycmF5LCJVaW50OEFycmF5IjpVaW50OEFycmF5LCJVaW50MTZBcnJheSI6VWludDE2QXJyYXksIlVpbnQzMkFycmF5IjpVaW50MzJBcnJheSwiRmxvYXQzMkFycmF5IjpGbG9hdDMyQXJyYXksIkZsb2F0NjRBcnJheSI6RmxvYXQ2NEFycmF5fSx7ImFib3J0IjphYm9ydCwiYXNzZXJ0Ijphc3NlcnQsImFzbVByaW50SW50Ijphc21QcmludEludCwiYXNtUHJpbnRGbG9hdCI6YXNtUHJpbnRGbG9hdCwibWluIjpNYXRoX21pbiwianNDYWxsIjpqc0NhbGwsImludm9rZV9paWlpIjppbnZva2VfaWlpaSwiaW52b2tlX3ZpaWlpaWlpIjppbnZva2VfdmlpaWlpaWksImludm9rZV92aWlpaWkiOmludm9rZV92aWlpaWksImludm9rZV9pIjppbnZva2VfaSwiaW52b2tlX3ZpIjppbnZva2VfdmksImludm9rZV92aWkiOmludm9rZV92aWksImludm9rZV92aWlpaWlpaWlpIjppbnZva2VfdmlpaWlpaWlpaSwiaW52b2tlX2lpIjppbnZva2VfaWksImludm9rZV92aWlpaWlpZCI6aW52b2tlX3ZpaWlpaWlkLCJpbnZva2VfdmlpaSI6aW52b2tlX3ZpaWksImludm9rZV92aWlpaWlkIjppbnZva2VfdmlpaWlpZCwiaW52b2tlX3YiOmludm9rZV92LCJpbnZva2VfaWlpaWlpaWlpIjppbnZva2VfaWlpaWlpaWlpLCJpbnZva2VfaWlpaWkiOmludm9rZV9paWlpaSwiaW52b2tlX3ZpaWlpaWlpaSI6aW52b2tlX3ZpaWlpaWlpaSwiaW52b2tlX3ZpaWlpaWkiOmludm9rZV92aWlpaWlpLCJpbnZva2VfaWlpIjppbnZva2VfaWlpLCJpbnZva2VfaWlpaWlpIjppbnZva2VfaWlpaWlpLCJpbnZva2VfdmlpaWkiOmludm9rZV92aWlpaSwiX2ZhYnMiOl9mYWJzLCJfc3NjYW5mIjpfc3NjYW5mLCJfcHRocmVhZF9jb25kX3dhaXQiOl9wdGhyZWFkX2NvbmRfd2FpdCwiX19fY3R5cGVfdG9sb3dlcl9sb2MiOl9fX2N0eXBlX3RvbG93ZXJfbG9jLCJfYXNwcmludGYiOl9hc3ByaW50ZiwiX19lbWJpbmRfcmVnaXN0ZXJfdm9pZCI6X19lbWJpbmRfcmVnaXN0ZXJfdm9pZCwiX3NlbmQiOl9zZW5kLCJfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyI6X19lbWJpbmRfcmVnaXN0ZXJfbWVtb3J5X3ZpZXcsIl92c3NjYW5mIjpfdnNzY2FuZiwiX19fY3R5cGVfYl9sb2MiOl9fX2N0eXBlX2JfbG9jLCJfX1pTdDl0ZXJtaW5hdGV2IjpfX1pTdDl0ZXJtaW5hdGV2LCJfZm1vZCI6X2Ztb2QsIl9fX2N4YV9ndWFyZF9hY3F1aXJlIjpfX19jeGFfZ3VhcmRfYWNxdWlyZSwiX19fc2V0RXJyTm8iOl9fX3NldEVyck5vLCJfX19jeGFfaXNfbnVtYmVyX3R5cGUiOl9fX2N4YV9pc19udW1iZXJfdHlwZSwiX19fZ3h4X3BlcnNvbmFsaXR5X3YwIjpfX19neHhfcGVyc29uYWxpdHlfdjAsIl9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIiOl9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIsIl91bmdldGMiOl91bmdldGMsIl9fX2Fzc2VydF9mYWlsIjpfX19hc3NlcnRfZmFpbCwiX19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiI6X19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiwiX19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYiOl9fWlN0MTh1bmNhdWdodF9leGNlcHRpb252LCJfX19jdHlwZV90b3VwcGVyX2xvYyI6X19fY3R5cGVfdG91cHBlcl9sb2MsIl9mZmx1c2giOl9mZmx1c2gsIl9fX2N4YV9ndWFyZF9yZWxlYXNlIjpfX19jeGFfZ3VhcmRfcmVsZWFzZSwiX19hZGREYXlzIjpfX2FkZERheXMsIl9fX2Vycm5vX2xvY2F0aW9uIjpfX19lcnJub19sb2NhdGlvbiwiX3B3cml0ZSI6X3B3cml0ZSwiX3N0cmVycm9yX3IiOl9zdHJlcnJvcl9yLCJfc3RyZnRpbWVfbCI6X3N0cmZ0aW1lX2wsIl9fZm9ybWF0U3RyaW5nIjpfX2Zvcm1hdFN0cmluZywiX19yZWFsbHlOZWdhdGl2ZSI6X19yZWFsbHlOZWdhdGl2ZSwiX3NicmsiOl9zYnJrLCJfdXNlbG9jYWxlIjpfdXNlbG9jYWxlLCJfY2F0Z2V0cyI6X2NhdGdldHMsIl9uZXdsb2NhbGUiOl9uZXdsb2NhbGUsIl9zbnByaW50ZiI6X3NucHJpbnRmLCJfX19jeGFfYmVnaW5fY2F0Y2giOl9fX2N4YV9iZWdpbl9jYXRjaCwiX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZyI6X2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZywiX2ZpbGVubyI6X2ZpbGVubywiX19lbWJpbmRfcmVnaXN0ZXJfYm9vbCI6X19lbWJpbmRfcmVnaXN0ZXJfYm9vbCwiX19fcmVzdW1lRXhjZXB0aW9uIjpfX19yZXN1bWVFeGNlcHRpb24sIl9fX2N4YV9maW5kX21hdGNoaW5nX2NhdGNoIjpfX19jeGFfZmluZF9tYXRjaGluZ19jYXRjaCwiX3N5c2NvbmYiOl9zeXNjb25mLCJfX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nIjpfX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nLCJfc3RyZnRpbWUiOl9zdHJmdGltZSwiX19hcnJheVN1bSI6X19hcnJheVN1bSwiX19fY3hhX3Rocm93IjpfX19jeGFfdGhyb3csIl9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsIjpfX2VtYmluZF9yZWdpc3Rlcl9lbXZhbCwiX19leGl0IjpfX2V4aXQsIl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiwiX19aTktTdDlleGNlcHRpb240d2hhdEV2IjpfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYsIl9wdGhyZWFkX211dGV4X2Rlc3Ryb3kiOl9wdGhyZWFkX211dGV4X2Rlc3Ryb3ksIl9wdGhyZWFkX211dGV4X3VubG9jayI6X3B0aHJlYWRfbXV0ZXhfdW5sb2NrLCJfZnJlYWQiOl9mcmVhZCwiX3B0aHJlYWRfY29uZF9icm9hZGNhc3QiOl9wdGhyZWFkX2NvbmRfYnJvYWRjYXN0LCJfbWtwb3J0IjpfbWtwb3J0LCJfc3ByaW50ZiI6X3NwcmludGYsIl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzcywiX3Zhc3ByaW50ZiI6X3Zhc3ByaW50ZiwiX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmciOl9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF93c3RyaW5nLCJfd3JpdGUiOl93cml0ZSwiX19pc0xlYXBZZWFyIjpfX2lzTGVhcFllYXIsIl9fc2NhblN0cmluZyI6X19zY2FuU3RyaW5nLCJfc3RyZXJyb3IiOl9zdHJlcnJvciwiX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IiOl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yLCJfcmVjdiI6X3JlY3YsIl92c25wcmludGYiOl92c25wcmludGYsIl9fWk5TdDlleGNlcHRpb25EMkV2IjpfX1pOU3Q5ZXhjZXB0aW9uRDJFdiwiX2NvcHlzaWduIjpfY29weXNpZ24sIl9mZ2V0YyI6X2ZnZXRjLCJfX19jeGFfZG9lc19pbmhlcml0IjpfX19jeGFfZG9lc19pbmhlcml0LCJfZnJlZWxvY2FsZSI6X2ZyZWVsb2NhbGUsIl9yZWFkIjpfcmVhZCwiX2Fib3J0IjpfYWJvcnQsIl9jYXRjbG9zZSI6X2NhdGNsb3NlLCJfZndyaXRlIjpfZndyaXRlLCJfdGltZSI6X3RpbWUsIl9wdGhyZWFkX211dGV4X2xvY2siOl9wdGhyZWFkX211dGV4X2xvY2ssIl9fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0IjpfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdCwiX3ByZWFkIjpfcHJlYWQsIl9hdGV4aXQiOl9hdGV4aXQsIl9jYXRvcGVuIjpfY2F0b3BlbiwiX2V4aXQiOl9leGl0LCJfX2dldEZsb2F0IjpfX2dldEZsb2F0LCJTVEFDS1RPUCI6U1RBQ0tUT1AsIlNUQUNLX01BWCI6U1RBQ0tfTUFYLCJ0ZW1wRG91YmxlUHRyIjp0ZW1wRG91YmxlUHRyLCJBQk9SVCI6QUJPUlQsImN0dHpfaTgiOmN0dHpfaTgsImN0bHpfaTgiOmN0bHpfaTgsIk5hTiI6TmFOLCJJbmZpbml0eSI6SW5maW5pdHksIl9fWlRJU3Q5ZXhjZXB0aW9uIjpfX1pUSVN0OWV4Y2VwdGlvbiwiX19fZHNvX2hhbmRsZSI6X19fZHNvX2hhbmRsZSwiX3N0ZGVyciI6X3N0ZGVyciwiX3N0ZGluIjpfc3RkaW4sIl9zdGRvdXQiOl9zdGRvdXR9LGJ1ZmZlcik7dmFyIF9pNjRTdWJ0cmFjdD1Nb2R1bGVbIl9pNjRTdWJ0cmFjdCJdPWFzbVsiX2k2NFN1YnRyYWN0Il07dmFyIF9mcmVlPU1vZHVsZVsiX2ZyZWUiXT1hc21bIl9mcmVlIl07dmFyIF9yZWFsbG9jPU1vZHVsZVsiX3JlYWxsb2MiXT1hc21bIl9yZWFsbG9jIl07dmFyIF9pNjRBZGQ9TW9kdWxlWyJfaTY0QWRkIl09YXNtWyJfaTY0QWRkIl07dmFyIF9tZW1tb3ZlPU1vZHVsZVsiX21lbW1vdmUiXT1hc21bIl9tZW1tb3ZlIl07dmFyIF9zdHJsZW49TW9kdWxlWyJfc3RybGVuIl09YXNtWyJfc3RybGVuIl07dmFyIF9tZW1zZXQ9TW9kdWxlWyJfbWVtc2V0Il09YXNtWyJfbWVtc2V0Il07dmFyIF9tYWxsb2M9TW9kdWxlWyJfbWFsbG9jIl09YXNtWyJfbWFsbG9jIl07dmFyIF9tZW1jcHk9TW9kdWxlWyJfbWVtY3B5Il09YXNtWyJfbWVtY3B5Il07dmFyIF9fX2dldFR5cGVOYW1lPU1vZHVsZVsiX19fZ2V0VHlwZU5hbWUiXT1hc21bIl9fX2dldFR5cGVOYW1lIl07dmFyIF9iaXRzaGlmdDY0THNocj1Nb2R1bGVbIl9iaXRzaGlmdDY0THNociJdPWFzbVsiX2JpdHNoaWZ0NjRMc2hyIl07dmFyIF9iaXRzaGlmdDY0U2hsPU1vZHVsZVsiX2JpdHNoaWZ0NjRTaGwiXT1hc21bIl9iaXRzaGlmdDY0U2hsIl07dmFyIF9fR0xPQkFMX19JX2E9TW9kdWxlWyJfX0dMT0JBTF9fSV9hIl09YXNtWyJfX0dMT0JBTF9fSV9hIl07dmFyIF9fR0xPQkFMX19JX2E2NT1Nb2R1bGVbIl9fR0xPQkFMX19JX2E2NSJdPWFzbVsiX19HTE9CQUxfX0lfYTY1Il07dmFyIF9fR0xPQkFMX19JX2ExNTM9TW9kdWxlWyJfX0dMT0JBTF9fSV9hMTUzIl09YXNtWyJfX0dMT0JBTF9fSV9hMTUzIl07dmFyIHJ1blBvc3RTZXRzPU1vZHVsZVsicnVuUG9zdFNldHMiXT1hc21bInJ1blBvc3RTZXRzIl07dmFyIGR5bkNhbGxfaWlpaT1Nb2R1bGVbImR5bkNhbGxfaWlpaSJdPWFzbVsiZHluQ2FsbF9paWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWk9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlpIl09YXNtWyJkeW5DYWxsX3ZpaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpPU1vZHVsZVsiZHluQ2FsbF92aWlpaWkiXT1hc21bImR5bkNhbGxfdmlpaWlpIl07dmFyIGR5bkNhbGxfaT1Nb2R1bGVbImR5bkNhbGxfaSJdPWFzbVsiZHluQ2FsbF9pIl07dmFyIGR5bkNhbGxfdmk9TW9kdWxlWyJkeW5DYWxsX3ZpIl09YXNtWyJkeW5DYWxsX3ZpIl07dmFyIGR5bkNhbGxfdmlpPU1vZHVsZVsiZHluQ2FsbF92aWkiXT1hc21bImR5bkNhbGxfdmlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpaWlpaSJdPWFzbVsiZHluQ2FsbF92aWlpaWlpaWlpIl07dmFyIGR5bkNhbGxfaWk9TW9kdWxlWyJkeW5DYWxsX2lpIl09YXNtWyJkeW5DYWxsX2lpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWQ9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlkIl09YXNtWyJkeW5DYWxsX3ZpaWlpaWlkIl07dmFyIGR5bkNhbGxfdmlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaSJdPWFzbVsiZHluQ2FsbF92aWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpZD1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpZCJdPWFzbVsiZHluQ2FsbF92aWlpaWlkIl07dmFyIGR5bkNhbGxfdj1Nb2R1bGVbImR5bkNhbGxfdiJdPWFzbVsiZHluQ2FsbF92Il07dmFyIGR5bkNhbGxfaWlpaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF9paWlpaWlpaWkiXT1hc21bImR5bkNhbGxfaWlpaWlpaWlpIl07dmFyIGR5bkNhbGxfaWlpaWk9TW9kdWxlWyJkeW5DYWxsX2lpaWlpIl09YXNtWyJkeW5DYWxsX2lpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF92aWlpaWlpaWkiXT1hc21bImR5bkNhbGxfdmlpaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpaSJdPWFzbVsiZHluQ2FsbF92aWlpaWlpIl07dmFyIGR5bkNhbGxfaWlpPU1vZHVsZVsiZHluQ2FsbF9paWkiXT1hc21bImR5bkNhbGxfaWlpIl07dmFyIGR5bkNhbGxfaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF9paWlpaWkiXT1hc21bImR5bkNhbGxfaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWk9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpIl09YXNtWyJkeW5DYWxsX3ZpaWlpIl07UnVudGltZS5zdGFja0FsbG9jPWFzbVsic3RhY2tBbGxvYyJdO1J1bnRpbWUuc3RhY2tTYXZlPWFzbVsic3RhY2tTYXZlIl07UnVudGltZS5zdGFja1Jlc3RvcmU9YXNtWyJzdGFja1Jlc3RvcmUiXTtSdW50aW1lLnNldFRlbXBSZXQwPWFzbVsic2V0VGVtcFJldDAiXTtSdW50aW1lLmdldFRlbXBSZXQwPWFzbVsiZ2V0VGVtcFJldDAiXTt2YXIgaTY0TWF0aD0oZnVuY3Rpb24oKXt2YXIgZ29vZz17bWF0aDp7fX07Z29vZy5tYXRoLkxvbmc9KGZ1bmN0aW9uKGxvdyxoaWdoKXt0aGlzLmxvd189bG93fDA7dGhpcy5oaWdoXz1oaWdofDB9KTtnb29nLm1hdGguTG9uZy5JbnRDYWNoZV89e307Z29vZy5tYXRoLkxvbmcuZnJvbUludD0oZnVuY3Rpb24odmFsdWUpe2lmKC0xMjg8PXZhbHVlJiZ2YWx1ZTwxMjgpe3ZhciBjYWNoZWRPYmo9Z29vZy5tYXRoLkxvbmcuSW50Q2FjaGVfW3ZhbHVlXTtpZihjYWNoZWRPYmope3JldHVybiBjYWNoZWRPYmp9fXZhciBvYmo9bmV3IGdvb2cubWF0aC5Mb25nKHZhbHVlfDAsdmFsdWU8MD8tMTowKTtpZigtMTI4PD12YWx1ZSYmdmFsdWU8MTI4KXtnb29nLm1hdGguTG9uZy5JbnRDYWNoZV9bdmFsdWVdPW9ian1yZXR1cm4gb2JqfSk7Z29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcj0oZnVuY3Rpb24odmFsdWUpe2lmKGlzTmFOKHZhbHVlKXx8IWlzRmluaXRlKHZhbHVlKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99ZWxzZSBpZih2YWx1ZTw9LWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjNfREJMXyl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRX1lbHNlIGlmKHZhbHVlKzE+PWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjNfREJMXyl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1BWF9WQUxVRX1lbHNlIGlmKHZhbHVlPDApe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKC12YWx1ZSkubmVnYXRlKCl9ZWxzZXtyZXR1cm4gbmV3IGdvb2cubWF0aC5Mb25nKHZhbHVlJWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMX3wwLHZhbHVlL2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMX3wwKX19KTtnb29nLm1hdGguTG9uZy5mcm9tQml0cz0oZnVuY3Rpb24obG93Qml0cyxoaWdoQml0cyl7cmV0dXJuIG5ldyBnb29nLm1hdGguTG9uZyhsb3dCaXRzLGhpZ2hCaXRzKX0pO2dvb2cubWF0aC5Mb25nLmZyb21TdHJpbmc9KGZ1bmN0aW9uKHN0cixvcHRfcmFkaXgpe2lmKHN0ci5sZW5ndGg9PTApe3Rocm93IEVycm9yKCJudW1iZXIgZm9ybWF0IGVycm9yOiBlbXB0eSBzdHJpbmciKX12YXIgcmFkaXg9b3B0X3JhZGl4fHwxMDtpZihyYWRpeDwyfHwzNjxyYWRpeCl7dGhyb3cgRXJyb3IoInJhZGl4IG91dCBvZiByYW5nZTogIityYWRpeCl9aWYoc3RyLmNoYXJBdCgwKT09Ii0iKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbVN0cmluZyhzdHIuc3Vic3RyaW5nKDEpLHJhZGl4KS5uZWdhdGUoKX1lbHNlIGlmKHN0ci5pbmRleE9mKCItIik+PTApe3Rocm93IEVycm9yKCdudW1iZXIgZm9ybWF0IGVycm9yOiBpbnRlcmlvciAiLSIgY2hhcmFjdGVyOiAnK3N0cil9dmFyIHJhZGl4VG9Qb3dlcj1nb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LDgpKTt2YXIgcmVzdWx0PWdvb2cubWF0aC5Mb25nLlpFUk87Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoO2krPTgpe3ZhciBzaXplPU1hdGgubWluKDgsc3RyLmxlbmd0aC1pKTt2YXIgdmFsdWU9cGFyc2VJbnQoc3RyLnN1YnN0cmluZyhpLGkrc2l6ZSkscmFkaXgpO2lmKHNpemU8OCl7dmFyIHBvd2VyPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsc2l6ZSkpO3Jlc3VsdD1yZXN1bHQubXVsdGlwbHkocG93ZXIpLmFkZChnb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKHZhbHVlKSl9ZWxzZXtyZXN1bHQ9cmVzdWx0Lm11bHRpcGx5KHJhZGl4VG9Qb3dlcik7cmVzdWx0PXJlc3VsdC5hZGQoZ29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcih2YWx1ZSkpfX1yZXR1cm4gcmVzdWx0fSk7Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8xNl9EQkxfPTE8PDE2O2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfREJMXz0xPDwyNDtnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF89Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8xNl9EQkxfKmdvb2cubWF0aC5Mb25nLlRXT19QV1JfMTZfREJMXztnb29nLm1hdGguTG9uZy5UV09fUFdSXzMxX0RCTF89Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8zMl9EQkxfLzI7Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl80OF9EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXypnb29nLm1hdGguTG9uZy5UV09fUFdSXzE2X0RCTF87Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl82NF9EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXypnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF87Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl82M19EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjRfREJMXy8yO2dvb2cubWF0aC5Mb25nLlpFUk89Z29vZy5tYXRoLkxvbmcuZnJvbUludCgwKTtnb29nLm1hdGguTG9uZy5PTkU9Z29vZy5tYXRoLkxvbmcuZnJvbUludCgxKTtnb29nLm1hdGguTG9uZy5ORUdfT05FPWdvb2cubWF0aC5Mb25nLmZyb21JbnQoLTEpO2dvb2cubWF0aC5Mb25nLk1BWF9WQUxVRT1nb29nLm1hdGguTG9uZy5mcm9tQml0cyg0Mjk0OTY3Mjk1fDAsMjE0NzQ4MzY0N3wwKTtnb29nLm1hdGguTG9uZy5NSU5fVkFMVUU9Z29vZy5tYXRoLkxvbmcuZnJvbUJpdHMoMCwyMTQ3NDgzNjQ4fDApO2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfPWdvb2cubWF0aC5Mb25nLmZyb21JbnQoMTw8MjQpO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS50b0ludD0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnRvTnVtYmVyPShmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZ2hfKmdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXyt0aGlzLmdldExvd0JpdHNVbnNpZ25lZCgpfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnRvU3RyaW5nPShmdW5jdGlvbihvcHRfcmFkaXgpe3ZhciByYWRpeD1vcHRfcmFkaXh8fDEwO2lmKHJhZGl4PDJ8fDM2PHJhZGl4KXt0aHJvdyBFcnJvcigicmFkaXggb3V0IG9mIHJhbmdlOiAiK3JhZGl4KX1pZih0aGlzLmlzWmVybygpKXtyZXR1cm4iMCJ9aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKHRoaXMuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRSkpe3ZhciByYWRpeExvbmc9Z29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcihyYWRpeCk7dmFyIGRpdj10aGlzLmRpdihyYWRpeExvbmcpO3ZhciByZW09ZGl2Lm11bHRpcGx5KHJhZGl4TG9uZykuc3VidHJhY3QodGhpcyk7cmV0dXJuIGRpdi50b1N0cmluZyhyYWRpeCkrcmVtLnRvSW50KCkudG9TdHJpbmcocmFkaXgpfWVsc2V7cmV0dXJuIi0iK3RoaXMubmVnYXRlKCkudG9TdHJpbmcocmFkaXgpfX12YXIgcmFkaXhUb1Bvd2VyPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsNikpO3ZhciByZW09dGhpczt2YXIgcmVzdWx0PSIiO3doaWxlKHRydWUpe3ZhciByZW1EaXY9cmVtLmRpdihyYWRpeFRvUG93ZXIpO3ZhciBpbnR2YWw9cmVtLnN1YnRyYWN0KHJlbURpdi5tdWx0aXBseShyYWRpeFRvUG93ZXIpKS50b0ludCgpO3ZhciBkaWdpdHM9aW50dmFsLnRvU3RyaW5nKHJhZGl4KTtyZW09cmVtRGl2O2lmKHJlbS5pc1plcm8oKSl7cmV0dXJuIGRpZ2l0cytyZXN1bHR9ZWxzZXt3aGlsZShkaWdpdHMubGVuZ3RoPDYpe2RpZ2l0cz0iMCIrZGlnaXRzfXJlc3VsdD0iIitkaWdpdHMrcmVzdWx0fX19KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZ2V0SGlnaEJpdHM9KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGlnaF99KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZ2V0TG93Qml0cz0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdldExvd0JpdHNVbnNpZ25lZD0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dfPj0wP3RoaXMubG93Xzpnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF8rdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdldE51bUJpdHNBYnM9KGZ1bmN0aW9uKCl7aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKHRoaXMuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRSkpe3JldHVybiA2NH1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLmdldE51bUJpdHNBYnMoKX19ZWxzZXt2YXIgdmFsPXRoaXMuaGlnaF8hPTA/dGhpcy5oaWdoXzp0aGlzLmxvd187Zm9yKHZhciBiaXQ9MzE7Yml0PjA7Yml0LS0pe2lmKCh2YWwmMTw8Yml0KSE9MCl7YnJlYWt9fXJldHVybiB0aGlzLmhpZ2hfIT0wP2JpdCszMzpiaXQrMX19KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuaXNaZXJvPShmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZ2hfPT0wJiZ0aGlzLmxvd189PTB9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuaXNOZWdhdGl2ZT0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWdoXzwwfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmlzT2RkPShmdW5jdGlvbigpe3JldHVybih0aGlzLmxvd18mMSk9PTF9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZXF1YWxzPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuaGlnaF89PW90aGVyLmhpZ2hfJiZ0aGlzLmxvd189PW90aGVyLmxvd199KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubm90RXF1YWxzPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuaGlnaF8hPW90aGVyLmhpZ2hffHx0aGlzLmxvd18hPW90aGVyLmxvd199KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubGVzc1RoYW49KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5jb21wYXJlKG90aGVyKTwwfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmxlc3NUaGFuT3JFcXVhbD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0aGlzLmNvbXBhcmUob3RoZXIpPD0wfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdyZWF0ZXJUaGFuPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuY29tcGFyZShvdGhlcik+MH0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5ncmVhdGVyVGhhbk9yRXF1YWw9KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5jb21wYXJlKG90aGVyKT49MH0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5jb21wYXJlPShmdW5jdGlvbihvdGhlcil7aWYodGhpcy5lcXVhbHMob3RoZXIpKXtyZXR1cm4gMH12YXIgdGhpc05lZz10aGlzLmlzTmVnYXRpdmUoKTt2YXIgb3RoZXJOZWc9b3RoZXIuaXNOZWdhdGl2ZSgpO2lmKHRoaXNOZWcmJiFvdGhlck5lZyl7cmV0dXJuLTF9aWYoIXRoaXNOZWcmJm90aGVyTmVnKXtyZXR1cm4gMX1pZih0aGlzLnN1YnRyYWN0KG90aGVyKS5pc05lZ2F0aXZlKCkpe3JldHVybi0xfWVsc2V7cmV0dXJuIDF9fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLm5lZ2F0ZT0oZnVuY3Rpb24oKXtpZih0aGlzLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFfWVsc2V7cmV0dXJuIHRoaXMubm90KCkuYWRkKGdvb2cubWF0aC5Mb25nLk9ORSl9fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmFkZD0oZnVuY3Rpb24ob3RoZXIpe3ZhciBhNDg9dGhpcy5oaWdoXz4+PjE2O3ZhciBhMzI9dGhpcy5oaWdoXyY2NTUzNTt2YXIgYTE2PXRoaXMubG93Xz4+PjE2O3ZhciBhMDA9dGhpcy5sb3dfJjY1NTM1O3ZhciBiNDg9b3RoZXIuaGlnaF8+Pj4xNjt2YXIgYjMyPW90aGVyLmhpZ2hfJjY1NTM1O3ZhciBiMTY9b3RoZXIubG93Xz4+PjE2O3ZhciBiMDA9b3RoZXIubG93XyY2NTUzNTt2YXIgYzQ4PTAsYzMyPTAsYzE2PTAsYzAwPTA7YzAwKz1hMDArYjAwO2MxNis9YzAwPj4+MTY7YzAwJj02NTUzNTtjMTYrPWExNitiMTY7YzMyKz1jMTY+Pj4xNjtjMTYmPTY1NTM1O2MzMis9YTMyK2IzMjtjNDgrPWMzMj4+PjE2O2MzMiY9NjU1MzU7YzQ4Kz1hNDgrYjQ4O2M0OCY9NjU1MzU7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGMxNjw8MTZ8YzAwLGM0ODw8MTZ8YzMyKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5zdWJ0cmFjdD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0aGlzLmFkZChvdGhlci5uZWdhdGUoKSl9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubXVsdGlwbHk9KGZ1bmN0aW9uKG90aGVyKXtpZih0aGlzLmlzWmVybygpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuWkVST31lbHNlIGlmKG90aGVyLmlzWmVybygpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuWkVST31pZih0aGlzLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gb3RoZXIuaXNPZGQoKT9nb29nLm1hdGguTG9uZy5NSU5fVkFMVUU6Z29vZy5tYXRoLkxvbmcuWkVST31lbHNlIGlmKG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gdGhpcy5pc09kZCgpP2dvb2cubWF0aC5Mb25nLk1JTl9WQUxVRTpnb29nLm1hdGguTG9uZy5aRVJPfWlmKHRoaXMuaXNOZWdhdGl2ZSgpKXtpZihvdGhlci5pc05lZ2F0aXZlKCkpe3JldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG90aGVyLm5lZ2F0ZSgpKX1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG90aGVyKS5uZWdhdGUoKX19ZWxzZSBpZihvdGhlci5pc05lZ2F0aXZlKCkpe3JldHVybiB0aGlzLm11bHRpcGx5KG90aGVyLm5lZ2F0ZSgpKS5uZWdhdGUoKX1pZih0aGlzLmxlc3NUaGFuKGdvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfKSYmb3RoZXIubGVzc1RoYW4oZ29vZy5tYXRoLkxvbmcuVFdPX1BXUl8yNF8pKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcih0aGlzLnRvTnVtYmVyKCkqb3RoZXIudG9OdW1iZXIoKSl9dmFyIGE0OD10aGlzLmhpZ2hfPj4+MTY7dmFyIGEzMj10aGlzLmhpZ2hfJjY1NTM1O3ZhciBhMTY9dGhpcy5sb3dfPj4+MTY7dmFyIGEwMD10aGlzLmxvd18mNjU1MzU7dmFyIGI0OD1vdGhlci5oaWdoXz4+PjE2O3ZhciBiMzI9b3RoZXIuaGlnaF8mNjU1MzU7dmFyIGIxNj1vdGhlci5sb3dfPj4+MTY7dmFyIGIwMD1vdGhlci5sb3dfJjY1NTM1O3ZhciBjNDg9MCxjMzI9MCxjMTY9MCxjMDA9MDtjMDArPWEwMCpiMDA7YzE2Kz1jMDA+Pj4xNjtjMDAmPTY1NTM1O2MxNis9YTE2KmIwMDtjMzIrPWMxNj4+PjE2O2MxNiY9NjU1MzU7YzE2Kz1hMDAqYjE2O2MzMis9YzE2Pj4+MTY7YzE2Jj02NTUzNTtjMzIrPWEzMipiMDA7YzQ4Kz1jMzI+Pj4xNjtjMzImPTY1NTM1O2MzMis9YTE2KmIxNjtjNDgrPWMzMj4+PjE2O2MzMiY9NjU1MzU7YzMyKz1hMDAqYjMyO2M0OCs9YzMyPj4+MTY7YzMyJj02NTUzNTtjNDgrPWE0OCpiMDArYTMyKmIxNithMTYqYjMyK2EwMCpiNDg7YzQ4Jj02NTUzNTtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHMoYzE2PDwxNnxjMDAsYzQ4PDwxNnxjMzIpfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmRpdj0oZnVuY3Rpb24ob3RoZXIpe2lmKG90aGVyLmlzWmVybygpKXt0aHJvdyBFcnJvcigiZGl2aXNpb24gYnkgemVybyIpfWVsc2UgaWYodGhpcy5pc1plcm8oKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99aWYodGhpcy5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFKSl7aWYob3RoZXIuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk9ORSl8fG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5ORUdfT05FKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRX1lbHNlIGlmKG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuT05FfWVsc2V7dmFyIGhhbGZUaGlzPXRoaXMuc2hpZnRSaWdodCgxKTt2YXIgYXBwcm94PWhhbGZUaGlzLmRpdihvdGhlcikuc2hpZnRMZWZ0KDEpO2lmKGFwcHJveC5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuWkVSTykpe3JldHVybiBvdGhlci5pc05lZ2F0aXZlKCk/Z29vZy5tYXRoLkxvbmcuT05FOmdvb2cubWF0aC5Mb25nLk5FR19PTkV9ZWxzZXt2YXIgcmVtPXRoaXMuc3VidHJhY3Qob3RoZXIubXVsdGlwbHkoYXBwcm94KSk7dmFyIHJlc3VsdD1hcHByb3guYWRkKHJlbS5kaXYob3RoZXIpKTtyZXR1cm4gcmVzdWx0fX19ZWxzZSBpZihvdGhlci5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKG90aGVyLmlzTmVnYXRpdmUoKSl7cmV0dXJuIHRoaXMubmVnYXRlKCkuZGl2KG90aGVyLm5lZ2F0ZSgpKX1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLmRpdihvdGhlcikubmVnYXRlKCl9fWVsc2UgaWYob3RoZXIuaXNOZWdhdGl2ZSgpKXtyZXR1cm4gdGhpcy5kaXYob3RoZXIubmVnYXRlKCkpLm5lZ2F0ZSgpfXZhciByZXM9Z29vZy5tYXRoLkxvbmcuWkVSTzt2YXIgcmVtPXRoaXM7d2hpbGUocmVtLmdyZWF0ZXJUaGFuT3JFcXVhbChvdGhlcikpe3ZhciBhcHByb3g9TWF0aC5tYXgoMSxNYXRoLmZsb29yKHJlbS50b051bWJlcigpL290aGVyLnRvTnVtYmVyKCkpKTt2YXIgbG9nMj1NYXRoLmNlaWwoTWF0aC5sb2coYXBwcm94KS9NYXRoLkxOMik7dmFyIGRlbHRhPWxvZzI8PTQ4PzE6TWF0aC5wb3coMixsb2cyLTQ4KTt2YXIgYXBwcm94UmVzPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoYXBwcm94KTt2YXIgYXBwcm94UmVtPWFwcHJveFJlcy5tdWx0aXBseShvdGhlcik7d2hpbGUoYXBwcm94UmVtLmlzTmVnYXRpdmUoKXx8YXBwcm94UmVtLmdyZWF0ZXJUaGFuKHJlbSkpe2FwcHJveC09ZGVsdGE7YXBwcm94UmVzPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoYXBwcm94KTthcHByb3hSZW09YXBwcm94UmVzLm11bHRpcGx5KG90aGVyKX1pZihhcHByb3hSZXMuaXNaZXJvKCkpe2FwcHJveFJlcz1nb29nLm1hdGguTG9uZy5PTkV9cmVzPXJlcy5hZGQoYXBwcm94UmVzKTtyZW09cmVtLnN1YnRyYWN0KGFwcHJveFJlbSl9cmV0dXJuIHJlc30pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5tb2R1bG89KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5zdWJ0cmFjdCh0aGlzLmRpdihvdGhlcikubXVsdGlwbHkob3RoZXIpKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5ub3Q9KGZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKH50aGlzLmxvd18sfnRoaXMuaGlnaF8pfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmFuZD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyh0aGlzLmxvd18mb3RoZXIubG93Xyx0aGlzLmhpZ2hfJm90aGVyLmhpZ2hfKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5vcj0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyh0aGlzLmxvd198b3RoZXIubG93Xyx0aGlzLmhpZ2hffG90aGVyLmhpZ2hfKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS54b3I9KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHModGhpcy5sb3dfXm90aGVyLmxvd18sdGhpcy5oaWdoX15vdGhlci5oaWdoXyl9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuc2hpZnRMZWZ0PShmdW5jdGlvbihudW1CaXRzKXtudW1CaXRzJj02MztpZihudW1CaXRzPT0wKXtyZXR1cm4gdGhpc31lbHNle3ZhciBsb3c9dGhpcy5sb3dfO2lmKG51bUJpdHM8MzIpe3ZhciBoaWdoPXRoaXMuaGlnaF87cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGxvdzw8bnVtQml0cyxoaWdoPDxudW1CaXRzfGxvdz4+PjMyLW51bUJpdHMpfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKDAsbG93PDxudW1CaXRzLTMyKX19fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnNoaWZ0UmlnaHQ9KGZ1bmN0aW9uKG51bUJpdHMpe251bUJpdHMmPTYzO2lmKG51bUJpdHM9PTApe3JldHVybiB0aGlzfWVsc2V7dmFyIGhpZ2g9dGhpcy5oaWdoXztpZihudW1CaXRzPDMyKXt2YXIgbG93PXRoaXMubG93XztyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHMobG93Pj4+bnVtQml0c3xoaWdoPDwzMi1udW1CaXRzLGhpZ2g+Pm51bUJpdHMpfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGhpZ2g+Pm51bUJpdHMtMzIsaGlnaD49MD8wOi0xKX19fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnNoaWZ0UmlnaHRVbnNpZ25lZD0oZnVuY3Rpb24obnVtQml0cyl7bnVtQml0cyY9NjM7aWYobnVtQml0cz09MCl7cmV0dXJuIHRoaXN9ZWxzZXt2YXIgaGlnaD10aGlzLmhpZ2hfO2lmKG51bUJpdHM8MzIpe3ZhciBsb3c9dGhpcy5sb3dfO3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyhsb3c+Pj5udW1CaXRzfGhpZ2g8PDMyLW51bUJpdHMsaGlnaD4+Pm51bUJpdHMpfWVsc2UgaWYobnVtQml0cz09MzIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyhoaWdoLDApfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGhpZ2g+Pj5udW1CaXRzLTMyLDApfX19KTt2YXIgbmF2aWdhdG9yPXthcHBOYW1lOiJNb2Rlcm4gQnJvd3NlciJ9O3ZhciBkYml0czt2YXIgY2FuYXJ5PTB4ZGVhZGJlZWZjYWZlO3ZhciBqX2xtPShjYW5hcnkmMTY3NzcyMTUpPT0xNTcxNTA3MDtmdW5jdGlvbiBCaWdJbnRlZ2VyKGEsYixjKXtpZihhIT1udWxsKWlmKCJudW1iZXIiPT10eXBlb2YgYSl0aGlzLmZyb21OdW1iZXIoYSxiLGMpO2Vsc2UgaWYoYj09bnVsbCYmInN0cmluZyIhPXR5cGVvZiBhKXRoaXMuZnJvbVN0cmluZyhhLDI1Nik7ZWxzZSB0aGlzLmZyb21TdHJpbmcoYSxiKX1mdW5jdGlvbiBuYmkoKXtyZXR1cm4gbmV3IEJpZ0ludGVnZXIobnVsbCl9ZnVuY3Rpb24gYW0xKGkseCx3LGosYyxuKXt3aGlsZSgtLW4+PTApe3ZhciB2PXgqdGhpc1tpKytdK3dbal0rYztjPU1hdGguZmxvb3Iodi82NzEwODg2NCk7d1tqKytdPXYmNjcxMDg4NjN9cmV0dXJuIGN9ZnVuY3Rpb24gYW0yKGkseCx3LGosYyxuKXt2YXIgeGw9eCYzMjc2Nyx4aD14Pj4xNTt3aGlsZSgtLW4+PTApe3ZhciBsPXRoaXNbaV0mMzI3Njc7dmFyIGg9dGhpc1tpKytdPj4xNTt2YXIgbT14aCpsK2gqeGw7bD14bCpsKygobSYzMjc2Nyk8PDE1KSt3W2pdKyhjJjEwNzM3NDE4MjMpO2M9KGw+Pj4zMCkrKG0+Pj4xNSkreGgqaCsoYz4+PjMwKTt3W2orK109bCYxMDczNzQxODIzfXJldHVybiBjfWZ1bmN0aW9uIGFtMyhpLHgsdyxqLGMsbil7dmFyIHhsPXgmMTYzODMseGg9eD4+MTQ7d2hpbGUoLS1uPj0wKXt2YXIgbD10aGlzW2ldJjE2MzgzO3ZhciBoPXRoaXNbaSsrXT4+MTQ7dmFyIG09eGgqbCtoKnhsO2w9eGwqbCsoKG0mMTYzODMpPDwxNCkrd1tqXStjO2M9KGw+PjI4KSsobT4+MTQpK3hoKmg7d1tqKytdPWwmMjY4NDM1NDU1fXJldHVybiBjfWlmKGpfbG0mJm5hdmlnYXRvci5hcHBOYW1lPT0iTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIil7QmlnSW50ZWdlci5wcm90b3R5cGUuYW09YW0yO2RiaXRzPTMwfWVsc2UgaWYoal9sbSYmbmF2aWdhdG9yLmFwcE5hbWUhPSJOZXRzY2FwZSIpe0JpZ0ludGVnZXIucHJvdG90eXBlLmFtPWFtMTtkYml0cz0yNn1lbHNle0JpZ0ludGVnZXIucHJvdG90eXBlLmFtPWFtMztkYml0cz0yOH1CaWdJbnRlZ2VyLnByb3RvdHlwZS5EQj1kYml0cztCaWdJbnRlZ2VyLnByb3RvdHlwZS5ETT0oMTw8ZGJpdHMpLTE7QmlnSW50ZWdlci5wcm90b3R5cGUuRFY9MTw8ZGJpdHM7dmFyIEJJX0ZQPTUyO0JpZ0ludGVnZXIucHJvdG90eXBlLkZWPU1hdGgucG93KDIsQklfRlApO0JpZ0ludGVnZXIucHJvdG90eXBlLkYxPUJJX0ZQLWRiaXRzO0JpZ0ludGVnZXIucHJvdG90eXBlLkYyPTIqZGJpdHMtQklfRlA7dmFyIEJJX1JNPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO3ZhciBCSV9SQz1uZXcgQXJyYXk7dmFyIHJyLHZ2O3JyPSIwIi5jaGFyQ29kZUF0KDApO2Zvcih2dj0wO3Z2PD05OysrdnYpQklfUkNbcnIrK109dnY7cnI9ImEiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpQklfUkNbcnIrK109dnY7cnI9IkEiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpQklfUkNbcnIrK109dnY7ZnVuY3Rpb24gaW50MmNoYXIobil7cmV0dXJuIEJJX1JNLmNoYXJBdChuKX1mdW5jdGlvbiBpbnRBdChzLGkpe3ZhciBjPUJJX1JDW3MuY2hhckNvZGVBdChpKV07cmV0dXJuIGM9PW51bGw/LTE6Y31mdW5jdGlvbiBibnBDb3B5VG8ocil7Zm9yKHZhciBpPXRoaXMudC0xO2k+PTA7LS1pKXJbaV09dGhpc1tpXTtyLnQ9dGhpcy50O3Iucz10aGlzLnN9ZnVuY3Rpb24gYm5wRnJvbUludCh4KXt0aGlzLnQ9MTt0aGlzLnM9eDwwPy0xOjA7aWYoeD4wKXRoaXNbMF09eDtlbHNlIGlmKHg8LTEpdGhpc1swXT14K0RWO2Vsc2UgdGhpcy50PTB9ZnVuY3Rpb24gbmJ2KGkpe3ZhciByPW5iaSgpO3IuZnJvbUludChpKTtyZXR1cm4gcn1mdW5jdGlvbiBibnBGcm9tU3RyaW5nKHMsYil7dmFyIGs7aWYoYj09MTYpaz00O2Vsc2UgaWYoYj09OClrPTM7ZWxzZSBpZihiPT0yNTYpaz04O2Vsc2UgaWYoYj09MilrPTE7ZWxzZSBpZihiPT0zMilrPTU7ZWxzZSBpZihiPT00KWs9MjtlbHNle3RoaXMuZnJvbVJhZGl4KHMsYik7cmV0dXJufXRoaXMudD0wO3RoaXMucz0wO3ZhciBpPXMubGVuZ3RoLG1pPWZhbHNlLHNoPTA7d2hpbGUoLS1pPj0wKXt2YXIgeD1rPT04P3NbaV0mMjU1OmludEF0KHMsaSk7aWYoeDwwKXtpZihzLmNoYXJBdChpKT09Ii0iKW1pPXRydWU7Y29udGludWV9bWk9ZmFsc2U7aWYoc2g9PTApdGhpc1t0aGlzLnQrK109eDtlbHNlIGlmKHNoK2s+dGhpcy5EQil7dGhpc1t0aGlzLnQtMV18PSh4JigxPDx0aGlzLkRCLXNoKS0xKTw8c2g7dGhpc1t0aGlzLnQrK109eD4+dGhpcy5EQi1zaH1lbHNlIHRoaXNbdGhpcy50LTFdfD14PDxzaDtzaCs9aztpZihzaD49dGhpcy5EQilzaC09dGhpcy5EQn1pZihrPT04JiYoc1swXSYxMjgpIT0wKXt0aGlzLnM9LTE7aWYoc2g+MCl0aGlzW3RoaXMudC0xXXw9KDE8PHRoaXMuREItc2gpLTE8PHNofXRoaXMuY2xhbXAoKTtpZihtaSlCaWdJbnRlZ2VyLlpFUk8uc3ViVG8odGhpcyx0aGlzKX1mdW5jdGlvbiBibnBDbGFtcCgpe3ZhciBjPXRoaXMucyZ0aGlzLkRNO3doaWxlKHRoaXMudD4wJiZ0aGlzW3RoaXMudC0xXT09YyktLXRoaXMudH1mdW5jdGlvbiBiblRvU3RyaW5nKGIpe2lmKHRoaXMuczwwKXJldHVybiItIit0aGlzLm5lZ2F0ZSgpLnRvU3RyaW5nKGIpO3ZhciBrO2lmKGI9PTE2KWs9NDtlbHNlIGlmKGI9PTgpaz0zO2Vsc2UgaWYoYj09MilrPTE7ZWxzZSBpZihiPT0zMilrPTU7ZWxzZSBpZihiPT00KWs9MjtlbHNlIHJldHVybiB0aGlzLnRvUmFkaXgoYik7dmFyIGttPSgxPDxrKS0xLGQsbT1mYWxzZSxyPSIiLGk9dGhpcy50O3ZhciBwPXRoaXMuREItaSp0aGlzLkRCJWs7aWYoaS0tPjApe2lmKHA8dGhpcy5EQiYmKGQ9dGhpc1tpXT4+cCk+MCl7bT10cnVlO3I9aW50MmNoYXIoZCl9d2hpbGUoaT49MCl7aWYocDxrKXtkPSh0aGlzW2ldJigxPDxwKS0xKTw8ay1wO2R8PXRoaXNbLS1pXT4+KHArPXRoaXMuREItayl9ZWxzZXtkPXRoaXNbaV0+PihwLT1rKSZrbTtpZihwPD0wKXtwKz10aGlzLkRCOy0taX19aWYoZD4wKW09dHJ1ZTtpZihtKXIrPWludDJjaGFyKGQpfX1yZXR1cm4gbT9yOiIwIn1mdW5jdGlvbiBibk5lZ2F0ZSgpe3ZhciByPW5iaSgpO0JpZ0ludGVnZXIuWkVSTy5zdWJUbyh0aGlzLHIpO3JldHVybiByfWZ1bmN0aW9uIGJuQWJzKCl7cmV0dXJuIHRoaXMuczwwP3RoaXMubmVnYXRlKCk6dGhpc31mdW5jdGlvbiBibkNvbXBhcmVUbyhhKXt2YXIgcj10aGlzLnMtYS5zO2lmKHIhPTApcmV0dXJuIHI7dmFyIGk9dGhpcy50O3I9aS1hLnQ7aWYociE9MClyZXR1cm4gdGhpcy5zPDA/LXI6cjt3aGlsZSgtLWk+PTApaWYoKHI9dGhpc1tpXS1hW2ldKSE9MClyZXR1cm4gcjtyZXR1cm4gMH1mdW5jdGlvbiBuYml0cyh4KXt2YXIgcj0xLHQ7aWYoKHQ9eD4+PjE2KSE9MCl7eD10O3IrPTE2fWlmKCh0PXg+PjgpIT0wKXt4PXQ7cis9OH1pZigodD14Pj40KSE9MCl7eD10O3IrPTR9aWYoKHQ9eD4+MikhPTApe3g9dDtyKz0yfWlmKCh0PXg+PjEpIT0wKXt4PXQ7cis9MX1yZXR1cm4gcn1mdW5jdGlvbiBibkJpdExlbmd0aCgpe2lmKHRoaXMudDw9MClyZXR1cm4gMDtyZXR1cm4gdGhpcy5EQioodGhpcy50LTEpK25iaXRzKHRoaXNbdGhpcy50LTFdXnRoaXMucyZ0aGlzLkRNKX1mdW5jdGlvbiBibnBETFNoaWZ0VG8obixyKXt2YXIgaTtmb3IoaT10aGlzLnQtMTtpPj0wOy0taSlyW2krbl09dGhpc1tpXTtmb3IoaT1uLTE7aT49MDstLWkpcltpXT0wO3IudD10aGlzLnQrbjtyLnM9dGhpcy5zfWZ1bmN0aW9uIGJucERSU2hpZnRUbyhuLHIpe2Zvcih2YXIgaT1uO2k8dGhpcy50OysraSlyW2ktbl09dGhpc1tpXTtyLnQ9TWF0aC5tYXgodGhpcy50LW4sMCk7ci5zPXRoaXMuc31mdW5jdGlvbiBibnBMU2hpZnRUbyhuLHIpe3ZhciBicz1uJXRoaXMuREI7dmFyIGNicz10aGlzLkRCLWJzO3ZhciBibT0oMTw8Y2JzKS0xO3ZhciBkcz1NYXRoLmZsb29yKG4vdGhpcy5EQiksYz10aGlzLnM8PGJzJnRoaXMuRE0saTtmb3IoaT10aGlzLnQtMTtpPj0wOy0taSl7cltpK2RzKzFdPXRoaXNbaV0+PmNic3xjO2M9KHRoaXNbaV0mYm0pPDxic31mb3IoaT1kcy0xO2k+PTA7LS1pKXJbaV09MDtyW2RzXT1jO3IudD10aGlzLnQrZHMrMTtyLnM9dGhpcy5zO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBSU2hpZnRUbyhuLHIpe3Iucz10aGlzLnM7dmFyIGRzPU1hdGguZmxvb3Iobi90aGlzLkRCKTtpZihkcz49dGhpcy50KXtyLnQ9MDtyZXR1cm59dmFyIGJzPW4ldGhpcy5EQjt2YXIgY2JzPXRoaXMuREItYnM7dmFyIGJtPSgxPDxicyktMTtyWzBdPXRoaXNbZHNdPj5icztmb3IodmFyIGk9ZHMrMTtpPHRoaXMudDsrK2kpe3JbaS1kcy0xXXw9KHRoaXNbaV0mYm0pPDxjYnM7cltpLWRzXT10aGlzW2ldPj5ic31pZihicz4wKXJbdGhpcy50LWRzLTFdfD0odGhpcy5zJmJtKTw8Y2JzO3IudD10aGlzLnQtZHM7ci5jbGFtcCgpfWZ1bmN0aW9uIGJucFN1YlRvKGEscil7dmFyIGk9MCxjPTAsbT1NYXRoLm1pbihhLnQsdGhpcy50KTt3aGlsZShpPG0pe2MrPXRoaXNbaV0tYVtpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWlmKGEudDx0aGlzLnQpe2MtPWEuczt3aGlsZShpPHRoaXMudCl7Yys9dGhpc1tpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWMrPXRoaXMuc31lbHNle2MrPXRoaXMuczt3aGlsZShpPGEudCl7Yy09YVtpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWMtPWEuc31yLnM9YzwwPy0xOjA7aWYoYzwtMSlyW2krK109dGhpcy5EVitjO2Vsc2UgaWYoYz4wKXJbaSsrXT1jO3IudD1pO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBNdWx0aXBseVRvKGEscil7dmFyIHg9dGhpcy5hYnMoKSx5PWEuYWJzKCk7dmFyIGk9eC50O3IudD1pK3kudDt3aGlsZSgtLWk+PTApcltpXT0wO2ZvcihpPTA7aTx5LnQ7KytpKXJbaSt4LnRdPXguYW0oMCx5W2ldLHIsaSwwLHgudCk7ci5zPTA7ci5jbGFtcCgpO2lmKHRoaXMucyE9YS5zKUJpZ0ludGVnZXIuWkVSTy5zdWJUbyhyLHIpfWZ1bmN0aW9uIGJucFNxdWFyZVRvKHIpe3ZhciB4PXRoaXMuYWJzKCk7dmFyIGk9ci50PTIqeC50O3doaWxlKC0taT49MClyW2ldPTA7Zm9yKGk9MDtpPHgudC0xOysraSl7dmFyIGM9eC5hbShpLHhbaV0sciwyKmksMCwxKTtpZigocltpK3gudF0rPXguYW0oaSsxLDIqeFtpXSxyLDIqaSsxLGMseC50LWktMSkpPj14LkRWKXtyW2kreC50XS09eC5EVjtyW2kreC50KzFdPTF9fWlmKHIudD4wKXJbci50LTFdKz14LmFtKGkseFtpXSxyLDIqaSwwLDEpO3Iucz0wO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBEaXZSZW1UbyhtLHEscil7dmFyIHBtPW0uYWJzKCk7aWYocG0udDw9MClyZXR1cm47dmFyIHB0PXRoaXMuYWJzKCk7aWYocHQudDxwbS50KXtpZihxIT1udWxsKXEuZnJvbUludCgwKTtpZihyIT1udWxsKXRoaXMuY29weVRvKHIpO3JldHVybn1pZihyPT1udWxsKXI9bmJpKCk7dmFyIHk9bmJpKCksdHM9dGhpcy5zLG1zPW0uczt2YXIgbnNoPXRoaXMuREItbmJpdHMocG1bcG0udC0xXSk7aWYobnNoPjApe3BtLmxTaGlmdFRvKG5zaCx5KTtwdC5sU2hpZnRUbyhuc2gscil9ZWxzZXtwbS5jb3B5VG8oeSk7cHQuY29weVRvKHIpfXZhciB5cz15LnQ7dmFyIHkwPXlbeXMtMV07aWYoeTA9PTApcmV0dXJuO3ZhciB5dD15MCooMTw8dGhpcy5GMSkrKHlzPjE/eVt5cy0yXT4+dGhpcy5GMjowKTt2YXIgZDE9dGhpcy5GVi95dCxkMj0oMTw8dGhpcy5GMSkveXQsZT0xPDx0aGlzLkYyO3ZhciBpPXIudCxqPWkteXMsdD1xPT1udWxsP25iaSgpOnE7eS5kbFNoaWZ0VG8oaix0KTtpZihyLmNvbXBhcmVUbyh0KT49MCl7cltyLnQrK109MTtyLnN1YlRvKHQscil9QmlnSW50ZWdlci5PTkUuZGxTaGlmdFRvKHlzLHQpO3Quc3ViVG8oeSx5KTt3aGlsZSh5LnQ8eXMpeVt5LnQrK109MDt3aGlsZSgtLWo+PTApe3ZhciBxZD1yWy0taV09PXkwP3RoaXMuRE06TWF0aC5mbG9vcihyW2ldKmQxKyhyW2ktMV0rZSkqZDIpO2lmKChyW2ldKz15LmFtKDAscWQscixqLDAseXMpKTxxZCl7eS5kbFNoaWZ0VG8oaix0KTtyLnN1YlRvKHQscik7d2hpbGUocltpXTwtLXFkKXIuc3ViVG8odCxyKX19aWYocSE9bnVsbCl7ci5kclNoaWZ0VG8oeXMscSk7aWYodHMhPW1zKUJpZ0ludGVnZXIuWkVSTy5zdWJUbyhxLHEpfXIudD15cztyLmNsYW1wKCk7aWYobnNoPjApci5yU2hpZnRUbyhuc2gscik7aWYodHM8MClCaWdJbnRlZ2VyLlpFUk8uc3ViVG8ocixyKX1mdW5jdGlvbiBibk1vZChhKXt2YXIgcj1uYmkoKTt0aGlzLmFicygpLmRpdlJlbVRvKGEsbnVsbCxyKTtpZih0aGlzLnM8MCYmci5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKT4wKWEuc3ViVG8ocixyKTtyZXR1cm4gcn1mdW5jdGlvbiBDbGFzc2ljKG0pe3RoaXMubT1tfWZ1bmN0aW9uIGNDb252ZXJ0KHgpe2lmKHguczwwfHx4LmNvbXBhcmVUbyh0aGlzLm0pPj0wKXJldHVybiB4Lm1vZCh0aGlzLm0pO2Vsc2UgcmV0dXJuIHh9ZnVuY3Rpb24gY1JldmVydCh4KXtyZXR1cm4geH1mdW5jdGlvbiBjUmVkdWNlKHgpe3guZGl2UmVtVG8odGhpcy5tLG51bGwseCl9ZnVuY3Rpb24gY011bFRvKHgseSxyKXt4Lm11bHRpcGx5VG8oeSxyKTt0aGlzLnJlZHVjZShyKX1mdW5jdGlvbiBjU3FyVG8oeCxyKXt4LnNxdWFyZVRvKHIpO3RoaXMucmVkdWNlKHIpfUNsYXNzaWMucHJvdG90eXBlLmNvbnZlcnQ9Y0NvbnZlcnQ7Q2xhc3NpYy5wcm90b3R5cGUucmV2ZXJ0PWNSZXZlcnQ7Q2xhc3NpYy5wcm90b3R5cGUucmVkdWNlPWNSZWR1Y2U7Q2xhc3NpYy5wcm90b3R5cGUubXVsVG89Y011bFRvO0NsYXNzaWMucHJvdG90eXBlLnNxclRvPWNTcXJUbztmdW5jdGlvbiBibnBJbnZEaWdpdCgpe2lmKHRoaXMudDwxKXJldHVybiAwO3ZhciB4PXRoaXNbMF07aWYoKHgmMSk9PTApcmV0dXJuIDA7dmFyIHk9eCYzO3k9eSooMi0oeCYxNSkqeSkmMTU7eT15KigyLSh4JjI1NSkqeSkmMjU1O3k9eSooMi0oKHgmNjU1MzUpKnkmNjU1MzUpKSY2NTUzNTt5PXkqKDIteCp5JXRoaXMuRFYpJXRoaXMuRFY7cmV0dXJuIHk+MD90aGlzLkRWLXk6LXl9ZnVuY3Rpb24gTW9udGdvbWVyeShtKXt0aGlzLm09bTt0aGlzLm1wPW0uaW52RGlnaXQoKTt0aGlzLm1wbD10aGlzLm1wJjMyNzY3O3RoaXMubXBoPXRoaXMubXA+PjE1O3RoaXMudW09KDE8PG0uREItMTUpLTE7dGhpcy5tdDI9MiptLnR9ZnVuY3Rpb24gbW9udENvbnZlcnQoeCl7dmFyIHI9bmJpKCk7eC5hYnMoKS5kbFNoaWZ0VG8odGhpcy5tLnQscik7ci5kaXZSZW1Ubyh0aGlzLm0sbnVsbCxyKTtpZih4LnM8MCYmci5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKT4wKXRoaXMubS5zdWJUbyhyLHIpO3JldHVybiByfWZ1bmN0aW9uIG1vbnRSZXZlcnQoeCl7dmFyIHI9bmJpKCk7eC5jb3B5VG8ocik7dGhpcy5yZWR1Y2Uocik7cmV0dXJuIHJ9ZnVuY3Rpb24gbW9udFJlZHVjZSh4KXt3aGlsZSh4LnQ8PXRoaXMubXQyKXhbeC50KytdPTA7Zm9yKHZhciBpPTA7aTx0aGlzLm0udDsrK2kpe3ZhciBqPXhbaV0mMzI3Njc7dmFyIHUwPWoqdGhpcy5tcGwrKChqKnRoaXMubXBoKyh4W2ldPj4xNSkqdGhpcy5tcGwmdGhpcy51bSk8PDE1KSZ4LkRNO2o9aSt0aGlzLm0udDt4W2pdKz10aGlzLm0uYW0oMCx1MCx4LGksMCx0aGlzLm0udCk7d2hpbGUoeFtqXT49eC5EVil7eFtqXS09eC5EVjt4Wysral0rK319eC5jbGFtcCgpO3guZHJTaGlmdFRvKHRoaXMubS50LHgpO2lmKHguY29tcGFyZVRvKHRoaXMubSk+PTApeC5zdWJUbyh0aGlzLm0seCl9ZnVuY3Rpb24gbW9udFNxclRvKHgscil7eC5zcXVhcmVUbyhyKTt0aGlzLnJlZHVjZShyKX1mdW5jdGlvbiBtb250TXVsVG8oeCx5LHIpe3gubXVsdGlwbHlUbyh5LHIpO3RoaXMucmVkdWNlKHIpfU1vbnRnb21lcnkucHJvdG90eXBlLmNvbnZlcnQ9bW9udENvbnZlcnQ7TW9udGdvbWVyeS5wcm90b3R5cGUucmV2ZXJ0PW1vbnRSZXZlcnQ7TW9udGdvbWVyeS5wcm90b3R5cGUucmVkdWNlPW1vbnRSZWR1Y2U7TW9udGdvbWVyeS5wcm90b3R5cGUubXVsVG89bW9udE11bFRvO01vbnRnb21lcnkucHJvdG90eXBlLnNxclRvPW1vbnRTcXJUbztmdW5jdGlvbiBibnBJc0V2ZW4oKXtyZXR1cm4odGhpcy50PjA/dGhpc1swXSYxOnRoaXMucyk9PTB9ZnVuY3Rpb24gYm5wRXhwKGUseil7aWYoZT40Mjk0OTY3Mjk1fHxlPDEpcmV0dXJuIEJpZ0ludGVnZXIuT05FO3ZhciByPW5iaSgpLHIyPW5iaSgpLGc9ei5jb252ZXJ0KHRoaXMpLGk9bmJpdHMoZSktMTtnLmNvcHlUbyhyKTt3aGlsZSgtLWk+PTApe3ouc3FyVG8ocixyMik7aWYoKGUmMTw8aSk+MCl6Lm11bFRvKHIyLGcscik7ZWxzZXt2YXIgdD1yO3I9cjI7cjI9dH19cmV0dXJuIHoucmV2ZXJ0KHIpfWZ1bmN0aW9uIGJuTW9kUG93SW50KGUsbSl7dmFyIHo7aWYoZTwyNTZ8fG0uaXNFdmVuKCkpej1uZXcgQ2xhc3NpYyhtKTtlbHNlIHo9bmV3IE1vbnRnb21lcnkobSk7cmV0dXJuIHRoaXMuZXhwKGUseil9QmlnSW50ZWdlci5wcm90b3R5cGUuY29weVRvPWJucENvcHlUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tSW50PWJucEZyb21JbnQ7QmlnSW50ZWdlci5wcm90b3R5cGUuZnJvbVN0cmluZz1ibnBGcm9tU3RyaW5nO0JpZ0ludGVnZXIucHJvdG90eXBlLmNsYW1wPWJucENsYW1wO0JpZ0ludGVnZXIucHJvdG90eXBlLmRsU2hpZnRUbz1ibnBETFNoaWZ0VG87QmlnSW50ZWdlci5wcm90b3R5cGUuZHJTaGlmdFRvPWJucERSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5sU2hpZnRUbz1ibnBMU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5yU2hpZnRUbz1ibnBSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJUbz1ibnBTdWJUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseVRvPWJucE11bHRpcGx5VG87QmlnSW50ZWdlci5wcm90b3R5cGUuc3F1YXJlVG89Ym5wU3F1YXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuZGl2UmVtVG89Ym5wRGl2UmVtVG87QmlnSW50ZWdlci5wcm90b3R5cGUuaW52RGlnaXQ9Ym5wSW52RGlnaXQ7QmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuPWJucElzRXZlbjtCaWdJbnRlZ2VyLnByb3RvdHlwZS5leHA9Ym5wRXhwO0JpZ0ludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nPWJuVG9TdHJpbmc7QmlnSW50ZWdlci5wcm90b3R5cGUubmVnYXRlPWJuTmVnYXRlO0JpZ0ludGVnZXIucHJvdG90eXBlLmFicz1ibkFicztCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG89Ym5Db21wYXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoPWJuQml0TGVuZ3RoO0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZD1ibk1vZDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3dJbnQ9Ym5Nb2RQb3dJbnQ7QmlnSW50ZWdlci5aRVJPPW5idigwKTtCaWdJbnRlZ2VyLk9ORT1uYnYoMSk7ZnVuY3Rpb24gYm5wRnJvbVJhZGl4KHMsYil7dGhpcy5mcm9tSW50KDApO2lmKGI9PW51bGwpYj0xMDt2YXIgY3M9dGhpcy5jaHVua1NpemUoYik7dmFyIGQ9TWF0aC5wb3coYixjcyksbWk9ZmFsc2Usaj0wLHc9MDtmb3IodmFyIGk9MDtpPHMubGVuZ3RoOysraSl7dmFyIHg9aW50QXQocyxpKTtpZih4PDApe2lmKHMuY2hhckF0KGkpPT0iLSImJnRoaXMuc2lnbnVtKCk9PTApbWk9dHJ1ZTtjb250aW51ZX13PWIqdyt4O2lmKCsraj49Y3Mpe3RoaXMuZE11bHRpcGx5KGQpO3RoaXMuZEFkZE9mZnNldCh3LDApO2o9MDt3PTB9fWlmKGo+MCl7dGhpcy5kTXVsdGlwbHkoTWF0aC5wb3coYixqKSk7dGhpcy5kQWRkT2Zmc2V0KHcsMCl9aWYobWkpQmlnSW50ZWdlci5aRVJPLnN1YlRvKHRoaXMsdGhpcyl9ZnVuY3Rpb24gYm5wQ2h1bmtTaXplKHIpe3JldHVybiBNYXRoLmZsb29yKE1hdGguTE4yKnRoaXMuREIvTWF0aC5sb2cocikpfWZ1bmN0aW9uIGJuU2lnTnVtKCl7aWYodGhpcy5zPDApcmV0dXJuLTE7ZWxzZSBpZih0aGlzLnQ8PTB8fHRoaXMudD09MSYmdGhpc1swXTw9MClyZXR1cm4gMDtlbHNlIHJldHVybiAxfWZ1bmN0aW9uIGJucERNdWx0aXBseShuKXt0aGlzW3RoaXMudF09dGhpcy5hbSgwLG4tMSx0aGlzLDAsMCx0aGlzLnQpOysrdGhpcy50O3RoaXMuY2xhbXAoKX1mdW5jdGlvbiBibnBEQWRkT2Zmc2V0KG4sdyl7aWYobj09MClyZXR1cm47d2hpbGUodGhpcy50PD13KXRoaXNbdGhpcy50KytdPTA7dGhpc1t3XSs9bjt3aGlsZSh0aGlzW3ddPj10aGlzLkRWKXt0aGlzW3ddLT10aGlzLkRWO2lmKCsrdz49dGhpcy50KXRoaXNbdGhpcy50KytdPTA7Kyt0aGlzW3ddfX1mdW5jdGlvbiBibnBUb1JhZGl4KGIpe2lmKGI9PW51bGwpYj0xMDtpZih0aGlzLnNpZ251bSgpPT0wfHxiPDJ8fGI+MzYpcmV0dXJuIjAiO3ZhciBjcz10aGlzLmNodW5rU2l6ZShiKTt2YXIgYT1NYXRoLnBvdyhiLGNzKTt2YXIgZD1uYnYoYSkseT1uYmkoKSx6PW5iaSgpLHI9IiI7dGhpcy5kaXZSZW1UbyhkLHkseik7d2hpbGUoeS5zaWdudW0oKT4wKXtyPShhK3ouaW50VmFsdWUoKSkudG9TdHJpbmcoYikuc3Vic3RyKDEpK3I7eS5kaXZSZW1UbyhkLHkseil9cmV0dXJuIHouaW50VmFsdWUoKS50b1N0cmluZyhiKStyfWZ1bmN0aW9uIGJuSW50VmFsdWUoKXtpZih0aGlzLnM8MCl7aWYodGhpcy50PT0xKXJldHVybiB0aGlzWzBdLXRoaXMuRFY7ZWxzZSBpZih0aGlzLnQ9PTApcmV0dXJuLTF9ZWxzZSBpZih0aGlzLnQ9PTEpcmV0dXJuIHRoaXNbMF07ZWxzZSBpZih0aGlzLnQ9PTApcmV0dXJuIDA7cmV0dXJuKHRoaXNbMV0mKDE8PDMyLXRoaXMuREIpLTEpPDx0aGlzLkRCfHRoaXNbMF19ZnVuY3Rpb24gYm5wQWRkVG8oYSxyKXt2YXIgaT0wLGM9MCxtPU1hdGgubWluKGEudCx0aGlzLnQpO3doaWxlKGk8bSl7Yys9dGhpc1tpXSthW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9aWYoYS50PHRoaXMudCl7Yys9YS5zO3doaWxlKGk8dGhpcy50KXtjKz10aGlzW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9Yys9dGhpcy5zfWVsc2V7Yys9dGhpcy5zO3doaWxlKGk8YS50KXtjKz1hW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9Yys9YS5zfXIucz1jPDA/LTE6MDtpZihjPjApcltpKytdPWM7ZWxzZSBpZihjPC0xKXJbaSsrXT10aGlzLkRWK2M7ci50PWk7ci5jbGFtcCgpfUJpZ0ludGVnZXIucHJvdG90eXBlLmZyb21SYWRpeD1ibnBGcm9tUmFkaXg7QmlnSW50ZWdlci5wcm90b3R5cGUuY2h1bmtTaXplPWJucENodW5rU2l6ZTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaWdudW09Ym5TaWdOdW07QmlnSW50ZWdlci5wcm90b3R5cGUuZE11bHRpcGx5PWJucERNdWx0aXBseTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5kQWRkT2Zmc2V0PWJucERBZGRPZmZzZXQ7QmlnSW50ZWdlci5wcm90b3R5cGUudG9SYWRpeD1ibnBUb1JhZGl4O0JpZ0ludGVnZXIucHJvdG90eXBlLmludFZhbHVlPWJuSW50VmFsdWU7QmlnSW50ZWdlci5wcm90b3R5cGUuYWRkVG89Ym5wQWRkVG87dmFyIFdyYXBwZXI9e2FiczooZnVuY3Rpb24obCxoKXt2YXIgeD1uZXcgZ29vZy5tYXRoLkxvbmcobCxoKTt2YXIgcmV0O2lmKHguaXNOZWdhdGl2ZSgpKXtyZXQ9eC5uZWdhdGUoKX1lbHNle3JldD14fUhFQVAzMlt0ZW1wRG91YmxlUHRyPj4yXT1yZXQubG93XztIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1yZXQuaGlnaF99KSxlbnN1cmVUZW1wczooZnVuY3Rpb24oKXtpZihXcmFwcGVyLmVuc3VyZWRUZW1wcylyZXR1cm47V3JhcHBlci5lbnN1cmVkVGVtcHM9dHJ1ZTtXcmFwcGVyLnR3bzMyPW5ldyBCaWdJbnRlZ2VyO1dyYXBwZXIudHdvMzIuZnJvbVN0cmluZygiNDI5NDk2NzI5NiIsMTApO1dyYXBwZXIudHdvNjQ9bmV3IEJpZ0ludGVnZXI7V3JhcHBlci50d282NC5mcm9tU3RyaW5nKCIxODQ0Njc0NDA3MzcwOTU1MTYxNiIsMTApO1dyYXBwZXIudGVtcDE9bmV3IEJpZ0ludGVnZXI7V3JhcHBlci50ZW1wMj1uZXcgQmlnSW50ZWdlcn0pLGxoMmJpZ251bTooZnVuY3Rpb24obCxoKXt2YXIgYT1uZXcgQmlnSW50ZWdlcjthLmZyb21TdHJpbmcoaC50b1N0cmluZygpLDEwKTt2YXIgYj1uZXcgQmlnSW50ZWdlcjthLm11bHRpcGx5VG8oV3JhcHBlci50d28zMixiKTt2YXIgYz1uZXcgQmlnSW50ZWdlcjtjLmZyb21TdHJpbmcobC50b1N0cmluZygpLDEwKTt2YXIgZD1uZXcgQmlnSW50ZWdlcjtjLmFkZFRvKGIsZCk7cmV0dXJuIGR9KSxzdHJpbmdpZnk6KGZ1bmN0aW9uKGwsaCx1bnNpZ25lZCl7dmFyIHJldD0obmV3IGdvb2cubWF0aC5Mb25nKGwsaCkpLnRvU3RyaW5nKCk7aWYodW5zaWduZWQmJnJldFswXT09Ii0iKXtXcmFwcGVyLmVuc3VyZVRlbXBzKCk7dmFyIGJpZ251bT1uZXcgQmlnSW50ZWdlcjtiaWdudW0uZnJvbVN0cmluZyhyZXQsMTApO3JldD1uZXcgQmlnSW50ZWdlcjtXcmFwcGVyLnR3bzY0LmFkZFRvKGJpZ251bSxyZXQpO3JldD1yZXQudG9TdHJpbmcoMTApfXJldHVybiByZXR9KSxmcm9tU3RyaW5nOihmdW5jdGlvbihzdHIsYmFzZSxtaW4sbWF4LHVuc2lnbmVkKXtXcmFwcGVyLmVuc3VyZVRlbXBzKCk7dmFyIGJpZ251bT1uZXcgQmlnSW50ZWdlcjtiaWdudW0uZnJvbVN0cmluZyhzdHIsYmFzZSk7dmFyIGJpZ21pbj1uZXcgQmlnSW50ZWdlcjtiaWdtaW4uZnJvbVN0cmluZyhtaW4sMTApO3ZhciBiaWdtYXg9bmV3IEJpZ0ludGVnZXI7YmlnbWF4LmZyb21TdHJpbmcobWF4LDEwKTtpZih1bnNpZ25lZCYmYmlnbnVtLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pPDApe3ZhciB0ZW1wPW5ldyBCaWdJbnRlZ2VyO2JpZ251bS5hZGRUbyhXcmFwcGVyLnR3bzY0LHRlbXApO2JpZ251bT10ZW1wfXZhciBlcnJvcj1mYWxzZTtpZihiaWdudW0uY29tcGFyZVRvKGJpZ21pbik8MCl7YmlnbnVtPWJpZ21pbjtlcnJvcj10cnVlfWVsc2UgaWYoYmlnbnVtLmNvbXBhcmVUbyhiaWdtYXgpPjApe2JpZ251bT1iaWdtYXg7ZXJyb3I9dHJ1ZX12YXIgcmV0PWdvb2cubWF0aC5Mb25nLmZyb21TdHJpbmcoYmlnbnVtLnRvU3RyaW5nKCkpO0hFQVAzMlt0ZW1wRG91YmxlUHRyPj4yXT1yZXQubG93XztIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1yZXQuaGlnaF87aWYoZXJyb3IpdGhyb3cicmFuZ2UgZXJyb3IifSl9O3JldHVybiBXcmFwcGVyfSkoKTtpZihtZW1vcnlJbml0aWFsaXplcil7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERXx8RU5WSVJPTk1FTlRfSVNfU0hFTEwpe3ZhciBkYXRhPU1vZHVsZVsicmVhZEJpbmFyeSJdKG1lbW9yeUluaXRpYWxpemVyKTtIRUFQVTguc2V0KGRhdGEsU1RBVElDX0JBU0UpfWVsc2V7YWRkUnVuRGVwZW5kZW5jeSgibWVtb3J5IGluaXRpYWxpemVyIik7QnJvd3Nlci5hc3luY0xvYWQobWVtb3J5SW5pdGlhbGl6ZXIsKGZ1bmN0aW9uKGRhdGEpe0hFQVBVOC5zZXQoZGF0YSxTVEFUSUNfQkFTRSk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgibWVtb3J5IGluaXRpYWxpemVyIil9KSwoZnVuY3Rpb24oZGF0YSl7dGhyb3ciY291bGQgbm90IGxvYWQgbWVtb3J5IGluaXRpYWxpemVyICIrbWVtb3J5SW5pdGlhbGl6ZXJ9KSl9fWZ1bmN0aW9uIEV4aXRTdGF0dXMoc3RhdHVzKXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiO3RoaXMubWVzc2FnZT0iUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgiK3N0YXR1cysiKSI7dGhpcy5zdGF0dXM9c3RhdHVzfUV4aXRTdGF0dXMucHJvdG90eXBlPW5ldyBFcnJvcjtFeGl0U3RhdHVzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FeGl0U3RhdHVzO3ZhciBpbml0aWFsU3RhY2tUb3A7dmFyIHByZWxvYWRTdGFydFRpbWU9bnVsbDt2YXIgY2FsbGVkTWFpbj1mYWxzZTtkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9ZnVuY3Rpb24gcnVuQ2FsbGVyKCl7aWYoIU1vZHVsZVsiY2FsbGVkUnVuIl0mJnNob3VsZFJ1bk5vdylydW4oKTtpZighTW9kdWxlWyJjYWxsZWRSdW4iXSlkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9cnVuQ2FsbGVyfTtNb2R1bGVbImNhbGxNYWluIl09TW9kdWxlLmNhbGxNYWluPWZ1bmN0aW9uIGNhbGxNYWluKGFyZ3Mpe2Fzc2VydChydW5EZXBlbmRlbmNpZXM9PTAsImNhbm5vdCBjYWxsIG1haW4gd2hlbiBhc3luYyBkZXBlbmRlbmNpZXMgcmVtYWluISAobGlzdGVuIG9uIF9fQVRNQUlOX18pIik7YXNzZXJ0KF9fQVRQUkVSVU5fXy5sZW5ndGg9PTAsImNhbm5vdCBjYWxsIG1haW4gd2hlbiBwcmVSdW4gZnVuY3Rpb25zIHJlbWFpbiB0byBiZSBjYWxsZWQiKTthcmdzPWFyZ3N8fFtdO2Vuc3VyZUluaXRSdW50aW1lKCk7dmFyIGFyZ2M9YXJncy5sZW5ndGgrMTtmdW5jdGlvbiBwYWQoKXtmb3IodmFyIGk9MDtpPDQtMTtpKyspe2FyZ3YucHVzaCgwKX19dmFyIGFyZ3Y9W2FsbG9jYXRlKGludEFycmF5RnJvbVN0cmluZygiL2Jpbi90aGlzLnByb2dyYW0iKSwiaTgiLEFMTE9DX05PUk1BTCldO3BhZCgpO2Zvcih2YXIgaT0wO2k8YXJnYy0xO2k9aSsxKXthcmd2LnB1c2goYWxsb2NhdGUoaW50QXJyYXlGcm9tU3RyaW5nKGFyZ3NbaV0pLCJpOCIsQUxMT0NfTk9STUFMKSk7cGFkKCl9YXJndi5wdXNoKDApO2FyZ3Y9YWxsb2NhdGUoYXJndiwiaTMyIixBTExPQ19OT1JNQUwpO2luaXRpYWxTdGFja1RvcD1TVEFDS1RPUDt0cnl7dmFyIHJldD1Nb2R1bGVbIl9tYWluIl0oYXJnYyxhcmd2LDApO2lmKCFNb2R1bGVbIm5vRXhpdFJ1bnRpbWUiXSl7ZXhpdChyZXQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1cyl7cmV0dXJufWVsc2UgaWYoZT09IlNpbXVsYXRlSW5maW5pdGVMb29wIil7TW9kdWxlWyJub0V4aXRSdW50aW1lIl09dHJ1ZTtyZXR1cm59ZWxzZXtpZihlJiZ0eXBlb2YgZT09PSJvYmplY3QiJiZlLnN0YWNrKU1vZHVsZS5wcmludEVycigiZXhjZXB0aW9uIHRocm93bjogIitbZSxlLnN0YWNrXSk7dGhyb3cgZX19ZmluYWxseXtjYWxsZWRNYWluPXRydWV9fTtmdW5jdGlvbiBydW4oYXJncyl7YXJncz1hcmdzfHxNb2R1bGVbImFyZ3VtZW50cyJdO2lmKHByZWxvYWRTdGFydFRpbWU9PT1udWxsKXByZWxvYWRTdGFydFRpbWU9RGF0ZS5ub3coKTtpZihydW5EZXBlbmRlbmNpZXM+MCl7TW9kdWxlLnByaW50RXJyKCJydW4oKSBjYWxsZWQsIGJ1dCBkZXBlbmRlbmNpZXMgcmVtYWluLCBzbyBub3QgcnVubmluZyIpO3JldHVybn1wcmVSdW4oKTtpZihydW5EZXBlbmRlbmNpZXM+MClyZXR1cm47aWYoTW9kdWxlWyJjYWxsZWRSdW4iXSlyZXR1cm47ZnVuY3Rpb24gZG9SdW4oKXtpZihNb2R1bGVbImNhbGxlZFJ1biJdKXJldHVybjtNb2R1bGVbImNhbGxlZFJ1biJdPXRydWU7ZW5zdXJlSW5pdFJ1bnRpbWUoKTtwcmVNYWluKCk7aWYoRU5WSVJPTk1FTlRfSVNfV0VCJiZwcmVsb2FkU3RhcnRUaW1lIT09bnVsbCl7TW9kdWxlLnByaW50RXJyKCJwcmUtbWFpbiBwcmVwIHRpbWU6ICIrKERhdGUubm93KCktcHJlbG9hZFN0YXJ0VGltZSkrIiBtcyIpfWlmKE1vZHVsZVsiX21haW4iXSYmc2hvdWxkUnVuTm93KXtNb2R1bGVbImNhbGxNYWluIl0oYXJncyl9cG9zdFJ1bigpfWlmKE1vZHVsZVsic2V0U3RhdHVzIl0pe01vZHVsZVsic2V0U3RhdHVzIl0oIlJ1bm5pbmcuLi4iKTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7TW9kdWxlWyJzZXRTdGF0dXMiXSgiIil9KSwxKTtpZighQUJPUlQpZG9SdW4oKX0pLDEpfWVsc2V7ZG9SdW4oKX19TW9kdWxlWyJydW4iXT1Nb2R1bGUucnVuPXJ1bjtmdW5jdGlvbiBleGl0KHN0YXR1cyl7QUJPUlQ9dHJ1ZTtFWElUU1RBVFVTPXN0YXR1cztTVEFDS1RPUD1pbml0aWFsU3RhY2tUb3A7ZXhpdFJ1bnRpbWUoKTt0aHJvdyBuZXcgRXhpdFN0YXR1cyhzdGF0dXMpfU1vZHVsZVsiZXhpdCJdPU1vZHVsZS5leGl0PWV4aXQ7ZnVuY3Rpb24gYWJvcnQodGV4dCl7aWYodGV4dCl7TW9kdWxlLnByaW50KHRleHQpO01vZHVsZS5wcmludEVycih0ZXh0KX1BQk9SVD10cnVlO0VYSVRTVEFUVVM9MTt2YXIgZXh0cmE9IlxuSWYgdGhpcyBhYm9ydCgpIGlzIHVuZXhwZWN0ZWQsIGJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIHdoaWNoIGNhbiBnaXZlIG1vcmUgaW5mb3JtYXRpb24uIjt0aHJvdyJhYm9ydCgpIGF0ICIrc3RhY2tUcmFjZSgpK2V4dHJhfU1vZHVsZVsiYWJvcnQiXT1Nb2R1bGUuYWJvcnQ9YWJvcnQ7dmFyIEludGVybmFsRXJyb3I9TW9kdWxlWyJJbnRlcm5hbEVycm9yIl09ZXh0ZW5kRXJyb3IoRXJyb3IsIkludGVybmFsRXJyb3IiKTt2YXIgQmluZGluZ0Vycm9yPU1vZHVsZVsiQmluZGluZ0Vycm9yIl09ZXh0ZW5kRXJyb3IoRXJyb3IsIkJpbmRpbmdFcnJvciIpO3ZhciBVbmJvdW5kVHlwZUVycm9yPU1vZHVsZVsiVW5ib3VuZFR5cGVFcnJvciJdPWV4dGVuZEVycm9yKEJpbmRpbmdFcnJvciwiVW5ib3VuZFR5cGVFcnJvciIpO3ZhciBQdXJlVmlydHVhbEVycm9yPU1vZHVsZVsiUHVyZVZpcnR1YWxFcnJvciJdPWV4dGVuZEVycm9yKEJpbmRpbmdFcnJvciwiUHVyZVZpcnR1YWxFcnJvciIpO2Z1bmN0aW9uIHRocm93SW50ZXJuYWxFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtZXNzYWdlKX1mdW5jdGlvbiB0aHJvd0JpbmRpbmdFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKG1lc3NhZ2UpfWZ1bmN0aW9uIHRocm93VW5ib3VuZFR5cGVFcnJvcihtZXNzYWdlLHR5cGVzKXt2YXIgdW5ib3VuZFR5cGVzPVtdO3ZhciBzZWVuPXt9O2Z1bmN0aW9uIHZpc2l0KHR5cGUpe2lmKHNlZW5bdHlwZV0pe3JldHVybn1pZihyZWdpc3RlcmVkVHlwZXNbdHlwZV0pe3JldHVybn1pZih0eXBlRGVwZW5kZW5jaWVzW3R5cGVdKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdLmZvckVhY2godmlzaXQpO3JldHVybn11bmJvdW5kVHlwZXMucHVzaCh0eXBlKTtzZWVuW3R5cGVdPXRydWV9dHlwZXMuZm9yRWFjaCh2aXNpdCk7dGhyb3cgbmV3IFVuYm91bmRUeXBlRXJyb3IobWVzc2FnZSsiOiAiK3VuYm91bmRUeXBlcy5tYXAoZ2V0VHlwZU5hbWUpLmpvaW4oWyIsICJdKSl9ZnVuY3Rpb24gZW5zdXJlT3ZlcmxvYWRUYWJsZShwcm90byxtZXRob2ROYW1lLGh1bWFuTmFtZSl7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7dmFyIHByZXZGdW5jPXByb3RvW21ldGhvZE5hbWVdO3Byb3RvW21ldGhvZE5hbWVdPShmdW5jdGlvbigpe2lmKCFwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlLmhhc093blByb3BlcnR5KGFyZ3VtZW50cy5sZW5ndGgpKXt0aHJvd0JpbmRpbmdFcnJvcigiRnVuY3Rpb24gJyIraHVtYW5OYW1lKyInIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyAoIithcmd1bWVudHMubGVuZ3RoKyIpIC0gZXhwZWN0cyBvbmUgb2YgKCIrcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSsiKSEiKX1yZXR1cm4gcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmd1bWVudHMubGVuZ3RoXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KTtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlPVtdO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbcHJldkZ1bmMuYXJnQ291bnRdPXByZXZGdW5jfX1mdW5jdGlvbiBleHBvc2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShuYW1lKSl7aWYodW5kZWZpbmVkPT09bnVtQXJndW1lbnRzfHx1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGVbbnVtQXJndW1lbnRzXSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBwdWJsaWMgbmFtZSAnIituYW1lKyInIHR3aWNlIil9ZW5zdXJlT3ZlcmxvYWRUYWJsZShNb2R1bGUsbmFtZSxuYW1lKTtpZihNb2R1bGUuaGFzT3duUHJvcGVydHkobnVtQXJndW1lbnRzKSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBtdWx0aXBsZSBvdmVybG9hZHMgb2YgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1bWVudHMgKCIrbnVtQXJndW1lbnRzKyIpISIpfU1vZHVsZVtuYW1lXS5vdmVybG9hZFRhYmxlW251bUFyZ3VtZW50c109dmFsdWV9ZWxzZXtNb2R1bGVbbmFtZV09dmFsdWU7aWYodW5kZWZpbmVkIT09bnVtQXJndW1lbnRzKXtNb2R1bGVbbmFtZV0ubnVtQXJndW1lbnRzPW51bUFyZ3VtZW50c319fWZ1bmN0aW9uIHJlcGxhY2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKCFNb2R1bGUuaGFzT3duUHJvcGVydHkobmFtZSkpe3Rocm93SW50ZXJuYWxFcnJvcigiUmVwbGFjaW5nIG5vbmV4aXN0YW50IHB1YmxpYyBzeW1ib2wiKX1pZih1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09bnVtQXJndW1lbnRzKXtNb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZVtudW1Bcmd1bWVudHNdPXZhbHVlfWVsc2V7TW9kdWxlW25hbWVdPXZhbHVlfX1mdW5jdGlvbiBleHRlbmRFcnJvcihiYXNlRXJyb3JUeXBlLGVycm9yTmFtZSl7dmFyIGVycm9yQ2xhc3M9Y3JlYXRlTmFtZWRGdW5jdGlvbihlcnJvck5hbWUsKGZ1bmN0aW9uKG1lc3NhZ2Upe3RoaXMubmFtZT1lcnJvck5hbWU7dGhpcy5tZXNzYWdlPW1lc3NhZ2U7dmFyIHN0YWNrPShuZXcgRXJyb3IobWVzc2FnZSkpLnN0YWNrO2lmKHN0YWNrIT09dW5kZWZpbmVkKXt0aGlzLnN0YWNrPXRoaXMudG9TdHJpbmcoKSsiXG4iK3N0YWNrLnJlcGxhY2UoL15FcnJvcig6W15cbl0qKT9cbi8sIiIpfX0pKTtlcnJvckNsYXNzLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGJhc2VFcnJvclR5cGUucHJvdG90eXBlKTtlcnJvckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lcnJvckNsYXNzO2Vycm9yQ2xhc3MucHJvdG90eXBlLnRvU3RyaW5nPShmdW5jdGlvbigpe2lmKHRoaXMubWVzc2FnZT09PXVuZGVmaW5lZCl7cmV0dXJuIHRoaXMubmFtZX1lbHNle3JldHVybiB0aGlzLm5hbWUrIjogIit0aGlzLm1lc3NhZ2V9fSk7cmV0dXJuIGVycm9yQ2xhc3N9ZnVuY3Rpb24gY3JlYXRlTmFtZWRGdW5jdGlvbihuYW1lLGJvZHkpe25hbWU9bWFrZUxlZ2FsRnVuY3Rpb25OYW1lKG5hbWUpO3JldHVybihuZXcgRnVuY3Rpb24oImJvZHkiLCJyZXR1cm4gZnVuY3Rpb24gIituYW1lKyIoKSB7XG4iKycgICAgInVzZSBzdHJpY3QiOycrIiAgICByZXR1cm4gYm9keS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuIisifTtcbiIpKShib2R5KX1mdW5jdGlvbiBfZW1iaW5kX3JlcHIodil7dmFyIHQ9dHlwZW9mIHY7aWYodD09PSJvYmplY3QifHx0PT09ImFycmF5Inx8dD09PSJmdW5jdGlvbiIpe3JldHVybiB2LnRvU3RyaW5nKCl9ZWxzZXtyZXR1cm4iIit2fX12YXIgcmVnaXN0ZXJlZEluc3RhbmNlcz17fTtmdW5jdGlvbiBnZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpe2lmKHB0cj09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoInB0ciBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpfXdoaWxlKGNsYXNzXy5iYXNlQ2xhc3Mpe3B0cj1jbGFzc18udXBjYXN0KHB0cik7Y2xhc3NfPWNsYXNzXy5iYXNlQ2xhc3N9cmV0dXJuIHB0cn1mdW5jdGlvbiByZWdpc3RlckluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIsaW5zdGFuY2Upe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO2lmKHJlZ2lzdGVyZWRJbnN0YW5jZXMuaGFzT3duUHJvcGVydHkocHRyKSl7dGhyb3dCaW5kaW5nRXJyb3IoIlRyaWVkIHRvIHJlZ2lzdGVyIHJlZ2lzdGVyZWQgaW5zdGFuY2U6ICIrcHRyKX1lbHNle3JlZ2lzdGVyZWRJbnN0YW5jZXNbcHRyXT1pbnN0YW5jZX19ZnVuY3Rpb24gdW5yZWdpc3RlckluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIpe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO2lmKHJlZ2lzdGVyZWRJbnN0YW5jZXMuaGFzT3duUHJvcGVydHkocHRyKSl7ZGVsZXRlIHJlZ2lzdGVyZWRJbnN0YW5jZXNbcHRyXX1lbHNle3Rocm93QmluZGluZ0Vycm9yKCJUcmllZCB0byB1bnJlZ2lzdGVyIHVucmVnaXN0ZXJlZCBpbnN0YW5jZTogIitwdHIpfX1mdW5jdGlvbiBnZXRJbmhlcml0ZWRJbnN0YW5jZShjbGFzc18scHRyKXtwdHI9Z2V0QmFzZXN0UG9pbnRlcihjbGFzc18scHRyKTtyZXR1cm4gcmVnaXN0ZXJlZEluc3RhbmNlc1twdHJdfWZ1bmN0aW9uIGdldEluaGVyaXRlZEluc3RhbmNlQ291bnQoKXtyZXR1cm4gT2JqZWN0LmtleXMocmVnaXN0ZXJlZEluc3RhbmNlcykubGVuZ3RofU1vZHVsZVsiZ2V0SW5oZXJpdGVkSW5zdGFuY2VDb3VudCJdPWdldEluaGVyaXRlZEluc3RhbmNlQ291bnQ7ZnVuY3Rpb24gZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcygpe3ZhciBydj1bXTtmb3IodmFyIGsgaW4gcmVnaXN0ZXJlZEluc3RhbmNlcyl7aWYocmVnaXN0ZXJlZEluc3RhbmNlcy5oYXNPd25Qcm9wZXJ0eShrKSl7cnYucHVzaChyZWdpc3RlcmVkSW5zdGFuY2VzW2tdKX19cmV0dXJuIHJ2fU1vZHVsZVsiZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcyJdPWdldExpdmVJbmhlcml0ZWRJbnN0YW5jZXM7dmFyIHJlZ2lzdGVyZWRUeXBlcz17fTt2YXIgYXdhaXRpbmdEZXBlbmRlbmNpZXM9e307dmFyIHR5cGVEZXBlbmRlbmNpZXM9e307dmFyIHJlZ2lzdGVyZWRQb2ludGVycz17fTtmdW5jdGlvbiByZWdpc3RlclR5cGUocmF3VHlwZSxyZWdpc3RlcmVkSW5zdGFuY2Upe2lmKCEoImFyZ1BhY2tBZHZhbmNlImluIHJlZ2lzdGVyZWRJbnN0YW5jZSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2UiKX12YXIgbmFtZT1yZWdpc3RlcmVkSW5zdGFuY2UubmFtZTtpZighcmF3VHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoJ3R5cGUgIicrbmFtZSsnIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyJyl9aWYocmVnaXN0ZXJlZFR5cGVzLmhhc093blByb3BlcnR5KHJhd1R5cGUpKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIHR5cGUgJyIrbmFtZSsiJyB0d2ljZSIpfXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXT1yZWdpc3RlcmVkSW5zdGFuY2U7ZGVsZXRlIHR5cGVEZXBlbmRlbmNpZXNbcmF3VHlwZV07aWYoYXdhaXRpbmdEZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkocmF3VHlwZSkpe3ZhciBjYWxsYmFja3M9YXdhaXRpbmdEZXBlbmRlbmNpZXNbcmF3VHlwZV07ZGVsZXRlIGF3YWl0aW5nRGVwZW5kZW5jaWVzW3Jhd1R5cGVdO2NhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihjYil7Y2IoKX0pKX19ZnVuY3Rpb24gd2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQobXlUeXBlcyxkZXBlbmRlbnRUeXBlcyxnZXRUeXBlQ29udmVydGVycyl7bXlUeXBlcy5mb3JFYWNoKChmdW5jdGlvbih0eXBlKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdPWRlcGVuZGVudFR5cGVzfSkpO2Z1bmN0aW9uIG9uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpe3ZhciBteVR5cGVDb252ZXJ0ZXJzPWdldFR5cGVDb252ZXJ0ZXJzKHR5cGVDb252ZXJ0ZXJzKTtpZihteVR5cGVDb252ZXJ0ZXJzLmxlbmd0aCE9PW15VHlwZXMubGVuZ3RoKXt0aHJvd0ludGVybmFsRXJyb3IoIk1pc21hdGNoZWQgdHlwZSBjb252ZXJ0ZXIgY291bnQiKX1mb3IodmFyIGk9MDtpPG15VHlwZXMubGVuZ3RoOysraSl7cmVnaXN0ZXJUeXBlKG15VHlwZXNbaV0sbXlUeXBlQ29udmVydGVyc1tpXSl9fXZhciB0eXBlQ29udmVydGVycz1uZXcgQXJyYXkoZGVwZW5kZW50VHlwZXMubGVuZ3RoKTt2YXIgdW5yZWdpc3RlcmVkVHlwZXM9W107dmFyIHJlZ2lzdGVyZWQ9MDtkZXBlbmRlbnRUeXBlcy5mb3JFYWNoKChmdW5jdGlvbihkdCxpKXtpZihyZWdpc3RlcmVkVHlwZXMuaGFzT3duUHJvcGVydHkoZHQpKXt0eXBlQ29udmVydGVyc1tpXT1yZWdpc3RlcmVkVHlwZXNbZHRdfWVsc2V7dW5yZWdpc3RlcmVkVHlwZXMucHVzaChkdCk7aWYoIWF3YWl0aW5nRGVwZW5kZW5jaWVzLmhhc093blByb3BlcnR5KGR0KSl7YXdhaXRpbmdEZXBlbmRlbmNpZXNbZHRdPVtdfWF3YWl0aW5nRGVwZW5kZW5jaWVzW2R0XS5wdXNoKChmdW5jdGlvbigpe3R5cGVDb252ZXJ0ZXJzW2ldPXJlZ2lzdGVyZWRUeXBlc1tkdF07KytyZWdpc3RlcmVkO2lmKHJlZ2lzdGVyZWQ9PT11bnJlZ2lzdGVyZWRUeXBlcy5sZW5ndGgpe29uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpfX0pKX19KSk7aWYoMD09PXVucmVnaXN0ZXJlZFR5cGVzLmxlbmd0aCl7b25Db21wbGV0ZSh0eXBlQ29udmVydGVycyl9fXZhciBfX2NoYXJDb2Rlcz0oZnVuY3Rpb24oKXt2YXIgY29kZXM9bmV3IEFycmF5KDI1Nik7Zm9yKHZhciBpPTA7aTwyNTY7KytpKXtjb2Rlc1tpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpfXJldHVybiBjb2Rlc30pKCk7ZnVuY3Rpb24gcmVhZExhdGluMVN0cmluZyhwdHIpe3ZhciByZXQ9IiI7dmFyIGM9cHRyO3doaWxlKEhFQVBVOFtjXSl7cmV0Kz1fX2NoYXJDb2Rlc1tIRUFQVThbYysrXV19cmV0dXJuIHJldH1mdW5jdGlvbiBnZXRUeXBlTmFtZSh0eXBlKXt2YXIgcHRyPV9fX2dldFR5cGVOYW1lKHR5cGUpO3ZhciBydj1yZWFkTGF0aW4xU3RyaW5nKHB0cik7X2ZyZWUocHRyKTtyZXR1cm4gcnZ9ZnVuY3Rpb24gaGVhcDMyVmVjdG9yVG9BcnJheShjb3VudCxmaXJzdEVsZW1lbnQpe3ZhciBhcnJheT1bXTtmb3IodmFyIGk9MDtpPGNvdW50O2krKyl7YXJyYXkucHVzaChIRUFQMzJbKGZpcnN0RWxlbWVudD4+MikraV0pfXJldHVybiBhcnJheX1mdW5jdGlvbiByZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmF3VHlwZSxodW1hbk5hbWUpe3ZhciBpbXBsPXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXTtpZih1bmRlZmluZWQ9PT1pbXBsKXt0aHJvd0JpbmRpbmdFcnJvcihodW1hbk5hbWUrIiBoYXMgdW5rbm93biB0eXBlICIrZ2V0VHlwZU5hbWUocmF3VHlwZSkpfXJldHVybiBpbXBsfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3ZvaWQocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiYXJnUGFja0FkdmFuY2UiOjAsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKCl7cmV0dXJuIHVuZGVmaW5lZH0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7cmV0dXJuIHVuZGVmaW5lZH0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfYm9vbChyYXdUeXBlLG5hbWUsc2l6ZSx0cnVlVmFsdWUsZmFsc2VWYWx1ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHd0KXtyZXR1cm4hIXd0fSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyxvKXtyZXR1cm4gbz90cnVlVmFsdWU6ZmFsc2VWYWx1ZX0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcDtpZihzaXplPT09MSl7aGVhcD1IRUFQOH1lbHNlIGlmKHNpemU9PT0yKXtoZWFwPUhFQVAxNn1lbHNlIGlmKHNpemU9PT00KXtoZWFwPUhFQVAzMn1lbHNle3Rocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gYm9vbGVhbiB0eXBlIHNpemU6ICIrbmFtZSl9cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+c2hpZnRdKX0pLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gZ2V0U2hpZnRGcm9tU2l6ZShzaXplKXtzd2l0Y2goc2l6ZSl7Y2FzZSAxOnJldHVybiAwO2Nhc2UgMjpyZXR1cm4gMTtjYXNlIDQ6cmV0dXJuIDI7Y2FzZSA4OnJldHVybiAzO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biB0eXBlIHNpemU6ICIrc2l6ZSl9fWZ1bmN0aW9uIGludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LHNpZ25lZCl7c3dpdGNoKHNoaWZ0KXtjYXNlIDA6cmV0dXJuKGZ1bmN0aW9uKHBvaW50ZXIpe3ZhciBoZWFwPXNpZ25lZD9IRUFQODpIRUFQVTg7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcl0pfSk7Y2FzZSAxOnJldHVybihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcD1zaWduZWQ/SEVBUDE2OkhFQVBVMTY7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+MV0pfSk7Y2FzZSAyOnJldHVybihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcD1zaWduZWQ/SEVBUDMyOkhFQVBVMzI7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+Ml0pfSk7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGludGVnZXIgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gZmxvYXRSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0KXtzd2l0Y2goc2hpZnQpe2Nhc2UgMjpyZXR1cm4oZnVuY3Rpb24ocG9pbnRlcil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKEhFQVBGMzJbcG9pbnRlcj4+Ml0pfSk7Y2FzZSAzOnJldHVybihmdW5jdGlvbihwb2ludGVyKXtyZXR1cm4gdGhpc1siZnJvbVdpcmVUeXBlIl0oSEVBUEY2NFtwb2ludGVyPj4zXSl9KTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZmxvYXQgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcihwcmltaXRpdmVUeXBlLG5hbWUsc2l6ZSxtaW5SYW5nZSxtYXhSYW5nZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO2lmKG1heFJhbmdlPT09LTEpe21heFJhbmdlPTQyOTQ5NjcyOTV9dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7cmVnaXN0ZXJUeXBlKHByaW1pdGl2ZVR5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3JldHVybiB2YWx1ZX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHR5cGVvZiB2YWx1ZSE9PSJudW1iZXIiJiZ0eXBlb2YgdmFsdWUhPT0iYm9vbGVhbiIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0ICInK19lbWJpbmRfcmVwcih2YWx1ZSkrJyIgdG8gJyt0aGlzLm5hbWUpfWlmKHZhbHVlPG1pblJhbmdlfHx2YWx1ZT5tYXhSYW5nZSl7dGhyb3cgbmV3IFR5cGVFcnJvcignUGFzc2luZyBhIG51bWJlciAiJytfZW1iaW5kX3JlcHIodmFsdWUpKyciIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgIicrbmFtZSsnIiwgd2hpY2ggaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgWycrbWluUmFuZ2UrIiwgIittYXhSYW5nZSsiXSEiKX1yZXR1cm4gdmFsdWV8MH0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LG1pblJhbmdlIT09MCksZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdChyYXdUeXBlLG5hbWUsc2l6ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdmFsdWV9KSwidG9XaXJlVHlwZSI6KGZ1bmN0aW9uKGRlc3RydWN0b3JzLHZhbHVlKXtpZih0eXBlb2YgdmFsdWUhPT0ibnVtYmVyIiYmdHlwZW9mIHZhbHVlIT09ImJvb2xlYW4iKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCAiJytfZW1iaW5kX3JlcHIodmFsdWUpKyciIHRvICcrdGhpcy5uYW1lKX1yZXR1cm4gdmFsdWV9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpmbG9hdFJlYWRWYWx1ZUZyb21Qb2ludGVyKG5hbWUsc2hpZnQpLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gc2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXIocG9pbnRlcil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKEhFQVBVMzJbcG9pbnRlcj4+Ml0pfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF9zdHJpbmcocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIGE9bmV3IEFycmF5KGxlbmd0aCk7Zm9yKHZhciBpPTA7aTxsZW5ndGg7KytpKXthW2ldPVN0cmluZy5mcm9tQ2hhckNvZGUoSEVBUFU4W3ZhbHVlKzQraV0pfV9mcmVlKHZhbHVlKTtyZXR1cm4gYS5qb2luKCIiKX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3ZhbHVlPW5ldyBVaW50OEFycmF5KHZhbHVlKX1mdW5jdGlvbiBnZXRUQUVsZW1lbnQodGEsaW5kZXgpe3JldHVybiB0YVtpbmRleF19ZnVuY3Rpb24gZ2V0U3RyaW5nRWxlbWVudChzdHJpbmcsaW5kZXgpe3JldHVybiBzdHJpbmcuY2hhckNvZGVBdChpbmRleCl9dmFyIGdldEVsZW1lbnQ7aWYodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtnZXRFbGVtZW50PWdldFRBRWxlbWVudH1lbHNlIGlmKHZhbHVlIGluc3RhbmNlb2YgSW50OEFycmF5KXtnZXRFbGVtZW50PWdldFRBRWxlbWVudH1lbHNlIGlmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtnZXRFbGVtZW50PWdldFN0cmluZ0VsZW1lbnR9ZWxzZXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBzdGQ6OnN0cmluZyIpfXZhciBsZW5ndGg9dmFsdWUubGVuZ3RoO3ZhciBwdHI9X21hbGxvYyg0K2xlbmd0aCk7SEVBUFUzMltwdHI+PjJdPWxlbmd0aDtmb3IodmFyIGk9MDtpPGxlbmd0aDsrK2kpe3ZhciBjaGFyQ29kZT1nZXRFbGVtZW50KHZhbHVlLGkpO2lmKGNoYXJDb2RlPjI1NSl7X2ZyZWUocHRyKTt0aHJvd0JpbmRpbmdFcnJvcigiU3RyaW5nIGhhcyBVVEYtMTYgY29kZSB1bml0cyB0aGF0IGRvIG5vdCBmaXQgaW4gOCBiaXRzIil9SEVBUFU4W3B0cis0K2ldPWNoYXJDb2RlfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246KGZ1bmN0aW9uKHB0cil7X2ZyZWUocHRyKX0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmcocmF3VHlwZSxjaGFyU2l6ZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7dmFyIEhFQVAsc2hpZnQ7aWYoY2hhclNpemU9PT0yKXtIRUFQPUhFQVBVMTY7c2hpZnQ9MX1lbHNlIGlmKGNoYXJTaXplPT09NCl7SEVBUD1IRUFQVTMyO3NoaWZ0PTJ9cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIGE9bmV3IEFycmF5KGxlbmd0aCk7dmFyIHN0YXJ0PXZhbHVlKzQ+PnNoaWZ0O2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7YVtpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKEhFQVBbc3RhcnQraV0pfV9mcmVlKHZhbHVlKTtyZXR1cm4gYS5qb2luKCIiKX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe3ZhciBsZW5ndGg9dmFsdWUubGVuZ3RoO3ZhciBwdHI9X21hbGxvYyg0K2xlbmd0aCpjaGFyU2l6ZSk7SEVBUFUzMltwdHI+PjJdPWxlbmd0aDt2YXIgc3RhcnQ9cHRyKzQ+PnNoaWZ0O2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7SEVBUFtzdGFydCtpXT12YWx1ZS5jaGFyQ29kZUF0KGkpfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246KGZ1bmN0aW9uKHB0cil7X2ZyZWUocHRyKX0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZW12YWwocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24oaGFuZGxlKXt2YXIgcnY9X2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnZhbHVlO19fZW12YWxfZGVjcmVmKGhhbmRsZSk7cmV0dXJuIHJ2fSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyx2YWx1ZSl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodmFsdWUpfSksImFyZ1BhY2tBZHZhbmNlIjo4LCJyZWFkVmFsdWVGcm9tUG9pbnRlciI6c2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXIsZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyhyYXdUeXBlLG5hbWUpe3ZhciB0eXBlTWFwcGluZz1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXldO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyZWdpc3RlclR5cGUocmF3VHlwZSx7bmFtZTpuYW1lLCJmcm9tV2lyZVR5cGUiOihmdW5jdGlvbihoYW5kbGUpe3ZhciB0eXBlPUhFQVBVMzJbaGFuZGxlPj4yXTt2YXIgc2l6ZT1IRUFQVTMyWyhoYW5kbGU+PjIpKzFdO3ZhciBkYXRhPUhFQVBVMzJbKGhhbmRsZT4+MikrMl07dmFyIFRBPXR5cGVNYXBwaW5nW3R5cGVdO3JldHVybiBuZXcgVEEoSEVBUDguYnVmZmVyLGRhdGEsc2l6ZSl9KSwiYXJnUGFja0FkdmFuY2UiOjE2LCJyZWFkVmFsdWVGcm9tUG9pbnRlciI6KGZ1bmN0aW9uKHB0cil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKHB0cil9KX0pfWZ1bmN0aW9uIHJ1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKXt3aGlsZShkZXN0cnVjdG9ycy5sZW5ndGgpe3ZhciBwdHI9ZGVzdHJ1Y3RvcnMucG9wKCk7dmFyIGRlbD1kZXN0cnVjdG9ycy5wb3AoKTtkZWwocHRyKX19ZnVuY3Rpb24gbmV3Xyhjb25zdHJ1Y3Rvcixhcmd1bWVudExpc3Qpe2lmKCEoY29uc3RydWN0b3IgaW5zdGFuY2VvZiBGdW5jdGlvbikpe3Rocm93IG5ldyBUeXBlRXJyb3IoIm5ld18gY2FsbGVkIHdpdGggY29uc3RydWN0b3IgdHlwZSAiK3R5cGVvZiBjb25zdHJ1Y3RvcisiIHdoaWNoIGlzIG5vdCBhIGZ1bmN0aW9uIil9dmFyIGR1bW15PWNyZWF0ZU5hbWVkRnVuY3Rpb24oY29uc3RydWN0b3IubmFtZSwoZnVuY3Rpb24oKXt9KSk7ZHVtbXkucHJvdG90eXBlPWNvbnN0cnVjdG9yLnByb3RvdHlwZTt2YXIgb2JqPW5ldyBkdW1teTt2YXIgcj1jb25zdHJ1Y3Rvci5hcHBseShvYmosYXJndW1lbnRMaXN0KTtyZXR1cm4gciBpbnN0YW5jZW9mIE9iamVjdD9yOm9ian1mdW5jdGlvbiBjcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsY2xhc3NUeXBlLGNwcEludm9rZXJGdW5jLGNwcFRhcmdldEZ1bmMpe3ZhciBhcmdDb3VudD1hcmdUeXBlcy5sZW5ndGg7aWYoYXJnQ291bnQ8Mil7dGhyb3dCaW5kaW5nRXJyb3IoImFyZ1R5cGVzIGFycmF5IHNpemUgbWlzbWF0Y2ghIE11c3QgYXQgbGVhc3QgZ2V0IHJldHVybiB2YWx1ZSBhbmQgJ3RoaXMnIHR5cGVzISIpfXZhciBpc0NsYXNzTWV0aG9kRnVuYz1hcmdUeXBlc1sxXSE9PW51bGwmJmNsYXNzVHlwZSE9PW51bGw7dmFyIGFyZ3NMaXN0PSIiO3ZhciBhcmdzTGlzdFdpcmVkPSIiO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2FyZ3NMaXN0Kz0oaSE9PTA/IiwgIjoiIikrImFyZyIraTthcmdzTGlzdFdpcmVkKz0oaSE9PTA/IiwgIjoiIikrImFyZyIraSsiV2lyZWQifXZhciBpbnZva2VyRm5Cb2R5PSJyZXR1cm4gZnVuY3Rpb24gIittYWtlTGVnYWxGdW5jdGlvbk5hbWUoaHVtYW5OYW1lKSsiKCIrYXJnc0xpc3QrIikge1xuIisiaWYgKGFyZ3VtZW50cy5sZW5ndGggIT09ICIrKGFyZ0NvdW50LTIpKyIpIHtcbiIrInRocm93QmluZGluZ0Vycm9yKCdmdW5jdGlvbiAiK2h1bWFuTmFtZSsiIGNhbGxlZCB3aXRoICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBhcmd1bWVudHMsIGV4cGVjdGVkICIrKGFyZ0NvdW50LTIpKyIgYXJncyEnKTtcbiIrIn1cbiI7dmFyIG5lZWRzRGVzdHJ1Y3RvclN0YWNrPWZhbHNlO2Zvcih2YXIgaT0xO2k8YXJnVHlwZXMubGVuZ3RoOysraSl7aWYoYXJnVHlwZXNbaV0hPT1udWxsJiZhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb249PT11bmRlZmluZWQpe25lZWRzRGVzdHJ1Y3RvclN0YWNrPXRydWU7YnJlYWt9fWlmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0idmFyIGRlc3RydWN0b3JzID0gW107XG4ifXZhciBkdG9yU3RhY2s9bmVlZHNEZXN0cnVjdG9yU3RhY2s/ImRlc3RydWN0b3JzIjoibnVsbCI7dmFyIGFyZ3MxPVsidGhyb3dCaW5kaW5nRXJyb3IiLCJpbnZva2VyIiwiZm4iLCJydW5EZXN0cnVjdG9ycyIsInJldFR5cGUiLCJjbGFzc1BhcmFtIl07dmFyIGFyZ3MyPVt0aHJvd0JpbmRpbmdFcnJvcixjcHBJbnZva2VyRnVuYyxjcHBUYXJnZXRGdW5jLHJ1bkRlc3RydWN0b3JzLGFyZ1R5cGVzWzBdLGFyZ1R5cGVzWzFdXTtpZihpc0NsYXNzTWV0aG9kRnVuYyl7aW52b2tlckZuQm9keSs9InZhciB0aGlzV2lyZWQgPSBjbGFzc1BhcmFtLnRvV2lyZVR5cGUoIitkdG9yU3RhY2srIiwgdGhpcyk7XG4ifWZvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2ludm9rZXJGbkJvZHkrPSJ2YXIgYXJnIitpKyJXaXJlZCA9IGFyZ1R5cGUiK2krIi50b1dpcmVUeXBlKCIrZHRvclN0YWNrKyIsIGFyZyIraSsiKTsgLy8gIithcmdUeXBlc1tpKzJdLm5hbWUrIlxuIjthcmdzMS5wdXNoKCJhcmdUeXBlIitpKTthcmdzMi5wdXNoKGFyZ1R5cGVzW2krMl0pfWlmKGlzQ2xhc3NNZXRob2RGdW5jKXthcmdzTGlzdFdpcmVkPSJ0aGlzV2lyZWQiKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWR9dmFyIHJldHVybnM9YXJnVHlwZXNbMF0ubmFtZSE9PSJ2b2lkIjtpbnZva2VyRm5Cb2R5Kz0ocmV0dXJucz8idmFyIHJ2ID0gIjoiIikrImludm9rZXIoZm4iKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWQrIik7XG4iO2lmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0icnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpO1xuIn1lbHNle2Zvcih2YXIgaT1pc0NsYXNzTWV0aG9kRnVuYz8xOjI7aTxhcmdUeXBlcy5sZW5ndGg7KytpKXt2YXIgcGFyYW1OYW1lPWk9PT0xPyJ0aGlzV2lyZWQiOiJhcmciKyhpLTIpKyJXaXJlZCI7aWYoYXJnVHlwZXNbaV0uZGVzdHJ1Y3RvckZ1bmN0aW9uIT09bnVsbCl7aW52b2tlckZuQm9keSs9cGFyYW1OYW1lKyJfZHRvcigiK3BhcmFtTmFtZSsiKTsgLy8gIithcmdUeXBlc1tpXS5uYW1lKyJcbiI7YXJnczEucHVzaChwYXJhbU5hbWUrIl9kdG9yIik7YXJnczIucHVzaChhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb24pfX19aWYocmV0dXJucyl7aW52b2tlckZuQm9keSs9InJldHVybiByZXRUeXBlLmZyb21XaXJlVHlwZShydik7XG4ifWludm9rZXJGbkJvZHkrPSJ9XG4iO2FyZ3MxLnB1c2goaW52b2tlckZuQm9keSk7dmFyIGludm9rZXJGdW5jdGlvbj1uZXdfKEZ1bmN0aW9uLGFyZ3MxKS5hcHBseShudWxsLGFyZ3MyKTtyZXR1cm4gaW52b2tlckZ1bmN0aW9ufWZ1bmN0aW9uIHJlcXVpcmVGdW5jdGlvbihzaWduYXR1cmUscmF3RnVuY3Rpb24pe3NpZ25hdHVyZT1yZWFkTGF0aW4xU3RyaW5nKHNpZ25hdHVyZSk7dmFyIGZwO2lmKHR5cGVvZiBGVU5DVElPTl9UQUJMRT09PSJ1bmRlZmluZWQiKXt2YXIgZGM9YXNtWyJkeW5DYWxsXyIrc2lnbmF0dXJlXTtpZihkYz09PXVuZGVmaW5lZCl7ZGM9YXNtWyJkeW5DYWxsXyIrc2lnbmF0dXJlLnJlcGxhY2UoL2YvZywiZCIpXTtpZihkYz09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoIk5vIGR5bkNhbGwgaW52b2tlciBmb3Igc2lnbmF0dXJlOiAiK3NpZ25hdHVyZSl9fWZwPWRjLmJpbmQodW5kZWZpbmVkLHJhd0Z1bmN0aW9uKX1lbHNle2ZwPUZVTkNUSU9OX1RBQkxFW3Jhd0Z1bmN0aW9uXX1pZih0eXBlb2YgZnAhPT0iZnVuY3Rpb24iKXt0aHJvd0JpbmRpbmdFcnJvcigidW5rbm93biBmdW5jdGlvbiBwb2ludGVyIHdpdGggc2lnbmF0dXJlICIrc2lnbmF0dXJlKyI6ICIrcmF3RnVuY3Rpb24pfXJldHVybiBmcH1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mdW5jdGlvbihuYW1lLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixzaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIGFyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmF3SW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oc2lnbmF0dXJlLHJhd0ludm9rZXIpO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLChmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIituYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLGFyZ1R5cGVzKX0pLGFyZ0NvdW50LTEpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLGFyZ1R5cGVzLChmdW5jdGlvbihhcmdUeXBlcyl7dmFyIGludm9rZXJBcmdzQXJyYXk9W2FyZ1R5cGVzWzBdLG51bGxdLmNvbmNhdChhcmdUeXBlcy5zbGljZSgxKSk7cmVwbGFjZVB1YmxpY1N5bWJvbChuYW1lLGNyYWZ0SW52b2tlckZ1bmN0aW9uKG5hbWUsaW52b2tlckFyZ3NBcnJheSxudWxsLHJhd0ludm9rZXIsZm4pLGFyZ0NvdW50LTEpO3JldHVybltdfSkpfXZhciB0dXBsZVJlZ2lzdHJhdGlvbnM9e307ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdmFsdWVfYXJyYXkocmF3VHlwZSxuYW1lLGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yLGRlc3RydWN0b3JTaWduYXR1cmUscmF3RGVzdHJ1Y3Rvcil7dHVwbGVSZWdpc3RyYXRpb25zW3Jhd1R5cGVdPXtuYW1lOnJlYWRMYXRpbjFTdHJpbmcobmFtZSkscmF3Q29uc3RydWN0b3I6cmVxdWlyZUZ1bmN0aW9uKGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yKSxyYXdEZXN0cnVjdG9yOnJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpLGVsZW1lbnRzOltdfX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl92YWx1ZV9hcnJheV9lbGVtZW50KHJhd1R1cGxlVHlwZSxnZXR0ZXJSZXR1cm5UeXBlLGdldHRlclNpZ25hdHVyZSxnZXR0ZXIsZ2V0dGVyQ29udGV4dCxzZXR0ZXJBcmd1bWVudFR5cGUsc2V0dGVyU2lnbmF0dXJlLHNldHRlcixzZXR0ZXJDb250ZXh0KXt0dXBsZVJlZ2lzdHJhdGlvbnNbcmF3VHVwbGVUeXBlXS5lbGVtZW50cy5wdXNoKHtnZXR0ZXJSZXR1cm5UeXBlOmdldHRlclJldHVyblR5cGUsZ2V0dGVyOnJlcXVpcmVGdW5jdGlvbihnZXR0ZXJTaWduYXR1cmUsZ2V0dGVyKSxnZXR0ZXJDb250ZXh0OmdldHRlckNvbnRleHQsc2V0dGVyQXJndW1lbnRUeXBlOnNldHRlckFyZ3VtZW50VHlwZSxzZXR0ZXI6cmVxdWlyZUZ1bmN0aW9uKHNldHRlclNpZ25hdHVyZSxzZXR0ZXIpLHNldHRlckNvbnRleHQ6c2V0dGVyQ29udGV4dH0pfWZ1bmN0aW9uIF9fZW1iaW5kX2ZpbmFsaXplX3ZhbHVlX2FycmF5KHJhd1R1cGxlVHlwZSl7dmFyIHJlZz10dXBsZVJlZ2lzdHJhdGlvbnNbcmF3VHVwbGVUeXBlXTtkZWxldGUgdHVwbGVSZWdpc3RyYXRpb25zW3Jhd1R1cGxlVHlwZV07dmFyIGVsZW1lbnRzPXJlZy5lbGVtZW50czt2YXIgZWxlbWVudHNMZW5ndGg9ZWxlbWVudHMubGVuZ3RoO3ZhciBlbGVtZW50VHlwZXM9ZWxlbWVudHMubWFwKChmdW5jdGlvbihlbHQpe3JldHVybiBlbHQuZ2V0dGVyUmV0dXJuVHlwZX0pKS5jb25jYXQoZWxlbWVudHMubWFwKChmdW5jdGlvbihlbHQpe3JldHVybiBlbHQuc2V0dGVyQXJndW1lbnRUeXBlfSkpKTt2YXIgcmF3Q29uc3RydWN0b3I9cmVnLnJhd0NvbnN0cnVjdG9yO3ZhciByYXdEZXN0cnVjdG9yPXJlZy5yYXdEZXN0cnVjdG9yO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtyYXdUdXBsZVR5cGVdLGVsZW1lbnRUeXBlcywoZnVuY3Rpb24oZWxlbWVudFR5cGVzKXtlbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlbHQsaSl7dmFyIGdldHRlclJldHVyblR5cGU9ZWxlbWVudFR5cGVzW2ldO3ZhciBnZXR0ZXI9ZWx0LmdldHRlcjt2YXIgZ2V0dGVyQ29udGV4dD1lbHQuZ2V0dGVyQ29udGV4dDt2YXIgc2V0dGVyQXJndW1lbnRUeXBlPWVsZW1lbnRUeXBlc1tpK2VsZW1lbnRzTGVuZ3RoXTt2YXIgc2V0dGVyPWVsdC5zZXR0ZXI7dmFyIHNldHRlckNvbnRleHQ9ZWx0LnNldHRlckNvbnRleHQ7ZWx0LnJlYWQ9KGZ1bmN0aW9uKHB0cil7cmV0dXJuIGdldHRlclJldHVyblR5cGVbImZyb21XaXJlVHlwZSJdKGdldHRlcihnZXR0ZXJDb250ZXh0LHB0cikpfSk7ZWx0LndyaXRlPShmdW5jdGlvbihwdHIsbyl7dmFyIGRlc3RydWN0b3JzPVtdO3NldHRlcihzZXR0ZXJDb250ZXh0LHB0cixzZXR0ZXJBcmd1bWVudFR5cGVbInRvV2lyZVR5cGUiXShkZXN0cnVjdG9ycyxvKSk7cnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpfSl9KSk7cmV0dXJuW3tuYW1lOnJlZy5uYW1lLCJmcm9tV2lyZVR5cGUiOihmdW5jdGlvbihwdHIpe3ZhciBydj1uZXcgQXJyYXkoZWxlbWVudHNMZW5ndGgpO2Zvcih2YXIgaT0wO2k8ZWxlbWVudHNMZW5ndGg7KytpKXtydltpXT1lbGVtZW50c1tpXS5yZWFkKHB0cil9cmF3RGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7aWYoZWxlbWVudHNMZW5ndGghPT1vLmxlbmd0aCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW5jb3JyZWN0IG51bWJlciBvZiB0dXBsZSBlbGVtZW50cyBmb3IgIityZWcubmFtZSsiOiBleHBlY3RlZD0iK2VsZW1lbnRzTGVuZ3RoKyIsIGFjdHVhbD0iK28ubGVuZ3RoKX12YXIgcHRyPXJhd0NvbnN0cnVjdG9yKCk7Zm9yKHZhciBpPTA7aTxlbGVtZW50c0xlbmd0aDsrK2kpe2VsZW1lbnRzW2ldLndyaXRlKHB0cixvW2ldKX1pZihkZXN0cnVjdG9ycyE9PW51bGwpe2Rlc3RydWN0b3JzLnB1c2gocmF3RGVzdHJ1Y3RvcixwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246cmF3RGVzdHJ1Y3Rvcn1dfSkpfXZhciBzdHJ1Y3RSZWdpc3RyYXRpb25zPXt9O2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3ZhbHVlX29iamVjdChyYXdUeXBlLG5hbWUsY29uc3RydWN0b3JTaWduYXR1cmUscmF3Q29uc3RydWN0b3IsZGVzdHJ1Y3RvclNpZ25hdHVyZSxyYXdEZXN0cnVjdG9yKXtzdHJ1Y3RSZWdpc3RyYXRpb25zW3Jhd1R5cGVdPXtuYW1lOnJlYWRMYXRpbjFTdHJpbmcobmFtZSkscmF3Q29uc3RydWN0b3I6cmVxdWlyZUZ1bmN0aW9uKGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yKSxyYXdEZXN0cnVjdG9yOnJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpLGZpZWxkczpbXX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdmFsdWVfb2JqZWN0X2ZpZWxkKHN0cnVjdFR5cGUsZmllbGROYW1lLGdldHRlclJldHVyblR5cGUsZ2V0dGVyU2lnbmF0dXJlLGdldHRlcixnZXR0ZXJDb250ZXh0LHNldHRlckFyZ3VtZW50VHlwZSxzZXR0ZXJTaWduYXR1cmUsc2V0dGVyLHNldHRlckNvbnRleHQpe3N0cnVjdFJlZ2lzdHJhdGlvbnNbc3RydWN0VHlwZV0uZmllbGRzLnB1c2goe2ZpZWxkTmFtZTpyZWFkTGF0aW4xU3RyaW5nKGZpZWxkTmFtZSksZ2V0dGVyUmV0dXJuVHlwZTpnZXR0ZXJSZXR1cm5UeXBlLGdldHRlcjpyZXF1aXJlRnVuY3Rpb24oZ2V0dGVyU2lnbmF0dXJlLGdldHRlciksZ2V0dGVyQ29udGV4dDpnZXR0ZXJDb250ZXh0LHNldHRlckFyZ3VtZW50VHlwZTpzZXR0ZXJBcmd1bWVudFR5cGUsc2V0dGVyOnJlcXVpcmVGdW5jdGlvbihzZXR0ZXJTaWduYXR1cmUsc2V0dGVyKSxzZXR0ZXJDb250ZXh0OnNldHRlckNvbnRleHR9KX1mdW5jdGlvbiBfX2VtYmluZF9maW5hbGl6ZV92YWx1ZV9vYmplY3Qoc3RydWN0VHlwZSl7dmFyIHJlZz1zdHJ1Y3RSZWdpc3RyYXRpb25zW3N0cnVjdFR5cGVdO2RlbGV0ZSBzdHJ1Y3RSZWdpc3RyYXRpb25zW3N0cnVjdFR5cGVdO3ZhciByYXdDb25zdHJ1Y3Rvcj1yZWcucmF3Q29uc3RydWN0b3I7dmFyIHJhd0Rlc3RydWN0b3I9cmVnLnJhd0Rlc3RydWN0b3I7dmFyIGZpZWxkUmVjb3Jkcz1yZWcuZmllbGRzO3ZhciBmaWVsZFR5cGVzPWZpZWxkUmVjb3Jkcy5tYXAoKGZ1bmN0aW9uKGZpZWxkKXtyZXR1cm4gZmllbGQuZ2V0dGVyUmV0dXJuVHlwZX0pKS5jb25jYXQoZmllbGRSZWNvcmRzLm1hcCgoZnVuY3Rpb24oZmllbGQpe3JldHVybiBmaWVsZC5zZXR0ZXJBcmd1bWVudFR5cGV9KSkpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtzdHJ1Y3RUeXBlXSxmaWVsZFR5cGVzLChmdW5jdGlvbihmaWVsZFR5cGVzKXt2YXIgZmllbGRzPXt9O2ZpZWxkUmVjb3Jkcy5mb3JFYWNoKChmdW5jdGlvbihmaWVsZCxpKXt2YXIgZmllbGROYW1lPWZpZWxkLmZpZWxkTmFtZTt2YXIgZ2V0dGVyUmV0dXJuVHlwZT1maWVsZFR5cGVzW2ldO3ZhciBnZXR0ZXI9ZmllbGQuZ2V0dGVyO3ZhciBnZXR0ZXJDb250ZXh0PWZpZWxkLmdldHRlckNvbnRleHQ7dmFyIHNldHRlckFyZ3VtZW50VHlwZT1maWVsZFR5cGVzW2krZmllbGRSZWNvcmRzLmxlbmd0aF07dmFyIHNldHRlcj1maWVsZC5zZXR0ZXI7dmFyIHNldHRlckNvbnRleHQ9ZmllbGQuc2V0dGVyQ29udGV4dDtmaWVsZHNbZmllbGROYW1lXT17cmVhZDooZnVuY3Rpb24ocHRyKXtyZXR1cm4gZ2V0dGVyUmV0dXJuVHlwZVsiZnJvbVdpcmVUeXBlIl0oZ2V0dGVyKGdldHRlckNvbnRleHQscHRyKSl9KSx3cml0ZTooZnVuY3Rpb24ocHRyLG8pe3ZhciBkZXN0cnVjdG9ycz1bXTtzZXR0ZXIoc2V0dGVyQ29udGV4dCxwdHIsc2V0dGVyQXJndW1lbnRUeXBlWyJ0b1dpcmVUeXBlIl0oZGVzdHJ1Y3RvcnMsbykpO3J1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKX0pfX0pKTtyZXR1cm5be25hbWU6cmVnLm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHB0cil7dmFyIHJ2PXt9O2Zvcih2YXIgaSBpbiBmaWVsZHMpe3J2W2ldPWZpZWxkc1tpXS5yZWFkKHB0cil9cmF3RGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7Zm9yKHZhciBmaWVsZE5hbWUgaW4gZmllbGRzKXtpZighKGZpZWxkTmFtZSBpbiBvKSl7dGhyb3cgbmV3IFR5cGVFcnJvcigiTWlzc2luZyBmaWVsZCIpfX12YXIgcHRyPXJhd0NvbnN0cnVjdG9yKCk7Zm9yKGZpZWxkTmFtZSBpbiBmaWVsZHMpe2ZpZWxkc1tmaWVsZE5hbWVdLndyaXRlKHB0cixvW2ZpZWxkTmFtZV0pfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChyYXdEZXN0cnVjdG9yLHB0cil9cmV0dXJuIHB0cn0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOnNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyLGRlc3RydWN0b3JGdW5jdGlvbjpyYXdEZXN0cnVjdG9yfV19KSl9dmFyIGdlbmVyaWNQb2ludGVyVG9XaXJlVHlwZT0oZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsaGFuZGxlKXtpZihoYW5kbGU9PT1udWxsKXtpZih0aGlzLmlzUmVmZXJlbmNlKXt0aHJvd0JpbmRpbmdFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCAiK3RoaXMubmFtZSl9aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7dmFyIHB0cj10aGlzLnJhd0NvbnN0cnVjdG9yKCk7aWYoZGVzdHJ1Y3RvcnMhPT1udWxsKXtkZXN0cnVjdG9ycy5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixwdHIpfXJldHVybiBwdHJ9ZWxzZXtyZXR1cm4gMH19aWYoIWhhbmRsZS4kJCl7dGhyb3dCaW5kaW5nRXJyb3IoJ0Nhbm5vdCBwYXNzICInK19lbWJpbmRfcmVwcihoYW5kbGUpKyciIGFzIGEgJyt0aGlzLm5hbWUpfWlmKCFoYW5kbGUuJCQucHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgIit0aGlzLm5hbWUpfWlmKCF0aGlzLmlzQ29uc3QmJmhhbmRsZS4kJC5wdHJUeXBlLmlzQ29uc3Qpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlICIrKGhhbmRsZS4kJC5zbWFydFB0clR5cGU/aGFuZGxlLiQkLnNtYXJ0UHRyVHlwZS5uYW1lOmhhbmRsZS4kJC5wdHJUeXBlLm5hbWUpKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpfXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO2lmKHRoaXMuaXNTbWFydFBvaW50ZXIpe2lmKHVuZGVmaW5lZD09PWhhbmRsZS4kJC5zbWFydFB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIil9c3dpdGNoKHRoaXMuc2hhcmluZ1BvbGljeSl7Y2FzZSAwOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyfWVsc2V7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIisoaGFuZGxlLiQkLnNtYXJ0UHRyVHlwZT9oYW5kbGUuJCQuc21hcnRQdHJUeXBlLm5hbWU6aGFuZGxlLiQkLnB0clR5cGUubmFtZSkrIiB0byBwYXJhbWV0ZXIgdHlwZSAiK3RoaXMubmFtZSl9YnJlYWs7Y2FzZSAxOnB0cj1oYW5kbGUuJCQuc21hcnRQdHI7YnJlYWs7Y2FzZSAyOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyfWVsc2V7dmFyIGNsb25lZEhhbmRsZT1oYW5kbGVbImNsb25lIl0oKTtwdHI9dGhpcy5yYXdTaGFyZShwdHIsX19lbXZhbF9yZWdpc3RlcigoZnVuY3Rpb24oKXtjbG9uZWRIYW5kbGVbImRlbGV0ZSJdKCl9KSkpO2lmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaCh0aGlzLnJhd0Rlc3RydWN0b3IscHRyKX19YnJlYWs7ZGVmYXVsdDp0aHJvd0JpbmRpbmdFcnJvcigiVW5zdXBwb3J0aW5nIHNoYXJpbmcgcG9saWN5Iil9fXJldHVybiBwdHJ9KTt2YXIgY29uc3ROb1NtYXJ0UHRyUmF3UG9pbnRlclRvV2lyZVR5cGU9KGZ1bmN0aW9uKGRlc3RydWN0b3JzLGhhbmRsZSl7aWYoaGFuZGxlPT09bnVsbCl7aWYodGhpcy5pc1JlZmVyZW5jZSl7dGhyb3dCaW5kaW5nRXJyb3IoIm51bGwgaXMgbm90IGEgdmFsaWQgIit0aGlzLm5hbWUpfXJldHVybiAwfWlmKCFoYW5kbGUuJCQpe3Rocm93QmluZGluZ0Vycm9yKCdDYW5ub3QgcGFzcyAiJytfZW1iaW5kX3JlcHIoaGFuZGxlKSsnIiBhcyBhICcrdGhpcy5uYW1lKX1pZighaGFuZGxlLiQkLnB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKX12YXIgaGFuZGxlQ2xhc3M9aGFuZGxlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBwdHI9dXBjYXN0UG9pbnRlcihoYW5kbGUuJCQucHRyLGhhbmRsZUNsYXNzLHRoaXMucmVnaXN0ZXJlZENsYXNzKTtyZXR1cm4gcHRyfSk7dmFyIG5vbkNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlPShmdW5jdGlvbihkZXN0cnVjdG9ycyxoYW5kbGUpe2lmKGhhbmRsZT09PW51bGwpe2lmKHRoaXMuaXNSZWZlcmVuY2Upe3Rocm93QmluZGluZ0Vycm9yKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKX1yZXR1cm4gMH1pZighaGFuZGxlLiQkKXt0aHJvd0JpbmRpbmdFcnJvcignQ2Fubm90IHBhc3MgIicrX2VtYmluZF9yZXByKGhhbmRsZSkrJyIgYXMgYSAnK3RoaXMubmFtZSl9aWYoIWhhbmRsZS4kJC5wdHIpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAiK3RoaXMubmFtZSl9aWYoaGFuZGxlLiQkLnB0clR5cGUuaXNDb25zdCl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIitoYW5kbGUuJCQucHRyVHlwZS5uYW1lKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpfXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBwdHJ9KTtmdW5jdGlvbiBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHJlZ2lzdGVyZWRDbGFzcyxpc1JlZmVyZW5jZSxpc0NvbnN0LGlzU21hcnRQb2ludGVyLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKXt0aGlzLm5hbWU9bmFtZTt0aGlzLnJlZ2lzdGVyZWRDbGFzcz1yZWdpc3RlcmVkQ2xhc3M7dGhpcy5pc1JlZmVyZW5jZT1pc1JlZmVyZW5jZTt0aGlzLmlzQ29uc3Q9aXNDb25zdDt0aGlzLmlzU21hcnRQb2ludGVyPWlzU21hcnRQb2ludGVyO3RoaXMucG9pbnRlZVR5cGU9cG9pbnRlZVR5cGU7dGhpcy5zaGFyaW5nUG9saWN5PXNoYXJpbmdQb2xpY3k7dGhpcy5yYXdHZXRQb2ludGVlPXJhd0dldFBvaW50ZWU7dGhpcy5yYXdDb25zdHJ1Y3Rvcj1yYXdDb25zdHJ1Y3Rvcjt0aGlzLnJhd1NoYXJlPXJhd1NoYXJlO3RoaXMucmF3RGVzdHJ1Y3Rvcj1yYXdEZXN0cnVjdG9yO2lmKCFpc1NtYXJ0UG9pbnRlciYmcmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcz09PXVuZGVmaW5lZCl7aWYoaXNDb25zdCl7dGhpc1sidG9XaXJlVHlwZSJdPWNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlO3RoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGx9ZWxzZXt0aGlzWyJ0b1dpcmVUeXBlIl09bm9uQ29uc3ROb1NtYXJ0UHRyUmF3UG9pbnRlclRvV2lyZVR5cGU7dGhpcy5kZXN0cnVjdG9yRnVuY3Rpb249bnVsbH19ZWxzZXt0aGlzWyJ0b1dpcmVUeXBlIl09Z2VuZXJpY1BvaW50ZXJUb1dpcmVUeXBlfX1SZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGUuZ2V0UG9pbnRlZT1mdW5jdGlvbiBnZXRQb2ludGVlKHB0cil7aWYodGhpcy5yYXdHZXRQb2ludGVlKXtwdHI9dGhpcy5yYXdHZXRQb2ludGVlKHB0cil9cmV0dXJuIHB0cn07UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24gZGVzdHJ1Y3RvcihwdHIpe2lmKHRoaXMucmF3RGVzdHJ1Y3Rvcil7dGhpcy5yYXdEZXN0cnVjdG9yKHB0cil9fTtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbImFyZ1BhY2tBZHZhbmNlIl09ODtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl09c2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXI7UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlWyJkZWxldGVPYmplY3QiXT1mdW5jdGlvbiBkZWxldGVPYmplY3QoaGFuZGxlKXtpZihoYW5kbGUhPT1udWxsKXtoYW5kbGVbImRlbGV0ZSJdKCl9fTtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbImZyb21XaXJlVHlwZSJdPWZ1bmN0aW9uIGZyb21XaXJlVHlwZShwdHIpe3ZhciByYXdQb2ludGVyPXRoaXMuZ2V0UG9pbnRlZShwdHIpO2lmKCFyYXdQb2ludGVyKXt0aGlzLmRlc3RydWN0b3IocHRyKTtyZXR1cm4gbnVsbH12YXIgcmVnaXN0ZXJlZEluc3RhbmNlPWdldEluaGVyaXRlZEluc3RhbmNlKHRoaXMucmVnaXN0ZXJlZENsYXNzLHJhd1BvaW50ZXIpO2lmKHVuZGVmaW5lZCE9PXJlZ2lzdGVyZWRJbnN0YW5jZSl7aWYoMD09PXJlZ2lzdGVyZWRJbnN0YW5jZS4kJC5jb3VudC52YWx1ZSl7cmVnaXN0ZXJlZEluc3RhbmNlLiQkLnB0cj1yYXdQb2ludGVyO3JlZ2lzdGVyZWRJbnN0YW5jZS4kJC5zbWFydFB0cj1wdHI7cmV0dXJuIHJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpfWVsc2V7dmFyIHJ2PXJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpO3RoaXMuZGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn19ZnVuY3Rpb24gbWFrZURlZmF1bHRIYW5kbGUoKXtpZih0aGlzLmlzU21hcnRQb2ludGVyKXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMucG9pbnRlZVR5cGUscHRyOnJhd1BvaW50ZXIsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMscHRyOnB0cn0pfX12YXIgYWN0dWFsVHlwZT10aGlzLnJlZ2lzdGVyZWRDbGFzcy5nZXRBY3R1YWxUeXBlKHJhd1BvaW50ZXIpO3ZhciByZWdpc3RlcmVkUG9pbnRlclJlY29yZD1yZWdpc3RlcmVkUG9pbnRlcnNbYWN0dWFsVHlwZV07aWYoIXJlZ2lzdGVyZWRQb2ludGVyUmVjb3JkKXtyZXR1cm4gbWFrZURlZmF1bHRIYW5kbGUuY2FsbCh0aGlzKX12YXIgdG9UeXBlO2lmKHRoaXMuaXNDb25zdCl7dG9UeXBlPXJlZ2lzdGVyZWRQb2ludGVyUmVjb3JkLmNvbnN0UG9pbnRlclR5cGV9ZWxzZXt0b1R5cGU9cmVnaXN0ZXJlZFBvaW50ZXJSZWNvcmQucG9pbnRlclR5cGV9dmFyIGRwPWRvd25jYXN0UG9pbnRlcihyYXdQb2ludGVyLHRoaXMucmVnaXN0ZXJlZENsYXNzLHRvVHlwZS5yZWdpc3RlcmVkQ2xhc3MpO2lmKGRwPT09bnVsbCl7cmV0dXJuIG1ha2VEZWZhdWx0SGFuZGxlLmNhbGwodGhpcyl9aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7cmV0dXJuIG1ha2VDbGFzc0hhbmRsZSh0b1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRvVHlwZSxwdHI6ZHAsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRvVHlwZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUse3B0clR5cGU6dG9UeXBlLHB0cjpkcH0pfX07ZnVuY3Rpb24gbWFrZUNsYXNzSGFuZGxlKHByb3RvdHlwZSxyZWNvcmQpe2lmKCFyZWNvcmQucHRyVHlwZXx8IXJlY29yZC5wdHIpe3Rocm93SW50ZXJuYWxFcnJvcigibWFrZUNsYXNzSGFuZGxlIHJlcXVpcmVzIHB0ciBhbmQgcHRyVHlwZSIpfXZhciBoYXNTbWFydFB0clR5cGU9ISFyZWNvcmQuc21hcnRQdHJUeXBlO3ZhciBoYXNTbWFydFB0cj0hIXJlY29yZC5zbWFydFB0cjtpZihoYXNTbWFydFB0clR5cGUhPT1oYXNTbWFydFB0cil7dGhyb3dJbnRlcm5hbEVycm9yKCJCb3RoIHNtYXJ0UHRyVHlwZSBhbmQgc21hcnRQdHIgbXVzdCBiZSBzcGVjaWZpZWQiKX1yZWNvcmQuY291bnQ9e3ZhbHVlOjF9O3JldHVybiBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSx7JCQ6e3ZhbHVlOnJlY29yZH19KX1mdW5jdGlvbiBDbGFzc0hhbmRsZSgpe31mdW5jdGlvbiBnZXRJbnN0YW5jZVR5cGVOYW1lKGhhbmRsZSl7cmV0dXJuIGhhbmRsZS4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5uYW1lfUNsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNBbGlhc09mIl09ZnVuY3Rpb24gaXNBbGlhc09mKG90aGVyKXtpZighKHRoaXMgaW5zdGFuY2VvZiBDbGFzc0hhbmRsZSkpe3JldHVybiBmYWxzZX1pZighKG90aGVyIGluc3RhbmNlb2YgQ2xhc3NIYW5kbGUpKXtyZXR1cm4gZmFsc2V9dmFyIGxlZnRDbGFzcz10aGlzLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBsZWZ0PXRoaXMuJCQucHRyO3ZhciByaWdodENsYXNzPW90aGVyLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciByaWdodD1vdGhlci4kJC5wdHI7d2hpbGUobGVmdENsYXNzLmJhc2VDbGFzcyl7bGVmdD1sZWZ0Q2xhc3MudXBjYXN0KGxlZnQpO2xlZnRDbGFzcz1sZWZ0Q2xhc3MuYmFzZUNsYXNzfXdoaWxlKHJpZ2h0Q2xhc3MuYmFzZUNsYXNzKXtyaWdodD1yaWdodENsYXNzLnVwY2FzdChyaWdodCk7cmlnaHRDbGFzcz1yaWdodENsYXNzLmJhc2VDbGFzc31yZXR1cm4gbGVmdENsYXNzPT09cmlnaHRDbGFzcyYmbGVmdD09PXJpZ2h0fTtmdW5jdGlvbiB0aHJvd0luc3RhbmNlQWxyZWFkeURlbGV0ZWQob2JqKXt0aHJvd0JpbmRpbmdFcnJvcihnZXRJbnN0YW5jZVR5cGVOYW1lKG9iaikrIiBpbnN0YW5jZSBhbHJlYWR5IGRlbGV0ZWQiKX1DbGFzc0hhbmRsZS5wcm90b3R5cGVbImNsb25lIl09ZnVuY3Rpb24gY2xvbmUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlKXt0aGlzLiQkLmNvdW50LnZhbHVlKz0xO3JldHVybiB0aGlzfWVsc2V7dmFyIGNsb25lPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLHskJDp7dmFsdWU6c2hhbGxvd0NvcHkodGhpcy4kJCl9fSk7Y2xvbmUuJCQuY291bnQudmFsdWUrPTE7cmV0dXJuIGNsb25lfX07ZnVuY3Rpb24gcnVuRGVzdHJ1Y3RvcihoYW5kbGUpe3ZhciAkJD1oYW5kbGUuJCQ7aWYoJCQuc21hcnRQdHIpeyQkLnNtYXJ0UHRyVHlwZS5yYXdEZXN0cnVjdG9yKCQkLnNtYXJ0UHRyKX1lbHNleyQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLnJhd0Rlc3RydWN0b3IoJCQucHRyKX19Q2xhc3NIYW5kbGUucHJvdG90eXBlWyJkZWxldGUiXT1mdW5jdGlvbiBDbGFzc0hhbmRsZV9kZWxldGUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3Rocm93QmluZGluZ0Vycm9yKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIil9dGhpcy4kJC5jb3VudC52YWx1ZS09MTt2YXIgdG9EZWxldGU9MD09PXRoaXMuJCQuY291bnQudmFsdWU7aWYodG9EZWxldGUpe3J1bkRlc3RydWN0b3IodGhpcyl9aWYoIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3RoaXMuJCQuc21hcnRQdHI9dW5kZWZpbmVkO3RoaXMuJCQucHRyPXVuZGVmaW5lZH19O3ZhciBkZWxldGlvblF1ZXVlPVtdO0NsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNEZWxldGVkIl09ZnVuY3Rpb24gaXNEZWxldGVkKCl7cmV0dXJuIXRoaXMuJCQucHRyfTtDbGFzc0hhbmRsZS5wcm90b3R5cGVbImRlbGV0ZUxhdGVyIl09ZnVuY3Rpb24gZGVsZXRlTGF0ZXIoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3Rocm93QmluZGluZ0Vycm9yKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIil9ZGVsZXRpb25RdWV1ZS5wdXNoKHRoaXMpO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoPT09MSYmZGVsYXlGdW5jdGlvbil7ZGVsYXlGdW5jdGlvbihmbHVzaFBlbmRpbmdEZWxldGVzKX10aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZD10cnVlO3JldHVybiB0aGlzfTtmdW5jdGlvbiBmbHVzaFBlbmRpbmdEZWxldGVzKCl7d2hpbGUoZGVsZXRpb25RdWV1ZS5sZW5ndGgpe3ZhciBvYmo9ZGVsZXRpb25RdWV1ZS5wb3AoKTtvYmouJCQuZGVsZXRlU2NoZWR1bGVkPWZhbHNlO29ialsiZGVsZXRlIl0oKX19TW9kdWxlWyJmbHVzaFBlbmRpbmdEZWxldGVzIl09Zmx1c2hQZW5kaW5nRGVsZXRlczt2YXIgZGVsYXlGdW5jdGlvbjtNb2R1bGVbInNldERlbGF5RnVuY3Rpb24iXT1mdW5jdGlvbiBzZXREZWxheUZ1bmN0aW9uKGZuKXtkZWxheUZ1bmN0aW9uPWZuO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoJiZkZWxheUZ1bmN0aW9uKXtkZWxheUZ1bmN0aW9uKGZsdXNoUGVuZGluZ0RlbGV0ZXMpfX07ZnVuY3Rpb24gUmVnaXN0ZXJlZENsYXNzKG5hbWUsY29uc3RydWN0b3IsaW5zdGFuY2VQcm90b3R5cGUscmF3RGVzdHJ1Y3RvcixiYXNlQ2xhc3MsZ2V0QWN0dWFsVHlwZSx1cGNhc3QsZG93bmNhc3Qpe3RoaXMubmFtZT1uYW1lO3RoaXMuY29uc3RydWN0b3I9Y29uc3RydWN0b3I7dGhpcy5pbnN0YW5jZVByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt0aGlzLnJhd0Rlc3RydWN0b3I9cmF3RGVzdHJ1Y3Rvcjt0aGlzLmJhc2VDbGFzcz1iYXNlQ2xhc3M7dGhpcy5nZXRBY3R1YWxUeXBlPWdldEFjdHVhbFR5cGU7dGhpcy51cGNhc3Q9dXBjYXN0O3RoaXMuZG93bmNhc3Q9ZG93bmNhc3Q7dGhpcy5wdXJlVmlydHVhbEZ1bmN0aW9ucz1bXX1mdW5jdGlvbiBzaGFsbG93Q29weShvKXt2YXIgcnY9e307Zm9yKHZhciBrIGluIG8pe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLGspKXtydltrXT1vW2tdfX1yZXR1cm4gcnZ9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3MocmF3VHlwZSxyYXdQb2ludGVyVHlwZSxyYXdDb25zdFBvaW50ZXJUeXBlLGJhc2VDbGFzc1Jhd1R5cGUsZ2V0QWN0dWFsVHlwZVNpZ25hdHVyZSxnZXRBY3R1YWxUeXBlLHVwY2FzdFNpZ25hdHVyZSx1cGNhc3QsZG93bmNhc3RTaWduYXR1cmUsZG93bmNhc3QsbmFtZSxkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3Ipe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtnZXRBY3R1YWxUeXBlPXJlcXVpcmVGdW5jdGlvbihnZXRBY3R1YWxUeXBlU2lnbmF0dXJlLGdldEFjdHVhbFR5cGUpO2lmKHVwY2FzdCl7dXBjYXN0PXJlcXVpcmVGdW5jdGlvbih1cGNhc3RTaWduYXR1cmUsdXBjYXN0KX1pZihkb3duY2FzdCl7ZG93bmNhc3Q9cmVxdWlyZUZ1bmN0aW9uKGRvd25jYXN0U2lnbmF0dXJlLGRvd25jYXN0KX1yYXdEZXN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpO3ZhciBsZWdhbEZ1bmN0aW9uTmFtZT1tYWtlTGVnYWxGdW5jdGlvbk5hbWUobmFtZSk7ZXhwb3NlUHVibGljU3ltYm9sKGxlZ2FsRnVuY3Rpb25OYW1lLChmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNvbnN0cnVjdCAiK25hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsW2Jhc2VDbGFzc1Jhd1R5cGVdKX0pKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbcmF3VHlwZSxyYXdQb2ludGVyVHlwZSxyYXdDb25zdFBvaW50ZXJUeXBlXSxiYXNlQ2xhc3NSYXdUeXBlP1tiYXNlQ2xhc3NSYXdUeXBlXTpbXSwoZnVuY3Rpb24oYmFzZSl7YmFzZT1iYXNlWzBdO3ZhciBiYXNlQ2xhc3M7dmFyIGJhc2VQcm90b3R5cGU7aWYoYmFzZUNsYXNzUmF3VHlwZSl7YmFzZUNsYXNzPWJhc2UucmVnaXN0ZXJlZENsYXNzO2Jhc2VQcm90b3R5cGU9YmFzZUNsYXNzLmluc3RhbmNlUHJvdG90eXBlfWVsc2V7YmFzZVByb3RvdHlwZT1DbGFzc0hhbmRsZS5wcm90b3R5cGV9dmFyIGNvbnN0cnVjdG9yPWNyZWF0ZU5hbWVkRnVuY3Rpb24obGVnYWxGdW5jdGlvbk5hbWUsKGZ1bmN0aW9uKCl7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpIT09aW5zdGFuY2VQcm90b3R5cGUpe3Rocm93IG5ldyBCaW5kaW5nRXJyb3IoIlVzZSAnbmV3JyB0byBjb25zdHJ1Y3QgIituYW1lKX1pZih1bmRlZmluZWQ9PT1yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keSl7dGhyb3cgbmV3IEJpbmRpbmdFcnJvcihuYW1lKyIgaGFzIG5vIGFjY2Vzc2libGUgY29uc3RydWN0b3IiKX12YXIgYm9keT1yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmd1bWVudHMubGVuZ3RoXTtpZih1bmRlZmluZWQ9PT1ib2R5KXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJUcmllZCB0byBpbnZva2UgY3RvciBvZiAiK25hbWUrIiB3aXRoIGludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCIrYXJndW1lbnRzLmxlbmd0aCsiKSAtIGV4cGVjdGVkICgiK09iamVjdC5rZXlzKHJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KS50b1N0cmluZygpKyIpIHBhcmFtZXRlcnMgaW5zdGVhZCEiKX1yZXR1cm4gYm9keS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSk7dmFyIGluc3RhbmNlUHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYmFzZVByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmNvbnN0cnVjdG9yfX0pO2NvbnN0cnVjdG9yLnByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt2YXIgcmVnaXN0ZXJlZENsYXNzPW5ldyBSZWdpc3RlcmVkQ2xhc3MobmFtZSxjb25zdHJ1Y3RvcixpbnN0YW5jZVByb3RvdHlwZSxyYXdEZXN0cnVjdG9yLGJhc2VDbGFzcyxnZXRBY3R1YWxUeXBlLHVwY2FzdCxkb3duY2FzdCk7dmFyIHJlZmVyZW5jZUNvbnZlcnRlcj1uZXcgUmVnaXN0ZXJlZFBvaW50ZXIobmFtZSxyZWdpc3RlcmVkQ2xhc3MsdHJ1ZSxmYWxzZSxmYWxzZSk7dmFyIHBvaW50ZXJDb252ZXJ0ZXI9bmV3IFJlZ2lzdGVyZWRQb2ludGVyKG5hbWUrIioiLHJlZ2lzdGVyZWRDbGFzcyxmYWxzZSxmYWxzZSxmYWxzZSk7dmFyIGNvbnN0UG9pbnRlckNvbnZlcnRlcj1uZXcgUmVnaXN0ZXJlZFBvaW50ZXIobmFtZSsiIGNvbnN0KiIscmVnaXN0ZXJlZENsYXNzLGZhbHNlLHRydWUsZmFsc2UpO3JlZ2lzdGVyZWRQb2ludGVyc1tyYXdUeXBlXT17cG9pbnRlclR5cGU6cG9pbnRlckNvbnZlcnRlcixjb25zdFBvaW50ZXJUeXBlOmNvbnN0UG9pbnRlckNvbnZlcnRlcn07cmVwbGFjZVB1YmxpY1N5bWJvbChsZWdhbEZ1bmN0aW9uTmFtZSxjb25zdHJ1Y3Rvcik7cmV0dXJuW3JlZmVyZW5jZUNvbnZlcnRlcixwb2ludGVyQ29udmVydGVyLGNvbnN0UG9pbnRlckNvbnZlcnRlcl19KSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IocmF3Q2xhc3NUeXBlLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLGludm9rZXIscmF3Q29uc3RydWN0b3Ipe3ZhciByYXdBcmdUeXBlcz1oZWFwMzJWZWN0b3JUb0FycmF5KGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcik7aW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxpbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSwoZnVuY3Rpb24oY2xhc3NUeXBlKXtjbGFzc1R5cGU9Y2xhc3NUeXBlWzBdO3ZhciBodW1hbk5hbWU9ImNvbnN0cnVjdG9yICIrY2xhc3NUeXBlLm5hbWU7aWYodW5kZWZpbmVkPT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KXtjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHk9W119aWYodW5kZWZpbmVkIT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgY29uc3RydWN0b3JzIHdpdGggaWRlbnRpY2FsIG51bWJlciBvZiBwYXJhbWV0ZXJzICgiKyhhcmdDb3VudC0xKSsiKSBmb3IgY2xhc3MgJyIrY2xhc3NUeXBlLm5hbWUrIichIE92ZXJsb2FkIHJlc29sdXRpb24gaXMgY3VycmVudGx5IG9ubHkgcGVyZm9ybWVkIHVzaW5nIHRoZSBwYXJhbWV0ZXIgY291bnQsIG5vdCBhY3R1YWwgdHlwZSBpbmZvISIpfWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmdDb3VudC0xXT1mdW5jdGlvbiB1bmJvdW5kVHlwZUhhbmRsZXIoKXt0aHJvd1VuYm91bmRUeXBlRXJyb3IoIkNhbm5vdCBjb25zdHJ1Y3QgIitjbGFzc1R5cGUubmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixyYXdBcmdUeXBlcyl9O3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLHJhd0FyZ1R5cGVzLChmdW5jdGlvbihhcmdUeXBlcyl7Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdPWZ1bmN0aW9uIGNvbnN0cnVjdG9yX2JvZHkoKXtpZihhcmd1bWVudHMubGVuZ3RoIT09YXJnQ291bnQtMSl7dGhyb3dCaW5kaW5nRXJyb3IoaHVtYW5OYW1lKyIgY2FsbGVkIHdpdGggIithcmd1bWVudHMubGVuZ3RoKyIgYXJndW1lbnRzLCBleHBlY3RlZCAiKyhhcmdDb3VudC0xKSl9dmFyIGRlc3RydWN0b3JzPVtdO3ZhciBhcmdzPW5ldyBBcnJheShhcmdDb3VudCk7YXJnc1swXT1yYXdDb25zdHJ1Y3Rvcjtmb3IodmFyIGk9MTtpPGFyZ0NvdW50OysraSl7YXJnc1tpXT1hcmdUeXBlc1tpXVsidG9XaXJlVHlwZSJdKGRlc3RydWN0b3JzLGFyZ3VtZW50c1tpLTFdKX12YXIgcHRyPWludm9rZXIuYXBwbHkobnVsbCxhcmdzKTtydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyk7cmV0dXJuIGFyZ1R5cGVzWzBdWyJmcm9tV2lyZVR5cGUiXShwdHIpfTtyZXR1cm5bXX0pKTtyZXR1cm5bXX0pKX1mdW5jdGlvbiBkb3duY2FzdFBvaW50ZXIocHRyLHB0ckNsYXNzLGRlc2lyZWRDbGFzcyl7aWYocHRyQ2xhc3M9PT1kZXNpcmVkQ2xhc3Mpe3JldHVybiBwdHJ9aWYodW5kZWZpbmVkPT09ZGVzaXJlZENsYXNzLmJhc2VDbGFzcyl7cmV0dXJuIG51bGx9dmFyIHJ2PWRvd25jYXN0UG9pbnRlcihwdHIscHRyQ2xhc3MsZGVzaXJlZENsYXNzLmJhc2VDbGFzcyk7aWYocnY9PT1udWxsKXtyZXR1cm4gbnVsbH1yZXR1cm4gZGVzaXJlZENsYXNzLmRvd25jYXN0KHJ2KX1mdW5jdGlvbiB1cGNhc3RQb2ludGVyKHB0cixwdHJDbGFzcyxkZXNpcmVkQ2xhc3Mpe3doaWxlKHB0ckNsYXNzIT09ZGVzaXJlZENsYXNzKXtpZighcHRyQ2xhc3MudXBjYXN0KXt0aHJvd0JpbmRpbmdFcnJvcigiRXhwZWN0ZWQgbnVsbCBvciBpbnN0YW5jZSBvZiAiK2Rlc2lyZWRDbGFzcy5uYW1lKyIsIGdvdCBhbiBpbnN0YW5jZSBvZiAiK3B0ckNsYXNzLm5hbWUpfXB0cj1wdHJDbGFzcy51cGNhc3QocHRyKTtwdHJDbGFzcz1wdHJDbGFzcy5iYXNlQ2xhc3N9cmV0dXJuIHB0cn1mdW5jdGlvbiB2YWxpZGF0ZVRoaXModGhpc18sY2xhc3NUeXBlLGh1bWFuTmFtZSl7aWYoISh0aGlzXyBpbnN0YW5jZW9mIE9iamVjdCkpe3Rocm93QmluZGluZ0Vycm9yKGh1bWFuTmFtZSsnIHdpdGggaW52YWxpZCAidGhpcyI6ICcrdGhpc18pfWlmKCEodGhpc18gaW5zdGFuY2VvZiBjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yKSl7dGhyb3dCaW5kaW5nRXJyb3IoaHVtYW5OYW1lKycgaW5jb21wYXRpYmxlIHdpdGggInRoaXMiIG9mIHR5cGUgJyt0aGlzXy5jb25zdHJ1Y3Rvci5uYW1lKX1pZighdGhpc18uJCQucHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiY2Fubm90IGNhbGwgZW1zY3JpcHRlbiBiaW5kaW5nIG1ldGhvZCAiK2h1bWFuTmFtZSsiIG9uIGRlbGV0ZWQgb2JqZWN0Iil9cmV0dXJuIHVwY2FzdFBvaW50ZXIodGhpc18uJCQucHRyLHRoaXNfLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLGNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uKHJhd0NsYXNzVHlwZSxtZXRob2ROYW1lLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIsY29udGV4dCxpc1B1cmVWaXJ0dWFsKXt2YXIgcmF3QXJnVHlwZXM9aGVhcDMyVmVjdG9yVG9BcnJheShhcmdDb3VudCxyYXdBcmdUeXBlc0FkZHIpO21ldGhvZE5hbWU9cmVhZExhdGluMVN0cmluZyhtZXRob2ROYW1lKTtyYXdJbnZva2VyPXJlcXVpcmVGdW5jdGlvbihpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtyYXdDbGFzc1R5cGVdLChmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrbWV0aG9kTmFtZTtpZihpc1B1cmVWaXJ0dWFsKXtjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLnB1cmVWaXJ0dWFsRnVuY3Rpb25zLnB1c2gobWV0aG9kTmFtZSl9ZnVuY3Rpb24gdW5ib3VuZFR5cGVzSGFuZGxlcigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIitodW1hbk5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIscmF3QXJnVHlwZXMpfXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBtZXRob2Q9cHJvdG9bbWV0aG9kTmFtZV07aWYodW5kZWZpbmVkPT09bWV0aG9kfHx1bmRlZmluZWQ9PT1tZXRob2Qub3ZlcmxvYWRUYWJsZSYmbWV0aG9kLmNsYXNzTmFtZSE9PWNsYXNzVHlwZS5uYW1lJiZtZXRob2QuYXJnQ291bnQ9PT1hcmdDb3VudC0yKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTI7dW5ib3VuZFR5cGVzSGFuZGxlci5jbGFzc05hbWU9Y2xhc3NUeXBlLm5hbWU7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcn1lbHNle2Vuc3VyZU92ZXJsb2FkVGFibGUocHJvdG8sbWV0aG9kTmFtZSxodW1hbk5hbWUpO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMl09dW5ib3VuZFR5cGVzSGFuZGxlcn13aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcywoZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBtZW1iZXJGdW5jdGlvbj1jcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsY2xhc3NUeXBlLHJhd0ludm9rZXIsY29udGV4dCk7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7cHJvdG9bbWV0aG9kTmFtZV09bWVtYmVyRnVuY3Rpb259ZWxzZXtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlW2FyZ0NvdW50LTJdPW1lbWJlckZ1bmN0aW9ufXJldHVybltdfSkpO3JldHVybltdfSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX3Byb3BlcnR5KGNsYXNzVHlwZSxmaWVsZE5hbWUsZ2V0dGVyUmV0dXJuVHlwZSxnZXR0ZXJTaWduYXR1cmUsZ2V0dGVyLGdldHRlckNvbnRleHQsc2V0dGVyQXJndW1lbnRUeXBlLHNldHRlclNpZ25hdHVyZSxzZXR0ZXIsc2V0dGVyQ29udGV4dCl7ZmllbGROYW1lPXJlYWRMYXRpbjFTdHJpbmcoZmllbGROYW1lKTtnZXR0ZXI9cmVxdWlyZUZ1bmN0aW9uKGdldHRlclNpZ25hdHVyZSxnZXR0ZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtjbGFzc1R5cGVdLChmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrZmllbGROYW1lO3ZhciBkZXNjPXtnZXQ6KGZ1bmN0aW9uKCl7dGhyb3dVbmJvdW5kVHlwZUVycm9yKCJDYW5ub3QgYWNjZXNzICIraHVtYW5OYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLFtnZXR0ZXJSZXR1cm5UeXBlLHNldHRlckFyZ3VtZW50VHlwZV0pfSksZW51bWVyYWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfTtpZihzZXR0ZXIpe2Rlc2Muc2V0PShmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGFjY2VzcyAiK2h1bWFuTmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixbZ2V0dGVyUmV0dXJuVHlwZSxzZXR0ZXJBcmd1bWVudFR5cGVdKX0pfWVsc2V7ZGVzYy5zZXQ9KGZ1bmN0aW9uKHYpe3Rocm93QmluZGluZ0Vycm9yKGh1bWFuTmFtZSsiIGlzIGEgcmVhZC1vbmx5IHByb3BlcnR5Iil9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoY2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxmaWVsZE5hbWUsZGVzYyk7d2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQoW10sc2V0dGVyP1tnZXR0ZXJSZXR1cm5UeXBlLHNldHRlckFyZ3VtZW50VHlwZV06W2dldHRlclJldHVyblR5cGVdLChmdW5jdGlvbih0eXBlcyl7dmFyIGdldHRlclJldHVyblR5cGU9dHlwZXNbMF07dmFyIGRlc2M9e2dldDooZnVuY3Rpb24oKXt2YXIgcHRyPXZhbGlkYXRlVGhpcyh0aGlzLGNsYXNzVHlwZSxodW1hbk5hbWUrIiBnZXR0ZXIiKTtyZXR1cm4gZ2V0dGVyUmV0dXJuVHlwZVsiZnJvbVdpcmVUeXBlIl0oZ2V0dGVyKGdldHRlckNvbnRleHQscHRyKSl9KSxlbnVtZXJhYmxlOnRydWV9O2lmKHNldHRlcil7c2V0dGVyPXJlcXVpcmVGdW5jdGlvbihzZXR0ZXJTaWduYXR1cmUsc2V0dGVyKTt2YXIgc2V0dGVyQXJndW1lbnRUeXBlPXR5cGVzWzFdO2Rlc2Muc2V0PShmdW5jdGlvbih2KXt2YXIgcHRyPXZhbGlkYXRlVGhpcyh0aGlzLGNsYXNzVHlwZSxodW1hbk5hbWUrIiBzZXR0ZXIiKTt2YXIgZGVzdHJ1Y3RvcnM9W107c2V0dGVyKHNldHRlckNvbnRleHQscHRyLHNldHRlckFyZ3VtZW50VHlwZVsidG9XaXJlVHlwZSJdKGRlc3RydWN0b3JzLHYpKTtydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyl9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoY2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxmaWVsZE5hbWUsZGVzYyk7cmV0dXJuW119KSk7cmV0dXJuW119KSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY2xhc3NfZnVuY3Rpb24ocmF3Q2xhc3NUeXBlLG1ldGhvZE5hbWUsYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyLGludm9rZXJTaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIHJhd0FyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTttZXRob2ROYW1lPXJlYWRMYXRpbjFTdHJpbmcobWV0aG9kTmFtZSk7cmF3SW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxyYXdJbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSwoZnVuY3Rpb24oY2xhc3NUeXBlKXtjbGFzc1R5cGU9Y2xhc3NUeXBlWzBdO3ZhciBodW1hbk5hbWU9Y2xhc3NUeXBlLm5hbWUrIi4iK21ldGhvZE5hbWU7ZnVuY3Rpb24gdW5ib3VuZFR5cGVzSGFuZGxlcigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIitodW1hbk5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIscmF3QXJnVHlwZXMpfXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yO2lmKHVuZGVmaW5lZD09PXByb3RvW21ldGhvZE5hbWVdKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTE7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcn1lbHNle2Vuc3VyZU92ZXJsb2FkVGFibGUocHJvdG8sbWV0aG9kTmFtZSxodW1hbk5hbWUpO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMV09dW5ib3VuZFR5cGVzSGFuZGxlcn13aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcywoZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBpbnZva2VyQXJnc0FycmF5PVthcmdUeXBlc1swXSxudWxsXS5jb25jYXQoYXJnVHlwZXMuc2xpY2UoMSkpO3ZhciBmdW5jPWNyYWZ0SW52b2tlckZ1bmN0aW9uKGh1bWFuTmFtZSxpbnZva2VyQXJnc0FycmF5LG51bGwscmF3SW52b2tlcixmbik7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7cHJvdG9bbWV0aG9kTmFtZV09ZnVuY31lbHNle3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMV09ZnVuY31yZXR1cm5bXX0pKTtyZXR1cm5bXX0pKX1mdW5jdGlvbiBfX2VtYmluZF9jcmVhdGVfaW5oZXJpdGluZ19jb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvck5hbWUsd3JhcHBlclR5cGUscHJvcGVydGllcyl7Y29uc3RydWN0b3JOYW1lPXJlYWRMYXRpbjFTdHJpbmcoY29uc3RydWN0b3JOYW1lKTt3cmFwcGVyVHlwZT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUod3JhcHBlclR5cGUsIndyYXBwZXIiKTtwcm9wZXJ0aWVzPXJlcXVpcmVIYW5kbGUocHJvcGVydGllcyk7dmFyIGFycmF5U2xpY2U9W10uc2xpY2U7dmFyIHJlZ2lzdGVyZWRDbGFzcz13cmFwcGVyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHdyYXBwZXJQcm90b3R5cGU9cmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBiYXNlQ2xhc3M9cmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzczt2YXIgYmFzZUNsYXNzUHJvdG90eXBlPWJhc2VDbGFzcy5pbnN0YW5jZVByb3RvdHlwZTt2YXIgYmFzZUNvbnN0cnVjdG9yPXJlZ2lzdGVyZWRDbGFzcy5iYXNlQ2xhc3MuY29uc3RydWN0b3I7dmFyIGN0b3I9Y3JlYXRlTmFtZWRGdW5jdGlvbihjb25zdHJ1Y3Rvck5hbWUsKGZ1bmN0aW9uKCl7cmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcy5wdXJlVmlydHVhbEZ1bmN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbihuYW1lKXtpZih0aGlzW25hbWVdPT09YmFzZUNsYXNzUHJvdG90eXBlW25hbWVdKXt0aHJvdyBuZXcgUHVyZVZpcnR1YWxFcnJvcigiUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uICIrbmFtZSsiIG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gSmF2YVNjcmlwdCIpfX0pLmJpbmQodGhpcykpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJfX3BhcmVudCIse3ZhbHVlOndyYXBwZXJQcm90b3R5cGV9KTt0aGlzLl9fY29uc3RydWN0LmFwcGx5KHRoaXMsYXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cykpfSkpO3dyYXBwZXJQcm90b3R5cGUuX19jb25zdHJ1Y3Q9ZnVuY3Rpb24gX19jb25zdHJ1Y3QoKXtpZih0aGlzPT09d3JhcHBlclByb3RvdHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3MgY29ycmVjdCAndGhpcycgdG8gX19jb25zdHJ1Y3QiKX12YXIgaW5uZXI9YmFzZUNvbnN0cnVjdG9yLmltcGxlbWVudC5hcHBseSh1bmRlZmluZWQsW3RoaXNdLmNvbmNhdChhcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO3ZhciAkJD1pbm5lci4kJDtpbm5lci5ub3RpZnlPbkRlc3RydWN0aW9uKCk7JCQucHJlc2VydmVQb2ludGVyT25EZWxldGU9dHJ1ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiJCQiLHt2YWx1ZTokJH0pO3JlZ2lzdGVySW5oZXJpdGVkSW5zdGFuY2UocmVnaXN0ZXJlZENsYXNzLCQkLnB0cix0aGlzKX07d3JhcHBlclByb3RvdHlwZS5fX2Rlc3RydWN0PWZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKXtpZih0aGlzPT09d3JhcHBlclByb3RvdHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3MgY29ycmVjdCAndGhpcycgdG8gX19kZXN0cnVjdCIpfXVucmVnaXN0ZXJJbmhlcml0ZWRJbnN0YW5jZShyZWdpc3RlcmVkQ2xhc3MsdGhpcy4kJC5wdHIpfTtjdG9yLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHdyYXBwZXJQcm90b3R5cGUpO2Zvcih2YXIgcCBpbiBwcm9wZXJ0aWVzKXtjdG9yLnByb3RvdHlwZVtwXT1wcm9wZXJ0aWVzW3BdfXJldHVybiBfX2VtdmFsX3JlZ2lzdGVyKGN0b3IpfXZhciBjaGFyXzA9IjAiLmNoYXJDb2RlQXQoMCk7dmFyIGNoYXJfOT0iOSIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBtYWtlTGVnYWxGdW5jdGlvbk5hbWUobmFtZSl7bmFtZT1uYW1lLnJlcGxhY2UoL1teYS16QS1aMC05X10vZywiJCIpO3ZhciBmPW5hbWUuY2hhckNvZGVBdCgwKTtpZihmPj1jaGFyXzAmJmY8PWNoYXJfOSl7cmV0dXJuIl8iK25hbWV9ZWxzZXtyZXR1cm4gbmFtZX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc21hcnRfcHRyKHJhd1R5cGUscmF3UG9pbnRlZVR5cGUsbmFtZSxzaGFyaW5nUG9saWN5LGdldFBvaW50ZWVTaWduYXR1cmUscmF3R2V0UG9pbnRlZSxjb25zdHJ1Y3RvclNpZ25hdHVyZSxyYXdDb25zdHJ1Y3RvcixzaGFyZVNpZ25hdHVyZSxyYXdTaGFyZSxkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3Ipe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyYXdHZXRQb2ludGVlPXJlcXVpcmVGdW5jdGlvbihnZXRQb2ludGVlU2lnbmF0dXJlLHJhd0dldFBvaW50ZWUpO3Jhd0NvbnN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihjb25zdHJ1Y3RvclNpZ25hdHVyZSxyYXdDb25zdHJ1Y3Rvcik7cmF3U2hhcmU9cmVxdWlyZUZ1bmN0aW9uKHNoYXJlU2lnbmF0dXJlLHJhd1NoYXJlKTtyYXdEZXN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtyYXdUeXBlXSxbcmF3UG9pbnRlZVR5cGVdLChmdW5jdGlvbihwb2ludGVlVHlwZSl7cG9pbnRlZVR5cGU9cG9pbnRlZVR5cGVbMF07dmFyIHJlZ2lzdGVyZWRQb2ludGVyPW5ldyBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHBvaW50ZWVUeXBlLnJlZ2lzdGVyZWRDbGFzcyxmYWxzZSxmYWxzZSx0cnVlLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKTtyZXR1cm5bcmVnaXN0ZXJlZFBvaW50ZXJdfSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2VudW0ocmF3VHlwZSxuYW1lLHNpemUsaXNTaWduZWQpe3ZhciBzaGlmdD1nZXRTaGlmdEZyb21TaXplKHNpemUpO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtmdW5jdGlvbiBjb25zdHJ1Y3Rvcigpe31jb25zdHJ1Y3Rvci52YWx1ZXM9e307cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSxjb25zdHJ1Y3Rvcjpjb25zdHJ1Y3RvciwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IudmFsdWVzW2NdfSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyxjKXtyZXR1cm4gYy52YWx1ZX0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LGlzU2lnbmVkKSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLGNvbnN0cnVjdG9yKX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9lbnVtX3ZhbHVlKHJhd0VudW1UeXBlLG5hbWUsZW51bVZhbHVlKXt2YXIgZW51bVR5cGU9cmVxdWlyZVJlZ2lzdGVyZWRUeXBlKHJhd0VudW1UeXBlLCJlbnVtIik7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3ZhciBFbnVtPWVudW1UeXBlLmNvbnN0cnVjdG9yO3ZhciBWYWx1ZT1PYmplY3QuY3JlYXRlKGVudW1UeXBlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx7dmFsdWU6e3ZhbHVlOmVudW1WYWx1ZX0sY29uc3RydWN0b3I6e3ZhbHVlOmNyZWF0ZU5hbWVkRnVuY3Rpb24oZW51bVR5cGUubmFtZSsiXyIrbmFtZSwoZnVuY3Rpb24oKXt9KSl9fSk7RW51bS52YWx1ZXNbZW51bVZhbHVlXT1WYWx1ZTtFbnVtW25hbWVdPVZhbHVlfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NvbnN0YW50KG5hbWUsdHlwZSx2YWx1ZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFt0eXBlXSwoZnVuY3Rpb24odHlwZSl7dHlwZT10eXBlWzBdO01vZHVsZVtuYW1lXT10eXBlWyJmcm9tV2lyZVR5cGUiXSh2YWx1ZSk7cmV0dXJuW119KSl9dmFyIE1vZHVsZT1Nb2R1bGV8fHt9O3ZhciBfZW12YWxfaGFuZGxlX2FycmF5PVt7fV07dmFyIF9lbXZhbF9mcmVlX2xpc3Q9W107TW9kdWxlLmNvdW50X2VtdmFsX2hhbmRsZXM9KGZ1bmN0aW9uKCl7dmFyIGNvdW50PTA7Zm9yKHZhciBpPTE7aTxfZW12YWxfaGFuZGxlX2FycmF5Lmxlbmd0aDsrK2kpe2lmKF9lbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpeysrY291bnR9fXJldHVybiBjb3VudH0pO01vZHVsZS5nZXRfZmlyc3RfZW12YWw9KGZ1bmN0aW9uKCl7Zm9yKHZhciBpPTE7aTxfZW12YWxfaGFuZGxlX2FycmF5Lmxlbmd0aDsrK2kpe2lmKF9lbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpe3JldHVybiBfZW12YWxfaGFuZGxlX2FycmF5W2ldfX1yZXR1cm4gbnVsbH0pO3ZhciBfZW12YWxfc3ltYm9scz17fTtmdW5jdGlvbiBfX2VtdmFsX3JlZ2lzdGVyX3N5bWJvbChhZGRyZXNzKXtfZW12YWxfc3ltYm9sc1thZGRyZXNzXT1yZWFkTGF0aW4xU3RyaW5nKGFkZHJlc3MpfWZ1bmN0aW9uIGdldFN0cmluZ09yU3ltYm9sKGFkZHJlc3Mpe3ZhciBzeW1ib2w9X2VtdmFsX3N5bWJvbHNbYWRkcmVzc107aWYoc3ltYm9sPT09dW5kZWZpbmVkKXtyZXR1cm4gcmVhZExhdGluMVN0cmluZyhhZGRyZXNzKX1lbHNle3JldHVybiBzeW1ib2x9fWZ1bmN0aW9uIHJlcXVpcmVIYW5kbGUoaGFuZGxlKXtpZighaGFuZGxlKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHVzZSBkZWxldGVkIHZhbC4gaGFuZGxlID0gIitoYW5kbGUpfXJldHVybiBfZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV0udmFsdWV9ZnVuY3Rpb24gX19lbXZhbF9yZWdpc3Rlcih2YWx1ZSl7dmFyIGhhbmRsZT1fZW12YWxfZnJlZV9saXN0Lmxlbmd0aD9fZW12YWxfZnJlZV9saXN0LnBvcCgpOl9lbXZhbF9oYW5kbGVfYXJyYXkubGVuZ3RoO19lbXZhbF9oYW5kbGVfYXJyYXlbaGFuZGxlXT17cmVmY291bnQ6MSx2YWx1ZTp2YWx1ZX07cmV0dXJuIGhhbmRsZX1mdW5jdGlvbiBfX2VtdmFsX2luY3JlZihoYW5kbGUpe2lmKGhhbmRsZSl7X2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50Kz0xfX1mdW5jdGlvbiBfX2VtdmFsX2RlY3JlZihoYW5kbGUpe2lmKGhhbmRsZSYmMD09PS0tX2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50KXtfZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV09dW5kZWZpbmVkO19lbXZhbF9mcmVlX2xpc3QucHVzaChoYW5kbGUpfX1mdW5jdGlvbiBfX2VtdmFsX3J1bl9kZXN0cnVjdG9ycyhoYW5kbGUpe3ZhciBkZXN0cnVjdG9ycz1fZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV0udmFsdWU7cnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpO19fZW12YWxfZGVjcmVmKGhhbmRsZSl9ZnVuY3Rpb24gX19lbXZhbF9uZXdfYXJyYXkoKXtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihbXSl9ZnVuY3Rpb24gX19lbXZhbF9uZXdfb2JqZWN0KCl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIoe30pfWZ1bmN0aW9uIF9fZW12YWxfdW5kZWZpbmVkKCl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodW5kZWZpbmVkKX1mdW5jdGlvbiBfX2VtdmFsX251bGwoKXtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihudWxsKX1mdW5jdGlvbiBfX2VtdmFsX25ld19jc3RyaW5nKHYpe3JldHVybiBfX2VtdmFsX3JlZ2lzdGVyKGdldFN0cmluZ09yU3ltYm9sKHYpKX1mdW5jdGlvbiBfX2VtdmFsX3Rha2VfdmFsdWUodHlwZSxhcmd2KXt0eXBlPXJlcXVpcmVSZWdpc3RlcmVkVHlwZSh0eXBlLCJfZW12YWxfdGFrZV92YWx1ZSIpO3ZhciB2PXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJndik7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodil9dmFyIF9fbmV3ZXJzPXt9O2Z1bmN0aW9uIGNyYWZ0RW12YWxBbGxvY2F0b3IoYXJnQ291bnQpe3ZhciBhcmdzTGlzdD0iIjtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7YXJnc0xpc3QrPShpIT09MD8iLCAiOiIiKSsiYXJnIitpfXZhciBmdW5jdGlvbkJvZHk9InJldHVybiBmdW5jdGlvbiBlbXZhbF9hbGxvY2F0b3JfIithcmdDb3VudCsiKGNvbnN0cnVjdG9yLCBhcmdUeXBlcywgYXJncykge1xuIjtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7ZnVuY3Rpb25Cb2R5Kz0idmFyIGFyZ1R5cGUiK2krIiA9IHJlcXVpcmVSZWdpc3RlcmVkVHlwZShIRUFQMzJbKGFyZ1R5cGVzID4+IDIpICsgIitpKyddLCAicGFyYW1ldGVyICcraSsnIik7XG4nKyJ2YXIgYXJnIitpKyIgPSBhcmdUeXBlIitpKyIucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyk7XG4iKyJhcmdzICs9IGFyZ1R5cGUiK2krIi5hcmdQYWNrQWR2YW5jZTtcbiJ9ZnVuY3Rpb25Cb2R5Kz0idmFyIG9iaiA9IG5ldyBjb25zdHJ1Y3RvcigiK2FyZ3NMaXN0KyIpO1xuIisicmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIob2JqKTtcbiIrIn1cbiI7cmV0dXJuKG5ldyBGdW5jdGlvbigicmVxdWlyZVJlZ2lzdGVyZWRUeXBlIiwiSEVBUDMyIiwiX19lbXZhbF9yZWdpc3RlciIsZnVuY3Rpb25Cb2R5KSkocmVxdWlyZVJlZ2lzdGVyZWRUeXBlLEhFQVAzMixfX2VtdmFsX3JlZ2lzdGVyKX1mdW5jdGlvbiBfX2VtdmFsX25ldyhoYW5kbGUsYXJnQ291bnQsYXJnVHlwZXMsYXJncyl7aGFuZGxlPXJlcXVpcmVIYW5kbGUoaGFuZGxlKTt2YXIgbmV3ZXI9X19uZXdlcnNbYXJnQ291bnRdO2lmKCFuZXdlcil7bmV3ZXI9Y3JhZnRFbXZhbEFsbG9jYXRvcihhcmdDb3VudCk7X19uZXdlcnNbYXJnQ291bnRdPW5ld2VyfXJldHVybiBuZXdlcihoYW5kbGUsYXJnVHlwZXMsYXJncyl9dmFyIGdsb2JhbD0oZnVuY3Rpb24oKXtyZXR1cm4gRnVuY3Rpb259KSgpKCJyZXR1cm4gdGhpcyIpKCk7ZnVuY3Rpb24gX19lbXZhbF9nZXRfZ2xvYmFsKG5hbWUpe25hbWU9Z2V0U3RyaW5nT3JTeW1ib2wobmFtZSk7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIoZ2xvYmFsW25hbWVdKX1mdW5jdGlvbiBfX2VtdmFsX2dldF9tb2R1bGVfcHJvcGVydHkobmFtZSl7bmFtZT1nZXRTdHJpbmdPclN5bWJvbChuYW1lKTtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihNb2R1bGVbbmFtZV0pfWZ1bmN0aW9uIF9fZW12YWxfZ2V0X3Byb3BlcnR5KGhhbmRsZSxrZXkpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7a2V5PXJlcXVpcmVIYW5kbGUoa2V5KTtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihoYW5kbGVba2V5XSl9ZnVuY3Rpb24gX19lbXZhbF9zZXRfcHJvcGVydHkoaGFuZGxlLGtleSx2YWx1ZSl7aGFuZGxlPXJlcXVpcmVIYW5kbGUoaGFuZGxlKTtrZXk9cmVxdWlyZUhhbmRsZShrZXkpO3ZhbHVlPXJlcXVpcmVIYW5kbGUodmFsdWUpO2hhbmRsZVtrZXldPXZhbHVlfWZ1bmN0aW9uIF9fZW12YWxfYXMoaGFuZGxlLHJldHVyblR5cGUsZGVzdHJ1Y3RvcnNSZWYpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7cmV0dXJuVHlwZT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmV0dXJuVHlwZSwiZW12YWw6OmFzIik7dmFyIGRlc3RydWN0b3JzPVtdO3ZhciByZD1fX2VtdmFsX3JlZ2lzdGVyKGRlc3RydWN0b3JzKTtIRUFQMzJbZGVzdHJ1Y3RvcnNSZWY+PjJdPXJkO3JldHVybiByZXR1cm5UeXBlWyJ0b1dpcmVUeXBlIl0oZGVzdHJ1Y3RvcnMsaGFuZGxlKX1mdW5jdGlvbiBfX2VtdmFsX2NhbGwoaGFuZGxlLGFyZ0NvdW50LGFyZ1R5cGVzLGFyZ3Ype2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7dmFyIHR5cGVzPWxvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgYXJncz1uZXcgQXJyYXkoYXJnQ291bnQpO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQ7KytpKXt2YXIgdHlwZT10eXBlc1tpXTthcmdzW2ldPXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJndik7YXJndis9dHlwZS5hcmdQYWNrQWR2YW5jZX12YXIgcnY9aGFuZGxlLmFwcGx5KHVuZGVmaW5lZCxhcmdzKTtyZXR1cm4gX19lbXZhbF9yZWdpc3Rlcihydil9ZnVuY3Rpb24gbG9va3VwVHlwZXMoYXJnQ291bnQsYXJnVHlwZXMsYXJnV2lyZVR5cGVzKXt2YXIgYT1uZXcgQXJyYXkoYXJnQ291bnQpO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQ7KytpKXthW2ldPXJlcXVpcmVSZWdpc3RlcmVkVHlwZShIRUFQMzJbKGFyZ1R5cGVzPj4yKStpXSwicGFyYW1ldGVyICIraSl9cmV0dXJuIGF9ZnVuY3Rpb24gYWxsb2NhdGVEZXN0cnVjdG9ycyhkZXN0cnVjdG9yc1JlZil7dmFyIGRlc3RydWN0b3JzPVtdO0hFQVAzMltkZXN0cnVjdG9yc1JlZj4+Ml09X19lbXZhbF9yZWdpc3RlcihkZXN0cnVjdG9ycyk7cmV0dXJuIGRlc3RydWN0b3JzfXZhciBtZXRob2RDYWxsZXJzPVt1bmRlZmluZWRdO2Z1bmN0aW9uIGFkZE1ldGhvZENhbGxlcihjYWxsZXIpe3ZhciBpZD1tZXRob2RDYWxsZXJzLmxlbmd0aDttZXRob2RDYWxsZXJzLnB1c2goY2FsbGVyKTtyZXR1cm4gaWR9ZnVuY3Rpb24gX19lbXZhbF9nZXRfbWV0aG9kX2NhbGxlcihhcmdDb3VudCxhcmdUeXBlcyl7dmFyIHR5cGVzPWxvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgcmV0VHlwZT10eXBlc1swXTt2YXIgc2lnbmF0dXJlTmFtZT1yZXRUeXBlLm5hbWUrIl8kIit0eXBlcy5zbGljZSgxKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWV9KSkuam9pbigiXyIpKyIkIjt2YXIgcGFyYW1zPVsicmV0VHlwZSJdO3ZhciBhcmdzPVtyZXRUeXBlXTt2YXIgYXJnc0xpc3Q9IiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7YXJnc0xpc3QrPShpIT09MD8iLCAiOiIiKSsiYXJnIitpO3BhcmFtcy5wdXNoKCJhcmdUeXBlIitpKTthcmdzLnB1c2godHlwZXNbMStpXSl9dmFyIGZ1bmN0aW9uQm9keT0icmV0dXJuIGZ1bmN0aW9uIChoYW5kbGUsIG5hbWUsIGRlc3RydWN0b3JzLCBhcmdzKSB7XG4iO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMTsrK2kpe2Z1bmN0aW9uQm9keSs9IiAgICB2YXIgYXJnIitpKyIgPSBhcmdUeXBlIitpKyIucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyk7XG4iKyIgICAgYXJncyArPSBhcmdUeXBlIitpKyIuYXJnUGFja0FkdmFuY2U7XG4ifWZ1bmN0aW9uQm9keSs9IiAgICB2YXIgcnYgPSBoYW5kbGVbbmFtZV0oIithcmdzTGlzdCsiKTtcbiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7aWYodHlwZXNbaSsxXVsiZGVsZXRlT2JqZWN0Il0pe2Z1bmN0aW9uQm9keSs9IiAgICBhcmdUeXBlIitpKyIuZGVsZXRlT2JqZWN0KGFyZyIraSsiKTtcbiJ9fWZ1bmN0aW9uQm9keSs9IiAgICByZXR1cm4gcmV0VHlwZS50b1dpcmVUeXBlKGRlc3RydWN0b3JzLCBydik7XG4iKyJ9O1xuIjtwYXJhbXMucHVzaChmdW5jdGlvbkJvZHkpO3ZhciBpbnZva2VyRnVuY3Rpb249bmV3XyhGdW5jdGlvbixwYXJhbXMpLmFwcGx5KG51bGwsYXJncyk7cmV0dXJuIGFkZE1ldGhvZENhbGxlcihjcmVhdGVOYW1lZEZ1bmN0aW9uKHNpZ25hdHVyZU5hbWUsaW52b2tlckZ1bmN0aW9uKSl9ZnVuY3Rpb24gX19lbXZhbF9jYWxsX21ldGhvZChjYWxsZXIsaGFuZGxlLG1ldGhvZE5hbWUsZGVzdHJ1Y3RvcnNSZWYsYXJncyl7Y2FsbGVyPW1ldGhvZENhbGxlcnNbY2FsbGVyXTtoYW5kbGU9cmVxdWlyZUhhbmRsZShoYW5kbGUpO21ldGhvZE5hbWU9Z2V0U3RyaW5nT3JTeW1ib2wobWV0aG9kTmFtZSk7cmV0dXJuIGNhbGxlcihoYW5kbGUsbWV0aG9kTmFtZSxhbGxvY2F0ZURlc3RydWN0b3JzKGRlc3RydWN0b3JzUmVmKSxhcmdzKX1mdW5jdGlvbiBfX2VtdmFsX2hhc19mdW5jdGlvbihoYW5kbGUsbmFtZSxjbGFzc1R5cGUpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7bmFtZT1nZXRTdHJpbmdPclN5bWJvbChuYW1lKTtjbGFzc1R5cGU9cmVxdWlyZVJlZ2lzdGVyZWRUeXBlKGNsYXNzVHlwZSwiY2xhc3Mgd3JhcHBlciBmaWx0ZXIiKTt2YXIgZmlsdGVyPWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGVbbmFtZV07cmV0dXJuIGhhbmRsZVtuYW1lXWluc3RhbmNlb2YgRnVuY3Rpb24mJihmaWx0ZXI9PT11bmRlZmluZWR8fGhhbmRsZVtuYW1lXSE9PWZpbHRlcil9ZnVuY3Rpb24gX19lbXZhbF90eXBlb2YoaGFuZGxlKXtoYW5kbGU9cmVxdWlyZUhhbmRsZShoYW5kbGUpO3JldHVybiBfX2VtdmFsX3JlZ2lzdGVyKHR5cGVvZiBoYW5kbGUpfWlmKE1vZHVsZVsicHJlSW5pdCJdKXtpZih0eXBlb2YgTW9kdWxlWyJwcmVJbml0Il09PSJmdW5jdGlvbiIpTW9kdWxlWyJwcmVJbml0Il09W01vZHVsZVsicHJlSW5pdCJdXTt3aGlsZShNb2R1bGVbInByZUluaXQiXS5sZW5ndGg+MCl7TW9kdWxlWyJwcmVJbml0Il0ucG9wKCkoKX19dmFyIHNob3VsZFJ1bk5vdz10cnVlO2lmKE1vZHVsZVsibm9Jbml0aWFsUnVuIl0pe3Nob3VsZFJ1bk5vdz1mYWxzZX1ydW4oKQoKCgoKLy8gbGF6LWxvYWRlci13b3JrZXIuanMKLy8KCi8vaW1wb3J0U2NyaXB0cygnbGF6LXBlcmYuanMnKTsKCnZhciBpbnN0YW5jZSA9IG51bGw7IC8vIGxhei1wZXJmIGluc3RhbmNlCgpmdW5jdGlvbiByZWFkQXMoYnVmLCBUeXBlLCBvZmZzZXQsIGNvdW50KSB7Cgljb3VudCA9IChjb3VudCA9PT0gdW5kZWZpbmVkIHx8IGNvdW50ID09PSAwID8gMSA6IGNvdW50KTsKCXZhciBzdWIgPSBidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBUeXBlLkJZVEVTX1BFUl9FTEVNRU5UICogY291bnQpOwoKCXZhciByID0gbmV3IFR5cGUoc3ViKTsKCWlmIChjb3VudCA9PT0gdW5kZWZpbmVkIHx8IGNvdW50ID09PSAxKQoJCXJldHVybiByWzBdOwoKCXZhciByZXQgPSBbXTsKCWZvciAodmFyIGkgPSAwIDsgaSA8IGNvdW50IDsgaSArKykgewoJCXJldC5wdXNoKHJbaV0pOwoJfQoKCXJldHVybiByZXQ7Cn0KCmZ1bmN0aW9uIHBhcnNlTEFTSGVhZGVyKGFycmF5YnVmZmVyKSB7Cgl2YXIgbyA9IHt9OwoKCW8ucG9pbnRzT2Zmc2V0ID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50MzJBcnJheSwgMzIqMyk7CglvLnBvaW50c0Zvcm1hdElkID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50OEFycmF5LCAzMiozKzgpOwoJby5wb2ludHNTdHJ1Y3RTaXplID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50MTZBcnJheSwgMzIqMys4KzEpOwoJby5wb2ludHNDb3VudCA9IHJlYWRBcyhhcnJheWJ1ZmZlciwgVWludDMyQXJyYXksIDMyKjMgKyAxMSk7CgoKCXZhciBzdGFydCA9IDMyKjMgKyAzNTsKCW8uc2NhbGUgPSByZWFkQXMoYXJyYXlidWZmZXIsIEZsb2F0NjRBcnJheSwgc3RhcnQsIDMpOyBzdGFydCArPSAyNDsgLy8gOCozCglvLm9mZnNldCA9IHJlYWRBcyhhcnJheWJ1ZmZlciwgRmxvYXQ2NEFycmF5LCBzdGFydCwgMyk7IHN0YXJ0ICs9IDI0OwoKCXZhciBib3VuZHMgPSByZWFkQXMoYXJyYXlidWZmZXIsIEZsb2F0NjRBcnJheSwgc3RhcnQsIDYpOyBzdGFydCArPSA0ODsgLy8gOCo2OwoJby5tYXhzID0gW2JvdW5kc1swXSwgYm91bmRzWzJdLCBib3VuZHNbNF1dOwoJby5taW5zID0gW2JvdW5kc1sxXSwgYm91bmRzWzNdLCBib3VuZHNbNV1dOwoKCXJldHVybiBvOwp9CgpmdW5jdGlvbiBoYW5kbGVFdmVudChtc2cpIHsKCXN3aXRjaChtc2cudHlwZSkgewoJCWNhc2UgIm9wZW4iOgoJCQl0cnkgewoJCQkJaW5zdGFuY2UgPSBuZXcgTW9kdWxlLkxBU1ppcCgpOwoJCQkJdmFyIGFiSW50ID0gbmV3IFVpbnQ4QXJyYXkobXNnLmFycmF5YnVmZmVyKTsKCQkJCXZhciBidWYgPSBNb2R1bGUuX21hbGxvYyhtc2cuYXJyYXlidWZmZXIuYnl0ZUxlbmd0aCk7CgoJCQkJaW5zdGFuY2UuYXJyYXlidWZmZXIgPSBtc2cuYXJyYXlidWZmZXI7CgkJCQlpbnN0YW5jZS5idWYgPSBidWY7CgkJCQlNb2R1bGUuSEVBUFU4LnNldChhYkludCwgYnVmKTsKCQkJCWluc3RhbmNlLm9wZW4oYnVmLCBtc2cuYXJyYXlidWZmZXIuYnl0ZUxlbmd0aCk7CgoJCQkJaW5zdGFuY2UucmVhZE9mZnNldCA9IDA7CgoJCQkJcG9zdE1lc3NhZ2UoeyB0eXBlOiAib3BlbiIsIHN0YXR1czogMX0pOwoJCQl9CgkJCWNhdGNoKGUpIHsKCQkJCXBvc3RNZXNzYWdlKHsgdHlwZTogIm9wZW4iLCBzdGF0dXM6IDAsIGRldGFpbHM6IGUgfSk7CgkJCX0KCQkJYnJlYWs7CgoJCWNhc2UgImhlYWRlciI6CgkJCWlmICghaW5zdGFuY2UpCgkJCQl0aHJvdyBuZXcgRXJyb3IoIllvdSBuZWVkIHRvIG9wZW4gdGhlIGZpbGUgYmVmb3JlIHRyeWluZyB0byByZWFkIGhlYWRlciIpOwoKCgoJCQl2YXIgaGVhZGVyID0gcGFyc2VMQVNIZWFkZXIoaW5zdGFuY2UuYXJyYXlidWZmZXIpOwoJCQloZWFkZXIucG9pbnRzRm9ybWF0SWQgJj0gMHgzZjsKCQkJaW5zdGFuY2UuaGVhZGVyID0gaGVhZGVyOwoJCQlwb3N0TWVzc2FnZSh7dHlwZTogImhlYWRlciIsIHN0YXR1czogMSwgaGVhZGVyOiBoZWFkZXJ9KTsKCQkJYnJlYWs7CgoJCWNhc2UgInJlYWQiOgoJCQlpZiAoIWluc3RhbmNlKQoJCQkJdGhyb3cgbmV3IEVycm9yKCJZb3UgbmVlZCB0byBvcGVuIHRoZSBmaWxlIGJlZm9yZSB0cnlpbmcgdG8gcmVhZCBzdHVmZiIpOwoKCQkJdmFyIHN0YXJ0ID0gbXNnLnN0YXJ0LCBjb3VudCA9IG1zZy5jb3VudCwgc2tpcCA9IG1zZy5za2lwOwoJCQl2YXIgbyA9IGluc3RhbmNlOwoKCQkJaWYgKCFvLmhlYWRlcikKCQkJCXRocm93IG5ldyBFcnJvcigiWW91IG5lZWQgdG8gcXVlcnkgaGVhZGVyIGJlZm9yZSByZWFkaW5nLCBJIG1haW50YWluIHN0YXRlIHRoYXQgd2F5LCBzb3JyeSA6KCIpOwoKCQkJdmFyIHBvaW50c1RvUmVhZCA9IE1hdGgubWluKGNvdW50ICogc2tpcCwgby5oZWFkZXIucG9pbnRzQ291bnQgLSBvLnJlYWRPZmZzZXQpOwoJCQl2YXIgYnVmZmVyU2l6ZSA9IE1hdGguY2VpbChwb2ludHNUb1JlYWQgLyBza2lwKTsKCQkJdmFyIHBvaW50c1JlYWQgPSAwOwoKCQkJdmFyIHRoaXNfYnVmID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyU2l6ZSAqIG8uaGVhZGVyLnBvaW50c1N0cnVjdFNpemUpOwoJCQl2YXIgYnVmX3JlYWQgPSBNb2R1bGUuX21hbGxvYyhvLmhlYWRlci5wb2ludHNTdHJ1Y3RTaXplKTsKCQkJZm9yICh2YXIgaSA9IDAgOyBpIDwgcG9pbnRzVG9SZWFkIDsgaSArKykgewoJCQkJby5nZXRQb2ludChidWZfcmVhZCk7CgoJCQkJaWYgKGkgJSBza2lwID09PSAwKSB7CgkJCQkJdmFyIGEgPSBuZXcgVWludDhBcnJheShNb2R1bGUuSEVBUFU4LmJ1ZmZlciwgYnVmX3JlYWQsIG8uaGVhZGVyLnBvaW50c1N0cnVjdFNpemUpOwoJCQkJCXRoaXNfYnVmLnNldChhLCBwb2ludHNSZWFkICogby5oZWFkZXIucG9pbnRzU3RydWN0U2l6ZSwgby5oZWFkZXIucG9pbnRzU3RydWN0U2l6ZSk7CgkJCQkJcG9pbnRzUmVhZCArKzsKCQkJCX0KCgkJCQlvLnJlYWRPZmZzZXQgKys7CgkJCX0KCgkJCXBvc3RNZXNzYWdlKHsKCQkJCXR5cGU6ICdoZWFkZXInLAoJCQkJc3RhdHVzOiAxLAoJCQkJYnVmZmVyOiB0aGlzX2J1Zi5idWZmZXIsCgkJCQljb3VudDogcG9pbnRzUmVhZCwKCQkJCWhhc01vcmVEYXRhOiBvLnJlYWRPZmZzZXQgPCBvLmhlYWRlci5wb2ludHNDb3VudAoJCQl9KTsKCgkJCWJyZWFrOwoKCgkJY2FzZSAiY2xvc2UiOgoJCQlpZiAoaW5zdGFuY2UgIT09IG51bGwpIHsKCQkJCWluc3RhbmNlLmRlbGV0ZSgpOwoJCQkJaW5zdGFuY2UgPSBudWxsOwoJCQl9CgkJCXBvc3RNZXNzYWdlKHsgdHlwZTogImNsb3NlIiwgc3RhdHVzOiAxfSk7CgkJCWJyZWFrOwoJfQp9Cgpvbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewoJdHJ5IHsKCQloYW5kbGVFdmVudChldmVudC5kYXRhKTsKCX0gY2F0Y2goZSkgewoJCXBvc3RNZXNzYWdlKHt0eXBlOiBldmVudC5kYXRhLnR5cGUsIHN0YXR1czogMCwgZGV0YWlsczogZX0pOwoJfQp9OwoKCg==")); -Potree.workers.lasdecoder = new Potree.WorkerManager(atob("CgovL3ZhciBwb2ludEZvcm1hdFJlYWRlcnMgPSB7Ci8vCTA6IGZ1bmN0aW9uKGR2KSB7Ci8vCQlyZXR1cm4gewovLwkJCSJwb3NpdGlvbiI6IFsgZHYuZ2V0SW50MzIoMCwgdHJ1ZSksIGR2LmdldEludDMyKDQsIHRydWUpLCBkdi5nZXRJbnQzMig4LCB0cnVlKV0sCi8vCQkJImludGVuc2l0eSI6IGR2LmdldFVpbnQxNigxMiwgdHJ1ZSksCi8vCQkJImNsYXNzaWZpY2F0aW9uIjogZHYuZ2V0VWludDgoMTYsIHRydWUpCi8vCQl9OwovLwl9LAovLwkxOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKQovLwkJfTsKLy8JfSwKLy8JMjogZnVuY3Rpb24oZHYpIHsKLy8JCXJldHVybiB7Ci8vCQkJInBvc2l0aW9uIjogWyBkdi5nZXRJbnQzMigwLCB0cnVlKSwgZHYuZ2V0SW50MzIoNCwgdHJ1ZSksIGR2LmdldEludDMyKDgsIHRydWUpXSwKLy8JCQkiaW50ZW5zaXR5IjogZHYuZ2V0VWludDE2KDEyLCB0cnVlKSwKLy8JCQkiY2xhc3NpZmljYXRpb24iOiBkdi5nZXRVaW50OCgxNiwgdHJ1ZSksCi8vCQkJImNvbG9yIjogW2R2LmdldFVpbnQxNigyMCwgdHJ1ZSksIGR2LmdldFVpbnQxNigyMiwgdHJ1ZSksIGR2LmdldFVpbnQxNigyNCwgdHJ1ZSldCi8vCQl9OwovLwl9LAovLwkzOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKSwKLy8JCQkiY29sb3IiOiBbZHYuZ2V0VWludDE2KDI4LCB0cnVlKSwgZHYuZ2V0VWludDE2KDMwLCB0cnVlKSwgZHYuZ2V0VWludDE2KDMyLCB0cnVlKV0KLy8JCX07Ci8vCX0KLy99OwovLwkKLy8JCi8vIERlY29kZXMgTEFTIHJlY29yZHMgaW50byBwb2ludHMKLy8KLy92YXIgTEFTRGVjb2RlciA9IGZ1bmN0aW9uKGJ1ZmZlciwgcG9pbnRGb3JtYXRJRCwgcG9pbnRTaXplLCBwb2ludHNDb3VudCwgc2NhbGUsIG9mZnNldCkgewovLwl0aGlzLmFycmF5YiA9IGJ1ZmZlcjsKLy8JdGhpcy5kZWNvZGVyID0gcG9pbnRGb3JtYXRSZWFkZXJzW3BvaW50Rm9ybWF0SURdOwovLwl0aGlzLnBvaW50c0NvdW50ID0gcG9pbnRzQ291bnQ7Ci8vCXRoaXMucG9pbnRTaXplID0gcG9pbnRTaXplOwovLwl0aGlzLnNjYWxlID0gc2NhbGU7Ci8vCXRoaXMub2Zmc2V0ID0gb2Zmc2V0OwovL307Ci8vCi8vTEFTRGVjb2Rlci5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbihpbmRleCkgewovLwlpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucG9pbnRzQ291bnQpCi8vCQl0aHJvdyBuZXcgRXJyb3IoIlBvaW50IGluZGV4IG91dCBvZiByYW5nZSIpOwovLwovLwl2YXIgZHYgPSBuZXcgRGF0YVZpZXcodGhpcy5hcnJheWIsIGluZGV4ICogdGhpcy5wb2ludFNpemUsIHRoaXMucG9pbnRTaXplKTsKLy8JcmV0dXJuIHRoaXMuZGVjb2Rlcihkdik7Ci8vfTsKCm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KXsKCXZhciBidWZmZXIgPSBldmVudC5kYXRhLmJ1ZmZlcjsKCXZhciBudW1Qb2ludHMgPSBldmVudC5kYXRhLm51bVBvaW50czsKCXZhciBwb2ludFNpemUgPSBldmVudC5kYXRhLnBvaW50U2l6ZTsKCXZhciBwb2ludEZvcm1hdElEID0gZXZlbnQuZGF0YS5wb2ludEZvcm1hdElEOwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCXZhciBvZmZzZXQgPSBldmVudC5kYXRhLm9mZnNldDsKCXZhciBtaW5zID0gZXZlbnQuZGF0YS5taW5zOwoJdmFyIG1heHMgPSBldmVudC5kYXRhLm1heHM7Cgl2YXIgYmJPZmZzZXQgPSBldmVudC5kYXRhLmJiT2Zmc2V0OwoJCgl2YXIgdGVtcCA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKCXZhciB0ZW1wVWludDggPSBuZXcgVWludDhBcnJheSh0ZW1wKTsKCXZhciB0ZW1wVWludDE2ID0gbmV3IFVpbnQxNkFycmF5KHRlbXApOwoJdmFyIHRlbXBGbG9hdDMyID0gbmV3IEZsb2F0MzJBcnJheSh0ZW1wKTsKCXZhciB0ZW1wSW50MzIgPSBuZXcgSW50MzJBcnJheSh0ZW1wKTsKCXZhciBidWZmZXJWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKCQoJdmFyIHBCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGNCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGlCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KTsKCXZhciBjbEJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBybkJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBwc0J1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzICogMik7CgkKCXZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KHBCdWZmKTsKCXZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkFycmF5KGNCdWZmKTsKCXZhciBpbnRlbnNpdGllcyA9IG5ldyBGbG9hdDMyQXJyYXkoaUJ1ZmYpOwoJdmFyIGNsYXNzaWZpY2F0aW9ucyA9IG5ldyBVaW50OEFycmF5KGNsQnVmZik7Cgl2YXIgcmV0dXJuTnVtYmVycyA9IG5ldyBVaW50OEFycmF5KHJuQnVmZik7Cgl2YXIgcG9pbnRTb3VyY2VJRHMgPSBuZXcgVWludDE2QXJyYXkocHNCdWZmKTsKCQoJCgkvLyB0ZW1wIGFycmF5cyBzZWVtIHRvIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gRGF0YVZpZXdzCgkvLyBhdCB0aGUgbW9tZW50OiBodHRwOi8vanNwZXJmLmNvbS9kYXRhdmlldy12cy10ZW1wb3JhcnktZmxvYXQ2NGFycmF5Cglmb3IodmFyIGkgPSAwOyBpIDwgbnVtUG9pbnRzOyBpKyspewoJCgkJLy8gUE9TSVRJT04KCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzBdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMV07CgkJdGVtcFVpbnQ4WzJdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyXTsKCQl0ZW1wVWludDhbM10gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzNdOwoJCXZhciB4ID0gdGVtcEludDMyWzBdOwoJCQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrNF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs1XTsKCQl0ZW1wVWludDhbMl0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzZdOwoJCXRlbXBVaW50OFszXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrN107CgkJdmFyIHkgPSB0ZW1wSW50MzJbMF07CgkJCgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs4XTsKCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzldOwoJCXRlbXBVaW50OFsyXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTBdOwoJCXRlbXBVaW50OFszXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTFdOwoJCXZhciB6ID0gdGVtcEludDMyWzBdOwoJCQoJCXBvc2l0aW9uc1szKmkrMF0gPSB4ICogc2NhbGVbMF0gKyBvZmZzZXRbMF0gKyBiYk9mZnNldFswXTsKCQlwb3NpdGlvbnNbMyppKzFdID0geSAqIHNjYWxlWzFdICsgb2Zmc2V0WzFdICsgYmJPZmZzZXRbMV07CgkJcG9zaXRpb25zWzMqaSsyXSA9IHogKiBzY2FsZVsyXSArIG9mZnNldFsyXSArIGJiT2Zmc2V0WzJdOwoJCQoJCS8vIElOVEVOU0lUWQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTJdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTNdOwoJCXZhciBpbnRlbnNpdHkgPSB0ZW1wVWludDE2WzBdOwoJCWludGVuc2l0aWVzW2ldID0gaW50ZW5zaXR5OwoJCQoJCS8vIFJFVFVSTiBOVU1CRVIsIHN0b3JlZCBpbiB0aGUgZmlyc3QgMyBiaXRzCgkJdmFyIHJldHVybk51bWJlciA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTRdICYgNzsKCQlyZXR1cm5OdW1iZXJzW2ldID0gcmV0dXJuTnVtYmVyOwoJCQoJCS8vIENMQVNTSUZJQ0FUSU9OCgkJdmFyIGNsYXNzaWZpY2F0aW9uID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxNV07CgkJY2xhc3NpZmljYXRpb25zW2ldID0gY2xhc3NpZmljYXRpb247CgkJCgkJLy8gUE9JTlQgU09VUkNFIElECgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxOF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxOV07CgkJdmFyIHBvaW50U291cmNlSUQgPSB0ZW1wVWludDE2WzBdOwoJCXBvaW50U291cmNlSURzW2ldID0gcG9pbnRTb3VyY2VJRDsKCQkKCQkvLyBDT0xPUiwgaWYgYXZhaWxhYmxlCgkJaWYocG9pbnRGb3JtYXRJRCA9PT0gMil7CgkJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjBdOwoJCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzIxXTsKCQkJdmFyIHIgPSB0ZW1wVWludDE2WzBdOwoJCQkKCQkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyMl07CgkJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjNdOwoJCQl2YXIgZyA9IHRlbXBVaW50MTZbMF07CgkJCQoJCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzI0XTsKCQkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyNV07CgkJCXZhciBiID0gdGVtcFVpbnQxNlswXTsKCQkJCgkJCWNvbG9yc1szKmkrMF0gPSByIC8gNjU1MzY7CgkJCWNvbG9yc1szKmkrMV0gPSBnIC8gNjU1MzY7CgkJCWNvbG9yc1szKmkrMl0gPSBiIC8gNjU1MzY7CgkJfQoJfQoJCgl2YXIgbWVzc2FnZSA9IHsKCQlwb3NpdGlvbjogcEJ1ZmYsIAoJCWNvbG9yOiBjQnVmZiwgCgkJaW50ZW5zaXR5OiBpQnVmZiwKCQljbGFzc2lmaWNhdGlvbjogY2xCdWZmLAoJCXJldHVybk51bWJlcjogcm5CdWZmLAoJCXBvaW50U291cmNlSUQ6IHBzQnVmZn07CgkJCgl2YXIgdHJhbnNmZXJhYmxlcyA9IFsKCQltZXNzYWdlLnBvc2l0aW9uLAoJCW1lc3NhZ2UuY29sb3IsIAoJCW1lc3NhZ2UuaW50ZW5zaXR5LAoJCW1lc3NhZ2UuY2xhc3NpZmljYXRpb24sCgkJbWVzc2FnZS5yZXR1cm5OdW1iZXIsCgkJbWVzc2FnZS5wb2ludFNvdXJjZUlEXTsKCQkKCXBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRyYW5zZmVyYWJsZXMpOwp9Cg==")); \ No newline at end of file +Potree.workers.lasdecoder = new Potree.WorkerManager(atob("CgovL3ZhciBwb2ludEZvcm1hdFJlYWRlcnMgPSB7Ci8vCTA6IGZ1bmN0aW9uKGR2KSB7Ci8vCQlyZXR1cm4gewovLwkJCSJwb3NpdGlvbiI6IFsgZHYuZ2V0SW50MzIoMCwgdHJ1ZSksIGR2LmdldEludDMyKDQsIHRydWUpLCBkdi5nZXRJbnQzMig4LCB0cnVlKV0sCi8vCQkJImludGVuc2l0eSI6IGR2LmdldFVpbnQxNigxMiwgdHJ1ZSksCi8vCQkJImNsYXNzaWZpY2F0aW9uIjogZHYuZ2V0VWludDgoMTYsIHRydWUpCi8vCQl9OwovLwl9LAovLwkxOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKQovLwkJfTsKLy8JfSwKLy8JMjogZnVuY3Rpb24oZHYpIHsKLy8JCXJldHVybiB7Ci8vCQkJInBvc2l0aW9uIjogWyBkdi5nZXRJbnQzMigwLCB0cnVlKSwgZHYuZ2V0SW50MzIoNCwgdHJ1ZSksIGR2LmdldEludDMyKDgsIHRydWUpXSwKLy8JCQkiaW50ZW5zaXR5IjogZHYuZ2V0VWludDE2KDEyLCB0cnVlKSwKLy8JCQkiY2xhc3NpZmljYXRpb24iOiBkdi5nZXRVaW50OCgxNiwgdHJ1ZSksCi8vCQkJImNvbG9yIjogW2R2LmdldFVpbnQxNigyMCwgdHJ1ZSksIGR2LmdldFVpbnQxNigyMiwgdHJ1ZSksIGR2LmdldFVpbnQxNigyNCwgdHJ1ZSldCi8vCQl9OwovLwl9LAovLwkzOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKSwKLy8JCQkiY29sb3IiOiBbZHYuZ2V0VWludDE2KDI4LCB0cnVlKSwgZHYuZ2V0VWludDE2KDMwLCB0cnVlKSwgZHYuZ2V0VWludDE2KDMyLCB0cnVlKV0KLy8JCX07Ci8vCX0KLy99OwovLwkKLy8JCi8vIERlY29kZXMgTEFTIHJlY29yZHMgaW50byBwb2ludHMKLy8KLy92YXIgTEFTRGVjb2RlciA9IGZ1bmN0aW9uKGJ1ZmZlciwgcG9pbnRGb3JtYXRJRCwgcG9pbnRTaXplLCBwb2ludHNDb3VudCwgc2NhbGUsIG9mZnNldCkgewovLwl0aGlzLmFycmF5YiA9IGJ1ZmZlcjsKLy8JdGhpcy5kZWNvZGVyID0gcG9pbnRGb3JtYXRSZWFkZXJzW3BvaW50Rm9ybWF0SURdOwovLwl0aGlzLnBvaW50c0NvdW50ID0gcG9pbnRzQ291bnQ7Ci8vCXRoaXMucG9pbnRTaXplID0gcG9pbnRTaXplOwovLwl0aGlzLnNjYWxlID0gc2NhbGU7Ci8vCXRoaXMub2Zmc2V0ID0gb2Zmc2V0OwovL307Ci8vCi8vTEFTRGVjb2Rlci5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbihpbmRleCkgewovLwlpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucG9pbnRzQ291bnQpCi8vCQl0aHJvdyBuZXcgRXJyb3IoIlBvaW50IGluZGV4IG91dCBvZiByYW5nZSIpOwovLwovLwl2YXIgZHYgPSBuZXcgRGF0YVZpZXcodGhpcy5hcnJheWIsIGluZGV4ICogdGhpcy5wb2ludFNpemUsIHRoaXMucG9pbnRTaXplKTsKLy8JcmV0dXJuIHRoaXMuZGVjb2Rlcihkdik7Ci8vfTsKCm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KXsKCXZhciBidWZmZXIgPSBldmVudC5kYXRhLmJ1ZmZlcjsKCXZhciBudW1Qb2ludHMgPSBldmVudC5kYXRhLm51bVBvaW50czsKCXZhciBwb2ludFNpemUgPSBldmVudC5kYXRhLnBvaW50U2l6ZTsKCXZhciBwb2ludEZvcm1hdElEID0gZXZlbnQuZGF0YS5wb2ludEZvcm1hdElEOwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCXZhciBvZmZzZXQgPSBldmVudC5kYXRhLm9mZnNldDsKCXZhciBtaW5zID0gZXZlbnQuZGF0YS5taW5zOwoJdmFyIG1heHMgPSBldmVudC5kYXRhLm1heHM7Cgl2YXIgYmJPZmZzZXQgPSBldmVudC5kYXRhLmJiT2Zmc2V0OwoJCgl2YXIgdGVtcCA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKCXZhciB0ZW1wVWludDggPSBuZXcgVWludDhBcnJheSh0ZW1wKTsKCXZhciB0ZW1wVWludDE2ID0gbmV3IFVpbnQxNkFycmF5KHRlbXApOwoJdmFyIHRlbXBGbG9hdDMyID0gbmV3IEZsb2F0MzJBcnJheSh0ZW1wKTsKCXZhciB0ZW1wSW50MzIgPSBuZXcgSW50MzJBcnJheSh0ZW1wKTsKCXZhciBidWZmZXJWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKCQoJdmFyIHBCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGNCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGlCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KTsKCXZhciBjbEJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBybkJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBwc0J1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzICogMik7CgkKCXZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KHBCdWZmKTsKCXZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkFycmF5KGNCdWZmKTsKCXZhciBpbnRlbnNpdGllcyA9IG5ldyBGbG9hdDMyQXJyYXkoaUJ1ZmYpOwoJdmFyIGNsYXNzaWZpY2F0aW9ucyA9IG5ldyBVaW50OEFycmF5KGNsQnVmZik7Cgl2YXIgcmV0dXJuTnVtYmVycyA9IG5ldyBVaW50OEFycmF5KHJuQnVmZik7Cgl2YXIgcG9pbnRTb3VyY2VJRHMgPSBuZXcgVWludDE2QXJyYXkocHNCdWZmKTsKCXZhciB0aWdodEJvdW5kaW5nQm94ID0gewoJCW1pbjogWyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXSwKCQltYXg6IFsgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZICwgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZICwgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZIF0KCX07CgkKCQoJLy8gdGVtcCBhcnJheXMgc2VlbSB0byBiZSBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIERhdGFWaWV3cwoJLy8gYXQgdGhlIG1vbWVudDogaHR0cDovL2pzcGVyZi5jb20vZGF0YXZpZXctdnMtdGVtcG9yYXJ5LWZsb2F0NjRhcnJheQoJZm9yKHZhciBpID0gMDsgaSA8IG51bVBvaW50czsgaSsrKXsKCQoJCS8vIFBPU0lUSU9OCgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSswXTsKCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzFdOwoJCXRlbXBVaW50OFsyXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMl07CgkJdGVtcFVpbnQ4WzNdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSszXTsKCQl2YXIgeCA9IHRlbXBJbnQzMlswXTsKCQkKCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzRdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrNV07CgkJdGVtcFVpbnQ4WzJdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs2XTsKCQl0ZW1wVWludDhbM10gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzddOwoJCXZhciB5ID0gdGVtcEludDMyWzBdOwoJCQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrOF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs5XTsKCQl0ZW1wVWludDhbMl0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzEwXTsKCQl0ZW1wVWludDhbM10gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzExXTsKCQl2YXIgeiA9IHRlbXBJbnQzMlswXTsKCQkKCQlwb3NpdGlvbnNbMyppKzBdID0geCAqIHNjYWxlWzBdICsgb2Zmc2V0WzBdICsgYmJPZmZzZXRbMF07CgkJcG9zaXRpb25zWzMqaSsxXSA9IHkgKiBzY2FsZVsxXSArIG9mZnNldFsxXSArIGJiT2Zmc2V0WzFdOwoJCXBvc2l0aW9uc1szKmkrMl0gPSB6ICogc2NhbGVbMl0gKyBvZmZzZXRbMl0gKyBiYk9mZnNldFsyXTsKCQkKCQl0aWdodEJvdW5kaW5nQm94Lm1pblswXSA9IE1hdGgubWluKHRpZ2h0Qm91bmRpbmdCb3gubWluWzBdLCBwb3NpdGlvbnNbMyppKzBdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1pblsxXSA9IE1hdGgubWluKHRpZ2h0Qm91bmRpbmdCb3gubWluWzFdLCBwb3NpdGlvbnNbMyppKzFdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1pblsyXSA9IE1hdGgubWluKHRpZ2h0Qm91bmRpbmdCb3gubWluWzJdLCBwb3NpdGlvbnNbMyppKzJdKTsKCQkKCQl0aWdodEJvdW5kaW5nQm94Lm1heFswXSA9IE1hdGgubWF4KHRpZ2h0Qm91bmRpbmdCb3gubWF4WzBdLCBwb3NpdGlvbnNbMyppKzBdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1heFsxXSA9IE1hdGgubWF4KHRpZ2h0Qm91bmRpbmdCb3gubWF4WzFdLCBwb3NpdGlvbnNbMyppKzFdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1heFsyXSA9IE1hdGgubWF4KHRpZ2h0Qm91bmRpbmdCb3gubWF4WzJdLCBwb3NpdGlvbnNbMyppKzJdKTsKCQkKCQkvLyBJTlRFTlNJVFkKCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzEyXTsKCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzEzXTsKCQl2YXIgaW50ZW5zaXR5ID0gdGVtcFVpbnQxNlswXTsKCQlpbnRlbnNpdGllc1tpXSA9IGludGVuc2l0eTsKCQkKCQkvLyBSRVRVUk4gTlVNQkVSLCBzdG9yZWQgaW4gdGhlIGZpcnN0IDMgYml0cwoJCXZhciByZXR1cm5OdW1iZXIgPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzE0XSAmIDc7CgkJcmV0dXJuTnVtYmVyc1tpXSA9IHJldHVybk51bWJlcjsKCQkKCQkvLyBDTEFTU0lGSUNBVElPTgoJCXZhciBjbGFzc2lmaWNhdGlvbiA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTVdOwoJCWNsYXNzaWZpY2F0aW9uc1tpXSA9IGNsYXNzaWZpY2F0aW9uOwoJCQoJCS8vIFBPSU5UIFNPVVJDRSBJRAoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMThdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTldOwoJCXZhciBwb2ludFNvdXJjZUlEID0gdGVtcFVpbnQxNlswXTsKCQlwb2ludFNvdXJjZUlEc1tpXSA9IHBvaW50U291cmNlSUQ7CgkJCgkJLy8gQ09MT1IsIGlmIGF2YWlsYWJsZQoJCWlmKHBvaW50Rm9ybWF0SUQgPT09IDIpewoJCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzIwXTsKCQkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyMV07CgkJCXZhciByID0gdGVtcFVpbnQxNlswXTsKCQkJCgkJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjJdOwoJCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzIzXTsKCQkJdmFyIGcgPSB0ZW1wVWludDE2WzBdOwoJCQkKCQkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyNF07CgkJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjVdOwoJCQl2YXIgYiA9IHRlbXBVaW50MTZbMF07CgkJCQoJCQljb2xvcnNbMyppKzBdID0gciAvIDY1NTM2OwoJCQljb2xvcnNbMyppKzFdID0gZyAvIDY1NTM2OwoJCQljb2xvcnNbMyppKzJdID0gYiAvIDY1NTM2OwoJCX0KCX0KCQoJdmFyIG1lc3NhZ2UgPSB7CgkJcG9zaXRpb246IHBCdWZmLCAKCQljb2xvcjogY0J1ZmYsIAoJCWludGVuc2l0eTogaUJ1ZmYsCgkJY2xhc3NpZmljYXRpb246IGNsQnVmZiwKCQlyZXR1cm5OdW1iZXI6IHJuQnVmZiwKCQlwb2ludFNvdXJjZUlEOiBwc0J1ZmYsCgkJdGlnaHRCb3VuZGluZ0JveDogdGlnaHRCb3VuZGluZ0JveAoJfTsKCQkKCXZhciB0cmFuc2ZlcmFibGVzID0gWwoJCW1lc3NhZ2UucG9zaXRpb24sCgkJbWVzc2FnZS5jb2xvciwgCgkJbWVzc2FnZS5pbnRlbnNpdHksCgkJbWVzc2FnZS5jbGFzc2lmaWNhdGlvbiwKCQltZXNzYWdlLnJldHVybk51bWJlciwKCQltZXNzYWdlLnBvaW50U291cmNlSURdOwoJCQoJcG9zdE1lc3NhZ2UobWVzc2FnZSwgdHJhbnNmZXJhYmxlcyk7Cn0K")); \ No newline at end of file diff --git a/build/js/laslaz.min.js b/build/js/laslaz.min.js index 54e3aec409..0bc7cc41a6 100644 --- a/build/js/laslaz.min.js +++ b/build/js/laslaz.min.js @@ -1 +1 @@ -Potree.workers.laslaz=new Potree.WorkerManager(atob("dmFyIE1vZHVsZTtpZighTW9kdWxlKU1vZHVsZT0odHlwZW9mIE1vZHVsZSE9PSJ1bmRlZmluZWQiP01vZHVsZTpudWxsKXx8e307dmFyIG1vZHVsZU92ZXJyaWRlcz17fTtmb3IodmFyIGtleSBpbiBNb2R1bGUpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKXttb2R1bGVPdmVycmlkZXNba2V5XT1Nb2R1bGVba2V5XX19dmFyIEVOVklST05NRU5UX0lTX05PREU9dHlwZW9mIHByb2Nlc3M9PT0ib2JqZWN0IiYmdHlwZW9mIHJlcXVpcmU9PT0iZnVuY3Rpb24iO3ZhciBFTlZJUk9OTUVOVF9JU19XRUI9dHlwZW9mIHdpbmRvdz09PSJvYmplY3QiO3ZhciBFTlZJUk9OTUVOVF9JU19XT1JLRVI9dHlwZW9mIGltcG9ydFNjcmlwdHM9PT0iZnVuY3Rpb24iO3ZhciBFTlZJUk9OTUVOVF9JU19TSEVMTD0hRU5WSVJPTk1FTlRfSVNfV0VCJiYhRU5WSVJPTk1FTlRfSVNfTk9ERSYmIUVOVklST05NRU5UX0lTX1dPUktFUjtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtpZighTW9kdWxlWyJwcmludCJdKU1vZHVsZVsicHJpbnQiXT1mdW5jdGlvbiBwcmludCh4KXtwcm9jZXNzWyJzdGRvdXQiXS53cml0ZSh4KyJcbiIpfTtpZighTW9kdWxlWyJwcmludEVyciJdKU1vZHVsZVsicHJpbnRFcnIiXT1mdW5jdGlvbiBwcmludEVycih4KXtwcm9jZXNzWyJzdGRlcnIiXS53cml0ZSh4KyJcbiIpfTt2YXIgbm9kZUZTPXJlcXVpcmUoImZzIik7dmFyIG5vZGVQYXRoPXJlcXVpcmUoInBhdGgiKTtNb2R1bGVbInJlYWQiXT1mdW5jdGlvbiByZWFkKGZpbGVuYW1lLGJpbmFyeSl7ZmlsZW5hbWU9bm9kZVBhdGhbIm5vcm1hbGl6ZSJdKGZpbGVuYW1lKTt2YXIgcmV0PW5vZGVGU1sicmVhZEZpbGVTeW5jIl0oZmlsZW5hbWUpO2lmKCFyZXQmJmZpbGVuYW1lIT1ub2RlUGF0aFsicmVzb2x2ZSJdKGZpbGVuYW1lKSl7ZmlsZW5hbWU9cGF0aC5qb2luKF9fZGlybmFtZSwiLi4iLCJzcmMiLGZpbGVuYW1lKTtyZXQ9bm9kZUZTWyJyZWFkRmlsZVN5bmMiXShmaWxlbmFtZSl9aWYocmV0JiYhYmluYXJ5KXJldD1yZXQudG9TdHJpbmcoKTtyZXR1cm4gcmV0fTtNb2R1bGVbInJlYWRCaW5hcnkiXT1mdW5jdGlvbiByZWFkQmluYXJ5KGZpbGVuYW1lKXtyZXR1cm4gTW9kdWxlWyJyZWFkIl0oZmlsZW5hbWUsdHJ1ZSl9O01vZHVsZVsibG9hZCJdPWZ1bmN0aW9uIGxvYWQoZil7Z2xvYmFsRXZhbChyZWFkKGYpKX07TW9kdWxlWyJhcmd1bWVudHMiXT1wcm9jZXNzWyJhcmd2Il0uc2xpY2UoMik7bW9kdWxlWyJleHBvcnRzIl09TW9kdWxlfWVsc2UgaWYoRU5WSVJPTk1FTlRfSVNfU0hFTEwpe2lmKCFNb2R1bGVbInByaW50Il0pTW9kdWxlWyJwcmludCJdPXByaW50O2lmKHR5cGVvZiBwcmludEVyciE9InVuZGVmaW5lZCIpTW9kdWxlWyJwcmludEVyciJdPXByaW50RXJyO2lmKHR5cGVvZiByZWFkIT0idW5kZWZpbmVkIil7TW9kdWxlWyJyZWFkIl09cmVhZH1lbHNle01vZHVsZVsicmVhZCJdPWZ1bmN0aW9uIHJlYWQoKXt0aHJvdyJubyByZWFkKCkgYXZhaWxhYmxlIChqc2M/KSJ9fU1vZHVsZVsicmVhZEJpbmFyeSJdPWZ1bmN0aW9uIHJlYWRCaW5hcnkoZil7cmV0dXJuIHJlYWQoZiwiYmluYXJ5Iil9O2lmKHR5cGVvZiBzY3JpcHRBcmdzIT0idW5kZWZpbmVkIil7TW9kdWxlWyJhcmd1bWVudHMiXT1zY3JpcHRBcmdzfWVsc2UgaWYodHlwZW9mIGFyZ3VtZW50cyE9InVuZGVmaW5lZCIpe01vZHVsZVsiYXJndW1lbnRzIl09YXJndW1lbnRzfXRoaXNbIk1vZHVsZSJdPU1vZHVsZTtldmFsKCJpZiAodHlwZW9mIGdjID09PSAnZnVuY3Rpb24nICYmIGdjLnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlXScpID4gMCkgdmFyIGdjID0gdW5kZWZpbmVkIil9ZWxzZSBpZihFTlZJUk9OTUVOVF9JU19XRUJ8fEVOVklST05NRU5UX0lTX1dPUktFUil7TW9kdWxlWyJyZWFkIl09ZnVuY3Rpb24gcmVhZCh1cmwpe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7eGhyLnNlbmQobnVsbCk7cmV0dXJuIHhoci5yZXNwb25zZVRleHR9O2lmKHR5cGVvZiBhcmd1bWVudHMhPSJ1bmRlZmluZWQiKXtNb2R1bGVbImFyZ3VtZW50cyJdPWFyZ3VtZW50c31pZih0eXBlb2YgY29uc29sZSE9PSJ1bmRlZmluZWQiKXtpZighTW9kdWxlWyJwcmludCJdKU1vZHVsZVsicHJpbnQiXT1mdW5jdGlvbiBwcmludCh4KXt9O2lmKCFNb2R1bGVbInByaW50RXJyIl0pTW9kdWxlWyJwcmludEVyciJdPWZ1bmN0aW9uIHByaW50RXJyKHgpe319ZWxzZXt2YXIgVFJZX1VTRV9EVU1QPWZhbHNlO2lmKCFNb2R1bGVbInByaW50Il0pTW9kdWxlWyJwcmludCJdPVRSWV9VU0VfRFVNUCYmdHlwZW9mIGR1bXAhPT0idW5kZWZpbmVkIj8oZnVuY3Rpb24oeCl7ZHVtcCh4KX0pOihmdW5jdGlvbih4KXt9KX1pZihFTlZJUk9OTUVOVF9JU19XRUIpe3dpbmRvd1siTW9kdWxlIl09TW9kdWxlfWVsc2V7TW9kdWxlWyJsb2FkIl09aW1wb3J0U2NyaXB0c319ZWxzZXt0aHJvdyJVbmtub3duIHJ1bnRpbWUgZW52aXJvbm1lbnQuIFdoZXJlIGFyZSB3ZT8ifWZ1bmN0aW9uIGdsb2JhbEV2YWwoeCl7ZXZhbC5jYWxsKG51bGwseCl9aWYoIU1vZHVsZVsibG9hZCJdPT0idW5kZWZpbmVkIiYmTW9kdWxlWyJyZWFkIl0pe01vZHVsZVsibG9hZCJdPWZ1bmN0aW9uIGxvYWQoZil7Z2xvYmFsRXZhbChNb2R1bGVbInJlYWQiXShmKSl9fWlmKCFNb2R1bGVbInByaW50Il0pe01vZHVsZVsicHJpbnQiXT0oZnVuY3Rpb24oKXt9KX1pZighTW9kdWxlWyJwcmludEVyciJdKXtNb2R1bGVbInByaW50RXJyIl09TW9kdWxlWyJwcmludCJdfWlmKCFNb2R1bGVbImFyZ3VtZW50cyJdKXtNb2R1bGVbImFyZ3VtZW50cyJdPVtdfU1vZHVsZS5wcmludD1Nb2R1bGVbInByaW50Il07TW9kdWxlLnByaW50RXJyPU1vZHVsZVsicHJpbnRFcnIiXTtNb2R1bGVbInByZVJ1biJdPVtdO01vZHVsZVsicG9zdFJ1biJdPVtdO2Zvcih2YXIga2V5IGluIG1vZHVsZU92ZXJyaWRlcyl7aWYobW9kdWxlT3ZlcnJpZGVzLmhhc093blByb3BlcnR5KGtleSkpe01vZHVsZVtrZXldPW1vZHVsZU92ZXJyaWRlc1trZXldfX12YXIgUnVudGltZT17c2V0VGVtcFJldDA6KGZ1bmN0aW9uKHZhbHVlKXt0ZW1wUmV0MD12YWx1ZX0pLGdldFRlbXBSZXQwOihmdW5jdGlvbigpe3JldHVybiB0ZW1wUmV0MH0pLHN0YWNrU2F2ZTooZnVuY3Rpb24oKXtyZXR1cm4gU1RBQ0tUT1B9KSxzdGFja1Jlc3RvcmU6KGZ1bmN0aW9uKHN0YWNrVG9wKXtTVEFDS1RPUD1zdGFja1RvcH0pLGZvcmNlQWxpZ246KGZ1bmN0aW9uKHRhcmdldCxxdWFudHVtKXtxdWFudHVtPXF1YW50dW18fDQ7aWYocXVhbnR1bT09MSlyZXR1cm4gdGFyZ2V0O2lmKGlzTnVtYmVyKHRhcmdldCkmJmlzTnVtYmVyKHF1YW50dW0pKXtyZXR1cm4gTWF0aC5jZWlsKHRhcmdldC9xdWFudHVtKSpxdWFudHVtfWVsc2UgaWYoaXNOdW1iZXIocXVhbnR1bSkmJmlzUG93ZXJPZlR3byhxdWFudHVtKSl7cmV0dXJuIigoKCIrdGFyZ2V0KyIpKyIrKHF1YW50dW0tMSkrIikmIisgLXF1YW50dW0rIikifXJldHVybiJNYXRoLmNlaWwoKCIrdGFyZ2V0KyIpLyIrcXVhbnR1bSsiKSoiK3F1YW50dW19KSxpc051bWJlclR5cGU6KGZ1bmN0aW9uKHR5cGUpe3JldHVybiB0eXBlIGluIFJ1bnRpbWUuSU5UX1RZUEVTfHx0eXBlIGluIFJ1bnRpbWUuRkxPQVRfVFlQRVN9KSxpc1BvaW50ZXJUeXBlOmZ1bmN0aW9uIGlzUG9pbnRlclR5cGUodHlwZSl7cmV0dXJuIHR5cGVbdHlwZS5sZW5ndGgtMV09PSIqIn0saXNTdHJ1Y3RUeXBlOmZ1bmN0aW9uIGlzU3RydWN0VHlwZSh0eXBlKXtpZihpc1BvaW50ZXJUeXBlKHR5cGUpKXJldHVybiBmYWxzZTtpZihpc0FycmF5VHlwZSh0eXBlKSlyZXR1cm4gdHJ1ZTtpZigvPD9ceyA/W159XSogP1x9Pj8vLnRlc3QodHlwZSkpcmV0dXJuIHRydWU7cmV0dXJuIHR5cGVbMF09PSIlIn0sSU5UX1RZUEVTOnsiaTEiOjAsImk4IjowLCJpMTYiOjAsImkzMiI6MCwiaTY0IjowfSxGTE9BVF9UWVBFUzp7ImZsb2F0IjowLCJkb3VibGUiOjB9LG9yNjQ6KGZ1bmN0aW9uKHgseSl7dmFyIGw9eHwwfCh5fDApO3ZhciBoPShNYXRoLnJvdW5kKHgvNDI5NDk2NzI5Nil8TWF0aC5yb3VuZCh5LzQyOTQ5NjcyOTYpKSo0Mjk0OTY3Mjk2O3JldHVybiBsK2h9KSxhbmQ2NDooZnVuY3Rpb24oeCx5KXt2YXIgbD0oeHwwKSYoeXwwKTt2YXIgaD0oTWF0aC5yb3VuZCh4LzQyOTQ5NjcyOTYpJk1hdGgucm91bmQoeS80Mjk0OTY3Mjk2KSkqNDI5NDk2NzI5NjtyZXR1cm4gbCtofSkseG9yNjQ6KGZ1bmN0aW9uKHgseSl7dmFyIGw9KHh8MCleKHl8MCk7dmFyIGg9KE1hdGgucm91bmQoeC80Mjk0OTY3Mjk2KV5NYXRoLnJvdW5kKHkvNDI5NDk2NzI5NikpKjQyOTQ5NjcyOTY7cmV0dXJuIGwraH0pLGdldE5hdGl2ZVR5cGVTaXplOihmdW5jdGlvbih0eXBlKXtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6Y2FzZSJpOCI6cmV0dXJuIDE7Y2FzZSJpMTYiOnJldHVybiAyO2Nhc2UiaTMyIjpyZXR1cm4gNDtjYXNlImk2NCI6cmV0dXJuIDg7Y2FzZSJmbG9hdCI6cmV0dXJuIDQ7Y2FzZSJkb3VibGUiOnJldHVybiA4O2RlZmF1bHQ6e2lmKHR5cGVbdHlwZS5sZW5ndGgtMV09PT0iKiIpe3JldHVybiBSdW50aW1lLlFVQU5UVU1fU0laRX1lbHNlIGlmKHR5cGVbMF09PT0iaSIpe3ZhciBiaXRzPXBhcnNlSW50KHR5cGUuc3Vic3RyKDEpKTthc3NlcnQoYml0cyU4PT09MCk7cmV0dXJuIGJpdHMvOH1lbHNle3JldHVybiAwfX19fSksZ2V0TmF0aXZlRmllbGRTaXplOihmdW5jdGlvbih0eXBlKXtyZXR1cm4gTWF0aC5tYXgoUnVudGltZS5nZXROYXRpdmVUeXBlU2l6ZSh0eXBlKSxSdW50aW1lLlFVQU5UVU1fU0laRSl9KSxkZWR1cDpmdW5jdGlvbiBkZWR1cChpdGVtcyxpZGVudCl7dmFyIHNlZW49e307aWYoaWRlbnQpe3JldHVybiBpdGVtcy5maWx0ZXIoKGZ1bmN0aW9uKGl0ZW0pe2lmKHNlZW5baXRlbVtpZGVudF1dKXJldHVybiBmYWxzZTtzZWVuW2l0ZW1baWRlbnRdXT10cnVlO3JldHVybiB0cnVlfSkpfWVsc2V7cmV0dXJuIGl0ZW1zLmZpbHRlcigoZnVuY3Rpb24oaXRlbSl7aWYoc2VlbltpdGVtXSlyZXR1cm4gZmFsc2U7c2VlbltpdGVtXT10cnVlO3JldHVybiB0cnVlfSkpfX0sc2V0OmZ1bmN0aW9uIHNldCgpe3ZhciBhcmdzPXR5cGVvZiBhcmd1bWVudHNbMF09PT0ib2JqZWN0Ij9hcmd1bWVudHNbMF06YXJndW1lbnRzO3ZhciByZXQ9e307Zm9yKHZhciBpPTA7aTxhcmdzLmxlbmd0aDtpKyspe3JldFthcmdzW2ldXT0wfXJldHVybiByZXR9LFNUQUNLX0FMSUdOOjgsZ2V0QWxpZ25TaXplOihmdW5jdGlvbih0eXBlLHNpemUsdmFyYXJnKXtpZighdmFyYXJnJiYodHlwZT09Imk2NCJ8fHR5cGU9PSJkb3VibGUiKSlyZXR1cm4gODtpZighdHlwZSlyZXR1cm4gTWF0aC5taW4oc2l6ZSw4KTtyZXR1cm4gTWF0aC5taW4oc2l6ZXx8KHR5cGU/UnVudGltZS5nZXROYXRpdmVGaWVsZFNpemUodHlwZSk6MCksUnVudGltZS5RVUFOVFVNX1NJWkUpfSksY2FsY3VsYXRlU3RydWN0QWxpZ25tZW50OmZ1bmN0aW9uIGNhbGN1bGF0ZVN0cnVjdEFsaWdubWVudCh0eXBlKXt0eXBlLmZsYXRTaXplPTA7dHlwZS5hbGlnblNpemU9MDt2YXIgZGlmZnM9W107dmFyIHByZXY9LTE7dmFyIGluZGV4PTA7dHlwZS5mbGF0SW5kZXhlcz10eXBlLmZpZWxkcy5tYXAoKGZ1bmN0aW9uKGZpZWxkKXtpbmRleCsrO3ZhciBzaXplLGFsaWduU2l6ZTtpZihSdW50aW1lLmlzTnVtYmVyVHlwZShmaWVsZCl8fFJ1bnRpbWUuaXNQb2ludGVyVHlwZShmaWVsZCkpe3NpemU9UnVudGltZS5nZXROYXRpdmVUeXBlU2l6ZShmaWVsZCk7YWxpZ25TaXplPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKGZpZWxkLHNpemUpfWVsc2UgaWYoUnVudGltZS5pc1N0cnVjdFR5cGUoZmllbGQpKXtpZihmaWVsZFsxXT09PSIwIil7c2l6ZT0wO2lmKFR5cGVzLnR5cGVzW2ZpZWxkXSl7YWxpZ25TaXplPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKG51bGwsVHlwZXMudHlwZXNbZmllbGRdLmFsaWduU2l6ZSl9ZWxzZXthbGlnblNpemU9dHlwZS5hbGlnblNpemV8fFFVQU5UVU1fU0laRX19ZWxzZXtzaXplPVR5cGVzLnR5cGVzW2ZpZWxkXS5mbGF0U2l6ZTthbGlnblNpemU9UnVudGltZS5nZXRBbGlnblNpemUobnVsbCxUeXBlcy50eXBlc1tmaWVsZF0uYWxpZ25TaXplKX19ZWxzZSBpZihmaWVsZFswXT09ImIiKXtzaXplPWZpZWxkLnN1YnN0cigxKXwwO2FsaWduU2l6ZT0xfWVsc2UgaWYoZmllbGRbMF09PT0iPCIpe3NpemU9YWxpZ25TaXplPVR5cGVzLnR5cGVzW2ZpZWxkXS5mbGF0U2l6ZX1lbHNlIGlmKGZpZWxkWzBdPT09ImkiKXtzaXplPWFsaWduU2l6ZT1wYXJzZUludChmaWVsZC5zdWJzdHIoMSkpLzg7YXNzZXJ0KHNpemUlMT09PTAsImNhbm5vdCBoYW5kbGUgbm9uLWJ5dGUtc2l6ZSBmaWVsZCAiK2ZpZWxkKX1lbHNle2Fzc2VydChmYWxzZSwiaW52YWxpZCB0eXBlIGZvciBjYWxjdWxhdGVTdHJ1Y3RBbGlnbm1lbnQiKX1pZih0eXBlLnBhY2tlZClhbGlnblNpemU9MTt0eXBlLmFsaWduU2l6ZT1NYXRoLm1heCh0eXBlLmFsaWduU2l6ZSxhbGlnblNpemUpO3ZhciBjdXJyPVJ1bnRpbWUuYWxpZ25NZW1vcnkodHlwZS5mbGF0U2l6ZSxhbGlnblNpemUpO3R5cGUuZmxhdFNpemU9Y3VycitzaXplO2lmKHByZXY+PTApe2RpZmZzLnB1c2goY3Vyci1wcmV2KX1wcmV2PWN1cnI7cmV0dXJuIGN1cnJ9KSk7aWYodHlwZS5uYW1lXyYmdHlwZS5uYW1lX1swXT09PSJbIil7dHlwZS5mbGF0U2l6ZT1wYXJzZUludCh0eXBlLm5hbWVfLnN1YnN0cigxKSkqdHlwZS5mbGF0U2l6ZS8yfXR5cGUuZmxhdFNpemU9UnVudGltZS5hbGlnbk1lbW9yeSh0eXBlLmZsYXRTaXplLHR5cGUuYWxpZ25TaXplKTtpZihkaWZmcy5sZW5ndGg9PTApe3R5cGUuZmxhdEZhY3Rvcj10eXBlLmZsYXRTaXplfWVsc2UgaWYoUnVudGltZS5kZWR1cChkaWZmcykubGVuZ3RoPT0xKXt0eXBlLmZsYXRGYWN0b3I9ZGlmZnNbMF19dHlwZS5uZWVkc0ZsYXR0ZW5pbmc9dHlwZS5mbGF0RmFjdG9yIT0xO3JldHVybiB0eXBlLmZsYXRJbmRleGVzfSxnZW5lcmF0ZVN0cnVjdEluZm86KGZ1bmN0aW9uKHN0cnVjdCx0eXBlTmFtZSxvZmZzZXQpe3ZhciB0eXBlLGFsaWdubWVudDtpZih0eXBlTmFtZSl7b2Zmc2V0PW9mZnNldHx8MDt0eXBlPSh0eXBlb2YgVHlwZXM9PT0idW5kZWZpbmVkIj9SdW50aW1lLnR5cGVJbmZvOlR5cGVzLnR5cGVzKVt0eXBlTmFtZV07aWYoIXR5cGUpcmV0dXJuIG51bGw7aWYodHlwZS5maWVsZHMubGVuZ3RoIT1zdHJ1Y3QubGVuZ3RoKXtwcmludEVycigiTnVtYmVyIG9mIG5hbWVkIGZpZWxkcyBtdXN0IG1hdGNoIHRoZSB0eXBlIGZvciAiK3R5cGVOYW1lKyI6IHBvc3NpYmx5IGR1cGxpY2F0ZSBzdHJ1Y3QgbmFtZXMuIENhbm5vdCByZXR1cm4gc3RydWN0SW5mbyIpO3JldHVybiBudWxsfWFsaWdubWVudD10eXBlLmZsYXRJbmRleGVzfWVsc2V7dmFyIHR5cGU9e2ZpZWxkczpzdHJ1Y3QubWFwKChmdW5jdGlvbihpdGVtKXtyZXR1cm4gaXRlbVswXX0pKX07YWxpZ25tZW50PVJ1bnRpbWUuY2FsY3VsYXRlU3RydWN0QWxpZ25tZW50KHR5cGUpfXZhciByZXQ9e19fc2l6ZV9fOnR5cGUuZmxhdFNpemV9O2lmKHR5cGVOYW1lKXtzdHJ1Y3QuZm9yRWFjaCgoZnVuY3Rpb24oaXRlbSxpKXtpZih0eXBlb2YgaXRlbT09PSJzdHJpbmciKXtyZXRbaXRlbV09YWxpZ25tZW50W2ldK29mZnNldH1lbHNle3ZhciBrZXk7Zm9yKHZhciBrIGluIGl0ZW0pa2V5PWs7cmV0W2tleV09UnVudGltZS5nZW5lcmF0ZVN0cnVjdEluZm8oaXRlbVtrZXldLHR5cGUuZmllbGRzW2ldLGFsaWdubWVudFtpXSl9fSkpfWVsc2V7c3RydWN0LmZvckVhY2goKGZ1bmN0aW9uKGl0ZW0saSl7cmV0W2l0ZW1bMV1dPWFsaWdubWVudFtpXX0pKX1yZXR1cm4gcmV0fSksZHluQ2FsbDooZnVuY3Rpb24oc2lnLHB0cixhcmdzKXtpZihhcmdzJiZhcmdzLmxlbmd0aCl7aWYoIWFyZ3Muc3BsaWNlKWFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7YXJncy5zcGxpY2UoMCwwLHB0cik7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF8iK3NpZ10uYXBwbHkobnVsbCxhcmdzKX1lbHNle3JldHVybiBNb2R1bGVbImR5bkNhbGxfIitzaWddLmNhbGwobnVsbCxwdHIpfX0pLGZ1bmN0aW9uUG9pbnRlcnM6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGFkZEZ1bmN0aW9uOihmdW5jdGlvbihmdW5jKXtmb3IodmFyIGk9MDtpPFJ1bnRpbWUuZnVuY3Rpb25Qb2ludGVycy5sZW5ndGg7aSsrKXtpZighUnVudGltZS5mdW5jdGlvblBvaW50ZXJzW2ldKXtSdW50aW1lLmZ1bmN0aW9uUG9pbnRlcnNbaV09ZnVuYztyZXR1cm4gMiooMStpKX19dGhyb3ciRmluaXNoZWQgdXAgYWxsIHJlc2VydmVkIGZ1bmN0aW9uIHBvaW50ZXJzLiBVc2UgYSBoaWdoZXIgdmFsdWUgZm9yIFJFU0VSVkVEX0ZVTkNUSU9OX1BPSU5URVJTLiJ9KSxyZW1vdmVGdW5jdGlvbjooZnVuY3Rpb24oaW5kZXgpe1J1bnRpbWUuZnVuY3Rpb25Qb2ludGVyc1soaW5kZXgtMikvMl09bnVsbH0pLGdldEFzbUNvbnN0OihmdW5jdGlvbihjb2RlLG51bUFyZ3Mpe2lmKCFSdW50aW1lLmFzbUNvbnN0Q2FjaGUpUnVudGltZS5hc21Db25zdENhY2hlPXt9O3ZhciBmdW5jPVJ1bnRpbWUuYXNtQ29uc3RDYWNoZVtjb2RlXTtpZihmdW5jKXJldHVybiBmdW5jO3ZhciBhcmdzPVtdO2Zvcih2YXIgaT0wO2k8bnVtQXJncztpKyspe2FyZ3MucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDM2KStpKX12YXIgc291cmNlPVBvaW50ZXJfc3RyaW5naWZ5KGNvZGUpO2lmKHNvdXJjZVswXT09PSciJyl7aWYoc291cmNlLmluZGV4T2YoJyInLDEpPT09c291cmNlLmxlbmd0aC0xKXtzb3VyY2U9c291cmNlLnN1YnN0cigxLHNvdXJjZS5sZW5ndGgtMil9ZWxzZXthYm9ydCgiaW52YWxpZCBFTV9BU00gaW5wdXQgfCIrc291cmNlKyJ8LiBQbGVhc2UgdXNlIEVNX0FTTSguLmNvZGUuLikgKG5vIHF1b3Rlcykgb3IgRU1fQVNNKHsgLi5jb2RlKCQwKS4uIH0sIGlucHV0KSAodG8gaW5wdXQgdmFsdWVzKSIpfX10cnl7dmFyIGV2YWxsZWQ9ZXZhbCgiKGZ1bmN0aW9uKCIrYXJncy5qb2luKCIsIikrIil7ICIrc291cmNlKyIgfSkiKX1jYXRjaChlKXtNb2R1bGUucHJpbnRFcnIoImVycm9yIGluIGV4ZWN1dGluZyBpbmxpbmUgRU1fQVNNIGNvZGU6ICIrZSsiIG9uOiBcblxuIitzb3VyY2UrIlxuXG53aXRoIGFyZ3MgfCIrYXJncysifCAobWFrZSBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgb25lIG91dCBvZiBFTV9BU00sIEVNX0FTTV9BUkdTLCBldGMuKSIpO3Rocm93IGV9cmV0dXJuIFJ1bnRpbWUuYXNtQ29uc3RDYWNoZVtjb2RlXT1ldmFsbGVkfSksd2Fybk9uY2U6KGZ1bmN0aW9uKHRleHQpe2lmKCFSdW50aW1lLndhcm5PbmNlLnNob3duKVJ1bnRpbWUud2Fybk9uY2Uuc2hvd249e307aWYoIVJ1bnRpbWUud2Fybk9uY2Uuc2hvd25bdGV4dF0pe1J1bnRpbWUud2Fybk9uY2Uuc2hvd25bdGV4dF09MTtNb2R1bGUucHJpbnRFcnIodGV4dCl9fSksZnVuY1dyYXBwZXJzOnt9LGdldEZ1bmNXcmFwcGVyOihmdW5jdGlvbihmdW5jLHNpZyl7YXNzZXJ0KHNpZyk7aWYoIVJ1bnRpbWUuZnVuY1dyYXBwZXJzW2Z1bmNdKXtSdW50aW1lLmZ1bmNXcmFwcGVyc1tmdW5jXT1mdW5jdGlvbiBkeW5DYWxsX3dyYXBwZXIoKXtyZXR1cm4gUnVudGltZS5keW5DYWxsKHNpZyxmdW5jLGFyZ3VtZW50cyl9fXJldHVybiBSdW50aW1lLmZ1bmNXcmFwcGVyc1tmdW5jXX0pLFVURjhQcm9jZXNzb3I6KGZ1bmN0aW9uKCl7dmFyIGJ1ZmZlcj1bXTt2YXIgbmVlZGVkPTA7dGhpcy5wcm9jZXNzQ0NoYXI9KGZ1bmN0aW9uKGNvZGUpe2NvZGU9Y29kZSYyNTU7aWYoYnVmZmVyLmxlbmd0aD09MCl7aWYoKGNvZGUmMTI4KT09MCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSl9YnVmZmVyLnB1c2goY29kZSk7aWYoKGNvZGUmMjI0KT09MTkyKXtuZWVkZWQ9MX1lbHNlIGlmKChjb2RlJjI0MCk9PTIyNCl7bmVlZGVkPTJ9ZWxzZXtuZWVkZWQ9M31yZXR1cm4iIn1pZihuZWVkZWQpe2J1ZmZlci5wdXNoKGNvZGUpO25lZWRlZC0tO2lmKG5lZWRlZD4wKXJldHVybiIifXZhciBjMT1idWZmZXJbMF07dmFyIGMyPWJ1ZmZlclsxXTt2YXIgYzM9YnVmZmVyWzJdO3ZhciBjND1idWZmZXJbM107dmFyIHJldDtpZihidWZmZXIubGVuZ3RoPT0yKXtyZXQ9U3RyaW5nLmZyb21DaGFyQ29kZSgoYzEmMzEpPDw2fGMyJjYzKX1lbHNlIGlmKGJ1ZmZlci5sZW5ndGg9PTMpe3JldD1TdHJpbmcuZnJvbUNoYXJDb2RlKChjMSYxNSk8PDEyfChjMiY2Myk8PDZ8YzMmNjMpfWVsc2V7dmFyIGNvZGVQb2ludD0oYzEmNyk8PDE4fChjMiY2Myk8PDEyfChjMyY2Myk8PDZ8YzQmNjM7cmV0PVN0cmluZy5mcm9tQ2hhckNvZGUoTWF0aC5mbG9vcigoY29kZVBvaW50LTY1NTM2KS8xMDI0KSs1NTI5NiwoY29kZVBvaW50LTY1NTM2KSUxMDI0KzU2MzIwKX1idWZmZXIubGVuZ3RoPTA7cmV0dXJuIHJldH0pO3RoaXMucHJvY2Vzc0pTU3RyaW5nPWZ1bmN0aW9uIHByb2Nlc3NKU1N0cmluZyhzdHJpbmcpe3N0cmluZz11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKSk7dmFyIHJldD1bXTtmb3IodmFyIGk9MDtpPHN0cmluZy5sZW5ndGg7aSsrKXtyZXQucHVzaChzdHJpbmcuY2hhckNvZGVBdChpKSl9cmV0dXJuIHJldH19KSxnZXRDb21waWxlclNldHRpbmc6KGZ1bmN0aW9uKG5hbWUpe3Rocm93IllvdSBtdXN0IGJ1aWxkIHdpdGggLXMgUkVUQUlOX0NPTVBJTEVSX1NFVFRJTkdTPTEgZm9yIFJ1bnRpbWUuZ2V0Q29tcGlsZXJTZXR0aW5nIG9yIGVtc2NyaXB0ZW5fZ2V0X2NvbXBpbGVyX3NldHRpbmcgdG8gd29yayJ9KSxzdGFja0FsbG9jOihmdW5jdGlvbihzaXplKXt2YXIgcmV0PVNUQUNLVE9QO1NUQUNLVE9QPVNUQUNLVE9QK3NpemV8MDtTVEFDS1RPUD1TVEFDS1RPUCs3Ji04O3JldHVybiByZXR9KSxzdGF0aWNBbGxvYzooZnVuY3Rpb24oc2l6ZSl7dmFyIHJldD1TVEFUSUNUT1A7U1RBVElDVE9QPVNUQVRJQ1RPUCtzaXplfDA7U1RBVElDVE9QPVNUQVRJQ1RPUCs3Ji04O3JldHVybiByZXR9KSxkeW5hbWljQWxsb2M6KGZ1bmN0aW9uKHNpemUpe3ZhciByZXQ9RFlOQU1JQ1RPUDtEWU5BTUlDVE9QPURZTkFNSUNUT1Arc2l6ZXwwO0RZTkFNSUNUT1A9RFlOQU1JQ1RPUCs3Ji04O2lmKERZTkFNSUNUT1A+PVRPVEFMX01FTU9SWSllbmxhcmdlTWVtb3J5KCk7cmV0dXJuIHJldH0pLGFsaWduTWVtb3J5OihmdW5jdGlvbihzaXplLHF1YW50dW0pe3ZhciByZXQ9c2l6ZT1NYXRoLmNlaWwoc2l6ZS8ocXVhbnR1bT9xdWFudHVtOjgpKSoocXVhbnR1bT9xdWFudHVtOjgpO3JldHVybiByZXR9KSxtYWtlQmlnSW50OihmdW5jdGlvbihsb3csaGlnaCx1bnNpZ25lZCl7dmFyIHJldD11bnNpZ25lZD8rKGxvdz4+PjApKyArKGhpZ2g+Pj4wKSorNDI5NDk2NzI5NjorKGxvdz4+PjApKyArKGhpZ2h8MCkqKzQyOTQ5NjcyOTY7cmV0dXJuIHJldH0pLEdMT0JBTF9CQVNFOjgsUVVBTlRVTV9TSVpFOjQsX19kdW1teV9fOjB9O01vZHVsZVsiUnVudGltZSJdPVJ1bnRpbWU7ZnVuY3Rpb24ganNDYWxsKCl7dmFyIGFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gUnVudGltZS5mdW5jdGlvblBvaW50ZXJzW2FyZ3NbMF1dLmFwcGx5KG51bGwsYXJncy5zbGljZSgxKSl9dmFyIF9fVEhSRVdfXz0wO3ZhciBBQk9SVD1mYWxzZTt2YXIgRVhJVFNUQVRVUz0wO3ZhciB1bmRlZj0wO3ZhciB0ZW1wVmFsdWUsdGVtcEludCx0ZW1wQmlnSW50LHRlbXBJbnQyLHRlbXBCaWdJbnQyLHRlbXBQYWlyLHRlbXBCaWdJbnRJLHRlbXBCaWdJbnRSLHRlbXBCaWdJbnRTLHRlbXBCaWdJbnRQLHRlbXBCaWdJbnRELHRlbXBEb3VibGUsdGVtcEZsb2F0O3ZhciB0ZW1wSTY0LHRlbXBJNjRiO3ZhciB0ZW1wUmV0MCx0ZW1wUmV0MSx0ZW1wUmV0Mix0ZW1wUmV0Myx0ZW1wUmV0NCx0ZW1wUmV0NSx0ZW1wUmV0Nix0ZW1wUmV0Nyx0ZW1wUmV0OCx0ZW1wUmV0OTtmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLHRleHQpe2lmKCFjb25kaXRpb24pe2Fib3J0KCJBc3NlcnRpb24gZmFpbGVkOiAiK3RleHQpfX12YXIgZ2xvYmFsU2NvcGU9dGhpcztmdW5jdGlvbiBnZXRDRnVuYyhpZGVudCl7dHJ5e3ZhciBmdW5jPU1vZHVsZVsiXyIraWRlbnRdO2lmKCFmdW5jKWZ1bmM9ZXZhbCgiXyIraWRlbnQpfWNhdGNoKGUpe31hc3NlcnQoZnVuYywiQ2Fubm90IGNhbGwgdW5rbm93biBmdW5jdGlvbiAiK2lkZW50KyIgKHBlcmhhcHMgTExWTSBvcHRpbWl6YXRpb25zIG9yIGNsb3N1cmUgcmVtb3ZlZCBpdD8pIik7cmV0dXJuIGZ1bmN9dmFyIGN3cmFwLGNjYWxsOygoZnVuY3Rpb24oKXt2YXIgc3RhY2s9MDt2YXIgSlNmdW5jcz17InN0YWNrU2F2ZSI6KGZ1bmN0aW9uKCl7c3RhY2s9UnVudGltZS5zdGFja1NhdmUoKX0pLCJzdGFja1Jlc3RvcmUiOihmdW5jdGlvbigpe1J1bnRpbWUuc3RhY2tSZXN0b3JlKHN0YWNrKX0pLCJhcnJheVRvQyI6KGZ1bmN0aW9uKGFycil7dmFyIHJldD1SdW50aW1lLnN0YWNrQWxsb2MoYXJyLmxlbmd0aCk7d3JpdGVBcnJheVRvTWVtb3J5KGFycixyZXQpO3JldHVybiByZXR9KSwic3RyaW5nVG9DIjooZnVuY3Rpb24oc3RyKXt2YXIgcmV0PTA7aWYoc3RyIT09bnVsbCYmc3RyIT09dW5kZWZpbmVkJiZzdHIhPT0wKXtyZXQ9UnVudGltZS5zdGFja0FsbG9jKHN0ci5sZW5ndGgrMSk7d3JpdGVTdHJpbmdUb01lbW9yeShzdHIscmV0KX1yZXR1cm4gcmV0fSl9O3ZhciB0b0M9eyJzdHJpbmciOkpTZnVuY3NbInN0cmluZ1RvQyJdLCJhcnJheSI6SlNmdW5jc1siYXJyYXlUb0MiXX07Y2NhbGw9ZnVuY3Rpb24gY2NhbGxGdW5jKGlkZW50LHJldHVyblR5cGUsYXJnVHlwZXMsYXJncyl7dmFyIGZ1bmM9Z2V0Q0Z1bmMoaWRlbnQpO3ZhciBjQXJncz1bXTtpZihhcmdzKXtmb3IodmFyIGk9MDtpPGFyZ3MubGVuZ3RoO2krKyl7dmFyIGNvbnZlcnRlcj10b0NbYXJnVHlwZXNbaV1dO2lmKGNvbnZlcnRlcil7aWYoc3RhY2s9PT0wKXN0YWNrPVJ1bnRpbWUuc3RhY2tTYXZlKCk7Y0FyZ3NbaV09Y29udmVydGVyKGFyZ3NbaV0pfWVsc2V7Y0FyZ3NbaV09YXJnc1tpXX19fXZhciByZXQ9ZnVuYy5hcHBseShudWxsLGNBcmdzKTtpZihyZXR1cm5UeXBlPT09InN0cmluZyIpcmV0PVBvaW50ZXJfc3RyaW5naWZ5KHJldCk7aWYoc3RhY2shPT0wKUpTZnVuY3NbInN0YWNrUmVzdG9yZSJdKCk7cmV0dXJuIHJldH07dmFyIHNvdXJjZVJlZ2V4PS9eZnVuY3Rpb25cc1woKFteKV0qKVwpXHMqe1xzKihbXipdKj8pW1xzO10qKD86cmV0dXJuXHMqKC4qPylbO1xzXSopP30kLztmdW5jdGlvbiBwYXJzZUpTRnVuYyhqc2Z1bmMpe3ZhciBwYXJzZWQ9anNmdW5jLnRvU3RyaW5nKCkubWF0Y2goc291cmNlUmVnZXgpLnNsaWNlKDEpO3JldHVybnthcmd1bWVudHM6cGFyc2VkWzBdLGJvZHk6cGFyc2VkWzFdLHJldHVyblZhbHVlOnBhcnNlZFsyXX19dmFyIEpTc291cmNlPXt9O2Zvcih2YXIgZnVuIGluIEpTZnVuY3Mpe2lmKEpTZnVuY3MuaGFzT3duUHJvcGVydHkoZnVuKSl7SlNzb3VyY2VbZnVuXT1wYXJzZUpTRnVuYyhKU2Z1bmNzW2Z1bl0pfX1jd3JhcD1mdW5jdGlvbiBjd3JhcChpZGVudCxyZXR1cm5UeXBlLGFyZ1R5cGVzKXt2YXIgY2Z1bmM9Z2V0Q0Z1bmMoaWRlbnQpO3ZhciBudW1lcmljQXJncz1hcmdUeXBlcy5ldmVyeSgoZnVuY3Rpb24odHlwZSl7cmV0dXJuIHR5cGU9PT0ibnVtYmVyIn0pKTt2YXIgbnVtZXJpY1JldD1yZXR1cm5UeXBlIT09InN0cmluZyI7aWYobnVtZXJpY1JldCYmbnVtZXJpY0FyZ3Mpe3JldHVybiBjZnVuY312YXIgYXJnTmFtZXM9YXJnVHlwZXMubWFwKChmdW5jdGlvbih4LGkpe3JldHVybiIkIitpfSkpO3ZhciBmdW5jc3RyPSIoZnVuY3Rpb24oIithcmdOYW1lcy5qb2luKCIsIikrIikgeyI7dmFyIG5hcmdzPWFyZ1R5cGVzLmxlbmd0aDtpZighbnVtZXJpY0FyZ3Mpe2Z1bmNzdHIrPUpTc291cmNlWyJzdGFja1NhdmUiXS5ib2R5KyI7Ijtmb3IodmFyIGk9MDtpPG5hcmdzO2krKyl7dmFyIGFyZz1hcmdOYW1lc1tpXSx0eXBlPWFyZ1R5cGVzW2ldO2lmKHR5cGU9PT0ibnVtYmVyIiljb250aW51ZTt2YXIgY29udmVydENvZGU9SlNzb3VyY2VbdHlwZSsiVG9DIl07ZnVuY3N0cis9InZhciAiK2NvbnZlcnRDb2RlLmFyZ3VtZW50cysiID0gIithcmcrIjsiO2Z1bmNzdHIrPWNvbnZlcnRDb2RlLmJvZHkrIjsiO2Z1bmNzdHIrPWFyZysiPSIrY29udmVydENvZGUucmV0dXJuVmFsdWUrIjsifX12YXIgY2Z1bmNuYW1lPXBhcnNlSlNGdW5jKChmdW5jdGlvbigpe3JldHVybiBjZnVuY30pKS5yZXR1cm5WYWx1ZTtmdW5jc3RyKz0idmFyIHJldCA9ICIrY2Z1bmNuYW1lKyIoIithcmdOYW1lcy5qb2luKCIsIikrIik7IjtpZighbnVtZXJpY1JldCl7dmFyIHN0cmdmeT1wYXJzZUpTRnVuYygoZnVuY3Rpb24oKXtyZXR1cm4gUG9pbnRlcl9zdHJpbmdpZnl9KSkucmV0dXJuVmFsdWU7ZnVuY3N0cis9InJldCA9ICIrc3RyZ2Z5KyIocmV0KTsifWlmKCFudW1lcmljQXJncyl7ZnVuY3N0cis9SlNzb3VyY2VbInN0YWNrUmVzdG9yZSJdLmJvZHkrIjsifWZ1bmNzdHIrPSJyZXR1cm4gcmV0fSkiO3JldHVybiBldmFsKGZ1bmNzdHIpfX0pKSgpO01vZHVsZVsiY3dyYXAiXT1jd3JhcDtNb2R1bGVbImNjYWxsIl09Y2NhbGw7ZnVuY3Rpb24gc2V0VmFsdWUocHRyLHZhbHVlLHR5cGUsbm9TYWZlKXt0eXBlPXR5cGV8fCJpOCI7aWYodHlwZS5jaGFyQXQodHlwZS5sZW5ndGgtMSk9PT0iKiIpdHlwZT0iaTMyIjtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6SEVBUDhbcHRyPj4wXT12YWx1ZTticmVhaztjYXNlImk4IjpIRUFQOFtwdHI+PjBdPXZhbHVlO2JyZWFrO2Nhc2UiaTE2IjpIRUFQMTZbcHRyPj4xXT12YWx1ZTticmVhaztjYXNlImkzMiI6SEVBUDMyW3B0cj4+Ml09dmFsdWU7YnJlYWs7Y2FzZSJpNjQiOnRlbXBJNjQ9W3ZhbHVlPj4+MCwodGVtcERvdWJsZT12YWx1ZSwrTWF0aF9hYnModGVtcERvdWJsZSk+PSsxP3RlbXBEb3VibGU+KzA/KE1hdGhfbWluKCtNYXRoX2Zsb29yKHRlbXBEb3VibGUvKzQyOTQ5NjcyOTYpLCs0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aF9jZWlsKCh0ZW1wRG91YmxlLSArKH5+dGVtcERvdWJsZT4+PjApKS8rNDI5NDk2NzI5Nik+Pj4wOjApXSxIRUFQMzJbcHRyPj4yXT10ZW1wSTY0WzBdLEhFQVAzMltwdHIrND4+Ml09dGVtcEk2NFsxXTticmVhaztjYXNlImZsb2F0IjpIRUFQRjMyW3B0cj4+Ml09dmFsdWU7YnJlYWs7Y2FzZSJkb3VibGUiOkhFQVBGNjRbcHRyPj4zXT12YWx1ZTticmVhaztkZWZhdWx0OmFib3J0KCJpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAiK3R5cGUpfX1Nb2R1bGVbInNldFZhbHVlIl09c2V0VmFsdWU7ZnVuY3Rpb24gZ2V0VmFsdWUocHRyLHR5cGUsbm9TYWZlKXt0eXBlPXR5cGV8fCJpOCI7aWYodHlwZS5jaGFyQXQodHlwZS5sZW5ndGgtMSk9PT0iKiIpdHlwZT0iaTMyIjtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6cmV0dXJuIEhFQVA4W3B0cj4+MF07Y2FzZSJpOCI6cmV0dXJuIEhFQVA4W3B0cj4+MF07Y2FzZSJpMTYiOnJldHVybiBIRUFQMTZbcHRyPj4xXTtjYXNlImkzMiI6cmV0dXJuIEhFQVAzMltwdHI+PjJdO2Nhc2UiaTY0IjpyZXR1cm4gSEVBUDMyW3B0cj4+Ml07Y2FzZSJmbG9hdCI6cmV0dXJuIEhFQVBGMzJbcHRyPj4yXTtjYXNlImRvdWJsZSI6cmV0dXJuIEhFQVBGNjRbcHRyPj4zXTtkZWZhdWx0OmFib3J0KCJpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAiK3R5cGUpfXJldHVybiBudWxsfU1vZHVsZVsiZ2V0VmFsdWUiXT1nZXRWYWx1ZTt2YXIgQUxMT0NfTk9STUFMPTA7dmFyIEFMTE9DX1NUQUNLPTE7dmFyIEFMTE9DX1NUQVRJQz0yO3ZhciBBTExPQ19EWU5BTUlDPTM7dmFyIEFMTE9DX05PTkU9NDtNb2R1bGVbIkFMTE9DX05PUk1BTCJdPUFMTE9DX05PUk1BTDtNb2R1bGVbIkFMTE9DX1NUQUNLIl09QUxMT0NfU1RBQ0s7TW9kdWxlWyJBTExPQ19TVEFUSUMiXT1BTExPQ19TVEFUSUM7TW9kdWxlWyJBTExPQ19EWU5BTUlDIl09QUxMT0NfRFlOQU1JQztNb2R1bGVbIkFMTE9DX05PTkUiXT1BTExPQ19OT05FO2Z1bmN0aW9uIGFsbG9jYXRlKHNsYWIsdHlwZXMsYWxsb2NhdG9yLHB0cil7dmFyIHplcm9pbml0LHNpemU7aWYodHlwZW9mIHNsYWI9PT0ibnVtYmVyIil7emVyb2luaXQ9dHJ1ZTtzaXplPXNsYWJ9ZWxzZXt6ZXJvaW5pdD1mYWxzZTtzaXplPXNsYWIubGVuZ3RofXZhciBzaW5nbGVUeXBlPXR5cGVvZiB0eXBlcz09PSJzdHJpbmciP3R5cGVzOm51bGw7dmFyIHJldDtpZihhbGxvY2F0b3I9PUFMTE9DX05PTkUpe3JldD1wdHJ9ZWxzZXtyZXQ9W19tYWxsb2MsUnVudGltZS5zdGFja0FsbG9jLFJ1bnRpbWUuc3RhdGljQWxsb2MsUnVudGltZS5keW5hbWljQWxsb2NdW2FsbG9jYXRvcj09PXVuZGVmaW5lZD9BTExPQ19TVEFUSUM6YWxsb2NhdG9yXShNYXRoLm1heChzaXplLHNpbmdsZVR5cGU/MTp0eXBlcy5sZW5ndGgpKX1pZih6ZXJvaW5pdCl7dmFyIHB0cj1yZXQsc3RvcDthc3NlcnQoKHJldCYzKT09MCk7c3RvcD1yZXQrKHNpemUmfjMpO2Zvcig7cHRyPHN0b3A7cHRyKz00KXtIRUFQMzJbcHRyPj4yXT0wfXN0b3A9cmV0K3NpemU7d2hpbGUocHRyPHN0b3Ape0hFQVA4W3B0cisrPj4wXT0wfXJldHVybiByZXR9aWYoc2luZ2xlVHlwZT09PSJpOCIpe2lmKHNsYWIuc3ViYXJyYXl8fHNsYWIuc2xpY2Upe0hFQVBVOC5zZXQoc2xhYixyZXQpfWVsc2V7SEVBUFU4LnNldChuZXcgVWludDhBcnJheShzbGFiKSxyZXQpfXJldHVybiByZXR9dmFyIGk9MCx0eXBlLHR5cGVTaXplLHByZXZpb3VzVHlwZTt3aGlsZShpPHNpemUpe3ZhciBjdXJyPXNsYWJbaV07aWYodHlwZW9mIGN1cnI9PT0iZnVuY3Rpb24iKXtjdXJyPVJ1bnRpbWUuZ2V0RnVuY3Rpb25JbmRleChjdXJyKX10eXBlPXNpbmdsZVR5cGV8fHR5cGVzW2ldO2lmKHR5cGU9PT0wKXtpKys7Y29udGludWV9aWYodHlwZT09Imk2NCIpdHlwZT0iaTMyIjtzZXRWYWx1ZShyZXQraSxjdXJyLHR5cGUpO2lmKHByZXZpb3VzVHlwZSE9PXR5cGUpe3R5cGVTaXplPVJ1bnRpbWUuZ2V0TmF0aXZlVHlwZVNpemUodHlwZSk7cHJldmlvdXNUeXBlPXR5cGV9aSs9dHlwZVNpemV9cmV0dXJuIHJldH1Nb2R1bGVbImFsbG9jYXRlIl09YWxsb2NhdGU7ZnVuY3Rpb24gUG9pbnRlcl9zdHJpbmdpZnkocHRyLGxlbmd0aCl7dmFyIGhhc1V0Zj1mYWxzZTt2YXIgdDt2YXIgaT0wO3doaWxlKDEpe3Q9SEVBUFU4W3B0citpPj4wXTtpZih0Pj0xMjgpaGFzVXRmPXRydWU7ZWxzZSBpZih0PT0wJiYhbGVuZ3RoKWJyZWFrO2krKztpZihsZW5ndGgmJmk9PWxlbmd0aClicmVha31pZighbGVuZ3RoKWxlbmd0aD1pO3ZhciByZXQ9IiI7aWYoIWhhc1V0Zil7dmFyIE1BWF9DSFVOSz0xMDI0O3ZhciBjdXJyO3doaWxlKGxlbmd0aD4wKXtjdXJyPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLEhFQVBVOC5zdWJhcnJheShwdHIscHRyK01hdGgubWluKGxlbmd0aCxNQVhfQ0hVTkspKSk7cmV0PXJldD9yZXQrY3VycjpjdXJyO3B0cis9TUFYX0NIVU5LO2xlbmd0aC09TUFYX0NIVU5LfXJldHVybiByZXR9dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjtmb3IoaT0wO2k8bGVuZ3RoO2krKyl7dD1IRUFQVThbcHRyK2k+PjBdO3JldCs9dXRmOC5wcm9jZXNzQ0NoYXIodCl9cmV0dXJuIHJldH1Nb2R1bGVbIlBvaW50ZXJfc3RyaW5naWZ5Il09UG9pbnRlcl9zdHJpbmdpZnk7ZnVuY3Rpb24gVVRGMTZUb1N0cmluZyhwdHIpe3ZhciBpPTA7dmFyIHN0cj0iIjt3aGlsZSgxKXt2YXIgY29kZVVuaXQ9SEVBUDE2W3B0citpKjI+PjFdO2lmKGNvZGVVbml0PT0wKXJldHVybiBzdHI7KytpO3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZShjb2RlVW5pdCl9fU1vZHVsZVsiVVRGMTZUb1N0cmluZyJdPVVURjE2VG9TdHJpbmc7ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNihzdHIsb3V0UHRyKXtmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGg7KytpKXt2YXIgY29kZVVuaXQ9c3RyLmNoYXJDb2RlQXQoaSk7SEVBUDE2W291dFB0citpKjI+PjFdPWNvZGVVbml0fUhFQVAxNltvdXRQdHIrc3RyLmxlbmd0aCoyPj4xXT0wfU1vZHVsZVsic3RyaW5nVG9VVEYxNiJdPXN0cmluZ1RvVVRGMTY7ZnVuY3Rpb24gVVRGMzJUb1N0cmluZyhwdHIpe3ZhciBpPTA7dmFyIHN0cj0iIjt3aGlsZSgxKXt2YXIgdXRmMzI9SEVBUDMyW3B0citpKjQ+PjJdO2lmKHV0ZjMyPT0wKXJldHVybiBzdHI7KytpO2lmKHV0ZjMyPj02NTUzNil7dmFyIGNoPXV0ZjMyLTY1NTM2O3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjaD4+MTAsNTYzMjB8Y2gmMTAyMyl9ZWxzZXtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUodXRmMzIpfX19TW9kdWxlWyJVVEYzMlRvU3RyaW5nIl09VVRGMzJUb1N0cmluZztmdW5jdGlvbiBzdHJpbmdUb1VURjMyKHN0cixvdXRQdHIpe3ZhciBpQ2hhcj0wO2Zvcih2YXIgaUNvZGVVbml0PTA7aUNvZGVVbml0PHN0ci5sZW5ndGg7KytpQ29kZVVuaXQpe3ZhciBjb2RlVW5pdD1zdHIuY2hhckNvZGVBdChpQ29kZVVuaXQpO2lmKGNvZGVVbml0Pj01NTI5NiYmY29kZVVuaXQ8PTU3MzQzKXt2YXIgdHJhaWxTdXJyb2dhdGU9c3RyLmNoYXJDb2RlQXQoKytpQ29kZVVuaXQpO2NvZGVVbml0PTY1NTM2KygoY29kZVVuaXQmMTAyMyk8PDEwKXx0cmFpbFN1cnJvZ2F0ZSYxMDIzfUhFQVAzMltvdXRQdHIraUNoYXIqND4+Ml09Y29kZVVuaXQ7KytpQ2hhcn1IRUFQMzJbb3V0UHRyK2lDaGFyKjQ+PjJdPTB9TW9kdWxlWyJzdHJpbmdUb1VURjMyIl09c3RyaW5nVG9VVEYzMjtmdW5jdGlvbiBkZW1hbmdsZShmdW5jKXt2YXIgaT0zO3ZhciBiYXNpY1R5cGVzPXsidiI6InZvaWQiLCJiIjoiYm9vbCIsImMiOiJjaGFyIiwicyI6InNob3J0IiwiaSI6ImludCIsImwiOiJsb25nIiwiZiI6ImZsb2F0IiwiZCI6ImRvdWJsZSIsInciOiJ3Y2hhcl90IiwiYSI6InNpZ25lZCBjaGFyIiwiaCI6InVuc2lnbmVkIGNoYXIiLCJ0IjoidW5zaWduZWQgc2hvcnQiLCJqIjoidW5zaWduZWQgaW50IiwibSI6InVuc2lnbmVkIGxvbmciLCJ4IjoibG9uZyBsb25nIiwieSI6InVuc2lnbmVkIGxvbmcgbG9uZyIsInoiOiIuLi4ifTt2YXIgc3Vicz1bXTt2YXIgZmlyc3Q9dHJ1ZTtmdW5jdGlvbiBkdW1wKHgpe2lmKHgpTW9kdWxlLnByaW50KHgpO01vZHVsZS5wcmludChmdW5jKTt2YXIgcHJlPSIiO2Zvcih2YXIgYT0wO2E8aTthKyspcHJlKz0iICI7TW9kdWxlLnByaW50KHByZSsiXiIpfWZ1bmN0aW9uIHBhcnNlTmVzdGVkKCl7aSsrO2lmKGZ1bmNbaV09PT0iSyIpaSsrO3ZhciBwYXJ0cz1bXTt3aGlsZShmdW5jW2ldIT09IkUiKXtpZihmdW5jW2ldPT09IlMiKXtpKys7dmFyIG5leHQ9ZnVuYy5pbmRleE9mKCJfIixpKTt2YXIgbnVtPWZ1bmMuc3Vic3RyaW5nKGksbmV4dCl8fDA7cGFydHMucHVzaChzdWJzW251bV18fCI/Iik7aT1uZXh0KzE7Y29udGludWV9aWYoZnVuY1tpXT09PSJDIil7cGFydHMucHVzaChwYXJ0c1twYXJ0cy5sZW5ndGgtMV0pO2krPTI7Y29udGludWV9dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO3ZhciBwcmU9c2l6ZS50b1N0cmluZygpLmxlbmd0aDtpZighc2l6ZXx8IXByZSl7aS0tO2JyZWFrfXZhciBjdXJyPWZ1bmMuc3Vic3RyKGkrcHJlLHNpemUpO3BhcnRzLnB1c2goY3Vycik7c3Vicy5wdXNoKGN1cnIpO2krPXByZStzaXplfWkrKztyZXR1cm4gcGFydHN9ZnVuY3Rpb24gcGFyc2UocmF3TGlzdCxsaW1pdCxhbGxvd1ZvaWQpe2xpbWl0PWxpbWl0fHxJbmZpbml0eTt2YXIgcmV0PSIiLGxpc3Q9W107ZnVuY3Rpb24gZmx1c2hMaXN0KCl7cmV0dXJuIigiK2xpc3Quam9pbigiLCAiKSsiKSJ9dmFyIG5hbWU7aWYoZnVuY1tpXT09PSJOIil7bmFtZT1wYXJzZU5lc3RlZCgpLmpvaW4oIjo6Iik7bGltaXQtLTtpZihsaW1pdD09PTApcmV0dXJuIHJhd0xpc3Q/W25hbWVdOm5hbWV9ZWxzZXtpZihmdW5jW2ldPT09IksifHxmaXJzdCYmZnVuY1tpXT09PSJMIilpKys7dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO2lmKHNpemUpe3ZhciBwcmU9c2l6ZS50b1N0cmluZygpLmxlbmd0aDtuYW1lPWZ1bmMuc3Vic3RyKGkrcHJlLHNpemUpO2krPXByZStzaXplfX1maXJzdD1mYWxzZTtpZihmdW5jW2ldPT09IkkiKXtpKys7dmFyIGlMaXN0PXBhcnNlKHRydWUpO3ZhciBpUmV0PXBhcnNlKHRydWUsMSx0cnVlKTtyZXQrPWlSZXRbMF0rIiAiK25hbWUrIjwiK2lMaXN0LmpvaW4oIiwgIikrIj4ifWVsc2V7cmV0PW5hbWV9cGFyYW1Mb29wOndoaWxlKGk8ZnVuYy5sZW5ndGgmJmxpbWl0LS0+MCl7dmFyIGM9ZnVuY1tpKytdO2lmKGMgaW4gYmFzaWNUeXBlcyl7bGlzdC5wdXNoKGJhc2ljVHlwZXNbY10pfWVsc2V7c3dpdGNoKGMpe2Nhc2UiUCI6bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiKiIpO2JyZWFrO2Nhc2UiUiI6bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiJiIpO2JyZWFrO2Nhc2UiTCI6e2krKzt2YXIgZW5kPWZ1bmMuaW5kZXhPZigiRSIsaSk7dmFyIHNpemU9ZW5kLWk7bGlzdC5wdXNoKGZ1bmMuc3Vic3RyKGksc2l6ZSkpO2krPXNpemUrMjticmVha307Y2FzZSJBIjp7dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO2krPXNpemUudG9TdHJpbmcoKS5sZW5ndGg7aWYoZnVuY1tpXSE9PSJfIil0aHJvdyI/IjtpKys7bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiIFsiK3NpemUrIl0iKTticmVha307Y2FzZSJFIjpicmVhayBwYXJhbUxvb3A7ZGVmYXVsdDpyZXQrPSI/IitjO2JyZWFrIHBhcmFtTG9vcH19fWlmKCFhbGxvd1ZvaWQmJmxpc3QubGVuZ3RoPT09MSYmbGlzdFswXT09PSJ2b2lkIilsaXN0PVtdO2lmKHJhd0xpc3Qpe2lmKHJldCl7bGlzdC5wdXNoKHJldCsiPyIpfXJldHVybiBsaXN0fWVsc2V7cmV0dXJuIHJldCtmbHVzaExpc3QoKX19dHJ5e2lmKGZ1bmM9PSJPYmplY3QuX21haW4ifHxmdW5jPT0iX21haW4iKXtyZXR1cm4ibWFpbigpIn1pZih0eXBlb2YgZnVuYz09PSJudW1iZXIiKWZ1bmM9UG9pbnRlcl9zdHJpbmdpZnkoZnVuYyk7aWYoZnVuY1swXSE9PSJfIilyZXR1cm4gZnVuYztpZihmdW5jWzFdIT09Il8iKXJldHVybiBmdW5jO2lmKGZ1bmNbMl0hPT0iWiIpcmV0dXJuIGZ1bmM7c3dpdGNoKGZ1bmNbM10pe2Nhc2UibiI6cmV0dXJuIm9wZXJhdG9yIG5ldygpIjtjYXNlImQiOnJldHVybiJvcGVyYXRvciBkZWxldGUoKSJ9cmV0dXJuIHBhcnNlKCl9Y2F0Y2goZSl7cmV0dXJuIGZ1bmN9fWZ1bmN0aW9uIGRlbWFuZ2xlQWxsKHRleHQpe3JldHVybiB0ZXh0LnJlcGxhY2UoL19fWltcd1xkX10rL2csKGZ1bmN0aW9uKHgpe3ZhciB5PWRlbWFuZ2xlKHgpO3JldHVybiB4PT09eT94OngrIiBbIit5KyJdIn0pKX1mdW5jdGlvbiBzdGFja1RyYWNlKCl7dmFyIHN0YWNrPShuZXcgRXJyb3IpLnN0YWNrO3JldHVybiBzdGFjaz9kZW1hbmdsZUFsbChzdGFjayk6IihubyBzdGFjayB0cmFjZSBhdmFpbGFibGUpIn12YXIgUEFHRV9TSVpFPTQwOTY7ZnVuY3Rpb24gYWxpZ25NZW1vcnlQYWdlKHgpe3JldHVybiB4KzQwOTUmLTQwOTZ9dmFyIEhFQVA7dmFyIEhFQVA4LEhFQVBVOCxIRUFQMTYsSEVBUFUxNixIRUFQMzIsSEVBUFUzMixIRUFQRjMyLEhFQVBGNjQ7dmFyIFNUQVRJQ19CQVNFPTAsU1RBVElDVE9QPTAsc3RhdGljU2VhbGVkPWZhbHNlO3ZhciBTVEFDS19CQVNFPTAsU1RBQ0tUT1A9MCxTVEFDS19NQVg9MDt2YXIgRFlOQU1JQ19CQVNFPTAsRFlOQU1JQ1RPUD0wO2Z1bmN0aW9uIGVubGFyZ2VNZW1vcnkoKXthYm9ydCgiQ2Fubm90IGVubGFyZ2UgbWVtb3J5IGFycmF5cy4gRWl0aGVyICgxKSBjb21waWxlIHdpdGggLXMgVE9UQUxfTUVNT1JZPVggd2l0aCBYIGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50IHZhbHVlICIrVE9UQUxfTUVNT1JZKyIsICgyKSBjb21waWxlIHdpdGggQUxMT1dfTUVNT1JZX0dST1dUSCB3aGljaCBhZGp1c3RzIHRoZSBzaXplIGF0IHJ1bnRpbWUgYnV0IHByZXZlbnRzIHNvbWUgb3B0aW1pemF0aW9ucywgb3IgKDMpIHNldCBNb2R1bGUuVE9UQUxfTUVNT1JZIGJlZm9yZSB0aGUgcHJvZ3JhbSBydW5zLiIpfXZhciBUT1RBTF9TVEFDSz1Nb2R1bGVbIlRPVEFMX1NUQUNLIl18fDUyNDI4ODA7dmFyIFRPVEFMX01FTU9SWT1Nb2R1bGVbIlRPVEFMX01FTU9SWSJdfHwxNjc3NzIxNjA7dmFyIEZBU1RfTUVNT1JZPU1vZHVsZVsiRkFTVF9NRU1PUlkiXXx8MTA0ODU3NjA7dmFyIHRvdGFsTWVtb3J5PTQwOTY7d2hpbGUodG90YWxNZW1vcnk8VE9UQUxfTUVNT1JZfHx0b3RhbE1lbW9yeTwyKlRPVEFMX1NUQUNLKXtpZih0b3RhbE1lbW9yeTwxNioxMDI0KjEwMjQpe3RvdGFsTWVtb3J5Kj0yfWVsc2V7dG90YWxNZW1vcnkrPTE2KjEwMjQqMTAyNH19aWYodG90YWxNZW1vcnkhPT1UT1RBTF9NRU1PUlkpe01vZHVsZS5wcmludEVycigiaW5jcmVhc2luZyBUT1RBTF9NRU1PUlkgdG8gIit0b3RhbE1lbW9yeSsiIHRvIGJlIG1vcmUgcmVhc29uYWJsZSIpO1RPVEFMX01FTU9SWT10b3RhbE1lbW9yeX1hc3NlcnQodHlwZW9mIEludDMyQXJyYXkhPT0idW5kZWZpbmVkIiYmdHlwZW9mIEZsb2F0NjRBcnJheSE9PSJ1bmRlZmluZWQiJiYhIShuZXcgSW50MzJBcnJheSgxKSlbInN1YmFycmF5Il0mJiEhKG5ldyBJbnQzMkFycmF5KDEpKVsic2V0Il0sIkpTIGVuZ2luZSBkb2VzIG5vdCBwcm92aWRlIGZ1bGwgdHlwZWQgYXJyYXkgc3VwcG9ydCIpO3ZhciBidWZmZXI9bmV3IEFycmF5QnVmZmVyKFRPVEFMX01FTU9SWSk7SEVBUDg9bmV3IEludDhBcnJheShidWZmZXIpO0hFQVAxNj1uZXcgSW50MTZBcnJheShidWZmZXIpO0hFQVAzMj1uZXcgSW50MzJBcnJheShidWZmZXIpO0hFQVBVOD1uZXcgVWludDhBcnJheShidWZmZXIpO0hFQVBVMTY9bmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7SEVBUFUzMj1uZXcgVWludDMyQXJyYXkoYnVmZmVyKTtIRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTtIRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoYnVmZmVyKTtIRUFQMzJbMF09MjU1O2Fzc2VydChIRUFQVThbMF09PT0yNTUmJkhFQVBVOFszXT09PTAsIlR5cGVkIGFycmF5cyAyIG11c3QgYmUgcnVuIG9uIGEgbGl0dGxlLWVuZGlhbiBzeXN0ZW0iKTtNb2R1bGVbIkhFQVAiXT1IRUFQO01vZHVsZVsiSEVBUDgiXT1IRUFQODtNb2R1bGVbIkhFQVAxNiJdPUhFQVAxNjtNb2R1bGVbIkhFQVAzMiJdPUhFQVAzMjtNb2R1bGVbIkhFQVBVOCJdPUhFQVBVODtNb2R1bGVbIkhFQVBVMTYiXT1IRUFQVTE2O01vZHVsZVsiSEVBUFUzMiJdPUhFQVBVMzI7TW9kdWxlWyJIRUFQRjMyIl09SEVBUEYzMjtNb2R1bGVbIkhFQVBGNjQiXT1IRUFQRjY0O2Z1bmN0aW9uIGNhbGxSdW50aW1lQ2FsbGJhY2tzKGNhbGxiYWNrcyl7d2hpbGUoY2FsbGJhY2tzLmxlbmd0aD4wKXt2YXIgY2FsbGJhY2s9Y2FsbGJhY2tzLnNoaWZ0KCk7aWYodHlwZW9mIGNhbGxiYWNrPT0iZnVuY3Rpb24iKXtjYWxsYmFjaygpO2NvbnRpbnVlfXZhciBmdW5jPWNhbGxiYWNrLmZ1bmM7aWYodHlwZW9mIGZ1bmM9PT0ibnVtYmVyIil7aWYoY2FsbGJhY2suYXJnPT09dW5kZWZpbmVkKXtSdW50aW1lLmR5bkNhbGwoInYiLGZ1bmMpfWVsc2V7UnVudGltZS5keW5DYWxsKCJ2aSIsZnVuYyxbY2FsbGJhY2suYXJnXSl9fWVsc2V7ZnVuYyhjYWxsYmFjay5hcmc9PT11bmRlZmluZWQ/bnVsbDpjYWxsYmFjay5hcmcpfX19dmFyIF9fQVRQUkVSVU5fXz1bXTt2YXIgX19BVElOSVRfXz1bXTt2YXIgX19BVE1BSU5fXz1bXTt2YXIgX19BVEVYSVRfXz1bXTt2YXIgX19BVFBPU1RSVU5fXz1bXTt2YXIgcnVudGltZUluaXRpYWxpemVkPWZhbHNlO2Z1bmN0aW9uIHByZVJ1bigpe2lmKE1vZHVsZVsicHJlUnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInByZVJ1biJdPT0iZnVuY3Rpb24iKU1vZHVsZVsicHJlUnVuIl09W01vZHVsZVsicHJlUnVuIl1dO3doaWxlKE1vZHVsZVsicHJlUnVuIl0ubGVuZ3RoKXthZGRPblByZVJ1bihNb2R1bGVbInByZVJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pfWZ1bmN0aW9uIGVuc3VyZUluaXRSdW50aW1lKCl7aWYocnVudGltZUluaXRpYWxpemVkKXJldHVybjtydW50aW1lSW5pdGlhbGl6ZWQ9dHJ1ZTtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUSU5JVF9fKX1mdW5jdGlvbiBwcmVNYWluKCl7Y2FsbFJ1bnRpbWVDYWxsYmFja3MoX19BVE1BSU5fXyl9ZnVuY3Rpb24gZXhpdFJ1bnRpbWUoKXtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FURVhJVF9fKX1mdW5jdGlvbiBwb3N0UnVuKCl7aWYoTW9kdWxlWyJwb3N0UnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInBvc3RSdW4iXT09ImZ1bmN0aW9uIilNb2R1bGVbInBvc3RSdW4iXT1bTW9kdWxlWyJwb3N0UnVuIl1dO3doaWxlKE1vZHVsZVsicG9zdFJ1biJdLmxlbmd0aCl7YWRkT25Qb3N0UnVuKE1vZHVsZVsicG9zdFJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUE9TVFJVTl9fKX1mdW5jdGlvbiBhZGRPblByZVJ1bihjYil7X19BVFBSRVJVTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25QcmVSdW4iXT1Nb2R1bGUuYWRkT25QcmVSdW49YWRkT25QcmVSdW47ZnVuY3Rpb24gYWRkT25Jbml0KGNiKXtfX0FUSU5JVF9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25Jbml0Il09TW9kdWxlLmFkZE9uSW5pdD1hZGRPbkluaXQ7ZnVuY3Rpb24gYWRkT25QcmVNYWluKGNiKXtfX0FUTUFJTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25QcmVNYWluIl09TW9kdWxlLmFkZE9uUHJlTWFpbj1hZGRPblByZU1haW47ZnVuY3Rpb24gYWRkT25FeGl0KGNiKXtfX0FURVhJVF9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25FeGl0Il09TW9kdWxlLmFkZE9uRXhpdD1hZGRPbkV4aXQ7ZnVuY3Rpb24gYWRkT25Qb3N0UnVuKGNiKXtfX0FUUE9TVFJVTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25Qb3N0UnVuIl09TW9kdWxlLmFkZE9uUG9zdFJ1bj1hZGRPblBvc3RSdW47ZnVuY3Rpb24gaW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZ3ksZG9udEFkZE51bGwsbGVuZ3RoKXt2YXIgcmV0PShuZXcgUnVudGltZS5VVEY4UHJvY2Vzc29yKS5wcm9jZXNzSlNTdHJpbmcoc3RyaW5neSk7aWYobGVuZ3RoKXtyZXQubGVuZ3RoPWxlbmd0aH1pZighZG9udEFkZE51bGwpe3JldC5wdXNoKDApfXJldHVybiByZXR9TW9kdWxlWyJpbnRBcnJheUZyb21TdHJpbmciXT1pbnRBcnJheUZyb21TdHJpbmc7ZnVuY3Rpb24gaW50QXJyYXlUb1N0cmluZyhhcnJheSl7dmFyIHJldD1bXTtmb3IodmFyIGk9MDtpPGFycmF5Lmxlbmd0aDtpKyspe3ZhciBjaHI9YXJyYXlbaV07aWYoY2hyPjI1NSl7Y2hyJj0yNTV9cmV0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpKX1yZXR1cm4gcmV0LmpvaW4oIiIpfU1vZHVsZVsiaW50QXJyYXlUb1N0cmluZyJdPWludEFycmF5VG9TdHJpbmc7ZnVuY3Rpb24gd3JpdGVTdHJpbmdUb01lbW9yeShzdHJpbmcsYnVmZmVyLGRvbnRBZGROdWxsKXt2YXIgYXJyYXk9aW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZyxkb250QWRkTnVsbCk7dmFyIGk9MDt3aGlsZShpPGFycmF5Lmxlbmd0aCl7dmFyIGNocj1hcnJheVtpXTtIRUFQOFtidWZmZXIraT4+MF09Y2hyO2k9aSsxfX1Nb2R1bGVbIndyaXRlU3RyaW5nVG9NZW1vcnkiXT13cml0ZVN0cmluZ1RvTWVtb3J5O2Z1bmN0aW9uIHdyaXRlQXJyYXlUb01lbW9yeShhcnJheSxidWZmZXIpe2Zvcih2YXIgaT0wO2k8YXJyYXkubGVuZ3RoO2krKyl7SEVBUDhbYnVmZmVyK2k+PjBdPWFycmF5W2ldfX1Nb2R1bGVbIndyaXRlQXJyYXlUb01lbW9yeSJdPXdyaXRlQXJyYXlUb01lbW9yeTtmdW5jdGlvbiB3cml0ZUFzY2lpVG9NZW1vcnkoc3RyLGJ1ZmZlcixkb250QWRkTnVsbCl7Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoO2krKyl7SEVBUDhbYnVmZmVyK2k+PjBdPXN0ci5jaGFyQ29kZUF0KGkpfWlmKCFkb250QWRkTnVsbClIRUFQOFtidWZmZXIrc3RyLmxlbmd0aD4+MF09MH1Nb2R1bGVbIndyaXRlQXNjaWlUb01lbW9yeSJdPXdyaXRlQXNjaWlUb01lbW9yeTtmdW5jdGlvbiB1blNpZ24odmFsdWUsYml0cyxpZ25vcmUpe2lmKHZhbHVlPj0wKXtyZXR1cm4gdmFsdWV9cmV0dXJuIGJpdHM8PTMyPzIqTWF0aC5hYnMoMTw8Yml0cy0xKSt2YWx1ZTpNYXRoLnBvdygyLGJpdHMpK3ZhbHVlfWZ1bmN0aW9uIHJlU2lnbih2YWx1ZSxiaXRzLGlnbm9yZSl7aWYodmFsdWU8PTApe3JldHVybiB2YWx1ZX12YXIgaGFsZj1iaXRzPD0zMj9NYXRoLmFicygxPDxiaXRzLTEpOk1hdGgucG93KDIsYml0cy0xKTtpZih2YWx1ZT49aGFsZiYmKGJpdHM8PTMyfHx2YWx1ZT5oYWxmKSl7dmFsdWU9LTIqaGFsZit2YWx1ZX1yZXR1cm4gdmFsdWV9aWYoIU1hdGhbImltdWwiXXx8TWF0aFsiaW11bCJdKDQyOTQ5NjcyOTUsNSkhPT0tNSlNYXRoWyJpbXVsIl09ZnVuY3Rpb24gaW11bChhLGIpe3ZhciBhaD1hPj4+MTY7dmFyIGFsPWEmNjU1MzU7dmFyIGJoPWI+Pj4xNjt2YXIgYmw9YiY2NTUzNTtyZXR1cm4gYWwqYmwrKGFoKmJsK2FsKmJoPDwxNil8MH07TWF0aC5pbXVsPU1hdGhbImltdWwiXTt2YXIgTWF0aF9hYnM9TWF0aC5hYnM7dmFyIE1hdGhfY29zPU1hdGguY29zO3ZhciBNYXRoX3Npbj1NYXRoLnNpbjt2YXIgTWF0aF90YW49TWF0aC50YW47dmFyIE1hdGhfYWNvcz1NYXRoLmFjb3M7dmFyIE1hdGhfYXNpbj1NYXRoLmFzaW47dmFyIE1hdGhfYXRhbj1NYXRoLmF0YW47dmFyIE1hdGhfYXRhbjI9TWF0aC5hdGFuMjt2YXIgTWF0aF9leHA9TWF0aC5leHA7dmFyIE1hdGhfbG9nPU1hdGgubG9nO3ZhciBNYXRoX3NxcnQ9TWF0aC5zcXJ0O3ZhciBNYXRoX2NlaWw9TWF0aC5jZWlsO3ZhciBNYXRoX2Zsb29yPU1hdGguZmxvb3I7dmFyIE1hdGhfcG93PU1hdGgucG93O3ZhciBNYXRoX2ltdWw9TWF0aC5pbXVsO3ZhciBNYXRoX2Zyb3VuZD1NYXRoLmZyb3VuZDt2YXIgTWF0aF9taW49TWF0aC5taW47dmFyIHJ1bkRlcGVuZGVuY2llcz0wO3ZhciBydW5EZXBlbmRlbmN5V2F0Y2hlcj1udWxsO3ZhciBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9bnVsbDtmdW5jdGlvbiBhZGRSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMrKztpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKX19TW9kdWxlWyJhZGRSdW5EZXBlbmRlbmN5Il09YWRkUnVuRGVwZW5kZW5jeTtmdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMtLTtpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKX1pZihydW5EZXBlbmRlbmNpZXM9PTApe2lmKHJ1bkRlcGVuZGVuY3lXYXRjaGVyIT09bnVsbCl7Y2xlYXJJbnRlcnZhbChydW5EZXBlbmRlbmN5V2F0Y2hlcik7cnVuRGVwZW5kZW5jeVdhdGNoZXI9bnVsbH1pZihkZXBlbmRlbmNpZXNGdWxmaWxsZWQpe3ZhciBjYWxsYmFjaz1kZXBlbmRlbmNpZXNGdWxmaWxsZWQ7ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7Y2FsbGJhY2soKX19fU1vZHVsZVsicmVtb3ZlUnVuRGVwZW5kZW5jeSJdPXJlbW92ZVJ1bkRlcGVuZGVuY3k7TW9kdWxlWyJwcmVsb2FkZWRJbWFnZXMiXT17fTtNb2R1bGVbInByZWxvYWRlZEF1ZGlvcyJdPXt9O3ZhciBtZW1vcnlJbml0aWFsaXplcj1udWxsO3ZhciBfX1pUSXQ9MjE4NzI7dmFyIF9fWlRJcz0yMTg2NDt2YXIgX19aVEltPTIxOTM2O3ZhciBfX1pUSWw9MjE5MjA7dmFyIF9fWlRWTjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0U9MjE2NTY7dmFyIF9fWlRJaT0yMTg4ODt2YXIgX19aVEloPTIxODQwO3ZhciBfX1pUSWo9MjE5MDQ7dmFyIF9fWlRJZD0yMTk2ODt2YXIgX19aVFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0U9MjE2MTY7dmFyIF9fWlRJZj0yMTk1Mjt2YXIgX19aVElhPTIxODU2O3ZhciBfX1pUVk4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRT0yMTk3Njt2YXIgX19aVEljPTIxODI0O1NUQVRJQ19CQVNFPTg7U1RBVElDVE9QPVNUQVRJQ19CQVNFK1J1bnRpbWUuYWxpZ25NZW1vcnkoMjMwODMpO19fQVRJTklUX18ucHVzaCh7ZnVuYzooZnVuY3Rpb24oKXtfX0dMT0JBTF9fSV9hKCl9KX0se2Z1bmM6KGZ1bmN0aW9uKCl7X19HTE9CQUxfX0lfYTY1KCl9KX0se2Z1bmM6KGZ1bmN0aW9uKCl7X19HTE9CQUxfX0lfYTE1MygpfSl9KTthbGxvY2F0ZShbNzYsNjUsODMsOTAsMTA1LDExMiwwLDAsMTExLDExMiwxMDEsMTEwLDAsMCwwLDAsMTAzLDEwMSwxMTYsODAsMTExLDEwNSwxMTAsMTE2LDAsMCwwLDAsMCwwLDAsMCwxMDMsMTAxLDExNiw2NywxMTEsMTE3LDExMCwxMTYsMCwwLDAsMCwwLDAsMCwwLDEwNSwxMDUsMTA1LDAsMCwwLDAsMCw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMTIwLDg0LDAsMCw2NCwwLDAsMCw4MCw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMCwwLDAsMCwwLDAsMCwxNjAsODQsMCwwLDgwLDAsMCwwLDAsMCwwLDAsNzIsMCwwLDAsMTE4LDEwNSwxMDUsMTA1LDAsMCwwLDAsMTE4LDEwNSwxMDUsMTA1LDEwNSwwLDAsMCwxMDUsMTA1LDAsMCwwLDAsMCwwLDExOCwxMDUsMCwwLDAsMCwwLDAsMTE4LDAsMCwwLDAsMCwwLDAsMTA1LDEwNSwwLDAsMCwwLDAsMCw4MCw3NSw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMCwwLDAsMCwwLDAsMTYwLDg0LDAsMCwxNjAsMCwwLDAsMSwwLDAsMCw3MiwwLDAsMCwxMTgsNTAsMTE2LDU0LDExNSw1MCw0OCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTUsMTE1LDU2LDAsMCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTYsMTE1LDU0LDAsMCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTUsMTE1LDU2LDExOCw1MCwxMTYsNTYsMTE1LDU0LDAsMCwwLDAsMCwxMDQsOTcsMTE1LDMyLDEwNSwxMTUsNTgsMzIsMCwwLDAsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTcsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDk1LDExNSw5OSwxMDQsMTAxLDEwOSw5Nyw5NSwxMTYsMTIxLDExMiwxMDEsNjksMCwwLDIyNCw4NSwwLDAsMTYsMSwwLDAsODAsMzksMCwwLDAsMCwwLDAsODQsMTA0LDEwMSwzMiw3Niw2NSw5MCwzMiwxMTUsOTksMTA0LDEwMSwxMDksOTcsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDk5LDExMSwxMDMsMTEwLDEwNSwxMjIsMTAxLDEwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCwxLDAsMCwyMiwwLDAsMCwyMywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNSwxMjEsMTA5LDk4LDExMSwxMDgsMTE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDIyLDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY2LDk1LDczLDc4LDgzLDY3LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2Niw5NSw3Myw3OCw4Myw2Nyw5NSw1MSwxMTQsMTAzLDk4LDY5LDc4LDgzLDY5LDk1LDczLDgzLDc1LDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OCwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNjksMCwxMjAsODQsMCwwLDIwOCwyLDAsMCwyMjQsODUsMCwwLDE4NCwxLDAsMCwyNDgsMiwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDQ5LDQ5LDEwMSwxMTAsMTAwLDk1LDExMSwxMDIsOTUsMTAyLDEwNSwxMDgsMTAxLDY5LDAsMCwyMjQsODUsMCwwLDE2LDMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDgyLDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSwxMTAsMTAwLDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDQwLDMsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDIyLDAsMCwwLDAsMCwwLDAsMTUsMTQsMTMsMTIsMTEsMTAsOSw4LDE0LDAsMSwzLDYsMTAsMTAsOSwxMywxLDIsNCw3LDExLDExLDEwLDEyLDMsNCw1LDgsMTIsMTIsMTEsMTEsNiw3LDgsOSwxMywxMywxMiwxMCwxMCwxMSwxMiwxMywxNCwxNCwxMyw5LDEwLDExLDEyLDEzLDE0LDE1LDE0LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwwLDEsMiwzLDQsNSw2LDcsMSwwLDEsMiwzLDQsNSw2LDIsMSwwLDEsMiwzLDQsNSwzLDIsMSwwLDEsMiwzLDQsNCwzLDIsMSwwLDEsMiwzLDUsNCwzLDIsMSwwLDEsMiw2LDUsNCwzLDIsMSwwLDEsNyw2LDUsNCwzLDIsMSwwLDAsMCwwLDAsMTEyLDUsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDIyLDAsMCwwLDMxLDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3Nyw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw4MSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw4MSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsOCw0LDAsMCwxNDQsMzgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDk1LDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDczLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3Nyw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwxOTIsNywwLDAsMjMsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDQ4LDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw0OCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDQ4LDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw0OCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNjgsOTUsNjksNjksNjksNjksNzgsODMsNjYsOTUsNzMsNzgsODMsNjcsOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCwyMDAsNiwwLDAsMjQ4LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCw1Niw5LDAsMCwzNCwwLDAsMCwzNSwwLDAsMCwzNiwwLDAsMCwyMywwLDAsMCwzNywwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExMiwxMTYsMTE0LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw3Myw4MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw0OSw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDUwLDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw1MCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDUwLDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw1MCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNzAsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3OCw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3OCw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCwyNDAsNywwLDAsMTQ0LDM4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw0OSw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDUwLDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw1MCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDUwLDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw1MCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNzAsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTIsMTEsMCwwLDI0LDAsMCwwLDM4LDAsMCwwLDM5LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY2LDk1LDczLDc4LDgzLDY3LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDIyNCw4NSwwLDAsMTIwLDEwLDAsMCwyNDgsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDIzMiwxMiwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsMjQsMCwwLDAsNDMsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDgsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSwxMTIsMTE2LDExNCw5NSwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsNzMsODAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsNDksOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsNDksOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw1MCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNTAsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw1MCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNTAsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDcwLDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY4LDk1LDczLDc4LDgzLDY5LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3OCw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3OCw5NSw2OSw2OSw2OSw2OSwwLDIyNCw4NSwwLDAsMTYwLDExLDAsMCwxNDQsMzgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDk1LDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDczLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNjksNjksNjksNjksNjksNjksNjksMCwwLDAsMCwwLDAsMCwwLDgsMTUsMCwwLDI1LDAsMCwwLDQ0LDAsMCwwLDQ1LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCw0MCwxNCwwLDAsMjQ4LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMDQsMTYsMCwwLDQ2LDAsMCwwLDQ3LDAsMCwwLDQ4LDAsMCwwLDI1LDAsMCwwLDQ5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3NSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3NSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsNTYsMTUsMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsNDksOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsNDksOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw1MCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNTAsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw1MCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNTAsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDcwLDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwxMTgsMCwwLDAsMCwwLDAsMCwxMTYsMCwwLDAsMCwwLDAsMCwxMTUsMCwwLDAsMCwwLDAsMCw2NCwwLDAsMCwwLDAsMCwwLDE2LDE4LDAsMCw1MCwwLDAsMCw1MSwwLDAsMCw1NiwwLDAsMCwyNDgsMjU1LDI1NSwyNTUsMTYsMTgsMCwwLDUyLDAsMCwwLDUzLDAsMCwwLDE5MiwyNTUsMjU1LDI1NSwxOTIsMjU1LDI1NSwyNTUsMTYsMTgsMCwwLDU0LDAsMCwwLDU1LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU2LDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsOTksNjksNjksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDIwMCwxNywwLDAsMjI0LDQ1LDAsMCwwLDAsMCwwLDY0LDAsMCwwLDAsMCwwLDAsMTkyLDQ0LDAsMCw1NiwwLDAsMCw1NywwLDAsMCwxOTIsMjU1LDI1NSwyNTUsMTkyLDI1NSwyNTUsMjU1LDE5Miw0NCwwLDAsNTgsMCwwLDAsNTksMCwwLDAsMCwwLDAsMCwyMDgsMTgsMCwwLDYwLDAsMCwwLDYxLDAsMCwwLDI2LDAsMCwwLDIyLDAsMCwwLDIyLDAsMCwwLDIyLDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDI1LDAsMCwwLDI2LDAsMCwwLDI2LDAsMCwwLDI0LDAsMCwwLDI3LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Myw5OCw5NywxMTUsMTA1LDk5LDk1LDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDk4LDExNywxMDIsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDk5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxMzYsMTgsMCwwLDcyLDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDE5LDAsMCw2MiwwLDAsMCw2MywwLDAsMCw2NCwwLDAsMCwyOCwwLDAsMCw2NSwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExMiwxMTYsMTE0LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw3Myw4MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsOTUsNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsODMsNTcsOTUsNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsODMsNTcsOTUsNjksNjksNjksNjksMCwyMjQsODUsMCwwLDAsMTksMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsNzEsMTExLDExNiwzMiwxMDAsOTcsMTE2LDk3LDMyLDAsMCwwLDAsMCwwLDAsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDAsMCwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwxMDQsMTA1LDExNiwzMywwLDAsMTAwLDExMSwxMTAsMTAxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMTYsMTA1LDExMCwxMDMsMzIsMTE1LDEwNCwxMDUsMTE2LDMzLDAsMCwwLDAsMCw3Niw2NSw4Myw3MCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTEsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTUsMTA5LDk3LDEwMywxMDUsOTksNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTIwLDIwLDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw3Nyw5NywxMDMsMTA1LDk5LDMyLDExNCwxMDEsOTcsMTAwLDMzLDAsMCwwLDAsMCwxMTIsOTcsMTE0LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDAsMCwxMTIsOTcsMTE0LDExNSwxMDUsMTEwLDEwMywzMiw5OSwxMDQsMTE3LDExMCwxMDcsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNTAsOTksMTA0LDExNywxMTAsMTA3LDk1LDExNiw5Nyw5OCwxMDgsMTAxLDk1LDExNCwxMDEsOTcsMTAwLDk1LDEwMSwxMTQsMTE0LDExMSwxMTQsNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDIyNCwyMCwwLDAsODAsMzksMCwwLDAsMCwwLDAsNjcsMTA0LDExNywxMTAsMTA3LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMSwxMDIsMTAyLDExNSwxMDEsMTE2LDMyLDYxLDYxLDMyLDQ1LDQ5LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE2LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTYsMTA1LDEwOSwxMDEsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTEsMTEwLDExMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsODAsMjEsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNTQsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDk1LDk5LDEwNCwxMTcsMTEwLDEwNyw5NSwxMTYsOTcsOTgsMTA4LDEwMSw5NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDY5LDAsMCwwLDIyNCw4NSwwLDAsMTI4LDIxLDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw5OSwxMDQsMTE3LDExMCwxMDcsOTUsMTE1LDEwNSwxMjIsMTAxLDMyLDYxLDYxLDMyLDExNywxMDUsMTEwLDExNiw0NiwxMDksOTcsMTIwLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE2LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTYsMTA1LDEwOSwxMDEsNDQsMzIsOTksOTcsMTA4LDEwOCwzMiw0OSw0NSw1Niw0OCw0OCw0NSw2OCw2NSw3MCw4NSw4MSwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsNDYsMCwwLDAsMCwwLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiw5OSwxMTEsMTE3LDExMCwxMTYsMzIsMTA1LDExNSw1OCwzMiwwLDAsOTksMTE2LDExMSw5MSwwLDAsMCwwLDkzLDU4LDMyLDAsMCwwLDAsMCw4NCwxMDQsMTAxLDMyLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDIxLDAsMCw2NiwwLDAsMCw2NywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTEyLDIxLDAsMCw2OCwwLDAsMCw2OSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDg0LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTksOTcsMTE1LDMyLDk3LDMyLDExMiwxMTQsMTExLDk4LDEwOCwxMDEsMTA5LDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwwLDAsMCwwLDAsMCwwLDAsMCw4LDIxLDAsMCw3MCwwLDAsMCw3MSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsMzIsMTAxLDExMCw5OSwxMTEsMTAwLDEwMSwxMDAsMCwwLDExOCwxMDgsMTE0LDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMzIsMTE0LDEwMSw5NywxMDAsMzMsMCwwLDAsMCwwLDAsMCwwLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsMzIsMTE4LDEwOCwxMTQsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwwLDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw0OSw1MSwxMTAsMTExLDk1LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsOTUsMTE4LDEwOCwxMTQsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMzIsMjMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDExMiwxMTcsMTE1LDEwNCwxMDUsMTEwLDEwMywzMywwLDAsMCwwLDAsMCwwLDAsNzgsMTExLDMyLDc2LDY1LDgzLDEyMiwxMDUsMTEyLDMyLDg2LDc2LDgyLDMyLDExOSw5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDg2LDc2LDgyLDExNSwzMiwxMTUsMTAxLDk5LDExNiwxMDUsMTExLDExMCwwLDAsMCwwLDAsMCwwLDAsMCw2NCwyMywwLDAsNzIsMCwwLDAsNzMsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDUzLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsOTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiw5NSwxMTcsMTEwLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDY5LDAsMCwwLDAsMjI0LDg1LDAsMCwxNjgsMjMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDMyLDEwNSwxMTUsNTgsMzIsMCwxMTYsMTExLDExNiw5NywxMDgsMzIsMTA1LDExNiwxMDEsMTA5LDExNSw1OCwzMiwwLDAsMCw4MCw5NywxMTQsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMTE1LDMyLDExMCwxMTEsMTE5LDMzLDAsMCwwLDAsMCwwLDgwLDExNywxMTUsMTA0LDEwNSwxMTAsMTAzLDMyLDEwNSwxMTYsMTAxLDEwOSwzMiw5NywxMTYsMzIsMTA1LDExMCwxMDAsMTAxLDEyMCw1OCwzMiwwLDc5LDExMCwxMDgsMTIxLDMyLDc2LDY1LDgzLDEyMiwxMDUsMTEyLDMyLDgwLDc5LDczLDc4LDg0LDg3LDczLDgzLDY5LDMyLDY3LDcyLDg1LDc4LDc1LDY5LDY4LDMyLDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwwLDAsMCwwLDAsMjA4LDIzLDAsMCw3NCwwLDAsMCw3NSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1NSw5OCw5NywxMDAsOTUsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk1LDk5LDk3LDEwOCwxMDgsNjksMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTM2LDI0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNjgsMjQsMCwwLDc2LDAsMCwwLDc3LDAsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsMjYsMCwwLDc4LDAsMCwwLDc5LDAsMCwwLDI4LDAsMCwwLDI3LDAsMCwwLDgwLDAsMCwwLDgxLDAsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDI5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDk1LDk1LDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw1NCw5NSw5NSwxMDIsMTE3LDExMCw5OSw3Myw5MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw1MCw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDQ5LDQ5LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTExLDExNCwxMTUsNjksMTE4LDY5LDg1LDEwOCw4Miw3OCw4Myw1MSw5NSw1NCwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDY5LDY5LDk1LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDgzLDY2LDk1LDY5LDY5LDcwLDExOCw4Myw2NSw5NSw2OSw2OSw2OSwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsNTQsOTUsOTUsOTgsOTcsMTE1LDEwMSw3Myw3MCwxMTgsODIsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1MCwxMDUsMTExLDU0LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNjksNjksNjksNjksMCwwLDAsMCwxMjAsODQsMCwwLDIwOCwyNSwwLDAsMjI0LDg1LDAsMCw1NiwyNSwwLDAsOCwyNiwwLDAsMCwwLDAsMCw5MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDQ5LDQ5LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTExLDExNCwxMTUsNjksMTE4LDY5LDg1LDEwOCw4Miw3OCw4Myw0OCw5NSw1NCwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDY5LDY5LDk1LDAsMCwwLDEyMCw4NCwwLDAsMzIsMjYsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNDksMTExLDEwOCwxMDAsOTUsMTE1LDExNiwxMjEsMTA4LDEwMSw5NSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTA1LDExMSwxMTAsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTM2LDI2LDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDQ5LDUyLDExMCwxMTEsMTE2LDk1LDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMDEsMTAwLDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxOTIsMjYsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDg0LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwxMTAsMzksMTE2LDMyLDExNSwxMDEsMTAxLDEwOSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTAxLDEwMCwwLDAsMCwwLDAsMCwyMjQsMjYsMCwwLDgyLDAsMCwwLDgzLDAsMCwwLDIyLDAsMCwwLDAsMCwwLDAsODQsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEwMSwxMDEsMTA5LDExNSwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTgsMTAxLDMyLDExMSwxMDgsMTAwLDMyLDExNSwxMTYsMTIxLDEwOCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsMCwwLDAsMCwwLDAsMCwwLDE3NiwyNiwwLDAsODQsMCwwLDAsODUsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExOCw5NywxMDgsMTA1LDEwMCwwLDAsMCwwLDAsMTUyLDIwLDAsMCw4NiwwLDAsMCw4NywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDEwMywxMTEsMTA1LDExMCwxMDMsMzIsMTAwLDExMSwxMTksMTEwLDMzLDAsMCwwLDAsMCwwLDAsMCwwLDEyOCwyOCwwLDAsODgsMCwwLDAsODksMCwwLDAsOTAsMCwwLDAsMzAsMCwwLDAsOTEsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDgsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSwxMTIsMTE2LDExNCw5NSwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsNzMsODAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1MCwxMDUsMTExLDU0LDExNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDksNDgsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDIsMTA1LDEwOCwxMDEsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw1NSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw1NSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDI0MCwyNywwLDAsMTQ0LDM4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwxMjAsMjksMCwwLDkyLDAsMCwwLDkzLDAsMCwwLDk0LDAsMCwwLDMxLDAsMCwwLDk1LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw1MSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw1MSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwyMjQsODUsMCwwLDgsMjksMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDExOCwxMTEsMTA1LDEwMCwwLDAsMCwwLDk4LDExMSwxMTEsMTA4LDAsMCwwLDAsOTksMTA0LDk3LDExNCwwLDAsMCwwLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDk5LDEwNCw5NywxMTQsMCwwLDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsOTksMTA0LDk3LDExNCwwLDAsMCwxMTUsMTA0LDExMSwxMTQsMTE2LDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDEwNCwxMTEsMTE0LDExNiwwLDAsMTA1LDExMCwxMTYsMCwwLDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMCwwLDAsMCwxMDgsMTExLDExMCwxMDMsMCwwLDAsMCwxMTcsMTEwLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDEwOCwxMTEsMTEwLDEwMywwLDAsMCwxMDIsMTA4LDExMSw5NywxMTYsMCwwLDAsMTAwLDExMSwxMTcsOTgsMTA4LDEwMSwwLDAsMTE1LDExNiwxMDAsNTgsNTgsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMCwwLDAsMCwwLDExNSwxMTYsMTAwLDU4LDU4LDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjAsMTE3LDExMCwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiw5OSwxMDQsOTcsMTE0LDYyLDAsMCwwLDAsMCwwLDAsMCwxMTUsMTE2LDEwMCw1OCw1OCwxMTksMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMCwwLDAsMCwxMDEsMTA5LDExNSw5OSwxMTQsMTA1LDExMiwxMTYsMTAxLDExMCw1OCw1OCwxMTgsOTcsMTA4LDAsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNTgsNTgsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE4LDEwNSwxMDEsMTE5LDAsNzgsNDksNDgsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNDksNDksMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE4LDEwNSwxMDEsMTE5LDY5LDAsMCwwLDAsMCwxMjAsODQsMCwwLDIwMCwzMCwwLDAsNzgsNDksNDgsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNTEsMTE4LDk3LDEwOCw2OSwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDI0MCwzMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDksOTUsOTUsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw5NSw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDczLDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDEyMCw4NCwwLDAsODAsMzEsMCwwLDY0LDg2LDAsMCwxNiwzMSwwLDAsMCwwLDAsMCwxLDAsMCwwLDEyMCwzMSwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTAsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw3MywxMDQsNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDEwNCw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3MywxMDQsNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwxNTIsMzEsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMjAsMzEsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDk5LDY5LDY5LDY5LDY5LDAsMCw2NCw4NiwwLDAsMjQwLDMxLDAsMCwwLDAsMCwwLDEsMCwwLDAsMTIwLDMxXSwiaTgiLEFMTE9DX05PTkUsUnVudGltZS5HTE9CQUxfQkFTRSk7YWxsb2NhdGUoWzIwOCwzNiwwLDAsOTYsMCwwLDAsOTcsMCwwLDAsMjksMCwwLDAsMjUsMCwwLDAsMjMsMCwwLDAsMjMsMCwwLDAsMzAsMCwwLDAsMzEsMCwwLDAsMjYsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMzIsMCwwLDAsMjcsMCwwLDAsMzMsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDExNSwxMTYsMTAwLDExMSwxMTcsMTE2LDk4LDExNywxMDIsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDE3NiwzNiwwLDAsMTM2LDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsNTYsMzcsMCwwLDk4LDAsMCwwLDk5LDAsMCwwLDMwLDAsMCwwLDI1LDAsMCwwLDIzLDAsMCwwLDIzLDAsMCwwLDM0LDAsMCwwLDMxLDAsMCwwLDI2LDAsMCwwLDM1LDAsMCwwLDM2LDAsMCwwLDM0LDAsMCwwLDI4LDAsMCwwLDM1LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMTUsMTE2LDEwMCwxMDUsMTEwLDk4LDExNywxMDIsNzMsMTE5LDY5LDY5LDAsMjI0LDg1LDAsMCwzMiwzNywwLDAsMTM2LDQ0LDAsMCwwLDAsMCwwLDExNywxMTAsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsMTA4LDExMSw5OSw5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDMyLDEwNSwxMTAsMTEyLDExNywxMTYsMCwwLDAsMCwwLDAsMCwyMDgsMzcsMCwwLDEwMCwwLDAsMCwxMDEsMCwwLDAsMzEsMCwwLDAsMjIsMCwwLDAsMjQsMCwwLDAsMjQsMCwwLDAsMzcsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMzgsMCwwLDAsMjYsMCwwLDAsMzYsMCwwLDAsMjksMCwwLDAsMzcsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDExNSwxMTYsMTAwLDExMSwxMTcsMTE2LDk4LDExNywxMDIsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTc2LDM3LDAsMCw3Miw0NCwwLDAsMCwwLDAsMCwwLDAsMCwwLDU2LDM4LDAsMCwxMDIsMCwwLDAsMTAzLDAsMCwwLDMyLDAsMCwwLDIyLDAsMCwwLDI0LDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDM5LDAsMCwwLDQwLDAsMCwwLDM4LDAsMCwwLDI0LDAsMCwwLDM5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMTUsMTE2LDEwMCwxMDUsMTEwLDk4LDExNywxMDIsNzMsOTksNjksNjksMCwyMjQsODUsMCwwLDMyLDM4LDAsMCw3Miw0NCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSw5OSwxMTEsMTE3LDExMCwxMTYsNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsNzIsMzgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Nyw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExOSwxMDEsOTcsMTA3LDk1LDk5LDExMSwxMTcsMTEwLDExNiw2OSwwLDAsMCw2NCw4NiwwLDAsMTEyLDM4LDAsMCwwLDAsMCwwLDEsMCwwLDAsMTA0LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMjMyLDM4LDAsMCwxMDQsMCwwLDAsMTA1LDAsMCwwLDQxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MCwzOSwwLDAsMTA2LDAsMCwwLDEwNywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDgzLDExNiw0OSw0OSwxMDgsMTExLDEwMywxMDUsOTksOTUsMTAxLDExNCwxMTQsMTExLDExNCwwLDIyNCw4NSwwLDAsMjE2LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0MCwzOSwwLDAsMTA0LDAsMCwwLDEwOCwwLDAsMCw0MSwwLDAsMCwwLDAsMCwwLDgzLDExNiw0OSw1MCwxMDgsMTAxLDExMCwxMDMsMTE2LDEwNCw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDE2LDM5LDAsMCwyMzIsMzgsMCwwLDAsMCwwLDAsODMsMTE2LDQ5LDUxLDExNCwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCw1NiwzOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDEwMywxMDEsMTEwLDEwMSwxMTQsMTA1LDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1OCwzMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDIwMCwzOSwwLDAsMTA5LDAsMCwwLDExMCwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MCwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDY5LDAsMCwyMjQsODUsMCwwLDE3NiwzOSwwLDAsODAsMzksMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMSwxMTQsMTE0LDExMSwxMTQsOTUsOTksOTcsMTE2LDEwMSwxMDMsMTExLDExNCwxMjEsNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMjE2LDM5LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTAsOTUsOTUsMTAwLDExMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw2OSwwLDAsMjI0LDg1LDAsMCwwLDQwLDAsMCwyNDgsMzksMCwwLDAsMCwwLDAsMCwwLDAsMCwxMjAsNDAsMCwwLDExMSwwLDAsMCwxMTIsMCwwLDAsNDIsMCwwLDAsMjIsMCwwLDAsMzAsMCwwLDAsMzEsMCwwLDAsMjMsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNTIsOTUsOTUsMTAzLDEwMSwxMTAsMTAxLDExNCwxMDUsOTksOTUsMTAxLDExNCwxMTQsMTExLDExNCw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDgwLDQwLDAsMCwyNCw0MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIxNiw0MCwwLDAsMTEzLDAsMCwwLDExNCwwLDAsMCw0MywwLDAsMCwyNCwwLDAsMCwzMCwwLDAsMCwzMSwwLDAsMCwyNSwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw1MSw5NSw5NSwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDk1LDk5LDk3LDExNiwxMDEsMTAzLDExMSwxMTQsMTIxLDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNzYsNDAsMCwwLDI0LDQwLDAsMCwwLDAsMCwwLDEwOSwxMTcsMTE2LDEwMSwxMjAsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDk3LDEwNSwxMDgsMTAxLDEwMCwwLDAsMCwwLDAsMCwwLDEwMSw5OSwzMiw2MSw2MSwzMiw0OCwwLDQ3LDg1LDExNSwxMDEsMTE0LDExNSw0NywxMTgsMTAxLDExNCwxMDksOTcsNDcsMTE2LDEwOSwxMTIsNDcsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNDcsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDcsMTA4LDEwNSw5OCw0NywxMDgsMTA1LDk4LDk5LDEyMCwxMjAsNDcsMTA5LDExNywxMTYsMTAxLDEyMCw0Niw5OSwxMTIsMTEyLDAsMTE3LDExMCwxMDgsMTExLDk5LDEwNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywwLDAsMCwwLDAsMCwwLDAsNzIsNDQsMCwwLDExNSwwLDAsMCwxMTYsMCwwLDAsMjYsMCwwLDAsMjIsMCwwLDAsMjQsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMzgsMCwwLDAsMjYsMCwwLDAsMzYsMCwwLDAsMjQsMCwwLDAsMzksMCwwLDAsMCwwLDAsMCwxMzYsNDQsMCwwLDExNywwLDAsMCwxMTgsMCwwLDAsMzMsMCwwLDAsMjUsMCwwLDAsMjMsMCwwLDAsMjMsMCwwLDAsMzQsMCwwLDAsMzEsMCwwLDAsMjYsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMzIsMCwwLDAsMjgsMCwwLDAsMzUsMCwwLDAsOCwwLDAsMCwwLDAsMCwwLDE5Miw0NCwwLDAsNTYsMCwwLDAsNTcsMCwwLDAsMjQ4LDI1NSwyNTUsMjU1LDI0OCwyNTUsMjU1LDI1NSwxOTIsNDQsMCwwLDU4LDAsMCwwLDU5LDAsMCwwLDgsMCwwLDAsMCwwLDAsMCw4LDQ1LDAsMCwxMTksMCwwLDAsMTIwLDAsMCwwLDI0OCwyNTUsMjU1LDI1NSwyNDgsMjU1LDI1NSwyNTUsOCw0NSwwLDAsMTIxLDAsMCwwLDEyMiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsODAsNDUsMCwwLDEyMywwLDAsMCwxMjQsMCwwLDAsMjUyLDI1NSwyNTUsMjU1LDI1MiwyNTUsMjU1LDI1NSw4MCw0NSwwLDAsMTI1LDAsMCwwLDEyNiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsMTUyLDQ1LDAsMCwxMjcsMCwwLDAsMTI4LDAsMCwwLDI1MiwyNTUsMjU1LDI1NSwyNTIsMjU1LDI1NSwyNTUsMTUyLDQ1LDAsMCwxMjksMCwwLDAsMTMwLDAsMCwwLDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwwLDAsMCwwLDAsMCwwLDAsMTE3LDExMCwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOTYsNDMsMCwwLDEzMSwwLDAsMCwxMzIsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEzNiw0MywwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwxMDUsMTExLDExNSw5NSw5OCw5NywxMTUsMTAxLDU4LDU4LDk5LDEwOCwxMDEsOTcsMTE0LDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDEwNSwxMTEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNTUsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDY0LDQzLDAsMCwyMDAsMzksMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDEwNSwxMTEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNjksMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDExMiw0MywwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk4LDk3LDExNSwxMDUsOTksOTUsMTA1LDExMSwxMTUsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNDQsNDMsMCwwLDEzNiw0MywwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTExLDExNSw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMjA4LDQzLDAsMCwxMzYsNDMsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUzLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwxNiw0NCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUzLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDgwLDQ0LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTEsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwxNDQsNDQsMCwwLDAsMCwwLDAsMSwwLDAsMCwxOTIsNDMsMCwwLDMsMjQ0LDI1NSwyNTUsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUxLDk4LDk3LDExNSwxMDUsOTksOTUsMTA1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwyMTYsNDQsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDQ0LDAsMCwzLDI0NCwyNTUsMjU1LDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MSw5OCw5NywxMTUsMTA1LDk5LDk1LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSwwLDAsNjQsODYsMCwwLDMyLDQ1LDAsMCwwLDAsMCwwLDEsMCwwLDAsMTkyLDQzLDAsMCwzLDI0NCwyNTUsMjU1LDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MSw5OCw5NywxMTUsMTA1LDk5LDk1LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCw2NCw4NiwwLDAsMTA0LDQ1LDAsMCwwLDAsMCwwLDEsMCwwLDAsMCw0NCwwLDAsMywyNDQsMjU1LDI1NSw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTExLDExNSwxMTYsMTE0LDEwMSw5NywxMDksNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDY5LDY5LDAsNjQsODYsMCwwLDE3Niw0NSwwLDAsMywwLDAsMCwyLDAsMCwwLDE5Miw0NCwwLDAsMiwwLDAsMCw4MCw0NSwwLDAsMiw4LDAsMCwwLDAsMCwwLDcyLDQ2LDAsMCwxMzUsMCwwLDAsMTM2LDAsMCwwLDQ0LDAsMCwwLDIyLDAsMCwwLDMwLDAsMCwwLDMxLDAsMCwwLDI2LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU3LDk1LDk1LDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSw2OSwwLDAsMCwyMjQsODUsMCwwLDQwLDQ2LDAsMCwyNCw0MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDU2LDYwLDAsMCwxMzcsMCwwLDAsMTM4LDAsMCwwLDEzOSwwLDAsMCwyMiwwLDAsMCwyNSwwLDAsMCwzMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw5Niw2MCwwLDAsMTQwLDAsMCwwLDE0MSwwLDAsMCwxMzksMCwwLDAsMjMsMCwwLDAsMjYsMCwwLDAsMzMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsNjUsMCwwLDE0MiwwLDAsMCwxNDMsMCwwLDAsMTM5LDAsMCwwLDIyLDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDMxLDAsMCwwLDMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw5Nyw5OCw5OSwxMDAsMTAxLDEwMiw2NSw2Niw2Nyw2OCw2OSw3MCwxMjAsODgsNDMsNDUsMTEyLDgwLDEwNSw3MywxMTAsNzgsMCwwLDAsMCwwLDAsMCwwLDM3LDExMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDE2OCw2NSwwLDAsMTQ0LDAsMCwwLDE0NSwwLDAsMCwxMzksMCwwLDAsMzMsMCwwLDAsMzQsMCwwLDAsMzUsMCwwLDAsMzYsMCwwLDAsMzcsMCwwLDAsMzgsMCwwLDAsMzksMCwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsNDMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTA0LDY2LDAsMCwxNDYsMCwwLDAsMTQ3LDAsMCwwLDEzOSwwLDAsMCwyNSwwLDAsMCwyNiwwLDAsMCw0NCwwLDAsMCwyNywwLDAsMCw0NSwwLDAsMCwyMiwwLDAsMCwyMywwLDAsMCwyOCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjcsMCwwLDE0OCwwLDAsMCwxNDksMCwwLDAsMTM5LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDQ2LDAsMCwwLDMxLDAsMCwwLDQ3LDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDAsMCwwLDAsMzcsMTEyLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDAsNjIsMCwwLDE1MCwwLDAsMCwxNTEsMCwwLDAsMTM5LDAsMCwwLDQ1LDAsMCwwLDQ4LDAsMCwwLDQ5LDAsMCwwLDUwLDAsMCwwLDUxLDAsMCwwLDUyLDAsMCwwLDIyLDAsMCwwLDI0OCwyNTUsMjU1LDI1NSw0MCw2MiwwLDAsNDYsMCwwLDAsNDcsMCwwLDAsNDgsMCwwLDAsNDksMCwwLDAsNTAsMCwwLDAsNTEsMCwwLDAsNTIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsNzIsNTgsMzcsNzcsNTgsMzcsODMsMzcsMTA5LDQ3LDM3LDEwMCw0NywzNywxMjEsMzcsODksNDUsMzcsMTA5LDQ1LDM3LDEwMCwzNyw3Myw1OCwzNyw3Nyw1OCwzNyw4MywzMiwzNywxMTIsMCwwLDAsMCwwLDM3LDcyLDU4LDM3LDc3LDAsMCwwLDM3LDcyLDU4LDM3LDc3LDU4LDM3LDgzLDAsMCwwLDAsMjAwLDYyLDAsMCwxNTIsMCwwLDAsMTUzLDAsMCwwLDEzOSwwLDAsMCw1MywwLDAsMCw1MywwLDAsMCw1NCwwLDAsMCw1NSwwLDAsMCw1NiwwLDAsMCw1NywwLDAsMCwyMywwLDAsMCwyNDgsMjU1LDI1NSwyNTUsMjAwLDYyLDAsMCw1NCwwLDAsMCw1NSwwLDAsMCw1NiwwLDAsMCw1NywwLDAsMCw1OCwwLDAsMCw1OSwwLDAsMCw2MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNywwLDAsMCw3MiwwLDAsMCw1OCwwLDAsMCwzNywwLDAsMCw3NywwLDAsMCw1OCwwLDAsMCwzNywwLDAsMCw4MywwLDAsMCwzNywwLDAsMCwxMDksMCwwLDAsNDcsMCwwLDAsMzcsMCwwLDAsMTAwLDAsMCwwLDQ3LDAsMCwwLDM3LDAsMCwwLDEyMSwwLDAsMCwzNywwLDAsMCw4OSwwLDAsMCw0NSwwLDAsMCwzNywwLDAsMCwxMDksMCwwLDAsNDUsMCwwLDAsMzcsMCwwLDAsMTAwLDAsMCwwLDM3LDAsMCwwLDczLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDgzLDAsMCwwLDMyLDAsMCwwLDM3LDAsMCwwLDExMiwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDcyLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsNzIsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMCwwLDAsMCw4OCw2MywwLDAsMTU0LDAsMCwwLDE1NSwwLDAsMCwxMzksMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTkyLDYzLDAsMCwxNTYsMCwwLDAsMTU3LDAsMCwwLDEzOSwwLDAsMCwyMywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNzYsNjAsMCwwLDE1OCwwLDAsMCwxNTksMCwwLDAsMTM5LDAsMCwwLDYxLDAsMCwwLDYyLDAsMCwwLDM0LDAsMCwwLDM1LDAsMCwwLDM2LDAsMCwwLDM3LDAsMCwwLDYzLDAsMCwwLDM4LDAsMCwwLDM5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI0MCw2MCwwLDAsMTYwLDAsMCwwLDE2MSwwLDAsMCwxMzksMCwwLDAsNjQsMCwwLDAsNjUsMCwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsNDMsMCwwLDAsNjYsMCwwLDAsNDQsMCwwLDAsNDUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDgsNjEsMCwwLDE2MiwwLDAsMCwxNjMsMCwwLDAsMTM5LDAsMCwwLDY3LDAsMCwwLDY4LDAsMCwwLDQ2LDAsMCwwLDQ3LDAsMCwwLDQ4LDAsMCwwLDQ5LDAsMCwwLDY5LDAsMCwwLDUwLDAsMCwwLDUxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDExMiw2MSwwLDAsMTY0LDAsMCwwLDE2NSwwLDAsMCwxMzksMCwwLDAsNzAsMCwwLDAsNzEsMCwwLDAsNTIsMCwwLDAsNTMsMCwwLDAsNTQsMCwwLDAsNTUsMCwwLDAsNzIsMCwwLDAsNTYsMCwwLDAsNTcsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTQ0LDY3LDAsMCwxNjYsMCwwLDAsMTY3LDAsMCwwLDEzOSwwLDAsMCwyNCwwLDAsMCwyNSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1NywwLDAsMCwwLDAsMCwzNyw3NiwxMDIsMCwwLDAsMCwwLDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDAsMCwwLDAsMzIsNjgsMCwwLDE2OCwwLDAsMCwxNjksMCwwLDAsMTM5LDAsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDY4LDAsMCwxNzAsMCwwLDAsMTcxLDAsMCwwLDEzOSwwLDAsMCwyMiwwLDAsMCw1OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNyw0Niw0OCw3NiwxMDIsMCwwLDAsMCwwLDAsMCw2NCw2OSwwLDAsMTcyLDAsMCwwLDE3MywwLDAsMCwxMzksMCwwLDAsMjMsMCwwLDAsNTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyNCw2NCwwLDAsMTc0LDAsMCwwLDE3NSwwLDAsMCwxMzksMCwwLDAsMzQsMCwwLDAsMzMsMCwwLDAsNTgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODAsNjQsMCwwLDE3NiwwLDAsMCwxNzcsMCwwLDAsMTM5LDAsMCwwLDM1LDAsMCwwLDM0LDAsMCwwLDU5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTgsMTAxLDk5LDExNiwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNiw2MCwwLDAsMTc4LDAsMCwwLDE3OSwwLDAsMCwxMzksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMzIsNTYsMCwwLDE4MCwwLDAsMCwxODEsMCwwLDAsMTM5LDAsMCwwLDQwLDAsMCwwLDM2LDAsMCwwLDQxLDAsMCwwLDM3LDAsMCwwLDQyLDAsMCwwLDIyLDAsMCwwLDM4LDAsMCwwLDI0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIwMCw1NywwLDAsMTgyLDAsMCwwLDE4MywwLDAsMCwxMzksMCwwLDAsMjIsMCwwLDAsMjMsMCwwLDAsMjUsMCwwLDAsNzMsMCwwLDAsNzQsMCwwLDAsMjYsMCwwLDAsNzUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTkyLDU5LDAsMCwxODQsMCwwLDAsMTg1LDAsMCwwLDEzOSwwLDAsMCw3NiwwLDAsMCw3NywwLDAsMCw2MCwwLDAsMCw2MSwwLDAsMCw2MiwwLDAsMCwwLDAsMCwwLDIzMiw1OSwwLDAsMTg2LDAsMCwwLDE4NywwLDAsMCwxMzksMCwwLDAsNzgsMCwwLDAsNzksMCwwLDAsNjMsMCwwLDAsNjQsMCwwLDAsNjUsMCwwLDAsMTE2LDAsMCwwLDExNCwwLDAsMCwxMTcsMCwwLDAsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMDIsOTcsMTA4LDExNSwxMDEsMCwwLDAsMTAyLDAsMCwwLDk3LDAsMCwwLDEwOCwwLDAsMCwxMTUsMCwwLDAsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsMTA5LDAsMCwwLDQ3LDAsMCwwLDM3LDAsMCwwLDEwMCwwLDAsMCw0NywwLDAsMCwzNywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDcyLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDgzLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNyw5NywzMiwzNyw5OCwzMiwzNywxMDAsMzIsMzcsNzIsNTgsMzcsNzcsNTgsMzcsODMsMzIsMzcsODksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNywwLDAsMCw5NywwLDAsMCwzMiwwLDAsMCwzNywwLDAsMCw5OCwwLDAsMCwzMiwwLDAsMCwzNywwLDAsMCwxMDAsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsNzIsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsODksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDczLDU4LDM3LDc3LDU4LDM3LDgzLDMyLDM3LDExMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsNzMsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsMTEyLDAsMCwwLDAsMCwwLDAsMTA4LDExMSw5OSw5NywxMDgsMTAxLDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsMCwwLDAsMCwwLDAsMCwzMiw1NiwwLDAsMTg4LDAsMCwwLDE4OSwwLDAsMCwxMzksMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTQsMTA4LDExMSw5OSw5NywxMDgsMTAxLDUzLDEwMiw5Nyw5OSwxMDEsMTE2LDY5LDAsMCwwLDIyNCw4NSwwLDAsOCw1NiwwLDAsMTA0LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDU2LDAsMCwxODgsMCwwLDAsMTkwLDAsMCwwLDEzOSwwLDAsMCwzOSwwLDAsMCwyMywwLDAsMCwyNCwwLDAsMCwyNSwwLDAsMCw0MywwLDAsMCw0MCwwLDAsMCw0NCwwLDAsMCw0MSwwLDAsMCw0NSwwLDAsMCwyNiwwLDAsMCw0MiwwLDAsMCwyNywwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1Myw5OSwxMTYsMTIxLDExMiwxMDEsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDk5LDExNiwxMjEsMTEyLDEwMSw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMTIwLDg0LDAsMCwxNDQsNTYsMCwwLDY0LDg2LDAsMCwxMjAsNTYsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNTYsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUzLDk5LDExNiwxMjEsMTEyLDEwMSw3Myw5OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwyMDgsNTYsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNTYsMCwwLDIsMCwwLDAsMCwwLDAsMCwxMjgsNTcsMCwwLDE4OCwwLDAsMCwxOTEsMCwwLDAsMTM5LDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDI4LDAsMCwwLDgwLDAsMCwwLDgxLDAsMCwwLDI5LDAsMCwwLDgyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTAwLDEwMSw5OSwxMTgsMTE2LDczLDk5LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsOTUsOTgsOTcsMTE1LDEwMSw2OSwwLDAsMTIwLDg0LDAsMCw5Niw1NywwLDAsNjQsODYsMCwwLDU2LDU3LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTIwLDU3LDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTAwLDEwMSw5OSwxMTgsMTE2LDczLDExOSw5OSw0OSw0OSw5NSw5NSwxMDksOTgsMTE1LDExNiw5NywxMTYsMTAxLDk1LDExNiw2OSw2OSwwLDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwxNjAsNTcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMjAsNTcsMCwwLDIsMCwwLDAsMCwwLDAsMCw2NCw1OCwwLDAsMTg4LDAsMCwwLDE5MiwwLDAsMCwxMzksMCwwLDAsMjYsMCwwLDAsMjcsMCwwLDAsMzAsMCwwLDAsODMsMCwwLDAsODQsMCwwLDAsMzEsMCwwLDAsODUsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsNzMsNjgsMTE1LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwyNCw1OCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDEyMCw1NywwLDAsMiwwLDAsMCwwLDAsMCwwLDE4NCw1OCwwLDAsMTg4LDAsMCwwLDE5MywwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsNzMsNjgsMTA1LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwxNDQsNTgsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMjAsNTcsMCwwLDIsMCwwLDAsMCwwLDAsMCw0OCw1OSwwLDAsMTg4LDAsMCwwLDE5NCwwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU0LDk1LDk1LDExMCw5NywxMTQsMTE0LDExMSwxMTksOTUsMTE2LDExMSw5NSwxMTcsMTE2LDEwMiw1Niw3Myw3NiwxMDYsNTEsNTAsNjksNjksNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDgsNTksMCwwLDE4NCw1OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDE1Miw1OSwwLDAsMTg4LDAsMCwwLDE5NSwwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU1LDk1LDk1LDExOSwxMDUsMTAwLDEwMSwxMTAsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNywxMTYsMTAyLDU2LDczLDc2LDEwNiw1MSw1MCw2OSw2OSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDExMiw1OSwwLDAsMTg0LDU4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMTAsMTE3LDEwOSwxMTIsMTE3LDExMCw5OSwxMTYsNzMsOTksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDE2OCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExMCwxMTcsMTA5LDExMiwxMTcsMTEwLDk5LDExNiw3MywxMTksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDIwOCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU0LDEwOCwxMTEsOTksOTcsMTA4LDEwMSw1Myw5NSw5NSwxMDUsMTA5LDExMiw2OSwwLDAsMCwyMjQsODUsMCwwLDI0OCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDgsMTA4LDk3LDExNiwxMDEsNzMsOTksNjksNjksMCwwLDAsMCwwLDIyNCw4NSwwLDAsMzIsNjAsMCwwLDMyLDU2LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTA4LDEwOCw5NywxMTYsMTAxLDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCw3Miw2MCwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDEwOSwxMTEsMTEwLDEwMSwxMjEsMTEyLDExNywxMTAsOTksMTE2LDczLDk5LDc2LDk4LDQ4LDY5LDY5LDY5LDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMTIwLDg0LDAsMCwxNDQsNjAsMCwwLDY0LDg2LDAsMCwxMTIsNjAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjAsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDEwOSwxMTEsMTEwLDEwMSwxMjEsMTEyLDExNywxMTAsOTksMTE2LDczLDk5LDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDAsMCw2NCw4NiwwLDAsMjA4LDYwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTY4LDYwLDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCwxMDksMTExLDExMCwxMDEsMTIxLDExMiwxMTcsMTEwLDk5LDExNiw3MywxMTksNzYsOTgsNDgsNjksNjksNjksMCwwLDAsMCwwLDY0LDg2LDAsMCwxNiw2MSwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDE2OCw2MCwwLDAsMiwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsMTA5LDExMSwxMTAsMTAxLDEyMSwxMTIsMTE3LDExMCw5OSwxMTYsNzMsMTE5LDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDAsMCw2NCw4NiwwLDAsODAsNjEsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjAsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExNiwxMDUsMTA5LDEwMSw5NSwxMDMsMTAxLDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTE2LDEwNSwxMDksMTAxLDk1LDk4LDk3LDExNSwxMDEsNjksMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyMTYsNjEsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTYsMTA1LDEwOSwxMDEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTUsMTE1LDExNiwxMTEsMTE0LDk3LDEwMywxMDEsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDI0OCw2MSwwLDAsNjQsODYsMCwwLDE0NCw2MSwwLDAsMCwwLDAsMCwzLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDI0MCw2MSwwLDAsMiwwLDAsMCwzMiw2MiwwLDAsMCw4LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTYsMTE2LDEwNSwxMDksMTAxLDk1LDEwMywxMDEsMTE2LDczLDExOSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTYsMTA1LDEwOSwxMDEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTUsMTE1LDExNiwxMTEsMTE0LDk3LDEwMywxMDEsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwxNTIsNjIsMCwwLDY0LDg2LDAsMCw4MCw2MiwwLDAsMCwwLDAsMCwzLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDI0MCw2MSwwLDAsMiwwLDAsMCwxOTIsNjIsMCwwLDAsOCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExNiwxMDUsMTA5LDEwMSw5NSwxMTIsMTE3LDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsOTUsOTUsMTE2LDEwNSwxMDksMTAxLDk1LDExMiwxMTcsMTE2LDY5LDAsMCwwLDAsMTIwLDg0LDAsMCw1Niw2MywwLDAsNjQsODYsMCwwLDI0MCw2MiwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDgwLDYzLDAsMCwwLDgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMTYsMTA1LDEwOSwxMDEsOTUsMTEyLDExNywxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsNjQsODYsMCwwLDEyMCw2MywwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDgwLDYzLDAsMCwwLDgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTUsNzMsOTksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTEsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNjksMCwxMjAsODQsMCwwLDI0OCw2MywwLDAsNjQsODYsMCwwLDIyNCw2MywwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDE2LDY0LDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTUsNzMsMTE5LDY5LDY5LDAsMCwwLDAsNjQsODYsMCwwLDU2LDY0LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTYsNjQsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDEwMywxMDEsMTE2LDczLDk5LDc4LDgzLDk1LDQ5LDU3LDEwNSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDEwMywxMDEsMTE2LDczLDk5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Miw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDIwOCw2NCwwLDAsNjQsODYsMCwwLDE4NCw2NCwwLDAsMCwwLDAsMCwxLDAsMCwwLDI0MCw2NCwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsMTEyLDY0LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMjQ4LDY0LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw3MywxMTksNzgsODMsOTUsNDksNTcsMTA1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTgsMTE3LDEwMiw5NSwxMDUsMTE2LDEwMSwxMTQsOTcsMTE2LDExMSwxMTQsNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1Nyw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw3MywxMTksNjksNjksMCwwLDAsNjQsODYsMCwwLDEyMCw2NSwwLDAsMCwwLDAsMCwxLDAsMCwwLDI0MCw2NCwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsNDgsNjUsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNDQsNjUsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDk5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDk5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Miw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMTIsMTE3LDExNiw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDQwLDY2LDAsMCw2NCw4NiwwLDAsMTYsNjYsMCwwLDAsMCwwLDAsMSwwLDAsMCw3Miw2NiwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsMjAwLDY1LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsODAsNjYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDExOSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDExOSw2OSw2OSwwLDAsMCw2NCw4NiwwLDAsMjA4LDY2LDAsMCwwLDAsMCwwLDEsMCwwLDAsNzIsNjYsMCwwLDAsMCwwLDAsNjQsODYsMCwwLDEzNiw2NiwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDIzMiw2NiwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSwxMDMsMTAxLDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMTA0LDY3LDAsMCw2NCw4NiwwLDAsMzIsNjcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMzYsNjcsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDEwNSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OSw5NSw5NSwxMDksMTExLDExMCwxMDEsMTIxLDk1LDEwMywxMDEsMTE2LDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyNDgsNjcsMCwwLDY0LDg2LDAsMCwxNzYsNjcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwyNCw2OCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSwxMTIsMTE3LDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTEyLDExNywxMTYsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMTM2LDY4LDAsMCw2NCw4NiwwLDAsNjQsNjgsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTEyLDExNywxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OSw5NSw5NSwxMDksMTExLDExMCwxMDEsMTIxLDk1LDExMiwxMTcsMTE2LDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyNCw2OSwwLDAsNjQsODYsMCwwLDIwOCw2OCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDU2LDY5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY1LDAsMCwwLDc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MCwwLDAsMCw3NywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY1LDc3LDAsMCwwLDAsMCwwLDgwLDc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NCwwLDAsMCw5NywwLDAsMCwxMTAsMCwwLDAsMTE3LDAsMCwwLDk3LDAsMCwwLDExNCwwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw3MCwwLDAsMCwxMDEsMCwwLDAsOTgsMCwwLDAsMTE0LDAsMCwwLDExNywwLDAsMCw5NywwLDAsMCwxMTQsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NywwLDAsMCw5NywwLDAsMCwxMTQsMCwwLDAsOTksMCwwLDAsMTA0LDAsMCwwLDAsMCwwLDAsNjUsMCwwLDAsMTEyLDAsMCwwLDExNCwwLDAsMCwxMDUsMCwwLDAsMTA4LDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwxMDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDc0LDAsMCwwLDExNywwLDAsMCwxMDgsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2NSwwLDAsMCwxMTcsMCwwLDAsMTAzLDAsMCwwLDExNywwLDAsMCwxMTUsMCwwLDAsMTE2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCwxMDEsMCwwLDAsMTEyLDAsMCwwLDExNiwwLDAsMCwxMDEsMCwwLDAsMTA5LDAsMCwwLDk4LDAsMCwwLDEwMSwwLDAsMCwxMTQsMCwwLDAsMCwwLDAsMCw3OSwwLDAsMCw5OSwwLDAsMCwxMTYsMCwwLDAsMTExLDAsMCwwLDk4LDAsMCwwLDEwMSwwLDAsMCwxMTQsMCwwLDAsMCwwLDAsMCw3OCwwLDAsMCwxMTEsMCwwLDAsMTE4LDAsMCwwLDEwMSwwLDAsMCwxMDksMCwwLDAsOTgsMCwwLDAsMTAxLDAsMCwwLDExNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjgsMCwwLDAsMTAxLDAsMCwwLDk5LDAsMCwwLDEwMSwwLDAsMCwxMDksMCwwLDAsOTgsMCwwLDAsMTAxLDAsMCwwLDExNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsOTcsMCwwLDAsMTEwLDAsMCwwLDAsMCwwLDAsNzAsMCwwLDAsMTAxLDAsMCwwLDk4LDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsOTcsMCwwLDAsMTE0LDAsMCwwLDAsMCwwLDAsNjVdLCJpOCIsQUxMT0NfTk9ORSxSdW50aW1lLkdMT0JBTF9CQVNFKzkzMjQpO2FsbG9jYXRlKFsxMTIsMCwwLDAsMTE0LDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwwLDAsMCwwLDc0LDAsMCwwLDExNywwLDAsMCwxMDgsMCwwLDAsMCwwLDAsMCw2NSwwLDAsMCwxMTcsMCwwLDAsMTAzLDAsMCwwLDAsMCwwLDAsODMsMCwwLDAsMTAxLDAsMCwwLDExMiwwLDAsMCwwLDAsMCwwLDc5LDAsMCwwLDk5LDAsMCwwLDExNiwwLDAsMCwwLDAsMCwwLDc4LDAsMCwwLDExMSwwLDAsMCwxMTgsMCwwLDAsMCwwLDAsMCw2OCwwLDAsMCwxMDEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzQsOTcsMTEwLDExNyw5NywxMTQsMTIxLDAsNzAsMTAxLDk4LDExNCwxMTcsOTcsMTE0LDEyMSwwLDAsMCwwLDAsMCwwLDAsNzcsOTcsMTE0LDk5LDEwNCwwLDAsMCw2NSwxMTIsMTE0LDEwNSwxMDgsMCwwLDAsNzcsOTcsMTIxLDAsMCwwLDAsMCw3NCwxMTcsMTEwLDEwMSwwLDAsMCwwLDc0LDExNywxMDgsMTIxLDAsMCwwLDAsNjUsMTE3LDEwMywxMTcsMTE1LDExNiwwLDAsODMsMTAxLDExMiwxMTYsMTAxLDEwOSw5OCwxMDEsMTE0LDAsMCwwLDAsMCwwLDAsNzksOTksMTE2LDExMSw5OCwxMDEsMTE0LDAsNzgsMTExLDExOCwxMDEsMTA5LDk4LDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDY4LDEwMSw5OSwxMDEsMTA5LDk4LDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDc0LDk3LDExMCwwLDAsMCwwLDAsNzAsMTAxLDk4LDAsMCwwLDAsMCw3Nyw5NywxMTQsMCwwLDAsMCwwLDY1LDExMiwxMTQsMCwwLDAsMCwwLDc0LDExNywxMTAsMCwwLDAsMCwwLDc0LDExNywxMDgsMCwwLDAsMCwwLDY1LDExNywxMDMsMCwwLDAsMCwwLDgzLDEwMSwxMTIsMCwwLDAsMCwwLDc5LDk5LDExNiwwLDAsMCwwLDAsNzgsMTExLDExOCwwLDAsMCwwLDAsNjgsMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NywwLDAsMCwxMTEsMCwwLDAsMTEwLDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDg0LDAsMCwwLDExNywwLDAsMCwxMDEsMCwwLDAsMTE1LDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw4NywwLDAsMCwxMDEsMCwwLDAsMTAwLDAsMCwwLDExMCwwLDAsMCwxMDEsMCwwLDAsMTE1LDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw4NCwwLDAsMCwxMDQsMCwwLDAsMTE3LDAsMCwwLDExNCwwLDAsMCwxMTUsMCwwLDAsMTAwLDAsMCwwLDk3LDAsMCwwLDEyMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzAsMCwwLDAsMTE0LDAsMCwwLDEwNSwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCw5NywwLDAsMCwxMTYsMCwwLDAsMTE3LDAsMCwwLDExNCwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCwxMTcsMCwwLDAsMTEwLDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsMTExLDAsMCwwLDExMCwwLDAsMCwwLDAsMCwwLDg0LDAsMCwwLDExNywwLDAsMCwxMDEsMCwwLDAsMCwwLDAsMCw4NywwLDAsMCwxMDEsMCwwLDAsMTAwLDAsMCwwLDAsMCwwLDAsODQsMCwwLDAsMTA0LDAsMCwwLDExNywwLDAsMCwwLDAsMCwwLDcwLDAsMCwwLDExNCwwLDAsMCwxMDUsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCw5NywwLDAsMCwxMTYsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMTE3LDExMCwxMDAsOTcsMTIxLDAsMCw3NywxMTEsMTEwLDEwMCw5NywxMjEsMCwwLDg0LDExNywxMDEsMTE1LDEwMCw5NywxMjEsMCw4NywxMDEsMTAwLDExMCwxMDEsMTE1LDEwMCw5NywxMjEsMCwwLDAsMCwwLDAsMCw4NCwxMDQsMTE3LDExNCwxMTUsMTAwLDk3LDEyMSwwLDAsMCwwLDAsMCwwLDAsNzAsMTE0LDEwNSwxMDAsOTcsMTIxLDAsMCw4Myw5NywxMTYsMTE3LDExNCwxMDAsOTcsMTIxLDAsMCwwLDAsMCwwLDAsMCw4MywxMTcsMTEwLDAsMCwwLDAsMCw3NywxMTEsMTEwLDAsMCwwLDAsMCw4NCwxMTcsMTAxLDAsMCwwLDAsMCw4NywxMDEsMTAwLDAsMCwwLDAsMCw4NCwxMDQsMTE3LDAsMCwwLDAsMCw3MCwxMTQsMTA1LDAsMCwwLDAsMCw4Myw5NywxMTYsMCwwLDAsMCwwLDIsMCwwLDE5MiwzLDAsMCwxOTIsNCwwLDAsMTkyLDUsMCwwLDE5Miw2LDAsMCwxOTIsNywwLDAsMTkyLDgsMCwwLDE5Miw5LDAsMCwxOTIsMTAsMCwwLDE5MiwxMSwwLDAsMTkyLDEyLDAsMCwxOTIsMTMsMCwwLDE5MiwxNCwwLDAsMTkyLDE1LDAsMCwxOTIsMTYsMCwwLDE5MiwxNywwLDAsMTkyLDE4LDAsMCwxOTIsMTksMCwwLDE5MiwyMCwwLDAsMTkyLDIxLDAsMCwxOTIsMjIsMCwwLDE5MiwyMywwLDAsMTkyLDI0LDAsMCwxOTIsMjUsMCwwLDE5MiwyNiwwLDAsMTkyLDI3LDAsMCwxOTIsMjgsMCwwLDE5MiwyOSwwLDAsMTkyLDMwLDAsMCwxOTIsMzEsMCwwLDE5MiwwLDAsMCwxNzksMSwwLDAsMTk1LDIsMCwwLDE5NSwzLDAsMCwxOTUsNCwwLDAsMTk1LDUsMCwwLDE5NSw2LDAsMCwxOTUsNywwLDAsMTk1LDgsMCwwLDE5NSw5LDAsMCwxOTUsMTAsMCwwLDE5NSwxMSwwLDAsMTk1LDEyLDAsMCwxOTUsMTMsMCwwLDIxMSwxNCwwLDAsMTk1LDE1LDAsMCwxOTUsMCwwLDEyLDE4NywxLDAsMTIsMTk1LDIsMCwxMiwxOTUsMywwLDEyLDE5NSw0LDAsMTIsMjExLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEyOCw4MywwLDAsMTk2LDAsMCwwLDE5NywwLDAsMCw4OSwwLDAsMCwwLDAsMCwwLDExNSwxMTYsMTAwLDU4LDU4LDk4LDk3LDEwMCw5NSw5OSw5NywxMTUsMTE2LDAsMCwwLDgzLDExNiw1NywxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDAsMCwwLDAsMTIwLDg0LDAsMCw4OCw4MywwLDAsODMsMTE2LDU2LDk4LDk3LDEwMCw5NSw5OSw5NywxMTUsMTE2LDAsMCwwLDAsMCwyMjQsODUsMCwwLDExMiw4MywwLDAsMCwwLDAsMCwwLDAsMCwwLDc4LDQ5LDQ4LDk1LDk1LDk5LDEyMCwxMjAsOTcsOTgsMTA1LDExOCw0OSw0OSw1NCw5NSw5NSwxMTUsMTA0LDEwNSwxMDksOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNDQsODMsMCwwLDEwNCw4MywwLDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNDksNTUsOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMjAwLDgzLDAsMCwxODQsODMsMCwwLDAsMCwwLDAsNzgsNDksNDgsOTUsOTUsOTksMTIwLDEyMCw5Nyw5OCwxMDUsMTE4LDQ5LDQ5LDU3LDk1LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw5NSwxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDY5LDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNDksNTUsOTUsOTUsMTEyLDk4LDk3LDExNSwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsNDAsODQsMCwwLDE4NCw4MywwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDAsODQsMCwwLDgwLDg0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQwLDgzLDAsMCwxOTgsMCwwLDAsMTk5LDAsMCwwLDIwMCwwLDAsMCwyMDEsMCwwLDAsNDMsMCwwLDAsMzUsMCwwLDAsMjIsMCwwLDAsMjcsMCwwLDAsMCwwLDAsMCw5Niw4NCwwLDAsMTk4LDAsMCwwLDIwMiwwLDAsMCwyMDAsMCwwLDAsMjAxLDAsMCwwLDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDg1LDAsMCwxOTgsMCwwLDAsMjAzLDAsMCwwLDIwMCwwLDAsMCwyMDEsMCwwLDAsNDUsMCwwLDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNTEsOTUsOTUsMTAyLDExNywxMTAsMTAwLDk3LDEwOSwxMDEsMTEwLDExNiw5NywxMDgsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDIyNCw4NSwwLDAsMjE2LDg0LDAsMCwxODQsODMsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwxMTIsMTcsMCwwLDY4LDExMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDI0LDg1LDAsMCw5OCwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsNDAsODUsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCw1Niw4NSwwLDAsMTA0LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCw3Miw4NSwwLDAsOTcsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDg4LDg1LDAsMCwxOTIsODQsMCwwLDEyOCwxNywwLDAsMTkyLDg0LDAsMCwxMjAsMTcsMCwwLDEwNSwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsMTIwLDg1LDAsMCwxMDYsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDEzNiw4NSwwLDAsMTA4LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwxNTIsODUsMCwwLDEwOSwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsMTY4LDg1LDAsMCwxMDIsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDE4NCw4NSwwLDAsMTAwLDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwyMDAsODUsMCwwLDAsMCwwLDAsNDAsODYsMCwwLDE5OCwwLDAsMCwyMDQsMCwwLDAsMjAwLDAsMCwwLDIwMSwwLDAsMCw0MywwLDAsMCwzNiwwLDAsMCwyMywwLDAsMCwyOCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNDgsOTUsOTUsMTE1LDEwNSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSwxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDY5LDAsMCwwLDAsMjI0LDg1LDAsMCwwLDg2LDAsMCwyNDAsODMsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMzYsODYsMCwwLDE5OCwwLDAsMCwyMDUsMCwwLDAsMjAwLDAsMCwwLDIwMSwwLDAsMCw0MywwLDAsMCwzNywwLDAsMCwyNCwwLDAsMCwyOSwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNDksOTUsOTUsMTE4LDEwOSwxMDUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwyMjQsODUsMCwwLDk2LDg2LDAsMCwyNDAsODMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMDAsODgsMCwwLDIwNiwwLDAsMCwyMDcsMCwwLDAsOTAsMCwwLDAsMCwwLDAsMCwxMTUsMTE2LDEwMCw1OCw1OCw5OCw5NywxMDAsOTUsOTcsMTA4LDEwOCwxMTEsOTksMCwwLDgzLDExNiw1Nyw5OCw5NywxMDAsOTUsOTcsMTA4LDEwOCwxMTEsOTksMCwwLDAsMCwyMjQsODUsMCwwLDE4NCw4OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwwLDEsMiwzLDQsNSw2LDcsOCw5LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMCwwLDAsMCwwLDAsMCwwLDEsMiw0LDcsMyw2LDUsMCwwLDAsMCwwLDAsMCwwLDEwNSwxMTAsMTAyLDEwNSwxMTAsMTA1LDExNiwxMjEsMCwwLDAsMCwwLDAsMCwwLDExMCw5NywxMTAsMCwwLDAsMCwwLDk1LDExMiwxMzcsMCwyNTUsOSw0NywxNSwxMCwwLDAsMCwxMDAsMCwwLDAsMjMyLDMsMCwwLDE2LDM5LDAsMCwxNjAsMTM0LDEsMCw2NCw2NiwxNSwwLDEyOCwxNTAsMTUyLDAsMCwyMjUsMjQ1LDVdLCJpOCIsQUxMT0NfTk9ORSxSdW50aW1lLkdMT0JBTF9CQVNFKzE5NTY0KTt2YXIgdGVtcERvdWJsZVB0cj1SdW50aW1lLmFsaWduTWVtb3J5KGFsbG9jYXRlKDEyLCJpOCIsQUxMT0NfU1RBVElDKSw4KTthc3NlcnQodGVtcERvdWJsZVB0ciU4PT0wKTtmdW5jdGlvbiBjb3B5VGVtcEZsb2F0KHB0cil7SEVBUDhbdGVtcERvdWJsZVB0cl09SEVBUDhbcHRyXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzFdPUhFQVA4W3B0cisxXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzJdPUhFQVA4W3B0cisyXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzNdPUhFQVA4W3B0ciszXX1mdW5jdGlvbiBjb3B5VGVtcERvdWJsZShwdHIpe0hFQVA4W3RlbXBEb3VibGVQdHJdPUhFQVA4W3B0cl07SEVBUDhbdGVtcERvdWJsZVB0cisxXT1IRUFQOFtwdHIrMV07SEVBUDhbdGVtcERvdWJsZVB0cisyXT1IRUFQOFtwdHIrMl07SEVBUDhbdGVtcERvdWJsZVB0ciszXT1IRUFQOFtwdHIrM107SEVBUDhbdGVtcERvdWJsZVB0cis0XT1IRUFQOFtwdHIrNF07SEVBUDhbdGVtcERvdWJsZVB0cis1XT1IRUFQOFtwdHIrNV07SEVBUDhbdGVtcERvdWJsZVB0cis2XT1IRUFQOFtwdHIrNl07SEVBUDhbdGVtcERvdWJsZVB0cis3XT1IRUFQOFtwdHIrN119ZnVuY3Rpb24gX2F0ZXhpdChmdW5jLGFyZyl7X19BVEVYSVRfXy51bnNoaWZ0KHtmdW5jOmZ1bmMsYXJnOmFyZ30pfXZhciBfX19jeGFfYXRleGl0PV9hdGV4aXQ7TW9kdWxlWyJfaTY0U3VidHJhY3QiXT1faTY0U3VidHJhY3Q7TW9kdWxlWyJfaTY0QWRkIl09X2k2NEFkZDtmdW5jdGlvbiBfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udigpe3JldHVybiEhX19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYudW5jYXVnaHRfZXhjZXB0aW9ufWZ1bmN0aW9uIF9fX2N4YV9pc19udW1iZXJfdHlwZSh0eXBlKXt2YXIgaXNOdW1iZXI9ZmFsc2U7dHJ5e2lmKHR5cGU9PV9fWlRJaSlpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElqKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWwpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJbSlpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVEl4KWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSXkpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJZilpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElkKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWUpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJYylpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElhKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWgpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJcylpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVEl0KWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXJldHVybiBpc051bWJlcn1mdW5jdGlvbiBfX19jeGFfZG9lc19pbmhlcml0KGRlZmluaXRlVHlwZSxwb3NzaWJpbGl0eVR5cGUscG9zc2liaWxpdHkpe2lmKHBvc3NpYmlsaXR5PT0wKXJldHVybiBmYWxzZTtpZihwb3NzaWJpbGl0eVR5cGU9PTB8fHBvc3NpYmlsaXR5VHlwZT09ZGVmaW5pdGVUeXBlKXJldHVybiB0cnVlO3ZhciBwb3NzaWJpbGl0eV90eXBlX2luZm87aWYoX19fY3hhX2lzX251bWJlcl90eXBlKHBvc3NpYmlsaXR5VHlwZSkpe3Bvc3NpYmlsaXR5X3R5cGVfaW5mbz1wb3NzaWJpbGl0eVR5cGV9ZWxzZXt2YXIgcG9zc2liaWxpdHlfdHlwZV9pbmZvQWRkcj1IRUFQMzJbcG9zc2liaWxpdHlUeXBlPj4yXS04O3Bvc3NpYmlsaXR5X3R5cGVfaW5mbz1IRUFQMzJbcG9zc2liaWxpdHlfdHlwZV9pbmZvQWRkcj4+Ml19c3dpdGNoKHBvc3NpYmlsaXR5X3R5cGVfaW5mbyl7Y2FzZSAwOnZhciBkZWZpbml0ZV90eXBlX2luZm9BZGRyPUhFQVAzMltkZWZpbml0ZVR5cGU+PjJdLTg7dmFyIGRlZmluaXRlX3R5cGVfaW5mbz1IRUFQMzJbZGVmaW5pdGVfdHlwZV9pbmZvQWRkcj4+Ml07aWYoZGVmaW5pdGVfdHlwZV9pbmZvPT0wKXt2YXIgZGVmUG9pbnRlckJhc2VBZGRyPWRlZmluaXRlVHlwZSs4O3ZhciBkZWZQb2ludGVyQmFzZVR5cGU9SEVBUDMyW2RlZlBvaW50ZXJCYXNlQWRkcj4+Ml07dmFyIHBvc3NQb2ludGVyQmFzZUFkZHI9cG9zc2liaWxpdHlUeXBlKzg7dmFyIHBvc3NQb2ludGVyQmFzZVR5cGU9SEVBUDMyW3Bvc3NQb2ludGVyQmFzZUFkZHI+PjJdO3JldHVybiBfX19jeGFfZG9lc19pbmhlcml0KGRlZlBvaW50ZXJCYXNlVHlwZSxwb3NzUG9pbnRlckJhc2VUeXBlLHBvc3NpYmlsaXR5KX1lbHNlIHJldHVybiBmYWxzZTtjYXNlIDE6cmV0dXJuIGZhbHNlO2Nhc2UgMjp2YXIgcGFyZW50VHlwZUFkZHI9cG9zc2liaWxpdHlUeXBlKzg7dmFyIHBhcmVudFR5cGU9SEVBUDMyW3BhcmVudFR5cGVBZGRyPj4yXTtyZXR1cm4gX19fY3hhX2RvZXNfaW5oZXJpdChkZWZpbml0ZVR5cGUscGFyZW50VHlwZSxwb3NzaWJpbGl0eSk7ZGVmYXVsdDpyZXR1cm4gZmFsc2V9fXZhciBfX19jeGFfbGFzdF90aHJvd25fZXhjZXB0aW9uPTA7ZnVuY3Rpb24gX19fcmVzdW1lRXhjZXB0aW9uKHB0cil7TW9kdWxlLnByaW50KCJSZXN1bWluZyBleGNlcHRpb24iKTtpZighX19fY3hhX2xhc3RfdGhyb3duX2V4Y2VwdGlvbil7X19fY3hhX2xhc3RfdGhyb3duX2V4Y2VwdGlvbj1wdHJ9dGhyb3cgcHRyfXZhciBfX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplPTg7ZnVuY3Rpb24gX19fY3hhX2ZpbmRfbWF0Y2hpbmdfY2F0Y2godGhyb3duLHRocm93bnR5cGUpe2lmKHRocm93bj09LTEpdGhyb3duPV9fX2N4YV9sYXN0X3Rocm93bl9leGNlcHRpb247aGVhZGVyPXRocm93bi1fX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplO2lmKHRocm93bnR5cGU9PS0xKXRocm93bnR5cGU9SEVBUDMyW2hlYWRlcj4+Ml07dmFyIHR5cGVBcnJheT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7aWYodGhyb3dudHlwZSE9MCYmIV9fX2N4YV9pc19udW1iZXJfdHlwZSh0aHJvd250eXBlKSl7dmFyIHRocm93bnR5cGVJbmZvQWRkcj1IRUFQMzJbdGhyb3dudHlwZT4+Ml0tODt2YXIgdGhyb3dudHlwZUluZm89SEVBUDMyW3Rocm93bnR5cGVJbmZvQWRkcj4+Ml07aWYodGhyb3dudHlwZUluZm89PTApdGhyb3duPUhFQVAzMlt0aHJvd24+PjJdfWZvcih2YXIgaT0wO2k8dHlwZUFycmF5Lmxlbmd0aDtpKyspe2lmKF9fX2N4YV9kb2VzX2luaGVyaXQodHlwZUFycmF5W2ldLHRocm93bnR5cGUsdGhyb3duKSlyZXR1cm4oYXNtWyJzZXRUZW1wUmV0MCJdKHR5cGVBcnJheVtpXSksdGhyb3duKXwwfXJldHVybihhc21bInNldFRlbXBSZXQwIl0odGhyb3dudHlwZSksdGhyb3duKXwwfWZ1bmN0aW9uIF9fX2N4YV90aHJvdyhwdHIsdHlwZSxkZXN0cnVjdG9yKXtpZighX19fY3hhX3Rocm93LmluaXRpYWxpemVkKXt0cnl7SEVBUDMyW19fWlRWTjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0U+PjJdPTB9Y2F0Y2goZSl7fXRyeXtIRUFQMzJbX19aVFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0U+PjJdPTF9Y2F0Y2goZSl7fXRyeXtIRUFQMzJbX19aVFZOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0U+PjJdPTJ9Y2F0Y2goZSl7fV9fX2N4YV90aHJvdy5pbml0aWFsaXplZD10cnVlfU1vZHVsZS5wcmludEVycigiQ29tcGlsZWQgY29kZSB0aHJvd2luZyBhbiBleGNlcHRpb24sICIrW3B0cix0eXBlLGRlc3RydWN0b3JdKyIsIGF0ICIrc3RhY2tUcmFjZSgpKTt2YXIgaGVhZGVyPXB0ci1fX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplO0hFQVAzMltoZWFkZXI+PjJdPXR5cGU7SEVBUDMyW2hlYWRlcis0Pj4yXT1kZXN0cnVjdG9yO19fX2N4YV9sYXN0X3Rocm93bl9leGNlcHRpb249cHRyO2lmKCEoInVuY2F1Z2h0X2V4Y2VwdGlvbiJpbiBfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udikpe19fWlN0MTh1bmNhdWdodF9leGNlcHRpb252LnVuY2F1Z2h0X2V4Y2VwdGlvbj0xfWVsc2V7X19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYudW5jYXVnaHRfZXhjZXB0aW9uKyt9dGhyb3cgcHRyfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Jvb2woKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfYm9vbCIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfcHRocmVhZF9tdXRleF9sb2NrKCl7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF9zdHJpbmcoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZyIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZygpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZyIpO2Fib3J0KC0xKX12YXIgRVJSTk9fQ09ERVM9e0VQRVJNOjEsRU5PRU5UOjIsRVNSQ0g6MyxFSU5UUjo0LEVJTzo1LEVOWElPOjYsRTJCSUc6NyxFTk9FWEVDOjgsRUJBREY6OSxFQ0hJTEQ6MTAsRUFHQUlOOjExLEVXT1VMREJMT0NLOjExLEVOT01FTToxMixFQUNDRVM6MTMsRUZBVUxUOjE0LEVOT1RCTEs6MTUsRUJVU1k6MTYsRUVYSVNUOjE3LEVYREVWOjE4LEVOT0RFVjoxOSxFTk9URElSOjIwLEVJU0RJUjoyMSxFSU5WQUw6MjIsRU5GSUxFOjIzLEVNRklMRToyNCxFTk9UVFk6MjUsRVRYVEJTWToyNixFRkJJRzoyNyxFTk9TUEM6MjgsRVNQSVBFOjI5LEVST0ZTOjMwLEVNTElOSzozMSxFUElQRTozMixFRE9NOjMzLEVSQU5HRTozNCxFTk9NU0c6NDIsRUlEUk06NDMsRUNIUk5HOjQ0LEVMMk5TWU5DOjQ1LEVMM0hMVDo0NixFTDNSU1Q6NDcsRUxOUk5HOjQ4LEVVTkFUQ0g6NDksRU5PQ1NJOjUwLEVMMkhMVDo1MSxFREVBRExLOjM1LEVOT0xDSzozNyxFQkFERTo1MixFQkFEUjo1MyxFWEZVTEw6NTQsRU5PQU5POjU1LEVCQURSUUM6NTYsRUJBRFNMVDo1NyxFREVBRExPQ0s6MzUsRUJGT05UOjU5LEVOT1NUUjo2MCxFTk9EQVRBOjYxLEVUSU1FOjYyLEVOT1NSOjYzLEVOT05FVDo2NCxFTk9QS0c6NjUsRVJFTU9URTo2NixFTk9MSU5LOjY3LEVBRFY6NjgsRVNSTU5UOjY5LEVDT01NOjcwLEVQUk9UTzo3MSxFTVVMVElIT1A6NzIsRURPVERPVDo3MyxFQkFETVNHOjc0LEVOT1RVTklROjc2LEVCQURGRDo3NyxFUkVNQ0hHOjc4LEVMSUJBQ0M6NzksRUxJQkJBRDo4MCxFTElCU0NOOjgxLEVMSUJNQVg6ODIsRUxJQkVYRUM6ODMsRU5PU1lTOjM4LEVOT1RFTVBUWTozOSxFTkFNRVRPT0xPTkc6MzYsRUxPT1A6NDAsRU9QTk9UU1VQUDo5NSxFUEZOT1NVUFBPUlQ6OTYsRUNPTk5SRVNFVDoxMDQsRU5PQlVGUzoxMDUsRUFGTk9TVVBQT1JUOjk3LEVQUk9UT1RZUEU6OTEsRU5PVFNPQ0s6ODgsRU5PUFJPVE9PUFQ6OTIsRVNIVVRET1dOOjEwOCxFQ09OTlJFRlVTRUQ6MTExLEVBRERSSU5VU0U6OTgsRUNPTk5BQk9SVEVEOjEwMyxFTkVUVU5SRUFDSDoxMDEsRU5FVERPV046MTAwLEVUSU1FRE9VVDoxMTAsRUhPU1RET1dOOjExMixFSE9TVFVOUkVBQ0g6MTEzLEVJTlBST0dSRVNTOjExNSxFQUxSRUFEWToxMTQsRURFU1RBRERSUkVROjg5LEVNU0dTSVpFOjkwLEVQUk9UT05PU1VQUE9SVDo5MyxFU09DS1ROT1NVUFBPUlQ6OTQsRUFERFJOT1RBVkFJTDo5OSxFTkVUUkVTRVQ6MTAyLEVJU0NPTk46MTA2LEVOT1RDT05OOjEwNyxFVE9PTUFOWVJFRlM6MTA5LEVVU0VSUzo4NyxFRFFVT1Q6MTIyLEVTVEFMRToxMTYsRU5PVFNVUDo5NSxFTk9NRURJVU06MTIzLEVJTFNFUTo4NCxFT1ZFUkZMT1c6NzUsRUNBTkNFTEVEOjEyNSxFTk9UUkVDT1ZFUkFCTEU6MTMxLEVPV05FUkRFQUQ6MTMwLEVTVFJQSVBFOjg2fTt2YXIgRVJSTk9fTUVTU0FHRVM9ezA6IlN1Y2Nlc3MiLDE6Ik5vdCBzdXBlci11c2VyIiwyOiJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IiwzOiJObyBzdWNoIHByb2Nlc3MiLDQ6IkludGVycnVwdGVkIHN5c3RlbSBjYWxsIiw1OiJJL08gZXJyb3IiLDY6Ik5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MiLDc6IkFyZyBsaXN0IHRvbyBsb25nIiw4OiJFeGVjIGZvcm1hdCBlcnJvciIsOToiQmFkIGZpbGUgbnVtYmVyIiwxMDoiTm8gY2hpbGRyZW4iLDExOiJObyBtb3JlIHByb2Nlc3NlcyIsMTI6Ik5vdCBlbm91Z2ggY29yZSIsMTM6IlBlcm1pc3Npb24gZGVuaWVkIiwxNDoiQmFkIGFkZHJlc3MiLDE1OiJCbG9jayBkZXZpY2UgcmVxdWlyZWQiLDE2OiJNb3VudCBkZXZpY2UgYnVzeSIsMTc6IkZpbGUgZXhpc3RzIiwxODoiQ3Jvc3MtZGV2aWNlIGxpbmsiLDE5OiJObyBzdWNoIGRldmljZSIsMjA6Ik5vdCBhIGRpcmVjdG9yeSIsMjE6IklzIGEgZGlyZWN0b3J5IiwyMjoiSW52YWxpZCBhcmd1bWVudCIsMjM6IlRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtIiwyNDoiVG9vIG1hbnkgb3BlbiBmaWxlcyIsMjU6Ik5vdCBhIHR5cGV3cml0ZXIiLDI2OiJUZXh0IGZpbGUgYnVzeSIsMjc6IkZpbGUgdG9vIGxhcmdlIiwyODoiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UiLDI5OiJJbGxlZ2FsIHNlZWsiLDMwOiJSZWFkIG9ubHkgZmlsZSBzeXN0ZW0iLDMxOiJUb28gbWFueSBsaW5rcyIsMzI6IkJyb2tlbiBwaXBlIiwzMzoiTWF0aCBhcmcgb3V0IG9mIGRvbWFpbiBvZiBmdW5jIiwzNDoiTWF0aCByZXN1bHQgbm90IHJlcHJlc2VudGFibGUiLDM1OiJGaWxlIGxvY2tpbmcgZGVhZGxvY2sgZXJyb3IiLDM2OiJGaWxlIG9yIHBhdGggbmFtZSB0b28gbG9uZyIsMzc6Ik5vIHJlY29yZCBsb2NrcyBhdmFpbGFibGUiLDM4OiJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiLDM5OiJEaXJlY3Rvcnkgbm90IGVtcHR5Iiw0MDoiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MiLDQyOiJObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZSIsNDM6IklkZW50aWZpZXIgcmVtb3ZlZCIsNDQ6IkNoYW5uZWwgbnVtYmVyIG91dCBvZiByYW5nZSIsNDU6IkxldmVsIDIgbm90IHN5bmNocm9uaXplZCIsNDY6IkxldmVsIDMgaGFsdGVkIiw0NzoiTGV2ZWwgMyByZXNldCIsNDg6IkxpbmsgbnVtYmVyIG91dCBvZiByYW5nZSIsNDk6IlByb3RvY29sIGRyaXZlciBub3QgYXR0YWNoZWQiLDUwOiJObyBDU0kgc3RydWN0dXJlIGF2YWlsYWJsZSIsNTE6IkxldmVsIDIgaGFsdGVkIiw1MjoiSW52YWxpZCBleGNoYW5nZSIsNTM6IkludmFsaWQgcmVxdWVzdCBkZXNjcmlwdG9yIiw1NDoiRXhjaGFuZ2UgZnVsbCIsNTU6Ik5vIGFub2RlIiw1NjoiSW52YWxpZCByZXF1ZXN0IGNvZGUiLDU3OiJJbnZhbGlkIHNsb3QiLDU5OiJCYWQgZm9udCBmaWxlIGZtdCIsNjA6IkRldmljZSBub3QgYSBzdHJlYW0iLDYxOiJObyBkYXRhIChmb3Igbm8gZGVsYXkgaW8pIiw2MjoiVGltZXIgZXhwaXJlZCIsNjM6Ik91dCBvZiBzdHJlYW1zIHJlc291cmNlcyIsNjQ6Ik1hY2hpbmUgaXMgbm90IG9uIHRoZSBuZXR3b3JrIiw2NToiUGFja2FnZSBub3QgaW5zdGFsbGVkIiw2NjoiVGhlIG9iamVjdCBpcyByZW1vdGUiLDY3OiJUaGUgbGluayBoYXMgYmVlbiBzZXZlcmVkIiw2ODoiQWR2ZXJ0aXNlIGVycm9yIiw2OToiU3Jtb3VudCBlcnJvciIsNzA6IkNvbW11bmljYXRpb24gZXJyb3Igb24gc2VuZCIsNzE6IlByb3RvY29sIGVycm9yIiw3MjoiTXVsdGlob3AgYXR0ZW1wdGVkIiw3MzoiQ3Jvc3MgbW91bnQgcG9pbnQgKG5vdCByZWFsbHkgZXJyb3IpIiw3NDoiVHJ5aW5nIHRvIHJlYWQgdW5yZWFkYWJsZSBtZXNzYWdlIiw3NToiVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZSIsNzY6IkdpdmVuIGxvZy4gbmFtZSBub3QgdW5pcXVlIiw3NzoiZi5kLiBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbiIsNzg6IlJlbW90ZSBhZGRyZXNzIGNoYW5nZWQiLDc5OiJDYW4gICBhY2Nlc3MgYSBuZWVkZWQgc2hhcmVkIGxpYiIsODA6IkFjY2Vzc2luZyBhIGNvcnJ1cHRlZCBzaGFyZWQgbGliIiw4MToiLmxpYiBzZWN0aW9uIGluIGEub3V0IGNvcnJ1cHRlZCIsODI6IkF0dGVtcHRpbmcgdG8gbGluayBpbiB0b28gbWFueSBsaWJzIiw4MzoiQXR0ZW1wdGluZyB0byBleGVjIGEgc2hhcmVkIGxpYnJhcnkiLDg0OiJJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UiLDg2OiJTdHJlYW1zIHBpcGUgZXJyb3IiLDg3OiJUb28gbWFueSB1c2VycyIsODg6IlNvY2tldCBvcGVyYXRpb24gb24gbm9uLXNvY2tldCIsODk6IkRlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQiLDkwOiJNZXNzYWdlIHRvbyBsb25nIiw5MToiUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0Iiw5MjoiUHJvdG9jb2wgbm90IGF2YWlsYWJsZSIsOTM6IlVua25vd24gcHJvdG9jb2wiLDk0OiJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkIiw5NToiTm90IHN1cHBvcnRlZCIsOTY6IlByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkIiw5NzoiQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbCBmYW1pbHkiLDk4OiJBZGRyZXNzIGFscmVhZHkgaW4gdXNlIiw5OToiQWRkcmVzcyBub3QgYXZhaWxhYmxlIiwxMDA6Ik5ldHdvcmsgaW50ZXJmYWNlIGlzIG5vdCBjb25maWd1cmVkIiwxMDE6Ik5ldHdvcmsgaXMgdW5yZWFjaGFibGUiLDEwMjoiQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrIiwxMDM6IkNvbm5lY3Rpb24gYWJvcnRlZCIsMTA0OiJDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIiLDEwNToiTm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZSIsMTA2OiJTb2NrZXQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiLDEwNzoiU29ja2V0IGlzIG5vdCBjb25uZWN0ZWQiLDEwODoiQ2FuJ3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24iLDEwOToiVG9vIG1hbnkgcmVmZXJlbmNlcyIsMTEwOiJDb25uZWN0aW9uIHRpbWVkIG91dCIsMTExOiJDb25uZWN0aW9uIHJlZnVzZWQiLDExMjoiSG9zdCBpcyBkb3duIiwxMTM6Ikhvc3QgaXMgdW5yZWFjaGFibGUiLDExNDoiU29ja2V0IGFscmVhZHkgY29ubmVjdGVkIiwxMTU6IkNvbm5lY3Rpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyIsMTE2OiJTdGFsZSBmaWxlIGhhbmRsZSIsMTIyOiJRdW90YSBleGNlZWRlZCIsMTIzOiJObyBtZWRpdW0gKGluIHRhcGUgZHJpdmUpIiwxMjU6Ik9wZXJhdGlvbiBjYW5jZWxlZCIsMTMwOiJQcmV2aW91cyBvd25lciBkaWVkIiwxMzE6IlN0YXRlIG5vdCByZWNvdmVyYWJsZSJ9O3ZhciBfX19lcnJub19zdGF0ZT0wO2Z1bmN0aW9uIF9fX3NldEVyck5vKHZhbHVlKXtIRUFQMzJbX19fZXJybm9fc3RhdGU+PjJdPXZhbHVlO3JldHVybiB2YWx1ZX12YXIgUEFUSD17c3BsaXRQYXRoOihmdW5jdGlvbihmaWxlbmFtZSl7dmFyIHNwbGl0UGF0aFJlPS9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLztyZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSl9KSxub3JtYWxpemVBcnJheTooZnVuY3Rpb24ocGFydHMsYWxsb3dBYm92ZVJvb3Qpe3ZhciB1cD0wO2Zvcih2YXIgaT1wYXJ0cy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIGxhc3Q9cGFydHNbaV07aWYobGFzdD09PSIuIil7cGFydHMuc3BsaWNlKGksMSl9ZWxzZSBpZihsYXN0PT09Ii4uIil7cGFydHMuc3BsaWNlKGksMSk7dXArK31lbHNlIGlmKHVwKXtwYXJ0cy5zcGxpY2UoaSwxKTt1cC0tfX1pZihhbGxvd0Fib3ZlUm9vdCl7Zm9yKDt1cC0tO3VwKXtwYXJ0cy51bnNoaWZ0KCIuLiIpfX1yZXR1cm4gcGFydHN9KSxub3JtYWxpemU6KGZ1bmN0aW9uKHBhdGgpe3ZhciBpc0Fic29sdXRlPXBhdGguY2hhckF0KDApPT09Ii8iLHRyYWlsaW5nU2xhc2g9cGF0aC5zdWJzdHIoLTEpPT09Ii8iO3BhdGg9UEFUSC5ub3JtYWxpemVBcnJheShwYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKXtyZXR1cm4hIXB9KSksIWlzQWJzb2x1dGUpLmpvaW4oIi8iKTtpZighcGF0aCYmIWlzQWJzb2x1dGUpe3BhdGg9Ii4ifWlmKHBhdGgmJnRyYWlsaW5nU2xhc2gpe3BhdGgrPSIvIn1yZXR1cm4oaXNBYnNvbHV0ZT8iLyI6IiIpK3BhdGh9KSxkaXJuYW1lOihmdW5jdGlvbihwYXRoKXt2YXIgcmVzdWx0PVBBVEguc3BsaXRQYXRoKHBhdGgpLHJvb3Q9cmVzdWx0WzBdLGRpcj1yZXN1bHRbMV07aWYoIXJvb3QmJiFkaXIpe3JldHVybiIuIn1pZihkaXIpe2Rpcj1kaXIuc3Vic3RyKDAsZGlyLmxlbmd0aC0xKX1yZXR1cm4gcm9vdCtkaXJ9KSxiYXNlbmFtZTooZnVuY3Rpb24ocGF0aCl7aWYocGF0aD09PSIvIilyZXR1cm4iLyI7dmFyIGxhc3RTbGFzaD1wYXRoLmxhc3RJbmRleE9mKCIvIik7aWYobGFzdFNsYXNoPT09LTEpcmV0dXJuIHBhdGg7cmV0dXJuIHBhdGguc3Vic3RyKGxhc3RTbGFzaCsxKX0pLGV4dG5hbWU6KGZ1bmN0aW9uKHBhdGgpe3JldHVybiBQQVRILnNwbGl0UGF0aChwYXRoKVszXX0pLGpvaW46KGZ1bmN0aW9uKCl7dmFyIHBhdGhzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gUEFUSC5ub3JtYWxpemUocGF0aHMuam9pbigiLyIpKX0pLGpvaW4yOihmdW5jdGlvbihsLHIpe3JldHVybiBQQVRILm5vcm1hbGl6ZShsKyIvIityKX0pLHJlc29sdmU6KGZ1bmN0aW9uKCl7dmFyIHJlc29sdmVkUGF0aD0iIixyZXNvbHZlZEFic29sdXRlPWZhbHNlO2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLTE7aT49LTEmJiFyZXNvbHZlZEFic29sdXRlO2ktLSl7dmFyIHBhdGg9aT49MD9hcmd1bWVudHNbaV06RlMuY3dkKCk7aWYodHlwZW9mIHBhdGghPT0ic3RyaW5nIil7dGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKX1lbHNlIGlmKCFwYXRoKXtjb250aW51ZX1yZXNvbHZlZFBhdGg9cGF0aCsiLyIrcmVzb2x2ZWRQYXRoO3Jlc29sdmVkQWJzb2x1dGU9cGF0aC5jaGFyQXQoMCk9PT0iLyJ9cmVzb2x2ZWRQYXRoPVBBVEgubm9ybWFsaXplQXJyYXkocmVzb2x2ZWRQYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKXtyZXR1cm4hIXB9KSksIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oIi8iKTtyZXR1cm4ocmVzb2x2ZWRBYnNvbHV0ZT8iLyI6IiIpK3Jlc29sdmVkUGF0aHx8Ii4ifSkscmVsYXRpdmU6KGZ1bmN0aW9uKGZyb20sdG8pe2Zyb209UEFUSC5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTt0bz1QQVRILnJlc29sdmUodG8pLnN1YnN0cigxKTtmdW5jdGlvbiB0cmltKGFycil7dmFyIHN0YXJ0PTA7Zm9yKDtzdGFydDxhcnIubGVuZ3RoO3N0YXJ0Kyspe2lmKGFycltzdGFydF0hPT0iIilicmVha312YXIgZW5kPWFyci5sZW5ndGgtMTtmb3IoO2VuZD49MDtlbmQtLSl7aWYoYXJyW2VuZF0hPT0iIilicmVha31pZihzdGFydD5lbmQpcmV0dXJuW107cmV0dXJuIGFyci5zbGljZShzdGFydCxlbmQtc3RhcnQrMSl9dmFyIGZyb21QYXJ0cz10cmltKGZyb20uc3BsaXQoIi8iKSk7dmFyIHRvUGFydHM9dHJpbSh0by5zcGxpdCgiLyIpKTt2YXIgbGVuZ3RoPU1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsdG9QYXJ0cy5sZW5ndGgpO3ZhciBzYW1lUGFydHNMZW5ndGg9bGVuZ3RoO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7aWYoZnJvbVBhcnRzW2ldIT09dG9QYXJ0c1tpXSl7c2FtZVBhcnRzTGVuZ3RoPWk7YnJlYWt9fXZhciBvdXRwdXRQYXJ0cz1bXTtmb3IodmFyIGk9c2FtZVBhcnRzTGVuZ3RoO2k8ZnJvbVBhcnRzLmxlbmd0aDtpKyspe291dHB1dFBhcnRzLnB1c2goIi4uIil9b3V0cHV0UGFydHM9b3V0cHV0UGFydHMuY29uY2F0KHRvUGFydHMuc2xpY2Uoc2FtZVBhcnRzTGVuZ3RoKSk7cmV0dXJuIG91dHB1dFBhcnRzLmpvaW4oIi8iKX0pfTt2YXIgVFRZPXt0dHlzOltdLGluaXQ6KGZ1bmN0aW9uKCl7fSksc2h1dGRvd246KGZ1bmN0aW9uKCl7fSkscmVnaXN0ZXI6KGZ1bmN0aW9uKGRldixvcHMpe1RUWS50dHlzW2Rldl09e2lucHV0OltdLG91dHB1dDpbXSxvcHM6b3BzfTtGUy5yZWdpc3RlckRldmljZShkZXYsVFRZLnN0cmVhbV9vcHMpfSksc3RyZWFtX29wczp7b3BlbjooZnVuY3Rpb24oc3RyZWFtKXt2YXIgdHR5PVRUWS50dHlzW3N0cmVhbS5ub2RlLnJkZXZdO2lmKCF0dHkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9c3RyZWFtLnR0eT10dHk7c3RyZWFtLnNlZWthYmxlPWZhbHNlfSksY2xvc2U6KGZ1bmN0aW9uKHN0cmVhbSl7aWYoc3RyZWFtLnR0eS5vdXRwdXQubGVuZ3RoKXtzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcihzdHJlYW0udHR5LDEwKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zKXtpZighc3RyZWFtLnR0eXx8IXN0cmVhbS50dHkub3BzLmdldF9jaGFyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTlhJTyl9dmFyIGJ5dGVzUmVhZD0wO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dmFyIHJlc3VsdDt0cnl7cmVzdWx0PXN0cmVhbS50dHkub3BzLmdldF9jaGFyKHN0cmVhbS50dHkpfWNhdGNoKGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyl9aWYocmVzdWx0PT09dW5kZWZpbmVkJiZieXRlc1JlYWQ9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4pfWlmKHJlc3VsdD09PW51bGx8fHJlc3VsdD09PXVuZGVmaW5lZClicmVhaztieXRlc1JlYWQrKztidWZmZXJbb2Zmc2V0K2ldPXJlc3VsdH1pZihieXRlc1JlYWQpe3N0cmVhbS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpfXJldHVybiBieXRlc1JlYWR9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvcyl7aWYoIXN0cmVhbS50dHl8fCFzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5YSU8pfWZvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dHJ5e3N0cmVhbS50dHkub3BzLnB1dF9jaGFyKHN0cmVhbS50dHksYnVmZmVyW29mZnNldCtpXSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlPKX19aWYobGVuZ3RoKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKX1yZXR1cm4gaX0pfSxkZWZhdWx0X3R0eV9vcHM6e2dldF9jaGFyOihmdW5jdGlvbih0dHkpe2lmKCF0dHkuaW5wdXQubGVuZ3RoKXt2YXIgcmVzdWx0PW51bGw7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7cmVzdWx0PXByb2Nlc3NbInN0ZGluIl1bInJlYWQiXSgpO2lmKCFyZXN1bHQpe2lmKHByb2Nlc3NbInN0ZGluIl1bIl9yZWFkYWJsZVN0YXRlIl0mJnByb2Nlc3NbInN0ZGluIl1bIl9yZWFkYWJsZVN0YXRlIl1bImVuZGVkIl0pe3JldHVybiBudWxsfXJldHVybiB1bmRlZmluZWR9fWVsc2UgaWYodHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJnR5cGVvZiB3aW5kb3cucHJvbXB0PT0iZnVuY3Rpb24iKXtyZXN1bHQ9d2luZG93LnByb21wdCgiSW5wdXQ6ICIpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIn19ZWxzZSBpZih0eXBlb2YgcmVhZGxpbmU9PSJmdW5jdGlvbiIpe3Jlc3VsdD1yZWFkbGluZSgpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIn19aWYoIXJlc3VsdCl7cmV0dXJuIG51bGx9dHR5LmlucHV0PWludEFycmF5RnJvbVN0cmluZyhyZXN1bHQsdHJ1ZSl9cmV0dXJuIHR0eS5pbnB1dC5zaGlmdCgpfSkscHV0X2NoYXI6KGZ1bmN0aW9uKHR0eSx2YWwpe2lmKHZhbD09PW51bGx8fHZhbD09PTEwKXtNb2R1bGVbInByaW50Il0odHR5Lm91dHB1dC5qb2luKCIiKSk7dHR5Lm91dHB1dD1bXX1lbHNle3R0eS5vdXRwdXQucHVzaChUVFkudXRmOC5wcm9jZXNzQ0NoYXIodmFsKSl9fSl9LGRlZmF1bHRfdHR5MV9vcHM6e3B1dF9jaGFyOihmdW5jdGlvbih0dHksdmFsKXtpZih2YWw9PT1udWxsfHx2YWw9PT0xMCl7TW9kdWxlWyJwcmludEVyciJdKHR0eS5vdXRwdXQuam9pbigiIikpO3R0eS5vdXRwdXQ9W119ZWxzZXt0dHkub3V0cHV0LnB1c2goVFRZLnV0ZjgucHJvY2Vzc0NDaGFyKHZhbCkpfX0pfX07dmFyIE1FTUZTPXtvcHNfdGFibGU6bnVsbCxDT05URU5UX09XTklORzoxLENPTlRFTlRfRkxFWElCTEU6MixDT05URU5UX0ZJWEVEOjMsbW91bnQ6KGZ1bmN0aW9uKG1vdW50KXtyZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShudWxsLCIvIiwxNjM4NHw1MTEsMCl9KSxjcmVhdGVOb2RlOihmdW5jdGlvbihwYXJlbnQsbmFtZSxtb2RlLGRldil7aWYoRlMuaXNCbGtkZXYobW9kZSl8fEZTLmlzRklGTyhtb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKCFNRU1GUy5vcHNfdGFibGUpe01FTUZTLm9wc190YWJsZT17ZGlyOntub2RlOntnZXRhdHRyOk1FTUZTLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpNRU1GUy5ub2RlX29wcy5zZXRhdHRyLGxvb2t1cDpNRU1GUy5ub2RlX29wcy5sb29rdXAsbWtub2Q6TUVNRlMubm9kZV9vcHMubWtub2QscmVuYW1lOk1FTUZTLm5vZGVfb3BzLnJlbmFtZSx1bmxpbms6TUVNRlMubm9kZV9vcHMudW5saW5rLHJtZGlyOk1FTUZTLm5vZGVfb3BzLnJtZGlyLHJlYWRkaXI6TUVNRlMubm9kZV9vcHMucmVhZGRpcixzeW1saW5rOk1FTUZTLm5vZGVfb3BzLnN5bWxpbmt9LHN0cmVhbTp7bGxzZWVrOk1FTUZTLnN0cmVhbV9vcHMubGxzZWVrfX0sZmlsZTp7bm9kZTp7Z2V0YXR0cjpNRU1GUy5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6TUVNRlMubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOntsbHNlZWs6TUVNRlMuc3RyZWFtX29wcy5sbHNlZWsscmVhZDpNRU1GUy5zdHJlYW1fb3BzLnJlYWQsd3JpdGU6TUVNRlMuc3RyZWFtX29wcy53cml0ZSxhbGxvY2F0ZTpNRU1GUy5zdHJlYW1fb3BzLmFsbG9jYXRlLG1tYXA6TUVNRlMuc3RyZWFtX29wcy5tbWFwfX0sbGluazp7bm9kZTp7Z2V0YXR0cjpNRU1GUy5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6TUVNRlMubm9kZV9vcHMuc2V0YXR0cixyZWFkbGluazpNRU1GUy5ub2RlX29wcy5yZWFkbGlua30sc3RyZWFtOnt9fSxjaHJkZXY6e25vZGU6e2dldGF0dHI6TUVNRlMubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOk1FTUZTLm5vZGVfb3BzLnNldGF0dHJ9LHN0cmVhbTpGUy5jaHJkZXZfc3RyZWFtX29wc319fXZhciBub2RlPUZTLmNyZWF0ZU5vZGUocGFyZW50LG5hbWUsbW9kZSxkZXYpO2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmRpci5ub2RlO25vZGUuc3RyZWFtX29wcz1NRU1GUy5vcHNfdGFibGUuZGlyLnN0cmVhbTtub2RlLmNvbnRlbnRzPXt9fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUuc3RyZWFtO25vZGUuY29udGVudHM9W107bm9kZS5jb250ZW50TW9kZT1NRU1GUy5DT05URU5UX0ZMRVhJQkxFfWVsc2UgaWYoRlMuaXNMaW5rKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmxpbmsubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmxpbmsuc3RyZWFtfWVsc2UgaWYoRlMuaXNDaHJkZXYobm9kZS5tb2RlKSl7bm9kZS5ub2RlX29wcz1NRU1GUy5vcHNfdGFibGUuY2hyZGV2Lm5vZGU7bm9kZS5zdHJlYW1fb3BzPU1FTUZTLm9wc190YWJsZS5jaHJkZXYuc3RyZWFtfW5vZGUudGltZXN0YW1wPURhdGUubm93KCk7aWYocGFyZW50KXtwYXJlbnQuY29udGVudHNbbmFtZV09bm9kZX1yZXR1cm4gbm9kZX0pLGVuc3VyZUZsZXhpYmxlOihmdW5jdGlvbihub2RlKXtpZihub2RlLmNvbnRlbnRNb2RlIT09TUVNRlMuQ09OVEVOVF9GTEVYSUJMRSl7dmFyIGNvbnRlbnRzPW5vZGUuY29udGVudHM7bm9kZS5jb250ZW50cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250ZW50cyk7bm9kZS5jb250ZW50TW9kZT1NRU1GUy5DT05URU5UX0ZMRVhJQkxFfX0pLG5vZGVfb3BzOntnZXRhdHRyOihmdW5jdGlvbihub2RlKXt2YXIgYXR0cj17fTthdHRyLmRldj1GUy5pc0NocmRldihub2RlLm1vZGUpP25vZGUuaWQ6MTthdHRyLmlubz1ub2RlLmlkO2F0dHIubW9kZT1ub2RlLm1vZGU7YXR0ci5ubGluaz0xO2F0dHIudWlkPTA7YXR0ci5naWQ9MDthdHRyLnJkZXY9bm9kZS5yZGV2O2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT00MDk2fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT1ub2RlLmNvbnRlbnRzLmxlbmd0aH1lbHNlIGlmKEZTLmlzTGluayhub2RlLm1vZGUpKXthdHRyLnNpemU9bm9kZS5saW5rLmxlbmd0aH1lbHNle2F0dHIuc2l6ZT0wfWF0dHIuYXRpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIubXRpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIuY3RpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIuYmxrc2l6ZT00MDk2O2F0dHIuYmxvY2tzPU1hdGguY2VpbChhdHRyLnNpemUvYXR0ci5ibGtzaXplKTtyZXR1cm4gYXR0cn0pLHNldGF0dHI6KGZ1bmN0aW9uKG5vZGUsYXR0cil7aWYoYXR0ci5tb2RlIT09dW5kZWZpbmVkKXtub2RlLm1vZGU9YXR0ci5tb2RlfWlmKGF0dHIudGltZXN0YW1wIT09dW5kZWZpbmVkKXtub2RlLnRpbWVzdGFtcD1hdHRyLnRpbWVzdGFtcH1pZihhdHRyLnNpemUhPT11bmRlZmluZWQpe01FTUZTLmVuc3VyZUZsZXhpYmxlKG5vZGUpO3ZhciBjb250ZW50cz1ub2RlLmNvbnRlbnRzO2lmKGF0dHIuc2l6ZTxjb250ZW50cy5sZW5ndGgpY29udGVudHMubGVuZ3RoPWF0dHIuc2l6ZTtlbHNlIHdoaWxlKGF0dHIuc2l6ZT5jb250ZW50cy5sZW5ndGgpY29udGVudHMucHVzaCgwKX19KSxsb29rdXA6KGZ1bmN0aW9uKHBhcmVudCxuYW1lKXt0aHJvdyBGUy5nZW5lcmljRXJyb3JzW0VSUk5PX0NPREVTLkVOT0VOVF19KSxta25vZDooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe3JldHVybiBNRU1GUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0pLHJlbmFtZTooZnVuY3Rpb24ob2xkX25vZGUsbmV3X2RpcixuZXdfbmFtZSl7aWYoRlMuaXNEaXIob2xkX25vZGUubW9kZSkpe3ZhciBuZXdfbm9kZTt0cnl7bmV3X25vZGU9RlMubG9va3VwTm9kZShuZXdfZGlyLG5ld19uYW1lKX1jYXRjaChlKXt9aWYobmV3X25vZGUpe2Zvcih2YXIgaSBpbiBuZXdfbm9kZS5jb250ZW50cyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVEVNUFRZKX19fWRlbGV0ZSBvbGRfbm9kZS5wYXJlbnQuY29udGVudHNbb2xkX25vZGUubmFtZV07b2xkX25vZGUubmFtZT1uZXdfbmFtZTtuZXdfZGlyLmNvbnRlbnRzW25ld19uYW1lXT1vbGRfbm9kZTtvbGRfbm9kZS5wYXJlbnQ9bmV3X2Rpcn0pLHVubGluazooZnVuY3Rpb24ocGFyZW50LG5hbWUpe2RlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV19KSxybWRpcjooZnVuY3Rpb24ocGFyZW50LG5hbWUpe3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO2Zvcih2YXIgaSBpbiBub2RlLmNvbnRlbnRzKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9URU1QVFkpfWRlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV19KSxyZWFkZGlyOihmdW5jdGlvbihub2RlKXt2YXIgZW50cmllcz1bIi4iLCIuLiJdO2Zvcih2YXIga2V5IGluIG5vZGUuY29udGVudHMpe2lmKCFub2RlLmNvbnRlbnRzLmhhc093blByb3BlcnR5KGtleSkpe2NvbnRpbnVlfWVudHJpZXMucHVzaChrZXkpfXJldHVybiBlbnRyaWVzfSksc3ltbGluazooZnVuY3Rpb24ocGFyZW50LG5ld25hbWUsb2xkcGF0aCl7dmFyIG5vZGU9TUVNRlMuY3JlYXRlTm9kZShwYXJlbnQsbmV3bmFtZSw1MTF8NDA5NjAsMCk7bm9kZS5saW5rPW9sZHBhdGg7cmV0dXJuIG5vZGV9KSxyZWFkbGluazooZnVuY3Rpb24obm9kZSl7aWYoIUZTLmlzTGluayhub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfXJldHVybiBub2RlLmxpbmt9KX0sc3RyZWFtX29wczp7cmVhZDooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYocG9zaXRpb24+PWNvbnRlbnRzLmxlbmd0aClyZXR1cm4gMDt2YXIgc2l6ZT1NYXRoLm1pbihjb250ZW50cy5sZW5ndGgtcG9zaXRpb24sbGVuZ3RoKTthc3NlcnQoc2l6ZT49MCk7aWYoc2l6ZT44JiZjb250ZW50cy5zdWJhcnJheSl7YnVmZmVyLnNldChjb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitzaXplKSxvZmZzZXQpfWVsc2V7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXX19cmV0dXJuIHNpemV9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLGNhbk93bil7dmFyIG5vZGU9c3RyZWFtLm5vZGU7bm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTt2YXIgY29udGVudHM9bm9kZS5jb250ZW50cztpZihsZW5ndGgmJmNvbnRlbnRzLmxlbmd0aD09PTAmJnBvc2l0aW9uPT09MCYmYnVmZmVyLnN1YmFycmF5KXtpZihjYW5Pd24mJm9mZnNldD09PTApe25vZGUuY29udGVudHM9YnVmZmVyO25vZGUuY29udGVudE1vZGU9YnVmZmVyLmJ1ZmZlcj09PUhFQVA4LmJ1ZmZlcj9NRU1GUy5DT05URU5UX09XTklORzpNRU1GUy5DT05URU5UX0ZJWEVEfWVsc2V7bm9kZS5jb250ZW50cz1uZXcgVWludDhBcnJheShidWZmZXIuc3ViYXJyYXkob2Zmc2V0LG9mZnNldCtsZW5ndGgpKTtub2RlLmNvbnRlbnRNb2RlPU1FTUZTLkNPTlRFTlRfRklYRUR9cmV0dXJuIGxlbmd0aH1NRU1GUy5lbnN1cmVGbGV4aWJsZShub2RlKTt2YXIgY29udGVudHM9bm9kZS5jb250ZW50czt3aGlsZShjb250ZW50cy5sZW5ndGg8cG9zaXRpb24pY29udGVudHMucHVzaCgwKTtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe2NvbnRlbnRzW3Bvc2l0aW9uK2ldPWJ1ZmZlcltvZmZzZXQraV19cmV0dXJuIGxlbmd0aH0pLGxsc2VlazooZnVuY3Rpb24oc3RyZWFtLG9mZnNldCx3aGVuY2Upe3ZhciBwb3NpdGlvbj1vZmZzZXQ7aWYod2hlbmNlPT09MSl7cG9zaXRpb24rPXN0cmVhbS5wb3NpdGlvbn1lbHNlIGlmKHdoZW5jZT09PTIpe2lmKEZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSl7cG9zaXRpb24rPXN0cmVhbS5ub2RlLmNvbnRlbnRzLmxlbmd0aH19aWYocG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1zdHJlYW0udW5nb3R0ZW49W107c3RyZWFtLnBvc2l0aW9uPXBvc2l0aW9uO3JldHVybiBwb3NpdGlvbn0pLGFsbG9jYXRlOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LGxlbmd0aCl7TUVNRlMuZW5zdXJlRmxleGlibGUoc3RyZWFtLm5vZGUpO3ZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50czt2YXIgbGltaXQ9b2Zmc2V0K2xlbmd0aDt3aGlsZShsaW1pdD5jb250ZW50cy5sZW5ndGgpY29udGVudHMucHVzaCgwKX0pLG1tYXA6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixwcm90LGZsYWdzKXtpZighRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9ERVYpfXZhciBwdHI7dmFyIGFsbG9jYXRlZDt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYoIShmbGFncyYyKSYmKGNvbnRlbnRzLmJ1ZmZlcj09PWJ1ZmZlcnx8Y29udGVudHMuYnVmZmVyPT09YnVmZmVyLmJ1ZmZlcikpe2FsbG9jYXRlZD1mYWxzZTtwdHI9Y29udGVudHMuYnl0ZU9mZnNldH1lbHNle2lmKHBvc2l0aW9uPjB8fHBvc2l0aW9uK2xlbmd0aDxjb250ZW50cy5sZW5ndGgpe2lmKGNvbnRlbnRzLnN1YmFycmF5KXtjb250ZW50cz1jb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitsZW5ndGgpfWVsc2V7Y29udGVudHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY29udGVudHMscG9zaXRpb24scG9zaXRpb24rbGVuZ3RoKX19YWxsb2NhdGVkPXRydWU7cHRyPV9tYWxsb2MobGVuZ3RoKTtpZighcHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9NRU0pfWJ1ZmZlci5zZXQoY29udGVudHMscHRyKX1yZXR1cm57cHRyOnB0cixhbGxvY2F0ZWQ6YWxsb2NhdGVkfX0pfX07dmFyIElEQkZTPXtkYnM6e30saW5kZXhlZERCOihmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuaW5kZXhlZERCfHx3aW5kb3cubW96SW5kZXhlZERCfHx3aW5kb3cud2Via2l0SW5kZXhlZERCfHx3aW5kb3cubXNJbmRleGVkREJ9KSxEQl9WRVJTSU9OOjIxLERCX1NUT1JFX05BTUU6IkZJTEVfREFUQSIsbW91bnQ6KGZ1bmN0aW9uKG1vdW50KXtyZXR1cm4gTUVNRlMubW91bnQuYXBwbHkobnVsbCxhcmd1bWVudHMpfSksc3luY2ZzOihmdW5jdGlvbihtb3VudCxwb3B1bGF0ZSxjYWxsYmFjayl7SURCRlMuZ2V0TG9jYWxTZXQobW91bnQsKGZ1bmN0aW9uKGVycixsb2NhbCl7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO0lEQkZTLmdldFJlbW90ZVNldChtb3VudCwoZnVuY3Rpb24oZXJyLHJlbW90ZSl7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO3ZhciBzcmM9cG9wdWxhdGU/cmVtb3RlOmxvY2FsO3ZhciBkc3Q9cG9wdWxhdGU/bG9jYWw6cmVtb3RlO0lEQkZTLnJlY29uY2lsZShzcmMsZHN0LGNhbGxiYWNrKX0pKX0pKX0pLGdldERCOihmdW5jdGlvbihuYW1lLGNhbGxiYWNrKXt2YXIgZGI9SURCRlMuZGJzW25hbWVdO2lmKGRiKXtyZXR1cm4gY2FsbGJhY2sobnVsbCxkYil9dmFyIHJlcTt0cnl7cmVxPUlEQkZTLmluZGV4ZWREQigpLm9wZW4obmFtZSxJREJGUy5EQl9WRVJTSU9OKX1jYXRjaChlKXtyZXR1cm4gY2FsbGJhY2soZSl9cmVxLm9udXBncmFkZW5lZWRlZD0oZnVuY3Rpb24oZSl7dmFyIGRiPWUudGFyZ2V0LnJlc3VsdDt2YXIgdHJhbnNhY3Rpb249ZS50YXJnZXQudHJhbnNhY3Rpb247dmFyIGZpbGVTdG9yZTtpZihkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKElEQkZTLkRCX1NUT1JFX05BTUUpKXtmaWxlU3RvcmU9dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoSURCRlMuREJfU1RPUkVfTkFNRSl9ZWxzZXtmaWxlU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoSURCRlMuREJfU1RPUkVfTkFNRSl9ZmlsZVN0b3JlLmNyZWF0ZUluZGV4KCJ0aW1lc3RhbXAiLCJ0aW1lc3RhbXAiLHt1bmlxdWU6ZmFsc2V9KX0pO3JlcS5vbnN1Y2Nlc3M9KGZ1bmN0aW9uKCl7ZGI9cmVxLnJlc3VsdDtJREJGUy5kYnNbbmFtZV09ZGI7Y2FsbGJhY2sobnVsbCxkYil9KTtyZXEub25lcnJvcj0oZnVuY3Rpb24oKXtjYWxsYmFjayh0aGlzLmVycm9yKX0pfSksZ2V0TG9jYWxTZXQ6KGZ1bmN0aW9uKG1vdW50LGNhbGxiYWNrKXt2YXIgZW50cmllcz17fTtmdW5jdGlvbiBpc1JlYWxEaXIocCl7cmV0dXJuIHAhPT0iLiImJnAhPT0iLi4ifWZ1bmN0aW9uIHRvQWJzb2x1dGUocm9vdCl7cmV0dXJuKGZ1bmN0aW9uKHApe3JldHVybiBQQVRILmpvaW4yKHJvb3QscCl9KX12YXIgY2hlY2s9RlMucmVhZGRpcihtb3VudC5tb3VudHBvaW50KS5maWx0ZXIoaXNSZWFsRGlyKS5tYXAodG9BYnNvbHV0ZShtb3VudC5tb3VudHBvaW50KSk7d2hpbGUoY2hlY2subGVuZ3RoKXt2YXIgcGF0aD1jaGVjay5wb3AoKTt2YXIgc3RhdDt0cnl7c3RhdD1GUy5zdGF0KHBhdGgpfWNhdGNoKGUpe3JldHVybiBjYWxsYmFjayhlKX1pZihGUy5pc0RpcihzdGF0Lm1vZGUpKXtjaGVjay5wdXNoLmFwcGx5KGNoZWNrLEZTLnJlYWRkaXIocGF0aCkuZmlsdGVyKGlzUmVhbERpcikubWFwKHRvQWJzb2x1dGUocGF0aCkpKX1lbnRyaWVzW3BhdGhdPXt0aW1lc3RhbXA6c3RhdC5tdGltZX19cmV0dXJuIGNhbGxiYWNrKG51bGwse3R5cGU6ImxvY2FsIixlbnRyaWVzOmVudHJpZXN9KX0pLGdldFJlbW90ZVNldDooZnVuY3Rpb24obW91bnQsY2FsbGJhY2spe3ZhciBlbnRyaWVzPXt9O0lEQkZTLmdldERCKG1vdW50Lm1vdW50cG9pbnQsKGZ1bmN0aW9uKGVycixkYil7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO3ZhciB0cmFuc2FjdGlvbj1kYi50cmFuc2FjdGlvbihbSURCRlMuREJfU1RPUkVfTkFNRV0sInJlYWRvbmx5Iik7dHJhbnNhY3Rpb24ub25lcnJvcj0oZnVuY3Rpb24oKXtjYWxsYmFjayh0aGlzLmVycm9yKX0pO3ZhciBzdG9yZT10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShJREJGUy5EQl9TVE9SRV9OQU1FKTt2YXIgaW5kZXg9c3RvcmUuaW5kZXgoInRpbWVzdGFtcCIpO2luZGV4Lm9wZW5LZXlDdXJzb3IoKS5vbnN1Y2Nlc3M9KGZ1bmN0aW9uKGV2ZW50KXt2YXIgY3Vyc29yPWV2ZW50LnRhcmdldC5yZXN1bHQ7aWYoIWN1cnNvcil7cmV0dXJuIGNhbGxiYWNrKG51bGwse3R5cGU6InJlbW90ZSIsZGI6ZGIsZW50cmllczplbnRyaWVzfSl9ZW50cmllc1tjdXJzb3IucHJpbWFyeUtleV09e3RpbWVzdGFtcDpjdXJzb3Iua2V5fTtjdXJzb3IuY29udGludWUoKX0pfSkpfSksbG9hZExvY2FsRW50cnk6KGZ1bmN0aW9uKHBhdGgsY2FsbGJhY2spe3ZhciBzdGF0LG5vZGU7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoKTtub2RlPWxvb2t1cC5ub2RlO3N0YXQ9RlMuc3RhdChwYXRoKX1jYXRjaChlKXtyZXR1cm4gY2FsbGJhY2soZSl9aWYoRlMuaXNEaXIoc3RhdC5tb2RlKSl7cmV0dXJuIGNhbGxiYWNrKG51bGwse3RpbWVzdGFtcDpzdGF0Lm10aW1lLG1vZGU6c3RhdC5tb2RlfSl9ZWxzZSBpZihGUy5pc0ZpbGUoc3RhdC5tb2RlKSl7cmV0dXJuIGNhbGxiYWNrKG51bGwse3RpbWVzdGFtcDpzdGF0Lm10aW1lLG1vZGU6c3RhdC5tb2RlLGNvbnRlbnRzOm5vZGUuY29udGVudHN9KX1lbHNle3JldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpfX0pLHN0b3JlTG9jYWxFbnRyeTooZnVuY3Rpb24ocGF0aCxlbnRyeSxjYWxsYmFjayl7dHJ5e2lmKEZTLmlzRGlyKGVudHJ5Lm1vZGUpKXtGUy5ta2RpcihwYXRoLGVudHJ5Lm1vZGUpfWVsc2UgaWYoRlMuaXNGaWxlKGVudHJ5Lm1vZGUpKXtGUy53cml0ZUZpbGUocGF0aCxlbnRyeS5jb250ZW50cyx7ZW5jb2Rpbmc6ImJpbmFyeSIsY2FuT3duOnRydWV9KX1lbHNle3JldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpfUZTLnV0aW1lKHBhdGgsZW50cnkudGltZXN0YW1wLGVudHJ5LnRpbWVzdGFtcCl9Y2F0Y2goZSl7cmV0dXJuIGNhbGxiYWNrKGUpfWNhbGxiYWNrKG51bGwpfSkscmVtb3ZlTG9jYWxFbnRyeTooZnVuY3Rpb24ocGF0aCxjYWxsYmFjayl7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoKTt2YXIgc3RhdD1GUy5zdGF0KHBhdGgpO2lmKEZTLmlzRGlyKHN0YXQubW9kZSkpe0ZTLnJtZGlyKHBhdGgpfWVsc2UgaWYoRlMuaXNGaWxlKHN0YXQubW9kZSkpe0ZTLnVubGluayhwYXRoKX19Y2F0Y2goZSl7cmV0dXJuIGNhbGxiYWNrKGUpfWNhbGxiYWNrKG51bGwpfSksbG9hZFJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLmdldChwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbihldmVudCl7Y2FsbGJhY2sobnVsbCxldmVudC50YXJnZXQucmVzdWx0KX0pO3JlcS5vbmVycm9yPShmdW5jdGlvbigpe2NhbGxiYWNrKHRoaXMuZXJyb3IpfSl9KSxzdG9yZVJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGVudHJ5LGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLnB1dChlbnRyeSxwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbigpe2NhbGxiYWNrKG51bGwpfSk7cmVxLm9uZXJyb3I9KGZ1bmN0aW9uKCl7Y2FsbGJhY2sodGhpcy5lcnJvcil9KX0pLHJlbW92ZVJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLmRlbGV0ZShwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbigpe2NhbGxiYWNrKG51bGwpfSk7cmVxLm9uZXJyb3I9KGZ1bmN0aW9uKCl7Y2FsbGJhY2sodGhpcy5lcnJvcil9KX0pLHJlY29uY2lsZTooZnVuY3Rpb24oc3JjLGRzdCxjYWxsYmFjayl7dmFyIHRvdGFsPTA7dmFyIGNyZWF0ZT1bXTtPYmplY3Qua2V5cyhzcmMuZW50cmllcykuZm9yRWFjaCgoZnVuY3Rpb24oa2V5KXt2YXIgZT1zcmMuZW50cmllc1trZXldO3ZhciBlMj1kc3QuZW50cmllc1trZXldO2lmKCFlMnx8ZS50aW1lc3RhbXA+ZTIudGltZXN0YW1wKXtjcmVhdGUucHVzaChrZXkpO3RvdGFsKyt9fSkpO3ZhciByZW1vdmU9W107T2JqZWN0LmtleXMoZHN0LmVudHJpZXMpLmZvckVhY2goKGZ1bmN0aW9uKGtleSl7dmFyIGU9ZHN0LmVudHJpZXNba2V5XTt2YXIgZTI9c3JjLmVudHJpZXNba2V5XTtpZighZTIpe3JlbW92ZS5wdXNoKGtleSk7dG90YWwrK319KSk7aWYoIXRvdGFsKXtyZXR1cm4gY2FsbGJhY2sobnVsbCl9dmFyIGVycm9yZWQ9ZmFsc2U7dmFyIGNvbXBsZXRlZD0wO3ZhciBkYj1zcmMudHlwZT09PSJyZW1vdGUiP3NyYy5kYjpkc3QuZGI7dmFyIHRyYW5zYWN0aW9uPWRiLnRyYW5zYWN0aW9uKFtJREJGUy5EQl9TVE9SRV9OQU1FXSwicmVhZHdyaXRlIik7dmFyIHN0b3JlPXRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKElEQkZTLkRCX1NUT1JFX05BTUUpO2Z1bmN0aW9uIGRvbmUoZXJyKXtpZihlcnIpe2lmKCFkb25lLmVycm9yZWQpe2RvbmUuZXJyb3JlZD10cnVlO3JldHVybiBjYWxsYmFjayhlcnIpfXJldHVybn1pZigrK2NvbXBsZXRlZD49dG90YWwpe3JldHVybiBjYWxsYmFjayhudWxsKX19dHJhbnNhY3Rpb24ub25lcnJvcj0oZnVuY3Rpb24oKXtkb25lKHRoaXMuZXJyb3IpfSk7Y3JlYXRlLnNvcnQoKS5mb3JFYWNoKChmdW5jdGlvbihwYXRoKXtpZihkc3QudHlwZT09PSJsb2NhbCIpe0lEQkZTLmxvYWRSZW1vdGVFbnRyeShzdG9yZSxwYXRoLChmdW5jdGlvbihlcnIsZW50cnkpe2lmKGVycilyZXR1cm4gZG9uZShlcnIpO0lEQkZTLnN0b3JlTG9jYWxFbnRyeShwYXRoLGVudHJ5LGRvbmUpfSkpfWVsc2V7SURCRlMubG9hZExvY2FsRW50cnkocGF0aCwoZnVuY3Rpb24oZXJyLGVudHJ5KXtpZihlcnIpcmV0dXJuIGRvbmUoZXJyKTtJREJGUy5zdG9yZVJlbW90ZUVudHJ5KHN0b3JlLHBhdGgsZW50cnksZG9uZSl9KSl9fSkpO3JlbW92ZS5zb3J0KCkucmV2ZXJzZSgpLmZvckVhY2goKGZ1bmN0aW9uKHBhdGgpe2lmKGRzdC50eXBlPT09ImxvY2FsIil7SURCRlMucmVtb3ZlTG9jYWxFbnRyeShwYXRoLGRvbmUpfWVsc2V7SURCRlMucmVtb3ZlUmVtb3RlRW50cnkoc3RvcmUscGF0aCxkb25lKX19KSl9KX07dmFyIE5PREVGUz17aXNXaW5kb3dzOmZhbHNlLHN0YXRpY0luaXQ6KGZ1bmN0aW9uKCl7Tk9ERUZTLmlzV2luZG93cz0hIXByb2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vKX0pLG1vdW50OihmdW5jdGlvbihtb3VudCl7YXNzZXJ0KEVOVklST05NRU5UX0lTX05PREUpO3JldHVybiBOT0RFRlMuY3JlYXRlTm9kZShudWxsLCIvIixOT0RFRlMuZ2V0TW9kZShtb3VudC5vcHRzLnJvb3QpLDApfSksY3JlYXRlTm9kZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe2lmKCFGUy5pc0Rpcihtb2RlKSYmIUZTLmlzRmlsZShtb2RlKSYmIUZTLmlzTGluayhtb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbm9kZT1GUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUpO25vZGUubm9kZV9vcHM9Tk9ERUZTLm5vZGVfb3BzO25vZGUuc3RyZWFtX29wcz1OT0RFRlMuc3RyZWFtX29wcztyZXR1cm4gbm9kZX0pLGdldE1vZGU6KGZ1bmN0aW9uKHBhdGgpe3ZhciBzdGF0O3RyeXtzdGF0PWZzLmxzdGF0U3luYyhwYXRoKTtpZihOT0RFRlMuaXNXaW5kb3dzKXtzdGF0Lm1vZGU9c3RhdC5tb2RlfChzdGF0Lm1vZGUmMTQ2KT4+MX19Y2F0Y2goZSl7aWYoIWUuY29kZSl0aHJvdyBlO3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pfXJldHVybiBzdGF0Lm1vZGV9KSxyZWFsUGF0aDooZnVuY3Rpb24obm9kZSl7dmFyIHBhcnRzPVtdO3doaWxlKG5vZGUucGFyZW50IT09bm9kZSl7cGFydHMucHVzaChub2RlLm5hbWUpO25vZGU9bm9kZS5wYXJlbnR9cGFydHMucHVzaChub2RlLm1vdW50Lm9wdHMucm9vdCk7cGFydHMucmV2ZXJzZSgpO3JldHVybiBQQVRILmpvaW4uYXBwbHkobnVsbCxwYXJ0cyl9KSxmbGFnc1RvUGVybWlzc2lvblN0cmluZ01hcDp7MDoiciIsMToicisiLDI6InIrIiw2NDoiciIsNjU6InIrIiw2NjoicisiLDEyOToicngrIiwxOTM6InJ4KyIsNTE0OiJ3KyIsNTc3OiJ3Iiw1Nzg6IncrIiw3MDU6Ind4Iiw3MDY6Ind4KyIsMTAyNDoiYSIsMTAyNToiYSIsMTAyNjoiYSsiLDEwODk6ImEiLDEwOTA6ImErIiwxMTUzOiJheCIsMTE1NDoiYXgrIiwxMjE3OiJheCIsMTIxODoiYXgrIiw0MDk2OiJycyIsNDA5ODoicnMrIn0sZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmc6KGZ1bmN0aW9uKGZsYWdzKXtpZihmbGFncyBpbiBOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmdNYXApe3JldHVybiBOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmdNYXBbZmxhZ3NdfWVsc2V7cmV0dXJuIGZsYWdzfX0pLG5vZGVfb3BzOntnZXRhdHRyOihmdW5jdGlvbihub2RlKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dmFyIHN0YXQ7dHJ5e3N0YXQ9ZnMubHN0YXRTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1pZihOT0RFRlMuaXNXaW5kb3dzJiYhc3RhdC5ibGtzaXplKXtzdGF0LmJsa3NpemU9NDA5Nn1pZihOT0RFRlMuaXNXaW5kb3dzJiYhc3RhdC5ibG9ja3Mpe3N0YXQuYmxvY2tzPShzdGF0LnNpemUrc3RhdC5ibGtzaXplLTEpL3N0YXQuYmxrc2l6ZXwwfXJldHVybntkZXY6c3RhdC5kZXYsaW5vOnN0YXQuaW5vLG1vZGU6c3RhdC5tb2RlLG5saW5rOnN0YXQubmxpbmssdWlkOnN0YXQudWlkLGdpZDpzdGF0LmdpZCxyZGV2OnN0YXQucmRldixzaXplOnN0YXQuc2l6ZSxhdGltZTpzdGF0LmF0aW1lLG10aW1lOnN0YXQubXRpbWUsY3RpbWU6c3RhdC5jdGltZSxibGtzaXplOnN0YXQuYmxrc2l6ZSxibG9ja3M6c3RhdC5ibG9ja3N9fSksc2V0YXR0cjooZnVuY3Rpb24obm9kZSxhdHRyKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dHJ5e2lmKGF0dHIubW9kZSE9PXVuZGVmaW5lZCl7ZnMuY2htb2RTeW5jKHBhdGgsYXR0ci5tb2RlKTtub2RlLm1vZGU9YXR0ci5tb2RlfWlmKGF0dHIudGltZXN0YW1wIT09dW5kZWZpbmVkKXt2YXIgZGF0ZT1uZXcgRGF0ZShhdHRyLnRpbWVzdGFtcCk7ZnMudXRpbWVzU3luYyhwYXRoLGRhdGUsZGF0ZSl9aWYoYXR0ci5zaXplIT09dW5kZWZpbmVkKXtmcy50cnVuY2F0ZVN5bmMocGF0aCxhdHRyLnNpemUpfX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSksbG9va3VwOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIHBhdGg9UEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSxuYW1lKTt2YXIgbW9kZT1OT0RFRlMuZ2V0TW9kZShwYXRoKTtyZXR1cm4gTk9ERUZTLmNyZWF0ZU5vZGUocGFyZW50LG5hbWUsbW9kZSl9KSxta25vZDooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe3ZhciBub2RlPU5PREVGUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUsZGV2KTt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dHJ5e2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2ZzLm1rZGlyU3luYyhwYXRoLG5vZGUubW9kZSl9ZWxzZXtmcy53cml0ZUZpbGVTeW5jKHBhdGgsIiIse21vZGU6bm9kZS5tb2RlfSl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1yZXR1cm4gbm9kZX0pLHJlbmFtZTooZnVuY3Rpb24ob2xkTm9kZSxuZXdEaXIsbmV3TmFtZSl7dmFyIG9sZFBhdGg9Tk9ERUZTLnJlYWxQYXRoKG9sZE5vZGUpO3ZhciBuZXdQYXRoPVBBVEguam9pbjIoTk9ERUZTLnJlYWxQYXRoKG5ld0RpciksbmV3TmFtZSk7dHJ5e2ZzLnJlbmFtZVN5bmMob2xkUGF0aCxuZXdQYXRoKX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSksdW5saW5rOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIHBhdGg9UEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSxuYW1lKTt0cnl7ZnMudW5saW5rU3luYyhwYXRoKX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSkscm1kaXI6KGZ1bmN0aW9uKHBhcmVudCxuYW1lKXt2YXIgcGF0aD1QQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLG5hbWUpO3RyeXtmcy5ybWRpclN5bmMocGF0aCl9Y2F0Y2goZSl7aWYoIWUuY29kZSl0aHJvdyBlO3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pfX0pLHJlYWRkaXI6KGZ1bmN0aW9uKG5vZGUpe3ZhciBwYXRoPU5PREVGUy5yZWFsUGF0aChub2RlKTt0cnl7cmV0dXJuIGZzLnJlYWRkaXJTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxzeW1saW5rOihmdW5jdGlvbihwYXJlbnQsbmV3TmFtZSxvbGRQYXRoKXt2YXIgbmV3UGF0aD1QQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLG5ld05hbWUpO3RyeXtmcy5zeW1saW5rU3luYyhvbGRQYXRoLG5ld1BhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxyZWFkbGluazooZnVuY3Rpb24obm9kZSl7dmFyIHBhdGg9Tk9ERUZTLnJlYWxQYXRoKG5vZGUpO3RyeXtyZXR1cm4gZnMucmVhZGxpbmtTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KX0sc3RyZWFtX29wczp7b3BlbjooZnVuY3Rpb24oc3RyZWFtKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgoc3RyZWFtLm5vZGUpO3RyeXtpZihGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkpe3N0cmVhbS5uZmQ9ZnMub3BlblN5bmMocGF0aCxOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoc3RyZWFtLmZsYWdzKSl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxjbG9zZTooZnVuY3Rpb24oc3RyZWFtKXt0cnl7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpJiZzdHJlYW0ubmZkKXtmcy5jbG9zZVN5bmMoc3RyZWFtLm5mZCl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBuYnVmZmVyPW5ldyBCdWZmZXIobGVuZ3RoKTt2YXIgcmVzO3RyeXtyZXM9ZnMucmVhZFN5bmMoc3RyZWFtLm5mZCxuYnVmZmVyLDAsbGVuZ3RoLHBvc2l0aW9uKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1pZihyZXM+MCl7Zm9yKHZhciBpPTA7aTxyZXM7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPW5idWZmZXJbaV19fXJldHVybiByZXN9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgbmJ1ZmZlcj1uZXcgQnVmZmVyKGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsb2Zmc2V0K2xlbmd0aCkpO3ZhciByZXM7dHJ5e3Jlcz1mcy53cml0ZVN5bmMoc3RyZWFtLm5mZCxuYnVmZmVyLDAsbGVuZ3RoLHBvc2l0aW9uKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1yZXR1cm4gcmVzfSksbGxzZWVrOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LHdoZW5jZSl7dmFyIHBvc2l0aW9uPW9mZnNldDtpZih3aGVuY2U9PT0xKXtwb3NpdGlvbis9c3RyZWFtLnBvc2l0aW9ufWVsc2UgaWYod2hlbmNlPT09Mil7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXt0cnl7dmFyIHN0YXQ9ZnMuZnN0YXRTeW5jKHN0cmVhbS5uZmQpO3Bvc2l0aW9uKz1zdGF0LnNpemV9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fX1pZihwb3NpdGlvbjwwKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfXN0cmVhbS5wb3NpdGlvbj1wb3NpdGlvbjtyZXR1cm4gcG9zaXRpb259KX19O3ZhciBfc3RkaW49YWxsb2NhdGUoMSwiaTMyKiIsQUxMT0NfU1RBVElDKTt2YXIgX3N0ZG91dD1hbGxvY2F0ZSgxLCJpMzIqIixBTExPQ19TVEFUSUMpO3ZhciBfc3RkZXJyPWFsbG9jYXRlKDEsImkzMioiLEFMTE9DX1NUQVRJQyk7dmFyIEZTPXtyb290Om51bGwsbW91bnRzOltdLGRldmljZXM6W251bGxdLHN0cmVhbXM6W10sbmV4dElub2RlOjEsbmFtZVRhYmxlOm51bGwsY3VycmVudFBhdGg6Ii8iLGluaXRpYWxpemVkOmZhbHNlLGlnbm9yZVBlcm1pc3Npb25zOnRydWUsdHJhY2tpbmdEZWxlZ2F0ZTp7fSx0cmFja2luZzp7b3BlbkZsYWdzOntSRUFEOjEsV1JJVEU6Mn19LEVycm5vRXJyb3I6bnVsbCxnZW5lcmljRXJyb3JzOnt9LGhhbmRsZUZTRXJyb3I6KGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGUrIiA6ICIrc3RhY2tUcmFjZSgpO3JldHVybiBfX19zZXRFcnJObyhlLmVycm5vKX0pLGxvb2t1cFBhdGg6KGZ1bmN0aW9uKHBhdGgsb3B0cyl7cGF0aD1QQVRILnJlc29sdmUoRlMuY3dkKCkscGF0aCk7b3B0cz1vcHRzfHx7fTt2YXIgZGVmYXVsdHM9e2ZvbGxvd19tb3VudDp0cnVlLHJlY3Vyc2VfY291bnQ6MH07Zm9yKHZhciBrZXkgaW4gZGVmYXVsdHMpe2lmKG9wdHNba2V5XT09PXVuZGVmaW5lZCl7b3B0c1trZXldPWRlZmF1bHRzW2tleV19fWlmKG9wdHMucmVjdXJzZV9jb3VudD44KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTE9PUCl9dmFyIHBhcnRzPVBBVEgubm9ybWFsaXplQXJyYXkocGF0aC5zcGxpdCgiLyIpLmZpbHRlcigoZnVuY3Rpb24ocCl7cmV0dXJuISFwfSkpLGZhbHNlKTt2YXIgY3VycmVudD1GUy5yb290O3ZhciBjdXJyZW50X3BhdGg9Ii8iO2Zvcih2YXIgaT0wO2k8cGFydHMubGVuZ3RoO2krKyl7dmFyIGlzbGFzdD1pPT09cGFydHMubGVuZ3RoLTE7aWYoaXNsYXN0JiZvcHRzLnBhcmVudCl7YnJlYWt9Y3VycmVudD1GUy5sb29rdXBOb2RlKGN1cnJlbnQscGFydHNbaV0pO2N1cnJlbnRfcGF0aD1QQVRILmpvaW4yKGN1cnJlbnRfcGF0aCxwYXJ0c1tpXSk7aWYoRlMuaXNNb3VudHBvaW50KGN1cnJlbnQpKXtpZighaXNsYXN0fHxpc2xhc3QmJm9wdHMuZm9sbG93X21vdW50KXtjdXJyZW50PWN1cnJlbnQubW91bnRlZC5yb290fX1pZighaXNsYXN0fHxvcHRzLmZvbGxvdyl7dmFyIGNvdW50PTA7d2hpbGUoRlMuaXNMaW5rKGN1cnJlbnQubW9kZSkpe3ZhciBsaW5rPUZTLnJlYWRsaW5rKGN1cnJlbnRfcGF0aCk7Y3VycmVudF9wYXRoPVBBVEgucmVzb2x2ZShQQVRILmRpcm5hbWUoY3VycmVudF9wYXRoKSxsaW5rKTt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgoY3VycmVudF9wYXRoLHtyZWN1cnNlX2NvdW50Om9wdHMucmVjdXJzZV9jb3VudH0pO2N1cnJlbnQ9bG9va3VwLm5vZGU7aWYoY291bnQrKz40MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUxPT1ApfX19fXJldHVybntwYXRoOmN1cnJlbnRfcGF0aCxub2RlOmN1cnJlbnR9fSksZ2V0UGF0aDooZnVuY3Rpb24obm9kZSl7dmFyIHBhdGg7d2hpbGUodHJ1ZSl7aWYoRlMuaXNSb290KG5vZGUpKXt2YXIgbW91bnQ9bm9kZS5tb3VudC5tb3VudHBvaW50O2lmKCFwYXRoKXJldHVybiBtb3VudDtyZXR1cm4gbW91bnRbbW91bnQubGVuZ3RoLTFdIT09Ii8iP21vdW50KyIvIitwYXRoOm1vdW50K3BhdGh9cGF0aD1wYXRoP25vZGUubmFtZSsiLyIrcGF0aDpub2RlLm5hbWU7bm9kZT1ub2RlLnBhcmVudH19KSxoYXNoTmFtZTooZnVuY3Rpb24ocGFyZW50aWQsbmFtZSl7dmFyIGhhc2g9MDtmb3IodmFyIGk9MDtpPG5hbWUubGVuZ3RoO2krKyl7aGFzaD0oaGFzaDw8NSktaGFzaCtuYW1lLmNoYXJDb2RlQXQoaSl8MH1yZXR1cm4ocGFyZW50aWQraGFzaD4+PjApJUZTLm5hbWVUYWJsZS5sZW5ndGh9KSxoYXNoQWRkTm9kZTooZnVuY3Rpb24obm9kZSl7dmFyIGhhc2g9RlMuaGFzaE5hbWUobm9kZS5wYXJlbnQuaWQsbm9kZS5uYW1lKTtub2RlLm5hbWVfbmV4dD1GUy5uYW1lVGFibGVbaGFzaF07RlMubmFtZVRhYmxlW2hhc2hdPW5vZGV9KSxoYXNoUmVtb3ZlTm9kZTooZnVuY3Rpb24obm9kZSl7dmFyIGhhc2g9RlMuaGFzaE5hbWUobm9kZS5wYXJlbnQuaWQsbm9kZS5uYW1lKTtpZihGUy5uYW1lVGFibGVbaGFzaF09PT1ub2RlKXtGUy5uYW1lVGFibGVbaGFzaF09bm9kZS5uYW1lX25leHR9ZWxzZXt2YXIgY3VycmVudD1GUy5uYW1lVGFibGVbaGFzaF07d2hpbGUoY3VycmVudCl7aWYoY3VycmVudC5uYW1lX25leHQ9PT1ub2RlKXtjdXJyZW50Lm5hbWVfbmV4dD1ub2RlLm5hbWVfbmV4dDticmVha31jdXJyZW50PWN1cnJlbnQubmFtZV9uZXh0fX19KSxsb29rdXBOb2RlOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIGVycj1GUy5tYXlMb29rdXAocGFyZW50KTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9dmFyIGhhc2g9RlMuaGFzaE5hbWUocGFyZW50LmlkLG5hbWUpO2Zvcih2YXIgbm9kZT1GUy5uYW1lVGFibGVbaGFzaF07bm9kZTtub2RlPW5vZGUubmFtZV9uZXh0KXt2YXIgbm9kZU5hbWU9bm9kZS5uYW1lO2lmKG5vZGUucGFyZW50LmlkPT09cGFyZW50LmlkJiZub2RlTmFtZT09PW5hbWUpe3JldHVybiBub2RlfX1yZXR1cm4gRlMubG9va3VwKHBhcmVudCxuYW1lKX0pLGNyZWF0ZU5vZGU6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLG1vZGUscmRldil7aWYoIUZTLkZTTm9kZSl7RlMuRlNOb2RlPShmdW5jdGlvbihwYXJlbnQsbmFtZSxtb2RlLHJkZXYpe2lmKCFwYXJlbnQpe3BhcmVudD10aGlzfXRoaXMucGFyZW50PXBhcmVudDt0aGlzLm1vdW50PXBhcmVudC5tb3VudDt0aGlzLm1vdW50ZWQ9bnVsbDt0aGlzLmlkPUZTLm5leHRJbm9kZSsrO3RoaXMubmFtZT1uYW1lO3RoaXMubW9kZT1tb2RlO3RoaXMubm9kZV9vcHM9e307dGhpcy5zdHJlYW1fb3BzPXt9O3RoaXMucmRldj1yZGV2fSk7RlMuRlNOb2RlLnByb3RvdHlwZT17fTt2YXIgcmVhZE1vZGU9MjkyfDczO3ZhciB3cml0ZU1vZGU9MTQ2O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZTLkZTTm9kZS5wcm90b3R5cGUse3JlYWQ6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5tb2RlJnJlYWRNb2RlKT09PXJlYWRNb2RlfSksc2V0OihmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXJlYWRNb2RlOnRoaXMubW9kZSY9fnJlYWRNb2RlfSl9LHdyaXRlOntnZXQ6KGZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMubW9kZSZ3cml0ZU1vZGUpPT09d3JpdGVNb2RlfSksc2V0OihmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXdyaXRlTW9kZTp0aGlzLm1vZGUmPX53cml0ZU1vZGV9KX0saXNGb2xkZXI6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4gRlMuaXNEaXIodGhpcy5tb2RlKX0pfSxpc0RldmljZTp7Z2V0OihmdW5jdGlvbigpe3JldHVybiBGUy5pc0NocmRldih0aGlzLm1vZGUpfSl9fSl9dmFyIG5vZGU9bmV3IEZTLkZTTm9kZShwYXJlbnQsbmFtZSxtb2RlLHJkZXYpO0ZTLmhhc2hBZGROb2RlKG5vZGUpO3JldHVybiBub2RlfSksZGVzdHJveU5vZGU6KGZ1bmN0aW9uKG5vZGUpe0ZTLmhhc2hSZW1vdmVOb2RlKG5vZGUpfSksaXNSb290OihmdW5jdGlvbihub2RlKXtyZXR1cm4gbm9kZT09PW5vZGUucGFyZW50fSksaXNNb3VudHBvaW50OihmdW5jdGlvbihub2RlKXtyZXR1cm4hIW5vZGUubW91bnRlZH0pLGlzRmlsZTooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MzI3Njh9KSxpc0RpcjooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MTYzODR9KSxpc0xpbms6KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTQwOTYwfSksaXNDaHJkZXY6KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTgxOTJ9KSxpc0Jsa2RldjooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MjQ1NzZ9KSxpc0ZJRk86KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTQwOTZ9KSxpc1NvY2tldDooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNDkxNTIpPT09NDkxNTJ9KSxmbGFnTW9kZXM6eyJyIjowLCJycyI6MTA1MjY3MiwicisiOjIsInciOjU3Nywid3giOjcwNSwieHciOjcwNSwidysiOjU3OCwid3grIjo3MDYsInh3KyI6NzA2LCJhIjoxMDg5LCJheCI6MTIxNywieGEiOjEyMTcsImErIjoxMDkwLCJheCsiOjEyMTgsInhhKyI6MTIxOH0sbW9kZVN0cmluZ1RvRmxhZ3M6KGZ1bmN0aW9uKHN0cil7dmFyIGZsYWdzPUZTLmZsYWdNb2Rlc1tzdHJdO2lmKHR5cGVvZiBmbGFncz09PSJ1bmRlZmluZWQiKXt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZmlsZSBvcGVuIG1vZGU6ICIrc3RyKX1yZXR1cm4gZmxhZ3N9KSxmbGFnc1RvUGVybWlzc2lvblN0cmluZzooZnVuY3Rpb24oZmxhZyl7dmFyIGFjY21vZGU9ZmxhZyYyMDk3MTU1O3ZhciBwZXJtcz1bInIiLCJ3IiwicnciXVthY2Ntb2RlXTtpZihmbGFnJjUxMil7cGVybXMrPSJ3In1yZXR1cm4gcGVybXN9KSxub2RlUGVybWlzc2lvbnM6KGZ1bmN0aW9uKG5vZGUscGVybXMpe2lmKEZTLmlnbm9yZVBlcm1pc3Npb25zKXtyZXR1cm4gMH1pZihwZXJtcy5pbmRleE9mKCJyIikhPT0tMSYmIShub2RlLm1vZGUmMjkyKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVBQ0NFU31lbHNlIGlmKHBlcm1zLmluZGV4T2YoInciKSE9PS0xJiYhKG5vZGUubW9kZSYxNDYpKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUFDQ0VTfWVsc2UgaWYocGVybXMuaW5kZXhPZigieCIpIT09LTEmJiEobm9kZS5tb2RlJjczKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVBQ0NFU31yZXR1cm4gMH0pLG1heUxvb2t1cDooZnVuY3Rpb24oZGlyKXtyZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKGRpciwieCIpfSksbWF5Q3JlYXRlOihmdW5jdGlvbihkaXIsbmFtZSl7dHJ5e3ZhciBub2RlPUZTLmxvb2t1cE5vZGUoZGlyLG5hbWUpO3JldHVybiBFUlJOT19DT0RFUy5FRVhJU1R9Y2F0Y2goZSl7fXJldHVybiBGUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpfSksbWF5RGVsZXRlOihmdW5jdGlvbihkaXIsbmFtZSxpc2Rpcil7dmFyIG5vZGU7dHJ5e25vZGU9RlMubG9va3VwTm9kZShkaXIsbmFtZSl9Y2F0Y2goZSl7cmV0dXJuIGUuZXJybm99dmFyIGVycj1GUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpO2lmKGVycil7cmV0dXJuIGVycn1pZihpc2Rpcil7aWYoIUZTLmlzRGlyKG5vZGUubW9kZSkpe3JldHVybiBFUlJOT19DT0RFUy5FTk9URElSfWlmKEZTLmlzUm9vdChub2RlKXx8RlMuZ2V0UGF0aChub2RlKT09PUZTLmN3ZCgpKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUJVU1l9fWVsc2V7aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVJU0RJUn19cmV0dXJuIDB9KSxtYXlPcGVuOihmdW5jdGlvbihub2RlLGZsYWdzKXtpZighbm9kZSl7cmV0dXJuIEVSUk5PX0NPREVTLkVOT0VOVH1pZihGUy5pc0xpbmsobm9kZS5tb2RlKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVMT09QfWVsc2UgaWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7aWYoKGZsYWdzJjIwOTcxNTUpIT09MHx8ZmxhZ3MmNTEyKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUlTRElSfX1yZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKG5vZGUsRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoZmxhZ3MpKX0pLE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZDooZnVuY3Rpb24oZmRfc3RhcnQsZmRfZW5kKXtmZF9zdGFydD1mZF9zdGFydHx8MDtmZF9lbmQ9ZmRfZW5kfHxGUy5NQVhfT1BFTl9GRFM7Zm9yKHZhciBmZD1mZF9zdGFydDtmZDw9ZmRfZW5kO2ZkKyspe2lmKCFGUy5zdHJlYW1zW2ZkXSl7cmV0dXJuIGZkfX10aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTUZJTEUpfSksZ2V0U3RyZWFtOihmdW5jdGlvbihmZCl7cmV0dXJuIEZTLnN0cmVhbXNbZmRdfSksY3JlYXRlU3RyZWFtOihmdW5jdGlvbihzdHJlYW0sZmRfc3RhcnQsZmRfZW5kKXtpZighRlMuRlNTdHJlYW0pe0ZTLkZTU3RyZWFtPShmdW5jdGlvbigpe30pO0ZTLkZTU3RyZWFtLnByb3RvdHlwZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGUy5GU1N0cmVhbS5wcm90b3R5cGUse29iamVjdDp7Z2V0OihmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9KSxzZXQ6KGZ1bmN0aW9uKHZhbCl7dGhpcy5ub2RlPXZhbH0pfSxpc1JlYWQ6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5mbGFncyYyMDk3MTU1KSE9PTF9KX0saXNXcml0ZTp7Z2V0OihmdW5jdGlvbigpe3JldHVybih0aGlzLmZsYWdzJjIwOTcxNTUpIT09MH0pfSxpc0FwcGVuZDp7Z2V0OihmdW5jdGlvbigpe3JldHVybiB0aGlzLmZsYWdzJjEwMjR9KX19KX12YXIgbmV3U3RyZWFtPW5ldyBGUy5GU1N0cmVhbTtmb3IodmFyIHAgaW4gc3RyZWFtKXtuZXdTdHJlYW1bcF09c3RyZWFtW3BdfXN0cmVhbT1uZXdTdHJlYW07dmFyIGZkPUZTLm5leHRmZChmZF9zdGFydCxmZF9lbmQpO3N0cmVhbS5mZD1mZDtGUy5zdHJlYW1zW2ZkXT1zdHJlYW07cmV0dXJuIHN0cmVhbX0pLGNsb3NlU3RyZWFtOihmdW5jdGlvbihmZCl7RlMuc3RyZWFtc1tmZF09bnVsbH0pLGdldFN0cmVhbUZyb21QdHI6KGZ1bmN0aW9uKHB0cil7cmV0dXJuIEZTLnN0cmVhbXNbcHRyLTFdfSksZ2V0UHRyRm9yU3RyZWFtOihmdW5jdGlvbihzdHJlYW0pe3JldHVybiBzdHJlYW0/c3RyZWFtLmZkKzE6MH0pLGNocmRldl9zdHJlYW1fb3BzOntvcGVuOihmdW5jdGlvbihzdHJlYW0pe3ZhciBkZXZpY2U9RlMuZ2V0RGV2aWNlKHN0cmVhbS5ub2RlLnJkZXYpO3N0cmVhbS5zdHJlYW1fb3BzPWRldmljZS5zdHJlYW1fb3BzO2lmKHN0cmVhbS5zdHJlYW1fb3BzLm9wZW4pe3N0cmVhbS5zdHJlYW1fb3BzLm9wZW4oc3RyZWFtKX19KSxsbHNlZWs6KGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKX0pfSxtYWpvcjooZnVuY3Rpb24oZGV2KXtyZXR1cm4gZGV2Pj44fSksbWlub3I6KGZ1bmN0aW9uKGRldil7cmV0dXJuIGRldiYyNTV9KSxtYWtlZGV2OihmdW5jdGlvbihtYSxtaSl7cmV0dXJuIG1hPDw4fG1pfSkscmVnaXN0ZXJEZXZpY2U6KGZ1bmN0aW9uKGRldixvcHMpe0ZTLmRldmljZXNbZGV2XT17c3RyZWFtX29wczpvcHN9fSksZ2V0RGV2aWNlOihmdW5jdGlvbihkZXYpe3JldHVybiBGUy5kZXZpY2VzW2Rldl19KSxnZXRNb3VudHM6KGZ1bmN0aW9uKG1vdW50KXt2YXIgbW91bnRzPVtdO3ZhciBjaGVjaz1bbW91bnRdO3doaWxlKGNoZWNrLmxlbmd0aCl7dmFyIG09Y2hlY2sucG9wKCk7bW91bnRzLnB1c2gobSk7Y2hlY2sucHVzaC5hcHBseShjaGVjayxtLm1vdW50cyl9cmV0dXJuIG1vdW50c30pLHN5bmNmczooZnVuY3Rpb24ocG9wdWxhdGUsY2FsbGJhY2spe2lmKHR5cGVvZiBwb3B1bGF0ZT09PSJmdW5jdGlvbiIpe2NhbGxiYWNrPXBvcHVsYXRlO3BvcHVsYXRlPWZhbHNlfXZhciBtb3VudHM9RlMuZ2V0TW91bnRzKEZTLnJvb3QubW91bnQpO3ZhciBjb21wbGV0ZWQ9MDtmdW5jdGlvbiBkb25lKGVycil7aWYoZXJyKXtpZighZG9uZS5lcnJvcmVkKXtkb25lLmVycm9yZWQ9dHJ1ZTtyZXR1cm4gY2FsbGJhY2soZXJyKX1yZXR1cm59aWYoKytjb21wbGV0ZWQ+PW1vdW50cy5sZW5ndGgpe2NhbGxiYWNrKG51bGwpfX1tb3VudHMuZm9yRWFjaCgoZnVuY3Rpb24obW91bnQpe2lmKCFtb3VudC50eXBlLnN5bmNmcyl7cmV0dXJuIGRvbmUobnVsbCl9bW91bnQudHlwZS5zeW5jZnMobW91bnQscG9wdWxhdGUsZG9uZSl9KSl9KSxtb3VudDooZnVuY3Rpb24odHlwZSxvcHRzLG1vdW50cG9pbnQpe3ZhciByb290PW1vdW50cG9pbnQ9PT0iLyI7dmFyIHBzZXVkbz0hbW91bnRwb2ludDt2YXIgbm9kZTtpZihyb290JiZGUy5yb290KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQlVTWSl9ZWxzZSBpZighcm9vdCYmIXBzZXVkbyl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKG1vdW50cG9pbnQse2ZvbGxvd19tb3VudDpmYWxzZX0pO21vdW50cG9pbnQ9bG9va3VwLnBhdGg7bm9kZT1sb29rdXAubm9kZTtpZihGUy5pc01vdW50cG9pbnQobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKX1pZighRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVERJUil9fXZhciBtb3VudD17dHlwZTp0eXBlLG9wdHM6b3B0cyxtb3VudHBvaW50Om1vdW50cG9pbnQsbW91bnRzOltdfTt2YXIgbW91bnRSb290PXR5cGUubW91bnQobW91bnQpO21vdW50Um9vdC5tb3VudD1tb3VudDttb3VudC5yb290PW1vdW50Um9vdDtpZihyb290KXtGUy5yb290PW1vdW50Um9vdH1lbHNlIGlmKG5vZGUpe25vZGUubW91bnRlZD1tb3VudDtpZihub2RlLm1vdW50KXtub2RlLm1vdW50Lm1vdW50cy5wdXNoKG1vdW50KX19cmV0dXJuIG1vdW50Um9vdH0pLHVubW91bnQ6KGZ1bmN0aW9uKG1vdW50cG9pbnQpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChtb3VudHBvaW50LHtmb2xsb3dfbW91bnQ6ZmFsc2V9KTtpZighRlMuaXNNb3VudHBvaW50KGxvb2t1cC5ub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbm9kZT1sb29rdXAubm9kZTt2YXIgbW91bnQ9bm9kZS5tb3VudGVkO3ZhciBtb3VudHM9RlMuZ2V0TW91bnRzKG1vdW50KTtPYmplY3Qua2V5cyhGUy5uYW1lVGFibGUpLmZvckVhY2goKGZ1bmN0aW9uKGhhc2gpe3ZhciBjdXJyZW50PUZTLm5hbWVUYWJsZVtoYXNoXTt3aGlsZShjdXJyZW50KXt2YXIgbmV4dD1jdXJyZW50Lm5hbWVfbmV4dDtpZihtb3VudHMuaW5kZXhPZihjdXJyZW50Lm1vdW50KSE9PS0xKXtGUy5kZXN0cm95Tm9kZShjdXJyZW50KX1jdXJyZW50PW5leHR9fSkpO25vZGUubW91bnRlZD1udWxsO3ZhciBpZHg9bm9kZS5tb3VudC5tb3VudHMuaW5kZXhPZihtb3VudCk7YXNzZXJ0KGlkeCE9PS0xKTtub2RlLm1vdW50Lm1vdW50cy5zcGxpY2UoaWR4LDEpfSksbG9va3VwOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7cmV0dXJuIHBhcmVudC5ub2RlX29wcy5sb29rdXAocGFyZW50LG5hbWUpfSksbWtub2Q6KGZ1bmN0aW9uKHBhdGgsbW9kZSxkZXYpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgZXJyPUZTLm1heUNyZWF0ZShwYXJlbnQsbmFtZSk7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfWlmKCFwYXJlbnQubm9kZV9vcHMubWtub2Qpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLm1rbm9kKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0pLGNyZWF0ZTooZnVuY3Rpb24ocGF0aCxtb2RlKXttb2RlPW1vZGUhPT11bmRlZmluZWQ/bW9kZTo0Mzg7bW9kZSY9NDA5NTttb2RlfD0zMjc2ODtyZXR1cm4gRlMubWtub2QocGF0aCxtb2RlLDApfSksbWtkaXI6KGZ1bmN0aW9uKHBhdGgsbW9kZSl7bW9kZT1tb2RlIT09dW5kZWZpbmVkP21vZGU6NTExO21vZGUmPTUxMXw1MTI7bW9kZXw9MTYzODQ7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSwwKX0pLG1rZGV2OihmdW5jdGlvbihwYXRoLG1vZGUsZGV2KXtpZih0eXBlb2YgZGV2PT09InVuZGVmaW5lZCIpe2Rldj1tb2RlO21vZGU9NDM4fW1vZGV8PTgxOTI7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSxkZXYpfSksc3ltbGluazooZnVuY3Rpb24ob2xkcGF0aCxuZXdwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgobmV3cGF0aCx7cGFyZW50OnRydWV9KTt2YXIgcGFyZW50PWxvb2t1cC5ub2RlO3ZhciBuZXduYW1lPVBBVEguYmFzZW5hbWUobmV3cGF0aCk7dmFyIGVycj1GUy5tYXlDcmVhdGUocGFyZW50LG5ld25hbWUpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1pZighcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmsocGFyZW50LG5ld25hbWUsb2xkcGF0aCl9KSxyZW5hbWU6KGZ1bmN0aW9uKG9sZF9wYXRoLG5ld19wYXRoKXt2YXIgb2xkX2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG9sZF9wYXRoKTt2YXIgbmV3X2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG5ld19wYXRoKTt2YXIgb2xkX25hbWU9UEFUSC5iYXNlbmFtZShvbGRfcGF0aCk7dmFyIG5ld19uYW1lPVBBVEguYmFzZW5hbWUobmV3X3BhdGgpO3ZhciBsb29rdXAsb2xkX2RpcixuZXdfZGlyO3RyeXtsb29rdXA9RlMubG9va3VwUGF0aChvbGRfcGF0aCx7cGFyZW50OnRydWV9KTtvbGRfZGlyPWxvb2t1cC5ub2RlO2xvb2t1cD1GUy5sb29rdXBQYXRoKG5ld19wYXRoLHtwYXJlbnQ6dHJ1ZX0pO25ld19kaXI9bG9va3VwLm5vZGV9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfWlmKG9sZF9kaXIubW91bnQhPT1uZXdfZGlyLm1vdW50KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FWERFVil9dmFyIG9sZF9ub2RlPUZTLmxvb2t1cE5vZGUob2xkX2RpcixvbGRfbmFtZSk7dmFyIHJlbGF0aXZlPVBBVEgucmVsYXRpdmUob2xkX3BhdGgsbmV3X2Rpcm5hbWUpO2lmKHJlbGF0aXZlLmNoYXJBdCgwKSE9PSIuIil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1yZWxhdGl2ZT1QQVRILnJlbGF0aXZlKG5ld19wYXRoLG9sZF9kaXJuYW1lKTtpZihyZWxhdGl2ZS5jaGFyQXQoMCkhPT0iLiIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RFTVBUWSl9dmFyIG5ld19ub2RlO3RyeXtuZXdfbm9kZT1GUy5sb29rdXBOb2RlKG5ld19kaXIsbmV3X25hbWUpfWNhdGNoKGUpe31pZihvbGRfbm9kZT09PW5ld19ub2RlKXtyZXR1cm59dmFyIGlzZGlyPUZTLmlzRGlyKG9sZF9ub2RlLm1vZGUpO3ZhciBlcnI9RlMubWF5RGVsZXRlKG9sZF9kaXIsb2xkX25hbWUsaXNkaXIpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1lcnI9bmV3X25vZGU/RlMubWF5RGVsZXRlKG5ld19kaXIsbmV3X25hbWUsaXNkaXIpOkZTLm1heUNyZWF0ZShuZXdfZGlyLG5ld19uYW1lKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoIW9sZF9kaXIubm9kZV9vcHMucmVuYW1lKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9aWYoRlMuaXNNb3VudHBvaW50KG9sZF9ub2RlKXx8bmV3X25vZGUmJkZTLmlzTW91bnRwb2ludChuZXdfbm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKX1pZihuZXdfZGlyIT09b2xkX2Rpcil7ZXJyPUZTLm5vZGVQZXJtaXNzaW9ucyhvbGRfZGlyLCJ3Iik7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfX10cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsid2lsbE1vdmVQYXRoIl0pe0ZTLnRyYWNraW5nRGVsZWdhdGVbIndpbGxNb3ZlUGF0aCJdKG9sZF9wYXRoLG5ld19wYXRoKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxNb3ZlUGF0aCddKCciK29sZF9wYXRoKyInLCAnIituZXdfcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9RlMuaGFzaFJlbW92ZU5vZGUob2xkX25vZGUpO3RyeXtvbGRfZGlyLm5vZGVfb3BzLnJlbmFtZShvbGRfbm9kZSxuZXdfZGlyLG5ld19uYW1lKX1jYXRjaChlKXt0aHJvdyBlfWZpbmFsbHl7RlMuaGFzaEFkZE5vZGUob2xkX25vZGUpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJvbk1vdmVQYXRoIl0pRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25Nb3ZlUGF0aCJdKG9sZF9wYXRoLG5ld19wYXRoKX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25Nb3ZlUGF0aCddKCciK29sZF9wYXRoKyInLCAnIituZXdfcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9fSkscm1kaXI6KGZ1bmN0aW9uKHBhdGgpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgbm9kZT1GUy5sb29rdXBOb2RlKHBhcmVudCxuYW1lKTt2YXIgZXJyPUZTLm1heURlbGV0ZShwYXJlbnQsbmFtZSx0cnVlKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoIXBhcmVudC5ub2RlX29wcy5ybWRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKXtGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKHBhdGgpfX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1wYXJlbnQubm9kZV9vcHMucm1kaXIocGFyZW50LG5hbWUpO0ZTLmRlc3Ryb3lOb2RlKG5vZGUpO3RyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXSlGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXShwYXRoKX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25EZWxldGVQYXRoJ10oJyIrcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9fSkscmVhZGRpcjooZnVuY3Rpb24ocGF0aCl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7aWYoIW5vZGUubm9kZV9vcHMucmVhZGRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVERJUil9cmV0dXJuIG5vZGUubm9kZV9vcHMucmVhZGRpcihub2RlKX0pLHVubGluazooZnVuY3Rpb24ocGF0aCl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse3BhcmVudDp0cnVlfSk7dmFyIHBhcmVudD1sb29rdXAubm9kZTt2YXIgbmFtZT1QQVRILmJhc2VuYW1lKHBhdGgpO3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO3ZhciBlcnI9RlMubWF5RGVsZXRlKHBhcmVudCxuYW1lLGZhbHNlKTtpZihlcnIpe2lmKGVycj09PUVSUk5PX0NPREVTLkVJU0RJUillcnI9RVJSTk9fQ09ERVMuRVBFUk07dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1pZighcGFyZW50Lm5vZGVfb3BzLnVubGluayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKXtGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKHBhdGgpfX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1wYXJlbnQubm9kZV9vcHMudW5saW5rKHBhcmVudCxuYW1lKTtGUy5kZXN0cm95Tm9kZShub2RlKTt0cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25EZWxldGVQYXRoIl0pRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25EZWxldGVQYXRoIl0ocGF0aCl9Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uRGVsZXRlUGF0aCddKCciK3BhdGgrIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UpfX0pLHJlYWRsaW5rOihmdW5jdGlvbihwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCk7dmFyIGxpbms9bG9va3VwLm5vZGU7aWYoIWxpbmsubm9kZV9vcHMucmVhZGxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9cmV0dXJuIGxpbmsubm9kZV9vcHMucmVhZGxpbmsobGluayl9KSxzdGF0OihmdW5jdGlvbihwYXRoLGRvbnRGb2xsb3cpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IWRvbnRGb2xsb3d9KTt2YXIgbm9kZT1sb29rdXAubm9kZTtpZighbm9kZS5ub2RlX29wcy5nZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9cmV0dXJuIG5vZGUubm9kZV9vcHMuZ2V0YXR0cihub2RlKX0pLGxzdGF0OihmdW5jdGlvbihwYXRoKXtyZXR1cm4gRlMuc3RhdChwYXRoLHRydWUpfSksY2htb2Q6KGZ1bmN0aW9uKHBhdGgsbW9kZSxkb250Rm9sbG93KXt2YXIgbm9kZTtpZih0eXBlb2YgcGF0aD09PSJzdHJpbmciKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250Rm9sbG93fSk7bm9kZT1sb29rdXAubm9kZX1lbHNle25vZGU9cGF0aH1pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse21vZGU6bW9kZSY0MDk1fG5vZGUubW9kZSZ+NDA5NSx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSksbGNobW9kOihmdW5jdGlvbihwYXRoLG1vZGUpe0ZTLmNobW9kKHBhdGgsbW9kZSx0cnVlKX0pLGZjaG1vZDooZnVuY3Rpb24oZmQsbW9kZSl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1GUy5jaG1vZChzdHJlYW0ubm9kZSxtb2RlKX0pLGNob3duOihmdW5jdGlvbihwYXRoLHVpZCxnaWQsZG9udEZvbGxvdyl7dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzohZG9udEZvbGxvd30pO25vZGU9bG9va3VwLm5vZGV9ZWxzZXtub2RlPXBhdGh9aWYoIW5vZGUubm9kZV9vcHMuc2V0YXR0cil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfW5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSksbGNob3duOihmdW5jdGlvbihwYXRoLHVpZCxnaWQpe0ZTLmNob3duKHBhdGgsdWlkLGdpZCx0cnVlKX0pLGZjaG93bjooZnVuY3Rpb24oZmQsdWlkLGdpZCl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1GUy5jaG93bihzdHJlYW0ubm9kZSx1aWQsZ2lkKX0pLHRydW5jYXRlOihmdW5jdGlvbihwYXRoLGxlbil7aWYobGVuPDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7bm9kZT1sb29rdXAubm9kZX1lbHNle25vZGU9cGF0aH1pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTRElSKX1pZighRlMuaXNGaWxlKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIGVycj1GUy5ub2RlUGVybWlzc2lvbnMobm9kZSwidyIpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1ub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSx7c2l6ZTpsZW4sdGltZXN0YW1wOkRhdGUubm93KCl9KX0pLGZ0cnVuY2F0ZTooZnVuY3Rpb24oZmQsbGVuKXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmZCk7aWYoIXN0cmVhbSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpfWlmKChzdHJlYW0uZmxhZ3MmMjA5NzE1NSk9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfUZTLnRydW5jYXRlKHN0cmVhbS5ub2RlLGxlbil9KSx1dGltZTooZnVuY3Rpb24ocGF0aCxhdGltZSxtdGltZSl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse3RpbWVzdGFtcDpNYXRoLm1heChhdGltZSxtdGltZSl9KX0pLG9wZW46KGZ1bmN0aW9uKHBhdGgsZmxhZ3MsbW9kZSxmZF9zdGFydCxmZF9lbmQpe2ZsYWdzPXR5cGVvZiBmbGFncz09PSJzdHJpbmciP0ZTLm1vZGVTdHJpbmdUb0ZsYWdzKGZsYWdzKTpmbGFnczttb2RlPXR5cGVvZiBtb2RlPT09InVuZGVmaW5lZCI/NDM4Om1vZGU7aWYoZmxhZ3MmNjQpe21vZGU9bW9kZSY0MDk1fDMyNzY4fWVsc2V7bW9kZT0wfXZhciBub2RlO2lmKHR5cGVvZiBwYXRoPT09Im9iamVjdCIpe25vZGU9cGF0aH1lbHNle3BhdGg9UEFUSC5ub3JtYWxpemUocGF0aCk7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IShmbGFncyYxMzEwNzIpfSk7bm9kZT1sb29rdXAubm9kZX1jYXRjaChlKXt9fWlmKGZsYWdzJjY0KXtpZihub2RlKXtpZihmbGFncyYxMjgpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVFWElTVCl9fWVsc2V7bm9kZT1GUy5ta25vZChwYXRoLG1vZGUsMCl9fWlmKCFub2RlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9FTlQpfWlmKEZTLmlzQ2hyZGV2KG5vZGUubW9kZSkpe2ZsYWdzJj1+NTEyfXZhciBlcnI9RlMubWF5T3Blbihub2RlLGZsYWdzKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoZmxhZ3MmNTEyKXtGUy50cnVuY2F0ZShub2RlLDApfWZsYWdzJj1+KDEyOHw1MTIpO3ZhciBzdHJlYW09RlMuY3JlYXRlU3RyZWFtKHtub2RlOm5vZGUscGF0aDpGUy5nZXRQYXRoKG5vZGUpLGZsYWdzOmZsYWdzLHNlZWthYmxlOnRydWUscG9zaXRpb246MCxzdHJlYW1fb3BzOm5vZGUuc3RyZWFtX29wcyx1bmdvdHRlbjpbXSxlcnJvcjpmYWxzZX0sZmRfc3RhcnQsZmRfZW5kKTtpZihzdHJlYW0uc3RyZWFtX29wcy5vcGVuKXtzdHJlYW0uc3RyZWFtX29wcy5vcGVuKHN0cmVhbSl9aWYoTW9kdWxlWyJsb2dSZWFkRmlsZXMiXSYmIShmbGFncyYxKSl7aWYoIUZTLnJlYWRGaWxlcylGUy5yZWFkRmlsZXM9e307aWYoIShwYXRoIGluIEZTLnJlYWRGaWxlcykpe0ZTLnJlYWRGaWxlc1twYXRoXT0xO01vZHVsZVsicHJpbnRFcnIiXSgicmVhZCBmaWxlOiAiK3BhdGgpfX10cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25PcGVuRmlsZSJdKXt2YXIgdHJhY2tpbmdGbGFncz0wO2lmKChmbGFncyYyMDk3MTU1KSE9PTEpe3RyYWNraW5nRmxhZ3N8PUZTLnRyYWNraW5nLm9wZW5GbGFncy5SRUFEfWlmKChmbGFncyYyMDk3MTU1KSE9PTApe3RyYWNraW5nRmxhZ3N8PUZTLnRyYWNraW5nLm9wZW5GbGFncy5XUklURX1GUy50cmFja2luZ0RlbGVnYXRlWyJvbk9wZW5GaWxlIl0ocGF0aCx0cmFja2luZ0ZsYWdzKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uT3BlbkZpbGUnXSgnIitwYXRoKyInLCBmbGFncykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9cmV0dXJuIHN0cmVhbX0pLGNsb3NlOihmdW5jdGlvbihzdHJlYW0pe3RyeXtpZihzdHJlYW0uc3RyZWFtX29wcy5jbG9zZSl7c3RyZWFtLnN0cmVhbV9vcHMuY2xvc2Uoc3RyZWFtKX19Y2F0Y2goZSl7dGhyb3cgZX1maW5hbGx5e0ZTLmNsb3NlU3RyZWFtKHN0cmVhbS5mZCl9fSksbGxzZWVrOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LHdoZW5jZSl7aWYoIXN0cmVhbS5zZWVrYWJsZXx8IXN0cmVhbS5zdHJlYW1fb3BzLmxsc2Vlayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKX1yZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubGxzZWVrKHN0cmVhbSxvZmZzZXQsd2hlbmNlKX0pLHJlYWQ6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbil7aWYobGVuZ3RoPDB8fHBvc2l0aW9uPDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1pZihGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTRElSKX1pZighc3RyZWFtLnN0cmVhbV9vcHMucmVhZCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgc2Vla2luZz10cnVlO2lmKHR5cGVvZiBwb3NpdGlvbj09PSJ1bmRlZmluZWQiKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247c2Vla2luZz1mYWxzZX1lbHNlIGlmKCFzdHJlYW0uc2Vla2FibGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSl9dmFyIGJ5dGVzUmVhZD1zdHJlYW0uc3RyZWFtX29wcy5yZWFkKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbik7aWYoIXNlZWtpbmcpc3RyZWFtLnBvc2l0aW9uKz1ieXRlc1JlYWQ7cmV0dXJuIGJ5dGVzUmVhZH0pLHdyaXRlOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24sY2FuT3duKXtpZihsZW5ndGg8MHx8cG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1pZigoc3RyZWFtLmZsYWdzJjIwOTcxNTUpPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpfWlmKEZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSVNESVIpfWlmKCFzdHJlYW0uc3RyZWFtX29wcy53cml0ZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgc2Vla2luZz10cnVlO2lmKHR5cGVvZiBwb3NpdGlvbj09PSJ1bmRlZmluZWQiKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247c2Vla2luZz1mYWxzZX1lbHNlIGlmKCFzdHJlYW0uc2Vla2FibGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSl9aWYoc3RyZWFtLmZsYWdzJjEwMjQpe0ZTLmxsc2VlayhzdHJlYW0sMCwyKX12YXIgYnl0ZXNXcml0dGVuPXN0cmVhbS5zdHJlYW1fb3BzLndyaXRlKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixjYW5Pd24pO2lmKCFzZWVraW5nKXN0cmVhbS5wb3NpdGlvbis9Ynl0ZXNXcml0dGVuO3RyeXtpZihzdHJlYW0ucGF0aCYmRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25Xcml0ZVRvRmlsZSJdKUZTLnRyYWNraW5nRGVsZWdhdGVbIm9uV3JpdGVUb0ZpbGUiXShzdHJlYW0ucGF0aCl9Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uV3JpdGVUb0ZpbGUnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1yZXR1cm4gYnl0ZXNXcml0dGVufSksYWxsb2NhdGU6KGZ1bmN0aW9uKHN0cmVhbSxvZmZzZXQsbGVuZ3RoKXtpZihvZmZzZXQ8MHx8bGVuZ3RoPD0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfWlmKChzdHJlYW0uZmxhZ3MmMjA5NzE1NSk9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQkFERil9aWYoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSYmIUZTLmlzRGlyKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLmFsbG9jYXRlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FT1BOT1RTVVBQKX1zdHJlYW0uc3RyZWFtX29wcy5hbGxvY2F0ZShzdHJlYW0sb2Zmc2V0LGxlbmd0aCl9KSxtbWFwOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24scHJvdCxmbGFncyl7aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVBQ0NFUyl9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLm1tYXApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLm1tYXAoc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLHByb3QsZmxhZ3MpfSksaW9jdGw6KGZ1bmN0aW9uKHN0cmVhbSxjbWQsYXJnKXtpZighc3RyZWFtLnN0cmVhbV9vcHMuaW9jdGwpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RUWSl9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLmlvY3RsKHN0cmVhbSxjbWQsYXJnKX0pLHJlYWRGaWxlOihmdW5jdGlvbihwYXRoLG9wdHMpe29wdHM9b3B0c3x8e307b3B0cy5mbGFncz1vcHRzLmZsYWdzfHwiciI7b3B0cy5lbmNvZGluZz1vcHRzLmVuY29kaW5nfHwiYmluYXJ5IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgcmV0O3ZhciBzdHJlYW09RlMub3BlbihwYXRoLG9wdHMuZmxhZ3MpO3ZhciBzdGF0PUZTLnN0YXQocGF0aCk7dmFyIGxlbmd0aD1zdGF0LnNpemU7dmFyIGJ1Zj1uZXcgVWludDhBcnJheShsZW5ndGgpO0ZTLnJlYWQoc3RyZWFtLGJ1ZiwwLGxlbmd0aCwwKTtpZihvcHRzLmVuY29kaW5nPT09InV0ZjgiKXtyZXQ9IiI7dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe3JldCs9dXRmOC5wcm9jZXNzQ0NoYXIoYnVmW2ldKX19ZWxzZSBpZihvcHRzLmVuY29kaW5nPT09ImJpbmFyeSIpe3JldD1idWZ9RlMuY2xvc2Uoc3RyZWFtKTtyZXR1cm4gcmV0fSksd3JpdGVGaWxlOihmdW5jdGlvbihwYXRoLGRhdGEsb3B0cyl7b3B0cz1vcHRzfHx7fTtvcHRzLmZsYWdzPW9wdHMuZmxhZ3N8fCJ3IjtvcHRzLmVuY29kaW5nPW9wdHMuZW5jb2Rpbmd8fCJ1dGY4IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgc3RyZWFtPUZTLm9wZW4ocGF0aCxvcHRzLmZsYWdzLG9wdHMubW9kZSk7aWYob3B0cy5lbmNvZGluZz09PSJ1dGY4Iil7dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjt2YXIgYnVmPW5ldyBVaW50OEFycmF5KHV0ZjgucHJvY2Vzc0pTU3RyaW5nKGRhdGEpKTtGUy53cml0ZShzdHJlYW0sYnVmLDAsYnVmLmxlbmd0aCwwLG9wdHMuY2FuT3duKX1lbHNlIGlmKG9wdHMuZW5jb2Rpbmc9PT0iYmluYXJ5Iil7RlMud3JpdGUoc3RyZWFtLGRhdGEsMCxkYXRhLmxlbmd0aCwwLG9wdHMuY2FuT3duKX1GUy5jbG9zZShzdHJlYW0pfSksY3dkOihmdW5jdGlvbigpe3JldHVybiBGUy5jdXJyZW50UGF0aH0pLGNoZGlyOihmdW5jdGlvbihwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OnRydWV9KTtpZighRlMuaXNEaXIobG9va3VwLm5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RESVIpfXZhciBlcnI9RlMubm9kZVBlcm1pc3Npb25zKGxvb2t1cC5ub2RlLCJ4Iik7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfUZTLmN1cnJlbnRQYXRoPWxvb2t1cC5wYXRofSksY3JlYXRlRGVmYXVsdERpcmVjdG9yaWVzOihmdW5jdGlvbigpe0ZTLm1rZGlyKCIvdG1wIil9KSxjcmVhdGVEZWZhdWx0RGV2aWNlczooZnVuY3Rpb24oKXtGUy5ta2RpcigiL2RldiIpO0ZTLnJlZ2lzdGVyRGV2aWNlKEZTLm1ha2VkZXYoMSwzKSx7cmVhZDooZnVuY3Rpb24oKXtyZXR1cm4gMH0pLHdyaXRlOihmdW5jdGlvbigpe3JldHVybiAwfSl9KTtGUy5ta2RldigiL2Rldi9udWxsIixGUy5tYWtlZGV2KDEsMykpO1RUWS5yZWdpc3RlcihGUy5tYWtlZGV2KDUsMCksVFRZLmRlZmF1bHRfdHR5X29wcyk7VFRZLnJlZ2lzdGVyKEZTLm1ha2VkZXYoNiwwKSxUVFkuZGVmYXVsdF90dHkxX29wcyk7RlMubWtkZXYoIi9kZXYvdHR5IixGUy5tYWtlZGV2KDUsMCkpO0ZTLm1rZGV2KCIvZGV2L3R0eTEiLEZTLm1ha2VkZXYoNiwwKSk7RlMubWtkaXIoIi9kZXYvc2htIik7RlMubWtkaXIoIi9kZXYvc2htL3RtcCIpfSksY3JlYXRlU3RhbmRhcmRTdHJlYW1zOihmdW5jdGlvbigpe2lmKE1vZHVsZVsic3RkaW4iXSl7RlMuY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkaW4iLE1vZHVsZVsic3RkaW4iXSl9ZWxzZXtGUy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3RkaW4iKX1pZihNb2R1bGVbInN0ZG91dCJdKXtGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRvdXQiLG51bGwsTW9kdWxlWyJzdGRvdXQiXSl9ZWxzZXtGUy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3Rkb3V0Iil9aWYoTW9kdWxlWyJzdGRlcnIiXSl7RlMuY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkZXJyIixudWxsLE1vZHVsZVsic3RkZXJyIl0pfWVsc2V7RlMuc3ltbGluaygiL2Rldi90dHkxIiwiL2Rldi9zdGRlcnIiKX12YXIgc3RkaW49RlMub3BlbigiL2Rldi9zdGRpbiIsInIiKTtIRUFQMzJbX3N0ZGluPj4yXT1GUy5nZXRQdHJGb3JTdHJlYW0oc3RkaW4pO2Fzc2VydChzdGRpbi5mZD09PTAsImludmFsaWQgaGFuZGxlIGZvciBzdGRpbiAoIitzdGRpbi5mZCsiKSIpO3ZhciBzdGRvdXQ9RlMub3BlbigiL2Rldi9zdGRvdXQiLCJ3Iik7SEVBUDMyW19zdGRvdXQ+PjJdPUZTLmdldFB0ckZvclN0cmVhbShzdGRvdXQpO2Fzc2VydChzdGRvdXQuZmQ9PT0xLCJpbnZhbGlkIGhhbmRsZSBmb3Igc3Rkb3V0ICgiK3N0ZG91dC5mZCsiKSIpO3ZhciBzdGRlcnI9RlMub3BlbigiL2Rldi9zdGRlcnIiLCJ3Iik7SEVBUDMyW19zdGRlcnI+PjJdPUZTLmdldFB0ckZvclN0cmVhbShzdGRlcnIpO2Fzc2VydChzdGRlcnIuZmQ9PT0yLCJpbnZhbGlkIGhhbmRsZSBmb3Igc3RkZXJyICgiK3N0ZGVyci5mZCsiKSIpfSksZW5zdXJlRXJybm9FcnJvcjooZnVuY3Rpb24oKXtpZihGUy5FcnJub0Vycm9yKXJldHVybjtGUy5FcnJub0Vycm9yPWZ1bmN0aW9uIEVycm5vRXJyb3IoZXJybm8pe3RoaXMuZXJybm89ZXJybm87Zm9yKHZhciBrZXkgaW4gRVJSTk9fQ09ERVMpe2lmKEVSUk5PX0NPREVTW2tleV09PT1lcnJubyl7dGhpcy5jb2RlPWtleTticmVha319dGhpcy5tZXNzYWdlPUVSUk5PX01FU1NBR0VTW2Vycm5vXX07RlMuRXJybm9FcnJvci5wcm90b3R5cGU9bmV3IEVycm9yO0ZTLkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPUZTLkVycm5vRXJyb3I7W0VSUk5PX0NPREVTLkVOT0VOVF0uZm9yRWFjaCgoZnVuY3Rpb24oY29kZSl7RlMuZ2VuZXJpY0Vycm9yc1tjb2RlXT1uZXcgRlMuRXJybm9FcnJvcihjb2RlKTtGUy5nZW5lcmljRXJyb3JzW2NvZGVdLnN0YWNrPSI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+In0pKX0pLHN0YXRpY0luaXQ6KGZ1bmN0aW9uKCl7RlMuZW5zdXJlRXJybm9FcnJvcigpO0ZTLm5hbWVUYWJsZT1uZXcgQXJyYXkoNDA5Nik7RlMubW91bnQoTUVNRlMse30sIi8iKTtGUy5jcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXMoKTtGUy5jcmVhdGVEZWZhdWx0RGV2aWNlcygpfSksaW5pdDooZnVuY3Rpb24oaW5wdXQsb3V0cHV0LGVycm9yKXthc3NlcnQoIUZTLmluaXQuaW5pdGlhbGl6ZWQsIkZTLmluaXQgd2FzIHByZXZpb3VzbHkgY2FsbGVkLiBJZiB5b3Ugd2FudCB0byBpbml0aWFsaXplIGxhdGVyIHdpdGggY3VzdG9tIHBhcmFtZXRlcnMsIHJlbW92ZSBhbnkgZWFybGllciBjYWxscyAobm90ZSB0aGF0IG9uZSBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgY29kZSkiKTtGUy5pbml0LmluaXRpYWxpemVkPXRydWU7RlMuZW5zdXJlRXJybm9FcnJvcigpO01vZHVsZVsic3RkaW4iXT1pbnB1dHx8TW9kdWxlWyJzdGRpbiJdO01vZHVsZVsic3Rkb3V0Il09b3V0cHV0fHxNb2R1bGVbInN0ZG91dCJdO01vZHVsZVsic3RkZXJyIl09ZXJyb3J8fE1vZHVsZVsic3RkZXJyIl07RlMuY3JlYXRlU3RhbmRhcmRTdHJlYW1zKCl9KSxxdWl0OihmdW5jdGlvbigpe0ZTLmluaXQuaW5pdGlhbGl6ZWQ9ZmFsc2U7Zm9yKHZhciBpPTA7aTxGUy5zdHJlYW1zLmxlbmd0aDtpKyspe3ZhciBzdHJlYW09RlMuc3RyZWFtc1tpXTtpZighc3RyZWFtKXtjb250aW51ZX1GUy5jbG9zZShzdHJlYW0pfX0pLGdldE1vZGU6KGZ1bmN0aW9uKGNhblJlYWQsY2FuV3JpdGUpe3ZhciBtb2RlPTA7aWYoY2FuUmVhZCltb2RlfD0yOTJ8NzM7aWYoY2FuV3JpdGUpbW9kZXw9MTQ2O3JldHVybiBtb2RlfSksam9pblBhdGg6KGZ1bmN0aW9uKHBhcnRzLGZvcmNlUmVsYXRpdmUpe3ZhciBwYXRoPVBBVEguam9pbi5hcHBseShudWxsLHBhcnRzKTtpZihmb3JjZVJlbGF0aXZlJiZwYXRoWzBdPT0iLyIpcGF0aD1wYXRoLnN1YnN0cigxKTtyZXR1cm4gcGF0aH0pLGFic29sdXRlUGF0aDooZnVuY3Rpb24ocmVsYXRpdmUsYmFzZSl7cmV0dXJuIFBBVEgucmVzb2x2ZShiYXNlLHJlbGF0aXZlKX0pLHN0YW5kYXJkaXplUGF0aDooZnVuY3Rpb24ocGF0aCl7cmV0dXJuIFBBVEgubm9ybWFsaXplKHBhdGgpfSksZmluZE9iamVjdDooZnVuY3Rpb24ocGF0aCxkb250UmVzb2x2ZUxhc3RMaW5rKXt2YXIgcmV0PUZTLmFuYWx5emVQYXRoKHBhdGgsZG9udFJlc29sdmVMYXN0TGluayk7aWYocmV0LmV4aXN0cyl7cmV0dXJuIHJldC5vYmplY3R9ZWxzZXtfX19zZXRFcnJObyhyZXQuZXJyb3IpO3JldHVybiBudWxsfX0pLGFuYWx5emVQYXRoOihmdW5jdGlvbihwYXRoLGRvbnRSZXNvbHZlTGFzdExpbmspe3RyeXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250UmVzb2x2ZUxhc3RMaW5rfSk7cGF0aD1sb29rdXAucGF0aH1jYXRjaChlKXt9dmFyIHJldD17aXNSb290OmZhbHNlLGV4aXN0czpmYWxzZSxlcnJvcjowLG5hbWU6bnVsbCxwYXRoOm51bGwsb2JqZWN0Om51bGwscGFyZW50RXhpc3RzOmZhbHNlLHBhcmVudFBhdGg6bnVsbCxwYXJlbnRPYmplY3Q6bnVsbH07dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3JldC5wYXJlbnRFeGlzdHM9dHJ1ZTtyZXQucGFyZW50UGF0aD1sb29rdXAucGF0aDtyZXQucGFyZW50T2JqZWN0PWxvb2t1cC5ub2RlO3JldC5uYW1lPVBBVEguYmFzZW5hbWUocGF0aCk7bG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250UmVzb2x2ZUxhc3RMaW5rfSk7cmV0LmV4aXN0cz10cnVlO3JldC5wYXRoPWxvb2t1cC5wYXRoO3JldC5vYmplY3Q9bG9va3VwLm5vZGU7cmV0Lm5hbWU9bG9va3VwLm5vZGUubmFtZTtyZXQuaXNSb290PWxvb2t1cC5wYXRoPT09Ii8ifWNhdGNoKGUpe3JldC5lcnJvcj1lLmVycm5vfXJldHVybiByZXR9KSxjcmVhdGVGb2xkZXI6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLGNhblJlYWQsY2FuV3JpdGUpe3ZhciBwYXRoPVBBVEguam9pbjIodHlwZW9mIHBhcmVudD09PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCksbmFtZSk7dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTtyZXR1cm4gRlMubWtkaXIocGF0aCxtb2RlKX0pLGNyZWF0ZVBhdGg6KGZ1bmN0aW9uKHBhcmVudCxwYXRoLGNhblJlYWQsY2FuV3JpdGUpe3BhcmVudD10eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KTt2YXIgcGFydHM9cGF0aC5zcGxpdCgiLyIpLnJldmVyc2UoKTt3aGlsZShwYXJ0cy5sZW5ndGgpe3ZhciBwYXJ0PXBhcnRzLnBvcCgpO2lmKCFwYXJ0KWNvbnRpbnVlO3ZhciBjdXJyZW50PVBBVEguam9pbjIocGFyZW50LHBhcnQpO3RyeXtGUy5ta2RpcihjdXJyZW50KX1jYXRjaChlKXt9cGFyZW50PWN1cnJlbnR9cmV0dXJuIGN1cnJlbnR9KSxjcmVhdGVGaWxlOihmdW5jdGlvbihwYXJlbnQsbmFtZSxwcm9wZXJ0aWVzLGNhblJlYWQsY2FuV3JpdGUpe3ZhciBwYXRoPVBBVEguam9pbjIodHlwZW9mIHBhcmVudD09PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCksbmFtZSk7dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTtyZXR1cm4gRlMuY3JlYXRlKHBhdGgsbW9kZSl9KSxjcmVhdGVEYXRhRmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsZGF0YSxjYW5SZWFkLGNhbldyaXRlLGNhbk93bil7dmFyIHBhdGg9bmFtZT9QQVRILmpvaW4yKHR5cGVvZiBwYXJlbnQ9PT0ic3RyaW5nIj9wYXJlbnQ6RlMuZ2V0UGF0aChwYXJlbnQpLG5hbWUpOnBhcmVudDt2YXIgbW9kZT1GUy5nZXRNb2RlKGNhblJlYWQsY2FuV3JpdGUpO3ZhciBub2RlPUZTLmNyZWF0ZShwYXRoLG1vZGUpO2lmKGRhdGEpe2lmKHR5cGVvZiBkYXRhPT09InN0cmluZyIpe3ZhciBhcnI9bmV3IEFycmF5KGRhdGEubGVuZ3RoKTtmb3IodmFyIGk9MCxsZW49ZGF0YS5sZW5ndGg7aTxsZW47KytpKWFycltpXT1kYXRhLmNoYXJDb2RlQXQoaSk7ZGF0YT1hcnJ9RlMuY2htb2Qobm9kZSxtb2RlfDE0Nik7dmFyIHN0cmVhbT1GUy5vcGVuKG5vZGUsInciKTtGUy53cml0ZShzdHJlYW0sZGF0YSwwLGRhdGEubGVuZ3RoLDAsY2FuT3duKTtGUy5jbG9zZShzdHJlYW0pO0ZTLmNobW9kKG5vZGUsbW9kZSl9cmV0dXJuIG5vZGV9KSxjcmVhdGVEZXZpY2U6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLGlucHV0LG91dHB1dCl7dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KSxuYW1lKTt2YXIgbW9kZT1GUy5nZXRNb2RlKCEhaW5wdXQsISFvdXRwdXQpO2lmKCFGUy5jcmVhdGVEZXZpY2UubWFqb3IpRlMuY3JlYXRlRGV2aWNlLm1ham9yPTY0O3ZhciBkZXY9RlMubWFrZWRldihGUy5jcmVhdGVEZXZpY2UubWFqb3IrKywwKTtGUy5yZWdpc3RlckRldmljZShkZXYse29wZW46KGZ1bmN0aW9uKHN0cmVhbSl7c3RyZWFtLnNlZWthYmxlPWZhbHNlfSksY2xvc2U6KGZ1bmN0aW9uKHN0cmVhbSl7aWYob3V0cHV0JiZvdXRwdXQuYnVmZmVyJiZvdXRwdXQuYnVmZmVyLmxlbmd0aCl7b3V0cHV0KDEwKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zKXt2YXIgYnl0ZXNSZWFkPTA7Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSsrKXt2YXIgcmVzdWx0O3RyeXtyZXN1bHQ9aW5wdXQoKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfWlmKHJlc3VsdD09PXVuZGVmaW5lZCYmYnl0ZXNSZWFkPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX1pZihyZXN1bHQ9PT1udWxsfHxyZXN1bHQ9PT11bmRlZmluZWQpYnJlYWs7Ynl0ZXNSZWFkKys7YnVmZmVyW29mZnNldCtpXT1yZXN1bHR9aWYoYnl0ZXNSZWFkKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKX1yZXR1cm4gYnl0ZXNSZWFkfSksd3JpdGU6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3Mpe2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dHJ5e291dHB1dChidWZmZXJbb2Zmc2V0K2ldKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfX1pZihsZW5ndGgpe3N0cmVhbS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpfXJldHVybiBpfSl9KTtyZXR1cm4gRlMubWtkZXYocGF0aCxtb2RlLGRldil9KSxjcmVhdGVMaW5rOihmdW5jdGlvbihwYXJlbnQsbmFtZSx0YXJnZXQsY2FuUmVhZCxjYW5Xcml0ZSl7dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KSxuYW1lKTtyZXR1cm4gRlMuc3ltbGluayh0YXJnZXQscGF0aCl9KSxmb3JjZUxvYWRGaWxlOihmdW5jdGlvbihvYmope2lmKG9iai5pc0RldmljZXx8b2JqLmlzRm9sZGVyfHxvYmoubGlua3x8b2JqLmNvbnRlbnRzKXJldHVybiB0cnVlO3ZhciBzdWNjZXNzPXRydWU7aWYodHlwZW9mIFhNTEh0dHBSZXF1ZXN0IT09InVuZGVmaW5lZCIpe3Rocm93IG5ldyBFcnJvcigiTGF6eSBsb2FkaW5nIHNob3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIChjb250ZW50cyBzZXQpIGluIGNyZWF0ZUxhenlGaWxlLCBidXQgaXQgd2FzIG5vdC4gTGF6eSBsb2FkaW5nIG9ubHkgd29ya3MgaW4gd2ViIHdvcmtlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyBvbiB0aGUgbWFpbiB0aHJlYWQuIil9ZWxzZSBpZihNb2R1bGVbInJlYWQiXSl7dHJ5e29iai5jb250ZW50cz1pbnRBcnJheUZyb21TdHJpbmcoTW9kdWxlWyJyZWFkIl0ob2JqLnVybCksdHJ1ZSl9Y2F0Y2goZSl7c3VjY2Vzcz1mYWxzZX19ZWxzZXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIHdpdGhvdXQgcmVhZCgpIG9yIFhNTEh0dHBSZXF1ZXN0LiIpfWlmKCFzdWNjZXNzKV9fX3NldEVyck5vKEVSUk5PX0NPREVTLkVJTyk7cmV0dXJuIHN1Y2Nlc3N9KSxjcmVhdGVMYXp5RmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUpe2Z1bmN0aW9uIExhenlVaW50OEFycmF5KCl7dGhpcy5sZW5ndGhLbm93bj1mYWxzZTt0aGlzLmNodW5rcz1bXX1MYXp5VWludDhBcnJheS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIExhenlVaW50OEFycmF5X2dldChpZHgpe2lmKGlkeD50aGlzLmxlbmd0aC0xfHxpZHg8MCl7cmV0dXJuIHVuZGVmaW5lZH12YXIgY2h1bmtPZmZzZXQ9aWR4JXRoaXMuY2h1bmtTaXplO3ZhciBjaHVua051bT1NYXRoLmZsb29yKGlkeC90aGlzLmNodW5rU2l6ZSk7cmV0dXJuIHRoaXMuZ2V0dGVyKGNodW5rTnVtKVtjaHVua09mZnNldF19O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5zZXREYXRhR2V0dGVyPWZ1bmN0aW9uIExhenlVaW50OEFycmF5X3NldERhdGFHZXR0ZXIoZ2V0dGVyKXt0aGlzLmdldHRlcj1nZXR0ZXJ9O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5jYWNoZUxlbmd0aD1mdW5jdGlvbiBMYXp5VWludDhBcnJheV9jYWNoZUxlbmd0aCgpe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJIRUFEIix1cmwsZmFsc2UpO3hoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTt2YXIgZGF0YWxlbmd0aD1OdW1iZXIoeGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKTt2YXIgaGVhZGVyO3ZhciBoYXNCeXRlU2VydmluZz0oaGVhZGVyPXhoci5nZXRSZXNwb25zZUhlYWRlcigiQWNjZXB0LVJhbmdlcyIpKSYmaGVhZGVyPT09ImJ5dGVzIjt2YXIgY2h1bmtTaXplPTEwMjQqMTAyNDtpZighaGFzQnl0ZVNlcnZpbmcpY2h1bmtTaXplPWRhdGFsZW5ndGg7dmFyIGRvWEhSPShmdW5jdGlvbihmcm9tLHRvKXtpZihmcm9tPnRvKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCByYW5nZSAoIitmcm9tKyIsICIrdG8rIikgb3Igbm8gYnl0ZXMgcmVxdWVzdGVkISIpO2lmKHRvPmRhdGFsZW5ndGgtMSl0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIitkYXRhbGVuZ3RoKyIgYnl0ZXMgYXZhaWxhYmxlISBwcm9ncmFtbWVyIGVycm9yISIpO3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7aWYoZGF0YWxlbmd0aCE9PWNodW5rU2l6ZSl4aHIuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCJieXRlcz0iK2Zyb20rIi0iK3RvKTtpZih0eXBlb2YgVWludDhBcnJheSE9InVuZGVmaW5lZCIpeGhyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO2lmKHhoci5vdmVycmlkZU1pbWVUeXBlKXt4aHIub3ZlcnJpZGVNaW1lVHlwZSgidGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCIpfXhoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTtpZih4aHIucmVzcG9uc2UhPT11bmRlZmluZWQpe3JldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2V8fFtdKX1lbHNle3JldHVybiBpbnRBcnJheUZyb21TdHJpbmcoeGhyLnJlc3BvbnNlVGV4dHx8IiIsdHJ1ZSl9fSk7dmFyIGxhenlBcnJheT10aGlzO2xhenlBcnJheS5zZXREYXRhR2V0dGVyKChmdW5jdGlvbihjaHVua051bSl7dmFyIHN0YXJ0PWNodW5rTnVtKmNodW5rU2l6ZTt2YXIgZW5kPShjaHVua051bSsxKSpjaHVua1NpemUtMTtlbmQ9TWF0aC5taW4oZW5kLGRhdGFsZW5ndGgtMSk7aWYodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPT09InVuZGVmaW5lZCIpe2xhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPWRvWEhSKHN0YXJ0LGVuZCl9aWYodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPT09InVuZGVmaW5lZCIpdGhyb3cgbmV3IEVycm9yKCJkb1hIUiBmYWlsZWQhIik7cmV0dXJuIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dfSkpO3RoaXMuX2xlbmd0aD1kYXRhbGVuZ3RoO3RoaXMuX2NodW5rU2l6ZT1jaHVua1NpemU7dGhpcy5sZW5ndGhLbm93bj10cnVlfTtpZih0eXBlb2YgWE1MSHR0cFJlcXVlc3QhPT0idW5kZWZpbmVkIil7aWYoIUVOVklST05NRU5UX0lTX1dPUktFUil0aHJvdyJDYW5ub3QgZG8gc3luY2hyb25vdXMgYmluYXJ5IFhIUnMgb3V0c2lkZSB3ZWJ3b3JrZXJzIGluIG1vZGVybiBicm93c2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjIjt2YXIgbGF6eUFycmF5PW5ldyBMYXp5VWludDhBcnJheTtPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCJsZW5ndGgiLHtnZXQ6KGZ1bmN0aW9uKCl7aWYoIXRoaXMubGVuZ3RoS25vd24pe3RoaXMuY2FjaGVMZW5ndGgoKX1yZXR1cm4gdGhpcy5fbGVuZ3RofSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCJjaHVua1NpemUiLHtnZXQ6KGZ1bmN0aW9uKCl7aWYoIXRoaXMubGVuZ3RoS25vd24pe3RoaXMuY2FjaGVMZW5ndGgoKX1yZXR1cm4gdGhpcy5fY2h1bmtTaXplfSl9KTt2YXIgcHJvcGVydGllcz17aXNEZXZpY2U6ZmFsc2UsY29udGVudHM6bGF6eUFycmF5fX1lbHNle3ZhciBwcm9wZXJ0aWVzPXtpc0RldmljZTpmYWxzZSx1cmw6dXJsfX12YXIgbm9kZT1GUy5jcmVhdGVGaWxlKHBhcmVudCxuYW1lLHByb3BlcnRpZXMsY2FuUmVhZCxjYW5Xcml0ZSk7aWYocHJvcGVydGllcy5jb250ZW50cyl7bm9kZS5jb250ZW50cz1wcm9wZXJ0aWVzLmNvbnRlbnRzfWVsc2UgaWYocHJvcGVydGllcy51cmwpe25vZGUuY29udGVudHM9bnVsbDtub2RlLnVybD1wcm9wZXJ0aWVzLnVybH12YXIgc3RyZWFtX29wcz17fTt2YXIga2V5cz1PYmplY3Qua2V5cyhub2RlLnN0cmVhbV9vcHMpO2tleXMuZm9yRWFjaCgoZnVuY3Rpb24oa2V5KXt2YXIgZm49bm9kZS5zdHJlYW1fb3BzW2tleV07c3RyZWFtX29wc1trZXldPWZ1bmN0aW9uIGZvcmNlTG9hZExhenlGaWxlKCl7aWYoIUZTLmZvcmNlTG9hZEZpbGUobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyl9cmV0dXJuIGZuLmFwcGx5KG51bGwsYXJndW1lbnRzKX19KSk7c3RyZWFtX29wcy5yZWFkPWZ1bmN0aW9uIHN0cmVhbV9vcHNfcmVhZChzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe2lmKCFGUy5mb3JjZUxvYWRGaWxlKG5vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfXZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50cztpZihwb3NpdGlvbj49Y29udGVudHMubGVuZ3RoKXJldHVybiAwO3ZhciBzaXplPU1hdGgubWluKGNvbnRlbnRzLmxlbmd0aC1wb3NpdGlvbixsZW5ndGgpO2Fzc2VydChzaXplPj0wKTtpZihjb250ZW50cy5zbGljZSl7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXX19ZWxzZXtmb3IodmFyIGk9MDtpPHNpemU7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPWNvbnRlbnRzLmdldChwb3NpdGlvbitpKX19cmV0dXJuIHNpemV9O25vZGUuc3RyZWFtX29wcz1zdHJlYW1fb3BzO3JldHVybiBub2RlfSksY3JlYXRlUHJlbG9hZGVkRmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUsb25sb2FkLG9uZXJyb3IsZG9udENyZWF0ZUZpbGUsY2FuT3duKXtCcm93c2VyLmluaXQoKTt2YXIgZnVsbG5hbWU9bmFtZT9QQVRILnJlc29sdmUoUEFUSC5qb2luMihwYXJlbnQsbmFtZSkpOnBhcmVudDtmdW5jdGlvbiBwcm9jZXNzRGF0YShieXRlQXJyYXkpe2Z1bmN0aW9uIGZpbmlzaChieXRlQXJyYXkpe2lmKCFkb250Q3JlYXRlRmlsZSl7RlMuY3JlYXRlRGF0YUZpbGUocGFyZW50LG5hbWUsYnl0ZUFycmF5LGNhblJlYWQsY2FuV3JpdGUsY2FuT3duKX1pZihvbmxvYWQpb25sb2FkKCk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgiY3AgIitmdWxsbmFtZSl9dmFyIGhhbmRsZWQ9ZmFsc2U7TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLmZvckVhY2goKGZ1bmN0aW9uKHBsdWdpbil7aWYoaGFuZGxlZClyZXR1cm47aWYocGx1Z2luWyJjYW5IYW5kbGUiXShmdWxsbmFtZSkpe3BsdWdpblsiaGFuZGxlIl0oYnl0ZUFycmF5LGZ1bGxuYW1lLGZpbmlzaCwoZnVuY3Rpb24oKXtpZihvbmVycm9yKW9uZXJyb3IoKTtyZW1vdmVSdW5EZXBlbmRlbmN5KCJjcCAiK2Z1bGxuYW1lKX0pKTtoYW5kbGVkPXRydWV9fSkpO2lmKCFoYW5kbGVkKWZpbmlzaChieXRlQXJyYXkpfWFkZFJ1bkRlcGVuZGVuY3koImNwICIrZnVsbG5hbWUpO2lmKHR5cGVvZiB1cmw9PSJzdHJpbmciKXtCcm93c2VyLmFzeW5jTG9hZCh1cmwsKGZ1bmN0aW9uKGJ5dGVBcnJheSl7cHJvY2Vzc0RhdGEoYnl0ZUFycmF5KX0pLG9uZXJyb3IpfWVsc2V7cHJvY2Vzc0RhdGEodXJsKX19KSxpbmRleGVkREI6KGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5pbmRleGVkREJ8fHdpbmRvdy5tb3pJbmRleGVkREJ8fHdpbmRvdy53ZWJraXRJbmRleGVkREJ8fHdpbmRvdy5tc0luZGV4ZWREQn0pLERCX05BTUU6KGZ1bmN0aW9uKCl7cmV0dXJuIkVNX0ZTXyIrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSksREJfVkVSU0lPTjoyMCxEQl9TVE9SRV9OQU1FOiJGSUxFX0RBVEEiLHNhdmVGaWxlc1RvREI6KGZ1bmN0aW9uKHBhdGhzLG9ubG9hZCxvbmVycm9yKXtvbmxvYWQ9b25sb2FkfHwoZnVuY3Rpb24oKXt9KTtvbmVycm9yPW9uZXJyb3J8fChmdW5jdGlvbigpe30pO3ZhciBpbmRleGVkREI9RlMuaW5kZXhlZERCKCk7dHJ5e3ZhciBvcGVuUmVxdWVzdD1pbmRleGVkREIub3BlbihGUy5EQl9OQU1FKCksRlMuREJfVkVSU0lPTil9Y2F0Y2goZSl7cmV0dXJuIG9uZXJyb3IoZSl9b3BlblJlcXVlc3Qub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uIG9wZW5SZXF1ZXN0X29udXBncmFkZW5lZWRlZCgpe2NvbnNvbGUubG9nKCJjcmVhdGluZyBkYiIpO3ZhciBkYj1vcGVuUmVxdWVzdC5yZXN1bHQ7ZGIuY3JlYXRlT2JqZWN0U3RvcmUoRlMuREJfU1RPUkVfTkFNRSl9O29wZW5SZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3MoKXt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3ZhciB0cmFuc2FjdGlvbj1kYi50cmFuc2FjdGlvbihbRlMuREJfU1RPUkVfTkFNRV0sInJlYWR3cml0ZSIpO3ZhciBmaWxlcz10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTt2YXIgb2s9MCxmYWlsPTAsdG90YWw9cGF0aHMubGVuZ3RoO2Z1bmN0aW9uIGZpbmlzaCgpe2lmKGZhaWw9PTApb25sb2FkKCk7ZWxzZSBvbmVycm9yKCl9cGF0aHMuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCl7dmFyIHB1dFJlcXVlc3Q9ZmlsZXMucHV0KEZTLmFuYWx5emVQYXRoKHBhdGgpLm9iamVjdC5jb250ZW50cyxwYXRoKTtwdXRSZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBwdXRSZXF1ZXN0X29uc3VjY2Vzcygpe29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9O3B1dFJlcXVlc3Qub25lcnJvcj1mdW5jdGlvbiBwdXRSZXF1ZXN0X29uZXJyb3IoKXtmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9fSkpO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcn07b3BlblJlcXVlc3Qub25lcnJvcj1vbmVycm9yfSksbG9hZEZpbGVzRnJvbURCOihmdW5jdGlvbihwYXRocyxvbmxvYWQsb25lcnJvcil7b25sb2FkPW9ubG9hZHx8KGZ1bmN0aW9uKCl7fSk7b25lcnJvcj1vbmVycm9yfHwoZnVuY3Rpb24oKXt9KTt2YXIgaW5kZXhlZERCPUZTLmluZGV4ZWREQigpO3RyeXt2YXIgb3BlblJlcXVlc3Q9aW5kZXhlZERCLm9wZW4oRlMuREJfTkFNRSgpLEZTLkRCX1ZFUlNJT04pfWNhdGNoKGUpe3JldHVybiBvbmVycm9yKGUpfW9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZD1vbmVycm9yO29wZW5SZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3MoKXt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3RyeXt2YXIgdHJhbnNhY3Rpb249ZGIudHJhbnNhY3Rpb24oW0ZTLkRCX1NUT1JFX05BTUVdLCJyZWFkb25seSIpfWNhdGNoKGUpe29uZXJyb3IoZSk7cmV0dXJufXZhciBmaWxlcz10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTt2YXIgb2s9MCxmYWlsPTAsdG90YWw9cGF0aHMubGVuZ3RoO2Z1bmN0aW9uIGZpbmlzaCgpe2lmKGZhaWw9PTApb25sb2FkKCk7ZWxzZSBvbmVycm9yKCl9cGF0aHMuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCl7dmFyIGdldFJlcXVlc3Q9ZmlsZXMuZ2V0KHBhdGgpO2dldFJlcXVlc3Qub25zdWNjZXNzPWZ1bmN0aW9uIGdldFJlcXVlc3Rfb25zdWNjZXNzKCl7aWYoRlMuYW5hbHl6ZVBhdGgocGF0aCkuZXhpc3RzKXtGUy51bmxpbmsocGF0aCl9RlMuY3JlYXRlRGF0YUZpbGUoUEFUSC5kaXJuYW1lKHBhdGgpLFBBVEguYmFzZW5hbWUocGF0aCksZ2V0UmVxdWVzdC5yZXN1bHQsdHJ1ZSx0cnVlLHRydWUpO29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9O2dldFJlcXVlc3Qub25lcnJvcj1mdW5jdGlvbiBnZXRSZXF1ZXN0X29uZXJyb3IoKXtmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9fSkpO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcn07b3BlblJlcXVlc3Qub25lcnJvcj1vbmVycm9yfSl9O2Z1bmN0aW9uIF9mZmx1c2goc3RyZWFtKXt9TW9kdWxlWyJfc3RybGVuIl09X3N0cmxlbjtmdW5jdGlvbiBfX3JlYWxseU5lZ2F0aXZlKHgpe3JldHVybiB4PDB8fHg9PT0wJiYxL3g9PT0tSW5maW5pdHl9ZnVuY3Rpb24gX19mb3JtYXRTdHJpbmcoZm9ybWF0LHZhcmFyZ3Mpe3ZhciB0ZXh0SW5kZXg9Zm9ybWF0O3ZhciBhcmdJbmRleD0wO2Z1bmN0aW9uIGdldE5leHRBcmcodHlwZSl7dmFyIHJldDtpZih0eXBlPT09ImRvdWJsZSIpe3JldD0oSEVBUDMyW3RlbXBEb3VibGVQdHI+PjJdPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXSxIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1IRUFQMzJbdmFyYXJncysoYXJnSW5kZXgrNCk+PjJdLCtIRUFQRjY0W3RlbXBEb3VibGVQdHI+PjNdKX1lbHNlIGlmKHR5cGU9PSJpNjQiKXtyZXQ9W0hFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXSxIRUFQMzJbdmFyYXJncysoYXJnSW5kZXgrNCk+PjJdXX1lbHNle3R5cGU9ImkzMiI7cmV0PUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXX1hcmdJbmRleCs9UnVudGltZS5nZXROYXRpdmVGaWVsZFNpemUodHlwZSk7cmV0dXJuIHJldH12YXIgcmV0PVtdO3ZhciBjdXJyLG5leHQsY3VyckFyZzt3aGlsZSgxKXt2YXIgc3RhcnRUZXh0SW5kZXg9dGV4dEluZGV4O2N1cnI9SEVBUDhbdGV4dEluZGV4Pj4wXTtpZihjdXJyPT09MClicmVhaztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtpZihjdXJyPT0zNyl7dmFyIGZsYWdBbHdheXNTaWduZWQ9ZmFsc2U7dmFyIGZsYWdMZWZ0QWxpZ249ZmFsc2U7dmFyIGZsYWdBbHRlcm5hdGl2ZT1mYWxzZTt2YXIgZmxhZ1plcm9QYWQ9ZmFsc2U7dmFyIGZsYWdQYWRTaWduPWZhbHNlO2ZsYWdzTG9vcDp3aGlsZSgxKXtzd2l0Y2gobmV4dCl7Y2FzZSA0MzpmbGFnQWx3YXlzU2lnbmVkPXRydWU7YnJlYWs7Y2FzZSA0NTpmbGFnTGVmdEFsaWduPXRydWU7YnJlYWs7Y2FzZSAzNTpmbGFnQWx0ZXJuYXRpdmU9dHJ1ZTticmVhaztjYXNlIDQ4OmlmKGZsYWdaZXJvUGFkKXticmVhayBmbGFnc0xvb3B9ZWxzZXtmbGFnWmVyb1BhZD10cnVlO2JyZWFrfTtjYXNlIDMyOmZsYWdQYWRTaWduPXRydWU7YnJlYWs7ZGVmYXVsdDpicmVhayBmbGFnc0xvb3B9dGV4dEluZGV4Kys7bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19dmFyIHdpZHRoPTA7aWYobmV4dD09NDIpe3dpZHRoPWdldE5leHRBcmcoImkzMiIpO3RleHRJbmRleCsrO25leHQ9SEVBUDhbdGV4dEluZGV4KzE+PjBdfWVsc2V7d2hpbGUobmV4dD49NDgmJm5leHQ8PTU3KXt3aWR0aD13aWR0aCoxMCsobmV4dC00OCk7dGV4dEluZGV4Kys7bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19fXZhciBwcmVjaXNpb25TZXQ9ZmFsc2UscHJlY2lzaW9uPS0xO2lmKG5leHQ9PTQ2KXtwcmVjaXNpb249MDtwcmVjaXNpb25TZXQ9dHJ1ZTt0ZXh0SW5kZXgrKztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtpZihuZXh0PT00Mil7cHJlY2lzaW9uPWdldE5leHRBcmcoImkzMiIpO3RleHRJbmRleCsrfWVsc2V7d2hpbGUoMSl7dmFyIHByZWNpc2lvbkNocj1IRUFQOFt0ZXh0SW5kZXgrMT4+MF07aWYocHJlY2lzaW9uQ2hyPDQ4fHxwcmVjaXNpb25DaHI+NTcpYnJlYWs7cHJlY2lzaW9uPXByZWNpc2lvbioxMCsocHJlY2lzaW9uQ2hyLTQ4KTt0ZXh0SW5kZXgrK319bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19aWYocHJlY2lzaW9uPDApe3ByZWNpc2lvbj02O3ByZWNpc2lvblNldD1mYWxzZX12YXIgYXJnU2l6ZTtzd2l0Y2goU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0KSl7Y2FzZSJoIjp2YXIgbmV4dE5leHQ9SEVBUDhbdGV4dEluZGV4KzI+PjBdO2lmKG5leHROZXh0PT0xMDQpe3RleHRJbmRleCsrO2FyZ1NpemU9MX1lbHNle2FyZ1NpemU9Mn1icmVhaztjYXNlImwiOnZhciBuZXh0TmV4dD1IRUFQOFt0ZXh0SW5kZXgrMj4+MF07aWYobmV4dE5leHQ9PTEwOCl7dGV4dEluZGV4Kys7YXJnU2l6ZT04fWVsc2V7YXJnU2l6ZT00fWJyZWFrO2Nhc2UiTCI6Y2FzZSJxIjpjYXNlImoiOmFyZ1NpemU9ODticmVhaztjYXNlInoiOmNhc2UidCI6Y2FzZSJJIjphcmdTaXplPTQ7YnJlYWs7ZGVmYXVsdDphcmdTaXplPW51bGx9aWYoYXJnU2l6ZSl0ZXh0SW5kZXgrKztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtzd2l0Y2goU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0KSl7Y2FzZSJkIjpjYXNlImkiOmNhc2UidSI6Y2FzZSJvIjpjYXNlIngiOmNhc2UiWCI6Y2FzZSJwIjp7dmFyIHNpZ25lZD1uZXh0PT0xMDB8fG5leHQ9PTEwNTthcmdTaXplPWFyZ1NpemV8fDQ7dmFyIGN1cnJBcmc9Z2V0TmV4dEFyZygiaSIrYXJnU2l6ZSo4KTt2YXIgb3JpZ0FyZz1jdXJyQXJnO3ZhciBhcmdUZXh0O2lmKGFyZ1NpemU9PTgpe2N1cnJBcmc9UnVudGltZS5tYWtlQmlnSW50KGN1cnJBcmdbMF0sY3VyckFyZ1sxXSxuZXh0PT0xMTcpfWlmKGFyZ1NpemU8PTQpe3ZhciBsaW1pdD1NYXRoLnBvdygyNTYsYXJnU2l6ZSktMTtjdXJyQXJnPShzaWduZWQ/cmVTaWduOnVuU2lnbikoY3VyckFyZyZsaW1pdCxhcmdTaXplKjgpfXZhciBjdXJyQWJzQXJnPU1hdGguYWJzKGN1cnJBcmcpO3ZhciBwcmVmaXg9IiI7aWYobmV4dD09MTAwfHxuZXh0PT0xMDUpe2lmKGFyZ1NpemU9PTgmJmk2NE1hdGgpYXJnVGV4dD1pNjRNYXRoLnN0cmluZ2lmeShvcmlnQXJnWzBdLG9yaWdBcmdbMV0sbnVsbCk7ZWxzZSBhcmdUZXh0PXJlU2lnbihjdXJyQXJnLDgqYXJnU2l6ZSwxKS50b1N0cmluZygxMCl9ZWxzZSBpZihuZXh0PT0xMTcpe2lmKGFyZ1NpemU9PTgmJmk2NE1hdGgpYXJnVGV4dD1pNjRNYXRoLnN0cmluZ2lmeShvcmlnQXJnWzBdLG9yaWdBcmdbMV0sdHJ1ZSk7ZWxzZSBhcmdUZXh0PXVuU2lnbihjdXJyQXJnLDgqYXJnU2l6ZSwxKS50b1N0cmluZygxMCk7Y3VyckFyZz1NYXRoLmFicyhjdXJyQXJnKX1lbHNlIGlmKG5leHQ9PTExMSl7YXJnVGV4dD0oZmxhZ0FsdGVybmF0aXZlPyIwIjoiIikrY3VyckFic0FyZy50b1N0cmluZyg4KX1lbHNlIGlmKG5leHQ9PTEyMHx8bmV4dD09ODgpe3ByZWZpeD1mbGFnQWx0ZXJuYXRpdmUmJmN1cnJBcmchPTA/IjB4IjoiIjtpZihhcmdTaXplPT04JiZpNjRNYXRoKXtpZihvcmlnQXJnWzFdKXthcmdUZXh0PShvcmlnQXJnWzFdPj4+MCkudG9TdHJpbmcoMTYpO3ZhciBsb3dlcj0ob3JpZ0FyZ1swXT4+PjApLnRvU3RyaW5nKDE2KTt3aGlsZShsb3dlci5sZW5ndGg8OClsb3dlcj0iMCIrbG93ZXI7YXJnVGV4dCs9bG93ZXJ9ZWxzZXthcmdUZXh0PShvcmlnQXJnWzBdPj4+MCkudG9TdHJpbmcoMTYpfX1lbHNlIGlmKGN1cnJBcmc8MCl7Y3VyckFyZz0tY3VyckFyZzthcmdUZXh0PShjdXJyQWJzQXJnLTEpLnRvU3RyaW5nKDE2KTt2YXIgYnVmZmVyPVtdO2Zvcih2YXIgaT0wO2k8YXJnVGV4dC5sZW5ndGg7aSsrKXtidWZmZXIucHVzaCgoMTUtcGFyc2VJbnQoYXJnVGV4dFtpXSwxNikpLnRvU3RyaW5nKDE2KSl9YXJnVGV4dD1idWZmZXIuam9pbigiIik7d2hpbGUoYXJnVGV4dC5sZW5ndGg8YXJnU2l6ZSoyKWFyZ1RleHQ9ImYiK2FyZ1RleHR9ZWxzZXthcmdUZXh0PWN1cnJBYnNBcmcudG9TdHJpbmcoMTYpfWlmKG5leHQ9PTg4KXtwcmVmaXg9cHJlZml4LnRvVXBwZXJDYXNlKCk7YXJnVGV4dD1hcmdUZXh0LnRvVXBwZXJDYXNlKCl9fWVsc2UgaWYobmV4dD09MTEyKXtpZihjdXJyQWJzQXJnPT09MCl7YXJnVGV4dD0iKG5pbCkifWVsc2V7cHJlZml4PSIweCI7YXJnVGV4dD1jdXJyQWJzQXJnLnRvU3RyaW5nKDE2KX19aWYocHJlY2lzaW9uU2V0KXt3aGlsZShhcmdUZXh0Lmxlbmd0aDxwcmVjaXNpb24pe2FyZ1RleHQ9IjAiK2FyZ1RleHR9fWlmKGN1cnJBcmc+PTApe2lmKGZsYWdBbHdheXNTaWduZWQpe3ByZWZpeD0iKyIrcHJlZml4fWVsc2UgaWYoZmxhZ1BhZFNpZ24pe3ByZWZpeD0iICIrcHJlZml4fX1pZihhcmdUZXh0LmNoYXJBdCgwKT09Ii0iKXtwcmVmaXg9Ii0iK3ByZWZpeDthcmdUZXh0PWFyZ1RleHQuc3Vic3RyKDEpfXdoaWxlKHByZWZpeC5sZW5ndGgrYXJnVGV4dC5sZW5ndGg8d2lkdGgpe2lmKGZsYWdMZWZ0QWxpZ24pe2FyZ1RleHQrPSIgIn1lbHNle2lmKGZsYWdaZXJvUGFkKXthcmdUZXh0PSIwIithcmdUZXh0fWVsc2V7cHJlZml4PSIgIitwcmVmaXh9fX1hcmdUZXh0PXByZWZpeCthcmdUZXh0O2FyZ1RleHQuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKGNocil7cmV0LnB1c2goY2hyLmNoYXJDb2RlQXQoMCkpfSkpO2JyZWFrfTtjYXNlImYiOmNhc2UiRiI6Y2FzZSJlIjpjYXNlIkUiOmNhc2UiZyI6Y2FzZSJHIjp7dmFyIGN1cnJBcmc9Z2V0TmV4dEFyZygiZG91YmxlIik7dmFyIGFyZ1RleHQ7aWYoaXNOYU4oY3VyckFyZykpe2FyZ1RleHQ9Im5hbiI7ZmxhZ1plcm9QYWQ9ZmFsc2V9ZWxzZSBpZighaXNGaW5pdGUoY3VyckFyZykpe2FyZ1RleHQ9KGN1cnJBcmc8MD8iLSI6IiIpKyJpbmYiO2ZsYWdaZXJvUGFkPWZhbHNlfWVsc2V7dmFyIGlzR2VuZXJhbD1mYWxzZTt2YXIgZWZmZWN0aXZlUHJlY2lzaW9uPU1hdGgubWluKHByZWNpc2lvbiwyMCk7aWYobmV4dD09MTAzfHxuZXh0PT03MSl7aXNHZW5lcmFsPXRydWU7cHJlY2lzaW9uPXByZWNpc2lvbnx8MTt2YXIgZXhwb25lbnQ9cGFyc2VJbnQoY3VyckFyZy50b0V4cG9uZW50aWFsKGVmZmVjdGl2ZVByZWNpc2lvbikuc3BsaXQoImUiKVsxXSwxMCk7aWYocHJlY2lzaW9uPmV4cG9uZW50JiZleHBvbmVudD49LTQpe25leHQ9KG5leHQ9PTEwMz8iZiI6IkYiKS5jaGFyQ29kZUF0KDApO3ByZWNpc2lvbi09ZXhwb25lbnQrMX1lbHNle25leHQ9KG5leHQ9PTEwMz8iZSI6IkUiKS5jaGFyQ29kZUF0KDApO3ByZWNpc2lvbi0tfWVmZmVjdGl2ZVByZWNpc2lvbj1NYXRoLm1pbihwcmVjaXNpb24sMjApfWlmKG5leHQ9PTEwMXx8bmV4dD09Njkpe2FyZ1RleHQ9Y3VyckFyZy50b0V4cG9uZW50aWFsKGVmZmVjdGl2ZVByZWNpc2lvbik7aWYoL1tlRV1bLStdXGQkLy50ZXN0KGFyZ1RleHQpKXthcmdUZXh0PWFyZ1RleHQuc2xpY2UoMCwtMSkrIjAiK2FyZ1RleHQuc2xpY2UoLTEpfX1lbHNlIGlmKG5leHQ9PTEwMnx8bmV4dD09NzApe2FyZ1RleHQ9Y3VyckFyZy50b0ZpeGVkKGVmZmVjdGl2ZVByZWNpc2lvbik7aWYoY3VyckFyZz09PTAmJl9fcmVhbGx5TmVnYXRpdmUoY3VyckFyZykpe2FyZ1RleHQ9Ii0iK2FyZ1RleHR9fXZhciBwYXJ0cz1hcmdUZXh0LnNwbGl0KCJlIik7aWYoaXNHZW5lcmFsJiYhZmxhZ0FsdGVybmF0aXZlKXt3aGlsZShwYXJ0c1swXS5sZW5ndGg+MSYmcGFydHNbMF0uaW5kZXhPZigiLiIpIT0tMSYmKHBhcnRzWzBdLnNsaWNlKC0xKT09IjAifHxwYXJ0c1swXS5zbGljZSgtMSk9PSIuIikpe3BhcnRzWzBdPXBhcnRzWzBdLnNsaWNlKDAsLTEpfX1lbHNle2lmKGZsYWdBbHRlcm5hdGl2ZSYmYXJnVGV4dC5pbmRleE9mKCIuIik9PS0xKXBhcnRzWzBdKz0iLiI7d2hpbGUocHJlY2lzaW9uPmVmZmVjdGl2ZVByZWNpc2lvbisrKXBhcnRzWzBdKz0iMCJ9YXJnVGV4dD1wYXJ0c1swXSsocGFydHMubGVuZ3RoPjE/ImUiK3BhcnRzWzFdOiIiKTtpZihuZXh0PT02OSlhcmdUZXh0PWFyZ1RleHQudG9VcHBlckNhc2UoKTtpZihjdXJyQXJnPj0wKXtpZihmbGFnQWx3YXlzU2lnbmVkKXthcmdUZXh0PSIrIithcmdUZXh0fWVsc2UgaWYoZmxhZ1BhZFNpZ24pe2FyZ1RleHQ9IiAiK2FyZ1RleHR9fX13aGlsZShhcmdUZXh0Lmxlbmd0aDx3aWR0aCl7aWYoZmxhZ0xlZnRBbGlnbil7YXJnVGV4dCs9IiAifWVsc2V7aWYoZmxhZ1plcm9QYWQmJihhcmdUZXh0WzBdPT0iLSJ8fGFyZ1RleHRbMF09PSIrIikpe2FyZ1RleHQ9YXJnVGV4dFswXSsiMCIrYXJnVGV4dC5zbGljZSgxKX1lbHNle2FyZ1RleHQ9KGZsYWdaZXJvUGFkPyIwIjoiICIpK2FyZ1RleHR9fX1pZihuZXh0PDk3KWFyZ1RleHQ9YXJnVGV4dC50b1VwcGVyQ2FzZSgpO2FyZ1RleHQuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKGNocil7cmV0LnB1c2goY2hyLmNoYXJDb2RlQXQoMCkpfSkpO2JyZWFrfTtjYXNlInMiOnt2YXIgYXJnPWdldE5leHRBcmcoImk4KiIpO3ZhciBhcmdMZW5ndGg9YXJnP19zdHJsZW4oYXJnKToiKG51bGwpIi5sZW5ndGg7aWYocHJlY2lzaW9uU2V0KWFyZ0xlbmd0aD1NYXRoLm1pbihhcmdMZW5ndGgscHJlY2lzaW9uKTtpZighZmxhZ0xlZnRBbGlnbil7d2hpbGUoYXJnTGVuZ3RoPHdpZHRoLS0pe3JldC5wdXNoKDMyKX19aWYoYXJnKXtmb3IodmFyIGk9MDtpPGFyZ0xlbmd0aDtpKyspe3JldC5wdXNoKEhFQVBVOFthcmcrKz4+MF0pfX1lbHNle3JldD1yZXQuY29uY2F0KGludEFycmF5RnJvbVN0cmluZygiKG51bGwpIi5zdWJzdHIoMCxhcmdMZW5ndGgpLHRydWUpKX1pZihmbGFnTGVmdEFsaWduKXt3aGlsZShhcmdMZW5ndGg8d2lkdGgtLSl7cmV0LnB1c2goMzIpfX1icmVha307Y2FzZSJjIjp7aWYoZmxhZ0xlZnRBbGlnbilyZXQucHVzaChnZXROZXh0QXJnKCJpOCIpKTt3aGlsZSgtLXdpZHRoPjApe3JldC5wdXNoKDMyKX1pZighZmxhZ0xlZnRBbGlnbilyZXQucHVzaChnZXROZXh0QXJnKCJpOCIpKTticmVha307Y2FzZSJuIjp7dmFyIHB0cj1nZXROZXh0QXJnKCJpMzIqIik7SEVBUDMyW3B0cj4+Ml09cmV0Lmxlbmd0aDticmVha307Y2FzZSIlIjp7cmV0LnB1c2goY3Vycik7YnJlYWt9O2RlZmF1bHQ6e2Zvcih2YXIgaT1zdGFydFRleHRJbmRleDtpPHRleHRJbmRleCsyO2krKyl7cmV0LnB1c2goSEVBUDhbaT4+MF0pfX19dGV4dEluZGV4Kz0yfWVsc2V7cmV0LnB1c2goY3Vycik7dGV4dEluZGV4Kz0xfX1yZXR1cm4gcmV0fWZ1bmN0aW9uIF9tYWxsb2MoYnl0ZXMpe3ZhciBwdHI9UnVudGltZS5keW5hbWljQWxsb2MoYnl0ZXMrOCk7cmV0dXJuIHB0cis4JjQyOTQ5NjcyODh9TW9kdWxlWyJfbWFsbG9jIl09X21hbGxvYztmdW5jdGlvbiBfc25wcmludGYocyxuLGZvcm1hdCx2YXJhcmdzKXt2YXIgcmVzdWx0PV9fZm9ybWF0U3RyaW5nKGZvcm1hdCx2YXJhcmdzKTt2YXIgbGltaXQ9bj09PXVuZGVmaW5lZD9yZXN1bHQubGVuZ3RoOk1hdGgubWluKHJlc3VsdC5sZW5ndGgsTWF0aC5tYXgobi0xLDApKTtpZihzPDApe3M9LXM7dmFyIGJ1Zj1fbWFsbG9jKGxpbWl0KzEpO0hFQVAzMltzPj4yXT1idWY7cz1idWZ9Zm9yKHZhciBpPTA7aTxsaW1pdDtpKyspe0hFQVA4W3MraT4+MF09cmVzdWx0W2ldfWlmKGxpbWl0PG58fG49PT11bmRlZmluZWQpSEVBUDhbcytpPj4wXT0wO3JldHVybiByZXN1bHQubGVuZ3RofWZ1bmN0aW9uIF9ta3BvcnQoKXt0aHJvdyJUT0RPIn12YXIgU09DS0ZTPXttb3VudDooZnVuY3Rpb24obW91bnQpe3JldHVybiBGUy5jcmVhdGVOb2RlKG51bGwsIi8iLDE2Mzg0fDUxMSwwKX0pLGNyZWF0ZVNvY2tldDooZnVuY3Rpb24oZmFtaWx5LHR5cGUscHJvdG9jb2wpe3ZhciBzdHJlYW1pbmc9dHlwZT09MTtpZihwcm90b2NvbCl7YXNzZXJ0KHN0cmVhbWluZz09KHByb3RvY29sPT02KSl9dmFyIHNvY2s9e2ZhbWlseTpmYW1pbHksdHlwZTp0eXBlLHByb3RvY29sOnByb3RvY29sLHNlcnZlcjpudWxsLHBlZXJzOnt9LHBlbmRpbmc6W10scmVjdl9xdWV1ZTpbXSxzb2NrX29wczpTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzfTt2YXIgbmFtZT1TT0NLRlMubmV4dG5hbWUoKTt2YXIgbm9kZT1GUy5jcmVhdGVOb2RlKFNPQ0tGUy5yb290LG5hbWUsNDkxNTIsMCk7bm9kZS5zb2NrPXNvY2s7dmFyIHN0cmVhbT1GUy5jcmVhdGVTdHJlYW0oe3BhdGg6bmFtZSxub2RlOm5vZGUsZmxhZ3M6RlMubW9kZVN0cmluZ1RvRmxhZ3MoInIrIiksc2Vla2FibGU6ZmFsc2Usc3RyZWFtX29wczpTT0NLRlMuc3RyZWFtX29wc30pO3NvY2suc3RyZWFtPXN0cmVhbTtyZXR1cm4gc29ja30pLGdldFNvY2tldDooZnVuY3Rpb24oZmQpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZkKTtpZighc3RyZWFtfHwhRlMuaXNTb2NrZXQoc3RyZWFtLm5vZGUubW9kZSkpe3JldHVybiBudWxsfXJldHVybiBzdHJlYW0ubm9kZS5zb2NrfSksc3RyZWFtX29wczp7cG9sbDooZnVuY3Rpb24oc3RyZWFtKXt2YXIgc29jaz1zdHJlYW0ubm9kZS5zb2NrO3JldHVybiBzb2NrLnNvY2tfb3BzLnBvbGwoc29jayl9KSxpb2N0bDooZnVuY3Rpb24oc3RyZWFtLHJlcXVlc3QsdmFyYXJncyl7dmFyIHNvY2s9c3RyZWFtLm5vZGUuc29jaztyZXR1cm4gc29jay5zb2NrX29wcy5pb2N0bChzb2NrLHJlcXVlc3QsdmFyYXJncyl9KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7dmFyIG1zZz1zb2NrLnNvY2tfb3BzLnJlY3Ztc2coc29jayxsZW5ndGgpO2lmKCFtc2cpe3JldHVybiAwfWJ1ZmZlci5zZXQobXNnLmJ1ZmZlcixvZmZzZXQpO3JldHVybiBtc2cuYnVmZmVyLmxlbmd0aH0pLHdyaXRlOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7cmV0dXJuIHNvY2suc29ja19vcHMuc2VuZG1zZyhzb2NrLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoKX0pLGNsb3NlOihmdW5jdGlvbihzdHJlYW0pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7c29jay5zb2NrX29wcy5jbG9zZShzb2NrKX0pfSxuZXh0bmFtZTooZnVuY3Rpb24oKXtpZighU09DS0ZTLm5leHRuYW1lLmN1cnJlbnQpe1NPQ0tGUy5uZXh0bmFtZS5jdXJyZW50PTB9cmV0dXJuInNvY2tldFsiK1NPQ0tGUy5uZXh0bmFtZS5jdXJyZW50KysgKyJdIn0pLHdlYnNvY2tldF9zb2NrX29wczp7Y3JlYXRlUGVlcjooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe3ZhciB3cztpZih0eXBlb2YgYWRkcj09PSJvYmplY3QiKXt3cz1hZGRyO2FkZHI9bnVsbDtwb3J0PW51bGx9aWYod3Mpe2lmKHdzLl9zb2NrZXQpe2FkZHI9d3MuX3NvY2tldC5yZW1vdGVBZGRyZXNzO3BvcnQ9d3MuX3NvY2tldC5yZW1vdGVQb3J0fWVsc2V7dmFyIHJlc3VsdD0vd3Nbc10/OlwvXC8oW146XSspOihcZCspLy5leGVjKHdzLnVybCk7aWYoIXJlc3VsdCl7dGhyb3cgbmV3IEVycm9yKCJXZWJTb2NrZXQgVVJMIG11c3QgYmUgaW4gdGhlIGZvcm1hdCB3cyhzKTovL2FkZHJlc3M6cG9ydCIpfWFkZHI9cmVzdWx0WzFdO3BvcnQ9cGFyc2VJbnQocmVzdWx0WzJdLDEwKX19ZWxzZXt0cnl7dmFyIHJ1bnRpbWVDb25maWc9TW9kdWxlWyJ3ZWJzb2NrZXQiXSYmIm9iamVjdCI9PT10eXBlb2YgTW9kdWxlWyJ3ZWJzb2NrZXQiXTt2YXIgdXJsPSJ3czojIi5yZXBsYWNlKCIjIiwiLy8iKTtpZihydW50aW1lQ29uZmlnKXtpZigic3RyaW5nIj09PXR5cGVvZiBNb2R1bGVbIndlYnNvY2tldCJdWyJ1cmwiXSl7dXJsPU1vZHVsZVsid2Vic29ja2V0Il1bInVybCJdfX1pZih1cmw9PT0id3M6Ly8ifHx1cmw9PT0id3NzOi8vIil7dXJsPXVybCthZGRyKyI6Iitwb3J0fXZhciBzdWJQcm90b2NvbHM9ImJpbmFyeSI7aWYocnVudGltZUNvbmZpZyl7aWYoInN0cmluZyI9PT10eXBlb2YgTW9kdWxlWyJ3ZWJzb2NrZXQiXVsic3VicHJvdG9jb2wiXSl7c3ViUHJvdG9jb2xzPU1vZHVsZVsid2Vic29ja2V0Il1bInN1YnByb3RvY29sIl19fXN1YlByb3RvY29scz1zdWJQcm90b2NvbHMucmVwbGFjZSgvXiArfCArJC9nLCIiKS5zcGxpdCgvICosICovKTt2YXIgb3B0cz1FTlZJUk9OTUVOVF9JU19OT0RFP3sicHJvdG9jb2wiOnN1YlByb3RvY29scy50b1N0cmluZygpfTpzdWJQcm90b2NvbHM7dmFyIFdlYlNvY2tldD1FTlZJUk9OTUVOVF9JU19OT0RFP3JlcXVpcmUoIndzIik6d2luZG93WyJXZWJTb2NrZXQiXTt3cz1uZXcgV2ViU29ja2V0KHVybCxvcHRzKTt3cy5iaW5hcnlUeXBlPSJhcnJheWJ1ZmZlciJ9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUhPU1RVTlJFQUNIKX19dmFyIHBlZXI9e2FkZHI6YWRkcixwb3J0OnBvcnQsc29ja2V0OndzLGRncmFtX3NlbmRfcXVldWU6W119O1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuYWRkUGVlcihzb2NrLHBlZXIpO1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuaGFuZGxlUGVlckV2ZW50cyhzb2NrLHBlZXIpO2lmKHNvY2sudHlwZT09PTImJnR5cGVvZiBzb2NrLnNwb3J0IT09InVuZGVmaW5lZCIpe3BlZXIuZGdyYW1fc2VuZF9xdWV1ZS5wdXNoKG5ldyBVaW50OEFycmF5KFsyNTUsMjU1LDI1NSwyNTUsInAiLmNoYXJDb2RlQXQoMCksIm8iLmNoYXJDb2RlQXQoMCksInIiLmNoYXJDb2RlQXQoMCksInQiLmNoYXJDb2RlQXQoMCksKHNvY2suc3BvcnQmNjUyODApPj44LHNvY2suc3BvcnQmMjU1XSkpfXJldHVybiBwZWVyfSksZ2V0UGVlcjooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe3JldHVybiBzb2NrLnBlZXJzW2FkZHIrIjoiK3BvcnRdfSksYWRkUGVlcjooZnVuY3Rpb24oc29jayxwZWVyKXtzb2NrLnBlZXJzW3BlZXIuYWRkcisiOiIrcGVlci5wb3J0XT1wZWVyfSkscmVtb3ZlUGVlcjooZnVuY3Rpb24oc29jayxwZWVyKXtkZWxldGUgc29jay5wZWVyc1twZWVyLmFkZHIrIjoiK3BlZXIucG9ydF19KSxoYW5kbGVQZWVyRXZlbnRzOihmdW5jdGlvbihzb2NrLHBlZXIpe3ZhciBmaXJzdD10cnVlO3ZhciBoYW5kbGVPcGVuPShmdW5jdGlvbigpe3RyeXt2YXIgcXVldWVkPXBlZXIuZGdyYW1fc2VuZF9xdWV1ZS5zaGlmdCgpO3doaWxlKHF1ZXVlZCl7cGVlci5zb2NrZXQuc2VuZChxdWV1ZWQpO3F1ZXVlZD1wZWVyLmRncmFtX3NlbmRfcXVldWUuc2hpZnQoKX19Y2F0Y2goZSl7cGVlci5zb2NrZXQuY2xvc2UoKX19KTtmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKGRhdGEpe2Fzc2VydCh0eXBlb2YgZGF0YSE9PSJzdHJpbmciJiZkYXRhLmJ5dGVMZW5ndGghPT11bmRlZmluZWQpO2RhdGE9bmV3IFVpbnQ4QXJyYXkoZGF0YSk7dmFyIHdhc2ZpcnN0PWZpcnN0O2ZpcnN0PWZhbHNlO2lmKHdhc2ZpcnN0JiZkYXRhLmxlbmd0aD09PTEwJiZkYXRhWzBdPT09MjU1JiZkYXRhWzFdPT09MjU1JiZkYXRhWzJdPT09MjU1JiZkYXRhWzNdPT09MjU1JiZkYXRhWzRdPT09InAiLmNoYXJDb2RlQXQoMCkmJmRhdGFbNV09PT0ibyIuY2hhckNvZGVBdCgwKSYmZGF0YVs2XT09PSJyIi5jaGFyQ29kZUF0KDApJiZkYXRhWzddPT09InQiLmNoYXJDb2RlQXQoMCkpe3ZhciBuZXdwb3J0PWRhdGFbOF08PDh8ZGF0YVs5XTtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLnJlbW92ZVBlZXIoc29jayxwZWVyKTtwZWVyLnBvcnQ9bmV3cG9ydDtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmFkZFBlZXIoc29jayxwZWVyKTtyZXR1cm59c29jay5yZWN2X3F1ZXVlLnB1c2goe2FkZHI6cGVlci5hZGRyLHBvcnQ6cGVlci5wb3J0LGRhdGE6ZGF0YX0pfWlmKEVOVklST05NRU5UX0lTX05PREUpe3BlZXIuc29ja2V0Lm9uKCJvcGVuIixoYW5kbGVPcGVuKTtwZWVyLnNvY2tldC5vbigibWVzc2FnZSIsKGZ1bmN0aW9uKGRhdGEsZmxhZ3Mpe2lmKCFmbGFncy5iaW5hcnkpe3JldHVybn1oYW5kbGVNZXNzYWdlKChuZXcgVWludDhBcnJheShkYXRhKSkuYnVmZmVyKX0pKTtwZWVyLnNvY2tldC5vbigiZXJyb3IiLChmdW5jdGlvbigpe30pKX1lbHNle3BlZXIuc29ja2V0Lm9ub3Blbj1oYW5kbGVPcGVuO3BlZXIuc29ja2V0Lm9ubWVzc2FnZT1mdW5jdGlvbiBwZWVyX3NvY2tldF9vbm1lc3NhZ2UoZXZlbnQpe2hhbmRsZU1lc3NhZ2UoZXZlbnQuZGF0YSl9fX0pLHBvbGw6KGZ1bmN0aW9uKHNvY2spe2lmKHNvY2sudHlwZT09PTEmJnNvY2suc2VydmVyKXtyZXR1cm4gc29jay5wZW5kaW5nLmxlbmd0aD82NHwxOjB9dmFyIG1hc2s9MDt2YXIgZGVzdD1zb2NrLnR5cGU9PT0xP1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuZ2V0UGVlcihzb2NrLHNvY2suZGFkZHIsc29jay5kcG9ydCk6bnVsbDtpZihzb2NrLnJlY3ZfcXVldWUubGVuZ3RofHwhZGVzdHx8ZGVzdCYmZGVzdC5zb2NrZXQucmVhZHlTdGF0ZT09PWRlc3Quc29ja2V0LkNMT1NJTkd8fGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TRUQpe21hc2t8PTY0fDF9aWYoIWRlc3R8fGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5PUEVOKXttYXNrfD00fWlmKGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0JiZkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXttYXNrfD0xNn1yZXR1cm4gbWFza30pLGlvY3RsOihmdW5jdGlvbihzb2NrLHJlcXVlc3QsYXJnKXtzd2l0Y2gocmVxdWVzdCl7Y2FzZSAyMTUzMTp2YXIgYnl0ZXM9MDtpZihzb2NrLnJlY3ZfcXVldWUubGVuZ3RoKXtieXRlcz1zb2NrLnJlY3ZfcXVldWVbMF0uZGF0YS5sZW5ndGh9SEVBUDMyW2FyZz4+Ml09Ynl0ZXM7cmV0dXJuIDA7ZGVmYXVsdDpyZXR1cm4gRVJSTk9fQ09ERVMuRUlOVkFMfX0pLGNsb3NlOihmdW5jdGlvbihzb2NrKXtpZihzb2NrLnNlcnZlcil7dHJ5e3NvY2suc2VydmVyLmNsb3NlKCl9Y2F0Y2goZSl7fXNvY2suc2VydmVyPW51bGx9dmFyIHBlZXJzPU9iamVjdC5rZXlzKHNvY2sucGVlcnMpO2Zvcih2YXIgaT0wO2k8cGVlcnMubGVuZ3RoO2krKyl7dmFyIHBlZXI9c29jay5wZWVyc1twZWVyc1tpXV07dHJ5e3BlZXIuc29ja2V0LmNsb3NlKCl9Y2F0Y2goZSl7fVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMucmVtb3ZlUGVlcihzb2NrLHBlZXIpfXJldHVybiAwfSksYmluZDooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe2lmKHR5cGVvZiBzb2NrLnNhZGRyIT09InVuZGVmaW5lZCJ8fHR5cGVvZiBzb2NrLnNwb3J0IT09InVuZGVmaW5lZCIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9c29jay5zYWRkcj1hZGRyO3NvY2suc3BvcnQ9cG9ydHx8X21rcG9ydCgpO2lmKHNvY2sudHlwZT09PTIpe2lmKHNvY2suc2VydmVyKXtzb2NrLnNlcnZlci5jbG9zZSgpO3NvY2suc2VydmVyPW51bGx9dHJ5e3NvY2suc29ja19vcHMubGlzdGVuKHNvY2ssMCl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtpZihlLmVycm5vIT09RVJSTk9fQ09ERVMuRU9QTk9UU1VQUCl0aHJvdyBlfX19KSxjb25uZWN0OihmdW5jdGlvbihzb2NrLGFkZHIscG9ydCl7aWYoc29jay5zZXJ2ZXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPRFMuRU9QTk9UU1VQUCl9aWYodHlwZW9mIHNvY2suZGFkZHIhPT0idW5kZWZpbmVkIiYmdHlwZW9mIHNvY2suZHBvcnQhPT0idW5kZWZpbmVkIil7dmFyIGRlc3Q9U09DS0ZTLndlYnNvY2tldF9zb2NrX29wcy5nZXRQZWVyKHNvY2ssc29jay5kYWRkcixzb2NrLmRwb3J0KTtpZihkZXN0KXtpZihkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ09OTkVDVElORyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFMUkVBRFkpfWVsc2V7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTQ09OTil9fX12YXIgcGVlcj1TT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIoc29jayxhZGRyLHBvcnQpO3NvY2suZGFkZHI9cGVlci5hZGRyO3NvY2suZHBvcnQ9cGVlci5wb3J0O3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlBST0dSRVNTKX0pLGxpc3RlbjooZnVuY3Rpb24oc29jayxiYWNrbG9nKXtpZighRU5WSVJPTk1FTlRfSVNfTk9ERSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU9QTk9UU1VQUCl9aWYoc29jay5zZXJ2ZXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIFdlYlNvY2tldFNlcnZlcj1yZXF1aXJlKCJ3cyIpLlNlcnZlcjt2YXIgaG9zdD1zb2NrLnNhZGRyO3NvY2suc2VydmVyPW5ldyBXZWJTb2NrZXRTZXJ2ZXIoe2hvc3Q6aG9zdCxwb3J0OnNvY2suc3BvcnR9KTtzb2NrLnNlcnZlci5vbigiY29ubmVjdGlvbiIsKGZ1bmN0aW9uKHdzKXtpZihzb2NrLnR5cGU9PT0xKXt2YXIgbmV3c29jaz1TT0NLRlMuY3JlYXRlU29ja2V0KHNvY2suZmFtaWx5LHNvY2sudHlwZSxzb2NrLnByb3RvY29sKTt2YXIgcGVlcj1TT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIobmV3c29jayx3cyk7bmV3c29jay5kYWRkcj1wZWVyLmFkZHI7bmV3c29jay5kcG9ydD1wZWVyLnBvcnQ7c29jay5wZW5kaW5nLnB1c2gobmV3c29jayl9ZWxzZXtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIoc29jayx3cyl9fSkpO3NvY2suc2VydmVyLm9uKCJjbG9zZWQiLChmdW5jdGlvbigpe3NvY2suc2VydmVyPW51bGx9KSk7c29jay5zZXJ2ZXIub24oImVycm9yIiwoZnVuY3Rpb24oKXt9KSl9KSxhY2NlcHQ6KGZ1bmN0aW9uKGxpc3RlbnNvY2spe2lmKCFsaXN0ZW5zb2NrLnNlcnZlcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbmV3c29jaz1saXN0ZW5zb2NrLnBlbmRpbmcuc2hpZnQoKTtuZXdzb2NrLnN0cmVhbS5mbGFncz1saXN0ZW5zb2NrLnN0cmVhbS5mbGFncztyZXR1cm4gbmV3c29ja30pLGdldG5hbWU6KGZ1bmN0aW9uKHNvY2sscGVlcil7dmFyIGFkZHIscG9ydDtpZihwZWVyKXtpZihzb2NrLmRhZGRyPT09dW5kZWZpbmVkfHxzb2NrLmRwb3J0PT09dW5kZWZpbmVkKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9UQ09OTil9YWRkcj1zb2NrLmRhZGRyO3BvcnQ9c29jay5kcG9ydH1lbHNle2FkZHI9c29jay5zYWRkcnx8MDtwb3J0PXNvY2suc3BvcnR8fDB9cmV0dXJue2FkZHI6YWRkcixwb3J0OnBvcnR9fSksc2VuZG1zZzooZnVuY3Rpb24oc29jayxidWZmZXIsb2Zmc2V0LGxlbmd0aCxhZGRyLHBvcnQpe2lmKHNvY2sudHlwZT09PTIpe2lmKGFkZHI9PT11bmRlZmluZWR8fHBvcnQ9PT11bmRlZmluZWQpe2FkZHI9c29jay5kYWRkcjtwb3J0PXNvY2suZHBvcnR9aWYoYWRkcj09PXVuZGVmaW5lZHx8cG9ydD09PXVuZGVmaW5lZCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRURFU1RBRERSUkVRKX19ZWxzZXthZGRyPXNvY2suZGFkZHI7cG9ydD1zb2NrLmRwb3J0fXZhciBkZXN0PVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuZ2V0UGVlcihzb2NrLGFkZHIscG9ydCk7aWYoc29jay50eXBlPT09MSl7aWYoIWRlc3R8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9UQ09OTil9ZWxzZSBpZihkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ09OTkVDVElORyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX19dmFyIGRhdGE7aWYoYnVmZmVyIGluc3RhbmNlb2YgQXJyYXl8fGJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXtkYXRhPWJ1ZmZlci5zbGljZShvZmZzZXQsb2Zmc2V0K2xlbmd0aCl9ZWxzZXtkYXRhPWJ1ZmZlci5idWZmZXIuc2xpY2UoYnVmZmVyLmJ5dGVPZmZzZXQrb2Zmc2V0LGJ1ZmZlci5ieXRlT2Zmc2V0K29mZnNldCtsZW5ndGgpfWlmKHNvY2sudHlwZT09PTIpe2lmKCFkZXN0fHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlIT09ZGVzdC5zb2NrZXQuT1BFTil7aWYoIWRlc3R8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXtkZXN0PVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuY3JlYXRlUGVlcihzb2NrLGFkZHIscG9ydCl9ZGVzdC5kZ3JhbV9zZW5kX3F1ZXVlLnB1c2goZGF0YSk7cmV0dXJuIGxlbmd0aH19dHJ5e2Rlc3Quc29ja2V0LnNlbmQoZGF0YSk7cmV0dXJuIGxlbmd0aH1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfX0pLHJlY3Ztc2c6KGZ1bmN0aW9uKHNvY2ssbGVuZ3RoKXtpZihzb2NrLnR5cGU9PT0xJiZzb2NrLnNlcnZlcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVENPTk4pfXZhciBxdWV1ZWQ9c29jay5yZWN2X3F1ZXVlLnNoaWZ0KCk7aWYoIXF1ZXVlZCl7aWYoc29jay50eXBlPT09MSl7dmFyIGRlc3Q9U09DS0ZTLndlYnNvY2tldF9zb2NrX29wcy5nZXRQZWVyKHNvY2ssc29jay5kYWRkcixzb2NrLmRwb3J0KTtpZighZGVzdCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVENPTk4pfWVsc2UgaWYoZGVzdC5zb2NrZXQucmVhZHlTdGF0ZT09PWRlc3Quc29ja2V0LkNMT1NJTkd8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TRUQpe3JldHVybiBudWxsfWVsc2V7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX19ZWxzZXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4pfX12YXIgcXVldWVkTGVuZ3RoPXF1ZXVlZC5kYXRhLmJ5dGVMZW5ndGh8fHF1ZXVlZC5kYXRhLmxlbmd0aDt2YXIgcXVldWVkT2Zmc2V0PXF1ZXVlZC5kYXRhLmJ5dGVPZmZzZXR8fDA7dmFyIHF1ZXVlZEJ1ZmZlcj1xdWV1ZWQuZGF0YS5idWZmZXJ8fHF1ZXVlZC5kYXRhO3ZhciBieXRlc1JlYWQ9TWF0aC5taW4obGVuZ3RoLHF1ZXVlZExlbmd0aCk7dmFyIHJlcz17YnVmZmVyOm5ldyBVaW50OEFycmF5KHF1ZXVlZEJ1ZmZlcixxdWV1ZWRPZmZzZXQsYnl0ZXNSZWFkKSxhZGRyOnF1ZXVlZC5hZGRyLHBvcnQ6cXVldWVkLnBvcnR9O2lmKHNvY2sudHlwZT09PTEmJmJ5dGVzUmVhZDxxdWV1ZWRMZW5ndGgpe3ZhciBieXRlc1JlbWFpbmluZz1xdWV1ZWRMZW5ndGgtYnl0ZXNSZWFkO3F1ZXVlZC5kYXRhPW5ldyBVaW50OEFycmF5KHF1ZXVlZEJ1ZmZlcixxdWV1ZWRPZmZzZXQrYnl0ZXNSZWFkLGJ5dGVzUmVtYWluaW5nKTtzb2NrLnJlY3ZfcXVldWUudW5zaGlmdChxdWV1ZWQpfXJldHVybiByZXN9KX19O2Z1bmN0aW9uIF9zZW5kKGZkLGJ1ZixsZW4sZmxhZ3Mpe3ZhciBzb2NrPVNPQ0tGUy5nZXRTb2NrZXQoZmQpO2lmKCFzb2NrKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9cmV0dXJuIF93cml0ZShmZCxidWYsbGVuKX1mdW5jdGlvbiBfcHdyaXRlKGZpbGRlcyxidWYsbmJ5dGUsb2Zmc2V0KXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmaWxkZXMpO2lmKCFzdHJlYW0pe19fX3NldEVyck5vKEVSUk5PX0NPREVTLkVCQURGKTtyZXR1cm4tMX10cnl7dmFyIHNsYWI9SEVBUDg7cmV0dXJuIEZTLndyaXRlKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSxvZmZzZXQpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF93cml0ZShmaWxkZXMsYnVmLG5ieXRlKXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmaWxkZXMpO2lmKCFzdHJlYW0pe19fX3NldEVyck5vKEVSUk5PX0NPREVTLkVCQURGKTtyZXR1cm4tMX10cnl7dmFyIHNsYWI9SEVBUDg7cmV0dXJuIEZTLndyaXRlKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSl9Y2F0Y2goZSl7RlMuaGFuZGxlRlNFcnJvcihlKTtyZXR1cm4tMX19ZnVuY3Rpb24gX2ZpbGVubyhzdHJlYW0pe3N0cmVhbT1GUy5nZXRTdHJlYW1Gcm9tUHRyKHN0cmVhbSk7aWYoIXN0cmVhbSlyZXR1cm4tMTtyZXR1cm4gc3RyZWFtLmZkfWZ1bmN0aW9uIF9md3JpdGUocHRyLHNpemUsbml0ZW1zLHN0cmVhbSl7dmFyIGJ5dGVzVG9Xcml0ZT1uaXRlbXMqc2l6ZTtpZihieXRlc1RvV3JpdGU9PTApcmV0dXJuIDA7dmFyIGZkPV9maWxlbm8oc3RyZWFtKTt2YXIgYnl0ZXNXcml0dGVuPV93cml0ZShmZCxwdHIsYnl0ZXNUb1dyaXRlKTtpZihieXRlc1dyaXR0ZW49PS0xKXt2YXIgc3RyZWFtT2JqPUZTLmdldFN0cmVhbUZyb21QdHIoc3RyZWFtKTtpZihzdHJlYW1PYmopc3RyZWFtT2JqLmVycm9yPXRydWU7cmV0dXJuIDB9ZWxzZXtyZXR1cm4gTWF0aC5mbG9vcihieXRlc1dyaXR0ZW4vc2l6ZSl9fWZ1bmN0aW9uIF9yZWN2KGZkLGJ1ZixsZW4sZmxhZ3Mpe3ZhciBzb2NrPVNPQ0tGUy5nZXRTb2NrZXQoZmQpO2lmKCFzb2NrKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9cmV0dXJuIF9yZWFkKGZkLGJ1ZixsZW4pfWZ1bmN0aW9uIF9wcmVhZChmaWxkZXMsYnVmLG5ieXRlLG9mZnNldCl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmlsZGVzKTtpZighc3RyZWFtKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9dHJ5e3ZhciBzbGFiPUhFQVA4O3JldHVybiBGUy5yZWFkKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSxvZmZzZXQpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF9yZWFkKGZpbGRlcyxidWYsbmJ5dGUpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZpbGRlcyk7aWYoIXN0cmVhbSl7X19fc2V0RXJyTm8oRVJSTk9fQ09ERVMuRUJBREYpO3JldHVybi0xfXRyeXt2YXIgc2xhYj1IRUFQODtyZXR1cm4gRlMucmVhZChzdHJlYW0sc2xhYixidWYsbmJ5dGUpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF9mcmVhZChwdHIsc2l6ZSxuaXRlbXMsc3RyZWFtKXt2YXIgYnl0ZXNUb1JlYWQ9bml0ZW1zKnNpemU7aWYoYnl0ZXNUb1JlYWQ9PTApe3JldHVybiAwfXZhciBieXRlc1JlYWQ9MDt2YXIgc3RyZWFtT2JqPUZTLmdldFN0cmVhbUZyb21QdHIoc3RyZWFtKTtpZighc3RyZWFtT2JqKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuIDB9d2hpbGUoc3RyZWFtT2JqLnVuZ290dGVuLmxlbmd0aCYmYnl0ZXNUb1JlYWQ+MCl7SEVBUDhbcHRyKys+PjBdPXN0cmVhbU9iai51bmdvdHRlbi5wb3AoKTtieXRlc1RvUmVhZC0tO2J5dGVzUmVhZCsrfXZhciBlcnI9X3JlYWQoc3RyZWFtT2JqLmZkLHB0cixieXRlc1RvUmVhZCk7aWYoZXJyPT0tMSl7aWYoc3RyZWFtT2JqKXN0cmVhbU9iai5lcnJvcj10cnVlO3JldHVybiAwfWJ5dGVzUmVhZCs9ZXJyO2lmKGJ5dGVzUmVhZDxieXRlc1RvUmVhZClzdHJlYW1PYmouZW9mPXRydWU7cmV0dXJuIE1hdGguZmxvb3IoYnl0ZXNSZWFkL3NpemUpfWZ1bmN0aW9uIF9mZ2V0YyhzdHJlYW0pe3ZhciBzdHJlYW1PYmo9RlMuZ2V0U3RyZWFtRnJvbVB0cihzdHJlYW0pO2lmKCFzdHJlYW1PYmopcmV0dXJuLTE7aWYoc3RyZWFtT2JqLmVvZnx8c3RyZWFtT2JqLmVycm9yKXJldHVybi0xO3ZhciByZXQ9X2ZyZWFkKF9mZ2V0Yy5yZXQsMSwxLHN0cmVhbSk7aWYocmV0PT0wKXtyZXR1cm4tMX1lbHNlIGlmKHJldD09LTEpe3N0cmVhbU9iai5lcnJvcj10cnVlO3JldHVybi0xfWVsc2V7cmV0dXJuIEhFQVBVOFtfZmdldGMucmV0Pj4wXX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZW12YWwoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfZW12YWwiKTthYm9ydCgtMSl9ZnVuY3Rpb24gX19fZ3h4X3BlcnNvbmFsaXR5X3YwKCl7fWZ1bmN0aW9uIF9zeXNjb25mKG5hbWUpe3N3aXRjaChuYW1lKXtjYXNlIDMwOnJldHVybiBQQUdFX1NJWkU7Y2FzZSAxMzI6Y2FzZSAxMzM6Y2FzZSAxMjpjYXNlIDEzNzpjYXNlIDEzODpjYXNlIDE1OmNhc2UgMjM1OmNhc2UgMTY6Y2FzZSAxNzpjYXNlIDE4OmNhc2UgMTk6Y2FzZSAyMDpjYXNlIDE0OTpjYXNlIDEzOmNhc2UgMTA6Y2FzZSAyMzY6Y2FzZSAxNTM6Y2FzZSA5OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDE1OTpjYXNlIDE1NDpjYXNlIDE0OmNhc2UgNzc6Y2FzZSA3ODpjYXNlIDEzOTpjYXNlIDgwOmNhc2UgODE6Y2FzZSA3OTpjYXNlIDgyOmNhc2UgNjg6Y2FzZSA2NzpjYXNlIDE2NDpjYXNlIDExOmNhc2UgMjk6Y2FzZSA0NzpjYXNlIDQ4OmNhc2UgOTU6Y2FzZSA1MjpjYXNlIDUxOmNhc2UgNDY6cmV0dXJuIDIwMDgwOTtjYXNlIDI3OmNhc2UgMjQ2OmNhc2UgMTI3OmNhc2UgMTI4OmNhc2UgMjM6Y2FzZSAyNDpjYXNlIDE2MDpjYXNlIDE2MTpjYXNlIDE4MTpjYXNlIDE4MjpjYXNlIDI0MjpjYXNlIDE4MzpjYXNlIDE4NDpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0NTpjYXNlIDE2NTpjYXNlIDE3ODpjYXNlIDE3OTpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSAxNjg6Y2FzZSAxNjk6Y2FzZSAxNzU6Y2FzZSAxNzA6Y2FzZSAxNzE6Y2FzZSAxNzI6Y2FzZSA5NzpjYXNlIDc2OmNhc2UgMzI6Y2FzZSAxNzM6Y2FzZSAzNTpyZXR1cm4tMTtjYXNlIDE3NjpjYXNlIDE3NzpjYXNlIDc6Y2FzZSAxNTU6Y2FzZSA4OmNhc2UgMTU3OmNhc2UgMTI1OmNhc2UgMTI2OmNhc2UgOTI6Y2FzZSA5MzpjYXNlIDEyOTpjYXNlIDEzMDpjYXNlIDEzMTpjYXNlIDk0OmNhc2UgOTE6cmV0dXJuIDE7Y2FzZSA3NDpjYXNlIDYwOmNhc2UgNjk6Y2FzZSA3MDpjYXNlIDQ6cmV0dXJuIDEwMjQ7Y2FzZSAzMTpjYXNlIDQyOmNhc2UgNzI6cmV0dXJuIDMyO2Nhc2UgODc6Y2FzZSAyNjpjYXNlIDMzOnJldHVybiAyMTQ3NDgzNjQ3O2Nhc2UgMzQ6Y2FzZSAxOnJldHVybiA0NzgzOTtjYXNlIDM4OmNhc2UgMzY6cmV0dXJuIDk5O2Nhc2UgNDM6Y2FzZSAzNzpyZXR1cm4gMjA0ODtjYXNlIDA6cmV0dXJuIDIwOTcxNTI7Y2FzZSAzOnJldHVybiA2NTUzNjtjYXNlIDI4OnJldHVybiAzMjc2ODtjYXNlIDQ0OnJldHVybiAzMjc2NztjYXNlIDc1OnJldHVybiAxNjM4NDtjYXNlIDM5OnJldHVybiAxZTM7Y2FzZSA4OTpyZXR1cm4gNzAwO2Nhc2UgNzE6cmV0dXJuIDI1NjtjYXNlIDQwOnJldHVybiAyNTU7Y2FzZSAyOnJldHVybiAxMDA7Y2FzZSAxODA6cmV0dXJuIDY0O2Nhc2UgMjU6cmV0dXJuIDIwO2Nhc2UgNTpyZXR1cm4gMTY7Y2FzZSA2OnJldHVybiA2O2Nhc2UgNzM6cmV0dXJuIDQ7Y2FzZSA4NDpyZXR1cm4gMX1fX19zZXRFcnJObyhFUlJOT19DT0RFUy5FSU5WQUwpO3JldHVybi0xfU1vZHVsZVsiX2JpdHNoaWZ0NjRMc2hyIl09X2JpdHNoaWZ0NjRMc2hyO2Z1bmN0aW9uIF9wdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCl7cmV0dXJuIDB9ZnVuY3Rpb24gX19leGl0KHN0YXR1cyl7TW9kdWxlWyJleGl0Il0oc3RhdHVzKX1mdW5jdGlvbiBfZXhpdChzdGF0dXMpe19fZXhpdChzdGF0dXMpfWZ1bmN0aW9uIF9fWlN0OXRlcm1pbmF0ZXYoKXtfZXhpdCgtMTIzNCl9ZnVuY3Rpb24gX3B0aHJlYWRfbXV0ZXhfdW5sb2NrKCl7fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX21lbWNweV9iaWcoZGVzdCxzcmMsbnVtKXtIRUFQVTguc2V0KEhFQVBVOC5zdWJhcnJheShzcmMsc3JjK251bSksZGVzdCk7cmV0dXJuIGRlc3R9TW9kdWxlWyJfbWVtY3B5Il09X21lbWNweTtmdW5jdGlvbiBfc2JyayhieXRlcyl7dmFyIHNlbGY9X3Nicms7aWYoIXNlbGYuY2FsbGVkKXtEWU5BTUlDVE9QPWFsaWduTWVtb3J5UGFnZShEWU5BTUlDVE9QKTtzZWxmLmNhbGxlZD10cnVlO2Fzc2VydChSdW50aW1lLmR5bmFtaWNBbGxvYyk7c2VsZi5hbGxvYz1SdW50aW1lLmR5bmFtaWNBbGxvYztSdW50aW1lLmR5bmFtaWNBbGxvYz0oZnVuY3Rpb24oKXthYm9ydCgiY2Fubm90IGR5bmFtaWNhbGx5IGFsbG9jYXRlLCBzYnJrIG5vdyBoYXMgY29udHJvbCIpfSl9dmFyIHJldD1EWU5BTUlDVE9QO2lmKGJ5dGVzIT0wKXNlbGYuYWxsb2MoYnl0ZXMpO3JldHVybiByZXR9ZnVuY3Rpb24gX25ld2xvY2FsZShtYXNrLGxvY2FsZSxiYXNlKXtyZXR1cm4gX21hbGxvYyg0KX1Nb2R1bGVbIl9tZW1tb3ZlIl09X21lbW1vdmU7ZnVuY3Rpb24gX19fZXJybm9fbG9jYXRpb24oKXtyZXR1cm4gX19fZXJybm9fc3RhdGV9ZnVuY3Rpb24gX3N0cmVycm9yX3IoZXJybnVtLHN0cmVycmJ1ZixidWZsZW4pe2lmKGVycm51bSBpbiBFUlJOT19NRVNTQUdFUyl7aWYoRVJSTk9fTUVTU0FHRVNbZXJybnVtXS5sZW5ndGg+YnVmbGVuLTEpe3JldHVybiBfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FUkFOR0UpfWVsc2V7dmFyIG1zZz1FUlJOT19NRVNTQUdFU1tlcnJudW1dO3dyaXRlQXNjaWlUb01lbW9yeShtc2csc3RyZXJyYnVmKTtyZXR1cm4gMH19ZWxzZXtyZXR1cm4gX19fc2V0RXJyTm8oRVJSTk9fQ09ERVMuRUlOVkFMKX19ZnVuY3Rpb24gX3N0cmVycm9yKGVycm51bSl7aWYoIV9zdHJlcnJvci5idWZmZXIpX3N0cmVycm9yLmJ1ZmZlcj1fbWFsbG9jKDI1Nik7X3N0cmVycm9yX3IoZXJybnVtLF9zdHJlcnJvci5idWZmZXIsMjU2KTtyZXR1cm4gX3N0cmVycm9yLmJ1ZmZlcn1mdW5jdGlvbiBfcHRocmVhZF9tdXRleF9kZXN0cm95KCl7fWZ1bmN0aW9uIF9jYXRjbG9zZShjYXRkKXtyZXR1cm4gMH1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldygpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfX19jeGFfZ3VhcmRfcmVsZWFzZSgpe31mdW5jdGlvbiBfdW5nZXRjKGMsc3RyZWFtKXtzdHJlYW09RlMuZ2V0U3RyZWFtRnJvbVB0cihzdHJlYW0pO2lmKCFzdHJlYW0pe3JldHVybi0xfWlmKGM9PT0tMSl7cmV0dXJuIGN9Yz11blNpZ24oYyYyNTUpO3N0cmVhbS51bmdvdHRlbi5wdXNoKGMpO3N0cmVhbS5lb2Y9ZmFsc2U7cmV0dXJuIGN9ZnVuY3Rpb24gX3VzZWxvY2FsZShsb2NhbGUpe3JldHVybiAwfWZ1bmN0aW9uIF92c25wcmludGYocyxuLGZvcm1hdCx2YV9hcmcpe3JldHVybiBfc25wcmludGYocyxuLGZvcm1hdCxIRUFQMzJbdmFfYXJnPj4yXSl9ZnVuY3Rpb24gX19nZXRGbG9hdCh0ZXh0KXtyZXR1cm4vXlsrLV0/WzAtOV0qXC4/WzAtOV0rKFtlRV1bKy1dP1swLTldKyk/Ly5leGVjKHRleHQpfWZ1bmN0aW9uIF9fc2NhblN0cmluZyhmb3JtYXQsZ2V0LHVuZ2V0LHZhcmFyZ3Mpe2lmKCFfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSl7X19zY2FuU3RyaW5nLndoaXRlU3BhY2U9e307X19zY2FuU3RyaW5nLndoaXRlU3BhY2VbMzJdPTE7X19zY2FuU3RyaW5nLndoaXRlU3BhY2VbOV09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMF09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMV09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMl09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxM109MX1mb3JtYXQ9UG9pbnRlcl9zdHJpbmdpZnkoZm9ybWF0KTt2YXIgc29GYXI9MDtpZihmb3JtYXQuaW5kZXhPZigiJW4iKT49MCl7dmFyIF9nZXQ9Z2V0O2dldD1mdW5jdGlvbiBnZXQoKXtzb0ZhcisrO3JldHVybiBfZ2V0KCl9O3ZhciBfdW5nZXQ9dW5nZXQ7dW5nZXQ9ZnVuY3Rpb24gdW5nZXQoKXtzb0Zhci0tO3JldHVybiBfdW5nZXQoKX19dmFyIGZvcm1hdEluZGV4PTA7dmFyIGFyZ3NpPTA7dmFyIGZpZWxkcz0wO3ZhciBhcmdJbmRleD0wO3ZhciBuZXh0O21haW5Mb29wOmZvcih2YXIgZm9ybWF0SW5kZXg9MDtmb3JtYXRJbmRleDxmb3JtYXQubGVuZ3RoOyl7aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIiYmZm9ybWF0W2Zvcm1hdEluZGV4KzFdPT0ibiIpe3ZhciBhcmdQdHI9SEVBUDMyW3ZhcmFyZ3MrYXJnSW5kZXg+PjJdO2FyZ0luZGV4Kz1SdW50aW1lLmdldEFsaWduU2l6ZSgidm9pZCoiLG51bGwsdHJ1ZSk7SEVBUDMyW2FyZ1B0cj4+Ml09c29GYXI7Zm9ybWF0SW5kZXgrPTI7Y29udGludWV9aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIil7dmFyIG5leHRDPWZvcm1hdC5pbmRleE9mKCJjIixmb3JtYXRJbmRleCsxKTtpZihuZXh0Qz4wKXt2YXIgbWF4eD0xO2lmKG5leHRDPmZvcm1hdEluZGV4KzEpe3ZhciBzdWI9Zm9ybWF0LnN1YnN0cmluZyhmb3JtYXRJbmRleCsxLG5leHRDKTttYXh4PXBhcnNlSW50KHN1Yik7aWYobWF4eCE9c3ViKW1heHg9MH1pZihtYXh4KXt2YXIgYXJnUHRyPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXTthcmdJbmRleCs9UnVudGltZS5nZXRBbGlnblNpemUoInZvaWQqIixudWxsLHRydWUpO2ZpZWxkcysrO2Zvcih2YXIgaT0wO2k8bWF4eDtpKyspe25leHQ9Z2V0KCk7SEVBUDhbYXJnUHRyKys+PjBdPW5leHQ7aWYobmV4dD09PTApcmV0dXJuIGk+MD9maWVsZHM6ZmllbGRzLTF9Zm9ybWF0SW5kZXgrPW5leHRDLWZvcm1hdEluZGV4KzE7Y29udGludWV9fX1pZihmb3JtYXRbZm9ybWF0SW5kZXhdPT09IiUiJiZmb3JtYXQuaW5kZXhPZigiWyIsZm9ybWF0SW5kZXgrMSk+MCl7dmFyIG1hdGNoPS9cJShbMC05XSopXFsoXF4pPyhcXT9bXlxdXSopXF0vLmV4ZWMoZm9ybWF0LnN1YnN0cmluZyhmb3JtYXRJbmRleCkpO2lmKG1hdGNoKXt2YXIgbWF4TnVtQ2hhcmFjdGVycz1wYXJzZUludChtYXRjaFsxXSl8fEluZmluaXR5O3ZhciBuZWdhdGVTY2FuTGlzdD1tYXRjaFsyXT09PSJeIjt2YXIgc2Nhbkxpc3Q9bWF0Y2hbM107dmFyIG1pZGRsZURhc2hNYXRjaDt3aGlsZShtaWRkbGVEYXNoTWF0Y2g9LyhbXlwtXSlcLShbXlwtXSkvLmV4ZWMoc2Nhbkxpc3QpKXt2YXIgcmFuZ2VTdGFydENoYXJDb2RlPW1pZGRsZURhc2hNYXRjaFsxXS5jaGFyQ29kZUF0KDApO3ZhciByYW5nZUVuZENoYXJDb2RlPW1pZGRsZURhc2hNYXRjaFsyXS5jaGFyQ29kZUF0KDApO2Zvcih2YXIgZXhwYW5kZWQ9IiI7cmFuZ2VTdGFydENoYXJDb2RlPD1yYW5nZUVuZENoYXJDb2RlO2V4cGFuZGVkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHJhbmdlU3RhcnRDaGFyQ29kZSsrKSk7c2Nhbkxpc3Q9c2Nhbkxpc3QucmVwbGFjZShtaWRkbGVEYXNoTWF0Y2hbMV0rIi0iK21pZGRsZURhc2hNYXRjaFsyXSxleHBhbmRlZCl9dmFyIGFyZ1B0cj1IRUFQMzJbdmFyYXJncythcmdJbmRleD4+Ml07YXJnSW5kZXgrPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKCJ2b2lkKiIsbnVsbCx0cnVlKTtmaWVsZHMrKztmb3IodmFyIGk9MDtpPG1heE51bUNoYXJhY3RlcnM7aSsrKXtuZXh0PWdldCgpO2lmKG5lZ2F0ZVNjYW5MaXN0KXtpZihzY2FuTGlzdC5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpPDApe0hFQVA4W2FyZ1B0cisrPj4wXT1uZXh0fWVsc2V7dW5nZXQoKTticmVha319ZWxzZXtpZihzY2FuTGlzdC5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpPj0wKXtIRUFQOFthcmdQdHIrKz4+MF09bmV4dH1lbHNle3VuZ2V0KCk7YnJlYWt9fX1IRUFQOFthcmdQdHIrKz4+MF09MDtmb3JtYXRJbmRleCs9bWF0Y2hbMF0ubGVuZ3RoO2NvbnRpbnVlfX13aGlsZSgxKXtuZXh0PWdldCgpO2lmKG5leHQ9PTApcmV0dXJuIGZpZWxkcztpZighKG5leHQgaW4gX19zY2FuU3RyaW5nLndoaXRlU3BhY2UpKWJyZWFrfXVuZ2V0KCk7aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIil7Zm9ybWF0SW5kZXgrKzt2YXIgc3VwcHJlc3NBc3NpZ25tZW50PWZhbHNlO2lmKGZvcm1hdFtmb3JtYXRJbmRleF09PSIqIil7c3VwcHJlc3NBc3NpZ25tZW50PXRydWU7Zm9ybWF0SW5kZXgrK312YXIgbWF4U3BlY2lmaWVyU3RhcnQ9Zm9ybWF0SW5kZXg7d2hpbGUoZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApPj00OCYmZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApPD01Nyl7Zm9ybWF0SW5kZXgrK312YXIgbWF4XztpZihmb3JtYXRJbmRleCE9bWF4U3BlY2lmaWVyU3RhcnQpe21heF89cGFyc2VJbnQoZm9ybWF0LnNsaWNlKG1heFNwZWNpZmllclN0YXJ0LGZvcm1hdEluZGV4KSwxMCl9dmFyIGxvbmdfPWZhbHNlO3ZhciBoYWxmPWZhbHNlO3ZhciBxdWFydGVyPWZhbHNlO3ZhciBsb25nTG9uZz1mYWxzZTtpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0ibCIpe2xvbmdfPXRydWU7Zm9ybWF0SW5kZXgrKztpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0ibCIpe2xvbmdMb25nPXRydWU7Zm9ybWF0SW5kZXgrK319ZWxzZSBpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0iaCIpe2hhbGY9dHJ1ZTtmb3JtYXRJbmRleCsrO2lmKGZvcm1hdFtmb3JtYXRJbmRleF09PSJoIil7cXVhcnRlcj10cnVlO2Zvcm1hdEluZGV4Kyt9fXZhciB0eXBlPWZvcm1hdFtmb3JtYXRJbmRleF07Zm9ybWF0SW5kZXgrKzt2YXIgY3Vycj0wO3ZhciBidWZmZXI9W107aWYodHlwZT09ImYifHx0eXBlPT0iZSJ8fHR5cGU9PSJnInx8dHlwZT09IkYifHx0eXBlPT0iRSJ8fHR5cGU9PSJHIil7bmV4dD1nZXQoKTt3aGlsZShuZXh0PjAmJiEobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSkpe2J1ZmZlci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpO25leHQ9Z2V0KCl9dmFyIG09X19nZXRGbG9hdChidWZmZXIuam9pbigiIikpO3ZhciBsYXN0PW0/bVswXS5sZW5ndGg6MDtmb3IodmFyIGk9MDtpPGJ1ZmZlci5sZW5ndGgtbGFzdCsxO2krKyl7dW5nZXQoKX1idWZmZXIubGVuZ3RoPWxhc3R9ZWxzZXtuZXh0PWdldCgpO3ZhciBmaXJzdD10cnVlO2lmKCh0eXBlPT0ieCJ8fHR5cGU9PSJYIikmJm5leHQ9PTQ4KXt2YXIgcGVlaz1nZXQoKTtpZihwZWVrPT0xMjB8fHBlZWs9PTg4KXtuZXh0PWdldCgpfWVsc2V7dW5nZXQoKX19d2hpbGUoKGN1cnI8bWF4X3x8aXNOYU4obWF4XykpJiZuZXh0PjApe2lmKCEobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSkmJih0eXBlPT0icyJ8fCh0eXBlPT09ImQifHx0eXBlPT0idSJ8fHR5cGU9PSJpIikmJihuZXh0Pj00OCYmbmV4dDw9NTd8fGZpcnN0JiZuZXh0PT00NSl8fCh0eXBlPT09IngifHx0eXBlPT09IlgiKSYmKG5leHQ+PTQ4JiZuZXh0PD01N3x8bmV4dD49OTcmJm5leHQ8PTEwMnx8bmV4dD49NjUmJm5leHQ8PTcwKSkmJihmb3JtYXRJbmRleD49Zm9ybWF0Lmxlbmd0aHx8bmV4dCE9PWZvcm1hdFtmb3JtYXRJbmRleF0uY2hhckNvZGVBdCgwKSkpe2J1ZmZlci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpO25leHQ9Z2V0KCk7Y3VycisrO2ZpcnN0PWZhbHNlfWVsc2V7YnJlYWt9fXVuZ2V0KCl9aWYoYnVmZmVyLmxlbmd0aD09PTApcmV0dXJuIDA7aWYoc3VwcHJlc3NBc3NpZ25tZW50KWNvbnRpbnVlO3ZhciB0ZXh0PWJ1ZmZlci5qb2luKCIiKTt2YXIgYXJnUHRyPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXTthcmdJbmRleCs9UnVudGltZS5nZXRBbGlnblNpemUoInZvaWQqIixudWxsLHRydWUpO3ZhciBiYXNlPTEwO3N3aXRjaCh0eXBlKXtjYXNlIlgiOmNhc2UieCI6YmFzZT0xNjtjYXNlImQiOmNhc2UidSI6Y2FzZSJpIjppZihxdWFydGVyKXtIRUFQOFthcmdQdHI+PjBdPXBhcnNlSW50KHRleHQsYmFzZSl9ZWxzZSBpZihoYWxmKXtIRUFQMTZbYXJnUHRyPj4xXT1wYXJzZUludCh0ZXh0LGJhc2UpfWVsc2UgaWYobG9uZ0xvbmcpe3RlbXBJNjQ9W3BhcnNlSW50KHRleHQsYmFzZSk+Pj4wLCh0ZW1wRG91YmxlPXBhcnNlSW50KHRleHQsYmFzZSksK01hdGhfYWJzKHRlbXBEb3VibGUpPj0rMT90ZW1wRG91YmxlPiswPyhNYXRoX21pbigrTWF0aF9mbG9vcih0ZW1wRG91YmxlLys0Mjk0OTY3Mjk2KSwrNDI5NDk2NzI5NSl8MCk+Pj4wOn5+K01hdGhfY2VpbCgodGVtcERvdWJsZS0gKyh+fnRlbXBEb3VibGU+Pj4wKSkvKzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2FyZ1B0cj4+Ml09dGVtcEk2NFswXSxIRUFQMzJbYXJnUHRyKzQ+PjJdPXRlbXBJNjRbMV19ZWxzZXtIRUFQMzJbYXJnUHRyPj4yXT1wYXJzZUludCh0ZXh0LGJhc2UpfWJyZWFrO2Nhc2UiRiI6Y2FzZSJmIjpjYXNlIkUiOmNhc2UiZSI6Y2FzZSJHIjpjYXNlImciOmNhc2UiRSI6aWYobG9uZ18pe0hFQVBGNjRbYXJnUHRyPj4zXT1wYXJzZUZsb2F0KHRleHQpfWVsc2V7SEVBUEYzMlthcmdQdHI+PjJdPXBhcnNlRmxvYXQodGV4dCl9YnJlYWs7Y2FzZSJzIjp2YXIgYXJyYXk9aW50QXJyYXlGcm9tU3RyaW5nKHRleHQpO2Zvcih2YXIgaj0wO2o8YXJyYXkubGVuZ3RoO2orKyl7SEVBUDhbYXJnUHRyK2o+PjBdPWFycmF5W2pdfWJyZWFrfWZpZWxkcysrfWVsc2UgaWYoZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApaW4gX19zY2FuU3RyaW5nLndoaXRlU3BhY2Upe25leHQ9Z2V0KCk7d2hpbGUobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSl7aWYobmV4dDw9MClicmVhayBtYWluTG9vcDtuZXh0PWdldCgpfXVuZ2V0KG5leHQpO2Zvcm1hdEluZGV4Kyt9ZWxzZXtuZXh0PWdldCgpO2lmKGZvcm1hdFtmb3JtYXRJbmRleF0uY2hhckNvZGVBdCgwKSE9PW5leHQpe3VuZ2V0KG5leHQpO2JyZWFrIG1haW5Mb29wfWZvcm1hdEluZGV4Kyt9fXJldHVybiBmaWVsZHN9ZnVuY3Rpb24gX3NzY2FuZihzLGZvcm1hdCx2YXJhcmdzKXt2YXIgaW5kZXg9MDtmdW5jdGlvbiBnZXQoKXtyZXR1cm4gSEVBUDhbcytpbmRleCsrPj4wXX1mdW5jdGlvbiB1bmdldCgpe2luZGV4LS19cmV0dXJuIF9fc2NhblN0cmluZyhmb3JtYXQsZ2V0LHVuZ2V0LHZhcmFyZ3MpfWZ1bmN0aW9uIF92c3NjYW5mKHMsZm9ybWF0LHZhX2FyZyl7cmV0dXJuIF9zc2NhbmYocyxmb3JtYXQsSEVBUDMyW3ZhX2FyZz4+Ml0pfWZ1bmN0aW9uIF9fX2Fzc2VydF9mYWlsKGNvbmRpdGlvbixmaWxlbmFtZSxsaW5lLGZ1bmMpe0FCT1JUPXRydWU7dGhyb3ciQXNzZXJ0aW9uIGZhaWxlZDogIitQb2ludGVyX3N0cmluZ2lmeShjb25kaXRpb24pKyIsIGF0OiAiK1tmaWxlbmFtZT9Qb2ludGVyX3N0cmluZ2lmeShmaWxlbmFtZSk6InVua25vd24gZmlsZW5hbWUiLGxpbmUsZnVuYz9Qb2ludGVyX3N0cmluZ2lmeShmdW5jKToidW5rbm93biBmdW5jdGlvbiJdKyIgYXQgIitzdGFja1RyYWNlKCl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdm9pZCgpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl92b2lkIik7YWJvcnQoLTEpfU1vZHVsZVsiX21lbXNldCJdPV9tZW1zZXQ7dmFyIF9CSXRvRD10cnVlO2Z1bmN0aW9uIF9faXNMZWFwWWVhcih5ZWFyKXtyZXR1cm4geWVhciU0PT09MCYmKHllYXIlMTAwIT09MHx8eWVhciU0MDA9PT0wKX1mdW5jdGlvbiBfX2FycmF5U3VtKGFycmF5LGluZGV4KXt2YXIgc3VtPTA7Zm9yKHZhciBpPTA7aTw9aW5kZXg7c3VtKz1hcnJheVtpKytdKTtyZXR1cm4gc3VtfXZhciBfX01PTlRIX0RBWVNfTEVBUD1bMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO3ZhciBfX01PTlRIX0RBWVNfUkVHVUxBUj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIF9fYWRkRGF5cyhkYXRlLGRheXMpe3ZhciBuZXdEYXRlPW5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTt3aGlsZShkYXlzPjApe3ZhciBsZWFwPV9faXNMZWFwWWVhcihuZXdEYXRlLmdldEZ1bGxZZWFyKCkpO3ZhciBjdXJyZW50TW9udGg9bmV3RGF0ZS5nZXRNb250aCgpO3ZhciBkYXlzSW5DdXJyZW50TW9udGg9KGxlYXA/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIpW2N1cnJlbnRNb250aF07aWYoZGF5cz5kYXlzSW5DdXJyZW50TW9udGgtbmV3RGF0ZS5nZXREYXRlKCkpe2RheXMtPWRheXNJbkN1cnJlbnRNb250aC1uZXdEYXRlLmdldERhdGUoKSsxO25ld0RhdGUuc2V0RGF0ZSgxKTtpZihjdXJyZW50TW9udGg8MTEpe25ld0RhdGUuc2V0TW9udGgoY3VycmVudE1vbnRoKzEpfWVsc2V7bmV3RGF0ZS5zZXRNb250aCgwKTtuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSsxKX19ZWxzZXtuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkrZGF5cyk7cmV0dXJuIG5ld0RhdGV9fXJldHVybiBuZXdEYXRlfWZ1bmN0aW9uIF9zdHJmdGltZShzLG1heHNpemUsZm9ybWF0LHRtKXt2YXIgZGF0ZT17dG1fc2VjOkhFQVAzMlt0bT4+Ml0sdG1fbWluOkhFQVAzMlt0bSs0Pj4yXSx0bV9ob3VyOkhFQVAzMlt0bSs4Pj4yXSx0bV9tZGF5OkhFQVAzMlt0bSsxMj4+Ml0sdG1fbW9uOkhFQVAzMlt0bSsxNj4+Ml0sdG1feWVhcjpIRUFQMzJbdG0rMjA+PjJdLHRtX3dkYXk6SEVBUDMyW3RtKzI0Pj4yXSx0bV95ZGF5OkhFQVAzMlt0bSsyOD4+Ml0sdG1faXNkc3Q6SEVBUDMyW3RtKzMyPj4yXX07dmFyIHBhdHRlcm49UG9pbnRlcl9zdHJpbmdpZnkoZm9ybWF0KTt2YXIgRVhQQU5TSU9OX1JVTEVTXzE9eyIlYyI6IiVhICViICVkICVIOiVNOiVTICVZIiwiJUQiOiIlbS8lZC8leSIsIiVGIjoiJVktJW0tJWQiLCIlaCI6IiViIiwiJXIiOiIlSTolTTolUyAlcCIsIiVSIjoiJUg6JU0iLCIlVCI6IiVIOiVNOiVTIiwiJXgiOiIlbS8lZC8leSIsIiVYIjoiJUg6JU06JVMifTtmb3IodmFyIHJ1bGUgaW4gRVhQQU5TSU9OX1JVTEVTXzEpe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18xW3J1bGVdKX12YXIgV0VFS0RBWVM9WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdO3ZhciBNT05USFM9WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdO2Z1bmN0aW9uIGxlYWRpbmdTb21ldGhpbmcodmFsdWUsZGlnaXRzLGNoYXJhY3Rlcil7dmFyIHN0cj10eXBlb2YgdmFsdWU9PT0ibnVtYmVyIj92YWx1ZS50b1N0cmluZygpOnZhbHVlfHwiIjt3aGlsZShzdHIubGVuZ3RoPGRpZ2l0cyl7c3RyPWNoYXJhY3RlclswXStzdHJ9cmV0dXJuIHN0cn1mdW5jdGlvbiBsZWFkaW5nTnVsbHModmFsdWUsZGlnaXRzKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyh2YWx1ZSxkaWdpdHMsIjAiKX1mdW5jdGlvbiBjb21wYXJlQnlEYXkoZGF0ZTEsZGF0ZTIpe2Z1bmN0aW9uIHNnbih2YWx1ZSl7cmV0dXJuIHZhbHVlPDA/LTE6dmFsdWU+MD8xOjB9dmFyIGNvbXBhcmU7aWYoKGNvbXBhcmU9c2duKGRhdGUxLmdldEZ1bGxZZWFyKCktZGF0ZTIuZ2V0RnVsbFllYXIoKSkpPT09MCl7aWYoKGNvbXBhcmU9c2duKGRhdGUxLmdldE1vbnRoKCktZGF0ZTIuZ2V0TW9udGgoKSkpPT09MCl7Y29tcGFyZT1zZ24oZGF0ZTEuZ2V0RGF0ZSgpLWRhdGUyLmdldERhdGUoKSl9fXJldHVybiBjb21wYXJlfWZ1bmN0aW9uIGdldEZpcnN0V2Vla1N0YXJ0RGF0ZShqYW5Gb3VydGgpe3N3aXRjaChqYW5Gb3VydGguZ2V0RGF5KCkpe2Nhc2UgMDpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCktMSwxMSwyOSk7Y2FzZSAxOnJldHVybiBqYW5Gb3VydGg7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSwwLDMpO2Nhc2UgMzpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCksMCwyKTtjYXNlIDQ6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKS0xLDExLDMxKTtjYXNlIDY6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLTEsMTEsMzApfX1mdW5jdGlvbiBnZXRXZWVrQmFzZWRZZWFyKGRhdGUpe3ZhciB0aGlzRGF0ZT1fX2FkZERheXMobmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsMCwxKSxkYXRlLnRtX3lkYXkpO3ZhciBqYW5Gb3VydGhUaGlzWWVhcj1uZXcgRGF0ZSh0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLDAsNCk7dmFyIGphbkZvdXJ0aE5leHRZZWFyPW5ldyBEYXRlKHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkrMSwwLDQpO3ZhciBmaXJzdFdlZWtTdGFydFRoaXNZZWFyPWdldEZpcnN0V2Vla1N0YXJ0RGF0ZShqYW5Gb3VydGhUaGlzWWVhcik7dmFyIGZpcnN0V2Vla1N0YXJ0TmV4dFllYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aE5leHRZZWFyKTtpZihjb21wYXJlQnlEYXkoZmlyc3RXZWVrU3RhcnRUaGlzWWVhcix0aGlzRGF0ZSk8PTApe2lmKGNvbXBhcmVCeURheShmaXJzdFdlZWtTdGFydE5leHRZZWFyLHRoaXNEYXRlKTw9MCl7cmV0dXJuIHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkrMX1lbHNle3JldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpfX1lbHNle3JldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLTF9fXZhciBFWFBBTlNJT05fUlVMRVNfMj17IiVhIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIFdFRUtEQVlTW2RhdGUudG1fd2RheV0uc3Vic3RyaW5nKDAsMyl9KSwiJUEiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gV0VFS0RBWVNbZGF0ZS50bV93ZGF5XX0pLCIlYiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBNT05USFNbZGF0ZS50bV9tb25dLnN1YnN0cmluZygwLDMpfSksIiVCIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIE1PTlRIU1tkYXRlLnRtX21vbl19KSwiJUMiOihmdW5jdGlvbihkYXRlKXt2YXIgeWVhcj1kYXRlLnRtX3llYXIrMTkwMDtyZXR1cm4gbGVhZGluZ051bGxzKE1hdGguZmxvb3IoeWVhci8xMDApLDIpfSksIiVkIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX21kYXksMil9KSwiJWUiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyhkYXRlLnRtX21kYXksMiwiICIpfSksIiVnIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGdldFdlZWtCYXNlZFllYXIoZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9KSwiJUciOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gZ2V0V2Vla0Jhc2VkWWVhcihkYXRlKX0pLCIlSCI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9ob3VyLDIpfSksIiVJIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX2hvdXI8MTM/ZGF0ZS50bV9ob3VyOmRhdGUudG1faG91ci0xMiwyKX0pLCIlaiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tZGF5K19fYXJyYXlTdW0oX19pc0xlYXBZZWFyKGRhdGUudG1feWVhcisxOTAwKT9fX01PTlRIX0RBWVNfTEVBUDpfX01PTlRIX0RBWVNfUkVHVUxBUixkYXRlLnRtX21vbi0xKSwzKX0pLCIlbSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tb24rMSwyKX0pLCIlTSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9taW4sMil9KSwiJW4iOihmdW5jdGlvbigpe3JldHVybiJcbiJ9KSwiJXAiOihmdW5jdGlvbihkYXRlKXtpZihkYXRlLnRtX2hvdXI+MCYmZGF0ZS50bV9ob3VyPDEzKXtyZXR1cm4iQU0ifWVsc2V7cmV0dXJuIlBNIn19KSwiJVMiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fc2VjLDIpfSksIiV0IjooZnVuY3Rpb24oKXtyZXR1cm4iXHQifSksIiV1IjooZnVuY3Rpb24oZGF0ZSl7dmFyIGRheT1uZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCxkYXRlLnRtX21vbisxLGRhdGUudG1fbWRheSwwLDAsMCwwKTtyZXR1cm4gZGF5LmdldERheSgpfHw3fSksIiVVIjooZnVuY3Rpb24oZGF0ZSl7dmFyIGphbkZpcnN0PW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLDAsMSk7dmFyIGZpcnN0U3VuZGF5PWphbkZpcnN0LmdldERheSgpPT09MD9qYW5GaXJzdDpfX2FkZERheXMoamFuRmlyc3QsNy1qYW5GaXJzdC5nZXREYXkoKSk7dmFyIGVuZERhdGU9bmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsZGF0ZS50bV9tb24sZGF0ZS50bV9tZGF5KTtpZihjb21wYXJlQnlEYXkoZmlyc3RTdW5kYXksZW5kRGF0ZSk8MCl7dmFyIGZlYnJ1YXJ5Rmlyc3RVbnRpbEVuZE1vbnRoPV9fYXJyYXlTdW0oX19pc0xlYXBZZWFyKGVuZERhdGUuZ2V0RnVsbFllYXIoKSk/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIsZW5kRGF0ZS5nZXRNb250aCgpLTEpLTMxO3ZhciBmaXJzdFN1bmRheVVudGlsRW5kSmFudWFyeT0zMS1maXJzdFN1bmRheS5nZXREYXRlKCk7dmFyIGRheXM9Zmlyc3RTdW5kYXlVbnRpbEVuZEphbnVhcnkrZmVicnVhcnlGaXJzdFVudGlsRW5kTW9udGgrZW5kRGF0ZS5nZXREYXRlKCk7cmV0dXJuIGxlYWRpbmdOdWxscyhNYXRoLmNlaWwoZGF5cy83KSwyKX1yZXR1cm4gY29tcGFyZUJ5RGF5KGZpcnN0U3VuZGF5LGphbkZpcnN0KT09PTA/IjAxIjoiMDAifSksIiVWIjooZnVuY3Rpb24oZGF0ZSl7dmFyIGphbkZvdXJ0aFRoaXNZZWFyPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLDAsNCk7dmFyIGphbkZvdXJ0aE5leHRZZWFyPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAxLDAsNCk7dmFyIGZpcnN0V2Vla1N0YXJ0VGhpc1llYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aFRoaXNZZWFyKTt2YXIgZmlyc3RXZWVrU3RhcnROZXh0WWVhcj1nZXRGaXJzdFdlZWtTdGFydERhdGUoamFuRm91cnRoTmV4dFllYXIpO3ZhciBlbmREYXRlPV9fYWRkRGF5cyhuZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCwwLDEpLGRhdGUudG1feWRheSk7aWYoY29tcGFyZUJ5RGF5KGVuZERhdGUsZmlyc3RXZWVrU3RhcnRUaGlzWWVhcik8MCl7cmV0dXJuIjUzIn1pZihjb21wYXJlQnlEYXkoZmlyc3RXZWVrU3RhcnROZXh0WWVhcixlbmREYXRlKTw9MCl7cmV0dXJuIjAxIn12YXIgZGF5c0RpZmZlcmVuY2U7aWYoZmlyc3RXZWVrU3RhcnRUaGlzWWVhci5nZXRGdWxsWWVhcigpPGRhdGUudG1feWVhcisxOTAwKXtkYXlzRGlmZmVyZW5jZT1kYXRlLnRtX3lkYXkrMzItZmlyc3RXZWVrU3RhcnRUaGlzWWVhci5nZXREYXRlKCl9ZWxzZXtkYXlzRGlmZmVyZW5jZT1kYXRlLnRtX3lkYXkrMS1maXJzdFdlZWtTdGFydFRoaXNZZWFyLmdldERhdGUoKX1yZXR1cm4gbGVhZGluZ051bGxzKE1hdGguY2VpbChkYXlzRGlmZmVyZW5jZS83KSwyKX0pLCIldyI6KGZ1bmN0aW9uKGRhdGUpe3ZhciBkYXk9bmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsZGF0ZS50bV9tb24rMSxkYXRlLnRtX21kYXksMCwwLDAsMCk7cmV0dXJuIGRheS5nZXREYXkoKX0pLCIlVyI6KGZ1bmN0aW9uKGRhdGUpe3ZhciBqYW5GaXJzdD1uZXcgRGF0ZShkYXRlLnRtX3llYXIsMCwxKTt2YXIgZmlyc3RNb25kYXk9amFuRmlyc3QuZ2V0RGF5KCk9PT0xP2phbkZpcnN0Ol9fYWRkRGF5cyhqYW5GaXJzdCxqYW5GaXJzdC5nZXREYXkoKT09PTA/MTo3LWphbkZpcnN0LmdldERheSgpKzEpO3ZhciBlbmREYXRlPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLGRhdGUudG1fbW9uLGRhdGUudG1fbWRheSk7aWYoY29tcGFyZUJ5RGF5KGZpcnN0TW9uZGF5LGVuZERhdGUpPDApe3ZhciBmZWJydWFyeUZpcnN0VW50aWxFbmRNb250aD1fX2FycmF5U3VtKF9faXNMZWFwWWVhcihlbmREYXRlLmdldEZ1bGxZZWFyKCkpP19fTU9OVEhfREFZU19MRUFQOl9fTU9OVEhfREFZU19SRUdVTEFSLGVuZERhdGUuZ2V0TW9udGgoKS0xKS0zMTt2YXIgZmlyc3RNb25kYXlVbnRpbEVuZEphbnVhcnk9MzEtZmlyc3RNb25kYXkuZ2V0RGF0ZSgpO3ZhciBkYXlzPWZpcnN0TW9uZGF5VW50aWxFbmRKYW51YXJ5K2ZlYnJ1YXJ5Rmlyc3RVbnRpbEVuZE1vbnRoK2VuZERhdGUuZ2V0RGF0ZSgpO3JldHVybiBsZWFkaW5nTnVsbHMoTWF0aC5jZWlsKGRheXMvNyksMil9cmV0dXJuIGNvbXBhcmVCeURheShmaXJzdE1vbmRheSxqYW5GaXJzdCk9PT0wPyIwMSI6IjAwIn0pLCIleSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybihkYXRlLnRtX3llYXIrMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9KSwiJVkiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gZGF0ZS50bV95ZWFyKzE5MDB9KSwiJXoiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4iIn0pLCIlWiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiIifSksIiUlIjooZnVuY3Rpb24oKXtyZXR1cm4iJSJ9KX07Zm9yKHZhciBydWxlIGluIEVYUEFOU0lPTl9SVUxFU18yKXtpZihwYXR0ZXJuLmluZGV4T2YocnVsZSk+PTApe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18yW3J1bGVdKGRhdGUpKX19dmFyIGJ5dGVzPWludEFycmF5RnJvbVN0cmluZyhwYXR0ZXJuLGZhbHNlKTtpZihieXRlcy5sZW5ndGg+bWF4c2l6ZSl7cmV0dXJuIDB9d3JpdGVBcnJheVRvTWVtb3J5KGJ5dGVzLHMpO3JldHVybiBieXRlcy5sZW5ndGgtMX1mdW5jdGlvbiBfc3RyZnRpbWVfbChzLG1heHNpemUsZm9ybWF0LHRtKXtyZXR1cm4gX3N0cmZ0aW1lKHMsbWF4c2l6ZSxmb3JtYXQsdG0pfWZ1bmN0aW9uIF9hYm9ydCgpe01vZHVsZVsiYWJvcnQiXSgpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzKCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzIik7YWJvcnQoLTEpfWZ1bmN0aW9uIF9wdGhyZWFkX2NvbmRfd2FpdCgpe3JldHVybiAwfXZhciBfZmFicz1NYXRoX2Ficzt2YXIgX2dldGM9X2ZnZXRjO2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlciIpO2Fib3J0KC0xKX12YXIgQnJvd3Nlcj17bWFpbkxvb3A6e3NjaGVkdWxlcjpudWxsLG1ldGhvZDoiIixzaG91bGRQYXVzZTpmYWxzZSxwYXVzZWQ6ZmFsc2UscXVldWU6W10scGF1c2U6KGZ1bmN0aW9uKCl7QnJvd3Nlci5tYWluTG9vcC5zaG91bGRQYXVzZT10cnVlfSkscmVzdW1lOihmdW5jdGlvbigpe2lmKEJyb3dzZXIubWFpbkxvb3AucGF1c2VkKXtCcm93c2VyLm1haW5Mb29wLnBhdXNlZD1mYWxzZTtCcm93c2VyLm1haW5Mb29wLnNjaGVkdWxlcigpfUJyb3dzZXIubWFpbkxvb3Auc2hvdWxkUGF1c2U9ZmFsc2V9KSx1cGRhdGVTdGF0dXM6KGZ1bmN0aW9uKCl7aWYoTW9kdWxlWyJzZXRTdGF0dXMiXSl7dmFyIG1lc3NhZ2U9TW9kdWxlWyJzdGF0dXNNZXNzYWdlIl18fCJQbGVhc2Ugd2FpdC4uLiI7dmFyIHJlbWFpbmluZz1Ccm93c2VyLm1haW5Mb29wLnJlbWFpbmluZ0Jsb2NrZXJzO3ZhciBleHBlY3RlZD1Ccm93c2VyLm1haW5Mb29wLmV4cGVjdGVkQmxvY2tlcnM7aWYocmVtYWluaW5nKXtpZihyZW1haW5pbmc8ZXhwZWN0ZWQpe01vZHVsZVsic2V0U3RhdHVzIl0obWVzc2FnZSsiICgiKyhleHBlY3RlZC1yZW1haW5pbmcpKyIvIitleHBlY3RlZCsiKSIpfWVsc2V7TW9kdWxlWyJzZXRTdGF0dXMiXShtZXNzYWdlKX19ZWxzZXtNb2R1bGVbInNldFN0YXR1cyJdKCIiKX19fSl9LGlzRnVsbFNjcmVlbjpmYWxzZSxwb2ludGVyTG9jazpmYWxzZSxtb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxiYWNrczpbXSx3b3JrZXJzOltdLGluaXQ6KGZ1bmN0aW9uKCl7aWYoIU1vZHVsZVsicHJlbG9hZFBsdWdpbnMiXSlNb2R1bGVbInByZWxvYWRQbHVnaW5zIl09W107aWYoQnJvd3Nlci5pbml0dGVkfHxFTlZJUk9OTUVOVF9JU19XT1JLRVIpcmV0dXJuO0Jyb3dzZXIuaW5pdHRlZD10cnVlO3RyeXtuZXcgQmxvYjtCcm93c2VyLmhhc0Jsb2JDb25zdHJ1Y3Rvcj10cnVlfWNhdGNoKGUpe0Jyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yPWZhbHNlO2NvbnNvbGUubG9nKCJ3YXJuaW5nOiBubyBibG9iIGNvbnN0cnVjdG9yLCBjYW5ub3QgY3JlYXRlIGJsb2JzIHdpdGggbWltZXR5cGVzIil9QnJvd3Nlci5CbG9iQnVpbGRlcj10eXBlb2YgTW96QmxvYkJ1aWxkZXIhPSJ1bmRlZmluZWQiP01vekJsb2JCdWlsZGVyOnR5cGVvZiBXZWJLaXRCbG9iQnVpbGRlciE9InVuZGVmaW5lZCI/V2ViS2l0QmxvYkJ1aWxkZXI6IUJyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yP2NvbnNvbGUubG9nKCJ3YXJuaW5nOiBubyBCbG9iQnVpbGRlciIpOm51bGw7QnJvd3Nlci5VUkxPYmplY3Q9dHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCI/d2luZG93LlVSTD93aW5kb3cuVVJMOndpbmRvdy53ZWJraXRVUkw6dW5kZWZpbmVkO2lmKCFNb2R1bGUubm9JbWFnZURlY29kaW5nJiZ0eXBlb2YgQnJvd3Nlci5VUkxPYmplY3Q9PT0idW5kZWZpbmVkIil7Y29uc29sZS5sb2coIndhcm5pbmc6IEJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBjcmVhdGluZyBvYmplY3QgVVJMcy4gQnVpbHQtaW4gYnJvd3NlciBpbWFnZSBkZWNvZGluZyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIik7TW9kdWxlLm5vSW1hZ2VEZWNvZGluZz10cnVlfXZhciBpbWFnZVBsdWdpbj17fTtpbWFnZVBsdWdpblsiY2FuSGFuZGxlIl09ZnVuY3Rpb24gaW1hZ2VQbHVnaW5fY2FuSGFuZGxlKG5hbWUpe3JldHVybiFNb2R1bGUubm9JbWFnZURlY29kaW5nJiYvXC4oanBnfGpwZWd8cG5nfGJtcCkkL2kudGVzdChuYW1lKX07aW1hZ2VQbHVnaW5bImhhbmRsZSJdPWZ1bmN0aW9uIGltYWdlUGx1Z2luX2hhbmRsZShieXRlQXJyYXksbmFtZSxvbmxvYWQsb25lcnJvcil7dmFyIGI9bnVsbDtpZihCcm93c2VyLmhhc0Jsb2JDb25zdHJ1Y3Rvcil7dHJ5e2I9bmV3IEJsb2IoW2J5dGVBcnJheV0se3R5cGU6QnJvd3Nlci5nZXRNaW1ldHlwZShuYW1lKX0pO2lmKGIuc2l6ZSE9PWJ5dGVBcnJheS5sZW5ndGgpe2I9bmV3IEJsb2IoWyhuZXcgVWludDhBcnJheShieXRlQXJyYXkpKS5idWZmZXJdLHt0eXBlOkJyb3dzZXIuZ2V0TWltZXR5cGUobmFtZSl9KX19Y2F0Y2goZSl7UnVudGltZS53YXJuT25jZSgiQmxvYiBjb25zdHJ1Y3RvciBwcmVzZW50IGJ1dCBmYWlsczogIitlKyI7IGZhbGxpbmcgYmFjayB0byBibG9iIGJ1aWxkZXIiKX19aWYoIWIpe3ZhciBiYj1uZXcgQnJvd3Nlci5CbG9iQnVpbGRlcjtiYi5hcHBlbmQoKG5ldyBVaW50OEFycmF5KGJ5dGVBcnJheSkpLmJ1ZmZlcik7Yj1iYi5nZXRCbG9iKCl9dmFyIHVybD1Ccm93c2VyLlVSTE9iamVjdC5jcmVhdGVPYmplY3RVUkwoYik7dmFyIGltZz1uZXcgSW1hZ2U7aW1nLm9ubG9hZD1mdW5jdGlvbiBpbWdfb25sb2FkKCl7YXNzZXJ0KGltZy5jb21wbGV0ZSwiSW1hZ2UgIituYW1lKyIgY291bGQgbm90IGJlIGRlY29kZWQiKTt2YXIgY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2NhbnZhcy53aWR0aD1pbWcud2lkdGg7Y2FudmFzLmhlaWdodD1pbWcuaGVpZ2h0O3ZhciBjdHg9Y2FudmFzLmdldENvbnRleHQoIjJkIik7Y3R4LmRyYXdJbWFnZShpbWcsMCwwKTtNb2R1bGVbInByZWxvYWRlZEltYWdlcyJdW25hbWVdPWNhbnZhcztCcm93c2VyLlVSTE9iamVjdC5yZXZva2VPYmplY3RVUkwodXJsKTtpZihvbmxvYWQpb25sb2FkKGJ5dGVBcnJheSl9O2ltZy5vbmVycm9yPWZ1bmN0aW9uIGltZ19vbmVycm9yKGV2ZW50KXtjb25zb2xlLmxvZygiSW1hZ2UgIit1cmwrIiBjb3VsZCBub3QgYmUgZGVjb2RlZCIpO2lmKG9uZXJyb3Ipb25lcnJvcigpfTtpbWcuc3JjPXVybH07TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLnB1c2goaW1hZ2VQbHVnaW4pO3ZhciBhdWRpb1BsdWdpbj17fTthdWRpb1BsdWdpblsiY2FuSGFuZGxlIl09ZnVuY3Rpb24gYXVkaW9QbHVnaW5fY2FuSGFuZGxlKG5hbWUpe3JldHVybiFNb2R1bGUubm9BdWRpb0RlY29kaW5nJiZuYW1lLnN1YnN0cigtNClpbnsiLm9nZyI6MSwiLndhdiI6MSwiLm1wMyI6MX19O2F1ZGlvUGx1Z2luWyJoYW5kbGUiXT1mdW5jdGlvbiBhdWRpb1BsdWdpbl9oYW5kbGUoYnl0ZUFycmF5LG5hbWUsb25sb2FkLG9uZXJyb3Ipe3ZhciBkb25lPWZhbHNlO2Z1bmN0aW9uIGZpbmlzaChhdWRpbyl7aWYoZG9uZSlyZXR1cm47ZG9uZT10cnVlO01vZHVsZVsicHJlbG9hZGVkQXVkaW9zIl1bbmFtZV09YXVkaW87aWYob25sb2FkKW9ubG9hZChieXRlQXJyYXkpfWZ1bmN0aW9uIGZhaWwoKXtpZihkb25lKXJldHVybjtkb25lPXRydWU7TW9kdWxlWyJwcmVsb2FkZWRBdWRpb3MiXVtuYW1lXT1uZXcgQXVkaW87aWYob25lcnJvcilvbmVycm9yKCl9aWYoQnJvd3Nlci5oYXNCbG9iQ29uc3RydWN0b3Ipe3RyeXt2YXIgYj1uZXcgQmxvYihbYnl0ZUFycmF5XSx7dHlwZTpCcm93c2VyLmdldE1pbWV0eXBlKG5hbWUpfSl9Y2F0Y2goZSl7cmV0dXJuIGZhaWwoKX12YXIgdXJsPUJyb3dzZXIuVVJMT2JqZWN0LmNyZWF0ZU9iamVjdFVSTChiKTt2YXIgYXVkaW89bmV3IEF1ZGlvO2F1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoImNhbnBsYXl0aHJvdWdoIiwoZnVuY3Rpb24oKXtmaW5pc2goYXVkaW8pfSksZmFsc2UpO2F1ZGlvLm9uZXJyb3I9ZnVuY3Rpb24gYXVkaW9fb25lcnJvcihldmVudCl7aWYoZG9uZSlyZXR1cm47Y29uc29sZS5sb2coIndhcm5pbmc6IGJyb3dzZXIgY291bGQgbm90IGZ1bGx5IGRlY29kZSBhdWRpbyAiK25hbWUrIiwgdHJ5aW5nIHNsb3dlciBiYXNlNjQgYXBwcm9hY2giKTtmdW5jdGlvbiBlbmNvZGU2NChkYXRhKXt2YXIgQkFTRT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7dmFyIFBBRD0iPSI7dmFyIHJldD0iIjt2YXIgbGVmdGNoYXI9MDt2YXIgbGVmdGJpdHM9MDtmb3IodmFyIGk9MDtpPGRhdGEubGVuZ3RoO2krKyl7bGVmdGNoYXI9bGVmdGNoYXI8PDh8ZGF0YVtpXTtsZWZ0Yml0cys9ODt3aGlsZShsZWZ0Yml0cz49Nil7dmFyIGN1cnI9bGVmdGNoYXI+PmxlZnRiaXRzLTYmNjM7bGVmdGJpdHMtPTY7cmV0Kz1CQVNFW2N1cnJdfX1pZihsZWZ0Yml0cz09Mil7cmV0Kz1CQVNFWyhsZWZ0Y2hhciYzKTw8NF07cmV0Kz1QQUQrUEFEfWVsc2UgaWYobGVmdGJpdHM9PTQpe3JldCs9QkFTRVsobGVmdGNoYXImMTUpPDwyXTtyZXQrPVBBRH1yZXR1cm4gcmV0fWF1ZGlvLnNyYz0iZGF0YTphdWRpby94LSIrbmFtZS5zdWJzdHIoLTMpKyI7YmFzZTY0LCIrZW5jb2RlNjQoYnl0ZUFycmF5KTtmaW5pc2goYXVkaW8pfTthdWRpby5zcmM9dXJsO0Jyb3dzZXIuc2FmZVNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZmluaXNoKGF1ZGlvKX0pLDFlNCl9ZWxzZXtyZXR1cm4gZmFpbCgpfX07TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLnB1c2goYXVkaW9QbHVnaW4pO3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtpZihjYW52YXMpe2NhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2s9Y2FudmFzWyJyZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJtb3pSZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJ3ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJtc1JlcXVlc3RQb2ludGVyTG9jayJdfHwoZnVuY3Rpb24oKXt9KTtjYW52YXMuZXhpdFBvaW50ZXJMb2NrPWRvY3VtZW50WyJleGl0UG9pbnRlckxvY2siXXx8ZG9jdW1lbnRbIm1vekV4aXRQb2ludGVyTG9jayJdfHxkb2N1bWVudFsid2Via2l0RXhpdFBvaW50ZXJMb2NrIl18fGRvY3VtZW50WyJtc0V4aXRQb2ludGVyTG9jayJdfHwoZnVuY3Rpb24oKXt9KTtjYW52YXMuZXhpdFBvaW50ZXJMb2NrPWNhbnZhcy5leGl0UG9pbnRlckxvY2suYmluZChkb2N1bWVudCk7ZnVuY3Rpb24gcG9pbnRlckxvY2tDaGFuZ2UoKXtCcm93c2VyLnBvaW50ZXJMb2NrPWRvY3VtZW50WyJwb2ludGVyTG9ja0VsZW1lbnQiXT09PWNhbnZhc3x8ZG9jdW1lbnRbIm1velBvaW50ZXJMb2NrRWxlbWVudCJdPT09Y2FudmFzfHxkb2N1bWVudFsid2Via2l0UG9pbnRlckxvY2tFbGVtZW50Il09PT1jYW52YXN8fGRvY3VtZW50WyJtc1BvaW50ZXJMb2NrRWxlbWVudCJdPT09Y2FudmFzfWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJsb2NrY2hhbmdlIixwb2ludGVyTG9ja0NoYW5nZSxmYWxzZSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW96cG9pbnRlcmxvY2tjaGFuZ2UiLHBvaW50ZXJMb2NrQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2NoYW5nZSIscG9pbnRlckxvY2tDaGFuZ2UsZmFsc2UpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1zcG9pbnRlcmxvY2tjaGFuZ2UiLHBvaW50ZXJMb2NrQ2hhbmdlLGZhbHNlKTtpZihNb2R1bGVbImVsZW1lbnRQb2ludGVyTG9jayJdKXtjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbihldil7aWYoIUJyb3dzZXIucG9pbnRlckxvY2smJmNhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2spe2NhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2soKTtldi5wcmV2ZW50RGVmYXVsdCgpfX0pLGZhbHNlKX19fSksY3JlYXRlQ29udGV4dDooZnVuY3Rpb24oY2FudmFzLHVzZVdlYkdMLHNldEluTW9kdWxlLHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpe3ZhciBjdHg7dmFyIGVycm9ySW5mbz0iPyI7ZnVuY3Rpb24gb25Db250ZXh0Q3JlYXRpb25FcnJvcihldmVudCl7ZXJyb3JJbmZvPWV2ZW50LnN0YXR1c01lc3NhZ2V8fGVycm9ySW5mb310cnl7aWYodXNlV2ViR0wpe3ZhciBjb250ZXh0QXR0cmlidXRlcz17YW50aWFsaWFzOmZhbHNlLGFscGhhOmZhbHNlfTtpZih3ZWJHTENvbnRleHRBdHRyaWJ1dGVzKXtmb3IodmFyIGF0dHJpYnV0ZSBpbiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzKXtjb250ZXh0QXR0cmlidXRlc1thdHRyaWJ1dGVdPXdlYkdMQ29udGV4dEF0dHJpYnV0ZXNbYXR0cmlidXRlXX19Y2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLG9uQ29udGV4dENyZWF0aW9uRXJyb3IsZmFsc2UpO3RyeXtbImV4cGVyaW1lbnRhbC13ZWJnbCIsIndlYmdsIl0uc29tZSgoZnVuY3Rpb24od2ViZ2xJZCl7cmV0dXJuIGN0eD1jYW52YXMuZ2V0Q29udGV4dCh3ZWJnbElkLGNvbnRleHRBdHRyaWJ1dGVzKX0pKX1maW5hbGx5e2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIixvbkNvbnRleHRDcmVhdGlvbkVycm9yLGZhbHNlKX19ZWxzZXtjdHg9Y2FudmFzLmdldENvbnRleHQoIjJkIil9aWYoIWN0eCl0aHJvdyI6KCJ9Y2F0Y2goZSl7TW9kdWxlLnByaW50KCJDb3VsZCBub3QgY3JlYXRlIGNhbnZhczogIitbZXJyb3JJbmZvLGVdKTtyZXR1cm4gbnVsbH1pZih1c2VXZWJHTCl7Y2FudmFzLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iYmxhY2sifWlmKHNldEluTW9kdWxlKXtHTGN0eD1Nb2R1bGUuY3R4PWN0eDtNb2R1bGUudXNlV2ViR0w9dXNlV2ViR0w7QnJvd3Nlci5tb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihjYWxsYmFjayl7Y2FsbGJhY2soKX0pKTtCcm93c2VyLmluaXQoKX1yZXR1cm4gY3R4fSksZGVzdHJveUNvbnRleHQ6KGZ1bmN0aW9uKGNhbnZhcyx1c2VXZWJHTCxzZXRJbk1vZHVsZSl7fSksZnVsbFNjcmVlbkhhbmRsZXJzSW5zdGFsbGVkOmZhbHNlLGxvY2tQb2ludGVyOnVuZGVmaW5lZCxyZXNpemVDYW52YXM6dW5kZWZpbmVkLHJlcXVlc3RGdWxsU2NyZWVuOihmdW5jdGlvbihsb2NrUG9pbnRlcixyZXNpemVDYW52YXMpe0Jyb3dzZXIubG9ja1BvaW50ZXI9bG9ja1BvaW50ZXI7QnJvd3Nlci5yZXNpemVDYW52YXM9cmVzaXplQ2FudmFzO2lmKHR5cGVvZiBCcm93c2VyLmxvY2tQb2ludGVyPT09InVuZGVmaW5lZCIpQnJvd3Nlci5sb2NrUG9pbnRlcj10cnVlO2lmKHR5cGVvZiBCcm93c2VyLnJlc2l6ZUNhbnZhcz09PSJ1bmRlZmluZWQiKUJyb3dzZXIucmVzaXplQ2FudmFzPWZhbHNlO3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtmdW5jdGlvbiBmdWxsU2NyZWVuQ2hhbmdlKCl7QnJvd3Nlci5pc0Z1bGxTY3JlZW49ZmFsc2U7dmFyIGNhbnZhc0NvbnRhaW5lcj1jYW52YXMucGFyZW50Tm9kZTtpZigoZG9jdW1lbnRbIndlYmtpdEZ1bGxTY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1vekZ1bGxzY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJmdWxsU2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsiZnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKT09PWNhbnZhc0NvbnRhaW5lcil7Y2FudmFzLmNhbmNlbEZ1bGxTY3JlZW49ZG9jdW1lbnRbImNhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIm1vekNhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIndlYmtpdENhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIm1zRXhpdEZ1bGxzY3JlZW4iXXx8ZG9jdW1lbnRbImV4aXRGdWxsc2NyZWVuIl18fChmdW5jdGlvbigpe30pO2NhbnZhcy5jYW5jZWxGdWxsU2NyZWVuPWNhbnZhcy5jYW5jZWxGdWxsU2NyZWVuLmJpbmQoZG9jdW1lbnQpO2lmKEJyb3dzZXIubG9ja1BvaW50ZXIpY2FudmFzLnJlcXVlc3RQb2ludGVyTG9jaygpO0Jyb3dzZXIuaXNGdWxsU2NyZWVuPXRydWU7aWYoQnJvd3Nlci5yZXNpemVDYW52YXMpQnJvd3Nlci5zZXRGdWxsU2NyZWVuQ2FudmFzU2l6ZSgpfWVsc2V7Y2FudmFzQ29udGFpbmVyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNhbnZhcyxjYW52YXNDb250YWluZXIpO2NhbnZhc0NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNhbnZhc0NvbnRhaW5lcik7aWYoQnJvd3Nlci5yZXNpemVDYW52YXMpQnJvd3Nlci5zZXRXaW5kb3dlZENhbnZhc1NpemUoKX1pZihNb2R1bGVbIm9uRnVsbFNjcmVlbiJdKU1vZHVsZVsib25GdWxsU2NyZWVuIl0oQnJvd3Nlci5pc0Z1bGxTY3JlZW4pO0Jyb3dzZXIudXBkYXRlQ2FudmFzRGltZW5zaW9ucyhjYW52YXMpfWlmKCFCcm93c2VyLmZ1bGxTY3JlZW5IYW5kbGVyc0luc3RhbGxlZCl7QnJvd3Nlci5mdWxsU2NyZWVuSGFuZGxlcnNJbnN0YWxsZWQ9dHJ1ZTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3pmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJNU0Z1bGxzY3JlZW5DaGFuZ2UiLGZ1bGxTY3JlZW5DaGFuZ2UsZmFsc2UpfXZhciBjYW52YXNDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Y2FudmFzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNhbnZhc0NvbnRhaW5lcixjYW52YXMpO2NhbnZhc0NvbnRhaW5lci5hcHBlbmRDaGlsZChjYW52YXMpO2NhbnZhc0NvbnRhaW5lci5yZXF1ZXN0RnVsbFNjcmVlbj1jYW52YXNDb250YWluZXJbInJlcXVlc3RGdWxsU2NyZWVuIl18fGNhbnZhc0NvbnRhaW5lclsibW96UmVxdWVzdEZ1bGxTY3JlZW4iXXx8Y2FudmFzQ29udGFpbmVyWyJtc1JlcXVlc3RGdWxsc2NyZWVuIl18fChjYW52YXNDb250YWluZXJbIndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuIl0/KGZ1bmN0aW9uKCl7Y2FudmFzQ29udGFpbmVyWyJ3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiJdKEVsZW1lbnRbIkFMTE9XX0tFWUJPQVJEX0lOUFVUIl0pfSk6bnVsbCk7Y2FudmFzQ29udGFpbmVyLnJlcXVlc3RGdWxsU2NyZWVuKCl9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpe2lmKHR5cGVvZiB3aW5kb3c9PT0idW5kZWZpbmVkIil7c2V0VGltZW91dChmdW5jLDFlMy82MCl9ZWxzZXtpZighd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSl7d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT13aW5kb3dbInJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIm1velJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl18fHdpbmRvd1sib1JlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbInNldFRpbWVvdXQiXX13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpfX0sc2FmZUNhbGxiYWNrOihmdW5jdGlvbihmdW5jKXtyZXR1cm4oZnVuY3Rpb24oKXtpZighQUJPUlQpcmV0dXJuIGZ1bmMuYXBwbHkobnVsbCxhcmd1bWVudHMpfSl9KSxzYWZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lOihmdW5jdGlvbihmdW5jKXtyZXR1cm4gQnJvd3Nlci5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7aWYoIUFCT1JUKWZ1bmMoKX0pKX0pLHNhZmVTZXRUaW1lb3V0OihmdW5jdGlvbihmdW5jLHRpbWVvdXQpe01vZHVsZVsibm9FeGl0UnVudGltZSJdPXRydWU7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aWYoIUFCT1JUKWZ1bmMoKX0pLHRpbWVvdXQpfSksc2FmZVNldEludGVydmFsOihmdW5jdGlvbihmdW5jLHRpbWVvdXQpe01vZHVsZVsibm9FeGl0UnVudGltZSJdPXRydWU7cmV0dXJuIHNldEludGVydmFsKChmdW5jdGlvbigpe2lmKCFBQk9SVClmdW5jKCl9KSx0aW1lb3V0KX0pLGdldE1pbWV0eXBlOihmdW5jdGlvbihuYW1lKXtyZXR1cm57ImpwZyI6ImltYWdlL2pwZWciLCJqcGVnIjoiaW1hZ2UvanBlZyIsInBuZyI6ImltYWdlL3BuZyIsImJtcCI6ImltYWdlL2JtcCIsIm9nZyI6ImF1ZGlvL29nZyIsIndhdiI6ImF1ZGlvL3dhdiIsIm1wMyI6ImF1ZGlvL21wZWcifVtuYW1lLnN1YnN0cihuYW1lLmxhc3RJbmRleE9mKCIuIikrMSldfSksZ2V0VXNlck1lZGlhOihmdW5jdGlvbihmdW5jKXtpZighd2luZG93LmdldFVzZXJNZWRpYSl7d2luZG93LmdldFVzZXJNZWRpYT1uYXZpZ2F0b3JbImdldFVzZXJNZWRpYSJdfHxuYXZpZ2F0b3JbIm1vekdldFVzZXJNZWRpYSJdfXdpbmRvdy5nZXRVc2VyTWVkaWEoZnVuYyl9KSxnZXRNb3ZlbWVudFg6KGZ1bmN0aW9uKGV2ZW50KXtyZXR1cm4gZXZlbnRbIm1vdmVtZW50WCJdfHxldmVudFsibW96TW92ZW1lbnRYIl18fGV2ZW50WyJ3ZWJraXRNb3ZlbWVudFgiXXx8MH0pLGdldE1vdmVtZW50WTooZnVuY3Rpb24oZXZlbnQpe3JldHVybiBldmVudFsibW92ZW1lbnRZIl18fGV2ZW50WyJtb3pNb3ZlbWVudFkiXXx8ZXZlbnRbIndlYmtpdE1vdmVtZW50WSJdfHwwfSksZ2V0TW91c2VXaGVlbERlbHRhOihmdW5jdGlvbihldmVudCl7dmFyIGRlbHRhPTA7c3dpdGNoKGV2ZW50LnR5cGUpe2Nhc2UiRE9NTW91c2VTY3JvbGwiOmRlbHRhPWV2ZW50LmRldGFpbDticmVhaztjYXNlIm1vdXNld2hlZWwiOmRlbHRhPS1ldmVudC53aGVlbERlbHRhO2JyZWFrO2Nhc2Uid2hlZWwiOmRlbHRhPWV2ZW50LmRlbHRhWTticmVhaztkZWZhdWx0OnRocm93InVucmVjb2duaXplZCBtb3VzZSB3aGVlbCBldmVudDogIitldmVudC50eXBlfXJldHVybiBNYXRoLm1heCgtMSxNYXRoLm1pbigxLGRlbHRhKSl9KSxtb3VzZVg6MCxtb3VzZVk6MCxtb3VzZU1vdmVtZW50WDowLG1vdXNlTW92ZW1lbnRZOjAsdG91Y2hlczp7fSxsYXN0VG91Y2hlczp7fSxjYWxjdWxhdGVNb3VzZUV2ZW50OihmdW5jdGlvbihldmVudCl7aWYoQnJvd3Nlci5wb2ludGVyTG9jayl7aWYoZXZlbnQudHlwZSE9Im1vdXNlbW92ZSImJiJtb3pNb3ZlbWVudFgiaW4gZXZlbnQpe0Jyb3dzZXIubW91c2VNb3ZlbWVudFg9QnJvd3Nlci5tb3VzZU1vdmVtZW50WT0wfWVsc2V7QnJvd3Nlci5tb3VzZU1vdmVtZW50WD1Ccm93c2VyLmdldE1vdmVtZW50WChldmVudCk7QnJvd3Nlci5tb3VzZU1vdmVtZW50WT1Ccm93c2VyLmdldE1vdmVtZW50WShldmVudCl9aWYodHlwZW9mIFNETCE9InVuZGVmaW5lZCIpe0Jyb3dzZXIubW91c2VYPVNETC5tb3VzZVgrQnJvd3Nlci5tb3VzZU1vdmVtZW50WDtCcm93c2VyLm1vdXNlWT1TREwubW91c2VZK0Jyb3dzZXIubW91c2VNb3ZlbWVudFl9ZWxzZXtCcm93c2VyLm1vdXNlWCs9QnJvd3Nlci5tb3VzZU1vdmVtZW50WDtCcm93c2VyLm1vdXNlWSs9QnJvd3Nlci5tb3VzZU1vdmVtZW50WX19ZWxzZXt2YXIgcmVjdD1Nb2R1bGVbImNhbnZhcyJdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBjdz1Nb2R1bGVbImNhbnZhcyJdLndpZHRoO3ZhciBjaD1Nb2R1bGVbImNhbnZhcyJdLmhlaWdodDt2YXIgc2Nyb2xsWD10eXBlb2Ygd2luZG93LnNjcm9sbFghPT0idW5kZWZpbmVkIj93aW5kb3cuc2Nyb2xsWDp3aW5kb3cucGFnZVhPZmZzZXQ7dmFyIHNjcm9sbFk9dHlwZW9mIHdpbmRvdy5zY3JvbGxZIT09InVuZGVmaW5lZCI/d2luZG93LnNjcm9sbFk6d2luZG93LnBhZ2VZT2Zmc2V0O2lmKGV2ZW50LnR5cGU9PT0idG91Y2hzdGFydCJ8fGV2ZW50LnR5cGU9PT0idG91Y2hlbmQifHxldmVudC50eXBlPT09InRvdWNobW92ZSIpe3ZhciB0b3VjaD1ldmVudC50b3VjaDtpZih0b3VjaD09PXVuZGVmaW5lZCl7cmV0dXJufXZhciBhZGp1c3RlZFg9dG91Y2gucGFnZVgtKHNjcm9sbFgrcmVjdC5sZWZ0KTt2YXIgYWRqdXN0ZWRZPXRvdWNoLnBhZ2VZLShzY3JvbGxZK3JlY3QudG9wKTthZGp1c3RlZFg9YWRqdXN0ZWRYKihjdy9yZWN0LndpZHRoKTthZGp1c3RlZFk9YWRqdXN0ZWRZKihjaC9yZWN0LmhlaWdodCk7dmFyIGNvb3Jkcz17eDphZGp1c3RlZFgseTphZGp1c3RlZFl9O2lmKGV2ZW50LnR5cGU9PT0idG91Y2hzdGFydCIpe0Jyb3dzZXIubGFzdFRvdWNoZXNbdG91Y2guaWRlbnRpZmllcl09Y29vcmRzO0Jyb3dzZXIudG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXT1jb29yZHN9ZWxzZSBpZihldmVudC50eXBlPT09InRvdWNoZW5kInx8ZXZlbnQudHlwZT09PSJ0b3VjaG1vdmUiKXtCcm93c2VyLmxhc3RUb3VjaGVzW3RvdWNoLmlkZW50aWZpZXJdPUJyb3dzZXIudG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXTtCcm93c2VyLnRvdWNoZXNbdG91Y2guaWRlbnRpZmllcl09e3g6YWRqdXN0ZWRYLHk6YWRqdXN0ZWRZfX1yZXR1cm59dmFyIHg9ZXZlbnQucGFnZVgtKHNjcm9sbFgrcmVjdC5sZWZ0KTt2YXIgeT1ldmVudC5wYWdlWS0oc2Nyb2xsWStyZWN0LnRvcCk7eD14Kihjdy9yZWN0LndpZHRoKTt5PXkqKGNoL3JlY3QuaGVpZ2h0KTtCcm93c2VyLm1vdXNlTW92ZW1lbnRYPXgtQnJvd3Nlci5tb3VzZVg7QnJvd3Nlci5tb3VzZU1vdmVtZW50WT15LUJyb3dzZXIubW91c2VZO0Jyb3dzZXIubW91c2VYPXg7QnJvd3Nlci5tb3VzZVk9eX19KSx4aHJMb2FkOihmdW5jdGlvbih1cmwsb25sb2FkLG9uZXJyb3Ipe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCx0cnVlKTt4aHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7eGhyLm9ubG9hZD1mdW5jdGlvbiB4aHJfb25sb2FkKCl7aWYoeGhyLnN0YXR1cz09MjAwfHx4aHIuc3RhdHVzPT0wJiZ4aHIucmVzcG9uc2Upe29ubG9hZCh4aHIucmVzcG9uc2UpfWVsc2V7b25lcnJvcigpfX07eGhyLm9uZXJyb3I9b25lcnJvcjt4aHIuc2VuZChudWxsKX0pLGFzeW5jTG9hZDooZnVuY3Rpb24odXJsLG9ubG9hZCxvbmVycm9yLG5vUnVuRGVwKXtCcm93c2VyLnhockxvYWQodXJsLChmdW5jdGlvbihhcnJheUJ1ZmZlcil7YXNzZXJ0KGFycmF5QnVmZmVyLCdMb2FkaW5nIGRhdGEgZmlsZSAiJyt1cmwrJyIgZmFpbGVkIChubyBhcnJheUJ1ZmZlcikuJyk7b25sb2FkKG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7aWYoIW5vUnVuRGVwKXJlbW92ZVJ1bkRlcGVuZGVuY3koImFsICIrdXJsKX0pLChmdW5jdGlvbihldmVudCl7aWYob25lcnJvcil7b25lcnJvcigpfWVsc2V7dGhyb3cnTG9hZGluZyBkYXRhIGZpbGUgIicrdXJsKyciIGZhaWxlZC4nfX0pKTtpZighbm9SdW5EZXApYWRkUnVuRGVwZW5kZW5jeSgiYWwgIit1cmwpfSkscmVzaXplTGlzdGVuZXJzOltdLHVwZGF0ZVJlc2l6ZUxpc3RlbmVyczooZnVuY3Rpb24oKXt2YXIgY2FudmFzPU1vZHVsZVsiY2FudmFzIl07QnJvd3Nlci5yZXNpemVMaXN0ZW5lcnMuZm9yRWFjaCgoZnVuY3Rpb24obGlzdGVuZXIpe2xpc3RlbmVyKGNhbnZhcy53aWR0aCxjYW52YXMuaGVpZ2h0KX0pKX0pLHNldENhbnZhc1NpemU6KGZ1bmN0aW9uKHdpZHRoLGhlaWdodCxub1VwZGF0ZXMpe3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtCcm93c2VyLnVwZGF0ZUNhbnZhc0RpbWVuc2lvbnMoY2FudmFzLHdpZHRoLGhlaWdodCk7aWYoIW5vVXBkYXRlcylCcm93c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVycygpfSksd2luZG93ZWRXaWR0aDowLHdpbmRvd2VkSGVpZ2h0OjAsc2V0RnVsbFNjcmVlbkNhbnZhc1NpemU6KGZ1bmN0aW9uKCl7aWYodHlwZW9mIFNETCE9InVuZGVmaW5lZCIpe3ZhciBmbGFncz1IRUFQVTMyW1NETC5zY3JlZW4rUnVudGltZS5RVUFOVFVNX1NJWkUqMD4+Ml07ZmxhZ3M9ZmxhZ3N8ODM4ODYwODtIRUFQMzJbU0RMLnNjcmVlbitSdW50aW1lLlFVQU5UVU1fU0laRSowPj4yXT1mbGFnc31Ccm93c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVycygpfSksc2V0V2luZG93ZWRDYW52YXNTaXplOihmdW5jdGlvbigpe2lmKHR5cGVvZiBTREwhPSJ1bmRlZmluZWQiKXt2YXIgZmxhZ3M9SEVBUFUzMltTREwuc2NyZWVuK1J1bnRpbWUuUVVBTlRVTV9TSVpFKjA+PjJdO2ZsYWdzPWZsYWdzJn44Mzg4NjA4O0hFQVAzMltTREwuc2NyZWVuK1J1bnRpbWUuUVVBTlRVTV9TSVpFKjA+PjJdPWZsYWdzfUJyb3dzZXIudXBkYXRlUmVzaXplTGlzdGVuZXJzKCl9KSx1cGRhdGVDYW52YXNEaW1lbnNpb25zOihmdW5jdGlvbihjYW52YXMsd05hdGl2ZSxoTmF0aXZlKXtpZih3TmF0aXZlJiZoTmF0aXZlKXtjYW52YXMud2lkdGhOYXRpdmU9d05hdGl2ZTtjYW52YXMuaGVpZ2h0TmF0aXZlPWhOYXRpdmV9ZWxzZXt3TmF0aXZlPWNhbnZhcy53aWR0aE5hdGl2ZTtoTmF0aXZlPWNhbnZhcy5oZWlnaHROYXRpdmV9dmFyIHc9d05hdGl2ZTt2YXIgaD1oTmF0aXZlO2lmKE1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSYmTW9kdWxlWyJmb3JjZWRBc3BlY3RSYXRpbyJdPjApe2lmKHcvaDxNb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pe3c9TWF0aC5yb3VuZChoKk1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSl9ZWxzZXtoPU1hdGgucm91bmQody9Nb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pfX1pZigoZG9jdW1lbnRbIndlYmtpdEZ1bGxTY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1vekZ1bGxzY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJmdWxsU2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsiZnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKT09PWNhbnZhcy5wYXJlbnROb2RlJiZ0eXBlb2Ygc2NyZWVuIT0idW5kZWZpbmVkIil7dmFyIGZhY3Rvcj1NYXRoLm1pbihzY3JlZW4ud2lkdGgvdyxzY3JlZW4uaGVpZ2h0L2gpO3c9TWF0aC5yb3VuZCh3KmZhY3Rvcik7aD1NYXRoLnJvdW5kKGgqZmFjdG9yKX1pZihCcm93c2VyLnJlc2l6ZUNhbnZhcyl7aWYoY2FudmFzLndpZHRoIT13KWNhbnZhcy53aWR0aD13O2lmKGNhbnZhcy5oZWlnaHQhPWgpY2FudmFzLmhlaWdodD1oO2lmKHR5cGVvZiBjYW52YXMuc3R5bGUhPSJ1bmRlZmluZWQiKXtjYW52YXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Y2FudmFzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKX19ZWxzZXtpZihjYW52YXMud2lkdGghPXdOYXRpdmUpY2FudmFzLndpZHRoPXdOYXRpdmU7aWYoY2FudmFzLmhlaWdodCE9aE5hdGl2ZSljYW52YXMuaGVpZ2h0PWhOYXRpdmU7aWYodHlwZW9mIGNhbnZhcy5zdHlsZSE9InVuZGVmaW5lZCIpe2lmKHchPXdOYXRpdmV8fGghPWhOYXRpdmUpe2NhbnZhcy5zdHlsZS5zZXRQcm9wZXJ0eSgid2lkdGgiLHcrInB4IiwiaW1wb3J0YW50Iik7Y2FudmFzLnN0eWxlLnNldFByb3BlcnR5KCJoZWlnaHQiLGgrInB4IiwiaW1wb3J0YW50Iil9ZWxzZXtjYW52YXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Y2FudmFzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKX19fX0pfTtmdW5jdGlvbiBfX19jdHlwZV9iX2xvYygpe3ZhciBtZT1fX19jdHlwZV9iX2xvYztpZighbWUucmV0KXt2YXIgdmFsdWVzPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwyLDIsMiwyLDIsMiwyLDIsODE5NSw4MTk0LDgxOTQsODE5NCw4MTk0LDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDI0NTc3LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTt2YXIgaTE2c2l6ZT0yO3ZhciBhcnI9X21hbGxvYyh2YWx1ZXMubGVuZ3RoKmkxNnNpemUpO2Zvcih2YXIgaT0wO2k8dmFsdWVzLmxlbmd0aDtpKyspe0hFQVAxNlthcnIraSppMTZzaXplPj4xXT12YWx1ZXNbaV19bWUucmV0PWFsbG9jYXRlKFthcnIrMTI4KmkxNnNpemVdLCJpMTYqIixBTExPQ19OT1JNQUwpfXJldHVybiBtZS5yZXR9ZnVuY3Rpb24gX2ZyZWUoKXt9TW9kdWxlWyJfZnJlZSJdPV9mcmVlO2Z1bmN0aW9uIF9mcmVlbG9jYWxlKGxvY2FsZSl7X2ZyZWUobG9jYWxlKX1mdW5jdGlvbiBfX19jeGFfYWxsb2NhdGVfZXhjZXB0aW9uKHNpemUpe3ZhciBwdHI9X21hbGxvYyhzaXplK19fX2N4YV9leGNlcHRpb25faGVhZGVyX3NpemUpO3JldHVybiBwdHIrX19fY3hhX2V4Y2VwdGlvbl9oZWFkZXJfc2l6ZX1mdW5jdGlvbiBfZm1vZCh4LHkpe3JldHVybiB4JXl9dmFyIF9mbW9kbD1fZm1vZDtmdW5jdGlvbiBfY2F0b3BlbihuYW1lLG9mbGFnKXtyZXR1cm4tMX1mdW5jdGlvbiBfY2F0Z2V0cyhjYXRkLHNldF9pZCxtc2dfaWQscyl7cmV0dXJuIHN9ZnVuY3Rpb24gX3NwcmludGYocyxmb3JtYXQsdmFyYXJncyl7cmV0dXJuIF9zbnByaW50ZihzLHVuZGVmaW5lZCxmb3JtYXQsdmFyYXJncyl9ZnVuY3Rpb24gX2FzcHJpbnRmKHMsZm9ybWF0LHZhcmFyZ3Mpe3JldHVybiBfc3ByaW50Zigtcyxmb3JtYXQsdmFyYXJncyl9ZnVuY3Rpb24gX3Zhc3ByaW50ZihzLGZvcm1hdCx2YV9hcmcpe3JldHVybiBfYXNwcmludGYocyxmb3JtYXQsSEVBUDMyW3ZhX2FyZz4+Ml0pfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0KCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0Iik7YWJvcnQoLTEpfWZ1bmN0aW9uIF90aW1lKHB0cil7dmFyIHJldD1NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKTtpZihwdHIpe0hFQVAzMltwdHI+PjJdPXJldH1yZXR1cm4gcmV0fWZ1bmN0aW9uIF9jb3B5c2lnbihhLGIpe3JldHVybiBfX3JlYWxseU5lZ2F0aXZlKGEpPT09X19yZWFsbHlOZWdhdGl2ZShiKT9hOi1hfWZ1bmN0aW9uIF9fX2N0eXBlX3RvdXBwZXJfbG9jKCl7dmFyIG1lPV9fX2N0eXBlX3RvdXBwZXJfbG9jO2lmKCFtZS5yZXQpe3ZhciB2YWx1ZXM9WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwtMSwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDEyMywxMjQsMTI1LDEyNiwxMjcsMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NV07dmFyIGkzMnNpemU9NDt2YXIgYXJyPV9tYWxsb2ModmFsdWVzLmxlbmd0aCppMzJzaXplKTtmb3IodmFyIGk9MDtpPHZhbHVlcy5sZW5ndGg7aSsrKXtIRUFQMzJbYXJyK2kqaTMyc2l6ZT4+Ml09dmFsdWVzW2ldfW1lLnJldD1hbGxvY2F0ZShbYXJyKzEyOCppMzJzaXplXSwiaTMyKiIsQUxMT0NfTk9STUFMKX1yZXR1cm4gbWUucmV0fWZ1bmN0aW9uIF9fX2N4YV9ndWFyZF9hY3F1aXJlKHZhcmlhYmxlKXtpZighSEVBUDhbdmFyaWFibGU+PjBdKXtIRUFQOFt2YXJpYWJsZT4+MF09MTtyZXR1cm4gMX1yZXR1cm4gMH1mdW5jdGlvbiBfX19jdHlwZV90b2xvd2VyX2xvYygpe3ZhciBtZT1fX19jdHlwZV90b2xvd2VyX2xvYztpZighbWUucmV0KXt2YXIgdmFsdWVzPVsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsLTEsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyNywxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XTt2YXIgaTMyc2l6ZT00O3ZhciBhcnI9X21hbGxvYyh2YWx1ZXMubGVuZ3RoKmkzMnNpemUpO2Zvcih2YXIgaT0wO2k8dmFsdWVzLmxlbmd0aDtpKyspe0hFQVAzMlthcnIraSppMzJzaXplPj4yXT12YWx1ZXNbaV19bWUucmV0PWFsbG9jYXRlKFthcnIrMTI4KmkzMnNpemVdLCJpMzIqIixBTExPQ19OT1JNQUwpfXJldHVybiBtZS5yZXR9dmFyIF9fX2N4YV9jYXVnaHRfZXhjZXB0aW9ucz1bXTtmdW5jdGlvbiBfX19jeGFfYmVnaW5fY2F0Y2gocHRyKXtfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udi51bmNhdWdodF9leGNlcHRpb24tLTtfX19jeGFfY2F1Z2h0X2V4Y2VwdGlvbnMucHVzaChfX19jeGFfbGFzdF90aHJvd25fZXhjZXB0aW9uKTtyZXR1cm4gcHRyfU1vZHVsZVsiX2JpdHNoaWZ0NjRTaGwiXT1fYml0c2hpZnQ2NFNobDtmdW5jdGlvbiBfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYoKXtpZighX19aTktTdDlleGNlcHRpb240d2hhdEV2LmJ1ZmZlcil7dmFyIG5hbWU9InN0ZDo6ZXhjZXB0aW9uIjtfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYuYnVmZmVyPV9tYWxsb2MobmFtZS5sZW5ndGgrMSk7d3JpdGVTdHJpbmdUb01lbW9yeShuYW1lLF9fWk5LU3Q5ZXhjZXB0aW9uNHdoYXRFdi5idWZmZXIpfXJldHVybiBfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYuYnVmZmVyfWZ1bmN0aW9uIF9fWk5TdDlleGNlcHRpb25EMkV2KCl7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yKCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yIik7YWJvcnQoLTEpfXZhciBfY29weXNpZ25sPV9jb3B5c2lnbjtmdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbigpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiIpO2Fib3J0KC0xKX12YXIgX19aVElTdDlleGNlcHRpb249YWxsb2NhdGUoW2FsbG9jYXRlKFsxLDAsMCwwLDAsMCwwXSwiaTgiLEFMTE9DX1NUQVRJQykrOCwwXSwiaTMyIixBTExPQ19TVEFUSUMpO3ZhciBfX19kc29faGFuZGxlPWFsbG9jYXRlKDEsImkzMioiLEFMTE9DX1NUQVRJQyk7RlMuc3RhdGljSW5pdCgpO19fQVRJTklUX18udW5zaGlmdCh7ZnVuYzooZnVuY3Rpb24oKXtpZighTW9kdWxlWyJub0ZTSW5pdCJdJiYhRlMuaW5pdC5pbml0aWFsaXplZClGUy5pbml0KCl9KX0pO19fQVRNQUlOX18ucHVzaCh7ZnVuYzooZnVuY3Rpb24oKXtGUy5pZ25vcmVQZXJtaXNzaW9ucz1mYWxzZX0pfSk7X19BVEVYSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe0ZTLnF1aXQoKX0pfSk7TW9kdWxlWyJGU19jcmVhdGVGb2xkZXIiXT1GUy5jcmVhdGVGb2xkZXI7TW9kdWxlWyJGU19jcmVhdGVQYXRoIl09RlMuY3JlYXRlUGF0aDtNb2R1bGVbIkZTX2NyZWF0ZURhdGFGaWxlIl09RlMuY3JlYXRlRGF0YUZpbGU7TW9kdWxlWyJGU19jcmVhdGVQcmVsb2FkZWRGaWxlIl09RlMuY3JlYXRlUHJlbG9hZGVkRmlsZTtNb2R1bGVbIkZTX2NyZWF0ZUxhenlGaWxlIl09RlMuY3JlYXRlTGF6eUZpbGU7TW9kdWxlWyJGU19jcmVhdGVMaW5rIl09RlMuY3JlYXRlTGluaztNb2R1bGVbIkZTX2NyZWF0ZURldmljZSJdPUZTLmNyZWF0ZURldmljZTtfX19lcnJub19zdGF0ZT1SdW50aW1lLnN0YXRpY0FsbG9jKDQpO0hFQVAzMltfX19lcnJub19zdGF0ZT4+Ml09MDtfX0FUSU5JVF9fLnVuc2hpZnQoe2Z1bmM6KGZ1bmN0aW9uKCl7VFRZLmluaXQoKX0pfSk7X19BVEVYSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe1RUWS5zaHV0ZG93bigpfSl9KTtUVFkudXRmOD1uZXcgUnVudGltZS5VVEY4UHJvY2Vzc29yO2lmKEVOVklST05NRU5UX0lTX05PREUpe3ZhciBmcz1yZXF1aXJlKCJmcyIpO05PREVGUy5zdGF0aWNJbml0KCl9X19BVElOSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe1NPQ0tGUy5yb290PUZTLm1vdW50KFNPQ0tGUyx7fSxudWxsKX0pfSk7X2ZnZXRjLnJldD1hbGxvY2F0ZShbMF0sImk4IixBTExPQ19TVEFUSUMpO01vZHVsZVsicmVxdWVzdEZ1bGxTY3JlZW4iXT1mdW5jdGlvbiBNb2R1bGVfcmVxdWVzdEZ1bGxTY3JlZW4obG9ja1BvaW50ZXIscmVzaXplQ2FudmFzKXtCcm93c2VyLnJlcXVlc3RGdWxsU2NyZWVuKGxvY2tQb2ludGVyLHJlc2l6ZUNhbnZhcyl9O01vZHVsZVsicmVxdWVzdEFuaW1hdGlvbkZyYW1lIl09ZnVuY3Rpb24gTW9kdWxlX3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKXtCcm93c2VyLnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKX07TW9kdWxlWyJzZXRDYW52YXNTaXplIl09ZnVuY3Rpb24gTW9kdWxlX3NldENhbnZhc1NpemUod2lkdGgsaGVpZ2h0LG5vVXBkYXRlcyl7QnJvd3Nlci5zZXRDYW52YXNTaXplKHdpZHRoLGhlaWdodCxub1VwZGF0ZXMpfTtNb2R1bGVbInBhdXNlTWFpbkxvb3AiXT1mdW5jdGlvbiBNb2R1bGVfcGF1c2VNYWluTG9vcCgpe0Jyb3dzZXIubWFpbkxvb3AucGF1c2UoKX07TW9kdWxlWyJyZXN1bWVNYWluTG9vcCJdPWZ1bmN0aW9uIE1vZHVsZV9yZXN1bWVNYWluTG9vcCgpe0Jyb3dzZXIubWFpbkxvb3AucmVzdW1lKCl9O01vZHVsZVsiZ2V0VXNlck1lZGlhIl09ZnVuY3Rpb24gTW9kdWxlX2dldFVzZXJNZWRpYSgpe0Jyb3dzZXIuZ2V0VXNlck1lZGlhKCl9O1NUQUNLX0JBU0U9U1RBQ0tUT1A9UnVudGltZS5hbGlnbk1lbW9yeShTVEFUSUNUT1ApO3N0YXRpY1NlYWxlZD10cnVlO1NUQUNLX01BWD1TVEFDS19CQVNFKzUyNDI4ODA7RFlOQU1JQ19CQVNFPURZTkFNSUNUT1A9UnVudGltZS5hbGlnbk1lbW9yeShTVEFDS19NQVgpO2Fzc2VydChEWU5BTUlDX0JBU0U8VE9UQUxfTUVNT1JZLCJUT1RBTF9NRU1PUlkgbm90IGJpZyBlbm91Z2ggZm9yIHN0YWNrIik7dmFyIGN0bHpfaTg9YWxsb2NhdGUoWzgsNyw2LDYsNSw1LDUsNSw0LDQsNCw0LDQsNCw0LDQsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLCJpOCIsQUxMT0NfRFlOQU1JQyk7dmFyIGN0dHpfaTg9YWxsb2NhdGUoWzgsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNiwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDUsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw3LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNSwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDYsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDBdLCJpOCIsQUxMT0NfRFlOQU1JQyk7dmFyIE1hdGhfbWluPU1hdGgubWluO2Z1bmN0aW9uIGludm9rZV9paWlpKGluZGV4LGExLGEyLGEzKXt0cnl7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paWlpIl0oaW5kZXgsYTEsYTIsYTMpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaShpbmRleCl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaSJdKGluZGV4KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92aShpbmRleCxhMSl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aSJdKGluZGV4LGExKX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92aWkoaW5kZXgsYTEsYTIpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpIl0oaW5kZXgsYTEsYTIpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpaWkoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcsYTgsYTkpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpaWlpaSJdKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3LGE4LGE5KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV9paShpbmRleCxhMSl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWkiXShpbmRleCxhMSl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaWlpaWQoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpaWQiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaShpbmRleCxhMSxhMixhMyl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpIl0oaW5kZXgsYTEsYTIsYTMpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWQoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpZCJdKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92KGluZGV4KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3YiXShpbmRleCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaWlpaWlpaWlpKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3LGE4KXt0cnl7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paWlpaWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaWlpaWkoaW5kZXgsYTEsYTIsYTMsYTQpe3RyeXtyZXR1cm4gTW9kdWxlWyJkeW5DYWxsX2lpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSxhNil7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX2lpaShpbmRleCxhMSxhMil7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWlpIl0oaW5kZXgsYTEsYTIpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX2lpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpKGluZGV4LGExLGEyLGEzLGE0KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3ZpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gYXNtUHJpbnRJbnQoeCx5KXtNb2R1bGUucHJpbnQoImludCAiK3grIiwiK3kpfWZ1bmN0aW9uIGFzbVByaW50RmxvYXQoeCx5KXtNb2R1bGUucHJpbnQoImZsb2F0ICIreCsiLCIreSl9dmFyIGFzbT0oZnVuY3Rpb24oZ2xvYmFsLGVudixidWZmZXIpIHsKLy8gRU1TQ1JJUFRFTl9TVEFSVF9BU00KInVzZSBhc20iO3ZhciBhPW5ldyBnbG9iYWwuSW50OEFycmF5KGJ1ZmZlcik7dmFyIGI9bmV3IGdsb2JhbC5JbnQxNkFycmF5KGJ1ZmZlcik7dmFyIGM9bmV3IGdsb2JhbC5JbnQzMkFycmF5KGJ1ZmZlcik7dmFyIGQ9bmV3IGdsb2JhbC5VaW50OEFycmF5KGJ1ZmZlcik7dmFyIGU9bmV3IGdsb2JhbC5VaW50MTZBcnJheShidWZmZXIpO3ZhciBmPW5ldyBnbG9iYWwuVWludDMyQXJyYXkoYnVmZmVyKTt2YXIgZz1uZXcgZ2xvYmFsLkZsb2F0MzJBcnJheShidWZmZXIpO3ZhciBoPW5ldyBnbG9iYWwuRmxvYXQ2NEFycmF5KGJ1ZmZlcik7dmFyIGk9ZW52LlNUQUNLVE9QfDA7dmFyIGo9ZW52LlNUQUNLX01BWHwwO3ZhciBrPWVudi50ZW1wRG91YmxlUHRyfDA7dmFyIGw9ZW52LkFCT1JUfDA7dmFyIG09ZW52LmN0dHpfaTh8MDt2YXIgbj1lbnYuY3Rsel9pOHwwO3ZhciBvPWVudi5fX1pUSVN0OWV4Y2VwdGlvbnwwO3ZhciBwPWVudi5fX19kc29faGFuZGxlfDA7dmFyIHE9ZW52Ll9zdGRlcnJ8MDt2YXIgcj1lbnYuX3N0ZGlufDA7dmFyIHM9ZW52Ll9zdGRvdXR8MDt2YXIgdD0wO3ZhciB1PTA7dmFyIHY9MDt2YXIgdz0wO3ZhciB4PStlbnYuTmFOLHk9K2Vudi5JbmZpbml0eTt2YXIgej0wLEE9MCxCPTAsQz0wLEQ9MC4wLEU9MCxGPTAsRz0wLEg9MC4wO3ZhciBJPTA7dmFyIEo9MDt2YXIgSz0wO3ZhciBMPTA7dmFyIE09MDt2YXIgTj0wO3ZhciBPPTA7dmFyIFA9MDt2YXIgUT0wO3ZhciBSPTA7dmFyIFM9Z2xvYmFsLk1hdGguZmxvb3I7dmFyIFQ9Z2xvYmFsLk1hdGguYWJzO3ZhciBVPWdsb2JhbC5NYXRoLnNxcnQ7dmFyIFY9Z2xvYmFsLk1hdGgucG93O3ZhciBXPWdsb2JhbC5NYXRoLmNvczt2YXIgWD1nbG9iYWwuTWF0aC5zaW47dmFyIFk9Z2xvYmFsLk1hdGgudGFuO3ZhciBaPWdsb2JhbC5NYXRoLmFjb3M7dmFyIF89Z2xvYmFsLk1hdGguYXNpbjt2YXIgJD1nbG9iYWwuTWF0aC5hdGFuO3ZhciBhYT1nbG9iYWwuTWF0aC5hdGFuMjt2YXIgYmE9Z2xvYmFsLk1hdGguZXhwO3ZhciBjYT1nbG9iYWwuTWF0aC5sb2c7dmFyIGRhPWdsb2JhbC5NYXRoLmNlaWw7dmFyIGVhPWdsb2JhbC5NYXRoLmltdWw7dmFyIGZhPWVudi5hYm9ydDt2YXIgZ2E9ZW52LmFzc2VydDt2YXIgaGE9ZW52LmFzbVByaW50SW50O3ZhciBpYT1lbnYuYXNtUHJpbnRGbG9hdDt2YXIgamE9ZW52Lm1pbjt2YXIga2E9ZW52LmpzQ2FsbDt2YXIgbGE9ZW52Lmludm9rZV9paWlpO3ZhciBtYT1lbnYuaW52b2tlX3ZpaWlpaWlpO3ZhciBuYT1lbnYuaW52b2tlX3ZpaWlpaTt2YXIgb2E9ZW52Lmludm9rZV9pO3ZhciBwYT1lbnYuaW52b2tlX3ZpO3ZhciBxYT1lbnYuaW52b2tlX3ZpaTt2YXIgcmE9ZW52Lmludm9rZV92aWlpaWlpaWlpO3ZhciBzYT1lbnYuaW52b2tlX2lpO3ZhciB0YT1lbnYuaW52b2tlX3ZpaWlpaWlkO3ZhciB1YT1lbnYuaW52b2tlX3ZpaWk7dmFyIHZhPWVudi5pbnZva2VfdmlpaWlpZDt2YXIgd2E9ZW52Lmludm9rZV92O3ZhciB4YT1lbnYuaW52b2tlX2lpaWlpaWlpaTt2YXIgeWE9ZW52Lmludm9rZV9paWlpaTt2YXIgemE9ZW52Lmludm9rZV92aWlpaWlpaWk7dmFyIEFhPWVudi5pbnZva2VfdmlpaWlpaTt2YXIgQmE9ZW52Lmludm9rZV9paWk7dmFyIENhPWVudi5pbnZva2VfaWlpaWlpO3ZhciBEYT1lbnYuaW52b2tlX3ZpaWlpO3ZhciBFYT1lbnYuX2ZhYnM7dmFyIEZhPWVudi5fc3NjYW5mO3ZhciBHYT1lbnYuX3B0aHJlYWRfY29uZF93YWl0O3ZhciBIYT1lbnYuX19fY3R5cGVfdG9sb3dlcl9sb2M7dmFyIElhPWVudi5fYXNwcmludGY7dmFyIEphPWVudi5fX2VtYmluZF9yZWdpc3Rlcl92b2lkO3ZhciBLYT1lbnYuX3NlbmQ7dmFyIExhPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldzt2YXIgTWE9ZW52Ll92c3NjYW5mO3ZhciBOYT1lbnYuX19fY3R5cGVfYl9sb2M7dmFyIE9hPWVudi5fX1pTdDl0ZXJtaW5hdGV2O3ZhciBQYT1lbnYuX2Ztb2Q7dmFyIFFhPWVudi5fX19jeGFfZ3VhcmRfYWNxdWlyZTt2YXIgUmE9ZW52Ll9fX3NldEVyck5vO3ZhciBTYT1lbnYuX19fY3hhX2lzX251bWJlcl90eXBlO3ZhciBUYT1lbnYuX19fZ3h4X3BlcnNvbmFsaXR5X3YwO3ZhciBVYT1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcjt2YXIgVmE9ZW52Ll91bmdldGM7dmFyIFdhPWVudi5fX19hc3NlcnRfZmFpbDt2YXIgWGE9ZW52Ll9fX2N4YV9hbGxvY2F0ZV9leGNlcHRpb247dmFyIFlhPWVudi5fX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udjt2YXIgWmE9ZW52Ll9fX2N0eXBlX3RvdXBwZXJfbG9jO3ZhciBfYT1lbnYuX2ZmbHVzaDt2YXIgJGE9ZW52Ll9fX2N4YV9ndWFyZF9yZWxlYXNlO3ZhciBhYj1lbnYuX19hZGREYXlzO3ZhciBiYj1lbnYuX19fZXJybm9fbG9jYXRpb247dmFyIGNiPWVudi5fcHdyaXRlO3ZhciBkYj1lbnYuX3N0cmVycm9yX3I7dmFyIGViPWVudi5fc3RyZnRpbWVfbDt2YXIgZmI9ZW52Ll9fZm9ybWF0U3RyaW5nO3ZhciBnYj1lbnYuX19yZWFsbHlOZWdhdGl2ZTt2YXIgaGI9ZW52Ll9zYnJrO3ZhciBpYj1lbnYuX3VzZWxvY2FsZTt2YXIgamI9ZW52Ll9jYXRnZXRzO3ZhciBrYj1lbnYuX25ld2xvY2FsZTt2YXIgbGI9ZW52Ll9zbnByaW50Zjt2YXIgbWI9ZW52Ll9fX2N4YV9iZWdpbl9jYXRjaDt2YXIgbmI9ZW52Ll9lbXNjcmlwdGVuX21lbWNweV9iaWc7dmFyIG9iPWVudi5fZmlsZW5vO3ZhciBwYj1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfYm9vbDt2YXIgcWI9ZW52Ll9fX3Jlc3VtZUV4Y2VwdGlvbjt2YXIgcmI9ZW52Ll9fX2N4YV9maW5kX21hdGNoaW5nX2NhdGNoO3ZhciBzYj1lbnYuX3N5c2NvbmY7dmFyIHRiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nO3ZhciB1Yj1lbnYuX3N0cmZ0aW1lO3ZhciB2Yj1lbnYuX19hcnJheVN1bTt2YXIgd2I9ZW52Ll9fX2N4YV90aHJvdzt2YXIgeGI9ZW52Ll9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsO3ZhciB5Yj1lbnYuX19leGl0O3ZhciB6Yj1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfZnVuY3Rpb247dmFyIEFiPWVudi5fX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXY7dmFyIEJiPWVudi5fcHRocmVhZF9tdXRleF9kZXN0cm95O3ZhciBDYj1lbnYuX3B0aHJlYWRfbXV0ZXhfdW5sb2NrO3ZhciBEYj1lbnYuX2ZyZWFkO3ZhciBFYj1lbnYuX3B0aHJlYWRfY29uZF9icm9hZGNhc3Q7dmFyIEZiPWVudi5fbWtwb3J0O3ZhciBHYj1lbnYuX3NwcmludGY7dmFyIEhiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9jbGFzczt2YXIgSWI9ZW52Ll92YXNwcmludGY7dmFyIEpiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZzt2YXIgS2I9ZW52Ll93cml0ZTt2YXIgTGI9ZW52Ll9faXNMZWFwWWVhcjt2YXIgTWI9ZW52Ll9fc2NhblN0cmluZzt2YXIgTmI9ZW52Ll9zdHJlcnJvcjt2YXIgT2I9ZW52Ll9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yO3ZhciBQYj1lbnYuX3JlY3Y7dmFyIFFiPWVudi5fdnNucHJpbnRmO3ZhciBSYj1lbnYuX19aTlN0OWV4Y2VwdGlvbkQyRXY7dmFyIFNiPWVudi5fY29weXNpZ247dmFyIFRiPWVudi5fZmdldGM7dmFyIFViPWVudi5fX19jeGFfZG9lc19pbmhlcml0O3ZhciBWYj1lbnYuX2ZyZWVsb2NhbGU7dmFyIFdiPWVudi5fcmVhZDt2YXIgWGI9ZW52Ll9hYm9ydDt2YXIgWWI9ZW52Ll9jYXRjbG9zZTt2YXIgWmI9ZW52Ll9md3JpdGU7dmFyIF9iPWVudi5fdGltZTt2YXIgJGI9ZW52Ll9wdGhyZWFkX211dGV4X2xvY2s7dmFyIGFjPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9mbG9hdDt2YXIgYmM9ZW52Ll9wcmVhZDt2YXIgY2M9ZW52Ll9hdGV4aXQ7dmFyIGRjPWVudi5fY2F0b3Blbjt2YXIgZWM9ZW52Ll9leGl0O3ZhciBmYz1lbnYuX19nZXRGbG9hdDt2YXIgZ2M9MC4wOwovLyBFTVNDUklQVEVOX1NUQVJUX0ZVTkNTCmZ1bmN0aW9uIEFjKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2k9aSthfDA7aT1pKzcmLTg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBCYygpe3JldHVybiBpfDB9ZnVuY3Rpb24gQ2MoYSl7YT1hfDA7aT1hfWZ1bmN0aW9uIERjKGEsYil7YT1hfDA7Yj1ifDA7aWYoKHR8MCk9PTApe3Q9YTt1PWJ9fWZ1bmN0aW9uIEVjKGIpe2I9YnwwO2Fbaz4+MF09YVtiPj4wXTthW2srMT4+MF09YVtiKzE+PjBdO2FbaysyPj4wXT1hW2IrMj4+MF07YVtrKzM+PjBdPWFbYiszPj4wXX1mdW5jdGlvbiBGYyhiKXtiPWJ8MDthW2s+PjBdPWFbYj4+MF07YVtrKzE+PjBdPWFbYisxPj4wXTthW2srMj4+MF09YVtiKzI+PjBdO2FbayszPj4wXT1hW2IrMz4+MF07YVtrKzQ+PjBdPWFbYis0Pj4wXTthW2srNT4+MF09YVtiKzU+PjBdO2Fbays2Pj4wXT1hW2IrNj4+MF07YVtrKzc+PjBdPWFbYis3Pj4wXX1mdW5jdGlvbiBHYyhhKXthPWF8MDtJPWF9ZnVuY3Rpb24gSGMoKXtyZXR1cm4gSXwwfWZ1bmN0aW9uIEljKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtmPWk7aT1pKzE2fDA7bT1mO2w9U2MoamgoU2MoODM1Miw1MTY4KXwwLGUpfDAsNTE4NCl8MDtqPWNbbCsoKGNbKGNbbD4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO2g9ais0fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1ttPj4yXT0xMzQ1NjtjW20rND4+Ml09MjA4O2NbbSs4Pj4yXT0wO2NnKDEzNDU2LG0pfW09KGNbMTM0NjA+PjJdfDApKyAtMXwwO249Y1tqKzg+PjJdfDA7aWYoKGNbaisxMj4+Ml18MCktbj4+Mj4+PjA+bT4+PjA/KGs9Y1tuKyhtPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywxMCl8MDtuPWNbaD4+Ml18MDtjW2g+PjJdPW4rIC0xO2lmKChufDApPT0wKXtsY1tjWyhjW2o+PjJdfDApKzg+PjJdJjI1NV0oail9bGgobCxrKTtZZyhsKTt3aGlsZSgxKXtoPXVuKDIwKXwwO2lmKChofDApIT0wKXticmVha31oPWNbNTY2Nl18MDtjWzU2NjZdPWgrMDtpZigoaHwwKT09MCl7Zz0xNDticmVha31zY1toJjMxXSgpfWlmKChnfDApPT0xNCl7bj1YYSg0KXwwO2Nbbj4+Ml09MjI2ODA7d2IobnwwLDIyNzI4LDIwNil9Y1toPj4yXT1kO2NbaCs0Pj4yXT1lO2NbaCs4Pj4yXT0wO2FbaCsxMj4+MF09MDthW2grMTM+PjBdPTA7Y1toKzE2Pj4yXT0wO3doaWxlKDEpe2Q9dW4oMTYpfDA7aWYoKGR8MCkhPTApe2JyZWFrfWU9Y1s1NjY2XXwwO2NbNTY2Nl09ZSswO2lmKChlfDApPT0wKXtnPTIwO2JyZWFrfXNjW2UmMzFdKCl9aWYoKGd8MCk9PTIwKXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1jW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2Q+PjJdPTc0MDg7Y1tkKzEyPj4yXT1oO2NbYj4+Ml09aDtuPWIrNHwwO2U9Y1tuPj4yXXwwO2Nbbj4+Ml09ZDtpZigoZXwwKSE9MCl7bT1lKzR8MDtuPWNbbT4+Ml18MDtjW20+PjJdPW4rIC0xO2lmKChufDApPT0wPyhsY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSksbT1lKzh8MCxuPWNbbT4+Ml18MCxjW20+PjJdPW4rIC0xLChufDApPT0wKTowKXtsY1tjWyhjW2U+PjJdfDApKzE2Pj4yXSYyNTVdKGUpfWg9Y1tiPj4yXXwwfXdoaWxlKDEpe2U9dW4oMzUyKXwwO2lmKChlfDApIT0wKXticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7Zz0zMTticmVha31zY1tlJjMxXSgpfWlmKChnfDApPT0zMSl7bj1YYSg0KXwwO2Nbbj4+Ml09MjI2ODA7d2IobnwwLDIyNzI4LDIwNil9Y1tlPj4yXT1oO2NbZSs0Pj4yXT1oO2NbZSs4Pj4yXT0wO2NbZSsxMj4+Ml09MDtqPXVuKDEwNDg2NDQpfDA7aD1qKzY4Ji02NDtjW2grIC00Pj4yXT1qO2NbZSsxNj4+Ml09aDtoPWUrMjc5fDA7YVtoPj4wXT0wO2FbaCsxPj4wXT0wO2g9ZSsyODF8MDthW2g+PjBdPTA7YVtoKzE+PjBdPTA7YVtoKzI+PjBdPTA7YVtoKzM+PjBdPTA7aD1lKzM0NHwwO2o9ZSsyODh8MDtkPWorNTZ8MDtkb3tjW2o+PjJdPTA7aj1qKzR8MH13aGlsZSgoanwwKTwoZHwwKSk7bj1oO2Nbbj4+Ml09LTE7Y1tuKzQ+PjJdPS0xO29lKGUpO3doaWxlKDEpe2Q9dW4oMTYpfDA7aWYoKGR8MCkhPTApe2JyZWFrfWQ9Y1s1NjY2XXwwO2NbNTY2Nl09ZCswO2lmKChkfDApPT0wKXtnPTM3O2JyZWFrfXNjW2QmMzFdKCl9aWYoKGd8MCk9PTM3KXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1jW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2Q+PjJdPTcxMjg7Y1tkKzEyPj4yXT1lO2NbYis4Pj4yXT1lO249YisxMnwwO2c9Y1tuPj4yXXwwO2Nbbj4+Ml09ZDtpZigoZ3wwKT09MCl7aT1mO3JldHVybn1tPWcrNHwwO249Y1ttPj4yXXwwO2NbbT4+Ml09bisgLTE7aWYoKG58MCkhPTApe2k9ZjtyZXR1cm59bGNbY1soY1tnPj4yXXwwKSs4Pj4yXSYyNTVdKGcpO209Zys4fDA7bj1jW20+PjJdfDA7Y1ttPj4yXT1uKyAtMTtpZigobnwwKSE9MCl7aT1mO3JldHVybn1sY1tjWyhjW2c+PjJdfDApKzE2Pj4yXSYyNTVdKGcpO2k9ZjtyZXR1cm59bj1YYSg0KXwwO2Nbbj4+Ml09MjEzMDQ7d2IobnwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gSmMoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7aD1pO2k9aSsxNzZ8MDtnPWg7az1oKzMyfDA7aj1oKzI0fDA7Zj1oKzEyfDA7Yj1jW2IrOD4+Ml18MDttPWIrMzM2fDA7Qj1tO0M9YisyNTl8MDtsPWIrMzIwfDA7aWYoKCEoKGNbQis0Pj4yXXwwKT09MD8oY1tCPj4yXXwwKT09KGRbQz4+MF18ZFtDKzE+PjBdPDw4fGRbQysyPj4wXTw8MTZ8ZFtDKzM+PjBdPDwyNHwwKTowKT8obj1jW2w+PjJdfDAsKG58MCkhPTApOjApPyhjW2IrMzEyPj4yXXwwKSE9MDowKXt6PW47Qj1jW3o+PjJdfDA7Qj1jW0I+PjJdfDA7bWNbQiYxMjddKHosZSk7ej1tO0I9ejtCPWNbQj4+Ml18MDt6PXorNHwwO3o9Y1t6Pj4yXXwwO3o9SW4oQnwwLHp8MCwxLDApfDA7Qj1JO0M9bTtBPUM7Y1tBPj4yXT16O0M9Qys0fDA7Y1tDPj4yXT1CO2k9aDtyZXR1cm59Y1tsPj4yXT0wO249YiszMjR8MDtwPWNbbj4+Ml18MDtjW24+PjJdPTA7aWYoKChwfDApIT0wPyhCPXArNHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApPyhsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCksQj1wKzh8MCxDPWNbQj4+Ml18MCxjW0I+PjJdPUMrIC0xLChDfDApPT0wKTowKXtsY1tjWyhjW3A+PjJdfDApKzE2Pj4yXSYyNTVdKHApfXM9YiszMTJ8MDtjW3M+PjJdPTA7cj1iKzMxNnwwO3A9Y1tyPj4yXXwwO2Nbcj4+Ml09MDtpZigoKHB8MCkhPTA/KEI9cCs0fDAsQz1jW0I+PjJdfDAsY1tCPj4yXT1DKyAtMSwoQ3wwKT09MCk6MCk/KGxjW2NbKGNbcD4+Ml18MCkrOD4+Ml0mMjU1XShwKSxCPXArOHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApe2xjW2NbKGNbcD4+Ml18MCkrMTY+PjJdJjI1NV0ocCl9d2hpbGUoMSl7cD11bigxMil8MDtpZigocHwwKSE9MCl7YnJlYWt9cD1jWzU2NjZdfDA7Y1s1NjY2XT1wKzA7aWYoKHB8MCk9PTApe289MTU7YnJlYWt9c2NbcCYzMV0oKX1pZigob3wwKT09MTUpe0M9WGEoNCl8MDtjW0M+PjJdPTIyNjgwO3diKEN8MCwyMjcyOCwyMDYpfWNbcD4+Ml09Yis0O2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0tMTt3aGlsZSgxKXt0PXVuKDE2KXwwO2lmKCh0fDApIT0wKXticmVha310PWNbNTY2Nl18MDtjWzU2NjZdPXQrMDtpZigodHwwKT09MCl7bz0yMTticmVha31zY1t0JjMxXSgpfWlmKChvfDApPT0yMSl7Qz1YYSg0KXwwO2NbQz4+Ml09MjI2ODA7d2IoQ3wwLDIyNzI4LDIwNil9Y1t0KzQ+PjJdPTA7Y1t0Kzg+PjJdPTA7Y1t0Pj4yXT00ODQwO2NbdCsxMj4+Ml09cDtjW3M+PjJdPXA7dT1jW3I+PjJdfDA7Y1tyPj4yXT10O2lmKCh1fDApIT0wKXtCPXUrNHwwO0M9Y1tCPj4yXXwwO2NbQj4+Ml09QysgLTE7aWYoKEN8MCk9PTA/KGxjW2NbKGNbdT4+Ml18MCkrOD4+Ml0mMjU1XSh1KSxCPXUrOHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApe2xjW2NbKGNbdT4+Ml18MCkrMTY+PjJdJjI1NV0odSl9cD1jW3M+PjJdfDB9eT1rKzY0fDA7cz1rKzh8MDtjW3M+PjJdPTQ1MjA7dT1rKzEyfDA7Y1trPj4yXT00NjUyO2NbeT4+Ml09NDY3MjtjW2srND4+Ml09MDtyPWsrNjR8MDtjW2srODg+PjJdPXU7Y1trKzgwPj4yXT0wO2Nbays4ND4+Ml09MDtjW2srNjg+PjJdPTQwOTg7Y1trKzc2Pj4yXT0wO2Nbays3Mj4+Ml09Njt4PWsrOTJ8MDt0PWsrOTZ8MDt3PXQrNDB8MDtkb3tjW3Q+PjJdPTA7dD10KzR8MH13aGlsZSgodHwwKTwod3wwKSk7WGsoeCk7Y1trKzEzNj4+Ml09MDtjW2srMTQwPj4yXT0tMTtjW2s+PjJdPTQ1MDA7Y1t5Pj4yXT00NTQwO2Nbcz4+Ml09NDUyMDtjW3U+PjJdPTEwNjY0O3Q9aysxNnwwO1hrKHQpO3g9aysyMHwwO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbeCsxMj4+Ml09MDtjW3grMTY+PjJdPTA7Y1t4KzIwPj4yXT0wO2NbdT4+Ml09NDY4ODt1PWsrNDR8MDt5PWsrNjB8MDtjW3UrMD4+Ml09MDtjW3UrND4+Ml09MDtjW3UrOD4+Ml09MDtjW3UrMTI+PjJdPTA7Y1t5Pj4yXT0yNDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDthW3UrMT4+MF09MDtpZigoYVt1Pj4wXSYxKT09MCl7YVt1Pj4wXT0wfWVsc2V7Y1trKzQ4Pj4yXT0wfXc9ays1NnwwO2Nbdz4+Ml09MDt6PWFbdT4+MF18MDtpZigoeiYxKT09MCl7QT11KygoeiYyNTUpPj4+MSkrMXwwO2Nbdz4+Ml09QTt6PXUrMXwwfWVsc2V7ej1jW2srNTI+PjJdfDA7QT16KyhjW2srNDg+PjJdfDApfDA7Y1t3Pj4yXT1BfWNbeD4+Ml09ejtjW2srMjQ+PjJdPXo7Y1trKzI4Pj4yXT1BO0M9YVt1Pj4wXXwwO2lmKChDJjEpPT0wKXt6PShDJjI1NSk+Pj4xO2Nbdz4+Ml09dSt6KzE7QT0xMH1lbHNle3o9Y1trKzQ4Pj4yXXwwO2Nbdz4+Ml09KGNbays1Mj4+Ml18MCkrejtBPWNbdT4+Ml18MDtDPUEmMjU1O0E9KEEmLTIpKyAtMXwwfUI9KEMmMSk9PTA7aWYoQil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1trKzQ4Pj4yXXwwfWRve2lmKCEoQz4+PjA8QT4+PjApKXtpZihCKXthW3UrQSsxPj4wXT0wO2FbdT4+MF09QTw8MTticmVha31lbHNle2FbKGNbays1Mj4+Ml18MCkrQT4+MF09MDtjW2srNDg+PjJdPUE7YnJlYWt9fWVsc2V7aGcodSxBLUN8MCl9fXdoaWxlKDApO0I9YVt1Pj4wXXwwO2lmKChCJjEpPT0wKXtBPXUrMXwwO0I9KEImMjU1KT4+PjF9ZWxzZXtBPWNbays1Mj4+Ml18MDtCPWNbays0OD4+Ml18MH1DPWsrMzZ8MDtjW0M+PjJdPUE7Y1trKzMyPj4yXT1BO2Nbays0MD4+Ml09QStCO2lmKChjW3k+PjJdJjN8MCkhPTApe2NbQz4+Ml09QSt6fWlmKCEoKGFbZz4+MF0mMSk9PTApPyh2PWNbZys4Pj4yXXwwLCh2fDApIT0wKTowKXt2bih2KX1BPWNbYiszMDA+PjJdfDA7dj1jW2IrMzA0Pj4yXXwwO2lmKChBfDApIT0odnwwKSl7ej1rKzh8MDtkb3tCPWNbQT4+Ml18MDtDPWNbQSs0Pj4yXXwwO0Q9Y1tBKzg+PjJdfDA7aWgoU2MoaWgoU2MoaWgoU2Moeiw0NDY0KXwwLEQpfDAsNDQ3Mil8MCxCKXwwLDQ0ODApfDAsQyl8MDtBPUErMTJ8MH13aGlsZSgoQXwwKSE9KHZ8MCkpfXY9Y1t5Pj4yXXwwO2Rve2lmKCh2JjE2fDApPT0wKXtpZigodiY4fDApPT0wKXtjW2YrMD4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDticmVha314PWNbeD4+Ml18MDt3PWNbaysyOD4+Ml18MDt2PXg7QT13LXZ8MDtpZihBPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWRve2lmKEE+Pj4wPDExKXthW2Y+PjBdPUE8PDE7Qj1mKzF8MH1lbHNle3o9QSsxNiYtMTY7eT0oenwwKT09MD8xOno7d2hpbGUoMSl7Qj11bih5KXwwO2lmKChCfDApIT0wKXtvPTkzO2JyZWFrfUI9Y1s1NjY2XXwwO2NbNTY2Nl09QiswO2lmKChCfDApPT0wKXticmVha31zY1tCJjMxXSgpfWlmKChvfDApPT05Myl7Y1tmKzg+PjJdPUI7Y1tmPj4yXT16fDE7Y1tmKzQ+PjJdPUE7YnJlYWt9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKCh4fDApIT0od3wwKSl7bz1CO3doaWxlKDEpe2Fbbz4+MF09YVt4Pj4wXXwwO3g9eCsxfDA7aWYoKHh8MCk9PSh3fDApKXticmVha31lbHNle289bysxfDB9fUI9QisodysoMC12KSl8MH1hW0I+PjBdPTB9ZWxzZXt4PWNbdz4+Ml18MDt2PWNbayszNj4+Ml18MDtpZih4Pj4+MDx2Pj4+MCl7Y1t3Pj4yXT12fWVsc2V7dj14fXg9Y1trKzMyPj4yXXwwO3c9eDt6PXYtd3wwO2lmKHo+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoej4+PjA8MTEpe2FbZj4+MF09ejw8MTtCPWYrMXwwfWVsc2V7eT16KzE2Ji0xNjtBPSh5fDApPT0wPzE6eTt3aGlsZSgxKXtCPXVuKEEpfDA7aWYoKEJ8MCkhPTApe289NzY7YnJlYWt9Qj1jWzU2NjZdfDA7Y1s1NjY2XT1CKzA7aWYoKEJ8MCk9PTApe2JyZWFrfXNjW0ImMzFdKCl9aWYoKG98MCk9PTc2KXtjW2YrOD4+Ml09QjtjW2Y+PjJdPXl8MTtjW2YrND4+Ml09ejticmVha31EPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKHh8MCkhPSh2fDApKXtvPUI7d2hpbGUoMSl7YVtvPj4wXT1hW3g+PjBdfDA7eD14KzF8MDtpZigoeHwwKT09KHZ8MCkpe2JyZWFrfWVsc2V7bz1vKzF8MH19Qj1CKyh2KygwLXcpKXwwfWFbQj4+MF09MH19d2hpbGUoMCk7Y1trPj4yXT00NTAwO2Nbays2ND4+Ml09NDU0MDtjW3M+PjJdPTQ1MjA7bz1rKzEyfDA7Y1tvPj4yXT00Njg4O2lmKCEoKGFbdT4+MF0mMSk9PTApPyhxPWNbays1Mj4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9Y1tvPj4yXT0xMDY2NDtvPWNbdD4+Ml18MDtDPW8rNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1yZyhyKTtxPWFbZj4+MF18MDtyPShxJjEpPT0wO2lmKHIpe3Q9KHEmMjU1KT4+PjE7dj1mKzF8MH1lbHNle3Q9Y1tmKzQ+PjJdfDA7dj1jW2YrOD4+Ml18MH1zPXQ+Pj4wPjc7bz1zPzc6dDthOmRve2lmKChvfDApPT0wKXtvPTExMH1lbHNle3U9MTkyO3doaWxlKDEpe2lmKChhW3Y+PjBdfDApIT0oYVt1Pj4wXXwwKSl7bz0xMzA7YnJlYWsgYX1vPW8rIC0xfDA7aWYoKG98MCk9PTApe289MTEwO2JyZWFrfWVsc2V7dj12KzF8MDt1PXUrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xMTApe2lmKHQ+Pj4wPjYmKHNeMSkpe3doaWxlKDEpe2o9dW4oNDc4OCl8MDtpZigoanwwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe289MTE0O2JyZWFrfXNjW2cmMzFdKCl9aWYoKG98MCk9PTExNCl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZmQoaik7YVtqKzQ3ODQ+PjBdPTE7d2hpbGUoMSl7Zz11bigxMil8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe289MTIxO2JyZWFrfXNjW2cmMzFdKCl9aWYoKG98MCk9PTEyMSl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9Y1tnPj4yXT0zNjA4O2NbZys0Pj4yXT1wO2NbZys4Pj4yXT1qO3doaWxlKDEpe2o9dW4oMTYpfDA7aWYoKGp8MCkhPTApe289MTI5O2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXticmVha31zY1tqJjMxXSgpfWlmKChvfDApPT0xMjkpe2Nbais0Pj4yXT0wO2Nbais4Pj4yXT0wO2Nbaj4+Ml09Mzg3MjtjW2orMTI+PjJdPWc7YnJlYWt9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZWxzZXtvPTEzMH19fXdoaWxlKDApO2I6ZG97aWYoKG98MCk9PTEzMCl7aWYocil7dD0ocSYyNTUpPj4+MTt3PWYrMXwwfWVsc2V7dD1jW2YrND4+Ml18MDt3PWNbZis4Pj4yXXwwfXM9dD4+PjA+MTM7dT1zPzEzOnQ7Yzpkb3tpZigodXwwKT09MCl7bz0xMzZ9ZWxzZXt2PTIwMDt3aGlsZSgxKXtpZigoYVt3Pj4wXXwwKSE9KGFbdj4+MF18MCkpe2JyZWFrIGN9dT11KyAtMXwwO2lmKCh1fDApPT0wKXtvPTEzNjticmVha31lbHNle3c9dysxfDA7dj12KzF8MH19fX13aGlsZSgwKTtkb3tpZigob3wwKT09MTM2KXtpZighKHQ+Pj4wPjEyJihzXjEpKSl7YnJlYWt9d2hpbGUoMSl7aj11big1MTE2KXwwO2lmKChqfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNDA7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTQwKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1mZChqKTtlZChqKzQ3ODR8MCk7Y1tqKzQ5NTI+PjJdPTMyO2Nbais0OTU2Pj4yXT05O2Nbais0OTYwPj4yXT04O2Nbais0OTY0Pj4yXT0wO2Nbais0OTg0Pj4yXT0wO2Nbais0OTg4Pj4yXT0wO2Nbais0OTkyPj4yXT0wO2Nbais1MDA4Pj4yXT0xO2Nbais1MDEyPj4yXT0yO2Nbais1MDA0Pj4yXT00MDk2O2Nbais1ZTM+PjJdPTQ7Y1tqKzQ5OTY+PjJdPTQ7Y1tqKzUwMTY+PjJdPTA7Y1tqKzUwMjA+PjJdPTA7Y1tqKzUwMjQ+PjJdPTA7Y1tqKzQ5Njg+PjJdPTMyO2Nbais0OTcyPj4yXT0wO2Nbais0OTc2Pj4yXT0tMjE0NzQ4MzY0ODtjW2orNDk4MD4+Ml09MjE0NzQ4MzY0NztjW2orNDk0OD4+Ml09MDtjW2orNTAzMj4+Ml09MzI7Y1tqKzUwMzY+PjJdPTk7Y1tqKzUwNDA+PjJdPTg7Y1tqKzUwNDQ+PjJdPTA7Y1tqKzUwNjQ+PjJdPTA7Y1tqKzUwNjg+PjJdPTA7Y1tqKzUwNzI+PjJdPTA7Y1tqKzUwODg+PjJdPTE7Y1tqKzUwOTI+PjJdPTI7Y1tqKzUwODQ+PjJdPTQwOTY7Y1tqKzUwODA+PjJdPTQ7Y1tqKzUwNzY+PjJdPTQ7Y1tqKzUwOTY+PjJdPTA7Y1tqKzUxMDA+PjJdPTA7Y1tqKzUxMDQ+PjJdPTA7Y1tqKzUwNDg+PjJdPTMyO2Nbais1MDUyPj4yXT0wO2Nbais1MDU2Pj4yXT0tMjE0NzQ4MzY0ODtjW2orNTA2MD4+Ml09MjE0NzQ4MzY0NztjW2orNTAyOD4+Ml09MDthW2orNTEwOD4+MF09MDthW2orNTEwOT4+MF09MDthW2orNTExMj4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNDg7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTQ4KXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTI2NjQ7Y1tnKzQ+PjJdPXA7Y1tnKzg+PjJdPWo7d2hpbGUoMSl7aj11bigxNil8MDtpZigoanwwKSE9MCl7bz0xNTY7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKG98MCk9PTE1Nil7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7Y1tqPj4yXT0yOTUyO2NbaisxMj4+Ml09ZzticmVhayBifUQ9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihyKXt0PShxJjI1NSk+Pj4xO3Y9ZisxfDB9ZWxzZXt0PWNbZis0Pj4yXXwwO3Y9Y1tmKzg+PjJdfDB9cz10Pj4+MD4xMzt1PXM/MTM6dDtkOmRve2lmKCh1fDApPT0wKXtvPTE2M31lbHNle3c9MjE2O3doaWxlKDEpe2lmKChhW3Y+PjBdfDApIT0oYVt3Pj4wXXwwKSl7YnJlYWsgZH11PXUrIC0xfDA7aWYoKHV8MCk9PTApe289MTYzO2JyZWFrfWVsc2V7dj12KzF8MDt3PXcrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xNjMpe2lmKCEodD4+PjA+MTImKHNeMSkpKXticmVha313aGlsZSgxKXtqPXVuKDUxMDQpfDA7aWYoKGp8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtvPTE2NzticmVha31zY1tnJjMxXSgpfWlmKChvfDApPT0xNjcpe0Q9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfWZkKGopO2JkKGorNDc4NHwwKTthW2orNTEwMD4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNzU7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTc1KXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTE3MjA7Y1tnKzQ+PjJdPXA7Y1tnKzg+PjJdPWo7d2hpbGUoMSl7aj11bigxNil8MDtpZigoanwwKSE9MCl7bz0xODM7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKG98MCk9PTE4Myl7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7Y1tqPj4yXT0yMDA4O2NbaisxMj4+Ml09ZzticmVhayBifUQ9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihyKXtyPShxJjI1NSk+Pj4xO3Q9ZisxfDB9ZWxzZXtyPWNbZis0Pj4yXXwwO3Q9Y1tmKzg+PjJdfDB9cT1yPj4+MD4xOTtzPXE/MTk6cjtlOmRve2lmKChzfDApPT0wKXtvPTE5MH1lbHNle3U9MjMyO3doaWxlKDEpe2lmKChhW3Q+PjBdfDApIT0oYVt1Pj4wXXwwKSl7YnJlYWsgZX1zPXMrIC0xfDA7aWYoKHN8MCk9PTApe289MTkwO2JyZWFrfWVsc2V7dD10KzF8MDt1PXUrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xOTApe2lmKCEocj4+PjA+MTgmKHFeMSkpKXticmVha313aGlsZSgxKXtqPXVuKDU0MzIpfDA7aWYoKGp8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtvPTE5NDticmVha31zY1tnJjMxXSgpfWlmKChvfDApPT0xOTQpe0Q9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfWZkKGopO2VkKGorNDc4NHwwKTtjW2orNDk1Mj4+Ml09MzI7Y1tqKzQ5NTY+PjJdPTk7Y1tqKzQ5NjA+PjJdPTg7Y1tqKzQ5NjQ+PjJdPTA7Y1tqKzQ5ODQ+PjJdPTA7Y1tqKzQ5ODg+PjJdPTA7Y1tqKzQ5OTI+PjJdPTA7Y1tqKzUwMDg+PjJdPTE7Y1tqKzUwMTI+PjJdPTI7Y1tqKzUwMDQ+PjJdPTQwOTY7Y1tqKzVlMz4+Ml09NDtjW2orNDk5Nj4+Ml09NDtjW2orNTAxNj4+Ml09MDtjW2orNTAyMD4+Ml09MDtjW2orNTAyND4+Ml09MDtjW2orNDk2OD4+Ml09MzI7Y1tqKzQ5NzI+PjJdPTA7Y1tqKzQ5NzY+PjJdPS0yMTQ3NDgzNjQ4O2Nbais0OTgwPj4yXT0yMTQ3NDgzNjQ3O2Nbais0OTQ4Pj4yXT0wO2Nbais1MDMyPj4yXT0zMjtjW2orNTAzNj4+Ml09OTtjW2orNTA0MD4+Ml09ODtjW2orNTA0ND4+Ml09MDtjW2orNTA2ND4+Ml09MDtjW2orNTA2OD4+Ml09MDtjW2orNTA3Mj4+Ml09MDtjW2orNTA4OD4+Ml09MTtjW2orNTA5Mj4+Ml09MjtjW2orNTA4ND4+Ml09NDA5NjtjW2orNTA4MD4+Ml09NDtjW2orNTA3Nj4+Ml09NDtjW2orNTA5Nj4+Ml09MDtjW2orNTEwMD4+Ml09MDtjW2orNTEwND4+Ml09MDtjW2orNTA0OD4+Ml09MzI7Y1tqKzUwNTI+PjJdPTA7Y1tqKzUwNTY+PjJdPS0yMTQ3NDgzNjQ4O2Nbais1MDYwPj4yXT0yMTQ3NDgzNjQ3O2Nbais1MDI4Pj4yXT0wO2Fbais1MTA4Pj4wXT0wO2Fbais1MTA5Pj4wXT0wO2JkKGorNTExMnwwKTthW2orNTQyOD4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0yMDM7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MjAzKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTQyNDtjW2crND4+Ml09cDtjW2crOD4+Ml09ajt3aGlsZSgxKXtqPXVuKDE2KXwwO2lmKChqfDApIT0wKXtvPTIxMTticmVha31qPWNbNTY2Nl18MDtjWzU2NjZdPWorMDtpZigoanwwKT09MCl7YnJlYWt9c2NbaiYzMV0oKX1pZigob3wwKT09MjExKXtjW2orND4+Ml09MDtjW2orOD4+Ml09MDtjW2o+PjJdPTEwMDg7Y1tqKzEyPj4yXT1nO2JyZWFrIGJ9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2g9U2MoODM1MiwyNTYpfDA7YVtrPj4wXT0wO2Nbays0Pj4yXT1oO2U9Y1soY1toPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2grKGUrMTYpPj4yXXwwKT09MCl7ZT1jW2grKGUrNzIpPj4yXXwwO2lmKChlfDApIT0wKXtZZyhlKX1hW2s+PjBdPTE7ZT1hW2Y+PjBdfDA7ZG97aWYoKGUmMSk9PTApe289KGUmMjU1KT4+PjE7bT1jWyhjW2g+PjJdfDApKyAtMTI+PjJdfDA7bD1jW2grKG0rMjQpPj4yXXwwO249ZisxfDA7aWYoKGNbaCsobSs0KT4+Ml0mMTc2fDApIT0zMil7ZT1uO2I9bzticmVha31lPW47Yj1vO249ZitvKzF8MH1lbHNle249Y1tmKzQ+PjJdfDA7bT1jWyhjW2g+PjJdfDApKyAtMTI+PjJdfDA7bD1jW2grKG0rMjQpPj4yXXwwO2Y9Y1tmKzg+PjJdfDA7aWYoKGNbaCsobSs0KT4+Ml0mMTc2fDApIT0zMil7ZT1mO2I9bjtuPWY7YnJlYWt9ZT1mO2I9bjtuPWYrbnwwfX13aGlsZSgwKTtmPWgrbXwwO289aCsobSs3Nil8MDtwPWNbbz4+Ml18MDtmOmRve2lmKChwfDApPT0tMSl7cD1jW2grKG0rMjgpPj4yXXwwO209cCs0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tnPj4yXT0xMzQ1NjtjW2crND4+Ml09MjA4O2NbZys4Pj4yXT0wO2NnKDEzNDU2LGcpfXE9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3I9Y1twKzg+PjJdfDA7ZG97aWYoKGNbcCsxMj4+Ml18MCktcj4+Mj4+PjA+cT4+PjApe3E9Y1tyKyhxPDwyKT4+Ml18MDtpZigocXwwKT09MCl7YnJlYWt9cT14Y1tjWyhjW3E+PjJdfDApKzI4Pj4yXSY2M10ocSwzMil8MDtEPWNbbT4+Ml18MDtjW20+PjJdPUQrIC0xO2lmKChEfDApPT0wKXtsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCl9cD1xPDwyND4+MjQ7Y1tvPj4yXT1wO2JyZWFrIGZ9fXdoaWxlKDApO0Q9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtXYyhqLGwsZSxuLGUrYnwwLGYscCYyNTUpO2lmKChjW2o+PjJdfDApIT0wKXticmVha31EPWNbKGNbaD4+Ml18MCkrIC0xMj4+Ml18MDtxZyhoK0R8MCxjW2grKEQrMTYpPj4yXXw1KX19d2hpbGUoMCk7Z2goayk7Zj1jW2grKChjWyhjW2g+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtlPWYrNHwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZz4+Ml09MTM0NTY7Y1tnKzQ+PjJdPTIwODtjW2crOD4+Ml09MDtjZygxMzQ1NixnKX1qPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtnPWNbZis4Pj4yXXwwO2Rve2lmKChjW2YrMTI+PjJdfDApLWc+PjI+Pj4wPmo+Pj4wKXtnPWNbZysoajw8Mik+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWc9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcsMTApfDA7RD1jW2U+PjJdfDA7Y1tlPj4yXT1EKyAtMTtpZigoRHwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfWxoKGgsZyk7WWcoaCk7Zj1YYSg4KXwwO2NbZj4+Ml09OTkyODt3aGlsZSgxKXtnPXVuKDQ1KXwwO2lmKChnfDApIT0wKXtvPTI1MzticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0yNTE7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MjUxKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1lbHNlIGlmKChvfDApPT0yNTMpe2NbZys0Pj4yXT0zMjtjW2c+PjJdPTMyO3Q9ZysxMnwwO2NbZis0Pj4yXT10O2NbZys4Pj4yXT0wO3Q9dCswfDA7Zz0zMjB8MDt3PXQrMzN8MDtkb3thW3Q+PjBdPWFbZz4+MF18MDt0PXQrMXwwO2c9ZysxfDB9d2hpbGUoKHR8MCk8KHd8MCkpO2NbZj4+Ml09MzY4O3diKGZ8MCwzMDQsMjIpfX19d2hpbGUoMCk7RD1YYSg0KXwwO2NbRD4+Ml09MjEzMDQ7d2IoRHwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2Rve2lmKCEoKGFbZj4+MF0mMSk9PTApKXtmPWNbZis4Pj4yXXwwO2lmKChmfDApPT0wKXticmVha312bihmKX19d2hpbGUoMCk7Y1tsPj4yXT1nO2Y9Y1tuPj4yXXwwO2Nbbj4+Ml09ajtkb3tpZigoZnwwKSE9MCl7Qz1mKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXticmVha31sY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZik7Qz1mKzh8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXticmVha31sY1tjWyhjW2Y+PjJdfDApKzE2Pj4yXSYyNTVdKGYpfX13aGlsZSgwKTtBPWIrMzI4fDA7Qz1BO0M9SW4oY1tDPj4yXXwwLGNbQys0Pj4yXXwwLDEsMCl8MDtjW0E+PjJdPUM7Y1tBKzQ+PjJdPUk7QT1tO2NbQT4+Ml09MDtjW0ErND4+Ml09MDtBPWNbbD4+Ml18MDtDPWNbQT4+Ml18MDtDPWNbQz4+Ml18MDttY1tDJjEyN10oQSxlKTtBPW07Qz1BO0M9Y1tDPj4yXXwwO0E9QSs0fDA7QT1jW0E+PjJdfDA7QT1JbihDfDAsQXwwLDEsMCl8MDtDPUk7RD1tO0I9RDtjW0I+PjJdPUE7RD1EKzR8MDtjW0Q+PjJdPUM7aT1oO3JldHVybn1mdW5jdGlvbiBLYyhhKXthPWF8MDthPShjW2ErOD4+Ml18MCkrMTI3fDA7cmV0dXJuIGRbYT4+MF18ZFthKzE+PjBdPDw4fGRbYSsyPj4wXTw8MTZ8ZFthKzM+PjBdPDwyNHwwfWZ1bmN0aW9uIExjKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTA7ZT1pO2Y9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9ZjthPW9jW2EmMTI3XShiKXwwO2k9ZTtyZXR1cm4gYXwwfWVsc2V7YT1jWyhjW2I+PjJdfDApK2Y+PjJdfDA7YT1vY1thJjEyN10oYil8MDtpPWU7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBNYyhhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTA7Zj1pO2c9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9ZzttY1thJjEyN10oYixlKTtpPWY7cmV0dXJufWVsc2V7YT1jWyhjW2I+PjJdfDApK2c+PjJdfDA7bWNbYSYxMjddKGIsZSk7aT1mO3JldHVybn19ZnVuY3Rpb24gTmMoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTA7Zz1pO2g9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9aDtxY1thJjMxXShiLGUsZik7aT1nO3JldHVybn1lbHNle2E9Y1soY1tiPj4yXXwwKStoPj4yXXwwO3FjW2EmMzFdKGIsZSxmKTtpPWc7cmV0dXJufX1mdW5jdGlvbiBPYygpe3ZhciBhPTAsYj0wLGQ9MDtiPWk7d2hpbGUoMSl7ZD11bigxNil8MDtpZigoZHwwKSE9MCl7YT03O2JyZWFrfWQ9Y1s1NjY2XXwwO2NbNTY2Nl09ZCswO2lmKChkfDApPT0wKXticmVha31zY1tkJjMxXSgpfWlmKChhfDApPT03KXtjW2QrMD4+Ml09MDtjW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2QrMTI+PjJdPTA7aT1iO3JldHVybiBkfDB9ZD1YYSg0KXwwO2NbZD4+Ml09MjI2ODA7d2IoZHwwLDIyNzI4LDIwNik7cmV0dXJuIDB9ZnVuY3Rpb24gUGMoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1rY1thJjMxXSgpfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gUWMoYSl7YT1hfDA7cmV0dXJuIDcyfWZ1bmN0aW9uIFJjKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWQ9Y1thKzEyPj4yXXwwO2lmKCgoZHwwKSE9MD8oZj1kKzR8MCxlPWNbZj4+Ml18MCxjW2Y+PjJdPWUrIC0xLChlfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGU9ZCs4fDAsZj1jW2U+PjJdfDAsY1tlPj4yXT1mKyAtMSwoZnwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX1kPWNbYSs0Pj4yXXwwO2lmKCgoZHwwKSE9MD8oZT1kKzR8MCxmPWNbZT4+Ml18MCxjW2U+PjJdPWYrIC0xLChmfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGU9ZCs4fDAsZj1jW2U+PjJdfDAsY1tlPj4yXT1mKyAtMSwoZnwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX12bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFNjKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtmPWk7aT1pKzMyfDA7bz1mO2U9ZisxNnwwO2c9ZisxMnwwO2FbZT4+MF09MDtjW2UrND4+Ml09YjtwPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtpZigoY1tiKyhwKzE2KT4+Ml18MCk9PTApe2g9Y1tiKyhwKzcyKT4+Ml18MDtpZigoaHwwKSE9MCl7WWcoaCk7cD1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDB9YVtlPj4wXT0xO2o9Sm4oZHwwKXwwO209Y1tiKyhwKzI0KT4+Ml18MDtpZigoY1tiKyhwKzQpPj4yXSYxNzZ8MCk9PTMyKXtoPWQranwwfWVsc2V7aD1kfWw9YitwfDA7bj1iKyhwKzc2KXwwO3E9Y1tuPj4yXXwwO2Rve2lmKChxfDApPT0tMSl7cD1jW2IrKHArMjgpPj4yXXwwO3E9cCs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tvPj4yXT0xMzQ1NjtjW28rND4+Ml09MjA4O2Nbbys4Pj4yXT0wO2NnKDEzNDU2LG8pfXI9KGNbMTM0NjA+PjJdfDApKyAtMXwwO289Y1twKzg+PjJdfDA7aWYoKGNbcCsxMj4+Ml18MCktbz4+Mj4+PjA+cj4+PjA/KGs9Y1tvKyhyPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywzMil8MDtyPWNbcT4+Ml18MDtjW3E+PjJdPXIrIC0xO2lmKChyfDApPT0wKXtsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCl9cT1rPDwyND4+MjQ7Y1tuPj4yXT1xO2JyZWFrfXI9WGEoNCl8MDtjW3I+PjJdPTIxMzA0O3diKHJ8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtXYyhnLG0sZCxoLGQranwwLGwscSYyNTUpO2lmKChjW2c+PjJdfDApPT0wKXtyPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK3J8MCxjW2IrKHIrMTYpPj4yXXw1KX19Z2goZSk7aT1mO3JldHVybiBifDB9ZnVuY3Rpb24gVGMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFVjKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gVmMoYSl7YT1hfDA7bWIoYXwwKXwwO09hKCl9ZnVuY3Rpb24gV2MoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtrPWk7aT1pKzE2fDA7bD1rO2lmKChkfDApPT0wKXtjW2I+PjJdPTA7aT1rO3JldHVybn1wPWU7bj1nLXB8MDtoPWgrMTJ8MDttPWNbaD4+Ml18MDtuPShtfDApPihufDApP20tbnwwOjA7bT1mO3A9bS1wfDA7aWYoKHB8MCk+MD8oaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsZSxwKXwwKSE9KHB8MCk6MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59ZG97aWYoKG58MCk+MCl7ZG97aWYobj4+PjA8MTEpe3A9bjw8MSYyNTU7YVtsPj4wXT1wO289bDtlPWwrMXwwfWVsc2V7cT1uKzE2Ji0xNjtwPShxfDApPT0wPzE6cTt3aGlsZSgxKXtlPXVuKHApfDA7aWYoKGV8MCkhPTApe289MTU7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKG98MCk9PTE1KXtjW2wrOD4+Ml09ZTtwPXF8MTtjW2w+PjJdPXA7Y1tsKzQ+PjJdPW47bz1sO3A9cCYyNTU7YnJlYWt9cT1YYSg0KXwwO2NbcT4+Ml09MjI2ODA7d2IocXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO05uKGV8MCxqfDAsbnwwKXwwO2FbZStuPj4wXT0wO2lmKChwJjEpPT0wKXtqPWwrMXwwfWVsc2V7aj1jW2wrOD4+Ml18MH1pZigoaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsaixuKXwwKT09KG58MCkpe2lmKChhW28+PjBdJjEpPT0wKXticmVha31sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXticmVha312bihsKTticmVha31jW2I+PjJdPTA7aWYoKGFbbz4+MF0mMSk9PTApe2k9aztyZXR1cm59Yj1jW2wrOD4+Ml18MDtpZigoYnwwKT09MCl7aT1rO3JldHVybn12bihiKTtpPWs7cmV0dXJufX13aGlsZSgwKTtsPWctbXwwO2lmKChsfDApPjA/KGhjW2NbKGNbZD4+Ml18MCkrNDg+PjJdJjYzXShkLGYsbCl8MCkhPShsfDApOjApe2NbYj4+Ml09MDtpPWs7cmV0dXJufWNbaD4+Ml09MDtjW2I+PjJdPWQ7aT1rO3JldHVybn1mdW5jdGlvbiBYYyhhKXthPWF8MDt2YXIgYj0wO2I9aTtfYyhhKzQ3Njh8MCk7X2MoYSs0NzM2fDApO19jKGErNDY4OHwwKTtfYyhhKzQ2NTZ8MCk7X2MoYSs0NjA4fDApO19jKGErNDU3NnwwKTtfYyhhKzQ1Mjh8MCk7X2MoYSs0NDk2fDApO19jKGErNDQ0OHwwKTtfYyhhKzQ0MTZ8MCk7WmMoYSs0MzAwfDApO1pjKGErNDIyMHwwKTtaYyhhKzQxNDB8MCk7WmMoYSs0MDYwfDApO1pjKGErMzk4MHwwKTtZYyhhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFljKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2Q9Y1thKzg5Nj4+Ml18MDtpZigoZHwwKSE9MCl7ZT1jW2QrOD4+Ml18MDtpZigoZXwwKSE9MCl7dm4oY1tlKyAtND4+Ml18MCl9ZT1jW2QrMTI+PjJdfDA7aWYoKGV8MCkhPTApe3ZuKGNbZSsgLTQ+PjJdfDApfWU9Y1tkKzE2Pj4yXXwwO2lmKChlfDApIT0wKXt2bihjW2UrIC00Pj4yXXwwKX12bihkKX1kPWNbYSs5MDA+PjJdfDA7aWYoKGR8MCk9PTApe2Q9MH1lbHNle2U9Y1tkKzg+PjJdfDA7aWYoKGV8MCkhPTApe3ZuKGNbZSsgLTQ+PjJdfDApfWU9Y1tkKzEyPj4yXXwwO2lmKChlfDApIT0wKXt2bihjW2UrIC00Pj4yXXwwKX1lPWNbZCsxNj4+Ml18MDtpZigoZXwwKSE9MCl7dm4oY1tlKyAtND4+Ml18MCl9dm4oZCk7ZD0wfWRve2U9Y1thKyhkPDwyKSs5MDQ+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZT1jW2ErKGQ8PDIpKzE5Mjg+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZT1jW2ErKGQ8PDIpKzI5NTI+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZD1kKzF8MH13aGlsZSgoZHwwKSE9MjU2KTtkPWNbYSs4NjA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzg2ND4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9YT1jW2ErODY4Pj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufXZuKGNbYSsgLTQ+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gWmMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2I9aTtkPWErMzZ8MDtlPWNbZD4+Ml18MDtmPWErNDB8MDtnPWNbZj4+Ml18MDtpZigoZ3wwKSE9KGV8MCkpe2Rve2NbZj4+Ml09ZysgLTQ0O2g9Y1tnKyAtMzY+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWg9Y1tnKyAtMzI+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWc9Y1tnKyAtMjg+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1tmPj4yXXwwfXdoaWxlKChnfDApIT0oZXwwKSl9Zj1hKzY4fDA7ZT1jW2Y+PjJdfDA7YT1hKzcyfDA7Zz1jW2E+PjJdfDA7aWYoKGd8MCk9PShlfDApKXtfYyhmKTtfYyhkKTtpPWI7cmV0dXJufWRve2NbYT4+Ml09ZysgLTQ0O2g9Y1tnKyAtMzY+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWg9Y1tnKyAtMzI+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWc9Y1tnKyAtMjg+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1thPj4yXXwwfXdoaWxlKChnfDApIT0oZXwwKSk7X2MoZik7X2MoZCk7aT1iO3JldHVybn1mdW5jdGlvbiBfYyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtiPWk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59ZT1hKzR8MDtmPWNbZT4+Ml18MDtpZigoZnwwKSE9KGR8MCkpe2Rve2NbZT4+Ml09ZisgLTQ0O2c9Y1tmKyAtMzY+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1tmKyAtMzI+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWY9Y1tmKyAtMjg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlPj4yXXwwfXdoaWxlKChmfDApIT0oZHwwKSk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59fXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gJGMoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2Q9Y1thKzU2Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSs2MD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErNjQ+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzEyPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxNj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9YT1jW2ErMjA+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oY1thKyAtND4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiBhZChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7ZD1jW2ErMjgwPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsyODQ+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzI4OD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMjM2Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsyNDA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzI0ND4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTkyPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxOTY+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzIwMD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTQ4Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxNTI+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzE1Nj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTA0Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxMDg+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzExMj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErNjA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzY0Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSs2OD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTY+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzIwPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1hPWNbYSsyND4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn12bihjW2ErIC00Pj4yXXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGJkKGIpe2I9YnwwO3ZhciBjPTAsZD0wO2M9aTtkPWIrOHwwO2FbYiswPj4wXT0wO2FbYisxPj4wXT0wO2FbYisyPj4wXT0wO2FbYiszPj4wXT0wO2FbYis0Pj4wXT0wO2FbYis1Pj4wXT0wO2FbYis2Pj4wXT0wO2NkKGQsMTI4KTtjZChiKzUyfDAsMjU2KTtjZChiKzk2fDAsMjU2KTtjZChiKzE0MHwwLDI1Nik7Y2QoYisxODR8MCwyNTYpO2NkKGIrMjI4fDAsMjU2KTtjZChiKzI3MnwwLDI1Nik7aT1jO3JldHVybn1mdW5jdGlvbiBjZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtlPWk7Y1tiPj4yXT1kO2FbYis0Pj4wXT0wO2o9Yis4fDA7Y1tqPj4yXT0wO2c9YisxMnwwO2NbZz4+Ml09MDtoPWIrMTZ8MDtjW2g+PjJdPTA7aWYoKGQrIC0yfDApPj4+MD4yMDQ2KXtiPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oMzgpfDA7aWYoKGV8MCkhPTApe2Y9ODticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZnwwKT09OCl7Y1tlKzQ+PjJdPTI1O2NbZT4+Ml09MjU7ZD1lKzEyfDA7Y1tiKzQ+PjJdPWQ7Y1tlKzg+PjJdPTA7ZT1kKzB8MDtkPTM4NHwwO2Y9ZSsyNnwwO2Rve2FbZT4+MF09YVtkPj4wXXwwO2U9ZSsxfDA7ZD1kKzF8MH13aGlsZSgoZXwwKTwoZnwwKSk7d2IoYnwwLDEwMDY0LDEwNil9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9Y1tiKzMyPj4yXT1kKyAtMTtpZihkPj4+MD4xNil7Zj0zO3doaWxlKDEpe2lmKDE8PGYrMj4+PjA8ZD4+PjApe2Y9ZisxfDB9ZWxzZXticmVha319az0xPDxmO2NbYiszNj4+Ml09aztjW2IrNDA+PjJdPTE1LWY7az11bigoazw8MikrNzZ8MCl8MDtmPWsrNjgmLTY0O2NbZisgLTQ+PjJdPWs7Y1toPj4yXT1mfWVsc2V7Y1toPj4yXT0wO2NbYis0MD4+Ml09MDtjW2IrMzY+PjJdPTB9az0oZDw8MikrNjh8MDtoPXVuKGspfDA7Zj1oKzY4Ji02NDtjW2YrIC00Pj4yXT1oO2Nbaj4+Ml09ZjtrPXVuKGspfDA7Zj1rKzY4Ji02NDtjW2YrIC00Pj4yXT1rO2NbZz4+Ml09ZjtjW2IrMjA+PjJdPTA7Zz1iKzI0fDA7Y1tnPj4yXT1kO2lmKChkfDApPT0wKXtkZChiKTtqPWNbYj4+Ml18MDtqPWorNnwwO2o9aj4+PjE7Y1tnPj4yXT1qO2s9YisyOHwwO2Nbaz4+Ml09ajtpPWU7cmV0dXJufWVsc2V7ZD0wfWRve2NbZisoZDw8Mik+PjJdPTE7ZD1kKzF8MH13aGlsZShkPj4+MDwoY1tiPj4yXXwwKT4+PjApO2RkKGIpO2o9Y1tiPj4yXXwwO2o9ais2fDA7aj1qPj4+MTtjW2c+PjJdPWo7az1iKzI4fDA7Y1trPj4yXT1qO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZGQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2Q9aTtlPWIrMjR8MDtoPWIrMjB8MDtrPShjW2g+PjJdfDApKyhjW2U+PjJdfDApfDA7Y1toPj4yXT1rO2lmKGs+Pj4wPjMyNzY4KXtjW2g+PjJdPTA7aWYoKGNbYj4+Ml18MCk9PTApe2s9MH1lbHNle2w9Y1tiKzEyPj4yXXwwO2o9MDtkb3tzPWwrKGo8PDIpfDA7az0oKGNbcz4+Ml18MCkrMXwwKT4+PjE7Y1tzPj4yXT1rO2s9aysoY1toPj4yXXwwKXwwO2NbaD4+Ml09aztqPWorMXwwfXdoaWxlKGo+Pj4wPChjW2I+PjJdfDApPj4+MCl9fWg9MjE0NzQ4MzY0OC8oaz4+PjApfDA7aWYoKGFbYis0Pj4wXXwwKT09MD8oZj1iKzM2fDAsKGNbZj4+Ml18MCkhPTApOjApe2lmKChjW2I+PjJdfDApIT0wKXtvPWNbYis4Pj4yXXwwO209Y1tiKzEyPj4yXXwwO2s9Yis0MHwwO249YisxNnwwO2o9MDtzPTA7bD0wO3doaWxlKDEpe3I9KGVhKGwsaCl8MCk+Pj4xNjtjW28rKGo8PDIpPj4yXT1yO2w9KGNbbSsoajw8Mik+PjJdfDApK2x8MDtyPXI+Pj4oY1trPj4yXXwwKTtpZihzPj4+MDxyPj4+MCl7cD1qKyAtMXwwO3E9Y1tuPj4yXXwwO2Rve3M9cysxfDA7Y1txKyhzPDwyKT4+Ml09cH13aGlsZSgoc3wwKSE9KHJ8MCkpfWVsc2V7cj1zfWo9aisxfDA7aWYoIShqPj4+MDwoY1tiPj4yXXwwKT4+PjApKXticmVha31lbHNle3M9cn19aD1jW24+PjJdfDA7Y1toPj4yXT0wO2lmKCEocj4+PjA+KGNbZj4+Ml18MCk+Pj4wKSl7Zz0xOH19ZWxzZXtoPWNbYisxNj4+Ml18MDtjW2g+PjJdPTA7cj0wO2c9MTh9aWYoKGd8MCk9PTE4KXtkb3tyPXIrMXwwO2NbaCsocjw8Mik+PjJdPShjW2I+PjJdfDApKyAtMX13aGlsZSghKHI+Pj4wPihjW2Y+PjJdfDApPj4+MCkpfXM9Y1tiPj4yXXwwO3I9Y1tlPj4yXXwwO3I9cio1fDA7cj1yPj4+MjtzPXM8PDM7cz1zKzQ4fDA7cT1yPj4+MD5zPj4+MDtyPXE/czpyO2NbZT4+Ml09cjtzPWIrMjh8MDtjW3M+PjJdPXI7aT1kO3JldHVybn1pZigoY1tiPj4yXXwwKT09MCl7cz0wO3I9Y1tlPj4yXXwwO3I9cio1fDA7cj1yPj4+MjtzPXM8PDM7cz1zKzQ4fDA7cT1yPj4+MD5zPj4+MDtyPXE/czpyO2NbZT4+Ml09cjtzPWIrMjh8MDtjW3M+PjJdPXI7aT1kO3JldHVybn1qPWNbYis4Pj4yXXwwO2s9Y1tiKzEyPj4yXXwwO2w9MDtnPTA7ZG97Y1tqKyhsPDwyKT4+Ml09KGVhKGcsaCl8MCk+Pj4xNjtnPShjW2srKGw8PDIpPj4yXXwwKStnfDA7bD1sKzF8MDtmPWNbYj4+Ml18MH13aGlsZShsPj4+MDxmPj4+MCk7cj1jW2U+PjJdfDA7cj1yKjV8MDtyPXI+Pj4yO3M9Zjw8MztzPXMrNDh8MDtxPXI+Pj4wPnM+Pj4wO3I9cT9zOnI7Y1tlPj4yXT1yO3M9YisyOHwwO2Nbcz4+Ml09cjtpPWQ7cmV0dXJufWZ1bmN0aW9uIGVkKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Q9aTthW2I+PjBdPTA7Y2QoYis0fDAsNTE2KTtlPWIrNDh8MDtjW2U+PjJdPTY7YVtiKzUyPj4wXT0wO2NbYis4MD4+Ml09NTtjW2IrNjQ+PjJdPTA7Y1tiKzg4Pj4yXT0wO2NbYis4ND4+Ml09MDtnPXVuKDkyKXwwO2Y9Zys2OCYtNjQ7Y1tmKyAtND4+Ml09ZztjW2IrNTY+PjJdPWY7Zj11big5Mil8MDtnPWYrNjgmLTY0O2NbZysgLTQ+PjJdPWY7Y1tiKzYwPj4yXT1nO2NbYis2OD4+Ml09MDtmPWIrNzJ8MDtjW2Y+PjJdPTY7aD0wO2Rve2NbZysoaDw8Mik+PjJdPTE7aD1oKzF8MH13aGlsZShoPj4+MDwoY1tlPj4yXXwwKT4+PjApO2RkKGUpO2U9KChjW2U+PjJdfDApKzZ8MCk+Pj4xO2NbZj4+Ml09ZTtjW2IrNzY+PjJdPWU7ZT1iKzkyfDA7Yj1lKzcyfDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KGJ8MCkpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZmQoZCl7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7Zz1kKzUyfDA7aD1kKzcyfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzc2fDA7Zz1kKzk2fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzEwMHwwO2g9ZCsxMjB8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrMTI0fDA7Zz1kKzE0NHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCsxNDh8MDtoPWQrMTY4fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzE3MnwwO2c9ZCsxOTJ8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrMTk2fDA7aD1kKzIxNnwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCsyMjB8MDtnPWQrMjQwfDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzI0NHwwO2g9ZCsyNjR8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrMjY4fDA7Zz1kKzI4OHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCsyOTJ8MDtoPWQrMzEyfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzMxNnwwO2c9ZCszMzZ8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrMzQwfDA7aD1kKzM2MHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCszNjR8MDtnPWQrMzg0fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzM4OHwwO2g9ZCs0MDh8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNDEyfDA7Zz1kKzQzMnwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs0MzZ8MDtoPWQrNDU2fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzQ2MHwwO2c9ZCs0ODB8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNDg0fDA7aD1kKzUwNHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs1MDh8MDtnPWQrNTI4fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzUzMnwwO2g9ZCs1NTJ8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNTU2fDA7Zz1kKzU3NnwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs1ODB8MDtoPWQrNjAwfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzYwNHwwO2c9ZCs2MjR8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNjI4fDA7aD1kKzY0OHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs2NTJ8MDtnPWQrNjcyfDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzY3NnwwO2g9ZCs2OTZ8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNzAwfDA7Zz1kKzcyMHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs3MjR8MDtoPWQrNzQ0fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzc0OHwwO2c9ZCs3Njh8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNzcyfDA7aD1kKzc5MnwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs3OTZ8MDtnPWQrODE2fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Y2QoZCs4NTJ8MCw2NCk7YVtkKzM5NzY+PjBdPTA7Zz1kKzIwfDA7aD1nKzMyfDA7ZG97YltnPj4xXT0wO2c9ZysyfDB9d2hpbGUoKGd8MCk8KGh8MCkpO3doaWxlKDEpe2c9dW4oNDQpfDA7aWYoKGd8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtmPTU7YnJlYWt9c2NbZyYzMV0oKX1pZigoZnwwKT09NSl7aD1YYSg0KXwwO2NbaD4+Ml09MjI2ODA7d2IoaHwwLDIyNzI4LDIwNil9Y2QoZywyNTYpO2NbZCs4OTY+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9MTI7YnJlYWt9c2NbZyYzMV0oKX1pZigoZnwwKT09MTIpe2g9WGEoNCl8MDtjW2g+PjJdPTIyNjgwO3diKGh8MCwyMjcyOCwyMDYpfWNkKGcsMjU2KTtjW2QrOTAwPj4yXT1nO2Y9ZCs4MjB8MDtjW2YrMD4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDtjW2YrMTI+PjJdPTA7Y1tmKzE2Pj4yXT0wO2NbZisyMD4+Ml09MDtjW2YrMjQ+PjJdPTA7Y1tmKzI4Pj4yXT0wO2Y9MDthOndoaWxlKDEpe3doaWxlKDEpe2c9dW4oNDQpfDA7aWYoKGd8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtmPTIwO2JyZWFrIGF9c2NbZyYzMV0oKX1jZChnLDI1Nik7Y1tkKyhmPDwyKSs5MDQ+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9Mjc7YnJlYWsgYX1zY1tnJjMxXSgpfWNkKGcsMjU2KTtjW2QrKGY8PDIpKzE5Mjg+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9MzQ7YnJlYWsgYX1zY1tnJjMxXSgpfWNkKGcsMjU2KTtjW2QrKGY8PDIpKzI5NTI+PjJdPWc7Zj1mKzF8MDtpZigoZnwwKT49MjU2KXtmPTM4O2JyZWFrfX1pZigoZnwwKT09MjApe2g9WGEoNCl8MDtjW2g+PjJdPTIyNjgwO3diKGh8MCwyMjcyOCwyMDYpfWVsc2UgaWYoKGZ8MCk9PTI3KXtoPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX1lbHNlIGlmKChmfDApPT0zNCl7aD1YYSg0KXwwO2NbaD4+Ml09MjI2ODA7d2IoaHwwLDIyNzI4LDIwNil9ZWxzZSBpZigoZnwwKT09Mzgpe2NbZCszOTg0Pj4yXT0xNjtjW2QrMzk4OD4+Ml09NDtjW2QrMzk5Mj4+Ml09ODtjW2QrMzk5Nj4+Ml09MDtjW2QrNDAxNj4+Ml09MDtjW2QrNDAyMD4+Ml09MDtjW2QrNDAyND4+Ml09MDtjW2QrNDA0MD4+Ml09MTtjW2QrNDA0ND4+Ml09MjtjW2QrNDAzNj4+Ml09NDA5NjtjW2QrNDAzMj4+Ml09NDtjW2QrNDAyOD4+Ml09NDtjW2QrNDA0OD4+Ml09MDtjW2QrNDA1Mj4+Ml09MDtjW2QrNDA1Nj4+Ml09MDtjW2QrNGUzPj4yXT0xNjtjW2QrNDAwND4+Ml09NjU1MzY7Y1tkKzQwMDg+PjJdPS0zMjc2ODtjW2QrNDAxMj4+Ml09MzI3Njc7Y1tkKzM5ODA+PjJdPTA7Y1tkKzQwNjQ+PjJdPTE2O2NbZCs0MDY4Pj4yXT0xO2NbZCs0MDcyPj4yXT04O2NbZCs0MDc2Pj4yXT0wO2NbZCs0MDk2Pj4yXT0wO2NbZCs0MTAwPj4yXT0wO2NbZCs0MTA0Pj4yXT0wO2NbZCs0MTIwPj4yXT0xO2NbZCs0MTI0Pj4yXT0yO2NbZCs0MTE2Pj4yXT00MDk2O2NbZCs0MTEyPj4yXT00O2NbZCs0MTA4Pj4yXT00O2NbZCs0MTI4Pj4yXT0wO2NbZCs0MTMyPj4yXT0wO2NbZCs0MTM2Pj4yXT0wO2NbZCs0MDgwPj4yXT0xNjtjW2QrNDA4ND4+Ml09NjU1MzY7Y1tkKzQwODg+PjJdPS0zMjc2ODtjW2QrNDA5Mj4+Ml09MzI3Njc7Y1tkKzQwNjA+PjJdPTA7Y1tkKzQxNDQ+PjJdPTMyO2NbZCs0MTQ4Pj4yXT0yO2NbZCs0MTUyPj4yXT04O2NbZCs0MTU2Pj4yXT0wO2NbZCs0MTc2Pj4yXT0wO2NbZCs0MTgwPj4yXT0wO2NbZCs0MTg0Pj4yXT0wO2NbZCs0MjAwPj4yXT0xO2NbZCs0MjA0Pj4yXT0yO2NbZCs0MTk2Pj4yXT00MDk2O2NbZCs0MTkyPj4yXT00O2NbZCs0MTg4Pj4yXT00O2NbZCs0MjA4Pj4yXT0wO2NbZCs0MjEyPj4yXT0wO2NbZCs0MjE2Pj4yXT0wO2NbZCs0MTYwPj4yXT0zMjtjW2QrNDE2ND4+Ml09MDtjW2QrNDE2OD4+Ml09LTIxNDc0ODM2NDg7Y1tkKzQxNzI+PjJdPTIxNDc0ODM2NDc7Y1tkKzQxNDA+PjJdPTA7Y1tkKzQyMjQ+PjJdPTMyO2NbZCs0MjI4Pj4yXT0yMjtjW2QrNDIzMj4+Ml09ODtjW2QrNDIzNj4+Ml09MDtjW2QrNDI1Nj4+Ml09MDtjW2QrNDI2MD4+Ml09MDtjW2QrNDI2ND4+Ml09MDtjW2QrNDI4MD4+Ml09MTtjW2QrNDI4ND4+Ml09MjtjW2QrNDI3Nj4+Ml09NDA5NjtjW2QrNDI3Mj4+Ml09NDtjW2QrNDI2OD4+Ml09NDtjW2QrNDI4OD4+Ml09MDtjW2QrNDI5Mj4+Ml09MDtjW2QrNDI5Nj4+Ml09MDtjW2QrNDI0MD4+Ml09MzI7Y1tkKzQyNDQ+PjJdPTA7Y1tkKzQyNDg+PjJdPS0yMTQ3NDgzNjQ4O2NbZCs0MjUyPj4yXT0yMTQ3NDgzNjQ3O2NbZCs0MjIwPj4yXT0wO2NbZCs0MzA0Pj4yXT0zMjtjW2QrNDMwOD4+Ml09MjA7Y1tkKzQzMTI+PjJdPTg7Y1tkKzQzMTY+PjJdPTA7Y1tkKzQzMzY+PjJdPTA7Y1tkKzQzNDA+PjJdPTA7Y1tkKzQzNDQ+PjJdPTA7Y1tkKzQzNjA+PjJdPTE7Y1tkKzQzNjQ+PjJdPTI7Y1tkKzQzNTY+PjJdPTQwOTY7Y1tkKzQzNTI+PjJdPTQ7Y1tkKzQzNDg+PjJdPTQ7Y1tkKzQzNjg+PjJdPTA7Y1tkKzQzNzI+PjJdPTA7Y1tkKzQzNzY+PjJdPTA7Y1tkKzQzMjA+PjJdPTMyO2NbZCs0MzI0Pj4yXT0wO2NbZCs0MzI4Pj4yXT0tMjE0NzQ4MzY0ODtjW2QrNDMzMj4+Ml09MjE0NzQ4MzY0NztjW2QrNDMwMD4+Ml09MDtjW2QrNDM4ND4+Ml09MTY7Y1tkKzQzODg+PjJdPTQ7Y1tkKzQzOTI+PjJdPTg7Y1tkKzQzOTY+PjJdPTA7Y1tkKzQ0MTY+PjJdPTA7Y1tkKzQ0MjA+PjJdPTA7Y1tkKzQ0MjQ+PjJdPTA7Y1tkKzQ0NDA+PjJdPTE7Y1tkKzQ0NDQ+PjJdPTI7Y1tkKzQ0MzY+PjJdPTQwOTY7Y1tkKzQ0MzI+PjJdPTQ7Y1tkKzQ0Mjg+PjJdPTQ7Y1tkKzQ0NDg+PjJdPTA7Y1tkKzQ0NTI+PjJdPTA7Y1tkKzQ0NTY+PjJdPTA7Y1tkKzQ0MDA+PjJdPTE2O2NbZCs0NDA0Pj4yXT02NTUzNjtjW2QrNDQwOD4+Ml09LTMyNzY4O2NbZCs0NDEyPj4yXT0zMjc2NztjW2QrNDM4MD4+Ml09MDtjW2QrNDQ2ND4+Ml09MTY7Y1tkKzQ0Njg+PjJdPTE7Y1tkKzQ0NzI+PjJdPTg7Y1tkKzQ0NzY+PjJdPTA7Y1tkKzQ0OTY+PjJdPTA7Y1tkKzQ1MDA+PjJdPTA7Y1tkKzQ1MDQ+PjJdPTA7Y1tkKzQ1MjA+PjJdPTE7Y1tkKzQ1MjQ+PjJdPTI7Y1tkKzQ1MTY+PjJdPTQwOTY7Y1tkKzQ1MTI+PjJdPTQ7Y1tkKzQ1MDg+PjJdPTQ7Y1tkKzQ1Mjg+PjJdPTA7Y1tkKzQ1MzI+PjJdPTA7Y1tkKzQ1MzY+PjJdPTA7Y1tkKzQ0ODA+PjJdPTE2O2NbZCs0NDg0Pj4yXT02NTUzNjtjW2QrNDQ4OD4+Ml09LTMyNzY4O2NbZCs0NDkyPj4yXT0zMjc2NztjW2QrNDQ2MD4+Ml09MDtjW2QrNDU0ND4+Ml09MzI7Y1tkKzQ1NDg+PjJdPTI7Y1tkKzQ1NTI+PjJdPTg7Y1tkKzQ1NTY+PjJdPTA7Y1tkKzQ1NzY+PjJdPTA7Y1tkKzQ1ODA+PjJdPTA7Y1tkKzQ1ODQ+PjJdPTA7Y1tkKzQ2MDA+PjJdPTE7Y1tkKzQ2MDQ+PjJdPTI7Y1tkKzQ1OTY+PjJdPTQwOTY7Y1tkKzQ1OTI+PjJdPTQ7Y1tkKzQ1ODg+PjJdPTQ7Y1tkKzQ2MDg+PjJdPTA7Y1tkKzQ2MTI+PjJdPTA7Y1tkKzQ2MTY+PjJdPTA7Y1tkKzQ1NjA+PjJdPTMyO2NbZCs0NTY0Pj4yXT0wO2NbZCs0NTY4Pj4yXT0tMjE0NzQ4MzY0ODtjW2QrNDU3Mj4+Ml09MjE0NzQ4MzY0NztjW2QrNDU0MD4+Ml09MDtjW2QrNDYyND4+Ml09MzI7Y1tkKzQ2Mjg+PjJdPTIyO2NbZCs0NjMyPj4yXT04O2NbZCs0NjM2Pj4yXT0wO2NbZCs0NjU2Pj4yXT0wO2NbZCs0NjYwPj4yXT0wO2NbZCs0NjY0Pj4yXT0wO2NbZCs0NjgwPj4yXT0xO2NbZCs0Njg0Pj4yXT0yO2NbZCs0Njc2Pj4yXT00MDk2O2NbZCs0NjcyPj4yXT00O2NbZCs0NjY4Pj4yXT00O2NbZCs0Njg4Pj4yXT0wO2NbZCs0NjkyPj4yXT0wO2NbZCs0Njk2Pj4yXT0wO2NbZCs0NjQwPj4yXT0zMjtjW2QrNDY0ND4+Ml09MDtjW2QrNDY0OD4+Ml09LTIxNDc0ODM2NDg7Y1tkKzQ2NTI+PjJdPTIxNDc0ODM2NDc7Y1tkKzQ2MjA+PjJdPTA7Y1tkKzQ3MDQ+PjJdPTMyO2NbZCs0NzA4Pj4yXT0yMDtjW2QrNDcxMj4+Ml09ODtjW2QrNDcxNj4+Ml09MDtjW2QrNDczNj4+Ml09MDtjW2QrNDc0MD4+Ml09MDtjW2QrNDc0ND4+Ml09MDtjW2QrNDc2MD4+Ml09MTtjW2QrNDc2ND4+Ml09MjtjW2QrNDc1Nj4+Ml09NDA5NjtjW2QrNDc1Mj4+Ml09NDtjW2QrNDc0OD4+Ml09NDtjW2QrNDc2OD4+Ml09MDtjW2QrNDc3Mj4+Ml09MDtjW2QrNDc3Nj4+Ml09MDtjW2QrNDcyMD4+Ml09MzI7Y1tkKzQ3MjQ+PjJdPTA7Y1tkKzQ3Mjg+PjJdPS0yMTQ3NDgzNjQ4O2NbZCs0NzMyPj4yXT0yMTQ3NDgzNjQ3O2NbZCs0NzAwPj4yXT0wO2FbZCs0NzgwPj4wXT0wO2FbZCs0NzgxPj4wXT0wO2k9ZTtyZXR1cm59fWZ1bmN0aW9uIGdkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2k9aSszMnwwO2g9ZTtmPWNbYis4Pj4yXXwwO2I9Y1tiKzQ+PjJdfDA7amQoaCxmLGIpO2c9Y1toPj4yXXwwO2FbZCszPj4wXT1nPj4+MjQ7YVtkKzI+PjBdPWc+Pj4xNjthW2QrMT4+MF09Zz4+Pjg7YVtkPj4wXT1nO2c9Y1toKzQ+PjJdfDA7YVtkKzc+PjBdPWc+Pj4yNDthW2QrNj4+MF09Zz4+PjE2O2FbZCs1Pj4wXT1nPj4+ODthW2QrND4+MF09ZztnPWNbaCs4Pj4yXXwwO2FbZCsxMT4+MF09Zz4+PjI0O2FbZCsxMD4+MF09Zz4+PjE2O2FbZCs5Pj4wXT1nPj4+ODthW2QrOD4+MF09ZztnPWNbaCsxMj4+Ml18MDthW2QrMTM+PjBdPShnJjY1NTM1KT4+Pjg7YVtkKzEyPj4wXT1nO2FbZCsxND4+MF09Zz4+PjE2O2FbZCsxNT4+MF09Zz4+PjI0O2g9Y1toKzE2Pj4yXXwwO2FbZCsxNj4+MF09aDthW2QrMTc+PjBdPShoJjY1NTM1KT4+Pjg7YVtkKzE5Pj4wXT1oPj4+MjQ7YVtkKzE4Pj4wXT1oPj4+MTY7aD1rZChmKzQ3ODR8MCxiKXwwO2c9STthW2QrMjM+PjBdPWg+Pj4yNDthW2QrMjI+PjBdPWg+Pj4xNjthW2QrMjE+PjBdPWg+Pj44O2FbZCsyMD4+MF09aDtqPUtuKGh8MCxnfDAsNTYpfDA7YVtkKzI3Pj4wXT1qO2o9S24oaHwwLGd8MCw0OCl8MDthW2QrMjY+PjBdPWo7aD1LbihofDAsZ3wwLDQwKXwwO2FbZCsyNT4+MF09aDthW2QrMjQ+PjBdPWc7bGQoZis1MTEyfDAsYixkKzI4fDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gaGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7Y1thPj4yXT00MjQ7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1hZChhKzUxMTJ8MCk7X2MoYSs1MDk2fDApO19jKGErNTA2NHwwKTtaYyhhKzQ5NDh8MCk7JGMoYSs0Nzg0fDApO1hjKGEpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gaWQoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2NbYT4+Ml09NDI0O2Q9Y1thKzg+PjJdfDA7aWYoKGR8MCk9PTApe3ZuKGEpO2k9YjtyZXR1cm59YWQoZCs1MTEyfDApO19jKGQrNTA5NnwwKTtfYyhkKzUwNjR8MCk7WmMoZCs0OTQ4fDApOyRjKGQrNDc4NHwwKTtYYyhkKTt2bihkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGpkKGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO2o9aTtpPWkrMzJ8MDtrPWo7bD1nKzQ3ODF8MDtpZigoYVtsPj4wXXwwKT09MCl7dGQoZys0MzgwfDApO3RkKGcrNDQ2MHwwKTt0ZChnKzQ1NDB8MCk7dGQoZys0NjIwfDApO3RkKGcrNDcwMHwwKTthW2w+PjBdPTF9bD1nKzM5NzZ8MDtpZigoYVtsPj4wXXwwKT09MCl7YVtsPj4wXT0xO3BkKGNbaD4+Ml18MCxrLDIwKTtyPWRbaysxPj4wXTw8OHxkW2s+PjBdfGRbaysyPj4wXTw8MTZ8ZFtrKzM+PjBdPDwyNDtvPWRbays1Pj4wXTw8OHxkW2srND4+MF18ZFtrKzY+PjBdPDwxNnxkW2srNz4+MF08PDI0O3A9ZFtrKzk+PjBdPDw4fGRbays4Pj4wXXxkW2srMTA+PjBdPDwxNnxkW2srMTE+PjBdPDwyNDtxPShhW2srMTM+PjBdPDw4fGRbaysxMj4+MF0pJjY1NTM1O3M9YVtrKzE0Pj4wXXwwO3Q9YVtrKzE1Pj4wXXwwO3U9YVtrKzE2Pj4wXXwwO2g9YVtrKzE3Pj4wXXwwO3Y9KGFbaysxOT4+MF08PDh8ZFtrKzE4Pj4wXSkmNjU1MzU7YVtnPj4wXT1yO2FbZysxPj4wXT1yPj44O2FbZysyPj4wXT1yPj4xNjthW2crMz4+MF09cj4+MjQ7cj1nKzR8MDthW3I+PjBdPW87YVtyKzE+PjBdPW8+Pjg7YVtyKzI+PjBdPW8+PjE2O2FbciszPj4wXT1vPj4yNDtyPWcrOHwwO2Fbcj4+MF09cDthW3IrMT4+MF09cD4+ODthW3IrMj4+MF09cD4+MTY7YVtyKzM+PjBdPXA+PjI0O3I9ZysxMnwwO2Fbcj4+MF09cTthW3IrMT4+MF09cT4+ODthW2crMTQ+PjBdPXM7YVtnKzE1Pj4wXT10O2FbZysxNj4+MF09dTthW2crMTc+PjBdPWg7aD1nKzE4fDA7YVtoPj4wXT12O2FbaCsxPj4wXT12Pj44O2Y9ZiswfDA7aD1nKzB8MDtnPWYrMjB8MDtkb3thW2Y+PjBdPWFbaD4+MF18MDtmPWYrMXwwO2g9aCsxfDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2k9ajtyZXR1cm59bT1xZChoLGcrODUyfDApfDA7aWYoKG18MCkhPTApe289ZysxNHwwO2s9YVtvPj4wXXwwO2lmKChtJjMyfDApIT0wKXtrPShxZChoLGNbZysoKCgoayYyNTUpPj4+NyYyNTUpPDw3fGsmN3woKGsmMjU1KT4+PjYmMjU1KTw8NiY2NHwoKGsmMjU1KT4+PjMmMjU1KTw8MyY1Nik8PDIpKzkwND4+Ml18MCl8MCkmMjU1O2Fbbz4+MF09a31sPWsmNztrPShrJjI1NSk+Pj4zJjc7bj1kWzg3Misoazw8MykrbD4+MF18MDtsPWRbOTM2KyhrPDwzKStsPj4wXXwwO2lmKChtJjE2fDApPT0wKXt1PWJbZysobjw8MSkrMjA+PjFdfDA7dj1nKzEyfDA7YVt2Pj4wXT11O2FbdisxPj4wXT11Pj44fWVsc2V7cD1nKyhuPDwxKSsyMHwwO3E9ZVtwPj4xXXwwO3E9KHJkKGcrNDM4MHwwLGgsKGNbZys0NDE2Pj4yXXwwKSsoKG4+Pj4wPDM/bjozKSo0NHwwKXwwKXwwKStxfDA7cj1jW2crNDQwND4+Ml18MDtpZigocXwwKTwwKXtxPXErcnwwfWVsc2V7cT1xLShxPj4+MDxyPj4+MD8wOnIpfDB9dj1xJjY1NTM1O3U9ZysxMnwwO2FbdT4+MF09djthW3UrMT4+MF09dj4+ODtiW3A+PjFdPXZ9aWYoKG0mOHwwKSE9MCl7dj1nKzE1fDA7YVt2Pj4wXT1xZChoLGNbZysoZFt2Pj4wXTw8MikrMTkyOD4+Ml18MCl8MH1pZigobSY0fDApIT0wKXtwPXFkKGgsY1tnKygoKGRbbz4+MF18MCk+Pj42JjEpPDwyKSs4OTY+PjJdfDApfDA7bz1nKzE2fDA7cD0oYVtvPj4wXXwwKStwfDA7aWYoKHB8MCk8MCl7cD1wKzI1NnwwfWVsc2V7cD0ocHwwKT4yNTU/cCsgLTI1NnwwOnB9YVtvPj4wXT1wfWlmKChtJjJ8MCkhPTApe3Y9ZysxN3wwO2Fbdj4+MF09cWQoaCxjW2crKGRbdj4+MF08PDIpKzI5NTI+PjJdfDApfDB9aWYoKG0mMXwwKSE9MCl7bT1nKzE4fDA7cD0oZFttPj4wXXxkW20rMT4+MF08PDgpJjY1NTM1O3A9KHJkKGcrNDQ2MHwwLGgsY1tnKzQ0OTY+PjJdfDApfDApK3B8MDtvPWNbZys0NDg0Pj4yXXwwO2lmKChwfDApPDApe289cCtvfDB9ZWxzZXtvPXAtKHA+Pj4wPG8+Pj4wPzA6byl8MH12PW8mNjU1MzU7YVttPj4wXT12O2FbbSsxPj4wXT12Pj44fX1lbHNle2s9YVtnKzE0Pj4wXXwwO249ayY3O2s9KGsmMjU1KT4+PjMmNztsPWRbOTM2KyhrPDwzKStuPj4wXXwwO249ZFs4NzIrKGs8PDMpK24+PjBdfDB9cT1nKyhuKjI0fDApKzUyfDA7bz1nKyhuKjI0fDApKzYwfDA7cD1jW28+PjJdfDA7bT1nKzQ1NDB8MDtrPShrfDApPT0xJjE7cD0ocmQobSxoLChjW2crNDU3Nj4+Ml18MCkrKGsqNDR8MCl8MCl8MCkrcHwwO3I9Y1tnKzQ1NjQ+PjJdfDA7aWYoKHB8MCk8MCl7cD1wK3J8MH1lbHNle3A9cC0ocD4+PjA8cj4+PjA/MDpyKXwwfXI9KGRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNCkrcHwwO2FbZz4+MF09cjthW2crMT4+MF09cj4+ODthW2crMj4+MF09cj4+MTY7YVtnKzM+PjBdPXI+PjI0O3I9ZysobioyNHwwKSs3MnwwO3M9Y1tvPj4yXXwwO2Rve2lmKChhW3I+PjBdfDApPT0wKXt1PWcrKG4qMjR8MCkrNTZ8MDt0PWNbdT4+Ml18MDtpZigoc3wwKT49KHB8MCkpe2lmKCh0fDApPChwfDApKXtjW3E+PjJdPXQ7Y1t1Pj4yXT1wfWVsc2V7Y1txPj4yXT1wfWFbcj4+MF09MTticmVha31jW3E+PjJdPXQ7Y1t1Pj4yXT1zO3Q9ZysobioyNHwwKSs2OHwwO3E9Y1t0Pj4yXXwwO3M9ZysobioyNHwwKSs2NHwwO3I9Y1tzPj4yXXwwO2lmKChxfDApPChwfDApKXtjW28+PjJdPXI7Y1tzPj4yXT1xO2NbdD4+Ml09cDticmVha31pZigocnwwKTwocHwwKSl7Y1tvPj4yXT1yO2Nbcz4+Ml09cDticmVha31lbHNle2Nbbz4+Ml09cDticmVha319ZWxzZXt0PWcrKG4qMjR8MCkrNjR8MDt1PWNbdD4+Ml18MDtpZigocHwwKT49KHN8MCkpe289ZysobioyNHwwKSs2OHwwO2lmKChwfDApPCh1fDApKXtjW28+PjJdPXU7Y1t0Pj4yXT1wfWVsc2V7Y1tvPj4yXT1wfWFbcj4+MF09MDticmVha31jW2crKG4qMjR8MCkrNjg+PjJdPXU7Y1t0Pj4yXT1zO3M9Y1txPj4yXXwwO3Q9ZysobioyNHwwKSs1NnwwO3I9Y1t0Pj4yXXwwO2lmKChwfDApPChzfDApKXtjW28+PjJdPXI7Y1t0Pj4yXT1zO2NbcT4+Ml09cDticmVha31pZigocHwwKTwocnwwKSl7Y1tvPj4yXT1yO2NbdD4+Ml09cDticmVha31lbHNle2Nbbz4+Ml09cDticmVha319fXdoaWxlKDApO3I9ZysobioyNHwwKSs0MzZ8MDtwPWcrKG4qMjR8MCkrNDQ0fDA7cT1jW3A+PjJdfDA7cz1jW20+PjJdfDA7bz1nKzQ2MjB8MDtxPShyZChvLGgsKGNbZys0NjU2Pj4yXXwwKSsoKChzPj4+MDwyMD9zJi0yOjIwKXxrKSo0NHwwKXwwKXwwKStxfDA7cz1jW2crNDY0ND4+Ml18MDtpZigocXwwKTwwKXtxPXErc3wwfWVsc2V7cT1xLShxPj4+MDxzPj4+MD8wOnMpfDB9cz1nKzR8MDt0PShkW3M+PjBdfGRbcysxPj4wXTw8OHxkW3MrMj4+MF08PDE2fGRbcyszPj4wXTw8MjQpK3F8MDthW3M+PjBdPXQ7YVtzKzE+PjBdPXQ+Pjg7YVtzKzI+PjBdPXQ+PjE2O2FbcyszPj4wXT10Pj4yNDtzPWcrKG4qMjR8MCkrNDU2fDA7dD1jW3A+PjJdfDA7ZG97aWYoKGFbcz4+MF18MCk9PTApe3U9ZysobioyNHwwKSs0NDB8MDt2PWNbdT4+Ml18MDtpZigodHwwKT49KHF8MCkpe2lmKCh2fDApPChxfDApKXtjW3I+PjJdPXY7Y1t1Pj4yXT1xfWVsc2V7Y1tyPj4yXT1xfWFbcz4+MF09MTticmVha31jW3I+PjJdPXY7Y1t1Pj4yXT10O3M9ZysobioyNHwwKSs0NTJ8MDtyPWNbcz4+Ml18MDtuPWcrKG4qMjR8MCkrNDQ4fDA7dD1jW24+PjJdfDA7aWYoKHJ8MCk8KHF8MCkpe2NbcD4+Ml09dDtjW24+PjJdPXI7Y1tzPj4yXT1xO2JyZWFrfWlmKCh0fDApPChxfDApKXtjW3A+PjJdPXQ7Y1tuPj4yXT1xO2JyZWFrfWVsc2V7Y1twPj4yXT1xO2JyZWFrfX1lbHNle3U9ZysobioyNHwwKSs0NDh8MDt2PWNbdT4+Ml18MDtpZigocXwwKT49KHR8MCkpe249ZysobioyNHwwKSs0NTJ8MDtpZigocXwwKTwodnwwKSl7Y1tuPj4yXT12O2NbdT4+Ml09cX1lbHNle2Nbbj4+Ml09cX1hW3M+PjBdPTA7YnJlYWt9Y1tnKyhuKjI0fDApKzQ1Mj4+Ml09djtjW3U+PjJdPXQ7cz1jW3I+PjJdfDA7bj1nKyhuKjI0fDApKzQ0MHwwO3Q9Y1tuPj4yXXwwO2lmKChxfDApPChzfDApKXtjW3A+PjJdPXQ7Y1tuPj4yXT1zO2Nbcj4+Ml09cTticmVha31pZigocXwwKTwodHwwKSl7Y1twPj4yXT10O2Nbbj4+Ml09cTticmVha31lbHNle2NbcD4+Ml09cTticmVha319fXdoaWxlKDApO209KGNbbz4+Ml18MCkrKGNbbT4+Ml18MCl8MDtsPWcrKGw8PDIpKzgyMHwwO249Y1tsPj4yXXwwO2lmKG0+Pj4wPDM2KXttPW0+Pj4xJjIxNDc0ODM2NDZ9ZWxzZXttPTE4fWs9KHJkKGcrNDcwMHwwLGgsKGNbZys0NzM2Pj4yXXwwKSsoKG18aykqNDR8MCl8MCl8MCkrbnwwO2g9Y1tnKzQ3MjQ+PjJdfDA7aWYoKGt8MCk8MCl7aD1rK2h8MH1lbHNle2g9ay0oaz4+PjA8aD4+PjA/MDpoKXwwfXY9Zys4fDA7YVt2Pj4wXT1oO2FbdisxPj4wXT1oPj44O2FbdisyPj4wXT1oPj4xNjthW3YrMz4+MF09aD4+MjQ7Y1tsPj4yXT1oO2Y9ZiswfDA7aD1nKzB8MDtnPWYrMjB8MDtkb3thW2Y+PjBdPWFbaD4+MF18MDtmPWYrMXwwO2g9aCsxfDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2k9ajtyZXR1cm59ZnVuY3Rpb24ga2QoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7Zj1pO2k9aSsxNnwwO2c9ZjtoPWIrMzI1fDA7aWYoKGFbaD4+MF18MCk9PTApe3RkKGIrMjQ0fDApO2FbaD4+MF09MX1pZigoYVtiPj4wXXwwKT09MCl7YVtiPj4wXT0xO3BkKGNbZT4+Ml18MCxnLDgpO249ZFtnKzE+PjBdPDw4fGRbZz4+MF18ZFtnKzI+PjBdPDwxNnxkW2crMz4+MF08PDI0O209ZFtnKzU+PjBdPDw4fGRbZys0Pj4wXXxkW2crNj4+MF08PDE2fGRbZys3Pj4wXTw8MjQ7bD1iKzEwMHwwO2s9bDthW2s+PjBdPW47YVtrKzE+PjBdPW4+Pjg7YVtrKzI+PjBdPW4+PjE2O2FbayszPj4wXT1uPj4yNDtsPWwrNHwwO2FbbD4+MF09bTthW2wrMT4+MF09bT4+ODthW2wrMj4+MF09bT4+MTY7YVtsKzM+PjBdPW0+PjI0O0k9bTtpPWY7cmV0dXJuIG58MH1nPWIrOTJ8MDtkb3tpZigoY1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDApPT0wKXtoPXFkKGUsYis0OHwwKXwwO2lmKChofDApPT0yKXtoPWIrOTZ8MDtjW2g+PjJdPShjW2g+PjJdfDApKzEmMztqPWIrKGNbZz4+Ml08PDMpKzEwNHwwO2o9ZFtqPj4wXXxkW2orMT4+MF08PDh8ZFtqKzI+PjBdPDwxNnxkW2orMz4+MF08PDI0O2o9KHJkKGIrMjQ0fDAsZSwoY1tiKzI4MD4+Ml18MCkrMzUyfDApfDApK2p8MDtrPWNbYisyNjg+PjJdfDA7aWYoKGp8MCk8MCl7aj1qK2t8MH1lbHNle2o9ai0oaj4+PjA8az4+PjA/MDprKXwwfW09KChqfDApPDApPDwzMT4+MzE7az1iKyhjW2g+PjJdPDwzKSsxMDB8MDtuPWs7YVtuPj4wXT1qO2FbbisxPj4wXT1qPj44O2FbbisyPj4wXT1qPj4xNjthW24rMz4+MF09aj4+MjQ7az1rKzR8MDthW2s+PjBdPW07YVtrKzE+PjBdPW0+Pjg7YVtrKzI+PjBdPW0+PjE2O2FbayszPj4wXT1tPj4yNDtrPWIrKGNbaD4+Ml08PDMpKzEwMHwwO209azttPWRbbT4+MF18ZFttKzE+PjBdPDw4fGRbbSsyPj4wXTw8MTZ8ZFttKzM+PjBdPDwyNDtqPWs7YVtqPj4wXT0wO2FbaisxPj4wXT0wO2FbaisyPj4wXT0wO2FbaiszPj4wXT0wO2s9ays0fDA7YVtrPj4wXT1tO2FbaysxPj4wXT1tPj44O2FbaysyPj4wXT1tPj4xNjthW2srMz4+MF09bT4+MjQ7az1lKzR8MDttPWNbaz4+Ml18MDtqPWUrOHwwO249KGNbaj4+Ml18MCk+Pj4xNjtjW2o+PjJdPW47bD0obT4+PjApLyhuPj4+MCl8MDtuPW0tKGVhKG4sbCl8MCl8MDtjW2s+PjJdPW47ZG97bj0obWQoY1tlPj4yXXwwKXwwKSYyNTV8bjw8ODtjW2s+PjJdPW47bT1jW2o+PjJdfDA7bz1tPDw4O2Nbaj4+Ml09b313aGlsZShvPj4+MDwxNjc3NzIxNik7bz1tPj4+OCY2NTUzNTtjW2o+PjJdPW87bT0obj4+PjApLyhvPj4+MCl8MDtuPW4tKGVhKG0sbyl8MCl8MDtjW2s+PjJdPW47ZG97bj0obWQoY1tlPj4yXXwwKXwwKSYyNTV8bjw8ODtjW2s+PjJdPW47bz1jW2o+PjJdPDw4O2Nbaj4+Ml09b313aGlsZShvPj4+MDwxNjc3NzIxNik7bz1iKyhjW2g+PjJdPDwzKSsxMDB8MDtuPW87az1uO249bis0fDA7bj1kW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjQ7bD1kW2s+PjBdfGRbaysxPj4wXTw8OHxkW2srMj4+MF08PDE2fGRbayszPj4wXTw8MjR8KG08PDE2fGwmNjU1MzUpO209bzthW20+PjBdPWw7YVttKzE+PjBdPWw+Pjg7YVttKzI+PjBdPWw+PjE2O2FbbSszPj4wXT1sPj4yNDtvPW8rNHwwO2Fbbz4+MF09bjthW28rMT4+MF09bj4+ODthW28rMj4+MF09bj4+MTY7YVtvKzM+PjBdPW4+PjI0O289Y1toPj4yXXwwO2NbZz4+Ml09bztjW2IrKG88PDIpKzEzMj4+Ml09MDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31lbHNlIGlmKChofDApPT0xKXtlPXJkKGIrMjQ0fDAsZSxjW2IrMjgwPj4yXXwwKXwwO2g9Y1tiKzI2OD4+Ml18MDtpZigoZXwwKTwwKXtlPWgrZXwwfWVsc2V7ZT1lLShlPj4+MDxoPj4+MD8wOmgpfDB9Y1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdPWU7bz1jW2c+PjJdfDA7bD1jW2IrKG88PDIpKzEzMj4+Ml18MDtvPWIrKG88PDMpKzEwMHwwO249bzttPW47bj1uKzR8MDtsPUluKGRbbT4+MF18ZFttKzE+PjBdPDw4fGRbbSsyPj4wXTw8MTZ8ZFttKzM+PjBdPDwyNHwwLGRbbj4+MF18ZFtuKzE+PjBdPDw4fGRbbisyPj4wXTw8MTZ8ZFtuKzM+PjBdPDwyNHwwLGx8MCwoKGx8MCk8MCk8PDMxPj4zMXwwKXwwO249STttPW87YVttPj4wXT1sO2FbbSsxPj4wXT1sPj44O2FbbSsyPj4wXT1sPj4xNjthW20rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW47YVtvKzE+PjBdPW4+Pjg7YVtvKzI+PjBdPW4+PjE2O2FbbyszPj4wXT1uPj4yNDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31lbHNle2lmKChofDApPD0yKXticmVha31jW2c+PjJdPWgrMisoY1tnPj4yXXwwKSYzO2tkKGIsZSl8MDticmVha319ZWxzZXtoPXFkKGUsYis0fDApfDA7aWYoKGh8MCk9PTEpe2g9Y1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDA7ZT0ocmQoYisyNDR8MCxlLChjW2IrMjgwPj4yXXwwKSs0NHwwKXwwKStofDA7aD1jW2IrMjY4Pj4yXXwwO2lmKChlfDApPDApe2U9ZStofDB9ZWxzZXtlPWUtKGU+Pj4wPGg+Pj4wPzA6aCl8MH1vPWIrKGNbZz4+Ml08PDMpKzEwMHwwO2w9bztuPWw7bD1sKzR8MDtsPUluKGRbbj4+MF18ZFtuKzE+PjBdPDw4fGRbbisyPj4wXTw8MTZ8ZFtuKzM+PjBdPDwyNHwwLGRbbD4+MF18ZFtsKzE+PjBdPDw4fGRbbCsyPj4wXTw8MTZ8ZFtsKzM+PjBdPDwyNHwwLGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwKXwwO249STttPW87YVttPj4wXT1sO2FbbSsxPj4wXT1sPj44O2FbbSsyPj4wXT1sPj4xNjthW20rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW47YVtvKzE+PjBdPW4+Pjg7YVtvKzI+PjBdPW4+PjE2O2FbbyszPj4wXT1uPj4yNDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31pZigoaHwwKT49NTExKXtpZigoaHwwKSE9NTEyKXtpZigoaHwwKTw9NTExKXticmVha31jW2c+PjJdPShjW2c+PjJdfDApK2gmMztrZChiLGUpfDA7YnJlYWt9aD1iKzk2fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxJjM7az1iKyhjW2c+PjJdPDwzKSsxMDR8MDtrPWRbaz4+MF18ZFtrKzE+PjBdPDw4fGRbaysyPj4wXTw8MTZ8ZFtrKzM+PjBdPDwyNDtrPShyZChiKzI0NHwwLGUsKGNbYisyODA+PjJdfDApKzM1MnwwKXwwKStrfDA7aj1jW2IrMjY4Pj4yXXwwO2lmKChrfDApPDApe2o9aytqfDB9ZWxzZXtqPWstKGs+Pj4wPGo+Pj4wPzA6ail8MH1vPSgoanwwKTwwKTw8MzE+PjMxO2s9YisoY1toPj4yXTw8MykrMTAwfDA7bD1rO2FbbD4+MF09ajthW2wrMT4+MF09aj4+ODthW2wrMj4+MF09aj4+MTY7YVtsKzM+PjBdPWo+PjI0O2s9ays0fDA7YVtrPj4wXT1vO2FbaysxPj4wXT1vPj44O2FbaysyPj4wXT1vPj4xNjthW2srMz4+MF09bz4+MjQ7az1iKyhjW2g+PjJdPDwzKSsxMDB8MDtvPWs7bz1kW28+PjBdfGRbbysxPj4wXTw8OHxkW28rMj4+MF08PDE2fGRbbyszPj4wXTw8MjQ7bD1rO2FbbD4+MF09MDthW2wrMT4+MF09MDthW2wrMj4+MF09MDthW2wrMz4+MF09MDtrPWsrNHwwO2Fbaz4+MF09bzthW2srMT4+MF09bz4+ODthW2srMj4+MF09bz4+MTY7YVtrKzM+PjBdPW8+PjI0O2s9ZSs0fDA7bz1jW2s+PjJdfDA7bD1lKzh8MDttPShjW2w+PjJdfDApPj4+MTY7Y1tsPj4yXT1tO2o9KG8+Pj4wKS8obT4+PjApfDA7bT1vLShlYShtLGopfDApfDA7Y1trPj4yXT1tO2Rve209KG1kKGNbZT4+Ml18MCl8MCkmMjU1fG08PDg7Y1trPj4yXT1tO249Y1tsPj4yXXwwO289bjw8ODtjW2w+PjJdPW99d2hpbGUobz4+PjA8MTY3NzcyMTYpO289bj4+PjgmNjU1MzU7Y1tsPj4yXT1vO249KG0+Pj4wKS8obz4+PjApfDA7bT1tLShlYShuLG8pfDApfDA7Y1trPj4yXT1tO2Rve209KG1kKGNbZT4+Ml18MCl8MCkmMjU1fG08PDg7Y1trPj4yXT1tO289Y1tsPj4yXTw8ODtjW2w+PjJdPW99d2hpbGUobz4+PjA8MTY3NzcyMTYpO289YisoY1toPj4yXTw8MykrMTAwfDA7bT1vO2w9bTttPW0rNHwwO209ZFttPj4wXXxkW20rMT4+MF08PDh8ZFttKzI+PjBdPDwxNnxkW20rMz4+MF08PDI0O2w9ZFtsPj4wXXxkW2wrMT4+MF08PDh8ZFtsKzI+PjBdPDwxNnxkW2wrMz4+MF08PDI0fChuPDwxNnxqJjY1NTM1KTtuPW87YVtuPj4wXT1sO2FbbisxPj4wXT1sPj44O2FbbisyPj4wXT1sPj4xNjthW24rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW07YVtvKzE+PjBdPW0+Pjg7YVtvKzI+PjBdPW0+PjE2O2FbbyszPj4wXT1tPj4yNDtvPWNbaD4+Ml18MDtjW2c+PjJdPW87Y1tiKyhvPDwyKSsxMzI+PjJdPTA7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTA7YnJlYWt9ZG97aWYoKGh8MCk9PTApe2U9cmQoYisyNDR8MCxlLChjW2IrMjgwPj4yXXwwKSszMDh8MCl8MDtoPWNbYisyNjg+PjJdfDA7aWYoKGV8MCk8MCl7ZT1oK2V8MH1lbHNle2U9ZS0oZT4+PjA8aD4+PjA/MDpoKXwwfWg9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2g9Y1tnPj4yXXwwO2lmKChjW2IrKGg8PDIpKzE0OD4+Ml18MCk+Myl7Y1tiKyhoPDwyKSsxMzI+PjJdPWU7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTB9fWVsc2V7aWYoKGh8MCk8NTAwKXtsPWIrMjQ0fDA7aj1lYShjW2IrKGNbZz4+Ml08PDIpKzEzMj4+Ml18MCxoKXwwO2s9Y1tiKzI4MD4+Ml18MDtpZigoaHwwKTwxMCl7aD0ocmQobCxlLGsrODh8MCl8MCkranwwO2U9Y1tiKzI2OD4+Ml18MDtpZigoaHwwKTwwKXtlPWgrZXwwO2JyZWFrfWVsc2V7ZT1oLShoPj4+MDxlPj4+MD8wOmUpfDA7YnJlYWt9fWVsc2V7aD0ocmQobCxlLGsrMTMyfDApfDApK2p8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MDticmVha31lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwO2JyZWFrfX19aWYoKGh8MCk9PTUwMCl7aD0oY1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDApKjUwMHwwO2g9KHJkKGIrMjQ0fDAsZSwoY1tiKzI4MD4+Ml18MCkrMTc2fDApfDApK2h8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MH1lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwfWg9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2g9Y1tnPj4yXXwwO2lmKChjW2IrKGg8PDIpKzE0OD4+Ml18MCk8PTMpe2JyZWFrfWNbYisoaDw8MikrMTMyPj4yXT1lO2NbYisoY1tnPj4yXTw8MikrMTQ4Pj4yXT0wO2JyZWFrfWg9NTAwLWh8MDtrPWIrMjQ0fDA7aj1jW2IrKGNbZz4+Ml08PDIpKzEzMj4+Ml18MDtpZigoaHwwKT4tMTApe2g9ZWEoaixoKXwwO2g9KHJkKGssZSwoY1tiKzI4MD4+Ml18MCkrMjIwfDApfDApK2h8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MDticmVha31lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwO2JyZWFrfX1oPWVhKGosLTEwKXwwO2U9KHJkKGssZSwoY1tiKzI4MD4+Ml18MCkrMjY0fDApfDApK2h8MDtoPWNbYisyNjg+PjJdfDA7aWYoKGV8MCk8MCl7aD1lK2h8MH1lbHNle2g9ZS0oZT4+PjA8aD4+PjA/MDpoKXwwfWU9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxO2U9Y1tnPj4yXXwwO2lmKChjW2IrKGU8PDIpKzE0OD4+Ml18MCk+Myl7Y1tiKyhlPDwyKSsxMzI+PjJdPWg7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTA7ZT1ofWVsc2V7ZT1ofX19d2hpbGUoMCk7bz1iKyhjW2c+PjJdPDwzKSsxMDB8MDtsPW87bj1sO2w9bCs0fDA7bD1JbihkW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjR8MCxkW2w+PjBdfGRbbCsxPj4wXTw8OHxkW2wrMj4+MF08PDE2fGRbbCszPj4wXTw8MjR8MCxlfDAsKChlfDApPDApPDwzMT4+MzF8MCl8MDtuPUk7bT1vO2FbbT4+MF09bDthW20rMT4+MF09bD4+ODthW20rMj4+MF09bD4+MTY7YVttKzM+PjBdPWw+PjI0O289bys0fDA7YVtvPj4wXT1uO2FbbysxPj4wXT1uPj44O2FbbysyPj4wXT1uPj4xNjthW28rMz4+MF09bj4+MjR9fXdoaWxlKDApO249YisoY1tnPj4yXTw8MykrMTAwfDA7bz1uO249bis0fDA7bj1kW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjQ7bz1kW28+PjBdfGRbbysxPj4wXTw8OHxkW28rMj4+MF08PDE2fGRbbyszPj4wXTw8MjQ7ST1uO2k9ZjtyZXR1cm4gb3wwfWZ1bmN0aW9uIGxkKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtnPWk7aT1pKzE2fDA7aD1nO2lmKChhW2I+PjBdfDApPT0wKXthW2I+PjBdPTE7cGQoY1tlPj4yXXwwLGgsNik7dT1hW2grMT4+MF08PDh8ZFtoPj4wXTtqPXUmNjU1MzU7bD1hW2grMj4+MF18MDtrPShhW2grMz4+MF08PDh8bCYyNTUpJjY1NTM1O249YVtoKzQ+PjBdfDA7bT0oYVtoKzU+PjBdPDw4fG4mMjU1KSY2NTUzNTtoPWIrMXwwO2FbaD4+MF09ajthW2grMT4+MF09aj4+ODtoPWIrM3wwO2FbaD4+MF09azthW2grMT4+MF09az4+ODtoPWIrNXwwO2FbaD4+MF09bTthW2grMT4+MF09bT4+ODtoPXU7bT0obSY2NTUzNSk+Pj44JjI1NX1lbHNle2w9cWQoZSxiKzh8MCl8MDtpZigobCYxfDApPT0wKXttPWIrMXwwO209ZFttPj4wXXxkW20rMT4+MF08PDg7aD1tJjI1NX1lbHNle2g9KHFkKGUsYis1MnwwKXwwKSYyNTU7bT1iKzF8MDttPWRbbT4+MF18ZFttKzE+PjBdPDw4O2g9KG0mMjU1KStofDA7aD0oaHwwKT4yNTU/aCs2NTI4MHwwOmh9aWYoKGwmMnwwKT09MCl7aD1tJjY1MjgwfGgmNjU1MzV9ZWxzZXt1PShxZChlLGIrOTZ8MCl8MCkmMjU1O209YisxfDA7bT1kW20+PjBdfGRbbSsxPj4wXTw8ODt1PSgobSY2NTUzNSk+Pj44KSt1fDA7aD0oKHV8MCk+MjU1P3UrNjUyODB8MDp1KTw8OHxoJjY1NTM1fWo9aCY2NTUzNTtkb3tpZigobCY2NHwwKT09MCl7az1iKzF8MDtsPWIrNXwwO249ajttPWp9ZWxzZXtrPWIrMXwwO209KGgmMjU1KS0obSYyNTUpfDA7ZG97aWYoKGwmNHwwKSE9MCl7cD1xZChlLGIrMTQwfDApfDA7bj1wJjI1NTtvPWIrM3wwO289ZFtvPj4wXXxkW28rMT4+MF08PDg7cT1vJjY1NTM1O3I9KHEmMjU1KSttfDA7cz0ocnwwKTwxO2lmKChyKyAtMXwwKT4+PjA+MjUzKXt0PXM/MDoyNTV9ZWxzZXt0PXErbSYyNTV9aWYoKHQrbnwwKT4yNTUpe2lmKCFzKXtpZigocnwwKT4yNTQpe249MjU1fWVsc2V7bj1xK20mMjU1fX1lbHNle249MH1uPShwfC0yNTYpK258MDticmVha31lbHNle2lmKCFzKXtpZigocnwwKT4yNTQpe3A9MjU1fWVsc2V7cD1xK20mMjU1fX1lbHNle3A9MH1uPXArbnwwO2JyZWFrfX1lbHNle289YiszfDA7bz1kW28+PjBdfGRbbysxPj4wXTw8ODtuPW8mMjU1fX13aGlsZSgwKTtkb3tpZigobCYxNnwwKSE9MCl7cD1xZChlLGIrMjI4fDApfDA7bz1iKzN8MDtvPWRbbz4+MF18ZFtvKzE+PjBdPDw4O3I9KChuJjI1NSkrbS0obyYyNTUpfDApLzJ8MDttPXAmMjU1O3Q9Yis1fDA7dD0oZFt0Pj4wXXxkW3QrMT4+MF08PDgpJjY1NTM1O3U9KHQmMjU1KStyfDA7cz0odXwwKTwxO2lmKCh1KyAtMXwwKT4+PjA+MjUzKXtxPXM/MDoyNTV9ZWxzZXtxPXQrciYyNTV9aWYoKHErbXwwKT4yNTUpe2lmKCFzKXtpZigodXwwKT4yNTQpe209MjU1fWVsc2V7bT10K3ImMjU1fX1lbHNle209MH1tPShwfC0yNTYpK218MDtwPW87YnJlYWt9ZWxzZXtpZighcyl7aWYoKHV8MCk+MjU0KXtwPTI1NX1lbHNle3A9dCtyJjI1NX19ZWxzZXtwPTB9bT1wK218MDtwPW87YnJlYWt9fWVsc2V7bT1iKzV8MDttPShkW20+PjBdfGRbbSsxPj4wXTw8OCkmMjU1O3A9b319d2hpbGUoMCk7bz0oaD4+PjgmMjU1KS0oKChkW2s+PjBdfGRbaysxPj4wXTw8OCkmNjU1MzUpPj4+OCl8MDtpZigobCY4fDApPT0wKXtyPXAmNjUyODB8biY2NTUzNX1lbHNle3A9cWQoZSxiKzE4NHwwKXwwO3E9cCYyNTU7dD1iKzN8MDt0PSgoKGRbdD4+MF18ZFt0KzE+PjBdPDw4KSY2NTUzNSk+Pj44KStvfDA7cj0odHwwKTwxO2lmKHIpe3M9MH1lbHNle3M9KHR8MCk+MjU0PzI1NTp0JjI1NX1pZigocytxfDApPjI1NSl7aWYocil7cT0wfWVsc2V7cT0odHwwKT4yNTQ/MjU1OnQmMjU1fXA9KHB8LTI1NikrcXwwfWVsc2V7aWYocil7cD0wfWVsc2V7cD0odHwwKT4yNTQ/MjU1OnQmMjU1fXA9cCtxfDB9cj1wPDw4fG4mNjU1MzV9bj1yJjY1NTM1O2lmKChsJjMyfDApPT0wKXt1PWIrNXwwO2w9dTttPSgoZFt1Pj4wXXxkW3UrMT4+MF08PDgpJjY1MjgwfG0pJjY1NTM1O2JyZWFrfXE9cWQoZSxiKzI3MnwwKXwwO3U9YiszfDA7cD1xJjI1NTtsPWIrNXwwO3I9KCgoZFtsPj4wXXxkW2wrMT4+MF08PDgpJjY1NTM1KT4+PjgpKygoKHI+Pj44JjI1NSkrby0oKChkW3U+PjBdfGRbdSsxPj4wXTw8OCkmNjU1MzUpPj4+OCl8MCkvMnwwKXwwO289KHJ8MCk8MTtpZihvKXtzPTB9ZWxzZXtzPShyfDApPjI1ND8yNTU6ciYyNTV9aWYoKHMrcHwwKT4yNTUpe2lmKG8pe289MH1lbHNle289KHJ8MCk+MjU0PzI1NTpyJjI1NX1vPShxfC0yNTYpK298MH1lbHNle2lmKG8pe289MH1lbHNle289KHJ8MCk+MjU0PzI1NTpyJjI1NX1vPW8rcHwwfW09KG88PDh8bSkmNjU1MzV9fXdoaWxlKDApO2Fbaz4+MF09ajthW2srMT4+MF09aj4+ODtrPWIrM3wwO2Fbaz4+MF09bjthW2srMT4+MF09bj4+ODthW2w+PjBdPW07YVtsKzE+PjBdPW0+Pjg7az1uO2w9biYyNTU7bj1tJjI1NTttPShtJjY1NTM1KT4+PjgmMjU1fWFbZisxPj4wXT0oaiY2NTUzNSk+Pj44O2FbZj4+MF09aDthW2YrMz4+MF09KGsmNjU1MzUpPj4+ODthW2YrMj4+MF09bDthW2YrNT4+MF09bTthW2YrND4+MF09bjtmPWIrMzE2fDA7aWYoKGFbZj4+MF18MCk9PTApe2k9ZztyZXR1cm59dT0oKG1kKGNbZT4+Ml18MCl8MCkmMjU1KTw8MjQ7dT0oKG1kKGNbZT4+Ml18MCl8MCkmMjU1KTw8MTZ8dTt1PXV8KChtZChjW2U+PjJdfDApfDApJjI1NSk8PDg7Y1tlKzQ+PjJdPXV8KG1kKGNbZT4+Ml18MCl8MCkmMjU1O2FbZj4+MF09MDtpPWc7cmV0dXJufWZ1bmN0aW9uIG1kKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Zz1pO2U9Yis0fDA7aD1jW2U+PjJdfDA7Zj1iKzh8MDtpZigoaHwwKTwoY1tmPj4yXXwwKSl7aj1oO2g9aisxfDA7Y1tlPj4yXT1oO2g9YisxMnwwO2g9Y1toPj4yXXwwO2o9aCtqfDA7aj1hW2o+PjBdfDA7aT1nO3JldHVybiBqfDB9Y1tlPj4yXT0wO2o9Y1tiPj4yXXwwO2g9aisxM3wwO2lmKChhW2g+PjBdfDApPT0wKXtrPWorNHwwO249ais4fDA7bD1jW24+PjJdfDA7bT0oY1trPj4yXXwwKS1sfDA7bT0obXwwKTwxMDQ4NTc2P206MTA0ODU3NjtNbihjW2IrMTI+PjJdfDAsKGNbaj4+Ml18MCkrbHwwLG18MCl8MDtsPShjW24+PjJdfDApK218MDtjW24+PjJdPWw7Y1tqKzE2Pj4yXT1tO2lmKChsfDApPj0oY1trPj4yXXwwKSl7YVtoPj4wXT0xfX1lbHNle2FbaisxMj4+MF09MX1uPWNbKGNbYj4+Ml18MCkrMTY+PjJdfDA7Y1tmPj4yXT1uO2lmKChufDApIT0wKXtuPWNbZT4+Ml18MDttPW4rMXwwO2NbZT4+Ml09bTttPWIrMTJ8MDttPWNbbT4+Ml18MDtuPW0rbnwwO249YVtuPj4wXXwwO2k9ZztyZXR1cm4gbnwwfWI9WGEoOCl8MDtjW2I+PjJdPTk5Mjg7d2hpbGUoMSl7ZT11bigzMil8MDtpZigoZXwwKSE9MCl7ZD0xNDticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZHwwKT09MTQpe2NbZSs0Pj4yXT0xOTtjW2U+PjJdPTE5O2Y9ZSsxMnwwO2NbYis0Pj4yXT1mO2NbZSs4Pj4yXT0wO2Y9ZiswfDA7ZT04MjR8MDtkPWYrMjB8MDtkb3thW2Y+PjBdPWFbZT4+MF18MDtmPWYrMXwwO2U9ZSsxfDB9d2hpbGUoKGZ8MCk8KGR8MCkpO2NbYj4+Ml09ODU2O3diKGJ8MCw4MDgsMjYpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpO3JldHVybiAwfWZ1bmN0aW9uIG5kKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBvZChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHBkKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2Y9aTtnPWIrNHwwO2s9Y1tnPj4yXXwwO2o9Yis4fDA7ZG97aWYoKGt8MCk8KGNbaj4+Ml18MCkpe2o9a31lbHNle2NbZz4+Ml09MDtrPWNbYj4+Ml18MDtsPWsrMTN8MDtpZigoYVtsPj4wXXwwKT09MCl7bT1rKzR8MDtwPWsrOHwwO249Y1twPj4yXXwwO289KGNbbT4+Ml18MCktbnwwO289KG98MCk8MTA0ODU3Nj9vOjEwNDg1NzY7TW4oY1tiKzEyPj4yXXwwLChjW2s+PjJdfDApK258MCxvfDApfDA7bj0oY1twPj4yXXwwKStvfDA7Y1twPj4yXT1uO2NbaysxNj4+Ml09bztpZigobnwwKT49KGNbbT4+Ml18MCkpe2FbbD4+MF09MX19ZWxzZXthW2srMTI+PjBdPTF9cD1jWyhjW2I+PjJdfDApKzE2Pj4yXXwwO2Nbaj4+Ml09cDtpZigocHwwKSE9MCl7aj1jW2c+PjJdfDA7YnJlYWt9ZT1YYSg4KXwwO2NbZT4+Ml09OTkyODt3aGlsZSgxKXtmPXVuKDMyKXwwO2lmKChmfDApIT0wKXtoPTE0O2JyZWFrfWY9Y1s1NjY2XXwwO2NbNTY2Nl09ZiswO2lmKChmfDApPT0wKXticmVha31zY1tmJjMxXSgpfWlmKChofDApPT0xNCl7Y1tmKzQ+PjJdPTE5O2NbZj4+Ml09MTk7ZD1mKzEyfDA7Y1tlKzQ+PjJdPWQ7Y1tmKzg+PjJdPTA7ZD1kKzB8MDtnPTgyNHwwO2Y9ZCsyMHwwO2Rve2FbZD4+MF09YVtnPj4wXXwwO2Q9ZCsxfDA7Zz1nKzF8MH13aGlsZSgoZHwwKTwoZnwwKSk7Y1tlPj4yXT04NTY7d2IoZXwwLDgwOCwyNil9cD1YYSg0KXwwO2NbcD4+Ml09MjI2ODA7d2IocHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2I9Y1tiKzEyPj4yXXwwO2g9YisoaitlKXwwO2lmKChlfDApPT0wKXtwPWo7cD1wK2V8MDtjW2c+PjJdPXA7aT1mO3JldHVybn1iPWIranwwO3doaWxlKDEpe2FbZD4+MF09YVtiPj4wXXwwO2I9YisxfDA7aWYoKGJ8MCk9PShofDApKXticmVha31lbHNle2Q9ZCsxfDB9fXA9Y1tnPj4yXXwwO3A9cCtlfDA7Y1tnPj4yXT1wO2k9ZjtyZXR1cm59ZnVuY3Rpb24gcWQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7ZT1pO2Q9YSs4fDA7Zj1jW2Q+PjJdfDA7aD1jW2IrMTY+PjJdfDA7aWYoKGh8MCkhPTApe2o9Y1thKzQ+PjJdfDA7Zz1mPj4+MTU7Y1tkPj4yXT1nO2w9KGo+Pj4wKS8oZz4+PjApfDA7bT1sPj4+KGNbYis0MD4+Ml18MCk7az1jW2grKG08PDIpPj4yXXwwO209KGNbaCsobSsxPDwyKT4+Ml18MCkrMXwwO249aysxfDA7aD1jW2IrOD4+Ml18MDtpZihtPj4+MD5uPj4+MCl7d2hpbGUoMSl7bj0obStrfDApPj4+MTtvPShjW2grKG48PDIpPj4yXXwwKT4+PjA+bD4+PjA7az1vP2s6bjttPW8/bjptO249aysxfDA7aWYoIShtPj4+MD5uPj4+MCkpe2w9bjticmVha319fWVsc2V7bD1ufW49ZWEoZyxjW2grKGs8PDIpPj4yXXwwKXwwO2lmKChrfDApIT0oY1tiKzMyPj4yXXwwKSl7Zj1lYShjW2grKGw8PDIpPj4yXXwwLGcpfDB9fWVsc2V7aD1mPj4+MTU7Y1tkPj4yXT1oO2w9Y1tiPj4yXXwwO2c9Y1tiKzg+PjJdfDA7aj1jW2ErND4+Ml18MDttPWw+Pj4xO2s9MDtuPTA7ZG97cD1lYShjW2crKG08PDIpPj4yXXwwLGgpfDA7bz1wPj4+MD5qPj4+MDtmPW8/cDpmO249bz9uOnA7az1vP2s6bTtsPW8/bTpsO209KGsrbHwwKT4+PjF9d2hpbGUoKG18MCkhPShrfDApKX1nPWErNHwwO2g9ai1ufDA7Y1tnPj4yXT1oO3A9Zi1ufDA7Y1tkPj4yXT1wO2lmKHA+Pj4wPDE2Nzc3MjE2KXtkb3toPShtZChjW2E+PjJdfDApfDApJjI1NXxoPDw4O2NbZz4+Ml09aDtwPWNbZD4+Ml08PDg7Y1tkPj4yXT1wfXdoaWxlKHA+Pj4wPDE2Nzc3MjE2KX1vPShjW2IrMTI+PjJdfDApKyhrPDwyKXwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtvPWIrMjh8MDtwPShjW28+PjJdfDApKyAtMXwwO2Nbbz4+Ml09cDtpZigocHwwKSE9MCl7aT1lO3JldHVybiBrfDB9ZGQoYik7aT1lO3JldHVybiBrfDB9ZnVuY3Rpb24gcmQoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtmPXFkKGIsZCl8MDtjW2E+PjJdPWY7aWYoKGZ8MCkhPTApe2lmKCEoZj4+PjA8MzIpKXtsPWNbYSsyOD4+Ml18MDtpPWU7cmV0dXJuIGx8MH1kPWNbYSsxMj4+Ml18MDtpZihmPj4+MD5kPj4+MCl7ZD1mLWR8MDtsPXFkKGIsKGNbYSs2OD4+Ml18MCkrKChmKyAtMXwwKSo0NHwwKXwwKXwwO2Q9bDw8ZHwoc2QoYixkKXwwKX1lbHNle2Q9cWQoYiwoY1thKzY4Pj4yXXwwKSsoKGYrIC0xfDApKjQ0fDApfDApfDB9YT1jW2E+PjJdfDA7aWYoKGR8MCk8KDE8PGErIC0xfDApKXtsPWQrMSsoLTE8PGEpfDA7aT1lO3JldHVybiBsfDB9ZWxzZXtsPWQrMXwwO2k9ZTtyZXR1cm4gbHwwfX1mPWErNTZ8MDtoPWIrOHwwO2w9Y1toPj4yXXwwO2o9ZWEobD4+PjEzLGNbZj4+Ml18MCl8MDtnPWIrNHwwO2s9Y1tnPj4yXXwwO209az4+PjA+PWo+Pj4wO2Q9bSYxO2lmKG0pe2NbZz4+Ml09ay1qO2o9bC1qfDA7Y1toPj4yXT1qfWVsc2V7Y1toPj4yXT1qO2o9YSs2MHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtqPWNbaD4+Ml18MH1pZihqPj4+MDwxNjc3NzIxNil7aj1jW2c+PjJdfDA7ZG97aj0obWQoY1tiPj4yXXwwKXwwKSYyNTV8ajw8ODtjW2c+PjJdPWo7bT1jW2g+PjJdPDw4O2NbaD4+Ml09bX13aGlsZShtPj4+MDwxNjc3NzIxNil9aD1hKzUyfDA7bT0oY1toPj4yXXwwKSsgLTF8MDtjW2g+PjJdPW07aWYoKG18MCkhPTApe209ZDtpPWU7cmV0dXJuIG18MH1iPWErNDh8MDtnPWNbYj4+Ml18MDtqPWErNjR8MDtrPShjW2o+PjJdfDApK2d8MDtjW2o+PjJdPWs7aWYoaz4+PjA+ODE5Mil7az0oaysxfDApPj4+MTtjW2o+PjJdPWs7bT1hKzYwfDA7YT0oKGNbbT4+Ml18MCkrMXwwKT4+PjE7Y1ttPj4yXT1hO2lmKChhfDApPT0oa3wwKSl7bT1rKzF8MDtjW2o+PjJdPW07aj1tfWVsc2V7aj1rO2s9YX19ZWxzZXtqPWs7az1jW2ErNjA+PjJdfDB9Y1tmPj4yXT0oZWEoMjE0NzQ4MzY0OC8oaj4+PjApfDAsayl8MCk+Pj4xODttPWcqNXwwO209bT4+PjA+MjU5PzY0Om0+Pj4yO2NbYj4+Ml09bTtjW2g+PjJdPW07bT1kO2k9ZTtyZXR1cm4gbXwwfWZ1bmN0aW9uIHNkKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2Y9aTtkPWErNHwwO2c9Y1tkPj4yXXwwO2U9YSs4fDA7aD1jW2U+PjJdfDA7aWYoYj4+PjA+MTkpe2o9aD4+PjE2O2NbZT4+Ml09ajtoPShnPj4+MCkvKGo+Pj4wKXwwO2c9Zy0oZWEoaCxqKXwwKXwwO2NbZD4+Ml09Zztkb3tnPShtZChjW2E+PjJdfDApfDApJjI1NXxnPDw4O2NbZD4+Ml09ZztqPWNbZT4+Ml08PDg7Y1tlPj4yXT1qfXdoaWxlKGo+Pj4wPDE2Nzc3MjE2KTtqPShzZChhLGIrIC0xNnwwKXwwKTw8MTZ8aCY2NTUzNTtpPWY7cmV0dXJuIGp8MH1qPWg+Pj5iO2NbZT4+Ml09ajtiPShnPj4+MCkvKGo+Pj4wKXwwO2c9Zy0oZWEoYixqKXwwKXwwO2NbZD4+Ml09ZztpZighKGo+Pj4wPDE2Nzc3MjE2KSl7aT1mO3JldHVybiBifDB9ZG97Zz0obWQoY1thPj4yXXwwKXwwKSYyNTV8Zzw8ODtjW2Q+PjJdPWc7aj1jW2U+PjJdPDw4O2NbZT4+Ml09an13aGlsZShqPj4+MDwxNjc3NzIxNik7aT1mO3JldHVybiBifDB9ZnVuY3Rpb24gdGQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7Zj1pO2k9aSs5NnwwO2g9Zis0NHwwO2Q9Zjt3PWIrMzZ8MDt1PWIrNDB8MDtpZigoY1t3Pj4yXXwwKSE9KGNbdT4+Ml18MCkpe2k9ZjtyZXR1cm59aj1iKzh8MDtlPWIrMjB8MDtpZigoY1tqPj4yXXwwKSE9MCl7Zz1iKzQ0fDA7bj1oKzR8MDttPWgrOHwwO2w9aCsxMnwwO2s9aCsxNnwwO289aCsyMHwwO3A9aCsyNHwwO3E9aCsyOHwwO3I9aCszMnwwO3M9aCszNnwwO3Q9aCs0MHwwO3Y9MDtkb3tjZChoLChjW2U+PjJdfDApKzF8MCk7eD1jW3U+PjJdfDA7aWYoeD4+PjA8KGNbZz4+Ml18MCk+Pj4wKXtpZigoeHwwKT09MCl7eD0wfWVsc2V7Y1t4Pj4yXT1jW2g+PjJdO2FbeCs0Pj4wXT1hW24+PjBdfDA7Y1t4Kzg+PjJdPWNbbT4+Ml07Y1t4KzEyPj4yXT1jW2w+PjJdO2NbeCsxNj4+Ml09Y1trPj4yXTtjW3grMjA+PjJdPWNbbz4+Ml07Y1t4KzI0Pj4yXT1jW3A+PjJdO2NbeCsyOD4+Ml09Y1txPj4yXTtjW3grMzI+PjJdPWNbcj4+Ml07Y1t4KzM2Pj4yXT1jW3M+PjJdO2NbeCs0MD4+Ml09Y1t0Pj4yXTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDt4PWNbdT4+Ml18MH1jW3U+PjJdPXgrNDR9ZWxzZXt1ZCh3LGgpfXg9Y1ttPj4yXXwwO2lmKCh4fDApIT0wKXt2bihjW3grIC00Pj4yXXwwKX14PWNbbD4+Ml18MDtpZigoeHwwKSE9MCl7dm4oY1t4KyAtND4+Ml18MCl9eD1jW2s+PjJdfDA7aWYoKHh8MCkhPTApe3ZuKGNbeCsgLTQ+PjJdfDApfXY9disxfDB9d2hpbGUodj4+PjA8KGNbaj4+Ml18MCk+Pj4wKX1pZigoY1tlPj4yXXwwKT09MCl7aT1mO3JldHVybn10PWIrMTJ8MDtrPWIrNzJ8MDtzPWIrNzZ8MDtsPWQrNHwwO2o9ZCs4fDA7bz1kKzEyfDA7aD1kKzE2fDA7bT1kKzIwfDA7bj1kKzI0fDA7Zz1kKzI4fDA7cD1kKzMyfDA7cT1kKzM2fDA7cj1kKzQwfDA7Yj1iKzY4fDA7dT0xO2Rve3Y9Y1t0Pj4yXXwwO2NkKGQsMTw8KHU+Pj4wPnY+Pj4wP3Y6dSkpO3Y9Y1trPj4yXXwwO2lmKHY+Pj4wPChjW3M+PjJdfDApPj4+MCl7aWYoKHZ8MCk9PTApe3Y9MH1lbHNle2Nbdj4+Ml09Y1tkPj4yXTthW3YrND4+MF09YVtsPj4wXXwwO2Nbdis4Pj4yXT1jW2o+PjJdO2NbdisxMj4+Ml09Y1tvPj4yXTtjW3YrMTY+PjJdPWNbaD4+Ml07Y1t2KzIwPj4yXT1jW20+PjJdO2NbdisyND4+Ml09Y1tuPj4yXTtjW3YrMjg+PjJdPWNbZz4+Ml07Y1t2KzMyPj4yXT1jW3A+PjJdO2NbdiszNj4+Ml09Y1txPj4yXTtjW3YrNDA+PjJdPWNbcj4+Ml07Y1tqKzA+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7dj1jW2s+PjJdfDB9Y1trPj4yXT12KzQ0fWVsc2V7dWQoYixkKX12PWNbaj4+Ml18MDtpZigodnwwKSE9MCl7dm4oY1t2KyAtND4+Ml18MCl9dj1jW28+PjJdfDA7aWYoKHZ8MCkhPTApe3ZuKGNbdisgLTQ+PjJdfDApfXY9Y1toPj4yXXwwO2lmKCh2fDApIT0wKXt2bihjW3YrIC00Pj4yXXwwKX11PXUrMXwwfXdoaWxlKCEodT4+PjA+KGNbZT4+Ml18MCk+Pj4wKSk7aT1mO3JldHVybn1mdW5jdGlvbiB1ZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2U9aTtmPWIrNHwwO209Y1tmPj4yXXwwO2s9Y1tiPj4yXXwwO2w9aztoPShtLWx8MCkvNDR8MDtqPWgrMXwwO2lmKGo+Pj4wPjk3NjEyODkzKXtUaygpfWc9Yis4fDA7bD0oKGNbZz4+Ml18MCktbHwwKS80NHwwO2lmKGw+Pj4wPDQ4ODA2NDQ2KXtvPWw8PDE7bz1vPj4+MDxqPj4+MD9qOm87aWYoKG98MCk9PTApe3A9MDtsPTB9ZWxzZXtuPTV9fWVsc2V7bz05NzYxMjg5MztuPTV9ZG97aWYoKG58MCk9PTUpe3A9byo0NHwwO3A9KHB8MCk9PTA/MTpwO3doaWxlKDEpe2w9dW4ocCl8MDtpZigobHwwKSE9MCl7bj0xMTticmVha31sPWNbNTY2Nl18MDtjWzU2NjZdPWwrMDtpZigobHwwKT09MCl7YnJlYWt9c2NbbCYzMV0oKX1pZigobnwwKT09MTEpe3A9bzticmVha31wPVhhKDQpfDA7Y1twPj4yXT0yMjY4MDt3YihwfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7bz1sKyhoKjQ0fDApfDA7bj1sKyhwKjQ0fDApfDA7aWYoKG98MCkhPTApe2Nbbz4+Ml09Y1tkPj4yXTthW2wrKGgqNDR8MCkrND4+MF09YVtkKzQ+PjBdfDA7bT1kKzh8MDtjW2wrKGgqNDR8MCkrOD4+Ml09Y1ttPj4yXTtjW2wrKGgqNDR8MCkrMTI+PjJdPWNbZCsxMj4+Ml07Y1tsKyhoKjQ0fDApKzE2Pj4yXT1jW2QrMTY+PjJdO2NbbCsoaCo0NHwwKSsyMD4+Ml09Y1tkKzIwPj4yXTtjW2wrKGgqNDR8MCkrMjQ+PjJdPWNbZCsyND4+Ml07Y1tsKyhoKjQ0fDApKzI4Pj4yXT1jW2QrMjg+PjJdO2NbbCsoaCo0NHwwKSszMj4+Ml09Y1tkKzMyPj4yXTtjW2wrKGgqNDR8MCkrMzY+PjJdPWNbZCszNj4+Ml07Y1tsKyhoKjQ0fDApKzQwPj4yXT1jW2QrNDA+PjJdO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO209Y1tmPj4yXXwwO2s9Y1tiPj4yXXwwfWo9bCsoaio0NHwwKXwwO2lmKChtfDApIT0oa3wwKSl7aD1oKyAtMS0oKChtKyAtNDQrKDAtayl8MCk+Pj4wKS80NHwwKXwwO3doaWxlKDEpe2Q9bTttPW0rIC00NHwwO2NbbysgLTQ0Pj4yXT1jW20+PjJdO2FbbysgLTQwPj4wXT1hW2QrIC00MD4+MF18MDtwPWQrIC0zNnwwO2NbbysgLTM2Pj4yXT1jW3A+PjJdO2NbbysgLTMyPj4yXT1jW2QrIC0zMj4+Ml07Y1tvKyAtMjg+PjJdPWNbZCsgLTI4Pj4yXTtjW28rIC0yND4+Ml09Y1tkKyAtMjQ+PjJdO2NbbysgLTIwPj4yXT1jW2QrIC0yMD4+Ml07Y1tvKyAtMTY+PjJdPWNbZCsgLTE2Pj4yXTtjW28rIC0xMj4+Ml09Y1tkKyAtMTI+PjJdO2NbbysgLTg+PjJdPWNbZCsgLTg+PjJdO2NbbysgLTQ+PjJdPWNbZCsgLTQ+PjJdO2NbcCswPj4yXT0wO2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0wO2lmKChtfDApPT0oa3wwKSl7YnJlYWt9ZWxzZXtvPW8rIC00NHwwfX1tPWNbYj4+Ml18MDtrPWNbZj4+Ml18MDtjW2I+PjJdPWwrKGgqNDR8MCk7Y1tmPj4yXT1qO2NbZz4+Ml09bjtpZigoa3wwKSE9KG18MCkpe2Rve2Y9Y1trKyAtMzY+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1trKyAtMzI+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1trKyAtMjg+PjJdfDA7az1rKyAtNDR8MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9fXdoaWxlKChrfDApIT0obXwwKSl9fWVsc2V7Y1tiPj4yXT1vO2NbZj4+Ml09ajtjW2c+PjJdPW59aWYoKG18MCk9PTApe2k9ZTtyZXR1cm59dm4obSk7aT1lO3JldHVybn1mdW5jdGlvbiB2ZChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gd2QoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1jW2ErMTI+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24geWQoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT0xNDA4KXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIHpkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEFkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zz1lO2Y9Y1tiKzg+PjJdfDA7Yj1jW2IrND4+Ml18MDtqZChnLGYsYik7aD1jW2c+PjJdfDA7YVtkKzM+PjBdPWg+Pj4yNDthW2QrMj4+MF09aD4+PjE2O2FbZCsxPj4wXT1oPj4+ODthW2Q+PjBdPWg7aD1jW2crND4+Ml18MDthW2QrNz4+MF09aD4+PjI0O2FbZCs2Pj4wXT1oPj4+MTY7YVtkKzU+PjBdPWg+Pj44O2FbZCs0Pj4wXT1oO2g9Y1tnKzg+PjJdfDA7YVtkKzExPj4wXT1oPj4+MjQ7YVtkKzEwPj4wXT1oPj4+MTY7YVtkKzk+PjBdPWg+Pj44O2FbZCs4Pj4wXT1oO2g9Y1tnKzEyPj4yXXwwO2FbZCsxMz4+MF09KGgmNjU1MzUpPj4+ODthW2QrMTI+PjBdPWg7YVtkKzE0Pj4wXT1oPj4+MTY7YVtkKzE1Pj4wXT1oPj4+MjQ7Zz1jW2crMTY+PjJdfDA7YVtkKzE2Pj4wXT1nO2FbZCsxNz4+MF09KGcmNjU1MzUpPj4+ODthW2QrMTk+PjBdPWc+Pj4yNDthW2QrMTg+PjBdPWc+Pj4xNjtsZChmKzQ3ODR8MCxiLGQrMjB8MCk7aT1lO3JldHVybn1mdW5jdGlvbiBCZChhKXthPWF8MDt2YXIgYj0wO2I9aTtjW2E+PjJdPTE3MjA7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1hZChhKzQ3ODR8MCk7WGMoYSk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBDZChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7Y1thPj4yXT0xNzIwO2Q9Y1thKzg+PjJdfDA7aWYoKGR8MCk9PTApe3ZuKGEpO2k9YjtyZXR1cm59YWQoZCs0Nzg0fDApO1hjKGQpO3ZuKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gRGQoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEVkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEZkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2E9Y1thKzEyPj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEdkKGEsYil7YT1hfDA7Yj1ifDA7aWYoKGNbYis0Pj4yXXwwKT09MjM3Nil7YT1hKzEyfDB9ZWxzZXthPTB9cmV0dXJuIGF8MH1mdW5jdGlvbiBIZChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBJZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrMzJ8MDtoPWU7Zj1jW2IrOD4+Ml18MDtiPWNbYis0Pj4yXXwwO2pkKGgsZixiKTtnPWNbaD4+Ml18MDthW2QrMz4+MF09Zz4+PjI0O2FbZCsyPj4wXT1nPj4+MTY7YVtkKzE+PjBdPWc+Pj44O2FbZD4+MF09ZztnPWNbaCs0Pj4yXXwwO2FbZCs3Pj4wXT1nPj4+MjQ7YVtkKzY+PjBdPWc+Pj4xNjthW2QrNT4+MF09Zz4+Pjg7YVtkKzQ+PjBdPWc7Zz1jW2grOD4+Ml18MDthW2QrMTE+PjBdPWc+Pj4yNDthW2QrMTA+PjBdPWc+Pj4xNjthW2QrOT4+MF09Zz4+Pjg7YVtkKzg+PjBdPWc7Zz1jW2grMTI+PjJdfDA7YVtkKzEzPj4wXT0oZyY2NTUzNSk+Pj44O2FbZCsxMj4+MF09ZzthW2QrMTQ+PjBdPWc+Pj4xNjthW2QrMTU+PjBdPWc+Pj4yNDtoPWNbaCsxNj4+Ml18MDthW2QrMTY+PjBdPWg7YVtkKzE3Pj4wXT0oaCY2NTUzNSk+Pj44O2FbZCsxOT4+MF09aD4+PjI0O2FbZCsxOD4+MF09aD4+PjE2O2g9a2QoZis0Nzg0fDAsYil8MDtnPUk7YVtkKzIzPj4wXT1oPj4+MjQ7YVtkKzIyPj4wXT1oPj4+MTY7YVtkKzIxPj4wXT1oPj4+ODthW2QrMjA+PjBdPWg7aj1LbihofDAsZ3wwLDU2KXwwO2FbZCsyNz4+MF09ajtqPUtuKGh8MCxnfDAsNDgpfDA7YVtkKzI2Pj4wXT1qO2g9S24oaHwwLGd8MCw0MCl8MDthW2QrMjU+PjBdPWg7YVtkKzI0Pj4wXT1nO2Q9Zis1MTEyfDA7aWYoKGFbZD4+MF18MCk9PTApe2k9ZTtyZXR1cm59aj0oKG1kKGNbYj4+Ml18MCl8MCkmMjU1KTw8MjQ7aj0oKG1kKGNbYj4+Ml18MCl8MCkmMjU1KTw8MTZ8ajtqPWp8KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDg7Y1tiKzQ+PjJdPWp8KG1kKGNbYj4+Ml18MCl8MCkmMjU1O2FbZD4+MF09MDtpPWU7cmV0dXJufWZ1bmN0aW9uIEpkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2NbYT4+Ml09MjY2NDthPWNbYSs4Pj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufV9jKGErNTA5NnwwKTtfYyhhKzUwNjR8MCk7WmMoYSs0OTQ4fDApOyRjKGErNDc4NHwwKTtYYyhhKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEtkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtjW2E+PjJdPTI2NjQ7ZD1jW2ErOD4+Ml18MDtpZigoZHwwKT09MCl7dm4oYSk7aT1iO3JldHVybn1fYyhkKzUwOTZ8MCk7X2MoZCs1MDY0fDApO1pjKGQrNDk0OHwwKTskYyhkKzQ3ODR8MCk7WGMoZCk7dm4oZCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBMZChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gTWQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gTmQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1jW2ErMTI+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gT2QoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT0zMzIwKXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIFBkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFFkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zz1lO2Y9Y1tiKzg+PjJdfDA7Yj1jW2IrND4+Ml18MDtqZChnLGYsYik7aD1jW2c+PjJdfDA7YVtkKzM+PjBdPWg+Pj4yNDthW2QrMj4+MF09aD4+PjE2O2FbZCsxPj4wXT1oPj4+ODthW2Q+PjBdPWg7aD1jW2crND4+Ml18MDthW2QrNz4+MF09aD4+PjI0O2FbZCs2Pj4wXT1oPj4+MTY7YVtkKzU+PjBdPWg+Pj44O2FbZCs0Pj4wXT1oO2g9Y1tnKzg+PjJdfDA7YVtkKzExPj4wXT1oPj4+MjQ7YVtkKzEwPj4wXT1oPj4+MTY7YVtkKzk+PjBdPWg+Pj44O2FbZCs4Pj4wXT1oO2g9Y1tnKzEyPj4yXXwwO2FbZCsxMz4+MF09KGgmNjU1MzUpPj4+ODthW2QrMTI+PjBdPWg7YVtkKzE0Pj4wXT1oPj4+MTY7YVtkKzE1Pj4wXT1oPj4+MjQ7Zz1jW2crMTY+PjJdfDA7YVtkKzE2Pj4wXT1nO2FbZCsxNz4+MF09KGcmNjU1MzUpPj4+ODthW2QrMTk+PjBdPWc+Pj4yNDthW2QrMTg+PjBdPWc+Pj4xNjtkPWYrNDc4NHwwO2lmKChhW2Q+PjBdfDApPT0wKXtpPWU7cmV0dXJufWg9KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDI0O2g9KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDE2fGg7aD1ofCgobWQoY1tiPj4yXXwwKXwwKSYyNTUpPDw4O2NbYis0Pj4yXT1ofChtZChjW2I+PjJdfDApfDApJjI1NTthW2Q+PjBdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBSZChhKXthPWF8MDt2YXIgYj0wO2I9aTtjW2E+PjJdPTM2MDg7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1YYyhhKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFNkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtjW2E+PjJdPTM2MDg7ZD1jW2ErOD4+Ml18MDtpZigoZHwwKT09MCl7dm4oYSk7aT1iO3JldHVybn1YYyhkKTt2bihkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFRkKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBVZChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBWZChhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1sY1tjWyhjW2E+PjJdfDApKzg+PjJdJjI1NV0oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBXZChhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTQyMTYpe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gWGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gWWQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7Y1tiPj4yXT00NTAwO2NbYis2ND4+Ml09NDU0MDtjW2IrOD4+Ml09NDUyMDtlPWIrMTJ8MDtjW2U+PjJdPTQ2ODg7aWYoISgoYVtiKzQ0Pj4wXSYxKT09MCk/KGY9Y1tiKzUyPj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1jW2U+PjJdPTEwNjY0O2U9Y1tiKzE2Pj4yXXwwO2c9ZSs0fDA7Zj1jW2c+PjJdfDA7Y1tnPj4yXT1mKyAtMTtpZigoZnwwKSE9MCl7Zz1iKzY0fDA7cmcoZyk7aT1kO3JldHVybn1sY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSk7Zz1iKzY0fDA7cmcoZyk7aT1kO3JldHVybn1mdW5jdGlvbiBaZChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9aTtnPWIrIC04fDA7Y1tnPj4yXT00NTAwO2I9Zys2NHwwO2NbYj4+Ml09NDU0MDtjW2crOD4+Ml09NDUyMDtmPWcrMTJ8MDtjW2Y+PjJdPTQ2ODg7aWYoISgoYVtnKzQ0Pj4wXSYxKT09MCk/KGU9Y1tnKzUyPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1jW2Y+PjJdPTEwNjY0O2U9Y1tnKzE2Pj4yXXwwO2Y9ZSs0fDA7Zz1jW2Y+PjJdfDA7Y1tmPj4yXT1nKyAtMTtpZigoZ3wwKSE9MCl7cmcoYik7aT1kO3JldHVybn1sY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSk7cmcoYik7aT1kO3JldHVybn1mdW5jdGlvbiBfZChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtlPWk7Zz1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7Y1tiK2c+PjJdPTQ1MDA7ZD1iKyhnKzY0KXwwO2NbZD4+Ml09NDU0MDtjW2IrKGcrOCk+PjJdPTQ1MjA7Zj1iKyhnKzEyKXwwO2NbZj4+Ml09NDY4ODtpZighKChhW2IrKGcrNDQpPj4wXSYxKT09MCk/KGg9Y1tiKyhnKzUyKT4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9Y1tmPj4yXT0xMDY2NDtiPWNbYisoZysxNik+PjJdfDA7Zz1iKzR8MDtoPWNbZz4+Ml18MDtjW2c+PjJdPWgrIC0xO2lmKChofDApIT0wKXtyZyhkKTtpPWU7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtyZyhkKTtpPWU7cmV0dXJufWZ1bmN0aW9uICRkKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1pO2NbYj4+Ml09NDUwMDtjW2IrNjQ+PjJdPTQ1NDA7Y1tiKzg+PjJdPTQ1MjA7ZT1iKzEyfDA7Y1tlPj4yXT00Njg4O2lmKCEoKGFbYis0ND4+MF0mMSk9PTApPyhmPWNbYis1Mj4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9Y1tlPj4yXT0xMDY2NDtlPWNbYisxNj4+Ml18MDtnPWUrNHwwO2Y9Y1tnPj4yXXwwO2NbZz4+Ml09ZisgLTE7aWYoKGZ8MCk9PTApe2xjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKX1yZyhiKzY0fDApO2lmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gYWUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZD1pO2Y9YisgLTh8MDtjW2Y+PjJdPTQ1MDA7Yj1mKzY0fDA7Y1tiPj4yXT00NTQwO2NbZis4Pj4yXT00NTIwO2c9ZisxMnwwO2NbZz4+Ml09NDY4ODtpZighKChhW2YrNDQ+PjBdJjEpPT0wKT8oZT1jW2YrNTI+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWNbZz4+Ml09MTA2NjQ7ZT1jW2YrMTY+PjJdfDA7aD1lKzR8MDtnPWNbaD4+Ml18MDtjW2g+PjJdPWcrIC0xO2lmKChnfDApIT0wKXtyZyhiKTt2bihmKTtpPWQ7cmV0dXJufWxjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKTtyZyhiKTt2bihmKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGJlKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtkPWk7aD1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7Zj1iK2h8MDtjW2Y+PjJdPTQ1MDA7ZT1iKyhoKzY0KXwwO2NbZT4+Ml09NDU0MDtjW2IrKGgrOCk+PjJdPTQ1MjA7Zz1iKyhoKzEyKXwwO2NbZz4+Ml09NDY4ODtpZighKChhW2IrKGgrNDQpPj4wXSYxKT09MCk/KGo9Y1tiKyhoKzUyKT4+Ml18MCwoanwwKSE9MCk6MCl7dm4oail9Y1tnPj4yXT0xMDY2NDtiPWNbYisoaCsxNik+PjJdfDA7aD1iKzR8MDtqPWNbaD4+Ml18MDtjW2g+PjJdPWorIC0xO2lmKChqfDApPT0wKXtsY1tjWyhjW2I+PjJdfDApKzg+PjJdJjI1NV0oYil9cmcoZSk7aWYoKGZ8MCk9PTApe2k9ZDtyZXR1cm59dm4oZik7aT1kO3JldHVybn1mdW5jdGlvbiBjZShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2NbYj4+Ml09NDY4ODtpZighKChhW2IrMzI+PjBdJjEpPT0wKT8oZT1jW2IrNDA+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWNbYj4+Ml09MTA2NjQ7Yj1jW2IrND4+Ml18MDtmPWIrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe2k9ZDtyZXR1cm59bGNbY1soY1tiPj4yXXwwKSs4Pj4yXSYyNTVdKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZGUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7Y1tiPj4yXT00Njg4O2lmKCEoKGFbYiszMj4+MF0mMSk9PTApPyhlPWNbYis0MD4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9Y1tiPj4yXT0xMDY2NDtlPWNbYis0Pj4yXXwwO2c9ZSs0fDA7Zj1jW2c+PjJdfDA7Y1tnPj4yXT1mKyAtMTtpZigoZnwwKT09MCl7bGNbY1soY1tlPj4yXXwwKSs4Pj4yXSYyNTVdKGUpfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZWUoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtsPWk7bz1kKzQ0fDA7bT1jW28+PjJdfDA7az1kKzI0fDA7aj1jW2s+PjJdfDA7aWYobT4+PjA8aj4+PjApe2Nbbz4+Ml09ajttPWp9bz1oJjI0O2Rve2lmKChvfDApPT0wKXtvPWI7Y1tvPj4yXT0wO2Nbbys0Pj4yXT0wO289Yis4fDA7Y1tvPj4yXT0tMTtjW28rND4+Ml09LTE7aT1sO3JldHVybn1lbHNlIGlmKChvfDApIT0yNCl7aWYoKGd8MCk9PTIpe249MTE7YnJlYWt9ZWxzZSBpZigoZ3wwKT09MCl7Zz0wO289MDticmVha31lbHNlIGlmKChnfDApIT0xKXtuPTE1O2JyZWFrfWlmKChoJjh8MCk9PTApe289ai0oY1tkKzIwPj4yXXwwKXwwO2c9bztvPSgob3wwKTwwKTw8MzE+PjMxO2JyZWFrfWVsc2V7bz0oY1tkKzEyPj4yXXwwKS0oY1tkKzg+PjJdfDApfDA7Zz1vO289KChvfDApPDApPDwzMT4+MzE7YnJlYWt9fWVsc2V7aWYoKGd8MCk9PTIpe249MTE7YnJlYWt9ZWxzZSBpZigoZ3wwKT09MCl7Zz0wO289MDticmVha31lbHNlIGlmKChnfDApIT0xKXtuPTE1O2JyZWFrfW89YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufX13aGlsZSgwKTtpZigobnwwKT09MTUpe289YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufWlmKChufDApPT0xMSl7bj1kKzMyfDA7aWYoKGFbbj4+MF0mMSk9PTApe249bisxfDB9ZWxzZXtuPWNbZCs0MD4+Ml18MH1vPW0tbnwwO2c9bztvPSgob3wwKTwwKTw8MzE+PjMxfWY9SW4oZ3wwLG98MCxlfDAsZnwwKXwwO2U9STtpZigoZXwwKT49MCl7bj1kKzMyfDA7aWYoKGFbbj4+MF0mMSk9PTApe249bisxfDB9ZWxzZXtuPWNbZCs0MD4+Ml18MH1vPW0tbnwwO2c9KChvfDApPDApPDwzMT4+MzE7aWYoISgoZ3wwKTwoZXwwKXwoZ3wwKT09KGV8MCkmbz4+PjA8Zj4+PjApKXtuPWgmODtpZighKChmfDApPT0wJihlfDApPT0wKSl7aWYoKG58MCkhPTA/KGNbZCsxMj4+Ml18MCk9PTA6MCl7bz1iO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtvPWIrOHwwO2Nbbz4+Ml09LTE7Y1tvKzQ+PjJdPS0xO2k9bDtyZXR1cm59aWYoKGgmMTZ8MCkhPTAmKGp8MCk9PTApe289YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufX1pZigobnwwKSE9MCl7Y1tkKzEyPj4yXT0oY1tkKzg+PjJdfDApK2Y7Y1tkKzE2Pj4yXT1tfWlmKChoJjE2fDApIT0wKXtjW2s+PjJdPShjW2QrMjA+PjJdfDApK2Z9bz1iO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtvPWIrOHwwO2Nbbz4+Ml09ZjtjW28rND4+Ml09ZTtpPWw7cmV0dXJufX1vPWI7Y1tvPj4yXT0wO2Nbbys0Pj4yXT0wO289Yis4fDA7Y1tvPj4yXT0tMTtjW28rND4+Ml09LTE7aT1sO3JldHVybn1mdW5jdGlvbiBmZShhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wO2Y9aTtkPWQrOHwwO3djW2NbKGNbYj4+Ml18MCkrMTY+PjJdJjYzXShhLGIsY1tkPj4yXXwwLGNbZCs0Pj4yXXwwLDAsZSk7aT1mO3JldHVybn1mdW5jdGlvbiBnZShhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wO2I9aTtmPWErNDR8MDtnPWNbZj4+Ml18MDtlPWNbYSsyND4+Ml18MDtpZihnPj4+MDxlPj4+MCl7Y1tmPj4yXT1lfWVsc2V7ZT1nfWlmKChjW2ErNDg+PjJdJjh8MCk9PTApe2c9LTE7aT1iO3JldHVybiBnfDB9Zj1hKzE2fDA7Zz1jW2Y+PjJdfDA7YT1jW2ErMTI+PjJdfDA7aWYoZz4+PjA8ZT4+PjApe2NbZj4+Ml09ZX1lbHNle2U9Z31pZighKGE+Pj4wPGU+Pj4wKSl7Zz0tMTtpPWI7cmV0dXJuIGd8MH1nPWRbYT4+MF18MDtpPWI7cmV0dXJuIGd8MH1mdW5jdGlvbiBoZShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZT1pO2c9Yis0NHwwO2Y9Y1tnPj4yXXwwO2o9Y1tiKzI0Pj4yXXwwO2lmKGY+Pj4wPGo+Pj4wKXtjW2c+PjJdPWp9ZWxzZXtqPWZ9Zj1iKzh8MDtnPWNbZj4+Ml18MDtoPWIrMTJ8MDtsPWNbaD4+Ml18MDtpZighKGc+Pj4wPGw+Pj4wKSl7bD0tMTtpPWU7cmV0dXJuIGx8MH1pZigoZHwwKT09LTEpe2NbZj4+Ml09ZztjW2g+PjJdPWwrIC0xO2NbYisxNj4+Ml09ajtsPTA7aT1lO3JldHVybiBsfDB9aWYoKGNbYis0OD4+Ml0mMTZ8MCk9PTApe2s9ZCYyNTU7bD1sKyAtMXwwO2lmKCEoazw8MjQ+PjI0PT0oYVtsPj4wXXwwKSkpe2w9LTE7aT1lO3JldHVybiBsfDB9fWVsc2V7az1kJjI1NTtsPWwrIC0xfDB9Y1tmPj4yXT1nO2NbaD4+Ml09bDtjW2IrMTY+PjJdPWo7YVtsPj4wXT1rO2w9ZDtpPWU7cmV0dXJuIGx8MH1mdW5jdGlvbiBpZShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7aj1pO2lmKChkfDApPT0tMSl7dT0wO2k9ajtyZXR1cm4gdXwwfWc9YisxMnwwO2U9Yis4fDA7Zj0oY1tnPj4yXXwwKS0oY1tlPj4yXXwwKXwwO2g9YisyNHwwO249Y1toPj4yXXwwO2s9YisyOHwwO209Y1trPj4yXXwwO2lmKChufDApPT0obXwwKSl7bD1iKzQ4fDA7aWYoKGNbbD4+Ml0mMTZ8MCk9PTApe3U9LTE7aT1qO3JldHVybiB1fDB9bT1iKzIwfDA7cD1jW20+PjJdfDA7bj1uLXB8MDtvPWIrNDR8MDtwPShjW28+PjJdfDApLXB8MDtxPWIrMzJ8MDtyPWFbcT4+MF18MDtzPShyJjEpIT0wO2lmKHMpe3Q9KGNbcT4+Ml0mLTIpKyAtMXwwO3I9Y1tiKzM2Pj4yXXwwfWVsc2V7dD0xMDtyPShyJjI1NSk+Pj4xfWlmKChyfDApPT0odHwwKSl7bGcocSx0LDEsdCx0LDApO2lmKChhW3E+PjBdJjEpPT0wKXtzPTEyfWVsc2V7cz0xM319ZWxzZXtpZihzKXtzPTEzfWVsc2V7cz0xMn19aWYoKHN8MCk9PTEyKXthW3E+PjBdPShyPDwxKSsyO3U9cSsxfDA7dD1yKzF8MH1lbHNlIGlmKChzfDApPT0xMyl7dT1jW2IrNDA+PjJdfDA7dD1yKzF8MDtjW2IrMzY+PjJdPXR9YVt1K3I+PjBdPTA7YVt1K3Q+PjBdPTA7dD1hW3E+PjBdfDA7aWYoKHQmMSk9PTApe3I9MTB9ZWxzZXtyPWNbcT4+Ml18MDt0PXImMjU1O3I9KHImLTIpKyAtMXwwfXM9KHQmMSk9PTA7aWYocyl7dD0odCYyNTUpPj4+MX1lbHNle3Q9Y1tiKzM2Pj4yXXwwfWRve2lmKCEodD4+PjA8cj4+PjApKXtpZihzKXthW3ErcisxPj4wXT0wO2FbcT4+MF09cjw8MTticmVha31lbHNle2FbKGNbYis0MD4+Ml18MCkrcj4+MF09MDtjW2IrMzY+PjJdPXI7YnJlYWt9fWVsc2V7aGcocSxyLXR8MCl9fXdoaWxlKDApO3I9YVtxPj4wXXwwO2lmKChyJjEpPT0wKXtxPXErMXwwO3I9KHImMjU1KT4+PjF9ZWxzZXtxPWNbYis0MD4+Ml18MDtyPWNbYiszNj4+Ml18MH10PXErcnwwO2NbbT4+Ml09cTtjW2s+PjJdPXQ7bj1xK258MDtjW2g+PjJdPW47dT1xK3B8MDtjW28+PjJdPXU7az10O289dX1lbHNle2w9Yis0OHwwO2s9bTtvPWNbYis0ND4+Ml18MH1tPW4rMXwwO289bT4+PjA8bz4+PjA/bzptO2NbYis0ND4+Ml09bztpZigoY1tsPj4yXSY4fDApIT0wKXtsPWIrMzJ8MDtpZigoYVtsPj4wXSYxKT09MCl7bD1sKzF8MH1lbHNle2w9Y1tiKzQwPj4yXXwwfWNbZT4+Ml09bDtjW2c+PjJdPWwrZjtjW2IrMTY+PjJdPW99aWYoKG58MCk9PShrfDApKXt1PXhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGQmMjU1KXwwO2k9ajtyZXR1cm4gdXwwfWVsc2V7Y1toPj4yXT1tO2Fbbj4+MF09ZDt1PWQmMjU1O2k9ajtyZXR1cm4gdXwwfXJldHVybiAwfWZ1bmN0aW9uIGplKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBrZShhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBsZShhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBtZShhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTUwNDgpe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gbmUoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gb2UoYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxsPTAsbT0wLG49MCxvPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsSj0wLjAsSz0wLjAsTD0wLjAsTT0wLjAsTj0wLjAsTz0wLjA7ZT1pO2k9aSsyNTZ8MDtmPWUrODB8MDtvPWU7bj1lKzEwNHwwO209ZSsyMjR8MDtqPWUrMjA4fDA7Zz1lKzEyOHwwO3g9ZSsyNDB8MDt2PWUrMTEyfDA7cz1lKzU2fDA7ej1jW2I+PjJdfDA7eT16KzEzfDA7aWYoKGFbeT4+MF18MCk9PTApe0g9eis0fDA7RT16Kzh8MDtHPWNbRT4+Ml18MDtGPShjW0g+PjJdfDApLUd8MDtGPShGfDApPDQ/Rjo0O01uKHh8MCwoY1t6Pj4yXXwwKStHfDAsRnwwKXwwO0c9KGNbRT4+Ml18MCkrRnwwO2NbRT4+Ml09RztjW3orMTY+PjJdPUY7aWYoKEd8MCk+PShjW0g+PjJdfDApKXthW3k+PjBdPTF9fWVsc2V7YVt6KzEyPj4wXT0xfWFbdj4+MF09ODtCPXYrMXwwO2FbQj4+MF09YVt4Pj4wXXwwO2FbdisyPj4wXT1hW3grMT4+MF18MDthW3YrMz4+MF09YVt4KzI+PjBdfDA7eT12KzR8MDthW3k+PjBdPWFbeCszPj4wXXwwO2FbdisoeCsoNC14KSkrMT4+MF09MDt6PWFbdj4+MF18MDt4PSh6JjEpPT0wO2lmKHgpe3k9KHomMjU1KT4+PjF9ZWxzZXtCPWNbdis4Pj4yXXwwO3k9Y1t5Pj4yXXwwfXo9eT4+PjA+NDtBPXo/NDp5O2E6ZG97aWYoKEF8MCkhPTApe0M9NTIzMjt3aGlsZSgxKXtEPWFbQj4+MF18MDtFPWFbQz4+MF18MDtpZighKEQ8PDI0Pj4yND09RTw8MjQ+PjI0KSl7YnJlYWt9QT1BKyAtMXwwO2lmKChBfDApPT0wKXtsPTEyO2JyZWFrIGF9ZWxzZXtCPUIrMXwwO0M9QysxfDB9fWlmKCEoRDw8MjQ+PjI0PT1FPDwyND4+MjQpKXt5PShEJjI1NSktKEUmMjU1KXwwfWVsc2V7bD0xMn19ZWxzZXtsPTEyfX13aGlsZSgwKTtpZigobHwwKT09MTIpe3k9eT4+PjA8ND8tMTp6JjF9eT0oeXwwKT09MDtpZigheD8odz1jW3YrOD4+Ml18MCwod3wwKSE9MCk6MCl7dm4odyl9aWYoIXkpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11bigzNil8MDtpZigoYnwwKSE9MCl7bD0yMzticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjMpe2NbYis0Pj4yXT0yMztjW2I+PjJdPTIzO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj03MDU2fDA7ZT1mKzI0fDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTcwODg7d2IoZ3wwLDUyNzIsODYpfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfXY9U2MoODM1Miw1Mjg4KXwwO3c9Y1t2KygoY1soY1t2Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7eD13KzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9ej0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7eT1jW3crOD4+Ml18MDtpZigoY1t3KzEyPj4yXXwwKS15Pj4yPj4+MD56Pj4+MD8odT1jW3krKHo8PDIpPj4yXXwwLCh1fDApIT0wKTowKXt1PXhjW2NbKGNbdT4+Ml18MCkrMjg+PjJdJjYzXSh1LDEwKXwwO0g9Y1t4Pj4yXXwwO2NbeD4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbdz4+Ml18MCkrOD4+Ml0mMjU1XSh3KX1saCh2LHUpO1lnKHYpO3U9Y1tiPj4yXXwwO2lmKChjW3UrND4+Ml18MCk+MCl7Y1t1Kzg+PjJdPTB9ZWxzZXthW3UrMTI+PjBdPTF9dj1jW2I+PjJdfDA7dT1iKzIwfDA7dz12KzEzfDA7aWYoKGFbdz4+MF18MCk9PTApe0g9dis0fDA7RT12Kzh8MDtHPWNbRT4+Ml18MDtGPShjW0g+PjJdfDApLUd8MDtGPShGfDApPDIyNz9GOjIyNztNbih1fDAsKGNbdj4+Ml18MCkrR3wwLEZ8MCl8MDtHPShjW0U+PjJdfDApK0Z8MDtjW0U+PjJdPUc7Y1t2KzE2Pj4yXT1GO2lmKChHfDApPj0oY1tIPj4yXXwwKSl7YVt3Pj4wXT0xfX1lbHNle2FbdisxMj4+MF09MX1DPWIrMTk5fDA7YVtrPj4wXT1hW0M+PjBdO2FbaysxPj4wXT1hW0MrMT4+MF07YVtrKzI+PjBdPWFbQysyPj4wXTthW2srMz4+MF09YVtDKzM+PjBdO2Fbays0Pj4wXT1hW0MrND4+MF07YVtrKzU+PjBdPWFbQys1Pj4wXTthW2srNj4+MF09YVtDKzY+PjBdO2Fbays3Pj4wXT1hW0MrNz4+MF07Tj0raFtrPj4zXTtFPWIrMjA3fDA7YVtrPj4wXT1hW0U+PjBdO2FbaysxPj4wXT1hW0UrMT4+MF07YVtrKzI+PjBdPWFbRSsyPj4wXTthW2srMz4+MF09YVtFKzM+PjBdO2Fbays0Pj4wXT1hW0UrND4+MF07YVtrKzU+PjBdPWFbRSs1Pj4wXTthW2srNj4+MF09YVtFKzY+PjBdO2Fbays3Pj4wXT1hW0UrNz4+MF07Tz0raFtrPj4zXTtHPWIrMjE1fDA7YVtrPj4wXT1hW0c+PjBdO2FbaysxPj4wXT1hW0crMT4+MF07YVtrKzI+PjBdPWFbRysyPj4wXTthW2srMz4+MF09YVtHKzM+PjBdO2Fbays0Pj4wXT1hW0crND4+MF07YVtrKzU+PjBdPWFbRys1Pj4wXTthW2srNj4+MF09YVtHKzY+PjBdO2Fbays3Pj4wXT1hW0crNz4+MF07TD0raFtrPj4zXTtEPWIrMjIzfDA7YVtrPj4wXT1hW0Q+PjBdO2FbaysxPj4wXT1hW0QrMT4+MF07YVtrKzI+PjBdPWFbRCsyPj4wXTthW2srMz4+MF09YVtEKzM+PjBdO2Fbays0Pj4wXT1hW0QrND4+MF07YVtrKzU+PjBdPWFbRCs1Pj4wXTthW2srNj4+MF09YVtEKzY+PjBdO2Fbays3Pj4wXT1hW0QrNz4+MF07TT0raFtrPj4zXTtGPWIrMjMxfDA7YVtrPj4wXT1hW0Y+PjBdO2FbaysxPj4wXT1hW0YrMT4+MF07YVtrKzI+PjBdPWFbRisyPj4wXTthW2srMz4+MF09YVtGKzM+PjBdO2Fbays0Pj4wXT1hW0YrND4+MF07YVtrKzU+PjBdPWFbRis1Pj4wXTthW2srNj4+MF09YVtGKzY+PjBdO2Fbays3Pj4wXT1hW0YrNz4+MF07Sj0raFtrPj4zXTtIPWIrMjM5fDA7YVtrPj4wXT1hW0g+PjBdO2FbaysxPj4wXT1hW0grMT4+MF07YVtrKzI+PjBdPWFbSCsyPj4wXTthW2srMz4+MF09YVtIKzM+PjBdO2Fbays0Pj4wXT1hW0grND4+MF07YVtrKzU+PjBdPWFbSCs1Pj4wXTthW2srNj4+MF09YVtIKzY+PjBdO2Fbays3Pj4wXT1hW0grNz4+MF07Sz0raFtrPj4zXTtoW2s+PjNdPU87YVtDPj4wXT1hW2s+PjBdO2FbQysxPj4wXT1hW2srMT4+MF07YVtDKzI+PjBdPWFbaysyPj4wXTthW0MrMz4+MF09YVtrKzM+PjBdO2FbQys0Pj4wXT1hW2srND4+MF07YVtDKzU+PjBdPWFbays1Pj4wXTthW0MrNj4+MF09YVtrKzY+PjBdO2FbQys3Pj4wXT1hW2srNz4+MF07aFtrPj4zXT1OO2FbRD4+MF09YVtrPj4wXTthW0QrMT4+MF09YVtrKzE+PjBdO2FbRCsyPj4wXT1hW2srMj4+MF07YVtEKzM+PjBdPWFbayszPj4wXTthW0QrND4+MF09YVtrKzQ+PjBdO2FbRCs1Pj4wXT1hW2srNT4+MF07YVtEKzY+PjBdPWFbays2Pj4wXTthW0QrNz4+MF09YVtrKzc+PjBdO2hbaz4+M109TTthW0U+PjBdPWFbaz4+MF07YVtFKzE+PjBdPWFbaysxPj4wXTthW0UrMj4+MF09YVtrKzI+PjBdO2FbRSszPj4wXT1hW2srMz4+MF07YVtFKzQ+PjBdPWFbays0Pj4wXTthW0UrNT4+MF09YVtrKzU+PjBdO2FbRSs2Pj4wXT1hW2srNj4+MF07YVtFKzc+PjBdPWFbays3Pj4wXTtoW2s+PjNdPUw7YVtGPj4wXT1hW2s+PjBdO2FbRisxPj4wXT1hW2srMT4+MF07YVtGKzI+PjBdPWFbaysyPj4wXTthW0YrMz4+MF09YVtrKzM+PjBdO2FbRis0Pj4wXT1hW2srND4+MF07YVtGKzU+PjBdPWFbays1Pj4wXTthW0YrNj4+MF09YVtrKzY+PjBdO2FbRis3Pj4wXT1hW2srNz4+MF07aFtrPj4zXT1LO2FbRz4+MF09YVtrPj4wXTthW0crMT4+MF09YVtrKzE+PjBdO2FbRysyPj4wXT1hW2srMj4+MF07YVtHKzM+PjBdPWFbayszPj4wXTthW0crND4+MF09YVtrKzQ+PjBdO2FbRys1Pj4wXT1hW2srNT4+MF07YVtHKzY+PjBdPWFbays2Pj4wXTthW0crNz4+MF09YVtrKzc+PjBdO2hbaz4+M109SjthW0g+PjBdPWFbaz4+MF07YVtIKzE+PjBdPWFbaysxPj4wXTthW0grMj4+MF09YVtrKzI+PjBdO2FbSCszPj4wXT1hW2srMz4+MF07YVtIKzQ+PjBdPWFbays0Pj4wXTthW0grNT4+MF09YVtrKzU+PjBdO2FbSCs2Pj4wXT1hW2srNj4+MF07YVtIKzc+PjBdPWFbays3Pj4wXTtpZigoYVs2MzY4XXwwKT09MD8oUWEoNjM2OCl8MCkhPTA6MCl7Y1sxNTg4XT0wO2NbNjM1Nj4+Ml09MDtjWzYzNjA+PjJdPTA7Y2MoMjA5LDYzNTIscHwwKXwwOyRhKDYzNjgpfWlmKChhWzY0MDBdfDApPT0wPyhRYSg2NDAwKXwwKSE9MDowKXtjYygyMTAsNjM3NixwfDApfDA7JGEoNjQwMCl9dz1jWzE1ODhdfDA7dj1jWzYzNTY+PjJdfDA7ZG97aWYoKHd8MCk9PSh2fDApKXt2PSRiKDYzNzYpfDA7aWYoKHZ8MCkhPTApe2I9WGEoMTYpfDA7ZG97aWYoKGFbMTAxMjBdfDApPT0wKXtpZigoUWEoMTAxMjApfDApPT0wKXticmVha31jWzI1MjhdPTEwMzg0OyRhKDEwMTIwKX19d2hpbGUoMCk7WWYoYix2LDEwMTEyLDEwNDcyKTt3YihifDAsMTAxODQsMTA5KX14PWNbMTU4OF18MDtkb3tpZigoeHwwKT09KGNbNjM1Nj4+Ml18MCkpe3Y9ZisxNnwwO2Nbdj4+Ml09ZjtjW2Y+PjJdPTY0MTY7dz1jWzYzNjA+PjJdfDA7ZG97aWYoeD4+PjA8dz4+PjApe2lmKCh4fDApPT0wKXt3PTB9ZWxzZXtjW3grMTY+PjJdPXg7dz1jW3Y+PjJdfDA7bWNbY1soY1t3Pj4yXXwwKSsxMj4+Ml0mMTI3XSh3LHgpO3c9Y1s2MzU2Pj4yXXwwfWNbNjM1Nj4+Ml09dysyNH1lbHNle3c9KHcteHwwKS8yNHwwO2lmKHc+Pj4wPDg5NDc4NDg1KXt3PXc8PDE7dz0od3wwKT09MD8xOnd9ZWxzZXt3PTE3ODk1Njk3MH14PXcqMjR8MDt4PSh4fDApPT0wPzE6eDt3aGlsZSgxKXt5PXVuKHgpfDA7aWYoKHl8MCkhPTApe2JyZWFrfXk9Y1s1NjY2XXwwO2NbNTY2Nl09eSswO2lmKCh5fDApPT0wKXtsPTY1O2JyZWFrfXNjW3kmMzFdKCl9aWYoKGx8MCk9PTY1KXtIPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX13PXkrKHcqMjR8MCl8MDtkb3tpZigoeXwwKSE9MCl7eD1jW3Y+PjJdfDA7aWYoKHh8MCk9PTApe2NbeSsxNj4+Ml09MDticmVha31pZigoeHwwKT09KGZ8MCkpe2NbeSsxNj4+Ml09eTttY1tjWyhjW2Y+PjJdfDApKzEyPj4yXSYxMjddKGYseSk7YnJlYWt9ZWxzZXtjW3krMTY+PjJdPXg7Y1t2Pj4yXT0wO2JyZWFrfX19d2hpbGUoMCk7eD15KzI0fDA7ej1jWzE1ODhdfDA7QT1jWzYzNTY+PjJdfDA7ZG97aWYoKEF8MCk9PSh6fDApKXtjWzE1ODhdPXk7Y1s2MzU2Pj4yXT14O2NbNjM2MD4+Ml09d31lbHNle2Rve0M9eTt5PXkrIC0yNHwwO0I9QSsgLTh8MDtBPUErIC0yNHwwO0Q9Y1tCPj4yXXwwO2Rve2lmKChEfDApIT0wKXtpZigoRHwwKT09KEF8MCkpe2NbQysgLTg+PjJdPXk7SD1jW0I+PjJdfDA7bWNbY1soY1tIPj4yXXwwKSsxMj4+Ml0mMTI3XShILHkpO2JyZWFrfWVsc2V7Y1tDKyAtOD4+Ml09RDtjW0I+PjJdPTA7YnJlYWt9fWVsc2V7Y1tDKyAtOD4+Ml09MH19d2hpbGUoMCl9d2hpbGUoKEF8MCkhPSh6fDApKTt6PWNbMTU4OF18MDtBPWNbNjM1Nj4+Ml18MDtjWzE1ODhdPXk7Y1s2MzU2Pj4yXT14O2NbNjM2MD4+Ml09dztpZigoQXwwKT09KHp8MCkpe2JyZWFrfWRve3c9Y1tBKyAtOD4+Ml18MDtBPUErIC0yNHwwO2Rve2lmKCh3fDApPT0oQXwwKSl7bGNbY1soY1t3Pj4yXXwwKSsxNj4+Ml0mMjU1XSh3KX1lbHNle2lmKCh3fDApPT0wKXticmVha31sY1tjWyhjW3c+PjJdfDApKzIwPj4yXSYyNTVdKHcpfX13aGlsZSgwKX13aGlsZSgoQXwwKSE9KHp8MCkpfX13aGlsZSgwKTtpZigoenwwKT09MCl7YnJlYWt9dm4oeil9fXdoaWxlKDApO3Y9Y1t2Pj4yXXwwO2lmKCh2fDApPT0oZnwwKSl7bGNbY1soY1tmPj4yXXwwKSsxNj4+Ml0mMjU1XShmKTticmVha31pZigodnwwKT09MCl7YnJlYWt9bGNbY1soY1t2Pj4yXXwwKSsyMD4+Ml0mMjU1XSh2KX19d2hpbGUoMCk7aWYoKENiKDYzNzYpfDApPT0wKXt0PWNbMTU4OF18MDtyPWNbNjM1Nj4+Ml18MDticmVha31XYSgxMDQ5NiwxMDUwNCw0NiwxMDU2MCl9ZWxzZXt0PXc7cj12fX13aGlsZSgwKTtiOmRve2lmKCh0fDApIT0ocnwwKSl7dj1zKzE2fDA7d2hpbGUoMSl7eD10KzE2fDA7dz1jW3g+PjJdfDA7aWYoKHd8MCk9PTApe2w9MTAxO2JyZWFrfWlmKCh3fDApPT0odHwwKSl7Y1t2Pj4yXT1zO3c9Y1t4Pj4yXXwwO21jW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjEyN10odyxzKTt3PWNbdj4+Ml18MH1lbHNle3c9b2NbY1soY1t3Pj4yXXwwKSs4Pj4yXSYxMjddKHcpfDA7Y1t2Pj4yXT13fWlmKCh3fDApPT0wKXticmVha31tY1tjWyhjW3c+PjJdfDApKzI0Pj4yXSYxMjddKHcsdSk7dz1jW3Y+PjJdfDA7ZG97aWYoKHd8MCk9PShzfDApKXtsY1tjWyhjW3M+PjJdfDApKzE2Pj4yXSYyNTVdKHMpfWVsc2V7aWYoKHd8MCk9PTApe2JyZWFrfWxjW2NbKGNbdz4+Ml18MCkrMjA+PjJdJjI1NV0odyl9fXdoaWxlKDApO3Q9dCsyNHwwO2lmKCh0fDApPT0ocnwwKSl7YnJlYWsgYn19aWYoKGx8MCk9PTEwMSl7Y1t2Pj4yXT0wfUg9WGEoNCl8MDtjW0g+PjJdPTYzMzY7d2IoSHwwLDYzMTIsNzYpfX13aGlsZSgwKTtzPVNjKDgzNTIsNTMwNCl8MDtyPWNbcysoKGNbKGNbcz4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO3Q9cis0fDA7Y1t0Pj4yXT0oY1t0Pj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW2YrND4+Ml09MjA4O2NbZis4Pj4yXT0wO2NnKDEzNDU2LGYpfXU9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3Y9Y1tyKzg+PjJdfDA7aWYoKGNbcisxMj4+Ml18MCktdj4+Mj4+PjA+dT4+PjA/KHE9Y1t2Kyh1PDwyKT4+Ml18MCwocXwwKSE9MCk6MCl7cT14Y1tjWyhjW3E+PjJdfDApKzI4Pj4yXSY2M10ocSwxMCl8MDtIPWNbdD4+Ml18MDtjW3Q+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW3I+PjJdfDApKzg+PjJdJjI1NV0ocil9bGgocyxxKTtZZyhzKTtyPWNbYj4+Ml18MDtxPWIrMTE0fDA7cT1kW3E+PjBdfGRbcSsxPj4wXTw8ODtIPWNbcis0Pj4yXXwwO0c9KChIfDApPDApPDwzMT4+MzE7aWYoMDwoR3wwKXwwPT0oR3wwKSYocSY2NTUzNSk+Pj4wPEg+Pj4wKXtjW3IrOD4+Ml09cSY2NTUzNX1lbHNle2FbcisxMj4+MF09MX1yPWIrMTIwfDA7Yzpkb3tpZigoZFtyPj4wXXxkW3IrMT4+MF08PDh8ZFtyKzI+PjBdPDwxNnxkW3IrMz4+MF08PDI0fDApIT0wKXt3PW8rMnwwO3U9bysxNnwwO3Q9bysxOHwwO3E9bysyMHwwO3g9Zis0fDA7dj1mKzh8MDtzPTA7d2hpbGUoMSl7Rz0oY1tiPj4yXXwwKSsxMnwwO0g9YVtHPj4wXXwwO2FbRz4+MF09MDtpZighKEg8PDI0Pj4yND09MCkpe2JyZWFrIGN9eT1jW2I+PjJdfDA7ej15KzEzfDA7aWYoKGFbej4+MF18MCkhPTApe2JyZWFrIGN9SD15KzR8MDtFPXkrOHwwO0c9Y1tFPj4yXXwwO0Y9KGNbSD4+Ml18MCktR3wwO0Y9KEZ8MCk8NTQ/Rjo1NDtNbihvfDAsKGNbeT4+Ml18MCkrR3wwLEZ8MCl8MDtHPShjW0U+PjJdfDApK0Z8MDtjW0U+PjJdPUc7Y1t5KzE2Pj4yXT1GO2lmKChHfDApPj0oY1tIPj4yXXwwKSl7YVt6Pj4wXT0xfXk9U2MoODM1Miw1ODcyKXwwO3o9Y1t5KygoY1soY1t5Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7QT16KzR8MDtjW0E+PjJdPShjW0E+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbeD4+Ml09MjA4O2Nbdj4+Ml09MDtjZygxMzQ1NixmKX1DPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtCPWNbeis4Pj4yXXwwO2lmKCEoKGNbeisxMj4+Ml18MCktQj4+Mj4+PjA+Qz4+PjApKXtsPTEzNjticmVha31CPWNbQisoQzw8Mik+PjJdfDA7aWYoKEJ8MCk9PTApe2w9MTM2O2JyZWFrfUI9eGNbY1soY1tCPj4yXXwwKSsyOD4+Ml0mNjNdKEIsMTApfDA7SD1jW0E+PjJdfDA7Y1tBPj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1t6Pj4yXXwwKSs4Pj4yXSYyNTVdKHopfWxoKHksQik7WWcoeSk7eT13O3o9NTg1Njt3aGlsZSgxKXtpZigoYVt5Pj4wXXwwKSE9KGFbej4+MF18MCkpe2JyZWFrfXk9eSsxfDA7aWYoKHl8MCk9PSh1fDApKXtsPTE0NDticmVha31lbHNle3o9eisxfDB9fWlmKChsfDApPT0xNDQ/KGw9MCwoZFt0Pj4wXXxkW3QrMT4+MF08PDgpPDwxNj4+MTY9PTIyMjA0KTowKXticmVha31BPWNbYj4+Ml18MDt5PUErOHwwO3o9Y1t5Pj4yXXwwO3o9SW4oenwwLCgoenwwKTwwKTw8MzE+PjMxfDAsKGRbcT4+MF18ZFtxKzE+PjBdPDw4KSY2NTUzNXwwLDApfDA7SD1JO0c9Y1tBKzQ+PjJdfDA7Rj0oKEd8MCk8MCk8PDMxPj4zMTtBPUErMTJ8MDtpZigoSHwwKT4oRnwwKXwoSHwwKT09KEZ8MCkmej4+PjA+PUc+Pj4wfChIfDApPDApe2FbQT4+MF09MX1lbHNle2FbQT4+MF09MDtjW3k+PjJdPXp9cz1zKzF8MDtpZighKHM+Pj4wPChkW3I+PjBdfGRbcisxPj4wXTw8OHxkW3IrMj4+MF08PDE2fGRbciszPj4wXTw8MjQpPj4+MCkpe2JyZWFrIGN9fWlmKChsfDApPT0xMzYpe0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfXI9U2MoODM1Miw1ODk2KXwwO3M9Y1tyKygoY1soY1tyPj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dD1zKzR8MDtjW3Q+PjJdPShjW3Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9dT0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dj1jW3MrOD4+Ml18MDtkb3tpZigoY1tzKzEyPj4yXXwwKS12Pj4yPj4+MD51Pj4+MCl7dT1jW3YrKHU8PDIpPj4yXXwwO2lmKCh1fDApPT0wKXticmVha311PXhjW2NbKGNbdT4+Ml18MCkrMjg+PjJdJjYzXSh1LDEwKXwwO0g9Y1t0Pj4yXXwwO2NbdD4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbcz4+Ml18MCkrOD4+Ml0mMjU1XShzKX1saChyLHUpO1lnKHIpO3I9ZFtxPj4wXXxkW3ErMT4+MF08PDg7cT1yJjY1NTM1O3I9cjw8MTY+PjE2PT0wPzE6cTt3aGlsZSgxKXtzPXVuKHIpfDA7aWYoKHN8MCkhPTApe2JyZWFrfXM9Y1s1NjY2XXwwO2NbNTY2Nl09cyswO2lmKChzfDApPT0wKXtsPTE1ODticmVha31zY1tzJjMxXSgpfWlmKChsfDApPT0xNTgpe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfXQ9Y1tiPj4yXXwwO3I9dCsxM3wwO2Rve2lmKChhW3I+PjBdfDApPT0wKXtIPXQrNHwwO0U9dCs4fDA7Rz1jW0U+PjJdfDA7Rj0oY1tIPj4yXXwwKS1HfDA7Rj0oRnwwKTwocXwwKT9GOnE7TW4oc3wwLChjW3Q+PjJdfDApK0d8MCxGfDApfDA7Rz0oY1tFPj4yXXwwKStGfDA7Y1tFPj4yXT1HO2NbdCsxNj4+Ml09RjtpZigoR3wwKTwoY1tIPj4yXXwwKSl7YnJlYWt9YVtyPj4wXT0xfWVsc2V7YVt0KzEyPj4wXT0xfX13aGlsZSgwKTt0PXMrMzR8MDtxPWIrMjQ3fDA7TW4ocXwwLHN8MCwzNCl8MDtpZighKChkW3E+PjBdfGRbcSsxPj4wXTw8OCk8PDE2Pj4xNj09Mikpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big2OCl8MDtpZigoYnwwKSE9MCl7bD0xNzE7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTE3MSl7Y1tiKzQ+PjJdPTU1O2NbYj4+Ml09NTU7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTYyMDB8MDtlPWYrNTZ8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NjI2NDt3YihnfDAsNjA5Niw3NCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1TYyg4MzUyLDYxMTIpfDA7cT1oaChyLGRbcT4+MF18ZFtxKzE+PjBdPDw4KXwwO3I9Y1txKygoY1soY1txPj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dT1yKzR8MDtjW3U+PjJdPShjW3U+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9dj0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dz1jW3IrOD4+Ml18MDtkb3tpZigoY1tyKzEyPj4yXXwwKS13Pj4yPj4+MD52Pj4+MCl7dj1jW3crKHY8PDIpPj4yXXwwO2lmKCh2fDApPT0wKXticmVha312PXhjW2NbKGNbdj4+Ml18MCkrMjg+PjJdJjYzXSh2LDEwKXwwO0g9Y1t1Pj4yXXwwO2NbdT4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbcj4+Ml18MCkrOD4+Ml0mMjU1XShyKX1saChxLHYpO1lnKHEpO3Y9U2MoODM1Miw2MTI4KXwwO3E9YisyNzl8MDt2PWhoKHYsZFtxPj4wXXxkW3ErMT4+MF08PDgpfDA7cj1jW3YrKChjWyhjW3Y+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDt1PXIrNHwwO2NbdT4+Ml09KGNbdT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX13PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt4PWNbcis4Pj4yXXwwO2Rve2lmKChjW3IrMTI+PjJdfDApLXg+PjI+Pj4wPnc+Pj4wKXt3PWNbeCsodzw8Mik+PjJdfDA7aWYoKHd8MCk9PTApe2JyZWFrfXc9eGNbY1soY1t3Pj4yXXwwKSsyOD4+Ml0mNjNdKHcsMTApfDA7SD1jW3U+PjJdfDA7Y1t1Pj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfWxoKHYsdyk7WWcodik7cj0oKGRbcT4+MF18ZFtxKzE+PjBdPDw4KSY2NTUzNSkqNnwwO3I9KHJ8MCk9PTA/MTpyO3doaWxlKDEpe3U9dW4ocil8MDtpZigodXwwKSE9MCl7YnJlYWt9dT1jWzU2NjZdfDA7Y1s1NjY2XT11KzA7aWYoKHV8MCk9PTApe2w9MTk0O2JyZWFrfXNjW3UmMzFdKCl9aWYoKGx8MCk9PTE5NCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1iKzI4MXwwO2Fbcj4+MF09dTthW3IrMT4+MF09dT4+ODthW3IrMj4+MF09dT4+MTY7YVtyKzM+PjBdPXU+PjI0O3U9U2MoODM1Miw2MTQ0KXwwO3Y9Y1t1KygoY1soY1t1Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dz12KzR8MDtjW3c+PjJdPShjW3c+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9eD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7eT1jW3YrOD4+Ml18MDtkb3tpZigoY1t2KzEyPj4yXXwwKS15Pj4yPj4+MD54Pj4+MCl7eD1jW3krKHg8PDIpPj4yXXwwO2lmKCh4fDApPT0wKXticmVha314PXhjW2NbKGNbeD4+Ml18MCkrMjg+PjJdJjYzXSh4LDEwKXwwO0g9Y1t3Pj4yXXwwO2Nbdz4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbdj4+Ml18MCkrOD4+Ml0mMjU1XSh2KX1saCh1LHgpO1lnKHUpO2Q6ZG97aWYoISgoZFtxPj4wXXxkW3ErMT4+MF08PDgpPDwxNj4+MTY9PTApKXt2PWYrNHwwO3U9Zis4fDA7dz0wO3doaWxlKDEpe01uKChkW3I+PjBdfGRbcisxPj4wXTw8OHxkW3IrMj4+MF08PDE2fGRbciszPj4wXTw8MjQpKyh3KjZ8MCl8MCx0fDAsNil8MDt6PWloKFNjKDgzNTIsNjE3Nil8MCx3KXwwO3k9Y1t6KygoY1soY1t6Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7eD15KzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2Nbdj4+Ml09MjA4O2NbdT4+Ml09MDtjZygxMzQ1NixmKX1BPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtCPWNbeSs4Pj4yXXwwO2lmKCEoKGNbeSsxMj4+Ml18MCktQj4+Mj4+PjA+QT4+PjApKXticmVha31BPWNbQisoQTw8Mik+PjJdfDA7aWYoKEF8MCk9PTApe2JyZWFrfUE9eGNbY1soY1tBPj4yXXwwKSsyOD4+Ml0mNjNdKEEsMTApfDA7SD1jW3g+PjJdfDA7Y1t4Pj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1t5Pj4yXXwwKSs4Pj4yXSYyNTVdKHkpfWxoKHosQSk7WWcoeik7dz13KzF8MDtpZigod3wwKT49KChkW3E+PjBdfGRbcSsxPj4wXTw8OCkmNjU1MzV8MCkpe2JyZWFrIGR9ZWxzZXt0PXQrNnwwfX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dm4ocyk7ZTpkb3tpZighKChkW3E+PjBdfGRbcSsxPj4wXTw8OCk8PDE2Pj4xNj09MCkpe3c9YiszMDR8MDt2PWIrMzA4fDA7eD1iKzMwMHwwO3U9Zis0fDA7dD1mKzh8MDtzPTA7Zjp3aGlsZSgxKXt5PVNjKDgzNTIsNTk2OCl8MDtBPWNbeSsoKGNbKGNbeT4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO3o9QSs0fDA7Y1t6Pj4yXT0oY1t6Pj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW3U+PjJdPTIwODtjW3Q+PjJdPTA7Y2coMTM0NTYsZil9Qj0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7Qz1jW0ErOD4+Ml18MDtpZighKChjW0ErMTI+PjJdfDApLUM+PjI+Pj4wPkI+Pj4wKSl7bD0yMzQ7YnJlYWt9Qj1jW0MrKEI8PDIpPj4yXXwwO2lmKChCfDApPT0wKXtsPTIzNDticmVha31CPXhjW2NbKGNbQj4+Ml18MCkrMjg+PjJdJjYzXShCLDEwKXwwO0g9Y1t6Pj4yXXwwO2Nbej4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbQT4+Ml18MCkrOD4+Ml0mMjU1XShBKX1saCh5LEIpO1lnKHkpO0E9ZFtyPj4wXXxkW3IrMT4+MF08PDh8ZFtyKzI+PjBdPDwxNnxkW3IrMz4+MF08PDI0O3k9QSsocyo2fDApfDA7eT0oZFt5Pj4wXXxkW3krMT4+MF08PDgpJjY1NTM1O3o9QSsocyo2fDApKzJ8MDt6PShkW3o+PjBdfGRbeisxPj4wXTw8OCkmNjU1MzU7QT1BKyhzKjZ8MCkrNHwwO0E9KGRbQT4+MF18ZFtBKzE+PjBdPDw4KSY2NTUzNTtDPWNbdz4+Ml18MDtkb3tpZigoQ3wwKT09KGNbdj4+Ml18MCkpe0I9Y1t4Pj4yXXwwO0U9Qy1CfDA7Qz0oRXwwKS8xMnwwO0Q9QysxfDA7aWYoRD4+PjA+MzU3OTEzOTQxKXtsPTI0NDticmVhayBmfWlmKEM+Pj4wPDE3ODk1Njk3MCl7Rj1DPDwxO0Y9Rj4+PjA8RD4+PjA/RDpGO2lmKChGfDApPT0wKXtGPTA7Rz0wfWVsc2V7bD0yNDd9fWVsc2V7Rj0zNTc5MTM5NDE7bD0yNDd9aWYoKGx8MCk9PTI0Nyl7bD0wO0g9RioxMnwwO0g9KEh8MCk9PTA/MTpIO3doaWxlKDEpe0c9dW4oSCl8MDtpZigoR3wwKSE9MCl7YnJlYWt9Rz1jWzU2NjZdfDA7Y1s1NjY2XT1HKzA7aWYoKEd8MCk9PTApe2w9MjUxO2JyZWFrIGZ9c2NbRyYzMV0oKX19SD1HKyhDKjEyfDApfDA7aWYoKEh8MCkhPTApe2NbSD4+Ml09eTtjW0crKEMqMTJ8MCkrND4+Ml09ejtjW0crKEMqMTJ8MCkrOD4+Ml09QX1IPUcrKCgoKEV8MCkvLTEyfDApK0N8MCkqMTJ8MCl8MDtMbihIfDAsQnwwLEV8MCl8MDtjW3g+PjJdPUg7Y1t3Pj4yXT1HKyhEKjEyfDApO2Nbdj4+Ml09RysoRioxMnwwKTtpZigoQnwwKT09MCl7YnJlYWt9dm4oQil9ZWxzZXtpZigoQ3wwKT09MCl7eT0wfWVsc2V7Y1tDPj4yXT15O2NbQys0Pj4yXT16O2NbQys4Pj4yXT1BO3k9Y1t3Pj4yXXwwfWNbdz4+Ml09eSsxMn19d2hpbGUoMCk7cz1zKzF8MDtpZigoc3wwKT49KChkW3E+PjBdfGRbcSsxPj4wXTw8OCkmNjU1MzV8MCkpe2JyZWFrIGV9fWlmKChsfDApPT0yMzQpe0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfWVsc2UgaWYoKGx8MCk9PTI0NCl7VGsoKX1lbHNlIGlmKChsfDApPT0yNTEpe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfX19d2hpbGUoMCk7cz1TYyg4MzUyLDUzMjApfDA7cj1jW3MrKChjWyhjW3M+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtxPXIrNHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX11PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt0PWNbcis4Pj4yXXwwO2Rve2lmKChjW3IrMTI+PjJdfDApLXQ+PjI+Pj4wPnU+Pj4wKXt0PWNbdCsodTw8Mik+PjJdfDA7aWYoKHR8MCk9PTApe2JyZWFrfXQ9eGNbY1soY1t0Pj4yXXwwKSsyOD4+Ml0mNjNdKHQsMTApfDA7SD1jW3E+PjJdfDA7Y1txPj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfWxoKHMsdCk7WWcocyk7cj1jW2I+PjJdfDA7cT1iKzExNnwwO3M9ZFtxPj4wXXxkW3ErMT4+MF08PDh8ZFtxKzI+PjBdPDwxNnxkW3ErMz4+MF08PDI0O0g9Y1tyKzQ+PjJdfDA7Rz0oKEh8MCk8MCk8PDMxPj4zMTtpZigwPChHfDApfDA9PShHfDApJnM+Pj4wPEg+Pj4wKXtjW3IrOD4+Ml09c31lbHNle2FbcisxMj4+MF09MX1zPW87Y1tzPj4yXT0wO2Nbcys0Pj4yXT0wO3M9Y1tiPj4yXXwwO3I9cysxM3wwO2Rve2lmKChhW3I+PjBdfDApPT0wKXtIPWNbcys0Pj4yXXwwO0U9cys4fDA7Rz1jW0U+PjJdfDA7Rj1ILUd8MDtGPShGfDApPDg/Rjo4O0xuKG98MCwoY1tzPj4yXXwwKStHfDAsRnwwKXwwO0c9RytGfDA7Y1tFPj4yXT1HO2NbcysxNj4+Ml09RjtpZigoR3wwKTwoSHwwKSl7YnJlYWt9YVtyPj4wXT0xfWVsc2V7YVtzKzEyPj4wXT0xfX13aGlsZSgwKTtHPShjW2I+PjJdfDApKzEyfDA7SD1hW0c+PjBdfDA7YVtHPj4wXT0wO2lmKCEoSDw8MjQ+PjI0PT0wKSl7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDU2KXwwO2lmKChifDApIT0wKXtsPTI4MjticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjgyKXtjW2IrND4+Ml09NDM7Y1tiPj4yXT00MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTc4NHwwO2U9Zis0NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT01ODQwO3diKGd8MCw1Mzg0LDcwKX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1zPWNbbz4+Ml18MDtvPWNbbys0Pj4yXXwwO2lmKChzfDApPT0tMSYob3wwKT09LTEpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big2Nyl8MDtpZigoYnwwKSE9MCl7bD0yOTA7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTI5MCl7Y1tiKzQ+PjJdPTU0O2NbYj4+Ml09NTQ7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTU0MDB8MDtlPWYrNTV8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NTc2ODt3YihnfDAsNTQ4OCw2OCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1jW2I+PjJdfDA7SD1jW3IrND4+Ml18MDtHPSgoSHwwKTwwKTw8MzE+PjMxO2lmKChvfDApPChHfDApfChvfDApPT0oR3wwKSZzPj4+MDxIPj4+MCl7Y1tyKzg+PjJdPXN9ZWxzZXthW3IrMTI+PjBdPTF9Rz0oY1tiPj4yXXwwKSsxMnwwO0g9YVtHPj4wXXwwO2FbRz4+MF09MDtpZighKEg8PDI0Pj4yND09MCkpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big1Nil8MDtpZigoYnwwKSE9MCl7bD0zMDE7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTMwMSl7Y1tiKzQ+PjJdPTQzO2NbYj4+Ml09NDM7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTU3ODR8MDtlPWYrNDR8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NTg0MDt3YihnfDAsNTM4NCw3MCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9bz1jW2I+PjJdfDA7cj1vKzEzfDA7ZG97aWYoKGFbcj4+MF18MCk9PTApe0g9Y1tvKzQ+PjJdfDA7RT1vKzh8MDtHPWNbRT4+Ml18MDtGPUgtR3wwO0Y9KEZ8MCk8OD9GOjg7TG4obnwwLChjW28+PjJdfDApK0d8MCxGfDApfDA7Rz1HK0Z8MDtjW0U+PjJdPUc7Y1tvKzE2Pj4yXT1GO2lmKChHfDApPChIfDApKXticmVha31hW3I+PjBdPTF9ZWxzZXthW28rMTI+PjBdPTF9fXdoaWxlKDApO0c9KGNbYj4+Ml18MCkrMTJ8MDtIPWFbRz4+MF18MDthW0c+PjBdPTA7aWYoIShIPDwyND4+MjQ9PTApKXtnPVhhKDgpfDA7Y1tnPj4yXT05OTI4O3doaWxlKDEpe2I9dW4oNTYpfDA7aWYoKGJ8MCkhPTApe2w9MzEzO2JyZWFrfWI9Y1s1NjY2XXwwO2NbNTY2Nl09YiswO2lmKChifDApPT0wKXticmVha31zY1tiJjMxXSgpfWlmKChsfDApPT0zMTMpe2NbYis0Pj4yXT00MztjW2I+PjJdPTQzO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj01Nzg0fDA7ZT1mKzQ0fDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTU4NDA7d2IoZ3wwLDUzODQsNzApfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfWlmKChjW24+PjJdfDApIT0wKXtnPVhhKDgpfDA7Y1tnPj4yXT05OTI4O3doaWxlKDEpe2I9dW4oNTQpfDA7aWYoKGJ8MCkhPTApe2w9MzIxO2JyZWFrfWI9Y1s1NjY2XXwwO2NbNTY2Nl09YiswO2lmKChifDApPT0wKXticmVha31zY1tiJjMxXSgpfWlmKChsfDApPT0zMjEpe2NbYis0Pj4yXT00MTtjW2I+PjJdPTQxO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj01Njg4fDA7ZT1mKzQyfDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTU3NDQ7d2IoZ3wwLDU1NDQsNjYpfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfW89YisyODh8MDtzPWNbbz4+Ml18MDtyPWIrMjkyfDA7dD1jW3I+PjJdfDA7aWYoKHR8MCk9PShzfDApKXt3PXN9ZWxzZXt3PXQrKH4oKHQrIC04KygwLXMpfDApPj4+Myk8PDMpfDA7Y1tyPj4yXT13fUg9YisyNTl8MDtpZigoZFtIPj4wXXxkW0grMT4+MF08PDh8ZFtIKzI+PjBdPDwxNnxkW0grMz4+MF08PDI0fDApPT0tMSl7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDk2KXwwO2lmKChifDApIT0wKXtsPTMzMTticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MzMxKXtjW2IrND4+Ml09ODM7Y1tiPj4yXT04MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTU2MHwwO2U9Zis4NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT01NzY4O3diKGd8MCw1NDg4LDY4KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX12PW4rNHwwO249Y1t2Pj4yXXwwO3U9bisxfDA7ej1zO3Q9dy16Pj4zO2Rve2lmKHQ+Pj4wPHU+Pj4wKXt1PXUtdHwwO3Q9YisyOTZ8MDtBPWNbdD4+Ml18MDt4PXc7aWYoIShBLXg+PjM+Pj4wPHU+Pj4wKSl7dD11O2w9dzt3aGlsZSgxKXtpZigobHwwKSE9MCl7SD1sO2NbSD4+Ml09MDtjW0grND4+Ml09MH10PXQrIC0xfDA7aWYoKHR8MCk9PTApe2JyZWFrfWVsc2V7bD1sKzh8MH19Y1tyPj4yXT13Kyh1PDwzKTticmVha314PXgtenwwO3k9eD4+Mzt3PXkrdXwwO2lmKHc+Pj4wPjUzNjg3MDkxMSl7VGsoKX16PUEtenwwO2lmKHo+PjM+Pj4wPDI2ODQzNTQ1NSl7ej16Pj4yO3o9ej4+PjA8dz4+PjA/dzp6O2lmKCh6fDApPT0wKXt6PTA7Qj0wfWVsc2V7bD0zNDJ9fWVsc2V7ej01MzY4NzA5MTE7bD0zNDJ9ZG97aWYoKGx8MCk9PTM0Mil7QT16PDwzO0E9KEF8MCk9PTA/MTpBO3doaWxlKDEpe0I9dW4oQSl8MDtpZigoQnwwKSE9MCl7bD0zNDg7YnJlYWt9Qj1jWzU2NjZdfDA7Y1s1NjY2XT1CKzA7aWYoKEJ8MCk9PTApe2JyZWFrfXNjW0ImMzFdKCl9aWYoKGx8MCk9PTM0OCl7YnJlYWt9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2w9QisoeTw8Myl8MDt3aGlsZSgxKXtpZigobHwwKSE9MCl7SD1sO2NbSD4+Ml09MDtjW0grND4+Ml09MH11PXUrIC0xfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7bD1sKzh8MH19TG4oQnwwLHN8MCx4fDApfDA7Y1tvPj4yXT1CO2Nbcj4+Ml09Qisodzw8Myk7Y1t0Pj4yXT1CKyh6PDwzKTtpZigoc3wwKT09MCl7cz1CO2JyZWFrfXZuKHMpO3M9Y1tvPj4yXXwwfWVsc2V7aWYoISh0Pj4+MD51Pj4+MCkpe2JyZWFrfWw9cysodTw8Myl8MDtpZigod3wwKT09KGx8MCkpe2JyZWFrfWNbcj4+Ml09dysofigodysgLTgrKDAtbCl8MCk+Pj4zKTw8Myl9fXdoaWxlKDApO2w9ZFtxPj4wXXxkW3ErMT4+MF08PDh8ZFtxKzI+PjBdPDwxNnxkW3ErMz4+MF08PDI0O0g9cztjW0g+PjJdPWwrODtjW0grND4+Ml09MDtnOmRve2lmKG4+Pj4wPjEpe2NbbT4+Ml09Y1tiPj4yXTtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtsPW0rMTJ8MDtzPXVuKDEwNDg2NDQpfDA7eT1zKzY4Ji02NDtjW3krIC00Pj4yXT1zO2NbbD4+Ml09eTtjW2o+PjJdPW07eT1qKzR8MDtjW3k+PjJdPTA7Y1tqKzg+PjJdPS0xO2NbZys0Pj4yXT0zMjtjW2crOD4+Ml09MjtjW2crMTI+PjJdPTg7Y1tnKzE2Pj4yXT0wO3M9ZyszNnwwO2Nbcz4+Ml09MDtuPWcrNDB8MDtjW24+PjJdPTA7Y1tnKzQ0Pj4yXT0wO2NbZys2MD4+Ml09MTtjW2crNjQ+PjJdPTI7Y1tnKzU2Pj4yXT00MDk2O2NbZys1Mj4+Ml09NDtjW2crNDg+PjJdPTQ7dT1nKzY4fDA7Y1t1Pj4yXT0wO3Q9Zys3MnwwO2NbdD4+Ml09MDtjW2crNzY+PjJdPTA7Y1tnKzIwPj4yXT0zMjt3PWcrMjR8MDtjW3c+PjJdPTA7Y1tnKzI4Pj4yXT0tMjE0NzQ4MzY0ODtjW2crMzI+PjJdPTIxNDc0ODM2NDc7Y1tnPj4yXT0wO0g9bWQobSl8MDtHPW1kKG0pfDA7eD1tZChtKXwwO2NbeT4+Ml09KEcmMjU1KTw8MTZ8KEgmMjU1KTw8MjR8KHgmMjU1KTw8OHwobWQobSl8MCkmMjU1O3RkKGcpO3k9U2MoODM1Miw1NjQ4KXwwO209Y1t2Pj4yXXwwO3k9amgoeSxtKXwwO3g9Y1t5KygoY1soY1t5Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dj14KzR8MDtjW3Y+PjJdPShjW3Y+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9QT0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7ej1jW3grOD4+Ml18MDtkb3tpZigoY1t4KzEyPj4yXXwwKS16Pj4yPj4+MD5BPj4+MCl7ej1jW3orKEE8PDIpPj4yXXwwO2lmKCh6fDApPT0wKXticmVha316PXhjW2NbKGNbej4+Ml18MCkrMjg+PjJdJjYzXSh6LDEwKXwwO0g9Y1t2Pj4yXXwwO2Nbdj4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbeD4+Ml18MCkrOD4+Ml0mMjU1XSh4KX1saCh5LHopO1lnKHkpO2g6ZG97aWYoKG18MCkhPTApe3g9Zis0fDA7dj1mKzh8MDt5PTE7d2hpbGUoMSl7aWYoeT4+PjA+MSl7ej1jWyhjW28+PjJdfDApKyh5KyAtMTw8Myk+PjJdfDB9ZWxzZXt6PTB9QT0ocmQoZyxqLChjW3M+PjJdfDApKzQ0fDApfDApK3p8MDt6PWNbdz4+Ml18MDtpZigoQXwwKTwwKXt6PXorQXwwfWVsc2V7ej1BLShBPj4+MDx6Pj4+MD8wOnopfDB9QT0oY1tvPj4yXXwwKSsoeTw8Myl8MDtjW0E+PjJdPXo7Y1tBKzQ+PjJdPSgoenwwKTwwKTw8MzE+PjMxO0E9U2MoamgoU2MoODM1Miw1NjcyKXwwLHkpfDAsNTY4MCl8MDt6PShjW28+PjJdfDApKyh5PDwzKXwwO3o9a2goQSxjW3o+PjJdfDAsY1t6KzQ+PjJdfDApfDA7QT1jW3orKChjWyhjW3o+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtCPUErNHwwO2NbQj4+Ml09KGNbQj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1t4Pj4yXT0yMDg7Y1t2Pj4yXT0wO2NnKDEzNDU2LGYpfUM9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0Q9Y1tBKzg+PjJdfDA7aWYoISgoY1tBKzEyPj4yXXwwKS1EPj4yPj4+MD5DPj4+MCkpe2JyZWFrfUM9Y1tEKyhDPDwyKT4+Ml18MDtpZigoQ3wwKT09MCl7YnJlYWt9Qz14Y1tjWyhjW0M+PjJdfDApKzI4Pj4yXSY2M10oQywxMCl8MDtIPWNbQj4+Ml18MDtjW0I+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0E+PjJdfDApKzg+PjJdJjI1NV0oQSl9bGgoeixDKTtZZyh6KTt5PXkrMXwwO2lmKHk+Pj4wPm0+Pj4wKXticmVhayBofX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dj1jW28+PjJdfDA7aTpkb3tpZigoY1tyPj4yXXwwKS12Pj4zPj4+MD4xKXtqPWYrNHwwO2c9Zis4fDA7bT0xO3doaWxlKDEpe3c9disobSsgLTE8PDMpfDA7dj12KyhtPDwzKXwwO3g9djt3PUluKGNbeD4+Ml18MCxjW3grND4+Ml18MCxjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7Y1t2Pj4yXT13O2Nbdis0Pj4yXT1JO3Y9U2MoamgoU2MoODM1Miw1NjcyKXwwLG0pfDAsNTY4MCl8MDt3PShjW28+PjJdfDApKyhtPDwzKXwwO3c9a2godixjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7dj1jW3crKChjWyhjW3c+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDt4PXYrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tqPj4yXT0yMDg7Y1tnPj4yXT0wO2NnKDEzNDU2LGYpfXo9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3k9Y1t2Kzg+PjJdfDA7aWYoISgoY1t2KzEyPj4yXXwwKS15Pj4yPj4+MD56Pj4+MCkpe2JyZWFrfXk9Y1t5Kyh6PDwyKT4+Ml18MDtpZigoeXwwKT09MCl7YnJlYWt9eT14Y1tjWyhjW3k+PjJdfDApKzI4Pj4yXSY2M10oeSwxMCl8MDtIPWNbeD4+Ml18MDtjW3g+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW3Y+PjJdfDApKzg+PjJdJjI1NV0odil9bGgodyx5KTtZZyh3KTttPW0rMXwwO3Y9Y1tvPj4yXXwwO2lmKCEobT4+PjA8KGNbcj4+Ml18MCktdj4+Mz4+PjApKXticmVhayBpfX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zj1jW3U+PjJdfDA7ZG97aWYoKGZ8MCkhPTApe2c9Y1t0Pj4yXXwwO2lmKChnfDApIT0oZnwwKSl7ZG97Y1t0Pj4yXT1nKyAtNDQ7aj1jW2crIC0zNj4+Ml18MDtpZigoanwwKSE9MCl7dm4oY1tqKyAtND4+Ml18MCl9aj1jW2crIC0zMj4+Ml18MDtpZigoanwwKSE9MCl7dm4oY1tqKyAtND4+Ml18MCl9Zz1jW2crIC0yOD4+Ml18MDtpZigoZ3wwKSE9MCl7dm4oY1tnKyAtND4+Ml18MCl9Zz1jW3Q+PjJdfDB9d2hpbGUoKGd8MCkhPShmfDApKTtmPWNbdT4+Ml18MDtpZigoZnwwKT09MCl7YnJlYWt9fXZuKGYpfX13aGlsZSgwKTtmPWNbcz4+Ml18MDtkb3tpZigoZnwwKSE9MCl7Zz1jW24+PjJdfDA7aWYoKGd8MCkhPShmfDApKXtkb3tjW24+PjJdPWcrIC00NDtqPWNbZysgLTM2Pj4yXXwwO2lmKChqfDApIT0wKXt2bihjW2orIC00Pj4yXXwwKX1qPWNbZysgLTMyPj4yXXwwO2lmKChqfDApIT0wKXt2bihjW2orIC00Pj4yXXwwKX1nPWNbZysgLTI4Pj4yXXwwO2lmKChnfDApIT0wKXt2bihjW2crIC00Pj4yXXwwKX1nPWNbbj4+Ml18MH13aGlsZSgoZ3wwKSE9KGZ8MCkpO2Y9Y1tzPj4yXXwwO2lmKChmfDApPT0wKXticmVha319dm4oZil9fXdoaWxlKDApO3ZuKGNbKGNbbD4+Ml18MCkrIC00Pj4yXXwwKTtsPWRbcT4+MF18ZFtxKzE+PjBdPDw4fGRbcSsyPj4wXTw8MTZ8ZFtxKzM+PjBdPDwyNDticmVhayBnfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zj1jW2I+PjJdfDA7YVtmKzEyPj4wXT0wO2FbZisxMz4+MF09MDtmPWNbYj4+Ml18MDtnPWwrOHwwO0g9Y1tmKzQ+PjJdfDA7Rz0oKEh8MCk8MCk8PDMxPj4zMTtpZigwPChHfDApfDA9PShHfDApJmc+Pj4wPEg+Pj4wKXtjW2YrOD4+Ml09ZztIPWIrMTJ8MDtjW0g+PjJdPTA7SD1iKzh8MDtjW0g+PjJdPTA7aT1lO3JldHVybn1lbHNle2FbZisxMj4+MF09MTtIPWIrMTJ8MDtjW0g+PjJdPTA7SD1iKzh8MDtjW0g+PjJdPTA7aT1lO3JldHVybn19fXdoaWxlKDApO0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDU2KXwwO2lmKChifDApIT0wKXtsPTIyOTticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjI5KXtjW2IrND4+Ml09NDM7Y1tiPj4yXT00MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTk4NHwwO2U9Zis0NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT02MDQwO3diKGd8MCw1OTUyLDcyKX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBwZShhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Yj1pO2k9aSsxNnwwO2Y9YjtnPVNjKDgzNTIsNTE5Mil8MDtoPWNbZysoKGNbKGNbZz4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO2o9aCs0fDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW2YrND4+Ml09MjA4O2NbZis4Pj4yXT0wO2NnKDEzNDU2LGYpfWw9KGNbMTM0NjA+PjJdfDApKyAtMXwwO209Y1toKzg+PjJdfDA7aWYoKGNbaCsxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywxMCl8MDttPWNbaj4+Ml18MDtjW2o+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2g+PjJdfDApKzg+PjJdJjI1NV0oaCl9bGgoZyxrKTtZZyhnKTtnPWErMzR8MDtnPWRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNDtpZigoZ3wwKSE9MCl7dm4oZyl9Zz1TYyg4MzUyLDUyMDgpfDA7aD1jW2crKChjWyhjW2c+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtqPWgrNHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX1mPShjWzEzNDYwPj4yXXwwKSsgLTF8MDthPWNbaCs4Pj4yXXwwO2lmKChjW2grMTI+PjJdfDApLWE+PjI+Pj4wPmY+Pj4wPyhlPWNbYSsoZjw8Mik+PjJdfDAsKGV8MCkhPTApOjApe2U9eGNbY1soY1tlPj4yXXwwKSsyOD4+Ml0mNjNdKGUsMTApfDA7bT1jW2o+PjJdfDA7Y1tqPj4yXT1tKyAtMTtpZigobXwwKT09MCl7bGNbY1soY1toPj4yXXwwKSs4Pj4yXSYyNTVdKGgpfWxoKGcsZSk7WWcoZyk7aT1iO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBxZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gcmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHNlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiB0ZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gdWUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB2ZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHdlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24geGUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHllKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gemUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEFlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gQmUoYSl7YT1hfDA7dmFyIGI9MDtiPWk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIENlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRGUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTA7Yj1pO2Q9Y1thPj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufWU9YSs0fDA7Zj1jW2U+PjJdfDA7aWYoKGZ8MCkhPShkfDApKXtkb3tnPWYrIC0yNHwwO2NbZT4+Ml09ZztmPWNbZisgLTg+PjJdfDA7aWYoKGZ8MCkhPShnfDApKXtpZigoZnwwKSE9MCl7bGNbY1soY1tmPj4yXXwwKSsyMD4+Ml0mMjU1XShmKX19ZWxzZXtsY1tjWyhjW2Y+PjJdfDApKzE2Pj4yXSYyNTVdKGYpfWY9Y1tlPj4yXXwwfXdoaWxlKChmfDApIT0oZHwwKSk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59fXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gRWUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEZlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEdlKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2E9aTt3aGlsZSgxKXtkPXVuKDgpfDA7aWYoKGR8MCkhPTApe2I9NzticmVha31kPWNbNTY2Nl18MDtjWzU2NjZdPWQrMDtpZigoZHwwKT09MCl7YnJlYWt9c2NbZCYzMV0oKX1pZigoYnwwKT09Nyl7Y1tkPj4yXT02NDE2O2k9YTtyZXR1cm4gZHwwfWQ9WGEoNCl8MDtjW2Q+PjJdPTIyNjgwO3diKGR8MCwyMjcyOCwyMDYpO3JldHVybiAwfWZ1bmN0aW9uIEhlKGEsYil7YT1hfDA7Yj1ifDA7aWYoKGJ8MCkhPTApe2NbYj4+Ml09NjQxNn1yZXR1cm59ZnVuY3Rpb24gSWUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEplKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEtlKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtiPWk7aj1lKzEwNHwwO2c9ZFtqPj4wXXwwO2U9Zz4+Pjc7aD1nPj4+NiYxO2lmKCEoKGV8MCkhPTF8KGh8MCk9PTApKXtiPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oODApfDA7aWYoKGV8MCkhPTApe2Y9ODticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZnwwKT09OCl7Y1tlKzQ+PjJdPTY3O2NbZT4+Ml09Njc7Zz1lKzEyfDA7Y1tiKzQ+PjJdPWc7Y1tlKzg+PjJdPTA7Zz1nKzB8MDtlPTY5NjB8MDtmPWcrNjh8MDtkb3thW2c+PjBdPWFbZT4+MF18MDtnPWcrMXwwO2U9ZSsxfDB9d2hpbGUoKGd8MCk8KGZ8MCkpO2NbYj4+Ml09NzA0MDt3YihifDAsNjgzMiw4NCl9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9aWYoKGV8MCkhPShofDApKXthW2o+PjBdPWcmNjM7aT1iO3JldHVybn1iPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oNTEpfDA7aWYoKGV8MCkhPTApe2Y9MTY7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKGZ8MCk9PTE2KXtjW2UrND4+Ml09Mzg7Y1tlPj4yXT0zODtnPWUrMTJ8MDtjW2IrND4+Ml09ZztjW2UrOD4+Ml09MDtnPWcrMHwwO2U9Njg5NnwwO2Y9ZyszOXwwO2Rve2FbZz4+MF09YVtlPj4wXXwwO2c9ZysxfDA7ZT1lKzF8MH13aGlsZSgoZ3wwKTwoZnwwKSk7Y1tiPj4yXT02OTQ0O3diKGJ8MCw2ODgwLDgyKX1qPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX1mdW5jdGlvbiBMZShhLGIpe2E9YXwwO2I9YnwwO3JldHVybigoY1tiKzQ+PjJdfDApPT02Njg4P2ErNHwwOjApfDB9ZnVuY3Rpb24gTWUoYSl7YT1hfDA7cmV0dXJuIDY3ODR9ZnVuY3Rpb24gTmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIE9lKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBQZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFFlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gUmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBTZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2I9aTtpPWkrMTZ8MDtoPWI7ZD1TYyg4MzUyLDcxMDQpfDA7ZT1jW2QrKChjWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtmPWUrNHwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbaD4+Ml09MTM0NTY7Y1toKzQ+PjJdPTIwODtjW2grOD4+Ml09MDtjZygxMzQ1NixoKX1oPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtqPWNbZSs4Pj4yXXwwO2lmKChjW2UrMTI+PjJdfDApLWo+PjI+Pj4wPmg+Pj4wPyhnPWNbaisoaDw8Mik+PjJdfDAsKGd8MCkhPTApOjApe2c9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcsMTApfDA7aj1jW2Y+PjJdfDA7Y1tmPj4yXT1qKyAtMTtpZigoanwwKT09MCl7bGNbY1soY1tlPj4yXXwwKSs4Pj4yXSYyNTVdKGUpfWxoKGQsZyk7WWcoZCk7ZD1jW2ErMzI0Pj4yXXwwO2lmKCgoZHwwKSE9MD8oaD1kKzR8MCxqPWNbaD4+Ml18MCxjW2g+PjJdPWorIC0xLChqfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGg9ZCs4fDAsaj1jW2g+PjJdfDAsY1toPj4yXT1qKyAtMSwoanwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX1kPWNbYSszMTY+PjJdfDA7aWYoKChkfDApIT0wPyhoPWQrNHwwLGo9Y1toPj4yXXwwLGNbaD4+Ml09aisgLTEsKGp8MCk9PTApOjApPyhsY1tjWyhjW2Q+PjJdfDApKzg+PjJdJjI1NV0oZCksaD1kKzh8MCxqPWNbaD4+Ml18MCxjW2g+PjJdPWorIC0xLChqfDApPT0wKTowKXtsY1tjWyhjW2Q+PjJdfDApKzE2Pj4yXSYyNTVdKGQpfWQ9Y1thKzMwMD4+Ml18MDtpZigoZHwwKSE9MCl7ZT1hKzMwNHwwO2Y9Y1tlPj4yXXwwO2lmKChmfDApIT0oZHwwKSl7Y1tlPj4yXT1mKyh+KCgoZisgLTEyKygwLWQpfDApPj4+MCkvMTJ8MCkqMTJ8MCl9dm4oZCl9ZD1jW2ErMjg4Pj4yXXwwO2lmKChkfDApPT0wKXtqPWErMjQ3fDA7cGUoaik7aj1hKzE2fDA7aj1jW2o+PjJdfDA7aj1qKyAtNHwwO2o9Y1tqPj4yXXwwO3ZuKGopO2k9YjtyZXR1cm59ZT1hKzI5MnwwO2Y9Y1tlPj4yXXwwO2lmKChmfDApIT0oZHwwKSl7Y1tlPj4yXT1mKyh+KChmKyAtOCsoMC1kKXwwKT4+PjMpPDwzKX12bihkKTtqPWErMjQ3fDA7cGUoaik7aj1hKzE2fDA7aj1jW2o+PjJdfDA7aj1qKyAtNHwwO2o9Y1tqPj4yXXwwO3ZuKGopO2k9YjtyZXR1cm59aj1YYSg0KXwwO2Nbaj4+Ml09MjEzMDQ7d2IoanwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gVGUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFVlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFZlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2E9Y1thKzEyPj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufVNlKGEpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gV2UoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT03MzEyKXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIFhlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFllKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBaZShhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBfZShhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiAkZShhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTc1NjApe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gYWYoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gYmYoKXt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtiPWk7aT1pKzMyfDA7ZD1iO0hiKDcyLDk2LDE3NiwwLDE1Miw5MSwxNDQsMCwxNDQsMCw4LDEzNiwyMTEpO2NbZD4+Ml09MTtlPWQrNHwwO2NbZT4+Ml09OTY7T2IoNzIsMSxlfDAsMTI4LDkyLDIyKTtjW2Q+PjJdPTQ7ZT1kKzR8MDtjW2U+PjJdPTIxNzc2O2NbZCs4Pj4yXT05NjtjW2QrMTI+PjJdPTIxOTA0O2NbZCsxNj4+Ml09MjE5MDQ7Zj11big4KXwwO2lmKChmfDApIT0wKXthW2Y+PjBdPTI3O2FbZisxPj4wXT0wO2FbZisyPj4wXT0wO2FbZiszPj4wXT0wO2c9Zis0fDA7YVtnPj4wXT0wO2FbZysxPj4wXT0wO2FbZysyPj4wXT0wO2FbZyszPj4wXT0wfXpiKDcyLDE2LDQsZXwwLDEyMCwzMCxmfDAsMCk7Y1tkPj4yXT0zO2U9ZCs0fDA7Y1tlPj4yXT0yMTc3NjtjW2QrOD4+Ml09OTY7Y1tkKzEyPj4yXT0yMTg4ODtmPXVuKDgpfDA7aWYoKGZ8MCkhPTApe2FbZj4+MF09NjY7YVtmKzE+PjBdPTA7YVtmKzI+PjBdPTA7YVtmKzM+PjBdPTA7Zz1mKzR8MDthW2c+PjBdPTA7YVtnKzE+PjBdPTA7YVtnKzI+PjBdPTA7YVtnKzM+PjBdPTB9emIoNzIsMjQsMyxlfDAsMTEyLDI4LGZ8MCwwKTtjW2Q+PjJdPTI7ZT1kKzR8MDtjW2U+PjJdPTIxOTA0O2NbZCs4Pj4yXT05NjtkPXVuKDgpfDA7aWYoKGR8MCk9PTApe3piKDcyLDQwLDIsZXwwLDU2LDQ2LGR8MCwwKTtpPWI7cmV0dXJufWFbZD4+MF09OTM7YVtkKzE+PjBdPTA7YVtkKzI+PjBdPTA7YVtkKzM+PjBdPTA7Zz1kKzR8MDthW2c+PjBdPTA7YVtnKzE+PjBdPTA7YVtnKzI+PjBdPTA7YVtnKzM+PjBdPTA7emIoNzIsNDAsMixlfDAsNTYsNDYsZHwwLDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gY2YoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtkPWNbYSs0Pj4yXXwwO2U9KEpuKGR8MCl8MCkrMXwwO2E9dW4oZSl8MDtpZigoYXwwKT09MCl7ZT0wO2k9YjtyZXR1cm4gZXwwfUxuKGF8MCxkfDAsZXwwKXwwO2U9YTtpPWI7cmV0dXJuIGV8MH1mdW5jdGlvbiBkZigpe3ZhciBhPTA7YT1pO0phKDIxNzc2LDc2MjQpO3BiKDIxODA4LDc2MzIsMSwxLDApO1VhKDIxODI0LDc2NDAsMSwtMTI4LDEyNyk7VWEoMjE4NTYsNzY0OCwxLC0xMjgsMTI3KTtVYSgyMTg0MCw3NjY0LDEsMCwyNTUpO1VhKDIxODY0LDc2ODAsMiwtMzI3NjgsMzI3NjcpO1VhKDIxODcyLDc2ODgsMiwwLDY1NTM1KTtVYSgyMTg4OCw3NzA0LDQsLTIxNDc0ODM2NDgsMjE0NzQ4MzY0Nyk7VWEoMjE5MDQsNzcxMiw0LDAsLTEpO1VhKDIxOTIwLDc3MjgsNCwtMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3KTtVYSgyMTkzNiw3NzM2LDQsMCwtMSk7YWMoMjE5NTIsNzc1Miw0KTthYygyMTk2OCw3NzYwLDgpO3RiKDgyNDAsNzc2OCk7dGIoODE1Miw3Nzg0KTtKYig4MDY0LDQsNzgyNCk7eGIoNzk0NCw3ODQwKTtMYSg3OTEyLDc4NTYpO2k9YTtyZXR1cm59ZnVuY3Rpb24gZWYoYSl7YT1hfDA7YT1pO1lnKDgzNTIpO1lnKDg1MjgpO2JoKDg3MDQpO2JoKDg4ODApO2k9YTtyZXR1cm59ZnVuY3Rpb24gZmYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNzI4O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGdmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gaGYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wO2U9aTtvY1tjWyhjW2I+PjJdfDApKzI0Pj4yXSYxMjddKGIpfDA7ZD1ZayhjW2Q+PjJdfDAsMTM1MjgpfDA7Y1tiKzM2Pj4yXT1kO2FbYis0ND4+MF09KG9jW2NbKGNbZD4+Ml18MCkrMjg+PjJdJjEyN10oZCl8MCkmMTtpPWU7cmV0dXJufWZ1bmN0aW9uIGpmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtiPWk7aT1pKzE2fDA7Zz1iKzh8MDtkPWI7ZT1hKzM2fDA7Zj1hKzQwfDA7aD1nKzh8MDtqPWc7YT1hKzMyfDA7d2hpbGUoMSl7az1jW2U+PjJdfDA7az15Y1tjWyhjW2s+PjJdfDApKzIwPj4yXSY2M10oayxjW2Y+PjJdfDAsZyxoLGQpfDA7bD0oY1tkPj4yXXwwKS1qfDA7aWYoKFpiKGd8MCwxLGx8MCxjW2E+PjJdfDApfDApIT0obHwwKSl7ZT0tMTtkPTU7YnJlYWt9aWYoKGt8MCk9PTIpe2U9LTE7ZD01O2JyZWFrfWVsc2UgaWYoKGt8MCkhPTEpe2Q9NDticmVha319aWYoKGR8MCk9PTQpe2w9KChfYShjW2E+PjJdfDApfDApIT0wKTw8MzE+PjMxO2k9YjtyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTUpe2k9YjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIGtmKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MDtmPWk7aWYoKGFbYis0ND4+MF18MCkhPTApe2c9WmIoZHwwLDQsZXwwLGNbYiszMj4+Ml18MCl8MDtpPWY7cmV0dXJuIGd8MH1pZigoZXwwKT4wKXtnPTB9ZWxzZXtnPTA7aT1mO3JldHVybiBnfDB9d2hpbGUoMSl7aWYoKHhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGNbZD4+Ml18MCl8MCk9PS0xKXtlPTY7YnJlYWt9Zz1nKzF8MDtpZigoZ3wwKTwoZXwwKSl7ZD1kKzR8MH1lbHNle2U9NjticmVha319aWYoKGV8MCk9PTYpe2k9ZjtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIGxmKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtlPWk7aT1pKzMyfDA7az1lKzE2fDA7cD1lKzh8MDtqPWUrNHwwO2g9ZTtmPShkfDApPT0tMTthOmRve2lmKCFmKXtjW3A+PjJdPWQ7aWYoKGFbYis0ND4+MF18MCkhPTApe2lmKChaYihwfDAsNCwxLGNbYiszMj4+Ml18MCl8MCk9PTEpe2JyZWFrfWVsc2V7ZD0tMX1pPWU7cmV0dXJuIGR8MH1jW2o+PjJdPWs7bD1wKzR8MDtuPWIrMzZ8MDtvPWIrNDB8MDtnPWsrOHwwO209aztiPWIrMzJ8MDt3aGlsZSgxKXtxPWNbbj4+Ml18MDtxPXRjW2NbKGNbcT4+Ml18MCkrMTI+PjJdJjMxXShxLGNbbz4+Ml18MCxwLGwsaCxrLGcsail8MDtpZigoY1toPj4yXXwwKT09KHB8MCkpe2Q9LTE7Zz0xMjticmVha31pZigocXwwKT09Myl7Zz03O2JyZWFrfXI9KHF8MCk9PTE7aWYoIShxPj4+MDwyKSl7ZD0tMTtnPTEyO2JyZWFrfXE9KGNbaj4+Ml18MCktbXwwO2lmKChaYihrfDAsMSxxfDAsY1tiPj4yXXwwKXwwKSE9KHF8MCkpe2Q9LTE7Zz0xMjticmVha31pZihyKXtwPXI/Y1toPj4yXXwwOnB9ZWxzZXticmVhayBhfX1pZigoZ3wwKT09Nyl7aWYoKFpiKHB8MCwxLDEsY1tiPj4yXXwwKXwwKT09MSl7YnJlYWt9ZWxzZXtkPS0xfWk9ZTtyZXR1cm4gZHwwfWVsc2UgaWYoKGd8MCk9PTEyKXtpPWU7cmV0dXJuIGR8MH19fXdoaWxlKDApO3I9Zj8wOmQ7aT1lO3JldHVybiByfDB9ZnVuY3Rpb24gbWYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNzI4O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG5mKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gb2YoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2c9WWsoY1tkPj4yXXwwLDEzNTI4KXwwO2Y9YiszNnwwO2NbZj4+Ml09ZztkPWIrNDR8MDtjW2Q+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MDtmPWNbZj4+Ml18MDthW2IrNTM+PjBdPShvY1tjWyhjW2Y+PjJdfDApKzI4Pj4yXSYxMjddKGYpfDApJjE7aWYoKGNbZD4+Ml18MCk+OCl7b2soOTU0NCl9ZWxzZXtpPWU7cmV0dXJufX1mdW5jdGlvbiBwZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPXNmKGEsMCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBxZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPXNmKGEsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiByZihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtpPWkrMzJ8MDtqPWUrMTZ8MDtmPWUrOHwwO2w9ZSs0fDA7az1lO2c9Yis1MnwwO209KGFbZz4+MF18MCkhPTA7aWYoKGR8MCk9PS0xKXtpZihtKXttPS0xO2k9ZTtyZXR1cm4gbXwwfW09Y1tiKzQ4Pj4yXXwwO2FbZz4+MF09KG18MCkhPS0xJjE7aT1lO3JldHVybiBtfDB9aD1iKzQ4fDA7YTpkb3tpZihtKXtjW2w+PjJdPWNbaD4+Ml07bT1jW2IrMzY+PjJdfDA7az10Y1tjWyhjW20+PjJdfDApKzEyPj4yXSYzMV0obSxjW2IrNDA+PjJdfDAsbCxsKzR8MCxrLGosais4fDAsZil8MDtpZigoa3wwKT09Myl7YVtqPj4wXT1jW2g+PjJdO2NbZj4+Ml09aisxfWVsc2UgaWYoKGt8MCk9PTF8KGt8MCk9PTIpe209LTE7aT1lO3JldHVybiBtfDB9Yj1iKzMyfDA7d2hpbGUoMSl7az1jW2Y+PjJdfDA7aWYoIShrPj4+MD5qPj4+MCkpe2JyZWFrIGF9bT1rKyAtMXwwO2NbZj4+Ml09bTtpZigoVmEoYVttPj4wXXwwLGNbYj4+Ml18MCl8MCk9PS0xKXtmPS0xO2JyZWFrfX1pPWU7cmV0dXJuIGZ8MH19d2hpbGUoMCk7Y1toPj4yXT1kO2FbZz4+MF09MTttPWQ7aT1lO3JldHVybiBtfDB9ZnVuY3Rpb24gc2YoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7ZT1pO2k9aSszMnwwO2c9ZSsxNnwwO2o9ZSs4fDA7bT1lKzR8MDtsPWU7bj1iKzUyfDA7aWYoKGFbbj4+MF18MCkhPTApe2Y9Yis0OHwwO2c9Y1tmPj4yXXwwO2lmKCFkKXt2PWc7aT1lO3JldHVybiB2fDB9Y1tmPj4yXT0tMTthW24+PjBdPTA7dj1nO2k9ZTtyZXR1cm4gdnwwfXM9Y1tiKzQ0Pj4yXXwwO3M9KHN8MCk+MT9zOjE7YTpkb3tpZigoc3wwKT4wKXtwPWIrMzJ8MDtuPTA7d2hpbGUoMSl7bz1UYihjW3A+PjJdfDApfDA7aWYoKG98MCk9PS0xKXtoPS0xO2JyZWFrfWFbZytuPj4wXT1vO249bisxfDA7aWYoKG58MCk+PShzfDApKXticmVhayBhfX1pPWU7cmV0dXJuIGh8MH19d2hpbGUoMCk7Yjpkb3tpZigoYVtiKzUzPj4wXXwwKT09MCl7cD1iKzQwfDA7cT1iKzM2fDA7bj1qKzR8MDtvPWIrMzJ8MDt3aGlsZSgxKXt2PWNbcD4+Ml18MDt1PXY7dD1jW3U+PjJdfDA7dT1jW3UrND4+Ml18MDt3PWNbcT4+Ml18MDtyPWcrc3wwO3Y9dGNbY1soY1t3Pj4yXXwwKSsxNj4+Ml0mMzFdKHcsdixnLHIsbSxqLG4sbCl8MDtpZigodnwwKT09Myl7Zj0xNDticmVha31lbHNlIGlmKCh2fDApPT0yKXtoPS0xO2Y9MjI7YnJlYWt9ZWxzZSBpZigodnwwKSE9MSl7az1zO2JyZWFrIGJ9dz1jW3A+PjJdfDA7Y1t3Pj4yXT10O2Nbdys0Pj4yXT11O2lmKChzfDApPT04KXtoPS0xO2Y9MjI7YnJlYWt9dD1UYihjW28+PjJdfDApfDA7aWYoKHR8MCk9PS0xKXtoPS0xO2Y9MjI7YnJlYWt9YVtyPj4wXT10O3M9cysxfDB9aWYoKGZ8MCk9PTE0KXtjW2o+PjJdPWFbZz4+MF18MDtrPXM7YnJlYWt9ZWxzZSBpZigoZnwwKT09MjIpe2k9ZTtyZXR1cm4gaHwwfX1lbHNle2Nbaj4+Ml09YVtnPj4wXXwwO2s9c319d2hpbGUoMCk7aWYoZCl7dz1jW2o+PjJdfDA7Y1tiKzQ4Pj4yXT13O2k9ZTtyZXR1cm4gd3wwfWQ9YiszMnwwO3doaWxlKDEpe2lmKChrfDApPD0wKXticmVha31rPWsrIC0xfDA7aWYoKFZhKGFbZytrPj4wXXwwLGNbZD4+Ml18MCl8MCk9PS0xKXtoPS0xO2Y9MjI7YnJlYWt9fWlmKChmfDApPT0yMil7aT1lO3JldHVybiBofDB9dz1jW2o+PjJdfDA7aT1lO3JldHVybiB3fDB9ZnVuY3Rpb24gdGYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNjY0O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHVmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA2NjQ7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gdmYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wO2U9aTtvY1tjWyhjW2I+PjJdfDApKzI0Pj4yXSYxMjddKGIpfDA7ZD1ZayhjW2Q+PjJdfDAsMTM1MjApfDA7Y1tiKzM2Pj4yXT1kO2FbYis0ND4+MF09KG9jW2NbKGNbZD4+Ml18MCkrMjg+PjJdJjEyN10oZCl8MCkmMTtpPWU7cmV0dXJufWZ1bmN0aW9uIHdmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtiPWk7aT1pKzE2fDA7Zz1iKzh8MDtkPWI7ZT1hKzM2fDA7Zj1hKzQwfDA7aD1nKzh8MDtqPWc7YT1hKzMyfDA7d2hpbGUoMSl7az1jW2U+PjJdfDA7az15Y1tjWyhjW2s+PjJdfDApKzIwPj4yXSY2M10oayxjW2Y+PjJdfDAsZyxoLGQpfDA7bD0oY1tkPj4yXXwwKS1qfDA7aWYoKFpiKGd8MCwxLGx8MCxjW2E+PjJdfDApfDApIT0obHwwKSl7ZT0tMTtkPTU7YnJlYWt9aWYoKGt8MCk9PTIpe2U9LTE7ZD01O2JyZWFrfWVsc2UgaWYoKGt8MCkhPTEpe2Q9NDticmVha319aWYoKGR8MCk9PTQpe2w9KChfYShjW2E+PjJdfDApfDApIT0wKTw8MzE+PjMxO2k9YjtyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTUpe2k9YjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIHhmKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MDtnPWk7aWYoKGFbYis0ND4+MF18MCkhPTApe2g9WmIoZXwwLDEsZnwwLGNbYiszMj4+Ml18MCl8MDtpPWc7cmV0dXJuIGh8MH1pZigoZnwwKT4wKXtoPTB9ZWxzZXtoPTA7aT1nO3JldHVybiBofDB9d2hpbGUoMSl7aWYoKHhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGRbZT4+MF18MCl8MCk9PS0xKXtmPTY7YnJlYWt9aD1oKzF8MDtpZigoaHwwKTwoZnwwKSl7ZT1lKzF8MH1lbHNle2Y9NjticmVha319aWYoKGZ8MCk9PTYpe2k9ZztyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIHlmKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtlPWk7aT1pKzMyfDA7az1lKzE2fDA7cD1lKzh8MDtqPWUrNHwwO2g9ZTtmPShkfDApPT0tMTthOmRve2lmKCFmKXthW3A+PjBdPWQ7aWYoKGFbYis0ND4+MF18MCkhPTApe2lmKChaYihwfDAsMSwxLGNbYiszMj4+Ml18MCl8MCk9PTEpe2JyZWFrfWVsc2V7ZD0tMX1pPWU7cmV0dXJuIGR8MH1jW2o+PjJdPWs7bD1wKzF8MDtuPWIrMzZ8MDtvPWIrNDB8MDtnPWsrOHwwO209aztiPWIrMzJ8MDt3aGlsZSgxKXtxPWNbbj4+Ml18MDtxPXRjW2NbKGNbcT4+Ml18MCkrMTI+PjJdJjMxXShxLGNbbz4+Ml18MCxwLGwsaCxrLGcsail8MDtpZigoY1toPj4yXXwwKT09KHB8MCkpe2Q9LTE7Zz0xMjticmVha31pZigocXwwKT09Myl7Zz03O2JyZWFrfXI9KHF8MCk9PTE7aWYoIShxPj4+MDwyKSl7ZD0tMTtnPTEyO2JyZWFrfXE9KGNbaj4+Ml18MCktbXwwO2lmKChaYihrfDAsMSxxfDAsY1tiPj4yXXwwKXwwKSE9KHF8MCkpe2Q9LTE7Zz0xMjticmVha31pZihyKXtwPXI/Y1toPj4yXXwwOnB9ZWxzZXticmVhayBhfX1pZigoZ3wwKT09Nyl7aWYoKFpiKHB8MCwxLDEsY1tiPj4yXXwwKXwwKT09MSl7YnJlYWt9ZWxzZXtkPS0xfWk9ZTtyZXR1cm4gZHwwfWVsc2UgaWYoKGd8MCk9PTEyKXtpPWU7cmV0dXJuIGR8MH19fXdoaWxlKDApO3I9Zj8wOmQ7aT1lO3JldHVybiByfDB9ZnVuY3Rpb24gemYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNjY0O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEFmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA2NjQ7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gQmYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2c9WWsoY1tkPj4yXXwwLDEzNTIwKXwwO2Y9YiszNnwwO2NbZj4+Ml09ZztkPWIrNDR8MDtjW2Q+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MDtmPWNbZj4+Ml18MDthW2IrNTM+PjBdPShvY1tjWyhjW2Y+PjJdfDApKzI4Pj4yXSYxMjddKGYpfDApJjE7aWYoKGNbZD4+Ml18MCk+OCl7b2soOTU0NCl9ZWxzZXtpPWU7cmV0dXJufX1mdW5jdGlvbiBDZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPUZmKGEsMCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBEZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPUZmKGEsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBFZihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtpPWkrMzJ8MDtqPWUrMTZ8MDtmPWUrNHwwO2w9ZSs4fDA7az1lO2c9Yis1MnwwO209KGFbZz4+MF18MCkhPTA7aWYoKGR8MCk9PS0xKXtpZihtKXttPS0xO2k9ZTtyZXR1cm4gbXwwfW09Y1tiKzQ4Pj4yXXwwO2FbZz4+MF09KG18MCkhPS0xJjE7aT1lO3JldHVybiBtfDB9aD1iKzQ4fDA7YTpkb3tpZihtKXthW2w+PjBdPWNbaD4+Ml07bT1jW2IrMzY+PjJdfDA7az10Y1tjWyhjW20+PjJdfDApKzEyPj4yXSYzMV0obSxjW2IrNDA+PjJdfDAsbCxsKzF8MCxrLGosais4fDAsZil8MDtpZigoa3wwKT09MXwoa3wwKT09Mil7bT0tMTtpPWU7cmV0dXJuIG18MH1lbHNlIGlmKChrfDApPT0zKXthW2o+PjBdPWNbaD4+Ml07Y1tmPj4yXT1qKzF9Yj1iKzMyfDA7d2hpbGUoMSl7az1jW2Y+PjJdfDA7aWYoIShrPj4+MD5qPj4+MCkpe2JyZWFrIGF9bT1rKyAtMXwwO2NbZj4+Ml09bTtpZigoVmEoYVttPj4wXXwwLGNbYj4+Ml18MCl8MCk9PS0xKXtmPS0xO2JyZWFrfX1pPWU7cmV0dXJuIGZ8MH19d2hpbGUoMCk7Y1toPj4yXT1kO2FbZz4+MF09MTttPWQ7aT1lO3JldHVybiBtfDB9ZnVuY3Rpb24gRmYoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7Zj1pO2k9aSszMnwwO2g9ZisxNnwwO2o9Zis4fDA7bj1mKzR8MDttPWY7bz1iKzUyfDA7aWYoKGFbbz4+MF18MCkhPTApe2c9Yis0OHwwO2g9Y1tnPj4yXXwwO2lmKCFlKXt3PWg7aT1mO3JldHVybiB3fDB9Y1tnPj4yXT0tMTthW28+PjBdPTA7dz1oO2k9ZjtyZXR1cm4gd3wwfXA9Y1tiKzQ0Pj4yXXwwO3A9KHB8MCk+MT9wOjE7YTpkb3tpZigocHwwKT4wKXtyPWIrMzJ8MDtvPTA7d2hpbGUoMSl7cT1UYihjW3I+PjJdfDApfDA7aWYoKHF8MCk9PS0xKXtrPS0xO2JyZWFrfWFbaCtvPj4wXT1xO289bysxfDA7aWYoKG98MCk+PShwfDApKXticmVhayBhfX1pPWY7cmV0dXJuIGt8MH19d2hpbGUoMCk7Yjpkb3tpZigoYVtiKzUzPj4wXXwwKT09MCl7cj1iKzQwfDA7cz1iKzM2fDA7bz1qKzF8MDtxPWIrMzJ8MDt3aGlsZSgxKXt3PWNbcj4+Ml18MDt2PXc7dT1jW3Y+PjJdfDA7dj1jW3YrND4+Ml18MDt4PWNbcz4+Ml18MDt0PWgrcHwwO3c9dGNbY1soY1t4Pj4yXXwwKSsxNj4+Ml0mMzFdKHgsdyxoLHQsbixqLG8sbSl8MDtpZigod3wwKT09Mil7az0tMTttPTIzO2JyZWFrfWVsc2UgaWYoKHd8MCk9PTMpe209MTQ7YnJlYWt9ZWxzZSBpZigod3wwKSE9MSl7bD1wO2JyZWFrIGJ9eD1jW3I+PjJdfDA7Y1t4Pj4yXT11O2NbeCs0Pj4yXT12O2lmKChwfDApPT04KXtrPS0xO209MjM7YnJlYWt9dT1UYihjW3E+PjJdfDApfDA7aWYoKHV8MCk9PS0xKXtrPS0xO209MjM7YnJlYWt9YVt0Pj4wXT11O3A9cCsxfDB9aWYoKG18MCk9PTE0KXthW2o+PjBdPWFbaD4+MF18MDtsPXA7YnJlYWt9ZWxzZSBpZigobXwwKT09MjMpe2k9ZjtyZXR1cm4ga3wwfX1lbHNle2Fbaj4+MF09YVtoPj4wXXwwO2w9cH19d2hpbGUoMCk7ZG97aWYoIWUpe2U9YiszMnwwO3doaWxlKDEpe2lmKChsfDApPD0wKXttPTIxO2JyZWFrfWw9bCsgLTF8MDtpZigoVmEoZFtoK2w+PjBdfDAsY1tlPj4yXXwwKXwwKT09LTEpe2s9LTE7bT0yMzticmVha319aWYoKG18MCk9PTIxKXtnPWFbaj4+MF18MDticmVha31lbHNlIGlmKChtfDApPT0yMyl7aT1mO3JldHVybiBrfDB9fWVsc2V7Zz1hW2o+PjBdfDA7Y1tiKzQ4Pj4yXT1nJjI1NX19d2hpbGUoMCk7eD1nJjI1NTtpPWY7cmV0dXJuIHh8MH1mdW5jdGlvbiBHZigpe3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2I9aTtpPWkrMTZ8MDtkPWI7Zj1jW3I+PjJdfDA7Y1syMjQ0XT0xMDY2NDtYayg4OTgwfDApO2NbODk4ND4+Ml09MDtjWzg5ODg+PjJdPTA7Y1s4OTkyPj4yXT0wO2NbODk5Nj4+Ml09MDtjWzllMz4+Ml09MDtjWzkwMDQ+PjJdPTA7Y1syMjQ0XT05NzA0O2NbOTAwOD4+Ml09ZjtjWzkwMTY+PjJdPTkwMzI7Y1s5MDI0Pj4yXT0tMTthWzkwMjg+PjBdPTA7bj1jWzg5ODA+PjJdfDA7bT1uKzR8MDtjW20+PjJdPShjW20+PjJdfDApKzE7aWYoISgoY1szMzgwXXwwKT09LTEpKXtjW2Q+PjJdPTEzNTIwO2NbZCs0Pj4yXT0yMDg7Y1tkKzg+PjJdPTA7Y2coMTM1MjAsZCl9bD0oY1sxMzUyND4+Ml18MCkrIC0xfDA7az1jW24rOD4+Ml18MDtpZigoY1tuKzEyPj4yXXwwKS1rPj4yPj4+MD5sPj4+MD8oaj1jW2srKGw8PDIpPj4yXXwwLChqfDApIT0wKTowKXtjWzkwMTI+PjJdPWo7Y1s5MDIwPj4yXT1vY1tjWyhjW2o+PjJdfDApKzI0Pj4yXSYxMjddKGopfDA7bD1jWzkwMTI+PjJdfDA7YVs5MDI5Pj4wXT0ob2NbY1soY1tsPj4yXXwwKSsyOD4+Ml0mMTI3XShsKXwwKSYxO2lmKChjWzkwMjA+PjJdfDApPjgpe29rKDk1NDQpfWw9Y1ttPj4yXXwwO2NbbT4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKX1jWzIwNjZdPTEwNzk2O2NbODI3Mj4+Ml09MTA4MTY7Y1s4MjY4Pj4yXT0wO2NbODI5Nj4+Ml09ODk3NjtjWzgyODg+PjJdPTA7Y1s4MjkyPj4yXT0wO2NbODI3Nj4+Ml09NDA5ODtjWzgyODQ+PjJdPTA7Y1s4MjgwPj4yXT02O2s9ODMwNHwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4MzAwfDApO2NbODM0ND4+Ml09MDtjWzgzNDg+PjJdPS0xO2o9Y1tzPj4yXXwwO2NbMjI3MF09MTA2NjQ7WGsoOTA4NHwwKTtjWzkwODg+PjJdPTA7Y1s5MDkyPj4yXT0wO2NbOTA5Nj4+Ml09MDtjWzkxMDA+PjJdPTA7Y1s5MTA0Pj4yXT0wO2NbOTEwOD4+Ml09MDtjWzIyNzBdPTk1OTI7Y1s5MTEyPj4yXT1qO2s9Y1s5MDg0Pj4yXXwwO2w9ays0fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO2lmKCEoKGNbMzM4MF18MCk9PS0xKSl7Y1tkPj4yXT0xMzUyMDtjW2QrND4+Ml09MjA4O2NbZCs4Pj4yXT0wO2NnKDEzNTIwLGQpfW09KGNbMTM1MjQ+PjJdfDApKyAtMXwwO249Y1trKzg+PjJdfDA7aWYoKGNbaysxMj4+Ml18MCktbj4+Mj4+PjA+bT4+PjA/KGg9Y1tuKyhtPDwyKT4+Ml18MCwoaHwwKSE9MCk6MCl7bj1jW2w+PjJdfDA7Y1tsPj4yXT1uKyAtMTtpZigobnwwKT09MCl7bGNbY1soY1trPj4yXXwwKSs4Pj4yXSYyNTVdKGspfWNbOTExNj4+Ml09aDtjWzkxMjA+PjJdPTkwNDA7YVs5MTI0Pj4wXT0ob2NbY1soY1toPj4yXXwwKSsyOD4+Ml0mMTI3XShoKXwwKSYxO2NbMjA4OF09MTA4NzY7Y1s4MzU2Pj4yXT0xMDg5NjtjWzgzODA+PjJdPTkwODA7Y1s4MzcyPj4yXT0wO2NbODM3Nj4+Ml09MDtjWzgzNjA+PjJdPTQwOTg7Y1s4MzY4Pj4yXT0wO2NbODM2ND4+Ml09NjtrPTgzODh8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODM4NHwwKTtjWzg0Mjg+PjJdPTA7Y1s4NDMyPj4yXT0tMTtoPWNbcT4+Ml18MDtjWzIyODJdPTEwNjY0O1hrKDkxMzJ8MCk7Y1s5MTM2Pj4yXT0wO2NbOTE0MD4+Ml09MDtjWzkxNDQ+PjJdPTA7Y1s5MTQ4Pj4yXT0wO2NbOTE1Mj4+Ml09MDtjWzkxNTY+PjJdPTA7Y1syMjgyXT05NTkyO2NbOTE2MD4+Ml09aDttPWNbOTEzMj4+Ml18MDtuPW0rNHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtpZighKChjWzMzODBdfDApPT0tMSkpe2NbZD4+Ml09MTM1MjA7Y1tkKzQ+PjJdPTIwODtjW2QrOD4+Ml09MDtjZygxMzUyMCxkKX1sPShjWzEzNTI0Pj4yXXwwKSsgLTF8MDtrPWNbbSs4Pj4yXXwwO2lmKChjW20rMTI+PjJdfDApLWs+PjI+Pj4wPmw+Pj4wPyhnPWNbaysobDw8Mik+PjJdfDAsKGd8MCkhPTApOjApe2w9Y1tuPj4yXXwwO2Nbbj4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbbT4+Ml18MCkrOD4+Ml0mMjU1XShtKX1jWzkxNjQ+PjJdPWc7Y1s5MTY4Pj4yXT05MDQ4O2FbOTE3Mj4+MF09KG9jW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjEyN10oZyl8MCkmMTtjWzIxMTBdPTEwODc2O2NbODQ0ND4+Ml09MTA4OTY7Y1s4NDY4Pj4yXT05MTI4O2NbODQ2MD4+Ml09MDtjWzg0NjQ+PjJdPTA7Y1s4NDQ4Pj4yXT00MDk4O2NbODQ1Nj4+Ml09MDtjWzg0NTI+PjJdPTY7az04NDc2fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg0NzJ8MCk7Y1s4NTE2Pj4yXT0wO2NbODUyMD4+Ml09LTE7az1jWyhjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg0NjQ+PjJdfDA7Y1syMTMyXT0xMDg3NjtjWzg1MzI+PjJdPTEwODk2O2NbODU1Nj4+Ml09aztjWzg1NDg+PjJdPShrfDApPT0wJjE7Y1s4NTUyPj4yXT0wO2NbODUzNj4+Ml09NDA5ODtjWzg1NDQ+PjJdPTA7Y1s4NTQwPj4yXT02O2s9ODU2NHwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4NTYwfDApO2NbODYwND4+Ml09MDtjWzg2MDg+PjJdPS0xO2NbKGNbKGNbMjA2Nl18MCkrIC0xMj4+Ml18MCkrODMzNj4+Ml09ODM1MjtnPShjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg0NDR8MDtjW2c+PjJdPWNbZz4+Ml18ODE5MjtjWyhjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg1MTI+PjJdPTgzNTI7Y1syMjk0XT0xMDcyODtYayg5MTgwfDApO2NbOTE4ND4+Ml09MDtjWzkxODg+PjJdPTA7Y1s5MTkyPj4yXT0wO2NbOTE5Nj4+Ml09MDtjWzkyMDA+PjJdPTA7Y1s5MjA0Pj4yXT0wO2NbMjI5NF09OTQ0ODtjWzkyMDg+PjJdPWY7Y1s5MjE2Pj4yXT05MDU2O2NbOTIyND4+Ml09LTE7YVs5MjI4Pj4wXT0wO2Y9Y1s5MTgwPj4yXXwwO2c9Zis0fDA7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxO2lmKCEoKGNbMzM4Ml18MCk9PS0xKSl7Y1tkPj4yXT0xMzUyODtjW2QrND4+Ml09MjA4O2NbZCs4Pj4yXT0wO2NnKDEzNTI4LGQpfWs9KGNbMTM1MzI+PjJdfDApKyAtMXwwO2w9Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbD4+Mj4+PjA+az4+PjA/KGU9Y1tsKyhrPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7Y1s5MjEyPj4yXT1lO2NbOTIyMD4+Ml09b2NbY1soY1tlPj4yXXwwKSsyND4+Ml0mMTI3XShlKXwwO249Y1s5MjEyPj4yXXwwO2FbOTIyOT4+MF09KG9jW2NbKGNbbj4+Ml18MCkrMjg+PjJdJjEyN10obil8MCkmMTtpZigoY1s5MjIwPj4yXXwwKT44KXtvayg5NTQ0KX1uPWNbZz4+Ml18MDtjW2c+PjJdPW4rIC0xO2lmKChufDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9Y1syMTU0XT0xMDgzNjtjWzg2MjQ+PjJdPTEwODU2O2NbODYyMD4+Ml09MDtjWzg2NDg+PjJdPTkxNzY7Y1s4NjQwPj4yXT0wO2NbODY0ND4+Ml09MDtjWzg2Mjg+PjJdPTQwOTg7Y1s4NjM2Pj4yXT0wO2NbODYzMj4+Ml09NjtrPTg2NTZ8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODY1MnwwKTtjWzg2OTY+PjJdPTA7Y1s4NzAwPj4yXT0tMTtjWzIzMDhdPTEwNzI4O1hrKDkyMzZ8MCk7Y1s5MjQwPj4yXT0wO2NbOTI0ND4+Ml09MDtjWzkyNDg+PjJdPTA7Y1s5MjUyPj4yXT0wO2NbOTI1Nj4+Ml09MDtjWzkyNjA+PjJdPTA7Y1syMzA4XT05MzM2O2NbOTI2ND4+Ml09ajtlPWNbOTIzNj4+Ml18MDtmPWUrNHwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMTtpZighKChjWzMzODJdfDApPT0tMSkpe2NbZD4+Ml09MTM1Mjg7Y1tkKzQ+PjJdPTIwODtjW2QrOD4+Ml09MDtjZygxMzUyOCxkKX1nPShjWzEzNTMyPj4yXXwwKSsgLTF8MDtqPWNbZSs4Pj4yXXwwO2Rve2lmKChjW2UrMTI+PjJdfDApLWo+PjI+Pj4wPmc+Pj4wKXtnPWNbaisoZzw8Mik+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfW49Y1tmPj4yXXwwO2NbZj4+Ml09bisgLTE7aWYoKG58MCk9PTApe2xjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKX1jWzkyNjg+PjJdPWc7Y1s5MjcyPj4yXT05MDY0O2FbOTI3Nj4+MF09KG9jW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjEyN10oZyl8MCkmMTtjWzIxNzZdPTEwOTE2O2NbODcwOD4+Ml09MTA5MzY7Y1s4NzMyPj4yXT05MjMyO2NbODcyND4+Ml09MDtjWzg3Mjg+PjJdPTA7Y1s4NzEyPj4yXT00MDk4O2NbODcyMD4+Ml09MDtjWzg3MTY+PjJdPTY7az04NzQwfDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg3MzZ8MCk7Y1s4NzgwPj4yXT0wO2NbODc4ND4+Ml09LTE7Y1syMzIwXT0xMDcyODtYayg5Mjg0fDApO2NbOTI4OD4+Ml09MDtjWzkyOTI+PjJdPTA7Y1s5Mjk2Pj4yXT0wO2NbOTMwMD4+Ml09MDtjWzkzMDQ+PjJdPTA7Y1s5MzA4Pj4yXT0wO2NbMjMyMF09OTMzNjtjWzkzMTI+PjJdPWg7Zj1jWzkyODQ+PjJdfDA7ZT1mKzR8MDtjW2U+PjJdPShjW2U+PjJdfDApKzE7aWYoISgoY1szMzgyXXwwKT09LTEpKXtjW2Q+PjJdPTEzNTI4O2NbZCs0Pj4yXT0yMDg7Y1tkKzg+PjJdPTA7Y2coMTM1MjgsZCl9ZD0oY1sxMzUzMj4+Ml18MCkrIC0xfDA7Zz1jW2YrOD4+Ml18MDtkb3tpZigoY1tmKzEyPj4yXXwwKS1nPj4yPj4+MD5kPj4+MCl7ZD1jW2crKGQ8PDIpPj4yXXwwO2lmKChkfDApPT0wKXticmVha31uPWNbZT4+Ml18MDtjW2U+PjJdPW4rIC0xO2lmKChufDApIT0wKXtjWzkzMTY+PjJdPWQ7Y1s5MzIwPj4yXT05MDcyO2s9Y1tkPj4yXXwwO2s9aysyOHwwO2s9Y1trPj4yXXwwO2s9b2NbayYxMjddKGQpfDA7az1rJjE7YVs5MzI0Pj4wXT1rO2NbMjE5OF09MTA5MTY7Y1s4Nzk2Pj4yXT0xMDkzNjtjWzg4MjA+PjJdPTkyODA7Y1s4ODEyPj4yXT0wO2NbODgxNj4+Ml09MDtjWzg4MDA+PjJdPTQwOTg7Y1s4ODA4Pj4yXT0wO2NbODgwND4+Ml09NjtrPTg4Mjh8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODgyNHwwKTtjWzg4Njg+PjJdPTA7Y1s4ODcyPj4yXT0tMTtrPWNbMjE5OF18MDtrPWsrIC0xMnwwO2s9Y1trPj4yXXwwO2s9aysyNHwwO2s9ODc5MitrfDA7az1jW2s+PjJdfDA7Y1syMjIwXT0xMDkxNjtjWzg4ODQ+PjJdPTEwOTM2O2NbODkwOD4+Ml09aztrPShrfDApPT0wO2s9ayYxO2NbODkwMD4+Ml09aztjWzg5MDQ+PjJdPTA7Y1s4ODg4Pj4yXT00MDk4O2NbODg5Nj4+Ml09MDtjWzg4OTI+PjJdPTY7az04OTE2fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg5MTJ8MCk7Y1s4OTU2Pj4yXT0wO2NbODk2MD4+Ml09LTE7bj1jWzIxNTRdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNzJ8MDtuPTg2MTYrbnwwO2Nbbj4+Ml09ODcwNDtuPWNbMjE5OF18MDtuPW4rIC0xMnwwO249Y1tuPj4yXXwwO249bis0fDA7bj04NzkyK258MDttPWNbbj4+Ml18MDttPW18ODE5MjtjW24+PjJdPW07bj1jWzIxOThdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNzJ8MDtuPTg3OTIrbnwwO2Nbbj4+Ml09ODcwNDtjYygyMTIsODk2OCxwfDApfDA7aT1iO3JldHVybn1sY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZik7Y1s5MzE2Pj4yXT1kO2NbOTMyMD4+Ml09OTA3MjtrPWNbZD4+Ml18MDtrPWsrMjh8MDtrPWNbaz4+Ml18MDtrPW9jW2smMTI3XShkKXwwO2s9ayYxO2FbOTMyND4+MF09aztjWzIxOThdPTEwOTE2O2NbODc5Nj4+Ml09MTA5MzY7Y1s4ODIwPj4yXT05MjgwO2NbODgxMj4+Ml09MDtjWzg4MTY+PjJdPTA7Y1s4ODAwPj4yXT00MDk4O2NbODgwOD4+Ml09MDtjWzg4MDQ+PjJdPTY7az04ODI4fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg4MjR8MCk7Y1s4ODY4Pj4yXT0wO2NbODg3Mj4+Ml09LTE7az1jWzIxOThdfDA7az1rKyAtMTJ8MDtrPWNbaz4+Ml18MDtrPWsrMjR8MDtrPTg3OTIra3wwO2s9Y1trPj4yXXwwO2NbMjIyMF09MTA5MTY7Y1s4ODg0Pj4yXT0xMDkzNjtjWzg5MDg+PjJdPWs7az0oa3wwKT09MDtrPWsmMTtjWzg5MDA+PjJdPWs7Y1s4OTA0Pj4yXT0wO2NbODg4OD4+Ml09NDA5ODtjWzg4OTY+PjJdPTA7Y1s4ODkyPj4yXT02O2s9ODkxNnwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4OTEyfDApO2NbODk1Nj4+Ml09MDtjWzg5NjA+PjJdPS0xO249Y1syMTU0XXwwO249bisgLTEyfDA7bj1jW24+PjJdfDA7bj1uKzcyfDA7bj04NjE2K258MDtjW24+PjJdPTg3MDQ7bj1jWzIxOThdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNHwwO249ODc5MitufDA7bT1jW24+PjJdfDA7bT1tfDgxOTI7Y1tuPj4yXT1tO249Y1syMTk4XXwwO249bisgLTEyfDA7bj1jW24+PjJdfDA7bj1uKzcyfDA7bj04NzkyK258MDtjW24+PjJdPTg3MDQ7Y2MoMjEyLDg5NjgscHwwKXwwO2k9YjtyZXR1cm59fXdoaWxlKDApO249WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtuPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBIZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5MDQ7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWVsc2V7UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufX1mdW5jdGlvbiBJZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5MDQ7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gSmYoYSl7YT1hfDA7cmV0dXJuIGNbYSs0Pj4yXXwwfWZ1bmN0aW9uIEtmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZWxzZXtSYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59fWZ1bmN0aW9uIExmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBNZihhKXthPWF8MDtyZXR1cm4gY1thKzQ+PjJdfDB9ZnVuY3Rpb24gTmYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTA0O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1lbHNle1JiKGF8MCk7dm4oYSk7aT1iO3JldHVybn19ZnVuY3Rpb24gT2YoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO2NbYT4+Ml09ZDtjW2ErND4+Ml09YjtyZXR1cm59ZnVuY3Rpb24gUGYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWU7cWNbY1soY1thPj4yXXwwKSsxMj4+Ml0mMzFdKGYsYSxiKTtpZigoY1tmKzQ+PjJdfDApIT0oY1tkKzQ+PjJdfDApKXthPTA7aT1lO3JldHVybiBhfDB9YT0oY1tmPj4yXXwwKT09KGNbZD4+Ml18MCk7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gUWYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT1pO2lmKChjW2IrND4+Ml18MCkhPShhfDApKXthPTA7aT1lO3JldHVybiBhfDB9YT0oY1tiPj4yXXwwKT09KGR8MCk7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gUmYoYSl7YT1hfDA7cmV0dXJuIDEwMDgwfWZ1bmN0aW9uIFNmKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2Q9aTtlPU5iKGV8MCl8MDtmPUpuKGV8MCl8MDtpZihmPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWlmKGY+Pj4wPDExKXthW2I+PjBdPWY8PDE7aj1iKzF8MDtMbihqfDAsZXwwLGZ8MCl8MDtqPWorZnwwO2Fbaj4+MF09MDtpPWQ7cmV0dXJufWc9ZisxNiYtMTY7aD0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aj11bihoKXwwO2lmKChqfDApIT0wKXtoPTExO2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXtoPTk7YnJlYWt9c2NbaiYzMV0oKX1pZigoaHwwKT09OSl7aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9ZWxzZSBpZigoaHwwKT09MTEpe2NbYis4Pj4yXT1qO2NbYj4+Ml09Z3wxO2NbYis0Pj4yXT1mO0xuKGp8MCxlfDAsZnwwKXwwO2o9aitmfDA7YVtqPj4wXT0wO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIFRmKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBVZihhKXthPWF8MDtyZXR1cm4gMTAxMDR9ZnVuY3Rpb24gVmYoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7ZD1pO2U9TmIoZXwwKXwwO2Y9Sm4oZXwwKXwwO2lmKGY+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9aWYoZj4+PjA8MTEpe2FbYj4+MF09Zjw8MTtqPWIrMXwwO0xuKGp8MCxlfDAsZnwwKXwwO2o9aitmfDA7YVtqPj4wXT0wO2k9ZDtyZXR1cm59Zz1mKzE2Ji0xNjtoPShnfDApPT0wPzE6Zzt3aGlsZSgxKXtqPXVuKGgpfDA7aWYoKGp8MCkhPTApe2g9MTE7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2g9OTticmVha31zY1tqJjMxXSgpfWlmKChofDApPT05KXtqPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX1lbHNlIGlmKChofDApPT0xMSl7Y1tiKzg+PjJdPWo7Y1tiPj4yXT1nfDE7Y1tiKzQ+PjJdPWY7TG4oanwwLGV8MCxmfDApfDA7aj1qK2Z8MDthW2o+PjBdPTA7aT1kO3JldHVybn19ZnVuY3Rpb24gV2YoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Q9aTtpZigoYVsxMDA5Nl18MCk9PTA/KFFhKDEwMDk2KXwwKSE9MDowKXtjWzI1MjJdPTEwMjg4OyRhKDEwMDk2KX1jW2I+PjJdPWU7Y1tiKzQ+PjJdPTEwMDg4O2k9ZDtyZXR1cm59ZnVuY3Rpb24gWGYoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFlmKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO2c9aTtpPWkrNDh8MDtvPWcrMjR8MDtsPWcrMTJ8MDtoPWc7cD1KbihmfDApfDA7aWYocD4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1kb3tpZihwPj4+MDwxMSl7YVtoPj4wXT1wPDwxO209aDtxPWgrMXwwfWVsc2V7bT1wKzE2Ji0xNjtyPShtfDApPT0wPzE6bTt3aGlsZSgxKXtxPXVuKHIpfDA7aWYoKHF8MCkhPTApe2o9MTE7YnJlYWt9cT1jWzU2NjZdfDA7Y1s1NjY2XT1xKzA7aWYoKHF8MCk9PTApe2JyZWFrfXNjW3EmMzFdKCl9aWYoKGp8MCk9PTExKXtjW2grOD4+Ml09cTtjW2g+PjJdPW18MTtjW2grND4+Ml09cDttPWg7YnJlYWt9cj1YYSg0KXwwO2Nbcj4+Ml09MjI2ODA7d2IocnwwLDIyNzI4LDIwNil9fXdoaWxlKDApO0xuKHF8MCxmfDAscHwwKXwwO2FbcStwPj4wXT0wO2lmKChkfDApIT0wKXtwPWFbbT4+MF18MDtpZigocCYxKT09MCl7cD0ocCYyNTUpPj4+MX1lbHNle3A9Y1toKzQ+PjJdfDB9aWYoKHB8MCkhPTApe2pnKGgsMTAxMjgsMil9cWNbY1soY1tlPj4yXXwwKSsyND4+Ml0mMzFdKG8sZSxkKTtmPWFbbz4+MF18MDtpZigoZiYxKT09MCl7cD1vKzF8MDtmPShmJjI1NSk+Pj4xfWVsc2V7cD1jW28rOD4+Ml18MDtmPWNbbys0Pj4yXXwwfWpnKGgscCxmKTtpZighKChhW28+PjBdJjEpPT0wKT8obj1jW28rOD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9fWNbbCswPj4yXT1jW20rMD4+Ml07Y1tsKzQ+PjJdPWNbbSs0Pj4yXTtjW2wrOD4+Ml09Y1ttKzg+PjJdO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2NbYj4+Ml09OTkyODtuPWIrNHwwO2lmKChhW2w+PjBdJjEpPT0wKXtmPWwrMXwwfWVsc2V7Zj1jW2wrOD4+Ml18MH1wPUpuKGZ8MCl8MDtvPXArMTN8MDtvPShvfDApPT0wPzE6bzt3aGlsZSgxKXtxPXVuKG8pfDA7aWYoKHF8MCkhPTApe2JyZWFrfXE9Y1s1NjY2XXwwO2NbNTY2Nl09cSswO2lmKChxfDApPT0wKXtqPTMzO2JyZWFrfXNjW3EmMzFdKCl9aWYoKGp8MCk9PTMzKXtyPVhhKDQpfDA7Y1tyPj4yXT0yMjY4MDt3YihyfDAsMjI3MjgsMjA2KX1jW3ErND4+Ml09cDtjW3E+PjJdPXA7cj1xKzEyfDA7Y1tuPj4yXT1yO2NbcSs4Pj4yXT0wO0xuKHJ8MCxmfDAscCsxfDApfDA7aWYoISgoYVtsPj4wXSYxKT09MCk/KGs9Y1tsKzg+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKChhW20+PjBdJjEpPT0wKXtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn1oPWNbaCs4Pj4yXXwwO2lmKChofDApPT0wKXtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn12bihoKTtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn1mdW5jdGlvbiBaZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIF9mKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiAkZihhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBhZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn0KCgoKZnVuY3Rpb24gYmcoYSl7YT1hfDA7dmFyIGI9MDtiPWk7QmIoYXwwKXwwO2k9YjtyZXR1cm59ZnVuY3Rpb24gY2coYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pOyRiKDEwNTY4KXwwO2lmKChjW2E+PjJdfDApPT0xKXtkb3tHYSgxMDU5MiwxMDU2OCl8MH13aGlsZSgoY1thPj4yXXwwKT09MSl9aWYoKGNbYT4+Ml18MCkhPTApe0NiKDEwNTY4KXwwO2k9ZTtyZXR1cm59Y1thPj4yXT0xO0NiKDEwNTY4KXwwO2c9Yis0fDA7Zj1kW2c+PjBdfGRbZysxPj4wXTw8OHxkW2crMj4+MF08PDE2fGRbZyszPj4wXTw8MjQ7Zz1nKzR8MDtnPWRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNDtiPShjW2I+PjJdfDApKyhnPj4xKXwwO2lmKChnJjF8MCkhPTApe2Y9Y1soY1tiPj4yXXwwKStmPj4yXXwwfWxjW2YmMjU1XShiKTskYigxMDU2OCl8MDtjW2E+PjJdPS0xO0NiKDEwNTY4KXwwO0ViKDEwNTkyKXwwO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZGcoKXt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9WGEoOCl8MDtjW2I+PjJdPTk5MDQ7d2hpbGUoMSl7ZT11bigyNSl8MDtpZigoZXwwKSE9MCl7ZD03O2JyZWFrfWU9Y1s1NjY2XXwwO2NbNTY2Nl09ZSswO2lmKChlfDApPT0wKXticmVha31zY1tlJjMxXSgpfWlmKChkfDApPT03KXtjW2UrND4+Ml09MTI7Y1tlPj4yXT0xMjtmPWUrMTJ8MDtjW2IrND4+Ml09ZjtjW2UrOD4+Ml09MDtmPWYrMHwwO2U9MTA2NDB8MDtkPWYrMTN8MDtkb3thW2Y+PjBdPWFbZT4+MF18MDtmPWYrMXwwO2U9ZSsxfDB9d2hpbGUoKGZ8MCk8KGR8MCkpO2NbYj4+Ml09OTk4NDt3YihifDAsMTAwMjQsMTA0KX1mPVhhKDQpfDA7Y1tmPj4yXT0yMjY4MDt3YihmfDAsMjI3MjgsMjA2KX1mdW5jdGlvbiBlZyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aWYoZT4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1pZihlPj4+MDwxMSl7YVtiPj4wXT1lPDwxO2o9YisxfDA7TG4oanwwLGR8MCxlfDApfDA7aj1qK2V8MDthW2o+PjBdPTA7aT1mO3JldHVybn1nPWUrMTYmLTE2O2g9KGd8MCk9PTA/MTpnO3doaWxlKDEpe2o9dW4oaCl8MDtpZigoanwwKSE9MCl7aD0xMTticmVha31qPWNbNTY2Nl18MDtjWzU2NjZdPWorMDtpZigoanwwKT09MCl7aD05O2JyZWFrfXNjW2omMzFdKCl9aWYoKGh8MCk9PTkpe2o9WGEoNCl8MDtjW2o+PjJdPTIyNjgwO3diKGp8MCwyMjcyOCwyMDYpfWVsc2UgaWYoKGh8MCk9PTExKXtjW2IrOD4+Ml09ajtjW2I+PjJdPWd8MTtjW2IrND4+Ml09ZTtMbihqfDAsZHwwLGV8MCl8MDtqPWorZXwwO2Fbaj4+MF09MDtpPWY7cmV0dXJufX1mdW5jdGlvbiBmZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aWYoISgoYVtiPj4wXSYxKT09MCk/KGU9Y1tiKzg+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWk9ZDtyZXR1cm59ZnVuY3Rpb24gZ2coYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtmPWk7ZT1KbihkfDApfDA7aD1hW2I+PjBdfDA7aWYoKGgmMSk9PTApe2c9MTB9ZWxzZXtnPWNbYj4+Ml18MDtoPWcmMjU1O2c9KGcmLTIpKyAtMXwwfWo9KGgmMSk9PTA7aWYoZz4+PjA8ZT4+PjApe2lmKGope2g9KGgmMjU1KT4+PjF9ZWxzZXtoPWNbYis0Pj4yXXwwfWtnKGIsZyxlLWd8MCxoLDAsaCxlLGQpO2k9ZjtyZXR1cm59aWYoail7Zz1iKzF8MH1lbHNle2c9Y1tiKzg+PjJdfDB9TW4oZ3wwLGR8MCxlfDApfDA7YVtnK2U+PjBdPTA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZTw8MTtpPWY7cmV0dXJufWVsc2V7Y1tiKzQ+PjJdPWU7aT1mO3JldHVybn19ZnVuY3Rpb24gaGcoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpZigoZHwwKT09MCl7aT1lO3JldHVybn1oPWFbYj4+MF18MDtpZigoaCYxKT09MCl7Zz0xMH1lbHNle2g9Y1tiPj4yXXwwO2c9KGgmLTIpKyAtMXwwO2g9aCYyNTV9aWYoKGgmMSk9PTApe2Y9KGgmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKChnLWZ8MCk+Pj4wPGQ+Pj4wKXtsZyhiLGcsZC1nK2Z8MCxmLGYsMCk7aD1hW2I+PjBdfDB9aWYoKGgmMSk9PTApe2c9YisxfDB9ZWxzZXtnPWNbYis4Pj4yXXwwfU5uKGcrZnwwLDAsZHwwKXwwO2Q9ZitkfDA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZDw8MX1lbHNle2NbYis0Pj4yXT1kfWFbZytkPj4wXT0wO2k9ZTtyZXR1cm59ZnVuY3Rpb24gaWcoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZD1pO2g9YVtiPj4wXXwwO2lmKChoJjEpPT0wKXtsPTEwfWVsc2V7aD1jW2I+PjJdfDA7bD0oaCYtMikrIC0xfDA7aD1oJjI1NX1qPShoJjEpPT0wO2lmKGope2Y9KGgmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKGY+Pj4wPDExKXtlPTEwfWVsc2V7ZT0oZisxNiYtMTYpKyAtMXwwfWlmKChlfDApPT0obHwwKSl7aT1kO3JldHVybn1kb3tpZigoZXwwKT09MTApe2s9YisxfDA7Zz1jW2IrOD4+Ml18MDtpZihqKXtMbihrfDAsZ3wwLCgoaCYyNTUpPj4+MSkrMXwwKXwwO2g9aztrPTA7aj1nO2c9Mjd9ZWxzZXtoPWs7az0wO2o9ZztnPTI1fX1lbHNle2s9ZSsxfDA7az0oa3wwKT09MD8xOms7YTpkb3tpZihlPj4+MD5sPj4+MCl7d2hpbGUoMSl7bD11bihrKXwwO2lmKChsfDApIT0wKXticmVhayBhfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXticmVha31zY1tsJjMxXSgpfWw9WGEoNCl8MDtjW2w+PjJdPTIyNjgwO3diKGx8MCwyMjcyOCwyMDYpfWVsc2V7d2hpbGUoMSl7bD11bihrKXwwO2lmKChsfDApIT0wKXticmVhayBhfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXticmVha31zY1tsJjMxXSgpfWw9WGEoNCl8MDtjW2w+PjJdPTIyNjgwO3diKGx8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihqKXtMbihsfDAsYisxfDAsKChoJjI1NSk+Pj4xKSsxfDApfDA7aD1sO2JyZWFrfWVsc2V7aD1sO2s9MTtqPWNbYis4Pj4yXXwwO2c9MjU7YnJlYWt9fX13aGlsZSgwKTtpZigoZ3wwKT09MjUpe0xuKGh8MCxqfDAsKGNbYis0Pj4yXXwwKSsxfDApfDA7Zz0yN31kb3tpZigoZ3wwKT09Mjcpe2lmKChqfDApPT0wKXtpZihrKXticmVha319ZWxzZXt2bihqKTtpZihrKXticmVha319YVtiPj4wXT1mPDwxO2k9ZDtyZXR1cm59fXdoaWxlKDApO2NbYj4+Ml09ZSsxfDE7Y1tiKzQ+PjJdPWY7Y1tiKzg+PjJdPWg7aT1kO3JldHVybn1mdW5jdGlvbiBqZyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aj1hW2I+PjBdfDA7aWYoKGomMSk9PTApe2c9MTB9ZWxzZXtqPWNbYj4+Ml18MDtnPShqJi0yKSsgLTF8MDtqPWomMjU1fWg9KGomMSk9PTA7aWYoaCl7aj0oaiYyNTUpPj4+MX1lbHNle2o9Y1tiKzQ+PjJdfDB9aWYoKGctanwwKT4+PjA8ZT4+PjApe2tnKGIsZyxlLWcranwwLGosaiwwLGUsZCk7aT1mO3JldHVybn1pZigoZXwwKT09MCl7aT1mO3JldHVybn1pZihoKXtnPWIrMXwwfWVsc2V7Zz1jW2IrOD4+Ml18MH1MbihnK2p8MCxkfDAsZXwwKXwwO2U9aitlfDA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZTw8MX1lbHNle2NbYis0Pj4yXT1lfWFbZytlPj4wXT0wO2k9ZjtyZXR1cm59ZnVuY3Rpb24ga2coYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MDtsPWk7aWYoKC0xOC1kfDApPj4+MDxlPj4+MCl7ZGcoKX1pZigoYVtiPj4wXSYxKT09MCl7bT1iKzF8MH1lbHNle209Y1tiKzg+PjJdfDB9aWYoZD4+PjA8MjE0NzQ4MzYyMyl7ZT1lK2R8MDtwPWQ8PDE7ZT1lPj4+MDxwPj4+MD9wOmU7aWYoZT4+PjA8MTEpe2U9MTF9ZWxzZXtlPWUrMTYmLTE2fX1lbHNle2U9LTE3fW89KGV8MCk9PTA/MTplO3doaWxlKDEpe3A9dW4obyl8MDtpZigocHwwKSE9MCl7YnJlYWt9cD1jWzU2NjZdfDA7Y1s1NjY2XT1wKzA7aWYoKHB8MCk9PTApe249MTM7YnJlYWt9c2NbcCYzMV0oKX1pZigobnwwKT09MTMpe3A9WGEoNCl8MDtjW3A+PjJdPTIyNjgwO3diKHB8MCwyMjcyOCwyMDYpfWlmKChnfDApIT0wKXtMbihwfDAsbXwwLGd8MCl8MH1pZigoanwwKSE9MCl7TG4ocCtnfDAsa3wwLGp8MCl8MH1uPWYtaHwwO2lmKChufDApIT0oZ3wwKSl7TG4ocCsoaitnKXwwLG0rKGgrZyl8MCxuLWd8MCl8MH1pZigoZHwwKT09MTB8KG18MCk9PTApe289Yis4fDA7Y1tvPj4yXT1wO289ZXwxO2NbYj4+Ml09bztvPW4ranwwO2U9Yis0fDA7Y1tlPj4yXT1vO3A9cCtvfDA7YVtwPj4wXT0wO2k9bDtyZXR1cm59dm4obSk7bz1iKzh8MDtjW28+PjJdPXA7bz1lfDE7Y1tiPj4yXT1vO289bitqfDA7ZT1iKzR8MDtjW2U+PjJdPW87cD1wK298MDthW3A+PjBdPTA7aT1sO3JldHVybn1mdW5jdGlvbiBsZyhiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTA7bD1pO2lmKCgtMTctZHwwKT4+PjA8ZT4+PjApe2RnKCl9aWYoKGFbYj4+MF0mMSk9PTApe2s9YisxfDB9ZWxzZXtrPWNbYis4Pj4yXXwwfWlmKGQ+Pj4wPDIxNDc0ODM2MjMpe2U9ZStkfDA7bj1kPDwxO2U9ZT4+PjA8bj4+PjA/bjplO2lmKGU+Pj4wPDExKXtlPTExfWVsc2V7ZT1lKzE2Ji0xNn19ZWxzZXtlPS0xN31tPShlfDApPT0wPzE6ZTt3aGlsZSgxKXtuPXVuKG0pfDA7aWYoKG58MCkhPTApe2JyZWFrfW49Y1s1NjY2XXwwO2NbNTY2Nl09biswO2lmKChufDApPT0wKXtqPTEzO2JyZWFrfXNjW24mMzFdKCl9aWYoKGp8MCk9PTEzKXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1pZigoZ3wwKSE9MCl7TG4obnwwLGt8MCxnfDApfDB9aWYoKGZ8MCkhPShnfDApKXtMbihuKyhoK2cpfDAsaytnfDAsZi1nfDApfDB9aWYoKGR8MCk9PTEwfChrfDApPT0wKXttPWIrOHwwO2NbbT4+Ml09bjtuPWV8MTtjW2I+PjJdPW47aT1sO3JldHVybn12bihrKTttPWIrOHwwO2NbbT4+Ml09bjtuPWV8MTtjW2I+PjJdPW47aT1sO3JldHVybn1mdW5jdGlvbiBtZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aWYoISgoYVtiPj4wXSYxKT09MCk/KGU9Y1tiKzg+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWk9ZDtyZXR1cm59ZnVuY3Rpb24gbmcoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtlPWk7Zj1kO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPT0wKXticmVha31lbHNle2Y9Zis0fDB9fWs9ZDtqPWYta3wwO2Y9aj4+MjtsPWFbYj4+MF18MDtpZigobCYxKT09MCl7Zz0xfWVsc2V7bD1jW2I+PjJdfDA7Zz0obCYtMikrIC0xfDA7bD1sJjI1NX1pZighKGc+Pj4wPGY+Pj4wKSl7aWYoKGwmMSk9PTApe2c9Yis0fDB9ZWxzZXtnPWNbYis4Pj4yXXwwfWg9KGZ8MCk9PTA7aWYoZy1rPj4yPj4+MDxmPj4+MCl7aWYoIWgpe2g9Zjtkb3toPWgrIC0xfDA7Y1tnKyhoPDwyKT4+Ml09Y1tkKyhoPDwyKT4+Ml19d2hpbGUoKGh8MCkhPTApfX1lbHNle2lmKCFoKXtoPWc7az1mO3doaWxlKDEpe2s9aysgLTF8MDtjW2g+PjJdPWNbZD4+Ml07aWYoKGt8MCk9PTApe2JyZWFrfWVsc2V7ZD1kKzR8MDtoPWgrNHwwfX19fWNbZysoZjw8Mik+PjJdPTA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09aj4+PjE7aT1lO3JldHVybn1lbHNle2NbYis0Pj4yXT1mO2k9ZTtyZXR1cm59fWlmKCgxMDczNzQxODA2LWd8MCk+Pj4wPChmLWd8MCk+Pj4wKXtkZygpfWlmKChsJjEpPT0wKXtqPWIrNHwwfWVsc2V7aj1jW2IrOD4+Ml18MH1pZihnPj4+MDw1MzY4NzA4ODcpe2s9Zzw8MTtrPWY+Pj4wPGs+Pj4wP2s6ZjtpZihrPj4+MDwyKXtrPTJ9ZWxzZXtrPWsrNCYtNH19ZWxzZXtrPTEwNzM3NDE4MDd9bT1rPDwyO209KG18MCk9PTA/MTptO3doaWxlKDEpe2w9dW4obSl8MDtpZigobHwwKSE9MCl7YnJlYWt9bD1jWzU2NjZdfDA7Y1s1NjY2XT1sKzA7aWYoKGx8MCk9PTApe2g9Mjk7YnJlYWt9c2NbbCYzMV0oKX1pZigoaHwwKT09Mjkpe209WGEoNCl8MDtjW20+PjJdPTIyNjgwO3diKG18MCwyMjcyOCwyMDYpfWlmKChmfDApIT0wKXtoPWY7bT1sO3doaWxlKDEpe2g9aCsgLTF8MDtjW20+PjJdPWNbZD4+Ml07aWYoKGh8MCk9PTApe2JyZWFrfWVsc2V7ZD1kKzR8MDttPW0rNHwwfX19aWYoISgoZ3wwKT09MXwoanwwKT09MCkpe3ZuKGopfWNbYis4Pj4yXT1sO2NbYj4+Ml09a3wxO2NbYis0Pj4yXT1mO2NbbCsoZjw8Mik+PjJdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBvZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2Q9aTtnPWFbYj4+MF18MDtpZigoZyYxKT09MCl7az0xfWVsc2V7Zz1jW2I+PjJdfDA7az0oZyYtMikrIC0xfDA7Zz1nJjI1NX1oPShnJjEpPT0wO2lmKGgpe2Y9KGcmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKGY+Pj4wPDIpe2U9MX1lbHNle2U9KGYrNCYtNCkrIC0xfDB9aWYoKGV8MCk9PShrfDApKXtpPWQ7cmV0dXJufWRve2lmKChlfDApPT0xKXtuPWIrNHwwO2w9Y1tiKzg+PjJdfDA7aWYoaCl7aj0wO209MTtoPTI2fWVsc2V7Zz1uO2o9MDttPTE7aD0yNX19ZWxzZXtqPShlPDwyKSs0fDA7aj0oanwwKT09MD8xOmo7YTpkb3tpZihlPj4+MD5rPj4+MCl7d2hpbGUoMSl7bj11bihqKXwwO2lmKChufDApIT0wKXticmVhayBhfWs9Y1s1NjY2XXwwO2NbNTY2Nl09ayswO2lmKChrfDApPT0wKXticmVha31zY1trJjMxXSgpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpfWVsc2V7d2hpbGUoMSl7bj11bihqKXwwO2lmKChufDApIT0wKXticmVhayBhfWs9Y1s1NjY2XXwwO2NbNTY2Nl09ayswO2lmKChrfDApPT0wKXticmVha31zY1trJjMxXSgpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihoKXtqPTE7bD1iKzR8MDttPTA7aD0yNjticmVha31lbHNle2c9bjtqPTE7bD1jW2IrOD4+Ml18MDttPTE7aD0yNTticmVha319fXdoaWxlKDApO2lmKChofDApPT0yNSl7az1jW2IrND4+Ml18MH1lbHNlIGlmKChofDApPT0yNil7az0oZyYyNTUpPj4+MTtnPW59az1rKzF8MDtpZigoa3wwKSE9MCl7bj1sO2g9Zzt3aGlsZSgxKXtrPWsrIC0xfDA7Y1toPj4yXT1jW24+PjJdO2lmKChrfDApPT0wKXticmVha31lbHNle249bis0fDA7aD1oKzR8MH19fWlmKCEobV4xfChsfDApPT0wKSl7dm4obCl9aWYoail7Y1tiPj4yXT1lKzF8MTtjW2IrND4+Ml09ZjtjW2IrOD4+Ml09ZztpPWQ7cmV0dXJufWVsc2V7YVtiPj4wXT1mPDwxO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIHBnKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtrPWk7aWYoKDEwNzM3NDE4MDctZHwwKT4+PjA8ZT4+PjApe2RnKCl9aWYoKGFbYj4+MF0mMSk9PTApe2w9Yis0fDB9ZWxzZXtsPWNbYis4Pj4yXXwwfWlmKGQ+Pj4wPDUzNjg3MDg4Nyl7ZT1lK2R8MDtwPWQ8PDE7ZT1lPj4+MDxwPj4+MD9wOmU7aWYoZT4+PjA8Mil7ZT0yfWVsc2V7ZT1lKzQmLTR9fWVsc2V7ZT0xMDczNzQxODA3fW89ZTw8MjtvPShvfDApPT0wPzE6bzt3aGlsZSgxKXttPXVuKG8pfDA7aWYoKG18MCkhPTApe2JyZWFrfW09Y1s1NjY2XXwwO2NbNTY2Nl09bSswO2lmKChtfDApPT0wKXtuPTEzO2JyZWFrfXNjW20mMzFdKCl9aWYoKG58MCk9PTEzKXtwPVhhKDQpfDA7Y1twPj4yXT0yMjY4MDt3YihwfDAsMjI3MjgsMjA2KX1pZigoZ3wwKSE9MCl7bz1nO249bDtwPW07d2hpbGUoMSl7bz1vKyAtMXwwO2NbcD4+Ml09Y1tuPj4yXTtpZigob3wwKT09MCl7YnJlYWt9ZWxzZXtuPW4rNHwwO3A9cCs0fDB9fX1mPWYtaHwwO2lmKChmfDApIT0oZ3wwKSl7Zj1mLWd8MDtoPWwrKGgrZzw8Mil8MDtnPW0rKGorZzw8Mil8MDt3aGlsZSgxKXtmPWYrIC0xfDA7Y1tnPj4yXT1jW2g+PjJdO2lmKChmfDApPT0wKXticmVha31lbHNle2g9aCs0fDA7Zz1nKzR8MH19fWlmKChkfDApPT0xfChsfDApPT0wKXtwPWIrOHwwO2NbcD4+Ml09bTtwPWV8MTtjW2I+PjJdPXA7aT1rO3JldHVybn12bihsKTtwPWIrOHwwO2NbcD4+Ml09bTtwPWV8MTtjW2I+PjJdPXA7aT1rO3JldHVybn1mdW5jdGlvbiBxZyhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT0oY1tiKzI0Pj4yXXwwKT09MDtpZihlKXtjW2IrMTY+PjJdPWR8MX1lbHNle2NbYisxNj4+Ml09ZH1pZigoKGUmMXxkKSZjW2IrMjA+PjJdfDApPT0wKXtyZXR1cm59ZD1YYSgxNil8MDtpZigoYVsxMTAwOF18MCk9PTA/KFFhKDExMDA4KXwwKSE9MDowKXtjWzI3NTBdPTExNzg0OyRhKDExMDA4KX1ZZihkLDEsMTFlMywxMTA1Nik7Y1tkPj4yXT0xMTAyNDt3YihkfDAsMTExMDQsMTMxKX1mdW5jdGlvbiByZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1pO2NbYT4+Ml09MTEwNDg7Zj1jW2ErNDA+PjJdfDA7Yj1hKzMyfDA7ZD1hKzM2fDA7aWYoKGZ8MCkhPTApe2Rve2Y9ZisgLTF8MDtxY1tjWyhjW2I+PjJdfDApKyhmPDwyKT4+Ml0mMzFdKDAsYSxjWyhjW2Q+PjJdfDApKyhmPDwyKT4+Ml18MCl9d2hpbGUoKGZ8MCkhPTApfWY9Y1thKzI4Pj4yXXwwO2g9Zis0fDA7Zz1jW2g+PjJdfDA7Y1toPj4yXT1nKyAtMTtpZigoZ3wwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfXZuKGNbYj4+Ml18MCk7dm4oY1tkPj4yXXwwKTt2bihjW2ErNDg+PjJdfDApO3ZuKGNbYSs2MD4+Ml18MCk7aT1lO3JldHVybn1mdW5jdGlvbiBzZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTEwNjY0O2Q9Y1thKzQ+PjJdfDA7Zj1kKzR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlfDApIT0wKXt2bihhKTtpPWI7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHRnKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7Y1thPj4yXT0xMDY2NDthPWNbYSs0Pj4yXXwwO2U9YSs0fDA7ZD1jW2U+PjJdfDA7Y1tlPj4yXT1kKyAtMTtpZigoZHwwKSE9MCl7aT1iO3JldHVybn1sY1tjWyhjW2E+PjJdfDApKzg+PjJdJjI1NV0oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB1ZyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybn1mdW5jdGlvbiB2ZyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiB3ZyhhLGIsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7Zz1hO2NbZz4+Ml09MDtjW2crND4+Ml09MDtnPWErOHwwO2NbZz4+Ml09LTE7Y1tnKzQ+PjJdPS0xO3JldHVybn1mdW5jdGlvbiB4ZyhhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtlPWE7Y1tlPj4yXT0wO2NbZSs0Pj4yXT0wO2U9YSs4fDA7Y1tlPj4yXT0tMTtjW2UrND4+Ml09LTE7cmV0dXJufWZ1bmN0aW9uIHlnKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIHpnKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIEFnKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtmPWk7aWYoKGV8MCk8PTApe2s9MDtpPWY7cmV0dXJuIGt8MH1nPWIrMTJ8MDtoPWIrMTZ8MDtqPTA7d2hpbGUoMSl7az1jW2c+PjJdfDA7aWYoaz4+PjA8KGNbaD4+Ml18MCk+Pj4wKXtjW2c+PjJdPWsrMTtrPWFbaz4+MF18MH1lbHNle2s9b2NbY1soY1tiPj4yXXwwKSs0MD4+Ml0mMTI3XShiKXwwO2lmKChrfDApPT0tMSl7ZT04O2JyZWFrfWs9ayYyNTV9YVtkPj4wXT1rO2o9aisxfDA7aWYoKGp8MCk8KGV8MCkpe2Q9ZCsxfDB9ZWxzZXtlPTg7YnJlYWt9fWlmKChlfDApPT04KXtpPWY7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBCZyhhKXthPWF8MDtyZXR1cm4tMX1mdW5jdGlvbiBDZyhhKXthPWF8MDt2YXIgYj0wLGU9MDtiPWk7aWYoKG9jW2NbKGNbYT4+Ml18MCkrMzY+PjJdJjEyN10oYSl8MCk9PS0xKXthPS0xO2k9YjtyZXR1cm4gYXwwfWU9YSsxMnwwO2E9Y1tlPj4yXXwwO2NbZT4+Ml09YSsxO2E9ZFthPj4wXXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIERnKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuLTF9ZnVuY3Rpb24gRWcoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtnPWk7aWYoKGZ8MCk8PTApe2w9MDtpPWc7cmV0dXJuIGx8MH1qPWIrMjR8MDtoPWIrMjh8MDtrPTA7d2hpbGUoMSl7bD1jW2o+PjJdfDA7aWYoIShsPj4+MDwoY1toPj4yXXwwKT4+PjApKXtpZigoeGNbY1soY1tiPj4yXXwwKSs1Mj4+Ml0mNjNdKGIsZFtlPj4wXXwwKXwwKT09LTEpe2g9NzticmVha319ZWxzZXttPWFbZT4+MF18MDtjW2o+PjJdPWwrMTthW2w+PjBdPW19az1rKzF8MDtpZigoa3wwKTwoZnwwKSl7ZT1lKzF8MH1lbHNle2g9NzticmVha319aWYoKGh8MCk9PTcpe2k9ZztyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIEZnKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuLTF9ZnVuY3Rpb24gR2coYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT0xMDcyODtkPWNbYSs0Pj4yXXwwO2Y9ZCs0fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZXwwKSE9MCl7dm4oYSk7aT1iO3JldHVybn1sY1tjWyhjW2Q+PjJdfDApKzg+PjJdJjI1NV0oZCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBIZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7YT1jW2ErND4+Ml18MDtlPWErNHwwO2Q9Y1tlPj4yXXwwO2NbZT4+Ml09ZCsgLTE7aWYoKGR8MCkhPTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gSWcoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm59ZnVuY3Rpb24gSmcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBhfDB9ZnVuY3Rpb24gS2coYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2c9YTtjW2c+PjJdPTA7Y1tnKzQ+PjJdPTA7Zz1hKzh8MDtjW2c+PjJdPS0xO2NbZys0Pj4yXT0tMTtyZXR1cm59ZnVuY3Rpb24gTGcoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7ZT1hO2NbZT4+Ml09MDtjW2UrND4+Ml09MDtlPWErOHwwO2NbZT4+Ml09LTE7Y1tlKzQ+PjJdPS0xO3JldHVybn1mdW5jdGlvbiBNZyhhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBOZyhhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBPZyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2lmKChkfDApPD0wKXtqPTA7aT1lO3JldHVybiBqfDB9Zz1hKzEyfDA7Zj1hKzE2fDA7aD0wO3doaWxlKDEpe2o9Y1tnPj4yXXwwO2lmKCEoaj4+PjA8KGNbZj4+Ml18MCk+Pj4wKSl7aj1vY1tjWyhjW2E+PjJdfDApKzQwPj4yXSYxMjddKGEpfDA7aWYoKGp8MCk9PS0xKXthPTg7YnJlYWt9fWVsc2V7Y1tnPj4yXT1qKzQ7aj1jW2o+PjJdfDB9Y1tiPj4yXT1qO2g9aCsxfDA7aWYoKGh8MCk+PShkfDApKXthPTg7YnJlYWt9Yj1iKzR8MH1pZigoYXwwKT09OCl7aT1lO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gUGcoYSl7YT1hfDA7cmV0dXJuLTF9ZnVuY3Rpb24gUWcoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2lmKChvY1tjWyhjW2E+PjJdfDApKzM2Pj4yXSYxMjddKGEpfDApPT0tMSl7YT0tMTtpPWI7cmV0dXJuIGF8MH1kPWErMTJ8MDthPWNbZD4+Ml18MDtjW2Q+PjJdPWErNDthPWNbYT4+Ml18MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBSZyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybi0xfWZ1bmN0aW9uIFNnKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2lmKChkfDApPD0wKXtqPTA7aT1lO3JldHVybiBqfDB9Zz1hKzI0fDA7Zj1hKzI4fDA7aD0wO3doaWxlKDEpe2o9Y1tnPj4yXXwwO2lmKCEoaj4+PjA8KGNbZj4+Ml18MCk+Pj4wKSl7aWYoKHhjW2NbKGNbYT4+Ml18MCkrNTI+PjJdJjYzXShhLGNbYj4+Ml18MCl8MCk9PS0xKXtmPTg7YnJlYWt9fWVsc2V7az1jW2I+PjJdfDA7Y1tnPj4yXT1qKzQ7Y1tqPj4yXT1rfWg9aCsxfDA7aWYoKGh8MCk+PShkfDApKXtmPTg7YnJlYWt9Yj1iKzR8MH1pZigoZnwwKT09OCl7aT1lO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gVGcoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4tMX1mdW5jdGlvbiBVZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBWZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBXZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs4KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFhnKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzgpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gWWcoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7ZT1kO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2IrKGYrMjQpPj4yXXwwKT09MCl7aT1kO3JldHVybn1hW2U+PjBdPTA7Y1tlKzQ+PjJdPWI7aWYoKGNbYisoZisxNik+PjJdfDApPT0wKXtnPWNbYisoZis3Mik+PjJdfDA7aWYoKGd8MCkhPTApe1lnKGcpO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZT4+MF09MTtnPWNbYisoZisyNCk+PjJdfDA7aWYoKG9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MCk9PS0xKXtnPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK2d8MCxjW2IrKGcrMTYpPj4yXXwxKX19Z2goZSk7aT1kO3JldHVybn1mdW5jdGlvbiBaZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBfZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aT1iO3JldHVybn1mdW5jdGlvbiAkZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs4KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGFoKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzgpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gYmgoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7ZT1kO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2IrKGYrMjQpPj4yXXwwKT09MCl7aT1kO3JldHVybn1hW2U+PjBdPTA7Y1tlKzQ+PjJdPWI7aWYoKGNbYisoZisxNik+PjJdfDApPT0wKXtnPWNbYisoZis3Mik+PjJdfDA7aWYoKGd8MCkhPTApe2JoKGcpO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZT4+MF09MTtnPWNbYisoZisyNCk+PjJdfDA7aWYoKG9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MCk9PS0xKXtnPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK2d8MCxjW2IrKGcrMTYpPj4yXXwxKX19cWgoZSk7aT1kO3JldHVybn1mdW5jdGlvbiBjaChhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzR8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBkaChhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzR8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBlaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs0KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGZoKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzQpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gZ2goYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTthPWErNHwwO2Q9Y1thPj4yXXwwO2U9Y1soY1tkPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2QrKGUrMjQpPj4yXXwwKT09MCl7aT1iO3JldHVybn1pZigoY1tkKyhlKzE2KT4+Ml18MCkhPTApe2k9YjtyZXR1cm59aWYoKGNbZCsoZSs0KT4+Ml0mODE5MnwwKT09MCl7aT1iO3JldHVybn1pZihZYSgpfDApe2k9YjtyZXR1cm59ZT1jW2E+PjJdfDA7ZT1jW2UrKChjWyhjW2U+PjJdfDApKyAtMTI+PjJdfDApKzI0KT4+Ml18MDtpZighKChvY1tjWyhjW2U+PjJdfDApKzI0Pj4yXSYxMjddKGUpfDApPT0tMSkpe2k9YjtyZXR1cm59ZD1jW2E+PjJdfDA7ZT1jWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDA7cWcoZCtlfDAsY1tkKyhlKzE2KT4+Ml18MSk7aT1iO3JldHVybn1mdW5jdGlvbiBoaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2g9aTtpPWkrMzJ8MDtrPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG4rMTYpPj4yXXwwKT09MCl7bT1jW2IrKG4rNzIpPj4yXXwwO2lmKChtfDApIT0wKXtZZyhtKTtuPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7bz1jW2IrKG4rMjgpPj4yXXwwO3A9bys0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1trPj4yXT0xMjE5MjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEyMTkyLGspfW49KGNbMTIxOTY+PjJdfDApKyAtMXwwO209Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktbT4+Mj4+PjA+bj4+PjA/KGU9Y1ttKyhuPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfXE9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO209Y1tiKyhxKzI0KT4+Ml18MDtuPWIrcXwwO289YisocSs3Nil8MDtwPWNbbz4+Ml18MDtkb3tpZigocHwwKT09LTEpe3E9Y1tiKyhxKzI4KT4+Ml18MDtwPXErNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NTY7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ1NixrKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXM+PjI+Pj4wPnI+Pj4wPyhsPWNbcysocjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2w9eGNbY1soY1tsPj4yXXwwKSsyOD4+Ml0mNjNdKGwsMzIpfDA7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfXA9bDw8MjQ+PjI0O2Nbbz4+Ml09cDticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7cj1wJjI1NTtzPWQmNjU1MzU7cT1jWyhjW2U+PjJdfDApKzI0Pj4yXXwwO2Nbaj4+Ml09bTtjW2srMD4+Ml09Y1tqKzA+PjJdO3djW3EmNjNdKGYsZSxrLG4scixzKTtpZigoY1tmPj4yXXwwKSE9MCl7YnJlYWt9cz1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7cWcoYitzfDAsY1tiKyhzKzE2KT4+Ml18NSk7YnJlYWt9cz1YYSg0KXwwO2Nbcz4+Ml09MjEzMDQ7d2Ioc3wwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2doKGcpO2k9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIGloKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7aD1pO2k9aSszMnwwO2s9aDtqPWgrMjR8MDtnPWgrMTZ8MDtmPWgrMTJ8MDthW2c+PjBdPTA7Y1tnKzQ+PjJdPWI7bj1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7ZG97aWYoKGNbYisobisxNik+PjJdfDApPT0wKXttPWNbYisobis3Mik+PjJdfDA7aWYoKG18MCkhPTApe1lnKG0pO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZz4+MF09MTtvPWNbYisobisyOCk+PjJdfDA7cD1vKzR8MDtjW3A+PjJdPShjW3A+PjJdfDApKzE7aWYoISgoY1szMDQ4XXwwKT09LTEpKXtjW2s+PjJdPTEyMTkyO2Nbays0Pj4yXT0yMDg7Y1trKzg+PjJdPTA7Y2coMTIxOTIsayl9bj0oY1sxMjE5Nj4+Ml18MCkrIC0xfDA7bT1jW28rOD4+Ml18MDtpZigoY1tvKzEyPj4yXXwwKS1tPj4yPj4+MD5uPj4+MD8oZT1jW20rKG48PDIpPj4yXXwwLChlfDApIT0wKTowKXtzPWNbcD4+Ml18MDtjW3A+PjJdPXMrIC0xO2lmKChzfDApPT0wKXtsY1tjWyhjW28+PjJdfDApKzg+PjJdJjI1NV0obyl9cT1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7bT1jW2IrKHErMjQpPj4yXXwwO249YitxfDA7bz1iKyhxKzc2KXwwO3A9Y1tvPj4yXXwwO2Rve2lmKChwfDApPT0tMSl7cT1jW2IrKHErMjgpPj4yXXwwO3A9cSs0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1trPj4yXT0xMzQ1NjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEzNDU2LGspfXI9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3M9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcz4+Mj4+PjA+cj4+PjA/KGw9Y1tzKyhyPDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7bD14Y1tjWyhjW2w+PjJdfDApKzI4Pj4yXSY2M10obCwzMil8MDtzPWNbcD4+Ml18MDtjW3A+PjJdPXMrIC0xO2lmKChzfDApPT0wKXtsY1tjWyhjW3E+PjJdfDApKzg+PjJdJjI1NV0ocSl9cD1sPDwyND4+MjQ7Y1tvPj4yXT1wO2JyZWFrfXM9WGEoNCl8MDtjW3M+PjJdPTIxMzA0O3diKHN8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtzPXAmMjU1O3I9Y1soY1tlPj4yXXwwKSsxNj4+Ml18MDtjW2o+PjJdPW07Y1trKzA+PjJdPWNbaiswPj4yXTt3Y1tyJjYzXShmLGUsayxuLHMsZCk7aWYoKGNbZj4+Ml18MCkhPTApe2JyZWFrfXM9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO3FnKGIrc3wwLGNbYisocysxNik+PjJdfDUpO2JyZWFrfXM9WGEoNCl8MDtjW3M+PjJdPTIxMzA0O3diKHN8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtnaChnKTtpPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBqaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2g9aTtpPWkrMzJ8MDtrPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG4rMTYpPj4yXXwwKT09MCl7bT1jW2IrKG4rNzIpPj4yXXwwO2lmKChtfDApIT0wKXtZZyhtKTtuPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7bz1jW2IrKG4rMjgpPj4yXXwwO3A9bys0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1trPj4yXT0xMjE5MjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEyMTkyLGspfW49KGNbMTIxOTY+PjJdfDApKyAtMXwwO209Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktbT4+Mj4+PjA+bj4+PjA/KGU9Y1ttKyhuPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfXE9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO209Y1tiKyhxKzI0KT4+Ml18MDtuPWIrcXwwO289YisocSs3Nil8MDtwPWNbbz4+Ml18MDtkb3tpZigocHwwKT09LTEpe3E9Y1tiKyhxKzI4KT4+Ml18MDtwPXErNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NTY7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ1NixrKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXM+PjI+Pj4wPnI+Pj4wPyhsPWNbcysocjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2w9eGNbY1soY1tsPj4yXXwwKSsyOD4+Ml0mNjNdKGwsMzIpfDA7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfXA9bDw8MjQ+PjI0O2Nbbz4+Ml09cDticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7cz1wJjI1NTtyPWNbKGNbZT4+Ml18MCkrMjQ+PjJdfDA7Y1tqPj4yXT1tO2NbayswPj4yXT1jW2orMD4+Ml07d2NbciY2M10oZixlLGssbixzLGQpO2lmKChjW2Y+PjJdfDApIT0wKXticmVha31zPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK3N8MCxjW2IrKHMrMTYpPj4yXXw1KTticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Z2goZyk7aT1oO3JldHVybiBifDB9ZnVuY3Rpb24ga2goYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO2g9aTtpPWkrMzJ8MDtsPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO289Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG8rMTYpPj4yXXwwKT09MCl7bj1jW2IrKG8rNzIpPj4yXXwwO2lmKChufDApIT0wKXtZZyhuKTtvPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7cD1jW2IrKG8rMjgpPj4yXXwwO3E9cCs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1tsPj4yXT0xMjE5MjtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEyMTkyLGwpfW89KGNbMTIxOTY+PjJdfDApKyAtMXwwO249Y1twKzg+PjJdfDA7aWYoKGNbcCsxMj4+Ml18MCktbj4+Mj4+PjA+bz4+PjA/KGs9Y1tuKyhvPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7dD1jW3E+PjJdfDA7Y1txPj4yXT10KyAtMTtpZigodHwwKT09MCl7bGNbY1soY1twPj4yXXwwKSs4Pj4yXSYyNTVdKHApfXI9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO249Y1tiKyhyKzI0KT4+Ml18MDtvPWIrcnwwO3A9Yisocis3Nil8MDtxPWNbcD4+Ml18MDtkb3tpZigocXwwKT09LTEpe3I9Y1tiKyhyKzI4KT4+Ml18MDtxPXIrNHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1zPShjWzEzNDYwPj4yXXwwKSsgLTF8MDt0PWNbcis4Pj4yXXwwO2lmKChjW3IrMTI+PjJdfDApLXQ+PjI+Pj4wPnM+Pj4wPyhtPWNbdCsoczw8Mik+PjJdfDAsKG18MCkhPTApOjApe209eGNbY1soY1ttPj4yXXwwKSsyOD4+Ml0mNjNdKG0sMzIpfDA7dD1jW3E+PjJdfDA7Y1txPj4yXT10KyAtMTtpZigodHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfXE9bTw8MjQ+PjI0O2NbcD4+Ml09cTticmVha310PVhhKDQpfDA7Y1t0Pj4yXT0yMTMwNDt3Yih0fDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dD1xJjI1NTtzPWNbKGNbaz4+Ml18MCkrMjg+PjJdfDA7Y1tqPj4yXT1uO2NbbCswPj4yXT1jW2orMD4+Ml07aWNbcyY2M10oZixrLGwsbyx0LGQsZSk7aWYoKGNbZj4+Ml18MCkhPTApe2JyZWFrfXQ9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO3FnKGIrdHwwLGNbYisodCsxNik+PjJdfDUpO2JyZWFrfXQ9WGEoNCl8MDtjW3Q+PjJdPTIxMzA0O3diKHR8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtnaChnKTtpPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBsaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrMTZ8MDtmPWU7YVtmPj4wXT0wO2NbZis0Pj4yXT1iO2g9Y1tiPj4yXXwwO2c9Y1toKyAtMTI+PjJdfDA7ZG97aWYoKGNbYisoZysxNik+PjJdfDApPT0wKXtqPWNbYisoZys3Mik+PjJdfDA7aWYoKGp8MCkhPTApe1lnKGopO2c9Y1tiPj4yXXwwO2g9ZztnPWNbZysgLTEyPj4yXXwwfWFbZj4+MF09MTtnPWNbYisoZysyNCk+PjJdfDA7aWYoKGd8MCkhPTApe2o9ZysyNHwwO2g9Y1tqPj4yXXwwO2lmKChofDApIT0oY1tnKzI4Pj4yXXwwKSl7Y1tqPj4yXT1oKzE7YVtoPj4wXT1kO2JyZWFrfWlmKCEoKHhjW2NbKGNbZz4+Ml18MCkrNTI+PjJdJjYzXShnLGQmMjU1KXwwKT09LTEpKXticmVha31oPWNbYj4+Ml18MH1qPWNbaCsgLTEyPj4yXXwwO3FnKGIranwwLGNbYisoaisxNik+PjJdfDEpfX13aGlsZSgwKTtnaChmKTtpPWU7cmV0dXJufWZ1bmN0aW9uIG1oKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErNHwwKTtpZigoYXwwKT09MCl7aT1iO3JldHVybn12bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG5oKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErNHwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG9oKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7ZT1jWyhjW2E+PjJdfDApKyAtMTI+PjJdfDA7ZD1hK2V8MDtyZyhhKyhlKzQpfDApO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gcGgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7cmcoYSsoKGNbKGNbYT4+Ml18MCkrIC0xMj4+Ml18MCkrNCl8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBxaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2E9YSs0fDA7ZD1jW2E+PjJdfDA7ZT1jWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDA7aWYoKGNbZCsoZSsyNCk+PjJdfDApPT0wKXtpPWI7cmV0dXJufWlmKChjW2QrKGUrMTYpPj4yXXwwKSE9MCl7aT1iO3JldHVybn1pZigoY1tkKyhlKzQpPj4yXSY4MTkyfDApPT0wKXtpPWI7cmV0dXJufWlmKFlhKCl8MCl7aT1iO3JldHVybn1lPWNbYT4+Ml18MDtlPWNbZSsoKGNbKGNbZT4+Ml18MCkrIC0xMj4+Ml18MCkrMjQpPj4yXXwwO2lmKCEoKG9jW2NbKGNbZT4+Ml18MCkrMjQ+PjJdJjEyN10oZSl8MCk9PS0xKSl7aT1iO3JldHVybn1kPWNbYT4+Ml18MDtlPWNbKGNbZD4+Ml18MCkrIC0xMj4+Ml18MDtxZyhkK2V8MCxjW2QrKGUrMTYpPj4yXXwxKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHJoKGEpe2E9YXwwO3JldHVybiAxMDk0NH1mdW5jdGlvbiBzaChiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7ZD1pO2lmKChlfDApPT0xKXtlZyhiLDEwOTYwLDM1KTtpPWQ7cmV0dXJufWc9TmIoZXwwKXwwO2U9Sm4oZ3wwKXwwO2lmKGU+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoZT4+PjA8MTEpe2FbYj4+MF09ZTw8MTtrPWIrMXwwfWVsc2V7aD1lKzE2Ji0xNjtqPShofDApPT0wPzE6aDt3aGlsZSgxKXtrPXVuKGopfDA7aWYoKGt8MCkhPTApe2Y9MTI7YnJlYWt9az1jWzU2NjZdfDA7Y1s1NjY2XT1rKzA7aWYoKGt8MCk9PTApe2JyZWFrfXNjW2smMzFdKCl9aWYoKGZ8MCk9PTEyKXtjW2IrOD4+Ml09aztjW2I+PjJdPWh8MTtjW2IrND4+Ml09ZTticmVha31rPVhhKDQpfDA7Y1trPj4yXT0yMjY4MDt3YihrfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7TG4oa3wwLGd8MCxlfDApfDA7YVtrK2U+PjBdPTA7aT1kO3JldHVybn1mdW5jdGlvbiB0aChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gdWgoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB2aChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gd2goYSl7YT1hfDA7dmFyIGI9MDtiPWk7cmcoYSk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geWgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gemgoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEFoKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBCaChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MDtiPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2c9Nn1lbHNle3doaWxlKDEpe2lmKChjfDApPT0oZHwwKSl7ZD0tMTticmVhayBhfWg9YVtjPj4wXXwwO2o9YVtlPj4wXXwwO2lmKGg8PDI0Pj4yNDxqPDwyND4+MjQpe2Q9LTE7YnJlYWsgYX1pZihqPDwyND4+MjQ8aDw8MjQ+PjI0KXtkPTE7YnJlYWsgYX1jPWMrMXwwO2U9ZSsxfDA7aWYoKGV8MCk9PShmfDApKXtnPTY7YnJlYWt9fX19d2hpbGUoMCk7aWYoKGd8MCk9PTYpe2Q9KGN8MCkhPShkfDApJjF9aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gQ2goYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2Q9aTtnPWU7aj1mLWd8MDtpZihqPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWRve2lmKGo+Pj4wPDExKXthW2I+PjBdPWo8PDE7bT1iKzF8MH1lbHNle2s9aisxNiYtMTY7bD0oa3wwKT09MD8xOms7d2hpbGUoMSl7bT11bihsKXwwO2lmKChtfDApIT0wKXtoPTExO2JyZWFrfW09Y1s1NjY2XXwwO2NbNTY2Nl09bSswO2lmKChtfDApPT0wKXticmVha31zY1ttJjMxXSgpfWlmKChofDApPT0xMSl7Y1tiKzg+PjJdPW07Y1tiPj4yXT1rfDE7Y1tiKzQ+PjJdPWo7YnJlYWt9bT1YYSg0KXwwO2NbbT4+Ml09MjI2ODA7d2IobXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChlfDApPT0oZnwwKSl7YVttPj4wXT0wO2k9ZDtyZXR1cm59ZWxzZXtiPW19d2hpbGUoMSl7YVtiPj4wXT1hW2U+PjBdfDA7ZT1lKzF8MDtpZigoZXwwKT09KGZ8MCkpe2JyZWFrfWVsc2V7Yj1iKzF8MH19bT1tKyhmKygwLWcpKXwwO2FbbT4+MF09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIERoKGIsYyxkKXtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MDtiPWk7aWYoKGN8MCk9PShkfDApKXtlPTA7aT1iO3JldHVybiBlfDB9ZWxzZXtlPTB9ZG97ZT0oYVtjPj4wXXwwKSsoZTw8NCl8MDtmPWUmLTI2ODQzNTQ1NjtlPShmPj4+MjR8ZileZTtjPWMrMXwwfXdoaWxlKChjfDApIT0oZHwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gRWgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRmgoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEdoKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wO2E9aTthOmRve2lmKChlfDApPT0oZnwwKSl7Zz02fWVsc2V7d2hpbGUoMSl7aWYoKGJ8MCk9PShkfDApKXtkPS0xO2JyZWFrIGF9aD1jW2I+PjJdfDA7aj1jW2U+PjJdfDA7aWYoKGh8MCk8KGp8MCkpe2Q9LTE7YnJlYWsgYX1pZigoanwwKTwoaHwwKSl7ZD0xO2JyZWFrIGF9Yj1iKzR8MDtlPWUrNHwwO2lmKChlfDApPT0oZnwwKSl7Zz02O2JyZWFrfX19fXdoaWxlKDApO2lmKChnfDApPT02KXtkPShifDApIT0oZHwwKSYxfWk9YTtyZXR1cm4gZHwwfWZ1bmN0aW9uIEhoKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtkPWk7aD1lO2s9Zi1ofDA7aj1rPj4yO2lmKGo+Pj4wPjEwNzM3NDE4MDcpe2RnKCl9ZG97aWYoaj4+PjA8Mil7YVtiPj4wXT1rPj4+MTttPWIrNHwwfWVsc2V7az1qKzQmLTQ7bD1rPDwyO2w9KGx8MCk9PTA/MTpsO3doaWxlKDEpe209dW4obCl8MDtpZigobXwwKSE9MCl7Zz0xMTticmVha31tPWNbNTY2Nl18MDtjWzU2NjZdPW0rMDtpZigobXwwKT09MCl7YnJlYWt9c2NbbSYzMV0oKX1pZigoZ3wwKT09MTEpe2NbYis4Pj4yXT1tO2NbYj4+Ml09a3wxO2NbYis0Pj4yXT1qO2JyZWFrfW09WGEoNCl8MDtjW20+PjJdPTIyNjgwO3diKG18MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZigoZXwwKT09KGZ8MCkpe2NbbT4+Ml09MDtpPWQ7cmV0dXJufWI9ZisgLTQrKDAtaCl8MDtnPW07d2hpbGUoMSl7Y1tnPj4yXT1jW2U+PjJdO2U9ZSs0fDA7aWYoKGV8MCk9PShmfDApKXticmVha31lbHNle2c9Zys0fDB9fW09bSsoKGI+Pj4yKSsxPDwyKXwwO2NbbT4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIEloKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDthPWk7aWYoKGJ8MCk9PShkfDApKXtlPTA7aT1hO3JldHVybiBlfDB9ZWxzZXtlPTB9ZG97ZT0oY1tiPj4yXXwwKSsoZTw8NCl8MDtmPWUmLTI2ODQzNTQ1NjtlPShmPj4+MjR8ZileZTtiPWIrNHwwfXdoaWxlKChifDApIT0oZHwwKSk7aT1hO3JldHVybiBlfDB9ZnVuY3Rpb24gSmgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gS2goYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIExoKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2s9aTtpPWkrNjR8MDtwPWs7dT1rKzQ4fDA7cT1rKzUyfDA7dD1rKzU2fDA7cz1rKzE2fDA7cj1rKzEyfDA7bD1rKzI0fDA7aWYoKGNbZys0Pj4yXSYxfDApPT0wKXtjW3E+PjJdPS0xO2w9Y1soY1tkPj4yXXwwKSsxNj4+Ml18MDtjW3M+PjJdPWNbZT4+Ml07Y1tyPj4yXT1jW2Y+PjJdO2NbdSswPj4yXT1jW3MrMD4+Ml07Y1twKzA+PjJdPWNbciswPj4yXTtpY1tsJjYzXSh0LGQsdSxwLGcsaCxxKTtsPWNbdD4+Ml18MDtjW2U+PjJdPWw7ZT1jW3E+PjJdfDA7aWYoKGV8MCk9PTApe2Fbaj4+MF09MH1lbHNlIGlmKChlfDApPT0xKXthW2o+PjBdPTF9ZWxzZXthW2o+PjBdPTE7Y1toPj4yXT00fWNbYj4+Ml09bDtpPWs7cmV0dXJufXE9ZysyOHwwO3I9Y1txPj4yXXwwO2Q9cis0fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1twPj4yXT0xMzQ1NjtjW3ArND4+Ml09MjA4O2NbcCs4Pj4yXT0wO2NnKDEzNDU2LHApfXM9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3Q9Y1tyKzg+PjJdfDA7aWYoKGNbcisxMj4+Ml18MCktdD4+Mj4+PjA+cz4+PjA/KG89Y1t0KyhzPDwyKT4+Ml18MCwob3wwKSE9MCk6MCl7dT1yKzR8MDtkPWNbdT4+Ml18MDtjW3U+PjJdPWQrIC0xO2lmKChkfDApPT0wKXtsY1tjWyhjW3I+PjJdfDApKzg+PjJdJjI1NV0ocil9cT1jW3E+PjJdfDA7ZD1xKzR8MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE7aWYoISgoY1szNDAwXXwwKT09LTEpKXtjW3A+PjJdPTEzNjAwO2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM2MDAscCl9cD0oY1sxMzYwND4+Ml18MCkrIC0xfDA7cj1jW3ErOD4+Ml18MDtpZigoY1txKzEyPj4yXXwwKS1yPj4yPj4+MD5wPj4+MD8obj1jW3IrKHA8PDIpPj4yXXwwLChufDApIT0wKTowKXt1PXErNHwwO2Q9Y1t1Pj4yXXwwO2NbdT4+Ml09ZCsgLTE7aWYoKGR8MCk9PTApe2xjW2NbKGNbcT4+Ml18MCkrOD4+Ml0mMjU1XShxKX1tY1tjWyhjW24+PjJdfDApKzI0Pj4yXSYxMjddKGwsbik7ZD1sKzEyfDA7bWNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mMTI3XShkLG4pO2Fbaj4+MF09KE1oKGUsY1tmPj4yXXwwLGwsbCsyNHwwLG8saCwxKXwwKT09KGx8MCkmMTtjW2I+PjJdPWNbZT4+Ml07aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tsKzIwPj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtsPj4wXSYxKT09MCl7aT1rO3JldHVybn1iPWNbbCs4Pj4yXXwwO2lmKChifDApPT0wKXtpPWs7cmV0dXJufXZuKGIpO2k9aztyZXR1cm59ZD1YYSg0KXwwO2NbZD4+Ml09MjEzMDQ7d2IoZHwwLDIxMzc2LDE5Nil9ZD1YYSg0KXwwO2NbZD4+Ml09MjEzMDQ7d2IoZHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gTWgoYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDttPWk7aT1pKzExMnwwO289bTt0PShnLWZ8MCkvMTJ8MDtpZih0Pj4+MD4xMDApe289dW4odCl8MDtpZigob3wwKT09MCl7QT1YYSg0KXwwO2NbQT4+Ml09MjI2ODA7d2IoQXwwLDIyNzI4LDIwNil9ZWxzZXtsPW99fWVsc2V7bD0wfXA9KGZ8MCk9PShnfDApO2lmKHApe3U9MH1lbHNle3E9Zjt1PTA7cj1vO3doaWxlKDEpe3M9YVtxPj4wXXwwO2lmKChzJjEpPT0wKXtzPShzJjI1NSk+Pj4xfWVsc2V7cz1jW3ErND4+Ml18MH1pZigoc3wwKT09MCl7YVtyPj4wXT0yO3U9dSsxfDA7dD10KyAtMXwwfWVsc2V7YVtyPj4wXT0xfXE9cSsxMnwwO2lmKChxfDApPT0oZ3wwKSl7YnJlYWt9ZWxzZXtyPXIrMXwwfX19cT0wO2E6d2hpbGUoMSl7dj0odHwwKSE9MDtyPXE7d2hpbGUoMSl7cT1jW2I+PjJdfDA7ZG97aWYoKHF8MCkhPTApe2lmKChjW3ErMTI+PjJdfDApPT0oY1txKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbcT4+Ml18MCkrMzY+PjJdJjEyN10ocSl8MCk9PS0xKXtjW2I+PjJdPTA7cT0wO2JyZWFrfWVsc2V7cT1jW2I+PjJdfDA7YnJlYWt9fX1lbHNle3E9MH19d2hpbGUoMCk7dz0ocXwwKT09MDtpZigoZXwwKSE9MCl7aWYoKGNbZSsxMj4+Ml18MCk9PShjW2UrMTY+PjJdfDApKXtBPShvY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDApPT0tMTtxPUE/MDplO2U9QT8wOmV9ZWxzZXtxPWV9fWVsc2V7cT0wO2U9MH1zPShxfDApPT0wO3g9Y1tiPj4yXXwwO2lmKCEoKHdecykmdikpe2JyZWFrIGF9cT1jW3grMTI+PjJdfDA7aWYoKHF8MCk9PShjW3grMTY+PjJdfDApKXtxPW9jW2NbKGNbeD4+Ml18MCkrMzY+PjJdJjEyN10oeCl8MH1lbHNle3E9ZFtxPj4wXXwwfXM9cSYyNTU7aWYoIWspe3M9eGNbY1soY1toPj4yXXwwKSsxMj4+Ml0mNjNdKGgscyl8MH1xPXIrMXwwO2lmKHApe3I9cX1lbHNle2JyZWFrfX1iOmRve2lmKGspe3g9MDt2PWY7dz1vO3doaWxlKDEpe2Rve2lmKChhW3c+PjBdfDApPT0xKXt5PWFbdj4+MF18MDt6PSh5JjEpPT0wO2lmKHope0E9disxfDB9ZWxzZXtBPWNbdis4Pj4yXXwwfWlmKCEoczw8MjQ+PjI0PT0oYVtBK3I+PjBdfDApKSl7YVt3Pj4wXT0wO3Q9dCsgLTF8MDticmVha31pZih6KXt4PSh5JjI1NSk+Pj4xfWVsc2V7eD1jW3YrND4+Ml18MH1pZigoeHwwKT09KHF8MCkpe2Fbdz4+MF09Mjt4PTE7dT11KzF8MDt0PXQrIC0xfDB9ZWxzZXt4PTF9fX13aGlsZSgwKTt2PXYrMTJ8MDtpZigodnwwKT09KGd8MCkpe2JyZWFrIGJ9dz13KzF8MH19ZWxzZXt4PTA7dj1mO3c9bzt3aGlsZSgxKXtkb3tpZigoYVt3Pj4wXXwwKT09MSl7aWYoKGFbdj4+MF0mMSk9PTApe3k9disxfDB9ZWxzZXt5PWNbdis4Pj4yXXwwfWlmKCEoczw8MjQ+PjI0PT0oeGNbY1soY1toPj4yXXwwKSsxMj4+Ml0mNjNdKGgsYVt5K3I+PjBdfDApfDApPDwyND4+MjQpKXthW3c+PjBdPTA7dD10KyAtMXwwO2JyZWFrfXg9YVt2Pj4wXXwwO2lmKCh4JjEpPT0wKXt4PSh4JjI1NSk+Pj4xfWVsc2V7eD1jW3YrND4+Ml18MH1pZigoeHwwKT09KHF8MCkpe2Fbdz4+MF09Mjt4PTE7dT11KzF8MDt0PXQrIC0xfDB9ZWxzZXt4PTF9fX13aGlsZSgwKTt2PXYrMTJ8MDtpZigodnwwKT09KGd8MCkpe2JyZWFrIGJ9dz13KzF8MH19fXdoaWxlKDApO2lmKCF4KXtjb250aW51ZX12PWNbYj4+Ml18MDtzPXYrMTJ8MDtyPWNbcz4+Ml18MDtpZigocnwwKT09KGNbdisxNj4+Ml18MCkpe29jW2NbKGNbdj4+Ml18MCkrNDA+PjJdJjEyN10odil8MH1lbHNle2Nbcz4+Ml09cisxfWlmKCh0K3V8MCk+Pj4wPDIpe2NvbnRpbnVlfWVsc2V7cz1mO3I9b313aGlsZSgxKXtpZigoYVtyPj4wXXwwKT09Mil7dj1hW3M+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbcys0Pj4yXXwwfWlmKCh2fDApIT0ocXwwKSl7YVtyPj4wXT0wO3U9dSsgLTF8MH19cz1zKzEyfDA7aWYoKHN8MCk9PShnfDApKXtjb250aW51ZSBhfWVsc2V7cj1yKzF8MH19fWRve2lmKCh4fDApIT0wKXtpZigoY1t4KzEyPj4yXXwwKT09KGNbeCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDApPT0tMSl7Y1tiPj4yXT0wO3g9MDticmVha31lbHNle3g9Y1tiPj4yXXwwO2JyZWFrfX19ZWxzZXt4PTB9fXdoaWxlKDApO2g9KHh8MCk9PTA7ZG97aWYoIXMpe2lmKChjW3ErMTI+PjJdfDApIT0oY1txKzE2Pj4yXXwwKSl7aWYoaCl7YnJlYWt9ZWxzZXtuPTg1O2JyZWFrfX1pZighKChvY1tjWyhjW3E+PjJdfDApKzM2Pj4yXSYxMjddKHEpfDApPT0tMSkpe2lmKCFoKXtuPTg1fX1lbHNle249ODN9fWVsc2V7bj04M319d2hpbGUoMCk7aWYoKG58MCk9PTgzP2g6MCl7bj04NX1pZigobnwwKT09ODUpe2Nbaj4+Ml09Y1tqPj4yXXwyfWM6ZG97aWYoIXApe2lmKChhW28+PjBdfDApPT0yKXtnPWZ9ZWxzZXt3aGlsZSgxKXtmPWYrMTJ8MDtvPW8rMXwwO2lmKChmfDApPT0oZ3wwKSl7bj05MDticmVhayBjfWlmKChhW28+PjBdfDApPT0yKXtnPWY7YnJlYWt9fX19ZWxzZXtuPTkwfX13aGlsZSgwKTtpZigobnwwKT09OTApe2Nbaj4+Ml09Y1tqPj4yXXw0fWlmKChsfDApPT0wKXtpPW07cmV0dXJuIGd8MH12bihsKTtpPW07cmV0dXJuIGd8MH1mdW5jdGlvbiBOaChiLGUsZixnLGgsaixrKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtlPWk7aT1pKzIyNHwwO3Y9ZSsxOTh8MDt1PWUrMTk2fDA7bj1lKzE2fDA7bz1lKzR8MDtxPWUrMTkyfDA7cz1lKzMyfDA7cj1lO3Q9ZSsyOHwwO3k9Y1tmPj4yXXwwO0E9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT04KXtnPTE2fWVsc2UgaWYoKGd8MCk9PTApe2c9MH1lbHNlIGlmKChnfDApPT02NCl7Zz04fWVsc2V7Zz0xMH1taShuLGgsdix1KTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qj1vKzF8MDt3PUI7Zj1vKzh8MH1lbHNle0I9bys4fDA7dz1vKzF8MDtmPUI7Qj1jW0I+PjJdfDB9Y1txPj4yXT1CO2Nbcj4+Ml09cztjW3Q+PjJdPTA7aD1vKzR8MDt4PWFbdT4+MF18MDt1PW8rOHwwO2E6d2hpbGUoMSl7aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9ej0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZih6KXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXope2JyZWFrIGF9fWVsc2V7bD0xOX19ZWxzZXtsPTE5fX13aGlsZSgwKTtpZigobHwwKT09MTkpe2w9MDtpZih6KXtBPTA7YnJlYWt9ZWxzZXtBPTB9fUQ9YVtvPj4wXXwwO0M9KEQmMSk9PTA7aWYoQyl7RT0oRCYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWlmKCgoY1txPj4yXXwwKS1CfDApPT0oRXwwKSl7aWYoQyl7Qj0oRCYyNTUpPj4+MTtFPShEJjI1NSk+Pj4xO0Q9Qjw8MX1lbHNle0I9Y1toPj4yXXwwO0U9Y1toPj4yXXwwO0Q9Qjw8MX1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUI8PDI7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtFPWFbbz4+MF18MDtpZigoRSYxKT09MCl7RD0xMH1lbHNle0Q9Y1tvPj4yXXwwO0U9RCYyNTU7RD0oRCYtMikrIC0xfDB9Qz0oRSYxKT09MDtpZihDKXtFPShFJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1EPDwxO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9d31lbHNle0M9Y1tmPj4yXXwwfWNbcT4+Ml09QytCO0I9Q31EPXkrMTJ8MDtFPWNbRD4+Ml18MDtDPXkrMTZ8MDtpZigoRXwwKT09KGNbQz4+Ml18MCkpe0U9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7RT1kW0U+PjBdfDB9aWYoKFhoKEUmMjU1LGcsQixxLHQseCxuLHMscix2KXwwKSE9MCl7YnJlYWt9ej1jW0Q+PjJdfDA7aWYoKHp8MCk9PShjW0M+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7Y29udGludWV9ZWxzZXtjW0Q+PjJdPXorMTtjb250aW51ZX19dj1hW24+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbbis0Pj4yXXwwfWlmKCh2fDApIT0wPyhwPWNbcj4+Ml18MCwocC1zfDApPDE2MCk6MCl7RT1jW3Q+PjJdfDA7Y1tyPj4yXT1wKzQ7Y1twPj4yXT1FfWNbaz4+Ml09Tm0oQixjW3E+PjJdfDAsaixnKXwwO3FrKG4scyxjW3I+PjJdfDAsaik7aWYoIXope2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9cD0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZihwKXticmVha31lbHNle2w9NzE7YnJlYWt9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXApe2w9NzF9fWVsc2V7bD02OX19ZWxzZXtsPTY5fX13aGlsZSgwKTtpZigobHwwKT09Njk/cDowKXtsPTcxfWlmKChsfDApPT03MSl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT15O2lmKCEoKGFbbz4+MF0mMSk9PTApPyhtPWNbdT4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoKGFbbj4+MF0mMSk9PTApe2k9ZTtyZXR1cm59bD1jW24rOD4+Ml18MDtpZigobHwwKT09MCl7aT1lO3JldHVybn12bihsKTtpPWU7cmV0dXJufWZ1bmN0aW9uIE9oKGIsZSxmLGcsaCxqLGspe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO2U9aTtpPWkrMjI0fDA7dj1lKzE5OHwwO3U9ZSsxOTZ8MDtuPWUrMTZ8MDtvPWUrNHwwO3E9ZSsxOTJ8MDtzPWUrMzJ8MDtyPWU7dD1lKzI4fDA7eT1jW2Y+PjJdfDA7QT1jW2c+PjJdfDA7Zz1jW2grND4+Ml0mNzQ7aWYoKGd8MCk9PTApe2c9MH1lbHNlIGlmKChnfDApPT04KXtnPTE2fWVsc2UgaWYoKGd8MCk9PTY0KXtnPTh9ZWxzZXtnPTEwfW1pKG4saCx2LHUpO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtCPW8rMXwwO3c9QjtmPW8rOHwwfWVsc2V7Qj1vKzh8MDt3PW8rMXwwO2Y9QjtCPWNbQj4+Ml18MH1jW3E+PjJdPUI7Y1tyPj4yXT1zO2NbdD4+Ml09MDtoPW8rNHwwO3g9YVt1Pj4wXXwwO3U9bys4fDA7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH16PSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHope2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZigheil7YnJlYWsgYX19ZWxzZXtsPTE5fX1lbHNle2w9MTl9fXdoaWxlKDApO2lmKChsfDApPT0xOSl7bD0wO2lmKHope0E9MDticmVha31lbHNle0E9MH19RD1hW28+PjBdfDA7Qz0oRCYxKT09MDtpZihDKXtFPShEJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9aWYoKChjW3E+PjJdfDApLUJ8MCk9PShFfDApKXtpZihDKXtCPShEJjI1NSk+Pj4xO0U9KEQmMjU1KT4+PjE7RD1CPDwxfWVsc2V7Qj1jW2g+PjJdfDA7RT1jW2g+PjJdfDA7RD1CPDwxfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09Qjw8MjticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO0U9YVtvPj4wXXwwO2lmKChFJjEpPT0wKXtEPTEwfWVsc2V7RD1jW28+PjJdfDA7RT1EJjI1NTtEPShEJi0yKSsgLTF8MH1DPShFJjEpPT0wO2lmKEMpe0U9KEUmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUQ8PDE7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz13fWVsc2V7Qz1jW2Y+PjJdfDB9Y1txPj4yXT1DK0I7Qj1DfUQ9eSsxMnwwO0U9Y1tEPj4yXXwwO0M9eSsxNnwwO2lmKChFfDApPT0oY1tDPj4yXXwwKSl7RT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtFPWRbRT4+MF18MH1pZigoWGgoRSYyNTUsZyxCLHEsdCx4LG4scyxyLHYpfDApIT0wKXticmVha316PWNbRD4+Ml18MDtpZigoenwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeT4+Ml18MCkrNDA+PjJdJjEyN10oeSl8MDtjb250aW51ZX1lbHNle2NbRD4+Ml09eisxO2NvbnRpbnVlfX12PWFbbj4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tuKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHA9Y1tyPj4yXXwwLChwLXN8MCk8MTYwKTowKXtFPWNbdD4+Ml18MDtjW3I+PjJdPXArNDtjW3A+PjJdPUV9RD1NbShCLGNbcT4+Ml18MCxqLGcpfDA7RT1rO2NbRT4+Ml09RDtjW0UrND4+Ml09STtxayhuLHMsY1tyPj4yXXwwLGopO2lmKCF6KXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXA9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYocCl7YnJlYWt9ZWxzZXtsPTcxO2JyZWFrfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCFwKXtsPTcxfX1lbHNle2w9Njl9fWVsc2V7bD02OX19d2hpbGUoMCk7aWYoKGx8MCk9PTY5P3A6MCl7bD03MX1pZigobHwwKT09NzEpe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09eTtpZighKChhW28+PjBdJjEpPT0wKT8obT1jW3U+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW24+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWw9Y1tuKzg+PjJdfDA7aWYoKGx8MCk9PTApe2k9ZTtyZXR1cm59dm4obCk7aT1lO3JldHVybn1mdW5jdGlvbiBQaChlLGYsZyxoLGosayxsKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MDtmPWk7aT1pKzIyNHwwO3c9ZisxOTh8MDt2PWYrMTk2fDA7bz1mKzE2fDA7cD1mKzR8MDtyPWYrMTkyfDA7dD1mKzMyfDA7cz1mO3U9ZisyOHwwO3o9Y1tnPj4yXXwwO0I9Y1toPj4yXXwwO2g9Y1tqKzQ+PjJdJjc0O2lmKChofDApPT04KXtoPTE2fWVsc2UgaWYoKGh8MCk9PTY0KXtoPTh9ZWxzZSBpZigoaHwwKT09MCl7aD0wfWVsc2V7aD0xMH1taShvLGosdyx2KTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtoZyhwLDEwKTtpZigoYVtwPj4wXSYxKT09MCl7Qz1wKzF8MDt4PUM7Zz1wKzh8MH1lbHNle0M9cCs4fDA7eD1wKzF8MDtnPUM7Qz1jW0M+PjJdfDB9Y1tyPj4yXT1DO2Nbcz4+Ml09dDtjW3U+PjJdPTA7aj1wKzR8MDt5PWFbdj4+MF18MDt2PXArOHwwO2E6d2hpbGUoMSl7aWYoKHp8MCkhPTApe2lmKChjW3orMTI+PjJdfDApPT0oY1t6KzE2Pj4yXXwwKSl7Rj0ob2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwKT09LTE7ej1GPzA6en19ZWxzZXt6PTB9QT0oenwwKT09MDtkb3tpZigoQnwwKSE9MCl7aWYoKGNbQisxMj4+Ml18MCkhPShjW0IrMTY+PjJdfDApKXtpZihBKXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MCk9PS0xKSl7aWYoIUEpe2JyZWFrIGF9fWVsc2V7bT0xOX19ZWxzZXttPTE5fX13aGlsZSgwKTtpZigobXwwKT09MTkpe209MDtpZihBKXtCPTA7YnJlYWt9ZWxzZXtCPTB9fUU9YVtwPj4wXXwwO0Q9KEUmMSk9PTA7aWYoRCl7Rj0oRSYyNTUpPj4+MX1lbHNle0Y9Y1tqPj4yXXwwfWlmKCgoY1tyPj4yXXwwKS1DfDApPT0oRnwwKSl7aWYoRCl7Qz0oRSYyNTUpPj4+MTtGPShFJjI1NSk+Pj4xO0U9Qzw8MX1lbHNle0M9Y1tqPj4yXXwwO0Y9Y1tqPj4yXXwwO0U9Qzw8MX1kb3tpZighKEY+Pj4wPEU+Pj4wKSl7aWYoRCl7YVtwK0UrMT4+MF09MDthW3A+PjBdPUM8PDI7YnJlYWt9ZWxzZXthWyhjW3Y+PjJdfDApK0U+PjBdPTA7Y1tqPj4yXT1FO2JyZWFrfX1lbHNle2hnKHAsRS1GfDApfX13aGlsZSgwKTtGPWFbcD4+MF18MDtpZigoRiYxKT09MCl7RT0xMH1lbHNle0U9Y1twPj4yXXwwO0Y9RSYyNTU7RT0oRSYtMikrIC0xfDB9RD0oRiYxKT09MDtpZihEKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW2o+PjJdfDB9ZG97aWYoIShGPj4+MDxFPj4+MCkpe2lmKEQpe2FbcCtFKzE+PjBdPTA7YVtwPj4wXT1FPDwxO2JyZWFrfWVsc2V7YVsoY1t2Pj4yXXwwKStFPj4wXT0wO2Nbaj4+Ml09RTticmVha319ZWxzZXtoZyhwLEUtRnwwKX19d2hpbGUoMCk7aWYoKGFbcD4+MF0mMSk9PTApe0Q9eH1lbHNle0Q9Y1tnPj4yXXwwfWNbcj4+Ml09RCtDO0M9RH1FPXorMTJ8MDtGPWNbRT4+Ml18MDtEPXorMTZ8MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe0Y9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7Rj1kW0Y+PjBdfDB9aWYoKFhoKEYmMjU1LGgsQyxyLHUseSxvLHQscyx3KXwwKSE9MCl7YnJlYWt9QT1jW0U+PjJdfDA7aWYoKEF8MCk9PShjW0Q+PjJdfDApKXtvY1tjWyhjW3o+PjJdfDApKzQwPj4yXSYxMjddKHopfDA7Y29udGludWV9ZWxzZXtjW0U+PjJdPUErMTtjb250aW51ZX19dz1hW28+PjBdfDA7aWYoKHcmMSk9PTApe3c9KHcmMjU1KT4+PjF9ZWxzZXt3PWNbbys0Pj4yXXwwfWlmKCh3fDApIT0wPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7Rj1jW3U+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1GfWJbbD4+MV09TG0oQyxjW3I+PjJdfDAsayxoKXwwO3FrKG8sdCxjW3M+PjJdfDAsayk7aWYoIUEpe2lmKChjW3orMTI+PjJdfDApPT0oY1t6KzE2Pj4yXXwwKSl7Rj0ob2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwKT09LTE7ej1GPzA6en19ZWxzZXt6PTB9cT0oenwwKT09MDtkb3tpZigoQnwwKSE9MCl7aWYoKGNbQisxMj4+Ml18MCkhPShjW0IrMTY+PjJdfDApKXtpZihxKXticmVha31lbHNle209NzE7YnJlYWt9fWlmKCEoKG9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MCk9PS0xKSl7aWYoIXEpe209NzF9fWVsc2V7bT02OX19ZWxzZXttPTY5fX13aGlsZSgwKTtpZigobXwwKT09Njk/cTowKXttPTcxfWlmKChtfDApPT03MSl7Y1trPj4yXT1jW2s+PjJdfDJ9Y1tlPj4yXT16O2lmKCEoKGFbcD4+MF0mMSk9PTApPyhuPWNbdj4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZjtyZXR1cm59bT1jW28rOD4+Ml18MDtpZigobXwwKT09MCl7aT1mO3JldHVybn12bihtKTtpPWY7cmV0dXJufWZ1bmN0aW9uIFFoKGIsZSxmLGcsaCxqLGspe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO2U9aTtpPWkrMjI0fDA7dj1lKzE5OHwwO3U9ZSsxOTZ8MDtuPWUrMTZ8MDtvPWUrNHwwO3E9ZSsxOTJ8MDtzPWUrMzJ8MDtyPWU7dD1lKzI4fDA7eT1jW2Y+PjJdfDA7QT1jW2c+PjJdfDA7Zz1jW2grND4+Ml0mNzQ7aWYoKGd8MCk9PTY0KXtnPTh9ZWxzZSBpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT0wKXtnPTB9ZWxzZXtnPTEwfW1pKG4saCx2LHUpO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtCPW8rMXwwO3c9QjtmPW8rOHwwfWVsc2V7Qj1vKzh8MDt3PW8rMXwwO2Y9QjtCPWNbQj4+Ml18MH1jW3E+PjJdPUI7Y1tyPj4yXT1zO2NbdD4+Ml09MDtoPW8rNHwwO3g9YVt1Pj4wXXwwO3U9bys4fDA7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH16PSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHope2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZigheil7YnJlYWsgYX19ZWxzZXtsPTE5fX1lbHNle2w9MTl9fXdoaWxlKDApO2lmKChsfDApPT0xOSl7bD0wO2lmKHope0E9MDticmVha31lbHNle0E9MH19RD1hW28+PjBdfDA7Qz0oRCYxKT09MDtpZihDKXtFPShEJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9aWYoKChjW3E+PjJdfDApLUJ8MCk9PShFfDApKXtpZihDKXtCPShEJjI1NSk+Pj4xO0U9KEQmMjU1KT4+PjE7RD1CPDwxfWVsc2V7Qj1jW2g+PjJdfDA7RT1jW2g+PjJdfDA7RD1CPDwxfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09Qjw8MjticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO0U9YVtvPj4wXXwwO2lmKChFJjEpPT0wKXtEPTEwfWVsc2V7RD1jW28+PjJdfDA7RT1EJjI1NTtEPShEJi0yKSsgLTF8MH1DPShFJjEpPT0wO2lmKEMpe0U9KEUmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUQ8PDE7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz13fWVsc2V7Qz1jW2Y+PjJdfDB9Y1txPj4yXT1DK0I7Qj1DfUQ9eSsxMnwwO0U9Y1tEPj4yXXwwO0M9eSsxNnwwO2lmKChFfDApPT0oY1tDPj4yXXwwKSl7RT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtFPWRbRT4+MF18MH1pZigoWGgoRSYyNTUsZyxCLHEsdCx4LG4scyxyLHYpfDApIT0wKXticmVha316PWNbRD4+Ml18MDtpZigoenwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeT4+Ml18MCkrNDA+PjJdJjEyN10oeSl8MDtjb250aW51ZX1lbHNle2NbRD4+Ml09eisxO2NvbnRpbnVlfX12PWFbbj4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tuKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHA9Y1tyPj4yXXwwLChwLXN8MCk8MTYwKTowKXtFPWNbdD4+Ml18MDtjW3I+PjJdPXArNDtjW3A+PjJdPUV9Y1trPj4yXT1LbShCLGNbcT4+Ml18MCxqLGcpfDA7cWsobixzLGNbcj4+Ml18MCxqKTtpZigheil7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH1wPSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHApe2JyZWFrfWVsc2V7bD03MTticmVha319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZighcCl7bD03MX19ZWxzZXtsPTY5fX1lbHNle2w9Njl9fXdoaWxlKDApO2lmKChsfDApPT02OT9wOjApe2w9NzF9aWYoKGx8MCk9PTcxKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPXk7aWYoISgoYVtvPj4wXSYxKT09MCk/KG09Y1t1Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtuPj4wXSYxKT09MCl7aT1lO3JldHVybn1sPWNbbis4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWU7cmV0dXJufXZuKGwpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gUmgoYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7ZT1pO2k9aSsyMjR8MDt2PWUrMTk4fDA7dT1lKzE5NnwwO249ZSsxNnwwO289ZSs0fDA7cT1lKzE5MnwwO3M9ZSszMnwwO3I9ZTt0PWUrMjh8MDt5PWNbZj4+Ml18MDtBPWNbZz4+Ml18MDtnPWNbaCs0Pj4yXSY3NDtpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09NjQpe2c9OH1lbHNle2c9MTB9bWkobixoLHYsdSk7Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTA7aGcobywxMCk7aWYoKGFbbz4+MF0mMSk9PTApe0I9bysxfDA7dz1CO2Y9bys4fDB9ZWxzZXtCPW8rOHwwO3c9bysxfDA7Zj1CO0I9Y1tCPj4yXXwwfWNbcT4+Ml09QjtjW3I+PjJdPXM7Y1t0Pj4yXT0wO2g9bys0fDA7eD1hW3U+PjBdfDA7dT1vKzh8MDthOndoaWxlKDEpe2lmKCh5fDApIT0wKXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXo9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYoeil7YnJlYWt9ZWxzZXticmVhayBhfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCF6KXticmVhayBhfX1lbHNle2w9MTl9fWVsc2V7bD0xOX19d2hpbGUoMCk7aWYoKGx8MCk9PTE5KXtsPTA7aWYoeil7QT0wO2JyZWFrfWVsc2V7QT0wfX1EPWFbbz4+MF18MDtDPShEJjEpPT0wO2lmKEMpe0U9KEQmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1pZigoKGNbcT4+Ml18MCktQnwwKT09KEV8MCkpe2lmKEMpe0I9KEQmMjU1KT4+PjE7RT0oRCYyNTUpPj4+MTtEPUI8PDF9ZWxzZXtCPWNbaD4+Ml18MDtFPWNbaD4+Ml18MDtEPUI8PDF9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1CPDwyO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7RT1hW28+PjBdfDA7aWYoKEUmMSk9PTApe0Q9MTB9ZWxzZXtEPWNbbz4+Ml18MDtFPUQmMjU1O0Q9KEQmLTIpKyAtMXwwfUM9KEUmMSk9PTA7aWYoQyl7RT0oRSYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09RDw8MTticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO2lmKChhW28+PjBdJjEpPT0wKXtDPXd9ZWxzZXtDPWNbZj4+Ml18MH1jW3E+PjJdPUMrQjtCPUN9RD15KzEyfDA7RT1jW0Q+PjJdfDA7Qz15KzE2fDA7aWYoKEV8MCk9PShjW0M+PjJdfDApKXtFPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0U9ZFtFPj4wXXwwfWlmKChYaChFJjI1NSxnLEIscSx0LHgsbixzLHIsdil8MCkhPTApe2JyZWFrfXo9Y1tEPj4yXXwwO2lmKCh6fDApPT0oY1tDPj4yXXwwKSl7b2NbY1soY1t5Pj4yXXwwKSs0MD4+Ml0mMTI3XSh5KXwwO2NvbnRpbnVlfWVsc2V7Y1tEPj4yXT16KzE7Y29udGludWV9fXY9YVtuPj4wXXwwO2lmKCh2JjEpPT0wKXt2PSh2JjI1NSk+Pj4xfWVsc2V7dj1jW24rND4+Ml18MH1pZigodnwwKSE9MD8ocD1jW3I+PjJdfDAsKHAtc3wwKTwxNjApOjApe0U9Y1t0Pj4yXXwwO2Nbcj4+Ml09cCs0O2NbcD4+Ml09RX1jW2s+PjJdPUptKEIsY1txPj4yXXwwLGosZyl8MDtxayhuLHMsY1tyPj4yXXwwLGopO2lmKCF6KXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXA9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYocCl7YnJlYWt9ZWxzZXtsPTcxO2JyZWFrfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCFwKXtsPTcxfX1lbHNle2w9Njl9fWVsc2V7bD02OX19d2hpbGUoMCk7aWYoKGx8MCk9PTY5P3A6MCl7bD03MX1pZigobHwwKT09NzEpe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09eTtpZighKChhW28+PjBdJjEpPT0wKT8obT1jW3U+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW24+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWw9Y1tuKzg+PjJdfDA7aWYoKGx8MCk9PTApe2k9ZTtyZXR1cm59dm4obCk7aT1lO3JldHVybn1mdW5jdGlvbiBTaChiLGUsZixnLGgsaixrKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtlPWk7aT1pKzIyNHwwO3Y9ZSsxOTh8MDt1PWUrMTk2fDA7bj1lKzE2fDA7bz1lKzR8MDtxPWUrMTkyfDA7cz1lKzMyfDA7cj1lO3Q9ZSsyOHwwO3k9Y1tmPj4yXXwwO0E9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT02NCl7Zz04fWVsc2V7Zz0xMH1taShuLGgsdix1KTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qj1vKzF8MDt3PUI7Zj1vKzh8MH1lbHNle0I9bys4fDA7dz1vKzF8MDtmPUI7Qj1jW0I+PjJdfDB9Y1txPj4yXT1CO2Nbcj4+Ml09cztjW3Q+PjJdPTA7aD1vKzR8MDt4PWFbdT4+MF18MDt1PW8rOHwwO2E6d2hpbGUoMSl7aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9ej0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZih6KXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXope2JyZWFrIGF9fWVsc2V7bD0xOX19ZWxzZXtsPTE5fX13aGlsZSgwKTtpZigobHwwKT09MTkpe2w9MDtpZih6KXtBPTA7YnJlYWt9ZWxzZXtBPTB9fUQ9YVtvPj4wXXwwO0M9KEQmMSk9PTA7aWYoQyl7RT0oRCYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWlmKCgoY1txPj4yXXwwKS1CfDApPT0oRXwwKSl7aWYoQyl7Qj0oRCYyNTUpPj4+MTtFPShEJjI1NSk+Pj4xO0Q9Qjw8MX1lbHNle0I9Y1toPj4yXXwwO0U9Y1toPj4yXXwwO0Q9Qjw8MX1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUI8PDI7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtFPWFbbz4+MF18MDtpZigoRSYxKT09MCl7RD0xMH1lbHNle0Q9Y1tvPj4yXXwwO0U9RCYyNTU7RD0oRCYtMikrIC0xfDB9Qz0oRSYxKT09MDtpZihDKXtFPShFJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1EPDwxO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9d31lbHNle0M9Y1tmPj4yXXwwfWNbcT4+Ml09QytCO0I9Q31EPXkrMTJ8MDtFPWNbRD4+Ml18MDtDPXkrMTZ8MDtpZigoRXwwKT09KGNbQz4+Ml18MCkpe0U9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7RT1kW0U+PjBdfDB9aWYoKFhoKEUmMjU1LGcsQixxLHQseCxuLHMscix2KXwwKSE9MCl7YnJlYWt9ej1jW0Q+PjJdfDA7aWYoKHp8MCk9PShjW0M+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7Y29udGludWV9ZWxzZXtjW0Q+PjJdPXorMTtjb250aW51ZX19dj1hW24+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbbis0Pj4yXXwwfWlmKCh2fDApIT0wPyhwPWNbcj4+Ml18MCwocC1zfDApPDE2MCk6MCl7RT1jW3Q+PjJdfDA7Y1tyPj4yXT1wKzQ7Y1twPj4yXT1FfUQ9SW0oQixjW3E+PjJdfDAsaixnKXwwO0U9aztjW0U+PjJdPUQ7Y1tFKzQ+PjJdPUk7cWsobixzLGNbcj4+Ml18MCxqKTtpZigheil7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH1wPSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHApe2JyZWFrfWVsc2V7bD03MTticmVha319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZighcCl7bD03MX19ZWxzZXtsPTY5fX1lbHNle2w9Njl9fXdoaWxlKDApO2lmKChsfDApPT02OT9wOjApe2w9NzF9aWYoKGx8MCk9PTcxKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPXk7aWYoISgoYVtvPj4wXSYxKT09MCk/KG09Y1t1Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtuPj4wXSYxKT09MCl7aT1lO3JldHVybn1sPWNbbis4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWU7cmV0dXJufXZuKGwpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gVGgoYixlLGYsaCxqLGssbCl7Yj1ifDA7ZT1lfDA7Zj1mfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtlPWk7aT1pKzI1NnwwO3g9ZSsyMDh8MDt6PWUrMjAwfDA7dz1lKzI0MHwwO289ZTtwPWUrMTg4fDA7dj1lKzE4NHwwO3Q9ZSsxNnwwO3M9ZSsxNzZ8MDtyPWUrMTgwfDA7dT1lKzI0MXwwO3k9ZSsyNDJ8MDtBPWNbZj4+Ml18MDtEPWNbaD4+Ml18MDtuaShvLGoseCx6LHcpO2NbcCswPj4yXT0wO2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0wO2hnKHAsMTApO2lmKChhW3A+PjBdJjEpPT0wKXtFPXArMXwwO2g9RTtmPXArOHwwfWVsc2V7RT1wKzh8MDtoPXArMXwwO2Y9RTtFPWNbRT4+Ml18MH1jW3Y+PjJdPUU7Y1tzPj4yXT10O2Nbcj4+Ml09MDthW3U+PjBdPTE7YVt5Pj4wXT02OTtqPXArNHwwO3o9YVt6Pj4wXXwwO0I9YVt3Pj4wXXwwO3c9cCs4fDA7YTp3aGlsZSgxKXtpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCk9PShjW0ErMTY+PjJdfDApKXtIPShvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMTtBPUg/MDpBfX1lbHNle0E9MH1DPShBfDApPT0wO2Rve2lmKChEfDApIT0wKXtpZigoY1tEKzEyPj4yXXwwKSE9KGNbRCsxNj4+Ml18MCkpe2lmKEMpe2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwKT09LTEpKXtpZighQyl7YnJlYWsgYX19ZWxzZXttPTE1fX1lbHNle209MTV9fXdoaWxlKDApO2lmKChtfDApPT0xNSl7bT0wO2lmKEMpe0Q9MDticmVha31lbHNle0Q9MH19Rz1hW3A+PjBdfDA7Rj0oRyYxKT09MDtpZihGKXtIPShHJjI1NSk+Pj4xfWVsc2V7SD1jW2o+PjJdfDB9aWYoKChjW3Y+PjJdfDApLUV8MCk9PShIfDApKXtpZihGKXtFPShHJjI1NSk+Pj4xO0c9KEcmMjU1KT4+PjE7SD1FPDwxfWVsc2V7RT1jW2o+PjJdfDA7Rz1jW2o+PjJdfDA7SD1FPDwxfWRve2lmKCEoRz4+PjA8SD4+PjApKXtpZihGKXthW3ArSCsxPj4wXT0wO2FbcD4+MF09RTw8MjticmVha31lbHNle2FbKGNbdz4+Ml18MCkrSD4+MF09MDtjW2o+PjJdPUg7YnJlYWt9fWVsc2V7aGcocCxILUd8MCl9fXdoaWxlKDApO0g9YVtwPj4wXXwwO2lmKChIJjEpPT0wKXtHPTEwfWVsc2V7Rz1jW3A+PjJdfDA7SD1HJjI1NTtHPShHJi0yKSsgLTF8MH1GPShIJjEpPT0wO2lmKEYpe0g9KEgmMjU1KT4+PjF9ZWxzZXtIPWNbaj4+Ml18MH1kb3tpZighKEg+Pj4wPEc+Pj4wKSl7aWYoRil7YVtwK0crMT4+MF09MDthW3A+PjBdPUc8PDE7YnJlYWt9ZWxzZXthWyhjW3c+PjJdfDApK0c+PjBdPTA7Y1tqPj4yXT1HO2JyZWFrfX1lbHNle2hnKHAsRy1IfDApfX13aGlsZSgwKTtpZigoYVtwPj4wXSYxKT09MCl7Rj1ofWVsc2V7Rj1jW2Y+PjJdfDB9Y1t2Pj4yXT1GK0U7RT1GfUc9QSsxMnwwO0g9Y1tHPj4yXXwwO0Y9QSsxNnwwO2lmKChIfDApPT0oY1tGPj4yXXwwKSl7SD1vY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDB9ZWxzZXtIPWRbSD4+MF18MH1pZigob2koSCYyNTUsdSx5LEUsdix6LEIsbyx0LHMscix4KXwwKSE9MCl7YnJlYWt9Qz1jW0c+PjJdfDA7aWYoKEN8MCk9PShjW0Y+PjJdfDApKXtvY1tjWyhjW0E+PjJdfDApKzQwPj4yXSYxMjddKEEpfDA7Y29udGludWV9ZWxzZXtjW0c+PjJdPUMrMTtjb250aW51ZX19eD1hW28+PjBdfDA7aWYoKHgmMSk9PTApe3g9KHgmMjU1KT4+PjF9ZWxzZXt4PWNbbys0Pj4yXXwwfWlmKCgoeHwwKSE9MD8oYVt1Pj4wXXwwKSE9MDowKT8ocT1jW3M+PjJdfDAsKHEtdHwwKTwxNjApOjApe0g9Y1tyPj4yXXwwO2Nbcz4+Ml09cSs0O2NbcT4+Ml09SH1nW2w+PjJdPStIbShFLGNbdj4+Ml18MCxrKTtxayhvLHQsY1tzPj4yXXwwLGspO2lmKCFDKXtpZigoY1tBKzEyPj4yXXwwKT09KGNbQSsxNj4+Ml18MCkpe0g9KG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xO0E9SD8wOkF9fWVsc2V7QT0wfWw9KEF8MCk9PTA7ZG97aWYoKER8MCkhPTApe2lmKChjW0QrMTI+PjJdfDApIT0oY1tEKzE2Pj4yXXwwKSl7aWYobCl7YnJlYWt9ZWxzZXttPTY4O2JyZWFrfX1pZighKChvY1tjWyhjW0Q+PjJdfDApKzM2Pj4yXSYxMjddKEQpfDApPT0tMSkpe2lmKCFsKXttPTY4fX1lbHNle209NjZ9fWVsc2V7bT02Nn19d2hpbGUoMCk7aWYoKG18MCk9PTY2P2w6MCl7bT02OH1pZigobXwwKT09Njgpe2Nbaz4+Ml09Y1trPj4yXXwyfWNbYj4+Ml09QTtpZighKChhW3A+PjBdJjEpPT0wKT8obj1jW3c+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKChhW28+PjBdJjEpPT0wKXtpPWU7cmV0dXJufW09Y1tvKzg+PjJdfDA7aWYoKG18MCk9PTApe2k9ZTtyZXR1cm59dm4obSk7aT1lO3JldHVybn1mdW5jdGlvbiBVaChiLGUsZixnLGosayxsKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wO2U9aTtpPWkrMjU2fDA7eD1lKzIwOHwwO3o9ZSsyMDB8MDt3PWUrMjQwfDA7bz1lO3A9ZSsxODh8MDt2PWUrMTg0fDA7dD1lKzE2fDA7cz1lKzE3NnwwO3I9ZSsxODB8MDt1PWUrMjQxfDA7eT1lKzI0MnwwO0E9Y1tmPj4yXXwwO0Q9Y1tnPj4yXXwwO25pKG8saix4LHosdyk7Y1twKzA+PjJdPTA7Y1twKzQ+PjJdPTA7Y1twKzg+PjJdPTA7aGcocCwxMCk7aWYoKGFbcD4+MF0mMSk9PTApe0U9cCsxfDA7Zz1FO2Y9cCs4fDB9ZWxzZXtFPXArOHwwO2c9cCsxfDA7Zj1FO0U9Y1tFPj4yXXwwfWNbdj4+Ml09RTtjW3M+PjJdPXQ7Y1tyPj4yXT0wO2FbdT4+MF09MTthW3k+PjBdPTY5O2o9cCs0fDA7ej1hW3o+PjBdfDA7Qj1hW3c+PjBdfDA7dz1wKzh8MDthOndoaWxlKDEpe2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKT09KGNbQSsxNj4+Ml18MCkpe0g9KG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xO0E9SD8wOkF9fWVsc2V7QT0wfUM9KEF8MCk9PTA7ZG97aWYoKER8MCkhPTApe2lmKChjW0QrMTI+PjJdfDApIT0oY1tEKzE2Pj4yXXwwKSl7aWYoQyl7YnJlYWt9ZWxzZXticmVhayBhfX1pZighKChvY1tjWyhjW0Q+PjJdfDApKzM2Pj4yXSYxMjddKEQpfDApPT0tMSkpe2lmKCFDKXticmVhayBhfX1lbHNle209MTV9fWVsc2V7bT0xNX19d2hpbGUoMCk7aWYoKG18MCk9PTE1KXttPTA7aWYoQyl7RD0wO2JyZWFrfWVsc2V7RD0wfX1HPWFbcD4+MF18MDtGPShHJjEpPT0wO2lmKEYpe0g9KEcmMjU1KT4+PjF9ZWxzZXtIPWNbaj4+Ml18MH1pZigoKGNbdj4+Ml18MCktRXwwKT09KEh8MCkpe2lmKEYpe0U9KEcmMjU1KT4+PjE7Rz0oRyYyNTUpPj4+MTtIPUU8PDF9ZWxzZXtFPWNbaj4+Ml18MDtHPWNbaj4+Ml18MDtIPUU8PDF9ZG97aWYoIShHPj4+MDxIPj4+MCkpe2lmKEYpe2FbcCtIKzE+PjBdPTA7YVtwPj4wXT1FPDwyO2JyZWFrfWVsc2V7YVsoY1t3Pj4yXXwwKStIPj4wXT0wO2Nbaj4+Ml09SDticmVha319ZWxzZXtoZyhwLEgtR3wwKX19d2hpbGUoMCk7SD1hW3A+PjBdfDA7aWYoKEgmMSk9PTApe0c9MTB9ZWxzZXtHPWNbcD4+Ml18MDtIPUcmMjU1O0c9KEcmLTIpKyAtMXwwfUY9KEgmMSk9PTA7aWYoRil7SD0oSCYyNTUpPj4+MX1lbHNle0g9Y1tqPj4yXXwwfWRve2lmKCEoSD4+PjA8Rz4+PjApKXtpZihGKXthW3ArRysxPj4wXT0wO2FbcD4+MF09Rzw8MTticmVha31lbHNle2FbKGNbdz4+Ml18MCkrRz4+MF09MDtjW2o+PjJdPUc7YnJlYWt9fWVsc2V7aGcocCxHLUh8MCl9fXdoaWxlKDApO2lmKChhW3A+PjBdJjEpPT0wKXtGPWd9ZWxzZXtGPWNbZj4+Ml18MH1jW3Y+PjJdPUYrRTtFPUZ9Rz1BKzEyfDA7SD1jW0c+PjJdfDA7Rj1BKzE2fDA7aWYoKEh8MCk9PShjW0Y+PjJdfDApKXtIPW9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MH1lbHNle0g9ZFtIPj4wXXwwfWlmKChvaShIJjI1NSx1LHksRSx2LHosQixvLHQscyxyLHgpfDApIT0wKXticmVha31DPWNbRz4+Ml18MDtpZigoQ3wwKT09KGNbRj4+Ml18MCkpe29jW2NbKGNbQT4+Ml18MCkrNDA+PjJdJjEyN10oQSl8MDtjb250aW51ZX1lbHNle2NbRz4+Ml09QysxO2NvbnRpbnVlfX14PWFbbz4+MF18MDtpZigoeCYxKT09MCl7eD0oeCYyNTUpPj4+MX1lbHNle3g9Y1tvKzQ+PjJdfDB9aWYoKCh4fDApIT0wPyhhW3U+PjBdfDApIT0wOjApPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7SD1jW3I+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1IfWhbbD4+M109K0dtKEUsY1t2Pj4yXXwwLGspO3FrKG8sdCxjW3M+PjJdfDAsayk7aWYoIUMpe2lmKChjW0ErMTI+PjJdfDApPT0oY1tBKzE2Pj4yXXwwKSl7SD0ob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTE7QT1IPzA6QX19ZWxzZXtBPTB9bD0oQXwwKT09MDtkb3tpZigoRHwwKSE9MCl7aWYoKGNbRCsxMj4+Ml18MCkhPShjW0QrMTY+PjJdfDApKXtpZihsKXticmVha31lbHNle209Njg7YnJlYWt9fWlmKCEoKG9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MCk9PS0xKSl7aWYoIWwpe209Njh9fWVsc2V7bT02Nn19ZWxzZXttPTY2fX13aGlsZSgwKTtpZigobXwwKT09NjY/bDowKXttPTY4fWlmKChtfDApPT02OCl7Y1trPj4yXT1jW2s+PjJdfDJ9Y1tiPj4yXT1BO2lmKCEoKGFbcD4+MF0mMSk9PTApPyhuPWNbdz4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZTtyZXR1cm59bT1jW28rOD4+Ml18MDtpZigobXwwKT09MCl7aT1lO3JldHVybn12bihtKTtpPWU7cmV0dXJufWZ1bmN0aW9uIFZoKGIsZSxmLGcsaixrLGwpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7ZT1pO2k9aSsyNTZ8MDt4PWUrMjA4fDA7ej1lKzIwMHwwO3c9ZSsyNDB8MDtvPWU7cD1lKzE4OHwwO3Y9ZSsxODR8MDt0PWUrMTZ8MDtzPWUrMTc2fDA7cj1lKzE4MHwwO3U9ZSsyNDF8MDt5PWUrMjQyfDA7QT1jW2Y+PjJdfDA7RD1jW2c+PjJdfDA7bmkobyxqLHgseix3KTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtoZyhwLDEwKTtpZigoYVtwPj4wXSYxKT09MCl7RT1wKzF8MDtnPUU7Zj1wKzh8MH1lbHNle0U9cCs4fDA7Zz1wKzF8MDtmPUU7RT1jW0U+PjJdfDB9Y1t2Pj4yXT1FO2Nbcz4+Ml09dDtjW3I+PjJdPTA7YVt1Pj4wXT0xO2FbeT4+MF09Njk7aj1wKzR8MDt6PWFbej4+MF18MDtCPWFbdz4+MF18MDt3PXArOHwwO2E6d2hpbGUoMSl7aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApPT0oY1tBKzE2Pj4yXXwwKSl7SD0ob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTE7QT1IPzA6QX19ZWxzZXtBPTB9Qz0oQXwwKT09MDtkb3tpZigoRHwwKSE9MCl7aWYoKGNbRCsxMj4+Ml18MCkhPShjW0QrMTY+PjJdfDApKXtpZihDKXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MCk9PS0xKSl7aWYoIUMpe2JyZWFrIGF9fWVsc2V7bT0xNX19ZWxzZXttPTE1fX13aGlsZSgwKTtpZigobXwwKT09MTUpe209MDtpZihDKXtEPTA7YnJlYWt9ZWxzZXtEPTB9fUc9YVtwPj4wXXwwO0Y9KEcmMSk9PTA7aWYoRil7SD0oRyYyNTUpPj4+MX1lbHNle0g9Y1tqPj4yXXwwfWlmKCgoY1t2Pj4yXXwwKS1FfDApPT0oSHwwKSl7aWYoRil7RT0oRyYyNTUpPj4+MTtHPShHJjI1NSk+Pj4xO0g9RTw8MX1lbHNle0U9Y1tqPj4yXXwwO0c9Y1tqPj4yXXwwO0g9RTw8MX1kb3tpZighKEc+Pj4wPEg+Pj4wKSl7aWYoRil7YVtwK0grMT4+MF09MDthW3A+PjBdPUU8PDI7YnJlYWt9ZWxzZXthWyhjW3c+PjJdfDApK0g+PjBdPTA7Y1tqPj4yXT1IO2JyZWFrfX1lbHNle2hnKHAsSC1HfDApfX13aGlsZSgwKTtIPWFbcD4+MF18MDtpZigoSCYxKT09MCl7Rz0xMH1lbHNle0c9Y1twPj4yXXwwO0g9RyYyNTU7Rz0oRyYtMikrIC0xfDB9Rj0oSCYxKT09MDtpZihGKXtIPShIJjI1NSk+Pj4xfWVsc2V7SD1jW2o+PjJdfDB9ZG97aWYoIShIPj4+MDxHPj4+MCkpe2lmKEYpe2FbcCtHKzE+PjBdPTA7YVtwPj4wXT1HPDwxO2JyZWFrfWVsc2V7YVsoY1t3Pj4yXXwwKStHPj4wXT0wO2Nbaj4+Ml09RzticmVha319ZWxzZXtoZyhwLEctSHwwKX19d2hpbGUoMCk7aWYoKGFbcD4+MF0mMSk9PTApe0Y9Z31lbHNle0Y9Y1tmPj4yXXwwfWNbdj4+Ml09RitFO0U9Rn1HPUErMTJ8MDtIPWNbRz4+Ml18MDtGPUErMTZ8MDtpZigoSHwwKT09KGNbRj4+Ml18MCkpe0g9b2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwfWVsc2V7SD1kW0g+PjBdfDB9aWYoKG9pKEgmMjU1LHUseSxFLHYseixCLG8sdCxzLHIseCl8MCkhPTApe2JyZWFrfUM9Y1tHPj4yXXwwO2lmKChDfDApPT0oY1tGPj4yXXwwKSl7b2NbY1soY1tBPj4yXXwwKSs0MD4+Ml0mMTI3XShBKXwwO2NvbnRpbnVlfWVsc2V7Y1tHPj4yXT1DKzE7Y29udGludWV9fXg9YVtvPj4wXXwwO2lmKCh4JjEpPT0wKXt4PSh4JjI1NSk+Pj4xfWVsc2V7eD1jW28rND4+Ml18MH1pZigoKHh8MCkhPTA/KGFbdT4+MF18MCkhPTA6MCk/KHE9Y1tzPj4yXXwwLChxLXR8MCk8MTYwKTowKXtIPWNbcj4+Ml18MDtjW3M+PjJdPXErNDtjW3E+PjJdPUh9aFtsPj4zXT0rRm0oRSxjW3Y+PjJdfDAsayk7cWsobyx0LGNbcz4+Ml18MCxrKTtpZighQyl7aWYoKGNbQSsxMj4+Ml18MCk9PShjW0ErMTY+PjJdfDApKXtIPShvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMTtBPUg/MDpBfX1lbHNle0E9MH1sPShBfDApPT0wO2Rve2lmKChEfDApIT0wKXtpZigoY1tEKzEyPj4yXXwwKSE9KGNbRCsxNj4+Ml18MCkpe2lmKGwpe2JyZWFrfWVsc2V7bT02ODticmVha319aWYoISgob2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwKT09LTEpKXtpZighbCl7bT02OH19ZWxzZXttPTY2fX1lbHNle209NjZ9fXdoaWxlKDApO2lmKChtfDApPT02Nj9sOjApe209Njh9aWYoKG18MCk9PTY4KXtjW2s+PjJdPWNbaz4+Ml18Mn1jW2I+PjJdPUE7aWYoISgoYVtwPj4wXSYxKT09MCk/KG49Y1t3Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZigoYVtvPj4wXSYxKT09MCl7aT1lO3JldHVybn1tPWNbbys4Pj4yXXwwO2lmKChtfDApPT0wKXtpPWU7cmV0dXJufXZuKG0pO2k9ZTtyZXR1cm59ZnVuY3Rpb24gV2goYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtlPWk7aT1pKzIyNHwwO249ZTtvPWUrMTg4fDA7bT1lKzE3NnwwO3c9ZSsxNnwwO3E9Y1toKzI4Pj4yXXwwO0Q9cSs0fDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ1NjtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDU2LG4pfWg9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3I9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcj4+Mj4+PjA+aD4+PjA/KHA9Y1tyKyhoPDwyKT4+Ml18MCwocHwwKSE9MCk6MCl7dWNbY1soY1twPj4yXXwwKSszMj4+Ml0mMzFdKHAsMTIwMTYsMTIwNDJ8MCxvKXwwO0M9cSs0fDA7RD1jW0M+PjJdfDA7Y1tDPj4yXT1EKyAtMTtpZigoRHwwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfWNbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2g9ejtxPW0rOHwwfWVsc2V7ej1tKzh8MDtoPW0rMXwwO3E9ejt6PWNbej4+Ml18MH11PW0rNHwwO3Y9bysyNHwwO3M9bysyNXwwO3Q9bysyNnwwO3I9bztwPW0rOHwwO3k9Y1tmPj4yXXwwO3g9MDtBPXo7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApPyhvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTowKXtjW2Y+PjJdPTA7eT0wfX1lbHNle3k9MH1DPSh5fDApPT0wO0I9Y1tnPj4yXXwwO2Rve2lmKChCfDApIT0wKXtpZigoY1tCKzEyPj4yXXwwKSE9KGNbQisxNj4+Ml18MCkpe2lmKEMpe2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwKT09LTEpKXtpZihDKXticmVha31lbHNle2JyZWFrIGF9fWVsc2V7Y1tnPj4yXT0wO2w9MjY7YnJlYWt9fWVsc2V7bD0yNn19d2hpbGUoMCk7aWYoKGx8MCk9PTI2PyhsPTAsQyk6MCl7YnJlYWt9RD1hW20+PjBdfDA7Qj0oRCYxKT09MDtpZihCKXtDPShEJjI1NSk+Pj4xfWVsc2V7Qz1jW3U+PjJdfDB9aWYoKEEtenwwKT09KEN8MCkpe2lmKEIpe0E9KEQmMjU1KT4+PjE7Qz0oRCYyNTUpPj4+MTt6PUE8PDF9ZWxzZXtBPWNbdT4+Ml18MDtDPWNbdT4+Ml18MDt6PUE8PDF9ZG97aWYoIShDPj4+MDx6Pj4+MCkpe2lmKEIpe2FbbSt6KzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKSt6Pj4wXT0wO2NbdT4+Ml09ejticmVha319ZWxzZXtoZyhtLHotQ3wwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe3o9MTB9ZWxzZXt6PWNbbT4+Ml18MDtDPXomMjU1O3o9KHomLTIpKyAtMXwwfUI9KEMmMSk9PTA7aWYoQil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t1Pj4yXXwwfWRve2lmKCEoQz4+PjA8ej4+PjApKXtpZihCKXthW20reisxPj4wXT0wO2FbbT4+MF09ejw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrej4+MF09MDtjW3U+PjJdPXo7YnJlYWt9fWVsc2V7aGcobSx6LUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWh9ZWxzZXt6PWNbcT4+Ml18MH1BPXorQXwwfUI9Y1t5KzEyPj4yXXwwO2lmKChCfDApPT0oY1t5KzE2Pj4yXXwwKSl7eT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXt5PWRbQj4+MF18MH1CPXkmMjU1O3k9KEF8MCk9PSh6fDApO2Rve2lmKHkpe0M9KGFbdj4+MF18MCk9PUI8PDI0Pj4yNDtpZighQz8hKChhW3M+PjBdfDApPT1CPDwyND4+MjQpOjApe0M9bztsPTYxO2JyZWFrfWFbQT4+MF09Qz80Mzo0NTtBPUErMXwwO3g9MH1lbHNle0M9bztsPTYxfX13aGlsZSgwKTtkb3tpZigobHwwKT09NjEpe3doaWxlKDEpe2w9MDtpZigoYVtDPj4wXXwwKT09Qjw8MjQ+PjI0KXticmVha31DPUMrMXwwO2lmKChDfDApPT0odHwwKSl7Qz10O2JyZWFrfWVsc2V7bD02MX19Qj1DLXJ8MDtpZigoQnwwKT4yMyl7YnJlYWsgYX1pZigoQnwwKTwyMil7YVtBPj4wXT1hWzEyMDE2K0I+PjBdfDA7QT1BKzF8MDt4PXgrMXwwO2JyZWFrfWlmKHkpe3o9QTticmVhayBhfWlmKChBLXp8MCk+PTMpe2JyZWFrIGF9aWYoKGFbQSsgLTE+PjBdfDApIT00OCl7YnJlYWsgYX1hW0E+PjBdPWFbMTIwMTYrQj4+MF18MDtBPUErMXwwO3g9MH19d2hpbGUoMCk7eT1jW2Y+PjJdfDA7Qj15KzEyfDA7Qz1jW0I+PjJdfDA7aWYoKEN8MCk9PShjW3krMTY+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7RD13O3c9RDtjb250aW51ZX1lbHNle2NbQj4+Ml09QysxO0Q9dzt3PUQ7Y29udGludWV9fWFbeiszPj4wXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1EPWNbMzM0MF18MDtjW24+PjJdPWs7aWYoKFloKHosRCxuKXwwKSE9MSl7Y1tqPj4yXT00fWs9Y1tmPj4yXXwwO2lmKChrfDApIT0wKXtpZigoY1trKzEyPj4yXXwwKT09KGNbaysxNj4+Ml18MCk/KG9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MCk9PS0xOjApe2NbZj4+Ml09MDtmPTB9ZWxzZXtmPWt9fWVsc2V7Zj0wfWs9KGZ8MCk9PTA7bj1jW2c+PjJdfDA7ZG97aWYoKG58MCkhPTApe2lmKChjW24rMTI+PjJdfDApIT0oY1tuKzE2Pj4yXXwwKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTkyO2JyZWFrfX1pZighKChvY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDApPT0tMSkpe2lmKGspe2JyZWFrfWVsc2V7bD05MjticmVha319ZWxzZXtjW2c+PjJdPTA7bD05MDticmVha319ZWxzZXtsPTkwfX13aGlsZSgwKTtpZigobHwwKT09OTA/azowKXtsPTkyfWlmKChsfDApPT05Mil7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1mO2lmKChhW20+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWo9Y1twPj4yXXwwO2lmKChqfDApPT0wKXtpPWU7cmV0dXJufXZuKGopO2k9ZTtyZXR1cm59RD1YYSg0KXwwO2NbRD4+Ml09MjEzMDQ7d2IoRHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gWGgoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MDtuPWk7cD1jW2Y+PjJdfDA7bz0ocHwwKT09KGV8MCk7ZG97aWYobyl7cT0oYVttKzI0Pj4wXXwwKT09Yjw8MjQ+PjI0O2lmKCFxPyEoKGFbbSsyNT4+MF18MCk9PWI8PDI0Pj4yNCk6MCl7YnJlYWt9Y1tmPj4yXT1lKzE7YVtlPj4wXT1xPzQzOjQ1O2NbZz4+Ml09MDtxPTA7aT1uO3JldHVybiBxfDB9fXdoaWxlKDApO3E9YVtqPj4wXXwwO2lmKChxJjEpPT0wKXtqPShxJjI1NSk+Pj4xfWVsc2V7aj1jW2orND4+Ml18MH1pZigoanwwKSE9MD9iPDwyND4+MjQ9PWg8PDI0Pj4yNDowKXtvPWNbbD4+Ml18MDtpZigoby1rfDApPj0xNjApe3E9MDtpPW47cmV0dXJuIHF8MH1xPWNbZz4+Ml18MDtjW2w+PjJdPW8rNDtjW28+PjJdPXE7Y1tnPj4yXT0wO3E9MDtpPW47cmV0dXJuIHF8MH1sPW0rMjZ8MDtrPW07d2hpbGUoMSl7aWYoKGFbaz4+MF18MCk9PWI8PDI0Pj4yNCl7YnJlYWt9az1rKzF8MDtpZigoa3wwKT09KGx8MCkpe2s9bDticmVha319bT1rLW18MDtpZigobXwwKT4yMyl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigoZHwwKT09MTB8KGR8MCk9PTgpe2lmKChtfDApPj0oZHwwKSl7cT0tMTtpPW47cmV0dXJuIHF8MH19ZWxzZSBpZigoZHwwKT09MTY/KG18MCk+PTIyOjApe2lmKG8pe3E9LTE7aT1uO3JldHVybiBxfDB9aWYoKHAtZXwwKT49Myl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigoYVtwKyAtMT4+MF18MCkhPTQ4KXtxPS0xO2k9bjtyZXR1cm4gcXwwfWNbZz4+Ml09MDtxPWFbMTIwMTYrbT4+MF18MDtjW2Y+PjJdPXArMTthW3A+PjBdPXE7cT0wO2k9bjtyZXR1cm4gcXwwfXE9YVsxMjAxNittPj4wXXwwO2NbZj4+Ml09cCsxO2FbcD4+MF09cTtjW2c+PjJdPShjW2c+PjJdfDApKzE7cT0wO2k9bjtyZXR1cm4gcXwwfWZ1bmN0aW9uIFloKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDtlPWk7aT1pKzE2fDA7Zj1lO2NbZj4+Ml09ZDtiPWliKGJ8MCl8MDthPU1hKGF8MCwxMjA1NixmfDApfDA7aWYoKGJ8MCk9PTApe2k9ZTtyZXR1cm4gYXwwfWliKGJ8MCl8MDtpPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiBaaChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBfaChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gJGgoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7az1pO2k9aSs2NHwwO3A9azt1PWsrNDh8MDtxPWsrNTJ8MDt0PWsrNTZ8MDtzPWsrMTZ8MDtyPWsrMTJ8MDtsPWsrMjR8MDtpZigoY1tnKzQ+PjJdJjF8MCk9PTApe2NbcT4+Ml09LTE7bD1jWyhjW2Q+PjJdfDApKzE2Pj4yXXwwO2Nbcz4+Ml09Y1tlPj4yXTtjW3I+PjJdPWNbZj4+Ml07Y1t1KzA+PjJdPWNbcyswPj4yXTtjW3ArMD4+Ml09Y1tyKzA+PjJdO2ljW2wmNjNdKHQsZCx1LHAsZyxoLHEpO2w9Y1t0Pj4yXXwwO2NbZT4+Ml09bDtlPWNbcT4+Ml18MDtpZigoZXwwKT09MSl7YVtqPj4wXT0xfWVsc2UgaWYoKGV8MCk9PTApe2Fbaj4+MF09MH1lbHNle2Fbaj4+MF09MTtjW2g+PjJdPTR9Y1tiPj4yXT1sO2k9aztyZXR1cm59cT1nKzI4fDA7cj1jW3E+PjJdfDA7ZD1yKzR8MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW3A+PjJdPTEzNDQ4O2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM0NDgscCl9cz0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dD1jW3IrOD4+Ml18MDtpZigoY1tyKzEyPj4yXXwwKS10Pj4yPj4+MD5zPj4+MD8obz1jW3QrKHM8PDIpPj4yXXwwLChvfDApIT0wKTowKXt1PXIrNHwwO2Q9Y1t1Pj4yXXwwO2NbdT4+Ml09ZCsgLTE7aWYoKGR8MCk9PTApe2xjW2NbKGNbcj4+Ml18MCkrOD4+Ml0mMjU1XShyKX1xPWNbcT4+Ml18MDtkPXErNHwwO2NbZD4+Ml09KGNbZD4+Ml18MCkrMTtpZighKChjWzM0MDJdfDApPT0tMSkpe2NbcD4+Ml09MTM2MDg7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzYwOCxwKX1wPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtyPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXI+PjI+Pj4wPnA+Pj4wPyhuPWNbcisocDw8Mik+PjJdfDAsKG58MCkhPTApOjApe3U9cSs0fDA7ZD1jW3U+PjJdfDA7Y1t1Pj4yXT1kKyAtMTtpZigoZHwwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfW1jW2NbKGNbbj4+Ml18MCkrMjQ+PjJdJjEyN10obCxuKTtkPWwrMTJ8MDttY1tjWyhjW24+PjJdfDApKzI4Pj4yXSYxMjddKGQsbik7YVtqPj4wXT0oYWkoZSxjW2Y+PjJdfDAsbCxsKzI0fDAsbyxoLDEpfDApPT0obHwwKSYxO2NbYj4+Ml09Y1tlPj4yXTtpZighKChhW2Q+PjBdJjEpPT0wKT8obT1jW2wrMjA+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW2w+PjBdJjEpPT0wKXtpPWs7cmV0dXJufWI9Y1tsKzg+PjJdfDA7aWYoKGJ8MCk9PTApe2k9aztyZXR1cm59dm4oYik7aT1rO3JldHVybn1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBhaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO2w9aTtpPWkrMTEyfDA7bj1sO3M9KGYtZXwwKS8xMnwwO2lmKHM+Pj4wPjEwMCl7bj11bihzKXwwO2lmKChufDApPT0wKXt6PVhhKDQpfDA7Y1t6Pj4yXT0yMjY4MDt3Yih6fDAsMjI3MjgsMjA2KX1lbHNle2s9bn19ZWxzZXtrPTB9bz0oZXwwKT09KGZ8MCk7aWYobyl7dD0wfWVsc2V7cD1lO3Q9MDtxPW47d2hpbGUoMSl7cj1hW3A+PjBdfDA7aWYoKHImMSk9PTApe3I9KHImMjU1KT4+PjF9ZWxzZXtyPWNbcCs0Pj4yXXwwfWlmKChyfDApPT0wKXthW3E+PjBdPTI7dD10KzF8MDtzPXMrIC0xfDB9ZWxzZXthW3E+PjBdPTF9cD1wKzEyfDA7aWYoKHB8MCk9PShmfDApKXticmVha31lbHNle3E9cSsxfDB9fX1wPTA7YTp3aGlsZSgxKXt1PShzfDApIT0wO3E9cDt3aGlsZSgxKXtyPWNbYj4+Ml18MDtkb3tpZigocnwwKSE9MCl7cD1jW3IrMTI+PjJdfDA7aWYoKHB8MCk9PShjW3IrMTY+PjJdfDApKXtwPW9jW2NbKGNbcj4+Ml18MCkrMzY+PjJdJjEyN10ocil8MH1lbHNle3A9Y1twPj4yXXwwfWlmKChwfDApPT0tMSl7Y1tiPj4yXT0wO3I9MTticmVha31lbHNle3I9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7cj0xfX13aGlsZSgwKTtpZigoZHwwKT09MCl7cD0wO3c9MTtkPTB9ZWxzZXtwPWNbZCsxMj4+Ml18MDtpZigocHwwKT09KGNbZCsxNj4+Ml18MCkpe3A9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7cD1jW3A+PjJdfDB9ej0ocHwwKT09LTE7cD16PzA6ZDt3PXo/MTowO2Q9ej8wOmR9dj1jW2I+PjJdfDA7aWYoISgocl53KSZ1KSl7YnJlYWsgYX1wPWNbdisxMj4+Ml18MDtpZigocHwwKT09KGNbdisxNj4+Ml18MCkpe3I9b2NbY1soY1t2Pj4yXXwwKSszNj4+Ml0mMTI3XSh2KXwwfWVsc2V7cj1jW3A+PjJdfDB9aWYoIWope3I9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcscil8MH1wPXErMXwwO2lmKG8pe3E9cH1lbHNle2JyZWFrfX1iOmRve2lmKGope3c9MDt1PWU7dj1uO3doaWxlKDEpe2Rve2lmKChhW3Y+PjBdfDApPT0xKXt4PWFbdT4+MF18MDt5PSh4JjEpPT0wO2lmKHkpe3o9dSs0fDB9ZWxzZXt6PWNbdSs4Pj4yXXwwfWlmKChyfDApIT0oY1t6KyhxPDwyKT4+Ml18MCkpe2Fbdj4+MF09MDtzPXMrIC0xfDA7YnJlYWt9aWYoeSl7dz0oeCYyNTUpPj4+MX1lbHNle3c9Y1t1KzQ+PjJdfDB9aWYoKHd8MCk9PShwfDApKXthW3Y+PjBdPTI7dz0xO3Q9dCsxfDA7cz1zKyAtMXwwfWVsc2V7dz0xfX19d2hpbGUoMCk7dT11KzEyfDA7aWYoKHV8MCk9PShmfDApKXticmVhayBifXY9disxfDB9fWVsc2V7dz0wO3U9ZTt2PW47d2hpbGUoMSl7ZG97aWYoKGFbdj4+MF18MCk9PTEpe2lmKChhW3U+PjBdJjEpPT0wKXt4PXUrNHwwfWVsc2V7eD1jW3UrOD4+Ml18MH1pZigocnwwKSE9KHhjW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjYzXShnLGNbeCsocTw8Mik+PjJdfDApfDApKXthW3Y+PjBdPTA7cz1zKyAtMXwwO2JyZWFrfXc9YVt1Pj4wXXwwO2lmKCh3JjEpPT0wKXt3PSh3JjI1NSk+Pj4xfWVsc2V7dz1jW3UrND4+Ml18MH1pZigod3wwKT09KHB8MCkpe2Fbdj4+MF09Mjt3PTE7dD10KzF8MDtzPXMrIC0xfDB9ZWxzZXt3PTF9fX13aGlsZSgwKTt1PXUrMTJ8MDtpZigodXwwKT09KGZ8MCkpe2JyZWFrIGJ9dj12KzF8MH19fXdoaWxlKDApO2lmKCF3KXtjb250aW51ZX11PWNbYj4+Ml18MDtyPXUrMTJ8MDtxPWNbcj4+Ml18MDtpZigocXwwKT09KGNbdSsxNj4+Ml18MCkpe29jW2NbKGNbdT4+Ml18MCkrNDA+PjJdJjEyN10odSl8MH1lbHNle2Nbcj4+Ml09cSs0fWlmKChzK3R8MCk+Pj4wPDIpe2NvbnRpbnVlfWVsc2V7cj1lO3E9bn13aGlsZSgxKXtpZigoYVtxPj4wXXwwKT09Mil7dT1hW3I+PjBdfDA7aWYoKHUmMSk9PTApe3U9KHUmMjU1KT4+PjF9ZWxzZXt1PWNbcis0Pj4yXXwwfWlmKCh1fDApIT0ocHwwKSl7YVtxPj4wXT0wO3Q9dCsgLTF8MH19cj1yKzEyfDA7aWYoKHJ8MCk9PShmfDApKXtjb250aW51ZSBhfWVsc2V7cT1xKzF8MH19fWRve2lmKCh2fDApIT0wKXtqPWNbdisxMj4+Ml18MDtpZigoanwwKT09KGNbdisxNj4+Ml18MCkpe2o9b2NbY1soY1t2Pj4yXXwwKSszNj4+Ml0mMTI3XSh2KXwwfWVsc2V7aj1jW2o+PjJdfDB9aWYoKGp8MCk9PS0xKXtjW2I+PjJdPTA7Yj0xO2JyZWFrfWVsc2V7Yj0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtiPTF9fXdoaWxlKDApO2lmKChwfDApIT0wKXtqPWNbcCsxMj4+Ml18MDtpZigoanwwKT09KGNbcCsxNj4+Ml18MCkpe2o9b2NbY1soY1twPj4yXXwwKSszNj4+Ml0mMTI3XShwKXwwfWVsc2V7aj1jW2o+PjJdfDB9aWYoISgoanwwKT09LTEpKXtpZighYil7bT04OH19ZWxzZXttPTg2fX1lbHNle209ODZ9aWYoKG18MCk9PTg2P2I6MCl7bT04OH1pZigobXwwKT09ODgpe2NbaD4+Ml09Y1toPj4yXXwyfWM6ZG97aWYoIW8pe2lmKChhW24+PjBdfDApPT0yKXtmPWV9ZWxzZXt3aGlsZSgxKXtlPWUrMTJ8MDtuPW4rMXwwO2lmKChlfDApPT0oZnwwKSl7bT05MzticmVhayBjfWlmKChhW24+PjBdfDApPT0yKXtmPWU7YnJlYWt9fX19ZWxzZXttPTkzfX13aGlsZSgwKTtpZigobXwwKT09OTMpe2NbaD4+Ml09Y1toPj4yXXw0fWlmKChrfDApPT0wKXtpPWw7cmV0dXJuIGZ8MH12bihrKTtpPWw7cmV0dXJuIGZ8MH1mdW5jdGlvbiBiaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtkPWk7aT1pKzMwNHwwO3U9ZCsxNjB8MDtvPWQrMjgwfDA7bj1kKzI2NHwwO209ZCsyODR8MDt0PWQrMzAwfDA7cj1kO3M9ZCsyNzZ8MDtxPWQrMjk2fDA7dz1jW2U+PjJdfDA7eT1jW2Y+PjJdfDA7Zj1jW2crND4+Ml0mNzQ7aWYoKGZ8MCk9PTY0KXtmPTh9ZWxzZSBpZigoZnwwKT09MCl7Zj0wfWVsc2UgaWYoKGZ8MCk9PTgpe2Y9MTZ9ZWxzZXtmPTEwfXBpKG4sZyx1LG8pO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2U9ejtnPW0rOHwwfWVsc2V7ej1tKzh8MDtlPW0rMXwwO2c9ejt6PWNbej4+Ml18MH1jW3Q+PjJdPXo7Y1tzPj4yXT1yO2NbcT4+Ml09MDt2PW0rNHwwO3g9Y1tvPj4yXXwwO289bSs4fDA7d2hpbGUoMSl7aWYoKHd8MCk9PTApe0E9MTt3PTB9ZWxzZXtBPWNbdysxMj4+Ml18MDtpZigoQXwwKT09KGNbdysxNj4+Ml18MCkpe0E9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7QT1jW0E+PjJdfDB9Qz0oQXwwKT09LTE7QT1DPzE6MDt3PUM/MDp3fWlmKCh5fDApIT0wKXtCPWNbeSsxMj4+Ml18MDtpZigoQnwwKT09KGNbeSsxNj4+Ml18MCkpe0I9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZighQSl7YnJlYWt9fWVsc2V7az0yMH19ZWxzZXtrPTIwfWlmKChrfDApPT0yMCl7az0wO2lmKEEpe3k9MDticmVha31lbHNle3k9MH19QT1hW20+PjBdfDA7Qj0oQSYxKT09MDtpZihCKXtDPShBJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9aWYoKChjW3Q+PjJdfDApLXp8MCk9PShDfDApKXtpZihCKXtEPShBJjI1NSk+Pj4xO3o9KEEmMjU1KT4+PjE7Qz1EPDwxO0E9RH1lbHNle0E9Y1t2Pj4yXXwwO3o9Y1t2Pj4yXXwwO0M9QTw8MX1kb3tpZighKHo+Pj4wPEM+Pj4wKSl7aWYoQil7YVttK0MrMT4+MF09MDthW20+PjBdPUE8PDI7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0M+PjBdPTA7Y1t2Pj4yXT1DO2JyZWFrfX1lbHNle2hnKG0sQy16fDApfX13aGlsZSgwKTtDPWFbbT4+MF18MDtpZigoQyYxKT09MCl7Qj0xMH1lbHNle0I9Y1ttPj4yXXwwO0M9QiYyNTU7Qj0oQiYtMikrIC0xfDB9ej0oQyYxKT09MDtpZih6KXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9ZG97aWYoIShDPj4+MDxCPj4+MCkpe2lmKHope2FbbStCKzE+PjBdPTA7YVttPj4wXT1CPDwxO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStCPj4wXT0wO2Nbdj4+Ml09QjticmVha319ZWxzZXtoZyhtLEItQ3wwKX19d2hpbGUoMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9ZX1lbHNle3o9Y1tnPj4yXXwwfWNbdD4+Ml09eitBfUE9dysxMnwwO0M9Y1tBPj4yXXwwO0I9dysxNnwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7Qz1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtDPWNbQz4+Ml18MH1pZigobGkoQyxmLHosdCxxLHgsbixyLHMsdSl8MCkhPTApe2JyZWFrfUM9Y1tBPj4yXXwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7b2NbY1soY1t3Pj4yXXwwKSs0MD4+Ml0mMTI3XSh3KXwwO2NvbnRpbnVlfWVsc2V7Y1tBPj4yXT1DKzQ7Y29udGludWV9fXU9YVtuPj4wXXwwO2lmKCh1JjEpPT0wKXt1PSh1JjI1NSk+Pj4xfWVsc2V7dT1jW24rND4+Ml18MH1pZigodXwwKSE9MD8ocD1jW3M+PjJdfDAsKHAtcnwwKTwxNjApOjApe0Q9Y1txPj4yXXwwO2Nbcz4+Ml09cCs0O2NbcD4+Ml09RH1jW2o+PjJdPU5tKHosY1t0Pj4yXXwwLGgsZil8MDtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gY2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7ZD1pO2k9aSszMDR8MDt1PWQrMTYwfDA7bz1kKzI4MHwwO249ZCsyNjR8MDttPWQrMjg0fDA7dD1kKzMwMHwwO3I9ZDtzPWQrMjc2fDA7cT1kKzI5NnwwO3c9Y1tlPj4yXXwwO3k9Y1tmPj4yXXwwO2Y9Y1tnKzQ+PjJdJjc0O2lmKChmfDApPT04KXtmPTE2fWVsc2UgaWYoKGZ8MCk9PTY0KXtmPTh9ZWxzZSBpZigoZnwwKT09MCl7Zj0wfWVsc2V7Zj0xMH1waShuLGcsdSxvKTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtoZyhtLDEwKTtpZigoYVttPj4wXSYxKT09MCl7ej1tKzF8MDtlPXo7Zz1tKzh8MH1lbHNle3o9bSs4fDA7ZT1tKzF8MDtnPXo7ej1jW3o+PjJdfDB9Y1t0Pj4yXT16O2Nbcz4+Ml09cjtjW3E+PjJdPTA7dj1tKzR8MDt4PWNbbz4+Ml18MDtvPW0rOHwwO3doaWxlKDEpe2lmKCh3fDApPT0wKXtBPTE7dz0wfWVsc2V7QT1jW3crMTI+PjJdfDA7aWYoKEF8MCk9PShjW3crMTY+PjJdfDApKXtBPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0E9Y1tBPj4yXXwwfUM9KEF8MCk9PS0xO0E9Qz8xOjA7dz1DPzA6d31pZigoeXwwKSE9MCl7Qj1jW3krMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3krMTY+PjJdfDApKXtCPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0I9Y1tCPj4yXXwwfWlmKCEoKEJ8MCk9PS0xKSl7aWYoIUEpe2JyZWFrfX1lbHNle2s9MjB9fWVsc2V7az0yMH1pZigoa3wwKT09MjApe2s9MDtpZihBKXt5PTA7YnJlYWt9ZWxzZXt5PTB9fUE9YVttPj4wXXwwO0I9KEEmMSk9PTA7aWYoQil7Qz0oQSYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWlmKCgoY1t0Pj4yXXwwKS16fDApPT0oQ3wwKSl7aWYoQil7RD0oQSYyNTUpPj4+MTt6PShBJjI1NSk+Pj4xO0M9RDw8MTtBPUR9ZWxzZXtBPWNbdj4+Ml18MDt6PWNbdj4+Ml18MDtDPUE8PDF9ZG97aWYoISh6Pj4+MDxDPj4+MCkpe2lmKEIpe2FbbStDKzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStDPj4wXT0wO2Nbdj4+Ml09QzticmVha319ZWxzZXtoZyhtLEMtenwwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe0I9MTB9ZWxzZXtCPWNbbT4+Ml18MDtDPUImMjU1O0I9KEImLTIpKyAtMXwwfXo9KEMmMSk9PTA7aWYoeil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWRve2lmKCEoQz4+PjA8Qj4+PjApKXtpZih6KXthW20rQisxPj4wXT0wO2FbbT4+MF09Qjw8MTticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQj4+MF09MDtjW3Y+PjJdPUI7YnJlYWt9fWVsc2V7aGcobSxCLUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWV9ZWxzZXt6PWNbZz4+Ml18MH1jW3Q+PjJdPXorQX1BPXcrMTJ8MDtDPWNbQT4+Ml18MDtCPXcrMTZ8MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe0M9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7Qz1jW0M+PjJdfDB9aWYoKGxpKEMsZix6LHQscSx4LG4scixzLHUpfDApIT0wKXticmVha31DPWNbQT4+Ml18MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe29jW2NbKGNbdz4+Ml18MCkrNDA+PjJdJjEyN10odyl8MDtjb250aW51ZX1lbHNle2NbQT4+Ml09Qys0O2NvbnRpbnVlfX11PWFbbj4+MF18MDtpZigodSYxKT09MCl7dT0odSYyNTUpPj4+MX1lbHNle3U9Y1tuKzQ+PjJdfDB9aWYoKHV8MCkhPTA/KHA9Y1tzPj4yXXwwLChwLXJ8MCk8MTYwKTowKXtEPWNbcT4+Ml18MDtjW3M+PjJdPXArNDtjW3A+PjJdPUR9Qz1NbSh6LGNbdD4+Ml18MCxoLGYpfDA7RD1qO2NbRD4+Ml09QztjW0QrND4+Ml09STtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZGkoZCxlLGYsZyxoLGosayl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7ZT1pO2k9aSszMDR8MDt2PWUrMTYwfDA7cD1lKzI4MHwwO289ZSsyNjR8MDtuPWUrMjg0fDA7dT1lKzMwMHwwO3M9ZTt0PWUrMjc2fDA7cj1lKzI5NnwwO3g9Y1tmPj4yXXwwO3o9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09NjQpe2c9OH1lbHNlIGlmKChnfDApPT04KXtnPTE2fWVsc2V7Zz0xMH1waShvLGgsdixwKTtjW24rMD4+Ml09MDtjW24rND4+Ml09MDtjW24rOD4+Ml09MDtoZyhuLDEwKTtpZigoYVtuPj4wXSYxKT09MCl7QT1uKzF8MDtmPUE7aD1uKzh8MH1lbHNle0E9bis4fDA7Zj1uKzF8MDtoPUE7QT1jW0E+PjJdfDB9Y1t1Pj4yXT1BO2NbdD4+Ml09cztjW3I+PjJdPTA7dz1uKzR8MDt5PWNbcD4+Ml18MDtwPW4rOHwwO3doaWxlKDEpe2lmKCh4fDApPT0wKXtCPTE7eD0wfWVsc2V7Qj1jW3grMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3grMTY+PjJdfDApKXtCPW9jW2NbKGNbeD4+Ml18MCkrMzY+PjJdJjEyN10oeCl8MH1lbHNle0I9Y1tCPj4yXXwwfUQ9KEJ8MCk9PS0xO0I9RD8xOjA7eD1EPzA6eH1pZigoenwwKSE9MCl7Qz1jW3orMTI+PjJdfDA7aWYoKEN8MCk9PShjW3orMTY+PjJdfDApKXtDPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0M9Y1tDPj4yXXwwfWlmKCEoKEN8MCk9PS0xKSl7aWYoIUIpe2JyZWFrfX1lbHNle2w9MjB9fWVsc2V7bD0yMH1pZigobHwwKT09MjApe2w9MDtpZihCKXt6PTA7YnJlYWt9ZWxzZXt6PTB9fUI9YVtuPj4wXXwwO0M9KEImMSk9PTA7aWYoQyl7RD0oQiYyNTUpPj4+MX1lbHNle0Q9Y1t3Pj4yXXwwfWlmKCgoY1t1Pj4yXXwwKS1BfDApPT0oRHwwKSl7aWYoQyl7RT0oQiYyNTUpPj4+MTtBPShCJjI1NSk+Pj4xO0Q9RTw8MTtCPUV9ZWxzZXtCPWNbdz4+Ml18MDtBPWNbdz4+Ml18MDtEPUI8PDF9ZG97aWYoIShBPj4+MDxEPj4+MCkpe2lmKEMpe2FbbitEKzE+PjBdPTA7YVtuPj4wXT1CPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStEPj4wXT0wO2Nbdz4+Ml09RDticmVha319ZWxzZXtoZyhuLEQtQXwwKX19d2hpbGUoMCk7RD1hW24+PjBdfDA7aWYoKEQmMSk9PTApe0M9MTB9ZWxzZXtDPWNbbj4+Ml18MDtEPUMmMjU1O0M9KEMmLTIpKyAtMXwwfUE9KEQmMSk9PTA7aWYoQSl7RD0oRCYyNTUpPj4+MX1lbHNle0Q9Y1t3Pj4yXXwwfWRve2lmKCEoRD4+PjA8Qz4+PjApKXtpZihBKXthW24rQysxPj4wXT0wO2Fbbj4+MF09Qzw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrQz4+MF09MDtjW3c+PjJdPUM7YnJlYWt9fWVsc2V7aGcobixDLUR8MCl9fXdoaWxlKDApO2lmKChhW24+PjBdJjEpPT0wKXtBPWZ9ZWxzZXtBPWNbaD4+Ml18MH1jW3U+PjJdPUErQn1CPXgrMTJ8MDtEPWNbQj4+Ml18MDtDPXgrMTZ8MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe0Q9b2NbY1soY1t4Pj4yXXwwKSszNj4+Ml0mMTI3XSh4KXwwfWVsc2V7RD1jW0Q+PjJdfDB9aWYoKGxpKEQsZyxBLHUscix5LG8scyx0LHYpfDApIT0wKXticmVha31EPWNbQj4+Ml18MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeD4+Ml18MCkrNDA+PjJdJjEyN10oeCl8MDtjb250aW51ZX1lbHNle2NbQj4+Ml09RCs0O2NvbnRpbnVlfX12PWFbbz4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tvKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHE9Y1t0Pj4yXXwwLChxLXN8MCk8MTYwKTowKXtFPWNbcj4+Ml18MDtjW3Q+PjJdPXErNDtjW3E+PjJdPUV9YltrPj4xXT1MbShBLGNbdT4+Ml18MCxqLGcpfDA7cWsobyxzLGNbdD4+Ml18MCxqKTtpZigoeHwwKT09MCl7az0wO3E9MX1lbHNle2s9Y1t4KzEyPj4yXXwwO2lmKChrfDApPT0oY1t4KzE2Pj4yXXwwKSl7az1vY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDB9ZWxzZXtrPWNbaz4+Ml18MH1xPShrfDApPT0tMTtrPXE/MDp4O3E9cT8xOjB9aWYoKHp8MCkhPTApe3I9Y1t6KzEyPj4yXXwwO2lmKChyfDApPT0oY1t6KzE2Pj4yXXwwKSl7cj1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtyPWNbcj4+Ml18MH1pZighKChyfDApPT0tMSkpe2lmKCFxKXtsPTczfX1lbHNle2w9NzF9fWVsc2V7bD03MX1pZigobHwwKT09NzE/cTowKXtsPTczfWlmKChsfDApPT03Myl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tkPj4yXT1rO2lmKCEoKGFbbj4+MF0mMSk9PTApPyhtPWNbcD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZTtyZXR1cm59aj1jW28rOD4+Ml18MDtpZigoanwwKT09MCl7aT1lO3JldHVybn12bihqKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGVpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO2Q9aTtpPWkrMzA0fDA7dT1kKzE2MHwwO289ZCsyODB8MDtuPWQrMjY0fDA7bT1kKzI4NHwwO3Q9ZCszMDB8MDtyPWQ7cz1kKzI3NnwwO3E9ZCsyOTZ8MDt3PWNbZT4+Ml18MDt5PWNbZj4+Ml18MDtmPWNbZys0Pj4yXSY3NDtpZigoZnwwKT09OCl7Zj0xNn1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2UgaWYoKGZ8MCk9PTApe2Y9MH1lbHNle2Y9MTB9cGkobixnLHUsbyk7Y1ttKzA+PjJdPTA7Y1ttKzQ+PjJdPTA7Y1ttKzg+PjJdPTA7aGcobSwxMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9bSsxfDA7ZT16O2c9bSs4fDB9ZWxzZXt6PW0rOHwwO2U9bSsxfDA7Zz16O3o9Y1t6Pj4yXXwwfWNbdD4+Ml09ejtjW3M+PjJdPXI7Y1txPj4yXT0wO3Y9bSs0fDA7eD1jW28+PjJdfDA7bz1tKzh8MDt3aGlsZSgxKXtpZigod3wwKT09MCl7QT0xO3c9MH1lbHNle0E9Y1t3KzEyPj4yXXwwO2lmKChBfDApPT0oY1t3KzE2Pj4yXXwwKSl7QT1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtBPWNbQT4+Ml18MH1DPShBfDApPT0tMTtBPUM/MTowO3c9Qz8wOnd9aWYoKHl8MCkhPTApe0I9Y1t5KzEyPj4yXXwwO2lmKChCfDApPT0oY1t5KzE2Pj4yXXwwKSl7Qj1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtCPWNbQj4+Ml18MH1pZighKChCfDApPT0tMSkpe2lmKCFBKXticmVha319ZWxzZXtrPTIwfX1lbHNle2s9MjB9aWYoKGt8MCk9PTIwKXtrPTA7aWYoQSl7eT0wO2JyZWFrfWVsc2V7eT0wfX1BPWFbbT4+MF18MDtCPShBJjEpPT0wO2lmKEIpe0M9KEEmMjU1KT4+PjF9ZWxzZXtDPWNbdj4+Ml18MH1pZigoKGNbdD4+Ml18MCktenwwKT09KEN8MCkpe2lmKEIpe0Q9KEEmMjU1KT4+PjE7ej0oQSYyNTUpPj4+MTtDPUQ8PDE7QT1EfWVsc2V7QT1jW3Y+PjJdfDA7ej1jW3Y+PjJdfDA7Qz1BPDwxfWRve2lmKCEoej4+PjA8Qz4+PjApKXtpZihCKXthW20rQysxPj4wXT0wO2FbbT4+MF09QTw8MjticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQz4+MF09MDtjW3Y+PjJdPUM7YnJlYWt9fWVsc2V7aGcobSxDLXp8MCl9fXdoaWxlKDApO0M9YVttPj4wXXwwO2lmKChDJjEpPT0wKXtCPTEwfWVsc2V7Qj1jW20+PjJdfDA7Qz1CJjI1NTtCPShCJi0yKSsgLTF8MH16PShDJjEpPT0wO2lmKHope0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbdj4+Ml18MH1kb3tpZighKEM+Pj4wPEI+Pj4wKSl7aWYoeil7YVttK0IrMT4+MF09MDthW20+PjBdPUI8PDE7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0I+PjBdPTA7Y1t2Pj4yXT1CO2JyZWFrfX1lbHNle2hnKG0sQi1DfDApfX13aGlsZSgwKTtpZigoYVttPj4wXSYxKT09MCl7ej1lfWVsc2V7ej1jW2c+PjJdfDB9Y1t0Pj4yXT16K0F9QT13KzEyfDA7Qz1jW0E+PjJdfDA7Qj13KzE2fDA7aWYoKEN8MCk9PShjW0I+PjJdfDApKXtDPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0M9Y1tDPj4yXXwwfWlmKChsaShDLGYseix0LHEseCxuLHIscyx1KXwwKSE9MCl7YnJlYWt9Qz1jW0E+PjJdfDA7aWYoKEN8MCk9PShjW0I+PjJdfDApKXtvY1tjWyhjW3c+PjJdfDApKzQwPj4yXSYxMjddKHcpfDA7Y29udGludWV9ZWxzZXtjW0E+PjJdPUMrNDtjb250aW51ZX19dT1hW24+PjBdfDA7aWYoKHUmMSk9PTApe3U9KHUmMjU1KT4+PjF9ZWxzZXt1PWNbbis0Pj4yXXwwfWlmKCh1fDApIT0wPyhwPWNbcz4+Ml18MCwocC1yfDApPDE2MCk6MCl7RD1jW3E+PjJdfDA7Y1tzPj4yXT1wKzQ7Y1twPj4yXT1EfWNbaj4+Ml09S20oeixjW3Q+PjJdfDAsaCxmKXwwO3FrKG4scixjW3M+PjJdfDAsaCk7aWYoKHd8MCk9PTApe2o9MDtwPTF9ZWxzZXtqPWNbdysxMj4+Ml18MDtpZigoanwwKT09KGNbdysxNj4+Ml18MCkpe2o9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7aj1jW2o+PjJdfDB9cD0oanwwKT09LTE7aj1wPzA6dztwPXA/MTowfWlmKCh5fDApIT0wKXtxPWNbeSsxMj4+Ml18MDtpZigocXwwKT09KGNbeSsxNj4+Ml18MCkpe3E9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7cT1jW3E+PjJdfDB9aWYoISgocXwwKT09LTEpKXtpZighcCl7az03M319ZWxzZXtrPTcxfX1lbHNle2s9NzF9aWYoKGt8MCk9PTcxP3A6MCl7az03M31pZigoa3wwKT09NzMpe2NbaD4+Ml09Y1toPj4yXXwyfWNbYj4+Ml09ajtpZighKChhW20+PjBdJjEpPT0wKT8obD1jW28+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKChhW24+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWg9Y1tuKzg+PjJdfDA7aWYoKGh8MCk9PTApe2k9ZDtyZXR1cm59dm4oaCk7aT1kO3JldHVybn1mdW5jdGlvbiBmaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtkPWk7aT1pKzMwNHwwO3U9ZCsxNjB8MDtvPWQrMjgwfDA7bj1kKzI2NHwwO209ZCsyODR8MDt0PWQrMzAwfDA7cj1kO3M9ZCsyNzZ8MDtxPWQrMjk2fDA7dz1jW2U+PjJdfDA7eT1jW2Y+PjJdfDA7Zj1jW2crND4+Ml0mNzQ7aWYoKGZ8MCk9PTApe2Y9MH1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2UgaWYoKGZ8MCk9PTgpe2Y9MTZ9ZWxzZXtmPTEwfXBpKG4sZyx1LG8pO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2U9ejtnPW0rOHwwfWVsc2V7ej1tKzh8MDtlPW0rMXwwO2c9ejt6PWNbej4+Ml18MH1jW3Q+PjJdPXo7Y1tzPj4yXT1yO2NbcT4+Ml09MDt2PW0rNHwwO3g9Y1tvPj4yXXwwO289bSs4fDA7d2hpbGUoMSl7aWYoKHd8MCk9PTApe0E9MTt3PTB9ZWxzZXtBPWNbdysxMj4+Ml18MDtpZigoQXwwKT09KGNbdysxNj4+Ml18MCkpe0E9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7QT1jW0E+PjJdfDB9Qz0oQXwwKT09LTE7QT1DPzE6MDt3PUM/MDp3fWlmKCh5fDApIT0wKXtCPWNbeSsxMj4+Ml18MDtpZigoQnwwKT09KGNbeSsxNj4+Ml18MCkpe0I9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZighQSl7YnJlYWt9fWVsc2V7az0yMH19ZWxzZXtrPTIwfWlmKChrfDApPT0yMCl7az0wO2lmKEEpe3k9MDticmVha31lbHNle3k9MH19QT1hW20+PjBdfDA7Qj0oQSYxKT09MDtpZihCKXtDPShBJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9aWYoKChjW3Q+PjJdfDApLXp8MCk9PShDfDApKXtpZihCKXtEPShBJjI1NSk+Pj4xO3o9KEEmMjU1KT4+PjE7Qz1EPDwxO0E9RH1lbHNle0E9Y1t2Pj4yXXwwO3o9Y1t2Pj4yXXwwO0M9QTw8MX1kb3tpZighKHo+Pj4wPEM+Pj4wKSl7aWYoQil7YVttK0MrMT4+MF09MDthW20+PjBdPUE8PDI7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0M+PjBdPTA7Y1t2Pj4yXT1DO2JyZWFrfX1lbHNle2hnKG0sQy16fDApfX13aGlsZSgwKTtDPWFbbT4+MF18MDtpZigoQyYxKT09MCl7Qj0xMH1lbHNle0I9Y1ttPj4yXXwwO0M9QiYyNTU7Qj0oQiYtMikrIC0xfDB9ej0oQyYxKT09MDtpZih6KXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9ZG97aWYoIShDPj4+MDxCPj4+MCkpe2lmKHope2FbbStCKzE+PjBdPTA7YVttPj4wXT1CPDwxO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStCPj4wXT0wO2Nbdj4+Ml09QjticmVha319ZWxzZXtoZyhtLEItQ3wwKX19d2hpbGUoMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9ZX1lbHNle3o9Y1tnPj4yXXwwfWNbdD4+Ml09eitBfUE9dysxMnwwO0M9Y1tBPj4yXXwwO0I9dysxNnwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7Qz1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtDPWNbQz4+Ml18MH1pZigobGkoQyxmLHosdCxxLHgsbixyLHMsdSl8MCkhPTApe2JyZWFrfUM9Y1tBPj4yXXwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7b2NbY1soY1t3Pj4yXXwwKSs0MD4+Ml0mMTI3XSh3KXwwO2NvbnRpbnVlfWVsc2V7Y1tBPj4yXT1DKzQ7Y29udGludWV9fXU9YVtuPj4wXXwwO2lmKCh1JjEpPT0wKXt1PSh1JjI1NSk+Pj4xfWVsc2V7dT1jW24rND4+Ml18MH1pZigodXwwKSE9MD8ocD1jW3M+PjJdfDAsKHAtcnwwKTwxNjApOjApe0Q9Y1txPj4yXXwwO2Nbcz4+Ml09cCs0O2NbcD4+Ml09RH1jW2o+PjJdPUptKHosY1t0Pj4yXXwwLGgsZil8MDtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7ZD1pO2k9aSszMDR8MDt1PWQrMTYwfDA7bz1kKzI4MHwwO249ZCsyNjR8MDttPWQrMjg0fDA7dD1kKzMwMHwwO3I9ZDtzPWQrMjc2fDA7cT1kKzI5NnwwO3c9Y1tlPj4yXXwwO3k9Y1tmPj4yXXwwO2Y9Y1tnKzQ+PjJdJjc0O2lmKChmfDApPT04KXtmPTE2fWVsc2UgaWYoKGZ8MCk9PTApe2Y9MH1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2V7Zj0xMH1waShuLGcsdSxvKTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtoZyhtLDEwKTtpZigoYVttPj4wXSYxKT09MCl7ej1tKzF8MDtlPXo7Zz1tKzh8MH1lbHNle3o9bSs4fDA7ZT1tKzF8MDtnPXo7ej1jW3o+PjJdfDB9Y1t0Pj4yXT16O2Nbcz4+Ml09cjtjW3E+PjJdPTA7dj1tKzR8MDt4PWNbbz4+Ml18MDtvPW0rOHwwO3doaWxlKDEpe2lmKCh3fDApPT0wKXtBPTE7dz0wfWVsc2V7QT1jW3crMTI+PjJdfDA7aWYoKEF8MCk9PShjW3crMTY+PjJdfDApKXtBPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0E9Y1tBPj4yXXwwfUM9KEF8MCk9PS0xO0E9Qz8xOjA7dz1DPzA6d31pZigoeXwwKSE9MCl7Qj1jW3krMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3krMTY+PjJdfDApKXtCPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0I9Y1tCPj4yXXwwfWlmKCEoKEJ8MCk9PS0xKSl7aWYoIUEpe2JyZWFrfX1lbHNle2s9MjB9fWVsc2V7az0yMH1pZigoa3wwKT09MjApe2s9MDtpZihBKXt5PTA7YnJlYWt9ZWxzZXt5PTB9fUE9YVttPj4wXXwwO0I9KEEmMSk9PTA7aWYoQil7Qz0oQSYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWlmKCgoY1t0Pj4yXXwwKS16fDApPT0oQ3wwKSl7aWYoQil7RD0oQSYyNTUpPj4+MTt6PShBJjI1NSk+Pj4xO0M9RDw8MTtBPUR9ZWxzZXtBPWNbdj4+Ml18MDt6PWNbdj4+Ml18MDtDPUE8PDF9ZG97aWYoISh6Pj4+MDxDPj4+MCkpe2lmKEIpe2FbbStDKzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStDPj4wXT0wO2Nbdj4+Ml09QzticmVha319ZWxzZXtoZyhtLEMtenwwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe0I9MTB9ZWxzZXtCPWNbbT4+Ml18MDtDPUImMjU1O0I9KEImLTIpKyAtMXwwfXo9KEMmMSk9PTA7aWYoeil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWRve2lmKCEoQz4+PjA8Qj4+PjApKXtpZih6KXthW20rQisxPj4wXT0wO2FbbT4+MF09Qjw8MTticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQj4+MF09MDtjW3Y+PjJdPUI7YnJlYWt9fWVsc2V7aGcobSxCLUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWV9ZWxzZXt6PWNbZz4+Ml18MH1jW3Q+PjJdPXorQX1BPXcrMTJ8MDtDPWNbQT4+Ml18MDtCPXcrMTZ8MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe0M9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7Qz1jW0M+PjJdfDB9aWYoKGxpKEMsZix6LHQscSx4LG4scixzLHUpfDApIT0wKXticmVha31DPWNbQT4+Ml18MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe29jW2NbKGNbdz4+Ml18MCkrNDA+PjJdJjEyN10odyl8MDtjb250aW51ZX1lbHNle2NbQT4+Ml09Qys0O2NvbnRpbnVlfX11PWFbbj4+MF18MDtpZigodSYxKT09MCl7dT0odSYyNTUpPj4+MX1lbHNle3U9Y1tuKzQ+PjJdfDB9aWYoKHV8MCkhPTA/KHA9Y1tzPj4yXXwwLChwLXJ8MCk8MTYwKTowKXtEPWNbcT4+Ml18MDtjW3M+PjJdPXArNDtjW3A+PjJdPUR9Qz1JbSh6LGNbdD4+Ml18MCxoLGYpfDA7RD1qO2NbRD4+Ml09QztjW0QrND4+Ml09STtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gaGkoYixkLGUsZixoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MDtkPWk7aT1pKzM1MnwwO3c9ZCsyMDh8MDt5PWQrMTg0fDA7cD1kKzR8MDtuPWQrOHwwO289ZCsxOTZ8MDt1PWQ7dD1kKzI0fDA7cz1kKzE5MnwwO3Y9ZCsxODh8MDtyPWQrMzM3fDA7eD1kKzMzNnwwO3o9Y1tlPj4yXXwwO0I9Y1tmPj4yXXwwO3FpKG4saCx3LHkscCk7Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTA7aGcobywxMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9bysxfDA7ZT1DO2Y9bys4fDB9ZWxzZXtDPW8rOHwwO2U9bysxfDA7Zj1DO0M9Y1tDPj4yXXwwfWNbdT4+Ml09QztjW3M+PjJdPXQ7Y1t2Pj4yXT0wO2Fbcj4+MF09MTthW3g+PjBdPTY5O2g9bys0fDA7eT1jW3k+PjJdfDA7QT1jW3A+PjJdfDA7cD1vKzh8MDt3aGlsZSgxKXtpZigoenwwKT09MCl7RD0xO3o9MH1lbHNle0Q9Y1t6KzEyPj4yXXwwO2lmKChEfDApPT0oY1t6KzE2Pj4yXXwwKSl7RD1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtEPWNbRD4+Ml18MH1GPShEfDApPT0tMTtEPUY/MTowO3o9Rj8wOnp9aWYoKEJ8MCkhPTApe0U9Y1tCKzEyPj4yXXwwO2lmKChFfDApPT0oY1tCKzE2Pj4yXXwwKSl7RT1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtFPWNbRT4+Ml18MH1pZighKChFfDApPT0tMSkpe2lmKCFEKXticmVha319ZWxzZXttPTE2fX1lbHNle209MTZ9aWYoKG18MCk9PTE2KXttPTA7aWYoRCl7Qj0wO2JyZWFrfWVsc2V7Qj0wfX1EPWFbbz4+MF18MDtFPShEJjEpPT0wO2lmKEUpe0Y9KEQmMjU1KT4+PjF9ZWxzZXtGPWNbaD4+Ml18MH1pZigoKGNbdT4+Ml18MCktQ3wwKT09KEZ8MCkpe2lmKEUpe0c9KEQmMjU1KT4+PjE7Rj0oRCYyNTUpPj4+MTtDPUc8PDE7RD1HfWVsc2V7RD1jW2g+PjJdfDA7Rj1jW2g+PjJdfDA7Qz1EPDwxfWRve2lmKCEoRj4+PjA8Qz4+PjApKXtpZihFKXthW28rQysxPj4wXT0wO2Fbbz4+MF09RDw8MjticmVha31lbHNle2FbKGNbcD4+Ml18MCkrQz4+MF09MDtjW2g+PjJdPUM7YnJlYWt9fWVsc2V7aGcobyxDLUZ8MCl9fXdoaWxlKDApO0Y9YVtvPj4wXXwwO2lmKChGJjEpPT0wKXtFPTEwfWVsc2V7RT1jW28+PjJdfDA7Rj1FJjI1NTtFPShFJi0yKSsgLTF8MH1DPShGJjEpPT0wO2lmKEMpe0Y9KEYmMjU1KT4+PjF9ZWxzZXtGPWNbaD4+Ml18MH1kb3tpZighKEY+Pj4wPEU+Pj4wKSl7aWYoQyl7YVtvK0UrMT4+MF09MDthW28+PjBdPUU8PDE7YnJlYWt9ZWxzZXthWyhjW3A+PjJdfDApK0U+PjBdPTA7Y1toPj4yXT1FO2JyZWFrfX1lbHNle2hnKG8sRS1GfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz1lfWVsc2V7Qz1jW2Y+PjJdfDB9Y1t1Pj4yXT1DK0R9RT16KzEyfDA7Rj1jW0U+PjJdfDA7RD16KzE2fDA7aWYoKEZ8MCk9PShjW0Q+PjJdfDApKXtGPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0Y9Y1tGPj4yXXwwfWlmKChyaShGLHIseCxDLHUseSxBLG4sdCxzLHYsdyl8MCkhPTApe2JyZWFrfUY9Y1tFPj4yXXwwO2lmKChGfDApPT0oY1tEPj4yXXwwKSl7b2NbY1soY1t6Pj4yXXwwKSs0MD4+Ml0mMTI3XSh6KXwwO2NvbnRpbnVlfWVsc2V7Y1tFPj4yXT1GKzQ7Y29udGludWV9fXc9YVtuPj4wXXwwO2lmKCh3JjEpPT0wKXt3PSh3JjI1NSk+Pj4xfWVsc2V7dz1jW24rND4+Ml18MH1pZigoKHd8MCkhPTA/KGFbcj4+MF18MCkhPTA6MCk/KHE9Y1tzPj4yXXwwLChxLXR8MCk8MTYwKTowKXtHPWNbdj4+Ml18MDtjW3M+PjJdPXErNDtjW3E+PjJdPUd9Z1trPj4yXT0rSG0oQyxjW3U+PjJdfDAsaik7cWsobix0LGNbcz4+Ml18MCxqKTtpZigoenwwKT09MCl7az0wO3E9MX1lbHNle2s9Y1t6KzEyPj4yXXwwO2lmKChrfDApPT0oY1t6KzE2Pj4yXXwwKSl7az1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtrPWNbaz4+Ml18MH1xPShrfDApPT0tMTtrPXE/MDp6O3E9cT8xOjB9aWYoKEJ8MCkhPTApe3I9Y1tCKzEyPj4yXXwwO2lmKChyfDApPT0oY1tCKzE2Pj4yXXwwKSl7cj1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtyPWNbcj4+Ml18MH1pZighKChyfDApPT0tMSkpe2lmKCFxKXttPTcwfX1lbHNle209Njh9fWVsc2V7bT02OH1pZigobXwwKT09Njg/cTowKXttPTcwfWlmKChtfDApPT03MCl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1rO2lmKCEoKGFbbz4+MF0mMSk9PTApPyhsPWNbcD4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoKGFbbj4+MF0mMSk9PTApe2k9ZDtyZXR1cm59aj1jW24rOD4+Ml18MDtpZigoanwwKT09MCl7aT1kO3JldHVybn12bihqKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGlpKGIsZCxlLGYsZyxqLGspe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7ZD1pO2k9aSszNTJ8MDt3PWQrMjA4fDA7eT1kKzE4NHwwO3A9ZCs0fDA7bj1kKzh8MDtvPWQrMTk2fDA7dT1kO3Q9ZCsyNHwwO3M9ZCsxOTJ8MDt2PWQrMTg4fDA7cj1kKzMzN3wwO3g9ZCszMzZ8MDt6PWNbZT4+Ml18MDtCPWNbZj4+Ml18MDtxaShuLGcsdyx5LHApO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtDPW8rMXwwO2U9QztmPW8rOHwwfWVsc2V7Qz1vKzh8MDtlPW8rMXwwO2Y9QztDPWNbQz4+Ml18MH1jW3U+PjJdPUM7Y1tzPj4yXT10O2Nbdj4+Ml09MDthW3I+PjBdPTE7YVt4Pj4wXT02OTtnPW8rNHwwO3k9Y1t5Pj4yXXwwO0E9Y1twPj4yXXwwO3A9bys4fDA7d2hpbGUoMSl7aWYoKHp8MCk9PTApe0Q9MTt6PTB9ZWxzZXtEPWNbeisxMj4+Ml18MDtpZigoRHwwKT09KGNbeisxNj4+Ml18MCkpe0Q9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7RD1jW0Q+PjJdfDB9Rj0oRHwwKT09LTE7RD1GPzE6MDt6PUY/MDp6fWlmKChCfDApIT0wKXtFPWNbQisxMj4+Ml18MDtpZigoRXwwKT09KGNbQisxNj4+Ml18MCkpe0U9b2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwfWVsc2V7RT1jW0U+PjJdfDB9aWYoISgoRXwwKT09LTEpKXtpZighRCl7YnJlYWt9fWVsc2V7bT0xNn19ZWxzZXttPTE2fWlmKChtfDApPT0xNil7bT0wO2lmKEQpe0I9MDticmVha31lbHNle0I9MH19RD1hW28+PjBdfDA7RT0oRCYxKT09MDtpZihFKXtGPShEJjI1NSk+Pj4xfWVsc2V7Rj1jW2c+PjJdfDB9aWYoKChjW3U+PjJdfDApLUN8MCk9PShGfDApKXtpZihFKXtHPShEJjI1NSk+Pj4xO0Y9KEQmMjU1KT4+PjE7Qz1HPDwxO0Q9R31lbHNle0Q9Y1tnPj4yXXwwO0Y9Y1tnPj4yXXwwO0M9RDw8MX1kb3tpZighKEY+Pj4wPEM+Pj4wKSl7aWYoRSl7YVtvK0MrMT4+MF09MDthW28+PjBdPUQ8PDI7YnJlYWt9ZWxzZXthWyhjW3A+PjJdfDApK0M+PjBdPTA7Y1tnPj4yXT1DO2JyZWFrfX1lbHNle2hnKG8sQy1GfDApfX13aGlsZSgwKTtGPWFbbz4+MF18MDtpZigoRiYxKT09MCl7RT0xMH1lbHNle0U9Y1tvPj4yXXwwO0Y9RSYyNTU7RT0oRSYtMikrIC0xfDB9Qz0oRiYxKT09MDtpZihDKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW2c+PjJdfDB9ZG97aWYoIShGPj4+MDxFPj4+MCkpe2lmKEMpe2FbbytFKzE+PjBdPTA7YVtvPj4wXT1FPDwxO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStFPj4wXT0wO2NbZz4+Ml09RTticmVha319ZWxzZXtoZyhvLEUtRnwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9ZX1lbHNle0M9Y1tmPj4yXXwwfWNbdT4+Ml09QytEfUU9eisxMnwwO0Y9Y1tFPj4yXXwwO0Q9eisxNnwwO2lmKChGfDApPT0oY1tEPj4yXXwwKSl7Rj1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtGPWNbRj4+Ml18MH1pZigocmkoRixyLHgsQyx1LHksQSxuLHQscyx2LHcpfDApIT0wKXticmVha31GPWNbRT4+Ml18MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe29jW2NbKGNbej4+Ml18MCkrNDA+PjJdJjEyN10oeil8MDtjb250aW51ZX1lbHNle2NbRT4+Ml09Ris0O2NvbnRpbnVlfX13PWFbbj4+MF18MDtpZigodyYxKT09MCl7dz0odyYyNTUpPj4+MX1lbHNle3c9Y1tuKzQ+PjJdfDB9aWYoKCh3fDApIT0wPyhhW3I+PjBdfDApIT0wOjApPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7Rz1jW3Y+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1HfWhbaz4+M109K0dtKEMsY1t1Pj4yXXwwLGopO3FrKG4sdCxjW3M+PjJdfDAsaik7aWYoKHp8MCk9PTApe2s9MDtxPTF9ZWxzZXtrPWNbeisxMj4+Ml18MDtpZigoa3wwKT09KGNbeisxNj4+Ml18MCkpe2s9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7az1jW2s+PjJdfDB9cT0oa3wwKT09LTE7az1xPzA6ejtxPXE/MTowfWlmKChCfDApIT0wKXtyPWNbQisxMj4+Ml18MDtpZigocnwwKT09KGNbQisxNj4+Ml18MCkpe3I9b2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwfWVsc2V7cj1jW3I+PjJdfDB9aWYoISgocnwwKT09LTEpKXtpZighcSl7bT03MH19ZWxzZXttPTY4fX1lbHNle209Njh9aWYoKG18MCk9PTY4P3E6MCl7bT03MH1pZigobXwwKT09NzApe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09aztpZighKChhW28+PjBdJjEpPT0wKT8obD1jW3A+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKChhW24+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWo9Y1tuKzg+PjJdfDA7aWYoKGp8MCk9PTApe2k9ZDtyZXR1cm59dm4oaik7aT1kO3JldHVybn1mdW5jdGlvbiBqaShiLGQsZSxmLGcsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wO2Q9aTtpPWkrMzUyfDA7dz1kKzIwOHwwO3k9ZCsxODR8MDtwPWQrNHwwO249ZCs4fDA7bz1kKzE5NnwwO3U9ZDt0PWQrMjR8MDtzPWQrMTkyfDA7dj1kKzE4OHwwO3I9ZCszMzd8MDt4PWQrMzM2fDA7ej1jW2U+PjJdfDA7Qj1jW2Y+PjJdfDA7cWkobixnLHcseSxwKTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz1vKzF8MDtlPUM7Zj1vKzh8MH1lbHNle0M9bys4fDA7ZT1vKzF8MDtmPUM7Qz1jW0M+PjJdfDB9Y1t1Pj4yXT1DO2Nbcz4+Ml09dDtjW3Y+PjJdPTA7YVtyPj4wXT0xO2FbeD4+MF09Njk7Zz1vKzR8MDt5PWNbeT4+Ml18MDtBPWNbcD4+Ml18MDtwPW8rOHwwO3doaWxlKDEpe2lmKCh6fDApPT0wKXtEPTE7ej0wfWVsc2V7RD1jW3orMTI+PjJdfDA7aWYoKER8MCk9PShjW3orMTY+PjJdfDApKXtEPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0Q9Y1tEPj4yXXwwfUY9KER8MCk9PS0xO0Q9Rj8xOjA7ej1GPzA6en1pZigoQnwwKSE9MCl7RT1jW0IrMTI+PjJdfDA7aWYoKEV8MCk9PShjW0IrMTY+PjJdfDApKXtFPW9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MH1lbHNle0U9Y1tFPj4yXXwwfWlmKCEoKEV8MCk9PS0xKSl7aWYoIUQpe2JyZWFrfX1lbHNle209MTZ9fWVsc2V7bT0xNn1pZigobXwwKT09MTYpe209MDtpZihEKXtCPTA7YnJlYWt9ZWxzZXtCPTB9fUQ9YVtvPj4wXXwwO0U9KEQmMSk9PTA7aWYoRSl7Rj0oRCYyNTUpPj4+MX1lbHNle0Y9Y1tnPj4yXXwwfWlmKCgoY1t1Pj4yXXwwKS1DfDApPT0oRnwwKSl7aWYoRSl7Rz0oRCYyNTUpPj4+MTtGPShEJjI1NSk+Pj4xO0M9Rzw8MTtEPUd9ZWxzZXtEPWNbZz4+Ml18MDtGPWNbZz4+Ml18MDtDPUQ8PDF9ZG97aWYoIShGPj4+MDxDPj4+MCkpe2lmKEUpe2FbbytDKzE+PjBdPTA7YVtvPj4wXT1EPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStDPj4wXT0wO2NbZz4+Ml09QzticmVha319ZWxzZXtoZyhvLEMtRnwwKX19d2hpbGUoMCk7Rj1hW28+PjBdfDA7aWYoKEYmMSk9PTApe0U9MTB9ZWxzZXtFPWNbbz4+Ml18MDtGPUUmMjU1O0U9KEUmLTIpKyAtMXwwfUM9KEYmMSk9PTA7aWYoQyl7Rj0oRiYyNTUpPj4+MX1lbHNle0Y9Y1tnPj4yXXwwfWRve2lmKCEoRj4+PjA8RT4+PjApKXtpZihDKXthW28rRSsxPj4wXT0wO2Fbbz4+MF09RTw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrRT4+MF09MDtjW2c+PjJdPUU7YnJlYWt9fWVsc2V7aGcobyxFLUZ8MCl9fXdoaWxlKDApO2lmKChhW28+PjBdJjEpPT0wKXtDPWV9ZWxzZXtDPWNbZj4+Ml18MH1jW3U+PjJdPUMrRH1FPXorMTJ8MDtGPWNbRT4+Ml18MDtEPXorMTZ8MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe0Y9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7Rj1jW0Y+PjJdfDB9aWYoKHJpKEYscix4LEMsdSx5LEEsbix0LHMsdix3KXwwKSE9MCl7YnJlYWt9Rj1jW0U+PjJdfDA7aWYoKEZ8MCk9PShjW0Q+PjJdfDApKXtvY1tjWyhjW3o+PjJdfDApKzQwPj4yXSYxMjddKHopfDA7Y29udGludWV9ZWxzZXtjW0U+PjJdPUYrNDtjb250aW51ZX19dz1hW24+PjBdfDA7aWYoKHcmMSk9PTApe3c9KHcmMjU1KT4+PjF9ZWxzZXt3PWNbbis0Pj4yXXwwfWlmKCgod3wwKSE9MD8oYVtyPj4wXXwwKSE9MDowKT8ocT1jW3M+PjJdfDAsKHEtdHwwKTwxNjApOjApe0c9Y1t2Pj4yXXwwO2Nbcz4+Ml09cSs0O2NbcT4+Ml09R31oW2s+PjNdPStGbShDLGNbdT4+Ml18MCxqKTtxayhuLHQsY1tzPj4yXXwwLGopO2lmKCh6fDApPT0wKXtrPTA7cT0xfWVsc2V7az1jW3orMTI+PjJdfDA7aWYoKGt8MCk9PShjW3orMTY+PjJdfDApKXtrPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle2s9Y1trPj4yXXwwfXE9KGt8MCk9PS0xO2s9cT8wOno7cT1xPzE6MH1pZigoQnwwKSE9MCl7cj1jW0IrMTI+PjJdfDA7aWYoKHJ8MCk9PShjW0IrMTY+PjJdfDApKXtyPW9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MH1lbHNle3I9Y1tyPj4yXXwwfWlmKCEoKHJ8MCk9PS0xKSl7aWYoIXEpe209NzB9fWVsc2V7bT02OH19ZWxzZXttPTY4fWlmKChtfDApPT02OD9xOjApe209NzB9aWYoKG18MCk9PTcwKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWs7aWYoISgoYVtvPj4wXSYxKT09MCk/KGw9Y1twPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1qPWNbbis4Pj4yXXwwO2lmKChqfDApPT0wKXtpPWQ7cmV0dXJufXZuKGopO2k9ZDtyZXR1cm59ZnVuY3Rpb24ga2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtkPWk7aT1pKzMwNHwwO249ZDtvPWQrMTkyfDA7bD1kKzE3NnwwO3Y9ZCsxNnwwO3E9Y1tnKzI4Pj4yXXwwO0M9cSs0fDA7Y1tDPj4yXT0oY1tDPj4yXXwwKSsxO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ0ODtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDQ4LG4pfWc9KGNbMTM0NTI+PjJdfDApKyAtMXwwO3A9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcD4+Mj4+PjA+Zz4+PjA/KG09Y1twKyhnPDwyKT4+Ml18MCwobXwwKSE9MCk6MCl7dWNbY1soY1ttPj4yXXwwKSs0OD4+Ml0mMzFdKG0sMTIwMTYsMTIwNDJ8MCxvKXwwO0I9cSs0fDA7Qz1jW0I+PjJdfDA7Y1tCPj4yXT1DKyAtMTtpZigoQ3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfWNbbCswPj4yXT0wO2NbbCs0Pj4yXT0wO2NbbCs4Pj4yXT0wO2hnKGwsMTApO2lmKChhW2w+PjBdJjEpPT0wKXt5PWwrMXwwO3A9eTtxPWwrOHwwfWVsc2V7eT1sKzh8MDtwPWwrMXwwO3E9eTt5PWNbeT4+Ml18MH1yPWwrNHwwO3Q9bys5NnwwO3U9bysxMDB8MDtzPW8rMTA0fDA7Zz1vO209bCs4fDA7eD1jW2U+PjJdfDA7dz0wO3o9eTthOndoaWxlKDEpe2lmKCh4fDApIT0wKXtBPWNbeCsxMj4+Ml18MDtpZigoQXwwKT09KGNbeCsxNj4+Ml18MCkpe0E9b2NbY1soY1t4Pj4yXXwwKSszNj4+Ml0mMTI3XSh4KXwwfWVsc2V7QT1jW0E+PjJdfDB9aWYoKEF8MCk9PS0xKXtjW2U+PjJdPTA7eD0wO0E9MX1lbHNle0E9MH19ZWxzZXt4PTA7QT0xfUM9Y1tmPj4yXXwwO2Rve2lmKChDfDApIT0wKXtCPWNbQysxMj4+Ml18MDtpZigoQnwwKT09KGNbQysxNj4+Ml18MCkpe0I9b2NbY1soY1tDPj4yXXwwKSszNj4+Ml0mMTI3XShDKXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZihBKXticmVha31lbHNle2JyZWFrIGF9fWVsc2V7Y1tmPj4yXT0wO2s9Mjc7YnJlYWt9fWVsc2V7az0yN319d2hpbGUoMCk7aWYoKGt8MCk9PTI3PyhrPTAsQSk6MCl7YnJlYWt9Qz1hW2w+PjBdfDA7QT0oQyYxKT09MDtpZihBKXtCPShDJjI1NSk+Pj4xfWVsc2V7Qj1jW3I+PjJdfDB9aWYoKHoteXwwKT09KEJ8MCkpe2lmKEEpe3o9KEMmMjU1KT4+PjE7Qj0oQyYyNTUpPj4+MTt5PXo8PDF9ZWxzZXt6PWNbcj4+Ml18MDtCPWNbcj4+Ml18MDt5PXo8PDF9ZG97aWYoIShCPj4+MDx5Pj4+MCkpe2lmKEEpe2FbbCt5KzE+PjBdPTA7YVtsPj4wXT16PDwyO2JyZWFrfWVsc2V7YVsoY1ttPj4yXXwwKSt5Pj4wXT0wO2Nbcj4+Ml09eTticmVha319ZWxzZXtoZyhsLHktQnwwKX19d2hpbGUoMCk7Qj1hW2w+PjBdfDA7aWYoKEImMSk9PTApe0E9MTB9ZWxzZXtBPWNbbD4+Ml18MDtCPUEmMjU1O0E9KEEmLTIpKyAtMXwwfXk9KEImMSk9PTA7aWYoeSl7Qj0oQiYyNTUpPj4+MX1lbHNle0I9Y1tyPj4yXXwwfWRve2lmKCEoQj4+PjA8QT4+PjApKXtpZih5KXthW2wrQSsxPj4wXT0wO2FbbD4+MF09QTw8MTticmVha31lbHNle2FbKGNbbT4+Ml18MCkrQT4+MF09MDtjW3I+PjJdPUE7YnJlYWt9fWVsc2V7aGcobCxBLUJ8MCl9fXdoaWxlKDApO2lmKChhW2w+PjBdJjEpPT0wKXt5PXB9ZWxzZXt5PWNbcT4+Ml18MH16PXkrenwwfUE9Y1t4KzEyPj4yXXwwO2lmKChBfDApPT0oY1t4KzE2Pj4yXXwwKSl7QT1vY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDB9ZWxzZXtBPWNbQT4+Ml18MH14PSh6fDApPT0oeXwwKTtkb3tpZih4KXtCPShjW3Q+PjJdfDApPT0oQXwwKTtpZighQj8oY1t1Pj4yXXwwKSE9KEF8MCk6MCl7Qj1vO2s9NjI7YnJlYWt9YVt6Pj4wXT1CPzQzOjQ1O3o9eisxfDA7dz0wfWVsc2V7Qj1vO2s9NjJ9fXdoaWxlKDApO2Rve2lmKChrfDApPT02Mil7d2hpbGUoMSl7az0wO2lmKChjW0I+PjJdfDApPT0oQXwwKSl7YnJlYWt9Qj1CKzR8MDtpZigoQnwwKT09KHN8MCkpe0I9czticmVha31lbHNle2s9NjJ9fUI9Qi1nfDA7QT1CPj4yO2lmKChCfDApPjkyKXticmVhayBhfWlmKChCfDApPDg4KXthW3o+PjBdPWFbMTIwMTYrQT4+MF18MDt6PXorMXwwO3c9dysxfDA7YnJlYWt9aWYoeCl7eT16O2JyZWFrIGF9aWYoKHoteXwwKT49Myl7YnJlYWsgYX1pZigoYVt6KyAtMT4+MF18MCkhPTQ4KXticmVhayBhfWFbej4+MF09YVsxMjAxNitBPj4wXXwwO3o9eisxfDA7dz0wfX13aGlsZSgwKTt4PWNbZT4+Ml18MDtCPXgrMTJ8MDtBPWNbQj4+Ml18MDtpZigoQXwwKT09KGNbeCsxNj4+Ml18MCkpe29jW2NbKGNbeD4+Ml18MCkrNDA+PjJdJjEyN10oeCl8MDtDPXY7dj1DO2NvbnRpbnVlfWVsc2V7Y1tCPj4yXT1BKzQ7Qz12O3Y9Qztjb250aW51ZX19YVt5KzM+PjBdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfUM9Y1szMzQwXXwwO2Nbbj4+Ml09ajtpZigoWWgoeSxDLG4pfDApIT0xKXtjW2g+PjJdPTR9aj1jW2U+PjJdfDA7aWYoKGp8MCkhPTApe249Y1tqKzEyPj4yXXwwO2lmKChufDApPT0oY1tqKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtqPTA7ZT0xfWVsc2V7ZT0wfX1lbHNle2o9MDtlPTF9bj1jW2Y+PjJdfDA7ZG97aWYoKG58MCkhPTApe289Y1tuKzEyPj4yXXwwO2lmKChvfDApPT0oY1tuKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXtuPWNbbz4+Ml18MH1pZighKChufDApPT0tMSkpe2lmKGUpe2JyZWFrfWVsc2V7az05NDticmVha319ZWxzZXtjW2Y+PjJdPTA7az05MjticmVha319ZWxzZXtrPTkyfX13aGlsZSgwKTtpZigoa3wwKT09OTI/ZTowKXtrPTk0fWlmKChrfDApPT05NCl7Y1toPj4yXT1jW2g+PjJdfDJ9Y1tiPj4yXT1qO2lmKChhW2w+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWY9Y1ttPj4yXXwwO2lmKChmfDApPT0wKXtpPWQ7cmV0dXJufXZuKGYpO2k9ZDtyZXR1cm59Qz1YYSg0KXwwO2NbQz4+Ml09MjEzMDQ7d2IoQ3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gbGkoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MDtuPWk7cD1jW2Y+PjJdfDA7bz0ocHwwKT09KGV8MCk7ZG97aWYobyl7cT0oY1ttKzk2Pj4yXXwwKT09KGJ8MCk7aWYoIXE/KGNbbSsxMDA+PjJdfDApIT0oYnwwKTowKXticmVha31jW2Y+PjJdPWUrMTthW2U+PjBdPXE/NDM6NDU7Y1tnPj4yXT0wO3E9MDtpPW47cmV0dXJuIHF8MH19d2hpbGUoMCk7cT1hW2o+PjBdfDA7aWYoKHEmMSk9PTApe2o9KHEmMjU1KT4+PjF9ZWxzZXtqPWNbais0Pj4yXXwwfWlmKChqfDApIT0wJihifDApPT0oaHwwKSl7bz1jW2w+PjJdfDA7aWYoKG8ta3wwKT49MTYwKXtxPTA7aT1uO3JldHVybiBxfDB9cT1jW2c+PjJdfDA7Y1tsPj4yXT1vKzQ7Y1tvPj4yXT1xO2NbZz4+Ml09MDtxPTA7aT1uO3JldHVybiBxfDB9bD1tKzEwNHwwO2s9bTt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT09KGJ8MCkpe2JyZWFrfWs9ays0fDA7aWYoKGt8MCk9PShsfDApKXtrPWw7YnJlYWt9fWI9ay1tfDA7bT1iPj4yO2lmKChifDApPjkyKXtxPS0xO2k9bjtyZXR1cm4gcXwwfWlmKChkfDApPT0xMHwoZHwwKT09OCl7aWYoKG18MCk+PShkfDApKXtxPS0xO2k9bjtyZXR1cm4gcXwwfX1lbHNlIGlmKChkfDApPT0xNj8oYnwwKT49ODg6MCl7aWYobyl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigocC1lfDApPj0zKXtxPS0xO2k9bjtyZXR1cm4gcXwwfWlmKChhW3ArIC0xPj4wXXwwKSE9NDgpe3E9LTE7aT1uO3JldHVybiBxfDB9Y1tnPj4yXT0wO3E9YVsxMjAxNittPj4wXXwwO2NbZj4+Ml09cCsxO2FbcD4+MF09cTtxPTA7aT1uO3JldHVybiBxfDB9cT1hWzEyMDE2K20+PjBdfDA7Y1tmPj4yXT1wKzE7YVtwPj4wXT1xO2NbZz4+Ml09KGNbZz4+Ml18MCkrMTtxPTA7aT1uO3JldHVybiBxfDB9ZnVuY3Rpb24gbWkoYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aD1pO2k9aSsxNnwwO2w9aDtkPWNbZCsyOD4+Ml18MDtvPWQrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1uPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtqPWQrMTJ8MDttPWQrOHwwO289Y1ttPj4yXXwwO2lmKChjW2o+PjJdfDApLW8+PjI+Pj4wPm4+Pj4wPyhrPWNbbysobjw8Mik+PjJdfDAsKGt8MCkhPTApOjApe3VjW2NbKGNbaz4+Ml18MCkrMzI+PjJdJjMxXShrLDEyMDE2LDEyMDQyfDAsZSl8MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbD4+Ml09MTM2MDA7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzYwMCxsKX1lPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtrPWNbbT4+Ml18MDtpZigoY1tqPj4yXXwwKS1rPj4yPj4+MD5lPj4+MD8oZz1jW2srKGU8PDIpPj4yXXwwLChnfDApIT0wKTowKXthW2Y+PjBdPW9jW2NbKGNbZz4+Ml18MCkrMTY+PjJdJjEyN10oZyl8MDttY1tjWyhjW2c+PjJdfDApKzIwPj4yXSYxMjddKGIsZyk7bj1kKzR8MDtvPWNbbj4+Ml18MDtjW24+PjJdPW8rIC0xO2lmKChvfDApIT0wKXtpPWg7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTtpPWg7cmV0dXJufW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIG5pKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7aj1pO2k9aSsxNnwwO2w9ajtkPWNbZCsyOD4+Ml18MDtwPWQrNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1vPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtrPWQrMTJ8MDtuPWQrOHwwO3A9Y1tuPj4yXXwwO2lmKChjW2s+PjJdfDApLXA+PjI+Pj4wPm8+Pj4wPyhtPWNbcCsobzw8Mik+PjJdfDAsKG18MCkhPTApOjApe3VjW2NbKGNbbT4+Ml18MCkrMzI+PjJdJjMxXShtLDEyMDE2LDEyMDQ4fDAsZSl8MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbD4+Ml09MTM2MDA7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzYwMCxsKX1lPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtsPWNbbj4+Ml18MDtpZigoY1trPj4yXXwwKS1sPj4yPj4+MD5lPj4+MD8oaD1jW2wrKGU8PDIpPj4yXXwwLChofDApIT0wKTowKXthW2Y+PjBdPW9jW2NbKGNbaD4+Ml18MCkrMTI+PjJdJjEyN10oaCl8MDthW2c+PjBdPW9jW2NbKGNbaD4+Ml18MCkrMTY+PjJdJjEyN10oaCl8MDttY1tjWyhjW2g+PjJdfDApKzIwPj4yXSYxMjddKGIsaCk7bz1kKzR8MDtwPWNbbz4+Ml18MDtjW28+PjJdPXArIC0xO2lmKChwfDApIT0wKXtpPWo7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTtpPWo7cmV0dXJufXA9WGEoNCl8MDtjW3A+PjJdPTIxMzA0O3diKHB8MCwyMTM3NiwxOTYpfXA9WGEoNCl8MDtjW3A+PjJdPTIxMzA0O3diKHB8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIG9pKGIsZCxlLGYsZyxoLGosayxsLG0sbixvKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDt2YXIgcD0wLHE9MDtwPWk7aWYoYjw8MjQ+PjI0PT1oPDwyND4+MjQpe2lmKChhW2Q+PjBdfDApPT0wKXtqPS0xO2k9cDtyZXR1cm4ganwwfWFbZD4+MF09MDtqPWNbZz4+Ml18MDtjW2c+PjJdPWorMTthW2o+PjBdPTQ2O2c9YVtrPj4wXXwwO2lmKChnJjEpPT0wKXtnPShnJjI1NSk+Pj4xfWVsc2V7Zz1jW2srND4+Ml18MH1pZigoZ3wwKT09MCl7aj0wO2k9cDtyZXR1cm4ganwwfWc9Y1ttPj4yXXwwO2lmKChnLWx8MCk+PTE2MCl7aj0wO2k9cDtyZXR1cm4ganwwfWo9Y1tuPj4yXXwwO2NbbT4+Ml09Zys0O2NbZz4+Ml09ajtqPTA7aT1wO3JldHVybiBqfDB9aWYoYjw8MjQ+PjI0PT1qPDwyND4+MjQpe2g9YVtrPj4wXXwwO2lmKChoJjEpPT0wKXtoPShoJjI1NSk+Pj4xfWVsc2V7aD1jW2srND4+Ml18MH1pZigoaHwwKSE9MCl7aWYoKGFbZD4+MF18MCk9PTApe2o9LTE7aT1wO3JldHVybiBqfDB9Zz1jW20+PjJdfDA7aWYoKGctbHwwKT49MTYwKXtqPTA7aT1wO3JldHVybiBqfDB9aj1jW24+PjJdfDA7Y1ttPj4yXT1nKzQ7Y1tnPj4yXT1qO2Nbbj4+Ml09MDtqPTA7aT1wO3JldHVybiBqfDB9fWg9byszMnwwO2o9bztkb3tpZigoYVtqPj4wXXwwKT09Yjw8MjQ+PjI0KXtoPWo7YnJlYWt9aj1qKzF8MH13aGlsZSgoanwwKSE9KGh8MCkpO2I9aC1vfDA7aWYoKGJ8MCk+MzEpe2o9LTE7aT1wO3JldHVybiBqfDB9bz1hWzEyMDE2K2I+PjBdfDA7aWYoKGJ8MCk9PTIzfChifDApPT0yMil7YVtlPj4wXT04MDtqPWNbZz4+Ml18MDtjW2c+PjJdPWorMTthW2o+PjBdPW87aj0wO2k9cDtyZXR1cm4ganwwfWVsc2UgaWYoKGJ8MCk9PTI0fChifDApPT0yNSl7bj1jW2c+PjJdfDA7aWYoKG58MCkhPShmfDApPyhhW24rIC0xPj4wXSY5NXwwKSE9KGFbZT4+MF0mMTI3fDApOjApe2o9LTE7aT1wO3JldHVybiBqfDB9Y1tnPj4yXT1uKzE7YVtuPj4wXT1vO2o9MDtpPXA7cmV0dXJuIGp8MH1lbHNle2Y9byY5NTtpZigoZnwwKT09KGFbZT4+MF18MCk/KGFbZT4+MF09ZnwxMjgsKGFbZD4+MF18MCkhPTApOjApe2FbZD4+MF09MDtlPWFbaz4+MF18MDtpZigoZSYxKT09MCl7az0oZSYyNTUpPj4+MX1lbHNle2s9Y1trKzQ+PjJdfDB9aWYoKGt8MCkhPTA/KHE9Y1ttPj4yXXwwLChxLWx8MCk8MTYwKTowKXtqPWNbbj4+Ml18MDtjW20+PjJdPXErNDtjW3E+PjJdPWp9fWo9Y1tnPj4yXXwwO2NbZz4+Ml09aisxO2Fbaj4+MF09bztpZigoYnwwKT4yMSl7aj0wO2k9cDtyZXR1cm4ganwwfWNbbj4+Ml09KGNbbj4+Ml18MCkrMTtqPTA7aT1wO3JldHVybiBqfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcGkoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Zz1pO2k9aSsxNnwwO2s9ZztiPWNbYisyOD4+Ml18MDtuPWIrNHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1tPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtoPWIrMTJ8MDtsPWIrOHwwO249Y1tsPj4yXXwwO2lmKChjW2g+PjJdfDApLW4+PjI+Pj4wPm0+Pj4wPyhqPWNbbisobTw8Mik+PjJdfDAsKGp8MCkhPTApOjApe3VjW2NbKGNbaj4+Ml18MCkrNDg+PjJdJjMxXShqLDEyMDE2LDEyMDQyfDAsZCl8MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbaz4+Ml09MTM2MDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzYwOCxrKX1kPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtqPWNbbD4+Ml18MDtpZigoY1toPj4yXXwwKS1qPj4yPj4+MD5kPj4+MD8oZj1jW2orKGQ8PDIpPj4yXXwwLChmfDApIT0wKTowKXtjW2U+PjJdPW9jW2NbKGNbZj4+Ml18MCkrMTY+PjJdJjEyN10oZil8MDttY1tjWyhjW2Y+PjJdfDApKzIwPj4yXSYxMjddKGEsZik7bT1iKzR8MDtuPWNbbT4+Ml18MDtjW20+PjJdPW4rIC0xO2lmKChufDApIT0wKXtpPWc7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtpPWc7cmV0dXJufW49WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfW49WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHFpKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aD1pO2k9aSsxNnwwO2s9aDtiPWNbYisyOD4+Ml18MDtvPWIrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1uPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtqPWIrMTJ8MDttPWIrOHwwO289Y1ttPj4yXXwwO2lmKChjW2o+PjJdfDApLW8+PjI+Pj4wPm4+Pj4wPyhsPWNbbysobjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe3VjW2NbKGNbbD4+Ml18MCkrNDg+PjJdJjMxXShsLDEyMDE2LDEyMDQ4fDAsZCl8MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbaz4+Ml09MTM2MDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzYwOCxrKX1kPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtrPWNbbT4+Ml18MDtpZigoY1tqPj4yXXwwKS1rPj4yPj4+MD5kPj4+MD8oZz1jW2srKGQ8PDIpPj4yXXwwLChnfDApIT0wKTowKXtjW2U+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMTI+PjJdJjEyN10oZyl8MDtjW2Y+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMTY+PjJdJjEyN10oZyl8MDttY1tjWyhjW2c+PjJdfDApKzIwPj4yXSYxMjddKGEsZyk7bj1iKzR8MDtvPWNbbj4+Ml18MDtjW24+PjJdPW8rIC0xO2lmKChvfDApIT0wKXtpPWg7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtpPWg7cmV0dXJufW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHJpKGIsZCxlLGYsZyxoLGosayxsLG0sbixvKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDt2YXIgcD0wLHE9MDtwPWk7aWYoKGJ8MCk9PShofDApKXtpZigoYVtkPj4wXXwwKT09MCl7aj0tMTtpPXA7cmV0dXJuIGp8MH1hW2Q+PjBdPTA7aj1jW2c+PjJdfDA7Y1tnPj4yXT1qKzE7YVtqPj4wXT00NjtnPWFbaz4+MF18MDtpZigoZyYxKT09MCl7Zz0oZyYyNTUpPj4+MX1lbHNle2c9Y1trKzQ+PjJdfDB9aWYoKGd8MCk9PTApe2o9MDtpPXA7cmV0dXJuIGp8MH1nPWNbbT4+Ml18MDtpZigoZy1sfDApPj0xNjApe2o9MDtpPXA7cmV0dXJuIGp8MH1qPWNbbj4+Ml18MDtjW20+PjJdPWcrNDtjW2c+PjJdPWo7aj0wO2k9cDtyZXR1cm4ganwwfWlmKChifDApPT0oanwwKSl7aD1hW2s+PjBdfDA7aWYoKGgmMSk9PTApe2g9KGgmMjU1KT4+PjF9ZWxzZXtoPWNbays0Pj4yXXwwfWlmKChofDApIT0wKXtpZigoYVtkPj4wXXwwKT09MCl7aj0tMTtpPXA7cmV0dXJuIGp8MH1nPWNbbT4+Ml18MDtpZigoZy1sfDApPj0xNjApe2o9MDtpPXA7cmV0dXJuIGp8MH1qPWNbbj4+Ml18MDtjW20+PjJdPWcrNDtjW2c+PjJdPWo7Y1tuPj4yXT0wO2o9MDtpPXA7cmV0dXJuIGp8MH19aD1vKzEyOHwwO2o9bztkb3tpZigoY1tqPj4yXXwwKT09KGJ8MCkpe2g9ajticmVha31qPWorNHwwfXdoaWxlKChqfDApIT0oaHwwKSk7Yj1oLW98MDtoPWI+PjI7aWYoKGJ8MCk+MTI0KXtqPS0xO2k9cDtyZXR1cm4ganwwfW89YVsxMjAxNitoPj4wXXwwO2lmKChofDApPT0yNHwoaHwwKT09MjUpe249Y1tnPj4yXXwwO2lmKChufDApIT0oZnwwKT8oYVtuKyAtMT4+MF0mOTV8MCkhPShhW2U+PjBdJjEyN3wwKTowKXtqPS0xO2k9cDtyZXR1cm4ganwwfWNbZz4+Ml09bisxO2Fbbj4+MF09bztqPTA7aT1wO3JldHVybiBqfDB9ZWxzZSBpZighKChofDApPT0yM3woaHwwKT09MjIpKXtmPW8mOTU7aWYoKGZ8MCk9PShhW2U+PjBdfDApPyhhW2U+PjBdPWZ8MTI4LChhW2Q+PjBdfDApIT0wKTowKXthW2Q+PjBdPTA7ZT1hW2s+PjBdfDA7aWYoKGUmMSk9PTApe2s9KGUmMjU1KT4+PjF9ZWxzZXtrPWNbays0Pj4yXXwwfWlmKChrfDApIT0wPyhxPWNbbT4+Ml18MCwocS1sfDApPDE2MCk6MCl7aj1jW24+PjJdfDA7Y1ttPj4yXT1xKzQ7Y1txPj4yXT1qfX19ZWxzZXthW2U+PjBdPTgwfWo9Y1tnPj4yXXwwO2NbZz4+Ml09aisxO2Fbaj4+MF09bztpZigoYnwwKT44NCl7aj0wO2k9cDtyZXR1cm4ganwwfWNbbj4+Ml09KGNbbj4+Ml18MCkrMTtqPTA7aT1wO3JldHVybiBqfDB9ZnVuY3Rpb24gc2koYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gdGkoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHVpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aj1pO2k9aSszMnwwO209ajtuPWorMjR8MDtrPWorMTJ8MDtpZigoY1tmKzQ+PjJdJjF8MCk9PTApe2w9Y1soY1tkPj4yXXwwKSsyND4+Ml18MDtjW24+PjJdPWNbZT4+Ml07bz1oJjE7Y1ttKzA+PjJdPWNbbiswPj4yXTt3Y1tsJjYzXShiLGQsbSxmLGcsbyk7aT1qO3JldHVybn1kPWNbZisyOD4+Ml18MDtvPWQrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbT4+Ml09MTM2MDA7Y1ttKzQ+PjJdPTIwODtjW20rOD4+Ml09MDtjZygxMzYwMCxtKX1mPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDttPWNbZCs4Pj4yXXwwO2lmKChjW2QrMTI+PjJdfDApLW0+PjI+Pj4wPmY+Pj4wPyhsPWNbbSsoZjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2c9ZCs0fDA7bz1jW2c+PjJdfDA7Y1tnPj4yXT1vKyAtMTtpZigob3wwKT09MCl7bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpfW09Y1tsPj4yXXwwO2lmKGgpe21jW2NbbSsyND4+Ml0mMTI3XShrLGwpfWVsc2V7bWNbY1ttKzI4Pj4yXSYxMjddKGssbCl9bj1hW2s+PjBdfDA7aWYoKG4mMSk9PTApe2g9aysxfDA7ZD1oO2w9ays4fDB9ZWxzZXtsPWsrOHwwO2Q9Y1tsPj4yXXwwO2g9aysxfDB9bT1rKzR8MDt3aGlsZSgxKXtmPShuJjEpPT0wO2lmKGYpe2c9aDtuPShuJjI1NSk+Pj4xfWVsc2V7Zz1jW2w+PjJdfDA7bj1jW20+PjJdfDB9aWYoKGR8MCk9PShnK258MCkpe2JyZWFrfW89YVtkPj4wXXwwO249Y1tlPj4yXXwwO2Rve2lmKChufDApIT0wKXtmPW4rMjR8MDtnPWNbZj4+Ml18MDtpZigoZ3wwKSE9KGNbbisyOD4+Ml18MCkpe2NbZj4+Ml09ZysxO2FbZz4+MF09bzticmVha31pZigoeGNbY1soY1tuPj4yXXwwKSs1Mj4+Ml0mNjNdKG4sbyYyNTUpfDApPT0tMSl7Y1tlPj4yXT0wfX19d2hpbGUoMCk7bj1hW2s+PjBdfDA7ZD1kKzF8MH1jW2I+PjJdPWNbZT4+Ml07aWYoZil7aT1qO3JldHVybn1rPWNbays4Pj4yXXwwO2lmKChrfDApPT0wKXtpPWo7cmV0dXJufXZuKGspO2k9ajtyZXR1cm59bz1YYSg0KXwwO2Nbbz4+Ml09MjEzMDQ7d2Iob3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gdmkoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtkPWk7aT1pKzY0fDA7cj1kO3E9ZCsxNnwwO249ZCsyNHwwO209ZCszNnwwO2s9ZCs4fDA7bD1kKzR8MDtvPWQrMTJ8MDthW3ErMD4+MF09YVsxMjI2ND4+MF18MDthW3ErMT4+MF09YVsxMjI2NT4+MF18MDthW3ErMj4+MF09YVsxMjI2Nj4+MF18MDthW3ErMz4+MF09YVsxMjI2Nz4+MF18MDthW3ErND4+MF09YVsxMjI2OD4+MF18MDthW3ErNT4+MF09YVsxMjI2OT4+MF18MDt0PXErMXwwO3A9Zis0fDA7cz1jW3A+PjJdfDA7aWYoKHMmMjA0OHwwKSE9MCl7YVt0Pj4wXT00Mzt0PXErMnwwfWlmKChzJjUxMnwwKSE9MCl7YVt0Pj4wXT0zNTt0PXQrMXwwfWFbdD4+MF09MTA4O3Q9dCsxfDA7dT1zJjc0O2Rve2lmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZSBpZigodXwwKT09OCl7aWYoKHMmMTYzODR8MCk9PTApe2FbdD4+MF09MTIwO2JyZWFrfWVsc2V7YVt0Pj4wXT04ODticmVha319ZWxzZXthW3Q+PjBdPTEwMH19d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO2Nbcj4+Ml09aDtxPXdpKG4sMTIsdSxxLHIpfDA7aD1uK3F8MDtwPWNbcD4+Ml0mMTc2O2Rve2lmKChwfDApPT0zMil7cD1ofWVsc2UgaWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh1PWFbbisxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtqPTIxfX1lbHNle2o9MjF9fXdoaWxlKDApO2lmKChqfDApPT0yMSl7cD1ufWo9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09ajtqPWorNHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTt4aShuLHAsaCxtLGssbCxvKTtqPWNbbz4+Ml18MDt0PWorNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1tsPj4yXXwwO1djKGIscyxtLHQsdSxmLGcpO2k9ZDtyZXR1cm59bGNbY1soY1tqPj4yXXwwKSs4Pj4yXSYyNTVdKGopO3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1tsPj4yXXwwO1djKGIscyxtLHQsdSxmLGcpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gd2koYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MDtnPWk7aT1pKzE2fDA7aD1nO2NbaD4+Ml09ZjtkPWliKGR8MCl8MDtlPVFiKGF8MCxifDAsZXwwLGh8MCl8MDtpZigoZHwwKT09MCl7aT1nO3JldHVybiBlfDB9aWIoZHwwKXwwO2k9ZztyZXR1cm4gZXwwfWZ1bmN0aW9uIHhpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7az1pO2k9aSszMnwwO3A9aztsPWsrMTJ8MDtuPWNbaj4+Ml18MDtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbcD4+Ml09MTM0NTY7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ1NixwKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbbis4Pj4yXXwwO2lmKCEoKGNbbisxMj4+Ml18MCktcz4+Mj4+PjA+cj4+PjApKXt2PVhhKDQpfDA7Y1t2Pj4yXT0yMTMwNDt3Yih2fDAsMjEzNzYsMTk2KX1uPWNbcysocjw8Mik+PjJdfDA7aWYoKG58MCk9PTApe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfWo9Y1tqPj4yXXwwO2lmKCEoKGNbMzQwMF18MCk9PS0xKSl7Y1twPj4yXT0xMzYwMDtjW3ArND4+Ml09MjA4O2NbcCs4Pj4yXT0wO2NnKDEzNjAwLHApfXA9KGNbMTM2MDQ+PjJdfDApKyAtMXwwO3I9Y1tqKzg+PjJdfDA7aWYoISgoY1tqKzEyPj4yXXwwKS1yPj4yPj4+MD5wPj4+MCkpe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfWo9Y1tyKyhwPDwyKT4+Ml18MDtpZigoanwwKT09MCl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9bWNbY1soY1tqPj4yXXwwKSsyMD4+Ml0mMTI3XShsLGopO3A9YVtsPj4wXXwwO2lmKChwJjEpPT0wKXtwPShwJjI1NSk+Pj4xfWVsc2V7cD1jW2wrND4+Ml18MH1pZigocHwwKSE9MCl7Y1toPj4yXT1mO3A9YVtiPj4wXXwwO2lmKHA8PDI0Pj4yND09NDN8cDw8MjQ+PjI0PT00NSl7dj14Y1tjWyhjW24+PjJdfDApKzI4Pj4yXSY2M10obixwKXwwO3A9Y1toPj4yXXwwO2NbaD4+Ml09cCsxO2FbcD4+MF09djtwPWIrMXwwfWVsc2V7cD1ifWlmKCgoZS1wfDApPjE/KGFbcD4+MF18MCk9PTQ4OjApPyhxPXArMXwwLHY9YVtxPj4wXXwwLHY8PDI0Pj4yND09ODh8djw8MjQ+PjI0PT0xMjApOjApe3Y9eGNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mNjNdKG4sNDgpfDA7dT1jW2g+PjJdfDA7Y1toPj4yXT11KzE7YVt1Pj4wXT12O3U9eGNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mNjNdKG4sYVtxPj4wXXwwKXwwO3Y9Y1toPj4yXXwwO2NbaD4+Ml09disxO2Fbdj4+MF09dTtwPXArMnwwfWlmKChwfDApIT0oZXwwKT8obz1lKyAtMXwwLG8+Pj4wPnA+Pj4wKTowKXtxPXA7ZG97dj1hW3E+PjBdfDA7YVtxPj4wXT1hW28+PjBdfDA7YVtvPj4wXT12O3E9cSsxfDA7bz1vKyAtMXwwfXdoaWxlKHE+Pj4wPG8+Pj4wKX1qPW9jW2NbKGNbaj4+Ml18MCkrMTY+PjJdJjEyN10oail8MDtpZihwPj4+MDxlPj4+MCl7cT1sKzF8MDtzPWwrNHwwO289bCs4fDA7dT0wO3Q9MDtyPXA7d2hpbGUoMSl7dj1hWygoYVtsPj4wXSYxKT09MD9xOmNbbz4+Ml18MCkrdD4+MF18MDtpZih2PDwyND4+MjQhPTAmKHV8MCk9PSh2PDwyND4+MjR8MCkpe3U9Y1toPj4yXXwwO2NbaD4+Ml09dSsxO2FbdT4+MF09ajt1PWFbbD4+MF18MDtpZigodSYxKT09MCl7dj0odSYyNTUpPj4+MX1lbHNle3Y9Y1tzPj4yXXwwfXU9MDt0PSh0Pj4+MDwodisgLTF8MCk+Pj4wJjEpK3R8MH13PXhjW2NbKGNbbj4+Ml18MCkrMjg+PjJdJjYzXShuLGFbcj4+MF18MCl8MDt2PWNbaD4+Ml18MDtjW2g+PjJdPXYrMTthW3Y+PjBdPXc7cj1yKzF8MDtpZighKHI+Pj4wPGU+Pj4wKSl7YnJlYWt9ZWxzZXt1PXUrMXwwfX19bz1mKyhwLWIpfDA7bj1jW2g+PjJdfDA7aWYoKG98MCkhPShufDApPyhtPW4rIC0xfDAsbT4+PjA+bz4+PjApOjApe2Rve3c9YVtvPj4wXXwwO2Fbbz4+MF09YVttPj4wXXwwO2FbbT4+MF09dztvPW8rMXwwO209bSsgLTF8MH13aGlsZShvPj4+MDxtPj4+MCl9fWVsc2V7dWNbY1soY1tuPj4yXXwwKSszMj4+Ml0mMzFdKG4sYixlLGYpfDA7Y1toPj4yXT1mKyhlLWIpfWlmKChkfDApPT0oZXwwKSl7Yj1jW2g+PjJdfDB9ZWxzZXtiPWYrKGQtYil8MH1jW2c+PjJdPWI7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59bD1jW2wrOD4+Ml18MDtpZigobHwwKT09MCl7aT1rO3JldHVybn12bihsKTtpPWs7cmV0dXJufWZ1bmN0aW9uIHlpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2Q9aTtpPWkrOTZ8MDtuPWQrOHwwO3M9ZDtvPWQrNjR8MDtrPWQrNjB8MDttPWQrNTZ8MDtwPWQrNTJ8MDt1PXM7Y1t1Pj4yXT0zNztjW3UrND4+Ml09MDt1PXMrMXwwO3E9Zis0fDA7cj1jW3E+PjJdfDA7aWYoKHImMjA0OHwwKSE9MCl7YVt1Pj4wXT00Mzt1PXMrMnwwfWlmKChyJjUxMnwwKSE9MCl7YVt1Pj4wXT0zNTt1PXUrMXwwfXQ9dSsyfDA7YVt1Pj4wXT0xMDg7YVt1KzE+PjBdPTEwODt1PXImNzQ7ZG97aWYoKHV8MCk9PTY0KXthW3Q+PjBdPTExMX1lbHNlIGlmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNle2FbdD4+MF09MTAwfX13aGlsZSgwKTtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dT1jWzMzNDBdfDA7dD1uO2NbdD4+Ml09aDtjW3QrND4+Ml09ajtqPXdpKG8sMjIsdSxzLG4pfDA7aD1vK2p8MDtxPWNbcT4+Ml0mMTc2O2Rve2lmKChxfDApPT0zMil7cT1ofWVsc2UgaWYoKHF8MCk9PTE2KXtxPWFbbz4+MF18MDtpZihxPDwyND4+MjQ9PTQzfHE8PDI0Pj4yND09NDUpe3E9bysxfDA7YnJlYWt9aWYoKGp8MCk+MSZxPDwyND4+MjQ9PTQ4Pyh1PWFbbysxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3E9bysyfDB9ZWxzZXtsPTIxfX1lbHNle2w9MjF9fXdoaWxlKDApO2lmKChsfDApPT0yMSl7cT1vfWw9Y1tmKzI4Pj4yXXwwO2NbcD4+Ml09bDtsPWwrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTt4aShvLHEsaCxuLGssbSxwKTtsPWNbcD4+Ml18MDt0PWwrNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1ttPj4yXXwwO1djKGIscyxuLHQsdSxmLGcpO2k9ZDtyZXR1cm59bGNbY1soY1tsPj4yXXwwKSs4Pj4yXSYyNTVdKGwpO3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1ttPj4yXXwwO1djKGIscyxuLHQsdSxmLGcpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gemkoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDttPWk7aT1pKzY0fDA7cj1tO3E9bSsxNnwwO249bSsyNHwwO2s9bSszNnwwO2Q9bSs4fDA7aj1tKzR8MDtvPW0rMTJ8MDthW3ErMD4+MF09YVsxMjI2ND4+MF18MDthW3ErMT4+MF09YVsxMjI2NT4+MF18MDthW3ErMj4+MF09YVsxMjI2Nj4+MF18MDthW3ErMz4+MF09YVsxMjI2Nz4+MF18MDthW3ErND4+MF09YVsxMjI2OD4+MF18MDthW3ErNT4+MF09YVsxMjI2OT4+MF18MDt0PXErMXwwO3A9Zis0fDA7cz1jW3A+PjJdfDA7aWYoKHMmMjA0OHwwKSE9MCl7YVt0Pj4wXT00Mzt0PXErMnwwfWlmKChzJjUxMnwwKSE9MCl7YVt0Pj4wXT0zNTt0PXQrMXwwfWFbdD4+MF09MTA4O3Q9dCsxfDA7dT1zJjc0O2Rve2lmKCh1fDApPT04KXtpZigocyYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTExN319d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO2Nbcj4+Ml09aDtxPXdpKG4sMTIsdSxxLHIpfDA7aD1uK3F8MDtwPWNbcD4+Ml0mMTc2O2Rve2lmKChwfDApPT0zMil7cD1ofWVsc2UgaWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh1PWFbbisxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtsPTIxfX1lbHNle2w9MjF9fXdoaWxlKDApO2lmKChsfDApPT0yMSl7cD1ufWw9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09bDtsPWwrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTt4aShuLHAsaCxrLGQsaixvKTtsPWNbbz4+Ml18MDt0PWwrNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1tkPj4yXXwwO3U9Y1tqPj4yXXwwO1djKGIscyxrLHQsdSxmLGcpO2k9bTtyZXR1cm59bGNbY1soY1tsPj4yXXwwKSs4Pj4yXSYyNTVdKGwpO3M9Y1tlPj4yXXwwO3Q9Y1tkPj4yXXwwO3U9Y1tqPj4yXXwwO1djKGIscyxrLHQsdSxmLGcpO2k9bTtyZXR1cm59ZnVuY3Rpb24gQWkoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7ZD1pO2k9aSs5NnwwO249ZCs4fDA7cz1kO289ZCs2NHwwO2s9ZCs2MHwwO209ZCs1NnwwO3A9ZCs1MnwwO3U9cztjW3U+PjJdPTM3O2NbdSs0Pj4yXT0wO3U9cysxfDA7cT1mKzR8MDtyPWNbcT4+Ml18MDtpZigociYyMDQ4fDApIT0wKXthW3U+PjBdPTQzO3U9cysyfDB9aWYoKHImNTEyfDApIT0wKXthW3U+PjBdPTM1O3U9dSsxfDB9dD11KzJ8MDthW3U+PjBdPTEwODthW3UrMT4+MF09MTA4O3U9ciY3NDtkb3tpZigodXwwKT09NjQpe2FbdD4+MF09MTExfWVsc2UgaWYoKHV8MCk9PTgpe2lmKChyJjE2Mzg0fDApPT0wKXthW3Q+PjBdPTEyMDticmVha31lbHNle2FbdD4+MF09ODg7YnJlYWt9fWVsc2V7YVt0Pj4wXT0xMTd9fXdoaWxlKDApO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX11PWNbMzM0MF18MDt0PW47Y1t0Pj4yXT1oO2NbdCs0Pj4yXT1qO2o9d2kobywyMyx1LHMsbil8MDtoPW8ranwwO3E9Y1txPj4yXSYxNzY7ZG97aWYoKHF8MCk9PTMyKXtxPWh9ZWxzZSBpZigocXwwKT09MTYpe3E9YVtvPj4wXXwwO2lmKHE8PDI0Pj4yND09NDN8cTw8MjQ+PjI0PT00NSl7cT1vKzF8MDticmVha31pZigoanwwKT4xJnE8PDI0Pj4yND09NDg/KHU9YVtvKzE+PjBdfDAsdTw8MjQ+PjI0PT04OHx1PDwyND4+MjQ9PTEyMCk6MCl7cT1vKzJ8MH1lbHNle2w9MjF9fWVsc2V7bD0yMX19d2hpbGUoMCk7aWYoKGx8MCk9PTIxKXtxPW99bD1jW2YrMjg+PjJdfDA7Y1twPj4yXT1sO2w9bCs0fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO3hpKG8scSxoLG4sayxtLHApO2w9Y1twPj4yXXwwO3Q9bCs0fDA7dT1jW3Q+PjJdfDA7Y1t0Pj4yXT11KyAtMTtpZigodXwwKSE9MCl7cz1jW2U+PjJdfDA7dD1jW2s+PjJdfDA7dT1jW20+PjJdfDA7V2MoYixzLG4sdCx1LGYsZyk7aT1kO3JldHVybn1sY1tjWyhjW2w+PjJdfDApKzg+PjJdJjI1NV0obCk7cz1jW2U+PjJdfDA7dD1jW2s+PjJdfDA7dT1jW20+PjJdfDA7V2MoYixzLG4sdCx1LGYsZyk7aT1kO3JldHVybn1mdW5jdGlvbiBCaShiLGQsZSxmLGcsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aj0rajt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDtkPWk7aT1pKzEyOHwwO3A9ZDt1PWQrNjR8MDtyPWQrOTJ8MDt0PWQrODB8MDtsPWQrNzZ8MDtuPWQrNzJ8MDtvPWQrODR8MDttPWQrODh8MDt2PXU7Y1t2Pj4yXT0zNztjW3YrND4+Ml09MDt2PXUrMXwwO3M9Zis0fDA7dz1jW3M+PjJdfDA7aWYoKHcmMjA0OHwwKSE9MCl7YVt2Pj4wXT00Mzt2PXUrMnwwfWlmKCh3JjEwMjR8MCkhPTApe2Fbdj4+MF09MzU7dj12KzF8MH14PXcmMjYwO3k9dz4+PjE0O2Rve2lmKCh4fDApPT0yNjApe2lmKCh5JjF8MCk9PTApe2Fbdj4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt2Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt2Pj4wXT00Njt3PXYrMnwwO2FbdisxPj4wXT00MjtpZigoeHwwKT09NCl7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDI7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MDt2PTE7YnJlYWt9fWVsc2UgaWYoKHh8MCk9PTI1Nil7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDE7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT02OTt2PTE7YnJlYWt9fWVsc2V7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDM7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MTt2PTE7YnJlYWt9fX19d2hpbGUoMCk7Y1t0Pj4yXT1yO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtpZih2KXtjW3A+PjJdPWNbZis4Pj4yXTt5PXArNHwwO2hbaz4+M109ajtjW3k+PjJdPWNbaz4+Ml07Y1t5KzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9ZWxzZXtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWlmKCh3fDApPjI5KXt3PShhWzEzMzY4XXwwKT09MDtpZih2KXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2NbcD4+Ml09Y1tmKzg+PjJdO3k9cCs0fDA7aFtrPj4zXT1qO2NbeT4+Ml09Y1trPj4yXTtjW3krND4+Ml09Y1trKzQ+PjJdO3c9Q2kodCx3LHUscCl8MH1lbHNle2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eT1wKzR8MDtoW2s+PjNdPWo7Y1t5Pj4yXT1jW2s+PjJdO2NbeSs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0xNil7cz1hW3Y+PjBdfDA7aWYoczw8MjQ+PjI0PT00M3xzPDwyND4+MjQ9PTQ1KXtzPXYrMXwwO2JyZWFrfWlmKCh3fDApPjEmczw8MjQ+PjI0PT00OD8oeT1hW3YrMT4+MF18MCx5PDwyND4+MjQ9PTg4fHk8PDI0Pj4yND09MTIwKTowKXtzPXYrMnwwfWVsc2V7cT00OH19ZWxzZSBpZigoc3wwKT09MzIpe3M9dX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwxKXwwO2lmKChwfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXg9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09eDt4PXgrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtEaShyLHMsdSxwLGwsbixvKTtvPWNbbz4+Ml18MDt4PW8rNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1XYyhtLGNbZT4+Ml18MCxwLGNbbD4+Ml18MCxjW24+PjJdfDAsZixnKTt5PWNbbT4+Ml18MDtjW2U+PjJdPXk7Y1tiPj4yXT15O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1kO3JldHVybn12bih0KTtpPWQ7cmV0dXJufWZ1bmN0aW9uIENpKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWY7Y1tnPj4yXT1lO2I9aWIoYnwwKXwwO2Q9SWIoYXwwLGR8MCxnfDApfDA7aWYoKGJ8MCk9PTApe2k9ZjtyZXR1cm4gZHwwfWliKGJ8MCl8MDtpPWY7cmV0dXJuIGR8MH1mdW5jdGlvbiBEaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO2s9aTtpPWkrMzJ8MDtvPWs7bD1rKzEyfDA7bT1jW2o+PjJdfDA7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW28+PjJdPTEzNDU2O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NTYsbyl9dD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7cj1jW20rOD4+Ml18MDtpZighKChjW20rMTI+PjJdfDApLXI+PjI+Pj4wPnQ+Pj4wKSl7eT1YYSg0KXwwO2NbeT4+Ml09MjEzMDQ7d2IoeXwwLDIxMzc2LDE5Nil9bT1jW3IrKHQ8PDIpPj4yXXwwO2lmKChtfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbaj4+Ml18MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2Nbbz4+Ml09MTM2MDA7Y1tvKzQ+PjJdPTIwODtjW28rOD4+Ml09MDtjZygxMzYwMCxvKX1vPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtyPWNbais4Pj4yXXwwO2lmKCEoKGNbaisxMj4+Ml18MCktcj4+Mj4+PjA+bz4+PjApKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1vPWNbcisobzw8Mik+PjJdfDA7aWYoKG98MCk9PTApe3k9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfW1jW2NbKGNbbz4+Ml18MCkrMjA+PjJdJjEyN10obCxvKTtjW2g+PjJdPWY7aj1hW2I+PjBdfDA7aWYoajw8MjQ+PjI0PT00M3xqPDwyND4+MjQ9PTQ1KXt5PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGopfDA7dD1jW2g+PjJdfDA7Y1toPj4yXT10KzE7YVt0Pj4wXT15O3Q9YisxfDB9ZWxzZXt0PWJ9aj1lO2E6ZG97aWYoKChqLXR8MCk+MT8oYVt0Pj4wXXwwKT09NDg6MCk/KHA9dCsxfDAseT1hW3A+PjBdfDAseTw8MjQ+PjI0PT04OHx5PDwyND4+MjQ9PTEyMCk6MCl7eT14Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSY2M10obSw0OCl8MDt4PWNbaD4+Ml18MDtjW2g+PjJdPXgrMTthW3g+PjBdPXk7dD10KzJ8MDt4PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGFbcD4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrMTthW3k+PjBdPXg7aWYodD4+PjA8ZT4+PjApe3I9dDt3aGlsZSgxKXtwPWFbcj4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9eT1wPDwyND4+MjQ7aWYoISgoeSsgLTQ4fDApPj4+MDwxMCk/ISgoKHl8MzIpKyAtOTd8MCk+Pj4wPDYpOjApe3A9dDticmVhayBhfXI9cisxfDA7aWYoIShyPj4+MDxlPj4+MCkpe3A9dDticmVha319fWVsc2V7cD10O3I9dH19ZWxzZXtzPTE1fX13aGlsZSgwKTtiOmRve2lmKChzfDApPT0xNSl7aWYodD4+PjA8ZT4+PjApe3I9dDt3aGlsZSgxKXtwPWFbcj4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cz1yKzF8MDtpZighKCgocDw8MjQ+PjI0KSsgLTQ4fDApPj4+MDwxMCkpe3A9dDticmVhayBifWlmKHM+Pj4wPGU+Pj4wKXtyPXN9ZWxzZXtwPXQ7cj1zO2JyZWFrfX19ZWxzZXtwPXQ7cj10fX19d2hpbGUoMCk7cz1hW2w+PjBdfDA7aWYoKHMmMSk9PTApe3M9KHMmMjU1KT4+PjF9ZWxzZXtzPWNbbCs0Pj4yXXwwfWlmKChzfDApIT0wKXtpZigocHwwKSE9KHJ8MCk/KHE9cisgLTF8MCxxPj4+MD5wPj4+MCk6MCl7cz1wO2Rve3k9YVtzPj4wXXwwO2Fbcz4+MF09YVtxPj4wXXwwO2FbcT4+MF09eTtzPXMrMXwwO3E9cSsgLTF8MH13aGlsZShzPj4+MDxxPj4+MCl9dT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7aWYocD4+PjA8cj4+PjApe3E9bCsxfDA7dD1sKzR8MDtzPWwrOHwwO3g9MDt3PTA7dj1wO3doaWxlKDEpe3k9YVsoKGFbbD4+MF0mMSk9PTA/cTpjW3M+PjJdfDApK3c+PjBdfDA7aWYoeTw8MjQ+PjI0PjAmKHh8MCk9PSh5PDwyND4+MjR8MCkpe3g9Y1toPj4yXXwwO2NbaD4+Ml09eCsxO2FbeD4+MF09dTt4PWFbbD4+MF18MDtpZigoeCYxKT09MCl7eT0oeCYyNTUpPj4+MX1lbHNle3k9Y1t0Pj4yXXwwfXg9MDt3PSh3Pj4+MDwoeSsgLTF8MCk+Pj4wJjEpK3d8MH16PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGFbdj4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrMTthW3k+PjBdPXo7dj12KzF8MDtpZighKHY+Pj4wPHI+Pj4wKSl7YnJlYWt9ZWxzZXt4PXgrMXwwfX19cD1mKyhwLWIpfDA7cT1jW2g+PjJdfDA7aWYoKHB8MCkhPShxfDApPyhuPXErIC0xfDAsbj4+PjA+cD4+PjApOjApe2Rve3o9YVtwPj4wXXwwO2FbcD4+MF09YVtuPj4wXXwwO2Fbbj4+MF09ejtwPXArMXwwO249bisgLTF8MH13aGlsZShwPj4+MDxuPj4+MCl9fWVsc2V7dWNbY1soY1ttPj4yXXwwKSszMj4+Ml0mMzFdKG0scCxyLGNbaD4+Ml18MCl8MDtjW2g+PjJdPShjW2g+PjJdfDApKyhyLXApfWM6ZG97aWYocj4+PjA8ZT4+PjApe3doaWxlKDEpe249YVtyPj4wXXwwO2lmKG48PDI0Pj4yND09NDYpe2JyZWFrfXk9eGNbY1soY1ttPj4yXXwwKSsyOD4+Ml0mNjNdKG0sbil8MDt6PWNbaD4+Ml18MDtjW2g+PjJdPXorMTthW3o+PjBdPXk7cj1yKzF8MDtpZighKHI+Pj4wPGU+Pj4wKSl7YnJlYWsgY319eT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7ej1jW2g+PjJdfDA7Y1toPj4yXT16KzE7YVt6Pj4wXT15O3I9cisxfDB9fXdoaWxlKDApO3VjW2NbKGNbbT4+Ml18MCkrMzI+PjJdJjMxXShtLHIsZSxjW2g+PjJdfDApfDA7bT0oY1toPj4yXXwwKSsoai1yKXwwO2NbaD4+Ml09bTtpZigoZHwwKSE9KGV8MCkpe209ZisoZC1iKXwwfWNbZz4+Ml09bTtpZigoYVtsPj4wXSYxKT09MCl7aT1rO3JldHVybn1sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWs7cmV0dXJufXZuKGwpO2k9aztyZXR1cm59ZnVuY3Rpb24gRWkoYixkLGUsZixnLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9K2o7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtkPWk7aT1pKzEyOHwwO3A9ZDt1PWQrNjR8MDtyPWQrOTJ8MDt0PWQrODB8MDtsPWQrNzZ8MDttPWQrNzJ8MDtvPWQrODR8MDtuPWQrODh8MDt4PXU7Y1t4Pj4yXT0zNztjW3grND4+Ml09MDt4PXUrMXwwO3M9Zis0fDA7dj1jW3M+PjJdfDA7aWYoKHYmMjA0OHwwKSE9MCl7YVt4Pj4wXT00Mzt4PXUrMnwwfWlmKCh2JjEwMjR8MCkhPTApe2FbeD4+MF09MzU7eD14KzF8MH13PXYmMjYwO3Y9dj4+PjE0O2Rve2lmKCh3fDApPT0yNjApe2FbeD4+MF09NzY7dz14KzF8MDtpZigodiYxfDApPT0wKXthW3c+PjBdPTk3O3Y9MDticmVha31lbHNle2Fbdz4+MF09NjU7dj0wO2JyZWFrfX1lbHNle2FbeD4+MF09NDY7YVt4KzE+PjBdPTQyO2FbeCsyPj4wXT03Njt4PXgrM3wwO2lmKCh3fDApPT0yNTYpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAxO3Y9MTticmVha31lbHNle2FbeD4+MF09Njk7dj0xO2JyZWFrfX1lbHNlIGlmKCh3fDApPT00KXtpZigodiYxfDApPT0wKXthW3g+PjBdPTEwMjt2PTE7YnJlYWt9ZWxzZXthW3g+PjBdPTcwO3Y9MTticmVha319ZWxzZXtpZigodiYxfDApPT0wKXthW3g+PjBdPTEwMzt2PTE7YnJlYWt9ZWxzZXthW3g+PjBdPTcxO3Y9MTticmVha319fX13aGlsZSgwKTtjW3Q+PjJdPXI7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2lmKHYpe2NbcD4+Ml09Y1tmKzg+PjJdO3g9cCs0fDA7aFtrPj4zXT1qO2NbeD4+Ml09Y1trPj4yXTtjW3grND4+Ml09Y1trKzQ+PjJdO3c9d2kociwzMCx3LHUscCl8MH1lbHNle2hbaz4+M109ajtjW3A+PjJdPWNbaz4+Ml07Y1twKzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9aWYoKHd8MCk+Mjkpe3c9KGFbMTMzNjhdfDApPT0wO2lmKHYpe2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eD1wKzR8MDtoW2s+PjNdPWo7Y1t4Pj4yXT1jW2s+PjJdO2NbeCs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfWVsc2V7aWYodz8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0xNil7cz1hW3Y+PjBdfDA7aWYoczw8MjQ+PjI0PT00M3xzPDwyND4+MjQ9PTQ1KXtzPXYrMXwwO2JyZWFrfWlmKCh3fDApPjEmczw8MjQ+PjI0PT00OD8oeD1hW3YrMT4+MF18MCx4PDwyND4+MjQ9PTg4fHg8PDI0Pj4yND09MTIwKTowKXtzPXYrMnwwfWVsc2V7cT00OH19ZWxzZSBpZigoc3wwKT09MzIpe3M9dX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwxKXwwO2lmKChwfDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXc9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09dzt3PXcrNHwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMTtEaShyLHMsdSxwLGwsbSxvKTtvPWNbbz4+Ml18MDt3PW8rNHwwO3g9Y1t3Pj4yXXwwO2Nbdz4+Ml09eCsgLTE7aWYoKHh8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1XYyhuLGNbZT4+Ml18MCxwLGNbbD4+Ml18MCxjW20+PjJdfDAsZixnKTt4PWNbbj4+Ml18MDtjW2U+PjJdPXg7Y1tiPj4yXT14O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1kO3JldHVybn12bih0KTtpPWQ7cmV0dXJufWZ1bmN0aW9uIEZpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtsPWk7aT1pKzgwfDA7bj1sO289bCs3MnwwO2Q9bCs1MnwwO2s9bCsxMnwwO2FbbyswPj4wXT1hWzEyMjcyPj4wXXwwO2FbbysxPj4wXT1hWzEyMjczPj4wXXwwO2FbbysyPj4wXT1hWzEyMjc0Pj4wXXwwO2FbbyszPj4wXT1hWzEyMjc1Pj4wXXwwO2Fbbys0Pj4wXT1hWzEyMjc2Pj4wXXwwO2Fbbys1Pj4wXT1hWzEyMjc3Pj4wXXwwO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1wPWNbMzM0MF18MDtjW24+PjJdPWg7bz13aShkLDIwLHAsbyxuKXwwO2g9ZCtvfDA7cD1jW2YrND4+Ml0mMTc2O2Rve2lmKChwfDApPT0xNil7cD1hW2Q+PjBdfDA7aWYocDw8MjQ+PjI0PT00M3xwPDwyND4+MjQ9PTQ1KXtwPWQrMXwwO2JyZWFrfWlmKChvfDApPjEmcDw8MjQ+PjI0PT00OD8ocT1hW2QrMT4+MF18MCxxPDwyND4+MjQ9PTg4fHE8PDI0Pj4yND09MTIwKTowKXtwPWQrMnwwfWVsc2V7bT0xMX19ZWxzZSBpZigocHwwKT09MzIpe3A9aH1lbHNle209MTF9fXdoaWxlKDApO2lmKChtfDApPT0xMSl7cD1kfW09Y1tmKzI4Pj4yXXwwO3E9bSs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ1NjtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDU2LG4pfXE9KGNbMTM0NjA+PjJdfDApKyAtMXwwO249Y1ttKzg+PjJdfDA7aWYoKGNbbSsxMj4+Ml18MCktbj4+Mj4+PjA+cT4+PjA/KGo9Y1tuKyhxPDwyKT4+Ml18MCwoanwwKSE9MCk6MCl7bj1tKzR8MDtxPWNbbj4+Ml18MDtjW24+PjJdPXErIC0xO2lmKChxfDApPT0wKXtsY1tjWyhjW20+PjJdfDApKzg+PjJdJjI1NV0obSl9dWNbY1soY1tqPj4yXXwwKSszMj4+Ml0mMzFdKGosZCxoLGspfDA7aj1rK298MDtpZigocHwwKT09KGh8MCkpe3E9ajtwPWNbZT4+Ml18MDtXYyhiLHAsayxxLGosZixnKTtpPWw7cmV0dXJufXE9aysocC1kKXwwO3A9Y1tlPj4yXXwwO1djKGIscCxrLHEsaixmLGcpO2k9bDtyZXR1cm59cT1YYSg0KXwwO2NbcT4+Ml09MjEzMDQ7d2IocXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gR2koYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gSGkoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIElpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MDtqPWk7aT1pKzMyfDA7bT1qO249aisyNHwwO2s9aisxMnwwO2lmKChjW2YrND4+Ml0mMXwwKT09MCl7az1jWyhjW2Q+PjJdfDApKzI0Pj4yXXwwO2Nbbj4+Ml09Y1tlPj4yXTtsPWgmMTtjW20rMD4+Ml09Y1tuKzA+PjJdO3djW2smNjNdKGIsZCxtLGYsZyxsKTtpPWo7cmV0dXJufW49Y1tmKzI4Pj4yXXwwO2Q9bis0fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxO2lmKCEoKGNbMzQwMl18MCk9PS0xKSl7Y1ttPj4yXT0xMzYwODtjW20rND4+Ml09MjA4O2NbbSs4Pj4yXT0wO2NnKDEzNjA4LG0pfWc9KGNbMTM2MTI+PjJdfDApKyAtMXwwO209Y1tuKzg+PjJdfDA7aWYoKGNbbisxMj4+Ml18MCktbT4+Mj4+PjA+Zz4+PjA/KGw9Y1ttKyhnPDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7Zj1uKzR8MDtkPWNbZj4+Ml18MDtjW2Y+PjJdPWQrIC0xO2lmKChkfDApPT0wKXtsY1tjWyhjW24+PjJdfDApKzg+PjJdJjI1NV0obil9bT1jW2w+PjJdfDA7aWYoaCl7bWNbY1ttKzI0Pj4yXSYxMjddKGssbCl9ZWxzZXttY1tjW20rMjg+PjJdJjEyN10oayxsKX1nPWFbaz4+MF18MDtpZigoZyYxKT09MCl7aD1rKzR8MDttPWg7bD1rKzh8MH1lbHNle2w9ays4fDA7bT1jW2w+PjJdfDA7aD1rKzR8MH13aGlsZSgxKXtmPShnJjEpPT0wO2lmKGYpe249aDtnPShnJjI1NSk+Pj4xfWVsc2V7bj1jW2w+PjJdfDA7Zz1jW2g+PjJdfDB9aWYoKG18MCk9PShuKyhnPDwyKXwwKSl7YnJlYWt9Zz1jW20+PjJdfDA7Zj1jW2U+PjJdfDA7aWYoKGZ8MCkhPTApe2Q9ZisyNHwwO249Y1tkPj4yXXwwO2lmKChufDApPT0oY1tmKzI4Pj4yXXwwKSl7Zz14Y1tjWyhjW2Y+PjJdfDApKzUyPj4yXSY2M10oZixnKXwwfWVsc2V7Y1tkPj4yXT1uKzQ7Y1tuPj4yXT1nfWlmKChnfDApPT0tMSl7Y1tlPj4yXT0wfX1nPWFbaz4+MF18MDttPW0rNHwwfWNbYj4+Ml09Y1tlPj4yXTtpZihmKXtpPWo7cmV0dXJufWs9Y1trKzg+PjJdfDA7aWYoKGt8MCk9PTApe2k9ajtyZXR1cm59dm4oayk7aT1qO3JldHVybn1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBKaShiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7bT1pO2k9aSsxMjh8MDtsPW07cj1tKzEwOHwwO249bSs5NnwwO2Q9bSs5MnwwO2o9bSs4OHwwO289bSs4NHwwO2FbciswPj4wXT1hWzEyMjY0Pj4wXXwwO2FbcisxPj4wXT1hWzEyMjY1Pj4wXXwwO2FbcisyPj4wXT1hWzEyMjY2Pj4wXXwwO2FbciszPj4wXT1hWzEyMjY3Pj4wXXwwO2Fbcis0Pj4wXT1hWzEyMjY4Pj4wXXwwO2Fbcis1Pj4wXT1hWzEyMjY5Pj4wXXwwO3M9cisxfDA7cD1mKzR8MDtxPWNbcD4+Ml18MDtpZigocSYyMDQ4fDApIT0wKXthW3M+PjBdPTQzO3M9cisyfDB9aWYoKHEmNTEyfDApIT0wKXthW3M+PjBdPTM1O3M9cysxfDB9YVtzPj4wXT0xMDg7cz1zKzF8MDt0PXEmNzQ7ZG97aWYoKHR8MCk9PTgpe2lmKChxJjE2Mzg0fDApPT0wKXthW3M+PjBdPTEyMDticmVha31lbHNle2Fbcz4+MF09ODg7YnJlYWt9fWVsc2UgaWYoKHR8MCk9PTY0KXthW3M+PjBdPTExMX1lbHNle2Fbcz4+MF09MTAwfX13aGlsZSgwKTtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cT1jWzMzNDBdfDA7Y1tsPj4yXT1oO3E9d2kobiwxMixxLHIsbCl8MDtoPW4rcXwwO3A9Y1twPj4yXSYxNzY7ZG97aWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh0PWFbbisxPj4wXXwwLHQ8PDI0Pj4yND09ODh8dDw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtrPTIxfX1lbHNlIGlmKChwfDApPT0zMil7cD1ofWVsc2V7az0yMX19d2hpbGUoMCk7aWYoKGt8MCk9PTIxKXtwPW59az1jW2YrMjg+PjJdfDA7Y1tvPj4yXT1rO2s9ays0fDA7Y1trPj4yXT0oY1trPj4yXXwwKSsxO0tpKG4scCxoLGwsZCxqLG8pO2s9Y1tvPj4yXXwwO3M9ays0fDA7dD1jW3M+PjJdfDA7Y1tzPj4yXT10KyAtMTtpZigodHwwKSE9MCl7cj1jW2U+PjJdfDA7cz1jW2Q+PjJdfDA7dD1jW2o+PjJdfDA7TGkoYixyLGwscyx0LGYsZyk7aT1tO3JldHVybn1sY1tjWyhjW2s+PjJdfDApKzg+PjJdJjI1NV0oayk7cj1jW2U+PjJdfDA7cz1jW2Q+PjJdfDA7dD1jW2o+PjJdfDA7TGkoYixyLGwscyx0LGYsZyk7aT1tO3JldHVybn1mdW5jdGlvbiBLaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtrPWk7aT1pKzMyfDA7bz1rO2w9aysxMnwwO249Y1tqPj4yXXwwO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tvPj4yXT0xMzQ0ODtjW28rND4+Ml09MjA4O2Nbbys4Pj4yXT0wO2NnKDEzNDQ4LG8pfXM9KGNbMTM0NTI+PjJdfDApKyAtMXwwO3I9Y1tuKzg+PjJdfDA7aWYoISgoY1tuKzEyPj4yXXwwKS1yPj4yPj4+MD5zPj4+MCkpe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfW49Y1tyKyhzPDwyKT4+Ml18MDtpZigobnwwKT09MCl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9aj1jW2o+PjJdfDA7aWYoISgoY1szNDAyXXwwKT09LTEpKXtjW28+PjJdPTEzNjA4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM2MDgsbyl9bz0oY1sxMzYxMj4+Ml18MCkrIC0xfDA7cj1jW2orOD4+Ml18MDtpZighKChjW2orMTI+PjJdfDApLXI+PjI+Pj4wPm8+Pj4wKSl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9aj1jW3IrKG88PDIpPj4yXXwwO2lmKChqfDApPT0wKXt2PVhhKDQpfDA7Y1t2Pj4yXT0yMTMwNDt3Yih2fDAsMjEzNzYsMTk2KX1tY1tjWyhjW2o+PjJdfDApKzIwPj4yXSYxMjddKGwsaik7bz1hW2w+PjBdfDA7aWYoKG8mMSk9PTApe289KG8mMjU1KT4+PjF9ZWxzZXtvPWNbbCs0Pj4yXXwwfWlmKChvfDApIT0wKXtjW2g+PjJdPWY7bz1hW2I+PjBdfDA7aWYobzw8MjQ+PjI0PT00M3xvPDwyND4+MjQ9PTQ1KXt2PXhjW2NbKGNbbj4+Ml18MCkrNDQ+PjJdJjYzXShuLG8pfDA7bz1jW2g+PjJdfDA7Y1toPj4yXT1vKzQ7Y1tvPj4yXT12O289YisxfDB9ZWxzZXtvPWJ9aWYoKChlLW98MCk+MT8oYVtvPj4wXXwwKT09NDg6MCk/KHE9bysxfDAsdj1hW3E+PjBdfDAsdjw8MjQ+PjI0PT04OHx2PDwyND4+MjQ9PTEyMCk6MCl7dj14Y1tjWyhjW24+PjJdfDApKzQ0Pj4yXSY2M10obiw0OCl8MDt1PWNbaD4+Ml18MDtjW2g+PjJdPXUrNDtjW3U+PjJdPXY7dT14Y1tjWyhjW24+PjJdfDApKzQ0Pj4yXSY2M10obixhW3E+PjBdfDApfDA7dj1jW2g+PjJdfDA7Y1toPj4yXT12KzQ7Y1t2Pj4yXT11O289bysyfDB9aWYoKG98MCkhPShlfDApPyhwPWUrIC0xfDAscD4+PjA+bz4+PjApOjApe3E9bztkb3t2PWFbcT4+MF18MDthW3E+PjBdPWFbcD4+MF18MDthW3A+PjBdPXY7cT1xKzF8MDtwPXArIC0xfDB9d2hpbGUocT4+PjA8cD4+PjApfXE9b2NbY1soY1tqPj4yXXwwKSsxNj4+Ml0mMTI3XShqKXwwO2lmKG8+Pj4wPGU+Pj4wKXtwPWwrMXwwO3M9bCs0fDA7aj1sKzh8MDt1PTA7dD0wO3I9bzt3aGlsZSgxKXt2PWFbKChhW2w+PjBdJjEpPT0wP3A6Y1tqPj4yXXwwKSt0Pj4wXXwwO2lmKHY8PDI0Pj4yNCE9MCYodXwwKT09KHY8PDI0Pj4yNHwwKSl7dT1jW2g+PjJdfDA7Y1toPj4yXT11KzQ7Y1t1Pj4yXT1xO3U9YVtsPj4wXXwwO2lmKCh1JjEpPT0wKXt2PSh1JjI1NSk+Pj4xfWVsc2V7dj1jW3M+PjJdfDB9dT0wO3Q9KHQ+Pj4wPCh2KyAtMXwwKT4+PjAmMSkrdHwwfXg9eGNbY1soY1tuPj4yXXwwKSs0ND4+Ml0mNjNdKG4sYVtyPj4wXXwwKXwwO3c9Y1toPj4yXXwwO3Y9dys0fDA7Y1toPj4yXT12O2Nbdz4+Ml09eDtyPXIrMXwwO2lmKCEocj4+PjA8ZT4+PjApKXticmVha31lbHNle3U9dSsxfDB9fX1lbHNle3Y9Y1toPj4yXXwwfWg9Zisoby1iPDwyKXwwO2lmKChofDApIT0odnwwKT8obT12KyAtNHwwLG0+Pj4wPmg+Pj4wKTowKXtkb3t4PWNbaD4+Ml18MDtjW2g+PjJdPWNbbT4+Ml07Y1ttPj4yXT14O2g9aCs0fDA7bT1tKyAtNHwwfXdoaWxlKGg+Pj4wPG0+Pj4wKX19ZWxzZXt1Y1tjWyhjW24+PjJdfDApKzQ4Pj4yXSYzMV0obixiLGUsZil8MDt2PWYrKGUtYjw8Mil8MDtjW2g+PjJdPXZ9aWYoKGR8MCkhPShlfDApKXt2PWYrKGQtYjw8Mil8MH1jW2c+PjJdPXY7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59bD1jW2wrOD4+Ml18MDtpZigobHwwKT09MCl7aT1rO3JldHVybn12bihsKTtpPWs7cmV0dXJufWZ1bmN0aW9uIExpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7az1pO2k9aSsxNnwwO2w9aztpZigoZHwwKT09MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59cT1lO249Zy1xPj4yO2g9aCsxMnwwO209Y1toPj4yXXwwO249KG18MCk+KG58MCk/bS1ufDA6MDttPWY7cT1tLXF8MDtwPXE+PjI7aWYoKHF8MCk+MD8oaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsZSxwKXwwKSE9KHB8MCk6MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59ZG97aWYoKG58MCk+MCl7aWYobj4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihuPj4+MDwyKXthW2w+PjBdPW48PDE7ZT1sKzR8MDtvPTE4fWVsc2V7ZT1uKzQmLTQ7cD1lPDwyO3A9KHB8MCk9PTA/MTpwO3doaWxlKDEpe3E9dW4ocCl8MDtpZigocXwwKSE9MCl7bz0xNzticmVha31xPWNbNTY2Nl18MDtjWzU2NjZdPXErMDtpZigocXwwKT09MCl7YnJlYWt9c2NbcSYzMV0oKX1pZigob3wwKT09MTcpe2NbbCs4Pj4yXT1xO2NbbD4+Ml09ZXwxO2NbbCs0Pj4yXT1uO2lmKChufDApPT0wKXtlPXE7YnJlYWt9ZWxzZXtlPXE7bz0xODticmVha319cT1YYSg0KXwwO2NbcT4+Ml09MjI2ODA7d2IocXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChvfDApPT0xOCl7bz1uO3A9ZTt3aGlsZSgxKXtvPW8rIC0xfDA7Y1twPj4yXT1qO2lmKChvfDApPT0wKXticmVha31lbHNle3A9cCs0fDB9fX1jW2UrKG48PDIpPj4yXT0wO2lmKChhW2w+PjBdJjEpPT0wKXtqPWwrNHwwfWVsc2V7aj1jW2wrOD4+Ml18MH1pZigoaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsaixuKXwwKT09KG58MCkpe2lmKChhW2w+PjBdJjEpPT0wKXticmVha31sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXticmVha312bihsKTticmVha31jW2I+PjJdPTA7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59Yj1jW2wrOD4+Ml18MDtpZigoYnwwKT09MCl7aT1rO3JldHVybn12bihiKTtpPWs7cmV0dXJufX13aGlsZSgwKTtxPWctbXwwO2w9cT4+MjtpZigocXwwKT4wPyhoY1tjWyhjW2Q+PjJdfDApKzQ4Pj4yXSY2M10oZCxmLGwpfDApIT0obHwwKTowKXtjW2I+PjJdPTA7aT1rO3JldHVybn1jW2g+PjJdPTA7Y1tiPj4yXT1kO2k9aztyZXR1cm59ZnVuY3Rpb24gTWkoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7bT1pO2k9aSsyMDh8MDtsPW0rOHwwO3M9bTtvPW0rMTg0fDA7ZD1tKzE4MHwwO2s9bSsxNzZ8MDtwPW0rMTcyfDA7dT1zO2NbdT4+Ml09Mzc7Y1t1KzQ+PjJdPTA7dT1zKzF8MDtxPWYrNHwwO3I9Y1txPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2FbdT4+MF09NDM7dT1zKzJ8MH1pZigociY1MTJ8MCkhPTApe2FbdT4+MF09MzU7dT11KzF8MH10PXUrMnwwO2FbdT4+MF09MTA4O2FbdSsxPj4wXT0xMDg7dT1yJjc0O2Rve2lmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTEwMH19d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO3Q9bDtjW3Q+PjJdPWg7Y1t0KzQ+PjJdPWo7aD13aShvLDIyLHUscyxsKXwwO2o9bytofDA7cT1jW3E+PjJdJjE3Njtkb3tpZigocXwwKT09MzIpe3E9an1lbHNlIGlmKChxfDApPT0xNil7cT1hW28+PjBdfDA7aWYocTw8MjQ+PjI0PT00M3xxPDwyND4+MjQ9PTQ1KXtxPW8rMXwwO2JyZWFrfWlmKChofDApPjEmcTw8MjQ+PjI0PT00OD8odT1hW28rMT4+MF18MCx1PDwyND4+MjQ9PTg4fHU8PDI0Pj4yND09MTIwKTowKXtxPW8rMnwwfWVsc2V7bj0yMX19ZWxzZXtuPTIxfX13aGlsZSgwKTtpZigobnwwKT09MjEpe3E9b31uPWNbZisyOD4+Ml18MDtjW3A+PjJdPW47bj1uKzR8MDtjW24+PjJdPShjW24+PjJdfDApKzE7S2kobyxxLGosbCxkLGsscCk7bj1jW3A+PjJdfDA7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApIT0wKXtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWxjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKTtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWZ1bmN0aW9uIE5pKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtkPWk7aT1pKzEyOHwwO2w9ZDtxPWQrMTA4fDA7bj1kKzk2fDA7az1kKzkyfDA7bT1kKzg4fDA7bz1kKzg0fDA7YVtxKzA+PjBdPWFbMTIyNjQ+PjBdfDA7YVtxKzE+PjBdPWFbMTIyNjU+PjBdfDA7YVtxKzI+PjBdPWFbMTIyNjY+PjBdfDA7YVtxKzM+PjBdPWFbMTIyNjc+PjBdfDA7YVtxKzQ+PjBdPWFbMTIyNjg+PjBdfDA7YVtxKzU+PjBdPWFbMTIyNjk+PjBdfDA7cz1xKzF8MDtwPWYrNHwwO3I9Y1twPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2Fbcz4+MF09NDM7cz1xKzJ8MH1pZigociY1MTJ8MCkhPTApe2Fbcz4+MF09MzU7cz1zKzF8MH1hW3M+PjBdPTEwODt0PXMrMXwwO3M9ciY3NDtkb3tpZigoc3wwKT09NjQpe2FbdD4+MF09MTExfWVsc2UgaWYoKHN8MCk9PTgpe2lmKChyJjE2Mzg0fDApPT0wKXthW3Q+PjBdPTEyMDticmVha31lbHNle2FbdD4+MF09ODg7YnJlYWt9fWVsc2V7YVt0Pj4wXT0xMTd9fXdoaWxlKDApO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX10PWNbMzM0MF18MDtjW2w+PjJdPWg7cT13aShuLDEyLHQscSxsKXwwO2g9bitxfDA7cD1jW3A+PjJdJjE3Njtkb3tpZigocHwwKT09MzIpe3A9aH1lbHNlIGlmKChwfDApPT0xNil7cD1hW24+PjBdfDA7aWYocDw8MjQ+PjI0PT00M3xwPDwyND4+MjQ9PTQ1KXtwPW4rMXwwO2JyZWFrfWlmKChxfDApPjEmcDw8MjQ+PjI0PT00OD8odD1hW24rMT4+MF18MCx0PDwyND4+MjQ9PTg4fHQ8PDI0Pj4yND09MTIwKTowKXtwPW4rMnwwfWVsc2V7aj0yMX19ZWxzZXtqPTIxfX13aGlsZSgwKTtpZigoanwwKT09MjEpe3A9bn1qPWNbZisyOD4+Ml18MDtjW28+PjJdPWo7aj1qKzR8MDtjW2o+PjJdPShjW2o+PjJdfDApKzE7S2kobixwLGgsbCxrLG0sbyk7aj1jW28+PjJdfDA7cz1qKzR8MDt0PWNbcz4+Ml18MDtjW3M+PjJdPXQrIC0xO2lmKCh0fDApIT0wKXtyPWNbZT4+Ml18MDtzPWNbaz4+Ml18MDt0PWNbbT4+Ml18MDtMaShiLHIsbCxzLHQsZixnKTtpPWQ7cmV0dXJufWxjW2NbKGNbaj4+Ml18MCkrOD4+Ml0mMjU1XShqKTtyPWNbZT4+Ml18MDtzPWNbaz4+Ml18MDt0PWNbbT4+Ml18MDtMaShiLHIsbCxzLHQsZixnKTtpPWQ7cmV0dXJufQoKCgpmdW5jdGlvbiBYayhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtkPWk7aT1pKzE2fDA7ZT1kO2lmKChhWzEzNDMyXXwwKSE9MCl7aD1jWzMzNTZdfDA7Y1tiPj4yXT1oO2g9aCs0fDA7Zz1jW2g+PjJdfDA7Y1toPj4yXT1nKzE7aT1kO3JldHVybn1pZigoUWEoMTM0MzIpfDApPT0wKXtoPWNbMzM1Nl18MDtjW2I+PjJdPWg7aD1oKzR8MDtnPWNbaD4+Ml18MDtjW2g+PjJdPWcrMTtpPWQ7cmV0dXJufWlmKChhWzEzNDE2XXwwKT09MD8oUWEoMTM0MTYpfDApIT0wOjApe2NbMTc3NjQ+PjJdPTA7Y1s0NDQwXT0xMzM5MjthWzE3ODk2Pj4wXT0xO2NbMTc3NzI+PjJdPTE3Nzg0O2NbMTc3Njg+PjJdPTE3Nzg0O2NbMTc3NzY+PjJdPTE3ODk2O2g9Mjg7Zj0xNzc4NHwwO2Rve2NbZj4+Ml09MDtnPWNbMTc3NzI+PjJdfDA7Zj1nKzR8MDtjWzE3NzcyPj4yXT1mO2g9aCsgLTF8MH13aGlsZSgoaHwwKSE9MCk7YVsxNzkwND4+MF09MjthWzE3OTA1Pj4wXT02NzthWzE3OTA2Pj4wXT0wO2g9Y1sxNzc2OD4+Ml18MDtpZigoZnwwKSE9KGh8MCkpe2NbMTc3NzI+PjJdPWcrKDAtKChnKygwLWgpfDApPj4+Mik8PDIpfWNbMTgyMjg+PjJdPTA7Y1s0NTU2XT0xMTg3MjtpZighKChjWzI5NzRdfDApPT0tMSkpe2NbZT4+Ml09MTE4OTY7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMTg5NixlKX1VaygxNzc2MCwxODIyNCwoY1sxMTkwMD4+Ml18MCkrIC0xfDApO2NbMTgyMjA+PjJdPTA7Y1s0NTU0XT0xMTkxMjtpZighKChjWzI5ODRdfDApPT0tMSkpe2NbZT4+Ml09MTE5MzY7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMTkzNixlKX1VaygxNzc2MCwxODIxNiwoY1sxMTk0MD4+Ml18MCkrIC0xfDApO2NbMTgyMDQ+PjJdPTA7Y1s0NTUwXT0xMzQ3MjtjWzE4MjA4Pj4yXT0wO2FbMTgyMTI+PjBdPTA7Y1sxODIwOD4+Ml09Y1soTmEoKXwwKT4+Ml07aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2U+PjJdPTEzNDU2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM0NTYsZSl9VWsoMTc3NjAsMTgyMDAsKGNbMTM0NjA+PjJdfDApKyAtMXwwKTtjWzE4MTk2Pj4yXT0wO2NbNDU0OF09MTQzOTI7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW2U+PjJdPTEzNDQ4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM0NDgsZSl9VWsoMTc3NjAsMTgxOTIsKGNbMTM0NTI+PjJdfDApKyAtMXwwKTtjWzE4MTg4Pj4yXT0wO2NbNDU0Nl09MTQ2MDg7aWYoISgoY1szMzgwXXwwKT09LTEpKXtjW2U+PjJdPTEzNTIwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1MjAsZSl9VWsoMTc3NjAsMTgxODQsKGNbMTM1MjQ+PjJdfDApKyAtMXwwKTtjWzE4MTcyPj4yXT0wO2NbNDU0Ml09MTM1NDQ7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbMTgxNzY+PjJdPWNbMzM0MF07aWYoISgoY1szMzgyXXwwKT09LTEpKXtjW2U+PjJdPTEzNTI4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1MjgsZSl9VWsoMTc3NjAsMTgxNjgsKGNbMTM1MzI+PjJdfDApKyAtMXwwKTtjWzE4MTY0Pj4yXT0wO2NbNDU0MF09MTQ4MzI7aWYoISgoY1szMzk2XXwwKT09LTEpKXtjW2U+PjJdPTEzNTg0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1ODQsZSl9VWsoMTc3NjAsMTgxNjAsKGNbMTM1ODg+PjJdfDApKyAtMXwwKTtjWzE4MTU2Pj4yXT0wO2NbNDUzOF09MTQ5NTI7aWYoISgoY1szMzk4XXwwKT09LTEpKXtjW2U+PjJdPTEzNTkyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1OTIsZSl9VWsoMTc3NjAsMTgxNTIsKGNbMTM1OTY+PjJdfDApKyAtMXwwKTtjWzE4MTMyPj4yXT0wO2NbNDUzMl09MTM2MjQ7YVsxODEzNj4+MF09NDY7YVsxODEzNz4+MF09NDQ7Y1sxODE0MD4+Ml09MDtjWzE4MTQ0Pj4yXT0wO2NbMTgxNDg+PjJdPTA7aWYoISgoY1szNDAwXXwwKT09LTEpKXtjW2U+PjJdPTEzNjAwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM2MDAsZSl9VWsoMTc3NjAsMTgxMjgsKGNbMTM2MDQ+PjJdfDApKyAtMXwwKTtjWzE4MTAwPj4yXT0wO2NbNDUyNF09MTM2NjQ7Y1sxODEwND4+Ml09NDY7Y1sxODEwOD4+Ml09NDQ7Y1sxODExMj4+Ml09MDtjWzE4MTE2Pj4yXT0wO2NbMTgxMjA+PjJdPTA7aWYoISgoY1szNDAyXXwwKT09LTEpKXtjW2U+PjJdPTEzNjA4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM2MDgsZSl9VWsoMTc3NjAsMTgwOTYsKGNbMTM2MTI+PjJdfDApKyAtMXwwKTtjWzE4MDkyPj4yXT0wO2NbNDUyMl09MTE5NTI7aWYoISgoY1szMDAyXXwwKT09LTEpKXtjW2U+PjJdPTEyMDA4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIwMDgsZSl9VWsoMTc3NjAsMTgwODgsKGNbMTIwMTI+PjJdfDApKyAtMXwwKTtjWzE4MDg0Pj4yXT0wO2NbNDUyMF09MTIwNzI7aWYoISgoY1szMDMyXXwwKT09LTEpKXtjW2U+PjJdPTEyMTI4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIxMjgsZSl9VWsoMTc3NjAsMTgwODAsKGNbMTIxMzI+PjJdfDApKyAtMXwwKTtjWzE4MDc2Pj4yXT0wO2NbNDUxOF09MTIxNDQ7aWYoISgoY1szMDQ4XXwwKT09LTEpKXtjW2U+PjJdPTEyMTkyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIxOTIsZSl9VWsoMTc3NjAsMTgwNzIsKGNbMTIxOTY+PjJdfDApKyAtMXwwKTtjWzE4MDY4Pj4yXT0wO2NbNDUxNl09MTIyMDg7aWYoISgoY1szMDY0XXwwKT09LTEpKXtjW2U+PjJdPTEyMjU2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIyNTYsZSl9VWsoMTc3NjAsMTgwNjQsKGNbMTIyNjA+PjJdfDApKyAtMXwwKTtjWzE4MDYwPj4yXT0wO2NbNDUxNF09MTI4MDA7aWYoISgoY1szMjEyXXwwKT09LTEpKXtjW2U+PjJdPTEyODQ4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI4NDgsZSl9VWsoMTc3NjAsMTgwNTYsKGNbMTI4NTI+PjJdfDApKyAtMXwwKTtjWzE4MDUyPj4yXT0wO2NbNDUxMl09MTI4NjQ7aWYoISgoY1szMjI4XXwwKT09LTEpKXtjW2U+PjJdPTEyOTEyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI5MTIsZSl9VWsoMTc3NjAsMTgwNDgsKGNbMTI5MTY+PjJdfDApKyAtMXwwKTtjWzE4MDQ0Pj4yXT0wO2NbNDUxMF09MTI5Mjg7aWYoISgoY1szMjQ0XXwwKT09LTEpKXtjW2U+PjJdPTEyOTc2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI5NzYsZSl9VWsoMTc3NjAsMTgwNDAsKGNbMTI5ODA+PjJdfDApKyAtMXwwKTtjWzE4MDM2Pj4yXT0wO2NbNDUwOF09MTI5OTI7aWYoISgoY1szMjYwXXwwKT09LTEpKXtjW2U+PjJdPTEzMDQwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMwNDAsZSl9VWsoMTc3NjAsMTgwMzIsKGNbMTMwNDQ+PjJdfDApKyAtMXwwKTtjWzE4MDI4Pj4yXT0wO2NbNDUwNl09MTMwNTY7aWYoISgoY1szMjcwXXwwKT09LTEpKXtjW2U+PjJdPTEzMDgwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMwODAsZSl9VWsoMTc3NjAsMTgwMjQsKGNbMTMwODQ+PjJdfDApKyAtMXwwKTtjWzE4MDIwPj4yXT0wO2NbNDUwNF09MTMxMzY7aWYoISgoY1szMjkwXXwwKT09LTEpKXtjW2U+PjJdPTEzMTYwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMxNjAsZSl9VWsoMTc3NjAsMTgwMTYsKGNbMTMxNjQ+PjJdfDApKyAtMXwwKTtjWzE4MDEyPj4yXT0wO2NbNDUwMl09MTMxOTI7aWYoISgoY1szMzA0XXwwKT09LTEpKXtjW2U+PjJdPTEzMjE2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMyMTYsZSl9VWsoMTc3NjAsMTgwMDgsKGNbMTMyMjA+PjJdfDApKyAtMXwwKTtjWzE4MDA0Pj4yXT0wO2NbNDUwMF09MTMyNDA7aWYoISgoY1szMzE2XXwwKT09LTEpKXtjW2U+PjJdPTEzMjY0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMyNjQsZSl9VWsoMTc3NjAsMThlMywoY1sxMzI2OD4+Ml18MCkrIC0xfDApO2NbMTc5ODg+PjJdPTA7Y1s0NDk2XT0xMjI4ODtjWzE3OTkyPj4yXT0xMjMzNjtpZighKChjWzMwOTJdfDApPT0tMSkpe2NbZT4+Ml09MTIzNjg7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMjM2OCxlKX1VaygxNzc2MCwxNzk4NCwoY1sxMjM3Mj4+Ml18MCkrIC0xfDApO2NbMTc5NzI+PjJdPTA7Y1s0NDkyXT0xMjQ0MDtjWzE3OTc2Pj4yXT0xMjQ4ODtpZighKChjWzMxMzBdfDApPT0tMSkpe2NbZT4+Ml09MTI1MjA7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMjUyMCxlKX1VaygxNzc2MCwxNzk2OCwoY1sxMjUyND4+Ml18MCkrIC0xfDApO2NbMTc5NTY+PjJdPTA7Y1s0NDg4XT0xNDMyODtkb3tpZigoYVsxMzM2OF18MCk9PTApe2lmKChRYSgxMzM2OCl8MCk9PTApe2JyZWFrfWNbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX19d2hpbGUoMCk7Y1sxNzk2MD4+Ml09Y1szMzQwXTtjWzQ0ODhdPTEyNzM2O2lmKCEoKGNbMzE4OF18MCk9PS0xKSl7Y1tlPj4yXT0xMjc1MjtjW2UrND4+Ml09MjA4O2NbZSs4Pj4yXT0wO2NnKDEyNzUyLGUpfVVrKDE3NzYwLDE3OTUyLChjWzEyNzU2Pj4yXXwwKSsgLTF8MCk7Y1sxNzk0MD4+Ml09MDtjWzQ0ODRdPTE0MzI4O2Rve2lmKChhWzEzMzY4XXwwKT09MCl7aWYoKFFhKDEzMzY4KXwwKT09MCl7YnJlYWt9Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfX13aGlsZSgwKTtjWzE3OTQ0Pj4yXT1jWzMzNDBdO2NbNDQ4NF09MTI3Njg7aWYoISgoY1szMTk2XXwwKT09LTEpKXtjW2U+PjJdPTEyNzg0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI3ODQsZSl9VWsoMTc3NjAsMTc5MzYsKGNbMTI3ODg+PjJdfDApKyAtMXwwKTtjWzE3OTMyPj4yXT0wO2NbNDQ4Ml09MTMyODA7aWYoISgoY1szMzI2XXwwKT09LTEpKXtjW2U+PjJdPTEzMzA0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMzMDQsZSl9VWsoMTc3NjAsMTc5MjgsKGNbMTMzMDg+PjJdfDApKyAtMXwwKTtjWzE3OTI0Pj4yXT0wO2NbNDQ4MF09MTMzMjA7aWYoISgoY1szMzM2XXwwKT09LTEpKXtjW2U+PjJdPTEzMzQ0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMzNDQsZSl9VWsoMTc3NjAsMTc5MjAsKGNbMTMzNDg+PjJdfDApKyAtMXwwKTtjWzMzNTJdPTE3NzYwOyRhKDEzNDE2KX1oPWNbMzM1Ml18MDtjWzMzNTZdPWg7aD1oKzR8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7JGEoMTM0MzIpO2g9Y1szMzU2XXwwO2NbYj4+Ml09aDtoPWgrNHwwO2c9Y1toPj4yXXwwO2NbaD4+Ml09ZysxO2k9ZDtyZXR1cm59ZnVuY3Rpb24gWWsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2lmKCEoKGNbYj4+Ml18MCk9PS0xKSl7Y1tlPj4yXT1iO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coYixlKX1lPShjW2IrND4+Ml18MCkrIC0xfDA7Yj1jW2ErOD4+Ml18MDtpZighKChjW2ErMTI+PjJdfDApLWI+PjI+Pj4wPmU+Pj4wKSl7ZT1YYSg0KXwwO2NbZT4+Ml09MjEzMDQ7d2IoZXwwLDIxMzc2LDE5Nil9YT1jW2IrKGU8PDIpPj4yXXwwO2lmKChhfDApPT0wKXtlPVhhKDQpfDA7Y1tlPj4yXT0yMTMwNDt3YihlfDAsMjEzNzYsMTk2KX1lbHNle2k9ZDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIFprKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIF9rKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrND4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uICRrKGEpe2E9YXwwO3ZhciBiPTA7Yj1jWzMzNjBdfDA7Y1szMzYwXT1iKzE7Y1thKzQ+PjJdPWIrMTtyZXR1cm59ZnVuY3Rpb24gYWwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gYmwoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO2E9aTtpZighKGU+Pj4wPDEyOCkpe2Q9MDtpPWE7cmV0dXJuIGR8MH1kPShiWyhjWyhOYSgpfDApPj4yXXwwKSsoZTw8MSk+PjFdJmQpPDwxNj4+MTYhPTA7aT1hO3JldHVybiBkfDB9ZnVuY3Rpb24gY2woYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7aWYoKGR8MCk9PShlfDApKXtnPWQ7aT1hO3JldHVybiBnfDB9d2hpbGUoMSl7Zz1jW2Q+PjJdfDA7aWYoZz4+PjA8MTI4KXtnPWJbKGNbKE5hKCl8MCk+PjJdfDApKyhnPDwxKT4+MV18MH1lbHNle2c9MH1iW2Y+PjFdPWc7ZD1kKzR8MDtpZigoZHwwKT09KGV8MCkpe2JyZWFrfWVsc2V7Zj1mKzJ8MH19aT1hO3JldHVybiBlfDB9ZnVuY3Rpb24gZGwoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2Y9ZX1lbHNle2Rve2c9Y1tlPj4yXXwwO2lmKGc+Pj4wPDEyOD8hKChiWyhjWyhOYSgpfDApPj4yXXwwKSsoZzw8MSk+PjFdJmQpPDwxNj4+MTY9PTApOjApe2Y9ZTticmVhayBhfWU9ZSs0fDB9d2hpbGUoKGV8MCkhPShmfDApKX19d2hpbGUoMCk7aT1hO3JldHVybiBmfDB9ZnVuY3Rpb24gZWwoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2Y9ZX1lbHNle2Rve2c9Y1tlPj4yXXwwO2lmKCEoZz4+PjA8MTI4KSl7Zj1lO2JyZWFrIGF9aWYoKGJbKGNbKE5hKCl8MCk+PjJdfDApKyhnPDwxKT4+MV0mZCk8PDE2Pj4xNj09MCl7Zj1lO2JyZWFrIGF9ZT1lKzR8MH13aGlsZSgoZXwwKSE9KGZ8MCkpfX13aGlsZSgwKTtpPWE7cmV0dXJuIGZ8MH1mdW5jdGlvbiBmbChhLGIpe2E9YXwwO2I9YnwwO2E9aTtpZighKGI+Pj4wPDEyOCkpe2k9YTtyZXR1cm4gYnwwfWI9Y1soY1soWmEoKXwwKT4+Ml18MCkrKGI8PDIpPj4yXXwwO2k9YTtyZXR1cm4gYnwwfWZ1bmN0aW9uIGdsKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wO2E9aTtpZigoYnwwKT09KGR8MCkpe2U9YjtpPWE7cmV0dXJuIGV8MH1kb3tlPWNbYj4+Ml18MDtpZihlPj4+MDwxMjgpe2U9Y1soY1soWmEoKXwwKT4+Ml18MCkrKGU8PDIpPj4yXXwwfWNbYj4+Ml09ZTtiPWIrNHwwfXdoaWxlKChifDApIT0oZHwwKSk7aT1hO3JldHVybiBkfDB9ZnVuY3Rpb24gaGwoYSxiKXthPWF8MDtiPWJ8MDthPWk7aWYoIShiPj4+MDwxMjgpKXtpPWE7cmV0dXJuIGJ8MH1iPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhiPDwyKT4+Ml18MDtpPWE7cmV0dXJuIGJ8MH1mdW5jdGlvbiBpbChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MDthPWk7aWYoKGJ8MCk9PShkfDApKXtlPWI7aT1hO3JldHVybiBlfDB9ZG97ZT1jW2I+PjJdfDA7aWYoZT4+PjA8MTI4KXtlPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhlPDwyKT4+Ml18MH1jW2I+PjJdPWU7Yj1iKzR8MH13aGlsZSgoYnwwKSE9KGR8MCkpO2k9YTtyZXR1cm4gZHwwfWZ1bmN0aW9uIGpsKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGI8PDI0Pj4yNHwwfWZ1bmN0aW9uIGtsKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2I9aTtpZigoZHwwKT09KGV8MCkpe2k9YjtyZXR1cm4gZHwwfXdoaWxlKDEpe2NbZj4+Ml09YVtkPj4wXXwwO2Q9ZCsxfDA7aWYoKGR8MCk9PShlfDApKXticmVha31lbHNle2Y9Zis0fDB9fWk9YjtyZXR1cm4gZXwwfWZ1bmN0aW9uIGxsKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4oYj4+PjA8MTI4P2ImMjU1OmMpfDB9ZnVuY3Rpb24gbWwoYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7aj1kO2k9YjtyZXR1cm4ganwwfWg9KChlKyAtNCsoMC1kKXwwKT4+PjIpKzF8MDtqPWQ7d2hpbGUoMSl7az1jW2o+PjJdfDA7YVtnPj4wXT1rPj4+MDwxMjg/ayYyNTU6ZjtqPWorNHwwO2lmKChqfDApPT0oZXwwKSl7YnJlYWt9ZWxzZXtnPWcrMXwwfX1rPWQrKGg8PDIpfDA7aT1iO3JldHVybiBrfDB9ZnVuY3Rpb24gbmwoYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM0NzI7ZT1jW2IrOD4+Ml18MDtpZigoZXwwKSE9MCl7aWYoKGFbYisxMj4+MF18MCkhPTApe3ZuKGUpfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufX12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIG9sKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNDcyO2U9Y1tiKzg+PjJdfDA7aWYoKGV8MCkhPTA/KGFbYisxMj4+MF18MCkhPTA6MCl7dm4oZSl9aT1kO3JldHVybn1mdW5jdGlvbiBwbChhLGIpe2E9YXwwO2I9YnwwO2E9aTtpZighKGI8PDI0Pj4yND4tMSkpe2k9YTtyZXR1cm4gYnwwfWI9Y1soY1soWmEoKXwwKT4+Ml18MCkrKChiJjI1NSk8PDIpPj4yXSYyNTU7aT1hO3JldHVybiBifDB9ZnVuY3Rpb24gcWwoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7Zj1kO2k9YjtyZXR1cm4gZnwwfWRve2Y9YVtkPj4wXXwwO2lmKGY8PDI0Pj4yND4tMSl7Zj1jWyhjWyhaYSgpfDApPj4yXXwwKSsoZjw8MjQ+PjI0PDwyKT4+Ml0mMjU1fWFbZD4+MF09ZjtkPWQrMXwwfXdoaWxlKChkfDApIT0oZXwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gcmwoYSxiKXthPWF8MDtiPWJ8MDthPWk7aWYoIShiPDwyND4+MjQ+LTEpKXtpPWE7cmV0dXJuIGJ8MH1iPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhiPDwyND4+MjQ8PDIpPj4yXSYyNTU7aT1hO3JldHVybiBifDB9ZnVuY3Rpb24gc2woYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7Zj1kO2k9YjtyZXR1cm4gZnwwfWRve2Y9YVtkPj4wXXwwO2lmKGY8PDI0Pj4yND4tMSl7Zj1jWyhjWyhIYSgpfDApPj4yXXwwKSsoZjw8MjQ+PjI0PDwyKT4+Ml0mMjU1fWFbZD4+MF09ZjtkPWQrMXwwfXdoaWxlKChkfDApIT0oZXwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gdGwoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gYnwwfWZ1bmN0aW9uIHVsKGIsYyxkLGUpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2I9aTtpZigoY3wwKT09KGR8MCkpe2Q9Y31lbHNle3doaWxlKDEpe2FbZT4+MF09YVtjPj4wXXwwO2M9YysxfDA7aWYoKGN8MCk9PShkfDApKXticmVha31lbHNle2U9ZSsxfDB9fX1pPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB2bChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuKGI8PDI0Pj4yND4tMT9iOmMpfDB9ZnVuY3Rpb24gd2woYixjLGQsZSxmKXtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wO2I9aTtpZigoY3wwKT09KGR8MCkpe2k9YjtyZXR1cm4gY3wwfXdoaWxlKDEpe2c9YVtjPj4wXXwwO2FbZj4+MF09Zzw8MjQ+PjI0Pi0xP2c6ZTtjPWMrMXwwO2lmKChjfDApPT0oZHwwKSl7YnJlYWt9ZWxzZXtmPWYrMXwwfX1pPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB4bChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiB5bChhLGIsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2NbZj4+Ml09ZDtjW2k+PjJdPWc7cmV0dXJuIDN9ZnVuY3Rpb24gemwoYSxiLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtjW2Y+PjJdPWQ7Y1tpPj4yXT1nO3JldHVybiAzfWZ1bmN0aW9uIEFsKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Y1tmPj4yXT1kO3JldHVybiAzfWZ1bmN0aW9uIEJsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIENsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIERsKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Yj1kLWN8MDtyZXR1cm4oYj4+PjA8ZT4+PjA/YjplKXwwfWZ1bmN0aW9uIEVsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIEZsKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1NrKGEpO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEdsKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7ZD1pO2k9aSsyNzJ8MDtsPWQrMjY0fDA7bj1kKzh8MDtvPWQ7YTpkb3tpZigoZXwwKSE9KGZ8MCkpe3E9ZTt3aGlsZSgxKXtpZigoY1txPj4yXXwwKT09MCl7YnJlYWt9cT1xKzR8MDtpZigocXwwKT09KGZ8MCkpe3E9ZjticmVha319Y1trPj4yXT1oO2NbZz4+Ml09ZTtpZigoaHwwKSE9KGp8MCkpe3A9ajtiPWIrOHwwO3doaWxlKDEpe3c9cS1lPj4yO3M9aWIoY1tiPj4yXXwwKXwwO3k9Y1tnPj4yXXwwO3I9KGh8MCkhPTA7dj1yP3AtaHwwOjI1Njt1PXI/aDpuO2I6ZG97aWYoKHl8MCk9PTB8KHZ8MCk9PTApe3Q9MH1lbHNle3Q9MDtkb3t4PXc+Pj4wPj12Pj4+MDtpZighKHh8dz4+PjA+MzIpKXticmVhayBifXg9eD92Onc7dz13LXh8MDtjOmRve2lmKCh1fDApPT0wKXtBPWNbeT4+Ml18MDtpZigoQXwwKT09MCl7ej0wfWVsc2V7ej0wO3g9eTt3aGlsZSgxKXtpZihBPj4+MD4xMjcpe0E9V20obCxBKXwwO2lmKChBfDApPT0tMSl7dj0wO3Q9LTE7YnJlYWsgYn19ZWxzZXtBPTF9ej1BK3p8MDt4PXgrNHwwO0E9Y1t4Pj4yXXwwO2lmKChBfDApPT0wKXttPTMyO2JyZWFrfX19fWVsc2V7ZDpkb3tpZih4Pj4+MD4zKXt6PXU7QT14O3doaWxlKDEpe0I9Y1t5Pj4yXXwwO2lmKChCfDApPT0wKXttPTIyO2JyZWFrIGR9aWYoQj4+PjA+MTI3KXtCPVdtKHosQil8MDtpZigoQnwwKT09LTEpe3Y9MDt0PS0xO2JyZWFrIGJ9ej16K0J8MDtBPUEtQnwwfWVsc2V7YVt6Pj4wXT1CO3o9eisxfDA7QT1BKyAtMXwwfXk9eSs0fDA7aWYoIShBPj4+MD4zKSl7bT0xNjticmVha319fWVsc2V7ej11O0E9eDttPTE2fX13aGlsZSgwKTtpZigobXwwKT09MTYpe209MDtpZigoQXwwKT09MCl7QT0wfWVsc2V7bT0yMn19ZTpkb3tpZigobXwwKT09MjIpe3doaWxlKDEpe209MDtCPWNbeT4+Ml18MDtpZigoQnwwKT09MCl7bT0zMDticmVha31pZihCPj4+MD4xMjcpe0I9V20obCxCKXwwO2lmKChCfDApPT0tMSl7dj0wO3Q9LTE7YnJlYWsgYn1pZihCPj4+MD5BPj4+MCl7bT0yNjticmVha31XbSh6LGNbeT4+Ml18MCl8MDt6PXorQnwwO0E9QS1CfDB9ZWxzZXthW3o+PjBdPUI7ej16KzF8MDtBPUErIC0xfDB9aWYoKEF8MCk9PTApe0E9MDticmVhayBlfWVsc2V7eT15KzR8MDttPTIyfX1pZigobXwwKT09MjYpe3o9eC1BfDA7bT0zMjticmVhayBjfWVsc2UgaWYoKG18MCk9PTMwKXthW3o+PjBdPTA7YnJlYWt9fX13aGlsZSgwKTt6PXgtQXwwO3k9MDttPTMyfX13aGlsZSgwKTtpZigobXwwKT09MzIpe209MDtpZigoenwwKT09LTEpe3Y9MDt0PS0xO2JyZWFrIGJ9fWlmKCh1fDApPT0obnwwKSl7dT1ufWVsc2V7dj12LXp8MDt1PXUrenwwfXQ9eit0fDB9d2hpbGUoISgoeXwwKT09MHwodnwwKT09MCkpfX13aGlsZSgwKTtmOmRve2lmKCh5fDApIT0wPyEoKHZ8MCk9PTB8KHd8MCk9PTApOjApe3doaWxlKDEpe3g9V20odSxjW3k+PjJdfDApfDA7aWYoKHgrMXwwKT4+PjA8Mil7YnJlYWt9eT15KzR8MDt3PXcrIC0xfDA7dD10KzF8MDtpZigodnwwKT09KHh8MCl8KHd8MCk9PTApe2JyZWFrIGZ9ZWxzZXt2PXYteHwwO3U9dSt4fDB9fUI9KHh8MCk9PTA7dD1CP3Q6LTE7eT1CPzA6eX19d2hpbGUoMCk7aWYocil7Y1tnPj4yXT15fWlmKChzfDApIT0wKXtpYihzfDApfDB9aWYoKHR8MCk9PTApe2c9MTttPTY3O2JyZWFrfWVsc2UgaWYoKHR8MCk9PS0xKXttPTQ2O2JyZWFrfWg9KGNbaz4+Ml18MCkrdHwwO2Nbaz4+Ml09aDtpZigoaHwwKT09KGp8MCkpe209NjU7YnJlYWt9aWYoKHF8MCk9PShmfDApKXtlPWNbZz4+Ml18MDtxPWZ9ZWxzZXtlPWliKGNbYj4+Ml18MCl8MDthW28+PjBdPTA7aWYoKGV8MCkhPTApe2liKGV8MCl8MH1oPWNbaz4+Ml18MDtpZigoaHwwKT09KGp8MCkpe2c9MTttPTY3O2JyZWFrfWVsc2V7ZT0wO3E9MDtyPW99d2hpbGUoMSl7Y1trPj4yXT1oKzE7YVtoPj4wXT1lO2lmKChxfDApPT0wKXticmVha31CPXIrMXwwO2g9Y1trPj4yXXwwO2U9YVtCPj4wXXwwO3E9cSsgLTF8MDtyPUJ9ZT0oY1tnPj4yXXwwKSs0fDA7Y1tnPj4yXT1lO2c6ZG97aWYoKGV8MCk9PShmfDApKXtxPWZ9ZWxzZXtxPWU7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk9PTApe2JyZWFrIGd9cT1xKzR8MDtpZigocXwwKT09KGZ8MCkpe3E9ZjticmVha319fX13aGlsZSgwKTtoPWNbaz4+Ml18MH1pZigoZXwwKT09KGZ8MCl8KGh8MCk9PShqfDApKXticmVhayBhfX1pZigobXwwKT09NDYpe2Nbaz4+Ml09aDtoOmRve2lmKChlfDApIT0oY1tnPj4yXXwwKSl7ZG97aj1jW2U+PjJdfDA7Zj1pYihjW2I+PjJdfDApfDA7aj1XbShoLGopfDA7aWYoKGZ8MCkhPTApe2liKGZ8MCl8MH1pZigoanwwKT09LTEpe2JyZWFrIGh9aD0oY1trPj4yXXwwKStqfDA7Y1trPj4yXT1oO2U9ZSs0fDB9d2hpbGUoKGV8MCkhPShjW2c+PjJdfDApKX19d2hpbGUoMCk7Y1tnPj4yXT1lO0I9MjtpPWQ7cmV0dXJuIEJ8MH1lbHNlIGlmKChtfDApPT02NSl7ZT1jW2c+PjJdfDA7YnJlYWt9ZWxzZSBpZigobXwwKT09Njcpe2k9ZDtyZXR1cm4gZ3wwfX19ZWxzZXtjW2s+PjJdPWg7Y1tnPj4yXT1lfX13aGlsZSgwKTtCPShlfDApIT0oZnwwKSYxO2k9ZDtyZXR1cm4gQnwwfWZ1bmN0aW9uIEhsKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDtsPWk7aT1pKzEwNDB8MDtuPWwrMTZ8MDtvPWwrOHwwO209bDthOmRve2lmKChlfDApIT0oZnwwKSl7cj1lO3doaWxlKDEpe2lmKChhW3I+PjBdfDApPT0wKXticmVha31yPXIrMXwwO2lmKChyfDApPT0oZnwwKSl7cj1mO2JyZWFrfX1jW2s+PjJdPWg7Y1tnPj4yXT1lO2lmKChofDApIT0oanwwKSl7cD1qO2I9Yis4fDA7d2hpbGUoMSl7dD1kO3U9Y1t0KzQ+PjJdfDA7cT1tO2NbcT4+Ml09Y1t0Pj4yXTtjW3ErND4+Ml09dTtxPXI7dT1xLWV8MDt0PWliKGNbYj4+Ml18MCl8MDt5PWNbZz4+Ml18MDtjW28+PjJdPXk7cz0oaHwwKSE9MDt3PXM/cC1oPj4yOjI1Njt4PXM/aDpuO2I6ZG97aWYoKHl8MCk9PTB8KHd8MCk9PTApe3Y9MH1lbHNle3Y9MDt3aGlsZSgxKXt6PXU+Pj4yO0E9ej4+PjA+PXc+Pj4wO2lmKCEoQXx1Pj4+MD4xMzEpKXticmVhayBifXk9QT93Ono7dT11LXl8MDt5PVZtKHgsbyx5LGQpfDA7aWYoKHl8MCk9PS0xKXticmVha31pZigoeHwwKT09KG58MCkpe3g9bn1lbHNle3c9dy15fDA7eD14Kyh5PDwyKXwwfXY9eSt2fDA7eT1jW28+PjJdfDA7aWYoKHl8MCk9PTB8KHd8MCk9PTApe2JyZWFrIGJ9fXc9MDt5PWNbbz4+Ml18MDt2PS0xfX13aGlsZSgwKTtjOmRve2lmKCh5fDApIT0wKXtpZighKCh3fDApPT0wfCh1fDApPT0wKSl7d2hpbGUoMSl7ej1VbSh4LHksdSxkKXwwO2lmKCh6KzJ8MCk+Pj4wPDMpe2JyZWFrfXk9eSt6fDA7Y1tvPj4yXT15O3c9dysgLTF8MDt2PXYrMXwwO2lmKCh3fDApPT0wfCh1fDApPT0oenwwKSl7YnJlYWsgY31lbHNle3U9dS16fDA7eD14KzR8MH19aWYoKHp8MCk9PS0xKXt2PS0xO2JyZWFrfWVsc2UgaWYoKHp8MCk9PTApe2Nbbz4+Ml09MDt5PTA7YnJlYWt9ZWxzZXtjW2Q+PjJdPTA7YnJlYWt9fX1lbHNle3k9MH19d2hpbGUoMCk7aWYocyl7Y1tnPj4yXT15fWlmKCh0fDApIT0wKXtpYih0fDApfDB9aWYoKHZ8MCk9PTApe2Y9MjtkPTQ4O2JyZWFrfWVsc2UgaWYoKHZ8MCk9PS0xKXtkPTI2O2JyZWFrfWg9KGNbaz4+Ml18MCkrKHY8PDIpfDA7Y1trPj4yXT1oO2lmKChofDApPT0oanwwKSl7ZD00NjticmVha31lPWNbZz4+Ml18MDtpZigocnwwKT09KGZ8MCkpe3I9Zn1lbHNle3E9aWIoY1tiPj4yXXwwKXwwO2U9VW0oaCxlLDEsZCl8MDtpZigocXwwKSE9MCl7aWIocXwwKXwwfWlmKChlfDApIT0wKXtmPTI7ZD00ODticmVha31jW2s+PjJdPShjW2s+PjJdfDApKzQ7ZT0oY1tnPj4yXXwwKSsxfDA7Y1tnPj4yXT1lO2Q6ZG97aWYoKGV8MCk9PShmfDApKXtyPWZ9ZWxzZXtyPWU7d2hpbGUoMSl7aWYoKGFbcj4+MF18MCk9PTApe2JyZWFrIGR9cj1yKzF8MDtpZigocnwwKT09KGZ8MCkpe3I9ZjticmVha319fX13aGlsZSgwKTtoPWNbaz4+Ml18MH1pZigoZXwwKT09KGZ8MCl8KGh8MCk9PShqfDApKXticmVhayBhfX1pZigoZHwwKT09MjYpe2Nbaz4+Ml09aDtlOmRve2lmKChlfDApIT0oY1tnPj4yXXwwKSl7d2hpbGUoMSl7ZD1pYihjW2I+PjJdfDApfDA7bj1VbShoLGUscS1lfDAsbSl8MDtpZigoZHwwKSE9MCl7aWIoZHwwKXwwfWlmKChufDApPT0tMSl7ZD0zMTticmVha31lbHNlIGlmKChufDApPT0tMil7ZD0zMjticmVha31lbHNlIGlmKChufDApPT0wKXtlPWUrMXwwfWVsc2V7ZT1lK258MH1oPShjW2s+PjJdfDApKzR8MDtjW2s+PjJdPWg7aWYoKGV8MCk9PShjW2c+PjJdfDApKXticmVhayBlfX1pZigoZHwwKT09MzEpe2NbZz4+Ml09ZTtBPTI7aT1sO3JldHVybiBBfDB9ZWxzZSBpZigoZHwwKT09MzIpe2NbZz4+Ml09ZTtBPTE7aT1sO3JldHVybiBBfDB9fX13aGlsZSgwKTtjW2c+PjJdPWU7QT0oZXwwKSE9KGZ8MCkmMTtpPWw7cmV0dXJuIEF8MH1lbHNlIGlmKChkfDApPT00Nil7ZT1jW2c+PjJdfDA7YnJlYWt9ZWxzZSBpZigoZHwwKT09NDgpe2k9bDtyZXR1cm4gZnwwfX19ZWxzZXtjW2s+PjJdPWg7Y1tnPj4yXT1lfX13aGlsZSgwKTtBPShlfDApIT0oZnwwKSYxO2k9bDtyZXR1cm4gQXwwfWZ1bmN0aW9uIElsKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Yj1pO2NbZj4+Ml09ZDthPWliKGNbYSs4Pj4yXXwwKXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJuIDB9aWIoYXwwKXwwO2k9YjtyZXR1cm4gMH1mdW5jdGlvbiBKbChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7YT1hKzh8MDtkPWliKGNbYT4+Ml18MCl8MDtpZigoZHwwKSE9MCl7aWIoZHwwKXwwfWE9Y1thPj4yXXwwO2lmKChhfDApIT0wKXthPWliKGF8MCl8MDtpZigoYXwwKT09MCl7YT0wfWVsc2V7aWIoYXwwKXwwO2E9MH19ZWxzZXthPTF9aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gS2woYSl7YT1hfDA7cmV0dXJuIDB9ZnVuY3Rpb24gTGwoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2lmKChmfDApPT0wfChkfDApPT0oZXwwKSl7bT0wO2k9ZztyZXR1cm4gbXwwfWg9ZTthPWErOHwwO2I9KGJ8MCkhPTA/YjoyMTI4MDtrPTA7aj0wO3doaWxlKDEpe209aWIoY1thPj4yXXwwKXwwO2w9VW0oMCxkLGgtZHwwLGIpfDA7aWYoKG18MCkhPTApe2liKG18MCl8MH1pZigobHwwKT09MCl7ZD1kKzF8MDtsPTF9ZWxzZSBpZigobHwwKT09LTJ8KGx8MCk9PS0xKXtmPTk7YnJlYWt9ZWxzZXtkPWQrbHwwfWs9bCtrfDA7aj1qKzF8MDtpZihqPj4+MD49Zj4+PjB8KGR8MCk9PShlfDApKXtmPTk7YnJlYWt9fWlmKChmfDApPT05KXtpPWc7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBNbChhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSs4Pj4yXXwwO2lmKChhfDApIT0wKXthPWliKGF8MCl8MDtpZigoYXwwKT09MCl7YT00fWVsc2V7aWIoYXwwKXwwO2E9NH19ZWxzZXthPTF9aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gTmwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gT2woZCxmLGcsaCxqLGssbCxtKXtkPWR8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDt2YXIgbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7Zj1pO2Q9aDthOmRve2lmKGc+Pj4wPGg+Pj4wKXtvPWc7bj1rO3doaWxlKDEpe3E9YltvPj4xXXwwO3A9cSY2NTUzNTtkb3tpZigocSY2NTUzNSk8MTI4KXtpZigobC1ufDApPDEpe2g9MTticmVhayBhfWFbbj4+MF09cTtuPW4rMXwwfWVsc2V7aWYoKHEmNjU1MzUpPDIwNDgpe2lmKChsLW58MCk8Mil7aD0xO2JyZWFrIGF9YVtuPj4wXT1wPj4+NnwxOTI7YVtuKzE+PjBdPXAmNjN8MTI4O249bisyfDA7YnJlYWt9aWYoKHEmNjU1MzUpPDU1Mjk2KXtpZigobC1ufDApPDMpe2g9MTticmVhayBhfWFbbj4+MF09cD4+PjEyfDIyNDthW24rMT4+MF09cD4+PjYmNjN8MTI4O2FbbisyPj4wXT1wJjYzfDEyODtuPW4rM3wwO2JyZWFrfWlmKCEoKHEmNjU1MzUpPDU2MzIwKSl7aWYoKHEmNjU1MzUpPDU3MzQ0KXtoPTI7YnJlYWsgYX1pZigobC1ufDApPDMpe2g9MTticmVhayBhfWFbbj4+MF09cD4+PjEyfDIyNDthW24rMT4+MF09cD4+PjYmNjN8MTI4O2FbbisyPj4wXT1wJjYzfDEyODtuPW4rM3wwO2JyZWFrfWlmKChkLW98MCk8NCl7aD0xO2JyZWFrIGF9cT1vKzJ8MDtyPWVbcT4+MV18MDtpZigociY2NDUxMnwwKSE9NTYzMjApe2g9MjticmVhayBhfWlmKChsLW58MCk8NCl7aD0xO2JyZWFrIGF9cz1wJjk2MDtpZigoKHM8PDEwKSs2NTUzNnwwKT4+PjA+MTExNDExMSl7aD0yO2JyZWFrIGF9bz0ocz4+PjYpKzF8MDthW24+PjBdPW8+Pj4yfDI0MDthW24rMT4+MF09cD4+PjImMTV8bzw8NCY0OHwxMjg7YVtuKzI+PjBdPXA8PDQmNDh8cj4+PjYmMTV8MTI4O2FbbiszPj4wXT1yJjYzfDEyODtvPXE7bj1uKzR8MH19d2hpbGUoMCk7bz1vKzJ8MDtpZighKG8+Pj4wPGg+Pj4wKSl7aD0wO2JyZWFrfX19ZWxzZXtoPTA7bz1nO249a319d2hpbGUoMCk7Y1tqPj4yXT1nKyhvLWc+PjE8PDEpO2NbbT4+Ml09aysobi1rKTtpPWY7cmV0dXJuIGh8MH1mdW5jdGlvbiBQbChlLGYsZyxoLGosayxsLG0pe2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO209bXwwO3ZhciBuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2Y9aTthOmRve2lmKGc+Pj4wPGg+Pj4wKXtvPWg7cD1sO3E9ZztlPWs7d2hpbGUoMSl7aWYoIShlPj4+MDxsPj4+MCkpe249MzE7YnJlYWsgYX1zPWFbcT4+MF18MDtyPXMmMjU1O2Rve2lmKHM8PDI0Pj4yND4tMSl7YltlPj4xXT1zJjI1NTtxPXErMXwwfWVsc2V7aWYoKHMmMjU1KTwxOTQpe2g9MjticmVhayBhfWlmKChzJjI1NSk8MjI0KXtpZigoby1xfDApPDIpe2g9MTticmVhayBhfXM9ZFtxKzE+PjBdfDA7aWYoKHMmMTkyfDApIT0xMjgpe2g9MjticmVhayBhfWJbZT4+MV09cyY2M3xyPDw2JjE5ODQ7cT1xKzJ8MDticmVha31pZigocyYyNTUpPDI0MCl7aWYoKG8tcXwwKTwzKXtoPTE7YnJlYWsgYX1zPWFbcSsxPj4wXXwwO3Q9YVtxKzI+PjBdfDA7aWYoKHJ8MCk9PTIzNyl7aWYoISgocyYtMzIpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19ZWxzZSBpZigocnwwKT09MjI0KXtpZighKChzJi0zMik8PDI0Pj4yND09LTk2KSl7aD0yO2JyZWFrIGF9fWVsc2V7aWYoISgocyYtNjQpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19dD10JjI1NTtpZigodCYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9YltlPj4xXT0ocyYyNTUpPDw2JjQwMzJ8cjw8MTJ8dCY2MztxPXErM3wwO2JyZWFrfWlmKCEoKHMmMjU1KTwyNDUpKXtoPTI7YnJlYWsgYX1pZigoby1xfDApPDQpe2g9MTticmVhayBhfXM9YVtxKzE+PjBdfDA7dD1hW3ErMj4+MF18MDt1PWFbcSszPj4wXXwwO2lmKChyfDApPT0yNDApe2lmKCEoKHMrMTEyPDwyND4+MjQmMjU1KTw0OCkpe2g9MjticmVhayBhfX1lbHNlIGlmKChyfDApPT0yNDQpe2lmKCEoKHMmLTE2KTw8MjQ+PjI0PT0tMTI4KSl7aD0yO2JyZWFrIGF9fWVsc2V7aWYoISgocyYtNjQpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19dD10JjI1NTtpZigodCYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9dT11JjI1NTtpZigodSYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9aWYoKHAtZXwwKTw0KXtoPTE7YnJlYWsgYX1yPXImNztzPXMmMjU1O2lmKChzPDwxMiYxOTY2MDh8cjw8MTgpPj4+MD4xMTE0MTExKXtoPTI7YnJlYWsgYX1iW2U+PjFdPXM8PDImNjB8dD4+PjQmM3woKHM+Pj40JjN8cjw8Mik8PDYpKzE2MzIwfDU1Mjk2O2U9ZSsyfDA7YltlPj4xXT11JjYzfHQ8PDYmOTYwfDU2MzIwO3E9cSs0fDB9fXdoaWxlKDApO2U9ZSsyfDA7aWYoIShxPj4+MDxoPj4+MCkpe249MzE7YnJlYWt9fX1lbHNle3E9ZztlPWs7bj0zMX19d2hpbGUoMCk7aWYoKG58MCk9PTMxKXtoPXE+Pj4wPGg+Pj4wJjF9Y1tqPj4yXT1nKyhxLWcpO2NbbT4+Ml09aysoZS1rPj4xPDwxKTtpPWY7cmV0dXJuIGh8MH1mdW5jdGlvbiBRbChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2NbZj4+Ml09ZDtyZXR1cm4gM31mdW5jdGlvbiBSbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBTbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBUbChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Yz1pO2E6ZG97aWYoZD4+PjA8ZT4+PjAmKGZ8MCkhPTApe2I9ZTtoPWQ7Zz0wO2I6d2hpbGUoMSl7az1hW2g+PjBdfDA7aj1rJjI1NTtkb3tpZihrPDwyND4+MjQ+LTEpe2g9aCsxfDB9ZWxzZXtpZigoayYyNTUpPDE5NCl7YnJlYWsgYX1pZigoayYyNTUpPDIyNCl7aWYoKGItaHwwKTwyKXticmVhayBhfWlmKCEoKGFbaCsxPj4wXSYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWg9aCsyfDA7YnJlYWt9aWYoKGsmMjU1KTwyNDApe2s9aDtpZigoYi1rfDApPDMpe2JyZWFrIGF9bT1hW2grMT4+MF18MDtsPWFbaCsyPj4wXXwwO2lmKChqfDApPT0yMjQpe2lmKCEoKG0mLTMyKTw8MjQ+PjI0PT0tOTYpKXtlPTE0O2JyZWFrIGJ9fWVsc2UgaWYoKGp8MCk9PTIzNyl7aWYoISgobSYtMzIpPDwyND4+MjQ9PS0xMjgpKXtlPTE2O2JyZWFrIGJ9fWVsc2V7aWYoISgobSYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTE4O2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1oPWgrM3wwO2JyZWFrfWlmKCEoKGsmMjU1KTwyNDUpKXticmVhayBhfWs9aDtpZigoYi1rfDApPDQpe2JyZWFrIGF9aWYoKGYtZ3wwKT4+PjA8Mil7YnJlYWsgYX1uPWFbaCsxPj4wXXwwO2w9YVtoKzI+PjBdfDA7bT1hW2grMz4+MF18MDtpZigoanwwKT09MjQ0KXtpZighKChuJi0xNik8PDI0Pj4yND09LTEyOCkpe2U9Mjg7YnJlYWsgYn19ZWxzZSBpZigoanwwKT09MjQwKXtpZighKChuKzExMjw8MjQ+PjI0JjI1NSk8NDgpKXtlPTI2O2JyZWFrIGJ9fWVsc2V7aWYoISgobiYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTMwO2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1pZighKChtJi02NCk8PDI0Pj4yND09LTEyOCkpe2JyZWFrIGF9aWYoKChuJjI1NSk8PDEyJjE5NjYwOHxqPDwxOCYxODM1MDA4KT4+PjA+MTExNDExMSl7YnJlYWsgYX1oPWgrNHwwO2c9ZysxfDB9fXdoaWxlKDApO2c9ZysxfDA7aWYoIShoPj4+MDxlPj4+MCZnPj4+MDxmPj4+MCkpe2JyZWFrIGF9fWlmKChlfDApPT0xNCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0xNil7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0xOCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0yNil7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0yOCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0zMCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH19ZWxzZXtoPWR9fXdoaWxlKDApO249aC1kfDA7aT1jO3JldHVybiBufDB9ZnVuY3Rpb24gVWwoYSl7YT1hfDA7cmV0dXJuIDR9ZnVuY3Rpb24gVmwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gV2woYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTA7ZD1pO2E6ZG97aWYoZT4+PjA8Zj4+PjApe2I9ZTtsPWg7d2hpbGUoMSl7bT1jW2I+PjJdfDA7aWYoKG0mLTIwNDh8MCk9PTU1Mjk2fG0+Pj4wPjExMTQxMTEpe2Y9MjticmVhayBhfWRve2lmKCEobT4+PjA8MTI4KSl7aWYobT4+PjA8MjA0OCl7aWYoKGotbHwwKTwyKXtmPTE7YnJlYWsgYX1hW2w+PjBdPW0+Pj42fDE5MjthW2wrMT4+MF09bSY2M3wxMjg7bD1sKzJ8MDticmVha31uPWotbHwwO2lmKG0+Pj4wPDY1NTM2KXtpZigobnwwKTwzKXtmPTE7YnJlYWsgYX1hW2w+PjBdPW0+Pj4xMnwyMjQ7YVtsKzE+PjBdPW0+Pj42JjYzfDEyODthW2wrMj4+MF09bSY2M3wxMjg7bD1sKzN8MDticmVha31lbHNle2lmKChufDApPDQpe2Y9MTticmVhayBhfWFbbD4+MF09bT4+PjE4fDI0MDthW2wrMT4+MF09bT4+PjEyJjYzfDEyODthW2wrMj4+MF09bT4+PjYmNjN8MTI4O2FbbCszPj4wXT1tJjYzfDEyODtsPWwrNHwwO2JyZWFrfX1lbHNle2lmKChqLWx8MCk8MSl7Zj0xO2JyZWFrIGF9YVtsPj4wXT1tO2w9bCsxfDB9fXdoaWxlKDApO2I9Yis0fDA7aWYoIShiPj4+MDxmPj4+MCkpe2Y9MDticmVha319fWVsc2V7Zj0wO2I9ZTtsPWh9fXdoaWxlKDApO2NbZz4+Ml09ZSsoYi1lPj4yPDwyKTtjW2s+PjJdPWgrKGwtaCk7aT1kO3JldHVybiBmfDB9ZnVuY3Rpb24gWGwoYixlLGYsZyxoLGosayxsKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2U9aTthOmRve2lmKGY+Pj4wPGc+Pj4wKXtvPWc7bj1mO2I9ajt3aGlsZSgxKXtpZighKGI+Pj4wPGs+Pj4wKSl7bT0zMDticmVhayBhfXE9YVtuPj4wXXwwO3A9cSYyNTU7ZG97aWYocTw8MjQ+PjI0Pi0xKXtjW2I+PjJdPXA7bj1uKzF8MH1lbHNle2lmKChxJjI1NSk8MTk0KXtnPTI7YnJlYWsgYX1pZigocSYyNTUpPDIyNCl7aWYoKG8tbnwwKTwyKXtnPTE7YnJlYWsgYX1xPWRbbisxPj4wXXwwO2lmKChxJjE5MnwwKSE9MTI4KXtnPTI7YnJlYWsgYX1jW2I+PjJdPXEmNjN8cDw8NiYxOTg0O249bisyfDA7YnJlYWt9aWYoKHEmMjU1KTwyNDApe2lmKChvLW58MCk8Myl7Zz0xO2JyZWFrIGF9cT1hW24rMT4+MF18MDtyPWFbbisyPj4wXXwwO2lmKChwfDApPT0yMjQpe2lmKCEoKHEmLTMyKTw8MjQ+PjI0PT0tOTYpKXtnPTI7YnJlYWsgYX19ZWxzZSBpZigocHwwKT09MjM3KXtpZighKChxJi0zMik8PDI0Pj4yND09LTEyOCkpe2c9MjticmVhayBhfX1lbHNle2lmKCEoKHEmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7Zz0yO2JyZWFrIGF9fXI9ciYyNTU7aWYoKHImMTkyfDApIT0xMjgpe2c9MjticmVhayBhfWNbYj4+Ml09KHEmMjU1KTw8NiY0MDMyfHA8PDEyJjYxNDQwfHImNjM7bj1uKzN8MDticmVha31pZighKChxJjI1NSk8MjQ1KSl7Zz0yO2JyZWFrIGF9aWYoKG8tbnwwKTw0KXtnPTE7YnJlYWsgYX1xPWFbbisxPj4wXXwwO3I9YVtuKzI+PjBdfDA7cz1hW24rMz4+MF18MDtpZigocHwwKT09MjQ0KXtpZighKChxJi0xNik8PDI0Pj4yND09LTEyOCkpe2c9MjticmVhayBhfX1lbHNlIGlmKChwfDApPT0yNDApe2lmKCEoKHErMTEyPDwyND4+MjQmMjU1KTw0OCkpe2c9MjticmVhayBhfX1lbHNle2lmKCEoKHEmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7Zz0yO2JyZWFrIGF9fXI9ciYyNTU7aWYoKHImMTkyfDApIT0xMjgpe2c9MjticmVhayBhfXM9cyYyNTU7aWYoKHMmMTkyfDApIT0xMjgpe2c9MjticmVhayBhfXA9KHEmMjU1KTw8MTImMjU4MDQ4fHA8PDE4JjE4MzUwMDh8cjw8NiY0MDMyfHMmNjM7aWYocD4+PjA+MTExNDExMSl7Zz0yO2JyZWFrIGF9Y1tiPj4yXT1wO249bis0fDB9fXdoaWxlKDApO2I9Yis0fDA7aWYoIShuPj4+MDxnPj4+MCkpe209MzA7YnJlYWt9fX1lbHNle249ZjtiPWo7bT0zMH19d2hpbGUoMCk7aWYoKG18MCk9PTMwKXtnPW4+Pj4wPGc+Pj4wJjF9Y1toPj4yXT1mKyhuLWYpO2NbbD4+Ml09aisoYi1qPj4yPDwyKTtpPWU7cmV0dXJuIGd8MH1mdW5jdGlvbiBZbChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2NbZj4+Ml09ZDtyZXR1cm4gM31mdW5jdGlvbiBabChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBfbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiAkbChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Yz1pO2E6ZG97aWYoZD4+PjA8ZT4+PjAmKGZ8MCkhPTApe2c9ZTtqPWQ7Yj0xO2I6d2hpbGUoMSl7az1hW2o+PjBdfDA7aD1rJjI1NTtkb3tpZihrPDwyND4+MjQ+LTEpe2o9aisxfDB9ZWxzZXtpZigoayYyNTUpPDE5NCl7YnJlYWsgYX1pZigoayYyNTUpPDIyNCl7aWYoKGctanwwKTwyKXticmVhayBhfWlmKCEoKGFbaisxPj4wXSYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWo9aisyfDA7YnJlYWt9aWYoKGsmMjU1KTwyNDApe2s9ajtpZigoZy1rfDApPDMpe2JyZWFrIGF9bT1hW2orMT4+MF18MDtsPWFbaisyPj4wXXwwO2lmKChofDApPT0yMjQpe2lmKCEoKG0mLTMyKTw8MjQ+PjI0PT0tOTYpKXtlPTE0O2JyZWFrIGJ9fWVsc2UgaWYoKGh8MCk9PTIzNyl7aWYoISgobSYtMzIpPDwyND4+MjQ9PS0xMjgpKXtlPTE2O2JyZWFrIGJ9fWVsc2V7aWYoISgobSYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTE4O2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1qPWorM3wwO2JyZWFrfWlmKCEoKGsmMjU1KTwyNDUpKXticmVhayBhfWs9ajtpZigoZy1rfDApPDQpe2JyZWFrIGF9bT1hW2orMT4+MF18MDtuPWFbaisyPj4wXXwwO2w9YVtqKzM+PjBdfDA7aWYoKGh8MCk9PTI0MCl7aWYoISgobSsxMTI8PDI0Pj4yNCYyNTUpPDQ4KSl7ZT0yNTticmVhayBifX1lbHNlIGlmKChofDApPT0yNDQpe2lmKCEoKG0mLTE2KTw8MjQ+PjI0PT0tMTI4KSl7ZT0yNzticmVhayBifX1lbHNle2lmKCEoKG0mLTY0KTw8MjQ+PjI0PT0tMTI4KSl7ZT0yOTticmVhayBifX1pZighKChuJi02NCk8PDI0Pj4yND09LTEyOCkpe2JyZWFrIGF9aWYoISgobCYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWlmKCgobSYyNTUpPDwxMiYxOTY2MDh8aDw8MTgmMTgzNTAwOCk+Pj4wPjExMTQxMTEpe2JyZWFrIGF9aj1qKzR8MH19d2hpbGUoMCk7aWYoIShqPj4+MDxlPj4+MCZiPj4+MDxmPj4+MCkpe2JyZWFrIGF9Yj1iKzF8MH1pZigoZXwwKT09MTQpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MTYpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MTgpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MjUpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09Mjcpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09Mjkpe249ay1kfDA7aT1jO3JldHVybiBufDB9fWVsc2V7aj1kfX13aGlsZSgwKTtuPWotZHwwO2k9YztyZXR1cm4gbnwwfWZ1bmN0aW9uIGFtKGEpe2E9YXwwO3JldHVybiA0fWZ1bmN0aW9uIGJtKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGNtKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGRtKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNjI0O2lmKCEoKGFbYisxMj4+MF0mMSk9PTApKXtlPWNbYisyMD4+Ml18MDtpZigoZXwwKSE9MCl7dm4oZSl9aWYoKGJ8MCk9PTApe2k9ZDtyZXR1cm59fXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM2MjQ7aWYoISgoYVtiKzEyPj4wXSYxKT09MCk/KGU9Y1tiKzIwPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pPWQ7cmV0dXJufWZ1bmN0aW9uIGZtKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNjY0O2lmKCEoKGFbYisxNj4+MF0mMSk9PTApKXtlPWNbYisyND4+Ml18MDtpZigoZXwwKSE9MCl7dm4oZSl9aWYoKGJ8MCk9PTApe2k9ZDtyZXR1cm59fXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ20oYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM2NjQ7aWYoISgoYVtiKzE2Pj4wXSYxKT09MCk/KGU9Y1tiKzI0Pj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pPWQ7cmV0dXJufWZ1bmN0aW9uIGhtKGIpe2I9YnwwO3JldHVybiBhW2IrOD4+MF18MH1mdW5jdGlvbiBpbShhKXthPWF8MDtyZXR1cm4gY1thKzg+PjJdfDB9ZnVuY3Rpb24gam0oYil7Yj1ifDA7cmV0dXJuIGFbYis5Pj4wXXwwfWZ1bmN0aW9uIGttKGEpe2E9YXwwO3JldHVybiBjW2ErMTI+PjJdfDB9ZnVuY3Rpb24gbG0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2c9ZCsxMnwwO2lmKChhW2c+PjBdJjEpPT0wKXtjW2IrMD4+Ml09Y1tnKzA+PjJdO2NbYis0Pj4yXT1jW2crND4+Ml07Y1tiKzg+PjJdPWNbZys4Pj4yXTtpPWU7cmV0dXJufWc9Y1tkKzIwPj4yXXwwO2Q9Y1tkKzE2Pj4yXXwwO2lmKGQ+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoZD4+PjA8MTEpe2FbYj4+MF09ZDw8MTtrPWIrMXwwfWVsc2V7aD1kKzE2Ji0xNjtqPShofDApPT0wPzE6aDt3aGlsZSgxKXtrPXVuKGopfDA7aWYoKGt8MCkhPTApe2Y9MTM7YnJlYWt9az1jWzU2NjZdfDA7Y1s1NjY2XT1rKzA7aWYoKGt8MCk9PTApe2JyZWFrfXNjW2smMzFdKCl9aWYoKGZ8MCk9PTEzKXtjW2IrOD4+Ml09aztjW2I+PjJdPWh8MTtjW2IrND4+Ml09ZDticmVha31rPVhhKDQpfDA7Y1trPj4yXT0yMjY4MDt3YihrfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7TG4oa3wwLGd8MCxkfDApfDA7YVtrK2Q+PjBdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBtbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtlPWk7Zz1kKzE2fDA7aWYoKGFbZz4+MF0mMSk9PTApe2NbYiswPj4yXT1jW2crMD4+Ml07Y1tiKzQ+PjJdPWNbZys0Pj4yXTtjW2IrOD4+Ml09Y1tnKzg+PjJdO2k9ZTtyZXR1cm59Zz1jW2QrMjQ+PjJdfDA7ZD1jW2QrMjA+PjJdfDA7aWYoZD4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1kb3tpZihkPj4+MDwxMSl7YVtiPj4wXT1kPDwxO2s9YisxfDB9ZWxzZXtoPWQrMTYmLTE2O2o9KGh8MCk9PTA/MTpoO3doaWxlKDEpe2s9dW4oail8MDtpZigoa3wwKSE9MCl7Zj0xMzticmVha31rPWNbNTY2Nl18MDtjWzU2NjZdPWsrMDtpZigoa3wwKT09MCl7YnJlYWt9c2NbayYzMV0oKX1pZigoZnwwKT09MTMpe2NbYis4Pj4yXT1rO2NbYj4+Ml09aHwxO2NbYis0Pj4yXT1kO2JyZWFrfWs9WGEoNCl8MDtjW2s+PjJdPTIyNjgwO3diKGt8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtMbihrfDAsZ3wwLGR8MCl8MDthW2srZD4+MF09MDtpPWU7cmV0dXJufWZ1bmN0aW9uIG5tKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT04O2M9YisxfDA7YVtjPj4wXT0xNzAyMTk1ODI4O2FbYysxPj4wXT02NjQ5MjAyO2FbYysyPj4wXT0yNTk3MzthW2MrMz4+MF09MTAxO2FbYis1Pj4wXT0wO3JldHVybn1mdW5jdGlvbiBvbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2Q9aTtlPTEzNjk2O3doaWxlKDEpe2lmKChjW2U+PjJdfDApPT0wKXticmVha31lbHNle2U9ZSs0fDB9fWc9ZS0xMzY5NnwwO2U9Zz4+MjtpZihlPj4+MD4xMDczNzQxODA3KXtkZygpfWRve2lmKGU+Pj4wPDIpe2FbYj4+MF09Zz4+PjE7aj1iKzR8MH1lbHNle2c9ZSs0Ji00O2g9Zzw8MjtoPShofDApPT0wPzE6aDt3aGlsZSgxKXtqPXVuKGgpfDA7aWYoKGp8MCkhPTApe2Y9MTM7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKGZ8MCk9PTEzKXtjW2IrOD4+Ml09ajtjW2I+PjJdPWd8MTtjW2IrND4+Ml09ZTticmVha31qPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGV8MCk9PTApe2o9aisoZTw8Mil8MDtjW2o+PjJdPTA7aT1kO3JldHVybn1lbHNle2Y9ZTtnPTEzNjk2O2I9an13aGlsZSgxKXtmPWYrIC0xfDA7Y1tiPj4yXT1jW2c+PjJdO2lmKChmfDApPT0wKXticmVha31lbHNle2c9Zys0fDA7Yj1iKzR8MH19aj1qKyhlPDwyKXwwO2Nbaj4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIHBtKGIsYyl7Yj1ifDA7Yz1jfDA7dmFyIGQ9MDtjPWk7YVtiPj4wXT0xMDtkPWIrMXwwO2FbZCswPj4wXT1hWzEzNzIwPj4wXXwwO2FbZCsxPj4wXT1hWzEzNzIxPj4wXXwwO2FbZCsyPj4wXT1hWzEzNzIyPj4wXXwwO2FbZCszPj4wXT1hWzEzNzIzPj4wXXwwO2FbZCs0Pj4wXT1hWzEzNzI0Pj4wXXwwO2FbYis2Pj4wXT0wO2k9YztyZXR1cm59ZnVuY3Rpb24gcW0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtkPWk7ZT0xMzcyODt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtlPWUrNHwwfX1nPWUtMTM3Mjh8MDtlPWc+PjI7aWYoZT4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihlPj4+MDwyKXthW2I+PjBdPWc+Pj4xO2o9Yis0fDB9ZWxzZXtnPWUrNCYtNDtoPWc8PDI7aD0oaHwwKT09MD8xOmg7d2hpbGUoMSl7aj11bihoKXwwO2lmKChqfDApIT0wKXtmPTEzO2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXticmVha31zY1tqJjMxXSgpfWlmKChmfDApPT0xMyl7Y1tiKzg+PjJdPWo7Y1tiPj4yXT1nfDE7Y1tiKzQ+PjJdPWU7YnJlYWt9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChlfDApPT0wKXtqPWorKGU8PDIpfDA7Y1tqPj4yXT0wO2k9ZDtyZXR1cm59ZWxzZXtmPWU7Zz0xMzcyODtiPWp9d2hpbGUoMSl7Zj1mKyAtMXwwO2NbYj4+Ml09Y1tnPj4yXTtpZigoZnwwKT09MCl7YnJlYWt9ZWxzZXtnPWcrNHwwO2I9Yis0fDB9fWo9aisoZTw8Mil8MDtjW2o+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBybShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzc2MF18MCkhPTApe2Q9Y1szNDM4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzc2MCl8MCk9PTApe2Q9Y1szNDM4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzIwOTI4XXwwKT09MD8oUWEoMjA5MjgpfDApIT0wOjApe05uKDIwNzYwLDAsMTY4KXwwO2NjKDIxNSwwLHB8MCl8MDskYSgyMDkyOCl9Z2coMjA3NjAsMjA5MzYpO2dnKDIwNzcyfDAsMjA5NDQpO2dnKDIwNzg0fDAsMjA5NTIpO2dnKDIwNzk2fDAsMjA5NjApO2dnKDIwODA4fDAsMjA5NzYpO2dnKDIwODIwfDAsMjA5OTIpO2dnKDIwODMyfDAsMjFlMyk7Z2coMjA4NDR8MCwyMTAxNik7Z2coMjA4NTZ8MCwyMTAyNCk7Z2coMjA4Njh8MCwyMTAzMik7Z2coMjA4ODB8MCwyMTA0MCk7Z2coMjA4OTJ8MCwyMTA0OCk7Z2coMjA5MDR8MCwyMTA1Nik7Z2coMjA5MTZ8MCwyMTA2NCk7Y1szNDM4XT0yMDc2MDskYSgxMzc2MCk7ZD1jWzM0MzhdfDA7aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gc20oYil7Yj1ifDA7dmFyIGQ9MDtiPWk7aWYoKGFbMTM3NzZdfDApIT0wKXtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1pZigoUWEoMTM3NzYpfDApPT0wKXtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1pZigoYVsyMDM5Ml18MCk9PTA/KFFhKDIwMzkyKXwwKSE9MDowKXtObigyMDIyNCwwLDE2OCl8MDtjYygyMTYsMCxwfDApfDA7JGEoMjAzOTIpfW5nKDIwMjI0LDIwNDAwKTtuZygyMDIzNnwwLDIwNDMyKTtuZygyMDI0OHwwLDIwNDY0KTtuZygyMDI2MHwwLDIwNDk2KTtuZygyMDI3MnwwLDIwNTM2KTtuZygyMDI4NHwwLDIwNTc2KTtuZygyMDI5NnwwLDIwNjA4KTtuZygyMDMwOHwwLDIwNjQ4KTtuZygyMDMyMHwwLDIwNjY0KTtuZygyMDMzMnwwLDIwNjgwKTtuZygyMDM0NHwwLDIwNjk2KTtuZygyMDM1NnwwLDIwNzEyKTtuZygyMDM2OHwwLDIwNzI4KTtuZygyMDM4MHwwLDIwNzQ0KTtjWzM0NDJdPTIwMjI0OyRhKDEzNzc2KTtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB0bShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzc5Ml18MCkhPTApe2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzc5Mil8MCk9PTApe2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzJlNF18MCk9PTA/KFFhKDJlNCl8MCkhPTA6MCl7Tm4oMTk3MTIsMCwyODgpfDA7Y2MoMjE3LDAscHwwKXwwOyRhKDJlNCl9Z2coMTk3MTIsMjAwMDgpO2dnKDE5NzI0fDAsMjAwMTYpO2dnKDE5NzM2fDAsMjAwMzIpO2dnKDE5NzQ4fDAsMjAwNDApO2dnKDE5NzYwfDAsMjAwNDgpO2dnKDE5NzcyfDAsMjAwNTYpO2dnKDE5Nzg0fDAsMjAwNjQpO2dnKDE5Nzk2fDAsMjAwNzIpO2dnKDE5ODA4fDAsMjAwODApO2dnKDE5ODIwfDAsMjAwOTYpO2dnKDE5ODMyfDAsMjAxMDQpO2dnKDE5ODQ0fDAsMjAxMjApO2dnKDE5ODU2fDAsMjAxMzYpO2dnKDE5ODY4fDAsMjAxNDQpO2dnKDE5ODgwfDAsMjAxNTIpO2dnKDE5ODkyfDAsMjAxNjApO2dnKDE5OTA0fDAsMjAwNDgpO2dnKDE5OTE2fDAsMjAxNjgpO2dnKDE5OTI4fDAsMjAxNzYpO2dnKDE5OTQwfDAsMjAxODQpO2dnKDE5OTUyfDAsMjAxOTIpO2dnKDE5OTY0fDAsMjAyMDApO2dnKDE5OTc2fDAsMjAyMDgpO2dnKDE5OTg4fDAsMjAyMTYpO2NbMzQ0Nl09MTk3MTI7JGEoMTM3OTIpO2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWZ1bmN0aW9uIHVtKGIpe2I9YnwwO3ZhciBkPTA7Yj1pO2lmKChhWzEzODA4XXwwKSE9MCl7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9aWYoKFFhKDEzODA4KXwwKT09MCl7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9aWYoKGFbMTkxNjBdfDApPT0wPyhRYSgxOTE2MCl8MCkhPTA6MCl7Tm4oMTg4NzIsMCwyODgpfDA7Y2MoMjE4LDAscHwwKXwwOyRhKDE5MTYwKX1uZygxODg3MiwxOTE2OCk7bmcoMTg4ODR8MCwxOTIwMCk7bmcoMTg4OTZ8MCwxOTI0MCk7bmcoMTg5MDh8MCwxOTI2NCk7bmcoMTg5MjB8MCwxOTU4NCk7bmcoMTg5MzJ8MCwxOTI4OCk7bmcoMTg5NDR8MCwxOTMxMik7bmcoMTg5NTZ8MCwxOTMzNik7bmcoMTg5Njh8MCwxOTM2OCk7bmcoMTg5ODB8MCwxOTQwOCk7bmcoMTg5OTJ8MCwxOTQ0MCk7bmcoMTkwMDR8MCwxOTQ4MCk7bmcoMTkwMTZ8MCwxOTUyMCk7bmcoMTkwMjh8MCwxOTUzNik7bmcoMTkwNDB8MCwxOTU1Mik7bmcoMTkwNTJ8MCwxOTU2OCk7bmcoMTkwNjR8MCwxOTU4NCk7bmcoMTkwNzZ8MCwxOTYwMCk7bmcoMTkwODh8MCwxOTYxNik7bmcoMTkxMDB8MCwxOTYzMik7bmcoMTkxMTJ8MCwxOTY0OCk7bmcoMTkxMjR8MCwxOTY2NCk7bmcoMTkxMzZ8MCwxOTY4MCk7bmcoMTkxNDh8MCwxOTY5Nik7Y1szNDUwXT0xODg3MjskYSgxMzgwOCk7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gdm0oYil7Yj1ifDA7dmFyIGQ9MDtiPWk7aWYoKGFbMTM4MjRdfDApIT0wKXtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1pZigoUWEoMTM4MjQpfDApPT0wKXtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1pZigoYVsxODg0OF18MCk9PTA/KFFhKDE4ODQ4KXwwKSE9MDowKXtObigxODU2MCwwLDI4OCl8MDtjYygyMTksMCxwfDApfDA7JGEoMTg4NDgpfWdnKDE4NTYwLDE4ODU2KTtnZygxODU3MnwwLDE4ODY0KTtjWzM0NTRdPTE4NTYwOyRhKDEzODI0KTtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB3bShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzg0MF18MCkhPTApe2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzg0MCl8MCk9PTApe2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzE4NTIwXXwwKT09MD8oUWEoMTg1MjApfDApIT0wOjApe05uKDE4MjMyLDAsMjg4KXwwO2NjKDIyMCwwLHB8MCl8MDskYSgxODUyMCl9bmcoMTgyMzIsMTg1MjgpO25nKDE4MjQ0fDAsMTg1NDQpO2NbMzQ1OF09MTgyMzI7JGEoMTM4NDApO2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWZ1bmN0aW9uIHhtKGIpe2I9YnwwO3ZhciBjPTAsZD0wO2I9aTtpZigoYVsxMzg2NF18MCkhPTApe2k9YjtyZXR1cm4gMTM4NDh9aWYoKFFhKDEzODY0KXwwKT09MCl7aT1iO3JldHVybiAxMzg0OH1hWzEzODQ4XT0xNjtjPTEzODQ5fDA7ZD1jO2FbZD4+MF09NjIzODY1MTI1O2FbZCsxPj4wXT0yNDM2OTczO2FbZCsyPj4wXT05NTE5O2FbZCszPj4wXT0zNztjPWMrNHwwO2FbYz4+MF09MjAzMjQ4MDEwMDthW2MrMT4+MF09NzkzOTM3NTthW2MrMj4+MF09MzEwMTM7YVtjKzM+PjBdPTEyMTthWzEzODU3Pj4wXT0wO2NjKDIyMSwxMzg0OCxwfDApfDA7JGEoMTM4NjQpO2k9YjtyZXR1cm4gMTM4NDh9ZnVuY3Rpb24geW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzEzODg4XXwwKSE9MCl7aT1iO3JldHVybiAxMzg3Mn1pZigoUWEoMTM4ODgpfDApPT0wKXtpPWI7cmV0dXJuIDEzODcyfWVsc2V7ZD0xMzg5Nn13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTM4OTZ8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzEzODcyXT1mPj4+MTtlPTEzODc2fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxMzg4MD4+Ml09aDtjWzM0NjhdPWZ8MTtjWzEzODc2Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTEzODk2O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDEzODcyLHB8MCl8MDskYSgxMzg4OCk7aT1iO3JldHVybiAxMzg3Mn1mdW5jdGlvbiB6bShiKXtiPWJ8MDt2YXIgYz0wLGQ9MDtiPWk7aWYoKGFbMTM5NTJdfDApIT0wKXtpPWI7cmV0dXJuIDEzOTM2fWlmKChRYSgxMzk1Mil8MCk9PTApe2k9YjtyZXR1cm4gMTM5MzZ9YVsxMzkzNl09MTY7Yz0xMzkzN3wwO2Q9YzthW2Q+PjBdPTYyNDU3NjU0OTthW2QrMT4+MF09MjQzOTc1MjthW2QrMj4+MF09OTUzMDthW2QrMz4+MF09Mzc7Yz1jKzR8MDthW2M+PjBdPTEzOTQ5NDg2ODU7YVtjKzE+PjBdPTU0NDkwMTg7YVtjKzI+PjBdPTIxMjg1O2FbYyszPj4wXT04MzthWzEzOTQ1Pj4wXT0wO2NjKDIyMSwxMzkzNixwfDApfDA7JGEoMTM5NTIpO2k9YjtyZXR1cm4gMTM5MzZ9ZnVuY3Rpb24gQW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzEzOTc2XXwwKSE9MCl7aT1iO3JldHVybiAxMzk2MH1pZigoUWEoMTM5NzYpfDApPT0wKXtpPWI7cmV0dXJuIDEzOTYwfWVsc2V7ZD0xMzk4NH13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTM5ODR8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzEzOTYwXT1mPj4+MTtlPTEzOTY0fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxMzk2OD4+Ml09aDtjWzM0OTBdPWZ8MTtjWzEzOTY0Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTEzOTg0O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDEzOTYwLHB8MCl8MDskYSgxMzk3Nik7aT1iO3JldHVybiAxMzk2MH1mdW5jdGlvbiBCbShiKXtiPWJ8MDtiPWk7aWYoKGFbMTQwNDBdfDApPT0wPyhRYSgxNDA0MCl8MCkhPTA6MCl7ZWcoMTQwMjQsMTQwNDgsMjApO2NjKDIyMSwxNDAyNCxwfDApfDA7JGEoMTQwNDApfWk9YjtyZXR1cm4gMTQwMjR9ZnVuY3Rpb24gQ20oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzE0MDg4XXwwKSE9MCl7aT1iO3JldHVybiAxNDA3Mn1pZigoUWEoMTQwODgpfDApPT0wKXtpPWI7cmV0dXJuIDE0MDcyfWVsc2V7ZD0xNDA5Nn13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTQwOTZ8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzE0MDcyXT1mPj4+MTtlPTE0MDc2fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxNDA4MD4+Ml09aDtjWzM1MThdPWZ8MTtjWzE0MDc2Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTE0MDk2O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDE0MDcyLHB8MCl8MDskYSgxNDA4OCk7aT1iO3JldHVybiAxNDA3Mn1mdW5jdGlvbiBEbShiKXtiPWJ8MDtiPWk7aWYoKGFbMTQyMDBdfDApPT0wPyhRYSgxNDIwMCl8MCkhPTA6MCl7ZWcoMTQxODQsMTQyMDgsMTEpO2NjKDIyMSwxNDE4NCxwfDApfDA7JGEoMTQyMDApfWk9YjtyZXR1cm4gMTQxODR9ZnVuY3Rpb24gRW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzE0MjQwXXwwKSE9MCl7aT1iO3JldHVybiAxNDIyNH1pZigoUWEoMTQyNDApfDApPT0wKXtpPWI7cmV0dXJuIDE0MjI0fWVsc2V7ZD0xNDI0OH13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTQyNDh8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzE0MjI0XT1mPj4+MTtlPTE0MjI4fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxNDIzMj4+Ml09aDtjWzM1NTZdPWZ8MTtjWzE0MjI4Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTE0MjQ4O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDE0MjI0LHB8MCl8MDskYSgxNDI0MCk7aT1iO3JldHVybiAxNDIyNH1mdW5jdGlvbiBGbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCkhPTM0KXtpPWY7cmV0dXJuK2t9Y1tlPj4yXT00O2k9ZjtyZXR1cm4ra31mdW5jdGlvbiBHbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCkhPTM0KXtpPWY7cmV0dXJuK2t9Y1tlPj4yXT00O2k9ZjtyZXR1cm4ra31mdW5jdGlvbiBIbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCk9PTM0KXtjW2U+PjJdPTR9aT1mO3JldHVybitrfWZ1bmN0aW9uIEltKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7aD1pO2k9aSsxMTJ8MDtrPWg7aWYoKGJ8MCk9PShkfDApKXtjW2U+PjJdPTQ7Zj0wO209MDtJPWY7aT1oO3JldHVybiBtfDB9aWYoKGFbYj4+MF18MCk9PTQ1KXtjW2U+PjJdPTQ7Zj0wO209MDtJPWY7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsLTEsLTEpfDA7Zj1JO2s9YisoKGNbbD4+Ml18MCkrKGNbbj4+Ml18MCktKGNbays4Pj4yXXwwKSl8MDtiPWNbZz4+Ml18MDtpZigoYnwwKT09MCl7Y1tnPj4yXT1qfWlmKChrfDApIT0oZHwwKSl7Y1tlPj4yXT00O209MDtuPTA7ST1tO2k9aDtyZXR1cm4gbnwwfWlmKChifDApIT0zNCl7bj1tO0k9ZjtpPWg7cmV0dXJuIG58MH1jW2U+PjJdPTQ7bT0tMTtuPS0xO0k9bTtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBKbShiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtpPWkrMTEyfDA7az1oO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O209MDtpPWg7cmV0dXJuIG18MH1pZigoYVtiPj4wXXwwKT09NDUpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsLTEsLTEpfDA7Zj1JO2s9YisoKGNbbD4+Ml18MCkrKGNbbj4+Ml18MCktKGNbays4Pj4yXXwwKSl8MDtiPWNbZz4+Ml18MDtpZigoYnwwKT09MCl7Y1tnPj4yXT1qfWlmKChrfDApIT0oZHwwKSl7Y1tlPj4yXT00O249MDtpPWg7cmV0dXJuIG58MH1pZigoYnwwKT09MzR8KGY+Pj4wPjB8KGZ8MCk9PTAmbT4+PjA+NDI5NDk2NzI5NSkpe2NbZT4+Ml09NDtuPS0xO2k9aDtyZXR1cm4gbnwwfWVsc2V7bj1tO2k9aDtyZXR1cm4gbnwwfXJldHVybiAwfWZ1bmN0aW9uIEttKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7aD1pO2k9aSsxMTJ8MDtrPWg7aWYoKGJ8MCk9PShkfDApKXtjW2U+PjJdPTQ7bT0wO2k9aDtyZXR1cm4gbXwwfWlmKChhW2I+PjBdfDApPT00NSl7Y1tlPj4yXT00O209MDtpPWg7cmV0dXJuIG18MH1nPWJiKCl8MDtqPWNbZz4+Ml18MDtjW2c+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbaz4+Ml09MDtsPWsrNHwwO2NbbD4+Ml09YjtjW2srNDQ+PjJdPWI7aWYoKGJ8MCk8MCl7Y1trKzg+PjJdPS0xO209LTF9ZWxzZXttPWIrMjE0NzQ4MzY0N3wwO2Nbays4Pj4yXT1tfWNbays3Nj4+Ml09LTE7Y1trKzEwND4+Ml09MDtuPWsrMTA4fDA7Y1tuPj4yXT1tLWI7Y1trKzEwMD4+Ml09bTttPUJuKGssZiwtMSwtMSl8MDtmPUk7az1iKygoY1tsPj4yXXwwKSsoY1tuPj4yXXwwKS0oY1trKzg+PjJdfDApKXwwO2I9Y1tnPj4yXXwwO2lmKChifDApPT0wKXtjW2c+PjJdPWp9aWYoKGt8MCkhPShkfDApKXtjW2U+PjJdPTQ7bj0wO2k9aDtyZXR1cm4gbnwwfWlmKChifDApPT0zNHwoZj4+PjA+MHwoZnwwKT09MCZtPj4+MD40Mjk0OTY3Mjk1KSl7Y1tlPj4yXT00O249LTE7aT1oO3JldHVybiBufDB9ZWxzZXtuPW07aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTG0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9aWYoKGFbYj4+MF18MCk9PTQ1KXtjW2U+PjJdPTQ7bT0wO2k9aDtyZXR1cm4gbXwwfWc9YmIoKXwwO2o9Y1tnPj4yXXwwO2NbZz4+Ml09MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9Y1trPj4yXT0wO2w9ays0fDA7Y1tsPj4yXT1iO2Nbays0ND4+Ml09YjtpZigoYnwwKTwwKXtjW2srOD4+Ml09LTE7bT0tMX1lbHNle209YisyMTQ3NDgzNjQ3fDA7Y1trKzg+PjJdPW19Y1trKzc2Pj4yXT0tMTtjW2srMTA0Pj4yXT0wO249aysxMDh8MDtjW24+PjJdPW0tYjtjW2srMTAwPj4yXT1tO209Qm4oayxmLC0xLC0xKXwwO2Y9STtrPWIrKChjW2w+PjJdfDApKyhjW24+PjJdfDApLShjW2srOD4+Ml18MCkpfDA7Yj1jW2c+PjJdfDA7aWYoKGJ8MCk9PTApe2NbZz4+Ml09an1pZigoa3wwKSE9KGR8MCkpe2NbZT4+Ml09NDtuPTA7aT1oO3JldHVybiBufDB9aWYoKGJ8MCk9PTM0fChmPj4+MD4wfChmfDApPT0wJm0+Pj4wPjY1NTM1KSl7Y1tlPj4yXT00O249LTE7aT1oO3JldHVybiBufDB9ZWxzZXtuPW0mNjU1MzU7aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTW0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDtmPTA7bT0wO0k9ZjtpPWg7cmV0dXJuIG18MH1nPWJiKCl8MDtqPWNbZz4+Ml18MDtjW2c+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbaz4+Ml09MDtsPWsrNHwwO2NbbD4+Ml09YjtjW2srNDQ+PjJdPWI7aWYoKGJ8MCk8MCl7Y1trKzg+PjJdPS0xO209LTF9ZWxzZXttPWIrMjE0NzQ4MzY0N3wwO2Nbays4Pj4yXT1tfWNbays3Nj4+Ml09LTE7Y1trKzEwND4+Ml09MDtuPWsrMTA4fDA7Y1tuPj4yXT1tLWI7Y1trKzEwMD4+Ml09bTttPUJuKGssZiwwLC0yMTQ3NDgzNjQ4KXwwO2Y9STtrPWIrKChjW2w+PjJdfDApKyhjW24+PjJdfDApLShjW2srOD4+Ml18MCkpfDA7Yj1jW2c+PjJdfDA7aWYoKGJ8MCk9PTApe2NbZz4+Ml09an1pZigoa3wwKSE9KGR8MCkpe2NbZT4+Ml09NDttPTA7bj0wO0k9bTtpPWg7cmV0dXJuIG58MH1pZigoYnwwKT09MzQpe2NbZT4+Ml09NDtuPShmfDApPjB8KGZ8MCk9PTAmbT4+PjA+MDtJPW4/MjE0NzQ4MzY0NzotMjE0NzQ4MzY0ODtpPWg7cmV0dXJuKG4/LTE6MCl8MH1lbHNle249bTtJPWY7aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTm0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsMCwtMjE0NzQ4MzY0OCl8MDtmPUk7az1iKygoY1tsPj4yXXwwKSsoY1tuPj4yXXwwKS0oY1trKzg+PjJdfDApKXwwO2I9Y1tnPj4yXXwwO2lmKChifDApPT0wKXtjW2c+PjJdPWp9aWYoKGt8MCkhPShkfDApKXtjW2U+PjJdPTQ7bj0wO2k9aDtyZXR1cm4gbnwwfWRve2lmKChifDApPT0zNCl7Y1tlPj4yXT00O2lmKChmfDApPjB8KGZ8MCk9PTAmbT4+PjA+MCl7bj0yMTQ3NDgzNjQ3O2k9aDtyZXR1cm4gbnwwfX1lbHNle2lmKChmfDApPC0xfChmfDApPT0tMSZtPj4+MDwyMTQ3NDgzNjQ4KXtjW2U+PjJdPTQ7YnJlYWt9aWYoKGZ8MCk+MHwoZnwwKT09MCZtPj4+MD4yMTQ3NDgzNjQ3KXtjW2U+PjJdPTQ7bj0yMTQ3NDgzNjQ3O2k9aDtyZXR1cm4gbnwwfWVsc2V7bj1tO2k9aDtyZXR1cm4gbnwwfX19d2hpbGUoMCk7bj0tMjE0NzQ4MzY0ODtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBPbShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7Yj1pO2lmKCEoKGFbMTg1MDg+PjBdJjEpPT0wKT8odj1jWzE4NTE2Pj4yXXwwLCh2fDApIT0wKTowKXt2bih2KX1pZighKChhWzE4NDk2Pj4wXSYxKT09MCk/KHU9Y1sxODUwND4+Ml18MCwodXwwKSE9MCk6MCl7dm4odSl9aWYoISgoYVsxODQ4ND4+MF0mMSk9PTApPyh0PWNbMTg0OTI+PjJdfDAsKHR8MCkhPTApOjApe3ZuKHQpfWlmKCEoKGFbMTg0NzI+PjBdJjEpPT0wKT8ocz1jWzE4NDgwPj4yXXwwLChzfDApIT0wKTowKXt2bihzKX1pZighKChhWzE4NDYwPj4wXSYxKT09MCk/KHI9Y1sxODQ2OD4+Ml18MCwocnwwKSE9MCk6MCl7dm4ocil9aWYoISgoYVsxODQ0OD4+MF0mMSk9PTApPyhkPWNbMTg0NTY+PjJdfDAsKGR8MCkhPTApOjApe3ZuKGQpfWlmKCEoKGFbMTg0MzY+PjBdJjEpPT0wKT8ocD1jWzE4NDQ0Pj4yXXwwLChwfDApIT0wKTowKXt2bihwKX1pZighKChhWzE4NDI0Pj4wXSYxKT09MCk/KG89Y1sxODQzMj4+Ml18MCwob3wwKSE9MCk6MCl7dm4obyl9aWYoISgoYVsxODQxMj4+MF0mMSk9PTApPyhuPWNbMTg0MjA+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbMTg0MDA+PjBdJjEpPT0wKT8obT1jWzE4NDA4Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZighKChhWzE4Mzg4Pj4wXSYxKT09MCk/KGw9Y1sxODM5Nj4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoISgoYVsxODM3Nj4+MF0mMSk9PTApPyhrPWNbMTgzODQ+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKCEoKGFbMTgzNjQ+PjBdJjEpPT0wKT8oaj1jWzE4MzcyPj4yXXwwLChqfDApIT0wKTowKXt2bihqKX1pZighKChhWzE4MzUyPj4wXSYxKT09MCk/KGg9Y1sxODM2MD4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9aWYoISgoYVsxODM0MD4+MF0mMSk9PTApPyhnPWNbMTgzNDg+PjJdfDAsKGd8MCkhPTApOjApe3ZuKGcpfWlmKCEoKGFbMTgzMjg+PjBdJjEpPT0wKT8oZj1jWzE4MzM2Pj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1pZighKChhWzE4MzE2Pj4wXSYxKT09MCk/KGU9Y1sxODMyND4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9aWYoISgoYVsxODMwND4+MF0mMSk9PTApPyhxPWNbMTgzMTI+PjJdfDAsKHF8MCkhPTApOjApe3ZuKHEpfWRve2lmKCEoKGFbMTgyOTI+PjBdJjEpPT0wKSl7ZD1jWzE4MzAwPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODI4MD4+MF0mMSk9PTApKXtkPWNbMTgyODg+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4MjY4Pj4wXSYxKT09MCkpe2Q9Y1sxODI3Nj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTgyNTY+PjBdJjEpPT0wKSl7ZD1jWzE4MjY0Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODI0ND4+MF0mMSk9PTApKXtkPWNbMTgyNTI+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtpZigoYVsxODIzMl0mMSk9PTApe2k9YjtyZXR1cm59ZD1jWzE4MjQwPj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gUG0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO2I9aTtpZighKChhWzE4ODM2Pj4wXSYxKT09MCk/KHY9Y1sxODg0ND4+Ml18MCwodnwwKSE9MCk6MCl7dm4odil9aWYoISgoYVsxODgyND4+MF0mMSk9PTApPyh1PWNbMTg4MzI+PjJdfDAsKHV8MCkhPTApOjApe3ZuKHUpfWlmKCEoKGFbMTg4MTI+PjBdJjEpPT0wKT8odD1jWzE4ODIwPj4yXXwwLCh0fDApIT0wKTowKXt2bih0KX1pZighKChhWzE4ODAwPj4wXSYxKT09MCk/KHM9Y1sxODgwOD4+Ml18MCwoc3wwKSE9MCk6MCl7dm4ocyl9aWYoISgoYVsxODc4OD4+MF0mMSk9PTApPyhyPWNbMTg3OTY+PjJdfDAsKHJ8MCkhPTApOjApe3ZuKHIpfWlmKCEoKGFbMTg3NzY+PjBdJjEpPT0wKT8oZD1jWzE4Nzg0Pj4yXXwwLChkfDApIT0wKTowKXt2bihkKX1pZighKChhWzE4NzY0Pj4wXSYxKT09MCk/KHA9Y1sxODc3Mj4+Ml18MCwocHwwKSE9MCk6MCl7dm4ocCl9aWYoISgoYVsxODc1Mj4+MF0mMSk9PTApPyhvPWNbMTg3NjA+PjJdfDAsKG98MCkhPTApOjApe3ZuKG8pfWlmKCEoKGFbMTg3NDA+PjBdJjEpPT0wKT8obj1jWzE4NzQ4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhWzE4NzI4Pj4wXSYxKT09MCk/KG09Y1sxODczNj4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoISgoYVsxODcxNj4+MF0mMSk9PTApPyhsPWNbMTg3MjQ+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKCEoKGFbMTg3MDQ+PjBdJjEpPT0wKT8oaz1jWzE4NzEyPj4yXXwwLChrfDApIT0wKTowKXt2bihrKX1pZighKChhWzE4NjkyPj4wXSYxKT09MCk/KGo9Y1sxODcwMD4+Ml18MCwoanwwKSE9MCk6MCl7dm4oail9aWYoISgoYVsxODY4MD4+MF0mMSk9PTApPyhoPWNbMTg2ODg+PjJdfDAsKGh8MCkhPTApOjApe3ZuKGgpfWlmKCEoKGFbMTg2Njg+PjBdJjEpPT0wKT8oZz1jWzE4Njc2Pj4yXXwwLChnfDApIT0wKTowKXt2bihnKX1pZighKChhWzE4NjU2Pj4wXSYxKT09MCk/KGY9Y1sxODY2ND4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9aWYoISgoYVsxODY0ND4+MF0mMSk9PTApPyhlPWNbMTg2NTI+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWlmKCEoKGFbMTg2MzI+PjBdJjEpPT0wKT8ocT1jWzE4NjQwPj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1kb3tpZighKChhWzE4NjIwPj4wXSYxKT09MCkpe2Q9Y1sxODYyOD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg2MDg+PjBdJjEpPT0wKSl7ZD1jWzE4NjE2Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODU5Nj4+MF0mMSk9PTApKXtkPWNbMTg2MDQ+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4NTg0Pj4wXSYxKT09MCkpe2Q9Y1sxODU5Mj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg1NzI+PjBdJjEpPT0wKSl7ZD1jWzE4NTgwPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7aWYoKGFbMTg1NjBdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1sxODU2OD4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFFtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDtiPWk7aWYoISgoYVsxOTE0OD4+MF0mMSk9PTApPyh2PWNbMTkxNTY+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbMTkxMzY+PjBdJjEpPT0wKT8odT1jWzE5MTQ0Pj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhWzE5MTI0Pj4wXSYxKT09MCk/KHQ9Y1sxOTEzMj4+Ml18MCwodHwwKSE9MCk6MCl7dm4odCl9aWYoISgoYVsxOTExMj4+MF0mMSk9PTApPyhzPWNbMTkxMjA+PjJdfDAsKHN8MCkhPTApOjApe3ZuKHMpfWlmKCEoKGFbMTkxMDA+PjBdJjEpPT0wKT8ocj1jWzE5MTA4Pj4yXXwwLChyfDApIT0wKTowKXt2bihyKX1pZighKChhWzE5MDg4Pj4wXSYxKT09MCk/KGQ9Y1sxOTA5Nj4+Ml18MCwoZHwwKSE9MCk6MCl7dm4oZCl9aWYoISgoYVsxOTA3Nj4+MF0mMSk9PTApPyhwPWNbMTkwODQ+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMTkwNjQ+PjBdJjEpPT0wKT8obz1jWzE5MDcyPj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzE5MDUyPj4wXSYxKT09MCk/KG49Y1sxOTA2MD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsxOTA0MD4+MF0mMSk9PTApPyhtPWNbMTkwNDg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMTkwMjg+PjBdJjEpPT0wKT8obD1jWzE5MDM2Pj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzE5MDE2Pj4wXSYxKT09MCk/KGs9Y1sxOTAyND4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsxOTAwND4+MF0mMSk9PTApPyhqPWNbMTkwMTI+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMTg5OTI+PjBdJjEpPT0wKT8oaD1jWzE5ZTM+PjJdfDAsKGh8MCkhPTApOjApe3ZuKGgpfWlmKCEoKGFbMTg5ODA+PjBdJjEpPT0wKT8oZz1jWzE4OTg4Pj4yXXwwLChnfDApIT0wKTowKXt2bihnKX1pZighKChhWzE4OTY4Pj4wXSYxKT09MCk/KGY9Y1sxODk3Nj4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9aWYoISgoYVsxODk1Nj4+MF0mMSk9PTApPyhlPWNbMTg5NjQ+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWlmKCEoKGFbMTg5NDQ+PjBdJjEpPT0wKT8ocT1jWzE4OTUyPj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1kb3tpZighKChhWzE4OTMyPj4wXSYxKT09MCkpe2Q9Y1sxODk0MD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg5MjA+PjBdJjEpPT0wKSl7ZD1jWzE4OTI4Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODkwOD4+MF0mMSk9PTApKXtkPWNbMTg5MTY+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4ODk2Pj4wXSYxKT09MCkpe2Q9Y1sxODkwND4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg4ODQ+PjBdJjEpPT0wKSl7ZD1jWzE4ODkyPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7aWYoKGFbMTg4NzJdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1sxODg4MD4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFJtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDtiPWk7aWYoISgoYVsxOTk4OD4+MF0mMSk9PTApPyh2PWNbMTk5OTY+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbMTk5NzY+PjBdJjEpPT0wKT8odT1jWzE5OTg0Pj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhWzE5OTY0Pj4wXSYxKT09MCk/KHQ9Y1sxOTk3Mj4+Ml18MCwodHwwKSE9MCk6MCl7dm4odCl9aWYoISgoYVsxOTk1Mj4+MF0mMSk9PTApPyhzPWNbMTk5NjA+PjJdfDAsKHN8MCkhPTApOjApe3ZuKHMpfWlmKCEoKGFbMTk5NDA+PjBdJjEpPT0wKT8ocj1jWzE5OTQ4Pj4yXXwwLChyfDApIT0wKTowKXt2bihyKX1pZighKChhWzE5OTI4Pj4wXSYxKT09MCk/KGQ9Y1sxOTkzNj4+Ml18MCwoZHwwKSE9MCk6MCl7dm4oZCl9aWYoISgoYVsxOTkxNj4+MF0mMSk9PTApPyhwPWNbMTk5MjQ+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMTk5MDQ+PjBdJjEpPT0wKT8obz1jWzE5OTEyPj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzE5ODkyPj4wXSYxKT09MCk/KG49Y1sxOTkwMD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsxOTg4MD4+MF0mMSk9PTApPyhtPWNbMTk4ODg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMTk4Njg+PjBdJjEpPT0wKT8obD1jWzE5ODc2Pj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzE5ODU2Pj4wXSYxKT09MCk/KGs9Y1sxOTg2ND4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsxOTg0ND4+MF0mMSk9PTApPyhqPWNbMTk4NTI+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMTk4MzI+PjBdJjEpPT0wKT8oaD1jWzE5ODQwPj4yXXwwLChofDApIT0wKTowKXt2bihoKX1pZighKChhWzE5ODIwPj4wXSYxKT09MCk/KGc9Y1sxOTgyOD4+Ml18MCwoZ3wwKSE9MCk6MCl7dm4oZyl9aWYoISgoYVsxOTgwOD4+MF0mMSk9PTApPyhmPWNbMTk4MTY+PjJdfDAsKGZ8MCkhPTApOjApe3ZuKGYpfWlmKCEoKGFbMTk3OTY+PjBdJjEpPT0wKT8oZT1jWzE5ODA0Pj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pZighKChhWzE5Nzg0Pj4wXSYxKT09MCk/KHE9Y1sxOTc5Mj4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9ZG97aWYoISgoYVsxOTc3Mj4+MF0mMSk9PTApKXtkPWNbMTk3ODA+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE5NzYwPj4wXSYxKT09MCkpe2Q9Y1sxOTc2OD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTk3NDg+PjBdJjEpPT0wKSl7ZD1jWzE5NzU2Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxOTczNj4+MF0mMSk9PTApKXtkPWNbMTk3NDQ+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE5NzI0Pj4wXSYxKT09MCkpe2Q9Y1sxOTczMj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2lmKChhWzE5NzEyXSYxKT09MCl7aT1iO3JldHVybn1kPWNbMTk3MjA+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59dm4oZCk7aT1iO3JldHVybn1mdW5jdGlvbiBTbShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO2I9aTtpZighKChhWzIwMzgwPj4wXSYxKT09MCk/KHE9Y1syMDM4OD4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9aWYoISgoYVsyMDM2OD4+MF0mMSk9PTApPyhwPWNbMjAzNzY+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMjAzNTY+PjBdJjEpPT0wKT8obz1jWzIwMzY0Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzIwMzQ0Pj4wXSYxKT09MCk/KG49Y1syMDM1Mj4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsyMDMzMj4+MF0mMSk9PTApPyhtPWNbMjAzNDA+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMjAzMjA+PjBdJjEpPT0wKT8oZD1jWzIwMzI4Pj4yXXwwLChkfDApIT0wKTowKXt2bihkKX1pZighKChhWzIwMzA4Pj4wXSYxKT09MCk/KGw9Y1syMDMxNj4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoISgoYVsyMDI5Nj4+MF0mMSk9PTApPyhrPWNbMjAzMDQ+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKCEoKGFbMjAyODQ+PjBdJjEpPT0wKT8oaj1jWzIwMjkyPj4yXXwwLChqfDApIT0wKTowKXt2bihqKX1pZighKChhWzIwMjcyPj4wXSYxKT09MCk/KGg9Y1syMDI4MD4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9aWYoISgoYVsyMDI2MD4+MF0mMSk9PTApPyhnPWNbMjAyNjg+PjJdfDAsKGd8MCkhPTApOjApe3ZuKGcpfWlmKCEoKGFbMjAyNDg+PjBdJjEpPT0wKT8oZj1jWzIwMjU2Pj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1pZighKChhWzIwMjM2Pj4wXSYxKT09MCk/KGU9Y1syMDI0ND4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9aWYoKGFbMjAyMjRdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1syMDIzMj4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFRtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7Yj1pO2lmKCEoKGFbMjA5MTY+PjBdJjEpPT0wKT8ocT1jWzIwOTI0Pj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1pZighKChhWzIwOTA0Pj4wXSYxKT09MCk/KHA9Y1syMDkxMj4+Ml18MCwocHwwKSE9MCk6MCl7dm4ocCl9aWYoISgoYVsyMDg5Mj4+MF0mMSk9PTApPyhvPWNbMjA5MDA+PjJdfDAsKG98MCkhPTApOjApe3ZuKG8pfWlmKCEoKGFbMjA4ODA+PjBdJjEpPT0wKT8obj1jWzIwODg4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhWzIwODY4Pj4wXSYxKT09MCk/KG09Y1syMDg3Nj4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoISgoYVsyMDg1Nj4+MF0mMSk9PTApPyhkPWNbMjA4NjQ+PjJdfDAsKGR8MCkhPTApOjApe3ZuKGQpfWlmKCEoKGFbMjA4NDQ+PjBdJjEpPT0wKT8obD1jWzIwODUyPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzIwODMyPj4wXSYxKT09MCk/KGs9Y1syMDg0MD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsyMDgyMD4+MF0mMSk9PTApPyhqPWNbMjA4Mjg+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMjA4MDg+PjBdJjEpPT0wKT8oaD1jWzIwODE2Pj4yXXwwLChofDApIT0wKTowKXt2bihoKX1pZighKChhWzIwNzk2Pj4wXSYxKT09MCk/KGc9Y1syMDgwND4+Ml18MCwoZ3wwKSE9MCk6MCl7dm4oZyl9aWYoISgoYVsyMDc4ND4+MF0mMSk9PTApPyhmPWNbMjA3OTI+PjJdfDAsKGZ8MCkhPTApOjApe3ZuKGYpfWlmKCEoKGFbMjA3NzI+PjBdJjEpPT0wKT8oZT1jWzIwNzgwPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pZigoYVsyMDc2MF0mMSk9PTApe2k9YjtyZXR1cm59ZD1jWzIwNzY4Pj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gVW0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7Zz1pO2k9aSsxNnwwO2g9ZztjW2g+PjJdPWI7Zj0oZnwwKT09MD8yMTI4ODpmO2o9Y1tmPj4yXXwwO2E6ZG97aWYoKGR8MCk9PTApe2lmKChqfDApPT0wKXtrPTA7aT1nO3JldHVybiBrfDB9fWVsc2V7aWYoKGJ8MCk9PTApe2NbaD4+Ml09aH1lbHNle2g9Yn1pZigoZXwwKT09MCl7az0tMjtpPWc7cmV0dXJuIGt8MH1kb3tpZigoanwwKT09MCl7Yj1hW2Q+PjBdfDA7aj1iJjI1NTtpZihiPDwyND4+MjQ+LTEpe2NbaD4+Ml09ajtrPWI8PDI0Pj4yNCE9MCYxO2k9ZztyZXR1cm4ga3wwfWVsc2V7aj1qKyAtMTk0fDA7aWYoaj4+PjA+NTApe2JyZWFrIGF9Yj1lKyAtMXwwO2o9Y1syMTA3Misoajw8Mik+PjJdfDA7ZD1kKzF8MDticmVha319ZWxzZXtiPWV9fXdoaWxlKDApO2I6ZG97aWYoKGJ8MCkhPTApe2s9YVtkPj4wXXwwO2w9KGsmMjU1KT4+PjM7aWYoKGwrIC0xNnxsKyhqPj4yNikpPj4+MD43KXticmVhayBhfXdoaWxlKDEpe2Q9ZCsxfDA7aj0oayYyNTUpKyAtMTI4fGo8PDY7Yj1iKyAtMXwwO2lmKChqfDApPj0wKXticmVha31pZigoYnwwKT09MCl7YnJlYWsgYn1rPWFbZD4+MF18MDtpZigoKGsmMjU1KSsgLTEyOHwwKT4+PjA+NjMpe2JyZWFrIGF9fWNbZj4+Ml09MDtjW2g+PjJdPWo7bD1lLWJ8MDtpPWc7cmV0dXJuIGx8MH19d2hpbGUoMCk7Y1tmPj4yXT1qO2w9LTI7aT1nO3JldHVybiBsfDB9fXdoaWxlKDApO2NbZj4+Ml09MDtjWyhiYigpfDApPj4yXT04NDtsPS0xO2k9ZztyZXR1cm4gbHwwfWZ1bmN0aW9uIFZtKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO2g9aTtrPWNbZT4+Ml18MDtpZigoZ3wwKSE9MD8obD1jW2c+PjJdfDAsKGx8MCkhPTApOjApe2lmKChifDApPT0wKXtqPWY7Zz0xNn1lbHNle2NbZz4+Ml09MDtqPWY7Zz0zNX19ZWxzZXtpZigoYnwwKT09MCl7aj1mO2c9N31lbHNle2o9ZjtnPTZ9fWE6d2hpbGUoMSl7aWYoKGd8MCk9PTYpe2lmKChqfDApPT0wKXtnPTUzO2JyZWFrfXdoaWxlKDEpe2c9YVtrPj4wXXwwO2I6ZG97aWYoKChnJjI1NSkrIC0xfDApPj4+MDwxMjc/KGsmM3wwKT09MCZqPj4+MD4zOjApe2Rve2c9Y1trPj4yXXwwO2lmKCgoZysgLTE2ODQzMDA5fGcpJi0yMTM5MDYyMTQ0fDApIT0wKXtnPWcmMjU1O2JyZWFrIGJ9Y1tiPj4yXT1nJjI1NTtjW2IrND4+Ml09ZFtrKzE+PjBdfDA7Y1tiKzg+PjJdPWRbaysyPj4wXXwwO2w9aztrPWsrNHwwO209YjtiPWIrMTZ8MDtjW20rMTI+PjJdPWRbbCszPj4wXXwwO2o9aisgLTR8MH13aGlsZShqPj4+MD4zKTtnPWFbaz4+MF18MH19d2hpbGUoMCk7bD1nJjI1NTtpZighKChsKyAtMXwwKT4+PjA8MTI3KSl7YnJlYWt9Y1tiPj4yXT1sO2o9aisgLTF8MDtpZigoanwwKT09MCl7Zz01MzticmVhayBhfWVsc2V7Yj1iKzR8MDtrPWsrMXwwfX1sPWwrIC0xOTR8MDtpZihsPj4+MD41MCl7bD1nO2c9NDc7YnJlYWt9bD1jWzIxMDcyKyhsPDwyKT4+Ml18MDtrPWsrMXwwO2c9MzU7Y29udGludWV9ZWxzZSBpZigoZ3wwKT09Nyl7bD1hW2s+PjBdfDA7aWYoKChsJjI1NSkrIC0xfDApPj4+MDwxMjc/KGsmM3wwKT09MDowKXtsPWNbaz4+Ml18MDtpZigoKGwrIC0xNjg0MzAwOXxsKSYtMjEzOTA2MjE0NHwwKT09MCl7ZG97az1rKzR8MDtqPWorIC00fDA7bD1jW2s+PjJdfDB9d2hpbGUoKChsKyAtMTY4NDMwMDl8bCkmLTIxMzkwNjIxNDR8MCk9PTApfWc9bCYyNTU7bD1sJjI1NX1lbHNle2c9bH1sPWwmMjU1O2lmKChsKyAtMXwwKT4+PjA8MTI3KXtqPWorIC0xfDA7az1rKzF8MDtnPTc7Y29udGludWV9bD1sKyAtMTk0fDA7aWYobD4+PjA+NTApe2w9ZztnPTQ3O2JyZWFrfWw9Y1syMTA3MisobDw8Mik+PjJdfDA7az1rKzF8MDtnPTE2O2NvbnRpbnVlfWVsc2UgaWYoKGd8MCk9PTE2KXttPShkW2s+PjBdfDApPj4+MztpZigobSsgLTE2fG0rKGw+PjI2KSk+Pj4wPjcpe2c9MTc7YnJlYWt9Zz1rKzF8MDtpZigobCYzMzU1NDQzMnwwKSE9MCl7aWYoKChkW2c+PjBdfDApKyAtMTI4fDApPj4+MD42Myl7Zz0yMDticmVha31nPWsrMnwwO2lmKChsJjUyNDI4OHwwKT09MCl7az1nfWVsc2V7aWYoKChkW2c+PjBdfDApKyAtMTI4fDApPj4+MD42Myl7Zz0yMzticmVha31rPWsrM3wwfX1lbHNle2s9Z31qPWorIC0xfDA7Zz03O2NvbnRpbnVlfWVsc2UgaWYoKGd8MCk9PTM1KXttPWRbaz4+MF18MDtnPW0+Pj4zO2lmKChnKyAtMTZ8ZysobD4+MjYpKT4+PjA+Nyl7Zz0zNjticmVha31nPWsrMXwwO2w9bSsgLTEyOHxsPDw2O2lmKChsfDApPDApe209KGRbZz4+MF18MCkrIC0xMjh8MDtpZihtPj4+MD42Myl7Zz0zOTticmVha31nPWsrMnwwO2w9bXxsPDw2O2lmKChsfDApPDApe2c9KGRbZz4+MF18MCkrIC0xMjh8MDtpZihnPj4+MD42Myl7Zz00MjticmVha31sPWd8bDw8NjtrPWsrM3wwfWVsc2V7az1nfX1lbHNle2s9Z31jW2I+PjJdPWw7Yj1iKzR8MDtqPWorIC0xfDA7Zz02O2NvbnRpbnVlfX1pZigoZ3wwKT09MTcpe2s9aysgLTF8MDtnPTQ1fWVsc2UgaWYoKGd8MCk9PTIwKXtrPWsrIC0xfDA7Zz00NX1lbHNlIGlmKChnfDApPT0yMyl7az1rKyAtMXwwO2c9NDV9ZWxzZSBpZigoZ3wwKT09MzYpe2s9aysgLTF8MDtnPTQ1fWVsc2UgaWYoKGd8MCk9PTM5KXtrPWsrIC0xfDA7Zz00NX1lbHNlIGlmKChnfDApPT00Mil7az1rKyAtMXwwO2c9NDV9ZWxzZSBpZigoZ3wwKT09NTMpe2k9aDtyZXR1cm4gZnwwfWlmKChnfDApPT00NSl7aWYoKGx8MCk9PTApe2w9YVtrPj4wXXwwO2c9NDd9fWlmKChnfDApPT00Nyl7aWYobDw8MjQ+PjI0PT0wKXtpZigoYnwwKSE9MCl7Y1tiPj4yXT0wO2NbZT4+Ml09MH1tPWYtanwwO2k9aDtyZXR1cm4gbXwwfX1jWyhiYigpfDApPj4yXT04NDtpZigoYnwwKT09MCl7bT0tMTtpPWg7cmV0dXJuIG18MH1jW2U+PjJdPWs7bT0tMTtpPWg7cmV0dXJuIG18MH1mdW5jdGlvbiBXbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT1pO2lmKChifDApPT0wKXtiPTE7aT1lO3JldHVybiBifDB9aWYoZD4+PjA8MTI4KXthW2I+PjBdPWQ7Yj0xO2k9ZTtyZXR1cm4gYnwwfWlmKGQ+Pj4wPDIwNDgpe2FbYj4+MF09ZD4+PjZ8MTkyO2FbYisxPj4wXT1kJjYzfDEyODtiPTI7aT1lO3JldHVybiBifDB9aWYoZD4+PjA8NTUyOTZ8KGQrIC01NzM0NHwwKT4+PjA8ODE5Mil7YVtiPj4wXT1kPj4+MTJ8MjI0O2FbYisxPj4wXT1kPj4+NiY2M3wxMjg7YVtiKzI+PjBdPWQmNjN8MTI4O2I9MztpPWU7cmV0dXJuIGJ8MH1pZigoZCsgLTY1NTM2fDApPj4+MDwxMDQ4NTc2KXthW2I+PjBdPWQ+Pj4xOHwyNDA7YVtiKzE+PjBdPWQ+Pj4xMiY2M3wxMjg7YVtiKzI+PjBdPWQ+Pj42JjYzfDEyODthW2IrMz4+MF09ZCY2M3wxMjg7Yj00O2k9ZTtyZXR1cm4gYnwwfWVsc2V7Y1soYmIoKXwwKT4+Ml09ODQ7Yj0tMTtpPWU7cmV0dXJuIGJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBYbShhKXthPWF8MDt2YXIgYj0wO2I9aTtSYihhfDApO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFltKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBabShhKXthPWF8MDtyZXR1cm4gMjEzMjB9ZnVuY3Rpb24gX20oYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uICRtKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBhbihhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gYm4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gY24oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZG4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZW4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZm4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZ24oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybihhfDApPT0oYnwwKXwwfWZ1bmN0aW9uIGhuKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrNjR8MDtmPWU7aWYoKGF8MCk9PShifDApKXtoPTE7aT1lO3JldHVybiBofDB9aWYoKGJ8MCk9PTApe2g9MDtpPWU7cmV0dXJuIGh8MH1iPW5uKGIsMjE0ODgpfDA7aWYoKGJ8MCk9PTApe2g9MDtpPWU7cmV0dXJuIGh8MH1oPWYrMHwwO2c9aCs1NnwwO2Rve2NbaD4+Ml09MDtoPWgrNHwwfXdoaWxlKChofDApPChnfDApKTtjW2Y+PjJdPWI7Y1tmKzg+PjJdPWE7Y1tmKzEyPj4yXT0tMTtjW2YrNDg+PjJdPTE7emNbY1soY1tiPj4yXXwwKSsyOD4+Ml0mMzFdKGIsZixjW2Q+PjJdfDAsMSk7aWYoKGNbZisyND4+Ml18MCkhPTEpe2g9MDtpPWU7cmV0dXJuIGh8MH1jW2Q+PjJdPWNbZisxNj4+Ml07aD0xO2k9ZTtyZXR1cm4gaHwwfWZ1bmN0aW9uIGpuKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wO2c9aTtpZigoY1tkKzg+PjJdfDApIT0oYnwwKSl7aT1nO3JldHVybn1iPWQrMTZ8MDtoPWNbYj4+Ml18MDtpZigoaHwwKT09MCl7Y1tiPj4yXT1lO2NbZCsyND4+Ml09ZjtjW2QrMzY+PjJdPTE7aT1nO3JldHVybn1pZigoaHwwKSE9KGV8MCkpe2g9ZCszNnwwO2NbaD4+Ml09KGNbaD4+Ml18MCkrMTtjW2QrMjQ+PjJdPTI7YVtkKzU0Pj4wXT0xO2k9ZztyZXR1cm59ZT1kKzI0fDA7aWYoKGNbZT4+Ml18MCkhPTIpe2k9ZztyZXR1cm59Y1tlPj4yXT1mO2k9ZztyZXR1cm59ZnVuY3Rpb24ga24oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTA7Zz1pO2lmKChifDApIT0oY1tkKzg+PjJdfDApKXtoPWNbYis4Pj4yXXwwO3pjW2NbKGNbaD4+Ml18MCkrMjg+PjJdJjMxXShoLGQsZSxmKTtpPWc7cmV0dXJufWI9ZCsxNnwwO2g9Y1tiPj4yXXwwO2lmKChofDApPT0wKXtjW2I+PjJdPWU7Y1tkKzI0Pj4yXT1mO2NbZCszNj4+Ml09MTtpPWc7cmV0dXJufWlmKChofDApIT0oZXwwKSl7aD1kKzM2fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2NbZCsyND4+Ml09MjthW2QrNTQ+PjBdPTE7aT1nO3JldHVybn1lPWQrMjR8MDtpZigoY1tlPj4yXXwwKSE9Mil7aT1nO3JldHVybn1jW2U+PjJdPWY7aT1nO3JldHVybn1mdW5jdGlvbiBsbihiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2lmKChifDApPT0oY1tkKzg+PjJdfDApKXtiPWQrMTZ8MDtoPWNbYj4+Ml18MDtpZigoaHwwKT09MCl7Y1tiPj4yXT1lO2NbZCsyND4+Ml09ZjtjW2QrMzY+PjJdPTE7aT1nO3JldHVybn1pZigoaHwwKSE9KGV8MCkpe2w9ZCszNnwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtjW2QrMjQ+PjJdPTI7YVtkKzU0Pj4wXT0xO2k9ZztyZXR1cm59ZT1kKzI0fDA7aWYoKGNbZT4+Ml18MCkhPTIpe2k9ZztyZXR1cm59Y1tlPj4yXT1mO2k9ZztyZXR1cm59aj1jW2IrMTI+PjJdfDA7aD1iKyhqPDwzKSsxNnwwO2s9Y1tiKzIwPj4yXXwwO2w9az4+ODtpZigoayYxfDApIT0wKXtsPWNbKGNbZT4+Ml18MCkrbD4+Ml18MH1tPWNbYisxNj4+Ml18MDt6Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSYzMV0obSxkLGUrbHwwLChrJjJ8MCkhPTA/ZjoyKTtpZigoanwwKTw9MSl7aT1nO3JldHVybn1qPWQrNTR8MDtrPWIrMjR8MDt3aGlsZSgxKXtiPWNbays0Pj4yXXwwO2w9Yj4+ODtpZigoYiYxfDApIT0wKXtsPWNbKGNbZT4+Ml18MCkrbD4+Ml18MH1tPWNbaz4+Ml18MDt6Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSYzMV0obSxkLGUrbHwwLChiJjJ8MCkhPTA/ZjoyKTtpZigoYVtqPj4wXXwwKSE9MCl7Zj0xNjticmVha31rPWsrOHwwO2lmKCEoaz4+PjA8aD4+PjApKXtmPTE2O2JyZWFrfX1pZigoZnwwKT09MTYpe2k9ZztyZXR1cm59fWZ1bmN0aW9uIG1uKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2k9aSs2NHwwO2g9ZTtjW2Q+PjJdPWNbY1tkPj4yXT4+Ml07aWYoISgoYXwwKT09KGJ8MCl8KGJ8MCk9PTIxNzkyKSl7aWYoKChifDApIT0wPyhrPW5uKGIsMjE2MDApfDAsKGt8MCkhPTApOjApPyhjW2srOD4+Ml0mfmNbYSs4Pj4yXXwwKT09MDowKXtiPWNbYSsxMj4+Ml18MDtrPWsrMTJ8MDtpZighKChifDApPT0yMTc3Nj8xOihifDApPT0oY1trPj4yXXwwKSkpe2lmKCgoKGJ8MCkhPTA/KGc9bm4oYiwyMTQ4OCl8MCwoZ3wwKSE9MCk6MCk/KGo9Y1trPj4yXXwwLChqfDApIT0wKTowKT8oZj1ubihqLDIxNDg4KXwwLChmfDApIT0wKTowKXtrPWgrMHwwO2o9ays1NnwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChqfDApKTtjW2g+PjJdPWY7Y1toKzg+PjJdPWc7Y1toKzEyPj4yXT0tMTtjW2grNDg+PjJdPTE7emNbY1soY1tmPj4yXXwwKSsyOD4+Ml0mMzFdKGYsaCxjW2Q+PjJdfDAsMSk7aWYoKGNbaCsyND4+Ml18MCk9PTEpe2NbZD4+Ml09Y1toKzE2Pj4yXTtkPTF9ZWxzZXtkPTB9fWVsc2V7ZD0wfX1lbHNle2Q9MX19ZWxzZXtkPTB9fWVsc2V7ZD0xfWk9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIG5uKGQsZSl7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO2Y9aTtpPWkrNjR8MDttPWY7Zz1jW2Q+PjJdfDA7aD1kKyhjW2crIC04Pj4yXXwwKXwwO2c9Y1tnKyAtND4+Ml18MDtjW20+PjJdPWU7Y1ttKzQ+PjJdPWQ7Y1ttKzg+PjJdPTIxNDMyO3A9bSsxMnwwO249bSsxNnwwO289bSsyMHwwO2o9bSsyNHwwO2Q9bSsyOHwwO2s9bSszMnwwO2w9bSs0MHwwO3I9KGd8MCk9PShlfDApO2U9cCswfDA7cT1lKzQwfDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KHF8MCkpO2JbcCs0MD4+MV09MDthW3ArNDI+PjBdPTA7ZG97aWYocil7Y1ttKzQ4Pj4yXT0xO3djW2NbKGNbZz4+Ml18MCkrMjA+PjJdJjYzXShnLG0saCxoLDEsMCk7ZD0oY1tqPj4yXXwwKT09MT9oOjB9ZWxzZXtqY1tjWyhjW2c+PjJdfDApKzI0Pj4yXSYzMV0oZyxtLGgsMSwwKTtnPWNbbSszNj4+Ml18MDtpZigoZ3wwKT09MCl7aWYoKGNbbD4+Ml18MCkhPTEpe2Q9MDticmVha31pZigoY1tkPj4yXXwwKSE9MSl7ZD0wO2JyZWFrfWQ9KGNbaz4+Ml18MCk9PTE/Y1tvPj4yXXwwOjA7YnJlYWt9ZWxzZSBpZigoZ3wwKSE9MSl7ZD0wO2JyZWFrfWlmKChjW2o+PjJdfDApIT0xKXtpZigoY1tsPj4yXXwwKSE9MCl7ZD0wO2JyZWFrfWlmKChjW2Q+PjJdfDApIT0xKXtkPTA7YnJlYWt9aWYoKGNbaz4+Ml18MCkhPTEpe2Q9MDticmVha319ZD1jW24+PjJdfDB9fXdoaWxlKDApO2k9ZjtyZXR1cm4gZHwwfWZ1bmN0aW9uIG9uKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtoPWk7aWYoKGJ8MCk9PShjW2QrOD4+Ml18MCkpe2lmKChjW2QrND4+Ml18MCkhPShlfDApKXtpPWg7cmV0dXJufWU9ZCsyOHwwO2lmKChjW2U+PjJdfDApPT0xKXtpPWg7cmV0dXJufWNbZT4+Ml09ZjtpPWg7cmV0dXJufWlmKChifDApPT0oY1tkPj4yXXwwKSl7aWYoKGNbZCsxNj4+Ml18MCkhPShlfDApPyhsPWQrMjB8MCwoY1tsPj4yXXwwKSE9KGV8MCkpOjApe2NbZCszMj4+Ml09ZjtrPWQrNDR8MDtpZigoY1trPj4yXXwwKT09NCl7aT1oO3JldHVybn13PWNbYisxMj4+Ml18MDtwPWIrKHc8PDMpKzE2fDA7YTpkb3tpZigod3wwKT4wKXtuPWQrNTJ8MDtxPWQrNTN8MDtvPWQrNTR8MDt0PWIrOHwwO3I9ZCsyNHwwO3U9MDtzPTA7Yj1iKzE2fDA7Yjpkb3thW24+PjBdPTA7YVtxPj4wXT0wO3Y9Y1tiKzQ+PjJdfDA7dz12Pj44O2lmKCh2JjF8MCkhPTApe3c9Y1soY1tlPj4yXXwwKSt3Pj4yXXwwfXg9Y1tiPj4yXXwwO3djW2NbKGNbeD4+Ml18MCkrMjA+PjJdJjYzXSh4LGQsZSxlK3d8MCwyLSh2Pj4+MSYxKXwwLGcpO2lmKChhW28+PjBdfDApIT0wKXticmVha31kb3tpZigoYVtxPj4wXXwwKSE9MCl7aWYoKGFbbj4+MF18MCk9PTApe2lmKChjW3Q+PjJdJjF8MCk9PTApe3M9MTticmVhayBifWVsc2V7cz0xO2JyZWFrfX1pZigoY1tyPj4yXXwwKT09MSl7Yj0yNzticmVhayBhfWlmKChjW3Q+PjJdJjJ8MCk9PTApe2I9Mjc7YnJlYWsgYX1lbHNle3U9MTtzPTF9fX13aGlsZSgwKTtiPWIrOHwwfXdoaWxlKGI+Pj4wPHA+Pj4wKTtpZih1KXtqPXM7Yj0yNn1lbHNle209cztiPTIzfX1lbHNle209MDtiPTIzfX13aGlsZSgwKTtpZigoYnwwKT09MjMpe2NbbD4+Ml09ZTt4PWQrNDB8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoKGNbZCszNj4+Ml18MCk9PTE/KGNbZCsyND4+Ml18MCk9PTI6MCl7YVtkKzU0Pj4wXT0xO2lmKG0pe2I9Mjd9ZWxzZXtiPTI4fX1lbHNle2o9bTtiPTI2fX1pZigoYnwwKT09MjYpe2lmKGope2I9Mjd9ZWxzZXtiPTI4fX1pZigoYnwwKT09Mjcpe2Nbaz4+Ml09MztpPWg7cmV0dXJufWVsc2UgaWYoKGJ8MCk9PTI4KXtjW2s+PjJdPTQ7aT1oO3JldHVybn19aWYoKGZ8MCkhPTEpe2k9aDtyZXR1cm59Y1tkKzMyPj4yXT0xO2k9aDtyZXR1cm59bT1jW2IrMTI+PjJdfDA7aj1iKyhtPDwzKSsxNnwwO2w9Y1tiKzIwPj4yXXwwO249bD4+ODtpZigobCYxfDApIT0wKXtuPWNbKGNbZT4+Ml18MCkrbj4+Ml18MH14PWNbYisxNj4+Ml18MDtqY1tjWyhjW3g+PjJdfDApKzI0Pj4yXSYzMV0oeCxkLGUrbnwwLChsJjJ8MCkhPTA/ZjoyLGcpO2w9YisyNHwwO2lmKChtfDApPD0xKXtpPWg7cmV0dXJufW09Y1tiKzg+PjJdfDA7aWYoKG0mMnwwKT09MD8oaz1kKzM2fDAsKGNbaz4+Ml18MCkhPTEpOjApe2lmKChtJjF8MCk9PTApe209ZCs1NHwwO2I9bDt3aGlsZSgxKXtpZigoYVttPj4wXXwwKSE9MCl7Yj01MzticmVha31pZigoY1trPj4yXXwwKT09MSl7Yj01MzticmVha31uPWNbYis0Pj4yXXwwO289bj4+ODtpZigobiYxfDApIT0wKXtvPWNbKGNbZT4+Ml18MCkrbz4+Ml18MH14PWNbYj4+Ml18MDtqY1tjWyhjW3g+PjJdfDApKzI0Pj4yXSYzMV0oeCxkLGUrb3wwLChuJjJ8MCkhPTA/ZjoyLGcpO2I9Yis4fDA7aWYoIShiPj4+MDxqPj4+MCkpe2I9NTM7YnJlYWt9fWlmKChifDApPT01Myl7aT1oO3JldHVybn19bj1kKzI0fDA7bz1kKzU0fDA7Yj1sO3doaWxlKDEpe2lmKChhW28+PjBdfDApIT0wKXtiPTUzO2JyZWFrfWlmKChjW2s+PjJdfDApPT0xPyhjW24+PjJdfDApPT0xOjApe2I9NTM7YnJlYWt9bT1jW2IrND4+Ml18MDtwPW0+Pjg7aWYoKG0mMXwwKSE9MCl7cD1jWyhjW2U+PjJdfDApK3A+PjJdfDB9eD1jW2I+PjJdfDA7amNbY1soY1t4Pj4yXXwwKSsyND4+Ml0mMzFdKHgsZCxlK3B8MCwobSYyfDApIT0wP2Y6MixnKTtiPWIrOHwwO2lmKCEoYj4+PjA8aj4+PjApKXtiPTUzO2JyZWFrfX1pZigoYnwwKT09NTMpe2k9aDtyZXR1cm59fWs9ZCs1NHwwO3doaWxlKDEpe2lmKChhW2s+PjBdfDApIT0wKXtiPTUzO2JyZWFrfW09Y1tsKzQ+PjJdfDA7Yj1tPj44O2lmKChtJjF8MCkhPTApe2I9Y1soY1tlPj4yXXwwKStiPj4yXXwwfXg9Y1tsPj4yXXwwO2pjW2NbKGNbeD4+Ml18MCkrMjQ+PjJdJjMxXSh4LGQsZStifDAsKG0mMnwwKSE9MD9mOjIsZyk7bD1sKzh8MDtpZighKGw+Pj4wPGo+Pj4wKSl7Yj01MzticmVha319aWYoKGJ8MCk9PTUzKXtpPWg7cmV0dXJufX1mdW5jdGlvbiBwbihiLGQsZSxmLGcpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO2g9aTtpZigoYnwwKT09KGNbZCs4Pj4yXXwwKSl7aWYoKGNbZCs0Pj4yXXwwKSE9KGV8MCkpe2k9aDtyZXR1cm59aj1kKzI4fDA7aWYoKGNbaj4+Ml18MCk9PTEpe2k9aDtyZXR1cm59Y1tqPj4yXT1mO2k9aDtyZXR1cm59aWYoKGJ8MCkhPShjW2Q+PjJdfDApKXtsPWNbYis4Pj4yXXwwO2pjW2NbKGNbbD4+Ml18MCkrMjQ+PjJdJjMxXShsLGQsZSxmLGcpO2k9aDtyZXR1cm59aWYoKGNbZCsxNj4+Ml18MCkhPShlfDApPyhrPWQrMjB8MCwoY1trPj4yXXwwKSE9KGV8MCkpOjApe2NbZCszMj4+Ml09ZjtmPWQrNDR8MDtpZigoY1tmPj4yXXwwKT09NCl7aT1oO3JldHVybn1sPWQrNTJ8MDthW2w+PjBdPTA7bT1kKzUzfDA7YVttPj4wXT0wO2I9Y1tiKzg+PjJdfDA7d2NbY1soY1tiPj4yXXwwKSsyMD4+Ml0mNjNdKGIsZCxlLGUsMSxnKTtpZigoYVttPj4wXXwwKSE9MCl7aWYoKGFbbD4+MF18MCk9PTApe2I9MTtqPTEzfX1lbHNle2I9MDtqPTEzfWRve2lmKChqfDApPT0xMyl7Y1trPj4yXT1lO209ZCs0MHwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtpZigoY1tkKzM2Pj4yXXwwKT09MT8oY1tkKzI0Pj4yXXwwKT09MjowKXthW2QrNTQ+PjBdPTE7aWYoYil7YnJlYWt9fWVsc2V7aj0xNn1pZigoanwwKT09MTY/YjowKXticmVha31jW2Y+PjJdPTQ7aT1oO3JldHVybn19d2hpbGUoMCk7Y1tmPj4yXT0zO2k9aDtyZXR1cm59aWYoKGZ8MCkhPTEpe2k9aDtyZXR1cm59Y1tkKzMyPj4yXT0xO2k9aDtyZXR1cm59ZnVuY3Rpb24gcW4oYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wO2c9aTtpZigoY1tkKzg+PjJdfDApPT0oYnwwKSl7aWYoKGNbZCs0Pj4yXXwwKSE9KGV8MCkpe2k9ZztyZXR1cm59ZD1kKzI4fDA7aWYoKGNbZD4+Ml18MCk9PTEpe2k9ZztyZXR1cm59Y1tkPj4yXT1mO2k9ZztyZXR1cm59aWYoKGNbZD4+Ml18MCkhPShifDApKXtpPWc7cmV0dXJufWlmKChjW2QrMTY+PjJdfDApIT0oZXwwKT8oaD1kKzIwfDAsKGNbaD4+Ml18MCkhPShlfDApKTowKXtjW2QrMzI+PjJdPWY7Y1toPj4yXT1lO2I9ZCs0MHwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrMTtpZigoY1tkKzM2Pj4yXXwwKT09MT8oY1tkKzI0Pj4yXXwwKT09MjowKXthW2QrNTQ+PjBdPTF9Y1tkKzQ0Pj4yXT00O2k9ZztyZXR1cm59aWYoKGZ8MCkhPTEpe2k9ZztyZXR1cm59Y1tkKzMyPj4yXT0xO2k9ZztyZXR1cm59ZnVuY3Rpb24gcm4oYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtqPWk7aWYoKGJ8MCkhPShjW2QrOD4+Ml18MCkpe209ZCs1MnwwO2w9YVttPj4wXXwwO289ZCs1M3wwO249YVtvPj4wXXwwO3E9Y1tiKzEyPj4yXXwwO2s9YisocTw8MykrMTZ8MDthW20+PjBdPTA7YVtvPj4wXT0wO3A9Y1tiKzIwPj4yXXwwO3I9cD4+ODtpZigocCYxfDApIT0wKXtyPWNbKGNbZj4+Ml18MCkrcj4+Ml18MH10PWNbYisxNj4+Ml18MDt3Y1tjWyhjW3Q+PjJdfDApKzIwPj4yXSY2M10odCxkLGUsZityfDAsKHAmMnwwKSE9MD9nOjIsaCk7YTpkb3tpZigocXwwKT4xKXtxPWQrMjR8MDtwPWIrOHwwO3I9ZCs1NHwwO2I9YisyNHwwO2Rve2lmKChhW3I+PjBdfDApIT0wKXticmVhayBhfWlmKChhW20+PjBdfDApPT0wKXtpZigoYVtvPj4wXXwwKSE9MD8oY1twPj4yXSYxfDApPT0wOjApe2JyZWFrIGF9fWVsc2V7aWYoKGNbcT4+Ml18MCk9PTEpe2JyZWFrIGF9aWYoKGNbcD4+Ml0mMnwwKT09MCl7YnJlYWsgYX19YVttPj4wXT0wO2Fbbz4+MF09MDtzPWNbYis0Pj4yXXwwO3Q9cz4+ODtpZigocyYxfDApIT0wKXt0PWNbKGNbZj4+Ml18MCkrdD4+Ml18MH11PWNbYj4+Ml18MDt3Y1tjWyhjW3U+PjJdfDApKzIwPj4yXSY2M10odSxkLGUsZit0fDAsKHMmMnwwKSE9MD9nOjIsaCk7Yj1iKzh8MH13aGlsZShiPj4+MDxrPj4+MCl9fXdoaWxlKDApO2FbbT4+MF09bDthW28+PjBdPW47aT1qO3JldHVybn1hW2QrNTM+PjBdPTE7aWYoKGNbZCs0Pj4yXXwwKSE9KGZ8MCkpe2k9ajtyZXR1cm59YVtkKzUyPj4wXT0xO2s9ZCsxNnwwO2Y9Y1trPj4yXXwwO2lmKChmfDApPT0wKXtjW2s+PjJdPWU7Y1tkKzI0Pj4yXT1nO2NbZCszNj4+Ml09MTtpZighKChnfDApPT0xPyhjW2QrNDg+PjJdfDApPT0xOjApKXtpPWo7cmV0dXJufWFbZCs1ND4+MF09MTtpPWo7cmV0dXJufWlmKChmfDApIT0oZXwwKSl7dT1kKzM2fDA7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxO2FbZCs1ND4+MF09MTtpPWo7cmV0dXJufWU9ZCsyNHwwO2s9Y1tlPj4yXXwwO2lmKChrfDApPT0yKXtjW2U+PjJdPWd9ZWxzZXtnPWt9aWYoISgoZ3wwKT09MT8oY1tkKzQ4Pj4yXXwwKT09MTowKSl7aT1qO3JldHVybn1hW2QrNTQ+PjBdPTE7aT1qO3JldHVybn1mdW5jdGlvbiBzbihiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MDtqPWk7aWYoKGJ8MCkhPShjW2QrOD4+Ml18MCkpe2I9Y1tiKzg+PjJdfDA7d2NbY1soY1tiPj4yXXwwKSsyMD4+Ml0mNjNdKGIsZCxlLGYsZyxoKTtpPWo7cmV0dXJufWFbZCs1Mz4+MF09MTtpZigoY1tkKzQ+PjJdfDApIT0oZnwwKSl7aT1qO3JldHVybn1hW2QrNTI+PjBdPTE7Yj1kKzE2fDA7Zj1jW2I+PjJdfDA7aWYoKGZ8MCk9PTApe2NbYj4+Ml09ZTtjW2QrMjQ+PjJdPWc7Y1tkKzM2Pj4yXT0xO2lmKCEoKGd8MCk9PTE/KGNbZCs0OD4+Ml18MCk9PTE6MCkpe2k9ajtyZXR1cm59YVtkKzU0Pj4wXT0xO2k9ajtyZXR1cm59aWYoKGZ8MCkhPShlfDApKXtoPWQrMzZ8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7YVtkKzU0Pj4wXT0xO2k9ajtyZXR1cm59ZT1kKzI0fDA7Yj1jW2U+PjJdfDA7aWYoKGJ8MCk9PTIpe2NbZT4+Ml09Z31lbHNle2c9Yn1pZighKChnfDApPT0xPyhjW2QrNDg+PjJdfDApPT0xOjApKXtpPWo7cmV0dXJufWFbZCs1ND4+MF09MTtpPWo7cmV0dXJufWZ1bmN0aW9uIHRuKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtoPWk7aWYoKGNbZCs4Pj4yXXwwKSE9KGJ8MCkpe2k9aDtyZXR1cm59YVtkKzUzPj4wXT0xO2lmKChjW2QrND4+Ml18MCkhPShmfDApKXtpPWg7cmV0dXJufWFbZCs1Mj4+MF09MTtmPWQrMTZ8MDtiPWNbZj4+Ml18MDtpZigoYnwwKT09MCl7Y1tmPj4yXT1lO2NbZCsyND4+Ml09ZztjW2QrMzY+PjJdPTE7aWYoISgoZ3wwKT09MT8oY1tkKzQ4Pj4yXXwwKT09MTowKSl7aT1oO3JldHVybn1hW2QrNTQ+PjBdPTE7aT1oO3JldHVybn1pZigoYnwwKSE9KGV8MCkpe2I9ZCszNnwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrMTthW2QrNTQ+PjBdPTE7aT1oO3JldHVybn1lPWQrMjR8MDtmPWNbZT4+Ml18MDtpZigoZnwwKT09Mil7Y1tlPj4yXT1nfWVsc2V7Zz1mfWlmKCEoKGd8MCk9PTE/KGNbZCs0OD4+Ml18MCk9PTE6MCkpe2k9aDtyZXR1cm59YVtkKzU0Pj4wXT0xO2k9aDtyZXR1cm59ZnVuY3Rpb24gdW4oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtiPWk7ZG97aWYoYT4+PjA8MjQ1KXtpZihhPj4+MDwxMSl7YT0xNn1lbHNle2E9YSsxMSYtOH12PWE+Pj4zO3A9Y1s1NTQyXXwwO3c9cD4+PnY7aWYoKHcmM3wwKSE9MCl7aD0odyYxXjEpK3Z8MDtnPWg8PDE7ZT0yMjIwOCsoZzw8Mil8MDtnPTIyMjA4KyhnKzI8PDIpfDA7aj1jW2c+PjJdfDA7ZD1qKzh8MDtmPWNbZD4+Ml18MDtkb3tpZigoZXwwKSE9KGZ8MCkpe2lmKGY+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9az1mKzEyfDA7aWYoKGNbaz4+Ml18MCk9PShqfDApKXtjW2s+PjJdPWU7Y1tnPj4yXT1mO2JyZWFrfWVsc2V7WGIoKX19ZWxzZXtjWzU1NDJdPXAmfigxPDxoKX19d2hpbGUoMCk7SD1oPDwzO2Nbais0Pj4yXT1IfDM7SD1qKyhIfDQpfDA7Y1tIPj4yXT1jW0g+PjJdfDE7SD1kO2k9YjtyZXR1cm4gSHwwfWlmKGE+Pj4wPihjWzIyMTc2Pj4yXXwwKT4+PjApe2lmKCh3fDApIT0wKXtoPTI8PHY7aD13PDx2JihofDAtaCk7aD0oaCYwLWgpKyAtMXwwO2Q9aD4+PjEyJjE2O2g9aD4+PmQ7Zj1oPj4+NSY4O2g9aD4+PmY7Zz1oPj4+MiY0O2g9aD4+Pmc7ZT1oPj4+MSYyO2g9aD4+PmU7aj1oPj4+MSYxO2o9KGZ8ZHxnfGV8aikrKGg+Pj5qKXwwO2g9ajw8MTtlPTIyMjA4KyhoPDwyKXwwO2g9MjIyMDgrKGgrMjw8Mil8MDtnPWNbaD4+Ml18MDtkPWcrOHwwO2Y9Y1tkPj4yXXwwO2Rve2lmKChlfDApIT0oZnwwKSl7aWYoZj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1rPWYrMTJ8MDtpZigoY1trPj4yXXwwKT09KGd8MCkpe2Nbaz4+Ml09ZTtjW2g+PjJdPWY7YnJlYWt9ZWxzZXtYYigpfX1lbHNle2NbNTU0Ml09cCZ+KDE8PGopfX13aGlsZSgwKTtoPWo8PDM7Zj1oLWF8MDtjW2crND4+Ml09YXwzO2U9ZythfDA7Y1tnKyhhfDQpPj4yXT1mfDE7Y1tnK2g+PjJdPWY7aD1jWzIyMTc2Pj4yXXwwO2lmKChofDApIT0wKXtnPWNbMjIxODg+PjJdfDA7az1oPj4+MztqPWs8PDE7aD0yMjIwOCsoajw8Mil8MDtsPWNbNTU0Ml18MDtrPTE8PGs7aWYoKGwma3wwKSE9MCl7aj0yMjIwOCsoaisyPDwyKXwwO2s9Y1tqPj4yXXwwO2lmKGs+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtEPWo7Qz1rfX1lbHNle2NbNTU0Ml09bHxrO0Q9MjIyMDgrKGorMjw8Mil8MDtDPWh9Y1tEPj4yXT1nO2NbQysxMj4+Ml09ZztjW2crOD4+Ml09QztjW2crMTI+PjJdPWh9Y1syMjE3Nj4+Ml09ZjtjWzIyMTg4Pj4yXT1lO0g9ZDtpPWI7cmV0dXJuIEh8MH1wPWNbMjIxNzI+PjJdfDA7aWYoKHB8MCkhPTApe2U9KHAmMC1wKSsgLTF8MDtHPWU+Pj4xMiYxNjtlPWU+Pj5HO0Y9ZT4+PjUmODtlPWU+Pj5GO0g9ZT4+PjImNDtlPWU+Pj5IO2Y9ZT4+PjEmMjtlPWU+Pj5mO2Q9ZT4+PjEmMTtkPWNbMjI0NzIrKChGfEd8SHxmfGQpKyhlPj4+ZCk8PDIpPj4yXXwwO2U9KGNbZCs0Pj4yXSYtOCktYXwwO2Y9ZDt3aGlsZSgxKXtnPWNbZisxNj4+Ml18MDtpZigoZ3wwKT09MCl7Zz1jW2YrMjA+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfX1mPShjW2crND4+Ml0mLTgpLWF8MDtIPWY+Pj4wPGU+Pj4wO2U9SD9mOmU7Zj1nO2Q9SD9nOmR9aD1jWzIyMTg0Pj4yXXwwO2lmKGQ+Pj4wPGg+Pj4wKXtYYigpfWY9ZCthfDA7aWYoIShkPj4+MDxmPj4+MCkpe1hiKCl9Zz1jW2QrMjQ+PjJdfDA7az1jW2QrMTI+PjJdfDA7ZG97aWYoKGt8MCk9PShkfDApKXtrPWQrMjB8MDtqPWNbaz4+Ml18MDtpZigoanwwKT09MCl7az1kKzE2fDA7aj1jW2s+PjJdfDA7aWYoKGp8MCk9PTApe0I9MDticmVha319d2hpbGUoMSl7bD1qKzIwfDA7bT1jW2w+PjJdfDA7aWYoKG18MCkhPTApe2o9bTtrPWw7Y29udGludWV9bT1qKzE2fDA7bD1jW20+PjJdfDA7aWYoKGx8MCk9PTApe2JyZWFrfWVsc2V7aj1sO2s9bX19aWYoaz4+PjA8aD4+PjApe1hiKCl9ZWxzZXtjW2s+PjJdPTA7Qj1qO2JyZWFrfX1lbHNle2o9Y1tkKzg+PjJdfDA7aWYoaj4+PjA8aD4+PjApe1hiKCl9aD1qKzEyfDA7aWYoKGNbaD4+Ml18MCkhPShkfDApKXtYYigpfWw9ays4fDA7aWYoKGNbbD4+Ml18MCk9PShkfDApKXtjW2g+PjJdPWs7Y1tsPj4yXT1qO0I9azticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtkb3tpZigoZ3wwKSE9MCl7aD1jW2QrMjg+PjJdfDA7aj0yMjQ3MisoaDw8Mil8MDtpZigoZHwwKT09KGNbaj4+Ml18MCkpe2Nbaj4+Ml09QjtpZigoQnwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxoKTticmVha319ZWxzZXtpZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWg9ZysxNnwwO2lmKChjW2g+PjJdfDApPT0oZHwwKSl7Y1toPj4yXT1CfWVsc2V7Y1tnKzIwPj4yXT1CfWlmKChCfDApPT0wKXticmVha319aWYoQj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW0IrMjQ+PjJdPWc7Zz1jW2QrMTY+PjJdfDA7ZG97aWYoKGd8MCkhPTApe2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW0IrMTY+PjJdPWc7Y1tnKzI0Pj4yXT1CO2JyZWFrfX19d2hpbGUoMCk7Zz1jW2QrMjA+PjJdfDA7aWYoKGd8MCkhPTApe2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW0IrMjA+PjJdPWc7Y1tnKzI0Pj4yXT1CO2JyZWFrfX19fXdoaWxlKDApO2lmKGU+Pj4wPDE2KXtIPWUrYXwwO2NbZCs0Pj4yXT1IfDM7SD1kKyhIKzQpfDA7Y1tIPj4yXT1jW0g+PjJdfDF9ZWxzZXtjW2QrND4+Ml09YXwzO2NbZCsoYXw0KT4+Ml09ZXwxO2NbZCsoZSthKT4+Ml09ZTtoPWNbMjIxNzY+PjJdfDA7aWYoKGh8MCkhPTApe2c9Y1syMjE4OD4+Ml18MDtsPWg+Pj4zO2o9bDw8MTtoPTIyMjA4KyhqPDwyKXwwO2s9Y1s1NTQyXXwwO2w9MTw8bDtpZigoayZsfDApIT0wKXtqPTIyMjA4KyhqKzI8PDIpfDA7az1jW2o+PjJdfDA7aWYoaz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle0E9ajt6PWt9fWVsc2V7Y1s1NTQyXT1rfGw7QT0yMjIwOCsoaisyPDwyKXwwO3o9aH1jW0E+PjJdPWc7Y1t6KzEyPj4yXT1nO2NbZys4Pj4yXT16O2NbZysxMj4+Ml09aH1jWzIyMTc2Pj4yXT1lO2NbMjIxODg+PjJdPWZ9SD1kKzh8MDtpPWI7cmV0dXJuIEh8MH19fWVsc2V7aWYoIShhPj4+MD40Mjk0OTY3MjMxKSl7ej1hKzExfDA7YT16Ji04O0I9Y1syMjE3Mj4+Ml18MDtpZigoQnwwKSE9MCl7QT0wLWF8MDt6PXo+Pj44O2lmKCh6fDApIT0wKXtpZihhPj4+MD4xNjc3NzIxNSl7Qz0zMX1lbHNle0c9KHorMTA0ODMyMHwwKT4+PjE2Jjg7SD16PDxHO0Y9KEgrNTIwMTkyfDApPj4+MTYmNDtIPUg8PEY7Qz0oSCsyNDU3NjB8MCk+Pj4xNiYyO0M9MTQtKEZ8R3xDKSsoSDw8Qz4+PjE1KXwwO0M9YT4+PihDKzd8MCkmMXxDPDwxfX1lbHNle0M9MH1EPWNbMjI0NzIrKEM8PDIpPj4yXXwwO2E6ZG97aWYoKER8MCk9PTApe0Y9MDt6PTB9ZWxzZXtpZigoQ3wwKT09MzEpe3o9MH1lbHNle3o9MjUtKEM+Pj4xKXwwfUY9MDtFPWE8PHo7ej0wO3doaWxlKDEpe0g9Y1tEKzQ+PjJdJi04O0c9SC1hfDA7aWYoRz4+PjA8QT4+PjApe2lmKChIfDApPT0oYXwwKSl7QT1HO0Y9RDt6PUQ7YnJlYWsgYX1lbHNle0E9Rzt6PUR9fUg9Y1tEKzIwPj4yXXwwO0Q9Y1tEKyhFPj4+MzE8PDIpKzE2Pj4yXXwwO0Y9KEh8MCk9PTB8KEh8MCk9PShEfDApP0Y6SDtpZigoRHwwKT09MCl7YnJlYWt9ZWxzZXtFPUU8PDF9fX19d2hpbGUoMCk7aWYoKEZ8MCk9PTAmKHp8MCk9PTApe0g9Mjw8QztCPUImKEh8MC1IKTtpZigoQnwwKT09MCl7YnJlYWt9SD0oQiYwLUIpKyAtMXwwO0Q9SD4+PjEyJjE2O0g9SD4+PkQ7Qz1IPj4+NSY4O0g9SD4+PkM7RT1IPj4+MiY0O0g9SD4+PkU7Rz1IPj4+MSYyO0g9SD4+Pkc7Rj1IPj4+MSYxO0Y9Y1syMjQ3MisoKEN8RHxFfEd8RikrKEg+Pj5GKTw8Mik+PjJdfDB9aWYoKEZ8MCkhPTApe3doaWxlKDEpe0g9KGNbRis0Pj4yXSYtOCktYXwwO0I9SD4+PjA8QT4+PjA7QT1CP0g6QTt6PUI/Rjp6O0I9Y1tGKzE2Pj4yXXwwO2lmKChCfDApIT0wKXtGPUI7Y29udGludWV9Rj1jW0YrMjA+PjJdfDA7aWYoKEZ8MCk9PTApe2JyZWFrfX19aWYoKHp8MCkhPTA/QT4+PjA8KChjWzIyMTc2Pj4yXXwwKS1hfDApPj4+MDowKXtmPWNbMjIxODQ+PjJdfDA7aWYoej4+PjA8Zj4+PjApe1hiKCl9ZD16K2F8MDtpZighKHo+Pj4wPGQ+Pj4wKSl7WGIoKX1lPWNbeisyND4+Ml18MDtoPWNbeisxMj4+Ml18MDtkb3tpZigoaHwwKT09KHp8MCkpe2g9eisyMHwwO2c9Y1toPj4yXXwwO2lmKChnfDApPT0wKXtoPXorMTZ8MDtnPWNbaD4+Ml18MDtpZigoZ3wwKT09MCl7eD0wO2JyZWFrfX13aGlsZSgxKXtqPWcrMjB8MDtrPWNbaj4+Ml18MDtpZigoa3wwKSE9MCl7Zz1rO2g9ajtjb250aW51ZX1qPWcrMTZ8MDtrPWNbaj4+Ml18MDtpZigoa3wwKT09MCl7YnJlYWt9ZWxzZXtnPWs7aD1qfX1pZihoPj4+MDxmPj4+MCl7WGIoKX1lbHNle2NbaD4+Ml09MDt4PWc7YnJlYWt9fWVsc2V7Zz1jW3orOD4+Ml18MDtpZihnPj4+MDxmPj4+MCl7WGIoKX1mPWcrMTJ8MDtpZigoY1tmPj4yXXwwKSE9KHp8MCkpe1hiKCl9aj1oKzh8MDtpZigoY1tqPj4yXXwwKT09KHp8MCkpe2NbZj4+Ml09aDtjW2o+PjJdPWc7eD1oO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2Rve2lmKChlfDApIT0wKXtnPWNbeisyOD4+Ml18MDtmPTIyNDcyKyhnPDwyKXwwO2lmKCh6fDApPT0oY1tmPj4yXXwwKSl7Y1tmPj4yXT14O2lmKCh4fDApPT0wKXtjWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PGcpO2JyZWFrfX1lbHNle2lmKGU+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9Zj1lKzE2fDA7aWYoKGNbZj4+Ml18MCk9PSh6fDApKXtjW2Y+PjJdPXh9ZWxzZXtjW2UrMjA+PjJdPXh9aWYoKHh8MCk9PTApe2JyZWFrfX1pZih4Pj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWNbeCsyND4+Ml09ZTtlPWNbeisxNj4+Ml18MDtkb3tpZigoZXwwKSE9MCl7aWYoZT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbeCsxNj4+Ml09ZTtjW2UrMjQ+PjJdPXg7YnJlYWt9fX13aGlsZSgwKTtlPWNbeisyMD4+Ml18MDtpZigoZXwwKSE9MCl7aWYoZT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbeCsyMD4+Ml09ZTtjW2UrMjQ+PjJdPXg7YnJlYWt9fX19d2hpbGUoMCk7Yjpkb3tpZighKEE+Pj4wPDE2KSl7Y1t6KzQ+PjJdPWF8MztjW3orKGF8NCk+PjJdPUF8MTtjW3orKEErYSk+PjJdPUE7Zj1BPj4+MztpZihBPj4+MDwyNTYpe2g9Zjw8MTtlPTIyMjA4KyhoPDwyKXwwO2c9Y1s1NTQyXXwwO2Y9MTw8Zjtkb3tpZigoZyZmfDApPT0wKXtjWzU1NDJdPWd8Zjt3PTIyMjA4KyhoKzI8PDIpfDA7dj1lfWVsc2V7Zj0yMjIwOCsoaCsyPDwyKXwwO2c9Y1tmPj4yXXwwO2lmKCEoZz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCkpe3c9Zjt2PWc7YnJlYWt9WGIoKX19d2hpbGUoMCk7Y1t3Pj4yXT1kO2NbdisxMj4+Ml09ZDtjW3orKGErOCk+PjJdPXY7Y1t6KyhhKzEyKT4+Ml09ZTticmVha31lPUE+Pj44O2lmKChlfDApIT0wKXtpZihBPj4+MD4xNjc3NzIxNSl7ZT0zMX1lbHNle0c9KGUrMTA0ODMyMHwwKT4+PjE2Jjg7SD1lPDxHO0Y9KEgrNTIwMTkyfDApPj4+MTYmNDtIPUg8PEY7ZT0oSCsyNDU3NjB8MCk+Pj4xNiYyO2U9MTQtKEZ8R3xlKSsoSDw8ZT4+PjE1KXwwO2U9QT4+PihlKzd8MCkmMXxlPDwxfX1lbHNle2U9MH1mPTIyNDcyKyhlPDwyKXwwO2NbeisoYSsyOCk+PjJdPWU7Y1t6KyhhKzIwKT4+Ml09MDtjW3orKGErMTYpPj4yXT0wO2g9Y1syMjE3Mj4+Ml18MDtnPTE8PGU7aWYoKGgmZ3wwKT09MCl7Y1syMjE3Mj4+Ml09aHxnO2NbZj4+Ml09ZDtjW3orKGErMjQpPj4yXT1mO2NbeisoYSsxMik+PjJdPWQ7Y1t6KyhhKzgpPj4yXT1kO2JyZWFrfWY9Y1tmPj4yXXwwO2lmKChlfDApPT0zMSl7ZT0wfWVsc2V7ZT0yNS0oZT4+PjEpfDB9Yzpkb3tpZigoY1tmKzQ+PjJdJi04fDApIT0oQXwwKSl7ZT1BPDxlO3doaWxlKDEpe2c9ZisoZT4+PjMxPDwyKSsxNnwwO2g9Y1tnPj4yXXwwO2lmKChofDApPT0wKXticmVha31pZigoY1toKzQ+PjJdJi04fDApPT0oQXwwKSl7cD1oO2JyZWFrIGN9ZWxzZXtlPWU8PDE7Zj1ofX1pZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tnPj4yXT1kO2NbeisoYSsyNCk+PjJdPWY7Y1t6KyhhKzEyKT4+Ml09ZDtjW3orKGErOCk+PjJdPWQ7YnJlYWsgYn19ZWxzZXtwPWZ9fXdoaWxlKDApO2Y9cCs4fDA7ZT1jW2Y+PjJdfDA7Zz1jWzIyMTg0Pj4yXXwwO2lmKHA+Pj4wPGc+Pj4wKXtYYigpfWlmKGU+Pj4wPGc+Pj4wKXtYYigpfWVsc2V7Y1tlKzEyPj4yXT1kO2NbZj4+Ml09ZDtjW3orKGErOCk+PjJdPWU7Y1t6KyhhKzEyKT4+Ml09cDtjW3orKGErMjQpPj4yXT0wO2JyZWFrfX1lbHNle0g9QSthfDA7Y1t6KzQ+PjJdPUh8MztIPXorKEgrNCl8MDtjW0g+PjJdPWNbSD4+Ml18MX19d2hpbGUoMCk7SD16Kzh8MDtpPWI7cmV0dXJuIEh8MH19fWVsc2V7YT0tMX19fXdoaWxlKDApO3A9Y1syMjE3Nj4+Ml18MDtpZighKGE+Pj4wPnA+Pj4wKSl7ZT1wLWF8MDtkPWNbMjIxODg+PjJdfDA7aWYoZT4+PjA+MTUpe2NbMjIxODg+PjJdPWQrYTtjWzIyMTc2Pj4yXT1lO2NbZCsoYSs0KT4+Ml09ZXwxO2NbZCtwPj4yXT1lO2NbZCs0Pj4yXT1hfDN9ZWxzZXtjWzIyMTc2Pj4yXT0wO2NbMjIxODg+PjJdPTA7Y1tkKzQ+PjJdPXB8MztIPWQrKHArNCl8MDtjW0g+PjJdPWNbSD4+Ml18MX1IPWQrOHwwO2k9YjtyZXR1cm4gSHwwfXA9Y1syMjE4MD4+Ml18MDtpZihhPj4+MDxwPj4+MCl7Rz1wLWF8MDtjWzIyMTgwPj4yXT1HO0g9Y1syMjE5Mj4+Ml18MDtjWzIyMTkyPj4yXT1IK2E7Y1tIKyhhKzQpPj4yXT1HfDE7Y1tIKzQ+PjJdPWF8MztIPUgrOHwwO2k9YjtyZXR1cm4gSHwwfWRve2lmKChjWzU2NjBdfDApPT0wKXtwPXNiKDMwKXwwO2lmKChwKyAtMSZwfDApPT0wKXtjWzIyNjQ4Pj4yXT1wO2NbMjI2NDQ+PjJdPXA7Y1syMjY1Mj4+Ml09LTE7Y1syMjY1Nj4+Ml09LTE7Y1syMjY2MD4+Ml09MDtjWzIyNjEyPj4yXT0wO2NbNTY2MF09KF9iKDApfDApJi0xNl4xNDMxNjU1NzY4O2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO3c9YSs0OHwwO3A9Y1syMjY0OD4+Ml18MDt4PWErNDd8MDt6PXAreHwwO3A9MC1wfDA7dj16JnA7aWYoISh2Pj4+MD5hPj4+MCkpe0g9MDtpPWI7cmV0dXJuIEh8MH1BPWNbMjI2MDg+PjJdfDA7aWYoKEF8MCkhPTA/KEc9Y1syMjYwMD4+Ml18MCxIPUcrdnwwLEg+Pj4wPD1HPj4+MHxIPj4+MD5BPj4+MCk6MCl7SD0wO2k9YjtyZXR1cm4gSHwwfWQ6ZG97aWYoKGNbMjI2MTI+PjJdJjR8MCk9PTApe0I9Y1syMjE5Mj4+Ml18MDtlOmRve2lmKChCfDApIT0wKXtBPTIyNjE2fDA7d2hpbGUoMSl7Qz1jW0E+PjJdfDA7aWYoIShDPj4+MD5CPj4+MCk/KHk9QSs0fDAsKEMrKGNbeT4+Ml18MCl8MCk+Pj4wPkI+Pj4wKTowKXticmVha31BPWNbQSs4Pj4yXXwwO2lmKChBfDApPT0wKXtvPTE4MjticmVhayBlfX1pZigoQXwwKSE9MCl7Qj16LShjWzIyMTgwPj4yXXwwKSZwO2lmKEI+Pj4wPDIxNDc0ODM2NDcpe3A9aGIoQnwwKXwwO0E9KHB8MCk9PSgoY1tBPj4yXXwwKSsoY1t5Pj4yXXwwKXwwKTt5PXA7ej1CO3A9QT9wOi0xO0E9QT9COjA7bz0xOTF9ZWxzZXtBPTB9fWVsc2V7bz0xODJ9fWVsc2V7bz0xODJ9fXdoaWxlKDApO2Rve2lmKChvfDApPT0xODIpe3A9aGIoMCl8MDtpZigocHwwKSE9KC0xfDApKXt6PXA7QT1jWzIyNjQ0Pj4yXXwwO3k9QSsgLTF8MDtpZigoeSZ6fDApPT0wKXtBPXZ9ZWxzZXtBPXYteisoeSt6JjAtQSl8MH15PWNbMjI2MDA+PjJdfDA7ej15K0F8MDtpZihBPj4+MD5hPj4+MCZBPj4+MDwyMTQ3NDgzNjQ3KXtIPWNbMjI2MDg+PjJdfDA7aWYoKEh8MCkhPTA/ej4+PjA8PXk+Pj4wfHo+Pj4wPkg+Pj4wOjApe0E9MDticmVha315PWhiKEF8MCl8MDtvPSh5fDApPT0ocHwwKTt6PUE7cD1vP3A6LTE7QT1vP0E6MDtvPTE5MX1lbHNle0E9MH19ZWxzZXtBPTB9fX13aGlsZSgwKTtmOmRve2lmKChvfDApPT0xOTEpe289MC16fDA7aWYoKHB8MCkhPSgtMXwwKSl7cT1BO289MjAyO2JyZWFrIGR9ZG97aWYoKHl8MCkhPSgtMXwwKSZ6Pj4+MDwyMTQ3NDgzNjQ3Jno+Pj4wPHc+Pj4wPyh1PWNbMjI2NDg+PjJdfDAsdT14LXordSYwLXUsdT4+PjA8MjE0NzQ4MzY0Nyk6MCl7aWYoKGhiKHV8MCl8MCk9PSgtMXwwKSl7aGIob3wwKXwwO2JyZWFrIGZ9ZWxzZXt6PXUrenwwO2JyZWFrfX19d2hpbGUoMCk7aWYoKHl8MCkhPSgtMXwwKSl7cD15O3E9ejtvPTIwMjticmVhayBkfX19d2hpbGUoMCk7Y1syMjYxMj4+Ml09Y1syMjYxMj4+Ml18NDtvPTE5OX1lbHNle0E9MDtvPTE5OX19d2hpbGUoMCk7aWYoKCgob3wwKT09MTk5P3Y+Pj4wPDIxNDc0ODM2NDc6MCk/KHQ9aGIodnwwKXwwLHM9aGIoMCl8MCwoc3wwKSE9KC0xfDApJih0fDApIT0oLTF8MCkmdD4+PjA8cz4+PjApOjApPyhyPXMtdHwwLHE9cj4+PjA+KGErNDB8MCk+Pj4wLHEpOjApe3A9dDtxPXE/cjpBO289MjAyfWlmKChvfDApPT0yMDIpe3I9KGNbMjI2MDA+PjJdfDApK3F8MDtjWzIyNjAwPj4yXT1yO2lmKHI+Pj4wPihjWzIyNjA0Pj4yXXwwKT4+PjApe2NbMjI2MDQ+PjJdPXJ9cj1jWzIyMTkyPj4yXXwwO2c6ZG97aWYoKHJ8MCkhPTApe3Y9MjI2MTZ8MDt3aGlsZSgxKXt0PWNbdj4+Ml18MDt1PXYrNHwwO3M9Y1t1Pj4yXXwwO2lmKChwfDApPT0odCtzfDApKXtvPTIxNDticmVha313PWNbdis4Pj4yXXwwO2lmKCh3fDApPT0wKXticmVha31lbHNle3Y9d319aWYoKChvfDApPT0yMTQ/KGNbdisxMj4+Ml0mOHwwKT09MDowKT9yPj4+MD49dD4+PjAmcj4+PjA8cD4+PjA6MCl7Y1t1Pj4yXT1zK3E7ZD0oY1syMjE4MD4+Ml18MCkrcXwwO2U9cis4fDA7aWYoKGUmN3wwKT09MCl7ZT0wfWVsc2V7ZT0wLWUmN31IPWQtZXwwO2NbMjIxOTI+PjJdPXIrZTtjWzIyMTgwPj4yXT1IO2NbcisoZSs0KT4+Ml09SHwxO2NbcisoZCs0KT4+Ml09NDA7Y1syMjE5Nj4+Ml09Y1syMjY1Nj4+Ml07YnJlYWt9aWYocD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7Y1syMjE4ND4+Ml09cH10PXArcXwwO3M9MjI2MTZ8MDt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT09KHR8MCkpe289MjI0O2JyZWFrfXU9Y1tzKzg+PjJdfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7cz11fX1pZigob3wwKT09MjI0PyhjW3MrMTI+PjJdJjh8MCk9PTA6MCl7Y1tzPj4yXT1wO2g9cys0fDA7Y1toPj4yXT0oY1toPj4yXXwwKStxO2g9cCs4fDA7aWYoKGgmN3wwKT09MCl7aD0wfWVsc2V7aD0wLWgmN31qPXArKHErOCl8MDtpZigoaiY3fDApPT0wKXtuPTB9ZWxzZXtuPTAtaiY3fW89cCsobitxKXwwO2o9aCthfDA7az1wK2p8MDttPW8tKHAraCktYXwwO2NbcCsoaCs0KT4+Ml09YXwzO2g6ZG97aWYoKG98MCkhPShjWzIyMTkyPj4yXXwwKSl7aWYoKG98MCk9PShjWzIyMTg4Pj4yXXwwKSl7SD0oY1syMjE3Nj4+Ml18MCkrbXwwO2NbMjIxNzY+PjJdPUg7Y1syMjE4OD4+Ml09aztjW3ArKGorNCk+PjJdPUh8MTtjW3ArKEgraik+PjJdPUg7YnJlYWt9cj1xKzR8MDt0PWNbcCsocituKT4+Ml18MDtpZigodCYzfDApPT0xKXthPXQmLTg7cz10Pj4+MztpOmRve2lmKCEodD4+PjA8MjU2KSl7bD1jW3ArKChufDI0KStxKT4+Ml18MDt1PWNbcCsocSsxMituKT4+Ml18MDtkb3tpZigodXwwKT09KG98MCkpe3U9bnwxNjt0PXArKHIrdSl8MDtzPWNbdD4+Ml18MDtpZigoc3wwKT09MCl7dD1wKyh1K3EpfDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe2c9MDticmVha319d2hpbGUoMSl7dT1zKzIwfDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCkhPTApe3M9djt0PXU7Y29udGludWV9dT1zKzE2fDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCk9PTApe2JyZWFrfWVsc2V7cz12O3Q9dX19aWYodD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbdD4+Ml09MDtnPXM7YnJlYWt9fWVsc2V7dD1jW3ArKChufDgpK3EpPj4yXXwwO2lmKHQ+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9dj10KzEyfDA7aWYoKGNbdj4+Ml18MCkhPShvfDApKXtYYigpfXM9dSs4fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtjW3Y+PjJdPXU7Y1tzPj4yXT10O2c9dTticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtpZigobHwwKT09MCl7YnJlYWt9dD1jW3ArKHErMjgrbik+PjJdfDA7cz0yMjQ3MisodDw8Mil8MDtkb3tpZigob3wwKSE9KGNbcz4+Ml18MCkpe2lmKGw+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9cz1sKzE2fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtjW3M+PjJdPWd9ZWxzZXtjW2wrMjA+PjJdPWd9aWYoKGd8MCk9PTApe2JyZWFrIGl9fWVsc2V7Y1tzPj4yXT1nO2lmKChnfDApIT0wKXticmVha31jWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PHQpO2JyZWFrIGl9fXdoaWxlKDApO2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9Y1tnKzI0Pj4yXT1sO2w9bnwxNjtvPWNbcCsobCtxKT4+Ml18MDtkb3tpZigob3wwKSE9MCl7aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbZysxNj4+Ml09bztjW28rMjQ+PjJdPWc7YnJlYWt9fX13aGlsZSgwKTtsPWNbcCsocitsKT4+Ml18MDtpZigobHwwKT09MCl7YnJlYWt9aWYobD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbZysyMD4+Ml09bDtjW2wrMjQ+PjJdPWc7YnJlYWt9fWVsc2V7cj1jW3ArKChufDgpK3EpPj4yXXwwO2c9Y1twKyhxKzEyK24pPj4yXXwwO3Q9MjIyMDgrKHM8PDE8PDIpfDA7ZG97aWYoKHJ8MCkhPSh0fDApKXtpZihyPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWlmKChjW3IrMTI+PjJdfDApPT0ob3wwKSl7YnJlYWt9WGIoKX19d2hpbGUoMCk7aWYoKGd8MCk9PShyfDApKXtjWzU1NDJdPWNbNTU0Ml0mfigxPDxzKTticmVha31kb3tpZigoZ3wwKT09KHR8MCkpe2w9Zys4fDB9ZWxzZXtpZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfXM9Zys4fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtsPXM7YnJlYWt9WGIoKX19d2hpbGUoMCk7Y1tyKzEyPj4yXT1nO2NbbD4+Ml09cn19d2hpbGUoMCk7bz1wKygoYXxuKStxKXwwO209YSttfDB9Zz1vKzR8MDtjW2c+PjJdPWNbZz4+Ml0mLTI7Y1twKyhqKzQpPj4yXT1tfDE7Y1twKyhtK2opPj4yXT1tO2c9bT4+PjM7aWYobT4+PjA8MjU2KXttPWc8PDE7ZD0yMjIwOCsobTw8Mil8MDtsPWNbNTU0Ml18MDtnPTE8PGc7ZG97aWYoKGwmZ3wwKT09MCl7Y1s1NTQyXT1sfGc7Zj0yMjIwOCsobSsyPDwyKXwwO2U9ZH1lbHNle2w9MjIyMDgrKG0rMjw8Mil8MDtnPWNbbD4+Ml18MDtpZighKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApKXtmPWw7ZT1nO2JyZWFrfVhiKCl9fXdoaWxlKDApO2NbZj4+Ml09aztjW2UrMTI+PjJdPWs7Y1twKyhqKzgpPj4yXT1lO2NbcCsoaisxMik+PjJdPWQ7YnJlYWt9ZT1tPj4+ODtkb3tpZigoZXwwKT09MCl7ZT0wfWVsc2V7aWYobT4+PjA+MTY3NzcyMTUpe2U9MzE7YnJlYWt9Rz0oZSsxMDQ4MzIwfDApPj4+MTYmODtIPWU8PEc7Rj0oSCs1MjAxOTJ8MCk+Pj4xNiY0O0g9SDw8RjtlPShIKzI0NTc2MHwwKT4+PjE2JjI7ZT0xNC0oRnxHfGUpKyhIPDxlPj4+MTUpfDA7ZT1tPj4+KGUrN3wwKSYxfGU8PDF9fXdoaWxlKDApO2w9MjI0NzIrKGU8PDIpfDA7Y1twKyhqKzI4KT4+Ml09ZTtjW3ArKGorMjApPj4yXT0wO2NbcCsoaisxNik+PjJdPTA7Zj1jWzIyMTcyPj4yXXwwO2c9MTw8ZTtpZigoZiZnfDApPT0wKXtjWzIyMTcyPj4yXT1mfGc7Y1tsPj4yXT1rO2NbcCsoaisyNCk+PjJdPWw7Y1twKyhqKzEyKT4+Ml09aztjW3ArKGorOCk+PjJdPWs7YnJlYWt9bD1jW2w+PjJdfDA7aWYoKGV8MCk9PTMxKXtlPTB9ZWxzZXtlPTI1LShlPj4+MSl8MH1qOmRve2lmKChjW2wrND4+Ml0mLTh8MCkhPShtfDApKXtlPW08PGU7d2hpbGUoMSl7Zz1sKyhlPj4+MzE8PDIpKzE2fDA7Zj1jW2c+PjJdfDA7aWYoKGZ8MCk9PTApe2JyZWFrfWlmKChjW2YrND4+Ml0mLTh8MCk9PShtfDApKXtkPWY7YnJlYWsgan1lbHNle2U9ZTw8MTtsPWZ9fWlmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2c+PjJdPWs7Y1twKyhqKzI0KT4+Ml09bDtjW3ArKGorMTIpPj4yXT1rO2NbcCsoais4KT4+Ml09azticmVhayBofX1lbHNle2Q9bH19d2hpbGUoMCk7Zj1kKzh8MDtlPWNbZj4+Ml18MDtnPWNbMjIxODQ+PjJdfDA7aWYoZD4+PjA8Zz4+PjApe1hiKCl9aWYoZT4+PjA8Zz4+PjApe1hiKCl9ZWxzZXtjW2UrMTI+PjJdPWs7Y1tmPj4yXT1rO2NbcCsoais4KT4+Ml09ZTtjW3ArKGorMTIpPj4yXT1kO2NbcCsoaisyNCk+PjJdPTA7YnJlYWt9fWVsc2V7SD0oY1syMjE4MD4+Ml18MCkrbXwwO2NbMjIxODA+PjJdPUg7Y1syMjE5Mj4+Ml09aztjW3ArKGorNCk+PjJdPUh8MX19d2hpbGUoMCk7SD1wKyhofDgpfDA7aT1iO3JldHVybiBIfDB9ZT0yMjYxNnwwO3doaWxlKDEpe2Q9Y1tlPj4yXXwwO2lmKCEoZD4+PjA+cj4+PjApPyhuPWNbZSs0Pj4yXXwwLG09ZCtufDAsbT4+PjA+cj4+PjApOjApe2JyZWFrfWU9Y1tlKzg+PjJdfDB9ZT1kKyhuKyAtMzkpfDA7aWYoKGUmN3wwKT09MCl7ZT0wfWVsc2V7ZT0wLWUmN31kPWQrKG4rIC00NytlKXwwO2Q9ZD4+PjA8KHIrMTZ8MCk+Pj4wP3I6ZDtlPWQrOHwwO2Y9cCs4fDA7aWYoKGYmN3wwKT09MCl7Zj0wfWVsc2V7Zj0wLWYmN31IPXErIC00MC1mfDA7Y1syMjE5Mj4+Ml09cCtmO2NbMjIxODA+PjJdPUg7Y1twKyhmKzQpPj4yXT1IfDE7Y1twKyhxKyAtMzYpPj4yXT00MDtjWzIyMTk2Pj4yXT1jWzIyNjU2Pj4yXTtjW2QrND4+Ml09Mjc7Y1tlKzA+PjJdPWNbMjI2MTY+PjJdO2NbZSs0Pj4yXT1jWzIyNjIwPj4yXTtjW2UrOD4+Ml09Y1syMjYyND4+Ml07Y1tlKzEyPj4yXT1jWzIyNjI4Pj4yXTtjWzIyNjE2Pj4yXT1wO2NbMjI2MjA+PjJdPXE7Y1syMjYyOD4+Ml09MDtjWzIyNjI0Pj4yXT1lO2U9ZCsyOHwwO2NbZT4+Ml09NztpZigoZCszMnwwKT4+PjA8bT4+PjApe2Rve0g9ZTtlPWUrNHwwO2NbZT4+Ml09N313aGlsZSgoSCs4fDApPj4+MDxtPj4+MCl9aWYoKGR8MCkhPShyfDApKXtkPWQtcnwwO2U9cisoZCs0KXwwO2NbZT4+Ml09Y1tlPj4yXSYtMjtjW3IrND4+Ml09ZHwxO2NbcitkPj4yXT1kO2U9ZD4+PjM7aWYoZD4+PjA8MjU2KXtnPWU8PDE7ZD0yMjIwOCsoZzw8Mil8MDtmPWNbNTU0Ml18MDtlPTE8PGU7ZG97aWYoKGYmZXwwKT09MCl7Y1s1NTQyXT1mfGU7az0yMjIwOCsoZysyPDwyKXwwO2o9ZH1lbHNle2Y9MjIyMDgrKGcrMjw8Mil8MDtlPWNbZj4+Ml18MDtpZighKGU+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApKXtrPWY7aj1lO2JyZWFrfVhiKCl9fXdoaWxlKDApO2Nbaz4+Ml09cjtjW2orMTI+PjJdPXI7Y1tyKzg+PjJdPWo7Y1tyKzEyPj4yXT1kO2JyZWFrfWU9ZD4+Pjg7aWYoKGV8MCkhPTApe2lmKGQ+Pj4wPjE2Nzc3MjE1KXtlPTMxfWVsc2V7Rz0oZSsxMDQ4MzIwfDApPj4+MTYmODtIPWU8PEc7Rj0oSCs1MjAxOTJ8MCk+Pj4xNiY0O0g9SDw8RjtlPShIKzI0NTc2MHwwKT4+PjE2JjI7ZT0xNC0oRnxHfGUpKyhIPDxlPj4+MTUpfDA7ZT1kPj4+KGUrN3wwKSYxfGU8PDF9fWVsc2V7ZT0wfWo9MjI0NzIrKGU8PDIpfDA7Y1tyKzI4Pj4yXT1lO2NbcisyMD4+Ml09MDtjW3IrMTY+PjJdPTA7Zj1jWzIyMTcyPj4yXXwwO2c9MTw8ZTtpZigoZiZnfDApPT0wKXtjWzIyMTcyPj4yXT1mfGc7Y1tqPj4yXT1yO2NbcisyND4+Ml09ajtjW3IrMTI+PjJdPXI7Y1tyKzg+PjJdPXI7YnJlYWt9Zj1jW2o+PjJdfDA7aWYoKGV8MCk9PTMxKXtlPTB9ZWxzZXtlPTI1LShlPj4+MSl8MH1rOmRve2lmKChjW2YrND4+Ml0mLTh8MCkhPShkfDApKXtlPWQ8PGU7d2hpbGUoMSl7aj1mKyhlPj4+MzE8PDIpKzE2fDA7Zz1jW2o+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShkfDApKXtoPWc7YnJlYWsga31lbHNle2U9ZTw8MTtmPWd9fWlmKGo+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2o+PjJdPXI7Y1tyKzI0Pj4yXT1mO2NbcisxMj4+Ml09cjtjW3IrOD4+Ml09cjticmVhayBnfX1lbHNle2g9Zn19d2hpbGUoMCk7Zj1oKzh8MDtlPWNbZj4+Ml18MDtkPWNbMjIxODQ+PjJdfDA7aWYoaD4+PjA8ZD4+PjApe1hiKCl9aWYoZT4+PjA8ZD4+PjApe1hiKCl9ZWxzZXtjW2UrMTI+PjJdPXI7Y1tmPj4yXT1yO2Nbcis4Pj4yXT1lO2NbcisxMj4+Ml09aDtjW3IrMjQ+PjJdPTA7YnJlYWt9fX1lbHNle0g9Y1syMjE4ND4+Ml18MDtpZigoSHwwKT09MHxwPj4+MDxIPj4+MCl7Y1syMjE4ND4+Ml09cH1jWzIyNjE2Pj4yXT1wO2NbMjI2MjA+PjJdPXE7Y1syMjYyOD4+Ml09MDtjWzIyMjA0Pj4yXT1jWzU2NjBdO2NbMjIyMDA+PjJdPS0xO2Q9MDtkb3tIPWQ8PDE7Rz0yMjIwOCsoSDw8Mil8MDtjWzIyMjA4KyhIKzM8PDIpPj4yXT1HO2NbMjIyMDgrKEgrMjw8Mik+PjJdPUc7ZD1kKzF8MH13aGlsZSgoZHwwKSE9MzIpO2Q9cCs4fDA7aWYoKGQmN3wwKT09MCl7ZD0wfWVsc2V7ZD0wLWQmN31IPXErIC00MC1kfDA7Y1syMjE5Mj4+Ml09cCtkO2NbMjIxODA+PjJdPUg7Y1twKyhkKzQpPj4yXT1IfDE7Y1twKyhxKyAtMzYpPj4yXT00MDtjWzIyMTk2Pj4yXT1jWzIyNjU2Pj4yXX19d2hpbGUoMCk7ZD1jWzIyMTgwPj4yXXwwO2lmKGQ+Pj4wPmE+Pj4wKXtHPWQtYXwwO2NbMjIxODA+PjJdPUc7SD1jWzIyMTkyPj4yXXwwO2NbMjIxOTI+PjJdPUgrYTtjW0grKGErNCk+PjJdPUd8MTtjW0grND4+Ml09YXwzO0g9SCs4fDA7aT1iO3JldHVybiBIfDB9fWNbKGJiKCl8MCk+PjJdPTEyO0g9MDtpPWI7cmV0dXJuIEh8MH1mdW5jdGlvbiB2bihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDtiPWk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59cT1hKyAtOHwwO3I9Y1syMjE4ND4+Ml18MDtpZihxPj4+MDxyPj4+MCl7WGIoKX1vPWNbYSsgLTQ+PjJdfDA7bj1vJjM7aWYoKG58MCk9PTEpe1hiKCl9aj1vJi04O2g9YSsoaisgLTgpfDA7ZG97aWYoKG8mMXwwKT09MCl7dT1jW3E+PjJdfDA7aWYoKG58MCk9PTApe2k9YjtyZXR1cm59cT0tOC11fDA7bz1hK3F8MDtuPXUranwwO2lmKG8+Pj4wPHI+Pj4wKXtYYigpfWlmKChvfDApPT0oY1syMjE4OD4+Ml18MCkpe2Q9YSsoaisgLTQpfDA7aWYoKGNbZD4+Ml0mM3wwKSE9Myl7ZD1vO209bjticmVha31jWzIyMTc2Pj4yXT1uO2NbZD4+Ml09Y1tkPj4yXSYtMjtjW2ErKHErNCk+PjJdPW58MTtjW2g+PjJdPW47aT1iO3JldHVybn10PXU+Pj4zO2lmKHU+Pj4wPDI1Nil7ZD1jW2ErKHErOCk+PjJdfDA7bT1jW2ErKHErMTIpPj4yXXwwO3A9MjIyMDgrKHQ8PDE8PDIpfDA7aWYoKGR8MCkhPShwfDApKXtpZihkPj4+MDxyPj4+MCl7WGIoKX1pZigoY1tkKzEyPj4yXXwwKSE9KG98MCkpe1hiKCl9fWlmKChtfDApPT0oZHwwKSl7Y1s1NTQyXT1jWzU1NDJdJn4oMTw8dCk7ZD1vO209bjticmVha31pZigobXwwKSE9KHB8MCkpe2lmKG0+Pj4wPHI+Pj4wKXtYYigpfXA9bSs4fDA7aWYoKGNbcD4+Ml18MCk9PShvfDApKXtzPXB9ZWxzZXtYYigpfX1lbHNle3M9bSs4fDB9Y1tkKzEyPj4yXT1tO2Nbcz4+Ml09ZDtkPW87bT1uO2JyZWFrfXM9Y1thKyhxKzI0KT4+Ml18MDt0PWNbYSsocSsxMik+PjJdfDA7ZG97aWYoKHR8MCk9PShvfDApKXt1PWErKHErMjApfDA7dD1jW3U+PjJdfDA7aWYoKHR8MCk9PTApe3U9YSsocSsxNil8MDt0PWNbdT4+Ml18MDtpZigodHwwKT09MCl7cD0wO2JyZWFrfX13aGlsZSgxKXt3PXQrMjB8MDt2PWNbdz4+Ml18MDtpZigodnwwKSE9MCl7dD12O3U9dztjb250aW51ZX12PXQrMTZ8MDt3PWNbdj4+Ml18MDtpZigod3wwKT09MCl7YnJlYWt9ZWxzZXt0PXc7dT12fX1pZih1Pj4+MDxyPj4+MCl7WGIoKX1lbHNle2NbdT4+Ml09MDtwPXQ7YnJlYWt9fWVsc2V7dT1jW2ErKHErOCk+PjJdfDA7aWYodT4+PjA8cj4+PjApe1hiKCl9cj11KzEyfDA7aWYoKGNbcj4+Ml18MCkhPShvfDApKXtYYigpfXY9dCs4fDA7aWYoKGNbdj4+Ml18MCk9PShvfDApKXtjW3I+PjJdPXQ7Y1t2Pj4yXT11O3A9dDticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtpZigoc3wwKSE9MCl7dD1jW2ErKHErMjgpPj4yXXwwO3I9MjI0NzIrKHQ8PDIpfDA7aWYoKG98MCk9PShjW3I+PjJdfDApKXtjW3I+PjJdPXA7aWYoKHB8MCk9PTApe2NbMjIxNzI+PjJdPWNbMjIxNzI+PjJdJn4oMTw8dCk7ZD1vO209bjticmVha319ZWxzZXtpZihzPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfXI9cysxNnwwO2lmKChjW3I+PjJdfDApPT0ob3wwKSl7Y1tyPj4yXT1wfWVsc2V7Y1tzKzIwPj4yXT1wfWlmKChwfDApPT0wKXtkPW87bT1uO2JyZWFrfX1pZihwPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWNbcCsyND4+Ml09cztyPWNbYSsocSsxNik+PjJdfDA7ZG97aWYoKHJ8MCkhPTApe2lmKHI+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW3ArMTY+PjJdPXI7Y1tyKzI0Pj4yXT1wO2JyZWFrfX19d2hpbGUoMCk7cT1jW2ErKHErMjApPj4yXXwwO2lmKChxfDApIT0wKXtpZihxPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1twKzIwPj4yXT1xO2NbcSsyND4+Ml09cDtkPW87bT1uO2JyZWFrfX1lbHNle2Q9bzttPW59fWVsc2V7ZD1vO209bn19ZWxzZXtkPXE7bT1qfX13aGlsZSgwKTtpZighKGQ+Pj4wPGg+Pj4wKSl7WGIoKX1uPWErKGorIC00KXwwO289Y1tuPj4yXXwwO2lmKChvJjF8MCk9PTApe1hiKCl9aWYoKG8mMnwwKT09MCl7aWYoKGh8MCk9PShjWzIyMTkyPj4yXXwwKSl7dz0oY1syMjE4MD4+Ml18MCkrbXwwO2NbMjIxODA+PjJdPXc7Y1syMjE5Mj4+Ml09ZDtjW2QrND4+Ml09d3wxO2lmKChkfDApIT0oY1syMjE4OD4+Ml18MCkpe2k9YjtyZXR1cm59Y1syMjE4OD4+Ml09MDtjWzIyMTc2Pj4yXT0wO2k9YjtyZXR1cm59aWYoKGh8MCk9PShjWzIyMTg4Pj4yXXwwKSl7dz0oY1syMjE3Nj4+Ml18MCkrbXwwO2NbMjIxNzY+PjJdPXc7Y1syMjE4OD4+Ml09ZDtjW2QrND4+Ml09d3wxO2NbZCt3Pj4yXT13O2k9YjtyZXR1cm59bT0obyYtOCkrbXwwO249bz4+PjM7ZG97aWYoIShvPj4+MDwyNTYpKXtsPWNbYSsoaisxNik+PjJdfDA7cT1jW2ErKGp8NCk+PjJdfDA7ZG97aWYoKHF8MCk9PShofDApKXtvPWErKGorMTIpfDA7bj1jW28+PjJdfDA7aWYoKG58MCk9PTApe289YSsoais4KXwwO249Y1tvPj4yXXwwO2lmKChufDApPT0wKXtrPTA7YnJlYWt9fXdoaWxlKDEpe3A9bisyMHwwO3E9Y1twPj4yXXwwO2lmKChxfDApIT0wKXtuPXE7bz1wO2NvbnRpbnVlfXA9bisxNnwwO3E9Y1twPj4yXXwwO2lmKChxfDApPT0wKXticmVha31lbHNle249cTtvPXB9fWlmKG8+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW28+PjJdPTA7az1uO2JyZWFrfX1lbHNle289Y1thK2o+PjJdfDA7aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1wPW8rMTJ8MDtpZigoY1twPj4yXXwwKSE9KGh8MCkpe1hiKCl9bj1xKzh8MDtpZigoY1tuPj4yXXwwKT09KGh8MCkpe2NbcD4+Ml09cTtjW24+PjJdPW87az1xO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChsfDApIT0wKXtuPWNbYSsoaisyMCk+PjJdfDA7bz0yMjQ3Misobjw8Mil8MDtpZigoaHwwKT09KGNbbz4+Ml18MCkpe2Nbbz4+Ml09aztpZigoa3wwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxuKTticmVha319ZWxzZXtpZihsPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfW49bCsxNnwwO2lmKChjW24+PjJdfDApPT0oaHwwKSl7Y1tuPj4yXT1rfWVsc2V7Y1tsKzIwPj4yXT1rfWlmKChrfDApPT0wKXticmVha319aWYoaz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2srMjQ+PjJdPWw7aD1jW2ErKGorOCk+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2srMTY+PjJdPWg7Y1toKzI0Pj4yXT1rO2JyZWFrfX19d2hpbGUoMCk7aD1jW2ErKGorMTIpPj4yXXwwO2lmKChofDApIT0wKXtpZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1trKzIwPj4yXT1oO2NbaCsyND4+Ml09azticmVha319fX1lbHNle2s9Y1thK2o+PjJdfDA7YT1jW2ErKGp8NCk+PjJdfDA7aj0yMjIwOCsobjw8MTw8Mil8MDtpZigoa3wwKSE9KGp8MCkpe2lmKGs+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9aWYoKGNbaysxMj4+Ml18MCkhPShofDApKXtYYigpfX1pZigoYXwwKT09KGt8MCkpe2NbNTU0Ml09Y1s1NTQyXSZ+KDE8PG4pO2JyZWFrfWlmKChhfDApIT0oanwwKSl7aWYoYT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1qPWErOHwwO2lmKChjW2o+PjJdfDApPT0oaHwwKSl7bD1qfWVsc2V7WGIoKX19ZWxzZXtsPWErOHwwfWNbaysxMj4+Ml09YTtjW2w+PjJdPWt9fXdoaWxlKDApO2NbZCs0Pj4yXT1tfDE7Y1tkK20+PjJdPW07aWYoKGR8MCk9PShjWzIyMTg4Pj4yXXwwKSl7Y1syMjE3Nj4+Ml09bTtpPWI7cmV0dXJufX1lbHNle2Nbbj4+Ml09byYtMjtjW2QrND4+Ml09bXwxO2NbZCttPj4yXT1tfWg9bT4+PjM7aWYobT4+PjA8MjU2KXthPWg8PDE7ZT0yMjIwOCsoYTw8Mil8MDtqPWNbNTU0Ml18MDtoPTE8PGg7aWYoKGomaHwwKSE9MCl7aD0yMjIwOCsoYSsyPDwyKXwwO2E9Y1toPj4yXXwwO2lmKGE+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtmPWg7Zz1hfX1lbHNle2NbNTU0Ml09anxoO2Y9MjIyMDgrKGErMjw8Mil8MDtnPWV9Y1tmPj4yXT1kO2NbZysxMj4+Ml09ZDtjW2QrOD4+Ml09ZztjW2QrMTI+PjJdPWU7aT1iO3JldHVybn1mPW0+Pj44O2lmKChmfDApIT0wKXtpZihtPj4+MD4xNjc3NzIxNSl7Zj0zMX1lbHNle3Y9KGYrMTA0ODMyMHwwKT4+PjE2Jjg7dz1mPDx2O3U9KHcrNTIwMTkyfDApPj4+MTYmNDt3PXc8PHU7Zj0odysyNDU3NjB8MCk+Pj4xNiYyO2Y9MTQtKHV8dnxmKSsodzw8Zj4+PjE1KXwwO2Y9bT4+PihmKzd8MCkmMXxmPDwxfX1lbHNle2Y9MH1nPTIyNDcyKyhmPDwyKXwwO2NbZCsyOD4+Ml09ZjtjW2QrMjA+PjJdPTA7Y1tkKzE2Pj4yXT0wO2E9Y1syMjE3Mj4+Ml18MDtoPTE8PGY7YTpkb3tpZigoYSZofDApIT0wKXtnPWNbZz4+Ml18MDtpZigoZnwwKT09MzEpe2Y9MH1lbHNle2Y9MjUtKGY+Pj4xKXwwfWI6ZG97aWYoKGNbZys0Pj4yXSYtOHwwKSE9KG18MCkpe2Y9bTw8ZjthPWc7d2hpbGUoMSl7aD1hKyhmPj4+MzE8PDIpKzE2fDA7Zz1jW2g+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShtfDApKXtlPWc7YnJlYWsgYn1lbHNle2Y9Zjw8MTthPWd9fWlmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2g+PjJdPWQ7Y1tkKzI0Pj4yXT1hO2NbZCsxMj4+Ml09ZDtjW2QrOD4+Ml09ZDticmVhayBhfX1lbHNle2U9Z319d2hpbGUoMCk7Zz1lKzh8MDtmPWNbZz4+Ml18MDtoPWNbMjIxODQ+PjJdfDA7aWYoZT4+PjA8aD4+PjApe1hiKCl9aWYoZj4+PjA8aD4+PjApe1hiKCl9ZWxzZXtjW2YrMTI+PjJdPWQ7Y1tnPj4yXT1kO2NbZCs4Pj4yXT1mO2NbZCsxMj4+Ml09ZTtjW2QrMjQ+PjJdPTA7YnJlYWt9fWVsc2V7Y1syMjE3Mj4+Ml09YXxoO2NbZz4+Ml09ZDtjW2QrMjQ+PjJdPWc7Y1tkKzEyPj4yXT1kO2NbZCs4Pj4yXT1kfX13aGlsZSgwKTt3PShjWzIyMjAwPj4yXXwwKSsgLTF8MDtjWzIyMjAwPj4yXT13O2lmKCh3fDApPT0wKXtkPTIyNjI0fDB9ZWxzZXtpPWI7cmV0dXJufXdoaWxlKDEpe2Q9Y1tkPj4yXXwwO2lmKChkfDApPT0wKXticmVha31lbHNle2Q9ZCs4fDB9fWNbMjIyMDA+PjJdPS0xO2k9YjtyZXR1cm59ZnVuY3Rpb24gd24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtkPWk7aWYoKGF8MCk9PTApe3I9dW4oYil8MDtpPWQ7cmV0dXJuIHJ8MH1pZihiPj4+MD40Mjk0OTY3MjMxKXtjWyhiYigpfDApPj4yXT0xMjtyPTA7aT1kO3JldHVybiByfDB9aWYoYj4+PjA8MTEpe2Y9MTZ9ZWxzZXtmPWIrMTEmLTh9ZT1hKyAtNHwwO2s9Y1tlPj4yXXwwO2w9ayYtODtvPWwrIC04fDA7aD1hK298MDttPWNbMjIxODQ+PjJdfDA7aWYoKGErIC04fDApPj4+MDxtPj4+MCl7WGIoKX1yPWsmMztpZighKChyfDApIT0xJihvfDApPi04KSl7WGIoKX1vPWx8NDtxPWErKG8rIC04KXwwO3A9Y1txPj4yXXwwO2lmKChwJjF8MCk9PTApe1hiKCl9ZG97aWYoKHJ8MCk9PTApe2lmKCEoZj4+PjA8MjU2fGw+Pj4wPChmfDQpPj4+MCk/ISgobC1mfDApPj4+MD5jWzIyNjQ4Pj4yXTw8MT4+PjApOjApe3I9YTtpPWQ7cmV0dXJuIHJ8MH19ZWxzZXtpZighKGw+Pj4wPGY+Pj4wKSl7Zz1sLWZ8MDtpZighKGc+Pj4wPjE1KSl7cj1hO2k9ZDtyZXR1cm4gcnwwfWNbZT4+Ml09ayYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPWd8MztjW3E+PjJdPWNbcT4+Ml18MTt4bihhKyhmKyAtOCl8MCxnKTtyPWE7aT1kO3JldHVybiByfDB9aWYoKGh8MCk9PShjWzIyMTkyPj4yXXwwKSl7Zz0oY1syMjE4MD4+Ml18MCkrbHwwO2lmKCEoZz4+PjA+Zj4+PjApKXticmVha31yPWctZnwwO2NbZT4+Ml09ayYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPXJ8MTtjWzIyMTkyPj4yXT1hKyhmKyAtOCk7Y1syMjE4MD4+Ml09cjtyPWE7aT1kO3JldHVybiByfDB9aWYoKGh8MCk9PShjWzIyMTg4Pj4yXXwwKSl7Zz0oY1syMjE3Nj4+Ml18MCkrbHwwO2lmKGc+Pj4wPGY+Pj4wKXticmVha31oPWctZnwwO2lmKGg+Pj4wPjE1KXtjW2U+PjJdPWsmMXxmfDI7Y1thKygoZnw0KSsgLTgpPj4yXT1ofDE7Y1thKyhnKyAtOCk+PjJdPWg7ZT1hKyhnKyAtNCl8MDtjW2U+PjJdPWNbZT4+Ml0mLTI7ZT1hKyhmKyAtOCl8MH1lbHNle2NbZT4+Ml09ayYxfGd8MjtlPWErKGcrIC00KXwwO2NbZT4+Ml09Y1tlPj4yXXwxO2U9MDtoPTB9Y1syMjE3Nj4+Ml09aDtjWzIyMTg4Pj4yXT1lO3I9YTtpPWQ7cmV0dXJuIHJ8MH1pZigocCYyfDApPT0wPyhnPShwJi04KStsfDAsIShnPj4+MDxmPj4+MCkpOjApe2s9Zy1mfDA7Yj1wPj4+Mztkb3tpZighKHA+Pj4wPDI1Nikpe249Y1thKyhsKzE2KT4+Ml18MDtvPWNbYStvPj4yXXwwO2Rve2lmKChvfDApPT0oaHwwKSl7Yj1hKyhsKzEyKXwwO289Y1tiPj4yXXwwO2lmKChvfDApPT0wKXtiPWErKGwrOCl8MDtvPWNbYj4+Ml18MDtpZigob3wwKT09MCl7aj0wO2JyZWFrfX13aGlsZSgxKXtxPW8rMjB8MDtwPWNbcT4+Ml18MDtpZigocHwwKSE9MCl7bz1wO2I9cTtjb250aW51ZX1wPW8rMTZ8MDtxPWNbcD4+Ml18MDtpZigocXwwKT09MCl7YnJlYWt9ZWxzZXtvPXE7Yj1wfX1pZihiPj4+MDxtPj4+MCl7WGIoKX1lbHNle2NbYj4+Ml09MDtqPW87YnJlYWt9fWVsc2V7Yj1jW2ErbD4+Ml18MDtpZihiPj4+MDxtPj4+MCl7WGIoKX1wPWIrMTJ8MDtpZigoY1twPj4yXXwwKSE9KGh8MCkpe1hiKCl9bT1vKzh8MDtpZigoY1ttPj4yXXwwKT09KGh8MCkpe2NbcD4+Ml09bztjW20+PjJdPWI7aj1vO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChufDApIT0wKXtvPWNbYSsobCsyMCk+PjJdfDA7bT0yMjQ3Misobzw8Mil8MDtpZigoaHwwKT09KGNbbT4+Ml18MCkpe2NbbT4+Ml09ajtpZigoanwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxvKTticmVha319ZWxzZXtpZihuPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfW09bisxNnwwO2lmKChjW20+PjJdfDApPT0oaHwwKSl7Y1ttPj4yXT1qfWVsc2V7Y1tuKzIwPj4yXT1qfWlmKChqfDApPT0wKXticmVha319aWYoaj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2orMjQ+PjJdPW47aD1jW2ErKGwrOCk+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2orMTY+PjJdPWg7Y1toKzI0Pj4yXT1qO2JyZWFrfX19d2hpbGUoMCk7aD1jW2ErKGwrMTIpPj4yXXwwO2lmKChofDApPT0wKXticmVha31pZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tqKzIwPj4yXT1oO2NbaCsyND4+Ml09ajticmVha319fWVsc2V7aj1jW2ErbD4+Ml18MDtsPWNbYStvPj4yXXwwO289MjIyMDgrKGI8PDE8PDIpfDA7aWYoKGp8MCkhPShvfDApKXtpZihqPj4+MDxtPj4+MCl7WGIoKX1pZigoY1tqKzEyPj4yXXwwKSE9KGh8MCkpe1hiKCl9fWlmKChsfDApPT0oanwwKSl7Y1s1NTQyXT1jWzU1NDJdJn4oMTw8Yik7YnJlYWt9ZG97aWYoKGx8MCk9PShvfDApKXtuPWwrOHwwfWVsc2V7aWYobD4+PjA8bT4+PjApe1hiKCl9bT1sKzh8MDtpZigoY1ttPj4yXXwwKT09KGh8MCkpe249bTticmVha31YYigpfX13aGlsZSgwKTtjW2orMTI+PjJdPWw7Y1tuPj4yXT1qfX13aGlsZSgwKTtpZihrPj4+MDwxNil7Y1tlPj4yXT1nfGNbZT4+Ml0mMXwyO3I9YSsoKGd8NCkrIC04KXwwO2Nbcj4+Ml09Y1tyPj4yXXwxO3I9YTtpPWQ7cmV0dXJuIHJ8MH1lbHNle2NbZT4+Ml09Y1tlPj4yXSYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPWt8MztyPWErKChnfDQpKyAtOCl8MDtjW3I+PjJdPWNbcj4+Ml18MTt4bihhKyhmKyAtOCl8MCxrKTtyPWE7aT1kO3JldHVybiByfDB9fX19d2hpbGUoMCk7Zj11bihiKXwwO2lmKChmfDApPT0wKXtyPTA7aT1kO3JldHVybiByfDB9cj1jW2U+PjJdfDA7cj0ociYtOCktKChyJjN8MCk9PTA/ODo0KXwwO0xuKGZ8MCxhfDAsKHI+Pj4wPGI+Pj4wP3I6Yil8MCl8MDt2bihhKTtyPWY7aT1kO3JldHVybiByfDB9ZnVuY3Rpb24geG4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7ZD1pO2g9YStifDA7bD1jW2ErND4+Ml18MDtkb3tpZigobCYxfDApPT0wKXtwPWNbYT4+Ml18MDtpZigobCYzfDApPT0wKXtpPWQ7cmV0dXJufWw9YSsoMC1wKXwwO209cCtifDA7cT1jWzIyMTg0Pj4yXXwwO2lmKGw+Pj4wPHE+Pj4wKXtYYigpfWlmKChsfDApPT0oY1syMjE4OD4+Ml18MCkpe2U9YSsoYis0KXwwO2lmKChjW2U+PjJdJjN8MCkhPTMpe2U9bDtuPW07YnJlYWt9Y1syMjE3Nj4+Ml09bTtjW2U+PjJdPWNbZT4+Ml0mLTI7Y1thKyg0LXApPj4yXT1tfDE7Y1toPj4yXT1tO2k9ZDtyZXR1cm59cz1wPj4+MztpZihwPj4+MDwyNTYpe2U9Y1thKyg4LXApPj4yXXwwO249Y1thKygxMi1wKT4+Ml18MDtvPTIyMjA4KyhzPDwxPDwyKXwwO2lmKChlfDApIT0ob3wwKSl7aWYoZT4+PjA8cT4+PjApe1hiKCl9aWYoKGNbZSsxMj4+Ml18MCkhPShsfDApKXtYYigpfX1pZigobnwwKT09KGV8MCkpe2NbNTU0Ml09Y1s1NTQyXSZ+KDE8PHMpO2U9bDtuPW07YnJlYWt9aWYoKG58MCkhPShvfDApKXtpZihuPj4+MDxxPj4+MCl7WGIoKX1vPW4rOHwwO2lmKChjW28+PjJdfDApPT0obHwwKSl7cj1vfWVsc2V7WGIoKX19ZWxzZXtyPW4rOHwwfWNbZSsxMj4+Ml09bjtjW3I+PjJdPWU7ZT1sO249bTticmVha31yPWNbYSsoMjQtcCk+PjJdfDA7dD1jW2ErKDEyLXApPj4yXXwwO2Rve2lmKCh0fDApPT0obHwwKSl7dT0xNi1wfDA7dD1hKyh1KzQpfDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe3Q9YSt1fDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe289MDticmVha319d2hpbGUoMSl7dT1zKzIwfDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCkhPTApe3M9djt0PXU7Y29udGludWV9dj1zKzE2fDA7dT1jW3Y+PjJdfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7cz11O3Q9dn19aWYodD4+PjA8cT4+PjApe1hiKCl9ZWxzZXtjW3Q+PjJdPTA7bz1zO2JyZWFrfX1lbHNle3M9Y1thKyg4LXApPj4yXXwwO2lmKHM+Pj4wPHE+Pj4wKXtYYigpfXU9cysxMnwwO2lmKChjW3U+PjJdfDApIT0obHwwKSl7WGIoKX1xPXQrOHwwO2lmKChjW3E+PjJdfDApPT0obHwwKSl7Y1t1Pj4yXT10O2NbcT4+Ml09cztvPXQ7YnJlYWt9ZWxzZXtYYigpfX19d2hpbGUoMCk7aWYoKHJ8MCkhPTApe3E9Y1thKygyOC1wKT4+Ml18MDtzPTIyNDcyKyhxPDwyKXwwO2lmKChsfDApPT0oY1tzPj4yXXwwKSl7Y1tzPj4yXT1vO2lmKChvfDApPT0wKXtjWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PHEpO2U9bDtuPW07YnJlYWt9fWVsc2V7aWYocj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1xPXIrMTZ8MDtpZigoY1txPj4yXXwwKT09KGx8MCkpe2NbcT4+Ml09b31lbHNle2NbcisyMD4+Ml09b31pZigob3wwKT09MCl7ZT1sO249bTticmVha319aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW28rMjQ+PjJdPXI7cD0xNi1wfDA7cT1jW2ErcD4+Ml18MDtkb3tpZigocXwwKSE9MCl7aWYocT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbbysxNj4+Ml09cTtjW3ErMjQ+PjJdPW87YnJlYWt9fX13aGlsZSgwKTtwPWNbYSsocCs0KT4+Ml18MDtpZigocHwwKSE9MCl7aWYocD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbbysyMD4+Ml09cDtjW3ArMjQ+PjJdPW87ZT1sO249bTticmVha319ZWxzZXtlPWw7bj1tfX1lbHNle2U9bDtuPW19fWVsc2V7ZT1hO249Yn19d2hpbGUoMCk7bD1jWzIyMTg0Pj4yXXwwO2lmKGg+Pj4wPGw+Pj4wKXtYYigpfW09YSsoYis0KXwwO289Y1ttPj4yXXwwO2lmKChvJjJ8MCk9PTApe2lmKChofDApPT0oY1syMjE5Mj4+Ml18MCkpe3Y9KGNbMjIxODA+PjJdfDApK258MDtjWzIyMTgwPj4yXT12O2NbMjIxOTI+PjJdPWU7Y1tlKzQ+PjJdPXZ8MTtpZigoZXwwKSE9KGNbMjIxODg+PjJdfDApKXtpPWQ7cmV0dXJufWNbMjIxODg+PjJdPTA7Y1syMjE3Nj4+Ml09MDtpPWQ7cmV0dXJufWlmKChofDApPT0oY1syMjE4OD4+Ml18MCkpe3Y9KGNbMjIxNzY+PjJdfDApK258MDtjWzIyMTc2Pj4yXT12O2NbMjIxODg+PjJdPWU7Y1tlKzQ+PjJdPXZ8MTtjW2Urdj4+Ml09djtpPWQ7cmV0dXJufW49KG8mLTgpK258MDttPW8+Pj4zO2Rve2lmKCEobz4+PjA8MjU2KSl7az1jW2ErKGIrMjQpPj4yXXwwO209Y1thKyhiKzEyKT4+Ml18MDtkb3tpZigobXwwKT09KGh8MCkpe289YSsoYisyMCl8MDttPWNbbz4+Ml18MDtpZigobXwwKT09MCl7bz1hKyhiKzE2KXwwO209Y1tvPj4yXXwwO2lmKChtfDApPT0wKXtqPTA7YnJlYWt9fXdoaWxlKDEpe3E9bSsyMHwwO3A9Y1txPj4yXXwwO2lmKChwfDApIT0wKXttPXA7bz1xO2NvbnRpbnVlfXA9bSsxNnwwO3E9Y1twPj4yXXwwO2lmKChxfDApPT0wKXticmVha31lbHNle209cTtvPXB9fWlmKG8+Pj4wPGw+Pj4wKXtYYigpfWVsc2V7Y1tvPj4yXT0wO2o9bTticmVha319ZWxzZXtvPWNbYSsoYis4KT4+Ml18MDtpZihvPj4+MDxsPj4+MCl7WGIoKX1sPW8rMTJ8MDtpZigoY1tsPj4yXXwwKSE9KGh8MCkpe1hiKCl9cD1tKzh8MDtpZigoY1twPj4yXXwwKT09KGh8MCkpe2NbbD4+Ml09bTtjW3A+PjJdPW87aj1tO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChrfDApIT0wKXtsPWNbYSsoYisyOCk+PjJdfDA7bT0yMjQ3MisobDw8Mil8MDtpZigoaHwwKT09KGNbbT4+Ml18MCkpe2NbbT4+Ml09ajtpZigoanwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxsKTticmVha319ZWxzZXtpZihrPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWw9aysxNnwwO2lmKChjW2w+PjJdfDApPT0oaHwwKSl7Y1tsPj4yXT1qfWVsc2V7Y1trKzIwPj4yXT1qfWlmKChqfDApPT0wKXticmVha319aWYoaj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2orMjQ+PjJdPWs7aD1jW2ErKGIrMTYpPj4yXXwwO2Rve2lmKChofDApIT0wKXtpZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tqKzE2Pj4yXT1oO2NbaCsyND4+Ml09ajticmVha319fXdoaWxlKDApO2g9Y1thKyhiKzIwKT4+Ml18MDtpZigoaHwwKSE9MCl7aWYoaD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbaisyMD4+Ml09aDtjW2grMjQ+PjJdPWo7YnJlYWt9fX19ZWxzZXtqPWNbYSsoYis4KT4+Ml18MDthPWNbYSsoYisxMik+PjJdfDA7Yj0yMjIwOCsobTw8MTw8Mil8MDtpZigoanwwKSE9KGJ8MCkpe2lmKGo+Pj4wPGw+Pj4wKXtYYigpfWlmKChjW2orMTI+PjJdfDApIT0oaHwwKSl7WGIoKX19aWYoKGF8MCk9PShqfDApKXtjWzU1NDJdPWNbNTU0Ml0mfigxPDxtKTticmVha31pZigoYXwwKSE9KGJ8MCkpe2lmKGE+Pj4wPGw+Pj4wKXtYYigpfWI9YSs4fDA7aWYoKGNbYj4+Ml18MCk9PShofDApKXtrPWJ9ZWxzZXtYYigpfX1lbHNle2s9YSs4fDB9Y1tqKzEyPj4yXT1hO2Nbaz4+Ml09an19d2hpbGUoMCk7Y1tlKzQ+PjJdPW58MTtjW2Urbj4+Ml09bjtpZigoZXwwKT09KGNbMjIxODg+PjJdfDApKXtjWzIyMTc2Pj4yXT1uO2k9ZDtyZXR1cm59fWVsc2V7Y1ttPj4yXT1vJi0yO2NbZSs0Pj4yXT1ufDE7Y1tlK24+PjJdPW59YT1uPj4+MztpZihuPj4+MDwyNTYpe2I9YTw8MTtoPTIyMjA4KyhiPDwyKXwwO2o9Y1s1NTQyXXwwO2E9MTw8YTtpZigoaiZhfDApIT0wKXtiPTIyMjA4KyhiKzI8PDIpfDA7YT1jW2I+PjJdfDA7aWYoYT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2c9YjtmPWF9fWVsc2V7Y1s1NTQyXT1qfGE7Zz0yMjIwOCsoYisyPDwyKXwwO2Y9aH1jW2c+PjJdPWU7Y1tmKzEyPj4yXT1lO2NbZSs4Pj4yXT1mO2NbZSsxMj4+Ml09aDtpPWQ7cmV0dXJufWY9bj4+Pjg7aWYoKGZ8MCkhPTApe2lmKG4+Pj4wPjE2Nzc3MjE1KXtmPTMxfWVsc2V7dT0oZisxMDQ4MzIwfDApPj4+MTYmODt2PWY8PHU7dD0odis1MjAxOTJ8MCk+Pj4xNiY0O3Y9djw8dDtmPSh2KzI0NTc2MHwwKT4+PjE2JjI7Zj0xNC0odHx1fGYpKyh2PDxmPj4+MTUpfDA7Zj1uPj4+KGYrN3wwKSYxfGY8PDF9fWVsc2V7Zj0wfWE9MjI0NzIrKGY8PDIpfDA7Y1tlKzI4Pj4yXT1mO2NbZSsyMD4+Ml09MDtjW2UrMTY+PjJdPTA7aD1jWzIyMTcyPj4yXXwwO2c9MTw8ZjtpZigoaCZnfDApPT0wKXtjWzIyMTcyPj4yXT1ofGc7Y1thPj4yXT1lO2NbZSsyND4+Ml09YTtjW2UrMTI+PjJdPWU7Y1tlKzg+PjJdPWU7aT1kO3JldHVybn1nPWNbYT4+Ml18MDtpZigoZnwwKT09MzEpe2Y9MH1lbHNle2Y9MjUtKGY+Pj4xKXwwfWE6ZG97aWYoKGNbZys0Pj4yXSYtOHwwKSE9KG58MCkpe2Y9bjw8ZjthPWc7d2hpbGUoMSl7aD1hKyhmPj4+MzE8PDIpKzE2fDA7Zz1jW2g+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShufDApKXticmVhayBhfWVsc2V7Zj1mPDwxO2E9Z319aWYoaD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2g+PjJdPWU7Y1tlKzI0Pj4yXT1hO2NbZSsxMj4+Ml09ZTtjW2UrOD4+Ml09ZTtpPWQ7cmV0dXJufX13aGlsZSgwKTtmPWcrOHwwO2E9Y1tmPj4yXXwwO2g9Y1syMjE4ND4+Ml18MDtpZihnPj4+MDxoPj4+MCl7WGIoKX1pZihhPj4+MDxoPj4+MCl7WGIoKX1jW2ErMTI+PjJdPWU7Y1tmPj4yXT1lO2NbZSs4Pj4yXT1hO2NbZSsxMj4+Ml09ZztjW2UrMjQ+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiB5bihhKXthPWF8MDt2YXIgYj0wO2I9aTtSYihhfDApO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIHpuKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBBbihhKXthPWF8MDtyZXR1cm4gMjI2OTZ9ZnVuY3Rpb24gQm4oYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO2g9aTtpZihlPj4+MD4zNil7Y1soYmIoKXwwKT4+Ml09MjI7cz0wO3Q9MDtJPXM7aT1oO3JldHVybiB0fDB9az1iKzR8MDtqPWIrMTAwfDA7ZG97bD1jW2s+PjJdfDA7aWYobD4+PjA8KGNbaj4+Ml18MCk+Pj4wKXtjW2s+PjJdPWwrMTtvPWRbbD4+MF18MH1lbHNle289RG4oYil8MH19d2hpbGUoKG98MCk9PTMyfChvKyAtOXwwKT4+PjA8NSk7ZG97aWYoKG98MCk9PTQzfChvfDApPT00NSl7bD0oKG98MCk9PTQ1KTw8MzE+PjMxO209Y1trPj4yXXwwO2lmKG0+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1tKzE7bz1kW20+PjBdfDA7YnJlYWt9ZWxzZXtvPURuKGIpfDA7YnJlYWt9fWVsc2V7bD0wfX13aGlsZSgwKTttPShlfDApPT0wO2Rve2lmKChlJi0xN3wwKT09MCYob3wwKT09NDgpe249Y1trPj4yXXwwO2lmKG4+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1uKzE7bz1kW24+PjBdfDB9ZWxzZXtvPURuKGIpfDB9aWYoKG98MzJ8MCkhPTEyMCl7ZT1tPzg6ZTttPTI4O2JyZWFrfWU9Y1trPj4yXXwwO2lmKGU+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1lKzE7bz1kW2U+PjBdfDB9ZWxzZXtvPURuKGIpfDB9aWYoKGRbbysyMjc0NT4+MF18MCk+MTUpe2lmKChjW2o+PjJdfDApPT0wKXtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH1jW2s+PjJdPShjW2s+PjJdfDApKyAtMjtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH1lbHNle2U9MTY7bT00M319ZWxzZXtlPW0/MTA6ZTtpZigoZFtvKzIyNzQ1Pj4wXXwwKT4+PjA8ZT4+PjApe209Mjh9ZWxzZXtmPWNbaz4+Ml18MDtpZigoY1tqPj4yXXwwKSE9MCl7Zj1mKyAtMXwwO2Nbaz4+Ml09Zn1jW2IrMTA0Pj4yXT0wO3M9Y1tiKzg+PjJdfDA7Y1tiKzEwOD4+Ml09cy1mO2Nbaj4+Ml09cztjWyhiYigpfDApPj4yXT0yMjtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH19fXdoaWxlKDApO2lmKChtfDApPT0yOCl7aWYoKGV8MCk9PTEwKXtlPW8rIC00OHwwO2lmKGU+Pj4wPDEwKXtuPTA7d2hpbGUoMSl7bj1uK2V8MDtlPWNbaz4+Ml18MDtpZihlPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09ZSsxO289ZFtlPj4wXXwwfWVsc2V7bz1EbihiKXwwfWU9bysgLTQ4fDA7aWYoIShlPj4+MDwxMCZuPj4+MDw0Mjk0OTY3MjkpKXticmVha31uPW4qMTB8MH1wPTB9ZWxzZXtuPTA7cD0wfWU9bysgLTQ4fDA7aWYoZT4+PjA8MTApe2Rve3M9Vm4obnwwLHB8MCwxMCwwKXwwO3I9STtxPSgoZXwwKTwwKTw8MzE+PjMxO3Q9fnE7aWYocj4+PjA+dD4+PjB8KHJ8MCk9PSh0fDApJnM+Pj4wPn5lPj4+MCl7YnJlYWt9bj1JbihzfDAscnwwLGV8MCxxfDApfDA7cD1JO2U9Y1trPj4yXXwwO2lmKGU+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1lKzE7bz1kW2U+PjBdfDB9ZWxzZXtvPURuKGIpfDB9ZT1vKyAtNDh8MH13aGlsZShlPj4+MDwxMCYocD4+PjA8NDI5NDk2NzI5fChwfDApPT00Mjk0OTY3Mjkmbj4+PjA8MjU3Njk4MDM3OCkpO2lmKCEoZT4+PjA+OSkpe2U9MTA7bT02OX19fWVsc2V7bT00M319YTpkb3tpZigobXwwKT09NDMpe2lmKChlKyAtMSZlfDApPT0wKXttPWFbMjMwMDgrKChlKjIzfDApPj4+NSY3KT4+MF18MDtyPWFbbysyMjc0NT4+MF18MDtuPXImMjU1O2lmKG4+Pj4wPGU+Pj4wKXtvPW47bj0wO2Rve249b3xuPDxtO289Y1trPj4yXXwwO2lmKG8+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1vKzE7cz1kW28+PjBdfDB9ZWxzZXtzPURuKGIpfDB9cj1hW3MrMjI3NDU+PjBdfDA7bz1yJjI1NX13aGlsZShvPj4+MDxlPj4+MCZuPj4+MDwxMzQyMTc3MjgpO3A9MH1lbHNle3A9MDtuPTA7cz1vfXE9S24oLTEsLTEsbXwwKXwwO289STtpZigociYyNTUpPj4+MD49ZT4+PjB8KHA+Pj4wPm8+Pj4wfChwfDApPT0ob3wwKSZuPj4+MD5xPj4+MCkpe289czttPTY5O2JyZWFrfXdoaWxlKDEpe249T24obnwwLHB8MCxtfDApfDA7cD1JO249ciYyNTV8bjtyPWNbaz4+Ml18MDtpZihyPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09cisxO3M9ZFtyPj4wXXwwfWVsc2V7cz1EbihiKXwwfXI9YVtzKzIyNzQ1Pj4wXXwwO2lmKChyJjI1NSk+Pj4wPj1lPj4+MHwocD4+PjA+bz4+PjB8KHB8MCk9PShvfDApJm4+Pj4wPnE+Pj4wKSl7bz1zO209Njk7YnJlYWsgYX19fXE9YVtvKzIyNzQ1Pj4wXXwwO209cSYyNTU7aWYobT4+PjA8ZT4+PjApe249MDtkb3tuPW0rKGVhKG4sZSl8MCl8MDttPWNbaz4+Ml18MDtpZihtPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09bSsxO3I9ZFttPj4wXXwwfWVsc2V7cj1EbihiKXwwfXE9YVtyKzIyNzQ1Pj4wXXwwO209cSYyNTV9d2hpbGUobT4+PjA8ZT4+PjAmbj4+PjA8MTE5MzA0NjQ3KTtwPTB9ZWxzZXtuPTA7cD0wO3I9b31pZigocSYyNTUpPj4+MDxlPj4+MCl7bT1XbigtMSwtMSxlfDAsMCl8MDtvPUk7d2hpbGUoMSl7aWYocD4+PjA+bz4+PjB8KHB8MCk9PShvfDApJm4+Pj4wPm0+Pj4wKXtvPXI7bT02OTticmVhayBhfXM9Vm4obnwwLHB8MCxlfDAsMCl8MDt0PUk7cT1xJjI1NTtpZih0Pj4+MD40Mjk0OTY3Mjk1fCh0fDApPT0tMSZzPj4+MD5+cT4+PjApe289cjttPTY5O2JyZWFrIGF9bj1JbihxfDAsMCxzfDAsdHwwKXwwO3A9STtxPWNbaz4+Ml18MDtpZihxPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09cSsxO3I9ZFtxPj4wXXwwfWVsc2V7cj1EbihiKXwwfXE9YVtyKzIyNzQ1Pj4wXXwwO2lmKCEoKHEmMjU1KT4+PjA8ZT4+PjApKXtvPXI7bT02OTticmVha319fWVsc2V7bz1yO209Njl9fX13aGlsZSgwKTtpZigobXwwKT09Njkpe2lmKChkW28rMjI3NDU+PjBdfDApPj4+MDxlPj4+MCl7ZG97bT1jW2s+PjJdfDA7aWYobT4+PjA8KGNbaj4+Ml18MCk+Pj4wKXtjW2s+PjJdPW0rMTttPWRbbT4+MF18MH1lbHNle209RG4oYil8MH19d2hpbGUoKGRbbSsyMjc0NT4+MF18MCk+Pj4wPGU+Pj4wKTtjWyhiYigpfDApPj4yXT0zNDtwPWc7bj1mfX1pZigoY1tqPj4yXXwwKSE9MCl7Y1trPj4yXT0oY1trPj4yXXwwKSsgLTF9aWYoIShwPj4+MDxnPj4+MHwocHwwKT09KGd8MCkmbj4+PjA8Zj4+PjApKXtpZigoZiYxfDApPT0wJjA9PTAmKGx8MCk9PTApe2NbKGJiKCl8MCk+PjJdPTM0O3Q9SW4oZnwwLGd8MCwtMSwtMSl8MDtzPUk7ST1zO2k9aDtyZXR1cm4gdHwwfWlmKHA+Pj4wPmc+Pj4wfChwfDApPT0oZ3wwKSZuPj4+MD5mPj4+MCl7Y1soYmIoKXwwKT4+Ml09MzQ7cz1nO3Q9ZjtJPXM7aT1oO3JldHVybiB0fDB9fXQ9KChsfDApPDApPDwzMT4+MzE7dD1IbihuXmx8MCxwXnR8MCxsfDAsdHwwKXwwO3M9STtJPXM7aT1oO3JldHVybiB0fDB9ZnVuY3Rpb24gQ24oYSl7YT1hfDA7dmFyIGI9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZT1pO2Y9YSs0fDA7Zz1jW2Y+PjJdfDA7Yj1hKzEwMHwwO2lmKGc+Pj4wPChjW2I+PjJdfDApPj4+MCl7Y1tmPj4yXT1nKzE7aj1kW2c+PjBdfDB9ZWxzZXtqPURuKGEpfDB9aWYoKGp8MCk9PTQzfChqfDApPT00NSl7Zz0oanwwKT09NDUmMTtoPWNbZj4+Ml18MDtpZihoPj4+MDwoY1tiPj4yXXwwKT4+PjApe2NbZj4+Ml09aCsxO2o9ZFtoPj4wXXwwfWVsc2V7aj1EbihhKXwwfWlmKCEoKGorIC00OHwwKT4+PjA8MTApPyhjW2I+PjJdfDApIT0wOjApe2NbZj4+Ml09KGNbZj4+Ml18MCkrIC0xfX1lbHNle2c9MH1pZigoaisgLTQ4fDApPj4+MD45KXtpZigoY1tiPj4yXXwwKT09MCl7az0tMjE0NzQ4MzY0ODtsPTA7ST1rO2k9ZTtyZXR1cm4gbHwwfWNbZj4+Ml09KGNbZj4+Ml18MCkrIC0xO2s9LTIxNDc0ODM2NDg7bD0wO0k9aztpPWU7cmV0dXJuIGx8MH1lbHNle2g9MH13aGlsZSgxKXtoPWorIC00OCtofDA7aj1jW2Y+PjJdfDA7aWYoaj4+PjA8KGNbYj4+Ml18MCk+Pj4wKXtjW2Y+PjJdPWorMTtqPWRbaj4+MF18MH1lbHNle2o9RG4oYSl8MH1sPShqKyAtNDh8MCk+Pj4wPDEwO2lmKCEobCYoaHwwKTwyMTQ3NDgzNjQpKXticmVha31oPWgqMTB8MH1rPSgoaHwwKTwwKTw8MzE+PjMxO2lmKGwpe2Rve2s9Vm4oaHwwLGt8MCwxMCwwKXwwO2g9STtqPUluKGp8MCwoKGp8MCk8MCk8PDMxPj4zMXwwLC00OCwtMSl8MDtoPUluKGp8MCxJfDAsa3wwLGh8MCl8MDtrPUk7aj1jW2Y+PjJdfDA7aWYoaj4+PjA8KGNbYj4+Ml18MCk+Pj4wKXtjW2Y+PjJdPWorMTtqPWRbaj4+MF18MH1lbHNle2o9RG4oYSl8MH19d2hpbGUoKGorIC00OHwwKT4+PjA8MTAmKChrfDApPDIxNDc0ODM2fChrfDApPT0yMTQ3NDgzNiZoPj4+MDwyMDYxNTg0MzAyKSl9aWYoKGorIC00OHwwKT4+PjA8MTApe2Rve2o9Y1tmPj4yXXwwO2lmKGo+Pj4wPChjW2I+PjJdfDApPj4+MCl7Y1tmPj4yXT1qKzE7aj1kW2o+PjBdfDB9ZWxzZXtqPURuKGEpfDB9fXdoaWxlKChqKyAtNDh8MCk+Pj4wPDEwKX1pZigoY1tiPj4yXXwwKSE9MCl7Y1tmPj4yXT0oY1tmPj4yXXwwKSsgLTF9aj0oZ3wwKSE9MDtsPUhuKDAsMCxofDAsa3wwKXwwO2s9aj9JOms7bD1qP2w6aDtJPWs7aT1lO3JldHVybiBsfDB9ZnVuY3Rpb24gRG4oYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtlPWk7aD1iKzEwNHwwO2w9Y1toPj4yXXwwO2lmKCEoKGx8MCkhPTA/KGNbYisxMDg+PjJdfDApPj0obHwwKTowKSl7Zz0zfWlmKChnfDApPT0zPyhmPUVuKGIpfDAsKGZ8MCk+PTApOjApe2w9Y1toPj4yXXwwO2g9Y1tiKzg+PjJdfDA7az1jW2IrND4+Ml18MDtpZigobHwwKSE9MD8oaj1sLShjW2IrMTA4Pj4yXXwwKSsgLTF8MCwoaC1rfDApPihqfDApKTowKXtjW2IrMTAwPj4yXT1rK2p9ZWxzZXtnPTh9aWYoKGd8MCk9PTgpe2NbYisxMDA+PjJdPWh9aWYoKGh8MCkhPTApe2w9YisxMDh8MDtjW2w+PjJdPWgrMS1rKyhjW2w+PjJdfDApfWI9aysgLTF8MDtpZigoZFtiPj4wXXwwfDApPT0oZnwwKSl7bD1mO2k9ZTtyZXR1cm4gbHwwfWFbYj4+MF09ZjtsPWY7aT1lO3JldHVybiBsfDB9Y1tiKzEwMD4+Ml09MDtsPS0xO2k9ZTtyZXR1cm4gbHwwfWZ1bmN0aW9uIEVuKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2c9aTtpPWkrMTZ8MDtlPWc7Zj1iKzh8MDtkb3tpZigoY1tmPj4yXXwwKT09MCl7aj1iKzc0fDA7aD1hW2o+PjBdfDA7YVtqPj4wXT1oKzI1NXxoO2o9YisyMHwwO2g9Yis0NHwwO2lmKChjW2o+PjJdfDApPj4+MD4oY1toPj4yXXwwKT4+PjApe2hjW2NbYiszNj4+Ml0mNjNdKGIsMCwwKXwwfWNbYisxNj4+Ml09MDtjW2IrMjg+PjJdPTA7Y1tqPj4yXT0wO2o9Y1tiPj4yXXwwO2lmKChqJjIwfDApPT0wKXtqPWNbaD4+Ml18MDtjW2Y+PjJdPWo7Y1tiKzQ+PjJdPWo7YnJlYWt9aWYoKGomNHwwKT09MCl7aj0tMTtpPWc7cmV0dXJuIGp8MH1jW2I+PjJdPWp8MzI7aj0tMTtpPWc7cmV0dXJuIGp8MH19d2hpbGUoMCk7aWYoKGhjW2NbYiszMj4+Ml0mNjNdKGIsZSwxKXwwKSE9MSl7aj0tMTtpPWc7cmV0dXJuIGp8MH1qPWRbZT4+MF18MDtpPWc7cmV0dXJuIGp8MH1mdW5jdGlvbiBGbihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MC4wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLjAsSj0wLEs9MCxMPTAuMCxNPTAuMCxOPTAuMCxPPTAuMDtmPWk7aT1pKzYyNHwwO289ZisxMTJ8MDtxPWY7bD1xKzB8MDtqPWwrMTA4fDA7ZG97Y1tsPj4yXT0wO2w9bCs0fDB9d2hpbGUoKGx8MCk8KGp8MCkpO209cSs0fDA7Y1ttPj4yXT1iO2w9cSs4fDA7Y1tsPj4yXT0tMTtjW3ErNDQ+PjJdPWI7Y1txKzc2Pj4yXT0tMTtzPXErMTA0fDA7Y1tzPj4yXT0wO2o9cSsxMDh8MDtjW2o+PjJdPX5iO3A9cSsxMDB8MDtjW3A+PjJdPS0xO249Yjt6PS0xO3doaWxlKDEpe2lmKG4+Pj4wPHo+Pj4wKXtjW20+PjJdPW4rMTt6PWRbbj4+MF18MH1lbHNle3o9RG4ocSl8MH1pZighKCh6fDApPT0zMnwoeisgLTl8MCk+Pj4wPDUpKXticmVha31uPWNbbT4+Ml18MDt6PWNbcD4+Ml18MH1kb3tpZigoenwwKT09NDN8KHp8MCk9PTQ1KXtuPTEtKCgoenwwKT09NDUmMSk8PDEpfDA7ej1jW20+PjJdfDA7aWYoej4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXorMTt6PWRbej4+MF18MDticmVha31lbHNle3o9RG4ocSl8MDticmVha319ZWxzZXtuPTF9fXdoaWxlKDApO0I9MDtkb3tpZigoenwzMnwwKSE9KGFbMjMwMjQrQj4+MF18MCkpe2JyZWFrfWRve2lmKEI+Pj4wPDcpe3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDA7YnJlYWt9ZWxzZXt6PURuKHEpfDA7YnJlYWt9fX13aGlsZSgwKTtCPUIrMXwwfXdoaWxlKEI+Pj4wPDgpO2E6ZG97aWYoKEJ8MCk9PTMpe2c9MjF9ZWxzZSBpZigoQnwwKSE9OCl7aWYoIShCPj4+MDw0KSl7aWYoKEJ8MCk9PTgpe2c9MjU7YnJlYWt9ZWxzZXtnPTIxO2JyZWFrfX1iOmRve2lmKChCfDApPT0wKXtCPTA7ZG97aWYoKHp8MzJ8MCkhPShhWzIzMDQwK0I+PjBdfDApKXticmVhayBifWRve2lmKEI+Pj4wPDIpe3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDA7YnJlYWt9ZWxzZXt6PURuKHEpfDA7YnJlYWt9fX13aGlsZSgwKTtCPUIrMXwwfXdoaWxlKEI+Pj4wPDMpfX13aGlsZSgwKTtpZigoQnwwKT09MCl7ZG97aWYoKHp8MCk9PTQ4KXt6PWNbbT4+Ml18MDtpZih6Pj4+MDwoY1twPj4yXXwwKT4+PjApe2NbbT4+Ml09eisxO3o9ZFt6Pj4wXXwwfWVsc2V7ej1EbihxKXwwfWlmKCh6fDMyfDApIT0xMjApe2lmKChjW3A+PjJdfDApPT0wKXt6PTQ4O2JyZWFrfWNbbT4+Ml09KGNbbT4+Ml18MCkrIC0xO3o9NDg7YnJlYWt9bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtGPWRbbz4+MF18MDtEPTB9ZWxzZXtGPURuKHEpfDA7RD0wfXdoaWxlKDEpe2lmKChGfDApPT00Nil7Zz02NTticmVha31lbHNlIGlmKChGfDApIT00OCl7bz0wO3M9MDtBPTA7ej0wO0M9MDtFPTA7SD0xLjA7Qj0wO3c9MC4wO2JyZWFrfW89Y1ttPj4yXXwwO2lmKG8+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1vKzE7Rj1kW28+PjBdfDA7RD0xO2NvbnRpbnVlfWVsc2V7Rj1EbihxKXwwO0Q9MTtjb250aW51ZX19Yzpkb3tpZigoZ3wwKT09NjUpe289Y1ttPj4yXXwwO2lmKG8+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1vKzE7Rj1kW28+PjBdfDB9ZWxzZXtGPURuKHEpfDB9aWYoKEZ8MCk9PTQ4KXtBPS0xO3o9LTE7d2hpbGUoMSl7bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtGPWRbbz4+MF18MH1lbHNle0Y9RG4ocSl8MH1pZigoRnwwKSE9NDgpe289MDtzPTA7RD0xO0M9MTtFPTA7SD0xLjA7Qj0wO3c9MC4wO2JyZWFrIGN9Sz1JbihBfDAsenwwLC0xLC0xKXwwO0E9Szt6PUl9fWVsc2V7bz0wO3M9MDtBPTA7ej0wO0M9MTtFPTA7SD0xLjA7Qj0wO3c9MC4wfX19d2hpbGUoMCk7ZDp3aGlsZSgxKXtLPUYrIC00OHwwO2Rve2lmKCEoSz4+PjA8MTApKXtHPUZ8MzI7Sj0oRnwwKT09NDY7aWYoISgoRysgLTk3fDApPj4+MDw2fEopKXticmVhayBkfWlmKEope2lmKChDfDApPT0wKXtBPXM7ej1vO0M9MTticmVha31lbHNle0Y9NDY7YnJlYWsgZH19ZWxzZXtLPShGfDApPjU3P0crIC04N3wwOks7Zz03OTticmVha319ZWxzZXtnPTc5fX13aGlsZSgwKTtpZigoZ3wwKT09Nzkpe2c9MDtkb3tpZighKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCkpe2lmKChvfDApPDB8KG98MCk9PTAmcz4+PjA8MTQpe049SCouMDYyNTtMPU47dz13K04qKyhLfDApO2JyZWFrfWlmKChLfDApIT0wJihFfDApPT0wKXtFPTE7TD1IO3c9dytIKi41fWVsc2V7TD1IfX1lbHNle0w9SDtCPUsrKEI8PDQpfDB9fXdoaWxlKDApO3M9SW4oc3wwLG98MCwxLDApfDA7bz1JO0Q9MTtIPUx9Rj1jW20+PjJdfDA7aWYoRj4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPUYrMTtGPWRbRj4+MF18MDtjb250aW51ZX1lbHNle0Y9RG4ocSl8MDtjb250aW51ZX19aWYoKER8MCk9PTApe2lmKChjW3A+PjJdfDApIT0wPyh2PWNbbT4+Ml18MCxjW20+PjJdPXYrIC0yLChDfDApIT0wKTowKXtjW20+PjJdPXYrIC0zfXc9KyhufDApKjAuMDticmVhayBhfUs9KEN8MCk9PTA7dj1LP3M6QTt6PUs/bzp6O2lmKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCl7ZG97Qj1CPDw0O3M9SW4oc3wwLG98MCwxLDApfDA7bz1JfXdoaWxlKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCl9aWYoISgoRnwzMnwwKT09MTEyPyh1PUNuKHEpfDAsdD1JLCEoKHV8MCk9PTAmKHR8MCk9PS0yMTQ3NDgzNjQ4KSk6MCkpe2lmKChjW3A+PjJdfDApPT0wKXt1PTA7dD0wfWVsc2V7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTE7dT0wO3Q9MH19bz1Pbih2fDAsenwwLDIpfDA7bz1JbihvfDAsSXwwLC0zMiwtMSl8MDtvPUluKG98MCxJfDAsdXwwLHR8MCl8MDtwPUk7aWYoKEJ8MCk9PTApe3c9KyhufDApKjAuMDticmVhayBhfWlmKChwfDApPjB8KHB8MCk9PTAmbz4+PjA+MTA3NCl7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7YnJlYWsgYX1pZigocHwwKTwtMXwocHwwKT09LTEmbz4+PjA8NDI5NDk2NjExNil7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWsgYX1pZigoQnwwKT4tMSl7ZG97Qj1CPDwxO2lmKCEodz49LjUpKXtIPXd9ZWxzZXtIPXcrLTEuMDtCPUJ8MX13PXcrSDtvPUluKG98MCxwfDAsLTEsLTEpfDA7cD1JfXdoaWxlKChCfDApPi0xKX1wPUluKG98MCxwfDAsMTEwNiwwKXwwO0s9STtkb3tpZigoS3wwKTwwfChLfDApPT0wJnA+Pj4wPDUzPyhyPShwfDApPDA/MDpwLChyfDApPDUzKTowKXtwPTg0LXJ8MDtkb3tpZigocHwwKT4xMDIzKXtxPXArIC0xMDIzfDA7aWYoKHF8MCk8PTEwMjMpe3A9cTtIPTguOTg4NDY1Njc0MzExNThlKzMwNzticmVha31wPXArIC0yMDQ2fDA7cD0ocHwwKT4xMDIzPzEwMjM6cDtIPXl9ZWxzZXtpZighKChwfDApPC0xMDIyKSl7SD0xLjA7YnJlYWt9cT1wKzEwMjJ8MDtpZighKChxfDApPC0xMDIyKSl7cD1xO0g9Mi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWt9cD1wKzIwNDR8MDtwPShwfDApPC0xMDIyPy0xMDIyOnA7SD0wLjB9fXdoaWxlKDApO0o9T24ocCsxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO009KyhufDApO0w9K1NiKCsoSCoraFtrPj4zXSksK00pO2lmKCEoKHJ8MCk8MzImdyE9MC4wKSl7SD1NO2JyZWFrfUs9QiYxO0g9TTtCPShLXjEpK0J8MDt3PShLfDApPT0wPzAuMDp3fWVsc2V7Zz0xMTR9fXdoaWxlKDApO2lmKChnfDApPT0xMTQpe0g9KyhufDApO0w9MC4wfXc9SCp3KyhMK0gqKyhCPj4+MCkpLUw7aWYoISh3IT0wLjApKXtjWyhiYigpfDApPj4yXT0zNH1kb3tpZigob3wwKT4xMDIzKXt3PXcqOC45ODg0NjU2NzQzMTE1OGUrMzA3O249bysgLTEwMjN8MDtpZigobnwwKTw9MTAyMyl7bz1uO2JyZWFrfW89bysgLTIwNDZ8MDtvPShvfDApPjEwMjM/MTAyMzpvO3c9dyo4Ljk4ODQ2NTY3NDMxMTU4ZSszMDd9ZWxzZXtpZighKChvfDApPC0xMDIyKSl7YnJlYWt9dz13KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O249bysxMDIyfDA7aWYoISgobnwwKTwtMTAyMikpe289bjticmVha31vPW8rMjA0NHwwO289KG98MCk8LTEwMjI/LTEwMjI6bzt3PXcqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDh9fXdoaWxlKDApO0o9T24obysxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO3c9dyoraFtrPj4zXTticmVhayBhfX13aGlsZSgwKTtHPTA7d2hpbGUoMSl7aWYoKHp8MCk9PTQ2KXtnPTEzOTticmVha31lbHNlIGlmKCh6fDApIT00OCl7cj0wO0Y9MDtDPTA7YnJlYWt9cj1jW20+PjJdfDA7aWYocj4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXIrMTt6PWRbcj4+MF18MDtHPTE7Y29udGludWV9ZWxzZXt6PURuKHEpfDA7Rz0xO2NvbnRpbnVlfX1lOmRve2lmKChnfDApPT0xMzkpe3I9Y1ttPj4yXXwwO2lmKHI+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1yKzE7ej1kW3I+PjBdfDB9ZWxzZXt6PURuKHEpfDB9aWYoKHp8MCk9PTQ4KXtyPS0xO0Y9LTE7d2hpbGUoMSl7dD1jW20+PjJdfDA7aWYodD4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXQrMTt6PWRbdD4+MF18MH1lbHNle3o9RG4ocSl8MH1pZigoenwwKSE9NDgpe0c9MTtDPTE7YnJlYWsgZX1LPUluKHJ8MCxGfDAsLTEsLTEpfDA7cj1LO0Y9SX19ZWxzZXtyPTA7Rj0wO0M9MX19fXdoaWxlKDApO2Nbbz4+Ml09MDtEPXorIC00OHwwO0o9KHp8MCk9PTQ2O2Y6ZG97aWYoRD4+PjA8MTB8Sil7dD1vKzQ5NnwwO0U9MDtCPTA7QT0wO3Y9MDt1PTA7d2hpbGUoMSl7ZG97aWYoSil7aWYoKEN8MCk9PTApe3I9RTtGPUI7Qz0xfWVsc2V7YnJlYWsgZn19ZWxzZXtKPUluKEV8MCxCfDAsMSwwKXwwO0I9STtLPSh6fDApIT00ODtpZigodnwwKT49MTI1KXtpZighSyl7RT1KO2JyZWFrfWNbdD4+Ml09Y1t0Pj4yXXwxO0U9SjticmVha31FPW8rKHY8PDIpfDA7aWYoKEF8MCkhPTApe0Q9eisgLTQ4KygoY1tFPj4yXXwwKSoxMHwwKXwwfWNbRT4+Ml09RDtBPUErMXwwO0Q9KEF8MCk9PTk7RT1KO0c9MTtBPUQ/MDpBO3Y9KEQmMSkrdnwwO3U9Sz9KOnV9fXdoaWxlKDApO3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDB9ZWxzZXt6PURuKHEpfDB9RD16KyAtNDh8MDtKPSh6fDApPT00NjtpZighKEQ+Pj4wPDEwfEopKXtnPTE2MjticmVha319fWVsc2V7RT0wO0I9MDtBPTA7dj0wO3U9MDtnPTE2Mn19d2hpbGUoMCk7aWYoKGd8MCk9PTE2Mil7Sz0oQ3wwKT09MDtyPUs/RTpyO0Y9Sz9COkZ9dD0oR3wwKSE9MDtpZih0Pyh6fDMyfDApPT0xMDE6MCl7ej1DbihxKXwwO3E9STtpZigoenwwKT09MCYocXwwKT09LTIxNDc0ODM2NDgpe2lmKChjW3A+PjJdfDApPT0wKXt6PTA7cT0wfWVsc2V7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTE7ej0wO3E9MH19cj1Jbih6fDAscXwwLHJ8MCxGfDApfDA7Rj1JfWVsc2V7aWYoKHp8MCk+LTE/KGNbcD4+Ml18MCkhPTA6MCl7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTF9fWlmKCF0KXtjWyhiYigpfDApPj4yXT0yMjtjW3M+PjJdPTA7Sz1jW2w+PjJdfDA7Y1tqPj4yXT1LLShjW20+PjJdfDApO2NbcD4+Ml09Szt3PTAuMDticmVha31wPWNbbz4+Ml18MDtpZigocHwwKT09MCl7dz0rKG58MCkqMC4wO2JyZWFrfWlmKChyfDApPT0oRXwwKSYoRnwwKT09KEJ8MCkmKChCfDApPDB8KEJ8MCk9PTAmRT4+PjA8MTApKXt3PSsobnwwKSorKHA+Pj4wKTticmVha31pZigoRnwwKT4wfChGfDApPT0wJnI+Pj4wPjUzNyl7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7YnJlYWt9aWYoKEZ8MCk8LTF8KEZ8MCk9PS0xJnI+Pj4wPDQyOTQ5NjYxMTYpe2NbKGJiKCl8MCk+PjJdPTM0O3c9KyhufDApKjIuMjI1MDczODU4NTA3MjAxNGUtMzA4KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O2JyZWFrfWlmKChBfDApIT0wKXtpZigoQXwwKTw5KXtxPW8rKHY8PDIpfDA7cD1jW3E+PjJdfDA7ZG97cD1wKjEwfDA7QT1BKzF8MH13aGlsZSgoQXwwKSE9OSk7Y1txPj4yXT1wfXY9disxfDB9ZG97aWYoKHV8MCk8OT8odXwwKTw9KHJ8MCkmKHJ8MCk8MTg6MCl7aWYoKHJ8MCk9PTkpe3c9KyhufDApKisoKGNbbz4+Ml18MCk+Pj4wKTticmVhayBhfWlmKChyfDApPDkpe3c9KyhufDApKisoKGNbbz4+Ml18MCk+Pj4wKS8rKGNbMjMwNTYrKDgtcjw8Mik+PjJdfDApO2JyZWFrIGF9Sz0oZWEociwtMyl8MCkrODB8MDtwPWNbbz4+Ml18MDtpZigoS3wwKTw9MzA/KHA+Pj5LfDApIT0wOjApe2JyZWFrfXc9KyhufDApKisocD4+PjApKisoY1syMzA1NisocisgLTEwPDwyKT4+Ml18MCk7YnJlYWsgYX19d2hpbGUoMCk7cD0ocnwwKSU5fDA7aWYoKHB8MCk9PTApe3A9MDtxPTB9ZWxzZXtzPShyfDApPi0xP3A6cCs5fDA7cT1jWzIzMDU2Kyg4LXM8PDIpPj4yXXwwO2lmKCh2fDApIT0wKXt0PTFlOS8ocXwwKXwwO3A9MDt6PTA7dT0wO2Rve0c9bysodTw8Mil8MDtKPWNbRz4+Ml18MDtLPSgoSj4+PjApLyhxPj4+MCl8MCkrenwwO2NbRz4+Ml09Szt6PWVhKChKPj4+MCklKHE+Pj4wKXwwLHQpfDA7Sj11O3U9dSsxfDA7aWYoKEp8MCk9PShwfDApJihLfDApPT0wKXtwPXUmMTI3O3I9cisgLTl8MH19d2hpbGUoKHV8MCkhPSh2fDApKTtpZigoenwwKSE9MCl7Y1tvKyh2PDwyKT4+Ml09ejt2PXYrMXwwfX1lbHNle3A9MDt2PTB9cT0wO3I9OS1zK3J8MH1nOndoaWxlKDEpe3M9bysocDw8Mil8MDtpZigocnwwKTwxOCl7ZG97dT0wO3M9disxMjd8MDt3aGlsZSgxKXtzPXMmMTI3O3Q9bysoczw8Mil8MDt6PU9uKGNbdD4+Ml18MCwwLDI5KXwwO3o9SW4oenwwLEl8MCx1fDAsMCl8MDt1PUk7aWYodT4+PjA+MHwodXwwKT09MCZ6Pj4+MD4xZTkpe0s9V24oenwwLHV8MCwxZTksMCl8MDt6PVhuKHp8MCx1fDAsMWU5LDApfDA7dT1LfWVsc2V7dT0wfWNbdD4+Ml09ejt0PShzfDApPT0ocHwwKTtpZighKChzfDApIT0odisxMjcmMTI3fDApfHQpKXt2PSh6fDApPT0wP3M6dn1pZih0KXticmVha31lbHNle3M9cysgLTF8MH19cT1xKyAtMjl8MH13aGlsZSgodXwwKT09MCl9ZWxzZXtpZigocnwwKSE9MTgpe2JyZWFrfWRve2lmKCEoKGNbcz4+Ml18MCk+Pj4wPDkwMDcxOTkpKXtyPTE4O2JyZWFrIGd9dT0wO3Q9disxMjd8MDt3aGlsZSgxKXt0PXQmMTI3O3o9bysodDw8Mil8MDtBPU9uKGNbej4+Ml18MCwwLDI5KXwwO0E9SW4oQXwwLEl8MCx1fDAsMCl8MDt1PUk7aWYodT4+PjA+MHwodXwwKT09MCZBPj4+MD4xZTkpe0s9V24oQXwwLHV8MCwxZTksMCl8MDtBPVhuKEF8MCx1fDAsMWU5LDApfDA7dT1LfWVsc2V7dT0wfWNbej4+Ml09QTt6PSh0fDApPT0ocHwwKTtpZighKCh0fDApIT0odisxMjcmMTI3fDApfHopKXt2PShBfDApPT0wP3Q6dn1pZih6KXticmVha31lbHNle3Q9dCsgLTF8MH19cT1xKyAtMjl8MH13aGlsZSgodXwwKT09MCl9cD1wKzEyNyYxMjc7aWYoKHB8MCk9PSh2fDApKXtLPXYrMTI3JjEyNzt2PW8rKCh2KzEyNiYxMjcpPDwyKXwwO2Nbdj4+Ml09Y1t2Pj4yXXxjW28rKEs8PDIpPj4yXTt2PUt9Y1tvKyhwPDwyKT4+Ml09dTtyPXIrOXwwfWg6d2hpbGUoMSl7cz12KzEmMTI3O3Q9bysoKHYrMTI3JjEyNyk8PDIpfDA7d2hpbGUoMSl7ej0ocnwwKT09MTg7dT0ocnwwKT4yNz85OjE7d2hpbGUoMSl7QT0wO3doaWxlKDEpe0I9QStwJjEyNztpZigoQnwwKT09KHZ8MCkpe0E9MjticmVha31CPWNbbysoQjw8Mik+PjJdfDA7RD1jWzIzMDQ4KyhBPDwyKT4+Ml18MDtpZihCPj4+MDxEPj4+MCl7QT0yO2JyZWFrfUM9QSsxfDA7aWYoQj4+PjA+RD4+PjApe2JyZWFrfWlmKChDfDApPDIpe0E9Q31lbHNle0E9QzticmVha319aWYoKEF8MCk9PTImeil7YnJlYWsgaH1xPXUrcXwwO2lmKChwfDApPT0odnwwKSl7cD12fWVsc2V7YnJlYWt9fXo9KDE8PHUpKyAtMXwwO0E9MWU5Pj4+dTtCPXA7Qz0wO2Rve0c9bysocDw8Mil8MDtKPWNbRz4+Ml18MDtLPShKPj4+dSkrQ3wwO2NbRz4+Ml09SztDPWVhKEomeixBKXwwO0s9KHB8MCk9PShCfDApJihLfDApPT0wO3A9cCsxJjEyNztyPUs/cisgLTl8MDpyO0I9Sz9wOkJ9d2hpbGUoKHB8MCkhPSh2fDApKTtpZigoQ3wwKT09MCl7cD1CO2NvbnRpbnVlfWlmKChzfDApIT0oQnwwKSl7YnJlYWt9Y1t0Pj4yXT1jW3Q+PjJdfDE7cD1CfWNbbysodjw8Mik+PjJdPUM7cD1CO3Y9c31yPXAmMTI3O2lmKChyfDApPT0odnwwKSl7Y1tvKyhzKyAtMTw8Mik+PjJdPTA7dj1zfUg9KygoY1tvKyhyPDwyKT4+Ml18MCk+Pj4wKTtyPXArMSYxMjc7aWYoKHJ8MCk9PSh2fDApKXt2PXYrMSYxMjc7Y1tvKyh2KyAtMTw8Mik+PjJdPTB9dz0rKG58MCk7SD13KihIKjEuMGU5KyArKChjW28rKHI8PDIpPj4yXXwwKT4+PjApKTtuPXErNTN8MDtyPXErMTEyN3wwO2Rve2lmKChyfDApPDUzKXtzPShyfDApPDA/MDpyO2lmKChzfDApPj01Myl7TT0wLjA7dD0xO049MC4wO2JyZWFrfXQ9MTA1LXN8MDtkb3tpZigodHwwKT4xMDIzKXt1PXQrIC0xMDIzfDA7aWYoKHV8MCk8PTEwMjMpe3Q9dTtMPTguOTg4NDY1Njc0MzExNThlKzMwNzticmVha310PXQrIC0yMDQ2fDA7dD0odHwwKT4xMDIzPzEwMjM6dDtMPXl9ZWxzZXtpZighKCh0fDApPC0xMDIyKSl7TD0xLjA7YnJlYWt9dT10KzEwMjJ8MDtpZighKCh1fDApPC0xMDIyKSl7dD11O0w9Mi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWt9dD10KzIwNDR8MDt0PSh0fDApPC0xMDIyPy0xMDIyOnQ7TD0wLjB9fXdoaWxlKDApO0s9T24odCsxMDIzfDAsMCw1Mil8MDt0PUk7Y1trPj4yXT1LO2Nbays0Pj4yXT10O0w9K1NiKCsoTCoraFtrPj4zXSksK0gpO3Q9NTMtc3wwO2Rve2lmKCh0fDApPjEwMjMpe3U9dCsgLTEwMjN8MDtpZigodXwwKTw9MTAyMyl7dD11O009OC45ODg0NjU2NzQzMTE1OGUrMzA3O2JyZWFrfXQ9dCsgLTIwNDZ8MDt0PSh0fDApPjEwMjM/MTAyMzp0O009eX1lbHNle2lmKCEoKHR8MCk8LTEwMjIpKXtNPTEuMDticmVha311PXQrMTAyMnwwO2lmKCEoKHV8MCk8LTEwMjIpKXt0PXU7TT0yLjIyNTA3Mzg1ODUwNzIwMTRlLTMwODticmVha310PXQrMjA0NHwwO3Q9KHR8MCk8LTEwMjI/LTEwMjI6dDtNPTAuMH19d2hpbGUoMCk7Sz1Pbih0KzEwMjN8MCwwLDUyKXwwO3Q9STtjW2s+PjJdPUs7Y1trKzQ+PjJdPXQ7Tz0rUGEoK0gsKyhNKitoW2s+PjNdKSk7TT1MO3Q9MTtOPU87SD1MKyhILU8pfWVsc2V7cz01MztNPTAuMDt0PTA7Tj0wLjB9fXdoaWxlKDApO3U9cCsyJjEyNztkb3tpZigodXwwKSE9KHZ8MCkpe289Y1tvKyh1PDwyKT4+Ml18MDtkb3tpZighKG8+Pj4wPDVlOCkpe2lmKG8+Pj4wPjVlOCl7Tj13Ki43NStOO2JyZWFrfWlmKChwKzMmMTI3fDApPT0odnwwKSl7Tj13Ki41K047YnJlYWt9ZWxzZXtOPXcqLjc1K047YnJlYWt9fWVsc2V7aWYoKG98MCk9PTA/KHArMyYxMjd8MCk9PSh2fDApOjApe2JyZWFrfU49dyouMjUrTn19d2hpbGUoMCk7aWYoKDUzLXN8MCk8PTEpe2JyZWFrfWlmKCtQYSgrTiwxLjApIT0wLjApe2JyZWFrfU49TisxLjB9fXdoaWxlKDApO3c9SCtOLU07ZG97aWYoKG4mMjE0NzQ4MzY0NCk+Pj4wPjEwMTkpe2lmKCtUKCt3KT49OTAwNzE5OTI1NDc0MDk5Mi4wKXt0PSh0fDApIT0wJihzfDApPT0ocnwwKT8wOnQ7cT1xKzF8MDt3PXcqLjV9aWYoKHErNTB8MCk8PTEwMjE/ISgodHwwKSE9MCZOIT0wLjApOjApe2JyZWFrfWNbKGJiKCl8MCk+PjJdPTM0fX13aGlsZSgwKTtkb3tpZigocXwwKT4xMDIzKXt3PXcqOC45ODg0NjU2NzQzMTE1OGUrMzA3O249cSsgLTEwMjN8MDtpZigobnwwKTw9MTAyMyl7cT1uO2JyZWFrfXE9cSsgLTIwNDZ8MDtxPShxfDApPjEwMjM/MTAyMzpxO3c9dyo4Ljk4ODQ2NTY3NDMxMTU4ZSszMDd9ZWxzZXtpZighKChxfDApPC0xMDIyKSl7YnJlYWt9dz13KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O249cSsxMDIyfDA7aWYoISgobnwwKTwtMTAyMikpe3E9bjticmVha31xPXErMjA0NHwwO3E9KHF8MCk8LTEwMjI/LTEwMjI6cTt3PXcqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDh9fXdoaWxlKDApO0o9T24ocSsxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO3c9dyoraFtrPj4zXTticmVha31lbHNlIGlmKChCfDApPT0zKXtuPWNbbT4+Ml18MDtpZihuPj4+MDwoY1twPj4yXXwwKT4+PjApe2NbbT4+Ml09bisxO249ZFtuPj4wXXwwfWVsc2V7bj1EbihxKXwwfWlmKChufDApPT00MCl7bj0xfWVsc2V7aWYoKGNbcD4+Ml18MCk9PTApe3c9eDticmVha31jW20+PjJdPShjW20+PjJdfDApKyAtMTt3PXg7YnJlYWt9d2hpbGUoMSl7bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtvPWRbbz4+MF18MH1lbHNle289RG4ocSl8MH1pZighKChvKyAtNDh8MCk+Pj4wPDEwfChvKyAtNjV8MCk+Pj4wPDI2KT8hKChvKyAtOTd8MCk+Pj4wPDI2fChvfDApPT05NSk6MCl7YnJlYWt9bj1uKzF8MH1pZigob3wwKT09NDEpe3c9eDticmVha31pZigoY1twPj4yXXwwKT09MCl7dz14O2JyZWFrfW89KGNbbT4+Ml18MCkrIC0xfDA7Y1ttPj4yXT1vO2lmKChufDApPT0wKXt3PXg7YnJlYWt9ZG97bj1uKyAtMXwwO289bysgLTF8MH13aGlsZSgobnwwKSE9MCk7Y1ttPj4yXT1vO3c9eDticmVha31lbHNle249Y1ttPj4yXXwwO2lmKChjW3A+PjJdfDApIT0wKXtuPW4rIC0xfDA7Y1ttPj4yXT1ufWNbKGJiKCl8MCk+PjJdPTIyO2Nbcz4+Ml09MDtLPWNbbD4+Ml18MDtjW2o+PjJdPUstbjtjW3A+PjJdPUs7dz0wLjA7YnJlYWt9fWVsc2V7Zz0yNX19d2hpbGUoMCk7aWYoKGd8MCk9PTIxKXtpZigoY1twPj4yXXwwKSE9MD8oQT0oY1ttPj4yXXwwKSsgLTF8MCxjW20+PjJdPUEsIShCPj4+MDw0KSk6MCl7ZG97QT1BKyAtMXwwO0I9QisgLTF8MH13aGlsZShCPj4+MD4zKTtjW20+PjJdPUE7Zz0yNX1lbHNle2c9MjV9fWlmKChnfDApPT0yNSl7dz0rKG58MCkqeX1nPShjW20+PjJdfDApLShjW2w+PjJdfDApKyhjW2o+PjJdfDApfDA7aWYoKGV8MCk9PTApe2k9ZjtyZXR1cm4rd31pZigoZ3wwKSE9MCl7Yj1iK2d8MH1jW2U+PjJdPWI7aT1mO3JldHVybit3fWZ1bmN0aW9uIEduKCl7Y1sxNTgwXT1vO2NbMjQ5Ml09bztjWzI1MThdPW87Y1s1MzQ2XT1vO2NbNTY4NF09b31mdW5jdGlvbiBIbihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtiPWItZC0oYz4+PjA+YT4+PjB8MCk+Pj4wO3JldHVybihJPWIsYS1jPj4+MHwwKXwwfWZ1bmN0aW9uIEluKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2M9YStjPj4+MDtyZXR1cm4oST1iK2QrKGM+Pj4wPGE+Pj4wfDApPj4+MCxjfDApfDB9ZnVuY3Rpb24gSm4oYil7Yj1ifDA7dmFyIGM9MDtjPWI7d2hpbGUoYVtjPj4wXXwwKXtjPWMrMXwwfXJldHVybiBjLWJ8MH1mdW5jdGlvbiBLbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7aWYoKGN8MCk8MzIpe0k9Yj4+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31JPTA7cmV0dXJuIGI+Pj5jLTMyfDB9ZnVuY3Rpb24gTG4oYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7aWYoKGV8MCk+PTQwOTYpcmV0dXJuIG5iKGJ8MCxkfDAsZXwwKXwwO2Y9YnwwO2lmKChiJjMpPT0oZCYzKSl7d2hpbGUoYiYzKXtpZigoZXwwKT09MClyZXR1cm4gZnwwO2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXdoaWxlKChlfDApPj00KXtjW2I+PjJdPWNbZD4+Ml07Yj1iKzR8MDtkPWQrNHwwO2U9ZS00fDB9fXdoaWxlKChlfDApPjApe2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXJldHVybiBmfDB9ZnVuY3Rpb24gTW4oYixjLGQpe2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTA7aWYoKGN8MCk8KGJ8MCkmKGJ8MCk8KGMrZHwwKSl7ZT1iO2M9YytkfDA7Yj1iK2R8MDt3aGlsZSgoZHwwKT4wKXtiPWItMXwwO2M9Yy0xfDA7ZD1kLTF8MDthW2I+PjBdPWFbYz4+MF18MH1iPWV9ZWxzZXtMbihiLGMsZCl8MH1yZXR1cm4gYnwwfWZ1bmN0aW9uIE5uKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wO2Y9YitlfDA7aWYoKGV8MCk+PTIwKXtkPWQmMjU1O2k9YiYzO2g9ZHxkPDw4fGQ8PDE2fGQ8PDI0O2c9ZiZ+MztpZihpKXtpPWIrNC1pfDA7d2hpbGUoKGJ8MCk8KGl8MCkpe2FbYj4+MF09ZDtiPWIrMXwwfX13aGlsZSgoYnwwKTwoZ3wwKSl7Y1tiPj4yXT1oO2I9Yis0fDB9fXdoaWxlKChifDApPChmfDApKXthW2I+PjBdPWQ7Yj1iKzF8MH1yZXR1cm4gYi1lfDB9ZnVuY3Rpb24gT24oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtJPWI8PGN8KGEmKDE8PGMpLTE8PDMyLWMpPj4+MzItYztyZXR1cm4gYTw8Y31JPWE8PGMtMzI7cmV0dXJuIDB9ZnVuY3Rpb24gUG4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtJPWI+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31JPShifDApPDA/LTE6MDtyZXR1cm4gYj4+Yy0zMnwwfWZ1bmN0aW9uIFFuKGIpe2I9YnwwO3ZhciBjPTA7Yz1hW24rKGI+Pj4yNCk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gY3wwO2M9YVtuKyhiPj4xNiYyNTUpPj4wXXwwO2lmKChjfDApPDgpcmV0dXJuIGMrOHwwO2M9YVtuKyhiPj44JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYysxNnwwO3JldHVybihhW24rKGImMjU1KT4+MF18MCkrMjR8MH1mdW5jdGlvbiBSbihiKXtiPWJ8MDt2YXIgYz0wO2M9YVttKyhiJjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gY3wwO2M9YVttKyhiPj44JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYys4fDA7Yz1hW20rKGI+PjE2JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYysxNnwwO3JldHVybihhW20rKGI+Pj4yNCk+PjBdfDApKzI0fDB9ZnVuY3Rpb24gU24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9YSY2NTUzNTtkPWImNjU1MzU7Yz1lYShkLGYpfDA7ZT1hPj4+MTY7ZD0oYz4+PjE2KSsoZWEoZCxlKXwwKXwwO2I9Yj4+PjE2O2E9ZWEoYixmKXwwO3JldHVybihJPShkPj4+MTYpKyhlYShiLGUpfDApKygoKGQmNjU1MzUpK2F8MCk+Pj4xNil8MCxkK2E8PDE2fGMmNjU1MzV8MCl8MH1mdW5jdGlvbiBUbihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1iPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtpPSgoYnwwKTwwPy0xOjApPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtmPWQ+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2U9KChkfDApPDA/LTE6MCk+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2g9SG4oal5hLGleYixqLGkpfDA7Zz1JO2I9Zl5qO2E9ZV5pO2E9SG4oKFluKGgsZyxIbihmXmMsZV5kLGYsZSl8MCxJLDApfDApXmIsSV5hLGIsYSl8MDtyZXR1cm4gYXwwfWZ1bmN0aW9uIFVuKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtmPWk7aT1pKzh8MDtqPWZ8MDtoPWI+PjMxfCgoYnwwKTwwPy0xOjApPDwxO2c9KChifDApPDA/LTE6MCk+PjMxfCgoYnwwKTwwPy0xOjApPDwxO2w9ZT4+MzF8KChlfDApPDA/LTE6MCk8PDE7az0oKGV8MCk8MD8tMTowKT4+MzF8KChlfDApPDA/LTE6MCk8PDE7Yj1IbihoXmEsZ15iLGgsZyl8MDthPUk7WW4oYixhLEhuKGxeZCxrXmUsbCxrKXwwLEksail8MDthPUhuKGNbaj4+Ml1eaCxjW2orND4+Ml1eZyxoLGcpfDA7Yj1JO2k9ZjtyZXR1cm4oST1iLGEpfDB9ZnVuY3Rpb24gVm4oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZT1hO2Y9YzthPVNuKGUsZil8MDtjPUk7cmV0dXJuKEk9KGVhKGIsZil8MCkrKGVhKGQsZSl8MCkrY3xjJjAsYXwwfDApfDB9ZnVuY3Rpb24gV24oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7YT1ZbihhLGIsYyxkLDApfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiBYbihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MDtnPWk7aT1pKzh8MDtmPWd8MDtZbihhLGIsZCxlLGYpfDA7aT1nO3JldHVybihJPWNbZis0Pj4yXXwwLGNbZj4+Ml18MCl8MH1mdW5jdGlvbiBZbihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7aD1hO2o9YjtpPWo7bD1kO2c9ZTtrPWc7aWYoKGl8MCk9PTApe2c9KGZ8MCkhPTA7aWYoKGt8MCk9PTApe2lmKGcpe2NbZj4+Ml09KGg+Pj4wKSUobD4+PjApO2NbZis0Pj4yXT0wfWs9MDttPShoPj4+MCkvKGw+Pj4wKT4+PjA7cmV0dXJuKEk9ayxtKXwwfWVsc2V7aWYoIWcpe2w9MDttPTA7cmV0dXJuKEk9bCxtKXwwfWNbZj4+Ml09YXwwO2NbZis0Pj4yXT1iJjA7bD0wO209MDtyZXR1cm4oST1sLG0pfDB9fW09KGt8MCk9PTA7ZG97aWYoKGx8MCkhPTApe2lmKCFtKXtrPShRbihrfDApfDApLShRbihpfDApfDApfDA7aWYoaz4+PjA8PTMxKXttPWsrMXwwO2w9MzEta3wwO2E9ay0zMT4+MzE7aj1tO2I9aD4+PihtPj4+MCkmYXxpPDxsO2E9aT4+PihtPj4+MCkmYTtrPTA7bD1oPDxsO2JyZWFrfWlmKChmfDApPT0wKXtsPTA7bT0wO3JldHVybihJPWwsbSl8MH1jW2Y+PjJdPWF8MDtjW2YrND4+Ml09anxiJjA7bD0wO209MDtyZXR1cm4oST1sLG0pfDB9az1sLTF8MDtpZigoayZsfDApIT0wKXtsPShRbihsfDApfDApKzMzLShRbihpfDApfDApfDA7cD02NC1sfDA7bT0zMi1sfDA7bj1tPj4zMTtvPWwtMzJ8MDthPW8+PjMxO2o9bDtiPW0tMT4+MzEmaT4+PihvPj4+MCl8KGk8PG18aD4+PihsPj4+MCkpJmE7YT1hJmk+Pj4obD4+PjApO2s9aDw8cCZuO2w9KGk8PHB8aD4+PihvPj4+MCkpJm58aDw8bSZsLTMzPj4zMTticmVha31pZigoZnwwKSE9MCl7Y1tmPj4yXT1rJmg7Y1tmKzQ+PjJdPTB9aWYoKGx8MCk9PTEpe289anxiJjA7cD1hfDB8MDtyZXR1cm4oST1vLHApfDB9ZWxzZXtwPVJuKGx8MCl8MDtvPWk+Pj4ocD4+PjApfDA7cD1pPDwzMi1wfGg+Pj4ocD4+PjApfDA7cmV0dXJuKEk9byxwKXwwfX1lbHNle2lmKG0pe2lmKChmfDApIT0wKXtjW2Y+PjJdPShpPj4+MCklKGw+Pj4wKTtjW2YrND4+Ml09MH1vPTA7cD0oaT4+PjApLyhsPj4+MCk+Pj4wO3JldHVybihJPW8scCl8MH1pZigoaHwwKT09MCl7aWYoKGZ8MCkhPTApe2NbZj4+Ml09MDtjW2YrND4+Ml09KGk+Pj4wKSUoaz4+PjApfW89MDtwPShpPj4+MCkvKGs+Pj4wKT4+PjA7cmV0dXJuKEk9byxwKXwwfWw9ay0xfDA7aWYoKGwma3wwKT09MCl7aWYoKGZ8MCkhPTApe2NbZj4+Ml09YXwwO2NbZis0Pj4yXT1sJml8YiYwfW89MDtwPWk+Pj4oKFJuKGt8MCl8MCk+Pj4wKTtyZXR1cm4oST1vLHApfDB9az0oUW4oa3wwKXwwKS0oUW4oaXwwKXwwKXwwO2lmKGs+Pj4wPD0zMCl7YT1rKzF8MDtsPTMxLWt8MDtqPWE7Yj1pPDxsfGg+Pj4oYT4+PjApO2E9aT4+PihhPj4+MCk7az0wO2w9aDw8bDticmVha31pZigoZnwwKT09MCl7bz0wO3A9MDtyZXR1cm4oST1vLHApfDB9Y1tmPj4yXT1hfDA7Y1tmKzQ+PjJdPWp8YiYwO289MDtwPTA7cmV0dXJuKEk9byxwKXwwfX13aGlsZSgwKTtpZigoanwwKT09MCl7Zz1sO2U9MDtpPTB9ZWxzZXtoPWR8MHwwO2c9Z3xlJjA7ZT1JbihoLGcsLTEsLTEpfDA7ZD1JO2k9MDtkb3ttPWw7bD1rPj4+MzF8bDw8MTtrPWl8azw8MTttPWI8PDF8bT4+PjMxfDA7bj1iPj4+MzF8YTw8MXwwO0huKGUsZCxtLG4pfDA7cD1JO289cD4+MzF8KChwfDApPDA/LTE6MCk8PDE7aT1vJjE7Yj1IbihtLG4sbyZoLCgoKHB8MCk8MD8tMTowKT4+MzF8KChwfDApPDA/LTE6MCk8PDEpJmcpfDA7YT1JO2o9ai0xfDB9d2hpbGUoKGp8MCkhPTApO2c9bDtlPTB9aD0wO2lmKChmfDApIT0wKXtjW2Y+PjJdPWI7Y1tmKzQ+PjJdPWF9bz0oa3wwKT4+PjMxfChnfGgpPDwxfChoPDwxfGs+Pj4zMSkmMHxlO3A9KGs8PDF8MD4+PjMxKSYtMnxpO3JldHVybihJPW8scCl8MH0KCgoKZnVuY3Rpb24gT2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7bT1pO2k9aSsyMjR8MDtsPW0rOHwwO3M9bTtvPW0rMTkyfDA7ZD1tKzE4OHwwO2s9bSsxODR8MDtwPW0rMTgwfDA7dT1zO2NbdT4+Ml09Mzc7Y1t1KzQ+PjJdPTA7dT1zKzF8MDtxPWYrNHwwO3I9Y1txPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2FbdT4+MF09NDM7dT1zKzJ8MH1pZigociY1MTJ8MCkhPTApe2FbdT4+MF09MzU7dT11KzF8MH10PXUrMnwwO2FbdT4+MF09MTA4O2FbdSsxPj4wXT0xMDg7dT1yJjc0O2Rve2lmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTExN319d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO3Q9bDtjW3Q+PjJdPWg7Y1t0KzQ+PjJdPWo7aD13aShvLDIzLHUscyxsKXwwO2o9bytofDA7cT1jW3E+PjJdJjE3Njtkb3tpZigocXwwKT09MzIpe3E9an1lbHNlIGlmKChxfDApPT0xNil7cT1hW28+PjBdfDA7aWYocTw8MjQ+PjI0PT00M3xxPDwyND4+MjQ9PTQ1KXtxPW8rMXwwO2JyZWFrfWlmKChofDApPjEmcTw8MjQ+PjI0PT00OD8odT1hW28rMT4+MF18MCx1PDwyND4+MjQ9PTg4fHU8PDI0Pj4yND09MTIwKTowKXtxPW8rMnwwfWVsc2V7bj0yMX19ZWxzZXtuPTIxfX13aGlsZSgwKTtpZigobnwwKT09MjEpe3E9b31uPWNbZisyOD4+Ml18MDtjW3A+PjJdPW47bj1uKzR8MDtjW24+PjJdPShjW24+PjJdfDApKzE7S2kobyxxLGosbCxkLGsscCk7bj1jW3A+PjJdfDA7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApIT0wKXtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWxjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKTtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWZ1bmN0aW9uIFBpKGIsZCxlLGYsZyxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPStqO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO2w9aTtpPWkrMzA0fDA7cD1sO3U9bCsyMzJ8MDtyPWwrMjYwfDA7dD1sKzI0OHwwO2Q9bCsyNDR8MDtuPWwrMjQwfDA7bz1sKzI1MnwwO209bCsyNTZ8MDt2PXU7Y1t2Pj4yXT0zNztjW3YrND4+Ml09MDt2PXUrMXwwO3M9Zis0fDA7dz1jW3M+PjJdfDA7aWYoKHcmMjA0OHwwKSE9MCl7YVt2Pj4wXT00Mzt2PXUrMnwwfWlmKCh3JjEwMjR8MCkhPTApe2Fbdj4+MF09MzU7dj12KzF8MH14PXcmMjYwO3k9dz4+PjE0O2Rve2lmKCh4fDApPT0yNjApe2lmKCh5JjF8MCk9PTApe2Fbdj4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt2Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt2Pj4wXT00Njt3PXYrMnwwO2FbdisxPj4wXT00MjtpZigoeHwwKT09MjU2KXtpZigoeSYxfDApPT0wKXthW3c+PjBdPTEwMTt2PTE7YnJlYWt9ZWxzZXthW3c+PjBdPTY5O3Y9MTticmVha319ZWxzZSBpZigoeHwwKT09NCl7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDI7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MDt2PTE7YnJlYWt9fWVsc2V7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDM7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MTt2PTE7YnJlYWt9fX19d2hpbGUoMCk7Y1t0Pj4yXT1yO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtpZih2KXtjW3A+PjJdPWNbZis4Pj4yXTt5PXArNHwwO2hbaz4+M109ajtjW3k+PjJdPWNbaz4+Ml07Y1t5KzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9ZWxzZXtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWlmKCh3fDApPjI5KXt3PShhWzEzMzY4XXwwKT09MDtpZih2KXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2NbcD4+Ml09Y1tmKzg+PjJdO3k9cCs0fDA7aFtrPj4zXT1qO2NbeT4+Ml09Y1trPj4yXTtjW3krND4+Ml09Y1trKzQ+PjJdO3c9Q2kodCx3LHUscCl8MH1lbHNle2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eT1wKzR8MDtoW2s+PjNdPWo7Y1t5Pj4yXT1jW2s+PjJdO2NbeSs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0zMil7cz11fWVsc2UgaWYoKHN8MCk9PTE2KXtzPWFbdj4+MF18MDtpZihzPDwyND4+MjQ9PTQzfHM8PDI0Pj4yND09NDUpe3M9disxfDA7YnJlYWt9aWYoKHd8MCk+MSZzPDwyND4+MjQ9PTQ4Pyh5PWFbdisxPj4wXXwwLHk8PDI0Pj4yND09ODh8eTw8MjQ+PjI0PT0xMjApOjApe3M9disyfDB9ZWxzZXtxPTQ4fX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwzKXwwO2lmKChwfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXg9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09eDt4PXgrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtRaShyLHMsdSxwLGQsbixvKTtvPWNbbz4+Ml18MDt4PW8rNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1MaShtLGNbZT4+Ml18MCxwLGNbZD4+Ml18MCxjW24+PjJdfDAsZixnKTt5PWNbbT4+Ml18MDtjW2U+PjJdPXk7Y1tiPj4yXT15O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1sO3JldHVybn12bih0KTtpPWw7cmV0dXJufWZ1bmN0aW9uIFFpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO2s9aTtpPWkrMzJ8MDtvPWs7bD1rKzEyfDA7cT1jW2o+PjJdfDA7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW28+PjJdPTEzNDQ4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NDgsbyl9bT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dD1jW3ErOD4+Ml18MDtpZighKChjW3ErMTI+PjJdfDApLXQ+PjI+Pj4wPm0+Pj4wKSl7eT1YYSg0KXwwO2NbeT4+Ml09MjEzMDQ7d2IoeXwwLDIxMzc2LDE5Nil9bT1jW3QrKG08PDIpPj4yXXwwO2lmKChtfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbaj4+Ml18MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbbz4+Ml09MTM2MDg7Y1tvKzQ+PjJdPTIwODtjW28rOD4+Ml09MDtjZygxMzYwOCxvKX1vPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtxPWNbais4Pj4yXXwwO2lmKCEoKGNbaisxMj4+Ml18MCktcT4+Mj4+PjA+bz4+PjApKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbcSsobzw8Mik+PjJdfDA7aWYoKGp8MCk9PTApe3k9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfW1jW2NbKGNbaj4+Ml18MCkrMjA+PjJdJjEyN10obCxqKTtjW2g+PjJdPWY7bz1hW2I+PjBdfDA7aWYobzw8MjQ+PjI0PT00M3xvPDwyND4+MjQ9PTQ1KXt5PXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLG8pfDA7dD1jW2g+PjJdfDA7Y1toPj4yXT10KzQ7Y1t0Pj4yXT15O3Q9YisxfDB9ZWxzZXt0PWJ9bz1lO2E6ZG97aWYoKChvLXR8MCk+MT8oYVt0Pj4wXXwwKT09NDg6MCk/KHA9dCsxfDAseT1hW3A+PjBdfDAseTw8MjQ+PjI0PT04OHx5PDwyND4+MjQ9PTEyMCk6MCl7eT14Y1tjWyhjW20+PjJdfDApKzQ0Pj4yXSY2M10obSw0OCl8MDt4PWNbaD4+Ml18MDtjW2g+PjJdPXgrNDtjW3g+PjJdPXk7dD10KzJ8MDt4PXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLGFbcD4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrNDtjW3k+PjJdPXg7aWYodD4+PjA8ZT4+PjApe3E9dDt3aGlsZSgxKXtwPWFbcT4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9eT1wPDwyND4+MjQ7aWYoISgoeSsgLTQ4fDApPj4+MDwxMCk/ISgoKHl8MzIpKyAtOTd8MCk+Pj4wPDYpOjApe3A9dDticmVhayBhfXE9cSsxfDA7aWYoIShxPj4+MDxlPj4+MCkpe3A9dDticmVha319fWVsc2V7cD10O3E9dH19ZWxzZXtzPTE1fX13aGlsZSgwKTtiOmRve2lmKChzfDApPT0xNSl7aWYodD4+PjA8ZT4+PjApe3E9dDt3aGlsZSgxKXtwPWFbcT4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cz1xKzF8MDtpZighKCgocDw8MjQ+PjI0KSsgLTQ4fDApPj4+MDwxMCkpe3A9dDticmVhayBifWlmKHM+Pj4wPGU+Pj4wKXtxPXN9ZWxzZXtwPXQ7cT1zO2JyZWFrfX19ZWxzZXtwPXQ7cT10fX19d2hpbGUoMCk7cz1hW2w+PjBdfDA7aWYoKHMmMSk9PTApe3M9KHMmMjU1KT4+PjF9ZWxzZXtzPWNbbCs0Pj4yXXwwfWlmKChzfDApIT0wKXtpZigocHwwKSE9KHF8MCk/KHI9cSsgLTF8MCxyPj4+MD5wPj4+MCk6MCl7cz1wO2Rve3k9YVtzPj4wXXwwO2Fbcz4+MF09YVtyPj4wXXwwO2Fbcj4+MF09eTtzPXMrMXwwO3I9cisgLTF8MH13aGlsZShzPj4+MDxyPj4+MCl9dj1vY1tjWyhjW2o+PjJdfDApKzE2Pj4yXSYxMjddKGopfDA7aWYocD4+PjA8cT4+PjApe3Q9bCsxfDA7cj1sKzR8MDt1PWwrOHwwO3g9MDt3PTA7cz1wO3doaWxlKDEpe3k9YVsoKGFbbD4+MF0mMSk9PTA/dDpjW3U+PjJdfDApK3c+PjBdfDA7aWYoeTw8MjQ+PjI0PjAmKHh8MCk9PSh5PDwyND4+MjR8MCkpe3g9Y1toPj4yXXwwO2NbaD4+Ml09eCs0O2NbeD4+Ml09djt4PWFbbD4+MF18MDtpZigoeCYxKT09MCl7eT0oeCYyNTUpPj4+MX1lbHNle3k9Y1tyPj4yXXwwfXg9MDt3PSh3Pj4+MDwoeSsgLTF8MCk+Pj4wJjEpK3d8MH1BPXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLGFbcz4+MF18MCl8MDt6PWNbaD4+Ml18MDt5PXorNHwwO2NbaD4+Ml09eTtjW3o+PjJdPUE7cz1zKzF8MDtpZighKHM+Pj4wPHE+Pj4wKSl7YnJlYWt9ZWxzZXt4PXgrMXwwfX19ZWxzZXt5PWNbaD4+Ml18MH1wPWYrKHAtYjw8Mil8MDtpZigocHwwKSE9KHl8MCk/KG49eSsgLTR8MCxuPj4+MD5wPj4+MCk6MCl7ZG97QT1jW3A+PjJdfDA7Y1twPj4yXT1jW24+PjJdO2Nbbj4+Ml09QTtwPXArNHwwO249bisgLTR8MH13aGlsZShwPj4+MDxuPj4+MCl9fWVsc2V7dWNbY1soY1ttPj4yXXwwKSs0OD4+Ml0mMzFdKG0scCxxLGNbaD4+Ml18MCl8MDt5PShjW2g+PjJdfDApKyhxLXA8PDIpfDA7Y1toPj4yXT15fWM6ZG97aWYocT4+PjA8ZT4+PjApe3doaWxlKDEpe249YVtxPj4wXXwwO2lmKG48PDI0Pj4yND09NDYpe2JyZWFrfXo9eGNbY1soY1ttPj4yXXwwKSs0ND4+Ml0mNjNdKG0sbil8MDtBPWNbaD4+Ml18MDt5PUErNHwwO2NbaD4+Ml09eTtjW0E+PjJdPXo7cT1xKzF8MDtpZighKHE+Pj4wPGU+Pj4wKSl7YnJlYWsgY319ej1vY1tjWyhjW2o+PjJdfDApKzEyPj4yXSYxMjddKGopfDA7QT1jW2g+PjJdfDA7eT1BKzR8MDtjW2g+PjJdPXk7Y1tBPj4yXT16O3E9cSsxfDB9fXdoaWxlKDApO3VjW2NbKGNbbT4+Ml18MCkrNDg+PjJdJjMxXShtLHEsZSx5KXwwO209KGNbaD4+Ml18MCkrKG8tcTw8Mil8MDtjW2g+PjJdPW07aWYoKGR8MCkhPShlfDApKXttPWYrKGQtYjw8Mil8MH1jW2c+PjJdPW07aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59Zz1jW2wrOD4+Ml18MDtpZigoZ3wwKT09MCl7aT1rO3JldHVybn12bihnKTtpPWs7cmV0dXJufWZ1bmN0aW9uIFJpKGIsZCxlLGYsZyxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPStqO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7bD1pO2k9aSszMDR8MDtwPWw7dT1sKzIzMnwwO3I9bCsyNjB8MDt0PWwrMjQ4fDA7bT1sKzI0NHwwO2Q9bCsyNDB8MDtvPWwrMjUyfDA7bj1sKzI1NnwwO3g9dTtjW3g+PjJdPTM3O2NbeCs0Pj4yXT0wO3g9dSsxfDA7cz1mKzR8MDt2PWNbcz4+Ml18MDtpZigodiYyMDQ4fDApIT0wKXthW3g+PjBdPTQzO3g9dSsyfDB9aWYoKHYmMTAyNHwwKSE9MCl7YVt4Pj4wXT0zNTt4PXgrMXwwfXc9diYyNjA7dj12Pj4+MTQ7ZG97aWYoKHd8MCk9PTI2MCl7YVt4Pj4wXT03Njt3PXgrMXwwO2lmKCh2JjF8MCk9PTApe2Fbdz4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt3Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt4Pj4wXT00NjthW3grMT4+MF09NDI7YVt4KzI+PjBdPTc2O3g9eCszfDA7aWYoKHd8MCk9PTQpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAyO3Y9MTticmVha31lbHNle2FbeD4+MF09NzA7dj0xO2JyZWFrfX1lbHNlIGlmKCh3fDApPT0yNTYpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAxO3Y9MTticmVha31lbHNle2FbeD4+MF09Njk7dj0xO2JyZWFrfX1lbHNle2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAzO3Y9MTticmVha31lbHNle2FbeD4+MF09NzE7dj0xO2JyZWFrfX19fXdoaWxlKDApO2NbdD4+Ml09cjtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7aWYodil7Y1twPj4yXT1jW2YrOD4+Ml07eD1wKzR8MDtoW2s+PjNdPWo7Y1t4Pj4yXT1jW2s+PjJdO2NbeCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWVsc2V7aFtrPj4zXT1qO2NbcD4+Ml09Y1trPj4yXTtjW3ArND4+Ml09Y1trKzQ+PjJdO3c9d2kociwzMCx3LHUscCl8MH1pZigod3wwKT4yOSl7dz0oYVsxMzM2OF18MCk9PTA7aWYodil7aWYodz8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtjW3A+PjJdPWNbZis4Pj4yXTt4PXArNHwwO2hbaz4+M109ajtjW3g+PjJdPWNbaz4+Ml07Y1t4KzQ+PjJdPWNbays0Pj4yXTt3PUNpKHQsdyx1LHApfDB9ZWxzZXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2hbaz4+M109ajtjW3A+PjJdPWNbaz4+Ml07Y1twKzQ+PjJdPWNbays0Pj4yXTt3PUNpKHQsdyx1LHApfDB9dD1jW3Q+PjJdfDA7aWYoKHR8MCk9PTApe3g9WGEoNCl8MDtjW3g+PjJdPTIyNjgwO3diKHh8MCwyMjcyOCwyMDYpfWVsc2V7dj10fX1lbHNle3Y9Y1t0Pj4yXXwwO3Q9MH11PXYrd3wwO3M9Y1tzPj4yXSYxNzY7ZG97aWYoKHN8MCk9PTMyKXtzPXV9ZWxzZSBpZigoc3wwKT09MTYpe3M9YVt2Pj4wXXwwO2lmKHM8PDI0Pj4yND09NDN8czw8MjQ+PjI0PT00NSl7cz12KzF8MDticmVha31pZigod3wwKT4xJnM8PDI0Pj4yND09NDg/KHg9YVt2KzE+PjBdfDAseDw8MjQ+PjI0PT04OHx4PDwyND4+MjQ9PTEyMCk6MCl7cz12KzJ8MH1lbHNle3E9NDh9fWVsc2V7cT00OH19d2hpbGUoMCk7aWYoKHF8MCk9PTQ4KXtzPXZ9aWYoKHZ8MCkhPShyfDApKXtwPXVuKHc8PDMpfDA7aWYoKHB8MCk9PTApe3g9WGEoNCl8MDtjW3g+PjJdPTIyNjgwO3diKHh8MCwyMjcyOCwyMDYpfWVsc2V7cj12O3E9cH19ZWxzZXtxPTB9dz1jW2YrMjg+PjJdfDA7Y1tvPj4yXT13O3c9dys0fDA7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxO1FpKHIscyx1LHAsbSxkLG8pO289Y1tvPj4yXXwwO3c9bys0fDA7eD1jW3c+PjJdfDA7Y1t3Pj4yXT14KyAtMTtpZigoeHwwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfUxpKG4sY1tlPj4yXXwwLHAsY1ttPj4yXXwwLGNbZD4+Ml18MCxmLGcpO3g9Y1tuPj4yXXwwO2NbZT4+Ml09eDtjW2I+PjJdPXg7aWYoKHF8MCkhPTApe3ZuKHEpfWlmKCh0fDApPT0wKXtpPWw7cmV0dXJufXZuKHQpO2k9bDtyZXR1cm59ZnVuY3Rpb24gU2koYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO2Q9aTtpPWkrMTkyfDA7bj1kO289ZCsxODB8MDtrPWQrMTYwfDA7bD1kKzEyfDA7YVtvKzA+PjBdPWFbMTIyNzI+PjBdfDA7YVtvKzE+PjBdPWFbMTIyNzM+PjBdfDA7YVtvKzI+PjBdPWFbMTIyNzQ+PjBdfDA7YVtvKzM+PjBdPWFbMTIyNzU+PjBdfDA7YVtvKzQ+PjBdPWFbMTIyNzY+PjBdfDA7YVtvKzU+PjBdPWFbMTIyNzc+PjBdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXA9Y1szMzQwXXwwO2Nbbj4+Ml09aDtvPXdpKGssMjAscCxvLG4pfDA7aD1rK298MDtwPWNbZis0Pj4yXSYxNzY7ZG97aWYoKHB8MCk9PTMyKXtwPWh9ZWxzZSBpZigocHwwKT09MTYpe3A9YVtrPj4wXXwwO2lmKHA8PDI0Pj4yND09NDN8cDw8MjQ+PjI0PT00NSl7cD1rKzF8MDticmVha31pZigob3wwKT4xJnA8PDI0Pj4yND09NDg/KHE9YVtrKzE+PjBdfDAscTw8MjQ+PjI0PT04OHxxPDwyND4+MjQ9PTEyMCk6MCl7cD1rKzJ8MH1lbHNle209MTF9fWVsc2V7bT0xMX19d2hpbGUoMCk7aWYoKG18MCk9PTExKXtwPWt9bT1jW2YrMjg+PjJdfDA7cT1tKzR8MDtjW3E+PjJdPShjW3E+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW24+PjJdPTEzNDQ4O2Nbbis0Pj4yXT0yMDg7Y1tuKzg+PjJdPTA7Y2coMTM0NDgsbil9cT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7bj1jW20rOD4+Ml18MDtpZigoY1ttKzEyPj4yXXwwKS1uPj4yPj4+MD5xPj4+MD8oaj1jW24rKHE8PDIpPj4yXXwwLChqfDApIT0wKTowKXtuPW0rNHwwO3E9Y1tuPj4yXXwwO2Nbbj4+Ml09cSsgLTE7aWYoKHF8MCk9PTApe2xjW2NbKGNbbT4+Ml18MCkrOD4+Ml0mMjU1XShtKX11Y1tjWyhjW2o+PjJdfDApKzQ4Pj4yXSYzMV0oaixrLGgsbCl8MDtqPWwrKG88PDIpfDA7aWYoKHB8MCk9PShofDApKXtxPWo7cD1jW2U+PjJdfDA7TGkoYixwLGwscSxqLGYsZyk7aT1kO3JldHVybn1xPWwrKHAtazw8Mil8MDtwPWNbZT4+Ml18MDtMaShiLHAsbCxxLGosZixnKTtpPWQ7cmV0dXJufXE9WGEoNCl8MDtjW3E+PjJdPTIxMzA0O3diKHF8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIFRpKGUsZixnLGgsaixrLGwsbSxuKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDt2YXIgbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO3A9aTtpPWkrMzJ8MDtxPXA7cj1wKzI0fDA7dT1wKzIwfDA7dD1wKzE2fDA7cz1wKzEyfDA7eT1jW2orMjg+PjJdfDA7RD15KzR8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3E+PjJdPTEzNDU2O2NbcSs0Pj4yXT0yMDg7Y1txKzg+PjJdPTA7Y2coMTM0NTYscSl9eD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7ej1jW3krOD4+Ml18MDtpZigoY1t5KzEyPj4yXXwwKS16Pj4yPj4+MD54Pj4+MD8odz1jW3orKHg8PDIpPj4yXXwwLCh3fDApIT0wKTowKXtDPXkrNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbeT4+Ml18MCkrOD4+Ml0mMjU1XSh5KX1jW2s+PjJdPTA7YTpkb3tpZigobXwwKSE9KG58MCkpe3g9dys4fDA7eT0wO2I6d2hpbGUoMSl7ej15O3k9Zzt3aGlsZSgxKXtpZigoenwwKSE9MCl7Zz15O2JyZWFrIGF9aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RD0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7Zz1EPzA6eTt5PUQ/MDp5fWVsc2V7Zz15fX1lbHNle2c9MDt5PTB9ej0oZ3wwKT09MDtkb3tpZigoaHwwKSE9MCl7aWYoKGNbaCsxMj4+Ml18MCk9PShjW2grMTY+PjJdfDApPyhvY1tjWyhjW2g+PjJdfDApKzM2Pj4yXSYxMjddKGgpfDApPT0tMTowKXtvPTIwO2JyZWFrfWlmKCF6KXtvPTIxO2JyZWFrIGJ9fWVsc2V7bz0yMH19d2hpbGUoMCk7aWYoKG98MCk9PTIwKXtvPTA7aWYoeil7aD0wO289MjE7YnJlYWsgYn1lbHNle2g9MH19aWYoKGhjW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjYzXSh3LGFbbT4+MF18MCwwKXwwKTw8MjQ+PjI0PT0zNyl7bz0yMzticmVha316PWFbbT4+MF18MDtpZih6PDwyND4+MjQ+LTE/KHY9Y1t4Pj4yXXwwLCEoKGJbdisoejw8MjQ+PjI0PDwxKT4+MV0mODE5Mik9PTApKTowKXtvPTM0O2JyZWFrfXo9ZysxMnwwO0I9Y1t6Pj4yXXwwO0E9ZysxNnwwO2lmKChCfDApPT0oY1tBPj4yXXwwKSl7Qj1vY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSYxMjddKGcpfDB9ZWxzZXtCPWRbQj4+MF18MH1EPXhjW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjYzXSh3LEImMjU1KXwwO2lmKEQ8PDI0Pj4yND09KHhjW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjYzXSh3LGFbbT4+MF18MCl8MCk8PDI0Pj4yNCl7bz01OTticmVha31jW2s+PjJdPTQ7ej00fWM6ZG97aWYoKG98MCk9PTIzKXtvPTA7ej1tKzF8MDtpZigoenwwKT09KG58MCkpe289MjQ7YnJlYWsgYn15PWhjW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjYzXSh3LGFbej4+MF18MCwwKXwwO2lmKHk8PDI0Pj4yND09NDh8eTw8MjQ+PjI0PT02OSl7ej1tKzJ8MDtpZigoenwwKT09KG58MCkpe289Mjc7YnJlYWsgYn1tPXo7ej1oY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSY2M10odyxhW3o+PjBdfDAsMCl8MH1lbHNle209ejt6PXk7eT0wfUQ9Y1soY1tmPj4yXXwwKSszNj4+Ml18MDtjW3Q+PjJdPWc7Y1tzPj4yXT1oO2NbciswPj4yXT1jW3QrMD4+Ml07Y1txKzA+PjJdPWNbcyswPj4yXTtuY1tEJjMxXSh1LGYscixxLGosayxsLHoseSk7bT1tKzF8MDtnPWNbdT4+Ml18MH1lbHNlIGlmKChvfDApPT0zNCl7d2hpbGUoMSl7bz0wO209bSsxfDA7aWYoKG18MCk9PShufDApKXttPW47YnJlYWt9ej1hW20+PjBdfDA7aWYoISh6PDwyND4+MjQ+LTEpKXticmVha31pZigoYlt2Kyh6PDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7YnJlYWt9ZWxzZXtvPTM0fX1CPWg7QT1oO3doaWxlKDEpe2lmKChnfDApIT0wKXtpZigoY1tnKzEyPj4yXXwwKT09KGNbZysxNj4+Ml18MCkpe0Q9KG9jW2NbKGNbZz4+Ml18MCkrMzY+PjJdJjEyN10oZyl8MCk9PS0xO2c9RD8wOmc7eT1EPzA6eX19ZWxzZXtnPTB9Qz0oZ3wwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZihDKXt6PUI7YnJlYWt9ZWxzZXtnPXk7YnJlYWsgY319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZihDXihCfDApPT0wKXt6PUI7QT1CfWVsc2V7Zz15O2JyZWFrIGN9fWVsc2V7ej0wO2g9MDtvPTQ1fX1lbHNle3o9QjtvPTQ1fX13aGlsZSgwKTtpZigob3wwKT09NDUpe289MDtpZihDKXtnPXk7YnJlYWsgY31lbHNle0E9MH19Qj1nKzEyfDA7RD1jW0I+PjJdfDA7Qz1nKzE2fDA7aWYoKER8MCk9PShjW0M+PjJdfDApKXtEPW9jW2NbKGNbZz4+Ml18MCkrMzY+PjJdJjEyN10oZyl8MH1lbHNle0Q9ZFtEPj4wXXwwfWlmKCEoKEQmMjU1KTw8MjQ+PjI0Pi0xKSl7Zz15O2JyZWFrIGN9aWYoKGJbKGNbeD4+Ml18MCkrKEQ8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXtnPXk7YnJlYWsgY31EPWNbQj4+Ml18MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbZz4+Ml18MCkrNDA+PjJdJjEyN10oZyl8MDtCPXo7Y29udGludWV9ZWxzZXtjW0I+PjJdPUQrMTtCPXo7Y29udGludWV9fX1lbHNlIGlmKChvfDApPT01OSl7bz0wO0I9Y1t6Pj4yXXwwO2lmKChCfDApPT0oY1tBPj4yXXwwKSl7b2NbY1soY1tnPj4yXXwwKSs0MD4+Ml0mMTI3XShnKXwwfWVsc2V7Y1t6Pj4yXT1CKzF9bT1tKzF8MDtnPXl9fXdoaWxlKDApO2lmKChtfDApPT0obnwwKSl7YnJlYWsgYX15PWNbaz4+Ml18MH1pZigob3wwKT09MjEpe2Nbaz4+Ml09NDticmVha31lbHNlIGlmKChvfDApPT0yNCl7Y1trPj4yXT00O2JyZWFrfWVsc2UgaWYoKG98MCk9PTI3KXtjW2s+PjJdPTQ7YnJlYWt9fX13aGlsZSgwKTtpZigoZ3wwKSE9MCl7aWYoKGNbZysxMj4+Ml18MCk9PShjW2crMTY+PjJdfDApKXtEPShvY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSYxMjddKGcpfDApPT0tMTtnPUQ/MDpnfX1lbHNle2c9MH1mPShnfDApPT0wO2Rve2lmKChofDApIT0wKXtpZigoY1toKzEyPj4yXXwwKT09KGNbaCsxNj4+Ml18MCk/KG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xOjApe289NzE7YnJlYWt9aWYoZil7Y1tlPj4yXT1nO2k9cDtyZXR1cm59fWVsc2V7bz03MX19d2hpbGUoMCk7aWYoKG98MCk9PTcxPyFmOjApe2NbZT4+Ml09ZztpPXA7cmV0dXJufWNbaz4+Ml09Y1trPj4yXXwyO2NbZT4+Ml09ZztpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIFVpKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFZpKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBXaShhKXthPWF8MDtyZXR1cm4gMn1mdW5jdGlvbiBYaShhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wO2o9aTtUaShhLGIsY1tkPj4yXXwwLGNbZT4+Ml18MCxmLGcsaCwxMjM3NiwxMjM4NHwwKTtpPWo7cmV0dXJufWZ1bmN0aW9uIFlpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTA7az1pO209ZCs4fDA7bT1vY1tjWyhjW20+PjJdfDApKzIwPj4yXSYxMjddKG0pfDA7bj1hW20+PjBdfDA7aWYoKG4mMSk9PTApe2w9bSsxfDA7bT0obiYyNTUpPj4+MX1lbHNle2w9Y1ttKzg+PjJdfDA7bT1jW20rND4+Ml18MH1UaShiLGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaixsLGwrbXwwKTtpPWs7cmV0dXJufWZ1bmN0aW9uIFppKGEsYixkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTA7aj1pO2k9aSsxNnwwO2w9ajtmPWNbZisyOD4+Ml18MDttPWYrNHwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1sPShjWzEzNDYwPj4yXXwwKSsgLTF8MDttPWNbZis4Pj4yXXwwO2lmKChjW2YrMTI+PjJdfDApLW0+PjI+Pj4wPmw+Pj4wPyhrPWNbbSsobDw8Mik+PjJdfDAsKGt8MCkhPTApOjApe2w9Zis0fDA7bT1jW2w+PjJdfDA7Y1tsPj4yXT1tKyAtMTtpZigobXwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfW09Y1tlPj4yXXwwO2I9Yis4fDA7Yj1vY1tjW2NbYj4+Ml0+PjJdJjEyN10oYil8MDtiPShNaChkLG0sYixiKzE2OHwwLGssZywwKXwwKS1ifDA7aWYoKGJ8MCk+PTE2OCl7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59Y1toKzI0Pj4yXT0oKGJ8MCkvMTJ8MHwwKSU3fDA7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59bT1YYSg0KXwwO2NbbT4+Ml09MjEzMDQ7d2IobXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gX2koYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MDtqPWk7aT1pKzE2fDA7bD1qO2Y9Y1tmKzI4Pj4yXXwwO209Zis0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tsPj4yXT0xMzQ1NjtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEzNDU2LGwpfWw9KGNbMTM0NjA+PjJdfDApKyAtMXwwO209Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7bD1mKzR8MDttPWNbbD4+Ml18MDtjW2w+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9bT1jW2U+PjJdfDA7Yj1iKzh8MDtiPW9jW2NbKGNbYj4+Ml18MCkrND4+Ml0mMTI3XShiKXwwO2I9KE1oKGQsbSxiLGIrMjg4fDAsayxnLDApfDApLWJ8MDtpZigoYnwwKT49Mjg4KXttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1jW2grMTY+PjJdPSgoYnwwKS8xMnwwfDApJTEyfDA7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59bT1YYSg0KXwwO2NbbT4+Ml09MjEzMDQ7d2IobXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gJGkoYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wO2I9aTtpPWkrMTZ8MDtrPWI7Zj1jW2YrMjg+PjJdfDA7bD1mKzR8MDtjW2w+PjJdPShjW2w+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2s+PjJdPTEzNDU2O2Nbays0Pj4yXT0yMDg7Y1trKzg+PjJdPTA7Y2coMTM0NTYsayl9az0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7bD1jW2YrOD4+Ml18MDtpZigoY1tmKzEyPj4yXXwwKS1sPj4yPj4+MD5rPj4+MD8oaj1jW2wrKGs8PDIpPj4yXXwwLChqfDApIT0wKTowKXtrPWYrNHwwO2w9Y1trPj4yXXwwO2Nbaz4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbZj4+Ml18MCkrOD4+Ml0mMjU1XShmKX1lPWJqKGQsY1tlPj4yXXwwLGcsaiw0KXwwO2lmKChjW2c+PjJdJjR8MCkhPTApe2w9Y1tkPj4yXXwwO2NbYT4+Ml09bDtpPWI7cmV0dXJufWlmKChlfDApPDY5KXtnPWUrMmUzfDB9ZWxzZXtnPShlKyAtNjl8MCk+Pj4wPDMxP2UrMTkwMHwwOmV9Y1toKzIwPj4yXT1nKyAtMTkwMDtsPWNbZD4+Ml18MDtjW2E+PjJdPWw7aT1iO3JldHVybn1sPVhhKDQpfDA7Y1tsPj4yXT0yMTMwNDt3YihsfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBhaihlLGYsZyxoLGosayxsLG0sbil7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7dmFyIG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7bj1pO2k9aSs2NHwwO3c9bjtFPW4rMTZ8MDtyPW4rMjh8MDt1PW4rMjR8MDt2PW4rMzJ8MDt5PW4rMTJ8MDt6PW4rMjB8MDt4PW4rMzZ8MDtCPW4rNDB8MDt0PW4rNDR8MDtzPW4rNDh8MDtjW2s+PjJdPTA7QT1jW2orMjg+PjJdfDA7RD1BKzR8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3c+PjJdPTEzNDU2O2Nbdys0Pj4yXT0yMDg7Y1t3Kzg+PjJdPTA7Y2coMTM0NTYsdyl9Qz0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7RD1jW0ErOD4+Ml18MDtpZigoY1tBKzEyPj4yXXwwKS1EPj4yPj4+MD5DPj4+MD8ocD1jW0QrKEM8PDIpPj4yXXwwLChwfDApIT0wKTowKXtDPUErNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbQT4+Ml18MCkrOD4+Ml0mMjU1XShBKX1hOmRve3N3aXRjaChtPDwyND4+MjR8MCl7Y2FzZSAxMTI6e289bCs4fDA7bD1jW2g+PjJdfDA7aD1mKzh8MDtoPW9jW2NbKGNbaD4+Ml18MCkrOD4+Ml0mMTI3XShoKXwwO2Y9YVtoPj4wXXwwO2lmKChmJjEpPT0wKXtmPShmJjI1NSk+Pj4xfWVsc2V7Zj1jW2grND4+Ml18MH1qPWFbaCsxMj4+MF18MDtpZigoaiYxKT09MCl7aj0oaiYyNTUpPj4+MX1lbHNle2o9Y1toKzE2Pj4yXXwwfWlmKChmfDApPT0oMC1qfDApKXtjW2s+PjJdPWNbaz4+Ml18NDticmVhayBhfUU9TWgoZyxsLGgsaCsyNHwwLHAsaywwKXwwO2s9RS1ofDA7aWYoKEV8MCk9PShofDApPyhjW28+PjJdfDApPT0xMjowKXtjW28+PjJdPTA7YnJlYWsgYX1pZigoa3wwKT09MTI/KHE9Y1tvPj4yXXwwLChxfDApPDEyKTowKXtjW28+PjJdPXErMTJ9YnJlYWt9O2Nhc2UgMTIwOntEPWNbKGNbZj4+Ml18MCkrMjA+PjJdfDA7Y1tCPj4yXT1jW2c+PjJdO2NbdD4+Ml09Y1toPj4yXTtjW0UrMD4+Ml09Y1tCKzA+PjJdO2NbdyswPj4yXT1jW3QrMD4+Ml07aWNbRCY2M10oZSxmLEUsdyxqLGssbCk7aT1uO3JldHVybn07Y2FzZSA4ODp7cT1mKzh8MDtxPW9jW2NbKGNbcT4+Ml18MCkrMjQ+PjJdJjEyN10ocSl8MDtwPWFbcT4+MF18MDtpZigocCYxKT09MCl7bz1xKzF8MDtwPShwJjI1NSk+Pj4xfWVsc2V7bz1jW3ErOD4+Ml18MDtwPWNbcSs0Pj4yXXwwfVRpKHMsZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLG8sbytwfDApO2NbZz4+Ml09Y1tzPj4yXTticmVha307Y2FzZSAxMjE6e289bCsyMHwwO2w9YmooZyxjW2g+PjJdfDAsayxwLDQpfDA7aWYoKGNbaz4+Ml0mNHwwKT09MCl7aWYoKGx8MCk8Njkpe2s9bCsyZTN8MH1lbHNle2s9KGwrIC02OXwwKT4+PjA8MzE/bCsxOTAwfDA6bH1jW28+PjJdPWsrIC0xOTAwfWJyZWFrfTtjYXNlIDgzOntvPWJqKGcsY1toPj4yXXwwLGsscCwyKXwwO3A9Y1trPj4yXXwwO2lmKChwJjR8MCk9PTAmKG98MCk8NjEpe2NbbD4+Ml09bzticmVhayBhfWVsc2V7Y1trPj4yXT1wfDQ7YnJlYWsgYX19O2Nhc2UgODI6e1RpKHosZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyNDE2LDEyNDIxfDApO2NbZz4+Ml09Y1t6Pj4yXTticmVha307Y2FzZSAxMTQ6e1RpKHksZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyNDAwLDEyNDExfDApO2NbZz4+Ml09Y1t5Pj4yXTticmVha307Y2FzZSA4OTp7bz1iaihnLGNbaD4+Ml18MCxrLHAsNCl8MDtpZigoY1trPj4yXSY0fDApPT0wKXtjW2wrMjA+PjJdPW8rIC0xOTAwfWJyZWFrfTtjYXNlIDM3OntsPWNbaD4+Ml18MDtoPWNbZz4+Ml18MDtkb3tpZigoaHwwKSE9MCl7aWYoKGNbaCsxMj4+Ml18MCk9PShjW2grMTY+PjJdfDApKXtpZigob2NbY1soY1toPj4yXXwwKSszNj4+Ml0mMTI3XShoKXwwKT09LTEpe2NbZz4+Ml09MDtoPTA7YnJlYWt9ZWxzZXtoPWNbZz4+Ml18MDticmVha319fWVsc2V7aD0wfX13aGlsZSgwKTtoPShofDApPT0wO2Rve2lmKChsfDApIT0wKXtpZigoY1tsKzEyPj4yXXwwKT09KGNbbCsxNj4+Ml18MCk/KG9jW2NbKGNbbD4+Ml18MCkrMzY+PjJdJjEyN10obCl8MCk9PS0xOjApe289MTE1O2JyZWFrfWlmKCFoKXtvPTExNn19ZWxzZXtvPTExNX19d2hpbGUoMCk7aWYoKG98MCk9PTExNSl7aWYoaCl7bz0xMTZ9ZWxzZXtsPTB9fWlmKChvfDApPT0xMTYpe2Nbaz4+Ml09Y1trPj4yXXw2O2JyZWFrIGF9aD1jW2c+PjJdfDA7Zj1jW2grMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2grMTY+PjJdfDApKXtoPW9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MH1lbHNle2g9ZFtmPj4wXXwwfWlmKCEoKGhjW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjYzXShwLGgmMjU1LDApfDApPDwyND4+MjQ9PTM3KSl7Y1trPj4yXT1jW2s+PjJdfDQ7YnJlYWsgYX1wPWNbZz4+Ml18MDtoPXArMTJ8MDtmPWNbaD4+Ml18MDtpZigoZnwwKT09KGNbcCsxNj4+Ml18MCkpe29jW2NbKGNbcD4+Ml18MCkrNDA+PjJdJjEyN10ocCl8MH1lbHNle2NbaD4+Ml09ZisxfXA9Y1tnPj4yXXwwO2Rve2lmKChwfDApIT0wKXtpZigoY1twKzEyPj4yXXwwKT09KGNbcCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjW3A+PjJdfDApKzM2Pj4yXSYxMjddKHApfDApPT0tMSl7Y1tnPj4yXT0wO3A9MDticmVha31lbHNle3A9Y1tnPj4yXXwwO2JyZWFrfX19ZWxzZXtwPTB9fXdoaWxlKDApO3A9KHB8MCk9PTA7ZG97aWYoKGx8MCkhPTApe2lmKChjW2wrMTI+PjJdfDApPT0oY1tsKzE2Pj4yXXwwKT8ob2NbY1soY1tsPj4yXXwwKSszNj4+Ml0mMTI3XShsKXwwKT09LTE6MCl7bz0xMzQ7YnJlYWt9aWYocCl7YnJlYWsgYX19ZWxzZXtvPTEzNH19d2hpbGUoMCk7aWYoKG98MCk9PTEzND8hcDowKXticmVhayBhfWNbaz4+Ml09Y1trPj4yXXwyO2JyZWFrfTtjYXNlIDg0OntUaSh4LGYsY1tnPj4yXXwwLGNbaD4+Ml18MCxqLGssbCwxMjQyNCwxMjQzMnwwKTtjW2c+PjJdPWNbeD4+Ml07YnJlYWt9O2Nhc2UgMTE5OntvPWJqKGcsY1toPj4yXXwwLGsscCwxKXwwO3A9Y1trPj4yXXwwO2lmKChwJjR8MCk9PTAmKG98MCk8Nyl7Y1tsKzI0Pj4yXT1vO2JyZWFrIGF9ZWxzZXtjW2s+PjJdPXB8NDticmVhayBhfX07Y2FzZSAxMDk6e289YmooZyxjW2g+PjJdfDAsayxwLDIpfDA7cD1jW2s+PjJdfDA7aWYoKHAmNHwwKT09MCYob3wwKTwxMyl7Y1tsKzE2Pj4yXT1vKyAtMTticmVhayBhfWVsc2V7Y1trPj4yXT1wfDQ7YnJlYWsgYX19O2Nhc2UgNzc6e289YmooZyxjW2g+PjJdfDAsayxwLDIpfDA7cD1jW2s+PjJdfDA7aWYoKHAmNHwwKT09MCYob3wwKTw2MCl7Y1tsKzQ+PjJdPW87YnJlYWsgYX1lbHNle2Nbaz4+Ml09cHw0O2JyZWFrIGF9fTtjYXNlIDEwNjp7bz1iaihnLGNbaD4+Ml18MCxrLHAsMyl8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wJihvfDApPDM2Nil7Y1tsKzI4Pj4yXT1vO2JyZWFrIGF9ZWxzZXtjW2s+PjJdPXB8NDticmVhayBhfX07Y2FzZSA3Mjp7cD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtvPWNbaz4+Ml18MDtpZigobyY0fDApPT0wJihwfDApPDI0KXtjW2wrOD4+Ml09cDticmVhayBhfWVsc2V7Y1trPj4yXT1vfDQ7YnJlYWsgYX19O2Nhc2UgNzA6e1RpKHYsZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyMzkyLDEyNDAwfDApO2NbZz4+Ml09Y1t2Pj4yXTticmVha307Y2FzZSA2ODp7VGkodSxmLGNbZz4+Ml18MCxjW2g+PjJdfDAsaixrLGwsMTIzODQsMTIzOTJ8MCk7Y1tnPj4yXT1jW3U+PjJdO2JyZWFrfTtjYXNlIDEwNDpjYXNlIDY2OmNhc2UgOTg6e0Q9Y1toPj4yXXwwO0U9Zis4fDA7RT1vY1tjWyhjW0U+PjJdfDApKzQ+PjJdJjEyN10oRSl8MDtrPShNaChnLEQsRSxFKzI4OHwwLHAsaywwKXwwKS1FfDA7aWYoKGt8MCk8Mjg4KXtjW2wrMTY+PjJdPSgoa3wwKS8xMnwwfDApJTEyfDB9YnJlYWt9O2Nhc2UgNzM6e289bCs4fDA7bD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wPyhsKyAtMXwwKT4+PjA8MTI6MCl7Y1tvPj4yXT1sO2JyZWFrIGF9Y1trPj4yXT1wfDQ7YnJlYWt9O2Nhc2UgNjU6Y2FzZSA5Nzp7RD1jW2g+PjJdfDA7RT1mKzh8MDtFPW9jW2NbY1tFPj4yXT4+Ml0mMTI3XShFKXwwO2s9KE1oKGcsRCxFLEUrMTY4fDAscCxrLDApfDApLUV8MDtpZigoa3wwKTwxNjgpe2NbbCsyND4+Ml09KChrfDApLzEyfDB8MCklN3wwfWJyZWFrfTtjYXNlIDEwMTpjYXNlIDEwMDp7bz1sKzEyfDA7bD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wPyhsKyAtMXwwKT4+PjA8MzE6MCl7Y1tvPj4yXT1sO2JyZWFrIGF9Y1trPj4yXT1wfDQ7YnJlYWt9O2Nhc2UgMTE2OmNhc2UgMTEwOntsPXArOHwwO3A9Y1toPj4yXXwwO2I6d2hpbGUoMSl7aD1jW2c+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKChjW2grMTI+PjJdfDApPT0oY1toKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xKXtjW2c+PjJdPTA7aD0wO2JyZWFrfWVsc2V7aD1jW2c+PjJdfDA7YnJlYWt9fX1lbHNle2g9MH19d2hpbGUoMCk7aD0oaHwwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCkhPShjW3ArMTY+PjJdfDApKXtpZihoKXticmVha31lbHNle2JyZWFrIGJ9fWlmKCEoKG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xKSl7aWYoIWgpe2JyZWFrIGJ9fWVsc2V7bz01MH19ZWxzZXtvPTUwfX13aGlsZSgwKTtpZigob3wwKT09NTApe289MDtpZihoKXtwPTA7YnJlYWt9ZWxzZXtwPTB9fWg9Y1tnPj4yXXwwO2Y9Y1toKzEyPj4yXXwwO2lmKChmfDApPT0oY1toKzE2Pj4yXXwwKSl7aD1vY1tjWyhjW2g+PjJdfDApKzM2Pj4yXSYxMjddKGgpfDB9ZWxzZXtoPWRbZj4+MF18MH1pZighKChoJjI1NSk8PDI0Pj4yND4tMSkpe2JyZWFrfWlmKChiWyhjW2w+PjJdfDApKyhoPDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7YnJlYWt9aj1jW2c+PjJdfDA7aD1qKzEyfDA7Zj1jW2g+PjJdfDA7aWYoKGZ8MCk9PShjW2orMTY+PjJdfDApKXtvY1tjWyhjW2o+PjJdfDApKzQwPj4yXSYxMjddKGopfDA7Y29udGludWV9ZWxzZXtjW2g+PjJdPWYrMTtjb250aW51ZX19bD1jW2c+PjJdfDA7ZG97aWYoKGx8MCkhPTApe2lmKChjW2wrMTI+PjJdfDApPT0oY1tsKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbbD4+Ml18MCkrMzY+PjJdJjEyN10obCl8MCk9PS0xKXtjW2c+PjJdPTA7bD0wO2JyZWFrfWVsc2V7bD1jW2c+PjJdfDA7YnJlYWt9fX1lbHNle2w9MH19d2hpbGUoMCk7bD0obHwwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCk9PShjW3ArMTY+PjJdfDApPyhvY1tjWyhjW3A+PjJdfDApKzM2Pj4yXSYxMjddKHApfDApPT0tMTowKXtvPTY5O2JyZWFrfWlmKGwpe2JyZWFrIGF9fWVsc2V7bz02OX19d2hpbGUoMCk7aWYoKG98MCk9PTY5PyFsOjApe2JyZWFrIGF9Y1trPj4yXT1jW2s+PjJdfDI7YnJlYWt9O2Nhc2UgOTk6e3E9Zis4fDA7cT1vY1tjWyhjW3E+PjJdfDApKzEyPj4yXSYxMjddKHEpfDA7cD1hW3E+PjBdfDA7aWYoKHAmMSk9PTApe289cSsxfDA7cD0ocCYyNTUpPj4+MX1lbHNle289Y1txKzg+PjJdfDA7cD1jW3ErND4+Ml18MH1UaShyLGYsY1tnPj4yXXwwLGNbaD4+Ml18MCxqLGssbCxvLG8rcHwwKTtjW2c+PjJdPWNbcj4+Ml07YnJlYWt9O2RlZmF1bHQ6e2Nbaz4+Ml09Y1trPj4yXXw0fX19d2hpbGUoMCk7Y1tlPj4yXT1jW2c+PjJdO2k9bjtyZXR1cm59RT1YYSg0KXwwO2NbRT4+Ml09MjEzMDQ7d2IoRXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gYmooYSxlLGYsZyxoKXthPWF8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2o9aTtsPWNbYT4+Ml18MDtkb3tpZigobHwwKSE9MCl7aWYoKGNbbCsxMj4+Ml18MCk9PShjW2wrMTY+PjJdfDApKXtpZigob2NbY1soY1tsPj4yXXwwKSszNj4+Ml0mMTI3XShsKXwwKT09LTEpe2NbYT4+Ml09MDtsPTA7YnJlYWt9ZWxzZXtsPWNbYT4+Ml18MDticmVha319fWVsc2V7bD0wfX13aGlsZSgwKTtsPShsfDApPT0wO2Rve2lmKChlfDApIT0wKXtpZigoY1tlKzEyPj4yXXwwKT09KGNbZSsxNj4+Ml18MCk/KG9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MCk9PS0xOjApe209MTA7YnJlYWt9aWYoIWwpe209MTF9fWVsc2V7bT0xMH19d2hpbGUoMCk7aWYoKG18MCk9PTEwKXtpZihsKXttPTExfWVsc2V7ZT0wfX1pZigobXwwKT09MTEpe2NbZj4+Ml09Y1tmPj4yXXw2O3A9MDtpPWo7cmV0dXJuIHB8MH1tPWNbYT4+Ml18MDtsPWNbbSsxMj4+Ml18MDtpZigobHwwKT09KGNbbSsxNj4+Ml18MCkpe209b2NbY1soY1ttPj4yXXwwKSszNj4+Ml0mMTI3XShtKXwwfWVsc2V7bT1kW2w+PjBdfDB9bD1tJjI1NTtpZihsPDwyND4+MjQ+LTE/KGs9Zys4fDAsISgoYlsoY1trPj4yXXwwKSsobTw8MjQ+PjI0PDwxKT4+MV0mMjA0OCk9PTApKTowKXtsPShoY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSY2M10oZyxsLDApfDApPDwyND4+MjQ7bz1jW2E+PjJdfDA7bT1vKzEyfDA7bj1jW20+PjJdfDA7aWYoKG58MCk9PShjW28rMTY+PjJdfDApKXtvY1tjWyhjW28+PjJdfDApKzQwPj4yXSYxMjddKG8pfDA7bj1lO209ZX1lbHNle2NbbT4+Ml09bisxO249ZTttPWV9d2hpbGUoMSl7bD1sKyAtNDh8MDtoPWgrIC0xfDA7ZT1jW2E+PjJdfDA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApPT0oY1tlKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MCk9PS0xKXtjW2E+PjJdPTA7ZT0wO2JyZWFrfWVsc2V7ZT1jW2E+PjJdfDA7YnJlYWt9fX1lbHNle2U9MH19d2hpbGUoMCk7bz0oZXwwKT09MDtpZigobXwwKSE9MCl7aWYoKGNbbSsxMj4+Ml18MCk9PShjW20rMTY+PjJdfDApKXttPShvY1tjWyhjW20+PjJdfDApKzM2Pj4yXSYxMjddKG0pfDApPT0tMTtlPW0/MDpuO209bT8wOm59ZWxzZXtlPW59fWVsc2V7ZT1uO209MH1uPWNbYT4+Ml18MDtpZighKChvXihtfDApPT0wKSYoaHwwKT4wKSl7bT0zODticmVha31vPWNbbisxMj4+Ml18MDtpZigob3wwKT09KGNbbisxNj4+Ml18MCkpe249b2NbY1soY1tuPj4yXXwwKSszNj4+Ml0mMTI3XShuKXwwfWVsc2V7bj1kW28+PjBdfDB9bz1uJjI1NTtpZighKG88PDI0Pj4yND4tMSkpe209NDk7YnJlYWt9aWYoKGJbKGNbaz4+Ml18MCkrKG48PDI0Pj4yNDw8MSk+PjFdJjIwNDgpPT0wKXttPTQ5O2JyZWFrfWw9KChoY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSY2M10oZyxvLDApfDApPDwyND4+MjQpKyhsKjEwfDApfDA7bj1jW2E+PjJdfDA7cD1uKzEyfDA7bz1jW3A+PjJdfDA7aWYoKG98MCk9PShjW24rMTY+PjJdfDApKXtvY1tjWyhjW24+PjJdfDApKzQwPj4yXSYxMjddKG4pfDA7bj1lO2NvbnRpbnVlfWVsc2V7Y1twPj4yXT1vKzE7bj1lO2NvbnRpbnVlfX1pZigobXwwKT09Mzgpe2Rve2lmKChufDApIT0wKXtpZigoY1tuKzEyPj4yXXwwKT09KGNbbisxNj4+Ml18MCkpe2lmKChvY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDApPT0tMSl7Y1thPj4yXT0wO249MDticmVha31lbHNle249Y1thPj4yXXwwO2JyZWFrfX19ZWxzZXtuPTB9fXdoaWxlKDApO2c9KG58MCk9PTA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApPT0oY1tlKzE2Pj4yXXwwKT8ob2NbY1soY1tlPj4yXXwwKSszNj4+Ml0mMTI3XShlKXwwKT09LTE6MCl7bT00NzticmVha31pZihnKXtwPWw7aT1qO3JldHVybiBwfDB9fWVsc2V7bT00N319d2hpbGUoMCk7aWYoKG18MCk9PTQ3PyFnOjApe3A9bDtpPWo7cmV0dXJuIHB8MH1jW2Y+PjJdPWNbZj4+Ml18MjtwPWw7aT1qO3JldHVybiBwfDB9ZWxzZSBpZigobXwwKT09NDkpe2k9ajtyZXR1cm4gbHwwfX1jW2Y+PjJdPWNbZj4+Ml18NDtwPTA7aT1qO3JldHVybiBwfDB9ZnVuY3Rpb24gY2ooYSxiLGQsZSxmLGcsaCxqLGspe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO209aTtpPWkrMzJ8MDtvPW07cD1tKzI0fDA7bj1tKzIwfDA7cj1tKzE2fDA7cT1tKzEyfDA7dD1jW2YrMjg+PjJdfDA7eT10KzR8MDtjW3k+PjJdPShjW3k+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW28+PjJdPTEzNDQ4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NDgsbyl9dT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dj1jW3QrOD4+Ml18MDtpZigoY1t0KzEyPj4yXXwwKS12Pj4yPj4+MD51Pj4+MD8ocz1jW3YrKHU8PDIpPj4yXXwwLChzfDApIT0wKTowKXt4PXQrNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbdD4+Ml18MCkrOD4+Ml0mMjU1XSh0KX1jW2c+PjJdPTA7YTpkb3tpZigoanwwKSE9KGt8MCkpe3Q9MDtiOndoaWxlKDEpe3U9dDt0PWQ7d2hpbGUoMSl7aWYoKHV8MCkhPTApe2Q9dDticmVhayBhfWlmKCh0fDApPT0wKXt1PTE7ZD0wO3Q9MH1lbHNle2Q9Y1t0KzEyPj4yXXwwO2lmKChkfDApPT0oY1t0KzE2Pj4yXXwwKSl7ZD1vY1tjWyhjW3Q+PjJdfDApKzM2Pj4yXSYxMjddKHQpfDB9ZWxzZXtkPWNbZD4+Ml18MH15PShkfDApPT0tMTt1PXk/MTowO2Q9eT8wOnQ7dD15PzA6dH1pZigoZXwwKSE9MCl7dj1jW2UrMTI+PjJdfDA7aWYoKHZ8MCk9PShjW2UrMTY+PjJdfDApKXt2PW9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MH1lbHNle3Y9Y1t2Pj4yXXwwfWlmKCEoKHZ8MCk9PS0xKSl7aWYoIXUpe2w9MjU7YnJlYWsgYn19ZWxzZXtsPTIzfX1lbHNle2w9MjN9aWYoKGx8MCk9PTIzKXtsPTA7aWYodSl7ZT0wO2w9MjU7YnJlYWsgYn1lbHNle2U9MH19aWYoKGhjW2NbKGNbcz4+Ml18MCkrNTI+PjJdJjYzXShzLGNbaj4+Ml18MCwwKXwwKTw8MjQ+PjI0PT0zNyl7bD0yNzticmVha31pZihoY1tjWyhjW3M+PjJdfDApKzEyPj4yXSY2M10ocyw4MTkyLGNbaj4+Ml18MCl8MCl7bD0zNzticmVha311PWQrMTJ8MDt3PWNbdT4+Ml18MDt2PWQrMTZ8MDtpZigod3wwKT09KGNbdj4+Ml18MCkpe3c9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7dz1jW3c+PjJdfDB9eT14Y1tjWyhjW3M+PjJdfDApKzI4Pj4yXSY2M10ocyx3KXwwO2lmKCh5fDApPT0oeGNbY1soY1tzPj4yXXwwKSsyOD4+Ml0mNjNdKHMsY1tqPj4yXXwwKXwwKSl7bD02MzticmVha31jW2c+PjJdPTQ7dT00fWM6ZG97aWYoKGx8MCk9PTI3KXtsPTA7dT1qKzR8MDtpZigodXwwKT09KGt8MCkpe2w9Mjg7YnJlYWsgYn10PWhjW2NbKGNbcz4+Ml18MCkrNTI+PjJdJjYzXShzLGNbdT4+Ml18MCwwKXwwO2lmKHQ8PDI0Pj4yND09NDh8dDw8MjQ+PjI0PT02OSl7dT1qKzh8MDtpZigodXwwKT09KGt8MCkpe2w9MzE7YnJlYWsgYn1qPXU7dT1oY1tjWyhjW3M+PjJdfDApKzUyPj4yXSY2M10ocyxjW3U+PjJdfDAsMCl8MH1lbHNle2o9dTt1PXQ7dD0wfXk9Y1soY1tiPj4yXXwwKSszNj4+Ml18MDtjW3I+PjJdPWQ7Y1txPj4yXT1lO2NbcCswPj4yXT1jW3IrMD4+Ml07Y1tvKzA+PjJdPWNbcSswPj4yXTtuY1t5JjMxXShuLGIscCxvLGYsZyxoLHUsdCk7aj1qKzR8MDtkPWNbbj4+Ml18MH1lbHNlIGlmKChsfDApPT0zNyl7d2hpbGUoMSl7bD0wO2o9ais0fDA7aWYoKGp8MCk9PShrfDApKXtqPWs7YnJlYWt9aWYoaGNbY1soY1tzPj4yXXwwKSsxMj4+Ml0mNjNdKHMsODE5MixjW2o+PjJdfDApfDApe2w9Mzd9ZWxzZXticmVha319dT1lO3c9ZTt3aGlsZSgxKXtpZigoZHwwKT09MCl7dj0xO2Q9MH1lbHNle3Y9Y1tkKzEyPj4yXXwwO2lmKCh2fDApPT0oY1tkKzE2Pj4yXXwwKSl7dj1vY1tjWyhjW2Q+PjJdfDApKzM2Pj4yXSYxMjddKGQpfDB9ZWxzZXt2PWNbdj4+Ml18MH15PSh2fDApPT0tMTt2PXk/MTowO2Q9eT8wOmQ7dD15PzA6dH1pZigod3wwKSE9MCl7eD1jW3crMTI+PjJdfDA7aWYoKHh8MCk9PShjW3crMTY+PjJdfDApKXt3PW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle3c9Y1t4Pj4yXXwwfWlmKCEoKHd8MCk9PS0xKSl7aWYodl4odXwwKT09MCl7dj11O3c9dX1lbHNle2Q9dDticmVhayBjfX1lbHNle3U9MDtlPTA7bD01MH19ZWxzZXtsPTUwfWlmKChsfDApPT01MCl7bD0wO2lmKHYpe2Q9dDticmVhayBjfWVsc2V7dj11O3c9MH19eD1kKzEyfDA7eT1jW3g+PjJdfDA7dT1kKzE2fDA7aWYoKHl8MCk9PShjW3U+PjJdfDApKXt5PW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle3k9Y1t5Pj4yXXwwfWlmKCEoaGNbY1soY1tzPj4yXXwwKSsxMj4+Ml0mNjNdKHMsODE5Mix5KXwwKSl7ZD10O2JyZWFrIGN9eT1jW3g+PjJdfDA7aWYoKHl8MCk9PShjW3U+PjJdfDApKXtvY1tjWyhjW2Q+PjJdfDApKzQwPj4yXSYxMjddKGQpfDA7dT12O2NvbnRpbnVlfWVsc2V7Y1t4Pj4yXT15KzQ7dT12O2NvbnRpbnVlfX19ZWxzZSBpZigobHwwKT09NjMpe2w9MDt3PWNbdT4+Ml18MDtpZigod3wwKT09KGNbdj4+Ml18MCkpe29jW2NbKGNbZD4+Ml18MCkrNDA+PjJdJjEyN10oZCl8MH1lbHNle2NbdT4+Ml09dys0fWo9ais0fDA7ZD10fX13aGlsZSgwKTtpZigoanwwKT09KGt8MCkpe2JyZWFrIGF9dD1jW2c+PjJdfDB9aWYoKGx8MCk9PTI1KXtjW2c+PjJdPTQ7YnJlYWt9ZWxzZSBpZigobHwwKT09Mjgpe2NbZz4+Ml09NDticmVha31lbHNlIGlmKChsfDApPT0zMSl7Y1tnPj4yXT00O2JyZWFrfX19d2hpbGUoMCk7aWYoKGR8MCk9PTApe249MDtvPTF9ZWxzZXtuPWNbZCsxMj4+Ml18MDtpZigobnwwKT09KGNbZCsxNj4+Ml18MCkpe249b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7bj1jW24+PjJdfDB9bz0obnwwKT09LTE7bj1vPzA6ZDtvPW8/MTowfWlmKChlfDApIT0wKXtwPWNbZSsxMj4+Ml18MDtpZigocHwwKT09KGNbZSsxNj4+Ml18MCkpe3A9b2NbY1soY1tlPj4yXXwwKSszNj4+Ml0mMTI3XShlKXwwfWVsc2V7cD1jW3A+PjJdfDB9aWYoISgocHwwKT09LTEpKXtpZihvKXtjW2E+PjJdPW47aT1tO3JldHVybn19ZWxzZXtsPTc4fX1lbHNle2w9Nzh9aWYoKGx8MCk9PTc4PyFvOjApe2NbYT4+Ml09bjtpPW07cmV0dXJufWNbZz4+Ml09Y1tnPj4yXXwyO2NbYT4+Ml09bjtpPW07cmV0dXJufXk9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIGRqKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGVqKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBmaihhKXthPWF8MDtyZXR1cm4gMn1mdW5jdGlvbiBnaihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wO2o9aTtjaihhLGIsY1tkPj4yXXwwLGNbZT4+Ml18MCxmLGcsaCwxMjUyOCwxMjU2MHwwKTtpPWo7cmV0dXJufWZ1bmN0aW9uIGhqKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTA7az1pO209ZCs4fDA7bT1vY1tjWyhjW20+PjJdfDApKzIwPj4yXSYxMjddKG0pfDA7bj1hW20+PjBdfDA7aWYoKG4mMSk9PTApe2w9bSs0fDA7bT0obiYyNTUpPj4+MX1lbHNle2w9Y1ttKzg+PjJdfDA7bT1jW20rND4+Ml18MH1jaihiLGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaixsLGwrKG08PDIpfDApO2k9aztyZXR1cm59ZnVuY3Rpb24gaWooYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MDtqPWk7aT1pKzE2fDA7bD1qO2Y9Y1tmKzI4Pj4yXXwwO209Zis0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tsPj4yXT0xMzQ0ODtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEzNDQ4LGwpfWw9KGNbMTM0NTI+PjJdfDApKyAtMXwwO209Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7bD1mKzR8MDttPWNbbD4+Ml18MDtjW2w+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9bT1jW2U+PjJdfDA7Yj1iKzh8MDtiPW9jW2NbY1tiPj4yXT4+Ml0mMTI3XShiKXwwO2I9KGFpKGQsbSxiLGIrMTY4fDAsayxnLDApfDApLWJ8MDtpZigoYnwwKT49MTY4KXttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1jW2grMjQ+PjJdPSgoYnwwKS8xMnwwfDApJTd8MDttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBqaihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wO2o9aTtpPWkrMTZ8MDtsPWo7Zj1jW2YrMjg+PjJdfDA7bT1mKzR8MDtjW20+PjJdPShjW20+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW2w+PjJdPTEzNDQ4O2NbbCs0Pj4yXT0yMDg7Y1tsKzg+PjJdPTA7Y2coMTM0NDgsbCl9bD0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7bT1jW2YrOD4+Ml18MDtpZigoY1tmKzEyPj4yXXwwKS1tPj4yPj4+MD5sPj4+MD8oaz1jW20rKGw8PDIpPj4yXXwwLChrfDApIT0wKTowKXtsPWYrNHwwO209Y1tsPj4yXXwwO2NbbD4+Ml09bSsgLTE7aWYoKG18MCk9PTApe2xjW2NbKGNbZj4+Ml18MCkrOD4+Ml0mMjU1XShmKX1tPWNbZT4+Ml18MDtiPWIrOHwwO2I9b2NbY1soY1tiPj4yXXwwKSs0Pj4yXSYxMjddKGIpfDA7Yj0oYWkoZCxtLGIsYisyODh8MCxrLGcsMCl8MCktYnwwO2lmKChifDApPj0yODgpe209Y1tkPj4yXXwwO2NbYT4+Ml09bTtpPWo7cmV0dXJufWNbaCsxNj4+Ml09KChifDApLzEyfDB8MCklMTJ8MDttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBraihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTA7Yj1pO2k9aSsxNnwwO2s9YjtmPWNbZisyOD4+Ml18MDtsPWYrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1rPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtsPWNbZis4Pj4yXXwwO2lmKChjW2YrMTI+PjJdfDApLWw+PjI+Pj4wPms+Pj4wPyhqPWNbbCsoazw8Mik+PjJdfDAsKGp8MCkhPTApOjApe2s9Zis0fDA7bD1jW2s+PjJdfDA7Y1trPj4yXT1sKyAtMTtpZigobHwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfWU9bWooZCxjW2U+PjJdfDAsZyxqLDQpfDA7aWYoKGNbZz4+Ml0mNHwwKSE9MCl7bD1jW2Q+PjJdfDA7Y1thPj4yXT1sO2k9YjtyZXR1cm59aWYoKGV8MCk8Njkpe2c9ZSsyZTN8MH1lbHNle2c9KGUrIC02OXwwKT4+PjA8MzE/ZSsxOTAwfDA6ZX1jW2grMjA+PjJdPWcrIC0xOTAwO2w9Y1tkPj4yXXwwO2NbYT4+Ml09bDtpPWI7cmV0dXJufWw9WGEoNCl8MDtjW2w+PjJdPTIxMzA0O3diKGx8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIGxqKGIsZCxlLGYsZyxoLGosayxsKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtsPWk7aT1pKzY0fDA7eT1sO3g9bCsxNnwwO3A9bCsyOHwwO3Y9bCsyNHwwO3c9bCszMnwwO0M9bCsxMnwwO3I9bCsyMHwwO3M9bCszNnwwO3Q9bCs0MHwwO3o9bCs0NHwwO3E9bCs0OHwwO2NbaD4+Ml09MDt1PWNbZysyOD4+Ml18MDtCPXUrNHwwO2NbQj4+Ml09KGNbQj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbeT4+Ml09MTM0NDg7Y1t5KzQ+PjJdPTIwODtjW3krOD4+Ml09MDtjZygxMzQ0OCx5KX1BPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtCPWNbdSs4Pj4yXXwwO2lmKChjW3UrMTI+PjJdfDApLUI+PjI+Pj4wPkE+Pj4wPyhuPWNbQisoQTw8Mik+PjJdfDAsKG58MCkhPTApOjApe0E9dSs0fDA7Qj1jW0E+PjJdfDA7Y1tBPj4yXT1CKyAtMTtpZigoQnwwKT09MCl7bGNbY1soY1t1Pj4yXXwwKSs4Pj4yXSYyNTVdKHUpfWE6ZG97c3dpdGNoKGs8PDI0Pj4yNHwwKXtjYXNlIDgzOntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8NjEpe2Nbaj4+Ml09bjticmVhayBhfWVsc2V7Y1toPj4yXT1tfDQ7YnJlYWsgYX19O2Nhc2UgODQ6e2NqKHMsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLDEyNjk2LDEyNzI4fDApO2NbZT4+Ml09Y1tzPj4yXTticmVha307Y2FzZSA4Mjp7Y2oocixkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosMTI2NzIsMTI2OTJ8MCk7Y1tlPj4yXT1jW3I+PjJdO2JyZWFrfTtjYXNlIDExMjp7bT1qKzh8MDtqPWNbZj4+Ml18MDtmPWQrOHwwO2Y9b2NbY1soY1tmPj4yXXwwKSs4Pj4yXSYxMjddKGYpfDA7ZD1hW2Y+PjBdfDA7aWYoKGQmMSk9PTApe2Q9KGQmMjU1KT4+PjF9ZWxzZXtkPWNbZis0Pj4yXXwwfWc9YVtmKzEyPj4wXXwwO2lmKChnJjEpPT0wKXtnPShnJjI1NSk+Pj4xfWVsc2V7Zz1jW2YrMTY+PjJdfDB9aWYoKGR8MCk9PSgwLWd8MCkpe2NbaD4+Ml09Y1toPj4yXXw0O2JyZWFrIGF9Qz1haShlLGosZixmKzI0fDAsbixoLDApfDA7aD1DLWZ8MDtpZigoQ3wwKT09KGZ8MCk/KGNbbT4+Ml18MCk9PTEyOjApe2NbbT4+Ml09MDticmVhayBhfWlmKChofDApPT0xMj8obz1jW20+PjJdfDAsKG98MCk8MTIpOjApe2NbbT4+Ml09bysxMn1icmVha307Y2FzZSAxMTQ6e2NqKEMsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLDEyNjI0LDEyNjY4fDApO2NbZT4+Ml09Y1tDPj4yXTticmVha307Y2FzZSAxMjA6e0M9Y1soY1tkPj4yXXwwKSsyMD4+Ml18MDtjW3Q+PjJdPWNbZT4+Ml07Y1t6Pj4yXT1jW2Y+PjJdO2NbeCswPj4yXT1jW3QrMD4+Ml07Y1t5KzA+PjJdPWNbeiswPj4yXTtpY1tDJjYzXShiLGQseCx5LGcsaCxqKTtpPWw7cmV0dXJufTtjYXNlIDg4OntvPWQrOHwwO289b2NbY1soY1tvPj4yXXwwKSsyND4+Ml0mMTI3XShvKXwwO249YVtvPj4wXXwwO2lmKChuJjEpPT0wKXttPW8rNHwwO249KG4mMjU1KT4+PjF9ZWxzZXttPWNbbys4Pj4yXXwwO249Y1tvKzQ+PjJdfDB9Y2oocSxkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosbSxtKyhuPDwyKXwwKTtjW2U+PjJdPWNbcT4+Ml07YnJlYWt9O2Nhc2UgMTE5OntuPW1qKGUsY1tmPj4yXXwwLGgsbiwxKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8Nyl7Y1tqKzI0Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMjE6e209aisyMHwwO249bWooZSxjW2Y+PjJdfDAsaCxuLDQpfDA7aWYoKGNbaD4+Ml0mNHwwKT09MCl7aWYoKG58MCk8Njkpe2g9bisyZTN8MH1lbHNle2g9KG4rIC02OXwwKT4+PjA8MzE/bisxOTAwfDA6bn1jW20+PjJdPWgrIC0xOTAwfWJyZWFrfTtjYXNlIDg5OnttPW1qKGUsY1tmPj4yXXwwLGgsbiw0KXwwO2lmKChjW2g+PjJdJjR8MCk9PTApe2NbaisyMD4+Ml09bSsgLTE5MDB9YnJlYWt9O2Nhc2UgMzc6e2o9Y1tmPj4yXXwwO2Y9Y1tlPj4yXXwwO2Rve2lmKChmfDApIT0wKXtkPWNbZisxMj4+Ml18MDtpZigoZHwwKT09KGNbZisxNj4+Ml18MCkpe2Y9b2NbY1soY1tmPj4yXXwwKSszNj4+Ml0mMTI3XShmKXwwfWVsc2V7Zj1jW2Q+PjJdfDB9aWYoKGZ8MCk9PS0xKXtjW2U+PjJdPTA7Zj0xO2JyZWFrfWVsc2V7Zj0oY1tlPj4yXXwwKT09MDticmVha319ZWxzZXtmPTF9fXdoaWxlKDApO2lmKChqfDApIT0wKXtkPWNbaisxMj4+Ml18MDtpZigoZHwwKT09KGNbaisxNj4+Ml18MCkpe2Q9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7ZD1jW2Q+PjJdfDB9aWYoISgoZHwwKT09LTEpKXtpZighZil7bT0xMjZ9fWVsc2V7bT0xMjR9fWVsc2V7bT0xMjR9aWYoKG18MCk9PTEyNCl7aWYoZil7bT0xMjZ9ZWxzZXtqPTB9fWlmKChtfDApPT0xMjYpe2NbaD4+Ml09Y1toPj4yXXw2O2JyZWFrIGF9ZD1jW2U+PjJdfDA7Zj1jW2QrMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2QrMTY+PjJdfDApKXtmPW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle2Y9Y1tmPj4yXXwwfWlmKCEoKGhjW2NbKGNbbj4+Ml18MCkrNTI+PjJdJjYzXShuLGYsMCl8MCk8PDI0Pj4yND09MzcpKXtjW2g+PjJdPWNbaD4+Ml18NDticmVhayBhfWQ9Y1tlPj4yXXwwO2Y9ZCsxMnwwO249Y1tmPj4yXXwwO2lmKChufDApPT0oY1tkKzE2Pj4yXXwwKSl7b2NbY1soY1tkPj4yXXwwKSs0MD4+Ml0mMTI3XShkKXwwfWVsc2V7Y1tmPj4yXT1uKzR9bj1jW2U+PjJdfDA7ZG97aWYoKG58MCkhPTApe2Y9Y1tuKzEyPj4yXXwwO2lmKChmfDApPT0oY1tuKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXtuPWNbZj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtuPTE7YnJlYWt9ZWxzZXtuPShjW2U+PjJdfDApPT0wO2JyZWFrfX1lbHNle249MX19d2hpbGUoMCk7aWYoKGp8MCkhPTApe2Y9Y1tqKzEyPj4yXXwwO2lmKChmfDApPT0oY1tqKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtqPWNbZj4+Ml18MH1pZighKChqfDApPT0tMSkpe2lmKG4pe2JyZWFrIGF9fWVsc2V7bT0xNDd9fWVsc2V7bT0xNDd9aWYoKG18MCk9PTE0Nz8hbjowKXticmVhayBhfWNbaD4+Ml09Y1toPj4yXXwyO2JyZWFrfTtjYXNlIDEwOTp7bj1taihlLGNbZj4+Ml18MCxoLG4sMil8MDttPWNbaD4+Ml18MDtpZigobSY0fDApPT0wJihufDApPDEzKXtjW2orMTY+PjJdPW4rIC0xO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSA3MDp7Y2oodyxkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosMTI1OTIsMTI2MjR8MCk7Y1tlPj4yXT1jW3c+PjJdO2JyZWFrfTtjYXNlIDY4Ontjaih2LGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaiwxMjU2MCwxMjU5MnwwKTtjW2U+PjJdPWNbdj4+Ml07YnJlYWt9O2Nhc2UgMTA0OmNhc2UgNjY6Y2FzZSA5ODp7Qj1jW2Y+PjJdfDA7Qz1kKzh8MDtDPW9jW2NbKGNbQz4+Ml18MCkrND4+Ml0mMTI3XShDKXwwO2g9KGFpKGUsQixDLEMrMjg4fDAsbixoLDApfDApLUN8MDtpZigoaHwwKTwyODgpe2NbaisxNj4+Ml09KChofDApLzEyfDB8MCklMTJ8MH1icmVha307Y2FzZSAxMTY6Y2FzZSAxMTA6e2o9Y1tmPj4yXXwwO3doaWxlKDEpe2Q9Y1tlPj4yXXwwO2Rve2lmKChkfDApIT0wKXtmPWNbZCsxMj4+Ml18MDtpZigoZnwwKT09KGNbZCsxNj4+Ml18MCkpe2Y9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7Zj1jW2Y+PjJdfDB9aWYoKGZ8MCk9PS0xKXtjW2U+PjJdPTA7Zj0xO2JyZWFrfWVsc2V7Zj0oY1tlPj4yXXwwKT09MDticmVha319ZWxzZXtmPTF9fXdoaWxlKDApO2lmKChqfDApIT0wKXtkPWNbaisxMj4+Ml18MDtpZigoZHwwKT09KGNbaisxNj4+Ml18MCkpe2Q9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7ZD1jW2Q+PjJdfDB9aWYoISgoZHwwKT09LTEpKXtpZighZil7YnJlYWt9fWVsc2V7bT01M319ZWxzZXttPTUzfWlmKChtfDApPT01Myl7bT0wO2lmKGYpe2o9MDticmVha31lbHNle2o9MH19ZD1jW2U+PjJdfDA7Zj1jW2QrMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2QrMTY+PjJdfDApKXtmPW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle2Y9Y1tmPj4yXXwwfWlmKCEoaGNbY1soY1tuPj4yXXwwKSsxMj4+Ml0mNjNdKG4sODE5MixmKXwwKSl7YnJlYWt9bz1jW2U+PjJdfDA7ZD1vKzEyfDA7Zj1jW2Q+PjJdfDA7aWYoKGZ8MCk9PShjW28rMTY+PjJdfDApKXtvY1tjWyhjW28+PjJdfDApKzQwPj4yXSYxMjddKG8pfDA7Y29udGludWV9ZWxzZXtjW2Q+PjJdPWYrNDtjb250aW51ZX19Zj1jW2U+PjJdfDA7ZG97aWYoKGZ8MCkhPTApe249Y1tmKzEyPj4yXXwwO2lmKChufDApPT0oY1tmKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2Y+PjJdfDApKzM2Pj4yXSYxMjddKGYpfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtuPTE7YnJlYWt9ZWxzZXtuPShjW2U+PjJdfDApPT0wO2JyZWFrfX1lbHNle249MX19d2hpbGUoMCk7aWYoKGp8MCkhPTApe2Y9Y1tqKzEyPj4yXXwwO2lmKChmfDApPT0oY1tqKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtqPWNbZj4+Ml18MH1pZighKChqfDApPT0tMSkpe2lmKG4pe2JyZWFrIGF9fWVsc2V7bT03NH19ZWxzZXttPTc0fWlmKChtfDApPT03ND8hbjowKXticmVhayBhfWNbaD4+Ml09Y1toPj4yXXwyO2JyZWFrfTtjYXNlIDY1OmNhc2UgOTc6e0I9Y1tmPj4yXXwwO0M9ZCs4fDA7Qz1vY1tjW2NbQz4+Ml0+PjJdJjEyN10oQyl8MDtoPShhaShlLEIsQyxDKzE2OHwwLG4saCwwKXwwKS1DfDA7aWYoKGh8MCk8MTY4KXtjW2orMjQ+PjJdPSgoaHwwKS8xMnwwfDApJTd8MH1icmVha307Y2FzZSA5OTp7bz1kKzh8MDtvPW9jW2NbKGNbbz4+Ml18MCkrMTI+PjJdJjEyN10obyl8MDtuPWFbbz4+MF18MDtpZigobiYxKT09MCl7bT1vKzR8MDtuPShuJjI1NSk+Pj4xfWVsc2V7bT1jW28rOD4+Ml18MDtuPWNbbys0Pj4yXXwwfWNqKHAsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLG0sbSsobjw8Mil8MCk7Y1tlPj4yXT1jW3A+PjJdO2JyZWFrfTtjYXNlIDcyOntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8MjQpe2Nbais4Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMDE6Y2FzZSAxMDA6e209aisxMnwwO2o9bWooZSxjW2Y+PjJdfDAsaCxuLDIpfDA7bj1jW2g+PjJdfDA7aWYoKG4mNHwwKT09MD8oaisgLTF8MCk+Pj4wPDMxOjApe2NbbT4+Ml09ajticmVhayBhfWNbaD4+Ml09bnw0O2JyZWFrfTtjYXNlIDczOnttPWorOHwwO249bWooZSxjW2Y+PjJdfDAsaCxuLDIpfDA7aj1jW2g+PjJdfDA7aWYoKGomNHwwKT09MD8obisgLTF8MCk+Pj4wPDEyOjApe2NbbT4+Ml09bjticmVhayBhfWNbaD4+Ml09anw0O2JyZWFrfTtjYXNlIDc3OntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8NjApe2Nbais0Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMDY6e249bWooZSxjW2Y+PjJdfDAsaCxuLDMpfDA7bT1jW2g+PjJdfDA7aWYoKG0mNHwwKT09MCYobnwwKTwzNjYpe2NbaisyOD4+Ml09bjticmVhayBhfWVsc2V7Y1toPj4yXT1tfDQ7YnJlYWsgYX19O2RlZmF1bHQ6e2NbaD4+Ml09Y1toPj4yXXw0fX19d2hpbGUoMCk7Y1tiPj4yXT1jW2U+PjJdO2k9bDtyZXR1cm59Qz1YYSg0KXwwO2NbQz4+Ml09MjEzMDQ7d2IoQ3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gbWooYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtrPWNbYT4+Ml18MDtkb3tpZigoa3wwKSE9MCl7aj1jW2srMTI+PjJdfDA7aWYoKGp8MCk9PShjW2srMTY+PjJdfDApKXtqPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2o9Y1tqPj4yXXwwfWlmKChqfDApPT0tMSl7Y1thPj4yXT0wO2o9MTticmVha31lbHNle2o9KGNbYT4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7aj0xfX13aGlsZSgwKTtpZigoYnwwKSE9MCl7az1jW2IrMTI+PjJdfDA7aWYoKGt8MCk9PShjW2IrMTY+PjJdfDApKXtrPW9jW2NbKGNbYj4+Ml18MCkrMzY+PjJdJjEyN10oYil8MH1lbHNle2s9Y1trPj4yXXwwfWlmKCEoKGt8MCk9PS0xKSl7aWYoIWope2c9MTV9fWVsc2V7Zz0xM319ZWxzZXtnPTEzfWlmKChnfDApPT0xMyl7aWYoail7Zz0xNX1lbHNle2I9MH19aWYoKGd8MCk9PTE1KXtjW2Q+PjJdPWNbZD4+Ml18NjtuPTA7aT1oO3JldHVybiBufDB9aj1jW2E+PjJdfDA7az1jW2orMTI+PjJdfDA7aWYoKGt8MCk9PShjW2orMTY+PjJdfDApKXtqPW9jW2NbKGNbaj4+Ml18MCkrMzY+PjJdJjEyN10oail8MH1lbHNle2o9Y1trPj4yXXwwfWlmKCEoaGNbY1soY1tlPj4yXXwwKSsxMj4+Ml0mNjNdKGUsMjA0OCxqKXwwKSl7Y1tkPj4yXT1jW2Q+PjJdfDQ7bj0wO2k9aDtyZXR1cm4gbnwwfWo9KGhjW2NbKGNbZT4+Ml18MCkrNTI+PjJdJjYzXShlLGosMCl8MCk8PDI0Pj4yNDtsPWNbYT4+Ml18MDtrPWwrMTJ8MDttPWNbaz4+Ml18MDtpZigobXwwKT09KGNbbCsxNj4+Ml18MCkpe29jW2NbKGNbbD4+Ml18MCkrNDA+PjJdJjEyN10obCl8MDtrPWI7bD1iO2I9an1lbHNle2Nbaz4+Ml09bSs0O2s9YjtsPWI7Yj1qfXdoaWxlKDEpe2I9YisgLTQ4fDA7Zj1mKyAtMXwwO2o9Y1thPj4yXXwwO2Rve2lmKChqfDApIT0wKXttPWNbaisxMj4+Ml18MDtpZigobXwwKT09KGNbaisxNj4+Ml18MCkpe2o9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7aj1jW20+PjJdfDB9aWYoKGp8MCk9PS0xKXtjW2E+PjJdPTA7bT0xO2JyZWFrfWVsc2V7bT0oY1thPj4yXXwwKT09MDticmVha319ZWxzZXttPTF9fXdoaWxlKDApO2lmKChsfDApPT0wKXtqPWs7bD0wO249MX1lbHNle2o9Y1tsKzEyPj4yXXwwO2lmKChqfDApPT0oY1tsKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2w+PjJdfDApKzM2Pj4yXSYxMjddKGwpfDB9ZWxzZXtqPWNbaj4+Ml18MH1uPShqfDApPT0tMTtqPW4/MDprO2w9bj8wOms7bj1uPzE6KGt8MCk9PTB9az1jW2E+PjJdfDA7aWYoISgobV5uKSYoZnwwKT4wKSl7YnJlYWt9bT1jW2srMTI+PjJdfDA7aWYoKG18MCk9PShjW2srMTY+PjJdfDApKXtrPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2s9Y1ttPj4yXXwwfWlmKCEoaGNbY1soY1tlPj4yXXwwKSsxMj4+Ml0mNjNdKGUsMjA0OCxrKXwwKSl7Zz01OTticmVha31iPSgoaGNbY1soY1tlPj4yXXwwKSs1Mj4+Ml0mNjNdKGUsaywwKXwwKTw8MjQ+PjI0KSsoYioxMHwwKXwwO209Y1thPj4yXXwwO249bSsxMnwwO2s9Y1tuPj4yXXwwO2lmKChrfDApPT0oY1ttKzE2Pj4yXXwwKSl7b2NbY1soY1ttPj4yXXwwKSs0MD4+Ml0mMTI3XShtKXwwO2s9ajtjb250aW51ZX1lbHNle2Nbbj4+Ml09ays0O2s9ajtjb250aW51ZX19aWYoKGd8MCk9PTU5KXtpPWg7cmV0dXJuIGJ8MH1kb3tpZigoa3wwKSE9MCl7ZT1jW2srMTI+PjJdfDA7aWYoKGV8MCk9PShjW2srMTY+PjJdfDApKXtlPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2U9Y1tlPj4yXXwwfWlmKChlfDApPT0tMSl7Y1thPj4yXT0wO2E9MTticmVha31lbHNle2E9KGNbYT4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7YT0xfX13aGlsZSgwKTtpZigoanwwKSE9MCl7ZT1jW2orMTI+PjJdfDA7aWYoKGV8MCk9PShjW2orMTY+PjJdfDApKXtlPW9jW2NbKGNbaj4+Ml18MCkrMzY+PjJdJjEyN10oail8MH1lbHNle2U9Y1tlPj4yXXwwfWlmKCEoKGV8MCk9PS0xKSl7aWYoYSl7bj1iO2k9aDtyZXR1cm4gbnwwfX1lbHNle2c9NTZ9fWVsc2V7Zz01Nn1pZigoZ3wwKT09NTY/IWE6MCl7bj1iO2k9aDtyZXR1cm4gbnwwfWNbZD4+Ml09Y1tkPj4yXXwyO249YjtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBuaihiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2U9Yis4fDA7Zj1jW2U+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChmfDApIT0oY1szMzQwXXwwKSl7VmIoY1tlPj4yXXwwKX1pZigoYnwwKT09MCl7aT1kO3JldHVybn12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIG9qKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtiPWIrOHwwO2U9Y1tiPj4yXXwwO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1pZigoZXwwKT09KGNbMzM0MF18MCkpe2k9ZDtyZXR1cm59VmIoY1tiPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIHBqKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wO2Y9aTtpPWkrMTEyfDA7bj1mKzEwMHwwO2c9ZjthW24+PjBdPTM3O2w9bisxfDA7YVtsPj4wXT1qO209bisyfDA7YVttPj4wXT1rO2FbbiszPj4wXT0wO2lmKCEoazw8MjQ+PjI0PT0wKSl7YVtsPj4wXT1rO2FbbT4+MF09an1uPWViKGd8MCwxMDAsbnwwLGh8MCxjW2QrOD4+Ml18MCl8MDtoPWcrbnwwO2Q9Y1tlPj4yXXwwO2lmKChufDApPT0wKXtuPWQ7Y1tiPj4yXT1uO2k9ZjtyZXR1cm59ZWxzZXtlPWQ7bD1kfWRve2o9YVtnPj4wXXwwO2Rve2lmKChlfDApIT0wKXtrPWUrMjR8MDtkPWNbaz4+Ml18MDtpZigoZHwwKT09KGNbZSsyOD4+Ml18MCkpe249KHhjW2NbKGNbZT4+Ml18MCkrNTI+PjJdJjYzXShlLGomMjU1KXwwKT09LTE7bD1uPzA6bDtlPW4/MDplO2JyZWFrfWVsc2V7Y1trPj4yXT1kKzE7YVtkPj4wXT1qO2JyZWFrfX1lbHNle2U9MH19d2hpbGUoMCk7Zz1nKzF8MH13aGlsZSgoZ3wwKSE9KGh8MCkpO2NbYj4+Ml09bDtpPWY7cmV0dXJufWZ1bmN0aW9uIHFqKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7ZT1iKzh8MDtmPWNbZT4+Ml18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9aWYoKGZ8MCkhPShjWzMzNDBdfDApKXtWYihjW2U+PjJdfDApfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gcmooYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2I9Yis4fDA7ZT1jW2I+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChlfDApPT0oY1szMzQwXXwwKSl7aT1kO3JldHVybn1WYihjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gc2ooYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7Zj1pO2k9aSs1Mjh8MDtvPWYrNTEyfDA7cD1mKzQxMnwwO209ZjtsPWYrNDA4fDA7Zz1mKzh8MDthW28+PjBdPTM3O249bysxfDA7YVtuPj4wXT1qO3E9bysyfDA7YVtxPj4wXT1rO2FbbyszPj4wXT0wO2lmKCEoazw8MjQ+PjI0PT0wKSl7YVtuPj4wXT1rO2FbcT4+MF09an1qPWQrOHwwO2ViKHB8MCwxMDAsb3wwLGh8MCxjW2o+PjJdfDApfDA7az1tO2Nbaz4+Ml09MDtjW2srND4+Ml09MDtjW2w+PjJdPXA7aj1pYihjW2o+PjJdfDApfDA7az1WbShnLGwsMTAwLG0pfDA7aWYoKGp8MCkhPTApe2liKGp8MCl8MH1pZigoa3wwKT09LTEpe29rKDE0Mjk2KX1qPWcrKGs8PDIpfDA7ZD1jW2U+PjJdfDA7aWYoKGt8MCk9PTApe3E9ZDtjW2I+PjJdPXE7aT1mO3JldHVybn1lbHNle2U9ZDtrPWR9ZG97ZD1jW2c+PjJdfDA7aWYoKGV8MCk9PTApe2U9MH1lbHNle2g9ZSsyNHwwO2w9Y1toPj4yXXwwO2lmKChsfDApPT0oY1tlKzI4Pj4yXXwwKSl7ZD14Y1tjWyhjW2U+PjJdfDApKzUyPj4yXSY2M10oZSxkKXwwfWVsc2V7Y1toPj4yXT1sKzQ7Y1tsPj4yXT1kfXE9KGR8MCk9PS0xO2s9cT8wOms7ZT1xPzA6ZX1nPWcrNHwwfXdoaWxlKChnfDApIT0oanwwKSk7Y1tiPj4yXT1rO2k9ZjtyZXR1cm59ZnVuY3Rpb24gdGooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gdWooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHZqKGEpe2E9YXwwO3JldHVybiAxMjd9ZnVuY3Rpb24gd2ooYSl7YT1hfDA7cmV0dXJuIDEyN31mdW5jdGlvbiB4aihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIHlqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gemooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBBaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09MjthW2IrMT4+MF09NDU7YVtiKzI+PjBdPTA7cmV0dXJufWZ1bmN0aW9uIEJqKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIENqKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBEaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gRWooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRmooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEdqKGEpe2E9YXwwO3JldHVybiAxMjd9ZnVuY3Rpb24gSGooYSl7YT1hfDA7cmV0dXJuIDEyN31mdW5jdGlvbiBJaihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIEpqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gS2ooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBMaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09MjthW2IrMT4+MF09NDU7YVtiKzI+PjBdPTA7cmV0dXJufWZ1bmN0aW9uIE1qKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIE5qKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBPaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gUGooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gUWooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFJqKGEpe2E9YXwwO3JldHVybiAyMTQ3NDgzNjQ3fWZ1bmN0aW9uIFNqKGEpe2E9YXwwO3JldHVybiAyMTQ3NDgzNjQ3fWZ1bmN0aW9uIFRqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gVWooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBWaihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIFdqKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZD1pO2FbYj4+MF09MjtiPWIrNHwwO2Y9MTtlPWI7d2hpbGUoMSl7Zj1mKyAtMXwwO2NbZT4+Ml09NDU7aWYoKGZ8MCk9PTApe2JyZWFrfWVsc2V7ZT1lKzR8MH19Y1tiKzQ+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBYaihhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBZaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gWmooYixjKXtiPWJ8MDtjPWN8MDthW2I+PjBdPTY3MTA5NjM0O2FbYisxPj4wXT0yNjIxNDc7YVtiKzI+PjBdPTEwMjQ7YVtiKzM+PjBdPTQ7cmV0dXJufWZ1bmN0aW9uIF9qKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uICRqKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBhayhhKXthPWF8MDtyZXR1cm4gMjE0NzQ4MzY0N31mdW5jdGlvbiBiayhhKXthPWF8MDtyZXR1cm4gMjE0NzQ4MzY0N31mdW5jdGlvbiBjayhhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIGRrKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gZWsoYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBmayhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2Q9aTthW2I+PjBdPTI7Yj1iKzR8MDtmPTE7ZT1iO3doaWxlKDEpe2Y9ZisgLTF8MDtjW2U+PjJdPTQ1O2lmKChmfDApPT0wKXticmVha31lbHNle2U9ZSs0fDB9fWNbYis0Pj4yXT0wO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ2soYSl7YT1hfDA7cmV0dXJuIDB9ZnVuY3Rpb24gaGsoYixjKXtiPWJ8MDtjPWN8MDthW2I+PjBdPTY3MTA5NjM0O2FbYisxPj4wXT0yNjIxNDc7YVtiKzI+PjBdPTEwMjQ7YVtiKzM+PjBdPTQ7cmV0dXJufWZ1bmN0aW9uIGlrKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBqayhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBrayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gbGsoYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO249aTtpPWkrMjQwfDA7cD1uO3g9bisxNDB8MDtkPW4rMTZ8MDtyPW4rMjR8MDt1PW4rMTM4fDA7cz1uKzEyOHwwO3E9bisyOHwwO2NbZD4+Ml09eDttPWQrNHwwO2NbbT4+Ml09MjEzO3g9eCsxMDB8MDtvPWNbaCsyOD4+Ml18MDt3PW8rNHwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbcD4+Ml09MTM0NTY7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ1NixwKX13PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt2PWNbbys4Pj4yXXwwO2lmKChjW28rMTI+PjJdfDApLXY+PjI+Pj4wPnc+Pj4wPyh0PWNbdisodzw8Mik+PjJdfDAsKHR8MCkhPTApOjApe2FbdT4+MF09MDtkb3tpZihuayhlLGNbZj4+Ml18MCxnLG8sY1toKzQ+PjJdfDAsaix1LHQsZCxyLHgpfDApe3VjW2NbKGNbdD4+Ml18MCkrMzI+PjJdJjMxXSh0LDEzMDg4LDEzMDk4fDAscyl8MDtnPWNbcj4+Ml18MDtoPWNbZD4+Ml18MDt0PWctaHwwO2lmKCh0fDApPjk4KXt2PXVuKHQrMnwwKXwwO2lmKCh2fDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3Q9dn19ZWxzZXt0PTA7dj1xfWlmKChhW3U+PjBdfDApIT0wKXthW3Y+PjBdPTQ1O3Y9disxfDB9aWYoaD4+PjA8Zz4+PjApe3U9cysxMHwwO2c9cztkb3t3PWFbaD4+MF18MDt4PXM7d2hpbGUoMSl7aWYoKGFbeD4+MF18MCk9PXc8PDI0Pj4yNCl7YnJlYWt9eD14KzF8MDtpZigoeHwwKT09KHV8MCkpe3g9dTticmVha319YVt2Pj4wXT1hWzEzMDg4Kyh4LWcpPj4wXXwwO2g9aCsxfDA7dj12KzF8MH13aGlsZShoPj4+MDwoY1tyPj4yXXwwKT4+PjApfWFbdj4+MF09MDtjW3A+PjJdPWs7aWYoKEZhKHF8MCwxMzEwNCxwfDApfDApPT0xKXtpZigodHwwKT09MCl7YnJlYWt9dm4odCk7YnJlYWt9Zj1YYSg4KXwwO2NbZj4+Ml09OTkyODt3aGlsZSgxKXtqPXVuKDI4KXwwO2lmKChqfDApIT0wKXtsPTI5O2JyZWFrfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXtsPTI3O2JyZWFrfXNjW2wmMzFdKCl9aWYoKGx8MCk9PTI3KXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNlIGlmKChsfDApPT0yOSl7Y1tqKzQ+PjJdPTE1O2Nbaj4+Ml09MTU7bD1qKzEyfDA7Y1tmKzQ+PjJdPWw7Y1tqKzg+PjJdPTA7aj1sKzB8MDtsPTEzMTEyfDA7Yj1qKzE2fDA7ZG97YVtqPj4wXT1hW2w+PjBdfDA7aj1qKzF8MDtsPWwrMXwwfXdoaWxlKChqfDApPChifDApKTt3YihmfDAsMTAwNjQsMTA2KX19fXdoaWxlKDApO3A9Y1tlPj4yXXwwO2lmKChwfDApIT0wKXtpZigoY1twKzEyPj4yXXwwKT09KGNbcCsxNj4+Ml18MCk/KG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xOjApe2NbZT4+Ml09MDtwPTB9fWVsc2V7cD0wfWs9KHB8MCk9PTA7ZT1jW2Y+PjJdfDA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApIT0oY1tlKzE2Pj4yXXwwKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTQ2O2JyZWFrfX1pZighKChvY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDApPT0tMSkpe2lmKGspe2JyZWFrfWVsc2V7bD00NjticmVha319ZWxzZXtjW2Y+PjJdPTA7bD00NDticmVha319ZWxzZXtsPTQ0fX13aGlsZSgwKTtpZigobHwwKT09NDQ/azowKXtsPTQ2fWlmKChsfDApPT00Nil7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1wO3c9bys0fDA7eD1jW3c+PjJdfDA7Y1t3Pj4yXT14KyAtMTtpZigoeHwwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfWw9Y1tkPj4yXXwwO2NbZD4+Ml09MDtpZigobHwwKT09MCl7aT1uO3JldHVybn1sY1tjW20+PjJdJjI1NV0obCk7aT1uO3JldHVybn14PVhhKDQpfDA7Y1t4Pj4yXT0yMTMwNDt3Yih4fDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBtayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gbmsoZSxmLGcsaCxqLGssbCxtLG4sbyxwKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDtwPXB8MDt2YXIgcT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MDt1PWk7aT1pKzU5MnwwO1E9dTtPPXUrMTEyfDA7Rz11KzEyfDA7TT11KzEwMHwwO0o9dSs0MHwwO0s9dSsyNHwwO0w9dSszNnwwO1A9dSs4OHwwO049dSs3NnwwO0g9dSs1MnwwO0k9dSs2NHwwO1Q9dSsxMjB8MDtGPXUrNTIwfDA7dD11KzUyNHwwO3k9dSs1MzZ8MDt4PXUrNTQ4fDA7cz11KzU2MHwwO3c9dSs1NzJ8MDtCPXUrNTg0fDA7Y1tGPj4yXT0wO2NbdCswPj4yXT0wO2NbdCs0Pj4yXT0wO2NbdCs4Pj4yXT0wO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbcyswPj4yXT0wO2Nbcys0Pj4yXT0wO2Nbcys4Pj4yXT0wO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wO2Rve2lmKGcpe2lmKCEoKGNbMzIyOF18MCk9PS0xKSl7Y1tRPj4yXT0xMjkxMjtjW1ErND4+Ml09MjA4O2NbUSs4Pj4yXT0wO2NnKDEyOTEyLFEpfUg9KGNbMTI5MTY+PjJdfDApKyAtMXwwO0U9Y1toKzg+PjJdfDA7aWYoKGNbaCsxMj4+Ml18MCktRT4+Mj4+PjA+SD4+PjA/KEQ9Y1tFKyhIPDwyKT4+Ml18MCwoRHwwKSE9MCk6MCl7bWNbY1soY1tEPj4yXXwwKSs0ND4+Ml0mMTI3XShPLEQpO2NbRj4+Ml09Y1tPPj4yXTttY1tjWyhjW0Q+PjJdfDApKzMyPj4yXSYxMjddKEcsRCk7aWYoKGFbcz4+MF0mMSk9PTApe2FbcysxPj4wXT0wO2Fbcz4+MF09MH1lbHNle2FbY1tzKzg+PjJdPj4wXT0wO2Nbcys0Pj4yXT0wfWlnKHMpO2NbcyswPj4yXT1jW0crMD4+Ml07Y1tzKzQ+PjJdPWNbRys0Pj4yXTtjW3MrOD4+Ml09Y1tHKzg+PjJdO2NbRyswPj4yXT0wO2NbRys0Pj4yXT0wO2NbRys4Pj4yXT0wO21jW2NbKGNbRD4+Ml18MCkrMjg+PjJdJjEyN10oTSxEKTtpZigoYVt4Pj4wXSYxKT09MCl7YVt4KzE+PjBdPTA7YVt4Pj4wXT0wfWVsc2V7YVtjW3grOD4+Ml0+PjBdPTA7Y1t4KzQ+PjJdPTB9aWcoeCk7Y1t4KzA+PjJdPWNbTSswPj4yXTtjW3grND4+Ml09Y1tNKzQ+PjJdO2NbeCs4Pj4yXT1jW00rOD4+Ml07Y1tNKzA+PjJdPTA7Y1tNKzQ+PjJdPTA7Y1tNKzg+PjJdPTA7aD1vY1tjWyhjW0Q+PjJdfDApKzEyPj4yXSYxMjddKEQpfDA7Rz1vY1tjWyhjW0Q+PjJdfDApKzE2Pj4yXSYxMjddKEQpfDA7bWNbY1soY1tEPj4yXXwwKSsyMD4+Ml0mMTI3XShKLEQpO2lmKChhW3Q+PjBdJjEpPT0wKXthW3QrMT4+MF09MDthW3Q+PjBdPTB9ZWxzZXthW2NbdCs4Pj4yXT4+MF09MDtjW3QrND4+Ml09MH1pZyh0KTtjW3QrMD4+Ml09Y1tKKzA+PjJdO2NbdCs0Pj4yXT1jW0orND4+Ml07Y1t0Kzg+PjJdPWNbSis4Pj4yXTtjW0orMD4+Ml09MDtjW0orND4+Ml09MDtjW0orOD4+Ml09MDttY1tjWyhjW0Q+PjJdfDApKzI0Pj4yXSYxMjddKEssRCk7aWYoKGFbeT4+MF0mMSk9PTApe2FbeSsxPj4wXT0wO2FbeT4+MF09MH1lbHNle2FbY1t5Kzg+PjJdPj4wXT0wO2NbeSs0Pj4yXT0wfWlnKHkpO2NbeSswPj4yXT1jW0srMD4+Ml07Y1t5KzQ+PjJdPWNbSys0Pj4yXTtjW3krOD4+Ml09Y1tLKzg+PjJdO2NbSyswPj4yXT0wO2NbSys0Pj4yXT0wO2NbSys4Pj4yXT0wO1Y9b2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwO2JyZWFrfWVhPVhhKDQpfDA7Y1tlYT4+Ml09MjEzMDQ7d2IoZWF8MCwyMTM3NiwxOTYpfWVsc2V7aWYoISgoY1szMjEyXXwwKT09LTEpKXtjW1E+PjJdPTEyODQ4O2NbUSs0Pj4yXT0yMDg7Y1tRKzg+PjJdPTA7Y2coMTI4NDgsUSl9Rz0oY1sxMjg1Mj4+Ml18MCkrIC0xfDA7RD1jW2grOD4+Ml18MDtpZigoY1toKzEyPj4yXXwwKS1EPj4yPj4+MD5HPj4+MD8oRT1jW0QrKEc8PDIpPj4yXXwwLChFfDApIT0wKTowKXttY1tjWyhjW0U+PjJdfDApKzQ0Pj4yXSYxMjddKEwsRSk7Y1tGPj4yXT1jW0w+PjJdO21jW2NbKGNbRT4+Ml18MCkrMzI+PjJdJjEyN10oUCxFKTtpZigoYVtzPj4wXSYxKT09MCl7YVtzKzE+PjBdPTA7YVtzPj4wXT0wfWVsc2V7YVtjW3MrOD4+Ml0+PjBdPTA7Y1tzKzQ+PjJdPTB9aWcocyk7Y1tzKzA+PjJdPWNbUCswPj4yXTtjW3MrND4+Ml09Y1tQKzQ+PjJdO2Nbcys4Pj4yXT1jW1ArOD4+Ml07Y1tQKzA+PjJdPTA7Y1tQKzQ+PjJdPTA7Y1tQKzg+PjJdPTA7bWNbY1soY1tFPj4yXXwwKSsyOD4+Ml0mMTI3XShOLEUpO2lmKChhW3g+PjBdJjEpPT0wKXthW3grMT4+MF09MDthW3g+PjBdPTB9ZWxzZXthW2NbeCs4Pj4yXT4+MF09MDtjW3grND4+Ml09MH1pZyh4KTtjW3grMD4+Ml09Y1tOKzA+PjJdO2NbeCs0Pj4yXT1jW04rND4+Ml07Y1t4Kzg+PjJdPWNbTis4Pj4yXTtjW04rMD4+Ml09MDtjW04rND4+Ml09MDtjW04rOD4+Ml09MDtoPW9jW2NbKGNbRT4+Ml18MCkrMTI+PjJdJjEyN10oRSl8MDtHPW9jW2NbKGNbRT4+Ml18MCkrMTY+PjJdJjEyN10oRSl8MDttY1tjWyhjW0U+PjJdfDApKzIwPj4yXSYxMjddKEgsRSk7aWYoKGFbdD4+MF0mMSk9PTApe2FbdCsxPj4wXT0wO2FbdD4+MF09MH1lbHNle2FbY1t0Kzg+PjJdPj4wXT0wO2NbdCs0Pj4yXT0wfWlnKHQpO2NbdCswPj4yXT1jW0grMD4+Ml07Y1t0KzQ+PjJdPWNbSCs0Pj4yXTtjW3QrOD4+Ml09Y1tIKzg+PjJdO2NbSCswPj4yXT0wO2NbSCs0Pj4yXT0wO2NbSCs4Pj4yXT0wO21jW2NbKGNbRT4+Ml18MCkrMjQ+PjJdJjEyN10oSSxFKTtpZigoYVt5Pj4wXSYxKT09MCl7YVt5KzE+PjBdPTA7YVt5Pj4wXT0wfWVsc2V7YVtjW3krOD4+Ml0+PjBdPTA7Y1t5KzQ+PjJdPTB9aWcoeSk7Y1t5KzA+PjJdPWNbSSswPj4yXTtjW3krND4+Ml09Y1tJKzQ+PjJdO2NbeSs4Pj4yXT1jW0krOD4+Ml07Y1tJKzA+PjJdPTA7Y1tJKzQ+PjJdPTA7Y1tJKzg+PjJdPTA7Vj1vY1tjWyhjW0U+PjJdfDApKzM2Pj4yXSYxMjddKEUpfDA7YnJlYWt9ZWE9WGEoNCl8MDtjW2VhPj4yXT0yMTMwNDt3YihlYXwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2Nbbz4+Ml09Y1tuPj4yXTtKPW0rOHwwO0k9cysxfDA7TD1zKzR8MDttPXMrOHwwO0s9eCsxfDA7SD14KzR8MDtEPXgrOHwwO009KGomNTEyfDApIT0wO1M9eSsxfDA7aj15Kzh8MDtRPXkrNHwwO2c9dysxfDA7RT13Kzh8MDtPPXcrNHwwO049RiszfDA7Uj1uKzR8MDtQPXQrNHwwO1g9VCs0MDB8MDtZPVQ7Wj1UO1U9MDtUPTA7Vz0yMTM7YTp3aGlsZSgxKXtfPWNbZT4+Ml18MDtkb3tpZigoX3wwKSE9MCl7aWYoKGNbXysxMj4+Ml18MCk9PShjW18rMTY+PjJdfDApKXtpZigob2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwKT09LTEpe2NbZT4+Ml09MDtfPTA7YnJlYWt9ZWxzZXtfPWNbZT4+Ml18MDticmVha319fWVsc2V7Xz0wfX13aGlsZSgwKTtfPShffDApPT0wO2Rve2lmKChmfDApIT0wKXtpZigoY1tmKzEyPj4yXXwwKSE9KGNbZisxNj4+Ml18MCkpe2lmKF8pe2JyZWFrfWVsc2V7Qz0zNjM7YnJlYWsgYX19aWYoISgob2NbY1soY1tmPj4yXXwwKSszNj4+Ml0mMTI3XShmKXwwKT09LTEpKXtpZighXyl7Qz0zNjM7YnJlYWsgYX19ZWxzZXtDPTc0fX1lbHNle0M9NzR9fXdoaWxlKDApO2lmKChDfDApPT03NCl7Qz0wO2lmKF8pe2Y9MDtDPTM2MzticmVha31lbHNle2Y9MH19Yjpkb3tzd2l0Y2goYVtGK1U+PjBdfDApe2Nhc2UgMjp7aWYoISgoVHwwKSE9MHxVPj4+MDwyKSl7aWYoKFV8MCk9PTIpe189KGFbTj4+MF18MCkhPTB9ZWxzZXtfPTB9aWYoIShNfF8pKXtUPTA7YnJlYWsgYn19JD1hW3k+PjBdfDA7YWE9KCQmMSk9PTA7Xz1hYT9TOmNbaj4+Ml18MDtjOmRve2lmKChVfDApIT0wPyhkW0YrKFUrIC0xKT4+MF18MCk8MjowKXtiYT1fKyhhYT8oJCYyNTUpPj4+MTpjW1E+PjJdfDApfDA7Y2E9Xzt3aGlsZSgxKXtpZigoY2F8MCk9PShiYXwwKSl7YnJlYWt9YWE9YVtjYT4+MF18MDtpZighKGFhPDwyND4+MjQ+LTEpKXtiYT1jYTticmVha31pZigoYlsoY1tKPj4yXXwwKSsoYWE8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXtiYT1jYTticmVha31lbHNle2NhPWNhKzF8MH19YWE9YmEtX3wwO2NhPWFbdz4+MF18MDtkYT0oY2EmMSk9PTA7aWYoZGEpe2VhPShjYSYyNTUpPj4+MX1lbHNle2VhPWNbTz4+Ml18MH1pZighKGFhPj4+MD5lYT4+PjApKXtpZihkYSl7ZGE9KGNhJjI1NSk+Pj4xO2NhPWc7ZWE9ZGE7ZGE9dysoZGEtYWEpKzF8MH1lbHNle2ZhPWNbRT4+Ml18MDtkYT1jW08+PjJdfDA7Y2E9ZmE7ZWE9ZGE7ZGE9ZmErKGRhLWFhKXwwfWFhPWNhK2VhfDA7aWYoKGRhfDApPT0oYWF8MCkpe2FhPWY7Xz1iYTtiYT1mfWVsc2V7Y2E9Xzt3aGlsZSgxKXtpZigoYVtkYT4+MF18MCkhPShhW2NhPj4wXXwwKSl7YWE9ZjtiYT1mO2JyZWFrIGN9ZGE9ZGErMXwwO2lmKChkYXwwKT09KGFhfDApKXthYT1mO189YmE7YmE9ZjticmVha31lbHNle2NhPWNhKzF8MH19fX1lbHNle2FhPWY7YmE9Zn19ZWxzZXthYT1mO2JhPWZ9fXdoaWxlKDApO2Q6d2hpbGUoMSl7aWYoKCQmMSk9PTApe2NhPVM7JD0oJCYyNTUpPj4+MX1lbHNle2NhPWNbaj4+Ml18MDskPWNbUT4+Ml18MH1pZigoX3wwKT09KGNhKyR8MCkpe2JyZWFrfSQ9Y1tlPj4yXXwwO2Rve2lmKCgkfDApIT0wKXtpZigoY1skKzEyPj4yXXwwKT09KGNbJCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjWyQ+PjJdfDApKzM2Pj4yXSYxMjddKCQpfDApPT0tMSl7Y1tlPj4yXT0wOyQ9MDticmVha31lbHNleyQ9Y1tlPj4yXXwwO2JyZWFrfX19ZWxzZXskPTB9fXdoaWxlKDApOyQ9KCR8MCk9PTA7ZG97aWYoKGJhfDApIT0wKXtpZigoY1tiYSsxMj4+Ml18MCkhPShjW2JhKzE2Pj4yXXwwKSl7aWYoJCl7JD1hYTticmVha31lbHNle2JyZWFrIGR9fWlmKCEoKG9jW2NbKGNbYmE+PjJdfDApKzM2Pj4yXSYxMjddKGJhKXwwKT09LTEpKXtpZigkXihhYXwwKT09MCl7JD1hYTtiYT1hYX1lbHNle2JyZWFrIGR9fWVsc2V7YWE9MDtmPTA7Qz0yMzJ9fWVsc2V7Qz0yMzJ9fXdoaWxlKDApO2lmKChDfDApPT0yMzIpe0M9MDtpZigkKXticmVha31lbHNleyQ9YWE7YmE9MH19YWE9Y1tlPj4yXXwwO2NhPWNbYWErMTI+PjJdfDA7aWYoKGNhfDApPT0oY1thYSsxNj4+Ml18MCkpe2FhPW9jW2NbKGNbYWE+PjJdfDApKzM2Pj4yXSYxMjddKGFhKXwwfWVsc2V7YWE9ZFtjYT4+MF18MH1pZighKChhYSYyNTUpPDwyND4+MjQ9PShhW18+PjBdfDApKSl7YnJlYWt9ZGE9Y1tlPj4yXXwwO2NhPWRhKzEyfDA7YWE9Y1tjYT4+Ml18MDtpZigoYWF8MCk9PShjW2RhKzE2Pj4yXXwwKSl7b2NbY1soY1tkYT4+Ml18MCkrNDA+PjJdJjEyN10oZGEpfDB9ZWxzZXtjW2NhPj4yXT1hYSsxfWFhPSQ7JD1hW3k+PjBdfDA7Xz1fKzF8MH1pZihNKXthYT1hW3k+PjBdfDA7aWYoKGFhJjEpPT0wKXskPVM7YWE9KGFhJjI1NSk+Pj4xfWVsc2V7JD1jW2o+PjJdfDA7YWE9Y1tRPj4yXXwwfWlmKChffDApIT0oJCthYXwwKSl7Qz0yNDc7YnJlYWsgYX19YnJlYWt9O2Nhc2UgMDp7Qz05NzticmVha307Y2FzZSAzOntfPWFbeD4+MF18MDthYT0oXyYxKT09MDtpZihhYSl7ZGE9KF8mMjU1KT4+PjF9ZWxzZXtkYT1jW0g+PjJdfDB9JD1hW3M+PjBdfDA7YmE9KCQmMSk9PTA7aWYoYmEpe2NhPSgkJjI1NSk+Pj4xfWVsc2V7Y2E9Y1tMPj4yXXwwfWlmKChkYXwwKSE9KDAtY2F8MCkpe2lmKGFhKXtjYT0oXyYyNTUpPj4+MX1lbHNle2NhPWNbSD4+Ml18MH1pZigoY2F8MCkhPTApe2lmKGJhKXtiYT0oJCYyNTUpPj4+MX1lbHNle2JhPWNbTD4+Ml18MH1pZigoYmF8MCkhPTApe2FhPWNbZT4+Ml18MDtiYT1jW2FhKzEyPj4yXXwwO2NhPWNbYWErMTY+PjJdfDA7aWYoKGJhfDApPT0oY2F8MCkpeyQ9b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDA7Y2E9Y1tlPj4yXXwwO189YVt4Pj4wXXwwO2FhPWNhO2JhPWNbY2ErMTI+PjJdfDA7Y2E9Y1tjYSsxNj4+Ml18MH1lbHNleyQ9ZFtiYT4+MF18MH1kYT1hYSsxMnwwO2NhPShiYXwwKT09KGNhfDApO2lmKCgkJjI1NSk8PDI0Pj4yND09KGFbKChfJjEpPT0wP0s6Y1tEPj4yXXwwKT4+MF18MCkpe2lmKGNhKXtvY1tjWyhjW2FhPj4yXXwwKSs0MD4+Ml0mMTI3XShhYSl8MH1lbHNle2NbZGE+PjJdPWJhKzF9Xz1hW3g+PjBdfDA7aWYoKF8mMSk9PTApe189KF8mMjU1KT4+PjF9ZWxzZXtfPWNbSD4+Ml18MH1UPV8+Pj4wPjE/eDpUO2JyZWFrIGJ9aWYoY2Epe189b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDB9ZWxzZXtfPWRbYmE+PjBdfDB9aWYoISgoXyYyNTUpPDwyND4+MjQ9PShhWygoYVtzPj4wXSYxKT09MD9JOmNbbT4+Ml18MCk+PjBdfDApKSl7Qz0xOTY7YnJlYWsgYX1hYT1jW2U+PjJdfDA7Xz1hYSsxMnwwOyQ9Y1tfPj4yXXwwO2lmKCgkfDApPT0oY1thYSsxNj4+Ml18MCkpe29jW2NbKGNbYWE+PjJdfDApKzQwPj4yXSYxMjddKGFhKXwwfWVsc2V7Y1tfPj4yXT0kKzF9YVtsPj4wXT0xO189YVtzPj4wXXwwO2lmKChfJjEpPT0wKXtfPShfJjI1NSk+Pj4xfWVsc2V7Xz1jW0w+PjJdfDB9VD1fPj4+MD4xP3M6VDticmVhayBifX1pZihhYSl7YWE9KF8mMjU1KT4+PjF9ZWxzZXthYT1jW0g+PjJdfDB9YmE9Y1tlPj4yXXwwO2NhPWNbYmErMTI+PjJdfDA7ZGE9KGNhfDApPT0oY1tiYSsxNj4+Ml18MCk7aWYoKGFhfDApPT0wKXtpZihkYSl7Xz1vY1tjWyhjW2JhPj4yXXwwKSszNj4+Ml0mMTI3XShiYSl8MDskPWFbcz4+MF18MH1lbHNle189ZFtjYT4+MF18MH1pZighKChfJjI1NSk8PDI0Pj4yND09KGFbKCgkJjEpPT0wP0k6Y1ttPj4yXXwwKT4+MF18MCkpKXticmVhayBifWFhPWNbZT4+Ml18MDtfPWFhKzEyfDA7JD1jW18+PjJdfDA7aWYoKCR8MCk9PShjW2FhKzE2Pj4yXXwwKSl7b2NbY1soY1thYT4+Ml18MCkrNDA+PjJdJjEyN10oYWEpfDB9ZWxzZXtjW18+PjJdPSQrMX1hW2w+PjBdPTE7Xz1hW3M+PjBdfDA7aWYoKF8mMSk9PTApe189KF8mMjU1KT4+PjF9ZWxzZXtfPWNbTD4+Ml18MH1UPV8+Pj4wPjE/czpUO2JyZWFrIGJ9aWYoZGEpeyQ9b2NbY1soY1tiYT4+Ml18MCkrMzY+PjJdJjEyN10oYmEpfDA7Xz1hW3g+PjBdfDB9ZWxzZXskPWRbY2E+PjBdfDB9aWYoISgoJCYyNTUpPDwyND4+MjQ9PShhWygoXyYxKT09MD9LOmNbRD4+Ml18MCk+PjBdfDApKSl7YVtsPj4wXT0xO2JyZWFrIGJ9Xz1jW2U+PjJdfDA7JD1fKzEyfDA7YWE9Y1skPj4yXXwwO2lmKChhYXwwKT09KGNbXysxNj4+Ml18MCkpe29jW2NbKGNbXz4+Ml18MCkrNDA+PjJdJjEyN10oXyl8MH1lbHNle2NbJD4+Ml09YWErMX1fPWFbeD4+MF18MDtpZigoXyYxKT09MCl7Xz0oXyYyNTUpPj4+MX1lbHNle189Y1tIPj4yXXwwfVQ9Xz4+PjA+MT94OlR9YnJlYWt9O2Nhc2UgNDp7Xz0wO2U6d2hpbGUoMSl7JD1jW2U+PjJdfDA7ZG97aWYoKCR8MCkhPTApe2lmKChjWyQrMTI+PjJdfDApPT0oY1skKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbJD4+Ml18MCkrMzY+PjJdJjEyN10oJCl8MCk9PS0xKXtjW2U+PjJdPTA7JD0wO2JyZWFrfWVsc2V7JD1jW2U+PjJdfDA7YnJlYWt9fX1lbHNleyQ9MH19d2hpbGUoMCk7JD0oJHwwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZigkKXticmVha31lbHNle2JyZWFrIGV9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoISQpe2JyZWFrIGV9fWVsc2V7Qz0yNTl9fWVsc2V7Qz0yNTl9fXdoaWxlKDApO2lmKChDfDApPT0yNTkpe0M9MDtpZigkKXtmPTA7YnJlYWt9ZWxzZXtmPTB9fSQ9Y1tlPj4yXXwwO2FhPWNbJCsxMj4+Ml18MDtpZigoYWF8MCk9PShjWyQrMTY+PjJdfDApKXthYT1vY1tjWyhjWyQ+PjJdfDApKzM2Pj4yXSYxMjddKCQpfDB9ZWxzZXthYT1kW2FhPj4wXXwwfSQ9YWEmMjU1O2lmKCQ8PDI0Pj4yND4tMT8hKChiWyhjW0o+PjJdfDApKyhhYTw8MjQ+PjI0PDwxKT4+MV0mMjA0OCk9PTApOjApe2FhPWNbbz4+Ml18MDtpZigoYWF8MCk9PShwfDApKXtiYT0oY1tSPj4yXXwwKSE9MjEzO2NhPWNbbj4+Ml18MDthYT1wLWNhfDA7cD1hYT4+PjA8MjE0NzQ4MzY0Nz9hYTw8MTotMTtjYT13bihiYT9jYTowLHApfDA7aWYoKGNhfDApPT0wKXtDPTI2ODticmVhayBhfWlmKCFiYSl7YmE9Y1tuPj4yXXwwO2Nbbj4+Ml09Y2E7aWYoKGJhfDApIT0wKXtsY1tjW1I+PjJdJjI1NV0oYmEpO2NhPWNbbj4+Ml18MH19ZWxzZXtjW24+PjJdPWNhfWNbUj4+Ml09MjE0O2FhPWNhK2FhfDA7Y1tvPj4yXT1hYTtwPShjW24+PjJdfDApK3B8MH1jW28+PjJdPWFhKzE7YVthYT4+MF09JDtfPV8rMXwwfWVsc2V7YWE9YVt0Pj4wXXwwO2lmKChhYSYxKT09MCl7YWE9KGFhJjI1NSk+Pj4xfWVsc2V7YWE9Y1tQPj4yXXwwfWlmKCEoKCgoYWF8MCk9PTB8KF98MCk9PTApXjEpJiQ8PDI0Pj4yND09Rzw8MjQ+PjI0KSl7YnJlYWt9aWYoKFl8MCk9PShYfDApKXtZPVktWnwwO1g9WT4+PjA8MjE0NzQ4MzY0Nz9ZPDwxOi0xO2lmKChXfDApPT0yMTMpe1o9MH1XPXduKFosWCl8MDtpZigoV3wwKT09MCl7Qz0yODU7YnJlYWsgYX1aPVc7WD1XKyhYPj4+Mjw8Mil8MDtZPVcrKFk+PjI8PDIpfDA7Vz0yMTR9Y1tZPj4yXT1fO1k9WSs0fDA7Xz0wfSQ9Y1tlPj4yXXwwO2FhPSQrMTJ8MDtiYT1jW2FhPj4yXXwwO2lmKChiYXwwKT09KGNbJCsxNj4+Ml18MCkpe29jW2NbKGNbJD4+Ml18MCkrNDA+PjJdJjEyN10oJCl8MDtjb250aW51ZX1lbHNle2NbYWE+PjJdPWJhKzE7Y29udGludWV9fWlmKCEoKFp8MCk9PShZfDApfChffDApPT0wKSl7aWYoKFl8MCk9PShYfDApKXtZPVktWnwwO1g9WT4+PjA8MjE0NzQ4MzY0Nz9ZPDwxOi0xO2lmKChXfDApPT0yMTMpe1o9MH1XPXduKFosWCl8MDtpZigoV3wwKT09MCl7Qz0yOTc7YnJlYWsgYX1aPVc7WD1XKyhYPj4+Mjw8Mil8MDtZPVcrKFk+PjI8PDIpfDA7Vz0yMTR9Y1tZPj4yXT1fO1k9WSs0fDB9aWYoKFZ8MCk+MCl7Xz1jW2U+PjJdfDA7ZG97aWYoKF98MCkhPTApe2lmKChjW18rMTI+PjJdfDApPT0oY1tfKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbXz4+Ml18MCkrMzY+PjJdJjEyN10oXyl8MCk9PS0xKXtjW2U+PjJdPTA7Xz0wO2JyZWFrfWVsc2V7Xz1jW2U+PjJdfDA7YnJlYWt9fX1lbHNle189MH19d2hpbGUoMCk7Xz0oX3wwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZihfKXticmVha31lbHNle0M9MzE5O2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoIV8pe0M9MzE5O2JyZWFrIGF9fWVsc2V7Qz0zMTN9fWVsc2V7Qz0zMTN9fXdoaWxlKDApO2lmKChDfDApPT0zMTMpe0M9MDtpZihfKXtDPTMxOTticmVhayBhfWVsc2V7Zj0wfX1fPWNbZT4+Ml18MDskPWNbXysxMj4+Ml18MDtpZigoJHwwKT09KGNbXysxNj4+Ml18MCkpe189b2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwfWVsc2V7Xz1kWyQ+PjBdfDB9aWYoISgoXyYyNTUpPDwyND4+MjQ9PWg8PDI0Pj4yNCkpe0M9MzE5O2JyZWFrIGF9Xz1jW2U+PjJdfDA7JD1fKzEyfDA7YWE9Y1skPj4yXXwwO2lmKChhYXwwKT09KGNbXysxNj4+Ml18MCkpe29jW2NbKGNbXz4+Ml18MCkrNDA+PjJdJjEyN10oXyl8MDthYT1mOyQ9Zn1lbHNle2NbJD4+Ml09YWErMTthYT1mOyQ9Zn13aGlsZSgxKXtfPWNbZT4+Ml18MDtkb3tpZigoX3wwKSE9MCl7aWYoKGNbXysxMj4+Ml18MCk9PShjW18rMTY+PjJdfDApKXtpZigob2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwKT09LTEpe2NbZT4+Ml09MDtfPTA7YnJlYWt9ZWxzZXtfPWNbZT4+Ml18MDticmVha319fWVsc2V7Xz0wfX13aGlsZSgwKTtiYT0oX3wwKT09MDtkb3tpZigoJHwwKSE9MCl7aWYoKGNbJCsxMj4+Ml18MCkhPShjWyQrMTY+PjJdfDApKXtpZihiYSl7Xz1hYTticmVha31lbHNle0M9MzQxO2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbJD4+Ml18MCkrMzY+PjJdJjEyN10oJCl8MCk9PS0xKSl7aWYoYmFeKGFhfDApPT0wKXtfPWFhOyQ9YWF9ZWxzZXtDPTM0MTticmVhayBhfX1lbHNle189MDtmPTA7Qz0zMzR9fWVsc2V7Xz1hYTtDPTMzNH19d2hpbGUoMCk7aWYoKEN8MCk9PTMzNCl7Qz0wO2lmKGJhKXtDPTM0MTticmVhayBhfWVsc2V7JD0wfX1hYT1jW2U+PjJdfDA7YmE9Y1thYSsxMj4+Ml18MDtpZigoYmF8MCk9PShjW2FhKzE2Pj4yXXwwKSl7YWE9b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDB9ZWxzZXthYT1kW2JhPj4wXXwwfWlmKCEoKGFhJjI1NSk8PDI0Pj4yND4tMSkpe0M9MzQxO2JyZWFrIGF9aWYoKGJbKGNbSj4+Ml18MCkrKGFhPDwyND4+MjQ8PDEpPj4xXSYyMDQ4KT09MCl7Qz0zNDE7YnJlYWsgYX1hYT1jW28+PjJdfDA7aWYoKGFhfDApPT0ocHwwKSl7YmE9KGNbUj4+Ml18MCkhPTIxMztjYT1jW24+PjJdfDA7YWE9cC1jYXwwO3A9YWE+Pj4wPDIxNDc0ODM2NDc/YWE8PDE6LTE7Y2E9d24oYmE/Y2E6MCxwKXwwO2lmKChjYXwwKT09MCl7Qz0zNDQ7YnJlYWsgYX1kb3tpZihiYSl7Y1tuPj4yXT1jYX1lbHNle2JhPWNbbj4+Ml18MDtjW24+PjJdPWNhO2lmKChiYXwwKT09MCl7YnJlYWt9bGNbY1tSPj4yXSYyNTVdKGJhKTtjYT1jW24+PjJdfDB9fXdoaWxlKDApO2NbUj4+Ml09MjE0O2FhPWNhK2FhfDA7Y1tvPj4yXT1hYTtwPShjW24+PjJdfDApK3B8MH1jYT1jW2U+PjJdfDA7YmE9Y1tjYSsxMj4+Ml18MDtpZigoYmF8MCk9PShjW2NhKzE2Pj4yXXwwKSl7YmE9b2NbY1soY1tjYT4+Ml18MCkrMzY+PjJdJjEyN10oY2EpfDA7YWE9Y1tvPj4yXXwwfWVsc2V7YmE9ZFtiYT4+MF18MH1jW28+PjJdPWFhKzE7YVthYT4+MF09YmE7Vj1WKyAtMXwwO2NhPWNbZT4+Ml18MDthYT1jYSsxMnwwO2JhPWNbYWE+PjJdfDA7aWYoKGJhfDApPT0oY1tjYSsxNj4+Ml18MCkpe29jW2NbKGNbY2E+PjJdfDApKzQwPj4yXSYxMjddKGNhKXwwfWVsc2V7Y1thYT4+Ml09YmErMX1pZigoVnwwKT4wKXthYT1ffWVsc2V7YnJlYWt9fX1pZigoY1tvPj4yXXwwKT09KGNbbj4+Ml18MCkpe0M9MzYxO2JyZWFrIGF9YnJlYWt9O2Nhc2UgMTp7aWYoKFV8MCk9PTMpe0M9MzYzO2JyZWFrIGF9Qz1jW2U+PjJdfDA7Xz1jW0MrMTI+PjJdfDA7aWYoKF98MCk9PShjW0MrMTY+PjJdfDApKXtDPW9jW2NbKGNbQz4+Ml18MCkrMzY+PjJdJjEyN10oQyl8MH1lbHNle0M9ZFtfPj4wXXwwfWlmKCEoKEMmMjU1KTw8MjQ+PjI0Pi0xKSl7Qz05NjticmVhayBhfWlmKChiWyhjW0o+PjJdfDApKyhDPDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7Qz05NjticmVhayBhfUM9Y1tlPj4yXXwwOyQ9QysxMnwwO189Y1skPj4yXXwwO2lmKChffDApPT0oY1tDKzE2Pj4yXXwwKSl7Qz1vY1tjWyhjW0M+PjJdfDApKzQwPj4yXSYxMjddKEMpfDB9ZWxzZXtjWyQ+PjJdPV8rMTtDPWRbXz4+MF18MH1fPUMmMjU1OyQ9YVt3Pj4wXXwwO0M9KCQmMSkhPTA7aWYoQyl7YWE9KGNbdz4+Ml0mLTIpKyAtMXwwOyQ9Y1tPPj4yXXwwfWVsc2V7YWE9MTA7JD0oJCYyNTUpPj4+MX1pZigoJHwwKT09KGFhfDApKXtsZyh3LGFhLDEsYWEsYWEsMCk7aWYoKGFbdz4+MF0mMSk9PTApe0M9OTN9ZWxzZXtDPTk0fX1lbHNle2lmKEMpe0M9OTR9ZWxzZXtDPTkzfX1pZigoQ3wwKT09OTMpe2Fbdz4+MF09KCQ8PDEpKzI7YmE9ZzthYT0kKzF8MH1lbHNlIGlmKChDfDApPT05NCl7YmE9Y1tFPj4yXXwwO2FhPSQrMXwwO2NbTz4+Ml09YWF9YVtiYSskPj4wXT1fO2FbYmErYWE+PjBdPTA7Qz05NzticmVha307ZGVmYXVsdDp7fX19d2hpbGUoMCk7Zjpkb3tpZigoQ3wwKT09OTcpe0M9MDtpZigoVXwwKT09Myl7Qz0zNjM7YnJlYWsgYX1lbHNle2FhPWY7JD1mfXdoaWxlKDEpe189Y1tlPj4yXXwwO2Rve2lmKChffDApIT0wKXtpZigoY1tfKzEyPj4yXXwwKT09KGNbXysxNj4+Ml18MCkpe2lmKChvY1tjWyhjW18+PjJdfDApKzM2Pj4yXSYxMjddKF8pfDApPT0tMSl7Y1tlPj4yXT0wO189MDticmVha31lbHNle189Y1tlPj4yXXwwO2JyZWFrfX19ZWxzZXtfPTB9fXdoaWxlKDApO2JhPShffDApPT0wO2Rve2lmKCgkfDApIT0wKXtpZigoY1skKzEyPj4yXXwwKSE9KGNbJCsxNj4+Ml18MCkpe2lmKGJhKXtfPWFhO2JyZWFrfWVsc2V7YnJlYWsgZn19aWYoISgob2NbY1soY1skPj4yXXwwKSszNj4+Ml0mMTI3XSgkKXwwKT09LTEpKXtpZihiYV4oYWF8MCk9PTApe189YWE7JD1hYX1lbHNle2JyZWFrIGZ9fWVsc2V7Xz0wO2Y9MDtDPTEwOX19ZWxzZXtfPWFhO0M9MTA5fX13aGlsZSgwKTtpZigoQ3wwKT09MTA5KXtDPTA7aWYoYmEpe2JyZWFrIGZ9ZWxzZXskPTB9fWJhPWNbZT4+Ml18MDthYT1jW2JhKzEyPj4yXXwwO2lmKChhYXwwKT09KGNbYmErMTY+PjJdfDApKXthYT1vY1tjWyhjW2JhPj4yXXwwKSszNj4+Ml0mMTI3XShiYSl8MH1lbHNle2FhPWRbYWE+PjBdfDB9aWYoISgoYWEmMjU1KTw8MjQ+PjI0Pi0xKSl7YnJlYWsgZn1pZigoYlsoY1tKPj4yXXwwKSsoYWE8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXticmVhayBmfWJhPWNbZT4+Ml18MDtDPWJhKzEyfDA7YWE9Y1tDPj4yXXwwO2lmKChhYXwwKT09KGNbYmErMTY+PjJdfDApKXtDPW9jW2NbKGNbYmE+PjJdfDApKzQwPj4yXSYxMjddKGJhKXwwfWVsc2V7Y1tDPj4yXT1hYSsxO0M9ZFthYT4+MF18MH1hYT1DJjI1NTtiYT1hW3c+PjBdfDA7Y2E9KGJhJjEpIT0wO2lmKGNhKXtDPShjW3c+PjJdJi0yKSsgLTF8MDtiYT1jW08+PjJdfDB9ZWxzZXtDPTEwO2JhPShiYSYyNTUpPj4+MX1pZigoYmF8MCk9PShDfDApKXtsZyh3LEMsMSxDLEMsMCk7aWYoKGFbdz4+MF0mMSk9PTApe0M9MTI2fWVsc2V7Qz0xMjd9fWVsc2V7aWYoY2Epe0M9MTI3fWVsc2V7Qz0xMjZ9fWlmKChDfDApPT0xMjYpe0M9MDthW3c+PjBdPShiYTw8MSkrMjtjYT1nO2RhPWJhKzF8MH1lbHNlIGlmKChDfDApPT0xMjcpe0M9MDtjYT1jW0U+PjJdfDA7ZGE9YmErMXwwO2NbTz4+Ml09ZGF9YVtjYStiYT4+MF09YWE7YVtjYStkYT4+MF09MDthYT1ffX19d2hpbGUoMCk7VT1VKzF8MDtpZighKFU+Pj4wPDQpKXtDPTM2MzticmVha319Zzpzd2l0Y2goQ3wwKXtjYXNlIDk2OntjW2s+PjJdPWNbaz4+Ml18NDtlPTA7WT1aO2JyZWFrfTtjYXNlIDE5Njp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAyNDc6e2Nbaz4+Ml09Y1trPj4yXXw0O2U9MDtZPVo7YnJlYWt9O2Nhc2UgMjY4OntmYT1YYSg0KXwwO2NbZmE+PjJdPTIyNjgwO3diKGZhfDAsMjI3MjgsMjA2KX07Y2FzZSAyODU6e2ZhPVhhKDQpfDA7Y1tmYT4+Ml09MjI2ODA7d2IoZmF8MCwyMjcyOCwyMDYpfTtjYXNlIDI5Nzp7ZmE9WGEoNCl8MDtjW2ZhPj4yXT0yMjY4MDt3YihmYXwwLDIyNzI4LDIwNil9O2Nhc2UgMzE5OntjW2s+PjJdPWNbaz4+Ml18NDtlPTA7WT1aO2JyZWFrfTtjYXNlIDM0MTp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAzNDQ6e2ZhPVhhKDQpfDA7Y1tmYT4+Ml09MjI2ODA7d2IoZmF8MCwyMjcyOCwyMDYpfTtjYXNlIDM2MTp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAzNjM6e2g6ZG97aWYoKFR8MCkhPTApe0Y9VCsxfDA7bj1UKzh8MDtsPVQrNHwwO289MTtpOndoaWxlKDEpe2g9YVtUPj4wXXwwO2lmKChoJjEpPT0wKXtoPShoJjI1NSk+Pj4xfWVsc2V7aD1jW2w+PjJdfDB9aWYoIShvPj4+MDxoPj4+MCkpe2JyZWFrIGh9aD1jW2U+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKChjW2grMTI+PjJdfDApPT0oY1toKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xKXtjW2U+PjJdPTA7aD0wO2JyZWFrfWVsc2V7aD1jW2U+PjJdfDA7YnJlYWt9fX1lbHNle2g9MH19d2hpbGUoMCk7aD0oaHwwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZihoKXticmVha31lbHNle2JyZWFrIGl9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoIWgpe2JyZWFrIGl9fWVsc2V7Qz0zODB9fWVsc2V7Qz0zODB9fXdoaWxlKDApO2lmKChDfDApPT0zODApe0M9MDtpZihoKXticmVha31lbHNle2Y9MH19aD1jW2U+PjJdfDA7Rz1jW2grMTI+PjJdfDA7aWYoKEd8MCk9PShjW2grMTY+PjJdfDApKXtoPW9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MH1lbHNle2g9ZFtHPj4wXXwwfWlmKChhW1Q+PjBdJjEpPT0wKXtHPUZ9ZWxzZXtHPWNbbj4+Ml18MH1pZighKChoJjI1NSk8PDI0Pj4yND09KGFbRytvPj4wXXwwKSkpe2JyZWFrfW89bysxfDA7aD1jW2U+PjJdfDA7Rz1oKzEyfDA7SD1jW0c+PjJdfDA7aWYoKEh8MCk9PShjW2grMTY+PjJdfDApKXtvY1tjWyhjW2g+PjJdfDApKzQwPj4yXSYxMjddKGgpfDA7Y29udGludWV9ZWxzZXtjW0c+PjJdPUgrMTtjb250aW51ZX19Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVhayBnfX13aGlsZSgwKTtpZigoWnwwKSE9KFl8MCkpe2NbQj4+Ml09MDtxayh0LFosWSxCKTtpZigoY1tCPj4yXXwwKT09MCl7ZT0xO1k9Wn1lbHNle2Nbaz4+Ml09Y1trPj4yXXw0O2U9MDtZPVp9fWVsc2V7ZT0xfWJyZWFrfX1pZighKChhW3c+PjBdJjEpPT0wKT8odj1jW0U+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbcz4+MF0mMSk9PTApPyh6PWNbbT4+Ml18MCwoenwwKSE9MCk6MCl7dm4oeil9aWYoISgoYVt4Pj4wXSYxKT09MCk/KEE9Y1tEPj4yXXwwLChBfDApIT0wKTowKXt2bihBKX1pZighKChhW3k+PjBdJjEpPT0wKT8ocj1jW2o+PjJdfDAsKHJ8MCkhPTApOjApe3ZuKHIpfWlmKCEoKGFbdD4+MF0mMSk9PTApPyhxPWNbdCs4Pj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1pZigoWXwwKT09MCl7aT11O3JldHVybiBlfDB9bGNbVyYyNTVdKFkpO2k9dTtyZXR1cm4gZXwwfWZ1bmN0aW9uIG9rKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2Q9WGEoOCl8MDtjW2Q+PjJdPTk5Mjg7Yj1KbihhfDApfDA7ZT1iKzEzfDA7ZT0oZXwwKT09MD8xOmU7d2hpbGUoMSl7Zz11bihlKXwwO2lmKChnfDApIT0wKXtmPTc7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2JyZWFrfXNjW2cmMzFdKCl9aWYoKGZ8MCk9PTcpe2NbZys0Pj4yXT1iO2NbZz4+Ml09YjtmPWcrMTJ8MDtjW2QrND4+Ml09ZjtjW2crOD4+Ml09MDtMbihmfDAsYXwwLGIrMXwwKXwwO3diKGR8MCwxMDA2NCwxMDYpfWc9WGEoNCl8MDtjW2c+PjJdPTIyNjgwO3diKGd8MCwyMjcyOCwyMDYpfWZ1bmN0aW9uIHBrKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDttPWk7aT1pKzEyOHwwO3A9bTtzPW0rMjh8MDtkPW0rMTZ8MDtxPW0rMTJ8MDt0PW0rMjR8MDtjW2Q+PjJdPXM7bD1kKzR8MDtjW2w+PjJdPTIxMztzPXMrMTAwfDA7bj1jW2grMjg+PjJdfDA7dT1uKzR8MDtjW3U+PjJdPShjW3U+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3A+PjJdPTEzNDU2O2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM0NTYscCl9cD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dT1jW24rOD4+Ml18MDtpZigoY1tuKzEyPj4yXXwwKS11Pj4yPj4+MD5wPj4+MD8ocj1jW3UrKHA8PDIpPj4yXXwwLChyfDApIT0wKTowKXthW3Q+PjBdPTA7cD1jW2Y+PjJdfDA7ZG97aWYobmsoZSxwLGcsbixjW2grND4+Ml18MCxqLHQscixkLHEscyl8MCl7aWYoKGFbaz4+MF0mMSk9PTApe2FbaysxPj4wXT0wO2Fbaz4+MF09MH1lbHNle2FbY1trKzg+PjJdPj4wXT0wO2Nbays0Pj4yXT0wfWlmKChhW3Q+PjBdfDApIT0wKXtnPXhjW2NbKGNbcj4+Ml18MCkrMjg+PjJdJjYzXShyLDQ1KXwwO2g9YVtrPj4wXXwwO289KGgmMSkhPTA7aWYobyl7cz0oY1trPj4yXSYtMikrIC0xfDA7aD1jW2srND4+Ml18MH1lbHNle3M9MTA7aD0oaCYyNTUpPj4+MX1pZigoaHwwKT09KHN8MCkpe2xnKGsscywxLHMscywwKTtpZigoYVtrPj4wXSYxKT09MCl7bz0yMX1lbHNle289MjJ9fWVsc2V7aWYobyl7bz0yMn1lbHNle289MjF9fWlmKChvfDApPT0yMSl7YVtrPj4wXT0oaDw8MSkrMjtzPWsrMXwwO3Q9aCsxfDB9ZWxzZSBpZigob3wwKT09MjIpe3M9Y1trKzg+PjJdfDA7dD1oKzF8MDtjW2srND4+Ml09dH1hW3MraD4+MF09ZzthW3MrdD4+MF09MH1yPXhjW2NbKGNbcj4+Ml18MCkrMjg+PjJdJjYzXShyLDQ4KXwwO2g9Y1tkPj4yXXwwO3E9Y1txPj4yXXwwO2c9cSsgLTF8MDthOmRve2lmKGg+Pj4wPGc+Pj4wKXt3aGlsZSgxKXtzPWgrMXwwO2lmKCEoKGFbaD4+MF18MCk9PXI8PDI0Pj4yNCkpe2JyZWFrIGF9aWYocz4+PjA8Zz4+PjApe2g9c31lbHNle2g9czticmVha319fX13aGlsZSgwKTtzPWg7cj1hW2s+PjBdfDA7aWYoKHImMSk9PTApe3Q9cjt1PTEwO3I9KHImMjU1KT4+PjF9ZWxzZXt1PWNbaz4+Ml18MDt0PXUmMjU1O3U9KHUmLTIpKyAtMXwwO3I9Y1trKzQ+PjJdfDB9Zz1xLXN8MDtpZigocXwwKSE9KGh8MCkpe2lmKCh1LXJ8MCk+Pj4wPGc+Pj4wKXtsZyhrLHUscitnLXV8MCxyLHIsMCk7dD1hW2s+PjBdfDB9aWYoKHQmMSk9PTApe3Q9aysxfDB9ZWxzZXt0PWNbays4Pj4yXXwwfXM9cSsoci1zKXwwO3U9dCtyfDA7d2hpbGUoMSl7YVt1Pj4wXT1hW2g+PjBdfDA7aD1oKzF8MDtpZigoaHwwKT09KHF8MCkpe2JyZWFrfXU9dSsxfDB9YVt0K3M+PjBdPTA7cT1yK2d8MDtpZigoYVtrPj4wXSYxKT09MCl7YVtrPj4wXT1xPDwxO2JyZWFrfWVsc2V7Y1trKzQ+PjJdPXE7YnJlYWt9fX19d2hpbGUoMCk7az1jW2U+PjJdfDA7aWYoKGt8MCkhPTApe2lmKChjW2srMTI+PjJdfDApPT0oY1trKzE2Pj4yXXwwKT8ob2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwKT09LTE6MCl7Y1tlPj4yXT0wO2s9MH19ZWxzZXtrPTB9ZT0oa3wwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCkhPShjW3ArMTY+PjJdfDApKXtpZihlKXticmVha31lbHNle289NTc7YnJlYWt9fWlmKCEoKG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xKSl7aWYoZSl7YnJlYWt9ZWxzZXtvPTU3O2JyZWFrfX1lbHNle2NbZj4+Ml09MDtvPTU1O2JyZWFrfX1lbHNle289NTV9fXdoaWxlKDApO2lmKChvfDApPT01NT9lOjApe289NTd9aWYoKG98MCk9PTU3KXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWs7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApPT0wKXtsY1tjWyhjW24+PjJdfDApKzg+PjJdJjI1NV0obil9aj1jW2Q+PjJdfDA7Y1tkPj4yXT0wO2lmKChqfDApPT0wKXtpPW07cmV0dXJufWxjW2NbbD4+Ml0mMjU1XShqKTtpPW07cmV0dXJufXU9WGEoNCl8MDtjW3U+PjJdPTIxMzA0O3diKHV8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHFrKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTA7Zz1pO2s9YVtiPj4wXXwwO2lmKChrJjEpPT0wKXtqPShrJjI1NSk+Pj4xfWVsc2V7aj1jW2IrND4+Ml18MH1pZigoanwwKT09MCl7aT1nO3JldHVybn1pZigoZHwwKSE9KGV8MCk/KGg9ZSsgLTR8MCxoPj4+MD5kPj4+MCk6MCl7aj1kO2Rve2s9Y1tqPj4yXXwwO2Nbaj4+Ml09Y1toPj4yXTtjW2g+PjJdPWs7aj1qKzR8MDtoPWgrIC00fDB9d2hpbGUoaj4+PjA8aD4+PjApO2s9YVtiPj4wXXwwfWlmKChrJjEpPT0wKXtoPWIrMXwwO2I9KGsmMjU1KT4+PjF9ZWxzZXtoPWNbYis4Pj4yXXwwO2I9Y1tiKzQ+PjJdfDB9ZT1lKyAtNHwwO2s9YVtoPj4wXXwwO2o9azw8MjQ+PjI0PDF8azw8MjQ+PjI0PT0xMjc7YTpkb3tpZihlPj4+MD5kPj4+MCl7Yj1oK2J8MDt3aGlsZSgxKXtpZighaj8oazw8MjQ+PjI0fDApIT0oY1tkPj4yXXwwKTowKXticmVha31oPShiLWh8MCk+MT9oKzF8MDpoO2Q9ZCs0fDA7az1hW2g+PjBdfDA7aj1rPDwyND4+MjQ8MXxrPDwyND4+MjQ9PTEyNztpZighKGQ+Pj4wPGU+Pj4wKSl7YnJlYWsgYX19Y1tmPj4yXT00O2k9ZztyZXR1cm59fXdoaWxlKDApO2lmKGope2k9ZztyZXR1cm59aj1jW2U+PjJdfDA7aWYoIShrPDwyND4+MjQ+Pj4wPGo+Pj4wfChqfDApPT0wKSl7aT1nO3JldHVybn1jW2Y+PjJdPTQ7aT1nO3JldHVybn1mdW5jdGlvbiByayhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBzayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gdGsoYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO249aTtpPWkrNTc2fDA7cT1uO3Y9bisyNHwwO2Q9bisxNnwwO3I9bis0NjR8MDt1PW4rNTY4fDA7cz1uKzQyNHwwO3A9bis0Njh8MDtjW2Q+PjJdPXY7bT1kKzR8MDtjW20+PjJdPTIxMzt2PXYrNDAwfDA7bz1jW2grMjg+PjJdfDA7eD1vKzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW3E+PjJdPTEzNDQ4O2NbcSs0Pj4yXT0yMDg7Y1txKzg+PjJdPTA7Y2coMTM0NDgscSl9eD0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dz1jW28rOD4+Ml18MDtpZigoY1tvKzEyPj4yXXwwKS13Pj4yPj4+MD54Pj4+MD8odD1jW3crKHg8PDIpPj4yXXwwLCh0fDApIT0wKTowKXthW3U+PjBdPTA7ZG97aWYodWsoZSxjW2Y+PjJdfDAsZyxvLGNbaCs0Pj4yXXwwLGosdSx0LGQscix2KXwwKXt1Y1tjWyhjW3Q+PjJdfDApKzQ4Pj4yXSYzMV0odCwxMzE2OCwxMzE3OHwwLHMpfDA7aD1jW3I+PjJdfDA7Zz1jW2Q+PjJdfDA7dD1oLWd8MDtpZigodHwwKT4zOTIpe3Y9dW4oKHQ+PjIpKzJ8MCl8MDtpZigodnwwKT09MCl7eD1YYSg0KXwwO2NbeD4+Ml09MjI2ODA7d2IoeHwwLDIyNzI4LDIwNil9ZWxzZXt0PXZ9fWVsc2V7dD0wO3Y9cH1pZigoYVt1Pj4wXXwwKSE9MCl7YVt2Pj4wXT00NTt2PXYrMXwwfWlmKGc+Pj4wPGg+Pj4wKXtoPXMrNDB8MDt1PXM7ZG97eD1jW2c+PjJdfDA7dz1zO3doaWxlKDEpe2lmKChjW3c+PjJdfDApPT0oeHwwKSl7YnJlYWt9dz13KzR8MDtpZigod3wwKT09KGh8MCkpe3c9aDticmVha319YVt2Pj4wXT1hWzEzMTY4Kyh3LXU+PjIpPj4wXXwwO2c9Zys0fDA7dj12KzF8MH13aGlsZShnPj4+MDwoY1tyPj4yXXwwKT4+PjApfWFbdj4+MF09MDtjW3E+PjJdPWs7aWYoKEZhKHB8MCwxMzEwNCxxfDApfDApPT0xKXtpZigodHwwKT09MCl7YnJlYWt9dm4odCk7YnJlYWt9aj1YYSg4KXwwO2Nbaj4+Ml09OTkyODt3aGlsZSgxKXtkPXVuKDI4KXwwO2lmKChkfDApIT0wKXtsPTI5O2JyZWFrfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXtsPTI3O2JyZWFrfXNjW2wmMzFdKCl9aWYoKGx8MCk9PTI3KXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNlIGlmKChsfDApPT0yOSl7Y1tkKzQ+PjJdPTE1O2NbZD4+Ml09MTU7Yj1kKzEyfDA7Y1tqKzQ+PjJdPWI7Y1tkKzg+PjJdPTA7Yj1iKzB8MDtkPTEzMTEyfDA7bD1iKzE2fDA7ZG97YVtiPj4wXT1hW2Q+PjBdfDA7Yj1iKzF8MDtkPWQrMXwwfXdoaWxlKChifDApPChsfDApKTt3YihqfDAsMTAwNjQsMTA2KX19fXdoaWxlKDApO2s9Y1tlPj4yXXwwO2lmKChrfDApIT0wKXtwPWNbaysxMj4+Ml18MDtpZigocHwwKT09KGNbaysxNj4+Ml18MCkpe3A9b2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwfWVsc2V7cD1jW3A+PjJdfDB9aWYoKHB8MCk9PS0xKXtjW2U+PjJdPTA7ZT0wO2s9MX1lbHNle2U9aztrPTB9fWVsc2V7ZT0wO2s9MX1xPWNbZj4+Ml18MDtkb3tpZigocXwwKSE9MCl7cD1jW3ErMTI+PjJdfDA7aWYoKHB8MCk9PShjW3ErMTY+PjJdfDApKXtwPW9jW2NbKGNbcT4+Ml18MCkrMzY+PjJdJjEyN10ocSl8MH1lbHNle3A9Y1twPj4yXXwwfWlmKCEoKHB8MCk9PS0xKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTQ3O2JyZWFrfX1lbHNle2NbZj4+Ml09MDtsPTQ1O2JyZWFrfX1lbHNle2w9NDV9fXdoaWxlKDApO2lmKChsfDApPT00NT9rOjApe2w9NDd9aWYoKGx8MCk9PTQ3KXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWU7dz1vKzR8MDt4PWNbdz4+Ml18MDtjW3c+PjJdPXgrIC0xO2lmKCh4fDApPT0wKXtsY1tjWyhjW28+PjJdfDApKzg+PjJdJjI1NV0obyl9bD1jW2Q+PjJdfDA7Y1tkPj4yXT0wO2lmKChsfDApPT0wKXtpPW47cmV0dXJufWxjW2NbbT4+Ml0mMjU1XShsKTtpPW47cmV0dXJufXg9WGEoNCl8MDtjW3g+PjJdPTIxMzA0O3diKHh8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHVrKGIsZSxmLGcsaCxqLGssbCxtLG4sbyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7dmFyIHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTA7dj1pO2k9aSs1OTJ8MDtRPXY7Tz12KzExMnwwO0s9disxMnwwO0c9disxMDB8MDtIPXYrNDB8MDtFPXYrMjR8MDtOPXYrMzZ8MDtNPXYrODh8MDtMPXYrNzZ8MDtKPXYrNTJ8MDtJPXYrNjR8MDtQPXYrMTIwfDA7Rj12KzUyMHwwO3Q9dis1MjR8MDt3PXYrNTM2fDA7eD12KzU0OHwwO3I9dis1NjB8MDtzPXYrNTcyfDA7QT12KzU4NHwwO2NbRj4+Ml09MDtjW3QrMD4+Ml09MDtjW3QrND4+Ml09MDtjW3QrOD4+Ml09MDtjW3crMD4+Ml09MDtjW3crND4+Ml09MDtjW3crOD4+Ml09MDtjW3grMD4+Ml09MDtjW3grND4+Ml09MDtjW3grOD4+Ml09MDtjW3IrMD4+Ml09MDtjW3IrND4+Ml09MDtjW3IrOD4+Ml09MDtjW3MrMD4+Ml09MDtjW3MrND4+Ml09MDtjW3MrOD4+Ml09MDtkb3tpZihmKXtpZighKChjWzMyNjBdfDApPT0tMSkpe2NbUT4+Ml09MTMwNDA7Y1tRKzQ+PjJdPTIwODtjW1ErOD4+Ml09MDtjZygxMzA0MCxRKX1DPShjWzEzMDQ0Pj4yXXwwKSsgLTF8MDtJPWNbZys4Pj4yXXwwO2lmKChjW2crMTI+PjJdfDApLUk+PjI+Pj4wPkM+Pj4wPyhEPWNbSSsoQzw8Mik+PjJdfDAsKER8MCkhPTApOjApe21jW2NbKGNbRD4+Ml18MCkrNDQ+PjJdJjEyN10oTyxEKTtjW0Y+PjJdPWNbTz4+Ml07bWNbY1soY1tEPj4yXXwwKSszMj4+Ml0mMTI3XShLLEQpO2lmKChhW3I+PjBdJjEpPT0wKXtjW3IrND4+Ml09MDthW3I+PjBdPTB9ZWxzZXtjW2Nbcis4Pj4yXT4+Ml09MDtjW3IrND4+Ml09MH1vZyhyKTtjW3IrMD4+Ml09Y1tLKzA+PjJdO2Nbcis0Pj4yXT1jW0srND4+Ml07Y1tyKzg+PjJdPWNbSys4Pj4yXTtjW0srMD4+Ml09MDtjW0srND4+Ml09MDtjW0srOD4+Ml09MDttY1tjWyhjW0Q+PjJdfDApKzI4Pj4yXSYxMjddKEcsRCk7aWYoKGFbeD4+MF0mMSk9PTApe2NbeCs0Pj4yXT0wO2FbeD4+MF09MH1lbHNle2NbY1t4Kzg+PjJdPj4yXT0wO2NbeCs0Pj4yXT0wfW9nKHgpO2NbeCswPj4yXT1jW0crMD4+Ml07Y1t4KzQ+PjJdPWNbRys0Pj4yXTtjW3grOD4+Ml09Y1tHKzg+PjJdO2NbRyswPj4yXT0wO2NbRys0Pj4yXT0wO2NbRys4Pj4yXT0wO2c9b2NbY1soY1tEPj4yXXwwKSsxMj4+Ml0mMTI3XShEKXwwO0c9b2NbY1soY1tEPj4yXXwwKSsxNj4+Ml0mMTI3XShEKXwwO21jW2NbKGNbRD4+Ml18MCkrMjA+PjJdJjEyN10oSCxEKTtpZigoYVt0Pj4wXSYxKT09MCl7YVt0KzE+PjBdPTA7YVt0Pj4wXT0wfWVsc2V7YVtjW3QrOD4+Ml0+PjBdPTA7Y1t0KzQ+PjJdPTB9aWcodCk7Y1t0KzA+PjJdPWNbSCswPj4yXTtjW3QrND4+Ml09Y1tIKzQ+PjJdO2NbdCs4Pj4yXT1jW0grOD4+Ml07Y1tIKzA+PjJdPTA7Y1tIKzQ+PjJdPTA7Y1tIKzg+PjJdPTA7bWNbY1soY1tEPj4yXXwwKSsyND4+Ml0mMTI3XShFLEQpO2lmKChhW3c+PjBdJjEpPT0wKXtjW3crND4+Ml09MDthW3c+PjBdPTB9ZWxzZXtjW2Nbdys4Pj4yXT4+Ml09MDtjW3crND4+Ml09MH1vZyh3KTtjW3crMD4+Ml09Y1tFKzA+PjJdO2Nbdys0Pj4yXT1jW0UrND4+Ml07Y1t3Kzg+PjJdPWNbRSs4Pj4yXTtjW0UrMD4+Ml09MDtjW0UrND4+Ml09MDtjW0UrOD4+Ml09MDtmPW9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MDticmVha30kPVhhKDQpfDA7Y1skPj4yXT0yMTMwNDt3YigkfDAsMjEzNzYsMTk2KX1lbHNle2lmKCEoKGNbMzI0NF18MCk9PS0xKSl7Y1tRPj4yXT0xMjk3NjtjW1ErND4+Ml09MjA4O2NbUSs4Pj4yXT0wO2NnKDEyOTc2LFEpfUQ9KGNbMTI5ODA+PjJdfDApKyAtMXwwO0U9Y1tnKzg+PjJdfDA7aWYoKGNbZysxMj4+Ml18MCktRT4+Mj4+PjA+RD4+PjA/KEM9Y1tFKyhEPDwyKT4+Ml18MCwoQ3wwKSE9MCk6MCl7bWNbY1soY1tDPj4yXXwwKSs0ND4+Ml0mMTI3XShOLEMpO2NbRj4+Ml09Y1tOPj4yXTttY1tjWyhjW0M+PjJdfDApKzMyPj4yXSYxMjddKE0sQyk7aWYoKGFbcj4+MF0mMSk9PTApe2Nbcis0Pj4yXT0wO2Fbcj4+MF09MH1lbHNle2NbY1tyKzg+PjJdPj4yXT0wO2Nbcis0Pj4yXT0wfW9nKHIpO2NbciswPj4yXT1jW00rMD4+Ml07Y1tyKzQ+PjJdPWNbTSs0Pj4yXTtjW3IrOD4+Ml09Y1tNKzg+PjJdO2NbTSswPj4yXT0wO2NbTSs0Pj4yXT0wO2NbTSs4Pj4yXT0wO21jW2NbKGNbQz4+Ml18MCkrMjg+PjJdJjEyN10oTCxDKTtpZigoYVt4Pj4wXSYxKT09MCl7Y1t4KzQ+PjJdPTA7YVt4Pj4wXT0wfWVsc2V7Y1tjW3grOD4+Ml0+PjJdPTA7Y1t4KzQ+PjJdPTB9b2coeCk7Y1t4KzA+PjJdPWNbTCswPj4yXTtjW3grND4+Ml09Y1tMKzQ+PjJdO2NbeCs4Pj4yXT1jW0wrOD4+Ml07Y1tMKzA+PjJdPTA7Y1tMKzQ+PjJdPTA7Y1tMKzg+PjJdPTA7Zz1vY1tjWyhjW0M+PjJdfDApKzEyPj4yXSYxMjddKEMpfDA7Rz1vY1tjWyhjW0M+PjJdfDApKzE2Pj4yXSYxMjddKEMpfDA7bWNbY1soY1tDPj4yXXwwKSsyMD4+Ml0mMTI3XShKLEMpO2lmKChhW3Q+PjBdJjEpPT0wKXthW3QrMT4+MF09MDthW3Q+PjBdPTB9ZWxzZXthW2NbdCs4Pj4yXT4+MF09MDtjW3QrND4+Ml09MH1pZyh0KTtjW3QrMD4+Ml09Y1tKKzA+PjJdO2NbdCs0Pj4yXT1jW0orND4+Ml07Y1t0Kzg+PjJdPWNbSis4Pj4yXTtjW0orMD4+Ml09MDtjW0orND4+Ml09MDtjW0orOD4+Ml09MDttY1tjWyhjW0M+PjJdfDApKzI0Pj4yXSYxMjddKEksQyk7aWYoKGFbdz4+MF0mMSk9PTApe2Nbdys0Pj4yXT0wO2Fbdz4+MF09MH1lbHNle2NbY1t3Kzg+PjJdPj4yXT0wO2Nbdys0Pj4yXT0wfW9nKHcpO2NbdyswPj4yXT1jW0krMD4+Ml07Y1t3KzQ+PjJdPWNbSSs0Pj4yXTtjW3crOD4+Ml09Y1tJKzg+PjJdO2NbSSswPj4yXT0wO2NbSSs0Pj4yXT0wO2NbSSs4Pj4yXT0wO2Y9b2NbY1soY1tDPj4yXXwwKSszNj4+Ml0mMTI3XShDKXwwO2JyZWFrfSQ9WGEoNCl8MDtjWyQ+PjJdPTIxMzA0O3diKCR8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtjW24+PjJdPWNbbT4+Ml07ST1yKzR8MDtEPXIrOHwwO0g9eCs0fDA7Qz14Kzh8MDtMPShoJjUxMnwwKSE9MDtKPXcrNHwwO2g9dys4fDA7TT1zKzR8MDtFPXMrOHwwO049RiszfDA7Sz1tKzR8MDtPPXQrNHwwO1M9UCs0MDB8MDtVPVA7VD1QO1E9MDtQPTA7Uj0yMTM7YTp3aGlsZSgxKXtWPWNbYj4+Ml18MDtkb3tpZigoVnwwKSE9MCl7Vz1jW1YrMTI+PjJdfDA7aWYoKFd8MCk9PShjW1YrMTY+PjJdfDApKXtWPW9jW2NbKGNbVj4+Ml18MCkrMzY+PjJdJjEyN10oVil8MH1lbHNle1Y9Y1tXPj4yXXwwfWlmKChWfDApPT0tMSl7Y1tiPj4yXT0wO1Y9MTticmVha31lbHNle1Y9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7Vj0xfX13aGlsZSgwKTtpZigoZXwwKSE9MCl7Vz1jW2UrMTI+PjJdfDA7aWYoKFd8MCk9PShjW2UrMTY+PjJdfDApKXtXPW9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MH1lbHNle1c9Y1tXPj4yXXwwfWlmKCEoKFd8MCk9PS0xKSl7aWYoIVYpe0I9Mzc4O2JyZWFrfX1lbHNle0I9NzV9fWVsc2V7Qj03NX1pZigoQnwwKT09NzUpe0I9MDtpZihWKXtlPTA7Qj0zNzg7YnJlYWt9ZWxzZXtlPTB9fWI6ZG97c3dpdGNoKGFbRitRPj4wXXwwKXtjYXNlIDE6e2lmKChRfDApPT0zKXtCPTM3ODticmVhayBhfUI9Y1tiPj4yXXwwO1Y9Y1tCKzEyPj4yXXwwO2lmKChWfDApPT0oY1tCKzE2Pj4yXXwwKSl7Qj1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtCPWNbVj4+Ml18MH1pZighKGhjW2NbKGNbbD4+Ml18MCkrMTI+PjJdJjYzXShsLDgxOTIsQil8MCkpe0I9OTc7YnJlYWsgYX1XPWNbYj4+Ml18MDtCPVcrMTJ8MDtWPWNbQj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSs0MD4+Ml0mMTI3XShXKXwwfWVsc2V7Y1tCPj4yXT1WKzQ7Vj1jW1Y+PjJdfDB9Vz1hW3M+PjBdfDA7Qj0oVyYxKSE9MDtpZihCKXtYPShjW3M+PjJdJi0yKSsgLTF8MDtXPWNbTT4+Ml18MH1lbHNle1g9MTtXPShXJjI1NSk+Pj4xfWlmKChXfDApPT0oWHwwKSl7cGcocyxYLDEsWCxYLDAsMCk7aWYoKGFbcz4+MF0mMSk9PTApe0I9OTR9ZWxzZXtCPTk1fX1lbHNle2lmKEIpe0I9OTV9ZWxzZXtCPTk0fX1pZigoQnwwKT09OTQpe2Fbcz4+MF09KFc8PDEpKzI7WD1NO1k9VysxfDB9ZWxzZSBpZigoQnwwKT09OTUpe1g9Y1tFPj4yXXwwO1k9VysxfDA7Y1tNPj4yXT1ZfWNbWCsoVzw8Mik+PjJdPVY7Y1tYKyhZPDwyKT4+Ml09MDtCPTk4O2JyZWFrfTtjYXNlIDI6e2lmKCEoKFB8MCkhPTB8UT4+PjA8Mikpe2lmKChRfDApPT0yKXtWPShhW04+PjBdfDApIT0wfWVsc2V7Vj0wfWlmKCEoTHxWKSl7UD0wO2JyZWFrIGJ9fVk9YVt3Pj4wXXwwO1Y9KFkmMSk9PTA/SjpjW2g+PjJdfDA7Yzpkb3tpZigoUXwwKSE9MD8oZFtGKyhRKyAtMSk+PjBdfDApPDI6MCl7d2hpbGUoMSl7aWYoKFkmMSk9PTApe1g9SjtXPShZJjI1NSk+Pj4xfWVsc2V7WD1jW2g+PjJdfDA7Vz1jW0o+PjJdfDB9aWYoKFZ8MCk9PShYKyhXPDwyKXwwKSl7YnJlYWt9aWYoIShoY1tjWyhjW2w+PjJdfDApKzEyPj4yXSY2M10obCw4MTkyLGNbVj4+Ml18MCl8MCkpe0I9MjEyO2JyZWFrfVk9YVt3Pj4wXXwwO1Y9Vis0fDB9aWYoKEJ8MCk9PTIxMil7Qj0wO1k9YVt3Pj4wXXwwfVg9KFkmMSk9PTA/SjpjW2g+PjJdfDA7Vz1WLVg+PjI7Wj1hW3M+PjBdfDA7JD0oWiYxKT09MDtpZigkKXtfPShaJjI1NSk+Pj4xfWVsc2V7Xz1jW00+PjJdfDB9aWYoIShXPj4+MD5fPj4+MCkpe2lmKCQpe189KFomMjU1KT4+PjE7JD1NO1o9XztfPU0rKF8tVzw8Mil8MH1lbHNle2FhPWNbRT4+Ml18MDtfPWNbTT4+Ml18MDskPWFhO1o9XztfPWFhKyhfLVc8PDIpfDB9Vz0kKyhaPDwyKXwwO2lmKChffDApPT0oV3wwKSl7Vz1lO1g9ZX1lbHNle1o9WDt3aGlsZSgxKXtpZigoY1tfPj4yXXwwKSE9KGNbWj4+Ml18MCkpe1c9ZTtWPVg7WD1lO2JyZWFrIGN9Xz1fKzR8MDtpZigoX3wwKT09KFd8MCkpe1c9ZTtYPWU7YnJlYWsgY31aPVorNHwwfX19ZWxzZXtXPWU7Vj1YO1g9ZX19ZWxzZXtXPWU7WD1lfX13aGlsZSgwKTt3aGlsZSgxKXtpZigoWSYxKT09MCl7Wj1KO1k9KFkmMjU1KT4+PjF9ZWxzZXtaPWNbaD4+Ml18MDtZPWNbSj4+Ml18MH1pZigoVnwwKT09KForKFk8PDIpfDApKXticmVha31ZPWNbYj4+Ml18MDtkb3tpZigoWXwwKSE9MCl7Wj1jW1krMTI+PjJdfDA7aWYoKFp8MCk9PShjW1krMTY+PjJdfDApKXtZPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1k9Y1taPj4yXXwwfWlmKChZfDApPT0tMSl7Y1tiPj4yXT0wO1k9MTticmVha31lbHNle1k9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7WT0xfX13aGlsZSgwKTtpZigoWHwwKSE9MCl7Wj1jW1grMTI+PjJdfDA7aWYoKFp8MCk9PShjW1grMTY+PjJdfDApKXtYPW9jW2NbKGNbWD4+Ml18MCkrMzY+PjJdJjEyN10oWCl8MH1lbHNle1g9Y1taPj4yXXwwfWlmKCEoKFh8MCk9PS0xKSl7aWYoWV4oV3wwKT09MCl7WT1XO1g9V31lbHNle2JyZWFrfX1lbHNle1c9MDtlPTA7Qj0yNDB9fWVsc2V7Qj0yNDB9aWYoKEJ8MCk9PTI0MCl7Qj0wO2lmKFkpe2JyZWFrfWVsc2V7WT1XO1g9MH19Wj1jW2I+PjJdfDA7Vz1jW1orMTI+PjJdfDA7aWYoKFd8MCk9PShjW1orMTY+PjJdfDApKXtXPW9jW2NbKGNbWj4+Ml18MCkrMzY+PjJdJjEyN10oWil8MH1lbHNle1c9Y1tXPj4yXXwwfWlmKChXfDApIT0oY1tWPj4yXXwwKSl7YnJlYWt9Xz1jW2I+PjJdfDA7Vz1fKzEyfDA7Wj1jW1c+PjJdfDA7aWYoKFp8MCk9PShjW18rMTY+PjJdfDApKXtvY1tjWyhjW18+PjJdfDApKzQwPj4yXSYxMjddKF8pfDB9ZWxzZXtjW1c+PjJdPVorNH1XPVk7WT1hW3c+PjBdfDA7Vj1WKzR8MH1pZihMKXtYPWFbdz4+MF18MDtpZigoWCYxKT09MCl7Vz1KO1g9KFgmMjU1KT4+PjF9ZWxzZXtXPWNbaD4+Ml18MDtYPWNbSj4+Ml18MH1pZigoVnwwKSE9KFcrKFg8PDIpfDApKXtCPTI1NTticmVhayBhfX1icmVha307Y2FzZSAwOntCPTk4O2JyZWFrfTtjYXNlIDM6e1Y9YVt4Pj4wXXwwO1g9KFYmMSk9PTA7aWYoWCl7Wj0oViYyNTUpPj4+MX1lbHNle1o9Y1tIPj4yXXwwfVc9YVtyPj4wXXwwO1k9KFcmMSk9PTA7aWYoWSl7Xz0oVyYyNTUpPj4+MX1lbHNle189Y1tJPj4yXXwwfWlmKChafDApIT0oMC1ffDApKXtpZihYKXtaPShWJjI1NSk+Pj4xfWVsc2V7Wj1jW0g+PjJdfDB9aWYoKFp8MCkhPTApe2lmKFkpe1k9KFcmMjU1KT4+PjF9ZWxzZXtZPWNbST4+Ml18MH1pZigoWXwwKSE9MCl7WD1jW2I+PjJdfDA7WT1jW1grMTI+PjJdfDA7Wj1jW1grMTY+PjJdfDA7aWYoKFl8MCk9PShafDApKXtXPW9jW2NbKGNbWD4+Ml18MCkrMzY+PjJdJjEyN10oWCl8MDtaPWNbYj4+Ml18MDtWPWFbeD4+MF18MDtYPVo7WT1jW1orMTI+PjJdfDA7Wj1jW1orMTY+PjJdfDB9ZWxzZXtXPWNbWT4+Ml18MH1fPVgrMTJ8MDtaPShZfDApPT0oWnwwKTtpZigoV3wwKT09KGNbKChWJjEpPT0wP0g6Y1tDPj4yXXwwKT4+Ml18MCkpe2lmKFope29jW2NbKGNbWD4+Ml18MCkrNDA+PjJdJjEyN10oWCl8MH1lbHNle2NbXz4+Ml09WSs0fVY9YVt4Pj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0g+PjJdfDB9UD1WPj4+MD4xP3g6UDticmVhayBifWlmKFope1Y9b2NbY1soY1tYPj4yXXwwKSszNj4+Ml0mMTI3XShYKXwwfWVsc2V7Vj1jW1k+PjJdfDB9aWYoKFZ8MCkhPShjWygoYVtyPj4wXSYxKT09MD9JOmNbRD4+Ml18MCk+PjJdfDApKXtCPTE5ODticmVhayBhfVY9Y1tiPj4yXXwwO1c9VisxMnwwO1g9Y1tXPj4yXXwwO2lmKChYfDApPT0oY1tWKzE2Pj4yXXwwKSl7b2NbY1soY1tWPj4yXXwwKSs0MD4+Ml0mMTI3XShWKXwwfWVsc2V7Y1tXPj4yXT1YKzR9YVtrPj4wXT0xO1Y9YVtyPj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0k+PjJdfDB9UD1WPj4+MD4xP3I6UDticmVhayBifX1pZihYKXtYPShWJjI1NSk+Pj4xfWVsc2V7WD1jW0g+PjJdfDB9WT1jW2I+PjJdfDA7Wj1jW1krMTI+PjJdfDA7Xz0oWnwwKT09KGNbWSsxNj4+Ml18MCk7aWYoKFh8MCk9PTApe2lmKF8pe1Y9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwO1c9YVtyPj4wXXwwfWVsc2V7Vj1jW1o+PjJdfDB9aWYoKFZ8MCkhPShjWygoVyYxKT09MD9JOmNbRD4+Ml18MCk+PjJdfDApKXticmVhayBifVg9Y1tiPj4yXXwwO1c9WCsxMnwwO1Y9Y1tXPj4yXXwwO2lmKChWfDApPT0oY1tYKzE2Pj4yXXwwKSl7b2NbY1soY1tYPj4yXXwwKSs0MD4+Ml0mMTI3XShYKXwwfWVsc2V7Y1tXPj4yXT1WKzR9YVtrPj4wXT0xO1Y9YVtyPj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0k+PjJdfDB9UD1WPj4+MD4xP3I6UDticmVhayBifWlmKF8pe1c9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwO1Y9YVt4Pj4wXXwwfWVsc2V7Vz1jW1o+PjJdfDB9aWYoKFd8MCkhPShjWygoViYxKT09MD9IOmNbQz4+Ml18MCk+PjJdfDApKXthW2s+PjBdPTE7YnJlYWsgYn1YPWNbYj4+Ml18MDtXPVgrMTJ8MDtWPWNbVz4+Ml18MDtpZigoVnwwKT09KGNbWCsxNj4+Ml18MCkpe29jW2NbKGNbWD4+Ml18MCkrNDA+PjJdJjEyN10oWCl8MH1lbHNle2NbVz4+Ml09Vis0fVY9YVt4Pj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0g+PjJdfDB9UD1WPj4+MD4xP3g6UH1icmVha307Y2FzZSA0OntWPTA7d2hpbGUoMSl7WD1jW2I+PjJdfDA7ZG97aWYoKFh8MCkhPTApe1c9Y1tYKzEyPj4yXXwwO2lmKChXfDApPT0oY1tYKzE2Pj4yXXwwKSl7Vz1vY1tjWyhjW1g+PjJdfDApKzM2Pj4yXSYxMjddKFgpfDB9ZWxzZXtXPWNbVz4+Ml18MH1pZigoV3wwKT09LTEpe2NbYj4+Ml09MDtXPTE7YnJlYWt9ZWxzZXtXPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle1c9MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe1g9Y1tlKzEyPj4yXXwwO2lmKChYfDApPT0oY1tlKzE2Pj4yXXwwKSl7WD1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtYPWNbWD4+Ml18MH1pZighKChYfDApPT0tMSkpe2lmKCFXKXticmVha319ZWxzZXtCPTI2OH19ZWxzZXtCPTI2OH1pZigoQnwwKT09MjY4KXtCPTA7aWYoVyl7ZT0wO2JyZWFrfWVsc2V7ZT0wfX1YPWNbYj4+Ml18MDtXPWNbWCsxMj4+Ml18MDtpZigoV3wwKT09KGNbWCsxNj4+Ml18MCkpe1c9b2NbY1soY1tYPj4yXXwwKSszNj4+Ml0mMTI3XShYKXwwfWVsc2V7Vz1jW1c+PjJdfDB9aWYoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsMjA0OCxXKXwwKXtYPWNbbj4+Ml18MDtpZigoWHwwKT09KG98MCkpe1k9KGNbSz4+Ml18MCkhPTIxMztaPWNbbT4+Ml18MDtvPW8tWnwwO1g9bz4+PjA8MjE0NzQ4MzY0Nz9vPDwxOi0xO289bz4+MjtpZighWSl7Wj0wfVo9d24oWixYKXwwO2lmKChafDApPT0wKXtCPTI3OTticmVhayBhfWlmKCFZKXtZPWNbbT4+Ml18MDtjW20+PjJdPVo7aWYoKFl8MCkhPTApe2xjW2NbSz4+Ml0mMjU1XShZKTtaPWNbbT4+Ml18MH19ZWxzZXtjW20+PjJdPVp9Y1tLPj4yXT0yMTQ7YWE9Wisobzw8Mil8MDtjW24+PjJdPWFhO289KGNbbT4+Ml18MCkrKFg+Pj4yPDwyKXwwO1g9YWF9Y1tuPj4yXT1YKzQ7Y1tYPj4yXT1XO1Y9VisxfDB9ZWxzZXtYPWFbdD4+MF18MDtpZigoWCYxKT09MCl7WD0oWCYyNTUpPj4+MX1lbHNle1g9Y1tPPj4yXXwwfWlmKCEoKCgoWHwwKT09MHwoVnwwKT09MCleMSkmKFd8MCk9PShHfDApKSl7YnJlYWt9aWYoKFV8MCk9PShTfDApKXtVPVUtVHwwO1M9VT4+PjA8MjE0NzQ4MzY0Nz9VPDwxOi0xO2lmKChSfDApPT0yMTMpe1Q9MH1SPXduKFQsUyl8MDtpZigoUnwwKT09MCl7Qj0yOTY7YnJlYWsgYX1UPVI7Uz1SKyhTPj4+Mjw8Mil8MDtVPVIrKFU+PjI8PDIpfDA7Uj0yMTR9Y1tVPj4yXT1WO1U9VSs0fDA7Vj0wfVc9Y1tiPj4yXXwwO1g9VysxMnwwO1k9Y1tYPj4yXXwwO2lmKChZfDApPT0oY1tXKzE2Pj4yXXwwKSl7b2NbY1soY1tXPj4yXXwwKSs0MD4+Ml0mMTI3XShXKXwwO2NvbnRpbnVlfWVsc2V7Y1tYPj4yXT1ZKzQ7Y29udGludWV9fWlmKCEoKFR8MCk9PShVfDApfChWfDApPT0wKSl7aWYoKFV8MCk9PShTfDApKXtVPVUtVHwwO1M9VT4+PjA8MjE0NzQ4MzY0Nz9VPDwxOi0xO2lmKChSfDApPT0yMTMpe1Q9MH1SPXduKFQsUyl8MDtpZigoUnwwKT09MCl7Qj0zMDg7YnJlYWsgYX1UPVI7Uz1SKyhTPj4+Mjw8Mil8MDtVPVIrKFU+PjI8PDIpfDA7Uj0yMTR9Y1tVPj4yXT1WO1U9VSs0fDB9aWYoKGZ8MCk+MCl7Vz1jW2I+PjJdfDA7ZG97aWYoKFd8MCkhPTApe1Y9Y1tXKzEyPj4yXXwwO2lmKChWfDApPT0oY1tXKzE2Pj4yXXwwKSl7Vj1vY1tjWyhjW1c+PjJdfDApKzM2Pj4yXSYxMjddKFcpfDB9ZWxzZXtWPWNbVj4+Ml18MH1pZigoVnwwKT09LTEpe2NbYj4+Ml09MDtWPTE7YnJlYWt9ZWxzZXtWPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle1Y9MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe1c9Y1tlKzEyPj4yXXwwO2lmKChXfDApPT0oY1tlKzE2Pj4yXXwwKSl7Vz1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtXPWNbVz4+Ml18MH1pZighKChXfDApPT0tMSkpe2lmKCFWKXtCPTMzMTticmVhayBhfX1lbHNle0I9MzI1fX1lbHNle0I9MzI1fWlmKChCfDApPT0zMjUpe0I9MDtpZihWKXtCPTMzMTticmVhayBhfWVsc2V7ZT0wfX1XPWNbYj4+Ml18MDtWPWNbVysxMj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoKFZ8MCkhPShnfDApKXtCPTMzMTticmVhayBhfVY9Y1tiPj4yXXwwO1c9VisxMnwwO1g9Y1tXPj4yXXwwO2lmKChYfDApPT0oY1tWKzE2Pj4yXXwwKSl7b2NbY1soY1tWPj4yXXwwKSs0MD4+Ml0mMTI3XShWKXwwO1g9ZTtXPWV9ZWxzZXtjW1c+PjJdPVgrNDtYPWU7Vz1lfXdoaWxlKDEpe1k9Y1tiPj4yXXwwO2Rve2lmKChZfDApIT0wKXtWPWNbWSsxMj4+Ml18MDtpZigoVnwwKT09KGNbWSsxNj4+Ml18MCkpe1Y9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoKFZ8MCk9PS0xKXtjW2I+PjJdPTA7WT0xO2JyZWFrfWVsc2V7WT0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtZPTF9fXdoaWxlKDApO2lmKChXfDApIT0wKXtWPWNbVysxMj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoISgoVnwwKT09LTEpKXtpZihZXihYfDApPT0wKXtWPVg7Vz1YfWVsc2V7Qj0zNTQ7YnJlYWsgYX19ZWxzZXtWPTA7ZT0wO0I9MzQ3fX1lbHNle1Y9WDtCPTM0N31pZigoQnwwKT09MzQ3KXtCPTA7aWYoWSl7Qj0zNTQ7YnJlYWsgYX1lbHNle1c9MH19WT1jW2I+PjJdfDA7WD1jW1krMTI+PjJdfDA7aWYoKFh8MCk9PShjW1krMTY+PjJdfDApKXtYPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1g9Y1tYPj4yXXwwfWlmKCEoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsMjA0OCxYKXwwKSl7Qj0zNTQ7YnJlYWsgYX1YPWNbbj4+Ml18MDtpZigoWHwwKT09KG98MCkpe1k9KGNbSz4+Ml18MCkhPTIxMztaPWNbbT4+Ml18MDtYPW8tWnwwO289WD4+PjA8MjE0NzQ4MzY0Nz9YPDwxOi0xO1g9WD4+MjtpZighWSl7Wj0wfVo9d24oWixvKXwwO2lmKChafDApPT0wKXtCPTM1OTticmVhayBhfWRve2lmKFkpe2NbbT4+Ml09Wn1lbHNle1k9Y1ttPj4yXXwwO2NbbT4+Ml09WjtpZigoWXwwKT09MCl7YnJlYWt9bGNbY1tLPj4yXSYyNTVdKFkpO1o9Y1ttPj4yXXwwfX13aGlsZSgwKTtjW0s+PjJdPTIxNDtYPVorKFg8PDIpfDA7Y1tuPj4yXT1YO289KGNbbT4+Ml18MCkrKG8+Pj4yPDwyKXwwfVk9Y1tiPj4yXXwwO1o9Y1tZKzEyPj4yXXwwO2lmKChafDApPT0oY1tZKzE2Pj4yXXwwKSl7WT1vY1tjWyhjW1k+PjJdfDApKzM2Pj4yXSYxMjddKFkpfDA7WD1jW24+PjJdfDB9ZWxzZXtZPWNbWj4+Ml18MH1jW24+PjJdPVgrNDtjW1g+PjJdPVk7Zj1mKyAtMXwwO1g9Y1tiPj4yXXwwO1k9WCsxMnwwO1o9Y1tZPj4yXXwwO2lmKChafDApPT0oY1tYKzE2Pj4yXXwwKSl7b2NbY1soY1tYPj4yXXwwKSs0MD4+Ml0mMTI3XShYKXwwfWVsc2V7Y1tZPj4yXT1aKzR9aWYoKGZ8MCk+MCl7WD1WfWVsc2V7YnJlYWt9fX1pZigoY1tuPj4yXXwwKT09KGNbbT4+Ml18MCkpe0I9Mzc2O2JyZWFrIGF9YnJlYWt9O2RlZmF1bHQ6e319fXdoaWxlKDApO2Q6ZG97aWYoKEJ8MCk9PTk4KXtCPTA7aWYoKFF8MCk9PTMpe0I9Mzc4O2JyZWFrIGF9ZWxzZXtYPWU7Vj1lfXdoaWxlKDEpe1c9Y1tiPj4yXXwwO2Rve2lmKChXfDApIT0wKXtZPWNbVysxMj4+Ml18MDtpZigoWXwwKT09KGNbVysxNj4+Ml18MCkpe1c9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vz1jW1k+PjJdfDB9aWYoKFd8MCk9PS0xKXtjW2I+PjJdPTA7WT0xO2JyZWFrfWVsc2V7WT0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtZPTF9fXdoaWxlKDApO2lmKChWfDApIT0wKXtXPWNbVisxMj4+Ml18MDtpZigoV3wwKT09KGNbVisxNj4+Ml18MCkpe1Y9b2NbY1soY1tWPj4yXXwwKSszNj4+Ml0mMTI3XShWKXwwfWVsc2V7Vj1jW1c+PjJdfDB9aWYoISgoVnwwKT09LTEpKXtpZihZXihYfDApPT0wKXtXPVg7Vj1YfWVsc2V7YnJlYWsgZH19ZWxzZXtXPTA7ZT0wO0I9MTExfX1lbHNle1c9WDtCPTExMX1pZigoQnwwKT09MTExKXtCPTA7aWYoWSl7YnJlYWsgZH1lbHNle1Y9MH19WT1jW2I+PjJdfDA7WD1jW1krMTI+PjJdfDA7aWYoKFh8MCk9PShjW1krMTY+PjJdfDApKXtYPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1g9Y1tYPj4yXXwwfWlmKCEoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsODE5MixYKXwwKSl7YnJlYWsgZH1CPWNbYj4+Ml18MDtYPUIrMTJ8MDtZPWNbWD4+Ml18MDtpZigoWXwwKT09KGNbQisxNj4+Ml18MCkpe1g9b2NbY1soY1tCPj4yXXwwKSs0MD4+Ml0mMTI3XShCKXwwfWVsc2V7Y1tYPj4yXT1ZKzQ7WD1jW1k+PjJdfDB9WT1hW3M+PjBdfDA7Wj0oWSYxKSE9MDtpZihaKXtCPShjW3M+PjJdJi0yKSsgLTF8MDtZPWNbTT4+Ml18MH1lbHNle0I9MTtZPShZJjI1NSk+Pj4xfWlmKChZfDApPT0oQnwwKSl7cGcocyxCLDEsQixCLDAsMCk7aWYoKGFbcz4+MF0mMSk9PTApe0I9MTI4fWVsc2V7Qj0xMjl9fWVsc2V7aWYoWil7Qj0xMjl9ZWxzZXtCPTEyOH19aWYoKEJ8MCk9PTEyOCl7Qj0wO2Fbcz4+MF09KFk8PDEpKzI7Wj1NO189WSsxfDB9ZWxzZSBpZigoQnwwKT09MTI5KXtCPTA7Wj1jW0U+PjJdfDA7Xz1ZKzF8MDtjW00+PjJdPV99Y1taKyhZPDwyKT4+Ml09WDtjW1orKF88PDIpPj4yXT0wO1g9V319fXdoaWxlKDApO1E9USsxfDA7aWYoIShRPj4+MDw0KSl7Qj0zNzg7YnJlYWt9fWU6c3dpdGNoKEJ8MCl7Y2FzZSA5Nzp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDE5ODp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDI1NTp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDI3OTp7YWE9WGEoNCl8MDtjW2FhPj4yXT0yMjY4MDt3YihhYXwwLDIyNzI4LDIwNil9O2Nhc2UgMjk2OnthYT1YYSg0KXwwO2NbYWE+PjJdPTIyNjgwO3diKGFhfDAsMjI3MjgsMjA2KX07Y2FzZSAzMDg6e2FhPVhhKDQpfDA7Y1thYT4+Ml09MjI2ODA7d2IoYWF8MCwyMjcyOCwyMDYpfTtjYXNlIDMzMTp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDM1NDp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDM1OTp7YWE9WGEoNCl8MDtjW2FhPj4yXT0yMjY4MDt3YihhYXwwLDIyNzI4LDIwNil9O2Nhc2UgMzc2OntjW2o+PjJdPWNbaj4+Ml18NDtiPTA7YnJlYWt9O2Nhc2UgMzc4OntmOmRve2lmKChQfDApIT0wKXtsPVArNHwwO0Y9UCs4fDA7az0xO3doaWxlKDEpe209YVtQPj4wXXwwO2lmKChtJjEpPT0wKXttPShtJjI1NSk+Pj4xfWVsc2V7bT1jW2w+PjJdfDB9aWYoIShrPj4+MDxtPj4+MCkpe2JyZWFrIGZ9bj1jW2I+PjJdfDA7ZG97aWYoKG58MCkhPTApe209Y1tuKzEyPj4yXXwwO2lmKChtfDApPT0oY1tuKzE2Pj4yXXwwKSl7bT1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXttPWNbbT4+Ml18MH1pZigobXwwKT09LTEpe2NbYj4+Ml09MDttPTE7YnJlYWt9ZWxzZXttPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle209MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe249Y1tlKzEyPj4yXXwwO2lmKChufDApPT0oY1tlKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZighKChufDApPT0tMSkpe2lmKCFtKXticmVha319ZWxzZXtCPTM5Nn19ZWxzZXtCPTM5Nn1pZigoQnwwKT09Mzk2KXtCPTA7aWYobSl7YnJlYWt9ZWxzZXtlPTB9fW09Y1tiPj4yXXwwO249Y1ttKzEyPj4yXXwwO2lmKChufDApPT0oY1ttKzE2Pj4yXXwwKSl7bT1vY1tjWyhjW20+PjJdfDApKzM2Pj4yXSYxMjddKG0pfDB9ZWxzZXttPWNbbj4+Ml18MH1pZigoYVtQPj4wXSYxKT09MCl7bj1sfWVsc2V7bj1jW0Y+PjJdfDB9aWYoKG18MCkhPShjW24rKGs8PDIpPj4yXXwwKSl7YnJlYWt9az1rKzF8MDtnPWNbYj4+Ml18MDtuPWcrMTJ8MDttPWNbbj4+Ml18MDtpZigobXwwKT09KGNbZysxNj4+Ml18MCkpe29jW2NbKGNbZz4+Ml18MCkrNDA+PjJdJjEyN10oZyl8MDtjb250aW51ZX1lbHNle2Nbbj4+Ml09bSs0O2NvbnRpbnVlfX1jW2o+PjJdPWNbaj4+Ml18NDtiPTA7YnJlYWsgZX19d2hpbGUoMCk7aWYoKFR8MCkhPShVfDApKXtjW0E+PjJdPTA7cWsodCxULFUsQSk7aWYoKGNbQT4+Ml18MCk9PTApe2I9MX1lbHNle2Nbaj4+Ml09Y1tqPj4yXXw0O2I9MH19ZWxzZXtiPTE7VD1VfWJyZWFrfX1pZighKChhW3M+PjBdJjEpPT0wKT8oej1jW0U+PjJdfDAsKHp8MCkhPTApOjApe3ZuKHopfWlmKCEoKGFbcj4+MF0mMSk9PTApPyh5PWNbRD4+Ml18MCwoeXwwKSE9MCk6MCl7dm4oeSl9aWYoISgoYVt4Pj4wXSYxKT09MCk/KHU9Y1tDPj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhW3c+PjBdJjEpPT0wKT8ocT1jW2g+PjJdfDAsKHF8MCkhPTApOjApe3ZuKHEpfWlmKCEoKGFbdD4+MF0mMSk9PTApPyhwPWNbdCs4Pj4yXXwwLChwfDApIT0wKTowKXt2bihwKX1pZigoVHwwKT09MCl7aT12O3JldHVybiBifDB9bGNbUiYyNTVdKFQpO2k9djtyZXR1cm4gYnwwfWZ1bmN0aW9uIHZrKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7bT1pO2k9aSs0MzJ8MDtwPW07cz1tKzI0fDA7ZD1tKzE2fDA7cT1tKzEyfDA7dD1tKzQyNHwwO2NbZD4+Ml09cztsPWQrNHwwO2NbbD4+Ml09MjEzO3M9cys0MDB8MDtuPWNbaCsyOD4+Ml18MDt2PW4rNHwwO2Nbdj4+Ml09KGNbdj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbcD4+Ml09MTM0NDg7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ0OCxwKX1wPShjWzEzNDUyPj4yXXwwKSsgLTF8MDt1PWNbbis4Pj4yXXwwO2lmKChjW24rMTI+PjJdfDApLXU+PjI+Pj4wPnA+Pj4wPyhyPWNbdSsocDw8Mik+PjJdfDAsKHJ8MCkhPTApOjApe2FbdD4+MF09MDtwPWNbZj4+Ml18MDtkb3tpZih1ayhlLHAsZyxuLGNbaCs0Pj4yXXwwLGosdCxyLGQscSxzKXwwKXtpZigoYVtrPj4wXSYxKT09MCl7Y1trKzQ+PjJdPTA7YVtrPj4wXT0wfWVsc2V7Y1tjW2srOD4+Ml0+PjJdPTA7Y1trKzQ+PjJdPTB9aWYoKGFbdD4+MF18MCkhPTApe2c9eGNbY1soY1tyPj4yXXwwKSs0ND4+Ml0mNjNdKHIsNDUpfDA7aD1hW2s+PjBdfDA7bz0oaCYxKSE9MDtpZihvKXtzPShjW2s+PjJdJi0yKSsgLTF8MDtoPWNbays0Pj4yXXwwfWVsc2V7cz0xO2g9KGgmMjU1KT4+PjF9aWYoKGh8MCk9PShzfDApKXtwZyhrLHMsMSxzLHMsMCwwKTtpZigoYVtrPj4wXSYxKT09MCl7bz0yMX1lbHNle289MjJ9fWVsc2V7aWYobyl7bz0yMn1lbHNle289MjF9fWlmKChvfDApPT0yMSl7YVtrPj4wXT0oaDw8MSkrMjt0PWsrNHwwO3M9aCsxfDB9ZWxzZSBpZigob3wwKT09MjIpe3Q9Y1trKzg+PjJdfDA7cz1oKzF8MDtjW2srND4+Ml09c31jW3QrKGg8PDIpPj4yXT1nO2NbdCsoczw8Mik+PjJdPTB9cj14Y1tjWyhjW3I+PjJdfDApKzQ0Pj4yXSY2M10ociw0OCl8MDtzPWNbZD4+Ml18MDtxPWNbcT4+Ml18MDtoPXErIC00fDA7YTpkb3tpZihzPj4+MDxoPj4+MCl7d2hpbGUoMSl7Zz1zKzR8MDtpZigoY1tzPj4yXXwwKSE9KHJ8MCkpe2JyZWFrIGF9aWYoZz4+PjA8aD4+PjApe3M9Z31lbHNle3M9ZzticmVha319fX13aGlsZSgwKTt0PXM7cj1hW2s+PjBdfDA7aWYoKHImMSk9PTApe3Y9cjt1PTE7Zz0ociYyNTUpPj4+MX1lbHNle3U9Y1trPj4yXXwwO3Y9dSYyNTU7dT0odSYtMikrIC0xfDA7Zz1jW2srND4+Ml18MH1yPXEtdD4+MjtpZigocnwwKSE9MCl7aWYoKHUtZ3wwKT4+PjA8cj4+PjApe3BnKGssdSxnK3ItdXwwLGcsZywwLDApO3Y9YVtrPj4wXXwwfWlmKCh2JjEpPT0wKXt1PWsrNHwwfWVsc2V7dT1jW2srOD4+Ml18MH12PXUrKGc8PDIpfDA7aWYoKHN8MCkhPShxfDApKXtoPWcrKChoKygwLXQpfDApPj4+MikrMXwwO3doaWxlKDEpe2Nbdj4+Ml09Y1tzPj4yXTtzPXMrNHwwO2lmKChzfDApPT0ocXwwKSl7YnJlYWt9dj12KzR8MH12PXUrKGg8PDIpfDB9Y1t2Pj4yXT0wO3E9ZytyfDA7aWYoKGFbaz4+MF0mMSk9PTApe2Fbaz4+MF09cTw8MTticmVha31lbHNle2Nbays0Pj4yXT1xO2JyZWFrfX19fXdoaWxlKDApO2s9Y1tlPj4yXXwwO2lmKChrfDApIT0wKXtxPWNbaysxMj4+Ml18MDtpZigocXwwKT09KGNbaysxNj4+Ml18MCkpe3E9b2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwfWVsc2V7cT1jW3E+PjJdfDB9aWYoKHF8MCk9PS0xKXtjW2U+PjJdPTA7az0wO2U9MX1lbHNle2U9MH19ZWxzZXtrPTA7ZT0xfWRve2lmKChwfDApIT0wKXtxPWNbcCsxMj4+Ml18MDtpZigocXwwKT09KGNbcCsxNj4+Ml18MCkpe3A9b2NbY1soY1twPj4yXXwwKSszNj4+Ml0mMTI3XShwKXwwfWVsc2V7cD1jW3E+PjJdfDB9aWYoISgocHwwKT09LTEpKXtpZihlKXticmVha31lbHNle289NjA7YnJlYWt9fWVsc2V7Y1tmPj4yXT0wO289NTg7YnJlYWt9fWVsc2V7bz01OH19d2hpbGUoMCk7aWYoKG98MCk9PTU4P2U6MCl7bz02MH1pZigob3wwKT09NjApe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09azt1PW4rNHwwO3Y9Y1t1Pj4yXXwwO2NbdT4+Ml09disgLTE7aWYoKHZ8MCk9PTApe2xjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKX1qPWNbZD4+Ml18MDtjW2Q+PjJdPTA7aWYoKGp8MCk9PTApe2k9bTtyZXR1cm59bGNbY1tsPj4yXSYyNTVdKGopO2k9bTtyZXR1cm59dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gd2soYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGsoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHlrKGIsZCxlLGYsZyxqLGwpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2w9K2w7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtxPWk7aT1pKzM2OHwwO0E9cTtDPXErMTU2fDA7RT1xKzEzMnwwO0I9cSsyNTZ8MDt0PXErMTQ4fDA7cz1xKzM1NnwwO3I9cSszNTd8MDt4PXErMTM2fDA7ZD1xKzEwNHwwO3c9cSsxMTZ8MDtGPXErMTAwfDA7dj1xKzEyOHwwO3U9cSsxNTJ8MDtjW0U+PjJdPUM7aFtrPj4zXT1sO2NbQT4+Ml09Y1trPj4yXTtjW0ErND4+Ml09Y1trKzQ+PjJdO0M9bGIoQ3wwLDEwMCwxMzIyNCxBfDApfDA7aWYoQz4+PjA+OTkpe2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1DPWNbMzM0MF18MDtoW2s+PjNdPWw7Y1tBPj4yXT1jW2s+PjJdO2NbQSs0Pj4yXT1jW2srND4+Ml07Qz1DaShFLEMsMTMyMjQsQSl8MDt6PWNbRT4+Ml18MDtpZigoenwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9Qj11bihDKXwwO2lmKChCfDApPT0wKXtIPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1lbHNle3k9Qn19ZWxzZXt5PTA7ej0wfUQ9Y1tnKzI4Pj4yXXwwO0g9RCs0fDA7Y1tIPj4yXT0oY1tIPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tBPj4yXT0xMzQ1NjtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEzNDU2LEEpfUc9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0g9Y1tEKzg+PjJdfDA7aWYoKGNbRCsxMj4+Ml18MCktSD4+Mj4+PjA+Rz4+PjA/KHA9Y1tIKyhHPDwyKT4+Ml18MCwocHwwKSE9MCk6MCl7SD1jW0U+PjJdfDA7dWNbY1soY1twPj4yXXwwKSszMj4+Ml0mMzFdKHAsSCxIK0N8MCxCKXwwO2lmKChDfDApPT0wKXtFPTB9ZWxzZXtFPShhW2NbRT4+Ml0+PjBdfDApPT00NX1jW3Q+PjJdPTA7Y1t4KzA+PjJdPTA7Y1t4KzQ+PjJdPTA7Y1t4Kzg+PjJdPTA7Y1tkKzA+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tkKzg+PjJdPTA7Y1t3KzA+PjJdPTA7Y1t3KzQ+PjJdPTA7Y1t3Kzg+PjJdPTA7emsoZixFLEQsdCxzLHIseCxkLHcsRik7Zj1jW0Y+PjJdfDA7aWYoKEN8MCk+KGZ8MCkpe0Y9YVt3Pj4wXXwwO2lmKChGJjEpPT0wKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW3crND4+Ml18MH1HPWFbZD4+MF18MDtpZigoRyYxKT09MCl7Rz0oRyYyNTUpPj4+MX1lbHNle0c9Y1tkKzQ+PjJdfDB9Rj1GKyhDLWY8PDF8MSkrR3wwfWVsc2V7Rj1hW3c+PjBdfDA7aWYoKEYmMSk9PTApe0Y9KEYmMjU1KT4+PjF9ZWxzZXtGPWNbdys0Pj4yXXwwfUc9YVtkPj4wXXwwO2lmKChHJjEpPT0wKXtHPShHJjI1NSk+Pj4xfWVsc2V7Rz1jW2QrND4+Ml18MH1GPUYrMitHfDB9Rj1GK2Z8MDtpZihGPj4+MD4xMDApe0E9dW4oRil8MDtpZigoQXwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9ZWxzZXtGPUF9fWVsc2V7Rj0wfUFrKEEsdix1LGNbZys0Pj4yXXwwLEIsQitDfDAscCxFLHQsYVtzPj4wXXwwLGFbcj4+MF18MCx4LGQsdyxmKTtXYyhiLGNbZT4+Ml18MCxBLGNbdj4+Ml18MCxjW3U+PjJdfDAsZyxqKTtpZigoRnwwKSE9MCl7dm4oRil9aWYoISgoYVt3Pj4wXSYxKT09MCk/KG49Y1t3Kzg+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbZD4+MF0mMSk9PTApPyhvPWNbZCs4Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhW3g+PjBdJjEpPT0wKT8obT1jW3grOD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9Rz1EKzR8MDtIPWNbRz4+Ml18MDtjW0c+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0Q+PjJdfDApKzg+PjJdJjI1NV0oRCl9aWYoKHl8MCkhPTApe3ZuKHkpfWlmKCh6fDApPT0wKXtpPXE7cmV0dXJufXZuKHopO2k9cTtyZXR1cm59SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gemsoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7bj1pO2k9aSsxMjh8MDtBPW47eD1uKzEyfDA7bz1uKzQwfDA7dj1uKzUyfDA7dz1uKzU2fDA7dT1uKzE2fDA7ej1uKzI4fDA7cj1uKzY4fDA7cT1uKzcyfDA7dD1uKzg0fDA7cz1uKzg4fDA7cD1uKzEwMHwwO3k9bisxMTJ8MDtpZihiKXtpZighKChjWzMyMjhdfDApPT0tMSkpe2NbQT4+Ml09MTI5MTI7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMjkxMixBKX1xPShjWzEyOTE2Pj4yXXwwKSsgLTF8MDtwPWNbZSs4Pj4yXXwwO2lmKCEoKGNbZSsxMj4+Ml18MCktcD4+Mj4+PjA+cT4+PjApKXtiPVhhKDQpfDA7Y1tiPj4yXT0yMTMwNDt3YihifDAsMjEzNzYsMTk2KX1wPWNbcCsocTw8Mik+PjJdfDA7aWYoKHB8MCk9PTApe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfXE9Y1twPj4yXXwwO2lmKGQpe21jW2NbcSs0ND4+Ml0mMTI3XSh4LHApO2I9Y1t4Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbcD4+Ml18MCkrMzI+PjJdJjEyN10obyxwKTtpZigoYVtsPj4wXSYxKT09MCl7YVtsKzE+PjBdPTA7YVtsPj4wXT0wfWVsc2V7YVtjW2wrOD4+Ml0+PjBdPTA7Y1tsKzQ+PjJdPTB9aWcobCk7Y1tsKzA+PjJdPWNbbyswPj4yXTtjW2wrND4+Ml09Y1tvKzQ+PjJdO2NbbCs4Pj4yXT1jW28rOD4+Ml07Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTB9ZWxzZXttY1tjW3ErNDA+PjJdJjEyN10odixwKTtiPWNbdj4+Ml18MDthW2Y+PjBdPWI7YVtmKzE+PjBdPWI+Pjg7YVtmKzI+PjBdPWI+PjE2O2FbZiszPj4wXT1iPj4yNDttY1tjWyhjW3A+PjJdfDApKzI4Pj4yXSYxMjddKHcscCk7aWYoKGFbbD4+MF0mMSk9PTApe2FbbCsxPj4wXT0wO2FbbD4+MF09MH1lbHNle2FbY1tsKzg+PjJdPj4wXT0wO2NbbCs0Pj4yXT0wfWlnKGwpO2NbbCswPj4yXT1jW3crMD4+Ml07Y1tsKzQ+PjJdPWNbdys0Pj4yXTtjW2wrOD4+Ml09Y1t3Kzg+PjJdO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wfWFbZz4+MF09b2NbY1soY1twPj4yXXwwKSsxMj4+Ml0mMTI3XShwKXwwO2FbaD4+MF09b2NbY1soY1twPj4yXXwwKSsxNj4+Ml0mMTI3XShwKXwwO21jW2NbKGNbcD4+Ml18MCkrMjA+PjJdJjEyN10odSxwKTtpZigoYVtqPj4wXSYxKT09MCl7YVtqKzE+PjBdPTA7YVtqPj4wXT0wfWVsc2V7YVtjW2orOD4+Ml0+PjBdPTA7Y1tqKzQ+PjJdPTB9aWcoaik7Y1tqKzA+PjJdPWNbdSswPj4yXTtjW2orND4+Ml09Y1t1KzQ+PjJdO2Nbais4Pj4yXT1jW3UrOD4+Ml07Y1t1KzA+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7bWNbY1soY1twPj4yXXwwKSsyND4+Ml0mMTI3XSh6LHApO2lmKChhW2s+PjBdJjEpPT0wKXthW2srMT4+MF09MDthW2s+PjBdPTB9ZWxzZXthW2Nbays4Pj4yXT4+MF09MDtjW2srND4+Ml09MH1pZyhrKTtjW2srMD4+Ml09Y1t6KzA+PjJdO2Nbays0Pj4yXT1jW3orND4+Ml07Y1trKzg+PjJdPWNbeis4Pj4yXTtjW3orMD4+Ml09MDtjW3orND4+Ml09MDtjW3orOD4+Ml09MDtiPW9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MDtjW20+PjJdPWI7aT1uO3JldHVybn1lbHNle2lmKCEoKGNbMzIxMl18MCk9PS0xKSl7Y1tBPj4yXT0xMjg0ODtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEyODQ4LEEpfXU9KGNbMTI4NTI+PjJdfDApKyAtMXwwO289Y1tlKzg+PjJdfDA7aWYoISgoY1tlKzEyPj4yXXwwKS1vPj4yPj4+MD51Pj4+MCkpe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfW89Y1tvKyh1PDwyKT4+Ml18MDtpZigob3wwKT09MCl7Yj1YYSg0KXwwO2NbYj4+Ml09MjEzMDQ7d2IoYnwwLDIxMzc2LDE5Nil9ZT1jW28+PjJdfDA7aWYoZCl7bWNbY1tlKzQ0Pj4yXSYxMjddKHIsbyk7Yj1jW3I+PjJdfDA7YVtmPj4wXT1iO2FbZisxPj4wXT1iPj44O2FbZisyPj4wXT1iPj4xNjthW2YrMz4+MF09Yj4+MjQ7bWNbY1soY1tvPj4yXXwwKSszMj4+Ml0mMTI3XShxLG8pO2lmKChhW2w+PjBdJjEpPT0wKXthW2wrMT4+MF09MDthW2w+PjBdPTB9ZWxzZXthW2NbbCs4Pj4yXT4+MF09MDtjW2wrND4+Ml09MH1pZyhsKTtjW2wrMD4+Ml09Y1txKzA+PjJdO2NbbCs0Pj4yXT1jW3ErND4+Ml07Y1tsKzg+PjJdPWNbcSs4Pj4yXTtjW3ErMD4+Ml09MDtjW3ErND4+Ml09MDtjW3ErOD4+Ml09MH1lbHNle21jW2NbZSs0MD4+Ml0mMTI3XSh0LG8pO2I9Y1t0Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbbz4+Ml18MCkrMjg+PjJdJjEyN10ocyxvKTtpZigoYVtsPj4wXSYxKT09MCl7YVtsKzE+PjBdPTA7YVtsPj4wXT0wfWVsc2V7YVtjW2wrOD4+Ml0+PjBdPTA7Y1tsKzQ+PjJdPTB9aWcobCk7Y1tsKzA+PjJdPWNbcyswPj4yXTtjW2wrND4+Ml09Y1tzKzQ+PjJdO2NbbCs4Pj4yXT1jW3MrOD4+Ml07Y1tzKzA+PjJdPTA7Y1tzKzQ+PjJdPTA7Y1tzKzg+PjJdPTB9YVtnPj4wXT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7YVtoPj4wXT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7bWNbY1soY1tvPj4yXXwwKSsyMD4+Ml0mMTI3XShwLG8pO2lmKChhW2o+PjBdJjEpPT0wKXthW2orMT4+MF09MDthW2o+PjBdPTB9ZWxzZXthW2Nbais4Pj4yXT4+MF09MDtjW2orND4+Ml09MH1pZyhqKTtjW2orMD4+Ml09Y1twKzA+PjJdO2Nbais0Pj4yXT1jW3ArND4+Ml07Y1tqKzg+PjJdPWNbcCs4Pj4yXTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDttY1tjWyhjW28+PjJdfDApKzI0Pj4yXSYxMjddKHksbyk7aWYoKGFbaz4+MF0mMSk9PTApe2FbaysxPj4wXT0wO2Fbaz4+MF09MH1lbHNle2FbY1trKzg+PjJdPj4wXT0wO2Nbays0Pj4yXT0wfWlnKGspO2NbayswPj4yXT1jW3krMD4+Ml07Y1trKzQ+PjJdPWNbeSs0Pj4yXTtjW2srOD4+Ml09Y1t5Kzg+PjJdO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2I9b2NbY1soY1tvPj4yXXwwKSszNj4+Ml0mMTI3XShvKXwwO2NbbT4+Ml09YjtpPW47cmV0dXJufX1mdW5jdGlvbiBBayhkLGUsZixnLGgsaixrLGwsbSxuLG8scCxxLHIscyl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7cT1xfDA7cj1yfDA7cz1zfDA7dmFyIHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MDt0PWk7Y1tmPj4yXT1kO3Y9cisxfDA7dz1yKzh8MDt1PXIrNHwwO3g9KGcmNTEyfDApPT0wO0Q9cSsxfDA7SD1xKzh8MDtJPXErNHwwO0E9KHN8MCk+MDtCPXArMXwwO0U9cCs4fDA7eT1wKzR8MDtDPWsrOHwwO3o9MC1zfDA7Sj0wO2Rve3N3aXRjaChhW20rSj4+MF18MCl7Y2FzZSAwOntjW2U+PjJdPWNbZj4+Ml07YnJlYWt9O2Nhc2UgNDp7Sz1jW2Y+PjJdfDA7aD1sP2grMXwwOmg7YTpkb3tpZihoPj4+MDxqPj4+MCl7TD1oO3doaWxlKDEpe049YVtMPj4wXXwwO2lmKCEoTjw8MjQ+PjI0Pi0xKSl7YnJlYWsgYX1NPUwrMXwwO2lmKChiWyhjW0M+PjJdfDApKyhOPDwyND4+MjQ8PDEpPj4xXSYyMDQ4KT09MCl7YnJlYWsgYX1pZihNPj4+MDxqPj4+MCl7TD1NfWVsc2V7TD1NO2JyZWFrfX19ZWxzZXtMPWh9fXdoaWxlKDApO009TDtpZihBKXtpZihMPj4+MD5oPj4+MCl7Tj1oKygwLU0pfDA7Tj1OPj4+MDx6Pj4+MD96Ok47TT1OK3N8MDtRPUs7UD1MO089czt3aGlsZSgxKXtQPVArIC0xfDA7Uj1hW1A+PjBdfDA7Y1tmPj4yXT1RKzE7YVtRPj4wXT1SO089TysgLTF8MDtRPShPfDApPjA7aWYoIShQPj4+MD5oPj4+MCZRKSl7YnJlYWt9UT1jW2Y+PjJdfDB9TD1MK058MDtpZihRKXtHPTMyfWVsc2V7Tj0wfX1lbHNle009cztHPTMyfWlmKChHfDApPT0zMil7Rz0wO049eGNbY1soY1trPj4yXXwwKSsyOD4+Ml0mNjNdKGssNDgpfDB9Tz1jW2Y+PjJdfDA7Y1tmPj4yXT1PKzE7aWYoKE18MCk+MCl7ZG97YVtPPj4wXT1OO009TSsgLTF8MDtPPWNbZj4+Ml18MDtjW2Y+PjJdPU8rMX13aGlsZSgoTXwwKT4wKX1hW08+PjBdPW59aWYoKEx8MCk9PShofDApKXtRPXhjW2NbKGNbaz4+Ml18MCkrMjg+PjJdJjYzXShrLDQ4KXwwO1I9Y1tmPj4yXXwwO2NbZj4+Ml09UisxO2FbUj4+MF09UX1lbHNle049YVtwPj4wXXwwO009KE4mMSk9PTA7aWYoTSl7Tj0oTiYyNTUpPj4+MX1lbHNle049Y1t5Pj4yXXwwfWlmKChOfDApPT0wKXtNPS0xO049MDtPPTB9ZWxzZXtpZihNKXtNPUJ9ZWxzZXtNPWNbRT4+Ml18MH1NPWFbTT4+MF18MDtOPTA7Tz0wfXdoaWxlKDEpe2lmKChPfDApPT0oTXwwKSl7UD1jW2Y+PjJdfDA7Y1tmPj4yXT1QKzE7YVtQPj4wXT1vO049TisxfDA7UD1hW3A+PjBdfDA7Tz0oUCYxKT09MDtpZihPKXtQPShQJjI1NSk+Pj4xfWVsc2V7UD1jW3k+PjJdfDB9aWYoTj4+PjA8UD4+PjApe2lmKE8pe009Qn1lbHNle009Y1tFPj4yXXwwfWlmKChhW00rTj4+MF18MCk9PTEyNyl7TT0tMTtPPTB9ZWxzZXtpZihPKXtNPUJ9ZWxzZXtNPWNbRT4+Ml18MH1NPWFbTStOPj4wXXwwO089MH19ZWxzZXtPPTB9fUw9TCsgLTF8MDtRPWFbTD4+MF18MDtSPWNbZj4+Ml18MDtjW2Y+PjJdPVIrMTthW1I+PjBdPVE7aWYoKEx8MCk9PShofDApKXticmVha31lbHNle089TysxfDB9fX1MPWNbZj4+Ml18MDtpZigoS3wwKSE9KEx8MCk/KEY9TCsgLTF8MCxGPj4+MD5LPj4+MCk6MCl7TD1GO2Rve1I9YVtLPj4wXXwwO2FbSz4+MF09YVtMPj4wXXwwO2FbTD4+MF09UjtLPUsrMXwwO0w9TCsgLTF8MH13aGlsZShLPj4+MDxMPj4+MCl9YnJlYWt9O2Nhc2UgMjp7TD1hW3E+PjBdfDA7TT0oTCYxKT09MDtpZihNKXtLPShMJjI1NSk+Pj4xfWVsc2V7Sz1jW0k+PjJdfDB9aWYoISgoS3wwKT09MHx4KSl7aWYoTSl7Sz1EO0w9KEwmMjU1KT4+PjF9ZWxzZXtLPWNbSD4+Ml18MDtMPWNbST4+Ml18MH1MPUsrTHwwO009Y1tmPj4yXXwwO2lmKChLfDApIT0oTHwwKSl7ZG97YVtNPj4wXT1hW0s+PjBdfDA7Sz1LKzF8MDtNPU0rMXwwfXdoaWxlKChLfDApIT0oTHwwKSl9Y1tmPj4yXT1NfWJyZWFrfTtjYXNlIDM6e0w9YVtyPj4wXXwwO0s9KEwmMSk9PTA7aWYoSyl7TD0oTCYyNTUpPj4+MX1lbHNle0w9Y1t1Pj4yXXwwfWlmKChMfDApIT0wKXtpZihLKXtLPXZ9ZWxzZXtLPWNbdz4+Ml18MH1RPWFbSz4+MF18MDtSPWNbZj4+Ml18MDtjW2Y+PjJdPVIrMTthW1I+PjBdPVF9YnJlYWt9O2Nhc2UgMTp7Y1tlPj4yXT1jW2Y+PjJdO1E9eGNbY1soY1trPj4yXXwwKSsyOD4+Ml0mNjNdKGssMzIpfDA7Uj1jW2Y+PjJdfDA7Y1tmPj4yXT1SKzE7YVtSPj4wXT1RO2JyZWFrfTtkZWZhdWx0Ont9fUo9SisxfDB9d2hpbGUoKEp8MCkhPTQpO2s9YVtyPj4wXXwwO3g9KGsmMSk9PTA7aWYoeCl7cj0oayYyNTUpPj4+MX1lbHNle3I9Y1t1Pj4yXXwwfWlmKHI+Pj4wPjEpe2lmKHgpe3U9KGsmMjU1KT4+PjF9ZWxzZXt2PWNbdz4+Ml18MDt1PWNbdT4+Ml18MH13PXYrMXwwO3U9dit1fDA7dj1jW2Y+PjJdfDA7aWYoKHd8MCkhPSh1fDApKXtkb3thW3Y+PjBdPWFbdz4+MF18MDt3PXcrMXwwO3Y9disxfDB9d2hpbGUoKHd8MCkhPSh1fDApKX1jW2Y+PjJdPXZ9Zz1nJjE3NjtpZigoZ3wwKT09MTYpe2k9dDtyZXR1cm59ZWxzZSBpZigoZ3wwKT09MzIpe2NbZT4+Ml09Y1tmPj4yXTtpPXQ7cmV0dXJufWVsc2V7Y1tlPj4yXT1kO2k9dDtyZXR1cm59fWZ1bmN0aW9uIEJrKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO3A9aTtpPWkrMTYwfDA7eD1wO3Q9cCsxNDB8MDtzPXArMTUyfDA7cj1wKzE1M3wwO3E9cCsxMTJ8MDt2PXArMTAwfDA7ZD1wKzEyOHwwO3o9cCsxMjR8MDt3PXArMTQ0fDA7dT1wKzE0OHwwO289Y1tnKzI4Pj4yXXwwO0Q9bys0fDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1t4Pj4yXT0xMzQ1NjtjW3grND4+Ml09MjA4O2NbeCs4Pj4yXT0wO2NnKDEzNDU2LHgpfXk9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0E9Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktQT4+Mj4+PjA+eT4+PjA/KGw9Y1tBKyh5PDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7QT1hW2o+PjBdfDA7eT0oQSYxKT09MDtpZih5KXtBPShBJjI1NSk+Pj4xfWVsc2V7QT1jW2orND4+Ml18MH1pZigoQXwwKT09MCl7eT0wfWVsc2V7aWYoeSl7eT1qKzF8MH1lbHNle3k9Y1tqKzg+PjJdfDB9eT1hW3k+PjBdfDA7eT15PDwyND4+MjQ9PSh4Y1tjWyhjW2w+PjJdfDApKzI4Pj4yXSY2M10obCw0NSl8MCk8PDI0Pj4yNH1jW3Q+PjJdPTA7Y1txKzA+PjJdPTA7Y1txKzQ+PjJdPTA7Y1txKzg+PjJdPTA7Y1t2KzA+PjJdPTA7Y1t2KzQ+PjJdPTA7Y1t2Kzg+PjJdPTA7Y1tkKzA+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tkKzg+PjJdPTA7emsoZix5LG8sdCxzLHIscSx2LGQseik7Zj1hW2o+PjBdfDA7QT0oZiYxKT09MDtpZihBKXtCPShmJjI1NSk+Pj4xfWVsc2V7Qj1jW2orND4+Ml18MH16PWNbej4+Ml18MDtpZigoQnwwKT4oenwwKSl7aWYoQSl7Qj0oZiYyNTUpPj4+MX1lbHNle0I9Y1tqKzQ+PjJdfDB9Qz1hW2Q+PjBdfDA7aWYoKEMmMSk9PTApe0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbZCs0Pj4yXXwwfUQ9YVt2Pj4wXXwwO2lmKChEJjEpPT0wKXtEPShEJjI1NSk+Pj4xfWVsc2V7RD1jW3YrND4+Ml18MH1CPUMrKEItejw8MXwxKStEfDB9ZWxzZXtCPWFbZD4+MF18MDtpZigoQiYxKT09MCl7Qj0oQiYyNTUpPj4+MX1lbHNle0I9Y1tkKzQ+PjJdfDB9Qz1hW3Y+PjBdfDA7aWYoKEMmMSk9PTApe0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbdis0Pj4yXXwwfUI9QisyK0N8MH1CPUIrenwwO2lmKEI+Pj4wPjEwMCl7eD11bihCKXwwO2lmKCh4fDApPT0wKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1lbHNle0I9eH19ZWxzZXtCPTB9aWYoQSl7QT1qKzF8MDtqPShmJjI1NSk+Pj4xfWVsc2V7QT1jW2orOD4+Ml18MDtqPWNbais0Pj4yXXwwfUFrKHgsdyx1LGNbZys0Pj4yXXwwLEEsQStqfDAsbCx5LHQsYVtzPj4wXXwwLGFbcj4+MF18MCxxLHYsZCx6KTtXYyhiLGNbZT4+Ml18MCx4LGNbdz4+Ml18MCxjW3U+PjJdfDAsZyxoKTtpZigoQnwwKSE9MCl7dm4oQil9aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tkKzg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbdj4+MF0mMSk9PTApPyhuPWNbdis4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhW3E+PjBdJjEpPT0wKT8oaz1jW3ErOD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9Qz1vKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXtpPXA7cmV0dXJufWxjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKTtpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIENrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIERrKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBFayhiLGQsZSxmLGcsaixsKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtsPStsO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7cT1pO2k9aSs5NzZ8MDtBPXE7Qz1xKzg2OHwwO0U9cSs4MTZ8MDtCPXErNDE2fDA7dD1xKzQwOHwwO3M9cSs4NjB8MDtyPXErNDAwfDA7eD1xKzgyNHwwO2Q9cSs4MzZ8MDt3PXErODQ4fDA7Rj1xKzgyMHwwO3Y9cSs0MDR8MDt1PXErODY0fDA7Y1tFPj4yXT1DO2hbaz4+M109bDtjW0E+PjJdPWNbaz4+Ml07Y1tBKzQ+PjJdPWNbays0Pj4yXTtDPWxiKEN8MCwxMDAsMTMyMjQsQXwwKXwwO2lmKEM+Pj4wPjk5KXtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9Qz1jWzMzNDBdfDA7aFtrPj4zXT1sO2NbQT4+Ml09Y1trPj4yXTtjW0ErND4+Ml09Y1trKzQ+PjJdO0M9Q2koRSxDLDEzMjI0LEEpfDA7ej1jW0U+PjJdfDA7aWYoKHp8MCk9PTApe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfUI9dW4oQzw8Mil8MDtpZigoQnwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9ZWxzZXt5PUJ9fWVsc2V7eT0wO3o9MH1EPWNbZysyOD4+Ml18MDtIPUQrNHwwO2NbSD4+Ml09KGNbSD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbQT4+Ml09MTM0NDg7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMzQ0OCxBKX1HPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtIPWNbRCs4Pj4yXXwwO2lmKChjW0QrMTI+PjJdfDApLUg+PjI+Pj4wPkc+Pj4wPyhwPWNbSCsoRzw8Mik+PjJdfDAsKHB8MCkhPTApOjApe0g9Y1tFPj4yXXwwO3VjW2NbKGNbcD4+Ml18MCkrNDg+PjJdJjMxXShwLEgsSCtDfDAsQil8MDtpZigoQ3wwKT09MCl7RT0wfWVsc2V7RT0oYVtjW0U+PjJdPj4wXXwwKT09NDV9Y1t0Pj4yXT0wO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbZCswPj4yXT0wO2NbZCs0Pj4yXT0wO2NbZCs4Pj4yXT0wO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wO0ZrKGYsRSxELHQscyxyLHgsZCx3LEYpO2Y9Y1tGPj4yXXwwO2lmKChDfDApPihmfDApKXtGPWFbdz4+MF18MDtpZigoRiYxKT09MCl7Rj0oRiYyNTUpPj4+MX1lbHNle0Y9Y1t3KzQ+PjJdfDB9Rz1hW2Q+PjBdfDA7aWYoKEcmMSk9PTApe0c9KEcmMjU1KT4+PjF9ZWxzZXtHPWNbZCs0Pj4yXXwwfUY9RisoQy1mPDwxfDEpK0d8MH1lbHNle0Y9YVt3Pj4wXXwwO2lmKChGJjEpPT0wKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW3crND4+Ml18MH1HPWFbZD4+MF18MDtpZigoRyYxKT09MCl7Rz0oRyYyNTUpPj4+MX1lbHNle0c9Y1tkKzQ+PjJdfDB9Rj1GKzIrR3wwfUY9RitmfDA7aWYoRj4+PjA+MTAwKXtBPXVuKEY8PDIpfDA7aWYoKEF8MCk9PTApe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfWVsc2V7Rj1BfX1lbHNle0Y9MH1HayhBLHYsdSxjW2crND4+Ml18MCxCLEIrKEM8PDIpfDAscCxFLHQsY1tzPj4yXXwwLGNbcj4+Ml18MCx4LGQsdyxmKTtMaShiLGNbZT4+Ml18MCxBLGNbdj4+Ml18MCxjW3U+PjJdfDAsZyxqKTtpZigoRnwwKSE9MCl7dm4oRil9aWYoISgoYVt3Pj4wXSYxKT09MCk/KG49Y1t3Kzg+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbZD4+MF0mMSk9PTApPyhvPWNbZCs4Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhW3g+PjBdJjEpPT0wKT8obT1jW3grOD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9Rz1EKzR8MDtIPWNbRz4+Ml18MDtjW0c+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0Q+PjJdfDApKzg+PjJdJjI1NV0oRCl9aWYoKHl8MCkhPTApe3ZuKHkpfWlmKCh6fDApPT0wKXtpPXE7cmV0dXJufXZuKHopO2k9cTtyZXR1cm59SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gRmsoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7bj1pO2k9aSsxMjh8MDtBPW47eD1uKzEyfDA7bz1uKzQwfDA7dj1uKzUyfDA7dz1uKzU2fDA7dT1uKzE2fDA7ej1uKzI4fDA7cj1uKzY4fDA7cT1uKzcyfDA7dD1uKzg0fDA7cz1uKzg4fDA7cD1uKzEwMHwwO3k9bisxMTJ8MDtpZihiKXtpZighKChjWzMyNjBdfDApPT0tMSkpe2NbQT4+Ml09MTMwNDA7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMzA0MCxBKX1xPShjWzEzMDQ0Pj4yXXwwKSsgLTF8MDtwPWNbZSs4Pj4yXXwwO2lmKCEoKGNbZSsxMj4+Ml18MCktcD4+Mj4+PjA+cT4+PjApKXtiPVhhKDQpfDA7Y1tiPj4yXT0yMTMwNDt3YihifDAsMjEzNzYsMTk2KX1wPWNbcCsocTw8Mik+PjJdfDA7aWYoKHB8MCk9PTApe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfXE9Y1twPj4yXXwwO2lmKGQpe21jW2NbcSs0ND4+Ml0mMTI3XSh4LHApO2I9Y1t4Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbcD4+Ml18MCkrMzI+PjJdJjEyN10obyxwKTtpZigoYVtsPj4wXSYxKT09MCl7Y1tsKzQ+PjJdPTA7YVtsPj4wXT0wfWVsc2V7Y1tjW2wrOD4+Ml0+PjJdPTA7Y1tsKzQ+PjJdPTB9b2cobCk7Y1tsKzA+PjJdPWNbbyswPj4yXTtjW2wrND4+Ml09Y1tvKzQ+PjJdO2NbbCs4Pj4yXT1jW28rOD4+Ml07Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTB9ZWxzZXttY1tjW3ErNDA+PjJdJjEyN10odixwKTtiPWNbdj4+Ml18MDthW2Y+PjBdPWI7YVtmKzE+PjBdPWI+Pjg7YVtmKzI+PjBdPWI+PjE2O2FbZiszPj4wXT1iPj4yNDttY1tjWyhjW3A+PjJdfDApKzI4Pj4yXSYxMjddKHcscCk7aWYoKGFbbD4+MF0mMSk9PTApe2NbbCs0Pj4yXT0wO2FbbD4+MF09MH1lbHNle2NbY1tsKzg+PjJdPj4yXT0wO2NbbCs0Pj4yXT0wfW9nKGwpO2NbbCswPj4yXT1jW3crMD4+Ml07Y1tsKzQ+PjJdPWNbdys0Pj4yXTtjW2wrOD4+Ml09Y1t3Kzg+PjJdO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wfWNbZz4+Ml09b2NbY1soY1twPj4yXXwwKSsxMj4+Ml0mMTI3XShwKXwwO2NbaD4+Ml09b2NbY1soY1twPj4yXXwwKSsxNj4+Ml0mMTI3XShwKXwwO21jW2NbKGNbcD4+Ml18MCkrMjA+PjJdJjEyN10odSxwKTtpZigoYVtqPj4wXSYxKT09MCl7YVtqKzE+PjBdPTA7YVtqPj4wXT0wfWVsc2V7YVtjW2orOD4+Ml0+PjBdPTA7Y1tqKzQ+PjJdPTB9aWcoaik7Y1tqKzA+PjJdPWNbdSswPj4yXTtjW2orND4+Ml09Y1t1KzQ+PjJdO2Nbais4Pj4yXT1jW3UrOD4+Ml07Y1t1KzA+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7bWNbY1soY1twPj4yXXwwKSsyND4+Ml0mMTI3XSh6LHApO2lmKChhW2s+PjBdJjEpPT0wKXtjW2srND4+Ml09MDthW2s+PjBdPTB9ZWxzZXtjW2Nbays4Pj4yXT4+Ml09MDtjW2srND4+Ml09MH1vZyhrKTtjW2srMD4+Ml09Y1t6KzA+PjJdO2Nbays0Pj4yXT1jW3orND4+Ml07Y1trKzg+PjJdPWNbeis4Pj4yXTtjW3orMD4+Ml09MDtjW3orND4+Ml09MDtjW3orOD4+Ml09MDtiPW9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MDtjW20+PjJdPWI7aT1uO3JldHVybn1lbHNle2lmKCEoKGNbMzI0NF18MCk9PS0xKSl7Y1tBPj4yXT0xMjk3NjtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEyOTc2LEEpfXU9KGNbMTI5ODA+PjJdfDApKyAtMXwwO289Y1tlKzg+PjJdfDA7aWYoISgoY1tlKzEyPj4yXXwwKS1vPj4yPj4+MD51Pj4+MCkpe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfW89Y1tvKyh1PDwyKT4+Ml18MDtpZigob3wwKT09MCl7Yj1YYSg0KXwwO2NbYj4+Ml09MjEzMDQ7d2IoYnwwLDIxMzc2LDE5Nil9ZT1jW28+PjJdfDA7aWYoZCl7bWNbY1tlKzQ0Pj4yXSYxMjddKHIsbyk7Yj1jW3I+PjJdfDA7YVtmPj4wXT1iO2FbZisxPj4wXT1iPj44O2FbZisyPj4wXT1iPj4xNjthW2YrMz4+MF09Yj4+MjQ7bWNbY1soY1tvPj4yXXwwKSszMj4+Ml0mMTI3XShxLG8pO2lmKChhW2w+PjBdJjEpPT0wKXtjW2wrND4+Ml09MDthW2w+PjBdPTB9ZWxzZXtjW2NbbCs4Pj4yXT4+Ml09MDtjW2wrND4+Ml09MH1vZyhsKTtjW2wrMD4+Ml09Y1txKzA+PjJdO2NbbCs0Pj4yXT1jW3ErND4+Ml07Y1tsKzg+PjJdPWNbcSs4Pj4yXTtjW3ErMD4+Ml09MDtjW3ErND4+Ml09MDtjW3ErOD4+Ml09MH1lbHNle21jW2NbZSs0MD4+Ml0mMTI3XSh0LG8pO2I9Y1t0Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbbz4+Ml18MCkrMjg+PjJdJjEyN10ocyxvKTtpZigoYVtsPj4wXSYxKT09MCl7Y1tsKzQ+PjJdPTA7YVtsPj4wXT0wfWVsc2V7Y1tjW2wrOD4+Ml0+PjJdPTA7Y1tsKzQ+PjJdPTB9b2cobCk7Y1tsKzA+PjJdPWNbcyswPj4yXTtjW2wrND4+Ml09Y1tzKzQ+PjJdO2NbbCs4Pj4yXT1jW3MrOD4+Ml07Y1tzKzA+PjJdPTA7Y1tzKzQ+PjJdPTA7Y1tzKzg+PjJdPTB9Y1tnPj4yXT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7Y1toPj4yXT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7bWNbY1soY1tvPj4yXXwwKSsyMD4+Ml0mMTI3XShwLG8pO2lmKChhW2o+PjBdJjEpPT0wKXthW2orMT4+MF09MDthW2o+PjBdPTB9ZWxzZXthW2Nbais4Pj4yXT4+MF09MDtjW2orND4+Ml09MH1pZyhqKTtjW2orMD4+Ml09Y1twKzA+PjJdO2Nbais0Pj4yXT1jW3ArND4+Ml07Y1tqKzg+PjJdPWNbcCs4Pj4yXTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDttY1tjWyhjW28+PjJdfDApKzI0Pj4yXSYxMjddKHksbyk7aWYoKGFbaz4+MF0mMSk9PTApe2Nbays0Pj4yXT0wO2Fbaz4+MF09MH1lbHNle2NbY1trKzg+PjJdPj4yXT0wO2Nbays0Pj4yXT0wfW9nKGspO2NbayswPj4yXT1jW3krMD4+Ml07Y1trKzQ+PjJdPWNbeSs0Pj4yXTtjW2srOD4+Ml09Y1t5Kzg+PjJdO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2I9b2NbY1soY1tvPj4yXXwwKSszNj4+Ml0mMTI3XShvKXwwO2NbbT4+Ml09YjtpPW47cmV0dXJufX1mdW5jdGlvbiBHayhiLGQsZSxmLGcsaCxqLGssbCxtLG4sbyxwLHEscil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7cT1xfDA7cj1yfDA7dmFyIHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wO3M9aTtjW2U+PjJdPWI7dD1xKzR8MDt1PXErOHwwO3k9KGYmNTEyfDApPT0wO3g9cCs0fDA7QT1wKzh8MDt3PShyfDApPjA7Qj1vKzF8MDtDPW8rOHwwO0Q9bys0fDA7RT0wO2Rve3N3aXRjaChhW2wrRT4+MF18MCl7Y2FzZSAyOntGPWFbcD4+MF18MDtIPShGJjEpPT0wO2lmKEgpe0c9KEYmMjU1KT4+PjF9ZWxzZXtHPWNbeD4+Ml18MH1pZighKChHfDApPT0wfHkpKXtpZihIKXtIPXg7ST0oRiYyNTUpPj4+MX1lbHNle0g9Y1tBPj4yXXwwO0k9Y1t4Pj4yXXwwfUc9SCsoSTw8Mil8MDtGPWNbZT4+Ml18MDtpZigoSHwwKSE9KEd8MCkpe0o9KEgrKEkrIC0xPDwyKSsoMC1IKXwwKT4+PjI7ST1GO3doaWxlKDEpe2NbST4+Ml09Y1tIPj4yXTtIPUgrNHwwO2lmKChIfDApPT0oR3wwKSl7YnJlYWt9ST1JKzR8MH1GPUYrKEorMTw8Mil8MH1jW2U+PjJdPUZ9YnJlYWt9O2Nhc2UgMzp7Rz1hW3E+PjBdfDA7Rj0oRyYxKT09MDtpZihGKXtHPShHJjI1NSk+Pj4xfWVsc2V7Rz1jW3Q+PjJdfDB9aWYoKEd8MCkhPTApe2lmKEYpe0Y9dH1lbHNle0Y9Y1t1Pj4yXXwwfUw9Y1tGPj4yXXwwO009Y1tlPj4yXXwwO2NbZT4+Ml09TSs0O2NbTT4+Ml09TH1icmVha307Y2FzZSA0OntGPWNbZT4+Ml18MDtnPWs/Zys0fDA6ZzthOmRve2lmKGc+Pj4wPGg+Pj4wKXtHPWc7d2hpbGUoMSl7SD1HKzR8MDtpZighKGhjW2NbKGNbaj4+Ml18MCkrMTI+PjJdJjYzXShqLDIwNDgsY1tHPj4yXXwwKXwwKSl7YnJlYWsgYX1pZihIPj4+MDxoPj4+MCl7Rz1IfWVsc2V7Rz1IO2JyZWFrfX19ZWxzZXtHPWd9fXdoaWxlKDApO2lmKHcpe2lmKEc+Pj4wPmc+Pj4wKXtIPWNbZT4+Ml18MDtJPXI7d2hpbGUoMSl7Rz1HKyAtNHwwO0s9SCs0fDA7Y1tIPj4yXT1jW0c+PjJdO0k9SSsgLTF8MDtKPShJfDApPjA7aWYoIShHPj4+MD5nPj4+MCZKKSl7YnJlYWt9ZWxzZXtIPUt9fWNbZT4+Ml09SztpZihKKXt6PTM0fWVsc2V7Y1tlPj4yXT1IKzh9fWVsc2V7ST1yO3o9MzR9aWYoKHp8MCk9PTM0KXt6PTA7Sj14Y1tjWyhjW2o+PjJdfDApKzQ0Pj4yXSY2M10oaiw0OCl8MDtLPWNbZT4+Ml18MDtNPUsrNHwwO2NbZT4+Ml09TTtpZigoSXwwKT4wKXtIPUs7TD1JO3doaWxlKDEpe2NbSD4+Ml09SjtMPUwrIC0xfDA7aWYoKEx8MCk8PTApe2JyZWFrfWVsc2V7SD1NO009TSs0fDB9fWNbZT4+Ml09SysoSSsxPDwyKTtLPUsrKEk8PDIpfDB9fWNbSz4+Ml09bX1pZigoR3wwKT09KGd8MCkpe0s9eGNbY1soY1tqPj4yXXwwKSs0ND4+Ml0mNjNdKGosNDgpfDA7TT1jW2U+PjJdfDA7TD1NKzR8MDtjW2U+PjJdPUw7Y1tNPj4yXT1LfWVsc2V7ST1hW28+PjBdfDA7SD0oSSYxKT09MDtpZihIKXtJPShJJjI1NSk+Pj4xfWVsc2V7ST1jW0Q+PjJdfDB9aWYoKEl8MCk9PTApe0g9LTF9ZWxzZXtpZihIKXtIPUJ9ZWxzZXtIPWNbQz4+Ml18MH1IPWFbSD4+MF18MH1JPWNbZT4+Ml18MDtLPTA7Sj0wO3doaWxlKDEpe2lmKChKfDApPT0oSHwwKSl7Sj1JKzR8MDtjW2U+PjJdPUo7Y1tJPj4yXT1uO0s9SysxfDA7TD1hW28+PjBdfDA7ST0oTCYxKT09MDtpZihJKXtMPShMJjI1NSk+Pj4xfWVsc2V7TD1jW0Q+PjJdfDB9aWYoSz4+PjA8TD4+PjApe2lmKEkpe0g9Qn1lbHNle0g9Y1tDPj4yXXwwfWlmKChhW0grSz4+MF18MCk9PTEyNyl7ST1KO0g9LTE7Sj0wfWVsc2V7aWYoSSl7SD1CfWVsc2V7SD1jW0M+PjJdfDB9ST1KO0g9YVtIK0s+PjBdfDA7Sj0wfX1lbHNle0k9SjtKPTB9fUc9RysgLTR8MDtNPWNbRz4+Ml18MDtMPUkrNHwwO2NbZT4+Ml09TDtjW0k+PjJdPU07aWYoKEd8MCk9PShnfDApKXticmVha31lbHNle0k9TDtKPUorMXwwfX19aWYoKEZ8MCkhPShMfDApPyh2PUwrIC00fDAsdj4+PjA+Rj4+PjApOjApe0c9djtkb3tNPWNbRj4+Ml18MDtjW0Y+PjJdPWNbRz4+Ml07Y1tHPj4yXT1NO0Y9Ris0fDA7Rz1HKyAtNHwwfXdoaWxlKEY+Pj4wPEc+Pj4wKX1icmVha307Y2FzZSAxOntjW2Q+PjJdPWNbZT4+Ml07TD14Y1tjWyhjW2o+PjJdfDApKzQ0Pj4yXSY2M10oaiwzMil8MDtNPWNbZT4+Ml18MDtjW2U+PjJdPU0rNDtjW00+PjJdPUw7YnJlYWt9O2Nhc2UgMDp7Y1tkPj4yXT1jW2U+PjJdO2JyZWFrfTtkZWZhdWx0Ont9fUU9RSsxfDB9d2hpbGUoKEV8MCkhPTQpO3c9YVtxPj4wXXwwO3Y9KHcmMSk9PTA7aWYodil7cT0odyYyNTUpPj4+MX1lbHNle3E9Y1t0Pj4yXXwwfWlmKHE+Pj4wPjEpe2lmKHYpe3Y9dDtxPSh3JjI1NSk+Pj4xfWVsc2V7dj1jW3U+PjJdfDA7cT1jW3Q+PjJdfDB9dz12KzR8MDt1PXYrKHE8PDIpfDA7dD1jW2U+PjJdfDA7aWYoKHd8MCkhPSh1fDApKXtxPSh2KyhxKyAtMTw8MikrKDAtdyl8MCk+Pj4yO3Y9dDt3aGlsZSgxKXtjW3Y+PjJdPWNbdz4+Ml07dz13KzR8MDtpZigod3wwKT09KHV8MCkpe2JyZWFrfWVsc2V7dj12KzR8MH19dD10KyhxKzE8PDIpfDB9Y1tlPj4yXT10fWY9ZiYxNzY7aWYoKGZ8MCk9PTE2KXtpPXM7cmV0dXJufWVsc2UgaWYoKGZ8MCk9PTMyKXtjW2Q+PjJdPWNbZT4+Ml07aT1zO3JldHVybn1lbHNle2NbZD4+Ml09YjtpPXM7cmV0dXJufX1mdW5jdGlvbiBIayhiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtwPWk7aT1pKzQ2NHwwO3g9cDt0PXArNDM2fDA7cz1wKzQ0MHwwO3I9cCs0NDR8MDtxPXArNDEyfDA7dj1wKzQwMHwwO2Q9cCs0MjR8MDt6PXArNDQ4fDA7dz1wKzQ1MnwwO3U9cCs0NTZ8MDtvPWNbZysyOD4+Ml18MDtEPW8rNHwwO2NbRD4+Ml09KGNbRD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbeD4+Ml09MTM0NDg7Y1t4KzQ+PjJdPTIwODtjW3grOD4+Ml09MDtjZygxMzQ0OCx4KX15PShjWzEzNDUyPj4yXXwwKSsgLTF8MDtBPWNbbys4Pj4yXXwwO2lmKChjW28rMTI+PjJdfDApLUE+PjI+Pj4wPnk+Pj4wPyhsPWNbQSsoeTw8Mik+PjJdfDAsKGx8MCkhPTApOjApe0E9YVtqPj4wXXwwO3k9KEEmMSk9PTA7aWYoeSl7QT0oQSYyNTUpPj4+MX1lbHNle0E9Y1tqKzQ+PjJdfDB9aWYoKEF8MCk9PTApe3k9MH1lbHNle2lmKHkpe3k9ais0fDB9ZWxzZXt5PWNbais4Pj4yXXwwfXk9Y1t5Pj4yXXwwO3k9KHl8MCk9PSh4Y1tjWyhjW2w+PjJdfDApKzQ0Pj4yXSY2M10obCw0NSl8MCl9Y1t0Pj4yXT0wO2NbcSswPj4yXT0wO2NbcSs0Pj4yXT0wO2NbcSs4Pj4yXT0wO2NbdiswPj4yXT0wO2Nbdis0Pj4yXT0wO2Nbdis4Pj4yXT0wO2NbZCswPj4yXT0wO2NbZCs0Pj4yXT0wO2NbZCs4Pj4yXT0wO0ZrKGYseSxvLHQscyxyLHEsdixkLHopO2Y9YVtqPj4wXXwwO0E9KGYmMSk9PTA7aWYoQSl7Qj0oZiYyNTUpPj4+MX1lbHNle0I9Y1tqKzQ+PjJdfDB9ej1jW3o+PjJdfDA7aWYoKEJ8MCk+KHp8MCkpe2lmKEEpe0I9KGYmMjU1KT4+PjF9ZWxzZXtCPWNbais0Pj4yXXwwfUM9YVtkPj4wXXwwO2lmKChDJjEpPT0wKXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW2QrND4+Ml18MH1EPWFbdj4+MF18MDtpZigoRCYxKT09MCl7RD0oRCYyNTUpPj4+MX1lbHNle0Q9Y1t2KzQ+PjJdfDB9Qj1DKyhCLXo8PDF8MSkrRHwwfWVsc2V7Qj1hW2Q+PjBdfDA7aWYoKEImMSk9PTApe0I9KEImMjU1KT4+PjF9ZWxzZXtCPWNbZCs0Pj4yXXwwfUM9YVt2Pj4wXXwwO2lmKChDJjEpPT0wKXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3YrND4+Ml18MH1CPUIrMitDfDB9Qj1CK3p8MDtpZihCPj4+MD4xMDApe3g9dW4oQjw8Mil8MDtpZigoeHwwKT09MCl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZWxzZXtCPXh9fWVsc2V7Qj0wfWlmKEEpe0E9ais0fDA7aj0oZiYyNTUpPj4+MX1lbHNle0E9Y1tqKzg+PjJdfDA7aj1jW2orND4+Ml18MH1Hayh4LHcsdSxjW2crND4+Ml18MCxBLEErKGo8PDIpfDAsbCx5LHQsY1tzPj4yXXwwLGNbcj4+Ml18MCxxLHYsZCx6KTtMaShiLGNbZT4+Ml18MCx4LGNbdz4+Ml18MCxjW3U+PjJdfDAsZyxoKTtpZigoQnwwKSE9MCl7dm4oQil9aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tkKzg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbdj4+MF0mMSk9PTApPyhuPWNbdis4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhW3E+PjBdJjEpPT0wKT8oaz1jW3ErOD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9Qz1vKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXtpPXA7cmV0dXJufWxjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKTtpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIElrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEprKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBLayhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Yj1pO2lmKChhW2Q+PjBdJjEpPT0wKXtkPWQrMXwwfWVsc2V7ZD1jW2QrOD4+Ml18MH1lPWRjKGR8MCwxKXwwO2k9YjtyZXR1cm4gZT4+PigoZXwwKSE9KC0xfDApJjEpfDB9ZnVuY3Rpb24gTGsoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7ZD1pO2k9aSsxNnwwO2o9ZDtjW2orMD4+Ml09MDtjW2orND4+Ml09MDtjW2orOD4+Ml09MDtrPWFbaD4+MF18MDtpZigoayYxKT09MCl7cD1oKzF8MDtoPShrJjI1NSk+Pj4xfWVsc2V7cD1jW2grOD4+Ml18MDtoPWNbaCs0Pj4yXXwwfW09cCtofDA7aWYocD4+PjA8bT4+PjApe249ais0fDA7bD1qKzF8MDtrPWorOHwwO3E9MDtkb3tvPWFbcD4+MF18MDtoPShxJjEpIT0wO2lmKGgpe3I9KGNbaj4+Ml0mLTIpKyAtMXwwO3E9Y1tuPj4yXXwwfWVsc2V7cj0xMDtxPShxJjI1NSk+Pj4xfWlmKChxfDApPT0ocnwwKSl7bGcoaixyLDEscixyLDApO2lmKChhW2o+PjBdJjEpPT0wKXtoPTE0fWVsc2V7aD0xNX19ZWxzZXtpZihoKXtoPTE1fWVsc2V7aD0xNH19aWYoKGh8MCk9PTE0KXthW2o+PjBdPShxPDwxKSsyO3I9bDtzPXErMXwwfWVsc2UgaWYoKGh8MCk9PTE1KXtyPWNbaz4+Ml18MDtzPXErMXwwO2Nbbj4+Ml09c31hW3IrcT4+MF09bzthW3Ircz4+MF09MDtwPXArMXwwO3E9YVtqPj4wXXwwfXdoaWxlKChwfDApIT0obXwwKSk7aD0oZXwwKT09LTE/LTE6ZTw8MTtlPShxJjEpPT0wP2w6Y1trPj4yXXwwfWVsc2V7aD0oZXwwKT09LTE/LTE6ZTw8MTtlPWorMXwwfWw9amIoaHwwLGZ8MCxnfDAsZXwwKXwwO2NbYiswPj4yXT0wO2NbYis0Pj4yXT0wO2NbYis4Pj4yXT0wO3M9Sm4obHwwKXwwO2s9bCtzfDA7YTpkb3tpZigoc3wwKT4wKXtmPWIrNHwwO2c9YisxfDA7ZT1iKzh8MDtuPTA7d2hpbGUoMSl7bT1hW2w+PjBdfDA7aD0obiYxKSE9MDtpZihoKXtvPShjW2I+PjJdJi0yKSsgLTF8MDtuPWNbZj4+Ml18MH1lbHNle289MTA7bj0obiYyNTUpPj4+MX1pZigobnwwKT09KG98MCkpe2xnKGIsbywxLG8sbywwKTtpZigoYVtiPj4wXSYxKT09MCl7aD0yOH1lbHNle2g9Mjl9fWVsc2V7aWYoaCl7aD0yOX1lbHNle2g9Mjh9fWlmKChofDApPT0yOCl7YVtiPj4wXT0objw8MSkrMjtwPWc7bz1uKzF8MH1lbHNlIGlmKChofDApPT0yOSl7cD1jW2U+PjJdfDA7bz1uKzF8MDtjW2Y+PjJdPW99YVtwK24+PjBdPW07YVtwK28+PjBdPTA7bD1sKzF8MDtpZigobHwwKT09KGt8MCkpe2JyZWFrIGF9bj1hW2I+PjBdfDB9fX13aGlsZSgwKTtpZigoYVtqPj4wXSYxKT09MCl7aT1kO3JldHVybn1iPWNbais4Pj4yXXwwO2lmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gTWsoYSxiKXthPWF8MDtiPWJ8MDthPWk7WWIoKChifDApPT0tMT8tMTpiPDwxKXwwKXwwO2k9YTtyZXR1cm59ZnVuY3Rpb24gTmsoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gT2soYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFBrKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDtiPWk7aWYoKGFbZD4+MF0mMSk9PTApe2Q9ZCsxfDB9ZWxzZXtkPWNbZCs4Pj4yXXwwfWU9ZGMoZHwwLDEpfDA7aT1iO3JldHVybiBlPj4+KChlfDApIT0oLTF8MCkmMSl8MH1mdW5jdGlvbiBRayhiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO2Q9aTtpPWkrMTc2fDA7bT1kO249ZCs0MHwwO2s9ZCsxNjh8MDtsPWQrMTcyfDA7bz1kKzE2fDA7cj1kKzh8MDtqPWQrMzJ8MDtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtjW3IrND4+Ml09MDtjW3I+PjJdPTE1MDcyO3M9YVtoPj4wXXwwO2lmKChzJjEpPT0wKXt3PWgrNHwwO2g9KHMmMjU1KT4+PjF9ZWxzZXt3PWNbaCs4Pj4yXXwwO2g9Y1toKzQ+PjJdfDB9dj13KyhoPDwyKXwwO0E9bTtjW0E+PjJdPTA7Y1tBKzQ+PjJdPTA7ZG97aWYodz4+PjA8dj4+PjApe3Q9biszMnwwO3U9bys0fDA7cz1vKzF8MDtoPW8rOHwwO3g9MTUwNzJ8MDt3aGlsZSgxKXtjW2w+PjJdPXc7QT0odGNbY1t4KzEyPj4yXSYzMV0ocixtLHcsdixsLG4sdCxrKXwwKT09Mjt4PWNbbD4+Ml18MDtpZihBfCh4fDApPT0od3wwKSl7YnJlYWt9aWYobj4+PjA8KGNbaz4+Ml18MCk+Pj4wKXt4PW47ZG97dz1hW3g+PjBdfDA7eT1hW28+PjBdfDA7ej0oeSYxKSE9MDtpZih6KXtwPShjW28+PjJdJi0yKSsgLTF8MDt5PWNbdT4+Ml18MH1lbHNle3A9MTA7eT0oeSYyNTUpPj4+MX1pZigoeXwwKT09KHB8MCkpe2xnKG8scCwxLHAscCwwKTtpZigoYVtvPj4wXSYxKT09MCl7cD0xOH1lbHNle3A9MTl9fWVsc2V7aWYoeil7cD0xOX1lbHNle3A9MTh9fWlmKChwfDApPT0xOCl7cD0wO2Fbbz4+MF09KHk8PDEpKzI7QT1zO3o9eSsxfDB9ZWxzZSBpZigocHwwKT09MTkpe3A9MDtBPWNbaD4+Ml18MDt6PXkrMXwwO2NbdT4+Ml09en1hW0EreT4+MF09dzthW0Erej4+MF09MDt4PXgrMXwwfXdoaWxlKHg+Pj4wPChjW2s+PjJdfDApPj4+MCk7dz1jW2w+PjJdfDB9ZWxzZXt3PXh9aWYoISh3Pj4+MDx2Pj4+MCkpe3A9MjQ7YnJlYWt9eD1jW3I+PjJdfDB9aWYoKHB8MCk9PTI0KXtxPShhW28+PjBdJjEpPT0wO2JyZWFrfW9rKDE0Mjk2KX1lbHNle3E9MX19d2hpbGUoMCk7aWYocSl7cD1vKzF8MH1lbHNle3A9Y1tvKzg+PjJdfDB9cD1qYigoKGV8MCk9PS0xPy0xOmU8PDEpfDAsZnwwLGd8MCxwfDApfDA7Y1tiKzA+PjJdPTA7Y1tiKzQ+PjJdPTA7Y1tiKzg+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1tqPj4yXT0xNTE3NjtBPUpuKHB8MCl8MDtxPXArQXwwO3o9bTtjW3o+PjJdPTA7Y1t6KzQ+PjJdPTA7YTpkb3tpZigoQXwwKT4wKXtlPXE7cj1uKzEyOHwwO2c9Yis0fDA7Zj1iKzh8MDtoPTE1MTc2fDA7d2hpbGUoMSl7Y1tsPj4yXT1wO0E9KHRjW2NbaCsxNj4+Ml0mMzFdKGosbSxwLChlLXB8MCk+MzI/cCszMnwwOnEsbCxuLHIsayl8MCk9PTI7aD1jW2w+PjJdfDA7aWYoQXwoaHwwKT09KHB8MCkpe2JyZWFrfWlmKG4+Pj4wPChjW2s+PjJdfDApPj4+MCl7cz1uO2Rve2g9Y1tzPj4yXXwwO3Q9YVtiPj4wXXwwO3U9KHQmMSkhPTA7aWYodSl7cD0oY1tiPj4yXSYtMikrIC0xfDA7dD1jW2c+PjJdfDB9ZWxzZXtwPTE7dD0odCYyNTUpPj4+MX1pZigodHwwKT09KHB8MCkpe3BnKGIscCwxLHAscCwwLDApO2lmKChhW2I+PjBdJjEpPT0wKXtwPTQzfWVsc2V7cD00NH19ZWxzZXtpZih1KXtwPTQ0fWVsc2V7cD00M319aWYoKHB8MCk9PTQzKXthW2I+PjBdPSh0PDwxKSsyO3Y9Zzt1PXQrMXwwfWVsc2UgaWYoKHB8MCk9PTQ0KXt2PWNbZj4+Ml18MDt1PXQrMXwwO2NbZz4+Ml09dX1jW3YrKHQ8PDIpPj4yXT1oO2NbdisodTw8Mik+PjJdPTA7cz1zKzR8MH13aGlsZShzPj4+MDwoY1trPj4yXXwwKT4+PjApO3A9Y1tsPj4yXXwwfWVsc2V7cD1ofWlmKCEocD4+PjA8cT4+PjApKXticmVhayBhfWg9Y1tqPj4yXXwwfW9rKDE0Mjk2KX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe2k9ZDtyZXR1cm59Yj1jW28rOD4+Ml18MDtpZigoYnwwKT09MCl7aT1kO3JldHVybn12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIFJrKGEsYil7YT1hfDA7Yj1ifDA7YT1pO1liKCgoYnwwKT09LTE/LTE6Yjw8MSl8MCl8MDtpPWE7cmV0dXJufWZ1bmN0aW9uIFNrKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNTQ0O2I9Yis4fDA7ZT1jW2I+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChlfDApPT0oY1szMzQwXXwwKSl7aT1kO3JldHVybn1WYihjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gVGsoKXt2YXIgYj0wLGQ9MCxlPTA7ZD1YYSg4KXwwO2NbZD4+Ml09OTkwNDt3aGlsZSgxKXtlPXVuKDE5KXwwO2lmKChlfDApIT0wKXtiPTc7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKGJ8MCk9PTcpe2NbZSs0Pj4yXT02O2NbZT4+Ml09NjtiPWUrMTJ8MDtjW2QrND4+Ml09YjtjW2UrOD4+Ml09MDthW2IrMD4+MF09YVsxMzM1Mj4+MF18MDthW2IrMT4+MF09YVsxMzM1Mz4+MF18MDthW2IrMj4+MF09YVsxMzM1ND4+MF18MDthW2IrMz4+MF09YVsxMzM1NT4+MF18MDthW2IrND4+MF09YVsxMzM1Nj4+MF18MDthW2IrNT4+MF09YVsxMzM1Nz4+MF18MDthW2IrNj4+MF09YVsxMzM1OD4+MF18MDtjW2Q+PjJdPTk5ODQ7d2IoZHwwLDEwMDI0LDEwNCl9ZT1YYSg0KXwwO2NbZT4+Ml09MjI2ODA7d2IoZXwwLDIyNzI4LDIwNil9ZnVuY3Rpb24gVWsoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtmPWk7aD1kKzR8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7aD1iKzEyfDA7bD1jW2g+PjJdfDA7Zz1iKzh8MDtrPWNbZz4+Ml18MDtxPWw7cD1rO2o9cS1wPj4yO2Rve2lmKCEoaj4+PjA+ZT4+PjApKXtvPWUrMXwwO2lmKCEoaj4+PjA8bz4+PjApKXtpZighKGo+Pj4wPm8+Pj4wKSl7YnJlYWt9aj1rKyhvPDwyKXwwO2lmKChsfDApPT0oanwwKSl7YnJlYWt9Y1toPj4yXT1sKyh+KChsKyAtNCsoMC1qKXwwKT4+PjIpPDwyKTticmVha31uPW8tanwwO2s9YisxNnwwO3I9Y1trPj4yXXwwO2Rve2lmKHItcT4+Mj4+PjA8bj4+PjApe2w9YisyNHwwO2lmKG8+Pj4wPjEwNzM3NDE4MjMpe1RrKCl9cD1yLXB8MDtpZihwPj4yPj4+MDw1MzY4NzA5MTEpe3I9cD4+MTtvPXI+Pj4wPG8+Pj4wP286cjtpZigob3wwKSE9MCl7cD1iKzEzNnwwO2lmKChhW3A+PjBdfDApPT0wJm8+Pj4wPDI5KXthW3A+PjBdPTE7cD1sfWVsc2V7bT0xNH19ZWxzZXtvPTA7cD0wfX1lbHNle289MTA3Mzc0MTgyMzttPTE0fWRve2lmKChtfDApPT0xNCl7cT1vPDwyO3E9KHF8MCk9PTA/MTpxO3doaWxlKDEpe3A9dW4ocSl8MDtpZigocHwwKSE9MCl7bT0yMDticmVha31wPWNbNTY2Nl18MDtjWzU2NjZdPXArMDtpZigocHwwKT09MCl7YnJlYWt9c2NbcCYzMV0oKX1pZigobXwwKT09MjApe2JyZWFrfXI9WGEoNCl8MDtjW3I+PjJdPTIyNjgwO3diKHJ8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTttPXArKGo8PDIpfDA7ZG97aWYoKG18MCk9PTApe209MH1lbHNle2NbbT4+Ml09MH1tPW0rNHwwO249bisgLTF8MH13aGlsZSgobnwwKSE9MCk7bj1jW2c+PjJdfDA7cT0oY1toPj4yXXwwKS1ufDA7cj1wKyhqLShxPj4yKTw8Mil8MDtMbihyfDAsbnwwLHF8MCl8MDtjW2c+PjJdPXI7Y1toPj4yXT1tO2Nbaz4+Ml09cCsobzw8Mik7aWYoKG58MCkhPTApe2lmKChsfDApPT0obnwwKSl7YVtiKzEzNj4+MF09MDticmVha31lbHNle3ZuKG4pO2JyZWFrfX19ZWxzZXtkb3tpZigobHwwKT09MCl7aj0wfWVsc2V7Y1tsPj4yXT0wO2o9Y1toPj4yXXwwfWw9ais0fDA7Y1toPj4yXT1sO249bisgLTF8MH13aGlsZSgobnwwKSE9MCl9fXdoaWxlKDApO2s9Y1tnPj4yXXwwfX13aGlsZSgwKTtoPWNbaysoZTw8Mik+PjJdfDA7aWYoKGh8MCk9PTApe3I9aztyPXIrKGU8PDIpfDA7Y1tyPj4yXT1kO2k9ZjtyZXR1cm59cT1oKzR8MDtyPWNbcT4+Ml18MDtjW3E+PjJdPXIrIC0xO2lmKChyfDApPT0wKXtsY1tjWyhjW2g+PjJdfDApKzg+PjJdJjI1NV0oaCl9cj1jW2c+PjJdfDA7cj1yKyhlPDwyKXwwO2Nbcj4+Ml09ZDtpPWY7cmV0dXJufWZ1bmN0aW9uIFZrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1drKGEpO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFdrKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2U9aTtjW2I+PjJdPTEzMzkyO2Q9YisxMnwwO2o9Y1tkPj4yXXwwO2Y9Yis4fDA7az1jW2Y+PjJdfDA7aWYoKGp8MCkhPShrfDApKXtoPTA7d2hpbGUoMSl7bD1jW2srKGg8PDIpPj4yXXwwO2lmKChsfDApIT0wKXtqPWwrNHwwO2s9Y1tqPj4yXXwwO2Nbaj4+Ml09aysgLTE7aWYoKGt8MCk9PTApe2xjW2NbKGNbbD4+Ml18MCkrOD4+Ml0mMjU1XShsKX1qPWNbZD4+Ml18MDtrPWNbZj4+Ml18MH1oPWgrMXwwO2lmKCEoaD4+PjA8ai1rPj4yPj4+MCkpe2o9azticmVha319fWlmKCEoKGFbYisxNDQ+PjBdJjEpPT0wKT8oZz1jW2IrMTUyPj4yXXwwLChnfDApIT0wKTowKXt2bihnKTtqPWNbZj4+Ml18MH1pZigoanwwKT09MCl7aT1lO3JldHVybn1mPWNbZD4+Ml18MDtpZigoZnwwKSE9KGp8MCkpe2NbZD4+Ml09ZisofigoZisgLTQrKDAtail8MCk+Pj4yKTw8Mil9aWYoKGIrMjR8MCk9PShqfDApKXthW2IrMTM2Pj4wXT0wO2k9ZTtyZXR1cm59ZWxzZXt2bihqKTtpPWU7cmV0dXJufX0KCgoKZnVuY3Rpb24gWm4oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGhjW2EmNjNdKGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIF9uKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiAkbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gYW8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGJvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBjbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gZW8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGZvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBnbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gaG8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGlvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBqbyhhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2ljW2EmNjNdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24ga28oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIGxvKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBtbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gbm8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIG9vKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBwbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gcW8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIHJvKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBzbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gdG8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIHVvKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtqY1thJjMxXShifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiB2byhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gd28oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIHhvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiB5byhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gem8oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIEFvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiBCbyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gQ28oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIERvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiBFbyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gRm8oYSl7YT1hfDA7cmV0dXJuIGtjW2EmMzFdKCl8MH1mdW5jdGlvbiBHbygpe3JldHVybiBrYSgwKXwwfWZ1bmN0aW9uIEhvKCl7cmV0dXJuIGthKDEpfDB9ZnVuY3Rpb24gSW8oKXtyZXR1cm4ga2EoMil8MH1mdW5jdGlvbiBKbygpe3JldHVybiBrYSgzKXwwfWZ1bmN0aW9uIEtvKCl7cmV0dXJuIGthKDQpfDB9ZnVuY3Rpb24gTG8oKXtyZXR1cm4ga2EoNSl8MH1mdW5jdGlvbiBNbygpe3JldHVybiBrYSg2KXwwfWZ1bmN0aW9uIE5vKCl7cmV0dXJuIGthKDcpfDB9ZnVuY3Rpb24gT28oKXtyZXR1cm4ga2EoOCl8MH1mdW5jdGlvbiBQbygpe3JldHVybiBrYSg5KXwwfWZ1bmN0aW9uIFFvKGEsYil7YT1hfDA7Yj1ifDA7bGNbYSYyNTVdKGJ8MCl9ZnVuY3Rpb24gUm8oYSl7YT1hfDA7a2EoMCxhfDApfWZ1bmN0aW9uIFNvKGEpe2E9YXwwO2thKDEsYXwwKX1mdW5jdGlvbiBUbyhhKXthPWF8MDtrYSgyLGF8MCl9ZnVuY3Rpb24gVW8oYSl7YT1hfDA7a2EoMyxhfDApfWZ1bmN0aW9uIFZvKGEpe2E9YXwwO2thKDQsYXwwKX1mdW5jdGlvbiBXbyhhKXthPWF8MDtrYSg1LGF8MCl9ZnVuY3Rpb24gWG8oYSl7YT1hfDA7a2EoNixhfDApfWZ1bmN0aW9uIFlvKGEpe2E9YXwwO2thKDcsYXwwKX1mdW5jdGlvbiBabyhhKXthPWF8MDtrYSg4LGF8MCl9ZnVuY3Rpb24gX28oYSl7YT1hfDA7a2EoOSxhfDApfWZ1bmN0aW9uICRvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDttY1thJjEyN10oYnwwLGN8MCl9ZnVuY3Rpb24gYXAoYSxiKXthPWF8MDtiPWJ8MDtrYSgwLGF8MCxifDApfWZ1bmN0aW9uIGJwKGEsYil7YT1hfDA7Yj1ifDA7a2EoMSxhfDAsYnwwKX1mdW5jdGlvbiBjcChhLGIpe2E9YXwwO2I9YnwwO2thKDIsYXwwLGJ8MCl9ZnVuY3Rpb24gZHAoYSxiKXthPWF8MDtiPWJ8MDtrYSgzLGF8MCxifDApfWZ1bmN0aW9uIGVwKGEsYil7YT1hfDA7Yj1ifDA7a2EoNCxhfDAsYnwwKX1mdW5jdGlvbiBmcChhLGIpe2E9YXwwO2I9YnwwO2thKDUsYXwwLGJ8MCl9ZnVuY3Rpb24gZ3AoYSxiKXthPWF8MDtiPWJ8MDtrYSg2LGF8MCxifDApfWZ1bmN0aW9uIGhwKGEsYil7YT1hfDA7Yj1ifDA7a2EoNyxhfDAsYnwwKX1mdW5jdGlvbiBpcChhLGIpe2E9YXwwO2I9YnwwO2thKDgsYXwwLGJ8MCl9ZnVuY3Rpb24ganAoYSxiKXthPWF8MDtiPWJ8MDtrYSg5LGF8MCxifDApfWZ1bmN0aW9uIGtwKGEsYixjLGQsZSxmLGcsaCxpLGope2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2o9anwwO25jW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDAsanwwKX1mdW5jdGlvbiBscChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gbXAoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIG5wKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiBvcChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gcHAoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIHFwKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiBycChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gc3AoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIHRwKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiB1cChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gdnAoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gb2NbYSYxMjddKGJ8MCl8MH1mdW5jdGlvbiB3cChhKXthPWF8MDtyZXR1cm4ga2EoMCxhfDApfDB9ZnVuY3Rpb24geHAoYSl7YT1hfDA7cmV0dXJuIGthKDEsYXwwKXwwfWZ1bmN0aW9uIHlwKGEpe2E9YXwwO3JldHVybiBrYSgyLGF8MCl8MH1mdW5jdGlvbiB6cChhKXthPWF8MDtyZXR1cm4ga2EoMyxhfDApfDB9ZnVuY3Rpb24gQXAoYSl7YT1hfDA7cmV0dXJuIGthKDQsYXwwKXwwfWZ1bmN0aW9uIEJwKGEpe2E9YXwwO3JldHVybiBrYSg1LGF8MCl8MH1mdW5jdGlvbiBDcChhKXthPWF8MDtyZXR1cm4ga2EoNixhfDApfDB9ZnVuY3Rpb24gRHAoYSl7YT1hfDA7cmV0dXJuIGthKDcsYXwwKXwwfWZ1bmN0aW9uIEVwKGEpe2E9YXwwO3JldHVybiBrYSg4LGF8MCl8MH1mdW5jdGlvbiBGcChhKXthPWF8MDtyZXR1cm4ga2EoOSxhfDApfDB9ZnVuY3Rpb24gR3AoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPStoO3BjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLCtoKX1mdW5jdGlvbiBIcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIElwKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoMSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gSnAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBLcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIExwKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoNCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gTXAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBOcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIE9wKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoNyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gUHAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBRcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIFJwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3FjW2EmMzFdKGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBTcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoMCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gVHAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDEsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFVwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSgyLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBWcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoMyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gV3AoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDQsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFhwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSg1LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBZcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoNixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gWnAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDcsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIF9wKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSg4LGF8MCxifDAsY3wwKX1mdW5jdGlvbiAkcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoOSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gYXEoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztyY1thJjMxXShifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBicShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSgwLGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGNxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24gZHEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBlcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSgzLGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGZxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24gZ3EoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBocShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSg2LGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGlxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24ganEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBrcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSg5LGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGxxKGEpe2E9YXwwO3NjW2EmMzFdKCl9ZnVuY3Rpb24gbXEoKXtrYSgwKX1mdW5jdGlvbiBucSgpe2thKDEpfWZ1bmN0aW9uIG9xKCl7a2EoMil9ZnVuY3Rpb24gcHEoKXtrYSgzKX1mdW5jdGlvbiBxcSgpe2thKDQpfWZ1bmN0aW9uIHJxKCl7a2EoNSl9ZnVuY3Rpb24gc3EoKXtrYSg2KX1mdW5jdGlvbiB0cSgpe2thKDcpfWZ1bmN0aW9uIHVxKCl7a2EoOCl9ZnVuY3Rpb24gdnEoKXtrYSg5KX1mdW5jdGlvbiB3cShhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7cmV0dXJuIHRjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfDB9ZnVuY3Rpb24geHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIHlxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiB6cShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gQXEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEJxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiBDcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gRHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEVxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiBGcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gR3EoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEhxKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIHVjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBJcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gSnEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEtxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBMcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gTXEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIE5xKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBPcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gUHEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFFxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBScShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gU3EoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO3ZjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIFRxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBVcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gVnEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIFdxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBYcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gWXEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIFpxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBfcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gJHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIGFyKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBicihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt3Y1thJjYzXShifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gY3IoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGRyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBlcihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gZnIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGdyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBocihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gaXIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGpyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBrcihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gbHIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIG1yKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4geGNbYSY2M10oYnwwLGN8MCl8MH1mdW5jdGlvbiBucihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSgwLGF8MCxifDApfDB9ZnVuY3Rpb24gb3IoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoMSxhfDAsYnwwKXwwfWZ1bmN0aW9uIHByKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDIsYXwwLGJ8MCl8MH1mdW5jdGlvbiBxcihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSgzLGF8MCxifDApfDB9ZnVuY3Rpb24gcnIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoNCxhfDAsYnwwKXwwfWZ1bmN0aW9uIHNyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDUsYXwwLGJ8MCl8MH1mdW5jdGlvbiB0cihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSg2LGF8MCxifDApfDB9ZnVuY3Rpb24gdXIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoNyxhfDAsYnwwKXwwfWZ1bmN0aW9uIHZyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDgsYXwwLGJ8MCl8MH1mdW5jdGlvbiB3cihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSg5LGF8MCxifDApfDB9ZnVuY3Rpb24geHIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB5Y1thJjYzXShifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIHlyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiB6cihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gQXIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEJyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBDcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gRHIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEVyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBGcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gR3IoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEhyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBJcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3pjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gSnIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEtyKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBMcihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gTXIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIE5yKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBPcihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gUHIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoNixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFFyKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBScihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gU3IoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFRyKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtmYSgwKTtyZXR1cm4gMH1mdW5jdGlvbiBVcihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtmYSgxKX1mdW5jdGlvbiBWcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2ZhKDIpfWZ1bmN0aW9uIFdyKCl7ZmEoMyk7cmV0dXJuIDB9ZnVuY3Rpb24gWHIoYSl7YT1hfDA7ZmEoNCl9ZnVuY3Rpb24gWXIoYSxiKXthPWF8MDtiPWJ8MDtmYSg1KX1mdW5jdGlvbiBacihhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7ZmEoNil9ZnVuY3Rpb24gX3IoYSl7YT1hfDA7ZmEoNyk7cmV0dXJuIDB9ZnVuY3Rpb24gJHIoYSl7YT1hfDA7cmV0dXJuIEFiKGF8MCl8MH1mdW5jdGlvbiBhcyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2ZhKDgpfWZ1bmN0aW9uIGJzKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtmYSg5KX1mdW5jdGlvbiBjcyhhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtmYSgxMCl9ZnVuY3Rpb24gZHMoKXtmYSgxMSl9ZnVuY3Rpb24gZXMoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtmYSgxMik7cmV0dXJuIDB9ZnVuY3Rpb24gZnMoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZmEoMTMpO3JldHVybiAwfWZ1bmN0aW9uIGdzKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7ZmEoMTQpfWZ1bmN0aW9uIGhzKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtmYSgxNSl9ZnVuY3Rpb24gaXMoYSxiKXthPWF8MDtiPWJ8MDtmYSgxNik7cmV0dXJuIDB9ZnVuY3Rpb24ganMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmYSgxNyk7cmV0dXJuIDB9ZnVuY3Rpb24ga3MoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZmEoMTgpfQoKCgoKLy8gRU1TQ1JJUFRFTl9FTkRfRlVOQ1MKdmFyIGhjPVtUcixUcixfbixUciwkbixUcixhbyxUcixibyxUcixjbyxUcixlbyxUcixmbyxUcixnbyxUcixobyxUcixpbyxUcix2ZyxBZyxFZyxKZyxPZyxrZixTZyx4ZixQZixRZixEaCxJaCxLayxQayxxbCxzbCx2bCxibCxnbCxpbCxsbCxobixtbixnbixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcl07dmFyIGljPVtVcixVcixrbyxVcixsbyxVcixtbyxVcixubyxVcixvbyxVcixwbyxVcixxbyxVcixybyxVcixzbyxVcix0byxVcixMaCxOaCxPaCxQaCxRaCxSaCxTaCxUaCxVaCxWaCxXaCwkaCxiaSxjaSxkaSxlaSxmaSxnaSxoaSxpaSxqaSxraSx5aSxBaSxNaSxPaSxYaSxZaSxaaSxfaSwkaSxnaixoaixpaixqaixraixCayxIayxVcixVcixVcixVcl07dmFyIGpjPVtWcixWcix2byxWcix3byxWcix4byxWcix5byxWcix6byxWcixBbyxWcixCbyxWcixDbyxWcixEbyxWcixFbyxWcixxbixwbixvbixWcixWcixWcixWcixWcixWcixWcl07dmFyIGtjPVtXcixXcixHbyxXcixIbyxXcixJbyxXcixKbyxXcixLbyxXcixMbyxXcixNbyxXcixObyxXcixPbyxXcixQbyxXcixPYyxXcixXcixXcixXcixXcixXcixXcixXcixXcl07dmFyIGxjPVtYcixYcixSbyxYcixTbyxYcixUbyxYcixVbyxYcixWbyxYcixXbyxYcixYbyxYcixZbyxYcixabyxYcixfbyxYcixUYyxVYyxoZCxpZCxuZCxvZCx2ZCx3ZCx4ZCx6ZCxCZCxDZCxEZCxFZCxGZCxIZCxKZCxLZCxMZCxNZCxOZCxQZCxSZCxTZCxUZCxVZCxWZCxYZCxZZCwkZCxaZCxhZSxfZCxiZSxWZyxVZyxYZyxXZyxjZSxkZSxqZSxrZSxsZSxuZSx0ZSx1ZSxzZSx2ZSxyZSx3ZSx4ZSx5ZSx6ZSxBZSxCZSxDZSxFZSxGZSxJZSxKZSxPZSxQZSxOZSxRZSxxZSxSZSxUZSxVZSxWZSxYZSxZZSxaZSxfZSxhZixmZixnZixtZixuZix0Zix1Zix6ZixBZixJZixIZixMZixLZixOZixfZixaZixUZiwkZixYZixhZyx0ZyxzZyxIZyxHZyxfZyxaZyxhaCwkZyxkaCxjaCxmaCxlaCxuaCxtaCxwaCxvaCx2aCx1aCxyZyx3aCx0aCx4aCx6aCx5aCxfayxGaCxFaCxLaCxKaCxfaCxaaCx0aSxzaSxIaSxHaSxWaSxVaSxlaixkaixvaixuaixyaixxaix1aix0aixGaixFaixRaixQaiwkaixfaixrayxqayxzayxyayx4ayx3ayxEayxDayxKayxJayxPayxOayxXayxWayxvbCxubCxTayxGbCxlbSxkbSxnbSxmbSxBaCxaayxhbCx4bCxObCxWbCxibSxjbSxZbSxYbSxfbSxjbiwkbSxhbixmbixibixkbixlbix6bix5biwkayxEZSxiZyxSYyxlZixtayx2bixUbSxTbSxSbSxRbSxQbSxPbSxmZyxtZyxYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcl07dmFyIG1jPVtZcixZcixhcCxZcixicCxZcixjcCxZcixkcCxZcixlcCxZcixmcCxZcixncCxZcixocCxZcixpcCxZcixqcCxZcixnZCxBZCxJZCxRZCx1ZyxIZSxLZSxoZixvZix2ZixCZixJZyx4aix5aix6aixBaixDaixEaixJaixKaixLaixMaixOaixPaixUaixVaixWaixXaixZaixaaixjayxkayxlayxmayxoayxpayxNayxSayxsbSxubSxwbSxtbSxvbSxxbSxKYyxZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcl07dmFyIG5jPVtacixacixscCxacixtcCxacixucCxacixvcCxacixwcCxacixxcCxacixycCxacixzcCxacix0cCxacix1cCxacixhaixsaixacixacixacixacixacixacixacixacl07dmFyIG9jPVtfcixfcix3cCxfcix4cCxfcix5cCxfcix6cCxfcixBcCxfcixCcCxfcixDcCxfcixEcCxfcixFcCxfcixGcCxfcixNZix5Zyx6ZyxnZSxDZywkcixHZSxNZSxqZixOZyxQZyxRZyxNZyxwZixxZix3ZixCZyxDZixEZixKZixSZixVZixyaCxXaSxybSx0bSx2bSxCbSxEbSx4bSx6bSxmaixzbSx1bSx3bSxDbSxFbSx5bSxBbSx2aix3aixCaixHaixIaixNaixSaixTaixYaixhayxiayxnayxKbCxLbCxNbCxobSxqbSxpbSxrbSxCbCxDbCxFbCxSbCxTbCxVbCxabCxfbCxhbSxabSxBbixRYyxQYyxLYyxfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcl07dmFyIHBjPVthcyxhcyxIcCxhcyxJcCxhcyxKcCxhcyxLcCxhcyxMcCxhcyxNcCxhcyxOcCxhcyxPcCxhcyxQcCxhcyxRcCxhcyx5ayxFayxhcyxhcyxhcyxhcyxhcyxhcyxhcyxhc107dmFyIHFjPVticyxicyxTcCxicyxUcCxicyxVcCxicyxWcCxicyxXcCxicyxYcCxicyxZcCxicyxacCxicyxfcCxicywkcCxicyxPZixTZixXZixWZixzaCxJYyxNYyxicyxicyxic107dmFyIHJjPVtjcyxjcyxicSxjcyxjcSxjcyxkcSxjcyxlcSxjcyxmcSxjcyxncSxjcyxocSxjcyxpcSxjcyxqcSxjcyxrcSxjcyxCaSxFaSxQaSxSaSxjcyxjcyxjcyxjcyxjcyxjc107dmFyIHNjPVtkcyxkcyxtcSxkcyxucSxkcyxvcSxkcyxwcSxkcyxxcSxkcyxycSxkcyxzcSxkcyx0cSxkcyx1cSxkcyx2cSxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkc107dmFyIHRjPVtlcyxlcyx4cSxlcyx5cSxlcyx6cSxlcyxBcSxlcyxCcSxlcyxDcSxlcyxEcSxlcyxFcSxlcyxGcSxlcyxHcSxlcyxHbCxIbCx5bCx6bCxPbCxQbCxXbCxYbCxlcyxlc107dmFyIHVjPVtmcyxmcyxJcSxmcyxKcSxmcyxLcSxmcyxMcSxmcyxNcSxmcyxOcSxmcyxPcSxmcyxQcSxmcyxRcSxmcyxScSxmcyx1bCxjbCxkbCxlbCxrbCxmcyxmcyxmcyxmcyxmc107dmFyIHZjPVtncyxncyxUcSxncyxVcSxncyxWcSxncyxXcSxncyxYcSxncyxZcSxncyxacSxncyxfcSxncywkcSxncyxhcixncyxwaixzaixsayxwayx0ayx2ayxncyxncyxncyxnc107dmFyIHdjPVtocyxocyxjcixocyxkcixocyxlcixocyxmcixocyxncixocyxocixocyxpcixocyxqcixocyxrcixocyxscixocyxlZSxLZyx3Zyx1aSx2aSx6aSxGaSxJaSxKaSxOaSxTaSxMayxRayx0bixzbixybixocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxoc107dmFyIHhjPVtpcyxpcyxucixpcyxvcixpcyxwcixpcyxxcixpcyxycixpcyxzcixpcyx0cixpcyx1cixpcyx2cixpcyx3cixpcyx5ZCxHZCxPZCxXZCxoZSxpZSxtZSxMZSxXZSwkZSxSZyxsZixyZixUZyxEZyx5ZixFZixGZyxwbCxybCx0bCxmbCxobCxqbCxMYyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpc107dmFyIHljPVtqcyxqcyx5cixqcyx6cixqcyxBcixqcyxCcixqcyxDcixqcyxEcixqcyxFcixqcyxGcixqcyxHcixqcyxIcixqcyxCaCxHaCx3bCxJbCxMbCxtbCxBbCxEbCxRbCxUbCxZbCwkbCxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqc107dmFyIHpjPVtrcyxrcyxKcixrcyxLcixrcyxMcixrcyxNcixrcyxOcixrcyxPcixrcyxQcixrcyxRcixrcyxScixrcyxTcixrcyxmZSxMZyx4ZyxDaCxIaCxqbixrbixsbixOYyxrc107cmV0dXJue19pNjRTdWJ0cmFjdDpIbixfZnJlZTp2bixfcmVhbGxvYzp3bixfaTY0QWRkOkluLF9tZW1tb3ZlOk1uLF9zdHJsZW46Sm4sX21lbXNldDpObixfbWFsbG9jOnVuLF9tZW1jcHk6TG4sX19fZ2V0VHlwZU5hbWU6Y2YsX2JpdHNoaWZ0NjRMc2hyOktuLF9iaXRzaGlmdDY0U2hsOk9uLF9fR0xPQkFMX19JX2E6YmYsX19HTE9CQUxfX0lfYTY1OmRmLF9fR0xPQkFMX19JX2ExNTM6R2YscnVuUG9zdFNldHM6R24sc3RhY2tBbGxvYzpBYyxzdGFja1NhdmU6QmMsc3RhY2tSZXN0b3JlOkNjLHNldFRocmV3OkRjLHNldFRlbXBSZXQwOkdjLGdldFRlbXBSZXQwOkhjLGR5bkNhbGxfaWlpaTpabixkeW5DYWxsX3ZpaWlpaWlpOmpvLGR5bkNhbGxfdmlpaWlpOnVvLGR5bkNhbGxfaTpGbyxkeW5DYWxsX3ZpOlFvLGR5bkNhbGxfdmlpOiRvLGR5bkNhbGxfdmlpaWlpaWlpaTprcCxkeW5DYWxsX2lpOnZwLGR5bkNhbGxfdmlpaWlpaWQ6R3AsZHluQ2FsbF92aWlpOlJwLGR5bkNhbGxfdmlpaWlpZDphcSxkeW5DYWxsX3Y6bHEsZHluQ2FsbF9paWlpaWlpaWk6d3EsZHluQ2FsbF9paWlpaTpIcSxkeW5DYWxsX3ZpaWlpaWlpaTpTcSxkeW5DYWxsX3ZpaWlpaWk6YnIsZHluQ2FsbF9paWk6bXIsZHluQ2FsbF9paWlpaWk6eHIsZHluQ2FsbF92aWlpaTpJcn0KLy8gRU1TQ1JJUFRFTl9FTkRfQVNNCgp9KSh7Ik1hdGgiOk1hdGgsIkludDhBcnJheSI6SW50OEFycmF5LCJJbnQxNkFycmF5IjpJbnQxNkFycmF5LCJJbnQzMkFycmF5IjpJbnQzMkFycmF5LCJVaW50OEFycmF5IjpVaW50OEFycmF5LCJVaW50MTZBcnJheSI6VWludDE2QXJyYXksIlVpbnQzMkFycmF5IjpVaW50MzJBcnJheSwiRmxvYXQzMkFycmF5IjpGbG9hdDMyQXJyYXksIkZsb2F0NjRBcnJheSI6RmxvYXQ2NEFycmF5fSx7ImFib3J0IjphYm9ydCwiYXNzZXJ0Ijphc3NlcnQsImFzbVByaW50SW50Ijphc21QcmludEludCwiYXNtUHJpbnRGbG9hdCI6YXNtUHJpbnRGbG9hdCwibWluIjpNYXRoX21pbiwianNDYWxsIjpqc0NhbGwsImludm9rZV9paWlpIjppbnZva2VfaWlpaSwiaW52b2tlX3ZpaWlpaWlpIjppbnZva2VfdmlpaWlpaWksImludm9rZV92aWlpaWkiOmludm9rZV92aWlpaWksImludm9rZV9pIjppbnZva2VfaSwiaW52b2tlX3ZpIjppbnZva2VfdmksImludm9rZV92aWkiOmludm9rZV92aWksImludm9rZV92aWlpaWlpaWlpIjppbnZva2VfdmlpaWlpaWlpaSwiaW52b2tlX2lpIjppbnZva2VfaWksImludm9rZV92aWlpaWlpZCI6aW52b2tlX3ZpaWlpaWlkLCJpbnZva2VfdmlpaSI6aW52b2tlX3ZpaWksImludm9rZV92aWlpaWlkIjppbnZva2VfdmlpaWlpZCwiaW52b2tlX3YiOmludm9rZV92LCJpbnZva2VfaWlpaWlpaWlpIjppbnZva2VfaWlpaWlpaWlpLCJpbnZva2VfaWlpaWkiOmludm9rZV9paWlpaSwiaW52b2tlX3ZpaWlpaWlpaSI6aW52b2tlX3ZpaWlpaWlpaSwiaW52b2tlX3ZpaWlpaWkiOmludm9rZV92aWlpaWlpLCJpbnZva2VfaWlpIjppbnZva2VfaWlpLCJpbnZva2VfaWlpaWlpIjppbnZva2VfaWlpaWlpLCJpbnZva2VfdmlpaWkiOmludm9rZV92aWlpaSwiX2ZhYnMiOl9mYWJzLCJfc3NjYW5mIjpfc3NjYW5mLCJfcHRocmVhZF9jb25kX3dhaXQiOl9wdGhyZWFkX2NvbmRfd2FpdCwiX19fY3R5cGVfdG9sb3dlcl9sb2MiOl9fX2N0eXBlX3RvbG93ZXJfbG9jLCJfYXNwcmludGYiOl9hc3ByaW50ZiwiX19lbWJpbmRfcmVnaXN0ZXJfdm9pZCI6X19lbWJpbmRfcmVnaXN0ZXJfdm9pZCwiX3NlbmQiOl9zZW5kLCJfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyI6X19lbWJpbmRfcmVnaXN0ZXJfbWVtb3J5X3ZpZXcsIl92c3NjYW5mIjpfdnNzY2FuZiwiX19fY3R5cGVfYl9sb2MiOl9fX2N0eXBlX2JfbG9jLCJfX1pTdDl0ZXJtaW5hdGV2IjpfX1pTdDl0ZXJtaW5hdGV2LCJfZm1vZCI6X2Ztb2QsIl9fX2N4YV9ndWFyZF9hY3F1aXJlIjpfX19jeGFfZ3VhcmRfYWNxdWlyZSwiX19fc2V0RXJyTm8iOl9fX3NldEVyck5vLCJfX19jeGFfaXNfbnVtYmVyX3R5cGUiOl9fX2N4YV9pc19udW1iZXJfdHlwZSwiX19fZ3h4X3BlcnNvbmFsaXR5X3YwIjpfX19neHhfcGVyc29uYWxpdHlfdjAsIl9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIiOl9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIsIl91bmdldGMiOl91bmdldGMsIl9fX2Fzc2VydF9mYWlsIjpfX19hc3NlcnRfZmFpbCwiX19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiI6X19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiwiX19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYiOl9fWlN0MTh1bmNhdWdodF9leGNlcHRpb252LCJfX19jdHlwZV90b3VwcGVyX2xvYyI6X19fY3R5cGVfdG91cHBlcl9sb2MsIl9mZmx1c2giOl9mZmx1c2gsIl9fX2N4YV9ndWFyZF9yZWxlYXNlIjpfX19jeGFfZ3VhcmRfcmVsZWFzZSwiX19hZGREYXlzIjpfX2FkZERheXMsIl9fX2Vycm5vX2xvY2F0aW9uIjpfX19lcnJub19sb2NhdGlvbiwiX3B3cml0ZSI6X3B3cml0ZSwiX3N0cmVycm9yX3IiOl9zdHJlcnJvcl9yLCJfc3RyZnRpbWVfbCI6X3N0cmZ0aW1lX2wsIl9fZm9ybWF0U3RyaW5nIjpfX2Zvcm1hdFN0cmluZywiX19yZWFsbHlOZWdhdGl2ZSI6X19yZWFsbHlOZWdhdGl2ZSwiX3NicmsiOl9zYnJrLCJfdXNlbG9jYWxlIjpfdXNlbG9jYWxlLCJfY2F0Z2V0cyI6X2NhdGdldHMsIl9uZXdsb2NhbGUiOl9uZXdsb2NhbGUsIl9zbnByaW50ZiI6X3NucHJpbnRmLCJfX19jeGFfYmVnaW5fY2F0Y2giOl9fX2N4YV9iZWdpbl9jYXRjaCwiX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZyI6X2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZywiX2ZpbGVubyI6X2ZpbGVubywiX19lbWJpbmRfcmVnaXN0ZXJfYm9vbCI6X19lbWJpbmRfcmVnaXN0ZXJfYm9vbCwiX19fcmVzdW1lRXhjZXB0aW9uIjpfX19yZXN1bWVFeGNlcHRpb24sIl9fX2N4YV9maW5kX21hdGNoaW5nX2NhdGNoIjpfX19jeGFfZmluZF9tYXRjaGluZ19jYXRjaCwiX3N5c2NvbmYiOl9zeXNjb25mLCJfX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nIjpfX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nLCJfc3RyZnRpbWUiOl9zdHJmdGltZSwiX19hcnJheVN1bSI6X19hcnJheVN1bSwiX19fY3hhX3Rocm93IjpfX19jeGFfdGhyb3csIl9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsIjpfX2VtYmluZF9yZWdpc3Rlcl9lbXZhbCwiX19leGl0IjpfX2V4aXQsIl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiwiX19aTktTdDlleGNlcHRpb240d2hhdEV2IjpfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYsIl9wdGhyZWFkX211dGV4X2Rlc3Ryb3kiOl9wdGhyZWFkX211dGV4X2Rlc3Ryb3ksIl9wdGhyZWFkX211dGV4X3VubG9jayI6X3B0aHJlYWRfbXV0ZXhfdW5sb2NrLCJfZnJlYWQiOl9mcmVhZCwiX3B0aHJlYWRfY29uZF9icm9hZGNhc3QiOl9wdGhyZWFkX2NvbmRfYnJvYWRjYXN0LCJfbWtwb3J0IjpfbWtwb3J0LCJfc3ByaW50ZiI6X3NwcmludGYsIl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzcywiX3Zhc3ByaW50ZiI6X3Zhc3ByaW50ZiwiX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmciOl9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF93c3RyaW5nLCJfd3JpdGUiOl93cml0ZSwiX19pc0xlYXBZZWFyIjpfX2lzTGVhcFllYXIsIl9fc2NhblN0cmluZyI6X19zY2FuU3RyaW5nLCJfc3RyZXJyb3IiOl9zdHJlcnJvciwiX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IiOl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yLCJfcmVjdiI6X3JlY3YsIl92c25wcmludGYiOl92c25wcmludGYsIl9fWk5TdDlleGNlcHRpb25EMkV2IjpfX1pOU3Q5ZXhjZXB0aW9uRDJFdiwiX2NvcHlzaWduIjpfY29weXNpZ24sIl9mZ2V0YyI6X2ZnZXRjLCJfX19jeGFfZG9lc19pbmhlcml0IjpfX19jeGFfZG9lc19pbmhlcml0LCJfZnJlZWxvY2FsZSI6X2ZyZWVsb2NhbGUsIl9yZWFkIjpfcmVhZCwiX2Fib3J0IjpfYWJvcnQsIl9jYXRjbG9zZSI6X2NhdGNsb3NlLCJfZndyaXRlIjpfZndyaXRlLCJfdGltZSI6X3RpbWUsIl9wdGhyZWFkX211dGV4X2xvY2siOl9wdGhyZWFkX211dGV4X2xvY2ssIl9fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0IjpfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdCwiX3ByZWFkIjpfcHJlYWQsIl9hdGV4aXQiOl9hdGV4aXQsIl9jYXRvcGVuIjpfY2F0b3BlbiwiX2V4aXQiOl9leGl0LCJfX2dldEZsb2F0IjpfX2dldEZsb2F0LCJTVEFDS1RPUCI6U1RBQ0tUT1AsIlNUQUNLX01BWCI6U1RBQ0tfTUFYLCJ0ZW1wRG91YmxlUHRyIjp0ZW1wRG91YmxlUHRyLCJBQk9SVCI6QUJPUlQsImN0dHpfaTgiOmN0dHpfaTgsImN0bHpfaTgiOmN0bHpfaTgsIk5hTiI6TmFOLCJJbmZpbml0eSI6SW5maW5pdHksIl9fWlRJU3Q5ZXhjZXB0aW9uIjpfX1pUSVN0OWV4Y2VwdGlvbiwiX19fZHNvX2hhbmRsZSI6X19fZHNvX2hhbmRsZSwiX3N0ZGVyciI6X3N0ZGVyciwiX3N0ZGluIjpfc3RkaW4sIl9zdGRvdXQiOl9zdGRvdXR9LGJ1ZmZlcik7dmFyIF9pNjRTdWJ0cmFjdD1Nb2R1bGVbIl9pNjRTdWJ0cmFjdCJdPWFzbVsiX2k2NFN1YnRyYWN0Il07dmFyIF9mcmVlPU1vZHVsZVsiX2ZyZWUiXT1hc21bIl9mcmVlIl07dmFyIF9yZWFsbG9jPU1vZHVsZVsiX3JlYWxsb2MiXT1hc21bIl9yZWFsbG9jIl07dmFyIF9pNjRBZGQ9TW9kdWxlWyJfaTY0QWRkIl09YXNtWyJfaTY0QWRkIl07dmFyIF9tZW1tb3ZlPU1vZHVsZVsiX21lbW1vdmUiXT1hc21bIl9tZW1tb3ZlIl07dmFyIF9zdHJsZW49TW9kdWxlWyJfc3RybGVuIl09YXNtWyJfc3RybGVuIl07dmFyIF9tZW1zZXQ9TW9kdWxlWyJfbWVtc2V0Il09YXNtWyJfbWVtc2V0Il07dmFyIF9tYWxsb2M9TW9kdWxlWyJfbWFsbG9jIl09YXNtWyJfbWFsbG9jIl07dmFyIF9tZW1jcHk9TW9kdWxlWyJfbWVtY3B5Il09YXNtWyJfbWVtY3B5Il07dmFyIF9fX2dldFR5cGVOYW1lPU1vZHVsZVsiX19fZ2V0VHlwZU5hbWUiXT1hc21bIl9fX2dldFR5cGVOYW1lIl07dmFyIF9iaXRzaGlmdDY0THNocj1Nb2R1bGVbIl9iaXRzaGlmdDY0THNociJdPWFzbVsiX2JpdHNoaWZ0NjRMc2hyIl07dmFyIF9iaXRzaGlmdDY0U2hsPU1vZHVsZVsiX2JpdHNoaWZ0NjRTaGwiXT1hc21bIl9iaXRzaGlmdDY0U2hsIl07dmFyIF9fR0xPQkFMX19JX2E9TW9kdWxlWyJfX0dMT0JBTF9fSV9hIl09YXNtWyJfX0dMT0JBTF9fSV9hIl07dmFyIF9fR0xPQkFMX19JX2E2NT1Nb2R1bGVbIl9fR0xPQkFMX19JX2E2NSJdPWFzbVsiX19HTE9CQUxfX0lfYTY1Il07dmFyIF9fR0xPQkFMX19JX2ExNTM9TW9kdWxlWyJfX0dMT0JBTF9fSV9hMTUzIl09YXNtWyJfX0dMT0JBTF9fSV9hMTUzIl07dmFyIHJ1blBvc3RTZXRzPU1vZHVsZVsicnVuUG9zdFNldHMiXT1hc21bInJ1blBvc3RTZXRzIl07dmFyIGR5bkNhbGxfaWlpaT1Nb2R1bGVbImR5bkNhbGxfaWlpaSJdPWFzbVsiZHluQ2FsbF9paWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWk9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlpIl09YXNtWyJkeW5DYWxsX3ZpaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpPU1vZHVsZVsiZHluQ2FsbF92aWlpaWkiXT1hc21bImR5bkNhbGxfdmlpaWlpIl07dmFyIGR5bkNhbGxfaT1Nb2R1bGVbImR5bkNhbGxfaSJdPWFzbVsiZHluQ2FsbF9pIl07dmFyIGR5bkNhbGxfdmk9TW9kdWxlWyJkeW5DYWxsX3ZpIl09YXNtWyJkeW5DYWxsX3ZpIl07dmFyIGR5bkNhbGxfdmlpPU1vZHVsZVsiZHluQ2FsbF92aWkiXT1hc21bImR5bkNhbGxfdmlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpaWlpaSJdPWFzbVsiZHluQ2FsbF92aWlpaWlpaWlpIl07dmFyIGR5bkNhbGxfaWk9TW9kdWxlWyJkeW5DYWxsX2lpIl09YXNtWyJkeW5DYWxsX2lpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWQ9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlkIl09YXNtWyJkeW5DYWxsX3ZpaWlpaWlkIl07dmFyIGR5bkNhbGxfdmlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaSJdPWFzbVsiZHluQ2FsbF92aWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpZD1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpZCJdPWFzbVsiZHluQ2FsbF92aWlpaWlkIl07dmFyIGR5bkNhbGxfdj1Nb2R1bGVbImR5bkNhbGxfdiJdPWFzbVsiZHluQ2FsbF92Il07dmFyIGR5bkNhbGxfaWlpaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF9paWlpaWlpaWkiXT1hc21bImR5bkNhbGxfaWlpaWlpaWlpIl07dmFyIGR5bkNhbGxfaWlpaWk9TW9kdWxlWyJkeW5DYWxsX2lpaWlpIl09YXNtWyJkeW5DYWxsX2lpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF92aWlpaWlpaWkiXT1hc21bImR5bkNhbGxfdmlpaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpaSJdPWFzbVsiZHluQ2FsbF92aWlpaWlpIl07dmFyIGR5bkNhbGxfaWlpPU1vZHVsZVsiZHluQ2FsbF9paWkiXT1hc21bImR5bkNhbGxfaWlpIl07dmFyIGR5bkNhbGxfaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF9paWlpaWkiXT1hc21bImR5bkNhbGxfaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWk9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpIl09YXNtWyJkeW5DYWxsX3ZpaWlpIl07UnVudGltZS5zdGFja0FsbG9jPWFzbVsic3RhY2tBbGxvYyJdO1J1bnRpbWUuc3RhY2tTYXZlPWFzbVsic3RhY2tTYXZlIl07UnVudGltZS5zdGFja1Jlc3RvcmU9YXNtWyJzdGFja1Jlc3RvcmUiXTtSdW50aW1lLnNldFRlbXBSZXQwPWFzbVsic2V0VGVtcFJldDAiXTtSdW50aW1lLmdldFRlbXBSZXQwPWFzbVsiZ2V0VGVtcFJldDAiXTt2YXIgaTY0TWF0aD0oZnVuY3Rpb24oKXt2YXIgZ29vZz17bWF0aDp7fX07Z29vZy5tYXRoLkxvbmc9KGZ1bmN0aW9uKGxvdyxoaWdoKXt0aGlzLmxvd189bG93fDA7dGhpcy5oaWdoXz1oaWdofDB9KTtnb29nLm1hdGguTG9uZy5JbnRDYWNoZV89e307Z29vZy5tYXRoLkxvbmcuZnJvbUludD0oZnVuY3Rpb24odmFsdWUpe2lmKC0xMjg8PXZhbHVlJiZ2YWx1ZTwxMjgpe3ZhciBjYWNoZWRPYmo9Z29vZy5tYXRoLkxvbmcuSW50Q2FjaGVfW3ZhbHVlXTtpZihjYWNoZWRPYmope3JldHVybiBjYWNoZWRPYmp9fXZhciBvYmo9bmV3IGdvb2cubWF0aC5Mb25nKHZhbHVlfDAsdmFsdWU8MD8tMTowKTtpZigtMTI4PD12YWx1ZSYmdmFsdWU8MTI4KXtnb29nLm1hdGguTG9uZy5JbnRDYWNoZV9bdmFsdWVdPW9ian1yZXR1cm4gb2JqfSk7Z29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcj0oZnVuY3Rpb24odmFsdWUpe2lmKGlzTmFOKHZhbHVlKXx8IWlzRmluaXRlKHZhbHVlKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99ZWxzZSBpZih2YWx1ZTw9LWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjNfREJMXyl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRX1lbHNlIGlmKHZhbHVlKzE+PWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjNfREJMXyl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1BWF9WQUxVRX1lbHNlIGlmKHZhbHVlPDApe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKC12YWx1ZSkubmVnYXRlKCl9ZWxzZXtyZXR1cm4gbmV3IGdvb2cubWF0aC5Mb25nKHZhbHVlJWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMX3wwLHZhbHVlL2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMX3wwKX19KTtnb29nLm1hdGguTG9uZy5mcm9tQml0cz0oZnVuY3Rpb24obG93Qml0cyxoaWdoQml0cyl7cmV0dXJuIG5ldyBnb29nLm1hdGguTG9uZyhsb3dCaXRzLGhpZ2hCaXRzKX0pO2dvb2cubWF0aC5Mb25nLmZyb21TdHJpbmc9KGZ1bmN0aW9uKHN0cixvcHRfcmFkaXgpe2lmKHN0ci5sZW5ndGg9PTApe3Rocm93IEVycm9yKCJudW1iZXIgZm9ybWF0IGVycm9yOiBlbXB0eSBzdHJpbmciKX12YXIgcmFkaXg9b3B0X3JhZGl4fHwxMDtpZihyYWRpeDwyfHwzNjxyYWRpeCl7dGhyb3cgRXJyb3IoInJhZGl4IG91dCBvZiByYW5nZTogIityYWRpeCl9aWYoc3RyLmNoYXJBdCgwKT09Ii0iKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbVN0cmluZyhzdHIuc3Vic3RyaW5nKDEpLHJhZGl4KS5uZWdhdGUoKX1lbHNlIGlmKHN0ci5pbmRleE9mKCItIik+PTApe3Rocm93IEVycm9yKCdudW1iZXIgZm9ybWF0IGVycm9yOiBpbnRlcmlvciAiLSIgY2hhcmFjdGVyOiAnK3N0cil9dmFyIHJhZGl4VG9Qb3dlcj1nb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LDgpKTt2YXIgcmVzdWx0PWdvb2cubWF0aC5Mb25nLlpFUk87Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoO2krPTgpe3ZhciBzaXplPU1hdGgubWluKDgsc3RyLmxlbmd0aC1pKTt2YXIgdmFsdWU9cGFyc2VJbnQoc3RyLnN1YnN0cmluZyhpLGkrc2l6ZSkscmFkaXgpO2lmKHNpemU8OCl7dmFyIHBvd2VyPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsc2l6ZSkpO3Jlc3VsdD1yZXN1bHQubXVsdGlwbHkocG93ZXIpLmFkZChnb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKHZhbHVlKSl9ZWxzZXtyZXN1bHQ9cmVzdWx0Lm11bHRpcGx5KHJhZGl4VG9Qb3dlcik7cmVzdWx0PXJlc3VsdC5hZGQoZ29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcih2YWx1ZSkpfX1yZXR1cm4gcmVzdWx0fSk7Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8xNl9EQkxfPTE8PDE2O2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfREJMXz0xPDwyNDtnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF89Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8xNl9EQkxfKmdvb2cubWF0aC5Mb25nLlRXT19QV1JfMTZfREJMXztnb29nLm1hdGguTG9uZy5UV09fUFdSXzMxX0RCTF89Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8zMl9EQkxfLzI7Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl80OF9EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXypnb29nLm1hdGguTG9uZy5UV09fUFdSXzE2X0RCTF87Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl82NF9EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXypnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF87Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl82M19EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjRfREJMXy8yO2dvb2cubWF0aC5Mb25nLlpFUk89Z29vZy5tYXRoLkxvbmcuZnJvbUludCgwKTtnb29nLm1hdGguTG9uZy5PTkU9Z29vZy5tYXRoLkxvbmcuZnJvbUludCgxKTtnb29nLm1hdGguTG9uZy5ORUdfT05FPWdvb2cubWF0aC5Mb25nLmZyb21JbnQoLTEpO2dvb2cubWF0aC5Mb25nLk1BWF9WQUxVRT1nb29nLm1hdGguTG9uZy5mcm9tQml0cyg0Mjk0OTY3Mjk1fDAsMjE0NzQ4MzY0N3wwKTtnb29nLm1hdGguTG9uZy5NSU5fVkFMVUU9Z29vZy5tYXRoLkxvbmcuZnJvbUJpdHMoMCwyMTQ3NDgzNjQ4fDApO2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfPWdvb2cubWF0aC5Mb25nLmZyb21JbnQoMTw8MjQpO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS50b0ludD0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnRvTnVtYmVyPShmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZ2hfKmdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXyt0aGlzLmdldExvd0JpdHNVbnNpZ25lZCgpfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnRvU3RyaW5nPShmdW5jdGlvbihvcHRfcmFkaXgpe3ZhciByYWRpeD1vcHRfcmFkaXh8fDEwO2lmKHJhZGl4PDJ8fDM2PHJhZGl4KXt0aHJvdyBFcnJvcigicmFkaXggb3V0IG9mIHJhbmdlOiAiK3JhZGl4KX1pZih0aGlzLmlzWmVybygpKXtyZXR1cm4iMCJ9aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKHRoaXMuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRSkpe3ZhciByYWRpeExvbmc9Z29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcihyYWRpeCk7dmFyIGRpdj10aGlzLmRpdihyYWRpeExvbmcpO3ZhciByZW09ZGl2Lm11bHRpcGx5KHJhZGl4TG9uZykuc3VidHJhY3QodGhpcyk7cmV0dXJuIGRpdi50b1N0cmluZyhyYWRpeCkrcmVtLnRvSW50KCkudG9TdHJpbmcocmFkaXgpfWVsc2V7cmV0dXJuIi0iK3RoaXMubmVnYXRlKCkudG9TdHJpbmcocmFkaXgpfX12YXIgcmFkaXhUb1Bvd2VyPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsNikpO3ZhciByZW09dGhpczt2YXIgcmVzdWx0PSIiO3doaWxlKHRydWUpe3ZhciByZW1EaXY9cmVtLmRpdihyYWRpeFRvUG93ZXIpO3ZhciBpbnR2YWw9cmVtLnN1YnRyYWN0KHJlbURpdi5tdWx0aXBseShyYWRpeFRvUG93ZXIpKS50b0ludCgpO3ZhciBkaWdpdHM9aW50dmFsLnRvU3RyaW5nKHJhZGl4KTtyZW09cmVtRGl2O2lmKHJlbS5pc1plcm8oKSl7cmV0dXJuIGRpZ2l0cytyZXN1bHR9ZWxzZXt3aGlsZShkaWdpdHMubGVuZ3RoPDYpe2RpZ2l0cz0iMCIrZGlnaXRzfXJlc3VsdD0iIitkaWdpdHMrcmVzdWx0fX19KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZ2V0SGlnaEJpdHM9KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGlnaF99KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZ2V0TG93Qml0cz0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdldExvd0JpdHNVbnNpZ25lZD0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dfPj0wP3RoaXMubG93Xzpnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF8rdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdldE51bUJpdHNBYnM9KGZ1bmN0aW9uKCl7aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKHRoaXMuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRSkpe3JldHVybiA2NH1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLmdldE51bUJpdHNBYnMoKX19ZWxzZXt2YXIgdmFsPXRoaXMuaGlnaF8hPTA/dGhpcy5oaWdoXzp0aGlzLmxvd187Zm9yKHZhciBiaXQ9MzE7Yml0PjA7Yml0LS0pe2lmKCh2YWwmMTw8Yml0KSE9MCl7YnJlYWt9fXJldHVybiB0aGlzLmhpZ2hfIT0wP2JpdCszMzpiaXQrMX19KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuaXNaZXJvPShmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZ2hfPT0wJiZ0aGlzLmxvd189PTB9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuaXNOZWdhdGl2ZT0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWdoXzwwfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmlzT2RkPShmdW5jdGlvbigpe3JldHVybih0aGlzLmxvd18mMSk9PTF9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZXF1YWxzPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuaGlnaF89PW90aGVyLmhpZ2hfJiZ0aGlzLmxvd189PW90aGVyLmxvd199KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubm90RXF1YWxzPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuaGlnaF8hPW90aGVyLmhpZ2hffHx0aGlzLmxvd18hPW90aGVyLmxvd199KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubGVzc1RoYW49KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5jb21wYXJlKG90aGVyKTwwfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmxlc3NUaGFuT3JFcXVhbD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0aGlzLmNvbXBhcmUob3RoZXIpPD0wfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdyZWF0ZXJUaGFuPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuY29tcGFyZShvdGhlcik+MH0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5ncmVhdGVyVGhhbk9yRXF1YWw9KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5jb21wYXJlKG90aGVyKT49MH0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5jb21wYXJlPShmdW5jdGlvbihvdGhlcil7aWYodGhpcy5lcXVhbHMob3RoZXIpKXtyZXR1cm4gMH12YXIgdGhpc05lZz10aGlzLmlzTmVnYXRpdmUoKTt2YXIgb3RoZXJOZWc9b3RoZXIuaXNOZWdhdGl2ZSgpO2lmKHRoaXNOZWcmJiFvdGhlck5lZyl7cmV0dXJuLTF9aWYoIXRoaXNOZWcmJm90aGVyTmVnKXtyZXR1cm4gMX1pZih0aGlzLnN1YnRyYWN0KG90aGVyKS5pc05lZ2F0aXZlKCkpe3JldHVybi0xfWVsc2V7cmV0dXJuIDF9fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLm5lZ2F0ZT0oZnVuY3Rpb24oKXtpZih0aGlzLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFfWVsc2V7cmV0dXJuIHRoaXMubm90KCkuYWRkKGdvb2cubWF0aC5Mb25nLk9ORSl9fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmFkZD0oZnVuY3Rpb24ob3RoZXIpe3ZhciBhNDg9dGhpcy5oaWdoXz4+PjE2O3ZhciBhMzI9dGhpcy5oaWdoXyY2NTUzNTt2YXIgYTE2PXRoaXMubG93Xz4+PjE2O3ZhciBhMDA9dGhpcy5sb3dfJjY1NTM1O3ZhciBiNDg9b3RoZXIuaGlnaF8+Pj4xNjt2YXIgYjMyPW90aGVyLmhpZ2hfJjY1NTM1O3ZhciBiMTY9b3RoZXIubG93Xz4+PjE2O3ZhciBiMDA9b3RoZXIubG93XyY2NTUzNTt2YXIgYzQ4PTAsYzMyPTAsYzE2PTAsYzAwPTA7YzAwKz1hMDArYjAwO2MxNis9YzAwPj4+MTY7YzAwJj02NTUzNTtjMTYrPWExNitiMTY7YzMyKz1jMTY+Pj4xNjtjMTYmPTY1NTM1O2MzMis9YTMyK2IzMjtjNDgrPWMzMj4+PjE2O2MzMiY9NjU1MzU7YzQ4Kz1hNDgrYjQ4O2M0OCY9NjU1MzU7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGMxNjw8MTZ8YzAwLGM0ODw8MTZ8YzMyKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5zdWJ0cmFjdD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0aGlzLmFkZChvdGhlci5uZWdhdGUoKSl9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubXVsdGlwbHk9KGZ1bmN0aW9uKG90aGVyKXtpZih0aGlzLmlzWmVybygpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuWkVST31lbHNlIGlmKG90aGVyLmlzWmVybygpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuWkVST31pZih0aGlzLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gb3RoZXIuaXNPZGQoKT9nb29nLm1hdGguTG9uZy5NSU5fVkFMVUU6Z29vZy5tYXRoLkxvbmcuWkVST31lbHNlIGlmKG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gdGhpcy5pc09kZCgpP2dvb2cubWF0aC5Mb25nLk1JTl9WQUxVRTpnb29nLm1hdGguTG9uZy5aRVJPfWlmKHRoaXMuaXNOZWdhdGl2ZSgpKXtpZihvdGhlci5pc05lZ2F0aXZlKCkpe3JldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG90aGVyLm5lZ2F0ZSgpKX1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG90aGVyKS5uZWdhdGUoKX19ZWxzZSBpZihvdGhlci5pc05lZ2F0aXZlKCkpe3JldHVybiB0aGlzLm11bHRpcGx5KG90aGVyLm5lZ2F0ZSgpKS5uZWdhdGUoKX1pZih0aGlzLmxlc3NUaGFuKGdvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfKSYmb3RoZXIubGVzc1RoYW4oZ29vZy5tYXRoLkxvbmcuVFdPX1BXUl8yNF8pKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcih0aGlzLnRvTnVtYmVyKCkqb3RoZXIudG9OdW1iZXIoKSl9dmFyIGE0OD10aGlzLmhpZ2hfPj4+MTY7dmFyIGEzMj10aGlzLmhpZ2hfJjY1NTM1O3ZhciBhMTY9dGhpcy5sb3dfPj4+MTY7dmFyIGEwMD10aGlzLmxvd18mNjU1MzU7dmFyIGI0OD1vdGhlci5oaWdoXz4+PjE2O3ZhciBiMzI9b3RoZXIuaGlnaF8mNjU1MzU7dmFyIGIxNj1vdGhlci5sb3dfPj4+MTY7dmFyIGIwMD1vdGhlci5sb3dfJjY1NTM1O3ZhciBjNDg9MCxjMzI9MCxjMTY9MCxjMDA9MDtjMDArPWEwMCpiMDA7YzE2Kz1jMDA+Pj4xNjtjMDAmPTY1NTM1O2MxNis9YTE2KmIwMDtjMzIrPWMxNj4+PjE2O2MxNiY9NjU1MzU7YzE2Kz1hMDAqYjE2O2MzMis9YzE2Pj4+MTY7YzE2Jj02NTUzNTtjMzIrPWEzMipiMDA7YzQ4Kz1jMzI+Pj4xNjtjMzImPTY1NTM1O2MzMis9YTE2KmIxNjtjNDgrPWMzMj4+PjE2O2MzMiY9NjU1MzU7YzMyKz1hMDAqYjMyO2M0OCs9YzMyPj4+MTY7YzMyJj02NTUzNTtjNDgrPWE0OCpiMDArYTMyKmIxNithMTYqYjMyK2EwMCpiNDg7YzQ4Jj02NTUzNTtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHMoYzE2PDwxNnxjMDAsYzQ4PDwxNnxjMzIpfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmRpdj0oZnVuY3Rpb24ob3RoZXIpe2lmKG90aGVyLmlzWmVybygpKXt0aHJvdyBFcnJvcigiZGl2aXNpb24gYnkgemVybyIpfWVsc2UgaWYodGhpcy5pc1plcm8oKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99aWYodGhpcy5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFKSl7aWYob3RoZXIuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk9ORSl8fG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5ORUdfT05FKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRX1lbHNlIGlmKG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuT05FfWVsc2V7dmFyIGhhbGZUaGlzPXRoaXMuc2hpZnRSaWdodCgxKTt2YXIgYXBwcm94PWhhbGZUaGlzLmRpdihvdGhlcikuc2hpZnRMZWZ0KDEpO2lmKGFwcHJveC5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuWkVSTykpe3JldHVybiBvdGhlci5pc05lZ2F0aXZlKCk/Z29vZy5tYXRoLkxvbmcuT05FOmdvb2cubWF0aC5Mb25nLk5FR19PTkV9ZWxzZXt2YXIgcmVtPXRoaXMuc3VidHJhY3Qob3RoZXIubXVsdGlwbHkoYXBwcm94KSk7dmFyIHJlc3VsdD1hcHByb3guYWRkKHJlbS5kaXYob3RoZXIpKTtyZXR1cm4gcmVzdWx0fX19ZWxzZSBpZihvdGhlci5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKG90aGVyLmlzTmVnYXRpdmUoKSl7cmV0dXJuIHRoaXMubmVnYXRlKCkuZGl2KG90aGVyLm5lZ2F0ZSgpKX1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLmRpdihvdGhlcikubmVnYXRlKCl9fWVsc2UgaWYob3RoZXIuaXNOZWdhdGl2ZSgpKXtyZXR1cm4gdGhpcy5kaXYob3RoZXIubmVnYXRlKCkpLm5lZ2F0ZSgpfXZhciByZXM9Z29vZy5tYXRoLkxvbmcuWkVSTzt2YXIgcmVtPXRoaXM7d2hpbGUocmVtLmdyZWF0ZXJUaGFuT3JFcXVhbChvdGhlcikpe3ZhciBhcHByb3g9TWF0aC5tYXgoMSxNYXRoLmZsb29yKHJlbS50b051bWJlcigpL290aGVyLnRvTnVtYmVyKCkpKTt2YXIgbG9nMj1NYXRoLmNlaWwoTWF0aC5sb2coYXBwcm94KS9NYXRoLkxOMik7dmFyIGRlbHRhPWxvZzI8PTQ4PzE6TWF0aC5wb3coMixsb2cyLTQ4KTt2YXIgYXBwcm94UmVzPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoYXBwcm94KTt2YXIgYXBwcm94UmVtPWFwcHJveFJlcy5tdWx0aXBseShvdGhlcik7d2hpbGUoYXBwcm94UmVtLmlzTmVnYXRpdmUoKXx8YXBwcm94UmVtLmdyZWF0ZXJUaGFuKHJlbSkpe2FwcHJveC09ZGVsdGE7YXBwcm94UmVzPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoYXBwcm94KTthcHByb3hSZW09YXBwcm94UmVzLm11bHRpcGx5KG90aGVyKX1pZihhcHByb3hSZXMuaXNaZXJvKCkpe2FwcHJveFJlcz1nb29nLm1hdGguTG9uZy5PTkV9cmVzPXJlcy5hZGQoYXBwcm94UmVzKTtyZW09cmVtLnN1YnRyYWN0KGFwcHJveFJlbSl9cmV0dXJuIHJlc30pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5tb2R1bG89KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5zdWJ0cmFjdCh0aGlzLmRpdihvdGhlcikubXVsdGlwbHkob3RoZXIpKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5ub3Q9KGZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKH50aGlzLmxvd18sfnRoaXMuaGlnaF8pfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmFuZD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyh0aGlzLmxvd18mb3RoZXIubG93Xyx0aGlzLmhpZ2hfJm90aGVyLmhpZ2hfKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5vcj0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyh0aGlzLmxvd198b3RoZXIubG93Xyx0aGlzLmhpZ2hffG90aGVyLmhpZ2hfKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS54b3I9KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHModGhpcy5sb3dfXm90aGVyLmxvd18sdGhpcy5oaWdoX15vdGhlci5oaWdoXyl9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuc2hpZnRMZWZ0PShmdW5jdGlvbihudW1CaXRzKXtudW1CaXRzJj02MztpZihudW1CaXRzPT0wKXtyZXR1cm4gdGhpc31lbHNle3ZhciBsb3c9dGhpcy5sb3dfO2lmKG51bUJpdHM8MzIpe3ZhciBoaWdoPXRoaXMuaGlnaF87cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGxvdzw8bnVtQml0cyxoaWdoPDxudW1CaXRzfGxvdz4+PjMyLW51bUJpdHMpfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKDAsbG93PDxudW1CaXRzLTMyKX19fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnNoaWZ0UmlnaHQ9KGZ1bmN0aW9uKG51bUJpdHMpe251bUJpdHMmPTYzO2lmKG51bUJpdHM9PTApe3JldHVybiB0aGlzfWVsc2V7dmFyIGhpZ2g9dGhpcy5oaWdoXztpZihudW1CaXRzPDMyKXt2YXIgbG93PXRoaXMubG93XztyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHMobG93Pj4+bnVtQml0c3xoaWdoPDwzMi1udW1CaXRzLGhpZ2g+Pm51bUJpdHMpfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGhpZ2g+Pm51bUJpdHMtMzIsaGlnaD49MD8wOi0xKX19fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnNoaWZ0UmlnaHRVbnNpZ25lZD0oZnVuY3Rpb24obnVtQml0cyl7bnVtQml0cyY9NjM7aWYobnVtQml0cz09MCl7cmV0dXJuIHRoaXN9ZWxzZXt2YXIgaGlnaD10aGlzLmhpZ2hfO2lmKG51bUJpdHM8MzIpe3ZhciBsb3c9dGhpcy5sb3dfO3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyhsb3c+Pj5udW1CaXRzfGhpZ2g8PDMyLW51bUJpdHMsaGlnaD4+Pm51bUJpdHMpfWVsc2UgaWYobnVtQml0cz09MzIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyhoaWdoLDApfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGhpZ2g+Pj5udW1CaXRzLTMyLDApfX19KTt2YXIgbmF2aWdhdG9yPXthcHBOYW1lOiJNb2Rlcm4gQnJvd3NlciJ9O3ZhciBkYml0czt2YXIgY2FuYXJ5PTB4ZGVhZGJlZWZjYWZlO3ZhciBqX2xtPShjYW5hcnkmMTY3NzcyMTUpPT0xNTcxNTA3MDtmdW5jdGlvbiBCaWdJbnRlZ2VyKGEsYixjKXtpZihhIT1udWxsKWlmKCJudW1iZXIiPT10eXBlb2YgYSl0aGlzLmZyb21OdW1iZXIoYSxiLGMpO2Vsc2UgaWYoYj09bnVsbCYmInN0cmluZyIhPXR5cGVvZiBhKXRoaXMuZnJvbVN0cmluZyhhLDI1Nik7ZWxzZSB0aGlzLmZyb21TdHJpbmcoYSxiKX1mdW5jdGlvbiBuYmkoKXtyZXR1cm4gbmV3IEJpZ0ludGVnZXIobnVsbCl9ZnVuY3Rpb24gYW0xKGkseCx3LGosYyxuKXt3aGlsZSgtLW4+PTApe3ZhciB2PXgqdGhpc1tpKytdK3dbal0rYztjPU1hdGguZmxvb3Iodi82NzEwODg2NCk7d1tqKytdPXYmNjcxMDg4NjN9cmV0dXJuIGN9ZnVuY3Rpb24gYW0yKGkseCx3LGosYyxuKXt2YXIgeGw9eCYzMjc2Nyx4aD14Pj4xNTt3aGlsZSgtLW4+PTApe3ZhciBsPXRoaXNbaV0mMzI3Njc7dmFyIGg9dGhpc1tpKytdPj4xNTt2YXIgbT14aCpsK2gqeGw7bD14bCpsKygobSYzMjc2Nyk8PDE1KSt3W2pdKyhjJjEwNzM3NDE4MjMpO2M9KGw+Pj4zMCkrKG0+Pj4xNSkreGgqaCsoYz4+PjMwKTt3W2orK109bCYxMDczNzQxODIzfXJldHVybiBjfWZ1bmN0aW9uIGFtMyhpLHgsdyxqLGMsbil7dmFyIHhsPXgmMTYzODMseGg9eD4+MTQ7d2hpbGUoLS1uPj0wKXt2YXIgbD10aGlzW2ldJjE2MzgzO3ZhciBoPXRoaXNbaSsrXT4+MTQ7dmFyIG09eGgqbCtoKnhsO2w9eGwqbCsoKG0mMTYzODMpPDwxNCkrd1tqXStjO2M9KGw+PjI4KSsobT4+MTQpK3hoKmg7d1tqKytdPWwmMjY4NDM1NDU1fXJldHVybiBjfWlmKGpfbG0mJm5hdmlnYXRvci5hcHBOYW1lPT0iTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIil7QmlnSW50ZWdlci5wcm90b3R5cGUuYW09YW0yO2RiaXRzPTMwfWVsc2UgaWYoal9sbSYmbmF2aWdhdG9yLmFwcE5hbWUhPSJOZXRzY2FwZSIpe0JpZ0ludGVnZXIucHJvdG90eXBlLmFtPWFtMTtkYml0cz0yNn1lbHNle0JpZ0ludGVnZXIucHJvdG90eXBlLmFtPWFtMztkYml0cz0yOH1CaWdJbnRlZ2VyLnByb3RvdHlwZS5EQj1kYml0cztCaWdJbnRlZ2VyLnByb3RvdHlwZS5ETT0oMTw8ZGJpdHMpLTE7QmlnSW50ZWdlci5wcm90b3R5cGUuRFY9MTw8ZGJpdHM7dmFyIEJJX0ZQPTUyO0JpZ0ludGVnZXIucHJvdG90eXBlLkZWPU1hdGgucG93KDIsQklfRlApO0JpZ0ludGVnZXIucHJvdG90eXBlLkYxPUJJX0ZQLWRiaXRzO0JpZ0ludGVnZXIucHJvdG90eXBlLkYyPTIqZGJpdHMtQklfRlA7dmFyIEJJX1JNPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO3ZhciBCSV9SQz1uZXcgQXJyYXk7dmFyIHJyLHZ2O3JyPSIwIi5jaGFyQ29kZUF0KDApO2Zvcih2dj0wO3Z2PD05OysrdnYpQklfUkNbcnIrK109dnY7cnI9ImEiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpQklfUkNbcnIrK109dnY7cnI9IkEiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpQklfUkNbcnIrK109dnY7ZnVuY3Rpb24gaW50MmNoYXIobil7cmV0dXJuIEJJX1JNLmNoYXJBdChuKX1mdW5jdGlvbiBpbnRBdChzLGkpe3ZhciBjPUJJX1JDW3MuY2hhckNvZGVBdChpKV07cmV0dXJuIGM9PW51bGw/LTE6Y31mdW5jdGlvbiBibnBDb3B5VG8ocil7Zm9yKHZhciBpPXRoaXMudC0xO2k+PTA7LS1pKXJbaV09dGhpc1tpXTtyLnQ9dGhpcy50O3Iucz10aGlzLnN9ZnVuY3Rpb24gYm5wRnJvbUludCh4KXt0aGlzLnQ9MTt0aGlzLnM9eDwwPy0xOjA7aWYoeD4wKXRoaXNbMF09eDtlbHNlIGlmKHg8LTEpdGhpc1swXT14K0RWO2Vsc2UgdGhpcy50PTB9ZnVuY3Rpb24gbmJ2KGkpe3ZhciByPW5iaSgpO3IuZnJvbUludChpKTtyZXR1cm4gcn1mdW5jdGlvbiBibnBGcm9tU3RyaW5nKHMsYil7dmFyIGs7aWYoYj09MTYpaz00O2Vsc2UgaWYoYj09OClrPTM7ZWxzZSBpZihiPT0yNTYpaz04O2Vsc2UgaWYoYj09MilrPTE7ZWxzZSBpZihiPT0zMilrPTU7ZWxzZSBpZihiPT00KWs9MjtlbHNle3RoaXMuZnJvbVJhZGl4KHMsYik7cmV0dXJufXRoaXMudD0wO3RoaXMucz0wO3ZhciBpPXMubGVuZ3RoLG1pPWZhbHNlLHNoPTA7d2hpbGUoLS1pPj0wKXt2YXIgeD1rPT04P3NbaV0mMjU1OmludEF0KHMsaSk7aWYoeDwwKXtpZihzLmNoYXJBdChpKT09Ii0iKW1pPXRydWU7Y29udGludWV9bWk9ZmFsc2U7aWYoc2g9PTApdGhpc1t0aGlzLnQrK109eDtlbHNlIGlmKHNoK2s+dGhpcy5EQil7dGhpc1t0aGlzLnQtMV18PSh4JigxPDx0aGlzLkRCLXNoKS0xKTw8c2g7dGhpc1t0aGlzLnQrK109eD4+dGhpcy5EQi1zaH1lbHNlIHRoaXNbdGhpcy50LTFdfD14PDxzaDtzaCs9aztpZihzaD49dGhpcy5EQilzaC09dGhpcy5EQn1pZihrPT04JiYoc1swXSYxMjgpIT0wKXt0aGlzLnM9LTE7aWYoc2g+MCl0aGlzW3RoaXMudC0xXXw9KDE8PHRoaXMuREItc2gpLTE8PHNofXRoaXMuY2xhbXAoKTtpZihtaSlCaWdJbnRlZ2VyLlpFUk8uc3ViVG8odGhpcyx0aGlzKX1mdW5jdGlvbiBibnBDbGFtcCgpe3ZhciBjPXRoaXMucyZ0aGlzLkRNO3doaWxlKHRoaXMudD4wJiZ0aGlzW3RoaXMudC0xXT09YyktLXRoaXMudH1mdW5jdGlvbiBiblRvU3RyaW5nKGIpe2lmKHRoaXMuczwwKXJldHVybiItIit0aGlzLm5lZ2F0ZSgpLnRvU3RyaW5nKGIpO3ZhciBrO2lmKGI9PTE2KWs9NDtlbHNlIGlmKGI9PTgpaz0zO2Vsc2UgaWYoYj09MilrPTE7ZWxzZSBpZihiPT0zMilrPTU7ZWxzZSBpZihiPT00KWs9MjtlbHNlIHJldHVybiB0aGlzLnRvUmFkaXgoYik7dmFyIGttPSgxPDxrKS0xLGQsbT1mYWxzZSxyPSIiLGk9dGhpcy50O3ZhciBwPXRoaXMuREItaSp0aGlzLkRCJWs7aWYoaS0tPjApe2lmKHA8dGhpcy5EQiYmKGQ9dGhpc1tpXT4+cCk+MCl7bT10cnVlO3I9aW50MmNoYXIoZCl9d2hpbGUoaT49MCl7aWYocDxrKXtkPSh0aGlzW2ldJigxPDxwKS0xKTw8ay1wO2R8PXRoaXNbLS1pXT4+KHArPXRoaXMuREItayl9ZWxzZXtkPXRoaXNbaV0+PihwLT1rKSZrbTtpZihwPD0wKXtwKz10aGlzLkRCOy0taX19aWYoZD4wKW09dHJ1ZTtpZihtKXIrPWludDJjaGFyKGQpfX1yZXR1cm4gbT9yOiIwIn1mdW5jdGlvbiBibk5lZ2F0ZSgpe3ZhciByPW5iaSgpO0JpZ0ludGVnZXIuWkVSTy5zdWJUbyh0aGlzLHIpO3JldHVybiByfWZ1bmN0aW9uIGJuQWJzKCl7cmV0dXJuIHRoaXMuczwwP3RoaXMubmVnYXRlKCk6dGhpc31mdW5jdGlvbiBibkNvbXBhcmVUbyhhKXt2YXIgcj10aGlzLnMtYS5zO2lmKHIhPTApcmV0dXJuIHI7dmFyIGk9dGhpcy50O3I9aS1hLnQ7aWYociE9MClyZXR1cm4gdGhpcy5zPDA/LXI6cjt3aGlsZSgtLWk+PTApaWYoKHI9dGhpc1tpXS1hW2ldKSE9MClyZXR1cm4gcjtyZXR1cm4gMH1mdW5jdGlvbiBuYml0cyh4KXt2YXIgcj0xLHQ7aWYoKHQ9eD4+PjE2KSE9MCl7eD10O3IrPTE2fWlmKCh0PXg+PjgpIT0wKXt4PXQ7cis9OH1pZigodD14Pj40KSE9MCl7eD10O3IrPTR9aWYoKHQ9eD4+MikhPTApe3g9dDtyKz0yfWlmKCh0PXg+PjEpIT0wKXt4PXQ7cis9MX1yZXR1cm4gcn1mdW5jdGlvbiBibkJpdExlbmd0aCgpe2lmKHRoaXMudDw9MClyZXR1cm4gMDtyZXR1cm4gdGhpcy5EQioodGhpcy50LTEpK25iaXRzKHRoaXNbdGhpcy50LTFdXnRoaXMucyZ0aGlzLkRNKX1mdW5jdGlvbiBibnBETFNoaWZ0VG8obixyKXt2YXIgaTtmb3IoaT10aGlzLnQtMTtpPj0wOy0taSlyW2krbl09dGhpc1tpXTtmb3IoaT1uLTE7aT49MDstLWkpcltpXT0wO3IudD10aGlzLnQrbjtyLnM9dGhpcy5zfWZ1bmN0aW9uIGJucERSU2hpZnRUbyhuLHIpe2Zvcih2YXIgaT1uO2k8dGhpcy50OysraSlyW2ktbl09dGhpc1tpXTtyLnQ9TWF0aC5tYXgodGhpcy50LW4sMCk7ci5zPXRoaXMuc31mdW5jdGlvbiBibnBMU2hpZnRUbyhuLHIpe3ZhciBicz1uJXRoaXMuREI7dmFyIGNicz10aGlzLkRCLWJzO3ZhciBibT0oMTw8Y2JzKS0xO3ZhciBkcz1NYXRoLmZsb29yKG4vdGhpcy5EQiksYz10aGlzLnM8PGJzJnRoaXMuRE0saTtmb3IoaT10aGlzLnQtMTtpPj0wOy0taSl7cltpK2RzKzFdPXRoaXNbaV0+PmNic3xjO2M9KHRoaXNbaV0mYm0pPDxic31mb3IoaT1kcy0xO2k+PTA7LS1pKXJbaV09MDtyW2RzXT1jO3IudD10aGlzLnQrZHMrMTtyLnM9dGhpcy5zO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBSU2hpZnRUbyhuLHIpe3Iucz10aGlzLnM7dmFyIGRzPU1hdGguZmxvb3Iobi90aGlzLkRCKTtpZihkcz49dGhpcy50KXtyLnQ9MDtyZXR1cm59dmFyIGJzPW4ldGhpcy5EQjt2YXIgY2JzPXRoaXMuREItYnM7dmFyIGJtPSgxPDxicyktMTtyWzBdPXRoaXNbZHNdPj5icztmb3IodmFyIGk9ZHMrMTtpPHRoaXMudDsrK2kpe3JbaS1kcy0xXXw9KHRoaXNbaV0mYm0pPDxjYnM7cltpLWRzXT10aGlzW2ldPj5ic31pZihicz4wKXJbdGhpcy50LWRzLTFdfD0odGhpcy5zJmJtKTw8Y2JzO3IudD10aGlzLnQtZHM7ci5jbGFtcCgpfWZ1bmN0aW9uIGJucFN1YlRvKGEscil7dmFyIGk9MCxjPTAsbT1NYXRoLm1pbihhLnQsdGhpcy50KTt3aGlsZShpPG0pe2MrPXRoaXNbaV0tYVtpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWlmKGEudDx0aGlzLnQpe2MtPWEuczt3aGlsZShpPHRoaXMudCl7Yys9dGhpc1tpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWMrPXRoaXMuc31lbHNle2MrPXRoaXMuczt3aGlsZShpPGEudCl7Yy09YVtpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWMtPWEuc31yLnM9YzwwPy0xOjA7aWYoYzwtMSlyW2krK109dGhpcy5EVitjO2Vsc2UgaWYoYz4wKXJbaSsrXT1jO3IudD1pO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBNdWx0aXBseVRvKGEscil7dmFyIHg9dGhpcy5hYnMoKSx5PWEuYWJzKCk7dmFyIGk9eC50O3IudD1pK3kudDt3aGlsZSgtLWk+PTApcltpXT0wO2ZvcihpPTA7aTx5LnQ7KytpKXJbaSt4LnRdPXguYW0oMCx5W2ldLHIsaSwwLHgudCk7ci5zPTA7ci5jbGFtcCgpO2lmKHRoaXMucyE9YS5zKUJpZ0ludGVnZXIuWkVSTy5zdWJUbyhyLHIpfWZ1bmN0aW9uIGJucFNxdWFyZVRvKHIpe3ZhciB4PXRoaXMuYWJzKCk7dmFyIGk9ci50PTIqeC50O3doaWxlKC0taT49MClyW2ldPTA7Zm9yKGk9MDtpPHgudC0xOysraSl7dmFyIGM9eC5hbShpLHhbaV0sciwyKmksMCwxKTtpZigocltpK3gudF0rPXguYW0oaSsxLDIqeFtpXSxyLDIqaSsxLGMseC50LWktMSkpPj14LkRWKXtyW2kreC50XS09eC5EVjtyW2kreC50KzFdPTF9fWlmKHIudD4wKXJbci50LTFdKz14LmFtKGkseFtpXSxyLDIqaSwwLDEpO3Iucz0wO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBEaXZSZW1UbyhtLHEscil7dmFyIHBtPW0uYWJzKCk7aWYocG0udDw9MClyZXR1cm47dmFyIHB0PXRoaXMuYWJzKCk7aWYocHQudDxwbS50KXtpZihxIT1udWxsKXEuZnJvbUludCgwKTtpZihyIT1udWxsKXRoaXMuY29weVRvKHIpO3JldHVybn1pZihyPT1udWxsKXI9bmJpKCk7dmFyIHk9bmJpKCksdHM9dGhpcy5zLG1zPW0uczt2YXIgbnNoPXRoaXMuREItbmJpdHMocG1bcG0udC0xXSk7aWYobnNoPjApe3BtLmxTaGlmdFRvKG5zaCx5KTtwdC5sU2hpZnRUbyhuc2gscil9ZWxzZXtwbS5jb3B5VG8oeSk7cHQuY29weVRvKHIpfXZhciB5cz15LnQ7dmFyIHkwPXlbeXMtMV07aWYoeTA9PTApcmV0dXJuO3ZhciB5dD15MCooMTw8dGhpcy5GMSkrKHlzPjE/eVt5cy0yXT4+dGhpcy5GMjowKTt2YXIgZDE9dGhpcy5GVi95dCxkMj0oMTw8dGhpcy5GMSkveXQsZT0xPDx0aGlzLkYyO3ZhciBpPXIudCxqPWkteXMsdD1xPT1udWxsP25iaSgpOnE7eS5kbFNoaWZ0VG8oaix0KTtpZihyLmNvbXBhcmVUbyh0KT49MCl7cltyLnQrK109MTtyLnN1YlRvKHQscil9QmlnSW50ZWdlci5PTkUuZGxTaGlmdFRvKHlzLHQpO3Quc3ViVG8oeSx5KTt3aGlsZSh5LnQ8eXMpeVt5LnQrK109MDt3aGlsZSgtLWo+PTApe3ZhciBxZD1yWy0taV09PXkwP3RoaXMuRE06TWF0aC5mbG9vcihyW2ldKmQxKyhyW2ktMV0rZSkqZDIpO2lmKChyW2ldKz15LmFtKDAscWQscixqLDAseXMpKTxxZCl7eS5kbFNoaWZ0VG8oaix0KTtyLnN1YlRvKHQscik7d2hpbGUocltpXTwtLXFkKXIuc3ViVG8odCxyKX19aWYocSE9bnVsbCl7ci5kclNoaWZ0VG8oeXMscSk7aWYodHMhPW1zKUJpZ0ludGVnZXIuWkVSTy5zdWJUbyhxLHEpfXIudD15cztyLmNsYW1wKCk7aWYobnNoPjApci5yU2hpZnRUbyhuc2gscik7aWYodHM8MClCaWdJbnRlZ2VyLlpFUk8uc3ViVG8ocixyKX1mdW5jdGlvbiBibk1vZChhKXt2YXIgcj1uYmkoKTt0aGlzLmFicygpLmRpdlJlbVRvKGEsbnVsbCxyKTtpZih0aGlzLnM8MCYmci5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKT4wKWEuc3ViVG8ocixyKTtyZXR1cm4gcn1mdW5jdGlvbiBDbGFzc2ljKG0pe3RoaXMubT1tfWZ1bmN0aW9uIGNDb252ZXJ0KHgpe2lmKHguczwwfHx4LmNvbXBhcmVUbyh0aGlzLm0pPj0wKXJldHVybiB4Lm1vZCh0aGlzLm0pO2Vsc2UgcmV0dXJuIHh9ZnVuY3Rpb24gY1JldmVydCh4KXtyZXR1cm4geH1mdW5jdGlvbiBjUmVkdWNlKHgpe3guZGl2UmVtVG8odGhpcy5tLG51bGwseCl9ZnVuY3Rpb24gY011bFRvKHgseSxyKXt4Lm11bHRpcGx5VG8oeSxyKTt0aGlzLnJlZHVjZShyKX1mdW5jdGlvbiBjU3FyVG8oeCxyKXt4LnNxdWFyZVRvKHIpO3RoaXMucmVkdWNlKHIpfUNsYXNzaWMucHJvdG90eXBlLmNvbnZlcnQ9Y0NvbnZlcnQ7Q2xhc3NpYy5wcm90b3R5cGUucmV2ZXJ0PWNSZXZlcnQ7Q2xhc3NpYy5wcm90b3R5cGUucmVkdWNlPWNSZWR1Y2U7Q2xhc3NpYy5wcm90b3R5cGUubXVsVG89Y011bFRvO0NsYXNzaWMucHJvdG90eXBlLnNxclRvPWNTcXJUbztmdW5jdGlvbiBibnBJbnZEaWdpdCgpe2lmKHRoaXMudDwxKXJldHVybiAwO3ZhciB4PXRoaXNbMF07aWYoKHgmMSk9PTApcmV0dXJuIDA7dmFyIHk9eCYzO3k9eSooMi0oeCYxNSkqeSkmMTU7eT15KigyLSh4JjI1NSkqeSkmMjU1O3k9eSooMi0oKHgmNjU1MzUpKnkmNjU1MzUpKSY2NTUzNTt5PXkqKDIteCp5JXRoaXMuRFYpJXRoaXMuRFY7cmV0dXJuIHk+MD90aGlzLkRWLXk6LXl9ZnVuY3Rpb24gTW9udGdvbWVyeShtKXt0aGlzLm09bTt0aGlzLm1wPW0uaW52RGlnaXQoKTt0aGlzLm1wbD10aGlzLm1wJjMyNzY3O3RoaXMubXBoPXRoaXMubXA+PjE1O3RoaXMudW09KDE8PG0uREItMTUpLTE7dGhpcy5tdDI9MiptLnR9ZnVuY3Rpb24gbW9udENvbnZlcnQoeCl7dmFyIHI9bmJpKCk7eC5hYnMoKS5kbFNoaWZ0VG8odGhpcy5tLnQscik7ci5kaXZSZW1Ubyh0aGlzLm0sbnVsbCxyKTtpZih4LnM8MCYmci5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKT4wKXRoaXMubS5zdWJUbyhyLHIpO3JldHVybiByfWZ1bmN0aW9uIG1vbnRSZXZlcnQoeCl7dmFyIHI9bmJpKCk7eC5jb3B5VG8ocik7dGhpcy5yZWR1Y2Uocik7cmV0dXJuIHJ9ZnVuY3Rpb24gbW9udFJlZHVjZSh4KXt3aGlsZSh4LnQ8PXRoaXMubXQyKXhbeC50KytdPTA7Zm9yKHZhciBpPTA7aTx0aGlzLm0udDsrK2kpe3ZhciBqPXhbaV0mMzI3Njc7dmFyIHUwPWoqdGhpcy5tcGwrKChqKnRoaXMubXBoKyh4W2ldPj4xNSkqdGhpcy5tcGwmdGhpcy51bSk8PDE1KSZ4LkRNO2o9aSt0aGlzLm0udDt4W2pdKz10aGlzLm0uYW0oMCx1MCx4LGksMCx0aGlzLm0udCk7d2hpbGUoeFtqXT49eC5EVil7eFtqXS09eC5EVjt4Wysral0rK319eC5jbGFtcCgpO3guZHJTaGlmdFRvKHRoaXMubS50LHgpO2lmKHguY29tcGFyZVRvKHRoaXMubSk+PTApeC5zdWJUbyh0aGlzLm0seCl9ZnVuY3Rpb24gbW9udFNxclRvKHgscil7eC5zcXVhcmVUbyhyKTt0aGlzLnJlZHVjZShyKX1mdW5jdGlvbiBtb250TXVsVG8oeCx5LHIpe3gubXVsdGlwbHlUbyh5LHIpO3RoaXMucmVkdWNlKHIpfU1vbnRnb21lcnkucHJvdG90eXBlLmNvbnZlcnQ9bW9udENvbnZlcnQ7TW9udGdvbWVyeS5wcm90b3R5cGUucmV2ZXJ0PW1vbnRSZXZlcnQ7TW9udGdvbWVyeS5wcm90b3R5cGUucmVkdWNlPW1vbnRSZWR1Y2U7TW9udGdvbWVyeS5wcm90b3R5cGUubXVsVG89bW9udE11bFRvO01vbnRnb21lcnkucHJvdG90eXBlLnNxclRvPW1vbnRTcXJUbztmdW5jdGlvbiBibnBJc0V2ZW4oKXtyZXR1cm4odGhpcy50PjA/dGhpc1swXSYxOnRoaXMucyk9PTB9ZnVuY3Rpb24gYm5wRXhwKGUseil7aWYoZT40Mjk0OTY3Mjk1fHxlPDEpcmV0dXJuIEJpZ0ludGVnZXIuT05FO3ZhciByPW5iaSgpLHIyPW5iaSgpLGc9ei5jb252ZXJ0KHRoaXMpLGk9bmJpdHMoZSktMTtnLmNvcHlUbyhyKTt3aGlsZSgtLWk+PTApe3ouc3FyVG8ocixyMik7aWYoKGUmMTw8aSk+MCl6Lm11bFRvKHIyLGcscik7ZWxzZXt2YXIgdD1yO3I9cjI7cjI9dH19cmV0dXJuIHoucmV2ZXJ0KHIpfWZ1bmN0aW9uIGJuTW9kUG93SW50KGUsbSl7dmFyIHo7aWYoZTwyNTZ8fG0uaXNFdmVuKCkpej1uZXcgQ2xhc3NpYyhtKTtlbHNlIHo9bmV3IE1vbnRnb21lcnkobSk7cmV0dXJuIHRoaXMuZXhwKGUseil9QmlnSW50ZWdlci5wcm90b3R5cGUuY29weVRvPWJucENvcHlUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tSW50PWJucEZyb21JbnQ7QmlnSW50ZWdlci5wcm90b3R5cGUuZnJvbVN0cmluZz1ibnBGcm9tU3RyaW5nO0JpZ0ludGVnZXIucHJvdG90eXBlLmNsYW1wPWJucENsYW1wO0JpZ0ludGVnZXIucHJvdG90eXBlLmRsU2hpZnRUbz1ibnBETFNoaWZ0VG87QmlnSW50ZWdlci5wcm90b3R5cGUuZHJTaGlmdFRvPWJucERSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5sU2hpZnRUbz1ibnBMU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5yU2hpZnRUbz1ibnBSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJUbz1ibnBTdWJUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseVRvPWJucE11bHRpcGx5VG87QmlnSW50ZWdlci5wcm90b3R5cGUuc3F1YXJlVG89Ym5wU3F1YXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuZGl2UmVtVG89Ym5wRGl2UmVtVG87QmlnSW50ZWdlci5wcm90b3R5cGUuaW52RGlnaXQ9Ym5wSW52RGlnaXQ7QmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuPWJucElzRXZlbjtCaWdJbnRlZ2VyLnByb3RvdHlwZS5leHA9Ym5wRXhwO0JpZ0ludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nPWJuVG9TdHJpbmc7QmlnSW50ZWdlci5wcm90b3R5cGUubmVnYXRlPWJuTmVnYXRlO0JpZ0ludGVnZXIucHJvdG90eXBlLmFicz1ibkFicztCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG89Ym5Db21wYXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoPWJuQml0TGVuZ3RoO0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZD1ibk1vZDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3dJbnQ9Ym5Nb2RQb3dJbnQ7QmlnSW50ZWdlci5aRVJPPW5idigwKTtCaWdJbnRlZ2VyLk9ORT1uYnYoMSk7ZnVuY3Rpb24gYm5wRnJvbVJhZGl4KHMsYil7dGhpcy5mcm9tSW50KDApO2lmKGI9PW51bGwpYj0xMDt2YXIgY3M9dGhpcy5jaHVua1NpemUoYik7dmFyIGQ9TWF0aC5wb3coYixjcyksbWk9ZmFsc2Usaj0wLHc9MDtmb3IodmFyIGk9MDtpPHMubGVuZ3RoOysraSl7dmFyIHg9aW50QXQocyxpKTtpZih4PDApe2lmKHMuY2hhckF0KGkpPT0iLSImJnRoaXMuc2lnbnVtKCk9PTApbWk9dHJ1ZTtjb250aW51ZX13PWIqdyt4O2lmKCsraj49Y3Mpe3RoaXMuZE11bHRpcGx5KGQpO3RoaXMuZEFkZE9mZnNldCh3LDApO2o9MDt3PTB9fWlmKGo+MCl7dGhpcy5kTXVsdGlwbHkoTWF0aC5wb3coYixqKSk7dGhpcy5kQWRkT2Zmc2V0KHcsMCl9aWYobWkpQmlnSW50ZWdlci5aRVJPLnN1YlRvKHRoaXMsdGhpcyl9ZnVuY3Rpb24gYm5wQ2h1bmtTaXplKHIpe3JldHVybiBNYXRoLmZsb29yKE1hdGguTE4yKnRoaXMuREIvTWF0aC5sb2cocikpfWZ1bmN0aW9uIGJuU2lnTnVtKCl7aWYodGhpcy5zPDApcmV0dXJuLTE7ZWxzZSBpZih0aGlzLnQ8PTB8fHRoaXMudD09MSYmdGhpc1swXTw9MClyZXR1cm4gMDtlbHNlIHJldHVybiAxfWZ1bmN0aW9uIGJucERNdWx0aXBseShuKXt0aGlzW3RoaXMudF09dGhpcy5hbSgwLG4tMSx0aGlzLDAsMCx0aGlzLnQpOysrdGhpcy50O3RoaXMuY2xhbXAoKX1mdW5jdGlvbiBibnBEQWRkT2Zmc2V0KG4sdyl7aWYobj09MClyZXR1cm47d2hpbGUodGhpcy50PD13KXRoaXNbdGhpcy50KytdPTA7dGhpc1t3XSs9bjt3aGlsZSh0aGlzW3ddPj10aGlzLkRWKXt0aGlzW3ddLT10aGlzLkRWO2lmKCsrdz49dGhpcy50KXRoaXNbdGhpcy50KytdPTA7Kyt0aGlzW3ddfX1mdW5jdGlvbiBibnBUb1JhZGl4KGIpe2lmKGI9PW51bGwpYj0xMDtpZih0aGlzLnNpZ251bSgpPT0wfHxiPDJ8fGI+MzYpcmV0dXJuIjAiO3ZhciBjcz10aGlzLmNodW5rU2l6ZShiKTt2YXIgYT1NYXRoLnBvdyhiLGNzKTt2YXIgZD1uYnYoYSkseT1uYmkoKSx6PW5iaSgpLHI9IiI7dGhpcy5kaXZSZW1UbyhkLHkseik7d2hpbGUoeS5zaWdudW0oKT4wKXtyPShhK3ouaW50VmFsdWUoKSkudG9TdHJpbmcoYikuc3Vic3RyKDEpK3I7eS5kaXZSZW1UbyhkLHkseil9cmV0dXJuIHouaW50VmFsdWUoKS50b1N0cmluZyhiKStyfWZ1bmN0aW9uIGJuSW50VmFsdWUoKXtpZih0aGlzLnM8MCl7aWYodGhpcy50PT0xKXJldHVybiB0aGlzWzBdLXRoaXMuRFY7ZWxzZSBpZih0aGlzLnQ9PTApcmV0dXJuLTF9ZWxzZSBpZih0aGlzLnQ9PTEpcmV0dXJuIHRoaXNbMF07ZWxzZSBpZih0aGlzLnQ9PTApcmV0dXJuIDA7cmV0dXJuKHRoaXNbMV0mKDE8PDMyLXRoaXMuREIpLTEpPDx0aGlzLkRCfHRoaXNbMF19ZnVuY3Rpb24gYm5wQWRkVG8oYSxyKXt2YXIgaT0wLGM9MCxtPU1hdGgubWluKGEudCx0aGlzLnQpO3doaWxlKGk8bSl7Yys9dGhpc1tpXSthW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9aWYoYS50PHRoaXMudCl7Yys9YS5zO3doaWxlKGk8dGhpcy50KXtjKz10aGlzW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9Yys9dGhpcy5zfWVsc2V7Yys9dGhpcy5zO3doaWxlKGk8YS50KXtjKz1hW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9Yys9YS5zfXIucz1jPDA/LTE6MDtpZihjPjApcltpKytdPWM7ZWxzZSBpZihjPC0xKXJbaSsrXT10aGlzLkRWK2M7ci50PWk7ci5jbGFtcCgpfUJpZ0ludGVnZXIucHJvdG90eXBlLmZyb21SYWRpeD1ibnBGcm9tUmFkaXg7QmlnSW50ZWdlci5wcm90b3R5cGUuY2h1bmtTaXplPWJucENodW5rU2l6ZTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaWdudW09Ym5TaWdOdW07QmlnSW50ZWdlci5wcm90b3R5cGUuZE11bHRpcGx5PWJucERNdWx0aXBseTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5kQWRkT2Zmc2V0PWJucERBZGRPZmZzZXQ7QmlnSW50ZWdlci5wcm90b3R5cGUudG9SYWRpeD1ibnBUb1JhZGl4O0JpZ0ludGVnZXIucHJvdG90eXBlLmludFZhbHVlPWJuSW50VmFsdWU7QmlnSW50ZWdlci5wcm90b3R5cGUuYWRkVG89Ym5wQWRkVG87dmFyIFdyYXBwZXI9e2FiczooZnVuY3Rpb24obCxoKXt2YXIgeD1uZXcgZ29vZy5tYXRoLkxvbmcobCxoKTt2YXIgcmV0O2lmKHguaXNOZWdhdGl2ZSgpKXtyZXQ9eC5uZWdhdGUoKX1lbHNle3JldD14fUhFQVAzMlt0ZW1wRG91YmxlUHRyPj4yXT1yZXQubG93XztIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1yZXQuaGlnaF99KSxlbnN1cmVUZW1wczooZnVuY3Rpb24oKXtpZihXcmFwcGVyLmVuc3VyZWRUZW1wcylyZXR1cm47V3JhcHBlci5lbnN1cmVkVGVtcHM9dHJ1ZTtXcmFwcGVyLnR3bzMyPW5ldyBCaWdJbnRlZ2VyO1dyYXBwZXIudHdvMzIuZnJvbVN0cmluZygiNDI5NDk2NzI5NiIsMTApO1dyYXBwZXIudHdvNjQ9bmV3IEJpZ0ludGVnZXI7V3JhcHBlci50d282NC5mcm9tU3RyaW5nKCIxODQ0Njc0NDA3MzcwOTU1MTYxNiIsMTApO1dyYXBwZXIudGVtcDE9bmV3IEJpZ0ludGVnZXI7V3JhcHBlci50ZW1wMj1uZXcgQmlnSW50ZWdlcn0pLGxoMmJpZ251bTooZnVuY3Rpb24obCxoKXt2YXIgYT1uZXcgQmlnSW50ZWdlcjthLmZyb21TdHJpbmcoaC50b1N0cmluZygpLDEwKTt2YXIgYj1uZXcgQmlnSW50ZWdlcjthLm11bHRpcGx5VG8oV3JhcHBlci50d28zMixiKTt2YXIgYz1uZXcgQmlnSW50ZWdlcjtjLmZyb21TdHJpbmcobC50b1N0cmluZygpLDEwKTt2YXIgZD1uZXcgQmlnSW50ZWdlcjtjLmFkZFRvKGIsZCk7cmV0dXJuIGR9KSxzdHJpbmdpZnk6KGZ1bmN0aW9uKGwsaCx1bnNpZ25lZCl7dmFyIHJldD0obmV3IGdvb2cubWF0aC5Mb25nKGwsaCkpLnRvU3RyaW5nKCk7aWYodW5zaWduZWQmJnJldFswXT09Ii0iKXtXcmFwcGVyLmVuc3VyZVRlbXBzKCk7dmFyIGJpZ251bT1uZXcgQmlnSW50ZWdlcjtiaWdudW0uZnJvbVN0cmluZyhyZXQsMTApO3JldD1uZXcgQmlnSW50ZWdlcjtXcmFwcGVyLnR3bzY0LmFkZFRvKGJpZ251bSxyZXQpO3JldD1yZXQudG9TdHJpbmcoMTApfXJldHVybiByZXR9KSxmcm9tU3RyaW5nOihmdW5jdGlvbihzdHIsYmFzZSxtaW4sbWF4LHVuc2lnbmVkKXtXcmFwcGVyLmVuc3VyZVRlbXBzKCk7dmFyIGJpZ251bT1uZXcgQmlnSW50ZWdlcjtiaWdudW0uZnJvbVN0cmluZyhzdHIsYmFzZSk7dmFyIGJpZ21pbj1uZXcgQmlnSW50ZWdlcjtiaWdtaW4uZnJvbVN0cmluZyhtaW4sMTApO3ZhciBiaWdtYXg9bmV3IEJpZ0ludGVnZXI7YmlnbWF4LmZyb21TdHJpbmcobWF4LDEwKTtpZih1bnNpZ25lZCYmYmlnbnVtLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pPDApe3ZhciB0ZW1wPW5ldyBCaWdJbnRlZ2VyO2JpZ251bS5hZGRUbyhXcmFwcGVyLnR3bzY0LHRlbXApO2JpZ251bT10ZW1wfXZhciBlcnJvcj1mYWxzZTtpZihiaWdudW0uY29tcGFyZVRvKGJpZ21pbik8MCl7YmlnbnVtPWJpZ21pbjtlcnJvcj10cnVlfWVsc2UgaWYoYmlnbnVtLmNvbXBhcmVUbyhiaWdtYXgpPjApe2JpZ251bT1iaWdtYXg7ZXJyb3I9dHJ1ZX12YXIgcmV0PWdvb2cubWF0aC5Mb25nLmZyb21TdHJpbmcoYmlnbnVtLnRvU3RyaW5nKCkpO0hFQVAzMlt0ZW1wRG91YmxlUHRyPj4yXT1yZXQubG93XztIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1yZXQuaGlnaF87aWYoZXJyb3IpdGhyb3cicmFuZ2UgZXJyb3IifSl9O3JldHVybiBXcmFwcGVyfSkoKTtpZihtZW1vcnlJbml0aWFsaXplcil7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERXx8RU5WSVJPTk1FTlRfSVNfU0hFTEwpe3ZhciBkYXRhPU1vZHVsZVsicmVhZEJpbmFyeSJdKG1lbW9yeUluaXRpYWxpemVyKTtIRUFQVTguc2V0KGRhdGEsU1RBVElDX0JBU0UpfWVsc2V7YWRkUnVuRGVwZW5kZW5jeSgibWVtb3J5IGluaXRpYWxpemVyIik7QnJvd3Nlci5hc3luY0xvYWQobWVtb3J5SW5pdGlhbGl6ZXIsKGZ1bmN0aW9uKGRhdGEpe0hFQVBVOC5zZXQoZGF0YSxTVEFUSUNfQkFTRSk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgibWVtb3J5IGluaXRpYWxpemVyIil9KSwoZnVuY3Rpb24oZGF0YSl7dGhyb3ciY291bGQgbm90IGxvYWQgbWVtb3J5IGluaXRpYWxpemVyICIrbWVtb3J5SW5pdGlhbGl6ZXJ9KSl9fWZ1bmN0aW9uIEV4aXRTdGF0dXMoc3RhdHVzKXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiO3RoaXMubWVzc2FnZT0iUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgiK3N0YXR1cysiKSI7dGhpcy5zdGF0dXM9c3RhdHVzfUV4aXRTdGF0dXMucHJvdG90eXBlPW5ldyBFcnJvcjtFeGl0U3RhdHVzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FeGl0U3RhdHVzO3ZhciBpbml0aWFsU3RhY2tUb3A7dmFyIHByZWxvYWRTdGFydFRpbWU9bnVsbDt2YXIgY2FsbGVkTWFpbj1mYWxzZTtkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9ZnVuY3Rpb24gcnVuQ2FsbGVyKCl7aWYoIU1vZHVsZVsiY2FsbGVkUnVuIl0mJnNob3VsZFJ1bk5vdylydW4oKTtpZighTW9kdWxlWyJjYWxsZWRSdW4iXSlkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9cnVuQ2FsbGVyfTtNb2R1bGVbImNhbGxNYWluIl09TW9kdWxlLmNhbGxNYWluPWZ1bmN0aW9uIGNhbGxNYWluKGFyZ3Mpe2Fzc2VydChydW5EZXBlbmRlbmNpZXM9PTAsImNhbm5vdCBjYWxsIG1haW4gd2hlbiBhc3luYyBkZXBlbmRlbmNpZXMgcmVtYWluISAobGlzdGVuIG9uIF9fQVRNQUlOX18pIik7YXNzZXJ0KF9fQVRQUkVSVU5fXy5sZW5ndGg9PTAsImNhbm5vdCBjYWxsIG1haW4gd2hlbiBwcmVSdW4gZnVuY3Rpb25zIHJlbWFpbiB0byBiZSBjYWxsZWQiKTthcmdzPWFyZ3N8fFtdO2Vuc3VyZUluaXRSdW50aW1lKCk7dmFyIGFyZ2M9YXJncy5sZW5ndGgrMTtmdW5jdGlvbiBwYWQoKXtmb3IodmFyIGk9MDtpPDQtMTtpKyspe2FyZ3YucHVzaCgwKX19dmFyIGFyZ3Y9W2FsbG9jYXRlKGludEFycmF5RnJvbVN0cmluZygiL2Jpbi90aGlzLnByb2dyYW0iKSwiaTgiLEFMTE9DX05PUk1BTCldO3BhZCgpO2Zvcih2YXIgaT0wO2k8YXJnYy0xO2k9aSsxKXthcmd2LnB1c2goYWxsb2NhdGUoaW50QXJyYXlGcm9tU3RyaW5nKGFyZ3NbaV0pLCJpOCIsQUxMT0NfTk9STUFMKSk7cGFkKCl9YXJndi5wdXNoKDApO2FyZ3Y9YWxsb2NhdGUoYXJndiwiaTMyIixBTExPQ19OT1JNQUwpO2luaXRpYWxTdGFja1RvcD1TVEFDS1RPUDt0cnl7dmFyIHJldD1Nb2R1bGVbIl9tYWluIl0oYXJnYyxhcmd2LDApO2lmKCFNb2R1bGVbIm5vRXhpdFJ1bnRpbWUiXSl7ZXhpdChyZXQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1cyl7cmV0dXJufWVsc2UgaWYoZT09IlNpbXVsYXRlSW5maW5pdGVMb29wIil7TW9kdWxlWyJub0V4aXRSdW50aW1lIl09dHJ1ZTtyZXR1cm59ZWxzZXtpZihlJiZ0eXBlb2YgZT09PSJvYmplY3QiJiZlLnN0YWNrKU1vZHVsZS5wcmludEVycigiZXhjZXB0aW9uIHRocm93bjogIitbZSxlLnN0YWNrXSk7dGhyb3cgZX19ZmluYWxseXtjYWxsZWRNYWluPXRydWV9fTtmdW5jdGlvbiBydW4oYXJncyl7YXJncz1hcmdzfHxNb2R1bGVbImFyZ3VtZW50cyJdO2lmKHByZWxvYWRTdGFydFRpbWU9PT1udWxsKXByZWxvYWRTdGFydFRpbWU9RGF0ZS5ub3coKTtpZihydW5EZXBlbmRlbmNpZXM+MCl7TW9kdWxlLnByaW50RXJyKCJydW4oKSBjYWxsZWQsIGJ1dCBkZXBlbmRlbmNpZXMgcmVtYWluLCBzbyBub3QgcnVubmluZyIpO3JldHVybn1wcmVSdW4oKTtpZihydW5EZXBlbmRlbmNpZXM+MClyZXR1cm47aWYoTW9kdWxlWyJjYWxsZWRSdW4iXSlyZXR1cm47ZnVuY3Rpb24gZG9SdW4oKXtpZihNb2R1bGVbImNhbGxlZFJ1biJdKXJldHVybjtNb2R1bGVbImNhbGxlZFJ1biJdPXRydWU7ZW5zdXJlSW5pdFJ1bnRpbWUoKTtwcmVNYWluKCk7aWYoRU5WSVJPTk1FTlRfSVNfV0VCJiZwcmVsb2FkU3RhcnRUaW1lIT09bnVsbCl7TW9kdWxlLnByaW50RXJyKCJwcmUtbWFpbiBwcmVwIHRpbWU6ICIrKERhdGUubm93KCktcHJlbG9hZFN0YXJ0VGltZSkrIiBtcyIpfWlmKE1vZHVsZVsiX21haW4iXSYmc2hvdWxkUnVuTm93KXtNb2R1bGVbImNhbGxNYWluIl0oYXJncyl9cG9zdFJ1bigpfWlmKE1vZHVsZVsic2V0U3RhdHVzIl0pe01vZHVsZVsic2V0U3RhdHVzIl0oIlJ1bm5pbmcuLi4iKTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7TW9kdWxlWyJzZXRTdGF0dXMiXSgiIil9KSwxKTtpZighQUJPUlQpZG9SdW4oKX0pLDEpfWVsc2V7ZG9SdW4oKX19TW9kdWxlWyJydW4iXT1Nb2R1bGUucnVuPXJ1bjtmdW5jdGlvbiBleGl0KHN0YXR1cyl7QUJPUlQ9dHJ1ZTtFWElUU1RBVFVTPXN0YXR1cztTVEFDS1RPUD1pbml0aWFsU3RhY2tUb3A7ZXhpdFJ1bnRpbWUoKTt0aHJvdyBuZXcgRXhpdFN0YXR1cyhzdGF0dXMpfU1vZHVsZVsiZXhpdCJdPU1vZHVsZS5leGl0PWV4aXQ7ZnVuY3Rpb24gYWJvcnQodGV4dCl7aWYodGV4dCl7TW9kdWxlLnByaW50KHRleHQpO01vZHVsZS5wcmludEVycih0ZXh0KX1BQk9SVD10cnVlO0VYSVRTVEFUVVM9MTt2YXIgZXh0cmE9IlxuSWYgdGhpcyBhYm9ydCgpIGlzIHVuZXhwZWN0ZWQsIGJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIHdoaWNoIGNhbiBnaXZlIG1vcmUgaW5mb3JtYXRpb24uIjt0aHJvdyJhYm9ydCgpIGF0ICIrc3RhY2tUcmFjZSgpK2V4dHJhfU1vZHVsZVsiYWJvcnQiXT1Nb2R1bGUuYWJvcnQ9YWJvcnQ7dmFyIEludGVybmFsRXJyb3I9TW9kdWxlWyJJbnRlcm5hbEVycm9yIl09ZXh0ZW5kRXJyb3IoRXJyb3IsIkludGVybmFsRXJyb3IiKTt2YXIgQmluZGluZ0Vycm9yPU1vZHVsZVsiQmluZGluZ0Vycm9yIl09ZXh0ZW5kRXJyb3IoRXJyb3IsIkJpbmRpbmdFcnJvciIpO3ZhciBVbmJvdW5kVHlwZUVycm9yPU1vZHVsZVsiVW5ib3VuZFR5cGVFcnJvciJdPWV4dGVuZEVycm9yKEJpbmRpbmdFcnJvciwiVW5ib3VuZFR5cGVFcnJvciIpO3ZhciBQdXJlVmlydHVhbEVycm9yPU1vZHVsZVsiUHVyZVZpcnR1YWxFcnJvciJdPWV4dGVuZEVycm9yKEJpbmRpbmdFcnJvciwiUHVyZVZpcnR1YWxFcnJvciIpO2Z1bmN0aW9uIHRocm93SW50ZXJuYWxFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtZXNzYWdlKX1mdW5jdGlvbiB0aHJvd0JpbmRpbmdFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKG1lc3NhZ2UpfWZ1bmN0aW9uIHRocm93VW5ib3VuZFR5cGVFcnJvcihtZXNzYWdlLHR5cGVzKXt2YXIgdW5ib3VuZFR5cGVzPVtdO3ZhciBzZWVuPXt9O2Z1bmN0aW9uIHZpc2l0KHR5cGUpe2lmKHNlZW5bdHlwZV0pe3JldHVybn1pZihyZWdpc3RlcmVkVHlwZXNbdHlwZV0pe3JldHVybn1pZih0eXBlRGVwZW5kZW5jaWVzW3R5cGVdKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdLmZvckVhY2godmlzaXQpO3JldHVybn11bmJvdW5kVHlwZXMucHVzaCh0eXBlKTtzZWVuW3R5cGVdPXRydWV9dHlwZXMuZm9yRWFjaCh2aXNpdCk7dGhyb3cgbmV3IFVuYm91bmRUeXBlRXJyb3IobWVzc2FnZSsiOiAiK3VuYm91bmRUeXBlcy5tYXAoZ2V0VHlwZU5hbWUpLmpvaW4oWyIsICJdKSl9ZnVuY3Rpb24gZW5zdXJlT3ZlcmxvYWRUYWJsZShwcm90byxtZXRob2ROYW1lLGh1bWFuTmFtZSl7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7dmFyIHByZXZGdW5jPXByb3RvW21ldGhvZE5hbWVdO3Byb3RvW21ldGhvZE5hbWVdPShmdW5jdGlvbigpe2lmKCFwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlLmhhc093blByb3BlcnR5KGFyZ3VtZW50cy5sZW5ndGgpKXt0aHJvd0JpbmRpbmdFcnJvcigiRnVuY3Rpb24gJyIraHVtYW5OYW1lKyInIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyAoIithcmd1bWVudHMubGVuZ3RoKyIpIC0gZXhwZWN0cyBvbmUgb2YgKCIrcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSsiKSEiKX1yZXR1cm4gcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmd1bWVudHMubGVuZ3RoXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KTtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlPVtdO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbcHJldkZ1bmMuYXJnQ291bnRdPXByZXZGdW5jfX1mdW5jdGlvbiBleHBvc2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShuYW1lKSl7aWYodW5kZWZpbmVkPT09bnVtQXJndW1lbnRzfHx1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGVbbnVtQXJndW1lbnRzXSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBwdWJsaWMgbmFtZSAnIituYW1lKyInIHR3aWNlIil9ZW5zdXJlT3ZlcmxvYWRUYWJsZShNb2R1bGUsbmFtZSxuYW1lKTtpZihNb2R1bGUuaGFzT3duUHJvcGVydHkobnVtQXJndW1lbnRzKSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBtdWx0aXBsZSBvdmVybG9hZHMgb2YgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1bWVudHMgKCIrbnVtQXJndW1lbnRzKyIpISIpfU1vZHVsZVtuYW1lXS5vdmVybG9hZFRhYmxlW251bUFyZ3VtZW50c109dmFsdWV9ZWxzZXtNb2R1bGVbbmFtZV09dmFsdWU7aWYodW5kZWZpbmVkIT09bnVtQXJndW1lbnRzKXtNb2R1bGVbbmFtZV0ubnVtQXJndW1lbnRzPW51bUFyZ3VtZW50c319fWZ1bmN0aW9uIHJlcGxhY2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKCFNb2R1bGUuaGFzT3duUHJvcGVydHkobmFtZSkpe3Rocm93SW50ZXJuYWxFcnJvcigiUmVwbGFjaW5nIG5vbmV4aXN0YW50IHB1YmxpYyBzeW1ib2wiKX1pZih1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09bnVtQXJndW1lbnRzKXtNb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZVtudW1Bcmd1bWVudHNdPXZhbHVlfWVsc2V7TW9kdWxlW25hbWVdPXZhbHVlfX1mdW5jdGlvbiBleHRlbmRFcnJvcihiYXNlRXJyb3JUeXBlLGVycm9yTmFtZSl7dmFyIGVycm9yQ2xhc3M9Y3JlYXRlTmFtZWRGdW5jdGlvbihlcnJvck5hbWUsKGZ1bmN0aW9uKG1lc3NhZ2Upe3RoaXMubmFtZT1lcnJvck5hbWU7dGhpcy5tZXNzYWdlPW1lc3NhZ2U7dmFyIHN0YWNrPShuZXcgRXJyb3IobWVzc2FnZSkpLnN0YWNrO2lmKHN0YWNrIT09dW5kZWZpbmVkKXt0aGlzLnN0YWNrPXRoaXMudG9TdHJpbmcoKSsiXG4iK3N0YWNrLnJlcGxhY2UoL15FcnJvcig6W15cbl0qKT9cbi8sIiIpfX0pKTtlcnJvckNsYXNzLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGJhc2VFcnJvclR5cGUucHJvdG90eXBlKTtlcnJvckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lcnJvckNsYXNzO2Vycm9yQ2xhc3MucHJvdG90eXBlLnRvU3RyaW5nPShmdW5jdGlvbigpe2lmKHRoaXMubWVzc2FnZT09PXVuZGVmaW5lZCl7cmV0dXJuIHRoaXMubmFtZX1lbHNle3JldHVybiB0aGlzLm5hbWUrIjogIit0aGlzLm1lc3NhZ2V9fSk7cmV0dXJuIGVycm9yQ2xhc3N9ZnVuY3Rpb24gY3JlYXRlTmFtZWRGdW5jdGlvbihuYW1lLGJvZHkpe25hbWU9bWFrZUxlZ2FsRnVuY3Rpb25OYW1lKG5hbWUpO3JldHVybihuZXcgRnVuY3Rpb24oImJvZHkiLCJyZXR1cm4gZnVuY3Rpb24gIituYW1lKyIoKSB7XG4iKycgICAgInVzZSBzdHJpY3QiOycrIiAgICByZXR1cm4gYm9keS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuIisifTtcbiIpKShib2R5KX1mdW5jdGlvbiBfZW1iaW5kX3JlcHIodil7dmFyIHQ9dHlwZW9mIHY7aWYodD09PSJvYmplY3QifHx0PT09ImFycmF5Inx8dD09PSJmdW5jdGlvbiIpe3JldHVybiB2LnRvU3RyaW5nKCl9ZWxzZXtyZXR1cm4iIit2fX12YXIgcmVnaXN0ZXJlZEluc3RhbmNlcz17fTtmdW5jdGlvbiBnZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpe2lmKHB0cj09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoInB0ciBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpfXdoaWxlKGNsYXNzXy5iYXNlQ2xhc3Mpe3B0cj1jbGFzc18udXBjYXN0KHB0cik7Y2xhc3NfPWNsYXNzXy5iYXNlQ2xhc3N9cmV0dXJuIHB0cn1mdW5jdGlvbiByZWdpc3RlckluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIsaW5zdGFuY2Upe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO2lmKHJlZ2lzdGVyZWRJbnN0YW5jZXMuaGFzT3duUHJvcGVydHkocHRyKSl7dGhyb3dCaW5kaW5nRXJyb3IoIlRyaWVkIHRvIHJlZ2lzdGVyIHJlZ2lzdGVyZWQgaW5zdGFuY2U6ICIrcHRyKX1lbHNle3JlZ2lzdGVyZWRJbnN0YW5jZXNbcHRyXT1pbnN0YW5jZX19ZnVuY3Rpb24gdW5yZWdpc3RlckluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIpe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO2lmKHJlZ2lzdGVyZWRJbnN0YW5jZXMuaGFzT3duUHJvcGVydHkocHRyKSl7ZGVsZXRlIHJlZ2lzdGVyZWRJbnN0YW5jZXNbcHRyXX1lbHNle3Rocm93QmluZGluZ0Vycm9yKCJUcmllZCB0byB1bnJlZ2lzdGVyIHVucmVnaXN0ZXJlZCBpbnN0YW5jZTogIitwdHIpfX1mdW5jdGlvbiBnZXRJbmhlcml0ZWRJbnN0YW5jZShjbGFzc18scHRyKXtwdHI9Z2V0QmFzZXN0UG9pbnRlcihjbGFzc18scHRyKTtyZXR1cm4gcmVnaXN0ZXJlZEluc3RhbmNlc1twdHJdfWZ1bmN0aW9uIGdldEluaGVyaXRlZEluc3RhbmNlQ291bnQoKXtyZXR1cm4gT2JqZWN0LmtleXMocmVnaXN0ZXJlZEluc3RhbmNlcykubGVuZ3RofU1vZHVsZVsiZ2V0SW5oZXJpdGVkSW5zdGFuY2VDb3VudCJdPWdldEluaGVyaXRlZEluc3RhbmNlQ291bnQ7ZnVuY3Rpb24gZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcygpe3ZhciBydj1bXTtmb3IodmFyIGsgaW4gcmVnaXN0ZXJlZEluc3RhbmNlcyl7aWYocmVnaXN0ZXJlZEluc3RhbmNlcy5oYXNPd25Qcm9wZXJ0eShrKSl7cnYucHVzaChyZWdpc3RlcmVkSW5zdGFuY2VzW2tdKX19cmV0dXJuIHJ2fU1vZHVsZVsiZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcyJdPWdldExpdmVJbmhlcml0ZWRJbnN0YW5jZXM7dmFyIHJlZ2lzdGVyZWRUeXBlcz17fTt2YXIgYXdhaXRpbmdEZXBlbmRlbmNpZXM9e307dmFyIHR5cGVEZXBlbmRlbmNpZXM9e307dmFyIHJlZ2lzdGVyZWRQb2ludGVycz17fTtmdW5jdGlvbiByZWdpc3RlclR5cGUocmF3VHlwZSxyZWdpc3RlcmVkSW5zdGFuY2Upe2lmKCEoImFyZ1BhY2tBZHZhbmNlImluIHJlZ2lzdGVyZWRJbnN0YW5jZSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2UiKX12YXIgbmFtZT1yZWdpc3RlcmVkSW5zdGFuY2UubmFtZTtpZighcmF3VHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoJ3R5cGUgIicrbmFtZSsnIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyJyl9aWYocmVnaXN0ZXJlZFR5cGVzLmhhc093blByb3BlcnR5KHJhd1R5cGUpKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIHR5cGUgJyIrbmFtZSsiJyB0d2ljZSIpfXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXT1yZWdpc3RlcmVkSW5zdGFuY2U7ZGVsZXRlIHR5cGVEZXBlbmRlbmNpZXNbcmF3VHlwZV07aWYoYXdhaXRpbmdEZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkocmF3VHlwZSkpe3ZhciBjYWxsYmFja3M9YXdhaXRpbmdEZXBlbmRlbmNpZXNbcmF3VHlwZV07ZGVsZXRlIGF3YWl0aW5nRGVwZW5kZW5jaWVzW3Jhd1R5cGVdO2NhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihjYil7Y2IoKX0pKX19ZnVuY3Rpb24gd2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQobXlUeXBlcyxkZXBlbmRlbnRUeXBlcyxnZXRUeXBlQ29udmVydGVycyl7bXlUeXBlcy5mb3JFYWNoKChmdW5jdGlvbih0eXBlKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdPWRlcGVuZGVudFR5cGVzfSkpO2Z1bmN0aW9uIG9uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpe3ZhciBteVR5cGVDb252ZXJ0ZXJzPWdldFR5cGVDb252ZXJ0ZXJzKHR5cGVDb252ZXJ0ZXJzKTtpZihteVR5cGVDb252ZXJ0ZXJzLmxlbmd0aCE9PW15VHlwZXMubGVuZ3RoKXt0aHJvd0ludGVybmFsRXJyb3IoIk1pc21hdGNoZWQgdHlwZSBjb252ZXJ0ZXIgY291bnQiKX1mb3IodmFyIGk9MDtpPG15VHlwZXMubGVuZ3RoOysraSl7cmVnaXN0ZXJUeXBlKG15VHlwZXNbaV0sbXlUeXBlQ29udmVydGVyc1tpXSl9fXZhciB0eXBlQ29udmVydGVycz1uZXcgQXJyYXkoZGVwZW5kZW50VHlwZXMubGVuZ3RoKTt2YXIgdW5yZWdpc3RlcmVkVHlwZXM9W107dmFyIHJlZ2lzdGVyZWQ9MDtkZXBlbmRlbnRUeXBlcy5mb3JFYWNoKChmdW5jdGlvbihkdCxpKXtpZihyZWdpc3RlcmVkVHlwZXMuaGFzT3duUHJvcGVydHkoZHQpKXt0eXBlQ29udmVydGVyc1tpXT1yZWdpc3RlcmVkVHlwZXNbZHRdfWVsc2V7dW5yZWdpc3RlcmVkVHlwZXMucHVzaChkdCk7aWYoIWF3YWl0aW5nRGVwZW5kZW5jaWVzLmhhc093blByb3BlcnR5KGR0KSl7YXdhaXRpbmdEZXBlbmRlbmNpZXNbZHRdPVtdfWF3YWl0aW5nRGVwZW5kZW5jaWVzW2R0XS5wdXNoKChmdW5jdGlvbigpe3R5cGVDb252ZXJ0ZXJzW2ldPXJlZ2lzdGVyZWRUeXBlc1tkdF07KytyZWdpc3RlcmVkO2lmKHJlZ2lzdGVyZWQ9PT11bnJlZ2lzdGVyZWRUeXBlcy5sZW5ndGgpe29uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpfX0pKX19KSk7aWYoMD09PXVucmVnaXN0ZXJlZFR5cGVzLmxlbmd0aCl7b25Db21wbGV0ZSh0eXBlQ29udmVydGVycyl9fXZhciBfX2NoYXJDb2Rlcz0oZnVuY3Rpb24oKXt2YXIgY29kZXM9bmV3IEFycmF5KDI1Nik7Zm9yKHZhciBpPTA7aTwyNTY7KytpKXtjb2Rlc1tpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpfXJldHVybiBjb2Rlc30pKCk7ZnVuY3Rpb24gcmVhZExhdGluMVN0cmluZyhwdHIpe3ZhciByZXQ9IiI7dmFyIGM9cHRyO3doaWxlKEhFQVBVOFtjXSl7cmV0Kz1fX2NoYXJDb2Rlc1tIRUFQVThbYysrXV19cmV0dXJuIHJldH1mdW5jdGlvbiBnZXRUeXBlTmFtZSh0eXBlKXt2YXIgcHRyPV9fX2dldFR5cGVOYW1lKHR5cGUpO3ZhciBydj1yZWFkTGF0aW4xU3RyaW5nKHB0cik7X2ZyZWUocHRyKTtyZXR1cm4gcnZ9ZnVuY3Rpb24gaGVhcDMyVmVjdG9yVG9BcnJheShjb3VudCxmaXJzdEVsZW1lbnQpe3ZhciBhcnJheT1bXTtmb3IodmFyIGk9MDtpPGNvdW50O2krKyl7YXJyYXkucHVzaChIRUFQMzJbKGZpcnN0RWxlbWVudD4+MikraV0pfXJldHVybiBhcnJheX1mdW5jdGlvbiByZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmF3VHlwZSxodW1hbk5hbWUpe3ZhciBpbXBsPXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXTtpZih1bmRlZmluZWQ9PT1pbXBsKXt0aHJvd0JpbmRpbmdFcnJvcihodW1hbk5hbWUrIiBoYXMgdW5rbm93biB0eXBlICIrZ2V0VHlwZU5hbWUocmF3VHlwZSkpfXJldHVybiBpbXBsfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3ZvaWQocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiYXJnUGFja0FkdmFuY2UiOjAsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKCl7cmV0dXJuIHVuZGVmaW5lZH0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7cmV0dXJuIHVuZGVmaW5lZH0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfYm9vbChyYXdUeXBlLG5hbWUsc2l6ZSx0cnVlVmFsdWUsZmFsc2VWYWx1ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHd0KXtyZXR1cm4hIXd0fSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyxvKXtyZXR1cm4gbz90cnVlVmFsdWU6ZmFsc2VWYWx1ZX0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcDtpZihzaXplPT09MSl7aGVhcD1IRUFQOH1lbHNlIGlmKHNpemU9PT0yKXtoZWFwPUhFQVAxNn1lbHNlIGlmKHNpemU9PT00KXtoZWFwPUhFQVAzMn1lbHNle3Rocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gYm9vbGVhbiB0eXBlIHNpemU6ICIrbmFtZSl9cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+c2hpZnRdKX0pLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gZ2V0U2hpZnRGcm9tU2l6ZShzaXplKXtzd2l0Y2goc2l6ZSl7Y2FzZSAxOnJldHVybiAwO2Nhc2UgMjpyZXR1cm4gMTtjYXNlIDQ6cmV0dXJuIDI7Y2FzZSA4OnJldHVybiAzO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biB0eXBlIHNpemU6ICIrc2l6ZSl9fWZ1bmN0aW9uIGludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LHNpZ25lZCl7c3dpdGNoKHNoaWZ0KXtjYXNlIDA6cmV0dXJuKGZ1bmN0aW9uKHBvaW50ZXIpe3ZhciBoZWFwPXNpZ25lZD9IRUFQODpIRUFQVTg7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcl0pfSk7Y2FzZSAxOnJldHVybihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcD1zaWduZWQ/SEVBUDE2OkhFQVBVMTY7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+MV0pfSk7Y2FzZSAyOnJldHVybihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcD1zaWduZWQ/SEVBUDMyOkhFQVBVMzI7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+Ml0pfSk7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGludGVnZXIgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gZmxvYXRSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0KXtzd2l0Y2goc2hpZnQpe2Nhc2UgMjpyZXR1cm4oZnVuY3Rpb24ocG9pbnRlcil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKEhFQVBGMzJbcG9pbnRlcj4+Ml0pfSk7Y2FzZSAzOnJldHVybihmdW5jdGlvbihwb2ludGVyKXtyZXR1cm4gdGhpc1siZnJvbVdpcmVUeXBlIl0oSEVBUEY2NFtwb2ludGVyPj4zXSl9KTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZmxvYXQgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcihwcmltaXRpdmVUeXBlLG5hbWUsc2l6ZSxtaW5SYW5nZSxtYXhSYW5nZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO2lmKG1heFJhbmdlPT09LTEpe21heFJhbmdlPTQyOTQ5NjcyOTV9dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7cmVnaXN0ZXJUeXBlKHByaW1pdGl2ZVR5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3JldHVybiB2YWx1ZX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHR5cGVvZiB2YWx1ZSE9PSJudW1iZXIiJiZ0eXBlb2YgdmFsdWUhPT0iYm9vbGVhbiIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0ICInK19lbWJpbmRfcmVwcih2YWx1ZSkrJyIgdG8gJyt0aGlzLm5hbWUpfWlmKHZhbHVlPG1pblJhbmdlfHx2YWx1ZT5tYXhSYW5nZSl7dGhyb3cgbmV3IFR5cGVFcnJvcignUGFzc2luZyBhIG51bWJlciAiJytfZW1iaW5kX3JlcHIodmFsdWUpKyciIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgIicrbmFtZSsnIiwgd2hpY2ggaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgWycrbWluUmFuZ2UrIiwgIittYXhSYW5nZSsiXSEiKX1yZXR1cm4gdmFsdWV8MH0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LG1pblJhbmdlIT09MCksZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdChyYXdUeXBlLG5hbWUsc2l6ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdmFsdWV9KSwidG9XaXJlVHlwZSI6KGZ1bmN0aW9uKGRlc3RydWN0b3JzLHZhbHVlKXtpZih0eXBlb2YgdmFsdWUhPT0ibnVtYmVyIiYmdHlwZW9mIHZhbHVlIT09ImJvb2xlYW4iKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCAiJytfZW1iaW5kX3JlcHIodmFsdWUpKyciIHRvICcrdGhpcy5uYW1lKX1yZXR1cm4gdmFsdWV9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpmbG9hdFJlYWRWYWx1ZUZyb21Qb2ludGVyKG5hbWUsc2hpZnQpLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gc2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXIocG9pbnRlcil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKEhFQVBVMzJbcG9pbnRlcj4+Ml0pfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF9zdHJpbmcocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIGE9bmV3IEFycmF5KGxlbmd0aCk7Zm9yKHZhciBpPTA7aTxsZW5ndGg7KytpKXthW2ldPVN0cmluZy5mcm9tQ2hhckNvZGUoSEVBUFU4W3ZhbHVlKzQraV0pfV9mcmVlKHZhbHVlKTtyZXR1cm4gYS5qb2luKCIiKX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3ZhbHVlPW5ldyBVaW50OEFycmF5KHZhbHVlKX1mdW5jdGlvbiBnZXRUQUVsZW1lbnQodGEsaW5kZXgpe3JldHVybiB0YVtpbmRleF19ZnVuY3Rpb24gZ2V0U3RyaW5nRWxlbWVudChzdHJpbmcsaW5kZXgpe3JldHVybiBzdHJpbmcuY2hhckNvZGVBdChpbmRleCl9dmFyIGdldEVsZW1lbnQ7aWYodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtnZXRFbGVtZW50PWdldFRBRWxlbWVudH1lbHNlIGlmKHZhbHVlIGluc3RhbmNlb2YgSW50OEFycmF5KXtnZXRFbGVtZW50PWdldFRBRWxlbWVudH1lbHNlIGlmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtnZXRFbGVtZW50PWdldFN0cmluZ0VsZW1lbnR9ZWxzZXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBzdGQ6OnN0cmluZyIpfXZhciBsZW5ndGg9dmFsdWUubGVuZ3RoO3ZhciBwdHI9X21hbGxvYyg0K2xlbmd0aCk7SEVBUFUzMltwdHI+PjJdPWxlbmd0aDtmb3IodmFyIGk9MDtpPGxlbmd0aDsrK2kpe3ZhciBjaGFyQ29kZT1nZXRFbGVtZW50KHZhbHVlLGkpO2lmKGNoYXJDb2RlPjI1NSl7X2ZyZWUocHRyKTt0aHJvd0JpbmRpbmdFcnJvcigiU3RyaW5nIGhhcyBVVEYtMTYgY29kZSB1bml0cyB0aGF0IGRvIG5vdCBmaXQgaW4gOCBiaXRzIil9SEVBUFU4W3B0cis0K2ldPWNoYXJDb2RlfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246KGZ1bmN0aW9uKHB0cil7X2ZyZWUocHRyKX0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmcocmF3VHlwZSxjaGFyU2l6ZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7dmFyIEhFQVAsc2hpZnQ7aWYoY2hhclNpemU9PT0yKXtIRUFQPUhFQVBVMTY7c2hpZnQ9MX1lbHNlIGlmKGNoYXJTaXplPT09NCl7SEVBUD1IRUFQVTMyO3NoaWZ0PTJ9cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIGE9bmV3IEFycmF5KGxlbmd0aCk7dmFyIHN0YXJ0PXZhbHVlKzQ+PnNoaWZ0O2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7YVtpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKEhFQVBbc3RhcnQraV0pfV9mcmVlKHZhbHVlKTtyZXR1cm4gYS5qb2luKCIiKX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe3ZhciBsZW5ndGg9dmFsdWUubGVuZ3RoO3ZhciBwdHI9X21hbGxvYyg0K2xlbmd0aCpjaGFyU2l6ZSk7SEVBUFUzMltwdHI+PjJdPWxlbmd0aDt2YXIgc3RhcnQ9cHRyKzQ+PnNoaWZ0O2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7SEVBUFtzdGFydCtpXT12YWx1ZS5jaGFyQ29kZUF0KGkpfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246KGZ1bmN0aW9uKHB0cil7X2ZyZWUocHRyKX0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZW12YWwocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24oaGFuZGxlKXt2YXIgcnY9X2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnZhbHVlO19fZW12YWxfZGVjcmVmKGhhbmRsZSk7cmV0dXJuIHJ2fSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyx2YWx1ZSl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodmFsdWUpfSksImFyZ1BhY2tBZHZhbmNlIjo4LCJyZWFkVmFsdWVGcm9tUG9pbnRlciI6c2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXIsZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyhyYXdUeXBlLG5hbWUpe3ZhciB0eXBlTWFwcGluZz1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXldO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyZWdpc3RlclR5cGUocmF3VHlwZSx7bmFtZTpuYW1lLCJmcm9tV2lyZVR5cGUiOihmdW5jdGlvbihoYW5kbGUpe3ZhciB0eXBlPUhFQVBVMzJbaGFuZGxlPj4yXTt2YXIgc2l6ZT1IRUFQVTMyWyhoYW5kbGU+PjIpKzFdO3ZhciBkYXRhPUhFQVBVMzJbKGhhbmRsZT4+MikrMl07dmFyIFRBPXR5cGVNYXBwaW5nW3R5cGVdO3JldHVybiBuZXcgVEEoSEVBUDguYnVmZmVyLGRhdGEsc2l6ZSl9KSwiYXJnUGFja0FkdmFuY2UiOjE2LCJyZWFkVmFsdWVGcm9tUG9pbnRlciI6KGZ1bmN0aW9uKHB0cil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKHB0cil9KX0pfWZ1bmN0aW9uIHJ1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKXt3aGlsZShkZXN0cnVjdG9ycy5sZW5ndGgpe3ZhciBwdHI9ZGVzdHJ1Y3RvcnMucG9wKCk7dmFyIGRlbD1kZXN0cnVjdG9ycy5wb3AoKTtkZWwocHRyKX19ZnVuY3Rpb24gbmV3Xyhjb25zdHJ1Y3Rvcixhcmd1bWVudExpc3Qpe2lmKCEoY29uc3RydWN0b3IgaW5zdGFuY2VvZiBGdW5jdGlvbikpe3Rocm93IG5ldyBUeXBlRXJyb3IoIm5ld18gY2FsbGVkIHdpdGggY29uc3RydWN0b3IgdHlwZSAiK3R5cGVvZiBjb25zdHJ1Y3RvcisiIHdoaWNoIGlzIG5vdCBhIGZ1bmN0aW9uIil9dmFyIGR1bW15PWNyZWF0ZU5hbWVkRnVuY3Rpb24oY29uc3RydWN0b3IubmFtZSwoZnVuY3Rpb24oKXt9KSk7ZHVtbXkucHJvdG90eXBlPWNvbnN0cnVjdG9yLnByb3RvdHlwZTt2YXIgb2JqPW5ldyBkdW1teTt2YXIgcj1jb25zdHJ1Y3Rvci5hcHBseShvYmosYXJndW1lbnRMaXN0KTtyZXR1cm4gciBpbnN0YW5jZW9mIE9iamVjdD9yOm9ian1mdW5jdGlvbiBjcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsY2xhc3NUeXBlLGNwcEludm9rZXJGdW5jLGNwcFRhcmdldEZ1bmMpe3ZhciBhcmdDb3VudD1hcmdUeXBlcy5sZW5ndGg7aWYoYXJnQ291bnQ8Mil7dGhyb3dCaW5kaW5nRXJyb3IoImFyZ1R5cGVzIGFycmF5IHNpemUgbWlzbWF0Y2ghIE11c3QgYXQgbGVhc3QgZ2V0IHJldHVybiB2YWx1ZSBhbmQgJ3RoaXMnIHR5cGVzISIpfXZhciBpc0NsYXNzTWV0aG9kRnVuYz1hcmdUeXBlc1sxXSE9PW51bGwmJmNsYXNzVHlwZSE9PW51bGw7dmFyIGFyZ3NMaXN0PSIiO3ZhciBhcmdzTGlzdFdpcmVkPSIiO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2FyZ3NMaXN0Kz0oaSE9PTA/IiwgIjoiIikrImFyZyIraTthcmdzTGlzdFdpcmVkKz0oaSE9PTA/IiwgIjoiIikrImFyZyIraSsiV2lyZWQifXZhciBpbnZva2VyRm5Cb2R5PSJyZXR1cm4gZnVuY3Rpb24gIittYWtlTGVnYWxGdW5jdGlvbk5hbWUoaHVtYW5OYW1lKSsiKCIrYXJnc0xpc3QrIikge1xuIisiaWYgKGFyZ3VtZW50cy5sZW5ndGggIT09ICIrKGFyZ0NvdW50LTIpKyIpIHtcbiIrInRocm93QmluZGluZ0Vycm9yKCdmdW5jdGlvbiAiK2h1bWFuTmFtZSsiIGNhbGxlZCB3aXRoICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBhcmd1bWVudHMsIGV4cGVjdGVkICIrKGFyZ0NvdW50LTIpKyIgYXJncyEnKTtcbiIrIn1cbiI7dmFyIG5lZWRzRGVzdHJ1Y3RvclN0YWNrPWZhbHNlO2Zvcih2YXIgaT0xO2k8YXJnVHlwZXMubGVuZ3RoOysraSl7aWYoYXJnVHlwZXNbaV0hPT1udWxsJiZhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb249PT11bmRlZmluZWQpe25lZWRzRGVzdHJ1Y3RvclN0YWNrPXRydWU7YnJlYWt9fWlmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0idmFyIGRlc3RydWN0b3JzID0gW107XG4ifXZhciBkdG9yU3RhY2s9bmVlZHNEZXN0cnVjdG9yU3RhY2s/ImRlc3RydWN0b3JzIjoibnVsbCI7dmFyIGFyZ3MxPVsidGhyb3dCaW5kaW5nRXJyb3IiLCJpbnZva2VyIiwiZm4iLCJydW5EZXN0cnVjdG9ycyIsInJldFR5cGUiLCJjbGFzc1BhcmFtIl07dmFyIGFyZ3MyPVt0aHJvd0JpbmRpbmdFcnJvcixjcHBJbnZva2VyRnVuYyxjcHBUYXJnZXRGdW5jLHJ1bkRlc3RydWN0b3JzLGFyZ1R5cGVzWzBdLGFyZ1R5cGVzWzFdXTtpZihpc0NsYXNzTWV0aG9kRnVuYyl7aW52b2tlckZuQm9keSs9InZhciB0aGlzV2lyZWQgPSBjbGFzc1BhcmFtLnRvV2lyZVR5cGUoIitkdG9yU3RhY2srIiwgdGhpcyk7XG4ifWZvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2ludm9rZXJGbkJvZHkrPSJ2YXIgYXJnIitpKyJXaXJlZCA9IGFyZ1R5cGUiK2krIi50b1dpcmVUeXBlKCIrZHRvclN0YWNrKyIsIGFyZyIraSsiKTsgLy8gIithcmdUeXBlc1tpKzJdLm5hbWUrIlxuIjthcmdzMS5wdXNoKCJhcmdUeXBlIitpKTthcmdzMi5wdXNoKGFyZ1R5cGVzW2krMl0pfWlmKGlzQ2xhc3NNZXRob2RGdW5jKXthcmdzTGlzdFdpcmVkPSJ0aGlzV2lyZWQiKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWR9dmFyIHJldHVybnM9YXJnVHlwZXNbMF0ubmFtZSE9PSJ2b2lkIjtpbnZva2VyRm5Cb2R5Kz0ocmV0dXJucz8idmFyIHJ2ID0gIjoiIikrImludm9rZXIoZm4iKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWQrIik7XG4iO2lmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0icnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpO1xuIn1lbHNle2Zvcih2YXIgaT1pc0NsYXNzTWV0aG9kRnVuYz8xOjI7aTxhcmdUeXBlcy5sZW5ndGg7KytpKXt2YXIgcGFyYW1OYW1lPWk9PT0xPyJ0aGlzV2lyZWQiOiJhcmciKyhpLTIpKyJXaXJlZCI7aWYoYXJnVHlwZXNbaV0uZGVzdHJ1Y3RvckZ1bmN0aW9uIT09bnVsbCl7aW52b2tlckZuQm9keSs9cGFyYW1OYW1lKyJfZHRvcigiK3BhcmFtTmFtZSsiKTsgLy8gIithcmdUeXBlc1tpXS5uYW1lKyJcbiI7YXJnczEucHVzaChwYXJhbU5hbWUrIl9kdG9yIik7YXJnczIucHVzaChhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb24pfX19aWYocmV0dXJucyl7aW52b2tlckZuQm9keSs9InJldHVybiByZXRUeXBlLmZyb21XaXJlVHlwZShydik7XG4ifWludm9rZXJGbkJvZHkrPSJ9XG4iO2FyZ3MxLnB1c2goaW52b2tlckZuQm9keSk7dmFyIGludm9rZXJGdW5jdGlvbj1uZXdfKEZ1bmN0aW9uLGFyZ3MxKS5hcHBseShudWxsLGFyZ3MyKTtyZXR1cm4gaW52b2tlckZ1bmN0aW9ufWZ1bmN0aW9uIHJlcXVpcmVGdW5jdGlvbihzaWduYXR1cmUscmF3RnVuY3Rpb24pe3NpZ25hdHVyZT1yZWFkTGF0aW4xU3RyaW5nKHNpZ25hdHVyZSk7dmFyIGZwO2lmKHR5cGVvZiBGVU5DVElPTl9UQUJMRT09PSJ1bmRlZmluZWQiKXt2YXIgZGM9YXNtWyJkeW5DYWxsXyIrc2lnbmF0dXJlXTtpZihkYz09PXVuZGVmaW5lZCl7ZGM9YXNtWyJkeW5DYWxsXyIrc2lnbmF0dXJlLnJlcGxhY2UoL2YvZywiZCIpXTtpZihkYz09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoIk5vIGR5bkNhbGwgaW52b2tlciBmb3Igc2lnbmF0dXJlOiAiK3NpZ25hdHVyZSl9fWZwPWRjLmJpbmQodW5kZWZpbmVkLHJhd0Z1bmN0aW9uKX1lbHNle2ZwPUZVTkNUSU9OX1RBQkxFW3Jhd0Z1bmN0aW9uXX1pZih0eXBlb2YgZnAhPT0iZnVuY3Rpb24iKXt0aHJvd0JpbmRpbmdFcnJvcigidW5rbm93biBmdW5jdGlvbiBwb2ludGVyIHdpdGggc2lnbmF0dXJlICIrc2lnbmF0dXJlKyI6ICIrcmF3RnVuY3Rpb24pfXJldHVybiBmcH1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mdW5jdGlvbihuYW1lLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixzaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIGFyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmF3SW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oc2lnbmF0dXJlLHJhd0ludm9rZXIpO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLChmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIituYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLGFyZ1R5cGVzKX0pLGFyZ0NvdW50LTEpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLGFyZ1R5cGVzLChmdW5jdGlvbihhcmdUeXBlcyl7dmFyIGludm9rZXJBcmdzQXJyYXk9W2FyZ1R5cGVzWzBdLG51bGxdLmNvbmNhdChhcmdUeXBlcy5zbGljZSgxKSk7cmVwbGFjZVB1YmxpY1N5bWJvbChuYW1lLGNyYWZ0SW52b2tlckZ1bmN0aW9uKG5hbWUsaW52b2tlckFyZ3NBcnJheSxudWxsLHJhd0ludm9rZXIsZm4pLGFyZ0NvdW50LTEpO3JldHVybltdfSkpfXZhciB0dXBsZVJlZ2lzdHJhdGlvbnM9e307ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdmFsdWVfYXJyYXkocmF3VHlwZSxuYW1lLGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yLGRlc3RydWN0b3JTaWduYXR1cmUscmF3RGVzdHJ1Y3Rvcil7dHVwbGVSZWdpc3RyYXRpb25zW3Jhd1R5cGVdPXtuYW1lOnJlYWRMYXRpbjFTdHJpbmcobmFtZSkscmF3Q29uc3RydWN0b3I6cmVxdWlyZUZ1bmN0aW9uKGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yKSxyYXdEZXN0cnVjdG9yOnJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpLGVsZW1lbnRzOltdfX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl92YWx1ZV9hcnJheV9lbGVtZW50KHJhd1R1cGxlVHlwZSxnZXR0ZXJSZXR1cm5UeXBlLGdldHRlclNpZ25hdHVyZSxnZXR0ZXIsZ2V0dGVyQ29udGV4dCxzZXR0ZXJBcmd1bWVudFR5cGUsc2V0dGVyU2lnbmF0dXJlLHNldHRlcixzZXR0ZXJDb250ZXh0KXt0dXBsZVJlZ2lzdHJhdGlvbnNbcmF3VHVwbGVUeXBlXS5lbGVtZW50cy5wdXNoKHtnZXR0ZXJSZXR1cm5UeXBlOmdldHRlclJldHVyblR5cGUsZ2V0dGVyOnJlcXVpcmVGdW5jdGlvbihnZXR0ZXJTaWduYXR1cmUsZ2V0dGVyKSxnZXR0ZXJDb250ZXh0OmdldHRlckNvbnRleHQsc2V0dGVyQXJndW1lbnRUeXBlOnNldHRlckFyZ3VtZW50VHlwZSxzZXR0ZXI6cmVxdWlyZUZ1bmN0aW9uKHNldHRlclNpZ25hdHVyZSxzZXR0ZXIpLHNldHRlckNvbnRleHQ6c2V0dGVyQ29udGV4dH0pfWZ1bmN0aW9uIF9fZW1iaW5kX2ZpbmFsaXplX3ZhbHVlX2FycmF5KHJhd1R1cGxlVHlwZSl7dmFyIHJlZz10dXBsZVJlZ2lzdHJhdGlvbnNbcmF3VHVwbGVUeXBlXTtkZWxldGUgdHVwbGVSZWdpc3RyYXRpb25zW3Jhd1R1cGxlVHlwZV07dmFyIGVsZW1lbnRzPXJlZy5lbGVtZW50czt2YXIgZWxlbWVudHNMZW5ndGg9ZWxlbWVudHMubGVuZ3RoO3ZhciBlbGVtZW50VHlwZXM9ZWxlbWVudHMubWFwKChmdW5jdGlvbihlbHQpe3JldHVybiBlbHQuZ2V0dGVyUmV0dXJuVHlwZX0pKS5jb25jYXQoZWxlbWVudHMubWFwKChmdW5jdGlvbihlbHQpe3JldHVybiBlbHQuc2V0dGVyQXJndW1lbnRUeXBlfSkpKTt2YXIgcmF3Q29uc3RydWN0b3I9cmVnLnJhd0NvbnN0cnVjdG9yO3ZhciByYXdEZXN0cnVjdG9yPXJlZy5yYXdEZXN0cnVjdG9yO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtyYXdUdXBsZVR5cGVdLGVsZW1lbnRUeXBlcywoZnVuY3Rpb24oZWxlbWVudFR5cGVzKXtlbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlbHQsaSl7dmFyIGdldHRlclJldHVyblR5cGU9ZWxlbWVudFR5cGVzW2ldO3ZhciBnZXR0ZXI9ZWx0LmdldHRlcjt2YXIgZ2V0dGVyQ29udGV4dD1lbHQuZ2V0dGVyQ29udGV4dDt2YXIgc2V0dGVyQXJndW1lbnRUeXBlPWVsZW1lbnRUeXBlc1tpK2VsZW1lbnRzTGVuZ3RoXTt2YXIgc2V0dGVyPWVsdC5zZXR0ZXI7dmFyIHNldHRlckNvbnRleHQ9ZWx0LnNldHRlckNvbnRleHQ7ZWx0LnJlYWQ9KGZ1bmN0aW9uKHB0cil7cmV0dXJuIGdldHRlclJldHVyblR5cGVbImZyb21XaXJlVHlwZSJdKGdldHRlcihnZXR0ZXJDb250ZXh0LHB0cikpfSk7ZWx0LndyaXRlPShmdW5jdGlvbihwdHIsbyl7dmFyIGRlc3RydWN0b3JzPVtdO3NldHRlcihzZXR0ZXJDb250ZXh0LHB0cixzZXR0ZXJBcmd1bWVudFR5cGVbInRvV2lyZVR5cGUiXShkZXN0cnVjdG9ycyxvKSk7cnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpfSl9KSk7cmV0dXJuW3tuYW1lOnJlZy5uYW1lLCJmcm9tV2lyZVR5cGUiOihmdW5jdGlvbihwdHIpe3ZhciBydj1uZXcgQXJyYXkoZWxlbWVudHNMZW5ndGgpO2Zvcih2YXIgaT0wO2k8ZWxlbWVudHNMZW5ndGg7KytpKXtydltpXT1lbGVtZW50c1tpXS5yZWFkKHB0cil9cmF3RGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7aWYoZWxlbWVudHNMZW5ndGghPT1vLmxlbmd0aCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW5jb3JyZWN0IG51bWJlciBvZiB0dXBsZSBlbGVtZW50cyBmb3IgIityZWcubmFtZSsiOiBleHBlY3RlZD0iK2VsZW1lbnRzTGVuZ3RoKyIsIGFjdHVhbD0iK28ubGVuZ3RoKX12YXIgcHRyPXJhd0NvbnN0cnVjdG9yKCk7Zm9yKHZhciBpPTA7aTxlbGVtZW50c0xlbmd0aDsrK2kpe2VsZW1lbnRzW2ldLndyaXRlKHB0cixvW2ldKX1pZihkZXN0cnVjdG9ycyE9PW51bGwpe2Rlc3RydWN0b3JzLnB1c2gocmF3RGVzdHJ1Y3RvcixwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246cmF3RGVzdHJ1Y3Rvcn1dfSkpfXZhciBzdHJ1Y3RSZWdpc3RyYXRpb25zPXt9O2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3ZhbHVlX29iamVjdChyYXdUeXBlLG5hbWUsY29uc3RydWN0b3JTaWduYXR1cmUscmF3Q29uc3RydWN0b3IsZGVzdHJ1Y3RvclNpZ25hdHVyZSxyYXdEZXN0cnVjdG9yKXtzdHJ1Y3RSZWdpc3RyYXRpb25zW3Jhd1R5cGVdPXtuYW1lOnJlYWRMYXRpbjFTdHJpbmcobmFtZSkscmF3Q29uc3RydWN0b3I6cmVxdWlyZUZ1bmN0aW9uKGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yKSxyYXdEZXN0cnVjdG9yOnJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpLGZpZWxkczpbXX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdmFsdWVfb2JqZWN0X2ZpZWxkKHN0cnVjdFR5cGUsZmllbGROYW1lLGdldHRlclJldHVyblR5cGUsZ2V0dGVyU2lnbmF0dXJlLGdldHRlcixnZXR0ZXJDb250ZXh0LHNldHRlckFyZ3VtZW50VHlwZSxzZXR0ZXJTaWduYXR1cmUsc2V0dGVyLHNldHRlckNvbnRleHQpe3N0cnVjdFJlZ2lzdHJhdGlvbnNbc3RydWN0VHlwZV0uZmllbGRzLnB1c2goe2ZpZWxkTmFtZTpyZWFkTGF0aW4xU3RyaW5nKGZpZWxkTmFtZSksZ2V0dGVyUmV0dXJuVHlwZTpnZXR0ZXJSZXR1cm5UeXBlLGdldHRlcjpyZXF1aXJlRnVuY3Rpb24oZ2V0dGVyU2lnbmF0dXJlLGdldHRlciksZ2V0dGVyQ29udGV4dDpnZXR0ZXJDb250ZXh0LHNldHRlckFyZ3VtZW50VHlwZTpzZXR0ZXJBcmd1bWVudFR5cGUsc2V0dGVyOnJlcXVpcmVGdW5jdGlvbihzZXR0ZXJTaWduYXR1cmUsc2V0dGVyKSxzZXR0ZXJDb250ZXh0OnNldHRlckNvbnRleHR9KX1mdW5jdGlvbiBfX2VtYmluZF9maW5hbGl6ZV92YWx1ZV9vYmplY3Qoc3RydWN0VHlwZSl7dmFyIHJlZz1zdHJ1Y3RSZWdpc3RyYXRpb25zW3N0cnVjdFR5cGVdO2RlbGV0ZSBzdHJ1Y3RSZWdpc3RyYXRpb25zW3N0cnVjdFR5cGVdO3ZhciByYXdDb25zdHJ1Y3Rvcj1yZWcucmF3Q29uc3RydWN0b3I7dmFyIHJhd0Rlc3RydWN0b3I9cmVnLnJhd0Rlc3RydWN0b3I7dmFyIGZpZWxkUmVjb3Jkcz1yZWcuZmllbGRzO3ZhciBmaWVsZFR5cGVzPWZpZWxkUmVjb3Jkcy5tYXAoKGZ1bmN0aW9uKGZpZWxkKXtyZXR1cm4gZmllbGQuZ2V0dGVyUmV0dXJuVHlwZX0pKS5jb25jYXQoZmllbGRSZWNvcmRzLm1hcCgoZnVuY3Rpb24oZmllbGQpe3JldHVybiBmaWVsZC5zZXR0ZXJBcmd1bWVudFR5cGV9KSkpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtzdHJ1Y3RUeXBlXSxmaWVsZFR5cGVzLChmdW5jdGlvbihmaWVsZFR5cGVzKXt2YXIgZmllbGRzPXt9O2ZpZWxkUmVjb3Jkcy5mb3JFYWNoKChmdW5jdGlvbihmaWVsZCxpKXt2YXIgZmllbGROYW1lPWZpZWxkLmZpZWxkTmFtZTt2YXIgZ2V0dGVyUmV0dXJuVHlwZT1maWVsZFR5cGVzW2ldO3ZhciBnZXR0ZXI9ZmllbGQuZ2V0dGVyO3ZhciBnZXR0ZXJDb250ZXh0PWZpZWxkLmdldHRlckNvbnRleHQ7dmFyIHNldHRlckFyZ3VtZW50VHlwZT1maWVsZFR5cGVzW2krZmllbGRSZWNvcmRzLmxlbmd0aF07dmFyIHNldHRlcj1maWVsZC5zZXR0ZXI7dmFyIHNldHRlckNvbnRleHQ9ZmllbGQuc2V0dGVyQ29udGV4dDtmaWVsZHNbZmllbGROYW1lXT17cmVhZDooZnVuY3Rpb24ocHRyKXtyZXR1cm4gZ2V0dGVyUmV0dXJuVHlwZVsiZnJvbVdpcmVUeXBlIl0oZ2V0dGVyKGdldHRlckNvbnRleHQscHRyKSl9KSx3cml0ZTooZnVuY3Rpb24ocHRyLG8pe3ZhciBkZXN0cnVjdG9ycz1bXTtzZXR0ZXIoc2V0dGVyQ29udGV4dCxwdHIsc2V0dGVyQXJndW1lbnRUeXBlWyJ0b1dpcmVUeXBlIl0oZGVzdHJ1Y3RvcnMsbykpO3J1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKX0pfX0pKTtyZXR1cm5be25hbWU6cmVnLm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHB0cil7dmFyIHJ2PXt9O2Zvcih2YXIgaSBpbiBmaWVsZHMpe3J2W2ldPWZpZWxkc1tpXS5yZWFkKHB0cil9cmF3RGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7Zm9yKHZhciBmaWVsZE5hbWUgaW4gZmllbGRzKXtpZighKGZpZWxkTmFtZSBpbiBvKSl7dGhyb3cgbmV3IFR5cGVFcnJvcigiTWlzc2luZyBmaWVsZCIpfX12YXIgcHRyPXJhd0NvbnN0cnVjdG9yKCk7Zm9yKGZpZWxkTmFtZSBpbiBmaWVsZHMpe2ZpZWxkc1tmaWVsZE5hbWVdLndyaXRlKHB0cixvW2ZpZWxkTmFtZV0pfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChyYXdEZXN0cnVjdG9yLHB0cil9cmV0dXJuIHB0cn0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOnNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyLGRlc3RydWN0b3JGdW5jdGlvbjpyYXdEZXN0cnVjdG9yfV19KSl9dmFyIGdlbmVyaWNQb2ludGVyVG9XaXJlVHlwZT0oZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsaGFuZGxlKXtpZihoYW5kbGU9PT1udWxsKXtpZih0aGlzLmlzUmVmZXJlbmNlKXt0aHJvd0JpbmRpbmdFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCAiK3RoaXMubmFtZSl9aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7dmFyIHB0cj10aGlzLnJhd0NvbnN0cnVjdG9yKCk7aWYoZGVzdHJ1Y3RvcnMhPT1udWxsKXtkZXN0cnVjdG9ycy5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixwdHIpfXJldHVybiBwdHJ9ZWxzZXtyZXR1cm4gMH19aWYoIWhhbmRsZS4kJCl7dGhyb3dCaW5kaW5nRXJyb3IoJ0Nhbm5vdCBwYXNzICInK19lbWJpbmRfcmVwcihoYW5kbGUpKyciIGFzIGEgJyt0aGlzLm5hbWUpfWlmKCFoYW5kbGUuJCQucHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgIit0aGlzLm5hbWUpfWlmKCF0aGlzLmlzQ29uc3QmJmhhbmRsZS4kJC5wdHJUeXBlLmlzQ29uc3Qpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlICIrKGhhbmRsZS4kJC5zbWFydFB0clR5cGU/aGFuZGxlLiQkLnNtYXJ0UHRyVHlwZS5uYW1lOmhhbmRsZS4kJC5wdHJUeXBlLm5hbWUpKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpfXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO2lmKHRoaXMuaXNTbWFydFBvaW50ZXIpe2lmKHVuZGVmaW5lZD09PWhhbmRsZS4kJC5zbWFydFB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIil9c3dpdGNoKHRoaXMuc2hhcmluZ1BvbGljeSl7Y2FzZSAwOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyfWVsc2V7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIisoaGFuZGxlLiQkLnNtYXJ0UHRyVHlwZT9oYW5kbGUuJCQuc21hcnRQdHJUeXBlLm5hbWU6aGFuZGxlLiQkLnB0clR5cGUubmFtZSkrIiB0byBwYXJhbWV0ZXIgdHlwZSAiK3RoaXMubmFtZSl9YnJlYWs7Y2FzZSAxOnB0cj1oYW5kbGUuJCQuc21hcnRQdHI7YnJlYWs7Y2FzZSAyOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyfWVsc2V7dmFyIGNsb25lZEhhbmRsZT1oYW5kbGVbImNsb25lIl0oKTtwdHI9dGhpcy5yYXdTaGFyZShwdHIsX19lbXZhbF9yZWdpc3RlcigoZnVuY3Rpb24oKXtjbG9uZWRIYW5kbGVbImRlbGV0ZSJdKCl9KSkpO2lmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaCh0aGlzLnJhd0Rlc3RydWN0b3IscHRyKX19YnJlYWs7ZGVmYXVsdDp0aHJvd0JpbmRpbmdFcnJvcigiVW5zdXBwb3J0aW5nIHNoYXJpbmcgcG9saWN5Iil9fXJldHVybiBwdHJ9KTt2YXIgY29uc3ROb1NtYXJ0UHRyUmF3UG9pbnRlclRvV2lyZVR5cGU9KGZ1bmN0aW9uKGRlc3RydWN0b3JzLGhhbmRsZSl7aWYoaGFuZGxlPT09bnVsbCl7aWYodGhpcy5pc1JlZmVyZW5jZSl7dGhyb3dCaW5kaW5nRXJyb3IoIm51bGwgaXMgbm90IGEgdmFsaWQgIit0aGlzLm5hbWUpfXJldHVybiAwfWlmKCFoYW5kbGUuJCQpe3Rocm93QmluZGluZ0Vycm9yKCdDYW5ub3QgcGFzcyAiJytfZW1iaW5kX3JlcHIoaGFuZGxlKSsnIiBhcyBhICcrdGhpcy5uYW1lKX1pZighaGFuZGxlLiQkLnB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKX12YXIgaGFuZGxlQ2xhc3M9aGFuZGxlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBwdHI9dXBjYXN0UG9pbnRlcihoYW5kbGUuJCQucHRyLGhhbmRsZUNsYXNzLHRoaXMucmVnaXN0ZXJlZENsYXNzKTtyZXR1cm4gcHRyfSk7dmFyIG5vbkNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlPShmdW5jdGlvbihkZXN0cnVjdG9ycyxoYW5kbGUpe2lmKGhhbmRsZT09PW51bGwpe2lmKHRoaXMuaXNSZWZlcmVuY2Upe3Rocm93QmluZGluZ0Vycm9yKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKX1yZXR1cm4gMH1pZighaGFuZGxlLiQkKXt0aHJvd0JpbmRpbmdFcnJvcignQ2Fubm90IHBhc3MgIicrX2VtYmluZF9yZXByKGhhbmRsZSkrJyIgYXMgYSAnK3RoaXMubmFtZSl9aWYoIWhhbmRsZS4kJC5wdHIpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAiK3RoaXMubmFtZSl9aWYoaGFuZGxlLiQkLnB0clR5cGUuaXNDb25zdCl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIitoYW5kbGUuJCQucHRyVHlwZS5uYW1lKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpfXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBwdHJ9KTtmdW5jdGlvbiBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHJlZ2lzdGVyZWRDbGFzcyxpc1JlZmVyZW5jZSxpc0NvbnN0LGlzU21hcnRQb2ludGVyLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKXt0aGlzLm5hbWU9bmFtZTt0aGlzLnJlZ2lzdGVyZWRDbGFzcz1yZWdpc3RlcmVkQ2xhc3M7dGhpcy5pc1JlZmVyZW5jZT1pc1JlZmVyZW5jZTt0aGlzLmlzQ29uc3Q9aXNDb25zdDt0aGlzLmlzU21hcnRQb2ludGVyPWlzU21hcnRQb2ludGVyO3RoaXMucG9pbnRlZVR5cGU9cG9pbnRlZVR5cGU7dGhpcy5zaGFyaW5nUG9saWN5PXNoYXJpbmdQb2xpY3k7dGhpcy5yYXdHZXRQb2ludGVlPXJhd0dldFBvaW50ZWU7dGhpcy5yYXdDb25zdHJ1Y3Rvcj1yYXdDb25zdHJ1Y3Rvcjt0aGlzLnJhd1NoYXJlPXJhd1NoYXJlO3RoaXMucmF3RGVzdHJ1Y3Rvcj1yYXdEZXN0cnVjdG9yO2lmKCFpc1NtYXJ0UG9pbnRlciYmcmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcz09PXVuZGVmaW5lZCl7aWYoaXNDb25zdCl7dGhpc1sidG9XaXJlVHlwZSJdPWNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlO3RoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGx9ZWxzZXt0aGlzWyJ0b1dpcmVUeXBlIl09bm9uQ29uc3ROb1NtYXJ0UHRyUmF3UG9pbnRlclRvV2lyZVR5cGU7dGhpcy5kZXN0cnVjdG9yRnVuY3Rpb249bnVsbH19ZWxzZXt0aGlzWyJ0b1dpcmVUeXBlIl09Z2VuZXJpY1BvaW50ZXJUb1dpcmVUeXBlfX1SZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGUuZ2V0UG9pbnRlZT1mdW5jdGlvbiBnZXRQb2ludGVlKHB0cil7aWYodGhpcy5yYXdHZXRQb2ludGVlKXtwdHI9dGhpcy5yYXdHZXRQb2ludGVlKHB0cil9cmV0dXJuIHB0cn07UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24gZGVzdHJ1Y3RvcihwdHIpe2lmKHRoaXMucmF3RGVzdHJ1Y3Rvcil7dGhpcy5yYXdEZXN0cnVjdG9yKHB0cil9fTtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbImFyZ1BhY2tBZHZhbmNlIl09ODtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl09c2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXI7UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlWyJkZWxldGVPYmplY3QiXT1mdW5jdGlvbiBkZWxldGVPYmplY3QoaGFuZGxlKXtpZihoYW5kbGUhPT1udWxsKXtoYW5kbGVbImRlbGV0ZSJdKCl9fTtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbImZyb21XaXJlVHlwZSJdPWZ1bmN0aW9uIGZyb21XaXJlVHlwZShwdHIpe3ZhciByYXdQb2ludGVyPXRoaXMuZ2V0UG9pbnRlZShwdHIpO2lmKCFyYXdQb2ludGVyKXt0aGlzLmRlc3RydWN0b3IocHRyKTtyZXR1cm4gbnVsbH12YXIgcmVnaXN0ZXJlZEluc3RhbmNlPWdldEluaGVyaXRlZEluc3RhbmNlKHRoaXMucmVnaXN0ZXJlZENsYXNzLHJhd1BvaW50ZXIpO2lmKHVuZGVmaW5lZCE9PXJlZ2lzdGVyZWRJbnN0YW5jZSl7aWYoMD09PXJlZ2lzdGVyZWRJbnN0YW5jZS4kJC5jb3VudC52YWx1ZSl7cmVnaXN0ZXJlZEluc3RhbmNlLiQkLnB0cj1yYXdQb2ludGVyO3JlZ2lzdGVyZWRJbnN0YW5jZS4kJC5zbWFydFB0cj1wdHI7cmV0dXJuIHJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpfWVsc2V7dmFyIHJ2PXJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpO3RoaXMuZGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn19ZnVuY3Rpb24gbWFrZURlZmF1bHRIYW5kbGUoKXtpZih0aGlzLmlzU21hcnRQb2ludGVyKXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMucG9pbnRlZVR5cGUscHRyOnJhd1BvaW50ZXIsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMscHRyOnB0cn0pfX12YXIgYWN0dWFsVHlwZT10aGlzLnJlZ2lzdGVyZWRDbGFzcy5nZXRBY3R1YWxUeXBlKHJhd1BvaW50ZXIpO3ZhciByZWdpc3RlcmVkUG9pbnRlclJlY29yZD1yZWdpc3RlcmVkUG9pbnRlcnNbYWN0dWFsVHlwZV07aWYoIXJlZ2lzdGVyZWRQb2ludGVyUmVjb3JkKXtyZXR1cm4gbWFrZURlZmF1bHRIYW5kbGUuY2FsbCh0aGlzKX12YXIgdG9UeXBlO2lmKHRoaXMuaXNDb25zdCl7dG9UeXBlPXJlZ2lzdGVyZWRQb2ludGVyUmVjb3JkLmNvbnN0UG9pbnRlclR5cGV9ZWxzZXt0b1R5cGU9cmVnaXN0ZXJlZFBvaW50ZXJSZWNvcmQucG9pbnRlclR5cGV9dmFyIGRwPWRvd25jYXN0UG9pbnRlcihyYXdQb2ludGVyLHRoaXMucmVnaXN0ZXJlZENsYXNzLHRvVHlwZS5yZWdpc3RlcmVkQ2xhc3MpO2lmKGRwPT09bnVsbCl7cmV0dXJuIG1ha2VEZWZhdWx0SGFuZGxlLmNhbGwodGhpcyl9aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7cmV0dXJuIG1ha2VDbGFzc0hhbmRsZSh0b1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRvVHlwZSxwdHI6ZHAsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRvVHlwZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUse3B0clR5cGU6dG9UeXBlLHB0cjpkcH0pfX07ZnVuY3Rpb24gbWFrZUNsYXNzSGFuZGxlKHByb3RvdHlwZSxyZWNvcmQpe2lmKCFyZWNvcmQucHRyVHlwZXx8IXJlY29yZC5wdHIpe3Rocm93SW50ZXJuYWxFcnJvcigibWFrZUNsYXNzSGFuZGxlIHJlcXVpcmVzIHB0ciBhbmQgcHRyVHlwZSIpfXZhciBoYXNTbWFydFB0clR5cGU9ISFyZWNvcmQuc21hcnRQdHJUeXBlO3ZhciBoYXNTbWFydFB0cj0hIXJlY29yZC5zbWFydFB0cjtpZihoYXNTbWFydFB0clR5cGUhPT1oYXNTbWFydFB0cil7dGhyb3dJbnRlcm5hbEVycm9yKCJCb3RoIHNtYXJ0UHRyVHlwZSBhbmQgc21hcnRQdHIgbXVzdCBiZSBzcGVjaWZpZWQiKX1yZWNvcmQuY291bnQ9e3ZhbHVlOjF9O3JldHVybiBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSx7JCQ6e3ZhbHVlOnJlY29yZH19KX1mdW5jdGlvbiBDbGFzc0hhbmRsZSgpe31mdW5jdGlvbiBnZXRJbnN0YW5jZVR5cGVOYW1lKGhhbmRsZSl7cmV0dXJuIGhhbmRsZS4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5uYW1lfUNsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNBbGlhc09mIl09ZnVuY3Rpb24gaXNBbGlhc09mKG90aGVyKXtpZighKHRoaXMgaW5zdGFuY2VvZiBDbGFzc0hhbmRsZSkpe3JldHVybiBmYWxzZX1pZighKG90aGVyIGluc3RhbmNlb2YgQ2xhc3NIYW5kbGUpKXtyZXR1cm4gZmFsc2V9dmFyIGxlZnRDbGFzcz10aGlzLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBsZWZ0PXRoaXMuJCQucHRyO3ZhciByaWdodENsYXNzPW90aGVyLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciByaWdodD1vdGhlci4kJC5wdHI7d2hpbGUobGVmdENsYXNzLmJhc2VDbGFzcyl7bGVmdD1sZWZ0Q2xhc3MudXBjYXN0KGxlZnQpO2xlZnRDbGFzcz1sZWZ0Q2xhc3MuYmFzZUNsYXNzfXdoaWxlKHJpZ2h0Q2xhc3MuYmFzZUNsYXNzKXtyaWdodD1yaWdodENsYXNzLnVwY2FzdChyaWdodCk7cmlnaHRDbGFzcz1yaWdodENsYXNzLmJhc2VDbGFzc31yZXR1cm4gbGVmdENsYXNzPT09cmlnaHRDbGFzcyYmbGVmdD09PXJpZ2h0fTtmdW5jdGlvbiB0aHJvd0luc3RhbmNlQWxyZWFkeURlbGV0ZWQob2JqKXt0aHJvd0JpbmRpbmdFcnJvcihnZXRJbnN0YW5jZVR5cGVOYW1lKG9iaikrIiBpbnN0YW5jZSBhbHJlYWR5IGRlbGV0ZWQiKX1DbGFzc0hhbmRsZS5wcm90b3R5cGVbImNsb25lIl09ZnVuY3Rpb24gY2xvbmUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlKXt0aGlzLiQkLmNvdW50LnZhbHVlKz0xO3JldHVybiB0aGlzfWVsc2V7dmFyIGNsb25lPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLHskJDp7dmFsdWU6c2hhbGxvd0NvcHkodGhpcy4kJCl9fSk7Y2xvbmUuJCQuY291bnQudmFsdWUrPTE7cmV0dXJuIGNsb25lfX07ZnVuY3Rpb24gcnVuRGVzdHJ1Y3RvcihoYW5kbGUpe3ZhciAkJD1oYW5kbGUuJCQ7aWYoJCQuc21hcnRQdHIpeyQkLnNtYXJ0UHRyVHlwZS5yYXdEZXN0cnVjdG9yKCQkLnNtYXJ0UHRyKX1lbHNleyQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLnJhd0Rlc3RydWN0b3IoJCQucHRyKX19Q2xhc3NIYW5kbGUucHJvdG90eXBlWyJkZWxldGUiXT1mdW5jdGlvbiBDbGFzc0hhbmRsZV9kZWxldGUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3Rocm93QmluZGluZ0Vycm9yKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIil9dGhpcy4kJC5jb3VudC52YWx1ZS09MTt2YXIgdG9EZWxldGU9MD09PXRoaXMuJCQuY291bnQudmFsdWU7aWYodG9EZWxldGUpe3J1bkRlc3RydWN0b3IodGhpcyl9aWYoIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3RoaXMuJCQuc21hcnRQdHI9dW5kZWZpbmVkO3RoaXMuJCQucHRyPXVuZGVmaW5lZH19O3ZhciBkZWxldGlvblF1ZXVlPVtdO0NsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNEZWxldGVkIl09ZnVuY3Rpb24gaXNEZWxldGVkKCl7cmV0dXJuIXRoaXMuJCQucHRyfTtDbGFzc0hhbmRsZS5wcm90b3R5cGVbImRlbGV0ZUxhdGVyIl09ZnVuY3Rpb24gZGVsZXRlTGF0ZXIoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3Rocm93QmluZGluZ0Vycm9yKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIil9ZGVsZXRpb25RdWV1ZS5wdXNoKHRoaXMpO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoPT09MSYmZGVsYXlGdW5jdGlvbil7ZGVsYXlGdW5jdGlvbihmbHVzaFBlbmRpbmdEZWxldGVzKX10aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZD10cnVlO3JldHVybiB0aGlzfTtmdW5jdGlvbiBmbHVzaFBlbmRpbmdEZWxldGVzKCl7d2hpbGUoZGVsZXRpb25RdWV1ZS5sZW5ndGgpe3ZhciBvYmo9ZGVsZXRpb25RdWV1ZS5wb3AoKTtvYmouJCQuZGVsZXRlU2NoZWR1bGVkPWZhbHNlO29ialsiZGVsZXRlIl0oKX19TW9kdWxlWyJmbHVzaFBlbmRpbmdEZWxldGVzIl09Zmx1c2hQZW5kaW5nRGVsZXRlczt2YXIgZGVsYXlGdW5jdGlvbjtNb2R1bGVbInNldERlbGF5RnVuY3Rpb24iXT1mdW5jdGlvbiBzZXREZWxheUZ1bmN0aW9uKGZuKXtkZWxheUZ1bmN0aW9uPWZuO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoJiZkZWxheUZ1bmN0aW9uKXtkZWxheUZ1bmN0aW9uKGZsdXNoUGVuZGluZ0RlbGV0ZXMpfX07ZnVuY3Rpb24gUmVnaXN0ZXJlZENsYXNzKG5hbWUsY29uc3RydWN0b3IsaW5zdGFuY2VQcm90b3R5cGUscmF3RGVzdHJ1Y3RvcixiYXNlQ2xhc3MsZ2V0QWN0dWFsVHlwZSx1cGNhc3QsZG93bmNhc3Qpe3RoaXMubmFtZT1uYW1lO3RoaXMuY29uc3RydWN0b3I9Y29uc3RydWN0b3I7dGhpcy5pbnN0YW5jZVByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt0aGlzLnJhd0Rlc3RydWN0b3I9cmF3RGVzdHJ1Y3Rvcjt0aGlzLmJhc2VDbGFzcz1iYXNlQ2xhc3M7dGhpcy5nZXRBY3R1YWxUeXBlPWdldEFjdHVhbFR5cGU7dGhpcy51cGNhc3Q9dXBjYXN0O3RoaXMuZG93bmNhc3Q9ZG93bmNhc3Q7dGhpcy5wdXJlVmlydHVhbEZ1bmN0aW9ucz1bXX1mdW5jdGlvbiBzaGFsbG93Q29weShvKXt2YXIgcnY9e307Zm9yKHZhciBrIGluIG8pe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLGspKXtydltrXT1vW2tdfX1yZXR1cm4gcnZ9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3MocmF3VHlwZSxyYXdQb2ludGVyVHlwZSxyYXdDb25zdFBvaW50ZXJUeXBlLGJhc2VDbGFzc1Jhd1R5cGUsZ2V0QWN0dWFsVHlwZVNpZ25hdHVyZSxnZXRBY3R1YWxUeXBlLHVwY2FzdFNpZ25hdHVyZSx1cGNhc3QsZG93bmNhc3RTaWduYXR1cmUsZG93bmNhc3QsbmFtZSxkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3Ipe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtnZXRBY3R1YWxUeXBlPXJlcXVpcmVGdW5jdGlvbihnZXRBY3R1YWxUeXBlU2lnbmF0dXJlLGdldEFjdHVhbFR5cGUpO2lmKHVwY2FzdCl7dXBjYXN0PXJlcXVpcmVGdW5jdGlvbih1cGNhc3RTaWduYXR1cmUsdXBjYXN0KX1pZihkb3duY2FzdCl7ZG93bmNhc3Q9cmVxdWlyZUZ1bmN0aW9uKGRvd25jYXN0U2lnbmF0dXJlLGRvd25jYXN0KX1yYXdEZXN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpO3ZhciBsZWdhbEZ1bmN0aW9uTmFtZT1tYWtlTGVnYWxGdW5jdGlvbk5hbWUobmFtZSk7ZXhwb3NlUHVibGljU3ltYm9sKGxlZ2FsRnVuY3Rpb25OYW1lLChmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNvbnN0cnVjdCAiK25hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsW2Jhc2VDbGFzc1Jhd1R5cGVdKX0pKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbcmF3VHlwZSxyYXdQb2ludGVyVHlwZSxyYXdDb25zdFBvaW50ZXJUeXBlXSxiYXNlQ2xhc3NSYXdUeXBlP1tiYXNlQ2xhc3NSYXdUeXBlXTpbXSwoZnVuY3Rpb24oYmFzZSl7YmFzZT1iYXNlWzBdO3ZhciBiYXNlQ2xhc3M7dmFyIGJhc2VQcm90b3R5cGU7aWYoYmFzZUNsYXNzUmF3VHlwZSl7YmFzZUNsYXNzPWJhc2UucmVnaXN0ZXJlZENsYXNzO2Jhc2VQcm90b3R5cGU9YmFzZUNsYXNzLmluc3RhbmNlUHJvdG90eXBlfWVsc2V7YmFzZVByb3RvdHlwZT1DbGFzc0hhbmRsZS5wcm90b3R5cGV9dmFyIGNvbnN0cnVjdG9yPWNyZWF0ZU5hbWVkRnVuY3Rpb24obGVnYWxGdW5jdGlvbk5hbWUsKGZ1bmN0aW9uKCl7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpIT09aW5zdGFuY2VQcm90b3R5cGUpe3Rocm93IG5ldyBCaW5kaW5nRXJyb3IoIlVzZSAnbmV3JyB0byBjb25zdHJ1Y3QgIituYW1lKX1pZih1bmRlZmluZWQ9PT1yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keSl7dGhyb3cgbmV3IEJpbmRpbmdFcnJvcihuYW1lKyIgaGFzIG5vIGFjY2Vzc2libGUgY29uc3RydWN0b3IiKX12YXIgYm9keT1yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmd1bWVudHMubGVuZ3RoXTtpZih1bmRlZmluZWQ9PT1ib2R5KXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJUcmllZCB0byBpbnZva2UgY3RvciBvZiAiK25hbWUrIiB3aXRoIGludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCIrYXJndW1lbnRzLmxlbmd0aCsiKSAtIGV4cGVjdGVkICgiK09iamVjdC5rZXlzKHJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KS50b1N0cmluZygpKyIpIHBhcmFtZXRlcnMgaW5zdGVhZCEiKX1yZXR1cm4gYm9keS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSk7dmFyIGluc3RhbmNlUHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYmFzZVByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmNvbnN0cnVjdG9yfX0pO2NvbnN0cnVjdG9yLnByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt2YXIgcmVnaXN0ZXJlZENsYXNzPW5ldyBSZWdpc3RlcmVkQ2xhc3MobmFtZSxjb25zdHJ1Y3RvcixpbnN0YW5jZVByb3RvdHlwZSxyYXdEZXN0cnVjdG9yLGJhc2VDbGFzcyxnZXRBY3R1YWxUeXBlLHVwY2FzdCxkb3duY2FzdCk7dmFyIHJlZmVyZW5jZUNvbnZlcnRlcj1uZXcgUmVnaXN0ZXJlZFBvaW50ZXIobmFtZSxyZWdpc3RlcmVkQ2xhc3MsdHJ1ZSxmYWxzZSxmYWxzZSk7dmFyIHBvaW50ZXJDb252ZXJ0ZXI9bmV3IFJlZ2lzdGVyZWRQb2ludGVyKG5hbWUrIioiLHJlZ2lzdGVyZWRDbGFzcyxmYWxzZSxmYWxzZSxmYWxzZSk7dmFyIGNvbnN0UG9pbnRlckNvbnZlcnRlcj1uZXcgUmVnaXN0ZXJlZFBvaW50ZXIobmFtZSsiIGNvbnN0KiIscmVnaXN0ZXJlZENsYXNzLGZhbHNlLHRydWUsZmFsc2UpO3JlZ2lzdGVyZWRQb2ludGVyc1tyYXdUeXBlXT17cG9pbnRlclR5cGU6cG9pbnRlckNvbnZlcnRlcixjb25zdFBvaW50ZXJUeXBlOmNvbnN0UG9pbnRlckNvbnZlcnRlcn07cmVwbGFjZVB1YmxpY1N5bWJvbChsZWdhbEZ1bmN0aW9uTmFtZSxjb25zdHJ1Y3Rvcik7cmV0dXJuW3JlZmVyZW5jZUNvbnZlcnRlcixwb2ludGVyQ29udmVydGVyLGNvbnN0UG9pbnRlckNvbnZlcnRlcl19KSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IocmF3Q2xhc3NUeXBlLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLGludm9rZXIscmF3Q29uc3RydWN0b3Ipe3ZhciByYXdBcmdUeXBlcz1oZWFwMzJWZWN0b3JUb0FycmF5KGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcik7aW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxpbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSwoZnVuY3Rpb24oY2xhc3NUeXBlKXtjbGFzc1R5cGU9Y2xhc3NUeXBlWzBdO3ZhciBodW1hbk5hbWU9ImNvbnN0cnVjdG9yICIrY2xhc3NUeXBlLm5hbWU7aWYodW5kZWZpbmVkPT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KXtjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHk9W119aWYodW5kZWZpbmVkIT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgY29uc3RydWN0b3JzIHdpdGggaWRlbnRpY2FsIG51bWJlciBvZiBwYXJhbWV0ZXJzICgiKyhhcmdDb3VudC0xKSsiKSBmb3IgY2xhc3MgJyIrY2xhc3NUeXBlLm5hbWUrIichIE92ZXJsb2FkIHJlc29sdXRpb24gaXMgY3VycmVudGx5IG9ubHkgcGVyZm9ybWVkIHVzaW5nIHRoZSBwYXJhbWV0ZXIgY291bnQsIG5vdCBhY3R1YWwgdHlwZSBpbmZvISIpfWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmdDb3VudC0xXT1mdW5jdGlvbiB1bmJvdW5kVHlwZUhhbmRsZXIoKXt0aHJvd1VuYm91bmRUeXBlRXJyb3IoIkNhbm5vdCBjb25zdHJ1Y3QgIitjbGFzc1R5cGUubmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixyYXdBcmdUeXBlcyl9O3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLHJhd0FyZ1R5cGVzLChmdW5jdGlvbihhcmdUeXBlcyl7Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdPWZ1bmN0aW9uIGNvbnN0cnVjdG9yX2JvZHkoKXtpZihhcmd1bWVudHMubGVuZ3RoIT09YXJnQ291bnQtMSl7dGhyb3dCaW5kaW5nRXJyb3IoaHVtYW5OYW1lKyIgY2FsbGVkIHdpdGggIithcmd1bWVudHMubGVuZ3RoKyIgYXJndW1lbnRzLCBleHBlY3RlZCAiKyhhcmdDb3VudC0xKSl9dmFyIGRlc3RydWN0b3JzPVtdO3ZhciBhcmdzPW5ldyBBcnJheShhcmdDb3VudCk7YXJnc1swXT1yYXdDb25zdHJ1Y3Rvcjtmb3IodmFyIGk9MTtpPGFyZ0NvdW50OysraSl7YXJnc1tpXT1hcmdUeXBlc1tpXVsidG9XaXJlVHlwZSJdKGRlc3RydWN0b3JzLGFyZ3VtZW50c1tpLTFdKX12YXIgcHRyPWludm9rZXIuYXBwbHkobnVsbCxhcmdzKTtydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyk7cmV0dXJuIGFyZ1R5cGVzWzBdWyJmcm9tV2lyZVR5cGUiXShwdHIpfTtyZXR1cm5bXX0pKTtyZXR1cm5bXX0pKX1mdW5jdGlvbiBkb3duY2FzdFBvaW50ZXIocHRyLHB0ckNsYXNzLGRlc2lyZWRDbGFzcyl7aWYocHRyQ2xhc3M9PT1kZXNpcmVkQ2xhc3Mpe3JldHVybiBwdHJ9aWYodW5kZWZpbmVkPT09ZGVzaXJlZENsYXNzLmJhc2VDbGFzcyl7cmV0dXJuIG51bGx9dmFyIHJ2PWRvd25jYXN0UG9pbnRlcihwdHIscHRyQ2xhc3MsZGVzaXJlZENsYXNzLmJhc2VDbGFzcyk7aWYocnY9PT1udWxsKXtyZXR1cm4gbnVsbH1yZXR1cm4gZGVzaXJlZENsYXNzLmRvd25jYXN0KHJ2KX1mdW5jdGlvbiB1cGNhc3RQb2ludGVyKHB0cixwdHJDbGFzcyxkZXNpcmVkQ2xhc3Mpe3doaWxlKHB0ckNsYXNzIT09ZGVzaXJlZENsYXNzKXtpZighcHRyQ2xhc3MudXBjYXN0KXt0aHJvd0JpbmRpbmdFcnJvcigiRXhwZWN0ZWQgbnVsbCBvciBpbnN0YW5jZSBvZiAiK2Rlc2lyZWRDbGFzcy5uYW1lKyIsIGdvdCBhbiBpbnN0YW5jZSBvZiAiK3B0ckNsYXNzLm5hbWUpfXB0cj1wdHJDbGFzcy51cGNhc3QocHRyKTtwdHJDbGFzcz1wdHJDbGFzcy5iYXNlQ2xhc3N9cmV0dXJuIHB0cn1mdW5jdGlvbiB2YWxpZGF0ZVRoaXModGhpc18sY2xhc3NUeXBlLGh1bWFuTmFtZSl7aWYoISh0aGlzXyBpbnN0YW5jZW9mIE9iamVjdCkpe3Rocm93QmluZGluZ0Vycm9yKGh1bWFuTmFtZSsnIHdpdGggaW52YWxpZCAidGhpcyI6ICcrdGhpc18pfWlmKCEodGhpc18gaW5zdGFuY2VvZiBjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yKSl7dGhyb3dCaW5kaW5nRXJyb3IoaHVtYW5OYW1lKycgaW5jb21wYXRpYmxlIHdpdGggInRoaXMiIG9mIHR5cGUgJyt0aGlzXy5jb25zdHJ1Y3Rvci5uYW1lKX1pZighdGhpc18uJCQucHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiY2Fubm90IGNhbGwgZW1zY3JpcHRlbiBiaW5kaW5nIG1ldGhvZCAiK2h1bWFuTmFtZSsiIG9uIGRlbGV0ZWQgb2JqZWN0Iil9cmV0dXJuIHVwY2FzdFBvaW50ZXIodGhpc18uJCQucHRyLHRoaXNfLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLGNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uKHJhd0NsYXNzVHlwZSxtZXRob2ROYW1lLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIsY29udGV4dCxpc1B1cmVWaXJ0dWFsKXt2YXIgcmF3QXJnVHlwZXM9aGVhcDMyVmVjdG9yVG9BcnJheShhcmdDb3VudCxyYXdBcmdUeXBlc0FkZHIpO21ldGhvZE5hbWU9cmVhZExhdGluMVN0cmluZyhtZXRob2ROYW1lKTtyYXdJbnZva2VyPXJlcXVpcmVGdW5jdGlvbihpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtyYXdDbGFzc1R5cGVdLChmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrbWV0aG9kTmFtZTtpZihpc1B1cmVWaXJ0dWFsKXtjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLnB1cmVWaXJ0dWFsRnVuY3Rpb25zLnB1c2gobWV0aG9kTmFtZSl9ZnVuY3Rpb24gdW5ib3VuZFR5cGVzSGFuZGxlcigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIitodW1hbk5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIscmF3QXJnVHlwZXMpfXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBtZXRob2Q9cHJvdG9bbWV0aG9kTmFtZV07aWYodW5kZWZpbmVkPT09bWV0aG9kfHx1bmRlZmluZWQ9PT1tZXRob2Qub3ZlcmxvYWRUYWJsZSYmbWV0aG9kLmNsYXNzTmFtZSE9PWNsYXNzVHlwZS5uYW1lJiZtZXRob2QuYXJnQ291bnQ9PT1hcmdDb3VudC0yKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTI7dW5ib3VuZFR5cGVzSGFuZGxlci5jbGFzc05hbWU9Y2xhc3NUeXBlLm5hbWU7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcn1lbHNle2Vuc3VyZU92ZXJsb2FkVGFibGUocHJvdG8sbWV0aG9kTmFtZSxodW1hbk5hbWUpO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMl09dW5ib3VuZFR5cGVzSGFuZGxlcn13aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcywoZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBtZW1iZXJGdW5jdGlvbj1jcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsY2xhc3NUeXBlLHJhd0ludm9rZXIsY29udGV4dCk7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7cHJvdG9bbWV0aG9kTmFtZV09bWVtYmVyRnVuY3Rpb259ZWxzZXtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlW2FyZ0NvdW50LTJdPW1lbWJlckZ1bmN0aW9ufXJldHVybltdfSkpO3JldHVybltdfSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX3Byb3BlcnR5KGNsYXNzVHlwZSxmaWVsZE5hbWUsZ2V0dGVyUmV0dXJuVHlwZSxnZXR0ZXJTaWduYXR1cmUsZ2V0dGVyLGdldHRlckNvbnRleHQsc2V0dGVyQXJndW1lbnRUeXBlLHNldHRlclNpZ25hdHVyZSxzZXR0ZXIsc2V0dGVyQ29udGV4dCl7ZmllbGROYW1lPXJlYWRMYXRpbjFTdHJpbmcoZmllbGROYW1lKTtnZXR0ZXI9cmVxdWlyZUZ1bmN0aW9uKGdldHRlclNpZ25hdHVyZSxnZXR0ZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtjbGFzc1R5cGVdLChmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrZmllbGROYW1lO3ZhciBkZXNjPXtnZXQ6KGZ1bmN0aW9uKCl7dGhyb3dVbmJvdW5kVHlwZUVycm9yKCJDYW5ub3QgYWNjZXNzICIraHVtYW5OYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLFtnZXR0ZXJSZXR1cm5UeXBlLHNldHRlckFyZ3VtZW50VHlwZV0pfSksZW51bWVyYWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfTtpZihzZXR0ZXIpe2Rlc2Muc2V0PShmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGFjY2VzcyAiK2h1bWFuTmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixbZ2V0dGVyUmV0dXJuVHlwZSxzZXR0ZXJBcmd1bWVudFR5cGVdKX0pfWVsc2V7ZGVzYy5zZXQ9KGZ1bmN0aW9uKHYpe3Rocm93QmluZGluZ0Vycm9yKGh1bWFuTmFtZSsiIGlzIGEgcmVhZC1vbmx5IHByb3BlcnR5Iil9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoY2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxmaWVsZE5hbWUsZGVzYyk7d2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQoW10sc2V0dGVyP1tnZXR0ZXJSZXR1cm5UeXBlLHNldHRlckFyZ3VtZW50VHlwZV06W2dldHRlclJldHVyblR5cGVdLChmdW5jdGlvbih0eXBlcyl7dmFyIGdldHRlclJldHVyblR5cGU9dHlwZXNbMF07dmFyIGRlc2M9e2dldDooZnVuY3Rpb24oKXt2YXIgcHRyPXZhbGlkYXRlVGhpcyh0aGlzLGNsYXNzVHlwZSxodW1hbk5hbWUrIiBnZXR0ZXIiKTtyZXR1cm4gZ2V0dGVyUmV0dXJuVHlwZVsiZnJvbVdpcmVUeXBlIl0oZ2V0dGVyKGdldHRlckNvbnRleHQscHRyKSl9KSxlbnVtZXJhYmxlOnRydWV9O2lmKHNldHRlcil7c2V0dGVyPXJlcXVpcmVGdW5jdGlvbihzZXR0ZXJTaWduYXR1cmUsc2V0dGVyKTt2YXIgc2V0dGVyQXJndW1lbnRUeXBlPXR5cGVzWzFdO2Rlc2Muc2V0PShmdW5jdGlvbih2KXt2YXIgcHRyPXZhbGlkYXRlVGhpcyh0aGlzLGNsYXNzVHlwZSxodW1hbk5hbWUrIiBzZXR0ZXIiKTt2YXIgZGVzdHJ1Y3RvcnM9W107c2V0dGVyKHNldHRlckNvbnRleHQscHRyLHNldHRlckFyZ3VtZW50VHlwZVsidG9XaXJlVHlwZSJdKGRlc3RydWN0b3JzLHYpKTtydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyl9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoY2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxmaWVsZE5hbWUsZGVzYyk7cmV0dXJuW119KSk7cmV0dXJuW119KSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY2xhc3NfZnVuY3Rpb24ocmF3Q2xhc3NUeXBlLG1ldGhvZE5hbWUsYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyLGludm9rZXJTaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIHJhd0FyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTttZXRob2ROYW1lPXJlYWRMYXRpbjFTdHJpbmcobWV0aG9kTmFtZSk7cmF3SW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxyYXdJbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSwoZnVuY3Rpb24oY2xhc3NUeXBlKXtjbGFzc1R5cGU9Y2xhc3NUeXBlWzBdO3ZhciBodW1hbk5hbWU9Y2xhc3NUeXBlLm5hbWUrIi4iK21ldGhvZE5hbWU7ZnVuY3Rpb24gdW5ib3VuZFR5cGVzSGFuZGxlcigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIitodW1hbk5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIscmF3QXJnVHlwZXMpfXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yO2lmKHVuZGVmaW5lZD09PXByb3RvW21ldGhvZE5hbWVdKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTE7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcn1lbHNle2Vuc3VyZU92ZXJsb2FkVGFibGUocHJvdG8sbWV0aG9kTmFtZSxodW1hbk5hbWUpO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMV09dW5ib3VuZFR5cGVzSGFuZGxlcn13aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcywoZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBpbnZva2VyQXJnc0FycmF5PVthcmdUeXBlc1swXSxudWxsXS5jb25jYXQoYXJnVHlwZXMuc2xpY2UoMSkpO3ZhciBmdW5jPWNyYWZ0SW52b2tlckZ1bmN0aW9uKGh1bWFuTmFtZSxpbnZva2VyQXJnc0FycmF5LG51bGwscmF3SW52b2tlcixmbik7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7cHJvdG9bbWV0aG9kTmFtZV09ZnVuY31lbHNle3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMV09ZnVuY31yZXR1cm5bXX0pKTtyZXR1cm5bXX0pKX1mdW5jdGlvbiBfX2VtYmluZF9jcmVhdGVfaW5oZXJpdGluZ19jb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvck5hbWUsd3JhcHBlclR5cGUscHJvcGVydGllcyl7Y29uc3RydWN0b3JOYW1lPXJlYWRMYXRpbjFTdHJpbmcoY29uc3RydWN0b3JOYW1lKTt3cmFwcGVyVHlwZT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUod3JhcHBlclR5cGUsIndyYXBwZXIiKTtwcm9wZXJ0aWVzPXJlcXVpcmVIYW5kbGUocHJvcGVydGllcyk7dmFyIGFycmF5U2xpY2U9W10uc2xpY2U7dmFyIHJlZ2lzdGVyZWRDbGFzcz13cmFwcGVyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHdyYXBwZXJQcm90b3R5cGU9cmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBiYXNlQ2xhc3M9cmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzczt2YXIgYmFzZUNsYXNzUHJvdG90eXBlPWJhc2VDbGFzcy5pbnN0YW5jZVByb3RvdHlwZTt2YXIgYmFzZUNvbnN0cnVjdG9yPXJlZ2lzdGVyZWRDbGFzcy5iYXNlQ2xhc3MuY29uc3RydWN0b3I7dmFyIGN0b3I9Y3JlYXRlTmFtZWRGdW5jdGlvbihjb25zdHJ1Y3Rvck5hbWUsKGZ1bmN0aW9uKCl7cmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcy5wdXJlVmlydHVhbEZ1bmN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbihuYW1lKXtpZih0aGlzW25hbWVdPT09YmFzZUNsYXNzUHJvdG90eXBlW25hbWVdKXt0aHJvdyBuZXcgUHVyZVZpcnR1YWxFcnJvcigiUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uICIrbmFtZSsiIG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gSmF2YVNjcmlwdCIpfX0pLmJpbmQodGhpcykpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJfX3BhcmVudCIse3ZhbHVlOndyYXBwZXJQcm90b3R5cGV9KTt0aGlzLl9fY29uc3RydWN0LmFwcGx5KHRoaXMsYXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cykpfSkpO3dyYXBwZXJQcm90b3R5cGUuX19jb25zdHJ1Y3Q9ZnVuY3Rpb24gX19jb25zdHJ1Y3QoKXtpZih0aGlzPT09d3JhcHBlclByb3RvdHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3MgY29ycmVjdCAndGhpcycgdG8gX19jb25zdHJ1Y3QiKX12YXIgaW5uZXI9YmFzZUNvbnN0cnVjdG9yLmltcGxlbWVudC5hcHBseSh1bmRlZmluZWQsW3RoaXNdLmNvbmNhdChhcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO3ZhciAkJD1pbm5lci4kJDtpbm5lci5ub3RpZnlPbkRlc3RydWN0aW9uKCk7JCQucHJlc2VydmVQb2ludGVyT25EZWxldGU9dHJ1ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiJCQiLHt2YWx1ZTokJH0pO3JlZ2lzdGVySW5oZXJpdGVkSW5zdGFuY2UocmVnaXN0ZXJlZENsYXNzLCQkLnB0cix0aGlzKX07d3JhcHBlclByb3RvdHlwZS5fX2Rlc3RydWN0PWZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKXtpZih0aGlzPT09d3JhcHBlclByb3RvdHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3MgY29ycmVjdCAndGhpcycgdG8gX19kZXN0cnVjdCIpfXVucmVnaXN0ZXJJbmhlcml0ZWRJbnN0YW5jZShyZWdpc3RlcmVkQ2xhc3MsdGhpcy4kJC5wdHIpfTtjdG9yLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHdyYXBwZXJQcm90b3R5cGUpO2Zvcih2YXIgcCBpbiBwcm9wZXJ0aWVzKXtjdG9yLnByb3RvdHlwZVtwXT1wcm9wZXJ0aWVzW3BdfXJldHVybiBfX2VtdmFsX3JlZ2lzdGVyKGN0b3IpfXZhciBjaGFyXzA9IjAiLmNoYXJDb2RlQXQoMCk7dmFyIGNoYXJfOT0iOSIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBtYWtlTGVnYWxGdW5jdGlvbk5hbWUobmFtZSl7bmFtZT1uYW1lLnJlcGxhY2UoL1teYS16QS1aMC05X10vZywiJCIpO3ZhciBmPW5hbWUuY2hhckNvZGVBdCgwKTtpZihmPj1jaGFyXzAmJmY8PWNoYXJfOSl7cmV0dXJuIl8iK25hbWV9ZWxzZXtyZXR1cm4gbmFtZX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc21hcnRfcHRyKHJhd1R5cGUscmF3UG9pbnRlZVR5cGUsbmFtZSxzaGFyaW5nUG9saWN5LGdldFBvaW50ZWVTaWduYXR1cmUscmF3R2V0UG9pbnRlZSxjb25zdHJ1Y3RvclNpZ25hdHVyZSxyYXdDb25zdHJ1Y3RvcixzaGFyZVNpZ25hdHVyZSxyYXdTaGFyZSxkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3Ipe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyYXdHZXRQb2ludGVlPXJlcXVpcmVGdW5jdGlvbihnZXRQb2ludGVlU2lnbmF0dXJlLHJhd0dldFBvaW50ZWUpO3Jhd0NvbnN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihjb25zdHJ1Y3RvclNpZ25hdHVyZSxyYXdDb25zdHJ1Y3Rvcik7cmF3U2hhcmU9cmVxdWlyZUZ1bmN0aW9uKHNoYXJlU2lnbmF0dXJlLHJhd1NoYXJlKTtyYXdEZXN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtyYXdUeXBlXSxbcmF3UG9pbnRlZVR5cGVdLChmdW5jdGlvbihwb2ludGVlVHlwZSl7cG9pbnRlZVR5cGU9cG9pbnRlZVR5cGVbMF07dmFyIHJlZ2lzdGVyZWRQb2ludGVyPW5ldyBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHBvaW50ZWVUeXBlLnJlZ2lzdGVyZWRDbGFzcyxmYWxzZSxmYWxzZSx0cnVlLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKTtyZXR1cm5bcmVnaXN0ZXJlZFBvaW50ZXJdfSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2VudW0ocmF3VHlwZSxuYW1lLHNpemUsaXNTaWduZWQpe3ZhciBzaGlmdD1nZXRTaGlmdEZyb21TaXplKHNpemUpO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtmdW5jdGlvbiBjb25zdHJ1Y3Rvcigpe31jb25zdHJ1Y3Rvci52YWx1ZXM9e307cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSxjb25zdHJ1Y3Rvcjpjb25zdHJ1Y3RvciwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IudmFsdWVzW2NdfSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyxjKXtyZXR1cm4gYy52YWx1ZX0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LGlzU2lnbmVkKSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLGNvbnN0cnVjdG9yKX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9lbnVtX3ZhbHVlKHJhd0VudW1UeXBlLG5hbWUsZW51bVZhbHVlKXt2YXIgZW51bVR5cGU9cmVxdWlyZVJlZ2lzdGVyZWRUeXBlKHJhd0VudW1UeXBlLCJlbnVtIik7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3ZhciBFbnVtPWVudW1UeXBlLmNvbnN0cnVjdG9yO3ZhciBWYWx1ZT1PYmplY3QuY3JlYXRlKGVudW1UeXBlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx7dmFsdWU6e3ZhbHVlOmVudW1WYWx1ZX0sY29uc3RydWN0b3I6e3ZhbHVlOmNyZWF0ZU5hbWVkRnVuY3Rpb24oZW51bVR5cGUubmFtZSsiXyIrbmFtZSwoZnVuY3Rpb24oKXt9KSl9fSk7RW51bS52YWx1ZXNbZW51bVZhbHVlXT1WYWx1ZTtFbnVtW25hbWVdPVZhbHVlfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NvbnN0YW50KG5hbWUsdHlwZSx2YWx1ZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFt0eXBlXSwoZnVuY3Rpb24odHlwZSl7dHlwZT10eXBlWzBdO01vZHVsZVtuYW1lXT10eXBlWyJmcm9tV2lyZVR5cGUiXSh2YWx1ZSk7cmV0dXJuW119KSl9dmFyIE1vZHVsZT1Nb2R1bGV8fHt9O3ZhciBfZW12YWxfaGFuZGxlX2FycmF5PVt7fV07dmFyIF9lbXZhbF9mcmVlX2xpc3Q9W107TW9kdWxlLmNvdW50X2VtdmFsX2hhbmRsZXM9KGZ1bmN0aW9uKCl7dmFyIGNvdW50PTA7Zm9yKHZhciBpPTE7aTxfZW12YWxfaGFuZGxlX2FycmF5Lmxlbmd0aDsrK2kpe2lmKF9lbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpeysrY291bnR9fXJldHVybiBjb3VudH0pO01vZHVsZS5nZXRfZmlyc3RfZW12YWw9KGZ1bmN0aW9uKCl7Zm9yKHZhciBpPTE7aTxfZW12YWxfaGFuZGxlX2FycmF5Lmxlbmd0aDsrK2kpe2lmKF9lbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpe3JldHVybiBfZW12YWxfaGFuZGxlX2FycmF5W2ldfX1yZXR1cm4gbnVsbH0pO3ZhciBfZW12YWxfc3ltYm9scz17fTtmdW5jdGlvbiBfX2VtdmFsX3JlZ2lzdGVyX3N5bWJvbChhZGRyZXNzKXtfZW12YWxfc3ltYm9sc1thZGRyZXNzXT1yZWFkTGF0aW4xU3RyaW5nKGFkZHJlc3MpfWZ1bmN0aW9uIGdldFN0cmluZ09yU3ltYm9sKGFkZHJlc3Mpe3ZhciBzeW1ib2w9X2VtdmFsX3N5bWJvbHNbYWRkcmVzc107aWYoc3ltYm9sPT09dW5kZWZpbmVkKXtyZXR1cm4gcmVhZExhdGluMVN0cmluZyhhZGRyZXNzKX1lbHNle3JldHVybiBzeW1ib2x9fWZ1bmN0aW9uIHJlcXVpcmVIYW5kbGUoaGFuZGxlKXtpZighaGFuZGxlKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHVzZSBkZWxldGVkIHZhbC4gaGFuZGxlID0gIitoYW5kbGUpfXJldHVybiBfZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV0udmFsdWV9ZnVuY3Rpb24gX19lbXZhbF9yZWdpc3Rlcih2YWx1ZSl7dmFyIGhhbmRsZT1fZW12YWxfZnJlZV9saXN0Lmxlbmd0aD9fZW12YWxfZnJlZV9saXN0LnBvcCgpOl9lbXZhbF9oYW5kbGVfYXJyYXkubGVuZ3RoO19lbXZhbF9oYW5kbGVfYXJyYXlbaGFuZGxlXT17cmVmY291bnQ6MSx2YWx1ZTp2YWx1ZX07cmV0dXJuIGhhbmRsZX1mdW5jdGlvbiBfX2VtdmFsX2luY3JlZihoYW5kbGUpe2lmKGhhbmRsZSl7X2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50Kz0xfX1mdW5jdGlvbiBfX2VtdmFsX2RlY3JlZihoYW5kbGUpe2lmKGhhbmRsZSYmMD09PS0tX2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50KXtfZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV09dW5kZWZpbmVkO19lbXZhbF9mcmVlX2xpc3QucHVzaChoYW5kbGUpfX1mdW5jdGlvbiBfX2VtdmFsX3J1bl9kZXN0cnVjdG9ycyhoYW5kbGUpe3ZhciBkZXN0cnVjdG9ycz1fZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV0udmFsdWU7cnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpO19fZW12YWxfZGVjcmVmKGhhbmRsZSl9ZnVuY3Rpb24gX19lbXZhbF9uZXdfYXJyYXkoKXtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihbXSl9ZnVuY3Rpb24gX19lbXZhbF9uZXdfb2JqZWN0KCl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIoe30pfWZ1bmN0aW9uIF9fZW12YWxfdW5kZWZpbmVkKCl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodW5kZWZpbmVkKX1mdW5jdGlvbiBfX2VtdmFsX251bGwoKXtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihudWxsKX1mdW5jdGlvbiBfX2VtdmFsX25ld19jc3RyaW5nKHYpe3JldHVybiBfX2VtdmFsX3JlZ2lzdGVyKGdldFN0cmluZ09yU3ltYm9sKHYpKX1mdW5jdGlvbiBfX2VtdmFsX3Rha2VfdmFsdWUodHlwZSxhcmd2KXt0eXBlPXJlcXVpcmVSZWdpc3RlcmVkVHlwZSh0eXBlLCJfZW12YWxfdGFrZV92YWx1ZSIpO3ZhciB2PXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJndik7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodil9dmFyIF9fbmV3ZXJzPXt9O2Z1bmN0aW9uIGNyYWZ0RW12YWxBbGxvY2F0b3IoYXJnQ291bnQpe3ZhciBhcmdzTGlzdD0iIjtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7YXJnc0xpc3QrPShpIT09MD8iLCAiOiIiKSsiYXJnIitpfXZhciBmdW5jdGlvbkJvZHk9InJldHVybiBmdW5jdGlvbiBlbXZhbF9hbGxvY2F0b3JfIithcmdDb3VudCsiKGNvbnN0cnVjdG9yLCBhcmdUeXBlcywgYXJncykge1xuIjtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7ZnVuY3Rpb25Cb2R5Kz0idmFyIGFyZ1R5cGUiK2krIiA9IHJlcXVpcmVSZWdpc3RlcmVkVHlwZShIRUFQMzJbKGFyZ1R5cGVzID4+IDIpICsgIitpKyddLCAicGFyYW1ldGVyICcraSsnIik7XG4nKyJ2YXIgYXJnIitpKyIgPSBhcmdUeXBlIitpKyIucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyk7XG4iKyJhcmdzICs9IGFyZ1R5cGUiK2krIi5hcmdQYWNrQWR2YW5jZTtcbiJ9ZnVuY3Rpb25Cb2R5Kz0idmFyIG9iaiA9IG5ldyBjb25zdHJ1Y3RvcigiK2FyZ3NMaXN0KyIpO1xuIisicmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIob2JqKTtcbiIrIn1cbiI7cmV0dXJuKG5ldyBGdW5jdGlvbigicmVxdWlyZVJlZ2lzdGVyZWRUeXBlIiwiSEVBUDMyIiwiX19lbXZhbF9yZWdpc3RlciIsZnVuY3Rpb25Cb2R5KSkocmVxdWlyZVJlZ2lzdGVyZWRUeXBlLEhFQVAzMixfX2VtdmFsX3JlZ2lzdGVyKX1mdW5jdGlvbiBfX2VtdmFsX25ldyhoYW5kbGUsYXJnQ291bnQsYXJnVHlwZXMsYXJncyl7aGFuZGxlPXJlcXVpcmVIYW5kbGUoaGFuZGxlKTt2YXIgbmV3ZXI9X19uZXdlcnNbYXJnQ291bnRdO2lmKCFuZXdlcil7bmV3ZXI9Y3JhZnRFbXZhbEFsbG9jYXRvcihhcmdDb3VudCk7X19uZXdlcnNbYXJnQ291bnRdPW5ld2VyfXJldHVybiBuZXdlcihoYW5kbGUsYXJnVHlwZXMsYXJncyl9dmFyIGdsb2JhbD0oZnVuY3Rpb24oKXtyZXR1cm4gRnVuY3Rpb259KSgpKCJyZXR1cm4gdGhpcyIpKCk7ZnVuY3Rpb24gX19lbXZhbF9nZXRfZ2xvYmFsKG5hbWUpe25hbWU9Z2V0U3RyaW5nT3JTeW1ib2wobmFtZSk7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIoZ2xvYmFsW25hbWVdKX1mdW5jdGlvbiBfX2VtdmFsX2dldF9tb2R1bGVfcHJvcGVydHkobmFtZSl7bmFtZT1nZXRTdHJpbmdPclN5bWJvbChuYW1lKTtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihNb2R1bGVbbmFtZV0pfWZ1bmN0aW9uIF9fZW12YWxfZ2V0X3Byb3BlcnR5KGhhbmRsZSxrZXkpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7a2V5PXJlcXVpcmVIYW5kbGUoa2V5KTtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihoYW5kbGVba2V5XSl9ZnVuY3Rpb24gX19lbXZhbF9zZXRfcHJvcGVydHkoaGFuZGxlLGtleSx2YWx1ZSl7aGFuZGxlPXJlcXVpcmVIYW5kbGUoaGFuZGxlKTtrZXk9cmVxdWlyZUhhbmRsZShrZXkpO3ZhbHVlPXJlcXVpcmVIYW5kbGUodmFsdWUpO2hhbmRsZVtrZXldPXZhbHVlfWZ1bmN0aW9uIF9fZW12YWxfYXMoaGFuZGxlLHJldHVyblR5cGUsZGVzdHJ1Y3RvcnNSZWYpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7cmV0dXJuVHlwZT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmV0dXJuVHlwZSwiZW12YWw6OmFzIik7dmFyIGRlc3RydWN0b3JzPVtdO3ZhciByZD1fX2VtdmFsX3JlZ2lzdGVyKGRlc3RydWN0b3JzKTtIRUFQMzJbZGVzdHJ1Y3RvcnNSZWY+PjJdPXJkO3JldHVybiByZXR1cm5UeXBlWyJ0b1dpcmVUeXBlIl0oZGVzdHJ1Y3RvcnMsaGFuZGxlKX1mdW5jdGlvbiBfX2VtdmFsX2NhbGwoaGFuZGxlLGFyZ0NvdW50LGFyZ1R5cGVzLGFyZ3Ype2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7dmFyIHR5cGVzPWxvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgYXJncz1uZXcgQXJyYXkoYXJnQ291bnQpO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQ7KytpKXt2YXIgdHlwZT10eXBlc1tpXTthcmdzW2ldPXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJndik7YXJndis9dHlwZS5hcmdQYWNrQWR2YW5jZX12YXIgcnY9aGFuZGxlLmFwcGx5KHVuZGVmaW5lZCxhcmdzKTtyZXR1cm4gX19lbXZhbF9yZWdpc3Rlcihydil9ZnVuY3Rpb24gbG9va3VwVHlwZXMoYXJnQ291bnQsYXJnVHlwZXMsYXJnV2lyZVR5cGVzKXt2YXIgYT1uZXcgQXJyYXkoYXJnQ291bnQpO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQ7KytpKXthW2ldPXJlcXVpcmVSZWdpc3RlcmVkVHlwZShIRUFQMzJbKGFyZ1R5cGVzPj4yKStpXSwicGFyYW1ldGVyICIraSl9cmV0dXJuIGF9ZnVuY3Rpb24gYWxsb2NhdGVEZXN0cnVjdG9ycyhkZXN0cnVjdG9yc1JlZil7dmFyIGRlc3RydWN0b3JzPVtdO0hFQVAzMltkZXN0cnVjdG9yc1JlZj4+Ml09X19lbXZhbF9yZWdpc3RlcihkZXN0cnVjdG9ycyk7cmV0dXJuIGRlc3RydWN0b3JzfXZhciBtZXRob2RDYWxsZXJzPVt1bmRlZmluZWRdO2Z1bmN0aW9uIGFkZE1ldGhvZENhbGxlcihjYWxsZXIpe3ZhciBpZD1tZXRob2RDYWxsZXJzLmxlbmd0aDttZXRob2RDYWxsZXJzLnB1c2goY2FsbGVyKTtyZXR1cm4gaWR9ZnVuY3Rpb24gX19lbXZhbF9nZXRfbWV0aG9kX2NhbGxlcihhcmdDb3VudCxhcmdUeXBlcyl7dmFyIHR5cGVzPWxvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgcmV0VHlwZT10eXBlc1swXTt2YXIgc2lnbmF0dXJlTmFtZT1yZXRUeXBlLm5hbWUrIl8kIit0eXBlcy5zbGljZSgxKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWV9KSkuam9pbigiXyIpKyIkIjt2YXIgcGFyYW1zPVsicmV0VHlwZSJdO3ZhciBhcmdzPVtyZXRUeXBlXTt2YXIgYXJnc0xpc3Q9IiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7YXJnc0xpc3QrPShpIT09MD8iLCAiOiIiKSsiYXJnIitpO3BhcmFtcy5wdXNoKCJhcmdUeXBlIitpKTthcmdzLnB1c2godHlwZXNbMStpXSl9dmFyIGZ1bmN0aW9uQm9keT0icmV0dXJuIGZ1bmN0aW9uIChoYW5kbGUsIG5hbWUsIGRlc3RydWN0b3JzLCBhcmdzKSB7XG4iO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMTsrK2kpe2Z1bmN0aW9uQm9keSs9IiAgICB2YXIgYXJnIitpKyIgPSBhcmdUeXBlIitpKyIucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyk7XG4iKyIgICAgYXJncyArPSBhcmdUeXBlIitpKyIuYXJnUGFja0FkdmFuY2U7XG4ifWZ1bmN0aW9uQm9keSs9IiAgICB2YXIgcnYgPSBoYW5kbGVbbmFtZV0oIithcmdzTGlzdCsiKTtcbiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7aWYodHlwZXNbaSsxXVsiZGVsZXRlT2JqZWN0Il0pe2Z1bmN0aW9uQm9keSs9IiAgICBhcmdUeXBlIitpKyIuZGVsZXRlT2JqZWN0KGFyZyIraSsiKTtcbiJ9fWZ1bmN0aW9uQm9keSs9IiAgICByZXR1cm4gcmV0VHlwZS50b1dpcmVUeXBlKGRlc3RydWN0b3JzLCBydik7XG4iKyJ9O1xuIjtwYXJhbXMucHVzaChmdW5jdGlvbkJvZHkpO3ZhciBpbnZva2VyRnVuY3Rpb249bmV3XyhGdW5jdGlvbixwYXJhbXMpLmFwcGx5KG51bGwsYXJncyk7cmV0dXJuIGFkZE1ldGhvZENhbGxlcihjcmVhdGVOYW1lZEZ1bmN0aW9uKHNpZ25hdHVyZU5hbWUsaW52b2tlckZ1bmN0aW9uKSl9ZnVuY3Rpb24gX19lbXZhbF9jYWxsX21ldGhvZChjYWxsZXIsaGFuZGxlLG1ldGhvZE5hbWUsZGVzdHJ1Y3RvcnNSZWYsYXJncyl7Y2FsbGVyPW1ldGhvZENhbGxlcnNbY2FsbGVyXTtoYW5kbGU9cmVxdWlyZUhhbmRsZShoYW5kbGUpO21ldGhvZE5hbWU9Z2V0U3RyaW5nT3JTeW1ib2wobWV0aG9kTmFtZSk7cmV0dXJuIGNhbGxlcihoYW5kbGUsbWV0aG9kTmFtZSxhbGxvY2F0ZURlc3RydWN0b3JzKGRlc3RydWN0b3JzUmVmKSxhcmdzKX1mdW5jdGlvbiBfX2VtdmFsX2hhc19mdW5jdGlvbihoYW5kbGUsbmFtZSxjbGFzc1R5cGUpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7bmFtZT1nZXRTdHJpbmdPclN5bWJvbChuYW1lKTtjbGFzc1R5cGU9cmVxdWlyZVJlZ2lzdGVyZWRUeXBlKGNsYXNzVHlwZSwiY2xhc3Mgd3JhcHBlciBmaWx0ZXIiKTt2YXIgZmlsdGVyPWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGVbbmFtZV07cmV0dXJuIGhhbmRsZVtuYW1lXWluc3RhbmNlb2YgRnVuY3Rpb24mJihmaWx0ZXI9PT11bmRlZmluZWR8fGhhbmRsZVtuYW1lXSE9PWZpbHRlcil9ZnVuY3Rpb24gX19lbXZhbF90eXBlb2YoaGFuZGxlKXtoYW5kbGU9cmVxdWlyZUhhbmRsZShoYW5kbGUpO3JldHVybiBfX2VtdmFsX3JlZ2lzdGVyKHR5cGVvZiBoYW5kbGUpfWlmKE1vZHVsZVsicHJlSW5pdCJdKXtpZih0eXBlb2YgTW9kdWxlWyJwcmVJbml0Il09PSJmdW5jdGlvbiIpTW9kdWxlWyJwcmVJbml0Il09W01vZHVsZVsicHJlSW5pdCJdXTt3aGlsZShNb2R1bGVbInByZUluaXQiXS5sZW5ndGg+MCl7TW9kdWxlWyJwcmVJbml0Il0ucG9wKCkoKX19dmFyIHNob3VsZFJ1bk5vdz10cnVlO2lmKE1vZHVsZVsibm9Jbml0aWFsUnVuIl0pe3Nob3VsZFJ1bk5vdz1mYWxzZX1ydW4oKQoKCgoKLy8gbGF6LWxvYWRlci13b3JrZXIuanMKLy8KCi8vaW1wb3J0U2NyaXB0cygnbGF6LXBlcmYuanMnKTsKCnZhciBpbnN0YW5jZSA9IG51bGw7IC8vIGxhei1wZXJmIGluc3RhbmNlCgpmdW5jdGlvbiByZWFkQXMoYnVmLCBUeXBlLCBvZmZzZXQsIGNvdW50KSB7Cgljb3VudCA9IChjb3VudCA9PT0gdW5kZWZpbmVkIHx8IGNvdW50ID09PSAwID8gMSA6IGNvdW50KTsKCXZhciBzdWIgPSBidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBUeXBlLkJZVEVTX1BFUl9FTEVNRU5UICogY291bnQpOwoKCXZhciByID0gbmV3IFR5cGUoc3ViKTsKCWlmIChjb3VudCA9PT0gdW5kZWZpbmVkIHx8IGNvdW50ID09PSAxKQoJCXJldHVybiByWzBdOwoKCXZhciByZXQgPSBbXTsKCWZvciAodmFyIGkgPSAwIDsgaSA8IGNvdW50IDsgaSArKykgewoJCXJldC5wdXNoKHJbaV0pOwoJfQoKCXJldHVybiByZXQ7Cn0KCmZ1bmN0aW9uIHBhcnNlTEFTSGVhZGVyKGFycmF5YnVmZmVyKSB7Cgl2YXIgbyA9IHt9OwoKCW8ucG9pbnRzT2Zmc2V0ID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50MzJBcnJheSwgMzIqMyk7CglvLnBvaW50c0Zvcm1hdElkID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50OEFycmF5LCAzMiozKzgpOwoJby5wb2ludHNTdHJ1Y3RTaXplID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50MTZBcnJheSwgMzIqMys4KzEpOwoJby5wb2ludHNDb3VudCA9IHJlYWRBcyhhcnJheWJ1ZmZlciwgVWludDMyQXJyYXksIDMyKjMgKyAxMSk7CgoKCXZhciBzdGFydCA9IDMyKjMgKyAzNTsKCW8uc2NhbGUgPSByZWFkQXMoYXJyYXlidWZmZXIsIEZsb2F0NjRBcnJheSwgc3RhcnQsIDMpOyBzdGFydCArPSAyNDsgLy8gOCozCglvLm9mZnNldCA9IHJlYWRBcyhhcnJheWJ1ZmZlciwgRmxvYXQ2NEFycmF5LCBzdGFydCwgMyk7IHN0YXJ0ICs9IDI0OwoKCXZhciBib3VuZHMgPSByZWFkQXMoYXJyYXlidWZmZXIsIEZsb2F0NjRBcnJheSwgc3RhcnQsIDYpOyBzdGFydCArPSA0ODsgLy8gOCo2OwoJby5tYXhzID0gW2JvdW5kc1swXSwgYm91bmRzWzJdLCBib3VuZHNbNF1dOwoJby5taW5zID0gW2JvdW5kc1sxXSwgYm91bmRzWzNdLCBib3VuZHNbNV1dOwoKCXJldHVybiBvOwp9CgpmdW5jdGlvbiBoYW5kbGVFdmVudChtc2cpIHsKCXN3aXRjaChtc2cudHlwZSkgewoJCWNhc2UgIm9wZW4iOgoJCQl0cnkgewoJCQkJaW5zdGFuY2UgPSBuZXcgTW9kdWxlLkxBU1ppcCgpOwoJCQkJdmFyIGFiSW50ID0gbmV3IFVpbnQ4QXJyYXkobXNnLmFycmF5YnVmZmVyKTsKCQkJCXZhciBidWYgPSBNb2R1bGUuX21hbGxvYyhtc2cuYXJyYXlidWZmZXIuYnl0ZUxlbmd0aCk7CgoJCQkJaW5zdGFuY2UuYXJyYXlidWZmZXIgPSBtc2cuYXJyYXlidWZmZXI7CgkJCQlpbnN0YW5jZS5idWYgPSBidWY7CgkJCQlNb2R1bGUuSEVBUFU4LnNldChhYkludCwgYnVmKTsKCQkJCWluc3RhbmNlLm9wZW4oYnVmLCBtc2cuYXJyYXlidWZmZXIuYnl0ZUxlbmd0aCk7CgoJCQkJaW5zdGFuY2UucmVhZE9mZnNldCA9IDA7CgoJCQkJcG9zdE1lc3NhZ2UoeyB0eXBlOiAib3BlbiIsIHN0YXR1czogMX0pOwoJCQl9CgkJCWNhdGNoKGUpIHsKCQkJCXBvc3RNZXNzYWdlKHsgdHlwZTogIm9wZW4iLCBzdGF0dXM6IDAsIGRldGFpbHM6IGUgfSk7CgkJCX0KCQkJYnJlYWs7CgoJCWNhc2UgImhlYWRlciI6CgkJCWlmICghaW5zdGFuY2UpCgkJCQl0aHJvdyBuZXcgRXJyb3IoIllvdSBuZWVkIHRvIG9wZW4gdGhlIGZpbGUgYmVmb3JlIHRyeWluZyB0byByZWFkIGhlYWRlciIpOwoKCgoJCQl2YXIgaGVhZGVyID0gcGFyc2VMQVNIZWFkZXIoaW5zdGFuY2UuYXJyYXlidWZmZXIpOwoJCQloZWFkZXIucG9pbnRzRm9ybWF0SWQgJj0gMHgzZjsKCQkJaW5zdGFuY2UuaGVhZGVyID0gaGVhZGVyOwoJCQlwb3N0TWVzc2FnZSh7dHlwZTogImhlYWRlciIsIHN0YXR1czogMSwgaGVhZGVyOiBoZWFkZXJ9KTsKCQkJYnJlYWs7CgoJCWNhc2UgInJlYWQiOgoJCQlpZiAoIWluc3RhbmNlKQoJCQkJdGhyb3cgbmV3IEVycm9yKCJZb3UgbmVlZCB0byBvcGVuIHRoZSBmaWxlIGJlZm9yZSB0cnlpbmcgdG8gcmVhZCBzdHVmZiIpOwoKCQkJdmFyIHN0YXJ0ID0gbXNnLnN0YXJ0LCBjb3VudCA9IG1zZy5jb3VudCwgc2tpcCA9IG1zZy5za2lwOwoJCQl2YXIgbyA9IGluc3RhbmNlOwoKCQkJaWYgKCFvLmhlYWRlcikKCQkJCXRocm93IG5ldyBFcnJvcigiWW91IG5lZWQgdG8gcXVlcnkgaGVhZGVyIGJlZm9yZSByZWFkaW5nLCBJIG1haW50YWluIHN0YXRlIHRoYXQgd2F5LCBzb3JyeSA6KCIpOwoKCQkJdmFyIHBvaW50c1RvUmVhZCA9IE1hdGgubWluKGNvdW50ICogc2tpcCwgby5oZWFkZXIucG9pbnRzQ291bnQgLSBvLnJlYWRPZmZzZXQpOwoJCQl2YXIgYnVmZmVyU2l6ZSA9IE1hdGguY2VpbChwb2ludHNUb1JlYWQgLyBza2lwKTsKCQkJdmFyIHBvaW50c1JlYWQgPSAwOwoKCQkJdmFyIHRoaXNfYnVmID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyU2l6ZSAqIG8uaGVhZGVyLnBvaW50c1N0cnVjdFNpemUpOwoJCQl2YXIgYnVmX3JlYWQgPSBNb2R1bGUuX21hbGxvYyhvLmhlYWRlci5wb2ludHNTdHJ1Y3RTaXplKTsKCQkJZm9yICh2YXIgaSA9IDAgOyBpIDwgcG9pbnRzVG9SZWFkIDsgaSArKykgewoJCQkJby5nZXRQb2ludChidWZfcmVhZCk7CgoJCQkJaWYgKGkgJSBza2lwID09PSAwKSB7CgkJCQkJdmFyIGEgPSBuZXcgVWludDhBcnJheShNb2R1bGUuSEVBUFU4LmJ1ZmZlciwgYnVmX3JlYWQsIG8uaGVhZGVyLnBvaW50c1N0cnVjdFNpemUpOwoJCQkJCXRoaXNfYnVmLnNldChhLCBwb2ludHNSZWFkICogby5oZWFkZXIucG9pbnRzU3RydWN0U2l6ZSwgby5oZWFkZXIucG9pbnRzU3RydWN0U2l6ZSk7CgkJCQkJcG9pbnRzUmVhZCArKzsKCQkJCX0KCgkJCQlvLnJlYWRPZmZzZXQgKys7CgkJCX0KCgkJCXBvc3RNZXNzYWdlKHsKCQkJCXR5cGU6ICdoZWFkZXInLAoJCQkJc3RhdHVzOiAxLAoJCQkJYnVmZmVyOiB0aGlzX2J1Zi5idWZmZXIsCgkJCQljb3VudDogcG9pbnRzUmVhZCwKCQkJCWhhc01vcmVEYXRhOiBvLnJlYWRPZmZzZXQgPCBvLmhlYWRlci5wb2ludHNDb3VudAoJCQl9KTsKCgkJCWJyZWFrOwoKCgkJY2FzZSAiY2xvc2UiOgoJCQlpZiAoaW5zdGFuY2UgIT09IG51bGwpIHsKCQkJCWluc3RhbmNlLmRlbGV0ZSgpOwoJCQkJaW5zdGFuY2UgPSBudWxsOwoJCQl9CgkJCXBvc3RNZXNzYWdlKHsgdHlwZTogImNsb3NlIiwgc3RhdHVzOiAxfSk7CgkJCWJyZWFrOwoJfQp9Cgpvbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewoJdHJ5IHsKCQloYW5kbGVFdmVudChldmVudC5kYXRhKTsKCX0gY2F0Y2goZSkgewoJCXBvc3RNZXNzYWdlKHt0eXBlOiBldmVudC5kYXRhLnR5cGUsIHN0YXR1czogMCwgZGV0YWlsczogZX0pOwoJfQp9OwoKCg==")),Potree.workers.lasdecoder=new Potree.WorkerManager(atob("CgovL3ZhciBwb2ludEZvcm1hdFJlYWRlcnMgPSB7Ci8vCTA6IGZ1bmN0aW9uKGR2KSB7Ci8vCQlyZXR1cm4gewovLwkJCSJwb3NpdGlvbiI6IFsgZHYuZ2V0SW50MzIoMCwgdHJ1ZSksIGR2LmdldEludDMyKDQsIHRydWUpLCBkdi5nZXRJbnQzMig4LCB0cnVlKV0sCi8vCQkJImludGVuc2l0eSI6IGR2LmdldFVpbnQxNigxMiwgdHJ1ZSksCi8vCQkJImNsYXNzaWZpY2F0aW9uIjogZHYuZ2V0VWludDgoMTYsIHRydWUpCi8vCQl9OwovLwl9LAovLwkxOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKQovLwkJfTsKLy8JfSwKLy8JMjogZnVuY3Rpb24oZHYpIHsKLy8JCXJldHVybiB7Ci8vCQkJInBvc2l0aW9uIjogWyBkdi5nZXRJbnQzMigwLCB0cnVlKSwgZHYuZ2V0SW50MzIoNCwgdHJ1ZSksIGR2LmdldEludDMyKDgsIHRydWUpXSwKLy8JCQkiaW50ZW5zaXR5IjogZHYuZ2V0VWludDE2KDEyLCB0cnVlKSwKLy8JCQkiY2xhc3NpZmljYXRpb24iOiBkdi5nZXRVaW50OCgxNiwgdHJ1ZSksCi8vCQkJImNvbG9yIjogW2R2LmdldFVpbnQxNigyMCwgdHJ1ZSksIGR2LmdldFVpbnQxNigyMiwgdHJ1ZSksIGR2LmdldFVpbnQxNigyNCwgdHJ1ZSldCi8vCQl9OwovLwl9LAovLwkzOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKSwKLy8JCQkiY29sb3IiOiBbZHYuZ2V0VWludDE2KDI4LCB0cnVlKSwgZHYuZ2V0VWludDE2KDMwLCB0cnVlKSwgZHYuZ2V0VWludDE2KDMyLCB0cnVlKV0KLy8JCX07Ci8vCX0KLy99OwovLwkKLy8JCi8vIERlY29kZXMgTEFTIHJlY29yZHMgaW50byBwb2ludHMKLy8KLy92YXIgTEFTRGVjb2RlciA9IGZ1bmN0aW9uKGJ1ZmZlciwgcG9pbnRGb3JtYXRJRCwgcG9pbnRTaXplLCBwb2ludHNDb3VudCwgc2NhbGUsIG9mZnNldCkgewovLwl0aGlzLmFycmF5YiA9IGJ1ZmZlcjsKLy8JdGhpcy5kZWNvZGVyID0gcG9pbnRGb3JtYXRSZWFkZXJzW3BvaW50Rm9ybWF0SURdOwovLwl0aGlzLnBvaW50c0NvdW50ID0gcG9pbnRzQ291bnQ7Ci8vCXRoaXMucG9pbnRTaXplID0gcG9pbnRTaXplOwovLwl0aGlzLnNjYWxlID0gc2NhbGU7Ci8vCXRoaXMub2Zmc2V0ID0gb2Zmc2V0OwovL307Ci8vCi8vTEFTRGVjb2Rlci5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbihpbmRleCkgewovLwlpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucG9pbnRzQ291bnQpCi8vCQl0aHJvdyBuZXcgRXJyb3IoIlBvaW50IGluZGV4IG91dCBvZiByYW5nZSIpOwovLwovLwl2YXIgZHYgPSBuZXcgRGF0YVZpZXcodGhpcy5hcnJheWIsIGluZGV4ICogdGhpcy5wb2ludFNpemUsIHRoaXMucG9pbnRTaXplKTsKLy8JcmV0dXJuIHRoaXMuZGVjb2Rlcihkdik7Ci8vfTsKCm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KXsKCXZhciBidWZmZXIgPSBldmVudC5kYXRhLmJ1ZmZlcjsKCXZhciBudW1Qb2ludHMgPSBldmVudC5kYXRhLm51bVBvaW50czsKCXZhciBwb2ludFNpemUgPSBldmVudC5kYXRhLnBvaW50U2l6ZTsKCXZhciBwb2ludEZvcm1hdElEID0gZXZlbnQuZGF0YS5wb2ludEZvcm1hdElEOwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCXZhciBvZmZzZXQgPSBldmVudC5kYXRhLm9mZnNldDsKCXZhciBtaW5zID0gZXZlbnQuZGF0YS5taW5zOwoJdmFyIG1heHMgPSBldmVudC5kYXRhLm1heHM7Cgl2YXIgYmJPZmZzZXQgPSBldmVudC5kYXRhLmJiT2Zmc2V0OwoJCgl2YXIgdGVtcCA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKCXZhciB0ZW1wVWludDggPSBuZXcgVWludDhBcnJheSh0ZW1wKTsKCXZhciB0ZW1wVWludDE2ID0gbmV3IFVpbnQxNkFycmF5KHRlbXApOwoJdmFyIHRlbXBGbG9hdDMyID0gbmV3IEZsb2F0MzJBcnJheSh0ZW1wKTsKCXZhciB0ZW1wSW50MzIgPSBuZXcgSW50MzJBcnJheSh0ZW1wKTsKCXZhciBidWZmZXJWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKCQoJdmFyIHBCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGNCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGlCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KTsKCXZhciBjbEJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBybkJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBwc0J1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzICogMik7CgkKCXZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KHBCdWZmKTsKCXZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkFycmF5KGNCdWZmKTsKCXZhciBpbnRlbnNpdGllcyA9IG5ldyBGbG9hdDMyQXJyYXkoaUJ1ZmYpOwoJdmFyIGNsYXNzaWZpY2F0aW9ucyA9IG5ldyBVaW50OEFycmF5KGNsQnVmZik7Cgl2YXIgcmV0dXJuTnVtYmVycyA9IG5ldyBVaW50OEFycmF5KHJuQnVmZik7Cgl2YXIgcG9pbnRTb3VyY2VJRHMgPSBuZXcgVWludDE2QXJyYXkocHNCdWZmKTsKCQoJCgkvLyB0ZW1wIGFycmF5cyBzZWVtIHRvIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gRGF0YVZpZXdzCgkvLyBhdCB0aGUgbW9tZW50OiBodHRwOi8vanNwZXJmLmNvbS9kYXRhdmlldy12cy10ZW1wb3JhcnktZmxvYXQ2NGFycmF5Cglmb3IodmFyIGkgPSAwOyBpIDwgbnVtUG9pbnRzOyBpKyspewoJCgkJLy8gUE9TSVRJT04KCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzBdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMV07CgkJdGVtcFVpbnQ4WzJdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyXTsKCQl0ZW1wVWludDhbM10gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzNdOwoJCXZhciB4ID0gdGVtcEludDMyWzBdOwoJCQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrNF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs1XTsKCQl0ZW1wVWludDhbMl0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzZdOwoJCXRlbXBVaW50OFszXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrN107CgkJdmFyIHkgPSB0ZW1wSW50MzJbMF07CgkJCgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs4XTsKCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzldOwoJCXRlbXBVaW50OFsyXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTBdOwoJCXRlbXBVaW50OFszXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTFdOwoJCXZhciB6ID0gdGVtcEludDMyWzBdOwoJCQoJCXBvc2l0aW9uc1szKmkrMF0gPSB4ICogc2NhbGVbMF0gKyBvZmZzZXRbMF0gKyBiYk9mZnNldFswXTsKCQlwb3NpdGlvbnNbMyppKzFdID0geSAqIHNjYWxlWzFdICsgb2Zmc2V0WzFdICsgYmJPZmZzZXRbMV07CgkJcG9zaXRpb25zWzMqaSsyXSA9IHogKiBzY2FsZVsyXSArIG9mZnNldFsyXSArIGJiT2Zmc2V0WzJdOwoJCQoJCS8vIElOVEVOU0lUWQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTJdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTNdOwoJCXZhciBpbnRlbnNpdHkgPSB0ZW1wVWludDE2WzBdOwoJCWludGVuc2l0aWVzW2ldID0gaW50ZW5zaXR5OwoJCQoJCS8vIFJFVFVSTiBOVU1CRVIsIHN0b3JlZCBpbiB0aGUgZmlyc3QgMyBiaXRzCgkJdmFyIHJldHVybk51bWJlciA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTRdICYgNzsKCQlyZXR1cm5OdW1iZXJzW2ldID0gcmV0dXJuTnVtYmVyOwoJCQoJCS8vIENMQVNTSUZJQ0FUSU9OCgkJdmFyIGNsYXNzaWZpY2F0aW9uID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxNV07CgkJY2xhc3NpZmljYXRpb25zW2ldID0gY2xhc3NpZmljYXRpb247CgkJCgkJLy8gUE9JTlQgU09VUkNFIElECgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxOF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxOV07CgkJdmFyIHBvaW50U291cmNlSUQgPSB0ZW1wVWludDE2WzBdOwoJCXBvaW50U291cmNlSURzW2ldID0gcG9pbnRTb3VyY2VJRDsKCQkKCQkvLyBDT0xPUiwgaWYgYXZhaWxhYmxlCgkJaWYocG9pbnRGb3JtYXRJRCA9PT0gMil7CgkJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjBdOwoJCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzIxXTsKCQkJdmFyIHIgPSB0ZW1wVWludDE2WzBdOwoJCQkKCQkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyMl07CgkJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjNdOwoJCQl2YXIgZyA9IHRlbXBVaW50MTZbMF07CgkJCQoJCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzI0XTsKCQkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyNV07CgkJCXZhciBiID0gdGVtcFVpbnQxNlswXTsKCQkJCgkJCWNvbG9yc1szKmkrMF0gPSByIC8gNjU1MzY7CgkJCWNvbG9yc1szKmkrMV0gPSBnIC8gNjU1MzY7CgkJCWNvbG9yc1szKmkrMl0gPSBiIC8gNjU1MzY7CgkJfQoJfQoJCgl2YXIgbWVzc2FnZSA9IHsKCQlwb3NpdGlvbjogcEJ1ZmYsIAoJCWNvbG9yOiBjQnVmZiwgCgkJaW50ZW5zaXR5OiBpQnVmZiwKCQljbGFzc2lmaWNhdGlvbjogY2xCdWZmLAoJCXJldHVybk51bWJlcjogcm5CdWZmLAoJCXBvaW50U291cmNlSUQ6IHBzQnVmZn07CgkJCgl2YXIgdHJhbnNmZXJhYmxlcyA9IFsKCQltZXNzYWdlLnBvc2l0aW9uLAoJCW1lc3NhZ2UuY29sb3IsIAoJCW1lc3NhZ2UuaW50ZW5zaXR5LAoJCW1lc3NhZ2UuY2xhc3NpZmljYXRpb24sCgkJbWVzc2FnZS5yZXR1cm5OdW1iZXIsCgkJbWVzc2FnZS5wb2ludFNvdXJjZUlEXTsKCQkKCXBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRyYW5zZmVyYWJsZXMpOwp9Cg==")); +Potree.workers.laslaz=new Potree.WorkerManager(atob("dmFyIE1vZHVsZTtpZighTW9kdWxlKU1vZHVsZT0odHlwZW9mIE1vZHVsZSE9PSJ1bmRlZmluZWQiP01vZHVsZTpudWxsKXx8e307dmFyIG1vZHVsZU92ZXJyaWRlcz17fTtmb3IodmFyIGtleSBpbiBNb2R1bGUpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKXttb2R1bGVPdmVycmlkZXNba2V5XT1Nb2R1bGVba2V5XX19dmFyIEVOVklST05NRU5UX0lTX05PREU9dHlwZW9mIHByb2Nlc3M9PT0ib2JqZWN0IiYmdHlwZW9mIHJlcXVpcmU9PT0iZnVuY3Rpb24iO3ZhciBFTlZJUk9OTUVOVF9JU19XRUI9dHlwZW9mIHdpbmRvdz09PSJvYmplY3QiO3ZhciBFTlZJUk9OTUVOVF9JU19XT1JLRVI9dHlwZW9mIGltcG9ydFNjcmlwdHM9PT0iZnVuY3Rpb24iO3ZhciBFTlZJUk9OTUVOVF9JU19TSEVMTD0hRU5WSVJPTk1FTlRfSVNfV0VCJiYhRU5WSVJPTk1FTlRfSVNfTk9ERSYmIUVOVklST05NRU5UX0lTX1dPUktFUjtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtpZighTW9kdWxlWyJwcmludCJdKU1vZHVsZVsicHJpbnQiXT1mdW5jdGlvbiBwcmludCh4KXtwcm9jZXNzWyJzdGRvdXQiXS53cml0ZSh4KyJcbiIpfTtpZighTW9kdWxlWyJwcmludEVyciJdKU1vZHVsZVsicHJpbnRFcnIiXT1mdW5jdGlvbiBwcmludEVycih4KXtwcm9jZXNzWyJzdGRlcnIiXS53cml0ZSh4KyJcbiIpfTt2YXIgbm9kZUZTPXJlcXVpcmUoImZzIik7dmFyIG5vZGVQYXRoPXJlcXVpcmUoInBhdGgiKTtNb2R1bGVbInJlYWQiXT1mdW5jdGlvbiByZWFkKGZpbGVuYW1lLGJpbmFyeSl7ZmlsZW5hbWU9bm9kZVBhdGhbIm5vcm1hbGl6ZSJdKGZpbGVuYW1lKTt2YXIgcmV0PW5vZGVGU1sicmVhZEZpbGVTeW5jIl0oZmlsZW5hbWUpO2lmKCFyZXQmJmZpbGVuYW1lIT1ub2RlUGF0aFsicmVzb2x2ZSJdKGZpbGVuYW1lKSl7ZmlsZW5hbWU9cGF0aC5qb2luKF9fZGlybmFtZSwiLi4iLCJzcmMiLGZpbGVuYW1lKTtyZXQ9bm9kZUZTWyJyZWFkRmlsZVN5bmMiXShmaWxlbmFtZSl9aWYocmV0JiYhYmluYXJ5KXJldD1yZXQudG9TdHJpbmcoKTtyZXR1cm4gcmV0fTtNb2R1bGVbInJlYWRCaW5hcnkiXT1mdW5jdGlvbiByZWFkQmluYXJ5KGZpbGVuYW1lKXtyZXR1cm4gTW9kdWxlWyJyZWFkIl0oZmlsZW5hbWUsdHJ1ZSl9O01vZHVsZVsibG9hZCJdPWZ1bmN0aW9uIGxvYWQoZil7Z2xvYmFsRXZhbChyZWFkKGYpKX07TW9kdWxlWyJhcmd1bWVudHMiXT1wcm9jZXNzWyJhcmd2Il0uc2xpY2UoMik7bW9kdWxlWyJleHBvcnRzIl09TW9kdWxlfWVsc2UgaWYoRU5WSVJPTk1FTlRfSVNfU0hFTEwpe2lmKCFNb2R1bGVbInByaW50Il0pTW9kdWxlWyJwcmludCJdPXByaW50O2lmKHR5cGVvZiBwcmludEVyciE9InVuZGVmaW5lZCIpTW9kdWxlWyJwcmludEVyciJdPXByaW50RXJyO2lmKHR5cGVvZiByZWFkIT0idW5kZWZpbmVkIil7TW9kdWxlWyJyZWFkIl09cmVhZH1lbHNle01vZHVsZVsicmVhZCJdPWZ1bmN0aW9uIHJlYWQoKXt0aHJvdyJubyByZWFkKCkgYXZhaWxhYmxlIChqc2M/KSJ9fU1vZHVsZVsicmVhZEJpbmFyeSJdPWZ1bmN0aW9uIHJlYWRCaW5hcnkoZil7cmV0dXJuIHJlYWQoZiwiYmluYXJ5Iil9O2lmKHR5cGVvZiBzY3JpcHRBcmdzIT0idW5kZWZpbmVkIil7TW9kdWxlWyJhcmd1bWVudHMiXT1zY3JpcHRBcmdzfWVsc2UgaWYodHlwZW9mIGFyZ3VtZW50cyE9InVuZGVmaW5lZCIpe01vZHVsZVsiYXJndW1lbnRzIl09YXJndW1lbnRzfXRoaXNbIk1vZHVsZSJdPU1vZHVsZTtldmFsKCJpZiAodHlwZW9mIGdjID09PSAnZnVuY3Rpb24nICYmIGdjLnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlXScpID4gMCkgdmFyIGdjID0gdW5kZWZpbmVkIil9ZWxzZSBpZihFTlZJUk9OTUVOVF9JU19XRUJ8fEVOVklST05NRU5UX0lTX1dPUktFUil7TW9kdWxlWyJyZWFkIl09ZnVuY3Rpb24gcmVhZCh1cmwpe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7eGhyLnNlbmQobnVsbCk7cmV0dXJuIHhoci5yZXNwb25zZVRleHR9O2lmKHR5cGVvZiBhcmd1bWVudHMhPSJ1bmRlZmluZWQiKXtNb2R1bGVbImFyZ3VtZW50cyJdPWFyZ3VtZW50c31pZih0eXBlb2YgY29uc29sZSE9PSJ1bmRlZmluZWQiKXtpZighTW9kdWxlWyJwcmludCJdKU1vZHVsZVsicHJpbnQiXT1mdW5jdGlvbiBwcmludCh4KXt9O2lmKCFNb2R1bGVbInByaW50RXJyIl0pTW9kdWxlWyJwcmludEVyciJdPWZ1bmN0aW9uIHByaW50RXJyKHgpe319ZWxzZXt2YXIgVFJZX1VTRV9EVU1QPWZhbHNlO2lmKCFNb2R1bGVbInByaW50Il0pTW9kdWxlWyJwcmludCJdPVRSWV9VU0VfRFVNUCYmdHlwZW9mIGR1bXAhPT0idW5kZWZpbmVkIj8oZnVuY3Rpb24oeCl7ZHVtcCh4KX0pOihmdW5jdGlvbih4KXt9KX1pZihFTlZJUk9OTUVOVF9JU19XRUIpe3dpbmRvd1siTW9kdWxlIl09TW9kdWxlfWVsc2V7TW9kdWxlWyJsb2FkIl09aW1wb3J0U2NyaXB0c319ZWxzZXt0aHJvdyJVbmtub3duIHJ1bnRpbWUgZW52aXJvbm1lbnQuIFdoZXJlIGFyZSB3ZT8ifWZ1bmN0aW9uIGdsb2JhbEV2YWwoeCl7ZXZhbC5jYWxsKG51bGwseCl9aWYoIU1vZHVsZVsibG9hZCJdPT0idW5kZWZpbmVkIiYmTW9kdWxlWyJyZWFkIl0pe01vZHVsZVsibG9hZCJdPWZ1bmN0aW9uIGxvYWQoZil7Z2xvYmFsRXZhbChNb2R1bGVbInJlYWQiXShmKSl9fWlmKCFNb2R1bGVbInByaW50Il0pe01vZHVsZVsicHJpbnQiXT0oZnVuY3Rpb24oKXt9KX1pZighTW9kdWxlWyJwcmludEVyciJdKXtNb2R1bGVbInByaW50RXJyIl09TW9kdWxlWyJwcmludCJdfWlmKCFNb2R1bGVbImFyZ3VtZW50cyJdKXtNb2R1bGVbImFyZ3VtZW50cyJdPVtdfU1vZHVsZS5wcmludD1Nb2R1bGVbInByaW50Il07TW9kdWxlLnByaW50RXJyPU1vZHVsZVsicHJpbnRFcnIiXTtNb2R1bGVbInByZVJ1biJdPVtdO01vZHVsZVsicG9zdFJ1biJdPVtdO2Zvcih2YXIga2V5IGluIG1vZHVsZU92ZXJyaWRlcyl7aWYobW9kdWxlT3ZlcnJpZGVzLmhhc093blByb3BlcnR5KGtleSkpe01vZHVsZVtrZXldPW1vZHVsZU92ZXJyaWRlc1trZXldfX12YXIgUnVudGltZT17c2V0VGVtcFJldDA6KGZ1bmN0aW9uKHZhbHVlKXt0ZW1wUmV0MD12YWx1ZX0pLGdldFRlbXBSZXQwOihmdW5jdGlvbigpe3JldHVybiB0ZW1wUmV0MH0pLHN0YWNrU2F2ZTooZnVuY3Rpb24oKXtyZXR1cm4gU1RBQ0tUT1B9KSxzdGFja1Jlc3RvcmU6KGZ1bmN0aW9uKHN0YWNrVG9wKXtTVEFDS1RPUD1zdGFja1RvcH0pLGZvcmNlQWxpZ246KGZ1bmN0aW9uKHRhcmdldCxxdWFudHVtKXtxdWFudHVtPXF1YW50dW18fDQ7aWYocXVhbnR1bT09MSlyZXR1cm4gdGFyZ2V0O2lmKGlzTnVtYmVyKHRhcmdldCkmJmlzTnVtYmVyKHF1YW50dW0pKXtyZXR1cm4gTWF0aC5jZWlsKHRhcmdldC9xdWFudHVtKSpxdWFudHVtfWVsc2UgaWYoaXNOdW1iZXIocXVhbnR1bSkmJmlzUG93ZXJPZlR3byhxdWFudHVtKSl7cmV0dXJuIigoKCIrdGFyZ2V0KyIpKyIrKHF1YW50dW0tMSkrIikmIisgLXF1YW50dW0rIikifXJldHVybiJNYXRoLmNlaWwoKCIrdGFyZ2V0KyIpLyIrcXVhbnR1bSsiKSoiK3F1YW50dW19KSxpc051bWJlclR5cGU6KGZ1bmN0aW9uKHR5cGUpe3JldHVybiB0eXBlIGluIFJ1bnRpbWUuSU5UX1RZUEVTfHx0eXBlIGluIFJ1bnRpbWUuRkxPQVRfVFlQRVN9KSxpc1BvaW50ZXJUeXBlOmZ1bmN0aW9uIGlzUG9pbnRlclR5cGUodHlwZSl7cmV0dXJuIHR5cGVbdHlwZS5sZW5ndGgtMV09PSIqIn0saXNTdHJ1Y3RUeXBlOmZ1bmN0aW9uIGlzU3RydWN0VHlwZSh0eXBlKXtpZihpc1BvaW50ZXJUeXBlKHR5cGUpKXJldHVybiBmYWxzZTtpZihpc0FycmF5VHlwZSh0eXBlKSlyZXR1cm4gdHJ1ZTtpZigvPD9ceyA/W159XSogP1x9Pj8vLnRlc3QodHlwZSkpcmV0dXJuIHRydWU7cmV0dXJuIHR5cGVbMF09PSIlIn0sSU5UX1RZUEVTOnsiaTEiOjAsImk4IjowLCJpMTYiOjAsImkzMiI6MCwiaTY0IjowfSxGTE9BVF9UWVBFUzp7ImZsb2F0IjowLCJkb3VibGUiOjB9LG9yNjQ6KGZ1bmN0aW9uKHgseSl7dmFyIGw9eHwwfCh5fDApO3ZhciBoPShNYXRoLnJvdW5kKHgvNDI5NDk2NzI5Nil8TWF0aC5yb3VuZCh5LzQyOTQ5NjcyOTYpKSo0Mjk0OTY3Mjk2O3JldHVybiBsK2h9KSxhbmQ2NDooZnVuY3Rpb24oeCx5KXt2YXIgbD0oeHwwKSYoeXwwKTt2YXIgaD0oTWF0aC5yb3VuZCh4LzQyOTQ5NjcyOTYpJk1hdGgucm91bmQoeS80Mjk0OTY3Mjk2KSkqNDI5NDk2NzI5NjtyZXR1cm4gbCtofSkseG9yNjQ6KGZ1bmN0aW9uKHgseSl7dmFyIGw9KHh8MCleKHl8MCk7dmFyIGg9KE1hdGgucm91bmQoeC80Mjk0OTY3Mjk2KV5NYXRoLnJvdW5kKHkvNDI5NDk2NzI5NikpKjQyOTQ5NjcyOTY7cmV0dXJuIGwraH0pLGdldE5hdGl2ZVR5cGVTaXplOihmdW5jdGlvbih0eXBlKXtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6Y2FzZSJpOCI6cmV0dXJuIDE7Y2FzZSJpMTYiOnJldHVybiAyO2Nhc2UiaTMyIjpyZXR1cm4gNDtjYXNlImk2NCI6cmV0dXJuIDg7Y2FzZSJmbG9hdCI6cmV0dXJuIDQ7Y2FzZSJkb3VibGUiOnJldHVybiA4O2RlZmF1bHQ6e2lmKHR5cGVbdHlwZS5sZW5ndGgtMV09PT0iKiIpe3JldHVybiBSdW50aW1lLlFVQU5UVU1fU0laRX1lbHNlIGlmKHR5cGVbMF09PT0iaSIpe3ZhciBiaXRzPXBhcnNlSW50KHR5cGUuc3Vic3RyKDEpKTthc3NlcnQoYml0cyU4PT09MCk7cmV0dXJuIGJpdHMvOH1lbHNle3JldHVybiAwfX19fSksZ2V0TmF0aXZlRmllbGRTaXplOihmdW5jdGlvbih0eXBlKXtyZXR1cm4gTWF0aC5tYXgoUnVudGltZS5nZXROYXRpdmVUeXBlU2l6ZSh0eXBlKSxSdW50aW1lLlFVQU5UVU1fU0laRSl9KSxkZWR1cDpmdW5jdGlvbiBkZWR1cChpdGVtcyxpZGVudCl7dmFyIHNlZW49e307aWYoaWRlbnQpe3JldHVybiBpdGVtcy5maWx0ZXIoKGZ1bmN0aW9uKGl0ZW0pe2lmKHNlZW5baXRlbVtpZGVudF1dKXJldHVybiBmYWxzZTtzZWVuW2l0ZW1baWRlbnRdXT10cnVlO3JldHVybiB0cnVlfSkpfWVsc2V7cmV0dXJuIGl0ZW1zLmZpbHRlcigoZnVuY3Rpb24oaXRlbSl7aWYoc2VlbltpdGVtXSlyZXR1cm4gZmFsc2U7c2VlbltpdGVtXT10cnVlO3JldHVybiB0cnVlfSkpfX0sc2V0OmZ1bmN0aW9uIHNldCgpe3ZhciBhcmdzPXR5cGVvZiBhcmd1bWVudHNbMF09PT0ib2JqZWN0Ij9hcmd1bWVudHNbMF06YXJndW1lbnRzO3ZhciByZXQ9e307Zm9yKHZhciBpPTA7aTxhcmdzLmxlbmd0aDtpKyspe3JldFthcmdzW2ldXT0wfXJldHVybiByZXR9LFNUQUNLX0FMSUdOOjgsZ2V0QWxpZ25TaXplOihmdW5jdGlvbih0eXBlLHNpemUsdmFyYXJnKXtpZighdmFyYXJnJiYodHlwZT09Imk2NCJ8fHR5cGU9PSJkb3VibGUiKSlyZXR1cm4gODtpZighdHlwZSlyZXR1cm4gTWF0aC5taW4oc2l6ZSw4KTtyZXR1cm4gTWF0aC5taW4oc2l6ZXx8KHR5cGU/UnVudGltZS5nZXROYXRpdmVGaWVsZFNpemUodHlwZSk6MCksUnVudGltZS5RVUFOVFVNX1NJWkUpfSksY2FsY3VsYXRlU3RydWN0QWxpZ25tZW50OmZ1bmN0aW9uIGNhbGN1bGF0ZVN0cnVjdEFsaWdubWVudCh0eXBlKXt0eXBlLmZsYXRTaXplPTA7dHlwZS5hbGlnblNpemU9MDt2YXIgZGlmZnM9W107dmFyIHByZXY9LTE7dmFyIGluZGV4PTA7dHlwZS5mbGF0SW5kZXhlcz10eXBlLmZpZWxkcy5tYXAoKGZ1bmN0aW9uKGZpZWxkKXtpbmRleCsrO3ZhciBzaXplLGFsaWduU2l6ZTtpZihSdW50aW1lLmlzTnVtYmVyVHlwZShmaWVsZCl8fFJ1bnRpbWUuaXNQb2ludGVyVHlwZShmaWVsZCkpe3NpemU9UnVudGltZS5nZXROYXRpdmVUeXBlU2l6ZShmaWVsZCk7YWxpZ25TaXplPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKGZpZWxkLHNpemUpfWVsc2UgaWYoUnVudGltZS5pc1N0cnVjdFR5cGUoZmllbGQpKXtpZihmaWVsZFsxXT09PSIwIil7c2l6ZT0wO2lmKFR5cGVzLnR5cGVzW2ZpZWxkXSl7YWxpZ25TaXplPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKG51bGwsVHlwZXMudHlwZXNbZmllbGRdLmFsaWduU2l6ZSl9ZWxzZXthbGlnblNpemU9dHlwZS5hbGlnblNpemV8fFFVQU5UVU1fU0laRX19ZWxzZXtzaXplPVR5cGVzLnR5cGVzW2ZpZWxkXS5mbGF0U2l6ZTthbGlnblNpemU9UnVudGltZS5nZXRBbGlnblNpemUobnVsbCxUeXBlcy50eXBlc1tmaWVsZF0uYWxpZ25TaXplKX19ZWxzZSBpZihmaWVsZFswXT09ImIiKXtzaXplPWZpZWxkLnN1YnN0cigxKXwwO2FsaWduU2l6ZT0xfWVsc2UgaWYoZmllbGRbMF09PT0iPCIpe3NpemU9YWxpZ25TaXplPVR5cGVzLnR5cGVzW2ZpZWxkXS5mbGF0U2l6ZX1lbHNlIGlmKGZpZWxkWzBdPT09ImkiKXtzaXplPWFsaWduU2l6ZT1wYXJzZUludChmaWVsZC5zdWJzdHIoMSkpLzg7YXNzZXJ0KHNpemUlMT09PTAsImNhbm5vdCBoYW5kbGUgbm9uLWJ5dGUtc2l6ZSBmaWVsZCAiK2ZpZWxkKX1lbHNle2Fzc2VydChmYWxzZSwiaW52YWxpZCB0eXBlIGZvciBjYWxjdWxhdGVTdHJ1Y3RBbGlnbm1lbnQiKX1pZih0eXBlLnBhY2tlZClhbGlnblNpemU9MTt0eXBlLmFsaWduU2l6ZT1NYXRoLm1heCh0eXBlLmFsaWduU2l6ZSxhbGlnblNpemUpO3ZhciBjdXJyPVJ1bnRpbWUuYWxpZ25NZW1vcnkodHlwZS5mbGF0U2l6ZSxhbGlnblNpemUpO3R5cGUuZmxhdFNpemU9Y3VycitzaXplO2lmKHByZXY+PTApe2RpZmZzLnB1c2goY3Vyci1wcmV2KX1wcmV2PWN1cnI7cmV0dXJuIGN1cnJ9KSk7aWYodHlwZS5uYW1lXyYmdHlwZS5uYW1lX1swXT09PSJbIil7dHlwZS5mbGF0U2l6ZT1wYXJzZUludCh0eXBlLm5hbWVfLnN1YnN0cigxKSkqdHlwZS5mbGF0U2l6ZS8yfXR5cGUuZmxhdFNpemU9UnVudGltZS5hbGlnbk1lbW9yeSh0eXBlLmZsYXRTaXplLHR5cGUuYWxpZ25TaXplKTtpZihkaWZmcy5sZW5ndGg9PTApe3R5cGUuZmxhdEZhY3Rvcj10eXBlLmZsYXRTaXplfWVsc2UgaWYoUnVudGltZS5kZWR1cChkaWZmcykubGVuZ3RoPT0xKXt0eXBlLmZsYXRGYWN0b3I9ZGlmZnNbMF19dHlwZS5uZWVkc0ZsYXR0ZW5pbmc9dHlwZS5mbGF0RmFjdG9yIT0xO3JldHVybiB0eXBlLmZsYXRJbmRleGVzfSxnZW5lcmF0ZVN0cnVjdEluZm86KGZ1bmN0aW9uKHN0cnVjdCx0eXBlTmFtZSxvZmZzZXQpe3ZhciB0eXBlLGFsaWdubWVudDtpZih0eXBlTmFtZSl7b2Zmc2V0PW9mZnNldHx8MDt0eXBlPSh0eXBlb2YgVHlwZXM9PT0idW5kZWZpbmVkIj9SdW50aW1lLnR5cGVJbmZvOlR5cGVzLnR5cGVzKVt0eXBlTmFtZV07aWYoIXR5cGUpcmV0dXJuIG51bGw7aWYodHlwZS5maWVsZHMubGVuZ3RoIT1zdHJ1Y3QubGVuZ3RoKXtwcmludEVycigiTnVtYmVyIG9mIG5hbWVkIGZpZWxkcyBtdXN0IG1hdGNoIHRoZSB0eXBlIGZvciAiK3R5cGVOYW1lKyI6IHBvc3NpYmx5IGR1cGxpY2F0ZSBzdHJ1Y3QgbmFtZXMuIENhbm5vdCByZXR1cm4gc3RydWN0SW5mbyIpO3JldHVybiBudWxsfWFsaWdubWVudD10eXBlLmZsYXRJbmRleGVzfWVsc2V7dmFyIHR5cGU9e2ZpZWxkczpzdHJ1Y3QubWFwKChmdW5jdGlvbihpdGVtKXtyZXR1cm4gaXRlbVswXX0pKX07YWxpZ25tZW50PVJ1bnRpbWUuY2FsY3VsYXRlU3RydWN0QWxpZ25tZW50KHR5cGUpfXZhciByZXQ9e19fc2l6ZV9fOnR5cGUuZmxhdFNpemV9O2lmKHR5cGVOYW1lKXtzdHJ1Y3QuZm9yRWFjaCgoZnVuY3Rpb24oaXRlbSxpKXtpZih0eXBlb2YgaXRlbT09PSJzdHJpbmciKXtyZXRbaXRlbV09YWxpZ25tZW50W2ldK29mZnNldH1lbHNle3ZhciBrZXk7Zm9yKHZhciBrIGluIGl0ZW0pa2V5PWs7cmV0W2tleV09UnVudGltZS5nZW5lcmF0ZVN0cnVjdEluZm8oaXRlbVtrZXldLHR5cGUuZmllbGRzW2ldLGFsaWdubWVudFtpXSl9fSkpfWVsc2V7c3RydWN0LmZvckVhY2goKGZ1bmN0aW9uKGl0ZW0saSl7cmV0W2l0ZW1bMV1dPWFsaWdubWVudFtpXX0pKX1yZXR1cm4gcmV0fSksZHluQ2FsbDooZnVuY3Rpb24oc2lnLHB0cixhcmdzKXtpZihhcmdzJiZhcmdzLmxlbmd0aCl7aWYoIWFyZ3Muc3BsaWNlKWFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7YXJncy5zcGxpY2UoMCwwLHB0cik7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF8iK3NpZ10uYXBwbHkobnVsbCxhcmdzKX1lbHNle3JldHVybiBNb2R1bGVbImR5bkNhbGxfIitzaWddLmNhbGwobnVsbCxwdHIpfX0pLGZ1bmN0aW9uUG9pbnRlcnM6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGFkZEZ1bmN0aW9uOihmdW5jdGlvbihmdW5jKXtmb3IodmFyIGk9MDtpPFJ1bnRpbWUuZnVuY3Rpb25Qb2ludGVycy5sZW5ndGg7aSsrKXtpZighUnVudGltZS5mdW5jdGlvblBvaW50ZXJzW2ldKXtSdW50aW1lLmZ1bmN0aW9uUG9pbnRlcnNbaV09ZnVuYztyZXR1cm4gMiooMStpKX19dGhyb3ciRmluaXNoZWQgdXAgYWxsIHJlc2VydmVkIGZ1bmN0aW9uIHBvaW50ZXJzLiBVc2UgYSBoaWdoZXIgdmFsdWUgZm9yIFJFU0VSVkVEX0ZVTkNUSU9OX1BPSU5URVJTLiJ9KSxyZW1vdmVGdW5jdGlvbjooZnVuY3Rpb24oaW5kZXgpe1J1bnRpbWUuZnVuY3Rpb25Qb2ludGVyc1soaW5kZXgtMikvMl09bnVsbH0pLGdldEFzbUNvbnN0OihmdW5jdGlvbihjb2RlLG51bUFyZ3Mpe2lmKCFSdW50aW1lLmFzbUNvbnN0Q2FjaGUpUnVudGltZS5hc21Db25zdENhY2hlPXt9O3ZhciBmdW5jPVJ1bnRpbWUuYXNtQ29uc3RDYWNoZVtjb2RlXTtpZihmdW5jKXJldHVybiBmdW5jO3ZhciBhcmdzPVtdO2Zvcih2YXIgaT0wO2k8bnVtQXJncztpKyspe2FyZ3MucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDM2KStpKX12YXIgc291cmNlPVBvaW50ZXJfc3RyaW5naWZ5KGNvZGUpO2lmKHNvdXJjZVswXT09PSciJyl7aWYoc291cmNlLmluZGV4T2YoJyInLDEpPT09c291cmNlLmxlbmd0aC0xKXtzb3VyY2U9c291cmNlLnN1YnN0cigxLHNvdXJjZS5sZW5ndGgtMil9ZWxzZXthYm9ydCgiaW52YWxpZCBFTV9BU00gaW5wdXQgfCIrc291cmNlKyJ8LiBQbGVhc2UgdXNlIEVNX0FTTSguLmNvZGUuLikgKG5vIHF1b3Rlcykgb3IgRU1fQVNNKHsgLi5jb2RlKCQwKS4uIH0sIGlucHV0KSAodG8gaW5wdXQgdmFsdWVzKSIpfX10cnl7dmFyIGV2YWxsZWQ9ZXZhbCgiKGZ1bmN0aW9uKCIrYXJncy5qb2luKCIsIikrIil7ICIrc291cmNlKyIgfSkiKX1jYXRjaChlKXtNb2R1bGUucHJpbnRFcnIoImVycm9yIGluIGV4ZWN1dGluZyBpbmxpbmUgRU1fQVNNIGNvZGU6ICIrZSsiIG9uOiBcblxuIitzb3VyY2UrIlxuXG53aXRoIGFyZ3MgfCIrYXJncysifCAobWFrZSBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgb25lIG91dCBvZiBFTV9BU00sIEVNX0FTTV9BUkdTLCBldGMuKSIpO3Rocm93IGV9cmV0dXJuIFJ1bnRpbWUuYXNtQ29uc3RDYWNoZVtjb2RlXT1ldmFsbGVkfSksd2Fybk9uY2U6KGZ1bmN0aW9uKHRleHQpe2lmKCFSdW50aW1lLndhcm5PbmNlLnNob3duKVJ1bnRpbWUud2Fybk9uY2Uuc2hvd249e307aWYoIVJ1bnRpbWUud2Fybk9uY2Uuc2hvd25bdGV4dF0pe1J1bnRpbWUud2Fybk9uY2Uuc2hvd25bdGV4dF09MTtNb2R1bGUucHJpbnRFcnIodGV4dCl9fSksZnVuY1dyYXBwZXJzOnt9LGdldEZ1bmNXcmFwcGVyOihmdW5jdGlvbihmdW5jLHNpZyl7YXNzZXJ0KHNpZyk7aWYoIVJ1bnRpbWUuZnVuY1dyYXBwZXJzW2Z1bmNdKXtSdW50aW1lLmZ1bmNXcmFwcGVyc1tmdW5jXT1mdW5jdGlvbiBkeW5DYWxsX3dyYXBwZXIoKXtyZXR1cm4gUnVudGltZS5keW5DYWxsKHNpZyxmdW5jLGFyZ3VtZW50cyl9fXJldHVybiBSdW50aW1lLmZ1bmNXcmFwcGVyc1tmdW5jXX0pLFVURjhQcm9jZXNzb3I6KGZ1bmN0aW9uKCl7dmFyIGJ1ZmZlcj1bXTt2YXIgbmVlZGVkPTA7dGhpcy5wcm9jZXNzQ0NoYXI9KGZ1bmN0aW9uKGNvZGUpe2NvZGU9Y29kZSYyNTU7aWYoYnVmZmVyLmxlbmd0aD09MCl7aWYoKGNvZGUmMTI4KT09MCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSl9YnVmZmVyLnB1c2goY29kZSk7aWYoKGNvZGUmMjI0KT09MTkyKXtuZWVkZWQ9MX1lbHNlIGlmKChjb2RlJjI0MCk9PTIyNCl7bmVlZGVkPTJ9ZWxzZXtuZWVkZWQ9M31yZXR1cm4iIn1pZihuZWVkZWQpe2J1ZmZlci5wdXNoKGNvZGUpO25lZWRlZC0tO2lmKG5lZWRlZD4wKXJldHVybiIifXZhciBjMT1idWZmZXJbMF07dmFyIGMyPWJ1ZmZlclsxXTt2YXIgYzM9YnVmZmVyWzJdO3ZhciBjND1idWZmZXJbM107dmFyIHJldDtpZihidWZmZXIubGVuZ3RoPT0yKXtyZXQ9U3RyaW5nLmZyb21DaGFyQ29kZSgoYzEmMzEpPDw2fGMyJjYzKX1lbHNlIGlmKGJ1ZmZlci5sZW5ndGg9PTMpe3JldD1TdHJpbmcuZnJvbUNoYXJDb2RlKChjMSYxNSk8PDEyfChjMiY2Myk8PDZ8YzMmNjMpfWVsc2V7dmFyIGNvZGVQb2ludD0oYzEmNyk8PDE4fChjMiY2Myk8PDEyfChjMyY2Myk8PDZ8YzQmNjM7cmV0PVN0cmluZy5mcm9tQ2hhckNvZGUoTWF0aC5mbG9vcigoY29kZVBvaW50LTY1NTM2KS8xMDI0KSs1NTI5NiwoY29kZVBvaW50LTY1NTM2KSUxMDI0KzU2MzIwKX1idWZmZXIubGVuZ3RoPTA7cmV0dXJuIHJldH0pO3RoaXMucHJvY2Vzc0pTU3RyaW5nPWZ1bmN0aW9uIHByb2Nlc3NKU1N0cmluZyhzdHJpbmcpe3N0cmluZz11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKSk7dmFyIHJldD1bXTtmb3IodmFyIGk9MDtpPHN0cmluZy5sZW5ndGg7aSsrKXtyZXQucHVzaChzdHJpbmcuY2hhckNvZGVBdChpKSl9cmV0dXJuIHJldH19KSxnZXRDb21waWxlclNldHRpbmc6KGZ1bmN0aW9uKG5hbWUpe3Rocm93IllvdSBtdXN0IGJ1aWxkIHdpdGggLXMgUkVUQUlOX0NPTVBJTEVSX1NFVFRJTkdTPTEgZm9yIFJ1bnRpbWUuZ2V0Q29tcGlsZXJTZXR0aW5nIG9yIGVtc2NyaXB0ZW5fZ2V0X2NvbXBpbGVyX3NldHRpbmcgdG8gd29yayJ9KSxzdGFja0FsbG9jOihmdW5jdGlvbihzaXplKXt2YXIgcmV0PVNUQUNLVE9QO1NUQUNLVE9QPVNUQUNLVE9QK3NpemV8MDtTVEFDS1RPUD1TVEFDS1RPUCs3Ji04O3JldHVybiByZXR9KSxzdGF0aWNBbGxvYzooZnVuY3Rpb24oc2l6ZSl7dmFyIHJldD1TVEFUSUNUT1A7U1RBVElDVE9QPVNUQVRJQ1RPUCtzaXplfDA7U1RBVElDVE9QPVNUQVRJQ1RPUCs3Ji04O3JldHVybiByZXR9KSxkeW5hbWljQWxsb2M6KGZ1bmN0aW9uKHNpemUpe3ZhciByZXQ9RFlOQU1JQ1RPUDtEWU5BTUlDVE9QPURZTkFNSUNUT1Arc2l6ZXwwO0RZTkFNSUNUT1A9RFlOQU1JQ1RPUCs3Ji04O2lmKERZTkFNSUNUT1A+PVRPVEFMX01FTU9SWSllbmxhcmdlTWVtb3J5KCk7cmV0dXJuIHJldH0pLGFsaWduTWVtb3J5OihmdW5jdGlvbihzaXplLHF1YW50dW0pe3ZhciByZXQ9c2l6ZT1NYXRoLmNlaWwoc2l6ZS8ocXVhbnR1bT9xdWFudHVtOjgpKSoocXVhbnR1bT9xdWFudHVtOjgpO3JldHVybiByZXR9KSxtYWtlQmlnSW50OihmdW5jdGlvbihsb3csaGlnaCx1bnNpZ25lZCl7dmFyIHJldD11bnNpZ25lZD8rKGxvdz4+PjApKyArKGhpZ2g+Pj4wKSorNDI5NDk2NzI5NjorKGxvdz4+PjApKyArKGhpZ2h8MCkqKzQyOTQ5NjcyOTY7cmV0dXJuIHJldH0pLEdMT0JBTF9CQVNFOjgsUVVBTlRVTV9TSVpFOjQsX19kdW1teV9fOjB9O01vZHVsZVsiUnVudGltZSJdPVJ1bnRpbWU7ZnVuY3Rpb24ganNDYWxsKCl7dmFyIGFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gUnVudGltZS5mdW5jdGlvblBvaW50ZXJzW2FyZ3NbMF1dLmFwcGx5KG51bGwsYXJncy5zbGljZSgxKSl9dmFyIF9fVEhSRVdfXz0wO3ZhciBBQk9SVD1mYWxzZTt2YXIgRVhJVFNUQVRVUz0wO3ZhciB1bmRlZj0wO3ZhciB0ZW1wVmFsdWUsdGVtcEludCx0ZW1wQmlnSW50LHRlbXBJbnQyLHRlbXBCaWdJbnQyLHRlbXBQYWlyLHRlbXBCaWdJbnRJLHRlbXBCaWdJbnRSLHRlbXBCaWdJbnRTLHRlbXBCaWdJbnRQLHRlbXBCaWdJbnRELHRlbXBEb3VibGUsdGVtcEZsb2F0O3ZhciB0ZW1wSTY0LHRlbXBJNjRiO3ZhciB0ZW1wUmV0MCx0ZW1wUmV0MSx0ZW1wUmV0Mix0ZW1wUmV0Myx0ZW1wUmV0NCx0ZW1wUmV0NSx0ZW1wUmV0Nix0ZW1wUmV0Nyx0ZW1wUmV0OCx0ZW1wUmV0OTtmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLHRleHQpe2lmKCFjb25kaXRpb24pe2Fib3J0KCJBc3NlcnRpb24gZmFpbGVkOiAiK3RleHQpfX12YXIgZ2xvYmFsU2NvcGU9dGhpcztmdW5jdGlvbiBnZXRDRnVuYyhpZGVudCl7dHJ5e3ZhciBmdW5jPU1vZHVsZVsiXyIraWRlbnRdO2lmKCFmdW5jKWZ1bmM9ZXZhbCgiXyIraWRlbnQpfWNhdGNoKGUpe31hc3NlcnQoZnVuYywiQ2Fubm90IGNhbGwgdW5rbm93biBmdW5jdGlvbiAiK2lkZW50KyIgKHBlcmhhcHMgTExWTSBvcHRpbWl6YXRpb25zIG9yIGNsb3N1cmUgcmVtb3ZlZCBpdD8pIik7cmV0dXJuIGZ1bmN9dmFyIGN3cmFwLGNjYWxsOygoZnVuY3Rpb24oKXt2YXIgc3RhY2s9MDt2YXIgSlNmdW5jcz17InN0YWNrU2F2ZSI6KGZ1bmN0aW9uKCl7c3RhY2s9UnVudGltZS5zdGFja1NhdmUoKX0pLCJzdGFja1Jlc3RvcmUiOihmdW5jdGlvbigpe1J1bnRpbWUuc3RhY2tSZXN0b3JlKHN0YWNrKX0pLCJhcnJheVRvQyI6KGZ1bmN0aW9uKGFycil7dmFyIHJldD1SdW50aW1lLnN0YWNrQWxsb2MoYXJyLmxlbmd0aCk7d3JpdGVBcnJheVRvTWVtb3J5KGFycixyZXQpO3JldHVybiByZXR9KSwic3RyaW5nVG9DIjooZnVuY3Rpb24oc3RyKXt2YXIgcmV0PTA7aWYoc3RyIT09bnVsbCYmc3RyIT09dW5kZWZpbmVkJiZzdHIhPT0wKXtyZXQ9UnVudGltZS5zdGFja0FsbG9jKHN0ci5sZW5ndGgrMSk7d3JpdGVTdHJpbmdUb01lbW9yeShzdHIscmV0KX1yZXR1cm4gcmV0fSl9O3ZhciB0b0M9eyJzdHJpbmciOkpTZnVuY3NbInN0cmluZ1RvQyJdLCJhcnJheSI6SlNmdW5jc1siYXJyYXlUb0MiXX07Y2NhbGw9ZnVuY3Rpb24gY2NhbGxGdW5jKGlkZW50LHJldHVyblR5cGUsYXJnVHlwZXMsYXJncyl7dmFyIGZ1bmM9Z2V0Q0Z1bmMoaWRlbnQpO3ZhciBjQXJncz1bXTtpZihhcmdzKXtmb3IodmFyIGk9MDtpPGFyZ3MubGVuZ3RoO2krKyl7dmFyIGNvbnZlcnRlcj10b0NbYXJnVHlwZXNbaV1dO2lmKGNvbnZlcnRlcil7aWYoc3RhY2s9PT0wKXN0YWNrPVJ1bnRpbWUuc3RhY2tTYXZlKCk7Y0FyZ3NbaV09Y29udmVydGVyKGFyZ3NbaV0pfWVsc2V7Y0FyZ3NbaV09YXJnc1tpXX19fXZhciByZXQ9ZnVuYy5hcHBseShudWxsLGNBcmdzKTtpZihyZXR1cm5UeXBlPT09InN0cmluZyIpcmV0PVBvaW50ZXJfc3RyaW5naWZ5KHJldCk7aWYoc3RhY2shPT0wKUpTZnVuY3NbInN0YWNrUmVzdG9yZSJdKCk7cmV0dXJuIHJldH07dmFyIHNvdXJjZVJlZ2V4PS9eZnVuY3Rpb25cc1woKFteKV0qKVwpXHMqe1xzKihbXipdKj8pW1xzO10qKD86cmV0dXJuXHMqKC4qPylbO1xzXSopP30kLztmdW5jdGlvbiBwYXJzZUpTRnVuYyhqc2Z1bmMpe3ZhciBwYXJzZWQ9anNmdW5jLnRvU3RyaW5nKCkubWF0Y2goc291cmNlUmVnZXgpLnNsaWNlKDEpO3JldHVybnthcmd1bWVudHM6cGFyc2VkWzBdLGJvZHk6cGFyc2VkWzFdLHJldHVyblZhbHVlOnBhcnNlZFsyXX19dmFyIEpTc291cmNlPXt9O2Zvcih2YXIgZnVuIGluIEpTZnVuY3Mpe2lmKEpTZnVuY3MuaGFzT3duUHJvcGVydHkoZnVuKSl7SlNzb3VyY2VbZnVuXT1wYXJzZUpTRnVuYyhKU2Z1bmNzW2Z1bl0pfX1jd3JhcD1mdW5jdGlvbiBjd3JhcChpZGVudCxyZXR1cm5UeXBlLGFyZ1R5cGVzKXt2YXIgY2Z1bmM9Z2V0Q0Z1bmMoaWRlbnQpO3ZhciBudW1lcmljQXJncz1hcmdUeXBlcy5ldmVyeSgoZnVuY3Rpb24odHlwZSl7cmV0dXJuIHR5cGU9PT0ibnVtYmVyIn0pKTt2YXIgbnVtZXJpY1JldD1yZXR1cm5UeXBlIT09InN0cmluZyI7aWYobnVtZXJpY1JldCYmbnVtZXJpY0FyZ3Mpe3JldHVybiBjZnVuY312YXIgYXJnTmFtZXM9YXJnVHlwZXMubWFwKChmdW5jdGlvbih4LGkpe3JldHVybiIkIitpfSkpO3ZhciBmdW5jc3RyPSIoZnVuY3Rpb24oIithcmdOYW1lcy5qb2luKCIsIikrIikgeyI7dmFyIG5hcmdzPWFyZ1R5cGVzLmxlbmd0aDtpZighbnVtZXJpY0FyZ3Mpe2Z1bmNzdHIrPUpTc291cmNlWyJzdGFja1NhdmUiXS5ib2R5KyI7Ijtmb3IodmFyIGk9MDtpPG5hcmdzO2krKyl7dmFyIGFyZz1hcmdOYW1lc1tpXSx0eXBlPWFyZ1R5cGVzW2ldO2lmKHR5cGU9PT0ibnVtYmVyIiljb250aW51ZTt2YXIgY29udmVydENvZGU9SlNzb3VyY2VbdHlwZSsiVG9DIl07ZnVuY3N0cis9InZhciAiK2NvbnZlcnRDb2RlLmFyZ3VtZW50cysiID0gIithcmcrIjsiO2Z1bmNzdHIrPWNvbnZlcnRDb2RlLmJvZHkrIjsiO2Z1bmNzdHIrPWFyZysiPSIrY29udmVydENvZGUucmV0dXJuVmFsdWUrIjsifX12YXIgY2Z1bmNuYW1lPXBhcnNlSlNGdW5jKChmdW5jdGlvbigpe3JldHVybiBjZnVuY30pKS5yZXR1cm5WYWx1ZTtmdW5jc3RyKz0idmFyIHJldCA9ICIrY2Z1bmNuYW1lKyIoIithcmdOYW1lcy5qb2luKCIsIikrIik7IjtpZighbnVtZXJpY1JldCl7dmFyIHN0cmdmeT1wYXJzZUpTRnVuYygoZnVuY3Rpb24oKXtyZXR1cm4gUG9pbnRlcl9zdHJpbmdpZnl9KSkucmV0dXJuVmFsdWU7ZnVuY3N0cis9InJldCA9ICIrc3RyZ2Z5KyIocmV0KTsifWlmKCFudW1lcmljQXJncyl7ZnVuY3N0cis9SlNzb3VyY2VbInN0YWNrUmVzdG9yZSJdLmJvZHkrIjsifWZ1bmNzdHIrPSJyZXR1cm4gcmV0fSkiO3JldHVybiBldmFsKGZ1bmNzdHIpfX0pKSgpO01vZHVsZVsiY3dyYXAiXT1jd3JhcDtNb2R1bGVbImNjYWxsIl09Y2NhbGw7ZnVuY3Rpb24gc2V0VmFsdWUocHRyLHZhbHVlLHR5cGUsbm9TYWZlKXt0eXBlPXR5cGV8fCJpOCI7aWYodHlwZS5jaGFyQXQodHlwZS5sZW5ndGgtMSk9PT0iKiIpdHlwZT0iaTMyIjtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6SEVBUDhbcHRyPj4wXT12YWx1ZTticmVhaztjYXNlImk4IjpIRUFQOFtwdHI+PjBdPXZhbHVlO2JyZWFrO2Nhc2UiaTE2IjpIRUFQMTZbcHRyPj4xXT12YWx1ZTticmVhaztjYXNlImkzMiI6SEVBUDMyW3B0cj4+Ml09dmFsdWU7YnJlYWs7Y2FzZSJpNjQiOnRlbXBJNjQ9W3ZhbHVlPj4+MCwodGVtcERvdWJsZT12YWx1ZSwrTWF0aF9hYnModGVtcERvdWJsZSk+PSsxP3RlbXBEb3VibGU+KzA/KE1hdGhfbWluKCtNYXRoX2Zsb29yKHRlbXBEb3VibGUvKzQyOTQ5NjcyOTYpLCs0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aF9jZWlsKCh0ZW1wRG91YmxlLSArKH5+dGVtcERvdWJsZT4+PjApKS8rNDI5NDk2NzI5Nik+Pj4wOjApXSxIRUFQMzJbcHRyPj4yXT10ZW1wSTY0WzBdLEhFQVAzMltwdHIrND4+Ml09dGVtcEk2NFsxXTticmVhaztjYXNlImZsb2F0IjpIRUFQRjMyW3B0cj4+Ml09dmFsdWU7YnJlYWs7Y2FzZSJkb3VibGUiOkhFQVBGNjRbcHRyPj4zXT12YWx1ZTticmVhaztkZWZhdWx0OmFib3J0KCJpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAiK3R5cGUpfX1Nb2R1bGVbInNldFZhbHVlIl09c2V0VmFsdWU7ZnVuY3Rpb24gZ2V0VmFsdWUocHRyLHR5cGUsbm9TYWZlKXt0eXBlPXR5cGV8fCJpOCI7aWYodHlwZS5jaGFyQXQodHlwZS5sZW5ndGgtMSk9PT0iKiIpdHlwZT0iaTMyIjtzd2l0Y2godHlwZSl7Y2FzZSJpMSI6cmV0dXJuIEhFQVA4W3B0cj4+MF07Y2FzZSJpOCI6cmV0dXJuIEhFQVA4W3B0cj4+MF07Y2FzZSJpMTYiOnJldHVybiBIRUFQMTZbcHRyPj4xXTtjYXNlImkzMiI6cmV0dXJuIEhFQVAzMltwdHI+PjJdO2Nhc2UiaTY0IjpyZXR1cm4gSEVBUDMyW3B0cj4+Ml07Y2FzZSJmbG9hdCI6cmV0dXJuIEhFQVBGMzJbcHRyPj4yXTtjYXNlImRvdWJsZSI6cmV0dXJuIEhFQVBGNjRbcHRyPj4zXTtkZWZhdWx0OmFib3J0KCJpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAiK3R5cGUpfXJldHVybiBudWxsfU1vZHVsZVsiZ2V0VmFsdWUiXT1nZXRWYWx1ZTt2YXIgQUxMT0NfTk9STUFMPTA7dmFyIEFMTE9DX1NUQUNLPTE7dmFyIEFMTE9DX1NUQVRJQz0yO3ZhciBBTExPQ19EWU5BTUlDPTM7dmFyIEFMTE9DX05PTkU9NDtNb2R1bGVbIkFMTE9DX05PUk1BTCJdPUFMTE9DX05PUk1BTDtNb2R1bGVbIkFMTE9DX1NUQUNLIl09QUxMT0NfU1RBQ0s7TW9kdWxlWyJBTExPQ19TVEFUSUMiXT1BTExPQ19TVEFUSUM7TW9kdWxlWyJBTExPQ19EWU5BTUlDIl09QUxMT0NfRFlOQU1JQztNb2R1bGVbIkFMTE9DX05PTkUiXT1BTExPQ19OT05FO2Z1bmN0aW9uIGFsbG9jYXRlKHNsYWIsdHlwZXMsYWxsb2NhdG9yLHB0cil7dmFyIHplcm9pbml0LHNpemU7aWYodHlwZW9mIHNsYWI9PT0ibnVtYmVyIil7emVyb2luaXQ9dHJ1ZTtzaXplPXNsYWJ9ZWxzZXt6ZXJvaW5pdD1mYWxzZTtzaXplPXNsYWIubGVuZ3RofXZhciBzaW5nbGVUeXBlPXR5cGVvZiB0eXBlcz09PSJzdHJpbmciP3R5cGVzOm51bGw7dmFyIHJldDtpZihhbGxvY2F0b3I9PUFMTE9DX05PTkUpe3JldD1wdHJ9ZWxzZXtyZXQ9W19tYWxsb2MsUnVudGltZS5zdGFja0FsbG9jLFJ1bnRpbWUuc3RhdGljQWxsb2MsUnVudGltZS5keW5hbWljQWxsb2NdW2FsbG9jYXRvcj09PXVuZGVmaW5lZD9BTExPQ19TVEFUSUM6YWxsb2NhdG9yXShNYXRoLm1heChzaXplLHNpbmdsZVR5cGU/MTp0eXBlcy5sZW5ndGgpKX1pZih6ZXJvaW5pdCl7dmFyIHB0cj1yZXQsc3RvcDthc3NlcnQoKHJldCYzKT09MCk7c3RvcD1yZXQrKHNpemUmfjMpO2Zvcig7cHRyPHN0b3A7cHRyKz00KXtIRUFQMzJbcHRyPj4yXT0wfXN0b3A9cmV0K3NpemU7d2hpbGUocHRyPHN0b3Ape0hFQVA4W3B0cisrPj4wXT0wfXJldHVybiByZXR9aWYoc2luZ2xlVHlwZT09PSJpOCIpe2lmKHNsYWIuc3ViYXJyYXl8fHNsYWIuc2xpY2Upe0hFQVBVOC5zZXQoc2xhYixyZXQpfWVsc2V7SEVBUFU4LnNldChuZXcgVWludDhBcnJheShzbGFiKSxyZXQpfXJldHVybiByZXR9dmFyIGk9MCx0eXBlLHR5cGVTaXplLHByZXZpb3VzVHlwZTt3aGlsZShpPHNpemUpe3ZhciBjdXJyPXNsYWJbaV07aWYodHlwZW9mIGN1cnI9PT0iZnVuY3Rpb24iKXtjdXJyPVJ1bnRpbWUuZ2V0RnVuY3Rpb25JbmRleChjdXJyKX10eXBlPXNpbmdsZVR5cGV8fHR5cGVzW2ldO2lmKHR5cGU9PT0wKXtpKys7Y29udGludWV9aWYodHlwZT09Imk2NCIpdHlwZT0iaTMyIjtzZXRWYWx1ZShyZXQraSxjdXJyLHR5cGUpO2lmKHByZXZpb3VzVHlwZSE9PXR5cGUpe3R5cGVTaXplPVJ1bnRpbWUuZ2V0TmF0aXZlVHlwZVNpemUodHlwZSk7cHJldmlvdXNUeXBlPXR5cGV9aSs9dHlwZVNpemV9cmV0dXJuIHJldH1Nb2R1bGVbImFsbG9jYXRlIl09YWxsb2NhdGU7ZnVuY3Rpb24gUG9pbnRlcl9zdHJpbmdpZnkocHRyLGxlbmd0aCl7dmFyIGhhc1V0Zj1mYWxzZTt2YXIgdDt2YXIgaT0wO3doaWxlKDEpe3Q9SEVBUFU4W3B0citpPj4wXTtpZih0Pj0xMjgpaGFzVXRmPXRydWU7ZWxzZSBpZih0PT0wJiYhbGVuZ3RoKWJyZWFrO2krKztpZihsZW5ndGgmJmk9PWxlbmd0aClicmVha31pZighbGVuZ3RoKWxlbmd0aD1pO3ZhciByZXQ9IiI7aWYoIWhhc1V0Zil7dmFyIE1BWF9DSFVOSz0xMDI0O3ZhciBjdXJyO3doaWxlKGxlbmd0aD4wKXtjdXJyPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLEhFQVBVOC5zdWJhcnJheShwdHIscHRyK01hdGgubWluKGxlbmd0aCxNQVhfQ0hVTkspKSk7cmV0PXJldD9yZXQrY3VycjpjdXJyO3B0cis9TUFYX0NIVU5LO2xlbmd0aC09TUFYX0NIVU5LfXJldHVybiByZXR9dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjtmb3IoaT0wO2k8bGVuZ3RoO2krKyl7dD1IRUFQVThbcHRyK2k+PjBdO3JldCs9dXRmOC5wcm9jZXNzQ0NoYXIodCl9cmV0dXJuIHJldH1Nb2R1bGVbIlBvaW50ZXJfc3RyaW5naWZ5Il09UG9pbnRlcl9zdHJpbmdpZnk7ZnVuY3Rpb24gVVRGMTZUb1N0cmluZyhwdHIpe3ZhciBpPTA7dmFyIHN0cj0iIjt3aGlsZSgxKXt2YXIgY29kZVVuaXQ9SEVBUDE2W3B0citpKjI+PjFdO2lmKGNvZGVVbml0PT0wKXJldHVybiBzdHI7KytpO3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZShjb2RlVW5pdCl9fU1vZHVsZVsiVVRGMTZUb1N0cmluZyJdPVVURjE2VG9TdHJpbmc7ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNihzdHIsb3V0UHRyKXtmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGg7KytpKXt2YXIgY29kZVVuaXQ9c3RyLmNoYXJDb2RlQXQoaSk7SEVBUDE2W291dFB0citpKjI+PjFdPWNvZGVVbml0fUhFQVAxNltvdXRQdHIrc3RyLmxlbmd0aCoyPj4xXT0wfU1vZHVsZVsic3RyaW5nVG9VVEYxNiJdPXN0cmluZ1RvVVRGMTY7ZnVuY3Rpb24gVVRGMzJUb1N0cmluZyhwdHIpe3ZhciBpPTA7dmFyIHN0cj0iIjt3aGlsZSgxKXt2YXIgdXRmMzI9SEVBUDMyW3B0citpKjQ+PjJdO2lmKHV0ZjMyPT0wKXJldHVybiBzdHI7KytpO2lmKHV0ZjMyPj02NTUzNil7dmFyIGNoPXV0ZjMyLTY1NTM2O3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjaD4+MTAsNTYzMjB8Y2gmMTAyMyl9ZWxzZXtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUodXRmMzIpfX19TW9kdWxlWyJVVEYzMlRvU3RyaW5nIl09VVRGMzJUb1N0cmluZztmdW5jdGlvbiBzdHJpbmdUb1VURjMyKHN0cixvdXRQdHIpe3ZhciBpQ2hhcj0wO2Zvcih2YXIgaUNvZGVVbml0PTA7aUNvZGVVbml0PHN0ci5sZW5ndGg7KytpQ29kZVVuaXQpe3ZhciBjb2RlVW5pdD1zdHIuY2hhckNvZGVBdChpQ29kZVVuaXQpO2lmKGNvZGVVbml0Pj01NTI5NiYmY29kZVVuaXQ8PTU3MzQzKXt2YXIgdHJhaWxTdXJyb2dhdGU9c3RyLmNoYXJDb2RlQXQoKytpQ29kZVVuaXQpO2NvZGVVbml0PTY1NTM2KygoY29kZVVuaXQmMTAyMyk8PDEwKXx0cmFpbFN1cnJvZ2F0ZSYxMDIzfUhFQVAzMltvdXRQdHIraUNoYXIqND4+Ml09Y29kZVVuaXQ7KytpQ2hhcn1IRUFQMzJbb3V0UHRyK2lDaGFyKjQ+PjJdPTB9TW9kdWxlWyJzdHJpbmdUb1VURjMyIl09c3RyaW5nVG9VVEYzMjtmdW5jdGlvbiBkZW1hbmdsZShmdW5jKXt2YXIgaT0zO3ZhciBiYXNpY1R5cGVzPXsidiI6InZvaWQiLCJiIjoiYm9vbCIsImMiOiJjaGFyIiwicyI6InNob3J0IiwiaSI6ImludCIsImwiOiJsb25nIiwiZiI6ImZsb2F0IiwiZCI6ImRvdWJsZSIsInciOiJ3Y2hhcl90IiwiYSI6InNpZ25lZCBjaGFyIiwiaCI6InVuc2lnbmVkIGNoYXIiLCJ0IjoidW5zaWduZWQgc2hvcnQiLCJqIjoidW5zaWduZWQgaW50IiwibSI6InVuc2lnbmVkIGxvbmciLCJ4IjoibG9uZyBsb25nIiwieSI6InVuc2lnbmVkIGxvbmcgbG9uZyIsInoiOiIuLi4ifTt2YXIgc3Vicz1bXTt2YXIgZmlyc3Q9dHJ1ZTtmdW5jdGlvbiBkdW1wKHgpe2lmKHgpTW9kdWxlLnByaW50KHgpO01vZHVsZS5wcmludChmdW5jKTt2YXIgcHJlPSIiO2Zvcih2YXIgYT0wO2E8aTthKyspcHJlKz0iICI7TW9kdWxlLnByaW50KHByZSsiXiIpfWZ1bmN0aW9uIHBhcnNlTmVzdGVkKCl7aSsrO2lmKGZ1bmNbaV09PT0iSyIpaSsrO3ZhciBwYXJ0cz1bXTt3aGlsZShmdW5jW2ldIT09IkUiKXtpZihmdW5jW2ldPT09IlMiKXtpKys7dmFyIG5leHQ9ZnVuYy5pbmRleE9mKCJfIixpKTt2YXIgbnVtPWZ1bmMuc3Vic3RyaW5nKGksbmV4dCl8fDA7cGFydHMucHVzaChzdWJzW251bV18fCI/Iik7aT1uZXh0KzE7Y29udGludWV9aWYoZnVuY1tpXT09PSJDIil7cGFydHMucHVzaChwYXJ0c1twYXJ0cy5sZW5ndGgtMV0pO2krPTI7Y29udGludWV9dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO3ZhciBwcmU9c2l6ZS50b1N0cmluZygpLmxlbmd0aDtpZighc2l6ZXx8IXByZSl7aS0tO2JyZWFrfXZhciBjdXJyPWZ1bmMuc3Vic3RyKGkrcHJlLHNpemUpO3BhcnRzLnB1c2goY3Vycik7c3Vicy5wdXNoKGN1cnIpO2krPXByZStzaXplfWkrKztyZXR1cm4gcGFydHN9ZnVuY3Rpb24gcGFyc2UocmF3TGlzdCxsaW1pdCxhbGxvd1ZvaWQpe2xpbWl0PWxpbWl0fHxJbmZpbml0eTt2YXIgcmV0PSIiLGxpc3Q9W107ZnVuY3Rpb24gZmx1c2hMaXN0KCl7cmV0dXJuIigiK2xpc3Quam9pbigiLCAiKSsiKSJ9dmFyIG5hbWU7aWYoZnVuY1tpXT09PSJOIil7bmFtZT1wYXJzZU5lc3RlZCgpLmpvaW4oIjo6Iik7bGltaXQtLTtpZihsaW1pdD09PTApcmV0dXJuIHJhd0xpc3Q/W25hbWVdOm5hbWV9ZWxzZXtpZihmdW5jW2ldPT09IksifHxmaXJzdCYmZnVuY1tpXT09PSJMIilpKys7dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO2lmKHNpemUpe3ZhciBwcmU9c2l6ZS50b1N0cmluZygpLmxlbmd0aDtuYW1lPWZ1bmMuc3Vic3RyKGkrcHJlLHNpemUpO2krPXByZStzaXplfX1maXJzdD1mYWxzZTtpZihmdW5jW2ldPT09IkkiKXtpKys7dmFyIGlMaXN0PXBhcnNlKHRydWUpO3ZhciBpUmV0PXBhcnNlKHRydWUsMSx0cnVlKTtyZXQrPWlSZXRbMF0rIiAiK25hbWUrIjwiK2lMaXN0LmpvaW4oIiwgIikrIj4ifWVsc2V7cmV0PW5hbWV9cGFyYW1Mb29wOndoaWxlKGk8ZnVuYy5sZW5ndGgmJmxpbWl0LS0+MCl7dmFyIGM9ZnVuY1tpKytdO2lmKGMgaW4gYmFzaWNUeXBlcyl7bGlzdC5wdXNoKGJhc2ljVHlwZXNbY10pfWVsc2V7c3dpdGNoKGMpe2Nhc2UiUCI6bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiKiIpO2JyZWFrO2Nhc2UiUiI6bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiJiIpO2JyZWFrO2Nhc2UiTCI6e2krKzt2YXIgZW5kPWZ1bmMuaW5kZXhPZigiRSIsaSk7dmFyIHNpemU9ZW5kLWk7bGlzdC5wdXNoKGZ1bmMuc3Vic3RyKGksc2l6ZSkpO2krPXNpemUrMjticmVha307Y2FzZSJBIjp7dmFyIHNpemU9cGFyc2VJbnQoZnVuYy5zdWJzdHIoaSkpO2krPXNpemUudG9TdHJpbmcoKS5sZW5ndGg7aWYoZnVuY1tpXSE9PSJfIil0aHJvdyI/IjtpKys7bGlzdC5wdXNoKHBhcnNlKHRydWUsMSx0cnVlKVswXSsiIFsiK3NpemUrIl0iKTticmVha307Y2FzZSJFIjpicmVhayBwYXJhbUxvb3A7ZGVmYXVsdDpyZXQrPSI/IitjO2JyZWFrIHBhcmFtTG9vcH19fWlmKCFhbGxvd1ZvaWQmJmxpc3QubGVuZ3RoPT09MSYmbGlzdFswXT09PSJ2b2lkIilsaXN0PVtdO2lmKHJhd0xpc3Qpe2lmKHJldCl7bGlzdC5wdXNoKHJldCsiPyIpfXJldHVybiBsaXN0fWVsc2V7cmV0dXJuIHJldCtmbHVzaExpc3QoKX19dHJ5e2lmKGZ1bmM9PSJPYmplY3QuX21haW4ifHxmdW5jPT0iX21haW4iKXtyZXR1cm4ibWFpbigpIn1pZih0eXBlb2YgZnVuYz09PSJudW1iZXIiKWZ1bmM9UG9pbnRlcl9zdHJpbmdpZnkoZnVuYyk7aWYoZnVuY1swXSE9PSJfIilyZXR1cm4gZnVuYztpZihmdW5jWzFdIT09Il8iKXJldHVybiBmdW5jO2lmKGZ1bmNbMl0hPT0iWiIpcmV0dXJuIGZ1bmM7c3dpdGNoKGZ1bmNbM10pe2Nhc2UibiI6cmV0dXJuIm9wZXJhdG9yIG5ldygpIjtjYXNlImQiOnJldHVybiJvcGVyYXRvciBkZWxldGUoKSJ9cmV0dXJuIHBhcnNlKCl9Y2F0Y2goZSl7cmV0dXJuIGZ1bmN9fWZ1bmN0aW9uIGRlbWFuZ2xlQWxsKHRleHQpe3JldHVybiB0ZXh0LnJlcGxhY2UoL19fWltcd1xkX10rL2csKGZ1bmN0aW9uKHgpe3ZhciB5PWRlbWFuZ2xlKHgpO3JldHVybiB4PT09eT94OngrIiBbIit5KyJdIn0pKX1mdW5jdGlvbiBzdGFja1RyYWNlKCl7dmFyIHN0YWNrPShuZXcgRXJyb3IpLnN0YWNrO3JldHVybiBzdGFjaz9kZW1hbmdsZUFsbChzdGFjayk6IihubyBzdGFjayB0cmFjZSBhdmFpbGFibGUpIn12YXIgUEFHRV9TSVpFPTQwOTY7ZnVuY3Rpb24gYWxpZ25NZW1vcnlQYWdlKHgpe3JldHVybiB4KzQwOTUmLTQwOTZ9dmFyIEhFQVA7dmFyIEhFQVA4LEhFQVBVOCxIRUFQMTYsSEVBUFUxNixIRUFQMzIsSEVBUFUzMixIRUFQRjMyLEhFQVBGNjQ7dmFyIFNUQVRJQ19CQVNFPTAsU1RBVElDVE9QPTAsc3RhdGljU2VhbGVkPWZhbHNlO3ZhciBTVEFDS19CQVNFPTAsU1RBQ0tUT1A9MCxTVEFDS19NQVg9MDt2YXIgRFlOQU1JQ19CQVNFPTAsRFlOQU1JQ1RPUD0wO2Z1bmN0aW9uIGVubGFyZ2VNZW1vcnkoKXthYm9ydCgiQ2Fubm90IGVubGFyZ2UgbWVtb3J5IGFycmF5cy4gRWl0aGVyICgxKSBjb21waWxlIHdpdGggLXMgVE9UQUxfTUVNT1JZPVggd2l0aCBYIGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50IHZhbHVlICIrVE9UQUxfTUVNT1JZKyIsICgyKSBjb21waWxlIHdpdGggQUxMT1dfTUVNT1JZX0dST1dUSCB3aGljaCBhZGp1c3RzIHRoZSBzaXplIGF0IHJ1bnRpbWUgYnV0IHByZXZlbnRzIHNvbWUgb3B0aW1pemF0aW9ucywgb3IgKDMpIHNldCBNb2R1bGUuVE9UQUxfTUVNT1JZIGJlZm9yZSB0aGUgcHJvZ3JhbSBydW5zLiIpfXZhciBUT1RBTF9TVEFDSz1Nb2R1bGVbIlRPVEFMX1NUQUNLIl18fDUyNDI4ODA7dmFyIFRPVEFMX01FTU9SWT1Nb2R1bGVbIlRPVEFMX01FTU9SWSJdfHwxNjc3NzIxNjA7dmFyIEZBU1RfTUVNT1JZPU1vZHVsZVsiRkFTVF9NRU1PUlkiXXx8MTA0ODU3NjA7dmFyIHRvdGFsTWVtb3J5PTQwOTY7d2hpbGUodG90YWxNZW1vcnk8VE9UQUxfTUVNT1JZfHx0b3RhbE1lbW9yeTwyKlRPVEFMX1NUQUNLKXtpZih0b3RhbE1lbW9yeTwxNioxMDI0KjEwMjQpe3RvdGFsTWVtb3J5Kj0yfWVsc2V7dG90YWxNZW1vcnkrPTE2KjEwMjQqMTAyNH19aWYodG90YWxNZW1vcnkhPT1UT1RBTF9NRU1PUlkpe01vZHVsZS5wcmludEVycigiaW5jcmVhc2luZyBUT1RBTF9NRU1PUlkgdG8gIit0b3RhbE1lbW9yeSsiIHRvIGJlIG1vcmUgcmVhc29uYWJsZSIpO1RPVEFMX01FTU9SWT10b3RhbE1lbW9yeX1hc3NlcnQodHlwZW9mIEludDMyQXJyYXkhPT0idW5kZWZpbmVkIiYmdHlwZW9mIEZsb2F0NjRBcnJheSE9PSJ1bmRlZmluZWQiJiYhIShuZXcgSW50MzJBcnJheSgxKSlbInN1YmFycmF5Il0mJiEhKG5ldyBJbnQzMkFycmF5KDEpKVsic2V0Il0sIkpTIGVuZ2luZSBkb2VzIG5vdCBwcm92aWRlIGZ1bGwgdHlwZWQgYXJyYXkgc3VwcG9ydCIpO3ZhciBidWZmZXI9bmV3IEFycmF5QnVmZmVyKFRPVEFMX01FTU9SWSk7SEVBUDg9bmV3IEludDhBcnJheShidWZmZXIpO0hFQVAxNj1uZXcgSW50MTZBcnJheShidWZmZXIpO0hFQVAzMj1uZXcgSW50MzJBcnJheShidWZmZXIpO0hFQVBVOD1uZXcgVWludDhBcnJheShidWZmZXIpO0hFQVBVMTY9bmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7SEVBUFUzMj1uZXcgVWludDMyQXJyYXkoYnVmZmVyKTtIRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTtIRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoYnVmZmVyKTtIRUFQMzJbMF09MjU1O2Fzc2VydChIRUFQVThbMF09PT0yNTUmJkhFQVBVOFszXT09PTAsIlR5cGVkIGFycmF5cyAyIG11c3QgYmUgcnVuIG9uIGEgbGl0dGxlLWVuZGlhbiBzeXN0ZW0iKTtNb2R1bGVbIkhFQVAiXT1IRUFQO01vZHVsZVsiSEVBUDgiXT1IRUFQODtNb2R1bGVbIkhFQVAxNiJdPUhFQVAxNjtNb2R1bGVbIkhFQVAzMiJdPUhFQVAzMjtNb2R1bGVbIkhFQVBVOCJdPUhFQVBVODtNb2R1bGVbIkhFQVBVMTYiXT1IRUFQVTE2O01vZHVsZVsiSEVBUFUzMiJdPUhFQVBVMzI7TW9kdWxlWyJIRUFQRjMyIl09SEVBUEYzMjtNb2R1bGVbIkhFQVBGNjQiXT1IRUFQRjY0O2Z1bmN0aW9uIGNhbGxSdW50aW1lQ2FsbGJhY2tzKGNhbGxiYWNrcyl7d2hpbGUoY2FsbGJhY2tzLmxlbmd0aD4wKXt2YXIgY2FsbGJhY2s9Y2FsbGJhY2tzLnNoaWZ0KCk7aWYodHlwZW9mIGNhbGxiYWNrPT0iZnVuY3Rpb24iKXtjYWxsYmFjaygpO2NvbnRpbnVlfXZhciBmdW5jPWNhbGxiYWNrLmZ1bmM7aWYodHlwZW9mIGZ1bmM9PT0ibnVtYmVyIil7aWYoY2FsbGJhY2suYXJnPT09dW5kZWZpbmVkKXtSdW50aW1lLmR5bkNhbGwoInYiLGZ1bmMpfWVsc2V7UnVudGltZS5keW5DYWxsKCJ2aSIsZnVuYyxbY2FsbGJhY2suYXJnXSl9fWVsc2V7ZnVuYyhjYWxsYmFjay5hcmc9PT11bmRlZmluZWQ/bnVsbDpjYWxsYmFjay5hcmcpfX19dmFyIF9fQVRQUkVSVU5fXz1bXTt2YXIgX19BVElOSVRfXz1bXTt2YXIgX19BVE1BSU5fXz1bXTt2YXIgX19BVEVYSVRfXz1bXTt2YXIgX19BVFBPU1RSVU5fXz1bXTt2YXIgcnVudGltZUluaXRpYWxpemVkPWZhbHNlO2Z1bmN0aW9uIHByZVJ1bigpe2lmKE1vZHVsZVsicHJlUnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInByZVJ1biJdPT0iZnVuY3Rpb24iKU1vZHVsZVsicHJlUnVuIl09W01vZHVsZVsicHJlUnVuIl1dO3doaWxlKE1vZHVsZVsicHJlUnVuIl0ubGVuZ3RoKXthZGRPblByZVJ1bihNb2R1bGVbInByZVJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pfWZ1bmN0aW9uIGVuc3VyZUluaXRSdW50aW1lKCl7aWYocnVudGltZUluaXRpYWxpemVkKXJldHVybjtydW50aW1lSW5pdGlhbGl6ZWQ9dHJ1ZTtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUSU5JVF9fKX1mdW5jdGlvbiBwcmVNYWluKCl7Y2FsbFJ1bnRpbWVDYWxsYmFja3MoX19BVE1BSU5fXyl9ZnVuY3Rpb24gZXhpdFJ1bnRpbWUoKXtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FURVhJVF9fKX1mdW5jdGlvbiBwb3N0UnVuKCl7aWYoTW9kdWxlWyJwb3N0UnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInBvc3RSdW4iXT09ImZ1bmN0aW9uIilNb2R1bGVbInBvc3RSdW4iXT1bTW9kdWxlWyJwb3N0UnVuIl1dO3doaWxlKE1vZHVsZVsicG9zdFJ1biJdLmxlbmd0aCl7YWRkT25Qb3N0UnVuKE1vZHVsZVsicG9zdFJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUE9TVFJVTl9fKX1mdW5jdGlvbiBhZGRPblByZVJ1bihjYil7X19BVFBSRVJVTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25QcmVSdW4iXT1Nb2R1bGUuYWRkT25QcmVSdW49YWRkT25QcmVSdW47ZnVuY3Rpb24gYWRkT25Jbml0KGNiKXtfX0FUSU5JVF9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25Jbml0Il09TW9kdWxlLmFkZE9uSW5pdD1hZGRPbkluaXQ7ZnVuY3Rpb24gYWRkT25QcmVNYWluKGNiKXtfX0FUTUFJTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25QcmVNYWluIl09TW9kdWxlLmFkZE9uUHJlTWFpbj1hZGRPblByZU1haW47ZnVuY3Rpb24gYWRkT25FeGl0KGNiKXtfX0FURVhJVF9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25FeGl0Il09TW9kdWxlLmFkZE9uRXhpdD1hZGRPbkV4aXQ7ZnVuY3Rpb24gYWRkT25Qb3N0UnVuKGNiKXtfX0FUUE9TVFJVTl9fLnVuc2hpZnQoY2IpfU1vZHVsZVsiYWRkT25Qb3N0UnVuIl09TW9kdWxlLmFkZE9uUG9zdFJ1bj1hZGRPblBvc3RSdW47ZnVuY3Rpb24gaW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZ3ksZG9udEFkZE51bGwsbGVuZ3RoKXt2YXIgcmV0PShuZXcgUnVudGltZS5VVEY4UHJvY2Vzc29yKS5wcm9jZXNzSlNTdHJpbmcoc3RyaW5neSk7aWYobGVuZ3RoKXtyZXQubGVuZ3RoPWxlbmd0aH1pZighZG9udEFkZE51bGwpe3JldC5wdXNoKDApfXJldHVybiByZXR9TW9kdWxlWyJpbnRBcnJheUZyb21TdHJpbmciXT1pbnRBcnJheUZyb21TdHJpbmc7ZnVuY3Rpb24gaW50QXJyYXlUb1N0cmluZyhhcnJheSl7dmFyIHJldD1bXTtmb3IodmFyIGk9MDtpPGFycmF5Lmxlbmd0aDtpKyspe3ZhciBjaHI9YXJyYXlbaV07aWYoY2hyPjI1NSl7Y2hyJj0yNTV9cmV0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpKX1yZXR1cm4gcmV0LmpvaW4oIiIpfU1vZHVsZVsiaW50QXJyYXlUb1N0cmluZyJdPWludEFycmF5VG9TdHJpbmc7ZnVuY3Rpb24gd3JpdGVTdHJpbmdUb01lbW9yeShzdHJpbmcsYnVmZmVyLGRvbnRBZGROdWxsKXt2YXIgYXJyYXk9aW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZyxkb250QWRkTnVsbCk7dmFyIGk9MDt3aGlsZShpPGFycmF5Lmxlbmd0aCl7dmFyIGNocj1hcnJheVtpXTtIRUFQOFtidWZmZXIraT4+MF09Y2hyO2k9aSsxfX1Nb2R1bGVbIndyaXRlU3RyaW5nVG9NZW1vcnkiXT13cml0ZVN0cmluZ1RvTWVtb3J5O2Z1bmN0aW9uIHdyaXRlQXJyYXlUb01lbW9yeShhcnJheSxidWZmZXIpe2Zvcih2YXIgaT0wO2k8YXJyYXkubGVuZ3RoO2krKyl7SEVBUDhbYnVmZmVyK2k+PjBdPWFycmF5W2ldfX1Nb2R1bGVbIndyaXRlQXJyYXlUb01lbW9yeSJdPXdyaXRlQXJyYXlUb01lbW9yeTtmdW5jdGlvbiB3cml0ZUFzY2lpVG9NZW1vcnkoc3RyLGJ1ZmZlcixkb250QWRkTnVsbCl7Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoO2krKyl7SEVBUDhbYnVmZmVyK2k+PjBdPXN0ci5jaGFyQ29kZUF0KGkpfWlmKCFkb250QWRkTnVsbClIRUFQOFtidWZmZXIrc3RyLmxlbmd0aD4+MF09MH1Nb2R1bGVbIndyaXRlQXNjaWlUb01lbW9yeSJdPXdyaXRlQXNjaWlUb01lbW9yeTtmdW5jdGlvbiB1blNpZ24odmFsdWUsYml0cyxpZ25vcmUpe2lmKHZhbHVlPj0wKXtyZXR1cm4gdmFsdWV9cmV0dXJuIGJpdHM8PTMyPzIqTWF0aC5hYnMoMTw8Yml0cy0xKSt2YWx1ZTpNYXRoLnBvdygyLGJpdHMpK3ZhbHVlfWZ1bmN0aW9uIHJlU2lnbih2YWx1ZSxiaXRzLGlnbm9yZSl7aWYodmFsdWU8PTApe3JldHVybiB2YWx1ZX12YXIgaGFsZj1iaXRzPD0zMj9NYXRoLmFicygxPDxiaXRzLTEpOk1hdGgucG93KDIsYml0cy0xKTtpZih2YWx1ZT49aGFsZiYmKGJpdHM8PTMyfHx2YWx1ZT5oYWxmKSl7dmFsdWU9LTIqaGFsZit2YWx1ZX1yZXR1cm4gdmFsdWV9aWYoIU1hdGhbImltdWwiXXx8TWF0aFsiaW11bCJdKDQyOTQ5NjcyOTUsNSkhPT0tNSlNYXRoWyJpbXVsIl09ZnVuY3Rpb24gaW11bChhLGIpe3ZhciBhaD1hPj4+MTY7dmFyIGFsPWEmNjU1MzU7dmFyIGJoPWI+Pj4xNjt2YXIgYmw9YiY2NTUzNTtyZXR1cm4gYWwqYmwrKGFoKmJsK2FsKmJoPDwxNil8MH07TWF0aC5pbXVsPU1hdGhbImltdWwiXTt2YXIgTWF0aF9hYnM9TWF0aC5hYnM7dmFyIE1hdGhfY29zPU1hdGguY29zO3ZhciBNYXRoX3Npbj1NYXRoLnNpbjt2YXIgTWF0aF90YW49TWF0aC50YW47dmFyIE1hdGhfYWNvcz1NYXRoLmFjb3M7dmFyIE1hdGhfYXNpbj1NYXRoLmFzaW47dmFyIE1hdGhfYXRhbj1NYXRoLmF0YW47dmFyIE1hdGhfYXRhbjI9TWF0aC5hdGFuMjt2YXIgTWF0aF9leHA9TWF0aC5leHA7dmFyIE1hdGhfbG9nPU1hdGgubG9nO3ZhciBNYXRoX3NxcnQ9TWF0aC5zcXJ0O3ZhciBNYXRoX2NlaWw9TWF0aC5jZWlsO3ZhciBNYXRoX2Zsb29yPU1hdGguZmxvb3I7dmFyIE1hdGhfcG93PU1hdGgucG93O3ZhciBNYXRoX2ltdWw9TWF0aC5pbXVsO3ZhciBNYXRoX2Zyb3VuZD1NYXRoLmZyb3VuZDt2YXIgTWF0aF9taW49TWF0aC5taW47dmFyIHJ1bkRlcGVuZGVuY2llcz0wO3ZhciBydW5EZXBlbmRlbmN5V2F0Y2hlcj1udWxsO3ZhciBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9bnVsbDtmdW5jdGlvbiBhZGRSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMrKztpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKX19TW9kdWxlWyJhZGRSdW5EZXBlbmRlbmN5Il09YWRkUnVuRGVwZW5kZW5jeTtmdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMtLTtpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKX1pZihydW5EZXBlbmRlbmNpZXM9PTApe2lmKHJ1bkRlcGVuZGVuY3lXYXRjaGVyIT09bnVsbCl7Y2xlYXJJbnRlcnZhbChydW5EZXBlbmRlbmN5V2F0Y2hlcik7cnVuRGVwZW5kZW5jeVdhdGNoZXI9bnVsbH1pZihkZXBlbmRlbmNpZXNGdWxmaWxsZWQpe3ZhciBjYWxsYmFjaz1kZXBlbmRlbmNpZXNGdWxmaWxsZWQ7ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7Y2FsbGJhY2soKX19fU1vZHVsZVsicmVtb3ZlUnVuRGVwZW5kZW5jeSJdPXJlbW92ZVJ1bkRlcGVuZGVuY3k7TW9kdWxlWyJwcmVsb2FkZWRJbWFnZXMiXT17fTtNb2R1bGVbInByZWxvYWRlZEF1ZGlvcyJdPXt9O3ZhciBtZW1vcnlJbml0aWFsaXplcj1udWxsO3ZhciBfX1pUSXQ9MjE4NzI7dmFyIF9fWlRJcz0yMTg2NDt2YXIgX19aVEltPTIxOTM2O3ZhciBfX1pUSWw9MjE5MjA7dmFyIF9fWlRWTjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0U9MjE2NTY7dmFyIF9fWlRJaT0yMTg4ODt2YXIgX19aVEloPTIxODQwO3ZhciBfX1pUSWo9MjE5MDQ7dmFyIF9fWlRJZD0yMTk2ODt2YXIgX19aVFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0U9MjE2MTY7dmFyIF9fWlRJZj0yMTk1Mjt2YXIgX19aVElhPTIxODU2O3ZhciBfX1pUVk4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRT0yMTk3Njt2YXIgX19aVEljPTIxODI0O1NUQVRJQ19CQVNFPTg7U1RBVElDVE9QPVNUQVRJQ19CQVNFK1J1bnRpbWUuYWxpZ25NZW1vcnkoMjMwODMpO19fQVRJTklUX18ucHVzaCh7ZnVuYzooZnVuY3Rpb24oKXtfX0dMT0JBTF9fSV9hKCl9KX0se2Z1bmM6KGZ1bmN0aW9uKCl7X19HTE9CQUxfX0lfYTY1KCl9KX0se2Z1bmM6KGZ1bmN0aW9uKCl7X19HTE9CQUxfX0lfYTE1MygpfSl9KTthbGxvY2F0ZShbNzYsNjUsODMsOTAsMTA1LDExMiwwLDAsMTExLDExMiwxMDEsMTEwLDAsMCwwLDAsMTAzLDEwMSwxMTYsODAsMTExLDEwNSwxMTAsMTE2LDAsMCwwLDAsMCwwLDAsMCwxMDMsMTAxLDExNiw2NywxMTEsMTE3LDExMCwxMTYsMCwwLDAsMCwwLDAsMCwwLDEwNSwxMDUsMTA1LDAsMCwwLDAsMCw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMTIwLDg0LDAsMCw2NCwwLDAsMCw4MCw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMCwwLDAsMCwwLDAsMCwxNjAsODQsMCwwLDgwLDAsMCwwLDAsMCwwLDAsNzIsMCwwLDAsMTE4LDEwNSwxMDUsMTA1LDAsMCwwLDAsMTE4LDEwNSwxMDUsMTA1LDEwNSwwLDAsMCwxMDUsMTA1LDAsMCwwLDAsMCwwLDExOCwxMDUsMCwwLDAsMCwwLDAsMTE4LDAsMCwwLDAsMCwwLDAsMTA1LDEwNSwwLDAsMCwwLDAsMCw4MCw3NSw1NCw3Niw2NSw4Myw5MCwxMDUsMTEyLDAsMCwwLDAsMCwwLDAsMTYwLDg0LDAsMCwxNjAsMCwwLDAsMSwwLDAsMCw3MiwwLDAsMCwxMTgsNTAsMTE2LDU0LDExNSw1MCw0OCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTUsMTE1LDU2LDAsMCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTYsMTE1LDU0LDAsMCwwLDExOCw1MCwxMTYsNTQsMTE1LDUwLDQ4LDExOCw1MCwxMTYsNTUsMTE1LDU2LDExOCw1MCwxMTYsNTYsMTE1LDU0LDAsMCwwLDAsMCwxMDQsOTcsMTE1LDMyLDEwNSwxMTUsNTgsMzIsMCwwLDAsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTcsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDk1LDExNSw5OSwxMDQsMTAxLDEwOSw5Nyw5NSwxMTYsMTIxLDExMiwxMDEsNjksMCwwLDIyNCw4NSwwLDAsMTYsMSwwLDAsODAsMzksMCwwLDAsMCwwLDAsODQsMTA0LDEwMSwzMiw3Niw2NSw5MCwzMiwxMTUsOTksMTA0LDEwMSwxMDksOTcsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDk5LDExMSwxMDMsMTEwLDEwNSwxMjIsMTAxLDEwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCwxLDAsMCwyMiwwLDAsMCwyMywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNSwxMjEsMTA5LDk4LDExMSwxMDgsMTE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDIyLDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY2LDk1LDczLDc4LDgzLDY3LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2Niw5NSw3Myw3OCw4Myw2Nyw5NSw1MSwxMTQsMTAzLDk4LDY5LDc4LDgzLDY5LDk1LDczLDgzLDc1LDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OCwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNjksMCwxMjAsODQsMCwwLDIwOCwyLDAsMCwyMjQsODUsMCwwLDE4NCwxLDAsMCwyNDgsMiwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDQ5LDQ5LDEwMSwxMTAsMTAwLDk1LDExMSwxMDIsOTUsMTAyLDEwNSwxMDgsMTAxLDY5LDAsMCwyMjQsODUsMCwwLDE2LDMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDgyLDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSwxMTAsMTAwLDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDQwLDMsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDIyLDAsMCwwLDAsMCwwLDAsMTUsMTQsMTMsMTIsMTEsMTAsOSw4LDE0LDAsMSwzLDYsMTAsMTAsOSwxMywxLDIsNCw3LDExLDExLDEwLDEyLDMsNCw1LDgsMTIsMTIsMTEsMTEsNiw3LDgsOSwxMywxMywxMiwxMCwxMCwxMSwxMiwxMywxNCwxNCwxMyw5LDEwLDExLDEyLDEzLDE0LDE1LDE0LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwwLDEsMiwzLDQsNSw2LDcsMSwwLDEsMiwzLDQsNSw2LDIsMSwwLDEsMiwzLDQsNSwzLDIsMSwwLDEsMiwzLDQsNCwzLDIsMSwwLDEsMiwzLDUsNCwzLDIsMSwwLDEsMiw2LDUsNCwzLDIsMSwwLDEsNyw2LDUsNCwzLDIsMSwwLDAsMCwwLDAsMTEyLDUsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDIyLDAsMCwwLDMxLDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3Nyw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw4MSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw4MSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsOCw0LDAsMCwxNDQsMzgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDk1LDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDczLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3Nyw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwxOTIsNywwLDAsMjMsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDQ4LDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw0OCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDQ4LDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw0OCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNjgsOTUsNjksNjksNjksNjksNzgsODMsNjYsOTUsNzMsNzgsODMsNjcsOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCwyMDAsNiwwLDAsMjQ4LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCw1Niw5LDAsMCwzNCwwLDAsMCwzNSwwLDAsMCwzNiwwLDAsMCwyMywwLDAsMCwzNywwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExMiwxMTYsMTE0LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw3Myw4MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw0OSw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDUwLDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw1MCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDUwLDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw1MCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNzAsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3OCw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3OCw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCwyNDAsNywwLDAsMTQ0LDM4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU1LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE1LDUwLDQ5LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw0OSw3Myw3OCw4Myw0OSw5NSw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDc4LDgzLDUwLDk1LDQ5LDU3LDExNCwxMDEsOTksMTExLDExNCwxMDAsOTUsMTAwLDEwMSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTExLDExNCw3Myw3NCw3OCw4Myw1MCw5NSw1MywxMDIsMTA1LDEwMSwxMDgsMTAwLDczLDc4LDgzLDUwLDk1LDUxLDEwOCw5NywxMTUsNTUsMTEyLDExMSwxMDUsMTEwLDExNiw0OSw0OCw2OSw3OCw4Myw1MCw5NSw1MCw0OCwxMTUsMTE2LDk3LDExMCwxMDAsOTcsMTE0LDEwMCw5NSwxMDAsMTA1LDEwMiwxMDIsOTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNzMsODMsNzAsOTUsNjksNjksNjksNjksNzgsODMsNjgsOTUsNzMsNzgsODMsNjksOTUsNTEsMTE0LDEwMyw5OCw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTIsMTEsMCwwLDI0LDAsMCwwLDM4LDAsMCwwLDM5LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY2LDk1LDczLDc4LDgzLDY3LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw2OSw5NSw3Myw4Myw3Miw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDIyNCw4NSwwLDAsMTIwLDEwLDAsMCwyNDgsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDIzMiwxMiwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsMjQsMCwwLDAsNDMsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDgsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSwxMTIsMTE2LDExNCw5NSwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsNzMsODAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsNDksOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsNDksOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw1MCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNTAsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw1MCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNTAsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDcwLDk1LDY5LDY5LDY5LDY5LDc4LDgzLDY4LDk1LDczLDc4LDgzLDY5LDk1LDU1LDEwMywxMTIsMTE1LDExNiwxMDUsMTA5LDEwMSw2OSw3OCw4Myw3MSw5NSw3Myw4Myw3NCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3OCw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3OCw5NSw2OSw2OSw2OSw2OSwwLDIyNCw4NSwwLDAsMTYwLDExLDAsMCwxNDQsMzgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDk1LDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDczLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw3OCw4Myw2OCw5NSw3Myw3OCw4Myw2OSw5NSw1NSwxMDMsMTEyLDExNSwxMTYsMTA1LDEwOSwxMDEsNjksNzgsODMsNzEsOTUsNzMsODMsNzQsOTUsNjksNjksNjksNjksNjksNjksNjksNjksNjksNjksNjksMCwwLDAsMCwwLDAsMCwwLDgsMTUsMCwwLDI1LDAsMCwwLDQ0LDAsMCwwLDQ1LDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw0OCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNDgsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw0OCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNDgsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDY4LDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCw0MCwxNCwwLDAsMjQ4LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMDQsMTYsMCwwLDQ2LDAsMCwwLDQ3LDAsMCwwLDQ4LDAsMCwwLDI1LDAsMCwwLDQ5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTUsNTAsNDksMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDQ5LDczLDc4LDgzLDQ5LDk1LDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsNTAsOTUsNDksNTcsMTE0LDEwMSw5OSwxMTEsMTE0LDEwMCw5NSwxMDAsMTAxLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDczLDc0LDc4LDgzLDUwLDk1LDUzLDEwMiwxMDUsMTAxLDEwOCwxMDAsNzMsNzgsODMsNTAsOTUsNTEsMTA4LDk3LDExNSw1NSwxMTIsMTExLDEwNSwxMTAsMTE2LDQ5LDQ4LDY5LDc4LDgzLDUwLDk1LDUwLDQ4LDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDk1LDEwMCwxMDUsMTAyLDEwMiw5NSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw3Myw4Myw3MCw5NSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw3NSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw3NSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsNTYsMTUsMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNSw1MCw0OSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNDksNzMsNzgsODMsNDksOTUsNTYsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE1LDQ5LDQ4LDk3LDExNCwxMDUsMTE2LDEwNCwxMDksMTAxLDExNiwxMDUsOTksNzMsNzgsODMsNDksOTUsNTAsMTA1LDExMSw0OSw1Niw5NSw5NSwxMDUsMTAyLDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw2OSw2OSw3OCw4Myw1MCw5NSw0OSw1NywxMTQsMTAxLDk5LDExMSwxMTQsMTAwLDk1LDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsNzMsNzQsNzgsODMsNTAsOTUsNTMsMTAyLDEwNSwxMDEsMTA4LDEwMCw3Myw3OCw4Myw1MCw5NSw1MSwxMDgsOTcsMTE1LDU1LDExMiwxMTEsMTA1LDExMCwxMTYsNDksNDgsNjksNzgsODMsNTAsOTUsNTAsNDgsMTE1LDExNiw5NywxMTAsMTAwLDk3LDExNCwxMDAsOTUsMTAwLDEwNSwxMDIsMTAyLDk1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDczLDgzLDcwLDk1LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwxMTgsMCwwLDAsMCwwLDAsMCwxMTYsMCwwLDAsMCwwLDAsMCwxMTUsMCwwLDAsMCwwLDAsMCw2NCwwLDAsMCwwLDAsMCwwLDE2LDE4LDAsMCw1MCwwLDAsMCw1MSwwLDAsMCw1NiwwLDAsMCwyNDgsMjU1LDI1NSwyNTUsMTYsMTgsMCwwLDUyLDAsMCwwLDUzLDAsMCwwLDE5MiwyNTUsMjU1LDI1NSwxOTIsMjU1LDI1NSwyNTUsMTYsMTgsMCwwLDU0LDAsMCwwLDU1LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU2LDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsOTksNjksNjksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDIwMCwxNywwLDAsMjI0LDQ1LDAsMCwwLDAsMCwwLDY0LDAsMCwwLDAsMCwwLDAsMTkyLDQ0LDAsMCw1NiwwLDAsMCw1NywwLDAsMCwxOTIsMjU1LDI1NSwyNTUsMTkyLDI1NSwyNTUsMjU1LDE5Miw0NCwwLDAsNTgsMCwwLDAsNTksMCwwLDAsMCwwLDAsMCwyMDgsMTgsMCwwLDYwLDAsMCwwLDYxLDAsMCwwLDI2LDAsMCwwLDIyLDAsMCwwLDIyLDAsMCwwLDIyLDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDI1LDAsMCwwLDI2LDAsMCwwLDI2LDAsMCwwLDI0LDAsMCwwLDI3LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Myw5OCw5NywxMTUsMTA1LDk5LDk1LDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDk4LDExNywxMDIsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDk5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxMzYsMTgsMCwwLDcyLDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDE5LDAsMCw2MiwwLDAsMCw2MywwLDAsMCw2NCwwLDAsMCwyOCwwLDAsMCw2NSwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExMiwxMTYsMTE0LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw3Myw4MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDU2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNSw0OSw0OCw5NywxMTQsMTA1LDExNiwxMDQsMTA5LDEwMSwxMTYsMTA1LDk5LDczLDc4LDgzLDQ5LDk1LDUwLDEwNSwxMTEsNDksNTYsOTUsOTUsMTA1LDEwMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDczLDc4LDgzLDQ5LDk1LDU1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksMTE1LDQ5LDUxLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDk1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNjksNjksNjksNjksNjksNzgsODMsOTUsNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsODMsNTcsOTUsNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsODMsNTcsOTUsNjksNjksNjksNjksMCwyMjQsODUsMCwwLDAsMTksMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTUsNDksNDgsOTcsMTE0LDEwNSwxMTYsMTA0LDEwOSwxMDEsMTE2LDEwNSw5OSw3Myw3OCw4Myw0OSw5NSw1MCwxMDUsMTExLDQ5LDU2LDk1LDk1LDEwNSwxMDIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsNzEsMTExLDExNiwzMiwxMDAsOTcsMTE2LDk3LDMyLDAsMCwwLDAsMCwwLDAsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDAsMCwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwxMDQsMTA1LDExNiwzMywwLDAsMTAwLDExMSwxMTAsMTAxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMTYsMTA1LDExMCwxMDMsMzIsMTE1LDEwNCwxMDUsMTE2LDMzLDAsMCwwLDAsMCw3Niw2NSw4Myw3MCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTEsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTUsMTA5LDk3LDEwMywxMDUsOTksNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTIwLDIwLDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw3Nyw5NywxMDMsMTA1LDk5LDMyLDExNCwxMDEsOTcsMTAwLDMzLDAsMCwwLDAsMCwxMTIsOTcsMTE0LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDAsMCwxMTIsOTcsMTE0LDExNSwxMDUsMTEwLDEwMywzMiw5OSwxMDQsMTE3LDExMCwxMDcsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNTAsOTksMTA0LDExNywxMTAsMTA3LDk1LDExNiw5Nyw5OCwxMDgsMTAxLDk1LDExNCwxMDEsOTcsMTAwLDk1LDEwMSwxMTQsMTE0LDExMSwxMTQsNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDIyNCwyMCwwLDAsODAsMzksMCwwLDAsMCwwLDAsNjcsMTA0LDExNywxMTAsMTA3LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMSwxMDIsMTAyLDExNSwxMDEsMTE2LDMyLDYxLDYxLDMyLDQ1LDQ5LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE2LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTYsMTA1LDEwOSwxMDEsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNDksNTEsMTEwLDExMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsODAsMjEsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNTQsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDk1LDk5LDEwNCwxMTcsMTEwLDEwNyw5NSwxMTYsOTcsOTgsMTA4LDEwMSw5NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDY5LDAsMCwwLDIyNCw4NSwwLDAsMTI4LDIxLDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw5OSwxMDQsMTE3LDExMCwxMDcsOTUsMTE1LDEwNSwxMjIsMTAxLDMyLDYxLDYxLDMyLDExNywxMDUsMTEwLDExNiw0NiwxMDksOTcsMTIwLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE2LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTYsMTA1LDEwOSwxMDEsNDQsMzIsOTksOTcsMTA4LDEwOCwzMiw0OSw0NSw1Niw0OCw0OCw0NSw2OCw2NSw3MCw4NSw4MSwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsNDYsMCwwLDAsMCwwLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiw5OSwxMTEsMTE3LDExMCwxMTYsMzIsMTA1LDExNSw1OCwzMiwwLDAsOTksMTE2LDExMSw5MSwwLDAsMCwwLDkzLDU4LDMyLDAsMCwwLDAsMCw4NCwxMDQsMTAxLDMyLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDIxLDAsMCw2NiwwLDAsMCw2NywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTEyLDIxLDAsMCw2OCwwLDAsMCw2OSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDg0LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTksOTcsMTE1LDMyLDk3LDMyLDExMiwxMTQsMTExLDk4LDEwOCwxMDEsMTA5LDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwNCwxMTcsMTEwLDEwNywzMiwxMTYsOTcsOTgsMTA4LDEwMSwwLDAsMCwwLDAsMCwwLDAsMCw4LDIxLDAsMCw3MCwwLDAsMCw3MSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsMzIsMTAxLDExMCw5OSwxMTEsMTAwLDEwMSwxMDAsMCwwLDExOCwxMDgsMTE0LDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMzIsMTE0LDEwMSw5NywxMDAsMzMsMCwwLDAsMCwwLDAsMCwwLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsMzIsMTE4LDEwOCwxMTQsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwwLDAsMCwwLDAsMCwwLDAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw0OSw1MSwxMTAsMTExLDk1LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsOTUsMTE4LDEwOCwxMTQsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMzIsMjMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDExMiwxMTcsMTE1LDEwNCwxMDUsMTEwLDEwMywzMywwLDAsMCwwLDAsMCwwLDAsNzgsMTExLDMyLDc2LDY1LDgzLDEyMiwxMDUsMTEyLDMyLDg2LDc2LDgyLDMyLDExOSw5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDg2LDc2LDgyLDExNSwzMiwxMTUsMTAxLDk5LDExNiwxMDUsMTExLDExMCwwLDAsMCwwLDAsMCwwLDAsMCw2NCwyMywwLDAsNzIsMCwwLDAsNzMsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDUzLDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsOTUsMTAyLDExMSwxMTQsMTA5LDk3LDExNiw5NSwxMTcsMTEwLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDY5LDAsMCwwLDAsMjI0LDg1LDAsMCwxNjgsMjMsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMTEsMTE0LDMyLDEwNSwxMTUsNTgsMzIsMCwxMTYsMTExLDExNiw5NywxMDgsMzIsMTA1LDExNiwxMDEsMTA5LDExNSw1OCwzMiwwLDAsMCw4MCw5NywxMTQsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMTE1LDMyLDExMCwxMTEsMTE5LDMzLDAsMCwwLDAsMCwwLDgwLDExNywxMTUsMTA0LDEwNSwxMTAsMTAzLDMyLDEwNSwxMTYsMTAxLDEwOSwzMiw5NywxMTYsMzIsMTA1LDExMCwxMDAsMTAxLDEyMCw1OCwzMiwwLDc5LDExMCwxMDgsMTIxLDMyLDc2LDY1LDgzLDEyMiwxMDUsMTEyLDMyLDgwLDc5LDczLDc4LDg0LDg3LDczLDgzLDY5LDMyLDY3LDcyLDg1LDc4LDc1LDY5LDY4LDMyLDEwMCwxMDEsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwwLDAsMCwwLDAsMjA4LDIzLDAsMCw3NCwwLDAsMCw3NSwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1NSw5OCw5NywxMDAsOTUsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk1LDk5LDk3LDEwOCwxMDgsNjksMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTM2LDI0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNjgsMjQsMCwwLDc2LDAsMCwwLDc3LDAsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsMjYsMCwwLDc4LDAsMCwwLDc5LDAsMCwwLDI4LDAsMCwwLDI3LDAsMCwwLDgwLDAsMCwwLDgxLDAsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDI5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDk1LDk1LDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw1NCw5NSw5NSwxMDIsMTE3LDExMCw5OSw3Myw5MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw1MCw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDQ5LDQ5LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTExLDExNCwxMTUsNjksMTE4LDY5LDg1LDEwOCw4Miw3OCw4Myw1MSw5NSw1NCwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDY5LDY5LDk1LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDgzLDY2LDk1LDY5LDY5LDcwLDExOCw4Myw2NSw5NSw2OSw2OSw2OSwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsNTQsOTUsOTUsOTgsOTcsMTE1LDEwMSw3Myw3MCwxMTgsODIsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1MCwxMDUsMTExLDU0LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNjksNjksNjksNjksMCwwLDAsMCwxMjAsODQsMCwwLDIwOCwyNSwwLDAsMjI0LDg1LDAsMCw1NiwyNSwwLDAsOCwyNiwwLDAsMCwwLDAsMCw5MCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDQ5LDQ5LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTExLDExNCwxMTUsNjksMTE4LDY5LDg1LDEwOCw4Miw3OCw4Myw0OCw5NSw1NCwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDY5LDY5LDk1LDAsMCwwLDEyMCw4NCwwLDAsMzIsMjYsMCwwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTAsNDksMTExLDEwOCwxMDAsOTUsMTE1LDExNiwxMjEsMTA4LDEwMSw5NSw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTA1LDExMSwxMTAsNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTM2LDI2LDAsMCw4MCwzOSwwLDAsMCwwLDAsMCw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDQ5LDUyLDExMCwxMTEsMTE2LDk1LDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwxMDEsMTAwLDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxOTIsMjYsMCwwLDgwLDM5LDAsMCwwLDAsMCwwLDg0LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwxMTAsMzksMTE2LDMyLDExNSwxMDEsMTAxLDEwOSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiw5OSwxMTEsMTA5LDExMiwxMTQsMTAxLDExNSwxMTUsMTAxLDEwMCwwLDAsMCwwLDAsMCwyMjQsMjYsMCwwLDgyLDAsMCwwLDgzLDAsMCwwLDIyLDAsMCwwLDAsMCwwLDAsODQsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEwMSwxMDEsMTA5LDExNSwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTgsMTAxLDMyLDExMSwxMDgsMTAwLDMyLDExNSwxMTYsMTIxLDEwOCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsMCwwLDAsMCwwLDAsMCwwLDE3NiwyNiwwLDAsODQsMCwwLDAsODUsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExOCw5NywxMDgsMTA1LDEwMCwwLDAsMCwwLDAsMTUyLDIwLDAsMCw4NiwwLDAsMCw4NywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDEwMywxMTEsMTA1LDExMCwxMDMsMzIsMTAwLDExMSwxMTksMTEwLDMzLDAsMCwwLDAsMCwwLDAsMCwwLDEyOCwyOCwwLDAsODgsMCwwLDAsODksMCwwLDAsOTAsMCwwLDAsMzAsMCwwLDAsOTEsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDgsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSwxMTIsMTE2LDExNCw5NSwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsNzMsODAsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1MCwxMDUsMTExLDU0LDExNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDksNDgsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDIsMTA1LDEwOCwxMDEsNzMsNzgsODMsNDksOTUsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw2OSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw1NSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw1NSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDI0MCwyNywwLDAsMTQ0LDM4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw3OCw1NCwxMDgsOTcsMTE1LDEyMiwxMDUsMTEyLDUwLDEwNSwxMTEsNTQsMTE0LDEwMSw5NywxMDAsMTAxLDExNCw0OSw0OCw5OCw5NywxMTUsMTA1LDk5LDk1LDEwMiwxMDUsMTA4LDEwMSw3Myw3OCw4Myw0OSw5NSw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwxMjAsMjksMCwwLDkyLDAsMCwwLDkzLDAsMCwwLDk0LDAsMCwwLDMxLDAsMCwwLDk1LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUwLDQ4LDk1LDk1LDExNSwxMDQsOTcsMTE0LDEwMSwxMDAsOTUsMTEyLDExNiwxMTQsOTUsMTEyLDExMSwxMDUsMTEwLDExNiwxMDEsMTE0LDczLDgwLDc4LDU0LDEwOCw5NywxMTUsMTIyLDEwNSwxMTIsNTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsNDksNTEsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw2OSw3OCw4Myw5NSw0OSw1MiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw3Myw4Myw1MSw5NSw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3Myw4Myw1MSw5NSw2OSw2OSw2OSw2OSwwLDAsMCwyMjQsODUsMCwwLDgsMjksMCwwLDE0NCwzOCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsNzMsNzgsNTQsMTA4LDk3LDExNSwxMjIsMTA1LDExMiw1NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDExNSw0OSw1MSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSw5NSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDExOCwxMTEsMTA1LDEwMCwwLDAsMCwwLDk4LDExMSwxMTEsMTA4LDAsMCwwLDAsOTksMTA0LDk3LDExNCwwLDAsMCwwLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDk5LDEwNCw5NywxMTQsMCwwLDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsOTksMTA0LDk3LDExNCwwLDAsMCwxMTUsMTA0LDExMSwxMTQsMTE2LDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDEwNCwxMTEsMTE0LDExNiwwLDAsMTA1LDExMCwxMTYsMCwwLDAsMCwwLDExNywxMTAsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMCwwLDAsMCwxMDgsMTExLDExMCwxMDMsMCwwLDAsMCwxMTcsMTEwLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDEwOCwxMTEsMTEwLDEwMywwLDAsMCwxMDIsMTA4LDExMSw5NywxMTYsMCwwLDAsMTAwLDExMSwxMTcsOTgsMTA4LDEwMSwwLDAsMTE1LDExNiwxMDAsNTgsNTgsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMCwwLDAsMCwwLDExNSwxMTYsMTAwLDU4LDU4LDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjAsMTE3LDExMCwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiw5OSwxMDQsOTcsMTE0LDYyLDAsMCwwLDAsMCwwLDAsMCwxMTUsMTE2LDEwMCw1OCw1OCwxMTksMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMCwwLDAsMCwxMDEsMTA5LDExNSw5OSwxMTQsMTA1LDExMiwxMTYsMTAxLDExMCw1OCw1OCwxMTgsOTcsMTA4LDAsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNTgsNTgsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE4LDEwNSwxMDEsMTE5LDAsNzgsNDksNDgsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNDksNDksMTA5LDEwMSwxMDksMTExLDExNCwxMjEsOTUsMTE4LDEwNSwxMDEsMTE5LDY5LDAsMCwwLDAsMCwxMjAsODQsMCwwLDIwMCwzMCwwLDAsNzgsNDksNDgsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNTEsMTE4LDk3LDEwOCw2OSwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDI0MCwzMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNzgsODMsOTUsNTcsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDExMSwxMTQsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNDksOTUsOTUsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw5NSw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDczLDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDEyMCw4NCwwLDAsODAsMzEsMCwwLDY0LDg2LDAsMCwxNiwzMSwwLDAsMCwwLDAsMCwxLDAsMCwwLDEyMCwzMSwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTAsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw3MywxMDQsNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDEwNCw2OSw2OSw3OCw4Myw5NSw1Nyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTExLDExNCw3MywxMDQsNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwxNTIsMzEsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMjAsMzEsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDc4LDgzLDk1LDU3LDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMTEsMTE0LDczLDk5LDY5LDY5LDY5LDY5LDAsMCw2NCw4NiwwLDAsMjQwLDMxLDAsMCwwLDAsMCwwLDEsMCwwLDAsMTIwLDMxXSwiaTgiLEFMTE9DX05PTkUsUnVudGltZS5HTE9CQUxfQkFTRSk7YWxsb2NhdGUoWzIwOCwzNiwwLDAsOTYsMCwwLDAsOTcsMCwwLDAsMjksMCwwLDAsMjUsMCwwLDAsMjMsMCwwLDAsMjMsMCwwLDAsMzAsMCwwLDAsMzEsMCwwLDAsMjYsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMzIsMCwwLDAsMjcsMCwwLDAsMzMsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDExNSwxMTYsMTAwLDExMSwxMTcsMTE2LDk4LDExNywxMDIsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDE3NiwzNiwwLDAsMTM2LDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsNTYsMzcsMCwwLDk4LDAsMCwwLDk5LDAsMCwwLDMwLDAsMCwwLDI1LDAsMCwwLDIzLDAsMCwwLDIzLDAsMCwwLDM0LDAsMCwwLDMxLDAsMCwwLDI2LDAsMCwwLDM1LDAsMCwwLDM2LDAsMCwwLDM0LDAsMCwwLDI4LDAsMCwwLDM1LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMTUsMTE2LDEwMCwxMDUsMTEwLDk4LDExNywxMDIsNzMsMTE5LDY5LDY5LDAsMjI0LDg1LDAsMCwzMiwzNywwLDAsMTM2LDQ0LDAsMCwwLDAsMCwwLDExNywxMTAsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsMTA4LDExMSw5OSw5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTEwLDEwMCw5NywxMTQsMTAwLDMyLDEwNSwxMTAsMTEyLDExNywxMTYsMCwwLDAsMCwwLDAsMCwyMDgsMzcsMCwwLDEwMCwwLDAsMCwxMDEsMCwwLDAsMzEsMCwwLDAsMjIsMCwwLDAsMjQsMCwwLDAsMjQsMCwwLDAsMzcsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMzgsMCwwLDAsMjYsMCwwLDAsMzYsMCwwLDAsMjksMCwwLDAsMzcsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDExNSwxMTYsMTAwLDExMSwxMTcsMTE2LDk4LDExNywxMDIsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMTc2LDM3LDAsMCw3Miw0NCwwLDAsMCwwLDAsMCwwLDAsMCwwLDU2LDM4LDAsMCwxMDIsMCwwLDAsMTAzLDAsMCwwLDMyLDAsMCwwLDIyLDAsMCwwLDI0LDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDIzLDAsMCwwLDM5LDAsMCwwLDQwLDAsMCwwLDM4LDAsMCwwLDI0LDAsMCwwLDM5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCw5NSw5NSwxMTUsMTE2LDEwMCwxMDUsMTEwLDk4LDExNywxMDIsNzMsOTksNjksNjksMCwyMjQsODUsMCwwLDMyLDM4LDAsMCw3Miw0NCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsOTUsOTUsMTE1LDEwNCw5NywxMTQsMTAxLDEwMCw5NSw5OSwxMTEsMTE3LDExMCwxMTYsNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsNzIsMzgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Nyw5NSw5NSwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDk1LDExOSwxMDEsOTcsMTA3LDk1LDk5LDExMSwxMTcsMTEwLDExNiw2OSwwLDAsMCw2NCw4NiwwLDAsMTEyLDM4LDAsMCwwLDAsMCwwLDEsMCwwLDAsMTA0LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMjMyLDM4LDAsMCwxMDQsMCwwLDAsMTA1LDAsMCwwLDQxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MCwzOSwwLDAsMTA2LDAsMCwwLDEwNywwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDgzLDExNiw0OSw0OSwxMDgsMTExLDEwMywxMDUsOTksOTUsMTAxLDExNCwxMTQsMTExLDExNCwwLDIyNCw4NSwwLDAsMjE2LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0MCwzOSwwLDAsMTA0LDAsMCwwLDEwOCwwLDAsMCw0MSwwLDAsMCwwLDAsMCwwLDgzLDExNiw0OSw1MCwxMDgsMTAxLDExMCwxMDMsMTE2LDEwNCw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDE2LDM5LDAsMCwyMzIsMzgsMCwwLDAsMCwwLDAsODMsMTE2LDQ5LDUxLDExNCwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCw1NiwzOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDEwMywxMDEsMTEwLDEwMSwxMTQsMTA1LDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1OCwzMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDIwMCwzOSwwLDAsMTA5LDAsMCwwLDExMCwwLDAsMCwyMiwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MCwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDY5LDAsMCwyMjQsODUsMCwwLDE3NiwzOSwwLDAsODAsMzksMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUyLDEwMSwxMTQsMTE0LDExMSwxMTQsOTUsOTksOTcsMTE2LDEwMSwxMDMsMTExLDExNCwxMjEsNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMjE2LDM5LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTAsOTUsOTUsMTAwLDExMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw2OSwwLDAsMjI0LDg1LDAsMCwwLDQwLDAsMCwyNDgsMzksMCwwLDAsMCwwLDAsMCwwLDAsMCwxMjAsNDAsMCwwLDExMSwwLDAsMCwxMTIsMCwwLDAsNDIsMCwwLDAsMjIsMCwwLDAsMzAsMCwwLDAsMzEsMCwwLDAsMjMsMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTAsNTIsOTUsOTUsMTAzLDEwMSwxMTAsMTAxLDExNCwxMDUsOTksOTUsMTAxLDExNCwxMTQsMTExLDExNCw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDgwLDQwLDAsMCwyNCw0MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIxNiw0MCwwLDAsMTEzLDAsMCwwLDExNCwwLDAsMCw0MywwLDAsMCwyNCwwLDAsMCwzMCwwLDAsMCwzMSwwLDAsMCwyNSwwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw1MSw5NSw5NSwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw5NSwxMDEsMTE0LDExNCwxMTEsMTE0LDk1LDk5LDk3LDExNiwxMDEsMTAzLDExMSwxMTQsMTIxLDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNzYsNDAsMCwwLDI0LDQwLDAsMCwwLDAsMCwwLDEwOSwxMTcsMTE2LDEwMSwxMjAsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDk3LDEwNSwxMDgsMTAxLDEwMCwwLDAsMCwwLDAsMCwwLDEwMSw5OSwzMiw2MSw2MSwzMiw0OCwwLDQ3LDg1LDExNSwxMDEsMTE0LDExNSw0NywxMTgsMTAxLDExNCwxMDksOTcsNDcsMTE2LDEwOSwxMTIsNDcsMTAxLDEwOSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDEwMSwxMTAsNDcsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDcsMTA4LDEwNSw5OCw0NywxMDgsMTA1LDk4LDk5LDEyMCwxMjAsNDcsMTA5LDExNywxMTYsMTAxLDEyMCw0Niw5OSwxMTIsMTEyLDAsMTE3LDExMCwxMDgsMTExLDk5LDEwNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywwLDAsMCwwLDAsMCwwLDAsNzIsNDQsMCwwLDExNSwwLDAsMCwxMTYsMCwwLDAsMjYsMCwwLDAsMjIsMCwwLDAsMjQsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMjQsMCwwLDAsMjMsMCwwLDAsMzgsMCwwLDAsMjYsMCwwLDAsMzYsMCwwLDAsMjQsMCwwLDAsMzksMCwwLDAsMCwwLDAsMCwxMzYsNDQsMCwwLDExNywwLDAsMCwxMTgsMCwwLDAsMzMsMCwwLDAsMjUsMCwwLDAsMjMsMCwwLDAsMjMsMCwwLDAsMzQsMCwwLDAsMzEsMCwwLDAsMjYsMCwwLDAsMzIsMCwwLDAsMzMsMCwwLDAsMzIsMCwwLDAsMjgsMCwwLDAsMzUsMCwwLDAsOCwwLDAsMCwwLDAsMCwwLDE5Miw0NCwwLDAsNTYsMCwwLDAsNTcsMCwwLDAsMjQ4LDI1NSwyNTUsMjU1LDI0OCwyNTUsMjU1LDI1NSwxOTIsNDQsMCwwLDU4LDAsMCwwLDU5LDAsMCwwLDgsMCwwLDAsMCwwLDAsMCw4LDQ1LDAsMCwxMTksMCwwLDAsMTIwLDAsMCwwLDI0OCwyNTUsMjU1LDI1NSwyNDgsMjU1LDI1NSwyNTUsOCw0NSwwLDAsMTIxLDAsMCwwLDEyMiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsODAsNDUsMCwwLDEyMywwLDAsMCwxMjQsMCwwLDAsMjUyLDI1NSwyNTUsMjU1LDI1MiwyNTUsMjU1LDI1NSw4MCw0NSwwLDAsMTI1LDAsMCwwLDEyNiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsMTUyLDQ1LDAsMCwxMjcsMCwwLDAsMTI4LDAsMCwwLDI1MiwyNTUsMjU1LDI1NSwyNTIsMjU1LDI1NSwyNTUsMTUyLDQ1LDAsMCwxMjksMCwwLDAsMTMwLDAsMCwwLDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwwLDAsMCwwLDAsMCwwLDAsMTE3LDExMCwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOTYsNDMsMCwwLDEzMSwwLDAsMCwxMzIsMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEzNiw0MywwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwxMDUsMTExLDExNSw5NSw5OCw5NywxMTUsMTAxLDU4LDU4LDk5LDEwOCwxMDEsOTcsMTE0LDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDEwNSwxMTEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNTUsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDY0LDQzLDAsMCwyMDAsMzksMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDEwNSwxMTEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNjksMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDExMiw0MywwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk4LDk3LDExNSwxMDUsOTksOTUsMTA1LDExMSwxMTUsNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNDQsNDMsMCwwLDEzNiw0MywwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTExLDExNSw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMjA4LDQzLDAsMCwxMzYsNDMsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUzLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwxNiw0NCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUzLDk4LDk3LDExNSwxMDUsOTksOTUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDgwLDQ0LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTEsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwxNDQsNDQsMCwwLDAsMCwwLDAsMSwwLDAsMCwxOTIsNDMsMCwwLDMsMjQ0LDI1NSwyNTUsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUxLDk4LDk3LDExNSwxMDUsOTksOTUsMTA1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNjksNjksMCwwLDY0LDg2LDAsMCwyMTYsNDQsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDQ0LDAsMCwzLDI0NCwyNTUsMjU1LDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MSw5OCw5NywxMTUsMTA1LDk5LDk1LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSwwLDAsNjQsODYsMCwwLDMyLDQ1LDAsMCwwLDAsMCwwLDEsMCwwLDAsMTkyLDQzLDAsMCwzLDI0NCwyNTUsMjU1LDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1MSw5OCw5NywxMTUsMTA1LDk5LDk1LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDAsMCw2NCw4NiwwLDAsMTA0LDQ1LDAsMCwwLDAsMCwwLDEsMCwwLDAsMCw0NCwwLDAsMywyNDQsMjU1LDI1NSw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTIsOTgsOTcsMTE1LDEwNSw5OSw5NSwxMDUsMTExLDExNSwxMTYsMTE0LDEwMSw5NywxMDksNzMsOTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDk5LDY5LDY5LDY5LDY5LDAsNjQsODYsMCwwLDE3Niw0NSwwLDAsMywwLDAsMCwyLDAsMCwwLDE5Miw0NCwwLDAsMiwwLDAsMCw4MCw0NSwwLDAsMiw4LDAsMCwwLDAsMCwwLDcyLDQ2LDAsMCwxMzUsMCwwLDAsMTM2LDAsMCwwLDQ0LDAsMCwwLDIyLDAsMCwwLDMwLDAsMCwwLDMxLDAsMCwwLDI2LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU3LDk1LDk1LDEwNSwxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5NSw5OSw5NywxMTYsMTAxLDEwMywxMTEsMTE0LDEyMSw2OSwwLDAsMCwyMjQsODUsMCwwLDQwLDQ2LDAsMCwyNCw0MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDU2LDYwLDAsMCwxMzcsMCwwLDAsMTM4LDAsMCwwLDEzOSwwLDAsMCwyMiwwLDAsMCwyNSwwLDAsMCwzMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw5Niw2MCwwLDAsMTQwLDAsMCwwLDE0MSwwLDAsMCwxMzksMCwwLDAsMjMsMCwwLDAsMjYsMCwwLDAsMzMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsNjUsMCwwLDE0MiwwLDAsMCwxNDMsMCwwLDAsMTM5LDAsMCwwLDIyLDAsMCwwLDIzLDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDI4LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDMxLDAsMCwwLDMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw5Nyw5OCw5OSwxMDAsMTAxLDEwMiw2NSw2Niw2Nyw2OCw2OSw3MCwxMjAsODgsNDMsNDUsMTEyLDgwLDEwNSw3MywxMTAsNzgsMCwwLDAsMCwwLDAsMCwwLDM3LDExMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDE2OCw2NSwwLDAsMTQ0LDAsMCwwLDE0NSwwLDAsMCwxMzksMCwwLDAsMzMsMCwwLDAsMzQsMCwwLDAsMzUsMCwwLDAsMzYsMCwwLDAsMzcsMCwwLDAsMzgsMCwwLDAsMzksMCwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsNDMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTA0LDY2LDAsMCwxNDYsMCwwLDAsMTQ3LDAsMCwwLDEzOSwwLDAsMCwyNSwwLDAsMCwyNiwwLDAsMCw0NCwwLDAsMCwyNywwLDAsMCw0NSwwLDAsMCwyMiwwLDAsMCwyMywwLDAsMCwyOCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjcsMCwwLDE0OCwwLDAsMCwxNDksMCwwLDAsMTM5LDAsMCwwLDI5LDAsMCwwLDMwLDAsMCwwLDQ2LDAsMCwwLDMxLDAsMCwwLDQ3LDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDAsMCwwLDAsMzcsMTEyLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDAsNjIsMCwwLDE1MCwwLDAsMCwxNTEsMCwwLDAsMTM5LDAsMCwwLDQ1LDAsMCwwLDQ4LDAsMCwwLDQ5LDAsMCwwLDUwLDAsMCwwLDUxLDAsMCwwLDUyLDAsMCwwLDIyLDAsMCwwLDI0OCwyNTUsMjU1LDI1NSw0MCw2MiwwLDAsNDYsMCwwLDAsNDcsMCwwLDAsNDgsMCwwLDAsNDksMCwwLDAsNTAsMCwwLDAsNTEsMCwwLDAsNTIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsNzIsNTgsMzcsNzcsNTgsMzcsODMsMzcsMTA5LDQ3LDM3LDEwMCw0NywzNywxMjEsMzcsODksNDUsMzcsMTA5LDQ1LDM3LDEwMCwzNyw3Myw1OCwzNyw3Nyw1OCwzNyw4MywzMiwzNywxMTIsMCwwLDAsMCwwLDM3LDcyLDU4LDM3LDc3LDAsMCwwLDM3LDcyLDU4LDM3LDc3LDU4LDM3LDgzLDAsMCwwLDAsMjAwLDYyLDAsMCwxNTIsMCwwLDAsMTUzLDAsMCwwLDEzOSwwLDAsMCw1MywwLDAsMCw1MywwLDAsMCw1NCwwLDAsMCw1NSwwLDAsMCw1NiwwLDAsMCw1NywwLDAsMCwyMywwLDAsMCwyNDgsMjU1LDI1NSwyNTUsMjAwLDYyLDAsMCw1NCwwLDAsMCw1NSwwLDAsMCw1NiwwLDAsMCw1NywwLDAsMCw1OCwwLDAsMCw1OSwwLDAsMCw2MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNywwLDAsMCw3MiwwLDAsMCw1OCwwLDAsMCwzNywwLDAsMCw3NywwLDAsMCw1OCwwLDAsMCwzNywwLDAsMCw4MywwLDAsMCwzNywwLDAsMCwxMDksMCwwLDAsNDcsMCwwLDAsMzcsMCwwLDAsMTAwLDAsMCwwLDQ3LDAsMCwwLDM3LDAsMCwwLDEyMSwwLDAsMCwzNywwLDAsMCw4OSwwLDAsMCw0NSwwLDAsMCwzNywwLDAsMCwxMDksMCwwLDAsNDUsMCwwLDAsMzcsMCwwLDAsMTAwLDAsMCwwLDM3LDAsMCwwLDczLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDgzLDAsMCwwLDMyLDAsMCwwLDM3LDAsMCwwLDExMiwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDcyLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsNzIsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMCwwLDAsMCw4OCw2MywwLDAsMTU0LDAsMCwwLDE1NSwwLDAsMCwxMzksMCwwLDAsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTkyLDYzLDAsMCwxNTYsMCwwLDAsMTU3LDAsMCwwLDEzOSwwLDAsMCwyMywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNzYsNjAsMCwwLDE1OCwwLDAsMCwxNTksMCwwLDAsMTM5LDAsMCwwLDYxLDAsMCwwLDYyLDAsMCwwLDM0LDAsMCwwLDM1LDAsMCwwLDM2LDAsMCwwLDM3LDAsMCwwLDYzLDAsMCwwLDM4LDAsMCwwLDM5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI0MCw2MCwwLDAsMTYwLDAsMCwwLDE2MSwwLDAsMCwxMzksMCwwLDAsNjQsMCwwLDAsNjUsMCwwLDAsNDAsMCwwLDAsNDEsMCwwLDAsNDIsMCwwLDAsNDMsMCwwLDAsNjYsMCwwLDAsNDQsMCwwLDAsNDUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDgsNjEsMCwwLDE2MiwwLDAsMCwxNjMsMCwwLDAsMTM5LDAsMCwwLDY3LDAsMCwwLDY4LDAsMCwwLDQ2LDAsMCwwLDQ3LDAsMCwwLDQ4LDAsMCwwLDQ5LDAsMCwwLDY5LDAsMCwwLDUwLDAsMCwwLDUxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDExMiw2MSwwLDAsMTY0LDAsMCwwLDE2NSwwLDAsMCwxMzksMCwwLDAsNzAsMCwwLDAsNzEsMCwwLDAsNTIsMCwwLDAsNTMsMCwwLDAsNTQsMCwwLDAsNTUsMCwwLDAsNzIsMCwwLDAsNTYsMCwwLDAsNTcsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTQ0LDY3LDAsMCwxNjYsMCwwLDAsMTY3LDAsMCwwLDEzOSwwLDAsMCwyNCwwLDAsMCwyNSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1NywwLDAsMCwwLDAsMCwzNyw3NiwxMDIsMCwwLDAsMCwwLDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDAsMCwwLDAsMzIsNjgsMCwwLDE2OCwwLDAsMCwxNjksMCwwLDAsMTM5LDAsMCwwLDI2LDAsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDY4LDAsMCwxNzAsMCwwLDAsMTcxLDAsMCwwLDEzOSwwLDAsMCwyMiwwLDAsMCw1OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNyw0Niw0OCw3NiwxMDIsMCwwLDAsMCwwLDAsMCw2NCw2OSwwLDAsMTcyLDAsMCwwLDE3MywwLDAsMCwxMzksMCwwLDAsMjMsMCwwLDAsNTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyNCw2NCwwLDAsMTc0LDAsMCwwLDE3NSwwLDAsMCwxMzksMCwwLDAsMzQsMCwwLDAsMzMsMCwwLDAsNTgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODAsNjQsMCwwLDE3NiwwLDAsMCwxNzcsMCwwLDAsMTM5LDAsMCwwLDM1LDAsMCwwLDM0LDAsMCwwLDU5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMTgsMTAxLDk5LDExNiwxMTEsMTE0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNiw2MCwwLDAsMTc4LDAsMCwwLDE3OSwwLDAsMCwxMzksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMzIsNTYsMCwwLDE4MCwwLDAsMCwxODEsMCwwLDAsMTM5LDAsMCwwLDQwLDAsMCwwLDM2LDAsMCwwLDQxLDAsMCwwLDM3LDAsMCwwLDQyLDAsMCwwLDIyLDAsMCwwLDM4LDAsMCwwLDI0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIwMCw1NywwLDAsMTgyLDAsMCwwLDE4MywwLDAsMCwxMzksMCwwLDAsMjIsMCwwLDAsMjMsMCwwLDAsMjUsMCwwLDAsNzMsMCwwLDAsNzQsMCwwLDAsMjYsMCwwLDAsNzUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTkyLDU5LDAsMCwxODQsMCwwLDAsMTg1LDAsMCwwLDEzOSwwLDAsMCw3NiwwLDAsMCw3NywwLDAsMCw2MCwwLDAsMCw2MSwwLDAsMCw2MiwwLDAsMCwwLDAsMCwwLDIzMiw1OSwwLDAsMTg2LDAsMCwwLDE4NywwLDAsMCwxMzksMCwwLDAsNzgsMCwwLDAsNzksMCwwLDAsNjMsMCwwLDAsNjQsMCwwLDAsNjUsMCwwLDAsMTE2LDAsMCwwLDExNCwwLDAsMCwxMTcsMCwwLDAsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMDIsOTcsMTA4LDExNSwxMDEsMCwwLDAsMTAyLDAsMCwwLDk3LDAsMCwwLDEwOCwwLDAsMCwxMTUsMCwwLDAsMTAxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsMTA5LDAsMCwwLDQ3LDAsMCwwLDM3LDAsMCwwLDEwMCwwLDAsMCw0NywwLDAsMCwzNywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDAsMCwwLDcyLDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDc3LDAsMCwwLDU4LDAsMCwwLDM3LDAsMCwwLDgzLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNyw5NywzMiwzNyw5OCwzMiwzNywxMDAsMzIsMzcsNzIsNTgsMzcsNzcsNTgsMzcsODMsMzIsMzcsODksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzNywwLDAsMCw5NywwLDAsMCwzMiwwLDAsMCwzNywwLDAsMCw5OCwwLDAsMCwzMiwwLDAsMCwzNywwLDAsMCwxMDAsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsNzIsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsODksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDM3LDczLDU4LDM3LDc3LDU4LDM3LDgzLDMyLDM3LDExMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMCwwLDAsNzMsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsNzcsMCwwLDAsNTgsMCwwLDAsMzcsMCwwLDAsODMsMCwwLDAsMzIsMCwwLDAsMzcsMCwwLDAsMTEyLDAsMCwwLDAsMCwwLDAsMTA4LDExMSw5OSw5NywxMDgsMTAxLDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsMCwwLDAsMCwwLDAsMCwzMiw1NiwwLDAsMTg4LDAsMCwwLDE4OSwwLDAsMCwxMzksMCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTQsMTA4LDExMSw5OSw5NywxMDgsMTAxLDUzLDEwMiw5Nyw5OSwxMDEsMTE2LDY5LDAsMCwwLDIyNCw4NSwwLDAsOCw1NiwwLDAsMTA0LDM4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDU2LDAsMCwxODgsMCwwLDAsMTkwLDAsMCwwLDEzOSwwLDAsMCwzOSwwLDAsMCwyMywwLDAsMCwyNCwwLDAsMCwyNSwwLDAsMCw0MywwLDAsMCw0MCwwLDAsMCw0NCwwLDAsMCw0MSwwLDAsMCw0NSwwLDAsMCwyNiwwLDAsMCw0MiwwLDAsMCwyNywwLDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1Myw5OSwxMTYsMTIxLDExMiwxMDEsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDk5LDExNiwxMjEsMTEyLDEwMSw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMTIwLDg0LDAsMCwxNDQsNTYsMCwwLDY0LDg2LDAsMCwxMjAsNTYsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNTYsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDUzLDk5LDExNiwxMjEsMTEyLDEwMSw3Myw5OSw2OSw2OSwwLDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwyMDgsNTYsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNTYsMCwwLDIsMCwwLDAsMCwwLDAsMCwxMjgsNTcsMCwwLDE4OCwwLDAsMCwxOTEsMCwwLDAsMTM5LDAsMCwwLDI0LDAsMCwwLDI1LDAsMCwwLDI4LDAsMCwwLDgwLDAsMCwwLDgxLDAsMCwwLDI5LDAsMCwwLDgyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTAwLDEwMSw5OSwxMTgsMTE2LDczLDk5LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDUwLDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsOTUsOTgsOTcsMTE1LDEwMSw2OSwwLDAsMTIwLDg0LDAsMCw5Niw1NywwLDAsNjQsODYsMCwwLDU2LDU3LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTIwLDU3LDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTAwLDEwMSw5OSwxMTgsMTE2LDczLDExOSw5OSw0OSw0OSw5NSw5NSwxMDksOTgsMTE1LDExNiw5NywxMTYsMTAxLDk1LDExNiw2OSw2OSwwLDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwxNjAsNTcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMjAsNTcsMCwwLDIsMCwwLDAsMCwwLDAsMCw2NCw1OCwwLDAsMTg4LDAsMCwwLDE5MiwwLDAsMCwxMzksMCwwLDAsMjYsMCwwLDAsMjcsMCwwLDAsMzAsMCwwLDAsODMsMCwwLDAsODQsMCwwLDAsMzEsMCwwLDAsODUsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsNzMsNjgsMTE1LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwyNCw1OCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDEyMCw1NywwLDAsMiwwLDAsMCwwLDAsMCwwLDE4NCw1OCwwLDAsMTg4LDAsMCwwLDE5MywwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDAsMTAxLDk5LDExOCwxMTYsNzMsNjgsMTA1LDk5LDQ5LDQ5LDk1LDk1LDEwOSw5OCwxMTUsMTE2LDk3LDExNiwxMDEsOTUsMTE2LDY5LDY5LDAsMCwwLDAsMCwwLDY0LDg2LDAsMCwxNDQsNTgsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMjAsNTcsMCwwLDIsMCwwLDAsMCwwLDAsMCw0OCw1OSwwLDAsMTg4LDAsMCwwLDE5NCwwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU0LDk1LDk1LDExMCw5NywxMTQsMTE0LDExMSwxMTksOTUsMTE2LDExMSw5NSwxMTcsMTE2LDEwMiw1Niw3Myw3NiwxMDYsNTEsNTAsNjksNjksNjksMCwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDgsNTksMCwwLDE4NCw1OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDE1Miw1OSwwLDAsMTg4LDAsMCwwLDE5NSwwLDAsMCwxMzksMCwwLDAsMjgsMCwwLDAsMjksMCwwLDAsMzIsMCwwLDAsODYsMCwwLDAsODcsMCwwLDAsMzMsMCwwLDAsODgsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDU1LDk1LDk1LDExOSwxMDUsMTAwLDEwMSwxMTAsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNywxMTYsMTAyLDU2LDczLDc2LDEwNiw1MSw1MCw2OSw2OSw2OSwwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDExMiw1OSwwLDAsMTg0LDU4LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMTAsMTE3LDEwOSwxMTIsMTE3LDExMCw5OSwxMTYsNzMsOTksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDE2OCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExMCwxMTcsMTA5LDExMiwxMTcsMTEwLDk5LDExNiw3MywxMTksNjksNjksMCwwLDAsMCwyMjQsODUsMCwwLDIwOCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU0LDEwOCwxMTEsOTksOTcsMTA4LDEwMSw1Myw5NSw5NSwxMDUsMTA5LDExMiw2OSwwLDAsMCwyMjQsODUsMCwwLDI0OCw1OSwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDk5LDExMSwxMDgsMTA4LDk3LDExNiwxMDEsNzMsOTksNjksNjksMCwwLDAsMCwwLDIyNCw4NSwwLDAsMzIsNjAsMCwwLDMyLDU2LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSw5OSwxMTEsMTA4LDEwOCw5NywxMTYsMTAxLDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMjI0LDg1LDAsMCw3Miw2MCwwLDAsMzIsNTYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDEwOSwxMTEsMTEwLDEwMSwxMjEsMTEyLDExNywxMTAsOTksMTE2LDczLDk5LDc2LDk4LDQ4LDY5LDY5LDY5LDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMTIwLDg0LDAsMCwxNDQsNjAsMCwwLDY0LDg2LDAsMCwxMTIsNjAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjAsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ4LDEwOSwxMTEsMTEwLDEwMSwxMjEsMTEyLDExNywxMTAsOTksMTE2LDczLDk5LDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDAsMCw2NCw4NiwwLDAsMjA4LDYwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTY4LDYwLDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OCwxMDksMTExLDExMCwxMDEsMTIxLDExMiwxMTcsMTEwLDk5LDExNiw3MywxMTksNzYsOTgsNDgsNjksNjksNjksMCwwLDAsMCwwLDY0LDg2LDAsMCwxNiw2MSwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDE2OCw2MCwwLDAsMiwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsMTA5LDExMSwxMTAsMTAxLDEyMSwxMTIsMTE3LDExMCw5OSwxMTYsNzMsMTE5LDc2LDk4LDQ5LDY5LDY5LDY5LDAsMCwwLDAsMCw2NCw4NiwwLDAsODAsNjEsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjAsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExNiwxMDUsMTA5LDEwMSw5NSwxMDMsMTAxLDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTE2LDEwNSwxMDksMTAxLDk1LDk4LDk3LDExNSwxMDEsNjksMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyMTYsNjEsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTYsMTA1LDEwOSwxMDEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTUsMTE1LDExNiwxMTEsMTE0LDk3LDEwMywxMDEsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDI0OCw2MSwwLDAsNjQsODYsMCwwLDE0NCw2MSwwLDAsMCwwLDAsMCwzLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDI0MCw2MSwwLDAsMiwwLDAsMCwzMiw2MiwwLDAsMCw4LDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTYsMTE2LDEwNSwxMDksMTAxLDk1LDEwMywxMDEsMTE2LDczLDExOSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1MCw0OCw5NSw5NSwxMTYsMTA1LDEwOSwxMDEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTUsMTE1LDExNiwxMTEsMTE0LDk3LDEwMywxMDEsNzMsMTE5LDY5LDY5LDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwxNTIsNjIsMCwwLDY0LDg2LDAsMCw4MCw2MiwwLDAsMCwwLDAsMCwzLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDI0MCw2MSwwLDAsMiwwLDAsMCwxOTIsNjIsMCwwLDAsOCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU2LDExNiwxMDUsMTA5LDEwMSw5NSwxMTIsMTE3LDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNDgsOTUsOTUsMTE2LDEwNSwxMDksMTAxLDk1LDExMiwxMTcsMTE2LDY5LDAsMCwwLDAsMTIwLDg0LDAsMCw1Niw2MywwLDAsNjQsODYsMCwwLDI0MCw2MiwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDgwLDYzLDAsMCwwLDgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMTYsMTA1LDEwOSwxMDEsOTUsMTEyLDExNywxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDAsNjQsODYsMCwwLDEyMCw2MywwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDgwLDYzLDAsMCwwLDgsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTUsNzMsOTksNjksNjksMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNDksNTEsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE1LDk1LDk4LDk3LDExNSwxMDEsNjksMCwxMjAsODQsMCwwLDI0OCw2MywwLDAsNjQsODYsMCwwLDIyNCw2MywwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDE2LDY0LDAsMCwyLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTUsNzMsMTE5LDY5LDY5LDAsMCwwLDAsNjQsODYsMCwwLDU2LDY0LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMTYsNjQsMCwwLDIsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDEwMywxMDEsMTE2LDczLDk5LDc4LDgzLDk1LDQ5LDU3LDEwNSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDEwMywxMDEsMTE2LDczLDk5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Miw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDIwOCw2NCwwLDAsNjQsODYsMCwwLDE4NCw2NCwwLDAsMCwwLDAsMCwxLDAsMCwwLDI0MCw2NCwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsMTEyLDY0LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsMjQ4LDY0LDAsMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw3MywxMTksNzgsODMsOTUsNDksNTcsMTA1LDExNSwxMTYsMTE0LDEwMSw5NywxMDksOTgsMTE3LDEwMiw5NSwxMDUsMTE2LDEwMSwxMTQsOTcsMTE2LDExMSwxMTQsNzMsMTE5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3MywxMTksNjksNjksNjksNjksNjksNjksMCwwLDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw1Nyw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMDMsMTAxLDExNiw3MywxMTksNjksNjksMCwwLDAsNjQsODYsMCwwLDEyMCw2NSwwLDAsMCwwLDAsMCwxLDAsMCwwLDI0MCw2NCwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsNDgsNjUsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNDQsNjUsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDk5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDk5LDc4LDgzLDk1LDQ5LDQ5LDk5LDEwNCw5NywxMTQsOTUsMTE2LDExNCw5NywxMDUsMTE2LDExNSw3Myw5OSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDk5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw1Miw5NSw5NSwxMTAsMTE3LDEwOSw5NSwxMTIsMTE3LDExNiw5NSw5OCw5NywxMTUsMTAxLDY5LDAsMCwwLDAsMCwwLDAsMCwxMjAsODQsMCwwLDQwLDY2LDAsMCw2NCw4NiwwLDAsMTYsNjYsMCwwLDAsMCwwLDAsMSwwLDAsMCw3Miw2NiwwLDAsMCwwLDAsMCw2NCw4NiwwLDAsMjAwLDY1LDAsMCwwLDAsMCwwLDIsMCwwLDAsMzIsNTYsMCwwLDIsMCwwLDAsODAsNjYsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDExOSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3MywxMTksNzgsODMsOTUsNDksNDksOTksMTA0LDk3LDExNCw5NSwxMTYsMTE0LDk3LDEwNSwxMTYsMTE1LDczLDExOSw2OSw2OSw2OSw2OSw2OSw2OSwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDk1LDk1LDExMCwxMTcsMTA5LDk1LDExMiwxMTcsMTE2LDczLDExOSw2OSw2OSwwLDAsMCw2NCw4NiwwLDAsMjA4LDY2LDAsMCwwLDAsMCwwLDEsMCwwLDAsNzIsNjYsMCwwLDAsMCwwLDAsNjQsODYsMCwwLDEzNiw2NiwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDIzMiw2NiwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSwxMDMsMTAxLDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMDUsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMTA0LDY3LDAsMCw2NCw4NiwwLDAsMzIsNjcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxMzYsNjcsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTAzLDEwMSwxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDEwNSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OSw5NSw5NSwxMDksMTExLDExMCwxMDEsMTIxLDk1LDEwMywxMDEsMTE2LDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyNDgsNjcsMCwwLDY0LDg2LDAsMCwxNzYsNjcsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwyNCw2OCwwLDAsMCwwLDAsMCw3OCw4MywxMTYsNTEsOTUsOTUsNDksNTcsMTA5LDExMSwxMTAsMTAxLDEyMSw5NSwxMTIsMTE3LDExNiw3Myw5OSw3OCw4Myw5NSw0OSw1NywxMTEsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSw5OCwxMTcsMTAyLDk1LDEwNSwxMTYsMTAxLDExNCw5NywxMTYsMTExLDExNCw3Myw5OSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsOTksNjksNjksNjksNjksNjksNjksMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDQ5LDQ5LDk1LDk1LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTEyLDExNywxMTYsNzMsOTksNjksNjksMCwwLDAsMCwwLDAsMCwwLDEyMCw4NCwwLDAsMTM2LDY4LDAsMCw2NCw4NiwwLDAsNjQsNjgsMCwwLDAsMCwwLDAsMiwwLDAsMCwzMiw1NiwwLDAsMiwwLDAsMCwxNjgsNjgsMCwwLDAsMCwwLDAsNzgsODMsMTE2LDUxLDk1LDk1LDQ5LDU3LDEwOSwxMTEsMTEwLDEwMSwxMjEsOTUsMTEyLDExNywxMTYsNzMsMTE5LDc4LDgzLDk1LDQ5LDU3LDExMSwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDk4LDExNywxMDIsOTUsMTA1LDExNiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDczLDExOSw3OCw4Myw5NSw0OSw0OSw5OSwxMDQsOTcsMTE0LDk1LDExNiwxMTQsOTcsMTA1LDExNiwxMTUsNzMsMTE5LDY5LDY5LDY5LDY5LDY5LDY5LDAsMCwwLDc4LDgzLDExNiw1MSw5NSw5NSw0OSw0OSw0OSw5NSw5NSwxMDksMTExLDExMCwxMDEsMTIxLDk1LDExMiwxMTcsMTE2LDczLDExOSw2OSw2OSwwLDAsMCwwLDAsMCwwLDAsMTIwLDg0LDAsMCwyNCw2OSwwLDAsNjQsODYsMCwwLDIwOCw2OCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMyLDU2LDAsMCwyLDAsMCwwLDU2LDY5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY1LDAsMCwwLDc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MCwwLDAsMCw3NywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY1LDc3LDAsMCwwLDAsMCwwLDgwLDc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NCwwLDAsMCw5NywwLDAsMCwxMTAsMCwwLDAsMTE3LDAsMCwwLDk3LDAsMCwwLDExNCwwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw3MCwwLDAsMCwxMDEsMCwwLDAsOTgsMCwwLDAsMTE0LDAsMCwwLDExNywwLDAsMCw5NywwLDAsMCwxMTQsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NywwLDAsMCw5NywwLDAsMCwxMTQsMCwwLDAsOTksMCwwLDAsMTA0LDAsMCwwLDAsMCwwLDAsNjUsMCwwLDAsMTEyLDAsMCwwLDExNCwwLDAsMCwxMDUsMCwwLDAsMTA4LDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwxMDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDc0LDAsMCwwLDExNywwLDAsMCwxMDgsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2NSwwLDAsMCwxMTcsMCwwLDAsMTAzLDAsMCwwLDExNywwLDAsMCwxMTUsMCwwLDAsMTE2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCwxMDEsMCwwLDAsMTEyLDAsMCwwLDExNiwwLDAsMCwxMDEsMCwwLDAsMTA5LDAsMCwwLDk4LDAsMCwwLDEwMSwwLDAsMCwxMTQsMCwwLDAsMCwwLDAsMCw3OSwwLDAsMCw5OSwwLDAsMCwxMTYsMCwwLDAsMTExLDAsMCwwLDk4LDAsMCwwLDEwMSwwLDAsMCwxMTQsMCwwLDAsMCwwLDAsMCw3OCwwLDAsMCwxMTEsMCwwLDAsMTE4LDAsMCwwLDEwMSwwLDAsMCwxMDksMCwwLDAsOTgsMCwwLDAsMTAxLDAsMCwwLDExNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNjgsMCwwLDAsMTAxLDAsMCwwLDk5LDAsMCwwLDEwMSwwLDAsMCwxMDksMCwwLDAsOTgsMCwwLDAsMTAxLDAsMCwwLDExNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsOTcsMCwwLDAsMTEwLDAsMCwwLDAsMCwwLDAsNzAsMCwwLDAsMTAxLDAsMCwwLDk4LDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsOTcsMCwwLDAsMTE0LDAsMCwwLDAsMCwwLDAsNjVdLCJpOCIsQUxMT0NfTk9ORSxSdW50aW1lLkdMT0JBTF9CQVNFKzkzMjQpO2FsbG9jYXRlKFsxMTIsMCwwLDAsMTE0LDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsNzQsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwwLDAsMCwwLDc0LDAsMCwwLDExNywwLDAsMCwxMDgsMCwwLDAsMCwwLDAsMCw2NSwwLDAsMCwxMTcsMCwwLDAsMTAzLDAsMCwwLDAsMCwwLDAsODMsMCwwLDAsMTAxLDAsMCwwLDExMiwwLDAsMCwwLDAsMCwwLDc5LDAsMCwwLDk5LDAsMCwwLDExNiwwLDAsMCwwLDAsMCwwLDc4LDAsMCwwLDExMSwwLDAsMCwxMTgsMCwwLDAsMCwwLDAsMCw2OCwwLDAsMCwxMDEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzQsOTcsMTEwLDExNyw5NywxMTQsMTIxLDAsNzAsMTAxLDk4LDExNCwxMTcsOTcsMTE0LDEyMSwwLDAsMCwwLDAsMCwwLDAsNzcsOTcsMTE0LDk5LDEwNCwwLDAsMCw2NSwxMTIsMTE0LDEwNSwxMDgsMCwwLDAsNzcsOTcsMTIxLDAsMCwwLDAsMCw3NCwxMTcsMTEwLDEwMSwwLDAsMCwwLDc0LDExNywxMDgsMTIxLDAsMCwwLDAsNjUsMTE3LDEwMywxMTcsMTE1LDExNiwwLDAsODMsMTAxLDExMiwxMTYsMTAxLDEwOSw5OCwxMDEsMTE0LDAsMCwwLDAsMCwwLDAsNzksOTksMTE2LDExMSw5OCwxMDEsMTE0LDAsNzgsMTExLDExOCwxMDEsMTA5LDk4LDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDY4LDEwMSw5OSwxMDEsMTA5LDk4LDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDc0LDk3LDExMCwwLDAsMCwwLDAsNzAsMTAxLDk4LDAsMCwwLDAsMCw3Nyw5NywxMTQsMCwwLDAsMCwwLDY1LDExMiwxMTQsMCwwLDAsMCwwLDc0LDExNywxMTAsMCwwLDAsMCwwLDc0LDExNywxMDgsMCwwLDAsMCwwLDY1LDExNywxMDMsMCwwLDAsMCwwLDgzLDEwMSwxMTIsMCwwLDAsMCwwLDc5LDk5LDExNiwwLDAsMCwwLDAsNzgsMTExLDExOCwwLDAsMCwwLDAsNjgsMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMCwwLDAsMTE3LDAsMCwwLDExMCwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3NywwLDAsMCwxMTEsMCwwLDAsMTEwLDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDg0LDAsMCwwLDExNywwLDAsMCwxMDEsMCwwLDAsMTE1LDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw4NywwLDAsMCwxMDEsMCwwLDAsMTAwLDAsMCwwLDExMCwwLDAsMCwxMDEsMCwwLDAsMTE1LDAsMCwwLDEwMCwwLDAsMCw5NywwLDAsMCwxMjEsMCwwLDAsMCwwLDAsMCw4NCwwLDAsMCwxMDQsMCwwLDAsMTE3LDAsMCwwLDExNCwwLDAsMCwxMTUsMCwwLDAsMTAwLDAsMCwwLDk3LDAsMCwwLDEyMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzAsMCwwLDAsMTE0LDAsMCwwLDEwNSwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCw5NywwLDAsMCwxMTYsMCwwLDAsMTE3LDAsMCwwLDExNCwwLDAsMCwxMDAsMCwwLDAsOTcsMCwwLDAsMTIxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCwxMTcsMCwwLDAsMTEwLDAsMCwwLDAsMCwwLDAsNzcsMCwwLDAsMTExLDAsMCwwLDExMCwwLDAsMCwwLDAsMCwwLDg0LDAsMCwwLDExNywwLDAsMCwxMDEsMCwwLDAsMCwwLDAsMCw4NywwLDAsMCwxMDEsMCwwLDAsMTAwLDAsMCwwLDAsMCwwLDAsODQsMCwwLDAsMTA0LDAsMCwwLDExNywwLDAsMCwwLDAsMCwwLDcwLDAsMCwwLDExNCwwLDAsMCwxMDUsMCwwLDAsMCwwLDAsMCw4MywwLDAsMCw5NywwLDAsMCwxMTYsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMTE3LDExMCwxMDAsOTcsMTIxLDAsMCw3NywxMTEsMTEwLDEwMCw5NywxMjEsMCwwLDg0LDExNywxMDEsMTE1LDEwMCw5NywxMjEsMCw4NywxMDEsMTAwLDExMCwxMDEsMTE1LDEwMCw5NywxMjEsMCwwLDAsMCwwLDAsMCw4NCwxMDQsMTE3LDExNCwxMTUsMTAwLDk3LDEyMSwwLDAsMCwwLDAsMCwwLDAsNzAsMTE0LDEwNSwxMDAsOTcsMTIxLDAsMCw4Myw5NywxMTYsMTE3LDExNCwxMDAsOTcsMTIxLDAsMCwwLDAsMCwwLDAsMCw4MywxMTcsMTEwLDAsMCwwLDAsMCw3NywxMTEsMTEwLDAsMCwwLDAsMCw4NCwxMTcsMTAxLDAsMCwwLDAsMCw4NywxMDEsMTAwLDAsMCwwLDAsMCw4NCwxMDQsMTE3LDAsMCwwLDAsMCw3MCwxMTQsMTA1LDAsMCwwLDAsMCw4Myw5NywxMTYsMCwwLDAsMCwwLDIsMCwwLDE5MiwzLDAsMCwxOTIsNCwwLDAsMTkyLDUsMCwwLDE5Miw2LDAsMCwxOTIsNywwLDAsMTkyLDgsMCwwLDE5Miw5LDAsMCwxOTIsMTAsMCwwLDE5MiwxMSwwLDAsMTkyLDEyLDAsMCwxOTIsMTMsMCwwLDE5MiwxNCwwLDAsMTkyLDE1LDAsMCwxOTIsMTYsMCwwLDE5MiwxNywwLDAsMTkyLDE4LDAsMCwxOTIsMTksMCwwLDE5MiwyMCwwLDAsMTkyLDIxLDAsMCwxOTIsMjIsMCwwLDE5MiwyMywwLDAsMTkyLDI0LDAsMCwxOTIsMjUsMCwwLDE5MiwyNiwwLDAsMTkyLDI3LDAsMCwxOTIsMjgsMCwwLDE5MiwyOSwwLDAsMTkyLDMwLDAsMCwxOTIsMzEsMCwwLDE5MiwwLDAsMCwxNzksMSwwLDAsMTk1LDIsMCwwLDE5NSwzLDAsMCwxOTUsNCwwLDAsMTk1LDUsMCwwLDE5NSw2LDAsMCwxOTUsNywwLDAsMTk1LDgsMCwwLDE5NSw5LDAsMCwxOTUsMTAsMCwwLDE5NSwxMSwwLDAsMTk1LDEyLDAsMCwxOTUsMTMsMCwwLDIxMSwxNCwwLDAsMTk1LDE1LDAsMCwxOTUsMCwwLDEyLDE4NywxLDAsMTIsMTk1LDIsMCwxMiwxOTUsMywwLDEyLDE5NSw0LDAsMTIsMjExLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEyOCw4MywwLDAsMTk2LDAsMCwwLDE5NywwLDAsMCw4OSwwLDAsMCwwLDAsMCwwLDExNSwxMTYsMTAwLDU4LDU4LDk4LDk3LDEwMCw5NSw5OSw5NywxMTUsMTE2LDAsMCwwLDgzLDExNiw1NywxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDAsMCwwLDAsMTIwLDg0LDAsMCw4OCw4MywwLDAsODMsMTE2LDU2LDk4LDk3LDEwMCw5NSw5OSw5NywxMTUsMTE2LDAsMCwwLDAsMCwyMjQsODUsMCwwLDExMiw4MywwLDAsMCwwLDAsMCwwLDAsMCwwLDc4LDQ5LDQ4LDk1LDk1LDk5LDEyMCwxMjAsOTcsOTgsMTA1LDExOCw0OSw0OSw1NCw5NSw5NSwxMTUsMTA0LDEwNSwxMDksOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDAsMjI0LDg1LDAsMCwxNDQsODMsMCwwLDEwNCw4MywwLDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNDksNTUsOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsMjAwLDgzLDAsMCwxODQsODMsMCwwLDAsMCwwLDAsNzgsNDksNDgsOTUsOTUsOTksMTIwLDEyMCw5Nyw5OCwxMDUsMTE4LDQ5LDQ5LDU3LDk1LDk1LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCw5NSwxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDY5LDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNDksNTUsOTUsOTUsMTEyLDk4LDk3LDExNSwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwwLDAsMCwwLDIyNCw4NSwwLDAsNDAsODQsMCwwLDE4NCw4MywwLDAsMCwwLDAsMCwyMjQsODUsMCwwLDAsODQsMCwwLDgwLDg0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQwLDgzLDAsMCwxOTgsMCwwLDAsMTk5LDAsMCwwLDIwMCwwLDAsMCwyMDEsMCwwLDAsNDMsMCwwLDAsMzUsMCwwLDAsMjIsMCwwLDAsMjcsMCwwLDAsMCwwLDAsMCw5Niw4NCwwLDAsMTk4LDAsMCwwLDIwMiwwLDAsMCwyMDAsMCwwLDAsMjAxLDAsMCwwLDQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDg1LDAsMCwxOTgsMCwwLDAsMjAzLDAsMCwwLDIwMCwwLDAsMCwyMDEsMCwwLDAsNDUsMCwwLDAsMCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNTEsOTUsOTUsMTAyLDExNywxMTAsMTAwLDk3LDEwOSwxMDEsMTEwLDExNiw5NywxMDgsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDIyNCw4NSwwLDAsMjE2LDg0LDAsMCwxODQsODMsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwxMTIsMTcsMCwwLDY4LDExMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDI0LDg1LDAsMCw5OCwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsNDAsODUsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCw1Niw4NSwwLDAsMTA0LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCw3Miw4NSwwLDAsOTcsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDg4LDg1LDAsMCwxOTIsODQsMCwwLDEyOCwxNywwLDAsMTkyLDg0LDAsMCwxMjAsMTcsMCwwLDEwNSwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsMTIwLDg1LDAsMCwxMDYsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDEzNiw4NSwwLDAsMTA4LDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwxNTIsODUsMCwwLDEwOSwwLDAsMCwwLDAsMCwwLDE5Miw4NCwwLDAsMTY4LDg1LDAsMCwxMDIsMCwwLDAsMCwwLDAsMCwxOTIsODQsMCwwLDE4NCw4NSwwLDAsMTAwLDAsMCwwLDAsMCwwLDAsMTkyLDg0LDAsMCwyMDAsODUsMCwwLDAsMCwwLDAsNDAsODYsMCwwLDE5OCwwLDAsMCwyMDQsMCwwLDAsMjAwLDAsMCwwLDIwMSwwLDAsMCw0MywwLDAsMCwzNiwwLDAsMCwyMywwLDAsMCwyOCwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNDgsOTUsOTUsMTE1LDEwNSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSwxMTYsMTIxLDExMiwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDY5LDAsMCwwLDAsMjI0LDg1LDAsMCwwLDg2LDAsMCwyNDAsODMsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMzYsODYsMCwwLDE5OCwwLDAsMCwyMDUsMCwwLDAsMjAwLDAsMCwwLDIwMSwwLDAsMCw0MywwLDAsMCwzNywwLDAsMCwyNCwwLDAsMCwyOSwwLDAsMCw3OCw0OSw0OCw5NSw5NSw5OSwxMjAsMTIwLDk3LDk4LDEwNSwxMTgsNDksNTAsNDksOTUsOTUsMTE4LDEwOSwxMDUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsMTE2LDEyMSwxMTIsMTAxLDk1LDEwNSwxMTAsMTAyLDExMSw2OSwwLDAsMCwyMjQsODUsMCwwLDk2LDg2LDAsMCwyNDAsODMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMDAsODgsMCwwLDIwNiwwLDAsMCwyMDcsMCwwLDAsOTAsMCwwLDAsMCwwLDAsMCwxMTUsMTE2LDEwMCw1OCw1OCw5OCw5NywxMDAsOTUsOTcsMTA4LDEwOCwxMTEsOTksMCwwLDgzLDExNiw1Nyw5OCw5NywxMDAsOTUsOTcsMTA4LDEwOCwxMTEsOTksMCwwLDAsMCwyMjQsODUsMCwwLDE4NCw4OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwwLDEsMiwzLDQsNSw2LDcsOCw5LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMCwwLDAsMCwwLDAsMCwwLDEsMiw0LDcsMyw2LDUsMCwwLDAsMCwwLDAsMCwwLDEwNSwxMTAsMTAyLDEwNSwxMTAsMTA1LDExNiwxMjEsMCwwLDAsMCwwLDAsMCwwLDExMCw5NywxMTAsMCwwLDAsMCwwLDk1LDExMiwxMzcsMCwyNTUsOSw0NywxNSwxMCwwLDAsMCwxMDAsMCwwLDAsMjMyLDMsMCwwLDE2LDM5LDAsMCwxNjAsMTM0LDEsMCw2NCw2NiwxNSwwLDEyOCwxNTAsMTUyLDAsMCwyMjUsMjQ1LDVdLCJpOCIsQUxMT0NfTk9ORSxSdW50aW1lLkdMT0JBTF9CQVNFKzE5NTY0KTt2YXIgdGVtcERvdWJsZVB0cj1SdW50aW1lLmFsaWduTWVtb3J5KGFsbG9jYXRlKDEyLCJpOCIsQUxMT0NfU1RBVElDKSw4KTthc3NlcnQodGVtcERvdWJsZVB0ciU4PT0wKTtmdW5jdGlvbiBjb3B5VGVtcEZsb2F0KHB0cil7SEVBUDhbdGVtcERvdWJsZVB0cl09SEVBUDhbcHRyXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzFdPUhFQVA4W3B0cisxXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzJdPUhFQVA4W3B0cisyXTtIRUFQOFt0ZW1wRG91YmxlUHRyKzNdPUhFQVA4W3B0ciszXX1mdW5jdGlvbiBjb3B5VGVtcERvdWJsZShwdHIpe0hFQVA4W3RlbXBEb3VibGVQdHJdPUhFQVA4W3B0cl07SEVBUDhbdGVtcERvdWJsZVB0cisxXT1IRUFQOFtwdHIrMV07SEVBUDhbdGVtcERvdWJsZVB0cisyXT1IRUFQOFtwdHIrMl07SEVBUDhbdGVtcERvdWJsZVB0ciszXT1IRUFQOFtwdHIrM107SEVBUDhbdGVtcERvdWJsZVB0cis0XT1IRUFQOFtwdHIrNF07SEVBUDhbdGVtcERvdWJsZVB0cis1XT1IRUFQOFtwdHIrNV07SEVBUDhbdGVtcERvdWJsZVB0cis2XT1IRUFQOFtwdHIrNl07SEVBUDhbdGVtcERvdWJsZVB0cis3XT1IRUFQOFtwdHIrN119ZnVuY3Rpb24gX2F0ZXhpdChmdW5jLGFyZyl7X19BVEVYSVRfXy51bnNoaWZ0KHtmdW5jOmZ1bmMsYXJnOmFyZ30pfXZhciBfX19jeGFfYXRleGl0PV9hdGV4aXQ7TW9kdWxlWyJfaTY0U3VidHJhY3QiXT1faTY0U3VidHJhY3Q7TW9kdWxlWyJfaTY0QWRkIl09X2k2NEFkZDtmdW5jdGlvbiBfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udigpe3JldHVybiEhX19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYudW5jYXVnaHRfZXhjZXB0aW9ufWZ1bmN0aW9uIF9fX2N4YV9pc19udW1iZXJfdHlwZSh0eXBlKXt2YXIgaXNOdW1iZXI9ZmFsc2U7dHJ5e2lmKHR5cGU9PV9fWlRJaSlpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElqKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWwpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJbSlpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVEl4KWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSXkpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJZilpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElkKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWUpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJYylpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVElhKWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXRyeXtpZih0eXBlPT1fX1pUSWgpaXNOdW1iZXI9dHJ1ZX1jYXRjaChlKXt9dHJ5e2lmKHR5cGU9PV9fWlRJcylpc051bWJlcj10cnVlfWNhdGNoKGUpe310cnl7aWYodHlwZT09X19aVEl0KWlzTnVtYmVyPXRydWV9Y2F0Y2goZSl7fXJldHVybiBpc051bWJlcn1mdW5jdGlvbiBfX19jeGFfZG9lc19pbmhlcml0KGRlZmluaXRlVHlwZSxwb3NzaWJpbGl0eVR5cGUscG9zc2liaWxpdHkpe2lmKHBvc3NpYmlsaXR5PT0wKXJldHVybiBmYWxzZTtpZihwb3NzaWJpbGl0eVR5cGU9PTB8fHBvc3NpYmlsaXR5VHlwZT09ZGVmaW5pdGVUeXBlKXJldHVybiB0cnVlO3ZhciBwb3NzaWJpbGl0eV90eXBlX2luZm87aWYoX19fY3hhX2lzX251bWJlcl90eXBlKHBvc3NpYmlsaXR5VHlwZSkpe3Bvc3NpYmlsaXR5X3R5cGVfaW5mbz1wb3NzaWJpbGl0eVR5cGV9ZWxzZXt2YXIgcG9zc2liaWxpdHlfdHlwZV9pbmZvQWRkcj1IRUFQMzJbcG9zc2liaWxpdHlUeXBlPj4yXS04O3Bvc3NpYmlsaXR5X3R5cGVfaW5mbz1IRUFQMzJbcG9zc2liaWxpdHlfdHlwZV9pbmZvQWRkcj4+Ml19c3dpdGNoKHBvc3NpYmlsaXR5X3R5cGVfaW5mbyl7Y2FzZSAwOnZhciBkZWZpbml0ZV90eXBlX2luZm9BZGRyPUhFQVAzMltkZWZpbml0ZVR5cGU+PjJdLTg7dmFyIGRlZmluaXRlX3R5cGVfaW5mbz1IRUFQMzJbZGVmaW5pdGVfdHlwZV9pbmZvQWRkcj4+Ml07aWYoZGVmaW5pdGVfdHlwZV9pbmZvPT0wKXt2YXIgZGVmUG9pbnRlckJhc2VBZGRyPWRlZmluaXRlVHlwZSs4O3ZhciBkZWZQb2ludGVyQmFzZVR5cGU9SEVBUDMyW2RlZlBvaW50ZXJCYXNlQWRkcj4+Ml07dmFyIHBvc3NQb2ludGVyQmFzZUFkZHI9cG9zc2liaWxpdHlUeXBlKzg7dmFyIHBvc3NQb2ludGVyQmFzZVR5cGU9SEVBUDMyW3Bvc3NQb2ludGVyQmFzZUFkZHI+PjJdO3JldHVybiBfX19jeGFfZG9lc19pbmhlcml0KGRlZlBvaW50ZXJCYXNlVHlwZSxwb3NzUG9pbnRlckJhc2VUeXBlLHBvc3NpYmlsaXR5KX1lbHNlIHJldHVybiBmYWxzZTtjYXNlIDE6cmV0dXJuIGZhbHNlO2Nhc2UgMjp2YXIgcGFyZW50VHlwZUFkZHI9cG9zc2liaWxpdHlUeXBlKzg7dmFyIHBhcmVudFR5cGU9SEVBUDMyW3BhcmVudFR5cGVBZGRyPj4yXTtyZXR1cm4gX19fY3hhX2RvZXNfaW5oZXJpdChkZWZpbml0ZVR5cGUscGFyZW50VHlwZSxwb3NzaWJpbGl0eSk7ZGVmYXVsdDpyZXR1cm4gZmFsc2V9fXZhciBfX19jeGFfbGFzdF90aHJvd25fZXhjZXB0aW9uPTA7ZnVuY3Rpb24gX19fcmVzdW1lRXhjZXB0aW9uKHB0cil7TW9kdWxlLnByaW50KCJSZXN1bWluZyBleGNlcHRpb24iKTtpZighX19fY3hhX2xhc3RfdGhyb3duX2V4Y2VwdGlvbil7X19fY3hhX2xhc3RfdGhyb3duX2V4Y2VwdGlvbj1wdHJ9dGhyb3cgcHRyfXZhciBfX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplPTg7ZnVuY3Rpb24gX19fY3hhX2ZpbmRfbWF0Y2hpbmdfY2F0Y2godGhyb3duLHRocm93bnR5cGUpe2lmKHRocm93bj09LTEpdGhyb3duPV9fX2N4YV9sYXN0X3Rocm93bl9leGNlcHRpb247aGVhZGVyPXRocm93bi1fX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplO2lmKHRocm93bnR5cGU9PS0xKXRocm93bnR5cGU9SEVBUDMyW2hlYWRlcj4+Ml07dmFyIHR5cGVBcnJheT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7aWYodGhyb3dudHlwZSE9MCYmIV9fX2N4YV9pc19udW1iZXJfdHlwZSh0aHJvd250eXBlKSl7dmFyIHRocm93bnR5cGVJbmZvQWRkcj1IRUFQMzJbdGhyb3dudHlwZT4+Ml0tODt2YXIgdGhyb3dudHlwZUluZm89SEVBUDMyW3Rocm93bnR5cGVJbmZvQWRkcj4+Ml07aWYodGhyb3dudHlwZUluZm89PTApdGhyb3duPUhFQVAzMlt0aHJvd24+PjJdfWZvcih2YXIgaT0wO2k8dHlwZUFycmF5Lmxlbmd0aDtpKyspe2lmKF9fX2N4YV9kb2VzX2luaGVyaXQodHlwZUFycmF5W2ldLHRocm93bnR5cGUsdGhyb3duKSlyZXR1cm4oYXNtWyJzZXRUZW1wUmV0MCJdKHR5cGVBcnJheVtpXSksdGhyb3duKXwwfXJldHVybihhc21bInNldFRlbXBSZXQwIl0odGhyb3dudHlwZSksdGhyb3duKXwwfWZ1bmN0aW9uIF9fX2N4YV90aHJvdyhwdHIsdHlwZSxkZXN0cnVjdG9yKXtpZighX19fY3hhX3Rocm93LmluaXRpYWxpemVkKXt0cnl7SEVBUDMyW19fWlRWTjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0U+PjJdPTB9Y2F0Y2goZSl7fXRyeXtIRUFQMzJbX19aVFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0U+PjJdPTF9Y2F0Y2goZSl7fXRyeXtIRUFQMzJbX19aVFZOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0U+PjJdPTJ9Y2F0Y2goZSl7fV9fX2N4YV90aHJvdy5pbml0aWFsaXplZD10cnVlfU1vZHVsZS5wcmludEVycigiQ29tcGlsZWQgY29kZSB0aHJvd2luZyBhbiBleGNlcHRpb24sICIrW3B0cix0eXBlLGRlc3RydWN0b3JdKyIsIGF0ICIrc3RhY2tUcmFjZSgpKTt2YXIgaGVhZGVyPXB0ci1fX19jeGFfZXhjZXB0aW9uX2hlYWRlcl9zaXplO0hFQVAzMltoZWFkZXI+PjJdPXR5cGU7SEVBUDMyW2hlYWRlcis0Pj4yXT1kZXN0cnVjdG9yO19fX2N4YV9sYXN0X3Rocm93bl9leGNlcHRpb249cHRyO2lmKCEoInVuY2F1Z2h0X2V4Y2VwdGlvbiJpbiBfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udikpe19fWlN0MTh1bmNhdWdodF9leGNlcHRpb252LnVuY2F1Z2h0X2V4Y2VwdGlvbj0xfWVsc2V7X19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYudW5jYXVnaHRfZXhjZXB0aW9uKyt9dGhyb3cgcHRyfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Jvb2woKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfYm9vbCIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfcHRocmVhZF9tdXRleF9sb2NrKCl7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF9zdHJpbmcoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZyIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZygpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZyIpO2Fib3J0KC0xKX12YXIgRVJSTk9fQ09ERVM9e0VQRVJNOjEsRU5PRU5UOjIsRVNSQ0g6MyxFSU5UUjo0LEVJTzo1LEVOWElPOjYsRTJCSUc6NyxFTk9FWEVDOjgsRUJBREY6OSxFQ0hJTEQ6MTAsRUFHQUlOOjExLEVXT1VMREJMT0NLOjExLEVOT01FTToxMixFQUNDRVM6MTMsRUZBVUxUOjE0LEVOT1RCTEs6MTUsRUJVU1k6MTYsRUVYSVNUOjE3LEVYREVWOjE4LEVOT0RFVjoxOSxFTk9URElSOjIwLEVJU0RJUjoyMSxFSU5WQUw6MjIsRU5GSUxFOjIzLEVNRklMRToyNCxFTk9UVFk6MjUsRVRYVEJTWToyNixFRkJJRzoyNyxFTk9TUEM6MjgsRVNQSVBFOjI5LEVST0ZTOjMwLEVNTElOSzozMSxFUElQRTozMixFRE9NOjMzLEVSQU5HRTozNCxFTk9NU0c6NDIsRUlEUk06NDMsRUNIUk5HOjQ0LEVMMk5TWU5DOjQ1LEVMM0hMVDo0NixFTDNSU1Q6NDcsRUxOUk5HOjQ4LEVVTkFUQ0g6NDksRU5PQ1NJOjUwLEVMMkhMVDo1MSxFREVBRExLOjM1LEVOT0xDSzozNyxFQkFERTo1MixFQkFEUjo1MyxFWEZVTEw6NTQsRU5PQU5POjU1LEVCQURSUUM6NTYsRUJBRFNMVDo1NyxFREVBRExPQ0s6MzUsRUJGT05UOjU5LEVOT1NUUjo2MCxFTk9EQVRBOjYxLEVUSU1FOjYyLEVOT1NSOjYzLEVOT05FVDo2NCxFTk9QS0c6NjUsRVJFTU9URTo2NixFTk9MSU5LOjY3LEVBRFY6NjgsRVNSTU5UOjY5LEVDT01NOjcwLEVQUk9UTzo3MSxFTVVMVElIT1A6NzIsRURPVERPVDo3MyxFQkFETVNHOjc0LEVOT1RVTklROjc2LEVCQURGRDo3NyxFUkVNQ0hHOjc4LEVMSUJBQ0M6NzksRUxJQkJBRDo4MCxFTElCU0NOOjgxLEVMSUJNQVg6ODIsRUxJQkVYRUM6ODMsRU5PU1lTOjM4LEVOT1RFTVBUWTozOSxFTkFNRVRPT0xPTkc6MzYsRUxPT1A6NDAsRU9QTk9UU1VQUDo5NSxFUEZOT1NVUFBPUlQ6OTYsRUNPTk5SRVNFVDoxMDQsRU5PQlVGUzoxMDUsRUFGTk9TVVBQT1JUOjk3LEVQUk9UT1RZUEU6OTEsRU5PVFNPQ0s6ODgsRU5PUFJPVE9PUFQ6OTIsRVNIVVRET1dOOjEwOCxFQ09OTlJFRlVTRUQ6MTExLEVBRERSSU5VU0U6OTgsRUNPTk5BQk9SVEVEOjEwMyxFTkVUVU5SRUFDSDoxMDEsRU5FVERPV046MTAwLEVUSU1FRE9VVDoxMTAsRUhPU1RET1dOOjExMixFSE9TVFVOUkVBQ0g6MTEzLEVJTlBST0dSRVNTOjExNSxFQUxSRUFEWToxMTQsRURFU1RBRERSUkVROjg5LEVNU0dTSVpFOjkwLEVQUk9UT05PU1VQUE9SVDo5MyxFU09DS1ROT1NVUFBPUlQ6OTQsRUFERFJOT1RBVkFJTDo5OSxFTkVUUkVTRVQ6MTAyLEVJU0NPTk46MTA2LEVOT1RDT05OOjEwNyxFVE9PTUFOWVJFRlM6MTA5LEVVU0VSUzo4NyxFRFFVT1Q6MTIyLEVTVEFMRToxMTYsRU5PVFNVUDo5NSxFTk9NRURJVU06MTIzLEVJTFNFUTo4NCxFT1ZFUkZMT1c6NzUsRUNBTkNFTEVEOjEyNSxFTk9UUkVDT1ZFUkFCTEU6MTMxLEVPV05FUkRFQUQ6MTMwLEVTVFJQSVBFOjg2fTt2YXIgRVJSTk9fTUVTU0FHRVM9ezA6IlN1Y2Nlc3MiLDE6Ik5vdCBzdXBlci11c2VyIiwyOiJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IiwzOiJObyBzdWNoIHByb2Nlc3MiLDQ6IkludGVycnVwdGVkIHN5c3RlbSBjYWxsIiw1OiJJL08gZXJyb3IiLDY6Ik5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MiLDc6IkFyZyBsaXN0IHRvbyBsb25nIiw4OiJFeGVjIGZvcm1hdCBlcnJvciIsOToiQmFkIGZpbGUgbnVtYmVyIiwxMDoiTm8gY2hpbGRyZW4iLDExOiJObyBtb3JlIHByb2Nlc3NlcyIsMTI6Ik5vdCBlbm91Z2ggY29yZSIsMTM6IlBlcm1pc3Npb24gZGVuaWVkIiwxNDoiQmFkIGFkZHJlc3MiLDE1OiJCbG9jayBkZXZpY2UgcmVxdWlyZWQiLDE2OiJNb3VudCBkZXZpY2UgYnVzeSIsMTc6IkZpbGUgZXhpc3RzIiwxODoiQ3Jvc3MtZGV2aWNlIGxpbmsiLDE5OiJObyBzdWNoIGRldmljZSIsMjA6Ik5vdCBhIGRpcmVjdG9yeSIsMjE6IklzIGEgZGlyZWN0b3J5IiwyMjoiSW52YWxpZCBhcmd1bWVudCIsMjM6IlRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtIiwyNDoiVG9vIG1hbnkgb3BlbiBmaWxlcyIsMjU6Ik5vdCBhIHR5cGV3cml0ZXIiLDI2OiJUZXh0IGZpbGUgYnVzeSIsMjc6IkZpbGUgdG9vIGxhcmdlIiwyODoiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UiLDI5OiJJbGxlZ2FsIHNlZWsiLDMwOiJSZWFkIG9ubHkgZmlsZSBzeXN0ZW0iLDMxOiJUb28gbWFueSBsaW5rcyIsMzI6IkJyb2tlbiBwaXBlIiwzMzoiTWF0aCBhcmcgb3V0IG9mIGRvbWFpbiBvZiBmdW5jIiwzNDoiTWF0aCByZXN1bHQgbm90IHJlcHJlc2VudGFibGUiLDM1OiJGaWxlIGxvY2tpbmcgZGVhZGxvY2sgZXJyb3IiLDM2OiJGaWxlIG9yIHBhdGggbmFtZSB0b28gbG9uZyIsMzc6Ik5vIHJlY29yZCBsb2NrcyBhdmFpbGFibGUiLDM4OiJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiLDM5OiJEaXJlY3Rvcnkgbm90IGVtcHR5Iiw0MDoiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MiLDQyOiJObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZSIsNDM6IklkZW50aWZpZXIgcmVtb3ZlZCIsNDQ6IkNoYW5uZWwgbnVtYmVyIG91dCBvZiByYW5nZSIsNDU6IkxldmVsIDIgbm90IHN5bmNocm9uaXplZCIsNDY6IkxldmVsIDMgaGFsdGVkIiw0NzoiTGV2ZWwgMyByZXNldCIsNDg6IkxpbmsgbnVtYmVyIG91dCBvZiByYW5nZSIsNDk6IlByb3RvY29sIGRyaXZlciBub3QgYXR0YWNoZWQiLDUwOiJObyBDU0kgc3RydWN0dXJlIGF2YWlsYWJsZSIsNTE6IkxldmVsIDIgaGFsdGVkIiw1MjoiSW52YWxpZCBleGNoYW5nZSIsNTM6IkludmFsaWQgcmVxdWVzdCBkZXNjcmlwdG9yIiw1NDoiRXhjaGFuZ2UgZnVsbCIsNTU6Ik5vIGFub2RlIiw1NjoiSW52YWxpZCByZXF1ZXN0IGNvZGUiLDU3OiJJbnZhbGlkIHNsb3QiLDU5OiJCYWQgZm9udCBmaWxlIGZtdCIsNjA6IkRldmljZSBub3QgYSBzdHJlYW0iLDYxOiJObyBkYXRhIChmb3Igbm8gZGVsYXkgaW8pIiw2MjoiVGltZXIgZXhwaXJlZCIsNjM6Ik91dCBvZiBzdHJlYW1zIHJlc291cmNlcyIsNjQ6Ik1hY2hpbmUgaXMgbm90IG9uIHRoZSBuZXR3b3JrIiw2NToiUGFja2FnZSBub3QgaW5zdGFsbGVkIiw2NjoiVGhlIG9iamVjdCBpcyByZW1vdGUiLDY3OiJUaGUgbGluayBoYXMgYmVlbiBzZXZlcmVkIiw2ODoiQWR2ZXJ0aXNlIGVycm9yIiw2OToiU3Jtb3VudCBlcnJvciIsNzA6IkNvbW11bmljYXRpb24gZXJyb3Igb24gc2VuZCIsNzE6IlByb3RvY29sIGVycm9yIiw3MjoiTXVsdGlob3AgYXR0ZW1wdGVkIiw3MzoiQ3Jvc3MgbW91bnQgcG9pbnQgKG5vdCByZWFsbHkgZXJyb3IpIiw3NDoiVHJ5aW5nIHRvIHJlYWQgdW5yZWFkYWJsZSBtZXNzYWdlIiw3NToiVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZSIsNzY6IkdpdmVuIGxvZy4gbmFtZSBub3QgdW5pcXVlIiw3NzoiZi5kLiBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbiIsNzg6IlJlbW90ZSBhZGRyZXNzIGNoYW5nZWQiLDc5OiJDYW4gICBhY2Nlc3MgYSBuZWVkZWQgc2hhcmVkIGxpYiIsODA6IkFjY2Vzc2luZyBhIGNvcnJ1cHRlZCBzaGFyZWQgbGliIiw4MToiLmxpYiBzZWN0aW9uIGluIGEub3V0IGNvcnJ1cHRlZCIsODI6IkF0dGVtcHRpbmcgdG8gbGluayBpbiB0b28gbWFueSBsaWJzIiw4MzoiQXR0ZW1wdGluZyB0byBleGVjIGEgc2hhcmVkIGxpYnJhcnkiLDg0OiJJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UiLDg2OiJTdHJlYW1zIHBpcGUgZXJyb3IiLDg3OiJUb28gbWFueSB1c2VycyIsODg6IlNvY2tldCBvcGVyYXRpb24gb24gbm9uLXNvY2tldCIsODk6IkRlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQiLDkwOiJNZXNzYWdlIHRvbyBsb25nIiw5MToiUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0Iiw5MjoiUHJvdG9jb2wgbm90IGF2YWlsYWJsZSIsOTM6IlVua25vd24gcHJvdG9jb2wiLDk0OiJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkIiw5NToiTm90IHN1cHBvcnRlZCIsOTY6IlByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkIiw5NzoiQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbCBmYW1pbHkiLDk4OiJBZGRyZXNzIGFscmVhZHkgaW4gdXNlIiw5OToiQWRkcmVzcyBub3QgYXZhaWxhYmxlIiwxMDA6Ik5ldHdvcmsgaW50ZXJmYWNlIGlzIG5vdCBjb25maWd1cmVkIiwxMDE6Ik5ldHdvcmsgaXMgdW5yZWFjaGFibGUiLDEwMjoiQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrIiwxMDM6IkNvbm5lY3Rpb24gYWJvcnRlZCIsMTA0OiJDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIiLDEwNToiTm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZSIsMTA2OiJTb2NrZXQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiLDEwNzoiU29ja2V0IGlzIG5vdCBjb25uZWN0ZWQiLDEwODoiQ2FuJ3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24iLDEwOToiVG9vIG1hbnkgcmVmZXJlbmNlcyIsMTEwOiJDb25uZWN0aW9uIHRpbWVkIG91dCIsMTExOiJDb25uZWN0aW9uIHJlZnVzZWQiLDExMjoiSG9zdCBpcyBkb3duIiwxMTM6Ikhvc3QgaXMgdW5yZWFjaGFibGUiLDExNDoiU29ja2V0IGFscmVhZHkgY29ubmVjdGVkIiwxMTU6IkNvbm5lY3Rpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyIsMTE2OiJTdGFsZSBmaWxlIGhhbmRsZSIsMTIyOiJRdW90YSBleGNlZWRlZCIsMTIzOiJObyBtZWRpdW0gKGluIHRhcGUgZHJpdmUpIiwxMjU6Ik9wZXJhdGlvbiBjYW5jZWxlZCIsMTMwOiJQcmV2aW91cyBvd25lciBkaWVkIiwxMzE6IlN0YXRlIG5vdCByZWNvdmVyYWJsZSJ9O3ZhciBfX19lcnJub19zdGF0ZT0wO2Z1bmN0aW9uIF9fX3NldEVyck5vKHZhbHVlKXtIRUFQMzJbX19fZXJybm9fc3RhdGU+PjJdPXZhbHVlO3JldHVybiB2YWx1ZX12YXIgUEFUSD17c3BsaXRQYXRoOihmdW5jdGlvbihmaWxlbmFtZSl7dmFyIHNwbGl0UGF0aFJlPS9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLztyZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSl9KSxub3JtYWxpemVBcnJheTooZnVuY3Rpb24ocGFydHMsYWxsb3dBYm92ZVJvb3Qpe3ZhciB1cD0wO2Zvcih2YXIgaT1wYXJ0cy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIGxhc3Q9cGFydHNbaV07aWYobGFzdD09PSIuIil7cGFydHMuc3BsaWNlKGksMSl9ZWxzZSBpZihsYXN0PT09Ii4uIil7cGFydHMuc3BsaWNlKGksMSk7dXArK31lbHNlIGlmKHVwKXtwYXJ0cy5zcGxpY2UoaSwxKTt1cC0tfX1pZihhbGxvd0Fib3ZlUm9vdCl7Zm9yKDt1cC0tO3VwKXtwYXJ0cy51bnNoaWZ0KCIuLiIpfX1yZXR1cm4gcGFydHN9KSxub3JtYWxpemU6KGZ1bmN0aW9uKHBhdGgpe3ZhciBpc0Fic29sdXRlPXBhdGguY2hhckF0KDApPT09Ii8iLHRyYWlsaW5nU2xhc2g9cGF0aC5zdWJzdHIoLTEpPT09Ii8iO3BhdGg9UEFUSC5ub3JtYWxpemVBcnJheShwYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKXtyZXR1cm4hIXB9KSksIWlzQWJzb2x1dGUpLmpvaW4oIi8iKTtpZighcGF0aCYmIWlzQWJzb2x1dGUpe3BhdGg9Ii4ifWlmKHBhdGgmJnRyYWlsaW5nU2xhc2gpe3BhdGgrPSIvIn1yZXR1cm4oaXNBYnNvbHV0ZT8iLyI6IiIpK3BhdGh9KSxkaXJuYW1lOihmdW5jdGlvbihwYXRoKXt2YXIgcmVzdWx0PVBBVEguc3BsaXRQYXRoKHBhdGgpLHJvb3Q9cmVzdWx0WzBdLGRpcj1yZXN1bHRbMV07aWYoIXJvb3QmJiFkaXIpe3JldHVybiIuIn1pZihkaXIpe2Rpcj1kaXIuc3Vic3RyKDAsZGlyLmxlbmd0aC0xKX1yZXR1cm4gcm9vdCtkaXJ9KSxiYXNlbmFtZTooZnVuY3Rpb24ocGF0aCl7aWYocGF0aD09PSIvIilyZXR1cm4iLyI7dmFyIGxhc3RTbGFzaD1wYXRoLmxhc3RJbmRleE9mKCIvIik7aWYobGFzdFNsYXNoPT09LTEpcmV0dXJuIHBhdGg7cmV0dXJuIHBhdGguc3Vic3RyKGxhc3RTbGFzaCsxKX0pLGV4dG5hbWU6KGZ1bmN0aW9uKHBhdGgpe3JldHVybiBQQVRILnNwbGl0UGF0aChwYXRoKVszXX0pLGpvaW46KGZ1bmN0aW9uKCl7dmFyIHBhdGhzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gUEFUSC5ub3JtYWxpemUocGF0aHMuam9pbigiLyIpKX0pLGpvaW4yOihmdW5jdGlvbihsLHIpe3JldHVybiBQQVRILm5vcm1hbGl6ZShsKyIvIityKX0pLHJlc29sdmU6KGZ1bmN0aW9uKCl7dmFyIHJlc29sdmVkUGF0aD0iIixyZXNvbHZlZEFic29sdXRlPWZhbHNlO2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLTE7aT49LTEmJiFyZXNvbHZlZEFic29sdXRlO2ktLSl7dmFyIHBhdGg9aT49MD9hcmd1bWVudHNbaV06RlMuY3dkKCk7aWYodHlwZW9mIHBhdGghPT0ic3RyaW5nIil7dGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKX1lbHNlIGlmKCFwYXRoKXtjb250aW51ZX1yZXNvbHZlZFBhdGg9cGF0aCsiLyIrcmVzb2x2ZWRQYXRoO3Jlc29sdmVkQWJzb2x1dGU9cGF0aC5jaGFyQXQoMCk9PT0iLyJ9cmVzb2x2ZWRQYXRoPVBBVEgubm9ybWFsaXplQXJyYXkocmVzb2x2ZWRQYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKXtyZXR1cm4hIXB9KSksIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oIi8iKTtyZXR1cm4ocmVzb2x2ZWRBYnNvbHV0ZT8iLyI6IiIpK3Jlc29sdmVkUGF0aHx8Ii4ifSkscmVsYXRpdmU6KGZ1bmN0aW9uKGZyb20sdG8pe2Zyb209UEFUSC5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTt0bz1QQVRILnJlc29sdmUodG8pLnN1YnN0cigxKTtmdW5jdGlvbiB0cmltKGFycil7dmFyIHN0YXJ0PTA7Zm9yKDtzdGFydDxhcnIubGVuZ3RoO3N0YXJ0Kyspe2lmKGFycltzdGFydF0hPT0iIilicmVha312YXIgZW5kPWFyci5sZW5ndGgtMTtmb3IoO2VuZD49MDtlbmQtLSl7aWYoYXJyW2VuZF0hPT0iIilicmVha31pZihzdGFydD5lbmQpcmV0dXJuW107cmV0dXJuIGFyci5zbGljZShzdGFydCxlbmQtc3RhcnQrMSl9dmFyIGZyb21QYXJ0cz10cmltKGZyb20uc3BsaXQoIi8iKSk7dmFyIHRvUGFydHM9dHJpbSh0by5zcGxpdCgiLyIpKTt2YXIgbGVuZ3RoPU1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsdG9QYXJ0cy5sZW5ndGgpO3ZhciBzYW1lUGFydHNMZW5ndGg9bGVuZ3RoO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7aWYoZnJvbVBhcnRzW2ldIT09dG9QYXJ0c1tpXSl7c2FtZVBhcnRzTGVuZ3RoPWk7YnJlYWt9fXZhciBvdXRwdXRQYXJ0cz1bXTtmb3IodmFyIGk9c2FtZVBhcnRzTGVuZ3RoO2k8ZnJvbVBhcnRzLmxlbmd0aDtpKyspe291dHB1dFBhcnRzLnB1c2goIi4uIil9b3V0cHV0UGFydHM9b3V0cHV0UGFydHMuY29uY2F0KHRvUGFydHMuc2xpY2Uoc2FtZVBhcnRzTGVuZ3RoKSk7cmV0dXJuIG91dHB1dFBhcnRzLmpvaW4oIi8iKX0pfTt2YXIgVFRZPXt0dHlzOltdLGluaXQ6KGZ1bmN0aW9uKCl7fSksc2h1dGRvd246KGZ1bmN0aW9uKCl7fSkscmVnaXN0ZXI6KGZ1bmN0aW9uKGRldixvcHMpe1RUWS50dHlzW2Rldl09e2lucHV0OltdLG91dHB1dDpbXSxvcHM6b3BzfTtGUy5yZWdpc3RlckRldmljZShkZXYsVFRZLnN0cmVhbV9vcHMpfSksc3RyZWFtX29wczp7b3BlbjooZnVuY3Rpb24oc3RyZWFtKXt2YXIgdHR5PVRUWS50dHlzW3N0cmVhbS5ub2RlLnJkZXZdO2lmKCF0dHkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9c3RyZWFtLnR0eT10dHk7c3RyZWFtLnNlZWthYmxlPWZhbHNlfSksY2xvc2U6KGZ1bmN0aW9uKHN0cmVhbSl7aWYoc3RyZWFtLnR0eS5vdXRwdXQubGVuZ3RoKXtzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcihzdHJlYW0udHR5LDEwKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zKXtpZighc3RyZWFtLnR0eXx8IXN0cmVhbS50dHkub3BzLmdldF9jaGFyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTlhJTyl9dmFyIGJ5dGVzUmVhZD0wO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dmFyIHJlc3VsdDt0cnl7cmVzdWx0PXN0cmVhbS50dHkub3BzLmdldF9jaGFyKHN0cmVhbS50dHkpfWNhdGNoKGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyl9aWYocmVzdWx0PT09dW5kZWZpbmVkJiZieXRlc1JlYWQ9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4pfWlmKHJlc3VsdD09PW51bGx8fHJlc3VsdD09PXVuZGVmaW5lZClicmVhaztieXRlc1JlYWQrKztidWZmZXJbb2Zmc2V0K2ldPXJlc3VsdH1pZihieXRlc1JlYWQpe3N0cmVhbS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpfXJldHVybiBieXRlc1JlYWR9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvcyl7aWYoIXN0cmVhbS50dHl8fCFzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5YSU8pfWZvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dHJ5e3N0cmVhbS50dHkub3BzLnB1dF9jaGFyKHN0cmVhbS50dHksYnVmZmVyW29mZnNldCtpXSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlPKX19aWYobGVuZ3RoKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKX1yZXR1cm4gaX0pfSxkZWZhdWx0X3R0eV9vcHM6e2dldF9jaGFyOihmdW5jdGlvbih0dHkpe2lmKCF0dHkuaW5wdXQubGVuZ3RoKXt2YXIgcmVzdWx0PW51bGw7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7cmVzdWx0PXByb2Nlc3NbInN0ZGluIl1bInJlYWQiXSgpO2lmKCFyZXN1bHQpe2lmKHByb2Nlc3NbInN0ZGluIl1bIl9yZWFkYWJsZVN0YXRlIl0mJnByb2Nlc3NbInN0ZGluIl1bIl9yZWFkYWJsZVN0YXRlIl1bImVuZGVkIl0pe3JldHVybiBudWxsfXJldHVybiB1bmRlZmluZWR9fWVsc2UgaWYodHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJnR5cGVvZiB3aW5kb3cucHJvbXB0PT0iZnVuY3Rpb24iKXtyZXN1bHQ9d2luZG93LnByb21wdCgiSW5wdXQ6ICIpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIn19ZWxzZSBpZih0eXBlb2YgcmVhZGxpbmU9PSJmdW5jdGlvbiIpe3Jlc3VsdD1yZWFkbGluZSgpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIn19aWYoIXJlc3VsdCl7cmV0dXJuIG51bGx9dHR5LmlucHV0PWludEFycmF5RnJvbVN0cmluZyhyZXN1bHQsdHJ1ZSl9cmV0dXJuIHR0eS5pbnB1dC5zaGlmdCgpfSkscHV0X2NoYXI6KGZ1bmN0aW9uKHR0eSx2YWwpe2lmKHZhbD09PW51bGx8fHZhbD09PTEwKXtNb2R1bGVbInByaW50Il0odHR5Lm91dHB1dC5qb2luKCIiKSk7dHR5Lm91dHB1dD1bXX1lbHNle3R0eS5vdXRwdXQucHVzaChUVFkudXRmOC5wcm9jZXNzQ0NoYXIodmFsKSl9fSl9LGRlZmF1bHRfdHR5MV9vcHM6e3B1dF9jaGFyOihmdW5jdGlvbih0dHksdmFsKXtpZih2YWw9PT1udWxsfHx2YWw9PT0xMCl7TW9kdWxlWyJwcmludEVyciJdKHR0eS5vdXRwdXQuam9pbigiIikpO3R0eS5vdXRwdXQ9W119ZWxzZXt0dHkub3V0cHV0LnB1c2goVFRZLnV0ZjgucHJvY2Vzc0NDaGFyKHZhbCkpfX0pfX07dmFyIE1FTUZTPXtvcHNfdGFibGU6bnVsbCxDT05URU5UX09XTklORzoxLENPTlRFTlRfRkxFWElCTEU6MixDT05URU5UX0ZJWEVEOjMsbW91bnQ6KGZ1bmN0aW9uKG1vdW50KXtyZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShudWxsLCIvIiwxNjM4NHw1MTEsMCl9KSxjcmVhdGVOb2RlOihmdW5jdGlvbihwYXJlbnQsbmFtZSxtb2RlLGRldil7aWYoRlMuaXNCbGtkZXYobW9kZSl8fEZTLmlzRklGTyhtb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKCFNRU1GUy5vcHNfdGFibGUpe01FTUZTLm9wc190YWJsZT17ZGlyOntub2RlOntnZXRhdHRyOk1FTUZTLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpNRU1GUy5ub2RlX29wcy5zZXRhdHRyLGxvb2t1cDpNRU1GUy5ub2RlX29wcy5sb29rdXAsbWtub2Q6TUVNRlMubm9kZV9vcHMubWtub2QscmVuYW1lOk1FTUZTLm5vZGVfb3BzLnJlbmFtZSx1bmxpbms6TUVNRlMubm9kZV9vcHMudW5saW5rLHJtZGlyOk1FTUZTLm5vZGVfb3BzLnJtZGlyLHJlYWRkaXI6TUVNRlMubm9kZV9vcHMucmVhZGRpcixzeW1saW5rOk1FTUZTLm5vZGVfb3BzLnN5bWxpbmt9LHN0cmVhbTp7bGxzZWVrOk1FTUZTLnN0cmVhbV9vcHMubGxzZWVrfX0sZmlsZTp7bm9kZTp7Z2V0YXR0cjpNRU1GUy5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6TUVNRlMubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOntsbHNlZWs6TUVNRlMuc3RyZWFtX29wcy5sbHNlZWsscmVhZDpNRU1GUy5zdHJlYW1fb3BzLnJlYWQsd3JpdGU6TUVNRlMuc3RyZWFtX29wcy53cml0ZSxhbGxvY2F0ZTpNRU1GUy5zdHJlYW1fb3BzLmFsbG9jYXRlLG1tYXA6TUVNRlMuc3RyZWFtX29wcy5tbWFwfX0sbGluazp7bm9kZTp7Z2V0YXR0cjpNRU1GUy5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6TUVNRlMubm9kZV9vcHMuc2V0YXR0cixyZWFkbGluazpNRU1GUy5ub2RlX29wcy5yZWFkbGlua30sc3RyZWFtOnt9fSxjaHJkZXY6e25vZGU6e2dldGF0dHI6TUVNRlMubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOk1FTUZTLm5vZGVfb3BzLnNldGF0dHJ9LHN0cmVhbTpGUy5jaHJkZXZfc3RyZWFtX29wc319fXZhciBub2RlPUZTLmNyZWF0ZU5vZGUocGFyZW50LG5hbWUsbW9kZSxkZXYpO2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmRpci5ub2RlO25vZGUuc3RyZWFtX29wcz1NRU1GUy5vcHNfdGFibGUuZGlyLnN0cmVhbTtub2RlLmNvbnRlbnRzPXt9fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUuc3RyZWFtO25vZGUuY29udGVudHM9W107bm9kZS5jb250ZW50TW9kZT1NRU1GUy5DT05URU5UX0ZMRVhJQkxFfWVsc2UgaWYoRlMuaXNMaW5rKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmxpbmsubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmxpbmsuc3RyZWFtfWVsc2UgaWYoRlMuaXNDaHJkZXYobm9kZS5tb2RlKSl7bm9kZS5ub2RlX29wcz1NRU1GUy5vcHNfdGFibGUuY2hyZGV2Lm5vZGU7bm9kZS5zdHJlYW1fb3BzPU1FTUZTLm9wc190YWJsZS5jaHJkZXYuc3RyZWFtfW5vZGUudGltZXN0YW1wPURhdGUubm93KCk7aWYocGFyZW50KXtwYXJlbnQuY29udGVudHNbbmFtZV09bm9kZX1yZXR1cm4gbm9kZX0pLGVuc3VyZUZsZXhpYmxlOihmdW5jdGlvbihub2RlKXtpZihub2RlLmNvbnRlbnRNb2RlIT09TUVNRlMuQ09OVEVOVF9GTEVYSUJMRSl7dmFyIGNvbnRlbnRzPW5vZGUuY29udGVudHM7bm9kZS5jb250ZW50cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250ZW50cyk7bm9kZS5jb250ZW50TW9kZT1NRU1GUy5DT05URU5UX0ZMRVhJQkxFfX0pLG5vZGVfb3BzOntnZXRhdHRyOihmdW5jdGlvbihub2RlKXt2YXIgYXR0cj17fTthdHRyLmRldj1GUy5pc0NocmRldihub2RlLm1vZGUpP25vZGUuaWQ6MTthdHRyLmlubz1ub2RlLmlkO2F0dHIubW9kZT1ub2RlLm1vZGU7YXR0ci5ubGluaz0xO2F0dHIudWlkPTA7YXR0ci5naWQ9MDthdHRyLnJkZXY9bm9kZS5yZGV2O2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT00MDk2fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT1ub2RlLmNvbnRlbnRzLmxlbmd0aH1lbHNlIGlmKEZTLmlzTGluayhub2RlLm1vZGUpKXthdHRyLnNpemU9bm9kZS5saW5rLmxlbmd0aH1lbHNle2F0dHIuc2l6ZT0wfWF0dHIuYXRpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIubXRpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIuY3RpbWU9bmV3IERhdGUobm9kZS50aW1lc3RhbXApO2F0dHIuYmxrc2l6ZT00MDk2O2F0dHIuYmxvY2tzPU1hdGguY2VpbChhdHRyLnNpemUvYXR0ci5ibGtzaXplKTtyZXR1cm4gYXR0cn0pLHNldGF0dHI6KGZ1bmN0aW9uKG5vZGUsYXR0cil7aWYoYXR0ci5tb2RlIT09dW5kZWZpbmVkKXtub2RlLm1vZGU9YXR0ci5tb2RlfWlmKGF0dHIudGltZXN0YW1wIT09dW5kZWZpbmVkKXtub2RlLnRpbWVzdGFtcD1hdHRyLnRpbWVzdGFtcH1pZihhdHRyLnNpemUhPT11bmRlZmluZWQpe01FTUZTLmVuc3VyZUZsZXhpYmxlKG5vZGUpO3ZhciBjb250ZW50cz1ub2RlLmNvbnRlbnRzO2lmKGF0dHIuc2l6ZTxjb250ZW50cy5sZW5ndGgpY29udGVudHMubGVuZ3RoPWF0dHIuc2l6ZTtlbHNlIHdoaWxlKGF0dHIuc2l6ZT5jb250ZW50cy5sZW5ndGgpY29udGVudHMucHVzaCgwKX19KSxsb29rdXA6KGZ1bmN0aW9uKHBhcmVudCxuYW1lKXt0aHJvdyBGUy5nZW5lcmljRXJyb3JzW0VSUk5PX0NPREVTLkVOT0VOVF19KSxta25vZDooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe3JldHVybiBNRU1GUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0pLHJlbmFtZTooZnVuY3Rpb24ob2xkX25vZGUsbmV3X2RpcixuZXdfbmFtZSl7aWYoRlMuaXNEaXIob2xkX25vZGUubW9kZSkpe3ZhciBuZXdfbm9kZTt0cnl7bmV3X25vZGU9RlMubG9va3VwTm9kZShuZXdfZGlyLG5ld19uYW1lKX1jYXRjaChlKXt9aWYobmV3X25vZGUpe2Zvcih2YXIgaSBpbiBuZXdfbm9kZS5jb250ZW50cyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVEVNUFRZKX19fWRlbGV0ZSBvbGRfbm9kZS5wYXJlbnQuY29udGVudHNbb2xkX25vZGUubmFtZV07b2xkX25vZGUubmFtZT1uZXdfbmFtZTtuZXdfZGlyLmNvbnRlbnRzW25ld19uYW1lXT1vbGRfbm9kZTtvbGRfbm9kZS5wYXJlbnQ9bmV3X2Rpcn0pLHVubGluazooZnVuY3Rpb24ocGFyZW50LG5hbWUpe2RlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV19KSxybWRpcjooZnVuY3Rpb24ocGFyZW50LG5hbWUpe3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO2Zvcih2YXIgaSBpbiBub2RlLmNvbnRlbnRzKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9URU1QVFkpfWRlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV19KSxyZWFkZGlyOihmdW5jdGlvbihub2RlKXt2YXIgZW50cmllcz1bIi4iLCIuLiJdO2Zvcih2YXIga2V5IGluIG5vZGUuY29udGVudHMpe2lmKCFub2RlLmNvbnRlbnRzLmhhc093blByb3BlcnR5KGtleSkpe2NvbnRpbnVlfWVudHJpZXMucHVzaChrZXkpfXJldHVybiBlbnRyaWVzfSksc3ltbGluazooZnVuY3Rpb24ocGFyZW50LG5ld25hbWUsb2xkcGF0aCl7dmFyIG5vZGU9TUVNRlMuY3JlYXRlTm9kZShwYXJlbnQsbmV3bmFtZSw1MTF8NDA5NjAsMCk7bm9kZS5saW5rPW9sZHBhdGg7cmV0dXJuIG5vZGV9KSxyZWFkbGluazooZnVuY3Rpb24obm9kZSl7aWYoIUZTLmlzTGluayhub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfXJldHVybiBub2RlLmxpbmt9KX0sc3RyZWFtX29wczp7cmVhZDooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYocG9zaXRpb24+PWNvbnRlbnRzLmxlbmd0aClyZXR1cm4gMDt2YXIgc2l6ZT1NYXRoLm1pbihjb250ZW50cy5sZW5ndGgtcG9zaXRpb24sbGVuZ3RoKTthc3NlcnQoc2l6ZT49MCk7aWYoc2l6ZT44JiZjb250ZW50cy5zdWJhcnJheSl7YnVmZmVyLnNldChjb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitzaXplKSxvZmZzZXQpfWVsc2V7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXX19cmV0dXJuIHNpemV9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLGNhbk93bil7dmFyIG5vZGU9c3RyZWFtLm5vZGU7bm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTt2YXIgY29udGVudHM9bm9kZS5jb250ZW50cztpZihsZW5ndGgmJmNvbnRlbnRzLmxlbmd0aD09PTAmJnBvc2l0aW9uPT09MCYmYnVmZmVyLnN1YmFycmF5KXtpZihjYW5Pd24mJm9mZnNldD09PTApe25vZGUuY29udGVudHM9YnVmZmVyO25vZGUuY29udGVudE1vZGU9YnVmZmVyLmJ1ZmZlcj09PUhFQVA4LmJ1ZmZlcj9NRU1GUy5DT05URU5UX09XTklORzpNRU1GUy5DT05URU5UX0ZJWEVEfWVsc2V7bm9kZS5jb250ZW50cz1uZXcgVWludDhBcnJheShidWZmZXIuc3ViYXJyYXkob2Zmc2V0LG9mZnNldCtsZW5ndGgpKTtub2RlLmNvbnRlbnRNb2RlPU1FTUZTLkNPTlRFTlRfRklYRUR9cmV0dXJuIGxlbmd0aH1NRU1GUy5lbnN1cmVGbGV4aWJsZShub2RlKTt2YXIgY29udGVudHM9bm9kZS5jb250ZW50czt3aGlsZShjb250ZW50cy5sZW5ndGg8cG9zaXRpb24pY29udGVudHMucHVzaCgwKTtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe2NvbnRlbnRzW3Bvc2l0aW9uK2ldPWJ1ZmZlcltvZmZzZXQraV19cmV0dXJuIGxlbmd0aH0pLGxsc2VlazooZnVuY3Rpb24oc3RyZWFtLG9mZnNldCx3aGVuY2Upe3ZhciBwb3NpdGlvbj1vZmZzZXQ7aWYod2hlbmNlPT09MSl7cG9zaXRpb24rPXN0cmVhbS5wb3NpdGlvbn1lbHNlIGlmKHdoZW5jZT09PTIpe2lmKEZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSl7cG9zaXRpb24rPXN0cmVhbS5ub2RlLmNvbnRlbnRzLmxlbmd0aH19aWYocG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1zdHJlYW0udW5nb3R0ZW49W107c3RyZWFtLnBvc2l0aW9uPXBvc2l0aW9uO3JldHVybiBwb3NpdGlvbn0pLGFsbG9jYXRlOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LGxlbmd0aCl7TUVNRlMuZW5zdXJlRmxleGlibGUoc3RyZWFtLm5vZGUpO3ZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50czt2YXIgbGltaXQ9b2Zmc2V0K2xlbmd0aDt3aGlsZShsaW1pdD5jb250ZW50cy5sZW5ndGgpY29udGVudHMucHVzaCgwKX0pLG1tYXA6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixwcm90LGZsYWdzKXtpZighRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9ERVYpfXZhciBwdHI7dmFyIGFsbG9jYXRlZDt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYoIShmbGFncyYyKSYmKGNvbnRlbnRzLmJ1ZmZlcj09PWJ1ZmZlcnx8Y29udGVudHMuYnVmZmVyPT09YnVmZmVyLmJ1ZmZlcikpe2FsbG9jYXRlZD1mYWxzZTtwdHI9Y29udGVudHMuYnl0ZU9mZnNldH1lbHNle2lmKHBvc2l0aW9uPjB8fHBvc2l0aW9uK2xlbmd0aDxjb250ZW50cy5sZW5ndGgpe2lmKGNvbnRlbnRzLnN1YmFycmF5KXtjb250ZW50cz1jb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitsZW5ndGgpfWVsc2V7Y29udGVudHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY29udGVudHMscG9zaXRpb24scG9zaXRpb24rbGVuZ3RoKX19YWxsb2NhdGVkPXRydWU7cHRyPV9tYWxsb2MobGVuZ3RoKTtpZighcHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9NRU0pfWJ1ZmZlci5zZXQoY29udGVudHMscHRyKX1yZXR1cm57cHRyOnB0cixhbGxvY2F0ZWQ6YWxsb2NhdGVkfX0pfX07dmFyIElEQkZTPXtkYnM6e30saW5kZXhlZERCOihmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuaW5kZXhlZERCfHx3aW5kb3cubW96SW5kZXhlZERCfHx3aW5kb3cud2Via2l0SW5kZXhlZERCfHx3aW5kb3cubXNJbmRleGVkREJ9KSxEQl9WRVJTSU9OOjIxLERCX1NUT1JFX05BTUU6IkZJTEVfREFUQSIsbW91bnQ6KGZ1bmN0aW9uKG1vdW50KXtyZXR1cm4gTUVNRlMubW91bnQuYXBwbHkobnVsbCxhcmd1bWVudHMpfSksc3luY2ZzOihmdW5jdGlvbihtb3VudCxwb3B1bGF0ZSxjYWxsYmFjayl7SURCRlMuZ2V0TG9jYWxTZXQobW91bnQsKGZ1bmN0aW9uKGVycixsb2NhbCl7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO0lEQkZTLmdldFJlbW90ZVNldChtb3VudCwoZnVuY3Rpb24oZXJyLHJlbW90ZSl7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO3ZhciBzcmM9cG9wdWxhdGU/cmVtb3RlOmxvY2FsO3ZhciBkc3Q9cG9wdWxhdGU/bG9jYWw6cmVtb3RlO0lEQkZTLnJlY29uY2lsZShzcmMsZHN0LGNhbGxiYWNrKX0pKX0pKX0pLGdldERCOihmdW5jdGlvbihuYW1lLGNhbGxiYWNrKXt2YXIgZGI9SURCRlMuZGJzW25hbWVdO2lmKGRiKXtyZXR1cm4gY2FsbGJhY2sobnVsbCxkYil9dmFyIHJlcTt0cnl7cmVxPUlEQkZTLmluZGV4ZWREQigpLm9wZW4obmFtZSxJREJGUy5EQl9WRVJTSU9OKX1jYXRjaChlKXtyZXR1cm4gY2FsbGJhY2soZSl9cmVxLm9udXBncmFkZW5lZWRlZD0oZnVuY3Rpb24oZSl7dmFyIGRiPWUudGFyZ2V0LnJlc3VsdDt2YXIgdHJhbnNhY3Rpb249ZS50YXJnZXQudHJhbnNhY3Rpb247dmFyIGZpbGVTdG9yZTtpZihkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKElEQkZTLkRCX1NUT1JFX05BTUUpKXtmaWxlU3RvcmU9dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoSURCRlMuREJfU1RPUkVfTkFNRSl9ZWxzZXtmaWxlU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoSURCRlMuREJfU1RPUkVfTkFNRSl9ZmlsZVN0b3JlLmNyZWF0ZUluZGV4KCJ0aW1lc3RhbXAiLCJ0aW1lc3RhbXAiLHt1bmlxdWU6ZmFsc2V9KX0pO3JlcS5vbnN1Y2Nlc3M9KGZ1bmN0aW9uKCl7ZGI9cmVxLnJlc3VsdDtJREJGUy5kYnNbbmFtZV09ZGI7Y2FsbGJhY2sobnVsbCxkYil9KTtyZXEub25lcnJvcj0oZnVuY3Rpb24oKXtjYWxsYmFjayh0aGlzLmVycm9yKX0pfSksZ2V0TG9jYWxTZXQ6KGZ1bmN0aW9uKG1vdW50LGNhbGxiYWNrKXt2YXIgZW50cmllcz17fTtmdW5jdGlvbiBpc1JlYWxEaXIocCl7cmV0dXJuIHAhPT0iLiImJnAhPT0iLi4ifWZ1bmN0aW9uIHRvQWJzb2x1dGUocm9vdCl7cmV0dXJuKGZ1bmN0aW9uKHApe3JldHVybiBQQVRILmpvaW4yKHJvb3QscCl9KX12YXIgY2hlY2s9RlMucmVhZGRpcihtb3VudC5tb3VudHBvaW50KS5maWx0ZXIoaXNSZWFsRGlyKS5tYXAodG9BYnNvbHV0ZShtb3VudC5tb3VudHBvaW50KSk7d2hpbGUoY2hlY2subGVuZ3RoKXt2YXIgcGF0aD1jaGVjay5wb3AoKTt2YXIgc3RhdDt0cnl7c3RhdD1GUy5zdGF0KHBhdGgpfWNhdGNoKGUpe3JldHVybiBjYWxsYmFjayhlKX1pZihGUy5pc0RpcihzdGF0Lm1vZGUpKXtjaGVjay5wdXNoLmFwcGx5KGNoZWNrLEZTLnJlYWRkaXIocGF0aCkuZmlsdGVyKGlzUmVhbERpcikubWFwKHRvQWJzb2x1dGUocGF0aCkpKX1lbnRyaWVzW3BhdGhdPXt0aW1lc3RhbXA6c3RhdC5tdGltZX19cmV0dXJuIGNhbGxiYWNrKG51bGwse3R5cGU6ImxvY2FsIixlbnRyaWVzOmVudHJpZXN9KX0pLGdldFJlbW90ZVNldDooZnVuY3Rpb24obW91bnQsY2FsbGJhY2spe3ZhciBlbnRyaWVzPXt9O0lEQkZTLmdldERCKG1vdW50Lm1vdW50cG9pbnQsKGZ1bmN0aW9uKGVycixkYil7aWYoZXJyKXJldHVybiBjYWxsYmFjayhlcnIpO3ZhciB0cmFuc2FjdGlvbj1kYi50cmFuc2FjdGlvbihbSURCRlMuREJfU1RPUkVfTkFNRV0sInJlYWRvbmx5Iik7dHJhbnNhY3Rpb24ub25lcnJvcj0oZnVuY3Rpb24oKXtjYWxsYmFjayh0aGlzLmVycm9yKX0pO3ZhciBzdG9yZT10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShJREJGUy5EQl9TVE9SRV9OQU1FKTt2YXIgaW5kZXg9c3RvcmUuaW5kZXgoInRpbWVzdGFtcCIpO2luZGV4Lm9wZW5LZXlDdXJzb3IoKS5vbnN1Y2Nlc3M9KGZ1bmN0aW9uKGV2ZW50KXt2YXIgY3Vyc29yPWV2ZW50LnRhcmdldC5yZXN1bHQ7aWYoIWN1cnNvcil7cmV0dXJuIGNhbGxiYWNrKG51bGwse3R5cGU6InJlbW90ZSIsZGI6ZGIsZW50cmllczplbnRyaWVzfSl9ZW50cmllc1tjdXJzb3IucHJpbWFyeUtleV09e3RpbWVzdGFtcDpjdXJzb3Iua2V5fTtjdXJzb3IuY29udGludWUoKX0pfSkpfSksbG9hZExvY2FsRW50cnk6KGZ1bmN0aW9uKHBhdGgsY2FsbGJhY2spe3ZhciBzdGF0LG5vZGU7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoKTtub2RlPWxvb2t1cC5ub2RlO3N0YXQ9RlMuc3RhdChwYXRoKX1jYXRjaChlKXtyZXR1cm4gY2FsbGJhY2soZSl9aWYoRlMuaXNEaXIoc3RhdC5tb2RlKSl7cmV0dXJuIGNhbGxiYWNrKG51bGwse3RpbWVzdGFtcDpzdGF0Lm10aW1lLG1vZGU6c3RhdC5tb2RlfSl9ZWxzZSBpZihGUy5pc0ZpbGUoc3RhdC5tb2RlKSl7cmV0dXJuIGNhbGxiYWNrKG51bGwse3RpbWVzdGFtcDpzdGF0Lm10aW1lLG1vZGU6c3RhdC5tb2RlLGNvbnRlbnRzOm5vZGUuY29udGVudHN9KX1lbHNle3JldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpfX0pLHN0b3JlTG9jYWxFbnRyeTooZnVuY3Rpb24ocGF0aCxlbnRyeSxjYWxsYmFjayl7dHJ5e2lmKEZTLmlzRGlyKGVudHJ5Lm1vZGUpKXtGUy5ta2RpcihwYXRoLGVudHJ5Lm1vZGUpfWVsc2UgaWYoRlMuaXNGaWxlKGVudHJ5Lm1vZGUpKXtGUy53cml0ZUZpbGUocGF0aCxlbnRyeS5jb250ZW50cyx7ZW5jb2Rpbmc6ImJpbmFyeSIsY2FuT3duOnRydWV9KX1lbHNle3JldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpfUZTLnV0aW1lKHBhdGgsZW50cnkudGltZXN0YW1wLGVudHJ5LnRpbWVzdGFtcCl9Y2F0Y2goZSl7cmV0dXJuIGNhbGxiYWNrKGUpfWNhbGxiYWNrKG51bGwpfSkscmVtb3ZlTG9jYWxFbnRyeTooZnVuY3Rpb24ocGF0aCxjYWxsYmFjayl7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoKTt2YXIgc3RhdD1GUy5zdGF0KHBhdGgpO2lmKEZTLmlzRGlyKHN0YXQubW9kZSkpe0ZTLnJtZGlyKHBhdGgpfWVsc2UgaWYoRlMuaXNGaWxlKHN0YXQubW9kZSkpe0ZTLnVubGluayhwYXRoKX19Y2F0Y2goZSl7cmV0dXJuIGNhbGxiYWNrKGUpfWNhbGxiYWNrKG51bGwpfSksbG9hZFJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLmdldChwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbihldmVudCl7Y2FsbGJhY2sobnVsbCxldmVudC50YXJnZXQucmVzdWx0KX0pO3JlcS5vbmVycm9yPShmdW5jdGlvbigpe2NhbGxiYWNrKHRoaXMuZXJyb3IpfSl9KSxzdG9yZVJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGVudHJ5LGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLnB1dChlbnRyeSxwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbigpe2NhbGxiYWNrKG51bGwpfSk7cmVxLm9uZXJyb3I9KGZ1bmN0aW9uKCl7Y2FsbGJhY2sodGhpcy5lcnJvcil9KX0pLHJlbW92ZVJlbW90ZUVudHJ5OihmdW5jdGlvbihzdG9yZSxwYXRoLGNhbGxiYWNrKXt2YXIgcmVxPXN0b3JlLmRlbGV0ZShwYXRoKTtyZXEub25zdWNjZXNzPShmdW5jdGlvbigpe2NhbGxiYWNrKG51bGwpfSk7cmVxLm9uZXJyb3I9KGZ1bmN0aW9uKCl7Y2FsbGJhY2sodGhpcy5lcnJvcil9KX0pLHJlY29uY2lsZTooZnVuY3Rpb24oc3JjLGRzdCxjYWxsYmFjayl7dmFyIHRvdGFsPTA7dmFyIGNyZWF0ZT1bXTtPYmplY3Qua2V5cyhzcmMuZW50cmllcykuZm9yRWFjaCgoZnVuY3Rpb24oa2V5KXt2YXIgZT1zcmMuZW50cmllc1trZXldO3ZhciBlMj1kc3QuZW50cmllc1trZXldO2lmKCFlMnx8ZS50aW1lc3RhbXA+ZTIudGltZXN0YW1wKXtjcmVhdGUucHVzaChrZXkpO3RvdGFsKyt9fSkpO3ZhciByZW1vdmU9W107T2JqZWN0LmtleXMoZHN0LmVudHJpZXMpLmZvckVhY2goKGZ1bmN0aW9uKGtleSl7dmFyIGU9ZHN0LmVudHJpZXNba2V5XTt2YXIgZTI9c3JjLmVudHJpZXNba2V5XTtpZighZTIpe3JlbW92ZS5wdXNoKGtleSk7dG90YWwrK319KSk7aWYoIXRvdGFsKXtyZXR1cm4gY2FsbGJhY2sobnVsbCl9dmFyIGVycm9yZWQ9ZmFsc2U7dmFyIGNvbXBsZXRlZD0wO3ZhciBkYj1zcmMudHlwZT09PSJyZW1vdGUiP3NyYy5kYjpkc3QuZGI7dmFyIHRyYW5zYWN0aW9uPWRiLnRyYW5zYWN0aW9uKFtJREJGUy5EQl9TVE9SRV9OQU1FXSwicmVhZHdyaXRlIik7dmFyIHN0b3JlPXRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKElEQkZTLkRCX1NUT1JFX05BTUUpO2Z1bmN0aW9uIGRvbmUoZXJyKXtpZihlcnIpe2lmKCFkb25lLmVycm9yZWQpe2RvbmUuZXJyb3JlZD10cnVlO3JldHVybiBjYWxsYmFjayhlcnIpfXJldHVybn1pZigrK2NvbXBsZXRlZD49dG90YWwpe3JldHVybiBjYWxsYmFjayhudWxsKX19dHJhbnNhY3Rpb24ub25lcnJvcj0oZnVuY3Rpb24oKXtkb25lKHRoaXMuZXJyb3IpfSk7Y3JlYXRlLnNvcnQoKS5mb3JFYWNoKChmdW5jdGlvbihwYXRoKXtpZihkc3QudHlwZT09PSJsb2NhbCIpe0lEQkZTLmxvYWRSZW1vdGVFbnRyeShzdG9yZSxwYXRoLChmdW5jdGlvbihlcnIsZW50cnkpe2lmKGVycilyZXR1cm4gZG9uZShlcnIpO0lEQkZTLnN0b3JlTG9jYWxFbnRyeShwYXRoLGVudHJ5LGRvbmUpfSkpfWVsc2V7SURCRlMubG9hZExvY2FsRW50cnkocGF0aCwoZnVuY3Rpb24oZXJyLGVudHJ5KXtpZihlcnIpcmV0dXJuIGRvbmUoZXJyKTtJREJGUy5zdG9yZVJlbW90ZUVudHJ5KHN0b3JlLHBhdGgsZW50cnksZG9uZSl9KSl9fSkpO3JlbW92ZS5zb3J0KCkucmV2ZXJzZSgpLmZvckVhY2goKGZ1bmN0aW9uKHBhdGgpe2lmKGRzdC50eXBlPT09ImxvY2FsIil7SURCRlMucmVtb3ZlTG9jYWxFbnRyeShwYXRoLGRvbmUpfWVsc2V7SURCRlMucmVtb3ZlUmVtb3RlRW50cnkoc3RvcmUscGF0aCxkb25lKX19KSl9KX07dmFyIE5PREVGUz17aXNXaW5kb3dzOmZhbHNlLHN0YXRpY0luaXQ6KGZ1bmN0aW9uKCl7Tk9ERUZTLmlzV2luZG93cz0hIXByb2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vKX0pLG1vdW50OihmdW5jdGlvbihtb3VudCl7YXNzZXJ0KEVOVklST05NRU5UX0lTX05PREUpO3JldHVybiBOT0RFRlMuY3JlYXRlTm9kZShudWxsLCIvIixOT0RFRlMuZ2V0TW9kZShtb3VudC5vcHRzLnJvb3QpLDApfSksY3JlYXRlTm9kZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe2lmKCFGUy5pc0Rpcihtb2RlKSYmIUZTLmlzRmlsZShtb2RlKSYmIUZTLmlzTGluayhtb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbm9kZT1GUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUpO25vZGUubm9kZV9vcHM9Tk9ERUZTLm5vZGVfb3BzO25vZGUuc3RyZWFtX29wcz1OT0RFRlMuc3RyZWFtX29wcztyZXR1cm4gbm9kZX0pLGdldE1vZGU6KGZ1bmN0aW9uKHBhdGgpe3ZhciBzdGF0O3RyeXtzdGF0PWZzLmxzdGF0U3luYyhwYXRoKTtpZihOT0RFRlMuaXNXaW5kb3dzKXtzdGF0Lm1vZGU9c3RhdC5tb2RlfChzdGF0Lm1vZGUmMTQ2KT4+MX19Y2F0Y2goZSl7aWYoIWUuY29kZSl0aHJvdyBlO3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pfXJldHVybiBzdGF0Lm1vZGV9KSxyZWFsUGF0aDooZnVuY3Rpb24obm9kZSl7dmFyIHBhcnRzPVtdO3doaWxlKG5vZGUucGFyZW50IT09bm9kZSl7cGFydHMucHVzaChub2RlLm5hbWUpO25vZGU9bm9kZS5wYXJlbnR9cGFydHMucHVzaChub2RlLm1vdW50Lm9wdHMucm9vdCk7cGFydHMucmV2ZXJzZSgpO3JldHVybiBQQVRILmpvaW4uYXBwbHkobnVsbCxwYXJ0cyl9KSxmbGFnc1RvUGVybWlzc2lvblN0cmluZ01hcDp7MDoiciIsMToicisiLDI6InIrIiw2NDoiciIsNjU6InIrIiw2NjoicisiLDEyOToicngrIiwxOTM6InJ4KyIsNTE0OiJ3KyIsNTc3OiJ3Iiw1Nzg6IncrIiw3MDU6Ind4Iiw3MDY6Ind4KyIsMTAyNDoiYSIsMTAyNToiYSIsMTAyNjoiYSsiLDEwODk6ImEiLDEwOTA6ImErIiwxMTUzOiJheCIsMTE1NDoiYXgrIiwxMjE3OiJheCIsMTIxODoiYXgrIiw0MDk2OiJycyIsNDA5ODoicnMrIn0sZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmc6KGZ1bmN0aW9uKGZsYWdzKXtpZihmbGFncyBpbiBOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmdNYXApe3JldHVybiBOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmdNYXBbZmxhZ3NdfWVsc2V7cmV0dXJuIGZsYWdzfX0pLG5vZGVfb3BzOntnZXRhdHRyOihmdW5jdGlvbihub2RlKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dmFyIHN0YXQ7dHJ5e3N0YXQ9ZnMubHN0YXRTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1pZihOT0RFRlMuaXNXaW5kb3dzJiYhc3RhdC5ibGtzaXplKXtzdGF0LmJsa3NpemU9NDA5Nn1pZihOT0RFRlMuaXNXaW5kb3dzJiYhc3RhdC5ibG9ja3Mpe3N0YXQuYmxvY2tzPShzdGF0LnNpemUrc3RhdC5ibGtzaXplLTEpL3N0YXQuYmxrc2l6ZXwwfXJldHVybntkZXY6c3RhdC5kZXYsaW5vOnN0YXQuaW5vLG1vZGU6c3RhdC5tb2RlLG5saW5rOnN0YXQubmxpbmssdWlkOnN0YXQudWlkLGdpZDpzdGF0LmdpZCxyZGV2OnN0YXQucmRldixzaXplOnN0YXQuc2l6ZSxhdGltZTpzdGF0LmF0aW1lLG10aW1lOnN0YXQubXRpbWUsY3RpbWU6c3RhdC5jdGltZSxibGtzaXplOnN0YXQuYmxrc2l6ZSxibG9ja3M6c3RhdC5ibG9ja3N9fSksc2V0YXR0cjooZnVuY3Rpb24obm9kZSxhdHRyKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dHJ5e2lmKGF0dHIubW9kZSE9PXVuZGVmaW5lZCl7ZnMuY2htb2RTeW5jKHBhdGgsYXR0ci5tb2RlKTtub2RlLm1vZGU9YXR0ci5tb2RlfWlmKGF0dHIudGltZXN0YW1wIT09dW5kZWZpbmVkKXt2YXIgZGF0ZT1uZXcgRGF0ZShhdHRyLnRpbWVzdGFtcCk7ZnMudXRpbWVzU3luYyhwYXRoLGRhdGUsZGF0ZSl9aWYoYXR0ci5zaXplIT09dW5kZWZpbmVkKXtmcy50cnVuY2F0ZVN5bmMocGF0aCxhdHRyLnNpemUpfX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSksbG9va3VwOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIHBhdGg9UEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSxuYW1lKTt2YXIgbW9kZT1OT0RFRlMuZ2V0TW9kZShwYXRoKTtyZXR1cm4gTk9ERUZTLmNyZWF0ZU5vZGUocGFyZW50LG5hbWUsbW9kZSl9KSxta25vZDooZnVuY3Rpb24ocGFyZW50LG5hbWUsbW9kZSxkZXYpe3ZhciBub2RlPU5PREVGUy5jcmVhdGVOb2RlKHBhcmVudCxuYW1lLG1vZGUsZGV2KTt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgobm9kZSk7dHJ5e2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2ZzLm1rZGlyU3luYyhwYXRoLG5vZGUubW9kZSl9ZWxzZXtmcy53cml0ZUZpbGVTeW5jKHBhdGgsIiIse21vZGU6bm9kZS5tb2RlfSl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1yZXR1cm4gbm9kZX0pLHJlbmFtZTooZnVuY3Rpb24ob2xkTm9kZSxuZXdEaXIsbmV3TmFtZSl7dmFyIG9sZFBhdGg9Tk9ERUZTLnJlYWxQYXRoKG9sZE5vZGUpO3ZhciBuZXdQYXRoPVBBVEguam9pbjIoTk9ERUZTLnJlYWxQYXRoKG5ld0RpciksbmV3TmFtZSk7dHJ5e2ZzLnJlbmFtZVN5bmMob2xkUGF0aCxuZXdQYXRoKX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSksdW5saW5rOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIHBhdGg9UEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSxuYW1lKTt0cnl7ZnMudW5saW5rU3luYyhwYXRoKX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fSkscm1kaXI6KGZ1bmN0aW9uKHBhcmVudCxuYW1lKXt2YXIgcGF0aD1QQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLG5hbWUpO3RyeXtmcy5ybWRpclN5bmMocGF0aCl9Y2F0Y2goZSl7aWYoIWUuY29kZSl0aHJvdyBlO3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pfX0pLHJlYWRkaXI6KGZ1bmN0aW9uKG5vZGUpe3ZhciBwYXRoPU5PREVGUy5yZWFsUGF0aChub2RlKTt0cnl7cmV0dXJuIGZzLnJlYWRkaXJTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxzeW1saW5rOihmdW5jdGlvbihwYXJlbnQsbmV3TmFtZSxvbGRQYXRoKXt2YXIgbmV3UGF0aD1QQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLG5ld05hbWUpO3RyeXtmcy5zeW1saW5rU3luYyhvbGRQYXRoLG5ld1BhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxyZWFkbGluazooZnVuY3Rpb24obm9kZSl7dmFyIHBhdGg9Tk9ERUZTLnJlYWxQYXRoKG5vZGUpO3RyeXtyZXR1cm4gZnMucmVhZGxpbmtTeW5jKHBhdGgpfWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KX0sc3RyZWFtX29wczp7b3BlbjooZnVuY3Rpb24oc3RyZWFtKXt2YXIgcGF0aD1OT0RFRlMucmVhbFBhdGgoc3RyZWFtLm5vZGUpO3RyeXtpZihGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkpe3N0cmVhbS5uZmQ9ZnMub3BlblN5bmMocGF0aCxOT0RFRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoc3RyZWFtLmZsYWdzKSl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxjbG9zZTooZnVuY3Rpb24oc3RyZWFtKXt0cnl7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpJiZzdHJlYW0ubmZkKXtmcy5jbG9zZVN5bmMoc3RyZWFtLm5mZCl9fWNhdGNoKGUpe2lmKCFlLmNvZGUpdGhyb3cgZTt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBuYnVmZmVyPW5ldyBCdWZmZXIobGVuZ3RoKTt2YXIgcmVzO3RyeXtyZXM9ZnMucmVhZFN5bmMoc3RyZWFtLm5mZCxuYnVmZmVyLDAsbGVuZ3RoLHBvc2l0aW9uKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1pZihyZXM+MCl7Zm9yKHZhciBpPTA7aTxyZXM7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPW5idWZmZXJbaV19fXJldHVybiByZXN9KSx3cml0ZTooZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgbmJ1ZmZlcj1uZXcgQnVmZmVyKGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsb2Zmc2V0K2xlbmd0aCkpO3ZhciByZXM7dHJ5e3Jlcz1mcy53cml0ZVN5bmMoc3RyZWFtLm5mZCxuYnVmZmVyLDAsbGVuZ3RoLHBvc2l0aW9uKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKX1yZXR1cm4gcmVzfSksbGxzZWVrOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LHdoZW5jZSl7dmFyIHBvc2l0aW9uPW9mZnNldDtpZih3aGVuY2U9PT0xKXtwb3NpdGlvbis9c3RyZWFtLnBvc2l0aW9ufWVsc2UgaWYod2hlbmNlPT09Mil7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXt0cnl7dmFyIHN0YXQ9ZnMuZnN0YXRTeW5jKHN0cmVhbS5uZmQpO3Bvc2l0aW9uKz1zdGF0LnNpemV9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSl9fX1pZihwb3NpdGlvbjwwKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfXN0cmVhbS5wb3NpdGlvbj1wb3NpdGlvbjtyZXR1cm4gcG9zaXRpb259KX19O3ZhciBfc3RkaW49YWxsb2NhdGUoMSwiaTMyKiIsQUxMT0NfU1RBVElDKTt2YXIgX3N0ZG91dD1hbGxvY2F0ZSgxLCJpMzIqIixBTExPQ19TVEFUSUMpO3ZhciBfc3RkZXJyPWFsbG9jYXRlKDEsImkzMioiLEFMTE9DX1NUQVRJQyk7dmFyIEZTPXtyb290Om51bGwsbW91bnRzOltdLGRldmljZXM6W251bGxdLHN0cmVhbXM6W10sbmV4dElub2RlOjEsbmFtZVRhYmxlOm51bGwsY3VycmVudFBhdGg6Ii8iLGluaXRpYWxpemVkOmZhbHNlLGlnbm9yZVBlcm1pc3Npb25zOnRydWUsdHJhY2tpbmdEZWxlZ2F0ZTp7fSx0cmFja2luZzp7b3BlbkZsYWdzOntSRUFEOjEsV1JJVEU6Mn19LEVycm5vRXJyb3I6bnVsbCxnZW5lcmljRXJyb3JzOnt9LGhhbmRsZUZTRXJyb3I6KGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGUrIiA6ICIrc3RhY2tUcmFjZSgpO3JldHVybiBfX19zZXRFcnJObyhlLmVycm5vKX0pLGxvb2t1cFBhdGg6KGZ1bmN0aW9uKHBhdGgsb3B0cyl7cGF0aD1QQVRILnJlc29sdmUoRlMuY3dkKCkscGF0aCk7b3B0cz1vcHRzfHx7fTt2YXIgZGVmYXVsdHM9e2ZvbGxvd19tb3VudDp0cnVlLHJlY3Vyc2VfY291bnQ6MH07Zm9yKHZhciBrZXkgaW4gZGVmYXVsdHMpe2lmKG9wdHNba2V5XT09PXVuZGVmaW5lZCl7b3B0c1trZXldPWRlZmF1bHRzW2tleV19fWlmKG9wdHMucmVjdXJzZV9jb3VudD44KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTE9PUCl9dmFyIHBhcnRzPVBBVEgubm9ybWFsaXplQXJyYXkocGF0aC5zcGxpdCgiLyIpLmZpbHRlcigoZnVuY3Rpb24ocCl7cmV0dXJuISFwfSkpLGZhbHNlKTt2YXIgY3VycmVudD1GUy5yb290O3ZhciBjdXJyZW50X3BhdGg9Ii8iO2Zvcih2YXIgaT0wO2k8cGFydHMubGVuZ3RoO2krKyl7dmFyIGlzbGFzdD1pPT09cGFydHMubGVuZ3RoLTE7aWYoaXNsYXN0JiZvcHRzLnBhcmVudCl7YnJlYWt9Y3VycmVudD1GUy5sb29rdXBOb2RlKGN1cnJlbnQscGFydHNbaV0pO2N1cnJlbnRfcGF0aD1QQVRILmpvaW4yKGN1cnJlbnRfcGF0aCxwYXJ0c1tpXSk7aWYoRlMuaXNNb3VudHBvaW50KGN1cnJlbnQpKXtpZighaXNsYXN0fHxpc2xhc3QmJm9wdHMuZm9sbG93X21vdW50KXtjdXJyZW50PWN1cnJlbnQubW91bnRlZC5yb290fX1pZighaXNsYXN0fHxvcHRzLmZvbGxvdyl7dmFyIGNvdW50PTA7d2hpbGUoRlMuaXNMaW5rKGN1cnJlbnQubW9kZSkpe3ZhciBsaW5rPUZTLnJlYWRsaW5rKGN1cnJlbnRfcGF0aCk7Y3VycmVudF9wYXRoPVBBVEgucmVzb2x2ZShQQVRILmRpcm5hbWUoY3VycmVudF9wYXRoKSxsaW5rKTt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgoY3VycmVudF9wYXRoLHtyZWN1cnNlX2NvdW50Om9wdHMucmVjdXJzZV9jb3VudH0pO2N1cnJlbnQ9bG9va3VwLm5vZGU7aWYoY291bnQrKz40MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUxPT1ApfX19fXJldHVybntwYXRoOmN1cnJlbnRfcGF0aCxub2RlOmN1cnJlbnR9fSksZ2V0UGF0aDooZnVuY3Rpb24obm9kZSl7dmFyIHBhdGg7d2hpbGUodHJ1ZSl7aWYoRlMuaXNSb290KG5vZGUpKXt2YXIgbW91bnQ9bm9kZS5tb3VudC5tb3VudHBvaW50O2lmKCFwYXRoKXJldHVybiBtb3VudDtyZXR1cm4gbW91bnRbbW91bnQubGVuZ3RoLTFdIT09Ii8iP21vdW50KyIvIitwYXRoOm1vdW50K3BhdGh9cGF0aD1wYXRoP25vZGUubmFtZSsiLyIrcGF0aDpub2RlLm5hbWU7bm9kZT1ub2RlLnBhcmVudH19KSxoYXNoTmFtZTooZnVuY3Rpb24ocGFyZW50aWQsbmFtZSl7dmFyIGhhc2g9MDtmb3IodmFyIGk9MDtpPG5hbWUubGVuZ3RoO2krKyl7aGFzaD0oaGFzaDw8NSktaGFzaCtuYW1lLmNoYXJDb2RlQXQoaSl8MH1yZXR1cm4ocGFyZW50aWQraGFzaD4+PjApJUZTLm5hbWVUYWJsZS5sZW5ndGh9KSxoYXNoQWRkTm9kZTooZnVuY3Rpb24obm9kZSl7dmFyIGhhc2g9RlMuaGFzaE5hbWUobm9kZS5wYXJlbnQuaWQsbm9kZS5uYW1lKTtub2RlLm5hbWVfbmV4dD1GUy5uYW1lVGFibGVbaGFzaF07RlMubmFtZVRhYmxlW2hhc2hdPW5vZGV9KSxoYXNoUmVtb3ZlTm9kZTooZnVuY3Rpb24obm9kZSl7dmFyIGhhc2g9RlMuaGFzaE5hbWUobm9kZS5wYXJlbnQuaWQsbm9kZS5uYW1lKTtpZihGUy5uYW1lVGFibGVbaGFzaF09PT1ub2RlKXtGUy5uYW1lVGFibGVbaGFzaF09bm9kZS5uYW1lX25leHR9ZWxzZXt2YXIgY3VycmVudD1GUy5uYW1lVGFibGVbaGFzaF07d2hpbGUoY3VycmVudCl7aWYoY3VycmVudC5uYW1lX25leHQ9PT1ub2RlKXtjdXJyZW50Lm5hbWVfbmV4dD1ub2RlLm5hbWVfbmV4dDticmVha31jdXJyZW50PWN1cnJlbnQubmFtZV9uZXh0fX19KSxsb29rdXBOb2RlOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7dmFyIGVycj1GUy5tYXlMb29rdXAocGFyZW50KTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9dmFyIGhhc2g9RlMuaGFzaE5hbWUocGFyZW50LmlkLG5hbWUpO2Zvcih2YXIgbm9kZT1GUy5uYW1lVGFibGVbaGFzaF07bm9kZTtub2RlPW5vZGUubmFtZV9uZXh0KXt2YXIgbm9kZU5hbWU9bm9kZS5uYW1lO2lmKG5vZGUucGFyZW50LmlkPT09cGFyZW50LmlkJiZub2RlTmFtZT09PW5hbWUpe3JldHVybiBub2RlfX1yZXR1cm4gRlMubG9va3VwKHBhcmVudCxuYW1lKX0pLGNyZWF0ZU5vZGU6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLG1vZGUscmRldil7aWYoIUZTLkZTTm9kZSl7RlMuRlNOb2RlPShmdW5jdGlvbihwYXJlbnQsbmFtZSxtb2RlLHJkZXYpe2lmKCFwYXJlbnQpe3BhcmVudD10aGlzfXRoaXMucGFyZW50PXBhcmVudDt0aGlzLm1vdW50PXBhcmVudC5tb3VudDt0aGlzLm1vdW50ZWQ9bnVsbDt0aGlzLmlkPUZTLm5leHRJbm9kZSsrO3RoaXMubmFtZT1uYW1lO3RoaXMubW9kZT1tb2RlO3RoaXMubm9kZV9vcHM9e307dGhpcy5zdHJlYW1fb3BzPXt9O3RoaXMucmRldj1yZGV2fSk7RlMuRlNOb2RlLnByb3RvdHlwZT17fTt2YXIgcmVhZE1vZGU9MjkyfDczO3ZhciB3cml0ZU1vZGU9MTQ2O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZTLkZTTm9kZS5wcm90b3R5cGUse3JlYWQ6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5tb2RlJnJlYWRNb2RlKT09PXJlYWRNb2RlfSksc2V0OihmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXJlYWRNb2RlOnRoaXMubW9kZSY9fnJlYWRNb2RlfSl9LHdyaXRlOntnZXQ6KGZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMubW9kZSZ3cml0ZU1vZGUpPT09d3JpdGVNb2RlfSksc2V0OihmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXdyaXRlTW9kZTp0aGlzLm1vZGUmPX53cml0ZU1vZGV9KX0saXNGb2xkZXI6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4gRlMuaXNEaXIodGhpcy5tb2RlKX0pfSxpc0RldmljZTp7Z2V0OihmdW5jdGlvbigpe3JldHVybiBGUy5pc0NocmRldih0aGlzLm1vZGUpfSl9fSl9dmFyIG5vZGU9bmV3IEZTLkZTTm9kZShwYXJlbnQsbmFtZSxtb2RlLHJkZXYpO0ZTLmhhc2hBZGROb2RlKG5vZGUpO3JldHVybiBub2RlfSksZGVzdHJveU5vZGU6KGZ1bmN0aW9uKG5vZGUpe0ZTLmhhc2hSZW1vdmVOb2RlKG5vZGUpfSksaXNSb290OihmdW5jdGlvbihub2RlKXtyZXR1cm4gbm9kZT09PW5vZGUucGFyZW50fSksaXNNb3VudHBvaW50OihmdW5jdGlvbihub2RlKXtyZXR1cm4hIW5vZGUubW91bnRlZH0pLGlzRmlsZTooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MzI3Njh9KSxpc0RpcjooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MTYzODR9KSxpc0xpbms6KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTQwOTYwfSksaXNDaHJkZXY6KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTgxOTJ9KSxpc0Jsa2RldjooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNjE0NDApPT09MjQ1NzZ9KSxpc0ZJRk86KGZ1bmN0aW9uKG1vZGUpe3JldHVybihtb2RlJjYxNDQwKT09PTQwOTZ9KSxpc1NvY2tldDooZnVuY3Rpb24obW9kZSl7cmV0dXJuKG1vZGUmNDkxNTIpPT09NDkxNTJ9KSxmbGFnTW9kZXM6eyJyIjowLCJycyI6MTA1MjY3MiwicisiOjIsInciOjU3Nywid3giOjcwNSwieHciOjcwNSwidysiOjU3OCwid3grIjo3MDYsInh3KyI6NzA2LCJhIjoxMDg5LCJheCI6MTIxNywieGEiOjEyMTcsImErIjoxMDkwLCJheCsiOjEyMTgsInhhKyI6MTIxOH0sbW9kZVN0cmluZ1RvRmxhZ3M6KGZ1bmN0aW9uKHN0cil7dmFyIGZsYWdzPUZTLmZsYWdNb2Rlc1tzdHJdO2lmKHR5cGVvZiBmbGFncz09PSJ1bmRlZmluZWQiKXt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZmlsZSBvcGVuIG1vZGU6ICIrc3RyKX1yZXR1cm4gZmxhZ3N9KSxmbGFnc1RvUGVybWlzc2lvblN0cmluZzooZnVuY3Rpb24oZmxhZyl7dmFyIGFjY21vZGU9ZmxhZyYyMDk3MTU1O3ZhciBwZXJtcz1bInIiLCJ3IiwicnciXVthY2Ntb2RlXTtpZihmbGFnJjUxMil7cGVybXMrPSJ3In1yZXR1cm4gcGVybXN9KSxub2RlUGVybWlzc2lvbnM6KGZ1bmN0aW9uKG5vZGUscGVybXMpe2lmKEZTLmlnbm9yZVBlcm1pc3Npb25zKXtyZXR1cm4gMH1pZihwZXJtcy5pbmRleE9mKCJyIikhPT0tMSYmIShub2RlLm1vZGUmMjkyKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVBQ0NFU31lbHNlIGlmKHBlcm1zLmluZGV4T2YoInciKSE9PS0xJiYhKG5vZGUubW9kZSYxNDYpKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUFDQ0VTfWVsc2UgaWYocGVybXMuaW5kZXhPZigieCIpIT09LTEmJiEobm9kZS5tb2RlJjczKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVBQ0NFU31yZXR1cm4gMH0pLG1heUxvb2t1cDooZnVuY3Rpb24oZGlyKXtyZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKGRpciwieCIpfSksbWF5Q3JlYXRlOihmdW5jdGlvbihkaXIsbmFtZSl7dHJ5e3ZhciBub2RlPUZTLmxvb2t1cE5vZGUoZGlyLG5hbWUpO3JldHVybiBFUlJOT19DT0RFUy5FRVhJU1R9Y2F0Y2goZSl7fXJldHVybiBGUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpfSksbWF5RGVsZXRlOihmdW5jdGlvbihkaXIsbmFtZSxpc2Rpcil7dmFyIG5vZGU7dHJ5e25vZGU9RlMubG9va3VwTm9kZShkaXIsbmFtZSl9Y2F0Y2goZSl7cmV0dXJuIGUuZXJybm99dmFyIGVycj1GUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpO2lmKGVycil7cmV0dXJuIGVycn1pZihpc2Rpcil7aWYoIUZTLmlzRGlyKG5vZGUubW9kZSkpe3JldHVybiBFUlJOT19DT0RFUy5FTk9URElSfWlmKEZTLmlzUm9vdChub2RlKXx8RlMuZ2V0UGF0aChub2RlKT09PUZTLmN3ZCgpKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUJVU1l9fWVsc2V7aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVJU0RJUn19cmV0dXJuIDB9KSxtYXlPcGVuOihmdW5jdGlvbihub2RlLGZsYWdzKXtpZighbm9kZSl7cmV0dXJuIEVSUk5PX0NPREVTLkVOT0VOVH1pZihGUy5pc0xpbmsobm9kZS5tb2RlKSl7cmV0dXJuIEVSUk5PX0NPREVTLkVMT09QfWVsc2UgaWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7aWYoKGZsYWdzJjIwOTcxNTUpIT09MHx8ZmxhZ3MmNTEyKXtyZXR1cm4gRVJSTk9fQ09ERVMuRUlTRElSfX1yZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKG5vZGUsRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoZmxhZ3MpKX0pLE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZDooZnVuY3Rpb24oZmRfc3RhcnQsZmRfZW5kKXtmZF9zdGFydD1mZF9zdGFydHx8MDtmZF9lbmQ9ZmRfZW5kfHxGUy5NQVhfT1BFTl9GRFM7Zm9yKHZhciBmZD1mZF9zdGFydDtmZDw9ZmRfZW5kO2ZkKyspe2lmKCFGUy5zdHJlYW1zW2ZkXSl7cmV0dXJuIGZkfX10aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTUZJTEUpfSksZ2V0U3RyZWFtOihmdW5jdGlvbihmZCl7cmV0dXJuIEZTLnN0cmVhbXNbZmRdfSksY3JlYXRlU3RyZWFtOihmdW5jdGlvbihzdHJlYW0sZmRfc3RhcnQsZmRfZW5kKXtpZighRlMuRlNTdHJlYW0pe0ZTLkZTU3RyZWFtPShmdW5jdGlvbigpe30pO0ZTLkZTU3RyZWFtLnByb3RvdHlwZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGUy5GU1N0cmVhbS5wcm90b3R5cGUse29iamVjdDp7Z2V0OihmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9KSxzZXQ6KGZ1bmN0aW9uKHZhbCl7dGhpcy5ub2RlPXZhbH0pfSxpc1JlYWQ6e2dldDooZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5mbGFncyYyMDk3MTU1KSE9PTF9KX0saXNXcml0ZTp7Z2V0OihmdW5jdGlvbigpe3JldHVybih0aGlzLmZsYWdzJjIwOTcxNTUpIT09MH0pfSxpc0FwcGVuZDp7Z2V0OihmdW5jdGlvbigpe3JldHVybiB0aGlzLmZsYWdzJjEwMjR9KX19KX12YXIgbmV3U3RyZWFtPW5ldyBGUy5GU1N0cmVhbTtmb3IodmFyIHAgaW4gc3RyZWFtKXtuZXdTdHJlYW1bcF09c3RyZWFtW3BdfXN0cmVhbT1uZXdTdHJlYW07dmFyIGZkPUZTLm5leHRmZChmZF9zdGFydCxmZF9lbmQpO3N0cmVhbS5mZD1mZDtGUy5zdHJlYW1zW2ZkXT1zdHJlYW07cmV0dXJuIHN0cmVhbX0pLGNsb3NlU3RyZWFtOihmdW5jdGlvbihmZCl7RlMuc3RyZWFtc1tmZF09bnVsbH0pLGdldFN0cmVhbUZyb21QdHI6KGZ1bmN0aW9uKHB0cil7cmV0dXJuIEZTLnN0cmVhbXNbcHRyLTFdfSksZ2V0UHRyRm9yU3RyZWFtOihmdW5jdGlvbihzdHJlYW0pe3JldHVybiBzdHJlYW0/c3RyZWFtLmZkKzE6MH0pLGNocmRldl9zdHJlYW1fb3BzOntvcGVuOihmdW5jdGlvbihzdHJlYW0pe3ZhciBkZXZpY2U9RlMuZ2V0RGV2aWNlKHN0cmVhbS5ub2RlLnJkZXYpO3N0cmVhbS5zdHJlYW1fb3BzPWRldmljZS5zdHJlYW1fb3BzO2lmKHN0cmVhbS5zdHJlYW1fb3BzLm9wZW4pe3N0cmVhbS5zdHJlYW1fb3BzLm9wZW4oc3RyZWFtKX19KSxsbHNlZWs6KGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKX0pfSxtYWpvcjooZnVuY3Rpb24oZGV2KXtyZXR1cm4gZGV2Pj44fSksbWlub3I6KGZ1bmN0aW9uKGRldil7cmV0dXJuIGRldiYyNTV9KSxtYWtlZGV2OihmdW5jdGlvbihtYSxtaSl7cmV0dXJuIG1hPDw4fG1pfSkscmVnaXN0ZXJEZXZpY2U6KGZ1bmN0aW9uKGRldixvcHMpe0ZTLmRldmljZXNbZGV2XT17c3RyZWFtX29wczpvcHN9fSksZ2V0RGV2aWNlOihmdW5jdGlvbihkZXYpe3JldHVybiBGUy5kZXZpY2VzW2Rldl19KSxnZXRNb3VudHM6KGZ1bmN0aW9uKG1vdW50KXt2YXIgbW91bnRzPVtdO3ZhciBjaGVjaz1bbW91bnRdO3doaWxlKGNoZWNrLmxlbmd0aCl7dmFyIG09Y2hlY2sucG9wKCk7bW91bnRzLnB1c2gobSk7Y2hlY2sucHVzaC5hcHBseShjaGVjayxtLm1vdW50cyl9cmV0dXJuIG1vdW50c30pLHN5bmNmczooZnVuY3Rpb24ocG9wdWxhdGUsY2FsbGJhY2spe2lmKHR5cGVvZiBwb3B1bGF0ZT09PSJmdW5jdGlvbiIpe2NhbGxiYWNrPXBvcHVsYXRlO3BvcHVsYXRlPWZhbHNlfXZhciBtb3VudHM9RlMuZ2V0TW91bnRzKEZTLnJvb3QubW91bnQpO3ZhciBjb21wbGV0ZWQ9MDtmdW5jdGlvbiBkb25lKGVycil7aWYoZXJyKXtpZighZG9uZS5lcnJvcmVkKXtkb25lLmVycm9yZWQ9dHJ1ZTtyZXR1cm4gY2FsbGJhY2soZXJyKX1yZXR1cm59aWYoKytjb21wbGV0ZWQ+PW1vdW50cy5sZW5ndGgpe2NhbGxiYWNrKG51bGwpfX1tb3VudHMuZm9yRWFjaCgoZnVuY3Rpb24obW91bnQpe2lmKCFtb3VudC50eXBlLnN5bmNmcyl7cmV0dXJuIGRvbmUobnVsbCl9bW91bnQudHlwZS5zeW5jZnMobW91bnQscG9wdWxhdGUsZG9uZSl9KSl9KSxtb3VudDooZnVuY3Rpb24odHlwZSxvcHRzLG1vdW50cG9pbnQpe3ZhciByb290PW1vdW50cG9pbnQ9PT0iLyI7dmFyIHBzZXVkbz0hbW91bnRwb2ludDt2YXIgbm9kZTtpZihyb290JiZGUy5yb290KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQlVTWSl9ZWxzZSBpZighcm9vdCYmIXBzZXVkbyl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKG1vdW50cG9pbnQse2ZvbGxvd19tb3VudDpmYWxzZX0pO21vdW50cG9pbnQ9bG9va3VwLnBhdGg7bm9kZT1sb29rdXAubm9kZTtpZihGUy5pc01vdW50cG9pbnQobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKX1pZighRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVERJUil9fXZhciBtb3VudD17dHlwZTp0eXBlLG9wdHM6b3B0cyxtb3VudHBvaW50Om1vdW50cG9pbnQsbW91bnRzOltdfTt2YXIgbW91bnRSb290PXR5cGUubW91bnQobW91bnQpO21vdW50Um9vdC5tb3VudD1tb3VudDttb3VudC5yb290PW1vdW50Um9vdDtpZihyb290KXtGUy5yb290PW1vdW50Um9vdH1lbHNlIGlmKG5vZGUpe25vZGUubW91bnRlZD1tb3VudDtpZihub2RlLm1vdW50KXtub2RlLm1vdW50Lm1vdW50cy5wdXNoKG1vdW50KX19cmV0dXJuIG1vdW50Um9vdH0pLHVubW91bnQ6KGZ1bmN0aW9uKG1vdW50cG9pbnQpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChtb3VudHBvaW50LHtmb2xsb3dfbW91bnQ6ZmFsc2V9KTtpZighRlMuaXNNb3VudHBvaW50KGxvb2t1cC5ub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbm9kZT1sb29rdXAubm9kZTt2YXIgbW91bnQ9bm9kZS5tb3VudGVkO3ZhciBtb3VudHM9RlMuZ2V0TW91bnRzKG1vdW50KTtPYmplY3Qua2V5cyhGUy5uYW1lVGFibGUpLmZvckVhY2goKGZ1bmN0aW9uKGhhc2gpe3ZhciBjdXJyZW50PUZTLm5hbWVUYWJsZVtoYXNoXTt3aGlsZShjdXJyZW50KXt2YXIgbmV4dD1jdXJyZW50Lm5hbWVfbmV4dDtpZihtb3VudHMuaW5kZXhPZihjdXJyZW50Lm1vdW50KSE9PS0xKXtGUy5kZXN0cm95Tm9kZShjdXJyZW50KX1jdXJyZW50PW5leHR9fSkpO25vZGUubW91bnRlZD1udWxsO3ZhciBpZHg9bm9kZS5tb3VudC5tb3VudHMuaW5kZXhPZihtb3VudCk7YXNzZXJ0KGlkeCE9PS0xKTtub2RlLm1vdW50Lm1vdW50cy5zcGxpY2UoaWR4LDEpfSksbG9va3VwOihmdW5jdGlvbihwYXJlbnQsbmFtZSl7cmV0dXJuIHBhcmVudC5ub2RlX29wcy5sb29rdXAocGFyZW50LG5hbWUpfSksbWtub2Q6KGZ1bmN0aW9uKHBhdGgsbW9kZSxkZXYpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgZXJyPUZTLm1heUNyZWF0ZShwYXJlbnQsbmFtZSk7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfWlmKCFwYXJlbnQubm9kZV9vcHMubWtub2Qpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLm1rbm9kKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0pLGNyZWF0ZTooZnVuY3Rpb24ocGF0aCxtb2RlKXttb2RlPW1vZGUhPT11bmRlZmluZWQ/bW9kZTo0Mzg7bW9kZSY9NDA5NTttb2RlfD0zMjc2ODtyZXR1cm4gRlMubWtub2QocGF0aCxtb2RlLDApfSksbWtkaXI6KGZ1bmN0aW9uKHBhdGgsbW9kZSl7bW9kZT1tb2RlIT09dW5kZWZpbmVkP21vZGU6NTExO21vZGUmPTUxMXw1MTI7bW9kZXw9MTYzODQ7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSwwKX0pLG1rZGV2OihmdW5jdGlvbihwYXRoLG1vZGUsZGV2KXtpZih0eXBlb2YgZGV2PT09InVuZGVmaW5lZCIpe2Rldj1tb2RlO21vZGU9NDM4fW1vZGV8PTgxOTI7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSxkZXYpfSksc3ltbGluazooZnVuY3Rpb24ob2xkcGF0aCxuZXdwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgobmV3cGF0aCx7cGFyZW50OnRydWV9KTt2YXIgcGFyZW50PWxvb2t1cC5ub2RlO3ZhciBuZXduYW1lPVBBVEguYmFzZW5hbWUobmV3cGF0aCk7dmFyIGVycj1GUy5tYXlDcmVhdGUocGFyZW50LG5ld25hbWUpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1pZighcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmsocGFyZW50LG5ld25hbWUsb2xkcGF0aCl9KSxyZW5hbWU6KGZ1bmN0aW9uKG9sZF9wYXRoLG5ld19wYXRoKXt2YXIgb2xkX2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG9sZF9wYXRoKTt2YXIgbmV3X2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG5ld19wYXRoKTt2YXIgb2xkX25hbWU9UEFUSC5iYXNlbmFtZShvbGRfcGF0aCk7dmFyIG5ld19uYW1lPVBBVEguYmFzZW5hbWUobmV3X3BhdGgpO3ZhciBsb29rdXAsb2xkX2RpcixuZXdfZGlyO3RyeXtsb29rdXA9RlMubG9va3VwUGF0aChvbGRfcGF0aCx7cGFyZW50OnRydWV9KTtvbGRfZGlyPWxvb2t1cC5ub2RlO2xvb2t1cD1GUy5sb29rdXBQYXRoKG5ld19wYXRoLHtwYXJlbnQ6dHJ1ZX0pO25ld19kaXI9bG9va3VwLm5vZGV9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfWlmKG9sZF9kaXIubW91bnQhPT1uZXdfZGlyLm1vdW50KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FWERFVil9dmFyIG9sZF9ub2RlPUZTLmxvb2t1cE5vZGUob2xkX2RpcixvbGRfbmFtZSk7dmFyIHJlbGF0aXZlPVBBVEgucmVsYXRpdmUob2xkX3BhdGgsbmV3X2Rpcm5hbWUpO2lmKHJlbGF0aXZlLmNoYXJBdCgwKSE9PSIuIil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1yZWxhdGl2ZT1QQVRILnJlbGF0aXZlKG5ld19wYXRoLG9sZF9kaXJuYW1lKTtpZihyZWxhdGl2ZS5jaGFyQXQoMCkhPT0iLiIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RFTVBUWSl9dmFyIG5ld19ub2RlO3RyeXtuZXdfbm9kZT1GUy5sb29rdXBOb2RlKG5ld19kaXIsbmV3X25hbWUpfWNhdGNoKGUpe31pZihvbGRfbm9kZT09PW5ld19ub2RlKXtyZXR1cm59dmFyIGlzZGlyPUZTLmlzRGlyKG9sZF9ub2RlLm1vZGUpO3ZhciBlcnI9RlMubWF5RGVsZXRlKG9sZF9kaXIsb2xkX25hbWUsaXNkaXIpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1lcnI9bmV3X25vZGU/RlMubWF5RGVsZXRlKG5ld19kaXIsbmV3X25hbWUsaXNkaXIpOkZTLm1heUNyZWF0ZShuZXdfZGlyLG5ld19uYW1lKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoIW9sZF9kaXIubm9kZV9vcHMucmVuYW1lKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9aWYoRlMuaXNNb3VudHBvaW50KG9sZF9ub2RlKXx8bmV3X25vZGUmJkZTLmlzTW91bnRwb2ludChuZXdfbm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKX1pZihuZXdfZGlyIT09b2xkX2Rpcil7ZXJyPUZTLm5vZGVQZXJtaXNzaW9ucyhvbGRfZGlyLCJ3Iik7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfX10cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsid2lsbE1vdmVQYXRoIl0pe0ZTLnRyYWNraW5nRGVsZWdhdGVbIndpbGxNb3ZlUGF0aCJdKG9sZF9wYXRoLG5ld19wYXRoKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxNb3ZlUGF0aCddKCciK29sZF9wYXRoKyInLCAnIituZXdfcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9RlMuaGFzaFJlbW92ZU5vZGUob2xkX25vZGUpO3RyeXtvbGRfZGlyLm5vZGVfb3BzLnJlbmFtZShvbGRfbm9kZSxuZXdfZGlyLG5ld19uYW1lKX1jYXRjaChlKXt0aHJvdyBlfWZpbmFsbHl7RlMuaGFzaEFkZE5vZGUob2xkX25vZGUpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJvbk1vdmVQYXRoIl0pRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25Nb3ZlUGF0aCJdKG9sZF9wYXRoLG5ld19wYXRoKX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25Nb3ZlUGF0aCddKCciK29sZF9wYXRoKyInLCAnIituZXdfcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9fSkscm1kaXI6KGZ1bmN0aW9uKHBhdGgpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgbm9kZT1GUy5sb29rdXBOb2RlKHBhcmVudCxuYW1lKTt2YXIgZXJyPUZTLm1heURlbGV0ZShwYXJlbnQsbmFtZSx0cnVlKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoIXBhcmVudC5ub2RlX29wcy5ybWRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKXtGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKHBhdGgpfX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1wYXJlbnQubm9kZV9vcHMucm1kaXIocGFyZW50LG5hbWUpO0ZTLmRlc3Ryb3lOb2RlKG5vZGUpO3RyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXSlGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXShwYXRoKX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25EZWxldGVQYXRoJ10oJyIrcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9fSkscmVhZGRpcjooZnVuY3Rpb24ocGF0aCl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7aWYoIW5vZGUubm9kZV9vcHMucmVhZGRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVERJUil9cmV0dXJuIG5vZGUubm9kZV9vcHMucmVhZGRpcihub2RlKX0pLHVubGluazooZnVuY3Rpb24ocGF0aCl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse3BhcmVudDp0cnVlfSk7dmFyIHBhcmVudD1sb29rdXAubm9kZTt2YXIgbmFtZT1QQVRILmJhc2VuYW1lKHBhdGgpO3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO3ZhciBlcnI9RlMubWF5RGVsZXRlKHBhcmVudCxuYW1lLGZhbHNlKTtpZihlcnIpe2lmKGVycj09PUVSUk5PX0NPREVTLkVJU0RJUillcnI9RVJSTk9fQ09ERVMuRVBFUk07dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1pZighcGFyZW50Lm5vZGVfb3BzLnVubGluayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpfXRyeXtpZihGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKXtGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKHBhdGgpfX1jYXRjaChlKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1wYXJlbnQubm9kZV9vcHMudW5saW5rKHBhcmVudCxuYW1lKTtGUy5kZXN0cm95Tm9kZShub2RlKTt0cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25EZWxldGVQYXRoIl0pRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25EZWxldGVQYXRoIl0ocGF0aCl9Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uRGVsZXRlUGF0aCddKCciK3BhdGgrIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UpfX0pLHJlYWRsaW5rOihmdW5jdGlvbihwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCk7dmFyIGxpbms9bG9va3VwLm5vZGU7aWYoIWxpbmsubm9kZV9vcHMucmVhZGxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9cmV0dXJuIGxpbmsubm9kZV9vcHMucmVhZGxpbmsobGluayl9KSxzdGF0OihmdW5jdGlvbihwYXRoLGRvbnRGb2xsb3cpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IWRvbnRGb2xsb3d9KTt2YXIgbm9kZT1sb29rdXAubm9kZTtpZighbm9kZS5ub2RlX29wcy5nZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9cmV0dXJuIG5vZGUubm9kZV9vcHMuZ2V0YXR0cihub2RlKX0pLGxzdGF0OihmdW5jdGlvbihwYXRoKXtyZXR1cm4gRlMuc3RhdChwYXRoLHRydWUpfSksY2htb2Q6KGZ1bmN0aW9uKHBhdGgsbW9kZSxkb250Rm9sbG93KXt2YXIgbm9kZTtpZih0eXBlb2YgcGF0aD09PSJzdHJpbmciKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250Rm9sbG93fSk7bm9kZT1sb29rdXAubm9kZX1lbHNle25vZGU9cGF0aH1pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse21vZGU6bW9kZSY0MDk1fG5vZGUubW9kZSZ+NDA5NSx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSksbGNobW9kOihmdW5jdGlvbihwYXRoLG1vZGUpe0ZTLmNobW9kKHBhdGgsbW9kZSx0cnVlKX0pLGZjaG1vZDooZnVuY3Rpb24oZmQsbW9kZSl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1GUy5jaG1vZChzdHJlYW0ubm9kZSxtb2RlKX0pLGNob3duOihmdW5jdGlvbihwYXRoLHVpZCxnaWQsZG9udEZvbGxvdyl7dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzohZG9udEZvbGxvd30pO25vZGU9bG9va3VwLm5vZGV9ZWxzZXtub2RlPXBhdGh9aWYoIW5vZGUubm9kZV9vcHMuc2V0YXR0cil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pfW5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSksbGNob3duOihmdW5jdGlvbihwYXRoLHVpZCxnaWQpe0ZTLmNob3duKHBhdGgsdWlkLGdpZCx0cnVlKX0pLGZjaG93bjooZnVuY3Rpb24oZmQsdWlkLGdpZCl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1GUy5jaG93bihzdHJlYW0ubm9kZSx1aWQsZ2lkKX0pLHRydW5jYXRlOihmdW5jdGlvbihwYXRoLGxlbil7aWYobGVuPDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7bm9kZT1sb29rdXAubm9kZX1lbHNle25vZGU9cGF0aH1pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSl9aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTRElSKX1pZighRlMuaXNGaWxlKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIGVycj1GUy5ub2RlUGVybWlzc2lvbnMobm9kZSwidyIpO2lmKGVycil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKX1ub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSx7c2l6ZTpsZW4sdGltZXN0YW1wOkRhdGUubm93KCl9KX0pLGZ0cnVuY2F0ZTooZnVuY3Rpb24oZmQsbGVuKXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmZCk7aWYoIXN0cmVhbSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpfWlmKChzdHJlYW0uZmxhZ3MmMjA5NzE1NSk9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfUZTLnRydW5jYXRlKHN0cmVhbS5ub2RlLGxlbil9KSx1dGltZTooZnVuY3Rpb24ocGF0aCxhdGltZSxtdGltZSl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse3RpbWVzdGFtcDpNYXRoLm1heChhdGltZSxtdGltZSl9KX0pLG9wZW46KGZ1bmN0aW9uKHBhdGgsZmxhZ3MsbW9kZSxmZF9zdGFydCxmZF9lbmQpe2ZsYWdzPXR5cGVvZiBmbGFncz09PSJzdHJpbmciP0ZTLm1vZGVTdHJpbmdUb0ZsYWdzKGZsYWdzKTpmbGFnczttb2RlPXR5cGVvZiBtb2RlPT09InVuZGVmaW5lZCI/NDM4Om1vZGU7aWYoZmxhZ3MmNjQpe21vZGU9bW9kZSY0MDk1fDMyNzY4fWVsc2V7bW9kZT0wfXZhciBub2RlO2lmKHR5cGVvZiBwYXRoPT09Im9iamVjdCIpe25vZGU9cGF0aH1lbHNle3BhdGg9UEFUSC5ub3JtYWxpemUocGF0aCk7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IShmbGFncyYxMzEwNzIpfSk7bm9kZT1sb29rdXAubm9kZX1jYXRjaChlKXt9fWlmKGZsYWdzJjY0KXtpZihub2RlKXtpZihmbGFncyYxMjgpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVFWElTVCl9fWVsc2V7bm9kZT1GUy5ta25vZChwYXRoLG1vZGUsMCl9fWlmKCFub2RlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9FTlQpfWlmKEZTLmlzQ2hyZGV2KG5vZGUubW9kZSkpe2ZsYWdzJj1+NTEyfXZhciBlcnI9RlMubWF5T3Blbihub2RlLGZsYWdzKTtpZihlcnIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycil9aWYoZmxhZ3MmNTEyKXtGUy50cnVuY2F0ZShub2RlLDApfWZsYWdzJj1+KDEyOHw1MTIpO3ZhciBzdHJlYW09RlMuY3JlYXRlU3RyZWFtKHtub2RlOm5vZGUscGF0aDpGUy5nZXRQYXRoKG5vZGUpLGZsYWdzOmZsYWdzLHNlZWthYmxlOnRydWUscG9zaXRpb246MCxzdHJlYW1fb3BzOm5vZGUuc3RyZWFtX29wcyx1bmdvdHRlbjpbXSxlcnJvcjpmYWxzZX0sZmRfc3RhcnQsZmRfZW5kKTtpZihzdHJlYW0uc3RyZWFtX29wcy5vcGVuKXtzdHJlYW0uc3RyZWFtX29wcy5vcGVuKHN0cmVhbSl9aWYoTW9kdWxlWyJsb2dSZWFkRmlsZXMiXSYmIShmbGFncyYxKSl7aWYoIUZTLnJlYWRGaWxlcylGUy5yZWFkRmlsZXM9e307aWYoIShwYXRoIGluIEZTLnJlYWRGaWxlcykpe0ZTLnJlYWRGaWxlc1twYXRoXT0xO01vZHVsZVsicHJpbnRFcnIiXSgicmVhZCBmaWxlOiAiK3BhdGgpfX10cnl7aWYoRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25PcGVuRmlsZSJdKXt2YXIgdHJhY2tpbmdGbGFncz0wO2lmKChmbGFncyYyMDk3MTU1KSE9PTEpe3RyYWNraW5nRmxhZ3N8PUZTLnRyYWNraW5nLm9wZW5GbGFncy5SRUFEfWlmKChmbGFncyYyMDk3MTU1KSE9PTApe3RyYWNraW5nRmxhZ3N8PUZTLnRyYWNraW5nLm9wZW5GbGFncy5XUklURX1GUy50cmFja2luZ0RlbGVnYXRlWyJvbk9wZW5GaWxlIl0ocGF0aCx0cmFja2luZ0ZsYWdzKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uT3BlbkZpbGUnXSgnIitwYXRoKyInLCBmbGFncykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2UubWVzc2FnZSl9cmV0dXJuIHN0cmVhbX0pLGNsb3NlOihmdW5jdGlvbihzdHJlYW0pe3RyeXtpZihzdHJlYW0uc3RyZWFtX29wcy5jbG9zZSl7c3RyZWFtLnN0cmVhbV9vcHMuY2xvc2Uoc3RyZWFtKX19Y2F0Y2goZSl7dGhyb3cgZX1maW5hbGx5e0ZTLmNsb3NlU3RyZWFtKHN0cmVhbS5mZCl9fSksbGxzZWVrOihmdW5jdGlvbihzdHJlYW0sb2Zmc2V0LHdoZW5jZSl7aWYoIXN0cmVhbS5zZWVrYWJsZXx8IXN0cmVhbS5zdHJlYW1fb3BzLmxsc2Vlayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKX1yZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubGxzZWVrKHN0cmVhbSxvZmZzZXQsd2hlbmNlKX0pLHJlYWQ6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbil7aWYobGVuZ3RoPDB8fHBvc2l0aW9uPDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKX1pZihGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTRElSKX1pZighc3RyZWFtLnN0cmVhbV9vcHMucmVhZCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgc2Vla2luZz10cnVlO2lmKHR5cGVvZiBwb3NpdGlvbj09PSJ1bmRlZmluZWQiKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247c2Vla2luZz1mYWxzZX1lbHNlIGlmKCFzdHJlYW0uc2Vla2FibGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSl9dmFyIGJ5dGVzUmVhZD1zdHJlYW0uc3RyZWFtX29wcy5yZWFkKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbik7aWYoIXNlZWtpbmcpc3RyZWFtLnBvc2l0aW9uKz1ieXRlc1JlYWQ7cmV0dXJuIGJ5dGVzUmVhZH0pLHdyaXRlOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24sY2FuT3duKXtpZihsZW5ndGg8MHx8cG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX1pZigoc3RyZWFtLmZsYWdzJjIwOTcxNTUpPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpfWlmKEZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSVNESVIpfWlmKCFzdHJlYW0uc3RyZWFtX29wcy53cml0ZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgc2Vla2luZz10cnVlO2lmKHR5cGVvZiBwb3NpdGlvbj09PSJ1bmRlZmluZWQiKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247c2Vla2luZz1mYWxzZX1lbHNlIGlmKCFzdHJlYW0uc2Vla2FibGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSl9aWYoc3RyZWFtLmZsYWdzJjEwMjQpe0ZTLmxsc2VlayhzdHJlYW0sMCwyKX12YXIgYnl0ZXNXcml0dGVuPXN0cmVhbS5zdHJlYW1fb3BzLndyaXRlKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixjYW5Pd24pO2lmKCFzZWVraW5nKXN0cmVhbS5wb3NpdGlvbis9Ynl0ZXNXcml0dGVuO3RyeXtpZihzdHJlYW0ucGF0aCYmRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25Xcml0ZVRvRmlsZSJdKUZTLnRyYWNraW5nRGVsZWdhdGVbIm9uV3JpdGVUb0ZpbGUiXShzdHJlYW0ucGF0aCl9Y2F0Y2goZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uV3JpdGVUb0ZpbGUnXSgnIitwYXRoKyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrZS5tZXNzYWdlKX1yZXR1cm4gYnl0ZXNXcml0dGVufSksYWxsb2NhdGU6KGZ1bmN0aW9uKHN0cmVhbSxvZmZzZXQsbGVuZ3RoKXtpZihvZmZzZXQ8MHx8bGVuZ3RoPD0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfWlmKChzdHJlYW0uZmxhZ3MmMjA5NzE1NSk9PT0wKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQkFERil9aWYoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSYmIUZTLmlzRGlyKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLmFsbG9jYXRlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FT1BOT1RTVVBQKX1zdHJlYW0uc3RyZWFtX29wcy5hbGxvY2F0ZShzdHJlYW0sb2Zmc2V0LGxlbmd0aCl9KSxtbWFwOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24scHJvdCxmbGFncyl7aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVBQ0NFUyl9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLm1tYXApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVil9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLm1tYXAoc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLHByb3QsZmxhZ3MpfSksaW9jdGw6KGZ1bmN0aW9uKHN0cmVhbSxjbWQsYXJnKXtpZighc3RyZWFtLnN0cmVhbV9vcHMuaW9jdGwpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RUWSl9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLmlvY3RsKHN0cmVhbSxjbWQsYXJnKX0pLHJlYWRGaWxlOihmdW5jdGlvbihwYXRoLG9wdHMpe29wdHM9b3B0c3x8e307b3B0cy5mbGFncz1vcHRzLmZsYWdzfHwiciI7b3B0cy5lbmNvZGluZz1vcHRzLmVuY29kaW5nfHwiYmluYXJ5IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgcmV0O3ZhciBzdHJlYW09RlMub3BlbihwYXRoLG9wdHMuZmxhZ3MpO3ZhciBzdGF0PUZTLnN0YXQocGF0aCk7dmFyIGxlbmd0aD1zdGF0LnNpemU7dmFyIGJ1Zj1uZXcgVWludDhBcnJheShsZW5ndGgpO0ZTLnJlYWQoc3RyZWFtLGJ1ZiwwLGxlbmd0aCwwKTtpZihvcHRzLmVuY29kaW5nPT09InV0ZjgiKXtyZXQ9IiI7dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe3JldCs9dXRmOC5wcm9jZXNzQ0NoYXIoYnVmW2ldKX19ZWxzZSBpZihvcHRzLmVuY29kaW5nPT09ImJpbmFyeSIpe3JldD1idWZ9RlMuY2xvc2Uoc3RyZWFtKTtyZXR1cm4gcmV0fSksd3JpdGVGaWxlOihmdW5jdGlvbihwYXRoLGRhdGEsb3B0cyl7b3B0cz1vcHRzfHx7fTtvcHRzLmZsYWdzPW9wdHMuZmxhZ3N8fCJ3IjtvcHRzLmVuY29kaW5nPW9wdHMuZW5jb2Rpbmd8fCJ1dGY4IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgc3RyZWFtPUZTLm9wZW4ocGF0aCxvcHRzLmZsYWdzLG9wdHMubW9kZSk7aWYob3B0cy5lbmNvZGluZz09PSJ1dGY4Iil7dmFyIHV0Zjg9bmV3IFJ1bnRpbWUuVVRGOFByb2Nlc3Nvcjt2YXIgYnVmPW5ldyBVaW50OEFycmF5KHV0ZjgucHJvY2Vzc0pTU3RyaW5nKGRhdGEpKTtGUy53cml0ZShzdHJlYW0sYnVmLDAsYnVmLmxlbmd0aCwwLG9wdHMuY2FuT3duKX1lbHNlIGlmKG9wdHMuZW5jb2Rpbmc9PT0iYmluYXJ5Iil7RlMud3JpdGUoc3RyZWFtLGRhdGEsMCxkYXRhLmxlbmd0aCwwLG9wdHMuY2FuT3duKX1GUy5jbG9zZShzdHJlYW0pfSksY3dkOihmdW5jdGlvbigpe3JldHVybiBGUy5jdXJyZW50UGF0aH0pLGNoZGlyOihmdW5jdGlvbihwYXRoKXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OnRydWV9KTtpZighRlMuaXNEaXIobG9va3VwLm5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RESVIpfXZhciBlcnI9RlMubm9kZVBlcm1pc3Npb25zKGxvb2t1cC5ub2RlLCJ4Iik7aWYoZXJyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpfUZTLmN1cnJlbnRQYXRoPWxvb2t1cC5wYXRofSksY3JlYXRlRGVmYXVsdERpcmVjdG9yaWVzOihmdW5jdGlvbigpe0ZTLm1rZGlyKCIvdG1wIil9KSxjcmVhdGVEZWZhdWx0RGV2aWNlczooZnVuY3Rpb24oKXtGUy5ta2RpcigiL2RldiIpO0ZTLnJlZ2lzdGVyRGV2aWNlKEZTLm1ha2VkZXYoMSwzKSx7cmVhZDooZnVuY3Rpb24oKXtyZXR1cm4gMH0pLHdyaXRlOihmdW5jdGlvbigpe3JldHVybiAwfSl9KTtGUy5ta2RldigiL2Rldi9udWxsIixGUy5tYWtlZGV2KDEsMykpO1RUWS5yZWdpc3RlcihGUy5tYWtlZGV2KDUsMCksVFRZLmRlZmF1bHRfdHR5X29wcyk7VFRZLnJlZ2lzdGVyKEZTLm1ha2VkZXYoNiwwKSxUVFkuZGVmYXVsdF90dHkxX29wcyk7RlMubWtkZXYoIi9kZXYvdHR5IixGUy5tYWtlZGV2KDUsMCkpO0ZTLm1rZGV2KCIvZGV2L3R0eTEiLEZTLm1ha2VkZXYoNiwwKSk7RlMubWtkaXIoIi9kZXYvc2htIik7RlMubWtkaXIoIi9kZXYvc2htL3RtcCIpfSksY3JlYXRlU3RhbmRhcmRTdHJlYW1zOihmdW5jdGlvbigpe2lmKE1vZHVsZVsic3RkaW4iXSl7RlMuY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkaW4iLE1vZHVsZVsic3RkaW4iXSl9ZWxzZXtGUy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3RkaW4iKX1pZihNb2R1bGVbInN0ZG91dCJdKXtGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRvdXQiLG51bGwsTW9kdWxlWyJzdGRvdXQiXSl9ZWxzZXtGUy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3Rkb3V0Iil9aWYoTW9kdWxlWyJzdGRlcnIiXSl7RlMuY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkZXJyIixudWxsLE1vZHVsZVsic3RkZXJyIl0pfWVsc2V7RlMuc3ltbGluaygiL2Rldi90dHkxIiwiL2Rldi9zdGRlcnIiKX12YXIgc3RkaW49RlMub3BlbigiL2Rldi9zdGRpbiIsInIiKTtIRUFQMzJbX3N0ZGluPj4yXT1GUy5nZXRQdHJGb3JTdHJlYW0oc3RkaW4pO2Fzc2VydChzdGRpbi5mZD09PTAsImludmFsaWQgaGFuZGxlIGZvciBzdGRpbiAoIitzdGRpbi5mZCsiKSIpO3ZhciBzdGRvdXQ9RlMub3BlbigiL2Rldi9zdGRvdXQiLCJ3Iik7SEVBUDMyW19zdGRvdXQ+PjJdPUZTLmdldFB0ckZvclN0cmVhbShzdGRvdXQpO2Fzc2VydChzdGRvdXQuZmQ9PT0xLCJpbnZhbGlkIGhhbmRsZSBmb3Igc3Rkb3V0ICgiK3N0ZG91dC5mZCsiKSIpO3ZhciBzdGRlcnI9RlMub3BlbigiL2Rldi9zdGRlcnIiLCJ3Iik7SEVBUDMyW19zdGRlcnI+PjJdPUZTLmdldFB0ckZvclN0cmVhbShzdGRlcnIpO2Fzc2VydChzdGRlcnIuZmQ9PT0yLCJpbnZhbGlkIGhhbmRsZSBmb3Igc3RkZXJyICgiK3N0ZGVyci5mZCsiKSIpfSksZW5zdXJlRXJybm9FcnJvcjooZnVuY3Rpb24oKXtpZihGUy5FcnJub0Vycm9yKXJldHVybjtGUy5FcnJub0Vycm9yPWZ1bmN0aW9uIEVycm5vRXJyb3IoZXJybm8pe3RoaXMuZXJybm89ZXJybm87Zm9yKHZhciBrZXkgaW4gRVJSTk9fQ09ERVMpe2lmKEVSUk5PX0NPREVTW2tleV09PT1lcnJubyl7dGhpcy5jb2RlPWtleTticmVha319dGhpcy5tZXNzYWdlPUVSUk5PX01FU1NBR0VTW2Vycm5vXX07RlMuRXJybm9FcnJvci5wcm90b3R5cGU9bmV3IEVycm9yO0ZTLkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPUZTLkVycm5vRXJyb3I7W0VSUk5PX0NPREVTLkVOT0VOVF0uZm9yRWFjaCgoZnVuY3Rpb24oY29kZSl7RlMuZ2VuZXJpY0Vycm9yc1tjb2RlXT1uZXcgRlMuRXJybm9FcnJvcihjb2RlKTtGUy5nZW5lcmljRXJyb3JzW2NvZGVdLnN0YWNrPSI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+In0pKX0pLHN0YXRpY0luaXQ6KGZ1bmN0aW9uKCl7RlMuZW5zdXJlRXJybm9FcnJvcigpO0ZTLm5hbWVUYWJsZT1uZXcgQXJyYXkoNDA5Nik7RlMubW91bnQoTUVNRlMse30sIi8iKTtGUy5jcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXMoKTtGUy5jcmVhdGVEZWZhdWx0RGV2aWNlcygpfSksaW5pdDooZnVuY3Rpb24oaW5wdXQsb3V0cHV0LGVycm9yKXthc3NlcnQoIUZTLmluaXQuaW5pdGlhbGl6ZWQsIkZTLmluaXQgd2FzIHByZXZpb3VzbHkgY2FsbGVkLiBJZiB5b3Ugd2FudCB0byBpbml0aWFsaXplIGxhdGVyIHdpdGggY3VzdG9tIHBhcmFtZXRlcnMsIHJlbW92ZSBhbnkgZWFybGllciBjYWxscyAobm90ZSB0aGF0IG9uZSBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgY29kZSkiKTtGUy5pbml0LmluaXRpYWxpemVkPXRydWU7RlMuZW5zdXJlRXJybm9FcnJvcigpO01vZHVsZVsic3RkaW4iXT1pbnB1dHx8TW9kdWxlWyJzdGRpbiJdO01vZHVsZVsic3Rkb3V0Il09b3V0cHV0fHxNb2R1bGVbInN0ZG91dCJdO01vZHVsZVsic3RkZXJyIl09ZXJyb3J8fE1vZHVsZVsic3RkZXJyIl07RlMuY3JlYXRlU3RhbmRhcmRTdHJlYW1zKCl9KSxxdWl0OihmdW5jdGlvbigpe0ZTLmluaXQuaW5pdGlhbGl6ZWQ9ZmFsc2U7Zm9yKHZhciBpPTA7aTxGUy5zdHJlYW1zLmxlbmd0aDtpKyspe3ZhciBzdHJlYW09RlMuc3RyZWFtc1tpXTtpZighc3RyZWFtKXtjb250aW51ZX1GUy5jbG9zZShzdHJlYW0pfX0pLGdldE1vZGU6KGZ1bmN0aW9uKGNhblJlYWQsY2FuV3JpdGUpe3ZhciBtb2RlPTA7aWYoY2FuUmVhZCltb2RlfD0yOTJ8NzM7aWYoY2FuV3JpdGUpbW9kZXw9MTQ2O3JldHVybiBtb2RlfSksam9pblBhdGg6KGZ1bmN0aW9uKHBhcnRzLGZvcmNlUmVsYXRpdmUpe3ZhciBwYXRoPVBBVEguam9pbi5hcHBseShudWxsLHBhcnRzKTtpZihmb3JjZVJlbGF0aXZlJiZwYXRoWzBdPT0iLyIpcGF0aD1wYXRoLnN1YnN0cigxKTtyZXR1cm4gcGF0aH0pLGFic29sdXRlUGF0aDooZnVuY3Rpb24ocmVsYXRpdmUsYmFzZSl7cmV0dXJuIFBBVEgucmVzb2x2ZShiYXNlLHJlbGF0aXZlKX0pLHN0YW5kYXJkaXplUGF0aDooZnVuY3Rpb24ocGF0aCl7cmV0dXJuIFBBVEgubm9ybWFsaXplKHBhdGgpfSksZmluZE9iamVjdDooZnVuY3Rpb24ocGF0aCxkb250UmVzb2x2ZUxhc3RMaW5rKXt2YXIgcmV0PUZTLmFuYWx5emVQYXRoKHBhdGgsZG9udFJlc29sdmVMYXN0TGluayk7aWYocmV0LmV4aXN0cyl7cmV0dXJuIHJldC5vYmplY3R9ZWxzZXtfX19zZXRFcnJObyhyZXQuZXJyb3IpO3JldHVybiBudWxsfX0pLGFuYWx5emVQYXRoOihmdW5jdGlvbihwYXRoLGRvbnRSZXNvbHZlTGFzdExpbmspe3RyeXt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250UmVzb2x2ZUxhc3RMaW5rfSk7cGF0aD1sb29rdXAucGF0aH1jYXRjaChlKXt9dmFyIHJldD17aXNSb290OmZhbHNlLGV4aXN0czpmYWxzZSxlcnJvcjowLG5hbWU6bnVsbCxwYXRoOm51bGwsb2JqZWN0Om51bGwscGFyZW50RXhpc3RzOmZhbHNlLHBhcmVudFBhdGg6bnVsbCxwYXJlbnRPYmplY3Q6bnVsbH07dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3JldC5wYXJlbnRFeGlzdHM9dHJ1ZTtyZXQucGFyZW50UGF0aD1sb29rdXAucGF0aDtyZXQucGFyZW50T2JqZWN0PWxvb2t1cC5ub2RlO3JldC5uYW1lPVBBVEguYmFzZW5hbWUocGF0aCk7bG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250UmVzb2x2ZUxhc3RMaW5rfSk7cmV0LmV4aXN0cz10cnVlO3JldC5wYXRoPWxvb2t1cC5wYXRoO3JldC5vYmplY3Q9bG9va3VwLm5vZGU7cmV0Lm5hbWU9bG9va3VwLm5vZGUubmFtZTtyZXQuaXNSb290PWxvb2t1cC5wYXRoPT09Ii8ifWNhdGNoKGUpe3JldC5lcnJvcj1lLmVycm5vfXJldHVybiByZXR9KSxjcmVhdGVGb2xkZXI6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLGNhblJlYWQsY2FuV3JpdGUpe3ZhciBwYXRoPVBBVEguam9pbjIodHlwZW9mIHBhcmVudD09PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCksbmFtZSk7dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTtyZXR1cm4gRlMubWtkaXIocGF0aCxtb2RlKX0pLGNyZWF0ZVBhdGg6KGZ1bmN0aW9uKHBhcmVudCxwYXRoLGNhblJlYWQsY2FuV3JpdGUpe3BhcmVudD10eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KTt2YXIgcGFydHM9cGF0aC5zcGxpdCgiLyIpLnJldmVyc2UoKTt3aGlsZShwYXJ0cy5sZW5ndGgpe3ZhciBwYXJ0PXBhcnRzLnBvcCgpO2lmKCFwYXJ0KWNvbnRpbnVlO3ZhciBjdXJyZW50PVBBVEguam9pbjIocGFyZW50LHBhcnQpO3RyeXtGUy5ta2RpcihjdXJyZW50KX1jYXRjaChlKXt9cGFyZW50PWN1cnJlbnR9cmV0dXJuIGN1cnJlbnR9KSxjcmVhdGVGaWxlOihmdW5jdGlvbihwYXJlbnQsbmFtZSxwcm9wZXJ0aWVzLGNhblJlYWQsY2FuV3JpdGUpe3ZhciBwYXRoPVBBVEguam9pbjIodHlwZW9mIHBhcmVudD09PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCksbmFtZSk7dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTtyZXR1cm4gRlMuY3JlYXRlKHBhdGgsbW9kZSl9KSxjcmVhdGVEYXRhRmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsZGF0YSxjYW5SZWFkLGNhbldyaXRlLGNhbk93bil7dmFyIHBhdGg9bmFtZT9QQVRILmpvaW4yKHR5cGVvZiBwYXJlbnQ9PT0ic3RyaW5nIj9wYXJlbnQ6RlMuZ2V0UGF0aChwYXJlbnQpLG5hbWUpOnBhcmVudDt2YXIgbW9kZT1GUy5nZXRNb2RlKGNhblJlYWQsY2FuV3JpdGUpO3ZhciBub2RlPUZTLmNyZWF0ZShwYXRoLG1vZGUpO2lmKGRhdGEpe2lmKHR5cGVvZiBkYXRhPT09InN0cmluZyIpe3ZhciBhcnI9bmV3IEFycmF5KGRhdGEubGVuZ3RoKTtmb3IodmFyIGk9MCxsZW49ZGF0YS5sZW5ndGg7aTxsZW47KytpKWFycltpXT1kYXRhLmNoYXJDb2RlQXQoaSk7ZGF0YT1hcnJ9RlMuY2htb2Qobm9kZSxtb2RlfDE0Nik7dmFyIHN0cmVhbT1GUy5vcGVuKG5vZGUsInciKTtGUy53cml0ZShzdHJlYW0sZGF0YSwwLGRhdGEubGVuZ3RoLDAsY2FuT3duKTtGUy5jbG9zZShzdHJlYW0pO0ZTLmNobW9kKG5vZGUsbW9kZSl9cmV0dXJuIG5vZGV9KSxjcmVhdGVEZXZpY2U6KGZ1bmN0aW9uKHBhcmVudCxuYW1lLGlucHV0LG91dHB1dCl7dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KSxuYW1lKTt2YXIgbW9kZT1GUy5nZXRNb2RlKCEhaW5wdXQsISFvdXRwdXQpO2lmKCFGUy5jcmVhdGVEZXZpY2UubWFqb3IpRlMuY3JlYXRlRGV2aWNlLm1ham9yPTY0O3ZhciBkZXY9RlMubWFrZWRldihGUy5jcmVhdGVEZXZpY2UubWFqb3IrKywwKTtGUy5yZWdpc3RlckRldmljZShkZXYse29wZW46KGZ1bmN0aW9uKHN0cmVhbSl7c3RyZWFtLnNlZWthYmxlPWZhbHNlfSksY2xvc2U6KGZ1bmN0aW9uKHN0cmVhbSl7aWYob3V0cHV0JiZvdXRwdXQuYnVmZmVyJiZvdXRwdXQuYnVmZmVyLmxlbmd0aCl7b3V0cHV0KDEwKX19KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zKXt2YXIgYnl0ZXNSZWFkPTA7Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSsrKXt2YXIgcmVzdWx0O3RyeXtyZXN1bHQ9aW5wdXQoKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfWlmKHJlc3VsdD09PXVuZGVmaW5lZCYmYnl0ZXNSZWFkPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX1pZihyZXN1bHQ9PT1udWxsfHxyZXN1bHQ9PT11bmRlZmluZWQpYnJlYWs7Ynl0ZXNSZWFkKys7YnVmZmVyW29mZnNldCtpXT1yZXN1bHR9aWYoYnl0ZXNSZWFkKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKX1yZXR1cm4gYnl0ZXNSZWFkfSksd3JpdGU6KGZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3Mpe2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dHJ5e291dHB1dChidWZmZXJbb2Zmc2V0K2ldKX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfX1pZihsZW5ndGgpe3N0cmVhbS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpfXJldHVybiBpfSl9KTtyZXR1cm4gRlMubWtkZXYocGF0aCxtb2RlLGRldil9KSxjcmVhdGVMaW5rOihmdW5jdGlvbihwYXJlbnQsbmFtZSx0YXJnZXQsY2FuUmVhZCxjYW5Xcml0ZSl7dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT09InN0cmluZyI/cGFyZW50OkZTLmdldFBhdGgocGFyZW50KSxuYW1lKTtyZXR1cm4gRlMuc3ltbGluayh0YXJnZXQscGF0aCl9KSxmb3JjZUxvYWRGaWxlOihmdW5jdGlvbihvYmope2lmKG9iai5pc0RldmljZXx8b2JqLmlzRm9sZGVyfHxvYmoubGlua3x8b2JqLmNvbnRlbnRzKXJldHVybiB0cnVlO3ZhciBzdWNjZXNzPXRydWU7aWYodHlwZW9mIFhNTEh0dHBSZXF1ZXN0IT09InVuZGVmaW5lZCIpe3Rocm93IG5ldyBFcnJvcigiTGF6eSBsb2FkaW5nIHNob3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIChjb250ZW50cyBzZXQpIGluIGNyZWF0ZUxhenlGaWxlLCBidXQgaXQgd2FzIG5vdC4gTGF6eSBsb2FkaW5nIG9ubHkgd29ya3MgaW4gd2ViIHdvcmtlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyBvbiB0aGUgbWFpbiB0aHJlYWQuIil9ZWxzZSBpZihNb2R1bGVbInJlYWQiXSl7dHJ5e29iai5jb250ZW50cz1pbnRBcnJheUZyb21TdHJpbmcoTW9kdWxlWyJyZWFkIl0ob2JqLnVybCksdHJ1ZSl9Y2F0Y2goZSl7c3VjY2Vzcz1mYWxzZX19ZWxzZXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIHdpdGhvdXQgcmVhZCgpIG9yIFhNTEh0dHBSZXF1ZXN0LiIpfWlmKCFzdWNjZXNzKV9fX3NldEVyck5vKEVSUk5PX0NPREVTLkVJTyk7cmV0dXJuIHN1Y2Nlc3N9KSxjcmVhdGVMYXp5RmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUpe2Z1bmN0aW9uIExhenlVaW50OEFycmF5KCl7dGhpcy5sZW5ndGhLbm93bj1mYWxzZTt0aGlzLmNodW5rcz1bXX1MYXp5VWludDhBcnJheS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIExhenlVaW50OEFycmF5X2dldChpZHgpe2lmKGlkeD50aGlzLmxlbmd0aC0xfHxpZHg8MCl7cmV0dXJuIHVuZGVmaW5lZH12YXIgY2h1bmtPZmZzZXQ9aWR4JXRoaXMuY2h1bmtTaXplO3ZhciBjaHVua051bT1NYXRoLmZsb29yKGlkeC90aGlzLmNodW5rU2l6ZSk7cmV0dXJuIHRoaXMuZ2V0dGVyKGNodW5rTnVtKVtjaHVua09mZnNldF19O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5zZXREYXRhR2V0dGVyPWZ1bmN0aW9uIExhenlVaW50OEFycmF5X3NldERhdGFHZXR0ZXIoZ2V0dGVyKXt0aGlzLmdldHRlcj1nZXR0ZXJ9O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5jYWNoZUxlbmd0aD1mdW5jdGlvbiBMYXp5VWludDhBcnJheV9jYWNoZUxlbmd0aCgpe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJIRUFEIix1cmwsZmFsc2UpO3hoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTt2YXIgZGF0YWxlbmd0aD1OdW1iZXIoeGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKTt2YXIgaGVhZGVyO3ZhciBoYXNCeXRlU2VydmluZz0oaGVhZGVyPXhoci5nZXRSZXNwb25zZUhlYWRlcigiQWNjZXB0LVJhbmdlcyIpKSYmaGVhZGVyPT09ImJ5dGVzIjt2YXIgY2h1bmtTaXplPTEwMjQqMTAyNDtpZighaGFzQnl0ZVNlcnZpbmcpY2h1bmtTaXplPWRhdGFsZW5ndGg7dmFyIGRvWEhSPShmdW5jdGlvbihmcm9tLHRvKXtpZihmcm9tPnRvKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCByYW5nZSAoIitmcm9tKyIsICIrdG8rIikgb3Igbm8gYnl0ZXMgcmVxdWVzdGVkISIpO2lmKHRvPmRhdGFsZW5ndGgtMSl0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIitkYXRhbGVuZ3RoKyIgYnl0ZXMgYXZhaWxhYmxlISBwcm9ncmFtbWVyIGVycm9yISIpO3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7aWYoZGF0YWxlbmd0aCE9PWNodW5rU2l6ZSl4aHIuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCJieXRlcz0iK2Zyb20rIi0iK3RvKTtpZih0eXBlb2YgVWludDhBcnJheSE9InVuZGVmaW5lZCIpeGhyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO2lmKHhoci5vdmVycmlkZU1pbWVUeXBlKXt4aHIub3ZlcnJpZGVNaW1lVHlwZSgidGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCIpfXhoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTtpZih4aHIucmVzcG9uc2UhPT11bmRlZmluZWQpe3JldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2V8fFtdKX1lbHNle3JldHVybiBpbnRBcnJheUZyb21TdHJpbmcoeGhyLnJlc3BvbnNlVGV4dHx8IiIsdHJ1ZSl9fSk7dmFyIGxhenlBcnJheT10aGlzO2xhenlBcnJheS5zZXREYXRhR2V0dGVyKChmdW5jdGlvbihjaHVua051bSl7dmFyIHN0YXJ0PWNodW5rTnVtKmNodW5rU2l6ZTt2YXIgZW5kPShjaHVua051bSsxKSpjaHVua1NpemUtMTtlbmQ9TWF0aC5taW4oZW5kLGRhdGFsZW5ndGgtMSk7aWYodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPT09InVuZGVmaW5lZCIpe2xhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPWRvWEhSKHN0YXJ0LGVuZCl9aWYodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dPT09InVuZGVmaW5lZCIpdGhyb3cgbmV3IEVycm9yKCJkb1hIUiBmYWlsZWQhIik7cmV0dXJuIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dfSkpO3RoaXMuX2xlbmd0aD1kYXRhbGVuZ3RoO3RoaXMuX2NodW5rU2l6ZT1jaHVua1NpemU7dGhpcy5sZW5ndGhLbm93bj10cnVlfTtpZih0eXBlb2YgWE1MSHR0cFJlcXVlc3QhPT0idW5kZWZpbmVkIil7aWYoIUVOVklST05NRU5UX0lTX1dPUktFUil0aHJvdyJDYW5ub3QgZG8gc3luY2hyb25vdXMgYmluYXJ5IFhIUnMgb3V0c2lkZSB3ZWJ3b3JrZXJzIGluIG1vZGVybiBicm93c2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjIjt2YXIgbGF6eUFycmF5PW5ldyBMYXp5VWludDhBcnJheTtPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCJsZW5ndGgiLHtnZXQ6KGZ1bmN0aW9uKCl7aWYoIXRoaXMubGVuZ3RoS25vd24pe3RoaXMuY2FjaGVMZW5ndGgoKX1yZXR1cm4gdGhpcy5fbGVuZ3RofSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCJjaHVua1NpemUiLHtnZXQ6KGZ1bmN0aW9uKCl7aWYoIXRoaXMubGVuZ3RoS25vd24pe3RoaXMuY2FjaGVMZW5ndGgoKX1yZXR1cm4gdGhpcy5fY2h1bmtTaXplfSl9KTt2YXIgcHJvcGVydGllcz17aXNEZXZpY2U6ZmFsc2UsY29udGVudHM6bGF6eUFycmF5fX1lbHNle3ZhciBwcm9wZXJ0aWVzPXtpc0RldmljZTpmYWxzZSx1cmw6dXJsfX12YXIgbm9kZT1GUy5jcmVhdGVGaWxlKHBhcmVudCxuYW1lLHByb3BlcnRpZXMsY2FuUmVhZCxjYW5Xcml0ZSk7aWYocHJvcGVydGllcy5jb250ZW50cyl7bm9kZS5jb250ZW50cz1wcm9wZXJ0aWVzLmNvbnRlbnRzfWVsc2UgaWYocHJvcGVydGllcy51cmwpe25vZGUuY29udGVudHM9bnVsbDtub2RlLnVybD1wcm9wZXJ0aWVzLnVybH12YXIgc3RyZWFtX29wcz17fTt2YXIga2V5cz1PYmplY3Qua2V5cyhub2RlLnN0cmVhbV9vcHMpO2tleXMuZm9yRWFjaCgoZnVuY3Rpb24oa2V5KXt2YXIgZm49bm9kZS5zdHJlYW1fb3BzW2tleV07c3RyZWFtX29wc1trZXldPWZ1bmN0aW9uIGZvcmNlTG9hZExhenlGaWxlKCl7aWYoIUZTLmZvcmNlTG9hZEZpbGUobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyl9cmV0dXJuIGZuLmFwcGx5KG51bGwsYXJndW1lbnRzKX19KSk7c3RyZWFtX29wcy5yZWFkPWZ1bmN0aW9uIHN0cmVhbV9vcHNfcmVhZChzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe2lmKCFGUy5mb3JjZUxvYWRGaWxlKG5vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pfXZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50cztpZihwb3NpdGlvbj49Y29udGVudHMubGVuZ3RoKXJldHVybiAwO3ZhciBzaXplPU1hdGgubWluKGNvbnRlbnRzLmxlbmd0aC1wb3NpdGlvbixsZW5ndGgpO2Fzc2VydChzaXplPj0wKTtpZihjb250ZW50cy5zbGljZSl7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXX19ZWxzZXtmb3IodmFyIGk9MDtpPHNpemU7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPWNvbnRlbnRzLmdldChwb3NpdGlvbitpKX19cmV0dXJuIHNpemV9O25vZGUuc3RyZWFtX29wcz1zdHJlYW1fb3BzO3JldHVybiBub2RlfSksY3JlYXRlUHJlbG9hZGVkRmlsZTooZnVuY3Rpb24ocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUsb25sb2FkLG9uZXJyb3IsZG9udENyZWF0ZUZpbGUsY2FuT3duKXtCcm93c2VyLmluaXQoKTt2YXIgZnVsbG5hbWU9bmFtZT9QQVRILnJlc29sdmUoUEFUSC5qb2luMihwYXJlbnQsbmFtZSkpOnBhcmVudDtmdW5jdGlvbiBwcm9jZXNzRGF0YShieXRlQXJyYXkpe2Z1bmN0aW9uIGZpbmlzaChieXRlQXJyYXkpe2lmKCFkb250Q3JlYXRlRmlsZSl7RlMuY3JlYXRlRGF0YUZpbGUocGFyZW50LG5hbWUsYnl0ZUFycmF5LGNhblJlYWQsY2FuV3JpdGUsY2FuT3duKX1pZihvbmxvYWQpb25sb2FkKCk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgiY3AgIitmdWxsbmFtZSl9dmFyIGhhbmRsZWQ9ZmFsc2U7TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLmZvckVhY2goKGZ1bmN0aW9uKHBsdWdpbil7aWYoaGFuZGxlZClyZXR1cm47aWYocGx1Z2luWyJjYW5IYW5kbGUiXShmdWxsbmFtZSkpe3BsdWdpblsiaGFuZGxlIl0oYnl0ZUFycmF5LGZ1bGxuYW1lLGZpbmlzaCwoZnVuY3Rpb24oKXtpZihvbmVycm9yKW9uZXJyb3IoKTtyZW1vdmVSdW5EZXBlbmRlbmN5KCJjcCAiK2Z1bGxuYW1lKX0pKTtoYW5kbGVkPXRydWV9fSkpO2lmKCFoYW5kbGVkKWZpbmlzaChieXRlQXJyYXkpfWFkZFJ1bkRlcGVuZGVuY3koImNwICIrZnVsbG5hbWUpO2lmKHR5cGVvZiB1cmw9PSJzdHJpbmciKXtCcm93c2VyLmFzeW5jTG9hZCh1cmwsKGZ1bmN0aW9uKGJ5dGVBcnJheSl7cHJvY2Vzc0RhdGEoYnl0ZUFycmF5KX0pLG9uZXJyb3IpfWVsc2V7cHJvY2Vzc0RhdGEodXJsKX19KSxpbmRleGVkREI6KGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5pbmRleGVkREJ8fHdpbmRvdy5tb3pJbmRleGVkREJ8fHdpbmRvdy53ZWJraXRJbmRleGVkREJ8fHdpbmRvdy5tc0luZGV4ZWREQn0pLERCX05BTUU6KGZ1bmN0aW9uKCl7cmV0dXJuIkVNX0ZTXyIrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSksREJfVkVSU0lPTjoyMCxEQl9TVE9SRV9OQU1FOiJGSUxFX0RBVEEiLHNhdmVGaWxlc1RvREI6KGZ1bmN0aW9uKHBhdGhzLG9ubG9hZCxvbmVycm9yKXtvbmxvYWQ9b25sb2FkfHwoZnVuY3Rpb24oKXt9KTtvbmVycm9yPW9uZXJyb3J8fChmdW5jdGlvbigpe30pO3ZhciBpbmRleGVkREI9RlMuaW5kZXhlZERCKCk7dHJ5e3ZhciBvcGVuUmVxdWVzdD1pbmRleGVkREIub3BlbihGUy5EQl9OQU1FKCksRlMuREJfVkVSU0lPTil9Y2F0Y2goZSl7cmV0dXJuIG9uZXJyb3IoZSl9b3BlblJlcXVlc3Qub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uIG9wZW5SZXF1ZXN0X29udXBncmFkZW5lZWRlZCgpe2NvbnNvbGUubG9nKCJjcmVhdGluZyBkYiIpO3ZhciBkYj1vcGVuUmVxdWVzdC5yZXN1bHQ7ZGIuY3JlYXRlT2JqZWN0U3RvcmUoRlMuREJfU1RPUkVfTkFNRSl9O29wZW5SZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3MoKXt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3ZhciB0cmFuc2FjdGlvbj1kYi50cmFuc2FjdGlvbihbRlMuREJfU1RPUkVfTkFNRV0sInJlYWR3cml0ZSIpO3ZhciBmaWxlcz10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTt2YXIgb2s9MCxmYWlsPTAsdG90YWw9cGF0aHMubGVuZ3RoO2Z1bmN0aW9uIGZpbmlzaCgpe2lmKGZhaWw9PTApb25sb2FkKCk7ZWxzZSBvbmVycm9yKCl9cGF0aHMuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCl7dmFyIHB1dFJlcXVlc3Q9ZmlsZXMucHV0KEZTLmFuYWx5emVQYXRoKHBhdGgpLm9iamVjdC5jb250ZW50cyxwYXRoKTtwdXRSZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBwdXRSZXF1ZXN0X29uc3VjY2Vzcygpe29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9O3B1dFJlcXVlc3Qub25lcnJvcj1mdW5jdGlvbiBwdXRSZXF1ZXN0X29uZXJyb3IoKXtmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9fSkpO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcn07b3BlblJlcXVlc3Qub25lcnJvcj1vbmVycm9yfSksbG9hZEZpbGVzRnJvbURCOihmdW5jdGlvbihwYXRocyxvbmxvYWQsb25lcnJvcil7b25sb2FkPW9ubG9hZHx8KGZ1bmN0aW9uKCl7fSk7b25lcnJvcj1vbmVycm9yfHwoZnVuY3Rpb24oKXt9KTt2YXIgaW5kZXhlZERCPUZTLmluZGV4ZWREQigpO3RyeXt2YXIgb3BlblJlcXVlc3Q9aW5kZXhlZERCLm9wZW4oRlMuREJfTkFNRSgpLEZTLkRCX1ZFUlNJT04pfWNhdGNoKGUpe3JldHVybiBvbmVycm9yKGUpfW9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZD1vbmVycm9yO29wZW5SZXF1ZXN0Lm9uc3VjY2Vzcz1mdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3MoKXt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3RyeXt2YXIgdHJhbnNhY3Rpb249ZGIudHJhbnNhY3Rpb24oW0ZTLkRCX1NUT1JFX05BTUVdLCJyZWFkb25seSIpfWNhdGNoKGUpe29uZXJyb3IoZSk7cmV0dXJufXZhciBmaWxlcz10cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTt2YXIgb2s9MCxmYWlsPTAsdG90YWw9cGF0aHMubGVuZ3RoO2Z1bmN0aW9uIGZpbmlzaCgpe2lmKGZhaWw9PTApb25sb2FkKCk7ZWxzZSBvbmVycm9yKCl9cGF0aHMuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCl7dmFyIGdldFJlcXVlc3Q9ZmlsZXMuZ2V0KHBhdGgpO2dldFJlcXVlc3Qub25zdWNjZXNzPWZ1bmN0aW9uIGdldFJlcXVlc3Rfb25zdWNjZXNzKCl7aWYoRlMuYW5hbHl6ZVBhdGgocGF0aCkuZXhpc3RzKXtGUy51bmxpbmsocGF0aCl9RlMuY3JlYXRlRGF0YUZpbGUoUEFUSC5kaXJuYW1lKHBhdGgpLFBBVEguYmFzZW5hbWUocGF0aCksZ2V0UmVxdWVzdC5yZXN1bHQsdHJ1ZSx0cnVlLHRydWUpO29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9O2dldFJlcXVlc3Qub25lcnJvcj1mdW5jdGlvbiBnZXRSZXF1ZXN0X29uZXJyb3IoKXtmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCl9fSkpO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcn07b3BlblJlcXVlc3Qub25lcnJvcj1vbmVycm9yfSl9O2Z1bmN0aW9uIF9mZmx1c2goc3RyZWFtKXt9TW9kdWxlWyJfc3RybGVuIl09X3N0cmxlbjtmdW5jdGlvbiBfX3JlYWxseU5lZ2F0aXZlKHgpe3JldHVybiB4PDB8fHg9PT0wJiYxL3g9PT0tSW5maW5pdHl9ZnVuY3Rpb24gX19mb3JtYXRTdHJpbmcoZm9ybWF0LHZhcmFyZ3Mpe3ZhciB0ZXh0SW5kZXg9Zm9ybWF0O3ZhciBhcmdJbmRleD0wO2Z1bmN0aW9uIGdldE5leHRBcmcodHlwZSl7dmFyIHJldDtpZih0eXBlPT09ImRvdWJsZSIpe3JldD0oSEVBUDMyW3RlbXBEb3VibGVQdHI+PjJdPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXSxIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1IRUFQMzJbdmFyYXJncysoYXJnSW5kZXgrNCk+PjJdLCtIRUFQRjY0W3RlbXBEb3VibGVQdHI+PjNdKX1lbHNlIGlmKHR5cGU9PSJpNjQiKXtyZXQ9W0hFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXSxIRUFQMzJbdmFyYXJncysoYXJnSW5kZXgrNCk+PjJdXX1lbHNle3R5cGU9ImkzMiI7cmV0PUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXX1hcmdJbmRleCs9UnVudGltZS5nZXROYXRpdmVGaWVsZFNpemUodHlwZSk7cmV0dXJuIHJldH12YXIgcmV0PVtdO3ZhciBjdXJyLG5leHQsY3VyckFyZzt3aGlsZSgxKXt2YXIgc3RhcnRUZXh0SW5kZXg9dGV4dEluZGV4O2N1cnI9SEVBUDhbdGV4dEluZGV4Pj4wXTtpZihjdXJyPT09MClicmVhaztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtpZihjdXJyPT0zNyl7dmFyIGZsYWdBbHdheXNTaWduZWQ9ZmFsc2U7dmFyIGZsYWdMZWZ0QWxpZ249ZmFsc2U7dmFyIGZsYWdBbHRlcm5hdGl2ZT1mYWxzZTt2YXIgZmxhZ1plcm9QYWQ9ZmFsc2U7dmFyIGZsYWdQYWRTaWduPWZhbHNlO2ZsYWdzTG9vcDp3aGlsZSgxKXtzd2l0Y2gobmV4dCl7Y2FzZSA0MzpmbGFnQWx3YXlzU2lnbmVkPXRydWU7YnJlYWs7Y2FzZSA0NTpmbGFnTGVmdEFsaWduPXRydWU7YnJlYWs7Y2FzZSAzNTpmbGFnQWx0ZXJuYXRpdmU9dHJ1ZTticmVhaztjYXNlIDQ4OmlmKGZsYWdaZXJvUGFkKXticmVhayBmbGFnc0xvb3B9ZWxzZXtmbGFnWmVyb1BhZD10cnVlO2JyZWFrfTtjYXNlIDMyOmZsYWdQYWRTaWduPXRydWU7YnJlYWs7ZGVmYXVsdDpicmVhayBmbGFnc0xvb3B9dGV4dEluZGV4Kys7bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19dmFyIHdpZHRoPTA7aWYobmV4dD09NDIpe3dpZHRoPWdldE5leHRBcmcoImkzMiIpO3RleHRJbmRleCsrO25leHQ9SEVBUDhbdGV4dEluZGV4KzE+PjBdfWVsc2V7d2hpbGUobmV4dD49NDgmJm5leHQ8PTU3KXt3aWR0aD13aWR0aCoxMCsobmV4dC00OCk7dGV4dEluZGV4Kys7bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19fXZhciBwcmVjaXNpb25TZXQ9ZmFsc2UscHJlY2lzaW9uPS0xO2lmKG5leHQ9PTQ2KXtwcmVjaXNpb249MDtwcmVjaXNpb25TZXQ9dHJ1ZTt0ZXh0SW5kZXgrKztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtpZihuZXh0PT00Mil7cHJlY2lzaW9uPWdldE5leHRBcmcoImkzMiIpO3RleHRJbmRleCsrfWVsc2V7d2hpbGUoMSl7dmFyIHByZWNpc2lvbkNocj1IRUFQOFt0ZXh0SW5kZXgrMT4+MF07aWYocHJlY2lzaW9uQ2hyPDQ4fHxwcmVjaXNpb25DaHI+NTcpYnJlYWs7cHJlY2lzaW9uPXByZWNpc2lvbioxMCsocHJlY2lzaW9uQ2hyLTQ4KTt0ZXh0SW5kZXgrK319bmV4dD1IRUFQOFt0ZXh0SW5kZXgrMT4+MF19aWYocHJlY2lzaW9uPDApe3ByZWNpc2lvbj02O3ByZWNpc2lvblNldD1mYWxzZX12YXIgYXJnU2l6ZTtzd2l0Y2goU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0KSl7Y2FzZSJoIjp2YXIgbmV4dE5leHQ9SEVBUDhbdGV4dEluZGV4KzI+PjBdO2lmKG5leHROZXh0PT0xMDQpe3RleHRJbmRleCsrO2FyZ1NpemU9MX1lbHNle2FyZ1NpemU9Mn1icmVhaztjYXNlImwiOnZhciBuZXh0TmV4dD1IRUFQOFt0ZXh0SW5kZXgrMj4+MF07aWYobmV4dE5leHQ9PTEwOCl7dGV4dEluZGV4Kys7YXJnU2l6ZT04fWVsc2V7YXJnU2l6ZT00fWJyZWFrO2Nhc2UiTCI6Y2FzZSJxIjpjYXNlImoiOmFyZ1NpemU9ODticmVhaztjYXNlInoiOmNhc2UidCI6Y2FzZSJJIjphcmdTaXplPTQ7YnJlYWs7ZGVmYXVsdDphcmdTaXplPW51bGx9aWYoYXJnU2l6ZSl0ZXh0SW5kZXgrKztuZXh0PUhFQVA4W3RleHRJbmRleCsxPj4wXTtzd2l0Y2goU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0KSl7Y2FzZSJkIjpjYXNlImkiOmNhc2UidSI6Y2FzZSJvIjpjYXNlIngiOmNhc2UiWCI6Y2FzZSJwIjp7dmFyIHNpZ25lZD1uZXh0PT0xMDB8fG5leHQ9PTEwNTthcmdTaXplPWFyZ1NpemV8fDQ7dmFyIGN1cnJBcmc9Z2V0TmV4dEFyZygiaSIrYXJnU2l6ZSo4KTt2YXIgb3JpZ0FyZz1jdXJyQXJnO3ZhciBhcmdUZXh0O2lmKGFyZ1NpemU9PTgpe2N1cnJBcmc9UnVudGltZS5tYWtlQmlnSW50KGN1cnJBcmdbMF0sY3VyckFyZ1sxXSxuZXh0PT0xMTcpfWlmKGFyZ1NpemU8PTQpe3ZhciBsaW1pdD1NYXRoLnBvdygyNTYsYXJnU2l6ZSktMTtjdXJyQXJnPShzaWduZWQ/cmVTaWduOnVuU2lnbikoY3VyckFyZyZsaW1pdCxhcmdTaXplKjgpfXZhciBjdXJyQWJzQXJnPU1hdGguYWJzKGN1cnJBcmcpO3ZhciBwcmVmaXg9IiI7aWYobmV4dD09MTAwfHxuZXh0PT0xMDUpe2lmKGFyZ1NpemU9PTgmJmk2NE1hdGgpYXJnVGV4dD1pNjRNYXRoLnN0cmluZ2lmeShvcmlnQXJnWzBdLG9yaWdBcmdbMV0sbnVsbCk7ZWxzZSBhcmdUZXh0PXJlU2lnbihjdXJyQXJnLDgqYXJnU2l6ZSwxKS50b1N0cmluZygxMCl9ZWxzZSBpZihuZXh0PT0xMTcpe2lmKGFyZ1NpemU9PTgmJmk2NE1hdGgpYXJnVGV4dD1pNjRNYXRoLnN0cmluZ2lmeShvcmlnQXJnWzBdLG9yaWdBcmdbMV0sdHJ1ZSk7ZWxzZSBhcmdUZXh0PXVuU2lnbihjdXJyQXJnLDgqYXJnU2l6ZSwxKS50b1N0cmluZygxMCk7Y3VyckFyZz1NYXRoLmFicyhjdXJyQXJnKX1lbHNlIGlmKG5leHQ9PTExMSl7YXJnVGV4dD0oZmxhZ0FsdGVybmF0aXZlPyIwIjoiIikrY3VyckFic0FyZy50b1N0cmluZyg4KX1lbHNlIGlmKG5leHQ9PTEyMHx8bmV4dD09ODgpe3ByZWZpeD1mbGFnQWx0ZXJuYXRpdmUmJmN1cnJBcmchPTA/IjB4IjoiIjtpZihhcmdTaXplPT04JiZpNjRNYXRoKXtpZihvcmlnQXJnWzFdKXthcmdUZXh0PShvcmlnQXJnWzFdPj4+MCkudG9TdHJpbmcoMTYpO3ZhciBsb3dlcj0ob3JpZ0FyZ1swXT4+PjApLnRvU3RyaW5nKDE2KTt3aGlsZShsb3dlci5sZW5ndGg8OClsb3dlcj0iMCIrbG93ZXI7YXJnVGV4dCs9bG93ZXJ9ZWxzZXthcmdUZXh0PShvcmlnQXJnWzBdPj4+MCkudG9TdHJpbmcoMTYpfX1lbHNlIGlmKGN1cnJBcmc8MCl7Y3VyckFyZz0tY3VyckFyZzthcmdUZXh0PShjdXJyQWJzQXJnLTEpLnRvU3RyaW5nKDE2KTt2YXIgYnVmZmVyPVtdO2Zvcih2YXIgaT0wO2k8YXJnVGV4dC5sZW5ndGg7aSsrKXtidWZmZXIucHVzaCgoMTUtcGFyc2VJbnQoYXJnVGV4dFtpXSwxNikpLnRvU3RyaW5nKDE2KSl9YXJnVGV4dD1idWZmZXIuam9pbigiIik7d2hpbGUoYXJnVGV4dC5sZW5ndGg8YXJnU2l6ZSoyKWFyZ1RleHQ9ImYiK2FyZ1RleHR9ZWxzZXthcmdUZXh0PWN1cnJBYnNBcmcudG9TdHJpbmcoMTYpfWlmKG5leHQ9PTg4KXtwcmVmaXg9cHJlZml4LnRvVXBwZXJDYXNlKCk7YXJnVGV4dD1hcmdUZXh0LnRvVXBwZXJDYXNlKCl9fWVsc2UgaWYobmV4dD09MTEyKXtpZihjdXJyQWJzQXJnPT09MCl7YXJnVGV4dD0iKG5pbCkifWVsc2V7cHJlZml4PSIweCI7YXJnVGV4dD1jdXJyQWJzQXJnLnRvU3RyaW5nKDE2KX19aWYocHJlY2lzaW9uU2V0KXt3aGlsZShhcmdUZXh0Lmxlbmd0aDxwcmVjaXNpb24pe2FyZ1RleHQ9IjAiK2FyZ1RleHR9fWlmKGN1cnJBcmc+PTApe2lmKGZsYWdBbHdheXNTaWduZWQpe3ByZWZpeD0iKyIrcHJlZml4fWVsc2UgaWYoZmxhZ1BhZFNpZ24pe3ByZWZpeD0iICIrcHJlZml4fX1pZihhcmdUZXh0LmNoYXJBdCgwKT09Ii0iKXtwcmVmaXg9Ii0iK3ByZWZpeDthcmdUZXh0PWFyZ1RleHQuc3Vic3RyKDEpfXdoaWxlKHByZWZpeC5sZW5ndGgrYXJnVGV4dC5sZW5ndGg8d2lkdGgpe2lmKGZsYWdMZWZ0QWxpZ24pe2FyZ1RleHQrPSIgIn1lbHNle2lmKGZsYWdaZXJvUGFkKXthcmdUZXh0PSIwIithcmdUZXh0fWVsc2V7cHJlZml4PSIgIitwcmVmaXh9fX1hcmdUZXh0PXByZWZpeCthcmdUZXh0O2FyZ1RleHQuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKGNocil7cmV0LnB1c2goY2hyLmNoYXJDb2RlQXQoMCkpfSkpO2JyZWFrfTtjYXNlImYiOmNhc2UiRiI6Y2FzZSJlIjpjYXNlIkUiOmNhc2UiZyI6Y2FzZSJHIjp7dmFyIGN1cnJBcmc9Z2V0TmV4dEFyZygiZG91YmxlIik7dmFyIGFyZ1RleHQ7aWYoaXNOYU4oY3VyckFyZykpe2FyZ1RleHQ9Im5hbiI7ZmxhZ1plcm9QYWQ9ZmFsc2V9ZWxzZSBpZighaXNGaW5pdGUoY3VyckFyZykpe2FyZ1RleHQ9KGN1cnJBcmc8MD8iLSI6IiIpKyJpbmYiO2ZsYWdaZXJvUGFkPWZhbHNlfWVsc2V7dmFyIGlzR2VuZXJhbD1mYWxzZTt2YXIgZWZmZWN0aXZlUHJlY2lzaW9uPU1hdGgubWluKHByZWNpc2lvbiwyMCk7aWYobmV4dD09MTAzfHxuZXh0PT03MSl7aXNHZW5lcmFsPXRydWU7cHJlY2lzaW9uPXByZWNpc2lvbnx8MTt2YXIgZXhwb25lbnQ9cGFyc2VJbnQoY3VyckFyZy50b0V4cG9uZW50aWFsKGVmZmVjdGl2ZVByZWNpc2lvbikuc3BsaXQoImUiKVsxXSwxMCk7aWYocHJlY2lzaW9uPmV4cG9uZW50JiZleHBvbmVudD49LTQpe25leHQ9KG5leHQ9PTEwMz8iZiI6IkYiKS5jaGFyQ29kZUF0KDApO3ByZWNpc2lvbi09ZXhwb25lbnQrMX1lbHNle25leHQ9KG5leHQ9PTEwMz8iZSI6IkUiKS5jaGFyQ29kZUF0KDApO3ByZWNpc2lvbi0tfWVmZmVjdGl2ZVByZWNpc2lvbj1NYXRoLm1pbihwcmVjaXNpb24sMjApfWlmKG5leHQ9PTEwMXx8bmV4dD09Njkpe2FyZ1RleHQ9Y3VyckFyZy50b0V4cG9uZW50aWFsKGVmZmVjdGl2ZVByZWNpc2lvbik7aWYoL1tlRV1bLStdXGQkLy50ZXN0KGFyZ1RleHQpKXthcmdUZXh0PWFyZ1RleHQuc2xpY2UoMCwtMSkrIjAiK2FyZ1RleHQuc2xpY2UoLTEpfX1lbHNlIGlmKG5leHQ9PTEwMnx8bmV4dD09NzApe2FyZ1RleHQ9Y3VyckFyZy50b0ZpeGVkKGVmZmVjdGl2ZVByZWNpc2lvbik7aWYoY3VyckFyZz09PTAmJl9fcmVhbGx5TmVnYXRpdmUoY3VyckFyZykpe2FyZ1RleHQ9Ii0iK2FyZ1RleHR9fXZhciBwYXJ0cz1hcmdUZXh0LnNwbGl0KCJlIik7aWYoaXNHZW5lcmFsJiYhZmxhZ0FsdGVybmF0aXZlKXt3aGlsZShwYXJ0c1swXS5sZW5ndGg+MSYmcGFydHNbMF0uaW5kZXhPZigiLiIpIT0tMSYmKHBhcnRzWzBdLnNsaWNlKC0xKT09IjAifHxwYXJ0c1swXS5zbGljZSgtMSk9PSIuIikpe3BhcnRzWzBdPXBhcnRzWzBdLnNsaWNlKDAsLTEpfX1lbHNle2lmKGZsYWdBbHRlcm5hdGl2ZSYmYXJnVGV4dC5pbmRleE9mKCIuIik9PS0xKXBhcnRzWzBdKz0iLiI7d2hpbGUocHJlY2lzaW9uPmVmZmVjdGl2ZVByZWNpc2lvbisrKXBhcnRzWzBdKz0iMCJ9YXJnVGV4dD1wYXJ0c1swXSsocGFydHMubGVuZ3RoPjE/ImUiK3BhcnRzWzFdOiIiKTtpZihuZXh0PT02OSlhcmdUZXh0PWFyZ1RleHQudG9VcHBlckNhc2UoKTtpZihjdXJyQXJnPj0wKXtpZihmbGFnQWx3YXlzU2lnbmVkKXthcmdUZXh0PSIrIithcmdUZXh0fWVsc2UgaWYoZmxhZ1BhZFNpZ24pe2FyZ1RleHQ9IiAiK2FyZ1RleHR9fX13aGlsZShhcmdUZXh0Lmxlbmd0aDx3aWR0aCl7aWYoZmxhZ0xlZnRBbGlnbil7YXJnVGV4dCs9IiAifWVsc2V7aWYoZmxhZ1plcm9QYWQmJihhcmdUZXh0WzBdPT0iLSJ8fGFyZ1RleHRbMF09PSIrIikpe2FyZ1RleHQ9YXJnVGV4dFswXSsiMCIrYXJnVGV4dC5zbGljZSgxKX1lbHNle2FyZ1RleHQ9KGZsYWdaZXJvUGFkPyIwIjoiICIpK2FyZ1RleHR9fX1pZihuZXh0PDk3KWFyZ1RleHQ9YXJnVGV4dC50b1VwcGVyQ2FzZSgpO2FyZ1RleHQuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKGNocil7cmV0LnB1c2goY2hyLmNoYXJDb2RlQXQoMCkpfSkpO2JyZWFrfTtjYXNlInMiOnt2YXIgYXJnPWdldE5leHRBcmcoImk4KiIpO3ZhciBhcmdMZW5ndGg9YXJnP19zdHJsZW4oYXJnKToiKG51bGwpIi5sZW5ndGg7aWYocHJlY2lzaW9uU2V0KWFyZ0xlbmd0aD1NYXRoLm1pbihhcmdMZW5ndGgscHJlY2lzaW9uKTtpZighZmxhZ0xlZnRBbGlnbil7d2hpbGUoYXJnTGVuZ3RoPHdpZHRoLS0pe3JldC5wdXNoKDMyKX19aWYoYXJnKXtmb3IodmFyIGk9MDtpPGFyZ0xlbmd0aDtpKyspe3JldC5wdXNoKEhFQVBVOFthcmcrKz4+MF0pfX1lbHNle3JldD1yZXQuY29uY2F0KGludEFycmF5RnJvbVN0cmluZygiKG51bGwpIi5zdWJzdHIoMCxhcmdMZW5ndGgpLHRydWUpKX1pZihmbGFnTGVmdEFsaWduKXt3aGlsZShhcmdMZW5ndGg8d2lkdGgtLSl7cmV0LnB1c2goMzIpfX1icmVha307Y2FzZSJjIjp7aWYoZmxhZ0xlZnRBbGlnbilyZXQucHVzaChnZXROZXh0QXJnKCJpOCIpKTt3aGlsZSgtLXdpZHRoPjApe3JldC5wdXNoKDMyKX1pZighZmxhZ0xlZnRBbGlnbilyZXQucHVzaChnZXROZXh0QXJnKCJpOCIpKTticmVha307Y2FzZSJuIjp7dmFyIHB0cj1nZXROZXh0QXJnKCJpMzIqIik7SEVBUDMyW3B0cj4+Ml09cmV0Lmxlbmd0aDticmVha307Y2FzZSIlIjp7cmV0LnB1c2goY3Vycik7YnJlYWt9O2RlZmF1bHQ6e2Zvcih2YXIgaT1zdGFydFRleHRJbmRleDtpPHRleHRJbmRleCsyO2krKyl7cmV0LnB1c2goSEVBUDhbaT4+MF0pfX19dGV4dEluZGV4Kz0yfWVsc2V7cmV0LnB1c2goY3Vycik7dGV4dEluZGV4Kz0xfX1yZXR1cm4gcmV0fWZ1bmN0aW9uIF9tYWxsb2MoYnl0ZXMpe3ZhciBwdHI9UnVudGltZS5keW5hbWljQWxsb2MoYnl0ZXMrOCk7cmV0dXJuIHB0cis4JjQyOTQ5NjcyODh9TW9kdWxlWyJfbWFsbG9jIl09X21hbGxvYztmdW5jdGlvbiBfc25wcmludGYocyxuLGZvcm1hdCx2YXJhcmdzKXt2YXIgcmVzdWx0PV9fZm9ybWF0U3RyaW5nKGZvcm1hdCx2YXJhcmdzKTt2YXIgbGltaXQ9bj09PXVuZGVmaW5lZD9yZXN1bHQubGVuZ3RoOk1hdGgubWluKHJlc3VsdC5sZW5ndGgsTWF0aC5tYXgobi0xLDApKTtpZihzPDApe3M9LXM7dmFyIGJ1Zj1fbWFsbG9jKGxpbWl0KzEpO0hFQVAzMltzPj4yXT1idWY7cz1idWZ9Zm9yKHZhciBpPTA7aTxsaW1pdDtpKyspe0hFQVA4W3MraT4+MF09cmVzdWx0W2ldfWlmKGxpbWl0PG58fG49PT11bmRlZmluZWQpSEVBUDhbcytpPj4wXT0wO3JldHVybiByZXN1bHQubGVuZ3RofWZ1bmN0aW9uIF9ta3BvcnQoKXt0aHJvdyJUT0RPIn12YXIgU09DS0ZTPXttb3VudDooZnVuY3Rpb24obW91bnQpe3JldHVybiBGUy5jcmVhdGVOb2RlKG51bGwsIi8iLDE2Mzg0fDUxMSwwKX0pLGNyZWF0ZVNvY2tldDooZnVuY3Rpb24oZmFtaWx5LHR5cGUscHJvdG9jb2wpe3ZhciBzdHJlYW1pbmc9dHlwZT09MTtpZihwcm90b2NvbCl7YXNzZXJ0KHN0cmVhbWluZz09KHByb3RvY29sPT02KSl9dmFyIHNvY2s9e2ZhbWlseTpmYW1pbHksdHlwZTp0eXBlLHByb3RvY29sOnByb3RvY29sLHNlcnZlcjpudWxsLHBlZXJzOnt9LHBlbmRpbmc6W10scmVjdl9xdWV1ZTpbXSxzb2NrX29wczpTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzfTt2YXIgbmFtZT1TT0NLRlMubmV4dG5hbWUoKTt2YXIgbm9kZT1GUy5jcmVhdGVOb2RlKFNPQ0tGUy5yb290LG5hbWUsNDkxNTIsMCk7bm9kZS5zb2NrPXNvY2s7dmFyIHN0cmVhbT1GUy5jcmVhdGVTdHJlYW0oe3BhdGg6bmFtZSxub2RlOm5vZGUsZmxhZ3M6RlMubW9kZVN0cmluZ1RvRmxhZ3MoInIrIiksc2Vla2FibGU6ZmFsc2Usc3RyZWFtX29wczpTT0NLRlMuc3RyZWFtX29wc30pO3NvY2suc3RyZWFtPXN0cmVhbTtyZXR1cm4gc29ja30pLGdldFNvY2tldDooZnVuY3Rpb24oZmQpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZkKTtpZighc3RyZWFtfHwhRlMuaXNTb2NrZXQoc3RyZWFtLm5vZGUubW9kZSkpe3JldHVybiBudWxsfXJldHVybiBzdHJlYW0ubm9kZS5zb2NrfSksc3RyZWFtX29wczp7cG9sbDooZnVuY3Rpb24oc3RyZWFtKXt2YXIgc29jaz1zdHJlYW0ubm9kZS5zb2NrO3JldHVybiBzb2NrLnNvY2tfb3BzLnBvbGwoc29jayl9KSxpb2N0bDooZnVuY3Rpb24oc3RyZWFtLHJlcXVlc3QsdmFyYXJncyl7dmFyIHNvY2s9c3RyZWFtLm5vZGUuc29jaztyZXR1cm4gc29jay5zb2NrX29wcy5pb2N0bChzb2NrLHJlcXVlc3QsdmFyYXJncyl9KSxyZWFkOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7dmFyIG1zZz1zb2NrLnNvY2tfb3BzLnJlY3Ztc2coc29jayxsZW5ndGgpO2lmKCFtc2cpe3JldHVybiAwfWJ1ZmZlci5zZXQobXNnLmJ1ZmZlcixvZmZzZXQpO3JldHVybiBtc2cuYnVmZmVyLmxlbmd0aH0pLHdyaXRlOihmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7cmV0dXJuIHNvY2suc29ja19vcHMuc2VuZG1zZyhzb2NrLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoKX0pLGNsb3NlOihmdW5jdGlvbihzdHJlYW0pe3ZhciBzb2NrPXN0cmVhbS5ub2RlLnNvY2s7c29jay5zb2NrX29wcy5jbG9zZShzb2NrKX0pfSxuZXh0bmFtZTooZnVuY3Rpb24oKXtpZighU09DS0ZTLm5leHRuYW1lLmN1cnJlbnQpe1NPQ0tGUy5uZXh0bmFtZS5jdXJyZW50PTB9cmV0dXJuInNvY2tldFsiK1NPQ0tGUy5uZXh0bmFtZS5jdXJyZW50KysgKyJdIn0pLHdlYnNvY2tldF9zb2NrX29wczp7Y3JlYXRlUGVlcjooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe3ZhciB3cztpZih0eXBlb2YgYWRkcj09PSJvYmplY3QiKXt3cz1hZGRyO2FkZHI9bnVsbDtwb3J0PW51bGx9aWYod3Mpe2lmKHdzLl9zb2NrZXQpe2FkZHI9d3MuX3NvY2tldC5yZW1vdGVBZGRyZXNzO3BvcnQ9d3MuX3NvY2tldC5yZW1vdGVQb3J0fWVsc2V7dmFyIHJlc3VsdD0vd3Nbc10/OlwvXC8oW146XSspOihcZCspLy5leGVjKHdzLnVybCk7aWYoIXJlc3VsdCl7dGhyb3cgbmV3IEVycm9yKCJXZWJTb2NrZXQgVVJMIG11c3QgYmUgaW4gdGhlIGZvcm1hdCB3cyhzKTovL2FkZHJlc3M6cG9ydCIpfWFkZHI9cmVzdWx0WzFdO3BvcnQ9cGFyc2VJbnQocmVzdWx0WzJdLDEwKX19ZWxzZXt0cnl7dmFyIHJ1bnRpbWVDb25maWc9TW9kdWxlWyJ3ZWJzb2NrZXQiXSYmIm9iamVjdCI9PT10eXBlb2YgTW9kdWxlWyJ3ZWJzb2NrZXQiXTt2YXIgdXJsPSJ3czojIi5yZXBsYWNlKCIjIiwiLy8iKTtpZihydW50aW1lQ29uZmlnKXtpZigic3RyaW5nIj09PXR5cGVvZiBNb2R1bGVbIndlYnNvY2tldCJdWyJ1cmwiXSl7dXJsPU1vZHVsZVsid2Vic29ja2V0Il1bInVybCJdfX1pZih1cmw9PT0id3M6Ly8ifHx1cmw9PT0id3NzOi8vIil7dXJsPXVybCthZGRyKyI6Iitwb3J0fXZhciBzdWJQcm90b2NvbHM9ImJpbmFyeSI7aWYocnVudGltZUNvbmZpZyl7aWYoInN0cmluZyI9PT10eXBlb2YgTW9kdWxlWyJ3ZWJzb2NrZXQiXVsic3VicHJvdG9jb2wiXSl7c3ViUHJvdG9jb2xzPU1vZHVsZVsid2Vic29ja2V0Il1bInN1YnByb3RvY29sIl19fXN1YlByb3RvY29scz1zdWJQcm90b2NvbHMucmVwbGFjZSgvXiArfCArJC9nLCIiKS5zcGxpdCgvICosICovKTt2YXIgb3B0cz1FTlZJUk9OTUVOVF9JU19OT0RFP3sicHJvdG9jb2wiOnN1YlByb3RvY29scy50b1N0cmluZygpfTpzdWJQcm90b2NvbHM7dmFyIFdlYlNvY2tldD1FTlZJUk9OTUVOVF9JU19OT0RFP3JlcXVpcmUoIndzIik6d2luZG93WyJXZWJTb2NrZXQiXTt3cz1uZXcgV2ViU29ja2V0KHVybCxvcHRzKTt3cy5iaW5hcnlUeXBlPSJhcnJheWJ1ZmZlciJ9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUhPU1RVTlJFQUNIKX19dmFyIHBlZXI9e2FkZHI6YWRkcixwb3J0OnBvcnQsc29ja2V0OndzLGRncmFtX3NlbmRfcXVldWU6W119O1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuYWRkUGVlcihzb2NrLHBlZXIpO1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuaGFuZGxlUGVlckV2ZW50cyhzb2NrLHBlZXIpO2lmKHNvY2sudHlwZT09PTImJnR5cGVvZiBzb2NrLnNwb3J0IT09InVuZGVmaW5lZCIpe3BlZXIuZGdyYW1fc2VuZF9xdWV1ZS5wdXNoKG5ldyBVaW50OEFycmF5KFsyNTUsMjU1LDI1NSwyNTUsInAiLmNoYXJDb2RlQXQoMCksIm8iLmNoYXJDb2RlQXQoMCksInIiLmNoYXJDb2RlQXQoMCksInQiLmNoYXJDb2RlQXQoMCksKHNvY2suc3BvcnQmNjUyODApPj44LHNvY2suc3BvcnQmMjU1XSkpfXJldHVybiBwZWVyfSksZ2V0UGVlcjooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe3JldHVybiBzb2NrLnBlZXJzW2FkZHIrIjoiK3BvcnRdfSksYWRkUGVlcjooZnVuY3Rpb24oc29jayxwZWVyKXtzb2NrLnBlZXJzW3BlZXIuYWRkcisiOiIrcGVlci5wb3J0XT1wZWVyfSkscmVtb3ZlUGVlcjooZnVuY3Rpb24oc29jayxwZWVyKXtkZWxldGUgc29jay5wZWVyc1twZWVyLmFkZHIrIjoiK3BlZXIucG9ydF19KSxoYW5kbGVQZWVyRXZlbnRzOihmdW5jdGlvbihzb2NrLHBlZXIpe3ZhciBmaXJzdD10cnVlO3ZhciBoYW5kbGVPcGVuPShmdW5jdGlvbigpe3RyeXt2YXIgcXVldWVkPXBlZXIuZGdyYW1fc2VuZF9xdWV1ZS5zaGlmdCgpO3doaWxlKHF1ZXVlZCl7cGVlci5zb2NrZXQuc2VuZChxdWV1ZWQpO3F1ZXVlZD1wZWVyLmRncmFtX3NlbmRfcXVldWUuc2hpZnQoKX19Y2F0Y2goZSl7cGVlci5zb2NrZXQuY2xvc2UoKX19KTtmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKGRhdGEpe2Fzc2VydCh0eXBlb2YgZGF0YSE9PSJzdHJpbmciJiZkYXRhLmJ5dGVMZW5ndGghPT11bmRlZmluZWQpO2RhdGE9bmV3IFVpbnQ4QXJyYXkoZGF0YSk7dmFyIHdhc2ZpcnN0PWZpcnN0O2ZpcnN0PWZhbHNlO2lmKHdhc2ZpcnN0JiZkYXRhLmxlbmd0aD09PTEwJiZkYXRhWzBdPT09MjU1JiZkYXRhWzFdPT09MjU1JiZkYXRhWzJdPT09MjU1JiZkYXRhWzNdPT09MjU1JiZkYXRhWzRdPT09InAiLmNoYXJDb2RlQXQoMCkmJmRhdGFbNV09PT0ibyIuY2hhckNvZGVBdCgwKSYmZGF0YVs2XT09PSJyIi5jaGFyQ29kZUF0KDApJiZkYXRhWzddPT09InQiLmNoYXJDb2RlQXQoMCkpe3ZhciBuZXdwb3J0PWRhdGFbOF08PDh8ZGF0YVs5XTtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLnJlbW92ZVBlZXIoc29jayxwZWVyKTtwZWVyLnBvcnQ9bmV3cG9ydDtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmFkZFBlZXIoc29jayxwZWVyKTtyZXR1cm59c29jay5yZWN2X3F1ZXVlLnB1c2goe2FkZHI6cGVlci5hZGRyLHBvcnQ6cGVlci5wb3J0LGRhdGE6ZGF0YX0pfWlmKEVOVklST05NRU5UX0lTX05PREUpe3BlZXIuc29ja2V0Lm9uKCJvcGVuIixoYW5kbGVPcGVuKTtwZWVyLnNvY2tldC5vbigibWVzc2FnZSIsKGZ1bmN0aW9uKGRhdGEsZmxhZ3Mpe2lmKCFmbGFncy5iaW5hcnkpe3JldHVybn1oYW5kbGVNZXNzYWdlKChuZXcgVWludDhBcnJheShkYXRhKSkuYnVmZmVyKX0pKTtwZWVyLnNvY2tldC5vbigiZXJyb3IiLChmdW5jdGlvbigpe30pKX1lbHNle3BlZXIuc29ja2V0Lm9ub3Blbj1oYW5kbGVPcGVuO3BlZXIuc29ja2V0Lm9ubWVzc2FnZT1mdW5jdGlvbiBwZWVyX3NvY2tldF9vbm1lc3NhZ2UoZXZlbnQpe2hhbmRsZU1lc3NhZ2UoZXZlbnQuZGF0YSl9fX0pLHBvbGw6KGZ1bmN0aW9uKHNvY2spe2lmKHNvY2sudHlwZT09PTEmJnNvY2suc2VydmVyKXtyZXR1cm4gc29jay5wZW5kaW5nLmxlbmd0aD82NHwxOjB9dmFyIG1hc2s9MDt2YXIgZGVzdD1zb2NrLnR5cGU9PT0xP1NPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuZ2V0UGVlcihzb2NrLHNvY2suZGFkZHIsc29jay5kcG9ydCk6bnVsbDtpZihzb2NrLnJlY3ZfcXVldWUubGVuZ3RofHwhZGVzdHx8ZGVzdCYmZGVzdC5zb2NrZXQucmVhZHlTdGF0ZT09PWRlc3Quc29ja2V0LkNMT1NJTkd8fGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TRUQpe21hc2t8PTY0fDF9aWYoIWRlc3R8fGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5PUEVOKXttYXNrfD00fWlmKGRlc3QmJmRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0JiZkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXttYXNrfD0xNn1yZXR1cm4gbWFza30pLGlvY3RsOihmdW5jdGlvbihzb2NrLHJlcXVlc3QsYXJnKXtzd2l0Y2gocmVxdWVzdCl7Y2FzZSAyMTUzMTp2YXIgYnl0ZXM9MDtpZihzb2NrLnJlY3ZfcXVldWUubGVuZ3RoKXtieXRlcz1zb2NrLnJlY3ZfcXVldWVbMF0uZGF0YS5sZW5ndGh9SEVBUDMyW2FyZz4+Ml09Ynl0ZXM7cmV0dXJuIDA7ZGVmYXVsdDpyZXR1cm4gRVJSTk9fQ09ERVMuRUlOVkFMfX0pLGNsb3NlOihmdW5jdGlvbihzb2NrKXtpZihzb2NrLnNlcnZlcil7dHJ5e3NvY2suc2VydmVyLmNsb3NlKCl9Y2F0Y2goZSl7fXNvY2suc2VydmVyPW51bGx9dmFyIHBlZXJzPU9iamVjdC5rZXlzKHNvY2sucGVlcnMpO2Zvcih2YXIgaT0wO2k8cGVlcnMubGVuZ3RoO2krKyl7dmFyIHBlZXI9c29jay5wZWVyc1twZWVyc1tpXV07dHJ5e3BlZXIuc29ja2V0LmNsb3NlKCl9Y2F0Y2goZSl7fVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMucmVtb3ZlUGVlcihzb2NrLHBlZXIpfXJldHVybiAwfSksYmluZDooZnVuY3Rpb24oc29jayxhZGRyLHBvcnQpe2lmKHR5cGVvZiBzb2NrLnNhZGRyIT09InVuZGVmaW5lZCJ8fHR5cGVvZiBzb2NrLnNwb3J0IT09InVuZGVmaW5lZCIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9c29jay5zYWRkcj1hZGRyO3NvY2suc3BvcnQ9cG9ydHx8X21rcG9ydCgpO2lmKHNvY2sudHlwZT09PTIpe2lmKHNvY2suc2VydmVyKXtzb2NrLnNlcnZlci5jbG9zZSgpO3NvY2suc2VydmVyPW51bGx9dHJ5e3NvY2suc29ja19vcHMubGlzdGVuKHNvY2ssMCl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtpZihlLmVycm5vIT09RVJSTk9fQ09ERVMuRU9QTk9UU1VQUCl0aHJvdyBlfX19KSxjb25uZWN0OihmdW5jdGlvbihzb2NrLGFkZHIscG9ydCl7aWYoc29jay5zZXJ2ZXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPRFMuRU9QTk9UU1VQUCl9aWYodHlwZW9mIHNvY2suZGFkZHIhPT0idW5kZWZpbmVkIiYmdHlwZW9mIHNvY2suZHBvcnQhPT0idW5kZWZpbmVkIil7dmFyIGRlc3Q9U09DS0ZTLndlYnNvY2tldF9zb2NrX29wcy5nZXRQZWVyKHNvY2ssc29jay5kYWRkcixzb2NrLmRwb3J0KTtpZihkZXN0KXtpZihkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ09OTkVDVElORyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFMUkVBRFkpfWVsc2V7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTQ09OTil9fX12YXIgcGVlcj1TT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIoc29jayxhZGRyLHBvcnQpO3NvY2suZGFkZHI9cGVlci5hZGRyO3NvY2suZHBvcnQ9cGVlci5wb3J0O3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlBST0dSRVNTKX0pLGxpc3RlbjooZnVuY3Rpb24oc29jayxiYWNrbG9nKXtpZighRU5WSVJPTk1FTlRfSVNfTk9ERSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU9QTk9UU1VQUCl9aWYoc29jay5zZXJ2ZXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCl9dmFyIFdlYlNvY2tldFNlcnZlcj1yZXF1aXJlKCJ3cyIpLlNlcnZlcjt2YXIgaG9zdD1zb2NrLnNhZGRyO3NvY2suc2VydmVyPW5ldyBXZWJTb2NrZXRTZXJ2ZXIoe2hvc3Q6aG9zdCxwb3J0OnNvY2suc3BvcnR9KTtzb2NrLnNlcnZlci5vbigiY29ubmVjdGlvbiIsKGZ1bmN0aW9uKHdzKXtpZihzb2NrLnR5cGU9PT0xKXt2YXIgbmV3c29jaz1TT0NLRlMuY3JlYXRlU29ja2V0KHNvY2suZmFtaWx5LHNvY2sudHlwZSxzb2NrLnByb3RvY29sKTt2YXIgcGVlcj1TT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIobmV3c29jayx3cyk7bmV3c29jay5kYWRkcj1wZWVyLmFkZHI7bmV3c29jay5kcG9ydD1wZWVyLnBvcnQ7c29jay5wZW5kaW5nLnB1c2gobmV3c29jayl9ZWxzZXtTT0NLRlMud2Vic29ja2V0X3NvY2tfb3BzLmNyZWF0ZVBlZXIoc29jayx3cyl9fSkpO3NvY2suc2VydmVyLm9uKCJjbG9zZWQiLChmdW5jdGlvbigpe3NvY2suc2VydmVyPW51bGx9KSk7c29jay5zZXJ2ZXIub24oImVycm9yIiwoZnVuY3Rpb24oKXt9KSl9KSxhY2NlcHQ6KGZ1bmN0aW9uKGxpc3RlbnNvY2spe2lmKCFsaXN0ZW5zb2NrLnNlcnZlcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKX12YXIgbmV3c29jaz1saXN0ZW5zb2NrLnBlbmRpbmcuc2hpZnQoKTtuZXdzb2NrLnN0cmVhbS5mbGFncz1saXN0ZW5zb2NrLnN0cmVhbS5mbGFncztyZXR1cm4gbmV3c29ja30pLGdldG5hbWU6KGZ1bmN0aW9uKHNvY2sscGVlcil7dmFyIGFkZHIscG9ydDtpZihwZWVyKXtpZihzb2NrLmRhZGRyPT09dW5kZWZpbmVkfHxzb2NrLmRwb3J0PT09dW5kZWZpbmVkKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9UQ09OTil9YWRkcj1zb2NrLmRhZGRyO3BvcnQ9c29jay5kcG9ydH1lbHNle2FkZHI9c29jay5zYWRkcnx8MDtwb3J0PXNvY2suc3BvcnR8fDB9cmV0dXJue2FkZHI6YWRkcixwb3J0OnBvcnR9fSksc2VuZG1zZzooZnVuY3Rpb24oc29jayxidWZmZXIsb2Zmc2V0LGxlbmd0aCxhZGRyLHBvcnQpe2lmKHNvY2sudHlwZT09PTIpe2lmKGFkZHI9PT11bmRlZmluZWR8fHBvcnQ9PT11bmRlZmluZWQpe2FkZHI9c29jay5kYWRkcjtwb3J0PXNvY2suZHBvcnR9aWYoYWRkcj09PXVuZGVmaW5lZHx8cG9ydD09PXVuZGVmaW5lZCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRURFU1RBRERSUkVRKX19ZWxzZXthZGRyPXNvY2suZGFkZHI7cG9ydD1zb2NrLmRwb3J0fXZhciBkZXN0PVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuZ2V0UGVlcihzb2NrLGFkZHIscG9ydCk7aWYoc29jay50eXBlPT09MSl7aWYoIWRlc3R8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9UQ09OTil9ZWxzZSBpZihkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ09OTkVDVElORyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX19dmFyIGRhdGE7aWYoYnVmZmVyIGluc3RhbmNlb2YgQXJyYXl8fGJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXtkYXRhPWJ1ZmZlci5zbGljZShvZmZzZXQsb2Zmc2V0K2xlbmd0aCl9ZWxzZXtkYXRhPWJ1ZmZlci5idWZmZXIuc2xpY2UoYnVmZmVyLmJ5dGVPZmZzZXQrb2Zmc2V0LGJ1ZmZlci5ieXRlT2Zmc2V0K29mZnNldCtsZW5ndGgpfWlmKHNvY2sudHlwZT09PTIpe2lmKCFkZXN0fHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlIT09ZGVzdC5zb2NrZXQuT1BFTil7aWYoIWRlc3R8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TSU5HfHxkZXN0LnNvY2tldC5yZWFkeVN0YXRlPT09ZGVzdC5zb2NrZXQuQ0xPU0VEKXtkZXN0PVNPQ0tGUy53ZWJzb2NrZXRfc29ja19vcHMuY3JlYXRlUGVlcihzb2NrLGFkZHIscG9ydCl9ZGVzdC5kZ3JhbV9zZW5kX3F1ZXVlLnB1c2goZGF0YSk7cmV0dXJuIGxlbmd0aH19dHJ5e2Rlc3Quc29ja2V0LnNlbmQoZGF0YSk7cmV0dXJuIGxlbmd0aH1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpfX0pLHJlY3Ztc2c6KGZ1bmN0aW9uKHNvY2ssbGVuZ3RoKXtpZihzb2NrLnR5cGU9PT0xJiZzb2NrLnNlcnZlcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVENPTk4pfXZhciBxdWV1ZWQ9c29jay5yZWN2X3F1ZXVlLnNoaWZ0KCk7aWYoIXF1ZXVlZCl7aWYoc29jay50eXBlPT09MSl7dmFyIGRlc3Q9U09DS0ZTLndlYnNvY2tldF9zb2NrX29wcy5nZXRQZWVyKHNvY2ssc29jay5kYWRkcixzb2NrLmRwb3J0KTtpZighZGVzdCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVENPTk4pfWVsc2UgaWYoZGVzdC5zb2NrZXQucmVhZHlTdGF0ZT09PWRlc3Quc29ja2V0LkNMT1NJTkd8fGRlc3Quc29ja2V0LnJlYWR5U3RhdGU9PT1kZXN0LnNvY2tldC5DTE9TRUQpe3JldHVybiBudWxsfWVsc2V7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFHQUlOKX19ZWxzZXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4pfX12YXIgcXVldWVkTGVuZ3RoPXF1ZXVlZC5kYXRhLmJ5dGVMZW5ndGh8fHF1ZXVlZC5kYXRhLmxlbmd0aDt2YXIgcXVldWVkT2Zmc2V0PXF1ZXVlZC5kYXRhLmJ5dGVPZmZzZXR8fDA7dmFyIHF1ZXVlZEJ1ZmZlcj1xdWV1ZWQuZGF0YS5idWZmZXJ8fHF1ZXVlZC5kYXRhO3ZhciBieXRlc1JlYWQ9TWF0aC5taW4obGVuZ3RoLHF1ZXVlZExlbmd0aCk7dmFyIHJlcz17YnVmZmVyOm5ldyBVaW50OEFycmF5KHF1ZXVlZEJ1ZmZlcixxdWV1ZWRPZmZzZXQsYnl0ZXNSZWFkKSxhZGRyOnF1ZXVlZC5hZGRyLHBvcnQ6cXVldWVkLnBvcnR9O2lmKHNvY2sudHlwZT09PTEmJmJ5dGVzUmVhZDxxdWV1ZWRMZW5ndGgpe3ZhciBieXRlc1JlbWFpbmluZz1xdWV1ZWRMZW5ndGgtYnl0ZXNSZWFkO3F1ZXVlZC5kYXRhPW5ldyBVaW50OEFycmF5KHF1ZXVlZEJ1ZmZlcixxdWV1ZWRPZmZzZXQrYnl0ZXNSZWFkLGJ5dGVzUmVtYWluaW5nKTtzb2NrLnJlY3ZfcXVldWUudW5zaGlmdChxdWV1ZWQpfXJldHVybiByZXN9KX19O2Z1bmN0aW9uIF9zZW5kKGZkLGJ1ZixsZW4sZmxhZ3Mpe3ZhciBzb2NrPVNPQ0tGUy5nZXRTb2NrZXQoZmQpO2lmKCFzb2NrKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9cmV0dXJuIF93cml0ZShmZCxidWYsbGVuKX1mdW5jdGlvbiBfcHdyaXRlKGZpbGRlcyxidWYsbmJ5dGUsb2Zmc2V0KXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmaWxkZXMpO2lmKCFzdHJlYW0pe19fX3NldEVyck5vKEVSUk5PX0NPREVTLkVCQURGKTtyZXR1cm4tMX10cnl7dmFyIHNsYWI9SEVBUDg7cmV0dXJuIEZTLndyaXRlKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSxvZmZzZXQpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF93cml0ZShmaWxkZXMsYnVmLG5ieXRlKXt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmaWxkZXMpO2lmKCFzdHJlYW0pe19fX3NldEVyck5vKEVSUk5PX0NPREVTLkVCQURGKTtyZXR1cm4tMX10cnl7dmFyIHNsYWI9SEVBUDg7cmV0dXJuIEZTLndyaXRlKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSl9Y2F0Y2goZSl7RlMuaGFuZGxlRlNFcnJvcihlKTtyZXR1cm4tMX19ZnVuY3Rpb24gX2ZpbGVubyhzdHJlYW0pe3N0cmVhbT1GUy5nZXRTdHJlYW1Gcm9tUHRyKHN0cmVhbSk7aWYoIXN0cmVhbSlyZXR1cm4tMTtyZXR1cm4gc3RyZWFtLmZkfWZ1bmN0aW9uIF9md3JpdGUocHRyLHNpemUsbml0ZW1zLHN0cmVhbSl7dmFyIGJ5dGVzVG9Xcml0ZT1uaXRlbXMqc2l6ZTtpZihieXRlc1RvV3JpdGU9PTApcmV0dXJuIDA7dmFyIGZkPV9maWxlbm8oc3RyZWFtKTt2YXIgYnl0ZXNXcml0dGVuPV93cml0ZShmZCxwdHIsYnl0ZXNUb1dyaXRlKTtpZihieXRlc1dyaXR0ZW49PS0xKXt2YXIgc3RyZWFtT2JqPUZTLmdldFN0cmVhbUZyb21QdHIoc3RyZWFtKTtpZihzdHJlYW1PYmopc3RyZWFtT2JqLmVycm9yPXRydWU7cmV0dXJuIDB9ZWxzZXtyZXR1cm4gTWF0aC5mbG9vcihieXRlc1dyaXR0ZW4vc2l6ZSl9fWZ1bmN0aW9uIF9yZWN2KGZkLGJ1ZixsZW4sZmxhZ3Mpe3ZhciBzb2NrPVNPQ0tGUy5nZXRTb2NrZXQoZmQpO2lmKCFzb2NrKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9cmV0dXJuIF9yZWFkKGZkLGJ1ZixsZW4pfWZ1bmN0aW9uIF9wcmVhZChmaWxkZXMsYnVmLG5ieXRlLG9mZnNldCl7dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmlsZGVzKTtpZighc3RyZWFtKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuLTF9dHJ5e3ZhciBzbGFiPUhFQVA4O3JldHVybiBGUy5yZWFkKHN0cmVhbSxzbGFiLGJ1ZixuYnl0ZSxvZmZzZXQpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF9yZWFkKGZpbGRlcyxidWYsbmJ5dGUpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZpbGRlcyk7aWYoIXN0cmVhbSl7X19fc2V0RXJyTm8oRVJSTk9fQ09ERVMuRUJBREYpO3JldHVybi0xfXRyeXt2YXIgc2xhYj1IRUFQODtyZXR1cm4gRlMucmVhZChzdHJlYW0sc2xhYixidWYsbmJ5dGUpfWNhdGNoKGUpe0ZTLmhhbmRsZUZTRXJyb3IoZSk7cmV0dXJuLTF9fWZ1bmN0aW9uIF9mcmVhZChwdHIsc2l6ZSxuaXRlbXMsc3RyZWFtKXt2YXIgYnl0ZXNUb1JlYWQ9bml0ZW1zKnNpemU7aWYoYnl0ZXNUb1JlYWQ9PTApe3JldHVybiAwfXZhciBieXRlc1JlYWQ9MDt2YXIgc3RyZWFtT2JqPUZTLmdldFN0cmVhbUZyb21QdHIoc3RyZWFtKTtpZighc3RyZWFtT2JqKXtfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FQkFERik7cmV0dXJuIDB9d2hpbGUoc3RyZWFtT2JqLnVuZ290dGVuLmxlbmd0aCYmYnl0ZXNUb1JlYWQ+MCl7SEVBUDhbcHRyKys+PjBdPXN0cmVhbU9iai51bmdvdHRlbi5wb3AoKTtieXRlc1RvUmVhZC0tO2J5dGVzUmVhZCsrfXZhciBlcnI9X3JlYWQoc3RyZWFtT2JqLmZkLHB0cixieXRlc1RvUmVhZCk7aWYoZXJyPT0tMSl7aWYoc3RyZWFtT2JqKXN0cmVhbU9iai5lcnJvcj10cnVlO3JldHVybiAwfWJ5dGVzUmVhZCs9ZXJyO2lmKGJ5dGVzUmVhZDxieXRlc1RvUmVhZClzdHJlYW1PYmouZW9mPXRydWU7cmV0dXJuIE1hdGguZmxvb3IoYnl0ZXNSZWFkL3NpemUpfWZ1bmN0aW9uIF9mZ2V0YyhzdHJlYW0pe3ZhciBzdHJlYW1PYmo9RlMuZ2V0U3RyZWFtRnJvbVB0cihzdHJlYW0pO2lmKCFzdHJlYW1PYmopcmV0dXJuLTE7aWYoc3RyZWFtT2JqLmVvZnx8c3RyZWFtT2JqLmVycm9yKXJldHVybi0xO3ZhciByZXQ9X2ZyZWFkKF9mZ2V0Yy5yZXQsMSwxLHN0cmVhbSk7aWYocmV0PT0wKXtyZXR1cm4tMX1lbHNlIGlmKHJldD09LTEpe3N0cmVhbU9iai5lcnJvcj10cnVlO3JldHVybi0xfWVsc2V7cmV0dXJuIEhFQVBVOFtfZmdldGMucmV0Pj4wXX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZW12YWwoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfZW12YWwiKTthYm9ydCgtMSl9ZnVuY3Rpb24gX19fZ3h4X3BlcnNvbmFsaXR5X3YwKCl7fWZ1bmN0aW9uIF9zeXNjb25mKG5hbWUpe3N3aXRjaChuYW1lKXtjYXNlIDMwOnJldHVybiBQQUdFX1NJWkU7Y2FzZSAxMzI6Y2FzZSAxMzM6Y2FzZSAxMjpjYXNlIDEzNzpjYXNlIDEzODpjYXNlIDE1OmNhc2UgMjM1OmNhc2UgMTY6Y2FzZSAxNzpjYXNlIDE4OmNhc2UgMTk6Y2FzZSAyMDpjYXNlIDE0OTpjYXNlIDEzOmNhc2UgMTA6Y2FzZSAyMzY6Y2FzZSAxNTM6Y2FzZSA5OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDE1OTpjYXNlIDE1NDpjYXNlIDE0OmNhc2UgNzc6Y2FzZSA3ODpjYXNlIDEzOTpjYXNlIDgwOmNhc2UgODE6Y2FzZSA3OTpjYXNlIDgyOmNhc2UgNjg6Y2FzZSA2NzpjYXNlIDE2NDpjYXNlIDExOmNhc2UgMjk6Y2FzZSA0NzpjYXNlIDQ4OmNhc2UgOTU6Y2FzZSA1MjpjYXNlIDUxOmNhc2UgNDY6cmV0dXJuIDIwMDgwOTtjYXNlIDI3OmNhc2UgMjQ2OmNhc2UgMTI3OmNhc2UgMTI4OmNhc2UgMjM6Y2FzZSAyNDpjYXNlIDE2MDpjYXNlIDE2MTpjYXNlIDE4MTpjYXNlIDE4MjpjYXNlIDI0MjpjYXNlIDE4MzpjYXNlIDE4NDpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0NTpjYXNlIDE2NTpjYXNlIDE3ODpjYXNlIDE3OTpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSAxNjg6Y2FzZSAxNjk6Y2FzZSAxNzU6Y2FzZSAxNzA6Y2FzZSAxNzE6Y2FzZSAxNzI6Y2FzZSA5NzpjYXNlIDc2OmNhc2UgMzI6Y2FzZSAxNzM6Y2FzZSAzNTpyZXR1cm4tMTtjYXNlIDE3NjpjYXNlIDE3NzpjYXNlIDc6Y2FzZSAxNTU6Y2FzZSA4OmNhc2UgMTU3OmNhc2UgMTI1OmNhc2UgMTI2OmNhc2UgOTI6Y2FzZSA5MzpjYXNlIDEyOTpjYXNlIDEzMDpjYXNlIDEzMTpjYXNlIDk0OmNhc2UgOTE6cmV0dXJuIDE7Y2FzZSA3NDpjYXNlIDYwOmNhc2UgNjk6Y2FzZSA3MDpjYXNlIDQ6cmV0dXJuIDEwMjQ7Y2FzZSAzMTpjYXNlIDQyOmNhc2UgNzI6cmV0dXJuIDMyO2Nhc2UgODc6Y2FzZSAyNjpjYXNlIDMzOnJldHVybiAyMTQ3NDgzNjQ3O2Nhc2UgMzQ6Y2FzZSAxOnJldHVybiA0NzgzOTtjYXNlIDM4OmNhc2UgMzY6cmV0dXJuIDk5O2Nhc2UgNDM6Y2FzZSAzNzpyZXR1cm4gMjA0ODtjYXNlIDA6cmV0dXJuIDIwOTcxNTI7Y2FzZSAzOnJldHVybiA2NTUzNjtjYXNlIDI4OnJldHVybiAzMjc2ODtjYXNlIDQ0OnJldHVybiAzMjc2NztjYXNlIDc1OnJldHVybiAxNjM4NDtjYXNlIDM5OnJldHVybiAxZTM7Y2FzZSA4OTpyZXR1cm4gNzAwO2Nhc2UgNzE6cmV0dXJuIDI1NjtjYXNlIDQwOnJldHVybiAyNTU7Y2FzZSAyOnJldHVybiAxMDA7Y2FzZSAxODA6cmV0dXJuIDY0O2Nhc2UgMjU6cmV0dXJuIDIwO2Nhc2UgNTpyZXR1cm4gMTY7Y2FzZSA2OnJldHVybiA2O2Nhc2UgNzM6cmV0dXJuIDQ7Y2FzZSA4NDpyZXR1cm4gMX1fX19zZXRFcnJObyhFUlJOT19DT0RFUy5FSU5WQUwpO3JldHVybi0xfU1vZHVsZVsiX2JpdHNoaWZ0NjRMc2hyIl09X2JpdHNoaWZ0NjRMc2hyO2Z1bmN0aW9uIF9wdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCl7cmV0dXJuIDB9ZnVuY3Rpb24gX19leGl0KHN0YXR1cyl7TW9kdWxlWyJleGl0Il0oc3RhdHVzKX1mdW5jdGlvbiBfZXhpdChzdGF0dXMpe19fZXhpdChzdGF0dXMpfWZ1bmN0aW9uIF9fWlN0OXRlcm1pbmF0ZXYoKXtfZXhpdCgtMTIzNCl9ZnVuY3Rpb24gX3B0aHJlYWRfbXV0ZXhfdW5sb2NrKCl7fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX21lbWNweV9iaWcoZGVzdCxzcmMsbnVtKXtIRUFQVTguc2V0KEhFQVBVOC5zdWJhcnJheShzcmMsc3JjK251bSksZGVzdCk7cmV0dXJuIGRlc3R9TW9kdWxlWyJfbWVtY3B5Il09X21lbWNweTtmdW5jdGlvbiBfc2JyayhieXRlcyl7dmFyIHNlbGY9X3Nicms7aWYoIXNlbGYuY2FsbGVkKXtEWU5BTUlDVE9QPWFsaWduTWVtb3J5UGFnZShEWU5BTUlDVE9QKTtzZWxmLmNhbGxlZD10cnVlO2Fzc2VydChSdW50aW1lLmR5bmFtaWNBbGxvYyk7c2VsZi5hbGxvYz1SdW50aW1lLmR5bmFtaWNBbGxvYztSdW50aW1lLmR5bmFtaWNBbGxvYz0oZnVuY3Rpb24oKXthYm9ydCgiY2Fubm90IGR5bmFtaWNhbGx5IGFsbG9jYXRlLCBzYnJrIG5vdyBoYXMgY29udHJvbCIpfSl9dmFyIHJldD1EWU5BTUlDVE9QO2lmKGJ5dGVzIT0wKXNlbGYuYWxsb2MoYnl0ZXMpO3JldHVybiByZXR9ZnVuY3Rpb24gX25ld2xvY2FsZShtYXNrLGxvY2FsZSxiYXNlKXtyZXR1cm4gX21hbGxvYyg0KX1Nb2R1bGVbIl9tZW1tb3ZlIl09X21lbW1vdmU7ZnVuY3Rpb24gX19fZXJybm9fbG9jYXRpb24oKXtyZXR1cm4gX19fZXJybm9fc3RhdGV9ZnVuY3Rpb24gX3N0cmVycm9yX3IoZXJybnVtLHN0cmVycmJ1ZixidWZsZW4pe2lmKGVycm51bSBpbiBFUlJOT19NRVNTQUdFUyl7aWYoRVJSTk9fTUVTU0FHRVNbZXJybnVtXS5sZW5ndGg+YnVmbGVuLTEpe3JldHVybiBfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FUkFOR0UpfWVsc2V7dmFyIG1zZz1FUlJOT19NRVNTQUdFU1tlcnJudW1dO3dyaXRlQXNjaWlUb01lbW9yeShtc2csc3RyZXJyYnVmKTtyZXR1cm4gMH19ZWxzZXtyZXR1cm4gX19fc2V0RXJyTm8oRVJSTk9fQ09ERVMuRUlOVkFMKX19ZnVuY3Rpb24gX3N0cmVycm9yKGVycm51bSl7aWYoIV9zdHJlcnJvci5idWZmZXIpX3N0cmVycm9yLmJ1ZmZlcj1fbWFsbG9jKDI1Nik7X3N0cmVycm9yX3IoZXJybnVtLF9zdHJlcnJvci5idWZmZXIsMjU2KTtyZXR1cm4gX3N0cmVycm9yLmJ1ZmZlcn1mdW5jdGlvbiBfcHRocmVhZF9tdXRleF9kZXN0cm95KCl7fWZ1bmN0aW9uIF9jYXRjbG9zZShjYXRkKXtyZXR1cm4gMH1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldygpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyIpO2Fib3J0KC0xKX1mdW5jdGlvbiBfX19jeGFfZ3VhcmRfcmVsZWFzZSgpe31mdW5jdGlvbiBfdW5nZXRjKGMsc3RyZWFtKXtzdHJlYW09RlMuZ2V0U3RyZWFtRnJvbVB0cihzdHJlYW0pO2lmKCFzdHJlYW0pe3JldHVybi0xfWlmKGM9PT0tMSl7cmV0dXJuIGN9Yz11blNpZ24oYyYyNTUpO3N0cmVhbS51bmdvdHRlbi5wdXNoKGMpO3N0cmVhbS5lb2Y9ZmFsc2U7cmV0dXJuIGN9ZnVuY3Rpb24gX3VzZWxvY2FsZShsb2NhbGUpe3JldHVybiAwfWZ1bmN0aW9uIF92c25wcmludGYocyxuLGZvcm1hdCx2YV9hcmcpe3JldHVybiBfc25wcmludGYocyxuLGZvcm1hdCxIRUFQMzJbdmFfYXJnPj4yXSl9ZnVuY3Rpb24gX19nZXRGbG9hdCh0ZXh0KXtyZXR1cm4vXlsrLV0/WzAtOV0qXC4/WzAtOV0rKFtlRV1bKy1dP1swLTldKyk/Ly5leGVjKHRleHQpfWZ1bmN0aW9uIF9fc2NhblN0cmluZyhmb3JtYXQsZ2V0LHVuZ2V0LHZhcmFyZ3Mpe2lmKCFfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSl7X19zY2FuU3RyaW5nLndoaXRlU3BhY2U9e307X19zY2FuU3RyaW5nLndoaXRlU3BhY2VbMzJdPTE7X19zY2FuU3RyaW5nLndoaXRlU3BhY2VbOV09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMF09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMV09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxMl09MTtfX3NjYW5TdHJpbmcud2hpdGVTcGFjZVsxM109MX1mb3JtYXQ9UG9pbnRlcl9zdHJpbmdpZnkoZm9ybWF0KTt2YXIgc29GYXI9MDtpZihmb3JtYXQuaW5kZXhPZigiJW4iKT49MCl7dmFyIF9nZXQ9Z2V0O2dldD1mdW5jdGlvbiBnZXQoKXtzb0ZhcisrO3JldHVybiBfZ2V0KCl9O3ZhciBfdW5nZXQ9dW5nZXQ7dW5nZXQ9ZnVuY3Rpb24gdW5nZXQoKXtzb0Zhci0tO3JldHVybiBfdW5nZXQoKX19dmFyIGZvcm1hdEluZGV4PTA7dmFyIGFyZ3NpPTA7dmFyIGZpZWxkcz0wO3ZhciBhcmdJbmRleD0wO3ZhciBuZXh0O21haW5Mb29wOmZvcih2YXIgZm9ybWF0SW5kZXg9MDtmb3JtYXRJbmRleDxmb3JtYXQubGVuZ3RoOyl7aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIiYmZm9ybWF0W2Zvcm1hdEluZGV4KzFdPT0ibiIpe3ZhciBhcmdQdHI9SEVBUDMyW3ZhcmFyZ3MrYXJnSW5kZXg+PjJdO2FyZ0luZGV4Kz1SdW50aW1lLmdldEFsaWduU2l6ZSgidm9pZCoiLG51bGwsdHJ1ZSk7SEVBUDMyW2FyZ1B0cj4+Ml09c29GYXI7Zm9ybWF0SW5kZXgrPTI7Y29udGludWV9aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIil7dmFyIG5leHRDPWZvcm1hdC5pbmRleE9mKCJjIixmb3JtYXRJbmRleCsxKTtpZihuZXh0Qz4wKXt2YXIgbWF4eD0xO2lmKG5leHRDPmZvcm1hdEluZGV4KzEpe3ZhciBzdWI9Zm9ybWF0LnN1YnN0cmluZyhmb3JtYXRJbmRleCsxLG5leHRDKTttYXh4PXBhcnNlSW50KHN1Yik7aWYobWF4eCE9c3ViKW1heHg9MH1pZihtYXh4KXt2YXIgYXJnUHRyPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXTthcmdJbmRleCs9UnVudGltZS5nZXRBbGlnblNpemUoInZvaWQqIixudWxsLHRydWUpO2ZpZWxkcysrO2Zvcih2YXIgaT0wO2k8bWF4eDtpKyspe25leHQ9Z2V0KCk7SEVBUDhbYXJnUHRyKys+PjBdPW5leHQ7aWYobmV4dD09PTApcmV0dXJuIGk+MD9maWVsZHM6ZmllbGRzLTF9Zm9ybWF0SW5kZXgrPW5leHRDLWZvcm1hdEluZGV4KzE7Y29udGludWV9fX1pZihmb3JtYXRbZm9ybWF0SW5kZXhdPT09IiUiJiZmb3JtYXQuaW5kZXhPZigiWyIsZm9ybWF0SW5kZXgrMSk+MCl7dmFyIG1hdGNoPS9cJShbMC05XSopXFsoXF4pPyhcXT9bXlxdXSopXF0vLmV4ZWMoZm9ybWF0LnN1YnN0cmluZyhmb3JtYXRJbmRleCkpO2lmKG1hdGNoKXt2YXIgbWF4TnVtQ2hhcmFjdGVycz1wYXJzZUludChtYXRjaFsxXSl8fEluZmluaXR5O3ZhciBuZWdhdGVTY2FuTGlzdD1tYXRjaFsyXT09PSJeIjt2YXIgc2Nhbkxpc3Q9bWF0Y2hbM107dmFyIG1pZGRsZURhc2hNYXRjaDt3aGlsZShtaWRkbGVEYXNoTWF0Y2g9LyhbXlwtXSlcLShbXlwtXSkvLmV4ZWMoc2Nhbkxpc3QpKXt2YXIgcmFuZ2VTdGFydENoYXJDb2RlPW1pZGRsZURhc2hNYXRjaFsxXS5jaGFyQ29kZUF0KDApO3ZhciByYW5nZUVuZENoYXJDb2RlPW1pZGRsZURhc2hNYXRjaFsyXS5jaGFyQ29kZUF0KDApO2Zvcih2YXIgZXhwYW5kZWQ9IiI7cmFuZ2VTdGFydENoYXJDb2RlPD1yYW5nZUVuZENoYXJDb2RlO2V4cGFuZGVkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHJhbmdlU3RhcnRDaGFyQ29kZSsrKSk7c2Nhbkxpc3Q9c2Nhbkxpc3QucmVwbGFjZShtaWRkbGVEYXNoTWF0Y2hbMV0rIi0iK21pZGRsZURhc2hNYXRjaFsyXSxleHBhbmRlZCl9dmFyIGFyZ1B0cj1IRUFQMzJbdmFyYXJncythcmdJbmRleD4+Ml07YXJnSW5kZXgrPVJ1bnRpbWUuZ2V0QWxpZ25TaXplKCJ2b2lkKiIsbnVsbCx0cnVlKTtmaWVsZHMrKztmb3IodmFyIGk9MDtpPG1heE51bUNoYXJhY3RlcnM7aSsrKXtuZXh0PWdldCgpO2lmKG5lZ2F0ZVNjYW5MaXN0KXtpZihzY2FuTGlzdC5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpPDApe0hFQVA4W2FyZ1B0cisrPj4wXT1uZXh0fWVsc2V7dW5nZXQoKTticmVha319ZWxzZXtpZihzY2FuTGlzdC5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpPj0wKXtIRUFQOFthcmdQdHIrKz4+MF09bmV4dH1lbHNle3VuZ2V0KCk7YnJlYWt9fX1IRUFQOFthcmdQdHIrKz4+MF09MDtmb3JtYXRJbmRleCs9bWF0Y2hbMF0ubGVuZ3RoO2NvbnRpbnVlfX13aGlsZSgxKXtuZXh0PWdldCgpO2lmKG5leHQ9PTApcmV0dXJuIGZpZWxkcztpZighKG5leHQgaW4gX19zY2FuU3RyaW5nLndoaXRlU3BhY2UpKWJyZWFrfXVuZ2V0KCk7aWYoZm9ybWF0W2Zvcm1hdEluZGV4XT09PSIlIil7Zm9ybWF0SW5kZXgrKzt2YXIgc3VwcHJlc3NBc3NpZ25tZW50PWZhbHNlO2lmKGZvcm1hdFtmb3JtYXRJbmRleF09PSIqIil7c3VwcHJlc3NBc3NpZ25tZW50PXRydWU7Zm9ybWF0SW5kZXgrK312YXIgbWF4U3BlY2lmaWVyU3RhcnQ9Zm9ybWF0SW5kZXg7d2hpbGUoZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApPj00OCYmZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApPD01Nyl7Zm9ybWF0SW5kZXgrK312YXIgbWF4XztpZihmb3JtYXRJbmRleCE9bWF4U3BlY2lmaWVyU3RhcnQpe21heF89cGFyc2VJbnQoZm9ybWF0LnNsaWNlKG1heFNwZWNpZmllclN0YXJ0LGZvcm1hdEluZGV4KSwxMCl9dmFyIGxvbmdfPWZhbHNlO3ZhciBoYWxmPWZhbHNlO3ZhciBxdWFydGVyPWZhbHNlO3ZhciBsb25nTG9uZz1mYWxzZTtpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0ibCIpe2xvbmdfPXRydWU7Zm9ybWF0SW5kZXgrKztpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0ibCIpe2xvbmdMb25nPXRydWU7Zm9ybWF0SW5kZXgrK319ZWxzZSBpZihmb3JtYXRbZm9ybWF0SW5kZXhdPT0iaCIpe2hhbGY9dHJ1ZTtmb3JtYXRJbmRleCsrO2lmKGZvcm1hdFtmb3JtYXRJbmRleF09PSJoIil7cXVhcnRlcj10cnVlO2Zvcm1hdEluZGV4Kyt9fXZhciB0eXBlPWZvcm1hdFtmb3JtYXRJbmRleF07Zm9ybWF0SW5kZXgrKzt2YXIgY3Vycj0wO3ZhciBidWZmZXI9W107aWYodHlwZT09ImYifHx0eXBlPT0iZSJ8fHR5cGU9PSJnInx8dHlwZT09IkYifHx0eXBlPT0iRSJ8fHR5cGU9PSJHIil7bmV4dD1nZXQoKTt3aGlsZShuZXh0PjAmJiEobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSkpe2J1ZmZlci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpO25leHQ9Z2V0KCl9dmFyIG09X19nZXRGbG9hdChidWZmZXIuam9pbigiIikpO3ZhciBsYXN0PW0/bVswXS5sZW5ndGg6MDtmb3IodmFyIGk9MDtpPGJ1ZmZlci5sZW5ndGgtbGFzdCsxO2krKyl7dW5nZXQoKX1idWZmZXIubGVuZ3RoPWxhc3R9ZWxzZXtuZXh0PWdldCgpO3ZhciBmaXJzdD10cnVlO2lmKCh0eXBlPT0ieCJ8fHR5cGU9PSJYIikmJm5leHQ9PTQ4KXt2YXIgcGVlaz1nZXQoKTtpZihwZWVrPT0xMjB8fHBlZWs9PTg4KXtuZXh0PWdldCgpfWVsc2V7dW5nZXQoKX19d2hpbGUoKGN1cnI8bWF4X3x8aXNOYU4obWF4XykpJiZuZXh0PjApe2lmKCEobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSkmJih0eXBlPT0icyJ8fCh0eXBlPT09ImQifHx0eXBlPT0idSJ8fHR5cGU9PSJpIikmJihuZXh0Pj00OCYmbmV4dDw9NTd8fGZpcnN0JiZuZXh0PT00NSl8fCh0eXBlPT09IngifHx0eXBlPT09IlgiKSYmKG5leHQ+PTQ4JiZuZXh0PD01N3x8bmV4dD49OTcmJm5leHQ8PTEwMnx8bmV4dD49NjUmJm5leHQ8PTcwKSkmJihmb3JtYXRJbmRleD49Zm9ybWF0Lmxlbmd0aHx8bmV4dCE9PWZvcm1hdFtmb3JtYXRJbmRleF0uY2hhckNvZGVBdCgwKSkpe2J1ZmZlci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dCkpO25leHQ9Z2V0KCk7Y3VycisrO2ZpcnN0PWZhbHNlfWVsc2V7YnJlYWt9fXVuZ2V0KCl9aWYoYnVmZmVyLmxlbmd0aD09PTApcmV0dXJuIDA7aWYoc3VwcHJlc3NBc3NpZ25tZW50KWNvbnRpbnVlO3ZhciB0ZXh0PWJ1ZmZlci5qb2luKCIiKTt2YXIgYXJnUHRyPUhFQVAzMlt2YXJhcmdzK2FyZ0luZGV4Pj4yXTthcmdJbmRleCs9UnVudGltZS5nZXRBbGlnblNpemUoInZvaWQqIixudWxsLHRydWUpO3ZhciBiYXNlPTEwO3N3aXRjaCh0eXBlKXtjYXNlIlgiOmNhc2UieCI6YmFzZT0xNjtjYXNlImQiOmNhc2UidSI6Y2FzZSJpIjppZihxdWFydGVyKXtIRUFQOFthcmdQdHI+PjBdPXBhcnNlSW50KHRleHQsYmFzZSl9ZWxzZSBpZihoYWxmKXtIRUFQMTZbYXJnUHRyPj4xXT1wYXJzZUludCh0ZXh0LGJhc2UpfWVsc2UgaWYobG9uZ0xvbmcpe3RlbXBJNjQ9W3BhcnNlSW50KHRleHQsYmFzZSk+Pj4wLCh0ZW1wRG91YmxlPXBhcnNlSW50KHRleHQsYmFzZSksK01hdGhfYWJzKHRlbXBEb3VibGUpPj0rMT90ZW1wRG91YmxlPiswPyhNYXRoX21pbigrTWF0aF9mbG9vcih0ZW1wRG91YmxlLys0Mjk0OTY3Mjk2KSwrNDI5NDk2NzI5NSl8MCk+Pj4wOn5+K01hdGhfY2VpbCgodGVtcERvdWJsZS0gKyh+fnRlbXBEb3VibGU+Pj4wKSkvKzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2FyZ1B0cj4+Ml09dGVtcEk2NFswXSxIRUFQMzJbYXJnUHRyKzQ+PjJdPXRlbXBJNjRbMV19ZWxzZXtIRUFQMzJbYXJnUHRyPj4yXT1wYXJzZUludCh0ZXh0LGJhc2UpfWJyZWFrO2Nhc2UiRiI6Y2FzZSJmIjpjYXNlIkUiOmNhc2UiZSI6Y2FzZSJHIjpjYXNlImciOmNhc2UiRSI6aWYobG9uZ18pe0hFQVBGNjRbYXJnUHRyPj4zXT1wYXJzZUZsb2F0KHRleHQpfWVsc2V7SEVBUEYzMlthcmdQdHI+PjJdPXBhcnNlRmxvYXQodGV4dCl9YnJlYWs7Y2FzZSJzIjp2YXIgYXJyYXk9aW50QXJyYXlGcm9tU3RyaW5nKHRleHQpO2Zvcih2YXIgaj0wO2o8YXJyYXkubGVuZ3RoO2orKyl7SEVBUDhbYXJnUHRyK2o+PjBdPWFycmF5W2pdfWJyZWFrfWZpZWxkcysrfWVsc2UgaWYoZm9ybWF0W2Zvcm1hdEluZGV4XS5jaGFyQ29kZUF0KDApaW4gX19zY2FuU3RyaW5nLndoaXRlU3BhY2Upe25leHQ9Z2V0KCk7d2hpbGUobmV4dCBpbiBfX3NjYW5TdHJpbmcud2hpdGVTcGFjZSl7aWYobmV4dDw9MClicmVhayBtYWluTG9vcDtuZXh0PWdldCgpfXVuZ2V0KG5leHQpO2Zvcm1hdEluZGV4Kyt9ZWxzZXtuZXh0PWdldCgpO2lmKGZvcm1hdFtmb3JtYXRJbmRleF0uY2hhckNvZGVBdCgwKSE9PW5leHQpe3VuZ2V0KG5leHQpO2JyZWFrIG1haW5Mb29wfWZvcm1hdEluZGV4Kyt9fXJldHVybiBmaWVsZHN9ZnVuY3Rpb24gX3NzY2FuZihzLGZvcm1hdCx2YXJhcmdzKXt2YXIgaW5kZXg9MDtmdW5jdGlvbiBnZXQoKXtyZXR1cm4gSEVBUDhbcytpbmRleCsrPj4wXX1mdW5jdGlvbiB1bmdldCgpe2luZGV4LS19cmV0dXJuIF9fc2NhblN0cmluZyhmb3JtYXQsZ2V0LHVuZ2V0LHZhcmFyZ3MpfWZ1bmN0aW9uIF92c3NjYW5mKHMsZm9ybWF0LHZhX2FyZyl7cmV0dXJuIF9zc2NhbmYocyxmb3JtYXQsSEVBUDMyW3ZhX2FyZz4+Ml0pfWZ1bmN0aW9uIF9fX2Fzc2VydF9mYWlsKGNvbmRpdGlvbixmaWxlbmFtZSxsaW5lLGZ1bmMpe0FCT1JUPXRydWU7dGhyb3ciQXNzZXJ0aW9uIGZhaWxlZDogIitQb2ludGVyX3N0cmluZ2lmeShjb25kaXRpb24pKyIsIGF0OiAiK1tmaWxlbmFtZT9Qb2ludGVyX3N0cmluZ2lmeShmaWxlbmFtZSk6InVua25vd24gZmlsZW5hbWUiLGxpbmUsZnVuYz9Qb2ludGVyX3N0cmluZ2lmeShmdW5jKToidW5rbm93biBmdW5jdGlvbiJdKyIgYXQgIitzdGFja1RyYWNlKCl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdm9pZCgpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl92b2lkIik7YWJvcnQoLTEpfU1vZHVsZVsiX21lbXNldCJdPV9tZW1zZXQ7dmFyIF9CSXRvRD10cnVlO2Z1bmN0aW9uIF9faXNMZWFwWWVhcih5ZWFyKXtyZXR1cm4geWVhciU0PT09MCYmKHllYXIlMTAwIT09MHx8eWVhciU0MDA9PT0wKX1mdW5jdGlvbiBfX2FycmF5U3VtKGFycmF5LGluZGV4KXt2YXIgc3VtPTA7Zm9yKHZhciBpPTA7aTw9aW5kZXg7c3VtKz1hcnJheVtpKytdKTtyZXR1cm4gc3VtfXZhciBfX01PTlRIX0RBWVNfTEVBUD1bMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO3ZhciBfX01PTlRIX0RBWVNfUkVHVUxBUj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIF9fYWRkRGF5cyhkYXRlLGRheXMpe3ZhciBuZXdEYXRlPW5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTt3aGlsZShkYXlzPjApe3ZhciBsZWFwPV9faXNMZWFwWWVhcihuZXdEYXRlLmdldEZ1bGxZZWFyKCkpO3ZhciBjdXJyZW50TW9udGg9bmV3RGF0ZS5nZXRNb250aCgpO3ZhciBkYXlzSW5DdXJyZW50TW9udGg9KGxlYXA/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIpW2N1cnJlbnRNb250aF07aWYoZGF5cz5kYXlzSW5DdXJyZW50TW9udGgtbmV3RGF0ZS5nZXREYXRlKCkpe2RheXMtPWRheXNJbkN1cnJlbnRNb250aC1uZXdEYXRlLmdldERhdGUoKSsxO25ld0RhdGUuc2V0RGF0ZSgxKTtpZihjdXJyZW50TW9udGg8MTEpe25ld0RhdGUuc2V0TW9udGgoY3VycmVudE1vbnRoKzEpfWVsc2V7bmV3RGF0ZS5zZXRNb250aCgwKTtuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSsxKX19ZWxzZXtuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkrZGF5cyk7cmV0dXJuIG5ld0RhdGV9fXJldHVybiBuZXdEYXRlfWZ1bmN0aW9uIF9zdHJmdGltZShzLG1heHNpemUsZm9ybWF0LHRtKXt2YXIgZGF0ZT17dG1fc2VjOkhFQVAzMlt0bT4+Ml0sdG1fbWluOkhFQVAzMlt0bSs0Pj4yXSx0bV9ob3VyOkhFQVAzMlt0bSs4Pj4yXSx0bV9tZGF5OkhFQVAzMlt0bSsxMj4+Ml0sdG1fbW9uOkhFQVAzMlt0bSsxNj4+Ml0sdG1feWVhcjpIRUFQMzJbdG0rMjA+PjJdLHRtX3dkYXk6SEVBUDMyW3RtKzI0Pj4yXSx0bV95ZGF5OkhFQVAzMlt0bSsyOD4+Ml0sdG1faXNkc3Q6SEVBUDMyW3RtKzMyPj4yXX07dmFyIHBhdHRlcm49UG9pbnRlcl9zdHJpbmdpZnkoZm9ybWF0KTt2YXIgRVhQQU5TSU9OX1JVTEVTXzE9eyIlYyI6IiVhICViICVkICVIOiVNOiVTICVZIiwiJUQiOiIlbS8lZC8leSIsIiVGIjoiJVktJW0tJWQiLCIlaCI6IiViIiwiJXIiOiIlSTolTTolUyAlcCIsIiVSIjoiJUg6JU0iLCIlVCI6IiVIOiVNOiVTIiwiJXgiOiIlbS8lZC8leSIsIiVYIjoiJUg6JU06JVMifTtmb3IodmFyIHJ1bGUgaW4gRVhQQU5TSU9OX1JVTEVTXzEpe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18xW3J1bGVdKX12YXIgV0VFS0RBWVM9WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdO3ZhciBNT05USFM9WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdO2Z1bmN0aW9uIGxlYWRpbmdTb21ldGhpbmcodmFsdWUsZGlnaXRzLGNoYXJhY3Rlcil7dmFyIHN0cj10eXBlb2YgdmFsdWU9PT0ibnVtYmVyIj92YWx1ZS50b1N0cmluZygpOnZhbHVlfHwiIjt3aGlsZShzdHIubGVuZ3RoPGRpZ2l0cyl7c3RyPWNoYXJhY3RlclswXStzdHJ9cmV0dXJuIHN0cn1mdW5jdGlvbiBsZWFkaW5nTnVsbHModmFsdWUsZGlnaXRzKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyh2YWx1ZSxkaWdpdHMsIjAiKX1mdW5jdGlvbiBjb21wYXJlQnlEYXkoZGF0ZTEsZGF0ZTIpe2Z1bmN0aW9uIHNnbih2YWx1ZSl7cmV0dXJuIHZhbHVlPDA/LTE6dmFsdWU+MD8xOjB9dmFyIGNvbXBhcmU7aWYoKGNvbXBhcmU9c2duKGRhdGUxLmdldEZ1bGxZZWFyKCktZGF0ZTIuZ2V0RnVsbFllYXIoKSkpPT09MCl7aWYoKGNvbXBhcmU9c2duKGRhdGUxLmdldE1vbnRoKCktZGF0ZTIuZ2V0TW9udGgoKSkpPT09MCl7Y29tcGFyZT1zZ24oZGF0ZTEuZ2V0RGF0ZSgpLWRhdGUyLmdldERhdGUoKSl9fXJldHVybiBjb21wYXJlfWZ1bmN0aW9uIGdldEZpcnN0V2Vla1N0YXJ0RGF0ZShqYW5Gb3VydGgpe3N3aXRjaChqYW5Gb3VydGguZ2V0RGF5KCkpe2Nhc2UgMDpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCktMSwxMSwyOSk7Y2FzZSAxOnJldHVybiBqYW5Gb3VydGg7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSwwLDMpO2Nhc2UgMzpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCksMCwyKTtjYXNlIDQ6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKS0xLDExLDMxKTtjYXNlIDY6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLTEsMTEsMzApfX1mdW5jdGlvbiBnZXRXZWVrQmFzZWRZZWFyKGRhdGUpe3ZhciB0aGlzRGF0ZT1fX2FkZERheXMobmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsMCwxKSxkYXRlLnRtX3lkYXkpO3ZhciBqYW5Gb3VydGhUaGlzWWVhcj1uZXcgRGF0ZSh0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLDAsNCk7dmFyIGphbkZvdXJ0aE5leHRZZWFyPW5ldyBEYXRlKHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkrMSwwLDQpO3ZhciBmaXJzdFdlZWtTdGFydFRoaXNZZWFyPWdldEZpcnN0V2Vla1N0YXJ0RGF0ZShqYW5Gb3VydGhUaGlzWWVhcik7dmFyIGZpcnN0V2Vla1N0YXJ0TmV4dFllYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aE5leHRZZWFyKTtpZihjb21wYXJlQnlEYXkoZmlyc3RXZWVrU3RhcnRUaGlzWWVhcix0aGlzRGF0ZSk8PTApe2lmKGNvbXBhcmVCeURheShmaXJzdFdlZWtTdGFydE5leHRZZWFyLHRoaXNEYXRlKTw9MCl7cmV0dXJuIHRoaXNEYXRlLmdldEZ1bGxZZWFyKCkrMX1lbHNle3JldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpfX1lbHNle3JldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLTF9fXZhciBFWFBBTlNJT05fUlVMRVNfMj17IiVhIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIFdFRUtEQVlTW2RhdGUudG1fd2RheV0uc3Vic3RyaW5nKDAsMyl9KSwiJUEiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gV0VFS0RBWVNbZGF0ZS50bV93ZGF5XX0pLCIlYiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBNT05USFNbZGF0ZS50bV9tb25dLnN1YnN0cmluZygwLDMpfSksIiVCIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIE1PTlRIU1tkYXRlLnRtX21vbl19KSwiJUMiOihmdW5jdGlvbihkYXRlKXt2YXIgeWVhcj1kYXRlLnRtX3llYXIrMTkwMDtyZXR1cm4gbGVhZGluZ051bGxzKE1hdGguZmxvb3IoeWVhci8xMDApLDIpfSksIiVkIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX21kYXksMil9KSwiJWUiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyhkYXRlLnRtX21kYXksMiwiICIpfSksIiVnIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGdldFdlZWtCYXNlZFllYXIoZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9KSwiJUciOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gZ2V0V2Vla0Jhc2VkWWVhcihkYXRlKX0pLCIlSCI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9ob3VyLDIpfSksIiVJIjooZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX2hvdXI8MTM/ZGF0ZS50bV9ob3VyOmRhdGUudG1faG91ci0xMiwyKX0pLCIlaiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tZGF5K19fYXJyYXlTdW0oX19pc0xlYXBZZWFyKGRhdGUudG1feWVhcisxOTAwKT9fX01PTlRIX0RBWVNfTEVBUDpfX01PTlRIX0RBWVNfUkVHVUxBUixkYXRlLnRtX21vbi0xKSwzKX0pLCIlbSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9tb24rMSwyKX0pLCIlTSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9taW4sMil9KSwiJW4iOihmdW5jdGlvbigpe3JldHVybiJcbiJ9KSwiJXAiOihmdW5jdGlvbihkYXRlKXtpZihkYXRlLnRtX2hvdXI+MCYmZGF0ZS50bV9ob3VyPDEzKXtyZXR1cm4iQU0ifWVsc2V7cmV0dXJuIlBNIn19KSwiJVMiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fc2VjLDIpfSksIiV0IjooZnVuY3Rpb24oKXtyZXR1cm4iXHQifSksIiV1IjooZnVuY3Rpb24oZGF0ZSl7dmFyIGRheT1uZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCxkYXRlLnRtX21vbisxLGRhdGUudG1fbWRheSwwLDAsMCwwKTtyZXR1cm4gZGF5LmdldERheSgpfHw3fSksIiVVIjooZnVuY3Rpb24oZGF0ZSl7dmFyIGphbkZpcnN0PW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLDAsMSk7dmFyIGZpcnN0U3VuZGF5PWphbkZpcnN0LmdldERheSgpPT09MD9qYW5GaXJzdDpfX2FkZERheXMoamFuRmlyc3QsNy1qYW5GaXJzdC5nZXREYXkoKSk7dmFyIGVuZERhdGU9bmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsZGF0ZS50bV9tb24sZGF0ZS50bV9tZGF5KTtpZihjb21wYXJlQnlEYXkoZmlyc3RTdW5kYXksZW5kRGF0ZSk8MCl7dmFyIGZlYnJ1YXJ5Rmlyc3RVbnRpbEVuZE1vbnRoPV9fYXJyYXlTdW0oX19pc0xlYXBZZWFyKGVuZERhdGUuZ2V0RnVsbFllYXIoKSk/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIsZW5kRGF0ZS5nZXRNb250aCgpLTEpLTMxO3ZhciBmaXJzdFN1bmRheVVudGlsRW5kSmFudWFyeT0zMS1maXJzdFN1bmRheS5nZXREYXRlKCk7dmFyIGRheXM9Zmlyc3RTdW5kYXlVbnRpbEVuZEphbnVhcnkrZmVicnVhcnlGaXJzdFVudGlsRW5kTW9udGgrZW5kRGF0ZS5nZXREYXRlKCk7cmV0dXJuIGxlYWRpbmdOdWxscyhNYXRoLmNlaWwoZGF5cy83KSwyKX1yZXR1cm4gY29tcGFyZUJ5RGF5KGZpcnN0U3VuZGF5LGphbkZpcnN0KT09PTA/IjAxIjoiMDAifSksIiVWIjooZnVuY3Rpb24oZGF0ZSl7dmFyIGphbkZvdXJ0aFRoaXNZZWFyPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLDAsNCk7dmFyIGphbkZvdXJ0aE5leHRZZWFyPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAxLDAsNCk7dmFyIGZpcnN0V2Vla1N0YXJ0VGhpc1llYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aFRoaXNZZWFyKTt2YXIgZmlyc3RXZWVrU3RhcnROZXh0WWVhcj1nZXRGaXJzdFdlZWtTdGFydERhdGUoamFuRm91cnRoTmV4dFllYXIpO3ZhciBlbmREYXRlPV9fYWRkRGF5cyhuZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCwwLDEpLGRhdGUudG1feWRheSk7aWYoY29tcGFyZUJ5RGF5KGVuZERhdGUsZmlyc3RXZWVrU3RhcnRUaGlzWWVhcik8MCl7cmV0dXJuIjUzIn1pZihjb21wYXJlQnlEYXkoZmlyc3RXZWVrU3RhcnROZXh0WWVhcixlbmREYXRlKTw9MCl7cmV0dXJuIjAxIn12YXIgZGF5c0RpZmZlcmVuY2U7aWYoZmlyc3RXZWVrU3RhcnRUaGlzWWVhci5nZXRGdWxsWWVhcigpPGRhdGUudG1feWVhcisxOTAwKXtkYXlzRGlmZmVyZW5jZT1kYXRlLnRtX3lkYXkrMzItZmlyc3RXZWVrU3RhcnRUaGlzWWVhci5nZXREYXRlKCl9ZWxzZXtkYXlzRGlmZmVyZW5jZT1kYXRlLnRtX3lkYXkrMS1maXJzdFdlZWtTdGFydFRoaXNZZWFyLmdldERhdGUoKX1yZXR1cm4gbGVhZGluZ051bGxzKE1hdGguY2VpbChkYXlzRGlmZmVyZW5jZS83KSwyKX0pLCIldyI6KGZ1bmN0aW9uKGRhdGUpe3ZhciBkYXk9bmV3IERhdGUoZGF0ZS50bV95ZWFyKzE5MDAsZGF0ZS50bV9tb24rMSxkYXRlLnRtX21kYXksMCwwLDAsMCk7cmV0dXJuIGRheS5nZXREYXkoKX0pLCIlVyI6KGZ1bmN0aW9uKGRhdGUpe3ZhciBqYW5GaXJzdD1uZXcgRGF0ZShkYXRlLnRtX3llYXIsMCwxKTt2YXIgZmlyc3RNb25kYXk9amFuRmlyc3QuZ2V0RGF5KCk9PT0xP2phbkZpcnN0Ol9fYWRkRGF5cyhqYW5GaXJzdCxqYW5GaXJzdC5nZXREYXkoKT09PTA/MTo3LWphbkZpcnN0LmdldERheSgpKzEpO3ZhciBlbmREYXRlPW5ldyBEYXRlKGRhdGUudG1feWVhcisxOTAwLGRhdGUudG1fbW9uLGRhdGUudG1fbWRheSk7aWYoY29tcGFyZUJ5RGF5KGZpcnN0TW9uZGF5LGVuZERhdGUpPDApe3ZhciBmZWJydWFyeUZpcnN0VW50aWxFbmRNb250aD1fX2FycmF5U3VtKF9faXNMZWFwWWVhcihlbmREYXRlLmdldEZ1bGxZZWFyKCkpP19fTU9OVEhfREFZU19MRUFQOl9fTU9OVEhfREFZU19SRUdVTEFSLGVuZERhdGUuZ2V0TW9udGgoKS0xKS0zMTt2YXIgZmlyc3RNb25kYXlVbnRpbEVuZEphbnVhcnk9MzEtZmlyc3RNb25kYXkuZ2V0RGF0ZSgpO3ZhciBkYXlzPWZpcnN0TW9uZGF5VW50aWxFbmRKYW51YXJ5K2ZlYnJ1YXJ5Rmlyc3RVbnRpbEVuZE1vbnRoK2VuZERhdGUuZ2V0RGF0ZSgpO3JldHVybiBsZWFkaW5nTnVsbHMoTWF0aC5jZWlsKGRheXMvNyksMil9cmV0dXJuIGNvbXBhcmVCeURheShmaXJzdE1vbmRheSxqYW5GaXJzdCk9PT0wPyIwMSI6IjAwIn0pLCIleSI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybihkYXRlLnRtX3llYXIrMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9KSwiJVkiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4gZGF0ZS50bV95ZWFyKzE5MDB9KSwiJXoiOihmdW5jdGlvbihkYXRlKXtyZXR1cm4iIn0pLCIlWiI6KGZ1bmN0aW9uKGRhdGUpe3JldHVybiIifSksIiUlIjooZnVuY3Rpb24oKXtyZXR1cm4iJSJ9KX07Zm9yKHZhciBydWxlIGluIEVYUEFOU0lPTl9SVUxFU18yKXtpZihwYXR0ZXJuLmluZGV4T2YocnVsZSk+PTApe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18yW3J1bGVdKGRhdGUpKX19dmFyIGJ5dGVzPWludEFycmF5RnJvbVN0cmluZyhwYXR0ZXJuLGZhbHNlKTtpZihieXRlcy5sZW5ndGg+bWF4c2l6ZSl7cmV0dXJuIDB9d3JpdGVBcnJheVRvTWVtb3J5KGJ5dGVzLHMpO3JldHVybiBieXRlcy5sZW5ndGgtMX1mdW5jdGlvbiBfc3RyZnRpbWVfbChzLG1heHNpemUsZm9ybWF0LHRtKXtyZXR1cm4gX3N0cmZ0aW1lKHMsbWF4c2l6ZSxmb3JtYXQsdG0pfWZ1bmN0aW9uIF9hYm9ydCgpe01vZHVsZVsiYWJvcnQiXSgpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzKCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzIik7YWJvcnQoLTEpfWZ1bmN0aW9uIF9wdGhyZWFkX2NvbmRfd2FpdCgpe3JldHVybiAwfXZhciBfZmFicz1NYXRoX2Ficzt2YXIgX2dldGM9X2ZnZXRjO2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIoKXtNb2R1bGVbInByaW50RXJyIl0oIm1pc3NpbmcgZnVuY3Rpb246IF9lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlciIpO2Fib3J0KC0xKX12YXIgQnJvd3Nlcj17bWFpbkxvb3A6e3NjaGVkdWxlcjpudWxsLG1ldGhvZDoiIixzaG91bGRQYXVzZTpmYWxzZSxwYXVzZWQ6ZmFsc2UscXVldWU6W10scGF1c2U6KGZ1bmN0aW9uKCl7QnJvd3Nlci5tYWluTG9vcC5zaG91bGRQYXVzZT10cnVlfSkscmVzdW1lOihmdW5jdGlvbigpe2lmKEJyb3dzZXIubWFpbkxvb3AucGF1c2VkKXtCcm93c2VyLm1haW5Mb29wLnBhdXNlZD1mYWxzZTtCcm93c2VyLm1haW5Mb29wLnNjaGVkdWxlcigpfUJyb3dzZXIubWFpbkxvb3Auc2hvdWxkUGF1c2U9ZmFsc2V9KSx1cGRhdGVTdGF0dXM6KGZ1bmN0aW9uKCl7aWYoTW9kdWxlWyJzZXRTdGF0dXMiXSl7dmFyIG1lc3NhZ2U9TW9kdWxlWyJzdGF0dXNNZXNzYWdlIl18fCJQbGVhc2Ugd2FpdC4uLiI7dmFyIHJlbWFpbmluZz1Ccm93c2VyLm1haW5Mb29wLnJlbWFpbmluZ0Jsb2NrZXJzO3ZhciBleHBlY3RlZD1Ccm93c2VyLm1haW5Mb29wLmV4cGVjdGVkQmxvY2tlcnM7aWYocmVtYWluaW5nKXtpZihyZW1haW5pbmc8ZXhwZWN0ZWQpe01vZHVsZVsic2V0U3RhdHVzIl0obWVzc2FnZSsiICgiKyhleHBlY3RlZC1yZW1haW5pbmcpKyIvIitleHBlY3RlZCsiKSIpfWVsc2V7TW9kdWxlWyJzZXRTdGF0dXMiXShtZXNzYWdlKX19ZWxzZXtNb2R1bGVbInNldFN0YXR1cyJdKCIiKX19fSl9LGlzRnVsbFNjcmVlbjpmYWxzZSxwb2ludGVyTG9jazpmYWxzZSxtb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxiYWNrczpbXSx3b3JrZXJzOltdLGluaXQ6KGZ1bmN0aW9uKCl7aWYoIU1vZHVsZVsicHJlbG9hZFBsdWdpbnMiXSlNb2R1bGVbInByZWxvYWRQbHVnaW5zIl09W107aWYoQnJvd3Nlci5pbml0dGVkfHxFTlZJUk9OTUVOVF9JU19XT1JLRVIpcmV0dXJuO0Jyb3dzZXIuaW5pdHRlZD10cnVlO3RyeXtuZXcgQmxvYjtCcm93c2VyLmhhc0Jsb2JDb25zdHJ1Y3Rvcj10cnVlfWNhdGNoKGUpe0Jyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yPWZhbHNlO2NvbnNvbGUubG9nKCJ3YXJuaW5nOiBubyBibG9iIGNvbnN0cnVjdG9yLCBjYW5ub3QgY3JlYXRlIGJsb2JzIHdpdGggbWltZXR5cGVzIil9QnJvd3Nlci5CbG9iQnVpbGRlcj10eXBlb2YgTW96QmxvYkJ1aWxkZXIhPSJ1bmRlZmluZWQiP01vekJsb2JCdWlsZGVyOnR5cGVvZiBXZWJLaXRCbG9iQnVpbGRlciE9InVuZGVmaW5lZCI/V2ViS2l0QmxvYkJ1aWxkZXI6IUJyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yP2NvbnNvbGUubG9nKCJ3YXJuaW5nOiBubyBCbG9iQnVpbGRlciIpOm51bGw7QnJvd3Nlci5VUkxPYmplY3Q9dHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCI/d2luZG93LlVSTD93aW5kb3cuVVJMOndpbmRvdy53ZWJraXRVUkw6dW5kZWZpbmVkO2lmKCFNb2R1bGUubm9JbWFnZURlY29kaW5nJiZ0eXBlb2YgQnJvd3Nlci5VUkxPYmplY3Q9PT0idW5kZWZpbmVkIil7Y29uc29sZS5sb2coIndhcm5pbmc6IEJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBjcmVhdGluZyBvYmplY3QgVVJMcy4gQnVpbHQtaW4gYnJvd3NlciBpbWFnZSBkZWNvZGluZyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIik7TW9kdWxlLm5vSW1hZ2VEZWNvZGluZz10cnVlfXZhciBpbWFnZVBsdWdpbj17fTtpbWFnZVBsdWdpblsiY2FuSGFuZGxlIl09ZnVuY3Rpb24gaW1hZ2VQbHVnaW5fY2FuSGFuZGxlKG5hbWUpe3JldHVybiFNb2R1bGUubm9JbWFnZURlY29kaW5nJiYvXC4oanBnfGpwZWd8cG5nfGJtcCkkL2kudGVzdChuYW1lKX07aW1hZ2VQbHVnaW5bImhhbmRsZSJdPWZ1bmN0aW9uIGltYWdlUGx1Z2luX2hhbmRsZShieXRlQXJyYXksbmFtZSxvbmxvYWQsb25lcnJvcil7dmFyIGI9bnVsbDtpZihCcm93c2VyLmhhc0Jsb2JDb25zdHJ1Y3Rvcil7dHJ5e2I9bmV3IEJsb2IoW2J5dGVBcnJheV0se3R5cGU6QnJvd3Nlci5nZXRNaW1ldHlwZShuYW1lKX0pO2lmKGIuc2l6ZSE9PWJ5dGVBcnJheS5sZW5ndGgpe2I9bmV3IEJsb2IoWyhuZXcgVWludDhBcnJheShieXRlQXJyYXkpKS5idWZmZXJdLHt0eXBlOkJyb3dzZXIuZ2V0TWltZXR5cGUobmFtZSl9KX19Y2F0Y2goZSl7UnVudGltZS53YXJuT25jZSgiQmxvYiBjb25zdHJ1Y3RvciBwcmVzZW50IGJ1dCBmYWlsczogIitlKyI7IGZhbGxpbmcgYmFjayB0byBibG9iIGJ1aWxkZXIiKX19aWYoIWIpe3ZhciBiYj1uZXcgQnJvd3Nlci5CbG9iQnVpbGRlcjtiYi5hcHBlbmQoKG5ldyBVaW50OEFycmF5KGJ5dGVBcnJheSkpLmJ1ZmZlcik7Yj1iYi5nZXRCbG9iKCl9dmFyIHVybD1Ccm93c2VyLlVSTE9iamVjdC5jcmVhdGVPYmplY3RVUkwoYik7dmFyIGltZz1uZXcgSW1hZ2U7aW1nLm9ubG9hZD1mdW5jdGlvbiBpbWdfb25sb2FkKCl7YXNzZXJ0KGltZy5jb21wbGV0ZSwiSW1hZ2UgIituYW1lKyIgY291bGQgbm90IGJlIGRlY29kZWQiKTt2YXIgY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2NhbnZhcy53aWR0aD1pbWcud2lkdGg7Y2FudmFzLmhlaWdodD1pbWcuaGVpZ2h0O3ZhciBjdHg9Y2FudmFzLmdldENvbnRleHQoIjJkIik7Y3R4LmRyYXdJbWFnZShpbWcsMCwwKTtNb2R1bGVbInByZWxvYWRlZEltYWdlcyJdW25hbWVdPWNhbnZhcztCcm93c2VyLlVSTE9iamVjdC5yZXZva2VPYmplY3RVUkwodXJsKTtpZihvbmxvYWQpb25sb2FkKGJ5dGVBcnJheSl9O2ltZy5vbmVycm9yPWZ1bmN0aW9uIGltZ19vbmVycm9yKGV2ZW50KXtjb25zb2xlLmxvZygiSW1hZ2UgIit1cmwrIiBjb3VsZCBub3QgYmUgZGVjb2RlZCIpO2lmKG9uZXJyb3Ipb25lcnJvcigpfTtpbWcuc3JjPXVybH07TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLnB1c2goaW1hZ2VQbHVnaW4pO3ZhciBhdWRpb1BsdWdpbj17fTthdWRpb1BsdWdpblsiY2FuSGFuZGxlIl09ZnVuY3Rpb24gYXVkaW9QbHVnaW5fY2FuSGFuZGxlKG5hbWUpe3JldHVybiFNb2R1bGUubm9BdWRpb0RlY29kaW5nJiZuYW1lLnN1YnN0cigtNClpbnsiLm9nZyI6MSwiLndhdiI6MSwiLm1wMyI6MX19O2F1ZGlvUGx1Z2luWyJoYW5kbGUiXT1mdW5jdGlvbiBhdWRpb1BsdWdpbl9oYW5kbGUoYnl0ZUFycmF5LG5hbWUsb25sb2FkLG9uZXJyb3Ipe3ZhciBkb25lPWZhbHNlO2Z1bmN0aW9uIGZpbmlzaChhdWRpbyl7aWYoZG9uZSlyZXR1cm47ZG9uZT10cnVlO01vZHVsZVsicHJlbG9hZGVkQXVkaW9zIl1bbmFtZV09YXVkaW87aWYob25sb2FkKW9ubG9hZChieXRlQXJyYXkpfWZ1bmN0aW9uIGZhaWwoKXtpZihkb25lKXJldHVybjtkb25lPXRydWU7TW9kdWxlWyJwcmVsb2FkZWRBdWRpb3MiXVtuYW1lXT1uZXcgQXVkaW87aWYob25lcnJvcilvbmVycm9yKCl9aWYoQnJvd3Nlci5oYXNCbG9iQ29uc3RydWN0b3Ipe3RyeXt2YXIgYj1uZXcgQmxvYihbYnl0ZUFycmF5XSx7dHlwZTpCcm93c2VyLmdldE1pbWV0eXBlKG5hbWUpfSl9Y2F0Y2goZSl7cmV0dXJuIGZhaWwoKX12YXIgdXJsPUJyb3dzZXIuVVJMT2JqZWN0LmNyZWF0ZU9iamVjdFVSTChiKTt2YXIgYXVkaW89bmV3IEF1ZGlvO2F1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoImNhbnBsYXl0aHJvdWdoIiwoZnVuY3Rpb24oKXtmaW5pc2goYXVkaW8pfSksZmFsc2UpO2F1ZGlvLm9uZXJyb3I9ZnVuY3Rpb24gYXVkaW9fb25lcnJvcihldmVudCl7aWYoZG9uZSlyZXR1cm47Y29uc29sZS5sb2coIndhcm5pbmc6IGJyb3dzZXIgY291bGQgbm90IGZ1bGx5IGRlY29kZSBhdWRpbyAiK25hbWUrIiwgdHJ5aW5nIHNsb3dlciBiYXNlNjQgYXBwcm9hY2giKTtmdW5jdGlvbiBlbmNvZGU2NChkYXRhKXt2YXIgQkFTRT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7dmFyIFBBRD0iPSI7dmFyIHJldD0iIjt2YXIgbGVmdGNoYXI9MDt2YXIgbGVmdGJpdHM9MDtmb3IodmFyIGk9MDtpPGRhdGEubGVuZ3RoO2krKyl7bGVmdGNoYXI9bGVmdGNoYXI8PDh8ZGF0YVtpXTtsZWZ0Yml0cys9ODt3aGlsZShsZWZ0Yml0cz49Nil7dmFyIGN1cnI9bGVmdGNoYXI+PmxlZnRiaXRzLTYmNjM7bGVmdGJpdHMtPTY7cmV0Kz1CQVNFW2N1cnJdfX1pZihsZWZ0Yml0cz09Mil7cmV0Kz1CQVNFWyhsZWZ0Y2hhciYzKTw8NF07cmV0Kz1QQUQrUEFEfWVsc2UgaWYobGVmdGJpdHM9PTQpe3JldCs9QkFTRVsobGVmdGNoYXImMTUpPDwyXTtyZXQrPVBBRH1yZXR1cm4gcmV0fWF1ZGlvLnNyYz0iZGF0YTphdWRpby94LSIrbmFtZS5zdWJzdHIoLTMpKyI7YmFzZTY0LCIrZW5jb2RlNjQoYnl0ZUFycmF5KTtmaW5pc2goYXVkaW8pfTthdWRpby5zcmM9dXJsO0Jyb3dzZXIuc2FmZVNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZmluaXNoKGF1ZGlvKX0pLDFlNCl9ZWxzZXtyZXR1cm4gZmFpbCgpfX07TW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLnB1c2goYXVkaW9QbHVnaW4pO3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtpZihjYW52YXMpe2NhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2s9Y2FudmFzWyJyZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJtb3pSZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJ3ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2siXXx8Y2FudmFzWyJtc1JlcXVlc3RQb2ludGVyTG9jayJdfHwoZnVuY3Rpb24oKXt9KTtjYW52YXMuZXhpdFBvaW50ZXJMb2NrPWRvY3VtZW50WyJleGl0UG9pbnRlckxvY2siXXx8ZG9jdW1lbnRbIm1vekV4aXRQb2ludGVyTG9jayJdfHxkb2N1bWVudFsid2Via2l0RXhpdFBvaW50ZXJMb2NrIl18fGRvY3VtZW50WyJtc0V4aXRQb2ludGVyTG9jayJdfHwoZnVuY3Rpb24oKXt9KTtjYW52YXMuZXhpdFBvaW50ZXJMb2NrPWNhbnZhcy5leGl0UG9pbnRlckxvY2suYmluZChkb2N1bWVudCk7ZnVuY3Rpb24gcG9pbnRlckxvY2tDaGFuZ2UoKXtCcm93c2VyLnBvaW50ZXJMb2NrPWRvY3VtZW50WyJwb2ludGVyTG9ja0VsZW1lbnQiXT09PWNhbnZhc3x8ZG9jdW1lbnRbIm1velBvaW50ZXJMb2NrRWxlbWVudCJdPT09Y2FudmFzfHxkb2N1bWVudFsid2Via2l0UG9pbnRlckxvY2tFbGVtZW50Il09PT1jYW52YXN8fGRvY3VtZW50WyJtc1BvaW50ZXJMb2NrRWxlbWVudCJdPT09Y2FudmFzfWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJsb2NrY2hhbmdlIixwb2ludGVyTG9ja0NoYW5nZSxmYWxzZSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW96cG9pbnRlcmxvY2tjaGFuZ2UiLHBvaW50ZXJMb2NrQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2NoYW5nZSIscG9pbnRlckxvY2tDaGFuZ2UsZmFsc2UpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1zcG9pbnRlcmxvY2tjaGFuZ2UiLHBvaW50ZXJMb2NrQ2hhbmdlLGZhbHNlKTtpZihNb2R1bGVbImVsZW1lbnRQb2ludGVyTG9jayJdKXtjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbihldil7aWYoIUJyb3dzZXIucG9pbnRlckxvY2smJmNhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2spe2NhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2soKTtldi5wcmV2ZW50RGVmYXVsdCgpfX0pLGZhbHNlKX19fSksY3JlYXRlQ29udGV4dDooZnVuY3Rpb24oY2FudmFzLHVzZVdlYkdMLHNldEluTW9kdWxlLHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpe3ZhciBjdHg7dmFyIGVycm9ySW5mbz0iPyI7ZnVuY3Rpb24gb25Db250ZXh0Q3JlYXRpb25FcnJvcihldmVudCl7ZXJyb3JJbmZvPWV2ZW50LnN0YXR1c01lc3NhZ2V8fGVycm9ySW5mb310cnl7aWYodXNlV2ViR0wpe3ZhciBjb250ZXh0QXR0cmlidXRlcz17YW50aWFsaWFzOmZhbHNlLGFscGhhOmZhbHNlfTtpZih3ZWJHTENvbnRleHRBdHRyaWJ1dGVzKXtmb3IodmFyIGF0dHJpYnV0ZSBpbiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzKXtjb250ZXh0QXR0cmlidXRlc1thdHRyaWJ1dGVdPXdlYkdMQ29udGV4dEF0dHJpYnV0ZXNbYXR0cmlidXRlXX19Y2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLG9uQ29udGV4dENyZWF0aW9uRXJyb3IsZmFsc2UpO3RyeXtbImV4cGVyaW1lbnRhbC13ZWJnbCIsIndlYmdsIl0uc29tZSgoZnVuY3Rpb24od2ViZ2xJZCl7cmV0dXJuIGN0eD1jYW52YXMuZ2V0Q29udGV4dCh3ZWJnbElkLGNvbnRleHRBdHRyaWJ1dGVzKX0pKX1maW5hbGx5e2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIixvbkNvbnRleHRDcmVhdGlvbkVycm9yLGZhbHNlKX19ZWxzZXtjdHg9Y2FudmFzLmdldENvbnRleHQoIjJkIil9aWYoIWN0eCl0aHJvdyI6KCJ9Y2F0Y2goZSl7TW9kdWxlLnByaW50KCJDb3VsZCBub3QgY3JlYXRlIGNhbnZhczogIitbZXJyb3JJbmZvLGVdKTtyZXR1cm4gbnVsbH1pZih1c2VXZWJHTCl7Y2FudmFzLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iYmxhY2sifWlmKHNldEluTW9kdWxlKXtHTGN0eD1Nb2R1bGUuY3R4PWN0eDtNb2R1bGUudXNlV2ViR0w9dXNlV2ViR0w7QnJvd3Nlci5tb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihjYWxsYmFjayl7Y2FsbGJhY2soKX0pKTtCcm93c2VyLmluaXQoKX1yZXR1cm4gY3R4fSksZGVzdHJveUNvbnRleHQ6KGZ1bmN0aW9uKGNhbnZhcyx1c2VXZWJHTCxzZXRJbk1vZHVsZSl7fSksZnVsbFNjcmVlbkhhbmRsZXJzSW5zdGFsbGVkOmZhbHNlLGxvY2tQb2ludGVyOnVuZGVmaW5lZCxyZXNpemVDYW52YXM6dW5kZWZpbmVkLHJlcXVlc3RGdWxsU2NyZWVuOihmdW5jdGlvbihsb2NrUG9pbnRlcixyZXNpemVDYW52YXMpe0Jyb3dzZXIubG9ja1BvaW50ZXI9bG9ja1BvaW50ZXI7QnJvd3Nlci5yZXNpemVDYW52YXM9cmVzaXplQ2FudmFzO2lmKHR5cGVvZiBCcm93c2VyLmxvY2tQb2ludGVyPT09InVuZGVmaW5lZCIpQnJvd3Nlci5sb2NrUG9pbnRlcj10cnVlO2lmKHR5cGVvZiBCcm93c2VyLnJlc2l6ZUNhbnZhcz09PSJ1bmRlZmluZWQiKUJyb3dzZXIucmVzaXplQ2FudmFzPWZhbHNlO3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtmdW5jdGlvbiBmdWxsU2NyZWVuQ2hhbmdlKCl7QnJvd3Nlci5pc0Z1bGxTY3JlZW49ZmFsc2U7dmFyIGNhbnZhc0NvbnRhaW5lcj1jYW52YXMucGFyZW50Tm9kZTtpZigoZG9jdW1lbnRbIndlYmtpdEZ1bGxTY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1vekZ1bGxzY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJmdWxsU2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsiZnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKT09PWNhbnZhc0NvbnRhaW5lcil7Y2FudmFzLmNhbmNlbEZ1bGxTY3JlZW49ZG9jdW1lbnRbImNhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIm1vekNhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIndlYmtpdENhbmNlbEZ1bGxTY3JlZW4iXXx8ZG9jdW1lbnRbIm1zRXhpdEZ1bGxzY3JlZW4iXXx8ZG9jdW1lbnRbImV4aXRGdWxsc2NyZWVuIl18fChmdW5jdGlvbigpe30pO2NhbnZhcy5jYW5jZWxGdWxsU2NyZWVuPWNhbnZhcy5jYW5jZWxGdWxsU2NyZWVuLmJpbmQoZG9jdW1lbnQpO2lmKEJyb3dzZXIubG9ja1BvaW50ZXIpY2FudmFzLnJlcXVlc3RQb2ludGVyTG9jaygpO0Jyb3dzZXIuaXNGdWxsU2NyZWVuPXRydWU7aWYoQnJvd3Nlci5yZXNpemVDYW52YXMpQnJvd3Nlci5zZXRGdWxsU2NyZWVuQ2FudmFzU2l6ZSgpfWVsc2V7Y2FudmFzQ29udGFpbmVyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNhbnZhcyxjYW52YXNDb250YWluZXIpO2NhbnZhc0NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNhbnZhc0NvbnRhaW5lcik7aWYoQnJvd3Nlci5yZXNpemVDYW52YXMpQnJvd3Nlci5zZXRXaW5kb3dlZENhbnZhc1NpemUoKX1pZihNb2R1bGVbIm9uRnVsbFNjcmVlbiJdKU1vZHVsZVsib25GdWxsU2NyZWVuIl0oQnJvd3Nlci5pc0Z1bGxTY3JlZW4pO0Jyb3dzZXIudXBkYXRlQ2FudmFzRGltZW5zaW9ucyhjYW52YXMpfWlmKCFCcm93c2VyLmZ1bGxTY3JlZW5IYW5kbGVyc0luc3RhbGxlZCl7QnJvd3Nlci5mdWxsU2NyZWVuSGFuZGxlcnNJbnN0YWxsZWQ9dHJ1ZTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3pmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIixmdWxsU2NyZWVuQ2hhbmdlLGZhbHNlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJNU0Z1bGxzY3JlZW5DaGFuZ2UiLGZ1bGxTY3JlZW5DaGFuZ2UsZmFsc2UpfXZhciBjYW52YXNDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Y2FudmFzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNhbnZhc0NvbnRhaW5lcixjYW52YXMpO2NhbnZhc0NvbnRhaW5lci5hcHBlbmRDaGlsZChjYW52YXMpO2NhbnZhc0NvbnRhaW5lci5yZXF1ZXN0RnVsbFNjcmVlbj1jYW52YXNDb250YWluZXJbInJlcXVlc3RGdWxsU2NyZWVuIl18fGNhbnZhc0NvbnRhaW5lclsibW96UmVxdWVzdEZ1bGxTY3JlZW4iXXx8Y2FudmFzQ29udGFpbmVyWyJtc1JlcXVlc3RGdWxsc2NyZWVuIl18fChjYW52YXNDb250YWluZXJbIndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuIl0/KGZ1bmN0aW9uKCl7Y2FudmFzQ29udGFpbmVyWyJ3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiJdKEVsZW1lbnRbIkFMTE9XX0tFWUJPQVJEX0lOUFVUIl0pfSk6bnVsbCk7Y2FudmFzQ29udGFpbmVyLnJlcXVlc3RGdWxsU2NyZWVuKCl9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpe2lmKHR5cGVvZiB3aW5kb3c9PT0idW5kZWZpbmVkIil7c2V0VGltZW91dChmdW5jLDFlMy82MCl9ZWxzZXtpZighd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSl7d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT13aW5kb3dbInJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIm1velJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbIm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl18fHdpbmRvd1sib1JlcXVlc3RBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbInNldFRpbWVvdXQiXX13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpfX0sc2FmZUNhbGxiYWNrOihmdW5jdGlvbihmdW5jKXtyZXR1cm4oZnVuY3Rpb24oKXtpZighQUJPUlQpcmV0dXJuIGZ1bmMuYXBwbHkobnVsbCxhcmd1bWVudHMpfSl9KSxzYWZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lOihmdW5jdGlvbihmdW5jKXtyZXR1cm4gQnJvd3Nlci5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7aWYoIUFCT1JUKWZ1bmMoKX0pKX0pLHNhZmVTZXRUaW1lb3V0OihmdW5jdGlvbihmdW5jLHRpbWVvdXQpe01vZHVsZVsibm9FeGl0UnVudGltZSJdPXRydWU7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aWYoIUFCT1JUKWZ1bmMoKX0pLHRpbWVvdXQpfSksc2FmZVNldEludGVydmFsOihmdW5jdGlvbihmdW5jLHRpbWVvdXQpe01vZHVsZVsibm9FeGl0UnVudGltZSJdPXRydWU7cmV0dXJuIHNldEludGVydmFsKChmdW5jdGlvbigpe2lmKCFBQk9SVClmdW5jKCl9KSx0aW1lb3V0KX0pLGdldE1pbWV0eXBlOihmdW5jdGlvbihuYW1lKXtyZXR1cm57ImpwZyI6ImltYWdlL2pwZWciLCJqcGVnIjoiaW1hZ2UvanBlZyIsInBuZyI6ImltYWdlL3BuZyIsImJtcCI6ImltYWdlL2JtcCIsIm9nZyI6ImF1ZGlvL29nZyIsIndhdiI6ImF1ZGlvL3dhdiIsIm1wMyI6ImF1ZGlvL21wZWcifVtuYW1lLnN1YnN0cihuYW1lLmxhc3RJbmRleE9mKCIuIikrMSldfSksZ2V0VXNlck1lZGlhOihmdW5jdGlvbihmdW5jKXtpZighd2luZG93LmdldFVzZXJNZWRpYSl7d2luZG93LmdldFVzZXJNZWRpYT1uYXZpZ2F0b3JbImdldFVzZXJNZWRpYSJdfHxuYXZpZ2F0b3JbIm1vekdldFVzZXJNZWRpYSJdfXdpbmRvdy5nZXRVc2VyTWVkaWEoZnVuYyl9KSxnZXRNb3ZlbWVudFg6KGZ1bmN0aW9uKGV2ZW50KXtyZXR1cm4gZXZlbnRbIm1vdmVtZW50WCJdfHxldmVudFsibW96TW92ZW1lbnRYIl18fGV2ZW50WyJ3ZWJraXRNb3ZlbWVudFgiXXx8MH0pLGdldE1vdmVtZW50WTooZnVuY3Rpb24oZXZlbnQpe3JldHVybiBldmVudFsibW92ZW1lbnRZIl18fGV2ZW50WyJtb3pNb3ZlbWVudFkiXXx8ZXZlbnRbIndlYmtpdE1vdmVtZW50WSJdfHwwfSksZ2V0TW91c2VXaGVlbERlbHRhOihmdW5jdGlvbihldmVudCl7dmFyIGRlbHRhPTA7c3dpdGNoKGV2ZW50LnR5cGUpe2Nhc2UiRE9NTW91c2VTY3JvbGwiOmRlbHRhPWV2ZW50LmRldGFpbDticmVhaztjYXNlIm1vdXNld2hlZWwiOmRlbHRhPS1ldmVudC53aGVlbERlbHRhO2JyZWFrO2Nhc2Uid2hlZWwiOmRlbHRhPWV2ZW50LmRlbHRhWTticmVhaztkZWZhdWx0OnRocm93InVucmVjb2duaXplZCBtb3VzZSB3aGVlbCBldmVudDogIitldmVudC50eXBlfXJldHVybiBNYXRoLm1heCgtMSxNYXRoLm1pbigxLGRlbHRhKSl9KSxtb3VzZVg6MCxtb3VzZVk6MCxtb3VzZU1vdmVtZW50WDowLG1vdXNlTW92ZW1lbnRZOjAsdG91Y2hlczp7fSxsYXN0VG91Y2hlczp7fSxjYWxjdWxhdGVNb3VzZUV2ZW50OihmdW5jdGlvbihldmVudCl7aWYoQnJvd3Nlci5wb2ludGVyTG9jayl7aWYoZXZlbnQudHlwZSE9Im1vdXNlbW92ZSImJiJtb3pNb3ZlbWVudFgiaW4gZXZlbnQpe0Jyb3dzZXIubW91c2VNb3ZlbWVudFg9QnJvd3Nlci5tb3VzZU1vdmVtZW50WT0wfWVsc2V7QnJvd3Nlci5tb3VzZU1vdmVtZW50WD1Ccm93c2VyLmdldE1vdmVtZW50WChldmVudCk7QnJvd3Nlci5tb3VzZU1vdmVtZW50WT1Ccm93c2VyLmdldE1vdmVtZW50WShldmVudCl9aWYodHlwZW9mIFNETCE9InVuZGVmaW5lZCIpe0Jyb3dzZXIubW91c2VYPVNETC5tb3VzZVgrQnJvd3Nlci5tb3VzZU1vdmVtZW50WDtCcm93c2VyLm1vdXNlWT1TREwubW91c2VZK0Jyb3dzZXIubW91c2VNb3ZlbWVudFl9ZWxzZXtCcm93c2VyLm1vdXNlWCs9QnJvd3Nlci5tb3VzZU1vdmVtZW50WDtCcm93c2VyLm1vdXNlWSs9QnJvd3Nlci5tb3VzZU1vdmVtZW50WX19ZWxzZXt2YXIgcmVjdD1Nb2R1bGVbImNhbnZhcyJdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBjdz1Nb2R1bGVbImNhbnZhcyJdLndpZHRoO3ZhciBjaD1Nb2R1bGVbImNhbnZhcyJdLmhlaWdodDt2YXIgc2Nyb2xsWD10eXBlb2Ygd2luZG93LnNjcm9sbFghPT0idW5kZWZpbmVkIj93aW5kb3cuc2Nyb2xsWDp3aW5kb3cucGFnZVhPZmZzZXQ7dmFyIHNjcm9sbFk9dHlwZW9mIHdpbmRvdy5zY3JvbGxZIT09InVuZGVmaW5lZCI/d2luZG93LnNjcm9sbFk6d2luZG93LnBhZ2VZT2Zmc2V0O2lmKGV2ZW50LnR5cGU9PT0idG91Y2hzdGFydCJ8fGV2ZW50LnR5cGU9PT0idG91Y2hlbmQifHxldmVudC50eXBlPT09InRvdWNobW92ZSIpe3ZhciB0b3VjaD1ldmVudC50b3VjaDtpZih0b3VjaD09PXVuZGVmaW5lZCl7cmV0dXJufXZhciBhZGp1c3RlZFg9dG91Y2gucGFnZVgtKHNjcm9sbFgrcmVjdC5sZWZ0KTt2YXIgYWRqdXN0ZWRZPXRvdWNoLnBhZ2VZLShzY3JvbGxZK3JlY3QudG9wKTthZGp1c3RlZFg9YWRqdXN0ZWRYKihjdy9yZWN0LndpZHRoKTthZGp1c3RlZFk9YWRqdXN0ZWRZKihjaC9yZWN0LmhlaWdodCk7dmFyIGNvb3Jkcz17eDphZGp1c3RlZFgseTphZGp1c3RlZFl9O2lmKGV2ZW50LnR5cGU9PT0idG91Y2hzdGFydCIpe0Jyb3dzZXIubGFzdFRvdWNoZXNbdG91Y2guaWRlbnRpZmllcl09Y29vcmRzO0Jyb3dzZXIudG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXT1jb29yZHN9ZWxzZSBpZihldmVudC50eXBlPT09InRvdWNoZW5kInx8ZXZlbnQudHlwZT09PSJ0b3VjaG1vdmUiKXtCcm93c2VyLmxhc3RUb3VjaGVzW3RvdWNoLmlkZW50aWZpZXJdPUJyb3dzZXIudG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXTtCcm93c2VyLnRvdWNoZXNbdG91Y2guaWRlbnRpZmllcl09e3g6YWRqdXN0ZWRYLHk6YWRqdXN0ZWRZfX1yZXR1cm59dmFyIHg9ZXZlbnQucGFnZVgtKHNjcm9sbFgrcmVjdC5sZWZ0KTt2YXIgeT1ldmVudC5wYWdlWS0oc2Nyb2xsWStyZWN0LnRvcCk7eD14Kihjdy9yZWN0LndpZHRoKTt5PXkqKGNoL3JlY3QuaGVpZ2h0KTtCcm93c2VyLm1vdXNlTW92ZW1lbnRYPXgtQnJvd3Nlci5tb3VzZVg7QnJvd3Nlci5tb3VzZU1vdmVtZW50WT15LUJyb3dzZXIubW91c2VZO0Jyb3dzZXIubW91c2VYPXg7QnJvd3Nlci5tb3VzZVk9eX19KSx4aHJMb2FkOihmdW5jdGlvbih1cmwsb25sb2FkLG9uZXJyb3Ipe3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCx0cnVlKTt4aHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7eGhyLm9ubG9hZD1mdW5jdGlvbiB4aHJfb25sb2FkKCl7aWYoeGhyLnN0YXR1cz09MjAwfHx4aHIuc3RhdHVzPT0wJiZ4aHIucmVzcG9uc2Upe29ubG9hZCh4aHIucmVzcG9uc2UpfWVsc2V7b25lcnJvcigpfX07eGhyLm9uZXJyb3I9b25lcnJvcjt4aHIuc2VuZChudWxsKX0pLGFzeW5jTG9hZDooZnVuY3Rpb24odXJsLG9ubG9hZCxvbmVycm9yLG5vUnVuRGVwKXtCcm93c2VyLnhockxvYWQodXJsLChmdW5jdGlvbihhcnJheUJ1ZmZlcil7YXNzZXJ0KGFycmF5QnVmZmVyLCdMb2FkaW5nIGRhdGEgZmlsZSAiJyt1cmwrJyIgZmFpbGVkIChubyBhcnJheUJ1ZmZlcikuJyk7b25sb2FkKG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7aWYoIW5vUnVuRGVwKXJlbW92ZVJ1bkRlcGVuZGVuY3koImFsICIrdXJsKX0pLChmdW5jdGlvbihldmVudCl7aWYob25lcnJvcil7b25lcnJvcigpfWVsc2V7dGhyb3cnTG9hZGluZyBkYXRhIGZpbGUgIicrdXJsKyciIGZhaWxlZC4nfX0pKTtpZighbm9SdW5EZXApYWRkUnVuRGVwZW5kZW5jeSgiYWwgIit1cmwpfSkscmVzaXplTGlzdGVuZXJzOltdLHVwZGF0ZVJlc2l6ZUxpc3RlbmVyczooZnVuY3Rpb24oKXt2YXIgY2FudmFzPU1vZHVsZVsiY2FudmFzIl07QnJvd3Nlci5yZXNpemVMaXN0ZW5lcnMuZm9yRWFjaCgoZnVuY3Rpb24obGlzdGVuZXIpe2xpc3RlbmVyKGNhbnZhcy53aWR0aCxjYW52YXMuaGVpZ2h0KX0pKX0pLHNldENhbnZhc1NpemU6KGZ1bmN0aW9uKHdpZHRoLGhlaWdodCxub1VwZGF0ZXMpe3ZhciBjYW52YXM9TW9kdWxlWyJjYW52YXMiXTtCcm93c2VyLnVwZGF0ZUNhbnZhc0RpbWVuc2lvbnMoY2FudmFzLHdpZHRoLGhlaWdodCk7aWYoIW5vVXBkYXRlcylCcm93c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVycygpfSksd2luZG93ZWRXaWR0aDowLHdpbmRvd2VkSGVpZ2h0OjAsc2V0RnVsbFNjcmVlbkNhbnZhc1NpemU6KGZ1bmN0aW9uKCl7aWYodHlwZW9mIFNETCE9InVuZGVmaW5lZCIpe3ZhciBmbGFncz1IRUFQVTMyW1NETC5zY3JlZW4rUnVudGltZS5RVUFOVFVNX1NJWkUqMD4+Ml07ZmxhZ3M9ZmxhZ3N8ODM4ODYwODtIRUFQMzJbU0RMLnNjcmVlbitSdW50aW1lLlFVQU5UVU1fU0laRSowPj4yXT1mbGFnc31Ccm93c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVycygpfSksc2V0V2luZG93ZWRDYW52YXNTaXplOihmdW5jdGlvbigpe2lmKHR5cGVvZiBTREwhPSJ1bmRlZmluZWQiKXt2YXIgZmxhZ3M9SEVBUFUzMltTREwuc2NyZWVuK1J1bnRpbWUuUVVBTlRVTV9TSVpFKjA+PjJdO2ZsYWdzPWZsYWdzJn44Mzg4NjA4O0hFQVAzMltTREwuc2NyZWVuK1J1bnRpbWUuUVVBTlRVTV9TSVpFKjA+PjJdPWZsYWdzfUJyb3dzZXIudXBkYXRlUmVzaXplTGlzdGVuZXJzKCl9KSx1cGRhdGVDYW52YXNEaW1lbnNpb25zOihmdW5jdGlvbihjYW52YXMsd05hdGl2ZSxoTmF0aXZlKXtpZih3TmF0aXZlJiZoTmF0aXZlKXtjYW52YXMud2lkdGhOYXRpdmU9d05hdGl2ZTtjYW52YXMuaGVpZ2h0TmF0aXZlPWhOYXRpdmV9ZWxzZXt3TmF0aXZlPWNhbnZhcy53aWR0aE5hdGl2ZTtoTmF0aXZlPWNhbnZhcy5oZWlnaHROYXRpdmV9dmFyIHc9d05hdGl2ZTt2YXIgaD1oTmF0aXZlO2lmKE1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSYmTW9kdWxlWyJmb3JjZWRBc3BlY3RSYXRpbyJdPjApe2lmKHcvaDxNb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pe3c9TWF0aC5yb3VuZChoKk1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSl9ZWxzZXtoPU1hdGgucm91bmQody9Nb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pfX1pZigoZG9jdW1lbnRbIndlYmtpdEZ1bGxTY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJ3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1vekZ1bGxzY3JlZW5FbGVtZW50Il18fGRvY3VtZW50WyJmdWxsU2NyZWVuRWxlbWVudCJdfHxkb2N1bWVudFsiZnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbFNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIm1zRnVsbHNjcmVlbkVsZW1lbnQiXXx8ZG9jdW1lbnRbIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKT09PWNhbnZhcy5wYXJlbnROb2RlJiZ0eXBlb2Ygc2NyZWVuIT0idW5kZWZpbmVkIil7dmFyIGZhY3Rvcj1NYXRoLm1pbihzY3JlZW4ud2lkdGgvdyxzY3JlZW4uaGVpZ2h0L2gpO3c9TWF0aC5yb3VuZCh3KmZhY3Rvcik7aD1NYXRoLnJvdW5kKGgqZmFjdG9yKX1pZihCcm93c2VyLnJlc2l6ZUNhbnZhcyl7aWYoY2FudmFzLndpZHRoIT13KWNhbnZhcy53aWR0aD13O2lmKGNhbnZhcy5oZWlnaHQhPWgpY2FudmFzLmhlaWdodD1oO2lmKHR5cGVvZiBjYW52YXMuc3R5bGUhPSJ1bmRlZmluZWQiKXtjYW52YXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Y2FudmFzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKX19ZWxzZXtpZihjYW52YXMud2lkdGghPXdOYXRpdmUpY2FudmFzLndpZHRoPXdOYXRpdmU7aWYoY2FudmFzLmhlaWdodCE9aE5hdGl2ZSljYW52YXMuaGVpZ2h0PWhOYXRpdmU7aWYodHlwZW9mIGNhbnZhcy5zdHlsZSE9InVuZGVmaW5lZCIpe2lmKHchPXdOYXRpdmV8fGghPWhOYXRpdmUpe2NhbnZhcy5zdHlsZS5zZXRQcm9wZXJ0eSgid2lkdGgiLHcrInB4IiwiaW1wb3J0YW50Iik7Y2FudmFzLnN0eWxlLnNldFByb3BlcnR5KCJoZWlnaHQiLGgrInB4IiwiaW1wb3J0YW50Iil9ZWxzZXtjYW52YXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Y2FudmFzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKX19fX0pfTtmdW5jdGlvbiBfX19jdHlwZV9iX2xvYygpe3ZhciBtZT1fX19jdHlwZV9iX2xvYztpZighbWUucmV0KXt2YXIgdmFsdWVzPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwyLDIsMiwyLDIsMiwyLDIsODE5NSw4MTk0LDgxOTQsODE5NCw4MTk0LDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDI0NTc3LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDU1MzA0LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDU0NTM2LDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDUwNDQwLDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDU0NzkyLDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDUwNjk2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDQ5MTU2LDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTt2YXIgaTE2c2l6ZT0yO3ZhciBhcnI9X21hbGxvYyh2YWx1ZXMubGVuZ3RoKmkxNnNpemUpO2Zvcih2YXIgaT0wO2k8dmFsdWVzLmxlbmd0aDtpKyspe0hFQVAxNlthcnIraSppMTZzaXplPj4xXT12YWx1ZXNbaV19bWUucmV0PWFsbG9jYXRlKFthcnIrMTI4KmkxNnNpemVdLCJpMTYqIixBTExPQ19OT1JNQUwpfXJldHVybiBtZS5yZXR9ZnVuY3Rpb24gX2ZyZWUoKXt9TW9kdWxlWyJfZnJlZSJdPV9mcmVlO2Z1bmN0aW9uIF9mcmVlbG9jYWxlKGxvY2FsZSl7X2ZyZWUobG9jYWxlKX1mdW5jdGlvbiBfX19jeGFfYWxsb2NhdGVfZXhjZXB0aW9uKHNpemUpe3ZhciBwdHI9X21hbGxvYyhzaXplK19fX2N4YV9leGNlcHRpb25faGVhZGVyX3NpemUpO3JldHVybiBwdHIrX19fY3hhX2V4Y2VwdGlvbl9oZWFkZXJfc2l6ZX1mdW5jdGlvbiBfZm1vZCh4LHkpe3JldHVybiB4JXl9dmFyIF9mbW9kbD1fZm1vZDtmdW5jdGlvbiBfY2F0b3BlbihuYW1lLG9mbGFnKXtyZXR1cm4tMX1mdW5jdGlvbiBfY2F0Z2V0cyhjYXRkLHNldF9pZCxtc2dfaWQscyl7cmV0dXJuIHN9ZnVuY3Rpb24gX3NwcmludGYocyxmb3JtYXQsdmFyYXJncyl7cmV0dXJuIF9zbnByaW50ZihzLHVuZGVmaW5lZCxmb3JtYXQsdmFyYXJncyl9ZnVuY3Rpb24gX2FzcHJpbnRmKHMsZm9ybWF0LHZhcmFyZ3Mpe3JldHVybiBfc3ByaW50Zigtcyxmb3JtYXQsdmFyYXJncyl9ZnVuY3Rpb24gX3Zhc3ByaW50ZihzLGZvcm1hdCx2YV9hcmcpe3JldHVybiBfYXNwcmludGYocyxmb3JtYXQsSEVBUDMyW3ZhX2FyZz4+Ml0pfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0KCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0Iik7YWJvcnQoLTEpfWZ1bmN0aW9uIF90aW1lKHB0cil7dmFyIHJldD1NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKTtpZihwdHIpe0hFQVAzMltwdHI+PjJdPXJldH1yZXR1cm4gcmV0fWZ1bmN0aW9uIF9jb3B5c2lnbihhLGIpe3JldHVybiBfX3JlYWxseU5lZ2F0aXZlKGEpPT09X19yZWFsbHlOZWdhdGl2ZShiKT9hOi1hfWZ1bmN0aW9uIF9fX2N0eXBlX3RvdXBwZXJfbG9jKCl7dmFyIG1lPV9fX2N0eXBlX3RvdXBwZXJfbG9jO2lmKCFtZS5yZXQpe3ZhciB2YWx1ZXM9WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwtMSwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDEyMywxMjQsMTI1LDEyNiwxMjcsMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NV07dmFyIGkzMnNpemU9NDt2YXIgYXJyPV9tYWxsb2ModmFsdWVzLmxlbmd0aCppMzJzaXplKTtmb3IodmFyIGk9MDtpPHZhbHVlcy5sZW5ndGg7aSsrKXtIRUFQMzJbYXJyK2kqaTMyc2l6ZT4+Ml09dmFsdWVzW2ldfW1lLnJldD1hbGxvY2F0ZShbYXJyKzEyOCppMzJzaXplXSwiaTMyKiIsQUxMT0NfTk9STUFMKX1yZXR1cm4gbWUucmV0fWZ1bmN0aW9uIF9fX2N4YV9ndWFyZF9hY3F1aXJlKHZhcmlhYmxlKXtpZighSEVBUDhbdmFyaWFibGU+PjBdKXtIRUFQOFt2YXJpYWJsZT4+MF09MTtyZXR1cm4gMX1yZXR1cm4gMH1mdW5jdGlvbiBfX19jdHlwZV90b2xvd2VyX2xvYygpe3ZhciBtZT1fX19jdHlwZV90b2xvd2VyX2xvYztpZighbWUucmV0KXt2YXIgdmFsdWVzPVsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsLTEsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyNywxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XTt2YXIgaTMyc2l6ZT00O3ZhciBhcnI9X21hbGxvYyh2YWx1ZXMubGVuZ3RoKmkzMnNpemUpO2Zvcih2YXIgaT0wO2k8dmFsdWVzLmxlbmd0aDtpKyspe0hFQVAzMlthcnIraSppMzJzaXplPj4yXT12YWx1ZXNbaV19bWUucmV0PWFsbG9jYXRlKFthcnIrMTI4KmkzMnNpemVdLCJpMzIqIixBTExPQ19OT1JNQUwpfXJldHVybiBtZS5yZXR9dmFyIF9fX2N4YV9jYXVnaHRfZXhjZXB0aW9ucz1bXTtmdW5jdGlvbiBfX19jeGFfYmVnaW5fY2F0Y2gocHRyKXtfX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udi51bmNhdWdodF9leGNlcHRpb24tLTtfX19jeGFfY2F1Z2h0X2V4Y2VwdGlvbnMucHVzaChfX19jeGFfbGFzdF90aHJvd25fZXhjZXB0aW9uKTtyZXR1cm4gcHRyfU1vZHVsZVsiX2JpdHNoaWZ0NjRTaGwiXT1fYml0c2hpZnQ2NFNobDtmdW5jdGlvbiBfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYoKXtpZighX19aTktTdDlleGNlcHRpb240d2hhdEV2LmJ1ZmZlcil7dmFyIG5hbWU9InN0ZDo6ZXhjZXB0aW9uIjtfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYuYnVmZmVyPV9tYWxsb2MobmFtZS5sZW5ndGgrMSk7d3JpdGVTdHJpbmdUb01lbW9yeShuYW1lLF9fWk5LU3Q5ZXhjZXB0aW9uNHdoYXRFdi5idWZmZXIpfXJldHVybiBfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYuYnVmZmVyfWZ1bmN0aW9uIF9fWk5TdDlleGNlcHRpb25EMkV2KCl7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yKCl7TW9kdWxlWyJwcmludEVyciJdKCJtaXNzaW5nIGZ1bmN0aW9uOiBfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yIik7YWJvcnQoLTEpfXZhciBfY29weXNpZ25sPV9jb3B5c2lnbjtmdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbigpe01vZHVsZVsicHJpbnRFcnIiXSgibWlzc2luZyBmdW5jdGlvbjogX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiIpO2Fib3J0KC0xKX12YXIgX19aVElTdDlleGNlcHRpb249YWxsb2NhdGUoW2FsbG9jYXRlKFsxLDAsMCwwLDAsMCwwXSwiaTgiLEFMTE9DX1NUQVRJQykrOCwwXSwiaTMyIixBTExPQ19TVEFUSUMpO3ZhciBfX19kc29faGFuZGxlPWFsbG9jYXRlKDEsImkzMioiLEFMTE9DX1NUQVRJQyk7RlMuc3RhdGljSW5pdCgpO19fQVRJTklUX18udW5zaGlmdCh7ZnVuYzooZnVuY3Rpb24oKXtpZighTW9kdWxlWyJub0ZTSW5pdCJdJiYhRlMuaW5pdC5pbml0aWFsaXplZClGUy5pbml0KCl9KX0pO19fQVRNQUlOX18ucHVzaCh7ZnVuYzooZnVuY3Rpb24oKXtGUy5pZ25vcmVQZXJtaXNzaW9ucz1mYWxzZX0pfSk7X19BVEVYSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe0ZTLnF1aXQoKX0pfSk7TW9kdWxlWyJGU19jcmVhdGVGb2xkZXIiXT1GUy5jcmVhdGVGb2xkZXI7TW9kdWxlWyJGU19jcmVhdGVQYXRoIl09RlMuY3JlYXRlUGF0aDtNb2R1bGVbIkZTX2NyZWF0ZURhdGFGaWxlIl09RlMuY3JlYXRlRGF0YUZpbGU7TW9kdWxlWyJGU19jcmVhdGVQcmVsb2FkZWRGaWxlIl09RlMuY3JlYXRlUHJlbG9hZGVkRmlsZTtNb2R1bGVbIkZTX2NyZWF0ZUxhenlGaWxlIl09RlMuY3JlYXRlTGF6eUZpbGU7TW9kdWxlWyJGU19jcmVhdGVMaW5rIl09RlMuY3JlYXRlTGluaztNb2R1bGVbIkZTX2NyZWF0ZURldmljZSJdPUZTLmNyZWF0ZURldmljZTtfX19lcnJub19zdGF0ZT1SdW50aW1lLnN0YXRpY0FsbG9jKDQpO0hFQVAzMltfX19lcnJub19zdGF0ZT4+Ml09MDtfX0FUSU5JVF9fLnVuc2hpZnQoe2Z1bmM6KGZ1bmN0aW9uKCl7VFRZLmluaXQoKX0pfSk7X19BVEVYSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe1RUWS5zaHV0ZG93bigpfSl9KTtUVFkudXRmOD1uZXcgUnVudGltZS5VVEY4UHJvY2Vzc29yO2lmKEVOVklST05NRU5UX0lTX05PREUpe3ZhciBmcz1yZXF1aXJlKCJmcyIpO05PREVGUy5zdGF0aWNJbml0KCl9X19BVElOSVRfXy5wdXNoKHtmdW5jOihmdW5jdGlvbigpe1NPQ0tGUy5yb290PUZTLm1vdW50KFNPQ0tGUyx7fSxudWxsKX0pfSk7X2ZnZXRjLnJldD1hbGxvY2F0ZShbMF0sImk4IixBTExPQ19TVEFUSUMpO01vZHVsZVsicmVxdWVzdEZ1bGxTY3JlZW4iXT1mdW5jdGlvbiBNb2R1bGVfcmVxdWVzdEZ1bGxTY3JlZW4obG9ja1BvaW50ZXIscmVzaXplQ2FudmFzKXtCcm93c2VyLnJlcXVlc3RGdWxsU2NyZWVuKGxvY2tQb2ludGVyLHJlc2l6ZUNhbnZhcyl9O01vZHVsZVsicmVxdWVzdEFuaW1hdGlvbkZyYW1lIl09ZnVuY3Rpb24gTW9kdWxlX3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKXtCcm93c2VyLnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKX07TW9kdWxlWyJzZXRDYW52YXNTaXplIl09ZnVuY3Rpb24gTW9kdWxlX3NldENhbnZhc1NpemUod2lkdGgsaGVpZ2h0LG5vVXBkYXRlcyl7QnJvd3Nlci5zZXRDYW52YXNTaXplKHdpZHRoLGhlaWdodCxub1VwZGF0ZXMpfTtNb2R1bGVbInBhdXNlTWFpbkxvb3AiXT1mdW5jdGlvbiBNb2R1bGVfcGF1c2VNYWluTG9vcCgpe0Jyb3dzZXIubWFpbkxvb3AucGF1c2UoKX07TW9kdWxlWyJyZXN1bWVNYWluTG9vcCJdPWZ1bmN0aW9uIE1vZHVsZV9yZXN1bWVNYWluTG9vcCgpe0Jyb3dzZXIubWFpbkxvb3AucmVzdW1lKCl9O01vZHVsZVsiZ2V0VXNlck1lZGlhIl09ZnVuY3Rpb24gTW9kdWxlX2dldFVzZXJNZWRpYSgpe0Jyb3dzZXIuZ2V0VXNlck1lZGlhKCl9O1NUQUNLX0JBU0U9U1RBQ0tUT1A9UnVudGltZS5hbGlnbk1lbW9yeShTVEFUSUNUT1ApO3N0YXRpY1NlYWxlZD10cnVlO1NUQUNLX01BWD1TVEFDS19CQVNFKzUyNDI4ODA7RFlOQU1JQ19CQVNFPURZTkFNSUNUT1A9UnVudGltZS5hbGlnbk1lbW9yeShTVEFDS19NQVgpO2Fzc2VydChEWU5BTUlDX0JBU0U8VE9UQUxfTUVNT1JZLCJUT1RBTF9NRU1PUlkgbm90IGJpZyBlbm91Z2ggZm9yIHN0YWNrIik7dmFyIGN0bHpfaTg9YWxsb2NhdGUoWzgsNyw2LDYsNSw1LDUsNSw0LDQsNCw0LDQsNCw0LDQsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLCJpOCIsQUxMT0NfRFlOQU1JQyk7dmFyIGN0dHpfaTg9YWxsb2NhdGUoWzgsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNiwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDUsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw3LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNSwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDYsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDBdLCJpOCIsQUxMT0NfRFlOQU1JQyk7dmFyIE1hdGhfbWluPU1hdGgubWluO2Z1bmN0aW9uIGludm9rZV9paWlpKGluZGV4LGExLGEyLGEzKXt0cnl7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paWlpIl0oaW5kZXgsYTEsYTIsYTMpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaShpbmRleCl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaSJdKGluZGV4KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92aShpbmRleCxhMSl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aSJdKGluZGV4LGExKX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92aWkoaW5kZXgsYTEsYTIpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpIl0oaW5kZXgsYTEsYTIpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpaWkoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcsYTgsYTkpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpaWlpaSJdKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3LGE4LGE5KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV9paShpbmRleCxhMSl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWkiXShpbmRleCxhMSl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaWlpaWQoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYsYTcpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpaWQiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaShpbmRleCxhMSxhMixhMyl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpIl0oaW5kZXgsYTEsYTIsYTMpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWQoaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYpe3RyeXtNb2R1bGVbImR5bkNhbGxfdmlpaWlpZCJdKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2KX1jYXRjaChlKXtpZih0eXBlb2YgZSE9PSJudW1iZXIiJiZlIT09ImxvbmdqbXAiKXRocm93IGU7YXNtWyJzZXRUaHJldyJdKDEsMCl9fWZ1bmN0aW9uIGludm9rZV92KGluZGV4KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3YiXShpbmRleCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaWlpaWlpaWlpKGluZGV4LGExLGEyLGEzLGE0LGE1LGE2LGE3LGE4KXt0cnl7cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paWlpaWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfaWlpaWkoaW5kZXgsYTEsYTIsYTMsYTQpe3RyeXtyZXR1cm4gTW9kdWxlWyJkeW5DYWxsX2lpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWlpaWkiXShpbmRleCxhMSxhMixhMyxhNCxhNSxhNixhNyxhOCl9Y2F0Y2goZSl7aWYodHlwZW9mIGUhPT0ibnVtYmVyIiYmZSE9PSJsb25nam1wIil0aHJvdyBlO2FzbVsic2V0VGhyZXciXSgxLDApfX1mdW5jdGlvbiBpbnZva2VfdmlpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSxhNil7dHJ5e01vZHVsZVsiZHluQ2FsbF92aWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUsYTYpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX2lpaShpbmRleCxhMSxhMil7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWlpIl0oaW5kZXgsYTEsYTIpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX2lpaWlpaShpbmRleCxhMSxhMixhMyxhNCxhNSl7dHJ5e3JldHVybiBNb2R1bGVbImR5bkNhbGxfaWlpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQsYTUpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gaW52b2tlX3ZpaWlpKGluZGV4LGExLGEyLGEzLGE0KXt0cnl7TW9kdWxlWyJkeW5DYWxsX3ZpaWlpIl0oaW5kZXgsYTEsYTIsYTMsYTQpfWNhdGNoKGUpe2lmKHR5cGVvZiBlIT09Im51bWJlciImJmUhPT0ibG9uZ2ptcCIpdGhyb3cgZTthc21bInNldFRocmV3Il0oMSwwKX19ZnVuY3Rpb24gYXNtUHJpbnRJbnQoeCx5KXtNb2R1bGUucHJpbnQoImludCAiK3grIiwiK3kpfWZ1bmN0aW9uIGFzbVByaW50RmxvYXQoeCx5KXtNb2R1bGUucHJpbnQoImZsb2F0ICIreCsiLCIreSl9dmFyIGFzbT0oZnVuY3Rpb24oZ2xvYmFsLGVudixidWZmZXIpIHsKLy8gRU1TQ1JJUFRFTl9TVEFSVF9BU00KInVzZSBhc20iO3ZhciBhPW5ldyBnbG9iYWwuSW50OEFycmF5KGJ1ZmZlcik7dmFyIGI9bmV3IGdsb2JhbC5JbnQxNkFycmF5KGJ1ZmZlcik7dmFyIGM9bmV3IGdsb2JhbC5JbnQzMkFycmF5KGJ1ZmZlcik7dmFyIGQ9bmV3IGdsb2JhbC5VaW50OEFycmF5KGJ1ZmZlcik7dmFyIGU9bmV3IGdsb2JhbC5VaW50MTZBcnJheShidWZmZXIpO3ZhciBmPW5ldyBnbG9iYWwuVWludDMyQXJyYXkoYnVmZmVyKTt2YXIgZz1uZXcgZ2xvYmFsLkZsb2F0MzJBcnJheShidWZmZXIpO3ZhciBoPW5ldyBnbG9iYWwuRmxvYXQ2NEFycmF5KGJ1ZmZlcik7dmFyIGk9ZW52LlNUQUNLVE9QfDA7dmFyIGo9ZW52LlNUQUNLX01BWHwwO3ZhciBrPWVudi50ZW1wRG91YmxlUHRyfDA7dmFyIGw9ZW52LkFCT1JUfDA7dmFyIG09ZW52LmN0dHpfaTh8MDt2YXIgbj1lbnYuY3Rsel9pOHwwO3ZhciBvPWVudi5fX1pUSVN0OWV4Y2VwdGlvbnwwO3ZhciBwPWVudi5fX19kc29faGFuZGxlfDA7dmFyIHE9ZW52Ll9zdGRlcnJ8MDt2YXIgcj1lbnYuX3N0ZGlufDA7dmFyIHM9ZW52Ll9zdGRvdXR8MDt2YXIgdD0wO3ZhciB1PTA7dmFyIHY9MDt2YXIgdz0wO3ZhciB4PStlbnYuTmFOLHk9K2Vudi5JbmZpbml0eTt2YXIgej0wLEE9MCxCPTAsQz0wLEQ9MC4wLEU9MCxGPTAsRz0wLEg9MC4wO3ZhciBJPTA7dmFyIEo9MDt2YXIgSz0wO3ZhciBMPTA7dmFyIE09MDt2YXIgTj0wO3ZhciBPPTA7dmFyIFA9MDt2YXIgUT0wO3ZhciBSPTA7dmFyIFM9Z2xvYmFsLk1hdGguZmxvb3I7dmFyIFQ9Z2xvYmFsLk1hdGguYWJzO3ZhciBVPWdsb2JhbC5NYXRoLnNxcnQ7dmFyIFY9Z2xvYmFsLk1hdGgucG93O3ZhciBXPWdsb2JhbC5NYXRoLmNvczt2YXIgWD1nbG9iYWwuTWF0aC5zaW47dmFyIFk9Z2xvYmFsLk1hdGgudGFuO3ZhciBaPWdsb2JhbC5NYXRoLmFjb3M7dmFyIF89Z2xvYmFsLk1hdGguYXNpbjt2YXIgJD1nbG9iYWwuTWF0aC5hdGFuO3ZhciBhYT1nbG9iYWwuTWF0aC5hdGFuMjt2YXIgYmE9Z2xvYmFsLk1hdGguZXhwO3ZhciBjYT1nbG9iYWwuTWF0aC5sb2c7dmFyIGRhPWdsb2JhbC5NYXRoLmNlaWw7dmFyIGVhPWdsb2JhbC5NYXRoLmltdWw7dmFyIGZhPWVudi5hYm9ydDt2YXIgZ2E9ZW52LmFzc2VydDt2YXIgaGE9ZW52LmFzbVByaW50SW50O3ZhciBpYT1lbnYuYXNtUHJpbnRGbG9hdDt2YXIgamE9ZW52Lm1pbjt2YXIga2E9ZW52LmpzQ2FsbDt2YXIgbGE9ZW52Lmludm9rZV9paWlpO3ZhciBtYT1lbnYuaW52b2tlX3ZpaWlpaWlpO3ZhciBuYT1lbnYuaW52b2tlX3ZpaWlpaTt2YXIgb2E9ZW52Lmludm9rZV9pO3ZhciBwYT1lbnYuaW52b2tlX3ZpO3ZhciBxYT1lbnYuaW52b2tlX3ZpaTt2YXIgcmE9ZW52Lmludm9rZV92aWlpaWlpaWlpO3ZhciBzYT1lbnYuaW52b2tlX2lpO3ZhciB0YT1lbnYuaW52b2tlX3ZpaWlpaWlkO3ZhciB1YT1lbnYuaW52b2tlX3ZpaWk7dmFyIHZhPWVudi5pbnZva2VfdmlpaWlpZDt2YXIgd2E9ZW52Lmludm9rZV92O3ZhciB4YT1lbnYuaW52b2tlX2lpaWlpaWlpaTt2YXIgeWE9ZW52Lmludm9rZV9paWlpaTt2YXIgemE9ZW52Lmludm9rZV92aWlpaWlpaWk7dmFyIEFhPWVudi5pbnZva2VfdmlpaWlpaTt2YXIgQmE9ZW52Lmludm9rZV9paWk7dmFyIENhPWVudi5pbnZva2VfaWlpaWlpO3ZhciBEYT1lbnYuaW52b2tlX3ZpaWlpO3ZhciBFYT1lbnYuX2ZhYnM7dmFyIEZhPWVudi5fc3NjYW5mO3ZhciBHYT1lbnYuX3B0aHJlYWRfY29uZF93YWl0O3ZhciBIYT1lbnYuX19fY3R5cGVfdG9sb3dlcl9sb2M7dmFyIElhPWVudi5fYXNwcmludGY7dmFyIEphPWVudi5fX2VtYmluZF9yZWdpc3Rlcl92b2lkO3ZhciBLYT1lbnYuX3NlbmQ7dmFyIExhPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldzt2YXIgTWE9ZW52Ll92c3NjYW5mO3ZhciBOYT1lbnYuX19fY3R5cGVfYl9sb2M7dmFyIE9hPWVudi5fX1pTdDl0ZXJtaW5hdGV2O3ZhciBQYT1lbnYuX2Ztb2Q7dmFyIFFhPWVudi5fX19jeGFfZ3VhcmRfYWNxdWlyZTt2YXIgUmE9ZW52Ll9fX3NldEVyck5vO3ZhciBTYT1lbnYuX19fY3hhX2lzX251bWJlcl90eXBlO3ZhciBUYT1lbnYuX19fZ3h4X3BlcnNvbmFsaXR5X3YwO3ZhciBVYT1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcjt2YXIgVmE9ZW52Ll91bmdldGM7dmFyIFdhPWVudi5fX19hc3NlcnRfZmFpbDt2YXIgWGE9ZW52Ll9fX2N4YV9hbGxvY2F0ZV9leGNlcHRpb247dmFyIFlhPWVudi5fX1pTdDE4dW5jYXVnaHRfZXhjZXB0aW9udjt2YXIgWmE9ZW52Ll9fX2N0eXBlX3RvdXBwZXJfbG9jO3ZhciBfYT1lbnYuX2ZmbHVzaDt2YXIgJGE9ZW52Ll9fX2N4YV9ndWFyZF9yZWxlYXNlO3ZhciBhYj1lbnYuX19hZGREYXlzO3ZhciBiYj1lbnYuX19fZXJybm9fbG9jYXRpb247dmFyIGNiPWVudi5fcHdyaXRlO3ZhciBkYj1lbnYuX3N0cmVycm9yX3I7dmFyIGViPWVudi5fc3RyZnRpbWVfbDt2YXIgZmI9ZW52Ll9fZm9ybWF0U3RyaW5nO3ZhciBnYj1lbnYuX19yZWFsbHlOZWdhdGl2ZTt2YXIgaGI9ZW52Ll9zYnJrO3ZhciBpYj1lbnYuX3VzZWxvY2FsZTt2YXIgamI9ZW52Ll9jYXRnZXRzO3ZhciBrYj1lbnYuX25ld2xvY2FsZTt2YXIgbGI9ZW52Ll9zbnByaW50Zjt2YXIgbWI9ZW52Ll9fX2N4YV9iZWdpbl9jYXRjaDt2YXIgbmI9ZW52Ll9lbXNjcmlwdGVuX21lbWNweV9iaWc7dmFyIG9iPWVudi5fZmlsZW5vO3ZhciBwYj1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfYm9vbDt2YXIgcWI9ZW52Ll9fX3Jlc3VtZUV4Y2VwdGlvbjt2YXIgcmI9ZW52Ll9fX2N4YV9maW5kX21hdGNoaW5nX2NhdGNoO3ZhciBzYj1lbnYuX3N5c2NvbmY7dmFyIHRiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nO3ZhciB1Yj1lbnYuX3N0cmZ0aW1lO3ZhciB2Yj1lbnYuX19hcnJheVN1bTt2YXIgd2I9ZW52Ll9fX2N4YV90aHJvdzt2YXIgeGI9ZW52Ll9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsO3ZhciB5Yj1lbnYuX19leGl0O3ZhciB6Yj1lbnYuX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfZnVuY3Rpb247dmFyIEFiPWVudi5fX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXY7dmFyIEJiPWVudi5fcHRocmVhZF9tdXRleF9kZXN0cm95O3ZhciBDYj1lbnYuX3B0aHJlYWRfbXV0ZXhfdW5sb2NrO3ZhciBEYj1lbnYuX2ZyZWFkO3ZhciBFYj1lbnYuX3B0aHJlYWRfY29uZF9icm9hZGNhc3Q7dmFyIEZiPWVudi5fbWtwb3J0O3ZhciBHYj1lbnYuX3NwcmludGY7dmFyIEhiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9jbGFzczt2YXIgSWI9ZW52Ll92YXNwcmludGY7dmFyIEpiPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZzt2YXIgS2I9ZW52Ll93cml0ZTt2YXIgTGI9ZW52Ll9faXNMZWFwWWVhcjt2YXIgTWI9ZW52Ll9fc2NhblN0cmluZzt2YXIgTmI9ZW52Ll9zdHJlcnJvcjt2YXIgT2I9ZW52Ll9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yO3ZhciBQYj1lbnYuX3JlY3Y7dmFyIFFiPWVudi5fdnNucHJpbnRmO3ZhciBSYj1lbnYuX19aTlN0OWV4Y2VwdGlvbkQyRXY7dmFyIFNiPWVudi5fY29weXNpZ247dmFyIFRiPWVudi5fZmdldGM7dmFyIFViPWVudi5fX19jeGFfZG9lc19pbmhlcml0O3ZhciBWYj1lbnYuX2ZyZWVsb2NhbGU7dmFyIFdiPWVudi5fcmVhZDt2YXIgWGI9ZW52Ll9hYm9ydDt2YXIgWWI9ZW52Ll9jYXRjbG9zZTt2YXIgWmI9ZW52Ll9md3JpdGU7dmFyIF9iPWVudi5fdGltZTt2YXIgJGI9ZW52Ll9wdGhyZWFkX211dGV4X2xvY2s7dmFyIGFjPWVudi5fX2VtYmluZF9yZWdpc3Rlcl9mbG9hdDt2YXIgYmM9ZW52Ll9wcmVhZDt2YXIgY2M9ZW52Ll9hdGV4aXQ7dmFyIGRjPWVudi5fY2F0b3Blbjt2YXIgZWM9ZW52Ll9leGl0O3ZhciBmYz1lbnYuX19nZXRGbG9hdDt2YXIgZ2M9MC4wOwovLyBFTVNDUklQVEVOX1NUQVJUX0ZVTkNTCmZ1bmN0aW9uIEFjKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2k9aSthfDA7aT1pKzcmLTg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBCYygpe3JldHVybiBpfDB9ZnVuY3Rpb24gQ2MoYSl7YT1hfDA7aT1hfWZ1bmN0aW9uIERjKGEsYil7YT1hfDA7Yj1ifDA7aWYoKHR8MCk9PTApe3Q9YTt1PWJ9fWZ1bmN0aW9uIEVjKGIpe2I9YnwwO2Fbaz4+MF09YVtiPj4wXTthW2srMT4+MF09YVtiKzE+PjBdO2FbaysyPj4wXT1hW2IrMj4+MF07YVtrKzM+PjBdPWFbYiszPj4wXX1mdW5jdGlvbiBGYyhiKXtiPWJ8MDthW2s+PjBdPWFbYj4+MF07YVtrKzE+PjBdPWFbYisxPj4wXTthW2srMj4+MF09YVtiKzI+PjBdO2FbayszPj4wXT1hW2IrMz4+MF07YVtrKzQ+PjBdPWFbYis0Pj4wXTthW2srNT4+MF09YVtiKzU+PjBdO2Fbays2Pj4wXT1hW2IrNj4+MF07YVtrKzc+PjBdPWFbYis3Pj4wXX1mdW5jdGlvbiBHYyhhKXthPWF8MDtJPWF9ZnVuY3Rpb24gSGMoKXtyZXR1cm4gSXwwfWZ1bmN0aW9uIEljKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtmPWk7aT1pKzE2fDA7bT1mO2w9U2MoamgoU2MoODM1Miw1MTY4KXwwLGUpfDAsNTE4NCl8MDtqPWNbbCsoKGNbKGNbbD4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO2g9ais0fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1ttPj4yXT0xMzQ1NjtjW20rND4+Ml09MjA4O2NbbSs4Pj4yXT0wO2NnKDEzNDU2LG0pfW09KGNbMTM0NjA+PjJdfDApKyAtMXwwO249Y1tqKzg+PjJdfDA7aWYoKGNbaisxMj4+Ml18MCktbj4+Mj4+PjA+bT4+PjA/KGs9Y1tuKyhtPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywxMCl8MDtuPWNbaD4+Ml18MDtjW2g+PjJdPW4rIC0xO2lmKChufDApPT0wKXtsY1tjWyhjW2o+PjJdfDApKzg+PjJdJjI1NV0oail9bGgobCxrKTtZZyhsKTt3aGlsZSgxKXtoPXVuKDIwKXwwO2lmKChofDApIT0wKXticmVha31oPWNbNTY2Nl18MDtjWzU2NjZdPWgrMDtpZigoaHwwKT09MCl7Zz0xNDticmVha31zY1toJjMxXSgpfWlmKChnfDApPT0xNCl7bj1YYSg0KXwwO2Nbbj4+Ml09MjI2ODA7d2IobnwwLDIyNzI4LDIwNil9Y1toPj4yXT1kO2NbaCs0Pj4yXT1lO2NbaCs4Pj4yXT0wO2FbaCsxMj4+MF09MDthW2grMTM+PjBdPTA7Y1toKzE2Pj4yXT0wO3doaWxlKDEpe2Q9dW4oMTYpfDA7aWYoKGR8MCkhPTApe2JyZWFrfWU9Y1s1NjY2XXwwO2NbNTY2Nl09ZSswO2lmKChlfDApPT0wKXtnPTIwO2JyZWFrfXNjW2UmMzFdKCl9aWYoKGd8MCk9PTIwKXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1jW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2Q+PjJdPTc0MDg7Y1tkKzEyPj4yXT1oO2NbYj4+Ml09aDtuPWIrNHwwO2U9Y1tuPj4yXXwwO2Nbbj4+Ml09ZDtpZigoZXwwKSE9MCl7bT1lKzR8MDtuPWNbbT4+Ml18MDtjW20+PjJdPW4rIC0xO2lmKChufDApPT0wPyhsY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSksbT1lKzh8MCxuPWNbbT4+Ml18MCxjW20+PjJdPW4rIC0xLChufDApPT0wKTowKXtsY1tjWyhjW2U+PjJdfDApKzE2Pj4yXSYyNTVdKGUpfWg9Y1tiPj4yXXwwfXdoaWxlKDEpe2U9dW4oMzUyKXwwO2lmKChlfDApIT0wKXticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7Zz0zMTticmVha31zY1tlJjMxXSgpfWlmKChnfDApPT0zMSl7bj1YYSg0KXwwO2Nbbj4+Ml09MjI2ODA7d2IobnwwLDIyNzI4LDIwNil9Y1tlPj4yXT1oO2NbZSs0Pj4yXT1oO2NbZSs4Pj4yXT0wO2NbZSsxMj4+Ml09MDtqPXVuKDEwNDg2NDQpfDA7aD1qKzY4Ji02NDtjW2grIC00Pj4yXT1qO2NbZSsxNj4+Ml09aDtoPWUrMjc5fDA7YVtoPj4wXT0wO2FbaCsxPj4wXT0wO2g9ZSsyODF8MDthW2g+PjBdPTA7YVtoKzE+PjBdPTA7YVtoKzI+PjBdPTA7YVtoKzM+PjBdPTA7aD1lKzM0NHwwO2o9ZSsyODh8MDtkPWorNTZ8MDtkb3tjW2o+PjJdPTA7aj1qKzR8MH13aGlsZSgoanwwKTwoZHwwKSk7bj1oO2Nbbj4+Ml09LTE7Y1tuKzQ+PjJdPS0xO29lKGUpO3doaWxlKDEpe2Q9dW4oMTYpfDA7aWYoKGR8MCkhPTApe2JyZWFrfWQ9Y1s1NjY2XXwwO2NbNTY2Nl09ZCswO2lmKChkfDApPT0wKXtnPTM3O2JyZWFrfXNjW2QmMzFdKCl9aWYoKGd8MCk9PTM3KXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1jW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2Q+PjJdPTcxMjg7Y1tkKzEyPj4yXT1lO2NbYis4Pj4yXT1lO249YisxMnwwO2c9Y1tuPj4yXXwwO2Nbbj4+Ml09ZDtpZigoZ3wwKT09MCl7aT1mO3JldHVybn1tPWcrNHwwO249Y1ttPj4yXXwwO2NbbT4+Ml09bisgLTE7aWYoKG58MCkhPTApe2k9ZjtyZXR1cm59bGNbY1soY1tnPj4yXXwwKSs4Pj4yXSYyNTVdKGcpO209Zys4fDA7bj1jW20+PjJdfDA7Y1ttPj4yXT1uKyAtMTtpZigobnwwKSE9MCl7aT1mO3JldHVybn1sY1tjWyhjW2c+PjJdfDApKzE2Pj4yXSYyNTVdKGcpO2k9ZjtyZXR1cm59bj1YYSg0KXwwO2Nbbj4+Ml09MjEzMDQ7d2IobnwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gSmMoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7aD1pO2k9aSsxNzZ8MDtnPWg7az1oKzMyfDA7aj1oKzI0fDA7Zj1oKzEyfDA7Yj1jW2IrOD4+Ml18MDttPWIrMzM2fDA7Qj1tO0M9YisyNTl8MDtsPWIrMzIwfDA7aWYoKCEoKGNbQis0Pj4yXXwwKT09MD8oY1tCPj4yXXwwKT09KGRbQz4+MF18ZFtDKzE+PjBdPDw4fGRbQysyPj4wXTw8MTZ8ZFtDKzM+PjBdPDwyNHwwKTowKT8obj1jW2w+PjJdfDAsKG58MCkhPTApOjApPyhjW2IrMzEyPj4yXXwwKSE9MDowKXt6PW47Qj1jW3o+PjJdfDA7Qj1jW0I+PjJdfDA7bWNbQiYxMjddKHosZSk7ej1tO0I9ejtCPWNbQj4+Ml18MDt6PXorNHwwO3o9Y1t6Pj4yXXwwO3o9SW4oQnwwLHp8MCwxLDApfDA7Qj1JO0M9bTtBPUM7Y1tBPj4yXT16O0M9Qys0fDA7Y1tDPj4yXT1CO2k9aDtyZXR1cm59Y1tsPj4yXT0wO249YiszMjR8MDtwPWNbbj4+Ml18MDtjW24+PjJdPTA7aWYoKChwfDApIT0wPyhCPXArNHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApPyhsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCksQj1wKzh8MCxDPWNbQj4+Ml18MCxjW0I+PjJdPUMrIC0xLChDfDApPT0wKTowKXtsY1tjWyhjW3A+PjJdfDApKzE2Pj4yXSYyNTVdKHApfXM9YiszMTJ8MDtjW3M+PjJdPTA7cj1iKzMxNnwwO3A9Y1tyPj4yXXwwO2Nbcj4+Ml09MDtpZigoKHB8MCkhPTA/KEI9cCs0fDAsQz1jW0I+PjJdfDAsY1tCPj4yXT1DKyAtMSwoQ3wwKT09MCk6MCk/KGxjW2NbKGNbcD4+Ml18MCkrOD4+Ml0mMjU1XShwKSxCPXArOHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApe2xjW2NbKGNbcD4+Ml18MCkrMTY+PjJdJjI1NV0ocCl9d2hpbGUoMSl7cD11bigxMil8MDtpZigocHwwKSE9MCl7YnJlYWt9cD1jWzU2NjZdfDA7Y1s1NjY2XT1wKzA7aWYoKHB8MCk9PTApe289MTU7YnJlYWt9c2NbcCYzMV0oKX1pZigob3wwKT09MTUpe0M9WGEoNCl8MDtjW0M+PjJdPTIyNjgwO3diKEN8MCwyMjcyOCwyMDYpfWNbcD4+Ml09Yis0O2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0tMTt3aGlsZSgxKXt0PXVuKDE2KXwwO2lmKCh0fDApIT0wKXticmVha310PWNbNTY2Nl18MDtjWzU2NjZdPXQrMDtpZigodHwwKT09MCl7bz0yMTticmVha31zY1t0JjMxXSgpfWlmKChvfDApPT0yMSl7Qz1YYSg0KXwwO2NbQz4+Ml09MjI2ODA7d2IoQ3wwLDIyNzI4LDIwNil9Y1t0KzQ+PjJdPTA7Y1t0Kzg+PjJdPTA7Y1t0Pj4yXT00ODQwO2NbdCsxMj4+Ml09cDtjW3M+PjJdPXA7dT1jW3I+PjJdfDA7Y1tyPj4yXT10O2lmKCh1fDApIT0wKXtCPXUrNHwwO0M9Y1tCPj4yXXwwO2NbQj4+Ml09QysgLTE7aWYoKEN8MCk9PTA/KGxjW2NbKGNbdT4+Ml18MCkrOD4+Ml0mMjU1XSh1KSxCPXUrOHwwLEM9Y1tCPj4yXXwwLGNbQj4+Ml09QysgLTEsKEN8MCk9PTApOjApe2xjW2NbKGNbdT4+Ml18MCkrMTY+PjJdJjI1NV0odSl9cD1jW3M+PjJdfDB9eT1rKzY0fDA7cz1rKzh8MDtjW3M+PjJdPTQ1MjA7dT1rKzEyfDA7Y1trPj4yXT00NjUyO2NbeT4+Ml09NDY3MjtjW2srND4+Ml09MDtyPWsrNjR8MDtjW2srODg+PjJdPXU7Y1trKzgwPj4yXT0wO2Nbays4ND4+Ml09MDtjW2srNjg+PjJdPTQwOTg7Y1trKzc2Pj4yXT0wO2Nbays3Mj4+Ml09Njt4PWsrOTJ8MDt0PWsrOTZ8MDt3PXQrNDB8MDtkb3tjW3Q+PjJdPTA7dD10KzR8MH13aGlsZSgodHwwKTwod3wwKSk7WGsoeCk7Y1trKzEzNj4+Ml09MDtjW2srMTQwPj4yXT0tMTtjW2s+PjJdPTQ1MDA7Y1t5Pj4yXT00NTQwO2Nbcz4+Ml09NDUyMDtjW3U+PjJdPTEwNjY0O3Q9aysxNnwwO1hrKHQpO3g9aysyMHwwO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbeCsxMj4+Ml09MDtjW3grMTY+PjJdPTA7Y1t4KzIwPj4yXT0wO2NbdT4+Ml09NDY4ODt1PWsrNDR8MDt5PWsrNjB8MDtjW3UrMD4+Ml09MDtjW3UrND4+Ml09MDtjW3UrOD4+Ml09MDtjW3UrMTI+PjJdPTA7Y1t5Pj4yXT0yNDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDthW3UrMT4+MF09MDtpZigoYVt1Pj4wXSYxKT09MCl7YVt1Pj4wXT0wfWVsc2V7Y1trKzQ4Pj4yXT0wfXc9ays1NnwwO2Nbdz4+Ml09MDt6PWFbdT4+MF18MDtpZigoeiYxKT09MCl7QT11KygoeiYyNTUpPj4+MSkrMXwwO2Nbdz4+Ml09QTt6PXUrMXwwfWVsc2V7ej1jW2srNTI+PjJdfDA7QT16KyhjW2srNDg+PjJdfDApfDA7Y1t3Pj4yXT1BfWNbeD4+Ml09ejtjW2srMjQ+PjJdPXo7Y1trKzI4Pj4yXT1BO0M9YVt1Pj4wXXwwO2lmKChDJjEpPT0wKXt6PShDJjI1NSk+Pj4xO2Nbdz4+Ml09dSt6KzE7QT0xMH1lbHNle3o9Y1trKzQ4Pj4yXXwwO2Nbdz4+Ml09KGNbays1Mj4+Ml18MCkrejtBPWNbdT4+Ml18MDtDPUEmMjU1O0E9KEEmLTIpKyAtMXwwfUI9KEMmMSk9PTA7aWYoQil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1trKzQ4Pj4yXXwwfWRve2lmKCEoQz4+PjA8QT4+PjApKXtpZihCKXthW3UrQSsxPj4wXT0wO2FbdT4+MF09QTw8MTticmVha31lbHNle2FbKGNbays1Mj4+Ml18MCkrQT4+MF09MDtjW2srNDg+PjJdPUE7YnJlYWt9fWVsc2V7aGcodSxBLUN8MCl9fXdoaWxlKDApO0I9YVt1Pj4wXXwwO2lmKChCJjEpPT0wKXtBPXUrMXwwO0I9KEImMjU1KT4+PjF9ZWxzZXtBPWNbays1Mj4+Ml18MDtCPWNbays0OD4+Ml18MH1DPWsrMzZ8MDtjW0M+PjJdPUE7Y1trKzMyPj4yXT1BO2Nbays0MD4+Ml09QStCO2lmKChjW3k+PjJdJjN8MCkhPTApe2NbQz4+Ml09QSt6fWlmKCEoKGFbZz4+MF0mMSk9PTApPyh2PWNbZys4Pj4yXXwwLCh2fDApIT0wKTowKXt2bih2KX1BPWNbYiszMDA+PjJdfDA7dj1jW2IrMzA0Pj4yXXwwO2lmKChBfDApIT0odnwwKSl7ej1rKzh8MDtkb3tCPWNbQT4+Ml18MDtDPWNbQSs0Pj4yXXwwO0Q9Y1tBKzg+PjJdfDA7aWgoU2MoaWgoU2MoaWgoU2Moeiw0NDY0KXwwLEQpfDAsNDQ3Mil8MCxCKXwwLDQ0ODApfDAsQyl8MDtBPUErMTJ8MH13aGlsZSgoQXwwKSE9KHZ8MCkpfXY9Y1t5Pj4yXXwwO2Rve2lmKCh2JjE2fDApPT0wKXtpZigodiY4fDApPT0wKXtjW2YrMD4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDticmVha314PWNbeD4+Ml18MDt3PWNbaysyOD4+Ml18MDt2PXg7QT13LXZ8MDtpZihBPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWRve2lmKEE+Pj4wPDExKXthW2Y+PjBdPUE8PDE7Qj1mKzF8MH1lbHNle3o9QSsxNiYtMTY7eT0oenwwKT09MD8xOno7d2hpbGUoMSl7Qj11bih5KXwwO2lmKChCfDApIT0wKXtvPTkzO2JyZWFrfUI9Y1s1NjY2XXwwO2NbNTY2Nl09QiswO2lmKChCfDApPT0wKXticmVha31zY1tCJjMxXSgpfWlmKChvfDApPT05Myl7Y1tmKzg+PjJdPUI7Y1tmPj4yXT16fDE7Y1tmKzQ+PjJdPUE7YnJlYWt9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKCh4fDApIT0od3wwKSl7bz1CO3doaWxlKDEpe2Fbbz4+MF09YVt4Pj4wXXwwO3g9eCsxfDA7aWYoKHh8MCk9PSh3fDApKXticmVha31lbHNle289bysxfDB9fUI9QisodysoMC12KSl8MH1hW0I+PjBdPTB9ZWxzZXt4PWNbdz4+Ml18MDt2PWNbayszNj4+Ml18MDtpZih4Pj4+MDx2Pj4+MCl7Y1t3Pj4yXT12fWVsc2V7dj14fXg9Y1trKzMyPj4yXXwwO3c9eDt6PXYtd3wwO2lmKHo+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoej4+PjA8MTEpe2FbZj4+MF09ejw8MTtCPWYrMXwwfWVsc2V7eT16KzE2Ji0xNjtBPSh5fDApPT0wPzE6eTt3aGlsZSgxKXtCPXVuKEEpfDA7aWYoKEJ8MCkhPTApe289NzY7YnJlYWt9Qj1jWzU2NjZdfDA7Y1s1NjY2XT1CKzA7aWYoKEJ8MCk9PTApe2JyZWFrfXNjW0ImMzFdKCl9aWYoKG98MCk9PTc2KXtjW2YrOD4+Ml09QjtjW2Y+PjJdPXl8MTtjW2YrND4+Ml09ejticmVha31EPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKHh8MCkhPSh2fDApKXtvPUI7d2hpbGUoMSl7YVtvPj4wXT1hW3g+PjBdfDA7eD14KzF8MDtpZigoeHwwKT09KHZ8MCkpe2JyZWFrfWVsc2V7bz1vKzF8MH19Qj1CKyh2KygwLXcpKXwwfWFbQj4+MF09MH19d2hpbGUoMCk7Y1trPj4yXT00NTAwO2Nbays2ND4+Ml09NDU0MDtjW3M+PjJdPTQ1MjA7bz1rKzEyfDA7Y1tvPj4yXT00Njg4O2lmKCEoKGFbdT4+MF0mMSk9PTApPyhxPWNbays1Mj4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9Y1tvPj4yXT0xMDY2NDtvPWNbdD4+Ml18MDtDPW8rNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1yZyhyKTtxPWFbZj4+MF18MDtyPShxJjEpPT0wO2lmKHIpe3Q9KHEmMjU1KT4+PjE7dj1mKzF8MH1lbHNle3Q9Y1tmKzQ+PjJdfDA7dj1jW2YrOD4+Ml18MH1zPXQ+Pj4wPjc7bz1zPzc6dDthOmRve2lmKChvfDApPT0wKXtvPTExMH1lbHNle3U9MTkyO3doaWxlKDEpe2lmKChhW3Y+PjBdfDApIT0oYVt1Pj4wXXwwKSl7bz0xMzA7YnJlYWsgYX1vPW8rIC0xfDA7aWYoKG98MCk9PTApe289MTEwO2JyZWFrfWVsc2V7dj12KzF8MDt1PXUrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xMTApe2lmKHQ+Pj4wPjYmKHNeMSkpe3doaWxlKDEpe2o9dW4oNDc4OCl8MDtpZigoanwwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe289MTE0O2JyZWFrfXNjW2cmMzFdKCl9aWYoKG98MCk9PTExNCl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZmQoaik7YVtqKzQ3ODQ+PjBdPTE7d2hpbGUoMSl7Zz11bigxMil8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe289MTIxO2JyZWFrfXNjW2cmMzFdKCl9aWYoKG98MCk9PTEyMSl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9Y1tnPj4yXT0zNjA4O2NbZys0Pj4yXT1wO2NbZys4Pj4yXT1qO3doaWxlKDEpe2o9dW4oMTYpfDA7aWYoKGp8MCkhPTApe289MTI5O2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXticmVha31zY1tqJjMxXSgpfWlmKChvfDApPT0xMjkpe2Nbais0Pj4yXT0wO2Nbais4Pj4yXT0wO2Nbaj4+Ml09Mzg3MjtjW2orMTI+PjJdPWc7YnJlYWt9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZWxzZXtvPTEzMH19fXdoaWxlKDApO2I6ZG97aWYoKG98MCk9PTEzMCl7aWYocil7dD0ocSYyNTUpPj4+MTt3PWYrMXwwfWVsc2V7dD1jW2YrND4+Ml18MDt3PWNbZis4Pj4yXXwwfXM9dD4+PjA+MTM7dT1zPzEzOnQ7Yzpkb3tpZigodXwwKT09MCl7bz0xMzZ9ZWxzZXt2PTIwMDt3aGlsZSgxKXtpZigoYVt3Pj4wXXwwKSE9KGFbdj4+MF18MCkpe2JyZWFrIGN9dT11KyAtMXwwO2lmKCh1fDApPT0wKXtvPTEzNjticmVha31lbHNle3c9dysxfDA7dj12KzF8MH19fX13aGlsZSgwKTtkb3tpZigob3wwKT09MTM2KXtpZighKHQ+Pj4wPjEyJihzXjEpKSl7YnJlYWt9d2hpbGUoMSl7aj11big1MTE2KXwwO2lmKChqfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNDA7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTQwKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1mZChqKTtlZChqKzQ3ODR8MCk7Y1tqKzQ5NTI+PjJdPTMyO2Nbais0OTU2Pj4yXT05O2Nbais0OTYwPj4yXT04O2Nbais0OTY0Pj4yXT0wO2Nbais0OTg0Pj4yXT0wO2Nbais0OTg4Pj4yXT0wO2Nbais0OTkyPj4yXT0wO2Nbais1MDA4Pj4yXT0xO2Nbais1MDEyPj4yXT0yO2Nbais1MDA0Pj4yXT00MDk2O2Nbais1ZTM+PjJdPTQ7Y1tqKzQ5OTY+PjJdPTQ7Y1tqKzUwMTY+PjJdPTA7Y1tqKzUwMjA+PjJdPTA7Y1tqKzUwMjQ+PjJdPTA7Y1tqKzQ5Njg+PjJdPTMyO2Nbais0OTcyPj4yXT0wO2Nbais0OTc2Pj4yXT0tMjE0NzQ4MzY0ODtjW2orNDk4MD4+Ml09MjE0NzQ4MzY0NztjW2orNDk0OD4+Ml09MDtjW2orNTAzMj4+Ml09MzI7Y1tqKzUwMzY+PjJdPTk7Y1tqKzUwNDA+PjJdPTg7Y1tqKzUwNDQ+PjJdPTA7Y1tqKzUwNjQ+PjJdPTA7Y1tqKzUwNjg+PjJdPTA7Y1tqKzUwNzI+PjJdPTA7Y1tqKzUwODg+PjJdPTE7Y1tqKzUwOTI+PjJdPTI7Y1tqKzUwODQ+PjJdPTQwOTY7Y1tqKzUwODA+PjJdPTQ7Y1tqKzUwNzY+PjJdPTQ7Y1tqKzUwOTY+PjJdPTA7Y1tqKzUxMDA+PjJdPTA7Y1tqKzUxMDQ+PjJdPTA7Y1tqKzUwNDg+PjJdPTMyO2Nbais1MDUyPj4yXT0wO2Nbais1MDU2Pj4yXT0tMjE0NzQ4MzY0ODtjW2orNTA2MD4+Ml09MjE0NzQ4MzY0NztjW2orNTAyOD4+Ml09MDthW2orNTEwOD4+MF09MDthW2orNTEwOT4+MF09MDthW2orNTExMj4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNDg7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTQ4KXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTI2NjQ7Y1tnKzQ+PjJdPXA7Y1tnKzg+PjJdPWo7d2hpbGUoMSl7aj11bigxNil8MDtpZigoanwwKSE9MCl7bz0xNTY7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKG98MCk9PTE1Nil7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7Y1tqPj4yXT0yOTUyO2NbaisxMj4+Ml09ZzticmVhayBifUQ9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihyKXt0PShxJjI1NSk+Pj4xO3Y9ZisxfDB9ZWxzZXt0PWNbZis0Pj4yXXwwO3Y9Y1tmKzg+PjJdfDB9cz10Pj4+MD4xMzt1PXM/MTM6dDtkOmRve2lmKCh1fDApPT0wKXtvPTE2M31lbHNle3c9MjE2O3doaWxlKDEpe2lmKChhW3Y+PjBdfDApIT0oYVt3Pj4wXXwwKSl7YnJlYWsgZH11PXUrIC0xfDA7aWYoKHV8MCk9PTApe289MTYzO2JyZWFrfWVsc2V7dj12KzF8MDt3PXcrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xNjMpe2lmKCEodD4+PjA+MTImKHNeMSkpKXticmVha313aGlsZSgxKXtqPXVuKDUxMDQpfDA7aWYoKGp8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtvPTE2NzticmVha31zY1tnJjMxXSgpfWlmKChvfDApPT0xNjcpe0Q9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfWZkKGopO2JkKGorNDc4NHwwKTthW2orNTEwMD4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0xNzU7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MTc1KXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTE3MjA7Y1tnKzQ+PjJdPXA7Y1tnKzg+PjJdPWo7d2hpbGUoMSl7aj11bigxNil8MDtpZigoanwwKSE9MCl7bz0xODM7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKG98MCk9PTE4Myl7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7Y1tqPj4yXT0yMDA4O2NbaisxMj4+Ml09ZzticmVhayBifUQ9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihyKXtyPShxJjI1NSk+Pj4xO3Q9ZisxfDB9ZWxzZXtyPWNbZis0Pj4yXXwwO3Q9Y1tmKzg+PjJdfDB9cT1yPj4+MD4xOTtzPXE/MTk6cjtlOmRve2lmKChzfDApPT0wKXtvPTE5MH1lbHNle3U9MjMyO3doaWxlKDEpe2lmKChhW3Q+PjBdfDApIT0oYVt1Pj4wXXwwKSl7YnJlYWsgZX1zPXMrIC0xfDA7aWYoKHN8MCk9PTApe289MTkwO2JyZWFrfWVsc2V7dD10KzF8MDt1PXUrMXwwfX19fXdoaWxlKDApO2Rve2lmKChvfDApPT0xOTApe2lmKCEocj4+PjA+MTgmKHFeMSkpKXticmVha313aGlsZSgxKXtqPXVuKDU0MzIpfDA7aWYoKGp8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtvPTE5NDticmVha31zY1tnJjMxXSgpfWlmKChvfDApPT0xOTQpe0Q9WGEoNCl8MDtjW0Q+PjJdPTIyNjgwO3diKER8MCwyMjcyOCwyMDYpfWZkKGopO2VkKGorNDc4NHwwKTtjW2orNDk1Mj4+Ml09MzI7Y1tqKzQ5NTY+PjJdPTk7Y1tqKzQ5NjA+PjJdPTg7Y1tqKzQ5NjQ+PjJdPTA7Y1tqKzQ5ODQ+PjJdPTA7Y1tqKzQ5ODg+PjJdPTA7Y1tqKzQ5OTI+PjJdPTA7Y1tqKzUwMDg+PjJdPTE7Y1tqKzUwMTI+PjJdPTI7Y1tqKzUwMDQ+PjJdPTQwOTY7Y1tqKzVlMz4+Ml09NDtjW2orNDk5Nj4+Ml09NDtjW2orNTAxNj4+Ml09MDtjW2orNTAyMD4+Ml09MDtjW2orNTAyND4+Ml09MDtjW2orNDk2OD4+Ml09MzI7Y1tqKzQ5NzI+PjJdPTA7Y1tqKzQ5NzY+PjJdPS0yMTQ3NDgzNjQ4O2Nbais0OTgwPj4yXT0yMTQ3NDgzNjQ3O2Nbais0OTQ4Pj4yXT0wO2Nbais1MDMyPj4yXT0zMjtjW2orNTAzNj4+Ml09OTtjW2orNTA0MD4+Ml09ODtjW2orNTA0ND4+Ml09MDtjW2orNTA2ND4+Ml09MDtjW2orNTA2OD4+Ml09MDtjW2orNTA3Mj4+Ml09MDtjW2orNTA4OD4+Ml09MTtjW2orNTA5Mj4+Ml09MjtjW2orNTA4ND4+Ml09NDA5NjtjW2orNTA4MD4+Ml09NDtjW2orNTA3Nj4+Ml09NDtjW2orNTA5Nj4+Ml09MDtjW2orNTEwMD4+Ml09MDtjW2orNTEwND4+Ml09MDtjW2orNTA0OD4+Ml09MzI7Y1tqKzUwNTI+PjJdPTA7Y1tqKzUwNTY+PjJdPS0yMTQ3NDgzNjQ4O2Nbais1MDYwPj4yXT0yMTQ3NDgzNjQ3O2Nbais1MDI4Pj4yXT0wO2Fbais1MTA4Pj4wXT0wO2Fbais1MTA5Pj4wXT0wO2JkKGorNTExMnwwKTthW2orNTQyOD4+MF09MTt3aGlsZSgxKXtnPXVuKDEyKXwwO2lmKChnfDApIT0wKXticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0yMDM7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MjAzKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1jW2c+PjJdPTQyNDtjW2crND4+Ml09cDtjW2crOD4+Ml09ajt3aGlsZSgxKXtqPXVuKDE2KXwwO2lmKChqfDApIT0wKXtvPTIxMTticmVha31qPWNbNTY2Nl18MDtjWzU2NjZdPWorMDtpZigoanwwKT09MCl7YnJlYWt9c2NbaiYzMV0oKX1pZigob3wwKT09MjExKXtjW2orND4+Ml09MDtjW2orOD4+Ml09MDtjW2o+PjJdPTEwMDg7Y1tqKzEyPj4yXT1nO2JyZWFrIGJ9RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2g9U2MoODM1MiwyNTYpfDA7YVtrPj4wXT0wO2Nbays0Pj4yXT1oO2U9Y1soY1toPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2grKGUrMTYpPj4yXXwwKT09MCl7ZT1jW2grKGUrNzIpPj4yXXwwO2lmKChlfDApIT0wKXtZZyhlKX1hW2s+PjBdPTE7ZT1hW2Y+PjBdfDA7ZG97aWYoKGUmMSk9PTApe289KGUmMjU1KT4+PjE7bT1jWyhjW2g+PjJdfDApKyAtMTI+PjJdfDA7bD1jW2grKG0rMjQpPj4yXXwwO249ZisxfDA7aWYoKGNbaCsobSs0KT4+Ml0mMTc2fDApIT0zMil7ZT1uO2I9bzticmVha31lPW47Yj1vO249ZitvKzF8MH1lbHNle249Y1tmKzQ+PjJdfDA7bT1jWyhjW2g+PjJdfDApKyAtMTI+PjJdfDA7bD1jW2grKG0rMjQpPj4yXXwwO2Y9Y1tmKzg+PjJdfDA7aWYoKGNbaCsobSs0KT4+Ml0mMTc2fDApIT0zMil7ZT1mO2I9bjtuPWY7YnJlYWt9ZT1mO2I9bjtuPWYrbnwwfX13aGlsZSgwKTtmPWgrbXwwO289aCsobSs3Nil8MDtwPWNbbz4+Ml18MDtmOmRve2lmKChwfDApPT0tMSl7cD1jW2grKG0rMjgpPj4yXXwwO209cCs0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tnPj4yXT0xMzQ1NjtjW2crND4+Ml09MjA4O2NbZys4Pj4yXT0wO2NnKDEzNDU2LGcpfXE9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3I9Y1twKzg+PjJdfDA7ZG97aWYoKGNbcCsxMj4+Ml18MCktcj4+Mj4+PjA+cT4+PjApe3E9Y1tyKyhxPDwyKT4+Ml18MDtpZigocXwwKT09MCl7YnJlYWt9cT14Y1tjWyhjW3E+PjJdfDApKzI4Pj4yXSY2M10ocSwzMil8MDtEPWNbbT4+Ml18MDtjW20+PjJdPUQrIC0xO2lmKChEfDApPT0wKXtsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCl9cD1xPDwyND4+MjQ7Y1tvPj4yXT1wO2JyZWFrIGZ9fXdoaWxlKDApO0Q9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtXYyhqLGwsZSxuLGUrYnwwLGYscCYyNTUpO2lmKChjW2o+PjJdfDApIT0wKXticmVha31EPWNbKGNbaD4+Ml18MCkrIC0xMj4+Ml18MDtxZyhoK0R8MCxjW2grKEQrMTYpPj4yXXw1KX19d2hpbGUoMCk7Z2goayk7Zj1jW2grKChjWyhjW2g+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtlPWYrNHwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZz4+Ml09MTM0NTY7Y1tnKzQ+PjJdPTIwODtjW2crOD4+Ml09MDtjZygxMzQ1NixnKX1qPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtnPWNbZis4Pj4yXXwwO2Rve2lmKChjW2YrMTI+PjJdfDApLWc+PjI+Pj4wPmo+Pj4wKXtnPWNbZysoajw8Mik+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWc9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcsMTApfDA7RD1jW2U+PjJdfDA7Y1tlPj4yXT1EKyAtMTtpZigoRHwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfWxoKGgsZyk7WWcoaCk7Zj1YYSg4KXwwO2NbZj4+Ml09OTkyODt3aGlsZSgxKXtnPXVuKDQ1KXwwO2lmKChnfDApIT0wKXtvPTI1MzticmVha31nPWNbNTY2Nl18MDtjWzU2NjZdPWcrMDtpZigoZ3wwKT09MCl7bz0yNTE7YnJlYWt9c2NbZyYzMV0oKX1pZigob3wwKT09MjUxKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1lbHNlIGlmKChvfDApPT0yNTMpe2NbZys0Pj4yXT0zMjtjW2c+PjJdPTMyO3Q9ZysxMnwwO2NbZis0Pj4yXT10O2NbZys4Pj4yXT0wO3Q9dCswfDA7Zz0zMjB8MDt3PXQrMzN8MDtkb3thW3Q+PjBdPWFbZz4+MF18MDt0PXQrMXwwO2c9ZysxfDB9d2hpbGUoKHR8MCk8KHd8MCkpO2NbZj4+Ml09MzY4O3diKGZ8MCwzMDQsMjIpfX19d2hpbGUoMCk7RD1YYSg0KXwwO2NbRD4+Ml09MjEzMDQ7d2IoRHwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2Rve2lmKCEoKGFbZj4+MF0mMSk9PTApKXtmPWNbZis4Pj4yXXwwO2lmKChmfDApPT0wKXticmVha312bihmKX19d2hpbGUoMCk7Y1tsPj4yXT1nO2Y9Y1tuPj4yXXwwO2Nbbj4+Ml09ajtkb3tpZigoZnwwKSE9MCl7Qz1mKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXticmVha31sY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZik7Qz1mKzh8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXticmVha31sY1tjWyhjW2Y+PjJdfDApKzE2Pj4yXSYyNTVdKGYpfX13aGlsZSgwKTtBPWIrMzI4fDA7Qz1BO0M9SW4oY1tDPj4yXXwwLGNbQys0Pj4yXXwwLDEsMCl8MDtjW0E+PjJdPUM7Y1tBKzQ+PjJdPUk7QT1tO2NbQT4+Ml09MDtjW0ErND4+Ml09MDtBPWNbbD4+Ml18MDtDPWNbQT4+Ml18MDtDPWNbQz4+Ml18MDttY1tDJjEyN10oQSxlKTtBPW07Qz1BO0M9Y1tDPj4yXXwwO0E9QSs0fDA7QT1jW0E+PjJdfDA7QT1JbihDfDAsQXwwLDEsMCl8MDtDPUk7RD1tO0I9RDtjW0I+PjJdPUE7RD1EKzR8MDtjW0Q+PjJdPUM7aT1oO3JldHVybn1mdW5jdGlvbiBLYyhhKXthPWF8MDthPShjW2ErOD4+Ml18MCkrMTI3fDA7cmV0dXJuIGRbYT4+MF18ZFthKzE+PjBdPDw4fGRbYSsyPj4wXTw8MTZ8ZFthKzM+PjBdPDwyNHwwfWZ1bmN0aW9uIExjKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTA7ZT1pO2Y9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9ZjthPW9jW2EmMTI3XShiKXwwO2k9ZTtyZXR1cm4gYXwwfWVsc2V7YT1jWyhjW2I+PjJdfDApK2Y+PjJdfDA7YT1vY1thJjEyN10oYil8MDtpPWU7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBNYyhhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTA7Zj1pO2c9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9ZzttY1thJjEyN10oYixlKTtpPWY7cmV0dXJufWVsc2V7YT1jWyhjW2I+PjJdfDApK2c+PjJdfDA7bWNbYSYxMjddKGIsZSk7aT1mO3JldHVybn19ZnVuY3Rpb24gTmMoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTA7Zz1pO2g9ZFthPj4wXXxkW2ErMT4+MF08PDh8ZFthKzI+PjBdPDwxNnxkW2ErMz4+MF08PDI0O2E9YSs0fDA7YT1kW2E+PjBdfGRbYSsxPj4wXTw8OHxkW2ErMj4+MF08PDE2fGRbYSszPj4wXTw8MjQ7Yj1iKyhhPj4xKXwwO2lmKChhJjF8MCk9PTApe2E9aDtxY1thJjMxXShiLGUsZik7aT1nO3JldHVybn1lbHNle2E9Y1soY1tiPj4yXXwwKStoPj4yXXwwO3FjW2EmMzFdKGIsZSxmKTtpPWc7cmV0dXJufX1mdW5jdGlvbiBPYygpe3ZhciBhPTAsYj0wLGQ9MDtiPWk7d2hpbGUoMSl7ZD11bigxNil8MDtpZigoZHwwKSE9MCl7YT03O2JyZWFrfWQ9Y1s1NjY2XXwwO2NbNTY2Nl09ZCswO2lmKChkfDApPT0wKXticmVha31zY1tkJjMxXSgpfWlmKChhfDApPT03KXtjW2QrMD4+Ml09MDtjW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2QrMTI+PjJdPTA7aT1iO3JldHVybiBkfDB9ZD1YYSg0KXwwO2NbZD4+Ml09MjI2ODA7d2IoZHwwLDIyNzI4LDIwNik7cmV0dXJuIDB9ZnVuY3Rpb24gUGMoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1rY1thJjMxXSgpfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gUWMoYSl7YT1hfDA7cmV0dXJuIDcyfWZ1bmN0aW9uIFJjKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWQ9Y1thKzEyPj4yXXwwO2lmKCgoZHwwKSE9MD8oZj1kKzR8MCxlPWNbZj4+Ml18MCxjW2Y+PjJdPWUrIC0xLChlfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGU9ZCs4fDAsZj1jW2U+PjJdfDAsY1tlPj4yXT1mKyAtMSwoZnwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX1kPWNbYSs0Pj4yXXwwO2lmKCgoZHwwKSE9MD8oZT1kKzR8MCxmPWNbZT4+Ml18MCxjW2U+PjJdPWYrIC0xLChmfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGU9ZCs4fDAsZj1jW2U+PjJdfDAsY1tlPj4yXT1mKyAtMSwoZnwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX12bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFNjKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtmPWk7aT1pKzMyfDA7bz1mO2U9ZisxNnwwO2c9ZisxMnwwO2FbZT4+MF09MDtjW2UrND4+Ml09YjtwPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtpZigoY1tiKyhwKzE2KT4+Ml18MCk9PTApe2g9Y1tiKyhwKzcyKT4+Ml18MDtpZigoaHwwKSE9MCl7WWcoaCk7cD1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDB9YVtlPj4wXT0xO2o9Sm4oZHwwKXwwO209Y1tiKyhwKzI0KT4+Ml18MDtpZigoY1tiKyhwKzQpPj4yXSYxNzZ8MCk9PTMyKXtoPWQranwwfWVsc2V7aD1kfWw9YitwfDA7bj1iKyhwKzc2KXwwO3E9Y1tuPj4yXXwwO2Rve2lmKChxfDApPT0tMSl7cD1jW2IrKHArMjgpPj4yXXwwO3E9cCs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tvPj4yXT0xMzQ1NjtjW28rND4+Ml09MjA4O2Nbbys4Pj4yXT0wO2NnKDEzNDU2LG8pfXI9KGNbMTM0NjA+PjJdfDApKyAtMXwwO289Y1twKzg+PjJdfDA7aWYoKGNbcCsxMj4+Ml18MCktbz4+Mj4+PjA+cj4+PjA/KGs9Y1tvKyhyPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywzMil8MDtyPWNbcT4+Ml18MDtjW3E+PjJdPXIrIC0xO2lmKChyfDApPT0wKXtsY1tjWyhjW3A+PjJdfDApKzg+PjJdJjI1NV0ocCl9cT1rPDwyND4+MjQ7Y1tuPj4yXT1xO2JyZWFrfXI9WGEoNCl8MDtjW3I+PjJdPTIxMzA0O3diKHJ8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtXYyhnLG0sZCxoLGQranwwLGwscSYyNTUpO2lmKChjW2c+PjJdfDApPT0wKXtyPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK3J8MCxjW2IrKHIrMTYpPj4yXXw1KX19Z2goZSk7aT1mO3JldHVybiBifDB9ZnVuY3Rpb24gVGMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFVjKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gVmMoYSl7YT1hfDA7bWIoYXwwKXwwO09hKCl9ZnVuY3Rpb24gV2MoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtrPWk7aT1pKzE2fDA7bD1rO2lmKChkfDApPT0wKXtjW2I+PjJdPTA7aT1rO3JldHVybn1wPWU7bj1nLXB8MDtoPWgrMTJ8MDttPWNbaD4+Ml18MDtuPShtfDApPihufDApP20tbnwwOjA7bT1mO3A9bS1wfDA7aWYoKHB8MCk+MD8oaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsZSxwKXwwKSE9KHB8MCk6MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59ZG97aWYoKG58MCk+MCl7ZG97aWYobj4+PjA8MTEpe3A9bjw8MSYyNTU7YVtsPj4wXT1wO289bDtlPWwrMXwwfWVsc2V7cT1uKzE2Ji0xNjtwPShxfDApPT0wPzE6cTt3aGlsZSgxKXtlPXVuKHApfDA7aWYoKGV8MCkhPTApe289MTU7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKG98MCk9PTE1KXtjW2wrOD4+Ml09ZTtwPXF8MTtjW2w+PjJdPXA7Y1tsKzQ+PjJdPW47bz1sO3A9cCYyNTU7YnJlYWt9cT1YYSg0KXwwO2NbcT4+Ml09MjI2ODA7d2IocXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO05uKGV8MCxqfDAsbnwwKXwwO2FbZStuPj4wXT0wO2lmKChwJjEpPT0wKXtqPWwrMXwwfWVsc2V7aj1jW2wrOD4+Ml18MH1pZigoaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsaixuKXwwKT09KG58MCkpe2lmKChhW28+PjBdJjEpPT0wKXticmVha31sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXticmVha312bihsKTticmVha31jW2I+PjJdPTA7aWYoKGFbbz4+MF0mMSk9PTApe2k9aztyZXR1cm59Yj1jW2wrOD4+Ml18MDtpZigoYnwwKT09MCl7aT1rO3JldHVybn12bihiKTtpPWs7cmV0dXJufX13aGlsZSgwKTtsPWctbXwwO2lmKChsfDApPjA/KGhjW2NbKGNbZD4+Ml18MCkrNDg+PjJdJjYzXShkLGYsbCl8MCkhPShsfDApOjApe2NbYj4+Ml09MDtpPWs7cmV0dXJufWNbaD4+Ml09MDtjW2I+PjJdPWQ7aT1rO3JldHVybn1mdW5jdGlvbiBYYyhhKXthPWF8MDt2YXIgYj0wO2I9aTtfYyhhKzQ3Njh8MCk7X2MoYSs0NzM2fDApO19jKGErNDY4OHwwKTtfYyhhKzQ2NTZ8MCk7X2MoYSs0NjA4fDApO19jKGErNDU3NnwwKTtfYyhhKzQ1Mjh8MCk7X2MoYSs0NDk2fDApO19jKGErNDQ0OHwwKTtfYyhhKzQ0MTZ8MCk7WmMoYSs0MzAwfDApO1pjKGErNDIyMHwwKTtaYyhhKzQxNDB8MCk7WmMoYSs0MDYwfDApO1pjKGErMzk4MHwwKTtZYyhhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFljKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2Q9Y1thKzg5Nj4+Ml18MDtpZigoZHwwKSE9MCl7ZT1jW2QrOD4+Ml18MDtpZigoZXwwKSE9MCl7dm4oY1tlKyAtND4+Ml18MCl9ZT1jW2QrMTI+PjJdfDA7aWYoKGV8MCkhPTApe3ZuKGNbZSsgLTQ+PjJdfDApfWU9Y1tkKzE2Pj4yXXwwO2lmKChlfDApIT0wKXt2bihjW2UrIC00Pj4yXXwwKX12bihkKX1kPWNbYSs5MDA+PjJdfDA7aWYoKGR8MCk9PTApe2Q9MH1lbHNle2U9Y1tkKzg+PjJdfDA7aWYoKGV8MCkhPTApe3ZuKGNbZSsgLTQ+PjJdfDApfWU9Y1tkKzEyPj4yXXwwO2lmKChlfDApIT0wKXt2bihjW2UrIC00Pj4yXXwwKX1lPWNbZCsxNj4+Ml18MDtpZigoZXwwKSE9MCl7dm4oY1tlKyAtND4+Ml18MCl9dm4oZCk7ZD0wfWRve2U9Y1thKyhkPDwyKSs5MDQ+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZT1jW2ErKGQ8PDIpKzE5Mjg+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZT1jW2ErKGQ8PDIpKzI5NTI+PjJdfDA7aWYoKGV8MCkhPTApe2Y9Y1tlKzg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlKzEyPj4yXXwwO2lmKChmfDApIT0wKXt2bihjW2YrIC00Pj4yXXwwKX1mPWNbZSsxNj4+Ml18MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9dm4oZSl9ZD1kKzF8MH13aGlsZSgoZHwwKSE9MjU2KTtkPWNbYSs4NjA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzg2ND4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9YT1jW2ErODY4Pj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufXZuKGNbYSsgLTQ+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gWmMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2I9aTtkPWErMzZ8MDtlPWNbZD4+Ml18MDtmPWErNDB8MDtnPWNbZj4+Ml18MDtpZigoZ3wwKSE9KGV8MCkpe2Rve2NbZj4+Ml09ZysgLTQ0O2g9Y1tnKyAtMzY+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWg9Y1tnKyAtMzI+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWc9Y1tnKyAtMjg+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1tmPj4yXXwwfXdoaWxlKChnfDApIT0oZXwwKSl9Zj1hKzY4fDA7ZT1jW2Y+PjJdfDA7YT1hKzcyfDA7Zz1jW2E+PjJdfDA7aWYoKGd8MCk9PShlfDApKXtfYyhmKTtfYyhkKTtpPWI7cmV0dXJufWRve2NbYT4+Ml09ZysgLTQ0O2g9Y1tnKyAtMzY+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWg9Y1tnKyAtMzI+PjJdfDA7aWYoKGh8MCkhPTApe3ZuKGNbaCsgLTQ+PjJdfDApfWc9Y1tnKyAtMjg+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1thPj4yXXwwfXdoaWxlKChnfDApIT0oZXwwKSk7X2MoZik7X2MoZCk7aT1iO3JldHVybn1mdW5jdGlvbiBfYyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtiPWk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59ZT1hKzR8MDtmPWNbZT4+Ml18MDtpZigoZnwwKSE9KGR8MCkpe2Rve2NbZT4+Ml09ZisgLTQ0O2c9Y1tmKyAtMzY+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWc9Y1tmKyAtMzI+PjJdfDA7aWYoKGd8MCkhPTApe3ZuKGNbZysgLTQ+PjJdfDApfWY9Y1tmKyAtMjg+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1tlPj4yXXwwfXdoaWxlKChmfDApIT0oZHwwKSk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59fXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gJGMoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2Q9Y1thKzU2Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSs2MD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErNjQ+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzEyPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxNj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9YT1jW2ErMjA+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oY1thKyAtND4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiBhZChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7ZD1jW2ErMjgwPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsyODQ+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzI4OD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMjM2Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsyNDA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzI0ND4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTkyPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxOTY+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzIwMD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTQ4Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxNTI+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzE1Nj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTA0Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSsxMDg+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzExMj4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErNjA+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzY0Pj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1kPWNbYSs2OD4+Ml18MDtpZigoZHwwKSE9MCl7dm4oY1tkKyAtND4+Ml18MCl9ZD1jW2ErMTY+PjJdfDA7aWYoKGR8MCkhPTApe3ZuKGNbZCsgLTQ+PjJdfDApfWQ9Y1thKzIwPj4yXXwwO2lmKChkfDApIT0wKXt2bihjW2QrIC00Pj4yXXwwKX1hPWNbYSsyND4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn12bihjW2ErIC00Pj4yXXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGJkKGIpe2I9YnwwO3ZhciBjPTAsZD0wO2M9aTtkPWIrOHwwO2FbYiswPj4wXT0wO2FbYisxPj4wXT0wO2FbYisyPj4wXT0wO2FbYiszPj4wXT0wO2FbYis0Pj4wXT0wO2FbYis1Pj4wXT0wO2FbYis2Pj4wXT0wO2NkKGQsMTI4KTtjZChiKzUyfDAsMjU2KTtjZChiKzk2fDAsMjU2KTtjZChiKzE0MHwwLDI1Nik7Y2QoYisxODR8MCwyNTYpO2NkKGIrMjI4fDAsMjU2KTtjZChiKzI3MnwwLDI1Nik7aT1jO3JldHVybn1mdW5jdGlvbiBjZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtlPWk7Y1tiPj4yXT1kO2FbYis0Pj4wXT0wO2o9Yis4fDA7Y1tqPj4yXT0wO2c9YisxMnwwO2NbZz4+Ml09MDtoPWIrMTZ8MDtjW2g+PjJdPTA7aWYoKGQrIC0yfDApPj4+MD4yMDQ2KXtiPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oMzgpfDA7aWYoKGV8MCkhPTApe2Y9ODticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZnwwKT09OCl7Y1tlKzQ+PjJdPTI1O2NbZT4+Ml09MjU7ZD1lKzEyfDA7Y1tiKzQ+PjJdPWQ7Y1tlKzg+PjJdPTA7ZT1kKzB8MDtkPTM4NHwwO2Y9ZSsyNnwwO2Rve2FbZT4+MF09YVtkPj4wXXwwO2U9ZSsxfDA7ZD1kKzF8MH13aGlsZSgoZXwwKTwoZnwwKSk7d2IoYnwwLDEwMDY0LDEwNil9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9Y1tiKzMyPj4yXT1kKyAtMTtpZihkPj4+MD4xNil7Zj0zO3doaWxlKDEpe2lmKDE8PGYrMj4+PjA8ZD4+PjApe2Y9ZisxfDB9ZWxzZXticmVha319az0xPDxmO2NbYiszNj4+Ml09aztjW2IrNDA+PjJdPTE1LWY7az11bigoazw8MikrNzZ8MCl8MDtmPWsrNjgmLTY0O2NbZisgLTQ+PjJdPWs7Y1toPj4yXT1mfWVsc2V7Y1toPj4yXT0wO2NbYis0MD4+Ml09MDtjW2IrMzY+PjJdPTB9az0oZDw8MikrNjh8MDtoPXVuKGspfDA7Zj1oKzY4Ji02NDtjW2YrIC00Pj4yXT1oO2Nbaj4+Ml09ZjtrPXVuKGspfDA7Zj1rKzY4Ji02NDtjW2YrIC00Pj4yXT1rO2NbZz4+Ml09ZjtjW2IrMjA+PjJdPTA7Zz1iKzI0fDA7Y1tnPj4yXT1kO2lmKChkfDApPT0wKXtkZChiKTtqPWNbYj4+Ml18MDtqPWorNnwwO2o9aj4+PjE7Y1tnPj4yXT1qO2s9YisyOHwwO2Nbaz4+Ml09ajtpPWU7cmV0dXJufWVsc2V7ZD0wfWRve2NbZisoZDw8Mik+PjJdPTE7ZD1kKzF8MH13aGlsZShkPj4+MDwoY1tiPj4yXXwwKT4+PjApO2RkKGIpO2o9Y1tiPj4yXXwwO2o9ais2fDA7aj1qPj4+MTtjW2c+PjJdPWo7az1iKzI4fDA7Y1trPj4yXT1qO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZGQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2Q9aTtlPWIrMjR8MDtoPWIrMjB8MDtrPShjW2g+PjJdfDApKyhjW2U+PjJdfDApfDA7Y1toPj4yXT1rO2lmKGs+Pj4wPjMyNzY4KXtjW2g+PjJdPTA7aWYoKGNbYj4+Ml18MCk9PTApe2s9MH1lbHNle2w9Y1tiKzEyPj4yXXwwO2o9MDtkb3tzPWwrKGo8PDIpfDA7az0oKGNbcz4+Ml18MCkrMXwwKT4+PjE7Y1tzPj4yXT1rO2s9aysoY1toPj4yXXwwKXwwO2NbaD4+Ml09aztqPWorMXwwfXdoaWxlKGo+Pj4wPChjW2I+PjJdfDApPj4+MCl9fWg9MjE0NzQ4MzY0OC8oaz4+PjApfDA7aWYoKGFbYis0Pj4wXXwwKT09MD8oZj1iKzM2fDAsKGNbZj4+Ml18MCkhPTApOjApe2lmKChjW2I+PjJdfDApIT0wKXtvPWNbYis4Pj4yXXwwO209Y1tiKzEyPj4yXXwwO2s9Yis0MHwwO249YisxNnwwO2o9MDtzPTA7bD0wO3doaWxlKDEpe3I9KGVhKGwsaCl8MCk+Pj4xNjtjW28rKGo8PDIpPj4yXT1yO2w9KGNbbSsoajw8Mik+PjJdfDApK2x8MDtyPXI+Pj4oY1trPj4yXXwwKTtpZihzPj4+MDxyPj4+MCl7cD1qKyAtMXwwO3E9Y1tuPj4yXXwwO2Rve3M9cysxfDA7Y1txKyhzPDwyKT4+Ml09cH13aGlsZSgoc3wwKSE9KHJ8MCkpfWVsc2V7cj1zfWo9aisxfDA7aWYoIShqPj4+MDwoY1tiPj4yXXwwKT4+PjApKXticmVha31lbHNle3M9cn19aD1jW24+PjJdfDA7Y1toPj4yXT0wO2lmKCEocj4+PjA+KGNbZj4+Ml18MCk+Pj4wKSl7Zz0xOH19ZWxzZXtoPWNbYisxNj4+Ml18MDtjW2g+PjJdPTA7cj0wO2c9MTh9aWYoKGd8MCk9PTE4KXtkb3tyPXIrMXwwO2NbaCsocjw8Mik+PjJdPShjW2I+PjJdfDApKyAtMX13aGlsZSghKHI+Pj4wPihjW2Y+PjJdfDApPj4+MCkpfXM9Y1tiPj4yXXwwO3I9Y1tlPj4yXXwwO3I9cio1fDA7cj1yPj4+MjtzPXM8PDM7cz1zKzQ4fDA7cT1yPj4+MD5zPj4+MDtyPXE/czpyO2NbZT4+Ml09cjtzPWIrMjh8MDtjW3M+PjJdPXI7aT1kO3JldHVybn1pZigoY1tiPj4yXXwwKT09MCl7cz0wO3I9Y1tlPj4yXXwwO3I9cio1fDA7cj1yPj4+MjtzPXM8PDM7cz1zKzQ4fDA7cT1yPj4+MD5zPj4+MDtyPXE/czpyO2NbZT4+Ml09cjtzPWIrMjh8MDtjW3M+PjJdPXI7aT1kO3JldHVybn1qPWNbYis4Pj4yXXwwO2s9Y1tiKzEyPj4yXXwwO2w9MDtnPTA7ZG97Y1tqKyhsPDwyKT4+Ml09KGVhKGcsaCl8MCk+Pj4xNjtnPShjW2srKGw8PDIpPj4yXXwwKStnfDA7bD1sKzF8MDtmPWNbYj4+Ml18MH13aGlsZShsPj4+MDxmPj4+MCk7cj1jW2U+PjJdfDA7cj1yKjV8MDtyPXI+Pj4yO3M9Zjw8MztzPXMrNDh8MDtxPXI+Pj4wPnM+Pj4wO3I9cT9zOnI7Y1tlPj4yXT1yO3M9YisyOHwwO2Nbcz4+Ml09cjtpPWQ7cmV0dXJufWZ1bmN0aW9uIGVkKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Q9aTthW2I+PjBdPTA7Y2QoYis0fDAsNTE2KTtlPWIrNDh8MDtjW2U+PjJdPTY7YVtiKzUyPj4wXT0wO2NbYis4MD4+Ml09NTtjW2IrNjQ+PjJdPTA7Y1tiKzg4Pj4yXT0wO2NbYis4ND4+Ml09MDtnPXVuKDkyKXwwO2Y9Zys2OCYtNjQ7Y1tmKyAtND4+Ml09ZztjW2IrNTY+PjJdPWY7Zj11big5Mil8MDtnPWYrNjgmLTY0O2NbZysgLTQ+PjJdPWY7Y1tiKzYwPj4yXT1nO2NbYis2OD4+Ml09MDtmPWIrNzJ8MDtjW2Y+PjJdPTY7aD0wO2Rve2NbZysoaDw8Mik+PjJdPTE7aD1oKzF8MH13aGlsZShoPj4+MDwoY1tlPj4yXXwwKT4+PjApO2RkKGUpO2U9KChjW2U+PjJdfDApKzZ8MCk+Pj4xO2NbZj4+Ml09ZTtjW2IrNzY+PjJdPWU7ZT1iKzkyfDA7Yj1lKzcyfDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KGJ8MCkpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZmQoZCl7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7Zz1kKzUyfDA7aD1kKzcyfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzc2fDA7Zz1kKzk2fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzEwMHwwO2g9ZCsxMjB8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrMTI0fDA7Zz1kKzE0NHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCsxNDh8MDtoPWQrMTY4fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzE3MnwwO2c9ZCsxOTJ8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrMTk2fDA7aD1kKzIxNnwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCsyMjB8MDtnPWQrMjQwfDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzI0NHwwO2g9ZCsyNjR8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrMjY4fDA7Zz1kKzI4OHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCsyOTJ8MDtoPWQrMzEyfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzMxNnwwO2c9ZCszMzZ8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrMzQwfDA7aD1kKzM2MHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCszNjR8MDtnPWQrMzg0fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzM4OHwwO2g9ZCs0MDh8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNDEyfDA7Zz1kKzQzMnwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs0MzZ8MDtoPWQrNDU2fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzQ2MHwwO2c9ZCs0ODB8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNDg0fDA7aD1kKzUwNHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs1MDh8MDtnPWQrNTI4fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzUzMnwwO2g9ZCs1NTJ8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNTU2fDA7Zz1kKzU3NnwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs1ODB8MDtoPWQrNjAwfDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzYwNHwwO2c9ZCs2MjR8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNjI4fDA7aD1kKzY0OHwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs2NTJ8MDtnPWQrNjcyfDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Zz1kKzY3NnwwO2g9ZCs2OTZ8MDtjW2crMD4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2FbaD4+MF09MTtoPWQrNzAwfDA7Zz1kKzcyMHwwO2NbaCswPj4yXT0wO2NbaCs0Pj4yXT0wO2NbaCs4Pj4yXT0wO2NbaCsxMj4+Ml09MDtjW2grMTY+PjJdPTA7YVtnPj4wXT0xO2c9ZCs3MjR8MDtoPWQrNzQ0fDA7Y1tnKzA+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDthW2g+PjBdPTE7aD1kKzc0OHwwO2c9ZCs3Njh8MDtjW2grMD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2FbZz4+MF09MTtnPWQrNzcyfDA7aD1kKzc5MnwwO2NbZyswPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7YVtoPj4wXT0xO2g9ZCs3OTZ8MDtnPWQrODE2fDA7Y1toKzA+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDthW2c+PjBdPTE7Y2QoZCs4NTJ8MCw2NCk7YVtkKzM5NzY+PjBdPTA7Zz1kKzIwfDA7aD1nKzMyfDA7ZG97YltnPj4xXT0wO2c9ZysyfDB9d2hpbGUoKGd8MCk8KGh8MCkpO3doaWxlKDEpe2c9dW4oNDQpfDA7aWYoKGd8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtmPTU7YnJlYWt9c2NbZyYzMV0oKX1pZigoZnwwKT09NSl7aD1YYSg0KXwwO2NbaD4+Ml09MjI2ODA7d2IoaHwwLDIyNzI4LDIwNil9Y2QoZywyNTYpO2NbZCs4OTY+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9MTI7YnJlYWt9c2NbZyYzMV0oKX1pZigoZnwwKT09MTIpe2g9WGEoNCl8MDtjW2g+PjJdPTIyNjgwO3diKGh8MCwyMjcyOCwyMDYpfWNkKGcsMjU2KTtjW2QrOTAwPj4yXT1nO2Y9ZCs4MjB8MDtjW2YrMD4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDtjW2YrMTI+PjJdPTA7Y1tmKzE2Pj4yXT0wO2NbZisyMD4+Ml09MDtjW2YrMjQ+PjJdPTA7Y1tmKzI4Pj4yXT0wO2Y9MDthOndoaWxlKDEpe3doaWxlKDEpe2c9dW4oNDQpfDA7aWYoKGd8MCkhPTApe2JyZWFrfWc9Y1s1NjY2XXwwO2NbNTY2Nl09ZyswO2lmKChnfDApPT0wKXtmPTIwO2JyZWFrIGF9c2NbZyYzMV0oKX1jZChnLDI1Nik7Y1tkKyhmPDwyKSs5MDQ+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9Mjc7YnJlYWsgYX1zY1tnJjMxXSgpfWNkKGcsMjU2KTtjW2QrKGY8PDIpKzE5Mjg+PjJdPWc7d2hpbGUoMSl7Zz11big0NCl8MDtpZigoZ3wwKSE9MCl7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2Y9MzQ7YnJlYWsgYX1zY1tnJjMxXSgpfWNkKGcsMjU2KTtjW2QrKGY8PDIpKzI5NTI+PjJdPWc7Zj1mKzF8MDtpZigoZnwwKT49MjU2KXtmPTM4O2JyZWFrfX1pZigoZnwwKT09MjApe2g9WGEoNCl8MDtjW2g+PjJdPTIyNjgwO3diKGh8MCwyMjcyOCwyMDYpfWVsc2UgaWYoKGZ8MCk9PTI3KXtoPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX1lbHNlIGlmKChmfDApPT0zNCl7aD1YYSg0KXwwO2NbaD4+Ml09MjI2ODA7d2IoaHwwLDIyNzI4LDIwNil9ZWxzZSBpZigoZnwwKT09Mzgpe2NbZCszOTg0Pj4yXT0xNjtjW2QrMzk4OD4+Ml09NDtjW2QrMzk5Mj4+Ml09ODtjW2QrMzk5Nj4+Ml09MDtjW2QrNDAxNj4+Ml09MDtjW2QrNDAyMD4+Ml09MDtjW2QrNDAyND4+Ml09MDtjW2QrNDA0MD4+Ml09MTtjW2QrNDA0ND4+Ml09MjtjW2QrNDAzNj4+Ml09NDA5NjtjW2QrNDAzMj4+Ml09NDtjW2QrNDAyOD4+Ml09NDtjW2QrNDA0OD4+Ml09MDtjW2QrNDA1Mj4+Ml09MDtjW2QrNDA1Nj4+Ml09MDtjW2QrNGUzPj4yXT0xNjtjW2QrNDAwND4+Ml09NjU1MzY7Y1tkKzQwMDg+PjJdPS0zMjc2ODtjW2QrNDAxMj4+Ml09MzI3Njc7Y1tkKzM5ODA+PjJdPTA7Y1tkKzQwNjQ+PjJdPTE2O2NbZCs0MDY4Pj4yXT0xO2NbZCs0MDcyPj4yXT04O2NbZCs0MDc2Pj4yXT0wO2NbZCs0MDk2Pj4yXT0wO2NbZCs0MTAwPj4yXT0wO2NbZCs0MTA0Pj4yXT0wO2NbZCs0MTIwPj4yXT0xO2NbZCs0MTI0Pj4yXT0yO2NbZCs0MTE2Pj4yXT00MDk2O2NbZCs0MTEyPj4yXT00O2NbZCs0MTA4Pj4yXT00O2NbZCs0MTI4Pj4yXT0wO2NbZCs0MTMyPj4yXT0wO2NbZCs0MTM2Pj4yXT0wO2NbZCs0MDgwPj4yXT0xNjtjW2QrNDA4ND4+Ml09NjU1MzY7Y1tkKzQwODg+PjJdPS0zMjc2ODtjW2QrNDA5Mj4+Ml09MzI3Njc7Y1tkKzQwNjA+PjJdPTA7Y1tkKzQxNDQ+PjJdPTMyO2NbZCs0MTQ4Pj4yXT0yO2NbZCs0MTUyPj4yXT04O2NbZCs0MTU2Pj4yXT0wO2NbZCs0MTc2Pj4yXT0wO2NbZCs0MTgwPj4yXT0wO2NbZCs0MTg0Pj4yXT0wO2NbZCs0MjAwPj4yXT0xO2NbZCs0MjA0Pj4yXT0yO2NbZCs0MTk2Pj4yXT00MDk2O2NbZCs0MTkyPj4yXT00O2NbZCs0MTg4Pj4yXT00O2NbZCs0MjA4Pj4yXT0wO2NbZCs0MjEyPj4yXT0wO2NbZCs0MjE2Pj4yXT0wO2NbZCs0MTYwPj4yXT0zMjtjW2QrNDE2ND4+Ml09MDtjW2QrNDE2OD4+Ml09LTIxNDc0ODM2NDg7Y1tkKzQxNzI+PjJdPTIxNDc0ODM2NDc7Y1tkKzQxNDA+PjJdPTA7Y1tkKzQyMjQ+PjJdPTMyO2NbZCs0MjI4Pj4yXT0yMjtjW2QrNDIzMj4+Ml09ODtjW2QrNDIzNj4+Ml09MDtjW2QrNDI1Nj4+Ml09MDtjW2QrNDI2MD4+Ml09MDtjW2QrNDI2ND4+Ml09MDtjW2QrNDI4MD4+Ml09MTtjW2QrNDI4ND4+Ml09MjtjW2QrNDI3Nj4+Ml09NDA5NjtjW2QrNDI3Mj4+Ml09NDtjW2QrNDI2OD4+Ml09NDtjW2QrNDI4OD4+Ml09MDtjW2QrNDI5Mj4+Ml09MDtjW2QrNDI5Nj4+Ml09MDtjW2QrNDI0MD4+Ml09MzI7Y1tkKzQyNDQ+PjJdPTA7Y1tkKzQyNDg+PjJdPS0yMTQ3NDgzNjQ4O2NbZCs0MjUyPj4yXT0yMTQ3NDgzNjQ3O2NbZCs0MjIwPj4yXT0wO2NbZCs0MzA0Pj4yXT0zMjtjW2QrNDMwOD4+Ml09MjA7Y1tkKzQzMTI+PjJdPTg7Y1tkKzQzMTY+PjJdPTA7Y1tkKzQzMzY+PjJdPTA7Y1tkKzQzNDA+PjJdPTA7Y1tkKzQzNDQ+PjJdPTA7Y1tkKzQzNjA+PjJdPTE7Y1tkKzQzNjQ+PjJdPTI7Y1tkKzQzNTY+PjJdPTQwOTY7Y1tkKzQzNTI+PjJdPTQ7Y1tkKzQzNDg+PjJdPTQ7Y1tkKzQzNjg+PjJdPTA7Y1tkKzQzNzI+PjJdPTA7Y1tkKzQzNzY+PjJdPTA7Y1tkKzQzMjA+PjJdPTMyO2NbZCs0MzI0Pj4yXT0wO2NbZCs0MzI4Pj4yXT0tMjE0NzQ4MzY0ODtjW2QrNDMzMj4+Ml09MjE0NzQ4MzY0NztjW2QrNDMwMD4+Ml09MDtjW2QrNDM4ND4+Ml09MTY7Y1tkKzQzODg+PjJdPTQ7Y1tkKzQzOTI+PjJdPTg7Y1tkKzQzOTY+PjJdPTA7Y1tkKzQ0MTY+PjJdPTA7Y1tkKzQ0MjA+PjJdPTA7Y1tkKzQ0MjQ+PjJdPTA7Y1tkKzQ0NDA+PjJdPTE7Y1tkKzQ0NDQ+PjJdPTI7Y1tkKzQ0MzY+PjJdPTQwOTY7Y1tkKzQ0MzI+PjJdPTQ7Y1tkKzQ0Mjg+PjJdPTQ7Y1tkKzQ0NDg+PjJdPTA7Y1tkKzQ0NTI+PjJdPTA7Y1tkKzQ0NTY+PjJdPTA7Y1tkKzQ0MDA+PjJdPTE2O2NbZCs0NDA0Pj4yXT02NTUzNjtjW2QrNDQwOD4+Ml09LTMyNzY4O2NbZCs0NDEyPj4yXT0zMjc2NztjW2QrNDM4MD4+Ml09MDtjW2QrNDQ2ND4+Ml09MTY7Y1tkKzQ0Njg+PjJdPTE7Y1tkKzQ0NzI+PjJdPTg7Y1tkKzQ0NzY+PjJdPTA7Y1tkKzQ0OTY+PjJdPTA7Y1tkKzQ1MDA+PjJdPTA7Y1tkKzQ1MDQ+PjJdPTA7Y1tkKzQ1MjA+PjJdPTE7Y1tkKzQ1MjQ+PjJdPTI7Y1tkKzQ1MTY+PjJdPTQwOTY7Y1tkKzQ1MTI+PjJdPTQ7Y1tkKzQ1MDg+PjJdPTQ7Y1tkKzQ1Mjg+PjJdPTA7Y1tkKzQ1MzI+PjJdPTA7Y1tkKzQ1MzY+PjJdPTA7Y1tkKzQ0ODA+PjJdPTE2O2NbZCs0NDg0Pj4yXT02NTUzNjtjW2QrNDQ4OD4+Ml09LTMyNzY4O2NbZCs0NDkyPj4yXT0zMjc2NztjW2QrNDQ2MD4+Ml09MDtjW2QrNDU0ND4+Ml09MzI7Y1tkKzQ1NDg+PjJdPTI7Y1tkKzQ1NTI+PjJdPTg7Y1tkKzQ1NTY+PjJdPTA7Y1tkKzQ1NzY+PjJdPTA7Y1tkKzQ1ODA+PjJdPTA7Y1tkKzQ1ODQ+PjJdPTA7Y1tkKzQ2MDA+PjJdPTE7Y1tkKzQ2MDQ+PjJdPTI7Y1tkKzQ1OTY+PjJdPTQwOTY7Y1tkKzQ1OTI+PjJdPTQ7Y1tkKzQ1ODg+PjJdPTQ7Y1tkKzQ2MDg+PjJdPTA7Y1tkKzQ2MTI+PjJdPTA7Y1tkKzQ2MTY+PjJdPTA7Y1tkKzQ1NjA+PjJdPTMyO2NbZCs0NTY0Pj4yXT0wO2NbZCs0NTY4Pj4yXT0tMjE0NzQ4MzY0ODtjW2QrNDU3Mj4+Ml09MjE0NzQ4MzY0NztjW2QrNDU0MD4+Ml09MDtjW2QrNDYyND4+Ml09MzI7Y1tkKzQ2Mjg+PjJdPTIyO2NbZCs0NjMyPj4yXT04O2NbZCs0NjM2Pj4yXT0wO2NbZCs0NjU2Pj4yXT0wO2NbZCs0NjYwPj4yXT0wO2NbZCs0NjY0Pj4yXT0wO2NbZCs0NjgwPj4yXT0xO2NbZCs0Njg0Pj4yXT0yO2NbZCs0Njc2Pj4yXT00MDk2O2NbZCs0NjcyPj4yXT00O2NbZCs0NjY4Pj4yXT00O2NbZCs0Njg4Pj4yXT0wO2NbZCs0NjkyPj4yXT0wO2NbZCs0Njk2Pj4yXT0wO2NbZCs0NjQwPj4yXT0zMjtjW2QrNDY0ND4+Ml09MDtjW2QrNDY0OD4+Ml09LTIxNDc0ODM2NDg7Y1tkKzQ2NTI+PjJdPTIxNDc0ODM2NDc7Y1tkKzQ2MjA+PjJdPTA7Y1tkKzQ3MDQ+PjJdPTMyO2NbZCs0NzA4Pj4yXT0yMDtjW2QrNDcxMj4+Ml09ODtjW2QrNDcxNj4+Ml09MDtjW2QrNDczNj4+Ml09MDtjW2QrNDc0MD4+Ml09MDtjW2QrNDc0ND4+Ml09MDtjW2QrNDc2MD4+Ml09MTtjW2QrNDc2ND4+Ml09MjtjW2QrNDc1Nj4+Ml09NDA5NjtjW2QrNDc1Mj4+Ml09NDtjW2QrNDc0OD4+Ml09NDtjW2QrNDc2OD4+Ml09MDtjW2QrNDc3Mj4+Ml09MDtjW2QrNDc3Nj4+Ml09MDtjW2QrNDcyMD4+Ml09MzI7Y1tkKzQ3MjQ+PjJdPTA7Y1tkKzQ3Mjg+PjJdPS0yMTQ3NDgzNjQ4O2NbZCs0NzMyPj4yXT0yMTQ3NDgzNjQ3O2NbZCs0NzAwPj4yXT0wO2FbZCs0NzgwPj4wXT0wO2FbZCs0NzgxPj4wXT0wO2k9ZTtyZXR1cm59fWZ1bmN0aW9uIGdkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2k9aSszMnwwO2g9ZTtmPWNbYis4Pj4yXXwwO2I9Y1tiKzQ+PjJdfDA7amQoaCxmLGIpO2c9Y1toPj4yXXwwO2FbZCszPj4wXT1nPj4+MjQ7YVtkKzI+PjBdPWc+Pj4xNjthW2QrMT4+MF09Zz4+Pjg7YVtkPj4wXT1nO2c9Y1toKzQ+PjJdfDA7YVtkKzc+PjBdPWc+Pj4yNDthW2QrNj4+MF09Zz4+PjE2O2FbZCs1Pj4wXT1nPj4+ODthW2QrND4+MF09ZztnPWNbaCs4Pj4yXXwwO2FbZCsxMT4+MF09Zz4+PjI0O2FbZCsxMD4+MF09Zz4+PjE2O2FbZCs5Pj4wXT1nPj4+ODthW2QrOD4+MF09ZztnPWNbaCsxMj4+Ml18MDthW2QrMTM+PjBdPShnJjY1NTM1KT4+Pjg7YVtkKzEyPj4wXT1nO2FbZCsxND4+MF09Zz4+PjE2O2FbZCsxNT4+MF09Zz4+PjI0O2g9Y1toKzE2Pj4yXXwwO2FbZCsxNj4+MF09aDthW2QrMTc+PjBdPShoJjY1NTM1KT4+Pjg7YVtkKzE5Pj4wXT1oPj4+MjQ7YVtkKzE4Pj4wXT1oPj4+MTY7aD1rZChmKzQ3ODR8MCxiKXwwO2c9STthW2QrMjM+PjBdPWg+Pj4yNDthW2QrMjI+PjBdPWg+Pj4xNjthW2QrMjE+PjBdPWg+Pj44O2FbZCsyMD4+MF09aDtqPUtuKGh8MCxnfDAsNTYpfDA7YVtkKzI3Pj4wXT1qO2o9S24oaHwwLGd8MCw0OCl8MDthW2QrMjY+PjBdPWo7aD1LbihofDAsZ3wwLDQwKXwwO2FbZCsyNT4+MF09aDthW2QrMjQ+PjBdPWc7bGQoZis1MTEyfDAsYixkKzI4fDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gaGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7Y1thPj4yXT00MjQ7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1hZChhKzUxMTJ8MCk7X2MoYSs1MDk2fDApO19jKGErNTA2NHwwKTtaYyhhKzQ5NDh8MCk7JGMoYSs0Nzg0fDApO1hjKGEpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gaWQoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2NbYT4+Ml09NDI0O2Q9Y1thKzg+PjJdfDA7aWYoKGR8MCk9PTApe3ZuKGEpO2k9YjtyZXR1cm59YWQoZCs1MTEyfDApO19jKGQrNTA5NnwwKTtfYyhkKzUwNjR8MCk7WmMoZCs0OTQ4fDApOyRjKGQrNDc4NHwwKTtYYyhkKTt2bihkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGpkKGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO2o9aTtpPWkrMzJ8MDtrPWo7bD1nKzQ3ODF8MDtpZigoYVtsPj4wXXwwKT09MCl7dGQoZys0MzgwfDApO3RkKGcrNDQ2MHwwKTt0ZChnKzQ1NDB8MCk7dGQoZys0NjIwfDApO3RkKGcrNDcwMHwwKTthW2w+PjBdPTF9bD1nKzM5NzZ8MDtpZigoYVtsPj4wXXwwKT09MCl7YVtsPj4wXT0xO3BkKGNbaD4+Ml18MCxrLDIwKTtyPWRbaysxPj4wXTw8OHxkW2s+PjBdfGRbaysyPj4wXTw8MTZ8ZFtrKzM+PjBdPDwyNDtvPWRbays1Pj4wXTw8OHxkW2srND4+MF18ZFtrKzY+PjBdPDwxNnxkW2srNz4+MF08PDI0O3A9ZFtrKzk+PjBdPDw4fGRbays4Pj4wXXxkW2srMTA+PjBdPDwxNnxkW2srMTE+PjBdPDwyNDtxPShhW2srMTM+PjBdPDw4fGRbaysxMj4+MF0pJjY1NTM1O3M9YVtrKzE0Pj4wXXwwO3Q9YVtrKzE1Pj4wXXwwO3U9YVtrKzE2Pj4wXXwwO2g9YVtrKzE3Pj4wXXwwO3Y9KGFbaysxOT4+MF08PDh8ZFtrKzE4Pj4wXSkmNjU1MzU7YVtnPj4wXT1yO2FbZysxPj4wXT1yPj44O2FbZysyPj4wXT1yPj4xNjthW2crMz4+MF09cj4+MjQ7cj1nKzR8MDthW3I+PjBdPW87YVtyKzE+PjBdPW8+Pjg7YVtyKzI+PjBdPW8+PjE2O2FbciszPj4wXT1vPj4yNDtyPWcrOHwwO2Fbcj4+MF09cDthW3IrMT4+MF09cD4+ODthW3IrMj4+MF09cD4+MTY7YVtyKzM+PjBdPXA+PjI0O3I9ZysxMnwwO2Fbcj4+MF09cTthW3IrMT4+MF09cT4+ODthW2crMTQ+PjBdPXM7YVtnKzE1Pj4wXT10O2FbZysxNj4+MF09dTthW2crMTc+PjBdPWg7aD1nKzE4fDA7YVtoPj4wXT12O2FbaCsxPj4wXT12Pj44O2Y9ZiswfDA7aD1nKzB8MDtnPWYrMjB8MDtkb3thW2Y+PjBdPWFbaD4+MF18MDtmPWYrMXwwO2g9aCsxfDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2k9ajtyZXR1cm59bT1xZChoLGcrODUyfDApfDA7aWYoKG18MCkhPTApe289ZysxNHwwO2s9YVtvPj4wXXwwO2lmKChtJjMyfDApIT0wKXtrPShxZChoLGNbZysoKCgoayYyNTUpPj4+NyYyNTUpPDw3fGsmN3woKGsmMjU1KT4+PjYmMjU1KTw8NiY2NHwoKGsmMjU1KT4+PjMmMjU1KTw8MyY1Nik8PDIpKzkwND4+Ml18MCl8MCkmMjU1O2Fbbz4+MF09a31sPWsmNztrPShrJjI1NSk+Pj4zJjc7bj1kWzg3Misoazw8MykrbD4+MF18MDtsPWRbOTM2KyhrPDwzKStsPj4wXXwwO2lmKChtJjE2fDApPT0wKXt1PWJbZysobjw8MSkrMjA+PjFdfDA7dj1nKzEyfDA7YVt2Pj4wXT11O2FbdisxPj4wXT11Pj44fWVsc2V7cD1nKyhuPDwxKSsyMHwwO3E9ZVtwPj4xXXwwO3E9KHJkKGcrNDM4MHwwLGgsKGNbZys0NDE2Pj4yXXwwKSsoKG4+Pj4wPDM/bjozKSo0NHwwKXwwKXwwKStxfDA7cj1jW2crNDQwND4+Ml18MDtpZigocXwwKTwwKXtxPXErcnwwfWVsc2V7cT1xLShxPj4+MDxyPj4+MD8wOnIpfDB9dj1xJjY1NTM1O3U9ZysxMnwwO2FbdT4+MF09djthW3UrMT4+MF09dj4+ODtiW3A+PjFdPXZ9aWYoKG0mOHwwKSE9MCl7dj1nKzE1fDA7YVt2Pj4wXT1xZChoLGNbZysoZFt2Pj4wXTw8MikrMTkyOD4+Ml18MCl8MH1pZigobSY0fDApIT0wKXtwPXFkKGgsY1tnKygoKGRbbz4+MF18MCk+Pj42JjEpPDwyKSs4OTY+PjJdfDApfDA7bz1nKzE2fDA7cD0oYVtvPj4wXXwwKStwfDA7aWYoKHB8MCk8MCl7cD1wKzI1NnwwfWVsc2V7cD0ocHwwKT4yNTU/cCsgLTI1NnwwOnB9YVtvPj4wXT1wfWlmKChtJjJ8MCkhPTApe3Y9ZysxN3wwO2Fbdj4+MF09cWQoaCxjW2crKGRbdj4+MF08PDIpKzI5NTI+PjJdfDApfDB9aWYoKG0mMXwwKSE9MCl7bT1nKzE4fDA7cD0oZFttPj4wXXxkW20rMT4+MF08PDgpJjY1NTM1O3A9KHJkKGcrNDQ2MHwwLGgsY1tnKzQ0OTY+PjJdfDApfDApK3B8MDtvPWNbZys0NDg0Pj4yXXwwO2lmKChwfDApPDApe289cCtvfDB9ZWxzZXtvPXAtKHA+Pj4wPG8+Pj4wPzA6byl8MH12PW8mNjU1MzU7YVttPj4wXT12O2FbbSsxPj4wXT12Pj44fX1lbHNle2s9YVtnKzE0Pj4wXXwwO249ayY3O2s9KGsmMjU1KT4+PjMmNztsPWRbOTM2KyhrPDwzKStuPj4wXXwwO249ZFs4NzIrKGs8PDMpK24+PjBdfDB9cT1nKyhuKjI0fDApKzUyfDA7bz1nKyhuKjI0fDApKzYwfDA7cD1jW28+PjJdfDA7bT1nKzQ1NDB8MDtrPShrfDApPT0xJjE7cD0ocmQobSxoLChjW2crNDU3Nj4+Ml18MCkrKGsqNDR8MCl8MCl8MCkrcHwwO3I9Y1tnKzQ1NjQ+PjJdfDA7aWYoKHB8MCk8MCl7cD1wK3J8MH1lbHNle3A9cC0ocD4+PjA8cj4+PjA/MDpyKXwwfXI9KGRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNCkrcHwwO2FbZz4+MF09cjthW2crMT4+MF09cj4+ODthW2crMj4+MF09cj4+MTY7YVtnKzM+PjBdPXI+PjI0O3I9ZysobioyNHwwKSs3MnwwO3M9Y1tvPj4yXXwwO2Rve2lmKChhW3I+PjBdfDApPT0wKXt1PWcrKG4qMjR8MCkrNTZ8MDt0PWNbdT4+Ml18MDtpZigoc3wwKT49KHB8MCkpe2lmKCh0fDApPChwfDApKXtjW3E+PjJdPXQ7Y1t1Pj4yXT1wfWVsc2V7Y1txPj4yXT1wfWFbcj4+MF09MTticmVha31jW3E+PjJdPXQ7Y1t1Pj4yXT1zO3Q9ZysobioyNHwwKSs2OHwwO3E9Y1t0Pj4yXXwwO3M9ZysobioyNHwwKSs2NHwwO3I9Y1tzPj4yXXwwO2lmKChxfDApPChwfDApKXtjW28+PjJdPXI7Y1tzPj4yXT1xO2NbdD4+Ml09cDticmVha31pZigocnwwKTwocHwwKSl7Y1tvPj4yXT1yO2Nbcz4+Ml09cDticmVha31lbHNle2Nbbz4+Ml09cDticmVha319ZWxzZXt0PWcrKG4qMjR8MCkrNjR8MDt1PWNbdD4+Ml18MDtpZigocHwwKT49KHN8MCkpe289ZysobioyNHwwKSs2OHwwO2lmKChwfDApPCh1fDApKXtjW28+PjJdPXU7Y1t0Pj4yXT1wfWVsc2V7Y1tvPj4yXT1wfWFbcj4+MF09MDticmVha31jW2crKG4qMjR8MCkrNjg+PjJdPXU7Y1t0Pj4yXT1zO3M9Y1txPj4yXXwwO3Q9ZysobioyNHwwKSs1NnwwO3I9Y1t0Pj4yXXwwO2lmKChwfDApPChzfDApKXtjW28+PjJdPXI7Y1t0Pj4yXT1zO2NbcT4+Ml09cDticmVha31pZigocHwwKTwocnwwKSl7Y1tvPj4yXT1yO2NbdD4+Ml09cDticmVha31lbHNle2Nbbz4+Ml09cDticmVha319fXdoaWxlKDApO3I9ZysobioyNHwwKSs0MzZ8MDtwPWcrKG4qMjR8MCkrNDQ0fDA7cT1jW3A+PjJdfDA7cz1jW20+PjJdfDA7bz1nKzQ2MjB8MDtxPShyZChvLGgsKGNbZys0NjU2Pj4yXXwwKSsoKChzPj4+MDwyMD9zJi0yOjIwKXxrKSo0NHwwKXwwKXwwKStxfDA7cz1jW2crNDY0ND4+Ml18MDtpZigocXwwKTwwKXtxPXErc3wwfWVsc2V7cT1xLShxPj4+MDxzPj4+MD8wOnMpfDB9cz1nKzR8MDt0PShkW3M+PjBdfGRbcysxPj4wXTw8OHxkW3MrMj4+MF08PDE2fGRbcyszPj4wXTw8MjQpK3F8MDthW3M+PjBdPXQ7YVtzKzE+PjBdPXQ+Pjg7YVtzKzI+PjBdPXQ+PjE2O2FbcyszPj4wXT10Pj4yNDtzPWcrKG4qMjR8MCkrNDU2fDA7dD1jW3A+PjJdfDA7ZG97aWYoKGFbcz4+MF18MCk9PTApe3U9ZysobioyNHwwKSs0NDB8MDt2PWNbdT4+Ml18MDtpZigodHwwKT49KHF8MCkpe2lmKCh2fDApPChxfDApKXtjW3I+PjJdPXY7Y1t1Pj4yXT1xfWVsc2V7Y1tyPj4yXT1xfWFbcz4+MF09MTticmVha31jW3I+PjJdPXY7Y1t1Pj4yXT10O3M9ZysobioyNHwwKSs0NTJ8MDtyPWNbcz4+Ml18MDtuPWcrKG4qMjR8MCkrNDQ4fDA7dD1jW24+PjJdfDA7aWYoKHJ8MCk8KHF8MCkpe2NbcD4+Ml09dDtjW24+PjJdPXI7Y1tzPj4yXT1xO2JyZWFrfWlmKCh0fDApPChxfDApKXtjW3A+PjJdPXQ7Y1tuPj4yXT1xO2JyZWFrfWVsc2V7Y1twPj4yXT1xO2JyZWFrfX1lbHNle3U9ZysobioyNHwwKSs0NDh8MDt2PWNbdT4+Ml18MDtpZigocXwwKT49KHR8MCkpe249ZysobioyNHwwKSs0NTJ8MDtpZigocXwwKTwodnwwKSl7Y1tuPj4yXT12O2NbdT4+Ml09cX1lbHNle2Nbbj4+Ml09cX1hW3M+PjBdPTA7YnJlYWt9Y1tnKyhuKjI0fDApKzQ1Mj4+Ml09djtjW3U+PjJdPXQ7cz1jW3I+PjJdfDA7bj1nKyhuKjI0fDApKzQ0MHwwO3Q9Y1tuPj4yXXwwO2lmKChxfDApPChzfDApKXtjW3A+PjJdPXQ7Y1tuPj4yXT1zO2Nbcj4+Ml09cTticmVha31pZigocXwwKTwodHwwKSl7Y1twPj4yXT10O2Nbbj4+Ml09cTticmVha31lbHNle2NbcD4+Ml09cTticmVha319fXdoaWxlKDApO209KGNbbz4+Ml18MCkrKGNbbT4+Ml18MCl8MDtsPWcrKGw8PDIpKzgyMHwwO249Y1tsPj4yXXwwO2lmKG0+Pj4wPDM2KXttPW0+Pj4xJjIxNDc0ODM2NDZ9ZWxzZXttPTE4fWs9KHJkKGcrNDcwMHwwLGgsKGNbZys0NzM2Pj4yXXwwKSsoKG18aykqNDR8MCl8MCl8MCkrbnwwO2g9Y1tnKzQ3MjQ+PjJdfDA7aWYoKGt8MCk8MCl7aD1rK2h8MH1lbHNle2g9ay0oaz4+PjA8aD4+PjA/MDpoKXwwfXY9Zys4fDA7YVt2Pj4wXT1oO2FbdisxPj4wXT1oPj44O2FbdisyPj4wXT1oPj4xNjthW3YrMz4+MF09aD4+MjQ7Y1tsPj4yXT1oO2Y9ZiswfDA7aD1nKzB8MDtnPWYrMjB8MDtkb3thW2Y+PjBdPWFbaD4+MF18MDtmPWYrMXwwO2g9aCsxfDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2k9ajtyZXR1cm59ZnVuY3Rpb24ga2QoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7Zj1pO2k9aSsxNnwwO2c9ZjtoPWIrMzI1fDA7aWYoKGFbaD4+MF18MCk9PTApe3RkKGIrMjQ0fDApO2FbaD4+MF09MX1pZigoYVtiPj4wXXwwKT09MCl7YVtiPj4wXT0xO3BkKGNbZT4+Ml18MCxnLDgpO249ZFtnKzE+PjBdPDw4fGRbZz4+MF18ZFtnKzI+PjBdPDwxNnxkW2crMz4+MF08PDI0O209ZFtnKzU+PjBdPDw4fGRbZys0Pj4wXXxkW2crNj4+MF08PDE2fGRbZys3Pj4wXTw8MjQ7bD1iKzEwMHwwO2s9bDthW2s+PjBdPW47YVtrKzE+PjBdPW4+Pjg7YVtrKzI+PjBdPW4+PjE2O2FbayszPj4wXT1uPj4yNDtsPWwrNHwwO2FbbD4+MF09bTthW2wrMT4+MF09bT4+ODthW2wrMj4+MF09bT4+MTY7YVtsKzM+PjBdPW0+PjI0O0k9bTtpPWY7cmV0dXJuIG58MH1nPWIrOTJ8MDtkb3tpZigoY1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDApPT0wKXtoPXFkKGUsYis0OHwwKXwwO2lmKChofDApPT0yKXtoPWIrOTZ8MDtjW2g+PjJdPShjW2g+PjJdfDApKzEmMztqPWIrKGNbZz4+Ml08PDMpKzEwNHwwO2o9ZFtqPj4wXXxkW2orMT4+MF08PDh8ZFtqKzI+PjBdPDwxNnxkW2orMz4+MF08PDI0O2o9KHJkKGIrMjQ0fDAsZSwoY1tiKzI4MD4+Ml18MCkrMzUyfDApfDApK2p8MDtrPWNbYisyNjg+PjJdfDA7aWYoKGp8MCk8MCl7aj1qK2t8MH1lbHNle2o9ai0oaj4+PjA8az4+PjA/MDprKXwwfW09KChqfDApPDApPDwzMT4+MzE7az1iKyhjW2g+PjJdPDwzKSsxMDB8MDtuPWs7YVtuPj4wXT1qO2FbbisxPj4wXT1qPj44O2FbbisyPj4wXT1qPj4xNjthW24rMz4+MF09aj4+MjQ7az1rKzR8MDthW2s+PjBdPW07YVtrKzE+PjBdPW0+Pjg7YVtrKzI+PjBdPW0+PjE2O2FbayszPj4wXT1tPj4yNDtrPWIrKGNbaD4+Ml08PDMpKzEwMHwwO209azttPWRbbT4+MF18ZFttKzE+PjBdPDw4fGRbbSsyPj4wXTw8MTZ8ZFttKzM+PjBdPDwyNDtqPWs7YVtqPj4wXT0wO2FbaisxPj4wXT0wO2FbaisyPj4wXT0wO2FbaiszPj4wXT0wO2s9ays0fDA7YVtrPj4wXT1tO2FbaysxPj4wXT1tPj44O2FbaysyPj4wXT1tPj4xNjthW2srMz4+MF09bT4+MjQ7az1lKzR8MDttPWNbaz4+Ml18MDtqPWUrOHwwO249KGNbaj4+Ml18MCk+Pj4xNjtjW2o+PjJdPW47bD0obT4+PjApLyhuPj4+MCl8MDtuPW0tKGVhKG4sbCl8MCl8MDtjW2s+PjJdPW47ZG97bj0obWQoY1tlPj4yXXwwKXwwKSYyNTV8bjw8ODtjW2s+PjJdPW47bT1jW2o+PjJdfDA7bz1tPDw4O2Nbaj4+Ml09b313aGlsZShvPj4+MDwxNjc3NzIxNik7bz1tPj4+OCY2NTUzNTtjW2o+PjJdPW87bT0obj4+PjApLyhvPj4+MCl8MDtuPW4tKGVhKG0sbyl8MCl8MDtjW2s+PjJdPW47ZG97bj0obWQoY1tlPj4yXXwwKXwwKSYyNTV8bjw8ODtjW2s+PjJdPW47bz1jW2o+PjJdPDw4O2Nbaj4+Ml09b313aGlsZShvPj4+MDwxNjc3NzIxNik7bz1iKyhjW2g+PjJdPDwzKSsxMDB8MDtuPW87az1uO249bis0fDA7bj1kW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjQ7bD1kW2s+PjBdfGRbaysxPj4wXTw8OHxkW2srMj4+MF08PDE2fGRbayszPj4wXTw8MjR8KG08PDE2fGwmNjU1MzUpO209bzthW20+PjBdPWw7YVttKzE+PjBdPWw+Pjg7YVttKzI+PjBdPWw+PjE2O2FbbSszPj4wXT1sPj4yNDtvPW8rNHwwO2Fbbz4+MF09bjthW28rMT4+MF09bj4+ODthW28rMj4+MF09bj4+MTY7YVtvKzM+PjBdPW4+PjI0O289Y1toPj4yXXwwO2NbZz4+Ml09bztjW2IrKG88PDIpKzEzMj4+Ml09MDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31lbHNlIGlmKChofDApPT0xKXtlPXJkKGIrMjQ0fDAsZSxjW2IrMjgwPj4yXXwwKXwwO2g9Y1tiKzI2OD4+Ml18MDtpZigoZXwwKTwwKXtlPWgrZXwwfWVsc2V7ZT1lLShlPj4+MDxoPj4+MD8wOmgpfDB9Y1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdPWU7bz1jW2c+PjJdfDA7bD1jW2IrKG88PDIpKzEzMj4+Ml18MDtvPWIrKG88PDMpKzEwMHwwO249bzttPW47bj1uKzR8MDtsPUluKGRbbT4+MF18ZFttKzE+PjBdPDw4fGRbbSsyPj4wXTw8MTZ8ZFttKzM+PjBdPDwyNHwwLGRbbj4+MF18ZFtuKzE+PjBdPDw4fGRbbisyPj4wXTw8MTZ8ZFtuKzM+PjBdPDwyNHwwLGx8MCwoKGx8MCk8MCk8PDMxPj4zMXwwKXwwO249STttPW87YVttPj4wXT1sO2FbbSsxPj4wXT1sPj44O2FbbSsyPj4wXT1sPj4xNjthW20rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW47YVtvKzE+PjBdPW4+Pjg7YVtvKzI+PjBdPW4+PjE2O2FbbyszPj4wXT1uPj4yNDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31lbHNle2lmKChofDApPD0yKXticmVha31jW2c+PjJdPWgrMisoY1tnPj4yXXwwKSYzO2tkKGIsZSl8MDticmVha319ZWxzZXtoPXFkKGUsYis0fDApfDA7aWYoKGh8MCk9PTEpe2g9Y1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDA7ZT0ocmQoYisyNDR8MCxlLChjW2IrMjgwPj4yXXwwKSs0NHwwKXwwKStofDA7aD1jW2IrMjY4Pj4yXXwwO2lmKChlfDApPDApe2U9ZStofDB9ZWxzZXtlPWUtKGU+Pj4wPGg+Pj4wPzA6aCl8MH1vPWIrKGNbZz4+Ml08PDMpKzEwMHwwO2w9bztuPWw7bD1sKzR8MDtsPUluKGRbbj4+MF18ZFtuKzE+PjBdPDw4fGRbbisyPj4wXTw8MTZ8ZFtuKzM+PjBdPDwyNHwwLGRbbD4+MF18ZFtsKzE+PjBdPDw4fGRbbCsyPj4wXTw8MTZ8ZFtsKzM+PjBdPDwyNHwwLGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwKXwwO249STttPW87YVttPj4wXT1sO2FbbSsxPj4wXT1sPj44O2FbbSsyPj4wXT1sPj4xNjthW20rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW47YVtvKzE+PjBdPW4+Pjg7YVtvKzI+PjBdPW4+PjE2O2FbbyszPj4wXT1uPj4yNDtjW2IrKGNbZz4+Ml08PDIpKzE0OD4+Ml09MDticmVha31pZigoaHwwKT49NTExKXtpZigoaHwwKSE9NTEyKXtpZigoaHwwKTw9NTExKXticmVha31jW2c+PjJdPShjW2c+PjJdfDApK2gmMztrZChiLGUpfDA7YnJlYWt9aD1iKzk2fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxJjM7az1iKyhjW2c+PjJdPDwzKSsxMDR8MDtrPWRbaz4+MF18ZFtrKzE+PjBdPDw4fGRbaysyPj4wXTw8MTZ8ZFtrKzM+PjBdPDwyNDtrPShyZChiKzI0NHwwLGUsKGNbYisyODA+PjJdfDApKzM1MnwwKXwwKStrfDA7aj1jW2IrMjY4Pj4yXXwwO2lmKChrfDApPDApe2o9aytqfDB9ZWxzZXtqPWstKGs+Pj4wPGo+Pj4wPzA6ail8MH1vPSgoanwwKTwwKTw8MzE+PjMxO2s9YisoY1toPj4yXTw8MykrMTAwfDA7bD1rO2FbbD4+MF09ajthW2wrMT4+MF09aj4+ODthW2wrMj4+MF09aj4+MTY7YVtsKzM+PjBdPWo+PjI0O2s9ays0fDA7YVtrPj4wXT1vO2FbaysxPj4wXT1vPj44O2FbaysyPj4wXT1vPj4xNjthW2srMz4+MF09bz4+MjQ7az1iKyhjW2g+PjJdPDwzKSsxMDB8MDtvPWs7bz1kW28+PjBdfGRbbysxPj4wXTw8OHxkW28rMj4+MF08PDE2fGRbbyszPj4wXTw8MjQ7bD1rO2FbbD4+MF09MDthW2wrMT4+MF09MDthW2wrMj4+MF09MDthW2wrMz4+MF09MDtrPWsrNHwwO2Fbaz4+MF09bzthW2srMT4+MF09bz4+ODthW2srMj4+MF09bz4+MTY7YVtrKzM+PjBdPW8+PjI0O2s9ZSs0fDA7bz1jW2s+PjJdfDA7bD1lKzh8MDttPShjW2w+PjJdfDApPj4+MTY7Y1tsPj4yXT1tO2o9KG8+Pj4wKS8obT4+PjApfDA7bT1vLShlYShtLGopfDApfDA7Y1trPj4yXT1tO2Rve209KG1kKGNbZT4+Ml18MCl8MCkmMjU1fG08PDg7Y1trPj4yXT1tO249Y1tsPj4yXXwwO289bjw8ODtjW2w+PjJdPW99d2hpbGUobz4+PjA8MTY3NzcyMTYpO289bj4+PjgmNjU1MzU7Y1tsPj4yXT1vO249KG0+Pj4wKS8obz4+PjApfDA7bT1tLShlYShuLG8pfDApfDA7Y1trPj4yXT1tO2Rve209KG1kKGNbZT4+Ml18MCl8MCkmMjU1fG08PDg7Y1trPj4yXT1tO289Y1tsPj4yXTw8ODtjW2w+PjJdPW99d2hpbGUobz4+PjA8MTY3NzcyMTYpO289YisoY1toPj4yXTw8MykrMTAwfDA7bT1vO2w9bTttPW0rNHwwO209ZFttPj4wXXxkW20rMT4+MF08PDh8ZFttKzI+PjBdPDwxNnxkW20rMz4+MF08PDI0O2w9ZFtsPj4wXXxkW2wrMT4+MF08PDh8ZFtsKzI+PjBdPDwxNnxkW2wrMz4+MF08PDI0fChuPDwxNnxqJjY1NTM1KTtuPW87YVtuPj4wXT1sO2FbbisxPj4wXT1sPj44O2FbbisyPj4wXT1sPj4xNjthW24rMz4+MF09bD4+MjQ7bz1vKzR8MDthW28+PjBdPW07YVtvKzE+PjBdPW0+Pjg7YVtvKzI+PjBdPW0+PjE2O2FbbyszPj4wXT1tPj4yNDtvPWNbaD4+Ml18MDtjW2c+PjJdPW87Y1tiKyhvPDwyKSsxMzI+PjJdPTA7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTA7YnJlYWt9ZG97aWYoKGh8MCk9PTApe2U9cmQoYisyNDR8MCxlLChjW2IrMjgwPj4yXXwwKSszMDh8MCl8MDtoPWNbYisyNjg+PjJdfDA7aWYoKGV8MCk8MCl7ZT1oK2V8MH1lbHNle2U9ZS0oZT4+PjA8aD4+PjA/MDpoKXwwfWg9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2g9Y1tnPj4yXXwwO2lmKChjW2IrKGg8PDIpKzE0OD4+Ml18MCk+Myl7Y1tiKyhoPDwyKSsxMzI+PjJdPWU7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTB9fWVsc2V7aWYoKGh8MCk8NTAwKXtsPWIrMjQ0fDA7aj1lYShjW2IrKGNbZz4+Ml08PDIpKzEzMj4+Ml18MCxoKXwwO2s9Y1tiKzI4MD4+Ml18MDtpZigoaHwwKTwxMCl7aD0ocmQobCxlLGsrODh8MCl8MCkranwwO2U9Y1tiKzI2OD4+Ml18MDtpZigoaHwwKTwwKXtlPWgrZXwwO2JyZWFrfWVsc2V7ZT1oLShoPj4+MDxlPj4+MD8wOmUpfDA7YnJlYWt9fWVsc2V7aD0ocmQobCxlLGsrMTMyfDApfDApK2p8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MDticmVha31lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwO2JyZWFrfX19aWYoKGh8MCk9PTUwMCl7aD0oY1tiKyhjW2c+PjJdPDwyKSsxMzI+PjJdfDApKjUwMHwwO2g9KHJkKGIrMjQ0fDAsZSwoY1tiKzI4MD4+Ml18MCkrMTc2fDApfDApK2h8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MH1lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwfWg9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2g9Y1tnPj4yXXwwO2lmKChjW2IrKGg8PDIpKzE0OD4+Ml18MCk8PTMpe2JyZWFrfWNbYisoaDw8MikrMTMyPj4yXT1lO2NbYisoY1tnPj4yXTw8MikrMTQ4Pj4yXT0wO2JyZWFrfWg9NTAwLWh8MDtrPWIrMjQ0fDA7aj1jW2IrKGNbZz4+Ml08PDIpKzEzMj4+Ml18MDtpZigoaHwwKT4tMTApe2g9ZWEoaixoKXwwO2g9KHJkKGssZSwoY1tiKzI4MD4+Ml18MCkrMjIwfDApfDApK2h8MDtlPWNbYisyNjg+PjJdfDA7aWYoKGh8MCk8MCl7ZT1oK2V8MDticmVha31lbHNle2U9aC0oaD4+PjA8ZT4+PjA/MDplKXwwO2JyZWFrfX1oPWVhKGosLTEwKXwwO2U9KHJkKGssZSwoY1tiKzI4MD4+Ml18MCkrMjY0fDApfDApK2h8MDtoPWNbYisyNjg+PjJdfDA7aWYoKGV8MCk8MCl7aD1lK2h8MH1lbHNle2g9ZS0oZT4+PjA8aD4+PjA/MDpoKXwwfWU9YisoY1tnPj4yXTw8MikrMTQ4fDA7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxO2U9Y1tnPj4yXXwwO2lmKChjW2IrKGU8PDIpKzE0OD4+Ml18MCk+Myl7Y1tiKyhlPDwyKSsxMzI+PjJdPWg7Y1tiKyhjW2c+PjJdPDwyKSsxNDg+PjJdPTA7ZT1ofWVsc2V7ZT1ofX19d2hpbGUoMCk7bz1iKyhjW2c+PjJdPDwzKSsxMDB8MDtsPW87bj1sO2w9bCs0fDA7bD1JbihkW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjR8MCxkW2w+PjBdfGRbbCsxPj4wXTw8OHxkW2wrMj4+MF08PDE2fGRbbCszPj4wXTw8MjR8MCxlfDAsKChlfDApPDApPDwzMT4+MzF8MCl8MDtuPUk7bT1vO2FbbT4+MF09bDthW20rMT4+MF09bD4+ODthW20rMj4+MF09bD4+MTY7YVttKzM+PjBdPWw+PjI0O289bys0fDA7YVtvPj4wXT1uO2FbbysxPj4wXT1uPj44O2FbbysyPj4wXT1uPj4xNjthW28rMz4+MF09bj4+MjR9fXdoaWxlKDApO249YisoY1tnPj4yXTw8MykrMTAwfDA7bz1uO249bis0fDA7bj1kW24+PjBdfGRbbisxPj4wXTw8OHxkW24rMj4+MF08PDE2fGRbbiszPj4wXTw8MjQ7bz1kW28+PjBdfGRbbysxPj4wXTw8OHxkW28rMj4+MF08PDE2fGRbbyszPj4wXTw8MjQ7ST1uO2k9ZjtyZXR1cm4gb3wwfWZ1bmN0aW9uIGxkKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtnPWk7aT1pKzE2fDA7aD1nO2lmKChhW2I+PjBdfDApPT0wKXthW2I+PjBdPTE7cGQoY1tlPj4yXXwwLGgsNik7dT1hW2grMT4+MF08PDh8ZFtoPj4wXTtqPXUmNjU1MzU7bD1hW2grMj4+MF18MDtrPShhW2grMz4+MF08PDh8bCYyNTUpJjY1NTM1O249YVtoKzQ+PjBdfDA7bT0oYVtoKzU+PjBdPDw4fG4mMjU1KSY2NTUzNTtoPWIrMXwwO2FbaD4+MF09ajthW2grMT4+MF09aj4+ODtoPWIrM3wwO2FbaD4+MF09azthW2grMT4+MF09az4+ODtoPWIrNXwwO2FbaD4+MF09bTthW2grMT4+MF09bT4+ODtoPXU7bT0obSY2NTUzNSk+Pj44JjI1NX1lbHNle2w9cWQoZSxiKzh8MCl8MDtpZigobCYxfDApPT0wKXttPWIrMXwwO209ZFttPj4wXXxkW20rMT4+MF08PDg7aD1tJjI1NX1lbHNle2g9KHFkKGUsYis1MnwwKXwwKSYyNTU7bT1iKzF8MDttPWRbbT4+MF18ZFttKzE+PjBdPDw4O2g9KG0mMjU1KStofDA7aD0oaHwwKT4yNTU/aCs2NTI4MHwwOmh9aWYoKGwmMnwwKT09MCl7aD1tJjY1MjgwfGgmNjU1MzV9ZWxzZXt1PShxZChlLGIrOTZ8MCl8MCkmMjU1O209YisxfDA7bT1kW20+PjBdfGRbbSsxPj4wXTw8ODt1PSgobSY2NTUzNSk+Pj44KSt1fDA7aD0oKHV8MCk+MjU1P3UrNjUyODB8MDp1KTw8OHxoJjY1NTM1fWo9aCY2NTUzNTtkb3tpZigobCY2NHwwKT09MCl7az1iKzF8MDtsPWIrNXwwO249ajttPWp9ZWxzZXtrPWIrMXwwO209KGgmMjU1KS0obSYyNTUpfDA7ZG97aWYoKGwmNHwwKSE9MCl7cD1xZChlLGIrMTQwfDApfDA7bj1wJjI1NTtvPWIrM3wwO289ZFtvPj4wXXxkW28rMT4+MF08PDg7cT1vJjY1NTM1O3I9KHEmMjU1KSttfDA7cz0ocnwwKTwxO2lmKChyKyAtMXwwKT4+PjA+MjUzKXt0PXM/MDoyNTV9ZWxzZXt0PXErbSYyNTV9aWYoKHQrbnwwKT4yNTUpe2lmKCFzKXtpZigocnwwKT4yNTQpe249MjU1fWVsc2V7bj1xK20mMjU1fX1lbHNle249MH1uPShwfC0yNTYpK258MDticmVha31lbHNle2lmKCFzKXtpZigocnwwKT4yNTQpe3A9MjU1fWVsc2V7cD1xK20mMjU1fX1lbHNle3A9MH1uPXArbnwwO2JyZWFrfX1lbHNle289YiszfDA7bz1kW28+PjBdfGRbbysxPj4wXTw8ODtuPW8mMjU1fX13aGlsZSgwKTtkb3tpZigobCYxNnwwKSE9MCl7cD1xZChlLGIrMjI4fDApfDA7bz1iKzN8MDtvPWRbbz4+MF18ZFtvKzE+PjBdPDw4O3I9KChuJjI1NSkrbS0obyYyNTUpfDApLzJ8MDttPXAmMjU1O3Q9Yis1fDA7dD0oZFt0Pj4wXXxkW3QrMT4+MF08PDgpJjY1NTM1O3U9KHQmMjU1KStyfDA7cz0odXwwKTwxO2lmKCh1KyAtMXwwKT4+PjA+MjUzKXtxPXM/MDoyNTV9ZWxzZXtxPXQrciYyNTV9aWYoKHErbXwwKT4yNTUpe2lmKCFzKXtpZigodXwwKT4yNTQpe209MjU1fWVsc2V7bT10K3ImMjU1fX1lbHNle209MH1tPShwfC0yNTYpK218MDtwPW87YnJlYWt9ZWxzZXtpZighcyl7aWYoKHV8MCk+MjU0KXtwPTI1NX1lbHNle3A9dCtyJjI1NX19ZWxzZXtwPTB9bT1wK218MDtwPW87YnJlYWt9fWVsc2V7bT1iKzV8MDttPShkW20+PjBdfGRbbSsxPj4wXTw8OCkmMjU1O3A9b319d2hpbGUoMCk7bz0oaD4+PjgmMjU1KS0oKChkW2s+PjBdfGRbaysxPj4wXTw8OCkmNjU1MzUpPj4+OCl8MDtpZigobCY4fDApPT0wKXtyPXAmNjUyODB8biY2NTUzNX1lbHNle3A9cWQoZSxiKzE4NHwwKXwwO3E9cCYyNTU7dD1iKzN8MDt0PSgoKGRbdD4+MF18ZFt0KzE+PjBdPDw4KSY2NTUzNSk+Pj44KStvfDA7cj0odHwwKTwxO2lmKHIpe3M9MH1lbHNle3M9KHR8MCk+MjU0PzI1NTp0JjI1NX1pZigocytxfDApPjI1NSl7aWYocil7cT0wfWVsc2V7cT0odHwwKT4yNTQ/MjU1OnQmMjU1fXA9KHB8LTI1NikrcXwwfWVsc2V7aWYocil7cD0wfWVsc2V7cD0odHwwKT4yNTQ/MjU1OnQmMjU1fXA9cCtxfDB9cj1wPDw4fG4mNjU1MzV9bj1yJjY1NTM1O2lmKChsJjMyfDApPT0wKXt1PWIrNXwwO2w9dTttPSgoZFt1Pj4wXXxkW3UrMT4+MF08PDgpJjY1MjgwfG0pJjY1NTM1O2JyZWFrfXE9cWQoZSxiKzI3MnwwKXwwO3U9YiszfDA7cD1xJjI1NTtsPWIrNXwwO3I9KCgoZFtsPj4wXXxkW2wrMT4+MF08PDgpJjY1NTM1KT4+PjgpKygoKHI+Pj44JjI1NSkrby0oKChkW3U+PjBdfGRbdSsxPj4wXTw8OCkmNjU1MzUpPj4+OCl8MCkvMnwwKXwwO289KHJ8MCk8MTtpZihvKXtzPTB9ZWxzZXtzPShyfDApPjI1ND8yNTU6ciYyNTV9aWYoKHMrcHwwKT4yNTUpe2lmKG8pe289MH1lbHNle289KHJ8MCk+MjU0PzI1NTpyJjI1NX1vPShxfC0yNTYpK298MH1lbHNle2lmKG8pe289MH1lbHNle289KHJ8MCk+MjU0PzI1NTpyJjI1NX1vPW8rcHwwfW09KG88PDh8bSkmNjU1MzV9fXdoaWxlKDApO2Fbaz4+MF09ajthW2srMT4+MF09aj4+ODtrPWIrM3wwO2Fbaz4+MF09bjthW2srMT4+MF09bj4+ODthW2w+PjBdPW07YVtsKzE+PjBdPW0+Pjg7az1uO2w9biYyNTU7bj1tJjI1NTttPShtJjY1NTM1KT4+PjgmMjU1fWFbZisxPj4wXT0oaiY2NTUzNSk+Pj44O2FbZj4+MF09aDthW2YrMz4+MF09KGsmNjU1MzUpPj4+ODthW2YrMj4+MF09bDthW2YrNT4+MF09bTthW2YrND4+MF09bjtmPWIrMzE2fDA7aWYoKGFbZj4+MF18MCk9PTApe2k9ZztyZXR1cm59dT0oKG1kKGNbZT4+Ml18MCl8MCkmMjU1KTw8MjQ7dT0oKG1kKGNbZT4+Ml18MCl8MCkmMjU1KTw8MTZ8dTt1PXV8KChtZChjW2U+PjJdfDApfDApJjI1NSk8PDg7Y1tlKzQ+PjJdPXV8KG1kKGNbZT4+Ml18MCl8MCkmMjU1O2FbZj4+MF09MDtpPWc7cmV0dXJufWZ1bmN0aW9uIG1kKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Zz1pO2U9Yis0fDA7aD1jW2U+PjJdfDA7Zj1iKzh8MDtpZigoaHwwKTwoY1tmPj4yXXwwKSl7aj1oO2g9aisxfDA7Y1tlPj4yXT1oO2g9YisxMnwwO2g9Y1toPj4yXXwwO2o9aCtqfDA7aj1hW2o+PjBdfDA7aT1nO3JldHVybiBqfDB9Y1tlPj4yXT0wO2o9Y1tiPj4yXXwwO2g9aisxM3wwO2lmKChhW2g+PjBdfDApPT0wKXtrPWorNHwwO249ais4fDA7bD1jW24+PjJdfDA7bT0oY1trPj4yXXwwKS1sfDA7bT0obXwwKTwxMDQ4NTc2P206MTA0ODU3NjtNbihjW2IrMTI+PjJdfDAsKGNbaj4+Ml18MCkrbHwwLG18MCl8MDtsPShjW24+PjJdfDApK218MDtjW24+PjJdPWw7Y1tqKzE2Pj4yXT1tO2lmKChsfDApPj0oY1trPj4yXXwwKSl7YVtoPj4wXT0xfX1lbHNle2FbaisxMj4+MF09MX1uPWNbKGNbYj4+Ml18MCkrMTY+PjJdfDA7Y1tmPj4yXT1uO2lmKChufDApIT0wKXtuPWNbZT4+Ml18MDttPW4rMXwwO2NbZT4+Ml09bTttPWIrMTJ8MDttPWNbbT4+Ml18MDtuPW0rbnwwO249YVtuPj4wXXwwO2k9ZztyZXR1cm4gbnwwfWI9WGEoOCl8MDtjW2I+PjJdPTk5Mjg7d2hpbGUoMSl7ZT11bigzMil8MDtpZigoZXwwKSE9MCl7ZD0xNDticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZHwwKT09MTQpe2NbZSs0Pj4yXT0xOTtjW2U+PjJdPTE5O2Y9ZSsxMnwwO2NbYis0Pj4yXT1mO2NbZSs4Pj4yXT0wO2Y9ZiswfDA7ZT04MjR8MDtkPWYrMjB8MDtkb3thW2Y+PjBdPWFbZT4+MF18MDtmPWYrMXwwO2U9ZSsxfDB9d2hpbGUoKGZ8MCk8KGR8MCkpO2NbYj4+Ml09ODU2O3diKGJ8MCw4MDgsMjYpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpO3JldHVybiAwfWZ1bmN0aW9uIG5kKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBvZChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHBkKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2Y9aTtnPWIrNHwwO2s9Y1tnPj4yXXwwO2o9Yis4fDA7ZG97aWYoKGt8MCk8KGNbaj4+Ml18MCkpe2o9a31lbHNle2NbZz4+Ml09MDtrPWNbYj4+Ml18MDtsPWsrMTN8MDtpZigoYVtsPj4wXXwwKT09MCl7bT1rKzR8MDtwPWsrOHwwO249Y1twPj4yXXwwO289KGNbbT4+Ml18MCktbnwwO289KG98MCk8MTA0ODU3Nj9vOjEwNDg1NzY7TW4oY1tiKzEyPj4yXXwwLChjW2s+PjJdfDApK258MCxvfDApfDA7bj0oY1twPj4yXXwwKStvfDA7Y1twPj4yXT1uO2NbaysxNj4+Ml09bztpZigobnwwKT49KGNbbT4+Ml18MCkpe2FbbD4+MF09MX19ZWxzZXthW2srMTI+PjBdPTF9cD1jWyhjW2I+PjJdfDApKzE2Pj4yXXwwO2Nbaj4+Ml09cDtpZigocHwwKSE9MCl7aj1jW2c+PjJdfDA7YnJlYWt9ZT1YYSg4KXwwO2NbZT4+Ml09OTkyODt3aGlsZSgxKXtmPXVuKDMyKXwwO2lmKChmfDApIT0wKXtoPTE0O2JyZWFrfWY9Y1s1NjY2XXwwO2NbNTY2Nl09ZiswO2lmKChmfDApPT0wKXticmVha31zY1tmJjMxXSgpfWlmKChofDApPT0xNCl7Y1tmKzQ+PjJdPTE5O2NbZj4+Ml09MTk7ZD1mKzEyfDA7Y1tlKzQ+PjJdPWQ7Y1tmKzg+PjJdPTA7ZD1kKzB8MDtnPTgyNHwwO2Y9ZCsyMHwwO2Rve2FbZD4+MF09YVtnPj4wXXwwO2Q9ZCsxfDA7Zz1nKzF8MH13aGlsZSgoZHwwKTwoZnwwKSk7Y1tlPj4yXT04NTY7d2IoZXwwLDgwOCwyNil9cD1YYSg0KXwwO2NbcD4+Ml09MjI2ODA7d2IocHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2I9Y1tiKzEyPj4yXXwwO2g9YisoaitlKXwwO2lmKChlfDApPT0wKXtwPWo7cD1wK2V8MDtjW2c+PjJdPXA7aT1mO3JldHVybn1iPWIranwwO3doaWxlKDEpe2FbZD4+MF09YVtiPj4wXXwwO2I9YisxfDA7aWYoKGJ8MCk9PShofDApKXticmVha31lbHNle2Q9ZCsxfDB9fXA9Y1tnPj4yXXwwO3A9cCtlfDA7Y1tnPj4yXT1wO2k9ZjtyZXR1cm59ZnVuY3Rpb24gcWQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7ZT1pO2Q9YSs4fDA7Zj1jW2Q+PjJdfDA7aD1jW2IrMTY+PjJdfDA7aWYoKGh8MCkhPTApe2o9Y1thKzQ+PjJdfDA7Zz1mPj4+MTU7Y1tkPj4yXT1nO2w9KGo+Pj4wKS8oZz4+PjApfDA7bT1sPj4+KGNbYis0MD4+Ml18MCk7az1jW2grKG08PDIpPj4yXXwwO209KGNbaCsobSsxPDwyKT4+Ml18MCkrMXwwO249aysxfDA7aD1jW2IrOD4+Ml18MDtpZihtPj4+MD5uPj4+MCl7d2hpbGUoMSl7bj0obStrfDApPj4+MTtvPShjW2grKG48PDIpPj4yXXwwKT4+PjA+bD4+PjA7az1vP2s6bjttPW8/bjptO249aysxfDA7aWYoIShtPj4+MD5uPj4+MCkpe2w9bjticmVha319fWVsc2V7bD1ufW49ZWEoZyxjW2grKGs8PDIpPj4yXXwwKXwwO2lmKChrfDApIT0oY1tiKzMyPj4yXXwwKSl7Zj1lYShjW2grKGw8PDIpPj4yXXwwLGcpfDB9fWVsc2V7aD1mPj4+MTU7Y1tkPj4yXT1oO2w9Y1tiPj4yXXwwO2c9Y1tiKzg+PjJdfDA7aj1jW2ErND4+Ml18MDttPWw+Pj4xO2s9MDtuPTA7ZG97cD1lYShjW2crKG08PDIpPj4yXXwwLGgpfDA7bz1wPj4+MD5qPj4+MDtmPW8/cDpmO249bz9uOnA7az1vP2s6bTtsPW8/bTpsO209KGsrbHwwKT4+PjF9d2hpbGUoKG18MCkhPShrfDApKX1nPWErNHwwO2g9ai1ufDA7Y1tnPj4yXT1oO3A9Zi1ufDA7Y1tkPj4yXT1wO2lmKHA+Pj4wPDE2Nzc3MjE2KXtkb3toPShtZChjW2E+PjJdfDApfDApJjI1NXxoPDw4O2NbZz4+Ml09aDtwPWNbZD4+Ml08PDg7Y1tkPj4yXT1wfXdoaWxlKHA+Pj4wPDE2Nzc3MjE2KX1vPShjW2IrMTI+PjJdfDApKyhrPDwyKXwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtvPWIrMjh8MDtwPShjW28+PjJdfDApKyAtMXwwO2Nbbz4+Ml09cDtpZigocHwwKSE9MCl7aT1lO3JldHVybiBrfDB9ZGQoYik7aT1lO3JldHVybiBrfDB9ZnVuY3Rpb24gcmQoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtmPXFkKGIsZCl8MDtjW2E+PjJdPWY7aWYoKGZ8MCkhPTApe2lmKCEoZj4+PjA8MzIpKXtsPWNbYSsyOD4+Ml18MDtpPWU7cmV0dXJuIGx8MH1kPWNbYSsxMj4+Ml18MDtpZihmPj4+MD5kPj4+MCl7ZD1mLWR8MDtsPXFkKGIsKGNbYSs2OD4+Ml18MCkrKChmKyAtMXwwKSo0NHwwKXwwKXwwO2Q9bDw8ZHwoc2QoYixkKXwwKX1lbHNle2Q9cWQoYiwoY1thKzY4Pj4yXXwwKSsoKGYrIC0xfDApKjQ0fDApfDApfDB9YT1jW2E+PjJdfDA7aWYoKGR8MCk8KDE8PGErIC0xfDApKXtsPWQrMSsoLTE8PGEpfDA7aT1lO3JldHVybiBsfDB9ZWxzZXtsPWQrMXwwO2k9ZTtyZXR1cm4gbHwwfX1mPWErNTZ8MDtoPWIrOHwwO2w9Y1toPj4yXXwwO2o9ZWEobD4+PjEzLGNbZj4+Ml18MCl8MDtnPWIrNHwwO2s9Y1tnPj4yXXwwO209az4+PjA+PWo+Pj4wO2Q9bSYxO2lmKG0pe2NbZz4+Ml09ay1qO2o9bC1qfDA7Y1toPj4yXT1qfWVsc2V7Y1toPj4yXT1qO2o9YSs2MHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtqPWNbaD4+Ml18MH1pZihqPj4+MDwxNjc3NzIxNil7aj1jW2c+PjJdfDA7ZG97aj0obWQoY1tiPj4yXXwwKXwwKSYyNTV8ajw8ODtjW2c+PjJdPWo7bT1jW2g+PjJdPDw4O2NbaD4+Ml09bX13aGlsZShtPj4+MDwxNjc3NzIxNil9aD1hKzUyfDA7bT0oY1toPj4yXXwwKSsgLTF8MDtjW2g+PjJdPW07aWYoKG18MCkhPTApe209ZDtpPWU7cmV0dXJuIG18MH1iPWErNDh8MDtnPWNbYj4+Ml18MDtqPWErNjR8MDtrPShjW2o+PjJdfDApK2d8MDtjW2o+PjJdPWs7aWYoaz4+PjA+ODE5Mil7az0oaysxfDApPj4+MTtjW2o+PjJdPWs7bT1hKzYwfDA7YT0oKGNbbT4+Ml18MCkrMXwwKT4+PjE7Y1ttPj4yXT1hO2lmKChhfDApPT0oa3wwKSl7bT1rKzF8MDtjW2o+PjJdPW07aj1tfWVsc2V7aj1rO2s9YX19ZWxzZXtqPWs7az1jW2ErNjA+PjJdfDB9Y1tmPj4yXT0oZWEoMjE0NzQ4MzY0OC8oaj4+PjApfDAsayl8MCk+Pj4xODttPWcqNXwwO209bT4+PjA+MjU5PzY0Om0+Pj4yO2NbYj4+Ml09bTtjW2g+PjJdPW07bT1kO2k9ZTtyZXR1cm4gbXwwfWZ1bmN0aW9uIHNkKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2Y9aTtkPWErNHwwO2c9Y1tkPj4yXXwwO2U9YSs4fDA7aD1jW2U+PjJdfDA7aWYoYj4+PjA+MTkpe2o9aD4+PjE2O2NbZT4+Ml09ajtoPShnPj4+MCkvKGo+Pj4wKXwwO2c9Zy0oZWEoaCxqKXwwKXwwO2NbZD4+Ml09Zztkb3tnPShtZChjW2E+PjJdfDApfDApJjI1NXxnPDw4O2NbZD4+Ml09ZztqPWNbZT4+Ml08PDg7Y1tlPj4yXT1qfXdoaWxlKGo+Pj4wPDE2Nzc3MjE2KTtqPShzZChhLGIrIC0xNnwwKXwwKTw8MTZ8aCY2NTUzNTtpPWY7cmV0dXJuIGp8MH1qPWg+Pj5iO2NbZT4+Ml09ajtiPShnPj4+MCkvKGo+Pj4wKXwwO2c9Zy0oZWEoYixqKXwwKXwwO2NbZD4+Ml09ZztpZighKGo+Pj4wPDE2Nzc3MjE2KSl7aT1mO3JldHVybiBifDB9ZG97Zz0obWQoY1thPj4yXXwwKXwwKSYyNTV8Zzw8ODtjW2Q+PjJdPWc7aj1jW2U+PjJdPDw4O2NbZT4+Ml09an13aGlsZShqPj4+MDwxNjc3NzIxNik7aT1mO3JldHVybiBifDB9ZnVuY3Rpb24gdGQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7Zj1pO2k9aSs5NnwwO2g9Zis0NHwwO2Q9Zjt3PWIrMzZ8MDt1PWIrNDB8MDtpZigoY1t3Pj4yXXwwKSE9KGNbdT4+Ml18MCkpe2k9ZjtyZXR1cm59aj1iKzh8MDtlPWIrMjB8MDtpZigoY1tqPj4yXXwwKSE9MCl7Zz1iKzQ0fDA7bj1oKzR8MDttPWgrOHwwO2w9aCsxMnwwO2s9aCsxNnwwO289aCsyMHwwO3A9aCsyNHwwO3E9aCsyOHwwO3I9aCszMnwwO3M9aCszNnwwO3Q9aCs0MHwwO3Y9MDtkb3tjZChoLChjW2U+PjJdfDApKzF8MCk7eD1jW3U+PjJdfDA7aWYoeD4+PjA8KGNbZz4+Ml18MCk+Pj4wKXtpZigoeHwwKT09MCl7eD0wfWVsc2V7Y1t4Pj4yXT1jW2g+PjJdO2FbeCs0Pj4wXT1hW24+PjBdfDA7Y1t4Kzg+PjJdPWNbbT4+Ml07Y1t4KzEyPj4yXT1jW2w+PjJdO2NbeCsxNj4+Ml09Y1trPj4yXTtjW3grMjA+PjJdPWNbbz4+Ml07Y1t4KzI0Pj4yXT1jW3A+PjJdO2NbeCsyOD4+Ml09Y1txPj4yXTtjW3grMzI+PjJdPWNbcj4+Ml07Y1t4KzM2Pj4yXT1jW3M+PjJdO2NbeCs0MD4+Ml09Y1t0Pj4yXTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDt4PWNbdT4+Ml18MH1jW3U+PjJdPXgrNDR9ZWxzZXt1ZCh3LGgpfXg9Y1ttPj4yXXwwO2lmKCh4fDApIT0wKXt2bihjW3grIC00Pj4yXXwwKX14PWNbbD4+Ml18MDtpZigoeHwwKSE9MCl7dm4oY1t4KyAtND4+Ml18MCl9eD1jW2s+PjJdfDA7aWYoKHh8MCkhPTApe3ZuKGNbeCsgLTQ+PjJdfDApfXY9disxfDB9d2hpbGUodj4+PjA8KGNbaj4+Ml18MCk+Pj4wKX1pZigoY1tlPj4yXXwwKT09MCl7aT1mO3JldHVybn10PWIrMTJ8MDtrPWIrNzJ8MDtzPWIrNzZ8MDtsPWQrNHwwO2o9ZCs4fDA7bz1kKzEyfDA7aD1kKzE2fDA7bT1kKzIwfDA7bj1kKzI0fDA7Zz1kKzI4fDA7cD1kKzMyfDA7cT1kKzM2fDA7cj1kKzQwfDA7Yj1iKzY4fDA7dT0xO2Rve3Y9Y1t0Pj4yXXwwO2NkKGQsMTw8KHU+Pj4wPnY+Pj4wP3Y6dSkpO3Y9Y1trPj4yXXwwO2lmKHY+Pj4wPChjW3M+PjJdfDApPj4+MCl7aWYoKHZ8MCk9PTApe3Y9MH1lbHNle2Nbdj4+Ml09Y1tkPj4yXTthW3YrND4+MF09YVtsPj4wXXwwO2Nbdis4Pj4yXT1jW2o+PjJdO2NbdisxMj4+Ml09Y1tvPj4yXTtjW3YrMTY+PjJdPWNbaD4+Ml07Y1t2KzIwPj4yXT1jW20+PjJdO2NbdisyND4+Ml09Y1tuPj4yXTtjW3YrMjg+PjJdPWNbZz4+Ml07Y1t2KzMyPj4yXT1jW3A+PjJdO2NbdiszNj4+Ml09Y1txPj4yXTtjW3YrNDA+PjJdPWNbcj4+Ml07Y1tqKzA+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1tqKzg+PjJdPTA7dj1jW2s+PjJdfDB9Y1trPj4yXT12KzQ0fWVsc2V7dWQoYixkKX12PWNbaj4+Ml18MDtpZigodnwwKSE9MCl7dm4oY1t2KyAtND4+Ml18MCl9dj1jW28+PjJdfDA7aWYoKHZ8MCkhPTApe3ZuKGNbdisgLTQ+PjJdfDApfXY9Y1toPj4yXXwwO2lmKCh2fDApIT0wKXt2bihjW3YrIC00Pj4yXXwwKX11PXUrMXwwfXdoaWxlKCEodT4+PjA+KGNbZT4+Ml18MCk+Pj4wKSk7aT1mO3JldHVybn1mdW5jdGlvbiB1ZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2U9aTtmPWIrNHwwO209Y1tmPj4yXXwwO2s9Y1tiPj4yXXwwO2w9aztoPShtLWx8MCkvNDR8MDtqPWgrMXwwO2lmKGo+Pj4wPjk3NjEyODkzKXtUaygpfWc9Yis4fDA7bD0oKGNbZz4+Ml18MCktbHwwKS80NHwwO2lmKGw+Pj4wPDQ4ODA2NDQ2KXtvPWw8PDE7bz1vPj4+MDxqPj4+MD9qOm87aWYoKG98MCk9PTApe3A9MDtsPTB9ZWxzZXtuPTV9fWVsc2V7bz05NzYxMjg5MztuPTV9ZG97aWYoKG58MCk9PTUpe3A9byo0NHwwO3A9KHB8MCk9PTA/MTpwO3doaWxlKDEpe2w9dW4ocCl8MDtpZigobHwwKSE9MCl7bj0xMTticmVha31sPWNbNTY2Nl18MDtjWzU2NjZdPWwrMDtpZigobHwwKT09MCl7YnJlYWt9c2NbbCYzMV0oKX1pZigobnwwKT09MTEpe3A9bzticmVha31wPVhhKDQpfDA7Y1twPj4yXT0yMjY4MDt3YihwfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7bz1sKyhoKjQ0fDApfDA7bj1sKyhwKjQ0fDApfDA7aWYoKG98MCkhPTApe2Nbbz4+Ml09Y1tkPj4yXTthW2wrKGgqNDR8MCkrND4+MF09YVtkKzQ+PjBdfDA7bT1kKzh8MDtjW2wrKGgqNDR8MCkrOD4+Ml09Y1ttPj4yXTtjW2wrKGgqNDR8MCkrMTI+PjJdPWNbZCsxMj4+Ml07Y1tsKyhoKjQ0fDApKzE2Pj4yXT1jW2QrMTY+PjJdO2NbbCsoaCo0NHwwKSsyMD4+Ml09Y1tkKzIwPj4yXTtjW2wrKGgqNDR8MCkrMjQ+PjJdPWNbZCsyND4+Ml07Y1tsKyhoKjQ0fDApKzI4Pj4yXT1jW2QrMjg+PjJdO2NbbCsoaCo0NHwwKSszMj4+Ml09Y1tkKzMyPj4yXTtjW2wrKGgqNDR8MCkrMzY+PjJdPWNbZCszNj4+Ml07Y1tsKyhoKjQ0fDApKzQwPj4yXT1jW2QrNDA+PjJdO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO209Y1tmPj4yXXwwO2s9Y1tiPj4yXXwwfWo9bCsoaio0NHwwKXwwO2lmKChtfDApIT0oa3wwKSl7aD1oKyAtMS0oKChtKyAtNDQrKDAtayl8MCk+Pj4wKS80NHwwKXwwO3doaWxlKDEpe2Q9bTttPW0rIC00NHwwO2NbbysgLTQ0Pj4yXT1jW20+PjJdO2FbbysgLTQwPj4wXT1hW2QrIC00MD4+MF18MDtwPWQrIC0zNnwwO2NbbysgLTM2Pj4yXT1jW3A+PjJdO2NbbysgLTMyPj4yXT1jW2QrIC0zMj4+Ml07Y1tvKyAtMjg+PjJdPWNbZCsgLTI4Pj4yXTtjW28rIC0yND4+Ml09Y1tkKyAtMjQ+PjJdO2NbbysgLTIwPj4yXT1jW2QrIC0yMD4+Ml07Y1tvKyAtMTY+PjJdPWNbZCsgLTE2Pj4yXTtjW28rIC0xMj4+Ml09Y1tkKyAtMTI+PjJdO2NbbysgLTg+PjJdPWNbZCsgLTg+PjJdO2NbbysgLTQ+PjJdPWNbZCsgLTQ+PjJdO2NbcCswPj4yXT0wO2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0wO2lmKChtfDApPT0oa3wwKSl7YnJlYWt9ZWxzZXtvPW8rIC00NHwwfX1tPWNbYj4+Ml18MDtrPWNbZj4+Ml18MDtjW2I+PjJdPWwrKGgqNDR8MCk7Y1tmPj4yXT1qO2NbZz4+Ml09bjtpZigoa3wwKSE9KG18MCkpe2Rve2Y9Y1trKyAtMzY+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1trKyAtMzI+PjJdfDA7aWYoKGZ8MCkhPTApe3ZuKGNbZisgLTQ+PjJdfDApfWY9Y1trKyAtMjg+PjJdfDA7az1rKyAtNDR8MDtpZigoZnwwKSE9MCl7dm4oY1tmKyAtND4+Ml18MCl9fXdoaWxlKChrfDApIT0obXwwKSl9fWVsc2V7Y1tiPj4yXT1vO2NbZj4+Ml09ajtjW2c+PjJdPW59aWYoKG18MCk9PTApe2k9ZTtyZXR1cm59dm4obSk7aT1lO3JldHVybn1mdW5jdGlvbiB2ZChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gd2QoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1jW2ErMTI+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24geWQoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT0xNDA4KXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIHpkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEFkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zz1lO2Y9Y1tiKzg+PjJdfDA7Yj1jW2IrND4+Ml18MDtqZChnLGYsYik7aD1jW2c+PjJdfDA7YVtkKzM+PjBdPWg+Pj4yNDthW2QrMj4+MF09aD4+PjE2O2FbZCsxPj4wXT1oPj4+ODthW2Q+PjBdPWg7aD1jW2crND4+Ml18MDthW2QrNz4+MF09aD4+PjI0O2FbZCs2Pj4wXT1oPj4+MTY7YVtkKzU+PjBdPWg+Pj44O2FbZCs0Pj4wXT1oO2g9Y1tnKzg+PjJdfDA7YVtkKzExPj4wXT1oPj4+MjQ7YVtkKzEwPj4wXT1oPj4+MTY7YVtkKzk+PjBdPWg+Pj44O2FbZCs4Pj4wXT1oO2g9Y1tnKzEyPj4yXXwwO2FbZCsxMz4+MF09KGgmNjU1MzUpPj4+ODthW2QrMTI+PjBdPWg7YVtkKzE0Pj4wXT1oPj4+MTY7YVtkKzE1Pj4wXT1oPj4+MjQ7Zz1jW2crMTY+PjJdfDA7YVtkKzE2Pj4wXT1nO2FbZCsxNz4+MF09KGcmNjU1MzUpPj4+ODthW2QrMTk+PjBdPWc+Pj4yNDthW2QrMTg+PjBdPWc+Pj4xNjtsZChmKzQ3ODR8MCxiLGQrMjB8MCk7aT1lO3JldHVybn1mdW5jdGlvbiBCZChhKXthPWF8MDt2YXIgYj0wO2I9aTtjW2E+PjJdPTE3MjA7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1hZChhKzQ3ODR8MCk7WGMoYSk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBDZChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7Y1thPj4yXT0xNzIwO2Q9Y1thKzg+PjJdfDA7aWYoKGR8MCk9PTApe3ZuKGEpO2k9YjtyZXR1cm59YWQoZCs0Nzg0fDApO1hjKGQpO3ZuKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gRGQoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEVkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEZkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2E9Y1thKzEyPj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEdkKGEsYil7YT1hfDA7Yj1ifDA7aWYoKGNbYis0Pj4yXXwwKT09MjM3Nil7YT1hKzEyfDB9ZWxzZXthPTB9cmV0dXJuIGF8MH1mdW5jdGlvbiBIZChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBJZChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrMzJ8MDtoPWU7Zj1jW2IrOD4+Ml18MDtiPWNbYis0Pj4yXXwwO2pkKGgsZixiKTtnPWNbaD4+Ml18MDthW2QrMz4+MF09Zz4+PjI0O2FbZCsyPj4wXT1nPj4+MTY7YVtkKzE+PjBdPWc+Pj44O2FbZD4+MF09ZztnPWNbaCs0Pj4yXXwwO2FbZCs3Pj4wXT1nPj4+MjQ7YVtkKzY+PjBdPWc+Pj4xNjthW2QrNT4+MF09Zz4+Pjg7YVtkKzQ+PjBdPWc7Zz1jW2grOD4+Ml18MDthW2QrMTE+PjBdPWc+Pj4yNDthW2QrMTA+PjBdPWc+Pj4xNjthW2QrOT4+MF09Zz4+Pjg7YVtkKzg+PjBdPWc7Zz1jW2grMTI+PjJdfDA7YVtkKzEzPj4wXT0oZyY2NTUzNSk+Pj44O2FbZCsxMj4+MF09ZzthW2QrMTQ+PjBdPWc+Pj4xNjthW2QrMTU+PjBdPWc+Pj4yNDtoPWNbaCsxNj4+Ml18MDthW2QrMTY+PjBdPWg7YVtkKzE3Pj4wXT0oaCY2NTUzNSk+Pj44O2FbZCsxOT4+MF09aD4+PjI0O2FbZCsxOD4+MF09aD4+PjE2O2g9a2QoZis0Nzg0fDAsYil8MDtnPUk7YVtkKzIzPj4wXT1oPj4+MjQ7YVtkKzIyPj4wXT1oPj4+MTY7YVtkKzIxPj4wXT1oPj4+ODthW2QrMjA+PjBdPWg7aj1LbihofDAsZ3wwLDU2KXwwO2FbZCsyNz4+MF09ajtqPUtuKGh8MCxnfDAsNDgpfDA7YVtkKzI2Pj4wXT1qO2g9S24oaHwwLGd8MCw0MCl8MDthW2QrMjU+PjBdPWg7YVtkKzI0Pj4wXT1nO2Q9Zis1MTEyfDA7aWYoKGFbZD4+MF18MCk9PTApe2k9ZTtyZXR1cm59aj0oKG1kKGNbYj4+Ml18MCl8MCkmMjU1KTw8MjQ7aj0oKG1kKGNbYj4+Ml18MCl8MCkmMjU1KTw8MTZ8ajtqPWp8KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDg7Y1tiKzQ+PjJdPWp8KG1kKGNbYj4+Ml18MCl8MCkmMjU1O2FbZD4+MF09MDtpPWU7cmV0dXJufWZ1bmN0aW9uIEpkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2NbYT4+Ml09MjY2NDthPWNbYSs4Pj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufV9jKGErNTA5NnwwKTtfYyhhKzUwNjR8MCk7WmMoYSs0OTQ4fDApOyRjKGErNDc4NHwwKTtYYyhhKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEtkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtjW2E+PjJdPTI2NjQ7ZD1jW2ErOD4+Ml18MDtpZigoZHwwKT09MCl7dm4oYSk7aT1iO3JldHVybn1fYyhkKzUwOTZ8MCk7X2MoZCs1MDY0fDApO1pjKGQrNDk0OHwwKTskYyhkKzQ3ODR8MCk7WGMoZCk7dm4oZCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBMZChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gTWQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gTmQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7YT1jW2ErMTI+PjJdfDA7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gT2QoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT0zMzIwKXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIFBkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFFkKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zz1lO2Y9Y1tiKzg+PjJdfDA7Yj1jW2IrND4+Ml18MDtqZChnLGYsYik7aD1jW2c+PjJdfDA7YVtkKzM+PjBdPWg+Pj4yNDthW2QrMj4+MF09aD4+PjE2O2FbZCsxPj4wXT1oPj4+ODthW2Q+PjBdPWg7aD1jW2crND4+Ml18MDthW2QrNz4+MF09aD4+PjI0O2FbZCs2Pj4wXT1oPj4+MTY7YVtkKzU+PjBdPWg+Pj44O2FbZCs0Pj4wXT1oO2g9Y1tnKzg+PjJdfDA7YVtkKzExPj4wXT1oPj4+MjQ7YVtkKzEwPj4wXT1oPj4+MTY7YVtkKzk+PjBdPWg+Pj44O2FbZCs4Pj4wXT1oO2g9Y1tnKzEyPj4yXXwwO2FbZCsxMz4+MF09KGgmNjU1MzUpPj4+ODthW2QrMTI+PjBdPWg7YVtkKzE0Pj4wXT1oPj4+MTY7YVtkKzE1Pj4wXT1oPj4+MjQ7Zz1jW2crMTY+PjJdfDA7YVtkKzE2Pj4wXT1nO2FbZCsxNz4+MF09KGcmNjU1MzUpPj4+ODthW2QrMTk+PjBdPWc+Pj4yNDthW2QrMTg+PjBdPWc+Pj4xNjtkPWYrNDc4NHwwO2lmKChhW2Q+PjBdfDApPT0wKXtpPWU7cmV0dXJufWg9KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDI0O2g9KChtZChjW2I+PjJdfDApfDApJjI1NSk8PDE2fGg7aD1ofCgobWQoY1tiPj4yXXwwKXwwKSYyNTUpPDw4O2NbYis0Pj4yXT1ofChtZChjW2I+PjJdfDApfDApJjI1NTthW2Q+PjBdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBSZChhKXthPWF8MDt2YXIgYj0wO2I9aTtjW2E+PjJdPTM2MDg7YT1jW2ErOD4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1YYyhhKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFNkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtjW2E+PjJdPTM2MDg7ZD1jW2ErOD4+Ml18MDtpZigoZHwwKT09MCl7dm4oYSk7aT1iO3JldHVybn1YYyhkKTt2bihkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFRkKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBVZChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBWZChhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKT09MCl7aT1iO3JldHVybn1sY1tjWyhjW2E+PjJdfDApKzg+PjJdJjI1NV0oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBXZChhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTQyMTYpe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gWGQoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gWWQoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7Y1tiPj4yXT00NTAwO2NbYis2ND4+Ml09NDU0MDtjW2IrOD4+Ml09NDUyMDtlPWIrMTJ8MDtjW2U+PjJdPTQ2ODg7aWYoISgoYVtiKzQ0Pj4wXSYxKT09MCk/KGY9Y1tiKzUyPj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1jW2U+PjJdPTEwNjY0O2U9Y1tiKzE2Pj4yXXwwO2c9ZSs0fDA7Zj1jW2c+PjJdfDA7Y1tnPj4yXT1mKyAtMTtpZigoZnwwKSE9MCl7Zz1iKzY0fDA7cmcoZyk7aT1kO3JldHVybn1sY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSk7Zz1iKzY0fDA7cmcoZyk7aT1kO3JldHVybn1mdW5jdGlvbiBaZChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9aTtnPWIrIC04fDA7Y1tnPj4yXT00NTAwO2I9Zys2NHwwO2NbYj4+Ml09NDU0MDtjW2crOD4+Ml09NDUyMDtmPWcrMTJ8MDtjW2Y+PjJdPTQ2ODg7aWYoISgoYVtnKzQ0Pj4wXSYxKT09MCk/KGU9Y1tnKzUyPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1jW2Y+PjJdPTEwNjY0O2U9Y1tnKzE2Pj4yXXwwO2Y9ZSs0fDA7Zz1jW2Y+PjJdfDA7Y1tmPj4yXT1nKyAtMTtpZigoZ3wwKSE9MCl7cmcoYik7aT1kO3JldHVybn1sY1tjWyhjW2U+PjJdfDApKzg+PjJdJjI1NV0oZSk7cmcoYik7aT1kO3JldHVybn1mdW5jdGlvbiBfZChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtlPWk7Zz1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7Y1tiK2c+PjJdPTQ1MDA7ZD1iKyhnKzY0KXwwO2NbZD4+Ml09NDU0MDtjW2IrKGcrOCk+PjJdPTQ1MjA7Zj1iKyhnKzEyKXwwO2NbZj4+Ml09NDY4ODtpZighKChhW2IrKGcrNDQpPj4wXSYxKT09MCk/KGg9Y1tiKyhnKzUyKT4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9Y1tmPj4yXT0xMDY2NDtiPWNbYisoZysxNik+PjJdfDA7Zz1iKzR8MDtoPWNbZz4+Ml18MDtjW2c+PjJdPWgrIC0xO2lmKChofDApIT0wKXtyZyhkKTtpPWU7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtyZyhkKTtpPWU7cmV0dXJufWZ1bmN0aW9uICRkKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1pO2NbYj4+Ml09NDUwMDtjW2IrNjQ+PjJdPTQ1NDA7Y1tiKzg+PjJdPTQ1MjA7ZT1iKzEyfDA7Y1tlPj4yXT00Njg4O2lmKCEoKGFbYis0ND4+MF0mMSk9PTApPyhmPWNbYis1Mj4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9Y1tlPj4yXT0xMDY2NDtlPWNbYisxNj4+Ml18MDtnPWUrNHwwO2Y9Y1tnPj4yXXwwO2NbZz4+Ml09ZisgLTE7aWYoKGZ8MCk9PTApe2xjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKX1yZyhiKzY0fDApO2lmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gYWUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZD1pO2Y9YisgLTh8MDtjW2Y+PjJdPTQ1MDA7Yj1mKzY0fDA7Y1tiPj4yXT00NTQwO2NbZis4Pj4yXT00NTIwO2c9ZisxMnwwO2NbZz4+Ml09NDY4ODtpZighKChhW2YrNDQ+PjBdJjEpPT0wKT8oZT1jW2YrNTI+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWNbZz4+Ml09MTA2NjQ7ZT1jW2YrMTY+PjJdfDA7aD1lKzR8MDtnPWNbaD4+Ml18MDtjW2g+PjJdPWcrIC0xO2lmKChnfDApIT0wKXtyZyhiKTt2bihmKTtpPWQ7cmV0dXJufWxjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKTtyZyhiKTt2bihmKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGJlKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtkPWk7aD1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7Zj1iK2h8MDtjW2Y+PjJdPTQ1MDA7ZT1iKyhoKzY0KXwwO2NbZT4+Ml09NDU0MDtjW2IrKGgrOCk+PjJdPTQ1MjA7Zz1iKyhoKzEyKXwwO2NbZz4+Ml09NDY4ODtpZighKChhW2IrKGgrNDQpPj4wXSYxKT09MCk/KGo9Y1tiKyhoKzUyKT4+Ml18MCwoanwwKSE9MCk6MCl7dm4oail9Y1tnPj4yXT0xMDY2NDtiPWNbYisoaCsxNik+PjJdfDA7aD1iKzR8MDtqPWNbaD4+Ml18MDtjW2g+PjJdPWorIC0xO2lmKChqfDApPT0wKXtsY1tjWyhjW2I+PjJdfDApKzg+PjJdJjI1NV0oYil9cmcoZSk7aWYoKGZ8MCk9PTApe2k9ZDtyZXR1cm59dm4oZik7aT1kO3JldHVybn1mdW5jdGlvbiBjZShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2NbYj4+Ml09NDY4ODtpZighKChhW2IrMzI+PjBdJjEpPT0wKT8oZT1jW2IrNDA+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWNbYj4+Ml09MTA2NjQ7Yj1jW2IrND4+Ml18MDtmPWIrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe2k9ZDtyZXR1cm59bGNbY1soY1tiPj4yXXwwKSs4Pj4yXSYyNTVdKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZGUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7Y1tiPj4yXT00Njg4O2lmKCEoKGFbYiszMj4+MF0mMSk9PTApPyhlPWNbYis0MD4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9Y1tiPj4yXT0xMDY2NDtlPWNbYis0Pj4yXXwwO2c9ZSs0fDA7Zj1jW2c+PjJdfDA7Y1tnPj4yXT1mKyAtMTtpZigoZnwwKT09MCl7bGNbY1soY1tlPj4yXXwwKSs4Pj4yXSYyNTVdKGUpfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZWUoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtsPWk7bz1kKzQ0fDA7bT1jW28+PjJdfDA7az1kKzI0fDA7aj1jW2s+PjJdfDA7aWYobT4+PjA8aj4+PjApe2Nbbz4+Ml09ajttPWp9bz1oJjI0O2Rve2lmKChvfDApPT0wKXtvPWI7Y1tvPj4yXT0wO2Nbbys0Pj4yXT0wO289Yis4fDA7Y1tvPj4yXT0tMTtjW28rND4+Ml09LTE7aT1sO3JldHVybn1lbHNlIGlmKChvfDApIT0yNCl7aWYoKGd8MCk9PTIpe249MTE7YnJlYWt9ZWxzZSBpZigoZ3wwKT09MCl7Zz0wO289MDticmVha31lbHNlIGlmKChnfDApIT0xKXtuPTE1O2JyZWFrfWlmKChoJjh8MCk9PTApe289ai0oY1tkKzIwPj4yXXwwKXwwO2c9bztvPSgob3wwKTwwKTw8MzE+PjMxO2JyZWFrfWVsc2V7bz0oY1tkKzEyPj4yXXwwKS0oY1tkKzg+PjJdfDApfDA7Zz1vO289KChvfDApPDApPDwzMT4+MzE7YnJlYWt9fWVsc2V7aWYoKGd8MCk9PTIpe249MTE7YnJlYWt9ZWxzZSBpZigoZ3wwKT09MCl7Zz0wO289MDticmVha31lbHNlIGlmKChnfDApIT0xKXtuPTE1O2JyZWFrfW89YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufX13aGlsZSgwKTtpZigobnwwKT09MTUpe289YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufWlmKChufDApPT0xMSl7bj1kKzMyfDA7aWYoKGFbbj4+MF0mMSk9PTApe249bisxfDB9ZWxzZXtuPWNbZCs0MD4+Ml18MH1vPW0tbnwwO2c9bztvPSgob3wwKTwwKTw8MzE+PjMxfWY9SW4oZ3wwLG98MCxlfDAsZnwwKXwwO2U9STtpZigoZXwwKT49MCl7bj1kKzMyfDA7aWYoKGFbbj4+MF0mMSk9PTApe249bisxfDB9ZWxzZXtuPWNbZCs0MD4+Ml18MH1vPW0tbnwwO2c9KChvfDApPDApPDwzMT4+MzE7aWYoISgoZ3wwKTwoZXwwKXwoZ3wwKT09KGV8MCkmbz4+PjA8Zj4+PjApKXtuPWgmODtpZighKChmfDApPT0wJihlfDApPT0wKSl7aWYoKG58MCkhPTA/KGNbZCsxMj4+Ml18MCk9PTA6MCl7bz1iO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtvPWIrOHwwO2Nbbz4+Ml09LTE7Y1tvKzQ+PjJdPS0xO2k9bDtyZXR1cm59aWYoKGgmMTZ8MCkhPTAmKGp8MCk9PTApe289YjtjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1iKzh8MDtjW28+PjJdPS0xO2Nbbys0Pj4yXT0tMTtpPWw7cmV0dXJufX1pZigobnwwKSE9MCl7Y1tkKzEyPj4yXT0oY1tkKzg+PjJdfDApK2Y7Y1tkKzE2Pj4yXT1tfWlmKChoJjE2fDApIT0wKXtjW2s+PjJdPShjW2QrMjA+PjJdfDApK2Z9bz1iO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtvPWIrOHwwO2Nbbz4+Ml09ZjtjW28rND4+Ml09ZTtpPWw7cmV0dXJufX1vPWI7Y1tvPj4yXT0wO2Nbbys0Pj4yXT0wO289Yis4fDA7Y1tvPj4yXT0tMTtjW28rND4+Ml09LTE7aT1sO3JldHVybn1mdW5jdGlvbiBmZShhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wO2Y9aTtkPWQrOHwwO3djW2NbKGNbYj4+Ml18MCkrMTY+PjJdJjYzXShhLGIsY1tkPj4yXXwwLGNbZCs0Pj4yXXwwLDAsZSk7aT1mO3JldHVybn1mdW5jdGlvbiBnZShhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wO2I9aTtmPWErNDR8MDtnPWNbZj4+Ml18MDtlPWNbYSsyND4+Ml18MDtpZihnPj4+MDxlPj4+MCl7Y1tmPj4yXT1lfWVsc2V7ZT1nfWlmKChjW2ErNDg+PjJdJjh8MCk9PTApe2c9LTE7aT1iO3JldHVybiBnfDB9Zj1hKzE2fDA7Zz1jW2Y+PjJdfDA7YT1jW2ErMTI+PjJdfDA7aWYoZz4+PjA8ZT4+PjApe2NbZj4+Ml09ZX1lbHNle2U9Z31pZighKGE+Pj4wPGU+Pj4wKSl7Zz0tMTtpPWI7cmV0dXJuIGd8MH1nPWRbYT4+MF18MDtpPWI7cmV0dXJuIGd8MH1mdW5jdGlvbiBoZShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZT1pO2c9Yis0NHwwO2Y9Y1tnPj4yXXwwO2o9Y1tiKzI0Pj4yXXwwO2lmKGY+Pj4wPGo+Pj4wKXtjW2c+PjJdPWp9ZWxzZXtqPWZ9Zj1iKzh8MDtnPWNbZj4+Ml18MDtoPWIrMTJ8MDtsPWNbaD4+Ml18MDtpZighKGc+Pj4wPGw+Pj4wKSl7bD0tMTtpPWU7cmV0dXJuIGx8MH1pZigoZHwwKT09LTEpe2NbZj4+Ml09ZztjW2g+PjJdPWwrIC0xO2NbYisxNj4+Ml09ajtsPTA7aT1lO3JldHVybiBsfDB9aWYoKGNbYis0OD4+Ml0mMTZ8MCk9PTApe2s9ZCYyNTU7bD1sKyAtMXwwO2lmKCEoazw8MjQ+PjI0PT0oYVtsPj4wXXwwKSkpe2w9LTE7aT1lO3JldHVybiBsfDB9fWVsc2V7az1kJjI1NTtsPWwrIC0xfDB9Y1tmPj4yXT1nO2NbaD4+Ml09bDtjW2IrMTY+PjJdPWo7YVtsPj4wXT1rO2w9ZDtpPWU7cmV0dXJuIGx8MH1mdW5jdGlvbiBpZShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7aj1pO2lmKChkfDApPT0tMSl7dT0wO2k9ajtyZXR1cm4gdXwwfWc9YisxMnwwO2U9Yis4fDA7Zj0oY1tnPj4yXXwwKS0oY1tlPj4yXXwwKXwwO2g9YisyNHwwO249Y1toPj4yXXwwO2s9YisyOHwwO209Y1trPj4yXXwwO2lmKChufDApPT0obXwwKSl7bD1iKzQ4fDA7aWYoKGNbbD4+Ml0mMTZ8MCk9PTApe3U9LTE7aT1qO3JldHVybiB1fDB9bT1iKzIwfDA7cD1jW20+PjJdfDA7bj1uLXB8MDtvPWIrNDR8MDtwPShjW28+PjJdfDApLXB8MDtxPWIrMzJ8MDtyPWFbcT4+MF18MDtzPShyJjEpIT0wO2lmKHMpe3Q9KGNbcT4+Ml0mLTIpKyAtMXwwO3I9Y1tiKzM2Pj4yXXwwfWVsc2V7dD0xMDtyPShyJjI1NSk+Pj4xfWlmKChyfDApPT0odHwwKSl7bGcocSx0LDEsdCx0LDApO2lmKChhW3E+PjBdJjEpPT0wKXtzPTEyfWVsc2V7cz0xM319ZWxzZXtpZihzKXtzPTEzfWVsc2V7cz0xMn19aWYoKHN8MCk9PTEyKXthW3E+PjBdPShyPDwxKSsyO3U9cSsxfDA7dD1yKzF8MH1lbHNlIGlmKChzfDApPT0xMyl7dT1jW2IrNDA+PjJdfDA7dD1yKzF8MDtjW2IrMzY+PjJdPXR9YVt1K3I+PjBdPTA7YVt1K3Q+PjBdPTA7dD1hW3E+PjBdfDA7aWYoKHQmMSk9PTApe3I9MTB9ZWxzZXtyPWNbcT4+Ml18MDt0PXImMjU1O3I9KHImLTIpKyAtMXwwfXM9KHQmMSk9PTA7aWYocyl7dD0odCYyNTUpPj4+MX1lbHNle3Q9Y1tiKzM2Pj4yXXwwfWRve2lmKCEodD4+PjA8cj4+PjApKXtpZihzKXthW3ErcisxPj4wXT0wO2FbcT4+MF09cjw8MTticmVha31lbHNle2FbKGNbYis0MD4+Ml18MCkrcj4+MF09MDtjW2IrMzY+PjJdPXI7YnJlYWt9fWVsc2V7aGcocSxyLXR8MCl9fXdoaWxlKDApO3I9YVtxPj4wXXwwO2lmKChyJjEpPT0wKXtxPXErMXwwO3I9KHImMjU1KT4+PjF9ZWxzZXtxPWNbYis0MD4+Ml18MDtyPWNbYiszNj4+Ml18MH10PXErcnwwO2NbbT4+Ml09cTtjW2s+PjJdPXQ7bj1xK258MDtjW2g+PjJdPW47dT1xK3B8MDtjW28+PjJdPXU7az10O289dX1lbHNle2w9Yis0OHwwO2s9bTtvPWNbYis0ND4+Ml18MH1tPW4rMXwwO289bT4+PjA8bz4+PjA/bzptO2NbYis0ND4+Ml09bztpZigoY1tsPj4yXSY4fDApIT0wKXtsPWIrMzJ8MDtpZigoYVtsPj4wXSYxKT09MCl7bD1sKzF8MH1lbHNle2w9Y1tiKzQwPj4yXXwwfWNbZT4+Ml09bDtjW2c+PjJdPWwrZjtjW2IrMTY+PjJdPW99aWYoKG58MCk9PShrfDApKXt1PXhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGQmMjU1KXwwO2k9ajtyZXR1cm4gdXwwfWVsc2V7Y1toPj4yXT1tO2Fbbj4+MF09ZDt1PWQmMjU1O2k9ajtyZXR1cm4gdXwwfXJldHVybiAwfWZ1bmN0aW9uIGplKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBrZShhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBsZShhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBtZShhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTUwNDgpe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gbmUoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gb2UoYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxsPTAsbT0wLG49MCxvPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsSj0wLjAsSz0wLjAsTD0wLjAsTT0wLjAsTj0wLjAsTz0wLjA7ZT1pO2k9aSsyNTZ8MDtmPWUrODB8MDtvPWU7bj1lKzEwNHwwO209ZSsyMjR8MDtqPWUrMjA4fDA7Zz1lKzEyOHwwO3g9ZSsyNDB8MDt2PWUrMTEyfDA7cz1lKzU2fDA7ej1jW2I+PjJdfDA7eT16KzEzfDA7aWYoKGFbeT4+MF18MCk9PTApe0g9eis0fDA7RT16Kzh8MDtHPWNbRT4+Ml18MDtGPShjW0g+PjJdfDApLUd8MDtGPShGfDApPDQ/Rjo0O01uKHh8MCwoY1t6Pj4yXXwwKStHfDAsRnwwKXwwO0c9KGNbRT4+Ml18MCkrRnwwO2NbRT4+Ml09RztjW3orMTY+PjJdPUY7aWYoKEd8MCk+PShjW0g+PjJdfDApKXthW3k+PjBdPTF9fWVsc2V7YVt6KzEyPj4wXT0xfWFbdj4+MF09ODtCPXYrMXwwO2FbQj4+MF09YVt4Pj4wXXwwO2FbdisyPj4wXT1hW3grMT4+MF18MDthW3YrMz4+MF09YVt4KzI+PjBdfDA7eT12KzR8MDthW3k+PjBdPWFbeCszPj4wXXwwO2FbdisoeCsoNC14KSkrMT4+MF09MDt6PWFbdj4+MF18MDt4PSh6JjEpPT0wO2lmKHgpe3k9KHomMjU1KT4+PjF9ZWxzZXtCPWNbdis4Pj4yXXwwO3k9Y1t5Pj4yXXwwfXo9eT4+PjA+NDtBPXo/NDp5O2E6ZG97aWYoKEF8MCkhPTApe0M9NTIzMjt3aGlsZSgxKXtEPWFbQj4+MF18MDtFPWFbQz4+MF18MDtpZighKEQ8PDI0Pj4yND09RTw8MjQ+PjI0KSl7YnJlYWt9QT1BKyAtMXwwO2lmKChBfDApPT0wKXtsPTEyO2JyZWFrIGF9ZWxzZXtCPUIrMXwwO0M9QysxfDB9fWlmKCEoRDw8MjQ+PjI0PT1FPDwyND4+MjQpKXt5PShEJjI1NSktKEUmMjU1KXwwfWVsc2V7bD0xMn19ZWxzZXtsPTEyfX13aGlsZSgwKTtpZigobHwwKT09MTIpe3k9eT4+PjA8ND8tMTp6JjF9eT0oeXwwKT09MDtpZigheD8odz1jW3YrOD4+Ml18MCwod3wwKSE9MCk6MCl7dm4odyl9aWYoIXkpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11bigzNil8MDtpZigoYnwwKSE9MCl7bD0yMzticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjMpe2NbYis0Pj4yXT0yMztjW2I+PjJdPTIzO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj03MDU2fDA7ZT1mKzI0fDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTcwODg7d2IoZ3wwLDUyNzIsODYpfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfXY9U2MoODM1Miw1Mjg4KXwwO3c9Y1t2KygoY1soY1t2Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7eD13KzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9ej0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7eT1jW3crOD4+Ml18MDtpZigoY1t3KzEyPj4yXXwwKS15Pj4yPj4+MD56Pj4+MD8odT1jW3krKHo8PDIpPj4yXXwwLCh1fDApIT0wKTowKXt1PXhjW2NbKGNbdT4+Ml18MCkrMjg+PjJdJjYzXSh1LDEwKXwwO0g9Y1t4Pj4yXXwwO2NbeD4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbdz4+Ml18MCkrOD4+Ml0mMjU1XSh3KX1saCh2LHUpO1lnKHYpO3U9Y1tiPj4yXXwwO2lmKChjW3UrND4+Ml18MCk+MCl7Y1t1Kzg+PjJdPTB9ZWxzZXthW3UrMTI+PjBdPTF9dj1jW2I+PjJdfDA7dT1iKzIwfDA7dz12KzEzfDA7aWYoKGFbdz4+MF18MCk9PTApe0g9dis0fDA7RT12Kzh8MDtHPWNbRT4+Ml18MDtGPShjW0g+PjJdfDApLUd8MDtGPShGfDApPDIyNz9GOjIyNztNbih1fDAsKGNbdj4+Ml18MCkrR3wwLEZ8MCl8MDtHPShjW0U+PjJdfDApK0Z8MDtjW0U+PjJdPUc7Y1t2KzE2Pj4yXT1GO2lmKChHfDApPj0oY1tIPj4yXXwwKSl7YVt3Pj4wXT0xfX1lbHNle2FbdisxMj4+MF09MX1DPWIrMTk5fDA7YVtrPj4wXT1hW0M+PjBdO2FbaysxPj4wXT1hW0MrMT4+MF07YVtrKzI+PjBdPWFbQysyPj4wXTthW2srMz4+MF09YVtDKzM+PjBdO2Fbays0Pj4wXT1hW0MrND4+MF07YVtrKzU+PjBdPWFbQys1Pj4wXTthW2srNj4+MF09YVtDKzY+PjBdO2Fbays3Pj4wXT1hW0MrNz4+MF07Tj0raFtrPj4zXTtFPWIrMjA3fDA7YVtrPj4wXT1hW0U+PjBdO2FbaysxPj4wXT1hW0UrMT4+MF07YVtrKzI+PjBdPWFbRSsyPj4wXTthW2srMz4+MF09YVtFKzM+PjBdO2Fbays0Pj4wXT1hW0UrND4+MF07YVtrKzU+PjBdPWFbRSs1Pj4wXTthW2srNj4+MF09YVtFKzY+PjBdO2Fbays3Pj4wXT1hW0UrNz4+MF07Tz0raFtrPj4zXTtHPWIrMjE1fDA7YVtrPj4wXT1hW0c+PjBdO2FbaysxPj4wXT1hW0crMT4+MF07YVtrKzI+PjBdPWFbRysyPj4wXTthW2srMz4+MF09YVtHKzM+PjBdO2Fbays0Pj4wXT1hW0crND4+MF07YVtrKzU+PjBdPWFbRys1Pj4wXTthW2srNj4+MF09YVtHKzY+PjBdO2Fbays3Pj4wXT1hW0crNz4+MF07TD0raFtrPj4zXTtEPWIrMjIzfDA7YVtrPj4wXT1hW0Q+PjBdO2FbaysxPj4wXT1hW0QrMT4+MF07YVtrKzI+PjBdPWFbRCsyPj4wXTthW2srMz4+MF09YVtEKzM+PjBdO2Fbays0Pj4wXT1hW0QrND4+MF07YVtrKzU+PjBdPWFbRCs1Pj4wXTthW2srNj4+MF09YVtEKzY+PjBdO2Fbays3Pj4wXT1hW0QrNz4+MF07TT0raFtrPj4zXTtGPWIrMjMxfDA7YVtrPj4wXT1hW0Y+PjBdO2FbaysxPj4wXT1hW0YrMT4+MF07YVtrKzI+PjBdPWFbRisyPj4wXTthW2srMz4+MF09YVtGKzM+PjBdO2Fbays0Pj4wXT1hW0YrND4+MF07YVtrKzU+PjBdPWFbRis1Pj4wXTthW2srNj4+MF09YVtGKzY+PjBdO2Fbays3Pj4wXT1hW0YrNz4+MF07Sj0raFtrPj4zXTtIPWIrMjM5fDA7YVtrPj4wXT1hW0g+PjBdO2FbaysxPj4wXT1hW0grMT4+MF07YVtrKzI+PjBdPWFbSCsyPj4wXTthW2srMz4+MF09YVtIKzM+PjBdO2Fbays0Pj4wXT1hW0grND4+MF07YVtrKzU+PjBdPWFbSCs1Pj4wXTthW2srNj4+MF09YVtIKzY+PjBdO2Fbays3Pj4wXT1hW0grNz4+MF07Sz0raFtrPj4zXTtoW2s+PjNdPU87YVtDPj4wXT1hW2s+PjBdO2FbQysxPj4wXT1hW2srMT4+MF07YVtDKzI+PjBdPWFbaysyPj4wXTthW0MrMz4+MF09YVtrKzM+PjBdO2FbQys0Pj4wXT1hW2srND4+MF07YVtDKzU+PjBdPWFbays1Pj4wXTthW0MrNj4+MF09YVtrKzY+PjBdO2FbQys3Pj4wXT1hW2srNz4+MF07aFtrPj4zXT1OO2FbRD4+MF09YVtrPj4wXTthW0QrMT4+MF09YVtrKzE+PjBdO2FbRCsyPj4wXT1hW2srMj4+MF07YVtEKzM+PjBdPWFbayszPj4wXTthW0QrND4+MF09YVtrKzQ+PjBdO2FbRCs1Pj4wXT1hW2srNT4+MF07YVtEKzY+PjBdPWFbays2Pj4wXTthW0QrNz4+MF09YVtrKzc+PjBdO2hbaz4+M109TTthW0U+PjBdPWFbaz4+MF07YVtFKzE+PjBdPWFbaysxPj4wXTthW0UrMj4+MF09YVtrKzI+PjBdO2FbRSszPj4wXT1hW2srMz4+MF07YVtFKzQ+PjBdPWFbays0Pj4wXTthW0UrNT4+MF09YVtrKzU+PjBdO2FbRSs2Pj4wXT1hW2srNj4+MF07YVtFKzc+PjBdPWFbays3Pj4wXTtoW2s+PjNdPUw7YVtGPj4wXT1hW2s+PjBdO2FbRisxPj4wXT1hW2srMT4+MF07YVtGKzI+PjBdPWFbaysyPj4wXTthW0YrMz4+MF09YVtrKzM+PjBdO2FbRis0Pj4wXT1hW2srND4+MF07YVtGKzU+PjBdPWFbays1Pj4wXTthW0YrNj4+MF09YVtrKzY+PjBdO2FbRis3Pj4wXT1hW2srNz4+MF07aFtrPj4zXT1LO2FbRz4+MF09YVtrPj4wXTthW0crMT4+MF09YVtrKzE+PjBdO2FbRysyPj4wXT1hW2srMj4+MF07YVtHKzM+PjBdPWFbayszPj4wXTthW0crND4+MF09YVtrKzQ+PjBdO2FbRys1Pj4wXT1hW2srNT4+MF07YVtHKzY+PjBdPWFbays2Pj4wXTthW0crNz4+MF09YVtrKzc+PjBdO2hbaz4+M109SjthW0g+PjBdPWFbaz4+MF07YVtIKzE+PjBdPWFbaysxPj4wXTthW0grMj4+MF09YVtrKzI+PjBdO2FbSCszPj4wXT1hW2srMz4+MF07YVtIKzQ+PjBdPWFbays0Pj4wXTthW0grNT4+MF09YVtrKzU+PjBdO2FbSCs2Pj4wXT1hW2srNj4+MF07YVtIKzc+PjBdPWFbays3Pj4wXTtpZigoYVs2MzY4XXwwKT09MD8oUWEoNjM2OCl8MCkhPTA6MCl7Y1sxNTg4XT0wO2NbNjM1Nj4+Ml09MDtjWzYzNjA+PjJdPTA7Y2MoMjA5LDYzNTIscHwwKXwwOyRhKDYzNjgpfWlmKChhWzY0MDBdfDApPT0wPyhRYSg2NDAwKXwwKSE9MDowKXtjYygyMTAsNjM3NixwfDApfDA7JGEoNjQwMCl9dz1jWzE1ODhdfDA7dj1jWzYzNTY+PjJdfDA7ZG97aWYoKHd8MCk9PSh2fDApKXt2PSRiKDYzNzYpfDA7aWYoKHZ8MCkhPTApe2I9WGEoMTYpfDA7ZG97aWYoKGFbMTAxMjBdfDApPT0wKXtpZigoUWEoMTAxMjApfDApPT0wKXticmVha31jWzI1MjhdPTEwMzg0OyRhKDEwMTIwKX19d2hpbGUoMCk7WWYoYix2LDEwMTEyLDEwNDcyKTt3YihifDAsMTAxODQsMTA5KX14PWNbMTU4OF18MDtkb3tpZigoeHwwKT09KGNbNjM1Nj4+Ml18MCkpe3Y9ZisxNnwwO2Nbdj4+Ml09ZjtjW2Y+PjJdPTY0MTY7dz1jWzYzNjA+PjJdfDA7ZG97aWYoeD4+PjA8dz4+PjApe2lmKCh4fDApPT0wKXt3PTB9ZWxzZXtjW3grMTY+PjJdPXg7dz1jW3Y+PjJdfDA7bWNbY1soY1t3Pj4yXXwwKSsxMj4+Ml0mMTI3XSh3LHgpO3c9Y1s2MzU2Pj4yXXwwfWNbNjM1Nj4+Ml09dysyNH1lbHNle3c9KHcteHwwKS8yNHwwO2lmKHc+Pj4wPDg5NDc4NDg1KXt3PXc8PDE7dz0od3wwKT09MD8xOnd9ZWxzZXt3PTE3ODk1Njk3MH14PXcqMjR8MDt4PSh4fDApPT0wPzE6eDt3aGlsZSgxKXt5PXVuKHgpfDA7aWYoKHl8MCkhPTApe2JyZWFrfXk9Y1s1NjY2XXwwO2NbNTY2Nl09eSswO2lmKCh5fDApPT0wKXtsPTY1O2JyZWFrfXNjW3kmMzFdKCl9aWYoKGx8MCk9PTY1KXtIPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX13PXkrKHcqMjR8MCl8MDtkb3tpZigoeXwwKSE9MCl7eD1jW3Y+PjJdfDA7aWYoKHh8MCk9PTApe2NbeSsxNj4+Ml09MDticmVha31pZigoeHwwKT09KGZ8MCkpe2NbeSsxNj4+Ml09eTttY1tjWyhjW2Y+PjJdfDApKzEyPj4yXSYxMjddKGYseSk7YnJlYWt9ZWxzZXtjW3krMTY+PjJdPXg7Y1t2Pj4yXT0wO2JyZWFrfX19d2hpbGUoMCk7eD15KzI0fDA7ej1jWzE1ODhdfDA7QT1jWzYzNTY+PjJdfDA7ZG97aWYoKEF8MCk9PSh6fDApKXtjWzE1ODhdPXk7Y1s2MzU2Pj4yXT14O2NbNjM2MD4+Ml09d31lbHNle2Rve0M9eTt5PXkrIC0yNHwwO0I9QSsgLTh8MDtBPUErIC0yNHwwO0Q9Y1tCPj4yXXwwO2Rve2lmKChEfDApIT0wKXtpZigoRHwwKT09KEF8MCkpe2NbQysgLTg+PjJdPXk7SD1jW0I+PjJdfDA7bWNbY1soY1tIPj4yXXwwKSsxMj4+Ml0mMTI3XShILHkpO2JyZWFrfWVsc2V7Y1tDKyAtOD4+Ml09RDtjW0I+PjJdPTA7YnJlYWt9fWVsc2V7Y1tDKyAtOD4+Ml09MH19d2hpbGUoMCl9d2hpbGUoKEF8MCkhPSh6fDApKTt6PWNbMTU4OF18MDtBPWNbNjM1Nj4+Ml18MDtjWzE1ODhdPXk7Y1s2MzU2Pj4yXT14O2NbNjM2MD4+Ml09dztpZigoQXwwKT09KHp8MCkpe2JyZWFrfWRve3c9Y1tBKyAtOD4+Ml18MDtBPUErIC0yNHwwO2Rve2lmKCh3fDApPT0oQXwwKSl7bGNbY1soY1t3Pj4yXXwwKSsxNj4+Ml0mMjU1XSh3KX1lbHNle2lmKCh3fDApPT0wKXticmVha31sY1tjWyhjW3c+PjJdfDApKzIwPj4yXSYyNTVdKHcpfX13aGlsZSgwKX13aGlsZSgoQXwwKSE9KHp8MCkpfX13aGlsZSgwKTtpZigoenwwKT09MCl7YnJlYWt9dm4oeil9fXdoaWxlKDApO3Y9Y1t2Pj4yXXwwO2lmKCh2fDApPT0oZnwwKSl7bGNbY1soY1tmPj4yXXwwKSsxNj4+Ml0mMjU1XShmKTticmVha31pZigodnwwKT09MCl7YnJlYWt9bGNbY1soY1t2Pj4yXXwwKSsyMD4+Ml0mMjU1XSh2KX19d2hpbGUoMCk7aWYoKENiKDYzNzYpfDApPT0wKXt0PWNbMTU4OF18MDtyPWNbNjM1Nj4+Ml18MDticmVha31XYSgxMDQ5NiwxMDUwNCw0NiwxMDU2MCl9ZWxzZXt0PXc7cj12fX13aGlsZSgwKTtiOmRve2lmKCh0fDApIT0ocnwwKSl7dj1zKzE2fDA7d2hpbGUoMSl7eD10KzE2fDA7dz1jW3g+PjJdfDA7aWYoKHd8MCk9PTApe2w9MTAxO2JyZWFrfWlmKCh3fDApPT0odHwwKSl7Y1t2Pj4yXT1zO3c9Y1t4Pj4yXXwwO21jW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjEyN10odyxzKTt3PWNbdj4+Ml18MH1lbHNle3c9b2NbY1soY1t3Pj4yXXwwKSs4Pj4yXSYxMjddKHcpfDA7Y1t2Pj4yXT13fWlmKCh3fDApPT0wKXticmVha31tY1tjWyhjW3c+PjJdfDApKzI0Pj4yXSYxMjddKHcsdSk7dz1jW3Y+PjJdfDA7ZG97aWYoKHd8MCk9PShzfDApKXtsY1tjWyhjW3M+PjJdfDApKzE2Pj4yXSYyNTVdKHMpfWVsc2V7aWYoKHd8MCk9PTApe2JyZWFrfWxjW2NbKGNbdz4+Ml18MCkrMjA+PjJdJjI1NV0odyl9fXdoaWxlKDApO3Q9dCsyNHwwO2lmKCh0fDApPT0ocnwwKSl7YnJlYWsgYn19aWYoKGx8MCk9PTEwMSl7Y1t2Pj4yXT0wfUg9WGEoNCl8MDtjW0g+PjJdPTYzMzY7d2IoSHwwLDYzMTIsNzYpfX13aGlsZSgwKTtzPVNjKDgzNTIsNTMwNCl8MDtyPWNbcysoKGNbKGNbcz4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO3Q9cis0fDA7Y1t0Pj4yXT0oY1t0Pj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW2YrND4+Ml09MjA4O2NbZis4Pj4yXT0wO2NnKDEzNDU2LGYpfXU9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3Y9Y1tyKzg+PjJdfDA7aWYoKGNbcisxMj4+Ml18MCktdj4+Mj4+PjA+dT4+PjA/KHE9Y1t2Kyh1PDwyKT4+Ml18MCwocXwwKSE9MCk6MCl7cT14Y1tjWyhjW3E+PjJdfDApKzI4Pj4yXSY2M10ocSwxMCl8MDtIPWNbdD4+Ml18MDtjW3Q+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW3I+PjJdfDApKzg+PjJdJjI1NV0ocil9bGgocyxxKTtZZyhzKTtyPWNbYj4+Ml18MDtxPWIrMTE0fDA7cT1kW3E+PjBdfGRbcSsxPj4wXTw8ODtIPWNbcis0Pj4yXXwwO0c9KChIfDApPDApPDwzMT4+MzE7aWYoMDwoR3wwKXwwPT0oR3wwKSYocSY2NTUzNSk+Pj4wPEg+Pj4wKXtjW3IrOD4+Ml09cSY2NTUzNX1lbHNle2FbcisxMj4+MF09MX1yPWIrMTIwfDA7Yzpkb3tpZigoZFtyPj4wXXxkW3IrMT4+MF08PDh8ZFtyKzI+PjBdPDwxNnxkW3IrMz4+MF08PDI0fDApIT0wKXt3PW8rMnwwO3U9bysxNnwwO3Q9bysxOHwwO3E9bysyMHwwO3g9Zis0fDA7dj1mKzh8MDtzPTA7d2hpbGUoMSl7Rz0oY1tiPj4yXXwwKSsxMnwwO0g9YVtHPj4wXXwwO2FbRz4+MF09MDtpZighKEg8PDI0Pj4yND09MCkpe2JyZWFrIGN9eT1jW2I+PjJdfDA7ej15KzEzfDA7aWYoKGFbej4+MF18MCkhPTApe2JyZWFrIGN9SD15KzR8MDtFPXkrOHwwO0c9Y1tFPj4yXXwwO0Y9KGNbSD4+Ml18MCktR3wwO0Y9KEZ8MCk8NTQ/Rjo1NDtNbihvfDAsKGNbeT4+Ml18MCkrR3wwLEZ8MCl8MDtHPShjW0U+PjJdfDApK0Z8MDtjW0U+PjJdPUc7Y1t5KzE2Pj4yXT1GO2lmKChHfDApPj0oY1tIPj4yXXwwKSl7YVt6Pj4wXT0xfXk9U2MoODM1Miw1ODcyKXwwO3o9Y1t5KygoY1soY1t5Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7QT16KzR8MDtjW0E+PjJdPShjW0E+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbeD4+Ml09MjA4O2Nbdj4+Ml09MDtjZygxMzQ1NixmKX1DPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtCPWNbeis4Pj4yXXwwO2lmKCEoKGNbeisxMj4+Ml18MCktQj4+Mj4+PjA+Qz4+PjApKXtsPTEzNjticmVha31CPWNbQisoQzw8Mik+PjJdfDA7aWYoKEJ8MCk9PTApe2w9MTM2O2JyZWFrfUI9eGNbY1soY1tCPj4yXXwwKSsyOD4+Ml0mNjNdKEIsMTApfDA7SD1jW0E+PjJdfDA7Y1tBPj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1t6Pj4yXXwwKSs4Pj4yXSYyNTVdKHopfWxoKHksQik7WWcoeSk7eT13O3o9NTg1Njt3aGlsZSgxKXtpZigoYVt5Pj4wXXwwKSE9KGFbej4+MF18MCkpe2JyZWFrfXk9eSsxfDA7aWYoKHl8MCk9PSh1fDApKXtsPTE0NDticmVha31lbHNle3o9eisxfDB9fWlmKChsfDApPT0xNDQ/KGw9MCwoZFt0Pj4wXXxkW3QrMT4+MF08PDgpPDwxNj4+MTY9PTIyMjA0KTowKXticmVha31BPWNbYj4+Ml18MDt5PUErOHwwO3o9Y1t5Pj4yXXwwO3o9SW4oenwwLCgoenwwKTwwKTw8MzE+PjMxfDAsKGRbcT4+MF18ZFtxKzE+PjBdPDw4KSY2NTUzNXwwLDApfDA7SD1JO0c9Y1tBKzQ+PjJdfDA7Rj0oKEd8MCk8MCk8PDMxPj4zMTtBPUErMTJ8MDtpZigoSHwwKT4oRnwwKXwoSHwwKT09KEZ8MCkmej4+PjA+PUc+Pj4wfChIfDApPDApe2FbQT4+MF09MX1lbHNle2FbQT4+MF09MDtjW3k+PjJdPXp9cz1zKzF8MDtpZighKHM+Pj4wPChkW3I+PjBdfGRbcisxPj4wXTw8OHxkW3IrMj4+MF08PDE2fGRbciszPj4wXTw8MjQpPj4+MCkpe2JyZWFrIGN9fWlmKChsfDApPT0xMzYpe0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfXI9U2MoODM1Miw1ODk2KXwwO3M9Y1tyKygoY1soY1tyPj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dD1zKzR8MDtjW3Q+PjJdPShjW3Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9dT0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dj1jW3MrOD4+Ml18MDtkb3tpZigoY1tzKzEyPj4yXXwwKS12Pj4yPj4+MD51Pj4+MCl7dT1jW3YrKHU8PDIpPj4yXXwwO2lmKCh1fDApPT0wKXticmVha311PXhjW2NbKGNbdT4+Ml18MCkrMjg+PjJdJjYzXSh1LDEwKXwwO0g9Y1t0Pj4yXXwwO2NbdD4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbcz4+Ml18MCkrOD4+Ml0mMjU1XShzKX1saChyLHUpO1lnKHIpO3I9ZFtxPj4wXXxkW3ErMT4+MF08PDg7cT1yJjY1NTM1O3I9cjw8MTY+PjE2PT0wPzE6cTt3aGlsZSgxKXtzPXVuKHIpfDA7aWYoKHN8MCkhPTApe2JyZWFrfXM9Y1s1NjY2XXwwO2NbNTY2Nl09cyswO2lmKChzfDApPT0wKXtsPTE1ODticmVha31zY1tzJjMxXSgpfWlmKChsfDApPT0xNTgpe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfXQ9Y1tiPj4yXXwwO3I9dCsxM3wwO2Rve2lmKChhW3I+PjBdfDApPT0wKXtIPXQrNHwwO0U9dCs4fDA7Rz1jW0U+PjJdfDA7Rj0oY1tIPj4yXXwwKS1HfDA7Rj0oRnwwKTwocXwwKT9GOnE7TW4oc3wwLChjW3Q+PjJdfDApK0d8MCxGfDApfDA7Rz0oY1tFPj4yXXwwKStGfDA7Y1tFPj4yXT1HO2NbdCsxNj4+Ml09RjtpZigoR3wwKTwoY1tIPj4yXXwwKSl7YnJlYWt9YVtyPj4wXT0xfWVsc2V7YVt0KzEyPj4wXT0xfX13aGlsZSgwKTt0PXMrMzR8MDtxPWIrMjQ3fDA7TW4ocXwwLHN8MCwzNCl8MDtpZighKChkW3E+PjBdfGRbcSsxPj4wXTw8OCk8PDE2Pj4xNj09Mikpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big2OCl8MDtpZigoYnwwKSE9MCl7bD0xNzE7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTE3MSl7Y1tiKzQ+PjJdPTU1O2NbYj4+Ml09NTU7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTYyMDB8MDtlPWYrNTZ8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NjI2NDt3YihnfDAsNjA5Niw3NCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1TYyg4MzUyLDYxMTIpfDA7cT1oaChyLGRbcT4+MF18ZFtxKzE+PjBdPDw4KXwwO3I9Y1txKygoY1soY1txPj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dT1yKzR8MDtjW3U+PjJdPShjW3U+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9dj0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dz1jW3IrOD4+Ml18MDtkb3tpZigoY1tyKzEyPj4yXXwwKS13Pj4yPj4+MD52Pj4+MCl7dj1jW3crKHY8PDIpPj4yXXwwO2lmKCh2fDApPT0wKXticmVha312PXhjW2NbKGNbdj4+Ml18MCkrMjg+PjJdJjYzXSh2LDEwKXwwO0g9Y1t1Pj4yXXwwO2NbdT4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbcj4+Ml18MCkrOD4+Ml0mMjU1XShyKX1saChxLHYpO1lnKHEpO3Y9U2MoODM1Miw2MTI4KXwwO3E9YisyNzl8MDt2PWhoKHYsZFtxPj4wXXxkW3ErMT4+MF08PDgpfDA7cj1jW3YrKChjWyhjW3Y+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDt1PXIrNHwwO2NbdT4+Ml09KGNbdT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX13PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt4PWNbcis4Pj4yXXwwO2Rve2lmKChjW3IrMTI+PjJdfDApLXg+PjI+Pj4wPnc+Pj4wKXt3PWNbeCsodzw8Mik+PjJdfDA7aWYoKHd8MCk9PTApe2JyZWFrfXc9eGNbY1soY1t3Pj4yXXwwKSsyOD4+Ml0mNjNdKHcsMTApfDA7SD1jW3U+PjJdfDA7Y1t1Pj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfWxoKHYsdyk7WWcodik7cj0oKGRbcT4+MF18ZFtxKzE+PjBdPDw4KSY2NTUzNSkqNnwwO3I9KHJ8MCk9PTA/MTpyO3doaWxlKDEpe3U9dW4ocil8MDtpZigodXwwKSE9MCl7YnJlYWt9dT1jWzU2NjZdfDA7Y1s1NjY2XT11KzA7aWYoKHV8MCk9PTApe2w9MTk0O2JyZWFrfXNjW3UmMzFdKCl9aWYoKGx8MCk9PTE5NCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1iKzI4MXwwO2Fbcj4+MF09dTthW3IrMT4+MF09dT4+ODthW3IrMj4+MF09dT4+MTY7YVtyKzM+PjBdPXU+PjI0O3U9U2MoODM1Miw2MTQ0KXwwO3Y9Y1t1KygoY1soY1t1Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dz12KzR8MDtjW3c+PjJdPShjW3c+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9eD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7eT1jW3YrOD4+Ml18MDtkb3tpZigoY1t2KzEyPj4yXXwwKS15Pj4yPj4+MD54Pj4+MCl7eD1jW3krKHg8PDIpPj4yXXwwO2lmKCh4fDApPT0wKXticmVha314PXhjW2NbKGNbeD4+Ml18MCkrMjg+PjJdJjYzXSh4LDEwKXwwO0g9Y1t3Pj4yXXwwO2Nbdz4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbdj4+Ml18MCkrOD4+Ml0mMjU1XSh2KX1saCh1LHgpO1lnKHUpO2Q6ZG97aWYoISgoZFtxPj4wXXxkW3ErMT4+MF08PDgpPDwxNj4+MTY9PTApKXt2PWYrNHwwO3U9Zis4fDA7dz0wO3doaWxlKDEpe01uKChkW3I+PjBdfGRbcisxPj4wXTw8OHxkW3IrMj4+MF08PDE2fGRbciszPj4wXTw8MjQpKyh3KjZ8MCl8MCx0fDAsNil8MDt6PWloKFNjKDgzNTIsNjE3Nil8MCx3KXwwO3k9Y1t6KygoY1soY1t6Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7eD15KzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2Nbdj4+Ml09MjA4O2NbdT4+Ml09MDtjZygxMzQ1NixmKX1BPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtCPWNbeSs4Pj4yXXwwO2lmKCEoKGNbeSsxMj4+Ml18MCktQj4+Mj4+PjA+QT4+PjApKXticmVha31BPWNbQisoQTw8Mik+PjJdfDA7aWYoKEF8MCk9PTApe2JyZWFrfUE9eGNbY1soY1tBPj4yXXwwKSsyOD4+Ml0mNjNdKEEsMTApfDA7SD1jW3g+PjJdfDA7Y1t4Pj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1t5Pj4yXXwwKSs4Pj4yXSYyNTVdKHkpfWxoKHosQSk7WWcoeik7dz13KzF8MDtpZigod3wwKT49KChkW3E+PjBdfGRbcSsxPj4wXTw8OCkmNjU1MzV8MCkpe2JyZWFrIGR9ZWxzZXt0PXQrNnwwfX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dm4ocyk7ZTpkb3tpZighKChkW3E+PjBdfGRbcSsxPj4wXTw8OCk8PDE2Pj4xNj09MCkpe3c9YiszMDR8MDt2PWIrMzA4fDA7eD1iKzMwMHwwO3U9Zis0fDA7dD1mKzh8MDtzPTA7Zjp3aGlsZSgxKXt5PVNjKDgzNTIsNTk2OCl8MDtBPWNbeSsoKGNbKGNbeT4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO3o9QSs0fDA7Y1t6Pj4yXT0oY1t6Pj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW3U+PjJdPTIwODtjW3Q+PjJdPTA7Y2coMTM0NTYsZil9Qj0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7Qz1jW0ErOD4+Ml18MDtpZighKChjW0ErMTI+PjJdfDApLUM+PjI+Pj4wPkI+Pj4wKSl7bD0yMzQ7YnJlYWt9Qj1jW0MrKEI8PDIpPj4yXXwwO2lmKChCfDApPT0wKXtsPTIzNDticmVha31CPXhjW2NbKGNbQj4+Ml18MCkrMjg+PjJdJjYzXShCLDEwKXwwO0g9Y1t6Pj4yXXwwO2Nbej4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbQT4+Ml18MCkrOD4+Ml0mMjU1XShBKX1saCh5LEIpO1lnKHkpO0E9ZFtyPj4wXXxkW3IrMT4+MF08PDh8ZFtyKzI+PjBdPDwxNnxkW3IrMz4+MF08PDI0O3k9QSsocyo2fDApfDA7eT0oZFt5Pj4wXXxkW3krMT4+MF08PDgpJjY1NTM1O3o9QSsocyo2fDApKzJ8MDt6PShkW3o+PjBdfGRbeisxPj4wXTw8OCkmNjU1MzU7QT1BKyhzKjZ8MCkrNHwwO0E9KGRbQT4+MF18ZFtBKzE+PjBdPDw4KSY2NTUzNTtDPWNbdz4+Ml18MDtkb3tpZigoQ3wwKT09KGNbdj4+Ml18MCkpe0I9Y1t4Pj4yXXwwO0U9Qy1CfDA7Qz0oRXwwKS8xMnwwO0Q9QysxfDA7aWYoRD4+PjA+MzU3OTEzOTQxKXtsPTI0NDticmVhayBmfWlmKEM+Pj4wPDE3ODk1Njk3MCl7Rj1DPDwxO0Y9Rj4+PjA8RD4+PjA/RDpGO2lmKChGfDApPT0wKXtGPTA7Rz0wfWVsc2V7bD0yNDd9fWVsc2V7Rj0zNTc5MTM5NDE7bD0yNDd9aWYoKGx8MCk9PTI0Nyl7bD0wO0g9RioxMnwwO0g9KEh8MCk9PTA/MTpIO3doaWxlKDEpe0c9dW4oSCl8MDtpZigoR3wwKSE9MCl7YnJlYWt9Rz1jWzU2NjZdfDA7Y1s1NjY2XT1HKzA7aWYoKEd8MCk9PTApe2w9MjUxO2JyZWFrIGZ9c2NbRyYzMV0oKX19SD1HKyhDKjEyfDApfDA7aWYoKEh8MCkhPTApe2NbSD4+Ml09eTtjW0crKEMqMTJ8MCkrND4+Ml09ejtjW0crKEMqMTJ8MCkrOD4+Ml09QX1IPUcrKCgoKEV8MCkvLTEyfDApK0N8MCkqMTJ8MCl8MDtMbihIfDAsQnwwLEV8MCl8MDtjW3g+PjJdPUg7Y1t3Pj4yXT1HKyhEKjEyfDApO2Nbdj4+Ml09RysoRioxMnwwKTtpZigoQnwwKT09MCl7YnJlYWt9dm4oQil9ZWxzZXtpZigoQ3wwKT09MCl7eT0wfWVsc2V7Y1tDPj4yXT15O2NbQys0Pj4yXT16O2NbQys4Pj4yXT1BO3k9Y1t3Pj4yXXwwfWNbdz4+Ml09eSsxMn19d2hpbGUoMCk7cz1zKzF8MDtpZigoc3wwKT49KChkW3E+PjBdfGRbcSsxPj4wXTw8OCkmNjU1MzV8MCkpe2JyZWFrIGV9fWlmKChsfDApPT0yMzQpe0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfWVsc2UgaWYoKGx8MCk9PTI0NCl7VGsoKX1lbHNlIGlmKChsfDApPT0yNTEpe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfX19d2hpbGUoMCk7cz1TYyg4MzUyLDUzMjApfDA7cj1jW3MrKChjWyhjW3M+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtxPXIrNHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX11PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt0PWNbcis4Pj4yXXwwO2Rve2lmKChjW3IrMTI+PjJdfDApLXQ+PjI+Pj4wPnU+Pj4wKXt0PWNbdCsodTw8Mik+PjJdfDA7aWYoKHR8MCk9PTApe2JyZWFrfXQ9eGNbY1soY1t0Pj4yXXwwKSsyOD4+Ml0mNjNdKHQsMTApfDA7SD1jW3E+PjJdfDA7Y1txPj4yXT1IKyAtMTtpZigoSHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfWxoKHMsdCk7WWcocyk7cj1jW2I+PjJdfDA7cT1iKzExNnwwO3M9ZFtxPj4wXXxkW3ErMT4+MF08PDh8ZFtxKzI+PjBdPDwxNnxkW3ErMz4+MF08PDI0O0g9Y1tyKzQ+PjJdfDA7Rz0oKEh8MCk8MCk8PDMxPj4zMTtpZigwPChHfDApfDA9PShHfDApJnM+Pj4wPEg+Pj4wKXtjW3IrOD4+Ml09c31lbHNle2FbcisxMj4+MF09MX1zPW87Y1tzPj4yXT0wO2Nbcys0Pj4yXT0wO3M9Y1tiPj4yXXwwO3I9cysxM3wwO2Rve2lmKChhW3I+PjBdfDApPT0wKXtIPWNbcys0Pj4yXXwwO0U9cys4fDA7Rz1jW0U+PjJdfDA7Rj1ILUd8MDtGPShGfDApPDg/Rjo4O0xuKG98MCwoY1tzPj4yXXwwKStHfDAsRnwwKXwwO0c9RytGfDA7Y1tFPj4yXT1HO2NbcysxNj4+Ml09RjtpZigoR3wwKTwoSHwwKSl7YnJlYWt9YVtyPj4wXT0xfWVsc2V7YVtzKzEyPj4wXT0xfX13aGlsZSgwKTtHPShjW2I+PjJdfDApKzEyfDA7SD1hW0c+PjBdfDA7YVtHPj4wXT0wO2lmKCEoSDw8MjQ+PjI0PT0wKSl7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDU2KXwwO2lmKChifDApIT0wKXtsPTI4MjticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjgyKXtjW2IrND4+Ml09NDM7Y1tiPj4yXT00MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTc4NHwwO2U9Zis0NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT01ODQwO3diKGd8MCw1Mzg0LDcwKX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1zPWNbbz4+Ml18MDtvPWNbbys0Pj4yXXwwO2lmKChzfDApPT0tMSYob3wwKT09LTEpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big2Nyl8MDtpZigoYnwwKSE9MCl7bD0yOTA7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTI5MCl7Y1tiKzQ+PjJdPTU0O2NbYj4+Ml09NTQ7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTU0MDB8MDtlPWYrNTV8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NTc2ODt3YihnfDAsNTQ4OCw2OCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9cj1jW2I+PjJdfDA7SD1jW3IrND4+Ml18MDtHPSgoSHwwKTwwKTw8MzE+PjMxO2lmKChvfDApPChHfDApfChvfDApPT0oR3wwKSZzPj4+MDxIPj4+MCl7Y1tyKzg+PjJdPXN9ZWxzZXthW3IrMTI+PjBdPTF9Rz0oY1tiPj4yXXwwKSsxMnwwO0g9YVtHPj4wXXwwO2FbRz4+MF09MDtpZighKEg8PDI0Pj4yND09MCkpe2c9WGEoOCl8MDtjW2c+PjJdPTk5Mjg7d2hpbGUoMSl7Yj11big1Nil8MDtpZigoYnwwKSE9MCl7bD0zMDE7YnJlYWt9Yj1jWzU2NjZdfDA7Y1s1NjY2XT1iKzA7aWYoKGJ8MCk9PTApe2JyZWFrfXNjW2ImMzFdKCl9aWYoKGx8MCk9PTMwMSl7Y1tiKzQ+PjJdPTQzO2NbYj4+Ml09NDM7Zj1iKzEyfDA7Y1tnKzQ+PjJdPWY7Y1tiKzg+PjJdPTA7Zj1mKzB8MDtiPTU3ODR8MDtlPWYrNDR8MDtkb3thW2Y+PjBdPWFbYj4+MF18MDtmPWYrMXwwO2I9YisxfDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2NbZz4+Ml09NTg0MDt3YihnfDAsNTM4NCw3MCl9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9bz1jW2I+PjJdfDA7cj1vKzEzfDA7ZG97aWYoKGFbcj4+MF18MCk9PTApe0g9Y1tvKzQ+PjJdfDA7RT1vKzh8MDtHPWNbRT4+Ml18MDtGPUgtR3wwO0Y9KEZ8MCk8OD9GOjg7TG4obnwwLChjW28+PjJdfDApK0d8MCxGfDApfDA7Rz1HK0Z8MDtjW0U+PjJdPUc7Y1tvKzE2Pj4yXT1GO2lmKChHfDApPChIfDApKXticmVha31hW3I+PjBdPTF9ZWxzZXthW28rMTI+PjBdPTF9fXdoaWxlKDApO0c9KGNbYj4+Ml18MCkrMTJ8MDtIPWFbRz4+MF18MDthW0c+PjBdPTA7aWYoIShIPDwyND4+MjQ9PTApKXtnPVhhKDgpfDA7Y1tnPj4yXT05OTI4O3doaWxlKDEpe2I9dW4oNTYpfDA7aWYoKGJ8MCkhPTApe2w9MzEzO2JyZWFrfWI9Y1s1NjY2XXwwO2NbNTY2Nl09YiswO2lmKChifDApPT0wKXticmVha31zY1tiJjMxXSgpfWlmKChsfDApPT0zMTMpe2NbYis0Pj4yXT00MztjW2I+PjJdPTQzO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj01Nzg0fDA7ZT1mKzQ0fDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTU4NDA7d2IoZ3wwLDUzODQsNzApfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfWlmKChjW24+PjJdfDApIT0wKXtnPVhhKDgpfDA7Y1tnPj4yXT05OTI4O3doaWxlKDEpe2I9dW4oNTQpfDA7aWYoKGJ8MCkhPTApe2w9MzIxO2JyZWFrfWI9Y1s1NjY2XXwwO2NbNTY2Nl09YiswO2lmKChifDApPT0wKXticmVha31zY1tiJjMxXSgpfWlmKChsfDApPT0zMjEpe2NbYis0Pj4yXT00MTtjW2I+PjJdPTQxO2Y9YisxMnwwO2NbZys0Pj4yXT1mO2NbYis4Pj4yXT0wO2Y9ZiswfDA7Yj01Njg4fDA7ZT1mKzQyfDA7ZG97YVtmPj4wXT1hW2I+PjBdfDA7Zj1mKzF8MDtiPWIrMXwwfXdoaWxlKChmfDApPChlfDApKTtjW2c+PjJdPTU3NDQ7d2IoZ3wwLDU1NDQsNjYpfUg9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfW89YisyODh8MDtzPWNbbz4+Ml18MDtyPWIrMjkyfDA7dD1jW3I+PjJdfDA7aWYoKHR8MCk9PShzfDApKXt3PXN9ZWxzZXt3PXQrKH4oKHQrIC04KygwLXMpfDApPj4+Myk8PDMpfDA7Y1tyPj4yXT13fUg9YisyNTl8MDtpZigoZFtIPj4wXXxkW0grMT4+MF08PDh8ZFtIKzI+PjBdPDwxNnxkW0grMz4+MF08PDI0fDApPT0tMSl7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDk2KXwwO2lmKChifDApIT0wKXtsPTMzMTticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MzMxKXtjW2IrND4+Ml09ODM7Y1tiPj4yXT04MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTU2MHwwO2U9Zis4NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT01NzY4O3diKGd8MCw1NDg4LDY4KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX12PW4rNHwwO249Y1t2Pj4yXXwwO3U9bisxfDA7ej1zO3Q9dy16Pj4zO2Rve2lmKHQ+Pj4wPHU+Pj4wKXt1PXUtdHwwO3Q9YisyOTZ8MDtBPWNbdD4+Ml18MDt4PXc7aWYoIShBLXg+PjM+Pj4wPHU+Pj4wKSl7dD11O2w9dzt3aGlsZSgxKXtpZigobHwwKSE9MCl7SD1sO2NbSD4+Ml09MDtjW0grND4+Ml09MH10PXQrIC0xfDA7aWYoKHR8MCk9PTApe2JyZWFrfWVsc2V7bD1sKzh8MH19Y1tyPj4yXT13Kyh1PDwzKTticmVha314PXgtenwwO3k9eD4+Mzt3PXkrdXwwO2lmKHc+Pj4wPjUzNjg3MDkxMSl7VGsoKX16PUEtenwwO2lmKHo+PjM+Pj4wPDI2ODQzNTQ1NSl7ej16Pj4yO3o9ej4+PjA8dz4+PjA/dzp6O2lmKCh6fDApPT0wKXt6PTA7Qj0wfWVsc2V7bD0zNDJ9fWVsc2V7ej01MzY4NzA5MTE7bD0zNDJ9ZG97aWYoKGx8MCk9PTM0Mil7QT16PDwzO0E9KEF8MCk9PTA/MTpBO3doaWxlKDEpe0I9dW4oQSl8MDtpZigoQnwwKSE9MCl7bD0zNDg7YnJlYWt9Qj1jWzU2NjZdfDA7Y1s1NjY2XT1CKzA7aWYoKEJ8MCk9PTApe2JyZWFrfXNjW0ImMzFdKCl9aWYoKGx8MCk9PTM0OCl7YnJlYWt9SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2w9QisoeTw8Myl8MDt3aGlsZSgxKXtpZigobHwwKSE9MCl7SD1sO2NbSD4+Ml09MDtjW0grND4+Ml09MH11PXUrIC0xfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7bD1sKzh8MH19TG4oQnwwLHN8MCx4fDApfDA7Y1tvPj4yXT1CO2Nbcj4+Ml09Qisodzw8Myk7Y1t0Pj4yXT1CKyh6PDwzKTtpZigoc3wwKT09MCl7cz1CO2JyZWFrfXZuKHMpO3M9Y1tvPj4yXXwwfWVsc2V7aWYoISh0Pj4+MD51Pj4+MCkpe2JyZWFrfWw9cysodTw8Myl8MDtpZigod3wwKT09KGx8MCkpe2JyZWFrfWNbcj4+Ml09dysofigodysgLTgrKDAtbCl8MCk+Pj4zKTw8Myl9fXdoaWxlKDApO2w9ZFtxPj4wXXxkW3ErMT4+MF08PDh8ZFtxKzI+PjBdPDwxNnxkW3ErMz4+MF08PDI0O0g9cztjW0g+PjJdPWwrODtjW0grND4+Ml09MDtnOmRve2lmKG4+Pj4wPjEpe2NbbT4+Ml09Y1tiPj4yXTtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtsPW0rMTJ8MDtzPXVuKDEwNDg2NDQpfDA7eT1zKzY4Ji02NDtjW3krIC00Pj4yXT1zO2NbbD4+Ml09eTtjW2o+PjJdPW07eT1qKzR8MDtjW3k+PjJdPTA7Y1tqKzg+PjJdPS0xO2NbZys0Pj4yXT0zMjtjW2crOD4+Ml09MjtjW2crMTI+PjJdPTg7Y1tnKzE2Pj4yXT0wO3M9ZyszNnwwO2Nbcz4+Ml09MDtuPWcrNDB8MDtjW24+PjJdPTA7Y1tnKzQ0Pj4yXT0wO2NbZys2MD4+Ml09MTtjW2crNjQ+PjJdPTI7Y1tnKzU2Pj4yXT00MDk2O2NbZys1Mj4+Ml09NDtjW2crNDg+PjJdPTQ7dT1nKzY4fDA7Y1t1Pj4yXT0wO3Q9Zys3MnwwO2NbdD4+Ml09MDtjW2crNzY+PjJdPTA7Y1tnKzIwPj4yXT0zMjt3PWcrMjR8MDtjW3c+PjJdPTA7Y1tnKzI4Pj4yXT0tMjE0NzQ4MzY0ODtjW2crMzI+PjJdPTIxNDc0ODM2NDc7Y1tnPj4yXT0wO0g9bWQobSl8MDtHPW1kKG0pfDA7eD1tZChtKXwwO2NbeT4+Ml09KEcmMjU1KTw8MTZ8KEgmMjU1KTw8MjR8KHgmMjU1KTw8OHwobWQobSl8MCkmMjU1O3RkKGcpO3k9U2MoODM1Miw1NjQ4KXwwO209Y1t2Pj4yXXwwO3k9amgoeSxtKXwwO3g9Y1t5KygoY1soY1t5Pj4yXXwwKSsgLTEyPj4yXXwwKSsyOCk+PjJdfDA7dj14KzR8MDtjW3Y+PjJdPShjW3Y+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2Y+PjJdPTEzNDU2O2NbZis0Pj4yXT0yMDg7Y1tmKzg+PjJdPTA7Y2coMTM0NTYsZil9QT0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7ej1jW3grOD4+Ml18MDtkb3tpZigoY1t4KzEyPj4yXXwwKS16Pj4yPj4+MD5BPj4+MCl7ej1jW3orKEE8PDIpPj4yXXwwO2lmKCh6fDApPT0wKXticmVha316PXhjW2NbKGNbej4+Ml18MCkrMjg+PjJdJjYzXSh6LDEwKXwwO0g9Y1t2Pj4yXXwwO2Nbdj4+Ml09SCsgLTE7aWYoKEh8MCk9PTApe2xjW2NbKGNbeD4+Ml18MCkrOD4+Ml0mMjU1XSh4KX1saCh5LHopO1lnKHkpO2g6ZG97aWYoKG18MCkhPTApe3g9Zis0fDA7dj1mKzh8MDt5PTE7d2hpbGUoMSl7aWYoeT4+PjA+MSl7ej1jWyhjW28+PjJdfDApKyh5KyAtMTw8Myk+PjJdfDB9ZWxzZXt6PTB9QT0ocmQoZyxqLChjW3M+PjJdfDApKzQ0fDApfDApK3p8MDt6PWNbdz4+Ml18MDtpZigoQXwwKTwwKXt6PXorQXwwfWVsc2V7ej1BLShBPj4+MDx6Pj4+MD8wOnopfDB9QT0oY1tvPj4yXXwwKSsoeTw8Myl8MDtjW0E+PjJdPXo7Y1tBKzQ+PjJdPSgoenwwKTwwKTw8MzE+PjMxO0E9U2MoamgoU2MoODM1Miw1NjcyKXwwLHkpfDAsNTY4MCl8MDt6PShjW28+PjJdfDApKyh5PDwzKXwwO3o9a2goQSxjW3o+PjJdfDAsY1t6KzQ+PjJdfDApfDA7QT1jW3orKChjWyhjW3o+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtCPUErNHwwO2NbQj4+Ml09KGNbQj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1t4Pj4yXT0yMDg7Y1t2Pj4yXT0wO2NnKDEzNDU2LGYpfUM9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0Q9Y1tBKzg+PjJdfDA7aWYoISgoY1tBKzEyPj4yXXwwKS1EPj4yPj4+MD5DPj4+MCkpe2JyZWFrfUM9Y1tEKyhDPDwyKT4+Ml18MDtpZigoQ3wwKT09MCl7YnJlYWt9Qz14Y1tjWyhjW0M+PjJdfDApKzI4Pj4yXSY2M10oQywxMCl8MDtIPWNbQj4+Ml18MDtjW0I+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0E+PjJdfDApKzg+PjJdJjI1NV0oQSl9bGgoeixDKTtZZyh6KTt5PXkrMXwwO2lmKHk+Pj4wPm0+Pj4wKXticmVhayBofX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dj1jW28+PjJdfDA7aTpkb3tpZigoY1tyPj4yXXwwKS12Pj4zPj4+MD4xKXtqPWYrNHwwO2c9Zis4fDA7bT0xO3doaWxlKDEpe3c9disobSsgLTE8PDMpfDA7dj12KyhtPDwzKXwwO3g9djt3PUluKGNbeD4+Ml18MCxjW3grND4+Ml18MCxjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7Y1t2Pj4yXT13O2Nbdis0Pj4yXT1JO3Y9U2MoamgoU2MoODM1Miw1NjcyKXwwLG0pfDAsNTY4MCl8MDt3PShjW28+PjJdfDApKyhtPDwzKXwwO3c9a2godixjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7dj1jW3crKChjWyhjW3c+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDt4PXYrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tqPj4yXT0yMDg7Y1tnPj4yXT0wO2NnKDEzNDU2LGYpfXo9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3k9Y1t2Kzg+PjJdfDA7aWYoISgoY1t2KzEyPj4yXXwwKS15Pj4yPj4+MD56Pj4+MCkpe2JyZWFrfXk9Y1t5Kyh6PDwyKT4+Ml18MDtpZigoeXwwKT09MCl7YnJlYWt9eT14Y1tjWyhjW3k+PjJdfDApKzI4Pj4yXSY2M10oeSwxMCl8MDtIPWNbeD4+Ml18MDtjW3g+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW3Y+PjJdfDApKzg+PjJdJjI1NV0odil9bGgodyx5KTtZZyh3KTttPW0rMXwwO3Y9Y1tvPj4yXXwwO2lmKCEobT4+PjA8KGNbcj4+Ml18MCktdj4+Mz4+PjApKXticmVhayBpfX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zj1jW3U+PjJdfDA7ZG97aWYoKGZ8MCkhPTApe2c9Y1t0Pj4yXXwwO2lmKChnfDApIT0oZnwwKSl7ZG97Y1t0Pj4yXT1nKyAtNDQ7aj1jW2crIC0zNj4+Ml18MDtpZigoanwwKSE9MCl7dm4oY1tqKyAtND4+Ml18MCl9aj1jW2crIC0zMj4+Ml18MDtpZigoanwwKSE9MCl7dm4oY1tqKyAtND4+Ml18MCl9Zz1jW2crIC0yOD4+Ml18MDtpZigoZ3wwKSE9MCl7dm4oY1tnKyAtND4+Ml18MCl9Zz1jW3Q+PjJdfDB9d2hpbGUoKGd8MCkhPShmfDApKTtmPWNbdT4+Ml18MDtpZigoZnwwKT09MCl7YnJlYWt9fXZuKGYpfX13aGlsZSgwKTtmPWNbcz4+Ml18MDtkb3tpZigoZnwwKSE9MCl7Zz1jW24+PjJdfDA7aWYoKGd8MCkhPShmfDApKXtkb3tjW24+PjJdPWcrIC00NDtqPWNbZysgLTM2Pj4yXXwwO2lmKChqfDApIT0wKXt2bihjW2orIC00Pj4yXXwwKX1qPWNbZysgLTMyPj4yXXwwO2lmKChqfDApIT0wKXt2bihjW2orIC00Pj4yXXwwKX1nPWNbZysgLTI4Pj4yXXwwO2lmKChnfDApIT0wKXt2bihjW2crIC00Pj4yXXwwKX1nPWNbbj4+Ml18MH13aGlsZSgoZ3wwKSE9KGZ8MCkpO2Y9Y1tzPj4yXXwwO2lmKChmfDApPT0wKXticmVha319dm4oZil9fXdoaWxlKDApO3ZuKGNbKGNbbD4+Ml18MCkrIC00Pj4yXXwwKTtsPWRbcT4+MF18ZFtxKzE+PjBdPDw4fGRbcSsyPj4wXTw8MTZ8ZFtxKzM+PjBdPDwyNDticmVhayBnfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zj1jW2I+PjJdfDA7YVtmKzEyPj4wXT0wO2FbZisxMz4+MF09MDtmPWNbYj4+Ml18MDtnPWwrOHwwO0g9Y1tmKzQ+PjJdfDA7Rz0oKEh8MCk8MCk8PDMxPj4zMTtpZigwPChHfDApfDA9PShHfDApJmc+Pj4wPEg+Pj4wKXtjW2YrOD4+Ml09ZztIPWIrMTJ8MDtjW0g+PjJdPTA7SD1iKzh8MDtjW0g+PjJdPTA7aT1lO3JldHVybn1lbHNle2FbZisxMj4+MF09MTtIPWIrMTJ8MDtjW0g+PjJdPTA7SD1iKzh8MDtjW0g+PjJdPTA7aT1lO3JldHVybn19fXdoaWxlKDApO0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO0g9WGEoNCl8MDtjW0g+PjJdPTIxMzA0O3diKEh8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtIPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Zz1YYSg4KXwwO2NbZz4+Ml09OTkyODt3aGlsZSgxKXtiPXVuKDU2KXwwO2lmKChifDApIT0wKXtsPTIyOTticmVha31iPWNbNTY2Nl18MDtjWzU2NjZdPWIrMDtpZigoYnwwKT09MCl7YnJlYWt9c2NbYiYzMV0oKX1pZigobHwwKT09MjI5KXtjW2IrND4+Ml09NDM7Y1tiPj4yXT00MztmPWIrMTJ8MDtjW2crND4+Ml09ZjtjW2IrOD4+Ml09MDtmPWYrMHwwO2I9NTk4NHwwO2U9Zis0NHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZXwwKSk7Y1tnPj4yXT02MDQwO3diKGd8MCw1OTUyLDcyKX1IPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX1IPVhhKDQpfDA7Y1tIPj4yXT0yMTMwNDt3YihIfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBwZShhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Yj1pO2k9aSsxNnwwO2Y9YjtnPVNjKDgzNTIsNTE5Mil8MDtoPWNbZysoKGNbKGNbZz4+Ml18MCkrIC0xMj4+Ml18MCkrMjgpPj4yXXwwO2o9aCs0fDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tmPj4yXT0xMzQ1NjtjW2YrND4+Ml09MjA4O2NbZis4Pj4yXT0wO2NnKDEzNDU2LGYpfWw9KGNbMTM0NjA+PjJdfDApKyAtMXwwO209Y1toKzg+PjJdfDA7aWYoKGNbaCsxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7az14Y1tjWyhjW2s+PjJdfDApKzI4Pj4yXSY2M10oaywxMCl8MDttPWNbaj4+Ml18MDtjW2o+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2g+PjJdfDApKzg+PjJdJjI1NV0oaCl9bGgoZyxrKTtZZyhnKTtnPWErMzR8MDtnPWRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNDtpZigoZ3wwKSE9MCl7dm4oZyl9Zz1TYyg4MzUyLDUyMDgpfDA7aD1jW2crKChjWyhjW2c+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtqPWgrNHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbZj4+Ml09MTM0NTY7Y1tmKzQ+PjJdPTIwODtjW2YrOD4+Ml09MDtjZygxMzQ1NixmKX1mPShjWzEzNDYwPj4yXXwwKSsgLTF8MDthPWNbaCs4Pj4yXXwwO2lmKChjW2grMTI+PjJdfDApLWE+PjI+Pj4wPmY+Pj4wPyhlPWNbYSsoZjw8Mik+PjJdfDAsKGV8MCkhPTApOjApe2U9eGNbY1soY1tlPj4yXXwwKSsyOD4+Ml0mNjNdKGUsMTApfDA7bT1jW2o+PjJdfDA7Y1tqPj4yXT1tKyAtMTtpZigobXwwKT09MCl7bGNbY1soY1toPj4yXXwwKSs4Pj4yXSYyNTVdKGgpfWxoKGcsZSk7WWcoZyk7aT1iO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBxZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gcmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHNlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiB0ZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gdWUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB2ZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHdlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24geGUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHllKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gemUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEFlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gQmUoYSl7YT1hfDA7dmFyIGI9MDtiPWk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIENlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRGUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTA7Yj1pO2Q9Y1thPj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufWU9YSs0fDA7Zj1jW2U+PjJdfDA7aWYoKGZ8MCkhPShkfDApKXtkb3tnPWYrIC0yNHwwO2NbZT4+Ml09ZztmPWNbZisgLTg+PjJdfDA7aWYoKGZ8MCkhPShnfDApKXtpZigoZnwwKSE9MCl7bGNbY1soY1tmPj4yXXwwKSsyMD4+Ml0mMjU1XShmKX19ZWxzZXtsY1tjWyhjW2Y+PjJdfDApKzE2Pj4yXSYyNTVdKGYpfWY9Y1tlPj4yXXwwfXdoaWxlKChmfDApIT0oZHwwKSk7ZD1jW2E+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59fXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gRWUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEZlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEdlKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2E9aTt3aGlsZSgxKXtkPXVuKDgpfDA7aWYoKGR8MCkhPTApe2I9NzticmVha31kPWNbNTY2Nl18MDtjWzU2NjZdPWQrMDtpZigoZHwwKT09MCl7YnJlYWt9c2NbZCYzMV0oKX1pZigoYnwwKT09Nyl7Y1tkPj4yXT02NDE2O2k9YTtyZXR1cm4gZHwwfWQ9WGEoNCl8MDtjW2Q+PjJdPTIyNjgwO3diKGR8MCwyMjcyOCwyMDYpO3JldHVybiAwfWZ1bmN0aW9uIEhlKGEsYil7YT1hfDA7Yj1ifDA7aWYoKGJ8MCkhPTApe2NbYj4+Ml09NjQxNn1yZXR1cm59ZnVuY3Rpb24gSWUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEplKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEtlKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtiPWk7aj1lKzEwNHwwO2c9ZFtqPj4wXXwwO2U9Zz4+Pjc7aD1nPj4+NiYxO2lmKCEoKGV8MCkhPTF8KGh8MCk9PTApKXtiPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oODApfDA7aWYoKGV8MCkhPTApe2Y9ODticmVha31lPWNbNTY2Nl18MDtjWzU2NjZdPWUrMDtpZigoZXwwKT09MCl7YnJlYWt9c2NbZSYzMV0oKX1pZigoZnwwKT09OCl7Y1tlKzQ+PjJdPTY3O2NbZT4+Ml09Njc7Zz1lKzEyfDA7Y1tiKzQ+PjJdPWc7Y1tlKzg+PjJdPTA7Zz1nKzB8MDtlPTY5NjB8MDtmPWcrNjh8MDtkb3thW2c+PjBdPWFbZT4+MF18MDtnPWcrMXwwO2U9ZSsxfDB9d2hpbGUoKGd8MCk8KGZ8MCkpO2NbYj4+Ml09NzA0MDt3YihifDAsNjgzMiw4NCl9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9aWYoKGV8MCkhPShofDApKXthW2o+PjBdPWcmNjM7aT1iO3JldHVybn1iPVhhKDgpfDA7Y1tiPj4yXT05OTI4O3doaWxlKDEpe2U9dW4oNTEpfDA7aWYoKGV8MCkhPTApe2Y9MTY7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKGZ8MCk9PTE2KXtjW2UrND4+Ml09Mzg7Y1tlPj4yXT0zODtnPWUrMTJ8MDtjW2IrND4+Ml09ZztjW2UrOD4+Ml09MDtnPWcrMHwwO2U9Njg5NnwwO2Y9ZyszOXwwO2Rve2FbZz4+MF09YVtlPj4wXXwwO2c9ZysxfDA7ZT1lKzF8MH13aGlsZSgoZ3wwKTwoZnwwKSk7Y1tiPj4yXT02OTQ0O3diKGJ8MCw2ODgwLDgyKX1qPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX1mdW5jdGlvbiBMZShhLGIpe2E9YXwwO2I9YnwwO3JldHVybigoY1tiKzQ+PjJdfDApPT02Njg4P2ErNHwwOjApfDB9ZnVuY3Rpb24gTWUoYSl7YT1hfDA7cmV0dXJuIDY3ODR9ZnVuY3Rpb24gTmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKT49MCl7UmIoYXwwKTtpPWI7cmV0dXJufXZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIE9lKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBQZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFFlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKX1SYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gUmUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBTZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2I9aTtpPWkrMTZ8MDtoPWI7ZD1TYyg4MzUyLDcxMDQpfDA7ZT1jW2QrKChjWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDApKzI4KT4+Ml18MDtmPWUrNHwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbaD4+Ml09MTM0NTY7Y1toKzQ+PjJdPTIwODtjW2grOD4+Ml09MDtjZygxMzQ1NixoKX1oPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtqPWNbZSs4Pj4yXXwwO2lmKChjW2UrMTI+PjJdfDApLWo+PjI+Pj4wPmg+Pj4wPyhnPWNbaisoaDw8Mik+PjJdfDAsKGd8MCkhPTApOjApe2c9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcsMTApfDA7aj1jW2Y+PjJdfDA7Y1tmPj4yXT1qKyAtMTtpZigoanwwKT09MCl7bGNbY1soY1tlPj4yXXwwKSs4Pj4yXSYyNTVdKGUpfWxoKGQsZyk7WWcoZCk7ZD1jW2ErMzI0Pj4yXXwwO2lmKCgoZHwwKSE9MD8oaD1kKzR8MCxqPWNbaD4+Ml18MCxjW2g+PjJdPWorIC0xLChqfDApPT0wKTowKT8obGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpLGg9ZCs4fDAsaj1jW2g+PjJdfDAsY1toPj4yXT1qKyAtMSwoanwwKT09MCk6MCl7bGNbY1soY1tkPj4yXXwwKSsxNj4+Ml0mMjU1XShkKX1kPWNbYSszMTY+PjJdfDA7aWYoKChkfDApIT0wPyhoPWQrNHwwLGo9Y1toPj4yXXwwLGNbaD4+Ml09aisgLTEsKGp8MCk9PTApOjApPyhsY1tjWyhjW2Q+PjJdfDApKzg+PjJdJjI1NV0oZCksaD1kKzh8MCxqPWNbaD4+Ml18MCxjW2g+PjJdPWorIC0xLChqfDApPT0wKTowKXtsY1tjWyhjW2Q+PjJdfDApKzE2Pj4yXSYyNTVdKGQpfWQ9Y1thKzMwMD4+Ml18MDtpZigoZHwwKSE9MCl7ZT1hKzMwNHwwO2Y9Y1tlPj4yXXwwO2lmKChmfDApIT0oZHwwKSl7Y1tlPj4yXT1mKyh+KCgoZisgLTEyKygwLWQpfDApPj4+MCkvMTJ8MCkqMTJ8MCl9dm4oZCl9ZD1jW2ErMjg4Pj4yXXwwO2lmKChkfDApPT0wKXtqPWErMjQ3fDA7cGUoaik7aj1hKzE2fDA7aj1jW2o+PjJdfDA7aj1qKyAtNHwwO2o9Y1tqPj4yXXwwO3ZuKGopO2k9YjtyZXR1cm59ZT1hKzI5MnwwO2Y9Y1tlPj4yXXwwO2lmKChmfDApIT0oZHwwKSl7Y1tlPj4yXT1mKyh+KChmKyAtOCsoMC1kKXwwKT4+PjMpPDwzKX12bihkKTtqPWErMjQ3fDA7cGUoaik7aj1hKzE2fDA7aj1jW2o+PjJdfDA7aj1qKyAtNHwwO2o9Y1tqPj4yXXwwO3ZuKGopO2k9YjtyZXR1cm59aj1YYSg0KXwwO2Nbaj4+Ml09MjEzMDQ7d2IoanwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gVGUoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFVlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFZlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2E9Y1thKzEyPj4yXXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufVNlKGEpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gV2UoYSxiKXthPWF8MDtiPWJ8MDtpZigoY1tiKzQ+PjJdfDApPT03MzEyKXthPWErMTJ8MH1lbHNle2E9MH1yZXR1cm4gYXwwfWZ1bmN0aW9uIFhlKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFllKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBaZShhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBfZShhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSsxMj4+Ml18MDtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiAkZShhLGIpe2E9YXwwO2I9YnwwO2lmKChjW2IrND4+Ml18MCk9PTc1NjApe2E9YSsxMnwwfWVsc2V7YT0wfXJldHVybiBhfDB9ZnVuY3Rpb24gYWYoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gYmYoKXt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtiPWk7aT1pKzMyfDA7ZD1iO0hiKDcyLDk2LDE3NiwwLDE1Miw5MSwxNDQsMCwxNDQsMCw4LDEzNiwyMTEpO2NbZD4+Ml09MTtlPWQrNHwwO2NbZT4+Ml09OTY7T2IoNzIsMSxlfDAsMTI4LDkyLDIyKTtjW2Q+PjJdPTQ7ZT1kKzR8MDtjW2U+PjJdPTIxNzc2O2NbZCs4Pj4yXT05NjtjW2QrMTI+PjJdPTIxOTA0O2NbZCsxNj4+Ml09MjE5MDQ7Zj11big4KXwwO2lmKChmfDApIT0wKXthW2Y+PjBdPTI3O2FbZisxPj4wXT0wO2FbZisyPj4wXT0wO2FbZiszPj4wXT0wO2c9Zis0fDA7YVtnPj4wXT0wO2FbZysxPj4wXT0wO2FbZysyPj4wXT0wO2FbZyszPj4wXT0wfXpiKDcyLDE2LDQsZXwwLDEyMCwzMCxmfDAsMCk7Y1tkPj4yXT0zO2U9ZCs0fDA7Y1tlPj4yXT0yMTc3NjtjW2QrOD4+Ml09OTY7Y1tkKzEyPj4yXT0yMTg4ODtmPXVuKDgpfDA7aWYoKGZ8MCkhPTApe2FbZj4+MF09NjY7YVtmKzE+PjBdPTA7YVtmKzI+PjBdPTA7YVtmKzM+PjBdPTA7Zz1mKzR8MDthW2c+PjBdPTA7YVtnKzE+PjBdPTA7YVtnKzI+PjBdPTA7YVtnKzM+PjBdPTB9emIoNzIsMjQsMyxlfDAsMTEyLDI4LGZ8MCwwKTtjW2Q+PjJdPTI7ZT1kKzR8MDtjW2U+PjJdPTIxOTA0O2NbZCs4Pj4yXT05NjtkPXVuKDgpfDA7aWYoKGR8MCk9PTApe3piKDcyLDQwLDIsZXwwLDU2LDQ2LGR8MCwwKTtpPWI7cmV0dXJufWFbZD4+MF09OTM7YVtkKzE+PjBdPTA7YVtkKzI+PjBdPTA7YVtkKzM+PjBdPTA7Zz1kKzR8MDthW2c+PjBdPTA7YVtnKzE+PjBdPTA7YVtnKzI+PjBdPTA7YVtnKzM+PjBdPTA7emIoNzIsNDAsMixlfDAsNTYsNDYsZHwwLDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gY2YoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtkPWNbYSs0Pj4yXXwwO2U9KEpuKGR8MCl8MCkrMXwwO2E9dW4oZSl8MDtpZigoYXwwKT09MCl7ZT0wO2k9YjtyZXR1cm4gZXwwfUxuKGF8MCxkfDAsZXwwKXwwO2U9YTtpPWI7cmV0dXJuIGV8MH1mdW5jdGlvbiBkZigpe3ZhciBhPTA7YT1pO0phKDIxNzc2LDc2MjQpO3BiKDIxODA4LDc2MzIsMSwxLDApO1VhKDIxODI0LDc2NDAsMSwtMTI4LDEyNyk7VWEoMjE4NTYsNzY0OCwxLC0xMjgsMTI3KTtVYSgyMTg0MCw3NjY0LDEsMCwyNTUpO1VhKDIxODY0LDc2ODAsMiwtMzI3NjgsMzI3NjcpO1VhKDIxODcyLDc2ODgsMiwwLDY1NTM1KTtVYSgyMTg4OCw3NzA0LDQsLTIxNDc0ODM2NDgsMjE0NzQ4MzY0Nyk7VWEoMjE5MDQsNzcxMiw0LDAsLTEpO1VhKDIxOTIwLDc3MjgsNCwtMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3KTtVYSgyMTkzNiw3NzM2LDQsMCwtMSk7YWMoMjE5NTIsNzc1Miw0KTthYygyMTk2OCw3NzYwLDgpO3RiKDgyNDAsNzc2OCk7dGIoODE1Miw3Nzg0KTtKYig4MDY0LDQsNzgyNCk7eGIoNzk0NCw3ODQwKTtMYSg3OTEyLDc4NTYpO2k9YTtyZXR1cm59ZnVuY3Rpb24gZWYoYSl7YT1hfDA7YT1pO1lnKDgzNTIpO1lnKDg1MjgpO2JoKDg3MDQpO2JoKDg4ODApO2k9YTtyZXR1cm59ZnVuY3Rpb24gZmYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNzI4O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGdmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gaGYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wO2U9aTtvY1tjWyhjW2I+PjJdfDApKzI0Pj4yXSYxMjddKGIpfDA7ZD1ZayhjW2Q+PjJdfDAsMTM1MjgpfDA7Y1tiKzM2Pj4yXT1kO2FbYis0ND4+MF09KG9jW2NbKGNbZD4+Ml18MCkrMjg+PjJdJjEyN10oZCl8MCkmMTtpPWU7cmV0dXJufWZ1bmN0aW9uIGpmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtiPWk7aT1pKzE2fDA7Zz1iKzh8MDtkPWI7ZT1hKzM2fDA7Zj1hKzQwfDA7aD1nKzh8MDtqPWc7YT1hKzMyfDA7d2hpbGUoMSl7az1jW2U+PjJdfDA7az15Y1tjWyhjW2s+PjJdfDApKzIwPj4yXSY2M10oayxjW2Y+PjJdfDAsZyxoLGQpfDA7bD0oY1tkPj4yXXwwKS1qfDA7aWYoKFpiKGd8MCwxLGx8MCxjW2E+PjJdfDApfDApIT0obHwwKSl7ZT0tMTtkPTU7YnJlYWt9aWYoKGt8MCk9PTIpe2U9LTE7ZD01O2JyZWFrfWVsc2UgaWYoKGt8MCkhPTEpe2Q9NDticmVha319aWYoKGR8MCk9PTQpe2w9KChfYShjW2E+PjJdfDApfDApIT0wKTw8MzE+PjMxO2k9YjtyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTUpe2k9YjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIGtmKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MDtmPWk7aWYoKGFbYis0ND4+MF18MCkhPTApe2c9WmIoZHwwLDQsZXwwLGNbYiszMj4+Ml18MCl8MDtpPWY7cmV0dXJuIGd8MH1pZigoZXwwKT4wKXtnPTB9ZWxzZXtnPTA7aT1mO3JldHVybiBnfDB9d2hpbGUoMSl7aWYoKHhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGNbZD4+Ml18MCl8MCk9PS0xKXtlPTY7YnJlYWt9Zz1nKzF8MDtpZigoZ3wwKTwoZXwwKSl7ZD1kKzR8MH1lbHNle2U9NjticmVha319aWYoKGV8MCk9PTYpe2k9ZjtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIGxmKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtlPWk7aT1pKzMyfDA7az1lKzE2fDA7cD1lKzh8MDtqPWUrNHwwO2g9ZTtmPShkfDApPT0tMTthOmRve2lmKCFmKXtjW3A+PjJdPWQ7aWYoKGFbYis0ND4+MF18MCkhPTApe2lmKChaYihwfDAsNCwxLGNbYiszMj4+Ml18MCl8MCk9PTEpe2JyZWFrfWVsc2V7ZD0tMX1pPWU7cmV0dXJuIGR8MH1jW2o+PjJdPWs7bD1wKzR8MDtuPWIrMzZ8MDtvPWIrNDB8MDtnPWsrOHwwO209aztiPWIrMzJ8MDt3aGlsZSgxKXtxPWNbbj4+Ml18MDtxPXRjW2NbKGNbcT4+Ml18MCkrMTI+PjJdJjMxXShxLGNbbz4+Ml18MCxwLGwsaCxrLGcsail8MDtpZigoY1toPj4yXXwwKT09KHB8MCkpe2Q9LTE7Zz0xMjticmVha31pZigocXwwKT09Myl7Zz03O2JyZWFrfXI9KHF8MCk9PTE7aWYoIShxPj4+MDwyKSl7ZD0tMTtnPTEyO2JyZWFrfXE9KGNbaj4+Ml18MCktbXwwO2lmKChaYihrfDAsMSxxfDAsY1tiPj4yXXwwKXwwKSE9KHF8MCkpe2Q9LTE7Zz0xMjticmVha31pZihyKXtwPXI/Y1toPj4yXXwwOnB9ZWxzZXticmVhayBhfX1pZigoZ3wwKT09Nyl7aWYoKFpiKHB8MCwxLDEsY1tiPj4yXXwwKXwwKT09MSl7YnJlYWt9ZWxzZXtkPS0xfWk9ZTtyZXR1cm4gZHwwfWVsc2UgaWYoKGd8MCk9PTEyKXtpPWU7cmV0dXJuIGR8MH19fXdoaWxlKDApO3I9Zj8wOmQ7aT1lO3JldHVybiByfDB9ZnVuY3Rpb24gbWYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNzI4O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG5mKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gb2YoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2c9WWsoY1tkPj4yXXwwLDEzNTI4KXwwO2Y9YiszNnwwO2NbZj4+Ml09ZztkPWIrNDR8MDtjW2Q+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MDtmPWNbZj4+Ml18MDthW2IrNTM+PjBdPShvY1tjWyhjW2Y+PjJdfDApKzI4Pj4yXSYxMjddKGYpfDApJjE7aWYoKGNbZD4+Ml18MCk+OCl7b2soOTU0NCl9ZWxzZXtpPWU7cmV0dXJufX1mdW5jdGlvbiBwZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPXNmKGEsMCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBxZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPXNmKGEsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiByZihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtpPWkrMzJ8MDtqPWUrMTZ8MDtmPWUrOHwwO2w9ZSs0fDA7az1lO2c9Yis1MnwwO209KGFbZz4+MF18MCkhPTA7aWYoKGR8MCk9PS0xKXtpZihtKXttPS0xO2k9ZTtyZXR1cm4gbXwwfW09Y1tiKzQ4Pj4yXXwwO2FbZz4+MF09KG18MCkhPS0xJjE7aT1lO3JldHVybiBtfDB9aD1iKzQ4fDA7YTpkb3tpZihtKXtjW2w+PjJdPWNbaD4+Ml07bT1jW2IrMzY+PjJdfDA7az10Y1tjWyhjW20+PjJdfDApKzEyPj4yXSYzMV0obSxjW2IrNDA+PjJdfDAsbCxsKzR8MCxrLGosais4fDAsZil8MDtpZigoa3wwKT09Myl7YVtqPj4wXT1jW2g+PjJdO2NbZj4+Ml09aisxfWVsc2UgaWYoKGt8MCk9PTF8KGt8MCk9PTIpe209LTE7aT1lO3JldHVybiBtfDB9Yj1iKzMyfDA7d2hpbGUoMSl7az1jW2Y+PjJdfDA7aWYoIShrPj4+MD5qPj4+MCkpe2JyZWFrIGF9bT1rKyAtMXwwO2NbZj4+Ml09bTtpZigoVmEoYVttPj4wXXwwLGNbYj4+Ml18MCl8MCk9PS0xKXtmPS0xO2JyZWFrfX1pPWU7cmV0dXJuIGZ8MH19d2hpbGUoMCk7Y1toPj4yXT1kO2FbZz4+MF09MTttPWQ7aT1lO3JldHVybiBtfDB9ZnVuY3Rpb24gc2YoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7ZT1pO2k9aSszMnwwO2c9ZSsxNnwwO2o9ZSs4fDA7bT1lKzR8MDtsPWU7bj1iKzUyfDA7aWYoKGFbbj4+MF18MCkhPTApe2Y9Yis0OHwwO2c9Y1tmPj4yXXwwO2lmKCFkKXt2PWc7aT1lO3JldHVybiB2fDB9Y1tmPj4yXT0tMTthW24+PjBdPTA7dj1nO2k9ZTtyZXR1cm4gdnwwfXM9Y1tiKzQ0Pj4yXXwwO3M9KHN8MCk+MT9zOjE7YTpkb3tpZigoc3wwKT4wKXtwPWIrMzJ8MDtuPTA7d2hpbGUoMSl7bz1UYihjW3A+PjJdfDApfDA7aWYoKG98MCk9PS0xKXtoPS0xO2JyZWFrfWFbZytuPj4wXT1vO249bisxfDA7aWYoKG58MCk+PShzfDApKXticmVhayBhfX1pPWU7cmV0dXJuIGh8MH19d2hpbGUoMCk7Yjpkb3tpZigoYVtiKzUzPj4wXXwwKT09MCl7cD1iKzQwfDA7cT1iKzM2fDA7bj1qKzR8MDtvPWIrMzJ8MDt3aGlsZSgxKXt2PWNbcD4+Ml18MDt1PXY7dD1jW3U+PjJdfDA7dT1jW3UrND4+Ml18MDt3PWNbcT4+Ml18MDtyPWcrc3wwO3Y9dGNbY1soY1t3Pj4yXXwwKSsxNj4+Ml0mMzFdKHcsdixnLHIsbSxqLG4sbCl8MDtpZigodnwwKT09Myl7Zj0xNDticmVha31lbHNlIGlmKCh2fDApPT0yKXtoPS0xO2Y9MjI7YnJlYWt9ZWxzZSBpZigodnwwKSE9MSl7az1zO2JyZWFrIGJ9dz1jW3A+PjJdfDA7Y1t3Pj4yXT10O2Nbdys0Pj4yXT11O2lmKChzfDApPT04KXtoPS0xO2Y9MjI7YnJlYWt9dD1UYihjW28+PjJdfDApfDA7aWYoKHR8MCk9PS0xKXtoPS0xO2Y9MjI7YnJlYWt9YVtyPj4wXT10O3M9cysxfDB9aWYoKGZ8MCk9PTE0KXtjW2o+PjJdPWFbZz4+MF18MDtrPXM7YnJlYWt9ZWxzZSBpZigoZnwwKT09MjIpe2k9ZTtyZXR1cm4gaHwwfX1lbHNle2Nbaj4+Ml09YVtnPj4wXXwwO2s9c319d2hpbGUoMCk7aWYoZCl7dz1jW2o+PjJdfDA7Y1tiKzQ4Pj4yXT13O2k9ZTtyZXR1cm4gd3wwfWQ9YiszMnwwO3doaWxlKDEpe2lmKChrfDApPD0wKXticmVha31rPWsrIC0xfDA7aWYoKFZhKGFbZytrPj4wXXwwLGNbZD4+Ml18MCl8MCk9PS0xKXtoPS0xO2Y9MjI7YnJlYWt9fWlmKChmfDApPT0yMil7aT1lO3JldHVybiBofDB9dz1jW2o+PjJdfDA7aT1lO3JldHVybiB3fDB9ZnVuY3Rpb24gdGYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNjY0O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHVmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA2NjQ7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gdmYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wO2U9aTtvY1tjWyhjW2I+PjJdfDApKzI0Pj4yXSYxMjddKGIpfDA7ZD1ZayhjW2Q+PjJdfDAsMTM1MjApfDA7Y1tiKzM2Pj4yXT1kO2FbYis0ND4+MF09KG9jW2NbKGNbZD4+Ml18MCkrMjg+PjJdJjEyN10oZCl8MCkmMTtpPWU7cmV0dXJufWZ1bmN0aW9uIHdmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtiPWk7aT1pKzE2fDA7Zz1iKzh8MDtkPWI7ZT1hKzM2fDA7Zj1hKzQwfDA7aD1nKzh8MDtqPWc7YT1hKzMyfDA7d2hpbGUoMSl7az1jW2U+PjJdfDA7az15Y1tjWyhjW2s+PjJdfDApKzIwPj4yXSY2M10oayxjW2Y+PjJdfDAsZyxoLGQpfDA7bD0oY1tkPj4yXXwwKS1qfDA7aWYoKFpiKGd8MCwxLGx8MCxjW2E+PjJdfDApfDApIT0obHwwKSl7ZT0tMTtkPTU7YnJlYWt9aWYoKGt8MCk9PTIpe2U9LTE7ZD01O2JyZWFrfWVsc2UgaWYoKGt8MCkhPTEpe2Q9NDticmVha319aWYoKGR8MCk9PTQpe2w9KChfYShjW2E+PjJdfDApfDApIT0wKTw8MzE+PjMxO2k9YjtyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTUpe2k9YjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIHhmKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MDtnPWk7aWYoKGFbYis0ND4+MF18MCkhPTApe2g9WmIoZXwwLDEsZnwwLGNbYiszMj4+Ml18MCl8MDtpPWc7cmV0dXJuIGh8MH1pZigoZnwwKT4wKXtoPTB9ZWxzZXtoPTA7aT1nO3JldHVybiBofDB9d2hpbGUoMSl7aWYoKHhjW2NbKGNbYj4+Ml18MCkrNTI+PjJdJjYzXShiLGRbZT4+MF18MCl8MCk9PS0xKXtmPTY7YnJlYWt9aD1oKzF8MDtpZigoaHwwKTwoZnwwKSl7ZT1lKzF8MH1lbHNle2Y9NjticmVha319aWYoKGZ8MCk9PTYpe2k9ZztyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIHlmKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtlPWk7aT1pKzMyfDA7az1lKzE2fDA7cD1lKzh8MDtqPWUrNHwwO2g9ZTtmPShkfDApPT0tMTthOmRve2lmKCFmKXthW3A+PjBdPWQ7aWYoKGFbYis0ND4+MF18MCkhPTApe2lmKChaYihwfDAsMSwxLGNbYiszMj4+Ml18MCl8MCk9PTEpe2JyZWFrfWVsc2V7ZD0tMX1pPWU7cmV0dXJuIGR8MH1jW2o+PjJdPWs7bD1wKzF8MDtuPWIrMzZ8MDtvPWIrNDB8MDtnPWsrOHwwO209aztiPWIrMzJ8MDt3aGlsZSgxKXtxPWNbbj4+Ml18MDtxPXRjW2NbKGNbcT4+Ml18MCkrMTI+PjJdJjMxXShxLGNbbz4+Ml18MCxwLGwsaCxrLGcsail8MDtpZigoY1toPj4yXXwwKT09KHB8MCkpe2Q9LTE7Zz0xMjticmVha31pZigocXwwKT09Myl7Zz03O2JyZWFrfXI9KHF8MCk9PTE7aWYoIShxPj4+MDwyKSl7ZD0tMTtnPTEyO2JyZWFrfXE9KGNbaj4+Ml18MCktbXwwO2lmKChaYihrfDAsMSxxfDAsY1tiPj4yXXwwKXwwKSE9KHF8MCkpe2Q9LTE7Zz0xMjticmVha31pZihyKXtwPXI/Y1toPj4yXXwwOnB9ZWxzZXticmVhayBhfX1pZigoZ3wwKT09Nyl7aWYoKFpiKHB8MCwxLDEsY1tiPj4yXXwwKXwwKT09MSl7YnJlYWt9ZWxzZXtkPS0xfWk9ZTtyZXR1cm4gZHwwfWVsc2UgaWYoKGd8MCk9PTEyKXtpPWU7cmV0dXJuIGR8MH19fXdoaWxlKDApO3I9Zj8wOmQ7aT1lO3JldHVybiByfDB9ZnVuY3Rpb24gemYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtjW2E+PjJdPTEwNjY0O2E9Y1thKzQ+PjJdfDA7ZT1hKzR8MDtkPWNbZT4+Ml18MDtjW2U+PjJdPWQrIC0xO2lmKChkfDApIT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrOD4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEFmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09MTA2NjQ7ZD1jW2ErND4+Ml18MDtmPWQrNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGV8MCkhPTApe3ZuKGEpO2k9YjtyZXR1cm59bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpO3ZuKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gQmYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2c9WWsoY1tkPj4yXXwwLDEzNTIwKXwwO2Y9YiszNnwwO2NbZj4+Ml09ZztkPWIrNDR8MDtjW2Q+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MDtmPWNbZj4+Ml18MDthW2IrNTM+PjBdPShvY1tjWyhjW2Y+PjJdfDApKzI4Pj4yXSYxMjddKGYpfDApJjE7aWYoKGNbZD4+Ml18MCk+OCl7b2soOTU0NCl9ZWxzZXtpPWU7cmV0dXJufX1mdW5jdGlvbiBDZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPUZmKGEsMCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBEZihhKXthPWF8MDt2YXIgYj0wO2I9aTthPUZmKGEsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBFZihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2U9aTtpPWkrMzJ8MDtqPWUrMTZ8MDtmPWUrNHwwO2w9ZSs4fDA7az1lO2c9Yis1MnwwO209KGFbZz4+MF18MCkhPTA7aWYoKGR8MCk9PS0xKXtpZihtKXttPS0xO2k9ZTtyZXR1cm4gbXwwfW09Y1tiKzQ4Pj4yXXwwO2FbZz4+MF09KG18MCkhPS0xJjE7aT1lO3JldHVybiBtfDB9aD1iKzQ4fDA7YTpkb3tpZihtKXthW2w+PjBdPWNbaD4+Ml07bT1jW2IrMzY+PjJdfDA7az10Y1tjWyhjW20+PjJdfDApKzEyPj4yXSYzMV0obSxjW2IrNDA+PjJdfDAsbCxsKzF8MCxrLGosais4fDAsZil8MDtpZigoa3wwKT09MXwoa3wwKT09Mil7bT0tMTtpPWU7cmV0dXJuIG18MH1lbHNlIGlmKChrfDApPT0zKXthW2o+PjBdPWNbaD4+Ml07Y1tmPj4yXT1qKzF9Yj1iKzMyfDA7d2hpbGUoMSl7az1jW2Y+PjJdfDA7aWYoIShrPj4+MD5qPj4+MCkpe2JyZWFrIGF9bT1rKyAtMXwwO2NbZj4+Ml09bTtpZigoVmEoYVttPj4wXXwwLGNbYj4+Ml18MCl8MCk9PS0xKXtmPS0xO2JyZWFrfX1pPWU7cmV0dXJuIGZ8MH19d2hpbGUoMCk7Y1toPj4yXT1kO2FbZz4+MF09MTttPWQ7aT1lO3JldHVybiBtfDB9ZnVuY3Rpb24gRmYoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7Zj1pO2k9aSszMnwwO2g9ZisxNnwwO2o9Zis4fDA7bj1mKzR8MDttPWY7bz1iKzUyfDA7aWYoKGFbbz4+MF18MCkhPTApe2c9Yis0OHwwO2g9Y1tnPj4yXXwwO2lmKCFlKXt3PWg7aT1mO3JldHVybiB3fDB9Y1tnPj4yXT0tMTthW28+PjBdPTA7dz1oO2k9ZjtyZXR1cm4gd3wwfXA9Y1tiKzQ0Pj4yXXwwO3A9KHB8MCk+MT9wOjE7YTpkb3tpZigocHwwKT4wKXtyPWIrMzJ8MDtvPTA7d2hpbGUoMSl7cT1UYihjW3I+PjJdfDApfDA7aWYoKHF8MCk9PS0xKXtrPS0xO2JyZWFrfWFbaCtvPj4wXT1xO289bysxfDA7aWYoKG98MCk+PShwfDApKXticmVhayBhfX1pPWY7cmV0dXJuIGt8MH19d2hpbGUoMCk7Yjpkb3tpZigoYVtiKzUzPj4wXXwwKT09MCl7cj1iKzQwfDA7cz1iKzM2fDA7bz1qKzF8MDtxPWIrMzJ8MDt3aGlsZSgxKXt3PWNbcj4+Ml18MDt2PXc7dT1jW3Y+PjJdfDA7dj1jW3YrND4+Ml18MDt4PWNbcz4+Ml18MDt0PWgrcHwwO3c9dGNbY1soY1t4Pj4yXXwwKSsxNj4+Ml0mMzFdKHgsdyxoLHQsbixqLG8sbSl8MDtpZigod3wwKT09Mil7az0tMTttPTIzO2JyZWFrfWVsc2UgaWYoKHd8MCk9PTMpe209MTQ7YnJlYWt9ZWxzZSBpZigod3wwKSE9MSl7bD1wO2JyZWFrIGJ9eD1jW3I+PjJdfDA7Y1t4Pj4yXT11O2NbeCs0Pj4yXT12O2lmKChwfDApPT04KXtrPS0xO209MjM7YnJlYWt9dT1UYihjW3E+PjJdfDApfDA7aWYoKHV8MCk9PS0xKXtrPS0xO209MjM7YnJlYWt9YVt0Pj4wXT11O3A9cCsxfDB9aWYoKG18MCk9PTE0KXthW2o+PjBdPWFbaD4+MF18MDtsPXA7YnJlYWt9ZWxzZSBpZigobXwwKT09MjMpe2k9ZjtyZXR1cm4ga3wwfX1lbHNle2Fbaj4+MF09YVtoPj4wXXwwO2w9cH19d2hpbGUoMCk7ZG97aWYoIWUpe2U9YiszMnwwO3doaWxlKDEpe2lmKChsfDApPD0wKXttPTIxO2JyZWFrfWw9bCsgLTF8MDtpZigoVmEoZFtoK2w+PjBdfDAsY1tlPj4yXXwwKXwwKT09LTEpe2s9LTE7bT0yMzticmVha319aWYoKG18MCk9PTIxKXtnPWFbaj4+MF18MDticmVha31lbHNlIGlmKChtfDApPT0yMyl7aT1mO3JldHVybiBrfDB9fWVsc2V7Zz1hW2o+PjBdfDA7Y1tiKzQ4Pj4yXT1nJjI1NX19d2hpbGUoMCk7eD1nJjI1NTtpPWY7cmV0dXJuIHh8MH1mdW5jdGlvbiBHZigpe3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2I9aTtpPWkrMTZ8MDtkPWI7Zj1jW3I+PjJdfDA7Y1syMjQ0XT0xMDY2NDtYayg4OTgwfDApO2NbODk4ND4+Ml09MDtjWzg5ODg+PjJdPTA7Y1s4OTkyPj4yXT0wO2NbODk5Nj4+Ml09MDtjWzllMz4+Ml09MDtjWzkwMDQ+PjJdPTA7Y1syMjQ0XT05NzA0O2NbOTAwOD4+Ml09ZjtjWzkwMTY+PjJdPTkwMzI7Y1s5MDI0Pj4yXT0tMTthWzkwMjg+PjBdPTA7bj1jWzg5ODA+PjJdfDA7bT1uKzR8MDtjW20+PjJdPShjW20+PjJdfDApKzE7aWYoISgoY1szMzgwXXwwKT09LTEpKXtjW2Q+PjJdPTEzNTIwO2NbZCs0Pj4yXT0yMDg7Y1tkKzg+PjJdPTA7Y2coMTM1MjAsZCl9bD0oY1sxMzUyND4+Ml18MCkrIC0xfDA7az1jW24rOD4+Ml18MDtpZigoY1tuKzEyPj4yXXwwKS1rPj4yPj4+MD5sPj4+MD8oaj1jW2srKGw8PDIpPj4yXXwwLChqfDApIT0wKTowKXtjWzkwMTI+PjJdPWo7Y1s5MDIwPj4yXT1vY1tjWyhjW2o+PjJdfDApKzI0Pj4yXSYxMjddKGopfDA7bD1jWzkwMTI+PjJdfDA7YVs5MDI5Pj4wXT0ob2NbY1soY1tsPj4yXXwwKSsyOD4+Ml0mMTI3XShsKXwwKSYxO2lmKChjWzkwMjA+PjJdfDApPjgpe29rKDk1NDQpfWw9Y1ttPj4yXXwwO2NbbT4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKX1jWzIwNjZdPTEwNzk2O2NbODI3Mj4+Ml09MTA4MTY7Y1s4MjY4Pj4yXT0wO2NbODI5Nj4+Ml09ODk3NjtjWzgyODg+PjJdPTA7Y1s4MjkyPj4yXT0wO2NbODI3Nj4+Ml09NDA5ODtjWzgyODQ+PjJdPTA7Y1s4MjgwPj4yXT02O2s9ODMwNHwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4MzAwfDApO2NbODM0ND4+Ml09MDtjWzgzNDg+PjJdPS0xO2o9Y1tzPj4yXXwwO2NbMjI3MF09MTA2NjQ7WGsoOTA4NHwwKTtjWzkwODg+PjJdPTA7Y1s5MDkyPj4yXT0wO2NbOTA5Nj4+Ml09MDtjWzkxMDA+PjJdPTA7Y1s5MTA0Pj4yXT0wO2NbOTEwOD4+Ml09MDtjWzIyNzBdPTk1OTI7Y1s5MTEyPj4yXT1qO2s9Y1s5MDg0Pj4yXXwwO2w9ays0fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO2lmKCEoKGNbMzM4MF18MCk9PS0xKSl7Y1tkPj4yXT0xMzUyMDtjW2QrND4+Ml09MjA4O2NbZCs4Pj4yXT0wO2NnKDEzNTIwLGQpfW09KGNbMTM1MjQ+PjJdfDApKyAtMXwwO249Y1trKzg+PjJdfDA7aWYoKGNbaysxMj4+Ml18MCktbj4+Mj4+PjA+bT4+PjA/KGg9Y1tuKyhtPDwyKT4+Ml18MCwoaHwwKSE9MCk6MCl7bj1jW2w+PjJdfDA7Y1tsPj4yXT1uKyAtMTtpZigobnwwKT09MCl7bGNbY1soY1trPj4yXXwwKSs4Pj4yXSYyNTVdKGspfWNbOTExNj4+Ml09aDtjWzkxMjA+PjJdPTkwNDA7YVs5MTI0Pj4wXT0ob2NbY1soY1toPj4yXXwwKSsyOD4+Ml0mMTI3XShoKXwwKSYxO2NbMjA4OF09MTA4NzY7Y1s4MzU2Pj4yXT0xMDg5NjtjWzgzODA+PjJdPTkwODA7Y1s4MzcyPj4yXT0wO2NbODM3Nj4+Ml09MDtjWzgzNjA+PjJdPTQwOTg7Y1s4MzY4Pj4yXT0wO2NbODM2ND4+Ml09NjtrPTgzODh8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODM4NHwwKTtjWzg0Mjg+PjJdPTA7Y1s4NDMyPj4yXT0tMTtoPWNbcT4+Ml18MDtjWzIyODJdPTEwNjY0O1hrKDkxMzJ8MCk7Y1s5MTM2Pj4yXT0wO2NbOTE0MD4+Ml09MDtjWzkxNDQ+PjJdPTA7Y1s5MTQ4Pj4yXT0wO2NbOTE1Mj4+Ml09MDtjWzkxNTY+PjJdPTA7Y1syMjgyXT05NTkyO2NbOTE2MD4+Ml09aDttPWNbOTEzMj4+Ml18MDtuPW0rNHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtpZighKChjWzMzODBdfDApPT0tMSkpe2NbZD4+Ml09MTM1MjA7Y1tkKzQ+PjJdPTIwODtjW2QrOD4+Ml09MDtjZygxMzUyMCxkKX1sPShjWzEzNTI0Pj4yXXwwKSsgLTF8MDtrPWNbbSs4Pj4yXXwwO2lmKChjW20rMTI+PjJdfDApLWs+PjI+Pj4wPmw+Pj4wPyhnPWNbaysobDw8Mik+PjJdfDAsKGd8MCkhPTApOjApe2w9Y1tuPj4yXXwwO2Nbbj4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbbT4+Ml18MCkrOD4+Ml0mMjU1XShtKX1jWzkxNjQ+PjJdPWc7Y1s5MTY4Pj4yXT05MDQ4O2FbOTE3Mj4+MF09KG9jW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjEyN10oZyl8MCkmMTtjWzIxMTBdPTEwODc2O2NbODQ0ND4+Ml09MTA4OTY7Y1s4NDY4Pj4yXT05MTI4O2NbODQ2MD4+Ml09MDtjWzg0NjQ+PjJdPTA7Y1s4NDQ4Pj4yXT00MDk4O2NbODQ1Nj4+Ml09MDtjWzg0NTI+PjJdPTY7az04NDc2fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg0NzJ8MCk7Y1s4NTE2Pj4yXT0wO2NbODUyMD4+Ml09LTE7az1jWyhjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg0NjQ+PjJdfDA7Y1syMTMyXT0xMDg3NjtjWzg1MzI+PjJdPTEwODk2O2NbODU1Nj4+Ml09aztjWzg1NDg+PjJdPShrfDApPT0wJjE7Y1s4NTUyPj4yXT0wO2NbODUzNj4+Ml09NDA5ODtjWzg1NDQ+PjJdPTA7Y1s4NTQwPj4yXT02O2s9ODU2NHwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4NTYwfDApO2NbODYwND4+Ml09MDtjWzg2MDg+PjJdPS0xO2NbKGNbKGNbMjA2Nl18MCkrIC0xMj4+Ml18MCkrODMzNj4+Ml09ODM1MjtnPShjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg0NDR8MDtjW2c+PjJdPWNbZz4+Ml18ODE5MjtjWyhjWyhjWzIxMTBdfDApKyAtMTI+PjJdfDApKzg1MTI+PjJdPTgzNTI7Y1syMjk0XT0xMDcyODtYayg5MTgwfDApO2NbOTE4ND4+Ml09MDtjWzkxODg+PjJdPTA7Y1s5MTkyPj4yXT0wO2NbOTE5Nj4+Ml09MDtjWzkyMDA+PjJdPTA7Y1s5MjA0Pj4yXT0wO2NbMjI5NF09OTQ0ODtjWzkyMDg+PjJdPWY7Y1s5MjE2Pj4yXT05MDU2O2NbOTIyND4+Ml09LTE7YVs5MjI4Pj4wXT0wO2Y9Y1s5MTgwPj4yXXwwO2c9Zis0fDA7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxO2lmKCEoKGNbMzM4Ml18MCk9PS0xKSl7Y1tkPj4yXT0xMzUyODtjW2QrND4+Ml09MjA4O2NbZCs4Pj4yXT0wO2NnKDEzNTI4LGQpfWs9KGNbMTM1MzI+PjJdfDApKyAtMXwwO2w9Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbD4+Mj4+PjA+az4+PjA/KGU9Y1tsKyhrPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7Y1s5MjEyPj4yXT1lO2NbOTIyMD4+Ml09b2NbY1soY1tlPj4yXXwwKSsyND4+Ml0mMTI3XShlKXwwO249Y1s5MjEyPj4yXXwwO2FbOTIyOT4+MF09KG9jW2NbKGNbbj4+Ml18MCkrMjg+PjJdJjEyN10obil8MCkmMTtpZigoY1s5MjIwPj4yXXwwKT44KXtvayg5NTQ0KX1uPWNbZz4+Ml18MDtjW2c+PjJdPW4rIC0xO2lmKChufDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9Y1syMTU0XT0xMDgzNjtjWzg2MjQ+PjJdPTEwODU2O2NbODYyMD4+Ml09MDtjWzg2NDg+PjJdPTkxNzY7Y1s4NjQwPj4yXT0wO2NbODY0ND4+Ml09MDtjWzg2Mjg+PjJdPTQwOTg7Y1s4NjM2Pj4yXT0wO2NbODYzMj4+Ml09NjtrPTg2NTZ8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODY1MnwwKTtjWzg2OTY+PjJdPTA7Y1s4NzAwPj4yXT0tMTtjWzIzMDhdPTEwNzI4O1hrKDkyMzZ8MCk7Y1s5MjQwPj4yXT0wO2NbOTI0ND4+Ml09MDtjWzkyNDg+PjJdPTA7Y1s5MjUyPj4yXT0wO2NbOTI1Nj4+Ml09MDtjWzkyNjA+PjJdPTA7Y1syMzA4XT05MzM2O2NbOTI2ND4+Ml09ajtlPWNbOTIzNj4+Ml18MDtmPWUrNHwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMTtpZighKChjWzMzODJdfDApPT0tMSkpe2NbZD4+Ml09MTM1Mjg7Y1tkKzQ+PjJdPTIwODtjW2QrOD4+Ml09MDtjZygxMzUyOCxkKX1nPShjWzEzNTMyPj4yXXwwKSsgLTF8MDtqPWNbZSs4Pj4yXXwwO2Rve2lmKChjW2UrMTI+PjJdfDApLWo+PjI+Pj4wPmc+Pj4wKXtnPWNbaisoZzw8Mik+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfW49Y1tmPj4yXXwwO2NbZj4+Ml09bisgLTE7aWYoKG58MCk9PTApe2xjW2NbKGNbZT4+Ml18MCkrOD4+Ml0mMjU1XShlKX1jWzkyNjg+PjJdPWc7Y1s5MjcyPj4yXT05MDY0O2FbOTI3Nj4+MF09KG9jW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjEyN10oZyl8MCkmMTtjWzIxNzZdPTEwOTE2O2NbODcwOD4+Ml09MTA5MzY7Y1s4NzMyPj4yXT05MjMyO2NbODcyND4+Ml09MDtjWzg3Mjg+PjJdPTA7Y1s4NzEyPj4yXT00MDk4O2NbODcyMD4+Ml09MDtjWzg3MTY+PjJdPTY7az04NzQwfDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg3MzZ8MCk7Y1s4NzgwPj4yXT0wO2NbODc4ND4+Ml09LTE7Y1syMzIwXT0xMDcyODtYayg5Mjg0fDApO2NbOTI4OD4+Ml09MDtjWzkyOTI+PjJdPTA7Y1s5Mjk2Pj4yXT0wO2NbOTMwMD4+Ml09MDtjWzkzMDQ+PjJdPTA7Y1s5MzA4Pj4yXT0wO2NbMjMyMF09OTMzNjtjWzkzMTI+PjJdPWg7Zj1jWzkyODQ+PjJdfDA7ZT1mKzR8MDtjW2U+PjJdPShjW2U+PjJdfDApKzE7aWYoISgoY1szMzgyXXwwKT09LTEpKXtjW2Q+PjJdPTEzNTI4O2NbZCs0Pj4yXT0yMDg7Y1tkKzg+PjJdPTA7Y2coMTM1MjgsZCl9ZD0oY1sxMzUzMj4+Ml18MCkrIC0xfDA7Zz1jW2YrOD4+Ml18MDtkb3tpZigoY1tmKzEyPj4yXXwwKS1nPj4yPj4+MD5kPj4+MCl7ZD1jW2crKGQ8PDIpPj4yXXwwO2lmKChkfDApPT0wKXticmVha31uPWNbZT4+Ml18MDtjW2U+PjJdPW4rIC0xO2lmKChufDApIT0wKXtjWzkzMTY+PjJdPWQ7Y1s5MzIwPj4yXT05MDcyO2s9Y1tkPj4yXXwwO2s9aysyOHwwO2s9Y1trPj4yXXwwO2s9b2NbayYxMjddKGQpfDA7az1rJjE7YVs5MzI0Pj4wXT1rO2NbMjE5OF09MTA5MTY7Y1s4Nzk2Pj4yXT0xMDkzNjtjWzg4MjA+PjJdPTkyODA7Y1s4ODEyPj4yXT0wO2NbODgxNj4+Ml09MDtjWzg4MDA+PjJdPTQwOTg7Y1s4ODA4Pj4yXT0wO2NbODgwND4+Ml09NjtrPTg4Mjh8MDtsPWsrNDB8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7WGsoODgyNHwwKTtjWzg4Njg+PjJdPTA7Y1s4ODcyPj4yXT0tMTtrPWNbMjE5OF18MDtrPWsrIC0xMnwwO2s9Y1trPj4yXXwwO2s9aysyNHwwO2s9ODc5MitrfDA7az1jW2s+PjJdfDA7Y1syMjIwXT0xMDkxNjtjWzg4ODQ+PjJdPTEwOTM2O2NbODkwOD4+Ml09aztrPShrfDApPT0wO2s9ayYxO2NbODkwMD4+Ml09aztjWzg5MDQ+PjJdPTA7Y1s4ODg4Pj4yXT00MDk4O2NbODg5Nj4+Ml09MDtjWzg4OTI+PjJdPTY7az04OTE2fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg5MTJ8MCk7Y1s4OTU2Pj4yXT0wO2NbODk2MD4+Ml09LTE7bj1jWzIxNTRdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNzJ8MDtuPTg2MTYrbnwwO2Nbbj4+Ml09ODcwNDtuPWNbMjE5OF18MDtuPW4rIC0xMnwwO249Y1tuPj4yXXwwO249bis0fDA7bj04NzkyK258MDttPWNbbj4+Ml18MDttPW18ODE5MjtjW24+PjJdPW07bj1jWzIxOThdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNzJ8MDtuPTg3OTIrbnwwO2Nbbj4+Ml09ODcwNDtjYygyMTIsODk2OCxwfDApfDA7aT1iO3JldHVybn1sY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZik7Y1s5MzE2Pj4yXT1kO2NbOTMyMD4+Ml09OTA3MjtrPWNbZD4+Ml18MDtrPWsrMjh8MDtrPWNbaz4+Ml18MDtrPW9jW2smMTI3XShkKXwwO2s9ayYxO2FbOTMyND4+MF09aztjWzIxOThdPTEwOTE2O2NbODc5Nj4+Ml09MTA5MzY7Y1s4ODIwPj4yXT05MjgwO2NbODgxMj4+Ml09MDtjWzg4MTY+PjJdPTA7Y1s4ODAwPj4yXT00MDk4O2NbODgwOD4+Ml09MDtjWzg4MDQ+PjJdPTY7az04ODI4fDA7bD1rKzQwfDA7ZG97Y1trPj4yXT0wO2s9ays0fDB9d2hpbGUoKGt8MCk8KGx8MCkpO1hrKDg4MjR8MCk7Y1s4ODY4Pj4yXT0wO2NbODg3Mj4+Ml09LTE7az1jWzIxOThdfDA7az1rKyAtMTJ8MDtrPWNbaz4+Ml18MDtrPWsrMjR8MDtrPTg3OTIra3wwO2s9Y1trPj4yXXwwO2NbMjIyMF09MTA5MTY7Y1s4ODg0Pj4yXT0xMDkzNjtjWzg5MDg+PjJdPWs7az0oa3wwKT09MDtrPWsmMTtjWzg5MDA+PjJdPWs7Y1s4OTA0Pj4yXT0wO2NbODg4OD4+Ml09NDA5ODtjWzg4OTY+PjJdPTA7Y1s4ODkyPj4yXT02O2s9ODkxNnwwO2w9ays0MHwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChsfDApKTtYayg4OTEyfDApO2NbODk1Nj4+Ml09MDtjWzg5NjA+PjJdPS0xO249Y1syMTU0XXwwO249bisgLTEyfDA7bj1jW24+PjJdfDA7bj1uKzcyfDA7bj04NjE2K258MDtjW24+PjJdPTg3MDQ7bj1jWzIxOThdfDA7bj1uKyAtMTJ8MDtuPWNbbj4+Ml18MDtuPW4rNHwwO249ODc5MitufDA7bT1jW24+PjJdfDA7bT1tfDgxOTI7Y1tuPj4yXT1tO249Y1syMTk4XXwwO249bisgLTEyfDA7bj1jW24+PjJdfDA7bj1uKzcyfDA7bj04NzkyK258MDtjW24+PjJdPTg3MDQ7Y2MoMjEyLDg5NjgscHwwKXwwO2k9YjtyZXR1cm59fXdoaWxlKDApO249WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtuPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1uPVhhKDQpfDA7Y1tuPj4yXT0yMTMwNDt3YihufDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBIZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5MDQ7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCk7UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWVsc2V7UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufX1mdW5jdGlvbiBJZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5MDQ7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gSmYoYSl7YT1hfDA7cmV0dXJuIGNbYSs0Pj4yXXwwfWZ1bmN0aW9uIEtmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk8MCl7dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59ZWxzZXtSYihhfDApO3ZuKGEpO2k9YjtyZXR1cm59fWZ1bmN0aW9uIExmKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBNZihhKXthPWF8MDtyZXR1cm4gY1thKzQ+PjJdfDB9ZnVuY3Rpb24gTmYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTA0O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1lbHNle1JiKGF8MCk7dm4oYSk7aT1iO3JldHVybn19ZnVuY3Rpb24gT2YoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO2NbYT4+Ml09ZDtjW2ErND4+Ml09YjtyZXR1cm59ZnVuY3Rpb24gUGYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWU7cWNbY1soY1thPj4yXXwwKSsxMj4+Ml0mMzFdKGYsYSxiKTtpZigoY1tmKzQ+PjJdfDApIT0oY1tkKzQ+PjJdfDApKXthPTA7aT1lO3JldHVybiBhfDB9YT0oY1tmPj4yXXwwKT09KGNbZD4+Ml18MCk7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gUWYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT1pO2lmKChjW2IrND4+Ml18MCkhPShhfDApKXthPTA7aT1lO3JldHVybiBhfDB9YT0oY1tiPj4yXXwwKT09KGR8MCk7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gUmYoYSl7YT1hfDA7cmV0dXJuIDEwMDgwfWZ1bmN0aW9uIFNmKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2Q9aTtlPU5iKGV8MCl8MDtmPUpuKGV8MCl8MDtpZihmPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWlmKGY+Pj4wPDExKXthW2I+PjBdPWY8PDE7aj1iKzF8MDtMbihqfDAsZXwwLGZ8MCl8MDtqPWorZnwwO2Fbaj4+MF09MDtpPWQ7cmV0dXJufWc9ZisxNiYtMTY7aD0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aj11bihoKXwwO2lmKChqfDApIT0wKXtoPTExO2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXtoPTk7YnJlYWt9c2NbaiYzMV0oKX1pZigoaHwwKT09OSl7aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9ZWxzZSBpZigoaHwwKT09MTEpe2NbYis4Pj4yXT1qO2NbYj4+Ml09Z3wxO2NbYis0Pj4yXT1mO0xuKGp8MCxlfDAsZnwwKXwwO2o9aitmfDA7YVtqPj4wXT0wO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIFRmKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBVZihhKXthPWF8MDtyZXR1cm4gMTAxMDR9ZnVuY3Rpb24gVmYoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7ZD1pO2U9TmIoZXwwKXwwO2Y9Sm4oZXwwKXwwO2lmKGY+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9aWYoZj4+PjA8MTEpe2FbYj4+MF09Zjw8MTtqPWIrMXwwO0xuKGp8MCxlfDAsZnwwKXwwO2o9aitmfDA7YVtqPj4wXT0wO2k9ZDtyZXR1cm59Zz1mKzE2Ji0xNjtoPShnfDApPT0wPzE6Zzt3aGlsZSgxKXtqPXVuKGgpfDA7aWYoKGp8MCkhPTApe2g9MTE7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2g9OTticmVha31zY1tqJjMxXSgpfWlmKChofDApPT05KXtqPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX1lbHNlIGlmKChofDApPT0xMSl7Y1tiKzg+PjJdPWo7Y1tiPj4yXT1nfDE7Y1tiKzQ+PjJdPWY7TG4oanwwLGV8MCxmfDApfDA7aj1qK2Z8MDthW2o+PjBdPTA7aT1kO3JldHVybn19ZnVuY3Rpb24gV2YoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Q9aTtpZigoYVsxMDA5Nl18MCk9PTA/KFFhKDEwMDk2KXwwKSE9MDowKXtjWzI1MjJdPTEwMjg4OyRhKDEwMDk2KX1jW2I+PjJdPWU7Y1tiKzQ+PjJdPTEwMDg4O2k9ZDtyZXR1cm59ZnVuY3Rpb24gWGYoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFlmKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO2c9aTtpPWkrNDh8MDtvPWcrMjR8MDtsPWcrMTJ8MDtoPWc7cD1KbihmfDApfDA7aWYocD4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1kb3tpZihwPj4+MDwxMSl7YVtoPj4wXT1wPDwxO209aDtxPWgrMXwwfWVsc2V7bT1wKzE2Ji0xNjtyPShtfDApPT0wPzE6bTt3aGlsZSgxKXtxPXVuKHIpfDA7aWYoKHF8MCkhPTApe2o9MTE7YnJlYWt9cT1jWzU2NjZdfDA7Y1s1NjY2XT1xKzA7aWYoKHF8MCk9PTApe2JyZWFrfXNjW3EmMzFdKCl9aWYoKGp8MCk9PTExKXtjW2grOD4+Ml09cTtjW2g+PjJdPW18MTtjW2grND4+Ml09cDttPWg7YnJlYWt9cj1YYSg0KXwwO2Nbcj4+Ml09MjI2ODA7d2IocnwwLDIyNzI4LDIwNil9fXdoaWxlKDApO0xuKHF8MCxmfDAscHwwKXwwO2FbcStwPj4wXT0wO2lmKChkfDApIT0wKXtwPWFbbT4+MF18MDtpZigocCYxKT09MCl7cD0ocCYyNTUpPj4+MX1lbHNle3A9Y1toKzQ+PjJdfDB9aWYoKHB8MCkhPTApe2pnKGgsMTAxMjgsMil9cWNbY1soY1tlPj4yXXwwKSsyND4+Ml0mMzFdKG8sZSxkKTtmPWFbbz4+MF18MDtpZigoZiYxKT09MCl7cD1vKzF8MDtmPShmJjI1NSk+Pj4xfWVsc2V7cD1jW28rOD4+Ml18MDtmPWNbbys0Pj4yXXwwfWpnKGgscCxmKTtpZighKChhW28+PjBdJjEpPT0wKT8obj1jW28rOD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9fWNbbCswPj4yXT1jW20rMD4+Ml07Y1tsKzQ+PjJdPWNbbSs0Pj4yXTtjW2wrOD4+Ml09Y1ttKzg+PjJdO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2NbYj4+Ml09OTkyODtuPWIrNHwwO2lmKChhW2w+PjBdJjEpPT0wKXtmPWwrMXwwfWVsc2V7Zj1jW2wrOD4+Ml18MH1wPUpuKGZ8MCl8MDtvPXArMTN8MDtvPShvfDApPT0wPzE6bzt3aGlsZSgxKXtxPXVuKG8pfDA7aWYoKHF8MCkhPTApe2JyZWFrfXE9Y1s1NjY2XXwwO2NbNTY2Nl09cSswO2lmKChxfDApPT0wKXtqPTMzO2JyZWFrfXNjW3EmMzFdKCl9aWYoKGp8MCk9PTMzKXtyPVhhKDQpfDA7Y1tyPj4yXT0yMjY4MDt3YihyfDAsMjI3MjgsMjA2KX1jW3ErND4+Ml09cDtjW3E+PjJdPXA7cj1xKzEyfDA7Y1tuPj4yXT1yO2NbcSs4Pj4yXT0wO0xuKHJ8MCxmfDAscCsxfDApfDA7aWYoISgoYVtsPj4wXSYxKT09MCk/KGs9Y1tsKzg+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKChhW20+PjBdJjEpPT0wKXtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn1oPWNbaCs4Pj4yXXwwO2lmKChofDApPT0wKXtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn12bihoKTtjW2I+PjJdPTEwMTQ0O3I9Yis4fDA7cT1lO2Y9cjtjW2Y+PjJdPWQ7cj1yKzR8MDtjW3I+PjJdPXE7aT1nO3JldHVybn1mdW5jdGlvbiBaZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPDApe3ZuKChjW2Q+PjJdfDApKyAtMTJ8MCl9UmIoYXwwKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIF9mKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2NbYT4+Ml09OTkyODtkPWErNHwwO2Y9KGNbZD4+Ml18MCkrIC00fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZSsgLTF8MCk+PTApe1JiKGF8MCk7aT1iO3JldHVybn12bigoY1tkPj4yXXwwKSsgLTEyfDApO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiAkZihhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBhZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn0KCgoKZnVuY3Rpb24gYmcoYSl7YT1hfDA7dmFyIGI9MDtiPWk7QmIoYXwwKXwwO2k9YjtyZXR1cm59ZnVuY3Rpb24gY2coYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pOyRiKDEwNTY4KXwwO2lmKChjW2E+PjJdfDApPT0xKXtkb3tHYSgxMDU5MiwxMDU2OCl8MH13aGlsZSgoY1thPj4yXXwwKT09MSl9aWYoKGNbYT4+Ml18MCkhPTApe0NiKDEwNTY4KXwwO2k9ZTtyZXR1cm59Y1thPj4yXT0xO0NiKDEwNTY4KXwwO2c9Yis0fDA7Zj1kW2c+PjBdfGRbZysxPj4wXTw8OHxkW2crMj4+MF08PDE2fGRbZyszPj4wXTw8MjQ7Zz1nKzR8MDtnPWRbZz4+MF18ZFtnKzE+PjBdPDw4fGRbZysyPj4wXTw8MTZ8ZFtnKzM+PjBdPDwyNDtiPShjW2I+PjJdfDApKyhnPj4xKXwwO2lmKChnJjF8MCkhPTApe2Y9Y1soY1tiPj4yXXwwKStmPj4yXXwwfWxjW2YmMjU1XShiKTskYigxMDU2OCl8MDtjW2E+PjJdPS0xO0NiKDEwNTY4KXwwO0ViKDEwNTkyKXwwO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZGcoKXt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9WGEoOCl8MDtjW2I+PjJdPTk5MDQ7d2hpbGUoMSl7ZT11bigyNSl8MDtpZigoZXwwKSE9MCl7ZD03O2JyZWFrfWU9Y1s1NjY2XXwwO2NbNTY2Nl09ZSswO2lmKChlfDApPT0wKXticmVha31zY1tlJjMxXSgpfWlmKChkfDApPT03KXtjW2UrND4+Ml09MTI7Y1tlPj4yXT0xMjtmPWUrMTJ8MDtjW2IrND4+Ml09ZjtjW2UrOD4+Ml09MDtmPWYrMHwwO2U9MTA2NDB8MDtkPWYrMTN8MDtkb3thW2Y+PjBdPWFbZT4+MF18MDtmPWYrMXwwO2U9ZSsxfDB9d2hpbGUoKGZ8MCk8KGR8MCkpO2NbYj4+Ml09OTk4NDt3YihifDAsMTAwMjQsMTA0KX1mPVhhKDQpfDA7Y1tmPj4yXT0yMjY4MDt3YihmfDAsMjI3MjgsMjA2KX1mdW5jdGlvbiBlZyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aWYoZT4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1pZihlPj4+MDwxMSl7YVtiPj4wXT1lPDwxO2o9YisxfDA7TG4oanwwLGR8MCxlfDApfDA7aj1qK2V8MDthW2o+PjBdPTA7aT1mO3JldHVybn1nPWUrMTYmLTE2O2g9KGd8MCk9PTA/MTpnO3doaWxlKDEpe2o9dW4oaCl8MDtpZigoanwwKSE9MCl7aD0xMTticmVha31qPWNbNTY2Nl18MDtjWzU2NjZdPWorMDtpZigoanwwKT09MCl7aD05O2JyZWFrfXNjW2omMzFdKCl9aWYoKGh8MCk9PTkpe2o9WGEoNCl8MDtjW2o+PjJdPTIyNjgwO3diKGp8MCwyMjcyOCwyMDYpfWVsc2UgaWYoKGh8MCk9PTExKXtjW2IrOD4+Ml09ajtjW2I+PjJdPWd8MTtjW2IrND4+Ml09ZTtMbihqfDAsZHwwLGV8MCl8MDtqPWorZXwwO2Fbaj4+MF09MDtpPWY7cmV0dXJufX1mdW5jdGlvbiBmZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aWYoISgoYVtiPj4wXSYxKT09MCk/KGU9Y1tiKzg+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWk9ZDtyZXR1cm59ZnVuY3Rpb24gZ2coYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtmPWk7ZT1KbihkfDApfDA7aD1hW2I+PjBdfDA7aWYoKGgmMSk9PTApe2c9MTB9ZWxzZXtnPWNbYj4+Ml18MDtoPWcmMjU1O2c9KGcmLTIpKyAtMXwwfWo9KGgmMSk9PTA7aWYoZz4+PjA8ZT4+PjApe2lmKGope2g9KGgmMjU1KT4+PjF9ZWxzZXtoPWNbYis0Pj4yXXwwfWtnKGIsZyxlLWd8MCxoLDAsaCxlLGQpO2k9ZjtyZXR1cm59aWYoail7Zz1iKzF8MH1lbHNle2c9Y1tiKzg+PjJdfDB9TW4oZ3wwLGR8MCxlfDApfDA7YVtnK2U+PjBdPTA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZTw8MTtpPWY7cmV0dXJufWVsc2V7Y1tiKzQ+PjJdPWU7aT1mO3JldHVybn19ZnVuY3Rpb24gaGcoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpZigoZHwwKT09MCl7aT1lO3JldHVybn1oPWFbYj4+MF18MDtpZigoaCYxKT09MCl7Zz0xMH1lbHNle2g9Y1tiPj4yXXwwO2c9KGgmLTIpKyAtMXwwO2g9aCYyNTV9aWYoKGgmMSk9PTApe2Y9KGgmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKChnLWZ8MCk+Pj4wPGQ+Pj4wKXtsZyhiLGcsZC1nK2Z8MCxmLGYsMCk7aD1hW2I+PjBdfDB9aWYoKGgmMSk9PTApe2c9YisxfDB9ZWxzZXtnPWNbYis4Pj4yXXwwfU5uKGcrZnwwLDAsZHwwKXwwO2Q9ZitkfDA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZDw8MX1lbHNle2NbYis0Pj4yXT1kfWFbZytkPj4wXT0wO2k9ZTtyZXR1cm59ZnVuY3Rpb24gaWcoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZD1pO2g9YVtiPj4wXXwwO2lmKChoJjEpPT0wKXtsPTEwfWVsc2V7aD1jW2I+PjJdfDA7bD0oaCYtMikrIC0xfDA7aD1oJjI1NX1qPShoJjEpPT0wO2lmKGope2Y9KGgmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKGY+Pj4wPDExKXtlPTEwfWVsc2V7ZT0oZisxNiYtMTYpKyAtMXwwfWlmKChlfDApPT0obHwwKSl7aT1kO3JldHVybn1kb3tpZigoZXwwKT09MTApe2s9YisxfDA7Zz1jW2IrOD4+Ml18MDtpZihqKXtMbihrfDAsZ3wwLCgoaCYyNTUpPj4+MSkrMXwwKXwwO2g9aztrPTA7aj1nO2c9Mjd9ZWxzZXtoPWs7az0wO2o9ZztnPTI1fX1lbHNle2s9ZSsxfDA7az0oa3wwKT09MD8xOms7YTpkb3tpZihlPj4+MD5sPj4+MCl7d2hpbGUoMSl7bD11bihrKXwwO2lmKChsfDApIT0wKXticmVhayBhfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXticmVha31zY1tsJjMxXSgpfWw9WGEoNCl8MDtjW2w+PjJdPTIyNjgwO3diKGx8MCwyMjcyOCwyMDYpfWVsc2V7d2hpbGUoMSl7bD11bihrKXwwO2lmKChsfDApIT0wKXticmVhayBhfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXticmVha31zY1tsJjMxXSgpfWw9WGEoNCl8MDtjW2w+PjJdPTIyNjgwO3diKGx8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihqKXtMbihsfDAsYisxfDAsKChoJjI1NSk+Pj4xKSsxfDApfDA7aD1sO2JyZWFrfWVsc2V7aD1sO2s9MTtqPWNbYis4Pj4yXXwwO2c9MjU7YnJlYWt9fX13aGlsZSgwKTtpZigoZ3wwKT09MjUpe0xuKGh8MCxqfDAsKGNbYis0Pj4yXXwwKSsxfDApfDA7Zz0yN31kb3tpZigoZ3wwKT09Mjcpe2lmKChqfDApPT0wKXtpZihrKXticmVha319ZWxzZXt2bihqKTtpZihrKXticmVha319YVtiPj4wXT1mPDwxO2k9ZDtyZXR1cm59fXdoaWxlKDApO2NbYj4+Ml09ZSsxfDE7Y1tiKzQ+PjJdPWY7Y1tiKzg+PjJdPWg7aT1kO3JldHVybn1mdW5jdGlvbiBqZyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aj1hW2I+PjBdfDA7aWYoKGomMSk9PTApe2c9MTB9ZWxzZXtqPWNbYj4+Ml18MDtnPShqJi0yKSsgLTF8MDtqPWomMjU1fWg9KGomMSk9PTA7aWYoaCl7aj0oaiYyNTUpPj4+MX1lbHNle2o9Y1tiKzQ+PjJdfDB9aWYoKGctanwwKT4+PjA8ZT4+PjApe2tnKGIsZyxlLWcranwwLGosaiwwLGUsZCk7aT1mO3JldHVybn1pZigoZXwwKT09MCl7aT1mO3JldHVybn1pZihoKXtnPWIrMXwwfWVsc2V7Zz1jW2IrOD4+Ml18MH1MbihnK2p8MCxkfDAsZXwwKXwwO2U9aitlfDA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09ZTw8MX1lbHNle2NbYis0Pj4yXT1lfWFbZytlPj4wXT0wO2k9ZjtyZXR1cm59ZnVuY3Rpb24ga2coYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MDtsPWk7aWYoKC0xOC1kfDApPj4+MDxlPj4+MCl7ZGcoKX1pZigoYVtiPj4wXSYxKT09MCl7bT1iKzF8MH1lbHNle209Y1tiKzg+PjJdfDB9aWYoZD4+PjA8MjE0NzQ4MzYyMyl7ZT1lK2R8MDtwPWQ8PDE7ZT1lPj4+MDxwPj4+MD9wOmU7aWYoZT4+PjA8MTEpe2U9MTF9ZWxzZXtlPWUrMTYmLTE2fX1lbHNle2U9LTE3fW89KGV8MCk9PTA/MTplO3doaWxlKDEpe3A9dW4obyl8MDtpZigocHwwKSE9MCl7YnJlYWt9cD1jWzU2NjZdfDA7Y1s1NjY2XT1wKzA7aWYoKHB8MCk9PTApe249MTM7YnJlYWt9c2NbcCYzMV0oKX1pZigobnwwKT09MTMpe3A9WGEoNCl8MDtjW3A+PjJdPTIyNjgwO3diKHB8MCwyMjcyOCwyMDYpfWlmKChnfDApIT0wKXtMbihwfDAsbXwwLGd8MCl8MH1pZigoanwwKSE9MCl7TG4ocCtnfDAsa3wwLGp8MCl8MH1uPWYtaHwwO2lmKChufDApIT0oZ3wwKSl7TG4ocCsoaitnKXwwLG0rKGgrZyl8MCxuLWd8MCl8MH1pZigoZHwwKT09MTB8KG18MCk9PTApe289Yis4fDA7Y1tvPj4yXT1wO289ZXwxO2NbYj4+Ml09bztvPW4ranwwO2U9Yis0fDA7Y1tlPj4yXT1vO3A9cCtvfDA7YVtwPj4wXT0wO2k9bDtyZXR1cm59dm4obSk7bz1iKzh8MDtjW28+PjJdPXA7bz1lfDE7Y1tiPj4yXT1vO289bitqfDA7ZT1iKzR8MDtjW2U+PjJdPW87cD1wK298MDthW3A+PjBdPTA7aT1sO3JldHVybn1mdW5jdGlvbiBsZyhiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTA7bD1pO2lmKCgtMTctZHwwKT4+PjA8ZT4+PjApe2RnKCl9aWYoKGFbYj4+MF0mMSk9PTApe2s9YisxfDB9ZWxzZXtrPWNbYis4Pj4yXXwwfWlmKGQ+Pj4wPDIxNDc0ODM2MjMpe2U9ZStkfDA7bj1kPDwxO2U9ZT4+PjA8bj4+PjA/bjplO2lmKGU+Pj4wPDExKXtlPTExfWVsc2V7ZT1lKzE2Ji0xNn19ZWxzZXtlPS0xN31tPShlfDApPT0wPzE6ZTt3aGlsZSgxKXtuPXVuKG0pfDA7aWYoKG58MCkhPTApe2JyZWFrfW49Y1s1NjY2XXwwO2NbNTY2Nl09biswO2lmKChufDApPT0wKXtqPTEzO2JyZWFrfXNjW24mMzFdKCl9aWYoKGp8MCk9PTEzKXtuPVhhKDQpfDA7Y1tuPj4yXT0yMjY4MDt3YihufDAsMjI3MjgsMjA2KX1pZigoZ3wwKSE9MCl7TG4obnwwLGt8MCxnfDApfDB9aWYoKGZ8MCkhPShnfDApKXtMbihuKyhoK2cpfDAsaytnfDAsZi1nfDApfDB9aWYoKGR8MCk9PTEwfChrfDApPT0wKXttPWIrOHwwO2NbbT4+Ml09bjtuPWV8MTtjW2I+PjJdPW47aT1sO3JldHVybn12bihrKTttPWIrOHwwO2NbbT4+Ml09bjtuPWV8MTtjW2I+PjJdPW47aT1sO3JldHVybn1mdW5jdGlvbiBtZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aWYoISgoYVtiPj4wXSYxKT09MCk/KGU9Y1tiKzg+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWk9ZDtyZXR1cm59ZnVuY3Rpb24gbmcoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtlPWk7Zj1kO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPT0wKXticmVha31lbHNle2Y9Zis0fDB9fWs9ZDtqPWYta3wwO2Y9aj4+MjtsPWFbYj4+MF18MDtpZigobCYxKT09MCl7Zz0xfWVsc2V7bD1jW2I+PjJdfDA7Zz0obCYtMikrIC0xfDA7bD1sJjI1NX1pZighKGc+Pj4wPGY+Pj4wKSl7aWYoKGwmMSk9PTApe2c9Yis0fDB9ZWxzZXtnPWNbYis4Pj4yXXwwfWg9KGZ8MCk9PTA7aWYoZy1rPj4yPj4+MDxmPj4+MCl7aWYoIWgpe2g9Zjtkb3toPWgrIC0xfDA7Y1tnKyhoPDwyKT4+Ml09Y1tkKyhoPDwyKT4+Ml19d2hpbGUoKGh8MCkhPTApfX1lbHNle2lmKCFoKXtoPWc7az1mO3doaWxlKDEpe2s9aysgLTF8MDtjW2g+PjJdPWNbZD4+Ml07aWYoKGt8MCk9PTApe2JyZWFrfWVsc2V7ZD1kKzR8MDtoPWgrNHwwfX19fWNbZysoZjw8Mik+PjJdPTA7aWYoKGFbYj4+MF0mMSk9PTApe2FbYj4+MF09aj4+PjE7aT1lO3JldHVybn1lbHNle2NbYis0Pj4yXT1mO2k9ZTtyZXR1cm59fWlmKCgxMDczNzQxODA2LWd8MCk+Pj4wPChmLWd8MCk+Pj4wKXtkZygpfWlmKChsJjEpPT0wKXtqPWIrNHwwfWVsc2V7aj1jW2IrOD4+Ml18MH1pZihnPj4+MDw1MzY4NzA4ODcpe2s9Zzw8MTtrPWY+Pj4wPGs+Pj4wP2s6ZjtpZihrPj4+MDwyKXtrPTJ9ZWxzZXtrPWsrNCYtNH19ZWxzZXtrPTEwNzM3NDE4MDd9bT1rPDwyO209KG18MCk9PTA/MTptO3doaWxlKDEpe2w9dW4obSl8MDtpZigobHwwKSE9MCl7YnJlYWt9bD1jWzU2NjZdfDA7Y1s1NjY2XT1sKzA7aWYoKGx8MCk9PTApe2g9Mjk7YnJlYWt9c2NbbCYzMV0oKX1pZigoaHwwKT09Mjkpe209WGEoNCl8MDtjW20+PjJdPTIyNjgwO3diKG18MCwyMjcyOCwyMDYpfWlmKChmfDApIT0wKXtoPWY7bT1sO3doaWxlKDEpe2g9aCsgLTF8MDtjW20+PjJdPWNbZD4+Ml07aWYoKGh8MCk9PTApe2JyZWFrfWVsc2V7ZD1kKzR8MDttPW0rNHwwfX19aWYoISgoZ3wwKT09MXwoanwwKT09MCkpe3ZuKGopfWNbYis4Pj4yXT1sO2NbYj4+Ml09a3wxO2NbYis0Pj4yXT1mO2NbbCsoZjw8Mik+PjJdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBvZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2Q9aTtnPWFbYj4+MF18MDtpZigoZyYxKT09MCl7az0xfWVsc2V7Zz1jW2I+PjJdfDA7az0oZyYtMikrIC0xfDA7Zz1nJjI1NX1oPShnJjEpPT0wO2lmKGgpe2Y9KGcmMjU1KT4+PjF9ZWxzZXtmPWNbYis0Pj4yXXwwfWlmKGY+Pj4wPDIpe2U9MX1lbHNle2U9KGYrNCYtNCkrIC0xfDB9aWYoKGV8MCk9PShrfDApKXtpPWQ7cmV0dXJufWRve2lmKChlfDApPT0xKXtuPWIrNHwwO2w9Y1tiKzg+PjJdfDA7aWYoaCl7aj0wO209MTtoPTI2fWVsc2V7Zz1uO2o9MDttPTE7aD0yNX19ZWxzZXtqPShlPDwyKSs0fDA7aj0oanwwKT09MD8xOmo7YTpkb3tpZihlPj4+MD5rPj4+MCl7d2hpbGUoMSl7bj11bihqKXwwO2lmKChufDApIT0wKXticmVhayBhfWs9Y1s1NjY2XXwwO2NbNTY2Nl09ayswO2lmKChrfDApPT0wKXticmVha31zY1trJjMxXSgpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpfWVsc2V7d2hpbGUoMSl7bj11bihqKXwwO2lmKChufDApIT0wKXticmVhayBhfWs9Y1s1NjY2XXwwO2NbNTY2Nl09ayswO2lmKChrfDApPT0wKXticmVha31zY1trJjMxXSgpfW49WGEoNCl8MDtjW24+PjJdPTIyNjgwO3diKG58MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZihoKXtqPTE7bD1iKzR8MDttPTA7aD0yNjticmVha31lbHNle2c9bjtqPTE7bD1jW2IrOD4+Ml18MDttPTE7aD0yNTticmVha319fXdoaWxlKDApO2lmKChofDApPT0yNSl7az1jW2IrND4+Ml18MH1lbHNlIGlmKChofDApPT0yNil7az0oZyYyNTUpPj4+MTtnPW59az1rKzF8MDtpZigoa3wwKSE9MCl7bj1sO2g9Zzt3aGlsZSgxKXtrPWsrIC0xfDA7Y1toPj4yXT1jW24+PjJdO2lmKChrfDApPT0wKXticmVha31lbHNle249bis0fDA7aD1oKzR8MH19fWlmKCEobV4xfChsfDApPT0wKSl7dm4obCl9aWYoail7Y1tiPj4yXT1lKzF8MTtjW2IrND4+Ml09ZjtjW2IrOD4+Ml09ZztpPWQ7cmV0dXJufWVsc2V7YVtiPj4wXT1mPDwxO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIHBnKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtrPWk7aWYoKDEwNzM3NDE4MDctZHwwKT4+PjA8ZT4+PjApe2RnKCl9aWYoKGFbYj4+MF0mMSk9PTApe2w9Yis0fDB9ZWxzZXtsPWNbYis4Pj4yXXwwfWlmKGQ+Pj4wPDUzNjg3MDg4Nyl7ZT1lK2R8MDtwPWQ8PDE7ZT1lPj4+MDxwPj4+MD9wOmU7aWYoZT4+PjA8Mil7ZT0yfWVsc2V7ZT1lKzQmLTR9fWVsc2V7ZT0xMDczNzQxODA3fW89ZTw8MjtvPShvfDApPT0wPzE6bzt3aGlsZSgxKXttPXVuKG8pfDA7aWYoKG18MCkhPTApe2JyZWFrfW09Y1s1NjY2XXwwO2NbNTY2Nl09bSswO2lmKChtfDApPT0wKXtuPTEzO2JyZWFrfXNjW20mMzFdKCl9aWYoKG58MCk9PTEzKXtwPVhhKDQpfDA7Y1twPj4yXT0yMjY4MDt3YihwfDAsMjI3MjgsMjA2KX1pZigoZ3wwKSE9MCl7bz1nO249bDtwPW07d2hpbGUoMSl7bz1vKyAtMXwwO2NbcD4+Ml09Y1tuPj4yXTtpZigob3wwKT09MCl7YnJlYWt9ZWxzZXtuPW4rNHwwO3A9cCs0fDB9fX1mPWYtaHwwO2lmKChmfDApIT0oZ3wwKSl7Zj1mLWd8MDtoPWwrKGgrZzw8Mil8MDtnPW0rKGorZzw8Mil8MDt3aGlsZSgxKXtmPWYrIC0xfDA7Y1tnPj4yXT1jW2g+PjJdO2lmKChmfDApPT0wKXticmVha31lbHNle2g9aCs0fDA7Zz1nKzR8MH19fWlmKChkfDApPT0xfChsfDApPT0wKXtwPWIrOHwwO2NbcD4+Ml09bTtwPWV8MTtjW2I+PjJdPXA7aT1rO3JldHVybn12bihsKTtwPWIrOHwwO2NbcD4+Ml09bTtwPWV8MTtjW2I+PjJdPXA7aT1rO3JldHVybn1mdW5jdGlvbiBxZyhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT0oY1tiKzI0Pj4yXXwwKT09MDtpZihlKXtjW2IrMTY+PjJdPWR8MX1lbHNle2NbYisxNj4+Ml09ZH1pZigoKGUmMXxkKSZjW2IrMjA+PjJdfDApPT0wKXtyZXR1cm59ZD1YYSgxNil8MDtpZigoYVsxMTAwOF18MCk9PTA/KFFhKDExMDA4KXwwKSE9MDowKXtjWzI3NTBdPTExNzg0OyRhKDExMDA4KX1ZZihkLDEsMTFlMywxMTA1Nik7Y1tkPj4yXT0xMTAyNDt3YihkfDAsMTExMDQsMTMxKX1mdW5jdGlvbiByZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1pO2NbYT4+Ml09MTEwNDg7Zj1jW2ErNDA+PjJdfDA7Yj1hKzMyfDA7ZD1hKzM2fDA7aWYoKGZ8MCkhPTApe2Rve2Y9ZisgLTF8MDtxY1tjWyhjW2I+PjJdfDApKyhmPDwyKT4+Ml0mMzFdKDAsYSxjWyhjW2Q+PjJdfDApKyhmPDwyKT4+Ml18MCl9d2hpbGUoKGZ8MCkhPTApfWY9Y1thKzI4Pj4yXXwwO2g9Zis0fDA7Zz1jW2g+PjJdfDA7Y1toPj4yXT1nKyAtMTtpZigoZ3wwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfXZuKGNbYj4+Ml18MCk7dm4oY1tkPj4yXXwwKTt2bihjW2ErNDg+PjJdfDApO3ZuKGNbYSs2MD4+Ml18MCk7aT1lO3JldHVybn1mdW5jdGlvbiBzZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTEwNjY0O2Q9Y1thKzQ+PjJdfDA7Zj1kKzR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlfDApIT0wKXt2bihhKTtpPWI7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTt2bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHRnKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7Y1thPj4yXT0xMDY2NDthPWNbYSs0Pj4yXXwwO2U9YSs0fDA7ZD1jW2U+PjJdfDA7Y1tlPj4yXT1kKyAtMTtpZigoZHwwKSE9MCl7aT1iO3JldHVybn1sY1tjWyhjW2E+PjJdfDApKzg+PjJdJjI1NV0oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB1ZyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybn1mdW5jdGlvbiB2ZyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiB3ZyhhLGIsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7Zz1hO2NbZz4+Ml09MDtjW2crND4+Ml09MDtnPWErOHwwO2NbZz4+Ml09LTE7Y1tnKzQ+PjJdPS0xO3JldHVybn1mdW5jdGlvbiB4ZyhhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtlPWE7Y1tlPj4yXT0wO2NbZSs0Pj4yXT0wO2U9YSs4fDA7Y1tlPj4yXT0tMTtjW2UrND4+Ml09LTE7cmV0dXJufWZ1bmN0aW9uIHlnKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIHpnKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIEFnKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtmPWk7aWYoKGV8MCk8PTApe2s9MDtpPWY7cmV0dXJuIGt8MH1nPWIrMTJ8MDtoPWIrMTZ8MDtqPTA7d2hpbGUoMSl7az1jW2c+PjJdfDA7aWYoaz4+PjA8KGNbaD4+Ml18MCk+Pj4wKXtjW2c+PjJdPWsrMTtrPWFbaz4+MF18MH1lbHNle2s9b2NbY1soY1tiPj4yXXwwKSs0MD4+Ml0mMTI3XShiKXwwO2lmKChrfDApPT0tMSl7ZT04O2JyZWFrfWs9ayYyNTV9YVtkPj4wXT1rO2o9aisxfDA7aWYoKGp8MCk8KGV8MCkpe2Q9ZCsxfDB9ZWxzZXtlPTg7YnJlYWt9fWlmKChlfDApPT04KXtpPWY7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBCZyhhKXthPWF8MDtyZXR1cm4tMX1mdW5jdGlvbiBDZyhhKXthPWF8MDt2YXIgYj0wLGU9MDtiPWk7aWYoKG9jW2NbKGNbYT4+Ml18MCkrMzY+PjJdJjEyN10oYSl8MCk9PS0xKXthPS0xO2k9YjtyZXR1cm4gYXwwfWU9YSsxMnwwO2E9Y1tlPj4yXXwwO2NbZT4+Ml09YSsxO2E9ZFthPj4wXXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIERnKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuLTF9ZnVuY3Rpb24gRWcoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtnPWk7aWYoKGZ8MCk8PTApe2w9MDtpPWc7cmV0dXJuIGx8MH1qPWIrMjR8MDtoPWIrMjh8MDtrPTA7d2hpbGUoMSl7bD1jW2o+PjJdfDA7aWYoIShsPj4+MDwoY1toPj4yXXwwKT4+PjApKXtpZigoeGNbY1soY1tiPj4yXXwwKSs1Mj4+Ml0mNjNdKGIsZFtlPj4wXXwwKXwwKT09LTEpe2g9NzticmVha319ZWxzZXttPWFbZT4+MF18MDtjW2o+PjJdPWwrMTthW2w+PjBdPW19az1rKzF8MDtpZigoa3wwKTwoZnwwKSl7ZT1lKzF8MH1lbHNle2g9NzticmVha319aWYoKGh8MCk9PTcpe2k9ZztyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIEZnKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuLTF9ZnVuY3Rpb24gR2coYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT0xMDcyODtkPWNbYSs0Pj4yXXwwO2Y9ZCs0fDA7ZT1jW2Y+PjJdfDA7Y1tmPj4yXT1lKyAtMTtpZigoZXwwKSE9MCl7dm4oYSk7aT1iO3JldHVybn1sY1tjWyhjW2Q+PjJdfDApKzg+PjJdJjI1NV0oZCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBIZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2NbYT4+Ml09MTA3Mjg7YT1jW2ErND4+Ml18MDtlPWErNHwwO2Q9Y1tlPj4yXXwwO2NbZT4+Ml09ZCsgLTE7aWYoKGR8MCkhPTApe2k9YjtyZXR1cm59bGNbY1soY1thPj4yXXwwKSs4Pj4yXSYyNTVdKGEpO2k9YjtyZXR1cm59ZnVuY3Rpb24gSWcoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm59ZnVuY3Rpb24gSmcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBhfDB9ZnVuY3Rpb24gS2coYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2c9YTtjW2c+PjJdPTA7Y1tnKzQ+PjJdPTA7Zz1hKzh8MDtjW2c+PjJdPS0xO2NbZys0Pj4yXT0tMTtyZXR1cm59ZnVuY3Rpb24gTGcoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7ZT1hO2NbZT4+Ml09MDtjW2UrND4+Ml09MDtlPWErOHwwO2NbZT4+Ml09LTE7Y1tlKzQ+PjJdPS0xO3JldHVybn1mdW5jdGlvbiBNZyhhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBOZyhhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBPZyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2lmKChkfDApPD0wKXtqPTA7aT1lO3JldHVybiBqfDB9Zz1hKzEyfDA7Zj1hKzE2fDA7aD0wO3doaWxlKDEpe2o9Y1tnPj4yXXwwO2lmKCEoaj4+PjA8KGNbZj4+Ml18MCk+Pj4wKSl7aj1vY1tjWyhjW2E+PjJdfDApKzQwPj4yXSYxMjddKGEpfDA7aWYoKGp8MCk9PS0xKXthPTg7YnJlYWt9fWVsc2V7Y1tnPj4yXT1qKzQ7aj1jW2o+PjJdfDB9Y1tiPj4yXT1qO2g9aCsxfDA7aWYoKGh8MCk+PShkfDApKXthPTg7YnJlYWt9Yj1iKzR8MH1pZigoYXwwKT09OCl7aT1lO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gUGcoYSl7YT1hfDA7cmV0dXJuLTF9ZnVuY3Rpb24gUWcoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2lmKChvY1tjWyhjW2E+PjJdfDApKzM2Pj4yXSYxMjddKGEpfDApPT0tMSl7YT0tMTtpPWI7cmV0dXJuIGF8MH1kPWErMTJ8MDthPWNbZD4+Ml18MDtjW2Q+PjJdPWErNDthPWNbYT4+Ml18MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBSZyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybi0xfWZ1bmN0aW9uIFNnKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2lmKChkfDApPD0wKXtqPTA7aT1lO3JldHVybiBqfDB9Zz1hKzI0fDA7Zj1hKzI4fDA7aD0wO3doaWxlKDEpe2o9Y1tnPj4yXXwwO2lmKCEoaj4+PjA8KGNbZj4+Ml18MCk+Pj4wKSl7aWYoKHhjW2NbKGNbYT4+Ml18MCkrNTI+PjJdJjYzXShhLGNbYj4+Ml18MCl8MCk9PS0xKXtmPTg7YnJlYWt9fWVsc2V7az1jW2I+PjJdfDA7Y1tnPj4yXT1qKzQ7Y1tqPj4yXT1rfWg9aCsxfDA7aWYoKGh8MCk+PShkfDApKXtmPTg7YnJlYWt9Yj1iKzR8MH1pZigoZnwwKT09OCl7aT1lO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gVGcoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4tMX1mdW5jdGlvbiBVZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBWZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBXZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs4KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFhnKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzgpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gWWcoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7ZT1kO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2IrKGYrMjQpPj4yXXwwKT09MCl7aT1kO3JldHVybn1hW2U+PjBdPTA7Y1tlKzQ+PjJdPWI7aWYoKGNbYisoZisxNik+PjJdfDApPT0wKXtnPWNbYisoZis3Mik+PjJdfDA7aWYoKGd8MCkhPTApe1lnKGcpO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZT4+MF09MTtnPWNbYisoZisyNCk+PjJdfDA7aWYoKG9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MCk9PS0xKXtnPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK2d8MCxjW2IrKGcrMTYpPj4yXXwxKX19Z2goZSk7aT1kO3JldHVybn1mdW5jdGlvbiBaZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBfZyhhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzh8MCk7aT1iO3JldHVybn1mdW5jdGlvbiAkZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs4KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGFoKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzgpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gYmgoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7ZT1kO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2IrKGYrMjQpPj4yXXwwKT09MCl7aT1kO3JldHVybn1hW2U+PjBdPTA7Y1tlKzQ+PjJdPWI7aWYoKGNbYisoZisxNik+PjJdfDApPT0wKXtnPWNbYisoZis3Mik+PjJdfDA7aWYoKGd8MCkhPTApe2JoKGcpO2Y9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZT4+MF09MTtnPWNbYisoZisyNCk+PjJdfDA7aWYoKG9jW2NbKGNbZz4+Ml18MCkrMjQ+PjJdJjEyN10oZyl8MCk9PS0xKXtnPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK2d8MCxjW2IrKGcrMTYpPj4yXXwxKX19cWgoZSk7aT1kO3JldHVybn1mdW5jdGlvbiBjaChhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzR8MCk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiBkaChhKXthPWF8MDt2YXIgYj0wO2I9aTtyZyhhKzR8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBlaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2U9Y1soY1thPj4yXXwwKSsgLTEyPj4yXXwwO2Q9YStlfDA7cmcoYSsoZSs0KXwwKTtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGZoKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErKChjWyhjW2E+PjJdfDApKyAtMTI+PjJdfDApKzQpfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gZ2goYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTthPWErNHwwO2Q9Y1thPj4yXXwwO2U9Y1soY1tkPj4yXXwwKSsgLTEyPj4yXXwwO2lmKChjW2QrKGUrMjQpPj4yXXwwKT09MCl7aT1iO3JldHVybn1pZigoY1tkKyhlKzE2KT4+Ml18MCkhPTApe2k9YjtyZXR1cm59aWYoKGNbZCsoZSs0KT4+Ml0mODE5MnwwKT09MCl7aT1iO3JldHVybn1pZihZYSgpfDApe2k9YjtyZXR1cm59ZT1jW2E+PjJdfDA7ZT1jW2UrKChjWyhjW2U+PjJdfDApKyAtMTI+PjJdfDApKzI0KT4+Ml18MDtpZighKChvY1tjWyhjW2U+PjJdfDApKzI0Pj4yXSYxMjddKGUpfDApPT0tMSkpe2k9YjtyZXR1cm59ZD1jW2E+PjJdfDA7ZT1jWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDA7cWcoZCtlfDAsY1tkKyhlKzE2KT4+Ml18MSk7aT1iO3JldHVybn1mdW5jdGlvbiBoaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2g9aTtpPWkrMzJ8MDtrPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG4rMTYpPj4yXXwwKT09MCl7bT1jW2IrKG4rNzIpPj4yXXwwO2lmKChtfDApIT0wKXtZZyhtKTtuPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7bz1jW2IrKG4rMjgpPj4yXXwwO3A9bys0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1trPj4yXT0xMjE5MjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEyMTkyLGspfW49KGNbMTIxOTY+PjJdfDApKyAtMXwwO209Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktbT4+Mj4+PjA+bj4+PjA/KGU9Y1ttKyhuPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfXE9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO209Y1tiKyhxKzI0KT4+Ml18MDtuPWIrcXwwO289YisocSs3Nil8MDtwPWNbbz4+Ml18MDtkb3tpZigocHwwKT09LTEpe3E9Y1tiKyhxKzI4KT4+Ml18MDtwPXErNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NTY7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ1NixrKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXM+PjI+Pj4wPnI+Pj4wPyhsPWNbcysocjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2w9eGNbY1soY1tsPj4yXXwwKSsyOD4+Ml0mNjNdKGwsMzIpfDA7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfXA9bDw8MjQ+PjI0O2Nbbz4+Ml09cDticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7cj1wJjI1NTtzPWQmNjU1MzU7cT1jWyhjW2U+PjJdfDApKzI0Pj4yXXwwO2Nbaj4+Ml09bTtjW2srMD4+Ml09Y1tqKzA+PjJdO3djW3EmNjNdKGYsZSxrLG4scixzKTtpZigoY1tmPj4yXXwwKSE9MCl7YnJlYWt9cz1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7cWcoYitzfDAsY1tiKyhzKzE2KT4+Ml18NSk7YnJlYWt9cz1YYSg0KXwwO2Nbcz4+Ml09MjEzMDQ7d2Ioc3wwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2doKGcpO2k9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIGloKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7aD1pO2k9aSszMnwwO2s9aDtqPWgrMjR8MDtnPWgrMTZ8MDtmPWgrMTJ8MDthW2c+PjBdPTA7Y1tnKzQ+PjJdPWI7bj1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7ZG97aWYoKGNbYisobisxNik+PjJdfDApPT0wKXttPWNbYisobis3Mik+PjJdfDA7aWYoKG18MCkhPTApe1lnKG0pO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwfWFbZz4+MF09MTtvPWNbYisobisyOCk+PjJdfDA7cD1vKzR8MDtjW3A+PjJdPShjW3A+PjJdfDApKzE7aWYoISgoY1szMDQ4XXwwKT09LTEpKXtjW2s+PjJdPTEyMTkyO2Nbays0Pj4yXT0yMDg7Y1trKzg+PjJdPTA7Y2coMTIxOTIsayl9bj0oY1sxMjE5Nj4+Ml18MCkrIC0xfDA7bT1jW28rOD4+Ml18MDtpZigoY1tvKzEyPj4yXXwwKS1tPj4yPj4+MD5uPj4+MD8oZT1jW20rKG48PDIpPj4yXXwwLChlfDApIT0wKTowKXtzPWNbcD4+Ml18MDtjW3A+PjJdPXMrIC0xO2lmKChzfDApPT0wKXtsY1tjWyhjW28+PjJdfDApKzg+PjJdJjI1NV0obyl9cT1jWyhjW2I+PjJdfDApKyAtMTI+PjJdfDA7bT1jW2IrKHErMjQpPj4yXXwwO249YitxfDA7bz1iKyhxKzc2KXwwO3A9Y1tvPj4yXXwwO2Rve2lmKChwfDApPT0tMSl7cT1jW2IrKHErMjgpPj4yXXwwO3A9cSs0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1trPj4yXT0xMzQ1NjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEzNDU2LGspfXI9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3M9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcz4+Mj4+PjA+cj4+PjA/KGw9Y1tzKyhyPDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7bD14Y1tjWyhjW2w+PjJdfDApKzI4Pj4yXSY2M10obCwzMil8MDtzPWNbcD4+Ml18MDtjW3A+PjJdPXMrIC0xO2lmKChzfDApPT0wKXtsY1tjWyhjW3E+PjJdfDApKzg+PjJdJjI1NV0ocSl9cD1sPDwyND4+MjQ7Y1tvPj4yXT1wO2JyZWFrfXM9WGEoNCl8MDtjW3M+PjJdPTIxMzA0O3diKHN8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtzPXAmMjU1O3I9Y1soY1tlPj4yXXwwKSsxNj4+Ml18MDtjW2o+PjJdPW07Y1trKzA+PjJdPWNbaiswPj4yXTt3Y1tyJjYzXShmLGUsayxuLHMsZCk7aWYoKGNbZj4+Ml18MCkhPTApe2JyZWFrfXM9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO3FnKGIrc3wwLGNbYisocysxNik+PjJdfDUpO2JyZWFrfXM9WGEoNCl8MDtjW3M+PjJdPTIxMzA0O3diKHN8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtnaChnKTtpPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBqaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2g9aTtpPWkrMzJ8MDtrPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO249Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG4rMTYpPj4yXXwwKT09MCl7bT1jW2IrKG4rNzIpPj4yXXwwO2lmKChtfDApIT0wKXtZZyhtKTtuPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7bz1jW2IrKG4rMjgpPj4yXXwwO3A9bys0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1trPj4yXT0xMjE5MjtjW2srND4+Ml09MjA4O2Nbays4Pj4yXT0wO2NnKDEyMTkyLGspfW49KGNbMTIxOTY+PjJdfDApKyAtMXwwO209Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktbT4+Mj4+PjA+bj4+PjA/KGU9Y1ttKyhuPDwyKT4+Ml18MCwoZXwwKSE9MCk6MCl7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfXE9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO209Y1tiKyhxKzI0KT4+Ml18MDtuPWIrcXwwO289YisocSs3Nil8MDtwPWNbbz4+Ml18MDtkb3tpZigocHwwKT09LTEpe3E9Y1tiKyhxKzI4KT4+Ml18MDtwPXErNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NTY7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ1NixrKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXM+PjI+Pj4wPnI+Pj4wPyhsPWNbcysocjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2w9eGNbY1soY1tsPj4yXXwwKSsyOD4+Ml0mNjNdKGwsMzIpfDA7cz1jW3A+PjJdfDA7Y1twPj4yXT1zKyAtMTtpZigoc3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfXA9bDw8MjQ+PjI0O2Nbbz4+Ml09cDticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7cz1wJjI1NTtyPWNbKGNbZT4+Ml18MCkrMjQ+PjJdfDA7Y1tqPj4yXT1tO2NbayswPj4yXT1jW2orMD4+Ml07d2NbciY2M10oZixlLGssbixzLGQpO2lmKChjW2Y+PjJdfDApIT0wKXticmVha31zPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MDtxZyhiK3N8MCxjW2IrKHMrMTYpPj4yXXw1KTticmVha31zPVhhKDQpfDA7Y1tzPj4yXT0yMTMwNDt3YihzfDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7Z2goZyk7aT1oO3JldHVybiBifDB9ZnVuY3Rpb24ga2goYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO2g9aTtpPWkrMzJ8MDtsPWg7aj1oKzI0fDA7Zz1oKzE2fDA7Zj1oKzEyfDA7YVtnPj4wXT0wO2NbZys0Pj4yXT1iO289Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO2Rve2lmKChjW2IrKG8rMTYpPj4yXXwwKT09MCl7bj1jW2IrKG8rNzIpPj4yXXwwO2lmKChufDApIT0wKXtZZyhuKTtvPWNbKGNbYj4+Ml18MCkrIC0xMj4+Ml18MH1hW2c+PjBdPTE7cD1jW2IrKG8rMjgpPj4yXXwwO3E9cCs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzA0OF18MCk9PS0xKSl7Y1tsPj4yXT0xMjE5MjtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEyMTkyLGwpfW89KGNbMTIxOTY+PjJdfDApKyAtMXwwO249Y1twKzg+PjJdfDA7aWYoKGNbcCsxMj4+Ml18MCktbj4+Mj4+PjA+bz4+PjA/KGs9Y1tuKyhvPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7dD1jW3E+PjJdfDA7Y1txPj4yXT10KyAtMTtpZigodHwwKT09MCl7bGNbY1soY1twPj4yXXwwKSs4Pj4yXSYyNTVdKHApfXI9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO249Y1tiKyhyKzI0KT4+Ml18MDtvPWIrcnwwO3A9Yisocis3Nil8MDtxPWNbcD4+Ml18MDtkb3tpZigocXwwKT09LTEpe3I9Y1tiKyhyKzI4KT4+Ml18MDtxPXIrNHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1zPShjWzEzNDYwPj4yXXwwKSsgLTF8MDt0PWNbcis4Pj4yXXwwO2lmKChjW3IrMTI+PjJdfDApLXQ+PjI+Pj4wPnM+Pj4wPyhtPWNbdCsoczw8Mik+PjJdfDAsKG18MCkhPTApOjApe209eGNbY1soY1ttPj4yXXwwKSsyOD4+Ml0mNjNdKG0sMzIpfDA7dD1jW3E+PjJdfDA7Y1txPj4yXT10KyAtMTtpZigodHwwKT09MCl7bGNbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKHIpfXE9bTw8MjQ+PjI0O2NbcD4+Ml09cTticmVha310PVhhKDQpfDA7Y1t0Pj4yXT0yMTMwNDt3Yih0fDAsMjEzNzYsMTk2KX19d2hpbGUoMCk7dD1xJjI1NTtzPWNbKGNbaz4+Ml18MCkrMjg+PjJdfDA7Y1tqPj4yXT1uO2NbbCswPj4yXT1jW2orMD4+Ml07aWNbcyY2M10oZixrLGwsbyx0LGQsZSk7aWYoKGNbZj4+Ml18MCkhPTApe2JyZWFrfXQ9Y1soY1tiPj4yXXwwKSsgLTEyPj4yXXwwO3FnKGIrdHwwLGNbYisodCsxNik+PjJdfDUpO2JyZWFrfXQ9WGEoNCl8MDtjW3Q+PjJdPTIxMzA0O3diKHR8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtnaChnKTtpPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBsaChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrMTZ8MDtmPWU7YVtmPj4wXT0wO2NbZis0Pj4yXT1iO2g9Y1tiPj4yXXwwO2c9Y1toKyAtMTI+PjJdfDA7ZG97aWYoKGNbYisoZysxNik+PjJdfDApPT0wKXtqPWNbYisoZys3Mik+PjJdfDA7aWYoKGp8MCkhPTApe1lnKGopO2c9Y1tiPj4yXXwwO2g9ZztnPWNbZysgLTEyPj4yXXwwfWFbZj4+MF09MTtnPWNbYisoZysyNCk+PjJdfDA7aWYoKGd8MCkhPTApe2o9ZysyNHwwO2g9Y1tqPj4yXXwwO2lmKChofDApIT0oY1tnKzI4Pj4yXXwwKSl7Y1tqPj4yXT1oKzE7YVtoPj4wXT1kO2JyZWFrfWlmKCEoKHhjW2NbKGNbZz4+Ml18MCkrNTI+PjJdJjYzXShnLGQmMjU1KXwwKT09LTEpKXticmVha31oPWNbYj4+Ml18MH1qPWNbaCsgLTEyPj4yXXwwO3FnKGIranwwLGNbYisoaisxNik+PjJdfDEpfX13aGlsZSgwKTtnaChmKTtpPWU7cmV0dXJufWZ1bmN0aW9uIG1oKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErNHwwKTtpZigoYXwwKT09MCl7aT1iO3JldHVybn12bihhKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG5oKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO3JnKGErNHwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG9oKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7ZT1jWyhjW2E+PjJdfDApKyAtMTI+PjJdfDA7ZD1hK2V8MDtyZyhhKyhlKzQpfDApO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gcGgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7cmcoYSsoKGNbKGNbYT4+Ml18MCkrIC0xMj4+Ml18MCkrNCl8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBxaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2E9YSs0fDA7ZD1jW2E+PjJdfDA7ZT1jWyhjW2Q+PjJdfDApKyAtMTI+PjJdfDA7aWYoKGNbZCsoZSsyNCk+PjJdfDApPT0wKXtpPWI7cmV0dXJufWlmKChjW2QrKGUrMTYpPj4yXXwwKSE9MCl7aT1iO3JldHVybn1pZigoY1tkKyhlKzQpPj4yXSY4MTkyfDApPT0wKXtpPWI7cmV0dXJufWlmKFlhKCl8MCl7aT1iO3JldHVybn1lPWNbYT4+Ml18MDtlPWNbZSsoKGNbKGNbZT4+Ml18MCkrIC0xMj4+Ml18MCkrMjQpPj4yXXwwO2lmKCEoKG9jW2NbKGNbZT4+Ml18MCkrMjQ+PjJdJjEyN10oZSl8MCk9PS0xKSl7aT1iO3JldHVybn1kPWNbYT4+Ml18MDtlPWNbKGNbZD4+Ml18MCkrIC0xMj4+Ml18MDtxZyhkK2V8MCxjW2QrKGUrMTYpPj4yXXwxKTtpPWI7cmV0dXJufWZ1bmN0aW9uIHJoKGEpe2E9YXwwO3JldHVybiAxMDk0NH1mdW5jdGlvbiBzaChiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7ZD1pO2lmKChlfDApPT0xKXtlZyhiLDEwOTYwLDM1KTtpPWQ7cmV0dXJufWc9TmIoZXwwKXwwO2U9Sm4oZ3wwKXwwO2lmKGU+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoZT4+PjA8MTEpe2FbYj4+MF09ZTw8MTtrPWIrMXwwfWVsc2V7aD1lKzE2Ji0xNjtqPShofDApPT0wPzE6aDt3aGlsZSgxKXtrPXVuKGopfDA7aWYoKGt8MCkhPTApe2Y9MTI7YnJlYWt9az1jWzU2NjZdfDA7Y1s1NjY2XT1rKzA7aWYoKGt8MCk9PTApe2JyZWFrfXNjW2smMzFdKCl9aWYoKGZ8MCk9PTEyKXtjW2IrOD4+Ml09aztjW2I+PjJdPWh8MTtjW2IrND4+Ml09ZTticmVha31rPVhhKDQpfDA7Y1trPj4yXT0yMjY4MDt3YihrfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7TG4oa3wwLGd8MCxlfDApfDA7YVtrK2U+PjBdPTA7aT1kO3JldHVybn1mdW5jdGlvbiB0aChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gdWgoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7Y1thPj4yXT05OTI4O2Q9YSs0fDA7Zj0oY1tkPj4yXXwwKSsgLTR8MDtlPWNbZj4+Ml18MDtjW2Y+PjJdPWUrIC0xO2lmKChlKyAtMXwwKTwwKXt2bigoY1tkPj4yXXwwKSsgLTEyfDApfVJiKGF8MCk7dm4oYSk7aT1iO3JldHVybn1mdW5jdGlvbiB2aChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2I9aTtjW2E+PjJdPTk5Mjg7ZD1hKzR8MDtmPShjW2Q+PjJdfDApKyAtNHwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsgLTE7aWYoKGUrIC0xfDApPj0wKXtSYihhfDApO2k9YjtyZXR1cm59dm4oKGNbZD4+Ml18MCkrIC0xMnwwKTtSYihhfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gd2goYSl7YT1hfDA7dmFyIGI9MDtiPWk7cmcoYSk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geWgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gemgoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEFoKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBCaChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MDtiPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2c9Nn1lbHNle3doaWxlKDEpe2lmKChjfDApPT0oZHwwKSl7ZD0tMTticmVhayBhfWg9YVtjPj4wXXwwO2o9YVtlPj4wXXwwO2lmKGg8PDI0Pj4yNDxqPDwyND4+MjQpe2Q9LTE7YnJlYWsgYX1pZihqPDwyND4+MjQ8aDw8MjQ+PjI0KXtkPTE7YnJlYWsgYX1jPWMrMXwwO2U9ZSsxfDA7aWYoKGV8MCk9PShmfDApKXtnPTY7YnJlYWt9fX19d2hpbGUoMCk7aWYoKGd8MCk9PTYpe2Q9KGN8MCkhPShkfDApJjF9aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gQ2goYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2Q9aTtnPWU7aj1mLWd8MDtpZihqPj4+MD40Mjk0OTY3Mjc5KXtkZygpfWRve2lmKGo+Pj4wPDExKXthW2I+PjBdPWo8PDE7bT1iKzF8MH1lbHNle2s9aisxNiYtMTY7bD0oa3wwKT09MD8xOms7d2hpbGUoMSl7bT11bihsKXwwO2lmKChtfDApIT0wKXtoPTExO2JyZWFrfW09Y1s1NjY2XXwwO2NbNTY2Nl09bSswO2lmKChtfDApPT0wKXticmVha31zY1ttJjMxXSgpfWlmKChofDApPT0xMSl7Y1tiKzg+PjJdPW07Y1tiPj4yXT1rfDE7Y1tiKzQ+PjJdPWo7YnJlYWt9bT1YYSg0KXwwO2NbbT4+Ml09MjI2ODA7d2IobXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChlfDApPT0oZnwwKSl7YVttPj4wXT0wO2k9ZDtyZXR1cm59ZWxzZXtiPW19d2hpbGUoMSl7YVtiPj4wXT1hW2U+PjBdfDA7ZT1lKzF8MDtpZigoZXwwKT09KGZ8MCkpe2JyZWFrfWVsc2V7Yj1iKzF8MH19bT1tKyhmKygwLWcpKXwwO2FbbT4+MF09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIERoKGIsYyxkKXtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MDtiPWk7aWYoKGN8MCk9PShkfDApKXtlPTA7aT1iO3JldHVybiBlfDB9ZWxzZXtlPTB9ZG97ZT0oYVtjPj4wXXwwKSsoZTw8NCl8MDtmPWUmLTI2ODQzNTQ1NjtlPShmPj4+MjR8ZileZTtjPWMrMXwwfXdoaWxlKChjfDApIT0oZHwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gRWgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRmgoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEdoKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wO2E9aTthOmRve2lmKChlfDApPT0oZnwwKSl7Zz02fWVsc2V7d2hpbGUoMSl7aWYoKGJ8MCk9PShkfDApKXtkPS0xO2JyZWFrIGF9aD1jW2I+PjJdfDA7aj1jW2U+PjJdfDA7aWYoKGh8MCk8KGp8MCkpe2Q9LTE7YnJlYWsgYX1pZigoanwwKTwoaHwwKSl7ZD0xO2JyZWFrIGF9Yj1iKzR8MDtlPWUrNHwwO2lmKChlfDApPT0oZnwwKSl7Zz02O2JyZWFrfX19fXdoaWxlKDApO2lmKChnfDApPT02KXtkPShifDApIT0oZHwwKSYxfWk9YTtyZXR1cm4gZHwwfWZ1bmN0aW9uIEhoKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtkPWk7aD1lO2s9Zi1ofDA7aj1rPj4yO2lmKGo+Pj4wPjEwNzM3NDE4MDcpe2RnKCl9ZG97aWYoaj4+PjA8Mil7YVtiPj4wXT1rPj4+MTttPWIrNHwwfWVsc2V7az1qKzQmLTQ7bD1rPDwyO2w9KGx8MCk9PTA/MTpsO3doaWxlKDEpe209dW4obCl8MDtpZigobXwwKSE9MCl7Zz0xMTticmVha31tPWNbNTY2Nl18MDtjWzU2NjZdPW0rMDtpZigobXwwKT09MCl7YnJlYWt9c2NbbSYzMV0oKX1pZigoZ3wwKT09MTEpe2NbYis4Pj4yXT1tO2NbYj4+Ml09a3wxO2NbYis0Pj4yXT1qO2JyZWFrfW09WGEoNCl8MDtjW20+PjJdPTIyNjgwO3diKG18MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtpZigoZXwwKT09KGZ8MCkpe2NbbT4+Ml09MDtpPWQ7cmV0dXJufWI9ZisgLTQrKDAtaCl8MDtnPW07d2hpbGUoMSl7Y1tnPj4yXT1jW2U+PjJdO2U9ZSs0fDA7aWYoKGV8MCk9PShmfDApKXticmVha31lbHNle2c9Zys0fDB9fW09bSsoKGI+Pj4yKSsxPDwyKXwwO2NbbT4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIEloKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDthPWk7aWYoKGJ8MCk9PShkfDApKXtlPTA7aT1hO3JldHVybiBlfDB9ZWxzZXtlPTB9ZG97ZT0oY1tiPj4yXXwwKSsoZTw8NCl8MDtmPWUmLTI2ODQzNTQ1NjtlPShmPj4+MjR8ZileZTtiPWIrNHwwfXdoaWxlKChifDApIT0oZHwwKSk7aT1hO3JldHVybiBlfDB9ZnVuY3Rpb24gSmgoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gS2goYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIExoKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2s9aTtpPWkrNjR8MDtwPWs7dT1rKzQ4fDA7cT1rKzUyfDA7dD1rKzU2fDA7cz1rKzE2fDA7cj1rKzEyfDA7bD1rKzI0fDA7aWYoKGNbZys0Pj4yXSYxfDApPT0wKXtjW3E+PjJdPS0xO2w9Y1soY1tkPj4yXXwwKSsxNj4+Ml18MDtjW3M+PjJdPWNbZT4+Ml07Y1tyPj4yXT1jW2Y+PjJdO2NbdSswPj4yXT1jW3MrMD4+Ml07Y1twKzA+PjJdPWNbciswPj4yXTtpY1tsJjYzXSh0LGQsdSxwLGcsaCxxKTtsPWNbdD4+Ml18MDtjW2U+PjJdPWw7ZT1jW3E+PjJdfDA7aWYoKGV8MCk9PTApe2Fbaj4+MF09MH1lbHNlIGlmKChlfDApPT0xKXthW2o+PjBdPTF9ZWxzZXthW2o+PjBdPTE7Y1toPj4yXT00fWNbYj4+Ml09bDtpPWs7cmV0dXJufXE9ZysyOHwwO3I9Y1txPj4yXXwwO2Q9cis0fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1twPj4yXT0xMzQ1NjtjW3ArND4+Ml09MjA4O2NbcCs4Pj4yXT0wO2NnKDEzNDU2LHApfXM9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3Q9Y1tyKzg+PjJdfDA7aWYoKGNbcisxMj4+Ml18MCktdD4+Mj4+PjA+cz4+PjA/KG89Y1t0KyhzPDwyKT4+Ml18MCwob3wwKSE9MCk6MCl7dT1yKzR8MDtkPWNbdT4+Ml18MDtjW3U+PjJdPWQrIC0xO2lmKChkfDApPT0wKXtsY1tjWyhjW3I+PjJdfDApKzg+PjJdJjI1NV0ocil9cT1jW3E+PjJdfDA7ZD1xKzR8MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE7aWYoISgoY1szNDAwXXwwKT09LTEpKXtjW3A+PjJdPTEzNjAwO2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM2MDAscCl9cD0oY1sxMzYwND4+Ml18MCkrIC0xfDA7cj1jW3ErOD4+Ml18MDtpZigoY1txKzEyPj4yXXwwKS1yPj4yPj4+MD5wPj4+MD8obj1jW3IrKHA8PDIpPj4yXXwwLChufDApIT0wKTowKXt1PXErNHwwO2Q9Y1t1Pj4yXXwwO2NbdT4+Ml09ZCsgLTE7aWYoKGR8MCk9PTApe2xjW2NbKGNbcT4+Ml18MCkrOD4+Ml0mMjU1XShxKX1tY1tjWyhjW24+PjJdfDApKzI0Pj4yXSYxMjddKGwsbik7ZD1sKzEyfDA7bWNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mMTI3XShkLG4pO2Fbaj4+MF09KE1oKGUsY1tmPj4yXXwwLGwsbCsyNHwwLG8saCwxKXwwKT09KGx8MCkmMTtjW2I+PjJdPWNbZT4+Ml07aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tsKzIwPj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtsPj4wXSYxKT09MCl7aT1rO3JldHVybn1iPWNbbCs4Pj4yXXwwO2lmKChifDApPT0wKXtpPWs7cmV0dXJufXZuKGIpO2k9aztyZXR1cm59ZD1YYSg0KXwwO2NbZD4+Ml09MjEzMDQ7d2IoZHwwLDIxMzc2LDE5Nil9ZD1YYSg0KXwwO2NbZD4+Ml09MjEzMDQ7d2IoZHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gTWgoYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDttPWk7aT1pKzExMnwwO289bTt0PShnLWZ8MCkvMTJ8MDtpZih0Pj4+MD4xMDApe289dW4odCl8MDtpZigob3wwKT09MCl7QT1YYSg0KXwwO2NbQT4+Ml09MjI2ODA7d2IoQXwwLDIyNzI4LDIwNil9ZWxzZXtsPW99fWVsc2V7bD0wfXA9KGZ8MCk9PShnfDApO2lmKHApe3U9MH1lbHNle3E9Zjt1PTA7cj1vO3doaWxlKDEpe3M9YVtxPj4wXXwwO2lmKChzJjEpPT0wKXtzPShzJjI1NSk+Pj4xfWVsc2V7cz1jW3ErND4+Ml18MH1pZigoc3wwKT09MCl7YVtyPj4wXT0yO3U9dSsxfDA7dD10KyAtMXwwfWVsc2V7YVtyPj4wXT0xfXE9cSsxMnwwO2lmKChxfDApPT0oZ3wwKSl7YnJlYWt9ZWxzZXtyPXIrMXwwfX19cT0wO2E6d2hpbGUoMSl7dj0odHwwKSE9MDtyPXE7d2hpbGUoMSl7cT1jW2I+PjJdfDA7ZG97aWYoKHF8MCkhPTApe2lmKChjW3ErMTI+PjJdfDApPT0oY1txKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbcT4+Ml18MCkrMzY+PjJdJjEyN10ocSl8MCk9PS0xKXtjW2I+PjJdPTA7cT0wO2JyZWFrfWVsc2V7cT1jW2I+PjJdfDA7YnJlYWt9fX1lbHNle3E9MH19d2hpbGUoMCk7dz0ocXwwKT09MDtpZigoZXwwKSE9MCl7aWYoKGNbZSsxMj4+Ml18MCk9PShjW2UrMTY+PjJdfDApKXtBPShvY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDApPT0tMTtxPUE/MDplO2U9QT8wOmV9ZWxzZXtxPWV9fWVsc2V7cT0wO2U9MH1zPShxfDApPT0wO3g9Y1tiPj4yXXwwO2lmKCEoKHdecykmdikpe2JyZWFrIGF9cT1jW3grMTI+PjJdfDA7aWYoKHF8MCk9PShjW3grMTY+PjJdfDApKXtxPW9jW2NbKGNbeD4+Ml18MCkrMzY+PjJdJjEyN10oeCl8MH1lbHNle3E9ZFtxPj4wXXwwfXM9cSYyNTU7aWYoIWspe3M9eGNbY1soY1toPj4yXXwwKSsxMj4+Ml0mNjNdKGgscyl8MH1xPXIrMXwwO2lmKHApe3I9cX1lbHNle2JyZWFrfX1iOmRve2lmKGspe3g9MDt2PWY7dz1vO3doaWxlKDEpe2Rve2lmKChhW3c+PjBdfDApPT0xKXt5PWFbdj4+MF18MDt6PSh5JjEpPT0wO2lmKHope0E9disxfDB9ZWxzZXtBPWNbdis4Pj4yXXwwfWlmKCEoczw8MjQ+PjI0PT0oYVtBK3I+PjBdfDApKSl7YVt3Pj4wXT0wO3Q9dCsgLTF8MDticmVha31pZih6KXt4PSh5JjI1NSk+Pj4xfWVsc2V7eD1jW3YrND4+Ml18MH1pZigoeHwwKT09KHF8MCkpe2Fbdz4+MF09Mjt4PTE7dT11KzF8MDt0PXQrIC0xfDB9ZWxzZXt4PTF9fX13aGlsZSgwKTt2PXYrMTJ8MDtpZigodnwwKT09KGd8MCkpe2JyZWFrIGJ9dz13KzF8MH19ZWxzZXt4PTA7dj1mO3c9bzt3aGlsZSgxKXtkb3tpZigoYVt3Pj4wXXwwKT09MSl7aWYoKGFbdj4+MF0mMSk9PTApe3k9disxfDB9ZWxzZXt5PWNbdis4Pj4yXXwwfWlmKCEoczw8MjQ+PjI0PT0oeGNbY1soY1toPj4yXXwwKSsxMj4+Ml0mNjNdKGgsYVt5K3I+PjBdfDApfDApPDwyND4+MjQpKXthW3c+PjBdPTA7dD10KyAtMXwwO2JyZWFrfXg9YVt2Pj4wXXwwO2lmKCh4JjEpPT0wKXt4PSh4JjI1NSk+Pj4xfWVsc2V7eD1jW3YrND4+Ml18MH1pZigoeHwwKT09KHF8MCkpe2Fbdz4+MF09Mjt4PTE7dT11KzF8MDt0PXQrIC0xfDB9ZWxzZXt4PTF9fX13aGlsZSgwKTt2PXYrMTJ8MDtpZigodnwwKT09KGd8MCkpe2JyZWFrIGJ9dz13KzF8MH19fXdoaWxlKDApO2lmKCF4KXtjb250aW51ZX12PWNbYj4+Ml18MDtzPXYrMTJ8MDtyPWNbcz4+Ml18MDtpZigocnwwKT09KGNbdisxNj4+Ml18MCkpe29jW2NbKGNbdj4+Ml18MCkrNDA+PjJdJjEyN10odil8MH1lbHNle2Nbcz4+Ml09cisxfWlmKCh0K3V8MCk+Pj4wPDIpe2NvbnRpbnVlfWVsc2V7cz1mO3I9b313aGlsZSgxKXtpZigoYVtyPj4wXXwwKT09Mil7dj1hW3M+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbcys0Pj4yXXwwfWlmKCh2fDApIT0ocXwwKSl7YVtyPj4wXT0wO3U9dSsgLTF8MH19cz1zKzEyfDA7aWYoKHN8MCk9PShnfDApKXtjb250aW51ZSBhfWVsc2V7cj1yKzF8MH19fWRve2lmKCh4fDApIT0wKXtpZigoY1t4KzEyPj4yXXwwKT09KGNbeCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDApPT0tMSl7Y1tiPj4yXT0wO3g9MDticmVha31lbHNle3g9Y1tiPj4yXXwwO2JyZWFrfX19ZWxzZXt4PTB9fXdoaWxlKDApO2g9KHh8MCk9PTA7ZG97aWYoIXMpe2lmKChjW3ErMTI+PjJdfDApIT0oY1txKzE2Pj4yXXwwKSl7aWYoaCl7YnJlYWt9ZWxzZXtuPTg1O2JyZWFrfX1pZighKChvY1tjWyhjW3E+PjJdfDApKzM2Pj4yXSYxMjddKHEpfDApPT0tMSkpe2lmKCFoKXtuPTg1fX1lbHNle249ODN9fWVsc2V7bj04M319d2hpbGUoMCk7aWYoKG58MCk9PTgzP2g6MCl7bj04NX1pZigobnwwKT09ODUpe2Nbaj4+Ml09Y1tqPj4yXXwyfWM6ZG97aWYoIXApe2lmKChhW28+PjBdfDApPT0yKXtnPWZ9ZWxzZXt3aGlsZSgxKXtmPWYrMTJ8MDtvPW8rMXwwO2lmKChmfDApPT0oZ3wwKSl7bj05MDticmVhayBjfWlmKChhW28+PjBdfDApPT0yKXtnPWY7YnJlYWt9fX19ZWxzZXtuPTkwfX13aGlsZSgwKTtpZigobnwwKT09OTApe2Nbaj4+Ml09Y1tqPj4yXXw0fWlmKChsfDApPT0wKXtpPW07cmV0dXJuIGd8MH12bihsKTtpPW07cmV0dXJuIGd8MH1mdW5jdGlvbiBOaChiLGUsZixnLGgsaixrKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtlPWk7aT1pKzIyNHwwO3Y9ZSsxOTh8MDt1PWUrMTk2fDA7bj1lKzE2fDA7bz1lKzR8MDtxPWUrMTkyfDA7cz1lKzMyfDA7cj1lO3Q9ZSsyOHwwO3k9Y1tmPj4yXXwwO0E9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT04KXtnPTE2fWVsc2UgaWYoKGd8MCk9PTApe2c9MH1lbHNlIGlmKChnfDApPT02NCl7Zz04fWVsc2V7Zz0xMH1taShuLGgsdix1KTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qj1vKzF8MDt3PUI7Zj1vKzh8MH1lbHNle0I9bys4fDA7dz1vKzF8MDtmPUI7Qj1jW0I+PjJdfDB9Y1txPj4yXT1CO2Nbcj4+Ml09cztjW3Q+PjJdPTA7aD1vKzR8MDt4PWFbdT4+MF18MDt1PW8rOHwwO2E6d2hpbGUoMSl7aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9ej0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZih6KXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXope2JyZWFrIGF9fWVsc2V7bD0xOX19ZWxzZXtsPTE5fX13aGlsZSgwKTtpZigobHwwKT09MTkpe2w9MDtpZih6KXtBPTA7YnJlYWt9ZWxzZXtBPTB9fUQ9YVtvPj4wXXwwO0M9KEQmMSk9PTA7aWYoQyl7RT0oRCYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWlmKCgoY1txPj4yXXwwKS1CfDApPT0oRXwwKSl7aWYoQyl7Qj0oRCYyNTUpPj4+MTtFPShEJjI1NSk+Pj4xO0Q9Qjw8MX1lbHNle0I9Y1toPj4yXXwwO0U9Y1toPj4yXXwwO0Q9Qjw8MX1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUI8PDI7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtFPWFbbz4+MF18MDtpZigoRSYxKT09MCl7RD0xMH1lbHNle0Q9Y1tvPj4yXXwwO0U9RCYyNTU7RD0oRCYtMikrIC0xfDB9Qz0oRSYxKT09MDtpZihDKXtFPShFJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1EPDwxO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9d31lbHNle0M9Y1tmPj4yXXwwfWNbcT4+Ml09QytCO0I9Q31EPXkrMTJ8MDtFPWNbRD4+Ml18MDtDPXkrMTZ8MDtpZigoRXwwKT09KGNbQz4+Ml18MCkpe0U9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7RT1kW0U+PjBdfDB9aWYoKFhoKEUmMjU1LGcsQixxLHQseCxuLHMscix2KXwwKSE9MCl7YnJlYWt9ej1jW0Q+PjJdfDA7aWYoKHp8MCk9PShjW0M+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7Y29udGludWV9ZWxzZXtjW0Q+PjJdPXorMTtjb250aW51ZX19dj1hW24+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbbis0Pj4yXXwwfWlmKCh2fDApIT0wPyhwPWNbcj4+Ml18MCwocC1zfDApPDE2MCk6MCl7RT1jW3Q+PjJdfDA7Y1tyPj4yXT1wKzQ7Y1twPj4yXT1FfWNbaz4+Ml09Tm0oQixjW3E+PjJdfDAsaixnKXwwO3FrKG4scyxjW3I+PjJdfDAsaik7aWYoIXope2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9cD0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZihwKXticmVha31lbHNle2w9NzE7YnJlYWt9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXApe2w9NzF9fWVsc2V7bD02OX19ZWxzZXtsPTY5fX13aGlsZSgwKTtpZigobHwwKT09Njk/cDowKXtsPTcxfWlmKChsfDApPT03MSl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT15O2lmKCEoKGFbbz4+MF0mMSk9PTApPyhtPWNbdT4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoKGFbbj4+MF0mMSk9PTApe2k9ZTtyZXR1cm59bD1jW24rOD4+Ml18MDtpZigobHwwKT09MCl7aT1lO3JldHVybn12bihsKTtpPWU7cmV0dXJufWZ1bmN0aW9uIE9oKGIsZSxmLGcsaCxqLGspe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO2U9aTtpPWkrMjI0fDA7dj1lKzE5OHwwO3U9ZSsxOTZ8MDtuPWUrMTZ8MDtvPWUrNHwwO3E9ZSsxOTJ8MDtzPWUrMzJ8MDtyPWU7dD1lKzI4fDA7eT1jW2Y+PjJdfDA7QT1jW2c+PjJdfDA7Zz1jW2grND4+Ml0mNzQ7aWYoKGd8MCk9PTApe2c9MH1lbHNlIGlmKChnfDApPT04KXtnPTE2fWVsc2UgaWYoKGd8MCk9PTY0KXtnPTh9ZWxzZXtnPTEwfW1pKG4saCx2LHUpO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtCPW8rMXwwO3c9QjtmPW8rOHwwfWVsc2V7Qj1vKzh8MDt3PW8rMXwwO2Y9QjtCPWNbQj4+Ml18MH1jW3E+PjJdPUI7Y1tyPj4yXT1zO2NbdD4+Ml09MDtoPW8rNHwwO3g9YVt1Pj4wXXwwO3U9bys4fDA7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH16PSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHope2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZigheil7YnJlYWsgYX19ZWxzZXtsPTE5fX1lbHNle2w9MTl9fXdoaWxlKDApO2lmKChsfDApPT0xOSl7bD0wO2lmKHope0E9MDticmVha31lbHNle0E9MH19RD1hW28+PjBdfDA7Qz0oRCYxKT09MDtpZihDKXtFPShEJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9aWYoKChjW3E+PjJdfDApLUJ8MCk9PShFfDApKXtpZihDKXtCPShEJjI1NSk+Pj4xO0U9KEQmMjU1KT4+PjE7RD1CPDwxfWVsc2V7Qj1jW2g+PjJdfDA7RT1jW2g+PjJdfDA7RD1CPDwxfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09Qjw8MjticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO0U9YVtvPj4wXXwwO2lmKChFJjEpPT0wKXtEPTEwfWVsc2V7RD1jW28+PjJdfDA7RT1EJjI1NTtEPShEJi0yKSsgLTF8MH1DPShFJjEpPT0wO2lmKEMpe0U9KEUmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUQ8PDE7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz13fWVsc2V7Qz1jW2Y+PjJdfDB9Y1txPj4yXT1DK0I7Qj1DfUQ9eSsxMnwwO0U9Y1tEPj4yXXwwO0M9eSsxNnwwO2lmKChFfDApPT0oY1tDPj4yXXwwKSl7RT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtFPWRbRT4+MF18MH1pZigoWGgoRSYyNTUsZyxCLHEsdCx4LG4scyxyLHYpfDApIT0wKXticmVha316PWNbRD4+Ml18MDtpZigoenwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeT4+Ml18MCkrNDA+PjJdJjEyN10oeSl8MDtjb250aW51ZX1lbHNle2NbRD4+Ml09eisxO2NvbnRpbnVlfX12PWFbbj4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tuKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHA9Y1tyPj4yXXwwLChwLXN8MCk8MTYwKTowKXtFPWNbdD4+Ml18MDtjW3I+PjJdPXArNDtjW3A+PjJdPUV9RD1NbShCLGNbcT4+Ml18MCxqLGcpfDA7RT1rO2NbRT4+Ml09RDtjW0UrND4+Ml09STtxayhuLHMsY1tyPj4yXXwwLGopO2lmKCF6KXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXA9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYocCl7YnJlYWt9ZWxzZXtsPTcxO2JyZWFrfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCFwKXtsPTcxfX1lbHNle2w9Njl9fWVsc2V7bD02OX19d2hpbGUoMCk7aWYoKGx8MCk9PTY5P3A6MCl7bD03MX1pZigobHwwKT09NzEpe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09eTtpZighKChhW28+PjBdJjEpPT0wKT8obT1jW3U+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW24+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWw9Y1tuKzg+PjJdfDA7aWYoKGx8MCk9PTApe2k9ZTtyZXR1cm59dm4obCk7aT1lO3JldHVybn1mdW5jdGlvbiBQaChlLGYsZyxoLGosayxsKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MDtmPWk7aT1pKzIyNHwwO3c9ZisxOTh8MDt2PWYrMTk2fDA7bz1mKzE2fDA7cD1mKzR8MDtyPWYrMTkyfDA7dD1mKzMyfDA7cz1mO3U9ZisyOHwwO3o9Y1tnPj4yXXwwO0I9Y1toPj4yXXwwO2g9Y1tqKzQ+PjJdJjc0O2lmKChofDApPT04KXtoPTE2fWVsc2UgaWYoKGh8MCk9PTY0KXtoPTh9ZWxzZSBpZigoaHwwKT09MCl7aD0wfWVsc2V7aD0xMH1taShvLGosdyx2KTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtoZyhwLDEwKTtpZigoYVtwPj4wXSYxKT09MCl7Qz1wKzF8MDt4PUM7Zz1wKzh8MH1lbHNle0M9cCs4fDA7eD1wKzF8MDtnPUM7Qz1jW0M+PjJdfDB9Y1tyPj4yXT1DO2Nbcz4+Ml09dDtjW3U+PjJdPTA7aj1wKzR8MDt5PWFbdj4+MF18MDt2PXArOHwwO2E6d2hpbGUoMSl7aWYoKHp8MCkhPTApe2lmKChjW3orMTI+PjJdfDApPT0oY1t6KzE2Pj4yXXwwKSl7Rj0ob2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwKT09LTE7ej1GPzA6en19ZWxzZXt6PTB9QT0oenwwKT09MDtkb3tpZigoQnwwKSE9MCl7aWYoKGNbQisxMj4+Ml18MCkhPShjW0IrMTY+PjJdfDApKXtpZihBKXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MCk9PS0xKSl7aWYoIUEpe2JyZWFrIGF9fWVsc2V7bT0xOX19ZWxzZXttPTE5fX13aGlsZSgwKTtpZigobXwwKT09MTkpe209MDtpZihBKXtCPTA7YnJlYWt9ZWxzZXtCPTB9fUU9YVtwPj4wXXwwO0Q9KEUmMSk9PTA7aWYoRCl7Rj0oRSYyNTUpPj4+MX1lbHNle0Y9Y1tqPj4yXXwwfWlmKCgoY1tyPj4yXXwwKS1DfDApPT0oRnwwKSl7aWYoRCl7Qz0oRSYyNTUpPj4+MTtGPShFJjI1NSk+Pj4xO0U9Qzw8MX1lbHNle0M9Y1tqPj4yXXwwO0Y9Y1tqPj4yXXwwO0U9Qzw8MX1kb3tpZighKEY+Pj4wPEU+Pj4wKSl7aWYoRCl7YVtwK0UrMT4+MF09MDthW3A+PjBdPUM8PDI7YnJlYWt9ZWxzZXthWyhjW3Y+PjJdfDApK0U+PjBdPTA7Y1tqPj4yXT1FO2JyZWFrfX1lbHNle2hnKHAsRS1GfDApfX13aGlsZSgwKTtGPWFbcD4+MF18MDtpZigoRiYxKT09MCl7RT0xMH1lbHNle0U9Y1twPj4yXXwwO0Y9RSYyNTU7RT0oRSYtMikrIC0xfDB9RD0oRiYxKT09MDtpZihEKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW2o+PjJdfDB9ZG97aWYoIShGPj4+MDxFPj4+MCkpe2lmKEQpe2FbcCtFKzE+PjBdPTA7YVtwPj4wXT1FPDwxO2JyZWFrfWVsc2V7YVsoY1t2Pj4yXXwwKStFPj4wXT0wO2Nbaj4+Ml09RTticmVha319ZWxzZXtoZyhwLEUtRnwwKX19d2hpbGUoMCk7aWYoKGFbcD4+MF0mMSk9PTApe0Q9eH1lbHNle0Q9Y1tnPj4yXXwwfWNbcj4+Ml09RCtDO0M9RH1FPXorMTJ8MDtGPWNbRT4+Ml18MDtEPXorMTZ8MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe0Y9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7Rj1kW0Y+PjBdfDB9aWYoKFhoKEYmMjU1LGgsQyxyLHUseSxvLHQscyx3KXwwKSE9MCl7YnJlYWt9QT1jW0U+PjJdfDA7aWYoKEF8MCk9PShjW0Q+PjJdfDApKXtvY1tjWyhjW3o+PjJdfDApKzQwPj4yXSYxMjddKHopfDA7Y29udGludWV9ZWxzZXtjW0U+PjJdPUErMTtjb250aW51ZX19dz1hW28+PjBdfDA7aWYoKHcmMSk9PTApe3c9KHcmMjU1KT4+PjF9ZWxzZXt3PWNbbys0Pj4yXXwwfWlmKCh3fDApIT0wPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7Rj1jW3U+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1GfWJbbD4+MV09TG0oQyxjW3I+PjJdfDAsayxoKXwwO3FrKG8sdCxjW3M+PjJdfDAsayk7aWYoIUEpe2lmKChjW3orMTI+PjJdfDApPT0oY1t6KzE2Pj4yXXwwKSl7Rj0ob2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwKT09LTE7ej1GPzA6en19ZWxzZXt6PTB9cT0oenwwKT09MDtkb3tpZigoQnwwKSE9MCl7aWYoKGNbQisxMj4+Ml18MCkhPShjW0IrMTY+PjJdfDApKXtpZihxKXticmVha31lbHNle209NzE7YnJlYWt9fWlmKCEoKG9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MCk9PS0xKSl7aWYoIXEpe209NzF9fWVsc2V7bT02OX19ZWxzZXttPTY5fX13aGlsZSgwKTtpZigobXwwKT09Njk/cTowKXttPTcxfWlmKChtfDApPT03MSl7Y1trPj4yXT1jW2s+PjJdfDJ9Y1tlPj4yXT16O2lmKCEoKGFbcD4+MF0mMSk9PTApPyhuPWNbdj4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZjtyZXR1cm59bT1jW28rOD4+Ml18MDtpZigobXwwKT09MCl7aT1mO3JldHVybn12bihtKTtpPWY7cmV0dXJufWZ1bmN0aW9uIFFoKGIsZSxmLGcsaCxqLGspe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO2U9aTtpPWkrMjI0fDA7dj1lKzE5OHwwO3U9ZSsxOTZ8MDtuPWUrMTZ8MDtvPWUrNHwwO3E9ZSsxOTJ8MDtzPWUrMzJ8MDtyPWU7dD1lKzI4fDA7eT1jW2Y+PjJdfDA7QT1jW2c+PjJdfDA7Zz1jW2grND4+Ml0mNzQ7aWYoKGd8MCk9PTY0KXtnPTh9ZWxzZSBpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT0wKXtnPTB9ZWxzZXtnPTEwfW1pKG4saCx2LHUpO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtCPW8rMXwwO3c9QjtmPW8rOHwwfWVsc2V7Qj1vKzh8MDt3PW8rMXwwO2Y9QjtCPWNbQj4+Ml18MH1jW3E+PjJdPUI7Y1tyPj4yXT1zO2NbdD4+Ml09MDtoPW8rNHwwO3g9YVt1Pj4wXXwwO3U9bys4fDA7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH16PSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHope2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZigheil7YnJlYWsgYX19ZWxzZXtsPTE5fX1lbHNle2w9MTl9fXdoaWxlKDApO2lmKChsfDApPT0xOSl7bD0wO2lmKHope0E9MDticmVha31lbHNle0E9MH19RD1hW28+PjBdfDA7Qz0oRCYxKT09MDtpZihDKXtFPShEJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9aWYoKChjW3E+PjJdfDApLUJ8MCk9PShFfDApKXtpZihDKXtCPShEJjI1NSk+Pj4xO0U9KEQmMjU1KT4+PjE7RD1CPDwxfWVsc2V7Qj1jW2g+PjJdfDA7RT1jW2g+PjJdfDA7RD1CPDwxfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09Qjw8MjticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO0U9YVtvPj4wXXwwO2lmKChFJjEpPT0wKXtEPTEwfWVsc2V7RD1jW28+PjJdfDA7RT1EJjI1NTtEPShEJi0yKSsgLTF8MH1DPShFJjEpPT0wO2lmKEMpe0U9KEUmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUQ8PDE7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz13fWVsc2V7Qz1jW2Y+PjJdfDB9Y1txPj4yXT1DK0I7Qj1DfUQ9eSsxMnwwO0U9Y1tEPj4yXXwwO0M9eSsxNnwwO2lmKChFfDApPT0oY1tDPj4yXXwwKSl7RT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtFPWRbRT4+MF18MH1pZigoWGgoRSYyNTUsZyxCLHEsdCx4LG4scyxyLHYpfDApIT0wKXticmVha316PWNbRD4+Ml18MDtpZigoenwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeT4+Ml18MCkrNDA+PjJdJjEyN10oeSl8MDtjb250aW51ZX1lbHNle2NbRD4+Ml09eisxO2NvbnRpbnVlfX12PWFbbj4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tuKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHA9Y1tyPj4yXXwwLChwLXN8MCk8MTYwKTowKXtFPWNbdD4+Ml18MDtjW3I+PjJdPXArNDtjW3A+PjJdPUV9Y1trPj4yXT1LbShCLGNbcT4+Ml18MCxqLGcpfDA7cWsobixzLGNbcj4+Ml18MCxqKTtpZigheil7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH1wPSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHApe2JyZWFrfWVsc2V7bD03MTticmVha319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZighcCl7bD03MX19ZWxzZXtsPTY5fX1lbHNle2w9Njl9fXdoaWxlKDApO2lmKChsfDApPT02OT9wOjApe2w9NzF9aWYoKGx8MCk9PTcxKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPXk7aWYoISgoYVtvPj4wXSYxKT09MCk/KG09Y1t1Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtuPj4wXSYxKT09MCl7aT1lO3JldHVybn1sPWNbbis4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWU7cmV0dXJufXZuKGwpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gUmgoYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7ZT1pO2k9aSsyMjR8MDt2PWUrMTk4fDA7dT1lKzE5NnwwO249ZSsxNnwwO289ZSs0fDA7cT1lKzE5MnwwO3M9ZSszMnwwO3I9ZTt0PWUrMjh8MDt5PWNbZj4+Ml18MDtBPWNbZz4+Ml18MDtnPWNbaCs0Pj4yXSY3NDtpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09NjQpe2c9OH1lbHNle2c9MTB9bWkobixoLHYsdSk7Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTA7aGcobywxMCk7aWYoKGFbbz4+MF0mMSk9PTApe0I9bysxfDA7dz1CO2Y9bys4fDB9ZWxzZXtCPW8rOHwwO3c9bysxfDA7Zj1CO0I9Y1tCPj4yXXwwfWNbcT4+Ml09QjtjW3I+PjJdPXM7Y1t0Pj4yXT0wO2g9bys0fDA7eD1hW3U+PjBdfDA7dT1vKzh8MDthOndoaWxlKDEpe2lmKCh5fDApIT0wKXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXo9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYoeil7YnJlYWt9ZWxzZXticmVhayBhfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCF6KXticmVhayBhfX1lbHNle2w9MTl9fWVsc2V7bD0xOX19d2hpbGUoMCk7aWYoKGx8MCk9PTE5KXtsPTA7aWYoeil7QT0wO2JyZWFrfWVsc2V7QT0wfX1EPWFbbz4+MF18MDtDPShEJjEpPT0wO2lmKEMpe0U9KEQmMjU1KT4+PjF9ZWxzZXtFPWNbaD4+Ml18MH1pZigoKGNbcT4+Ml18MCktQnwwKT09KEV8MCkpe2lmKEMpe0I9KEQmMjU1KT4+PjE7RT0oRCYyNTUpPj4+MTtEPUI8PDF9ZWxzZXtCPWNbaD4+Ml18MDtFPWNbaD4+Ml18MDtEPUI8PDF9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1CPDwyO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7RT1hW28+PjBdfDA7aWYoKEUmMSk9PTApe0Q9MTB9ZWxzZXtEPWNbbz4+Ml18MDtFPUQmMjU1O0Q9KEQmLTIpKyAtMXwwfUM9KEUmMSk9PTA7aWYoQyl7RT0oRSYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWRve2lmKCEoRT4+PjA8RD4+PjApKXtpZihDKXthW28rRCsxPj4wXT0wO2Fbbz4+MF09RDw8MTticmVha31lbHNle2FbKGNbdT4+Ml18MCkrRD4+MF09MDtjW2g+PjJdPUQ7YnJlYWt9fWVsc2V7aGcobyxELUV8MCl9fXdoaWxlKDApO2lmKChhW28+PjBdJjEpPT0wKXtDPXd9ZWxzZXtDPWNbZj4+Ml18MH1jW3E+PjJdPUMrQjtCPUN9RD15KzEyfDA7RT1jW0Q+PjJdfDA7Qz15KzE2fDA7aWYoKEV8MCk9PShjW0M+PjJdfDApKXtFPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0U9ZFtFPj4wXXwwfWlmKChYaChFJjI1NSxnLEIscSx0LHgsbixzLHIsdil8MCkhPTApe2JyZWFrfXo9Y1tEPj4yXXwwO2lmKCh6fDApPT0oY1tDPj4yXXwwKSl7b2NbY1soY1t5Pj4yXXwwKSs0MD4+Ml0mMTI3XSh5KXwwO2NvbnRpbnVlfWVsc2V7Y1tEPj4yXT16KzE7Y29udGludWV9fXY9YVtuPj4wXXwwO2lmKCh2JjEpPT0wKXt2PSh2JjI1NSk+Pj4xfWVsc2V7dj1jW24rND4+Ml18MH1pZigodnwwKSE9MD8ocD1jW3I+PjJdfDAsKHAtc3wwKTwxNjApOjApe0U9Y1t0Pj4yXXwwO2Nbcj4+Ml09cCs0O2NbcD4+Ml09RX1jW2s+PjJdPUptKEIsY1txPj4yXXwwLGosZyl8MDtxayhuLHMsY1tyPj4yXXwwLGopO2lmKCF6KXtpZigoY1t5KzEyPj4yXXwwKT09KGNbeSsxNj4+Ml18MCkpe0U9KG9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MCk9PS0xO3k9RT8wOnl9fWVsc2V7eT0wfXA9KHl8MCk9PTA7ZG97aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApIT0oY1tBKzE2Pj4yXXwwKSl7aWYocCl7YnJlYWt9ZWxzZXtsPTcxO2JyZWFrfX1pZighKChvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMSkpe2lmKCFwKXtsPTcxfX1lbHNle2w9Njl9fWVsc2V7bD02OX19d2hpbGUoMCk7aWYoKGx8MCk9PTY5P3A6MCl7bD03MX1pZigobHwwKT09NzEpe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09eTtpZighKChhW28+PjBdJjEpPT0wKT8obT1jW3U+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW24+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWw9Y1tuKzg+PjJdfDA7aWYoKGx8MCk9PTApe2k9ZTtyZXR1cm59dm4obCk7aT1lO3JldHVybn1mdW5jdGlvbiBTaChiLGUsZixnLGgsaixrKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtlPWk7aT1pKzIyNHwwO3Y9ZSsxOTh8MDt1PWUrMTk2fDA7bj1lKzE2fDA7bz1lKzR8MDtxPWUrMTkyfDA7cz1lKzMyfDA7cj1lO3Q9ZSsyOHwwO3k9Y1tmPj4yXXwwO0E9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09OCl7Zz0xNn1lbHNlIGlmKChnfDApPT02NCl7Zz04fWVsc2V7Zz0xMH1taShuLGgsdix1KTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qj1vKzF8MDt3PUI7Zj1vKzh8MH1lbHNle0I9bys4fDA7dz1vKzF8MDtmPUI7Qj1jW0I+PjJdfDB9Y1txPj4yXT1CO2Nbcj4+Ml09cztjW3Q+PjJdPTA7aD1vKzR8MDt4PWFbdT4+MF18MDt1PW8rOHwwO2E6d2hpbGUoMSl7aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RT0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7eT1FPzA6eX19ZWxzZXt5PTB9ej0oeXwwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZih6KXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xKSl7aWYoIXope2JyZWFrIGF9fWVsc2V7bD0xOX19ZWxzZXtsPTE5fX13aGlsZSgwKTtpZigobHwwKT09MTkpe2w9MDtpZih6KXtBPTA7YnJlYWt9ZWxzZXtBPTB9fUQ9YVtvPj4wXXwwO0M9KEQmMSk9PTA7aWYoQyl7RT0oRCYyNTUpPj4+MX1lbHNle0U9Y1toPj4yXXwwfWlmKCgoY1txPj4yXXwwKS1CfDApPT0oRXwwKSl7aWYoQyl7Qj0oRCYyNTUpPj4+MTtFPShEJjI1NSk+Pj4xO0Q9Qjw8MX1lbHNle0I9Y1toPj4yXXwwO0U9Y1toPj4yXXwwO0Q9Qjw8MX1kb3tpZighKEU+Pj4wPEQ+Pj4wKSl7aWYoQyl7YVtvK0QrMT4+MF09MDthW28+PjBdPUI8PDI7YnJlYWt9ZWxzZXthWyhjW3U+PjJdfDApK0Q+PjBdPTA7Y1toPj4yXT1EO2JyZWFrfX1lbHNle2hnKG8sRC1FfDApfX13aGlsZSgwKTtFPWFbbz4+MF18MDtpZigoRSYxKT09MCl7RD0xMH1lbHNle0Q9Y1tvPj4yXXwwO0U9RCYyNTU7RD0oRCYtMikrIC0xfDB9Qz0oRSYxKT09MDtpZihDKXtFPShFJjI1NSk+Pj4xfWVsc2V7RT1jW2g+PjJdfDB9ZG97aWYoIShFPj4+MDxEPj4+MCkpe2lmKEMpe2FbbytEKzE+PjBdPTA7YVtvPj4wXT1EPDwxO2JyZWFrfWVsc2V7YVsoY1t1Pj4yXXwwKStEPj4wXT0wO2NbaD4+Ml09RDticmVha319ZWxzZXtoZyhvLEQtRXwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9d31lbHNle0M9Y1tmPj4yXXwwfWNbcT4+Ml09QytCO0I9Q31EPXkrMTJ8MDtFPWNbRD4+Ml18MDtDPXkrMTZ8MDtpZigoRXwwKT09KGNbQz4+Ml18MCkpe0U9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7RT1kW0U+PjBdfDB9aWYoKFhoKEUmMjU1LGcsQixxLHQseCxuLHMscix2KXwwKSE9MCl7YnJlYWt9ej1jW0Q+PjJdfDA7aWYoKHp8MCk9PShjW0M+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7Y29udGludWV9ZWxzZXtjW0Q+PjJdPXorMTtjb250aW51ZX19dj1hW24+PjBdfDA7aWYoKHYmMSk9PTApe3Y9KHYmMjU1KT4+PjF9ZWxzZXt2PWNbbis0Pj4yXXwwfWlmKCh2fDApIT0wPyhwPWNbcj4+Ml18MCwocC1zfDApPDE2MCk6MCl7RT1jW3Q+PjJdfDA7Y1tyPj4yXT1wKzQ7Y1twPj4yXT1FfUQ9SW0oQixjW3E+PjJdfDAsaixnKXwwO0U9aztjW0U+PjJdPUQ7Y1tFKzQ+PjJdPUk7cWsobixzLGNbcj4+Ml18MCxqKTtpZigheil7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApKXtFPShvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTt5PUU/MDp5fX1lbHNle3k9MH1wPSh5fDApPT0wO2Rve2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKSE9KGNbQSsxNj4+Ml18MCkpe2lmKHApe2JyZWFrfWVsc2V7bD03MTticmVha319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZighcCl7bD03MX19ZWxzZXtsPTY5fX1lbHNle2w9Njl9fXdoaWxlKDApO2lmKChsfDApPT02OT9wOjApe2w9NzF9aWYoKGx8MCk9PTcxKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPXk7aWYoISgoYVtvPj4wXSYxKT09MCk/KG09Y1t1Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZigoYVtuPj4wXSYxKT09MCl7aT1lO3JldHVybn1sPWNbbis4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWU7cmV0dXJufXZuKGwpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gVGgoYixlLGYsaCxqLGssbCl7Yj1ifDA7ZT1lfDA7Zj1mfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtlPWk7aT1pKzI1NnwwO3g9ZSsyMDh8MDt6PWUrMjAwfDA7dz1lKzI0MHwwO289ZTtwPWUrMTg4fDA7dj1lKzE4NHwwO3Q9ZSsxNnwwO3M9ZSsxNzZ8MDtyPWUrMTgwfDA7dT1lKzI0MXwwO3k9ZSsyNDJ8MDtBPWNbZj4+Ml18MDtEPWNbaD4+Ml18MDtuaShvLGoseCx6LHcpO2NbcCswPj4yXT0wO2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0wO2hnKHAsMTApO2lmKChhW3A+PjBdJjEpPT0wKXtFPXArMXwwO2g9RTtmPXArOHwwfWVsc2V7RT1wKzh8MDtoPXArMXwwO2Y9RTtFPWNbRT4+Ml18MH1jW3Y+PjJdPUU7Y1tzPj4yXT10O2Nbcj4+Ml09MDthW3U+PjBdPTE7YVt5Pj4wXT02OTtqPXArNHwwO3o9YVt6Pj4wXXwwO0I9YVt3Pj4wXXwwO3c9cCs4fDA7YTp3aGlsZSgxKXtpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCk9PShjW0ErMTY+PjJdfDApKXtIPShvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMTtBPUg/MDpBfX1lbHNle0E9MH1DPShBfDApPT0wO2Rve2lmKChEfDApIT0wKXtpZigoY1tEKzEyPj4yXXwwKSE9KGNbRCsxNj4+Ml18MCkpe2lmKEMpe2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwKT09LTEpKXtpZighQyl7YnJlYWsgYX19ZWxzZXttPTE1fX1lbHNle209MTV9fXdoaWxlKDApO2lmKChtfDApPT0xNSl7bT0wO2lmKEMpe0Q9MDticmVha31lbHNle0Q9MH19Rz1hW3A+PjBdfDA7Rj0oRyYxKT09MDtpZihGKXtIPShHJjI1NSk+Pj4xfWVsc2V7SD1jW2o+PjJdfDB9aWYoKChjW3Y+PjJdfDApLUV8MCk9PShIfDApKXtpZihGKXtFPShHJjI1NSk+Pj4xO0c9KEcmMjU1KT4+PjE7SD1FPDwxfWVsc2V7RT1jW2o+PjJdfDA7Rz1jW2o+PjJdfDA7SD1FPDwxfWRve2lmKCEoRz4+PjA8SD4+PjApKXtpZihGKXthW3ArSCsxPj4wXT0wO2FbcD4+MF09RTw8MjticmVha31lbHNle2FbKGNbdz4+Ml18MCkrSD4+MF09MDtjW2o+PjJdPUg7YnJlYWt9fWVsc2V7aGcocCxILUd8MCl9fXdoaWxlKDApO0g9YVtwPj4wXXwwO2lmKChIJjEpPT0wKXtHPTEwfWVsc2V7Rz1jW3A+PjJdfDA7SD1HJjI1NTtHPShHJi0yKSsgLTF8MH1GPShIJjEpPT0wO2lmKEYpe0g9KEgmMjU1KT4+PjF9ZWxzZXtIPWNbaj4+Ml18MH1kb3tpZighKEg+Pj4wPEc+Pj4wKSl7aWYoRil7YVtwK0crMT4+MF09MDthW3A+PjBdPUc8PDE7YnJlYWt9ZWxzZXthWyhjW3c+PjJdfDApK0c+PjBdPTA7Y1tqPj4yXT1HO2JyZWFrfX1lbHNle2hnKHAsRy1IfDApfX13aGlsZSgwKTtpZigoYVtwPj4wXSYxKT09MCl7Rj1ofWVsc2V7Rj1jW2Y+PjJdfDB9Y1t2Pj4yXT1GK0U7RT1GfUc9QSsxMnwwO0g9Y1tHPj4yXXwwO0Y9QSsxNnwwO2lmKChIfDApPT0oY1tGPj4yXXwwKSl7SD1vY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDB9ZWxzZXtIPWRbSD4+MF18MH1pZigob2koSCYyNTUsdSx5LEUsdix6LEIsbyx0LHMscix4KXwwKSE9MCl7YnJlYWt9Qz1jW0c+PjJdfDA7aWYoKEN8MCk9PShjW0Y+PjJdfDApKXtvY1tjWyhjW0E+PjJdfDApKzQwPj4yXSYxMjddKEEpfDA7Y29udGludWV9ZWxzZXtjW0c+PjJdPUMrMTtjb250aW51ZX19eD1hW28+PjBdfDA7aWYoKHgmMSk9PTApe3g9KHgmMjU1KT4+PjF9ZWxzZXt4PWNbbys0Pj4yXXwwfWlmKCgoeHwwKSE9MD8oYVt1Pj4wXXwwKSE9MDowKT8ocT1jW3M+PjJdfDAsKHEtdHwwKTwxNjApOjApe0g9Y1tyPj4yXXwwO2Nbcz4+Ml09cSs0O2NbcT4+Ml09SH1nW2w+PjJdPStIbShFLGNbdj4+Ml18MCxrKTtxayhvLHQsY1tzPj4yXXwwLGspO2lmKCFDKXtpZigoY1tBKzEyPj4yXXwwKT09KGNbQSsxNj4+Ml18MCkpe0g9KG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xO0E9SD8wOkF9fWVsc2V7QT0wfWw9KEF8MCk9PTA7ZG97aWYoKER8MCkhPTApe2lmKChjW0QrMTI+PjJdfDApIT0oY1tEKzE2Pj4yXXwwKSl7aWYobCl7YnJlYWt9ZWxzZXttPTY4O2JyZWFrfX1pZighKChvY1tjWyhjW0Q+PjJdfDApKzM2Pj4yXSYxMjddKEQpfDApPT0tMSkpe2lmKCFsKXttPTY4fX1lbHNle209NjZ9fWVsc2V7bT02Nn19d2hpbGUoMCk7aWYoKG18MCk9PTY2P2w6MCl7bT02OH1pZigobXwwKT09Njgpe2Nbaz4+Ml09Y1trPj4yXXwyfWNbYj4+Ml09QTtpZighKChhW3A+PjBdJjEpPT0wKT8obj1jW3c+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKChhW28+PjBdJjEpPT0wKXtpPWU7cmV0dXJufW09Y1tvKzg+PjJdfDA7aWYoKG18MCk9PTApe2k9ZTtyZXR1cm59dm4obSk7aT1lO3JldHVybn1mdW5jdGlvbiBVaChiLGUsZixnLGosayxsKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wO2U9aTtpPWkrMjU2fDA7eD1lKzIwOHwwO3o9ZSsyMDB8MDt3PWUrMjQwfDA7bz1lO3A9ZSsxODh8MDt2PWUrMTg0fDA7dD1lKzE2fDA7cz1lKzE3NnwwO3I9ZSsxODB8MDt1PWUrMjQxfDA7eT1lKzI0MnwwO0E9Y1tmPj4yXXwwO0Q9Y1tnPj4yXXwwO25pKG8saix4LHosdyk7Y1twKzA+PjJdPTA7Y1twKzQ+PjJdPTA7Y1twKzg+PjJdPTA7aGcocCwxMCk7aWYoKGFbcD4+MF0mMSk9PTApe0U9cCsxfDA7Zz1FO2Y9cCs4fDB9ZWxzZXtFPXArOHwwO2c9cCsxfDA7Zj1FO0U9Y1tFPj4yXXwwfWNbdj4+Ml09RTtjW3M+PjJdPXQ7Y1tyPj4yXT0wO2FbdT4+MF09MTthW3k+PjBdPTY5O2o9cCs0fDA7ej1hW3o+PjBdfDA7Qj1hW3c+PjBdfDA7dz1wKzh8MDthOndoaWxlKDEpe2lmKChBfDApIT0wKXtpZigoY1tBKzEyPj4yXXwwKT09KGNbQSsxNj4+Ml18MCkpe0g9KG9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MCk9PS0xO0E9SD8wOkF9fWVsc2V7QT0wfUM9KEF8MCk9PTA7ZG97aWYoKER8MCkhPTApe2lmKChjW0QrMTI+PjJdfDApIT0oY1tEKzE2Pj4yXXwwKSl7aWYoQyl7YnJlYWt9ZWxzZXticmVhayBhfX1pZighKChvY1tjWyhjW0Q+PjJdfDApKzM2Pj4yXSYxMjddKEQpfDApPT0tMSkpe2lmKCFDKXticmVhayBhfX1lbHNle209MTV9fWVsc2V7bT0xNX19d2hpbGUoMCk7aWYoKG18MCk9PTE1KXttPTA7aWYoQyl7RD0wO2JyZWFrfWVsc2V7RD0wfX1HPWFbcD4+MF18MDtGPShHJjEpPT0wO2lmKEYpe0g9KEcmMjU1KT4+PjF9ZWxzZXtIPWNbaj4+Ml18MH1pZigoKGNbdj4+Ml18MCktRXwwKT09KEh8MCkpe2lmKEYpe0U9KEcmMjU1KT4+PjE7Rz0oRyYyNTUpPj4+MTtIPUU8PDF9ZWxzZXtFPWNbaj4+Ml18MDtHPWNbaj4+Ml18MDtIPUU8PDF9ZG97aWYoIShHPj4+MDxIPj4+MCkpe2lmKEYpe2FbcCtIKzE+PjBdPTA7YVtwPj4wXT1FPDwyO2JyZWFrfWVsc2V7YVsoY1t3Pj4yXXwwKStIPj4wXT0wO2Nbaj4+Ml09SDticmVha319ZWxzZXtoZyhwLEgtR3wwKX19d2hpbGUoMCk7SD1hW3A+PjBdfDA7aWYoKEgmMSk9PTApe0c9MTB9ZWxzZXtHPWNbcD4+Ml18MDtIPUcmMjU1O0c9KEcmLTIpKyAtMXwwfUY9KEgmMSk9PTA7aWYoRil7SD0oSCYyNTUpPj4+MX1lbHNle0g9Y1tqPj4yXXwwfWRve2lmKCEoSD4+PjA8Rz4+PjApKXtpZihGKXthW3ArRysxPj4wXT0wO2FbcD4+MF09Rzw8MTticmVha31lbHNle2FbKGNbdz4+Ml18MCkrRz4+MF09MDtjW2o+PjJdPUc7YnJlYWt9fWVsc2V7aGcocCxHLUh8MCl9fXdoaWxlKDApO2lmKChhW3A+PjBdJjEpPT0wKXtGPWd9ZWxzZXtGPWNbZj4+Ml18MH1jW3Y+PjJdPUYrRTtFPUZ9Rz1BKzEyfDA7SD1jW0c+PjJdfDA7Rj1BKzE2fDA7aWYoKEh8MCk9PShjW0Y+PjJdfDApKXtIPW9jW2NbKGNbQT4+Ml18MCkrMzY+PjJdJjEyN10oQSl8MH1lbHNle0g9ZFtIPj4wXXwwfWlmKChvaShIJjI1NSx1LHksRSx2LHosQixvLHQscyxyLHgpfDApIT0wKXticmVha31DPWNbRz4+Ml18MDtpZigoQ3wwKT09KGNbRj4+Ml18MCkpe29jW2NbKGNbQT4+Ml18MCkrNDA+PjJdJjEyN10oQSl8MDtjb250aW51ZX1lbHNle2NbRz4+Ml09QysxO2NvbnRpbnVlfX14PWFbbz4+MF18MDtpZigoeCYxKT09MCl7eD0oeCYyNTUpPj4+MX1lbHNle3g9Y1tvKzQ+PjJdfDB9aWYoKCh4fDApIT0wPyhhW3U+PjBdfDApIT0wOjApPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7SD1jW3I+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1IfWhbbD4+M109K0dtKEUsY1t2Pj4yXXwwLGspO3FrKG8sdCxjW3M+PjJdfDAsayk7aWYoIUMpe2lmKChjW0ErMTI+PjJdfDApPT0oY1tBKzE2Pj4yXXwwKSl7SD0ob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTE7QT1IPzA6QX19ZWxzZXtBPTB9bD0oQXwwKT09MDtkb3tpZigoRHwwKSE9MCl7aWYoKGNbRCsxMj4+Ml18MCkhPShjW0QrMTY+PjJdfDApKXtpZihsKXticmVha31lbHNle209Njg7YnJlYWt9fWlmKCEoKG9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MCk9PS0xKSl7aWYoIWwpe209Njh9fWVsc2V7bT02Nn19ZWxzZXttPTY2fX13aGlsZSgwKTtpZigobXwwKT09NjY/bDowKXttPTY4fWlmKChtfDApPT02OCl7Y1trPj4yXT1jW2s+PjJdfDJ9Y1tiPj4yXT1BO2lmKCEoKGFbcD4+MF0mMSk9PTApPyhuPWNbdz4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZTtyZXR1cm59bT1jW28rOD4+Ml18MDtpZigobXwwKT09MCl7aT1lO3JldHVybn12bihtKTtpPWU7cmV0dXJufWZ1bmN0aW9uIFZoKGIsZSxmLGcsaixrLGwpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7ZT1pO2k9aSsyNTZ8MDt4PWUrMjA4fDA7ej1lKzIwMHwwO3c9ZSsyNDB8MDtvPWU7cD1lKzE4OHwwO3Y9ZSsxODR8MDt0PWUrMTZ8MDtzPWUrMTc2fDA7cj1lKzE4MHwwO3U9ZSsyNDF8MDt5PWUrMjQyfDA7QT1jW2Y+PjJdfDA7RD1jW2c+PjJdfDA7bmkobyxqLHgseix3KTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtoZyhwLDEwKTtpZigoYVtwPj4wXSYxKT09MCl7RT1wKzF8MDtnPUU7Zj1wKzh8MH1lbHNle0U9cCs4fDA7Zz1wKzF8MDtmPUU7RT1jW0U+PjJdfDB9Y1t2Pj4yXT1FO2Nbcz4+Ml09dDtjW3I+PjJdPTA7YVt1Pj4wXT0xO2FbeT4+MF09Njk7aj1wKzR8MDt6PWFbej4+MF18MDtCPWFbdz4+MF18MDt3PXArOHwwO2E6d2hpbGUoMSl7aWYoKEF8MCkhPTApe2lmKChjW0ErMTI+PjJdfDApPT0oY1tBKzE2Pj4yXXwwKSl7SD0ob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTE7QT1IPzA6QX19ZWxzZXtBPTB9Qz0oQXwwKT09MDtkb3tpZigoRHwwKSE9MCl7aWYoKGNbRCsxMj4+Ml18MCkhPShjW0QrMTY+PjJdfDApKXtpZihDKXticmVha31lbHNle2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MCk9PS0xKSl7aWYoIUMpe2JyZWFrIGF9fWVsc2V7bT0xNX19ZWxzZXttPTE1fX13aGlsZSgwKTtpZigobXwwKT09MTUpe209MDtpZihDKXtEPTA7YnJlYWt9ZWxzZXtEPTB9fUc9YVtwPj4wXXwwO0Y9KEcmMSk9PTA7aWYoRil7SD0oRyYyNTUpPj4+MX1lbHNle0g9Y1tqPj4yXXwwfWlmKCgoY1t2Pj4yXXwwKS1FfDApPT0oSHwwKSl7aWYoRil7RT0oRyYyNTUpPj4+MTtHPShHJjI1NSk+Pj4xO0g9RTw8MX1lbHNle0U9Y1tqPj4yXXwwO0c9Y1tqPj4yXXwwO0g9RTw8MX1kb3tpZighKEc+Pj4wPEg+Pj4wKSl7aWYoRil7YVtwK0grMT4+MF09MDthW3A+PjBdPUU8PDI7YnJlYWt9ZWxzZXthWyhjW3c+PjJdfDApK0g+PjBdPTA7Y1tqPj4yXT1IO2JyZWFrfX1lbHNle2hnKHAsSC1HfDApfX13aGlsZSgwKTtIPWFbcD4+MF18MDtpZigoSCYxKT09MCl7Rz0xMH1lbHNle0c9Y1twPj4yXXwwO0g9RyYyNTU7Rz0oRyYtMikrIC0xfDB9Rj0oSCYxKT09MDtpZihGKXtIPShIJjI1NSk+Pj4xfWVsc2V7SD1jW2o+PjJdfDB9ZG97aWYoIShIPj4+MDxHPj4+MCkpe2lmKEYpe2FbcCtHKzE+PjBdPTA7YVtwPj4wXT1HPDwxO2JyZWFrfWVsc2V7YVsoY1t3Pj4yXXwwKStHPj4wXT0wO2Nbaj4+Ml09RzticmVha319ZWxzZXtoZyhwLEctSHwwKX19d2hpbGUoMCk7aWYoKGFbcD4+MF0mMSk9PTApe0Y9Z31lbHNle0Y9Y1tmPj4yXXwwfWNbdj4+Ml09RitFO0U9Rn1HPUErMTJ8MDtIPWNbRz4+Ml18MDtGPUErMTZ8MDtpZigoSHwwKT09KGNbRj4+Ml18MCkpe0g9b2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwfWVsc2V7SD1kW0g+PjBdfDB9aWYoKG9pKEgmMjU1LHUseSxFLHYseixCLG8sdCxzLHIseCl8MCkhPTApe2JyZWFrfUM9Y1tHPj4yXXwwO2lmKChDfDApPT0oY1tGPj4yXXwwKSl7b2NbY1soY1tBPj4yXXwwKSs0MD4+Ml0mMTI3XShBKXwwO2NvbnRpbnVlfWVsc2V7Y1tHPj4yXT1DKzE7Y29udGludWV9fXg9YVtvPj4wXXwwO2lmKCh4JjEpPT0wKXt4PSh4JjI1NSk+Pj4xfWVsc2V7eD1jW28rND4+Ml18MH1pZigoKHh8MCkhPTA/KGFbdT4+MF18MCkhPTA6MCk/KHE9Y1tzPj4yXXwwLChxLXR8MCk8MTYwKTowKXtIPWNbcj4+Ml18MDtjW3M+PjJdPXErNDtjW3E+PjJdPUh9aFtsPj4zXT0rRm0oRSxjW3Y+PjJdfDAsayk7cWsobyx0LGNbcz4+Ml18MCxrKTtpZighQyl7aWYoKGNbQSsxMj4+Ml18MCk9PShjW0ErMTY+PjJdfDApKXtIPShvY1tjWyhjW0E+PjJdfDApKzM2Pj4yXSYxMjddKEEpfDApPT0tMTtBPUg/MDpBfX1lbHNle0E9MH1sPShBfDApPT0wO2Rve2lmKChEfDApIT0wKXtpZigoY1tEKzEyPj4yXXwwKSE9KGNbRCsxNj4+Ml18MCkpe2lmKGwpe2JyZWFrfWVsc2V7bT02ODticmVha319aWYoISgob2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwKT09LTEpKXtpZighbCl7bT02OH19ZWxzZXttPTY2fX1lbHNle209NjZ9fXdoaWxlKDApO2lmKChtfDApPT02Nj9sOjApe209Njh9aWYoKG18MCk9PTY4KXtjW2s+PjJdPWNbaz4+Ml18Mn1jW2I+PjJdPUE7aWYoISgoYVtwPj4wXSYxKT09MCk/KG49Y1t3Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZigoYVtvPj4wXSYxKT09MCl7aT1lO3JldHVybn1tPWNbbys4Pj4yXXwwO2lmKChtfDApPT0wKXtpPWU7cmV0dXJufXZuKG0pO2k9ZTtyZXR1cm59ZnVuY3Rpb24gV2goYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtlPWk7aT1pKzIyNHwwO249ZTtvPWUrMTg4fDA7bT1lKzE3NnwwO3c9ZSsxNnwwO3E9Y1toKzI4Pj4yXXwwO0Q9cSs0fDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ1NjtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDU2LG4pfWg9KGNbMTM0NjA+PjJdfDApKyAtMXwwO3I9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcj4+Mj4+PjA+aD4+PjA/KHA9Y1tyKyhoPDwyKT4+Ml18MCwocHwwKSE9MCk6MCl7dWNbY1soY1twPj4yXXwwKSszMj4+Ml0mMzFdKHAsMTIwMTYsMTIwNDJ8MCxvKXwwO0M9cSs0fDA7RD1jW0M+PjJdfDA7Y1tDPj4yXT1EKyAtMTtpZigoRHwwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfWNbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2g9ejtxPW0rOHwwfWVsc2V7ej1tKzh8MDtoPW0rMXwwO3E9ejt6PWNbej4+Ml18MH11PW0rNHwwO3Y9bysyNHwwO3M9bysyNXwwO3Q9bysyNnwwO3I9bztwPW0rOHwwO3k9Y1tmPj4yXXwwO3g9MDtBPXo7YTp3aGlsZSgxKXtpZigoeXwwKSE9MCl7aWYoKGNbeSsxMj4+Ml18MCk9PShjW3krMTY+PjJdfDApPyhvY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDApPT0tMTowKXtjW2Y+PjJdPTA7eT0wfX1lbHNle3k9MH1DPSh5fDApPT0wO0I9Y1tnPj4yXXwwO2Rve2lmKChCfDApIT0wKXtpZigoY1tCKzEyPj4yXXwwKSE9KGNbQisxNj4+Ml18MCkpe2lmKEMpe2JyZWFrfWVsc2V7YnJlYWsgYX19aWYoISgob2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwKT09LTEpKXtpZihDKXticmVha31lbHNle2JyZWFrIGF9fWVsc2V7Y1tnPj4yXT0wO2w9MjY7YnJlYWt9fWVsc2V7bD0yNn19d2hpbGUoMCk7aWYoKGx8MCk9PTI2PyhsPTAsQyk6MCl7YnJlYWt9RD1hW20+PjBdfDA7Qj0oRCYxKT09MDtpZihCKXtDPShEJjI1NSk+Pj4xfWVsc2V7Qz1jW3U+PjJdfDB9aWYoKEEtenwwKT09KEN8MCkpe2lmKEIpe0E9KEQmMjU1KT4+PjE7Qz0oRCYyNTUpPj4+MTt6PUE8PDF9ZWxzZXtBPWNbdT4+Ml18MDtDPWNbdT4+Ml18MDt6PUE8PDF9ZG97aWYoIShDPj4+MDx6Pj4+MCkpe2lmKEIpe2FbbSt6KzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKSt6Pj4wXT0wO2NbdT4+Ml09ejticmVha319ZWxzZXtoZyhtLHotQ3wwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe3o9MTB9ZWxzZXt6PWNbbT4+Ml18MDtDPXomMjU1O3o9KHomLTIpKyAtMXwwfUI9KEMmMSk9PTA7aWYoQil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t1Pj4yXXwwfWRve2lmKCEoQz4+PjA8ej4+PjApKXtpZihCKXthW20reisxPj4wXT0wO2FbbT4+MF09ejw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrej4+MF09MDtjW3U+PjJdPXo7YnJlYWt9fWVsc2V7aGcobSx6LUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWh9ZWxzZXt6PWNbcT4+Ml18MH1BPXorQXwwfUI9Y1t5KzEyPj4yXXwwO2lmKChCfDApPT0oY1t5KzE2Pj4yXXwwKSl7eT1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXt5PWRbQj4+MF18MH1CPXkmMjU1O3k9KEF8MCk9PSh6fDApO2Rve2lmKHkpe0M9KGFbdj4+MF18MCk9PUI8PDI0Pj4yNDtpZighQz8hKChhW3M+PjBdfDApPT1CPDwyND4+MjQpOjApe0M9bztsPTYxO2JyZWFrfWFbQT4+MF09Qz80Mzo0NTtBPUErMXwwO3g9MH1lbHNle0M9bztsPTYxfX13aGlsZSgwKTtkb3tpZigobHwwKT09NjEpe3doaWxlKDEpe2w9MDtpZigoYVtDPj4wXXwwKT09Qjw8MjQ+PjI0KXticmVha31DPUMrMXwwO2lmKChDfDApPT0odHwwKSl7Qz10O2JyZWFrfWVsc2V7bD02MX19Qj1DLXJ8MDtpZigoQnwwKT4yMyl7YnJlYWsgYX1pZigoQnwwKTwyMil7YVtBPj4wXT1hWzEyMDE2K0I+PjBdfDA7QT1BKzF8MDt4PXgrMXwwO2JyZWFrfWlmKHkpe3o9QTticmVhayBhfWlmKChBLXp8MCk+PTMpe2JyZWFrIGF9aWYoKGFbQSsgLTE+PjBdfDApIT00OCl7YnJlYWsgYX1hW0E+PjBdPWFbMTIwMTYrQj4+MF18MDtBPUErMXwwO3g9MH19d2hpbGUoMCk7eT1jW2Y+PjJdfDA7Qj15KzEyfDA7Qz1jW0I+PjJdfDA7aWYoKEN8MCk9PShjW3krMTY+PjJdfDApKXtvY1tjWyhjW3k+PjJdfDApKzQwPj4yXSYxMjddKHkpfDA7RD13O3c9RDtjb250aW51ZX1lbHNle2NbQj4+Ml09QysxO0Q9dzt3PUQ7Y29udGludWV9fWFbeiszPj4wXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1EPWNbMzM0MF18MDtjW24+PjJdPWs7aWYoKFloKHosRCxuKXwwKSE9MSl7Y1tqPj4yXT00fWs9Y1tmPj4yXXwwO2lmKChrfDApIT0wKXtpZigoY1trKzEyPj4yXXwwKT09KGNbaysxNj4+Ml18MCk/KG9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MCk9PS0xOjApe2NbZj4+Ml09MDtmPTB9ZWxzZXtmPWt9fWVsc2V7Zj0wfWs9KGZ8MCk9PTA7bj1jW2c+PjJdfDA7ZG97aWYoKG58MCkhPTApe2lmKChjW24rMTI+PjJdfDApIT0oY1tuKzE2Pj4yXXwwKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTkyO2JyZWFrfX1pZighKChvY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDApPT0tMSkpe2lmKGspe2JyZWFrfWVsc2V7bD05MjticmVha319ZWxzZXtjW2c+PjJdPTA7bD05MDticmVha319ZWxzZXtsPTkwfX13aGlsZSgwKTtpZigobHwwKT09OTA/azowKXtsPTkyfWlmKChsfDApPT05Mil7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1mO2lmKChhW20+PjBdJjEpPT0wKXtpPWU7cmV0dXJufWo9Y1twPj4yXXwwO2lmKChqfDApPT0wKXtpPWU7cmV0dXJufXZuKGopO2k9ZTtyZXR1cm59RD1YYSg0KXwwO2NbRD4+Ml09MjEzMDQ7d2IoRHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gWGgoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MDtuPWk7cD1jW2Y+PjJdfDA7bz0ocHwwKT09KGV8MCk7ZG97aWYobyl7cT0oYVttKzI0Pj4wXXwwKT09Yjw8MjQ+PjI0O2lmKCFxPyEoKGFbbSsyNT4+MF18MCk9PWI8PDI0Pj4yNCk6MCl7YnJlYWt9Y1tmPj4yXT1lKzE7YVtlPj4wXT1xPzQzOjQ1O2NbZz4+Ml09MDtxPTA7aT1uO3JldHVybiBxfDB9fXdoaWxlKDApO3E9YVtqPj4wXXwwO2lmKChxJjEpPT0wKXtqPShxJjI1NSk+Pj4xfWVsc2V7aj1jW2orND4+Ml18MH1pZigoanwwKSE9MD9iPDwyND4+MjQ9PWg8PDI0Pj4yNDowKXtvPWNbbD4+Ml18MDtpZigoby1rfDApPj0xNjApe3E9MDtpPW47cmV0dXJuIHF8MH1xPWNbZz4+Ml18MDtjW2w+PjJdPW8rNDtjW28+PjJdPXE7Y1tnPj4yXT0wO3E9MDtpPW47cmV0dXJuIHF8MH1sPW0rMjZ8MDtrPW07d2hpbGUoMSl7aWYoKGFbaz4+MF18MCk9PWI8PDI0Pj4yNCl7YnJlYWt9az1rKzF8MDtpZigoa3wwKT09KGx8MCkpe2s9bDticmVha319bT1rLW18MDtpZigobXwwKT4yMyl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigoZHwwKT09MTB8KGR8MCk9PTgpe2lmKChtfDApPj0oZHwwKSl7cT0tMTtpPW47cmV0dXJuIHF8MH19ZWxzZSBpZigoZHwwKT09MTY/KG18MCk+PTIyOjApe2lmKG8pe3E9LTE7aT1uO3JldHVybiBxfDB9aWYoKHAtZXwwKT49Myl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigoYVtwKyAtMT4+MF18MCkhPTQ4KXtxPS0xO2k9bjtyZXR1cm4gcXwwfWNbZz4+Ml09MDtxPWFbMTIwMTYrbT4+MF18MDtjW2Y+PjJdPXArMTthW3A+PjBdPXE7cT0wO2k9bjtyZXR1cm4gcXwwfXE9YVsxMjAxNittPj4wXXwwO2NbZj4+Ml09cCsxO2FbcD4+MF09cTtjW2c+PjJdPShjW2c+PjJdfDApKzE7cT0wO2k9bjtyZXR1cm4gcXwwfWZ1bmN0aW9uIFloKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDtlPWk7aT1pKzE2fDA7Zj1lO2NbZj4+Ml09ZDtiPWliKGJ8MCl8MDthPU1hKGF8MCwxMjA1NixmfDApfDA7aWYoKGJ8MCk9PTApe2k9ZTtyZXR1cm4gYXwwfWliKGJ8MCl8MDtpPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiBaaChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBfaChhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gJGgoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7az1pO2k9aSs2NHwwO3A9azt1PWsrNDh8MDtxPWsrNTJ8MDt0PWsrNTZ8MDtzPWsrMTZ8MDtyPWsrMTJ8MDtsPWsrMjR8MDtpZigoY1tnKzQ+PjJdJjF8MCk9PTApe2NbcT4+Ml09LTE7bD1jWyhjW2Q+PjJdfDApKzE2Pj4yXXwwO2Nbcz4+Ml09Y1tlPj4yXTtjW3I+PjJdPWNbZj4+Ml07Y1t1KzA+PjJdPWNbcyswPj4yXTtjW3ArMD4+Ml09Y1tyKzA+PjJdO2ljW2wmNjNdKHQsZCx1LHAsZyxoLHEpO2w9Y1t0Pj4yXXwwO2NbZT4+Ml09bDtlPWNbcT4+Ml18MDtpZigoZXwwKT09MSl7YVtqPj4wXT0xfWVsc2UgaWYoKGV8MCk9PTApe2Fbaj4+MF09MH1lbHNle2Fbaj4+MF09MTtjW2g+PjJdPTR9Y1tiPj4yXT1sO2k9aztyZXR1cm59cT1nKzI4fDA7cj1jW3E+PjJdfDA7ZD1yKzR8MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW3A+PjJdPTEzNDQ4O2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM0NDgscCl9cz0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dD1jW3IrOD4+Ml18MDtpZigoY1tyKzEyPj4yXXwwKS10Pj4yPj4+MD5zPj4+MD8obz1jW3QrKHM8PDIpPj4yXXwwLChvfDApIT0wKTowKXt1PXIrNHwwO2Q9Y1t1Pj4yXXwwO2NbdT4+Ml09ZCsgLTE7aWYoKGR8MCk9PTApe2xjW2NbKGNbcj4+Ml18MCkrOD4+Ml0mMjU1XShyKX1xPWNbcT4+Ml18MDtkPXErNHwwO2NbZD4+Ml09KGNbZD4+Ml18MCkrMTtpZighKChjWzM0MDJdfDApPT0tMSkpe2NbcD4+Ml09MTM2MDg7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzYwOCxwKX1wPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtyPWNbcSs4Pj4yXXwwO2lmKChjW3ErMTI+PjJdfDApLXI+PjI+Pj4wPnA+Pj4wPyhuPWNbcisocDw8Mik+PjJdfDAsKG58MCkhPTApOjApe3U9cSs0fDA7ZD1jW3U+PjJdfDA7Y1t1Pj4yXT1kKyAtMTtpZigoZHwwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfW1jW2NbKGNbbj4+Ml18MCkrMjQ+PjJdJjEyN10obCxuKTtkPWwrMTJ8MDttY1tjWyhjW24+PjJdfDApKzI4Pj4yXSYxMjddKGQsbik7YVtqPj4wXT0oYWkoZSxjW2Y+PjJdfDAsbCxsKzI0fDAsbyxoLDEpfDApPT0obHwwKSYxO2NbYj4+Ml09Y1tlPj4yXTtpZighKChhW2Q+PjBdJjEpPT0wKT8obT1jW2wrMjA+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKChhW2w+PjBdJjEpPT0wKXtpPWs7cmV0dXJufWI9Y1tsKzg+PjJdfDA7aWYoKGJ8MCk9PTApe2k9aztyZXR1cm59dm4oYik7aT1rO3JldHVybn1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBhaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO2w9aTtpPWkrMTEyfDA7bj1sO3M9KGYtZXwwKS8xMnwwO2lmKHM+Pj4wPjEwMCl7bj11bihzKXwwO2lmKChufDApPT0wKXt6PVhhKDQpfDA7Y1t6Pj4yXT0yMjY4MDt3Yih6fDAsMjI3MjgsMjA2KX1lbHNle2s9bn19ZWxzZXtrPTB9bz0oZXwwKT09KGZ8MCk7aWYobyl7dD0wfWVsc2V7cD1lO3Q9MDtxPW47d2hpbGUoMSl7cj1hW3A+PjBdfDA7aWYoKHImMSk9PTApe3I9KHImMjU1KT4+PjF9ZWxzZXtyPWNbcCs0Pj4yXXwwfWlmKChyfDApPT0wKXthW3E+PjBdPTI7dD10KzF8MDtzPXMrIC0xfDB9ZWxzZXthW3E+PjBdPTF9cD1wKzEyfDA7aWYoKHB8MCk9PShmfDApKXticmVha31lbHNle3E9cSsxfDB9fX1wPTA7YTp3aGlsZSgxKXt1PShzfDApIT0wO3E9cDt3aGlsZSgxKXtyPWNbYj4+Ml18MDtkb3tpZigocnwwKSE9MCl7cD1jW3IrMTI+PjJdfDA7aWYoKHB8MCk9PShjW3IrMTY+PjJdfDApKXtwPW9jW2NbKGNbcj4+Ml18MCkrMzY+PjJdJjEyN10ocil8MH1lbHNle3A9Y1twPj4yXXwwfWlmKChwfDApPT0tMSl7Y1tiPj4yXT0wO3I9MTticmVha31lbHNle3I9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7cj0xfX13aGlsZSgwKTtpZigoZHwwKT09MCl7cD0wO3c9MTtkPTB9ZWxzZXtwPWNbZCsxMj4+Ml18MDtpZigocHwwKT09KGNbZCsxNj4+Ml18MCkpe3A9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7cD1jW3A+PjJdfDB9ej0ocHwwKT09LTE7cD16PzA6ZDt3PXo/MTowO2Q9ej8wOmR9dj1jW2I+PjJdfDA7aWYoISgocl53KSZ1KSl7YnJlYWsgYX1wPWNbdisxMj4+Ml18MDtpZigocHwwKT09KGNbdisxNj4+Ml18MCkpe3I9b2NbY1soY1t2Pj4yXXwwKSszNj4+Ml0mMTI3XSh2KXwwfWVsc2V7cj1jW3A+PjJdfDB9aWYoIWope3I9eGNbY1soY1tnPj4yXXwwKSsyOD4+Ml0mNjNdKGcscil8MH1wPXErMXwwO2lmKG8pe3E9cH1lbHNle2JyZWFrfX1iOmRve2lmKGope3c9MDt1PWU7dj1uO3doaWxlKDEpe2Rve2lmKChhW3Y+PjBdfDApPT0xKXt4PWFbdT4+MF18MDt5PSh4JjEpPT0wO2lmKHkpe3o9dSs0fDB9ZWxzZXt6PWNbdSs4Pj4yXXwwfWlmKChyfDApIT0oY1t6KyhxPDwyKT4+Ml18MCkpe2Fbdj4+MF09MDtzPXMrIC0xfDA7YnJlYWt9aWYoeSl7dz0oeCYyNTUpPj4+MX1lbHNle3c9Y1t1KzQ+PjJdfDB9aWYoKHd8MCk9PShwfDApKXthW3Y+PjBdPTI7dz0xO3Q9dCsxfDA7cz1zKyAtMXwwfWVsc2V7dz0xfX19d2hpbGUoMCk7dT11KzEyfDA7aWYoKHV8MCk9PShmfDApKXticmVhayBifXY9disxfDB9fWVsc2V7dz0wO3U9ZTt2PW47d2hpbGUoMSl7ZG97aWYoKGFbdj4+MF18MCk9PTEpe2lmKChhW3U+PjBdJjEpPT0wKXt4PXUrNHwwfWVsc2V7eD1jW3UrOD4+Ml18MH1pZigocnwwKSE9KHhjW2NbKGNbZz4+Ml18MCkrMjg+PjJdJjYzXShnLGNbeCsocTw8Mik+PjJdfDApfDApKXthW3Y+PjBdPTA7cz1zKyAtMXwwO2JyZWFrfXc9YVt1Pj4wXXwwO2lmKCh3JjEpPT0wKXt3PSh3JjI1NSk+Pj4xfWVsc2V7dz1jW3UrND4+Ml18MH1pZigod3wwKT09KHB8MCkpe2Fbdj4+MF09Mjt3PTE7dD10KzF8MDtzPXMrIC0xfDB9ZWxzZXt3PTF9fX13aGlsZSgwKTt1PXUrMTJ8MDtpZigodXwwKT09KGZ8MCkpe2JyZWFrIGJ9dj12KzF8MH19fXdoaWxlKDApO2lmKCF3KXtjb250aW51ZX11PWNbYj4+Ml18MDtyPXUrMTJ8MDtxPWNbcj4+Ml18MDtpZigocXwwKT09KGNbdSsxNj4+Ml18MCkpe29jW2NbKGNbdT4+Ml18MCkrNDA+PjJdJjEyN10odSl8MH1lbHNle2Nbcj4+Ml09cSs0fWlmKChzK3R8MCk+Pj4wPDIpe2NvbnRpbnVlfWVsc2V7cj1lO3E9bn13aGlsZSgxKXtpZigoYVtxPj4wXXwwKT09Mil7dT1hW3I+PjBdfDA7aWYoKHUmMSk9PTApe3U9KHUmMjU1KT4+PjF9ZWxzZXt1PWNbcis0Pj4yXXwwfWlmKCh1fDApIT0ocHwwKSl7YVtxPj4wXT0wO3Q9dCsgLTF8MH19cj1yKzEyfDA7aWYoKHJ8MCk9PShmfDApKXtjb250aW51ZSBhfWVsc2V7cT1xKzF8MH19fWRve2lmKCh2fDApIT0wKXtqPWNbdisxMj4+Ml18MDtpZigoanwwKT09KGNbdisxNj4+Ml18MCkpe2o9b2NbY1soY1t2Pj4yXXwwKSszNj4+Ml0mMTI3XSh2KXwwfWVsc2V7aj1jW2o+PjJdfDB9aWYoKGp8MCk9PS0xKXtjW2I+PjJdPTA7Yj0xO2JyZWFrfWVsc2V7Yj0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtiPTF9fXdoaWxlKDApO2lmKChwfDApIT0wKXtqPWNbcCsxMj4+Ml18MDtpZigoanwwKT09KGNbcCsxNj4+Ml18MCkpe2o9b2NbY1soY1twPj4yXXwwKSszNj4+Ml0mMTI3XShwKXwwfWVsc2V7aj1jW2o+PjJdfDB9aWYoISgoanwwKT09LTEpKXtpZighYil7bT04OH19ZWxzZXttPTg2fX1lbHNle209ODZ9aWYoKG18MCk9PTg2P2I6MCl7bT04OH1pZigobXwwKT09ODgpe2NbaD4+Ml09Y1toPj4yXXwyfWM6ZG97aWYoIW8pe2lmKChhW24+PjBdfDApPT0yKXtmPWV9ZWxzZXt3aGlsZSgxKXtlPWUrMTJ8MDtuPW4rMXwwO2lmKChlfDApPT0oZnwwKSl7bT05MzticmVhayBjfWlmKChhW24+PjBdfDApPT0yKXtmPWU7YnJlYWt9fX19ZWxzZXttPTkzfX13aGlsZSgwKTtpZigobXwwKT09OTMpe2NbaD4+Ml09Y1toPj4yXXw0fWlmKChrfDApPT0wKXtpPWw7cmV0dXJuIGZ8MH12bihrKTtpPWw7cmV0dXJuIGZ8MH1mdW5jdGlvbiBiaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtkPWk7aT1pKzMwNHwwO3U9ZCsxNjB8MDtvPWQrMjgwfDA7bj1kKzI2NHwwO209ZCsyODR8MDt0PWQrMzAwfDA7cj1kO3M9ZCsyNzZ8MDtxPWQrMjk2fDA7dz1jW2U+PjJdfDA7eT1jW2Y+PjJdfDA7Zj1jW2crND4+Ml0mNzQ7aWYoKGZ8MCk9PTY0KXtmPTh9ZWxzZSBpZigoZnwwKT09MCl7Zj0wfWVsc2UgaWYoKGZ8MCk9PTgpe2Y9MTZ9ZWxzZXtmPTEwfXBpKG4sZyx1LG8pO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2U9ejtnPW0rOHwwfWVsc2V7ej1tKzh8MDtlPW0rMXwwO2c9ejt6PWNbej4+Ml18MH1jW3Q+PjJdPXo7Y1tzPj4yXT1yO2NbcT4+Ml09MDt2PW0rNHwwO3g9Y1tvPj4yXXwwO289bSs4fDA7d2hpbGUoMSl7aWYoKHd8MCk9PTApe0E9MTt3PTB9ZWxzZXtBPWNbdysxMj4+Ml18MDtpZigoQXwwKT09KGNbdysxNj4+Ml18MCkpe0E9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7QT1jW0E+PjJdfDB9Qz0oQXwwKT09LTE7QT1DPzE6MDt3PUM/MDp3fWlmKCh5fDApIT0wKXtCPWNbeSsxMj4+Ml18MDtpZigoQnwwKT09KGNbeSsxNj4+Ml18MCkpe0I9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZighQSl7YnJlYWt9fWVsc2V7az0yMH19ZWxzZXtrPTIwfWlmKChrfDApPT0yMCl7az0wO2lmKEEpe3k9MDticmVha31lbHNle3k9MH19QT1hW20+PjBdfDA7Qj0oQSYxKT09MDtpZihCKXtDPShBJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9aWYoKChjW3Q+PjJdfDApLXp8MCk9PShDfDApKXtpZihCKXtEPShBJjI1NSk+Pj4xO3o9KEEmMjU1KT4+PjE7Qz1EPDwxO0E9RH1lbHNle0E9Y1t2Pj4yXXwwO3o9Y1t2Pj4yXXwwO0M9QTw8MX1kb3tpZighKHo+Pj4wPEM+Pj4wKSl7aWYoQil7YVttK0MrMT4+MF09MDthW20+PjBdPUE8PDI7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0M+PjBdPTA7Y1t2Pj4yXT1DO2JyZWFrfX1lbHNle2hnKG0sQy16fDApfX13aGlsZSgwKTtDPWFbbT4+MF18MDtpZigoQyYxKT09MCl7Qj0xMH1lbHNle0I9Y1ttPj4yXXwwO0M9QiYyNTU7Qj0oQiYtMikrIC0xfDB9ej0oQyYxKT09MDtpZih6KXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9ZG97aWYoIShDPj4+MDxCPj4+MCkpe2lmKHope2FbbStCKzE+PjBdPTA7YVttPj4wXT1CPDwxO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStCPj4wXT0wO2Nbdj4+Ml09QjticmVha319ZWxzZXtoZyhtLEItQ3wwKX19d2hpbGUoMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9ZX1lbHNle3o9Y1tnPj4yXXwwfWNbdD4+Ml09eitBfUE9dysxMnwwO0M9Y1tBPj4yXXwwO0I9dysxNnwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7Qz1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtDPWNbQz4+Ml18MH1pZigobGkoQyxmLHosdCxxLHgsbixyLHMsdSl8MCkhPTApe2JyZWFrfUM9Y1tBPj4yXXwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7b2NbY1soY1t3Pj4yXXwwKSs0MD4+Ml0mMTI3XSh3KXwwO2NvbnRpbnVlfWVsc2V7Y1tBPj4yXT1DKzQ7Y29udGludWV9fXU9YVtuPj4wXXwwO2lmKCh1JjEpPT0wKXt1PSh1JjI1NSk+Pj4xfWVsc2V7dT1jW24rND4+Ml18MH1pZigodXwwKSE9MD8ocD1jW3M+PjJdfDAsKHAtcnwwKTwxNjApOjApe0Q9Y1txPj4yXXwwO2Nbcz4+Ml09cCs0O2NbcD4+Ml09RH1jW2o+PjJdPU5tKHosY1t0Pj4yXXwwLGgsZil8MDtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gY2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7ZD1pO2k9aSszMDR8MDt1PWQrMTYwfDA7bz1kKzI4MHwwO249ZCsyNjR8MDttPWQrMjg0fDA7dD1kKzMwMHwwO3I9ZDtzPWQrMjc2fDA7cT1kKzI5NnwwO3c9Y1tlPj4yXXwwO3k9Y1tmPj4yXXwwO2Y9Y1tnKzQ+PjJdJjc0O2lmKChmfDApPT04KXtmPTE2fWVsc2UgaWYoKGZ8MCk9PTY0KXtmPTh9ZWxzZSBpZigoZnwwKT09MCl7Zj0wfWVsc2V7Zj0xMH1waShuLGcsdSxvKTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtoZyhtLDEwKTtpZigoYVttPj4wXSYxKT09MCl7ej1tKzF8MDtlPXo7Zz1tKzh8MH1lbHNle3o9bSs4fDA7ZT1tKzF8MDtnPXo7ej1jW3o+PjJdfDB9Y1t0Pj4yXT16O2Nbcz4+Ml09cjtjW3E+PjJdPTA7dj1tKzR8MDt4PWNbbz4+Ml18MDtvPW0rOHwwO3doaWxlKDEpe2lmKCh3fDApPT0wKXtBPTE7dz0wfWVsc2V7QT1jW3crMTI+PjJdfDA7aWYoKEF8MCk9PShjW3crMTY+PjJdfDApKXtBPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0E9Y1tBPj4yXXwwfUM9KEF8MCk9PS0xO0E9Qz8xOjA7dz1DPzA6d31pZigoeXwwKSE9MCl7Qj1jW3krMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3krMTY+PjJdfDApKXtCPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0I9Y1tCPj4yXXwwfWlmKCEoKEJ8MCk9PS0xKSl7aWYoIUEpe2JyZWFrfX1lbHNle2s9MjB9fWVsc2V7az0yMH1pZigoa3wwKT09MjApe2s9MDtpZihBKXt5PTA7YnJlYWt9ZWxzZXt5PTB9fUE9YVttPj4wXXwwO0I9KEEmMSk9PTA7aWYoQil7Qz0oQSYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWlmKCgoY1t0Pj4yXXwwKS16fDApPT0oQ3wwKSl7aWYoQil7RD0oQSYyNTUpPj4+MTt6PShBJjI1NSk+Pj4xO0M9RDw8MTtBPUR9ZWxzZXtBPWNbdj4+Ml18MDt6PWNbdj4+Ml18MDtDPUE8PDF9ZG97aWYoISh6Pj4+MDxDPj4+MCkpe2lmKEIpe2FbbStDKzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStDPj4wXT0wO2Nbdj4+Ml09QzticmVha319ZWxzZXtoZyhtLEMtenwwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe0I9MTB9ZWxzZXtCPWNbbT4+Ml18MDtDPUImMjU1O0I9KEImLTIpKyAtMXwwfXo9KEMmMSk9PTA7aWYoeil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWRve2lmKCEoQz4+PjA8Qj4+PjApKXtpZih6KXthW20rQisxPj4wXT0wO2FbbT4+MF09Qjw8MTticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQj4+MF09MDtjW3Y+PjJdPUI7YnJlYWt9fWVsc2V7aGcobSxCLUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWV9ZWxzZXt6PWNbZz4+Ml18MH1jW3Q+PjJdPXorQX1BPXcrMTJ8MDtDPWNbQT4+Ml18MDtCPXcrMTZ8MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe0M9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7Qz1jW0M+PjJdfDB9aWYoKGxpKEMsZix6LHQscSx4LG4scixzLHUpfDApIT0wKXticmVha31DPWNbQT4+Ml18MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe29jW2NbKGNbdz4+Ml18MCkrNDA+PjJdJjEyN10odyl8MDtjb250aW51ZX1lbHNle2NbQT4+Ml09Qys0O2NvbnRpbnVlfX11PWFbbj4+MF18MDtpZigodSYxKT09MCl7dT0odSYyNTUpPj4+MX1lbHNle3U9Y1tuKzQ+PjJdfDB9aWYoKHV8MCkhPTA/KHA9Y1tzPj4yXXwwLChwLXJ8MCk8MTYwKTowKXtEPWNbcT4+Ml18MDtjW3M+PjJdPXArNDtjW3A+PjJdPUR9Qz1NbSh6LGNbdD4+Ml18MCxoLGYpfDA7RD1qO2NbRD4+Ml09QztjW0QrND4+Ml09STtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZGkoZCxlLGYsZyxoLGosayl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7ZT1pO2k9aSszMDR8MDt2PWUrMTYwfDA7cD1lKzI4MHwwO289ZSsyNjR8MDtuPWUrMjg0fDA7dT1lKzMwMHwwO3M9ZTt0PWUrMjc2fDA7cj1lKzI5NnwwO3g9Y1tmPj4yXXwwO3o9Y1tnPj4yXXwwO2c9Y1toKzQ+PjJdJjc0O2lmKChnfDApPT0wKXtnPTB9ZWxzZSBpZigoZ3wwKT09NjQpe2c9OH1lbHNlIGlmKChnfDApPT04KXtnPTE2fWVsc2V7Zz0xMH1waShvLGgsdixwKTtjW24rMD4+Ml09MDtjW24rND4+Ml09MDtjW24rOD4+Ml09MDtoZyhuLDEwKTtpZigoYVtuPj4wXSYxKT09MCl7QT1uKzF8MDtmPUE7aD1uKzh8MH1lbHNle0E9bis4fDA7Zj1uKzF8MDtoPUE7QT1jW0E+PjJdfDB9Y1t1Pj4yXT1BO2NbdD4+Ml09cztjW3I+PjJdPTA7dz1uKzR8MDt5PWNbcD4+Ml18MDtwPW4rOHwwO3doaWxlKDEpe2lmKCh4fDApPT0wKXtCPTE7eD0wfWVsc2V7Qj1jW3grMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3grMTY+PjJdfDApKXtCPW9jW2NbKGNbeD4+Ml18MCkrMzY+PjJdJjEyN10oeCl8MH1lbHNle0I9Y1tCPj4yXXwwfUQ9KEJ8MCk9PS0xO0I9RD8xOjA7eD1EPzA6eH1pZigoenwwKSE9MCl7Qz1jW3orMTI+PjJdfDA7aWYoKEN8MCk9PShjW3orMTY+PjJdfDApKXtDPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0M9Y1tDPj4yXXwwfWlmKCEoKEN8MCk9PS0xKSl7aWYoIUIpe2JyZWFrfX1lbHNle2w9MjB9fWVsc2V7bD0yMH1pZigobHwwKT09MjApe2w9MDtpZihCKXt6PTA7YnJlYWt9ZWxzZXt6PTB9fUI9YVtuPj4wXXwwO0M9KEImMSk9PTA7aWYoQyl7RD0oQiYyNTUpPj4+MX1lbHNle0Q9Y1t3Pj4yXXwwfWlmKCgoY1t1Pj4yXXwwKS1BfDApPT0oRHwwKSl7aWYoQyl7RT0oQiYyNTUpPj4+MTtBPShCJjI1NSk+Pj4xO0Q9RTw8MTtCPUV9ZWxzZXtCPWNbdz4+Ml18MDtBPWNbdz4+Ml18MDtEPUI8PDF9ZG97aWYoIShBPj4+MDxEPj4+MCkpe2lmKEMpe2FbbitEKzE+PjBdPTA7YVtuPj4wXT1CPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStEPj4wXT0wO2Nbdz4+Ml09RDticmVha319ZWxzZXtoZyhuLEQtQXwwKX19d2hpbGUoMCk7RD1hW24+PjBdfDA7aWYoKEQmMSk9PTApe0M9MTB9ZWxzZXtDPWNbbj4+Ml18MDtEPUMmMjU1O0M9KEMmLTIpKyAtMXwwfUE9KEQmMSk9PTA7aWYoQSl7RD0oRCYyNTUpPj4+MX1lbHNle0Q9Y1t3Pj4yXXwwfWRve2lmKCEoRD4+PjA8Qz4+PjApKXtpZihBKXthW24rQysxPj4wXT0wO2Fbbj4+MF09Qzw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrQz4+MF09MDtjW3c+PjJdPUM7YnJlYWt9fWVsc2V7aGcobixDLUR8MCl9fXdoaWxlKDApO2lmKChhW24+PjBdJjEpPT0wKXtBPWZ9ZWxzZXtBPWNbaD4+Ml18MH1jW3U+PjJdPUErQn1CPXgrMTJ8MDtEPWNbQj4+Ml18MDtDPXgrMTZ8MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe0Q9b2NbY1soY1t4Pj4yXXwwKSszNj4+Ml0mMTI3XSh4KXwwfWVsc2V7RD1jW0Q+PjJdfDB9aWYoKGxpKEQsZyxBLHUscix5LG8scyx0LHYpfDApIT0wKXticmVha31EPWNbQj4+Ml18MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbeD4+Ml18MCkrNDA+PjJdJjEyN10oeCl8MDtjb250aW51ZX1lbHNle2NbQj4+Ml09RCs0O2NvbnRpbnVlfX12PWFbbz4+MF18MDtpZigodiYxKT09MCl7dj0odiYyNTUpPj4+MX1lbHNle3Y9Y1tvKzQ+PjJdfDB9aWYoKHZ8MCkhPTA/KHE9Y1t0Pj4yXXwwLChxLXN8MCk8MTYwKTowKXtFPWNbcj4+Ml18MDtjW3Q+PjJdPXErNDtjW3E+PjJdPUV9YltrPj4xXT1MbShBLGNbdT4+Ml18MCxqLGcpfDA7cWsobyxzLGNbdD4+Ml18MCxqKTtpZigoeHwwKT09MCl7az0wO3E9MX1lbHNle2s9Y1t4KzEyPj4yXXwwO2lmKChrfDApPT0oY1t4KzE2Pj4yXXwwKSl7az1vY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDB9ZWxzZXtrPWNbaz4+Ml18MH1xPShrfDApPT0tMTtrPXE/MDp4O3E9cT8xOjB9aWYoKHp8MCkhPTApe3I9Y1t6KzEyPj4yXXwwO2lmKChyfDApPT0oY1t6KzE2Pj4yXXwwKSl7cj1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtyPWNbcj4+Ml18MH1pZighKChyfDApPT0tMSkpe2lmKCFxKXtsPTczfX1lbHNle2w9NzF9fWVsc2V7bD03MX1pZigobHwwKT09NzE/cTowKXtsPTczfWlmKChsfDApPT03Myl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tkPj4yXT1rO2lmKCEoKGFbbj4+MF0mMSk9PTApPyhtPWNbcD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoKGFbbz4+MF0mMSk9PTApe2k9ZTtyZXR1cm59aj1jW28rOD4+Ml18MDtpZigoanwwKT09MCl7aT1lO3JldHVybn12bihqKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGVpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO2Q9aTtpPWkrMzA0fDA7dT1kKzE2MHwwO289ZCsyODB8MDtuPWQrMjY0fDA7bT1kKzI4NHwwO3Q9ZCszMDB8MDtyPWQ7cz1kKzI3NnwwO3E9ZCsyOTZ8MDt3PWNbZT4+Ml18MDt5PWNbZj4+Ml18MDtmPWNbZys0Pj4yXSY3NDtpZigoZnwwKT09OCl7Zj0xNn1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2UgaWYoKGZ8MCk9PTApe2Y9MH1lbHNle2Y9MTB9cGkobixnLHUsbyk7Y1ttKzA+PjJdPTA7Y1ttKzQ+PjJdPTA7Y1ttKzg+PjJdPTA7aGcobSwxMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9bSsxfDA7ZT16O2c9bSs4fDB9ZWxzZXt6PW0rOHwwO2U9bSsxfDA7Zz16O3o9Y1t6Pj4yXXwwfWNbdD4+Ml09ejtjW3M+PjJdPXI7Y1txPj4yXT0wO3Y9bSs0fDA7eD1jW28+PjJdfDA7bz1tKzh8MDt3aGlsZSgxKXtpZigod3wwKT09MCl7QT0xO3c9MH1lbHNle0E9Y1t3KzEyPj4yXXwwO2lmKChBfDApPT0oY1t3KzE2Pj4yXXwwKSl7QT1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtBPWNbQT4+Ml18MH1DPShBfDApPT0tMTtBPUM/MTowO3c9Qz8wOnd9aWYoKHl8MCkhPTApe0I9Y1t5KzEyPj4yXXwwO2lmKChCfDApPT0oY1t5KzE2Pj4yXXwwKSl7Qj1vY1tjWyhjW3k+PjJdfDApKzM2Pj4yXSYxMjddKHkpfDB9ZWxzZXtCPWNbQj4+Ml18MH1pZighKChCfDApPT0tMSkpe2lmKCFBKXticmVha319ZWxzZXtrPTIwfX1lbHNle2s9MjB9aWYoKGt8MCk9PTIwKXtrPTA7aWYoQSl7eT0wO2JyZWFrfWVsc2V7eT0wfX1BPWFbbT4+MF18MDtCPShBJjEpPT0wO2lmKEIpe0M9KEEmMjU1KT4+PjF9ZWxzZXtDPWNbdj4+Ml18MH1pZigoKGNbdD4+Ml18MCktenwwKT09KEN8MCkpe2lmKEIpe0Q9KEEmMjU1KT4+PjE7ej0oQSYyNTUpPj4+MTtDPUQ8PDE7QT1EfWVsc2V7QT1jW3Y+PjJdfDA7ej1jW3Y+PjJdfDA7Qz1BPDwxfWRve2lmKCEoej4+PjA8Qz4+PjApKXtpZihCKXthW20rQysxPj4wXT0wO2FbbT4+MF09QTw8MjticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQz4+MF09MDtjW3Y+PjJdPUM7YnJlYWt9fWVsc2V7aGcobSxDLXp8MCl9fXdoaWxlKDApO0M9YVttPj4wXXwwO2lmKChDJjEpPT0wKXtCPTEwfWVsc2V7Qj1jW20+PjJdfDA7Qz1CJjI1NTtCPShCJi0yKSsgLTF8MH16PShDJjEpPT0wO2lmKHope0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbdj4+Ml18MH1kb3tpZighKEM+Pj4wPEI+Pj4wKSl7aWYoeil7YVttK0IrMT4+MF09MDthW20+PjBdPUI8PDE7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0I+PjBdPTA7Y1t2Pj4yXT1CO2JyZWFrfX1lbHNle2hnKG0sQi1DfDApfX13aGlsZSgwKTtpZigoYVttPj4wXSYxKT09MCl7ej1lfWVsc2V7ej1jW2c+PjJdfDB9Y1t0Pj4yXT16K0F9QT13KzEyfDA7Qz1jW0E+PjJdfDA7Qj13KzE2fDA7aWYoKEN8MCk9PShjW0I+PjJdfDApKXtDPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0M9Y1tDPj4yXXwwfWlmKChsaShDLGYseix0LHEseCxuLHIscyx1KXwwKSE9MCl7YnJlYWt9Qz1jW0E+PjJdfDA7aWYoKEN8MCk9PShjW0I+PjJdfDApKXtvY1tjWyhjW3c+PjJdfDApKzQwPj4yXSYxMjddKHcpfDA7Y29udGludWV9ZWxzZXtjW0E+PjJdPUMrNDtjb250aW51ZX19dT1hW24+PjBdfDA7aWYoKHUmMSk9PTApe3U9KHUmMjU1KT4+PjF9ZWxzZXt1PWNbbis0Pj4yXXwwfWlmKCh1fDApIT0wPyhwPWNbcz4+Ml18MCwocC1yfDApPDE2MCk6MCl7RD1jW3E+PjJdfDA7Y1tzPj4yXT1wKzQ7Y1twPj4yXT1EfWNbaj4+Ml09S20oeixjW3Q+PjJdfDAsaCxmKXwwO3FrKG4scixjW3M+PjJdfDAsaCk7aWYoKHd8MCk9PTApe2o9MDtwPTF9ZWxzZXtqPWNbdysxMj4+Ml18MDtpZigoanwwKT09KGNbdysxNj4+Ml18MCkpe2o9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7aj1jW2o+PjJdfDB9cD0oanwwKT09LTE7aj1wPzA6dztwPXA/MTowfWlmKCh5fDApIT0wKXtxPWNbeSsxMj4+Ml18MDtpZigocXwwKT09KGNbeSsxNj4+Ml18MCkpe3E9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7cT1jW3E+PjJdfDB9aWYoISgocXwwKT09LTEpKXtpZighcCl7az03M319ZWxzZXtrPTcxfX1lbHNle2s9NzF9aWYoKGt8MCk9PTcxP3A6MCl7az03M31pZigoa3wwKT09NzMpe2NbaD4+Ml09Y1toPj4yXXwyfWNbYj4+Ml09ajtpZighKChhW20+PjBdJjEpPT0wKT8obD1jW28+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKChhW24+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWg9Y1tuKzg+PjJdfDA7aWYoKGh8MCk9PTApe2k9ZDtyZXR1cm59dm4oaCk7aT1kO3JldHVybn1mdW5jdGlvbiBmaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtkPWk7aT1pKzMwNHwwO3U9ZCsxNjB8MDtvPWQrMjgwfDA7bj1kKzI2NHwwO209ZCsyODR8MDt0PWQrMzAwfDA7cj1kO3M9ZCsyNzZ8MDtxPWQrMjk2fDA7dz1jW2U+PjJdfDA7eT1jW2Y+PjJdfDA7Zj1jW2crND4+Ml0mNzQ7aWYoKGZ8MCk9PTApe2Y9MH1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2UgaWYoKGZ8MCk9PTgpe2Y9MTZ9ZWxzZXtmPTEwfXBpKG4sZyx1LG8pO2NbbSswPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2hnKG0sMTApO2lmKChhW20+PjBdJjEpPT0wKXt6PW0rMXwwO2U9ejtnPW0rOHwwfWVsc2V7ej1tKzh8MDtlPW0rMXwwO2c9ejt6PWNbej4+Ml18MH1jW3Q+PjJdPXo7Y1tzPj4yXT1yO2NbcT4+Ml09MDt2PW0rNHwwO3g9Y1tvPj4yXXwwO289bSs4fDA7d2hpbGUoMSl7aWYoKHd8MCk9PTApe0E9MTt3PTB9ZWxzZXtBPWNbdysxMj4+Ml18MDtpZigoQXwwKT09KGNbdysxNj4+Ml18MCkpe0E9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7QT1jW0E+PjJdfDB9Qz0oQXwwKT09LTE7QT1DPzE6MDt3PUM/MDp3fWlmKCh5fDApIT0wKXtCPWNbeSsxMj4+Ml18MDtpZigoQnwwKT09KGNbeSsxNj4+Ml18MCkpe0I9b2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZighQSl7YnJlYWt9fWVsc2V7az0yMH19ZWxzZXtrPTIwfWlmKChrfDApPT0yMCl7az0wO2lmKEEpe3k9MDticmVha31lbHNle3k9MH19QT1hW20+PjBdfDA7Qj0oQSYxKT09MDtpZihCKXtDPShBJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9aWYoKChjW3Q+PjJdfDApLXp8MCk9PShDfDApKXtpZihCKXtEPShBJjI1NSk+Pj4xO3o9KEEmMjU1KT4+PjE7Qz1EPDwxO0E9RH1lbHNle0E9Y1t2Pj4yXXwwO3o9Y1t2Pj4yXXwwO0M9QTw8MX1kb3tpZighKHo+Pj4wPEM+Pj4wKSl7aWYoQil7YVttK0MrMT4+MF09MDthW20+PjBdPUE8PDI7YnJlYWt9ZWxzZXthWyhjW28+PjJdfDApK0M+PjBdPTA7Y1t2Pj4yXT1DO2JyZWFrfX1lbHNle2hnKG0sQy16fDApfX13aGlsZSgwKTtDPWFbbT4+MF18MDtpZigoQyYxKT09MCl7Qj0xMH1lbHNle0I9Y1ttPj4yXXwwO0M9QiYyNTU7Qj0oQiYtMikrIC0xfDB9ej0oQyYxKT09MDtpZih6KXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3Y+PjJdfDB9ZG97aWYoIShDPj4+MDxCPj4+MCkpe2lmKHope2FbbStCKzE+PjBdPTA7YVttPj4wXT1CPDwxO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStCPj4wXT0wO2Nbdj4+Ml09QjticmVha319ZWxzZXtoZyhtLEItQ3wwKX19d2hpbGUoMCk7aWYoKGFbbT4+MF0mMSk9PTApe3o9ZX1lbHNle3o9Y1tnPj4yXXwwfWNbdD4+Ml09eitBfUE9dysxMnwwO0M9Y1tBPj4yXXwwO0I9dysxNnwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7Qz1vY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSYxMjddKHcpfDB9ZWxzZXtDPWNbQz4+Ml18MH1pZigobGkoQyxmLHosdCxxLHgsbixyLHMsdSl8MCkhPTApe2JyZWFrfUM9Y1tBPj4yXXwwO2lmKChDfDApPT0oY1tCPj4yXXwwKSl7b2NbY1soY1t3Pj4yXXwwKSs0MD4+Ml0mMTI3XSh3KXwwO2NvbnRpbnVlfWVsc2V7Y1tBPj4yXT1DKzQ7Y29udGludWV9fXU9YVtuPj4wXXwwO2lmKCh1JjEpPT0wKXt1PSh1JjI1NSk+Pj4xfWVsc2V7dT1jW24rND4+Ml18MH1pZigodXwwKSE9MD8ocD1jW3M+PjJdfDAsKHAtcnwwKTwxNjApOjApe0Q9Y1txPj4yXXwwO2Nbcz4+Ml09cCs0O2NbcD4+Ml09RH1jW2o+PjJdPUptKHosY1t0Pj4yXXwwLGgsZil8MDtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7ZD1pO2k9aSszMDR8MDt1PWQrMTYwfDA7bz1kKzI4MHwwO249ZCsyNjR8MDttPWQrMjg0fDA7dD1kKzMwMHwwO3I9ZDtzPWQrMjc2fDA7cT1kKzI5NnwwO3c9Y1tlPj4yXXwwO3k9Y1tmPj4yXXwwO2Y9Y1tnKzQ+PjJdJjc0O2lmKChmfDApPT04KXtmPTE2fWVsc2UgaWYoKGZ8MCk9PTApe2Y9MH1lbHNlIGlmKChmfDApPT02NCl7Zj04fWVsc2V7Zj0xMH1waShuLGcsdSxvKTtjW20rMD4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtoZyhtLDEwKTtpZigoYVttPj4wXSYxKT09MCl7ej1tKzF8MDtlPXo7Zz1tKzh8MH1lbHNle3o9bSs4fDA7ZT1tKzF8MDtnPXo7ej1jW3o+PjJdfDB9Y1t0Pj4yXT16O2Nbcz4+Ml09cjtjW3E+PjJdPTA7dj1tKzR8MDt4PWNbbz4+Ml18MDtvPW0rOHwwO3doaWxlKDEpe2lmKCh3fDApPT0wKXtBPTE7dz0wfWVsc2V7QT1jW3crMTI+PjJdfDA7aWYoKEF8MCk9PShjW3crMTY+PjJdfDApKXtBPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle0E9Y1tBPj4yXXwwfUM9KEF8MCk9PS0xO0E9Qz8xOjA7dz1DPzA6d31pZigoeXwwKSE9MCl7Qj1jW3krMTI+PjJdfDA7aWYoKEJ8MCk9PShjW3krMTY+PjJdfDApKXtCPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle0I9Y1tCPj4yXXwwfWlmKCEoKEJ8MCk9PS0xKSl7aWYoIUEpe2JyZWFrfX1lbHNle2s9MjB9fWVsc2V7az0yMH1pZigoa3wwKT09MjApe2s9MDtpZihBKXt5PTA7YnJlYWt9ZWxzZXt5PTB9fUE9YVttPj4wXXwwO0I9KEEmMSk9PTA7aWYoQil7Qz0oQSYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWlmKCgoY1t0Pj4yXXwwKS16fDApPT0oQ3wwKSl7aWYoQil7RD0oQSYyNTUpPj4+MTt6PShBJjI1NSk+Pj4xO0M9RDw8MTtBPUR9ZWxzZXtBPWNbdj4+Ml18MDt6PWNbdj4+Ml18MDtDPUE8PDF9ZG97aWYoISh6Pj4+MDxDPj4+MCkpe2lmKEIpe2FbbStDKzE+PjBdPTA7YVttPj4wXT1BPDwyO2JyZWFrfWVsc2V7YVsoY1tvPj4yXXwwKStDPj4wXT0wO2Nbdj4+Ml09QzticmVha319ZWxzZXtoZyhtLEMtenwwKX19d2hpbGUoMCk7Qz1hW20+PjBdfDA7aWYoKEMmMSk9PTApe0I9MTB9ZWxzZXtCPWNbbT4+Ml18MDtDPUImMjU1O0I9KEImLTIpKyAtMXwwfXo9KEMmMSk9PTA7aWYoeil7Qz0oQyYyNTUpPj4+MX1lbHNle0M9Y1t2Pj4yXXwwfWRve2lmKCEoQz4+PjA8Qj4+PjApKXtpZih6KXthW20rQisxPj4wXT0wO2FbbT4+MF09Qjw8MTticmVha31lbHNle2FbKGNbbz4+Ml18MCkrQj4+MF09MDtjW3Y+PjJdPUI7YnJlYWt9fWVsc2V7aGcobSxCLUN8MCl9fXdoaWxlKDApO2lmKChhW20+PjBdJjEpPT0wKXt6PWV9ZWxzZXt6PWNbZz4+Ml18MH1jW3Q+PjJdPXorQX1BPXcrMTJ8MDtDPWNbQT4+Ml18MDtCPXcrMTZ8MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe0M9b2NbY1soY1t3Pj4yXXwwKSszNj4+Ml0mMTI3XSh3KXwwfWVsc2V7Qz1jW0M+PjJdfDB9aWYoKGxpKEMsZix6LHQscSx4LG4scixzLHUpfDApIT0wKXticmVha31DPWNbQT4+Ml18MDtpZigoQ3wwKT09KGNbQj4+Ml18MCkpe29jW2NbKGNbdz4+Ml18MCkrNDA+PjJdJjEyN10odyl8MDtjb250aW51ZX1lbHNle2NbQT4+Ml09Qys0O2NvbnRpbnVlfX11PWFbbj4+MF18MDtpZigodSYxKT09MCl7dT0odSYyNTUpPj4+MX1lbHNle3U9Y1tuKzQ+PjJdfDB9aWYoKHV8MCkhPTA/KHA9Y1tzPj4yXXwwLChwLXJ8MCk8MTYwKTowKXtEPWNbcT4+Ml18MDtjW3M+PjJdPXArNDtjW3A+PjJdPUR9Qz1JbSh6LGNbdD4+Ml18MCxoLGYpfDA7RD1qO2NbRD4+Ml09QztjW0QrND4+Ml09STtxayhuLHIsY1tzPj4yXXwwLGgpO2lmKCh3fDApPT0wKXtqPTA7cD0xfWVsc2V7aj1jW3crMTI+PjJdfDA7aWYoKGp8MCk9PShjW3crMTY+PjJdfDApKXtqPW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle2o9Y1tqPj4yXXwwfXA9KGp8MCk9PS0xO2o9cD8wOnc7cD1wPzE6MH1pZigoeXwwKSE9MCl7cT1jW3krMTI+PjJdfDA7aWYoKHF8MCk9PShjW3krMTY+PjJdfDApKXtxPW9jW2NbKGNbeT4+Ml18MCkrMzY+PjJdJjEyN10oeSl8MH1lbHNle3E9Y1txPj4yXXwwfWlmKCEoKHF8MCk9PS0xKSl7aWYoIXApe2s9NzN9fWVsc2V7az03MX19ZWxzZXtrPTcxfWlmKChrfDApPT03MT9wOjApe2s9NzN9aWYoKGt8MCk9PTczKXtjW2g+PjJdPWNbaD4+Ml18Mn1jW2I+PjJdPWo7aWYoISgoYVttPj4wXSYxKT09MCk/KGw9Y1tvPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1oPWNbbis4Pj4yXXwwO2lmKChofDApPT0wKXtpPWQ7cmV0dXJufXZuKGgpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gaGkoYixkLGUsZixoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MDtkPWk7aT1pKzM1MnwwO3c9ZCsyMDh8MDt5PWQrMTg0fDA7cD1kKzR8MDtuPWQrOHwwO289ZCsxOTZ8MDt1PWQ7dD1kKzI0fDA7cz1kKzE5MnwwO3Y9ZCsxODh8MDtyPWQrMzM3fDA7eD1kKzMzNnwwO3o9Y1tlPj4yXXwwO0I9Y1tmPj4yXXwwO3FpKG4saCx3LHkscCk7Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTA7aGcobywxMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9bysxfDA7ZT1DO2Y9bys4fDB9ZWxzZXtDPW8rOHwwO2U9bysxfDA7Zj1DO0M9Y1tDPj4yXXwwfWNbdT4+Ml09QztjW3M+PjJdPXQ7Y1t2Pj4yXT0wO2Fbcj4+MF09MTthW3g+PjBdPTY5O2g9bys0fDA7eT1jW3k+PjJdfDA7QT1jW3A+PjJdfDA7cD1vKzh8MDt3aGlsZSgxKXtpZigoenwwKT09MCl7RD0xO3o9MH1lbHNle0Q9Y1t6KzEyPj4yXXwwO2lmKChEfDApPT0oY1t6KzE2Pj4yXXwwKSl7RD1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtEPWNbRD4+Ml18MH1GPShEfDApPT0tMTtEPUY/MTowO3o9Rj8wOnp9aWYoKEJ8MCkhPTApe0U9Y1tCKzEyPj4yXXwwO2lmKChFfDApPT0oY1tCKzE2Pj4yXXwwKSl7RT1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtFPWNbRT4+Ml18MH1pZighKChFfDApPT0tMSkpe2lmKCFEKXticmVha319ZWxzZXttPTE2fX1lbHNle209MTZ9aWYoKG18MCk9PTE2KXttPTA7aWYoRCl7Qj0wO2JyZWFrfWVsc2V7Qj0wfX1EPWFbbz4+MF18MDtFPShEJjEpPT0wO2lmKEUpe0Y9KEQmMjU1KT4+PjF9ZWxzZXtGPWNbaD4+Ml18MH1pZigoKGNbdT4+Ml18MCktQ3wwKT09KEZ8MCkpe2lmKEUpe0c9KEQmMjU1KT4+PjE7Rj0oRCYyNTUpPj4+MTtDPUc8PDE7RD1HfWVsc2V7RD1jW2g+PjJdfDA7Rj1jW2g+PjJdfDA7Qz1EPDwxfWRve2lmKCEoRj4+PjA8Qz4+PjApKXtpZihFKXthW28rQysxPj4wXT0wO2Fbbz4+MF09RDw8MjticmVha31lbHNle2FbKGNbcD4+Ml18MCkrQz4+MF09MDtjW2g+PjJdPUM7YnJlYWt9fWVsc2V7aGcobyxDLUZ8MCl9fXdoaWxlKDApO0Y9YVtvPj4wXXwwO2lmKChGJjEpPT0wKXtFPTEwfWVsc2V7RT1jW28+PjJdfDA7Rj1FJjI1NTtFPShFJi0yKSsgLTF8MH1DPShGJjEpPT0wO2lmKEMpe0Y9KEYmMjU1KT4+PjF9ZWxzZXtGPWNbaD4+Ml18MH1kb3tpZighKEY+Pj4wPEU+Pj4wKSl7aWYoQyl7YVtvK0UrMT4+MF09MDthW28+PjBdPUU8PDE7YnJlYWt9ZWxzZXthWyhjW3A+PjJdfDApK0U+PjBdPTA7Y1toPj4yXT1FO2JyZWFrfX1lbHNle2hnKG8sRS1GfDApfX13aGlsZSgwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz1lfWVsc2V7Qz1jW2Y+PjJdfDB9Y1t1Pj4yXT1DK0R9RT16KzEyfDA7Rj1jW0U+PjJdfDA7RD16KzE2fDA7aWYoKEZ8MCk9PShjW0Q+PjJdfDApKXtGPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0Y9Y1tGPj4yXXwwfWlmKChyaShGLHIseCxDLHUseSxBLG4sdCxzLHYsdyl8MCkhPTApe2JyZWFrfUY9Y1tFPj4yXXwwO2lmKChGfDApPT0oY1tEPj4yXXwwKSl7b2NbY1soY1t6Pj4yXXwwKSs0MD4+Ml0mMTI3XSh6KXwwO2NvbnRpbnVlfWVsc2V7Y1tFPj4yXT1GKzQ7Y29udGludWV9fXc9YVtuPj4wXXwwO2lmKCh3JjEpPT0wKXt3PSh3JjI1NSk+Pj4xfWVsc2V7dz1jW24rND4+Ml18MH1pZigoKHd8MCkhPTA/KGFbcj4+MF18MCkhPTA6MCk/KHE9Y1tzPj4yXXwwLChxLXR8MCk8MTYwKTowKXtHPWNbdj4+Ml18MDtjW3M+PjJdPXErNDtjW3E+PjJdPUd9Z1trPj4yXT0rSG0oQyxjW3U+PjJdfDAsaik7cWsobix0LGNbcz4+Ml18MCxqKTtpZigoenwwKT09MCl7az0wO3E9MX1lbHNle2s9Y1t6KzEyPj4yXXwwO2lmKChrfDApPT0oY1t6KzE2Pj4yXXwwKSl7az1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtrPWNbaz4+Ml18MH1xPShrfDApPT0tMTtrPXE/MDp6O3E9cT8xOjB9aWYoKEJ8MCkhPTApe3I9Y1tCKzEyPj4yXXwwO2lmKChyfDApPT0oY1tCKzE2Pj4yXXwwKSl7cj1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtyPWNbcj4+Ml18MH1pZighKChyfDApPT0tMSkpe2lmKCFxKXttPTcwfX1lbHNle209Njh9fWVsc2V7bT02OH1pZigobXwwKT09Njg/cTowKXttPTcwfWlmKChtfDApPT03MCl7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1rO2lmKCEoKGFbbz4+MF0mMSk9PTApPyhsPWNbcD4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoKGFbbj4+MF0mMSk9PTApe2k9ZDtyZXR1cm59aj1jW24rOD4+Ml18MDtpZigoanwwKT09MCl7aT1kO3JldHVybn12bihqKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGlpKGIsZCxlLGYsZyxqLGspe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7ZD1pO2k9aSszNTJ8MDt3PWQrMjA4fDA7eT1kKzE4NHwwO3A9ZCs0fDA7bj1kKzh8MDtvPWQrMTk2fDA7dT1kO3Q9ZCsyNHwwO3M9ZCsxOTJ8MDt2PWQrMTg4fDA7cj1kKzMzN3wwO3g9ZCszMzZ8MDt6PWNbZT4+Ml18MDtCPWNbZj4+Ml18MDtxaShuLGcsdyx5LHApO2NbbyswPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbbys4Pj4yXT0wO2hnKG8sMTApO2lmKChhW28+PjBdJjEpPT0wKXtDPW8rMXwwO2U9QztmPW8rOHwwfWVsc2V7Qz1vKzh8MDtlPW8rMXwwO2Y9QztDPWNbQz4+Ml18MH1jW3U+PjJdPUM7Y1tzPj4yXT10O2Nbdj4+Ml09MDthW3I+PjBdPTE7YVt4Pj4wXT02OTtnPW8rNHwwO3k9Y1t5Pj4yXXwwO0E9Y1twPj4yXXwwO3A9bys4fDA7d2hpbGUoMSl7aWYoKHp8MCk9PTApe0Q9MTt6PTB9ZWxzZXtEPWNbeisxMj4+Ml18MDtpZigoRHwwKT09KGNbeisxNj4+Ml18MCkpe0Q9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7RD1jW0Q+PjJdfDB9Rj0oRHwwKT09LTE7RD1GPzE6MDt6PUY/MDp6fWlmKChCfDApIT0wKXtFPWNbQisxMj4+Ml18MDtpZigoRXwwKT09KGNbQisxNj4+Ml18MCkpe0U9b2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwfWVsc2V7RT1jW0U+PjJdfDB9aWYoISgoRXwwKT09LTEpKXtpZighRCl7YnJlYWt9fWVsc2V7bT0xNn19ZWxzZXttPTE2fWlmKChtfDApPT0xNil7bT0wO2lmKEQpe0I9MDticmVha31lbHNle0I9MH19RD1hW28+PjBdfDA7RT0oRCYxKT09MDtpZihFKXtGPShEJjI1NSk+Pj4xfWVsc2V7Rj1jW2c+PjJdfDB9aWYoKChjW3U+PjJdfDApLUN8MCk9PShGfDApKXtpZihFKXtHPShEJjI1NSk+Pj4xO0Y9KEQmMjU1KT4+PjE7Qz1HPDwxO0Q9R31lbHNle0Q9Y1tnPj4yXXwwO0Y9Y1tnPj4yXXwwO0M9RDw8MX1kb3tpZighKEY+Pj4wPEM+Pj4wKSl7aWYoRSl7YVtvK0MrMT4+MF09MDthW28+PjBdPUQ8PDI7YnJlYWt9ZWxzZXthWyhjW3A+PjJdfDApK0M+PjBdPTA7Y1tnPj4yXT1DO2JyZWFrfX1lbHNle2hnKG8sQy1GfDApfX13aGlsZSgwKTtGPWFbbz4+MF18MDtpZigoRiYxKT09MCl7RT0xMH1lbHNle0U9Y1tvPj4yXXwwO0Y9RSYyNTU7RT0oRSYtMikrIC0xfDB9Qz0oRiYxKT09MDtpZihDKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW2c+PjJdfDB9ZG97aWYoIShGPj4+MDxFPj4+MCkpe2lmKEMpe2FbbytFKzE+PjBdPTA7YVtvPj4wXT1FPDwxO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStFPj4wXT0wO2NbZz4+Ml09RTticmVha319ZWxzZXtoZyhvLEUtRnwwKX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe0M9ZX1lbHNle0M9Y1tmPj4yXXwwfWNbdT4+Ml09QytEfUU9eisxMnwwO0Y9Y1tFPj4yXXwwO0Q9eisxNnwwO2lmKChGfDApPT0oY1tEPj4yXXwwKSl7Rj1vY1tjWyhjW3o+PjJdfDApKzM2Pj4yXSYxMjddKHopfDB9ZWxzZXtGPWNbRj4+Ml18MH1pZigocmkoRixyLHgsQyx1LHksQSxuLHQscyx2LHcpfDApIT0wKXticmVha31GPWNbRT4+Ml18MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe29jW2NbKGNbej4+Ml18MCkrNDA+PjJdJjEyN10oeil8MDtjb250aW51ZX1lbHNle2NbRT4+Ml09Ris0O2NvbnRpbnVlfX13PWFbbj4+MF18MDtpZigodyYxKT09MCl7dz0odyYyNTUpPj4+MX1lbHNle3c9Y1tuKzQ+PjJdfDB9aWYoKCh3fDApIT0wPyhhW3I+PjBdfDApIT0wOjApPyhxPWNbcz4+Ml18MCwocS10fDApPDE2MCk6MCl7Rz1jW3Y+PjJdfDA7Y1tzPj4yXT1xKzQ7Y1txPj4yXT1HfWhbaz4+M109K0dtKEMsY1t1Pj4yXXwwLGopO3FrKG4sdCxjW3M+PjJdfDAsaik7aWYoKHp8MCk9PTApe2s9MDtxPTF9ZWxzZXtrPWNbeisxMj4+Ml18MDtpZigoa3wwKT09KGNbeisxNj4+Ml18MCkpe2s9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7az1jW2s+PjJdfDB9cT0oa3wwKT09LTE7az1xPzA6ejtxPXE/MTowfWlmKChCfDApIT0wKXtyPWNbQisxMj4+Ml18MDtpZigocnwwKT09KGNbQisxNj4+Ml18MCkpe3I9b2NbY1soY1tCPj4yXXwwKSszNj4+Ml0mMTI3XShCKXwwfWVsc2V7cj1jW3I+PjJdfDB9aWYoISgocnwwKT09LTEpKXtpZighcSl7bT03MH19ZWxzZXttPTY4fX1lbHNle209Njh9aWYoKG18MCk9PTY4P3E6MCl7bT03MH1pZigobXwwKT09NzApe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09aztpZighKChhW28+PjBdJjEpPT0wKT8obD1jW3A+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKChhW24+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWo9Y1tuKzg+PjJdfDA7aWYoKGp8MCk9PTApe2k9ZDtyZXR1cm59dm4oaik7aT1kO3JldHVybn1mdW5jdGlvbiBqaShiLGQsZSxmLGcsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wO2Q9aTtpPWkrMzUyfDA7dz1kKzIwOHwwO3k9ZCsxODR8MDtwPWQrNHwwO249ZCs4fDA7bz1kKzE5NnwwO3U9ZDt0PWQrMjR8MDtzPWQrMTkyfDA7dj1kKzE4OHwwO3I9ZCszMzd8MDt4PWQrMzM2fDA7ej1jW2U+PjJdfDA7Qj1jW2Y+PjJdfDA7cWkobixnLHcseSxwKTtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtoZyhvLDEwKTtpZigoYVtvPj4wXSYxKT09MCl7Qz1vKzF8MDtlPUM7Zj1vKzh8MH1lbHNle0M9bys4fDA7ZT1vKzF8MDtmPUM7Qz1jW0M+PjJdfDB9Y1t1Pj4yXT1DO2Nbcz4+Ml09dDtjW3Y+PjJdPTA7YVtyPj4wXT0xO2FbeD4+MF09Njk7Zz1vKzR8MDt5PWNbeT4+Ml18MDtBPWNbcD4+Ml18MDtwPW8rOHwwO3doaWxlKDEpe2lmKCh6fDApPT0wKXtEPTE7ej0wfWVsc2V7RD1jW3orMTI+PjJdfDA7aWYoKER8MCk9PShjW3orMTY+PjJdfDApKXtEPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle0Q9Y1tEPj4yXXwwfUY9KER8MCk9PS0xO0Q9Rj8xOjA7ej1GPzA6en1pZigoQnwwKSE9MCl7RT1jW0IrMTI+PjJdfDA7aWYoKEV8MCk9PShjW0IrMTY+PjJdfDApKXtFPW9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MH1lbHNle0U9Y1tFPj4yXXwwfWlmKCEoKEV8MCk9PS0xKSl7aWYoIUQpe2JyZWFrfX1lbHNle209MTZ9fWVsc2V7bT0xNn1pZigobXwwKT09MTYpe209MDtpZihEKXtCPTA7YnJlYWt9ZWxzZXtCPTB9fUQ9YVtvPj4wXXwwO0U9KEQmMSk9PTA7aWYoRSl7Rj0oRCYyNTUpPj4+MX1lbHNle0Y9Y1tnPj4yXXwwfWlmKCgoY1t1Pj4yXXwwKS1DfDApPT0oRnwwKSl7aWYoRSl7Rz0oRCYyNTUpPj4+MTtGPShEJjI1NSk+Pj4xO0M9Rzw8MTtEPUd9ZWxzZXtEPWNbZz4+Ml18MDtGPWNbZz4+Ml18MDtDPUQ8PDF9ZG97aWYoIShGPj4+MDxDPj4+MCkpe2lmKEUpe2FbbytDKzE+PjBdPTA7YVtvPj4wXT1EPDwyO2JyZWFrfWVsc2V7YVsoY1twPj4yXXwwKStDPj4wXT0wO2NbZz4+Ml09QzticmVha319ZWxzZXtoZyhvLEMtRnwwKX19d2hpbGUoMCk7Rj1hW28+PjBdfDA7aWYoKEYmMSk9PTApe0U9MTB9ZWxzZXtFPWNbbz4+Ml18MDtGPUUmMjU1O0U9KEUmLTIpKyAtMXwwfUM9KEYmMSk9PTA7aWYoQyl7Rj0oRiYyNTUpPj4+MX1lbHNle0Y9Y1tnPj4yXXwwfWRve2lmKCEoRj4+PjA8RT4+PjApKXtpZihDKXthW28rRSsxPj4wXT0wO2Fbbz4+MF09RTw8MTticmVha31lbHNle2FbKGNbcD4+Ml18MCkrRT4+MF09MDtjW2c+PjJdPUU7YnJlYWt9fWVsc2V7aGcobyxFLUZ8MCl9fXdoaWxlKDApO2lmKChhW28+PjBdJjEpPT0wKXtDPWV9ZWxzZXtDPWNbZj4+Ml18MH1jW3U+PjJdPUMrRH1FPXorMTJ8MDtGPWNbRT4+Ml18MDtEPXorMTZ8MDtpZigoRnwwKT09KGNbRD4+Ml18MCkpe0Y9b2NbY1soY1t6Pj4yXXwwKSszNj4+Ml0mMTI3XSh6KXwwfWVsc2V7Rj1jW0Y+PjJdfDB9aWYoKHJpKEYscix4LEMsdSx5LEEsbix0LHMsdix3KXwwKSE9MCl7YnJlYWt9Rj1jW0U+PjJdfDA7aWYoKEZ8MCk9PShjW0Q+PjJdfDApKXtvY1tjWyhjW3o+PjJdfDApKzQwPj4yXSYxMjddKHopfDA7Y29udGludWV9ZWxzZXtjW0U+PjJdPUYrNDtjb250aW51ZX19dz1hW24+PjBdfDA7aWYoKHcmMSk9PTApe3c9KHcmMjU1KT4+PjF9ZWxzZXt3PWNbbis0Pj4yXXwwfWlmKCgod3wwKSE9MD8oYVtyPj4wXXwwKSE9MDowKT8ocT1jW3M+PjJdfDAsKHEtdHwwKTwxNjApOjApe0c9Y1t2Pj4yXXwwO2Nbcz4+Ml09cSs0O2NbcT4+Ml09R31oW2s+PjNdPStGbShDLGNbdT4+Ml18MCxqKTtxayhuLHQsY1tzPj4yXXwwLGopO2lmKCh6fDApPT0wKXtrPTA7cT0xfWVsc2V7az1jW3orMTI+PjJdfDA7aWYoKGt8MCk9PShjW3orMTY+PjJdfDApKXtrPW9jW2NbKGNbej4+Ml18MCkrMzY+PjJdJjEyN10oeil8MH1lbHNle2s9Y1trPj4yXXwwfXE9KGt8MCk9PS0xO2s9cT8wOno7cT1xPzE6MH1pZigoQnwwKSE9MCl7cj1jW0IrMTI+PjJdfDA7aWYoKHJ8MCk9PShjW0IrMTY+PjJdfDApKXtyPW9jW2NbKGNbQj4+Ml18MCkrMzY+PjJdJjEyN10oQil8MH1lbHNle3I9Y1tyPj4yXXwwfWlmKCEoKHJ8MCk9PS0xKSl7aWYoIXEpe209NzB9fWVsc2V7bT02OH19ZWxzZXttPTY4fWlmKChtfDApPT02OD9xOjApe209NzB9aWYoKG18MCk9PTcwKXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWs7aWYoISgoYVtvPj4wXSYxKT09MCk/KGw9Y1twPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZigoYVtuPj4wXSYxKT09MCl7aT1kO3JldHVybn1qPWNbbis4Pj4yXXwwO2lmKChqfDApPT0wKXtpPWQ7cmV0dXJufXZuKGopO2k9ZDtyZXR1cm59ZnVuY3Rpb24ga2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtkPWk7aT1pKzMwNHwwO249ZDtvPWQrMTkyfDA7bD1kKzE3NnwwO3Y9ZCsxNnwwO3E9Y1tnKzI4Pj4yXXwwO0M9cSs0fDA7Y1tDPj4yXT0oY1tDPj4yXXwwKSsxO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ0ODtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDQ4LG4pfWc9KGNbMTM0NTI+PjJdfDApKyAtMXwwO3A9Y1txKzg+PjJdfDA7aWYoKGNbcSsxMj4+Ml18MCktcD4+Mj4+PjA+Zz4+PjA/KG09Y1twKyhnPDwyKT4+Ml18MCwobXwwKSE9MCk6MCl7dWNbY1soY1ttPj4yXXwwKSs0OD4+Ml0mMzFdKG0sMTIwMTYsMTIwNDJ8MCxvKXwwO0I9cSs0fDA7Qz1jW0I+PjJdfDA7Y1tCPj4yXT1DKyAtMTtpZigoQ3wwKT09MCl7bGNbY1soY1txPj4yXXwwKSs4Pj4yXSYyNTVdKHEpfWNbbCswPj4yXT0wO2NbbCs0Pj4yXT0wO2NbbCs4Pj4yXT0wO2hnKGwsMTApO2lmKChhW2w+PjBdJjEpPT0wKXt5PWwrMXwwO3A9eTtxPWwrOHwwfWVsc2V7eT1sKzh8MDtwPWwrMXwwO3E9eTt5PWNbeT4+Ml18MH1yPWwrNHwwO3Q9bys5NnwwO3U9bysxMDB8MDtzPW8rMTA0fDA7Zz1vO209bCs4fDA7eD1jW2U+PjJdfDA7dz0wO3o9eTthOndoaWxlKDEpe2lmKCh4fDApIT0wKXtBPWNbeCsxMj4+Ml18MDtpZigoQXwwKT09KGNbeCsxNj4+Ml18MCkpe0E9b2NbY1soY1t4Pj4yXXwwKSszNj4+Ml0mMTI3XSh4KXwwfWVsc2V7QT1jW0E+PjJdfDB9aWYoKEF8MCk9PS0xKXtjW2U+PjJdPTA7eD0wO0E9MX1lbHNle0E9MH19ZWxzZXt4PTA7QT0xfUM9Y1tmPj4yXXwwO2Rve2lmKChDfDApIT0wKXtCPWNbQysxMj4+Ml18MDtpZigoQnwwKT09KGNbQysxNj4+Ml18MCkpe0I9b2NbY1soY1tDPj4yXXwwKSszNj4+Ml0mMTI3XShDKXwwfWVsc2V7Qj1jW0I+PjJdfDB9aWYoISgoQnwwKT09LTEpKXtpZihBKXticmVha31lbHNle2JyZWFrIGF9fWVsc2V7Y1tmPj4yXT0wO2s9Mjc7YnJlYWt9fWVsc2V7az0yN319d2hpbGUoMCk7aWYoKGt8MCk9PTI3PyhrPTAsQSk6MCl7YnJlYWt9Qz1hW2w+PjBdfDA7QT0oQyYxKT09MDtpZihBKXtCPShDJjI1NSk+Pj4xfWVsc2V7Qj1jW3I+PjJdfDB9aWYoKHoteXwwKT09KEJ8MCkpe2lmKEEpe3o9KEMmMjU1KT4+PjE7Qj0oQyYyNTUpPj4+MTt5PXo8PDF9ZWxzZXt6PWNbcj4+Ml18MDtCPWNbcj4+Ml18MDt5PXo8PDF9ZG97aWYoIShCPj4+MDx5Pj4+MCkpe2lmKEEpe2FbbCt5KzE+PjBdPTA7YVtsPj4wXT16PDwyO2JyZWFrfWVsc2V7YVsoY1ttPj4yXXwwKSt5Pj4wXT0wO2Nbcj4+Ml09eTticmVha319ZWxzZXtoZyhsLHktQnwwKX19d2hpbGUoMCk7Qj1hW2w+PjBdfDA7aWYoKEImMSk9PTApe0E9MTB9ZWxzZXtBPWNbbD4+Ml18MDtCPUEmMjU1O0E9KEEmLTIpKyAtMXwwfXk9KEImMSk9PTA7aWYoeSl7Qj0oQiYyNTUpPj4+MX1lbHNle0I9Y1tyPj4yXXwwfWRve2lmKCEoQj4+PjA8QT4+PjApKXtpZih5KXthW2wrQSsxPj4wXT0wO2FbbD4+MF09QTw8MTticmVha31lbHNle2FbKGNbbT4+Ml18MCkrQT4+MF09MDtjW3I+PjJdPUE7YnJlYWt9fWVsc2V7aGcobCxBLUJ8MCl9fXdoaWxlKDApO2lmKChhW2w+PjBdJjEpPT0wKXt5PXB9ZWxzZXt5PWNbcT4+Ml18MH16PXkrenwwfUE9Y1t4KzEyPj4yXXwwO2lmKChBfDApPT0oY1t4KzE2Pj4yXXwwKSl7QT1vY1tjWyhjW3g+PjJdfDApKzM2Pj4yXSYxMjddKHgpfDB9ZWxzZXtBPWNbQT4+Ml18MH14PSh6fDApPT0oeXwwKTtkb3tpZih4KXtCPShjW3Q+PjJdfDApPT0oQXwwKTtpZighQj8oY1t1Pj4yXXwwKSE9KEF8MCk6MCl7Qj1vO2s9NjI7YnJlYWt9YVt6Pj4wXT1CPzQzOjQ1O3o9eisxfDA7dz0wfWVsc2V7Qj1vO2s9NjJ9fXdoaWxlKDApO2Rve2lmKChrfDApPT02Mil7d2hpbGUoMSl7az0wO2lmKChjW0I+PjJdfDApPT0oQXwwKSl7YnJlYWt9Qj1CKzR8MDtpZigoQnwwKT09KHN8MCkpe0I9czticmVha31lbHNle2s9NjJ9fUI9Qi1nfDA7QT1CPj4yO2lmKChCfDApPjkyKXticmVhayBhfWlmKChCfDApPDg4KXthW3o+PjBdPWFbMTIwMTYrQT4+MF18MDt6PXorMXwwO3c9dysxfDA7YnJlYWt9aWYoeCl7eT16O2JyZWFrIGF9aWYoKHoteXwwKT49Myl7YnJlYWsgYX1pZigoYVt6KyAtMT4+MF18MCkhPTQ4KXticmVhayBhfWFbej4+MF09YVsxMjAxNitBPj4wXXwwO3o9eisxfDA7dz0wfX13aGlsZSgwKTt4PWNbZT4+Ml18MDtCPXgrMTJ8MDtBPWNbQj4+Ml18MDtpZigoQXwwKT09KGNbeCsxNj4+Ml18MCkpe29jW2NbKGNbeD4+Ml18MCkrNDA+PjJdJjEyN10oeCl8MDtDPXY7dj1DO2NvbnRpbnVlfWVsc2V7Y1tCPj4yXT1BKzQ7Qz12O3Y9Qztjb250aW51ZX19YVt5KzM+PjBdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfUM9Y1szMzQwXXwwO2Nbbj4+Ml09ajtpZigoWWgoeSxDLG4pfDApIT0xKXtjW2g+PjJdPTR9aj1jW2U+PjJdfDA7aWYoKGp8MCkhPTApe249Y1tqKzEyPj4yXXwwO2lmKChufDApPT0oY1tqKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtqPTA7ZT0xfWVsc2V7ZT0wfX1lbHNle2o9MDtlPTF9bj1jW2Y+PjJdfDA7ZG97aWYoKG58MCkhPTApe289Y1tuKzEyPj4yXXwwO2lmKChvfDApPT0oY1tuKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXtuPWNbbz4+Ml18MH1pZighKChufDApPT0tMSkpe2lmKGUpe2JyZWFrfWVsc2V7az05NDticmVha319ZWxzZXtjW2Y+PjJdPTA7az05MjticmVha319ZWxzZXtrPTkyfX13aGlsZSgwKTtpZigoa3wwKT09OTI/ZTowKXtrPTk0fWlmKChrfDApPT05NCl7Y1toPj4yXT1jW2g+PjJdfDJ9Y1tiPj4yXT1qO2lmKChhW2w+PjBdJjEpPT0wKXtpPWQ7cmV0dXJufWY9Y1ttPj4yXXwwO2lmKChmfDApPT0wKXtpPWQ7cmV0dXJufXZuKGYpO2k9ZDtyZXR1cm59Qz1YYSg0KXwwO2NbQz4+Ml09MjEzMDQ7d2IoQ3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gbGkoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MDtuPWk7cD1jW2Y+PjJdfDA7bz0ocHwwKT09KGV8MCk7ZG97aWYobyl7cT0oY1ttKzk2Pj4yXXwwKT09KGJ8MCk7aWYoIXE/KGNbbSsxMDA+PjJdfDApIT0oYnwwKTowKXticmVha31jW2Y+PjJdPWUrMTthW2U+PjBdPXE/NDM6NDU7Y1tnPj4yXT0wO3E9MDtpPW47cmV0dXJuIHF8MH19d2hpbGUoMCk7cT1hW2o+PjBdfDA7aWYoKHEmMSk9PTApe2o9KHEmMjU1KT4+PjF9ZWxzZXtqPWNbais0Pj4yXXwwfWlmKChqfDApIT0wJihifDApPT0oaHwwKSl7bz1jW2w+PjJdfDA7aWYoKG8ta3wwKT49MTYwKXtxPTA7aT1uO3JldHVybiBxfDB9cT1jW2c+PjJdfDA7Y1tsPj4yXT1vKzQ7Y1tvPj4yXT1xO2NbZz4+Ml09MDtxPTA7aT1uO3JldHVybiBxfDB9bD1tKzEwNHwwO2s9bTt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT09KGJ8MCkpe2JyZWFrfWs9ays0fDA7aWYoKGt8MCk9PShsfDApKXtrPWw7YnJlYWt9fWI9ay1tfDA7bT1iPj4yO2lmKChifDApPjkyKXtxPS0xO2k9bjtyZXR1cm4gcXwwfWlmKChkfDApPT0xMHwoZHwwKT09OCl7aWYoKG18MCk+PShkfDApKXtxPS0xO2k9bjtyZXR1cm4gcXwwfX1lbHNlIGlmKChkfDApPT0xNj8oYnwwKT49ODg6MCl7aWYobyl7cT0tMTtpPW47cmV0dXJuIHF8MH1pZigocC1lfDApPj0zKXtxPS0xO2k9bjtyZXR1cm4gcXwwfWlmKChhW3ArIC0xPj4wXXwwKSE9NDgpe3E9LTE7aT1uO3JldHVybiBxfDB9Y1tnPj4yXT0wO3E9YVsxMjAxNittPj4wXXwwO2NbZj4+Ml09cCsxO2FbcD4+MF09cTtxPTA7aT1uO3JldHVybiBxfDB9cT1hWzEyMDE2K20+PjBdfDA7Y1tmPj4yXT1wKzE7YVtwPj4wXT1xO2NbZz4+Ml09KGNbZz4+Ml18MCkrMTtxPTA7aT1uO3JldHVybiBxfDB9ZnVuY3Rpb24gbWkoYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aD1pO2k9aSsxNnwwO2w9aDtkPWNbZCsyOD4+Ml18MDtvPWQrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1uPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtqPWQrMTJ8MDttPWQrOHwwO289Y1ttPj4yXXwwO2lmKChjW2o+PjJdfDApLW8+PjI+Pj4wPm4+Pj4wPyhrPWNbbysobjw8Mik+PjJdfDAsKGt8MCkhPTApOjApe3VjW2NbKGNbaz4+Ml18MCkrMzI+PjJdJjMxXShrLDEyMDE2LDEyMDQyfDAsZSl8MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbD4+Ml09MTM2MDA7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzYwMCxsKX1lPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtrPWNbbT4+Ml18MDtpZigoY1tqPj4yXXwwKS1rPj4yPj4+MD5lPj4+MD8oZz1jW2srKGU8PDIpPj4yXXwwLChnfDApIT0wKTowKXthW2Y+PjBdPW9jW2NbKGNbZz4+Ml18MCkrMTY+PjJdJjEyN10oZyl8MDttY1tjWyhjW2c+PjJdfDApKzIwPj4yXSYxMjddKGIsZyk7bj1kKzR8MDtvPWNbbj4+Ml18MDtjW24+PjJdPW8rIC0xO2lmKChvfDApIT0wKXtpPWg7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTtpPWg7cmV0dXJufW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIG5pKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7aj1pO2k9aSsxNnwwO2w9ajtkPWNbZCsyOD4+Ml18MDtwPWQrNHwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1vPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtrPWQrMTJ8MDtuPWQrOHwwO3A9Y1tuPj4yXXwwO2lmKChjW2s+PjJdfDApLXA+PjI+Pj4wPm8+Pj4wPyhtPWNbcCsobzw8Mik+PjJdfDAsKG18MCkhPTApOjApe3VjW2NbKGNbbT4+Ml18MCkrMzI+PjJdJjMxXShtLDEyMDE2LDEyMDQ4fDAsZSl8MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbD4+Ml09MTM2MDA7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzYwMCxsKX1lPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtsPWNbbj4+Ml18MDtpZigoY1trPj4yXXwwKS1sPj4yPj4+MD5lPj4+MD8oaD1jW2wrKGU8PDIpPj4yXXwwLChofDApIT0wKTowKXthW2Y+PjBdPW9jW2NbKGNbaD4+Ml18MCkrMTI+PjJdJjEyN10oaCl8MDthW2c+PjBdPW9jW2NbKGNbaD4+Ml18MCkrMTY+PjJdJjEyN10oaCl8MDttY1tjWyhjW2g+PjJdfDApKzIwPj4yXSYxMjddKGIsaCk7bz1kKzR8MDtwPWNbbz4+Ml18MDtjW28+PjJdPXArIC0xO2lmKChwfDApIT0wKXtpPWo7cmV0dXJufWxjW2NbKGNbZD4+Ml18MCkrOD4+Ml0mMjU1XShkKTtpPWo7cmV0dXJufXA9WGEoNCl8MDtjW3A+PjJdPTIxMzA0O3diKHB8MCwyMTM3NiwxOTYpfXA9WGEoNCl8MDtjW3A+PjJdPTIxMzA0O3diKHB8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIG9pKGIsZCxlLGYsZyxoLGosayxsLG0sbixvKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDt2YXIgcD0wLHE9MDtwPWk7aWYoYjw8MjQ+PjI0PT1oPDwyND4+MjQpe2lmKChhW2Q+PjBdfDApPT0wKXtqPS0xO2k9cDtyZXR1cm4ganwwfWFbZD4+MF09MDtqPWNbZz4+Ml18MDtjW2c+PjJdPWorMTthW2o+PjBdPTQ2O2c9YVtrPj4wXXwwO2lmKChnJjEpPT0wKXtnPShnJjI1NSk+Pj4xfWVsc2V7Zz1jW2srND4+Ml18MH1pZigoZ3wwKT09MCl7aj0wO2k9cDtyZXR1cm4ganwwfWc9Y1ttPj4yXXwwO2lmKChnLWx8MCk+PTE2MCl7aj0wO2k9cDtyZXR1cm4ganwwfWo9Y1tuPj4yXXwwO2NbbT4+Ml09Zys0O2NbZz4+Ml09ajtqPTA7aT1wO3JldHVybiBqfDB9aWYoYjw8MjQ+PjI0PT1qPDwyND4+MjQpe2g9YVtrPj4wXXwwO2lmKChoJjEpPT0wKXtoPShoJjI1NSk+Pj4xfWVsc2V7aD1jW2srND4+Ml18MH1pZigoaHwwKSE9MCl7aWYoKGFbZD4+MF18MCk9PTApe2o9LTE7aT1wO3JldHVybiBqfDB9Zz1jW20+PjJdfDA7aWYoKGctbHwwKT49MTYwKXtqPTA7aT1wO3JldHVybiBqfDB9aj1jW24+PjJdfDA7Y1ttPj4yXT1nKzQ7Y1tnPj4yXT1qO2Nbbj4+Ml09MDtqPTA7aT1wO3JldHVybiBqfDB9fWg9byszMnwwO2o9bztkb3tpZigoYVtqPj4wXXwwKT09Yjw8MjQ+PjI0KXtoPWo7YnJlYWt9aj1qKzF8MH13aGlsZSgoanwwKSE9KGh8MCkpO2I9aC1vfDA7aWYoKGJ8MCk+MzEpe2o9LTE7aT1wO3JldHVybiBqfDB9bz1hWzEyMDE2K2I+PjBdfDA7aWYoKGJ8MCk9PTIzfChifDApPT0yMil7YVtlPj4wXT04MDtqPWNbZz4+Ml18MDtjW2c+PjJdPWorMTthW2o+PjBdPW87aj0wO2k9cDtyZXR1cm4ganwwfWVsc2UgaWYoKGJ8MCk9PTI0fChifDApPT0yNSl7bj1jW2c+PjJdfDA7aWYoKG58MCkhPShmfDApPyhhW24rIC0xPj4wXSY5NXwwKSE9KGFbZT4+MF0mMTI3fDApOjApe2o9LTE7aT1wO3JldHVybiBqfDB9Y1tnPj4yXT1uKzE7YVtuPj4wXT1vO2o9MDtpPXA7cmV0dXJuIGp8MH1lbHNle2Y9byY5NTtpZigoZnwwKT09KGFbZT4+MF18MCk/KGFbZT4+MF09ZnwxMjgsKGFbZD4+MF18MCkhPTApOjApe2FbZD4+MF09MDtlPWFbaz4+MF18MDtpZigoZSYxKT09MCl7az0oZSYyNTUpPj4+MX1lbHNle2s9Y1trKzQ+PjJdfDB9aWYoKGt8MCkhPTA/KHE9Y1ttPj4yXXwwLChxLWx8MCk8MTYwKTowKXtqPWNbbj4+Ml18MDtjW20+PjJdPXErNDtjW3E+PjJdPWp9fWo9Y1tnPj4yXXwwO2NbZz4+Ml09aisxO2Fbaj4+MF09bztpZigoYnwwKT4yMSl7aj0wO2k9cDtyZXR1cm4ganwwfWNbbj4+Ml09KGNbbj4+Ml18MCkrMTtqPTA7aT1wO3JldHVybiBqfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcGkoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Zz1pO2k9aSsxNnwwO2s9ZztiPWNbYisyOD4+Ml18MDtuPWIrNHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1tPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtoPWIrMTJ8MDtsPWIrOHwwO249Y1tsPj4yXXwwO2lmKChjW2g+PjJdfDApLW4+PjI+Pj4wPm0+Pj4wPyhqPWNbbisobTw8Mik+PjJdfDAsKGp8MCkhPTApOjApe3VjW2NbKGNbaj4+Ml18MCkrNDg+PjJdJjMxXShqLDEyMDE2LDEyMDQyfDAsZCl8MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbaz4+Ml09MTM2MDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzYwOCxrKX1kPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtqPWNbbD4+Ml18MDtpZigoY1toPj4yXXwwKS1qPj4yPj4+MD5kPj4+MD8oZj1jW2orKGQ8PDIpPj4yXXwwLChmfDApIT0wKTowKXtjW2U+PjJdPW9jW2NbKGNbZj4+Ml18MCkrMTY+PjJdJjEyN10oZil8MDttY1tjWyhjW2Y+PjJdfDApKzIwPj4yXSYxMjddKGEsZik7bT1iKzR8MDtuPWNbbT4+Ml18MDtjW20+PjJdPW4rIC0xO2lmKChufDApIT0wKXtpPWc7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtpPWc7cmV0dXJufW49WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfW49WGEoNCl8MDtjW24+PjJdPTIxMzA0O3diKG58MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHFpKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aD1pO2k9aSsxNnwwO2s9aDtiPWNbYisyOD4+Ml18MDtvPWIrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1uPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtqPWIrMTJ8MDttPWIrOHwwO289Y1ttPj4yXXwwO2lmKChjW2o+PjJdfDApLW8+PjI+Pj4wPm4+Pj4wPyhsPWNbbysobjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe3VjW2NbKGNbbD4+Ml18MCkrNDg+PjJdJjMxXShsLDEyMDE2LDEyMDQ4fDAsZCl8MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbaz4+Ml09MTM2MDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzYwOCxrKX1kPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtrPWNbbT4+Ml18MDtpZigoY1tqPj4yXXwwKS1rPj4yPj4+MD5kPj4+MD8oZz1jW2srKGQ8PDIpPj4yXXwwLChnfDApIT0wKTowKXtjW2U+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMTI+PjJdJjEyN10oZyl8MDtjW2Y+PjJdPW9jW2NbKGNbZz4+Ml18MCkrMTY+PjJdJjEyN10oZyl8MDttY1tjWyhjW2c+PjJdfDApKzIwPj4yXSYxMjddKGEsZyk7bj1iKzR8MDtvPWNbbj4+Ml18MDtjW24+PjJdPW8rIC0xO2lmKChvfDApIT0wKXtpPWg7cmV0dXJufWxjW2NbKGNbYj4+Ml18MCkrOD4+Ml0mMjU1XShiKTtpPWg7cmV0dXJufW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfW89WGEoNCl8MDtjW28+PjJdPTIxMzA0O3diKG98MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHJpKGIsZCxlLGYsZyxoLGosayxsLG0sbixvKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDt2YXIgcD0wLHE9MDtwPWk7aWYoKGJ8MCk9PShofDApKXtpZigoYVtkPj4wXXwwKT09MCl7aj0tMTtpPXA7cmV0dXJuIGp8MH1hW2Q+PjBdPTA7aj1jW2c+PjJdfDA7Y1tnPj4yXT1qKzE7YVtqPj4wXT00NjtnPWFbaz4+MF18MDtpZigoZyYxKT09MCl7Zz0oZyYyNTUpPj4+MX1lbHNle2c9Y1trKzQ+PjJdfDB9aWYoKGd8MCk9PTApe2o9MDtpPXA7cmV0dXJuIGp8MH1nPWNbbT4+Ml18MDtpZigoZy1sfDApPj0xNjApe2o9MDtpPXA7cmV0dXJuIGp8MH1qPWNbbj4+Ml18MDtjW20+PjJdPWcrNDtjW2c+PjJdPWo7aj0wO2k9cDtyZXR1cm4ganwwfWlmKChifDApPT0oanwwKSl7aD1hW2s+PjBdfDA7aWYoKGgmMSk9PTApe2g9KGgmMjU1KT4+PjF9ZWxzZXtoPWNbays0Pj4yXXwwfWlmKChofDApIT0wKXtpZigoYVtkPj4wXXwwKT09MCl7aj0tMTtpPXA7cmV0dXJuIGp8MH1nPWNbbT4+Ml18MDtpZigoZy1sfDApPj0xNjApe2o9MDtpPXA7cmV0dXJuIGp8MH1qPWNbbj4+Ml18MDtjW20+PjJdPWcrNDtjW2c+PjJdPWo7Y1tuPj4yXT0wO2o9MDtpPXA7cmV0dXJuIGp8MH19aD1vKzEyOHwwO2o9bztkb3tpZigoY1tqPj4yXXwwKT09KGJ8MCkpe2g9ajticmVha31qPWorNHwwfXdoaWxlKChqfDApIT0oaHwwKSk7Yj1oLW98MDtoPWI+PjI7aWYoKGJ8MCk+MTI0KXtqPS0xO2k9cDtyZXR1cm4ganwwfW89YVsxMjAxNitoPj4wXXwwO2lmKChofDApPT0yNHwoaHwwKT09MjUpe249Y1tnPj4yXXwwO2lmKChufDApIT0oZnwwKT8oYVtuKyAtMT4+MF0mOTV8MCkhPShhW2U+PjBdJjEyN3wwKTowKXtqPS0xO2k9cDtyZXR1cm4ganwwfWNbZz4+Ml09bisxO2Fbbj4+MF09bztqPTA7aT1wO3JldHVybiBqfDB9ZWxzZSBpZighKChofDApPT0yM3woaHwwKT09MjIpKXtmPW8mOTU7aWYoKGZ8MCk9PShhW2U+PjBdfDApPyhhW2U+PjBdPWZ8MTI4LChhW2Q+PjBdfDApIT0wKTowKXthW2Q+PjBdPTA7ZT1hW2s+PjBdfDA7aWYoKGUmMSk9PTApe2s9KGUmMjU1KT4+PjF9ZWxzZXtrPWNbays0Pj4yXXwwfWlmKChrfDApIT0wPyhxPWNbbT4+Ml18MCwocS1sfDApPDE2MCk6MCl7aj1jW24+PjJdfDA7Y1ttPj4yXT1xKzQ7Y1txPj4yXT1qfX19ZWxzZXthW2U+PjBdPTgwfWo9Y1tnPj4yXXwwO2NbZz4+Ml09aisxO2Fbaj4+MF09bztpZigoYnwwKT44NCl7aj0wO2k9cDtyZXR1cm4ganwwfWNbbj4+Ml09KGNbbj4+Ml18MCkrMTtqPTA7aT1wO3JldHVybiBqfDB9ZnVuY3Rpb24gc2koYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gdGkoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHVpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aj1pO2k9aSszMnwwO209ajtuPWorMjR8MDtrPWorMTJ8MDtpZigoY1tmKzQ+PjJdJjF8MCk9PTApe2w9Y1soY1tkPj4yXXwwKSsyND4+Ml18MDtjW24+PjJdPWNbZT4+Ml07bz1oJjE7Y1ttKzA+PjJdPWNbbiswPj4yXTt3Y1tsJjYzXShiLGQsbSxmLGcsbyk7aT1qO3JldHVybn1kPWNbZisyOD4+Ml18MDtvPWQrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtpZighKChjWzM0MDBdfDApPT0tMSkpe2NbbT4+Ml09MTM2MDA7Y1ttKzQ+PjJdPTIwODtjW20rOD4+Ml09MDtjZygxMzYwMCxtKX1mPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDttPWNbZCs4Pj4yXXwwO2lmKChjW2QrMTI+PjJdfDApLW0+PjI+Pj4wPmY+Pj4wPyhsPWNbbSsoZjw8Mik+PjJdfDAsKGx8MCkhPTApOjApe2c9ZCs0fDA7bz1jW2c+PjJdfDA7Y1tnPj4yXT1vKyAtMTtpZigob3wwKT09MCl7bGNbY1soY1tkPj4yXXwwKSs4Pj4yXSYyNTVdKGQpfW09Y1tsPj4yXXwwO2lmKGgpe21jW2NbbSsyND4+Ml0mMTI3XShrLGwpfWVsc2V7bWNbY1ttKzI4Pj4yXSYxMjddKGssbCl9bj1hW2s+PjBdfDA7aWYoKG4mMSk9PTApe2g9aysxfDA7ZD1oO2w9ays4fDB9ZWxzZXtsPWsrOHwwO2Q9Y1tsPj4yXXwwO2g9aysxfDB9bT1rKzR8MDt3aGlsZSgxKXtmPShuJjEpPT0wO2lmKGYpe2c9aDtuPShuJjI1NSk+Pj4xfWVsc2V7Zz1jW2w+PjJdfDA7bj1jW20+PjJdfDB9aWYoKGR8MCk9PShnK258MCkpe2JyZWFrfW89YVtkPj4wXXwwO249Y1tlPj4yXXwwO2Rve2lmKChufDApIT0wKXtmPW4rMjR8MDtnPWNbZj4+Ml18MDtpZigoZ3wwKSE9KGNbbisyOD4+Ml18MCkpe2NbZj4+Ml09ZysxO2FbZz4+MF09bzticmVha31pZigoeGNbY1soY1tuPj4yXXwwKSs1Mj4+Ml0mNjNdKG4sbyYyNTUpfDApPT0tMSl7Y1tlPj4yXT0wfX19d2hpbGUoMCk7bj1hW2s+PjBdfDA7ZD1kKzF8MH1jW2I+PjJdPWNbZT4+Ml07aWYoZil7aT1qO3JldHVybn1rPWNbays4Pj4yXXwwO2lmKChrfDApPT0wKXtpPWo7cmV0dXJufXZuKGspO2k9ajtyZXR1cm59bz1YYSg0KXwwO2Nbbz4+Ml09MjEzMDQ7d2Iob3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gdmkoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtkPWk7aT1pKzY0fDA7cj1kO3E9ZCsxNnwwO249ZCsyNHwwO209ZCszNnwwO2s9ZCs4fDA7bD1kKzR8MDtvPWQrMTJ8MDthW3ErMD4+MF09YVsxMjI2ND4+MF18MDthW3ErMT4+MF09YVsxMjI2NT4+MF18MDthW3ErMj4+MF09YVsxMjI2Nj4+MF18MDthW3ErMz4+MF09YVsxMjI2Nz4+MF18MDthW3ErND4+MF09YVsxMjI2OD4+MF18MDthW3ErNT4+MF09YVsxMjI2OT4+MF18MDt0PXErMXwwO3A9Zis0fDA7cz1jW3A+PjJdfDA7aWYoKHMmMjA0OHwwKSE9MCl7YVt0Pj4wXT00Mzt0PXErMnwwfWlmKChzJjUxMnwwKSE9MCl7YVt0Pj4wXT0zNTt0PXQrMXwwfWFbdD4+MF09MTA4O3Q9dCsxfDA7dT1zJjc0O2Rve2lmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZSBpZigodXwwKT09OCl7aWYoKHMmMTYzODR8MCk9PTApe2FbdD4+MF09MTIwO2JyZWFrfWVsc2V7YVt0Pj4wXT04ODticmVha319ZWxzZXthW3Q+PjBdPTEwMH19d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO2Nbcj4+Ml09aDtxPXdpKG4sMTIsdSxxLHIpfDA7aD1uK3F8MDtwPWNbcD4+Ml0mMTc2O2Rve2lmKChwfDApPT0zMil7cD1ofWVsc2UgaWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh1PWFbbisxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtqPTIxfX1lbHNle2o9MjF9fXdoaWxlKDApO2lmKChqfDApPT0yMSl7cD1ufWo9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09ajtqPWorNHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTt4aShuLHAsaCxtLGssbCxvKTtqPWNbbz4+Ml18MDt0PWorNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1tsPj4yXXwwO1djKGIscyxtLHQsdSxmLGcpO2k9ZDtyZXR1cm59bGNbY1soY1tqPj4yXXwwKSs4Pj4yXSYyNTVdKGopO3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1tsPj4yXXwwO1djKGIscyxtLHQsdSxmLGcpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gd2koYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MDtnPWk7aT1pKzE2fDA7aD1nO2NbaD4+Ml09ZjtkPWliKGR8MCl8MDtlPVFiKGF8MCxifDAsZXwwLGh8MCl8MDtpZigoZHwwKT09MCl7aT1nO3JldHVybiBlfDB9aWIoZHwwKXwwO2k9ZztyZXR1cm4gZXwwfWZ1bmN0aW9uIHhpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7az1pO2k9aSszMnwwO3A9aztsPWsrMTJ8MDtuPWNbaj4+Ml18MDtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbcD4+Ml09MTM0NTY7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ1NixwKX1yPShjWzEzNDYwPj4yXXwwKSsgLTF8MDtzPWNbbis4Pj4yXXwwO2lmKCEoKGNbbisxMj4+Ml18MCktcz4+Mj4+PjA+cj4+PjApKXt2PVhhKDQpfDA7Y1t2Pj4yXT0yMTMwNDt3Yih2fDAsMjEzNzYsMTk2KX1uPWNbcysocjw8Mik+PjJdfDA7aWYoKG58MCk9PTApe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfWo9Y1tqPj4yXXwwO2lmKCEoKGNbMzQwMF18MCk9PS0xKSl7Y1twPj4yXT0xMzYwMDtjW3ArND4+Ml09MjA4O2NbcCs4Pj4yXT0wO2NnKDEzNjAwLHApfXA9KGNbMTM2MDQ+PjJdfDApKyAtMXwwO3I9Y1tqKzg+PjJdfDA7aWYoISgoY1tqKzEyPj4yXXwwKS1yPj4yPj4+MD5wPj4+MCkpe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfWo9Y1tyKyhwPDwyKT4+Ml18MDtpZigoanwwKT09MCl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9bWNbY1soY1tqPj4yXXwwKSsyMD4+Ml0mMTI3XShsLGopO3A9YVtsPj4wXXwwO2lmKChwJjEpPT0wKXtwPShwJjI1NSk+Pj4xfWVsc2V7cD1jW2wrND4+Ml18MH1pZigocHwwKSE9MCl7Y1toPj4yXT1mO3A9YVtiPj4wXXwwO2lmKHA8PDI0Pj4yND09NDN8cDw8MjQ+PjI0PT00NSl7dj14Y1tjWyhjW24+PjJdfDApKzI4Pj4yXSY2M10obixwKXwwO3A9Y1toPj4yXXwwO2NbaD4+Ml09cCsxO2FbcD4+MF09djtwPWIrMXwwfWVsc2V7cD1ifWlmKCgoZS1wfDApPjE/KGFbcD4+MF18MCk9PTQ4OjApPyhxPXArMXwwLHY9YVtxPj4wXXwwLHY8PDI0Pj4yND09ODh8djw8MjQ+PjI0PT0xMjApOjApe3Y9eGNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mNjNdKG4sNDgpfDA7dT1jW2g+PjJdfDA7Y1toPj4yXT11KzE7YVt1Pj4wXT12O3U9eGNbY1soY1tuPj4yXXwwKSsyOD4+Ml0mNjNdKG4sYVtxPj4wXXwwKXwwO3Y9Y1toPj4yXXwwO2NbaD4+Ml09disxO2Fbdj4+MF09dTtwPXArMnwwfWlmKChwfDApIT0oZXwwKT8obz1lKyAtMXwwLG8+Pj4wPnA+Pj4wKTowKXtxPXA7ZG97dj1hW3E+PjBdfDA7YVtxPj4wXT1hW28+PjBdfDA7YVtvPj4wXT12O3E9cSsxfDA7bz1vKyAtMXwwfXdoaWxlKHE+Pj4wPG8+Pj4wKX1qPW9jW2NbKGNbaj4+Ml18MCkrMTY+PjJdJjEyN10oail8MDtpZihwPj4+MDxlPj4+MCl7cT1sKzF8MDtzPWwrNHwwO289bCs4fDA7dT0wO3Q9MDtyPXA7d2hpbGUoMSl7dj1hWygoYVtsPj4wXSYxKT09MD9xOmNbbz4+Ml18MCkrdD4+MF18MDtpZih2PDwyND4+MjQhPTAmKHV8MCk9PSh2PDwyND4+MjR8MCkpe3U9Y1toPj4yXXwwO2NbaD4+Ml09dSsxO2FbdT4+MF09ajt1PWFbbD4+MF18MDtpZigodSYxKT09MCl7dj0odSYyNTUpPj4+MX1lbHNle3Y9Y1tzPj4yXXwwfXU9MDt0PSh0Pj4+MDwodisgLTF8MCk+Pj4wJjEpK3R8MH13PXhjW2NbKGNbbj4+Ml18MCkrMjg+PjJdJjYzXShuLGFbcj4+MF18MCl8MDt2PWNbaD4+Ml18MDtjW2g+PjJdPXYrMTthW3Y+PjBdPXc7cj1yKzF8MDtpZighKHI+Pj4wPGU+Pj4wKSl7YnJlYWt9ZWxzZXt1PXUrMXwwfX19bz1mKyhwLWIpfDA7bj1jW2g+PjJdfDA7aWYoKG98MCkhPShufDApPyhtPW4rIC0xfDAsbT4+PjA+bz4+PjApOjApe2Rve3c9YVtvPj4wXXwwO2Fbbz4+MF09YVttPj4wXXwwO2FbbT4+MF09dztvPW8rMXwwO209bSsgLTF8MH13aGlsZShvPj4+MDxtPj4+MCl9fWVsc2V7dWNbY1soY1tuPj4yXXwwKSszMj4+Ml0mMzFdKG4sYixlLGYpfDA7Y1toPj4yXT1mKyhlLWIpfWlmKChkfDApPT0oZXwwKSl7Yj1jW2g+PjJdfDB9ZWxzZXtiPWYrKGQtYil8MH1jW2c+PjJdPWI7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59bD1jW2wrOD4+Ml18MDtpZigobHwwKT09MCl7aT1rO3JldHVybn12bihsKTtpPWs7cmV0dXJufWZ1bmN0aW9uIHlpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2Q9aTtpPWkrOTZ8MDtuPWQrOHwwO3M9ZDtvPWQrNjR8MDtrPWQrNjB8MDttPWQrNTZ8MDtwPWQrNTJ8MDt1PXM7Y1t1Pj4yXT0zNztjW3UrND4+Ml09MDt1PXMrMXwwO3E9Zis0fDA7cj1jW3E+PjJdfDA7aWYoKHImMjA0OHwwKSE9MCl7YVt1Pj4wXT00Mzt1PXMrMnwwfWlmKChyJjUxMnwwKSE9MCl7YVt1Pj4wXT0zNTt1PXUrMXwwfXQ9dSsyfDA7YVt1Pj4wXT0xMDg7YVt1KzE+PjBdPTEwODt1PXImNzQ7ZG97aWYoKHV8MCk9PTY0KXthW3Q+PjBdPTExMX1lbHNlIGlmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNle2FbdD4+MF09MTAwfX13aGlsZSgwKTtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dT1jWzMzNDBdfDA7dD1uO2NbdD4+Ml09aDtjW3QrND4+Ml09ajtqPXdpKG8sMjIsdSxzLG4pfDA7aD1vK2p8MDtxPWNbcT4+Ml0mMTc2O2Rve2lmKChxfDApPT0zMil7cT1ofWVsc2UgaWYoKHF8MCk9PTE2KXtxPWFbbz4+MF18MDtpZihxPDwyND4+MjQ9PTQzfHE8PDI0Pj4yND09NDUpe3E9bysxfDA7YnJlYWt9aWYoKGp8MCk+MSZxPDwyND4+MjQ9PTQ4Pyh1PWFbbysxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3E9bysyfDB9ZWxzZXtsPTIxfX1lbHNle2w9MjF9fXdoaWxlKDApO2lmKChsfDApPT0yMSl7cT1vfWw9Y1tmKzI4Pj4yXXwwO2NbcD4+Ml09bDtsPWwrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTt4aShvLHEsaCxuLGssbSxwKTtsPWNbcD4+Ml18MDt0PWwrNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1ttPj4yXXwwO1djKGIscyxuLHQsdSxmLGcpO2k9ZDtyZXR1cm59bGNbY1soY1tsPj4yXXwwKSs4Pj4yXSYyNTVdKGwpO3M9Y1tlPj4yXXwwO3Q9Y1trPj4yXXwwO3U9Y1ttPj4yXXwwO1djKGIscyxuLHQsdSxmLGcpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gemkoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDttPWk7aT1pKzY0fDA7cj1tO3E9bSsxNnwwO249bSsyNHwwO2s9bSszNnwwO2Q9bSs4fDA7aj1tKzR8MDtvPW0rMTJ8MDthW3ErMD4+MF09YVsxMjI2ND4+MF18MDthW3ErMT4+MF09YVsxMjI2NT4+MF18MDthW3ErMj4+MF09YVsxMjI2Nj4+MF18MDthW3ErMz4+MF09YVsxMjI2Nz4+MF18MDthW3ErND4+MF09YVsxMjI2OD4+MF18MDthW3ErNT4+MF09YVsxMjI2OT4+MF18MDt0PXErMXwwO3A9Zis0fDA7cz1jW3A+PjJdfDA7aWYoKHMmMjA0OHwwKSE9MCl7YVt0Pj4wXT00Mzt0PXErMnwwfWlmKChzJjUxMnwwKSE9MCl7YVt0Pj4wXT0zNTt0PXQrMXwwfWFbdD4+MF09MTA4O3Q9dCsxfDA7dT1zJjc0O2Rve2lmKCh1fDApPT04KXtpZigocyYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTExN319d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO2Nbcj4+Ml09aDtxPXdpKG4sMTIsdSxxLHIpfDA7aD1uK3F8MDtwPWNbcD4+Ml0mMTc2O2Rve2lmKChwfDApPT0zMil7cD1ofWVsc2UgaWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh1PWFbbisxPj4wXXwwLHU8PDI0Pj4yND09ODh8dTw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtsPTIxfX1lbHNle2w9MjF9fXdoaWxlKDApO2lmKChsfDApPT0yMSl7cD1ufWw9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09bDtsPWwrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTt4aShuLHAsaCxrLGQsaixvKTtsPWNbbz4+Ml18MDt0PWwrNHwwO3U9Y1t0Pj4yXXwwO2NbdD4+Ml09dSsgLTE7aWYoKHV8MCkhPTApe3M9Y1tlPj4yXXwwO3Q9Y1tkPj4yXXwwO3U9Y1tqPj4yXXwwO1djKGIscyxrLHQsdSxmLGcpO2k9bTtyZXR1cm59bGNbY1soY1tsPj4yXXwwKSs4Pj4yXSYyNTVdKGwpO3M9Y1tlPj4yXXwwO3Q9Y1tkPj4yXXwwO3U9Y1tqPj4yXXwwO1djKGIscyxrLHQsdSxmLGcpO2k9bTtyZXR1cm59ZnVuY3Rpb24gQWkoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7ZD1pO2k9aSs5NnwwO249ZCs4fDA7cz1kO289ZCs2NHwwO2s9ZCs2MHwwO209ZCs1NnwwO3A9ZCs1MnwwO3U9cztjW3U+PjJdPTM3O2NbdSs0Pj4yXT0wO3U9cysxfDA7cT1mKzR8MDtyPWNbcT4+Ml18MDtpZigociYyMDQ4fDApIT0wKXthW3U+PjBdPTQzO3U9cysyfDB9aWYoKHImNTEyfDApIT0wKXthW3U+PjBdPTM1O3U9dSsxfDB9dD11KzJ8MDthW3U+PjBdPTEwODthW3UrMT4+MF09MTA4O3U9ciY3NDtkb3tpZigodXwwKT09NjQpe2FbdD4+MF09MTExfWVsc2UgaWYoKHV8MCk9PTgpe2lmKChyJjE2Mzg0fDApPT0wKXthW3Q+PjBdPTEyMDticmVha31lbHNle2FbdD4+MF09ODg7YnJlYWt9fWVsc2V7YVt0Pj4wXT0xMTd9fXdoaWxlKDApO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX11PWNbMzM0MF18MDt0PW47Y1t0Pj4yXT1oO2NbdCs0Pj4yXT1qO2o9d2kobywyMyx1LHMsbil8MDtoPW8ranwwO3E9Y1txPj4yXSYxNzY7ZG97aWYoKHF8MCk9PTMyKXtxPWh9ZWxzZSBpZigocXwwKT09MTYpe3E9YVtvPj4wXXwwO2lmKHE8PDI0Pj4yND09NDN8cTw8MjQ+PjI0PT00NSl7cT1vKzF8MDticmVha31pZigoanwwKT4xJnE8PDI0Pj4yND09NDg/KHU9YVtvKzE+PjBdfDAsdTw8MjQ+PjI0PT04OHx1PDwyND4+MjQ9PTEyMCk6MCl7cT1vKzJ8MH1lbHNle2w9MjF9fWVsc2V7bD0yMX19d2hpbGUoMCk7aWYoKGx8MCk9PTIxKXtxPW99bD1jW2YrMjg+PjJdfDA7Y1twPj4yXT1sO2w9bCs0fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO3hpKG8scSxoLG4sayxtLHApO2w9Y1twPj4yXXwwO3Q9bCs0fDA7dT1jW3Q+PjJdfDA7Y1t0Pj4yXT11KyAtMTtpZigodXwwKSE9MCl7cz1jW2U+PjJdfDA7dD1jW2s+PjJdfDA7dT1jW20+PjJdfDA7V2MoYixzLG4sdCx1LGYsZyk7aT1kO3JldHVybn1sY1tjWyhjW2w+PjJdfDApKzg+PjJdJjI1NV0obCk7cz1jW2U+PjJdfDA7dD1jW2s+PjJdfDA7dT1jW20+PjJdfDA7V2MoYixzLG4sdCx1LGYsZyk7aT1kO3JldHVybn1mdW5jdGlvbiBCaShiLGQsZSxmLGcsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aj0rajt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDtkPWk7aT1pKzEyOHwwO3A9ZDt1PWQrNjR8MDtyPWQrOTJ8MDt0PWQrODB8MDtsPWQrNzZ8MDtuPWQrNzJ8MDtvPWQrODR8MDttPWQrODh8MDt2PXU7Y1t2Pj4yXT0zNztjW3YrND4+Ml09MDt2PXUrMXwwO3M9Zis0fDA7dz1jW3M+PjJdfDA7aWYoKHcmMjA0OHwwKSE9MCl7YVt2Pj4wXT00Mzt2PXUrMnwwfWlmKCh3JjEwMjR8MCkhPTApe2Fbdj4+MF09MzU7dj12KzF8MH14PXcmMjYwO3k9dz4+PjE0O2Rve2lmKCh4fDApPT0yNjApe2lmKCh5JjF8MCk9PTApe2Fbdj4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt2Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt2Pj4wXT00Njt3PXYrMnwwO2FbdisxPj4wXT00MjtpZigoeHwwKT09NCl7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDI7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MDt2PTE7YnJlYWt9fWVsc2UgaWYoKHh8MCk9PTI1Nil7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDE7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT02OTt2PTE7YnJlYWt9fWVsc2V7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDM7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MTt2PTE7YnJlYWt9fX19d2hpbGUoMCk7Y1t0Pj4yXT1yO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtpZih2KXtjW3A+PjJdPWNbZis4Pj4yXTt5PXArNHwwO2hbaz4+M109ajtjW3k+PjJdPWNbaz4+Ml07Y1t5KzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9ZWxzZXtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWlmKCh3fDApPjI5KXt3PShhWzEzMzY4XXwwKT09MDtpZih2KXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2NbcD4+Ml09Y1tmKzg+PjJdO3k9cCs0fDA7aFtrPj4zXT1qO2NbeT4+Ml09Y1trPj4yXTtjW3krND4+Ml09Y1trKzQ+PjJdO3c9Q2kodCx3LHUscCl8MH1lbHNle2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eT1wKzR8MDtoW2s+PjNdPWo7Y1t5Pj4yXT1jW2s+PjJdO2NbeSs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0xNil7cz1hW3Y+PjBdfDA7aWYoczw8MjQ+PjI0PT00M3xzPDwyND4+MjQ9PTQ1KXtzPXYrMXwwO2JyZWFrfWlmKCh3fDApPjEmczw8MjQ+PjI0PT00OD8oeT1hW3YrMT4+MF18MCx5PDwyND4+MjQ9PTg4fHk8PDI0Pj4yND09MTIwKTowKXtzPXYrMnwwfWVsc2V7cT00OH19ZWxzZSBpZigoc3wwKT09MzIpe3M9dX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwxKXwwO2lmKChwfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXg9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09eDt4PXgrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtEaShyLHMsdSxwLGwsbixvKTtvPWNbbz4+Ml18MDt4PW8rNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1XYyhtLGNbZT4+Ml18MCxwLGNbbD4+Ml18MCxjW24+PjJdfDAsZixnKTt5PWNbbT4+Ml18MDtjW2U+PjJdPXk7Y1tiPj4yXT15O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1kO3JldHVybn12bih0KTtpPWQ7cmV0dXJufWZ1bmN0aW9uIENpKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWY7Y1tnPj4yXT1lO2I9aWIoYnwwKXwwO2Q9SWIoYXwwLGR8MCxnfDApfDA7aWYoKGJ8MCk9PTApe2k9ZjtyZXR1cm4gZHwwfWliKGJ8MCl8MDtpPWY7cmV0dXJuIGR8MH1mdW5jdGlvbiBEaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO2s9aTtpPWkrMzJ8MDtvPWs7bD1rKzEyfDA7bT1jW2o+PjJdfDA7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW28+PjJdPTEzNDU2O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NTYsbyl9dD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7cj1jW20rOD4+Ml18MDtpZighKChjW20rMTI+PjJdfDApLXI+PjI+Pj4wPnQ+Pj4wKSl7eT1YYSg0KXwwO2NbeT4+Ml09MjEzMDQ7d2IoeXwwLDIxMzc2LDE5Nil9bT1jW3IrKHQ8PDIpPj4yXXwwO2lmKChtfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbaj4+Ml18MDtpZighKChjWzM0MDBdfDApPT0tMSkpe2Nbbz4+Ml09MTM2MDA7Y1tvKzQ+PjJdPTIwODtjW28rOD4+Ml09MDtjZygxMzYwMCxvKX1vPShjWzEzNjA0Pj4yXXwwKSsgLTF8MDtyPWNbais4Pj4yXXwwO2lmKCEoKGNbaisxMj4+Ml18MCktcj4+Mj4+PjA+bz4+PjApKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1vPWNbcisobzw8Mik+PjJdfDA7aWYoKG98MCk9PTApe3k9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfW1jW2NbKGNbbz4+Ml18MCkrMjA+PjJdJjEyN10obCxvKTtjW2g+PjJdPWY7aj1hW2I+PjBdfDA7aWYoajw8MjQ+PjI0PT00M3xqPDwyND4+MjQ9PTQ1KXt5PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGopfDA7dD1jW2g+PjJdfDA7Y1toPj4yXT10KzE7YVt0Pj4wXT15O3Q9YisxfDB9ZWxzZXt0PWJ9aj1lO2E6ZG97aWYoKChqLXR8MCk+MT8oYVt0Pj4wXXwwKT09NDg6MCk/KHA9dCsxfDAseT1hW3A+PjBdfDAseTw8MjQ+PjI0PT04OHx5PDwyND4+MjQ9PTEyMCk6MCl7eT14Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSY2M10obSw0OCl8MDt4PWNbaD4+Ml18MDtjW2g+PjJdPXgrMTthW3g+PjBdPXk7dD10KzJ8MDt4PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGFbcD4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrMTthW3k+PjBdPXg7aWYodD4+PjA8ZT4+PjApe3I9dDt3aGlsZSgxKXtwPWFbcj4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9eT1wPDwyND4+MjQ7aWYoISgoeSsgLTQ4fDApPj4+MDwxMCk/ISgoKHl8MzIpKyAtOTd8MCk+Pj4wPDYpOjApe3A9dDticmVhayBhfXI9cisxfDA7aWYoIShyPj4+MDxlPj4+MCkpe3A9dDticmVha319fWVsc2V7cD10O3I9dH19ZWxzZXtzPTE1fX13aGlsZSgwKTtiOmRve2lmKChzfDApPT0xNSl7aWYodD4+PjA8ZT4+PjApe3I9dDt3aGlsZSgxKXtwPWFbcj4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cz1yKzF8MDtpZighKCgocDw8MjQ+PjI0KSsgLTQ4fDApPj4+MDwxMCkpe3A9dDticmVhayBifWlmKHM+Pj4wPGU+Pj4wKXtyPXN9ZWxzZXtwPXQ7cj1zO2JyZWFrfX19ZWxzZXtwPXQ7cj10fX19d2hpbGUoMCk7cz1hW2w+PjBdfDA7aWYoKHMmMSk9PTApe3M9KHMmMjU1KT4+PjF9ZWxzZXtzPWNbbCs0Pj4yXXwwfWlmKChzfDApIT0wKXtpZigocHwwKSE9KHJ8MCk/KHE9cisgLTF8MCxxPj4+MD5wPj4+MCk6MCl7cz1wO2Rve3k9YVtzPj4wXXwwO2Fbcz4+MF09YVtxPj4wXXwwO2FbcT4+MF09eTtzPXMrMXwwO3E9cSsgLTF8MH13aGlsZShzPj4+MDxxPj4+MCl9dT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7aWYocD4+PjA8cj4+PjApe3E9bCsxfDA7dD1sKzR8MDtzPWwrOHwwO3g9MDt3PTA7dj1wO3doaWxlKDEpe3k9YVsoKGFbbD4+MF0mMSk9PTA/cTpjW3M+PjJdfDApK3c+PjBdfDA7aWYoeTw8MjQ+PjI0PjAmKHh8MCk9PSh5PDwyND4+MjR8MCkpe3g9Y1toPj4yXXwwO2NbaD4+Ml09eCsxO2FbeD4+MF09dTt4PWFbbD4+MF18MDtpZigoeCYxKT09MCl7eT0oeCYyNTUpPj4+MX1lbHNle3k9Y1t0Pj4yXXwwfXg9MDt3PSh3Pj4+MDwoeSsgLTF8MCk+Pj4wJjEpK3d8MH16PXhjW2NbKGNbbT4+Ml18MCkrMjg+PjJdJjYzXShtLGFbdj4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrMTthW3k+PjBdPXo7dj12KzF8MDtpZighKHY+Pj4wPHI+Pj4wKSl7YnJlYWt9ZWxzZXt4PXgrMXwwfX19cD1mKyhwLWIpfDA7cT1jW2g+PjJdfDA7aWYoKHB8MCkhPShxfDApPyhuPXErIC0xfDAsbj4+PjA+cD4+PjApOjApe2Rve3o9YVtwPj4wXXwwO2FbcD4+MF09YVtuPj4wXXwwO2Fbbj4+MF09ejtwPXArMXwwO249bisgLTF8MH13aGlsZShwPj4+MDxuPj4+MCl9fWVsc2V7dWNbY1soY1ttPj4yXXwwKSszMj4+Ml0mMzFdKG0scCxyLGNbaD4+Ml18MCl8MDtjW2g+PjJdPShjW2g+PjJdfDApKyhyLXApfWM6ZG97aWYocj4+PjA8ZT4+PjApe3doaWxlKDEpe249YVtyPj4wXXwwO2lmKG48PDI0Pj4yND09NDYpe2JyZWFrfXk9eGNbY1soY1ttPj4yXXwwKSsyOD4+Ml0mNjNdKG0sbil8MDt6PWNbaD4+Ml18MDtjW2g+PjJdPXorMTthW3o+PjBdPXk7cj1yKzF8MDtpZighKHI+Pj4wPGU+Pj4wKSl7YnJlYWsgY319eT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7ej1jW2g+PjJdfDA7Y1toPj4yXT16KzE7YVt6Pj4wXT15O3I9cisxfDB9fXdoaWxlKDApO3VjW2NbKGNbbT4+Ml18MCkrMzI+PjJdJjMxXShtLHIsZSxjW2g+PjJdfDApfDA7bT0oY1toPj4yXXwwKSsoai1yKXwwO2NbaD4+Ml09bTtpZigoZHwwKSE9KGV8MCkpe209ZisoZC1iKXwwfWNbZz4+Ml09bTtpZigoYVtsPj4wXSYxKT09MCl7aT1rO3JldHVybn1sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXtpPWs7cmV0dXJufXZuKGwpO2k9aztyZXR1cm59ZnVuY3Rpb24gRWkoYixkLGUsZixnLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9K2o7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtkPWk7aT1pKzEyOHwwO3A9ZDt1PWQrNjR8MDtyPWQrOTJ8MDt0PWQrODB8MDtsPWQrNzZ8MDttPWQrNzJ8MDtvPWQrODR8MDtuPWQrODh8MDt4PXU7Y1t4Pj4yXT0zNztjW3grND4+Ml09MDt4PXUrMXwwO3M9Zis0fDA7dj1jW3M+PjJdfDA7aWYoKHYmMjA0OHwwKSE9MCl7YVt4Pj4wXT00Mzt4PXUrMnwwfWlmKCh2JjEwMjR8MCkhPTApe2FbeD4+MF09MzU7eD14KzF8MH13PXYmMjYwO3Y9dj4+PjE0O2Rve2lmKCh3fDApPT0yNjApe2FbeD4+MF09NzY7dz14KzF8MDtpZigodiYxfDApPT0wKXthW3c+PjBdPTk3O3Y9MDticmVha31lbHNle2Fbdz4+MF09NjU7dj0wO2JyZWFrfX1lbHNle2FbeD4+MF09NDY7YVt4KzE+PjBdPTQyO2FbeCsyPj4wXT03Njt4PXgrM3wwO2lmKCh3fDApPT0yNTYpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAxO3Y9MTticmVha31lbHNle2FbeD4+MF09Njk7dj0xO2JyZWFrfX1lbHNlIGlmKCh3fDApPT00KXtpZigodiYxfDApPT0wKXthW3g+PjBdPTEwMjt2PTE7YnJlYWt9ZWxzZXthW3g+PjBdPTcwO3Y9MTticmVha319ZWxzZXtpZigodiYxfDApPT0wKXthW3g+PjBdPTEwMzt2PTE7YnJlYWt9ZWxzZXthW3g+PjBdPTcxO3Y9MTticmVha319fX13aGlsZSgwKTtjW3Q+PjJdPXI7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2lmKHYpe2NbcD4+Ml09Y1tmKzg+PjJdO3g9cCs0fDA7aFtrPj4zXT1qO2NbeD4+Ml09Y1trPj4yXTtjW3grND4+Ml09Y1trKzQ+PjJdO3c9d2kociwzMCx3LHUscCl8MH1lbHNle2hbaz4+M109ajtjW3A+PjJdPWNbaz4+Ml07Y1twKzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9aWYoKHd8MCk+Mjkpe3c9KGFbMTMzNjhdfDApPT0wO2lmKHYpe2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eD1wKzR8MDtoW2s+PjNdPWo7Y1t4Pj4yXT1jW2s+PjJdO2NbeCs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfWVsc2V7aWYodz8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0xNil7cz1hW3Y+PjBdfDA7aWYoczw8MjQ+PjI0PT00M3xzPDwyND4+MjQ9PTQ1KXtzPXYrMXwwO2JyZWFrfWlmKCh3fDApPjEmczw8MjQ+PjI0PT00OD8oeD1hW3YrMT4+MF18MCx4PDwyND4+MjQ9PTg4fHg8PDI0Pj4yND09MTIwKTowKXtzPXYrMnwwfWVsc2V7cT00OH19ZWxzZSBpZigoc3wwKT09MzIpe3M9dX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwxKXwwO2lmKChwfDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXc9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09dzt3PXcrNHwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMTtEaShyLHMsdSxwLGwsbSxvKTtvPWNbbz4+Ml18MDt3PW8rNHwwO3g9Y1t3Pj4yXXwwO2Nbdz4+Ml09eCsgLTE7aWYoKHh8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1XYyhuLGNbZT4+Ml18MCxwLGNbbD4+Ml18MCxjW20+PjJdfDAsZixnKTt4PWNbbj4+Ml18MDtjW2U+PjJdPXg7Y1tiPj4yXT14O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1kO3JldHVybn12bih0KTtpPWQ7cmV0dXJufWZ1bmN0aW9uIEZpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtsPWk7aT1pKzgwfDA7bj1sO289bCs3MnwwO2Q9bCs1MnwwO2s9bCsxMnwwO2FbbyswPj4wXT1hWzEyMjcyPj4wXXwwO2FbbysxPj4wXT1hWzEyMjczPj4wXXwwO2FbbysyPj4wXT1hWzEyMjc0Pj4wXXwwO2FbbyszPj4wXT1hWzEyMjc1Pj4wXXwwO2Fbbys0Pj4wXT1hWzEyMjc2Pj4wXXwwO2Fbbys1Pj4wXT1hWzEyMjc3Pj4wXXwwO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1wPWNbMzM0MF18MDtjW24+PjJdPWg7bz13aShkLDIwLHAsbyxuKXwwO2g9ZCtvfDA7cD1jW2YrND4+Ml0mMTc2O2Rve2lmKChwfDApPT0xNil7cD1hW2Q+PjBdfDA7aWYocDw8MjQ+PjI0PT00M3xwPDwyND4+MjQ9PTQ1KXtwPWQrMXwwO2JyZWFrfWlmKChvfDApPjEmcDw8MjQ+PjI0PT00OD8ocT1hW2QrMT4+MF18MCxxPDwyND4+MjQ9PTg4fHE8PDI0Pj4yND09MTIwKTowKXtwPWQrMnwwfWVsc2V7bT0xMX19ZWxzZSBpZigocHwwKT09MzIpe3A9aH1lbHNle209MTF9fXdoaWxlKDApO2lmKChtfDApPT0xMSl7cD1kfW09Y1tmKzI4Pj4yXXwwO3E9bSs0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tuPj4yXT0xMzQ1NjtjW24rND4+Ml09MjA4O2Nbbis4Pj4yXT0wO2NnKDEzNDU2LG4pfXE9KGNbMTM0NjA+PjJdfDApKyAtMXwwO249Y1ttKzg+PjJdfDA7aWYoKGNbbSsxMj4+Ml18MCktbj4+Mj4+PjA+cT4+PjA/KGo9Y1tuKyhxPDwyKT4+Ml18MCwoanwwKSE9MCk6MCl7bj1tKzR8MDtxPWNbbj4+Ml18MDtjW24+PjJdPXErIC0xO2lmKChxfDApPT0wKXtsY1tjWyhjW20+PjJdfDApKzg+PjJdJjI1NV0obSl9dWNbY1soY1tqPj4yXXwwKSszMj4+Ml0mMzFdKGosZCxoLGspfDA7aj1rK298MDtpZigocHwwKT09KGh8MCkpe3E9ajtwPWNbZT4+Ml18MDtXYyhiLHAsayxxLGosZixnKTtpPWw7cmV0dXJufXE9aysocC1kKXwwO3A9Y1tlPj4yXXwwO1djKGIscCxrLHEsaixmLGcpO2k9bDtyZXR1cm59cT1YYSg0KXwwO2NbcT4+Ml09MjEzMDQ7d2IocXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gR2koYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gSGkoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIElpKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MDtqPWk7aT1pKzMyfDA7bT1qO249aisyNHwwO2s9aisxMnwwO2lmKChjW2YrND4+Ml0mMXwwKT09MCl7az1jWyhjW2Q+PjJdfDApKzI0Pj4yXXwwO2Nbbj4+Ml09Y1tlPj4yXTtsPWgmMTtjW20rMD4+Ml09Y1tuKzA+PjJdO3djW2smNjNdKGIsZCxtLGYsZyxsKTtpPWo7cmV0dXJufW49Y1tmKzI4Pj4yXXwwO2Q9bis0fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxO2lmKCEoKGNbMzQwMl18MCk9PS0xKSl7Y1ttPj4yXT0xMzYwODtjW20rND4+Ml09MjA4O2NbbSs4Pj4yXT0wO2NnKDEzNjA4LG0pfWc9KGNbMTM2MTI+PjJdfDApKyAtMXwwO209Y1tuKzg+PjJdfDA7aWYoKGNbbisxMj4+Ml18MCktbT4+Mj4+PjA+Zz4+PjA/KGw9Y1ttKyhnPDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7Zj1uKzR8MDtkPWNbZj4+Ml18MDtjW2Y+PjJdPWQrIC0xO2lmKChkfDApPT0wKXtsY1tjWyhjW24+PjJdfDApKzg+PjJdJjI1NV0obil9bT1jW2w+PjJdfDA7aWYoaCl7bWNbY1ttKzI0Pj4yXSYxMjddKGssbCl9ZWxzZXttY1tjW20rMjg+PjJdJjEyN10oayxsKX1nPWFbaz4+MF18MDtpZigoZyYxKT09MCl7aD1rKzR8MDttPWg7bD1rKzh8MH1lbHNle2w9ays4fDA7bT1jW2w+PjJdfDA7aD1rKzR8MH13aGlsZSgxKXtmPShnJjEpPT0wO2lmKGYpe249aDtnPShnJjI1NSk+Pj4xfWVsc2V7bj1jW2w+PjJdfDA7Zz1jW2g+PjJdfDB9aWYoKG18MCk9PShuKyhnPDwyKXwwKSl7YnJlYWt9Zz1jW20+PjJdfDA7Zj1jW2U+PjJdfDA7aWYoKGZ8MCkhPTApe2Q9ZisyNHwwO249Y1tkPj4yXXwwO2lmKChufDApPT0oY1tmKzI4Pj4yXXwwKSl7Zz14Y1tjWyhjW2Y+PjJdfDApKzUyPj4yXSY2M10oZixnKXwwfWVsc2V7Y1tkPj4yXT1uKzQ7Y1tuPj4yXT1nfWlmKChnfDApPT0tMSl7Y1tlPj4yXT0wfX1nPWFbaz4+MF18MDttPW0rNHwwfWNbYj4+Ml09Y1tlPj4yXTtpZihmKXtpPWo7cmV0dXJufWs9Y1trKzg+PjJdfDA7aWYoKGt8MCk9PTApe2k9ajtyZXR1cm59dm4oayk7aT1qO3JldHVybn1kPVhhKDQpfDA7Y1tkPj4yXT0yMTMwNDt3YihkfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBKaShiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7bT1pO2k9aSsxMjh8MDtsPW07cj1tKzEwOHwwO249bSs5NnwwO2Q9bSs5MnwwO2o9bSs4OHwwO289bSs4NHwwO2FbciswPj4wXT1hWzEyMjY0Pj4wXXwwO2FbcisxPj4wXT1hWzEyMjY1Pj4wXXwwO2FbcisyPj4wXT1hWzEyMjY2Pj4wXXwwO2FbciszPj4wXT1hWzEyMjY3Pj4wXXwwO2Fbcis0Pj4wXT1hWzEyMjY4Pj4wXXwwO2Fbcis1Pj4wXT1hWzEyMjY5Pj4wXXwwO3M9cisxfDA7cD1mKzR8MDtxPWNbcD4+Ml18MDtpZigocSYyMDQ4fDApIT0wKXthW3M+PjBdPTQzO3M9cisyfDB9aWYoKHEmNTEyfDApIT0wKXthW3M+PjBdPTM1O3M9cysxfDB9YVtzPj4wXT0xMDg7cz1zKzF8MDt0PXEmNzQ7ZG97aWYoKHR8MCk9PTgpe2lmKChxJjE2Mzg0fDApPT0wKXthW3M+PjBdPTEyMDticmVha31lbHNle2Fbcz4+MF09ODg7YnJlYWt9fWVsc2UgaWYoKHR8MCk9PTY0KXthW3M+PjBdPTExMX1lbHNle2Fbcz4+MF09MTAwfX13aGlsZSgwKTtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cT1jWzMzNDBdfDA7Y1tsPj4yXT1oO3E9d2kobiwxMixxLHIsbCl8MDtoPW4rcXwwO3A9Y1twPj4yXSYxNzY7ZG97aWYoKHB8MCk9PTE2KXtwPWFbbj4+MF18MDtpZihwPDwyND4+MjQ9PTQzfHA8PDI0Pj4yND09NDUpe3A9bisxfDA7YnJlYWt9aWYoKHF8MCk+MSZwPDwyND4+MjQ9PTQ4Pyh0PWFbbisxPj4wXXwwLHQ8PDI0Pj4yND09ODh8dDw8MjQ+PjI0PT0xMjApOjApe3A9bisyfDB9ZWxzZXtrPTIxfX1lbHNlIGlmKChwfDApPT0zMil7cD1ofWVsc2V7az0yMX19d2hpbGUoMCk7aWYoKGt8MCk9PTIxKXtwPW59az1jW2YrMjg+PjJdfDA7Y1tvPj4yXT1rO2s9ays0fDA7Y1trPj4yXT0oY1trPj4yXXwwKSsxO0tpKG4scCxoLGwsZCxqLG8pO2s9Y1tvPj4yXXwwO3M9ays0fDA7dD1jW3M+PjJdfDA7Y1tzPj4yXT10KyAtMTtpZigodHwwKSE9MCl7cj1jW2U+PjJdfDA7cz1jW2Q+PjJdfDA7dD1jW2o+PjJdfDA7TGkoYixyLGwscyx0LGYsZyk7aT1tO3JldHVybn1sY1tjWyhjW2s+PjJdfDApKzg+PjJdJjI1NV0oayk7cj1jW2U+PjJdfDA7cz1jW2Q+PjJdfDA7dD1jW2o+PjJdfDA7TGkoYixyLGwscyx0LGYsZyk7aT1tO3JldHVybn1mdW5jdGlvbiBLaShiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtrPWk7aT1pKzMyfDA7bz1rO2w9aysxMnwwO249Y1tqPj4yXXwwO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tvPj4yXT0xMzQ0ODtjW28rND4+Ml09MjA4O2Nbbys4Pj4yXT0wO2NnKDEzNDQ4LG8pfXM9KGNbMTM0NTI+PjJdfDApKyAtMXwwO3I9Y1tuKzg+PjJdfDA7aWYoISgoY1tuKzEyPj4yXXwwKS1yPj4yPj4+MD5zPj4+MCkpe3Y9WGEoNCl8MDtjW3Y+PjJdPTIxMzA0O3diKHZ8MCwyMTM3NiwxOTYpfW49Y1tyKyhzPDwyKT4+Ml18MDtpZigobnwwKT09MCl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9aj1jW2o+PjJdfDA7aWYoISgoY1szNDAyXXwwKT09LTEpKXtjW28+PjJdPTEzNjA4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM2MDgsbyl9bz0oY1sxMzYxMj4+Ml18MCkrIC0xfDA7cj1jW2orOD4+Ml18MDtpZighKChjW2orMTI+PjJdfDApLXI+PjI+Pj4wPm8+Pj4wKSl7dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9aj1jW3IrKG88PDIpPj4yXXwwO2lmKChqfDApPT0wKXt2PVhhKDQpfDA7Y1t2Pj4yXT0yMTMwNDt3Yih2fDAsMjEzNzYsMTk2KX1tY1tjWyhjW2o+PjJdfDApKzIwPj4yXSYxMjddKGwsaik7bz1hW2w+PjBdfDA7aWYoKG8mMSk9PTApe289KG8mMjU1KT4+PjF9ZWxzZXtvPWNbbCs0Pj4yXXwwfWlmKChvfDApIT0wKXtjW2g+PjJdPWY7bz1hW2I+PjBdfDA7aWYobzw8MjQ+PjI0PT00M3xvPDwyND4+MjQ9PTQ1KXt2PXhjW2NbKGNbbj4+Ml18MCkrNDQ+PjJdJjYzXShuLG8pfDA7bz1jW2g+PjJdfDA7Y1toPj4yXT1vKzQ7Y1tvPj4yXT12O289YisxfDB9ZWxzZXtvPWJ9aWYoKChlLW98MCk+MT8oYVtvPj4wXXwwKT09NDg6MCk/KHE9bysxfDAsdj1hW3E+PjBdfDAsdjw8MjQ+PjI0PT04OHx2PDwyND4+MjQ9PTEyMCk6MCl7dj14Y1tjWyhjW24+PjJdfDApKzQ0Pj4yXSY2M10obiw0OCl8MDt1PWNbaD4+Ml18MDtjW2g+PjJdPXUrNDtjW3U+PjJdPXY7dT14Y1tjWyhjW24+PjJdfDApKzQ0Pj4yXSY2M10obixhW3E+PjBdfDApfDA7dj1jW2g+PjJdfDA7Y1toPj4yXT12KzQ7Y1t2Pj4yXT11O289bysyfDB9aWYoKG98MCkhPShlfDApPyhwPWUrIC0xfDAscD4+PjA+bz4+PjApOjApe3E9bztkb3t2PWFbcT4+MF18MDthW3E+PjBdPWFbcD4+MF18MDthW3A+PjBdPXY7cT1xKzF8MDtwPXArIC0xfDB9d2hpbGUocT4+PjA8cD4+PjApfXE9b2NbY1soY1tqPj4yXXwwKSsxNj4+Ml0mMTI3XShqKXwwO2lmKG8+Pj4wPGU+Pj4wKXtwPWwrMXwwO3M9bCs0fDA7aj1sKzh8MDt1PTA7dD0wO3I9bzt3aGlsZSgxKXt2PWFbKChhW2w+PjBdJjEpPT0wP3A6Y1tqPj4yXXwwKSt0Pj4wXXwwO2lmKHY8PDI0Pj4yNCE9MCYodXwwKT09KHY8PDI0Pj4yNHwwKSl7dT1jW2g+PjJdfDA7Y1toPj4yXT11KzQ7Y1t1Pj4yXT1xO3U9YVtsPj4wXXwwO2lmKCh1JjEpPT0wKXt2PSh1JjI1NSk+Pj4xfWVsc2V7dj1jW3M+PjJdfDB9dT0wO3Q9KHQ+Pj4wPCh2KyAtMXwwKT4+PjAmMSkrdHwwfXg9eGNbY1soY1tuPj4yXXwwKSs0ND4+Ml0mNjNdKG4sYVtyPj4wXXwwKXwwO3c9Y1toPj4yXXwwO3Y9dys0fDA7Y1toPj4yXT12O2Nbdz4+Ml09eDtyPXIrMXwwO2lmKCEocj4+PjA8ZT4+PjApKXticmVha31lbHNle3U9dSsxfDB9fX1lbHNle3Y9Y1toPj4yXXwwfWg9Zisoby1iPDwyKXwwO2lmKChofDApIT0odnwwKT8obT12KyAtNHwwLG0+Pj4wPmg+Pj4wKTowKXtkb3t4PWNbaD4+Ml18MDtjW2g+PjJdPWNbbT4+Ml07Y1ttPj4yXT14O2g9aCs0fDA7bT1tKyAtNHwwfXdoaWxlKGg+Pj4wPG0+Pj4wKX19ZWxzZXt1Y1tjWyhjW24+PjJdfDApKzQ4Pj4yXSYzMV0obixiLGUsZil8MDt2PWYrKGUtYjw8Mil8MDtjW2g+PjJdPXZ9aWYoKGR8MCkhPShlfDApKXt2PWYrKGQtYjw8Mil8MH1jW2c+PjJdPXY7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59bD1jW2wrOD4+Ml18MDtpZigobHwwKT09MCl7aT1rO3JldHVybn12bihsKTtpPWs7cmV0dXJufWZ1bmN0aW9uIExpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7az1pO2k9aSsxNnwwO2w9aztpZigoZHwwKT09MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59cT1lO249Zy1xPj4yO2g9aCsxMnwwO209Y1toPj4yXXwwO249KG18MCk+KG58MCk/bS1ufDA6MDttPWY7cT1tLXF8MDtwPXE+PjI7aWYoKHF8MCk+MD8oaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsZSxwKXwwKSE9KHB8MCk6MCl7Y1tiPj4yXT0wO2k9aztyZXR1cm59ZG97aWYoKG58MCk+MCl7aWYobj4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihuPj4+MDwyKXthW2w+PjBdPW48PDE7ZT1sKzR8MDtvPTE4fWVsc2V7ZT1uKzQmLTQ7cD1lPDwyO3A9KHB8MCk9PTA/MTpwO3doaWxlKDEpe3E9dW4ocCl8MDtpZigocXwwKSE9MCl7bz0xNzticmVha31xPWNbNTY2Nl18MDtjWzU2NjZdPXErMDtpZigocXwwKT09MCl7YnJlYWt9c2NbcSYzMV0oKX1pZigob3wwKT09MTcpe2NbbCs4Pj4yXT1xO2NbbD4+Ml09ZXwxO2NbbCs0Pj4yXT1uO2lmKChufDApPT0wKXtlPXE7YnJlYWt9ZWxzZXtlPXE7bz0xODticmVha319cT1YYSg0KXwwO2NbcT4+Ml09MjI2ODA7d2IocXwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChvfDApPT0xOCl7bz1uO3A9ZTt3aGlsZSgxKXtvPW8rIC0xfDA7Y1twPj4yXT1qO2lmKChvfDApPT0wKXticmVha31lbHNle3A9cCs0fDB9fX1jW2UrKG48PDIpPj4yXT0wO2lmKChhW2w+PjBdJjEpPT0wKXtqPWwrNHwwfWVsc2V7aj1jW2wrOD4+Ml18MH1pZigoaGNbY1soY1tkPj4yXXwwKSs0OD4+Ml0mNjNdKGQsaixuKXwwKT09KG58MCkpe2lmKChhW2w+PjBdJjEpPT0wKXticmVha31sPWNbbCs4Pj4yXXwwO2lmKChsfDApPT0wKXticmVha312bihsKTticmVha31jW2I+PjJdPTA7aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59Yj1jW2wrOD4+Ml18MDtpZigoYnwwKT09MCl7aT1rO3JldHVybn12bihiKTtpPWs7cmV0dXJufX13aGlsZSgwKTtxPWctbXwwO2w9cT4+MjtpZigocXwwKT4wPyhoY1tjWyhjW2Q+PjJdfDApKzQ4Pj4yXSY2M10oZCxmLGwpfDApIT0obHwwKTowKXtjW2I+PjJdPTA7aT1rO3JldHVybn1jW2g+PjJdPTA7Y1tiPj4yXT1kO2k9aztyZXR1cm59ZnVuY3Rpb24gTWkoYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7bT1pO2k9aSsyMDh8MDtsPW0rOHwwO3M9bTtvPW0rMTg0fDA7ZD1tKzE4MHwwO2s9bSsxNzZ8MDtwPW0rMTcyfDA7dT1zO2NbdT4+Ml09Mzc7Y1t1KzQ+PjJdPTA7dT1zKzF8MDtxPWYrNHwwO3I9Y1txPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2FbdT4+MF09NDM7dT1zKzJ8MH1pZigociY1MTJ8MCkhPTApe2FbdT4+MF09MzU7dT11KzF8MH10PXUrMnwwO2FbdT4+MF09MTA4O2FbdSsxPj4wXT0xMDg7dT1yJjc0O2Rve2lmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTEwMH19d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO3Q9bDtjW3Q+PjJdPWg7Y1t0KzQ+PjJdPWo7aD13aShvLDIyLHUscyxsKXwwO2o9bytofDA7cT1jW3E+PjJdJjE3Njtkb3tpZigocXwwKT09MzIpe3E9an1lbHNlIGlmKChxfDApPT0xNil7cT1hW28+PjBdfDA7aWYocTw8MjQ+PjI0PT00M3xxPDwyND4+MjQ9PTQ1KXtxPW8rMXwwO2JyZWFrfWlmKChofDApPjEmcTw8MjQ+PjI0PT00OD8odT1hW28rMT4+MF18MCx1PDwyND4+MjQ9PTg4fHU8PDI0Pj4yND09MTIwKTowKXtxPW8rMnwwfWVsc2V7bj0yMX19ZWxzZXtuPTIxfX13aGlsZSgwKTtpZigobnwwKT09MjEpe3E9b31uPWNbZisyOD4+Ml18MDtjW3A+PjJdPW47bj1uKzR8MDtjW24+PjJdPShjW24+PjJdfDApKzE7S2kobyxxLGosbCxkLGsscCk7bj1jW3A+PjJdfDA7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApIT0wKXtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWxjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKTtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWZ1bmN0aW9uIE5pKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtkPWk7aT1pKzEyOHwwO2w9ZDtxPWQrMTA4fDA7bj1kKzk2fDA7az1kKzkyfDA7bT1kKzg4fDA7bz1kKzg0fDA7YVtxKzA+PjBdPWFbMTIyNjQ+PjBdfDA7YVtxKzE+PjBdPWFbMTIyNjU+PjBdfDA7YVtxKzI+PjBdPWFbMTIyNjY+PjBdfDA7YVtxKzM+PjBdPWFbMTIyNjc+PjBdfDA7YVtxKzQ+PjBdPWFbMTIyNjg+PjBdfDA7YVtxKzU+PjBdPWFbMTIyNjk+PjBdfDA7cz1xKzF8MDtwPWYrNHwwO3I9Y1twPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2Fbcz4+MF09NDM7cz1xKzJ8MH1pZigociY1MTJ8MCkhPTApe2Fbcz4+MF09MzU7cz1zKzF8MH1hW3M+PjBdPTEwODt0PXMrMXwwO3M9ciY3NDtkb3tpZigoc3wwKT09NjQpe2FbdD4+MF09MTExfWVsc2UgaWYoKHN8MCk9PTgpe2lmKChyJjE2Mzg0fDApPT0wKXthW3Q+PjBdPTEyMDticmVha31lbHNle2FbdD4+MF09ODg7YnJlYWt9fWVsc2V7YVt0Pj4wXT0xMTd9fXdoaWxlKDApO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX10PWNbMzM0MF18MDtjW2w+PjJdPWg7cT13aShuLDEyLHQscSxsKXwwO2g9bitxfDA7cD1jW3A+PjJdJjE3Njtkb3tpZigocHwwKT09MzIpe3A9aH1lbHNlIGlmKChwfDApPT0xNil7cD1hW24+PjBdfDA7aWYocDw8MjQ+PjI0PT00M3xwPDwyND4+MjQ9PTQ1KXtwPW4rMXwwO2JyZWFrfWlmKChxfDApPjEmcDw8MjQ+PjI0PT00OD8odD1hW24rMT4+MF18MCx0PDwyND4+MjQ9PTg4fHQ8PDI0Pj4yND09MTIwKTowKXtwPW4rMnwwfWVsc2V7aj0yMX19ZWxzZXtqPTIxfX13aGlsZSgwKTtpZigoanwwKT09MjEpe3A9bn1qPWNbZisyOD4+Ml18MDtjW28+PjJdPWo7aj1qKzR8MDtjW2o+PjJdPShjW2o+PjJdfDApKzE7S2kobixwLGgsbCxrLG0sbyk7aj1jW28+PjJdfDA7cz1qKzR8MDt0PWNbcz4+Ml18MDtjW3M+PjJdPXQrIC0xO2lmKCh0fDApIT0wKXtyPWNbZT4+Ml18MDtzPWNbaz4+Ml18MDt0PWNbbT4+Ml18MDtMaShiLHIsbCxzLHQsZixnKTtpPWQ7cmV0dXJufWxjW2NbKGNbaj4+Ml18MCkrOD4+Ml0mMjU1XShqKTtyPWNbZT4+Ml18MDtzPWNbaz4+Ml18MDt0PWNbbT4+Ml18MDtMaShiLHIsbCxzLHQsZixnKTtpPWQ7cmV0dXJufQoKCgpmdW5jdGlvbiBYayhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtkPWk7aT1pKzE2fDA7ZT1kO2lmKChhWzEzNDMyXXwwKSE9MCl7aD1jWzMzNTZdfDA7Y1tiPj4yXT1oO2g9aCs0fDA7Zz1jW2g+PjJdfDA7Y1toPj4yXT1nKzE7aT1kO3JldHVybn1pZigoUWEoMTM0MzIpfDApPT0wKXtoPWNbMzM1Nl18MDtjW2I+PjJdPWg7aD1oKzR8MDtnPWNbaD4+Ml18MDtjW2g+PjJdPWcrMTtpPWQ7cmV0dXJufWlmKChhWzEzNDE2XXwwKT09MD8oUWEoMTM0MTYpfDApIT0wOjApe2NbMTc3NjQ+PjJdPTA7Y1s0NDQwXT0xMzM5MjthWzE3ODk2Pj4wXT0xO2NbMTc3NzI+PjJdPTE3Nzg0O2NbMTc3Njg+PjJdPTE3Nzg0O2NbMTc3NzY+PjJdPTE3ODk2O2g9Mjg7Zj0xNzc4NHwwO2Rve2NbZj4+Ml09MDtnPWNbMTc3NzI+PjJdfDA7Zj1nKzR8MDtjWzE3NzcyPj4yXT1mO2g9aCsgLTF8MH13aGlsZSgoaHwwKSE9MCk7YVsxNzkwND4+MF09MjthWzE3OTA1Pj4wXT02NzthWzE3OTA2Pj4wXT0wO2g9Y1sxNzc2OD4+Ml18MDtpZigoZnwwKSE9KGh8MCkpe2NbMTc3NzI+PjJdPWcrKDAtKChnKygwLWgpfDApPj4+Mik8PDIpfWNbMTgyMjg+PjJdPTA7Y1s0NTU2XT0xMTg3MjtpZighKChjWzI5NzRdfDApPT0tMSkpe2NbZT4+Ml09MTE4OTY7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMTg5NixlKX1VaygxNzc2MCwxODIyNCwoY1sxMTkwMD4+Ml18MCkrIC0xfDApO2NbMTgyMjA+PjJdPTA7Y1s0NTU0XT0xMTkxMjtpZighKChjWzI5ODRdfDApPT0tMSkpe2NbZT4+Ml09MTE5MzY7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMTkzNixlKX1VaygxNzc2MCwxODIxNiwoY1sxMTk0MD4+Ml18MCkrIC0xfDApO2NbMTgyMDQ+PjJdPTA7Y1s0NTUwXT0xMzQ3MjtjWzE4MjA4Pj4yXT0wO2FbMTgyMTI+PjBdPTA7Y1sxODIwOD4+Ml09Y1soTmEoKXwwKT4+Ml07aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2U+PjJdPTEzNDU2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM0NTYsZSl9VWsoMTc3NjAsMTgyMDAsKGNbMTM0NjA+PjJdfDApKyAtMXwwKTtjWzE4MTk2Pj4yXT0wO2NbNDU0OF09MTQzOTI7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW2U+PjJdPTEzNDQ4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM0NDgsZSl9VWsoMTc3NjAsMTgxOTIsKGNbMTM0NTI+PjJdfDApKyAtMXwwKTtjWzE4MTg4Pj4yXT0wO2NbNDU0Nl09MTQ2MDg7aWYoISgoY1szMzgwXXwwKT09LTEpKXtjW2U+PjJdPTEzNTIwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1MjAsZSl9VWsoMTc3NjAsMTgxODQsKGNbMTM1MjQ+PjJdfDApKyAtMXwwKTtjWzE4MTcyPj4yXT0wO2NbNDU0Ml09MTM1NDQ7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbMTgxNzY+PjJdPWNbMzM0MF07aWYoISgoY1szMzgyXXwwKT09LTEpKXtjW2U+PjJdPTEzNTI4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1MjgsZSl9VWsoMTc3NjAsMTgxNjgsKGNbMTM1MzI+PjJdfDApKyAtMXwwKTtjWzE4MTY0Pj4yXT0wO2NbNDU0MF09MTQ4MzI7aWYoISgoY1szMzk2XXwwKT09LTEpKXtjW2U+PjJdPTEzNTg0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1ODQsZSl9VWsoMTc3NjAsMTgxNjAsKGNbMTM1ODg+PjJdfDApKyAtMXwwKTtjWzE4MTU2Pj4yXT0wO2NbNDUzOF09MTQ5NTI7aWYoISgoY1szMzk4XXwwKT09LTEpKXtjW2U+PjJdPTEzNTkyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM1OTIsZSl9VWsoMTc3NjAsMTgxNTIsKGNbMTM1OTY+PjJdfDApKyAtMXwwKTtjWzE4MTMyPj4yXT0wO2NbNDUzMl09MTM2MjQ7YVsxODEzNj4+MF09NDY7YVsxODEzNz4+MF09NDQ7Y1sxODE0MD4+Ml09MDtjWzE4MTQ0Pj4yXT0wO2NbMTgxNDg+PjJdPTA7aWYoISgoY1szNDAwXXwwKT09LTEpKXtjW2U+PjJdPTEzNjAwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM2MDAsZSl9VWsoMTc3NjAsMTgxMjgsKGNbMTM2MDQ+PjJdfDApKyAtMXwwKTtjWzE4MTAwPj4yXT0wO2NbNDUyNF09MTM2NjQ7Y1sxODEwND4+Ml09NDY7Y1sxODEwOD4+Ml09NDQ7Y1sxODExMj4+Ml09MDtjWzE4MTE2Pj4yXT0wO2NbMTgxMjA+PjJdPTA7aWYoISgoY1szNDAyXXwwKT09LTEpKXtjW2U+PjJdPTEzNjA4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTM2MDgsZSl9VWsoMTc3NjAsMTgwOTYsKGNbMTM2MTI+PjJdfDApKyAtMXwwKTtjWzE4MDkyPj4yXT0wO2NbNDUyMl09MTE5NTI7aWYoISgoY1szMDAyXXwwKT09LTEpKXtjW2U+PjJdPTEyMDA4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIwMDgsZSl9VWsoMTc3NjAsMTgwODgsKGNbMTIwMTI+PjJdfDApKyAtMXwwKTtjWzE4MDg0Pj4yXT0wO2NbNDUyMF09MTIwNzI7aWYoISgoY1szMDMyXXwwKT09LTEpKXtjW2U+PjJdPTEyMTI4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIxMjgsZSl9VWsoMTc3NjAsMTgwODAsKGNbMTIxMzI+PjJdfDApKyAtMXwwKTtjWzE4MDc2Pj4yXT0wO2NbNDUxOF09MTIxNDQ7aWYoISgoY1szMDQ4XXwwKT09LTEpKXtjW2U+PjJdPTEyMTkyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIxOTIsZSl9VWsoMTc3NjAsMTgwNzIsKGNbMTIxOTY+PjJdfDApKyAtMXwwKTtjWzE4MDY4Pj4yXT0wO2NbNDUxNl09MTIyMDg7aWYoISgoY1szMDY0XXwwKT09LTEpKXtjW2U+PjJdPTEyMjU2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTIyNTYsZSl9VWsoMTc3NjAsMTgwNjQsKGNbMTIyNjA+PjJdfDApKyAtMXwwKTtjWzE4MDYwPj4yXT0wO2NbNDUxNF09MTI4MDA7aWYoISgoY1szMjEyXXwwKT09LTEpKXtjW2U+PjJdPTEyODQ4O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI4NDgsZSl9VWsoMTc3NjAsMTgwNTYsKGNbMTI4NTI+PjJdfDApKyAtMXwwKTtjWzE4MDUyPj4yXT0wO2NbNDUxMl09MTI4NjQ7aWYoISgoY1szMjI4XXwwKT09LTEpKXtjW2U+PjJdPTEyOTEyO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI5MTIsZSl9VWsoMTc3NjAsMTgwNDgsKGNbMTI5MTY+PjJdfDApKyAtMXwwKTtjWzE4MDQ0Pj4yXT0wO2NbNDUxMF09MTI5Mjg7aWYoISgoY1szMjQ0XXwwKT09LTEpKXtjW2U+PjJdPTEyOTc2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI5NzYsZSl9VWsoMTc3NjAsMTgwNDAsKGNbMTI5ODA+PjJdfDApKyAtMXwwKTtjWzE4MDM2Pj4yXT0wO2NbNDUwOF09MTI5OTI7aWYoISgoY1szMjYwXXwwKT09LTEpKXtjW2U+PjJdPTEzMDQwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMwNDAsZSl9VWsoMTc3NjAsMTgwMzIsKGNbMTMwNDQ+PjJdfDApKyAtMXwwKTtjWzE4MDI4Pj4yXT0wO2NbNDUwNl09MTMwNTY7aWYoISgoY1szMjcwXXwwKT09LTEpKXtjW2U+PjJdPTEzMDgwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMwODAsZSl9VWsoMTc3NjAsMTgwMjQsKGNbMTMwODQ+PjJdfDApKyAtMXwwKTtjWzE4MDIwPj4yXT0wO2NbNDUwNF09MTMxMzY7aWYoISgoY1szMjkwXXwwKT09LTEpKXtjW2U+PjJdPTEzMTYwO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMxNjAsZSl9VWsoMTc3NjAsMTgwMTYsKGNbMTMxNjQ+PjJdfDApKyAtMXwwKTtjWzE4MDEyPj4yXT0wO2NbNDUwMl09MTMxOTI7aWYoISgoY1szMzA0XXwwKT09LTEpKXtjW2U+PjJdPTEzMjE2O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMyMTYsZSl9VWsoMTc3NjAsMTgwMDgsKGNbMTMyMjA+PjJdfDApKyAtMXwwKTtjWzE4MDA0Pj4yXT0wO2NbNDUwMF09MTMyNDA7aWYoISgoY1szMzE2XXwwKT09LTEpKXtjW2U+PjJdPTEzMjY0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMyNjQsZSl9VWsoMTc3NjAsMThlMywoY1sxMzI2OD4+Ml18MCkrIC0xfDApO2NbMTc5ODg+PjJdPTA7Y1s0NDk2XT0xMjI4ODtjWzE3OTkyPj4yXT0xMjMzNjtpZighKChjWzMwOTJdfDApPT0tMSkpe2NbZT4+Ml09MTIzNjg7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMjM2OCxlKX1VaygxNzc2MCwxNzk4NCwoY1sxMjM3Mj4+Ml18MCkrIC0xfDApO2NbMTc5NzI+PjJdPTA7Y1s0NDkyXT0xMjQ0MDtjWzE3OTc2Pj4yXT0xMjQ4ODtpZighKChjWzMxMzBdfDApPT0tMSkpe2NbZT4+Ml09MTI1MjA7Y1tlKzQ+PjJdPTIwODtjW2UrOD4+Ml09MDtjZygxMjUyMCxlKX1VaygxNzc2MCwxNzk2OCwoY1sxMjUyND4+Ml18MCkrIC0xfDApO2NbMTc5NTY+PjJdPTA7Y1s0NDg4XT0xNDMyODtkb3tpZigoYVsxMzM2OF18MCk9PTApe2lmKChRYSgxMzM2OCl8MCk9PTApe2JyZWFrfWNbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX19d2hpbGUoMCk7Y1sxNzk2MD4+Ml09Y1szMzQwXTtjWzQ0ODhdPTEyNzM2O2lmKCEoKGNbMzE4OF18MCk9PS0xKSl7Y1tlPj4yXT0xMjc1MjtjW2UrND4+Ml09MjA4O2NbZSs4Pj4yXT0wO2NnKDEyNzUyLGUpfVVrKDE3NzYwLDE3OTUyLChjWzEyNzU2Pj4yXXwwKSsgLTF8MCk7Y1sxNzk0MD4+Ml09MDtjWzQ0ODRdPTE0MzI4O2Rve2lmKChhWzEzMzY4XXwwKT09MCl7aWYoKFFhKDEzMzY4KXwwKT09MCl7YnJlYWt9Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfX13aGlsZSgwKTtjWzE3OTQ0Pj4yXT1jWzMzNDBdO2NbNDQ4NF09MTI3Njg7aWYoISgoY1szMTk2XXwwKT09LTEpKXtjW2U+PjJdPTEyNzg0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTI3ODQsZSl9VWsoMTc3NjAsMTc5MzYsKGNbMTI3ODg+PjJdfDApKyAtMXwwKTtjWzE3OTMyPj4yXT0wO2NbNDQ4Ml09MTMyODA7aWYoISgoY1szMzI2XXwwKT09LTEpKXtjW2U+PjJdPTEzMzA0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMzMDQsZSl9VWsoMTc3NjAsMTc5MjgsKGNbMTMzMDg+PjJdfDApKyAtMXwwKTtjWzE3OTI0Pj4yXT0wO2NbNDQ4MF09MTMzMjA7aWYoISgoY1szMzM2XXwwKT09LTEpKXtjW2U+PjJdPTEzMzQ0O2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coMTMzNDQsZSl9VWsoMTc3NjAsMTc5MjAsKGNbMTMzNDg+PjJdfDApKyAtMXwwKTtjWzMzNTJdPTE3NzYwOyRhKDEzNDE2KX1oPWNbMzM1Ml18MDtjWzMzNTZdPWg7aD1oKzR8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7JGEoMTM0MzIpO2g9Y1szMzU2XXwwO2NbYj4+Ml09aDtoPWgrNHwwO2c9Y1toPj4yXXwwO2NbaD4+Ml09ZysxO2k9ZDtyZXR1cm59ZnVuY3Rpb24gWWsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2lmKCEoKGNbYj4+Ml18MCk9PS0xKSl7Y1tlPj4yXT1iO2NbZSs0Pj4yXT0yMDg7Y1tlKzg+PjJdPTA7Y2coYixlKX1lPShjW2IrND4+Ml18MCkrIC0xfDA7Yj1jW2ErOD4+Ml18MDtpZighKChjW2ErMTI+PjJdfDApLWI+PjI+Pj4wPmU+Pj4wKSl7ZT1YYSg0KXwwO2NbZT4+Ml09MjEzMDQ7d2IoZXwwLDIxMzc2LDE5Nil9YT1jW2IrKGU8PDIpPj4yXXwwO2lmKChhfDApPT0wKXtlPVhhKDQpfDA7Y1tlPj4yXT0yMTMwNDt3YihlfDAsMjEzNzYsMTk2KX1lbHNle2k9ZDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIFprKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIF9rKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApPT0wKXtpPWI7cmV0dXJufWxjW2NbKGNbYT4+Ml18MCkrND4+Ml0mMjU1XShhKTtpPWI7cmV0dXJufWZ1bmN0aW9uICRrKGEpe2E9YXwwO3ZhciBiPTA7Yj1jWzMzNjBdfDA7Y1szMzYwXT1iKzE7Y1thKzQ+PjJdPWIrMTtyZXR1cm59ZnVuY3Rpb24gYWwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gYmwoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO2E9aTtpZighKGU+Pj4wPDEyOCkpe2Q9MDtpPWE7cmV0dXJuIGR8MH1kPShiWyhjWyhOYSgpfDApPj4yXXwwKSsoZTw8MSk+PjFdJmQpPDwxNj4+MTYhPTA7aT1hO3JldHVybiBkfDB9ZnVuY3Rpb24gY2woYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7aWYoKGR8MCk9PShlfDApKXtnPWQ7aT1hO3JldHVybiBnfDB9d2hpbGUoMSl7Zz1jW2Q+PjJdfDA7aWYoZz4+PjA8MTI4KXtnPWJbKGNbKE5hKCl8MCk+PjJdfDApKyhnPDwxKT4+MV18MH1lbHNle2c9MH1iW2Y+PjFdPWc7ZD1kKzR8MDtpZigoZHwwKT09KGV8MCkpe2JyZWFrfWVsc2V7Zj1mKzJ8MH19aT1hO3JldHVybiBlfDB9ZnVuY3Rpb24gZGwoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2Y9ZX1lbHNle2Rve2c9Y1tlPj4yXXwwO2lmKGc+Pj4wPDEyOD8hKChiWyhjWyhOYSgpfDApPj4yXXwwKSsoZzw8MSk+PjFdJmQpPDwxNj4+MTY9PTApOjApe2Y9ZTticmVhayBhfWU9ZSs0fDB9d2hpbGUoKGV8MCkhPShmfDApKX19d2hpbGUoMCk7aT1hO3JldHVybiBmfDB9ZnVuY3Rpb24gZWwoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MDthPWk7YTpkb3tpZigoZXwwKT09KGZ8MCkpe2Y9ZX1lbHNle2Rve2c9Y1tlPj4yXXwwO2lmKCEoZz4+PjA8MTI4KSl7Zj1lO2JyZWFrIGF9aWYoKGJbKGNbKE5hKCl8MCk+PjJdfDApKyhnPDwxKT4+MV0mZCk8PDE2Pj4xNj09MCl7Zj1lO2JyZWFrIGF9ZT1lKzR8MH13aGlsZSgoZXwwKSE9KGZ8MCkpfX13aGlsZSgwKTtpPWE7cmV0dXJuIGZ8MH1mdW5jdGlvbiBmbChhLGIpe2E9YXwwO2I9YnwwO2E9aTtpZighKGI+Pj4wPDEyOCkpe2k9YTtyZXR1cm4gYnwwfWI9Y1soY1soWmEoKXwwKT4+Ml18MCkrKGI8PDIpPj4yXXwwO2k9YTtyZXR1cm4gYnwwfWZ1bmN0aW9uIGdsKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wO2E9aTtpZigoYnwwKT09KGR8MCkpe2U9YjtpPWE7cmV0dXJuIGV8MH1kb3tlPWNbYj4+Ml18MDtpZihlPj4+MDwxMjgpe2U9Y1soY1soWmEoKXwwKT4+Ml18MCkrKGU8PDIpPj4yXXwwfWNbYj4+Ml09ZTtiPWIrNHwwfXdoaWxlKChifDApIT0oZHwwKSk7aT1hO3JldHVybiBkfDB9ZnVuY3Rpb24gaGwoYSxiKXthPWF8MDtiPWJ8MDthPWk7aWYoIShiPj4+MDwxMjgpKXtpPWE7cmV0dXJuIGJ8MH1iPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhiPDwyKT4+Ml18MDtpPWE7cmV0dXJuIGJ8MH1mdW5jdGlvbiBpbChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MDthPWk7aWYoKGJ8MCk9PShkfDApKXtlPWI7aT1hO3JldHVybiBlfDB9ZG97ZT1jW2I+PjJdfDA7aWYoZT4+PjA8MTI4KXtlPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhlPDwyKT4+Ml18MH1jW2I+PjJdPWU7Yj1iKzR8MH13aGlsZSgoYnwwKSE9KGR8MCkpO2k9YTtyZXR1cm4gZHwwfWZ1bmN0aW9uIGpsKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGI8PDI0Pj4yNHwwfWZ1bmN0aW9uIGtsKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2I9aTtpZigoZHwwKT09KGV8MCkpe2k9YjtyZXR1cm4gZHwwfXdoaWxlKDEpe2NbZj4+Ml09YVtkPj4wXXwwO2Q9ZCsxfDA7aWYoKGR8MCk9PShlfDApKXticmVha31lbHNle2Y9Zis0fDB9fWk9YjtyZXR1cm4gZXwwfWZ1bmN0aW9uIGxsKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4oYj4+PjA8MTI4P2ImMjU1OmMpfDB9ZnVuY3Rpb24gbWwoYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7aj1kO2k9YjtyZXR1cm4ganwwfWg9KChlKyAtNCsoMC1kKXwwKT4+PjIpKzF8MDtqPWQ7d2hpbGUoMSl7az1jW2o+PjJdfDA7YVtnPj4wXT1rPj4+MDwxMjg/ayYyNTU6ZjtqPWorNHwwO2lmKChqfDApPT0oZXwwKSl7YnJlYWt9ZWxzZXtnPWcrMXwwfX1rPWQrKGg8PDIpfDA7aT1iO3JldHVybiBrfDB9ZnVuY3Rpb24gbmwoYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM0NzI7ZT1jW2IrOD4+Ml18MDtpZigoZXwwKSE9MCl7aWYoKGFbYisxMj4+MF18MCkhPTApe3ZuKGUpfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufX12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIG9sKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNDcyO2U9Y1tiKzg+PjJdfDA7aWYoKGV8MCkhPTA/KGFbYisxMj4+MF18MCkhPTA6MCl7dm4oZSl9aT1kO3JldHVybn1mdW5jdGlvbiBwbChhLGIpe2E9YXwwO2I9YnwwO2E9aTtpZighKGI8PDI0Pj4yND4tMSkpe2k9YTtyZXR1cm4gYnwwfWI9Y1soY1soWmEoKXwwKT4+Ml18MCkrKChiJjI1NSk8PDIpPj4yXSYyNTU7aT1hO3JldHVybiBifDB9ZnVuY3Rpb24gcWwoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7Zj1kO2k9YjtyZXR1cm4gZnwwfWRve2Y9YVtkPj4wXXwwO2lmKGY8PDI0Pj4yND4tMSl7Zj1jWyhjWyhaYSgpfDApPj4yXXwwKSsoZjw8MjQ+PjI0PDwyKT4+Ml0mMjU1fWFbZD4+MF09ZjtkPWQrMXwwfXdoaWxlKChkfDApIT0oZXwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gcmwoYSxiKXthPWF8MDtiPWJ8MDthPWk7aWYoIShiPDwyND4+MjQ+LTEpKXtpPWE7cmV0dXJuIGJ8MH1iPWNbKGNbKEhhKCl8MCk+PjJdfDApKyhiPDwyND4+MjQ8PDIpPj4yXSYyNTU7aT1hO3JldHVybiBifDB9ZnVuY3Rpb24gc2woYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7Yj1pO2lmKChkfDApPT0oZXwwKSl7Zj1kO2k9YjtyZXR1cm4gZnwwfWRve2Y9YVtkPj4wXXwwO2lmKGY8PDI0Pj4yND4tMSl7Zj1jWyhjWyhIYSgpfDApPj4yXXwwKSsoZjw8MjQ+PjI0PDwyKT4+Ml0mMjU1fWFbZD4+MF09ZjtkPWQrMXwwfXdoaWxlKChkfDApIT0oZXwwKSk7aT1iO3JldHVybiBlfDB9ZnVuY3Rpb24gdGwoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gYnwwfWZ1bmN0aW9uIHVsKGIsYyxkLGUpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2I9aTtpZigoY3wwKT09KGR8MCkpe2Q9Y31lbHNle3doaWxlKDEpe2FbZT4+MF09YVtjPj4wXXwwO2M9YysxfDA7aWYoKGN8MCk9PShkfDApKXticmVha31lbHNle2U9ZSsxfDB9fX1pPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB2bChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuKGI8PDI0Pj4yND4tMT9iOmMpfDB9ZnVuY3Rpb24gd2woYixjLGQsZSxmKXtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wO2I9aTtpZigoY3wwKT09KGR8MCkpe2k9YjtyZXR1cm4gY3wwfXdoaWxlKDEpe2c9YVtjPj4wXXwwO2FbZj4+MF09Zzw8MjQ+PjI0Pi0xP2c6ZTtjPWMrMXwwO2lmKChjfDApPT0oZHwwKSl7YnJlYWt9ZWxzZXtmPWYrMXwwfX1pPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB4bChhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiB5bChhLGIsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2NbZj4+Ml09ZDtjW2k+PjJdPWc7cmV0dXJuIDN9ZnVuY3Rpb24gemwoYSxiLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtjW2Y+PjJdPWQ7Y1tpPj4yXT1nO3JldHVybiAzfWZ1bmN0aW9uIEFsKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Y1tmPj4yXT1kO3JldHVybiAzfWZ1bmN0aW9uIEJsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIENsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIERsKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Yj1kLWN8MDtyZXR1cm4oYj4+PjA8ZT4+PjA/YjplKXwwfWZ1bmN0aW9uIEVsKGEpe2E9YXwwO3JldHVybiAxfWZ1bmN0aW9uIEZsKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1NrKGEpO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEdsKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7ZD1pO2k9aSsyNzJ8MDtsPWQrMjY0fDA7bj1kKzh8MDtvPWQ7YTpkb3tpZigoZXwwKSE9KGZ8MCkpe3E9ZTt3aGlsZSgxKXtpZigoY1txPj4yXXwwKT09MCl7YnJlYWt9cT1xKzR8MDtpZigocXwwKT09KGZ8MCkpe3E9ZjticmVha319Y1trPj4yXT1oO2NbZz4+Ml09ZTtpZigoaHwwKSE9KGp8MCkpe3A9ajtiPWIrOHwwO3doaWxlKDEpe3c9cS1lPj4yO3M9aWIoY1tiPj4yXXwwKXwwO3k9Y1tnPj4yXXwwO3I9KGh8MCkhPTA7dj1yP3AtaHwwOjI1Njt1PXI/aDpuO2I6ZG97aWYoKHl8MCk9PTB8KHZ8MCk9PTApe3Q9MH1lbHNle3Q9MDtkb3t4PXc+Pj4wPj12Pj4+MDtpZighKHh8dz4+PjA+MzIpKXticmVhayBifXg9eD92Onc7dz13LXh8MDtjOmRve2lmKCh1fDApPT0wKXtBPWNbeT4+Ml18MDtpZigoQXwwKT09MCl7ej0wfWVsc2V7ej0wO3g9eTt3aGlsZSgxKXtpZihBPj4+MD4xMjcpe0E9V20obCxBKXwwO2lmKChBfDApPT0tMSl7dj0wO3Q9LTE7YnJlYWsgYn19ZWxzZXtBPTF9ej1BK3p8MDt4PXgrNHwwO0E9Y1t4Pj4yXXwwO2lmKChBfDApPT0wKXttPTMyO2JyZWFrfX19fWVsc2V7ZDpkb3tpZih4Pj4+MD4zKXt6PXU7QT14O3doaWxlKDEpe0I9Y1t5Pj4yXXwwO2lmKChCfDApPT0wKXttPTIyO2JyZWFrIGR9aWYoQj4+PjA+MTI3KXtCPVdtKHosQil8MDtpZigoQnwwKT09LTEpe3Y9MDt0PS0xO2JyZWFrIGJ9ej16K0J8MDtBPUEtQnwwfWVsc2V7YVt6Pj4wXT1CO3o9eisxfDA7QT1BKyAtMXwwfXk9eSs0fDA7aWYoIShBPj4+MD4zKSl7bT0xNjticmVha319fWVsc2V7ej11O0E9eDttPTE2fX13aGlsZSgwKTtpZigobXwwKT09MTYpe209MDtpZigoQXwwKT09MCl7QT0wfWVsc2V7bT0yMn19ZTpkb3tpZigobXwwKT09MjIpe3doaWxlKDEpe209MDtCPWNbeT4+Ml18MDtpZigoQnwwKT09MCl7bT0zMDticmVha31pZihCPj4+MD4xMjcpe0I9V20obCxCKXwwO2lmKChCfDApPT0tMSl7dj0wO3Q9LTE7YnJlYWsgYn1pZihCPj4+MD5BPj4+MCl7bT0yNjticmVha31XbSh6LGNbeT4+Ml18MCl8MDt6PXorQnwwO0E9QS1CfDB9ZWxzZXthW3o+PjBdPUI7ej16KzF8MDtBPUErIC0xfDB9aWYoKEF8MCk9PTApe0E9MDticmVhayBlfWVsc2V7eT15KzR8MDttPTIyfX1pZigobXwwKT09MjYpe3o9eC1BfDA7bT0zMjticmVhayBjfWVsc2UgaWYoKG18MCk9PTMwKXthW3o+PjBdPTA7YnJlYWt9fX13aGlsZSgwKTt6PXgtQXwwO3k9MDttPTMyfX13aGlsZSgwKTtpZigobXwwKT09MzIpe209MDtpZigoenwwKT09LTEpe3Y9MDt0PS0xO2JyZWFrIGJ9fWlmKCh1fDApPT0obnwwKSl7dT1ufWVsc2V7dj12LXp8MDt1PXUrenwwfXQ9eit0fDB9d2hpbGUoISgoeXwwKT09MHwodnwwKT09MCkpfX13aGlsZSgwKTtmOmRve2lmKCh5fDApIT0wPyEoKHZ8MCk9PTB8KHd8MCk9PTApOjApe3doaWxlKDEpe3g9V20odSxjW3k+PjJdfDApfDA7aWYoKHgrMXwwKT4+PjA8Mil7YnJlYWt9eT15KzR8MDt3PXcrIC0xfDA7dD10KzF8MDtpZigodnwwKT09KHh8MCl8KHd8MCk9PTApe2JyZWFrIGZ9ZWxzZXt2PXYteHwwO3U9dSt4fDB9fUI9KHh8MCk9PTA7dD1CP3Q6LTE7eT1CPzA6eX19d2hpbGUoMCk7aWYocil7Y1tnPj4yXT15fWlmKChzfDApIT0wKXtpYihzfDApfDB9aWYoKHR8MCk9PTApe2c9MTttPTY3O2JyZWFrfWVsc2UgaWYoKHR8MCk9PS0xKXttPTQ2O2JyZWFrfWg9KGNbaz4+Ml18MCkrdHwwO2Nbaz4+Ml09aDtpZigoaHwwKT09KGp8MCkpe209NjU7YnJlYWt9aWYoKHF8MCk9PShmfDApKXtlPWNbZz4+Ml18MDtxPWZ9ZWxzZXtlPWliKGNbYj4+Ml18MCl8MDthW28+PjBdPTA7aWYoKGV8MCkhPTApe2liKGV8MCl8MH1oPWNbaz4+Ml18MDtpZigoaHwwKT09KGp8MCkpe2c9MTttPTY3O2JyZWFrfWVsc2V7ZT0wO3E9MDtyPW99d2hpbGUoMSl7Y1trPj4yXT1oKzE7YVtoPj4wXT1lO2lmKChxfDApPT0wKXticmVha31CPXIrMXwwO2g9Y1trPj4yXXwwO2U9YVtCPj4wXXwwO3E9cSsgLTF8MDtyPUJ9ZT0oY1tnPj4yXXwwKSs0fDA7Y1tnPj4yXT1lO2c6ZG97aWYoKGV8MCk9PShmfDApKXtxPWZ9ZWxzZXtxPWU7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk9PTApe2JyZWFrIGd9cT1xKzR8MDtpZigocXwwKT09KGZ8MCkpe3E9ZjticmVha319fX13aGlsZSgwKTtoPWNbaz4+Ml18MH1pZigoZXwwKT09KGZ8MCl8KGh8MCk9PShqfDApKXticmVhayBhfX1pZigobXwwKT09NDYpe2Nbaz4+Ml09aDtoOmRve2lmKChlfDApIT0oY1tnPj4yXXwwKSl7ZG97aj1jW2U+PjJdfDA7Zj1pYihjW2I+PjJdfDApfDA7aj1XbShoLGopfDA7aWYoKGZ8MCkhPTApe2liKGZ8MCl8MH1pZigoanwwKT09LTEpe2JyZWFrIGh9aD0oY1trPj4yXXwwKStqfDA7Y1trPj4yXT1oO2U9ZSs0fDB9d2hpbGUoKGV8MCkhPShjW2c+PjJdfDApKX19d2hpbGUoMCk7Y1tnPj4yXT1lO0I9MjtpPWQ7cmV0dXJuIEJ8MH1lbHNlIGlmKChtfDApPT02NSl7ZT1jW2c+PjJdfDA7YnJlYWt9ZWxzZSBpZigobXwwKT09Njcpe2k9ZDtyZXR1cm4gZ3wwfX19ZWxzZXtjW2s+PjJdPWg7Y1tnPj4yXT1lfX13aGlsZSgwKTtCPShlfDApIT0oZnwwKSYxO2k9ZDtyZXR1cm4gQnwwfWZ1bmN0aW9uIEhsKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDtsPWk7aT1pKzEwNDB8MDtuPWwrMTZ8MDtvPWwrOHwwO209bDthOmRve2lmKChlfDApIT0oZnwwKSl7cj1lO3doaWxlKDEpe2lmKChhW3I+PjBdfDApPT0wKXticmVha31yPXIrMXwwO2lmKChyfDApPT0oZnwwKSl7cj1mO2JyZWFrfX1jW2s+PjJdPWg7Y1tnPj4yXT1lO2lmKChofDApIT0oanwwKSl7cD1qO2I9Yis4fDA7d2hpbGUoMSl7dD1kO3U9Y1t0KzQ+PjJdfDA7cT1tO2NbcT4+Ml09Y1t0Pj4yXTtjW3ErND4+Ml09dTtxPXI7dT1xLWV8MDt0PWliKGNbYj4+Ml18MCl8MDt5PWNbZz4+Ml18MDtjW28+PjJdPXk7cz0oaHwwKSE9MDt3PXM/cC1oPj4yOjI1Njt4PXM/aDpuO2I6ZG97aWYoKHl8MCk9PTB8KHd8MCk9PTApe3Y9MH1lbHNle3Y9MDt3aGlsZSgxKXt6PXU+Pj4yO0E9ej4+PjA+PXc+Pj4wO2lmKCEoQXx1Pj4+MD4xMzEpKXticmVhayBifXk9QT93Ono7dT11LXl8MDt5PVZtKHgsbyx5LGQpfDA7aWYoKHl8MCk9PS0xKXticmVha31pZigoeHwwKT09KG58MCkpe3g9bn1lbHNle3c9dy15fDA7eD14Kyh5PDwyKXwwfXY9eSt2fDA7eT1jW28+PjJdfDA7aWYoKHl8MCk9PTB8KHd8MCk9PTApe2JyZWFrIGJ9fXc9MDt5PWNbbz4+Ml18MDt2PS0xfX13aGlsZSgwKTtjOmRve2lmKCh5fDApIT0wKXtpZighKCh3fDApPT0wfCh1fDApPT0wKSl7d2hpbGUoMSl7ej1VbSh4LHksdSxkKXwwO2lmKCh6KzJ8MCk+Pj4wPDMpe2JyZWFrfXk9eSt6fDA7Y1tvPj4yXT15O3c9dysgLTF8MDt2PXYrMXwwO2lmKCh3fDApPT0wfCh1fDApPT0oenwwKSl7YnJlYWsgY31lbHNle3U9dS16fDA7eD14KzR8MH19aWYoKHp8MCk9PS0xKXt2PS0xO2JyZWFrfWVsc2UgaWYoKHp8MCk9PTApe2Nbbz4+Ml09MDt5PTA7YnJlYWt9ZWxzZXtjW2Q+PjJdPTA7YnJlYWt9fX1lbHNle3k9MH19d2hpbGUoMCk7aWYocyl7Y1tnPj4yXT15fWlmKCh0fDApIT0wKXtpYih0fDApfDB9aWYoKHZ8MCk9PTApe2Y9MjtkPTQ4O2JyZWFrfWVsc2UgaWYoKHZ8MCk9PS0xKXtkPTI2O2JyZWFrfWg9KGNbaz4+Ml18MCkrKHY8PDIpfDA7Y1trPj4yXT1oO2lmKChofDApPT0oanwwKSl7ZD00NjticmVha31lPWNbZz4+Ml18MDtpZigocnwwKT09KGZ8MCkpe3I9Zn1lbHNle3E9aWIoY1tiPj4yXXwwKXwwO2U9VW0oaCxlLDEsZCl8MDtpZigocXwwKSE9MCl7aWIocXwwKXwwfWlmKChlfDApIT0wKXtmPTI7ZD00ODticmVha31jW2s+PjJdPShjW2s+PjJdfDApKzQ7ZT0oY1tnPj4yXXwwKSsxfDA7Y1tnPj4yXT1lO2Q6ZG97aWYoKGV8MCk9PShmfDApKXtyPWZ9ZWxzZXtyPWU7d2hpbGUoMSl7aWYoKGFbcj4+MF18MCk9PTApe2JyZWFrIGR9cj1yKzF8MDtpZigocnwwKT09KGZ8MCkpe3I9ZjticmVha319fX13aGlsZSgwKTtoPWNbaz4+Ml18MH1pZigoZXwwKT09KGZ8MCl8KGh8MCk9PShqfDApKXticmVhayBhfX1pZigoZHwwKT09MjYpe2Nbaz4+Ml09aDtlOmRve2lmKChlfDApIT0oY1tnPj4yXXwwKSl7d2hpbGUoMSl7ZD1pYihjW2I+PjJdfDApfDA7bj1VbShoLGUscS1lfDAsbSl8MDtpZigoZHwwKSE9MCl7aWIoZHwwKXwwfWlmKChufDApPT0tMSl7ZD0zMTticmVha31lbHNlIGlmKChufDApPT0tMil7ZD0zMjticmVha31lbHNlIGlmKChufDApPT0wKXtlPWUrMXwwfWVsc2V7ZT1lK258MH1oPShjW2s+PjJdfDApKzR8MDtjW2s+PjJdPWg7aWYoKGV8MCk9PShjW2c+PjJdfDApKXticmVhayBlfX1pZigoZHwwKT09MzEpe2NbZz4+Ml09ZTtBPTI7aT1sO3JldHVybiBBfDB9ZWxzZSBpZigoZHwwKT09MzIpe2NbZz4+Ml09ZTtBPTE7aT1sO3JldHVybiBBfDB9fX13aGlsZSgwKTtjW2c+PjJdPWU7QT0oZXwwKSE9KGZ8MCkmMTtpPWw7cmV0dXJuIEF8MH1lbHNlIGlmKChkfDApPT00Nil7ZT1jW2c+PjJdfDA7YnJlYWt9ZWxzZSBpZigoZHwwKT09NDgpe2k9bDtyZXR1cm4gZnwwfX19ZWxzZXtjW2s+PjJdPWg7Y1tnPj4yXT1lfX13aGlsZSgwKTtBPShlfDApIT0oZnwwKSYxO2k9bDtyZXR1cm4gQXwwfWZ1bmN0aW9uIElsKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Yj1pO2NbZj4+Ml09ZDthPWliKGNbYSs4Pj4yXXwwKXwwO2lmKChhfDApPT0wKXtpPWI7cmV0dXJuIDB9aWIoYXwwKXwwO2k9YjtyZXR1cm4gMH1mdW5jdGlvbiBKbChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7YT1hKzh8MDtkPWliKGNbYT4+Ml18MCl8MDtpZigoZHwwKSE9MCl7aWIoZHwwKXwwfWE9Y1thPj4yXXwwO2lmKChhfDApIT0wKXthPWliKGF8MCl8MDtpZigoYXwwKT09MCl7YT0wfWVsc2V7aWIoYXwwKXwwO2E9MH19ZWxzZXthPTF9aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gS2woYSl7YT1hfDA7cmV0dXJuIDB9ZnVuY3Rpb24gTGwoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2lmKChmfDApPT0wfChkfDApPT0oZXwwKSl7bT0wO2k9ZztyZXR1cm4gbXwwfWg9ZTthPWErOHwwO2I9KGJ8MCkhPTA/YjoyMTI4MDtrPTA7aj0wO3doaWxlKDEpe209aWIoY1thPj4yXXwwKXwwO2w9VW0oMCxkLGgtZHwwLGIpfDA7aWYoKG18MCkhPTApe2liKG18MCl8MH1pZigobHwwKT09MCl7ZD1kKzF8MDtsPTF9ZWxzZSBpZigobHwwKT09LTJ8KGx8MCk9PS0xKXtmPTk7YnJlYWt9ZWxzZXtkPWQrbHwwfWs9bCtrfDA7aj1qKzF8MDtpZihqPj4+MD49Zj4+PjB8KGR8MCk9PShlfDApKXtmPTk7YnJlYWt9fWlmKChmfDApPT05KXtpPWc7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBNbChhKXthPWF8MDt2YXIgYj0wO2I9aTthPWNbYSs4Pj4yXXwwO2lmKChhfDApIT0wKXthPWliKGF8MCl8MDtpZigoYXwwKT09MCl7YT00fWVsc2V7aWIoYXwwKXwwO2E9NH19ZWxzZXthPTF9aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gTmwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gT2woZCxmLGcsaCxqLGssbCxtKXtkPWR8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDt2YXIgbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7Zj1pO2Q9aDthOmRve2lmKGc+Pj4wPGg+Pj4wKXtvPWc7bj1rO3doaWxlKDEpe3E9YltvPj4xXXwwO3A9cSY2NTUzNTtkb3tpZigocSY2NTUzNSk8MTI4KXtpZigobC1ufDApPDEpe2g9MTticmVhayBhfWFbbj4+MF09cTtuPW4rMXwwfWVsc2V7aWYoKHEmNjU1MzUpPDIwNDgpe2lmKChsLW58MCk8Mil7aD0xO2JyZWFrIGF9YVtuPj4wXT1wPj4+NnwxOTI7YVtuKzE+PjBdPXAmNjN8MTI4O249bisyfDA7YnJlYWt9aWYoKHEmNjU1MzUpPDU1Mjk2KXtpZigobC1ufDApPDMpe2g9MTticmVhayBhfWFbbj4+MF09cD4+PjEyfDIyNDthW24rMT4+MF09cD4+PjYmNjN8MTI4O2FbbisyPj4wXT1wJjYzfDEyODtuPW4rM3wwO2JyZWFrfWlmKCEoKHEmNjU1MzUpPDU2MzIwKSl7aWYoKHEmNjU1MzUpPDU3MzQ0KXtoPTI7YnJlYWsgYX1pZigobC1ufDApPDMpe2g9MTticmVhayBhfWFbbj4+MF09cD4+PjEyfDIyNDthW24rMT4+MF09cD4+PjYmNjN8MTI4O2FbbisyPj4wXT1wJjYzfDEyODtuPW4rM3wwO2JyZWFrfWlmKChkLW98MCk8NCl7aD0xO2JyZWFrIGF9cT1vKzJ8MDtyPWVbcT4+MV18MDtpZigociY2NDUxMnwwKSE9NTYzMjApe2g9MjticmVhayBhfWlmKChsLW58MCk8NCl7aD0xO2JyZWFrIGF9cz1wJjk2MDtpZigoKHM8PDEwKSs2NTUzNnwwKT4+PjA+MTExNDExMSl7aD0yO2JyZWFrIGF9bz0ocz4+PjYpKzF8MDthW24+PjBdPW8+Pj4yfDI0MDthW24rMT4+MF09cD4+PjImMTV8bzw8NCY0OHwxMjg7YVtuKzI+PjBdPXA8PDQmNDh8cj4+PjYmMTV8MTI4O2FbbiszPj4wXT1yJjYzfDEyODtvPXE7bj1uKzR8MH19d2hpbGUoMCk7bz1vKzJ8MDtpZighKG8+Pj4wPGg+Pj4wKSl7aD0wO2JyZWFrfX19ZWxzZXtoPTA7bz1nO249a319d2hpbGUoMCk7Y1tqPj4yXT1nKyhvLWc+PjE8PDEpO2NbbT4+Ml09aysobi1rKTtpPWY7cmV0dXJuIGh8MH1mdW5jdGlvbiBQbChlLGYsZyxoLGosayxsLG0pe2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO209bXwwO3ZhciBuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2Y9aTthOmRve2lmKGc+Pj4wPGg+Pj4wKXtvPWg7cD1sO3E9ZztlPWs7d2hpbGUoMSl7aWYoIShlPj4+MDxsPj4+MCkpe249MzE7YnJlYWsgYX1zPWFbcT4+MF18MDtyPXMmMjU1O2Rve2lmKHM8PDI0Pj4yND4tMSl7YltlPj4xXT1zJjI1NTtxPXErMXwwfWVsc2V7aWYoKHMmMjU1KTwxOTQpe2g9MjticmVhayBhfWlmKChzJjI1NSk8MjI0KXtpZigoby1xfDApPDIpe2g9MTticmVhayBhfXM9ZFtxKzE+PjBdfDA7aWYoKHMmMTkyfDApIT0xMjgpe2g9MjticmVhayBhfWJbZT4+MV09cyY2M3xyPDw2JjE5ODQ7cT1xKzJ8MDticmVha31pZigocyYyNTUpPDI0MCl7aWYoKG8tcXwwKTwzKXtoPTE7YnJlYWsgYX1zPWFbcSsxPj4wXXwwO3Q9YVtxKzI+PjBdfDA7aWYoKHJ8MCk9PTIzNyl7aWYoISgocyYtMzIpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19ZWxzZSBpZigocnwwKT09MjI0KXtpZighKChzJi0zMik8PDI0Pj4yND09LTk2KSl7aD0yO2JyZWFrIGF9fWVsc2V7aWYoISgocyYtNjQpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19dD10JjI1NTtpZigodCYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9YltlPj4xXT0ocyYyNTUpPDw2JjQwMzJ8cjw8MTJ8dCY2MztxPXErM3wwO2JyZWFrfWlmKCEoKHMmMjU1KTwyNDUpKXtoPTI7YnJlYWsgYX1pZigoby1xfDApPDQpe2g9MTticmVhayBhfXM9YVtxKzE+PjBdfDA7dD1hW3ErMj4+MF18MDt1PWFbcSszPj4wXXwwO2lmKChyfDApPT0yNDApe2lmKCEoKHMrMTEyPDwyND4+MjQmMjU1KTw0OCkpe2g9MjticmVhayBhfX1lbHNlIGlmKChyfDApPT0yNDQpe2lmKCEoKHMmLTE2KTw8MjQ+PjI0PT0tMTI4KSl7aD0yO2JyZWFrIGF9fWVsc2V7aWYoISgocyYtNjQpPDwyND4+MjQ9PS0xMjgpKXtoPTI7YnJlYWsgYX19dD10JjI1NTtpZigodCYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9dT11JjI1NTtpZigodSYxOTJ8MCkhPTEyOCl7aD0yO2JyZWFrIGF9aWYoKHAtZXwwKTw0KXtoPTE7YnJlYWsgYX1yPXImNztzPXMmMjU1O2lmKChzPDwxMiYxOTY2MDh8cjw8MTgpPj4+MD4xMTE0MTExKXtoPTI7YnJlYWsgYX1iW2U+PjFdPXM8PDImNjB8dD4+PjQmM3woKHM+Pj40JjN8cjw8Mik8PDYpKzE2MzIwfDU1Mjk2O2U9ZSsyfDA7YltlPj4xXT11JjYzfHQ8PDYmOTYwfDU2MzIwO3E9cSs0fDB9fXdoaWxlKDApO2U9ZSsyfDA7aWYoIShxPj4+MDxoPj4+MCkpe249MzE7YnJlYWt9fX1lbHNle3E9ZztlPWs7bj0zMX19d2hpbGUoMCk7aWYoKG58MCk9PTMxKXtoPXE+Pj4wPGg+Pj4wJjF9Y1tqPj4yXT1nKyhxLWcpO2NbbT4+Ml09aysoZS1rPj4xPDwxKTtpPWY7cmV0dXJuIGh8MH1mdW5jdGlvbiBRbChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2NbZj4+Ml09ZDtyZXR1cm4gM31mdW5jdGlvbiBSbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBTbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBUbChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Yz1pO2E6ZG97aWYoZD4+PjA8ZT4+PjAmKGZ8MCkhPTApe2I9ZTtoPWQ7Zz0wO2I6d2hpbGUoMSl7az1hW2g+PjBdfDA7aj1rJjI1NTtkb3tpZihrPDwyND4+MjQ+LTEpe2g9aCsxfDB9ZWxzZXtpZigoayYyNTUpPDE5NCl7YnJlYWsgYX1pZigoayYyNTUpPDIyNCl7aWYoKGItaHwwKTwyKXticmVhayBhfWlmKCEoKGFbaCsxPj4wXSYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWg9aCsyfDA7YnJlYWt9aWYoKGsmMjU1KTwyNDApe2s9aDtpZigoYi1rfDApPDMpe2JyZWFrIGF9bT1hW2grMT4+MF18MDtsPWFbaCsyPj4wXXwwO2lmKChqfDApPT0yMjQpe2lmKCEoKG0mLTMyKTw8MjQ+PjI0PT0tOTYpKXtlPTE0O2JyZWFrIGJ9fWVsc2UgaWYoKGp8MCk9PTIzNyl7aWYoISgobSYtMzIpPDwyND4+MjQ9PS0xMjgpKXtlPTE2O2JyZWFrIGJ9fWVsc2V7aWYoISgobSYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTE4O2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1oPWgrM3wwO2JyZWFrfWlmKCEoKGsmMjU1KTwyNDUpKXticmVhayBhfWs9aDtpZigoYi1rfDApPDQpe2JyZWFrIGF9aWYoKGYtZ3wwKT4+PjA8Mil7YnJlYWsgYX1uPWFbaCsxPj4wXXwwO2w9YVtoKzI+PjBdfDA7bT1hW2grMz4+MF18MDtpZigoanwwKT09MjQ0KXtpZighKChuJi0xNik8PDI0Pj4yND09LTEyOCkpe2U9Mjg7YnJlYWsgYn19ZWxzZSBpZigoanwwKT09MjQwKXtpZighKChuKzExMjw8MjQ+PjI0JjI1NSk8NDgpKXtlPTI2O2JyZWFrIGJ9fWVsc2V7aWYoISgobiYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTMwO2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1pZighKChtJi02NCk8PDI0Pj4yND09LTEyOCkpe2JyZWFrIGF9aWYoKChuJjI1NSk8PDEyJjE5NjYwOHxqPDwxOCYxODM1MDA4KT4+PjA+MTExNDExMSl7YnJlYWsgYX1oPWgrNHwwO2c9ZysxfDB9fXdoaWxlKDApO2c9ZysxfDA7aWYoIShoPj4+MDxlPj4+MCZnPj4+MDxmPj4+MCkpe2JyZWFrIGF9fWlmKChlfDApPT0xNCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0xNil7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0xOCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0yNil7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0yOCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH1lbHNlIGlmKChlfDApPT0zMCl7bj1rLWR8MDtpPWM7cmV0dXJuIG58MH19ZWxzZXtoPWR9fXdoaWxlKDApO249aC1kfDA7aT1jO3JldHVybiBufDB9ZnVuY3Rpb24gVWwoYSl7YT1hfDA7cmV0dXJuIDR9ZnVuY3Rpb24gVmwoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gV2woYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTA7ZD1pO2E6ZG97aWYoZT4+PjA8Zj4+PjApe2I9ZTtsPWg7d2hpbGUoMSl7bT1jW2I+PjJdfDA7aWYoKG0mLTIwNDh8MCk9PTU1Mjk2fG0+Pj4wPjExMTQxMTEpe2Y9MjticmVhayBhfWRve2lmKCEobT4+PjA8MTI4KSl7aWYobT4+PjA8MjA0OCl7aWYoKGotbHwwKTwyKXtmPTE7YnJlYWsgYX1hW2w+PjBdPW0+Pj42fDE5MjthW2wrMT4+MF09bSY2M3wxMjg7bD1sKzJ8MDticmVha31uPWotbHwwO2lmKG0+Pj4wPDY1NTM2KXtpZigobnwwKTwzKXtmPTE7YnJlYWsgYX1hW2w+PjBdPW0+Pj4xMnwyMjQ7YVtsKzE+PjBdPW0+Pj42JjYzfDEyODthW2wrMj4+MF09bSY2M3wxMjg7bD1sKzN8MDticmVha31lbHNle2lmKChufDApPDQpe2Y9MTticmVhayBhfWFbbD4+MF09bT4+PjE4fDI0MDthW2wrMT4+MF09bT4+PjEyJjYzfDEyODthW2wrMj4+MF09bT4+PjYmNjN8MTI4O2FbbCszPj4wXT1tJjYzfDEyODtsPWwrNHwwO2JyZWFrfX1lbHNle2lmKChqLWx8MCk8MSl7Zj0xO2JyZWFrIGF9YVtsPj4wXT1tO2w9bCsxfDB9fXdoaWxlKDApO2I9Yis0fDA7aWYoIShiPj4+MDxmPj4+MCkpe2Y9MDticmVha319fWVsc2V7Zj0wO2I9ZTtsPWh9fXdoaWxlKDApO2NbZz4+Ml09ZSsoYi1lPj4yPDwyKTtjW2s+PjJdPWgrKGwtaCk7aT1kO3JldHVybiBmfDB9ZnVuY3Rpb24gWGwoYixlLGYsZyxoLGosayxsKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO2U9aTthOmRve2lmKGY+Pj4wPGc+Pj4wKXtvPWc7bj1mO2I9ajt3aGlsZSgxKXtpZighKGI+Pj4wPGs+Pj4wKSl7bT0zMDticmVhayBhfXE9YVtuPj4wXXwwO3A9cSYyNTU7ZG97aWYocTw8MjQ+PjI0Pi0xKXtjW2I+PjJdPXA7bj1uKzF8MH1lbHNle2lmKChxJjI1NSk8MTk0KXtnPTI7YnJlYWsgYX1pZigocSYyNTUpPDIyNCl7aWYoKG8tbnwwKTwyKXtnPTE7YnJlYWsgYX1xPWRbbisxPj4wXXwwO2lmKChxJjE5MnwwKSE9MTI4KXtnPTI7YnJlYWsgYX1jW2I+PjJdPXEmNjN8cDw8NiYxOTg0O249bisyfDA7YnJlYWt9aWYoKHEmMjU1KTwyNDApe2lmKChvLW58MCk8Myl7Zz0xO2JyZWFrIGF9cT1hW24rMT4+MF18MDtyPWFbbisyPj4wXXwwO2lmKChwfDApPT0yMjQpe2lmKCEoKHEmLTMyKTw8MjQ+PjI0PT0tOTYpKXtnPTI7YnJlYWsgYX19ZWxzZSBpZigocHwwKT09MjM3KXtpZighKChxJi0zMik8PDI0Pj4yND09LTEyOCkpe2c9MjticmVhayBhfX1lbHNle2lmKCEoKHEmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7Zz0yO2JyZWFrIGF9fXI9ciYyNTU7aWYoKHImMTkyfDApIT0xMjgpe2c9MjticmVhayBhfWNbYj4+Ml09KHEmMjU1KTw8NiY0MDMyfHA8PDEyJjYxNDQwfHImNjM7bj1uKzN8MDticmVha31pZighKChxJjI1NSk8MjQ1KSl7Zz0yO2JyZWFrIGF9aWYoKG8tbnwwKTw0KXtnPTE7YnJlYWsgYX1xPWFbbisxPj4wXXwwO3I9YVtuKzI+PjBdfDA7cz1hW24rMz4+MF18MDtpZigocHwwKT09MjQ0KXtpZighKChxJi0xNik8PDI0Pj4yND09LTEyOCkpe2c9MjticmVhayBhfX1lbHNlIGlmKChwfDApPT0yNDApe2lmKCEoKHErMTEyPDwyND4+MjQmMjU1KTw0OCkpe2c9MjticmVhayBhfX1lbHNle2lmKCEoKHEmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7Zz0yO2JyZWFrIGF9fXI9ciYyNTU7aWYoKHImMTkyfDApIT0xMjgpe2c9MjticmVhayBhfXM9cyYyNTU7aWYoKHMmMTkyfDApIT0xMjgpe2c9MjticmVhayBhfXA9KHEmMjU1KTw8MTImMjU4MDQ4fHA8PDE4JjE4MzUwMDh8cjw8NiY0MDMyfHMmNjM7aWYocD4+PjA+MTExNDExMSl7Zz0yO2JyZWFrIGF9Y1tiPj4yXT1wO249bis0fDB9fXdoaWxlKDApO2I9Yis0fDA7aWYoIShuPj4+MDxnPj4+MCkpe209MzA7YnJlYWt9fX1lbHNle249ZjtiPWo7bT0zMH19d2hpbGUoMCk7aWYoKG18MCk9PTMwKXtnPW4+Pj4wPGc+Pj4wJjF9Y1toPj4yXT1mKyhuLWYpO2NbbD4+Ml09aisoYi1qPj4yPDwyKTtpPWU7cmV0dXJuIGd8MH1mdW5jdGlvbiBZbChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2NbZj4+Ml09ZDtyZXR1cm4gM31mdW5jdGlvbiBabChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBfbChhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiAkbChiLGMsZCxlLGYpe2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Yz1pO2E6ZG97aWYoZD4+PjA8ZT4+PjAmKGZ8MCkhPTApe2c9ZTtqPWQ7Yj0xO2I6d2hpbGUoMSl7az1hW2o+PjBdfDA7aD1rJjI1NTtkb3tpZihrPDwyND4+MjQ+LTEpe2o9aisxfDB9ZWxzZXtpZigoayYyNTUpPDE5NCl7YnJlYWsgYX1pZigoayYyNTUpPDIyNCl7aWYoKGctanwwKTwyKXticmVhayBhfWlmKCEoKGFbaisxPj4wXSYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWo9aisyfDA7YnJlYWt9aWYoKGsmMjU1KTwyNDApe2s9ajtpZigoZy1rfDApPDMpe2JyZWFrIGF9bT1hW2orMT4+MF18MDtsPWFbaisyPj4wXXwwO2lmKChofDApPT0yMjQpe2lmKCEoKG0mLTMyKTw8MjQ+PjI0PT0tOTYpKXtlPTE0O2JyZWFrIGJ9fWVsc2UgaWYoKGh8MCk9PTIzNyl7aWYoISgobSYtMzIpPDwyND4+MjQ9PS0xMjgpKXtlPTE2O2JyZWFrIGJ9fWVsc2V7aWYoISgobSYtNjQpPDwyND4+MjQ9PS0xMjgpKXtlPTE4O2JyZWFrIGJ9fWlmKCEoKGwmLTY0KTw8MjQ+PjI0PT0tMTI4KSl7YnJlYWsgYX1qPWorM3wwO2JyZWFrfWlmKCEoKGsmMjU1KTwyNDUpKXticmVhayBhfWs9ajtpZigoZy1rfDApPDQpe2JyZWFrIGF9bT1hW2orMT4+MF18MDtuPWFbaisyPj4wXXwwO2w9YVtqKzM+PjBdfDA7aWYoKGh8MCk9PTI0MCl7aWYoISgobSsxMTI8PDI0Pj4yNCYyNTUpPDQ4KSl7ZT0yNTticmVhayBifX1lbHNlIGlmKChofDApPT0yNDQpe2lmKCEoKG0mLTE2KTw8MjQ+PjI0PT0tMTI4KSl7ZT0yNzticmVhayBifX1lbHNle2lmKCEoKG0mLTY0KTw8MjQ+PjI0PT0tMTI4KSl7ZT0yOTticmVhayBifX1pZighKChuJi02NCk8PDI0Pj4yND09LTEyOCkpe2JyZWFrIGF9aWYoISgobCYtNjQpPDwyND4+MjQ9PS0xMjgpKXticmVhayBhfWlmKCgobSYyNTUpPDwxMiYxOTY2MDh8aDw8MTgmMTgzNTAwOCk+Pj4wPjExMTQxMTEpe2JyZWFrIGF9aj1qKzR8MH19d2hpbGUoMCk7aWYoIShqPj4+MDxlPj4+MCZiPj4+MDxmPj4+MCkpe2JyZWFrIGF9Yj1iKzF8MH1pZigoZXwwKT09MTQpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MTYpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MTgpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09MjUpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09Mjcpe249ay1kfDA7aT1jO3JldHVybiBufDB9ZWxzZSBpZigoZXwwKT09Mjkpe249ay1kfDA7aT1jO3JldHVybiBufDB9fWVsc2V7aj1kfX13aGlsZSgwKTtuPWotZHwwO2k9YztyZXR1cm4gbnwwfWZ1bmN0aW9uIGFtKGEpe2E9YXwwO3JldHVybiA0fWZ1bmN0aW9uIGJtKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGNtKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGRtKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNjI0O2lmKCEoKGFbYisxMj4+MF0mMSk9PTApKXtlPWNbYisyMD4+Ml18MDtpZigoZXwwKSE9MCl7dm4oZSl9aWYoKGJ8MCk9PTApe2k9ZDtyZXR1cm59fXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM2MjQ7aWYoISgoYVtiKzEyPj4wXSYxKT09MCk/KGU9Y1tiKzIwPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pPWQ7cmV0dXJufWZ1bmN0aW9uIGZtKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNjY0O2lmKCEoKGFbYisxNj4+MF0mMSk9PTApKXtlPWNbYisyND4+Ml18MDtpZigoZXwwKSE9MCl7dm4oZSl9aWYoKGJ8MCk9PTApe2k9ZDtyZXR1cm59fXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ20oYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2NbYj4+Ml09MTM2NjQ7aWYoISgoYVtiKzE2Pj4wXSYxKT09MCk/KGU9Y1tiKzI0Pj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pPWQ7cmV0dXJufWZ1bmN0aW9uIGhtKGIpe2I9YnwwO3JldHVybiBhW2IrOD4+MF18MH1mdW5jdGlvbiBpbShhKXthPWF8MDtyZXR1cm4gY1thKzg+PjJdfDB9ZnVuY3Rpb24gam0oYil7Yj1ifDA7cmV0dXJuIGFbYis5Pj4wXXwwfWZ1bmN0aW9uIGttKGEpe2E9YXwwO3JldHVybiBjW2ErMTI+PjJdfDB9ZnVuY3Rpb24gbG0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2c9ZCsxMnwwO2lmKChhW2c+PjBdJjEpPT0wKXtjW2IrMD4+Ml09Y1tnKzA+PjJdO2NbYis0Pj4yXT1jW2crND4+Ml07Y1tiKzg+PjJdPWNbZys4Pj4yXTtpPWU7cmV0dXJufWc9Y1tkKzIwPj4yXXwwO2Q9Y1tkKzE2Pj4yXXwwO2lmKGQ+Pj4wPjQyOTQ5NjcyNzkpe2RnKCl9ZG97aWYoZD4+PjA8MTEpe2FbYj4+MF09ZDw8MTtrPWIrMXwwfWVsc2V7aD1kKzE2Ji0xNjtqPShofDApPT0wPzE6aDt3aGlsZSgxKXtrPXVuKGopfDA7aWYoKGt8MCkhPTApe2Y9MTM7YnJlYWt9az1jWzU2NjZdfDA7Y1s1NjY2XT1rKzA7aWYoKGt8MCk9PTApe2JyZWFrfXNjW2smMzFdKCl9aWYoKGZ8MCk9PTEzKXtjW2IrOD4+Ml09aztjW2I+PjJdPWh8MTtjW2IrND4+Ml09ZDticmVha31rPVhhKDQpfDA7Y1trPj4yXT0yMjY4MDt3YihrfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7TG4oa3wwLGd8MCxkfDApfDA7YVtrK2Q+PjBdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBtbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtlPWk7Zz1kKzE2fDA7aWYoKGFbZz4+MF0mMSk9PTApe2NbYiswPj4yXT1jW2crMD4+Ml07Y1tiKzQ+PjJdPWNbZys0Pj4yXTtjW2IrOD4+Ml09Y1tnKzg+PjJdO2k9ZTtyZXR1cm59Zz1jW2QrMjQ+PjJdfDA7ZD1jW2QrMjA+PjJdfDA7aWYoZD4+PjA+NDI5NDk2NzI3OSl7ZGcoKX1kb3tpZihkPj4+MDwxMSl7YVtiPj4wXT1kPDwxO2s9YisxfDB9ZWxzZXtoPWQrMTYmLTE2O2o9KGh8MCk9PTA/MTpoO3doaWxlKDEpe2s9dW4oail8MDtpZigoa3wwKSE9MCl7Zj0xMzticmVha31rPWNbNTY2Nl18MDtjWzU2NjZdPWsrMDtpZigoa3wwKT09MCl7YnJlYWt9c2NbayYzMV0oKX1pZigoZnwwKT09MTMpe2NbYis4Pj4yXT1rO2NbYj4+Ml09aHwxO2NbYis0Pj4yXT1kO2JyZWFrfWs9WGEoNCl8MDtjW2s+PjJdPTIyNjgwO3diKGt8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTtMbihrfDAsZ3wwLGR8MCl8MDthW2srZD4+MF09MDtpPWU7cmV0dXJufWZ1bmN0aW9uIG5tKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT04O2M9YisxfDA7YVtjPj4wXT0xNzAyMTk1ODI4O2FbYysxPj4wXT02NjQ5MjAyO2FbYysyPj4wXT0yNTk3MzthW2MrMz4+MF09MTAxO2FbYis1Pj4wXT0wO3JldHVybn1mdW5jdGlvbiBvbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2Q9aTtlPTEzNjk2O3doaWxlKDEpe2lmKChjW2U+PjJdfDApPT0wKXticmVha31lbHNle2U9ZSs0fDB9fWc9ZS0xMzY5NnwwO2U9Zz4+MjtpZihlPj4+MD4xMDczNzQxODA3KXtkZygpfWRve2lmKGU+Pj4wPDIpe2FbYj4+MF09Zz4+PjE7aj1iKzR8MH1lbHNle2c9ZSs0Ji00O2g9Zzw8MjtoPShofDApPT0wPzE6aDt3aGlsZSgxKXtqPXVuKGgpfDA7aWYoKGp8MCkhPTApe2Y9MTM7YnJlYWt9aj1jWzU2NjZdfDA7Y1s1NjY2XT1qKzA7aWYoKGp8MCk9PTApe2JyZWFrfXNjW2omMzFdKCl9aWYoKGZ8MCk9PTEzKXtjW2IrOD4+Ml09ajtjW2I+PjJdPWd8MTtjW2IrND4+Ml09ZTticmVha31qPVhhKDQpfDA7Y1tqPj4yXT0yMjY4MDt3YihqfDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGV8MCk9PTApe2o9aisoZTw8Mil8MDtjW2o+PjJdPTA7aT1kO3JldHVybn1lbHNle2Y9ZTtnPTEzNjk2O2I9an13aGlsZSgxKXtmPWYrIC0xfDA7Y1tiPj4yXT1jW2c+PjJdO2lmKChmfDApPT0wKXticmVha31lbHNle2c9Zys0fDA7Yj1iKzR8MH19aj1qKyhlPDwyKXwwO2Nbaj4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIHBtKGIsYyl7Yj1ifDA7Yz1jfDA7dmFyIGQ9MDtjPWk7YVtiPj4wXT0xMDtkPWIrMXwwO2FbZCswPj4wXT1hWzEzNzIwPj4wXXwwO2FbZCsxPj4wXT1hWzEzNzIxPj4wXXwwO2FbZCsyPj4wXT1hWzEzNzIyPj4wXXwwO2FbZCszPj4wXT1hWzEzNzIzPj4wXXwwO2FbZCs0Pj4wXT1hWzEzNzI0Pj4wXXwwO2FbYis2Pj4wXT0wO2k9YztyZXR1cm59ZnVuY3Rpb24gcW0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtkPWk7ZT0xMzcyODt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtlPWUrNHwwfX1nPWUtMTM3Mjh8MDtlPWc+PjI7aWYoZT4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihlPj4+MDwyKXthW2I+PjBdPWc+Pj4xO2o9Yis0fDB9ZWxzZXtnPWUrNCYtNDtoPWc8PDI7aD0oaHwwKT09MD8xOmg7d2hpbGUoMSl7aj11bihoKXwwO2lmKChqfDApIT0wKXtmPTEzO2JyZWFrfWo9Y1s1NjY2XXwwO2NbNTY2Nl09aiswO2lmKChqfDApPT0wKXticmVha31zY1tqJjMxXSgpfWlmKChmfDApPT0xMyl7Y1tiKzg+PjJdPWo7Y1tiPj4yXT1nfDE7Y1tiKzQ+PjJdPWU7YnJlYWt9aj1YYSg0KXwwO2Nbaj4+Ml09MjI2ODA7d2IoanwwLDIyNzI4LDIwNil9fXdoaWxlKDApO2lmKChlfDApPT0wKXtqPWorKGU8PDIpfDA7Y1tqPj4yXT0wO2k9ZDtyZXR1cm59ZWxzZXtmPWU7Zz0xMzcyODtiPWp9d2hpbGUoMSl7Zj1mKyAtMXwwO2NbYj4+Ml09Y1tnPj4yXTtpZigoZnwwKT09MCl7YnJlYWt9ZWxzZXtnPWcrNHwwO2I9Yis0fDB9fWo9aisoZTw8Mil8MDtjW2o+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBybShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzc2MF18MCkhPTApe2Q9Y1szNDM4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzc2MCl8MCk9PTApe2Q9Y1szNDM4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzIwOTI4XXwwKT09MD8oUWEoMjA5MjgpfDApIT0wOjApe05uKDIwNzYwLDAsMTY4KXwwO2NjKDIxNSwwLHB8MCl8MDskYSgyMDkyOCl9Z2coMjA3NjAsMjA5MzYpO2dnKDIwNzcyfDAsMjA5NDQpO2dnKDIwNzg0fDAsMjA5NTIpO2dnKDIwNzk2fDAsMjA5NjApO2dnKDIwODA4fDAsMjA5NzYpO2dnKDIwODIwfDAsMjA5OTIpO2dnKDIwODMyfDAsMjFlMyk7Z2coMjA4NDR8MCwyMTAxNik7Z2coMjA4NTZ8MCwyMTAyNCk7Z2coMjA4Njh8MCwyMTAzMik7Z2coMjA4ODB8MCwyMTA0MCk7Z2coMjA4OTJ8MCwyMTA0OCk7Z2coMjA5MDR8MCwyMTA1Nik7Z2coMjA5MTZ8MCwyMTA2NCk7Y1szNDM4XT0yMDc2MDskYSgxMzc2MCk7ZD1jWzM0MzhdfDA7aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gc20oYil7Yj1ifDA7dmFyIGQ9MDtiPWk7aWYoKGFbMTM3NzZdfDApIT0wKXtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1pZigoUWEoMTM3NzYpfDApPT0wKXtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1pZigoYVsyMDM5Ml18MCk9PTA/KFFhKDIwMzkyKXwwKSE9MDowKXtObigyMDIyNCwwLDE2OCl8MDtjYygyMTYsMCxwfDApfDA7JGEoMjAzOTIpfW5nKDIwMjI0LDIwNDAwKTtuZygyMDIzNnwwLDIwNDMyKTtuZygyMDI0OHwwLDIwNDY0KTtuZygyMDI2MHwwLDIwNDk2KTtuZygyMDI3MnwwLDIwNTM2KTtuZygyMDI4NHwwLDIwNTc2KTtuZygyMDI5NnwwLDIwNjA4KTtuZygyMDMwOHwwLDIwNjQ4KTtuZygyMDMyMHwwLDIwNjY0KTtuZygyMDMzMnwwLDIwNjgwKTtuZygyMDM0NHwwLDIwNjk2KTtuZygyMDM1NnwwLDIwNzEyKTtuZygyMDM2OHwwLDIwNzI4KTtuZygyMDM4MHwwLDIwNzQ0KTtjWzM0NDJdPTIwMjI0OyRhKDEzNzc2KTtkPWNbMzQ0Ml18MDtpPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB0bShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzc5Ml18MCkhPTApe2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzc5Mil8MCk9PTApe2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzJlNF18MCk9PTA/KFFhKDJlNCl8MCkhPTA6MCl7Tm4oMTk3MTIsMCwyODgpfDA7Y2MoMjE3LDAscHwwKXwwOyRhKDJlNCl9Z2coMTk3MTIsMjAwMDgpO2dnKDE5NzI0fDAsMjAwMTYpO2dnKDE5NzM2fDAsMjAwMzIpO2dnKDE5NzQ4fDAsMjAwNDApO2dnKDE5NzYwfDAsMjAwNDgpO2dnKDE5NzcyfDAsMjAwNTYpO2dnKDE5Nzg0fDAsMjAwNjQpO2dnKDE5Nzk2fDAsMjAwNzIpO2dnKDE5ODA4fDAsMjAwODApO2dnKDE5ODIwfDAsMjAwOTYpO2dnKDE5ODMyfDAsMjAxMDQpO2dnKDE5ODQ0fDAsMjAxMjApO2dnKDE5ODU2fDAsMjAxMzYpO2dnKDE5ODY4fDAsMjAxNDQpO2dnKDE5ODgwfDAsMjAxNTIpO2dnKDE5ODkyfDAsMjAxNjApO2dnKDE5OTA0fDAsMjAwNDgpO2dnKDE5OTE2fDAsMjAxNjgpO2dnKDE5OTI4fDAsMjAxNzYpO2dnKDE5OTQwfDAsMjAxODQpO2dnKDE5OTUyfDAsMjAxOTIpO2dnKDE5OTY0fDAsMjAyMDApO2dnKDE5OTc2fDAsMjAyMDgpO2dnKDE5OTg4fDAsMjAyMTYpO2NbMzQ0Nl09MTk3MTI7JGEoMTM3OTIpO2Q9Y1szNDQ2XXwwO2k9YjtyZXR1cm4gZHwwfWZ1bmN0aW9uIHVtKGIpe2I9YnwwO3ZhciBkPTA7Yj1pO2lmKChhWzEzODA4XXwwKSE9MCl7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9aWYoKFFhKDEzODA4KXwwKT09MCl7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9aWYoKGFbMTkxNjBdfDApPT0wPyhRYSgxOTE2MCl8MCkhPTA6MCl7Tm4oMTg4NzIsMCwyODgpfDA7Y2MoMjE4LDAscHwwKXwwOyRhKDE5MTYwKX1uZygxODg3MiwxOTE2OCk7bmcoMTg4ODR8MCwxOTIwMCk7bmcoMTg4OTZ8MCwxOTI0MCk7bmcoMTg5MDh8MCwxOTI2NCk7bmcoMTg5MjB8MCwxOTU4NCk7bmcoMTg5MzJ8MCwxOTI4OCk7bmcoMTg5NDR8MCwxOTMxMik7bmcoMTg5NTZ8MCwxOTMzNik7bmcoMTg5Njh8MCwxOTM2OCk7bmcoMTg5ODB8MCwxOTQwOCk7bmcoMTg5OTJ8MCwxOTQ0MCk7bmcoMTkwMDR8MCwxOTQ4MCk7bmcoMTkwMTZ8MCwxOTUyMCk7bmcoMTkwMjh8MCwxOTUzNik7bmcoMTkwNDB8MCwxOTU1Mik7bmcoMTkwNTJ8MCwxOTU2OCk7bmcoMTkwNjR8MCwxOTU4NCk7bmcoMTkwNzZ8MCwxOTYwMCk7bmcoMTkwODh8MCwxOTYxNik7bmcoMTkxMDB8MCwxOTYzMik7bmcoMTkxMTJ8MCwxOTY0OCk7bmcoMTkxMjR8MCwxOTY2NCk7bmcoMTkxMzZ8MCwxOTY4MCk7bmcoMTkxNDh8MCwxOTY5Nik7Y1szNDUwXT0xODg3MjskYSgxMzgwOCk7ZD1jWzM0NTBdfDA7aT1iO3JldHVybiBkfDB9ZnVuY3Rpb24gdm0oYil7Yj1ifDA7dmFyIGQ9MDtiPWk7aWYoKGFbMTM4MjRdfDApIT0wKXtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1pZigoUWEoMTM4MjQpfDApPT0wKXtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1pZigoYVsxODg0OF18MCk9PTA/KFFhKDE4ODQ4KXwwKSE9MDowKXtObigxODU2MCwwLDI4OCl8MDtjYygyMTksMCxwfDApfDA7JGEoMTg4NDgpfWdnKDE4NTYwLDE4ODU2KTtnZygxODU3MnwwLDE4ODY0KTtjWzM0NTRdPTE4NTYwOyRhKDEzODI0KTtkPWNbMzQ1NF18MDtpPWI7cmV0dXJuIGR8MH1mdW5jdGlvbiB3bShiKXtiPWJ8MDt2YXIgZD0wO2I9aTtpZigoYVsxMzg0MF18MCkhPTApe2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChRYSgxMzg0MCl8MCk9PTApe2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWlmKChhWzE4NTIwXXwwKT09MD8oUWEoMTg1MjApfDApIT0wOjApe05uKDE4MjMyLDAsMjg4KXwwO2NjKDIyMCwwLHB8MCl8MDskYSgxODUyMCl9bmcoMTgyMzIsMTg1MjgpO25nKDE4MjQ0fDAsMTg1NDQpO2NbMzQ1OF09MTgyMzI7JGEoMTM4NDApO2Q9Y1szNDU4XXwwO2k9YjtyZXR1cm4gZHwwfWZ1bmN0aW9uIHhtKGIpe2I9YnwwO3ZhciBjPTAsZD0wO2I9aTtpZigoYVsxMzg2NF18MCkhPTApe2k9YjtyZXR1cm4gMTM4NDh9aWYoKFFhKDEzODY0KXwwKT09MCl7aT1iO3JldHVybiAxMzg0OH1hWzEzODQ4XT0xNjtjPTEzODQ5fDA7ZD1jO2FbZD4+MF09NjIzODY1MTI1O2FbZCsxPj4wXT0yNDM2OTczO2FbZCsyPj4wXT05NTE5O2FbZCszPj4wXT0zNztjPWMrNHwwO2FbYz4+MF09MjAzMjQ4MDEwMDthW2MrMT4+MF09NzkzOTM3NTthW2MrMj4+MF09MzEwMTM7YVtjKzM+PjBdPTEyMTthWzEzODU3Pj4wXT0wO2NjKDIyMSwxMzg0OCxwfDApfDA7JGEoMTM4NjQpO2k9YjtyZXR1cm4gMTM4NDh9ZnVuY3Rpb24geW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzEzODg4XXwwKSE9MCl7aT1iO3JldHVybiAxMzg3Mn1pZigoUWEoMTM4ODgpfDApPT0wKXtpPWI7cmV0dXJuIDEzODcyfWVsc2V7ZD0xMzg5Nn13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTM4OTZ8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzEzODcyXT1mPj4+MTtlPTEzODc2fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxMzg4MD4+Ml09aDtjWzM0NjhdPWZ8MTtjWzEzODc2Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTEzODk2O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDEzODcyLHB8MCl8MDskYSgxMzg4OCk7aT1iO3JldHVybiAxMzg3Mn1mdW5jdGlvbiB6bShiKXtiPWJ8MDt2YXIgYz0wLGQ9MDtiPWk7aWYoKGFbMTM5NTJdfDApIT0wKXtpPWI7cmV0dXJuIDEzOTM2fWlmKChRYSgxMzk1Mil8MCk9PTApe2k9YjtyZXR1cm4gMTM5MzZ9YVsxMzkzNl09MTY7Yz0xMzkzN3wwO2Q9YzthW2Q+PjBdPTYyNDU3NjU0OTthW2QrMT4+MF09MjQzOTc1MjthW2QrMj4+MF09OTUzMDthW2QrMz4+MF09Mzc7Yz1jKzR8MDthW2M+PjBdPTEzOTQ5NDg2ODU7YVtjKzE+PjBdPTU0NDkwMTg7YVtjKzI+PjBdPTIxMjg1O2FbYyszPj4wXT04MzthWzEzOTQ1Pj4wXT0wO2NjKDIyMSwxMzkzNixwfDApfDA7JGEoMTM5NTIpO2k9YjtyZXR1cm4gMTM5MzZ9ZnVuY3Rpb24gQW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzEzOTc2XXwwKSE9MCl7aT1iO3JldHVybiAxMzk2MH1pZigoUWEoMTM5NzYpfDApPT0wKXtpPWI7cmV0dXJuIDEzOTYwfWVsc2V7ZD0xMzk4NH13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTM5ODR8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzEzOTYwXT1mPj4+MTtlPTEzOTY0fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxMzk2OD4+Ml09aDtjWzM0OTBdPWZ8MTtjWzEzOTY0Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTEzOTg0O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDEzOTYwLHB8MCl8MDskYSgxMzk3Nik7aT1iO3JldHVybiAxMzk2MH1mdW5jdGlvbiBCbShiKXtiPWJ8MDtiPWk7aWYoKGFbMTQwNDBdfDApPT0wPyhRYSgxNDA0MCl8MCkhPTA6MCl7ZWcoMTQwMjQsMTQwNDgsMjApO2NjKDIyMSwxNDAyNCxwfDApfDA7JGEoMTQwNDApfWk9YjtyZXR1cm4gMTQwMjR9ZnVuY3Rpb24gQ20oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzE0MDg4XXwwKSE9MCl7aT1iO3JldHVybiAxNDA3Mn1pZigoUWEoMTQwODgpfDApPT0wKXtpPWI7cmV0dXJuIDE0MDcyfWVsc2V7ZD0xNDA5Nn13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTQwOTZ8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzE0MDcyXT1mPj4+MTtlPTE0MDc2fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxNDA4MD4+Ml09aDtjWzM1MThdPWZ8MTtjWzE0MDc2Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTE0MDk2O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDE0MDcyLHB8MCl8MDskYSgxNDA4OCk7aT1iO3JldHVybiAxNDA3Mn1mdW5jdGlvbiBEbShiKXtiPWJ8MDtiPWk7aWYoKGFbMTQyMDBdfDApPT0wPyhRYSgxNDIwMCl8MCkhPTA6MCl7ZWcoMTQxODQsMTQyMDgsMTEpO2NjKDIyMSwxNDE4NCxwfDApfDA7JGEoMTQyMDApfWk9YjtyZXR1cm4gMTQxODR9ZnVuY3Rpb24gRW0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Yj1pO2lmKChhWzE0MjQwXXwwKSE9MCl7aT1iO3JldHVybiAxNDIyNH1pZigoUWEoMTQyNDApfDApPT0wKXtpPWI7cmV0dXJuIDE0MjI0fWVsc2V7ZD0xNDI0OH13aGlsZSgxKXtpZigoY1tkPj4yXXwwKT09MCl7YnJlYWt9ZWxzZXtkPWQrNHwwfX1mPWQtMTQyNDh8MDtkPWY+PjI7aWYoZD4+PjA+MTA3Mzc0MTgwNyl7ZGcoKX1kb3tpZihkPj4+MDwyKXthWzE0MjI0XT1mPj4+MTtlPTE0MjI4fDB9ZWxzZXtmPWQrNCYtNDtnPWY8PDI7Zz0oZ3wwKT09MD8xOmc7d2hpbGUoMSl7aD11bihnKXwwO2lmKChofDApIT0wKXtlPTE1O2JyZWFrfWg9Y1s1NjY2XXwwO2NbNTY2Nl09aCswO2lmKChofDApPT0wKXticmVha31zY1toJjMxXSgpfWlmKChlfDApPT0xNSl7Y1sxNDIzMj4+Ml09aDtjWzM1NTZdPWZ8MTtjWzE0MjI4Pj4yXT1kO2U9aDticmVha31oPVhhKDQpfDA7Y1toPj4yXT0yMjY4MDt3YihofDAsMjI3MjgsMjA2KX19d2hpbGUoMCk7aWYoKGR8MCkhPTApe2g9ZDtmPTE0MjQ4O2c9ZTt3aGlsZSgxKXtoPWgrIC0xfDA7Y1tnPj4yXT1jW2Y+PjJdO2lmKChofDApPT0wKXticmVha31lbHNle2Y9Zis0fDA7Zz1nKzR8MH19fWNbZSsoZDw8Mik+PjJdPTA7Y2MoMjIyLDE0MjI0LHB8MCl8MDskYSgxNDI0MCk7aT1iO3JldHVybiAxNDIyNH1mdW5jdGlvbiBGbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCkhPTM0KXtpPWY7cmV0dXJuK2t9Y1tlPj4yXT00O2k9ZjtyZXR1cm4ra31mdW5jdGlvbiBHbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCkhPTM0KXtpPWY7cmV0dXJuK2t9Y1tlPj4yXT00O2k9ZjtyZXR1cm4ra31mdW5jdGlvbiBIbShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAuMDtmPWk7aT1pKzE2fDA7Zz1mO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O2s9MC4wO2k9ZjtyZXR1cm4ra31qPWJiKCl8MDtoPWNbaj4+Ml18MDtjW2o+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWs9K0ZuKGIsZyk7Yj1jW2o+PjJdfDA7aWYoKGJ8MCk9PTApe2Nbaj4+Ml09aH1pZigoY1tnPj4yXXwwKSE9KGR8MCkpe2NbZT4+Ml09NDtrPTAuMDtpPWY7cmV0dXJuK2t9aWYoKGJ8MCk9PTM0KXtjW2U+PjJdPTR9aT1mO3JldHVybitrfWZ1bmN0aW9uIEltKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7aD1pO2k9aSsxMTJ8MDtrPWg7aWYoKGJ8MCk9PShkfDApKXtjW2U+PjJdPTQ7Zj0wO209MDtJPWY7aT1oO3JldHVybiBtfDB9aWYoKGFbYj4+MF18MCk9PTQ1KXtjW2U+PjJdPTQ7Zj0wO209MDtJPWY7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsLTEsLTEpfDA7Zj1JO2s9YisoKGNbbD4+Ml18MCkrKGNbbj4+Ml18MCktKGNbays4Pj4yXXwwKSl8MDtiPWNbZz4+Ml18MDtpZigoYnwwKT09MCl7Y1tnPj4yXT1qfWlmKChrfDApIT0oZHwwKSl7Y1tlPj4yXT00O209MDtuPTA7ST1tO2k9aDtyZXR1cm4gbnwwfWlmKChifDApIT0zNCl7bj1tO0k9ZjtpPWg7cmV0dXJuIG58MH1jW2U+PjJdPTQ7bT0tMTtuPS0xO0k9bTtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBKbShiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtpPWkrMTEyfDA7az1oO2lmKChifDApPT0oZHwwKSl7Y1tlPj4yXT00O209MDtpPWg7cmV0dXJuIG18MH1pZigoYVtiPj4wXXwwKT09NDUpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsLTEsLTEpfDA7Zj1JO2s9YisoKGNbbD4+Ml18MCkrKGNbbj4+Ml18MCktKGNbays4Pj4yXXwwKSl8MDtiPWNbZz4+Ml18MDtpZigoYnwwKT09MCl7Y1tnPj4yXT1qfWlmKChrfDApIT0oZHwwKSl7Y1tlPj4yXT00O249MDtpPWg7cmV0dXJuIG58MH1pZigoYnwwKT09MzR8KGY+Pj4wPjB8KGZ8MCk9PTAmbT4+PjA+NDI5NDk2NzI5NSkpe2NbZT4+Ml09NDtuPS0xO2k9aDtyZXR1cm4gbnwwfWVsc2V7bj1tO2k9aDtyZXR1cm4gbnwwfXJldHVybiAwfWZ1bmN0aW9uIEttKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7aD1pO2k9aSsxMTJ8MDtrPWg7aWYoKGJ8MCk9PShkfDApKXtjW2U+PjJdPTQ7bT0wO2k9aDtyZXR1cm4gbXwwfWlmKChhW2I+PjBdfDApPT00NSl7Y1tlPj4yXT00O209MDtpPWg7cmV0dXJuIG18MH1nPWJiKCl8MDtqPWNbZz4+Ml18MDtjW2c+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbaz4+Ml09MDtsPWsrNHwwO2NbbD4+Ml09YjtjW2srNDQ+PjJdPWI7aWYoKGJ8MCk8MCl7Y1trKzg+PjJdPS0xO209LTF9ZWxzZXttPWIrMjE0NzQ4MzY0N3wwO2Nbays4Pj4yXT1tfWNbays3Nj4+Ml09LTE7Y1trKzEwND4+Ml09MDtuPWsrMTA4fDA7Y1tuPj4yXT1tLWI7Y1trKzEwMD4+Ml09bTttPUJuKGssZiwtMSwtMSl8MDtmPUk7az1iKygoY1tsPj4yXXwwKSsoY1tuPj4yXXwwKS0oY1trKzg+PjJdfDApKXwwO2I9Y1tnPj4yXXwwO2lmKChifDApPT0wKXtjW2c+PjJdPWp9aWYoKGt8MCkhPShkfDApKXtjW2U+PjJdPTQ7bj0wO2k9aDtyZXR1cm4gbnwwfWlmKChifDApPT0zNHwoZj4+PjA+MHwoZnwwKT09MCZtPj4+MD40Mjk0OTY3Mjk1KSl7Y1tlPj4yXT00O249LTE7aT1oO3JldHVybiBufDB9ZWxzZXtuPW07aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTG0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9aWYoKGFbYj4+MF18MCk9PTQ1KXtjW2U+PjJdPTQ7bT0wO2k9aDtyZXR1cm4gbXwwfWc9YmIoKXwwO2o9Y1tnPj4yXXwwO2NbZz4+Ml09MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9Y1trPj4yXT0wO2w9ays0fDA7Y1tsPj4yXT1iO2Nbays0ND4+Ml09YjtpZigoYnwwKTwwKXtjW2srOD4+Ml09LTE7bT0tMX1lbHNle209YisyMTQ3NDgzNjQ3fDA7Y1trKzg+PjJdPW19Y1trKzc2Pj4yXT0tMTtjW2srMTA0Pj4yXT0wO249aysxMDh8MDtjW24+PjJdPW0tYjtjW2srMTAwPj4yXT1tO209Qm4oayxmLC0xLC0xKXwwO2Y9STtrPWIrKChjW2w+PjJdfDApKyhjW24+PjJdfDApLShjW2srOD4+Ml18MCkpfDA7Yj1jW2c+PjJdfDA7aWYoKGJ8MCk9PTApe2NbZz4+Ml09an1pZigoa3wwKSE9KGR8MCkpe2NbZT4+Ml09NDtuPTA7aT1oO3JldHVybiBufDB9aWYoKGJ8MCk9PTM0fChmPj4+MD4wfChmfDApPT0wJm0+Pj4wPjY1NTM1KSl7Y1tlPj4yXT00O249LTE7aT1oO3JldHVybiBufDB9ZWxzZXtuPW0mNjU1MzU7aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTW0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDtmPTA7bT0wO0k9ZjtpPWg7cmV0dXJuIG18MH1nPWJiKCl8MDtqPWNbZz4+Ml18MDtjW2c+PjJdPTA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWNbaz4+Ml09MDtsPWsrNHwwO2NbbD4+Ml09YjtjW2srNDQ+PjJdPWI7aWYoKGJ8MCk8MCl7Y1trKzg+PjJdPS0xO209LTF9ZWxzZXttPWIrMjE0NzQ4MzY0N3wwO2Nbays4Pj4yXT1tfWNbays3Nj4+Ml09LTE7Y1trKzEwND4+Ml09MDtuPWsrMTA4fDA7Y1tuPj4yXT1tLWI7Y1trKzEwMD4+Ml09bTttPUJuKGssZiwwLC0yMTQ3NDgzNjQ4KXwwO2Y9STtrPWIrKChjW2w+PjJdfDApKyhjW24+PjJdfDApLShjW2srOD4+Ml18MCkpfDA7Yj1jW2c+PjJdfDA7aWYoKGJ8MCk9PTApe2NbZz4+Ml09an1pZigoa3wwKSE9KGR8MCkpe2NbZT4+Ml09NDttPTA7bj0wO0k9bTtpPWg7cmV0dXJuIG58MH1pZigoYnwwKT09MzQpe2NbZT4+Ml09NDtuPShmfDApPjB8KGZ8MCk9PTAmbT4+PjA+MDtJPW4/MjE0NzQ4MzY0NzotMjE0NzQ4MzY0ODtpPWg7cmV0dXJuKG4/LTE6MCl8MH1lbHNle249bTtJPWY7aT1oO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTm0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzExMnwwO2s9aDtpZigoYnwwKT09KGR8MCkpe2NbZT4+Ml09NDttPTA7aT1oO3JldHVybiBtfDB9Zz1iYigpfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT0wO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1jW2s+PjJdPTA7bD1rKzR8MDtjW2w+PjJdPWI7Y1trKzQ0Pj4yXT1iO2lmKChifDApPDApe2Nbays4Pj4yXT0tMTttPS0xfWVsc2V7bT1iKzIxNDc0ODM2NDd8MDtjW2srOD4+Ml09bX1jW2srNzY+PjJdPS0xO2NbaysxMDQ+PjJdPTA7bj1rKzEwOHwwO2Nbbj4+Ml09bS1iO2NbaysxMDA+PjJdPW07bT1CbihrLGYsMCwtMjE0NzQ4MzY0OCl8MDtmPUk7az1iKygoY1tsPj4yXXwwKSsoY1tuPj4yXXwwKS0oY1trKzg+PjJdfDApKXwwO2I9Y1tnPj4yXXwwO2lmKChifDApPT0wKXtjW2c+PjJdPWp9aWYoKGt8MCkhPShkfDApKXtjW2U+PjJdPTQ7bj0wO2k9aDtyZXR1cm4gbnwwfWRve2lmKChifDApPT0zNCl7Y1tlPj4yXT00O2lmKChmfDApPjB8KGZ8MCk9PTAmbT4+PjA+MCl7bj0yMTQ3NDgzNjQ3O2k9aDtyZXR1cm4gbnwwfX1lbHNle2lmKChmfDApPC0xfChmfDApPT0tMSZtPj4+MDwyMTQ3NDgzNjQ4KXtjW2U+PjJdPTQ7YnJlYWt9aWYoKGZ8MCk+MHwoZnwwKT09MCZtPj4+MD4yMTQ3NDgzNjQ3KXtjW2U+PjJdPTQ7bj0yMTQ3NDgzNjQ3O2k9aDtyZXR1cm4gbnwwfWVsc2V7bj1tO2k9aDtyZXR1cm4gbnwwfX19d2hpbGUoMCk7bj0tMjE0NzQ4MzY0ODtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBPbShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7Yj1pO2lmKCEoKGFbMTg1MDg+PjBdJjEpPT0wKT8odj1jWzE4NTE2Pj4yXXwwLCh2fDApIT0wKTowKXt2bih2KX1pZighKChhWzE4NDk2Pj4wXSYxKT09MCk/KHU9Y1sxODUwND4+Ml18MCwodXwwKSE9MCk6MCl7dm4odSl9aWYoISgoYVsxODQ4ND4+MF0mMSk9PTApPyh0PWNbMTg0OTI+PjJdfDAsKHR8MCkhPTApOjApe3ZuKHQpfWlmKCEoKGFbMTg0NzI+PjBdJjEpPT0wKT8ocz1jWzE4NDgwPj4yXXwwLChzfDApIT0wKTowKXt2bihzKX1pZighKChhWzE4NDYwPj4wXSYxKT09MCk/KHI9Y1sxODQ2OD4+Ml18MCwocnwwKSE9MCk6MCl7dm4ocil9aWYoISgoYVsxODQ0OD4+MF0mMSk9PTApPyhkPWNbMTg0NTY+PjJdfDAsKGR8MCkhPTApOjApe3ZuKGQpfWlmKCEoKGFbMTg0MzY+PjBdJjEpPT0wKT8ocD1jWzE4NDQ0Pj4yXXwwLChwfDApIT0wKTowKXt2bihwKX1pZighKChhWzE4NDI0Pj4wXSYxKT09MCk/KG89Y1sxODQzMj4+Ml18MCwob3wwKSE9MCk6MCl7dm4obyl9aWYoISgoYVsxODQxMj4+MF0mMSk9PTApPyhuPWNbMTg0MjA+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbMTg0MDA+PjBdJjEpPT0wKT8obT1jWzE4NDA4Pj4yXXwwLChtfDApIT0wKTowKXt2bihtKX1pZighKChhWzE4Mzg4Pj4wXSYxKT09MCk/KGw9Y1sxODM5Nj4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoISgoYVsxODM3Nj4+MF0mMSk9PTApPyhrPWNbMTgzODQ+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKCEoKGFbMTgzNjQ+PjBdJjEpPT0wKT8oaj1jWzE4MzcyPj4yXXwwLChqfDApIT0wKTowKXt2bihqKX1pZighKChhWzE4MzUyPj4wXSYxKT09MCk/KGg9Y1sxODM2MD4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9aWYoISgoYVsxODM0MD4+MF0mMSk9PTApPyhnPWNbMTgzNDg+PjJdfDAsKGd8MCkhPTApOjApe3ZuKGcpfWlmKCEoKGFbMTgzMjg+PjBdJjEpPT0wKT8oZj1jWzE4MzM2Pj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1pZighKChhWzE4MzE2Pj4wXSYxKT09MCk/KGU9Y1sxODMyND4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9aWYoISgoYVsxODMwND4+MF0mMSk9PTApPyhxPWNbMTgzMTI+PjJdfDAsKHF8MCkhPTApOjApe3ZuKHEpfWRve2lmKCEoKGFbMTgyOTI+PjBdJjEpPT0wKSl7ZD1jWzE4MzAwPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODI4MD4+MF0mMSk9PTApKXtkPWNbMTgyODg+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4MjY4Pj4wXSYxKT09MCkpe2Q9Y1sxODI3Nj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTgyNTY+PjBdJjEpPT0wKSl7ZD1jWzE4MjY0Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODI0ND4+MF0mMSk9PTApKXtkPWNbMTgyNTI+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtpZigoYVsxODIzMl0mMSk9PTApe2k9YjtyZXR1cm59ZD1jWzE4MjQwPj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gUG0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO2I9aTtpZighKChhWzE4ODM2Pj4wXSYxKT09MCk/KHY9Y1sxODg0ND4+Ml18MCwodnwwKSE9MCk6MCl7dm4odil9aWYoISgoYVsxODgyND4+MF0mMSk9PTApPyh1PWNbMTg4MzI+PjJdfDAsKHV8MCkhPTApOjApe3ZuKHUpfWlmKCEoKGFbMTg4MTI+PjBdJjEpPT0wKT8odD1jWzE4ODIwPj4yXXwwLCh0fDApIT0wKTowKXt2bih0KX1pZighKChhWzE4ODAwPj4wXSYxKT09MCk/KHM9Y1sxODgwOD4+Ml18MCwoc3wwKSE9MCk6MCl7dm4ocyl9aWYoISgoYVsxODc4OD4+MF0mMSk9PTApPyhyPWNbMTg3OTY+PjJdfDAsKHJ8MCkhPTApOjApe3ZuKHIpfWlmKCEoKGFbMTg3NzY+PjBdJjEpPT0wKT8oZD1jWzE4Nzg0Pj4yXXwwLChkfDApIT0wKTowKXt2bihkKX1pZighKChhWzE4NzY0Pj4wXSYxKT09MCk/KHA9Y1sxODc3Mj4+Ml18MCwocHwwKSE9MCk6MCl7dm4ocCl9aWYoISgoYVsxODc1Mj4+MF0mMSk9PTApPyhvPWNbMTg3NjA+PjJdfDAsKG98MCkhPTApOjApe3ZuKG8pfWlmKCEoKGFbMTg3NDA+PjBdJjEpPT0wKT8obj1jWzE4NzQ4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhWzE4NzI4Pj4wXSYxKT09MCk/KG09Y1sxODczNj4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoISgoYVsxODcxNj4+MF0mMSk9PTApPyhsPWNbMTg3MjQ+PjJdfDAsKGx8MCkhPTApOjApe3ZuKGwpfWlmKCEoKGFbMTg3MDQ+PjBdJjEpPT0wKT8oaz1jWzE4NzEyPj4yXXwwLChrfDApIT0wKTowKXt2bihrKX1pZighKChhWzE4NjkyPj4wXSYxKT09MCk/KGo9Y1sxODcwMD4+Ml18MCwoanwwKSE9MCk6MCl7dm4oail9aWYoISgoYVsxODY4MD4+MF0mMSk9PTApPyhoPWNbMTg2ODg+PjJdfDAsKGh8MCkhPTApOjApe3ZuKGgpfWlmKCEoKGFbMTg2Njg+PjBdJjEpPT0wKT8oZz1jWzE4Njc2Pj4yXXwwLChnfDApIT0wKTowKXt2bihnKX1pZighKChhWzE4NjU2Pj4wXSYxKT09MCk/KGY9Y1sxODY2ND4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9aWYoISgoYVsxODY0ND4+MF0mMSk9PTApPyhlPWNbMTg2NTI+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWlmKCEoKGFbMTg2MzI+PjBdJjEpPT0wKT8ocT1jWzE4NjQwPj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1kb3tpZighKChhWzE4NjIwPj4wXSYxKT09MCkpe2Q9Y1sxODYyOD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg2MDg+PjBdJjEpPT0wKSl7ZD1jWzE4NjE2Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODU5Nj4+MF0mMSk9PTApKXtkPWNbMTg2MDQ+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4NTg0Pj4wXSYxKT09MCkpe2Q9Y1sxODU5Mj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg1NzI+PjBdJjEpPT0wKSl7ZD1jWzE4NTgwPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7aWYoKGFbMTg1NjBdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1sxODU2OD4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFFtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDtiPWk7aWYoISgoYVsxOTE0OD4+MF0mMSk9PTApPyh2PWNbMTkxNTY+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbMTkxMzY+PjBdJjEpPT0wKT8odT1jWzE5MTQ0Pj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhWzE5MTI0Pj4wXSYxKT09MCk/KHQ9Y1sxOTEzMj4+Ml18MCwodHwwKSE9MCk6MCl7dm4odCl9aWYoISgoYVsxOTExMj4+MF0mMSk9PTApPyhzPWNbMTkxMjA+PjJdfDAsKHN8MCkhPTApOjApe3ZuKHMpfWlmKCEoKGFbMTkxMDA+PjBdJjEpPT0wKT8ocj1jWzE5MTA4Pj4yXXwwLChyfDApIT0wKTowKXt2bihyKX1pZighKChhWzE5MDg4Pj4wXSYxKT09MCk/KGQ9Y1sxOTA5Nj4+Ml18MCwoZHwwKSE9MCk6MCl7dm4oZCl9aWYoISgoYVsxOTA3Nj4+MF0mMSk9PTApPyhwPWNbMTkwODQ+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMTkwNjQ+PjBdJjEpPT0wKT8obz1jWzE5MDcyPj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzE5MDUyPj4wXSYxKT09MCk/KG49Y1sxOTA2MD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsxOTA0MD4+MF0mMSk9PTApPyhtPWNbMTkwNDg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMTkwMjg+PjBdJjEpPT0wKT8obD1jWzE5MDM2Pj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzE5MDE2Pj4wXSYxKT09MCk/KGs9Y1sxOTAyND4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsxOTAwND4+MF0mMSk9PTApPyhqPWNbMTkwMTI+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMTg5OTI+PjBdJjEpPT0wKT8oaD1jWzE5ZTM+PjJdfDAsKGh8MCkhPTApOjApe3ZuKGgpfWlmKCEoKGFbMTg5ODA+PjBdJjEpPT0wKT8oZz1jWzE4OTg4Pj4yXXwwLChnfDApIT0wKTowKXt2bihnKX1pZighKChhWzE4OTY4Pj4wXSYxKT09MCk/KGY9Y1sxODk3Nj4+Ml18MCwoZnwwKSE9MCk6MCl7dm4oZil9aWYoISgoYVsxODk1Nj4+MF0mMSk9PTApPyhlPWNbMTg5NjQ+PjJdfDAsKGV8MCkhPTApOjApe3ZuKGUpfWlmKCEoKGFbMTg5NDQ+PjBdJjEpPT0wKT8ocT1jWzE4OTUyPj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1kb3tpZighKChhWzE4OTMyPj4wXSYxKT09MCkpe2Q9Y1sxODk0MD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg5MjA+PjBdJjEpPT0wKSl7ZD1jWzE4OTI4Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxODkwOD4+MF0mMSk9PTApKXtkPWNbMTg5MTY+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE4ODk2Pj4wXSYxKT09MCkpe2Q9Y1sxODkwND4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTg4ODQ+PjBdJjEpPT0wKSl7ZD1jWzE4ODkyPj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7aWYoKGFbMTg4NzJdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1sxODg4MD4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFJtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDtiPWk7aWYoISgoYVsxOTk4OD4+MF0mMSk9PTApPyh2PWNbMTk5OTY+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbMTk5NzY+PjBdJjEpPT0wKT8odT1jWzE5OTg0Pj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhWzE5OTY0Pj4wXSYxKT09MCk/KHQ9Y1sxOTk3Mj4+Ml18MCwodHwwKSE9MCk6MCl7dm4odCl9aWYoISgoYVsxOTk1Mj4+MF0mMSk9PTApPyhzPWNbMTk5NjA+PjJdfDAsKHN8MCkhPTApOjApe3ZuKHMpfWlmKCEoKGFbMTk5NDA+PjBdJjEpPT0wKT8ocj1jWzE5OTQ4Pj4yXXwwLChyfDApIT0wKTowKXt2bihyKX1pZighKChhWzE5OTI4Pj4wXSYxKT09MCk/KGQ9Y1sxOTkzNj4+Ml18MCwoZHwwKSE9MCk6MCl7dm4oZCl9aWYoISgoYVsxOTkxNj4+MF0mMSk9PTApPyhwPWNbMTk5MjQ+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMTk5MDQ+PjBdJjEpPT0wKT8obz1jWzE5OTEyPj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzE5ODkyPj4wXSYxKT09MCk/KG49Y1sxOTkwMD4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsxOTg4MD4+MF0mMSk9PTApPyhtPWNbMTk4ODg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMTk4Njg+PjBdJjEpPT0wKT8obD1jWzE5ODc2Pj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzE5ODU2Pj4wXSYxKT09MCk/KGs9Y1sxOTg2ND4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsxOTg0ND4+MF0mMSk9PTApPyhqPWNbMTk4NTI+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMTk4MzI+PjBdJjEpPT0wKT8oaD1jWzE5ODQwPj4yXXwwLChofDApIT0wKTowKXt2bihoKX1pZighKChhWzE5ODIwPj4wXSYxKT09MCk/KGc9Y1sxOTgyOD4+Ml18MCwoZ3wwKSE9MCk6MCl7dm4oZyl9aWYoISgoYVsxOTgwOD4+MF0mMSk9PTApPyhmPWNbMTk4MTY+PjJdfDAsKGZ8MCkhPTApOjApe3ZuKGYpfWlmKCEoKGFbMTk3OTY+PjBdJjEpPT0wKT8oZT1jWzE5ODA0Pj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pZighKChhWzE5Nzg0Pj4wXSYxKT09MCk/KHE9Y1sxOTc5Mj4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9ZG97aWYoISgoYVsxOTc3Mj4+MF0mMSk9PTApKXtkPWNbMTk3ODA+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE5NzYwPj4wXSYxKT09MCkpe2Q9Y1sxOTc2OD4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2Rve2lmKCEoKGFbMTk3NDg+PjBdJjEpPT0wKSl7ZD1jWzE5NzU2Pj4yXXwwO2lmKChkfDApPT0wKXticmVha312bihkKX19d2hpbGUoMCk7ZG97aWYoISgoYVsxOTczNj4+MF0mMSk9PTApKXtkPWNbMTk3NDQ+PjJdfDA7aWYoKGR8MCk9PTApe2JyZWFrfXZuKGQpfX13aGlsZSgwKTtkb3tpZighKChhWzE5NzI0Pj4wXSYxKT09MCkpe2Q9Y1sxOTczMj4+Ml18MDtpZigoZHwwKT09MCl7YnJlYWt9dm4oZCl9fXdoaWxlKDApO2lmKChhWzE5NzEyXSYxKT09MCl7aT1iO3JldHVybn1kPWNbMTk3MjA+PjJdfDA7aWYoKGR8MCk9PTApe2k9YjtyZXR1cm59dm4oZCk7aT1iO3JldHVybn1mdW5jdGlvbiBTbShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO2I9aTtpZighKChhWzIwMzgwPj4wXSYxKT09MCk/KHE9Y1syMDM4OD4+Ml18MCwocXwwKSE9MCk6MCl7dm4ocSl9aWYoISgoYVsyMDM2OD4+MF0mMSk9PTApPyhwPWNbMjAzNzY+PjJdfDAsKHB8MCkhPTApOjApe3ZuKHApfWlmKCEoKGFbMjAzNTY+PjBdJjEpPT0wKT8obz1jWzIwMzY0Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhWzIwMzQ0Pj4wXSYxKT09MCk/KG49Y1syMDM1Mj4+Ml18MCwobnwwKSE9MCk6MCl7dm4obil9aWYoISgoYVsyMDMzMj4+MF0mMSk9PTApPyhtPWNbMjAzNDA+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbMjAzMjA+PjBdJjEpPT0wKT8oZD1jWzIwMzI4Pj4yXXwwLChkfDApIT0wKTowKXt2bihkKX1pZighKChhWzIwMzA4Pj4wXSYxKT09MCk/KGw9Y1syMDMxNj4+Ml18MCwobHwwKSE9MCk6MCl7dm4obCl9aWYoISgoYVsyMDI5Nj4+MF0mMSk9PTApPyhrPWNbMjAzMDQ+PjJdfDAsKGt8MCkhPTApOjApe3ZuKGspfWlmKCEoKGFbMjAyODQ+PjBdJjEpPT0wKT8oaj1jWzIwMjkyPj4yXXwwLChqfDApIT0wKTowKXt2bihqKX1pZighKChhWzIwMjcyPj4wXSYxKT09MCk/KGg9Y1syMDI4MD4+Ml18MCwoaHwwKSE9MCk6MCl7dm4oaCl9aWYoISgoYVsyMDI2MD4+MF0mMSk9PTApPyhnPWNbMjAyNjg+PjJdfDAsKGd8MCkhPTApOjApe3ZuKGcpfWlmKCEoKGFbMjAyNDg+PjBdJjEpPT0wKT8oZj1jWzIwMjU2Pj4yXXwwLChmfDApIT0wKTowKXt2bihmKX1pZighKChhWzIwMjM2Pj4wXSYxKT09MCk/KGU9Y1syMDI0ND4+Ml18MCwoZXwwKSE9MCk6MCl7dm4oZSl9aWYoKGFbMjAyMjRdJjEpPT0wKXtpPWI7cmV0dXJufWQ9Y1syMDIzMj4+Ml18MDtpZigoZHwwKT09MCl7aT1iO3JldHVybn12bihkKTtpPWI7cmV0dXJufWZ1bmN0aW9uIFRtKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7Yj1pO2lmKCEoKGFbMjA5MTY+PjBdJjEpPT0wKT8ocT1jWzIwOTI0Pj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1pZighKChhWzIwOTA0Pj4wXSYxKT09MCk/KHA9Y1syMDkxMj4+Ml18MCwocHwwKSE9MCk6MCl7dm4ocCl9aWYoISgoYVsyMDg5Mj4+MF0mMSk9PTApPyhvPWNbMjA5MDA+PjJdfDAsKG98MCkhPTApOjApe3ZuKG8pfWlmKCEoKGFbMjA4ODA+PjBdJjEpPT0wKT8obj1jWzIwODg4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhWzIwODY4Pj4wXSYxKT09MCk/KG09Y1syMDg3Nj4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9aWYoISgoYVsyMDg1Nj4+MF0mMSk9PTApPyhkPWNbMjA4NjQ+PjJdfDAsKGR8MCkhPTApOjApe3ZuKGQpfWlmKCEoKGFbMjA4NDQ+PjBdJjEpPT0wKT8obD1jWzIwODUyPj4yXXwwLChsfDApIT0wKTowKXt2bihsKX1pZighKChhWzIwODMyPj4wXSYxKT09MCk/KGs9Y1syMDg0MD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9aWYoISgoYVsyMDgyMD4+MF0mMSk9PTApPyhqPWNbMjA4Mjg+PjJdfDAsKGp8MCkhPTApOjApe3ZuKGopfWlmKCEoKGFbMjA4MDg+PjBdJjEpPT0wKT8oaD1jWzIwODE2Pj4yXXwwLChofDApIT0wKTowKXt2bihoKX1pZighKChhWzIwNzk2Pj4wXSYxKT09MCk/KGc9Y1syMDgwND4+Ml18MCwoZ3wwKSE9MCk6MCl7dm4oZyl9aWYoISgoYVsyMDc4ND4+MF0mMSk9PTApPyhmPWNbMjA3OTI+PjJdfDAsKGZ8MCkhPTApOjApe3ZuKGYpfWlmKCEoKGFbMjA3NzI+PjBdJjEpPT0wKT8oZT1jWzIwNzgwPj4yXXwwLChlfDApIT0wKTowKXt2bihlKX1pZigoYVsyMDc2MF0mMSk9PTApe2k9YjtyZXR1cm59ZD1jWzIwNzY4Pj4yXXwwO2lmKChkfDApPT0wKXtpPWI7cmV0dXJufXZuKGQpO2k9YjtyZXR1cm59ZnVuY3Rpb24gVW0oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7Zz1pO2k9aSsxNnwwO2g9ZztjW2g+PjJdPWI7Zj0oZnwwKT09MD8yMTI4ODpmO2o9Y1tmPj4yXXwwO2E6ZG97aWYoKGR8MCk9PTApe2lmKChqfDApPT0wKXtrPTA7aT1nO3JldHVybiBrfDB9fWVsc2V7aWYoKGJ8MCk9PTApe2NbaD4+Ml09aH1lbHNle2g9Yn1pZigoZXwwKT09MCl7az0tMjtpPWc7cmV0dXJuIGt8MH1kb3tpZigoanwwKT09MCl7Yj1hW2Q+PjBdfDA7aj1iJjI1NTtpZihiPDwyND4+MjQ+LTEpe2NbaD4+Ml09ajtrPWI8PDI0Pj4yNCE9MCYxO2k9ZztyZXR1cm4ga3wwfWVsc2V7aj1qKyAtMTk0fDA7aWYoaj4+PjA+NTApe2JyZWFrIGF9Yj1lKyAtMXwwO2o9Y1syMTA3Misoajw8Mik+PjJdfDA7ZD1kKzF8MDticmVha319ZWxzZXtiPWV9fXdoaWxlKDApO2I6ZG97aWYoKGJ8MCkhPTApe2s9YVtkPj4wXXwwO2w9KGsmMjU1KT4+PjM7aWYoKGwrIC0xNnxsKyhqPj4yNikpPj4+MD43KXticmVhayBhfXdoaWxlKDEpe2Q9ZCsxfDA7aj0oayYyNTUpKyAtMTI4fGo8PDY7Yj1iKyAtMXwwO2lmKChqfDApPj0wKXticmVha31pZigoYnwwKT09MCl7YnJlYWsgYn1rPWFbZD4+MF18MDtpZigoKGsmMjU1KSsgLTEyOHwwKT4+PjA+NjMpe2JyZWFrIGF9fWNbZj4+Ml09MDtjW2g+PjJdPWo7bD1lLWJ8MDtpPWc7cmV0dXJuIGx8MH19d2hpbGUoMCk7Y1tmPj4yXT1qO2w9LTI7aT1nO3JldHVybiBsfDB9fXdoaWxlKDApO2NbZj4+Ml09MDtjWyhiYigpfDApPj4yXT04NDtsPS0xO2k9ZztyZXR1cm4gbHwwfWZ1bmN0aW9uIFZtKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO2g9aTtrPWNbZT4+Ml18MDtpZigoZ3wwKSE9MD8obD1jW2c+PjJdfDAsKGx8MCkhPTApOjApe2lmKChifDApPT0wKXtqPWY7Zz0xNn1lbHNle2NbZz4+Ml09MDtqPWY7Zz0zNX19ZWxzZXtpZigoYnwwKT09MCl7aj1mO2c9N31lbHNle2o9ZjtnPTZ9fWE6d2hpbGUoMSl7aWYoKGd8MCk9PTYpe2lmKChqfDApPT0wKXtnPTUzO2JyZWFrfXdoaWxlKDEpe2c9YVtrPj4wXXwwO2I6ZG97aWYoKChnJjI1NSkrIC0xfDApPj4+MDwxMjc/KGsmM3wwKT09MCZqPj4+MD4zOjApe2Rve2c9Y1trPj4yXXwwO2lmKCgoZysgLTE2ODQzMDA5fGcpJi0yMTM5MDYyMTQ0fDApIT0wKXtnPWcmMjU1O2JyZWFrIGJ9Y1tiPj4yXT1nJjI1NTtjW2IrND4+Ml09ZFtrKzE+PjBdfDA7Y1tiKzg+PjJdPWRbaysyPj4wXXwwO2w9aztrPWsrNHwwO209YjtiPWIrMTZ8MDtjW20rMTI+PjJdPWRbbCszPj4wXXwwO2o9aisgLTR8MH13aGlsZShqPj4+MD4zKTtnPWFbaz4+MF18MH19d2hpbGUoMCk7bD1nJjI1NTtpZighKChsKyAtMXwwKT4+PjA8MTI3KSl7YnJlYWt9Y1tiPj4yXT1sO2o9aisgLTF8MDtpZigoanwwKT09MCl7Zz01MzticmVhayBhfWVsc2V7Yj1iKzR8MDtrPWsrMXwwfX1sPWwrIC0xOTR8MDtpZihsPj4+MD41MCl7bD1nO2c9NDc7YnJlYWt9bD1jWzIxMDcyKyhsPDwyKT4+Ml18MDtrPWsrMXwwO2c9MzU7Y29udGludWV9ZWxzZSBpZigoZ3wwKT09Nyl7bD1hW2s+PjBdfDA7aWYoKChsJjI1NSkrIC0xfDApPj4+MDwxMjc/KGsmM3wwKT09MDowKXtsPWNbaz4+Ml18MDtpZigoKGwrIC0xNjg0MzAwOXxsKSYtMjEzOTA2MjE0NHwwKT09MCl7ZG97az1rKzR8MDtqPWorIC00fDA7bD1jW2s+PjJdfDB9d2hpbGUoKChsKyAtMTY4NDMwMDl8bCkmLTIxMzkwNjIxNDR8MCk9PTApfWc9bCYyNTU7bD1sJjI1NX1lbHNle2c9bH1sPWwmMjU1O2lmKChsKyAtMXwwKT4+PjA8MTI3KXtqPWorIC0xfDA7az1rKzF8MDtnPTc7Y29udGludWV9bD1sKyAtMTk0fDA7aWYobD4+PjA+NTApe2w9ZztnPTQ3O2JyZWFrfWw9Y1syMTA3MisobDw8Mik+PjJdfDA7az1rKzF8MDtnPTE2O2NvbnRpbnVlfWVsc2UgaWYoKGd8MCk9PTE2KXttPShkW2s+PjBdfDApPj4+MztpZigobSsgLTE2fG0rKGw+PjI2KSk+Pj4wPjcpe2c9MTc7YnJlYWt9Zz1rKzF8MDtpZigobCYzMzU1NDQzMnwwKSE9MCl7aWYoKChkW2c+PjBdfDApKyAtMTI4fDApPj4+MD42Myl7Zz0yMDticmVha31nPWsrMnwwO2lmKChsJjUyNDI4OHwwKT09MCl7az1nfWVsc2V7aWYoKChkW2c+PjBdfDApKyAtMTI4fDApPj4+MD42Myl7Zz0yMzticmVha31rPWsrM3wwfX1lbHNle2s9Z31qPWorIC0xfDA7Zz03O2NvbnRpbnVlfWVsc2UgaWYoKGd8MCk9PTM1KXttPWRbaz4+MF18MDtnPW0+Pj4zO2lmKChnKyAtMTZ8ZysobD4+MjYpKT4+PjA+Nyl7Zz0zNjticmVha31nPWsrMXwwO2w9bSsgLTEyOHxsPDw2O2lmKChsfDApPDApe209KGRbZz4+MF18MCkrIC0xMjh8MDtpZihtPj4+MD42Myl7Zz0zOTticmVha31nPWsrMnwwO2w9bXxsPDw2O2lmKChsfDApPDApe2c9KGRbZz4+MF18MCkrIC0xMjh8MDtpZihnPj4+MD42Myl7Zz00MjticmVha31sPWd8bDw8NjtrPWsrM3wwfWVsc2V7az1nfX1lbHNle2s9Z31jW2I+PjJdPWw7Yj1iKzR8MDtqPWorIC0xfDA7Zz02O2NvbnRpbnVlfX1pZigoZ3wwKT09MTcpe2s9aysgLTF8MDtnPTQ1fWVsc2UgaWYoKGd8MCk9PTIwKXtrPWsrIC0xfDA7Zz00NX1lbHNlIGlmKChnfDApPT0yMyl7az1rKyAtMXwwO2c9NDV9ZWxzZSBpZigoZ3wwKT09MzYpe2s9aysgLTF8MDtnPTQ1fWVsc2UgaWYoKGd8MCk9PTM5KXtrPWsrIC0xfDA7Zz00NX1lbHNlIGlmKChnfDApPT00Mil7az1rKyAtMXwwO2c9NDV9ZWxzZSBpZigoZ3wwKT09NTMpe2k9aDtyZXR1cm4gZnwwfWlmKChnfDApPT00NSl7aWYoKGx8MCk9PTApe2w9YVtrPj4wXXwwO2c9NDd9fWlmKChnfDApPT00Nyl7aWYobDw8MjQ+PjI0PT0wKXtpZigoYnwwKSE9MCl7Y1tiPj4yXT0wO2NbZT4+Ml09MH1tPWYtanwwO2k9aDtyZXR1cm4gbXwwfX1jWyhiYigpfDApPj4yXT04NDtpZigoYnwwKT09MCl7bT0tMTtpPWg7cmV0dXJuIG18MH1jW2U+PjJdPWs7bT0tMTtpPWg7cmV0dXJuIG18MH1mdW5jdGlvbiBXbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTA7ZT1pO2lmKChifDApPT0wKXtiPTE7aT1lO3JldHVybiBifDB9aWYoZD4+PjA8MTI4KXthW2I+PjBdPWQ7Yj0xO2k9ZTtyZXR1cm4gYnwwfWlmKGQ+Pj4wPDIwNDgpe2FbYj4+MF09ZD4+PjZ8MTkyO2FbYisxPj4wXT1kJjYzfDEyODtiPTI7aT1lO3JldHVybiBifDB9aWYoZD4+PjA8NTUyOTZ8KGQrIC01NzM0NHwwKT4+PjA8ODE5Mil7YVtiPj4wXT1kPj4+MTJ8MjI0O2FbYisxPj4wXT1kPj4+NiY2M3wxMjg7YVtiKzI+PjBdPWQmNjN8MTI4O2I9MztpPWU7cmV0dXJuIGJ8MH1pZigoZCsgLTY1NTM2fDApPj4+MDwxMDQ4NTc2KXthW2I+PjBdPWQ+Pj4xOHwyNDA7YVtiKzE+PjBdPWQ+Pj4xMiY2M3wxMjg7YVtiKzI+PjBdPWQ+Pj42JjYzfDEyODthW2IrMz4+MF09ZCY2M3wxMjg7Yj00O2k9ZTtyZXR1cm4gYnwwfWVsc2V7Y1soYmIoKXwwKT4+Ml09ODQ7Yj0tMTtpPWU7cmV0dXJuIGJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBYbShhKXthPWF8MDt2YXIgYj0wO2I9aTtSYihhfDApO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFltKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBabShhKXthPWF8MDtyZXR1cm4gMjEzMjB9ZnVuY3Rpb24gX20oYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uICRtKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBhbihhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gYm4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gY24oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZG4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZW4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZm4oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gZ24oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybihhfDApPT0oYnwwKXwwfWZ1bmN0aW9uIGhuKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrNjR8MDtmPWU7aWYoKGF8MCk9PShifDApKXtoPTE7aT1lO3JldHVybiBofDB9aWYoKGJ8MCk9PTApe2g9MDtpPWU7cmV0dXJuIGh8MH1iPW5uKGIsMjE0ODgpfDA7aWYoKGJ8MCk9PTApe2g9MDtpPWU7cmV0dXJuIGh8MH1oPWYrMHwwO2c9aCs1NnwwO2Rve2NbaD4+Ml09MDtoPWgrNHwwfXdoaWxlKChofDApPChnfDApKTtjW2Y+PjJdPWI7Y1tmKzg+PjJdPWE7Y1tmKzEyPj4yXT0tMTtjW2YrNDg+PjJdPTE7emNbY1soY1tiPj4yXXwwKSsyOD4+Ml0mMzFdKGIsZixjW2Q+PjJdfDAsMSk7aWYoKGNbZisyND4+Ml18MCkhPTEpe2g9MDtpPWU7cmV0dXJuIGh8MH1jW2Q+PjJdPWNbZisxNj4+Ml07aD0xO2k9ZTtyZXR1cm4gaHwwfWZ1bmN0aW9uIGpuKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wO2c9aTtpZigoY1tkKzg+PjJdfDApIT0oYnwwKSl7aT1nO3JldHVybn1iPWQrMTZ8MDtoPWNbYj4+Ml18MDtpZigoaHwwKT09MCl7Y1tiPj4yXT1lO2NbZCsyND4+Ml09ZjtjW2QrMzY+PjJdPTE7aT1nO3JldHVybn1pZigoaHwwKSE9KGV8MCkpe2g9ZCszNnwwO2NbaD4+Ml09KGNbaD4+Ml18MCkrMTtjW2QrMjQ+PjJdPTI7YVtkKzU0Pj4wXT0xO2k9ZztyZXR1cm59ZT1kKzI0fDA7aWYoKGNbZT4+Ml18MCkhPTIpe2k9ZztyZXR1cm59Y1tlPj4yXT1mO2k9ZztyZXR1cm59ZnVuY3Rpb24ga24oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTA7Zz1pO2lmKChifDApIT0oY1tkKzg+PjJdfDApKXtoPWNbYis4Pj4yXXwwO3pjW2NbKGNbaD4+Ml18MCkrMjg+PjJdJjMxXShoLGQsZSxmKTtpPWc7cmV0dXJufWI9ZCsxNnwwO2g9Y1tiPj4yXXwwO2lmKChofDApPT0wKXtjW2I+PjJdPWU7Y1tkKzI0Pj4yXT1mO2NbZCszNj4+Ml09MTtpPWc7cmV0dXJufWlmKChofDApIT0oZXwwKSl7aD1kKzM2fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsxO2NbZCsyND4+Ml09MjthW2QrNTQ+PjBdPTE7aT1nO3JldHVybn1lPWQrMjR8MDtpZigoY1tlPj4yXXwwKSE9Mil7aT1nO3JldHVybn1jW2U+PjJdPWY7aT1nO3JldHVybn1mdW5jdGlvbiBsbihiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2lmKChifDApPT0oY1tkKzg+PjJdfDApKXtiPWQrMTZ8MDtoPWNbYj4+Ml18MDtpZigoaHwwKT09MCl7Y1tiPj4yXT1lO2NbZCsyND4+Ml09ZjtjW2QrMzY+PjJdPTE7aT1nO3JldHVybn1pZigoaHwwKSE9KGV8MCkpe2w9ZCszNnwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtjW2QrMjQ+PjJdPTI7YVtkKzU0Pj4wXT0xO2k9ZztyZXR1cm59ZT1kKzI0fDA7aWYoKGNbZT4+Ml18MCkhPTIpe2k9ZztyZXR1cm59Y1tlPj4yXT1mO2k9ZztyZXR1cm59aj1jW2IrMTI+PjJdfDA7aD1iKyhqPDwzKSsxNnwwO2s9Y1tiKzIwPj4yXXwwO2w9az4+ODtpZigoayYxfDApIT0wKXtsPWNbKGNbZT4+Ml18MCkrbD4+Ml18MH1tPWNbYisxNj4+Ml18MDt6Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSYzMV0obSxkLGUrbHwwLChrJjJ8MCkhPTA/ZjoyKTtpZigoanwwKTw9MSl7aT1nO3JldHVybn1qPWQrNTR8MDtrPWIrMjR8MDt3aGlsZSgxKXtiPWNbays0Pj4yXXwwO2w9Yj4+ODtpZigoYiYxfDApIT0wKXtsPWNbKGNbZT4+Ml18MCkrbD4+Ml18MH1tPWNbaz4+Ml18MDt6Y1tjWyhjW20+PjJdfDApKzI4Pj4yXSYzMV0obSxkLGUrbHwwLChiJjJ8MCkhPTA/ZjoyKTtpZigoYVtqPj4wXXwwKSE9MCl7Zj0xNjticmVha31rPWsrOHwwO2lmKCEoaz4+PjA8aD4+PjApKXtmPTE2O2JyZWFrfX1pZigoZnwwKT09MTYpe2k9ZztyZXR1cm59fWZ1bmN0aW9uIG1uKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2k9aSs2NHwwO2g9ZTtjW2Q+PjJdPWNbY1tkPj4yXT4+Ml07aWYoISgoYXwwKT09KGJ8MCl8KGJ8MCk9PTIxNzkyKSl7aWYoKChifDApIT0wPyhrPW5uKGIsMjE2MDApfDAsKGt8MCkhPTApOjApPyhjW2srOD4+Ml0mfmNbYSs4Pj4yXXwwKT09MDowKXtiPWNbYSsxMj4+Ml18MDtrPWsrMTJ8MDtpZighKChifDApPT0yMTc3Nj8xOihifDApPT0oY1trPj4yXXwwKSkpe2lmKCgoKGJ8MCkhPTA/KGc9bm4oYiwyMTQ4OCl8MCwoZ3wwKSE9MCk6MCk/KGo9Y1trPj4yXXwwLChqfDApIT0wKTowKT8oZj1ubihqLDIxNDg4KXwwLChmfDApIT0wKTowKXtrPWgrMHwwO2o9ays1NnwwO2Rve2Nbaz4+Ml09MDtrPWsrNHwwfXdoaWxlKChrfDApPChqfDApKTtjW2g+PjJdPWY7Y1toKzg+PjJdPWc7Y1toKzEyPj4yXT0tMTtjW2grNDg+PjJdPTE7emNbY1soY1tmPj4yXXwwKSsyOD4+Ml0mMzFdKGYsaCxjW2Q+PjJdfDAsMSk7aWYoKGNbaCsyND4+Ml18MCk9PTEpe2NbZD4+Ml09Y1toKzE2Pj4yXTtkPTF9ZWxzZXtkPTB9fWVsc2V7ZD0wfX1lbHNle2Q9MX19ZWxzZXtkPTB9fWVsc2V7ZD0xfWk9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIG5uKGQsZSl7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO2Y9aTtpPWkrNjR8MDttPWY7Zz1jW2Q+PjJdfDA7aD1kKyhjW2crIC04Pj4yXXwwKXwwO2c9Y1tnKyAtND4+Ml18MDtjW20+PjJdPWU7Y1ttKzQ+PjJdPWQ7Y1ttKzg+PjJdPTIxNDMyO3A9bSsxMnwwO249bSsxNnwwO289bSsyMHwwO2o9bSsyNHwwO2Q9bSsyOHwwO2s9bSszMnwwO2w9bSs0MHwwO3I9KGd8MCk9PShlfDApO2U9cCswfDA7cT1lKzQwfDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KHF8MCkpO2JbcCs0MD4+MV09MDthW3ArNDI+PjBdPTA7ZG97aWYocil7Y1ttKzQ4Pj4yXT0xO3djW2NbKGNbZz4+Ml18MCkrMjA+PjJdJjYzXShnLG0saCxoLDEsMCk7ZD0oY1tqPj4yXXwwKT09MT9oOjB9ZWxzZXtqY1tjWyhjW2c+PjJdfDApKzI0Pj4yXSYzMV0oZyxtLGgsMSwwKTtnPWNbbSszNj4+Ml18MDtpZigoZ3wwKT09MCl7aWYoKGNbbD4+Ml18MCkhPTEpe2Q9MDticmVha31pZigoY1tkPj4yXXwwKSE9MSl7ZD0wO2JyZWFrfWQ9KGNbaz4+Ml18MCk9PTE/Y1tvPj4yXXwwOjA7YnJlYWt9ZWxzZSBpZigoZ3wwKSE9MSl7ZD0wO2JyZWFrfWlmKChjW2o+PjJdfDApIT0xKXtpZigoY1tsPj4yXXwwKSE9MCl7ZD0wO2JyZWFrfWlmKChjW2Q+PjJdfDApIT0xKXtkPTA7YnJlYWt9aWYoKGNbaz4+Ml18MCkhPTEpe2Q9MDticmVha319ZD1jW24+PjJdfDB9fXdoaWxlKDApO2k9ZjtyZXR1cm4gZHwwfWZ1bmN0aW9uIG9uKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtoPWk7aWYoKGJ8MCk9PShjW2QrOD4+Ml18MCkpe2lmKChjW2QrND4+Ml18MCkhPShlfDApKXtpPWg7cmV0dXJufWU9ZCsyOHwwO2lmKChjW2U+PjJdfDApPT0xKXtpPWg7cmV0dXJufWNbZT4+Ml09ZjtpPWg7cmV0dXJufWlmKChifDApPT0oY1tkPj4yXXwwKSl7aWYoKGNbZCsxNj4+Ml18MCkhPShlfDApPyhsPWQrMjB8MCwoY1tsPj4yXXwwKSE9KGV8MCkpOjApe2NbZCszMj4+Ml09ZjtrPWQrNDR8MDtpZigoY1trPj4yXXwwKT09NCl7aT1oO3JldHVybn13PWNbYisxMj4+Ml18MDtwPWIrKHc8PDMpKzE2fDA7YTpkb3tpZigod3wwKT4wKXtuPWQrNTJ8MDtxPWQrNTN8MDtvPWQrNTR8MDt0PWIrOHwwO3I9ZCsyNHwwO3U9MDtzPTA7Yj1iKzE2fDA7Yjpkb3thW24+PjBdPTA7YVtxPj4wXT0wO3Y9Y1tiKzQ+PjJdfDA7dz12Pj44O2lmKCh2JjF8MCkhPTApe3c9Y1soY1tlPj4yXXwwKSt3Pj4yXXwwfXg9Y1tiPj4yXXwwO3djW2NbKGNbeD4+Ml18MCkrMjA+PjJdJjYzXSh4LGQsZSxlK3d8MCwyLSh2Pj4+MSYxKXwwLGcpO2lmKChhW28+PjBdfDApIT0wKXticmVha31kb3tpZigoYVtxPj4wXXwwKSE9MCl7aWYoKGFbbj4+MF18MCk9PTApe2lmKChjW3Q+PjJdJjF8MCk9PTApe3M9MTticmVhayBifWVsc2V7cz0xO2JyZWFrfX1pZigoY1tyPj4yXXwwKT09MSl7Yj0yNzticmVhayBhfWlmKChjW3Q+PjJdJjJ8MCk9PTApe2I9Mjc7YnJlYWsgYX1lbHNle3U9MTtzPTF9fX13aGlsZSgwKTtiPWIrOHwwfXdoaWxlKGI+Pj4wPHA+Pj4wKTtpZih1KXtqPXM7Yj0yNn1lbHNle209cztiPTIzfX1lbHNle209MDtiPTIzfX13aGlsZSgwKTtpZigoYnwwKT09MjMpe2NbbD4+Ml09ZTt4PWQrNDB8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoKGNbZCszNj4+Ml18MCk9PTE/KGNbZCsyND4+Ml18MCk9PTI6MCl7YVtkKzU0Pj4wXT0xO2lmKG0pe2I9Mjd9ZWxzZXtiPTI4fX1lbHNle2o9bTtiPTI2fX1pZigoYnwwKT09MjYpe2lmKGope2I9Mjd9ZWxzZXtiPTI4fX1pZigoYnwwKT09Mjcpe2Nbaz4+Ml09MztpPWg7cmV0dXJufWVsc2UgaWYoKGJ8MCk9PTI4KXtjW2s+PjJdPTQ7aT1oO3JldHVybn19aWYoKGZ8MCkhPTEpe2k9aDtyZXR1cm59Y1tkKzMyPj4yXT0xO2k9aDtyZXR1cm59bT1jW2IrMTI+PjJdfDA7aj1iKyhtPDwzKSsxNnwwO2w9Y1tiKzIwPj4yXXwwO249bD4+ODtpZigobCYxfDApIT0wKXtuPWNbKGNbZT4+Ml18MCkrbj4+Ml18MH14PWNbYisxNj4+Ml18MDtqY1tjWyhjW3g+PjJdfDApKzI0Pj4yXSYzMV0oeCxkLGUrbnwwLChsJjJ8MCkhPTA/ZjoyLGcpO2w9YisyNHwwO2lmKChtfDApPD0xKXtpPWg7cmV0dXJufW09Y1tiKzg+PjJdfDA7aWYoKG0mMnwwKT09MD8oaz1kKzM2fDAsKGNbaz4+Ml18MCkhPTEpOjApe2lmKChtJjF8MCk9PTApe209ZCs1NHwwO2I9bDt3aGlsZSgxKXtpZigoYVttPj4wXXwwKSE9MCl7Yj01MzticmVha31pZigoY1trPj4yXXwwKT09MSl7Yj01MzticmVha31uPWNbYis0Pj4yXXwwO289bj4+ODtpZigobiYxfDApIT0wKXtvPWNbKGNbZT4+Ml18MCkrbz4+Ml18MH14PWNbYj4+Ml18MDtqY1tjWyhjW3g+PjJdfDApKzI0Pj4yXSYzMV0oeCxkLGUrb3wwLChuJjJ8MCkhPTA/ZjoyLGcpO2I9Yis4fDA7aWYoIShiPj4+MDxqPj4+MCkpe2I9NTM7YnJlYWt9fWlmKChifDApPT01Myl7aT1oO3JldHVybn19bj1kKzI0fDA7bz1kKzU0fDA7Yj1sO3doaWxlKDEpe2lmKChhW28+PjBdfDApIT0wKXtiPTUzO2JyZWFrfWlmKChjW2s+PjJdfDApPT0xPyhjW24+PjJdfDApPT0xOjApe2I9NTM7YnJlYWt9bT1jW2IrND4+Ml18MDtwPW0+Pjg7aWYoKG0mMXwwKSE9MCl7cD1jWyhjW2U+PjJdfDApK3A+PjJdfDB9eD1jW2I+PjJdfDA7amNbY1soY1t4Pj4yXXwwKSsyND4+Ml0mMzFdKHgsZCxlK3B8MCwobSYyfDApIT0wP2Y6MixnKTtiPWIrOHwwO2lmKCEoYj4+PjA8aj4+PjApKXtiPTUzO2JyZWFrfX1pZigoYnwwKT09NTMpe2k9aDtyZXR1cm59fWs9ZCs1NHwwO3doaWxlKDEpe2lmKChhW2s+PjBdfDApIT0wKXtiPTUzO2JyZWFrfW09Y1tsKzQ+PjJdfDA7Yj1tPj44O2lmKChtJjF8MCkhPTApe2I9Y1soY1tlPj4yXXwwKStiPj4yXXwwfXg9Y1tsPj4yXXwwO2pjW2NbKGNbeD4+Ml18MCkrMjQ+PjJdJjMxXSh4LGQsZStifDAsKG0mMnwwKSE9MD9mOjIsZyk7bD1sKzh8MDtpZighKGw+Pj4wPGo+Pj4wKSl7Yj01MzticmVha319aWYoKGJ8MCk9PTUzKXtpPWg7cmV0dXJufX1mdW5jdGlvbiBwbihiLGQsZSxmLGcpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO2g9aTtpZigoYnwwKT09KGNbZCs4Pj4yXXwwKSl7aWYoKGNbZCs0Pj4yXXwwKSE9KGV8MCkpe2k9aDtyZXR1cm59aj1kKzI4fDA7aWYoKGNbaj4+Ml18MCk9PTEpe2k9aDtyZXR1cm59Y1tqPj4yXT1mO2k9aDtyZXR1cm59aWYoKGJ8MCkhPShjW2Q+PjJdfDApKXtsPWNbYis4Pj4yXXwwO2pjW2NbKGNbbD4+Ml18MCkrMjQ+PjJdJjMxXShsLGQsZSxmLGcpO2k9aDtyZXR1cm59aWYoKGNbZCsxNj4+Ml18MCkhPShlfDApPyhrPWQrMjB8MCwoY1trPj4yXXwwKSE9KGV8MCkpOjApe2NbZCszMj4+Ml09ZjtmPWQrNDR8MDtpZigoY1tmPj4yXXwwKT09NCl7aT1oO3JldHVybn1sPWQrNTJ8MDthW2w+PjBdPTA7bT1kKzUzfDA7YVttPj4wXT0wO2I9Y1tiKzg+PjJdfDA7d2NbY1soY1tiPj4yXXwwKSsyMD4+Ml0mNjNdKGIsZCxlLGUsMSxnKTtpZigoYVttPj4wXXwwKSE9MCl7aWYoKGFbbD4+MF18MCk9PTApe2I9MTtqPTEzfX1lbHNle2I9MDtqPTEzfWRve2lmKChqfDApPT0xMyl7Y1trPj4yXT1lO209ZCs0MHwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtpZigoY1tkKzM2Pj4yXXwwKT09MT8oY1tkKzI0Pj4yXXwwKT09MjowKXthW2QrNTQ+PjBdPTE7aWYoYil7YnJlYWt9fWVsc2V7aj0xNn1pZigoanwwKT09MTY/YjowKXticmVha31jW2Y+PjJdPTQ7aT1oO3JldHVybn19d2hpbGUoMCk7Y1tmPj4yXT0zO2k9aDtyZXR1cm59aWYoKGZ8MCkhPTEpe2k9aDtyZXR1cm59Y1tkKzMyPj4yXT0xO2k9aDtyZXR1cm59ZnVuY3Rpb24gcW4oYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wO2c9aTtpZigoY1tkKzg+PjJdfDApPT0oYnwwKSl7aWYoKGNbZCs0Pj4yXXwwKSE9KGV8MCkpe2k9ZztyZXR1cm59ZD1kKzI4fDA7aWYoKGNbZD4+Ml18MCk9PTEpe2k9ZztyZXR1cm59Y1tkPj4yXT1mO2k9ZztyZXR1cm59aWYoKGNbZD4+Ml18MCkhPShifDApKXtpPWc7cmV0dXJufWlmKChjW2QrMTY+PjJdfDApIT0oZXwwKT8oaD1kKzIwfDAsKGNbaD4+Ml18MCkhPShlfDApKTowKXtjW2QrMzI+PjJdPWY7Y1toPj4yXT1lO2I9ZCs0MHwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrMTtpZigoY1tkKzM2Pj4yXXwwKT09MT8oY1tkKzI0Pj4yXXwwKT09MjowKXthW2QrNTQ+PjBdPTF9Y1tkKzQ0Pj4yXT00O2k9ZztyZXR1cm59aWYoKGZ8MCkhPTEpe2k9ZztyZXR1cm59Y1tkKzMyPj4yXT0xO2k9ZztyZXR1cm59ZnVuY3Rpb24gcm4oYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtqPWk7aWYoKGJ8MCkhPShjW2QrOD4+Ml18MCkpe209ZCs1MnwwO2w9YVttPj4wXXwwO289ZCs1M3wwO249YVtvPj4wXXwwO3E9Y1tiKzEyPj4yXXwwO2s9YisocTw8MykrMTZ8MDthW20+PjBdPTA7YVtvPj4wXT0wO3A9Y1tiKzIwPj4yXXwwO3I9cD4+ODtpZigocCYxfDApIT0wKXtyPWNbKGNbZj4+Ml18MCkrcj4+Ml18MH10PWNbYisxNj4+Ml18MDt3Y1tjWyhjW3Q+PjJdfDApKzIwPj4yXSY2M10odCxkLGUsZityfDAsKHAmMnwwKSE9MD9nOjIsaCk7YTpkb3tpZigocXwwKT4xKXtxPWQrMjR8MDtwPWIrOHwwO3I9ZCs1NHwwO2I9YisyNHwwO2Rve2lmKChhW3I+PjBdfDApIT0wKXticmVhayBhfWlmKChhW20+PjBdfDApPT0wKXtpZigoYVtvPj4wXXwwKSE9MD8oY1twPj4yXSYxfDApPT0wOjApe2JyZWFrIGF9fWVsc2V7aWYoKGNbcT4+Ml18MCk9PTEpe2JyZWFrIGF9aWYoKGNbcD4+Ml0mMnwwKT09MCl7YnJlYWsgYX19YVttPj4wXT0wO2Fbbz4+MF09MDtzPWNbYis0Pj4yXXwwO3Q9cz4+ODtpZigocyYxfDApIT0wKXt0PWNbKGNbZj4+Ml18MCkrdD4+Ml18MH11PWNbYj4+Ml18MDt3Y1tjWyhjW3U+PjJdfDApKzIwPj4yXSY2M10odSxkLGUsZit0fDAsKHMmMnwwKSE9MD9nOjIsaCk7Yj1iKzh8MH13aGlsZShiPj4+MDxrPj4+MCl9fXdoaWxlKDApO2FbbT4+MF09bDthW28+PjBdPW47aT1qO3JldHVybn1hW2QrNTM+PjBdPTE7aWYoKGNbZCs0Pj4yXXwwKSE9KGZ8MCkpe2k9ajtyZXR1cm59YVtkKzUyPj4wXT0xO2s9ZCsxNnwwO2Y9Y1trPj4yXXwwO2lmKChmfDApPT0wKXtjW2s+PjJdPWU7Y1tkKzI0Pj4yXT1nO2NbZCszNj4+Ml09MTtpZighKChnfDApPT0xPyhjW2QrNDg+PjJdfDApPT0xOjApKXtpPWo7cmV0dXJufWFbZCs1ND4+MF09MTtpPWo7cmV0dXJufWlmKChmfDApIT0oZXwwKSl7dT1kKzM2fDA7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxO2FbZCs1ND4+MF09MTtpPWo7cmV0dXJufWU9ZCsyNHwwO2s9Y1tlPj4yXXwwO2lmKChrfDApPT0yKXtjW2U+PjJdPWd9ZWxzZXtnPWt9aWYoISgoZ3wwKT09MT8oY1tkKzQ4Pj4yXXwwKT09MTowKSl7aT1qO3JldHVybn1hW2QrNTQ+PjBdPTE7aT1qO3JldHVybn1mdW5jdGlvbiBzbihiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MDtqPWk7aWYoKGJ8MCkhPShjW2QrOD4+Ml18MCkpe2I9Y1tiKzg+PjJdfDA7d2NbY1soY1tiPj4yXXwwKSsyMD4+Ml0mNjNdKGIsZCxlLGYsZyxoKTtpPWo7cmV0dXJufWFbZCs1Mz4+MF09MTtpZigoY1tkKzQ+PjJdfDApIT0oZnwwKSl7aT1qO3JldHVybn1hW2QrNTI+PjBdPTE7Yj1kKzE2fDA7Zj1jW2I+PjJdfDA7aWYoKGZ8MCk9PTApe2NbYj4+Ml09ZTtjW2QrMjQ+PjJdPWc7Y1tkKzM2Pj4yXT0xO2lmKCEoKGd8MCk9PTE/KGNbZCs0OD4+Ml18MCk9PTE6MCkpe2k9ajtyZXR1cm59YVtkKzU0Pj4wXT0xO2k9ajtyZXR1cm59aWYoKGZ8MCkhPShlfDApKXtoPWQrMzZ8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7YVtkKzU0Pj4wXT0xO2k9ajtyZXR1cm59ZT1kKzI0fDA7Yj1jW2U+PjJdfDA7aWYoKGJ8MCk9PTIpe2NbZT4+Ml09Z31lbHNle2c9Yn1pZighKChnfDApPT0xPyhjW2QrNDg+PjJdfDApPT0xOjApKXtpPWo7cmV0dXJufWFbZCs1ND4+MF09MTtpPWo7cmV0dXJufWZ1bmN0aW9uIHRuKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtoPWk7aWYoKGNbZCs4Pj4yXXwwKSE9KGJ8MCkpe2k9aDtyZXR1cm59YVtkKzUzPj4wXT0xO2lmKChjW2QrND4+Ml18MCkhPShmfDApKXtpPWg7cmV0dXJufWFbZCs1Mj4+MF09MTtmPWQrMTZ8MDtiPWNbZj4+Ml18MDtpZigoYnwwKT09MCl7Y1tmPj4yXT1lO2NbZCsyND4+Ml09ZztjW2QrMzY+PjJdPTE7aWYoISgoZ3wwKT09MT8oY1tkKzQ4Pj4yXXwwKT09MTowKSl7aT1oO3JldHVybn1hW2QrNTQ+PjBdPTE7aT1oO3JldHVybn1pZigoYnwwKSE9KGV8MCkpe2I9ZCszNnwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrMTthW2QrNTQ+PjBdPTE7aT1oO3JldHVybn1lPWQrMjR8MDtmPWNbZT4+Ml18MDtpZigoZnwwKT09Mil7Y1tlPj4yXT1nfWVsc2V7Zz1mfWlmKCEoKGd8MCk9PTE/KGNbZCs0OD4+Ml18MCk9PTE6MCkpe2k9aDtyZXR1cm59YVtkKzU0Pj4wXT0xO2k9aDtyZXR1cm59ZnVuY3Rpb24gdW4oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtiPWk7ZG97aWYoYT4+PjA8MjQ1KXtpZihhPj4+MDwxMSl7YT0xNn1lbHNle2E9YSsxMSYtOH12PWE+Pj4zO3A9Y1s1NTQyXXwwO3c9cD4+PnY7aWYoKHcmM3wwKSE9MCl7aD0odyYxXjEpK3Z8MDtnPWg8PDE7ZT0yMjIwOCsoZzw8Mil8MDtnPTIyMjA4KyhnKzI8PDIpfDA7aj1jW2c+PjJdfDA7ZD1qKzh8MDtmPWNbZD4+Ml18MDtkb3tpZigoZXwwKSE9KGZ8MCkpe2lmKGY+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9az1mKzEyfDA7aWYoKGNbaz4+Ml18MCk9PShqfDApKXtjW2s+PjJdPWU7Y1tnPj4yXT1mO2JyZWFrfWVsc2V7WGIoKX19ZWxzZXtjWzU1NDJdPXAmfigxPDxoKX19d2hpbGUoMCk7SD1oPDwzO2Nbais0Pj4yXT1IfDM7SD1qKyhIfDQpfDA7Y1tIPj4yXT1jW0g+PjJdfDE7SD1kO2k9YjtyZXR1cm4gSHwwfWlmKGE+Pj4wPihjWzIyMTc2Pj4yXXwwKT4+PjApe2lmKCh3fDApIT0wKXtoPTI8PHY7aD13PDx2JihofDAtaCk7aD0oaCYwLWgpKyAtMXwwO2Q9aD4+PjEyJjE2O2g9aD4+PmQ7Zj1oPj4+NSY4O2g9aD4+PmY7Zz1oPj4+MiY0O2g9aD4+Pmc7ZT1oPj4+MSYyO2g9aD4+PmU7aj1oPj4+MSYxO2o9KGZ8ZHxnfGV8aikrKGg+Pj5qKXwwO2g9ajw8MTtlPTIyMjA4KyhoPDwyKXwwO2g9MjIyMDgrKGgrMjw8Mil8MDtnPWNbaD4+Ml18MDtkPWcrOHwwO2Y9Y1tkPj4yXXwwO2Rve2lmKChlfDApIT0oZnwwKSl7aWYoZj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1rPWYrMTJ8MDtpZigoY1trPj4yXXwwKT09KGd8MCkpe2Nbaz4+Ml09ZTtjW2g+PjJdPWY7YnJlYWt9ZWxzZXtYYigpfX1lbHNle2NbNTU0Ml09cCZ+KDE8PGopfX13aGlsZSgwKTtoPWo8PDM7Zj1oLWF8MDtjW2crND4+Ml09YXwzO2U9ZythfDA7Y1tnKyhhfDQpPj4yXT1mfDE7Y1tnK2g+PjJdPWY7aD1jWzIyMTc2Pj4yXXwwO2lmKChofDApIT0wKXtnPWNbMjIxODg+PjJdfDA7az1oPj4+MztqPWs8PDE7aD0yMjIwOCsoajw8Mil8MDtsPWNbNTU0Ml18MDtrPTE8PGs7aWYoKGwma3wwKSE9MCl7aj0yMjIwOCsoaisyPDwyKXwwO2s9Y1tqPj4yXXwwO2lmKGs+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtEPWo7Qz1rfX1lbHNle2NbNTU0Ml09bHxrO0Q9MjIyMDgrKGorMjw8Mil8MDtDPWh9Y1tEPj4yXT1nO2NbQysxMj4+Ml09ZztjW2crOD4+Ml09QztjW2crMTI+PjJdPWh9Y1syMjE3Nj4+Ml09ZjtjWzIyMTg4Pj4yXT1lO0g9ZDtpPWI7cmV0dXJuIEh8MH1wPWNbMjIxNzI+PjJdfDA7aWYoKHB8MCkhPTApe2U9KHAmMC1wKSsgLTF8MDtHPWU+Pj4xMiYxNjtlPWU+Pj5HO0Y9ZT4+PjUmODtlPWU+Pj5GO0g9ZT4+PjImNDtlPWU+Pj5IO2Y9ZT4+PjEmMjtlPWU+Pj5mO2Q9ZT4+PjEmMTtkPWNbMjI0NzIrKChGfEd8SHxmfGQpKyhlPj4+ZCk8PDIpPj4yXXwwO2U9KGNbZCs0Pj4yXSYtOCktYXwwO2Y9ZDt3aGlsZSgxKXtnPWNbZisxNj4+Ml18MDtpZigoZ3wwKT09MCl7Zz1jW2YrMjA+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfX1mPShjW2crND4+Ml0mLTgpLWF8MDtIPWY+Pj4wPGU+Pj4wO2U9SD9mOmU7Zj1nO2Q9SD9nOmR9aD1jWzIyMTg0Pj4yXXwwO2lmKGQ+Pj4wPGg+Pj4wKXtYYigpfWY9ZCthfDA7aWYoIShkPj4+MDxmPj4+MCkpe1hiKCl9Zz1jW2QrMjQ+PjJdfDA7az1jW2QrMTI+PjJdfDA7ZG97aWYoKGt8MCk9PShkfDApKXtrPWQrMjB8MDtqPWNbaz4+Ml18MDtpZigoanwwKT09MCl7az1kKzE2fDA7aj1jW2s+PjJdfDA7aWYoKGp8MCk9PTApe0I9MDticmVha319d2hpbGUoMSl7bD1qKzIwfDA7bT1jW2w+PjJdfDA7aWYoKG18MCkhPTApe2o9bTtrPWw7Y29udGludWV9bT1qKzE2fDA7bD1jW20+PjJdfDA7aWYoKGx8MCk9PTApe2JyZWFrfWVsc2V7aj1sO2s9bX19aWYoaz4+PjA8aD4+PjApe1hiKCl9ZWxzZXtjW2s+PjJdPTA7Qj1qO2JyZWFrfX1lbHNle2o9Y1tkKzg+PjJdfDA7aWYoaj4+PjA8aD4+PjApe1hiKCl9aD1qKzEyfDA7aWYoKGNbaD4+Ml18MCkhPShkfDApKXtYYigpfWw9ays4fDA7aWYoKGNbbD4+Ml18MCk9PShkfDApKXtjW2g+PjJdPWs7Y1tsPj4yXT1qO0I9azticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtkb3tpZigoZ3wwKSE9MCl7aD1jW2QrMjg+PjJdfDA7aj0yMjQ3MisoaDw8Mil8MDtpZigoZHwwKT09KGNbaj4+Ml18MCkpe2Nbaj4+Ml09QjtpZigoQnwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxoKTticmVha319ZWxzZXtpZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWg9ZysxNnwwO2lmKChjW2g+PjJdfDApPT0oZHwwKSl7Y1toPj4yXT1CfWVsc2V7Y1tnKzIwPj4yXT1CfWlmKChCfDApPT0wKXticmVha319aWYoQj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW0IrMjQ+PjJdPWc7Zz1jW2QrMTY+PjJdfDA7ZG97aWYoKGd8MCkhPTApe2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW0IrMTY+PjJdPWc7Y1tnKzI0Pj4yXT1CO2JyZWFrfX19d2hpbGUoMCk7Zz1jW2QrMjA+PjJdfDA7aWYoKGd8MCkhPTApe2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW0IrMjA+PjJdPWc7Y1tnKzI0Pj4yXT1CO2JyZWFrfX19fXdoaWxlKDApO2lmKGU+Pj4wPDE2KXtIPWUrYXwwO2NbZCs0Pj4yXT1IfDM7SD1kKyhIKzQpfDA7Y1tIPj4yXT1jW0g+PjJdfDF9ZWxzZXtjW2QrND4+Ml09YXwzO2NbZCsoYXw0KT4+Ml09ZXwxO2NbZCsoZSthKT4+Ml09ZTtoPWNbMjIxNzY+PjJdfDA7aWYoKGh8MCkhPTApe2c9Y1syMjE4OD4+Ml18MDtsPWg+Pj4zO2o9bDw8MTtoPTIyMjA4KyhqPDwyKXwwO2s9Y1s1NTQyXXwwO2w9MTw8bDtpZigoayZsfDApIT0wKXtqPTIyMjA4KyhqKzI8PDIpfDA7az1jW2o+PjJdfDA7aWYoaz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle0E9ajt6PWt9fWVsc2V7Y1s1NTQyXT1rfGw7QT0yMjIwOCsoaisyPDwyKXwwO3o9aH1jW0E+PjJdPWc7Y1t6KzEyPj4yXT1nO2NbZys4Pj4yXT16O2NbZysxMj4+Ml09aH1jWzIyMTc2Pj4yXT1lO2NbMjIxODg+PjJdPWZ9SD1kKzh8MDtpPWI7cmV0dXJuIEh8MH19fWVsc2V7aWYoIShhPj4+MD40Mjk0OTY3MjMxKSl7ej1hKzExfDA7YT16Ji04O0I9Y1syMjE3Mj4+Ml18MDtpZigoQnwwKSE9MCl7QT0wLWF8MDt6PXo+Pj44O2lmKCh6fDApIT0wKXtpZihhPj4+MD4xNjc3NzIxNSl7Qz0zMX1lbHNle0c9KHorMTA0ODMyMHwwKT4+PjE2Jjg7SD16PDxHO0Y9KEgrNTIwMTkyfDApPj4+MTYmNDtIPUg8PEY7Qz0oSCsyNDU3NjB8MCk+Pj4xNiYyO0M9MTQtKEZ8R3xDKSsoSDw8Qz4+PjE1KXwwO0M9YT4+PihDKzd8MCkmMXxDPDwxfX1lbHNle0M9MH1EPWNbMjI0NzIrKEM8PDIpPj4yXXwwO2E6ZG97aWYoKER8MCk9PTApe0Y9MDt6PTB9ZWxzZXtpZigoQ3wwKT09MzEpe3o9MH1lbHNle3o9MjUtKEM+Pj4xKXwwfUY9MDtFPWE8PHo7ej0wO3doaWxlKDEpe0g9Y1tEKzQ+PjJdJi04O0c9SC1hfDA7aWYoRz4+PjA8QT4+PjApe2lmKChIfDApPT0oYXwwKSl7QT1HO0Y9RDt6PUQ7YnJlYWsgYX1lbHNle0E9Rzt6PUR9fUg9Y1tEKzIwPj4yXXwwO0Q9Y1tEKyhFPj4+MzE8PDIpKzE2Pj4yXXwwO0Y9KEh8MCk9PTB8KEh8MCk9PShEfDApP0Y6SDtpZigoRHwwKT09MCl7YnJlYWt9ZWxzZXtFPUU8PDF9fX19d2hpbGUoMCk7aWYoKEZ8MCk9PTAmKHp8MCk9PTApe0g9Mjw8QztCPUImKEh8MC1IKTtpZigoQnwwKT09MCl7YnJlYWt9SD0oQiYwLUIpKyAtMXwwO0Q9SD4+PjEyJjE2O0g9SD4+PkQ7Qz1IPj4+NSY4O0g9SD4+PkM7RT1IPj4+MiY0O0g9SD4+PkU7Rz1IPj4+MSYyO0g9SD4+Pkc7Rj1IPj4+MSYxO0Y9Y1syMjQ3MisoKEN8RHxFfEd8RikrKEg+Pj5GKTw8Mik+PjJdfDB9aWYoKEZ8MCkhPTApe3doaWxlKDEpe0g9KGNbRis0Pj4yXSYtOCktYXwwO0I9SD4+PjA8QT4+PjA7QT1CP0g6QTt6PUI/Rjp6O0I9Y1tGKzE2Pj4yXXwwO2lmKChCfDApIT0wKXtGPUI7Y29udGludWV9Rj1jW0YrMjA+PjJdfDA7aWYoKEZ8MCk9PTApe2JyZWFrfX19aWYoKHp8MCkhPTA/QT4+PjA8KChjWzIyMTc2Pj4yXXwwKS1hfDApPj4+MDowKXtmPWNbMjIxODQ+PjJdfDA7aWYoej4+PjA8Zj4+PjApe1hiKCl9ZD16K2F8MDtpZighKHo+Pj4wPGQ+Pj4wKSl7WGIoKX1lPWNbeisyND4+Ml18MDtoPWNbeisxMj4+Ml18MDtkb3tpZigoaHwwKT09KHp8MCkpe2g9eisyMHwwO2c9Y1toPj4yXXwwO2lmKChnfDApPT0wKXtoPXorMTZ8MDtnPWNbaD4+Ml18MDtpZigoZ3wwKT09MCl7eD0wO2JyZWFrfX13aGlsZSgxKXtqPWcrMjB8MDtrPWNbaj4+Ml18MDtpZigoa3wwKSE9MCl7Zz1rO2g9ajtjb250aW51ZX1qPWcrMTZ8MDtrPWNbaj4+Ml18MDtpZigoa3wwKT09MCl7YnJlYWt9ZWxzZXtnPWs7aD1qfX1pZihoPj4+MDxmPj4+MCl7WGIoKX1lbHNle2NbaD4+Ml09MDt4PWc7YnJlYWt9fWVsc2V7Zz1jW3orOD4+Ml18MDtpZihnPj4+MDxmPj4+MCl7WGIoKX1mPWcrMTJ8MDtpZigoY1tmPj4yXXwwKSE9KHp8MCkpe1hiKCl9aj1oKzh8MDtpZigoY1tqPj4yXXwwKT09KHp8MCkpe2NbZj4+Ml09aDtjW2o+PjJdPWc7eD1oO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2Rve2lmKChlfDApIT0wKXtnPWNbeisyOD4+Ml18MDtmPTIyNDcyKyhnPDwyKXwwO2lmKCh6fDApPT0oY1tmPj4yXXwwKSl7Y1tmPj4yXT14O2lmKCh4fDApPT0wKXtjWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PGcpO2JyZWFrfX1lbHNle2lmKGU+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9Zj1lKzE2fDA7aWYoKGNbZj4+Ml18MCk9PSh6fDApKXtjW2Y+PjJdPXh9ZWxzZXtjW2UrMjA+PjJdPXh9aWYoKHh8MCk9PTApe2JyZWFrfX1pZih4Pj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWNbeCsyND4+Ml09ZTtlPWNbeisxNj4+Ml18MDtkb3tpZigoZXwwKSE9MCl7aWYoZT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbeCsxNj4+Ml09ZTtjW2UrMjQ+PjJdPXg7YnJlYWt9fX13aGlsZSgwKTtlPWNbeisyMD4+Ml18MDtpZigoZXwwKSE9MCl7aWYoZT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbeCsyMD4+Ml09ZTtjW2UrMjQ+PjJdPXg7YnJlYWt9fX19d2hpbGUoMCk7Yjpkb3tpZighKEE+Pj4wPDE2KSl7Y1t6KzQ+PjJdPWF8MztjW3orKGF8NCk+PjJdPUF8MTtjW3orKEErYSk+PjJdPUE7Zj1BPj4+MztpZihBPj4+MDwyNTYpe2g9Zjw8MTtlPTIyMjA4KyhoPDwyKXwwO2c9Y1s1NTQyXXwwO2Y9MTw8Zjtkb3tpZigoZyZmfDApPT0wKXtjWzU1NDJdPWd8Zjt3PTIyMjA4KyhoKzI8PDIpfDA7dj1lfWVsc2V7Zj0yMjIwOCsoaCsyPDwyKXwwO2c9Y1tmPj4yXXwwO2lmKCEoZz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCkpe3c9Zjt2PWc7YnJlYWt9WGIoKX19d2hpbGUoMCk7Y1t3Pj4yXT1kO2NbdisxMj4+Ml09ZDtjW3orKGErOCk+PjJdPXY7Y1t6KyhhKzEyKT4+Ml09ZTticmVha31lPUE+Pj44O2lmKChlfDApIT0wKXtpZihBPj4+MD4xNjc3NzIxNSl7ZT0zMX1lbHNle0c9KGUrMTA0ODMyMHwwKT4+PjE2Jjg7SD1lPDxHO0Y9KEgrNTIwMTkyfDApPj4+MTYmNDtIPUg8PEY7ZT0oSCsyNDU3NjB8MCk+Pj4xNiYyO2U9MTQtKEZ8R3xlKSsoSDw8ZT4+PjE1KXwwO2U9QT4+PihlKzd8MCkmMXxlPDwxfX1lbHNle2U9MH1mPTIyNDcyKyhlPDwyKXwwO2NbeisoYSsyOCk+PjJdPWU7Y1t6KyhhKzIwKT4+Ml09MDtjW3orKGErMTYpPj4yXT0wO2g9Y1syMjE3Mj4+Ml18MDtnPTE8PGU7aWYoKGgmZ3wwKT09MCl7Y1syMjE3Mj4+Ml09aHxnO2NbZj4+Ml09ZDtjW3orKGErMjQpPj4yXT1mO2NbeisoYSsxMik+PjJdPWQ7Y1t6KyhhKzgpPj4yXT1kO2JyZWFrfWY9Y1tmPj4yXXwwO2lmKChlfDApPT0zMSl7ZT0wfWVsc2V7ZT0yNS0oZT4+PjEpfDB9Yzpkb3tpZigoY1tmKzQ+PjJdJi04fDApIT0oQXwwKSl7ZT1BPDxlO3doaWxlKDEpe2c9ZisoZT4+PjMxPDwyKSsxNnwwO2g9Y1tnPj4yXXwwO2lmKChofDApPT0wKXticmVha31pZigoY1toKzQ+PjJdJi04fDApPT0oQXwwKSl7cD1oO2JyZWFrIGN9ZWxzZXtlPWU8PDE7Zj1ofX1pZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tnPj4yXT1kO2NbeisoYSsyNCk+PjJdPWY7Y1t6KyhhKzEyKT4+Ml09ZDtjW3orKGErOCk+PjJdPWQ7YnJlYWsgYn19ZWxzZXtwPWZ9fXdoaWxlKDApO2Y9cCs4fDA7ZT1jW2Y+PjJdfDA7Zz1jWzIyMTg0Pj4yXXwwO2lmKHA+Pj4wPGc+Pj4wKXtYYigpfWlmKGU+Pj4wPGc+Pj4wKXtYYigpfWVsc2V7Y1tlKzEyPj4yXT1kO2NbZj4+Ml09ZDtjW3orKGErOCk+PjJdPWU7Y1t6KyhhKzEyKT4+Ml09cDtjW3orKGErMjQpPj4yXT0wO2JyZWFrfX1lbHNle0g9QSthfDA7Y1t6KzQ+PjJdPUh8MztIPXorKEgrNCl8MDtjW0g+PjJdPWNbSD4+Ml18MX19d2hpbGUoMCk7SD16Kzh8MDtpPWI7cmV0dXJuIEh8MH19fWVsc2V7YT0tMX19fXdoaWxlKDApO3A9Y1syMjE3Nj4+Ml18MDtpZighKGE+Pj4wPnA+Pj4wKSl7ZT1wLWF8MDtkPWNbMjIxODg+PjJdfDA7aWYoZT4+PjA+MTUpe2NbMjIxODg+PjJdPWQrYTtjWzIyMTc2Pj4yXT1lO2NbZCsoYSs0KT4+Ml09ZXwxO2NbZCtwPj4yXT1lO2NbZCs0Pj4yXT1hfDN9ZWxzZXtjWzIyMTc2Pj4yXT0wO2NbMjIxODg+PjJdPTA7Y1tkKzQ+PjJdPXB8MztIPWQrKHArNCl8MDtjW0g+PjJdPWNbSD4+Ml18MX1IPWQrOHwwO2k9YjtyZXR1cm4gSHwwfXA9Y1syMjE4MD4+Ml18MDtpZihhPj4+MDxwPj4+MCl7Rz1wLWF8MDtjWzIyMTgwPj4yXT1HO0g9Y1syMjE5Mj4+Ml18MDtjWzIyMTkyPj4yXT1IK2E7Y1tIKyhhKzQpPj4yXT1HfDE7Y1tIKzQ+PjJdPWF8MztIPUgrOHwwO2k9YjtyZXR1cm4gSHwwfWRve2lmKChjWzU2NjBdfDApPT0wKXtwPXNiKDMwKXwwO2lmKChwKyAtMSZwfDApPT0wKXtjWzIyNjQ4Pj4yXT1wO2NbMjI2NDQ+PjJdPXA7Y1syMjY1Mj4+Ml09LTE7Y1syMjY1Nj4+Ml09LTE7Y1syMjY2MD4+Ml09MDtjWzIyNjEyPj4yXT0wO2NbNTY2MF09KF9iKDApfDApJi0xNl4xNDMxNjU1NzY4O2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO3c9YSs0OHwwO3A9Y1syMjY0OD4+Ml18MDt4PWErNDd8MDt6PXAreHwwO3A9MC1wfDA7dj16JnA7aWYoISh2Pj4+MD5hPj4+MCkpe0g9MDtpPWI7cmV0dXJuIEh8MH1BPWNbMjI2MDg+PjJdfDA7aWYoKEF8MCkhPTA/KEc9Y1syMjYwMD4+Ml18MCxIPUcrdnwwLEg+Pj4wPD1HPj4+MHxIPj4+MD5BPj4+MCk6MCl7SD0wO2k9YjtyZXR1cm4gSHwwfWQ6ZG97aWYoKGNbMjI2MTI+PjJdJjR8MCk9PTApe0I9Y1syMjE5Mj4+Ml18MDtlOmRve2lmKChCfDApIT0wKXtBPTIyNjE2fDA7d2hpbGUoMSl7Qz1jW0E+PjJdfDA7aWYoIShDPj4+MD5CPj4+MCk/KHk9QSs0fDAsKEMrKGNbeT4+Ml18MCl8MCk+Pj4wPkI+Pj4wKTowKXticmVha31BPWNbQSs4Pj4yXXwwO2lmKChBfDApPT0wKXtvPTE4MjticmVhayBlfX1pZigoQXwwKSE9MCl7Qj16LShjWzIyMTgwPj4yXXwwKSZwO2lmKEI+Pj4wPDIxNDc0ODM2NDcpe3A9aGIoQnwwKXwwO0E9KHB8MCk9PSgoY1tBPj4yXXwwKSsoY1t5Pj4yXXwwKXwwKTt5PXA7ej1CO3A9QT9wOi0xO0E9QT9COjA7bz0xOTF9ZWxzZXtBPTB9fWVsc2V7bz0xODJ9fWVsc2V7bz0xODJ9fXdoaWxlKDApO2Rve2lmKChvfDApPT0xODIpe3A9aGIoMCl8MDtpZigocHwwKSE9KC0xfDApKXt6PXA7QT1jWzIyNjQ0Pj4yXXwwO3k9QSsgLTF8MDtpZigoeSZ6fDApPT0wKXtBPXZ9ZWxzZXtBPXYteisoeSt6JjAtQSl8MH15PWNbMjI2MDA+PjJdfDA7ej15K0F8MDtpZihBPj4+MD5hPj4+MCZBPj4+MDwyMTQ3NDgzNjQ3KXtIPWNbMjI2MDg+PjJdfDA7aWYoKEh8MCkhPTA/ej4+PjA8PXk+Pj4wfHo+Pj4wPkg+Pj4wOjApe0E9MDticmVha315PWhiKEF8MCl8MDtvPSh5fDApPT0ocHwwKTt6PUE7cD1vP3A6LTE7QT1vP0E6MDtvPTE5MX1lbHNle0E9MH19ZWxzZXtBPTB9fX13aGlsZSgwKTtmOmRve2lmKChvfDApPT0xOTEpe289MC16fDA7aWYoKHB8MCkhPSgtMXwwKSl7cT1BO289MjAyO2JyZWFrIGR9ZG97aWYoKHl8MCkhPSgtMXwwKSZ6Pj4+MDwyMTQ3NDgzNjQ3Jno+Pj4wPHc+Pj4wPyh1PWNbMjI2NDg+PjJdfDAsdT14LXordSYwLXUsdT4+PjA8MjE0NzQ4MzY0Nyk6MCl7aWYoKGhiKHV8MCl8MCk9PSgtMXwwKSl7aGIob3wwKXwwO2JyZWFrIGZ9ZWxzZXt6PXUrenwwO2JyZWFrfX19d2hpbGUoMCk7aWYoKHl8MCkhPSgtMXwwKSl7cD15O3E9ejtvPTIwMjticmVhayBkfX19d2hpbGUoMCk7Y1syMjYxMj4+Ml09Y1syMjYxMj4+Ml18NDtvPTE5OX1lbHNle0E9MDtvPTE5OX19d2hpbGUoMCk7aWYoKCgob3wwKT09MTk5P3Y+Pj4wPDIxNDc0ODM2NDc6MCk/KHQ9aGIodnwwKXwwLHM9aGIoMCl8MCwoc3wwKSE9KC0xfDApJih0fDApIT0oLTF8MCkmdD4+PjA8cz4+PjApOjApPyhyPXMtdHwwLHE9cj4+PjA+KGErNDB8MCk+Pj4wLHEpOjApe3A9dDtxPXE/cjpBO289MjAyfWlmKChvfDApPT0yMDIpe3I9KGNbMjI2MDA+PjJdfDApK3F8MDtjWzIyNjAwPj4yXT1yO2lmKHI+Pj4wPihjWzIyNjA0Pj4yXXwwKT4+PjApe2NbMjI2MDQ+PjJdPXJ9cj1jWzIyMTkyPj4yXXwwO2c6ZG97aWYoKHJ8MCkhPTApe3Y9MjI2MTZ8MDt3aGlsZSgxKXt0PWNbdj4+Ml18MDt1PXYrNHwwO3M9Y1t1Pj4yXXwwO2lmKChwfDApPT0odCtzfDApKXtvPTIxNDticmVha313PWNbdis4Pj4yXXwwO2lmKCh3fDApPT0wKXticmVha31lbHNle3Y9d319aWYoKChvfDApPT0yMTQ/KGNbdisxMj4+Ml0mOHwwKT09MDowKT9yPj4+MD49dD4+PjAmcj4+PjA8cD4+PjA6MCl7Y1t1Pj4yXT1zK3E7ZD0oY1syMjE4MD4+Ml18MCkrcXwwO2U9cis4fDA7aWYoKGUmN3wwKT09MCl7ZT0wfWVsc2V7ZT0wLWUmN31IPWQtZXwwO2NbMjIxOTI+PjJdPXIrZTtjWzIyMTgwPj4yXT1IO2NbcisoZSs0KT4+Ml09SHwxO2NbcisoZCs0KT4+Ml09NDA7Y1syMjE5Nj4+Ml09Y1syMjY1Nj4+Ml07YnJlYWt9aWYocD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7Y1syMjE4ND4+Ml09cH10PXArcXwwO3M9MjI2MTZ8MDt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT09KHR8MCkpe289MjI0O2JyZWFrfXU9Y1tzKzg+PjJdfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7cz11fX1pZigob3wwKT09MjI0PyhjW3MrMTI+PjJdJjh8MCk9PTA6MCl7Y1tzPj4yXT1wO2g9cys0fDA7Y1toPj4yXT0oY1toPj4yXXwwKStxO2g9cCs4fDA7aWYoKGgmN3wwKT09MCl7aD0wfWVsc2V7aD0wLWgmN31qPXArKHErOCl8MDtpZigoaiY3fDApPT0wKXtuPTB9ZWxzZXtuPTAtaiY3fW89cCsobitxKXwwO2o9aCthfDA7az1wK2p8MDttPW8tKHAraCktYXwwO2NbcCsoaCs0KT4+Ml09YXwzO2g6ZG97aWYoKG98MCkhPShjWzIyMTkyPj4yXXwwKSl7aWYoKG98MCk9PShjWzIyMTg4Pj4yXXwwKSl7SD0oY1syMjE3Nj4+Ml18MCkrbXwwO2NbMjIxNzY+PjJdPUg7Y1syMjE4OD4+Ml09aztjW3ArKGorNCk+PjJdPUh8MTtjW3ArKEgraik+PjJdPUg7YnJlYWt9cj1xKzR8MDt0PWNbcCsocituKT4+Ml18MDtpZigodCYzfDApPT0xKXthPXQmLTg7cz10Pj4+MztpOmRve2lmKCEodD4+PjA8MjU2KSl7bD1jW3ArKChufDI0KStxKT4+Ml18MDt1PWNbcCsocSsxMituKT4+Ml18MDtkb3tpZigodXwwKT09KG98MCkpe3U9bnwxNjt0PXArKHIrdSl8MDtzPWNbdD4+Ml18MDtpZigoc3wwKT09MCl7dD1wKyh1K3EpfDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe2c9MDticmVha319d2hpbGUoMSl7dT1zKzIwfDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCkhPTApe3M9djt0PXU7Y29udGludWV9dT1zKzE2fDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCk9PTApe2JyZWFrfWVsc2V7cz12O3Q9dX19aWYodD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbdD4+Ml09MDtnPXM7YnJlYWt9fWVsc2V7dD1jW3ArKChufDgpK3EpPj4yXXwwO2lmKHQ+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9dj10KzEyfDA7aWYoKGNbdj4+Ml18MCkhPShvfDApKXtYYigpfXM9dSs4fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtjW3Y+PjJdPXU7Y1tzPj4yXT10O2c9dTticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtpZigobHwwKT09MCl7YnJlYWt9dD1jW3ArKHErMjgrbik+PjJdfDA7cz0yMjQ3MisodDw8Mil8MDtkb3tpZigob3wwKSE9KGNbcz4+Ml18MCkpe2lmKGw+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9cz1sKzE2fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtjW3M+PjJdPWd9ZWxzZXtjW2wrMjA+PjJdPWd9aWYoKGd8MCk9PTApe2JyZWFrIGl9fWVsc2V7Y1tzPj4yXT1nO2lmKChnfDApIT0wKXticmVha31jWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PHQpO2JyZWFrIGl9fXdoaWxlKDApO2lmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9Y1tnKzI0Pj4yXT1sO2w9bnwxNjtvPWNbcCsobCtxKT4+Ml18MDtkb3tpZigob3wwKSE9MCl7aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbZysxNj4+Ml09bztjW28rMjQ+PjJdPWc7YnJlYWt9fX13aGlsZSgwKTtsPWNbcCsocitsKT4+Ml18MDtpZigobHwwKT09MCl7YnJlYWt9aWYobD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbZysyMD4+Ml09bDtjW2wrMjQ+PjJdPWc7YnJlYWt9fWVsc2V7cj1jW3ArKChufDgpK3EpPj4yXXwwO2c9Y1twKyhxKzEyK24pPj4yXXwwO3Q9MjIyMDgrKHM8PDE8PDIpfDA7ZG97aWYoKHJ8MCkhPSh0fDApKXtpZihyPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWlmKChjW3IrMTI+PjJdfDApPT0ob3wwKSl7YnJlYWt9WGIoKX19d2hpbGUoMCk7aWYoKGd8MCk9PShyfDApKXtjWzU1NDJdPWNbNTU0Ml0mfigxPDxzKTticmVha31kb3tpZigoZ3wwKT09KHR8MCkpe2w9Zys4fDB9ZWxzZXtpZihnPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfXM9Zys4fDA7aWYoKGNbcz4+Ml18MCk9PShvfDApKXtsPXM7YnJlYWt9WGIoKX19d2hpbGUoMCk7Y1tyKzEyPj4yXT1nO2NbbD4+Ml09cn19d2hpbGUoMCk7bz1wKygoYXxuKStxKXwwO209YSttfDB9Zz1vKzR8MDtjW2c+PjJdPWNbZz4+Ml0mLTI7Y1twKyhqKzQpPj4yXT1tfDE7Y1twKyhtK2opPj4yXT1tO2c9bT4+PjM7aWYobT4+PjA8MjU2KXttPWc8PDE7ZD0yMjIwOCsobTw8Mil8MDtsPWNbNTU0Ml18MDtnPTE8PGc7ZG97aWYoKGwmZ3wwKT09MCl7Y1s1NTQyXT1sfGc7Zj0yMjIwOCsobSsyPDwyKXwwO2U9ZH1lbHNle2w9MjIyMDgrKG0rMjw8Mil8MDtnPWNbbD4+Ml18MDtpZighKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApKXtmPWw7ZT1nO2JyZWFrfVhiKCl9fXdoaWxlKDApO2NbZj4+Ml09aztjW2UrMTI+PjJdPWs7Y1twKyhqKzgpPj4yXT1lO2NbcCsoaisxMik+PjJdPWQ7YnJlYWt9ZT1tPj4+ODtkb3tpZigoZXwwKT09MCl7ZT0wfWVsc2V7aWYobT4+PjA+MTY3NzcyMTUpe2U9MzE7YnJlYWt9Rz0oZSsxMDQ4MzIwfDApPj4+MTYmODtIPWU8PEc7Rj0oSCs1MjAxOTJ8MCk+Pj4xNiY0O0g9SDw8RjtlPShIKzI0NTc2MHwwKT4+PjE2JjI7ZT0xNC0oRnxHfGUpKyhIPDxlPj4+MTUpfDA7ZT1tPj4+KGUrN3wwKSYxfGU8PDF9fXdoaWxlKDApO2w9MjI0NzIrKGU8PDIpfDA7Y1twKyhqKzI4KT4+Ml09ZTtjW3ArKGorMjApPj4yXT0wO2NbcCsoaisxNik+PjJdPTA7Zj1jWzIyMTcyPj4yXXwwO2c9MTw8ZTtpZigoZiZnfDApPT0wKXtjWzIyMTcyPj4yXT1mfGc7Y1tsPj4yXT1rO2NbcCsoaisyNCk+PjJdPWw7Y1twKyhqKzEyKT4+Ml09aztjW3ArKGorOCk+PjJdPWs7YnJlYWt9bD1jW2w+PjJdfDA7aWYoKGV8MCk9PTMxKXtlPTB9ZWxzZXtlPTI1LShlPj4+MSl8MH1qOmRve2lmKChjW2wrND4+Ml0mLTh8MCkhPShtfDApKXtlPW08PGU7d2hpbGUoMSl7Zz1sKyhlPj4+MzE8PDIpKzE2fDA7Zj1jW2c+PjJdfDA7aWYoKGZ8MCk9PTApe2JyZWFrfWlmKChjW2YrND4+Ml0mLTh8MCk9PShtfDApKXtkPWY7YnJlYWsgan1lbHNle2U9ZTw8MTtsPWZ9fWlmKGc+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2c+PjJdPWs7Y1twKyhqKzI0KT4+Ml09bDtjW3ArKGorMTIpPj4yXT1rO2NbcCsoais4KT4+Ml09azticmVhayBofX1lbHNle2Q9bH19d2hpbGUoMCk7Zj1kKzh8MDtlPWNbZj4+Ml18MDtnPWNbMjIxODQ+PjJdfDA7aWYoZD4+PjA8Zz4+PjApe1hiKCl9aWYoZT4+PjA8Zz4+PjApe1hiKCl9ZWxzZXtjW2UrMTI+PjJdPWs7Y1tmPj4yXT1rO2NbcCsoais4KT4+Ml09ZTtjW3ArKGorMTIpPj4yXT1kO2NbcCsoaisyNCk+PjJdPTA7YnJlYWt9fWVsc2V7SD0oY1syMjE4MD4+Ml18MCkrbXwwO2NbMjIxODA+PjJdPUg7Y1syMjE5Mj4+Ml09aztjW3ArKGorNCk+PjJdPUh8MX19d2hpbGUoMCk7SD1wKyhofDgpfDA7aT1iO3JldHVybiBIfDB9ZT0yMjYxNnwwO3doaWxlKDEpe2Q9Y1tlPj4yXXwwO2lmKCEoZD4+PjA+cj4+PjApPyhuPWNbZSs0Pj4yXXwwLG09ZCtufDAsbT4+PjA+cj4+PjApOjApe2JyZWFrfWU9Y1tlKzg+PjJdfDB9ZT1kKyhuKyAtMzkpfDA7aWYoKGUmN3wwKT09MCl7ZT0wfWVsc2V7ZT0wLWUmN31kPWQrKG4rIC00NytlKXwwO2Q9ZD4+PjA8KHIrMTZ8MCk+Pj4wP3I6ZDtlPWQrOHwwO2Y9cCs4fDA7aWYoKGYmN3wwKT09MCl7Zj0wfWVsc2V7Zj0wLWYmN31IPXErIC00MC1mfDA7Y1syMjE5Mj4+Ml09cCtmO2NbMjIxODA+PjJdPUg7Y1twKyhmKzQpPj4yXT1IfDE7Y1twKyhxKyAtMzYpPj4yXT00MDtjWzIyMTk2Pj4yXT1jWzIyNjU2Pj4yXTtjW2QrND4+Ml09Mjc7Y1tlKzA+PjJdPWNbMjI2MTY+PjJdO2NbZSs0Pj4yXT1jWzIyNjIwPj4yXTtjW2UrOD4+Ml09Y1syMjYyND4+Ml07Y1tlKzEyPj4yXT1jWzIyNjI4Pj4yXTtjWzIyNjE2Pj4yXT1wO2NbMjI2MjA+PjJdPXE7Y1syMjYyOD4+Ml09MDtjWzIyNjI0Pj4yXT1lO2U9ZCsyOHwwO2NbZT4+Ml09NztpZigoZCszMnwwKT4+PjA8bT4+PjApe2Rve0g9ZTtlPWUrNHwwO2NbZT4+Ml09N313aGlsZSgoSCs4fDApPj4+MDxtPj4+MCl9aWYoKGR8MCkhPShyfDApKXtkPWQtcnwwO2U9cisoZCs0KXwwO2NbZT4+Ml09Y1tlPj4yXSYtMjtjW3IrND4+Ml09ZHwxO2NbcitkPj4yXT1kO2U9ZD4+PjM7aWYoZD4+PjA8MjU2KXtnPWU8PDE7ZD0yMjIwOCsoZzw8Mil8MDtmPWNbNTU0Ml18MDtlPTE8PGU7ZG97aWYoKGYmZXwwKT09MCl7Y1s1NTQyXT1mfGU7az0yMjIwOCsoZysyPDwyKXwwO2o9ZH1lbHNle2Y9MjIyMDgrKGcrMjw8Mil8MDtlPWNbZj4+Ml18MDtpZighKGU+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApKXtrPWY7aj1lO2JyZWFrfVhiKCl9fXdoaWxlKDApO2Nbaz4+Ml09cjtjW2orMTI+PjJdPXI7Y1tyKzg+PjJdPWo7Y1tyKzEyPj4yXT1kO2JyZWFrfWU9ZD4+Pjg7aWYoKGV8MCkhPTApe2lmKGQ+Pj4wPjE2Nzc3MjE1KXtlPTMxfWVsc2V7Rz0oZSsxMDQ4MzIwfDApPj4+MTYmODtIPWU8PEc7Rj0oSCs1MjAxOTJ8MCk+Pj4xNiY0O0g9SDw8RjtlPShIKzI0NTc2MHwwKT4+PjE2JjI7ZT0xNC0oRnxHfGUpKyhIPDxlPj4+MTUpfDA7ZT1kPj4+KGUrN3wwKSYxfGU8PDF9fWVsc2V7ZT0wfWo9MjI0NzIrKGU8PDIpfDA7Y1tyKzI4Pj4yXT1lO2NbcisyMD4+Ml09MDtjW3IrMTY+PjJdPTA7Zj1jWzIyMTcyPj4yXXwwO2c9MTw8ZTtpZigoZiZnfDApPT0wKXtjWzIyMTcyPj4yXT1mfGc7Y1tqPj4yXT1yO2NbcisyND4+Ml09ajtjW3IrMTI+PjJdPXI7Y1tyKzg+PjJdPXI7YnJlYWt9Zj1jW2o+PjJdfDA7aWYoKGV8MCk9PTMxKXtlPTB9ZWxzZXtlPTI1LShlPj4+MSl8MH1rOmRve2lmKChjW2YrND4+Ml0mLTh8MCkhPShkfDApKXtlPWQ8PGU7d2hpbGUoMSl7aj1mKyhlPj4+MzE8PDIpKzE2fDA7Zz1jW2o+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShkfDApKXtoPWc7YnJlYWsga31lbHNle2U9ZTw8MTtmPWd9fWlmKGo+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2o+PjJdPXI7Y1tyKzI0Pj4yXT1mO2NbcisxMj4+Ml09cjtjW3IrOD4+Ml09cjticmVhayBnfX1lbHNle2g9Zn19d2hpbGUoMCk7Zj1oKzh8MDtlPWNbZj4+Ml18MDtkPWNbMjIxODQ+PjJdfDA7aWYoaD4+PjA8ZD4+PjApe1hiKCl9aWYoZT4+PjA8ZD4+PjApe1hiKCl9ZWxzZXtjW2UrMTI+PjJdPXI7Y1tmPj4yXT1yO2Nbcis4Pj4yXT1lO2NbcisxMj4+Ml09aDtjW3IrMjQ+PjJdPTA7YnJlYWt9fX1lbHNle0g9Y1syMjE4ND4+Ml18MDtpZigoSHwwKT09MHxwPj4+MDxIPj4+MCl7Y1syMjE4ND4+Ml09cH1jWzIyNjE2Pj4yXT1wO2NbMjI2MjA+PjJdPXE7Y1syMjYyOD4+Ml09MDtjWzIyMjA0Pj4yXT1jWzU2NjBdO2NbMjIyMDA+PjJdPS0xO2Q9MDtkb3tIPWQ8PDE7Rz0yMjIwOCsoSDw8Mil8MDtjWzIyMjA4KyhIKzM8PDIpPj4yXT1HO2NbMjIyMDgrKEgrMjw8Mik+PjJdPUc7ZD1kKzF8MH13aGlsZSgoZHwwKSE9MzIpO2Q9cCs4fDA7aWYoKGQmN3wwKT09MCl7ZD0wfWVsc2V7ZD0wLWQmN31IPXErIC00MC1kfDA7Y1syMjE5Mj4+Ml09cCtkO2NbMjIxODA+PjJdPUg7Y1twKyhkKzQpPj4yXT1IfDE7Y1twKyhxKyAtMzYpPj4yXT00MDtjWzIyMTk2Pj4yXT1jWzIyNjU2Pj4yXX19d2hpbGUoMCk7ZD1jWzIyMTgwPj4yXXwwO2lmKGQ+Pj4wPmE+Pj4wKXtHPWQtYXwwO2NbMjIxODA+PjJdPUc7SD1jWzIyMTkyPj4yXXwwO2NbMjIxOTI+PjJdPUgrYTtjW0grKGErNCk+PjJdPUd8MTtjW0grND4+Ml09YXwzO0g9SCs4fDA7aT1iO3JldHVybiBIfDB9fWNbKGJiKCl8MCk+PjJdPTEyO0g9MDtpPWI7cmV0dXJuIEh8MH1mdW5jdGlvbiB2bihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDtiPWk7aWYoKGF8MCk9PTApe2k9YjtyZXR1cm59cT1hKyAtOHwwO3I9Y1syMjE4ND4+Ml18MDtpZihxPj4+MDxyPj4+MCl7WGIoKX1vPWNbYSsgLTQ+PjJdfDA7bj1vJjM7aWYoKG58MCk9PTEpe1hiKCl9aj1vJi04O2g9YSsoaisgLTgpfDA7ZG97aWYoKG8mMXwwKT09MCl7dT1jW3E+PjJdfDA7aWYoKG58MCk9PTApe2k9YjtyZXR1cm59cT0tOC11fDA7bz1hK3F8MDtuPXUranwwO2lmKG8+Pj4wPHI+Pj4wKXtYYigpfWlmKChvfDApPT0oY1syMjE4OD4+Ml18MCkpe2Q9YSsoaisgLTQpfDA7aWYoKGNbZD4+Ml0mM3wwKSE9Myl7ZD1vO209bjticmVha31jWzIyMTc2Pj4yXT1uO2NbZD4+Ml09Y1tkPj4yXSYtMjtjW2ErKHErNCk+PjJdPW58MTtjW2g+PjJdPW47aT1iO3JldHVybn10PXU+Pj4zO2lmKHU+Pj4wPDI1Nil7ZD1jW2ErKHErOCk+PjJdfDA7bT1jW2ErKHErMTIpPj4yXXwwO3A9MjIyMDgrKHQ8PDE8PDIpfDA7aWYoKGR8MCkhPShwfDApKXtpZihkPj4+MDxyPj4+MCl7WGIoKX1pZigoY1tkKzEyPj4yXXwwKSE9KG98MCkpe1hiKCl9fWlmKChtfDApPT0oZHwwKSl7Y1s1NTQyXT1jWzU1NDJdJn4oMTw8dCk7ZD1vO209bjticmVha31pZigobXwwKSE9KHB8MCkpe2lmKG0+Pj4wPHI+Pj4wKXtYYigpfXA9bSs4fDA7aWYoKGNbcD4+Ml18MCk9PShvfDApKXtzPXB9ZWxzZXtYYigpfX1lbHNle3M9bSs4fDB9Y1tkKzEyPj4yXT1tO2Nbcz4+Ml09ZDtkPW87bT1uO2JyZWFrfXM9Y1thKyhxKzI0KT4+Ml18MDt0PWNbYSsocSsxMik+PjJdfDA7ZG97aWYoKHR8MCk9PShvfDApKXt1PWErKHErMjApfDA7dD1jW3U+PjJdfDA7aWYoKHR8MCk9PTApe3U9YSsocSsxNil8MDt0PWNbdT4+Ml18MDtpZigodHwwKT09MCl7cD0wO2JyZWFrfX13aGlsZSgxKXt3PXQrMjB8MDt2PWNbdz4+Ml18MDtpZigodnwwKSE9MCl7dD12O3U9dztjb250aW51ZX12PXQrMTZ8MDt3PWNbdj4+Ml18MDtpZigod3wwKT09MCl7YnJlYWt9ZWxzZXt0PXc7dT12fX1pZih1Pj4+MDxyPj4+MCl7WGIoKX1lbHNle2NbdT4+Ml09MDtwPXQ7YnJlYWt9fWVsc2V7dT1jW2ErKHErOCk+PjJdfDA7aWYodT4+PjA8cj4+PjApe1hiKCl9cj11KzEyfDA7aWYoKGNbcj4+Ml18MCkhPShvfDApKXtYYigpfXY9dCs4fDA7aWYoKGNbdj4+Ml18MCk9PShvfDApKXtjW3I+PjJdPXQ7Y1t2Pj4yXT11O3A9dDticmVha31lbHNle1hiKCl9fX13aGlsZSgwKTtpZigoc3wwKSE9MCl7dD1jW2ErKHErMjgpPj4yXXwwO3I9MjI0NzIrKHQ8PDIpfDA7aWYoKG98MCk9PShjW3I+PjJdfDApKXtjW3I+PjJdPXA7aWYoKHB8MCk9PTApe2NbMjIxNzI+PjJdPWNbMjIxNzI+PjJdJn4oMTw8dCk7ZD1vO209bjticmVha319ZWxzZXtpZihzPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfXI9cysxNnwwO2lmKChjW3I+PjJdfDApPT0ob3wwKSl7Y1tyPj4yXT1wfWVsc2V7Y1tzKzIwPj4yXT1wfWlmKChwfDApPT0wKXtkPW87bT1uO2JyZWFrfX1pZihwPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWNbcCsyND4+Ml09cztyPWNbYSsocSsxNik+PjJdfDA7ZG97aWYoKHJ8MCkhPTApe2lmKHI+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW3ArMTY+PjJdPXI7Y1tyKzI0Pj4yXT1wO2JyZWFrfX19d2hpbGUoMCk7cT1jW2ErKHErMjApPj4yXXwwO2lmKChxfDApIT0wKXtpZihxPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1twKzIwPj4yXT1xO2NbcSsyND4+Ml09cDtkPW87bT1uO2JyZWFrfX1lbHNle2Q9bzttPW59fWVsc2V7ZD1vO209bn19ZWxzZXtkPXE7bT1qfX13aGlsZSgwKTtpZighKGQ+Pj4wPGg+Pj4wKSl7WGIoKX1uPWErKGorIC00KXwwO289Y1tuPj4yXXwwO2lmKChvJjF8MCk9PTApe1hiKCl9aWYoKG8mMnwwKT09MCl7aWYoKGh8MCk9PShjWzIyMTkyPj4yXXwwKSl7dz0oY1syMjE4MD4+Ml18MCkrbXwwO2NbMjIxODA+PjJdPXc7Y1syMjE5Mj4+Ml09ZDtjW2QrND4+Ml09d3wxO2lmKChkfDApIT0oY1syMjE4OD4+Ml18MCkpe2k9YjtyZXR1cm59Y1syMjE4OD4+Ml09MDtjWzIyMTc2Pj4yXT0wO2k9YjtyZXR1cm59aWYoKGh8MCk9PShjWzIyMTg4Pj4yXXwwKSl7dz0oY1syMjE3Nj4+Ml18MCkrbXwwO2NbMjIxNzY+PjJdPXc7Y1syMjE4OD4+Ml09ZDtjW2QrND4+Ml09d3wxO2NbZCt3Pj4yXT13O2k9YjtyZXR1cm59bT0obyYtOCkrbXwwO249bz4+PjM7ZG97aWYoIShvPj4+MDwyNTYpKXtsPWNbYSsoaisxNik+PjJdfDA7cT1jW2ErKGp8NCk+PjJdfDA7ZG97aWYoKHF8MCk9PShofDApKXtvPWErKGorMTIpfDA7bj1jW28+PjJdfDA7aWYoKG58MCk9PTApe289YSsoais4KXwwO249Y1tvPj4yXXwwO2lmKChufDApPT0wKXtrPTA7YnJlYWt9fXdoaWxlKDEpe3A9bisyMHwwO3E9Y1twPj4yXXwwO2lmKChxfDApIT0wKXtuPXE7bz1wO2NvbnRpbnVlfXA9bisxNnwwO3E9Y1twPj4yXXwwO2lmKChxfDApPT0wKXticmVha31lbHNle249cTtvPXB9fWlmKG8+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW28+PjJdPTA7az1uO2JyZWFrfX1lbHNle289Y1thK2o+PjJdfDA7aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1wPW8rMTJ8MDtpZigoY1twPj4yXXwwKSE9KGh8MCkpe1hiKCl9bj1xKzh8MDtpZigoY1tuPj4yXXwwKT09KGh8MCkpe2NbcD4+Ml09cTtjW24+PjJdPW87az1xO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChsfDApIT0wKXtuPWNbYSsoaisyMCk+PjJdfDA7bz0yMjQ3Misobjw8Mil8MDtpZigoaHwwKT09KGNbbz4+Ml18MCkpe2Nbbz4+Ml09aztpZigoa3wwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxuKTticmVha319ZWxzZXtpZihsPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfW49bCsxNnwwO2lmKChjW24+PjJdfDApPT0oaHwwKSl7Y1tuPj4yXT1rfWVsc2V7Y1tsKzIwPj4yXT1rfWlmKChrfDApPT0wKXticmVha319aWYoaz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2srMjQ+PjJdPWw7aD1jW2ErKGorOCk+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2srMTY+PjJdPWg7Y1toKzI0Pj4yXT1rO2JyZWFrfX19d2hpbGUoMCk7aD1jW2ErKGorMTIpPj4yXXwwO2lmKChofDApIT0wKXtpZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1trKzIwPj4yXT1oO2NbaCsyND4+Ml09azticmVha319fX1lbHNle2s9Y1thK2o+PjJdfDA7YT1jW2ErKGp8NCk+PjJdfDA7aj0yMjIwOCsobjw8MTw8Mil8MDtpZigoa3wwKSE9KGp8MCkpe2lmKGs+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9aWYoKGNbaysxMj4+Ml18MCkhPShofDApKXtYYigpfX1pZigoYXwwKT09KGt8MCkpe2NbNTU0Ml09Y1s1NTQyXSZ+KDE8PG4pO2JyZWFrfWlmKChhfDApIT0oanwwKSl7aWYoYT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1qPWErOHwwO2lmKChjW2o+PjJdfDApPT0oaHwwKSl7bD1qfWVsc2V7WGIoKX19ZWxzZXtsPWErOHwwfWNbaysxMj4+Ml09YTtjW2w+PjJdPWt9fXdoaWxlKDApO2NbZCs0Pj4yXT1tfDE7Y1tkK20+PjJdPW07aWYoKGR8MCk9PShjWzIyMTg4Pj4yXXwwKSl7Y1syMjE3Nj4+Ml09bTtpPWI7cmV0dXJufX1lbHNle2Nbbj4+Ml09byYtMjtjW2QrND4+Ml09bXwxO2NbZCttPj4yXT1tfWg9bT4+PjM7aWYobT4+PjA8MjU2KXthPWg8PDE7ZT0yMjIwOCsoYTw8Mil8MDtqPWNbNTU0Ml18MDtoPTE8PGg7aWYoKGomaHwwKSE9MCl7aD0yMjIwOCsoYSsyPDwyKXwwO2E9Y1toPj4yXXwwO2lmKGE+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtmPWg7Zz1hfX1lbHNle2NbNTU0Ml09anxoO2Y9MjIyMDgrKGErMjw8Mil8MDtnPWV9Y1tmPj4yXT1kO2NbZysxMj4+Ml09ZDtjW2QrOD4+Ml09ZztjW2QrMTI+PjJdPWU7aT1iO3JldHVybn1mPW0+Pj44O2lmKChmfDApIT0wKXtpZihtPj4+MD4xNjc3NzIxNSl7Zj0zMX1lbHNle3Y9KGYrMTA0ODMyMHwwKT4+PjE2Jjg7dz1mPDx2O3U9KHcrNTIwMTkyfDApPj4+MTYmNDt3PXc8PHU7Zj0odysyNDU3NjB8MCk+Pj4xNiYyO2Y9MTQtKHV8dnxmKSsodzw8Zj4+PjE1KXwwO2Y9bT4+PihmKzd8MCkmMXxmPDwxfX1lbHNle2Y9MH1nPTIyNDcyKyhmPDwyKXwwO2NbZCsyOD4+Ml09ZjtjW2QrMjA+PjJdPTA7Y1tkKzE2Pj4yXT0wO2E9Y1syMjE3Mj4+Ml18MDtoPTE8PGY7YTpkb3tpZigoYSZofDApIT0wKXtnPWNbZz4+Ml18MDtpZigoZnwwKT09MzEpe2Y9MH1lbHNle2Y9MjUtKGY+Pj4xKXwwfWI6ZG97aWYoKGNbZys0Pj4yXSYtOHwwKSE9KG18MCkpe2Y9bTw8ZjthPWc7d2hpbGUoMSl7aD1hKyhmPj4+MzE8PDIpKzE2fDA7Zz1jW2g+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShtfDApKXtlPWc7YnJlYWsgYn1lbHNle2Y9Zjw8MTthPWd9fWlmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2g+PjJdPWQ7Y1tkKzI0Pj4yXT1hO2NbZCsxMj4+Ml09ZDtjW2QrOD4+Ml09ZDticmVhayBhfX1lbHNle2U9Z319d2hpbGUoMCk7Zz1lKzh8MDtmPWNbZz4+Ml18MDtoPWNbMjIxODQ+PjJdfDA7aWYoZT4+PjA8aD4+PjApe1hiKCl9aWYoZj4+PjA8aD4+PjApe1hiKCl9ZWxzZXtjW2YrMTI+PjJdPWQ7Y1tnPj4yXT1kO2NbZCs4Pj4yXT1mO2NbZCsxMj4+Ml09ZTtjW2QrMjQ+PjJdPTA7YnJlYWt9fWVsc2V7Y1syMjE3Mj4+Ml09YXxoO2NbZz4+Ml09ZDtjW2QrMjQ+PjJdPWc7Y1tkKzEyPj4yXT1kO2NbZCs4Pj4yXT1kfX13aGlsZSgwKTt3PShjWzIyMjAwPj4yXXwwKSsgLTF8MDtjWzIyMjAwPj4yXT13O2lmKCh3fDApPT0wKXtkPTIyNjI0fDB9ZWxzZXtpPWI7cmV0dXJufXdoaWxlKDEpe2Q9Y1tkPj4yXXwwO2lmKChkfDApPT0wKXticmVha31lbHNle2Q9ZCs4fDB9fWNbMjIyMDA+PjJdPS0xO2k9YjtyZXR1cm59ZnVuY3Rpb24gd24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtkPWk7aWYoKGF8MCk9PTApe3I9dW4oYil8MDtpPWQ7cmV0dXJuIHJ8MH1pZihiPj4+MD40Mjk0OTY3MjMxKXtjWyhiYigpfDApPj4yXT0xMjtyPTA7aT1kO3JldHVybiByfDB9aWYoYj4+PjA8MTEpe2Y9MTZ9ZWxzZXtmPWIrMTEmLTh9ZT1hKyAtNHwwO2s9Y1tlPj4yXXwwO2w9ayYtODtvPWwrIC04fDA7aD1hK298MDttPWNbMjIxODQ+PjJdfDA7aWYoKGErIC04fDApPj4+MDxtPj4+MCl7WGIoKX1yPWsmMztpZighKChyfDApIT0xJihvfDApPi04KSl7WGIoKX1vPWx8NDtxPWErKG8rIC04KXwwO3A9Y1txPj4yXXwwO2lmKChwJjF8MCk9PTApe1hiKCl9ZG97aWYoKHJ8MCk9PTApe2lmKCEoZj4+PjA8MjU2fGw+Pj4wPChmfDQpPj4+MCk/ISgobC1mfDApPj4+MD5jWzIyNjQ4Pj4yXTw8MT4+PjApOjApe3I9YTtpPWQ7cmV0dXJuIHJ8MH19ZWxzZXtpZighKGw+Pj4wPGY+Pj4wKSl7Zz1sLWZ8MDtpZighKGc+Pj4wPjE1KSl7cj1hO2k9ZDtyZXR1cm4gcnwwfWNbZT4+Ml09ayYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPWd8MztjW3E+PjJdPWNbcT4+Ml18MTt4bihhKyhmKyAtOCl8MCxnKTtyPWE7aT1kO3JldHVybiByfDB9aWYoKGh8MCk9PShjWzIyMTkyPj4yXXwwKSl7Zz0oY1syMjE4MD4+Ml18MCkrbHwwO2lmKCEoZz4+PjA+Zj4+PjApKXticmVha31yPWctZnwwO2NbZT4+Ml09ayYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPXJ8MTtjWzIyMTkyPj4yXT1hKyhmKyAtOCk7Y1syMjE4MD4+Ml09cjtyPWE7aT1kO3JldHVybiByfDB9aWYoKGh8MCk9PShjWzIyMTg4Pj4yXXwwKSl7Zz0oY1syMjE3Nj4+Ml18MCkrbHwwO2lmKGc+Pj4wPGY+Pj4wKXticmVha31oPWctZnwwO2lmKGg+Pj4wPjE1KXtjW2U+PjJdPWsmMXxmfDI7Y1thKygoZnw0KSsgLTgpPj4yXT1ofDE7Y1thKyhnKyAtOCk+PjJdPWg7ZT1hKyhnKyAtNCl8MDtjW2U+PjJdPWNbZT4+Ml0mLTI7ZT1hKyhmKyAtOCl8MH1lbHNle2NbZT4+Ml09ayYxfGd8MjtlPWErKGcrIC00KXwwO2NbZT4+Ml09Y1tlPj4yXXwxO2U9MDtoPTB9Y1syMjE3Nj4+Ml09aDtjWzIyMTg4Pj4yXT1lO3I9YTtpPWQ7cmV0dXJuIHJ8MH1pZigocCYyfDApPT0wPyhnPShwJi04KStsfDAsIShnPj4+MDxmPj4+MCkpOjApe2s9Zy1mfDA7Yj1wPj4+Mztkb3tpZighKHA+Pj4wPDI1Nikpe249Y1thKyhsKzE2KT4+Ml18MDtvPWNbYStvPj4yXXwwO2Rve2lmKChvfDApPT0oaHwwKSl7Yj1hKyhsKzEyKXwwO289Y1tiPj4yXXwwO2lmKChvfDApPT0wKXtiPWErKGwrOCl8MDtvPWNbYj4+Ml18MDtpZigob3wwKT09MCl7aj0wO2JyZWFrfX13aGlsZSgxKXtxPW8rMjB8MDtwPWNbcT4+Ml18MDtpZigocHwwKSE9MCl7bz1wO2I9cTtjb250aW51ZX1wPW8rMTZ8MDtxPWNbcD4+Ml18MDtpZigocXwwKT09MCl7YnJlYWt9ZWxzZXtvPXE7Yj1wfX1pZihiPj4+MDxtPj4+MCl7WGIoKX1lbHNle2NbYj4+Ml09MDtqPW87YnJlYWt9fWVsc2V7Yj1jW2ErbD4+Ml18MDtpZihiPj4+MDxtPj4+MCl7WGIoKX1wPWIrMTJ8MDtpZigoY1twPj4yXXwwKSE9KGh8MCkpe1hiKCl9bT1vKzh8MDtpZigoY1ttPj4yXXwwKT09KGh8MCkpe2NbcD4+Ml09bztjW20+PjJdPWI7aj1vO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChufDApIT0wKXtvPWNbYSsobCsyMCk+PjJdfDA7bT0yMjQ3Misobzw8Mil8MDtpZigoaHwwKT09KGNbbT4+Ml18MCkpe2NbbT4+Ml09ajtpZigoanwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxvKTticmVha319ZWxzZXtpZihuPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfW09bisxNnwwO2lmKChjW20+PjJdfDApPT0oaHwwKSl7Y1ttPj4yXT1qfWVsc2V7Y1tuKzIwPj4yXT1qfWlmKChqfDApPT0wKXticmVha319aWYoaj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2orMjQ+PjJdPW47aD1jW2ErKGwrOCk+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKGg+Pj4wPChjWzIyMTg0Pj4yXXwwKT4+PjApe1hiKCl9ZWxzZXtjW2orMTY+PjJdPWg7Y1toKzI0Pj4yXT1qO2JyZWFrfX19d2hpbGUoMCk7aD1jW2ErKGwrMTIpPj4yXXwwO2lmKChofDApPT0wKXticmVha31pZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tqKzIwPj4yXT1oO2NbaCsyND4+Ml09ajticmVha319fWVsc2V7aj1jW2ErbD4+Ml18MDtsPWNbYStvPj4yXXwwO289MjIyMDgrKGI8PDE8PDIpfDA7aWYoKGp8MCkhPShvfDApKXtpZihqPj4+MDxtPj4+MCl7WGIoKX1pZigoY1tqKzEyPj4yXXwwKSE9KGh8MCkpe1hiKCl9fWlmKChsfDApPT0oanwwKSl7Y1s1NTQyXT1jWzU1NDJdJn4oMTw8Yik7YnJlYWt9ZG97aWYoKGx8MCk9PShvfDApKXtuPWwrOHwwfWVsc2V7aWYobD4+PjA8bT4+PjApe1hiKCl9bT1sKzh8MDtpZigoY1ttPj4yXXwwKT09KGh8MCkpe249bTticmVha31YYigpfX13aGlsZSgwKTtjW2orMTI+PjJdPWw7Y1tuPj4yXT1qfX13aGlsZSgwKTtpZihrPj4+MDwxNil7Y1tlPj4yXT1nfGNbZT4+Ml0mMXwyO3I9YSsoKGd8NCkrIC04KXwwO2Nbcj4+Ml09Y1tyPj4yXXwxO3I9YTtpPWQ7cmV0dXJuIHJ8MH1lbHNle2NbZT4+Ml09Y1tlPj4yXSYxfGZ8MjtjW2ErKChmfDQpKyAtOCk+PjJdPWt8MztyPWErKChnfDQpKyAtOCl8MDtjW3I+PjJdPWNbcj4+Ml18MTt4bihhKyhmKyAtOCl8MCxrKTtyPWE7aT1kO3JldHVybiByfDB9fX19d2hpbGUoMCk7Zj11bihiKXwwO2lmKChmfDApPT0wKXtyPTA7aT1kO3JldHVybiByfDB9cj1jW2U+PjJdfDA7cj0ociYtOCktKChyJjN8MCk9PTA/ODo0KXwwO0xuKGZ8MCxhfDAsKHI+Pj4wPGI+Pj4wP3I6Yil8MCl8MDt2bihhKTtyPWY7aT1kO3JldHVybiByfDB9ZnVuY3Rpb24geG4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7ZD1pO2g9YStifDA7bD1jW2ErND4+Ml18MDtkb3tpZigobCYxfDApPT0wKXtwPWNbYT4+Ml18MDtpZigobCYzfDApPT0wKXtpPWQ7cmV0dXJufWw9YSsoMC1wKXwwO209cCtifDA7cT1jWzIyMTg0Pj4yXXwwO2lmKGw+Pj4wPHE+Pj4wKXtYYigpfWlmKChsfDApPT0oY1syMjE4OD4+Ml18MCkpe2U9YSsoYis0KXwwO2lmKChjW2U+PjJdJjN8MCkhPTMpe2U9bDtuPW07YnJlYWt9Y1syMjE3Nj4+Ml09bTtjW2U+PjJdPWNbZT4+Ml0mLTI7Y1thKyg0LXApPj4yXT1tfDE7Y1toPj4yXT1tO2k9ZDtyZXR1cm59cz1wPj4+MztpZihwPj4+MDwyNTYpe2U9Y1thKyg4LXApPj4yXXwwO249Y1thKygxMi1wKT4+Ml18MDtvPTIyMjA4KyhzPDwxPDwyKXwwO2lmKChlfDApIT0ob3wwKSl7aWYoZT4+PjA8cT4+PjApe1hiKCl9aWYoKGNbZSsxMj4+Ml18MCkhPShsfDApKXtYYigpfX1pZigobnwwKT09KGV8MCkpe2NbNTU0Ml09Y1s1NTQyXSZ+KDE8PHMpO2U9bDtuPW07YnJlYWt9aWYoKG58MCkhPShvfDApKXtpZihuPj4+MDxxPj4+MCl7WGIoKX1vPW4rOHwwO2lmKChjW28+PjJdfDApPT0obHwwKSl7cj1vfWVsc2V7WGIoKX19ZWxzZXtyPW4rOHwwfWNbZSsxMj4+Ml09bjtjW3I+PjJdPWU7ZT1sO249bTticmVha31yPWNbYSsoMjQtcCk+PjJdfDA7dD1jW2ErKDEyLXApPj4yXXwwO2Rve2lmKCh0fDApPT0obHwwKSl7dT0xNi1wfDA7dD1hKyh1KzQpfDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe3Q9YSt1fDA7cz1jW3Q+PjJdfDA7aWYoKHN8MCk9PTApe289MDticmVha319d2hpbGUoMSl7dT1zKzIwfDA7dj1jW3U+PjJdfDA7aWYoKHZ8MCkhPTApe3M9djt0PXU7Y29udGludWV9dj1zKzE2fDA7dT1jW3Y+PjJdfDA7aWYoKHV8MCk9PTApe2JyZWFrfWVsc2V7cz11O3Q9dn19aWYodD4+PjA8cT4+PjApe1hiKCl9ZWxzZXtjW3Q+PjJdPTA7bz1zO2JyZWFrfX1lbHNle3M9Y1thKyg4LXApPj4yXXwwO2lmKHM+Pj4wPHE+Pj4wKXtYYigpfXU9cysxMnwwO2lmKChjW3U+PjJdfDApIT0obHwwKSl7WGIoKX1xPXQrOHwwO2lmKChjW3E+PjJdfDApPT0obHwwKSl7Y1t1Pj4yXT10O2NbcT4+Ml09cztvPXQ7YnJlYWt9ZWxzZXtYYigpfX19d2hpbGUoMCk7aWYoKHJ8MCkhPTApe3E9Y1thKygyOC1wKT4+Ml18MDtzPTIyNDcyKyhxPDwyKXwwO2lmKChsfDApPT0oY1tzPj4yXXwwKSl7Y1tzPj4yXT1vO2lmKChvfDApPT0wKXtjWzIyMTcyPj4yXT1jWzIyMTcyPj4yXSZ+KDE8PHEpO2U9bDtuPW07YnJlYWt9fWVsc2V7aWYocj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1xPXIrMTZ8MDtpZigoY1txPj4yXXwwKT09KGx8MCkpe2NbcT4+Ml09b31lbHNle2NbcisyMD4+Ml09b31pZigob3wwKT09MCl7ZT1sO249bTticmVha319aWYobz4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW28rMjQ+PjJdPXI7cD0xNi1wfDA7cT1jW2ErcD4+Ml18MDtkb3tpZigocXwwKSE9MCl7aWYocT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbbysxNj4+Ml09cTtjW3ErMjQ+PjJdPW87YnJlYWt9fX13aGlsZSgwKTtwPWNbYSsocCs0KT4+Ml18MDtpZigocHwwKSE9MCl7aWYocD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbbysyMD4+Ml09cDtjW3ArMjQ+PjJdPW87ZT1sO249bTticmVha319ZWxzZXtlPWw7bj1tfX1lbHNle2U9bDtuPW19fWVsc2V7ZT1hO249Yn19d2hpbGUoMCk7bD1jWzIyMTg0Pj4yXXwwO2lmKGg+Pj4wPGw+Pj4wKXtYYigpfW09YSsoYis0KXwwO289Y1ttPj4yXXwwO2lmKChvJjJ8MCk9PTApe2lmKChofDApPT0oY1syMjE5Mj4+Ml18MCkpe3Y9KGNbMjIxODA+PjJdfDApK258MDtjWzIyMTgwPj4yXT12O2NbMjIxOTI+PjJdPWU7Y1tlKzQ+PjJdPXZ8MTtpZigoZXwwKSE9KGNbMjIxODg+PjJdfDApKXtpPWQ7cmV0dXJufWNbMjIxODg+PjJdPTA7Y1syMjE3Nj4+Ml09MDtpPWQ7cmV0dXJufWlmKChofDApPT0oY1syMjE4OD4+Ml18MCkpe3Y9KGNbMjIxNzY+PjJdfDApK258MDtjWzIyMTc2Pj4yXT12O2NbMjIxODg+PjJdPWU7Y1tlKzQ+PjJdPXZ8MTtjW2Urdj4+Ml09djtpPWQ7cmV0dXJufW49KG8mLTgpK258MDttPW8+Pj4zO2Rve2lmKCEobz4+PjA8MjU2KSl7az1jW2ErKGIrMjQpPj4yXXwwO209Y1thKyhiKzEyKT4+Ml18MDtkb3tpZigobXwwKT09KGh8MCkpe289YSsoYisyMCl8MDttPWNbbz4+Ml18MDtpZigobXwwKT09MCl7bz1hKyhiKzE2KXwwO209Y1tvPj4yXXwwO2lmKChtfDApPT0wKXtqPTA7YnJlYWt9fXdoaWxlKDEpe3E9bSsyMHwwO3A9Y1txPj4yXXwwO2lmKChwfDApIT0wKXttPXA7bz1xO2NvbnRpbnVlfXA9bSsxNnwwO3E9Y1twPj4yXXwwO2lmKChxfDApPT0wKXticmVha31lbHNle209cTtvPXB9fWlmKG8+Pj4wPGw+Pj4wKXtYYigpfWVsc2V7Y1tvPj4yXT0wO2o9bTticmVha319ZWxzZXtvPWNbYSsoYis4KT4+Ml18MDtpZihvPj4+MDxsPj4+MCl7WGIoKX1sPW8rMTJ8MDtpZigoY1tsPj4yXXwwKSE9KGh8MCkpe1hiKCl9cD1tKzh8MDtpZigoY1twPj4yXXwwKT09KGh8MCkpe2NbbD4+Ml09bTtjW3A+PjJdPW87aj1tO2JyZWFrfWVsc2V7WGIoKX19fXdoaWxlKDApO2lmKChrfDApIT0wKXtsPWNbYSsoYisyOCk+PjJdfDA7bT0yMjQ3MisobDw8Mil8MDtpZigoaHwwKT09KGNbbT4+Ml18MCkpe2NbbT4+Ml09ajtpZigoanwwKT09MCl7Y1syMjE3Mj4+Ml09Y1syMjE3Mj4+Ml0mfigxPDxsKTticmVha319ZWxzZXtpZihrPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWw9aysxNnwwO2lmKChjW2w+PjJdfDApPT0oaHwwKSl7Y1tsPj4yXT1qfWVsc2V7Y1trKzIwPj4yXT1qfWlmKChqfDApPT0wKXticmVha319aWYoaj4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2orMjQ+PjJdPWs7aD1jW2ErKGIrMTYpPj4yXXwwO2Rve2lmKChofDApIT0wKXtpZihoPj4+MDwoY1syMjE4ND4+Ml18MCk+Pj4wKXtYYigpfWVsc2V7Y1tqKzE2Pj4yXT1oO2NbaCsyND4+Ml09ajticmVha319fXdoaWxlKDApO2g9Y1thKyhiKzIwKT4+Ml18MDtpZigoaHwwKSE9MCl7aWYoaD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2NbaisyMD4+Ml09aDtjW2grMjQ+PjJdPWo7YnJlYWt9fX19ZWxzZXtqPWNbYSsoYis4KT4+Ml18MDthPWNbYSsoYisxMik+PjJdfDA7Yj0yMjIwOCsobTw8MTw8Mil8MDtpZigoanwwKSE9KGJ8MCkpe2lmKGo+Pj4wPGw+Pj4wKXtYYigpfWlmKChjW2orMTI+PjJdfDApIT0oaHwwKSl7WGIoKX19aWYoKGF8MCk9PShqfDApKXtjWzU1NDJdPWNbNTU0Ml0mfigxPDxtKTticmVha31pZigoYXwwKSE9KGJ8MCkpe2lmKGE+Pj4wPGw+Pj4wKXtYYigpfWI9YSs4fDA7aWYoKGNbYj4+Ml18MCk9PShofDApKXtrPWJ9ZWxzZXtYYigpfX1lbHNle2s9YSs4fDB9Y1tqKzEyPj4yXT1hO2Nbaz4+Ml09an19d2hpbGUoMCk7Y1tlKzQ+PjJdPW58MTtjW2Urbj4+Ml09bjtpZigoZXwwKT09KGNbMjIxODg+PjJdfDApKXtjWzIyMTc2Pj4yXT1uO2k9ZDtyZXR1cm59fWVsc2V7Y1ttPj4yXT1vJi0yO2NbZSs0Pj4yXT1ufDE7Y1tlK24+PjJdPW59YT1uPj4+MztpZihuPj4+MDwyNTYpe2I9YTw8MTtoPTIyMjA4KyhiPDwyKXwwO2o9Y1s1NTQyXXwwO2E9MTw8YTtpZigoaiZhfDApIT0wKXtiPTIyMjA4KyhiKzI8PDIpfDA7YT1jW2I+PjJdfDA7aWYoYT4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1lbHNle2c9YjtmPWF9fWVsc2V7Y1s1NTQyXT1qfGE7Zz0yMjIwOCsoYisyPDwyKXwwO2Y9aH1jW2c+PjJdPWU7Y1tmKzEyPj4yXT1lO2NbZSs4Pj4yXT1mO2NbZSsxMj4+Ml09aDtpPWQ7cmV0dXJufWY9bj4+Pjg7aWYoKGZ8MCkhPTApe2lmKG4+Pj4wPjE2Nzc3MjE1KXtmPTMxfWVsc2V7dT0oZisxMDQ4MzIwfDApPj4+MTYmODt2PWY8PHU7dD0odis1MjAxOTJ8MCk+Pj4xNiY0O3Y9djw8dDtmPSh2KzI0NTc2MHwwKT4+PjE2JjI7Zj0xNC0odHx1fGYpKyh2PDxmPj4+MTUpfDA7Zj1uPj4+KGYrN3wwKSYxfGY8PDF9fWVsc2V7Zj0wfWE9MjI0NzIrKGY8PDIpfDA7Y1tlKzI4Pj4yXT1mO2NbZSsyMD4+Ml09MDtjW2UrMTY+PjJdPTA7aD1jWzIyMTcyPj4yXXwwO2c9MTw8ZjtpZigoaCZnfDApPT0wKXtjWzIyMTcyPj4yXT1ofGc7Y1thPj4yXT1lO2NbZSsyND4+Ml09YTtjW2UrMTI+PjJdPWU7Y1tlKzg+PjJdPWU7aT1kO3JldHVybn1nPWNbYT4+Ml18MDtpZigoZnwwKT09MzEpe2Y9MH1lbHNle2Y9MjUtKGY+Pj4xKXwwfWE6ZG97aWYoKGNbZys0Pj4yXSYtOHwwKSE9KG58MCkpe2Y9bjw8ZjthPWc7d2hpbGUoMSl7aD1hKyhmPj4+MzE8PDIpKzE2fDA7Zz1jW2g+PjJdfDA7aWYoKGd8MCk9PTApe2JyZWFrfWlmKChjW2crND4+Ml0mLTh8MCk9PShufDApKXticmVhayBhfWVsc2V7Zj1mPDwxO2E9Z319aWYoaD4+PjA8KGNbMjIxODQ+PjJdfDApPj4+MCl7WGIoKX1jW2g+PjJdPWU7Y1tlKzI0Pj4yXT1hO2NbZSsxMj4+Ml09ZTtjW2UrOD4+Ml09ZTtpPWQ7cmV0dXJufX13aGlsZSgwKTtmPWcrOHwwO2E9Y1tmPj4yXXwwO2g9Y1syMjE4ND4+Ml18MDtpZihnPj4+MDxoPj4+MCl7WGIoKX1pZihhPj4+MDxoPj4+MCl7WGIoKX1jW2ErMTI+PjJdPWU7Y1tmPj4yXT1lO2NbZSs4Pj4yXT1hO2NbZSsxMj4+Ml09ZztjW2UrMjQ+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiB5bihhKXthPWF8MDt2YXIgYj0wO2I9aTtSYihhfDApO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIHpuKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1JiKGF8MCk7aT1iO3JldHVybn1mdW5jdGlvbiBBbihhKXthPWF8MDtyZXR1cm4gMjI2OTZ9ZnVuY3Rpb24gQm4oYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO2g9aTtpZihlPj4+MD4zNil7Y1soYmIoKXwwKT4+Ml09MjI7cz0wO3Q9MDtJPXM7aT1oO3JldHVybiB0fDB9az1iKzR8MDtqPWIrMTAwfDA7ZG97bD1jW2s+PjJdfDA7aWYobD4+PjA8KGNbaj4+Ml18MCk+Pj4wKXtjW2s+PjJdPWwrMTtvPWRbbD4+MF18MH1lbHNle289RG4oYil8MH19d2hpbGUoKG98MCk9PTMyfChvKyAtOXwwKT4+PjA8NSk7ZG97aWYoKG98MCk9PTQzfChvfDApPT00NSl7bD0oKG98MCk9PTQ1KTw8MzE+PjMxO209Y1trPj4yXXwwO2lmKG0+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1tKzE7bz1kW20+PjBdfDA7YnJlYWt9ZWxzZXtvPURuKGIpfDA7YnJlYWt9fWVsc2V7bD0wfX13aGlsZSgwKTttPShlfDApPT0wO2Rve2lmKChlJi0xN3wwKT09MCYob3wwKT09NDgpe249Y1trPj4yXXwwO2lmKG4+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1uKzE7bz1kW24+PjBdfDB9ZWxzZXtvPURuKGIpfDB9aWYoKG98MzJ8MCkhPTEyMCl7ZT1tPzg6ZTttPTI4O2JyZWFrfWU9Y1trPj4yXXwwO2lmKGU+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1lKzE7bz1kW2U+PjBdfDB9ZWxzZXtvPURuKGIpfDB9aWYoKGRbbysyMjc0NT4+MF18MCk+MTUpe2lmKChjW2o+PjJdfDApPT0wKXtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH1jW2s+PjJdPShjW2s+PjJdfDApKyAtMjtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH1lbHNle2U9MTY7bT00M319ZWxzZXtlPW0/MTA6ZTtpZigoZFtvKzIyNzQ1Pj4wXXwwKT4+PjA8ZT4+PjApe209Mjh9ZWxzZXtmPWNbaz4+Ml18MDtpZigoY1tqPj4yXXwwKSE9MCl7Zj1mKyAtMXwwO2Nbaz4+Ml09Zn1jW2IrMTA0Pj4yXT0wO3M9Y1tiKzg+PjJdfDA7Y1tiKzEwOD4+Ml09cy1mO2Nbaj4+Ml09cztjWyhiYigpfDApPj4yXT0yMjtzPTA7dD0wO0k9cztpPWg7cmV0dXJuIHR8MH19fXdoaWxlKDApO2lmKChtfDApPT0yOCl7aWYoKGV8MCk9PTEwKXtlPW8rIC00OHwwO2lmKGU+Pj4wPDEwKXtuPTA7d2hpbGUoMSl7bj1uK2V8MDtlPWNbaz4+Ml18MDtpZihlPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09ZSsxO289ZFtlPj4wXXwwfWVsc2V7bz1EbihiKXwwfWU9bysgLTQ4fDA7aWYoIShlPj4+MDwxMCZuPj4+MDw0Mjk0OTY3MjkpKXticmVha31uPW4qMTB8MH1wPTB9ZWxzZXtuPTA7cD0wfWU9bysgLTQ4fDA7aWYoZT4+PjA8MTApe2Rve3M9Vm4obnwwLHB8MCwxMCwwKXwwO3I9STtxPSgoZXwwKTwwKTw8MzE+PjMxO3Q9fnE7aWYocj4+PjA+dD4+PjB8KHJ8MCk9PSh0fDApJnM+Pj4wPn5lPj4+MCl7YnJlYWt9bj1JbihzfDAscnwwLGV8MCxxfDApfDA7cD1JO2U9Y1trPj4yXXwwO2lmKGU+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1lKzE7bz1kW2U+PjBdfDB9ZWxzZXtvPURuKGIpfDB9ZT1vKyAtNDh8MH13aGlsZShlPj4+MDwxMCYocD4+PjA8NDI5NDk2NzI5fChwfDApPT00Mjk0OTY3Mjkmbj4+PjA8MjU3Njk4MDM3OCkpO2lmKCEoZT4+PjA+OSkpe2U9MTA7bT02OX19fWVsc2V7bT00M319YTpkb3tpZigobXwwKT09NDMpe2lmKChlKyAtMSZlfDApPT0wKXttPWFbMjMwMDgrKChlKjIzfDApPj4+NSY3KT4+MF18MDtyPWFbbysyMjc0NT4+MF18MDtuPXImMjU1O2lmKG4+Pj4wPGU+Pj4wKXtvPW47bj0wO2Rve249b3xuPDxtO289Y1trPj4yXXwwO2lmKG8+Pj4wPChjW2o+PjJdfDApPj4+MCl7Y1trPj4yXT1vKzE7cz1kW28+PjBdfDB9ZWxzZXtzPURuKGIpfDB9cj1hW3MrMjI3NDU+PjBdfDA7bz1yJjI1NX13aGlsZShvPj4+MDxlPj4+MCZuPj4+MDwxMzQyMTc3MjgpO3A9MH1lbHNle3A9MDtuPTA7cz1vfXE9S24oLTEsLTEsbXwwKXwwO289STtpZigociYyNTUpPj4+MD49ZT4+PjB8KHA+Pj4wPm8+Pj4wfChwfDApPT0ob3wwKSZuPj4+MD5xPj4+MCkpe289czttPTY5O2JyZWFrfXdoaWxlKDEpe249T24obnwwLHB8MCxtfDApfDA7cD1JO249ciYyNTV8bjtyPWNbaz4+Ml18MDtpZihyPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09cisxO3M9ZFtyPj4wXXwwfWVsc2V7cz1EbihiKXwwfXI9YVtzKzIyNzQ1Pj4wXXwwO2lmKChyJjI1NSk+Pj4wPj1lPj4+MHwocD4+PjA+bz4+PjB8KHB8MCk9PShvfDApJm4+Pj4wPnE+Pj4wKSl7bz1zO209Njk7YnJlYWsgYX19fXE9YVtvKzIyNzQ1Pj4wXXwwO209cSYyNTU7aWYobT4+PjA8ZT4+PjApe249MDtkb3tuPW0rKGVhKG4sZSl8MCl8MDttPWNbaz4+Ml18MDtpZihtPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09bSsxO3I9ZFttPj4wXXwwfWVsc2V7cj1EbihiKXwwfXE9YVtyKzIyNzQ1Pj4wXXwwO209cSYyNTV9d2hpbGUobT4+PjA8ZT4+PjAmbj4+PjA8MTE5MzA0NjQ3KTtwPTB9ZWxzZXtuPTA7cD0wO3I9b31pZigocSYyNTUpPj4+MDxlPj4+MCl7bT1XbigtMSwtMSxlfDAsMCl8MDtvPUk7d2hpbGUoMSl7aWYocD4+PjA+bz4+PjB8KHB8MCk9PShvfDApJm4+Pj4wPm0+Pj4wKXtvPXI7bT02OTticmVhayBhfXM9Vm4obnwwLHB8MCxlfDAsMCl8MDt0PUk7cT1xJjI1NTtpZih0Pj4+MD40Mjk0OTY3Mjk1fCh0fDApPT0tMSZzPj4+MD5+cT4+PjApe289cjttPTY5O2JyZWFrIGF9bj1JbihxfDAsMCxzfDAsdHwwKXwwO3A9STtxPWNbaz4+Ml18MDtpZihxPj4+MDwoY1tqPj4yXXwwKT4+PjApe2Nbaz4+Ml09cSsxO3I9ZFtxPj4wXXwwfWVsc2V7cj1EbihiKXwwfXE9YVtyKzIyNzQ1Pj4wXXwwO2lmKCEoKHEmMjU1KT4+PjA8ZT4+PjApKXtvPXI7bT02OTticmVha319fWVsc2V7bz1yO209Njl9fX13aGlsZSgwKTtpZigobXwwKT09Njkpe2lmKChkW28rMjI3NDU+PjBdfDApPj4+MDxlPj4+MCl7ZG97bT1jW2s+PjJdfDA7aWYobT4+PjA8KGNbaj4+Ml18MCk+Pj4wKXtjW2s+PjJdPW0rMTttPWRbbT4+MF18MH1lbHNle209RG4oYil8MH19d2hpbGUoKGRbbSsyMjc0NT4+MF18MCk+Pj4wPGU+Pj4wKTtjWyhiYigpfDApPj4yXT0zNDtwPWc7bj1mfX1pZigoY1tqPj4yXXwwKSE9MCl7Y1trPj4yXT0oY1trPj4yXXwwKSsgLTF9aWYoIShwPj4+MDxnPj4+MHwocHwwKT09KGd8MCkmbj4+PjA8Zj4+PjApKXtpZigoZiYxfDApPT0wJjA9PTAmKGx8MCk9PTApe2NbKGJiKCl8MCk+PjJdPTM0O3Q9SW4oZnwwLGd8MCwtMSwtMSl8MDtzPUk7ST1zO2k9aDtyZXR1cm4gdHwwfWlmKHA+Pj4wPmc+Pj4wfChwfDApPT0oZ3wwKSZuPj4+MD5mPj4+MCl7Y1soYmIoKXwwKT4+Ml09MzQ7cz1nO3Q9ZjtJPXM7aT1oO3JldHVybiB0fDB9fXQ9KChsfDApPDApPDwzMT4+MzE7dD1IbihuXmx8MCxwXnR8MCxsfDAsdHwwKXwwO3M9STtJPXM7aT1oO3JldHVybiB0fDB9ZnVuY3Rpb24gQ24oYSl7YT1hfDA7dmFyIGI9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7ZT1pO2Y9YSs0fDA7Zz1jW2Y+PjJdfDA7Yj1hKzEwMHwwO2lmKGc+Pj4wPChjW2I+PjJdfDApPj4+MCl7Y1tmPj4yXT1nKzE7aj1kW2c+PjBdfDB9ZWxzZXtqPURuKGEpfDB9aWYoKGp8MCk9PTQzfChqfDApPT00NSl7Zz0oanwwKT09NDUmMTtoPWNbZj4+Ml18MDtpZihoPj4+MDwoY1tiPj4yXXwwKT4+PjApe2NbZj4+Ml09aCsxO2o9ZFtoPj4wXXwwfWVsc2V7aj1EbihhKXwwfWlmKCEoKGorIC00OHwwKT4+PjA8MTApPyhjW2I+PjJdfDApIT0wOjApe2NbZj4+Ml09KGNbZj4+Ml18MCkrIC0xfX1lbHNle2c9MH1pZigoaisgLTQ4fDApPj4+MD45KXtpZigoY1tiPj4yXXwwKT09MCl7az0tMjE0NzQ4MzY0ODtsPTA7ST1rO2k9ZTtyZXR1cm4gbHwwfWNbZj4+Ml09KGNbZj4+Ml18MCkrIC0xO2s9LTIxNDc0ODM2NDg7bD0wO0k9aztpPWU7cmV0dXJuIGx8MH1lbHNle2g9MH13aGlsZSgxKXtoPWorIC00OCtofDA7aj1jW2Y+PjJdfDA7aWYoaj4+PjA8KGNbYj4+Ml18MCk+Pj4wKXtjW2Y+PjJdPWorMTtqPWRbaj4+MF18MH1lbHNle2o9RG4oYSl8MH1sPShqKyAtNDh8MCk+Pj4wPDEwO2lmKCEobCYoaHwwKTwyMTQ3NDgzNjQpKXticmVha31oPWgqMTB8MH1rPSgoaHwwKTwwKTw8MzE+PjMxO2lmKGwpe2Rve2s9Vm4oaHwwLGt8MCwxMCwwKXwwO2g9STtqPUluKGp8MCwoKGp8MCk8MCk8PDMxPj4zMXwwLC00OCwtMSl8MDtoPUluKGp8MCxJfDAsa3wwLGh8MCl8MDtrPUk7aj1jW2Y+PjJdfDA7aWYoaj4+PjA8KGNbYj4+Ml18MCk+Pj4wKXtjW2Y+PjJdPWorMTtqPWRbaj4+MF18MH1lbHNle2o9RG4oYSl8MH19d2hpbGUoKGorIC00OHwwKT4+PjA8MTAmKChrfDApPDIxNDc0ODM2fChrfDApPT0yMTQ3NDgzNiZoPj4+MDwyMDYxNTg0MzAyKSl9aWYoKGorIC00OHwwKT4+PjA8MTApe2Rve2o9Y1tmPj4yXXwwO2lmKGo+Pj4wPChjW2I+PjJdfDApPj4+MCl7Y1tmPj4yXT1qKzE7aj1kW2o+PjBdfDB9ZWxzZXtqPURuKGEpfDB9fXdoaWxlKChqKyAtNDh8MCk+Pj4wPDEwKX1pZigoY1tiPj4yXXwwKSE9MCl7Y1tmPj4yXT0oY1tmPj4yXXwwKSsgLTF9aj0oZ3wwKSE9MDtsPUhuKDAsMCxofDAsa3wwKXwwO2s9aj9JOms7bD1qP2w6aDtJPWs7aT1lO3JldHVybiBsfDB9ZnVuY3Rpb24gRG4oYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtlPWk7aD1iKzEwNHwwO2w9Y1toPj4yXXwwO2lmKCEoKGx8MCkhPTA/KGNbYisxMDg+PjJdfDApPj0obHwwKTowKSl7Zz0zfWlmKChnfDApPT0zPyhmPUVuKGIpfDAsKGZ8MCk+PTApOjApe2w9Y1toPj4yXXwwO2g9Y1tiKzg+PjJdfDA7az1jW2IrND4+Ml18MDtpZigobHwwKSE9MD8oaj1sLShjW2IrMTA4Pj4yXXwwKSsgLTF8MCwoaC1rfDApPihqfDApKTowKXtjW2IrMTAwPj4yXT1rK2p9ZWxzZXtnPTh9aWYoKGd8MCk9PTgpe2NbYisxMDA+PjJdPWh9aWYoKGh8MCkhPTApe2w9YisxMDh8MDtjW2w+PjJdPWgrMS1rKyhjW2w+PjJdfDApfWI9aysgLTF8MDtpZigoZFtiPj4wXXwwfDApPT0oZnwwKSl7bD1mO2k9ZTtyZXR1cm4gbHwwfWFbYj4+MF09ZjtsPWY7aT1lO3JldHVybiBsfDB9Y1tiKzEwMD4+Ml09MDtsPS0xO2k9ZTtyZXR1cm4gbHwwfWZ1bmN0aW9uIEVuKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2c9aTtpPWkrMTZ8MDtlPWc7Zj1iKzh8MDtkb3tpZigoY1tmPj4yXXwwKT09MCl7aj1iKzc0fDA7aD1hW2o+PjBdfDA7YVtqPj4wXT1oKzI1NXxoO2o9YisyMHwwO2g9Yis0NHwwO2lmKChjW2o+PjJdfDApPj4+MD4oY1toPj4yXXwwKT4+PjApe2hjW2NbYiszNj4+Ml0mNjNdKGIsMCwwKXwwfWNbYisxNj4+Ml09MDtjW2IrMjg+PjJdPTA7Y1tqPj4yXT0wO2o9Y1tiPj4yXXwwO2lmKChqJjIwfDApPT0wKXtqPWNbaD4+Ml18MDtjW2Y+PjJdPWo7Y1tiKzQ+PjJdPWo7YnJlYWt9aWYoKGomNHwwKT09MCl7aj0tMTtpPWc7cmV0dXJuIGp8MH1jW2I+PjJdPWp8MzI7aj0tMTtpPWc7cmV0dXJuIGp8MH19d2hpbGUoMCk7aWYoKGhjW2NbYiszMj4+Ml0mNjNdKGIsZSwxKXwwKSE9MSl7aj0tMTtpPWc7cmV0dXJuIGp8MH1qPWRbZT4+MF18MDtpPWc7cmV0dXJuIGp8MH1mdW5jdGlvbiBGbihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MC4wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLjAsSj0wLEs9MCxMPTAuMCxNPTAuMCxOPTAuMCxPPTAuMDtmPWk7aT1pKzYyNHwwO289ZisxMTJ8MDtxPWY7bD1xKzB8MDtqPWwrMTA4fDA7ZG97Y1tsPj4yXT0wO2w9bCs0fDB9d2hpbGUoKGx8MCk8KGp8MCkpO209cSs0fDA7Y1ttPj4yXT1iO2w9cSs4fDA7Y1tsPj4yXT0tMTtjW3ErNDQ+PjJdPWI7Y1txKzc2Pj4yXT0tMTtzPXErMTA0fDA7Y1tzPj4yXT0wO2o9cSsxMDh8MDtjW2o+PjJdPX5iO3A9cSsxMDB8MDtjW3A+PjJdPS0xO249Yjt6PS0xO3doaWxlKDEpe2lmKG4+Pj4wPHo+Pj4wKXtjW20+PjJdPW4rMTt6PWRbbj4+MF18MH1lbHNle3o9RG4ocSl8MH1pZighKCh6fDApPT0zMnwoeisgLTl8MCk+Pj4wPDUpKXticmVha31uPWNbbT4+Ml18MDt6PWNbcD4+Ml18MH1kb3tpZigoenwwKT09NDN8KHp8MCk9PTQ1KXtuPTEtKCgoenwwKT09NDUmMSk8PDEpfDA7ej1jW20+PjJdfDA7aWYoej4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXorMTt6PWRbej4+MF18MDticmVha31lbHNle3o9RG4ocSl8MDticmVha319ZWxzZXtuPTF9fXdoaWxlKDApO0I9MDtkb3tpZigoenwzMnwwKSE9KGFbMjMwMjQrQj4+MF18MCkpe2JyZWFrfWRve2lmKEI+Pj4wPDcpe3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDA7YnJlYWt9ZWxzZXt6PURuKHEpfDA7YnJlYWt9fX13aGlsZSgwKTtCPUIrMXwwfXdoaWxlKEI+Pj4wPDgpO2E6ZG97aWYoKEJ8MCk9PTMpe2c9MjF9ZWxzZSBpZigoQnwwKSE9OCl7aWYoIShCPj4+MDw0KSl7aWYoKEJ8MCk9PTgpe2c9MjU7YnJlYWt9ZWxzZXtnPTIxO2JyZWFrfX1iOmRve2lmKChCfDApPT0wKXtCPTA7ZG97aWYoKHp8MzJ8MCkhPShhWzIzMDQwK0I+PjBdfDApKXticmVhayBifWRve2lmKEI+Pj4wPDIpe3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDA7YnJlYWt9ZWxzZXt6PURuKHEpfDA7YnJlYWt9fX13aGlsZSgwKTtCPUIrMXwwfXdoaWxlKEI+Pj4wPDMpfX13aGlsZSgwKTtpZigoQnwwKT09MCl7ZG97aWYoKHp8MCk9PTQ4KXt6PWNbbT4+Ml18MDtpZih6Pj4+MDwoY1twPj4yXXwwKT4+PjApe2NbbT4+Ml09eisxO3o9ZFt6Pj4wXXwwfWVsc2V7ej1EbihxKXwwfWlmKCh6fDMyfDApIT0xMjApe2lmKChjW3A+PjJdfDApPT0wKXt6PTQ4O2JyZWFrfWNbbT4+Ml09KGNbbT4+Ml18MCkrIC0xO3o9NDg7YnJlYWt9bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtGPWRbbz4+MF18MDtEPTB9ZWxzZXtGPURuKHEpfDA7RD0wfXdoaWxlKDEpe2lmKChGfDApPT00Nil7Zz02NTticmVha31lbHNlIGlmKChGfDApIT00OCl7bz0wO3M9MDtBPTA7ej0wO0M9MDtFPTA7SD0xLjA7Qj0wO3c9MC4wO2JyZWFrfW89Y1ttPj4yXXwwO2lmKG8+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1vKzE7Rj1kW28+PjBdfDA7RD0xO2NvbnRpbnVlfWVsc2V7Rj1EbihxKXwwO0Q9MTtjb250aW51ZX19Yzpkb3tpZigoZ3wwKT09NjUpe289Y1ttPj4yXXwwO2lmKG8+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1vKzE7Rj1kW28+PjBdfDB9ZWxzZXtGPURuKHEpfDB9aWYoKEZ8MCk9PTQ4KXtBPS0xO3o9LTE7d2hpbGUoMSl7bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtGPWRbbz4+MF18MH1lbHNle0Y9RG4ocSl8MH1pZigoRnwwKSE9NDgpe289MDtzPTA7RD0xO0M9MTtFPTA7SD0xLjA7Qj0wO3c9MC4wO2JyZWFrIGN9Sz1JbihBfDAsenwwLC0xLC0xKXwwO0E9Szt6PUl9fWVsc2V7bz0wO3M9MDtBPTA7ej0wO0M9MTtFPTA7SD0xLjA7Qj0wO3c9MC4wfX19d2hpbGUoMCk7ZDp3aGlsZSgxKXtLPUYrIC00OHwwO2Rve2lmKCEoSz4+PjA8MTApKXtHPUZ8MzI7Sj0oRnwwKT09NDY7aWYoISgoRysgLTk3fDApPj4+MDw2fEopKXticmVhayBkfWlmKEope2lmKChDfDApPT0wKXtBPXM7ej1vO0M9MTticmVha31lbHNle0Y9NDY7YnJlYWsgZH19ZWxzZXtLPShGfDApPjU3P0crIC04N3wwOks7Zz03OTticmVha319ZWxzZXtnPTc5fX13aGlsZSgwKTtpZigoZ3wwKT09Nzkpe2c9MDtkb3tpZighKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCkpe2lmKChvfDApPDB8KG98MCk9PTAmcz4+PjA8MTQpe049SCouMDYyNTtMPU47dz13K04qKyhLfDApO2JyZWFrfWlmKChLfDApIT0wJihFfDApPT0wKXtFPTE7TD1IO3c9dytIKi41fWVsc2V7TD1IfX1lbHNle0w9SDtCPUsrKEI8PDQpfDB9fXdoaWxlKDApO3M9SW4oc3wwLG98MCwxLDApfDA7bz1JO0Q9MTtIPUx9Rj1jW20+PjJdfDA7aWYoRj4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPUYrMTtGPWRbRj4+MF18MDtjb250aW51ZX1lbHNle0Y9RG4ocSl8MDtjb250aW51ZX19aWYoKER8MCk9PTApe2lmKChjW3A+PjJdfDApIT0wPyh2PWNbbT4+Ml18MCxjW20+PjJdPXYrIC0yLChDfDApIT0wKTowKXtjW20+PjJdPXYrIC0zfXc9KyhufDApKjAuMDticmVhayBhfUs9KEN8MCk9PTA7dj1LP3M6QTt6PUs/bzp6O2lmKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCl7ZG97Qj1CPDw0O3M9SW4oc3wwLG98MCwxLDApfDA7bz1JfXdoaWxlKChvfDApPDB8KG98MCk9PTAmcz4+PjA8OCl9aWYoISgoRnwzMnwwKT09MTEyPyh1PUNuKHEpfDAsdD1JLCEoKHV8MCk9PTAmKHR8MCk9PS0yMTQ3NDgzNjQ4KSk6MCkpe2lmKChjW3A+PjJdfDApPT0wKXt1PTA7dD0wfWVsc2V7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTE7dT0wO3Q9MH19bz1Pbih2fDAsenwwLDIpfDA7bz1JbihvfDAsSXwwLC0zMiwtMSl8MDtvPUluKG98MCxJfDAsdXwwLHR8MCl8MDtwPUk7aWYoKEJ8MCk9PTApe3c9KyhufDApKjAuMDticmVhayBhfWlmKChwfDApPjB8KHB8MCk9PTAmbz4+PjA+MTA3NCl7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7YnJlYWsgYX1pZigocHwwKTwtMXwocHwwKT09LTEmbz4+PjA8NDI5NDk2NjExNil7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWsgYX1pZigoQnwwKT4tMSl7ZG97Qj1CPDwxO2lmKCEodz49LjUpKXtIPXd9ZWxzZXtIPXcrLTEuMDtCPUJ8MX13PXcrSDtvPUluKG98MCxwfDAsLTEsLTEpfDA7cD1JfXdoaWxlKChCfDApPi0xKX1wPUluKG98MCxwfDAsMTEwNiwwKXwwO0s9STtkb3tpZigoS3wwKTwwfChLfDApPT0wJnA+Pj4wPDUzPyhyPShwfDApPDA/MDpwLChyfDApPDUzKTowKXtwPTg0LXJ8MDtkb3tpZigocHwwKT4xMDIzKXtxPXArIC0xMDIzfDA7aWYoKHF8MCk8PTEwMjMpe3A9cTtIPTguOTg4NDY1Njc0MzExNThlKzMwNzticmVha31wPXArIC0yMDQ2fDA7cD0ocHwwKT4xMDIzPzEwMjM6cDtIPXl9ZWxzZXtpZighKChwfDApPC0xMDIyKSl7SD0xLjA7YnJlYWt9cT1wKzEwMjJ8MDtpZighKChxfDApPC0xMDIyKSl7cD1xO0g9Mi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWt9cD1wKzIwNDR8MDtwPShwfDApPC0xMDIyPy0xMDIyOnA7SD0wLjB9fXdoaWxlKDApO0o9T24ocCsxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO009KyhufDApO0w9K1NiKCsoSCoraFtrPj4zXSksK00pO2lmKCEoKHJ8MCk8MzImdyE9MC4wKSl7SD1NO2JyZWFrfUs9QiYxO0g9TTtCPShLXjEpK0J8MDt3PShLfDApPT0wPzAuMDp3fWVsc2V7Zz0xMTR9fXdoaWxlKDApO2lmKChnfDApPT0xMTQpe0g9KyhufDApO0w9MC4wfXc9SCp3KyhMK0gqKyhCPj4+MCkpLUw7aWYoISh3IT0wLjApKXtjWyhiYigpfDApPj4yXT0zNH1kb3tpZigob3wwKT4xMDIzKXt3PXcqOC45ODg0NjU2NzQzMTE1OGUrMzA3O249bysgLTEwMjN8MDtpZigobnwwKTw9MTAyMyl7bz1uO2JyZWFrfW89bysgLTIwNDZ8MDtvPShvfDApPjEwMjM/MTAyMzpvO3c9dyo4Ljk4ODQ2NTY3NDMxMTU4ZSszMDd9ZWxzZXtpZighKChvfDApPC0xMDIyKSl7YnJlYWt9dz13KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O249bysxMDIyfDA7aWYoISgobnwwKTwtMTAyMikpe289bjticmVha31vPW8rMjA0NHwwO289KG98MCk8LTEwMjI/LTEwMjI6bzt3PXcqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDh9fXdoaWxlKDApO0o9T24obysxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO3c9dyoraFtrPj4zXTticmVhayBhfX13aGlsZSgwKTtHPTA7d2hpbGUoMSl7aWYoKHp8MCk9PTQ2KXtnPTEzOTticmVha31lbHNlIGlmKCh6fDApIT00OCl7cj0wO0Y9MDtDPTA7YnJlYWt9cj1jW20+PjJdfDA7aWYocj4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXIrMTt6PWRbcj4+MF18MDtHPTE7Y29udGludWV9ZWxzZXt6PURuKHEpfDA7Rz0xO2NvbnRpbnVlfX1lOmRve2lmKChnfDApPT0xMzkpe3I9Y1ttPj4yXXwwO2lmKHI+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT1yKzE7ej1kW3I+PjBdfDB9ZWxzZXt6PURuKHEpfDB9aWYoKHp8MCk9PTQ4KXtyPS0xO0Y9LTE7d2hpbGUoMSl7dD1jW20+PjJdfDA7aWYodD4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPXQrMTt6PWRbdD4+MF18MH1lbHNle3o9RG4ocSl8MH1pZigoenwwKSE9NDgpe0c9MTtDPTE7YnJlYWsgZX1LPUluKHJ8MCxGfDAsLTEsLTEpfDA7cj1LO0Y9SX19ZWxzZXtyPTA7Rj0wO0M9MX19fXdoaWxlKDApO2Nbbz4+Ml09MDtEPXorIC00OHwwO0o9KHp8MCk9PTQ2O2Y6ZG97aWYoRD4+PjA8MTB8Sil7dD1vKzQ5NnwwO0U9MDtCPTA7QT0wO3Y9MDt1PTA7d2hpbGUoMSl7ZG97aWYoSil7aWYoKEN8MCk9PTApe3I9RTtGPUI7Qz0xfWVsc2V7YnJlYWsgZn19ZWxzZXtKPUluKEV8MCxCfDAsMSwwKXwwO0I9STtLPSh6fDApIT00ODtpZigodnwwKT49MTI1KXtpZighSyl7RT1KO2JyZWFrfWNbdD4+Ml09Y1t0Pj4yXXwxO0U9SjticmVha31FPW8rKHY8PDIpfDA7aWYoKEF8MCkhPTApe0Q9eisgLTQ4KygoY1tFPj4yXXwwKSoxMHwwKXwwfWNbRT4+Ml09RDtBPUErMXwwO0Q9KEF8MCk9PTk7RT1KO0c9MTtBPUQ/MDpBO3Y9KEQmMSkrdnwwO3U9Sz9KOnV9fXdoaWxlKDApO3o9Y1ttPj4yXXwwO2lmKHo+Pj4wPChjW3A+PjJdfDApPj4+MCl7Y1ttPj4yXT16KzE7ej1kW3o+PjBdfDB9ZWxzZXt6PURuKHEpfDB9RD16KyAtNDh8MDtKPSh6fDApPT00NjtpZighKEQ+Pj4wPDEwfEopKXtnPTE2MjticmVha319fWVsc2V7RT0wO0I9MDtBPTA7dj0wO3U9MDtnPTE2Mn19d2hpbGUoMCk7aWYoKGd8MCk9PTE2Mil7Sz0oQ3wwKT09MDtyPUs/RTpyO0Y9Sz9COkZ9dD0oR3wwKSE9MDtpZih0Pyh6fDMyfDApPT0xMDE6MCl7ej1DbihxKXwwO3E9STtpZigoenwwKT09MCYocXwwKT09LTIxNDc0ODM2NDgpe2lmKChjW3A+PjJdfDApPT0wKXt6PTA7cT0wfWVsc2V7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTE7ej0wO3E9MH19cj1Jbih6fDAscXwwLHJ8MCxGfDApfDA7Rj1JfWVsc2V7aWYoKHp8MCk+LTE/KGNbcD4+Ml18MCkhPTA6MCl7Y1ttPj4yXT0oY1ttPj4yXXwwKSsgLTF9fWlmKCF0KXtjWyhiYigpfDApPj4yXT0yMjtjW3M+PjJdPTA7Sz1jW2w+PjJdfDA7Y1tqPj4yXT1LLShjW20+PjJdfDApO2NbcD4+Ml09Szt3PTAuMDticmVha31wPWNbbz4+Ml18MDtpZigocHwwKT09MCl7dz0rKG58MCkqMC4wO2JyZWFrfWlmKChyfDApPT0oRXwwKSYoRnwwKT09KEJ8MCkmKChCfDApPDB8KEJ8MCk9PTAmRT4+PjA8MTApKXt3PSsobnwwKSorKHA+Pj4wKTticmVha31pZigoRnwwKT4wfChGfDApPT0wJnI+Pj4wPjUzNyl7Y1soYmIoKXwwKT4+Ml09MzQ7dz0rKG58MCkqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgqMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7YnJlYWt9aWYoKEZ8MCk8LTF8KEZ8MCk9PS0xJnI+Pj4wPDQyOTQ5NjYxMTYpe2NbKGJiKCl8MCk+PjJdPTM0O3c9KyhufDApKjIuMjI1MDczODU4NTA3MjAxNGUtMzA4KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O2JyZWFrfWlmKChBfDApIT0wKXtpZigoQXwwKTw5KXtxPW8rKHY8PDIpfDA7cD1jW3E+PjJdfDA7ZG97cD1wKjEwfDA7QT1BKzF8MH13aGlsZSgoQXwwKSE9OSk7Y1txPj4yXT1wfXY9disxfDB9ZG97aWYoKHV8MCk8OT8odXwwKTw9KHJ8MCkmKHJ8MCk8MTg6MCl7aWYoKHJ8MCk9PTkpe3c9KyhufDApKisoKGNbbz4+Ml18MCk+Pj4wKTticmVhayBhfWlmKChyfDApPDkpe3c9KyhufDApKisoKGNbbz4+Ml18MCk+Pj4wKS8rKGNbMjMwNTYrKDgtcjw8Mik+PjJdfDApO2JyZWFrIGF9Sz0oZWEociwtMyl8MCkrODB8MDtwPWNbbz4+Ml18MDtpZigoS3wwKTw9MzA/KHA+Pj5LfDApIT0wOjApe2JyZWFrfXc9KyhufDApKisocD4+PjApKisoY1syMzA1NisocisgLTEwPDwyKT4+Ml18MCk7YnJlYWsgYX19d2hpbGUoMCk7cD0ocnwwKSU5fDA7aWYoKHB8MCk9PTApe3A9MDtxPTB9ZWxzZXtzPShyfDApPi0xP3A6cCs5fDA7cT1jWzIzMDU2Kyg4LXM8PDIpPj4yXXwwO2lmKCh2fDApIT0wKXt0PTFlOS8ocXwwKXwwO3A9MDt6PTA7dT0wO2Rve0c9bysodTw8Mil8MDtKPWNbRz4+Ml18MDtLPSgoSj4+PjApLyhxPj4+MCl8MCkrenwwO2NbRz4+Ml09Szt6PWVhKChKPj4+MCklKHE+Pj4wKXwwLHQpfDA7Sj11O3U9dSsxfDA7aWYoKEp8MCk9PShwfDApJihLfDApPT0wKXtwPXUmMTI3O3I9cisgLTl8MH19d2hpbGUoKHV8MCkhPSh2fDApKTtpZigoenwwKSE9MCl7Y1tvKyh2PDwyKT4+Ml09ejt2PXYrMXwwfX1lbHNle3A9MDt2PTB9cT0wO3I9OS1zK3J8MH1nOndoaWxlKDEpe3M9bysocDw8Mil8MDtpZigocnwwKTwxOCl7ZG97dT0wO3M9disxMjd8MDt3aGlsZSgxKXtzPXMmMTI3O3Q9bysoczw8Mil8MDt6PU9uKGNbdD4+Ml18MCwwLDI5KXwwO3o9SW4oenwwLEl8MCx1fDAsMCl8MDt1PUk7aWYodT4+PjA+MHwodXwwKT09MCZ6Pj4+MD4xZTkpe0s9V24oenwwLHV8MCwxZTksMCl8MDt6PVhuKHp8MCx1fDAsMWU5LDApfDA7dT1LfWVsc2V7dT0wfWNbdD4+Ml09ejt0PShzfDApPT0ocHwwKTtpZighKChzfDApIT0odisxMjcmMTI3fDApfHQpKXt2PSh6fDApPT0wP3M6dn1pZih0KXticmVha31lbHNle3M9cysgLTF8MH19cT1xKyAtMjl8MH13aGlsZSgodXwwKT09MCl9ZWxzZXtpZigocnwwKSE9MTgpe2JyZWFrfWRve2lmKCEoKGNbcz4+Ml18MCk+Pj4wPDkwMDcxOTkpKXtyPTE4O2JyZWFrIGd9dT0wO3Q9disxMjd8MDt3aGlsZSgxKXt0PXQmMTI3O3o9bysodDw8Mil8MDtBPU9uKGNbej4+Ml18MCwwLDI5KXwwO0E9SW4oQXwwLEl8MCx1fDAsMCl8MDt1PUk7aWYodT4+PjA+MHwodXwwKT09MCZBPj4+MD4xZTkpe0s9V24oQXwwLHV8MCwxZTksMCl8MDtBPVhuKEF8MCx1fDAsMWU5LDApfDA7dT1LfWVsc2V7dT0wfWNbej4+Ml09QTt6PSh0fDApPT0ocHwwKTtpZighKCh0fDApIT0odisxMjcmMTI3fDApfHopKXt2PShBfDApPT0wP3Q6dn1pZih6KXticmVha31lbHNle3Q9dCsgLTF8MH19cT1xKyAtMjl8MH13aGlsZSgodXwwKT09MCl9cD1wKzEyNyYxMjc7aWYoKHB8MCk9PSh2fDApKXtLPXYrMTI3JjEyNzt2PW8rKCh2KzEyNiYxMjcpPDwyKXwwO2Nbdj4+Ml09Y1t2Pj4yXXxjW28rKEs8PDIpPj4yXTt2PUt9Y1tvKyhwPDwyKT4+Ml09dTtyPXIrOXwwfWg6d2hpbGUoMSl7cz12KzEmMTI3O3Q9bysoKHYrMTI3JjEyNyk8PDIpfDA7d2hpbGUoMSl7ej0ocnwwKT09MTg7dT0ocnwwKT4yNz85OjE7d2hpbGUoMSl7QT0wO3doaWxlKDEpe0I9QStwJjEyNztpZigoQnwwKT09KHZ8MCkpe0E9MjticmVha31CPWNbbysoQjw8Mik+PjJdfDA7RD1jWzIzMDQ4KyhBPDwyKT4+Ml18MDtpZihCPj4+MDxEPj4+MCl7QT0yO2JyZWFrfUM9QSsxfDA7aWYoQj4+PjA+RD4+PjApe2JyZWFrfWlmKChDfDApPDIpe0E9Q31lbHNle0E9QzticmVha319aWYoKEF8MCk9PTImeil7YnJlYWsgaH1xPXUrcXwwO2lmKChwfDApPT0odnwwKSl7cD12fWVsc2V7YnJlYWt9fXo9KDE8PHUpKyAtMXwwO0E9MWU5Pj4+dTtCPXA7Qz0wO2Rve0c9bysocDw8Mil8MDtKPWNbRz4+Ml18MDtLPShKPj4+dSkrQ3wwO2NbRz4+Ml09SztDPWVhKEomeixBKXwwO0s9KHB8MCk9PShCfDApJihLfDApPT0wO3A9cCsxJjEyNztyPUs/cisgLTl8MDpyO0I9Sz9wOkJ9d2hpbGUoKHB8MCkhPSh2fDApKTtpZigoQ3wwKT09MCl7cD1CO2NvbnRpbnVlfWlmKChzfDApIT0oQnwwKSl7YnJlYWt9Y1t0Pj4yXT1jW3Q+PjJdfDE7cD1CfWNbbysodjw8Mik+PjJdPUM7cD1CO3Y9c31yPXAmMTI3O2lmKChyfDApPT0odnwwKSl7Y1tvKyhzKyAtMTw8Mik+PjJdPTA7dj1zfUg9KygoY1tvKyhyPDwyKT4+Ml18MCk+Pj4wKTtyPXArMSYxMjc7aWYoKHJ8MCk9PSh2fDApKXt2PXYrMSYxMjc7Y1tvKyh2KyAtMTw8Mik+PjJdPTB9dz0rKG58MCk7SD13KihIKjEuMGU5KyArKChjW28rKHI8PDIpPj4yXXwwKT4+PjApKTtuPXErNTN8MDtyPXErMTEyN3wwO2Rve2lmKChyfDApPDUzKXtzPShyfDApPDA/MDpyO2lmKChzfDApPj01Myl7TT0wLjA7dD0xO049MC4wO2JyZWFrfXQ9MTA1LXN8MDtkb3tpZigodHwwKT4xMDIzKXt1PXQrIC0xMDIzfDA7aWYoKHV8MCk8PTEwMjMpe3Q9dTtMPTguOTg4NDY1Njc0MzExNThlKzMwNzticmVha310PXQrIC0yMDQ2fDA7dD0odHwwKT4xMDIzPzEwMjM6dDtMPXl9ZWxzZXtpZighKCh0fDApPC0xMDIyKSl7TD0xLjA7YnJlYWt9dT10KzEwMjJ8MDtpZighKCh1fDApPC0xMDIyKSl7dD11O0w9Mi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7YnJlYWt9dD10KzIwNDR8MDt0PSh0fDApPC0xMDIyPy0xMDIyOnQ7TD0wLjB9fXdoaWxlKDApO0s9T24odCsxMDIzfDAsMCw1Mil8MDt0PUk7Y1trPj4yXT1LO2Nbays0Pj4yXT10O0w9K1NiKCsoTCoraFtrPj4zXSksK0gpO3Q9NTMtc3wwO2Rve2lmKCh0fDApPjEwMjMpe3U9dCsgLTEwMjN8MDtpZigodXwwKTw9MTAyMyl7dD11O009OC45ODg0NjU2NzQzMTE1OGUrMzA3O2JyZWFrfXQ9dCsgLTIwNDZ8MDt0PSh0fDApPjEwMjM/MTAyMzp0O009eX1lbHNle2lmKCEoKHR8MCk8LTEwMjIpKXtNPTEuMDticmVha311PXQrMTAyMnwwO2lmKCEoKHV8MCk8LTEwMjIpKXt0PXU7TT0yLjIyNTA3Mzg1ODUwNzIwMTRlLTMwODticmVha310PXQrMjA0NHwwO3Q9KHR8MCk8LTEwMjI/LTEwMjI6dDtNPTAuMH19d2hpbGUoMCk7Sz1Pbih0KzEwMjN8MCwwLDUyKXwwO3Q9STtjW2s+PjJdPUs7Y1trKzQ+PjJdPXQ7Tz0rUGEoK0gsKyhNKitoW2s+PjNdKSk7TT1MO3Q9MTtOPU87SD1MKyhILU8pfWVsc2V7cz01MztNPTAuMDt0PTA7Tj0wLjB9fXdoaWxlKDApO3U9cCsyJjEyNztkb3tpZigodXwwKSE9KHZ8MCkpe289Y1tvKyh1PDwyKT4+Ml18MDtkb3tpZighKG8+Pj4wPDVlOCkpe2lmKG8+Pj4wPjVlOCl7Tj13Ki43NStOO2JyZWFrfWlmKChwKzMmMTI3fDApPT0odnwwKSl7Tj13Ki41K047YnJlYWt9ZWxzZXtOPXcqLjc1K047YnJlYWt9fWVsc2V7aWYoKG98MCk9PTA/KHArMyYxMjd8MCk9PSh2fDApOjApe2JyZWFrfU49dyouMjUrTn19d2hpbGUoMCk7aWYoKDUzLXN8MCk8PTEpe2JyZWFrfWlmKCtQYSgrTiwxLjApIT0wLjApe2JyZWFrfU49TisxLjB9fXdoaWxlKDApO3c9SCtOLU07ZG97aWYoKG4mMjE0NzQ4MzY0NCk+Pj4wPjEwMTkpe2lmKCtUKCt3KT49OTAwNzE5OTI1NDc0MDk5Mi4wKXt0PSh0fDApIT0wJihzfDApPT0ocnwwKT8wOnQ7cT1xKzF8MDt3PXcqLjV9aWYoKHErNTB8MCk8PTEwMjE/ISgodHwwKSE9MCZOIT0wLjApOjApe2JyZWFrfWNbKGJiKCl8MCk+PjJdPTM0fX13aGlsZSgwKTtkb3tpZigocXwwKT4xMDIzKXt3PXcqOC45ODg0NjU2NzQzMTE1OGUrMzA3O249cSsgLTEwMjN8MDtpZigobnwwKTw9MTAyMyl7cT1uO2JyZWFrfXE9cSsgLTIwNDZ8MDtxPShxfDApPjEwMjM/MTAyMzpxO3c9dyo4Ljk4ODQ2NTY3NDMxMTU4ZSszMDd9ZWxzZXtpZighKChxfDApPC0xMDIyKSl7YnJlYWt9dz13KjIuMjI1MDczODU4NTA3MjAxNGUtMzA4O249cSsxMDIyfDA7aWYoISgobnwwKTwtMTAyMikpe3E9bjticmVha31xPXErMjA0NHwwO3E9KHF8MCk8LTEwMjI/LTEwMjI6cTt3PXcqMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDh9fXdoaWxlKDApO0o9T24ocSsxMDIzfDAsMCw1Mil8MDtLPUk7Y1trPj4yXT1KO2Nbays0Pj4yXT1LO3c9dyoraFtrPj4zXTticmVha31lbHNlIGlmKChCfDApPT0zKXtuPWNbbT4+Ml18MDtpZihuPj4+MDwoY1twPj4yXXwwKT4+PjApe2NbbT4+Ml09bisxO249ZFtuPj4wXXwwfWVsc2V7bj1EbihxKXwwfWlmKChufDApPT00MCl7bj0xfWVsc2V7aWYoKGNbcD4+Ml18MCk9PTApe3c9eDticmVha31jW20+PjJdPShjW20+PjJdfDApKyAtMTt3PXg7YnJlYWt9d2hpbGUoMSl7bz1jW20+PjJdfDA7aWYobz4+PjA8KGNbcD4+Ml18MCk+Pj4wKXtjW20+PjJdPW8rMTtvPWRbbz4+MF18MH1lbHNle289RG4ocSl8MH1pZighKChvKyAtNDh8MCk+Pj4wPDEwfChvKyAtNjV8MCk+Pj4wPDI2KT8hKChvKyAtOTd8MCk+Pj4wPDI2fChvfDApPT05NSk6MCl7YnJlYWt9bj1uKzF8MH1pZigob3wwKT09NDEpe3c9eDticmVha31pZigoY1twPj4yXXwwKT09MCl7dz14O2JyZWFrfW89KGNbbT4+Ml18MCkrIC0xfDA7Y1ttPj4yXT1vO2lmKChufDApPT0wKXt3PXg7YnJlYWt9ZG97bj1uKyAtMXwwO289bysgLTF8MH13aGlsZSgobnwwKSE9MCk7Y1ttPj4yXT1vO3c9eDticmVha31lbHNle249Y1ttPj4yXXwwO2lmKChjW3A+PjJdfDApIT0wKXtuPW4rIC0xfDA7Y1ttPj4yXT1ufWNbKGJiKCl8MCk+PjJdPTIyO2Nbcz4+Ml09MDtLPWNbbD4+Ml18MDtjW2o+PjJdPUstbjtjW3A+PjJdPUs7dz0wLjA7YnJlYWt9fWVsc2V7Zz0yNX19d2hpbGUoMCk7aWYoKGd8MCk9PTIxKXtpZigoY1twPj4yXXwwKSE9MD8oQT0oY1ttPj4yXXwwKSsgLTF8MCxjW20+PjJdPUEsIShCPj4+MDw0KSk6MCl7ZG97QT1BKyAtMXwwO0I9QisgLTF8MH13aGlsZShCPj4+MD4zKTtjW20+PjJdPUE7Zz0yNX1lbHNle2c9MjV9fWlmKChnfDApPT0yNSl7dz0rKG58MCkqeX1nPShjW20+PjJdfDApLShjW2w+PjJdfDApKyhjW2o+PjJdfDApfDA7aWYoKGV8MCk9PTApe2k9ZjtyZXR1cm4rd31pZigoZ3wwKSE9MCl7Yj1iK2d8MH1jW2U+PjJdPWI7aT1mO3JldHVybit3fWZ1bmN0aW9uIEduKCl7Y1sxNTgwXT1vO2NbMjQ5Ml09bztjWzI1MThdPW87Y1s1MzQ2XT1vO2NbNTY4NF09b31mdW5jdGlvbiBIbihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtiPWItZC0oYz4+PjA+YT4+PjB8MCk+Pj4wO3JldHVybihJPWIsYS1jPj4+MHwwKXwwfWZ1bmN0aW9uIEluKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2M9YStjPj4+MDtyZXR1cm4oST1iK2QrKGM+Pj4wPGE+Pj4wfDApPj4+MCxjfDApfDB9ZnVuY3Rpb24gSm4oYil7Yj1ifDA7dmFyIGM9MDtjPWI7d2hpbGUoYVtjPj4wXXwwKXtjPWMrMXwwfXJldHVybiBjLWJ8MH1mdW5jdGlvbiBLbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7aWYoKGN8MCk8MzIpe0k9Yj4+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31JPTA7cmV0dXJuIGI+Pj5jLTMyfDB9ZnVuY3Rpb24gTG4oYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7aWYoKGV8MCk+PTQwOTYpcmV0dXJuIG5iKGJ8MCxkfDAsZXwwKXwwO2Y9YnwwO2lmKChiJjMpPT0oZCYzKSl7d2hpbGUoYiYzKXtpZigoZXwwKT09MClyZXR1cm4gZnwwO2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXdoaWxlKChlfDApPj00KXtjW2I+PjJdPWNbZD4+Ml07Yj1iKzR8MDtkPWQrNHwwO2U9ZS00fDB9fXdoaWxlKChlfDApPjApe2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXJldHVybiBmfDB9ZnVuY3Rpb24gTW4oYixjLGQpe2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTA7aWYoKGN8MCk8KGJ8MCkmKGJ8MCk8KGMrZHwwKSl7ZT1iO2M9YytkfDA7Yj1iK2R8MDt3aGlsZSgoZHwwKT4wKXtiPWItMXwwO2M9Yy0xfDA7ZD1kLTF8MDthW2I+PjBdPWFbYz4+MF18MH1iPWV9ZWxzZXtMbihiLGMsZCl8MH1yZXR1cm4gYnwwfWZ1bmN0aW9uIE5uKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wO2Y9YitlfDA7aWYoKGV8MCk+PTIwKXtkPWQmMjU1O2k9YiYzO2g9ZHxkPDw4fGQ8PDE2fGQ8PDI0O2c9ZiZ+MztpZihpKXtpPWIrNC1pfDA7d2hpbGUoKGJ8MCk8KGl8MCkpe2FbYj4+MF09ZDtiPWIrMXwwfX13aGlsZSgoYnwwKTwoZ3wwKSl7Y1tiPj4yXT1oO2I9Yis0fDB9fXdoaWxlKChifDApPChmfDApKXthW2I+PjBdPWQ7Yj1iKzF8MH1yZXR1cm4gYi1lfDB9ZnVuY3Rpb24gT24oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtJPWI8PGN8KGEmKDE8PGMpLTE8PDMyLWMpPj4+MzItYztyZXR1cm4gYTw8Y31JPWE8PGMtMzI7cmV0dXJuIDB9ZnVuY3Rpb24gUG4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtJPWI+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31JPShifDApPDA/LTE6MDtyZXR1cm4gYj4+Yy0zMnwwfWZ1bmN0aW9uIFFuKGIpe2I9YnwwO3ZhciBjPTA7Yz1hW24rKGI+Pj4yNCk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gY3wwO2M9YVtuKyhiPj4xNiYyNTUpPj4wXXwwO2lmKChjfDApPDgpcmV0dXJuIGMrOHwwO2M9YVtuKyhiPj44JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYysxNnwwO3JldHVybihhW24rKGImMjU1KT4+MF18MCkrMjR8MH1mdW5jdGlvbiBSbihiKXtiPWJ8MDt2YXIgYz0wO2M9YVttKyhiJjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gY3wwO2M9YVttKyhiPj44JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYys4fDA7Yz1hW20rKGI+PjE2JjI1NSk+PjBdfDA7aWYoKGN8MCk8OClyZXR1cm4gYysxNnwwO3JldHVybihhW20rKGI+Pj4yNCk+PjBdfDApKzI0fDB9ZnVuY3Rpb24gU24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9YSY2NTUzNTtkPWImNjU1MzU7Yz1lYShkLGYpfDA7ZT1hPj4+MTY7ZD0oYz4+PjE2KSsoZWEoZCxlKXwwKXwwO2I9Yj4+PjE2O2E9ZWEoYixmKXwwO3JldHVybihJPShkPj4+MTYpKyhlYShiLGUpfDApKygoKGQmNjU1MzUpK2F8MCk+Pj4xNil8MCxkK2E8PDE2fGMmNjU1MzV8MCl8MH1mdW5jdGlvbiBUbihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1iPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtpPSgoYnwwKTwwPy0xOjApPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtmPWQ+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2U9KChkfDApPDA/LTE6MCk+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2g9SG4oal5hLGleYixqLGkpfDA7Zz1JO2I9Zl5qO2E9ZV5pO2E9SG4oKFluKGgsZyxIbihmXmMsZV5kLGYsZSl8MCxJLDApfDApXmIsSV5hLGIsYSl8MDtyZXR1cm4gYXwwfWZ1bmN0aW9uIFVuKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtmPWk7aT1pKzh8MDtqPWZ8MDtoPWI+PjMxfCgoYnwwKTwwPy0xOjApPDwxO2c9KChifDApPDA/LTE6MCk+PjMxfCgoYnwwKTwwPy0xOjApPDwxO2w9ZT4+MzF8KChlfDApPDA/LTE6MCk8PDE7az0oKGV8MCk8MD8tMTowKT4+MzF8KChlfDApPDA/LTE6MCk8PDE7Yj1IbihoXmEsZ15iLGgsZyl8MDthPUk7WW4oYixhLEhuKGxeZCxrXmUsbCxrKXwwLEksail8MDthPUhuKGNbaj4+Ml1eaCxjW2orND4+Ml1eZyxoLGcpfDA7Yj1JO2k9ZjtyZXR1cm4oST1iLGEpfDB9ZnVuY3Rpb24gVm4oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZT1hO2Y9YzthPVNuKGUsZil8MDtjPUk7cmV0dXJuKEk9KGVhKGIsZil8MCkrKGVhKGQsZSl8MCkrY3xjJjAsYXwwfDApfDB9ZnVuY3Rpb24gV24oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7YT1ZbihhLGIsYyxkLDApfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiBYbihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MDtnPWk7aT1pKzh8MDtmPWd8MDtZbihhLGIsZCxlLGYpfDA7aT1nO3JldHVybihJPWNbZis0Pj4yXXwwLGNbZj4+Ml18MCl8MH1mdW5jdGlvbiBZbihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7aD1hO2o9YjtpPWo7bD1kO2c9ZTtrPWc7aWYoKGl8MCk9PTApe2c9KGZ8MCkhPTA7aWYoKGt8MCk9PTApe2lmKGcpe2NbZj4+Ml09KGg+Pj4wKSUobD4+PjApO2NbZis0Pj4yXT0wfWs9MDttPShoPj4+MCkvKGw+Pj4wKT4+PjA7cmV0dXJuKEk9ayxtKXwwfWVsc2V7aWYoIWcpe2w9MDttPTA7cmV0dXJuKEk9bCxtKXwwfWNbZj4+Ml09YXwwO2NbZis0Pj4yXT1iJjA7bD0wO209MDtyZXR1cm4oST1sLG0pfDB9fW09KGt8MCk9PTA7ZG97aWYoKGx8MCkhPTApe2lmKCFtKXtrPShRbihrfDApfDApLShRbihpfDApfDApfDA7aWYoaz4+PjA8PTMxKXttPWsrMXwwO2w9MzEta3wwO2E9ay0zMT4+MzE7aj1tO2I9aD4+PihtPj4+MCkmYXxpPDxsO2E9aT4+PihtPj4+MCkmYTtrPTA7bD1oPDxsO2JyZWFrfWlmKChmfDApPT0wKXtsPTA7bT0wO3JldHVybihJPWwsbSl8MH1jW2Y+PjJdPWF8MDtjW2YrND4+Ml09anxiJjA7bD0wO209MDtyZXR1cm4oST1sLG0pfDB9az1sLTF8MDtpZigoayZsfDApIT0wKXtsPShRbihsfDApfDApKzMzLShRbihpfDApfDApfDA7cD02NC1sfDA7bT0zMi1sfDA7bj1tPj4zMTtvPWwtMzJ8MDthPW8+PjMxO2o9bDtiPW0tMT4+MzEmaT4+PihvPj4+MCl8KGk8PG18aD4+PihsPj4+MCkpJmE7YT1hJmk+Pj4obD4+PjApO2s9aDw8cCZuO2w9KGk8PHB8aD4+PihvPj4+MCkpJm58aDw8bSZsLTMzPj4zMTticmVha31pZigoZnwwKSE9MCl7Y1tmPj4yXT1rJmg7Y1tmKzQ+PjJdPTB9aWYoKGx8MCk9PTEpe289anxiJjA7cD1hfDB8MDtyZXR1cm4oST1vLHApfDB9ZWxzZXtwPVJuKGx8MCl8MDtvPWk+Pj4ocD4+PjApfDA7cD1pPDwzMi1wfGg+Pj4ocD4+PjApfDA7cmV0dXJuKEk9byxwKXwwfX1lbHNle2lmKG0pe2lmKChmfDApIT0wKXtjW2Y+PjJdPShpPj4+MCklKGw+Pj4wKTtjW2YrND4+Ml09MH1vPTA7cD0oaT4+PjApLyhsPj4+MCk+Pj4wO3JldHVybihJPW8scCl8MH1pZigoaHwwKT09MCl7aWYoKGZ8MCkhPTApe2NbZj4+Ml09MDtjW2YrND4+Ml09KGk+Pj4wKSUoaz4+PjApfW89MDtwPShpPj4+MCkvKGs+Pj4wKT4+PjA7cmV0dXJuKEk9byxwKXwwfWw9ay0xfDA7aWYoKGwma3wwKT09MCl7aWYoKGZ8MCkhPTApe2NbZj4+Ml09YXwwO2NbZis0Pj4yXT1sJml8YiYwfW89MDtwPWk+Pj4oKFJuKGt8MCl8MCk+Pj4wKTtyZXR1cm4oST1vLHApfDB9az0oUW4oa3wwKXwwKS0oUW4oaXwwKXwwKXwwO2lmKGs+Pj4wPD0zMCl7YT1rKzF8MDtsPTMxLWt8MDtqPWE7Yj1pPDxsfGg+Pj4oYT4+PjApO2E9aT4+PihhPj4+MCk7az0wO2w9aDw8bDticmVha31pZigoZnwwKT09MCl7bz0wO3A9MDtyZXR1cm4oST1vLHApfDB9Y1tmPj4yXT1hfDA7Y1tmKzQ+PjJdPWp8YiYwO289MDtwPTA7cmV0dXJuKEk9byxwKXwwfX13aGlsZSgwKTtpZigoanwwKT09MCl7Zz1sO2U9MDtpPTB9ZWxzZXtoPWR8MHwwO2c9Z3xlJjA7ZT1JbihoLGcsLTEsLTEpfDA7ZD1JO2k9MDtkb3ttPWw7bD1rPj4+MzF8bDw8MTtrPWl8azw8MTttPWI8PDF8bT4+PjMxfDA7bj1iPj4+MzF8YTw8MXwwO0huKGUsZCxtLG4pfDA7cD1JO289cD4+MzF8KChwfDApPDA/LTE6MCk8PDE7aT1vJjE7Yj1IbihtLG4sbyZoLCgoKHB8MCk8MD8tMTowKT4+MzF8KChwfDApPDA/LTE6MCk8PDEpJmcpfDA7YT1JO2o9ai0xfDB9d2hpbGUoKGp8MCkhPTApO2c9bDtlPTB9aD0wO2lmKChmfDApIT0wKXtjW2Y+PjJdPWI7Y1tmKzQ+PjJdPWF9bz0oa3wwKT4+PjMxfChnfGgpPDwxfChoPDwxfGs+Pj4zMSkmMHxlO3A9KGs8PDF8MD4+PjMxKSYtMnxpO3JldHVybihJPW8scCl8MH0KCgoKZnVuY3Rpb24gT2koYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7bT1pO2k9aSsyMjR8MDtsPW0rOHwwO3M9bTtvPW0rMTkyfDA7ZD1tKzE4OHwwO2s9bSsxODR8MDtwPW0rMTgwfDA7dT1zO2NbdT4+Ml09Mzc7Y1t1KzQ+PjJdPTA7dT1zKzF8MDtxPWYrNHwwO3I9Y1txPj4yXXwwO2lmKChyJjIwNDh8MCkhPTApe2FbdT4+MF09NDM7dT1zKzJ8MH1pZigociY1MTJ8MCkhPTApe2FbdT4+MF09MzU7dT11KzF8MH10PXUrMnwwO2FbdT4+MF09MTA4O2FbdSsxPj4wXT0xMDg7dT1yJjc0O2Rve2lmKCh1fDApPT04KXtpZigociYxNjM4NHwwKT09MCl7YVt0Pj4wXT0xMjA7YnJlYWt9ZWxzZXthW3Q+PjBdPTg4O2JyZWFrfX1lbHNlIGlmKCh1fDApPT02NCl7YVt0Pj4wXT0xMTF9ZWxzZXthW3Q+PjBdPTExN319d2hpbGUoMCk7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXU9Y1szMzQwXXwwO3Q9bDtjW3Q+PjJdPWg7Y1t0KzQ+PjJdPWo7aD13aShvLDIzLHUscyxsKXwwO2o9bytofDA7cT1jW3E+PjJdJjE3Njtkb3tpZigocXwwKT09MzIpe3E9an1lbHNlIGlmKChxfDApPT0xNil7cT1hW28+PjBdfDA7aWYocTw8MjQ+PjI0PT00M3xxPDwyND4+MjQ9PTQ1KXtxPW8rMXwwO2JyZWFrfWlmKChofDApPjEmcTw8MjQ+PjI0PT00OD8odT1hW28rMT4+MF18MCx1PDwyND4+MjQ9PTg4fHU8PDI0Pj4yND09MTIwKTowKXtxPW8rMnwwfWVsc2V7bj0yMX19ZWxzZXtuPTIxfX13aGlsZSgwKTtpZigobnwwKT09MjEpe3E9b31uPWNbZisyOD4+Ml18MDtjW3A+PjJdPW47bj1uKzR8MDtjW24+PjJdPShjW24+PjJdfDApKzE7S2kobyxxLGosbCxkLGsscCk7bj1jW3A+PjJdfDA7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApIT0wKXtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWxjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKTtzPWNbZT4+Ml18MDt0PWNbZD4+Ml18MDt1PWNbaz4+Ml18MDtMaShiLHMsbCx0LHUsZixnKTtpPW07cmV0dXJufWZ1bmN0aW9uIFBpKGIsZCxlLGYsZyxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPStqO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO2w9aTtpPWkrMzA0fDA7cD1sO3U9bCsyMzJ8MDtyPWwrMjYwfDA7dD1sKzI0OHwwO2Q9bCsyNDR8MDtuPWwrMjQwfDA7bz1sKzI1MnwwO209bCsyNTZ8MDt2PXU7Y1t2Pj4yXT0zNztjW3YrND4+Ml09MDt2PXUrMXwwO3M9Zis0fDA7dz1jW3M+PjJdfDA7aWYoKHcmMjA0OHwwKSE9MCl7YVt2Pj4wXT00Mzt2PXUrMnwwfWlmKCh3JjEwMjR8MCkhPTApe2Fbdj4+MF09MzU7dj12KzF8MH14PXcmMjYwO3k9dz4+PjE0O2Rve2lmKCh4fDApPT0yNjApe2lmKCh5JjF8MCk9PTApe2Fbdj4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt2Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt2Pj4wXT00Njt3PXYrMnwwO2FbdisxPj4wXT00MjtpZigoeHwwKT09MjU2KXtpZigoeSYxfDApPT0wKXthW3c+PjBdPTEwMTt2PTE7YnJlYWt9ZWxzZXthW3c+PjBdPTY5O3Y9MTticmVha319ZWxzZSBpZigoeHwwKT09NCl7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDI7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MDt2PTE7YnJlYWt9fWVsc2V7aWYoKHkmMXwwKT09MCl7YVt3Pj4wXT0xMDM7dj0xO2JyZWFrfWVsc2V7YVt3Pj4wXT03MTt2PTE7YnJlYWt9fX19d2hpbGUoMCk7Y1t0Pj4yXT1yO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtpZih2KXtjW3A+PjJdPWNbZis4Pj4yXTt5PXArNHwwO2hbaz4+M109ajtjW3k+PjJdPWNbaz4+Ml07Y1t5KzQ+PjJdPWNbays0Pj4yXTt3PXdpKHIsMzAsdyx1LHApfDB9ZWxzZXtoW2s+PjNdPWo7Y1twPj4yXT1jW2s+PjJdO2NbcCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWlmKCh3fDApPjI5KXt3PShhWzEzMzY4XXwwKT09MDtpZih2KXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2NbcD4+Ml09Y1tmKzg+PjJdO3k9cCs0fDA7aFtrPj4zXT1qO2NbeT4+Ml09Y1trPj4yXTtjW3krND4+Ml09Y1trKzQ+PjJdO3c9Q2kodCx3LHUscCl8MH1lbHNle2lmKHc/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7Y1twPj4yXT1jW2YrOD4+Ml07eT1wKzR8MDtoW2s+PjNdPWo7Y1t5Pj4yXT1jW2s+PjJdO2NbeSs0Pj4yXT1jW2srND4+Ml07dz1DaSh0LHcsdSxwKXwwfXQ9Y1t0Pj4yXXwwO2lmKCh0fDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3Y9dH19ZWxzZXt2PWNbdD4+Ml18MDt0PTB9dT12K3d8MDtzPWNbcz4+Ml0mMTc2O2Rve2lmKChzfDApPT0zMil7cz11fWVsc2UgaWYoKHN8MCk9PTE2KXtzPWFbdj4+MF18MDtpZihzPDwyND4+MjQ9PTQzfHM8PDI0Pj4yND09NDUpe3M9disxfDA7YnJlYWt9aWYoKHd8MCk+MSZzPDwyND4+MjQ9PTQ4Pyh5PWFbdisxPj4wXXwwLHk8PDI0Pj4yND09ODh8eTw8MjQ+PjI0PT0xMjApOjApe3M9disyfDB9ZWxzZXtxPTQ4fX1lbHNle3E9NDh9fXdoaWxlKDApO2lmKChxfDApPT00OCl7cz12fWlmKCh2fDApIT0ocnwwKSl7cD11bih3PDwzKXwwO2lmKChwfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMjY4MDt3Yih5fDAsMjI3MjgsMjA2KX1lbHNle3I9djtxPXB9fWVsc2V7cT0wfXg9Y1tmKzI4Pj4yXXwwO2Nbbz4+Ml09eDt4PXgrNHwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtRaShyLHMsdSxwLGQsbixvKTtvPWNbbz4+Ml18MDt4PW8rNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKX1MaShtLGNbZT4+Ml18MCxwLGNbZD4+Ml18MCxjW24+PjJdfDAsZixnKTt5PWNbbT4+Ml18MDtjW2U+PjJdPXk7Y1tiPj4yXT15O2lmKChxfDApIT0wKXt2bihxKX1pZigodHwwKT09MCl7aT1sO3JldHVybn12bih0KTtpPWw7cmV0dXJufWZ1bmN0aW9uIFFpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO2s9aTtpPWkrMzJ8MDtvPWs7bD1rKzEyfDA7cT1jW2o+PjJdfDA7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW28+PjJdPTEzNDQ4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NDgsbyl9bT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dD1jW3ErOD4+Ml18MDtpZighKChjW3ErMTI+PjJdfDApLXQ+PjI+Pj4wPm0+Pj4wKSl7eT1YYSg0KXwwO2NbeT4+Ml09MjEzMDQ7d2IoeXwwLDIxMzc2LDE5Nil9bT1jW3QrKG08PDIpPj4yXXwwO2lmKChtfDApPT0wKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbaj4+Ml18MDtpZighKChjWzM0MDJdfDApPT0tMSkpe2Nbbz4+Ml09MTM2MDg7Y1tvKzQ+PjJdPTIwODtjW28rOD4+Ml09MDtjZygxMzYwOCxvKX1vPShjWzEzNjEyPj4yXXwwKSsgLTF8MDtxPWNbais4Pj4yXXwwO2lmKCEoKGNbaisxMj4+Ml18MCktcT4+Mj4+PjA+bz4+PjApKXt5PVhhKDQpfDA7Y1t5Pj4yXT0yMTMwNDt3Yih5fDAsMjEzNzYsMTk2KX1qPWNbcSsobzw8Mik+PjJdfDA7aWYoKGp8MCk9PTApe3k9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfW1jW2NbKGNbaj4+Ml18MCkrMjA+PjJdJjEyN10obCxqKTtjW2g+PjJdPWY7bz1hW2I+PjBdfDA7aWYobzw8MjQ+PjI0PT00M3xvPDwyND4+MjQ9PTQ1KXt5PXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLG8pfDA7dD1jW2g+PjJdfDA7Y1toPj4yXT10KzQ7Y1t0Pj4yXT15O3Q9YisxfDB9ZWxzZXt0PWJ9bz1lO2E6ZG97aWYoKChvLXR8MCk+MT8oYVt0Pj4wXXwwKT09NDg6MCk/KHA9dCsxfDAseT1hW3A+PjBdfDAseTw8MjQ+PjI0PT04OHx5PDwyND4+MjQ9PTEyMCk6MCl7eT14Y1tjWyhjW20+PjJdfDApKzQ0Pj4yXSY2M10obSw0OCl8MDt4PWNbaD4+Ml18MDtjW2g+PjJdPXgrNDtjW3g+PjJdPXk7dD10KzJ8MDt4PXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLGFbcD4+MF18MCl8MDt5PWNbaD4+Ml18MDtjW2g+PjJdPXkrNDtjW3k+PjJdPXg7aWYodD4+PjA8ZT4+PjApe3E9dDt3aGlsZSgxKXtwPWFbcT4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9eT1wPDwyND4+MjQ7aWYoISgoeSsgLTQ4fDApPj4+MDwxMCk/ISgoKHl8MzIpKyAtOTd8MCk+Pj4wPDYpOjApe3A9dDticmVhayBhfXE9cSsxfDA7aWYoIShxPj4+MDxlPj4+MCkpe3A9dDticmVha319fWVsc2V7cD10O3E9dH19ZWxzZXtzPTE1fX13aGlsZSgwKTtiOmRve2lmKChzfDApPT0xNSl7aWYodD4+PjA8ZT4+PjApe3E9dDt3aGlsZSgxKXtwPWFbcT4+MF18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9cz1xKzF8MDtpZighKCgocDw8MjQ+PjI0KSsgLTQ4fDApPj4+MDwxMCkpe3A9dDticmVhayBifWlmKHM+Pj4wPGU+Pj4wKXtxPXN9ZWxzZXtwPXQ7cT1zO2JyZWFrfX19ZWxzZXtwPXQ7cT10fX19d2hpbGUoMCk7cz1hW2w+PjBdfDA7aWYoKHMmMSk9PTApe3M9KHMmMjU1KT4+PjF9ZWxzZXtzPWNbbCs0Pj4yXXwwfWlmKChzfDApIT0wKXtpZigocHwwKSE9KHF8MCk/KHI9cSsgLTF8MCxyPj4+MD5wPj4+MCk6MCl7cz1wO2Rve3k9YVtzPj4wXXwwO2Fbcz4+MF09YVtyPj4wXXwwO2Fbcj4+MF09eTtzPXMrMXwwO3I9cisgLTF8MH13aGlsZShzPj4+MDxyPj4+MCl9dj1vY1tjWyhjW2o+PjJdfDApKzE2Pj4yXSYxMjddKGopfDA7aWYocD4+PjA8cT4+PjApe3Q9bCsxfDA7cj1sKzR8MDt1PWwrOHwwO3g9MDt3PTA7cz1wO3doaWxlKDEpe3k9YVsoKGFbbD4+MF0mMSk9PTA/dDpjW3U+PjJdfDApK3c+PjBdfDA7aWYoeTw8MjQ+PjI0PjAmKHh8MCk9PSh5PDwyND4+MjR8MCkpe3g9Y1toPj4yXXwwO2NbaD4+Ml09eCs0O2NbeD4+Ml09djt4PWFbbD4+MF18MDtpZigoeCYxKT09MCl7eT0oeCYyNTUpPj4+MX1lbHNle3k9Y1tyPj4yXXwwfXg9MDt3PSh3Pj4+MDwoeSsgLTF8MCk+Pj4wJjEpK3d8MH1BPXhjW2NbKGNbbT4+Ml18MCkrNDQ+PjJdJjYzXShtLGFbcz4+MF18MCl8MDt6PWNbaD4+Ml18MDt5PXorNHwwO2NbaD4+Ml09eTtjW3o+PjJdPUE7cz1zKzF8MDtpZighKHM+Pj4wPHE+Pj4wKSl7YnJlYWt9ZWxzZXt4PXgrMXwwfX19ZWxzZXt5PWNbaD4+Ml18MH1wPWYrKHAtYjw8Mil8MDtpZigocHwwKSE9KHl8MCk/KG49eSsgLTR8MCxuPj4+MD5wPj4+MCk6MCl7ZG97QT1jW3A+PjJdfDA7Y1twPj4yXT1jW24+PjJdO2Nbbj4+Ml09QTtwPXArNHwwO249bisgLTR8MH13aGlsZShwPj4+MDxuPj4+MCl9fWVsc2V7dWNbY1soY1ttPj4yXXwwKSs0OD4+Ml0mMzFdKG0scCxxLGNbaD4+Ml18MCl8MDt5PShjW2g+PjJdfDApKyhxLXA8PDIpfDA7Y1toPj4yXT15fWM6ZG97aWYocT4+PjA8ZT4+PjApe3doaWxlKDEpe249YVtxPj4wXXwwO2lmKG48PDI0Pj4yND09NDYpe2JyZWFrfXo9eGNbY1soY1ttPj4yXXwwKSs0ND4+Ml0mNjNdKG0sbil8MDtBPWNbaD4+Ml18MDt5PUErNHwwO2NbaD4+Ml09eTtjW0E+PjJdPXo7cT1xKzF8MDtpZighKHE+Pj4wPGU+Pj4wKSl7YnJlYWsgY319ej1vY1tjWyhjW2o+PjJdfDApKzEyPj4yXSYxMjddKGopfDA7QT1jW2g+PjJdfDA7eT1BKzR8MDtjW2g+PjJdPXk7Y1tBPj4yXT16O3E9cSsxfDB9fXdoaWxlKDApO3VjW2NbKGNbbT4+Ml18MCkrNDg+PjJdJjMxXShtLHEsZSx5KXwwO209KGNbaD4+Ml18MCkrKG8tcTw8Mil8MDtjW2g+PjJdPW07aWYoKGR8MCkhPShlfDApKXttPWYrKGQtYjw8Mil8MH1jW2c+PjJdPW07aWYoKGFbbD4+MF0mMSk9PTApe2k9aztyZXR1cm59Zz1jW2wrOD4+Ml18MDtpZigoZ3wwKT09MCl7aT1rO3JldHVybn12bihnKTtpPWs7cmV0dXJufWZ1bmN0aW9uIFJpKGIsZCxlLGYsZyxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPStqO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7bD1pO2k9aSszMDR8MDtwPWw7dT1sKzIzMnwwO3I9bCsyNjB8MDt0PWwrMjQ4fDA7bT1sKzI0NHwwO2Q9bCsyNDB8MDtvPWwrMjUyfDA7bj1sKzI1NnwwO3g9dTtjW3g+PjJdPTM3O2NbeCs0Pj4yXT0wO3g9dSsxfDA7cz1mKzR8MDt2PWNbcz4+Ml18MDtpZigodiYyMDQ4fDApIT0wKXthW3g+PjBdPTQzO3g9dSsyfDB9aWYoKHYmMTAyNHwwKSE9MCl7YVt4Pj4wXT0zNTt4PXgrMXwwfXc9diYyNjA7dj12Pj4+MTQ7ZG97aWYoKHd8MCk9PTI2MCl7YVt4Pj4wXT03Njt3PXgrMXwwO2lmKCh2JjF8MCk9PTApe2Fbdz4+MF09OTc7dj0wO2JyZWFrfWVsc2V7YVt3Pj4wXT02NTt2PTA7YnJlYWt9fWVsc2V7YVt4Pj4wXT00NjthW3grMT4+MF09NDI7YVt4KzI+PjBdPTc2O3g9eCszfDA7aWYoKHd8MCk9PTQpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAyO3Y9MTticmVha31lbHNle2FbeD4+MF09NzA7dj0xO2JyZWFrfX1lbHNlIGlmKCh3fDApPT0yNTYpe2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAxO3Y9MTticmVha31lbHNle2FbeD4+MF09Njk7dj0xO2JyZWFrfX1lbHNle2lmKCh2JjF8MCk9PTApe2FbeD4+MF09MTAzO3Y9MTticmVha31lbHNle2FbeD4+MF09NzE7dj0xO2JyZWFrfX19fXdoaWxlKDApO2NbdD4+Ml09cjtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9dz1jWzMzNDBdfDA7aWYodil7Y1twPj4yXT1jW2YrOD4+Ml07eD1wKzR8MDtoW2s+PjNdPWo7Y1t4Pj4yXT1jW2s+PjJdO2NbeCs0Pj4yXT1jW2srND4+Ml07dz13aShyLDMwLHcsdSxwKXwwfWVsc2V7aFtrPj4zXT1qO2NbcD4+Ml09Y1trPj4yXTtjW3ArND4+Ml09Y1trKzQ+PjJdO3c9d2kociwzMCx3LHUscCl8MH1pZigod3wwKT4yOSl7dz0oYVsxMzM2OF18MCk9PTA7aWYodil7aWYodz8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX13PWNbMzM0MF18MDtjW3A+PjJdPWNbZis4Pj4yXTt4PXArNHwwO2hbaz4+M109ajtjW3g+PjJdPWNbaz4+Ml07Y1t4KzQ+PjJdPWNbays0Pj4yXTt3PUNpKHQsdyx1LHApfDB9ZWxzZXtpZih3PyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXc9Y1szMzQwXXwwO2hbaz4+M109ajtjW3A+PjJdPWNbaz4+Ml07Y1twKzQ+PjJdPWNbays0Pj4yXTt3PUNpKHQsdyx1LHApfDB9dD1jW3Q+PjJdfDA7aWYoKHR8MCk9PTApe3g9WGEoNCl8MDtjW3g+PjJdPTIyNjgwO3diKHh8MCwyMjcyOCwyMDYpfWVsc2V7dj10fX1lbHNle3Y9Y1t0Pj4yXXwwO3Q9MH11PXYrd3wwO3M9Y1tzPj4yXSYxNzY7ZG97aWYoKHN8MCk9PTMyKXtzPXV9ZWxzZSBpZigoc3wwKT09MTYpe3M9YVt2Pj4wXXwwO2lmKHM8PDI0Pj4yND09NDN8czw8MjQ+PjI0PT00NSl7cz12KzF8MDticmVha31pZigod3wwKT4xJnM8PDI0Pj4yND09NDg/KHg9YVt2KzE+PjBdfDAseDw8MjQ+PjI0PT04OHx4PDwyND4+MjQ9PTEyMCk6MCl7cz12KzJ8MH1lbHNle3E9NDh9fWVsc2V7cT00OH19d2hpbGUoMCk7aWYoKHF8MCk9PTQ4KXtzPXZ9aWYoKHZ8MCkhPShyfDApKXtwPXVuKHc8PDMpfDA7aWYoKHB8MCk9PTApe3g9WGEoNCl8MDtjW3g+PjJdPTIyNjgwO3diKHh8MCwyMjcyOCwyMDYpfWVsc2V7cj12O3E9cH19ZWxzZXtxPTB9dz1jW2YrMjg+PjJdfDA7Y1tvPj4yXT13O3c9dys0fDA7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxO1FpKHIscyx1LHAsbSxkLG8pO289Y1tvPj4yXXwwO3c9bys0fDA7eD1jW3c+PjJdfDA7Y1t3Pj4yXT14KyAtMTtpZigoeHwwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfUxpKG4sY1tlPj4yXXwwLHAsY1ttPj4yXXwwLGNbZD4+Ml18MCxmLGcpO3g9Y1tuPj4yXXwwO2NbZT4+Ml09eDtjW2I+PjJdPXg7aWYoKHF8MCkhPTApe3ZuKHEpfWlmKCh0fDApPT0wKXtpPWw7cmV0dXJufXZuKHQpO2k9bDtyZXR1cm59ZnVuY3Rpb24gU2koYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO2Q9aTtpPWkrMTkyfDA7bj1kO289ZCsxODB8MDtrPWQrMTYwfDA7bD1kKzEyfDA7YVtvKzA+PjBdPWFbMTIyNzI+PjBdfDA7YVtvKzE+PjBdPWFbMTIyNzM+PjBdfDA7YVtvKzI+PjBdPWFbMTIyNzQ+PjBdfDA7YVtvKzM+PjBdPWFbMTIyNzU+PjBdfDA7YVtvKzQ+PjBdPWFbMTIyNzY+PjBdfDA7YVtvKzU+PjBdPWFbMTIyNzc+PjBdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfXA9Y1szMzQwXXwwO2Nbbj4+Ml09aDtvPXdpKGssMjAscCxvLG4pfDA7aD1rK298MDtwPWNbZis0Pj4yXSYxNzY7ZG97aWYoKHB8MCk9PTMyKXtwPWh9ZWxzZSBpZigocHwwKT09MTYpe3A9YVtrPj4wXXwwO2lmKHA8PDI0Pj4yND09NDN8cDw8MjQ+PjI0PT00NSl7cD1rKzF8MDticmVha31pZigob3wwKT4xJnA8PDI0Pj4yND09NDg/KHE9YVtrKzE+PjBdfDAscTw8MjQ+PjI0PT04OHxxPDwyND4+MjQ9PTEyMCk6MCl7cD1rKzJ8MH1lbHNle209MTF9fWVsc2V7bT0xMX19d2hpbGUoMCk7aWYoKG18MCk9PTExKXtwPWt9bT1jW2YrMjg+PjJdfDA7cT1tKzR8MDtjW3E+PjJdPShjW3E+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW24+PjJdPTEzNDQ4O2Nbbis0Pj4yXT0yMDg7Y1tuKzg+PjJdPTA7Y2coMTM0NDgsbil9cT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7bj1jW20rOD4+Ml18MDtpZigoY1ttKzEyPj4yXXwwKS1uPj4yPj4+MD5xPj4+MD8oaj1jW24rKHE8PDIpPj4yXXwwLChqfDApIT0wKTowKXtuPW0rNHwwO3E9Y1tuPj4yXXwwO2Nbbj4+Ml09cSsgLTE7aWYoKHF8MCk9PTApe2xjW2NbKGNbbT4+Ml18MCkrOD4+Ml0mMjU1XShtKX11Y1tjWyhjW2o+PjJdfDApKzQ4Pj4yXSYzMV0oaixrLGgsbCl8MDtqPWwrKG88PDIpfDA7aWYoKHB8MCk9PShofDApKXtxPWo7cD1jW2U+PjJdfDA7TGkoYixwLGwscSxqLGYsZyk7aT1kO3JldHVybn1xPWwrKHAtazw8Mil8MDtwPWNbZT4+Ml18MDtMaShiLHAsbCxxLGosZixnKTtpPWQ7cmV0dXJufXE9WGEoNCl8MDtjW3E+PjJdPTIxMzA0O3diKHF8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIFRpKGUsZixnLGgsaixrLGwsbSxuKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDt2YXIgbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO3A9aTtpPWkrMzJ8MDtxPXA7cj1wKzI0fDA7dT1wKzIwfDA7dD1wKzE2fDA7cz1wKzEyfDA7eT1jW2orMjg+PjJdfDA7RD15KzR8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3E+PjJdPTEzNDU2O2NbcSs0Pj4yXT0yMDg7Y1txKzg+PjJdPTA7Y2coMTM0NTYscSl9eD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7ej1jW3krOD4+Ml18MDtpZigoY1t5KzEyPj4yXXwwKS16Pj4yPj4+MD54Pj4+MD8odz1jW3orKHg8PDIpPj4yXXwwLCh3fDApIT0wKTowKXtDPXkrNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbeT4+Ml18MCkrOD4+Ml0mMjU1XSh5KX1jW2s+PjJdPTA7YTpkb3tpZigobXwwKSE9KG58MCkpe3g9dys4fDA7eT0wO2I6d2hpbGUoMSl7ej15O3k9Zzt3aGlsZSgxKXtpZigoenwwKSE9MCl7Zz15O2JyZWFrIGF9aWYoKHl8MCkhPTApe2lmKChjW3krMTI+PjJdfDApPT0oY1t5KzE2Pj4yXXwwKSl7RD0ob2NbY1soY1t5Pj4yXXwwKSszNj4+Ml0mMTI3XSh5KXwwKT09LTE7Zz1EPzA6eTt5PUQ/MDp5fWVsc2V7Zz15fX1lbHNle2c9MDt5PTB9ej0oZ3wwKT09MDtkb3tpZigoaHwwKSE9MCl7aWYoKGNbaCsxMj4+Ml18MCk9PShjW2grMTY+PjJdfDApPyhvY1tjWyhjW2g+PjJdfDApKzM2Pj4yXSYxMjddKGgpfDApPT0tMTowKXtvPTIwO2JyZWFrfWlmKCF6KXtvPTIxO2JyZWFrIGJ9fWVsc2V7bz0yMH19d2hpbGUoMCk7aWYoKG98MCk9PTIwKXtvPTA7aWYoeil7aD0wO289MjE7YnJlYWsgYn1lbHNle2g9MH19aWYoKGhjW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjYzXSh3LGFbbT4+MF18MCwwKXwwKTw8MjQ+PjI0PT0zNyl7bz0yMzticmVha316PWFbbT4+MF18MDtpZih6PDwyND4+MjQ+LTE/KHY9Y1t4Pj4yXXwwLCEoKGJbdisoejw8MjQ+PjI0PDwxKT4+MV0mODE5Mik9PTApKTowKXtvPTM0O2JyZWFrfXo9ZysxMnwwO0I9Y1t6Pj4yXXwwO0E9ZysxNnwwO2lmKChCfDApPT0oY1tBPj4yXXwwKSl7Qj1vY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSYxMjddKGcpfDB9ZWxzZXtCPWRbQj4+MF18MH1EPXhjW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjYzXSh3LEImMjU1KXwwO2lmKEQ8PDI0Pj4yND09KHhjW2NbKGNbdz4+Ml18MCkrMTI+PjJdJjYzXSh3LGFbbT4+MF18MCl8MCk8PDI0Pj4yNCl7bz01OTticmVha31jW2s+PjJdPTQ7ej00fWM6ZG97aWYoKG98MCk9PTIzKXtvPTA7ej1tKzF8MDtpZigoenwwKT09KG58MCkpe289MjQ7YnJlYWsgYn15PWhjW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjYzXSh3LGFbej4+MF18MCwwKXwwO2lmKHk8PDI0Pj4yND09NDh8eTw8MjQ+PjI0PT02OSl7ej1tKzJ8MDtpZigoenwwKT09KG58MCkpe289Mjc7YnJlYWsgYn1tPXo7ej1oY1tjWyhjW3c+PjJdfDApKzM2Pj4yXSY2M10odyxhW3o+PjBdfDAsMCl8MH1lbHNle209ejt6PXk7eT0wfUQ9Y1soY1tmPj4yXXwwKSszNj4+Ml18MDtjW3Q+PjJdPWc7Y1tzPj4yXT1oO2NbciswPj4yXT1jW3QrMD4+Ml07Y1txKzA+PjJdPWNbcyswPj4yXTtuY1tEJjMxXSh1LGYscixxLGosayxsLHoseSk7bT1tKzF8MDtnPWNbdT4+Ml18MH1lbHNlIGlmKChvfDApPT0zNCl7d2hpbGUoMSl7bz0wO209bSsxfDA7aWYoKG18MCk9PShufDApKXttPW47YnJlYWt9ej1hW20+PjBdfDA7aWYoISh6PDwyND4+MjQ+LTEpKXticmVha31pZigoYlt2Kyh6PDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7YnJlYWt9ZWxzZXtvPTM0fX1CPWg7QT1oO3doaWxlKDEpe2lmKChnfDApIT0wKXtpZigoY1tnKzEyPj4yXXwwKT09KGNbZysxNj4+Ml18MCkpe0Q9KG9jW2NbKGNbZz4+Ml18MCkrMzY+PjJdJjEyN10oZyl8MCk9PS0xO2c9RD8wOmc7eT1EPzA6eX19ZWxzZXtnPTB9Qz0oZ3wwKT09MDtkb3tpZigoQXwwKSE9MCl7aWYoKGNbQSsxMj4+Ml18MCkhPShjW0ErMTY+PjJdfDApKXtpZihDKXt6PUI7YnJlYWt9ZWxzZXtnPXk7YnJlYWsgY319aWYoISgob2NbY1soY1tBPj4yXXwwKSszNj4+Ml0mMTI3XShBKXwwKT09LTEpKXtpZihDXihCfDApPT0wKXt6PUI7QT1CfWVsc2V7Zz15O2JyZWFrIGN9fWVsc2V7ej0wO2g9MDtvPTQ1fX1lbHNle3o9QjtvPTQ1fX13aGlsZSgwKTtpZigob3wwKT09NDUpe289MDtpZihDKXtnPXk7YnJlYWsgY31lbHNle0E9MH19Qj1nKzEyfDA7RD1jW0I+PjJdfDA7Qz1nKzE2fDA7aWYoKER8MCk9PShjW0M+PjJdfDApKXtEPW9jW2NbKGNbZz4+Ml18MCkrMzY+PjJdJjEyN10oZyl8MH1lbHNle0Q9ZFtEPj4wXXwwfWlmKCEoKEQmMjU1KTw8MjQ+PjI0Pi0xKSl7Zz15O2JyZWFrIGN9aWYoKGJbKGNbeD4+Ml18MCkrKEQ8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXtnPXk7YnJlYWsgY31EPWNbQj4+Ml18MDtpZigoRHwwKT09KGNbQz4+Ml18MCkpe29jW2NbKGNbZz4+Ml18MCkrNDA+PjJdJjEyN10oZyl8MDtCPXo7Y29udGludWV9ZWxzZXtjW0I+PjJdPUQrMTtCPXo7Y29udGludWV9fX1lbHNlIGlmKChvfDApPT01OSl7bz0wO0I9Y1t6Pj4yXXwwO2lmKChCfDApPT0oY1tBPj4yXXwwKSl7b2NbY1soY1tnPj4yXXwwKSs0MD4+Ml0mMTI3XShnKXwwfWVsc2V7Y1t6Pj4yXT1CKzF9bT1tKzF8MDtnPXl9fXdoaWxlKDApO2lmKChtfDApPT0obnwwKSl7YnJlYWsgYX15PWNbaz4+Ml18MH1pZigob3wwKT09MjEpe2Nbaz4+Ml09NDticmVha31lbHNlIGlmKChvfDApPT0yNCl7Y1trPj4yXT00O2JyZWFrfWVsc2UgaWYoKG98MCk9PTI3KXtjW2s+PjJdPTQ7YnJlYWt9fX13aGlsZSgwKTtpZigoZ3wwKSE9MCl7aWYoKGNbZysxMj4+Ml18MCk9PShjW2crMTY+PjJdfDApKXtEPShvY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSYxMjddKGcpfDApPT0tMTtnPUQ/MDpnfX1lbHNle2c9MH1mPShnfDApPT0wO2Rve2lmKChofDApIT0wKXtpZigoY1toKzEyPj4yXXwwKT09KGNbaCsxNj4+Ml18MCk/KG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xOjApe289NzE7YnJlYWt9aWYoZil7Y1tlPj4yXT1nO2k9cDtyZXR1cm59fWVsc2V7bz03MX19d2hpbGUoMCk7aWYoKG98MCk9PTcxPyFmOjApe2NbZT4+Ml09ZztpPXA7cmV0dXJufWNbaz4+Ml09Y1trPj4yXXwyO2NbZT4+Ml09ZztpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIFVpKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFZpKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBXaShhKXthPWF8MDtyZXR1cm4gMn1mdW5jdGlvbiBYaShhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wO2o9aTtUaShhLGIsY1tkPj4yXXwwLGNbZT4+Ml18MCxmLGcsaCwxMjM3NiwxMjM4NHwwKTtpPWo7cmV0dXJufWZ1bmN0aW9uIFlpKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTA7az1pO209ZCs4fDA7bT1vY1tjWyhjW20+PjJdfDApKzIwPj4yXSYxMjddKG0pfDA7bj1hW20+PjBdfDA7aWYoKG4mMSk9PTApe2w9bSsxfDA7bT0obiYyNTUpPj4+MX1lbHNle2w9Y1ttKzg+PjJdfDA7bT1jW20rND4+Ml18MH1UaShiLGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaixsLGwrbXwwKTtpPWs7cmV0dXJufWZ1bmN0aW9uIFppKGEsYixkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTA7aj1pO2k9aSsxNnwwO2w9ajtmPWNbZisyOD4+Ml18MDttPWYrNHwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbbD4+Ml09MTM0NTY7Y1tsKzQ+PjJdPTIwODtjW2wrOD4+Ml09MDtjZygxMzQ1NixsKX1sPShjWzEzNDYwPj4yXXwwKSsgLTF8MDttPWNbZis4Pj4yXXwwO2lmKChjW2YrMTI+PjJdfDApLW0+PjI+Pj4wPmw+Pj4wPyhrPWNbbSsobDw8Mik+PjJdfDAsKGt8MCkhPTApOjApe2w9Zis0fDA7bT1jW2w+PjJdfDA7Y1tsPj4yXT1tKyAtMTtpZigobXwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfW09Y1tlPj4yXXwwO2I9Yis4fDA7Yj1vY1tjW2NbYj4+Ml0+PjJdJjEyN10oYil8MDtiPShNaChkLG0sYixiKzE2OHwwLGssZywwKXwwKS1ifDA7aWYoKGJ8MCk+PTE2OCl7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59Y1toKzI0Pj4yXT0oKGJ8MCkvMTJ8MHwwKSU3fDA7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59bT1YYSg0KXwwO2NbbT4+Ml09MjEzMDQ7d2IobXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gX2koYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MDtqPWk7aT1pKzE2fDA7bD1qO2Y9Y1tmKzI4Pj4yXXwwO209Zis0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tsPj4yXT0xMzQ1NjtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEzNDU2LGwpfWw9KGNbMTM0NjA+PjJdfDApKyAtMXwwO209Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7bD1mKzR8MDttPWNbbD4+Ml18MDtjW2w+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9bT1jW2U+PjJdfDA7Yj1iKzh8MDtiPW9jW2NbKGNbYj4+Ml18MCkrND4+Ml0mMTI3XShiKXwwO2I9KE1oKGQsbSxiLGIrMjg4fDAsayxnLDApfDApLWJ8MDtpZigoYnwwKT49Mjg4KXttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1jW2grMTY+PjJdPSgoYnwwKS8xMnwwfDApJTEyfDA7bT1jW2Q+PjJdfDA7Y1thPj4yXT1tO2k9ajtyZXR1cm59bT1YYSg0KXwwO2NbbT4+Ml09MjEzMDQ7d2IobXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gJGkoYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wO2I9aTtpPWkrMTZ8MDtrPWI7Zj1jW2YrMjg+PjJdfDA7bD1mKzR8MDtjW2w+PjJdPShjW2w+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW2s+PjJdPTEzNDU2O2Nbays0Pj4yXT0yMDg7Y1trKzg+PjJdPTA7Y2coMTM0NTYsayl9az0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7bD1jW2YrOD4+Ml18MDtpZigoY1tmKzEyPj4yXXwwKS1sPj4yPj4+MD5rPj4+MD8oaj1jW2wrKGs8PDIpPj4yXXwwLChqfDApIT0wKTowKXtrPWYrNHwwO2w9Y1trPj4yXXwwO2Nbaz4+Ml09bCsgLTE7aWYoKGx8MCk9PTApe2xjW2NbKGNbZj4+Ml18MCkrOD4+Ml0mMjU1XShmKX1lPWJqKGQsY1tlPj4yXXwwLGcsaiw0KXwwO2lmKChjW2c+PjJdJjR8MCkhPTApe2w9Y1tkPj4yXXwwO2NbYT4+Ml09bDtpPWI7cmV0dXJufWlmKChlfDApPDY5KXtnPWUrMmUzfDB9ZWxzZXtnPShlKyAtNjl8MCk+Pj4wPDMxP2UrMTkwMHwwOmV9Y1toKzIwPj4yXT1nKyAtMTkwMDtsPWNbZD4+Ml18MDtjW2E+PjJdPWw7aT1iO3JldHVybn1sPVhhKDQpfDA7Y1tsPj4yXT0yMTMwNDt3YihsfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBhaihlLGYsZyxoLGosayxsLG0sbil7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7dmFyIG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7bj1pO2k9aSs2NHwwO3c9bjtFPW4rMTZ8MDtyPW4rMjh8MDt1PW4rMjR8MDt2PW4rMzJ8MDt5PW4rMTJ8MDt6PW4rMjB8MDt4PW4rMzZ8MDtCPW4rNDB8MDt0PW4rNDR8MDtzPW4rNDh8MDtjW2s+PjJdPTA7QT1jW2orMjg+PjJdfDA7RD1BKzR8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3c+PjJdPTEzNDU2O2Nbdys0Pj4yXT0yMDg7Y1t3Kzg+PjJdPTA7Y2coMTM0NTYsdyl9Qz0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7RD1jW0ErOD4+Ml18MDtpZigoY1tBKzEyPj4yXXwwKS1EPj4yPj4+MD5DPj4+MD8ocD1jW0QrKEM8PDIpPj4yXXwwLChwfDApIT0wKTowKXtDPUErNHwwO0Q9Y1tDPj4yXXwwO2NbQz4+Ml09RCsgLTE7aWYoKER8MCk9PTApe2xjW2NbKGNbQT4+Ml18MCkrOD4+Ml0mMjU1XShBKX1hOmRve3N3aXRjaChtPDwyND4+MjR8MCl7Y2FzZSAxMTI6e289bCs4fDA7bD1jW2g+PjJdfDA7aD1mKzh8MDtoPW9jW2NbKGNbaD4+Ml18MCkrOD4+Ml0mMTI3XShoKXwwO2Y9YVtoPj4wXXwwO2lmKChmJjEpPT0wKXtmPShmJjI1NSk+Pj4xfWVsc2V7Zj1jW2grND4+Ml18MH1qPWFbaCsxMj4+MF18MDtpZigoaiYxKT09MCl7aj0oaiYyNTUpPj4+MX1lbHNle2o9Y1toKzE2Pj4yXXwwfWlmKChmfDApPT0oMC1qfDApKXtjW2s+PjJdPWNbaz4+Ml18NDticmVhayBhfUU9TWgoZyxsLGgsaCsyNHwwLHAsaywwKXwwO2s9RS1ofDA7aWYoKEV8MCk9PShofDApPyhjW28+PjJdfDApPT0xMjowKXtjW28+PjJdPTA7YnJlYWsgYX1pZigoa3wwKT09MTI/KHE9Y1tvPj4yXXwwLChxfDApPDEyKTowKXtjW28+PjJdPXErMTJ9YnJlYWt9O2Nhc2UgMTIwOntEPWNbKGNbZj4+Ml18MCkrMjA+PjJdfDA7Y1tCPj4yXT1jW2c+PjJdO2NbdD4+Ml09Y1toPj4yXTtjW0UrMD4+Ml09Y1tCKzA+PjJdO2NbdyswPj4yXT1jW3QrMD4+Ml07aWNbRCY2M10oZSxmLEUsdyxqLGssbCk7aT1uO3JldHVybn07Y2FzZSA4ODp7cT1mKzh8MDtxPW9jW2NbKGNbcT4+Ml18MCkrMjQ+PjJdJjEyN10ocSl8MDtwPWFbcT4+MF18MDtpZigocCYxKT09MCl7bz1xKzF8MDtwPShwJjI1NSk+Pj4xfWVsc2V7bz1jW3ErOD4+Ml18MDtwPWNbcSs0Pj4yXXwwfVRpKHMsZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLG8sbytwfDApO2NbZz4+Ml09Y1tzPj4yXTticmVha307Y2FzZSAxMjE6e289bCsyMHwwO2w9YmooZyxjW2g+PjJdfDAsayxwLDQpfDA7aWYoKGNbaz4+Ml0mNHwwKT09MCl7aWYoKGx8MCk8Njkpe2s9bCsyZTN8MH1lbHNle2s9KGwrIC02OXwwKT4+PjA8MzE/bCsxOTAwfDA6bH1jW28+PjJdPWsrIC0xOTAwfWJyZWFrfTtjYXNlIDgzOntvPWJqKGcsY1toPj4yXXwwLGsscCwyKXwwO3A9Y1trPj4yXXwwO2lmKChwJjR8MCk9PTAmKG98MCk8NjEpe2NbbD4+Ml09bzticmVhayBhfWVsc2V7Y1trPj4yXT1wfDQ7YnJlYWsgYX19O2Nhc2UgODI6e1RpKHosZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyNDE2LDEyNDIxfDApO2NbZz4+Ml09Y1t6Pj4yXTticmVha307Y2FzZSAxMTQ6e1RpKHksZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyNDAwLDEyNDExfDApO2NbZz4+Ml09Y1t5Pj4yXTticmVha307Y2FzZSA4OTp7bz1iaihnLGNbaD4+Ml18MCxrLHAsNCl8MDtpZigoY1trPj4yXSY0fDApPT0wKXtjW2wrMjA+PjJdPW8rIC0xOTAwfWJyZWFrfTtjYXNlIDM3OntsPWNbaD4+Ml18MDtoPWNbZz4+Ml18MDtkb3tpZigoaHwwKSE9MCl7aWYoKGNbaCsxMj4+Ml18MCk9PShjW2grMTY+PjJdfDApKXtpZigob2NbY1soY1toPj4yXXwwKSszNj4+Ml0mMTI3XShoKXwwKT09LTEpe2NbZz4+Ml09MDtoPTA7YnJlYWt9ZWxzZXtoPWNbZz4+Ml18MDticmVha319fWVsc2V7aD0wfX13aGlsZSgwKTtoPShofDApPT0wO2Rve2lmKChsfDApIT0wKXtpZigoY1tsKzEyPj4yXXwwKT09KGNbbCsxNj4+Ml18MCk/KG9jW2NbKGNbbD4+Ml18MCkrMzY+PjJdJjEyN10obCl8MCk9PS0xOjApe289MTE1O2JyZWFrfWlmKCFoKXtvPTExNn19ZWxzZXtvPTExNX19d2hpbGUoMCk7aWYoKG98MCk9PTExNSl7aWYoaCl7bz0xMTZ9ZWxzZXtsPTB9fWlmKChvfDApPT0xMTYpe2Nbaz4+Ml09Y1trPj4yXXw2O2JyZWFrIGF9aD1jW2c+PjJdfDA7Zj1jW2grMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2grMTY+PjJdfDApKXtoPW9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MH1lbHNle2g9ZFtmPj4wXXwwfWlmKCEoKGhjW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjYzXShwLGgmMjU1LDApfDApPDwyND4+MjQ9PTM3KSl7Y1trPj4yXT1jW2s+PjJdfDQ7YnJlYWsgYX1wPWNbZz4+Ml18MDtoPXArMTJ8MDtmPWNbaD4+Ml18MDtpZigoZnwwKT09KGNbcCsxNj4+Ml18MCkpe29jW2NbKGNbcD4+Ml18MCkrNDA+PjJdJjEyN10ocCl8MH1lbHNle2NbaD4+Ml09ZisxfXA9Y1tnPj4yXXwwO2Rve2lmKChwfDApIT0wKXtpZigoY1twKzEyPj4yXXwwKT09KGNbcCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjW3A+PjJdfDApKzM2Pj4yXSYxMjddKHApfDApPT0tMSl7Y1tnPj4yXT0wO3A9MDticmVha31lbHNle3A9Y1tnPj4yXXwwO2JyZWFrfX19ZWxzZXtwPTB9fXdoaWxlKDApO3A9KHB8MCk9PTA7ZG97aWYoKGx8MCkhPTApe2lmKChjW2wrMTI+PjJdfDApPT0oY1tsKzE2Pj4yXXwwKT8ob2NbY1soY1tsPj4yXXwwKSszNj4+Ml0mMTI3XShsKXwwKT09LTE6MCl7bz0xMzQ7YnJlYWt9aWYocCl7YnJlYWsgYX19ZWxzZXtvPTEzNH19d2hpbGUoMCk7aWYoKG98MCk9PTEzND8hcDowKXticmVhayBhfWNbaz4+Ml09Y1trPj4yXXwyO2JyZWFrfTtjYXNlIDg0OntUaSh4LGYsY1tnPj4yXXwwLGNbaD4+Ml18MCxqLGssbCwxMjQyNCwxMjQzMnwwKTtjW2c+PjJdPWNbeD4+Ml07YnJlYWt9O2Nhc2UgMTE5OntvPWJqKGcsY1toPj4yXXwwLGsscCwxKXwwO3A9Y1trPj4yXXwwO2lmKChwJjR8MCk9PTAmKG98MCk8Nyl7Y1tsKzI0Pj4yXT1vO2JyZWFrIGF9ZWxzZXtjW2s+PjJdPXB8NDticmVhayBhfX07Y2FzZSAxMDk6e289YmooZyxjW2g+PjJdfDAsayxwLDIpfDA7cD1jW2s+PjJdfDA7aWYoKHAmNHwwKT09MCYob3wwKTwxMyl7Y1tsKzE2Pj4yXT1vKyAtMTticmVhayBhfWVsc2V7Y1trPj4yXT1wfDQ7YnJlYWsgYX19O2Nhc2UgNzc6e289YmooZyxjW2g+PjJdfDAsayxwLDIpfDA7cD1jW2s+PjJdfDA7aWYoKHAmNHwwKT09MCYob3wwKTw2MCl7Y1tsKzQ+PjJdPW87YnJlYWsgYX1lbHNle2Nbaz4+Ml09cHw0O2JyZWFrIGF9fTtjYXNlIDEwNjp7bz1iaihnLGNbaD4+Ml18MCxrLHAsMyl8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wJihvfDApPDM2Nil7Y1tsKzI4Pj4yXT1vO2JyZWFrIGF9ZWxzZXtjW2s+PjJdPXB8NDticmVhayBhfX07Y2FzZSA3Mjp7cD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtvPWNbaz4+Ml18MDtpZigobyY0fDApPT0wJihwfDApPDI0KXtjW2wrOD4+Ml09cDticmVhayBhfWVsc2V7Y1trPj4yXT1vfDQ7YnJlYWsgYX19O2Nhc2UgNzA6e1RpKHYsZixjW2c+PjJdfDAsY1toPj4yXXwwLGosayxsLDEyMzkyLDEyNDAwfDApO2NbZz4+Ml09Y1t2Pj4yXTticmVha307Y2FzZSA2ODp7VGkodSxmLGNbZz4+Ml18MCxjW2g+PjJdfDAsaixrLGwsMTIzODQsMTIzOTJ8MCk7Y1tnPj4yXT1jW3U+PjJdO2JyZWFrfTtjYXNlIDEwNDpjYXNlIDY2OmNhc2UgOTg6e0Q9Y1toPj4yXXwwO0U9Zis4fDA7RT1vY1tjWyhjW0U+PjJdfDApKzQ+PjJdJjEyN10oRSl8MDtrPShNaChnLEQsRSxFKzI4OHwwLHAsaywwKXwwKS1FfDA7aWYoKGt8MCk8Mjg4KXtjW2wrMTY+PjJdPSgoa3wwKS8xMnwwfDApJTEyfDB9YnJlYWt9O2Nhc2UgNzM6e289bCs4fDA7bD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wPyhsKyAtMXwwKT4+PjA8MTI6MCl7Y1tvPj4yXT1sO2JyZWFrIGF9Y1trPj4yXT1wfDQ7YnJlYWt9O2Nhc2UgNjU6Y2FzZSA5Nzp7RD1jW2g+PjJdfDA7RT1mKzh8MDtFPW9jW2NbY1tFPj4yXT4+Ml0mMTI3XShFKXwwO2s9KE1oKGcsRCxFLEUrMTY4fDAscCxrLDApfDApLUV8MDtpZigoa3wwKTwxNjgpe2NbbCsyND4+Ml09KChrfDApLzEyfDB8MCklN3wwfWJyZWFrfTtjYXNlIDEwMTpjYXNlIDEwMDp7bz1sKzEyfDA7bD1iaihnLGNbaD4+Ml18MCxrLHAsMil8MDtwPWNbaz4+Ml18MDtpZigocCY0fDApPT0wPyhsKyAtMXwwKT4+PjA8MzE6MCl7Y1tvPj4yXT1sO2JyZWFrIGF9Y1trPj4yXT1wfDQ7YnJlYWt9O2Nhc2UgMTE2OmNhc2UgMTEwOntsPXArOHwwO3A9Y1toPj4yXXwwO2I6d2hpbGUoMSl7aD1jW2c+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKChjW2grMTI+PjJdfDApPT0oY1toKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xKXtjW2c+PjJdPTA7aD0wO2JyZWFrfWVsc2V7aD1jW2c+PjJdfDA7YnJlYWt9fX1lbHNle2g9MH19d2hpbGUoMCk7aD0oaHwwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCkhPShjW3ArMTY+PjJdfDApKXtpZihoKXticmVha31lbHNle2JyZWFrIGJ9fWlmKCEoKG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xKSl7aWYoIWgpe2JyZWFrIGJ9fWVsc2V7bz01MH19ZWxzZXtvPTUwfX13aGlsZSgwKTtpZigob3wwKT09NTApe289MDtpZihoKXtwPTA7YnJlYWt9ZWxzZXtwPTB9fWg9Y1tnPj4yXXwwO2Y9Y1toKzEyPj4yXXwwO2lmKChmfDApPT0oY1toKzE2Pj4yXXwwKSl7aD1vY1tjWyhjW2g+PjJdfDApKzM2Pj4yXSYxMjddKGgpfDB9ZWxzZXtoPWRbZj4+MF18MH1pZighKChoJjI1NSk8PDI0Pj4yND4tMSkpe2JyZWFrfWlmKChiWyhjW2w+PjJdfDApKyhoPDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7YnJlYWt9aj1jW2c+PjJdfDA7aD1qKzEyfDA7Zj1jW2g+PjJdfDA7aWYoKGZ8MCk9PShjW2orMTY+PjJdfDApKXtvY1tjWyhjW2o+PjJdfDApKzQwPj4yXSYxMjddKGopfDA7Y29udGludWV9ZWxzZXtjW2g+PjJdPWYrMTtjb250aW51ZX19bD1jW2c+PjJdfDA7ZG97aWYoKGx8MCkhPTApe2lmKChjW2wrMTI+PjJdfDApPT0oY1tsKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbbD4+Ml18MCkrMzY+PjJdJjEyN10obCl8MCk9PS0xKXtjW2c+PjJdPTA7bD0wO2JyZWFrfWVsc2V7bD1jW2c+PjJdfDA7YnJlYWt9fX1lbHNle2w9MH19d2hpbGUoMCk7bD0obHwwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCk9PShjW3ArMTY+PjJdfDApPyhvY1tjWyhjW3A+PjJdfDApKzM2Pj4yXSYxMjddKHApfDApPT0tMTowKXtvPTY5O2JyZWFrfWlmKGwpe2JyZWFrIGF9fWVsc2V7bz02OX19d2hpbGUoMCk7aWYoKG98MCk9PTY5PyFsOjApe2JyZWFrIGF9Y1trPj4yXT1jW2s+PjJdfDI7YnJlYWt9O2Nhc2UgOTk6e3E9Zis4fDA7cT1vY1tjWyhjW3E+PjJdfDApKzEyPj4yXSYxMjddKHEpfDA7cD1hW3E+PjBdfDA7aWYoKHAmMSk9PTApe289cSsxfDA7cD0ocCYyNTUpPj4+MX1lbHNle289Y1txKzg+PjJdfDA7cD1jW3ErND4+Ml18MH1UaShyLGYsY1tnPj4yXXwwLGNbaD4+Ml18MCxqLGssbCxvLG8rcHwwKTtjW2c+PjJdPWNbcj4+Ml07YnJlYWt9O2RlZmF1bHQ6e2Nbaz4+Ml09Y1trPj4yXXw0fX19d2hpbGUoMCk7Y1tlPj4yXT1jW2c+PjJdO2k9bjtyZXR1cm59RT1YYSg0KXwwO2NbRT4+Ml09MjEzMDQ7d2IoRXwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gYmooYSxlLGYsZyxoKXthPWF8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2o9aTtsPWNbYT4+Ml18MDtkb3tpZigobHwwKSE9MCl7aWYoKGNbbCsxMj4+Ml18MCk9PShjW2wrMTY+PjJdfDApKXtpZigob2NbY1soY1tsPj4yXXwwKSszNj4+Ml0mMTI3XShsKXwwKT09LTEpe2NbYT4+Ml09MDtsPTA7YnJlYWt9ZWxzZXtsPWNbYT4+Ml18MDticmVha319fWVsc2V7bD0wfX13aGlsZSgwKTtsPShsfDApPT0wO2Rve2lmKChlfDApIT0wKXtpZigoY1tlKzEyPj4yXXwwKT09KGNbZSsxNj4+Ml18MCk/KG9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MCk9PS0xOjApe209MTA7YnJlYWt9aWYoIWwpe209MTF9fWVsc2V7bT0xMH19d2hpbGUoMCk7aWYoKG18MCk9PTEwKXtpZihsKXttPTExfWVsc2V7ZT0wfX1pZigobXwwKT09MTEpe2NbZj4+Ml09Y1tmPj4yXXw2O3A9MDtpPWo7cmV0dXJuIHB8MH1tPWNbYT4+Ml18MDtsPWNbbSsxMj4+Ml18MDtpZigobHwwKT09KGNbbSsxNj4+Ml18MCkpe209b2NbY1soY1ttPj4yXXwwKSszNj4+Ml0mMTI3XShtKXwwfWVsc2V7bT1kW2w+PjBdfDB9bD1tJjI1NTtpZihsPDwyND4+MjQ+LTE/KGs9Zys4fDAsISgoYlsoY1trPj4yXXwwKSsobTw8MjQ+PjI0PDwxKT4+MV0mMjA0OCk9PTApKTowKXtsPShoY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSY2M10oZyxsLDApfDApPDwyND4+MjQ7bz1jW2E+PjJdfDA7bT1vKzEyfDA7bj1jW20+PjJdfDA7aWYoKG58MCk9PShjW28rMTY+PjJdfDApKXtvY1tjWyhjW28+PjJdfDApKzQwPj4yXSYxMjddKG8pfDA7bj1lO209ZX1lbHNle2NbbT4+Ml09bisxO249ZTttPWV9d2hpbGUoMSl7bD1sKyAtNDh8MDtoPWgrIC0xfDA7ZT1jW2E+PjJdfDA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApPT0oY1tlKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MCk9PS0xKXtjW2E+PjJdPTA7ZT0wO2JyZWFrfWVsc2V7ZT1jW2E+PjJdfDA7YnJlYWt9fX1lbHNle2U9MH19d2hpbGUoMCk7bz0oZXwwKT09MDtpZigobXwwKSE9MCl7aWYoKGNbbSsxMj4+Ml18MCk9PShjW20rMTY+PjJdfDApKXttPShvY1tjWyhjW20+PjJdfDApKzM2Pj4yXSYxMjddKG0pfDApPT0tMTtlPW0/MDpuO209bT8wOm59ZWxzZXtlPW59fWVsc2V7ZT1uO209MH1uPWNbYT4+Ml18MDtpZighKChvXihtfDApPT0wKSYoaHwwKT4wKSl7bT0zODticmVha31vPWNbbisxMj4+Ml18MDtpZigob3wwKT09KGNbbisxNj4+Ml18MCkpe249b2NbY1soY1tuPj4yXXwwKSszNj4+Ml0mMTI3XShuKXwwfWVsc2V7bj1kW28+PjBdfDB9bz1uJjI1NTtpZighKG88PDI0Pj4yND4tMSkpe209NDk7YnJlYWt9aWYoKGJbKGNbaz4+Ml18MCkrKG48PDI0Pj4yNDw8MSk+PjFdJjIwNDgpPT0wKXttPTQ5O2JyZWFrfWw9KChoY1tjWyhjW2c+PjJdfDApKzM2Pj4yXSY2M10oZyxvLDApfDApPDwyND4+MjQpKyhsKjEwfDApfDA7bj1jW2E+PjJdfDA7cD1uKzEyfDA7bz1jW3A+PjJdfDA7aWYoKG98MCk9PShjW24rMTY+PjJdfDApKXtvY1tjWyhjW24+PjJdfDApKzQwPj4yXSYxMjddKG4pfDA7bj1lO2NvbnRpbnVlfWVsc2V7Y1twPj4yXT1vKzE7bj1lO2NvbnRpbnVlfX1pZigobXwwKT09Mzgpe2Rve2lmKChufDApIT0wKXtpZigoY1tuKzEyPj4yXXwwKT09KGNbbisxNj4+Ml18MCkpe2lmKChvY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDApPT0tMSl7Y1thPj4yXT0wO249MDticmVha31lbHNle249Y1thPj4yXXwwO2JyZWFrfX19ZWxzZXtuPTB9fXdoaWxlKDApO2c9KG58MCk9PTA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApPT0oY1tlKzE2Pj4yXXwwKT8ob2NbY1soY1tlPj4yXXwwKSszNj4+Ml0mMTI3XShlKXwwKT09LTE6MCl7bT00NzticmVha31pZihnKXtwPWw7aT1qO3JldHVybiBwfDB9fWVsc2V7bT00N319d2hpbGUoMCk7aWYoKG18MCk9PTQ3PyFnOjApe3A9bDtpPWo7cmV0dXJuIHB8MH1jW2Y+PjJdPWNbZj4+Ml18MjtwPWw7aT1qO3JldHVybiBwfDB9ZWxzZSBpZigobXwwKT09NDkpe2k9ajtyZXR1cm4gbHwwfX1jW2Y+PjJdPWNbZj4+Ml18NDtwPTA7aT1qO3JldHVybiBwfDB9ZnVuY3Rpb24gY2ooYSxiLGQsZSxmLGcsaCxqLGspe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO209aTtpPWkrMzJ8MDtvPW07cD1tKzI0fDA7bj1tKzIwfDA7cj1tKzE2fDA7cT1tKzEyfDA7dD1jW2YrMjg+PjJdfDA7eT10KzR8MDtjW3k+PjJdPShjW3k+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW28+PjJdPTEzNDQ4O2Nbbys0Pj4yXT0yMDg7Y1tvKzg+PjJdPTA7Y2coMTM0NDgsbyl9dT0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dj1jW3QrOD4+Ml18MDtpZigoY1t0KzEyPj4yXXwwKS12Pj4yPj4+MD51Pj4+MD8ocz1jW3YrKHU8PDIpPj4yXXwwLChzfDApIT0wKTowKXt4PXQrNHwwO3k9Y1t4Pj4yXXwwO2NbeD4+Ml09eSsgLTE7aWYoKHl8MCk9PTApe2xjW2NbKGNbdD4+Ml18MCkrOD4+Ml0mMjU1XSh0KX1jW2c+PjJdPTA7YTpkb3tpZigoanwwKSE9KGt8MCkpe3Q9MDtiOndoaWxlKDEpe3U9dDt0PWQ7d2hpbGUoMSl7aWYoKHV8MCkhPTApe2Q9dDticmVhayBhfWlmKCh0fDApPT0wKXt1PTE7ZD0wO3Q9MH1lbHNle2Q9Y1t0KzEyPj4yXXwwO2lmKChkfDApPT0oY1t0KzE2Pj4yXXwwKSl7ZD1vY1tjWyhjW3Q+PjJdfDApKzM2Pj4yXSYxMjddKHQpfDB9ZWxzZXtkPWNbZD4+Ml18MH15PShkfDApPT0tMTt1PXk/MTowO2Q9eT8wOnQ7dD15PzA6dH1pZigoZXwwKSE9MCl7dj1jW2UrMTI+PjJdfDA7aWYoKHZ8MCk9PShjW2UrMTY+PjJdfDApKXt2PW9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MH1lbHNle3Y9Y1t2Pj4yXXwwfWlmKCEoKHZ8MCk9PS0xKSl7aWYoIXUpe2w9MjU7YnJlYWsgYn19ZWxzZXtsPTIzfX1lbHNle2w9MjN9aWYoKGx8MCk9PTIzKXtsPTA7aWYodSl7ZT0wO2w9MjU7YnJlYWsgYn1lbHNle2U9MH19aWYoKGhjW2NbKGNbcz4+Ml18MCkrNTI+PjJdJjYzXShzLGNbaj4+Ml18MCwwKXwwKTw8MjQ+PjI0PT0zNyl7bD0yNzticmVha31pZihoY1tjWyhjW3M+PjJdfDApKzEyPj4yXSY2M10ocyw4MTkyLGNbaj4+Ml18MCl8MCl7bD0zNzticmVha311PWQrMTJ8MDt3PWNbdT4+Ml18MDt2PWQrMTZ8MDtpZigod3wwKT09KGNbdj4+Ml18MCkpe3c9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7dz1jW3c+PjJdfDB9eT14Y1tjWyhjW3M+PjJdfDApKzI4Pj4yXSY2M10ocyx3KXwwO2lmKCh5fDApPT0oeGNbY1soY1tzPj4yXXwwKSsyOD4+Ml0mNjNdKHMsY1tqPj4yXXwwKXwwKSl7bD02MzticmVha31jW2c+PjJdPTQ7dT00fWM6ZG97aWYoKGx8MCk9PTI3KXtsPTA7dT1qKzR8MDtpZigodXwwKT09KGt8MCkpe2w9Mjg7YnJlYWsgYn10PWhjW2NbKGNbcz4+Ml18MCkrNTI+PjJdJjYzXShzLGNbdT4+Ml18MCwwKXwwO2lmKHQ8PDI0Pj4yND09NDh8dDw8MjQ+PjI0PT02OSl7dT1qKzh8MDtpZigodXwwKT09KGt8MCkpe2w9MzE7YnJlYWsgYn1qPXU7dT1oY1tjWyhjW3M+PjJdfDApKzUyPj4yXSY2M10ocyxjW3U+PjJdfDAsMCl8MH1lbHNle2o9dTt1PXQ7dD0wfXk9Y1soY1tiPj4yXXwwKSszNj4+Ml18MDtjW3I+PjJdPWQ7Y1txPj4yXT1lO2NbcCswPj4yXT1jW3IrMD4+Ml07Y1tvKzA+PjJdPWNbcSswPj4yXTtuY1t5JjMxXShuLGIscCxvLGYsZyxoLHUsdCk7aj1qKzR8MDtkPWNbbj4+Ml18MH1lbHNlIGlmKChsfDApPT0zNyl7d2hpbGUoMSl7bD0wO2o9ais0fDA7aWYoKGp8MCk9PShrfDApKXtqPWs7YnJlYWt9aWYoaGNbY1soY1tzPj4yXXwwKSsxMj4+Ml0mNjNdKHMsODE5MixjW2o+PjJdfDApfDApe2w9Mzd9ZWxzZXticmVha319dT1lO3c9ZTt3aGlsZSgxKXtpZigoZHwwKT09MCl7dj0xO2Q9MH1lbHNle3Y9Y1tkKzEyPj4yXXwwO2lmKCh2fDApPT0oY1tkKzE2Pj4yXXwwKSl7dj1vY1tjWyhjW2Q+PjJdfDApKzM2Pj4yXSYxMjddKGQpfDB9ZWxzZXt2PWNbdj4+Ml18MH15PSh2fDApPT0tMTt2PXk/MTowO2Q9eT8wOmQ7dD15PzA6dH1pZigod3wwKSE9MCl7eD1jW3crMTI+PjJdfDA7aWYoKHh8MCk9PShjW3crMTY+PjJdfDApKXt3PW9jW2NbKGNbdz4+Ml18MCkrMzY+PjJdJjEyN10odyl8MH1lbHNle3c9Y1t4Pj4yXXwwfWlmKCEoKHd8MCk9PS0xKSl7aWYodl4odXwwKT09MCl7dj11O3c9dX1lbHNle2Q9dDticmVhayBjfX1lbHNle3U9MDtlPTA7bD01MH19ZWxzZXtsPTUwfWlmKChsfDApPT01MCl7bD0wO2lmKHYpe2Q9dDticmVhayBjfWVsc2V7dj11O3c9MH19eD1kKzEyfDA7eT1jW3g+PjJdfDA7dT1kKzE2fDA7aWYoKHl8MCk9PShjW3U+PjJdfDApKXt5PW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle3k9Y1t5Pj4yXXwwfWlmKCEoaGNbY1soY1tzPj4yXXwwKSsxMj4+Ml0mNjNdKHMsODE5Mix5KXwwKSl7ZD10O2JyZWFrIGN9eT1jW3g+PjJdfDA7aWYoKHl8MCk9PShjW3U+PjJdfDApKXtvY1tjWyhjW2Q+PjJdfDApKzQwPj4yXSYxMjddKGQpfDA7dT12O2NvbnRpbnVlfWVsc2V7Y1t4Pj4yXT15KzQ7dT12O2NvbnRpbnVlfX19ZWxzZSBpZigobHwwKT09NjMpe2w9MDt3PWNbdT4+Ml18MDtpZigod3wwKT09KGNbdj4+Ml18MCkpe29jW2NbKGNbZD4+Ml18MCkrNDA+PjJdJjEyN10oZCl8MH1lbHNle2NbdT4+Ml09dys0fWo9ais0fDA7ZD10fX13aGlsZSgwKTtpZigoanwwKT09KGt8MCkpe2JyZWFrIGF9dD1jW2c+PjJdfDB9aWYoKGx8MCk9PTI1KXtjW2c+PjJdPTQ7YnJlYWt9ZWxzZSBpZigobHwwKT09Mjgpe2NbZz4+Ml09NDticmVha31lbHNlIGlmKChsfDApPT0zMSl7Y1tnPj4yXT00O2JyZWFrfX19d2hpbGUoMCk7aWYoKGR8MCk9PTApe249MDtvPTF9ZWxzZXtuPWNbZCsxMj4+Ml18MDtpZigobnwwKT09KGNbZCsxNj4+Ml18MCkpe249b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7bj1jW24+PjJdfDB9bz0obnwwKT09LTE7bj1vPzA6ZDtvPW8/MTowfWlmKChlfDApIT0wKXtwPWNbZSsxMj4+Ml18MDtpZigocHwwKT09KGNbZSsxNj4+Ml18MCkpe3A9b2NbY1soY1tlPj4yXXwwKSszNj4+Ml0mMTI3XShlKXwwfWVsc2V7cD1jW3A+PjJdfDB9aWYoISgocHwwKT09LTEpKXtpZihvKXtjW2E+PjJdPW47aT1tO3JldHVybn19ZWxzZXtsPTc4fX1lbHNle2w9Nzh9aWYoKGx8MCk9PTc4PyFvOjApe2NbYT4+Ml09bjtpPW07cmV0dXJufWNbZz4+Ml09Y1tnPj4yXXwyO2NbYT4+Ml09bjtpPW07cmV0dXJufXk9WGEoNCl8MDtjW3k+PjJdPTIxMzA0O3diKHl8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIGRqKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIGVqKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBmaihhKXthPWF8MDtyZXR1cm4gMn1mdW5jdGlvbiBnaihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wO2o9aTtjaihhLGIsY1tkPj4yXXwwLGNbZT4+Ml18MCxmLGcsaCwxMjUyOCwxMjU2MHwwKTtpPWo7cmV0dXJufWZ1bmN0aW9uIGhqKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTA7az1pO209ZCs4fDA7bT1vY1tjWyhjW20+PjJdfDApKzIwPj4yXSYxMjddKG0pfDA7bj1hW20+PjBdfDA7aWYoKG4mMSk9PTApe2w9bSs0fDA7bT0obiYyNTUpPj4+MX1lbHNle2w9Y1ttKzg+PjJdfDA7bT1jW20rND4+Ml18MH1jaihiLGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaixsLGwrKG08PDIpfDApO2k9aztyZXR1cm59ZnVuY3Rpb24gaWooYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MDtqPWk7aT1pKzE2fDA7bD1qO2Y9Y1tmKzI4Pj4yXXwwO209Zis0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2lmKCEoKGNbMzM2Ml18MCk9PS0xKSl7Y1tsPj4yXT0xMzQ0ODtjW2wrND4+Ml09MjA4O2NbbCs4Pj4yXT0wO2NnKDEzNDQ4LGwpfWw9KGNbMTM0NTI+PjJdfDApKyAtMXwwO209Y1tmKzg+PjJdfDA7aWYoKGNbZisxMj4+Ml18MCktbT4+Mj4+PjA+bD4+PjA/KGs9Y1ttKyhsPDwyKT4+Ml18MCwoa3wwKSE9MCk6MCl7bD1mKzR8MDttPWNbbD4+Ml18MDtjW2w+PjJdPW0rIC0xO2lmKChtfDApPT0wKXtsY1tjWyhjW2Y+PjJdfDApKzg+PjJdJjI1NV0oZil9bT1jW2U+PjJdfDA7Yj1iKzh8MDtiPW9jW2NbY1tiPj4yXT4+Ml0mMTI3XShiKXwwO2I9KGFpKGQsbSxiLGIrMTY4fDAsayxnLDApfDApLWJ8MDtpZigoYnwwKT49MTY4KXttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1jW2grMjQ+PjJdPSgoYnwwKS8xMnwwfDApJTd8MDttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBqaihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wO2o9aTtpPWkrMTZ8MDtsPWo7Zj1jW2YrMjg+PjJdfDA7bT1mKzR8MDtjW20+PjJdPShjW20+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW2w+PjJdPTEzNDQ4O2NbbCs0Pj4yXT0yMDg7Y1tsKzg+PjJdPTA7Y2coMTM0NDgsbCl9bD0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7bT1jW2YrOD4+Ml18MDtpZigoY1tmKzEyPj4yXXwwKS1tPj4yPj4+MD5sPj4+MD8oaz1jW20rKGw8PDIpPj4yXXwwLChrfDApIT0wKTowKXtsPWYrNHwwO209Y1tsPj4yXXwwO2NbbD4+Ml09bSsgLTE7aWYoKG18MCk9PTApe2xjW2NbKGNbZj4+Ml18MCkrOD4+Ml0mMjU1XShmKX1tPWNbZT4+Ml18MDtiPWIrOHwwO2I9b2NbY1soY1tiPj4yXXwwKSs0Pj4yXSYxMjddKGIpfDA7Yj0oYWkoZCxtLGIsYisyODh8MCxrLGcsMCl8MCktYnwwO2lmKChifDApPj0yODgpe209Y1tkPj4yXXwwO2NbYT4+Ml09bTtpPWo7cmV0dXJufWNbaCsxNj4+Ml09KChifDApLzEyfDB8MCklMTJ8MDttPWNbZD4+Ml18MDtjW2E+PjJdPW07aT1qO3JldHVybn1tPVhhKDQpfDA7Y1ttPj4yXT0yMTMwNDt3YihtfDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBraihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTA7Yj1pO2k9aSsxNnwwO2s9YjtmPWNbZisyOD4+Ml18MDtsPWYrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2Nbaz4+Ml09MTM0NDg7Y1trKzQ+PjJdPTIwODtjW2srOD4+Ml09MDtjZygxMzQ0OCxrKX1rPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtsPWNbZis4Pj4yXXwwO2lmKChjW2YrMTI+PjJdfDApLWw+PjI+Pj4wPms+Pj4wPyhqPWNbbCsoazw8Mik+PjJdfDAsKGp8MCkhPTApOjApe2s9Zis0fDA7bD1jW2s+PjJdfDA7Y1trPj4yXT1sKyAtMTtpZigobHwwKT09MCl7bGNbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGYpfWU9bWooZCxjW2U+PjJdfDAsZyxqLDQpfDA7aWYoKGNbZz4+Ml0mNHwwKSE9MCl7bD1jW2Q+PjJdfDA7Y1thPj4yXT1sO2k9YjtyZXR1cm59aWYoKGV8MCk8Njkpe2c9ZSsyZTN8MH1lbHNle2c9KGUrIC02OXwwKT4+PjA8MzE/ZSsxOTAwfDA6ZX1jW2grMjA+PjJdPWcrIC0xOTAwO2w9Y1tkPj4yXXwwO2NbYT4+Ml09bDtpPWI7cmV0dXJufWw9WGEoNCl8MDtjW2w+PjJdPTIxMzA0O3diKGx8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIGxqKGIsZCxlLGYsZyxoLGosayxsKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtsPWk7aT1pKzY0fDA7eT1sO3g9bCsxNnwwO3A9bCsyOHwwO3Y9bCsyNHwwO3c9bCszMnwwO0M9bCsxMnwwO3I9bCsyMHwwO3M9bCszNnwwO3Q9bCs0MHwwO3o9bCs0NHwwO3E9bCs0OHwwO2NbaD4+Ml09MDt1PWNbZysyOD4+Ml18MDtCPXUrNHwwO2NbQj4+Ml09KGNbQj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbeT4+Ml09MTM0NDg7Y1t5KzQ+PjJdPTIwODtjW3krOD4+Ml09MDtjZygxMzQ0OCx5KX1BPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtCPWNbdSs4Pj4yXXwwO2lmKChjW3UrMTI+PjJdfDApLUI+PjI+Pj4wPkE+Pj4wPyhuPWNbQisoQTw8Mik+PjJdfDAsKG58MCkhPTApOjApe0E9dSs0fDA7Qj1jW0E+PjJdfDA7Y1tBPj4yXT1CKyAtMTtpZigoQnwwKT09MCl7bGNbY1soY1t1Pj4yXXwwKSs4Pj4yXSYyNTVdKHUpfWE6ZG97c3dpdGNoKGs8PDI0Pj4yNHwwKXtjYXNlIDgzOntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8NjEpe2Nbaj4+Ml09bjticmVhayBhfWVsc2V7Y1toPj4yXT1tfDQ7YnJlYWsgYX19O2Nhc2UgODQ6e2NqKHMsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLDEyNjk2LDEyNzI4fDApO2NbZT4+Ml09Y1tzPj4yXTticmVha307Y2FzZSA4Mjp7Y2oocixkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosMTI2NzIsMTI2OTJ8MCk7Y1tlPj4yXT1jW3I+PjJdO2JyZWFrfTtjYXNlIDExMjp7bT1qKzh8MDtqPWNbZj4+Ml18MDtmPWQrOHwwO2Y9b2NbY1soY1tmPj4yXXwwKSs4Pj4yXSYxMjddKGYpfDA7ZD1hW2Y+PjBdfDA7aWYoKGQmMSk9PTApe2Q9KGQmMjU1KT4+PjF9ZWxzZXtkPWNbZis0Pj4yXXwwfWc9YVtmKzEyPj4wXXwwO2lmKChnJjEpPT0wKXtnPShnJjI1NSk+Pj4xfWVsc2V7Zz1jW2YrMTY+PjJdfDB9aWYoKGR8MCk9PSgwLWd8MCkpe2NbaD4+Ml09Y1toPj4yXXw0O2JyZWFrIGF9Qz1haShlLGosZixmKzI0fDAsbixoLDApfDA7aD1DLWZ8MDtpZigoQ3wwKT09KGZ8MCk/KGNbbT4+Ml18MCk9PTEyOjApe2NbbT4+Ml09MDticmVhayBhfWlmKChofDApPT0xMj8obz1jW20+PjJdfDAsKG98MCk8MTIpOjApe2NbbT4+Ml09bysxMn1icmVha307Y2FzZSAxMTQ6e2NqKEMsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLDEyNjI0LDEyNjY4fDApO2NbZT4+Ml09Y1tDPj4yXTticmVha307Y2FzZSAxMjA6e0M9Y1soY1tkPj4yXXwwKSsyMD4+Ml18MDtjW3Q+PjJdPWNbZT4+Ml07Y1t6Pj4yXT1jW2Y+PjJdO2NbeCswPj4yXT1jW3QrMD4+Ml07Y1t5KzA+PjJdPWNbeiswPj4yXTtpY1tDJjYzXShiLGQseCx5LGcsaCxqKTtpPWw7cmV0dXJufTtjYXNlIDg4OntvPWQrOHwwO289b2NbY1soY1tvPj4yXXwwKSsyND4+Ml0mMTI3XShvKXwwO249YVtvPj4wXXwwO2lmKChuJjEpPT0wKXttPW8rNHwwO249KG4mMjU1KT4+PjF9ZWxzZXttPWNbbys4Pj4yXXwwO249Y1tvKzQ+PjJdfDB9Y2oocSxkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosbSxtKyhuPDwyKXwwKTtjW2U+PjJdPWNbcT4+Ml07YnJlYWt9O2Nhc2UgMTE5OntuPW1qKGUsY1tmPj4yXXwwLGgsbiwxKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8Nyl7Y1tqKzI0Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMjE6e209aisyMHwwO249bWooZSxjW2Y+PjJdfDAsaCxuLDQpfDA7aWYoKGNbaD4+Ml0mNHwwKT09MCl7aWYoKG58MCk8Njkpe2g9bisyZTN8MH1lbHNle2g9KG4rIC02OXwwKT4+PjA8MzE/bisxOTAwfDA6bn1jW20+PjJdPWgrIC0xOTAwfWJyZWFrfTtjYXNlIDg5OnttPW1qKGUsY1tmPj4yXXwwLGgsbiw0KXwwO2lmKChjW2g+PjJdJjR8MCk9PTApe2NbaisyMD4+Ml09bSsgLTE5MDB9YnJlYWt9O2Nhc2UgMzc6e2o9Y1tmPj4yXXwwO2Y9Y1tlPj4yXXwwO2Rve2lmKChmfDApIT0wKXtkPWNbZisxMj4+Ml18MDtpZigoZHwwKT09KGNbZisxNj4+Ml18MCkpe2Y9b2NbY1soY1tmPj4yXXwwKSszNj4+Ml0mMTI3XShmKXwwfWVsc2V7Zj1jW2Q+PjJdfDB9aWYoKGZ8MCk9PS0xKXtjW2U+PjJdPTA7Zj0xO2JyZWFrfWVsc2V7Zj0oY1tlPj4yXXwwKT09MDticmVha319ZWxzZXtmPTF9fXdoaWxlKDApO2lmKChqfDApIT0wKXtkPWNbaisxMj4+Ml18MDtpZigoZHwwKT09KGNbaisxNj4+Ml18MCkpe2Q9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7ZD1jW2Q+PjJdfDB9aWYoISgoZHwwKT09LTEpKXtpZighZil7bT0xMjZ9fWVsc2V7bT0xMjR9fWVsc2V7bT0xMjR9aWYoKG18MCk9PTEyNCl7aWYoZil7bT0xMjZ9ZWxzZXtqPTB9fWlmKChtfDApPT0xMjYpe2NbaD4+Ml09Y1toPj4yXXw2O2JyZWFrIGF9ZD1jW2U+PjJdfDA7Zj1jW2QrMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2QrMTY+PjJdfDApKXtmPW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle2Y9Y1tmPj4yXXwwfWlmKCEoKGhjW2NbKGNbbj4+Ml18MCkrNTI+PjJdJjYzXShuLGYsMCl8MCk8PDI0Pj4yND09MzcpKXtjW2g+PjJdPWNbaD4+Ml18NDticmVhayBhfWQ9Y1tlPj4yXXwwO2Y9ZCsxMnwwO249Y1tmPj4yXXwwO2lmKChufDApPT0oY1tkKzE2Pj4yXXwwKSl7b2NbY1soY1tkPj4yXXwwKSs0MD4+Ml0mMTI3XShkKXwwfWVsc2V7Y1tmPj4yXT1uKzR9bj1jW2U+PjJdfDA7ZG97aWYoKG58MCkhPTApe2Y9Y1tuKzEyPj4yXXwwO2lmKChmfDApPT0oY1tuKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXtuPWNbZj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtuPTE7YnJlYWt9ZWxzZXtuPShjW2U+PjJdfDApPT0wO2JyZWFrfX1lbHNle249MX19d2hpbGUoMCk7aWYoKGp8MCkhPTApe2Y9Y1tqKzEyPj4yXXwwO2lmKChmfDApPT0oY1tqKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtqPWNbZj4+Ml18MH1pZighKChqfDApPT0tMSkpe2lmKG4pe2JyZWFrIGF9fWVsc2V7bT0xNDd9fWVsc2V7bT0xNDd9aWYoKG18MCk9PTE0Nz8hbjowKXticmVhayBhfWNbaD4+Ml09Y1toPj4yXXwyO2JyZWFrfTtjYXNlIDEwOTp7bj1taihlLGNbZj4+Ml18MCxoLG4sMil8MDttPWNbaD4+Ml18MDtpZigobSY0fDApPT0wJihufDApPDEzKXtjW2orMTY+PjJdPW4rIC0xO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSA3MDp7Y2oodyxkLGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyxoLGosMTI1OTIsMTI2MjR8MCk7Y1tlPj4yXT1jW3c+PjJdO2JyZWFrfTtjYXNlIDY4Ontjaih2LGQsY1tlPj4yXXwwLGNbZj4+Ml18MCxnLGgsaiwxMjU2MCwxMjU5MnwwKTtjW2U+PjJdPWNbdj4+Ml07YnJlYWt9O2Nhc2UgMTA0OmNhc2UgNjY6Y2FzZSA5ODp7Qj1jW2Y+PjJdfDA7Qz1kKzh8MDtDPW9jW2NbKGNbQz4+Ml18MCkrND4+Ml0mMTI3XShDKXwwO2g9KGFpKGUsQixDLEMrMjg4fDAsbixoLDApfDApLUN8MDtpZigoaHwwKTwyODgpe2NbaisxNj4+Ml09KChofDApLzEyfDB8MCklMTJ8MH1icmVha307Y2FzZSAxMTY6Y2FzZSAxMTA6e2o9Y1tmPj4yXXwwO3doaWxlKDEpe2Q9Y1tlPj4yXXwwO2Rve2lmKChkfDApIT0wKXtmPWNbZCsxMj4+Ml18MDtpZigoZnwwKT09KGNbZCsxNj4+Ml18MCkpe2Y9b2NbY1soY1tkPj4yXXwwKSszNj4+Ml0mMTI3XShkKXwwfWVsc2V7Zj1jW2Y+PjJdfDB9aWYoKGZ8MCk9PS0xKXtjW2U+PjJdPTA7Zj0xO2JyZWFrfWVsc2V7Zj0oY1tlPj4yXXwwKT09MDticmVha319ZWxzZXtmPTF9fXdoaWxlKDApO2lmKChqfDApIT0wKXtkPWNbaisxMj4+Ml18MDtpZigoZHwwKT09KGNbaisxNj4+Ml18MCkpe2Q9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7ZD1jW2Q+PjJdfDB9aWYoISgoZHwwKT09LTEpKXtpZighZil7YnJlYWt9fWVsc2V7bT01M319ZWxzZXttPTUzfWlmKChtfDApPT01Myl7bT0wO2lmKGYpe2o9MDticmVha31lbHNle2o9MH19ZD1jW2U+PjJdfDA7Zj1jW2QrMTI+PjJdfDA7aWYoKGZ8MCk9PShjW2QrMTY+PjJdfDApKXtmPW9jW2NbKGNbZD4+Ml18MCkrMzY+PjJdJjEyN10oZCl8MH1lbHNle2Y9Y1tmPj4yXXwwfWlmKCEoaGNbY1soY1tuPj4yXXwwKSsxMj4+Ml0mNjNdKG4sODE5MixmKXwwKSl7YnJlYWt9bz1jW2U+PjJdfDA7ZD1vKzEyfDA7Zj1jW2Q+PjJdfDA7aWYoKGZ8MCk9PShjW28rMTY+PjJdfDApKXtvY1tjWyhjW28+PjJdfDApKzQwPj4yXSYxMjddKG8pfDA7Y29udGludWV9ZWxzZXtjW2Q+PjJdPWYrNDtjb250aW51ZX19Zj1jW2U+PjJdfDA7ZG97aWYoKGZ8MCkhPTApe249Y1tmKzEyPj4yXXwwO2lmKChufDApPT0oY1tmKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2Y+PjJdfDApKzM2Pj4yXSYxMjddKGYpfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZigobnwwKT09LTEpe2NbZT4+Ml09MDtuPTE7YnJlYWt9ZWxzZXtuPShjW2U+PjJdfDApPT0wO2JyZWFrfX1lbHNle249MX19d2hpbGUoMCk7aWYoKGp8MCkhPTApe2Y9Y1tqKzEyPj4yXXwwO2lmKChmfDApPT0oY1tqKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMjddKGopfDB9ZWxzZXtqPWNbZj4+Ml18MH1pZighKChqfDApPT0tMSkpe2lmKG4pe2JyZWFrIGF9fWVsc2V7bT03NH19ZWxzZXttPTc0fWlmKChtfDApPT03ND8hbjowKXticmVhayBhfWNbaD4+Ml09Y1toPj4yXXwyO2JyZWFrfTtjYXNlIDY1OmNhc2UgOTc6e0I9Y1tmPj4yXXwwO0M9ZCs4fDA7Qz1vY1tjW2NbQz4+Ml0+PjJdJjEyN10oQyl8MDtoPShhaShlLEIsQyxDKzE2OHwwLG4saCwwKXwwKS1DfDA7aWYoKGh8MCk8MTY4KXtjW2orMjQ+PjJdPSgoaHwwKS8xMnwwfDApJTd8MH1icmVha307Y2FzZSA5OTp7bz1kKzh8MDtvPW9jW2NbKGNbbz4+Ml18MCkrMTI+PjJdJjEyN10obyl8MDtuPWFbbz4+MF18MDtpZigobiYxKT09MCl7bT1vKzR8MDtuPShuJjI1NSk+Pj4xfWVsc2V7bT1jW28rOD4+Ml18MDtuPWNbbys0Pj4yXXwwfWNqKHAsZCxjW2U+PjJdfDAsY1tmPj4yXXwwLGcsaCxqLG0sbSsobjw8Mil8MCk7Y1tlPj4yXT1jW3A+PjJdO2JyZWFrfTtjYXNlIDcyOntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8MjQpe2Nbais4Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMDE6Y2FzZSAxMDA6e209aisxMnwwO2o9bWooZSxjW2Y+PjJdfDAsaCxuLDIpfDA7bj1jW2g+PjJdfDA7aWYoKG4mNHwwKT09MD8oaisgLTF8MCk+Pj4wPDMxOjApe2NbbT4+Ml09ajticmVhayBhfWNbaD4+Ml09bnw0O2JyZWFrfTtjYXNlIDczOnttPWorOHwwO249bWooZSxjW2Y+PjJdfDAsaCxuLDIpfDA7aj1jW2g+PjJdfDA7aWYoKGomNHwwKT09MD8obisgLTF8MCk+Pj4wPDEyOjApe2NbbT4+Ml09bjticmVhayBhfWNbaD4+Ml09anw0O2JyZWFrfTtjYXNlIDc3OntuPW1qKGUsY1tmPj4yXXwwLGgsbiwyKXwwO209Y1toPj4yXXwwO2lmKChtJjR8MCk9PTAmKG58MCk8NjApe2Nbais0Pj4yXT1uO2JyZWFrIGF9ZWxzZXtjW2g+PjJdPW18NDticmVhayBhfX07Y2FzZSAxMDY6e249bWooZSxjW2Y+PjJdfDAsaCxuLDMpfDA7bT1jW2g+PjJdfDA7aWYoKG0mNHwwKT09MCYobnwwKTwzNjYpe2NbaisyOD4+Ml09bjticmVhayBhfWVsc2V7Y1toPj4yXT1tfDQ7YnJlYWsgYX19O2RlZmF1bHQ6e2NbaD4+Ml09Y1toPj4yXXw0fX19d2hpbGUoMCk7Y1tiPj4yXT1jW2U+PjJdO2k9bDtyZXR1cm59Qz1YYSg0KXwwO2NbQz4+Ml09MjEzMDQ7d2IoQ3wwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gbWooYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtrPWNbYT4+Ml18MDtkb3tpZigoa3wwKSE9MCl7aj1jW2srMTI+PjJdfDA7aWYoKGp8MCk9PShjW2srMTY+PjJdfDApKXtqPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2o9Y1tqPj4yXXwwfWlmKChqfDApPT0tMSl7Y1thPj4yXT0wO2o9MTticmVha31lbHNle2o9KGNbYT4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7aj0xfX13aGlsZSgwKTtpZigoYnwwKSE9MCl7az1jW2IrMTI+PjJdfDA7aWYoKGt8MCk9PShjW2IrMTY+PjJdfDApKXtrPW9jW2NbKGNbYj4+Ml18MCkrMzY+PjJdJjEyN10oYil8MH1lbHNle2s9Y1trPj4yXXwwfWlmKCEoKGt8MCk9PS0xKSl7aWYoIWope2c9MTV9fWVsc2V7Zz0xM319ZWxzZXtnPTEzfWlmKChnfDApPT0xMyl7aWYoail7Zz0xNX1lbHNle2I9MH19aWYoKGd8MCk9PTE1KXtjW2Q+PjJdPWNbZD4+Ml18NjtuPTA7aT1oO3JldHVybiBufDB9aj1jW2E+PjJdfDA7az1jW2orMTI+PjJdfDA7aWYoKGt8MCk9PShjW2orMTY+PjJdfDApKXtqPW9jW2NbKGNbaj4+Ml18MCkrMzY+PjJdJjEyN10oail8MH1lbHNle2o9Y1trPj4yXXwwfWlmKCEoaGNbY1soY1tlPj4yXXwwKSsxMj4+Ml0mNjNdKGUsMjA0OCxqKXwwKSl7Y1tkPj4yXT1jW2Q+PjJdfDQ7bj0wO2k9aDtyZXR1cm4gbnwwfWo9KGhjW2NbKGNbZT4+Ml18MCkrNTI+PjJdJjYzXShlLGosMCl8MCk8PDI0Pj4yNDtsPWNbYT4+Ml18MDtrPWwrMTJ8MDttPWNbaz4+Ml18MDtpZigobXwwKT09KGNbbCsxNj4+Ml18MCkpe29jW2NbKGNbbD4+Ml18MCkrNDA+PjJdJjEyN10obCl8MDtrPWI7bD1iO2I9an1lbHNle2Nbaz4+Ml09bSs0O2s9YjtsPWI7Yj1qfXdoaWxlKDEpe2I9YisgLTQ4fDA7Zj1mKyAtMXwwO2o9Y1thPj4yXXwwO2Rve2lmKChqfDApIT0wKXttPWNbaisxMj4+Ml18MDtpZigobXwwKT09KGNbaisxNj4+Ml18MCkpe2o9b2NbY1soY1tqPj4yXXwwKSszNj4+Ml0mMTI3XShqKXwwfWVsc2V7aj1jW20+PjJdfDB9aWYoKGp8MCk9PS0xKXtjW2E+PjJdPTA7bT0xO2JyZWFrfWVsc2V7bT0oY1thPj4yXXwwKT09MDticmVha319ZWxzZXttPTF9fXdoaWxlKDApO2lmKChsfDApPT0wKXtqPWs7bD0wO249MX1lbHNle2o9Y1tsKzEyPj4yXXwwO2lmKChqfDApPT0oY1tsKzE2Pj4yXXwwKSl7aj1vY1tjWyhjW2w+PjJdfDApKzM2Pj4yXSYxMjddKGwpfDB9ZWxzZXtqPWNbaj4+Ml18MH1uPShqfDApPT0tMTtqPW4/MDprO2w9bj8wOms7bj1uPzE6KGt8MCk9PTB9az1jW2E+PjJdfDA7aWYoISgobV5uKSYoZnwwKT4wKSl7YnJlYWt9bT1jW2srMTI+PjJdfDA7aWYoKG18MCk9PShjW2srMTY+PjJdfDApKXtrPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2s9Y1ttPj4yXXwwfWlmKCEoaGNbY1soY1tlPj4yXXwwKSsxMj4+Ml0mNjNdKGUsMjA0OCxrKXwwKSl7Zz01OTticmVha31iPSgoaGNbY1soY1tlPj4yXXwwKSs1Mj4+Ml0mNjNdKGUsaywwKXwwKTw8MjQ+PjI0KSsoYioxMHwwKXwwO209Y1thPj4yXXwwO249bSsxMnwwO2s9Y1tuPj4yXXwwO2lmKChrfDApPT0oY1ttKzE2Pj4yXXwwKSl7b2NbY1soY1ttPj4yXXwwKSs0MD4+Ml0mMTI3XShtKXwwO2s9ajtjb250aW51ZX1lbHNle2Nbbj4+Ml09ays0O2s9ajtjb250aW51ZX19aWYoKGd8MCk9PTU5KXtpPWg7cmV0dXJuIGJ8MH1kb3tpZigoa3wwKSE9MCl7ZT1jW2srMTI+PjJdfDA7aWYoKGV8MCk9PShjW2srMTY+PjJdfDApKXtlPW9jW2NbKGNbaz4+Ml18MCkrMzY+PjJdJjEyN10oayl8MH1lbHNle2U9Y1tlPj4yXXwwfWlmKChlfDApPT0tMSl7Y1thPj4yXT0wO2E9MTticmVha31lbHNle2E9KGNbYT4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7YT0xfX13aGlsZSgwKTtpZigoanwwKSE9MCl7ZT1jW2orMTI+PjJdfDA7aWYoKGV8MCk9PShjW2orMTY+PjJdfDApKXtlPW9jW2NbKGNbaj4+Ml18MCkrMzY+PjJdJjEyN10oail8MH1lbHNle2U9Y1tlPj4yXXwwfWlmKCEoKGV8MCk9PS0xKSl7aWYoYSl7bj1iO2k9aDtyZXR1cm4gbnwwfX1lbHNle2c9NTZ9fWVsc2V7Zz01Nn1pZigoZ3wwKT09NTY/IWE6MCl7bj1iO2k9aDtyZXR1cm4gbnwwfWNbZD4+Ml09Y1tkPj4yXXwyO249YjtpPWg7cmV0dXJuIG58MH1mdW5jdGlvbiBuaihiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2U9Yis4fDA7Zj1jW2U+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChmfDApIT0oY1szMzQwXXwwKSl7VmIoY1tlPj4yXXwwKX1pZigoYnwwKT09MCl7aT1kO3JldHVybn12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIG9qKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtiPWIrOHwwO2U9Y1tiPj4yXXwwO2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1pZigoZXwwKT09KGNbMzM0MF18MCkpe2k9ZDtyZXR1cm59VmIoY1tiPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIHBqKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wO2Y9aTtpPWkrMTEyfDA7bj1mKzEwMHwwO2c9ZjthW24+PjBdPTM3O2w9bisxfDA7YVtsPj4wXT1qO209bisyfDA7YVttPj4wXT1rO2FbbiszPj4wXT0wO2lmKCEoazw8MjQ+PjI0PT0wKSl7YVtsPj4wXT1rO2FbbT4+MF09an1uPWViKGd8MCwxMDAsbnwwLGh8MCxjW2QrOD4+Ml18MCl8MDtoPWcrbnwwO2Q9Y1tlPj4yXXwwO2lmKChufDApPT0wKXtuPWQ7Y1tiPj4yXT1uO2k9ZjtyZXR1cm59ZWxzZXtlPWQ7bD1kfWRve2o9YVtnPj4wXXwwO2Rve2lmKChlfDApIT0wKXtrPWUrMjR8MDtkPWNbaz4+Ml18MDtpZigoZHwwKT09KGNbZSsyOD4+Ml18MCkpe249KHhjW2NbKGNbZT4+Ml18MCkrNTI+PjJdJjYzXShlLGomMjU1KXwwKT09LTE7bD1uPzA6bDtlPW4/MDplO2JyZWFrfWVsc2V7Y1trPj4yXT1kKzE7YVtkPj4wXT1qO2JyZWFrfX1lbHNle2U9MH19d2hpbGUoMCk7Zz1nKzF8MH13aGlsZSgoZ3wwKSE9KGh8MCkpO2NbYj4+Ml09bDtpPWY7cmV0dXJufWZ1bmN0aW9uIHFqKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7ZT1iKzh8MDtmPWNbZT4+Ml18MDtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9aWYoKGZ8MCkhPShjWzMzNDBdfDApKXtWYihjW2U+PjJdfDApfWlmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gcmooYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2I9Yis4fDA7ZT1jW2I+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChlfDApPT0oY1szMzQwXXwwKSl7aT1kO3JldHVybn1WYihjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gc2ooYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7Zj1pO2k9aSs1Mjh8MDtvPWYrNTEyfDA7cD1mKzQxMnwwO209ZjtsPWYrNDA4fDA7Zz1mKzh8MDthW28+PjBdPTM3O249bysxfDA7YVtuPj4wXT1qO3E9bysyfDA7YVtxPj4wXT1rO2FbbyszPj4wXT0wO2lmKCEoazw8MjQ+PjI0PT0wKSl7YVtuPj4wXT1rO2FbcT4+MF09an1qPWQrOHwwO2ViKHB8MCwxMDAsb3wwLGh8MCxjW2o+PjJdfDApfDA7az1tO2Nbaz4+Ml09MDtjW2srND4+Ml09MDtjW2w+PjJdPXA7aj1pYihjW2o+PjJdfDApfDA7az1WbShnLGwsMTAwLG0pfDA7aWYoKGp8MCkhPTApe2liKGp8MCl8MH1pZigoa3wwKT09LTEpe29rKDE0Mjk2KX1qPWcrKGs8PDIpfDA7ZD1jW2U+PjJdfDA7aWYoKGt8MCk9PTApe3E9ZDtjW2I+PjJdPXE7aT1mO3JldHVybn1lbHNle2U9ZDtrPWR9ZG97ZD1jW2c+PjJdfDA7aWYoKGV8MCk9PTApe2U9MH1lbHNle2g9ZSsyNHwwO2w9Y1toPj4yXXwwO2lmKChsfDApPT0oY1tlKzI4Pj4yXXwwKSl7ZD14Y1tjWyhjW2U+PjJdfDApKzUyPj4yXSY2M10oZSxkKXwwfWVsc2V7Y1toPj4yXT1sKzQ7Y1tsPj4yXT1kfXE9KGR8MCk9PS0xO2s9cT8wOms7ZT1xPzA6ZX1nPWcrNHwwfXdoaWxlKChnfDApIT0oanwwKSk7Y1tiPj4yXT1rO2k9ZjtyZXR1cm59ZnVuY3Rpb24gdGooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gdWooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHZqKGEpe2E9YXwwO3JldHVybiAxMjd9ZnVuY3Rpb24gd2ooYSl7YT1hfDA7cmV0dXJuIDEyN31mdW5jdGlvbiB4aihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIHlqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gemooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBBaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09MjthW2IrMT4+MF09NDU7YVtiKzI+PjBdPTA7cmV0dXJufWZ1bmN0aW9uIEJqKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIENqKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBEaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gRWooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gRmooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEdqKGEpe2E9YXwwO3JldHVybiAxMjd9ZnVuY3Rpb24gSGooYSl7YT1hfDA7cmV0dXJuIDEyN31mdW5jdGlvbiBJaihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIEpqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gS2ooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBMaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09MjthW2IrMT4+MF09NDU7YVtiKzI+PjBdPTA7cmV0dXJufWZ1bmN0aW9uIE1qKGEpe2E9YXwwO3JldHVybiAwfWZ1bmN0aW9uIE5qKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBPaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gUGooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gUWooYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFJqKGEpe2E9YXwwO3JldHVybiAyMTQ3NDgzNjQ3fWZ1bmN0aW9uIFNqKGEpe2E9YXwwO3JldHVybiAyMTQ3NDgzNjQ3fWZ1bmN0aW9uIFRqKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gVWooYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBWaihhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIFdqKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZD1pO2FbYj4+MF09MjtiPWIrNHwwO2Y9MTtlPWI7d2hpbGUoMSl7Zj1mKyAtMXwwO2NbZT4+Ml09NDU7aWYoKGZ8MCk9PTApe2JyZWFrfWVsc2V7ZT1lKzR8MH19Y1tiKzQ+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBYaihhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBZaihiLGMpe2I9YnwwO2M9Y3wwO2FbYj4+MF09NjcxMDk2MzQ7YVtiKzE+PjBdPTI2MjE0NzthW2IrMj4+MF09MTAyNDthW2IrMz4+MF09NDtyZXR1cm59ZnVuY3Rpb24gWmooYixjKXtiPWJ8MDtjPWN8MDthW2I+PjBdPTY3MTA5NjM0O2FbYisxPj4wXT0yNjIxNDc7YVtiKzI+PjBdPTEwMjQ7YVtiKzM+PjBdPTQ7cmV0dXJufWZ1bmN0aW9uIF9qKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uICRqKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBhayhhKXthPWF8MDtyZXR1cm4gMjE0NzQ4MzY0N31mdW5jdGlvbiBiayhhKXthPWF8MDtyZXR1cm4gMjE0NzQ4MzY0N31mdW5jdGlvbiBjayhhLGIpe2E9YXwwO2I9YnwwO2I9aTtjW2ErMD4+Ml09MDtjW2ErND4+Ml09MDtjW2ErOD4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIGRrKGEsYil7YT1hfDA7Yj1ifDA7Yj1pO2NbYSswPj4yXT0wO2NbYSs0Pj4yXT0wO2NbYSs4Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gZWsoYSxiKXthPWF8MDtiPWJ8MDtiPWk7Y1thKzA+PjJdPTA7Y1thKzQ+PjJdPTA7Y1thKzg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBmayhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2Q9aTthW2I+PjBdPTI7Yj1iKzR8MDtmPTE7ZT1iO3doaWxlKDEpe2Y9ZisgLTF8MDtjW2U+PjJdPTQ1O2lmKChmfDApPT0wKXticmVha31lbHNle2U9ZSs0fDB9fWNbYis0Pj4yXT0wO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ2soYSl7YT1hfDA7cmV0dXJuIDB9ZnVuY3Rpb24gaGsoYixjKXtiPWJ8MDtjPWN8MDthW2I+PjBdPTY3MTA5NjM0O2FbYisxPj4wXT0yNjIxNDc7YVtiKzI+PjBdPTEwMjQ7YVtiKzM+PjBdPTQ7cmV0dXJufWZ1bmN0aW9uIGlrKGIsYyl7Yj1ifDA7Yz1jfDA7YVtiPj4wXT02NzEwOTYzNDthW2IrMT4+MF09MjYyMTQ3O2FbYisyPj4wXT0xMDI0O2FbYiszPj4wXT00O3JldHVybn1mdW5jdGlvbiBqayhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBrayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gbGsoYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO249aTtpPWkrMjQwfDA7cD1uO3g9bisxNDB8MDtkPW4rMTZ8MDtyPW4rMjR8MDt1PW4rMTM4fDA7cz1uKzEyOHwwO3E9bisyOHwwO2NbZD4+Ml09eDttPWQrNHwwO2NbbT4+Ml09MjEzO3g9eCsxMDB8MDtvPWNbaCsyOD4+Ml18MDt3PW8rNHwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMTtpZighKChjWzMzNjRdfDApPT0tMSkpe2NbcD4+Ml09MTM0NTY7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ1NixwKX13PShjWzEzNDYwPj4yXXwwKSsgLTF8MDt2PWNbbys4Pj4yXXwwO2lmKChjW28rMTI+PjJdfDApLXY+PjI+Pj4wPnc+Pj4wPyh0PWNbdisodzw8Mik+PjJdfDAsKHR8MCkhPTApOjApe2FbdT4+MF09MDtkb3tpZihuayhlLGNbZj4+Ml18MCxnLG8sY1toKzQ+PjJdfDAsaix1LHQsZCxyLHgpfDApe3VjW2NbKGNbdD4+Ml18MCkrMzI+PjJdJjMxXSh0LDEzMDg4LDEzMDk4fDAscyl8MDtnPWNbcj4+Ml18MDtoPWNbZD4+Ml18MDt0PWctaHwwO2lmKCh0fDApPjk4KXt2PXVuKHQrMnwwKXwwO2lmKCh2fDApPT0wKXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNle3Q9dn19ZWxzZXt0PTA7dj1xfWlmKChhW3U+PjBdfDApIT0wKXthW3Y+PjBdPTQ1O3Y9disxfDB9aWYoaD4+PjA8Zz4+PjApe3U9cysxMHwwO2c9cztkb3t3PWFbaD4+MF18MDt4PXM7d2hpbGUoMSl7aWYoKGFbeD4+MF18MCk9PXc8PDI0Pj4yNCl7YnJlYWt9eD14KzF8MDtpZigoeHwwKT09KHV8MCkpe3g9dTticmVha319YVt2Pj4wXT1hWzEzMDg4Kyh4LWcpPj4wXXwwO2g9aCsxfDA7dj12KzF8MH13aGlsZShoPj4+MDwoY1tyPj4yXXwwKT4+PjApfWFbdj4+MF09MDtjW3A+PjJdPWs7aWYoKEZhKHF8MCwxMzEwNCxwfDApfDApPT0xKXtpZigodHwwKT09MCl7YnJlYWt9dm4odCk7YnJlYWt9Zj1YYSg4KXwwO2NbZj4+Ml09OTkyODt3aGlsZSgxKXtqPXVuKDI4KXwwO2lmKChqfDApIT0wKXtsPTI5O2JyZWFrfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXtsPTI3O2JyZWFrfXNjW2wmMzFdKCl9aWYoKGx8MCk9PTI3KXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNlIGlmKChsfDApPT0yOSl7Y1tqKzQ+PjJdPTE1O2Nbaj4+Ml09MTU7bD1qKzEyfDA7Y1tmKzQ+PjJdPWw7Y1tqKzg+PjJdPTA7aj1sKzB8MDtsPTEzMTEyfDA7Yj1qKzE2fDA7ZG97YVtqPj4wXT1hW2w+PjBdfDA7aj1qKzF8MDtsPWwrMXwwfXdoaWxlKChqfDApPChifDApKTt3YihmfDAsMTAwNjQsMTA2KX19fXdoaWxlKDApO3A9Y1tlPj4yXXwwO2lmKChwfDApIT0wKXtpZigoY1twKzEyPj4yXXwwKT09KGNbcCsxNj4+Ml18MCk/KG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xOjApe2NbZT4+Ml09MDtwPTB9fWVsc2V7cD0wfWs9KHB8MCk9PTA7ZT1jW2Y+PjJdfDA7ZG97aWYoKGV8MCkhPTApe2lmKChjW2UrMTI+PjJdfDApIT0oY1tlKzE2Pj4yXXwwKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTQ2O2JyZWFrfX1pZighKChvY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDApPT0tMSkpe2lmKGspe2JyZWFrfWVsc2V7bD00NjticmVha319ZWxzZXtjW2Y+PjJdPTA7bD00NDticmVha319ZWxzZXtsPTQ0fX13aGlsZSgwKTtpZigobHwwKT09NDQ/azowKXtsPTQ2fWlmKChsfDApPT00Nil7Y1tqPj4yXT1jW2o+PjJdfDJ9Y1tiPj4yXT1wO3c9bys0fDA7eD1jW3c+PjJdfDA7Y1t3Pj4yXT14KyAtMTtpZigoeHwwKT09MCl7bGNbY1soY1tvPj4yXXwwKSs4Pj4yXSYyNTVdKG8pfWw9Y1tkPj4yXXwwO2NbZD4+Ml09MDtpZigobHwwKT09MCl7aT1uO3JldHVybn1sY1tjW20+PjJdJjI1NV0obCk7aT1uO3JldHVybn14PVhhKDQpfDA7Y1t4Pj4yXT0yMTMwNDt3Yih4fDAsMjEzNzYsMTk2KX1mdW5jdGlvbiBtayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gbmsoZSxmLGcsaCxqLGssbCxtLG4sbyxwKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDtwPXB8MDt2YXIgcT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MDt1PWk7aT1pKzU5MnwwO1E9dTtPPXUrMTEyfDA7Rz11KzEyfDA7TT11KzEwMHwwO0o9dSs0MHwwO0s9dSsyNHwwO0w9dSszNnwwO1A9dSs4OHwwO049dSs3NnwwO0g9dSs1MnwwO0k9dSs2NHwwO1Q9dSsxMjB8MDtGPXUrNTIwfDA7dD11KzUyNHwwO3k9dSs1MzZ8MDt4PXUrNTQ4fDA7cz11KzU2MHwwO3c9dSs1NzJ8MDtCPXUrNTg0fDA7Y1tGPj4yXT0wO2NbdCswPj4yXT0wO2NbdCs0Pj4yXT0wO2NbdCs4Pj4yXT0wO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbcyswPj4yXT0wO2Nbcys0Pj4yXT0wO2Nbcys4Pj4yXT0wO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wO2Rve2lmKGcpe2lmKCEoKGNbMzIyOF18MCk9PS0xKSl7Y1tRPj4yXT0xMjkxMjtjW1ErND4+Ml09MjA4O2NbUSs4Pj4yXT0wO2NnKDEyOTEyLFEpfUg9KGNbMTI5MTY+PjJdfDApKyAtMXwwO0U9Y1toKzg+PjJdfDA7aWYoKGNbaCsxMj4+Ml18MCktRT4+Mj4+PjA+SD4+PjA/KEQ9Y1tFKyhIPDwyKT4+Ml18MCwoRHwwKSE9MCk6MCl7bWNbY1soY1tEPj4yXXwwKSs0ND4+Ml0mMTI3XShPLEQpO2NbRj4+Ml09Y1tPPj4yXTttY1tjWyhjW0Q+PjJdfDApKzMyPj4yXSYxMjddKEcsRCk7aWYoKGFbcz4+MF0mMSk9PTApe2FbcysxPj4wXT0wO2Fbcz4+MF09MH1lbHNle2FbY1tzKzg+PjJdPj4wXT0wO2Nbcys0Pj4yXT0wfWlnKHMpO2NbcyswPj4yXT1jW0crMD4+Ml07Y1tzKzQ+PjJdPWNbRys0Pj4yXTtjW3MrOD4+Ml09Y1tHKzg+PjJdO2NbRyswPj4yXT0wO2NbRys0Pj4yXT0wO2NbRys4Pj4yXT0wO21jW2NbKGNbRD4+Ml18MCkrMjg+PjJdJjEyN10oTSxEKTtpZigoYVt4Pj4wXSYxKT09MCl7YVt4KzE+PjBdPTA7YVt4Pj4wXT0wfWVsc2V7YVtjW3grOD4+Ml0+PjBdPTA7Y1t4KzQ+PjJdPTB9aWcoeCk7Y1t4KzA+PjJdPWNbTSswPj4yXTtjW3grND4+Ml09Y1tNKzQ+PjJdO2NbeCs4Pj4yXT1jW00rOD4+Ml07Y1tNKzA+PjJdPTA7Y1tNKzQ+PjJdPTA7Y1tNKzg+PjJdPTA7aD1vY1tjWyhjW0Q+PjJdfDApKzEyPj4yXSYxMjddKEQpfDA7Rz1vY1tjWyhjW0Q+PjJdfDApKzE2Pj4yXSYxMjddKEQpfDA7bWNbY1soY1tEPj4yXXwwKSsyMD4+Ml0mMTI3XShKLEQpO2lmKChhW3Q+PjBdJjEpPT0wKXthW3QrMT4+MF09MDthW3Q+PjBdPTB9ZWxzZXthW2NbdCs4Pj4yXT4+MF09MDtjW3QrND4+Ml09MH1pZyh0KTtjW3QrMD4+Ml09Y1tKKzA+PjJdO2NbdCs0Pj4yXT1jW0orND4+Ml07Y1t0Kzg+PjJdPWNbSis4Pj4yXTtjW0orMD4+Ml09MDtjW0orND4+Ml09MDtjW0orOD4+Ml09MDttY1tjWyhjW0Q+PjJdfDApKzI0Pj4yXSYxMjddKEssRCk7aWYoKGFbeT4+MF0mMSk9PTApe2FbeSsxPj4wXT0wO2FbeT4+MF09MH1lbHNle2FbY1t5Kzg+PjJdPj4wXT0wO2NbeSs0Pj4yXT0wfWlnKHkpO2NbeSswPj4yXT1jW0srMD4+Ml07Y1t5KzQ+PjJdPWNbSys0Pj4yXTtjW3krOD4+Ml09Y1tLKzg+PjJdO2NbSyswPj4yXT0wO2NbSys0Pj4yXT0wO2NbSys4Pj4yXT0wO1Y9b2NbY1soY1tEPj4yXXwwKSszNj4+Ml0mMTI3XShEKXwwO2JyZWFrfWVhPVhhKDQpfDA7Y1tlYT4+Ml09MjEzMDQ7d2IoZWF8MCwyMTM3NiwxOTYpfWVsc2V7aWYoISgoY1szMjEyXXwwKT09LTEpKXtjW1E+PjJdPTEyODQ4O2NbUSs0Pj4yXT0yMDg7Y1tRKzg+PjJdPTA7Y2coMTI4NDgsUSl9Rz0oY1sxMjg1Mj4+Ml18MCkrIC0xfDA7RD1jW2grOD4+Ml18MDtpZigoY1toKzEyPj4yXXwwKS1EPj4yPj4+MD5HPj4+MD8oRT1jW0QrKEc8PDIpPj4yXXwwLChFfDApIT0wKTowKXttY1tjWyhjW0U+PjJdfDApKzQ0Pj4yXSYxMjddKEwsRSk7Y1tGPj4yXT1jW0w+PjJdO21jW2NbKGNbRT4+Ml18MCkrMzI+PjJdJjEyN10oUCxFKTtpZigoYVtzPj4wXSYxKT09MCl7YVtzKzE+PjBdPTA7YVtzPj4wXT0wfWVsc2V7YVtjW3MrOD4+Ml0+PjBdPTA7Y1tzKzQ+PjJdPTB9aWcocyk7Y1tzKzA+PjJdPWNbUCswPj4yXTtjW3MrND4+Ml09Y1tQKzQ+PjJdO2Nbcys4Pj4yXT1jW1ArOD4+Ml07Y1tQKzA+PjJdPTA7Y1tQKzQ+PjJdPTA7Y1tQKzg+PjJdPTA7bWNbY1soY1tFPj4yXXwwKSsyOD4+Ml0mMTI3XShOLEUpO2lmKChhW3g+PjBdJjEpPT0wKXthW3grMT4+MF09MDthW3g+PjBdPTB9ZWxzZXthW2NbeCs4Pj4yXT4+MF09MDtjW3grND4+Ml09MH1pZyh4KTtjW3grMD4+Ml09Y1tOKzA+PjJdO2NbeCs0Pj4yXT1jW04rND4+Ml07Y1t4Kzg+PjJdPWNbTis4Pj4yXTtjW04rMD4+Ml09MDtjW04rND4+Ml09MDtjW04rOD4+Ml09MDtoPW9jW2NbKGNbRT4+Ml18MCkrMTI+PjJdJjEyN10oRSl8MDtHPW9jW2NbKGNbRT4+Ml18MCkrMTY+PjJdJjEyN10oRSl8MDttY1tjWyhjW0U+PjJdfDApKzIwPj4yXSYxMjddKEgsRSk7aWYoKGFbdD4+MF0mMSk9PTApe2FbdCsxPj4wXT0wO2FbdD4+MF09MH1lbHNle2FbY1t0Kzg+PjJdPj4wXT0wO2NbdCs0Pj4yXT0wfWlnKHQpO2NbdCswPj4yXT1jW0grMD4+Ml07Y1t0KzQ+PjJdPWNbSCs0Pj4yXTtjW3QrOD4+Ml09Y1tIKzg+PjJdO2NbSCswPj4yXT0wO2NbSCs0Pj4yXT0wO2NbSCs4Pj4yXT0wO21jW2NbKGNbRT4+Ml18MCkrMjQ+PjJdJjEyN10oSSxFKTtpZigoYVt5Pj4wXSYxKT09MCl7YVt5KzE+PjBdPTA7YVt5Pj4wXT0wfWVsc2V7YVtjW3krOD4+Ml0+PjBdPTA7Y1t5KzQ+PjJdPTB9aWcoeSk7Y1t5KzA+PjJdPWNbSSswPj4yXTtjW3krND4+Ml09Y1tJKzQ+PjJdO2NbeSs4Pj4yXT1jW0krOD4+Ml07Y1tJKzA+PjJdPTA7Y1tJKzQ+PjJdPTA7Y1tJKzg+PjJdPTA7Vj1vY1tjWyhjW0U+PjJdfDApKzM2Pj4yXSYxMjddKEUpfDA7YnJlYWt9ZWE9WGEoNCl8MDtjW2VhPj4yXT0yMTMwNDt3YihlYXwwLDIxMzc2LDE5Nil9fXdoaWxlKDApO2Nbbz4+Ml09Y1tuPj4yXTtKPW0rOHwwO0k9cysxfDA7TD1zKzR8MDttPXMrOHwwO0s9eCsxfDA7SD14KzR8MDtEPXgrOHwwO009KGomNTEyfDApIT0wO1M9eSsxfDA7aj15Kzh8MDtRPXkrNHwwO2c9dysxfDA7RT13Kzh8MDtPPXcrNHwwO049RiszfDA7Uj1uKzR8MDtQPXQrNHwwO1g9VCs0MDB8MDtZPVQ7Wj1UO1U9MDtUPTA7Vz0yMTM7YTp3aGlsZSgxKXtfPWNbZT4+Ml18MDtkb3tpZigoX3wwKSE9MCl7aWYoKGNbXysxMj4+Ml18MCk9PShjW18rMTY+PjJdfDApKXtpZigob2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwKT09LTEpe2NbZT4+Ml09MDtfPTA7YnJlYWt9ZWxzZXtfPWNbZT4+Ml18MDticmVha319fWVsc2V7Xz0wfX13aGlsZSgwKTtfPShffDApPT0wO2Rve2lmKChmfDApIT0wKXtpZigoY1tmKzEyPj4yXXwwKSE9KGNbZisxNj4+Ml18MCkpe2lmKF8pe2JyZWFrfWVsc2V7Qz0zNjM7YnJlYWsgYX19aWYoISgob2NbY1soY1tmPj4yXXwwKSszNj4+Ml0mMTI3XShmKXwwKT09LTEpKXtpZighXyl7Qz0zNjM7YnJlYWsgYX19ZWxzZXtDPTc0fX1lbHNle0M9NzR9fXdoaWxlKDApO2lmKChDfDApPT03NCl7Qz0wO2lmKF8pe2Y9MDtDPTM2MzticmVha31lbHNle2Y9MH19Yjpkb3tzd2l0Y2goYVtGK1U+PjBdfDApe2Nhc2UgMjp7aWYoISgoVHwwKSE9MHxVPj4+MDwyKSl7aWYoKFV8MCk9PTIpe189KGFbTj4+MF18MCkhPTB9ZWxzZXtfPTB9aWYoIShNfF8pKXtUPTA7YnJlYWsgYn19JD1hW3k+PjBdfDA7YWE9KCQmMSk9PTA7Xz1hYT9TOmNbaj4+Ml18MDtjOmRve2lmKChVfDApIT0wPyhkW0YrKFUrIC0xKT4+MF18MCk8MjowKXtiYT1fKyhhYT8oJCYyNTUpPj4+MTpjW1E+PjJdfDApfDA7Y2E9Xzt3aGlsZSgxKXtpZigoY2F8MCk9PShiYXwwKSl7YnJlYWt9YWE9YVtjYT4+MF18MDtpZighKGFhPDwyND4+MjQ+LTEpKXtiYT1jYTticmVha31pZigoYlsoY1tKPj4yXXwwKSsoYWE8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXtiYT1jYTticmVha31lbHNle2NhPWNhKzF8MH19YWE9YmEtX3wwO2NhPWFbdz4+MF18MDtkYT0oY2EmMSk9PTA7aWYoZGEpe2VhPShjYSYyNTUpPj4+MX1lbHNle2VhPWNbTz4+Ml18MH1pZighKGFhPj4+MD5lYT4+PjApKXtpZihkYSl7ZGE9KGNhJjI1NSk+Pj4xO2NhPWc7ZWE9ZGE7ZGE9dysoZGEtYWEpKzF8MH1lbHNle2ZhPWNbRT4+Ml18MDtkYT1jW08+PjJdfDA7Y2E9ZmE7ZWE9ZGE7ZGE9ZmErKGRhLWFhKXwwfWFhPWNhK2VhfDA7aWYoKGRhfDApPT0oYWF8MCkpe2FhPWY7Xz1iYTtiYT1mfWVsc2V7Y2E9Xzt3aGlsZSgxKXtpZigoYVtkYT4+MF18MCkhPShhW2NhPj4wXXwwKSl7YWE9ZjtiYT1mO2JyZWFrIGN9ZGE9ZGErMXwwO2lmKChkYXwwKT09KGFhfDApKXthYT1mO189YmE7YmE9ZjticmVha31lbHNle2NhPWNhKzF8MH19fX1lbHNle2FhPWY7YmE9Zn19ZWxzZXthYT1mO2JhPWZ9fXdoaWxlKDApO2Q6d2hpbGUoMSl7aWYoKCQmMSk9PTApe2NhPVM7JD0oJCYyNTUpPj4+MX1lbHNle2NhPWNbaj4+Ml18MDskPWNbUT4+Ml18MH1pZigoX3wwKT09KGNhKyR8MCkpe2JyZWFrfSQ9Y1tlPj4yXXwwO2Rve2lmKCgkfDApIT0wKXtpZigoY1skKzEyPj4yXXwwKT09KGNbJCsxNj4+Ml18MCkpe2lmKChvY1tjWyhjWyQ+PjJdfDApKzM2Pj4yXSYxMjddKCQpfDApPT0tMSl7Y1tlPj4yXT0wOyQ9MDticmVha31lbHNleyQ9Y1tlPj4yXXwwO2JyZWFrfX19ZWxzZXskPTB9fXdoaWxlKDApOyQ9KCR8MCk9PTA7ZG97aWYoKGJhfDApIT0wKXtpZigoY1tiYSsxMj4+Ml18MCkhPShjW2JhKzE2Pj4yXXwwKSl7aWYoJCl7JD1hYTticmVha31lbHNle2JyZWFrIGR9fWlmKCEoKG9jW2NbKGNbYmE+PjJdfDApKzM2Pj4yXSYxMjddKGJhKXwwKT09LTEpKXtpZigkXihhYXwwKT09MCl7JD1hYTtiYT1hYX1lbHNle2JyZWFrIGR9fWVsc2V7YWE9MDtmPTA7Qz0yMzJ9fWVsc2V7Qz0yMzJ9fXdoaWxlKDApO2lmKChDfDApPT0yMzIpe0M9MDtpZigkKXticmVha31lbHNleyQ9YWE7YmE9MH19YWE9Y1tlPj4yXXwwO2NhPWNbYWErMTI+PjJdfDA7aWYoKGNhfDApPT0oY1thYSsxNj4+Ml18MCkpe2FhPW9jW2NbKGNbYWE+PjJdfDApKzM2Pj4yXSYxMjddKGFhKXwwfWVsc2V7YWE9ZFtjYT4+MF18MH1pZighKChhYSYyNTUpPDwyND4+MjQ9PShhW18+PjBdfDApKSl7YnJlYWt9ZGE9Y1tlPj4yXXwwO2NhPWRhKzEyfDA7YWE9Y1tjYT4+Ml18MDtpZigoYWF8MCk9PShjW2RhKzE2Pj4yXXwwKSl7b2NbY1soY1tkYT4+Ml18MCkrNDA+PjJdJjEyN10oZGEpfDB9ZWxzZXtjW2NhPj4yXT1hYSsxfWFhPSQ7JD1hW3k+PjBdfDA7Xz1fKzF8MH1pZihNKXthYT1hW3k+PjBdfDA7aWYoKGFhJjEpPT0wKXskPVM7YWE9KGFhJjI1NSk+Pj4xfWVsc2V7JD1jW2o+PjJdfDA7YWE9Y1tRPj4yXXwwfWlmKChffDApIT0oJCthYXwwKSl7Qz0yNDc7YnJlYWsgYX19YnJlYWt9O2Nhc2UgMDp7Qz05NzticmVha307Y2FzZSAzOntfPWFbeD4+MF18MDthYT0oXyYxKT09MDtpZihhYSl7ZGE9KF8mMjU1KT4+PjF9ZWxzZXtkYT1jW0g+PjJdfDB9JD1hW3M+PjBdfDA7YmE9KCQmMSk9PTA7aWYoYmEpe2NhPSgkJjI1NSk+Pj4xfWVsc2V7Y2E9Y1tMPj4yXXwwfWlmKChkYXwwKSE9KDAtY2F8MCkpe2lmKGFhKXtjYT0oXyYyNTUpPj4+MX1lbHNle2NhPWNbSD4+Ml18MH1pZigoY2F8MCkhPTApe2lmKGJhKXtiYT0oJCYyNTUpPj4+MX1lbHNle2JhPWNbTD4+Ml18MH1pZigoYmF8MCkhPTApe2FhPWNbZT4+Ml18MDtiYT1jW2FhKzEyPj4yXXwwO2NhPWNbYWErMTY+PjJdfDA7aWYoKGJhfDApPT0oY2F8MCkpeyQ9b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDA7Y2E9Y1tlPj4yXXwwO189YVt4Pj4wXXwwO2FhPWNhO2JhPWNbY2ErMTI+PjJdfDA7Y2E9Y1tjYSsxNj4+Ml18MH1lbHNleyQ9ZFtiYT4+MF18MH1kYT1hYSsxMnwwO2NhPShiYXwwKT09KGNhfDApO2lmKCgkJjI1NSk8PDI0Pj4yND09KGFbKChfJjEpPT0wP0s6Y1tEPj4yXXwwKT4+MF18MCkpe2lmKGNhKXtvY1tjWyhjW2FhPj4yXXwwKSs0MD4+Ml0mMTI3XShhYSl8MH1lbHNle2NbZGE+PjJdPWJhKzF9Xz1hW3g+PjBdfDA7aWYoKF8mMSk9PTApe189KF8mMjU1KT4+PjF9ZWxzZXtfPWNbSD4+Ml18MH1UPV8+Pj4wPjE/eDpUO2JyZWFrIGJ9aWYoY2Epe189b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDB9ZWxzZXtfPWRbYmE+PjBdfDB9aWYoISgoXyYyNTUpPDwyND4+MjQ9PShhWygoYVtzPj4wXSYxKT09MD9JOmNbbT4+Ml18MCk+PjBdfDApKSl7Qz0xOTY7YnJlYWsgYX1hYT1jW2U+PjJdfDA7Xz1hYSsxMnwwOyQ9Y1tfPj4yXXwwO2lmKCgkfDApPT0oY1thYSsxNj4+Ml18MCkpe29jW2NbKGNbYWE+PjJdfDApKzQwPj4yXSYxMjddKGFhKXwwfWVsc2V7Y1tfPj4yXT0kKzF9YVtsPj4wXT0xO189YVtzPj4wXXwwO2lmKChfJjEpPT0wKXtfPShfJjI1NSk+Pj4xfWVsc2V7Xz1jW0w+PjJdfDB9VD1fPj4+MD4xP3M6VDticmVhayBifX1pZihhYSl7YWE9KF8mMjU1KT4+PjF9ZWxzZXthYT1jW0g+PjJdfDB9YmE9Y1tlPj4yXXwwO2NhPWNbYmErMTI+PjJdfDA7ZGE9KGNhfDApPT0oY1tiYSsxNj4+Ml18MCk7aWYoKGFhfDApPT0wKXtpZihkYSl7Xz1vY1tjWyhjW2JhPj4yXXwwKSszNj4+Ml0mMTI3XShiYSl8MDskPWFbcz4+MF18MH1lbHNle189ZFtjYT4+MF18MH1pZighKChfJjI1NSk8PDI0Pj4yND09KGFbKCgkJjEpPT0wP0k6Y1ttPj4yXXwwKT4+MF18MCkpKXticmVhayBifWFhPWNbZT4+Ml18MDtfPWFhKzEyfDA7JD1jW18+PjJdfDA7aWYoKCR8MCk9PShjW2FhKzE2Pj4yXXwwKSl7b2NbY1soY1thYT4+Ml18MCkrNDA+PjJdJjEyN10oYWEpfDB9ZWxzZXtjW18+PjJdPSQrMX1hW2w+PjBdPTE7Xz1hW3M+PjBdfDA7aWYoKF8mMSk9PTApe189KF8mMjU1KT4+PjF9ZWxzZXtfPWNbTD4+Ml18MH1UPV8+Pj4wPjE/czpUO2JyZWFrIGJ9aWYoZGEpeyQ9b2NbY1soY1tiYT4+Ml18MCkrMzY+PjJdJjEyN10oYmEpfDA7Xz1hW3g+PjBdfDB9ZWxzZXskPWRbY2E+PjBdfDB9aWYoISgoJCYyNTUpPDwyND4+MjQ9PShhWygoXyYxKT09MD9LOmNbRD4+Ml18MCk+PjBdfDApKSl7YVtsPj4wXT0xO2JyZWFrIGJ9Xz1jW2U+PjJdfDA7JD1fKzEyfDA7YWE9Y1skPj4yXXwwO2lmKChhYXwwKT09KGNbXysxNj4+Ml18MCkpe29jW2NbKGNbXz4+Ml18MCkrNDA+PjJdJjEyN10oXyl8MH1lbHNle2NbJD4+Ml09YWErMX1fPWFbeD4+MF18MDtpZigoXyYxKT09MCl7Xz0oXyYyNTUpPj4+MX1lbHNle189Y1tIPj4yXXwwfVQ9Xz4+PjA+MT94OlR9YnJlYWt9O2Nhc2UgNDp7Xz0wO2U6d2hpbGUoMSl7JD1jW2U+PjJdfDA7ZG97aWYoKCR8MCkhPTApe2lmKChjWyQrMTI+PjJdfDApPT0oY1skKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbJD4+Ml18MCkrMzY+PjJdJjEyN10oJCl8MCk9PS0xKXtjW2U+PjJdPTA7JD0wO2JyZWFrfWVsc2V7JD1jW2U+PjJdfDA7YnJlYWt9fX1lbHNleyQ9MH19d2hpbGUoMCk7JD0oJHwwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZigkKXticmVha31lbHNle2JyZWFrIGV9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoISQpe2JyZWFrIGV9fWVsc2V7Qz0yNTl9fWVsc2V7Qz0yNTl9fXdoaWxlKDApO2lmKChDfDApPT0yNTkpe0M9MDtpZigkKXtmPTA7YnJlYWt9ZWxzZXtmPTB9fSQ9Y1tlPj4yXXwwO2FhPWNbJCsxMj4+Ml18MDtpZigoYWF8MCk9PShjWyQrMTY+PjJdfDApKXthYT1vY1tjWyhjWyQ+PjJdfDApKzM2Pj4yXSYxMjddKCQpfDB9ZWxzZXthYT1kW2FhPj4wXXwwfSQ9YWEmMjU1O2lmKCQ8PDI0Pj4yND4tMT8hKChiWyhjW0o+PjJdfDApKyhhYTw8MjQ+PjI0PDwxKT4+MV0mMjA0OCk9PTApOjApe2FhPWNbbz4+Ml18MDtpZigoYWF8MCk9PShwfDApKXtiYT0oY1tSPj4yXXwwKSE9MjEzO2NhPWNbbj4+Ml18MDthYT1wLWNhfDA7cD1hYT4+PjA8MjE0NzQ4MzY0Nz9hYTw8MTotMTtjYT13bihiYT9jYTowLHApfDA7aWYoKGNhfDApPT0wKXtDPTI2ODticmVhayBhfWlmKCFiYSl7YmE9Y1tuPj4yXXwwO2Nbbj4+Ml09Y2E7aWYoKGJhfDApIT0wKXtsY1tjW1I+PjJdJjI1NV0oYmEpO2NhPWNbbj4+Ml18MH19ZWxzZXtjW24+PjJdPWNhfWNbUj4+Ml09MjE0O2FhPWNhK2FhfDA7Y1tvPj4yXT1hYTtwPShjW24+PjJdfDApK3B8MH1jW28+PjJdPWFhKzE7YVthYT4+MF09JDtfPV8rMXwwfWVsc2V7YWE9YVt0Pj4wXXwwO2lmKChhYSYxKT09MCl7YWE9KGFhJjI1NSk+Pj4xfWVsc2V7YWE9Y1tQPj4yXXwwfWlmKCEoKCgoYWF8MCk9PTB8KF98MCk9PTApXjEpJiQ8PDI0Pj4yND09Rzw8MjQ+PjI0KSl7YnJlYWt9aWYoKFl8MCk9PShYfDApKXtZPVktWnwwO1g9WT4+PjA8MjE0NzQ4MzY0Nz9ZPDwxOi0xO2lmKChXfDApPT0yMTMpe1o9MH1XPXduKFosWCl8MDtpZigoV3wwKT09MCl7Qz0yODU7YnJlYWsgYX1aPVc7WD1XKyhYPj4+Mjw8Mil8MDtZPVcrKFk+PjI8PDIpfDA7Vz0yMTR9Y1tZPj4yXT1fO1k9WSs0fDA7Xz0wfSQ9Y1tlPj4yXXwwO2FhPSQrMTJ8MDtiYT1jW2FhPj4yXXwwO2lmKChiYXwwKT09KGNbJCsxNj4+Ml18MCkpe29jW2NbKGNbJD4+Ml18MCkrNDA+PjJdJjEyN10oJCl8MDtjb250aW51ZX1lbHNle2NbYWE+PjJdPWJhKzE7Y29udGludWV9fWlmKCEoKFp8MCk9PShZfDApfChffDApPT0wKSl7aWYoKFl8MCk9PShYfDApKXtZPVktWnwwO1g9WT4+PjA8MjE0NzQ4MzY0Nz9ZPDwxOi0xO2lmKChXfDApPT0yMTMpe1o9MH1XPXduKFosWCl8MDtpZigoV3wwKT09MCl7Qz0yOTc7YnJlYWsgYX1aPVc7WD1XKyhYPj4+Mjw8Mil8MDtZPVcrKFk+PjI8PDIpfDA7Vz0yMTR9Y1tZPj4yXT1fO1k9WSs0fDB9aWYoKFZ8MCk+MCl7Xz1jW2U+PjJdfDA7ZG97aWYoKF98MCkhPTApe2lmKChjW18rMTI+PjJdfDApPT0oY1tfKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbXz4+Ml18MCkrMzY+PjJdJjEyN10oXyl8MCk9PS0xKXtjW2U+PjJdPTA7Xz0wO2JyZWFrfWVsc2V7Xz1jW2U+PjJdfDA7YnJlYWt9fX1lbHNle189MH19d2hpbGUoMCk7Xz0oX3wwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZihfKXticmVha31lbHNle0M9MzE5O2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoIV8pe0M9MzE5O2JyZWFrIGF9fWVsc2V7Qz0zMTN9fWVsc2V7Qz0zMTN9fXdoaWxlKDApO2lmKChDfDApPT0zMTMpe0M9MDtpZihfKXtDPTMxOTticmVhayBhfWVsc2V7Zj0wfX1fPWNbZT4+Ml18MDskPWNbXysxMj4+Ml18MDtpZigoJHwwKT09KGNbXysxNj4+Ml18MCkpe189b2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwfWVsc2V7Xz1kWyQ+PjBdfDB9aWYoISgoXyYyNTUpPDwyND4+MjQ9PWg8PDI0Pj4yNCkpe0M9MzE5O2JyZWFrIGF9Xz1jW2U+PjJdfDA7JD1fKzEyfDA7YWE9Y1skPj4yXXwwO2lmKChhYXwwKT09KGNbXysxNj4+Ml18MCkpe29jW2NbKGNbXz4+Ml18MCkrNDA+PjJdJjEyN10oXyl8MDthYT1mOyQ9Zn1lbHNle2NbJD4+Ml09YWErMTthYT1mOyQ9Zn13aGlsZSgxKXtfPWNbZT4+Ml18MDtkb3tpZigoX3wwKSE9MCl7aWYoKGNbXysxMj4+Ml18MCk9PShjW18rMTY+PjJdfDApKXtpZigob2NbY1soY1tfPj4yXXwwKSszNj4+Ml0mMTI3XShfKXwwKT09LTEpe2NbZT4+Ml09MDtfPTA7YnJlYWt9ZWxzZXtfPWNbZT4+Ml18MDticmVha319fWVsc2V7Xz0wfX13aGlsZSgwKTtiYT0oX3wwKT09MDtkb3tpZigoJHwwKSE9MCl7aWYoKGNbJCsxMj4+Ml18MCkhPShjWyQrMTY+PjJdfDApKXtpZihiYSl7Xz1hYTticmVha31lbHNle0M9MzQxO2JyZWFrIGF9fWlmKCEoKG9jW2NbKGNbJD4+Ml18MCkrMzY+PjJdJjEyN10oJCl8MCk9PS0xKSl7aWYoYmFeKGFhfDApPT0wKXtfPWFhOyQ9YWF9ZWxzZXtDPTM0MTticmVhayBhfX1lbHNle189MDtmPTA7Qz0zMzR9fWVsc2V7Xz1hYTtDPTMzNH19d2hpbGUoMCk7aWYoKEN8MCk9PTMzNCl7Qz0wO2lmKGJhKXtDPTM0MTticmVhayBhfWVsc2V7JD0wfX1hYT1jW2U+PjJdfDA7YmE9Y1thYSsxMj4+Ml18MDtpZigoYmF8MCk9PShjW2FhKzE2Pj4yXXwwKSl7YWE9b2NbY1soY1thYT4+Ml18MCkrMzY+PjJdJjEyN10oYWEpfDB9ZWxzZXthYT1kW2JhPj4wXXwwfWlmKCEoKGFhJjI1NSk8PDI0Pj4yND4tMSkpe0M9MzQxO2JyZWFrIGF9aWYoKGJbKGNbSj4+Ml18MCkrKGFhPDwyND4+MjQ8PDEpPj4xXSYyMDQ4KT09MCl7Qz0zNDE7YnJlYWsgYX1hYT1jW28+PjJdfDA7aWYoKGFhfDApPT0ocHwwKSl7YmE9KGNbUj4+Ml18MCkhPTIxMztjYT1jW24+PjJdfDA7YWE9cC1jYXwwO3A9YWE+Pj4wPDIxNDc0ODM2NDc/YWE8PDE6LTE7Y2E9d24oYmE/Y2E6MCxwKXwwO2lmKChjYXwwKT09MCl7Qz0zNDQ7YnJlYWsgYX1kb3tpZihiYSl7Y1tuPj4yXT1jYX1lbHNle2JhPWNbbj4+Ml18MDtjW24+PjJdPWNhO2lmKChiYXwwKT09MCl7YnJlYWt9bGNbY1tSPj4yXSYyNTVdKGJhKTtjYT1jW24+PjJdfDB9fXdoaWxlKDApO2NbUj4+Ml09MjE0O2FhPWNhK2FhfDA7Y1tvPj4yXT1hYTtwPShjW24+PjJdfDApK3B8MH1jYT1jW2U+PjJdfDA7YmE9Y1tjYSsxMj4+Ml18MDtpZigoYmF8MCk9PShjW2NhKzE2Pj4yXXwwKSl7YmE9b2NbY1soY1tjYT4+Ml18MCkrMzY+PjJdJjEyN10oY2EpfDA7YWE9Y1tvPj4yXXwwfWVsc2V7YmE9ZFtiYT4+MF18MH1jW28+PjJdPWFhKzE7YVthYT4+MF09YmE7Vj1WKyAtMXwwO2NhPWNbZT4+Ml18MDthYT1jYSsxMnwwO2JhPWNbYWE+PjJdfDA7aWYoKGJhfDApPT0oY1tjYSsxNj4+Ml18MCkpe29jW2NbKGNbY2E+PjJdfDApKzQwPj4yXSYxMjddKGNhKXwwfWVsc2V7Y1thYT4+Ml09YmErMX1pZigoVnwwKT4wKXthYT1ffWVsc2V7YnJlYWt9fX1pZigoY1tvPj4yXXwwKT09KGNbbj4+Ml18MCkpe0M9MzYxO2JyZWFrIGF9YnJlYWt9O2Nhc2UgMTp7aWYoKFV8MCk9PTMpe0M9MzYzO2JyZWFrIGF9Qz1jW2U+PjJdfDA7Xz1jW0MrMTI+PjJdfDA7aWYoKF98MCk9PShjW0MrMTY+PjJdfDApKXtDPW9jW2NbKGNbQz4+Ml18MCkrMzY+PjJdJjEyN10oQyl8MH1lbHNle0M9ZFtfPj4wXXwwfWlmKCEoKEMmMjU1KTw8MjQ+PjI0Pi0xKSl7Qz05NjticmVhayBhfWlmKChiWyhjW0o+PjJdfDApKyhDPDwyND4+MjQ8PDEpPj4xXSY4MTkyKT09MCl7Qz05NjticmVhayBhfUM9Y1tlPj4yXXwwOyQ9QysxMnwwO189Y1skPj4yXXwwO2lmKChffDApPT0oY1tDKzE2Pj4yXXwwKSl7Qz1vY1tjWyhjW0M+PjJdfDApKzQwPj4yXSYxMjddKEMpfDB9ZWxzZXtjWyQ+PjJdPV8rMTtDPWRbXz4+MF18MH1fPUMmMjU1OyQ9YVt3Pj4wXXwwO0M9KCQmMSkhPTA7aWYoQyl7YWE9KGNbdz4+Ml0mLTIpKyAtMXwwOyQ9Y1tPPj4yXXwwfWVsc2V7YWE9MTA7JD0oJCYyNTUpPj4+MX1pZigoJHwwKT09KGFhfDApKXtsZyh3LGFhLDEsYWEsYWEsMCk7aWYoKGFbdz4+MF0mMSk9PTApe0M9OTN9ZWxzZXtDPTk0fX1lbHNle2lmKEMpe0M9OTR9ZWxzZXtDPTkzfX1pZigoQ3wwKT09OTMpe2Fbdz4+MF09KCQ8PDEpKzI7YmE9ZzthYT0kKzF8MH1lbHNlIGlmKChDfDApPT05NCl7YmE9Y1tFPj4yXXwwO2FhPSQrMXwwO2NbTz4+Ml09YWF9YVtiYSskPj4wXT1fO2FbYmErYWE+PjBdPTA7Qz05NzticmVha307ZGVmYXVsdDp7fX19d2hpbGUoMCk7Zjpkb3tpZigoQ3wwKT09OTcpe0M9MDtpZigoVXwwKT09Myl7Qz0zNjM7YnJlYWsgYX1lbHNle2FhPWY7JD1mfXdoaWxlKDEpe189Y1tlPj4yXXwwO2Rve2lmKChffDApIT0wKXtpZigoY1tfKzEyPj4yXXwwKT09KGNbXysxNj4+Ml18MCkpe2lmKChvY1tjWyhjW18+PjJdfDApKzM2Pj4yXSYxMjddKF8pfDApPT0tMSl7Y1tlPj4yXT0wO189MDticmVha31lbHNle189Y1tlPj4yXXwwO2JyZWFrfX19ZWxzZXtfPTB9fXdoaWxlKDApO2JhPShffDApPT0wO2Rve2lmKCgkfDApIT0wKXtpZigoY1skKzEyPj4yXXwwKSE9KGNbJCsxNj4+Ml18MCkpe2lmKGJhKXtfPWFhO2JyZWFrfWVsc2V7YnJlYWsgZn19aWYoISgob2NbY1soY1skPj4yXXwwKSszNj4+Ml0mMTI3XSgkKXwwKT09LTEpKXtpZihiYV4oYWF8MCk9PTApe189YWE7JD1hYX1lbHNle2JyZWFrIGZ9fWVsc2V7Xz0wO2Y9MDtDPTEwOX19ZWxzZXtfPWFhO0M9MTA5fX13aGlsZSgwKTtpZigoQ3wwKT09MTA5KXtDPTA7aWYoYmEpe2JyZWFrIGZ9ZWxzZXskPTB9fWJhPWNbZT4+Ml18MDthYT1jW2JhKzEyPj4yXXwwO2lmKChhYXwwKT09KGNbYmErMTY+PjJdfDApKXthYT1vY1tjWyhjW2JhPj4yXXwwKSszNj4+Ml0mMTI3XShiYSl8MH1lbHNle2FhPWRbYWE+PjBdfDB9aWYoISgoYWEmMjU1KTw8MjQ+PjI0Pi0xKSl7YnJlYWsgZn1pZigoYlsoY1tKPj4yXXwwKSsoYWE8PDI0Pj4yNDw8MSk+PjFdJjgxOTIpPT0wKXticmVhayBmfWJhPWNbZT4+Ml18MDtDPWJhKzEyfDA7YWE9Y1tDPj4yXXwwO2lmKChhYXwwKT09KGNbYmErMTY+PjJdfDApKXtDPW9jW2NbKGNbYmE+PjJdfDApKzQwPj4yXSYxMjddKGJhKXwwfWVsc2V7Y1tDPj4yXT1hYSsxO0M9ZFthYT4+MF18MH1hYT1DJjI1NTtiYT1hW3c+PjBdfDA7Y2E9KGJhJjEpIT0wO2lmKGNhKXtDPShjW3c+PjJdJi0yKSsgLTF8MDtiYT1jW08+PjJdfDB9ZWxzZXtDPTEwO2JhPShiYSYyNTUpPj4+MX1pZigoYmF8MCk9PShDfDApKXtsZyh3LEMsMSxDLEMsMCk7aWYoKGFbdz4+MF0mMSk9PTApe0M9MTI2fWVsc2V7Qz0xMjd9fWVsc2V7aWYoY2Epe0M9MTI3fWVsc2V7Qz0xMjZ9fWlmKChDfDApPT0xMjYpe0M9MDthW3c+PjBdPShiYTw8MSkrMjtjYT1nO2RhPWJhKzF8MH1lbHNlIGlmKChDfDApPT0xMjcpe0M9MDtjYT1jW0U+PjJdfDA7ZGE9YmErMXwwO2NbTz4+Ml09ZGF9YVtjYStiYT4+MF09YWE7YVtjYStkYT4+MF09MDthYT1ffX19d2hpbGUoMCk7VT1VKzF8MDtpZighKFU+Pj4wPDQpKXtDPTM2MzticmVha319Zzpzd2l0Y2goQ3wwKXtjYXNlIDk2OntjW2s+PjJdPWNbaz4+Ml18NDtlPTA7WT1aO2JyZWFrfTtjYXNlIDE5Njp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAyNDc6e2Nbaz4+Ml09Y1trPj4yXXw0O2U9MDtZPVo7YnJlYWt9O2Nhc2UgMjY4OntmYT1YYSg0KXwwO2NbZmE+PjJdPTIyNjgwO3diKGZhfDAsMjI3MjgsMjA2KX07Y2FzZSAyODU6e2ZhPVhhKDQpfDA7Y1tmYT4+Ml09MjI2ODA7d2IoZmF8MCwyMjcyOCwyMDYpfTtjYXNlIDI5Nzp7ZmE9WGEoNCl8MDtjW2ZhPj4yXT0yMjY4MDt3YihmYXwwLDIyNzI4LDIwNil9O2Nhc2UgMzE5OntjW2s+PjJdPWNbaz4+Ml18NDtlPTA7WT1aO2JyZWFrfTtjYXNlIDM0MTp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAzNDQ6e2ZhPVhhKDQpfDA7Y1tmYT4+Ml09MjI2ODA7d2IoZmF8MCwyMjcyOCwyMDYpfTtjYXNlIDM2MTp7Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVha307Y2FzZSAzNjM6e2g6ZG97aWYoKFR8MCkhPTApe0Y9VCsxfDA7bj1UKzh8MDtsPVQrNHwwO289MTtpOndoaWxlKDEpe2g9YVtUPj4wXXwwO2lmKChoJjEpPT0wKXtoPShoJjI1NSk+Pj4xfWVsc2V7aD1jW2w+PjJdfDB9aWYoIShvPj4+MDxoPj4+MCkpe2JyZWFrIGh9aD1jW2U+PjJdfDA7ZG97aWYoKGh8MCkhPTApe2lmKChjW2grMTI+PjJdfDApPT0oY1toKzE2Pj4yXXwwKSl7aWYoKG9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MCk9PS0xKXtjW2U+PjJdPTA7aD0wO2JyZWFrfWVsc2V7aD1jW2U+PjJdfDA7YnJlYWt9fX1lbHNle2g9MH19d2hpbGUoMCk7aD0oaHwwKT09MDtkb3tpZigoZnwwKSE9MCl7aWYoKGNbZisxMj4+Ml18MCkhPShjW2YrMTY+PjJdfDApKXtpZihoKXticmVha31lbHNle2JyZWFrIGl9fWlmKCEoKG9jW2NbKGNbZj4+Ml18MCkrMzY+PjJdJjEyN10oZil8MCk9PS0xKSl7aWYoIWgpe2JyZWFrIGl9fWVsc2V7Qz0zODB9fWVsc2V7Qz0zODB9fXdoaWxlKDApO2lmKChDfDApPT0zODApe0M9MDtpZihoKXticmVha31lbHNle2Y9MH19aD1jW2U+PjJdfDA7Rz1jW2grMTI+PjJdfDA7aWYoKEd8MCk9PShjW2grMTY+PjJdfDApKXtoPW9jW2NbKGNbaD4+Ml18MCkrMzY+PjJdJjEyN10oaCl8MH1lbHNle2g9ZFtHPj4wXXwwfWlmKChhW1Q+PjBdJjEpPT0wKXtHPUZ9ZWxzZXtHPWNbbj4+Ml18MH1pZighKChoJjI1NSk8PDI0Pj4yND09KGFbRytvPj4wXXwwKSkpe2JyZWFrfW89bysxfDA7aD1jW2U+PjJdfDA7Rz1oKzEyfDA7SD1jW0c+PjJdfDA7aWYoKEh8MCk9PShjW2grMTY+PjJdfDApKXtvY1tjWyhjW2g+PjJdfDApKzQwPj4yXSYxMjddKGgpfDA7Y29udGludWV9ZWxzZXtjW0c+PjJdPUgrMTtjb250aW51ZX19Y1trPj4yXT1jW2s+PjJdfDQ7ZT0wO1k9WjticmVhayBnfX13aGlsZSgwKTtpZigoWnwwKSE9KFl8MCkpe2NbQj4+Ml09MDtxayh0LFosWSxCKTtpZigoY1tCPj4yXXwwKT09MCl7ZT0xO1k9Wn1lbHNle2Nbaz4+Ml09Y1trPj4yXXw0O2U9MDtZPVp9fWVsc2V7ZT0xfWJyZWFrfX1pZighKChhW3c+PjBdJjEpPT0wKT8odj1jW0U+PjJdfDAsKHZ8MCkhPTApOjApe3ZuKHYpfWlmKCEoKGFbcz4+MF0mMSk9PTApPyh6PWNbbT4+Ml18MCwoenwwKSE9MCk6MCl7dm4oeil9aWYoISgoYVt4Pj4wXSYxKT09MCk/KEE9Y1tEPj4yXXwwLChBfDApIT0wKTowKXt2bihBKX1pZighKChhW3k+PjBdJjEpPT0wKT8ocj1jW2o+PjJdfDAsKHJ8MCkhPTApOjApe3ZuKHIpfWlmKCEoKGFbdD4+MF0mMSk9PTApPyhxPWNbdCs4Pj4yXXwwLChxfDApIT0wKTowKXt2bihxKX1pZigoWXwwKT09MCl7aT11O3JldHVybiBlfDB9bGNbVyYyNTVdKFkpO2k9dTtyZXR1cm4gZXwwfWZ1bmN0aW9uIG9rKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2Q9WGEoOCl8MDtjW2Q+PjJdPTk5Mjg7Yj1KbihhfDApfDA7ZT1iKzEzfDA7ZT0oZXwwKT09MD8xOmU7d2hpbGUoMSl7Zz11bihlKXwwO2lmKChnfDApIT0wKXtmPTc7YnJlYWt9Zz1jWzU2NjZdfDA7Y1s1NjY2XT1nKzA7aWYoKGd8MCk9PTApe2JyZWFrfXNjW2cmMzFdKCl9aWYoKGZ8MCk9PTcpe2NbZys0Pj4yXT1iO2NbZz4+Ml09YjtmPWcrMTJ8MDtjW2QrND4+Ml09ZjtjW2crOD4+Ml09MDtMbihmfDAsYXwwLGIrMXwwKXwwO3diKGR8MCwxMDA2NCwxMDYpfWc9WGEoNCl8MDtjW2c+PjJdPTIyNjgwO3diKGd8MCwyMjcyOCwyMDYpfWZ1bmN0aW9uIHBrKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDttPWk7aT1pKzEyOHwwO3A9bTtzPW0rMjh8MDtkPW0rMTZ8MDtxPW0rMTJ8MDt0PW0rMjR8MDtjW2Q+PjJdPXM7bD1kKzR8MDtjW2w+PjJdPTIxMztzPXMrMTAwfDA7bj1jW2grMjg+PjJdfDA7dT1uKzR8MDtjW3U+PjJdPShjW3U+PjJdfDApKzE7aWYoISgoY1szMzY0XXwwKT09LTEpKXtjW3A+PjJdPTEzNDU2O2NbcCs0Pj4yXT0yMDg7Y1twKzg+PjJdPTA7Y2coMTM0NTYscCl9cD0oY1sxMzQ2MD4+Ml18MCkrIC0xfDA7dT1jW24rOD4+Ml18MDtpZigoY1tuKzEyPj4yXXwwKS11Pj4yPj4+MD5wPj4+MD8ocj1jW3UrKHA8PDIpPj4yXXwwLChyfDApIT0wKTowKXthW3Q+PjBdPTA7cD1jW2Y+PjJdfDA7ZG97aWYobmsoZSxwLGcsbixjW2grND4+Ml18MCxqLHQscixkLHEscyl8MCl7aWYoKGFbaz4+MF0mMSk9PTApe2FbaysxPj4wXT0wO2Fbaz4+MF09MH1lbHNle2FbY1trKzg+PjJdPj4wXT0wO2Nbays0Pj4yXT0wfWlmKChhW3Q+PjBdfDApIT0wKXtnPXhjW2NbKGNbcj4+Ml18MCkrMjg+PjJdJjYzXShyLDQ1KXwwO2g9YVtrPj4wXXwwO289KGgmMSkhPTA7aWYobyl7cz0oY1trPj4yXSYtMikrIC0xfDA7aD1jW2srND4+Ml18MH1lbHNle3M9MTA7aD0oaCYyNTUpPj4+MX1pZigoaHwwKT09KHN8MCkpe2xnKGsscywxLHMscywwKTtpZigoYVtrPj4wXSYxKT09MCl7bz0yMX1lbHNle289MjJ9fWVsc2V7aWYobyl7bz0yMn1lbHNle289MjF9fWlmKChvfDApPT0yMSl7YVtrPj4wXT0oaDw8MSkrMjtzPWsrMXwwO3Q9aCsxfDB9ZWxzZSBpZigob3wwKT09MjIpe3M9Y1trKzg+PjJdfDA7dD1oKzF8MDtjW2srND4+Ml09dH1hW3MraD4+MF09ZzthW3MrdD4+MF09MH1yPXhjW2NbKGNbcj4+Ml18MCkrMjg+PjJdJjYzXShyLDQ4KXwwO2g9Y1tkPj4yXXwwO3E9Y1txPj4yXXwwO2c9cSsgLTF8MDthOmRve2lmKGg+Pj4wPGc+Pj4wKXt3aGlsZSgxKXtzPWgrMXwwO2lmKCEoKGFbaD4+MF18MCk9PXI8PDI0Pj4yNCkpe2JyZWFrIGF9aWYocz4+PjA8Zz4+PjApe2g9c31lbHNle2g9czticmVha319fX13aGlsZSgwKTtzPWg7cj1hW2s+PjBdfDA7aWYoKHImMSk9PTApe3Q9cjt1PTEwO3I9KHImMjU1KT4+PjF9ZWxzZXt1PWNbaz4+Ml18MDt0PXUmMjU1O3U9KHUmLTIpKyAtMXwwO3I9Y1trKzQ+PjJdfDB9Zz1xLXN8MDtpZigocXwwKSE9KGh8MCkpe2lmKCh1LXJ8MCk+Pj4wPGc+Pj4wKXtsZyhrLHUscitnLXV8MCxyLHIsMCk7dD1hW2s+PjBdfDB9aWYoKHQmMSk9PTApe3Q9aysxfDB9ZWxzZXt0PWNbays4Pj4yXXwwfXM9cSsoci1zKXwwO3U9dCtyfDA7d2hpbGUoMSl7YVt1Pj4wXT1hW2g+PjBdfDA7aD1oKzF8MDtpZigoaHwwKT09KHF8MCkpe2JyZWFrfXU9dSsxfDB9YVt0K3M+PjBdPTA7cT1yK2d8MDtpZigoYVtrPj4wXSYxKT09MCl7YVtrPj4wXT1xPDwxO2JyZWFrfWVsc2V7Y1trKzQ+PjJdPXE7YnJlYWt9fX19d2hpbGUoMCk7az1jW2U+PjJdfDA7aWYoKGt8MCkhPTApe2lmKChjW2srMTI+PjJdfDApPT0oY1trKzE2Pj4yXXwwKT8ob2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwKT09LTE6MCl7Y1tlPj4yXT0wO2s9MH19ZWxzZXtrPTB9ZT0oa3wwKT09MDtkb3tpZigocHwwKSE9MCl7aWYoKGNbcCsxMj4+Ml18MCkhPShjW3ArMTY+PjJdfDApKXtpZihlKXticmVha31lbHNle289NTc7YnJlYWt9fWlmKCEoKG9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MCk9PS0xKSl7aWYoZSl7YnJlYWt9ZWxzZXtvPTU3O2JyZWFrfX1lbHNle2NbZj4+Ml09MDtvPTU1O2JyZWFrfX1lbHNle289NTV9fXdoaWxlKDApO2lmKChvfDApPT01NT9lOjApe289NTd9aWYoKG98MCk9PTU3KXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWs7dD1uKzR8MDt1PWNbdD4+Ml18MDtjW3Q+PjJdPXUrIC0xO2lmKCh1fDApPT0wKXtsY1tjWyhjW24+PjJdfDApKzg+PjJdJjI1NV0obil9aj1jW2Q+PjJdfDA7Y1tkPj4yXT0wO2lmKChqfDApPT0wKXtpPW07cmV0dXJufWxjW2NbbD4+Ml0mMjU1XShqKTtpPW07cmV0dXJufXU9WGEoNCl8MDtjW3U+PjJdPTIxMzA0O3diKHV8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHFrKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTA7Zz1pO2s9YVtiPj4wXXwwO2lmKChrJjEpPT0wKXtqPShrJjI1NSk+Pj4xfWVsc2V7aj1jW2IrND4+Ml18MH1pZigoanwwKT09MCl7aT1nO3JldHVybn1pZigoZHwwKSE9KGV8MCk/KGg9ZSsgLTR8MCxoPj4+MD5kPj4+MCk6MCl7aj1kO2Rve2s9Y1tqPj4yXXwwO2Nbaj4+Ml09Y1toPj4yXTtjW2g+PjJdPWs7aj1qKzR8MDtoPWgrIC00fDB9d2hpbGUoaj4+PjA8aD4+PjApO2s9YVtiPj4wXXwwfWlmKChrJjEpPT0wKXtoPWIrMXwwO2I9KGsmMjU1KT4+PjF9ZWxzZXtoPWNbYis4Pj4yXXwwO2I9Y1tiKzQ+PjJdfDB9ZT1lKyAtNHwwO2s9YVtoPj4wXXwwO2o9azw8MjQ+PjI0PDF8azw8MjQ+PjI0PT0xMjc7YTpkb3tpZihlPj4+MD5kPj4+MCl7Yj1oK2J8MDt3aGlsZSgxKXtpZighaj8oazw8MjQ+PjI0fDApIT0oY1tkPj4yXXwwKTowKXticmVha31oPShiLWh8MCk+MT9oKzF8MDpoO2Q9ZCs0fDA7az1hW2g+PjBdfDA7aj1rPDwyND4+MjQ8MXxrPDwyND4+MjQ9PTEyNztpZighKGQ+Pj4wPGU+Pj4wKSl7YnJlYWsgYX19Y1tmPj4yXT00O2k9ZztyZXR1cm59fXdoaWxlKDApO2lmKGope2k9ZztyZXR1cm59aj1jW2U+PjJdfDA7aWYoIShrPDwyND4+MjQ+Pj4wPGo+Pj4wfChqfDApPT0wKSl7aT1nO3JldHVybn1jW2Y+PjJdPTQ7aT1nO3JldHVybn1mdW5jdGlvbiByayhhKXthPWF8MDt2YXIgYj0wO2I9aTtpZigoYXwwKSE9MCl7dm4oYSl9aT1iO3JldHVybn1mdW5jdGlvbiBzayhhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gdGsoYixkLGUsZixnLGgsaixrKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO249aTtpPWkrNTc2fDA7cT1uO3Y9bisyNHwwO2Q9bisxNnwwO3I9bis0NjR8MDt1PW4rNTY4fDA7cz1uKzQyNHwwO3A9bis0Njh8MDtjW2Q+PjJdPXY7bT1kKzR8MDtjW20+PjJdPTIxMzt2PXYrNDAwfDA7bz1jW2grMjg+PjJdfDA7eD1vKzR8MDtjW3g+PjJdPShjW3g+PjJdfDApKzE7aWYoISgoY1szMzYyXXwwKT09LTEpKXtjW3E+PjJdPTEzNDQ4O2NbcSs0Pj4yXT0yMDg7Y1txKzg+PjJdPTA7Y2coMTM0NDgscSl9eD0oY1sxMzQ1Mj4+Ml18MCkrIC0xfDA7dz1jW28rOD4+Ml18MDtpZigoY1tvKzEyPj4yXXwwKS13Pj4yPj4+MD54Pj4+MD8odD1jW3crKHg8PDIpPj4yXXwwLCh0fDApIT0wKTowKXthW3U+PjBdPTA7ZG97aWYodWsoZSxjW2Y+PjJdfDAsZyxvLGNbaCs0Pj4yXXwwLGosdSx0LGQscix2KXwwKXt1Y1tjWyhjW3Q+PjJdfDApKzQ4Pj4yXSYzMV0odCwxMzE2OCwxMzE3OHwwLHMpfDA7aD1jW3I+PjJdfDA7Zz1jW2Q+PjJdfDA7dD1oLWd8MDtpZigodHwwKT4zOTIpe3Y9dW4oKHQ+PjIpKzJ8MCl8MDtpZigodnwwKT09MCl7eD1YYSg0KXwwO2NbeD4+Ml09MjI2ODA7d2IoeHwwLDIyNzI4LDIwNil9ZWxzZXt0PXZ9fWVsc2V7dD0wO3Y9cH1pZigoYVt1Pj4wXXwwKSE9MCl7YVt2Pj4wXT00NTt2PXYrMXwwfWlmKGc+Pj4wPGg+Pj4wKXtoPXMrNDB8MDt1PXM7ZG97eD1jW2c+PjJdfDA7dz1zO3doaWxlKDEpe2lmKChjW3c+PjJdfDApPT0oeHwwKSl7YnJlYWt9dz13KzR8MDtpZigod3wwKT09KGh8MCkpe3c9aDticmVha319YVt2Pj4wXT1hWzEzMTY4Kyh3LXU+PjIpPj4wXXwwO2c9Zys0fDA7dj12KzF8MH13aGlsZShnPj4+MDwoY1tyPj4yXXwwKT4+PjApfWFbdj4+MF09MDtjW3E+PjJdPWs7aWYoKEZhKHB8MCwxMzEwNCxxfDApfDApPT0xKXtpZigodHwwKT09MCl7YnJlYWt9dm4odCk7YnJlYWt9aj1YYSg4KXwwO2Nbaj4+Ml09OTkyODt3aGlsZSgxKXtkPXVuKDI4KXwwO2lmKChkfDApIT0wKXtsPTI5O2JyZWFrfWw9Y1s1NjY2XXwwO2NbNTY2Nl09bCswO2lmKChsfDApPT0wKXtsPTI3O2JyZWFrfXNjW2wmMzFdKCl9aWYoKGx8MCk9PTI3KXt4PVhhKDQpfDA7Y1t4Pj4yXT0yMjY4MDt3Yih4fDAsMjI3MjgsMjA2KX1lbHNlIGlmKChsfDApPT0yOSl7Y1tkKzQ+PjJdPTE1O2NbZD4+Ml09MTU7Yj1kKzEyfDA7Y1tqKzQ+PjJdPWI7Y1tkKzg+PjJdPTA7Yj1iKzB8MDtkPTEzMTEyfDA7bD1iKzE2fDA7ZG97YVtiPj4wXT1hW2Q+PjBdfDA7Yj1iKzF8MDtkPWQrMXwwfXdoaWxlKChifDApPChsfDApKTt3YihqfDAsMTAwNjQsMTA2KX19fXdoaWxlKDApO2s9Y1tlPj4yXXwwO2lmKChrfDApIT0wKXtwPWNbaysxMj4+Ml18MDtpZigocHwwKT09KGNbaysxNj4+Ml18MCkpe3A9b2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwfWVsc2V7cD1jW3A+PjJdfDB9aWYoKHB8MCk9PS0xKXtjW2U+PjJdPTA7ZT0wO2s9MX1lbHNle2U9aztrPTB9fWVsc2V7ZT0wO2s9MX1xPWNbZj4+Ml18MDtkb3tpZigocXwwKSE9MCl7cD1jW3ErMTI+PjJdfDA7aWYoKHB8MCk9PShjW3ErMTY+PjJdfDApKXtwPW9jW2NbKGNbcT4+Ml18MCkrMzY+PjJdJjEyN10ocSl8MH1lbHNle3A9Y1twPj4yXXwwfWlmKCEoKHB8MCk9PS0xKSl7aWYoayl7YnJlYWt9ZWxzZXtsPTQ3O2JyZWFrfX1lbHNle2NbZj4+Ml09MDtsPTQ1O2JyZWFrfX1lbHNle2w9NDV9fXdoaWxlKDApO2lmKChsfDApPT00NT9rOjApe2w9NDd9aWYoKGx8MCk9PTQ3KXtjW2o+PjJdPWNbaj4+Ml18Mn1jW2I+PjJdPWU7dz1vKzR8MDt4PWNbdz4+Ml18MDtjW3c+PjJdPXgrIC0xO2lmKCh4fDApPT0wKXtsY1tjWyhjW28+PjJdfDApKzg+PjJdJjI1NV0obyl9bD1jW2Q+PjJdfDA7Y1tkPj4yXT0wO2lmKChsfDApPT0wKXtpPW47cmV0dXJufWxjW2NbbT4+Ml0mMjU1XShsKTtpPW47cmV0dXJufXg9WGEoNCl8MDtjW3g+PjJdPTIxMzA0O3diKHh8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIHVrKGIsZSxmLGcsaCxqLGssbCxtLG4sbyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7dmFyIHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTA7dj1pO2k9aSs1OTJ8MDtRPXY7Tz12KzExMnwwO0s9disxMnwwO0c9disxMDB8MDtIPXYrNDB8MDtFPXYrMjR8MDtOPXYrMzZ8MDtNPXYrODh8MDtMPXYrNzZ8MDtKPXYrNTJ8MDtJPXYrNjR8MDtQPXYrMTIwfDA7Rj12KzUyMHwwO3Q9dis1MjR8MDt3PXYrNTM2fDA7eD12KzU0OHwwO3I9dis1NjB8MDtzPXYrNTcyfDA7QT12KzU4NHwwO2NbRj4+Ml09MDtjW3QrMD4+Ml09MDtjW3QrND4+Ml09MDtjW3QrOD4+Ml09MDtjW3crMD4+Ml09MDtjW3crND4+Ml09MDtjW3crOD4+Ml09MDtjW3grMD4+Ml09MDtjW3grND4+Ml09MDtjW3grOD4+Ml09MDtjW3IrMD4+Ml09MDtjW3IrND4+Ml09MDtjW3IrOD4+Ml09MDtjW3MrMD4+Ml09MDtjW3MrND4+Ml09MDtjW3MrOD4+Ml09MDtkb3tpZihmKXtpZighKChjWzMyNjBdfDApPT0tMSkpe2NbUT4+Ml09MTMwNDA7Y1tRKzQ+PjJdPTIwODtjW1ErOD4+Ml09MDtjZygxMzA0MCxRKX1DPShjWzEzMDQ0Pj4yXXwwKSsgLTF8MDtJPWNbZys4Pj4yXXwwO2lmKChjW2crMTI+PjJdfDApLUk+PjI+Pj4wPkM+Pj4wPyhEPWNbSSsoQzw8Mik+PjJdfDAsKER8MCkhPTApOjApe21jW2NbKGNbRD4+Ml18MCkrNDQ+PjJdJjEyN10oTyxEKTtjW0Y+PjJdPWNbTz4+Ml07bWNbY1soY1tEPj4yXXwwKSszMj4+Ml0mMTI3XShLLEQpO2lmKChhW3I+PjBdJjEpPT0wKXtjW3IrND4+Ml09MDthW3I+PjBdPTB9ZWxzZXtjW2Nbcis4Pj4yXT4+Ml09MDtjW3IrND4+Ml09MH1vZyhyKTtjW3IrMD4+Ml09Y1tLKzA+PjJdO2Nbcis0Pj4yXT1jW0srND4+Ml07Y1tyKzg+PjJdPWNbSys4Pj4yXTtjW0srMD4+Ml09MDtjW0srND4+Ml09MDtjW0srOD4+Ml09MDttY1tjWyhjW0Q+PjJdfDApKzI4Pj4yXSYxMjddKEcsRCk7aWYoKGFbeD4+MF0mMSk9PTApe2NbeCs0Pj4yXT0wO2FbeD4+MF09MH1lbHNle2NbY1t4Kzg+PjJdPj4yXT0wO2NbeCs0Pj4yXT0wfW9nKHgpO2NbeCswPj4yXT1jW0crMD4+Ml07Y1t4KzQ+PjJdPWNbRys0Pj4yXTtjW3grOD4+Ml09Y1tHKzg+PjJdO2NbRyswPj4yXT0wO2NbRys0Pj4yXT0wO2NbRys4Pj4yXT0wO2c9b2NbY1soY1tEPj4yXXwwKSsxMj4+Ml0mMTI3XShEKXwwO0c9b2NbY1soY1tEPj4yXXwwKSsxNj4+Ml0mMTI3XShEKXwwO21jW2NbKGNbRD4+Ml18MCkrMjA+PjJdJjEyN10oSCxEKTtpZigoYVt0Pj4wXSYxKT09MCl7YVt0KzE+PjBdPTA7YVt0Pj4wXT0wfWVsc2V7YVtjW3QrOD4+Ml0+PjBdPTA7Y1t0KzQ+PjJdPTB9aWcodCk7Y1t0KzA+PjJdPWNbSCswPj4yXTtjW3QrND4+Ml09Y1tIKzQ+PjJdO2NbdCs4Pj4yXT1jW0grOD4+Ml07Y1tIKzA+PjJdPTA7Y1tIKzQ+PjJdPTA7Y1tIKzg+PjJdPTA7bWNbY1soY1tEPj4yXXwwKSsyND4+Ml0mMTI3XShFLEQpO2lmKChhW3c+PjBdJjEpPT0wKXtjW3crND4+Ml09MDthW3c+PjBdPTB9ZWxzZXtjW2Nbdys4Pj4yXT4+Ml09MDtjW3crND4+Ml09MH1vZyh3KTtjW3crMD4+Ml09Y1tFKzA+PjJdO2Nbdys0Pj4yXT1jW0UrND4+Ml07Y1t3Kzg+PjJdPWNbRSs4Pj4yXTtjW0UrMD4+Ml09MDtjW0UrND4+Ml09MDtjW0UrOD4+Ml09MDtmPW9jW2NbKGNbRD4+Ml18MCkrMzY+PjJdJjEyN10oRCl8MDticmVha30kPVhhKDQpfDA7Y1skPj4yXT0yMTMwNDt3YigkfDAsMjEzNzYsMTk2KX1lbHNle2lmKCEoKGNbMzI0NF18MCk9PS0xKSl7Y1tRPj4yXT0xMjk3NjtjW1ErND4+Ml09MjA4O2NbUSs4Pj4yXT0wO2NnKDEyOTc2LFEpfUQ9KGNbMTI5ODA+PjJdfDApKyAtMXwwO0U9Y1tnKzg+PjJdfDA7aWYoKGNbZysxMj4+Ml18MCktRT4+Mj4+PjA+RD4+PjA/KEM9Y1tFKyhEPDwyKT4+Ml18MCwoQ3wwKSE9MCk6MCl7bWNbY1soY1tDPj4yXXwwKSs0ND4+Ml0mMTI3XShOLEMpO2NbRj4+Ml09Y1tOPj4yXTttY1tjWyhjW0M+PjJdfDApKzMyPj4yXSYxMjddKE0sQyk7aWYoKGFbcj4+MF0mMSk9PTApe2Nbcis0Pj4yXT0wO2Fbcj4+MF09MH1lbHNle2NbY1tyKzg+PjJdPj4yXT0wO2Nbcis0Pj4yXT0wfW9nKHIpO2NbciswPj4yXT1jW00rMD4+Ml07Y1tyKzQ+PjJdPWNbTSs0Pj4yXTtjW3IrOD4+Ml09Y1tNKzg+PjJdO2NbTSswPj4yXT0wO2NbTSs0Pj4yXT0wO2NbTSs4Pj4yXT0wO21jW2NbKGNbQz4+Ml18MCkrMjg+PjJdJjEyN10oTCxDKTtpZigoYVt4Pj4wXSYxKT09MCl7Y1t4KzQ+PjJdPTA7YVt4Pj4wXT0wfWVsc2V7Y1tjW3grOD4+Ml0+PjJdPTA7Y1t4KzQ+PjJdPTB9b2coeCk7Y1t4KzA+PjJdPWNbTCswPj4yXTtjW3grND4+Ml09Y1tMKzQ+PjJdO2NbeCs4Pj4yXT1jW0wrOD4+Ml07Y1tMKzA+PjJdPTA7Y1tMKzQ+PjJdPTA7Y1tMKzg+PjJdPTA7Zz1vY1tjWyhjW0M+PjJdfDApKzEyPj4yXSYxMjddKEMpfDA7Rz1vY1tjWyhjW0M+PjJdfDApKzE2Pj4yXSYxMjddKEMpfDA7bWNbY1soY1tDPj4yXXwwKSsyMD4+Ml0mMTI3XShKLEMpO2lmKChhW3Q+PjBdJjEpPT0wKXthW3QrMT4+MF09MDthW3Q+PjBdPTB9ZWxzZXthW2NbdCs4Pj4yXT4+MF09MDtjW3QrND4+Ml09MH1pZyh0KTtjW3QrMD4+Ml09Y1tKKzA+PjJdO2NbdCs0Pj4yXT1jW0orND4+Ml07Y1t0Kzg+PjJdPWNbSis4Pj4yXTtjW0orMD4+Ml09MDtjW0orND4+Ml09MDtjW0orOD4+Ml09MDttY1tjWyhjW0M+PjJdfDApKzI0Pj4yXSYxMjddKEksQyk7aWYoKGFbdz4+MF0mMSk9PTApe2Nbdys0Pj4yXT0wO2Fbdz4+MF09MH1lbHNle2NbY1t3Kzg+PjJdPj4yXT0wO2Nbdys0Pj4yXT0wfW9nKHcpO2NbdyswPj4yXT1jW0krMD4+Ml07Y1t3KzQ+PjJdPWNbSSs0Pj4yXTtjW3crOD4+Ml09Y1tJKzg+PjJdO2NbSSswPj4yXT0wO2NbSSs0Pj4yXT0wO2NbSSs4Pj4yXT0wO2Y9b2NbY1soY1tDPj4yXXwwKSszNj4+Ml0mMTI3XShDKXwwO2JyZWFrfSQ9WGEoNCl8MDtjWyQ+PjJdPTIxMzA0O3diKCR8MCwyMTM3NiwxOTYpfX13aGlsZSgwKTtjW24+PjJdPWNbbT4+Ml07ST1yKzR8MDtEPXIrOHwwO0g9eCs0fDA7Qz14Kzh8MDtMPShoJjUxMnwwKSE9MDtKPXcrNHwwO2g9dys4fDA7TT1zKzR8MDtFPXMrOHwwO049RiszfDA7Sz1tKzR8MDtPPXQrNHwwO1M9UCs0MDB8MDtVPVA7VD1QO1E9MDtQPTA7Uj0yMTM7YTp3aGlsZSgxKXtWPWNbYj4+Ml18MDtkb3tpZigoVnwwKSE9MCl7Vz1jW1YrMTI+PjJdfDA7aWYoKFd8MCk9PShjW1YrMTY+PjJdfDApKXtWPW9jW2NbKGNbVj4+Ml18MCkrMzY+PjJdJjEyN10oVil8MH1lbHNle1Y9Y1tXPj4yXXwwfWlmKChWfDApPT0tMSl7Y1tiPj4yXT0wO1Y9MTticmVha31lbHNle1Y9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7Vj0xfX13aGlsZSgwKTtpZigoZXwwKSE9MCl7Vz1jW2UrMTI+PjJdfDA7aWYoKFd8MCk9PShjW2UrMTY+PjJdfDApKXtXPW9jW2NbKGNbZT4+Ml18MCkrMzY+PjJdJjEyN10oZSl8MH1lbHNle1c9Y1tXPj4yXXwwfWlmKCEoKFd8MCk9PS0xKSl7aWYoIVYpe0I9Mzc4O2JyZWFrfX1lbHNle0I9NzV9fWVsc2V7Qj03NX1pZigoQnwwKT09NzUpe0I9MDtpZihWKXtlPTA7Qj0zNzg7YnJlYWt9ZWxzZXtlPTB9fWI6ZG97c3dpdGNoKGFbRitRPj4wXXwwKXtjYXNlIDE6e2lmKChRfDApPT0zKXtCPTM3ODticmVhayBhfUI9Y1tiPj4yXXwwO1Y9Y1tCKzEyPj4yXXwwO2lmKChWfDApPT0oY1tCKzE2Pj4yXXwwKSl7Qj1vY1tjWyhjW0I+PjJdfDApKzM2Pj4yXSYxMjddKEIpfDB9ZWxzZXtCPWNbVj4+Ml18MH1pZighKGhjW2NbKGNbbD4+Ml18MCkrMTI+PjJdJjYzXShsLDgxOTIsQil8MCkpe0I9OTc7YnJlYWsgYX1XPWNbYj4+Ml18MDtCPVcrMTJ8MDtWPWNbQj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSs0MD4+Ml0mMTI3XShXKXwwfWVsc2V7Y1tCPj4yXT1WKzQ7Vj1jW1Y+PjJdfDB9Vz1hW3M+PjBdfDA7Qj0oVyYxKSE9MDtpZihCKXtYPShjW3M+PjJdJi0yKSsgLTF8MDtXPWNbTT4+Ml18MH1lbHNle1g9MTtXPShXJjI1NSk+Pj4xfWlmKChXfDApPT0oWHwwKSl7cGcocyxYLDEsWCxYLDAsMCk7aWYoKGFbcz4+MF0mMSk9PTApe0I9OTR9ZWxzZXtCPTk1fX1lbHNle2lmKEIpe0I9OTV9ZWxzZXtCPTk0fX1pZigoQnwwKT09OTQpe2Fbcz4+MF09KFc8PDEpKzI7WD1NO1k9VysxfDB9ZWxzZSBpZigoQnwwKT09OTUpe1g9Y1tFPj4yXXwwO1k9VysxfDA7Y1tNPj4yXT1ZfWNbWCsoVzw8Mik+PjJdPVY7Y1tYKyhZPDwyKT4+Ml09MDtCPTk4O2JyZWFrfTtjYXNlIDI6e2lmKCEoKFB8MCkhPTB8UT4+PjA8Mikpe2lmKChRfDApPT0yKXtWPShhW04+PjBdfDApIT0wfWVsc2V7Vj0wfWlmKCEoTHxWKSl7UD0wO2JyZWFrIGJ9fVk9YVt3Pj4wXXwwO1Y9KFkmMSk9PTA/SjpjW2g+PjJdfDA7Yzpkb3tpZigoUXwwKSE9MD8oZFtGKyhRKyAtMSk+PjBdfDApPDI6MCl7d2hpbGUoMSl7aWYoKFkmMSk9PTApe1g9SjtXPShZJjI1NSk+Pj4xfWVsc2V7WD1jW2g+PjJdfDA7Vz1jW0o+PjJdfDB9aWYoKFZ8MCk9PShYKyhXPDwyKXwwKSl7YnJlYWt9aWYoIShoY1tjWyhjW2w+PjJdfDApKzEyPj4yXSY2M10obCw4MTkyLGNbVj4+Ml18MCl8MCkpe0I9MjEyO2JyZWFrfVk9YVt3Pj4wXXwwO1Y9Vis0fDB9aWYoKEJ8MCk9PTIxMil7Qj0wO1k9YVt3Pj4wXXwwfVg9KFkmMSk9PTA/SjpjW2g+PjJdfDA7Vz1WLVg+PjI7Wj1hW3M+PjBdfDA7JD0oWiYxKT09MDtpZigkKXtfPShaJjI1NSk+Pj4xfWVsc2V7Xz1jW00+PjJdfDB9aWYoIShXPj4+MD5fPj4+MCkpe2lmKCQpe189KFomMjU1KT4+PjE7JD1NO1o9XztfPU0rKF8tVzw8Mil8MH1lbHNle2FhPWNbRT4+Ml18MDtfPWNbTT4+Ml18MDskPWFhO1o9XztfPWFhKyhfLVc8PDIpfDB9Vz0kKyhaPDwyKXwwO2lmKChffDApPT0oV3wwKSl7Vz1lO1g9ZX1lbHNle1o9WDt3aGlsZSgxKXtpZigoY1tfPj4yXXwwKSE9KGNbWj4+Ml18MCkpe1c9ZTtWPVg7WD1lO2JyZWFrIGN9Xz1fKzR8MDtpZigoX3wwKT09KFd8MCkpe1c9ZTtYPWU7YnJlYWsgY31aPVorNHwwfX19ZWxzZXtXPWU7Vj1YO1g9ZX19ZWxzZXtXPWU7WD1lfX13aGlsZSgwKTt3aGlsZSgxKXtpZigoWSYxKT09MCl7Wj1KO1k9KFkmMjU1KT4+PjF9ZWxzZXtaPWNbaD4+Ml18MDtZPWNbSj4+Ml18MH1pZigoVnwwKT09KForKFk8PDIpfDApKXticmVha31ZPWNbYj4+Ml18MDtkb3tpZigoWXwwKSE9MCl7Wj1jW1krMTI+PjJdfDA7aWYoKFp8MCk9PShjW1krMTY+PjJdfDApKXtZPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1k9Y1taPj4yXXwwfWlmKChZfDApPT0tMSl7Y1tiPj4yXT0wO1k9MTticmVha31lbHNle1k9KGNbYj4+Ml18MCk9PTA7YnJlYWt9fWVsc2V7WT0xfX13aGlsZSgwKTtpZigoWHwwKSE9MCl7Wj1jW1grMTI+PjJdfDA7aWYoKFp8MCk9PShjW1grMTY+PjJdfDApKXtYPW9jW2NbKGNbWD4+Ml18MCkrMzY+PjJdJjEyN10oWCl8MH1lbHNle1g9Y1taPj4yXXwwfWlmKCEoKFh8MCk9PS0xKSl7aWYoWV4oV3wwKT09MCl7WT1XO1g9V31lbHNle2JyZWFrfX1lbHNle1c9MDtlPTA7Qj0yNDB9fWVsc2V7Qj0yNDB9aWYoKEJ8MCk9PTI0MCl7Qj0wO2lmKFkpe2JyZWFrfWVsc2V7WT1XO1g9MH19Wj1jW2I+PjJdfDA7Vz1jW1orMTI+PjJdfDA7aWYoKFd8MCk9PShjW1orMTY+PjJdfDApKXtXPW9jW2NbKGNbWj4+Ml18MCkrMzY+PjJdJjEyN10oWil8MH1lbHNle1c9Y1tXPj4yXXwwfWlmKChXfDApIT0oY1tWPj4yXXwwKSl7YnJlYWt9Xz1jW2I+PjJdfDA7Vz1fKzEyfDA7Wj1jW1c+PjJdfDA7aWYoKFp8MCk9PShjW18rMTY+PjJdfDApKXtvY1tjWyhjW18+PjJdfDApKzQwPj4yXSYxMjddKF8pfDB9ZWxzZXtjW1c+PjJdPVorNH1XPVk7WT1hW3c+PjBdfDA7Vj1WKzR8MH1pZihMKXtYPWFbdz4+MF18MDtpZigoWCYxKT09MCl7Vz1KO1g9KFgmMjU1KT4+PjF9ZWxzZXtXPWNbaD4+Ml18MDtYPWNbSj4+Ml18MH1pZigoVnwwKSE9KFcrKFg8PDIpfDApKXtCPTI1NTticmVhayBhfX1icmVha307Y2FzZSAwOntCPTk4O2JyZWFrfTtjYXNlIDM6e1Y9YVt4Pj4wXXwwO1g9KFYmMSk9PTA7aWYoWCl7Wj0oViYyNTUpPj4+MX1lbHNle1o9Y1tIPj4yXXwwfVc9YVtyPj4wXXwwO1k9KFcmMSk9PTA7aWYoWSl7Xz0oVyYyNTUpPj4+MX1lbHNle189Y1tJPj4yXXwwfWlmKChafDApIT0oMC1ffDApKXtpZihYKXtaPShWJjI1NSk+Pj4xfWVsc2V7Wj1jW0g+PjJdfDB9aWYoKFp8MCkhPTApe2lmKFkpe1k9KFcmMjU1KT4+PjF9ZWxzZXtZPWNbST4+Ml18MH1pZigoWXwwKSE9MCl7WD1jW2I+PjJdfDA7WT1jW1grMTI+PjJdfDA7Wj1jW1grMTY+PjJdfDA7aWYoKFl8MCk9PShafDApKXtXPW9jW2NbKGNbWD4+Ml18MCkrMzY+PjJdJjEyN10oWCl8MDtaPWNbYj4+Ml18MDtWPWFbeD4+MF18MDtYPVo7WT1jW1orMTI+PjJdfDA7Wj1jW1orMTY+PjJdfDB9ZWxzZXtXPWNbWT4+Ml18MH1fPVgrMTJ8MDtaPShZfDApPT0oWnwwKTtpZigoV3wwKT09KGNbKChWJjEpPT0wP0g6Y1tDPj4yXXwwKT4+Ml18MCkpe2lmKFope29jW2NbKGNbWD4+Ml18MCkrNDA+PjJdJjEyN10oWCl8MH1lbHNle2NbXz4+Ml09WSs0fVY9YVt4Pj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0g+PjJdfDB9UD1WPj4+MD4xP3g6UDticmVhayBifWlmKFope1Y9b2NbY1soY1tYPj4yXXwwKSszNj4+Ml0mMTI3XShYKXwwfWVsc2V7Vj1jW1k+PjJdfDB9aWYoKFZ8MCkhPShjWygoYVtyPj4wXSYxKT09MD9JOmNbRD4+Ml18MCk+PjJdfDApKXtCPTE5ODticmVhayBhfVY9Y1tiPj4yXXwwO1c9VisxMnwwO1g9Y1tXPj4yXXwwO2lmKChYfDApPT0oY1tWKzE2Pj4yXXwwKSl7b2NbY1soY1tWPj4yXXwwKSs0MD4+Ml0mMTI3XShWKXwwfWVsc2V7Y1tXPj4yXT1YKzR9YVtrPj4wXT0xO1Y9YVtyPj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0k+PjJdfDB9UD1WPj4+MD4xP3I6UDticmVhayBifX1pZihYKXtYPShWJjI1NSk+Pj4xfWVsc2V7WD1jW0g+PjJdfDB9WT1jW2I+PjJdfDA7Wj1jW1krMTI+PjJdfDA7Xz0oWnwwKT09KGNbWSsxNj4+Ml18MCk7aWYoKFh8MCk9PTApe2lmKF8pe1Y9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwO1c9YVtyPj4wXXwwfWVsc2V7Vj1jW1o+PjJdfDB9aWYoKFZ8MCkhPShjWygoVyYxKT09MD9JOmNbRD4+Ml18MCk+PjJdfDApKXticmVhayBifVg9Y1tiPj4yXXwwO1c9WCsxMnwwO1Y9Y1tXPj4yXXwwO2lmKChWfDApPT0oY1tYKzE2Pj4yXXwwKSl7b2NbY1soY1tYPj4yXXwwKSs0MD4+Ml0mMTI3XShYKXwwfWVsc2V7Y1tXPj4yXT1WKzR9YVtrPj4wXT0xO1Y9YVtyPj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0k+PjJdfDB9UD1WPj4+MD4xP3I6UDticmVhayBifWlmKF8pe1c9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwO1Y9YVt4Pj4wXXwwfWVsc2V7Vz1jW1o+PjJdfDB9aWYoKFd8MCkhPShjWygoViYxKT09MD9IOmNbQz4+Ml18MCk+PjJdfDApKXthW2s+PjBdPTE7YnJlYWsgYn1YPWNbYj4+Ml18MDtXPVgrMTJ8MDtWPWNbVz4+Ml18MDtpZigoVnwwKT09KGNbWCsxNj4+Ml18MCkpe29jW2NbKGNbWD4+Ml18MCkrNDA+PjJdJjEyN10oWCl8MH1lbHNle2NbVz4+Ml09Vis0fVY9YVt4Pj4wXXwwO2lmKChWJjEpPT0wKXtWPShWJjI1NSk+Pj4xfWVsc2V7Vj1jW0g+PjJdfDB9UD1WPj4+MD4xP3g6UH1icmVha307Y2FzZSA0OntWPTA7d2hpbGUoMSl7WD1jW2I+PjJdfDA7ZG97aWYoKFh8MCkhPTApe1c9Y1tYKzEyPj4yXXwwO2lmKChXfDApPT0oY1tYKzE2Pj4yXXwwKSl7Vz1vY1tjWyhjW1g+PjJdfDApKzM2Pj4yXSYxMjddKFgpfDB9ZWxzZXtXPWNbVz4+Ml18MH1pZigoV3wwKT09LTEpe2NbYj4+Ml09MDtXPTE7YnJlYWt9ZWxzZXtXPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle1c9MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe1g9Y1tlKzEyPj4yXXwwO2lmKChYfDApPT0oY1tlKzE2Pj4yXXwwKSl7WD1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtYPWNbWD4+Ml18MH1pZighKChYfDApPT0tMSkpe2lmKCFXKXticmVha319ZWxzZXtCPTI2OH19ZWxzZXtCPTI2OH1pZigoQnwwKT09MjY4KXtCPTA7aWYoVyl7ZT0wO2JyZWFrfWVsc2V7ZT0wfX1YPWNbYj4+Ml18MDtXPWNbWCsxMj4+Ml18MDtpZigoV3wwKT09KGNbWCsxNj4+Ml18MCkpe1c9b2NbY1soY1tYPj4yXXwwKSszNj4+Ml0mMTI3XShYKXwwfWVsc2V7Vz1jW1c+PjJdfDB9aWYoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsMjA0OCxXKXwwKXtYPWNbbj4+Ml18MDtpZigoWHwwKT09KG98MCkpe1k9KGNbSz4+Ml18MCkhPTIxMztaPWNbbT4+Ml18MDtvPW8tWnwwO1g9bz4+PjA8MjE0NzQ4MzY0Nz9vPDwxOi0xO289bz4+MjtpZighWSl7Wj0wfVo9d24oWixYKXwwO2lmKChafDApPT0wKXtCPTI3OTticmVhayBhfWlmKCFZKXtZPWNbbT4+Ml18MDtjW20+PjJdPVo7aWYoKFl8MCkhPTApe2xjW2NbSz4+Ml0mMjU1XShZKTtaPWNbbT4+Ml18MH19ZWxzZXtjW20+PjJdPVp9Y1tLPj4yXT0yMTQ7YWE9Wisobzw8Mil8MDtjW24+PjJdPWFhO289KGNbbT4+Ml18MCkrKFg+Pj4yPDwyKXwwO1g9YWF9Y1tuPj4yXT1YKzQ7Y1tYPj4yXT1XO1Y9VisxfDB9ZWxzZXtYPWFbdD4+MF18MDtpZigoWCYxKT09MCl7WD0oWCYyNTUpPj4+MX1lbHNle1g9Y1tPPj4yXXwwfWlmKCEoKCgoWHwwKT09MHwoVnwwKT09MCleMSkmKFd8MCk9PShHfDApKSl7YnJlYWt9aWYoKFV8MCk9PShTfDApKXtVPVUtVHwwO1M9VT4+PjA8MjE0NzQ4MzY0Nz9VPDwxOi0xO2lmKChSfDApPT0yMTMpe1Q9MH1SPXduKFQsUyl8MDtpZigoUnwwKT09MCl7Qj0yOTY7YnJlYWsgYX1UPVI7Uz1SKyhTPj4+Mjw8Mil8MDtVPVIrKFU+PjI8PDIpfDA7Uj0yMTR9Y1tVPj4yXT1WO1U9VSs0fDA7Vj0wfVc9Y1tiPj4yXXwwO1g9VysxMnwwO1k9Y1tYPj4yXXwwO2lmKChZfDApPT0oY1tXKzE2Pj4yXXwwKSl7b2NbY1soY1tXPj4yXXwwKSs0MD4+Ml0mMTI3XShXKXwwO2NvbnRpbnVlfWVsc2V7Y1tYPj4yXT1ZKzQ7Y29udGludWV9fWlmKCEoKFR8MCk9PShVfDApfChWfDApPT0wKSl7aWYoKFV8MCk9PShTfDApKXtVPVUtVHwwO1M9VT4+PjA8MjE0NzQ4MzY0Nz9VPDwxOi0xO2lmKChSfDApPT0yMTMpe1Q9MH1SPXduKFQsUyl8MDtpZigoUnwwKT09MCl7Qj0zMDg7YnJlYWsgYX1UPVI7Uz1SKyhTPj4+Mjw8Mil8MDtVPVIrKFU+PjI8PDIpfDA7Uj0yMTR9Y1tVPj4yXT1WO1U9VSs0fDB9aWYoKGZ8MCk+MCl7Vz1jW2I+PjJdfDA7ZG97aWYoKFd8MCkhPTApe1Y9Y1tXKzEyPj4yXXwwO2lmKChWfDApPT0oY1tXKzE2Pj4yXXwwKSl7Vj1vY1tjWyhjW1c+PjJdfDApKzM2Pj4yXSYxMjddKFcpfDB9ZWxzZXtWPWNbVj4+Ml18MH1pZigoVnwwKT09LTEpe2NbYj4+Ml09MDtWPTE7YnJlYWt9ZWxzZXtWPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle1Y9MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe1c9Y1tlKzEyPj4yXXwwO2lmKChXfDApPT0oY1tlKzE2Pj4yXXwwKSl7Vz1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtXPWNbVz4+Ml18MH1pZighKChXfDApPT0tMSkpe2lmKCFWKXtCPTMzMTticmVhayBhfX1lbHNle0I9MzI1fX1lbHNle0I9MzI1fWlmKChCfDApPT0zMjUpe0I9MDtpZihWKXtCPTMzMTticmVhayBhfWVsc2V7ZT0wfX1XPWNbYj4+Ml18MDtWPWNbVysxMj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoKFZ8MCkhPShnfDApKXtCPTMzMTticmVhayBhfVY9Y1tiPj4yXXwwO1c9VisxMnwwO1g9Y1tXPj4yXXwwO2lmKChYfDApPT0oY1tWKzE2Pj4yXXwwKSl7b2NbY1soY1tWPj4yXXwwKSs0MD4+Ml0mMTI3XShWKXwwO1g9ZTtXPWV9ZWxzZXtjW1c+PjJdPVgrNDtYPWU7Vz1lfXdoaWxlKDEpe1k9Y1tiPj4yXXwwO2Rve2lmKChZfDApIT0wKXtWPWNbWSsxMj4+Ml18MDtpZigoVnwwKT09KGNbWSsxNj4+Ml18MCkpe1Y9b2NbY1soY1tZPj4yXXwwKSszNj4+Ml0mMTI3XShZKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoKFZ8MCk9PS0xKXtjW2I+PjJdPTA7WT0xO2JyZWFrfWVsc2V7WT0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtZPTF9fXdoaWxlKDApO2lmKChXfDApIT0wKXtWPWNbVysxMj4+Ml18MDtpZigoVnwwKT09KGNbVysxNj4+Ml18MCkpe1Y9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vj1jW1Y+PjJdfDB9aWYoISgoVnwwKT09LTEpKXtpZihZXihYfDApPT0wKXtWPVg7Vz1YfWVsc2V7Qj0zNTQ7YnJlYWsgYX19ZWxzZXtWPTA7ZT0wO0I9MzQ3fX1lbHNle1Y9WDtCPTM0N31pZigoQnwwKT09MzQ3KXtCPTA7aWYoWSl7Qj0zNTQ7YnJlYWsgYX1lbHNle1c9MH19WT1jW2I+PjJdfDA7WD1jW1krMTI+PjJdfDA7aWYoKFh8MCk9PShjW1krMTY+PjJdfDApKXtYPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1g9Y1tYPj4yXXwwfWlmKCEoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsMjA0OCxYKXwwKSl7Qj0zNTQ7YnJlYWsgYX1YPWNbbj4+Ml18MDtpZigoWHwwKT09KG98MCkpe1k9KGNbSz4+Ml18MCkhPTIxMztaPWNbbT4+Ml18MDtYPW8tWnwwO289WD4+PjA8MjE0NzQ4MzY0Nz9YPDwxOi0xO1g9WD4+MjtpZighWSl7Wj0wfVo9d24oWixvKXwwO2lmKChafDApPT0wKXtCPTM1OTticmVhayBhfWRve2lmKFkpe2NbbT4+Ml09Wn1lbHNle1k9Y1ttPj4yXXwwO2NbbT4+Ml09WjtpZigoWXwwKT09MCl7YnJlYWt9bGNbY1tLPj4yXSYyNTVdKFkpO1o9Y1ttPj4yXXwwfX13aGlsZSgwKTtjW0s+PjJdPTIxNDtYPVorKFg8PDIpfDA7Y1tuPj4yXT1YO289KGNbbT4+Ml18MCkrKG8+Pj4yPDwyKXwwfVk9Y1tiPj4yXXwwO1o9Y1tZKzEyPj4yXXwwO2lmKChafDApPT0oY1tZKzE2Pj4yXXwwKSl7WT1vY1tjWyhjW1k+PjJdfDApKzM2Pj4yXSYxMjddKFkpfDA7WD1jW24+PjJdfDB9ZWxzZXtZPWNbWj4+Ml18MH1jW24+PjJdPVgrNDtjW1g+PjJdPVk7Zj1mKyAtMXwwO1g9Y1tiPj4yXXwwO1k9WCsxMnwwO1o9Y1tZPj4yXXwwO2lmKChafDApPT0oY1tYKzE2Pj4yXXwwKSl7b2NbY1soY1tYPj4yXXwwKSs0MD4+Ml0mMTI3XShYKXwwfWVsc2V7Y1tZPj4yXT1aKzR9aWYoKGZ8MCk+MCl7WD1WfWVsc2V7YnJlYWt9fX1pZigoY1tuPj4yXXwwKT09KGNbbT4+Ml18MCkpe0I9Mzc2O2JyZWFrIGF9YnJlYWt9O2RlZmF1bHQ6e319fXdoaWxlKDApO2Q6ZG97aWYoKEJ8MCk9PTk4KXtCPTA7aWYoKFF8MCk9PTMpe0I9Mzc4O2JyZWFrIGF9ZWxzZXtYPWU7Vj1lfXdoaWxlKDEpe1c9Y1tiPj4yXXwwO2Rve2lmKChXfDApIT0wKXtZPWNbVysxMj4+Ml18MDtpZigoWXwwKT09KGNbVysxNj4+Ml18MCkpe1c9b2NbY1soY1tXPj4yXXwwKSszNj4+Ml0mMTI3XShXKXwwfWVsc2V7Vz1jW1k+PjJdfDB9aWYoKFd8MCk9PS0xKXtjW2I+PjJdPTA7WT0xO2JyZWFrfWVsc2V7WT0oY1tiPj4yXXwwKT09MDticmVha319ZWxzZXtZPTF9fXdoaWxlKDApO2lmKChWfDApIT0wKXtXPWNbVisxMj4+Ml18MDtpZigoV3wwKT09KGNbVisxNj4+Ml18MCkpe1Y9b2NbY1soY1tWPj4yXXwwKSszNj4+Ml0mMTI3XShWKXwwfWVsc2V7Vj1jW1c+PjJdfDB9aWYoISgoVnwwKT09LTEpKXtpZihZXihYfDApPT0wKXtXPVg7Vj1YfWVsc2V7YnJlYWsgZH19ZWxzZXtXPTA7ZT0wO0I9MTExfX1lbHNle1c9WDtCPTExMX1pZigoQnwwKT09MTExKXtCPTA7aWYoWSl7YnJlYWsgZH1lbHNle1Y9MH19WT1jW2I+PjJdfDA7WD1jW1krMTI+PjJdfDA7aWYoKFh8MCk9PShjW1krMTY+PjJdfDApKXtYPW9jW2NbKGNbWT4+Ml18MCkrMzY+PjJdJjEyN10oWSl8MH1lbHNle1g9Y1tYPj4yXXwwfWlmKCEoaGNbY1soY1tsPj4yXXwwKSsxMj4+Ml0mNjNdKGwsODE5MixYKXwwKSl7YnJlYWsgZH1CPWNbYj4+Ml18MDtYPUIrMTJ8MDtZPWNbWD4+Ml18MDtpZigoWXwwKT09KGNbQisxNj4+Ml18MCkpe1g9b2NbY1soY1tCPj4yXXwwKSs0MD4+Ml0mMTI3XShCKXwwfWVsc2V7Y1tYPj4yXT1ZKzQ7WD1jW1k+PjJdfDB9WT1hW3M+PjBdfDA7Wj0oWSYxKSE9MDtpZihaKXtCPShjW3M+PjJdJi0yKSsgLTF8MDtZPWNbTT4+Ml18MH1lbHNle0I9MTtZPShZJjI1NSk+Pj4xfWlmKChZfDApPT0oQnwwKSl7cGcocyxCLDEsQixCLDAsMCk7aWYoKGFbcz4+MF0mMSk9PTApe0I9MTI4fWVsc2V7Qj0xMjl9fWVsc2V7aWYoWil7Qj0xMjl9ZWxzZXtCPTEyOH19aWYoKEJ8MCk9PTEyOCl7Qj0wO2Fbcz4+MF09KFk8PDEpKzI7Wj1NO189WSsxfDB9ZWxzZSBpZigoQnwwKT09MTI5KXtCPTA7Wj1jW0U+PjJdfDA7Xz1ZKzF8MDtjW00+PjJdPV99Y1taKyhZPDwyKT4+Ml09WDtjW1orKF88PDIpPj4yXT0wO1g9V319fXdoaWxlKDApO1E9USsxfDA7aWYoIShRPj4+MDw0KSl7Qj0zNzg7YnJlYWt9fWU6c3dpdGNoKEJ8MCl7Y2FzZSA5Nzp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDE5ODp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDI1NTp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDI3OTp7YWE9WGEoNCl8MDtjW2FhPj4yXT0yMjY4MDt3YihhYXwwLDIyNzI4LDIwNil9O2Nhc2UgMjk2OnthYT1YYSg0KXwwO2NbYWE+PjJdPTIyNjgwO3diKGFhfDAsMjI3MjgsMjA2KX07Y2FzZSAzMDg6e2FhPVhhKDQpfDA7Y1thYT4+Ml09MjI2ODA7d2IoYWF8MCwyMjcyOCwyMDYpfTtjYXNlIDMzMTp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDM1NDp7Y1tqPj4yXT1jW2o+PjJdfDQ7Yj0wO2JyZWFrfTtjYXNlIDM1OTp7YWE9WGEoNCl8MDtjW2FhPj4yXT0yMjY4MDt3YihhYXwwLDIyNzI4LDIwNil9O2Nhc2UgMzc2OntjW2o+PjJdPWNbaj4+Ml18NDtiPTA7YnJlYWt9O2Nhc2UgMzc4OntmOmRve2lmKChQfDApIT0wKXtsPVArNHwwO0Y9UCs4fDA7az0xO3doaWxlKDEpe209YVtQPj4wXXwwO2lmKChtJjEpPT0wKXttPShtJjI1NSk+Pj4xfWVsc2V7bT1jW2w+PjJdfDB9aWYoIShrPj4+MDxtPj4+MCkpe2JyZWFrIGZ9bj1jW2I+PjJdfDA7ZG97aWYoKG58MCkhPTApe209Y1tuKzEyPj4yXXwwO2lmKChtfDApPT0oY1tuKzE2Pj4yXXwwKSl7bT1vY1tjWyhjW24+PjJdfDApKzM2Pj4yXSYxMjddKG4pfDB9ZWxzZXttPWNbbT4+Ml18MH1pZigobXwwKT09LTEpe2NbYj4+Ml09MDttPTE7YnJlYWt9ZWxzZXttPShjW2I+PjJdfDApPT0wO2JyZWFrfX1lbHNle209MX19d2hpbGUoMCk7aWYoKGV8MCkhPTApe249Y1tlKzEyPj4yXXwwO2lmKChufDApPT0oY1tlKzE2Pj4yXXwwKSl7bj1vY1tjWyhjW2U+PjJdfDApKzM2Pj4yXSYxMjddKGUpfDB9ZWxzZXtuPWNbbj4+Ml18MH1pZighKChufDApPT0tMSkpe2lmKCFtKXticmVha319ZWxzZXtCPTM5Nn19ZWxzZXtCPTM5Nn1pZigoQnwwKT09Mzk2KXtCPTA7aWYobSl7YnJlYWt9ZWxzZXtlPTB9fW09Y1tiPj4yXXwwO249Y1ttKzEyPj4yXXwwO2lmKChufDApPT0oY1ttKzE2Pj4yXXwwKSl7bT1vY1tjWyhjW20+PjJdfDApKzM2Pj4yXSYxMjddKG0pfDB9ZWxzZXttPWNbbj4+Ml18MH1pZigoYVtQPj4wXSYxKT09MCl7bj1sfWVsc2V7bj1jW0Y+PjJdfDB9aWYoKG18MCkhPShjW24rKGs8PDIpPj4yXXwwKSl7YnJlYWt9az1rKzF8MDtnPWNbYj4+Ml18MDtuPWcrMTJ8MDttPWNbbj4+Ml18MDtpZigobXwwKT09KGNbZysxNj4+Ml18MCkpe29jW2NbKGNbZz4+Ml18MCkrNDA+PjJdJjEyN10oZyl8MDtjb250aW51ZX1lbHNle2Nbbj4+Ml09bSs0O2NvbnRpbnVlfX1jW2o+PjJdPWNbaj4+Ml18NDtiPTA7YnJlYWsgZX19d2hpbGUoMCk7aWYoKFR8MCkhPShVfDApKXtjW0E+PjJdPTA7cWsodCxULFUsQSk7aWYoKGNbQT4+Ml18MCk9PTApe2I9MX1lbHNle2Nbaj4+Ml09Y1tqPj4yXXw0O2I9MH19ZWxzZXtiPTE7VD1VfWJyZWFrfX1pZighKChhW3M+PjBdJjEpPT0wKT8oej1jW0U+PjJdfDAsKHp8MCkhPTApOjApe3ZuKHopfWlmKCEoKGFbcj4+MF0mMSk9PTApPyh5PWNbRD4+Ml18MCwoeXwwKSE9MCk6MCl7dm4oeSl9aWYoISgoYVt4Pj4wXSYxKT09MCk/KHU9Y1tDPj4yXXwwLCh1fDApIT0wKTowKXt2bih1KX1pZighKChhW3c+PjBdJjEpPT0wKT8ocT1jW2g+PjJdfDAsKHF8MCkhPTApOjApe3ZuKHEpfWlmKCEoKGFbdD4+MF0mMSk9PTApPyhwPWNbdCs4Pj4yXXwwLChwfDApIT0wKTowKXt2bihwKX1pZigoVHwwKT09MCl7aT12O3JldHVybiBifDB9bGNbUiYyNTVdKFQpO2k9djtyZXR1cm4gYnwwfWZ1bmN0aW9uIHZrKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7bT1pO2k9aSs0MzJ8MDtwPW07cz1tKzI0fDA7ZD1tKzE2fDA7cT1tKzEyfDA7dD1tKzQyNHwwO2NbZD4+Ml09cztsPWQrNHwwO2NbbD4+Ml09MjEzO3M9cys0MDB8MDtuPWNbaCsyOD4+Ml18MDt2PW4rNHwwO2Nbdj4+Ml09KGNbdj4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbcD4+Ml09MTM0NDg7Y1twKzQ+PjJdPTIwODtjW3ArOD4+Ml09MDtjZygxMzQ0OCxwKX1wPShjWzEzNDUyPj4yXXwwKSsgLTF8MDt1PWNbbis4Pj4yXXwwO2lmKChjW24rMTI+PjJdfDApLXU+PjI+Pj4wPnA+Pj4wPyhyPWNbdSsocDw8Mik+PjJdfDAsKHJ8MCkhPTApOjApe2FbdD4+MF09MDtwPWNbZj4+Ml18MDtkb3tpZih1ayhlLHAsZyxuLGNbaCs0Pj4yXXwwLGosdCxyLGQscSxzKXwwKXtpZigoYVtrPj4wXSYxKT09MCl7Y1trKzQ+PjJdPTA7YVtrPj4wXT0wfWVsc2V7Y1tjW2srOD4+Ml0+PjJdPTA7Y1trKzQ+PjJdPTB9aWYoKGFbdD4+MF18MCkhPTApe2c9eGNbY1soY1tyPj4yXXwwKSs0ND4+Ml0mNjNdKHIsNDUpfDA7aD1hW2s+PjBdfDA7bz0oaCYxKSE9MDtpZihvKXtzPShjW2s+PjJdJi0yKSsgLTF8MDtoPWNbays0Pj4yXXwwfWVsc2V7cz0xO2g9KGgmMjU1KT4+PjF9aWYoKGh8MCk9PShzfDApKXtwZyhrLHMsMSxzLHMsMCwwKTtpZigoYVtrPj4wXSYxKT09MCl7bz0yMX1lbHNle289MjJ9fWVsc2V7aWYobyl7bz0yMn1lbHNle289MjF9fWlmKChvfDApPT0yMSl7YVtrPj4wXT0oaDw8MSkrMjt0PWsrNHwwO3M9aCsxfDB9ZWxzZSBpZigob3wwKT09MjIpe3Q9Y1trKzg+PjJdfDA7cz1oKzF8MDtjW2srND4+Ml09c31jW3QrKGg8PDIpPj4yXT1nO2NbdCsoczw8Mik+PjJdPTB9cj14Y1tjWyhjW3I+PjJdfDApKzQ0Pj4yXSY2M10ociw0OCl8MDtzPWNbZD4+Ml18MDtxPWNbcT4+Ml18MDtoPXErIC00fDA7YTpkb3tpZihzPj4+MDxoPj4+MCl7d2hpbGUoMSl7Zz1zKzR8MDtpZigoY1tzPj4yXXwwKSE9KHJ8MCkpe2JyZWFrIGF9aWYoZz4+PjA8aD4+PjApe3M9Z31lbHNle3M9ZzticmVha319fX13aGlsZSgwKTt0PXM7cj1hW2s+PjBdfDA7aWYoKHImMSk9PTApe3Y9cjt1PTE7Zz0ociYyNTUpPj4+MX1lbHNle3U9Y1trPj4yXXwwO3Y9dSYyNTU7dT0odSYtMikrIC0xfDA7Zz1jW2srND4+Ml18MH1yPXEtdD4+MjtpZigocnwwKSE9MCl7aWYoKHUtZ3wwKT4+PjA8cj4+PjApe3BnKGssdSxnK3ItdXwwLGcsZywwLDApO3Y9YVtrPj4wXXwwfWlmKCh2JjEpPT0wKXt1PWsrNHwwfWVsc2V7dT1jW2srOD4+Ml18MH12PXUrKGc8PDIpfDA7aWYoKHN8MCkhPShxfDApKXtoPWcrKChoKygwLXQpfDApPj4+MikrMXwwO3doaWxlKDEpe2Nbdj4+Ml09Y1tzPj4yXTtzPXMrNHwwO2lmKChzfDApPT0ocXwwKSl7YnJlYWt9dj12KzR8MH12PXUrKGg8PDIpfDB9Y1t2Pj4yXT0wO3E9ZytyfDA7aWYoKGFbaz4+MF0mMSk9PTApe2Fbaz4+MF09cTw8MTticmVha31lbHNle2Nbays0Pj4yXT1xO2JyZWFrfX19fXdoaWxlKDApO2s9Y1tlPj4yXXwwO2lmKChrfDApIT0wKXtxPWNbaysxMj4+Ml18MDtpZigocXwwKT09KGNbaysxNj4+Ml18MCkpe3E9b2NbY1soY1trPj4yXXwwKSszNj4+Ml0mMTI3XShrKXwwfWVsc2V7cT1jW3E+PjJdfDB9aWYoKHF8MCk9PS0xKXtjW2U+PjJdPTA7az0wO2U9MX1lbHNle2U9MH19ZWxzZXtrPTA7ZT0xfWRve2lmKChwfDApIT0wKXtxPWNbcCsxMj4+Ml18MDtpZigocXwwKT09KGNbcCsxNj4+Ml18MCkpe3A9b2NbY1soY1twPj4yXXwwKSszNj4+Ml0mMTI3XShwKXwwfWVsc2V7cD1jW3E+PjJdfDB9aWYoISgocHwwKT09LTEpKXtpZihlKXticmVha31lbHNle289NjA7YnJlYWt9fWVsc2V7Y1tmPj4yXT0wO289NTg7YnJlYWt9fWVsc2V7bz01OH19d2hpbGUoMCk7aWYoKG98MCk9PTU4P2U6MCl7bz02MH1pZigob3wwKT09NjApe2Nbaj4+Ml09Y1tqPj4yXXwyfWNbYj4+Ml09azt1PW4rNHwwO3Y9Y1t1Pj4yXXwwO2NbdT4+Ml09disgLTE7aWYoKHZ8MCk9PTApe2xjW2NbKGNbbj4+Ml18MCkrOD4+Ml0mMjU1XShuKX1qPWNbZD4+Ml18MDtjW2Q+PjJdPTA7aWYoKGp8MCk9PTApe2k9bTtyZXR1cm59bGNbY1tsPj4yXSYyNTVdKGopO2k9bTtyZXR1cm59dj1YYSg0KXwwO2Nbdj4+Ml09MjEzMDQ7d2IodnwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gd2soYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24geGsoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIHlrKGIsZCxlLGYsZyxqLGwpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2o9anwwO2w9K2w7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtxPWk7aT1pKzM2OHwwO0E9cTtDPXErMTU2fDA7RT1xKzEzMnwwO0I9cSsyNTZ8MDt0PXErMTQ4fDA7cz1xKzM1NnwwO3I9cSszNTd8MDt4PXErMTM2fDA7ZD1xKzEwNHwwO3c9cSsxMTZ8MDtGPXErMTAwfDA7dj1xKzEyOHwwO3U9cSsxNTJ8MDtjW0U+PjJdPUM7aFtrPj4zXT1sO2NbQT4+Ml09Y1trPj4yXTtjW0ErND4+Ml09Y1trKzQ+PjJdO0M9bGIoQ3wwLDEwMCwxMzIyNCxBfDApfDA7aWYoQz4+PjA+OTkpe2lmKChhWzEzMzY4XXwwKT09MD8oUWEoMTMzNjgpfDApIT0wOjApe2NbMzM0MF09a2IoMjE0NzQ4MzY0NywxMzM3NiwwKXwwOyRhKDEzMzY4KX1DPWNbMzM0MF18MDtoW2s+PjNdPWw7Y1tBPj4yXT1jW2s+PjJdO2NbQSs0Pj4yXT1jW2srND4+Ml07Qz1DaShFLEMsMTMyMjQsQSl8MDt6PWNbRT4+Ml18MDtpZigoenwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9Qj11bihDKXwwO2lmKChCfDApPT0wKXtIPVhhKDQpfDA7Y1tIPj4yXT0yMjY4MDt3YihIfDAsMjI3MjgsMjA2KX1lbHNle3k9Qn19ZWxzZXt5PTA7ej0wfUQ9Y1tnKzI4Pj4yXXwwO0g9RCs0fDA7Y1tIPj4yXT0oY1tIPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1tBPj4yXT0xMzQ1NjtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEzNDU2LEEpfUc9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0g9Y1tEKzg+PjJdfDA7aWYoKGNbRCsxMj4+Ml18MCktSD4+Mj4+PjA+Rz4+PjA/KHA9Y1tIKyhHPDwyKT4+Ml18MCwocHwwKSE9MCk6MCl7SD1jW0U+PjJdfDA7dWNbY1soY1twPj4yXXwwKSszMj4+Ml0mMzFdKHAsSCxIK0N8MCxCKXwwO2lmKChDfDApPT0wKXtFPTB9ZWxzZXtFPShhW2NbRT4+Ml0+PjBdfDApPT00NX1jW3Q+PjJdPTA7Y1t4KzA+PjJdPTA7Y1t4KzQ+PjJdPTA7Y1t4Kzg+PjJdPTA7Y1tkKzA+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tkKzg+PjJdPTA7Y1t3KzA+PjJdPTA7Y1t3KzQ+PjJdPTA7Y1t3Kzg+PjJdPTA7emsoZixFLEQsdCxzLHIseCxkLHcsRik7Zj1jW0Y+PjJdfDA7aWYoKEN8MCk+KGZ8MCkpe0Y9YVt3Pj4wXXwwO2lmKChGJjEpPT0wKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW3crND4+Ml18MH1HPWFbZD4+MF18MDtpZigoRyYxKT09MCl7Rz0oRyYyNTUpPj4+MX1lbHNle0c9Y1tkKzQ+PjJdfDB9Rj1GKyhDLWY8PDF8MSkrR3wwfWVsc2V7Rj1hW3c+PjBdfDA7aWYoKEYmMSk9PTApe0Y9KEYmMjU1KT4+PjF9ZWxzZXtGPWNbdys0Pj4yXXwwfUc9YVtkPj4wXXwwO2lmKChHJjEpPT0wKXtHPShHJjI1NSk+Pj4xfWVsc2V7Rz1jW2QrND4+Ml18MH1GPUYrMitHfDB9Rj1GK2Z8MDtpZihGPj4+MD4xMDApe0E9dW4oRil8MDtpZigoQXwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9ZWxzZXtGPUF9fWVsc2V7Rj0wfUFrKEEsdix1LGNbZys0Pj4yXXwwLEIsQitDfDAscCxFLHQsYVtzPj4wXXwwLGFbcj4+MF18MCx4LGQsdyxmKTtXYyhiLGNbZT4+Ml18MCxBLGNbdj4+Ml18MCxjW3U+PjJdfDAsZyxqKTtpZigoRnwwKSE9MCl7dm4oRil9aWYoISgoYVt3Pj4wXSYxKT09MCk/KG49Y1t3Kzg+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbZD4+MF0mMSk9PTApPyhvPWNbZCs4Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhW3g+PjBdJjEpPT0wKT8obT1jW3grOD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9Rz1EKzR8MDtIPWNbRz4+Ml18MDtjW0c+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0Q+PjJdfDApKzg+PjJdJjI1NV0oRCl9aWYoKHl8MCkhPTApe3ZuKHkpfWlmKCh6fDApPT0wKXtpPXE7cmV0dXJufXZuKHopO2k9cTtyZXR1cm59SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gemsoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7bj1pO2k9aSsxMjh8MDtBPW47eD1uKzEyfDA7bz1uKzQwfDA7dj1uKzUyfDA7dz1uKzU2fDA7dT1uKzE2fDA7ej1uKzI4fDA7cj1uKzY4fDA7cT1uKzcyfDA7dD1uKzg0fDA7cz1uKzg4fDA7cD1uKzEwMHwwO3k9bisxMTJ8MDtpZihiKXtpZighKChjWzMyMjhdfDApPT0tMSkpe2NbQT4+Ml09MTI5MTI7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMjkxMixBKX1xPShjWzEyOTE2Pj4yXXwwKSsgLTF8MDtwPWNbZSs4Pj4yXXwwO2lmKCEoKGNbZSsxMj4+Ml18MCktcD4+Mj4+PjA+cT4+PjApKXtiPVhhKDQpfDA7Y1tiPj4yXT0yMTMwNDt3YihifDAsMjEzNzYsMTk2KX1wPWNbcCsocTw8Mik+PjJdfDA7aWYoKHB8MCk9PTApe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfXE9Y1twPj4yXXwwO2lmKGQpe21jW2NbcSs0ND4+Ml0mMTI3XSh4LHApO2I9Y1t4Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbcD4+Ml18MCkrMzI+PjJdJjEyN10obyxwKTtpZigoYVtsPj4wXSYxKT09MCl7YVtsKzE+PjBdPTA7YVtsPj4wXT0wfWVsc2V7YVtjW2wrOD4+Ml0+PjBdPTA7Y1tsKzQ+PjJdPTB9aWcobCk7Y1tsKzA+PjJdPWNbbyswPj4yXTtjW2wrND4+Ml09Y1tvKzQ+PjJdO2NbbCs4Pj4yXT1jW28rOD4+Ml07Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTB9ZWxzZXttY1tjW3ErNDA+PjJdJjEyN10odixwKTtiPWNbdj4+Ml18MDthW2Y+PjBdPWI7YVtmKzE+PjBdPWI+Pjg7YVtmKzI+PjBdPWI+PjE2O2FbZiszPj4wXT1iPj4yNDttY1tjWyhjW3A+PjJdfDApKzI4Pj4yXSYxMjddKHcscCk7aWYoKGFbbD4+MF0mMSk9PTApe2FbbCsxPj4wXT0wO2FbbD4+MF09MH1lbHNle2FbY1tsKzg+PjJdPj4wXT0wO2NbbCs0Pj4yXT0wfWlnKGwpO2NbbCswPj4yXT1jW3crMD4+Ml07Y1tsKzQ+PjJdPWNbdys0Pj4yXTtjW2wrOD4+Ml09Y1t3Kzg+PjJdO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wfWFbZz4+MF09b2NbY1soY1twPj4yXXwwKSsxMj4+Ml0mMTI3XShwKXwwO2FbaD4+MF09b2NbY1soY1twPj4yXXwwKSsxNj4+Ml0mMTI3XShwKXwwO21jW2NbKGNbcD4+Ml18MCkrMjA+PjJdJjEyN10odSxwKTtpZigoYVtqPj4wXSYxKT09MCl7YVtqKzE+PjBdPTA7YVtqPj4wXT0wfWVsc2V7YVtjW2orOD4+Ml0+PjBdPTA7Y1tqKzQ+PjJdPTB9aWcoaik7Y1tqKzA+PjJdPWNbdSswPj4yXTtjW2orND4+Ml09Y1t1KzQ+PjJdO2Nbais4Pj4yXT1jW3UrOD4+Ml07Y1t1KzA+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7bWNbY1soY1twPj4yXXwwKSsyND4+Ml0mMTI3XSh6LHApO2lmKChhW2s+PjBdJjEpPT0wKXthW2srMT4+MF09MDthW2s+PjBdPTB9ZWxzZXthW2Nbays4Pj4yXT4+MF09MDtjW2srND4+Ml09MH1pZyhrKTtjW2srMD4+Ml09Y1t6KzA+PjJdO2Nbays0Pj4yXT1jW3orND4+Ml07Y1trKzg+PjJdPWNbeis4Pj4yXTtjW3orMD4+Ml09MDtjW3orND4+Ml09MDtjW3orOD4+Ml09MDtiPW9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MDtjW20+PjJdPWI7aT1uO3JldHVybn1lbHNle2lmKCEoKGNbMzIxMl18MCk9PS0xKSl7Y1tBPj4yXT0xMjg0ODtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEyODQ4LEEpfXU9KGNbMTI4NTI+PjJdfDApKyAtMXwwO289Y1tlKzg+PjJdfDA7aWYoISgoY1tlKzEyPj4yXXwwKS1vPj4yPj4+MD51Pj4+MCkpe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfW89Y1tvKyh1PDwyKT4+Ml18MDtpZigob3wwKT09MCl7Yj1YYSg0KXwwO2NbYj4+Ml09MjEzMDQ7d2IoYnwwLDIxMzc2LDE5Nil9ZT1jW28+PjJdfDA7aWYoZCl7bWNbY1tlKzQ0Pj4yXSYxMjddKHIsbyk7Yj1jW3I+PjJdfDA7YVtmPj4wXT1iO2FbZisxPj4wXT1iPj44O2FbZisyPj4wXT1iPj4xNjthW2YrMz4+MF09Yj4+MjQ7bWNbY1soY1tvPj4yXXwwKSszMj4+Ml0mMTI3XShxLG8pO2lmKChhW2w+PjBdJjEpPT0wKXthW2wrMT4+MF09MDthW2w+PjBdPTB9ZWxzZXthW2NbbCs4Pj4yXT4+MF09MDtjW2wrND4+Ml09MH1pZyhsKTtjW2wrMD4+Ml09Y1txKzA+PjJdO2NbbCs0Pj4yXT1jW3ErND4+Ml07Y1tsKzg+PjJdPWNbcSs4Pj4yXTtjW3ErMD4+Ml09MDtjW3ErND4+Ml09MDtjW3ErOD4+Ml09MH1lbHNle21jW2NbZSs0MD4+Ml0mMTI3XSh0LG8pO2I9Y1t0Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbbz4+Ml18MCkrMjg+PjJdJjEyN10ocyxvKTtpZigoYVtsPj4wXSYxKT09MCl7YVtsKzE+PjBdPTA7YVtsPj4wXT0wfWVsc2V7YVtjW2wrOD4+Ml0+PjBdPTA7Y1tsKzQ+PjJdPTB9aWcobCk7Y1tsKzA+PjJdPWNbcyswPj4yXTtjW2wrND4+Ml09Y1tzKzQ+PjJdO2NbbCs4Pj4yXT1jW3MrOD4+Ml07Y1tzKzA+PjJdPTA7Y1tzKzQ+PjJdPTA7Y1tzKzg+PjJdPTB9YVtnPj4wXT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7YVtoPj4wXT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7bWNbY1soY1tvPj4yXXwwKSsyMD4+Ml0mMTI3XShwLG8pO2lmKChhW2o+PjBdJjEpPT0wKXthW2orMT4+MF09MDthW2o+PjBdPTB9ZWxzZXthW2Nbais4Pj4yXT4+MF09MDtjW2orND4+Ml09MH1pZyhqKTtjW2orMD4+Ml09Y1twKzA+PjJdO2Nbais0Pj4yXT1jW3ArND4+Ml07Y1tqKzg+PjJdPWNbcCs4Pj4yXTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDttY1tjWyhjW28+PjJdfDApKzI0Pj4yXSYxMjddKHksbyk7aWYoKGFbaz4+MF0mMSk9PTApe2FbaysxPj4wXT0wO2Fbaz4+MF09MH1lbHNle2FbY1trKzg+PjJdPj4wXT0wO2Nbays0Pj4yXT0wfWlnKGspO2NbayswPj4yXT1jW3krMD4+Ml07Y1trKzQ+PjJdPWNbeSs0Pj4yXTtjW2srOD4+Ml09Y1t5Kzg+PjJdO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2I9b2NbY1soY1tvPj4yXXwwKSszNj4+Ml0mMTI3XShvKXwwO2NbbT4+Ml09YjtpPW47cmV0dXJufX1mdW5jdGlvbiBBayhkLGUsZixnLGgsaixrLGwsbSxuLG8scCxxLHIscyl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7cT1xfDA7cj1yfDA7cz1zfDA7dmFyIHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MDt0PWk7Y1tmPj4yXT1kO3Y9cisxfDA7dz1yKzh8MDt1PXIrNHwwO3g9KGcmNTEyfDApPT0wO0Q9cSsxfDA7SD1xKzh8MDtJPXErNHwwO0E9KHN8MCk+MDtCPXArMXwwO0U9cCs4fDA7eT1wKzR8MDtDPWsrOHwwO3o9MC1zfDA7Sj0wO2Rve3N3aXRjaChhW20rSj4+MF18MCl7Y2FzZSAwOntjW2U+PjJdPWNbZj4+Ml07YnJlYWt9O2Nhc2UgNDp7Sz1jW2Y+PjJdfDA7aD1sP2grMXwwOmg7YTpkb3tpZihoPj4+MDxqPj4+MCl7TD1oO3doaWxlKDEpe049YVtMPj4wXXwwO2lmKCEoTjw8MjQ+PjI0Pi0xKSl7YnJlYWsgYX1NPUwrMXwwO2lmKChiWyhjW0M+PjJdfDApKyhOPDwyND4+MjQ8PDEpPj4xXSYyMDQ4KT09MCl7YnJlYWsgYX1pZihNPj4+MDxqPj4+MCl7TD1NfWVsc2V7TD1NO2JyZWFrfX19ZWxzZXtMPWh9fXdoaWxlKDApO009TDtpZihBKXtpZihMPj4+MD5oPj4+MCl7Tj1oKygwLU0pfDA7Tj1OPj4+MDx6Pj4+MD96Ok47TT1OK3N8MDtRPUs7UD1MO089czt3aGlsZSgxKXtQPVArIC0xfDA7Uj1hW1A+PjBdfDA7Y1tmPj4yXT1RKzE7YVtRPj4wXT1SO089TysgLTF8MDtRPShPfDApPjA7aWYoIShQPj4+MD5oPj4+MCZRKSl7YnJlYWt9UT1jW2Y+PjJdfDB9TD1MK058MDtpZihRKXtHPTMyfWVsc2V7Tj0wfX1lbHNle009cztHPTMyfWlmKChHfDApPT0zMil7Rz0wO049eGNbY1soY1trPj4yXXwwKSsyOD4+Ml0mNjNdKGssNDgpfDB9Tz1jW2Y+PjJdfDA7Y1tmPj4yXT1PKzE7aWYoKE18MCk+MCl7ZG97YVtPPj4wXT1OO009TSsgLTF8MDtPPWNbZj4+Ml18MDtjW2Y+PjJdPU8rMX13aGlsZSgoTXwwKT4wKX1hW08+PjBdPW59aWYoKEx8MCk9PShofDApKXtRPXhjW2NbKGNbaz4+Ml18MCkrMjg+PjJdJjYzXShrLDQ4KXwwO1I9Y1tmPj4yXXwwO2NbZj4+Ml09UisxO2FbUj4+MF09UX1lbHNle049YVtwPj4wXXwwO009KE4mMSk9PTA7aWYoTSl7Tj0oTiYyNTUpPj4+MX1lbHNle049Y1t5Pj4yXXwwfWlmKChOfDApPT0wKXtNPS0xO049MDtPPTB9ZWxzZXtpZihNKXtNPUJ9ZWxzZXtNPWNbRT4+Ml18MH1NPWFbTT4+MF18MDtOPTA7Tz0wfXdoaWxlKDEpe2lmKChPfDApPT0oTXwwKSl7UD1jW2Y+PjJdfDA7Y1tmPj4yXT1QKzE7YVtQPj4wXT1vO049TisxfDA7UD1hW3A+PjBdfDA7Tz0oUCYxKT09MDtpZihPKXtQPShQJjI1NSk+Pj4xfWVsc2V7UD1jW3k+PjJdfDB9aWYoTj4+PjA8UD4+PjApe2lmKE8pe009Qn1lbHNle009Y1tFPj4yXXwwfWlmKChhW00rTj4+MF18MCk9PTEyNyl7TT0tMTtPPTB9ZWxzZXtpZihPKXtNPUJ9ZWxzZXtNPWNbRT4+Ml18MH1NPWFbTStOPj4wXXwwO089MH19ZWxzZXtPPTB9fUw9TCsgLTF8MDtRPWFbTD4+MF18MDtSPWNbZj4+Ml18MDtjW2Y+PjJdPVIrMTthW1I+PjBdPVE7aWYoKEx8MCk9PShofDApKXticmVha31lbHNle089TysxfDB9fX1MPWNbZj4+Ml18MDtpZigoS3wwKSE9KEx8MCk/KEY9TCsgLTF8MCxGPj4+MD5LPj4+MCk6MCl7TD1GO2Rve1I9YVtLPj4wXXwwO2FbSz4+MF09YVtMPj4wXXwwO2FbTD4+MF09UjtLPUsrMXwwO0w9TCsgLTF8MH13aGlsZShLPj4+MDxMPj4+MCl9YnJlYWt9O2Nhc2UgMjp7TD1hW3E+PjBdfDA7TT0oTCYxKT09MDtpZihNKXtLPShMJjI1NSk+Pj4xfWVsc2V7Sz1jW0k+PjJdfDB9aWYoISgoS3wwKT09MHx4KSl7aWYoTSl7Sz1EO0w9KEwmMjU1KT4+PjF9ZWxzZXtLPWNbSD4+Ml18MDtMPWNbST4+Ml18MH1MPUsrTHwwO009Y1tmPj4yXXwwO2lmKChLfDApIT0oTHwwKSl7ZG97YVtNPj4wXT1hW0s+PjBdfDA7Sz1LKzF8MDtNPU0rMXwwfXdoaWxlKChLfDApIT0oTHwwKSl9Y1tmPj4yXT1NfWJyZWFrfTtjYXNlIDM6e0w9YVtyPj4wXXwwO0s9KEwmMSk9PTA7aWYoSyl7TD0oTCYyNTUpPj4+MX1lbHNle0w9Y1t1Pj4yXXwwfWlmKChMfDApIT0wKXtpZihLKXtLPXZ9ZWxzZXtLPWNbdz4+Ml18MH1RPWFbSz4+MF18MDtSPWNbZj4+Ml18MDtjW2Y+PjJdPVIrMTthW1I+PjBdPVF9YnJlYWt9O2Nhc2UgMTp7Y1tlPj4yXT1jW2Y+PjJdO1E9eGNbY1soY1trPj4yXXwwKSsyOD4+Ml0mNjNdKGssMzIpfDA7Uj1jW2Y+PjJdfDA7Y1tmPj4yXT1SKzE7YVtSPj4wXT1RO2JyZWFrfTtkZWZhdWx0Ont9fUo9SisxfDB9d2hpbGUoKEp8MCkhPTQpO2s9YVtyPj4wXXwwO3g9KGsmMSk9PTA7aWYoeCl7cj0oayYyNTUpPj4+MX1lbHNle3I9Y1t1Pj4yXXwwfWlmKHI+Pj4wPjEpe2lmKHgpe3U9KGsmMjU1KT4+PjF9ZWxzZXt2PWNbdz4+Ml18MDt1PWNbdT4+Ml18MH13PXYrMXwwO3U9dit1fDA7dj1jW2Y+PjJdfDA7aWYoKHd8MCkhPSh1fDApKXtkb3thW3Y+PjBdPWFbdz4+MF18MDt3PXcrMXwwO3Y9disxfDB9d2hpbGUoKHd8MCkhPSh1fDApKX1jW2Y+PjJdPXZ9Zz1nJjE3NjtpZigoZ3wwKT09MTYpe2k9dDtyZXR1cm59ZWxzZSBpZigoZ3wwKT09MzIpe2NbZT4+Ml09Y1tmPj4yXTtpPXQ7cmV0dXJufWVsc2V7Y1tlPj4yXT1kO2k9dDtyZXR1cm59fWZ1bmN0aW9uIEJrKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO3A9aTtpPWkrMTYwfDA7eD1wO3Q9cCsxNDB8MDtzPXArMTUyfDA7cj1wKzE1M3wwO3E9cCsxMTJ8MDt2PXArMTAwfDA7ZD1wKzEyOHwwO3o9cCsxMjR8MDt3PXArMTQ0fDA7dT1wKzE0OHwwO289Y1tnKzI4Pj4yXXwwO0Q9bys0fDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxO2lmKCEoKGNbMzM2NF18MCk9PS0xKSl7Y1t4Pj4yXT0xMzQ1NjtjW3grND4+Ml09MjA4O2NbeCs4Pj4yXT0wO2NnKDEzNDU2LHgpfXk9KGNbMTM0NjA+PjJdfDApKyAtMXwwO0E9Y1tvKzg+PjJdfDA7aWYoKGNbbysxMj4+Ml18MCktQT4+Mj4+PjA+eT4+PjA/KGw9Y1tBKyh5PDwyKT4+Ml18MCwobHwwKSE9MCk6MCl7QT1hW2o+PjBdfDA7eT0oQSYxKT09MDtpZih5KXtBPShBJjI1NSk+Pj4xfWVsc2V7QT1jW2orND4+Ml18MH1pZigoQXwwKT09MCl7eT0wfWVsc2V7aWYoeSl7eT1qKzF8MH1lbHNle3k9Y1tqKzg+PjJdfDB9eT1hW3k+PjBdfDA7eT15PDwyND4+MjQ9PSh4Y1tjWyhjW2w+PjJdfDApKzI4Pj4yXSY2M10obCw0NSl8MCk8PDI0Pj4yNH1jW3Q+PjJdPTA7Y1txKzA+PjJdPTA7Y1txKzQ+PjJdPTA7Y1txKzg+PjJdPTA7Y1t2KzA+PjJdPTA7Y1t2KzQ+PjJdPTA7Y1t2Kzg+PjJdPTA7Y1tkKzA+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tkKzg+PjJdPTA7emsoZix5LG8sdCxzLHIscSx2LGQseik7Zj1hW2o+PjBdfDA7QT0oZiYxKT09MDtpZihBKXtCPShmJjI1NSk+Pj4xfWVsc2V7Qj1jW2orND4+Ml18MH16PWNbej4+Ml18MDtpZigoQnwwKT4oenwwKSl7aWYoQSl7Qj0oZiYyNTUpPj4+MX1lbHNle0I9Y1tqKzQ+PjJdfDB9Qz1hW2Q+PjBdfDA7aWYoKEMmMSk9PTApe0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbZCs0Pj4yXXwwfUQ9YVt2Pj4wXXwwO2lmKChEJjEpPT0wKXtEPShEJjI1NSk+Pj4xfWVsc2V7RD1jW3YrND4+Ml18MH1CPUMrKEItejw8MXwxKStEfDB9ZWxzZXtCPWFbZD4+MF18MDtpZigoQiYxKT09MCl7Qj0oQiYyNTUpPj4+MX1lbHNle0I9Y1tkKzQ+PjJdfDB9Qz1hW3Y+PjBdfDA7aWYoKEMmMSk9PTApe0M9KEMmMjU1KT4+PjF9ZWxzZXtDPWNbdis0Pj4yXXwwfUI9QisyK0N8MH1CPUIrenwwO2lmKEI+Pj4wPjEwMCl7eD11bihCKXwwO2lmKCh4fDApPT0wKXtEPVhhKDQpfDA7Y1tEPj4yXT0yMjY4MDt3YihEfDAsMjI3MjgsMjA2KX1lbHNle0I9eH19ZWxzZXtCPTB9aWYoQSl7QT1qKzF8MDtqPShmJjI1NSk+Pj4xfWVsc2V7QT1jW2orOD4+Ml18MDtqPWNbais0Pj4yXXwwfUFrKHgsdyx1LGNbZys0Pj4yXXwwLEEsQStqfDAsbCx5LHQsYVtzPj4wXXwwLGFbcj4+MF18MCxxLHYsZCx6KTtXYyhiLGNbZT4+Ml18MCx4LGNbdz4+Ml18MCxjW3U+PjJdfDAsZyxoKTtpZigoQnwwKSE9MCl7dm4oQil9aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tkKzg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbdj4+MF0mMSk9PTApPyhuPWNbdis4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhW3E+PjBdJjEpPT0wKT8oaz1jW3ErOD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9Qz1vKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXtpPXA7cmV0dXJufWxjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKTtpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIENrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIERrKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBFayhiLGQsZSxmLGcsaixsKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtqPWp8MDtsPStsO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7cT1pO2k9aSs5NzZ8MDtBPXE7Qz1xKzg2OHwwO0U9cSs4MTZ8MDtCPXErNDE2fDA7dD1xKzQwOHwwO3M9cSs4NjB8MDtyPXErNDAwfDA7eD1xKzgyNHwwO2Q9cSs4MzZ8MDt3PXErODQ4fDA7Rj1xKzgyMHwwO3Y9cSs0MDR8MDt1PXErODY0fDA7Y1tFPj4yXT1DO2hbaz4+M109bDtjW0E+PjJdPWNbaz4+Ml07Y1tBKzQ+PjJdPWNbays0Pj4yXTtDPWxiKEN8MCwxMDAsMTMyMjQsQXwwKXwwO2lmKEM+Pj4wPjk5KXtpZigoYVsxMzM2OF18MCk9PTA/KFFhKDEzMzY4KXwwKSE9MDowKXtjWzMzNDBdPWtiKDIxNDc0ODM2NDcsMTMzNzYsMCl8MDskYSgxMzM2OCl9Qz1jWzMzNDBdfDA7aFtrPj4zXT1sO2NbQT4+Ml09Y1trPj4yXTtjW0ErND4+Ml09Y1trKzQ+PjJdO0M9Q2koRSxDLDEzMjI0LEEpfDA7ej1jW0U+PjJdfDA7aWYoKHp8MCk9PTApe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfUI9dW4oQzw8Mil8MDtpZigoQnwwKT09MCl7SD1YYSg0KXwwO2NbSD4+Ml09MjI2ODA7d2IoSHwwLDIyNzI4LDIwNil9ZWxzZXt5PUJ9fWVsc2V7eT0wO3o9MH1EPWNbZysyOD4+Ml18MDtIPUQrNHwwO2NbSD4+Ml09KGNbSD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbQT4+Ml09MTM0NDg7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMzQ0OCxBKX1HPShjWzEzNDUyPj4yXXwwKSsgLTF8MDtIPWNbRCs4Pj4yXXwwO2lmKChjW0QrMTI+PjJdfDApLUg+PjI+Pj4wPkc+Pj4wPyhwPWNbSCsoRzw8Mik+PjJdfDAsKHB8MCkhPTApOjApe0g9Y1tFPj4yXXwwO3VjW2NbKGNbcD4+Ml18MCkrNDg+PjJdJjMxXShwLEgsSCtDfDAsQil8MDtpZigoQ3wwKT09MCl7RT0wfWVsc2V7RT0oYVtjW0U+PjJdPj4wXXwwKT09NDV9Y1t0Pj4yXT0wO2NbeCswPj4yXT0wO2NbeCs0Pj4yXT0wO2NbeCs4Pj4yXT0wO2NbZCswPj4yXT0wO2NbZCs0Pj4yXT0wO2NbZCs4Pj4yXT0wO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wO0ZrKGYsRSxELHQscyxyLHgsZCx3LEYpO2Y9Y1tGPj4yXXwwO2lmKChDfDApPihmfDApKXtGPWFbdz4+MF18MDtpZigoRiYxKT09MCl7Rj0oRiYyNTUpPj4+MX1lbHNle0Y9Y1t3KzQ+PjJdfDB9Rz1hW2Q+PjBdfDA7aWYoKEcmMSk9PTApe0c9KEcmMjU1KT4+PjF9ZWxzZXtHPWNbZCs0Pj4yXXwwfUY9RisoQy1mPDwxfDEpK0d8MH1lbHNle0Y9YVt3Pj4wXXwwO2lmKChGJjEpPT0wKXtGPShGJjI1NSk+Pj4xfWVsc2V7Rj1jW3crND4+Ml18MH1HPWFbZD4+MF18MDtpZigoRyYxKT09MCl7Rz0oRyYyNTUpPj4+MX1lbHNle0c9Y1tkKzQ+PjJdfDB9Rj1GKzIrR3wwfUY9RitmfDA7aWYoRj4+PjA+MTAwKXtBPXVuKEY8PDIpfDA7aWYoKEF8MCk9PTApe0g9WGEoNCl8MDtjW0g+PjJdPTIyNjgwO3diKEh8MCwyMjcyOCwyMDYpfWVsc2V7Rj1BfX1lbHNle0Y9MH1HayhBLHYsdSxjW2crND4+Ml18MCxCLEIrKEM8PDIpfDAscCxFLHQsY1tzPj4yXXwwLGNbcj4+Ml18MCx4LGQsdyxmKTtMaShiLGNbZT4+Ml18MCxBLGNbdj4+Ml18MCxjW3U+PjJdfDAsZyxqKTtpZigoRnwwKSE9MCl7dm4oRil9aWYoISgoYVt3Pj4wXSYxKT09MCk/KG49Y1t3Kzg+PjJdfDAsKG58MCkhPTApOjApe3ZuKG4pfWlmKCEoKGFbZD4+MF0mMSk9PTApPyhvPWNbZCs4Pj4yXXwwLChvfDApIT0wKTowKXt2bihvKX1pZighKChhW3g+PjBdJjEpPT0wKT8obT1jW3grOD4+Ml18MCwobXwwKSE9MCk6MCl7dm4obSl9Rz1EKzR8MDtIPWNbRz4+Ml18MDtjW0c+PjJdPUgrIC0xO2lmKChIfDApPT0wKXtsY1tjWyhjW0Q+PjJdfDApKzg+PjJdJjI1NV0oRCl9aWYoKHl8MCkhPTApe3ZuKHkpfWlmKCh6fDApPT0wKXtpPXE7cmV0dXJufXZuKHopO2k9cTtyZXR1cm59SD1YYSg0KXwwO2NbSD4+Ml09MjEzMDQ7d2IoSHwwLDIxMzc2LDE5Nil9ZnVuY3Rpb24gRmsoYixkLGUsZixnLGgsaixrLGwsbSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7bj1pO2k9aSsxMjh8MDtBPW47eD1uKzEyfDA7bz1uKzQwfDA7dj1uKzUyfDA7dz1uKzU2fDA7dT1uKzE2fDA7ej1uKzI4fDA7cj1uKzY4fDA7cT1uKzcyfDA7dD1uKzg0fDA7cz1uKzg4fDA7cD1uKzEwMHwwO3k9bisxMTJ8MDtpZihiKXtpZighKChjWzMyNjBdfDApPT0tMSkpe2NbQT4+Ml09MTMwNDA7Y1tBKzQ+PjJdPTIwODtjW0ErOD4+Ml09MDtjZygxMzA0MCxBKX1xPShjWzEzMDQ0Pj4yXXwwKSsgLTF8MDtwPWNbZSs4Pj4yXXwwO2lmKCEoKGNbZSsxMj4+Ml18MCktcD4+Mj4+PjA+cT4+PjApKXtiPVhhKDQpfDA7Y1tiPj4yXT0yMTMwNDt3YihifDAsMjEzNzYsMTk2KX1wPWNbcCsocTw8Mik+PjJdfDA7aWYoKHB8MCk9PTApe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfXE9Y1twPj4yXXwwO2lmKGQpe21jW2NbcSs0ND4+Ml0mMTI3XSh4LHApO2I9Y1t4Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbcD4+Ml18MCkrMzI+PjJdJjEyN10obyxwKTtpZigoYVtsPj4wXSYxKT09MCl7Y1tsKzQ+PjJdPTA7YVtsPj4wXT0wfWVsc2V7Y1tjW2wrOD4+Ml0+PjJdPTA7Y1tsKzQ+PjJdPTB9b2cobCk7Y1tsKzA+PjJdPWNbbyswPj4yXTtjW2wrND4+Ml09Y1tvKzQ+PjJdO2NbbCs4Pj4yXT1jW28rOD4+Ml07Y1tvKzA+PjJdPTA7Y1tvKzQ+PjJdPTA7Y1tvKzg+PjJdPTB9ZWxzZXttY1tjW3ErNDA+PjJdJjEyN10odixwKTtiPWNbdj4+Ml18MDthW2Y+PjBdPWI7YVtmKzE+PjBdPWI+Pjg7YVtmKzI+PjBdPWI+PjE2O2FbZiszPj4wXT1iPj4yNDttY1tjWyhjW3A+PjJdfDApKzI4Pj4yXSYxMjddKHcscCk7aWYoKGFbbD4+MF0mMSk9PTApe2NbbCs0Pj4yXT0wO2FbbD4+MF09MH1lbHNle2NbY1tsKzg+PjJdPj4yXT0wO2NbbCs0Pj4yXT0wfW9nKGwpO2NbbCswPj4yXT1jW3crMD4+Ml07Y1tsKzQ+PjJdPWNbdys0Pj4yXTtjW2wrOD4+Ml09Y1t3Kzg+PjJdO2NbdyswPj4yXT0wO2Nbdys0Pj4yXT0wO2Nbdys4Pj4yXT0wfWNbZz4+Ml09b2NbY1soY1twPj4yXXwwKSsxMj4+Ml0mMTI3XShwKXwwO2NbaD4+Ml09b2NbY1soY1twPj4yXXwwKSsxNj4+Ml0mMTI3XShwKXwwO21jW2NbKGNbcD4+Ml18MCkrMjA+PjJdJjEyN10odSxwKTtpZigoYVtqPj4wXSYxKT09MCl7YVtqKzE+PjBdPTA7YVtqPj4wXT0wfWVsc2V7YVtjW2orOD4+Ml0+PjBdPTA7Y1tqKzQ+PjJdPTB9aWcoaik7Y1tqKzA+PjJdPWNbdSswPj4yXTtjW2orND4+Ml09Y1t1KzQ+PjJdO2Nbais4Pj4yXT1jW3UrOD4+Ml07Y1t1KzA+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7bWNbY1soY1twPj4yXXwwKSsyND4+Ml0mMTI3XSh6LHApO2lmKChhW2s+PjBdJjEpPT0wKXtjW2srND4+Ml09MDthW2s+PjBdPTB9ZWxzZXtjW2Nbays4Pj4yXT4+Ml09MDtjW2srND4+Ml09MH1vZyhrKTtjW2srMD4+Ml09Y1t6KzA+PjJdO2Nbays0Pj4yXT1jW3orND4+Ml07Y1trKzg+PjJdPWNbeis4Pj4yXTtjW3orMD4+Ml09MDtjW3orND4+Ml09MDtjW3orOD4+Ml09MDtiPW9jW2NbKGNbcD4+Ml18MCkrMzY+PjJdJjEyN10ocCl8MDtjW20+PjJdPWI7aT1uO3JldHVybn1lbHNle2lmKCEoKGNbMzI0NF18MCk9PS0xKSl7Y1tBPj4yXT0xMjk3NjtjW0ErND4+Ml09MjA4O2NbQSs4Pj4yXT0wO2NnKDEyOTc2LEEpfXU9KGNbMTI5ODA+PjJdfDApKyAtMXwwO289Y1tlKzg+PjJdfDA7aWYoISgoY1tlKzEyPj4yXXwwKS1vPj4yPj4+MD51Pj4+MCkpe2I9WGEoNCl8MDtjW2I+PjJdPTIxMzA0O3diKGJ8MCwyMTM3NiwxOTYpfW89Y1tvKyh1PDwyKT4+Ml18MDtpZigob3wwKT09MCl7Yj1YYSg0KXwwO2NbYj4+Ml09MjEzMDQ7d2IoYnwwLDIxMzc2LDE5Nil9ZT1jW28+PjJdfDA7aWYoZCl7bWNbY1tlKzQ0Pj4yXSYxMjddKHIsbyk7Yj1jW3I+PjJdfDA7YVtmPj4wXT1iO2FbZisxPj4wXT1iPj44O2FbZisyPj4wXT1iPj4xNjthW2YrMz4+MF09Yj4+MjQ7bWNbY1soY1tvPj4yXXwwKSszMj4+Ml0mMTI3XShxLG8pO2lmKChhW2w+PjBdJjEpPT0wKXtjW2wrND4+Ml09MDthW2w+PjBdPTB9ZWxzZXtjW2NbbCs4Pj4yXT4+Ml09MDtjW2wrND4+Ml09MH1vZyhsKTtjW2wrMD4+Ml09Y1txKzA+PjJdO2NbbCs0Pj4yXT1jW3ErND4+Ml07Y1tsKzg+PjJdPWNbcSs4Pj4yXTtjW3ErMD4+Ml09MDtjW3ErND4+Ml09MDtjW3ErOD4+Ml09MH1lbHNle21jW2NbZSs0MD4+Ml0mMTI3XSh0LG8pO2I9Y1t0Pj4yXXwwO2FbZj4+MF09YjthW2YrMT4+MF09Yj4+ODthW2YrMj4+MF09Yj4+MTY7YVtmKzM+PjBdPWI+PjI0O21jW2NbKGNbbz4+Ml18MCkrMjg+PjJdJjEyN10ocyxvKTtpZigoYVtsPj4wXSYxKT09MCl7Y1tsKzQ+PjJdPTA7YVtsPj4wXT0wfWVsc2V7Y1tjW2wrOD4+Ml0+PjJdPTA7Y1tsKzQ+PjJdPTB9b2cobCk7Y1tsKzA+PjJdPWNbcyswPj4yXTtjW2wrND4+Ml09Y1tzKzQ+PjJdO2NbbCs4Pj4yXT1jW3MrOD4+Ml07Y1tzKzA+PjJdPTA7Y1tzKzQ+PjJdPTA7Y1tzKzg+PjJdPTB9Y1tnPj4yXT1vY1tjWyhjW28+PjJdfDApKzEyPj4yXSYxMjddKG8pfDA7Y1toPj4yXT1vY1tjWyhjW28+PjJdfDApKzE2Pj4yXSYxMjddKG8pfDA7bWNbY1soY1tvPj4yXXwwKSsyMD4+Ml0mMTI3XShwLG8pO2lmKChhW2o+PjBdJjEpPT0wKXthW2orMT4+MF09MDthW2o+PjBdPTB9ZWxzZXthW2Nbais4Pj4yXT4+MF09MDtjW2orND4+Ml09MH1pZyhqKTtjW2orMD4+Ml09Y1twKzA+PjJdO2Nbais0Pj4yXT1jW3ArND4+Ml07Y1tqKzg+PjJdPWNbcCs4Pj4yXTtjW3ArMD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDttY1tjWyhjW28+PjJdfDApKzI0Pj4yXSYxMjddKHksbyk7aWYoKGFbaz4+MF0mMSk9PTApe2Nbays0Pj4yXT0wO2Fbaz4+MF09MH1lbHNle2NbY1trKzg+PjJdPj4yXT0wO2Nbays0Pj4yXT0wfW9nKGspO2NbayswPj4yXT1jW3krMD4+Ml07Y1trKzQ+PjJdPWNbeSs0Pj4yXTtjW2srOD4+Ml09Y1t5Kzg+PjJdO2NbeSswPj4yXT0wO2NbeSs0Pj4yXT0wO2NbeSs4Pj4yXT0wO2I9b2NbY1soY1tvPj4yXXwwKSszNj4+Ml0mMTI3XShvKXwwO2NbbT4+Ml09YjtpPW47cmV0dXJufX1mdW5jdGlvbiBHayhiLGQsZSxmLGcsaCxqLGssbCxtLG4sbyxwLHEscil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7cT1xfDA7cj1yfDA7dmFyIHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wO3M9aTtjW2U+PjJdPWI7dD1xKzR8MDt1PXErOHwwO3k9KGYmNTEyfDApPT0wO3g9cCs0fDA7QT1wKzh8MDt3PShyfDApPjA7Qj1vKzF8MDtDPW8rOHwwO0Q9bys0fDA7RT0wO2Rve3N3aXRjaChhW2wrRT4+MF18MCl7Y2FzZSAyOntGPWFbcD4+MF18MDtIPShGJjEpPT0wO2lmKEgpe0c9KEYmMjU1KT4+PjF9ZWxzZXtHPWNbeD4+Ml18MH1pZighKChHfDApPT0wfHkpKXtpZihIKXtIPXg7ST0oRiYyNTUpPj4+MX1lbHNle0g9Y1tBPj4yXXwwO0k9Y1t4Pj4yXXwwfUc9SCsoSTw8Mil8MDtGPWNbZT4+Ml18MDtpZigoSHwwKSE9KEd8MCkpe0o9KEgrKEkrIC0xPDwyKSsoMC1IKXwwKT4+PjI7ST1GO3doaWxlKDEpe2NbST4+Ml09Y1tIPj4yXTtIPUgrNHwwO2lmKChIfDApPT0oR3wwKSl7YnJlYWt9ST1JKzR8MH1GPUYrKEorMTw8Mil8MH1jW2U+PjJdPUZ9YnJlYWt9O2Nhc2UgMzp7Rz1hW3E+PjBdfDA7Rj0oRyYxKT09MDtpZihGKXtHPShHJjI1NSk+Pj4xfWVsc2V7Rz1jW3Q+PjJdfDB9aWYoKEd8MCkhPTApe2lmKEYpe0Y9dH1lbHNle0Y9Y1t1Pj4yXXwwfUw9Y1tGPj4yXXwwO009Y1tlPj4yXXwwO2NbZT4+Ml09TSs0O2NbTT4+Ml09TH1icmVha307Y2FzZSA0OntGPWNbZT4+Ml18MDtnPWs/Zys0fDA6ZzthOmRve2lmKGc+Pj4wPGg+Pj4wKXtHPWc7d2hpbGUoMSl7SD1HKzR8MDtpZighKGhjW2NbKGNbaj4+Ml18MCkrMTI+PjJdJjYzXShqLDIwNDgsY1tHPj4yXXwwKXwwKSl7YnJlYWsgYX1pZihIPj4+MDxoPj4+MCl7Rz1IfWVsc2V7Rz1IO2JyZWFrfX19ZWxzZXtHPWd9fXdoaWxlKDApO2lmKHcpe2lmKEc+Pj4wPmc+Pj4wKXtIPWNbZT4+Ml18MDtJPXI7d2hpbGUoMSl7Rz1HKyAtNHwwO0s9SCs0fDA7Y1tIPj4yXT1jW0c+PjJdO0k9SSsgLTF8MDtKPShJfDApPjA7aWYoIShHPj4+MD5nPj4+MCZKKSl7YnJlYWt9ZWxzZXtIPUt9fWNbZT4+Ml09SztpZihKKXt6PTM0fWVsc2V7Y1tlPj4yXT1IKzh9fWVsc2V7ST1yO3o9MzR9aWYoKHp8MCk9PTM0KXt6PTA7Sj14Y1tjWyhjW2o+PjJdfDApKzQ0Pj4yXSY2M10oaiw0OCl8MDtLPWNbZT4+Ml18MDtNPUsrNHwwO2NbZT4+Ml09TTtpZigoSXwwKT4wKXtIPUs7TD1JO3doaWxlKDEpe2NbSD4+Ml09SjtMPUwrIC0xfDA7aWYoKEx8MCk8PTApe2JyZWFrfWVsc2V7SD1NO009TSs0fDB9fWNbZT4+Ml09SysoSSsxPDwyKTtLPUsrKEk8PDIpfDB9fWNbSz4+Ml09bX1pZigoR3wwKT09KGd8MCkpe0s9eGNbY1soY1tqPj4yXXwwKSs0ND4+Ml0mNjNdKGosNDgpfDA7TT1jW2U+PjJdfDA7TD1NKzR8MDtjW2U+PjJdPUw7Y1tNPj4yXT1LfWVsc2V7ST1hW28+PjBdfDA7SD0oSSYxKT09MDtpZihIKXtJPShJJjI1NSk+Pj4xfWVsc2V7ST1jW0Q+PjJdfDB9aWYoKEl8MCk9PTApe0g9LTF9ZWxzZXtpZihIKXtIPUJ9ZWxzZXtIPWNbQz4+Ml18MH1IPWFbSD4+MF18MH1JPWNbZT4+Ml18MDtLPTA7Sj0wO3doaWxlKDEpe2lmKChKfDApPT0oSHwwKSl7Sj1JKzR8MDtjW2U+PjJdPUo7Y1tJPj4yXT1uO0s9SysxfDA7TD1hW28+PjBdfDA7ST0oTCYxKT09MDtpZihJKXtMPShMJjI1NSk+Pj4xfWVsc2V7TD1jW0Q+PjJdfDB9aWYoSz4+PjA8TD4+PjApe2lmKEkpe0g9Qn1lbHNle0g9Y1tDPj4yXXwwfWlmKChhW0grSz4+MF18MCk9PTEyNyl7ST1KO0g9LTE7Sj0wfWVsc2V7aWYoSSl7SD1CfWVsc2V7SD1jW0M+PjJdfDB9ST1KO0g9YVtIK0s+PjBdfDA7Sj0wfX1lbHNle0k9SjtKPTB9fUc9RysgLTR8MDtNPWNbRz4+Ml18MDtMPUkrNHwwO2NbZT4+Ml09TDtjW0k+PjJdPU07aWYoKEd8MCk9PShnfDApKXticmVha31lbHNle0k9TDtKPUorMXwwfX19aWYoKEZ8MCkhPShMfDApPyh2PUwrIC00fDAsdj4+PjA+Rj4+PjApOjApe0c9djtkb3tNPWNbRj4+Ml18MDtjW0Y+PjJdPWNbRz4+Ml07Y1tHPj4yXT1NO0Y9Ris0fDA7Rz1HKyAtNHwwfXdoaWxlKEY+Pj4wPEc+Pj4wKX1icmVha307Y2FzZSAxOntjW2Q+PjJdPWNbZT4+Ml07TD14Y1tjWyhjW2o+PjJdfDApKzQ0Pj4yXSY2M10oaiwzMil8MDtNPWNbZT4+Ml18MDtjW2U+PjJdPU0rNDtjW00+PjJdPUw7YnJlYWt9O2Nhc2UgMDp7Y1tkPj4yXT1jW2U+PjJdO2JyZWFrfTtkZWZhdWx0Ont9fUU9RSsxfDB9d2hpbGUoKEV8MCkhPTQpO3c9YVtxPj4wXXwwO3Y9KHcmMSk9PTA7aWYodil7cT0odyYyNTUpPj4+MX1lbHNle3E9Y1t0Pj4yXXwwfWlmKHE+Pj4wPjEpe2lmKHYpe3Y9dDtxPSh3JjI1NSk+Pj4xfWVsc2V7dj1jW3U+PjJdfDA7cT1jW3Q+PjJdfDB9dz12KzR8MDt1PXYrKHE8PDIpfDA7dD1jW2U+PjJdfDA7aWYoKHd8MCkhPSh1fDApKXtxPSh2KyhxKyAtMTw8MikrKDAtdyl8MCk+Pj4yO3Y9dDt3aGlsZSgxKXtjW3Y+PjJdPWNbdz4+Ml07dz13KzR8MDtpZigod3wwKT09KHV8MCkpe2JyZWFrfWVsc2V7dj12KzR8MH19dD10KyhxKzE8PDIpfDB9Y1tlPj4yXT10fWY9ZiYxNzY7aWYoKGZ8MCk9PTE2KXtpPXM7cmV0dXJufWVsc2UgaWYoKGZ8MCk9PTMyKXtjW2Q+PjJdPWNbZT4+Ml07aT1zO3JldHVybn1lbHNle2NbZD4+Ml09YjtpPXM7cmV0dXJufX1mdW5jdGlvbiBIayhiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtwPWk7aT1pKzQ2NHwwO3g9cDt0PXArNDM2fDA7cz1wKzQ0MHwwO3I9cCs0NDR8MDtxPXArNDEyfDA7dj1wKzQwMHwwO2Q9cCs0MjR8MDt6PXArNDQ4fDA7dz1wKzQ1MnwwO3U9cCs0NTZ8MDtvPWNbZysyOD4+Ml18MDtEPW8rNHwwO2NbRD4+Ml09KGNbRD4+Ml18MCkrMTtpZighKChjWzMzNjJdfDApPT0tMSkpe2NbeD4+Ml09MTM0NDg7Y1t4KzQ+PjJdPTIwODtjW3grOD4+Ml09MDtjZygxMzQ0OCx4KX15PShjWzEzNDUyPj4yXXwwKSsgLTF8MDtBPWNbbys4Pj4yXXwwO2lmKChjW28rMTI+PjJdfDApLUE+PjI+Pj4wPnk+Pj4wPyhsPWNbQSsoeTw8Mik+PjJdfDAsKGx8MCkhPTApOjApe0E9YVtqPj4wXXwwO3k9KEEmMSk9PTA7aWYoeSl7QT0oQSYyNTUpPj4+MX1lbHNle0E9Y1tqKzQ+PjJdfDB9aWYoKEF8MCk9PTApe3k9MH1lbHNle2lmKHkpe3k9ais0fDB9ZWxzZXt5PWNbais4Pj4yXXwwfXk9Y1t5Pj4yXXwwO3k9KHl8MCk9PSh4Y1tjWyhjW2w+PjJdfDApKzQ0Pj4yXSY2M10obCw0NSl8MCl9Y1t0Pj4yXT0wO2NbcSswPj4yXT0wO2NbcSs0Pj4yXT0wO2NbcSs4Pj4yXT0wO2NbdiswPj4yXT0wO2Nbdis0Pj4yXT0wO2Nbdis4Pj4yXT0wO2NbZCswPj4yXT0wO2NbZCs0Pj4yXT0wO2NbZCs4Pj4yXT0wO0ZrKGYseSxvLHQscyxyLHEsdixkLHopO2Y9YVtqPj4wXXwwO0E9KGYmMSk9PTA7aWYoQSl7Qj0oZiYyNTUpPj4+MX1lbHNle0I9Y1tqKzQ+PjJdfDB9ej1jW3o+PjJdfDA7aWYoKEJ8MCk+KHp8MCkpe2lmKEEpe0I9KGYmMjU1KT4+PjF9ZWxzZXtCPWNbais0Pj4yXXwwfUM9YVtkPj4wXXwwO2lmKChDJjEpPT0wKXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW2QrND4+Ml18MH1EPWFbdj4+MF18MDtpZigoRCYxKT09MCl7RD0oRCYyNTUpPj4+MX1lbHNle0Q9Y1t2KzQ+PjJdfDB9Qj1DKyhCLXo8PDF8MSkrRHwwfWVsc2V7Qj1hW2Q+PjBdfDA7aWYoKEImMSk9PTApe0I9KEImMjU1KT4+PjF9ZWxzZXtCPWNbZCs0Pj4yXXwwfUM9YVt2Pj4wXXwwO2lmKChDJjEpPT0wKXtDPShDJjI1NSk+Pj4xfWVsc2V7Qz1jW3YrND4+Ml18MH1CPUIrMitDfDB9Qj1CK3p8MDtpZihCPj4+MD4xMDApe3g9dW4oQjw8Mil8MDtpZigoeHwwKT09MCl7RD1YYSg0KXwwO2NbRD4+Ml09MjI2ODA7d2IoRHwwLDIyNzI4LDIwNil9ZWxzZXtCPXh9fWVsc2V7Qj0wfWlmKEEpe0E9ais0fDA7aj0oZiYyNTUpPj4+MX1lbHNle0E9Y1tqKzg+PjJdfDA7aj1jW2orND4+Ml18MH1Hayh4LHcsdSxjW2crND4+Ml18MCxBLEErKGo8PDIpfDAsbCx5LHQsY1tzPj4yXXwwLGNbcj4+Ml18MCxxLHYsZCx6KTtMaShiLGNbZT4+Ml18MCx4LGNbdz4+Ml18MCxjW3U+PjJdfDAsZyxoKTtpZigoQnwwKSE9MCl7dm4oQil9aWYoISgoYVtkPj4wXSYxKT09MCk/KG09Y1tkKzg+PjJdfDAsKG18MCkhPTApOjApe3ZuKG0pfWlmKCEoKGFbdj4+MF0mMSk9PTApPyhuPWNbdis4Pj4yXXwwLChufDApIT0wKTowKXt2bihuKX1pZighKChhW3E+PjBdJjEpPT0wKT8oaz1jW3ErOD4+Ml18MCwoa3wwKSE9MCk6MCl7dm4oayl9Qz1vKzR8MDtEPWNbQz4+Ml18MDtjW0M+PjJdPUQrIC0xO2lmKChEfDApIT0wKXtpPXA7cmV0dXJufWxjW2NbKGNbbz4+Ml18MCkrOD4+Ml0mMjU1XShvKTtpPXA7cmV0dXJufUQ9WGEoNCl8MDtjW0Q+PjJdPTIxMzA0O3diKER8MCwyMTM3NiwxOTYpfWZ1bmN0aW9uIElrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIEprKGEpe2E9YXwwO3JldHVybn1mdW5jdGlvbiBLayhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Yj1pO2lmKChhW2Q+PjBdJjEpPT0wKXtkPWQrMXwwfWVsc2V7ZD1jW2QrOD4+Ml18MH1lPWRjKGR8MCwxKXwwO2k9YjtyZXR1cm4gZT4+PigoZXwwKSE9KC0xfDApJjEpfDB9ZnVuY3Rpb24gTGsoYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7ZD1pO2k9aSsxNnwwO2o9ZDtjW2orMD4+Ml09MDtjW2orND4+Ml09MDtjW2orOD4+Ml09MDtrPWFbaD4+MF18MDtpZigoayYxKT09MCl7cD1oKzF8MDtoPShrJjI1NSk+Pj4xfWVsc2V7cD1jW2grOD4+Ml18MDtoPWNbaCs0Pj4yXXwwfW09cCtofDA7aWYocD4+PjA8bT4+PjApe249ais0fDA7bD1qKzF8MDtrPWorOHwwO3E9MDtkb3tvPWFbcD4+MF18MDtoPShxJjEpIT0wO2lmKGgpe3I9KGNbaj4+Ml0mLTIpKyAtMXwwO3E9Y1tuPj4yXXwwfWVsc2V7cj0xMDtxPShxJjI1NSk+Pj4xfWlmKChxfDApPT0ocnwwKSl7bGcoaixyLDEscixyLDApO2lmKChhW2o+PjBdJjEpPT0wKXtoPTE0fWVsc2V7aD0xNX19ZWxzZXtpZihoKXtoPTE1fWVsc2V7aD0xNH19aWYoKGh8MCk9PTE0KXthW2o+PjBdPShxPDwxKSsyO3I9bDtzPXErMXwwfWVsc2UgaWYoKGh8MCk9PTE1KXtyPWNbaz4+Ml18MDtzPXErMXwwO2Nbbj4+Ml09c31hW3IrcT4+MF09bzthW3Ircz4+MF09MDtwPXArMXwwO3E9YVtqPj4wXXwwfXdoaWxlKChwfDApIT0obXwwKSk7aD0oZXwwKT09LTE/LTE6ZTw8MTtlPShxJjEpPT0wP2w6Y1trPj4yXXwwfWVsc2V7aD0oZXwwKT09LTE/LTE6ZTw8MTtlPWorMXwwfWw9amIoaHwwLGZ8MCxnfDAsZXwwKXwwO2NbYiswPj4yXT0wO2NbYis0Pj4yXT0wO2NbYis4Pj4yXT0wO3M9Sm4obHwwKXwwO2s9bCtzfDA7YTpkb3tpZigoc3wwKT4wKXtmPWIrNHwwO2c9YisxfDA7ZT1iKzh8MDtuPTA7d2hpbGUoMSl7bT1hW2w+PjBdfDA7aD0obiYxKSE9MDtpZihoKXtvPShjW2I+PjJdJi0yKSsgLTF8MDtuPWNbZj4+Ml18MH1lbHNle289MTA7bj0obiYyNTUpPj4+MX1pZigobnwwKT09KG98MCkpe2xnKGIsbywxLG8sbywwKTtpZigoYVtiPj4wXSYxKT09MCl7aD0yOH1lbHNle2g9Mjl9fWVsc2V7aWYoaCl7aD0yOX1lbHNle2g9Mjh9fWlmKChofDApPT0yOCl7YVtiPj4wXT0objw8MSkrMjtwPWc7bz1uKzF8MH1lbHNlIGlmKChofDApPT0yOSl7cD1jW2U+PjJdfDA7bz1uKzF8MDtjW2Y+PjJdPW99YVtwK24+PjBdPW07YVtwK28+PjBdPTA7bD1sKzF8MDtpZigobHwwKT09KGt8MCkpe2JyZWFrIGF9bj1hW2I+PjBdfDB9fX13aGlsZSgwKTtpZigoYVtqPj4wXSYxKT09MCl7aT1kO3JldHVybn1iPWNbais4Pj4yXXwwO2lmKChifDApPT0wKXtpPWQ7cmV0dXJufXZuKGIpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gTWsoYSxiKXthPWF8MDtiPWJ8MDthPWk7WWIoKChifDApPT0tMT8tMTpiPDwxKXwwKXwwO2k9YTtyZXR1cm59ZnVuY3Rpb24gTmsoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aWYoKGF8MCkhPTApe3ZuKGEpfWk9YjtyZXR1cm59ZnVuY3Rpb24gT2soYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIFBrKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDtiPWk7aWYoKGFbZD4+MF0mMSk9PTApe2Q9ZCsxfDB9ZWxzZXtkPWNbZCs4Pj4yXXwwfWU9ZGMoZHwwLDEpfDA7aT1iO3JldHVybiBlPj4+KChlfDApIT0oLTF8MCkmMSl8MH1mdW5jdGlvbiBRayhiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO2Q9aTtpPWkrMTc2fDA7bT1kO249ZCs0MHwwO2s9ZCsxNjh8MDtsPWQrMTcyfDA7bz1kKzE2fDA7cj1kKzh8MDtqPWQrMzJ8MDtjW28rMD4+Ml09MDtjW28rND4+Ml09MDtjW28rOD4+Ml09MDtjW3IrND4+Ml09MDtjW3I+PjJdPTE1MDcyO3M9YVtoPj4wXXwwO2lmKChzJjEpPT0wKXt3PWgrNHwwO2g9KHMmMjU1KT4+PjF9ZWxzZXt3PWNbaCs4Pj4yXXwwO2g9Y1toKzQ+PjJdfDB9dj13KyhoPDwyKXwwO0E9bTtjW0E+PjJdPTA7Y1tBKzQ+PjJdPTA7ZG97aWYodz4+PjA8dj4+PjApe3Q9biszMnwwO3U9bys0fDA7cz1vKzF8MDtoPW8rOHwwO3g9MTUwNzJ8MDt3aGlsZSgxKXtjW2w+PjJdPXc7QT0odGNbY1t4KzEyPj4yXSYzMV0ocixtLHcsdixsLG4sdCxrKXwwKT09Mjt4PWNbbD4+Ml18MDtpZihBfCh4fDApPT0od3wwKSl7YnJlYWt9aWYobj4+PjA8KGNbaz4+Ml18MCk+Pj4wKXt4PW47ZG97dz1hW3g+PjBdfDA7eT1hW28+PjBdfDA7ej0oeSYxKSE9MDtpZih6KXtwPShjW28+PjJdJi0yKSsgLTF8MDt5PWNbdT4+Ml18MH1lbHNle3A9MTA7eT0oeSYyNTUpPj4+MX1pZigoeXwwKT09KHB8MCkpe2xnKG8scCwxLHAscCwwKTtpZigoYVtvPj4wXSYxKT09MCl7cD0xOH1lbHNle3A9MTl9fWVsc2V7aWYoeil7cD0xOX1lbHNle3A9MTh9fWlmKChwfDApPT0xOCl7cD0wO2Fbbz4+MF09KHk8PDEpKzI7QT1zO3o9eSsxfDB9ZWxzZSBpZigocHwwKT09MTkpe3A9MDtBPWNbaD4+Ml18MDt6PXkrMXwwO2NbdT4+Ml09en1hW0EreT4+MF09dzthW0Erej4+MF09MDt4PXgrMXwwfXdoaWxlKHg+Pj4wPChjW2s+PjJdfDApPj4+MCk7dz1jW2w+PjJdfDB9ZWxzZXt3PXh9aWYoISh3Pj4+MDx2Pj4+MCkpe3A9MjQ7YnJlYWt9eD1jW3I+PjJdfDB9aWYoKHB8MCk9PTI0KXtxPShhW28+PjBdJjEpPT0wO2JyZWFrfW9rKDE0Mjk2KX1lbHNle3E9MX19d2hpbGUoMCk7aWYocSl7cD1vKzF8MH1lbHNle3A9Y1tvKzg+PjJdfDB9cD1qYigoKGV8MCk9PS0xPy0xOmU8PDEpfDAsZnwwLGd8MCxwfDApfDA7Y1tiKzA+PjJdPTA7Y1tiKzQ+PjJdPTA7Y1tiKzg+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1tqPj4yXT0xNTE3NjtBPUpuKHB8MCl8MDtxPXArQXwwO3o9bTtjW3o+PjJdPTA7Y1t6KzQ+PjJdPTA7YTpkb3tpZigoQXwwKT4wKXtlPXE7cj1uKzEyOHwwO2c9Yis0fDA7Zj1iKzh8MDtoPTE1MTc2fDA7d2hpbGUoMSl7Y1tsPj4yXT1wO0E9KHRjW2NbaCsxNj4+Ml0mMzFdKGosbSxwLChlLXB8MCk+MzI/cCszMnwwOnEsbCxuLHIsayl8MCk9PTI7aD1jW2w+PjJdfDA7aWYoQXwoaHwwKT09KHB8MCkpe2JyZWFrfWlmKG4+Pj4wPChjW2s+PjJdfDApPj4+MCl7cz1uO2Rve2g9Y1tzPj4yXXwwO3Q9YVtiPj4wXXwwO3U9KHQmMSkhPTA7aWYodSl7cD0oY1tiPj4yXSYtMikrIC0xfDA7dD1jW2c+PjJdfDB9ZWxzZXtwPTE7dD0odCYyNTUpPj4+MX1pZigodHwwKT09KHB8MCkpe3BnKGIscCwxLHAscCwwLDApO2lmKChhW2I+PjBdJjEpPT0wKXtwPTQzfWVsc2V7cD00NH19ZWxzZXtpZih1KXtwPTQ0fWVsc2V7cD00M319aWYoKHB8MCk9PTQzKXthW2I+PjBdPSh0PDwxKSsyO3Y9Zzt1PXQrMXwwfWVsc2UgaWYoKHB8MCk9PTQ0KXt2PWNbZj4+Ml18MDt1PXQrMXwwO2NbZz4+Ml09dX1jW3YrKHQ8PDIpPj4yXT1oO2NbdisodTw8Mik+PjJdPTA7cz1zKzR8MH13aGlsZShzPj4+MDwoY1trPj4yXXwwKT4+PjApO3A9Y1tsPj4yXXwwfWVsc2V7cD1ofWlmKCEocD4+PjA8cT4+PjApKXticmVhayBhfWg9Y1tqPj4yXXwwfW9rKDE0Mjk2KX19d2hpbGUoMCk7aWYoKGFbbz4+MF0mMSk9PTApe2k9ZDtyZXR1cm59Yj1jW28rOD4+Ml18MDtpZigoYnwwKT09MCl7aT1kO3JldHVybn12bihiKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIFJrKGEsYil7YT1hfDA7Yj1ifDA7YT1pO1liKCgoYnwwKT09LTE/LTE6Yjw8MSl8MCl8MDtpPWE7cmV0dXJufWZ1bmN0aW9uIFNrKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtjW2I+PjJdPTEzNTQ0O2I9Yis4fDA7ZT1jW2I+PjJdfDA7aWYoKGFbMTMzNjhdfDApPT0wPyhRYSgxMzM2OCl8MCkhPTA6MCl7Y1szMzQwXT1rYigyMTQ3NDgzNjQ3LDEzMzc2LDApfDA7JGEoMTMzNjgpfWlmKChlfDApPT0oY1szMzQwXXwwKSl7aT1kO3JldHVybn1WYihjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gVGsoKXt2YXIgYj0wLGQ9MCxlPTA7ZD1YYSg4KXwwO2NbZD4+Ml09OTkwNDt3aGlsZSgxKXtlPXVuKDE5KXwwO2lmKChlfDApIT0wKXtiPTc7YnJlYWt9ZT1jWzU2NjZdfDA7Y1s1NjY2XT1lKzA7aWYoKGV8MCk9PTApe2JyZWFrfXNjW2UmMzFdKCl9aWYoKGJ8MCk9PTcpe2NbZSs0Pj4yXT02O2NbZT4+Ml09NjtiPWUrMTJ8MDtjW2QrND4+Ml09YjtjW2UrOD4+Ml09MDthW2IrMD4+MF09YVsxMzM1Mj4+MF18MDthW2IrMT4+MF09YVsxMzM1Mz4+MF18MDthW2IrMj4+MF09YVsxMzM1ND4+MF18MDthW2IrMz4+MF09YVsxMzM1NT4+MF18MDthW2IrND4+MF09YVsxMzM1Nj4+MF18MDthW2IrNT4+MF09YVsxMzM1Nz4+MF18MDthW2IrNj4+MF09YVsxMzM1OD4+MF18MDtjW2Q+PjJdPTk5ODQ7d2IoZHwwLDEwMDI0LDEwNCl9ZT1YYSg0KXwwO2NbZT4+Ml09MjI2ODA7d2IoZXwwLDIyNzI4LDIwNil9ZnVuY3Rpb24gVWsoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtmPWk7aD1kKzR8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7aD1iKzEyfDA7bD1jW2g+PjJdfDA7Zz1iKzh8MDtrPWNbZz4+Ml18MDtxPWw7cD1rO2o9cS1wPj4yO2Rve2lmKCEoaj4+PjA+ZT4+PjApKXtvPWUrMXwwO2lmKCEoaj4+PjA8bz4+PjApKXtpZighKGo+Pj4wPm8+Pj4wKSl7YnJlYWt9aj1rKyhvPDwyKXwwO2lmKChsfDApPT0oanwwKSl7YnJlYWt9Y1toPj4yXT1sKyh+KChsKyAtNCsoMC1qKXwwKT4+PjIpPDwyKTticmVha31uPW8tanwwO2s9YisxNnwwO3I9Y1trPj4yXXwwO2Rve2lmKHItcT4+Mj4+PjA8bj4+PjApe2w9YisyNHwwO2lmKG8+Pj4wPjEwNzM3NDE4MjMpe1RrKCl9cD1yLXB8MDtpZihwPj4yPj4+MDw1MzY4NzA5MTEpe3I9cD4+MTtvPXI+Pj4wPG8+Pj4wP286cjtpZigob3wwKSE9MCl7cD1iKzEzNnwwO2lmKChhW3A+PjBdfDApPT0wJm8+Pj4wPDI5KXthW3A+PjBdPTE7cD1sfWVsc2V7bT0xNH19ZWxzZXtvPTA7cD0wfX1lbHNle289MTA3Mzc0MTgyMzttPTE0fWRve2lmKChtfDApPT0xNCl7cT1vPDwyO3E9KHF8MCk9PTA/MTpxO3doaWxlKDEpe3A9dW4ocSl8MDtpZigocHwwKSE9MCl7bT0yMDticmVha31wPWNbNTY2Nl18MDtjWzU2NjZdPXArMDtpZigocHwwKT09MCl7YnJlYWt9c2NbcCYzMV0oKX1pZigobXwwKT09MjApe2JyZWFrfXI9WGEoNCl8MDtjW3I+PjJdPTIyNjgwO3diKHJ8MCwyMjcyOCwyMDYpfX13aGlsZSgwKTttPXArKGo8PDIpfDA7ZG97aWYoKG18MCk9PTApe209MH1lbHNle2NbbT4+Ml09MH1tPW0rNHwwO249bisgLTF8MH13aGlsZSgobnwwKSE9MCk7bj1jW2c+PjJdfDA7cT0oY1toPj4yXXwwKS1ufDA7cj1wKyhqLShxPj4yKTw8Mil8MDtMbihyfDAsbnwwLHF8MCl8MDtjW2c+PjJdPXI7Y1toPj4yXT1tO2Nbaz4+Ml09cCsobzw8Mik7aWYoKG58MCkhPTApe2lmKChsfDApPT0obnwwKSl7YVtiKzEzNj4+MF09MDticmVha31lbHNle3ZuKG4pO2JyZWFrfX19ZWxzZXtkb3tpZigobHwwKT09MCl7aj0wfWVsc2V7Y1tsPj4yXT0wO2o9Y1toPj4yXXwwfWw9ais0fDA7Y1toPj4yXT1sO249bisgLTF8MH13aGlsZSgobnwwKSE9MCl9fXdoaWxlKDApO2s9Y1tnPj4yXXwwfX13aGlsZSgwKTtoPWNbaysoZTw8Mik+PjJdfDA7aWYoKGh8MCk9PTApe3I9aztyPXIrKGU8PDIpfDA7Y1tyPj4yXT1kO2k9ZjtyZXR1cm59cT1oKzR8MDtyPWNbcT4+Ml18MDtjW3E+PjJdPXIrIC0xO2lmKChyfDApPT0wKXtsY1tjWyhjW2g+PjJdfDApKzg+PjJdJjI1NV0oaCl9cj1jW2c+PjJdfDA7cj1yKyhlPDwyKXwwO2Nbcj4+Ml09ZDtpPWY7cmV0dXJufWZ1bmN0aW9uIFZrKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO1drKGEpO2lmKChhfDApIT0wKXt2bihhKX1pPWI7cmV0dXJufWZ1bmN0aW9uIFdrKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2U9aTtjW2I+PjJdPTEzMzkyO2Q9YisxMnwwO2o9Y1tkPj4yXXwwO2Y9Yis4fDA7az1jW2Y+PjJdfDA7aWYoKGp8MCkhPShrfDApKXtoPTA7d2hpbGUoMSl7bD1jW2srKGg8PDIpPj4yXXwwO2lmKChsfDApIT0wKXtqPWwrNHwwO2s9Y1tqPj4yXXwwO2Nbaj4+Ml09aysgLTE7aWYoKGt8MCk9PTApe2xjW2NbKGNbbD4+Ml18MCkrOD4+Ml0mMjU1XShsKX1qPWNbZD4+Ml18MDtrPWNbZj4+Ml18MH1oPWgrMXwwO2lmKCEoaD4+PjA8ai1rPj4yPj4+MCkpe2o9azticmVha319fWlmKCEoKGFbYisxNDQ+PjBdJjEpPT0wKT8oZz1jW2IrMTUyPj4yXXwwLChnfDApIT0wKTowKXt2bihnKTtqPWNbZj4+Ml18MH1pZigoanwwKT09MCl7aT1lO3JldHVybn1mPWNbZD4+Ml18MDtpZigoZnwwKSE9KGp8MCkpe2NbZD4+Ml09ZisofigoZisgLTQrKDAtail8MCk+Pj4yKTw8Mil9aWYoKGIrMjR8MCk9PShqfDApKXthW2IrMTM2Pj4wXT0wO2k9ZTtyZXR1cm59ZWxzZXt2bihqKTtpPWU7cmV0dXJufX0KCgoKZnVuY3Rpb24gWm4oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGhjW2EmNjNdKGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIF9uKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiAkbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gYW8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGJvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBjbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gZW8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGZvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBnbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gaG8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGlvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBqbyhhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2ljW2EmNjNdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24ga28oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIGxvKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBtbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gbm8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIG9vKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBwbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gcW8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIHJvKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBzbyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gdG8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIHVvKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtqY1thJjMxXShifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiB2byhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gd28oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIHhvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiB5byhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gem8oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIEFvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiBCbyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gQ28oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIERvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiBFbyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gRm8oYSl7YT1hfDA7cmV0dXJuIGtjW2EmMzFdKCl8MH1mdW5jdGlvbiBHbygpe3JldHVybiBrYSgwKXwwfWZ1bmN0aW9uIEhvKCl7cmV0dXJuIGthKDEpfDB9ZnVuY3Rpb24gSW8oKXtyZXR1cm4ga2EoMil8MH1mdW5jdGlvbiBKbygpe3JldHVybiBrYSgzKXwwfWZ1bmN0aW9uIEtvKCl7cmV0dXJuIGthKDQpfDB9ZnVuY3Rpb24gTG8oKXtyZXR1cm4ga2EoNSl8MH1mdW5jdGlvbiBNbygpe3JldHVybiBrYSg2KXwwfWZ1bmN0aW9uIE5vKCl7cmV0dXJuIGthKDcpfDB9ZnVuY3Rpb24gT28oKXtyZXR1cm4ga2EoOCl8MH1mdW5jdGlvbiBQbygpe3JldHVybiBrYSg5KXwwfWZ1bmN0aW9uIFFvKGEsYil7YT1hfDA7Yj1ifDA7bGNbYSYyNTVdKGJ8MCl9ZnVuY3Rpb24gUm8oYSl7YT1hfDA7a2EoMCxhfDApfWZ1bmN0aW9uIFNvKGEpe2E9YXwwO2thKDEsYXwwKX1mdW5jdGlvbiBUbyhhKXthPWF8MDtrYSgyLGF8MCl9ZnVuY3Rpb24gVW8oYSl7YT1hfDA7a2EoMyxhfDApfWZ1bmN0aW9uIFZvKGEpe2E9YXwwO2thKDQsYXwwKX1mdW5jdGlvbiBXbyhhKXthPWF8MDtrYSg1LGF8MCl9ZnVuY3Rpb24gWG8oYSl7YT1hfDA7a2EoNixhfDApfWZ1bmN0aW9uIFlvKGEpe2E9YXwwO2thKDcsYXwwKX1mdW5jdGlvbiBabyhhKXthPWF8MDtrYSg4LGF8MCl9ZnVuY3Rpb24gX28oYSl7YT1hfDA7a2EoOSxhfDApfWZ1bmN0aW9uICRvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDttY1thJjEyN10oYnwwLGN8MCl9ZnVuY3Rpb24gYXAoYSxiKXthPWF8MDtiPWJ8MDtrYSgwLGF8MCxifDApfWZ1bmN0aW9uIGJwKGEsYil7YT1hfDA7Yj1ifDA7a2EoMSxhfDAsYnwwKX1mdW5jdGlvbiBjcChhLGIpe2E9YXwwO2I9YnwwO2thKDIsYXwwLGJ8MCl9ZnVuY3Rpb24gZHAoYSxiKXthPWF8MDtiPWJ8MDtrYSgzLGF8MCxifDApfWZ1bmN0aW9uIGVwKGEsYil7YT1hfDA7Yj1ifDA7a2EoNCxhfDAsYnwwKX1mdW5jdGlvbiBmcChhLGIpe2E9YXwwO2I9YnwwO2thKDUsYXwwLGJ8MCl9ZnVuY3Rpb24gZ3AoYSxiKXthPWF8MDtiPWJ8MDtrYSg2LGF8MCxifDApfWZ1bmN0aW9uIGhwKGEsYil7YT1hfDA7Yj1ifDA7a2EoNyxhfDAsYnwwKX1mdW5jdGlvbiBpcChhLGIpe2E9YXwwO2I9YnwwO2thKDgsYXwwLGJ8MCl9ZnVuY3Rpb24ganAoYSxiKXthPWF8MDtiPWJ8MDtrYSg5LGF8MCxifDApfWZ1bmN0aW9uIGtwKGEsYixjLGQsZSxmLGcsaCxpLGope2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2o9anwwO25jW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDAsanwwKX1mdW5jdGlvbiBscChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gbXAoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIG5wKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiBvcChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gcHAoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIHFwKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiBycChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gc3AoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIHRwKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDAsaXwwKX1mdW5jdGlvbiB1cChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwLGl8MCl9ZnVuY3Rpb24gdnAoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gb2NbYSYxMjddKGJ8MCl8MH1mdW5jdGlvbiB3cChhKXthPWF8MDtyZXR1cm4ga2EoMCxhfDApfDB9ZnVuY3Rpb24geHAoYSl7YT1hfDA7cmV0dXJuIGthKDEsYXwwKXwwfWZ1bmN0aW9uIHlwKGEpe2E9YXwwO3JldHVybiBrYSgyLGF8MCl8MH1mdW5jdGlvbiB6cChhKXthPWF8MDtyZXR1cm4ga2EoMyxhfDApfDB9ZnVuY3Rpb24gQXAoYSl7YT1hfDA7cmV0dXJuIGthKDQsYXwwKXwwfWZ1bmN0aW9uIEJwKGEpe2E9YXwwO3JldHVybiBrYSg1LGF8MCl8MH1mdW5jdGlvbiBDcChhKXthPWF8MDtyZXR1cm4ga2EoNixhfDApfDB9ZnVuY3Rpb24gRHAoYSl7YT1hfDA7cmV0dXJuIGthKDcsYXwwKXwwfWZ1bmN0aW9uIEVwKGEpe2E9YXwwO3JldHVybiBrYSg4LGF8MCl8MH1mdW5jdGlvbiBGcChhKXthPWF8MDtyZXR1cm4ga2EoOSxhfDApfDB9ZnVuY3Rpb24gR3AoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPStoO3BjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLCtoKX1mdW5jdGlvbiBIcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIElwKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoMSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gSnAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBLcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIExwKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoNCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gTXAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBOcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIE9wKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9K2c7a2EoNyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCwrZyl9ZnVuY3Rpb24gUHAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBRcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsK2cpfWZ1bmN0aW9uIFJwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3FjW2EmMzFdKGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBTcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoMCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gVHAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDEsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFVwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSgyLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBWcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoMyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gV3AoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDQsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFhwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSg1LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBZcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoNixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gWnAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2thKDcsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIF9wKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtrYSg4LGF8MCxifDAsY3wwKX1mdW5jdGlvbiAkcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoOSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gYXEoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz0rZztyY1thJjMxXShifDAsY3wwLGR8MCxlfDAsZnwwLCtnKX1mdW5jdGlvbiBicShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSgwLGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGNxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24gZHEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBlcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSgzLGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGZxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24gZ3EoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBocShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSg2LGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGlxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPStmO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCwrZil9ZnVuY3Rpb24ganEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9K2Y7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwLCtmKX1mdW5jdGlvbiBrcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtrYSg5LGF8MCxifDAsY3wwLGR8MCxlfDAsK2YpfWZ1bmN0aW9uIGxxKGEpe2E9YXwwO3NjW2EmMzFdKCl9ZnVuY3Rpb24gbXEoKXtrYSgwKX1mdW5jdGlvbiBucSgpe2thKDEpfWZ1bmN0aW9uIG9xKCl7a2EoMil9ZnVuY3Rpb24gcHEoKXtrYSgzKX1mdW5jdGlvbiBxcSgpe2thKDQpfWZ1bmN0aW9uIHJxKCl7a2EoNSl9ZnVuY3Rpb24gc3EoKXtrYSg2KX1mdW5jdGlvbiB0cSgpe2thKDcpfWZ1bmN0aW9uIHVxKCl7a2EoOCl9ZnVuY3Rpb24gdnEoKXtrYSg5KX1mdW5jdGlvbiB3cShhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7cmV0dXJuIHRjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfDB9ZnVuY3Rpb24geHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIHlxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiB6cShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gQXEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEJxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiBDcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gRHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEVxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl8MH1mdW5jdGlvbiBGcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfDB9ZnVuY3Rpb24gR3EoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKXwwfWZ1bmN0aW9uIEhxKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIHVjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBJcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoMCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gSnEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDEsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEtxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSgyLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBMcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoMyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gTXEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDQsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIE5xKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSg1LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBPcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoNixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gUHEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIGthKDcsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFFxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBrYSg4LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBScShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4ga2EoOSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gU3EoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO3ZjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCxpfDApfWZ1bmN0aW9uIFRxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBVcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gVnEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIFdxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBYcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gWXEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIFpxKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBfcShhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwLGh8MCl9ZnVuY3Rpb24gJHEoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCxofDApfWZ1bmN0aW9uIGFyKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7a2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDAsaHwwKX1mdW5jdGlvbiBicihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt3Y1thJjYzXShifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl9ZnVuY3Rpb24gY3IoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGRyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBlcihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gZnIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGdyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBocihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gaXIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGpyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBrcihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gbHIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2thKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIG1yKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4geGNbYSY2M10oYnwwLGN8MCl8MH1mdW5jdGlvbiBucihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSgwLGF8MCxifDApfDB9ZnVuY3Rpb24gb3IoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoMSxhfDAsYnwwKXwwfWZ1bmN0aW9uIHByKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDIsYXwwLGJ8MCl8MH1mdW5jdGlvbiBxcihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSgzLGF8MCxifDApfDB9ZnVuY3Rpb24gcnIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoNCxhfDAsYnwwKXwwfWZ1bmN0aW9uIHNyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDUsYXwwLGJ8MCl8MH1mdW5jdGlvbiB0cihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSg2LGF8MCxifDApfDB9ZnVuY3Rpb24gdXIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4ga2EoNyxhfDAsYnwwKXwwfWZ1bmN0aW9uIHZyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIGthKDgsYXwwLGJ8MCl8MH1mdW5jdGlvbiB3cihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBrYSg5LGF8MCxifDApfDB9ZnVuY3Rpb24geHIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB5Y1thJjYzXShifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIHlyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiB6cihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSgxLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gQXIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoMixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEJyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBDcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSg0LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gRHIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoNSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEVyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBGcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBrYSg3LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gR3IoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4ga2EoOCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEhyKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIGthKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBJcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3pjW2EmMzFdKGJ8MCxjfDAsZHwwLGV8MCl9ZnVuY3Rpb24gSnIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoMCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEtyKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDEsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBMcihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSgyLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gTXIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoMyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIE5yKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDQsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBPcihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSg1LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gUHIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoNixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFFyKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2thKDcsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBScihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSg4LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gU3IoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoOSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFRyKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtmYSgwKTtyZXR1cm4gMH1mdW5jdGlvbiBVcihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtmYSgxKX1mdW5jdGlvbiBWcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2ZhKDIpfWZ1bmN0aW9uIFdyKCl7ZmEoMyk7cmV0dXJuIDB9ZnVuY3Rpb24gWHIoYSl7YT1hfDA7ZmEoNCl9ZnVuY3Rpb24gWXIoYSxiKXthPWF8MDtiPWJ8MDtmYSg1KX1mdW5jdGlvbiBacihhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7ZmEoNil9ZnVuY3Rpb24gX3IoYSl7YT1hfDA7ZmEoNyk7cmV0dXJuIDB9ZnVuY3Rpb24gJHIoYSl7YT1hfDA7cmV0dXJuIEFiKGF8MCl8MH1mdW5jdGlvbiBhcyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPStnO2ZhKDgpfWZ1bmN0aW9uIGJzKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtmYSg5KX1mdW5jdGlvbiBjcyhhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj0rZjtmYSgxMCl9ZnVuY3Rpb24gZHMoKXtmYSgxMSl9ZnVuY3Rpb24gZXMoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtmYSgxMik7cmV0dXJuIDB9ZnVuY3Rpb24gZnMoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZmEoMTMpO3JldHVybiAwfWZ1bmN0aW9uIGdzKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7ZmEoMTQpfWZ1bmN0aW9uIGhzKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtmYSgxNSl9ZnVuY3Rpb24gaXMoYSxiKXthPWF8MDtiPWJ8MDtmYSgxNik7cmV0dXJuIDB9ZnVuY3Rpb24ganMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmYSgxNyk7cmV0dXJuIDB9ZnVuY3Rpb24ga3MoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZmEoMTgpfQoKCgoKLy8gRU1TQ1JJUFRFTl9FTkRfRlVOQ1MKdmFyIGhjPVtUcixUcixfbixUciwkbixUcixhbyxUcixibyxUcixjbyxUcixlbyxUcixmbyxUcixnbyxUcixobyxUcixpbyxUcix2ZyxBZyxFZyxKZyxPZyxrZixTZyx4ZixQZixRZixEaCxJaCxLayxQayxxbCxzbCx2bCxibCxnbCxpbCxsbCxobixtbixnbixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcixUcl07dmFyIGljPVtVcixVcixrbyxVcixsbyxVcixtbyxVcixubyxVcixvbyxVcixwbyxVcixxbyxVcixybyxVcixzbyxVcix0byxVcixMaCxOaCxPaCxQaCxRaCxSaCxTaCxUaCxVaCxWaCxXaCwkaCxiaSxjaSxkaSxlaSxmaSxnaSxoaSxpaSxqaSxraSx5aSxBaSxNaSxPaSxYaSxZaSxaaSxfaSwkaSxnaixoaixpaixqaixraixCayxIayxVcixVcixVcixVcl07dmFyIGpjPVtWcixWcix2byxWcix3byxWcix4byxWcix5byxWcix6byxWcixBbyxWcixCbyxWcixDbyxWcixEbyxWcixFbyxWcixxbixwbixvbixWcixWcixWcixWcixWcixWcixWcl07dmFyIGtjPVtXcixXcixHbyxXcixIbyxXcixJbyxXcixKbyxXcixLbyxXcixMbyxXcixNbyxXcixObyxXcixPbyxXcixQbyxXcixPYyxXcixXcixXcixXcixXcixXcixXcixXcixXcl07dmFyIGxjPVtYcixYcixSbyxYcixTbyxYcixUbyxYcixVbyxYcixWbyxYcixXbyxYcixYbyxYcixZbyxYcixabyxYcixfbyxYcixUYyxVYyxoZCxpZCxuZCxvZCx2ZCx3ZCx4ZCx6ZCxCZCxDZCxEZCxFZCxGZCxIZCxKZCxLZCxMZCxNZCxOZCxQZCxSZCxTZCxUZCxVZCxWZCxYZCxZZCwkZCxaZCxhZSxfZCxiZSxWZyxVZyxYZyxXZyxjZSxkZSxqZSxrZSxsZSxuZSx0ZSx1ZSxzZSx2ZSxyZSx3ZSx4ZSx5ZSx6ZSxBZSxCZSxDZSxFZSxGZSxJZSxKZSxPZSxQZSxOZSxRZSxxZSxSZSxUZSxVZSxWZSxYZSxZZSxaZSxfZSxhZixmZixnZixtZixuZix0Zix1Zix6ZixBZixJZixIZixMZixLZixOZixfZixaZixUZiwkZixYZixhZyx0ZyxzZyxIZyxHZyxfZyxaZyxhaCwkZyxkaCxjaCxmaCxlaCxuaCxtaCxwaCxvaCx2aCx1aCxyZyx3aCx0aCx4aCx6aCx5aCxfayxGaCxFaCxLaCxKaCxfaCxaaCx0aSxzaSxIaSxHaSxWaSxVaSxlaixkaixvaixuaixyaixxaix1aix0aixGaixFaixRaixQaiwkaixfaixrayxqayxzayxyayx4ayx3ayxEayxDayxKayxJayxPayxOayxXayxWayxvbCxubCxTayxGbCxlbSxkbSxnbSxmbSxBaCxaayxhbCx4bCxObCxWbCxibSxjbSxZbSxYbSxfbSxjbiwkbSxhbixmbixibixkbixlbix6bix5biwkayxEZSxiZyxSYyxlZixtayx2bixUbSxTbSxSbSxRbSxQbSxPbSxmZyxtZyxYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcixYcl07dmFyIG1jPVtZcixZcixhcCxZcixicCxZcixjcCxZcixkcCxZcixlcCxZcixmcCxZcixncCxZcixocCxZcixpcCxZcixqcCxZcixnZCxBZCxJZCxRZCx1ZyxIZSxLZSxoZixvZix2ZixCZixJZyx4aix5aix6aixBaixDaixEaixJaixKaixLaixMaixOaixPaixUaixVaixWaixXaixZaixaaixjayxkayxlayxmayxoayxpayxNayxSayxsbSxubSxwbSxtbSxvbSxxbSxKYyxZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcixZcl07dmFyIG5jPVtacixacixscCxacixtcCxacixucCxacixvcCxacixwcCxacixxcCxacixycCxacixzcCxacix0cCxacix1cCxacixhaixsaixacixacixacixacixacixacixacixacl07dmFyIG9jPVtfcixfcix3cCxfcix4cCxfcix5cCxfcix6cCxfcixBcCxfcixCcCxfcixDcCxfcixEcCxfcixFcCxfcixGcCxfcixNZix5Zyx6ZyxnZSxDZywkcixHZSxNZSxqZixOZyxQZyxRZyxNZyxwZixxZix3ZixCZyxDZixEZixKZixSZixVZixyaCxXaSxybSx0bSx2bSxCbSxEbSx4bSx6bSxmaixzbSx1bSx3bSxDbSxFbSx5bSxBbSx2aix3aixCaixHaixIaixNaixSaixTaixYaixhayxiayxnayxKbCxLbCxNbCxobSxqbSxpbSxrbSxCbCxDbCxFbCxSbCxTbCxVbCxabCxfbCxhbSxabSxBbixRYyxQYyxLYyxfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcixfcl07dmFyIHBjPVthcyxhcyxIcCxhcyxJcCxhcyxKcCxhcyxLcCxhcyxMcCxhcyxNcCxhcyxOcCxhcyxPcCxhcyxQcCxhcyxRcCxhcyx5ayxFayxhcyxhcyxhcyxhcyxhcyxhcyxhcyxhc107dmFyIHFjPVticyxicyxTcCxicyxUcCxicyxVcCxicyxWcCxicyxXcCxicyxYcCxicyxZcCxicyxacCxicyxfcCxicywkcCxicyxPZixTZixXZixWZixzaCxJYyxNYyxicyxicyxic107dmFyIHJjPVtjcyxjcyxicSxjcyxjcSxjcyxkcSxjcyxlcSxjcyxmcSxjcyxncSxjcyxocSxjcyxpcSxjcyxqcSxjcyxrcSxjcyxCaSxFaSxQaSxSaSxjcyxjcyxjcyxjcyxjcyxjc107dmFyIHNjPVtkcyxkcyxtcSxkcyxucSxkcyxvcSxkcyxwcSxkcyxxcSxkcyxycSxkcyxzcSxkcyx0cSxkcyx1cSxkcyx2cSxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkcyxkc107dmFyIHRjPVtlcyxlcyx4cSxlcyx5cSxlcyx6cSxlcyxBcSxlcyxCcSxlcyxDcSxlcyxEcSxlcyxFcSxlcyxGcSxlcyxHcSxlcyxHbCxIbCx5bCx6bCxPbCxQbCxXbCxYbCxlcyxlc107dmFyIHVjPVtmcyxmcyxJcSxmcyxKcSxmcyxLcSxmcyxMcSxmcyxNcSxmcyxOcSxmcyxPcSxmcyxQcSxmcyxRcSxmcyxScSxmcyx1bCxjbCxkbCxlbCxrbCxmcyxmcyxmcyxmcyxmc107dmFyIHZjPVtncyxncyxUcSxncyxVcSxncyxWcSxncyxXcSxncyxYcSxncyxZcSxncyxacSxncyxfcSxncywkcSxncyxhcixncyxwaixzaixsayxwayx0ayx2ayxncyxncyxncyxnc107dmFyIHdjPVtocyxocyxjcixocyxkcixocyxlcixocyxmcixocyxncixocyxocixocyxpcixocyxqcixocyxrcixocyxscixocyxlZSxLZyx3Zyx1aSx2aSx6aSxGaSxJaSxKaSxOaSxTaSxMayxRayx0bixzbixybixocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxocyxoc107dmFyIHhjPVtpcyxpcyxucixpcyxvcixpcyxwcixpcyxxcixpcyxycixpcyxzcixpcyx0cixpcyx1cixpcyx2cixpcyx3cixpcyx5ZCxHZCxPZCxXZCxoZSxpZSxtZSxMZSxXZSwkZSxSZyxsZixyZixUZyxEZyx5ZixFZixGZyxwbCxybCx0bCxmbCxobCxqbCxMYyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpcyxpc107dmFyIHljPVtqcyxqcyx5cixqcyx6cixqcyxBcixqcyxCcixqcyxDcixqcyxEcixqcyxFcixqcyxGcixqcyxHcixqcyxIcixqcyxCaCxHaCx3bCxJbCxMbCxtbCxBbCxEbCxRbCxUbCxZbCwkbCxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqcyxqc107dmFyIHpjPVtrcyxrcyxKcixrcyxLcixrcyxMcixrcyxNcixrcyxOcixrcyxPcixrcyxQcixrcyxRcixrcyxScixrcyxTcixrcyxmZSxMZyx4ZyxDaCxIaCxqbixrbixsbixOYyxrc107cmV0dXJue19pNjRTdWJ0cmFjdDpIbixfZnJlZTp2bixfcmVhbGxvYzp3bixfaTY0QWRkOkluLF9tZW1tb3ZlOk1uLF9zdHJsZW46Sm4sX21lbXNldDpObixfbWFsbG9jOnVuLF9tZW1jcHk6TG4sX19fZ2V0VHlwZU5hbWU6Y2YsX2JpdHNoaWZ0NjRMc2hyOktuLF9iaXRzaGlmdDY0U2hsOk9uLF9fR0xPQkFMX19JX2E6YmYsX19HTE9CQUxfX0lfYTY1OmRmLF9fR0xPQkFMX19JX2ExNTM6R2YscnVuUG9zdFNldHM6R24sc3RhY2tBbGxvYzpBYyxzdGFja1NhdmU6QmMsc3RhY2tSZXN0b3JlOkNjLHNldFRocmV3OkRjLHNldFRlbXBSZXQwOkdjLGdldFRlbXBSZXQwOkhjLGR5bkNhbGxfaWlpaTpabixkeW5DYWxsX3ZpaWlpaWlpOmpvLGR5bkNhbGxfdmlpaWlpOnVvLGR5bkNhbGxfaTpGbyxkeW5DYWxsX3ZpOlFvLGR5bkNhbGxfdmlpOiRvLGR5bkNhbGxfdmlpaWlpaWlpaTprcCxkeW5DYWxsX2lpOnZwLGR5bkNhbGxfdmlpaWlpaWQ6R3AsZHluQ2FsbF92aWlpOlJwLGR5bkNhbGxfdmlpaWlpZDphcSxkeW5DYWxsX3Y6bHEsZHluQ2FsbF9paWlpaWlpaWk6d3EsZHluQ2FsbF9paWlpaTpIcSxkeW5DYWxsX3ZpaWlpaWlpaTpTcSxkeW5DYWxsX3ZpaWlpaWk6YnIsZHluQ2FsbF9paWk6bXIsZHluQ2FsbF9paWlpaWk6eHIsZHluQ2FsbF92aWlpaTpJcn0KLy8gRU1TQ1JJUFRFTl9FTkRfQVNNCgp9KSh7Ik1hdGgiOk1hdGgsIkludDhBcnJheSI6SW50OEFycmF5LCJJbnQxNkFycmF5IjpJbnQxNkFycmF5LCJJbnQzMkFycmF5IjpJbnQzMkFycmF5LCJVaW50OEFycmF5IjpVaW50OEFycmF5LCJVaW50MTZBcnJheSI6VWludDE2QXJyYXksIlVpbnQzMkFycmF5IjpVaW50MzJBcnJheSwiRmxvYXQzMkFycmF5IjpGbG9hdDMyQXJyYXksIkZsb2F0NjRBcnJheSI6RmxvYXQ2NEFycmF5fSx7ImFib3J0IjphYm9ydCwiYXNzZXJ0Ijphc3NlcnQsImFzbVByaW50SW50Ijphc21QcmludEludCwiYXNtUHJpbnRGbG9hdCI6YXNtUHJpbnRGbG9hdCwibWluIjpNYXRoX21pbiwianNDYWxsIjpqc0NhbGwsImludm9rZV9paWlpIjppbnZva2VfaWlpaSwiaW52b2tlX3ZpaWlpaWlpIjppbnZva2VfdmlpaWlpaWksImludm9rZV92aWlpaWkiOmludm9rZV92aWlpaWksImludm9rZV9pIjppbnZva2VfaSwiaW52b2tlX3ZpIjppbnZva2VfdmksImludm9rZV92aWkiOmludm9rZV92aWksImludm9rZV92aWlpaWlpaWlpIjppbnZva2VfdmlpaWlpaWlpaSwiaW52b2tlX2lpIjppbnZva2VfaWksImludm9rZV92aWlpaWlpZCI6aW52b2tlX3ZpaWlpaWlkLCJpbnZva2VfdmlpaSI6aW52b2tlX3ZpaWksImludm9rZV92aWlpaWlkIjppbnZva2VfdmlpaWlpZCwiaW52b2tlX3YiOmludm9rZV92LCJpbnZva2VfaWlpaWlpaWlpIjppbnZva2VfaWlpaWlpaWlpLCJpbnZva2VfaWlpaWkiOmludm9rZV9paWlpaSwiaW52b2tlX3ZpaWlpaWlpaSI6aW52b2tlX3ZpaWlpaWlpaSwiaW52b2tlX3ZpaWlpaWkiOmludm9rZV92aWlpaWlpLCJpbnZva2VfaWlpIjppbnZva2VfaWlpLCJpbnZva2VfaWlpaWlpIjppbnZva2VfaWlpaWlpLCJpbnZva2VfdmlpaWkiOmludm9rZV92aWlpaSwiX2ZhYnMiOl9mYWJzLCJfc3NjYW5mIjpfc3NjYW5mLCJfcHRocmVhZF9jb25kX3dhaXQiOl9wdGhyZWFkX2NvbmRfd2FpdCwiX19fY3R5cGVfdG9sb3dlcl9sb2MiOl9fX2N0eXBlX3RvbG93ZXJfbG9jLCJfYXNwcmludGYiOl9hc3ByaW50ZiwiX19lbWJpbmRfcmVnaXN0ZXJfdm9pZCI6X19lbWJpbmRfcmVnaXN0ZXJfdm9pZCwiX3NlbmQiOl9zZW5kLCJfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyI6X19lbWJpbmRfcmVnaXN0ZXJfbWVtb3J5X3ZpZXcsIl92c3NjYW5mIjpfdnNzY2FuZiwiX19fY3R5cGVfYl9sb2MiOl9fX2N0eXBlX2JfbG9jLCJfX1pTdDl0ZXJtaW5hdGV2IjpfX1pTdDl0ZXJtaW5hdGV2LCJfZm1vZCI6X2Ztb2QsIl9fX2N4YV9ndWFyZF9hY3F1aXJlIjpfX19jeGFfZ3VhcmRfYWNxdWlyZSwiX19fc2V0RXJyTm8iOl9fX3NldEVyck5vLCJfX19jeGFfaXNfbnVtYmVyX3R5cGUiOl9fX2N4YV9pc19udW1iZXJfdHlwZSwiX19fZ3h4X3BlcnNvbmFsaXR5X3YwIjpfX19neHhfcGVyc29uYWxpdHlfdjAsIl9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIiOl9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIsIl91bmdldGMiOl91bmdldGMsIl9fX2Fzc2VydF9mYWlsIjpfX19hc3NlcnRfZmFpbCwiX19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiI6X19fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbiwiX19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYiOl9fWlN0MTh1bmNhdWdodF9leGNlcHRpb252LCJfX19jdHlwZV90b3VwcGVyX2xvYyI6X19fY3R5cGVfdG91cHBlcl9sb2MsIl9mZmx1c2giOl9mZmx1c2gsIl9fX2N4YV9ndWFyZF9yZWxlYXNlIjpfX19jeGFfZ3VhcmRfcmVsZWFzZSwiX19hZGREYXlzIjpfX2FkZERheXMsIl9fX2Vycm5vX2xvY2F0aW9uIjpfX19lcnJub19sb2NhdGlvbiwiX3B3cml0ZSI6X3B3cml0ZSwiX3N0cmVycm9yX3IiOl9zdHJlcnJvcl9yLCJfc3RyZnRpbWVfbCI6X3N0cmZ0aW1lX2wsIl9fZm9ybWF0U3RyaW5nIjpfX2Zvcm1hdFN0cmluZywiX19yZWFsbHlOZWdhdGl2ZSI6X19yZWFsbHlOZWdhdGl2ZSwiX3NicmsiOl9zYnJrLCJfdXNlbG9jYWxlIjpfdXNlbG9jYWxlLCJfY2F0Z2V0cyI6X2NhdGdldHMsIl9uZXdsb2NhbGUiOl9uZXdsb2NhbGUsIl9zbnByaW50ZiI6X3NucHJpbnRmLCJfX19jeGFfYmVnaW5fY2F0Y2giOl9fX2N4YV9iZWdpbl9jYXRjaCwiX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZyI6X2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZywiX2ZpbGVubyI6X2ZpbGVubywiX19lbWJpbmRfcmVnaXN0ZXJfYm9vbCI6X19lbWJpbmRfcmVnaXN0ZXJfYm9vbCwiX19fcmVzdW1lRXhjZXB0aW9uIjpfX19yZXN1bWVFeGNlcHRpb24sIl9fX2N4YV9maW5kX21hdGNoaW5nX2NhdGNoIjpfX19jeGFfZmluZF9tYXRjaGluZ19jYXRjaCwiX3N5c2NvbmYiOl9zeXNjb25mLCJfX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nIjpfX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nLCJfc3RyZnRpbWUiOl9zdHJmdGltZSwiX19hcnJheVN1bSI6X19hcnJheVN1bSwiX19fY3hhX3Rocm93IjpfX19jeGFfdGhyb3csIl9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsIjpfX2VtYmluZF9yZWdpc3Rlcl9lbXZhbCwiX19leGl0IjpfX2V4aXQsIl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiwiX19aTktTdDlleGNlcHRpb240d2hhdEV2IjpfX1pOS1N0OWV4Y2VwdGlvbjR3aGF0RXYsIl9wdGhyZWFkX211dGV4X2Rlc3Ryb3kiOl9wdGhyZWFkX211dGV4X2Rlc3Ryb3ksIl9wdGhyZWFkX211dGV4X3VubG9jayI6X3B0aHJlYWRfbXV0ZXhfdW5sb2NrLCJfZnJlYWQiOl9mcmVhZCwiX3B0aHJlYWRfY29uZF9icm9hZGNhc3QiOl9wdGhyZWFkX2NvbmRfYnJvYWRjYXN0LCJfbWtwb3J0IjpfbWtwb3J0LCJfc3ByaW50ZiI6X3NwcmludGYsIl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzcywiX3Zhc3ByaW50ZiI6X3Zhc3ByaW50ZiwiX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmciOl9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF93c3RyaW5nLCJfd3JpdGUiOl93cml0ZSwiX19pc0xlYXBZZWFyIjpfX2lzTGVhcFllYXIsIl9fc2NhblN0cmluZyI6X19zY2FuU3RyaW5nLCJfc3RyZXJyb3IiOl9zdHJlcnJvciwiX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IiOl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yLCJfcmVjdiI6X3JlY3YsIl92c25wcmludGYiOl92c25wcmludGYsIl9fWk5TdDlleGNlcHRpb25EMkV2IjpfX1pOU3Q5ZXhjZXB0aW9uRDJFdiwiX2NvcHlzaWduIjpfY29weXNpZ24sIl9mZ2V0YyI6X2ZnZXRjLCJfX19jeGFfZG9lc19pbmhlcml0IjpfX19jeGFfZG9lc19pbmhlcml0LCJfZnJlZWxvY2FsZSI6X2ZyZWVsb2NhbGUsIl9yZWFkIjpfcmVhZCwiX2Fib3J0IjpfYWJvcnQsIl9jYXRjbG9zZSI6X2NhdGNsb3NlLCJfZndyaXRlIjpfZndyaXRlLCJfdGltZSI6X3RpbWUsIl9wdGhyZWFkX211dGV4X2xvY2siOl9wdGhyZWFkX211dGV4X2xvY2ssIl9fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0IjpfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdCwiX3ByZWFkIjpfcHJlYWQsIl9hdGV4aXQiOl9hdGV4aXQsIl9jYXRvcGVuIjpfY2F0b3BlbiwiX2V4aXQiOl9leGl0LCJfX2dldEZsb2F0IjpfX2dldEZsb2F0LCJTVEFDS1RPUCI6U1RBQ0tUT1AsIlNUQUNLX01BWCI6U1RBQ0tfTUFYLCJ0ZW1wRG91YmxlUHRyIjp0ZW1wRG91YmxlUHRyLCJBQk9SVCI6QUJPUlQsImN0dHpfaTgiOmN0dHpfaTgsImN0bHpfaTgiOmN0bHpfaTgsIk5hTiI6TmFOLCJJbmZpbml0eSI6SW5maW5pdHksIl9fWlRJU3Q5ZXhjZXB0aW9uIjpfX1pUSVN0OWV4Y2VwdGlvbiwiX19fZHNvX2hhbmRsZSI6X19fZHNvX2hhbmRsZSwiX3N0ZGVyciI6X3N0ZGVyciwiX3N0ZGluIjpfc3RkaW4sIl9zdGRvdXQiOl9zdGRvdXR9LGJ1ZmZlcik7dmFyIF9pNjRTdWJ0cmFjdD1Nb2R1bGVbIl9pNjRTdWJ0cmFjdCJdPWFzbVsiX2k2NFN1YnRyYWN0Il07dmFyIF9mcmVlPU1vZHVsZVsiX2ZyZWUiXT1hc21bIl9mcmVlIl07dmFyIF9yZWFsbG9jPU1vZHVsZVsiX3JlYWxsb2MiXT1hc21bIl9yZWFsbG9jIl07dmFyIF9pNjRBZGQ9TW9kdWxlWyJfaTY0QWRkIl09YXNtWyJfaTY0QWRkIl07dmFyIF9tZW1tb3ZlPU1vZHVsZVsiX21lbW1vdmUiXT1hc21bIl9tZW1tb3ZlIl07dmFyIF9zdHJsZW49TW9kdWxlWyJfc3RybGVuIl09YXNtWyJfc3RybGVuIl07dmFyIF9tZW1zZXQ9TW9kdWxlWyJfbWVtc2V0Il09YXNtWyJfbWVtc2V0Il07dmFyIF9tYWxsb2M9TW9kdWxlWyJfbWFsbG9jIl09YXNtWyJfbWFsbG9jIl07dmFyIF9tZW1jcHk9TW9kdWxlWyJfbWVtY3B5Il09YXNtWyJfbWVtY3B5Il07dmFyIF9fX2dldFR5cGVOYW1lPU1vZHVsZVsiX19fZ2V0VHlwZU5hbWUiXT1hc21bIl9fX2dldFR5cGVOYW1lIl07dmFyIF9iaXRzaGlmdDY0THNocj1Nb2R1bGVbIl9iaXRzaGlmdDY0THNociJdPWFzbVsiX2JpdHNoaWZ0NjRMc2hyIl07dmFyIF9iaXRzaGlmdDY0U2hsPU1vZHVsZVsiX2JpdHNoaWZ0NjRTaGwiXT1hc21bIl9iaXRzaGlmdDY0U2hsIl07dmFyIF9fR0xPQkFMX19JX2E9TW9kdWxlWyJfX0dMT0JBTF9fSV9hIl09YXNtWyJfX0dMT0JBTF9fSV9hIl07dmFyIF9fR0xPQkFMX19JX2E2NT1Nb2R1bGVbIl9fR0xPQkFMX19JX2E2NSJdPWFzbVsiX19HTE9CQUxfX0lfYTY1Il07dmFyIF9fR0xPQkFMX19JX2ExNTM9TW9kdWxlWyJfX0dMT0JBTF9fSV9hMTUzIl09YXNtWyJfX0dMT0JBTF9fSV9hMTUzIl07dmFyIHJ1blBvc3RTZXRzPU1vZHVsZVsicnVuUG9zdFNldHMiXT1hc21bInJ1blBvc3RTZXRzIl07dmFyIGR5bkNhbGxfaWlpaT1Nb2R1bGVbImR5bkNhbGxfaWlpaSJdPWFzbVsiZHluQ2FsbF9paWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWk9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlpIl09YXNtWyJkeW5DYWxsX3ZpaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpPU1vZHVsZVsiZHluQ2FsbF92aWlpaWkiXT1hc21bImR5bkNhbGxfdmlpaWlpIl07dmFyIGR5bkNhbGxfaT1Nb2R1bGVbImR5bkNhbGxfaSJdPWFzbVsiZHluQ2FsbF9pIl07dmFyIGR5bkNhbGxfdmk9TW9kdWxlWyJkeW5DYWxsX3ZpIl09YXNtWyJkeW5DYWxsX3ZpIl07dmFyIGR5bkNhbGxfdmlpPU1vZHVsZVsiZHluQ2FsbF92aWkiXT1hc21bImR5bkNhbGxfdmlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpaWlpaSJdPWFzbVsiZHluQ2FsbF92aWlpaWlpaWlpIl07dmFyIGR5bkNhbGxfaWk9TW9kdWxlWyJkeW5DYWxsX2lpIl09YXNtWyJkeW5DYWxsX2lpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWQ9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpaWlkIl09YXNtWyJkeW5DYWxsX3ZpaWlpaWlkIl07dmFyIGR5bkNhbGxfdmlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaSJdPWFzbVsiZHluQ2FsbF92aWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpZD1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpZCJdPWFzbVsiZHluQ2FsbF92aWlpaWlkIl07dmFyIGR5bkNhbGxfdj1Nb2R1bGVbImR5bkNhbGxfdiJdPWFzbVsiZHluQ2FsbF92Il07dmFyIGR5bkNhbGxfaWlpaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF9paWlpaWlpaWkiXT1hc21bImR5bkNhbGxfaWlpaWlpaWlpIl07dmFyIGR5bkNhbGxfaWlpaWk9TW9kdWxlWyJkeW5DYWxsX2lpaWlpIl09YXNtWyJkeW5DYWxsX2lpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF92aWlpaWlpaWkiXT1hc21bImR5bkNhbGxfdmlpaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWlpaT1Nb2R1bGVbImR5bkNhbGxfdmlpaWlpaSJdPWFzbVsiZHluQ2FsbF92aWlpaWlpIl07dmFyIGR5bkNhbGxfaWlpPU1vZHVsZVsiZHluQ2FsbF9paWkiXT1hc21bImR5bkNhbGxfaWlpIl07dmFyIGR5bkNhbGxfaWlpaWlpPU1vZHVsZVsiZHluQ2FsbF9paWlpaWkiXT1hc21bImR5bkNhbGxfaWlpaWlpIl07dmFyIGR5bkNhbGxfdmlpaWk9TW9kdWxlWyJkeW5DYWxsX3ZpaWlpIl09YXNtWyJkeW5DYWxsX3ZpaWlpIl07UnVudGltZS5zdGFja0FsbG9jPWFzbVsic3RhY2tBbGxvYyJdO1J1bnRpbWUuc3RhY2tTYXZlPWFzbVsic3RhY2tTYXZlIl07UnVudGltZS5zdGFja1Jlc3RvcmU9YXNtWyJzdGFja1Jlc3RvcmUiXTtSdW50aW1lLnNldFRlbXBSZXQwPWFzbVsic2V0VGVtcFJldDAiXTtSdW50aW1lLmdldFRlbXBSZXQwPWFzbVsiZ2V0VGVtcFJldDAiXTt2YXIgaTY0TWF0aD0oZnVuY3Rpb24oKXt2YXIgZ29vZz17bWF0aDp7fX07Z29vZy5tYXRoLkxvbmc9KGZ1bmN0aW9uKGxvdyxoaWdoKXt0aGlzLmxvd189bG93fDA7dGhpcy5oaWdoXz1oaWdofDB9KTtnb29nLm1hdGguTG9uZy5JbnRDYWNoZV89e307Z29vZy5tYXRoLkxvbmcuZnJvbUludD0oZnVuY3Rpb24odmFsdWUpe2lmKC0xMjg8PXZhbHVlJiZ2YWx1ZTwxMjgpe3ZhciBjYWNoZWRPYmo9Z29vZy5tYXRoLkxvbmcuSW50Q2FjaGVfW3ZhbHVlXTtpZihjYWNoZWRPYmope3JldHVybiBjYWNoZWRPYmp9fXZhciBvYmo9bmV3IGdvb2cubWF0aC5Mb25nKHZhbHVlfDAsdmFsdWU8MD8tMTowKTtpZigtMTI4PD12YWx1ZSYmdmFsdWU8MTI4KXtnb29nLm1hdGguTG9uZy5JbnRDYWNoZV9bdmFsdWVdPW9ian1yZXR1cm4gb2JqfSk7Z29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcj0oZnVuY3Rpb24odmFsdWUpe2lmKGlzTmFOKHZhbHVlKXx8IWlzRmluaXRlKHZhbHVlKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99ZWxzZSBpZih2YWx1ZTw9LWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjNfREJMXyl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRX1lbHNlIGlmKHZhbHVlKzE+PWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjNfREJMXyl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1BWF9WQUxVRX1lbHNlIGlmKHZhbHVlPDApe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKC12YWx1ZSkubmVnYXRlKCl9ZWxzZXtyZXR1cm4gbmV3IGdvb2cubWF0aC5Mb25nKHZhbHVlJWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMX3wwLHZhbHVlL2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMX3wwKX19KTtnb29nLm1hdGguTG9uZy5mcm9tQml0cz0oZnVuY3Rpb24obG93Qml0cyxoaWdoQml0cyl7cmV0dXJuIG5ldyBnb29nLm1hdGguTG9uZyhsb3dCaXRzLGhpZ2hCaXRzKX0pO2dvb2cubWF0aC5Mb25nLmZyb21TdHJpbmc9KGZ1bmN0aW9uKHN0cixvcHRfcmFkaXgpe2lmKHN0ci5sZW5ndGg9PTApe3Rocm93IEVycm9yKCJudW1iZXIgZm9ybWF0IGVycm9yOiBlbXB0eSBzdHJpbmciKX12YXIgcmFkaXg9b3B0X3JhZGl4fHwxMDtpZihyYWRpeDwyfHwzNjxyYWRpeCl7dGhyb3cgRXJyb3IoInJhZGl4IG91dCBvZiByYW5nZTogIityYWRpeCl9aWYoc3RyLmNoYXJBdCgwKT09Ii0iKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbVN0cmluZyhzdHIuc3Vic3RyaW5nKDEpLHJhZGl4KS5uZWdhdGUoKX1lbHNlIGlmKHN0ci5pbmRleE9mKCItIik+PTApe3Rocm93IEVycm9yKCdudW1iZXIgZm9ybWF0IGVycm9yOiBpbnRlcmlvciAiLSIgY2hhcmFjdGVyOiAnK3N0cil9dmFyIHJhZGl4VG9Qb3dlcj1nb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LDgpKTt2YXIgcmVzdWx0PWdvb2cubWF0aC5Mb25nLlpFUk87Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoO2krPTgpe3ZhciBzaXplPU1hdGgubWluKDgsc3RyLmxlbmd0aC1pKTt2YXIgdmFsdWU9cGFyc2VJbnQoc3RyLnN1YnN0cmluZyhpLGkrc2l6ZSkscmFkaXgpO2lmKHNpemU8OCl7dmFyIHBvd2VyPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsc2l6ZSkpO3Jlc3VsdD1yZXN1bHQubXVsdGlwbHkocG93ZXIpLmFkZChnb29nLm1hdGguTG9uZy5mcm9tTnVtYmVyKHZhbHVlKSl9ZWxzZXtyZXN1bHQ9cmVzdWx0Lm11bHRpcGx5KHJhZGl4VG9Qb3dlcik7cmVzdWx0PXJlc3VsdC5hZGQoZ29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcih2YWx1ZSkpfX1yZXR1cm4gcmVzdWx0fSk7Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8xNl9EQkxfPTE8PDE2O2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfREJMXz0xPDwyNDtnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF89Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8xNl9EQkxfKmdvb2cubWF0aC5Mb25nLlRXT19QV1JfMTZfREJMXztnb29nLm1hdGguTG9uZy5UV09fUFdSXzMxX0RCTF89Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl8zMl9EQkxfLzI7Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl80OF9EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXypnb29nLm1hdGguTG9uZy5UV09fUFdSXzE2X0RCTF87Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl82NF9EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXypnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF87Z29vZy5tYXRoLkxvbmcuVFdPX1BXUl82M19EQkxfPWdvb2cubWF0aC5Mb25nLlRXT19QV1JfNjRfREJMXy8yO2dvb2cubWF0aC5Mb25nLlpFUk89Z29vZy5tYXRoLkxvbmcuZnJvbUludCgwKTtnb29nLm1hdGguTG9uZy5PTkU9Z29vZy5tYXRoLkxvbmcuZnJvbUludCgxKTtnb29nLm1hdGguTG9uZy5ORUdfT05FPWdvb2cubWF0aC5Mb25nLmZyb21JbnQoLTEpO2dvb2cubWF0aC5Mb25nLk1BWF9WQUxVRT1nb29nLm1hdGguTG9uZy5mcm9tQml0cyg0Mjk0OTY3Mjk1fDAsMjE0NzQ4MzY0N3wwKTtnb29nLm1hdGguTG9uZy5NSU5fVkFMVUU9Z29vZy5tYXRoLkxvbmcuZnJvbUJpdHMoMCwyMTQ3NDgzNjQ4fDApO2dvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfPWdvb2cubWF0aC5Mb25nLmZyb21JbnQoMTw8MjQpO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS50b0ludD0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnRvTnVtYmVyPShmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZ2hfKmdvb2cubWF0aC5Mb25nLlRXT19QV1JfMzJfREJMXyt0aGlzLmdldExvd0JpdHNVbnNpZ25lZCgpfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnRvU3RyaW5nPShmdW5jdGlvbihvcHRfcmFkaXgpe3ZhciByYWRpeD1vcHRfcmFkaXh8fDEwO2lmKHJhZGl4PDJ8fDM2PHJhZGl4KXt0aHJvdyBFcnJvcigicmFkaXggb3V0IG9mIHJhbmdlOiAiK3JhZGl4KX1pZih0aGlzLmlzWmVybygpKXtyZXR1cm4iMCJ9aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKHRoaXMuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRSkpe3ZhciByYWRpeExvbmc9Z29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcihyYWRpeCk7dmFyIGRpdj10aGlzLmRpdihyYWRpeExvbmcpO3ZhciByZW09ZGl2Lm11bHRpcGx5KHJhZGl4TG9uZykuc3VidHJhY3QodGhpcyk7cmV0dXJuIGRpdi50b1N0cmluZyhyYWRpeCkrcmVtLnRvSW50KCkudG9TdHJpbmcocmFkaXgpfWVsc2V7cmV0dXJuIi0iK3RoaXMubmVnYXRlKCkudG9TdHJpbmcocmFkaXgpfX12YXIgcmFkaXhUb1Bvd2VyPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsNikpO3ZhciByZW09dGhpczt2YXIgcmVzdWx0PSIiO3doaWxlKHRydWUpe3ZhciByZW1EaXY9cmVtLmRpdihyYWRpeFRvUG93ZXIpO3ZhciBpbnR2YWw9cmVtLnN1YnRyYWN0KHJlbURpdi5tdWx0aXBseShyYWRpeFRvUG93ZXIpKS50b0ludCgpO3ZhciBkaWdpdHM9aW50dmFsLnRvU3RyaW5nKHJhZGl4KTtyZW09cmVtRGl2O2lmKHJlbS5pc1plcm8oKSl7cmV0dXJuIGRpZ2l0cytyZXN1bHR9ZWxzZXt3aGlsZShkaWdpdHMubGVuZ3RoPDYpe2RpZ2l0cz0iMCIrZGlnaXRzfXJlc3VsdD0iIitkaWdpdHMrcmVzdWx0fX19KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZ2V0SGlnaEJpdHM9KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGlnaF99KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZ2V0TG93Qml0cz0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdldExvd0JpdHNVbnNpZ25lZD0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3dfPj0wP3RoaXMubG93Xzpnb29nLm1hdGguTG9uZy5UV09fUFdSXzMyX0RCTF8rdGhpcy5sb3dffSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdldE51bUJpdHNBYnM9KGZ1bmN0aW9uKCl7aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKHRoaXMuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRSkpe3JldHVybiA2NH1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLmdldE51bUJpdHNBYnMoKX19ZWxzZXt2YXIgdmFsPXRoaXMuaGlnaF8hPTA/dGhpcy5oaWdoXzp0aGlzLmxvd187Zm9yKHZhciBiaXQ9MzE7Yml0PjA7Yml0LS0pe2lmKCh2YWwmMTw8Yml0KSE9MCl7YnJlYWt9fXJldHVybiB0aGlzLmhpZ2hfIT0wP2JpdCszMzpiaXQrMX19KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuaXNaZXJvPShmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZ2hfPT0wJiZ0aGlzLmxvd189PTB9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuaXNOZWdhdGl2ZT0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWdoXzwwfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmlzT2RkPShmdW5jdGlvbigpe3JldHVybih0aGlzLmxvd18mMSk9PTF9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuZXF1YWxzPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuaGlnaF89PW90aGVyLmhpZ2hfJiZ0aGlzLmxvd189PW90aGVyLmxvd199KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubm90RXF1YWxzPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuaGlnaF8hPW90aGVyLmhpZ2hffHx0aGlzLmxvd18hPW90aGVyLmxvd199KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubGVzc1RoYW49KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5jb21wYXJlKG90aGVyKTwwfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmxlc3NUaGFuT3JFcXVhbD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0aGlzLmNvbXBhcmUob3RoZXIpPD0wfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmdyZWF0ZXJUaGFuPShmdW5jdGlvbihvdGhlcil7cmV0dXJuIHRoaXMuY29tcGFyZShvdGhlcik+MH0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5ncmVhdGVyVGhhbk9yRXF1YWw9KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5jb21wYXJlKG90aGVyKT49MH0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5jb21wYXJlPShmdW5jdGlvbihvdGhlcil7aWYodGhpcy5lcXVhbHMob3RoZXIpKXtyZXR1cm4gMH12YXIgdGhpc05lZz10aGlzLmlzTmVnYXRpdmUoKTt2YXIgb3RoZXJOZWc9b3RoZXIuaXNOZWdhdGl2ZSgpO2lmKHRoaXNOZWcmJiFvdGhlck5lZyl7cmV0dXJuLTF9aWYoIXRoaXNOZWcmJm90aGVyTmVnKXtyZXR1cm4gMX1pZih0aGlzLnN1YnRyYWN0KG90aGVyKS5pc05lZ2F0aXZlKCkpe3JldHVybi0xfWVsc2V7cmV0dXJuIDF9fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLm5lZ2F0ZT0oZnVuY3Rpb24oKXtpZih0aGlzLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFfWVsc2V7cmV0dXJuIHRoaXMubm90KCkuYWRkKGdvb2cubWF0aC5Mb25nLk9ORSl9fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmFkZD0oZnVuY3Rpb24ob3RoZXIpe3ZhciBhNDg9dGhpcy5oaWdoXz4+PjE2O3ZhciBhMzI9dGhpcy5oaWdoXyY2NTUzNTt2YXIgYTE2PXRoaXMubG93Xz4+PjE2O3ZhciBhMDA9dGhpcy5sb3dfJjY1NTM1O3ZhciBiNDg9b3RoZXIuaGlnaF8+Pj4xNjt2YXIgYjMyPW90aGVyLmhpZ2hfJjY1NTM1O3ZhciBiMTY9b3RoZXIubG93Xz4+PjE2O3ZhciBiMDA9b3RoZXIubG93XyY2NTUzNTt2YXIgYzQ4PTAsYzMyPTAsYzE2PTAsYzAwPTA7YzAwKz1hMDArYjAwO2MxNis9YzAwPj4+MTY7YzAwJj02NTUzNTtjMTYrPWExNitiMTY7YzMyKz1jMTY+Pj4xNjtjMTYmPTY1NTM1O2MzMis9YTMyK2IzMjtjNDgrPWMzMj4+PjE2O2MzMiY9NjU1MzU7YzQ4Kz1hNDgrYjQ4O2M0OCY9NjU1MzU7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGMxNjw8MTZ8YzAwLGM0ODw8MTZ8YzMyKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5zdWJ0cmFjdD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0aGlzLmFkZChvdGhlci5uZWdhdGUoKSl9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUubXVsdGlwbHk9KGZ1bmN0aW9uKG90aGVyKXtpZih0aGlzLmlzWmVybygpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuWkVST31lbHNlIGlmKG90aGVyLmlzWmVybygpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuWkVST31pZih0aGlzLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gb3RoZXIuaXNPZGQoKT9nb29nLm1hdGguTG9uZy5NSU5fVkFMVUU6Z29vZy5tYXRoLkxvbmcuWkVST31lbHNlIGlmKG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gdGhpcy5pc09kZCgpP2dvb2cubWF0aC5Mb25nLk1JTl9WQUxVRTpnb29nLm1hdGguTG9uZy5aRVJPfWlmKHRoaXMuaXNOZWdhdGl2ZSgpKXtpZihvdGhlci5pc05lZ2F0aXZlKCkpe3JldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG90aGVyLm5lZ2F0ZSgpKX1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG90aGVyKS5uZWdhdGUoKX19ZWxzZSBpZihvdGhlci5pc05lZ2F0aXZlKCkpe3JldHVybiB0aGlzLm11bHRpcGx5KG90aGVyLm5lZ2F0ZSgpKS5uZWdhdGUoKX1pZih0aGlzLmxlc3NUaGFuKGdvb2cubWF0aC5Mb25nLlRXT19QV1JfMjRfKSYmb3RoZXIubGVzc1RoYW4oZ29vZy5tYXRoLkxvbmcuVFdPX1BXUl8yNF8pKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbU51bWJlcih0aGlzLnRvTnVtYmVyKCkqb3RoZXIudG9OdW1iZXIoKSl9dmFyIGE0OD10aGlzLmhpZ2hfPj4+MTY7dmFyIGEzMj10aGlzLmhpZ2hfJjY1NTM1O3ZhciBhMTY9dGhpcy5sb3dfPj4+MTY7dmFyIGEwMD10aGlzLmxvd18mNjU1MzU7dmFyIGI0OD1vdGhlci5oaWdoXz4+PjE2O3ZhciBiMzI9b3RoZXIuaGlnaF8mNjU1MzU7dmFyIGIxNj1vdGhlci5sb3dfPj4+MTY7dmFyIGIwMD1vdGhlci5sb3dfJjY1NTM1O3ZhciBjNDg9MCxjMzI9MCxjMTY9MCxjMDA9MDtjMDArPWEwMCpiMDA7YzE2Kz1jMDA+Pj4xNjtjMDAmPTY1NTM1O2MxNis9YTE2KmIwMDtjMzIrPWMxNj4+PjE2O2MxNiY9NjU1MzU7YzE2Kz1hMDAqYjE2O2MzMis9YzE2Pj4+MTY7YzE2Jj02NTUzNTtjMzIrPWEzMipiMDA7YzQ4Kz1jMzI+Pj4xNjtjMzImPTY1NTM1O2MzMis9YTE2KmIxNjtjNDgrPWMzMj4+PjE2O2MzMiY9NjU1MzU7YzMyKz1hMDAqYjMyO2M0OCs9YzMyPj4+MTY7YzMyJj02NTUzNTtjNDgrPWE0OCpiMDArYTMyKmIxNithMTYqYjMyK2EwMCpiNDg7YzQ4Jj02NTUzNTtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHMoYzE2PDwxNnxjMDAsYzQ4PDwxNnxjMzIpfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmRpdj0oZnVuY3Rpb24ob3RoZXIpe2lmKG90aGVyLmlzWmVybygpKXt0aHJvdyBFcnJvcigiZGl2aXNpb24gYnkgemVybyIpfWVsc2UgaWYodGhpcy5pc1plcm8oKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99aWYodGhpcy5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFKSl7aWYob3RoZXIuZXF1YWxzKGdvb2cubWF0aC5Mb25nLk9ORSl8fG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5ORUdfT05FKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLk1JTl9WQUxVRX1lbHNlIGlmKG90aGVyLmVxdWFscyhnb29nLm1hdGguTG9uZy5NSU5fVkFMVUUpKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuT05FfWVsc2V7dmFyIGhhbGZUaGlzPXRoaXMuc2hpZnRSaWdodCgxKTt2YXIgYXBwcm94PWhhbGZUaGlzLmRpdihvdGhlcikuc2hpZnRMZWZ0KDEpO2lmKGFwcHJveC5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuWkVSTykpe3JldHVybiBvdGhlci5pc05lZ2F0aXZlKCk/Z29vZy5tYXRoLkxvbmcuT05FOmdvb2cubWF0aC5Mb25nLk5FR19PTkV9ZWxzZXt2YXIgcmVtPXRoaXMuc3VidHJhY3Qob3RoZXIubXVsdGlwbHkoYXBwcm94KSk7dmFyIHJlc3VsdD1hcHByb3guYWRkKHJlbS5kaXYob3RoZXIpKTtyZXR1cm4gcmVzdWx0fX19ZWxzZSBpZihvdGhlci5lcXVhbHMoZ29vZy5tYXRoLkxvbmcuTUlOX1ZBTFVFKSl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLlpFUk99aWYodGhpcy5pc05lZ2F0aXZlKCkpe2lmKG90aGVyLmlzTmVnYXRpdmUoKSl7cmV0dXJuIHRoaXMubmVnYXRlKCkuZGl2KG90aGVyLm5lZ2F0ZSgpKX1lbHNle3JldHVybiB0aGlzLm5lZ2F0ZSgpLmRpdihvdGhlcikubmVnYXRlKCl9fWVsc2UgaWYob3RoZXIuaXNOZWdhdGl2ZSgpKXtyZXR1cm4gdGhpcy5kaXYob3RoZXIubmVnYXRlKCkpLm5lZ2F0ZSgpfXZhciByZXM9Z29vZy5tYXRoLkxvbmcuWkVSTzt2YXIgcmVtPXRoaXM7d2hpbGUocmVtLmdyZWF0ZXJUaGFuT3JFcXVhbChvdGhlcikpe3ZhciBhcHByb3g9TWF0aC5tYXgoMSxNYXRoLmZsb29yKHJlbS50b051bWJlcigpL290aGVyLnRvTnVtYmVyKCkpKTt2YXIgbG9nMj1NYXRoLmNlaWwoTWF0aC5sb2coYXBwcm94KS9NYXRoLkxOMik7dmFyIGRlbHRhPWxvZzI8PTQ4PzE6TWF0aC5wb3coMixsb2cyLTQ4KTt2YXIgYXBwcm94UmVzPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoYXBwcm94KTt2YXIgYXBwcm94UmVtPWFwcHJveFJlcy5tdWx0aXBseShvdGhlcik7d2hpbGUoYXBwcm94UmVtLmlzTmVnYXRpdmUoKXx8YXBwcm94UmVtLmdyZWF0ZXJUaGFuKHJlbSkpe2FwcHJveC09ZGVsdGE7YXBwcm94UmVzPWdvb2cubWF0aC5Mb25nLmZyb21OdW1iZXIoYXBwcm94KTthcHByb3hSZW09YXBwcm94UmVzLm11bHRpcGx5KG90aGVyKX1pZihhcHByb3hSZXMuaXNaZXJvKCkpe2FwcHJveFJlcz1nb29nLm1hdGguTG9uZy5PTkV9cmVzPXJlcy5hZGQoYXBwcm94UmVzKTtyZW09cmVtLnN1YnRyYWN0KGFwcHJveFJlbSl9cmV0dXJuIHJlc30pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5tb2R1bG89KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdGhpcy5zdWJ0cmFjdCh0aGlzLmRpdihvdGhlcikubXVsdGlwbHkob3RoZXIpKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5ub3Q9KGZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKH50aGlzLmxvd18sfnRoaXMuaGlnaF8pfSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLmFuZD0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyh0aGlzLmxvd18mb3RoZXIubG93Xyx0aGlzLmhpZ2hfJm90aGVyLmhpZ2hfKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS5vcj0oZnVuY3Rpb24ob3RoZXIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyh0aGlzLmxvd198b3RoZXIubG93Xyx0aGlzLmhpZ2hffG90aGVyLmhpZ2hfKX0pO2dvb2cubWF0aC5Mb25nLnByb3RvdHlwZS54b3I9KGZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHModGhpcy5sb3dfXm90aGVyLmxvd18sdGhpcy5oaWdoX15vdGhlci5oaWdoXyl9KTtnb29nLm1hdGguTG9uZy5wcm90b3R5cGUuc2hpZnRMZWZ0PShmdW5jdGlvbihudW1CaXRzKXtudW1CaXRzJj02MztpZihudW1CaXRzPT0wKXtyZXR1cm4gdGhpc31lbHNle3ZhciBsb3c9dGhpcy5sb3dfO2lmKG51bUJpdHM8MzIpe3ZhciBoaWdoPXRoaXMuaGlnaF87cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGxvdzw8bnVtQml0cyxoaWdoPDxudW1CaXRzfGxvdz4+PjMyLW51bUJpdHMpfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKDAsbG93PDxudW1CaXRzLTMyKX19fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnNoaWZ0UmlnaHQ9KGZ1bmN0aW9uKG51bUJpdHMpe251bUJpdHMmPTYzO2lmKG51bUJpdHM9PTApe3JldHVybiB0aGlzfWVsc2V7dmFyIGhpZ2g9dGhpcy5oaWdoXztpZihudW1CaXRzPDMyKXt2YXIgbG93PXRoaXMubG93XztyZXR1cm4gZ29vZy5tYXRoLkxvbmcuZnJvbUJpdHMobG93Pj4+bnVtQml0c3xoaWdoPDwzMi1udW1CaXRzLGhpZ2g+Pm51bUJpdHMpfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGhpZ2g+Pm51bUJpdHMtMzIsaGlnaD49MD8wOi0xKX19fSk7Z29vZy5tYXRoLkxvbmcucHJvdG90eXBlLnNoaWZ0UmlnaHRVbnNpZ25lZD0oZnVuY3Rpb24obnVtQml0cyl7bnVtQml0cyY9NjM7aWYobnVtQml0cz09MCl7cmV0dXJuIHRoaXN9ZWxzZXt2YXIgaGlnaD10aGlzLmhpZ2hfO2lmKG51bUJpdHM8MzIpe3ZhciBsb3c9dGhpcy5sb3dfO3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyhsb3c+Pj5udW1CaXRzfGhpZ2g8PDMyLW51bUJpdHMsaGlnaD4+Pm51bUJpdHMpfWVsc2UgaWYobnVtQml0cz09MzIpe3JldHVybiBnb29nLm1hdGguTG9uZy5mcm9tQml0cyhoaWdoLDApfWVsc2V7cmV0dXJuIGdvb2cubWF0aC5Mb25nLmZyb21CaXRzKGhpZ2g+Pj5udW1CaXRzLTMyLDApfX19KTt2YXIgbmF2aWdhdG9yPXthcHBOYW1lOiJNb2Rlcm4gQnJvd3NlciJ9O3ZhciBkYml0czt2YXIgY2FuYXJ5PTB4ZGVhZGJlZWZjYWZlO3ZhciBqX2xtPShjYW5hcnkmMTY3NzcyMTUpPT0xNTcxNTA3MDtmdW5jdGlvbiBCaWdJbnRlZ2VyKGEsYixjKXtpZihhIT1udWxsKWlmKCJudW1iZXIiPT10eXBlb2YgYSl0aGlzLmZyb21OdW1iZXIoYSxiLGMpO2Vsc2UgaWYoYj09bnVsbCYmInN0cmluZyIhPXR5cGVvZiBhKXRoaXMuZnJvbVN0cmluZyhhLDI1Nik7ZWxzZSB0aGlzLmZyb21TdHJpbmcoYSxiKX1mdW5jdGlvbiBuYmkoKXtyZXR1cm4gbmV3IEJpZ0ludGVnZXIobnVsbCl9ZnVuY3Rpb24gYW0xKGkseCx3LGosYyxuKXt3aGlsZSgtLW4+PTApe3ZhciB2PXgqdGhpc1tpKytdK3dbal0rYztjPU1hdGguZmxvb3Iodi82NzEwODg2NCk7d1tqKytdPXYmNjcxMDg4NjN9cmV0dXJuIGN9ZnVuY3Rpb24gYW0yKGkseCx3LGosYyxuKXt2YXIgeGw9eCYzMjc2Nyx4aD14Pj4xNTt3aGlsZSgtLW4+PTApe3ZhciBsPXRoaXNbaV0mMzI3Njc7dmFyIGg9dGhpc1tpKytdPj4xNTt2YXIgbT14aCpsK2gqeGw7bD14bCpsKygobSYzMjc2Nyk8PDE1KSt3W2pdKyhjJjEwNzM3NDE4MjMpO2M9KGw+Pj4zMCkrKG0+Pj4xNSkreGgqaCsoYz4+PjMwKTt3W2orK109bCYxMDczNzQxODIzfXJldHVybiBjfWZ1bmN0aW9uIGFtMyhpLHgsdyxqLGMsbil7dmFyIHhsPXgmMTYzODMseGg9eD4+MTQ7d2hpbGUoLS1uPj0wKXt2YXIgbD10aGlzW2ldJjE2MzgzO3ZhciBoPXRoaXNbaSsrXT4+MTQ7dmFyIG09eGgqbCtoKnhsO2w9eGwqbCsoKG0mMTYzODMpPDwxNCkrd1tqXStjO2M9KGw+PjI4KSsobT4+MTQpK3hoKmg7d1tqKytdPWwmMjY4NDM1NDU1fXJldHVybiBjfWlmKGpfbG0mJm5hdmlnYXRvci5hcHBOYW1lPT0iTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIil7QmlnSW50ZWdlci5wcm90b3R5cGUuYW09YW0yO2RiaXRzPTMwfWVsc2UgaWYoal9sbSYmbmF2aWdhdG9yLmFwcE5hbWUhPSJOZXRzY2FwZSIpe0JpZ0ludGVnZXIucHJvdG90eXBlLmFtPWFtMTtkYml0cz0yNn1lbHNle0JpZ0ludGVnZXIucHJvdG90eXBlLmFtPWFtMztkYml0cz0yOH1CaWdJbnRlZ2VyLnByb3RvdHlwZS5EQj1kYml0cztCaWdJbnRlZ2VyLnByb3RvdHlwZS5ETT0oMTw8ZGJpdHMpLTE7QmlnSW50ZWdlci5wcm90b3R5cGUuRFY9MTw8ZGJpdHM7dmFyIEJJX0ZQPTUyO0JpZ0ludGVnZXIucHJvdG90eXBlLkZWPU1hdGgucG93KDIsQklfRlApO0JpZ0ludGVnZXIucHJvdG90eXBlLkYxPUJJX0ZQLWRiaXRzO0JpZ0ludGVnZXIucHJvdG90eXBlLkYyPTIqZGJpdHMtQklfRlA7dmFyIEJJX1JNPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO3ZhciBCSV9SQz1uZXcgQXJyYXk7dmFyIHJyLHZ2O3JyPSIwIi5jaGFyQ29kZUF0KDApO2Zvcih2dj0wO3Z2PD05OysrdnYpQklfUkNbcnIrK109dnY7cnI9ImEiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpQklfUkNbcnIrK109dnY7cnI9IkEiLmNoYXJDb2RlQXQoMCk7Zm9yKHZ2PTEwO3Z2PDM2OysrdnYpQklfUkNbcnIrK109dnY7ZnVuY3Rpb24gaW50MmNoYXIobil7cmV0dXJuIEJJX1JNLmNoYXJBdChuKX1mdW5jdGlvbiBpbnRBdChzLGkpe3ZhciBjPUJJX1JDW3MuY2hhckNvZGVBdChpKV07cmV0dXJuIGM9PW51bGw/LTE6Y31mdW5jdGlvbiBibnBDb3B5VG8ocil7Zm9yKHZhciBpPXRoaXMudC0xO2k+PTA7LS1pKXJbaV09dGhpc1tpXTtyLnQ9dGhpcy50O3Iucz10aGlzLnN9ZnVuY3Rpb24gYm5wRnJvbUludCh4KXt0aGlzLnQ9MTt0aGlzLnM9eDwwPy0xOjA7aWYoeD4wKXRoaXNbMF09eDtlbHNlIGlmKHg8LTEpdGhpc1swXT14K0RWO2Vsc2UgdGhpcy50PTB9ZnVuY3Rpb24gbmJ2KGkpe3ZhciByPW5iaSgpO3IuZnJvbUludChpKTtyZXR1cm4gcn1mdW5jdGlvbiBibnBGcm9tU3RyaW5nKHMsYil7dmFyIGs7aWYoYj09MTYpaz00O2Vsc2UgaWYoYj09OClrPTM7ZWxzZSBpZihiPT0yNTYpaz04O2Vsc2UgaWYoYj09MilrPTE7ZWxzZSBpZihiPT0zMilrPTU7ZWxzZSBpZihiPT00KWs9MjtlbHNle3RoaXMuZnJvbVJhZGl4KHMsYik7cmV0dXJufXRoaXMudD0wO3RoaXMucz0wO3ZhciBpPXMubGVuZ3RoLG1pPWZhbHNlLHNoPTA7d2hpbGUoLS1pPj0wKXt2YXIgeD1rPT04P3NbaV0mMjU1OmludEF0KHMsaSk7aWYoeDwwKXtpZihzLmNoYXJBdChpKT09Ii0iKW1pPXRydWU7Y29udGludWV9bWk9ZmFsc2U7aWYoc2g9PTApdGhpc1t0aGlzLnQrK109eDtlbHNlIGlmKHNoK2s+dGhpcy5EQil7dGhpc1t0aGlzLnQtMV18PSh4JigxPDx0aGlzLkRCLXNoKS0xKTw8c2g7dGhpc1t0aGlzLnQrK109eD4+dGhpcy5EQi1zaH1lbHNlIHRoaXNbdGhpcy50LTFdfD14PDxzaDtzaCs9aztpZihzaD49dGhpcy5EQilzaC09dGhpcy5EQn1pZihrPT04JiYoc1swXSYxMjgpIT0wKXt0aGlzLnM9LTE7aWYoc2g+MCl0aGlzW3RoaXMudC0xXXw9KDE8PHRoaXMuREItc2gpLTE8PHNofXRoaXMuY2xhbXAoKTtpZihtaSlCaWdJbnRlZ2VyLlpFUk8uc3ViVG8odGhpcyx0aGlzKX1mdW5jdGlvbiBibnBDbGFtcCgpe3ZhciBjPXRoaXMucyZ0aGlzLkRNO3doaWxlKHRoaXMudD4wJiZ0aGlzW3RoaXMudC0xXT09YyktLXRoaXMudH1mdW5jdGlvbiBiblRvU3RyaW5nKGIpe2lmKHRoaXMuczwwKXJldHVybiItIit0aGlzLm5lZ2F0ZSgpLnRvU3RyaW5nKGIpO3ZhciBrO2lmKGI9PTE2KWs9NDtlbHNlIGlmKGI9PTgpaz0zO2Vsc2UgaWYoYj09MilrPTE7ZWxzZSBpZihiPT0zMilrPTU7ZWxzZSBpZihiPT00KWs9MjtlbHNlIHJldHVybiB0aGlzLnRvUmFkaXgoYik7dmFyIGttPSgxPDxrKS0xLGQsbT1mYWxzZSxyPSIiLGk9dGhpcy50O3ZhciBwPXRoaXMuREItaSp0aGlzLkRCJWs7aWYoaS0tPjApe2lmKHA8dGhpcy5EQiYmKGQ9dGhpc1tpXT4+cCk+MCl7bT10cnVlO3I9aW50MmNoYXIoZCl9d2hpbGUoaT49MCl7aWYocDxrKXtkPSh0aGlzW2ldJigxPDxwKS0xKTw8ay1wO2R8PXRoaXNbLS1pXT4+KHArPXRoaXMuREItayl9ZWxzZXtkPXRoaXNbaV0+PihwLT1rKSZrbTtpZihwPD0wKXtwKz10aGlzLkRCOy0taX19aWYoZD4wKW09dHJ1ZTtpZihtKXIrPWludDJjaGFyKGQpfX1yZXR1cm4gbT9yOiIwIn1mdW5jdGlvbiBibk5lZ2F0ZSgpe3ZhciByPW5iaSgpO0JpZ0ludGVnZXIuWkVSTy5zdWJUbyh0aGlzLHIpO3JldHVybiByfWZ1bmN0aW9uIGJuQWJzKCl7cmV0dXJuIHRoaXMuczwwP3RoaXMubmVnYXRlKCk6dGhpc31mdW5jdGlvbiBibkNvbXBhcmVUbyhhKXt2YXIgcj10aGlzLnMtYS5zO2lmKHIhPTApcmV0dXJuIHI7dmFyIGk9dGhpcy50O3I9aS1hLnQ7aWYociE9MClyZXR1cm4gdGhpcy5zPDA/LXI6cjt3aGlsZSgtLWk+PTApaWYoKHI9dGhpc1tpXS1hW2ldKSE9MClyZXR1cm4gcjtyZXR1cm4gMH1mdW5jdGlvbiBuYml0cyh4KXt2YXIgcj0xLHQ7aWYoKHQ9eD4+PjE2KSE9MCl7eD10O3IrPTE2fWlmKCh0PXg+PjgpIT0wKXt4PXQ7cis9OH1pZigodD14Pj40KSE9MCl7eD10O3IrPTR9aWYoKHQ9eD4+MikhPTApe3g9dDtyKz0yfWlmKCh0PXg+PjEpIT0wKXt4PXQ7cis9MX1yZXR1cm4gcn1mdW5jdGlvbiBibkJpdExlbmd0aCgpe2lmKHRoaXMudDw9MClyZXR1cm4gMDtyZXR1cm4gdGhpcy5EQioodGhpcy50LTEpK25iaXRzKHRoaXNbdGhpcy50LTFdXnRoaXMucyZ0aGlzLkRNKX1mdW5jdGlvbiBibnBETFNoaWZ0VG8obixyKXt2YXIgaTtmb3IoaT10aGlzLnQtMTtpPj0wOy0taSlyW2krbl09dGhpc1tpXTtmb3IoaT1uLTE7aT49MDstLWkpcltpXT0wO3IudD10aGlzLnQrbjtyLnM9dGhpcy5zfWZ1bmN0aW9uIGJucERSU2hpZnRUbyhuLHIpe2Zvcih2YXIgaT1uO2k8dGhpcy50OysraSlyW2ktbl09dGhpc1tpXTtyLnQ9TWF0aC5tYXgodGhpcy50LW4sMCk7ci5zPXRoaXMuc31mdW5jdGlvbiBibnBMU2hpZnRUbyhuLHIpe3ZhciBicz1uJXRoaXMuREI7dmFyIGNicz10aGlzLkRCLWJzO3ZhciBibT0oMTw8Y2JzKS0xO3ZhciBkcz1NYXRoLmZsb29yKG4vdGhpcy5EQiksYz10aGlzLnM8PGJzJnRoaXMuRE0saTtmb3IoaT10aGlzLnQtMTtpPj0wOy0taSl7cltpK2RzKzFdPXRoaXNbaV0+PmNic3xjO2M9KHRoaXNbaV0mYm0pPDxic31mb3IoaT1kcy0xO2k+PTA7LS1pKXJbaV09MDtyW2RzXT1jO3IudD10aGlzLnQrZHMrMTtyLnM9dGhpcy5zO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBSU2hpZnRUbyhuLHIpe3Iucz10aGlzLnM7dmFyIGRzPU1hdGguZmxvb3Iobi90aGlzLkRCKTtpZihkcz49dGhpcy50KXtyLnQ9MDtyZXR1cm59dmFyIGJzPW4ldGhpcy5EQjt2YXIgY2JzPXRoaXMuREItYnM7dmFyIGJtPSgxPDxicyktMTtyWzBdPXRoaXNbZHNdPj5icztmb3IodmFyIGk9ZHMrMTtpPHRoaXMudDsrK2kpe3JbaS1kcy0xXXw9KHRoaXNbaV0mYm0pPDxjYnM7cltpLWRzXT10aGlzW2ldPj5ic31pZihicz4wKXJbdGhpcy50LWRzLTFdfD0odGhpcy5zJmJtKTw8Y2JzO3IudD10aGlzLnQtZHM7ci5jbGFtcCgpfWZ1bmN0aW9uIGJucFN1YlRvKGEscil7dmFyIGk9MCxjPTAsbT1NYXRoLm1pbihhLnQsdGhpcy50KTt3aGlsZShpPG0pe2MrPXRoaXNbaV0tYVtpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWlmKGEudDx0aGlzLnQpe2MtPWEuczt3aGlsZShpPHRoaXMudCl7Yys9dGhpc1tpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWMrPXRoaXMuc31lbHNle2MrPXRoaXMuczt3aGlsZShpPGEudCl7Yy09YVtpXTtyW2krK109YyZ0aGlzLkRNO2M+Pj10aGlzLkRCfWMtPWEuc31yLnM9YzwwPy0xOjA7aWYoYzwtMSlyW2krK109dGhpcy5EVitjO2Vsc2UgaWYoYz4wKXJbaSsrXT1jO3IudD1pO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBNdWx0aXBseVRvKGEscil7dmFyIHg9dGhpcy5hYnMoKSx5PWEuYWJzKCk7dmFyIGk9eC50O3IudD1pK3kudDt3aGlsZSgtLWk+PTApcltpXT0wO2ZvcihpPTA7aTx5LnQ7KytpKXJbaSt4LnRdPXguYW0oMCx5W2ldLHIsaSwwLHgudCk7ci5zPTA7ci5jbGFtcCgpO2lmKHRoaXMucyE9YS5zKUJpZ0ludGVnZXIuWkVSTy5zdWJUbyhyLHIpfWZ1bmN0aW9uIGJucFNxdWFyZVRvKHIpe3ZhciB4PXRoaXMuYWJzKCk7dmFyIGk9ci50PTIqeC50O3doaWxlKC0taT49MClyW2ldPTA7Zm9yKGk9MDtpPHgudC0xOysraSl7dmFyIGM9eC5hbShpLHhbaV0sciwyKmksMCwxKTtpZigocltpK3gudF0rPXguYW0oaSsxLDIqeFtpXSxyLDIqaSsxLGMseC50LWktMSkpPj14LkRWKXtyW2kreC50XS09eC5EVjtyW2kreC50KzFdPTF9fWlmKHIudD4wKXJbci50LTFdKz14LmFtKGkseFtpXSxyLDIqaSwwLDEpO3Iucz0wO3IuY2xhbXAoKX1mdW5jdGlvbiBibnBEaXZSZW1UbyhtLHEscil7dmFyIHBtPW0uYWJzKCk7aWYocG0udDw9MClyZXR1cm47dmFyIHB0PXRoaXMuYWJzKCk7aWYocHQudDxwbS50KXtpZihxIT1udWxsKXEuZnJvbUludCgwKTtpZihyIT1udWxsKXRoaXMuY29weVRvKHIpO3JldHVybn1pZihyPT1udWxsKXI9bmJpKCk7dmFyIHk9bmJpKCksdHM9dGhpcy5zLG1zPW0uczt2YXIgbnNoPXRoaXMuREItbmJpdHMocG1bcG0udC0xXSk7aWYobnNoPjApe3BtLmxTaGlmdFRvKG5zaCx5KTtwdC5sU2hpZnRUbyhuc2gscil9ZWxzZXtwbS5jb3B5VG8oeSk7cHQuY29weVRvKHIpfXZhciB5cz15LnQ7dmFyIHkwPXlbeXMtMV07aWYoeTA9PTApcmV0dXJuO3ZhciB5dD15MCooMTw8dGhpcy5GMSkrKHlzPjE/eVt5cy0yXT4+dGhpcy5GMjowKTt2YXIgZDE9dGhpcy5GVi95dCxkMj0oMTw8dGhpcy5GMSkveXQsZT0xPDx0aGlzLkYyO3ZhciBpPXIudCxqPWkteXMsdD1xPT1udWxsP25iaSgpOnE7eS5kbFNoaWZ0VG8oaix0KTtpZihyLmNvbXBhcmVUbyh0KT49MCl7cltyLnQrK109MTtyLnN1YlRvKHQscil9QmlnSW50ZWdlci5PTkUuZGxTaGlmdFRvKHlzLHQpO3Quc3ViVG8oeSx5KTt3aGlsZSh5LnQ8eXMpeVt5LnQrK109MDt3aGlsZSgtLWo+PTApe3ZhciBxZD1yWy0taV09PXkwP3RoaXMuRE06TWF0aC5mbG9vcihyW2ldKmQxKyhyW2ktMV0rZSkqZDIpO2lmKChyW2ldKz15LmFtKDAscWQscixqLDAseXMpKTxxZCl7eS5kbFNoaWZ0VG8oaix0KTtyLnN1YlRvKHQscik7d2hpbGUocltpXTwtLXFkKXIuc3ViVG8odCxyKX19aWYocSE9bnVsbCl7ci5kclNoaWZ0VG8oeXMscSk7aWYodHMhPW1zKUJpZ0ludGVnZXIuWkVSTy5zdWJUbyhxLHEpfXIudD15cztyLmNsYW1wKCk7aWYobnNoPjApci5yU2hpZnRUbyhuc2gscik7aWYodHM8MClCaWdJbnRlZ2VyLlpFUk8uc3ViVG8ocixyKX1mdW5jdGlvbiBibk1vZChhKXt2YXIgcj1uYmkoKTt0aGlzLmFicygpLmRpdlJlbVRvKGEsbnVsbCxyKTtpZih0aGlzLnM8MCYmci5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKT4wKWEuc3ViVG8ocixyKTtyZXR1cm4gcn1mdW5jdGlvbiBDbGFzc2ljKG0pe3RoaXMubT1tfWZ1bmN0aW9uIGNDb252ZXJ0KHgpe2lmKHguczwwfHx4LmNvbXBhcmVUbyh0aGlzLm0pPj0wKXJldHVybiB4Lm1vZCh0aGlzLm0pO2Vsc2UgcmV0dXJuIHh9ZnVuY3Rpb24gY1JldmVydCh4KXtyZXR1cm4geH1mdW5jdGlvbiBjUmVkdWNlKHgpe3guZGl2UmVtVG8odGhpcy5tLG51bGwseCl9ZnVuY3Rpb24gY011bFRvKHgseSxyKXt4Lm11bHRpcGx5VG8oeSxyKTt0aGlzLnJlZHVjZShyKX1mdW5jdGlvbiBjU3FyVG8oeCxyKXt4LnNxdWFyZVRvKHIpO3RoaXMucmVkdWNlKHIpfUNsYXNzaWMucHJvdG90eXBlLmNvbnZlcnQ9Y0NvbnZlcnQ7Q2xhc3NpYy5wcm90b3R5cGUucmV2ZXJ0PWNSZXZlcnQ7Q2xhc3NpYy5wcm90b3R5cGUucmVkdWNlPWNSZWR1Y2U7Q2xhc3NpYy5wcm90b3R5cGUubXVsVG89Y011bFRvO0NsYXNzaWMucHJvdG90eXBlLnNxclRvPWNTcXJUbztmdW5jdGlvbiBibnBJbnZEaWdpdCgpe2lmKHRoaXMudDwxKXJldHVybiAwO3ZhciB4PXRoaXNbMF07aWYoKHgmMSk9PTApcmV0dXJuIDA7dmFyIHk9eCYzO3k9eSooMi0oeCYxNSkqeSkmMTU7eT15KigyLSh4JjI1NSkqeSkmMjU1O3k9eSooMi0oKHgmNjU1MzUpKnkmNjU1MzUpKSY2NTUzNTt5PXkqKDIteCp5JXRoaXMuRFYpJXRoaXMuRFY7cmV0dXJuIHk+MD90aGlzLkRWLXk6LXl9ZnVuY3Rpb24gTW9udGdvbWVyeShtKXt0aGlzLm09bTt0aGlzLm1wPW0uaW52RGlnaXQoKTt0aGlzLm1wbD10aGlzLm1wJjMyNzY3O3RoaXMubXBoPXRoaXMubXA+PjE1O3RoaXMudW09KDE8PG0uREItMTUpLTE7dGhpcy5tdDI9MiptLnR9ZnVuY3Rpb24gbW9udENvbnZlcnQoeCl7dmFyIHI9bmJpKCk7eC5hYnMoKS5kbFNoaWZ0VG8odGhpcy5tLnQscik7ci5kaXZSZW1Ubyh0aGlzLm0sbnVsbCxyKTtpZih4LnM8MCYmci5jb21wYXJlVG8oQmlnSW50ZWdlci5aRVJPKT4wKXRoaXMubS5zdWJUbyhyLHIpO3JldHVybiByfWZ1bmN0aW9uIG1vbnRSZXZlcnQoeCl7dmFyIHI9bmJpKCk7eC5jb3B5VG8ocik7dGhpcy5yZWR1Y2Uocik7cmV0dXJuIHJ9ZnVuY3Rpb24gbW9udFJlZHVjZSh4KXt3aGlsZSh4LnQ8PXRoaXMubXQyKXhbeC50KytdPTA7Zm9yKHZhciBpPTA7aTx0aGlzLm0udDsrK2kpe3ZhciBqPXhbaV0mMzI3Njc7dmFyIHUwPWoqdGhpcy5tcGwrKChqKnRoaXMubXBoKyh4W2ldPj4xNSkqdGhpcy5tcGwmdGhpcy51bSk8PDE1KSZ4LkRNO2o9aSt0aGlzLm0udDt4W2pdKz10aGlzLm0uYW0oMCx1MCx4LGksMCx0aGlzLm0udCk7d2hpbGUoeFtqXT49eC5EVil7eFtqXS09eC5EVjt4Wysral0rK319eC5jbGFtcCgpO3guZHJTaGlmdFRvKHRoaXMubS50LHgpO2lmKHguY29tcGFyZVRvKHRoaXMubSk+PTApeC5zdWJUbyh0aGlzLm0seCl9ZnVuY3Rpb24gbW9udFNxclRvKHgscil7eC5zcXVhcmVUbyhyKTt0aGlzLnJlZHVjZShyKX1mdW5jdGlvbiBtb250TXVsVG8oeCx5LHIpe3gubXVsdGlwbHlUbyh5LHIpO3RoaXMucmVkdWNlKHIpfU1vbnRnb21lcnkucHJvdG90eXBlLmNvbnZlcnQ9bW9udENvbnZlcnQ7TW9udGdvbWVyeS5wcm90b3R5cGUucmV2ZXJ0PW1vbnRSZXZlcnQ7TW9udGdvbWVyeS5wcm90b3R5cGUucmVkdWNlPW1vbnRSZWR1Y2U7TW9udGdvbWVyeS5wcm90b3R5cGUubXVsVG89bW9udE11bFRvO01vbnRnb21lcnkucHJvdG90eXBlLnNxclRvPW1vbnRTcXJUbztmdW5jdGlvbiBibnBJc0V2ZW4oKXtyZXR1cm4odGhpcy50PjA/dGhpc1swXSYxOnRoaXMucyk9PTB9ZnVuY3Rpb24gYm5wRXhwKGUseil7aWYoZT40Mjk0OTY3Mjk1fHxlPDEpcmV0dXJuIEJpZ0ludGVnZXIuT05FO3ZhciByPW5iaSgpLHIyPW5iaSgpLGc9ei5jb252ZXJ0KHRoaXMpLGk9bmJpdHMoZSktMTtnLmNvcHlUbyhyKTt3aGlsZSgtLWk+PTApe3ouc3FyVG8ocixyMik7aWYoKGUmMTw8aSk+MCl6Lm11bFRvKHIyLGcscik7ZWxzZXt2YXIgdD1yO3I9cjI7cjI9dH19cmV0dXJuIHoucmV2ZXJ0KHIpfWZ1bmN0aW9uIGJuTW9kUG93SW50KGUsbSl7dmFyIHo7aWYoZTwyNTZ8fG0uaXNFdmVuKCkpej1uZXcgQ2xhc3NpYyhtKTtlbHNlIHo9bmV3IE1vbnRnb21lcnkobSk7cmV0dXJuIHRoaXMuZXhwKGUseil9QmlnSW50ZWdlci5wcm90b3R5cGUuY29weVRvPWJucENvcHlUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tSW50PWJucEZyb21JbnQ7QmlnSW50ZWdlci5wcm90b3R5cGUuZnJvbVN0cmluZz1ibnBGcm9tU3RyaW5nO0JpZ0ludGVnZXIucHJvdG90eXBlLmNsYW1wPWJucENsYW1wO0JpZ0ludGVnZXIucHJvdG90eXBlLmRsU2hpZnRUbz1ibnBETFNoaWZ0VG87QmlnSW50ZWdlci5wcm90b3R5cGUuZHJTaGlmdFRvPWJucERSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5sU2hpZnRUbz1ibnBMU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5yU2hpZnRUbz1ibnBSU2hpZnRUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJUbz1ibnBTdWJUbztCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseVRvPWJucE11bHRpcGx5VG87QmlnSW50ZWdlci5wcm90b3R5cGUuc3F1YXJlVG89Ym5wU3F1YXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuZGl2UmVtVG89Ym5wRGl2UmVtVG87QmlnSW50ZWdlci5wcm90b3R5cGUuaW52RGlnaXQ9Ym5wSW52RGlnaXQ7QmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuPWJucElzRXZlbjtCaWdJbnRlZ2VyLnByb3RvdHlwZS5leHA9Ym5wRXhwO0JpZ0ludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nPWJuVG9TdHJpbmc7QmlnSW50ZWdlci5wcm90b3R5cGUubmVnYXRlPWJuTmVnYXRlO0JpZ0ludGVnZXIucHJvdG90eXBlLmFicz1ibkFicztCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlVG89Ym5Db21wYXJlVG87QmlnSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoPWJuQml0TGVuZ3RoO0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZD1ibk1vZDtCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3dJbnQ9Ym5Nb2RQb3dJbnQ7QmlnSW50ZWdlci5aRVJPPW5idigwKTtCaWdJbnRlZ2VyLk9ORT1uYnYoMSk7ZnVuY3Rpb24gYm5wRnJvbVJhZGl4KHMsYil7dGhpcy5mcm9tSW50KDApO2lmKGI9PW51bGwpYj0xMDt2YXIgY3M9dGhpcy5jaHVua1NpemUoYik7dmFyIGQ9TWF0aC5wb3coYixjcyksbWk9ZmFsc2Usaj0wLHc9MDtmb3IodmFyIGk9MDtpPHMubGVuZ3RoOysraSl7dmFyIHg9aW50QXQocyxpKTtpZih4PDApe2lmKHMuY2hhckF0KGkpPT0iLSImJnRoaXMuc2lnbnVtKCk9PTApbWk9dHJ1ZTtjb250aW51ZX13PWIqdyt4O2lmKCsraj49Y3Mpe3RoaXMuZE11bHRpcGx5KGQpO3RoaXMuZEFkZE9mZnNldCh3LDApO2o9MDt3PTB9fWlmKGo+MCl7dGhpcy5kTXVsdGlwbHkoTWF0aC5wb3coYixqKSk7dGhpcy5kQWRkT2Zmc2V0KHcsMCl9aWYobWkpQmlnSW50ZWdlci5aRVJPLnN1YlRvKHRoaXMsdGhpcyl9ZnVuY3Rpb24gYm5wQ2h1bmtTaXplKHIpe3JldHVybiBNYXRoLmZsb29yKE1hdGguTE4yKnRoaXMuREIvTWF0aC5sb2cocikpfWZ1bmN0aW9uIGJuU2lnTnVtKCl7aWYodGhpcy5zPDApcmV0dXJuLTE7ZWxzZSBpZih0aGlzLnQ8PTB8fHRoaXMudD09MSYmdGhpc1swXTw9MClyZXR1cm4gMDtlbHNlIHJldHVybiAxfWZ1bmN0aW9uIGJucERNdWx0aXBseShuKXt0aGlzW3RoaXMudF09dGhpcy5hbSgwLG4tMSx0aGlzLDAsMCx0aGlzLnQpOysrdGhpcy50O3RoaXMuY2xhbXAoKX1mdW5jdGlvbiBibnBEQWRkT2Zmc2V0KG4sdyl7aWYobj09MClyZXR1cm47d2hpbGUodGhpcy50PD13KXRoaXNbdGhpcy50KytdPTA7dGhpc1t3XSs9bjt3aGlsZSh0aGlzW3ddPj10aGlzLkRWKXt0aGlzW3ddLT10aGlzLkRWO2lmKCsrdz49dGhpcy50KXRoaXNbdGhpcy50KytdPTA7Kyt0aGlzW3ddfX1mdW5jdGlvbiBibnBUb1JhZGl4KGIpe2lmKGI9PW51bGwpYj0xMDtpZih0aGlzLnNpZ251bSgpPT0wfHxiPDJ8fGI+MzYpcmV0dXJuIjAiO3ZhciBjcz10aGlzLmNodW5rU2l6ZShiKTt2YXIgYT1NYXRoLnBvdyhiLGNzKTt2YXIgZD1uYnYoYSkseT1uYmkoKSx6PW5iaSgpLHI9IiI7dGhpcy5kaXZSZW1UbyhkLHkseik7d2hpbGUoeS5zaWdudW0oKT4wKXtyPShhK3ouaW50VmFsdWUoKSkudG9TdHJpbmcoYikuc3Vic3RyKDEpK3I7eS5kaXZSZW1UbyhkLHkseil9cmV0dXJuIHouaW50VmFsdWUoKS50b1N0cmluZyhiKStyfWZ1bmN0aW9uIGJuSW50VmFsdWUoKXtpZih0aGlzLnM8MCl7aWYodGhpcy50PT0xKXJldHVybiB0aGlzWzBdLXRoaXMuRFY7ZWxzZSBpZih0aGlzLnQ9PTApcmV0dXJuLTF9ZWxzZSBpZih0aGlzLnQ9PTEpcmV0dXJuIHRoaXNbMF07ZWxzZSBpZih0aGlzLnQ9PTApcmV0dXJuIDA7cmV0dXJuKHRoaXNbMV0mKDE8PDMyLXRoaXMuREIpLTEpPDx0aGlzLkRCfHRoaXNbMF19ZnVuY3Rpb24gYm5wQWRkVG8oYSxyKXt2YXIgaT0wLGM9MCxtPU1hdGgubWluKGEudCx0aGlzLnQpO3doaWxlKGk8bSl7Yys9dGhpc1tpXSthW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9aWYoYS50PHRoaXMudCl7Yys9YS5zO3doaWxlKGk8dGhpcy50KXtjKz10aGlzW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9Yys9dGhpcy5zfWVsc2V7Yys9dGhpcy5zO3doaWxlKGk8YS50KXtjKz1hW2ldO3JbaSsrXT1jJnRoaXMuRE07Yz4+PXRoaXMuREJ9Yys9YS5zfXIucz1jPDA/LTE6MDtpZihjPjApcltpKytdPWM7ZWxzZSBpZihjPC0xKXJbaSsrXT10aGlzLkRWK2M7ci50PWk7ci5jbGFtcCgpfUJpZ0ludGVnZXIucHJvdG90eXBlLmZyb21SYWRpeD1ibnBGcm9tUmFkaXg7QmlnSW50ZWdlci5wcm90b3R5cGUuY2h1bmtTaXplPWJucENodW5rU2l6ZTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaWdudW09Ym5TaWdOdW07QmlnSW50ZWdlci5wcm90b3R5cGUuZE11bHRpcGx5PWJucERNdWx0aXBseTtCaWdJbnRlZ2VyLnByb3RvdHlwZS5kQWRkT2Zmc2V0PWJucERBZGRPZmZzZXQ7QmlnSW50ZWdlci5wcm90b3R5cGUudG9SYWRpeD1ibnBUb1JhZGl4O0JpZ0ludGVnZXIucHJvdG90eXBlLmludFZhbHVlPWJuSW50VmFsdWU7QmlnSW50ZWdlci5wcm90b3R5cGUuYWRkVG89Ym5wQWRkVG87dmFyIFdyYXBwZXI9e2FiczooZnVuY3Rpb24obCxoKXt2YXIgeD1uZXcgZ29vZy5tYXRoLkxvbmcobCxoKTt2YXIgcmV0O2lmKHguaXNOZWdhdGl2ZSgpKXtyZXQ9eC5uZWdhdGUoKX1lbHNle3JldD14fUhFQVAzMlt0ZW1wRG91YmxlUHRyPj4yXT1yZXQubG93XztIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1yZXQuaGlnaF99KSxlbnN1cmVUZW1wczooZnVuY3Rpb24oKXtpZihXcmFwcGVyLmVuc3VyZWRUZW1wcylyZXR1cm47V3JhcHBlci5lbnN1cmVkVGVtcHM9dHJ1ZTtXcmFwcGVyLnR3bzMyPW5ldyBCaWdJbnRlZ2VyO1dyYXBwZXIudHdvMzIuZnJvbVN0cmluZygiNDI5NDk2NzI5NiIsMTApO1dyYXBwZXIudHdvNjQ9bmV3IEJpZ0ludGVnZXI7V3JhcHBlci50d282NC5mcm9tU3RyaW5nKCIxODQ0Njc0NDA3MzcwOTU1MTYxNiIsMTApO1dyYXBwZXIudGVtcDE9bmV3IEJpZ0ludGVnZXI7V3JhcHBlci50ZW1wMj1uZXcgQmlnSW50ZWdlcn0pLGxoMmJpZ251bTooZnVuY3Rpb24obCxoKXt2YXIgYT1uZXcgQmlnSW50ZWdlcjthLmZyb21TdHJpbmcoaC50b1N0cmluZygpLDEwKTt2YXIgYj1uZXcgQmlnSW50ZWdlcjthLm11bHRpcGx5VG8oV3JhcHBlci50d28zMixiKTt2YXIgYz1uZXcgQmlnSW50ZWdlcjtjLmZyb21TdHJpbmcobC50b1N0cmluZygpLDEwKTt2YXIgZD1uZXcgQmlnSW50ZWdlcjtjLmFkZFRvKGIsZCk7cmV0dXJuIGR9KSxzdHJpbmdpZnk6KGZ1bmN0aW9uKGwsaCx1bnNpZ25lZCl7dmFyIHJldD0obmV3IGdvb2cubWF0aC5Mb25nKGwsaCkpLnRvU3RyaW5nKCk7aWYodW5zaWduZWQmJnJldFswXT09Ii0iKXtXcmFwcGVyLmVuc3VyZVRlbXBzKCk7dmFyIGJpZ251bT1uZXcgQmlnSW50ZWdlcjtiaWdudW0uZnJvbVN0cmluZyhyZXQsMTApO3JldD1uZXcgQmlnSW50ZWdlcjtXcmFwcGVyLnR3bzY0LmFkZFRvKGJpZ251bSxyZXQpO3JldD1yZXQudG9TdHJpbmcoMTApfXJldHVybiByZXR9KSxmcm9tU3RyaW5nOihmdW5jdGlvbihzdHIsYmFzZSxtaW4sbWF4LHVuc2lnbmVkKXtXcmFwcGVyLmVuc3VyZVRlbXBzKCk7dmFyIGJpZ251bT1uZXcgQmlnSW50ZWdlcjtiaWdudW0uZnJvbVN0cmluZyhzdHIsYmFzZSk7dmFyIGJpZ21pbj1uZXcgQmlnSW50ZWdlcjtiaWdtaW4uZnJvbVN0cmluZyhtaW4sMTApO3ZhciBiaWdtYXg9bmV3IEJpZ0ludGVnZXI7YmlnbWF4LmZyb21TdHJpbmcobWF4LDEwKTtpZih1bnNpZ25lZCYmYmlnbnVtLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pPDApe3ZhciB0ZW1wPW5ldyBCaWdJbnRlZ2VyO2JpZ251bS5hZGRUbyhXcmFwcGVyLnR3bzY0LHRlbXApO2JpZ251bT10ZW1wfXZhciBlcnJvcj1mYWxzZTtpZihiaWdudW0uY29tcGFyZVRvKGJpZ21pbik8MCl7YmlnbnVtPWJpZ21pbjtlcnJvcj10cnVlfWVsc2UgaWYoYmlnbnVtLmNvbXBhcmVUbyhiaWdtYXgpPjApe2JpZ251bT1iaWdtYXg7ZXJyb3I9dHJ1ZX12YXIgcmV0PWdvb2cubWF0aC5Mb25nLmZyb21TdHJpbmcoYmlnbnVtLnRvU3RyaW5nKCkpO0hFQVAzMlt0ZW1wRG91YmxlUHRyPj4yXT1yZXQubG93XztIRUFQMzJbdGVtcERvdWJsZVB0cis0Pj4yXT1yZXQuaGlnaF87aWYoZXJyb3IpdGhyb3cicmFuZ2UgZXJyb3IifSl9O3JldHVybiBXcmFwcGVyfSkoKTtpZihtZW1vcnlJbml0aWFsaXplcil7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERXx8RU5WSVJPTk1FTlRfSVNfU0hFTEwpe3ZhciBkYXRhPU1vZHVsZVsicmVhZEJpbmFyeSJdKG1lbW9yeUluaXRpYWxpemVyKTtIRUFQVTguc2V0KGRhdGEsU1RBVElDX0JBU0UpfWVsc2V7YWRkUnVuRGVwZW5kZW5jeSgibWVtb3J5IGluaXRpYWxpemVyIik7QnJvd3Nlci5hc3luY0xvYWQobWVtb3J5SW5pdGlhbGl6ZXIsKGZ1bmN0aW9uKGRhdGEpe0hFQVBVOC5zZXQoZGF0YSxTVEFUSUNfQkFTRSk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgibWVtb3J5IGluaXRpYWxpemVyIil9KSwoZnVuY3Rpb24oZGF0YSl7dGhyb3ciY291bGQgbm90IGxvYWQgbWVtb3J5IGluaXRpYWxpemVyICIrbWVtb3J5SW5pdGlhbGl6ZXJ9KSl9fWZ1bmN0aW9uIEV4aXRTdGF0dXMoc3RhdHVzKXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiO3RoaXMubWVzc2FnZT0iUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgiK3N0YXR1cysiKSI7dGhpcy5zdGF0dXM9c3RhdHVzfUV4aXRTdGF0dXMucHJvdG90eXBlPW5ldyBFcnJvcjtFeGl0U3RhdHVzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FeGl0U3RhdHVzO3ZhciBpbml0aWFsU3RhY2tUb3A7dmFyIHByZWxvYWRTdGFydFRpbWU9bnVsbDt2YXIgY2FsbGVkTWFpbj1mYWxzZTtkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9ZnVuY3Rpb24gcnVuQ2FsbGVyKCl7aWYoIU1vZHVsZVsiY2FsbGVkUnVuIl0mJnNob3VsZFJ1bk5vdylydW4oKTtpZighTW9kdWxlWyJjYWxsZWRSdW4iXSlkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9cnVuQ2FsbGVyfTtNb2R1bGVbImNhbGxNYWluIl09TW9kdWxlLmNhbGxNYWluPWZ1bmN0aW9uIGNhbGxNYWluKGFyZ3Mpe2Fzc2VydChydW5EZXBlbmRlbmNpZXM9PTAsImNhbm5vdCBjYWxsIG1haW4gd2hlbiBhc3luYyBkZXBlbmRlbmNpZXMgcmVtYWluISAobGlzdGVuIG9uIF9fQVRNQUlOX18pIik7YXNzZXJ0KF9fQVRQUkVSVU5fXy5sZW5ndGg9PTAsImNhbm5vdCBjYWxsIG1haW4gd2hlbiBwcmVSdW4gZnVuY3Rpb25zIHJlbWFpbiB0byBiZSBjYWxsZWQiKTthcmdzPWFyZ3N8fFtdO2Vuc3VyZUluaXRSdW50aW1lKCk7dmFyIGFyZ2M9YXJncy5sZW5ndGgrMTtmdW5jdGlvbiBwYWQoKXtmb3IodmFyIGk9MDtpPDQtMTtpKyspe2FyZ3YucHVzaCgwKX19dmFyIGFyZ3Y9W2FsbG9jYXRlKGludEFycmF5RnJvbVN0cmluZygiL2Jpbi90aGlzLnByb2dyYW0iKSwiaTgiLEFMTE9DX05PUk1BTCldO3BhZCgpO2Zvcih2YXIgaT0wO2k8YXJnYy0xO2k9aSsxKXthcmd2LnB1c2goYWxsb2NhdGUoaW50QXJyYXlGcm9tU3RyaW5nKGFyZ3NbaV0pLCJpOCIsQUxMT0NfTk9STUFMKSk7cGFkKCl9YXJndi5wdXNoKDApO2FyZ3Y9YWxsb2NhdGUoYXJndiwiaTMyIixBTExPQ19OT1JNQUwpO2luaXRpYWxTdGFja1RvcD1TVEFDS1RPUDt0cnl7dmFyIHJldD1Nb2R1bGVbIl9tYWluIl0oYXJnYyxhcmd2LDApO2lmKCFNb2R1bGVbIm5vRXhpdFJ1bnRpbWUiXSl7ZXhpdChyZXQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1cyl7cmV0dXJufWVsc2UgaWYoZT09IlNpbXVsYXRlSW5maW5pdGVMb29wIil7TW9kdWxlWyJub0V4aXRSdW50aW1lIl09dHJ1ZTtyZXR1cm59ZWxzZXtpZihlJiZ0eXBlb2YgZT09PSJvYmplY3QiJiZlLnN0YWNrKU1vZHVsZS5wcmludEVycigiZXhjZXB0aW9uIHRocm93bjogIitbZSxlLnN0YWNrXSk7dGhyb3cgZX19ZmluYWxseXtjYWxsZWRNYWluPXRydWV9fTtmdW5jdGlvbiBydW4oYXJncyl7YXJncz1hcmdzfHxNb2R1bGVbImFyZ3VtZW50cyJdO2lmKHByZWxvYWRTdGFydFRpbWU9PT1udWxsKXByZWxvYWRTdGFydFRpbWU9RGF0ZS5ub3coKTtpZihydW5EZXBlbmRlbmNpZXM+MCl7TW9kdWxlLnByaW50RXJyKCJydW4oKSBjYWxsZWQsIGJ1dCBkZXBlbmRlbmNpZXMgcmVtYWluLCBzbyBub3QgcnVubmluZyIpO3JldHVybn1wcmVSdW4oKTtpZihydW5EZXBlbmRlbmNpZXM+MClyZXR1cm47aWYoTW9kdWxlWyJjYWxsZWRSdW4iXSlyZXR1cm47ZnVuY3Rpb24gZG9SdW4oKXtpZihNb2R1bGVbImNhbGxlZFJ1biJdKXJldHVybjtNb2R1bGVbImNhbGxlZFJ1biJdPXRydWU7ZW5zdXJlSW5pdFJ1bnRpbWUoKTtwcmVNYWluKCk7aWYoRU5WSVJPTk1FTlRfSVNfV0VCJiZwcmVsb2FkU3RhcnRUaW1lIT09bnVsbCl7TW9kdWxlLnByaW50RXJyKCJwcmUtbWFpbiBwcmVwIHRpbWU6ICIrKERhdGUubm93KCktcHJlbG9hZFN0YXJ0VGltZSkrIiBtcyIpfWlmKE1vZHVsZVsiX21haW4iXSYmc2hvdWxkUnVuTm93KXtNb2R1bGVbImNhbGxNYWluIl0oYXJncyl9cG9zdFJ1bigpfWlmKE1vZHVsZVsic2V0U3RhdHVzIl0pe01vZHVsZVsic2V0U3RhdHVzIl0oIlJ1bm5pbmcuLi4iKTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7TW9kdWxlWyJzZXRTdGF0dXMiXSgiIil9KSwxKTtpZighQUJPUlQpZG9SdW4oKX0pLDEpfWVsc2V7ZG9SdW4oKX19TW9kdWxlWyJydW4iXT1Nb2R1bGUucnVuPXJ1bjtmdW5jdGlvbiBleGl0KHN0YXR1cyl7QUJPUlQ9dHJ1ZTtFWElUU1RBVFVTPXN0YXR1cztTVEFDS1RPUD1pbml0aWFsU3RhY2tUb3A7ZXhpdFJ1bnRpbWUoKTt0aHJvdyBuZXcgRXhpdFN0YXR1cyhzdGF0dXMpfU1vZHVsZVsiZXhpdCJdPU1vZHVsZS5leGl0PWV4aXQ7ZnVuY3Rpb24gYWJvcnQodGV4dCl7aWYodGV4dCl7TW9kdWxlLnByaW50KHRleHQpO01vZHVsZS5wcmludEVycih0ZXh0KX1BQk9SVD10cnVlO0VYSVRTVEFUVVM9MTt2YXIgZXh0cmE9IlxuSWYgdGhpcyBhYm9ydCgpIGlzIHVuZXhwZWN0ZWQsIGJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIHdoaWNoIGNhbiBnaXZlIG1vcmUgaW5mb3JtYXRpb24uIjt0aHJvdyJhYm9ydCgpIGF0ICIrc3RhY2tUcmFjZSgpK2V4dHJhfU1vZHVsZVsiYWJvcnQiXT1Nb2R1bGUuYWJvcnQ9YWJvcnQ7dmFyIEludGVybmFsRXJyb3I9TW9kdWxlWyJJbnRlcm5hbEVycm9yIl09ZXh0ZW5kRXJyb3IoRXJyb3IsIkludGVybmFsRXJyb3IiKTt2YXIgQmluZGluZ0Vycm9yPU1vZHVsZVsiQmluZGluZ0Vycm9yIl09ZXh0ZW5kRXJyb3IoRXJyb3IsIkJpbmRpbmdFcnJvciIpO3ZhciBVbmJvdW5kVHlwZUVycm9yPU1vZHVsZVsiVW5ib3VuZFR5cGVFcnJvciJdPWV4dGVuZEVycm9yKEJpbmRpbmdFcnJvciwiVW5ib3VuZFR5cGVFcnJvciIpO3ZhciBQdXJlVmlydHVhbEVycm9yPU1vZHVsZVsiUHVyZVZpcnR1YWxFcnJvciJdPWV4dGVuZEVycm9yKEJpbmRpbmdFcnJvciwiUHVyZVZpcnR1YWxFcnJvciIpO2Z1bmN0aW9uIHRocm93SW50ZXJuYWxFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtZXNzYWdlKX1mdW5jdGlvbiB0aHJvd0JpbmRpbmdFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKG1lc3NhZ2UpfWZ1bmN0aW9uIHRocm93VW5ib3VuZFR5cGVFcnJvcihtZXNzYWdlLHR5cGVzKXt2YXIgdW5ib3VuZFR5cGVzPVtdO3ZhciBzZWVuPXt9O2Z1bmN0aW9uIHZpc2l0KHR5cGUpe2lmKHNlZW5bdHlwZV0pe3JldHVybn1pZihyZWdpc3RlcmVkVHlwZXNbdHlwZV0pe3JldHVybn1pZih0eXBlRGVwZW5kZW5jaWVzW3R5cGVdKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdLmZvckVhY2godmlzaXQpO3JldHVybn11bmJvdW5kVHlwZXMucHVzaCh0eXBlKTtzZWVuW3R5cGVdPXRydWV9dHlwZXMuZm9yRWFjaCh2aXNpdCk7dGhyb3cgbmV3IFVuYm91bmRUeXBlRXJyb3IobWVzc2FnZSsiOiAiK3VuYm91bmRUeXBlcy5tYXAoZ2V0VHlwZU5hbWUpLmpvaW4oWyIsICJdKSl9ZnVuY3Rpb24gZW5zdXJlT3ZlcmxvYWRUYWJsZShwcm90byxtZXRob2ROYW1lLGh1bWFuTmFtZSl7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7dmFyIHByZXZGdW5jPXByb3RvW21ldGhvZE5hbWVdO3Byb3RvW21ldGhvZE5hbWVdPShmdW5jdGlvbigpe2lmKCFwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlLmhhc093blByb3BlcnR5KGFyZ3VtZW50cy5sZW5ndGgpKXt0aHJvd0JpbmRpbmdFcnJvcigiRnVuY3Rpb24gJyIraHVtYW5OYW1lKyInIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyAoIithcmd1bWVudHMubGVuZ3RoKyIpIC0gZXhwZWN0cyBvbmUgb2YgKCIrcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSsiKSEiKX1yZXR1cm4gcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmd1bWVudHMubGVuZ3RoXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KTtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlPVtdO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbcHJldkZ1bmMuYXJnQ291bnRdPXByZXZGdW5jfX1mdW5jdGlvbiBleHBvc2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShuYW1lKSl7aWYodW5kZWZpbmVkPT09bnVtQXJndW1lbnRzfHx1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGVbbnVtQXJndW1lbnRzXSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBwdWJsaWMgbmFtZSAnIituYW1lKyInIHR3aWNlIil9ZW5zdXJlT3ZlcmxvYWRUYWJsZShNb2R1bGUsbmFtZSxuYW1lKTtpZihNb2R1bGUuaGFzT3duUHJvcGVydHkobnVtQXJndW1lbnRzKSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBtdWx0aXBsZSBvdmVybG9hZHMgb2YgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1bWVudHMgKCIrbnVtQXJndW1lbnRzKyIpISIpfU1vZHVsZVtuYW1lXS5vdmVybG9hZFRhYmxlW251bUFyZ3VtZW50c109dmFsdWV9ZWxzZXtNb2R1bGVbbmFtZV09dmFsdWU7aWYodW5kZWZpbmVkIT09bnVtQXJndW1lbnRzKXtNb2R1bGVbbmFtZV0ubnVtQXJndW1lbnRzPW51bUFyZ3VtZW50c319fWZ1bmN0aW9uIHJlcGxhY2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKCFNb2R1bGUuaGFzT3duUHJvcGVydHkobmFtZSkpe3Rocm93SW50ZXJuYWxFcnJvcigiUmVwbGFjaW5nIG5vbmV4aXN0YW50IHB1YmxpYyBzeW1ib2wiKX1pZih1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09bnVtQXJndW1lbnRzKXtNb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZVtudW1Bcmd1bWVudHNdPXZhbHVlfWVsc2V7TW9kdWxlW25hbWVdPXZhbHVlfX1mdW5jdGlvbiBleHRlbmRFcnJvcihiYXNlRXJyb3JUeXBlLGVycm9yTmFtZSl7dmFyIGVycm9yQ2xhc3M9Y3JlYXRlTmFtZWRGdW5jdGlvbihlcnJvck5hbWUsKGZ1bmN0aW9uKG1lc3NhZ2Upe3RoaXMubmFtZT1lcnJvck5hbWU7dGhpcy5tZXNzYWdlPW1lc3NhZ2U7dmFyIHN0YWNrPShuZXcgRXJyb3IobWVzc2FnZSkpLnN0YWNrO2lmKHN0YWNrIT09dW5kZWZpbmVkKXt0aGlzLnN0YWNrPXRoaXMudG9TdHJpbmcoKSsiXG4iK3N0YWNrLnJlcGxhY2UoL15FcnJvcig6W15cbl0qKT9cbi8sIiIpfX0pKTtlcnJvckNsYXNzLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGJhc2VFcnJvclR5cGUucHJvdG90eXBlKTtlcnJvckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lcnJvckNsYXNzO2Vycm9yQ2xhc3MucHJvdG90eXBlLnRvU3RyaW5nPShmdW5jdGlvbigpe2lmKHRoaXMubWVzc2FnZT09PXVuZGVmaW5lZCl7cmV0dXJuIHRoaXMubmFtZX1lbHNle3JldHVybiB0aGlzLm5hbWUrIjogIit0aGlzLm1lc3NhZ2V9fSk7cmV0dXJuIGVycm9yQ2xhc3N9ZnVuY3Rpb24gY3JlYXRlTmFtZWRGdW5jdGlvbihuYW1lLGJvZHkpe25hbWU9bWFrZUxlZ2FsRnVuY3Rpb25OYW1lKG5hbWUpO3JldHVybihuZXcgRnVuY3Rpb24oImJvZHkiLCJyZXR1cm4gZnVuY3Rpb24gIituYW1lKyIoKSB7XG4iKycgICAgInVzZSBzdHJpY3QiOycrIiAgICByZXR1cm4gYm9keS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuIisifTtcbiIpKShib2R5KX1mdW5jdGlvbiBfZW1iaW5kX3JlcHIodil7dmFyIHQ9dHlwZW9mIHY7aWYodD09PSJvYmplY3QifHx0PT09ImFycmF5Inx8dD09PSJmdW5jdGlvbiIpe3JldHVybiB2LnRvU3RyaW5nKCl9ZWxzZXtyZXR1cm4iIit2fX12YXIgcmVnaXN0ZXJlZEluc3RhbmNlcz17fTtmdW5jdGlvbiBnZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpe2lmKHB0cj09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoInB0ciBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpfXdoaWxlKGNsYXNzXy5iYXNlQ2xhc3Mpe3B0cj1jbGFzc18udXBjYXN0KHB0cik7Y2xhc3NfPWNsYXNzXy5iYXNlQ2xhc3N9cmV0dXJuIHB0cn1mdW5jdGlvbiByZWdpc3RlckluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIsaW5zdGFuY2Upe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO2lmKHJlZ2lzdGVyZWRJbnN0YW5jZXMuaGFzT3duUHJvcGVydHkocHRyKSl7dGhyb3dCaW5kaW5nRXJyb3IoIlRyaWVkIHRvIHJlZ2lzdGVyIHJlZ2lzdGVyZWQgaW5zdGFuY2U6ICIrcHRyKX1lbHNle3JlZ2lzdGVyZWRJbnN0YW5jZXNbcHRyXT1pbnN0YW5jZX19ZnVuY3Rpb24gdW5yZWdpc3RlckluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIpe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO2lmKHJlZ2lzdGVyZWRJbnN0YW5jZXMuaGFzT3duUHJvcGVydHkocHRyKSl7ZGVsZXRlIHJlZ2lzdGVyZWRJbnN0YW5jZXNbcHRyXX1lbHNle3Rocm93QmluZGluZ0Vycm9yKCJUcmllZCB0byB1bnJlZ2lzdGVyIHVucmVnaXN0ZXJlZCBpbnN0YW5jZTogIitwdHIpfX1mdW5jdGlvbiBnZXRJbmhlcml0ZWRJbnN0YW5jZShjbGFzc18scHRyKXtwdHI9Z2V0QmFzZXN0UG9pbnRlcihjbGFzc18scHRyKTtyZXR1cm4gcmVnaXN0ZXJlZEluc3RhbmNlc1twdHJdfWZ1bmN0aW9uIGdldEluaGVyaXRlZEluc3RhbmNlQ291bnQoKXtyZXR1cm4gT2JqZWN0LmtleXMocmVnaXN0ZXJlZEluc3RhbmNlcykubGVuZ3RofU1vZHVsZVsiZ2V0SW5oZXJpdGVkSW5zdGFuY2VDb3VudCJdPWdldEluaGVyaXRlZEluc3RhbmNlQ291bnQ7ZnVuY3Rpb24gZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcygpe3ZhciBydj1bXTtmb3IodmFyIGsgaW4gcmVnaXN0ZXJlZEluc3RhbmNlcyl7aWYocmVnaXN0ZXJlZEluc3RhbmNlcy5oYXNPd25Qcm9wZXJ0eShrKSl7cnYucHVzaChyZWdpc3RlcmVkSW5zdGFuY2VzW2tdKX19cmV0dXJuIHJ2fU1vZHVsZVsiZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcyJdPWdldExpdmVJbmhlcml0ZWRJbnN0YW5jZXM7dmFyIHJlZ2lzdGVyZWRUeXBlcz17fTt2YXIgYXdhaXRpbmdEZXBlbmRlbmNpZXM9e307dmFyIHR5cGVEZXBlbmRlbmNpZXM9e307dmFyIHJlZ2lzdGVyZWRQb2ludGVycz17fTtmdW5jdGlvbiByZWdpc3RlclR5cGUocmF3VHlwZSxyZWdpc3RlcmVkSW5zdGFuY2Upe2lmKCEoImFyZ1BhY2tBZHZhbmNlImluIHJlZ2lzdGVyZWRJbnN0YW5jZSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2UiKX12YXIgbmFtZT1yZWdpc3RlcmVkSW5zdGFuY2UubmFtZTtpZighcmF3VHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoJ3R5cGUgIicrbmFtZSsnIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyJyl9aWYocmVnaXN0ZXJlZFR5cGVzLmhhc093blByb3BlcnR5KHJhd1R5cGUpKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIHR5cGUgJyIrbmFtZSsiJyB0d2ljZSIpfXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXT1yZWdpc3RlcmVkSW5zdGFuY2U7ZGVsZXRlIHR5cGVEZXBlbmRlbmNpZXNbcmF3VHlwZV07aWYoYXdhaXRpbmdEZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkocmF3VHlwZSkpe3ZhciBjYWxsYmFja3M9YXdhaXRpbmdEZXBlbmRlbmNpZXNbcmF3VHlwZV07ZGVsZXRlIGF3YWl0aW5nRGVwZW5kZW5jaWVzW3Jhd1R5cGVdO2NhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihjYil7Y2IoKX0pKX19ZnVuY3Rpb24gd2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQobXlUeXBlcyxkZXBlbmRlbnRUeXBlcyxnZXRUeXBlQ29udmVydGVycyl7bXlUeXBlcy5mb3JFYWNoKChmdW5jdGlvbih0eXBlKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdPWRlcGVuZGVudFR5cGVzfSkpO2Z1bmN0aW9uIG9uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpe3ZhciBteVR5cGVDb252ZXJ0ZXJzPWdldFR5cGVDb252ZXJ0ZXJzKHR5cGVDb252ZXJ0ZXJzKTtpZihteVR5cGVDb252ZXJ0ZXJzLmxlbmd0aCE9PW15VHlwZXMubGVuZ3RoKXt0aHJvd0ludGVybmFsRXJyb3IoIk1pc21hdGNoZWQgdHlwZSBjb252ZXJ0ZXIgY291bnQiKX1mb3IodmFyIGk9MDtpPG15VHlwZXMubGVuZ3RoOysraSl7cmVnaXN0ZXJUeXBlKG15VHlwZXNbaV0sbXlUeXBlQ29udmVydGVyc1tpXSl9fXZhciB0eXBlQ29udmVydGVycz1uZXcgQXJyYXkoZGVwZW5kZW50VHlwZXMubGVuZ3RoKTt2YXIgdW5yZWdpc3RlcmVkVHlwZXM9W107dmFyIHJlZ2lzdGVyZWQ9MDtkZXBlbmRlbnRUeXBlcy5mb3JFYWNoKChmdW5jdGlvbihkdCxpKXtpZihyZWdpc3RlcmVkVHlwZXMuaGFzT3duUHJvcGVydHkoZHQpKXt0eXBlQ29udmVydGVyc1tpXT1yZWdpc3RlcmVkVHlwZXNbZHRdfWVsc2V7dW5yZWdpc3RlcmVkVHlwZXMucHVzaChkdCk7aWYoIWF3YWl0aW5nRGVwZW5kZW5jaWVzLmhhc093blByb3BlcnR5KGR0KSl7YXdhaXRpbmdEZXBlbmRlbmNpZXNbZHRdPVtdfWF3YWl0aW5nRGVwZW5kZW5jaWVzW2R0XS5wdXNoKChmdW5jdGlvbigpe3R5cGVDb252ZXJ0ZXJzW2ldPXJlZ2lzdGVyZWRUeXBlc1tkdF07KytyZWdpc3RlcmVkO2lmKHJlZ2lzdGVyZWQ9PT11bnJlZ2lzdGVyZWRUeXBlcy5sZW5ndGgpe29uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpfX0pKX19KSk7aWYoMD09PXVucmVnaXN0ZXJlZFR5cGVzLmxlbmd0aCl7b25Db21wbGV0ZSh0eXBlQ29udmVydGVycyl9fXZhciBfX2NoYXJDb2Rlcz0oZnVuY3Rpb24oKXt2YXIgY29kZXM9bmV3IEFycmF5KDI1Nik7Zm9yKHZhciBpPTA7aTwyNTY7KytpKXtjb2Rlc1tpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpfXJldHVybiBjb2Rlc30pKCk7ZnVuY3Rpb24gcmVhZExhdGluMVN0cmluZyhwdHIpe3ZhciByZXQ9IiI7dmFyIGM9cHRyO3doaWxlKEhFQVBVOFtjXSl7cmV0Kz1fX2NoYXJDb2Rlc1tIRUFQVThbYysrXV19cmV0dXJuIHJldH1mdW5jdGlvbiBnZXRUeXBlTmFtZSh0eXBlKXt2YXIgcHRyPV9fX2dldFR5cGVOYW1lKHR5cGUpO3ZhciBydj1yZWFkTGF0aW4xU3RyaW5nKHB0cik7X2ZyZWUocHRyKTtyZXR1cm4gcnZ9ZnVuY3Rpb24gaGVhcDMyVmVjdG9yVG9BcnJheShjb3VudCxmaXJzdEVsZW1lbnQpe3ZhciBhcnJheT1bXTtmb3IodmFyIGk9MDtpPGNvdW50O2krKyl7YXJyYXkucHVzaChIRUFQMzJbKGZpcnN0RWxlbWVudD4+MikraV0pfXJldHVybiBhcnJheX1mdW5jdGlvbiByZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmF3VHlwZSxodW1hbk5hbWUpe3ZhciBpbXBsPXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXTtpZih1bmRlZmluZWQ9PT1pbXBsKXt0aHJvd0JpbmRpbmdFcnJvcihodW1hbk5hbWUrIiBoYXMgdW5rbm93biB0eXBlICIrZ2V0VHlwZU5hbWUocmF3VHlwZSkpfXJldHVybiBpbXBsfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3ZvaWQocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiYXJnUGFja0FkdmFuY2UiOjAsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKCl7cmV0dXJuIHVuZGVmaW5lZH0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7cmV0dXJuIHVuZGVmaW5lZH0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfYm9vbChyYXdUeXBlLG5hbWUsc2l6ZSx0cnVlVmFsdWUsZmFsc2VWYWx1ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHd0KXtyZXR1cm4hIXd0fSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyxvKXtyZXR1cm4gbz90cnVlVmFsdWU6ZmFsc2VWYWx1ZX0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcDtpZihzaXplPT09MSl7aGVhcD1IRUFQOH1lbHNlIGlmKHNpemU9PT0yKXtoZWFwPUhFQVAxNn1lbHNlIGlmKHNpemU9PT00KXtoZWFwPUhFQVAzMn1lbHNle3Rocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gYm9vbGVhbiB0eXBlIHNpemU6ICIrbmFtZSl9cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+c2hpZnRdKX0pLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gZ2V0U2hpZnRGcm9tU2l6ZShzaXplKXtzd2l0Y2goc2l6ZSl7Y2FzZSAxOnJldHVybiAwO2Nhc2UgMjpyZXR1cm4gMTtjYXNlIDQ6cmV0dXJuIDI7Y2FzZSA4OnJldHVybiAzO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biB0eXBlIHNpemU6ICIrc2l6ZSl9fWZ1bmN0aW9uIGludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LHNpZ25lZCl7c3dpdGNoKHNoaWZ0KXtjYXNlIDA6cmV0dXJuKGZ1bmN0aW9uKHBvaW50ZXIpe3ZhciBoZWFwPXNpZ25lZD9IRUFQODpIRUFQVTg7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcl0pfSk7Y2FzZSAxOnJldHVybihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcD1zaWduZWQ/SEVBUDE2OkhFQVBVMTY7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+MV0pfSk7Y2FzZSAyOnJldHVybihmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcD1zaWduZWQ/SEVBUDMyOkhFQVBVMzI7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKGhlYXBbcG9pbnRlcj4+Ml0pfSk7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGludGVnZXIgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gZmxvYXRSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0KXtzd2l0Y2goc2hpZnQpe2Nhc2UgMjpyZXR1cm4oZnVuY3Rpb24ocG9pbnRlcil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKEhFQVBGMzJbcG9pbnRlcj4+Ml0pfSk7Y2FzZSAzOnJldHVybihmdW5jdGlvbihwb2ludGVyKXtyZXR1cm4gdGhpc1siZnJvbVdpcmVUeXBlIl0oSEVBUEY2NFtwb2ludGVyPj4zXSl9KTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZmxvYXQgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcihwcmltaXRpdmVUeXBlLG5hbWUsc2l6ZSxtaW5SYW5nZSxtYXhSYW5nZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO2lmKG1heFJhbmdlPT09LTEpe21heFJhbmdlPTQyOTQ5NjcyOTV9dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7cmVnaXN0ZXJUeXBlKHByaW1pdGl2ZVR5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3JldHVybiB2YWx1ZX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHR5cGVvZiB2YWx1ZSE9PSJudW1iZXIiJiZ0eXBlb2YgdmFsdWUhPT0iYm9vbGVhbiIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0ICInK19lbWJpbmRfcmVwcih2YWx1ZSkrJyIgdG8gJyt0aGlzLm5hbWUpfWlmKHZhbHVlPG1pblJhbmdlfHx2YWx1ZT5tYXhSYW5nZSl7dGhyb3cgbmV3IFR5cGVFcnJvcignUGFzc2luZyBhIG51bWJlciAiJytfZW1iaW5kX3JlcHIodmFsdWUpKyciIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgIicrbmFtZSsnIiwgd2hpY2ggaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgWycrbWluUmFuZ2UrIiwgIittYXhSYW5nZSsiXSEiKX1yZXR1cm4gdmFsdWV8MH0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LG1pblJhbmdlIT09MCksZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdChyYXdUeXBlLG5hbWUsc2l6ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdmFsdWV9KSwidG9XaXJlVHlwZSI6KGZ1bmN0aW9uKGRlc3RydWN0b3JzLHZhbHVlKXtpZih0eXBlb2YgdmFsdWUhPT0ibnVtYmVyIiYmdHlwZW9mIHZhbHVlIT09ImJvb2xlYW4iKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCAiJytfZW1iaW5kX3JlcHIodmFsdWUpKyciIHRvICcrdGhpcy5uYW1lKX1yZXR1cm4gdmFsdWV9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpmbG9hdFJlYWRWYWx1ZUZyb21Qb2ludGVyKG5hbWUsc2hpZnQpLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gc2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXIocG9pbnRlcil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKEhFQVBVMzJbcG9pbnRlcj4+Ml0pfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3N0ZF9zdHJpbmcocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIGE9bmV3IEFycmF5KGxlbmd0aCk7Zm9yKHZhciBpPTA7aTxsZW5ndGg7KytpKXthW2ldPVN0cmluZy5mcm9tQ2hhckNvZGUoSEVBUFU4W3ZhbHVlKzQraV0pfV9mcmVlKHZhbHVlKTtyZXR1cm4gYS5qb2luKCIiKX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3ZhbHVlPW5ldyBVaW50OEFycmF5KHZhbHVlKX1mdW5jdGlvbiBnZXRUQUVsZW1lbnQodGEsaW5kZXgpe3JldHVybiB0YVtpbmRleF19ZnVuY3Rpb24gZ2V0U3RyaW5nRWxlbWVudChzdHJpbmcsaW5kZXgpe3JldHVybiBzdHJpbmcuY2hhckNvZGVBdChpbmRleCl9dmFyIGdldEVsZW1lbnQ7aWYodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtnZXRFbGVtZW50PWdldFRBRWxlbWVudH1lbHNlIGlmKHZhbHVlIGluc3RhbmNlb2YgSW50OEFycmF5KXtnZXRFbGVtZW50PWdldFRBRWxlbWVudH1lbHNlIGlmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtnZXRFbGVtZW50PWdldFN0cmluZ0VsZW1lbnR9ZWxzZXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBzdGQ6OnN0cmluZyIpfXZhciBsZW5ndGg9dmFsdWUubGVuZ3RoO3ZhciBwdHI9X21hbGxvYyg0K2xlbmd0aCk7SEVBUFUzMltwdHI+PjJdPWxlbmd0aDtmb3IodmFyIGk9MDtpPGxlbmd0aDsrK2kpe3ZhciBjaGFyQ29kZT1nZXRFbGVtZW50KHZhbHVlLGkpO2lmKGNoYXJDb2RlPjI1NSl7X2ZyZWUocHRyKTt0aHJvd0JpbmRpbmdFcnJvcigiU3RyaW5nIGhhcyBVVEYtMTYgY29kZSB1bml0cyB0aGF0IGRvIG5vdCBmaXQgaW4gOCBiaXRzIil9SEVBUFU4W3B0cis0K2ldPWNoYXJDb2RlfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246KGZ1bmN0aW9uKHB0cil7X2ZyZWUocHRyKX0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmcocmF3VHlwZSxjaGFyU2l6ZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7dmFyIEhFQVAsc2hpZnQ7aWYoY2hhclNpemU9PT0yKXtIRUFQPUhFQVBVMTY7c2hpZnQ9MX1lbHNlIGlmKGNoYXJTaXplPT09NCl7SEVBUD1IRUFQVTMyO3NoaWZ0PTJ9cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIGE9bmV3IEFycmF5KGxlbmd0aCk7dmFyIHN0YXJ0PXZhbHVlKzQ+PnNoaWZ0O2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7YVtpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKEhFQVBbc3RhcnQraV0pfV9mcmVlKHZhbHVlKTtyZXR1cm4gYS5qb2luKCIiKX0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe3ZhciBsZW5ndGg9dmFsdWUubGVuZ3RoO3ZhciBwdHI9X21hbGxvYyg0K2xlbmd0aCpjaGFyU2l6ZSk7SEVBUFUzMltwdHI+PjJdPWxlbmd0aDt2YXIgc3RhcnQ9cHRyKzQ+PnNoaWZ0O2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7SEVBUFtzdGFydCtpXT12YWx1ZS5jaGFyQ29kZUF0KGkpfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246KGZ1bmN0aW9uKHB0cil7X2ZyZWUocHRyKX0pfSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZW12YWwocmF3VHlwZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24oaGFuZGxlKXt2YXIgcnY9X2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnZhbHVlO19fZW12YWxfZGVjcmVmKGhhbmRsZSk7cmV0dXJuIHJ2fSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyx2YWx1ZSl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodmFsdWUpfSksImFyZ1BhY2tBZHZhbmNlIjo4LCJyZWFkVmFsdWVGcm9tUG9pbnRlciI6c2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXIsZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyhyYXdUeXBlLG5hbWUpe3ZhciB0eXBlTWFwcGluZz1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXldO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyZWdpc3RlclR5cGUocmF3VHlwZSx7bmFtZTpuYW1lLCJmcm9tV2lyZVR5cGUiOihmdW5jdGlvbihoYW5kbGUpe3ZhciB0eXBlPUhFQVBVMzJbaGFuZGxlPj4yXTt2YXIgc2l6ZT1IRUFQVTMyWyhoYW5kbGU+PjIpKzFdO3ZhciBkYXRhPUhFQVBVMzJbKGhhbmRsZT4+MikrMl07dmFyIFRBPXR5cGVNYXBwaW5nW3R5cGVdO3JldHVybiBuZXcgVEEoSEVBUDguYnVmZmVyLGRhdGEsc2l6ZSl9KSwiYXJnUGFja0FkdmFuY2UiOjE2LCJyZWFkVmFsdWVGcm9tUG9pbnRlciI6KGZ1bmN0aW9uKHB0cil7cmV0dXJuIHRoaXNbImZyb21XaXJlVHlwZSJdKHB0cil9KX0pfWZ1bmN0aW9uIHJ1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKXt3aGlsZShkZXN0cnVjdG9ycy5sZW5ndGgpe3ZhciBwdHI9ZGVzdHJ1Y3RvcnMucG9wKCk7dmFyIGRlbD1kZXN0cnVjdG9ycy5wb3AoKTtkZWwocHRyKX19ZnVuY3Rpb24gbmV3Xyhjb25zdHJ1Y3Rvcixhcmd1bWVudExpc3Qpe2lmKCEoY29uc3RydWN0b3IgaW5zdGFuY2VvZiBGdW5jdGlvbikpe3Rocm93IG5ldyBUeXBlRXJyb3IoIm5ld18gY2FsbGVkIHdpdGggY29uc3RydWN0b3IgdHlwZSAiK3R5cGVvZiBjb25zdHJ1Y3RvcisiIHdoaWNoIGlzIG5vdCBhIGZ1bmN0aW9uIil9dmFyIGR1bW15PWNyZWF0ZU5hbWVkRnVuY3Rpb24oY29uc3RydWN0b3IubmFtZSwoZnVuY3Rpb24oKXt9KSk7ZHVtbXkucHJvdG90eXBlPWNvbnN0cnVjdG9yLnByb3RvdHlwZTt2YXIgb2JqPW5ldyBkdW1teTt2YXIgcj1jb25zdHJ1Y3Rvci5hcHBseShvYmosYXJndW1lbnRMaXN0KTtyZXR1cm4gciBpbnN0YW5jZW9mIE9iamVjdD9yOm9ian1mdW5jdGlvbiBjcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsY2xhc3NUeXBlLGNwcEludm9rZXJGdW5jLGNwcFRhcmdldEZ1bmMpe3ZhciBhcmdDb3VudD1hcmdUeXBlcy5sZW5ndGg7aWYoYXJnQ291bnQ8Mil7dGhyb3dCaW5kaW5nRXJyb3IoImFyZ1R5cGVzIGFycmF5IHNpemUgbWlzbWF0Y2ghIE11c3QgYXQgbGVhc3QgZ2V0IHJldHVybiB2YWx1ZSBhbmQgJ3RoaXMnIHR5cGVzISIpfXZhciBpc0NsYXNzTWV0aG9kRnVuYz1hcmdUeXBlc1sxXSE9PW51bGwmJmNsYXNzVHlwZSE9PW51bGw7dmFyIGFyZ3NMaXN0PSIiO3ZhciBhcmdzTGlzdFdpcmVkPSIiO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2FyZ3NMaXN0Kz0oaSE9PTA/IiwgIjoiIikrImFyZyIraTthcmdzTGlzdFdpcmVkKz0oaSE9PTA/IiwgIjoiIikrImFyZyIraSsiV2lyZWQifXZhciBpbnZva2VyRm5Cb2R5PSJyZXR1cm4gZnVuY3Rpb24gIittYWtlTGVnYWxGdW5jdGlvbk5hbWUoaHVtYW5OYW1lKSsiKCIrYXJnc0xpc3QrIikge1xuIisiaWYgKGFyZ3VtZW50cy5sZW5ndGggIT09ICIrKGFyZ0NvdW50LTIpKyIpIHtcbiIrInRocm93QmluZGluZ0Vycm9yKCdmdW5jdGlvbiAiK2h1bWFuTmFtZSsiIGNhbGxlZCB3aXRoICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBhcmd1bWVudHMsIGV4cGVjdGVkICIrKGFyZ0NvdW50LTIpKyIgYXJncyEnKTtcbiIrIn1cbiI7dmFyIG5lZWRzRGVzdHJ1Y3RvclN0YWNrPWZhbHNlO2Zvcih2YXIgaT0xO2k8YXJnVHlwZXMubGVuZ3RoOysraSl7aWYoYXJnVHlwZXNbaV0hPT1udWxsJiZhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb249PT11bmRlZmluZWQpe25lZWRzRGVzdHJ1Y3RvclN0YWNrPXRydWU7YnJlYWt9fWlmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0idmFyIGRlc3RydWN0b3JzID0gW107XG4ifXZhciBkdG9yU3RhY2s9bmVlZHNEZXN0cnVjdG9yU3RhY2s/ImRlc3RydWN0b3JzIjoibnVsbCI7dmFyIGFyZ3MxPVsidGhyb3dCaW5kaW5nRXJyb3IiLCJpbnZva2VyIiwiZm4iLCJydW5EZXN0cnVjdG9ycyIsInJldFR5cGUiLCJjbGFzc1BhcmFtIl07dmFyIGFyZ3MyPVt0aHJvd0JpbmRpbmdFcnJvcixjcHBJbnZva2VyRnVuYyxjcHBUYXJnZXRGdW5jLHJ1bkRlc3RydWN0b3JzLGFyZ1R5cGVzWzBdLGFyZ1R5cGVzWzFdXTtpZihpc0NsYXNzTWV0aG9kRnVuYyl7aW52b2tlckZuQm9keSs9InZhciB0aGlzV2lyZWQgPSBjbGFzc1BhcmFtLnRvV2lyZVR5cGUoIitkdG9yU3RhY2srIiwgdGhpcyk7XG4ifWZvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2ludm9rZXJGbkJvZHkrPSJ2YXIgYXJnIitpKyJXaXJlZCA9IGFyZ1R5cGUiK2krIi50b1dpcmVUeXBlKCIrZHRvclN0YWNrKyIsIGFyZyIraSsiKTsgLy8gIithcmdUeXBlc1tpKzJdLm5hbWUrIlxuIjthcmdzMS5wdXNoKCJhcmdUeXBlIitpKTthcmdzMi5wdXNoKGFyZ1R5cGVzW2krMl0pfWlmKGlzQ2xhc3NNZXRob2RGdW5jKXthcmdzTGlzdFdpcmVkPSJ0aGlzV2lyZWQiKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWR9dmFyIHJldHVybnM9YXJnVHlwZXNbMF0ubmFtZSE9PSJ2b2lkIjtpbnZva2VyRm5Cb2R5Kz0ocmV0dXJucz8idmFyIHJ2ID0gIjoiIikrImludm9rZXIoZm4iKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWQrIik7XG4iO2lmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0icnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpO1xuIn1lbHNle2Zvcih2YXIgaT1pc0NsYXNzTWV0aG9kRnVuYz8xOjI7aTxhcmdUeXBlcy5sZW5ndGg7KytpKXt2YXIgcGFyYW1OYW1lPWk9PT0xPyJ0aGlzV2lyZWQiOiJhcmciKyhpLTIpKyJXaXJlZCI7aWYoYXJnVHlwZXNbaV0uZGVzdHJ1Y3RvckZ1bmN0aW9uIT09bnVsbCl7aW52b2tlckZuQm9keSs9cGFyYW1OYW1lKyJfZHRvcigiK3BhcmFtTmFtZSsiKTsgLy8gIithcmdUeXBlc1tpXS5uYW1lKyJcbiI7YXJnczEucHVzaChwYXJhbU5hbWUrIl9kdG9yIik7YXJnczIucHVzaChhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb24pfX19aWYocmV0dXJucyl7aW52b2tlckZuQm9keSs9InJldHVybiByZXRUeXBlLmZyb21XaXJlVHlwZShydik7XG4ifWludm9rZXJGbkJvZHkrPSJ9XG4iO2FyZ3MxLnB1c2goaW52b2tlckZuQm9keSk7dmFyIGludm9rZXJGdW5jdGlvbj1uZXdfKEZ1bmN0aW9uLGFyZ3MxKS5hcHBseShudWxsLGFyZ3MyKTtyZXR1cm4gaW52b2tlckZ1bmN0aW9ufWZ1bmN0aW9uIHJlcXVpcmVGdW5jdGlvbihzaWduYXR1cmUscmF3RnVuY3Rpb24pe3NpZ25hdHVyZT1yZWFkTGF0aW4xU3RyaW5nKHNpZ25hdHVyZSk7dmFyIGZwO2lmKHR5cGVvZiBGVU5DVElPTl9UQUJMRT09PSJ1bmRlZmluZWQiKXt2YXIgZGM9YXNtWyJkeW5DYWxsXyIrc2lnbmF0dXJlXTtpZihkYz09PXVuZGVmaW5lZCl7ZGM9YXNtWyJkeW5DYWxsXyIrc2lnbmF0dXJlLnJlcGxhY2UoL2YvZywiZCIpXTtpZihkYz09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoIk5vIGR5bkNhbGwgaW52b2tlciBmb3Igc2lnbmF0dXJlOiAiK3NpZ25hdHVyZSl9fWZwPWRjLmJpbmQodW5kZWZpbmVkLHJhd0Z1bmN0aW9uKX1lbHNle2ZwPUZVTkNUSU9OX1RBQkxFW3Jhd0Z1bmN0aW9uXX1pZih0eXBlb2YgZnAhPT0iZnVuY3Rpb24iKXt0aHJvd0JpbmRpbmdFcnJvcigidW5rbm93biBmdW5jdGlvbiBwb2ludGVyIHdpdGggc2lnbmF0dXJlICIrc2lnbmF0dXJlKyI6ICIrcmF3RnVuY3Rpb24pfXJldHVybiBmcH1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mdW5jdGlvbihuYW1lLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixzaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIGFyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmF3SW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oc2lnbmF0dXJlLHJhd0ludm9rZXIpO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLChmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIituYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLGFyZ1R5cGVzKX0pLGFyZ0NvdW50LTEpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLGFyZ1R5cGVzLChmdW5jdGlvbihhcmdUeXBlcyl7dmFyIGludm9rZXJBcmdzQXJyYXk9W2FyZ1R5cGVzWzBdLG51bGxdLmNvbmNhdChhcmdUeXBlcy5zbGljZSgxKSk7cmVwbGFjZVB1YmxpY1N5bWJvbChuYW1lLGNyYWZ0SW52b2tlckZ1bmN0aW9uKG5hbWUsaW52b2tlckFyZ3NBcnJheSxudWxsLHJhd0ludm9rZXIsZm4pLGFyZ0NvdW50LTEpO3JldHVybltdfSkpfXZhciB0dXBsZVJlZ2lzdHJhdGlvbnM9e307ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdmFsdWVfYXJyYXkocmF3VHlwZSxuYW1lLGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yLGRlc3RydWN0b3JTaWduYXR1cmUscmF3RGVzdHJ1Y3Rvcil7dHVwbGVSZWdpc3RyYXRpb25zW3Jhd1R5cGVdPXtuYW1lOnJlYWRMYXRpbjFTdHJpbmcobmFtZSkscmF3Q29uc3RydWN0b3I6cmVxdWlyZUZ1bmN0aW9uKGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yKSxyYXdEZXN0cnVjdG9yOnJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpLGVsZW1lbnRzOltdfX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl92YWx1ZV9hcnJheV9lbGVtZW50KHJhd1R1cGxlVHlwZSxnZXR0ZXJSZXR1cm5UeXBlLGdldHRlclNpZ25hdHVyZSxnZXR0ZXIsZ2V0dGVyQ29udGV4dCxzZXR0ZXJBcmd1bWVudFR5cGUsc2V0dGVyU2lnbmF0dXJlLHNldHRlcixzZXR0ZXJDb250ZXh0KXt0dXBsZVJlZ2lzdHJhdGlvbnNbcmF3VHVwbGVUeXBlXS5lbGVtZW50cy5wdXNoKHtnZXR0ZXJSZXR1cm5UeXBlOmdldHRlclJldHVyblR5cGUsZ2V0dGVyOnJlcXVpcmVGdW5jdGlvbihnZXR0ZXJTaWduYXR1cmUsZ2V0dGVyKSxnZXR0ZXJDb250ZXh0OmdldHRlckNvbnRleHQsc2V0dGVyQXJndW1lbnRUeXBlOnNldHRlckFyZ3VtZW50VHlwZSxzZXR0ZXI6cmVxdWlyZUZ1bmN0aW9uKHNldHRlclNpZ25hdHVyZSxzZXR0ZXIpLHNldHRlckNvbnRleHQ6c2V0dGVyQ29udGV4dH0pfWZ1bmN0aW9uIF9fZW1iaW5kX2ZpbmFsaXplX3ZhbHVlX2FycmF5KHJhd1R1cGxlVHlwZSl7dmFyIHJlZz10dXBsZVJlZ2lzdHJhdGlvbnNbcmF3VHVwbGVUeXBlXTtkZWxldGUgdHVwbGVSZWdpc3RyYXRpb25zW3Jhd1R1cGxlVHlwZV07dmFyIGVsZW1lbnRzPXJlZy5lbGVtZW50czt2YXIgZWxlbWVudHNMZW5ndGg9ZWxlbWVudHMubGVuZ3RoO3ZhciBlbGVtZW50VHlwZXM9ZWxlbWVudHMubWFwKChmdW5jdGlvbihlbHQpe3JldHVybiBlbHQuZ2V0dGVyUmV0dXJuVHlwZX0pKS5jb25jYXQoZWxlbWVudHMubWFwKChmdW5jdGlvbihlbHQpe3JldHVybiBlbHQuc2V0dGVyQXJndW1lbnRUeXBlfSkpKTt2YXIgcmF3Q29uc3RydWN0b3I9cmVnLnJhd0NvbnN0cnVjdG9yO3ZhciByYXdEZXN0cnVjdG9yPXJlZy5yYXdEZXN0cnVjdG9yO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtyYXdUdXBsZVR5cGVdLGVsZW1lbnRUeXBlcywoZnVuY3Rpb24oZWxlbWVudFR5cGVzKXtlbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlbHQsaSl7dmFyIGdldHRlclJldHVyblR5cGU9ZWxlbWVudFR5cGVzW2ldO3ZhciBnZXR0ZXI9ZWx0LmdldHRlcjt2YXIgZ2V0dGVyQ29udGV4dD1lbHQuZ2V0dGVyQ29udGV4dDt2YXIgc2V0dGVyQXJndW1lbnRUeXBlPWVsZW1lbnRUeXBlc1tpK2VsZW1lbnRzTGVuZ3RoXTt2YXIgc2V0dGVyPWVsdC5zZXR0ZXI7dmFyIHNldHRlckNvbnRleHQ9ZWx0LnNldHRlckNvbnRleHQ7ZWx0LnJlYWQ9KGZ1bmN0aW9uKHB0cil7cmV0dXJuIGdldHRlclJldHVyblR5cGVbImZyb21XaXJlVHlwZSJdKGdldHRlcihnZXR0ZXJDb250ZXh0LHB0cikpfSk7ZWx0LndyaXRlPShmdW5jdGlvbihwdHIsbyl7dmFyIGRlc3RydWN0b3JzPVtdO3NldHRlcihzZXR0ZXJDb250ZXh0LHB0cixzZXR0ZXJBcmd1bWVudFR5cGVbInRvV2lyZVR5cGUiXShkZXN0cnVjdG9ycyxvKSk7cnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpfSl9KSk7cmV0dXJuW3tuYW1lOnJlZy5uYW1lLCJmcm9tV2lyZVR5cGUiOihmdW5jdGlvbihwdHIpe3ZhciBydj1uZXcgQXJyYXkoZWxlbWVudHNMZW5ndGgpO2Zvcih2YXIgaT0wO2k8ZWxlbWVudHNMZW5ndGg7KytpKXtydltpXT1lbGVtZW50c1tpXS5yZWFkKHB0cil9cmF3RGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7aWYoZWxlbWVudHNMZW5ndGghPT1vLmxlbmd0aCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW5jb3JyZWN0IG51bWJlciBvZiB0dXBsZSBlbGVtZW50cyBmb3IgIityZWcubmFtZSsiOiBleHBlY3RlZD0iK2VsZW1lbnRzTGVuZ3RoKyIsIGFjdHVhbD0iK28ubGVuZ3RoKX12YXIgcHRyPXJhd0NvbnN0cnVjdG9yKCk7Zm9yKHZhciBpPTA7aTxlbGVtZW50c0xlbmd0aDsrK2kpe2VsZW1lbnRzW2ldLndyaXRlKHB0cixvW2ldKX1pZihkZXN0cnVjdG9ycyE9PW51bGwpe2Rlc3RydWN0b3JzLnB1c2gocmF3RGVzdHJ1Y3RvcixwdHIpfXJldHVybiBwdHJ9KSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246cmF3RGVzdHJ1Y3Rvcn1dfSkpfXZhciBzdHJ1Y3RSZWdpc3RyYXRpb25zPXt9O2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX3ZhbHVlX29iamVjdChyYXdUeXBlLG5hbWUsY29uc3RydWN0b3JTaWduYXR1cmUscmF3Q29uc3RydWN0b3IsZGVzdHJ1Y3RvclNpZ25hdHVyZSxyYXdEZXN0cnVjdG9yKXtzdHJ1Y3RSZWdpc3RyYXRpb25zW3Jhd1R5cGVdPXtuYW1lOnJlYWRMYXRpbjFTdHJpbmcobmFtZSkscmF3Q29uc3RydWN0b3I6cmVxdWlyZUZ1bmN0aW9uKGNvbnN0cnVjdG9yU2lnbmF0dXJlLHJhd0NvbnN0cnVjdG9yKSxyYXdEZXN0cnVjdG9yOnJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpLGZpZWxkczpbXX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdmFsdWVfb2JqZWN0X2ZpZWxkKHN0cnVjdFR5cGUsZmllbGROYW1lLGdldHRlclJldHVyblR5cGUsZ2V0dGVyU2lnbmF0dXJlLGdldHRlcixnZXR0ZXJDb250ZXh0LHNldHRlckFyZ3VtZW50VHlwZSxzZXR0ZXJTaWduYXR1cmUsc2V0dGVyLHNldHRlckNvbnRleHQpe3N0cnVjdFJlZ2lzdHJhdGlvbnNbc3RydWN0VHlwZV0uZmllbGRzLnB1c2goe2ZpZWxkTmFtZTpyZWFkTGF0aW4xU3RyaW5nKGZpZWxkTmFtZSksZ2V0dGVyUmV0dXJuVHlwZTpnZXR0ZXJSZXR1cm5UeXBlLGdldHRlcjpyZXF1aXJlRnVuY3Rpb24oZ2V0dGVyU2lnbmF0dXJlLGdldHRlciksZ2V0dGVyQ29udGV4dDpnZXR0ZXJDb250ZXh0LHNldHRlckFyZ3VtZW50VHlwZTpzZXR0ZXJBcmd1bWVudFR5cGUsc2V0dGVyOnJlcXVpcmVGdW5jdGlvbihzZXR0ZXJTaWduYXR1cmUsc2V0dGVyKSxzZXR0ZXJDb250ZXh0OnNldHRlckNvbnRleHR9KX1mdW5jdGlvbiBfX2VtYmluZF9maW5hbGl6ZV92YWx1ZV9vYmplY3Qoc3RydWN0VHlwZSl7dmFyIHJlZz1zdHJ1Y3RSZWdpc3RyYXRpb25zW3N0cnVjdFR5cGVdO2RlbGV0ZSBzdHJ1Y3RSZWdpc3RyYXRpb25zW3N0cnVjdFR5cGVdO3ZhciByYXdDb25zdHJ1Y3Rvcj1yZWcucmF3Q29uc3RydWN0b3I7dmFyIHJhd0Rlc3RydWN0b3I9cmVnLnJhd0Rlc3RydWN0b3I7dmFyIGZpZWxkUmVjb3Jkcz1yZWcuZmllbGRzO3ZhciBmaWVsZFR5cGVzPWZpZWxkUmVjb3Jkcy5tYXAoKGZ1bmN0aW9uKGZpZWxkKXtyZXR1cm4gZmllbGQuZ2V0dGVyUmV0dXJuVHlwZX0pKS5jb25jYXQoZmllbGRSZWNvcmRzLm1hcCgoZnVuY3Rpb24oZmllbGQpe3JldHVybiBmaWVsZC5zZXR0ZXJBcmd1bWVudFR5cGV9KSkpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtzdHJ1Y3RUeXBlXSxmaWVsZFR5cGVzLChmdW5jdGlvbihmaWVsZFR5cGVzKXt2YXIgZmllbGRzPXt9O2ZpZWxkUmVjb3Jkcy5mb3JFYWNoKChmdW5jdGlvbihmaWVsZCxpKXt2YXIgZmllbGROYW1lPWZpZWxkLmZpZWxkTmFtZTt2YXIgZ2V0dGVyUmV0dXJuVHlwZT1maWVsZFR5cGVzW2ldO3ZhciBnZXR0ZXI9ZmllbGQuZ2V0dGVyO3ZhciBnZXR0ZXJDb250ZXh0PWZpZWxkLmdldHRlckNvbnRleHQ7dmFyIHNldHRlckFyZ3VtZW50VHlwZT1maWVsZFR5cGVzW2krZmllbGRSZWNvcmRzLmxlbmd0aF07dmFyIHNldHRlcj1maWVsZC5zZXR0ZXI7dmFyIHNldHRlckNvbnRleHQ9ZmllbGQuc2V0dGVyQ29udGV4dDtmaWVsZHNbZmllbGROYW1lXT17cmVhZDooZnVuY3Rpb24ocHRyKXtyZXR1cm4gZ2V0dGVyUmV0dXJuVHlwZVsiZnJvbVdpcmVUeXBlIl0oZ2V0dGVyKGdldHRlckNvbnRleHQscHRyKSl9KSx3cml0ZTooZnVuY3Rpb24ocHRyLG8pe3ZhciBkZXN0cnVjdG9ycz1bXTtzZXR0ZXIoc2V0dGVyQ29udGV4dCxwdHIsc2V0dGVyQXJndW1lbnRUeXBlWyJ0b1dpcmVUeXBlIl0oZGVzdHJ1Y3RvcnMsbykpO3J1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKX0pfX0pKTtyZXR1cm5be25hbWU6cmVnLm5hbWUsImZyb21XaXJlVHlwZSI6KGZ1bmN0aW9uKHB0cil7dmFyIHJ2PXt9O2Zvcih2YXIgaSBpbiBmaWVsZHMpe3J2W2ldPWZpZWxkc1tpXS5yZWFkKHB0cil9cmF3RGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn0pLCJ0b1dpcmVUeXBlIjooZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsbyl7Zm9yKHZhciBmaWVsZE5hbWUgaW4gZmllbGRzKXtpZighKGZpZWxkTmFtZSBpbiBvKSl7dGhyb3cgbmV3IFR5cGVFcnJvcigiTWlzc2luZyBmaWVsZCIpfX12YXIgcHRyPXJhd0NvbnN0cnVjdG9yKCk7Zm9yKGZpZWxkTmFtZSBpbiBmaWVsZHMpe2ZpZWxkc1tmaWVsZE5hbWVdLndyaXRlKHB0cixvW2ZpZWxkTmFtZV0pfWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChyYXdEZXN0cnVjdG9yLHB0cil9cmV0dXJuIHB0cn0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOnNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyLGRlc3RydWN0b3JGdW5jdGlvbjpyYXdEZXN0cnVjdG9yfV19KSl9dmFyIGdlbmVyaWNQb2ludGVyVG9XaXJlVHlwZT0oZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsaGFuZGxlKXtpZihoYW5kbGU9PT1udWxsKXtpZih0aGlzLmlzUmVmZXJlbmNlKXt0aHJvd0JpbmRpbmdFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCAiK3RoaXMubmFtZSl9aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7dmFyIHB0cj10aGlzLnJhd0NvbnN0cnVjdG9yKCk7aWYoZGVzdHJ1Y3RvcnMhPT1udWxsKXtkZXN0cnVjdG9ycy5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixwdHIpfXJldHVybiBwdHJ9ZWxzZXtyZXR1cm4gMH19aWYoIWhhbmRsZS4kJCl7dGhyb3dCaW5kaW5nRXJyb3IoJ0Nhbm5vdCBwYXNzICInK19lbWJpbmRfcmVwcihoYW5kbGUpKyciIGFzIGEgJyt0aGlzLm5hbWUpfWlmKCFoYW5kbGUuJCQucHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgIit0aGlzLm5hbWUpfWlmKCF0aGlzLmlzQ29uc3QmJmhhbmRsZS4kJC5wdHJUeXBlLmlzQ29uc3Qpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlICIrKGhhbmRsZS4kJC5zbWFydFB0clR5cGU/aGFuZGxlLiQkLnNtYXJ0UHRyVHlwZS5uYW1lOmhhbmRsZS4kJC5wdHJUeXBlLm5hbWUpKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpfXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO2lmKHRoaXMuaXNTbWFydFBvaW50ZXIpe2lmKHVuZGVmaW5lZD09PWhhbmRsZS4kJC5zbWFydFB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIil9c3dpdGNoKHRoaXMuc2hhcmluZ1BvbGljeSl7Y2FzZSAwOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyfWVsc2V7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIisoaGFuZGxlLiQkLnNtYXJ0UHRyVHlwZT9oYW5kbGUuJCQuc21hcnRQdHJUeXBlLm5hbWU6aGFuZGxlLiQkLnB0clR5cGUubmFtZSkrIiB0byBwYXJhbWV0ZXIgdHlwZSAiK3RoaXMubmFtZSl9YnJlYWs7Y2FzZSAxOnB0cj1oYW5kbGUuJCQuc21hcnRQdHI7YnJlYWs7Y2FzZSAyOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyfWVsc2V7dmFyIGNsb25lZEhhbmRsZT1oYW5kbGVbImNsb25lIl0oKTtwdHI9dGhpcy5yYXdTaGFyZShwdHIsX19lbXZhbF9yZWdpc3RlcigoZnVuY3Rpb24oKXtjbG9uZWRIYW5kbGVbImRlbGV0ZSJdKCl9KSkpO2lmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaCh0aGlzLnJhd0Rlc3RydWN0b3IscHRyKX19YnJlYWs7ZGVmYXVsdDp0aHJvd0JpbmRpbmdFcnJvcigiVW5zdXBwb3J0aW5nIHNoYXJpbmcgcG9saWN5Iil9fXJldHVybiBwdHJ9KTt2YXIgY29uc3ROb1NtYXJ0UHRyUmF3UG9pbnRlclRvV2lyZVR5cGU9KGZ1bmN0aW9uKGRlc3RydWN0b3JzLGhhbmRsZSl7aWYoaGFuZGxlPT09bnVsbCl7aWYodGhpcy5pc1JlZmVyZW5jZSl7dGhyb3dCaW5kaW5nRXJyb3IoIm51bGwgaXMgbm90IGEgdmFsaWQgIit0aGlzLm5hbWUpfXJldHVybiAwfWlmKCFoYW5kbGUuJCQpe3Rocm93QmluZGluZ0Vycm9yKCdDYW5ub3QgcGFzcyAiJytfZW1iaW5kX3JlcHIoaGFuZGxlKSsnIiBhcyBhICcrdGhpcy5uYW1lKX1pZighaGFuZGxlLiQkLnB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKX12YXIgaGFuZGxlQ2xhc3M9aGFuZGxlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBwdHI9dXBjYXN0UG9pbnRlcihoYW5kbGUuJCQucHRyLGhhbmRsZUNsYXNzLHRoaXMucmVnaXN0ZXJlZENsYXNzKTtyZXR1cm4gcHRyfSk7dmFyIG5vbkNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlPShmdW5jdGlvbihkZXN0cnVjdG9ycyxoYW5kbGUpe2lmKGhhbmRsZT09PW51bGwpe2lmKHRoaXMuaXNSZWZlcmVuY2Upe3Rocm93QmluZGluZ0Vycm9yKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKX1yZXR1cm4gMH1pZighaGFuZGxlLiQkKXt0aHJvd0JpbmRpbmdFcnJvcignQ2Fubm90IHBhc3MgIicrX2VtYmluZF9yZXByKGhhbmRsZSkrJyIgYXMgYSAnK3RoaXMubmFtZSl9aWYoIWhhbmRsZS4kJC5wdHIpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAiK3RoaXMubmFtZSl9aWYoaGFuZGxlLiQkLnB0clR5cGUuaXNDb25zdCl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIitoYW5kbGUuJCQucHRyVHlwZS5uYW1lKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpfXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBwdHJ9KTtmdW5jdGlvbiBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHJlZ2lzdGVyZWRDbGFzcyxpc1JlZmVyZW5jZSxpc0NvbnN0LGlzU21hcnRQb2ludGVyLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKXt0aGlzLm5hbWU9bmFtZTt0aGlzLnJlZ2lzdGVyZWRDbGFzcz1yZWdpc3RlcmVkQ2xhc3M7dGhpcy5pc1JlZmVyZW5jZT1pc1JlZmVyZW5jZTt0aGlzLmlzQ29uc3Q9aXNDb25zdDt0aGlzLmlzU21hcnRQb2ludGVyPWlzU21hcnRQb2ludGVyO3RoaXMucG9pbnRlZVR5cGU9cG9pbnRlZVR5cGU7dGhpcy5zaGFyaW5nUG9saWN5PXNoYXJpbmdQb2xpY3k7dGhpcy5yYXdHZXRQb2ludGVlPXJhd0dldFBvaW50ZWU7dGhpcy5yYXdDb25zdHJ1Y3Rvcj1yYXdDb25zdHJ1Y3Rvcjt0aGlzLnJhd1NoYXJlPXJhd1NoYXJlO3RoaXMucmF3RGVzdHJ1Y3Rvcj1yYXdEZXN0cnVjdG9yO2lmKCFpc1NtYXJ0UG9pbnRlciYmcmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcz09PXVuZGVmaW5lZCl7aWYoaXNDb25zdCl7dGhpc1sidG9XaXJlVHlwZSJdPWNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlO3RoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGx9ZWxzZXt0aGlzWyJ0b1dpcmVUeXBlIl09bm9uQ29uc3ROb1NtYXJ0UHRyUmF3UG9pbnRlclRvV2lyZVR5cGU7dGhpcy5kZXN0cnVjdG9yRnVuY3Rpb249bnVsbH19ZWxzZXt0aGlzWyJ0b1dpcmVUeXBlIl09Z2VuZXJpY1BvaW50ZXJUb1dpcmVUeXBlfX1SZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGUuZ2V0UG9pbnRlZT1mdW5jdGlvbiBnZXRQb2ludGVlKHB0cil7aWYodGhpcy5yYXdHZXRQb2ludGVlKXtwdHI9dGhpcy5yYXdHZXRQb2ludGVlKHB0cil9cmV0dXJuIHB0cn07UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24gZGVzdHJ1Y3RvcihwdHIpe2lmKHRoaXMucmF3RGVzdHJ1Y3Rvcil7dGhpcy5yYXdEZXN0cnVjdG9yKHB0cil9fTtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbImFyZ1BhY2tBZHZhbmNlIl09ODtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl09c2ltcGxlUmVhZFZhbHVlRnJvbVBvaW50ZXI7UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlWyJkZWxldGVPYmplY3QiXT1mdW5jdGlvbiBkZWxldGVPYmplY3QoaGFuZGxlKXtpZihoYW5kbGUhPT1udWxsKXtoYW5kbGVbImRlbGV0ZSJdKCl9fTtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGVbImZyb21XaXJlVHlwZSJdPWZ1bmN0aW9uIGZyb21XaXJlVHlwZShwdHIpe3ZhciByYXdQb2ludGVyPXRoaXMuZ2V0UG9pbnRlZShwdHIpO2lmKCFyYXdQb2ludGVyKXt0aGlzLmRlc3RydWN0b3IocHRyKTtyZXR1cm4gbnVsbH12YXIgcmVnaXN0ZXJlZEluc3RhbmNlPWdldEluaGVyaXRlZEluc3RhbmNlKHRoaXMucmVnaXN0ZXJlZENsYXNzLHJhd1BvaW50ZXIpO2lmKHVuZGVmaW5lZCE9PXJlZ2lzdGVyZWRJbnN0YW5jZSl7aWYoMD09PXJlZ2lzdGVyZWRJbnN0YW5jZS4kJC5jb3VudC52YWx1ZSl7cmVnaXN0ZXJlZEluc3RhbmNlLiQkLnB0cj1yYXdQb2ludGVyO3JlZ2lzdGVyZWRJbnN0YW5jZS4kJC5zbWFydFB0cj1wdHI7cmV0dXJuIHJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpfWVsc2V7dmFyIHJ2PXJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpO3RoaXMuZGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn19ZnVuY3Rpb24gbWFrZURlZmF1bHRIYW5kbGUoKXtpZih0aGlzLmlzU21hcnRQb2ludGVyKXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMucG9pbnRlZVR5cGUscHRyOnJhd1BvaW50ZXIsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMscHRyOnB0cn0pfX12YXIgYWN0dWFsVHlwZT10aGlzLnJlZ2lzdGVyZWRDbGFzcy5nZXRBY3R1YWxUeXBlKHJhd1BvaW50ZXIpO3ZhciByZWdpc3RlcmVkUG9pbnRlclJlY29yZD1yZWdpc3RlcmVkUG9pbnRlcnNbYWN0dWFsVHlwZV07aWYoIXJlZ2lzdGVyZWRQb2ludGVyUmVjb3JkKXtyZXR1cm4gbWFrZURlZmF1bHRIYW5kbGUuY2FsbCh0aGlzKX12YXIgdG9UeXBlO2lmKHRoaXMuaXNDb25zdCl7dG9UeXBlPXJlZ2lzdGVyZWRQb2ludGVyUmVjb3JkLmNvbnN0UG9pbnRlclR5cGV9ZWxzZXt0b1R5cGU9cmVnaXN0ZXJlZFBvaW50ZXJSZWNvcmQucG9pbnRlclR5cGV9dmFyIGRwPWRvd25jYXN0UG9pbnRlcihyYXdQb2ludGVyLHRoaXMucmVnaXN0ZXJlZENsYXNzLHRvVHlwZS5yZWdpc3RlcmVkQ2xhc3MpO2lmKGRwPT09bnVsbCl7cmV0dXJuIG1ha2VEZWZhdWx0SGFuZGxlLmNhbGwodGhpcyl9aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7cmV0dXJuIG1ha2VDbGFzc0hhbmRsZSh0b1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRvVHlwZSxwdHI6ZHAsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRvVHlwZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUse3B0clR5cGU6dG9UeXBlLHB0cjpkcH0pfX07ZnVuY3Rpb24gbWFrZUNsYXNzSGFuZGxlKHByb3RvdHlwZSxyZWNvcmQpe2lmKCFyZWNvcmQucHRyVHlwZXx8IXJlY29yZC5wdHIpe3Rocm93SW50ZXJuYWxFcnJvcigibWFrZUNsYXNzSGFuZGxlIHJlcXVpcmVzIHB0ciBhbmQgcHRyVHlwZSIpfXZhciBoYXNTbWFydFB0clR5cGU9ISFyZWNvcmQuc21hcnRQdHJUeXBlO3ZhciBoYXNTbWFydFB0cj0hIXJlY29yZC5zbWFydFB0cjtpZihoYXNTbWFydFB0clR5cGUhPT1oYXNTbWFydFB0cil7dGhyb3dJbnRlcm5hbEVycm9yKCJCb3RoIHNtYXJ0UHRyVHlwZSBhbmQgc21hcnRQdHIgbXVzdCBiZSBzcGVjaWZpZWQiKX1yZWNvcmQuY291bnQ9e3ZhbHVlOjF9O3JldHVybiBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSx7JCQ6e3ZhbHVlOnJlY29yZH19KX1mdW5jdGlvbiBDbGFzc0hhbmRsZSgpe31mdW5jdGlvbiBnZXRJbnN0YW5jZVR5cGVOYW1lKGhhbmRsZSl7cmV0dXJuIGhhbmRsZS4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5uYW1lfUNsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNBbGlhc09mIl09ZnVuY3Rpb24gaXNBbGlhc09mKG90aGVyKXtpZighKHRoaXMgaW5zdGFuY2VvZiBDbGFzc0hhbmRsZSkpe3JldHVybiBmYWxzZX1pZighKG90aGVyIGluc3RhbmNlb2YgQ2xhc3NIYW5kbGUpKXtyZXR1cm4gZmFsc2V9dmFyIGxlZnRDbGFzcz10aGlzLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBsZWZ0PXRoaXMuJCQucHRyO3ZhciByaWdodENsYXNzPW90aGVyLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciByaWdodD1vdGhlci4kJC5wdHI7d2hpbGUobGVmdENsYXNzLmJhc2VDbGFzcyl7bGVmdD1sZWZ0Q2xhc3MudXBjYXN0KGxlZnQpO2xlZnRDbGFzcz1sZWZ0Q2xhc3MuYmFzZUNsYXNzfXdoaWxlKHJpZ2h0Q2xhc3MuYmFzZUNsYXNzKXtyaWdodD1yaWdodENsYXNzLnVwY2FzdChyaWdodCk7cmlnaHRDbGFzcz1yaWdodENsYXNzLmJhc2VDbGFzc31yZXR1cm4gbGVmdENsYXNzPT09cmlnaHRDbGFzcyYmbGVmdD09PXJpZ2h0fTtmdW5jdGlvbiB0aHJvd0luc3RhbmNlQWxyZWFkeURlbGV0ZWQob2JqKXt0aHJvd0JpbmRpbmdFcnJvcihnZXRJbnN0YW5jZVR5cGVOYW1lKG9iaikrIiBpbnN0YW5jZSBhbHJlYWR5IGRlbGV0ZWQiKX1DbGFzc0hhbmRsZS5wcm90b3R5cGVbImNsb25lIl09ZnVuY3Rpb24gY2xvbmUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlKXt0aGlzLiQkLmNvdW50LnZhbHVlKz0xO3JldHVybiB0aGlzfWVsc2V7dmFyIGNsb25lPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLHskJDp7dmFsdWU6c2hhbGxvd0NvcHkodGhpcy4kJCl9fSk7Y2xvbmUuJCQuY291bnQudmFsdWUrPTE7cmV0dXJuIGNsb25lfX07ZnVuY3Rpb24gcnVuRGVzdHJ1Y3RvcihoYW5kbGUpe3ZhciAkJD1oYW5kbGUuJCQ7aWYoJCQuc21hcnRQdHIpeyQkLnNtYXJ0UHRyVHlwZS5yYXdEZXN0cnVjdG9yKCQkLnNtYXJ0UHRyKX1lbHNleyQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLnJhd0Rlc3RydWN0b3IoJCQucHRyKX19Q2xhc3NIYW5kbGUucHJvdG90eXBlWyJkZWxldGUiXT1mdW5jdGlvbiBDbGFzc0hhbmRsZV9kZWxldGUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3Rocm93QmluZGluZ0Vycm9yKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIil9dGhpcy4kJC5jb3VudC52YWx1ZS09MTt2YXIgdG9EZWxldGU9MD09PXRoaXMuJCQuY291bnQudmFsdWU7aWYodG9EZWxldGUpe3J1bkRlc3RydWN0b3IodGhpcyl9aWYoIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3RoaXMuJCQuc21hcnRQdHI9dW5kZWZpbmVkO3RoaXMuJCQucHRyPXVuZGVmaW5lZH19O3ZhciBkZWxldGlvblF1ZXVlPVtdO0NsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNEZWxldGVkIl09ZnVuY3Rpb24gaXNEZWxldGVkKCl7cmV0dXJuIXRoaXMuJCQucHRyfTtDbGFzc0hhbmRsZS5wcm90b3R5cGVbImRlbGV0ZUxhdGVyIl09ZnVuY3Rpb24gZGVsZXRlTGF0ZXIoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKX1pZih0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3Rocm93QmluZGluZ0Vycm9yKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIil9ZGVsZXRpb25RdWV1ZS5wdXNoKHRoaXMpO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoPT09MSYmZGVsYXlGdW5jdGlvbil7ZGVsYXlGdW5jdGlvbihmbHVzaFBlbmRpbmdEZWxldGVzKX10aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZD10cnVlO3JldHVybiB0aGlzfTtmdW5jdGlvbiBmbHVzaFBlbmRpbmdEZWxldGVzKCl7d2hpbGUoZGVsZXRpb25RdWV1ZS5sZW5ndGgpe3ZhciBvYmo9ZGVsZXRpb25RdWV1ZS5wb3AoKTtvYmouJCQuZGVsZXRlU2NoZWR1bGVkPWZhbHNlO29ialsiZGVsZXRlIl0oKX19TW9kdWxlWyJmbHVzaFBlbmRpbmdEZWxldGVzIl09Zmx1c2hQZW5kaW5nRGVsZXRlczt2YXIgZGVsYXlGdW5jdGlvbjtNb2R1bGVbInNldERlbGF5RnVuY3Rpb24iXT1mdW5jdGlvbiBzZXREZWxheUZ1bmN0aW9uKGZuKXtkZWxheUZ1bmN0aW9uPWZuO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoJiZkZWxheUZ1bmN0aW9uKXtkZWxheUZ1bmN0aW9uKGZsdXNoUGVuZGluZ0RlbGV0ZXMpfX07ZnVuY3Rpb24gUmVnaXN0ZXJlZENsYXNzKG5hbWUsY29uc3RydWN0b3IsaW5zdGFuY2VQcm90b3R5cGUscmF3RGVzdHJ1Y3RvcixiYXNlQ2xhc3MsZ2V0QWN0dWFsVHlwZSx1cGNhc3QsZG93bmNhc3Qpe3RoaXMubmFtZT1uYW1lO3RoaXMuY29uc3RydWN0b3I9Y29uc3RydWN0b3I7dGhpcy5pbnN0YW5jZVByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt0aGlzLnJhd0Rlc3RydWN0b3I9cmF3RGVzdHJ1Y3Rvcjt0aGlzLmJhc2VDbGFzcz1iYXNlQ2xhc3M7dGhpcy5nZXRBY3R1YWxUeXBlPWdldEFjdHVhbFR5cGU7dGhpcy51cGNhc3Q9dXBjYXN0O3RoaXMuZG93bmNhc3Q9ZG93bmNhc3Q7dGhpcy5wdXJlVmlydHVhbEZ1bmN0aW9ucz1bXX1mdW5jdGlvbiBzaGFsbG93Q29weShvKXt2YXIgcnY9e307Zm9yKHZhciBrIGluIG8pe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLGspKXtydltrXT1vW2tdfX1yZXR1cm4gcnZ9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3MocmF3VHlwZSxyYXdQb2ludGVyVHlwZSxyYXdDb25zdFBvaW50ZXJUeXBlLGJhc2VDbGFzc1Jhd1R5cGUsZ2V0QWN0dWFsVHlwZVNpZ25hdHVyZSxnZXRBY3R1YWxUeXBlLHVwY2FzdFNpZ25hdHVyZSx1cGNhc3QsZG93bmNhc3RTaWduYXR1cmUsZG93bmNhc3QsbmFtZSxkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3Ipe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtnZXRBY3R1YWxUeXBlPXJlcXVpcmVGdW5jdGlvbihnZXRBY3R1YWxUeXBlU2lnbmF0dXJlLGdldEFjdHVhbFR5cGUpO2lmKHVwY2FzdCl7dXBjYXN0PXJlcXVpcmVGdW5jdGlvbih1cGNhc3RTaWduYXR1cmUsdXBjYXN0KX1pZihkb3duY2FzdCl7ZG93bmNhc3Q9cmVxdWlyZUZ1bmN0aW9uKGRvd25jYXN0U2lnbmF0dXJlLGRvd25jYXN0KX1yYXdEZXN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpO3ZhciBsZWdhbEZ1bmN0aW9uTmFtZT1tYWtlTGVnYWxGdW5jdGlvbk5hbWUobmFtZSk7ZXhwb3NlUHVibGljU3ltYm9sKGxlZ2FsRnVuY3Rpb25OYW1lLChmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNvbnN0cnVjdCAiK25hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsW2Jhc2VDbGFzc1Jhd1R5cGVdKX0pKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbcmF3VHlwZSxyYXdQb2ludGVyVHlwZSxyYXdDb25zdFBvaW50ZXJUeXBlXSxiYXNlQ2xhc3NSYXdUeXBlP1tiYXNlQ2xhc3NSYXdUeXBlXTpbXSwoZnVuY3Rpb24oYmFzZSl7YmFzZT1iYXNlWzBdO3ZhciBiYXNlQ2xhc3M7dmFyIGJhc2VQcm90b3R5cGU7aWYoYmFzZUNsYXNzUmF3VHlwZSl7YmFzZUNsYXNzPWJhc2UucmVnaXN0ZXJlZENsYXNzO2Jhc2VQcm90b3R5cGU9YmFzZUNsYXNzLmluc3RhbmNlUHJvdG90eXBlfWVsc2V7YmFzZVByb3RvdHlwZT1DbGFzc0hhbmRsZS5wcm90b3R5cGV9dmFyIGNvbnN0cnVjdG9yPWNyZWF0ZU5hbWVkRnVuY3Rpb24obGVnYWxGdW5jdGlvbk5hbWUsKGZ1bmN0aW9uKCl7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpIT09aW5zdGFuY2VQcm90b3R5cGUpe3Rocm93IG5ldyBCaW5kaW5nRXJyb3IoIlVzZSAnbmV3JyB0byBjb25zdHJ1Y3QgIituYW1lKX1pZih1bmRlZmluZWQ9PT1yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keSl7dGhyb3cgbmV3IEJpbmRpbmdFcnJvcihuYW1lKyIgaGFzIG5vIGFjY2Vzc2libGUgY29uc3RydWN0b3IiKX12YXIgYm9keT1yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmd1bWVudHMubGVuZ3RoXTtpZih1bmRlZmluZWQ9PT1ib2R5KXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJUcmllZCB0byBpbnZva2UgY3RvciBvZiAiK25hbWUrIiB3aXRoIGludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCIrYXJndW1lbnRzLmxlbmd0aCsiKSAtIGV4cGVjdGVkICgiK09iamVjdC5rZXlzKHJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KS50b1N0cmluZygpKyIpIHBhcmFtZXRlcnMgaW5zdGVhZCEiKX1yZXR1cm4gYm9keS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSk7dmFyIGluc3RhbmNlUHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYmFzZVByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmNvbnN0cnVjdG9yfX0pO2NvbnN0cnVjdG9yLnByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt2YXIgcmVnaXN0ZXJlZENsYXNzPW5ldyBSZWdpc3RlcmVkQ2xhc3MobmFtZSxjb25zdHJ1Y3RvcixpbnN0YW5jZVByb3RvdHlwZSxyYXdEZXN0cnVjdG9yLGJhc2VDbGFzcyxnZXRBY3R1YWxUeXBlLHVwY2FzdCxkb3duY2FzdCk7dmFyIHJlZmVyZW5jZUNvbnZlcnRlcj1uZXcgUmVnaXN0ZXJlZFBvaW50ZXIobmFtZSxyZWdpc3RlcmVkQ2xhc3MsdHJ1ZSxmYWxzZSxmYWxzZSk7dmFyIHBvaW50ZXJDb252ZXJ0ZXI9bmV3IFJlZ2lzdGVyZWRQb2ludGVyKG5hbWUrIioiLHJlZ2lzdGVyZWRDbGFzcyxmYWxzZSxmYWxzZSxmYWxzZSk7dmFyIGNvbnN0UG9pbnRlckNvbnZlcnRlcj1uZXcgUmVnaXN0ZXJlZFBvaW50ZXIobmFtZSsiIGNvbnN0KiIscmVnaXN0ZXJlZENsYXNzLGZhbHNlLHRydWUsZmFsc2UpO3JlZ2lzdGVyZWRQb2ludGVyc1tyYXdUeXBlXT17cG9pbnRlclR5cGU6cG9pbnRlckNvbnZlcnRlcixjb25zdFBvaW50ZXJUeXBlOmNvbnN0UG9pbnRlckNvbnZlcnRlcn07cmVwbGFjZVB1YmxpY1N5bWJvbChsZWdhbEZ1bmN0aW9uTmFtZSxjb25zdHJ1Y3Rvcik7cmV0dXJuW3JlZmVyZW5jZUNvbnZlcnRlcixwb2ludGVyQ29udmVydGVyLGNvbnN0UG9pbnRlckNvbnZlcnRlcl19KSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IocmF3Q2xhc3NUeXBlLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLGludm9rZXIscmF3Q29uc3RydWN0b3Ipe3ZhciByYXdBcmdUeXBlcz1oZWFwMzJWZWN0b3JUb0FycmF5KGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcik7aW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxpbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSwoZnVuY3Rpb24oY2xhc3NUeXBlKXtjbGFzc1R5cGU9Y2xhc3NUeXBlWzBdO3ZhciBodW1hbk5hbWU9ImNvbnN0cnVjdG9yICIrY2xhc3NUeXBlLm5hbWU7aWYodW5kZWZpbmVkPT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KXtjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHk9W119aWYodW5kZWZpbmVkIT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgY29uc3RydWN0b3JzIHdpdGggaWRlbnRpY2FsIG51bWJlciBvZiBwYXJhbWV0ZXJzICgiKyhhcmdDb3VudC0xKSsiKSBmb3IgY2xhc3MgJyIrY2xhc3NUeXBlLm5hbWUrIichIE92ZXJsb2FkIHJlc29sdXRpb24gaXMgY3VycmVudGx5IG9ubHkgcGVyZm9ybWVkIHVzaW5nIHRoZSBwYXJhbWV0ZXIgY291bnQsIG5vdCBhY3R1YWwgdHlwZSBpbmZvISIpfWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmdDb3VudC0xXT1mdW5jdGlvbiB1bmJvdW5kVHlwZUhhbmRsZXIoKXt0aHJvd1VuYm91bmRUeXBlRXJyb3IoIkNhbm5vdCBjb25zdHJ1Y3QgIitjbGFzc1R5cGUubmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixyYXdBcmdUeXBlcyl9O3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLHJhd0FyZ1R5cGVzLChmdW5jdGlvbihhcmdUeXBlcyl7Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdPWZ1bmN0aW9uIGNvbnN0cnVjdG9yX2JvZHkoKXtpZihhcmd1bWVudHMubGVuZ3RoIT09YXJnQ291bnQtMSl7dGhyb3dCaW5kaW5nRXJyb3IoaHVtYW5OYW1lKyIgY2FsbGVkIHdpdGggIithcmd1bWVudHMubGVuZ3RoKyIgYXJndW1lbnRzLCBleHBlY3RlZCAiKyhhcmdDb3VudC0xKSl9dmFyIGRlc3RydWN0b3JzPVtdO3ZhciBhcmdzPW5ldyBBcnJheShhcmdDb3VudCk7YXJnc1swXT1yYXdDb25zdHJ1Y3Rvcjtmb3IodmFyIGk9MTtpPGFyZ0NvdW50OysraSl7YXJnc1tpXT1hcmdUeXBlc1tpXVsidG9XaXJlVHlwZSJdKGRlc3RydWN0b3JzLGFyZ3VtZW50c1tpLTFdKX12YXIgcHRyPWludm9rZXIuYXBwbHkobnVsbCxhcmdzKTtydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyk7cmV0dXJuIGFyZ1R5cGVzWzBdWyJmcm9tV2lyZVR5cGUiXShwdHIpfTtyZXR1cm5bXX0pKTtyZXR1cm5bXX0pKX1mdW5jdGlvbiBkb3duY2FzdFBvaW50ZXIocHRyLHB0ckNsYXNzLGRlc2lyZWRDbGFzcyl7aWYocHRyQ2xhc3M9PT1kZXNpcmVkQ2xhc3Mpe3JldHVybiBwdHJ9aWYodW5kZWZpbmVkPT09ZGVzaXJlZENsYXNzLmJhc2VDbGFzcyl7cmV0dXJuIG51bGx9dmFyIHJ2PWRvd25jYXN0UG9pbnRlcihwdHIscHRyQ2xhc3MsZGVzaXJlZENsYXNzLmJhc2VDbGFzcyk7aWYocnY9PT1udWxsKXtyZXR1cm4gbnVsbH1yZXR1cm4gZGVzaXJlZENsYXNzLmRvd25jYXN0KHJ2KX1mdW5jdGlvbiB1cGNhc3RQb2ludGVyKHB0cixwdHJDbGFzcyxkZXNpcmVkQ2xhc3Mpe3doaWxlKHB0ckNsYXNzIT09ZGVzaXJlZENsYXNzKXtpZighcHRyQ2xhc3MudXBjYXN0KXt0aHJvd0JpbmRpbmdFcnJvcigiRXhwZWN0ZWQgbnVsbCBvciBpbnN0YW5jZSBvZiAiK2Rlc2lyZWRDbGFzcy5uYW1lKyIsIGdvdCBhbiBpbnN0YW5jZSBvZiAiK3B0ckNsYXNzLm5hbWUpfXB0cj1wdHJDbGFzcy51cGNhc3QocHRyKTtwdHJDbGFzcz1wdHJDbGFzcy5iYXNlQ2xhc3N9cmV0dXJuIHB0cn1mdW5jdGlvbiB2YWxpZGF0ZVRoaXModGhpc18sY2xhc3NUeXBlLGh1bWFuTmFtZSl7aWYoISh0aGlzXyBpbnN0YW5jZW9mIE9iamVjdCkpe3Rocm93QmluZGluZ0Vycm9yKGh1bWFuTmFtZSsnIHdpdGggaW52YWxpZCAidGhpcyI6ICcrdGhpc18pfWlmKCEodGhpc18gaW5zdGFuY2VvZiBjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yKSl7dGhyb3dCaW5kaW5nRXJyb3IoaHVtYW5OYW1lKycgaW5jb21wYXRpYmxlIHdpdGggInRoaXMiIG9mIHR5cGUgJyt0aGlzXy5jb25zdHJ1Y3Rvci5uYW1lKX1pZighdGhpc18uJCQucHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiY2Fubm90IGNhbGwgZW1zY3JpcHRlbiBiaW5kaW5nIG1ldGhvZCAiK2h1bWFuTmFtZSsiIG9uIGRlbGV0ZWQgb2JqZWN0Iil9cmV0dXJuIHVwY2FzdFBvaW50ZXIodGhpc18uJCQucHRyLHRoaXNfLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLGNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uKHJhd0NsYXNzVHlwZSxtZXRob2ROYW1lLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIsY29udGV4dCxpc1B1cmVWaXJ0dWFsKXt2YXIgcmF3QXJnVHlwZXM9aGVhcDMyVmVjdG9yVG9BcnJheShhcmdDb3VudCxyYXdBcmdUeXBlc0FkZHIpO21ldGhvZE5hbWU9cmVhZExhdGluMVN0cmluZyhtZXRob2ROYW1lKTtyYXdJbnZva2VyPXJlcXVpcmVGdW5jdGlvbihpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtyYXdDbGFzc1R5cGVdLChmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrbWV0aG9kTmFtZTtpZihpc1B1cmVWaXJ0dWFsKXtjbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLnB1cmVWaXJ0dWFsRnVuY3Rpb25zLnB1c2gobWV0aG9kTmFtZSl9ZnVuY3Rpb24gdW5ib3VuZFR5cGVzSGFuZGxlcigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIitodW1hbk5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIscmF3QXJnVHlwZXMpfXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBtZXRob2Q9cHJvdG9bbWV0aG9kTmFtZV07aWYodW5kZWZpbmVkPT09bWV0aG9kfHx1bmRlZmluZWQ9PT1tZXRob2Qub3ZlcmxvYWRUYWJsZSYmbWV0aG9kLmNsYXNzTmFtZSE9PWNsYXNzVHlwZS5uYW1lJiZtZXRob2QuYXJnQ291bnQ9PT1hcmdDb3VudC0yKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTI7dW5ib3VuZFR5cGVzSGFuZGxlci5jbGFzc05hbWU9Y2xhc3NUeXBlLm5hbWU7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcn1lbHNle2Vuc3VyZU92ZXJsb2FkVGFibGUocHJvdG8sbWV0aG9kTmFtZSxodW1hbk5hbWUpO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMl09dW5ib3VuZFR5cGVzSGFuZGxlcn13aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcywoZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBtZW1iZXJGdW5jdGlvbj1jcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsY2xhc3NUeXBlLHJhd0ludm9rZXIsY29udGV4dCk7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7cHJvdG9bbWV0aG9kTmFtZV09bWVtYmVyRnVuY3Rpb259ZWxzZXtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlW2FyZ0NvdW50LTJdPW1lbWJlckZ1bmN0aW9ufXJldHVybltdfSkpO3JldHVybltdfSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX3Byb3BlcnR5KGNsYXNzVHlwZSxmaWVsZE5hbWUsZ2V0dGVyUmV0dXJuVHlwZSxnZXR0ZXJTaWduYXR1cmUsZ2V0dGVyLGdldHRlckNvbnRleHQsc2V0dGVyQXJndW1lbnRUeXBlLHNldHRlclNpZ25hdHVyZSxzZXR0ZXIsc2V0dGVyQ29udGV4dCl7ZmllbGROYW1lPXJlYWRMYXRpbjFTdHJpbmcoZmllbGROYW1lKTtnZXR0ZXI9cmVxdWlyZUZ1bmN0aW9uKGdldHRlclNpZ25hdHVyZSxnZXR0ZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtjbGFzc1R5cGVdLChmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrZmllbGROYW1lO3ZhciBkZXNjPXtnZXQ6KGZ1bmN0aW9uKCl7dGhyb3dVbmJvdW5kVHlwZUVycm9yKCJDYW5ub3QgYWNjZXNzICIraHVtYW5OYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLFtnZXR0ZXJSZXR1cm5UeXBlLHNldHRlckFyZ3VtZW50VHlwZV0pfSksZW51bWVyYWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfTtpZihzZXR0ZXIpe2Rlc2Muc2V0PShmdW5jdGlvbigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGFjY2VzcyAiK2h1bWFuTmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixbZ2V0dGVyUmV0dXJuVHlwZSxzZXR0ZXJBcmd1bWVudFR5cGVdKX0pfWVsc2V7ZGVzYy5zZXQ9KGZ1bmN0aW9uKHYpe3Rocm93QmluZGluZ0Vycm9yKGh1bWFuTmFtZSsiIGlzIGEgcmVhZC1vbmx5IHByb3BlcnR5Iil9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoY2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxmaWVsZE5hbWUsZGVzYyk7d2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQoW10sc2V0dGVyP1tnZXR0ZXJSZXR1cm5UeXBlLHNldHRlckFyZ3VtZW50VHlwZV06W2dldHRlclJldHVyblR5cGVdLChmdW5jdGlvbih0eXBlcyl7dmFyIGdldHRlclJldHVyblR5cGU9dHlwZXNbMF07dmFyIGRlc2M9e2dldDooZnVuY3Rpb24oKXt2YXIgcHRyPXZhbGlkYXRlVGhpcyh0aGlzLGNsYXNzVHlwZSxodW1hbk5hbWUrIiBnZXR0ZXIiKTtyZXR1cm4gZ2V0dGVyUmV0dXJuVHlwZVsiZnJvbVdpcmVUeXBlIl0oZ2V0dGVyKGdldHRlckNvbnRleHQscHRyKSl9KSxlbnVtZXJhYmxlOnRydWV9O2lmKHNldHRlcil7c2V0dGVyPXJlcXVpcmVGdW5jdGlvbihzZXR0ZXJTaWduYXR1cmUsc2V0dGVyKTt2YXIgc2V0dGVyQXJndW1lbnRUeXBlPXR5cGVzWzFdO2Rlc2Muc2V0PShmdW5jdGlvbih2KXt2YXIgcHRyPXZhbGlkYXRlVGhpcyh0aGlzLGNsYXNzVHlwZSxodW1hbk5hbWUrIiBzZXR0ZXIiKTt2YXIgZGVzdHJ1Y3RvcnM9W107c2V0dGVyKHNldHRlckNvbnRleHQscHRyLHNldHRlckFyZ3VtZW50VHlwZVsidG9XaXJlVHlwZSJdKGRlc3RydWN0b3JzLHYpKTtydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyl9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoY2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxmaWVsZE5hbWUsZGVzYyk7cmV0dXJuW119KSk7cmV0dXJuW119KSl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY2xhc3NfZnVuY3Rpb24ocmF3Q2xhc3NUeXBlLG1ldGhvZE5hbWUsYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyLGludm9rZXJTaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIHJhd0FyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTttZXRob2ROYW1lPXJlYWRMYXRpbjFTdHJpbmcobWV0aG9kTmFtZSk7cmF3SW52b2tlcj1yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxyYXdJbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSwoZnVuY3Rpb24oY2xhc3NUeXBlKXtjbGFzc1R5cGU9Y2xhc3NUeXBlWzBdO3ZhciBodW1hbk5hbWU9Y2xhc3NUeXBlLm5hbWUrIi4iK21ldGhvZE5hbWU7ZnVuY3Rpb24gdW5ib3VuZFR5cGVzSGFuZGxlcigpe3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgIitodW1hbk5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIscmF3QXJnVHlwZXMpfXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yO2lmKHVuZGVmaW5lZD09PXByb3RvW21ldGhvZE5hbWVdKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTE7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcn1lbHNle2Vuc3VyZU92ZXJsb2FkVGFibGUocHJvdG8sbWV0aG9kTmFtZSxodW1hbk5hbWUpO3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMV09dW5ib3VuZFR5cGVzSGFuZGxlcn13aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcywoZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBpbnZva2VyQXJnc0FycmF5PVthcmdUeXBlc1swXSxudWxsXS5jb25jYXQoYXJnVHlwZXMuc2xpY2UoMSkpO3ZhciBmdW5jPWNyYWZ0SW52b2tlckZ1bmN0aW9uKGh1bWFuTmFtZSxpbnZva2VyQXJnc0FycmF5LG51bGwscmF3SW52b2tlcixmbik7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7cHJvdG9bbWV0aG9kTmFtZV09ZnVuY31lbHNle3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGVbYXJnQ291bnQtMV09ZnVuY31yZXR1cm5bXX0pKTtyZXR1cm5bXX0pKX1mdW5jdGlvbiBfX2VtYmluZF9jcmVhdGVfaW5oZXJpdGluZ19jb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvck5hbWUsd3JhcHBlclR5cGUscHJvcGVydGllcyl7Y29uc3RydWN0b3JOYW1lPXJlYWRMYXRpbjFTdHJpbmcoY29uc3RydWN0b3JOYW1lKTt3cmFwcGVyVHlwZT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUod3JhcHBlclR5cGUsIndyYXBwZXIiKTtwcm9wZXJ0aWVzPXJlcXVpcmVIYW5kbGUocHJvcGVydGllcyk7dmFyIGFycmF5U2xpY2U9W10uc2xpY2U7dmFyIHJlZ2lzdGVyZWRDbGFzcz13cmFwcGVyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHdyYXBwZXJQcm90b3R5cGU9cmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBiYXNlQ2xhc3M9cmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzczt2YXIgYmFzZUNsYXNzUHJvdG90eXBlPWJhc2VDbGFzcy5pbnN0YW5jZVByb3RvdHlwZTt2YXIgYmFzZUNvbnN0cnVjdG9yPXJlZ2lzdGVyZWRDbGFzcy5iYXNlQ2xhc3MuY29uc3RydWN0b3I7dmFyIGN0b3I9Y3JlYXRlTmFtZWRGdW5jdGlvbihjb25zdHJ1Y3Rvck5hbWUsKGZ1bmN0aW9uKCl7cmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcy5wdXJlVmlydHVhbEZ1bmN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbihuYW1lKXtpZih0aGlzW25hbWVdPT09YmFzZUNsYXNzUHJvdG90eXBlW25hbWVdKXt0aHJvdyBuZXcgUHVyZVZpcnR1YWxFcnJvcigiUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uICIrbmFtZSsiIG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gSmF2YVNjcmlwdCIpfX0pLmJpbmQodGhpcykpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJfX3BhcmVudCIse3ZhbHVlOndyYXBwZXJQcm90b3R5cGV9KTt0aGlzLl9fY29uc3RydWN0LmFwcGx5KHRoaXMsYXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cykpfSkpO3dyYXBwZXJQcm90b3R5cGUuX19jb25zdHJ1Y3Q9ZnVuY3Rpb24gX19jb25zdHJ1Y3QoKXtpZih0aGlzPT09d3JhcHBlclByb3RvdHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3MgY29ycmVjdCAndGhpcycgdG8gX19jb25zdHJ1Y3QiKX12YXIgaW5uZXI9YmFzZUNvbnN0cnVjdG9yLmltcGxlbWVudC5hcHBseSh1bmRlZmluZWQsW3RoaXNdLmNvbmNhdChhcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKSkpO3ZhciAkJD1pbm5lci4kJDtpbm5lci5ub3RpZnlPbkRlc3RydWN0aW9uKCk7JCQucHJlc2VydmVQb2ludGVyT25EZWxldGU9dHJ1ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiJCQiLHt2YWx1ZTokJH0pO3JlZ2lzdGVySW5oZXJpdGVkSW5zdGFuY2UocmVnaXN0ZXJlZENsYXNzLCQkLnB0cix0aGlzKX07d3JhcHBlclByb3RvdHlwZS5fX2Rlc3RydWN0PWZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKXtpZih0aGlzPT09d3JhcHBlclByb3RvdHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoIlBhc3MgY29ycmVjdCAndGhpcycgdG8gX19kZXN0cnVjdCIpfXVucmVnaXN0ZXJJbmhlcml0ZWRJbnN0YW5jZShyZWdpc3RlcmVkQ2xhc3MsdGhpcy4kJC5wdHIpfTtjdG9yLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHdyYXBwZXJQcm90b3R5cGUpO2Zvcih2YXIgcCBpbiBwcm9wZXJ0aWVzKXtjdG9yLnByb3RvdHlwZVtwXT1wcm9wZXJ0aWVzW3BdfXJldHVybiBfX2VtdmFsX3JlZ2lzdGVyKGN0b3IpfXZhciBjaGFyXzA9IjAiLmNoYXJDb2RlQXQoMCk7dmFyIGNoYXJfOT0iOSIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBtYWtlTGVnYWxGdW5jdGlvbk5hbWUobmFtZSl7bmFtZT1uYW1lLnJlcGxhY2UoL1teYS16QS1aMC05X10vZywiJCIpO3ZhciBmPW5hbWUuY2hhckNvZGVBdCgwKTtpZihmPj1jaGFyXzAmJmY8PWNoYXJfOSl7cmV0dXJuIl8iK25hbWV9ZWxzZXtyZXR1cm4gbmFtZX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc21hcnRfcHRyKHJhd1R5cGUscmF3UG9pbnRlZVR5cGUsbmFtZSxzaGFyaW5nUG9saWN5LGdldFBvaW50ZWVTaWduYXR1cmUscmF3R2V0UG9pbnRlZSxjb25zdHJ1Y3RvclNpZ25hdHVyZSxyYXdDb25zdHJ1Y3RvcixzaGFyZVNpZ25hdHVyZSxyYXdTaGFyZSxkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3Ipe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyYXdHZXRQb2ludGVlPXJlcXVpcmVGdW5jdGlvbihnZXRQb2ludGVlU2lnbmF0dXJlLHJhd0dldFBvaW50ZWUpO3Jhd0NvbnN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihjb25zdHJ1Y3RvclNpZ25hdHVyZSxyYXdDb25zdHJ1Y3Rvcik7cmF3U2hhcmU9cmVxdWlyZUZ1bmN0aW9uKHNoYXJlU2lnbmF0dXJlLHJhd1NoYXJlKTtyYXdEZXN0cnVjdG9yPXJlcXVpcmVGdW5jdGlvbihkZXN0cnVjdG9yU2lnbmF0dXJlLHJhd0Rlc3RydWN0b3IpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtyYXdUeXBlXSxbcmF3UG9pbnRlZVR5cGVdLChmdW5jdGlvbihwb2ludGVlVHlwZSl7cG9pbnRlZVR5cGU9cG9pbnRlZVR5cGVbMF07dmFyIHJlZ2lzdGVyZWRQb2ludGVyPW5ldyBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHBvaW50ZWVUeXBlLnJlZ2lzdGVyZWRDbGFzcyxmYWxzZSxmYWxzZSx0cnVlLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKTtyZXR1cm5bcmVnaXN0ZXJlZFBvaW50ZXJdfSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2VudW0ocmF3VHlwZSxuYW1lLHNpemUsaXNTaWduZWQpe3ZhciBzaGlmdD1nZXRTaGlmdEZyb21TaXplKHNpemUpO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtmdW5jdGlvbiBjb25zdHJ1Y3Rvcigpe31jb25zdHJ1Y3Rvci52YWx1ZXM9e307cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSxjb25zdHJ1Y3Rvcjpjb25zdHJ1Y3RvciwiZnJvbVdpcmVUeXBlIjooZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IudmFsdWVzW2NdfSksInRvV2lyZVR5cGUiOihmdW5jdGlvbihkZXN0cnVjdG9ycyxjKXtyZXR1cm4gYy52YWx1ZX0pLCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlcihuYW1lLHNoaWZ0LGlzU2lnbmVkKSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLGNvbnN0cnVjdG9yKX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9lbnVtX3ZhbHVlKHJhd0VudW1UeXBlLG5hbWUsZW51bVZhbHVlKXt2YXIgZW51bVR5cGU9cmVxdWlyZVJlZ2lzdGVyZWRUeXBlKHJhd0VudW1UeXBlLCJlbnVtIik7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3ZhciBFbnVtPWVudW1UeXBlLmNvbnN0cnVjdG9yO3ZhciBWYWx1ZT1PYmplY3QuY3JlYXRlKGVudW1UeXBlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx7dmFsdWU6e3ZhbHVlOmVudW1WYWx1ZX0sY29uc3RydWN0b3I6e3ZhbHVlOmNyZWF0ZU5hbWVkRnVuY3Rpb24oZW51bVR5cGUubmFtZSsiXyIrbmFtZSwoZnVuY3Rpb24oKXt9KSl9fSk7RW51bS52YWx1ZXNbZW51bVZhbHVlXT1WYWx1ZTtFbnVtW25hbWVdPVZhbHVlfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NvbnN0YW50KG5hbWUsdHlwZSx2YWx1ZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFt0eXBlXSwoZnVuY3Rpb24odHlwZSl7dHlwZT10eXBlWzBdO01vZHVsZVtuYW1lXT10eXBlWyJmcm9tV2lyZVR5cGUiXSh2YWx1ZSk7cmV0dXJuW119KSl9dmFyIE1vZHVsZT1Nb2R1bGV8fHt9O3ZhciBfZW12YWxfaGFuZGxlX2FycmF5PVt7fV07dmFyIF9lbXZhbF9mcmVlX2xpc3Q9W107TW9kdWxlLmNvdW50X2VtdmFsX2hhbmRsZXM9KGZ1bmN0aW9uKCl7dmFyIGNvdW50PTA7Zm9yKHZhciBpPTE7aTxfZW12YWxfaGFuZGxlX2FycmF5Lmxlbmd0aDsrK2kpe2lmKF9lbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpeysrY291bnR9fXJldHVybiBjb3VudH0pO01vZHVsZS5nZXRfZmlyc3RfZW12YWw9KGZ1bmN0aW9uKCl7Zm9yKHZhciBpPTE7aTxfZW12YWxfaGFuZGxlX2FycmF5Lmxlbmd0aDsrK2kpe2lmKF9lbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpe3JldHVybiBfZW12YWxfaGFuZGxlX2FycmF5W2ldfX1yZXR1cm4gbnVsbH0pO3ZhciBfZW12YWxfc3ltYm9scz17fTtmdW5jdGlvbiBfX2VtdmFsX3JlZ2lzdGVyX3N5bWJvbChhZGRyZXNzKXtfZW12YWxfc3ltYm9sc1thZGRyZXNzXT1yZWFkTGF0aW4xU3RyaW5nKGFkZHJlc3MpfWZ1bmN0aW9uIGdldFN0cmluZ09yU3ltYm9sKGFkZHJlc3Mpe3ZhciBzeW1ib2w9X2VtdmFsX3N5bWJvbHNbYWRkcmVzc107aWYoc3ltYm9sPT09dW5kZWZpbmVkKXtyZXR1cm4gcmVhZExhdGluMVN0cmluZyhhZGRyZXNzKX1lbHNle3JldHVybiBzeW1ib2x9fWZ1bmN0aW9uIHJlcXVpcmVIYW5kbGUoaGFuZGxlKXtpZighaGFuZGxlKXt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IHVzZSBkZWxldGVkIHZhbC4gaGFuZGxlID0gIitoYW5kbGUpfXJldHVybiBfZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV0udmFsdWV9ZnVuY3Rpb24gX19lbXZhbF9yZWdpc3Rlcih2YWx1ZSl7dmFyIGhhbmRsZT1fZW12YWxfZnJlZV9saXN0Lmxlbmd0aD9fZW12YWxfZnJlZV9saXN0LnBvcCgpOl9lbXZhbF9oYW5kbGVfYXJyYXkubGVuZ3RoO19lbXZhbF9oYW5kbGVfYXJyYXlbaGFuZGxlXT17cmVmY291bnQ6MSx2YWx1ZTp2YWx1ZX07cmV0dXJuIGhhbmRsZX1mdW5jdGlvbiBfX2VtdmFsX2luY3JlZihoYW5kbGUpe2lmKGhhbmRsZSl7X2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50Kz0xfX1mdW5jdGlvbiBfX2VtdmFsX2RlY3JlZihoYW5kbGUpe2lmKGhhbmRsZSYmMD09PS0tX2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50KXtfZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV09dW5kZWZpbmVkO19lbXZhbF9mcmVlX2xpc3QucHVzaChoYW5kbGUpfX1mdW5jdGlvbiBfX2VtdmFsX3J1bl9kZXN0cnVjdG9ycyhoYW5kbGUpe3ZhciBkZXN0cnVjdG9ycz1fZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV0udmFsdWU7cnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpO19fZW12YWxfZGVjcmVmKGhhbmRsZSl9ZnVuY3Rpb24gX19lbXZhbF9uZXdfYXJyYXkoKXtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihbXSl9ZnVuY3Rpb24gX19lbXZhbF9uZXdfb2JqZWN0KCl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIoe30pfWZ1bmN0aW9uIF9fZW12YWxfdW5kZWZpbmVkKCl7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodW5kZWZpbmVkKX1mdW5jdGlvbiBfX2VtdmFsX251bGwoKXtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihudWxsKX1mdW5jdGlvbiBfX2VtdmFsX25ld19jc3RyaW5nKHYpe3JldHVybiBfX2VtdmFsX3JlZ2lzdGVyKGdldFN0cmluZ09yU3ltYm9sKHYpKX1mdW5jdGlvbiBfX2VtdmFsX3Rha2VfdmFsdWUodHlwZSxhcmd2KXt0eXBlPXJlcXVpcmVSZWdpc3RlcmVkVHlwZSh0eXBlLCJfZW12YWxfdGFrZV92YWx1ZSIpO3ZhciB2PXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJndik7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIodil9dmFyIF9fbmV3ZXJzPXt9O2Z1bmN0aW9uIGNyYWZ0RW12YWxBbGxvY2F0b3IoYXJnQ291bnQpe3ZhciBhcmdzTGlzdD0iIjtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7YXJnc0xpc3QrPShpIT09MD8iLCAiOiIiKSsiYXJnIitpfXZhciBmdW5jdGlvbkJvZHk9InJldHVybiBmdW5jdGlvbiBlbXZhbF9hbGxvY2F0b3JfIithcmdDb3VudCsiKGNvbnN0cnVjdG9yLCBhcmdUeXBlcywgYXJncykge1xuIjtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7ZnVuY3Rpb25Cb2R5Kz0idmFyIGFyZ1R5cGUiK2krIiA9IHJlcXVpcmVSZWdpc3RlcmVkVHlwZShIRUFQMzJbKGFyZ1R5cGVzID4+IDIpICsgIitpKyddLCAicGFyYW1ldGVyICcraSsnIik7XG4nKyJ2YXIgYXJnIitpKyIgPSBhcmdUeXBlIitpKyIucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyk7XG4iKyJhcmdzICs9IGFyZ1R5cGUiK2krIi5hcmdQYWNrQWR2YW5jZTtcbiJ9ZnVuY3Rpb25Cb2R5Kz0idmFyIG9iaiA9IG5ldyBjb25zdHJ1Y3RvcigiK2FyZ3NMaXN0KyIpO1xuIisicmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIob2JqKTtcbiIrIn1cbiI7cmV0dXJuKG5ldyBGdW5jdGlvbigicmVxdWlyZVJlZ2lzdGVyZWRUeXBlIiwiSEVBUDMyIiwiX19lbXZhbF9yZWdpc3RlciIsZnVuY3Rpb25Cb2R5KSkocmVxdWlyZVJlZ2lzdGVyZWRUeXBlLEhFQVAzMixfX2VtdmFsX3JlZ2lzdGVyKX1mdW5jdGlvbiBfX2VtdmFsX25ldyhoYW5kbGUsYXJnQ291bnQsYXJnVHlwZXMsYXJncyl7aGFuZGxlPXJlcXVpcmVIYW5kbGUoaGFuZGxlKTt2YXIgbmV3ZXI9X19uZXdlcnNbYXJnQ291bnRdO2lmKCFuZXdlcil7bmV3ZXI9Y3JhZnRFbXZhbEFsbG9jYXRvcihhcmdDb3VudCk7X19uZXdlcnNbYXJnQ291bnRdPW5ld2VyfXJldHVybiBuZXdlcihoYW5kbGUsYXJnVHlwZXMsYXJncyl9dmFyIGdsb2JhbD0oZnVuY3Rpb24oKXtyZXR1cm4gRnVuY3Rpb259KSgpKCJyZXR1cm4gdGhpcyIpKCk7ZnVuY3Rpb24gX19lbXZhbF9nZXRfZ2xvYmFsKG5hbWUpe25hbWU9Z2V0U3RyaW5nT3JTeW1ib2wobmFtZSk7cmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIoZ2xvYmFsW25hbWVdKX1mdW5jdGlvbiBfX2VtdmFsX2dldF9tb2R1bGVfcHJvcGVydHkobmFtZSl7bmFtZT1nZXRTdHJpbmdPclN5bWJvbChuYW1lKTtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihNb2R1bGVbbmFtZV0pfWZ1bmN0aW9uIF9fZW12YWxfZ2V0X3Byb3BlcnR5KGhhbmRsZSxrZXkpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7a2V5PXJlcXVpcmVIYW5kbGUoa2V5KTtyZXR1cm4gX19lbXZhbF9yZWdpc3RlcihoYW5kbGVba2V5XSl9ZnVuY3Rpb24gX19lbXZhbF9zZXRfcHJvcGVydHkoaGFuZGxlLGtleSx2YWx1ZSl7aGFuZGxlPXJlcXVpcmVIYW5kbGUoaGFuZGxlKTtrZXk9cmVxdWlyZUhhbmRsZShrZXkpO3ZhbHVlPXJlcXVpcmVIYW5kbGUodmFsdWUpO2hhbmRsZVtrZXldPXZhbHVlfWZ1bmN0aW9uIF9fZW12YWxfYXMoaGFuZGxlLHJldHVyblR5cGUsZGVzdHJ1Y3RvcnNSZWYpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7cmV0dXJuVHlwZT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmV0dXJuVHlwZSwiZW12YWw6OmFzIik7dmFyIGRlc3RydWN0b3JzPVtdO3ZhciByZD1fX2VtdmFsX3JlZ2lzdGVyKGRlc3RydWN0b3JzKTtIRUFQMzJbZGVzdHJ1Y3RvcnNSZWY+PjJdPXJkO3JldHVybiByZXR1cm5UeXBlWyJ0b1dpcmVUeXBlIl0oZGVzdHJ1Y3RvcnMsaGFuZGxlKX1mdW5jdGlvbiBfX2VtdmFsX2NhbGwoaGFuZGxlLGFyZ0NvdW50LGFyZ1R5cGVzLGFyZ3Ype2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7dmFyIHR5cGVzPWxvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgYXJncz1uZXcgQXJyYXkoYXJnQ291bnQpO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQ7KytpKXt2YXIgdHlwZT10eXBlc1tpXTthcmdzW2ldPXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJndik7YXJndis9dHlwZS5hcmdQYWNrQWR2YW5jZX12YXIgcnY9aGFuZGxlLmFwcGx5KHVuZGVmaW5lZCxhcmdzKTtyZXR1cm4gX19lbXZhbF9yZWdpc3Rlcihydil9ZnVuY3Rpb24gbG9va3VwVHlwZXMoYXJnQ291bnQsYXJnVHlwZXMsYXJnV2lyZVR5cGVzKXt2YXIgYT1uZXcgQXJyYXkoYXJnQ291bnQpO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQ7KytpKXthW2ldPXJlcXVpcmVSZWdpc3RlcmVkVHlwZShIRUFQMzJbKGFyZ1R5cGVzPj4yKStpXSwicGFyYW1ldGVyICIraSl9cmV0dXJuIGF9ZnVuY3Rpb24gYWxsb2NhdGVEZXN0cnVjdG9ycyhkZXN0cnVjdG9yc1JlZil7dmFyIGRlc3RydWN0b3JzPVtdO0hFQVAzMltkZXN0cnVjdG9yc1JlZj4+Ml09X19lbXZhbF9yZWdpc3RlcihkZXN0cnVjdG9ycyk7cmV0dXJuIGRlc3RydWN0b3JzfXZhciBtZXRob2RDYWxsZXJzPVt1bmRlZmluZWRdO2Z1bmN0aW9uIGFkZE1ldGhvZENhbGxlcihjYWxsZXIpe3ZhciBpZD1tZXRob2RDYWxsZXJzLmxlbmd0aDttZXRob2RDYWxsZXJzLnB1c2goY2FsbGVyKTtyZXR1cm4gaWR9ZnVuY3Rpb24gX19lbXZhbF9nZXRfbWV0aG9kX2NhbGxlcihhcmdDb3VudCxhcmdUeXBlcyl7dmFyIHR5cGVzPWxvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgcmV0VHlwZT10eXBlc1swXTt2YXIgc2lnbmF0dXJlTmFtZT1yZXRUeXBlLm5hbWUrIl8kIit0eXBlcy5zbGljZSgxKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWV9KSkuam9pbigiXyIpKyIkIjt2YXIgcGFyYW1zPVsicmV0VHlwZSJdO3ZhciBhcmdzPVtyZXRUeXBlXTt2YXIgYXJnc0xpc3Q9IiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7YXJnc0xpc3QrPShpIT09MD8iLCAiOiIiKSsiYXJnIitpO3BhcmFtcy5wdXNoKCJhcmdUeXBlIitpKTthcmdzLnB1c2godHlwZXNbMStpXSl9dmFyIGZ1bmN0aW9uQm9keT0icmV0dXJuIGZ1bmN0aW9uIChoYW5kbGUsIG5hbWUsIGRlc3RydWN0b3JzLCBhcmdzKSB7XG4iO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMTsrK2kpe2Z1bmN0aW9uQm9keSs9IiAgICB2YXIgYXJnIitpKyIgPSBhcmdUeXBlIitpKyIucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyk7XG4iKyIgICAgYXJncyArPSBhcmdUeXBlIitpKyIuYXJnUGFja0FkdmFuY2U7XG4ifWZ1bmN0aW9uQm9keSs9IiAgICB2YXIgcnYgPSBoYW5kbGVbbmFtZV0oIithcmdzTGlzdCsiKTtcbiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7aWYodHlwZXNbaSsxXVsiZGVsZXRlT2JqZWN0Il0pe2Z1bmN0aW9uQm9keSs9IiAgICBhcmdUeXBlIitpKyIuZGVsZXRlT2JqZWN0KGFyZyIraSsiKTtcbiJ9fWZ1bmN0aW9uQm9keSs9IiAgICByZXR1cm4gcmV0VHlwZS50b1dpcmVUeXBlKGRlc3RydWN0b3JzLCBydik7XG4iKyJ9O1xuIjtwYXJhbXMucHVzaChmdW5jdGlvbkJvZHkpO3ZhciBpbnZva2VyRnVuY3Rpb249bmV3XyhGdW5jdGlvbixwYXJhbXMpLmFwcGx5KG51bGwsYXJncyk7cmV0dXJuIGFkZE1ldGhvZENhbGxlcihjcmVhdGVOYW1lZEZ1bmN0aW9uKHNpZ25hdHVyZU5hbWUsaW52b2tlckZ1bmN0aW9uKSl9ZnVuY3Rpb24gX19lbXZhbF9jYWxsX21ldGhvZChjYWxsZXIsaGFuZGxlLG1ldGhvZE5hbWUsZGVzdHJ1Y3RvcnNSZWYsYXJncyl7Y2FsbGVyPW1ldGhvZENhbGxlcnNbY2FsbGVyXTtoYW5kbGU9cmVxdWlyZUhhbmRsZShoYW5kbGUpO21ldGhvZE5hbWU9Z2V0U3RyaW5nT3JTeW1ib2wobWV0aG9kTmFtZSk7cmV0dXJuIGNhbGxlcihoYW5kbGUsbWV0aG9kTmFtZSxhbGxvY2F0ZURlc3RydWN0b3JzKGRlc3RydWN0b3JzUmVmKSxhcmdzKX1mdW5jdGlvbiBfX2VtdmFsX2hhc19mdW5jdGlvbihoYW5kbGUsbmFtZSxjbGFzc1R5cGUpe2hhbmRsZT1yZXF1aXJlSGFuZGxlKGhhbmRsZSk7bmFtZT1nZXRTdHJpbmdPclN5bWJvbChuYW1lKTtjbGFzc1R5cGU9cmVxdWlyZVJlZ2lzdGVyZWRUeXBlKGNsYXNzVHlwZSwiY2xhc3Mgd3JhcHBlciBmaWx0ZXIiKTt2YXIgZmlsdGVyPWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGVbbmFtZV07cmV0dXJuIGhhbmRsZVtuYW1lXWluc3RhbmNlb2YgRnVuY3Rpb24mJihmaWx0ZXI9PT11bmRlZmluZWR8fGhhbmRsZVtuYW1lXSE9PWZpbHRlcil9ZnVuY3Rpb24gX19lbXZhbF90eXBlb2YoaGFuZGxlKXtoYW5kbGU9cmVxdWlyZUhhbmRsZShoYW5kbGUpO3JldHVybiBfX2VtdmFsX3JlZ2lzdGVyKHR5cGVvZiBoYW5kbGUpfWlmKE1vZHVsZVsicHJlSW5pdCJdKXtpZih0eXBlb2YgTW9kdWxlWyJwcmVJbml0Il09PSJmdW5jdGlvbiIpTW9kdWxlWyJwcmVJbml0Il09W01vZHVsZVsicHJlSW5pdCJdXTt3aGlsZShNb2R1bGVbInByZUluaXQiXS5sZW5ndGg+MCl7TW9kdWxlWyJwcmVJbml0Il0ucG9wKCkoKX19dmFyIHNob3VsZFJ1bk5vdz10cnVlO2lmKE1vZHVsZVsibm9Jbml0aWFsUnVuIl0pe3Nob3VsZFJ1bk5vdz1mYWxzZX1ydW4oKQoKCgoKLy8gbGF6LWxvYWRlci13b3JrZXIuanMKLy8KCi8vaW1wb3J0U2NyaXB0cygnbGF6LXBlcmYuanMnKTsKCnZhciBpbnN0YW5jZSA9IG51bGw7IC8vIGxhei1wZXJmIGluc3RhbmNlCgpmdW5jdGlvbiByZWFkQXMoYnVmLCBUeXBlLCBvZmZzZXQsIGNvdW50KSB7Cgljb3VudCA9IChjb3VudCA9PT0gdW5kZWZpbmVkIHx8IGNvdW50ID09PSAwID8gMSA6IGNvdW50KTsKCXZhciBzdWIgPSBidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBUeXBlLkJZVEVTX1BFUl9FTEVNRU5UICogY291bnQpOwoKCXZhciByID0gbmV3IFR5cGUoc3ViKTsKCWlmIChjb3VudCA9PT0gdW5kZWZpbmVkIHx8IGNvdW50ID09PSAxKQoJCXJldHVybiByWzBdOwoKCXZhciByZXQgPSBbXTsKCWZvciAodmFyIGkgPSAwIDsgaSA8IGNvdW50IDsgaSArKykgewoJCXJldC5wdXNoKHJbaV0pOwoJfQoKCXJldHVybiByZXQ7Cn0KCmZ1bmN0aW9uIHBhcnNlTEFTSGVhZGVyKGFycmF5YnVmZmVyKSB7Cgl2YXIgbyA9IHt9OwoKCW8ucG9pbnRzT2Zmc2V0ID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50MzJBcnJheSwgMzIqMyk7CglvLnBvaW50c0Zvcm1hdElkID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50OEFycmF5LCAzMiozKzgpOwoJby5wb2ludHNTdHJ1Y3RTaXplID0gcmVhZEFzKGFycmF5YnVmZmVyLCBVaW50MTZBcnJheSwgMzIqMys4KzEpOwoJby5wb2ludHNDb3VudCA9IHJlYWRBcyhhcnJheWJ1ZmZlciwgVWludDMyQXJyYXksIDMyKjMgKyAxMSk7CgoKCXZhciBzdGFydCA9IDMyKjMgKyAzNTsKCW8uc2NhbGUgPSByZWFkQXMoYXJyYXlidWZmZXIsIEZsb2F0NjRBcnJheSwgc3RhcnQsIDMpOyBzdGFydCArPSAyNDsgLy8gOCozCglvLm9mZnNldCA9IHJlYWRBcyhhcnJheWJ1ZmZlciwgRmxvYXQ2NEFycmF5LCBzdGFydCwgMyk7IHN0YXJ0ICs9IDI0OwoKCXZhciBib3VuZHMgPSByZWFkQXMoYXJyYXlidWZmZXIsIEZsb2F0NjRBcnJheSwgc3RhcnQsIDYpOyBzdGFydCArPSA0ODsgLy8gOCo2OwoJby5tYXhzID0gW2JvdW5kc1swXSwgYm91bmRzWzJdLCBib3VuZHNbNF1dOwoJby5taW5zID0gW2JvdW5kc1sxXSwgYm91bmRzWzNdLCBib3VuZHNbNV1dOwoKCXJldHVybiBvOwp9CgpmdW5jdGlvbiBoYW5kbGVFdmVudChtc2cpIHsKCXN3aXRjaChtc2cudHlwZSkgewoJCWNhc2UgIm9wZW4iOgoJCQl0cnkgewoJCQkJaW5zdGFuY2UgPSBuZXcgTW9kdWxlLkxBU1ppcCgpOwoJCQkJdmFyIGFiSW50ID0gbmV3IFVpbnQ4QXJyYXkobXNnLmFycmF5YnVmZmVyKTsKCQkJCXZhciBidWYgPSBNb2R1bGUuX21hbGxvYyhtc2cuYXJyYXlidWZmZXIuYnl0ZUxlbmd0aCk7CgoJCQkJaW5zdGFuY2UuYXJyYXlidWZmZXIgPSBtc2cuYXJyYXlidWZmZXI7CgkJCQlpbnN0YW5jZS5idWYgPSBidWY7CgkJCQlNb2R1bGUuSEVBUFU4LnNldChhYkludCwgYnVmKTsKCQkJCWluc3RhbmNlLm9wZW4oYnVmLCBtc2cuYXJyYXlidWZmZXIuYnl0ZUxlbmd0aCk7CgoJCQkJaW5zdGFuY2UucmVhZE9mZnNldCA9IDA7CgoJCQkJcG9zdE1lc3NhZ2UoeyB0eXBlOiAib3BlbiIsIHN0YXR1czogMX0pOwoJCQl9CgkJCWNhdGNoKGUpIHsKCQkJCXBvc3RNZXNzYWdlKHsgdHlwZTogIm9wZW4iLCBzdGF0dXM6IDAsIGRldGFpbHM6IGUgfSk7CgkJCX0KCQkJYnJlYWs7CgoJCWNhc2UgImhlYWRlciI6CgkJCWlmICghaW5zdGFuY2UpCgkJCQl0aHJvdyBuZXcgRXJyb3IoIllvdSBuZWVkIHRvIG9wZW4gdGhlIGZpbGUgYmVmb3JlIHRyeWluZyB0byByZWFkIGhlYWRlciIpOwoKCgoJCQl2YXIgaGVhZGVyID0gcGFyc2VMQVNIZWFkZXIoaW5zdGFuY2UuYXJyYXlidWZmZXIpOwoJCQloZWFkZXIucG9pbnRzRm9ybWF0SWQgJj0gMHgzZjsKCQkJaW5zdGFuY2UuaGVhZGVyID0gaGVhZGVyOwoJCQlwb3N0TWVzc2FnZSh7dHlwZTogImhlYWRlciIsIHN0YXR1czogMSwgaGVhZGVyOiBoZWFkZXJ9KTsKCQkJYnJlYWs7CgoJCWNhc2UgInJlYWQiOgoJCQlpZiAoIWluc3RhbmNlKQoJCQkJdGhyb3cgbmV3IEVycm9yKCJZb3UgbmVlZCB0byBvcGVuIHRoZSBmaWxlIGJlZm9yZSB0cnlpbmcgdG8gcmVhZCBzdHVmZiIpOwoKCQkJdmFyIHN0YXJ0ID0gbXNnLnN0YXJ0LCBjb3VudCA9IG1zZy5jb3VudCwgc2tpcCA9IG1zZy5za2lwOwoJCQl2YXIgbyA9IGluc3RhbmNlOwoKCQkJaWYgKCFvLmhlYWRlcikKCQkJCXRocm93IG5ldyBFcnJvcigiWW91IG5lZWQgdG8gcXVlcnkgaGVhZGVyIGJlZm9yZSByZWFkaW5nLCBJIG1haW50YWluIHN0YXRlIHRoYXQgd2F5LCBzb3JyeSA6KCIpOwoKCQkJdmFyIHBvaW50c1RvUmVhZCA9IE1hdGgubWluKGNvdW50ICogc2tpcCwgby5oZWFkZXIucG9pbnRzQ291bnQgLSBvLnJlYWRPZmZzZXQpOwoJCQl2YXIgYnVmZmVyU2l6ZSA9IE1hdGguY2VpbChwb2ludHNUb1JlYWQgLyBza2lwKTsKCQkJdmFyIHBvaW50c1JlYWQgPSAwOwoKCQkJdmFyIHRoaXNfYnVmID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyU2l6ZSAqIG8uaGVhZGVyLnBvaW50c1N0cnVjdFNpemUpOwoJCQl2YXIgYnVmX3JlYWQgPSBNb2R1bGUuX21hbGxvYyhvLmhlYWRlci5wb2ludHNTdHJ1Y3RTaXplKTsKCQkJZm9yICh2YXIgaSA9IDAgOyBpIDwgcG9pbnRzVG9SZWFkIDsgaSArKykgewoJCQkJby5nZXRQb2ludChidWZfcmVhZCk7CgoJCQkJaWYgKGkgJSBza2lwID09PSAwKSB7CgkJCQkJdmFyIGEgPSBuZXcgVWludDhBcnJheShNb2R1bGUuSEVBUFU4LmJ1ZmZlciwgYnVmX3JlYWQsIG8uaGVhZGVyLnBvaW50c1N0cnVjdFNpemUpOwoJCQkJCXRoaXNfYnVmLnNldChhLCBwb2ludHNSZWFkICogby5oZWFkZXIucG9pbnRzU3RydWN0U2l6ZSwgby5oZWFkZXIucG9pbnRzU3RydWN0U2l6ZSk7CgkJCQkJcG9pbnRzUmVhZCArKzsKCQkJCX0KCgkJCQlvLnJlYWRPZmZzZXQgKys7CgkJCX0KCgkJCXBvc3RNZXNzYWdlKHsKCQkJCXR5cGU6ICdoZWFkZXInLAoJCQkJc3RhdHVzOiAxLAoJCQkJYnVmZmVyOiB0aGlzX2J1Zi5idWZmZXIsCgkJCQljb3VudDogcG9pbnRzUmVhZCwKCQkJCWhhc01vcmVEYXRhOiBvLnJlYWRPZmZzZXQgPCBvLmhlYWRlci5wb2ludHNDb3VudAoJCQl9KTsKCgkJCWJyZWFrOwoKCgkJY2FzZSAiY2xvc2UiOgoJCQlpZiAoaW5zdGFuY2UgIT09IG51bGwpIHsKCQkJCWluc3RhbmNlLmRlbGV0ZSgpOwoJCQkJaW5zdGFuY2UgPSBudWxsOwoJCQl9CgkJCXBvc3RNZXNzYWdlKHsgdHlwZTogImNsb3NlIiwgc3RhdHVzOiAxfSk7CgkJCWJyZWFrOwoJfQp9Cgpvbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewoJdHJ5IHsKCQloYW5kbGVFdmVudChldmVudC5kYXRhKTsKCX0gY2F0Y2goZSkgewoJCXBvc3RNZXNzYWdlKHt0eXBlOiBldmVudC5kYXRhLnR5cGUsIHN0YXR1czogMCwgZGV0YWlsczogZX0pOwoJfQp9OwoKCg==")),Potree.workers.lasdecoder=new Potree.WorkerManager(atob("CgovL3ZhciBwb2ludEZvcm1hdFJlYWRlcnMgPSB7Ci8vCTA6IGZ1bmN0aW9uKGR2KSB7Ci8vCQlyZXR1cm4gewovLwkJCSJwb3NpdGlvbiI6IFsgZHYuZ2V0SW50MzIoMCwgdHJ1ZSksIGR2LmdldEludDMyKDQsIHRydWUpLCBkdi5nZXRJbnQzMig4LCB0cnVlKV0sCi8vCQkJImludGVuc2l0eSI6IGR2LmdldFVpbnQxNigxMiwgdHJ1ZSksCi8vCQkJImNsYXNzaWZpY2F0aW9uIjogZHYuZ2V0VWludDgoMTYsIHRydWUpCi8vCQl9OwovLwl9LAovLwkxOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKQovLwkJfTsKLy8JfSwKLy8JMjogZnVuY3Rpb24oZHYpIHsKLy8JCXJldHVybiB7Ci8vCQkJInBvc2l0aW9uIjogWyBkdi5nZXRJbnQzMigwLCB0cnVlKSwgZHYuZ2V0SW50MzIoNCwgdHJ1ZSksIGR2LmdldEludDMyKDgsIHRydWUpXSwKLy8JCQkiaW50ZW5zaXR5IjogZHYuZ2V0VWludDE2KDEyLCB0cnVlKSwKLy8JCQkiY2xhc3NpZmljYXRpb24iOiBkdi5nZXRVaW50OCgxNiwgdHJ1ZSksCi8vCQkJImNvbG9yIjogW2R2LmdldFVpbnQxNigyMCwgdHJ1ZSksIGR2LmdldFVpbnQxNigyMiwgdHJ1ZSksIGR2LmdldFVpbnQxNigyNCwgdHJ1ZSldCi8vCQl9OwovLwl9LAovLwkzOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKSwKLy8JCQkiY29sb3IiOiBbZHYuZ2V0VWludDE2KDI4LCB0cnVlKSwgZHYuZ2V0VWludDE2KDMwLCB0cnVlKSwgZHYuZ2V0VWludDE2KDMyLCB0cnVlKV0KLy8JCX07Ci8vCX0KLy99OwovLwkKLy8JCi8vIERlY29kZXMgTEFTIHJlY29yZHMgaW50byBwb2ludHMKLy8KLy92YXIgTEFTRGVjb2RlciA9IGZ1bmN0aW9uKGJ1ZmZlciwgcG9pbnRGb3JtYXRJRCwgcG9pbnRTaXplLCBwb2ludHNDb3VudCwgc2NhbGUsIG9mZnNldCkgewovLwl0aGlzLmFycmF5YiA9IGJ1ZmZlcjsKLy8JdGhpcy5kZWNvZGVyID0gcG9pbnRGb3JtYXRSZWFkZXJzW3BvaW50Rm9ybWF0SURdOwovLwl0aGlzLnBvaW50c0NvdW50ID0gcG9pbnRzQ291bnQ7Ci8vCXRoaXMucG9pbnRTaXplID0gcG9pbnRTaXplOwovLwl0aGlzLnNjYWxlID0gc2NhbGU7Ci8vCXRoaXMub2Zmc2V0ID0gb2Zmc2V0OwovL307Ci8vCi8vTEFTRGVjb2Rlci5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbihpbmRleCkgewovLwlpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucG9pbnRzQ291bnQpCi8vCQl0aHJvdyBuZXcgRXJyb3IoIlBvaW50IGluZGV4IG91dCBvZiByYW5nZSIpOwovLwovLwl2YXIgZHYgPSBuZXcgRGF0YVZpZXcodGhpcy5hcnJheWIsIGluZGV4ICogdGhpcy5wb2ludFNpemUsIHRoaXMucG9pbnRTaXplKTsKLy8JcmV0dXJuIHRoaXMuZGVjb2Rlcihkdik7Ci8vfTsKCm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KXsKCXZhciBidWZmZXIgPSBldmVudC5kYXRhLmJ1ZmZlcjsKCXZhciBudW1Qb2ludHMgPSBldmVudC5kYXRhLm51bVBvaW50czsKCXZhciBwb2ludFNpemUgPSBldmVudC5kYXRhLnBvaW50U2l6ZTsKCXZhciBwb2ludEZvcm1hdElEID0gZXZlbnQuZGF0YS5wb2ludEZvcm1hdElEOwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCXZhciBvZmZzZXQgPSBldmVudC5kYXRhLm9mZnNldDsKCXZhciBtaW5zID0gZXZlbnQuZGF0YS5taW5zOwoJdmFyIG1heHMgPSBldmVudC5kYXRhLm1heHM7Cgl2YXIgYmJPZmZzZXQgPSBldmVudC5kYXRhLmJiT2Zmc2V0OwoJCgl2YXIgdGVtcCA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKCXZhciB0ZW1wVWludDggPSBuZXcgVWludDhBcnJheSh0ZW1wKTsKCXZhciB0ZW1wVWludDE2ID0gbmV3IFVpbnQxNkFycmF5KHRlbXApOwoJdmFyIHRlbXBGbG9hdDMyID0gbmV3IEZsb2F0MzJBcnJheSh0ZW1wKTsKCXZhciB0ZW1wSW50MzIgPSBuZXcgSW50MzJBcnJheSh0ZW1wKTsKCXZhciBidWZmZXJWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKCQoJdmFyIHBCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGNCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGlCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KTsKCXZhciBjbEJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBybkJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBwc0J1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzICogMik7CgkKCXZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KHBCdWZmKTsKCXZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkFycmF5KGNCdWZmKTsKCXZhciBpbnRlbnNpdGllcyA9IG5ldyBGbG9hdDMyQXJyYXkoaUJ1ZmYpOwoJdmFyIGNsYXNzaWZpY2F0aW9ucyA9IG5ldyBVaW50OEFycmF5KGNsQnVmZik7Cgl2YXIgcmV0dXJuTnVtYmVycyA9IG5ldyBVaW50OEFycmF5KHJuQnVmZik7Cgl2YXIgcG9pbnRTb3VyY2VJRHMgPSBuZXcgVWludDE2QXJyYXkocHNCdWZmKTsKCXZhciB0aWdodEJvdW5kaW5nQm94ID0gewoJCW1pbjogWyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXSwKCQltYXg6IFsgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZICwgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZICwgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZIF0KCX07CgkKCQoJLy8gdGVtcCBhcnJheXMgc2VlbSB0byBiZSBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIERhdGFWaWV3cwoJLy8gYXQgdGhlIG1vbWVudDogaHR0cDovL2pzcGVyZi5jb20vZGF0YXZpZXctdnMtdGVtcG9yYXJ5LWZsb2F0NjRhcnJheQoJZm9yKHZhciBpID0gMDsgaSA8IG51bVBvaW50czsgaSsrKXsKCQoJCS8vIFBPU0lUSU9OCgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSswXTsKCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzFdOwoJCXRlbXBVaW50OFsyXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMl07CgkJdGVtcFVpbnQ4WzNdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSszXTsKCQl2YXIgeCA9IHRlbXBJbnQzMlswXTsKCQkKCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzRdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrNV07CgkJdGVtcFVpbnQ4WzJdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs2XTsKCQl0ZW1wVWludDhbM10gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzddOwoJCXZhciB5ID0gdGVtcEludDMyWzBdOwoJCQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrOF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs5XTsKCQl0ZW1wVWludDhbMl0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzEwXTsKCQl0ZW1wVWludDhbM10gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzExXTsKCQl2YXIgeiA9IHRlbXBJbnQzMlswXTsKCQkKCQlwb3NpdGlvbnNbMyppKzBdID0geCAqIHNjYWxlWzBdICsgb2Zmc2V0WzBdICsgYmJPZmZzZXRbMF07CgkJcG9zaXRpb25zWzMqaSsxXSA9IHkgKiBzY2FsZVsxXSArIG9mZnNldFsxXSArIGJiT2Zmc2V0WzFdOwoJCXBvc2l0aW9uc1szKmkrMl0gPSB6ICogc2NhbGVbMl0gKyBvZmZzZXRbMl0gKyBiYk9mZnNldFsyXTsKCQkKCQl0aWdodEJvdW5kaW5nQm94Lm1pblswXSA9IE1hdGgubWluKHRpZ2h0Qm91bmRpbmdCb3gubWluWzBdLCBwb3NpdGlvbnNbMyppKzBdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1pblsxXSA9IE1hdGgubWluKHRpZ2h0Qm91bmRpbmdCb3gubWluWzFdLCBwb3NpdGlvbnNbMyppKzFdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1pblsyXSA9IE1hdGgubWluKHRpZ2h0Qm91bmRpbmdCb3gubWluWzJdLCBwb3NpdGlvbnNbMyppKzJdKTsKCQkKCQl0aWdodEJvdW5kaW5nQm94Lm1heFswXSA9IE1hdGgubWF4KHRpZ2h0Qm91bmRpbmdCb3gubWF4WzBdLCBwb3NpdGlvbnNbMyppKzBdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1heFsxXSA9IE1hdGgubWF4KHRpZ2h0Qm91bmRpbmdCb3gubWF4WzFdLCBwb3NpdGlvbnNbMyppKzFdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1heFsyXSA9IE1hdGgubWF4KHRpZ2h0Qm91bmRpbmdCb3gubWF4WzJdLCBwb3NpdGlvbnNbMyppKzJdKTsKCQkKCQkvLyBJTlRFTlNJVFkKCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzEyXTsKCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzEzXTsKCQl2YXIgaW50ZW5zaXR5ID0gdGVtcFVpbnQxNlswXTsKCQlpbnRlbnNpdGllc1tpXSA9IGludGVuc2l0eTsKCQkKCQkvLyBSRVRVUk4gTlVNQkVSLCBzdG9yZWQgaW4gdGhlIGZpcnN0IDMgYml0cwoJCXZhciByZXR1cm5OdW1iZXIgPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzE0XSAmIDc7CgkJcmV0dXJuTnVtYmVyc1tpXSA9IHJldHVybk51bWJlcjsKCQkKCQkvLyBDTEFTU0lGSUNBVElPTgoJCXZhciBjbGFzc2lmaWNhdGlvbiA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTVdOwoJCWNsYXNzaWZpY2F0aW9uc1tpXSA9IGNsYXNzaWZpY2F0aW9uOwoJCQoJCS8vIFBPSU5UIFNPVVJDRSBJRAoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMThdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTldOwoJCXZhciBwb2ludFNvdXJjZUlEID0gdGVtcFVpbnQxNlswXTsKCQlwb2ludFNvdXJjZUlEc1tpXSA9IHBvaW50U291cmNlSUQ7CgkJCgkJLy8gQ09MT1IsIGlmIGF2YWlsYWJsZQoJCWlmKHBvaW50Rm9ybWF0SUQgPT09IDIpewoJCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzIwXTsKCQkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyMV07CgkJCXZhciByID0gdGVtcFVpbnQxNlswXTsKCQkJCgkJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjJdOwoJCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzIzXTsKCQkJdmFyIGcgPSB0ZW1wVWludDE2WzBdOwoJCQkKCQkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyNF07CgkJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjVdOwoJCQl2YXIgYiA9IHRlbXBVaW50MTZbMF07CgkJCQoJCQljb2xvcnNbMyppKzBdID0gciAvIDY1NTM2OwoJCQljb2xvcnNbMyppKzFdID0gZyAvIDY1NTM2OwoJCQljb2xvcnNbMyppKzJdID0gYiAvIDY1NTM2OwoJCX0KCX0KCQoJdmFyIG1lc3NhZ2UgPSB7CgkJcG9zaXRpb246IHBCdWZmLCAKCQljb2xvcjogY0J1ZmYsIAoJCWludGVuc2l0eTogaUJ1ZmYsCgkJY2xhc3NpZmljYXRpb246IGNsQnVmZiwKCQlyZXR1cm5OdW1iZXI6IHJuQnVmZiwKCQlwb2ludFNvdXJjZUlEOiBwc0J1ZmYsCgkJdGlnaHRCb3VuZGluZ0JveDogdGlnaHRCb3VuZGluZ0JveAoJfTsKCQkKCXZhciB0cmFuc2ZlcmFibGVzID0gWwoJCW1lc3NhZ2UucG9zaXRpb24sCgkJbWVzc2FnZS5jb2xvciwgCgkJbWVzc2FnZS5pbnRlbnNpdHksCgkJbWVzc2FnZS5jbGFzc2lmaWNhdGlvbiwKCQltZXNzYWdlLnJldHVybk51bWJlciwKCQltZXNzYWdlLnBvaW50U291cmNlSURdOwoJCQoJcG9zdE1lc3NhZ2UobWVzc2FnZSwgdHJhbnNmZXJhYmxlcyk7Cn0K")); diff --git a/build/js/potree.js b/build/js/potree.js index f08e531c33..9a9a95b9b3 100644 --- a/build/js/potree.js +++ b/build/js/potree.js @@ -59,7 +59,7 @@ Potree.WorkerManager.fromUrls = function(urls){ return new Potree.WorkerManager(code); } -Potree.workers.binaryDecoder = new Potree.WorkerManager(atob("Ci8vIGh0dHA6Ly9qc3BlcmYuY29tL3VpbnQ4YXJyYXktdnMtZGF0YXZpZXczLzMKZnVuY3Rpb24gQ3VzdG9tVmlldyhidWZmZXIpIHsKCXRoaXMuYnVmZmVyID0gYnVmZmVyOwoJdGhpcy51OCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CgkKCXZhciB0bXAgPSBuZXcgQXJyYXlCdWZmZXIoNCk7Cgl2YXIgdG1wZiA9IG5ldyBGbG9hdDMyQXJyYXkodG1wKTsKCXZhciB0bXB1OCA9IG5ldyBVaW50OEFycmF5KHRtcCk7CgkKCXRoaXMuZ2V0VWludDMyID0gZnVuY3Rpb24gKGkpIHsKCQlyZXR1cm4gKHRoaXMudThbaSszXSA8PCAyNCkgfCAodGhpcy51OFtpKzJdIDw8IDE2KSB8ICh0aGlzLnU4W2krMV0gPDwgOCkgfCB0aGlzLnU4W2ldOwoJfQoJCgl0aGlzLmdldFVpbnQxNiA9IGZ1bmN0aW9uIChpKSB7CgkJcmV0dXJuICh0aGlzLnU4W2krMV0gPDwgOCkgfCB0aGlzLnU4W2ldOwoJfQoJCgl0aGlzLmdldEZsb2F0ID0gZnVuY3Rpb24oaSl7CgkJdG1wdThbMF0gPSB0aGlzLnU4W2krMF07CgkJdG1wdThbMV0gPSB0aGlzLnU4W2krMV07CgkJdG1wdThbMl0gPSB0aGlzLnU4W2krMl07CgkJdG1wdThbM10gPSB0aGlzLnU4W2krM107CgkJCgkJcmV0dXJuIHRtcGZbMF07Cgl9CgkKCXRoaXMuZ2V0VWludDggPSBmdW5jdGlvbihpKXsKCQlyZXR1cm4gdGhpcy51OFtpXTsKCX0KfQoKUG90cmVlID0ge307CgoKb25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpewoJdmFyIGJ1ZmZlciA9IGV2ZW50LmRhdGEuYnVmZmVyOwoJdmFyIHBvaW50QXR0cmlidXRlcyA9IGV2ZW50LmRhdGEucG9pbnRBdHRyaWJ1dGVzOwoJdmFyIG51bVBvaW50cyA9IGJ1ZmZlci5ieXRlTGVuZ3RoIC8gcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplOwoJdmFyIGN2ID0gbmV3IEN1c3RvbVZpZXcoYnVmZmVyKTsKCXZhciB2ZXJzaW9uID0gbmV3IFBvdHJlZS5WZXJzaW9uKGV2ZW50LmRhdGEudmVyc2lvbik7Cgl2YXIgbWluID0gZXZlbnQuZGF0YS5taW47Cgl2YXIgbm9kZU9mZnNldCA9IGV2ZW50LmRhdGEub2Zmc2V0OwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCQoJdmFyIGF0dHJpYnV0ZUJ1ZmZlcnMgPSB7fTsKCQoJdmFyIG9mZnNldCA9IDA7Cglmb3IodmFyIGkgPSAwOyBpIDwgcG9pbnRBdHRyaWJ1dGVzLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspewoJCXZhciBwb2ludEF0dHJpYnV0ZSA9IHBvaW50QXR0cmlidXRlcy5hdHRyaWJ1dGVzW2ldOwoJCgkJaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLlBPU0lUSU9OX0NBUlRFU0lBTi5uYW1lKXsKCQkJCgkJCXZhciBidWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KjMpOwoJCQl2YXIgcG9zaXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShidWZmKTsKCQkJCgkJCWZvcih2YXIgaiA9IDA7IGogPCBudW1Qb2ludHM7IGorKyl7CgkJCQlpZih2ZXJzaW9uLm5ld2VyVGhhbigiMS4zIikpewoJCQkJCXBvc2l0aW9uc1szKmorMF0gPSAoY3YuZ2V0VWludDMyKG9mZnNldCArIGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplKzApICogc2NhbGUpICsgbWluWzBdOwoJCQkJCXBvc2l0aW9uc1szKmorMV0gPSAoY3YuZ2V0VWludDMyKG9mZnNldCArIGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplKzQpICogc2NhbGUpICsgbWluWzFdOwoJCQkJCXBvc2l0aW9uc1szKmorMl0gPSAoY3YuZ2V0VWludDMyKG9mZnNldCArIGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplKzgpICogc2NhbGUpICsgbWluWzJdOwoJCQkJfWVsc2V7CgkJCQkJcG9zaXRpb25zWzMqaiswXSA9IGN2LmdldEZsb2F0KGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplKzApICsgbm9kZU9mZnNldFswXTsKCQkJCQlwb3NpdGlvbnNbMypqKzFdID0gY3YuZ2V0RmxvYXQoaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUrNCkgKyBub2RlT2Zmc2V0WzFdOwoJCQkJCXBvc2l0aW9uc1szKmorMl0gPSBjdi5nZXRGbG9hdChqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSs4KSArIG5vZGVPZmZzZXRbMl07CgkJCQl9CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJCQoJCX1lbHNlIGlmKHBvaW50QXR0cmlidXRlLm5hbWUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5DT0xPUl9QQUNLRUQubmFtZSl7CgkJCQoJCQl2YXIgYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcihudW1Qb2ludHMqNCozKTsKCQkJdmFyIGNvbG9ycyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCQoJCQlmb3IodmFyIGogPSAwOyBqIDwgbnVtUG9pbnRzOyBqKyspewoJCQkJY29sb3JzWzMqaiswXSA9IGN2LmdldFVpbnQ4KG9mZnNldCArIGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMCkgLyAyNTU7CgkJCQljb2xvcnNbMypqKzFdID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUgKyAxKSAvIDI1NTsKCQkJCWNvbG9yc1szKmorMl0gPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDIpIC8gMjU1OwoJCQl9CgkJCQoJCQlhdHRyaWJ1dGVCdWZmZXJzW3BvaW50QXR0cmlidXRlLm5hbWVdID0geyBidWZmZXI6IGJ1ZmYsIGF0dHJpYnV0ZTogcG9pbnRBdHRyaWJ1dGV9OwoJCQkKCQl9ZWxzZSBpZihwb2ludEF0dHJpYnV0ZS5uYW1lID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuSU5URU5TSVRZLm5hbWUpewoKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJCQl2YXIgaW50ZW5zaXRpZXMgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmYpOwoJCQkKCQkJZm9yKHZhciBqID0gMDsgaiA8IG51bVBvaW50czsgaisrKXsKCQkJCXZhciBpbnRlbnNpdHkgPSBjdi5nZXRVaW50MTYob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUpOwoJCQkJaW50ZW5zaXRpZXNbal0gPSBpbnRlbnNpdHk7CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJCgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLkNMQVNTSUZJQ0FUSU9OLm5hbWUpewoKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJCQl2YXIgY2xhc3NpZmljYXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShidWZmKTsKCQkJCgkJCWZvcih2YXIgaiA9IDA7IGogPCBudW1Qb2ludHM7IGorKyl7CgkJCQl2YXIgY2xhc3NpZmljYXRpb24gPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSk7CgkJCQljbGFzc2lmaWNhdGlvbnNbal0gPSBjbGFzc2lmaWNhdGlvbjsKCQkJfQoJCQkKCQkJYXR0cmlidXRlQnVmZmVyc1twb2ludEF0dHJpYnV0ZS5uYW1lXSA9IHsgYnVmZmVyOiBidWZmLCBhdHRyaWJ1dGU6IHBvaW50QXR0cmlidXRlfTsKCQkKCQl9ZWxzZSBpZihwb2ludEF0dHJpYnV0ZS5uYW1lID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX1NQSEVSRU1BUFBFRC5uYW1lKXsKCgkJCXZhciBidWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KjMpOwoJCQl2YXIgbm9ybWFscyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCQoJCQlmb3IodmFyIGogPSAwOyBqIDwgbnVtUG9pbnRzOyBqKyspewoJCQkJdmFyIGJ4ID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDApOwoJCQkJdmFyIGJ5ID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDEpOwoJCQkKCQkJCXZhciBleCA9IGJ4IC8gMjU1OwoJCQkJdmFyIGV5ID0gYnkgLyAyNTU7CgkJCQkKCQkJCXZhciBueCA9IGV4ICogMiAtIDE7CgkJCQl2YXIgbnkgPSBleSAqIDIgLSAxOwoJCQkJdmFyIG56ID0gMTsKCQkJCXZhciBudyA9IC0xOwoJCQkJCgkJCQl2YXIgbCA9IChueCAqICgtbngpKSArIChueSAqICgtbnkpKSArIChueiAqICgtbncpKTsKCQkJCW56ID0gbDsKCQkJCW54ID0gbnggKiBNYXRoLnNxcnQobCk7CgkJCQlueSA9IG55ICogTWF0aC5zcXJ0KGwpOwoJCQkJCgkJCQlueCA9IG54ICogMjsKCQkJCW55ID0gbnkgKiAyOwoJCQkJbnogPSBueiAqIDIgLSAxOwoJCQkJCgkJCQlub3JtYWxzWzMqaiArIDBdID0gbng7CgkJCQlub3JtYWxzWzMqaiArIDFdID0gbnk7CgkJCQlub3JtYWxzWzMqaiArIDJdID0gbno7CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9PQ1QxNi5uYW1lKXsKCQkJCgkJCXZhciBidWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KjMpOwoJCQl2YXIgbm9ybWFscyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCWZvcih2YXIgaiA9IDA7IGogPCBudW1Qb2ludHM7IGorKyl7CgkJCQl2YXIgYnggPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMCk7CgkJCQl2YXIgYnkgPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMSk7CgkJCQkKCQkJCXZhciB1ID0gKGJ4IC8gMjU1KSAqIDIgLSAxOwoJCQkJdmFyIHYgPSAoYnkgLyAyNTUpICogMiAtIDE7CgkJCQkKCQkJCXZhciB6ID0gMSAtIE1hdGguYWJzKHUpIC0gTWF0aC5hYnModik7CgkJCQkKCQkJCWlmKHogPj0gMCl7CgkJCQkJdmFyIHggPSB1OwoJCQkJCXZhciB5ID0gdjsKCQkJCX1lbHNlewoJCQkJCXZhciB4ID0gLSAodi9NYXRoLnNpZ24odikgLSAxKSAvIE1hdGguc2lnbih1KTsKCQkJCQl2YXIgeSA9IC0gKHUvTWF0aC5zaWduKHUpIC0gMSkgLyBNYXRoLnNpZ24odik7CgkJCQl9CgkJCQkKCQkJCXZhciBsZW5ndGggPSBNYXRoLnNxcnQoeCp4ICsgeSp5ICsgeip6KTsKCQkJCXggPSB4IC8gbGVuZ3RoOwoJCQkJeSA9IHkgLyBsZW5ndGg7CgkJCQl6ID0geiAvIGxlbmd0aDsKCQkJCQoJCQkJbm9ybWFsc1szKmogKyAwXSA9IHg7CgkJCQlub3JtYWxzWzMqaiArIDFdID0geTsKCQkJCW5vcm1hbHNbMypqICsgMl0gPSB6OwoJCQl9CgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTC5uYW1lKXsKCQkKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQqMyk7CgkJCXZhciBub3JtYWxzID0gbmV3IEZsb2F0MzJBcnJheShidWZmKTsKCQkJZm9yKHZhciBqID0gMDsgaiA8IG51bVBvaW50czsgaisrKXsKCQkJCXZhciB4ID0gY3YuZ2V0RmxvYXQob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDApOwoJCQkJdmFyIHkgPSBjdi5nZXRGbG9hdChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgNCk7CgkJCQl2YXIgeiA9IGN2LmdldEZsb2F0KG9mZnNldCArIGogKiBwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUgKyA4KTsKCQkJCQoJCQkJbm9ybWFsc1szKmogKyAwXSA9IHg7CgkJCQlub3JtYWxzWzMqaiArIDFdID0geTsKCQkJCW5vcm1hbHNbMypqICsgMl0gPSB6OwoJCQl9CgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfQoJCQoJCW9mZnNldCArPSBwb2ludEF0dHJpYnV0ZS5ieXRlU2l6ZTsKCX0KCQoJdmFyIGluZGljZXMgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJdmFyIGlJbmRpY2VzID0gbmV3IFVpbnQzMkFycmF5KGluZGljZXMpOwoJZm9yKHZhciBpID0gMDsgaSA8IG51bVBvaW50czsgaSsrKXsKCQlpSW5kaWNlc1tpXSA9IGk7Cgl9CgkKCXZhciBtZXNzYWdlID0gewoJCWF0dHJpYnV0ZUJ1ZmZlcnM6IGF0dHJpYnV0ZUJ1ZmZlcnMsCgkJaW5kaWNlczogaW5kaWNlcwoJfTsKCQkKCXZhciB0cmFuc2ZlcmFibGVzID0gW107CgkKCWZvcih2YXIgcHJvcGVydHkgaW4gbWVzc2FnZS5hdHRyaWJ1dGVCdWZmZXJzKXsKCQlpZihtZXNzYWdlLmF0dHJpYnV0ZUJ1ZmZlcnMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKXsKCQkJdHJhbnNmZXJhYmxlcy5wdXNoKG1lc3NhZ2UuYXR0cmlidXRlQnVmZmVyc1twcm9wZXJ0eV0uYnVmZmVyKTsKCQl9Cgl9CgkKCXRyYW5zZmVyYWJsZXMucHVzaChtZXNzYWdlLmluZGljZXMpOwoJCQoJcG9zdE1lc3NhZ2UobWVzc2FnZSwgdHJhbnNmZXJhYmxlcyk7CgkKfTsKUG90cmVlLlZlcnNpb24gPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXRoaXMudmVyc2lvbiA9IHZlcnNpb247Cgl2YXIgdm1MZW5ndGggPSAodmVyc2lvbi5pbmRleE9mKCIuIikgPT09IC0xKSA/IHZlcnNpb24ubGVuZ3RoIDogdmVyc2lvbi5pbmRleE9mKCIuIik7Cgl0aGlzLnZlcnNpb25NYWpvciA9IHBhcnNlSW50KHZlcnNpb24uc3Vic3RyKDAsIHZtTGVuZ3RoKSk7Cgl0aGlzLnZlcnNpb25NaW5vciA9IHBhcnNlSW50KHZlcnNpb24uc3Vic3RyKHZtTGVuZ3RoICsgMSkpOwoJaWYodGhpcy52ZXJzaW9uTWlub3IubGVuZ3RoID09PSAwKXsKCQl0aGlzLnZlcnNpb25NaW5vciA9IDA7Cgl9CgkKfTsKClBvdHJlZS5WZXJzaW9uLnByb3RvdHlwZS5uZXdlclRoYW4gPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXZhciB2ID0gbmV3IFBvdHJlZS5WZXJzaW9uKHZlcnNpb24pOwoJCglpZiggdGhpcy52ZXJzaW9uTWFqb3IgPiB2LnZlcnNpb25NYWpvcil7CgkJcmV0dXJuIHRydWU7Cgl9ZWxzZSBpZiggdGhpcy52ZXJzaW9uTWFqb3IgPT09IHYudmVyc2lvbk1ham9yICYmIHRoaXMudmVyc2lvbk1pbm9yID4gdi52ZXJzaW9uTWlub3IpewoJCXJldHVybiB0cnVlOwoJfWVsc2V7CgkJcmV0dXJuIGZhbHNlOwoJfQp9OwoKUG90cmVlLlZlcnNpb24ucHJvdG90eXBlLmVxdWFsT3JIaWdoZXIgPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXZhciB2ID0gbmV3IFBvdHJlZS5WZXJzaW9uKHZlcnNpb24pOwoJCglpZiggdGhpcy52ZXJzaW9uTWFqb3IgPiB2LnZlcnNpb25NYWpvcil7CgkJcmV0dXJuIHRydWU7Cgl9ZWxzZSBpZiggdGhpcy52ZXJzaW9uTWFqb3IgPT09IHYudmVyc2lvbk1ham9yICYmIHRoaXMudmVyc2lvbk1pbm9yID49IHYudmVyc2lvbk1pbm9yKXsKCQlyZXR1cm4gdHJ1ZTsKCX1lbHNlewoJCXJldHVybiBmYWxzZTsKCX0KfTsKClBvdHJlZS5WZXJzaW9uLnByb3RvdHlwZS51cFRvID0gZnVuY3Rpb24odmVyc2lvbil7CglyZXR1cm4gIXRoaXMubmV3ZXJUaGFuKHZlcnNpb24pOwp9ClBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzID0ge307CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5QT1NJVElPTl9DQVJURVNJQU4gCT0gMDsJLy8gZmxvYXQgeCwgeSwgejsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuQ09MT1JfUEFDS0VECQk9IDE7CS8vIGJ5dGUgciwgZywgYiwgYTsgCUkgPSBbMCwxXQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9GTE9BVFNfMQkJPSAyOwkvLyBmbG9hdCByLCBnLCBiOyAJCUkgPSBbMCwxXQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9GTE9BVFNfMjU1CT0gMzsJLy8gZmxvYXQgciwgZywgYjsgCQlJID0gWzAsMjU1XQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfRkxPQVRTCQk9IDQ7ICAJLy8gZmxvYXQgeCwgeSwgejsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuRklMTEVSCQkJCT0gNTsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuSU5URU5TSVRZCQkJPSA2OwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DTEFTU0lGSUNBVElPTgkJPSA3OwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfU1BIRVJFTUFQUEVECT0gODsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuTk9STUFMX09DVDE2CQk9IDk7ClBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTAkJCQk9IDEwOwoKLyoqCiAqIFNvbWUgdHlwZXMgb2YgcG9zc2libGUgcG9pbnQgYXR0cmlidXRlIGRhdGEgZm9ybWF0cwogKiAKICogQGNsYXNzCiAqLwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcyA9IHsKCURBVEFfVFlQRV9ET1VCTEUJOiB7b3JkaW5hbCA6IDAsIHNpemU6IDh9LAoJREFUQV9UWVBFX0ZMT0FUCQk6IHtvcmRpbmFsIDogMSwgc2l6ZTogNH0sCglEQVRBX1RZUEVfSU5UOAkJOiB7b3JkaW5hbCA6IDIsIHNpemU6IDF9LAoJREFUQV9UWVBFX1VJTlQ4CQk6IHtvcmRpbmFsIDogMywgc2l6ZTogMX0sCglEQVRBX1RZUEVfSU5UMTYJCToge29yZGluYWwgOiA0LCBzaXplOiAyfSwKCURBVEFfVFlQRV9VSU5UMTYJOiB7b3JkaW5hbCA6IDUsIHNpemU6IDJ9LAoJREFUQV9UWVBFX0lOVDMyCQk6IHtvcmRpbmFsIDogNiwgc2l6ZTogNH0sCglEQVRBX1RZUEVfVUlOVDMyCToge29yZGluYWwgOiA3LCBzaXplOiA0fSwKCURBVEFfVFlQRV9JTlQ2NAkJOiB7b3JkaW5hbCA6IDgsIHNpemU6IDh9LAoJREFUQV9UWVBFX1VJTlQ2NAk6IHtvcmRpbmFsIDogOSwgc2l6ZTogOH0KfTsKCnZhciBpID0gMDsKZm9yKHZhciBvYmogaW4gUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMpewoJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXNbaV0gPSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlc1tvYmpdOwoJaSsrOwp9CgovKioKICogQSBzaW5nbGUgcG9pbnQgYXR0cmlidXRlIHN1Y2ggYXMgY29sb3Ivbm9ybWFsLy4uIGFuZCBpdHMgZGF0YSBmb3JtYXQvbnVtYmVyIG9mIGVsZW1lbnRzLy4uLiAKICogCiAqIEBjbGFzcwogKiBAcGFyYW0gbmFtZSAKICogQHBhcmFtIHR5cGUKICogQHBhcmFtIHNpemUKICogQHJldHVybnMKICovClBvdHJlZS5Qb2ludEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUsIHR5cGUsIG51bUVsZW1lbnRzKXsKCXRoaXMubmFtZSA9IG5hbWU7Cgl0aGlzLnR5cGUgPSB0eXBlOyAKCXRoaXMubnVtRWxlbWVudHMgPSBudW1FbGVtZW50czsKCXRoaXMuYnl0ZVNpemUgPSB0aGlzLm51bUVsZW1lbnRzICogdGhpcy50eXBlLnNpemU7Cn0KClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5QT1NJVElPTl9DQVJURVNJQU4gPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLlBPU0lUSU9OX0NBUlRFU0lBTiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfRkxPQVQsIDMpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLlJHQkFfUEFDS0VEID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9QQUNLRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0lOVDgsIDQpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLkNPTE9SX1BBQ0tFRCA9IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5SR0JBX1BBQ0tFRDsKClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5SR0JfUEFDS0VEID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9QQUNLRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0lOVDgsIDMpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9GTE9BVFMgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTF9GTE9BVFMsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0ZMT0FULCAzKTsKClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5GSUxMRVJfMUIgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLkZJTExFUiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfVUlOVDgsIDEpOwoJCQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuSU5URU5TSVRZID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5JTlRFTlNJVFksCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQxNiwgMSk7CQkKCQkKUG90cmVlLlBvaW50QXR0cmlidXRlLkNMQVNTSUZJQ0FUSU9OID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DTEFTU0lGSUNBVElPTiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfVUlOVDgsIDEpOwkKCQkKUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9TUEhFUkVNQVBQRUQgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTF9TUEhFUkVNQVBQRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQ4LCAyKTsJCQoJCQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX09DVDE2ID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfT0NUMTYsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQ4LCAyKTsJCgkJClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5OT1JNQUwgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTCwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfRkxPQVQsIDMpOwoKLyoqCiAqIE9yZGVyZWQgbGlzdCBvZiBQb2ludEF0dHJpYnV0ZXMgdXNlZCB0byBpZGVudGlmeSBob3cgcG9pbnRzIGFyZSBhbGlnbmVkIGluIGEgYnVmZmVyLgogKiAKICogQGNsYXNzCiAqIAogKi8KUG90cmVlLlBvaW50QXR0cmlidXRlcyA9IGZ1bmN0aW9uKHBvaW50QXR0cmlidXRlcyl7Cgl0aGlzLmF0dHJpYnV0ZXMgPSBuZXcgQXJyYXkoKTsKCXRoaXMuYnl0ZVNpemUgPSAwOwoJdGhpcy5zaXplID0gMDsKCQoJaWYocG9pbnRBdHRyaWJ1dGVzICE9IG51bGwpewkKCQlmb3IodmFyIGkgPSAwOyBpIDwgcG9pbnRBdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKXsKCQkJdmFyIHBvaW50QXR0cmlidXRlTmFtZSA9IHBvaW50QXR0cmlidXRlc1tpXTsKCQkJdmFyIHBvaW50QXR0cmlidXRlID0gUG90cmVlLlBvaW50QXR0cmlidXRlW3BvaW50QXR0cmlidXRlTmFtZV07CgkJCXRoaXMuYXR0cmlidXRlcy5wdXNoKHBvaW50QXR0cmlidXRlKTsKCQkJdGhpcy5ieXRlU2l6ZSArPSBwb2ludEF0dHJpYnV0ZS5ieXRlU2l6ZTsKCQkJdGhpcy5zaXplKys7CgkJfQoJfQp9CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVzLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihwb2ludEF0dHJpYnV0ZSl7Cgl0aGlzLmF0dHJpYnV0ZXMucHVzaChwb2ludEF0dHJpYnV0ZSk7Cgl0aGlzLmJ5dGVTaXplICs9IHBvaW50QXR0cmlidXRlLmJ5dGVTaXplOwoJdGhpcy5zaXplKys7Cn07CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVzLnByb3RvdHlwZS5oYXNDb2xvcnMgPSBmdW5jdGlvbigpewoJZm9yKHZhciBuYW1lIGluIHRoaXMuYXR0cmlidXRlcyl7CgkJdmFyIHBvaW50QXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzW25hbWVdOwoJCWlmKHBvaW50QXR0cmlidXRlLm5hbWUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLkNPTE9SX1BBQ0tFRCl7CgkJCXJldHVybiB0cnVlOwoJCX0KCX0KCQoJcmV0dXJuIGZhbHNlOwp9OwoKUG90cmVlLlBvaW50QXR0cmlidXRlcy5wcm90b3R5cGUuaGFzTm9ybWFscyA9IGZ1bmN0aW9uKCl7Cglmb3IodmFyIG5hbWUgaW4gdGhpcy5hdHRyaWJ1dGVzKXsKCQl2YXIgcG9pbnRBdHRyaWJ1dGUgPSB0aGlzLmF0dHJpYnV0ZXNbbmFtZV07CgkJaWYoCgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX1NQSEVSRU1BUFBFRCB8fCAKCQkJcG9pbnRBdHRyaWJ1dGUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5OT1JNQUxfRkxPQVRTIHx8CgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMIHx8CgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX09DVDE2KXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoJCglyZXR1cm4gZmFsc2U7Cn07CgoK")); +Potree.workers.binaryDecoder = new Potree.WorkerManager(atob("Ci8vIGh0dHA6Ly9qc3BlcmYuY29tL3VpbnQ4YXJyYXktdnMtZGF0YXZpZXczLzMKZnVuY3Rpb24gQ3VzdG9tVmlldyhidWZmZXIpIHsKCXRoaXMuYnVmZmVyID0gYnVmZmVyOwoJdGhpcy51OCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CgkKCXZhciB0bXAgPSBuZXcgQXJyYXlCdWZmZXIoNCk7Cgl2YXIgdG1wZiA9IG5ldyBGbG9hdDMyQXJyYXkodG1wKTsKCXZhciB0bXB1OCA9IG5ldyBVaW50OEFycmF5KHRtcCk7CgkKCXRoaXMuZ2V0VWludDMyID0gZnVuY3Rpb24gKGkpIHsKCQlyZXR1cm4gKHRoaXMudThbaSszXSA8PCAyNCkgfCAodGhpcy51OFtpKzJdIDw8IDE2KSB8ICh0aGlzLnU4W2krMV0gPDwgOCkgfCB0aGlzLnU4W2ldOwoJfQoJCgl0aGlzLmdldFVpbnQxNiA9IGZ1bmN0aW9uIChpKSB7CgkJcmV0dXJuICh0aGlzLnU4W2krMV0gPDwgOCkgfCB0aGlzLnU4W2ldOwoJfQoJCgl0aGlzLmdldEZsb2F0ID0gZnVuY3Rpb24oaSl7CgkJdG1wdThbMF0gPSB0aGlzLnU4W2krMF07CgkJdG1wdThbMV0gPSB0aGlzLnU4W2krMV07CgkJdG1wdThbMl0gPSB0aGlzLnU4W2krMl07CgkJdG1wdThbM10gPSB0aGlzLnU4W2krM107CgkJCgkJcmV0dXJuIHRtcGZbMF07Cgl9CgkKCXRoaXMuZ2V0VWludDggPSBmdW5jdGlvbihpKXsKCQlyZXR1cm4gdGhpcy51OFtpXTsKCX0KfQoKUG90cmVlID0ge307CgoKb25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpewoJdmFyIGJ1ZmZlciA9IGV2ZW50LmRhdGEuYnVmZmVyOwoJdmFyIHBvaW50QXR0cmlidXRlcyA9IGV2ZW50LmRhdGEucG9pbnRBdHRyaWJ1dGVzOwoJdmFyIG51bVBvaW50cyA9IGJ1ZmZlci5ieXRlTGVuZ3RoIC8gcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplOwoJdmFyIGN2ID0gbmV3IEN1c3RvbVZpZXcoYnVmZmVyKTsKCXZhciB2ZXJzaW9uID0gbmV3IFBvdHJlZS5WZXJzaW9uKGV2ZW50LmRhdGEudmVyc2lvbik7Cgl2YXIgbWluID0gZXZlbnQuZGF0YS5taW47Cgl2YXIgbm9kZU9mZnNldCA9IGV2ZW50LmRhdGEub2Zmc2V0OwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCXZhciB0aWdodEJveE1pbiA9IFsgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIE51bWJlci5QT1NJVElWRV9JTkZJTklUWV07Cgl2YXIgdGlnaHRCb3hNYXggPSBbIE51bWJlci5ORUdBVElWRV9JTkZJTklUWSAsIE51bWJlci5ORUdBVElWRV9JTkZJTklUWSAsIE51bWJlci5ORUdBVElWRV9JTkZJTklUWSBdOwoJCgl2YXIgYXR0cmlidXRlQnVmZmVycyA9IHt9OwoJCgl2YXIgb2Zmc2V0ID0gMDsKCWZvcih2YXIgaSA9IDA7IGkgPCBwb2ludEF0dHJpYnV0ZXMuYXR0cmlidXRlcy5sZW5ndGg7IGkrKyl7CgkJdmFyIHBvaW50QXR0cmlidXRlID0gcG9pbnRBdHRyaWJ1dGVzLmF0dHJpYnV0ZXNbaV07CgkKCQlpZihwb2ludEF0dHJpYnV0ZS5uYW1lID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuUE9TSVRJT05fQ0FSVEVTSUFOLm5hbWUpewoJCQkKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQqMyk7CgkJCXZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmYpOwoJCQkKCQkJZm9yKHZhciBqID0gMDsgaiA8IG51bVBvaW50czsgaisrKXsKCQkJCWlmKHZlcnNpb24ubmV3ZXJUaGFuKCIxLjMiKSl7CgkJCQkJcG9zaXRpb25zWzMqaiswXSA9IChjdi5nZXRVaW50MzIob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUrMCkgKiBzY2FsZSkgKyBtaW5bMF07CgkJCQkJcG9zaXRpb25zWzMqaisxXSA9IChjdi5nZXRVaW50MzIob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUrNCkgKiBzY2FsZSkgKyBtaW5bMV07CgkJCQkJcG9zaXRpb25zWzMqaisyXSA9IChjdi5nZXRVaW50MzIob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUrOCkgKiBzY2FsZSkgKyBtaW5bMl07CgkJCQl9ZWxzZXsKCQkJCQlwb3NpdGlvbnNbMypqKzBdID0gY3YuZ2V0RmxvYXQoaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUrMCkgKyBub2RlT2Zmc2V0WzBdOwoJCQkJCXBvc2l0aW9uc1szKmorMV0gPSBjdi5nZXRGbG9hdChqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSs0KSArIG5vZGVPZmZzZXRbMV07CgkJCQkJcG9zaXRpb25zWzMqaisyXSA9IGN2LmdldEZsb2F0KGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplKzgpICsgbm9kZU9mZnNldFsyXTsKCQkJCX0KCQkJCQoJCQkJdGlnaHRCb3hNaW5bMF0gPSBNYXRoLm1pbih0aWdodEJveE1pblswXSwgcG9zaXRpb25zWzMqaiswXSk7CgkJCQl0aWdodEJveE1pblsxXSA9IE1hdGgubWluKHRpZ2h0Qm94TWluWzFdLCBwb3NpdGlvbnNbMypqKzFdKTsKCQkJCXRpZ2h0Qm94TWluWzJdID0gTWF0aC5taW4odGlnaHRCb3hNaW5bMl0sIHBvc2l0aW9uc1szKmorMl0pOwoJCQkJCgkJCQl0aWdodEJveE1heFswXSA9IE1hdGgubWF4KHRpZ2h0Qm94TWF4WzBdLCBwb3NpdGlvbnNbMypqKzBdKTsKCQkJCXRpZ2h0Qm94TWF4WzFdID0gTWF0aC5tYXgodGlnaHRCb3hNYXhbMV0sIHBvc2l0aW9uc1szKmorMV0pOwoJCQkJdGlnaHRCb3hNYXhbMl0gPSBNYXRoLm1heCh0aWdodEJveE1heFsyXSwgcG9zaXRpb25zWzMqaisyXSk7CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJCQoJCX1lbHNlIGlmKHBvaW50QXR0cmlidXRlLm5hbWUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5DT0xPUl9QQUNLRUQubmFtZSl7CgkJCQoJCQl2YXIgYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcihudW1Qb2ludHMqNCozKTsKCQkJdmFyIGNvbG9ycyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCQoJCQlmb3IodmFyIGogPSAwOyBqIDwgbnVtUG9pbnRzOyBqKyspewoJCQkJY29sb3JzWzMqaiswXSA9IGN2LmdldFVpbnQ4KG9mZnNldCArIGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMCkgLyAyNTU7CgkJCQljb2xvcnNbMypqKzFdID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUgKyAxKSAvIDI1NTsKCQkJCWNvbG9yc1szKmorMl0gPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDIpIC8gMjU1OwoJCQl9CgkJCQoJCQlhdHRyaWJ1dGVCdWZmZXJzW3BvaW50QXR0cmlidXRlLm5hbWVdID0geyBidWZmZXI6IGJ1ZmYsIGF0dHJpYnV0ZTogcG9pbnRBdHRyaWJ1dGV9OwoJCQkKCQl9ZWxzZSBpZihwb2ludEF0dHJpYnV0ZS5uYW1lID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuSU5URU5TSVRZLm5hbWUpewoKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJCQl2YXIgaW50ZW5zaXRpZXMgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmYpOwoJCQkKCQkJZm9yKHZhciBqID0gMDsgaiA8IG51bVBvaW50czsgaisrKXsKCQkJCXZhciBpbnRlbnNpdHkgPSBjdi5nZXRVaW50MTYob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUpOwoJCQkJaW50ZW5zaXRpZXNbal0gPSBpbnRlbnNpdHk7CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJCgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLkNMQVNTSUZJQ0FUSU9OLm5hbWUpewoKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJCQl2YXIgY2xhc3NpZmljYXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShidWZmKTsKCQkJCgkJCWZvcih2YXIgaiA9IDA7IGogPCBudW1Qb2ludHM7IGorKyl7CgkJCQl2YXIgY2xhc3NpZmljYXRpb24gPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSk7CgkJCQljbGFzc2lmaWNhdGlvbnNbal0gPSBjbGFzc2lmaWNhdGlvbjsKCQkJfQoJCQkKCQkJYXR0cmlidXRlQnVmZmVyc1twb2ludEF0dHJpYnV0ZS5uYW1lXSA9IHsgYnVmZmVyOiBidWZmLCBhdHRyaWJ1dGU6IHBvaW50QXR0cmlidXRlfTsKCQkKCQl9ZWxzZSBpZihwb2ludEF0dHJpYnV0ZS5uYW1lID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX1NQSEVSRU1BUFBFRC5uYW1lKXsKCgkJCXZhciBidWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KjMpOwoJCQl2YXIgbm9ybWFscyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCQoJCQlmb3IodmFyIGogPSAwOyBqIDwgbnVtUG9pbnRzOyBqKyspewoJCQkJdmFyIGJ4ID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDApOwoJCQkJdmFyIGJ5ID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDEpOwoJCQkKCQkJCXZhciBleCA9IGJ4IC8gMjU1OwoJCQkJdmFyIGV5ID0gYnkgLyAyNTU7CgkJCQkKCQkJCXZhciBueCA9IGV4ICogMiAtIDE7CgkJCQl2YXIgbnkgPSBleSAqIDIgLSAxOwoJCQkJdmFyIG56ID0gMTsKCQkJCXZhciBudyA9IC0xOwoJCQkJCgkJCQl2YXIgbCA9IChueCAqICgtbngpKSArIChueSAqICgtbnkpKSArIChueiAqICgtbncpKTsKCQkJCW56ID0gbDsKCQkJCW54ID0gbnggKiBNYXRoLnNxcnQobCk7CgkJCQlueSA9IG55ICogTWF0aC5zcXJ0KGwpOwoJCQkJCgkJCQlueCA9IG54ICogMjsKCQkJCW55ID0gbnkgKiAyOwoJCQkJbnogPSBueiAqIDIgLSAxOwoJCQkJCgkJCQlub3JtYWxzWzMqaiArIDBdID0gbng7CgkJCQlub3JtYWxzWzMqaiArIDFdID0gbnk7CgkJCQlub3JtYWxzWzMqaiArIDJdID0gbno7CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9PQ1QxNi5uYW1lKXsKCQkJCgkJCXZhciBidWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KjMpOwoJCQl2YXIgbm9ybWFscyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCWZvcih2YXIgaiA9IDA7IGogPCBudW1Qb2ludHM7IGorKyl7CgkJCQl2YXIgYnggPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMCk7CgkJCQl2YXIgYnkgPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMSk7CgkJCQkKCQkJCXZhciB1ID0gKGJ4IC8gMjU1KSAqIDIgLSAxOwoJCQkJdmFyIHYgPSAoYnkgLyAyNTUpICogMiAtIDE7CgkJCQkKCQkJCXZhciB6ID0gMSAtIE1hdGguYWJzKHUpIC0gTWF0aC5hYnModik7CgkJCQkKCQkJCWlmKHogPj0gMCl7CgkJCQkJdmFyIHggPSB1OwoJCQkJCXZhciB5ID0gdjsKCQkJCX1lbHNlewoJCQkJCXZhciB4ID0gLSAodi9NYXRoLnNpZ24odikgLSAxKSAvIE1hdGguc2lnbih1KTsKCQkJCQl2YXIgeSA9IC0gKHUvTWF0aC5zaWduKHUpIC0gMSkgLyBNYXRoLnNpZ24odik7CgkJCQl9CgkJCQkKCQkJCXZhciBsZW5ndGggPSBNYXRoLnNxcnQoeCp4ICsgeSp5ICsgeip6KTsKCQkJCXggPSB4IC8gbGVuZ3RoOwoJCQkJeSA9IHkgLyBsZW5ndGg7CgkJCQl6ID0geiAvIGxlbmd0aDsKCQkJCQoJCQkJbm9ybWFsc1szKmogKyAwXSA9IHg7CgkJCQlub3JtYWxzWzMqaiArIDFdID0geTsKCQkJCW5vcm1hbHNbMypqICsgMl0gPSB6OwoJCQl9CgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTC5uYW1lKXsKCQkKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQqMyk7CgkJCXZhciBub3JtYWxzID0gbmV3IEZsb2F0MzJBcnJheShidWZmKTsKCQkJZm9yKHZhciBqID0gMDsgaiA8IG51bVBvaW50czsgaisrKXsKCQkJCXZhciB4ID0gY3YuZ2V0RmxvYXQob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDApOwoJCQkJdmFyIHkgPSBjdi5nZXRGbG9hdChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgNCk7CgkJCQl2YXIgeiA9IGN2LmdldEZsb2F0KG9mZnNldCArIGogKiBwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUgKyA4KTsKCQkJCQoJCQkJbm9ybWFsc1szKmogKyAwXSA9IHg7CgkJCQlub3JtYWxzWzMqaiArIDFdID0geTsKCQkJCW5vcm1hbHNbMypqICsgMl0gPSB6OwoJCQl9CgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfQoJCQoJCW9mZnNldCArPSBwb2ludEF0dHJpYnV0ZS5ieXRlU2l6ZTsKCX0KCQoJdmFyIGluZGljZXMgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJdmFyIGlJbmRpY2VzID0gbmV3IFVpbnQzMkFycmF5KGluZGljZXMpOwoJZm9yKHZhciBpID0gMDsgaSA8IG51bVBvaW50czsgaSsrKXsKCQlpSW5kaWNlc1tpXSA9IGk7Cgl9CgkKCXZhciBtZXNzYWdlID0gewoJCWF0dHJpYnV0ZUJ1ZmZlcnM6IGF0dHJpYnV0ZUJ1ZmZlcnMsCgkJdGlnaHRCb3VuZGluZ0JveDogeyBtaW46IHRpZ2h0Qm94TWluLCBtYXg6IHRpZ2h0Qm94TWF4IH0sCgkJaW5kaWNlczogaW5kaWNlcwoJfTsKCQkKCXZhciB0cmFuc2ZlcmFibGVzID0gW107CgkKCWZvcih2YXIgcHJvcGVydHkgaW4gbWVzc2FnZS5hdHRyaWJ1dGVCdWZmZXJzKXsKCQlpZihtZXNzYWdlLmF0dHJpYnV0ZUJ1ZmZlcnMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKXsKCQkJdHJhbnNmZXJhYmxlcy5wdXNoKG1lc3NhZ2UuYXR0cmlidXRlQnVmZmVyc1twcm9wZXJ0eV0uYnVmZmVyKTsKCQl9Cgl9CgkKCXRyYW5zZmVyYWJsZXMucHVzaChtZXNzYWdlLmluZGljZXMpOwoJCQoJcG9zdE1lc3NhZ2UobWVzc2FnZSwgdHJhbnNmZXJhYmxlcyk7CgkKfTsKUG90cmVlLlZlcnNpb24gPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXRoaXMudmVyc2lvbiA9IHZlcnNpb247Cgl2YXIgdm1MZW5ndGggPSAodmVyc2lvbi5pbmRleE9mKCIuIikgPT09IC0xKSA/IHZlcnNpb24ubGVuZ3RoIDogdmVyc2lvbi5pbmRleE9mKCIuIik7Cgl0aGlzLnZlcnNpb25NYWpvciA9IHBhcnNlSW50KHZlcnNpb24uc3Vic3RyKDAsIHZtTGVuZ3RoKSk7Cgl0aGlzLnZlcnNpb25NaW5vciA9IHBhcnNlSW50KHZlcnNpb24uc3Vic3RyKHZtTGVuZ3RoICsgMSkpOwoJaWYodGhpcy52ZXJzaW9uTWlub3IubGVuZ3RoID09PSAwKXsKCQl0aGlzLnZlcnNpb25NaW5vciA9IDA7Cgl9CgkKfTsKClBvdHJlZS5WZXJzaW9uLnByb3RvdHlwZS5uZXdlclRoYW4gPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXZhciB2ID0gbmV3IFBvdHJlZS5WZXJzaW9uKHZlcnNpb24pOwoJCglpZiggdGhpcy52ZXJzaW9uTWFqb3IgPiB2LnZlcnNpb25NYWpvcil7CgkJcmV0dXJuIHRydWU7Cgl9ZWxzZSBpZiggdGhpcy52ZXJzaW9uTWFqb3IgPT09IHYudmVyc2lvbk1ham9yICYmIHRoaXMudmVyc2lvbk1pbm9yID4gdi52ZXJzaW9uTWlub3IpewoJCXJldHVybiB0cnVlOwoJfWVsc2V7CgkJcmV0dXJuIGZhbHNlOwoJfQp9OwoKUG90cmVlLlZlcnNpb24ucHJvdG90eXBlLmVxdWFsT3JIaWdoZXIgPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXZhciB2ID0gbmV3IFBvdHJlZS5WZXJzaW9uKHZlcnNpb24pOwoJCglpZiggdGhpcy52ZXJzaW9uTWFqb3IgPiB2LnZlcnNpb25NYWpvcil7CgkJcmV0dXJuIHRydWU7Cgl9ZWxzZSBpZiggdGhpcy52ZXJzaW9uTWFqb3IgPT09IHYudmVyc2lvbk1ham9yICYmIHRoaXMudmVyc2lvbk1pbm9yID49IHYudmVyc2lvbk1pbm9yKXsKCQlyZXR1cm4gdHJ1ZTsKCX1lbHNlewoJCXJldHVybiBmYWxzZTsKCX0KfTsKClBvdHJlZS5WZXJzaW9uLnByb3RvdHlwZS51cFRvID0gZnVuY3Rpb24odmVyc2lvbil7CglyZXR1cm4gIXRoaXMubmV3ZXJUaGFuKHZlcnNpb24pOwp9ClBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzID0ge307CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5QT1NJVElPTl9DQVJURVNJQU4gCT0gMDsJLy8gZmxvYXQgeCwgeSwgejsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuQ09MT1JfUEFDS0VECQk9IDE7CS8vIGJ5dGUgciwgZywgYiwgYTsgCUkgPSBbMCwxXQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9GTE9BVFNfMQkJPSAyOwkvLyBmbG9hdCByLCBnLCBiOyAJCUkgPSBbMCwxXQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9GTE9BVFNfMjU1CT0gMzsJLy8gZmxvYXQgciwgZywgYjsgCQlJID0gWzAsMjU1XQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfRkxPQVRTCQk9IDQ7ICAJLy8gZmxvYXQgeCwgeSwgejsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuRklMTEVSCQkJCT0gNTsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuSU5URU5TSVRZCQkJPSA2OwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DTEFTU0lGSUNBVElPTgkJPSA3OwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfU1BIRVJFTUFQUEVECT0gODsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuTk9STUFMX09DVDE2CQk9IDk7ClBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTAkJCQk9IDEwOwoKLyoqCiAqIFNvbWUgdHlwZXMgb2YgcG9zc2libGUgcG9pbnQgYXR0cmlidXRlIGRhdGEgZm9ybWF0cwogKiAKICogQGNsYXNzCiAqLwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcyA9IHsKCURBVEFfVFlQRV9ET1VCTEUJOiB7b3JkaW5hbCA6IDAsIHNpemU6IDh9LAoJREFUQV9UWVBFX0ZMT0FUCQk6IHtvcmRpbmFsIDogMSwgc2l6ZTogNH0sCglEQVRBX1RZUEVfSU5UOAkJOiB7b3JkaW5hbCA6IDIsIHNpemU6IDF9LAoJREFUQV9UWVBFX1VJTlQ4CQk6IHtvcmRpbmFsIDogMywgc2l6ZTogMX0sCglEQVRBX1RZUEVfSU5UMTYJCToge29yZGluYWwgOiA0LCBzaXplOiAyfSwKCURBVEFfVFlQRV9VSU5UMTYJOiB7b3JkaW5hbCA6IDUsIHNpemU6IDJ9LAoJREFUQV9UWVBFX0lOVDMyCQk6IHtvcmRpbmFsIDogNiwgc2l6ZTogNH0sCglEQVRBX1RZUEVfVUlOVDMyCToge29yZGluYWwgOiA3LCBzaXplOiA0fSwKCURBVEFfVFlQRV9JTlQ2NAkJOiB7b3JkaW5hbCA6IDgsIHNpemU6IDh9LAoJREFUQV9UWVBFX1VJTlQ2NAk6IHtvcmRpbmFsIDogOSwgc2l6ZTogOH0KfTsKCnZhciBpID0gMDsKZm9yKHZhciBvYmogaW4gUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMpewoJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXNbaV0gPSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlc1tvYmpdOwoJaSsrOwp9CgovKioKICogQSBzaW5nbGUgcG9pbnQgYXR0cmlidXRlIHN1Y2ggYXMgY29sb3Ivbm9ybWFsLy4uIGFuZCBpdHMgZGF0YSBmb3JtYXQvbnVtYmVyIG9mIGVsZW1lbnRzLy4uLiAKICogCiAqIEBjbGFzcwogKiBAcGFyYW0gbmFtZSAKICogQHBhcmFtIHR5cGUKICogQHBhcmFtIHNpemUKICogQHJldHVybnMKICovClBvdHJlZS5Qb2ludEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUsIHR5cGUsIG51bUVsZW1lbnRzKXsKCXRoaXMubmFtZSA9IG5hbWU7Cgl0aGlzLnR5cGUgPSB0eXBlOyAKCXRoaXMubnVtRWxlbWVudHMgPSBudW1FbGVtZW50czsKCXRoaXMuYnl0ZVNpemUgPSB0aGlzLm51bUVsZW1lbnRzICogdGhpcy50eXBlLnNpemU7Cn0KClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5QT1NJVElPTl9DQVJURVNJQU4gPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLlBPU0lUSU9OX0NBUlRFU0lBTiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfRkxPQVQsIDMpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLlJHQkFfUEFDS0VEID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9QQUNLRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0lOVDgsIDQpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLkNPTE9SX1BBQ0tFRCA9IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5SR0JBX1BBQ0tFRDsKClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5SR0JfUEFDS0VEID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9QQUNLRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0lOVDgsIDMpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9GTE9BVFMgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTF9GTE9BVFMsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0ZMT0FULCAzKTsKClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5GSUxMRVJfMUIgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLkZJTExFUiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfVUlOVDgsIDEpOwoJCQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuSU5URU5TSVRZID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5JTlRFTlNJVFksCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQxNiwgMSk7CQkKCQkKUG90cmVlLlBvaW50QXR0cmlidXRlLkNMQVNTSUZJQ0FUSU9OID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DTEFTU0lGSUNBVElPTiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfVUlOVDgsIDEpOwkKCQkKUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9TUEhFUkVNQVBQRUQgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTF9TUEhFUkVNQVBQRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQ4LCAyKTsJCQoJCQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX09DVDE2ID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfT0NUMTYsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQ4LCAyKTsJCgkJClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5OT1JNQUwgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTCwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfRkxPQVQsIDMpOwoKLyoqCiAqIE9yZGVyZWQgbGlzdCBvZiBQb2ludEF0dHJpYnV0ZXMgdXNlZCB0byBpZGVudGlmeSBob3cgcG9pbnRzIGFyZSBhbGlnbmVkIGluIGEgYnVmZmVyLgogKiAKICogQGNsYXNzCiAqIAogKi8KUG90cmVlLlBvaW50QXR0cmlidXRlcyA9IGZ1bmN0aW9uKHBvaW50QXR0cmlidXRlcyl7Cgl0aGlzLmF0dHJpYnV0ZXMgPSBuZXcgQXJyYXkoKTsKCXRoaXMuYnl0ZVNpemUgPSAwOwoJdGhpcy5zaXplID0gMDsKCQoJaWYocG9pbnRBdHRyaWJ1dGVzICE9IG51bGwpewkKCQlmb3IodmFyIGkgPSAwOyBpIDwgcG9pbnRBdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKXsKCQkJdmFyIHBvaW50QXR0cmlidXRlTmFtZSA9IHBvaW50QXR0cmlidXRlc1tpXTsKCQkJdmFyIHBvaW50QXR0cmlidXRlID0gUG90cmVlLlBvaW50QXR0cmlidXRlW3BvaW50QXR0cmlidXRlTmFtZV07CgkJCXRoaXMuYXR0cmlidXRlcy5wdXNoKHBvaW50QXR0cmlidXRlKTsKCQkJdGhpcy5ieXRlU2l6ZSArPSBwb2ludEF0dHJpYnV0ZS5ieXRlU2l6ZTsKCQkJdGhpcy5zaXplKys7CgkJfQoJfQp9CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVzLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihwb2ludEF0dHJpYnV0ZSl7Cgl0aGlzLmF0dHJpYnV0ZXMucHVzaChwb2ludEF0dHJpYnV0ZSk7Cgl0aGlzLmJ5dGVTaXplICs9IHBvaW50QXR0cmlidXRlLmJ5dGVTaXplOwoJdGhpcy5zaXplKys7Cn07CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVzLnByb3RvdHlwZS5oYXNDb2xvcnMgPSBmdW5jdGlvbigpewoJZm9yKHZhciBuYW1lIGluIHRoaXMuYXR0cmlidXRlcyl7CgkJdmFyIHBvaW50QXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzW25hbWVdOwoJCWlmKHBvaW50QXR0cmlidXRlLm5hbWUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLkNPTE9SX1BBQ0tFRCl7CgkJCXJldHVybiB0cnVlOwoJCX0KCX0KCQoJcmV0dXJuIGZhbHNlOwp9OwoKUG90cmVlLlBvaW50QXR0cmlidXRlcy5wcm90b3R5cGUuaGFzTm9ybWFscyA9IGZ1bmN0aW9uKCl7Cglmb3IodmFyIG5hbWUgaW4gdGhpcy5hdHRyaWJ1dGVzKXsKCQl2YXIgcG9pbnRBdHRyaWJ1dGUgPSB0aGlzLmF0dHJpYnV0ZXNbbmFtZV07CgkJaWYoCgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX1NQSEVSRU1BUFBFRCB8fCAKCQkJcG9pbnRBdHRyaWJ1dGUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5OT1JNQUxfRkxPQVRTIHx8CgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMIHx8CgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX09DVDE2KXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoJCglyZXR1cm4gZmFsc2U7Cn07CgoK")); Potree.Shaders["pointcloud.vs"] = [ "", "// the following is an incomplete list of attributes, uniforms and defines", @@ -1351,6 +1351,10 @@ Potree.BinaryLoader.prototype.parse = function(node, buffer){ ww.onmessage = function(e){ var data = e.data; var buffers = data.attributeBuffers; + var tightBoundingBox = new THREE.Box3( + new THREE.Vector3().fromArray(data.tightBoundingBox.min), + new THREE.Vector3().fromArray(data.tightBoundingBox.max) + ); Potree.workers.binaryDecoder.returnWorker(ww); @@ -1386,13 +1390,13 @@ Potree.BinaryLoader.prototype.parse = function(node, buffer){ geometry.addAttribute("normal", new THREE.BufferAttribute(new Float32Array(buffer), 3)); } - geometry.boundingBox = node.boundingBox; + //geometry.boundingBox = node.boundingBox; + geometry.boundingBox = tightBoundingBox; node.geometry = geometry; + node.tightBoundingBox = tightBoundingBox; node.loaded = true; node.loading = false; node.pcoGeometry.numNodesLoading--; - - //console.log("loaded: " + node.name + "\t, " + renderer.info.memory.geometries + ", " + Potree.PointCloudOctree.lru.elements); } var message = { @@ -1608,8 +1612,15 @@ Potree.LasLazBatcher = function(node){ geometry.addAttribute('indices', new THREE.BufferAttribute(indices, 1)); geometry.addAttribute("normal", new THREE.BufferAttribute(new Float32Array(numPoints*3), 3)); - geometry.boundingBox = new THREE.Box3(mins, maxs); + var tightBoundingBox = new THREE.Box3( + new THREE.Vector3().fromArray(e.data.tightBoundingBox.min), + new THREE.Vector3().fromArray(e.data.tightBoundingBox.max) + ); + + //geometry.boundingBox = new THREE.Box3(mins, maxs); + geometry.boundingBox = tightBoundingBox; node.boundingBox = geometry.boundingBox; + node.tightBoundingBox = tightBoundingBox; node.geometry = geometry; node.loaded = true; @@ -4605,7 +4616,11 @@ Potree.PointCloudOctree.prototype.replaceProxy = function(proxy){ node.name = proxy.name; node.level = proxy.level; node.numPoints = proxy.numPoints; - node.boundingBox = geometry.boundingBox; + if(typeof geometryNode.tightBoundingBox !== "undefined"){ + node.boundingBox = geometryNode.tightBoundingBox; + }else{ + node.boundingBox = geometry.boundingBox; + } node.boundingSphere = node.boundingBox.getBoundingSphere(); node.pcoGeometry = geometryNode; var parent = proxy.parent; diff --git a/build/js/potree.min.js b/build/js/potree.min.js index ffee4ecb74..82cc73e182 100644 --- a/build/js/potree.min.js +++ b/build/js/potree.min.js @@ -1,6 +1,6 @@ -function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var r=new THREE.Vector3(e.x,e.y,.5);r.unproject(t);for(var n=r.sub(t.position).normalize(),a=new THREE.Ray(t.position,n),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var r=o.getContext("2d");e=new e.constructor(e);for(var n=0;n 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying float vLogDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;"," float depth = gl_FragCoord.z;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float sDepth = texture2D(depthMap, uv).r;"," if(vLinearDepth > sDepth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," depth = (pos.z + 1.0) / 2.0;"," gl_FragDepthEXT = depth;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," "," "," #if defined(use_edl)"," gl_FragColor.a = vLogDepth;"," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," float depth = texture2D(depthMap, vUv).g; "," "," if(depth <= 0.0){"," discard;"," }"," "," vec4 color = texture2D(texture, vUv); "," color = color / color.w;"," "," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);",""," gl_Position = projectionMatrix * mvPosition;","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float expScale;","uniform float radius;","","//uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float expToLinear(float z){"," z = 2.0 * z - 1.0;"," float linear = (2.0 * near * far) / (far + near - z * (far - near));",""," return linear;","}","","// this actually only returns linear depth values if LOG_BIAS is 1.0","// lower values work out more nicely, though.","#define LOG_BIAS 0.01","float logToLinear(float z){"," return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth){"," vec4 P = vec4(0, 0, 1, -ztransform(linearDepth));"," vec2 uvRadius = radius / vec2(screenWidth, screenHeight);"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = uvRadius * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a);"," "," if(neighbourDepth != 0.0){"," float Zn = ztransform(neighbourDepth);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.05 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){"," float linearDepth = logToLinear(texture2D(colorMap, vUv).a);"," "," float f = computeObscurance(linearDepth);"," f = exp(-expScale * f);"," "," vec4 color = texture2D(colorMap, vUv);"," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); -var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var r=o.radius,n=this.fov*Math.PI/180;this.aspect<1&&(n*=this.aspect);var a=Math.abs(r/Math.sin(n/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var r=JSON.parse(o.responseText),n=new Potree.Version(r.version);i.octreeDir=0===r.octreeDir.indexOf("http")?r.octreeDir:e+"/../"+r.octreeDir,i.spacing=r.spacing,i.hierarchyStepSize=r.hierarchyStepSize,i.pointAttributes=r.pointAttributes;var a=new THREE.Vector3(r.boundingBox.lx,r.boundingBox.ly,r.boundingBox.lz),s=new THREE.Vector3(r.boundingBox.ux,r.boundingBox.uy,r.boundingBox.uz),l=new THREE.Box3(a,s),d=new THREE.Vector3(0,0,0);d.set(-a.x,-a.y,-a.z),l.min.add(d),l.max.add(d),i.boundingBox=l,i.boundingSphere=l.getBoundingSphere(),i.offset=d,"LAS"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):"LAZ"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):(i.loader=new Potree.BinaryLoader(r.version,l,r.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var c={},u="r",h=new Potree.PointCloudOctreeGeometryNode(u,i,l);if(h.level=0,h.hasChildren=!0,h.numPoints=n.upTo("1.5")?r.hierarchy[0][1]:0,i.root=h,i.root.load(),c[u]=h,n.upTo("1.4"))for(var p=1;p=r?i.pointsCount:i.pointsCount/r,s=function(){var e=t.readData(1e6,0,r);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),n+=e.count,Potree.LasLazLoader.progressCB(n/a),e.hasMoreData?s():(i.totalRead=n,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),r=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),r.add(e.pcoGeometry.offset),i.onmessage=function(n){for(var a=new THREE.BufferGeometry,s=t.pointsCount,l=n.data.position,d=n.data.color,c=n.data.intensity,u=new Uint8Array(n.data.classification),h=new Float32Array(u.byteLength),p=new Uint8Array(n.data.returnNumber),m=new Float32Array(p.byteLength),f=new Uint16Array(n.data.pointSourceID),v=new Float32Array(f.length),g=new ArrayBuffer(4*s),E=new Uint32Array(g),y=new THREE.Box3,b=new Float32Array(l),T=0;s>T;T++)h[T]=u[T],m[T]=p[T],v[T]=f[T],E[T]=T,y.expandByPoint(new THREE.Vector3(b[3*T+0],b[3*T+1],b[3*T+2]));a.addAttribute("position",new THREE.BufferAttribute(new Float32Array(l),3)),a.addAttribute("color",new THREE.BufferAttribute(new Float32Array(d),3)),a.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(c),1)),a.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(h),1)),a.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(m),1)),a.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(v),1)),a.addAttribute("indices",new THREE.BufferAttribute(g,1)),a.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*s),3)),a.boundingBox=new THREE.Box3(o,r),e.boundingBox=a.boundingBox,e.geometry=a,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var n={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(n,[n.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,r=e.minSize||1,n=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a,this._useLogarithmicDepthBuffer=!1,this._useEDL=!1;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:r,maxSize:n,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._useLogarithmicDepthBuffer&&(e+="#define use_logarithmic_depth_buffer\n"),this._useEDL&&(e+="#define use_edl\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;in;n++)for(var a=0;i>a;a++){var s,l=n+t*a;s=e[n]?e[n]:e.DEFAULT,r[3*l+0]=255*s.r,r[3*l+1]=255*s.g,r[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var r=new THREE.Vector3(0,0,1).normalize(),n={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},expScale:{type:"f",value:100},radius:{type:"f",value:3},lightDir:{type:"v3",value:r},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:n,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",r,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function r(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",r,!1),l.dispatchEvent(x),P=T.NONE)}function n(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,r=o.clone(),n=r.length();n*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*n/i.clientHeight),l.panUp(2*t*n/i.clientHeight) -}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var r=(new THREE.Matrix4).makeRotationY(g),n=(new THREE.Matrix4).multiplyMatrices(r,this.object.matrix);this.object.quaternion.setFromRotationMatrix(n),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",n,!1),this.domElement.addEventListener("DOMMouseScroll",n,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function r(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",n,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function n(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",n,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,r=Math.sqrt(i*i+o*o);R.set(0,r),C.subVectors(R,P);var n=t.clientWidth,a=t.clientHeight,s=Math.sqrt(n*n+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,A=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,r=o.clone().sub(h.target),n=r.length();n*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*n/i.clientHeight),h.panUp(2*t*n/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),r=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var n=Math.min(1,this.fadeFactor*e);o+=n*w,r+=n*x,r=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,r)),r=Math.max(p,Math.min(Math.PI-p,r));var a=T.length();a+=(H-1)*a*n,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(n)),T.x=a*Math.sin(r)*Math.sin(o),T.y=a*Math.cos(r),T.z=a*Math.sin(r)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}A.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),A.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",r,!1),s.domElement.addEventListener("mouseup",n,!1)}}}function r(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function n(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",r,!1),s.domElement.removeEventListener("mouseup",n,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},r=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(r){var n=r.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(r,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*n*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},r=new THREE.Vector3(o.x,o.y,.5);r.unproject(f);var n=r.sub(f.position).normalize(),a=new THREE.Ray(f.position,n),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,n.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var n=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,n),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var r=i.children[o];r.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,r){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=r,this.loadQueue=[];var n=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(n,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var n=r.shift();if(n instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(n.boundingBox,n.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var n=c.loadQueue[0],u=n.geometryNode;if(u.loaded===!0&&void 0!==n.parent){var h=this.replaceProxy(n);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else n.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i,o){e.fov=i.fov*(Math.PI/180),e.screenWidth=o.domElement.clientWidth,e.screenHeight=o.domElement.clientHeight,e.spacing=this.pcoGeometry.spacing,e.near=i.near,e.far=i.far,e.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,e.pointSizeType&&(e.pointSizeType===Potree.PointSizeType.ADAPTIVE||e.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(e,t)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var n=0;n=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=n.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,n,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=r.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,A=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),V=t.domElement.clientHeight*A;if(!(Vg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var M=0,B=0;Bm[B].weight){var M=B;break}if(B==m.length-1){M=m.length;break}}m.splice(M,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var r=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(r);for(var n={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dn;n++)if(void 0!==t.children[n]){var a=t.children[n],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),r=(new THREE.Matrix4).makeTranslation(n,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(r),a}}(n,a,o),d={start:n,end:a,points:s,project:l};i.push(d),o+=n.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,r){if(void 0===r){var n=[];n.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;n.length>0;){var f=n.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),r=e.clone();return r.applyMatrix4(t),r.applyMatrix4(o),r}}(e,t);return m.project=M,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,r))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},r=o.pickWindowSize||17,n=this.nodesOnRay(this.visibleNodes,i);if(0===n.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointShape=this.material.pointShape,this.pickMaterial.interpolate=this.material.interpolate,this.updateMaterial(this.pickMaterial,n,t,e);var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(r-1)/2,l.y-(r-1)/2,r,r),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),n.length>0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xc;c++){var u=n[3*c+0],h=n[3*c+1],p=n[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/r.x),v=parseInt(a*(m.z-o.min.z)/r.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&n.x.5&&n.y0;){{var n=r.shift(),a=n.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,n.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),r[n+0]=c,r[n+1]=h,r[n+2]=u,n+=3}o.addAttribute("position",new THREE.BufferAttribute(r,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),r=0;o>r;r++)e+=i.substr(r*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],r=i.getUint8(0),n=i.getUint32(1,!0);e.numPoints=n,o.push({children:r,numPoints:n,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(r){console.log("fehler beim laden der punktwolke: "+r)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",r=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],n=THREE.ImageUtils.loadTextureCube(r,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:n},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var r=new THREE.LineBasicMaterial({color:o||8947848}),n=new THREE.Geometry,a=0;t>=a;a++)n.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),n.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(n,r,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var r=o.image.data,n=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,r[3*u+0]=255*(h/15+.05+p)*n[0],r[3*u+1]=255*(h/15+.05+p)*n[1],r[3*u+2]=255*(h/15+.05+p)*n[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(r)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(r)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,r=-t.radius,n=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(r>s)return 0;n=Math.min(n,s)}return n>=t.radius?2:1},Potree.utils.screenPass=new function(){this.screenScene=new THREE.Scene,this.screenQuad=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2,0)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new THREE.Camera,this.render=function(e,t,i){this.screenQuad.material=t,void 0===typeof i?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,i)}},Potree.Features=function(){var e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");if(null===t)return null;var i,o=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT),r=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT),n=(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.LOW_FLOAT),t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT)),a=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT),s=(t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.LOW_FLOAT),o.precision>0&&n.precision>0),l=r.precision>0&&a.precision>0;return i=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getExtension("OES_texture_float"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},SHADER_EDL:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getExtension("OES_texture_float"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},precision:i}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,r=o+2*this.borderThickness,n=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=r,t.canvas.height=n,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*r,.01*n,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,r,n){e.beginPath(),e.moveTo(t+n,i),e.lineTo(t+o-n,i),e.quadraticCurveTo(t+o,i,t+o,i+n),e.lineTo(t+o,i+r-n),e.quadraticCurveTo(t+o,i+r,t+o-n,i+r),e.lineTo(t+n,i+r),e.quadraticCurveTo(t,i+r,t,i+r-n),e.lineTo(t,i+n),e.quadraticCurveTo(t,i,t+n,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},r=function(e){e.target.material.emissive.setHex(0)},n=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var r=e.spheres.indexOf(i.dragstart.object);e.setPosition(r,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",r),s.addEventListener("drag",n),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){var t=this.points[r];o.add(t)}o.divideScalar(this.points.length);for(var r=0;i>=r;r++){var n=r,a=r+1>i?0:r+1,s=0===r?i:r-1,t=this.points[n],l=this.points[a],d=this.points[s],c=this.spheres[n];c.position.copy(t),c.material.color=e.color;var u=this.edges[n];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>n||this.closed;var h=this.edgeLabels[r],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>n||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[r],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>n||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function r(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var r=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(r,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function n(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&n(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,r="undefined"!=typeof e.closed?e.closed:!1,n=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=r,a.maxMarkers=n,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){{var e=this.points[n],a=this.spheres[n],s=0===n?r:n-1,l=n===r?0:n+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[n],p=this.boxes[s];this.boxes[n],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var n=0;n0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1); -var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),r=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(r);var n=function(){r.material.color.setHex(5592405)},a=function(){r.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),r=t.clone().unproject(s.camera),n=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(n,r),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,r).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=r;r++){var n=2*Math.PI*r/o,a=3*Math.cos(n),l=3*Math.sin(n);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,r=0;rt;t++)r.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function r(){}function n(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?n[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ac)&&(r=l,n=c)}}return r?r.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var r=[],n=0;n=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",r,!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var r=0;rH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var r=0;r0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),r=0;r0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var A={},V=n[P.pcIndex],M=V.geometry.attributes;for(var B in M)if(M.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=V.geometry.attributes.position.array,G=L[3*P.pIndex+0],W=L[3*P.pIndex+1],N=L[3*P.pIndex+2],D=new THREE.Vector3(G,W,N);D.applyMatrix4(this.matrixWorld),A[B]=D}else if("indices"===B);else if(1===I.itemSize)A[B]=I.array[u+X];else{for(var O=[],X=0;Xr?-1:r>n?1:0};t.sort(r);for(var n=[],a=0;a0&&(l+=1,d=n.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&n.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?n.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),r=e.byteLength/17,n=new Float32Array(3*r),a=new Float32Array(3*r),s=new Uint32Array(r),l=0;r>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;n[3*l+0]=d,n[3*l+1]=c,n[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(n,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*r),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=r -}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),r=new Potree.PointCloudArena4DGeometry;r.url=e,r.name=o.Name,r.provider=o.Provider,r.numNodes=o.Nodes,r.numPoints=o.Points,r.version=o.Version,r.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(r.spacing=o.Spacing);var n=r.boundingBox.min.clone().multiplyScalar(-1);r.boundingBox.min.add(n),r.boundingBox.max.add(n),r.offset=n;var a=r.boundingBox.center(),s=r.boundingBox.size().length()/2;r.boundingSphere=new THREE.Sphere(a,s),r.loadHierarchy(),t(r)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,r=new DataView(e),n=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=r.getUint8(3*l+0,!0),c=(r.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=n.length,s=Math.max(s,v.level),n.length>0){var g=n[n.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,n.push(v),v.isLeaf)for(var P=!1;!P&&n.length>0;){n.pop();var R=n[n.length-1];P=n.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file +function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var r=new THREE.Vector3(e.x,e.y,.5);r.unproject(t);for(var n=r.sub(t.position).normalize(),a=new THREE.Ray(t.position,n),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var r=o.getContext("2d");e=new e.constructor(e);for(var n=0;n 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying float vLogDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;"," float depth = gl_FragCoord.z;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float sDepth = texture2D(depthMap, uv).r;"," if(vLinearDepth > sDepth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," depth = (pos.z + 1.0) / 2.0;"," gl_FragDepthEXT = depth;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," "," "," #if defined(use_edl)"," gl_FragColor.a = vLogDepth;"," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," float depth = texture2D(depthMap, vUv).g; "," "," if(depth <= 0.0){"," discard;"," }"," "," vec4 color = texture2D(texture, vUv); "," color = color / color.w;"," "," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);",""," gl_Position = projectionMatrix * mvPosition;","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float expScale;","uniform float radius;","","//uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float expToLinear(float z){"," z = 2.0 * z - 1.0;"," float linear = (2.0 * near * far) / (far + near - z * (far - near));",""," return linear;","}","","// this actually only returns linear depth values if LOG_BIAS is 1.0","// lower values work out more nicely, though.","#define LOG_BIAS 0.01","float logToLinear(float z){"," return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth){"," vec4 P = vec4(0, 0, 1, -ztransform(linearDepth));"," vec2 uvRadius = radius / vec2(screenWidth, screenHeight);"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = uvRadius * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a);"," "," if(neighbourDepth != 0.0){"," float Zn = ztransform(neighbourDepth);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.05 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){"," float linearDepth = logToLinear(texture2D(colorMap, vUv).a);"," "," float f = computeObscurance(linearDepth);"," f = exp(-expScale * f);"," "," vec4 color = texture2D(colorMap, vUv);"," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); +var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var r=o.radius,n=this.fov*Math.PI/180;this.aspect<1&&(n*=this.aspect);var a=Math.abs(r/Math.sin(n/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var r=JSON.parse(o.responseText),n=new Potree.Version(r.version);i.octreeDir=0===r.octreeDir.indexOf("http")?r.octreeDir:e+"/../"+r.octreeDir,i.spacing=r.spacing,i.hierarchyStepSize=r.hierarchyStepSize,i.pointAttributes=r.pointAttributes;var a=new THREE.Vector3(r.boundingBox.lx,r.boundingBox.ly,r.boundingBox.lz),s=new THREE.Vector3(r.boundingBox.ux,r.boundingBox.uy,r.boundingBox.uz),l=new THREE.Box3(a,s),d=new THREE.Vector3(0,0,0);d.set(-a.x,-a.y,-a.z),l.min.add(d),l.max.add(d),i.boundingBox=l,i.boundingSphere=l.getBoundingSphere(),i.offset=d,"LAS"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):"LAZ"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):(i.loader=new Potree.BinaryLoader(r.version,l,r.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var c={},u="r",h=new Potree.PointCloudOctreeGeometryNode(u,i,l);if(h.level=0,h.hasChildren=!0,h.numPoints=n.upTo("1.5")?r.hierarchy[0][1]:0,i.root=h,i.root.load(),c[u]=h,n.upTo("1.4"))for(var p=1;p=r?i.pointsCount:i.pointsCount/r,s=function(){var e=t.readData(1e6,0,r);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),n+=e.count,Potree.LasLazLoader.progressCB(n/a),e.hasMoreData?s():(i.totalRead=n,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),r=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),r.add(e.pcoGeometry.offset),i.onmessage=function(o){for(var r=new THREE.BufferGeometry,n=t.pointsCount,a=o.data.position,s=o.data.color,l=o.data.intensity,d=new Uint8Array(o.data.classification),c=new Float32Array(d.byteLength),u=new Uint8Array(o.data.returnNumber),h=new Float32Array(u.byteLength),p=new Uint16Array(o.data.pointSourceID),m=new Float32Array(p.length),f=new ArrayBuffer(4*n),v=new Uint32Array(f),g=new THREE.Box3,E=new Float32Array(a),y=0;n>y;y++)c[y]=d[y],h[y]=u[y],m[y]=p[y],v[y]=y,g.expandByPoint(new THREE.Vector3(E[3*y+0],E[3*y+1],E[3*y+2]));r.addAttribute("position",new THREE.BufferAttribute(new Float32Array(a),3)),r.addAttribute("color",new THREE.BufferAttribute(new Float32Array(s),3)),r.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(l),1)),r.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(c),1)),r.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(h),1)),r.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(m),1)),r.addAttribute("indices",new THREE.BufferAttribute(f,1)),r.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*n),3));var b=new THREE.Box3((new THREE.Vector3).fromArray(o.data.tightBoundingBox.min),(new THREE.Vector3).fromArray(o.data.tightBoundingBox.max));r.boundingBox=b,e.boundingBox=r.boundingBox,e.tightBoundingBox=b,e.geometry=r,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var n={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(n,[n.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,r=e.minSize||1,n=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a,this._useLogarithmicDepthBuffer=!1,this._useEDL=!1;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:r,maxSize:n,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._useLogarithmicDepthBuffer&&(e+="#define use_logarithmic_depth_buffer\n"),this._useEDL&&(e+="#define use_edl\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;in;n++)for(var a=0;i>a;a++){var s,l=n+t*a;s=e[n]?e[n]:e.DEFAULT,r[3*l+0]=255*s.r,r[3*l+1]=255*s.g,r[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var r=new THREE.Vector3(0,0,1).normalize(),n={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},expScale:{type:"f",value:100},radius:{type:"f",value:3},lightDir:{type:"v3",value:r},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:n,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",r,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function r(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",r,!1),l.dispatchEvent(x),P=T.NONE)}function n(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements; +f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,r=o.clone(),n=r.length();n*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*n/i.clientHeight),l.panUp(2*t*n/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var r=(new THREE.Matrix4).makeRotationY(g),n=(new THREE.Matrix4).multiplyMatrices(r,this.object.matrix);this.object.quaternion.setFromRotationMatrix(n),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",n,!1),this.domElement.addEventListener("DOMMouseScroll",n,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function r(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;A=M.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;A=M.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;A=M.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",n,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function n(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(A===M.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(A===M.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(A===M.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",n,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),A=M.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;A=M.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;A=M.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;A=M.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:A=M.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(A!==M.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(A!==M.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,r=Math.sqrt(i*i+o*o);R.set(0,r),C.subVectors(R,P);var n=t.clientWidth,a=t.clientHeight,s=Math.sqrt(n*n+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(A!==M.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:A=M.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),A=M.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,V=new THREE.Vector3,M={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},A=M.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,r=o.clone().sub(h.target),n=r.length();n*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*n/i.clientHeight),h.panUp(2*t*n/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),r=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var n=Math.min(1,this.fadeFactor*e);o+=n*w,r+=n*x,r=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,r)),r=Math.max(p,Math.min(Math.PI-p,r));var a=T.length();a+=(H-1)*a*n,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(n)),T.x=a*Math.sin(r)*Math.sin(o),T.y=a*Math.cos(r),T.z=a*Math.sin(r)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}V.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),V.copy(this.object.position))},this.reset=function(){A=M.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",r,!1),s.domElement.addEventListener("mouseup",n,!1)}}}function r(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function n(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",r,!1),s.domElement.removeEventListener("mouseup",n,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},r=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(r){var n=r.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(r,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*n*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},r=new THREE.Vector3(o.x,o.y,.5);r.unproject(f);var n=r.sub(f.position).normalize(),a=new THREE.Ray(f.position,n),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,n.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var n=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,n),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var r=i.children[o];r.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,r){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=r,this.loadQueue=[];var n=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(n,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var n=r.shift();if(n instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(n.boundingBox,n.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var n=c.loadQueue[0],u=n.geometryNode;if(u.loaded===!0&&void 0!==n.parent){var h=this.replaceProxy(n);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else n.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i,o){e.fov=i.fov*(Math.PI/180),e.screenWidth=o.domElement.clientWidth,e.screenHeight=o.domElement.clientHeight,e.spacing=this.pcoGeometry.spacing,e.near=i.near,e.far=i.far,e.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,e.pointSizeType&&(e.pointSizeType===Potree.PointSizeType.ADAPTIVE||e.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(e,t)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var n=0;n=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=n.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,n,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=r.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,V=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),M=t.domElement.clientHeight*V;if(!(Mg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var A=0,B=0;Bm[B].weight){var A=B;break}if(B==m.length-1){A=m.length;break}}m.splice(A,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var r=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(r);for(var n={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dn;n++)if(void 0!==t.children[n]){var a=t.children[n],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),r=(new THREE.Matrix4).makeTranslation(n,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(r),a}}(n,a,o),d={start:n,end:a,points:s,project:l};i.push(d),o+=n.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,r){if(void 0===r){var n=[];n.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;n.length>0;){var f=n.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),r=e.clone();return r.applyMatrix4(t),r.applyMatrix4(o),r}}(e,t);return m.project=A,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,r))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},r=o.pickWindowSize||17,n=this.nodesOnRay(this.visibleNodes,i);if(0===n.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointShape=this.material.pointShape,this.pickMaterial.interpolate=this.material.interpolate,this.updateMaterial(this.pickMaterial,n,t,e);var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(r-1)/2,l.y-(r-1)/2,r,r),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),n.length>0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var V={},M=n[P.pcIndex],A=M.geometry.attributes;for(var B in A)if(A.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=M.geometry.attributes.position.array,W=L[3*P.pIndex+0],G=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(W,G,N);X.applyMatrix4(this.matrixWorld),V[B]=X}else if("indices"===B);else if(1===I.itemSize)V[B]=I.array[u+O];else{for(var D=[],O=0;Oc;c++){var u=n[3*c+0],h=n[3*c+1],p=n[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/r.x),v=parseInt(a*(m.z-o.min.z)/r.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&n.x.5&&n.y0;){{var n=r.shift(),a=n.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,n.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),r[n+0]=c,r[n+1]=h,r[n+2]=u,n+=3}o.addAttribute("position",new THREE.BufferAttribute(r,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),r=0;o>r;r++)e+=i.substr(r*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],r=i.getUint8(0),n=i.getUint32(1,!0);e.numPoints=n,o.push({children:r,numPoints:n,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(r){console.log("fehler beim laden der punktwolke: "+r)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",r=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],n=THREE.ImageUtils.loadTextureCube(r,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:n},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var r=new THREE.LineBasicMaterial({color:o||8947848}),n=new THREE.Geometry,a=0;t>=a;a++)n.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),n.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(n,r,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var r=o.image.data,n=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,r[3*u+0]=255*(h/15+.05+p)*n[0],r[3*u+1]=255*(h/15+.05+p)*n[1],r[3*u+2]=255*(h/15+.05+p)*n[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(r)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(r)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,r=-t.radius,n=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(r>s)return 0;n=Math.min(n,s)}return n>=t.radius?2:1},Potree.utils.screenPass=new function(){this.screenScene=new THREE.Scene,this.screenQuad=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2,0)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new THREE.Camera,this.render=function(e,t,i){this.screenQuad.material=t,void 0===typeof i?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,i)}},Potree.Features=function(){var e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");if(null===t)return null;var i,o=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT),r=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT),n=(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.LOW_FLOAT),t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT)),a=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT),s=(t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.LOW_FLOAT),o.precision>0&&n.precision>0),l=r.precision>0&&a.precision>0;return i=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getExtension("OES_texture_float"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},SHADER_EDL:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getExtension("OES_texture_float"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},precision:i}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,r=o+2*this.borderThickness,n=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=r,t.canvas.height=n,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*r,.01*n,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,r,n){e.beginPath(),e.moveTo(t+n,i),e.lineTo(t+o-n,i),e.quadraticCurveTo(t+o,i,t+o,i+n),e.lineTo(t+o,i+r-n),e.quadraticCurveTo(t+o,i+r,t+o-n,i+r),e.lineTo(t+n,i+r),e.quadraticCurveTo(t,i+r,t,i+r-n),e.lineTo(t,i+n),e.quadraticCurveTo(t,i,t+n,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},r=function(e){e.target.material.emissive.setHex(0)},n=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var r=e.spheres.indexOf(i.dragstart.object);e.setPosition(r,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",r),s.addEventListener("drag",n),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){var t=this.points[r];o.add(t)}o.divideScalar(this.points.length);for(var r=0;i>=r;r++){var n=r,a=r+1>i?0:r+1,s=0===r?i:r-1,t=this.points[n],l=this.points[a],d=this.points[s],c=this.spheres[n];c.position.copy(t),c.material.color=e.color;var u=this.edges[n];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>n||this.closed;var h=this.edgeLabels[r],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>n||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[r],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>n||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function r(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var r=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(r,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function n(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&n(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,r="undefined"!=typeof e.closed?e.closed:!1,n=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=r,a.maxMarkers=n,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){{var e=this.points[n],a=this.spheres[n],s=0===n?r:n-1,l=n===r?0:n+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[n],p=this.boxes[s];this.boxes[n],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var n=0;n0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT; +var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),r=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(r);var n=function(){r.material.color.setHex(5592405)},a=function(){r.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),r=t.clone().unproject(s.camera),n=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(n,r),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,r).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=r;r++){var n=2*Math.PI*r/o,a=3*Math.cos(n),l=3*Math.sin(n);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,r=0;rt;t++)r.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function r(){}function n(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?n[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ac)&&(r=l,n=c)}}return r?r.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var r=[],n=0;n=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",r,!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var r=0;rH&&(M=Number.MAX_VALUE);var A=t.domElement.clientHeight*M;if(!(Af[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var r=0;r0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),r=0;r0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var V={},M=n[P.pcIndex],A=M.geometry.attributes;for(var B in A)if(A.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=M.geometry.attributes.position.array,W=L[3*P.pIndex+0],G=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(W,G,N);X.applyMatrix4(this.matrixWorld),V[B]=X}else if("indices"===B);else if(1===I.itemSize)V[B]=I.array[u+O];else{for(var D=[],O=0;Or?-1:r>n?1:0};t.sort(r);for(var n=[],a=0;a0&&(l+=1,d=n.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&n.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?n.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),r=e.byteLength/17,n=new Float32Array(3*r),a=new Float32Array(3*r),s=new Uint32Array(r),l=0;r>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256; +n[3*l+0]=d,n[3*l+1]=c,n[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(n,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*r),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=r}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),r=new Potree.PointCloudArena4DGeometry;r.url=e,r.name=o.Name,r.provider=o.Provider,r.numNodes=o.Nodes,r.numPoints=o.Points,r.version=o.Version,r.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(r.spacing=o.Spacing);var n=r.boundingBox.min.clone().multiplyScalar(-1);r.boundingBox.min.add(n),r.boundingBox.max.add(n),r.offset=n;var a=r.boundingBox.center(),s=r.boundingBox.size().length()/2;r.boundingSphere=new THREE.Sphere(a,s),r.loadHierarchy(),t(r)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,r=new DataView(e),n=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=r.getUint8(3*l+0,!0),c=(r.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=n.length,s=Math.max(s,v.level),n.length>0){var g=n[n.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,n.push(v),v.isLeaf)for(var P=!1;!P&&n.length>0;){n.pop();var R=n[n.length-1];P=n.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file diff --git a/build/workers/BinaryDecoderWorker.js b/build/workers/BinaryDecoderWorker.js index 16e42b22c5..b976cc0d92 100644 --- a/build/workers/BinaryDecoderWorker.js +++ b/build/workers/BinaryDecoderWorker.js @@ -1 +1 @@ -Potree.workers.binaryDecoder = new Potree.WorkerManager(atob("Ci8vIGh0dHA6Ly9qc3BlcmYuY29tL3VpbnQ4YXJyYXktdnMtZGF0YXZpZXczLzMKZnVuY3Rpb24gQ3VzdG9tVmlldyhidWZmZXIpIHsKCXRoaXMuYnVmZmVyID0gYnVmZmVyOwoJdGhpcy51OCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CgkKCXZhciB0bXAgPSBuZXcgQXJyYXlCdWZmZXIoNCk7Cgl2YXIgdG1wZiA9IG5ldyBGbG9hdDMyQXJyYXkodG1wKTsKCXZhciB0bXB1OCA9IG5ldyBVaW50OEFycmF5KHRtcCk7CgkKCXRoaXMuZ2V0VWludDMyID0gZnVuY3Rpb24gKGkpIHsKCQlyZXR1cm4gKHRoaXMudThbaSszXSA8PCAyNCkgfCAodGhpcy51OFtpKzJdIDw8IDE2KSB8ICh0aGlzLnU4W2krMV0gPDwgOCkgfCB0aGlzLnU4W2ldOwoJfQoJCgl0aGlzLmdldFVpbnQxNiA9IGZ1bmN0aW9uIChpKSB7CgkJcmV0dXJuICh0aGlzLnU4W2krMV0gPDwgOCkgfCB0aGlzLnU4W2ldOwoJfQoJCgl0aGlzLmdldEZsb2F0ID0gZnVuY3Rpb24oaSl7CgkJdG1wdThbMF0gPSB0aGlzLnU4W2krMF07CgkJdG1wdThbMV0gPSB0aGlzLnU4W2krMV07CgkJdG1wdThbMl0gPSB0aGlzLnU4W2krMl07CgkJdG1wdThbM10gPSB0aGlzLnU4W2krM107CgkJCgkJcmV0dXJuIHRtcGZbMF07Cgl9CgkKCXRoaXMuZ2V0VWludDggPSBmdW5jdGlvbihpKXsKCQlyZXR1cm4gdGhpcy51OFtpXTsKCX0KfQoKUG90cmVlID0ge307CgoKb25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpewoJdmFyIGJ1ZmZlciA9IGV2ZW50LmRhdGEuYnVmZmVyOwoJdmFyIHBvaW50QXR0cmlidXRlcyA9IGV2ZW50LmRhdGEucG9pbnRBdHRyaWJ1dGVzOwoJdmFyIG51bVBvaW50cyA9IGJ1ZmZlci5ieXRlTGVuZ3RoIC8gcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplOwoJdmFyIGN2ID0gbmV3IEN1c3RvbVZpZXcoYnVmZmVyKTsKCXZhciB2ZXJzaW9uID0gbmV3IFBvdHJlZS5WZXJzaW9uKGV2ZW50LmRhdGEudmVyc2lvbik7Cgl2YXIgbWluID0gZXZlbnQuZGF0YS5taW47Cgl2YXIgbm9kZU9mZnNldCA9IGV2ZW50LmRhdGEub2Zmc2V0OwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCQoJdmFyIGF0dHJpYnV0ZUJ1ZmZlcnMgPSB7fTsKCQoJdmFyIG9mZnNldCA9IDA7Cglmb3IodmFyIGkgPSAwOyBpIDwgcG9pbnRBdHRyaWJ1dGVzLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspewoJCXZhciBwb2ludEF0dHJpYnV0ZSA9IHBvaW50QXR0cmlidXRlcy5hdHRyaWJ1dGVzW2ldOwoJCgkJaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLlBPU0lUSU9OX0NBUlRFU0lBTi5uYW1lKXsKCQkJCgkJCXZhciBidWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KjMpOwoJCQl2YXIgcG9zaXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShidWZmKTsKCQkJCgkJCWZvcih2YXIgaiA9IDA7IGogPCBudW1Qb2ludHM7IGorKyl7CgkJCQlpZih2ZXJzaW9uLm5ld2VyVGhhbigiMS4zIikpewoJCQkJCXBvc2l0aW9uc1szKmorMF0gPSAoY3YuZ2V0VWludDMyKG9mZnNldCArIGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplKzApICogc2NhbGUpICsgbWluWzBdOwoJCQkJCXBvc2l0aW9uc1szKmorMV0gPSAoY3YuZ2V0VWludDMyKG9mZnNldCArIGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplKzQpICogc2NhbGUpICsgbWluWzFdOwoJCQkJCXBvc2l0aW9uc1szKmorMl0gPSAoY3YuZ2V0VWludDMyKG9mZnNldCArIGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplKzgpICogc2NhbGUpICsgbWluWzJdOwoJCQkJfWVsc2V7CgkJCQkJcG9zaXRpb25zWzMqaiswXSA9IGN2LmdldEZsb2F0KGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplKzApICsgbm9kZU9mZnNldFswXTsKCQkJCQlwb3NpdGlvbnNbMypqKzFdID0gY3YuZ2V0RmxvYXQoaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUrNCkgKyBub2RlT2Zmc2V0WzFdOwoJCQkJCXBvc2l0aW9uc1szKmorMl0gPSBjdi5nZXRGbG9hdChqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSs4KSArIG5vZGVPZmZzZXRbMl07CgkJCQl9CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJCQoJCX1lbHNlIGlmKHBvaW50QXR0cmlidXRlLm5hbWUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5DT0xPUl9QQUNLRUQubmFtZSl7CgkJCQoJCQl2YXIgYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcihudW1Qb2ludHMqNCozKTsKCQkJdmFyIGNvbG9ycyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCQoJCQlmb3IodmFyIGogPSAwOyBqIDwgbnVtUG9pbnRzOyBqKyspewoJCQkJY29sb3JzWzMqaiswXSA9IGN2LmdldFVpbnQ4KG9mZnNldCArIGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMCkgLyAyNTU7CgkJCQljb2xvcnNbMypqKzFdID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUgKyAxKSAvIDI1NTsKCQkJCWNvbG9yc1szKmorMl0gPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDIpIC8gMjU1OwoJCQl9CgkJCQoJCQlhdHRyaWJ1dGVCdWZmZXJzW3BvaW50QXR0cmlidXRlLm5hbWVdID0geyBidWZmZXI6IGJ1ZmYsIGF0dHJpYnV0ZTogcG9pbnRBdHRyaWJ1dGV9OwoJCQkKCQl9ZWxzZSBpZihwb2ludEF0dHJpYnV0ZS5uYW1lID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuSU5URU5TSVRZLm5hbWUpewoKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJCQl2YXIgaW50ZW5zaXRpZXMgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmYpOwoJCQkKCQkJZm9yKHZhciBqID0gMDsgaiA8IG51bVBvaW50czsgaisrKXsKCQkJCXZhciBpbnRlbnNpdHkgPSBjdi5nZXRVaW50MTYob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUpOwoJCQkJaW50ZW5zaXRpZXNbal0gPSBpbnRlbnNpdHk7CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJCgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLkNMQVNTSUZJQ0FUSU9OLm5hbWUpewoKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJCQl2YXIgY2xhc3NpZmljYXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShidWZmKTsKCQkJCgkJCWZvcih2YXIgaiA9IDA7IGogPCBudW1Qb2ludHM7IGorKyl7CgkJCQl2YXIgY2xhc3NpZmljYXRpb24gPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSk7CgkJCQljbGFzc2lmaWNhdGlvbnNbal0gPSBjbGFzc2lmaWNhdGlvbjsKCQkJfQoJCQkKCQkJYXR0cmlidXRlQnVmZmVyc1twb2ludEF0dHJpYnV0ZS5uYW1lXSA9IHsgYnVmZmVyOiBidWZmLCBhdHRyaWJ1dGU6IHBvaW50QXR0cmlidXRlfTsKCQkKCQl9ZWxzZSBpZihwb2ludEF0dHJpYnV0ZS5uYW1lID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX1NQSEVSRU1BUFBFRC5uYW1lKXsKCgkJCXZhciBidWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KjMpOwoJCQl2YXIgbm9ybWFscyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCQoJCQlmb3IodmFyIGogPSAwOyBqIDwgbnVtUG9pbnRzOyBqKyspewoJCQkJdmFyIGJ4ID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDApOwoJCQkJdmFyIGJ5ID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDEpOwoJCQkKCQkJCXZhciBleCA9IGJ4IC8gMjU1OwoJCQkJdmFyIGV5ID0gYnkgLyAyNTU7CgkJCQkKCQkJCXZhciBueCA9IGV4ICogMiAtIDE7CgkJCQl2YXIgbnkgPSBleSAqIDIgLSAxOwoJCQkJdmFyIG56ID0gMTsKCQkJCXZhciBudyA9IC0xOwoJCQkJCgkJCQl2YXIgbCA9IChueCAqICgtbngpKSArIChueSAqICgtbnkpKSArIChueiAqICgtbncpKTsKCQkJCW56ID0gbDsKCQkJCW54ID0gbnggKiBNYXRoLnNxcnQobCk7CgkJCQlueSA9IG55ICogTWF0aC5zcXJ0KGwpOwoJCQkJCgkJCQlueCA9IG54ICogMjsKCQkJCW55ID0gbnkgKiAyOwoJCQkJbnogPSBueiAqIDIgLSAxOwoJCQkJCgkJCQlub3JtYWxzWzMqaiArIDBdID0gbng7CgkJCQlub3JtYWxzWzMqaiArIDFdID0gbnk7CgkJCQlub3JtYWxzWzMqaiArIDJdID0gbno7CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9PQ1QxNi5uYW1lKXsKCQkJCgkJCXZhciBidWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KjMpOwoJCQl2YXIgbm9ybWFscyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCWZvcih2YXIgaiA9IDA7IGogPCBudW1Qb2ludHM7IGorKyl7CgkJCQl2YXIgYnggPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMCk7CgkJCQl2YXIgYnkgPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMSk7CgkJCQkKCQkJCXZhciB1ID0gKGJ4IC8gMjU1KSAqIDIgLSAxOwoJCQkJdmFyIHYgPSAoYnkgLyAyNTUpICogMiAtIDE7CgkJCQkKCQkJCXZhciB6ID0gMSAtIE1hdGguYWJzKHUpIC0gTWF0aC5hYnModik7CgkJCQkKCQkJCWlmKHogPj0gMCl7CgkJCQkJdmFyIHggPSB1OwoJCQkJCXZhciB5ID0gdjsKCQkJCX1lbHNlewoJCQkJCXZhciB4ID0gLSAodi9NYXRoLnNpZ24odikgLSAxKSAvIE1hdGguc2lnbih1KTsKCQkJCQl2YXIgeSA9IC0gKHUvTWF0aC5zaWduKHUpIC0gMSkgLyBNYXRoLnNpZ24odik7CgkJCQl9CgkJCQkKCQkJCXZhciBsZW5ndGggPSBNYXRoLnNxcnQoeCp4ICsgeSp5ICsgeip6KTsKCQkJCXggPSB4IC8gbGVuZ3RoOwoJCQkJeSA9IHkgLyBsZW5ndGg7CgkJCQl6ID0geiAvIGxlbmd0aDsKCQkJCQoJCQkJbm9ybWFsc1szKmogKyAwXSA9IHg7CgkJCQlub3JtYWxzWzMqaiArIDFdID0geTsKCQkJCW5vcm1hbHNbMypqICsgMl0gPSB6OwoJCQl9CgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTC5uYW1lKXsKCQkKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQqMyk7CgkJCXZhciBub3JtYWxzID0gbmV3IEZsb2F0MzJBcnJheShidWZmKTsKCQkJZm9yKHZhciBqID0gMDsgaiA8IG51bVBvaW50czsgaisrKXsKCQkJCXZhciB4ID0gY3YuZ2V0RmxvYXQob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDApOwoJCQkJdmFyIHkgPSBjdi5nZXRGbG9hdChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgNCk7CgkJCQl2YXIgeiA9IGN2LmdldEZsb2F0KG9mZnNldCArIGogKiBwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUgKyA4KTsKCQkJCQoJCQkJbm9ybWFsc1szKmogKyAwXSA9IHg7CgkJCQlub3JtYWxzWzMqaiArIDFdID0geTsKCQkJCW5vcm1hbHNbMypqICsgMl0gPSB6OwoJCQl9CgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfQoJCQoJCW9mZnNldCArPSBwb2ludEF0dHJpYnV0ZS5ieXRlU2l6ZTsKCX0KCQoJdmFyIGluZGljZXMgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJdmFyIGlJbmRpY2VzID0gbmV3IFVpbnQzMkFycmF5KGluZGljZXMpOwoJZm9yKHZhciBpID0gMDsgaSA8IG51bVBvaW50czsgaSsrKXsKCQlpSW5kaWNlc1tpXSA9IGk7Cgl9CgkKCXZhciBtZXNzYWdlID0gewoJCWF0dHJpYnV0ZUJ1ZmZlcnM6IGF0dHJpYnV0ZUJ1ZmZlcnMsCgkJaW5kaWNlczogaW5kaWNlcwoJfTsKCQkKCXZhciB0cmFuc2ZlcmFibGVzID0gW107CgkKCWZvcih2YXIgcHJvcGVydHkgaW4gbWVzc2FnZS5hdHRyaWJ1dGVCdWZmZXJzKXsKCQlpZihtZXNzYWdlLmF0dHJpYnV0ZUJ1ZmZlcnMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKXsKCQkJdHJhbnNmZXJhYmxlcy5wdXNoKG1lc3NhZ2UuYXR0cmlidXRlQnVmZmVyc1twcm9wZXJ0eV0uYnVmZmVyKTsKCQl9Cgl9CgkKCXRyYW5zZmVyYWJsZXMucHVzaChtZXNzYWdlLmluZGljZXMpOwoJCQoJcG9zdE1lc3NhZ2UobWVzc2FnZSwgdHJhbnNmZXJhYmxlcyk7CgkKfTsKUG90cmVlLlZlcnNpb24gPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXRoaXMudmVyc2lvbiA9IHZlcnNpb247Cgl2YXIgdm1MZW5ndGggPSAodmVyc2lvbi5pbmRleE9mKCIuIikgPT09IC0xKSA/IHZlcnNpb24ubGVuZ3RoIDogdmVyc2lvbi5pbmRleE9mKCIuIik7Cgl0aGlzLnZlcnNpb25NYWpvciA9IHBhcnNlSW50KHZlcnNpb24uc3Vic3RyKDAsIHZtTGVuZ3RoKSk7Cgl0aGlzLnZlcnNpb25NaW5vciA9IHBhcnNlSW50KHZlcnNpb24uc3Vic3RyKHZtTGVuZ3RoICsgMSkpOwoJaWYodGhpcy52ZXJzaW9uTWlub3IubGVuZ3RoID09PSAwKXsKCQl0aGlzLnZlcnNpb25NaW5vciA9IDA7Cgl9CgkKfTsKClBvdHJlZS5WZXJzaW9uLnByb3RvdHlwZS5uZXdlclRoYW4gPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXZhciB2ID0gbmV3IFBvdHJlZS5WZXJzaW9uKHZlcnNpb24pOwoJCglpZiggdGhpcy52ZXJzaW9uTWFqb3IgPiB2LnZlcnNpb25NYWpvcil7CgkJcmV0dXJuIHRydWU7Cgl9ZWxzZSBpZiggdGhpcy52ZXJzaW9uTWFqb3IgPT09IHYudmVyc2lvbk1ham9yICYmIHRoaXMudmVyc2lvbk1pbm9yID4gdi52ZXJzaW9uTWlub3IpewoJCXJldHVybiB0cnVlOwoJfWVsc2V7CgkJcmV0dXJuIGZhbHNlOwoJfQp9OwoKUG90cmVlLlZlcnNpb24ucHJvdG90eXBlLmVxdWFsT3JIaWdoZXIgPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXZhciB2ID0gbmV3IFBvdHJlZS5WZXJzaW9uKHZlcnNpb24pOwoJCglpZiggdGhpcy52ZXJzaW9uTWFqb3IgPiB2LnZlcnNpb25NYWpvcil7CgkJcmV0dXJuIHRydWU7Cgl9ZWxzZSBpZiggdGhpcy52ZXJzaW9uTWFqb3IgPT09IHYudmVyc2lvbk1ham9yICYmIHRoaXMudmVyc2lvbk1pbm9yID49IHYudmVyc2lvbk1pbm9yKXsKCQlyZXR1cm4gdHJ1ZTsKCX1lbHNlewoJCXJldHVybiBmYWxzZTsKCX0KfTsKClBvdHJlZS5WZXJzaW9uLnByb3RvdHlwZS51cFRvID0gZnVuY3Rpb24odmVyc2lvbil7CglyZXR1cm4gIXRoaXMubmV3ZXJUaGFuKHZlcnNpb24pOwp9ClBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzID0ge307CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5QT1NJVElPTl9DQVJURVNJQU4gCT0gMDsJLy8gZmxvYXQgeCwgeSwgejsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuQ09MT1JfUEFDS0VECQk9IDE7CS8vIGJ5dGUgciwgZywgYiwgYTsgCUkgPSBbMCwxXQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9GTE9BVFNfMQkJPSAyOwkvLyBmbG9hdCByLCBnLCBiOyAJCUkgPSBbMCwxXQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9GTE9BVFNfMjU1CT0gMzsJLy8gZmxvYXQgciwgZywgYjsgCQlJID0gWzAsMjU1XQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfRkxPQVRTCQk9IDQ7ICAJLy8gZmxvYXQgeCwgeSwgejsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuRklMTEVSCQkJCT0gNTsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuSU5URU5TSVRZCQkJPSA2OwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DTEFTU0lGSUNBVElPTgkJPSA3OwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfU1BIRVJFTUFQUEVECT0gODsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuTk9STUFMX09DVDE2CQk9IDk7ClBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTAkJCQk9IDEwOwoKLyoqCiAqIFNvbWUgdHlwZXMgb2YgcG9zc2libGUgcG9pbnQgYXR0cmlidXRlIGRhdGEgZm9ybWF0cwogKiAKICogQGNsYXNzCiAqLwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcyA9IHsKCURBVEFfVFlQRV9ET1VCTEUJOiB7b3JkaW5hbCA6IDAsIHNpemU6IDh9LAoJREFUQV9UWVBFX0ZMT0FUCQk6IHtvcmRpbmFsIDogMSwgc2l6ZTogNH0sCglEQVRBX1RZUEVfSU5UOAkJOiB7b3JkaW5hbCA6IDIsIHNpemU6IDF9LAoJREFUQV9UWVBFX1VJTlQ4CQk6IHtvcmRpbmFsIDogMywgc2l6ZTogMX0sCglEQVRBX1RZUEVfSU5UMTYJCToge29yZGluYWwgOiA0LCBzaXplOiAyfSwKCURBVEFfVFlQRV9VSU5UMTYJOiB7b3JkaW5hbCA6IDUsIHNpemU6IDJ9LAoJREFUQV9UWVBFX0lOVDMyCQk6IHtvcmRpbmFsIDogNiwgc2l6ZTogNH0sCglEQVRBX1RZUEVfVUlOVDMyCToge29yZGluYWwgOiA3LCBzaXplOiA0fSwKCURBVEFfVFlQRV9JTlQ2NAkJOiB7b3JkaW5hbCA6IDgsIHNpemU6IDh9LAoJREFUQV9UWVBFX1VJTlQ2NAk6IHtvcmRpbmFsIDogOSwgc2l6ZTogOH0KfTsKCnZhciBpID0gMDsKZm9yKHZhciBvYmogaW4gUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMpewoJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXNbaV0gPSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlc1tvYmpdOwoJaSsrOwp9CgovKioKICogQSBzaW5nbGUgcG9pbnQgYXR0cmlidXRlIHN1Y2ggYXMgY29sb3Ivbm9ybWFsLy4uIGFuZCBpdHMgZGF0YSBmb3JtYXQvbnVtYmVyIG9mIGVsZW1lbnRzLy4uLiAKICogCiAqIEBjbGFzcwogKiBAcGFyYW0gbmFtZSAKICogQHBhcmFtIHR5cGUKICogQHBhcmFtIHNpemUKICogQHJldHVybnMKICovClBvdHJlZS5Qb2ludEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUsIHR5cGUsIG51bUVsZW1lbnRzKXsKCXRoaXMubmFtZSA9IG5hbWU7Cgl0aGlzLnR5cGUgPSB0eXBlOyAKCXRoaXMubnVtRWxlbWVudHMgPSBudW1FbGVtZW50czsKCXRoaXMuYnl0ZVNpemUgPSB0aGlzLm51bUVsZW1lbnRzICogdGhpcy50eXBlLnNpemU7Cn0KClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5QT1NJVElPTl9DQVJURVNJQU4gPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLlBPU0lUSU9OX0NBUlRFU0lBTiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfRkxPQVQsIDMpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLlJHQkFfUEFDS0VEID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9QQUNLRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0lOVDgsIDQpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLkNPTE9SX1BBQ0tFRCA9IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5SR0JBX1BBQ0tFRDsKClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5SR0JfUEFDS0VEID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9QQUNLRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0lOVDgsIDMpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9GTE9BVFMgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTF9GTE9BVFMsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0ZMT0FULCAzKTsKClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5GSUxMRVJfMUIgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLkZJTExFUiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfVUlOVDgsIDEpOwoJCQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuSU5URU5TSVRZID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5JTlRFTlNJVFksCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQxNiwgMSk7CQkKCQkKUG90cmVlLlBvaW50QXR0cmlidXRlLkNMQVNTSUZJQ0FUSU9OID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DTEFTU0lGSUNBVElPTiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfVUlOVDgsIDEpOwkKCQkKUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9TUEhFUkVNQVBQRUQgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTF9TUEhFUkVNQVBQRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQ4LCAyKTsJCQoJCQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX09DVDE2ID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfT0NUMTYsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQ4LCAyKTsJCgkJClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5OT1JNQUwgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTCwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfRkxPQVQsIDMpOwoKLyoqCiAqIE9yZGVyZWQgbGlzdCBvZiBQb2ludEF0dHJpYnV0ZXMgdXNlZCB0byBpZGVudGlmeSBob3cgcG9pbnRzIGFyZSBhbGlnbmVkIGluIGEgYnVmZmVyLgogKiAKICogQGNsYXNzCiAqIAogKi8KUG90cmVlLlBvaW50QXR0cmlidXRlcyA9IGZ1bmN0aW9uKHBvaW50QXR0cmlidXRlcyl7Cgl0aGlzLmF0dHJpYnV0ZXMgPSBuZXcgQXJyYXkoKTsKCXRoaXMuYnl0ZVNpemUgPSAwOwoJdGhpcy5zaXplID0gMDsKCQoJaWYocG9pbnRBdHRyaWJ1dGVzICE9IG51bGwpewkKCQlmb3IodmFyIGkgPSAwOyBpIDwgcG9pbnRBdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKXsKCQkJdmFyIHBvaW50QXR0cmlidXRlTmFtZSA9IHBvaW50QXR0cmlidXRlc1tpXTsKCQkJdmFyIHBvaW50QXR0cmlidXRlID0gUG90cmVlLlBvaW50QXR0cmlidXRlW3BvaW50QXR0cmlidXRlTmFtZV07CgkJCXRoaXMuYXR0cmlidXRlcy5wdXNoKHBvaW50QXR0cmlidXRlKTsKCQkJdGhpcy5ieXRlU2l6ZSArPSBwb2ludEF0dHJpYnV0ZS5ieXRlU2l6ZTsKCQkJdGhpcy5zaXplKys7CgkJfQoJfQp9CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVzLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihwb2ludEF0dHJpYnV0ZSl7Cgl0aGlzLmF0dHJpYnV0ZXMucHVzaChwb2ludEF0dHJpYnV0ZSk7Cgl0aGlzLmJ5dGVTaXplICs9IHBvaW50QXR0cmlidXRlLmJ5dGVTaXplOwoJdGhpcy5zaXplKys7Cn07CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVzLnByb3RvdHlwZS5oYXNDb2xvcnMgPSBmdW5jdGlvbigpewoJZm9yKHZhciBuYW1lIGluIHRoaXMuYXR0cmlidXRlcyl7CgkJdmFyIHBvaW50QXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzW25hbWVdOwoJCWlmKHBvaW50QXR0cmlidXRlLm5hbWUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLkNPTE9SX1BBQ0tFRCl7CgkJCXJldHVybiB0cnVlOwoJCX0KCX0KCQoJcmV0dXJuIGZhbHNlOwp9OwoKUG90cmVlLlBvaW50QXR0cmlidXRlcy5wcm90b3R5cGUuaGFzTm9ybWFscyA9IGZ1bmN0aW9uKCl7Cglmb3IodmFyIG5hbWUgaW4gdGhpcy5hdHRyaWJ1dGVzKXsKCQl2YXIgcG9pbnRBdHRyaWJ1dGUgPSB0aGlzLmF0dHJpYnV0ZXNbbmFtZV07CgkJaWYoCgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX1NQSEVSRU1BUFBFRCB8fCAKCQkJcG9pbnRBdHRyaWJ1dGUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5OT1JNQUxfRkxPQVRTIHx8CgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMIHx8CgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX09DVDE2KXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoJCglyZXR1cm4gZmFsc2U7Cn07CgoK")); \ No newline at end of file +Potree.workers.binaryDecoder = new Potree.WorkerManager(atob("Ci8vIGh0dHA6Ly9qc3BlcmYuY29tL3VpbnQ4YXJyYXktdnMtZGF0YXZpZXczLzMKZnVuY3Rpb24gQ3VzdG9tVmlldyhidWZmZXIpIHsKCXRoaXMuYnVmZmVyID0gYnVmZmVyOwoJdGhpcy51OCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CgkKCXZhciB0bXAgPSBuZXcgQXJyYXlCdWZmZXIoNCk7Cgl2YXIgdG1wZiA9IG5ldyBGbG9hdDMyQXJyYXkodG1wKTsKCXZhciB0bXB1OCA9IG5ldyBVaW50OEFycmF5KHRtcCk7CgkKCXRoaXMuZ2V0VWludDMyID0gZnVuY3Rpb24gKGkpIHsKCQlyZXR1cm4gKHRoaXMudThbaSszXSA8PCAyNCkgfCAodGhpcy51OFtpKzJdIDw8IDE2KSB8ICh0aGlzLnU4W2krMV0gPDwgOCkgfCB0aGlzLnU4W2ldOwoJfQoJCgl0aGlzLmdldFVpbnQxNiA9IGZ1bmN0aW9uIChpKSB7CgkJcmV0dXJuICh0aGlzLnU4W2krMV0gPDwgOCkgfCB0aGlzLnU4W2ldOwoJfQoJCgl0aGlzLmdldEZsb2F0ID0gZnVuY3Rpb24oaSl7CgkJdG1wdThbMF0gPSB0aGlzLnU4W2krMF07CgkJdG1wdThbMV0gPSB0aGlzLnU4W2krMV07CgkJdG1wdThbMl0gPSB0aGlzLnU4W2krMl07CgkJdG1wdThbM10gPSB0aGlzLnU4W2krM107CgkJCgkJcmV0dXJuIHRtcGZbMF07Cgl9CgkKCXRoaXMuZ2V0VWludDggPSBmdW5jdGlvbihpKXsKCQlyZXR1cm4gdGhpcy51OFtpXTsKCX0KfQoKUG90cmVlID0ge307CgoKb25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpewoJdmFyIGJ1ZmZlciA9IGV2ZW50LmRhdGEuYnVmZmVyOwoJdmFyIHBvaW50QXR0cmlidXRlcyA9IGV2ZW50LmRhdGEucG9pbnRBdHRyaWJ1dGVzOwoJdmFyIG51bVBvaW50cyA9IGJ1ZmZlci5ieXRlTGVuZ3RoIC8gcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplOwoJdmFyIGN2ID0gbmV3IEN1c3RvbVZpZXcoYnVmZmVyKTsKCXZhciB2ZXJzaW9uID0gbmV3IFBvdHJlZS5WZXJzaW9uKGV2ZW50LmRhdGEudmVyc2lvbik7Cgl2YXIgbWluID0gZXZlbnQuZGF0YS5taW47Cgl2YXIgbm9kZU9mZnNldCA9IGV2ZW50LmRhdGEub2Zmc2V0OwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCXZhciB0aWdodEJveE1pbiA9IFsgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIE51bWJlci5QT1NJVElWRV9JTkZJTklUWV07Cgl2YXIgdGlnaHRCb3hNYXggPSBbIE51bWJlci5ORUdBVElWRV9JTkZJTklUWSAsIE51bWJlci5ORUdBVElWRV9JTkZJTklUWSAsIE51bWJlci5ORUdBVElWRV9JTkZJTklUWSBdOwoJCgl2YXIgYXR0cmlidXRlQnVmZmVycyA9IHt9OwoJCgl2YXIgb2Zmc2V0ID0gMDsKCWZvcih2YXIgaSA9IDA7IGkgPCBwb2ludEF0dHJpYnV0ZXMuYXR0cmlidXRlcy5sZW5ndGg7IGkrKyl7CgkJdmFyIHBvaW50QXR0cmlidXRlID0gcG9pbnRBdHRyaWJ1dGVzLmF0dHJpYnV0ZXNbaV07CgkKCQlpZihwb2ludEF0dHJpYnV0ZS5uYW1lID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuUE9TSVRJT05fQ0FSVEVTSUFOLm5hbWUpewoJCQkKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQqMyk7CgkJCXZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmYpOwoJCQkKCQkJZm9yKHZhciBqID0gMDsgaiA8IG51bVBvaW50czsgaisrKXsKCQkJCWlmKHZlcnNpb24ubmV3ZXJUaGFuKCIxLjMiKSl7CgkJCQkJcG9zaXRpb25zWzMqaiswXSA9IChjdi5nZXRVaW50MzIob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUrMCkgKiBzY2FsZSkgKyBtaW5bMF07CgkJCQkJcG9zaXRpb25zWzMqaisxXSA9IChjdi5nZXRVaW50MzIob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUrNCkgKiBzY2FsZSkgKyBtaW5bMV07CgkJCQkJcG9zaXRpb25zWzMqaisyXSA9IChjdi5nZXRVaW50MzIob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUrOCkgKiBzY2FsZSkgKyBtaW5bMl07CgkJCQl9ZWxzZXsKCQkJCQlwb3NpdGlvbnNbMypqKzBdID0gY3YuZ2V0RmxvYXQoaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUrMCkgKyBub2RlT2Zmc2V0WzBdOwoJCQkJCXBvc2l0aW9uc1szKmorMV0gPSBjdi5nZXRGbG9hdChqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSs0KSArIG5vZGVPZmZzZXRbMV07CgkJCQkJcG9zaXRpb25zWzMqaisyXSA9IGN2LmdldEZsb2F0KGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplKzgpICsgbm9kZU9mZnNldFsyXTsKCQkJCX0KCQkJCQoJCQkJdGlnaHRCb3hNaW5bMF0gPSBNYXRoLm1pbih0aWdodEJveE1pblswXSwgcG9zaXRpb25zWzMqaiswXSk7CgkJCQl0aWdodEJveE1pblsxXSA9IE1hdGgubWluKHRpZ2h0Qm94TWluWzFdLCBwb3NpdGlvbnNbMypqKzFdKTsKCQkJCXRpZ2h0Qm94TWluWzJdID0gTWF0aC5taW4odGlnaHRCb3hNaW5bMl0sIHBvc2l0aW9uc1szKmorMl0pOwoJCQkJCgkJCQl0aWdodEJveE1heFswXSA9IE1hdGgubWF4KHRpZ2h0Qm94TWF4WzBdLCBwb3NpdGlvbnNbMypqKzBdKTsKCQkJCXRpZ2h0Qm94TWF4WzFdID0gTWF0aC5tYXgodGlnaHRCb3hNYXhbMV0sIHBvc2l0aW9uc1szKmorMV0pOwoJCQkJdGlnaHRCb3hNYXhbMl0gPSBNYXRoLm1heCh0aWdodEJveE1heFsyXSwgcG9zaXRpb25zWzMqaisyXSk7CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJCQoJCX1lbHNlIGlmKHBvaW50QXR0cmlidXRlLm5hbWUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5DT0xPUl9QQUNLRUQubmFtZSl7CgkJCQoJCQl2YXIgYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcihudW1Qb2ludHMqNCozKTsKCQkJdmFyIGNvbG9ycyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCQoJCQlmb3IodmFyIGogPSAwOyBqIDwgbnVtUG9pbnRzOyBqKyspewoJCQkJY29sb3JzWzMqaiswXSA9IGN2LmdldFVpbnQ4KG9mZnNldCArIGoqcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMCkgLyAyNTU7CgkJCQljb2xvcnNbMypqKzFdID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUgKyAxKSAvIDI1NTsKCQkJCWNvbG9yc1szKmorMl0gPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDIpIC8gMjU1OwoJCQl9CgkJCQoJCQlhdHRyaWJ1dGVCdWZmZXJzW3BvaW50QXR0cmlidXRlLm5hbWVdID0geyBidWZmZXI6IGJ1ZmYsIGF0dHJpYnV0ZTogcG9pbnRBdHRyaWJ1dGV9OwoJCQkKCQl9ZWxzZSBpZihwb2ludEF0dHJpYnV0ZS5uYW1lID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuSU5URU5TSVRZLm5hbWUpewoKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJCQl2YXIgaW50ZW5zaXRpZXMgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmYpOwoJCQkKCQkJZm9yKHZhciBqID0gMDsgaiA8IG51bVBvaW50czsgaisrKXsKCQkJCXZhciBpbnRlbnNpdHkgPSBjdi5nZXRVaW50MTYob2Zmc2V0ICsgaipwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUpOwoJCQkJaW50ZW5zaXRpZXNbal0gPSBpbnRlbnNpdHk7CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJCgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLkNMQVNTSUZJQ0FUSU9OLm5hbWUpewoKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJCQl2YXIgY2xhc3NpZmljYXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShidWZmKTsKCQkJCgkJCWZvcih2YXIgaiA9IDA7IGogPCBudW1Qb2ludHM7IGorKyl7CgkJCQl2YXIgY2xhc3NpZmljYXRpb24gPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqKnBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSk7CgkJCQljbGFzc2lmaWNhdGlvbnNbal0gPSBjbGFzc2lmaWNhdGlvbjsKCQkJfQoJCQkKCQkJYXR0cmlidXRlQnVmZmVyc1twb2ludEF0dHJpYnV0ZS5uYW1lXSA9IHsgYnVmZmVyOiBidWZmLCBhdHRyaWJ1dGU6IHBvaW50QXR0cmlidXRlfTsKCQkKCQl9ZWxzZSBpZihwb2ludEF0dHJpYnV0ZS5uYW1lID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX1NQSEVSRU1BUFBFRC5uYW1lKXsKCgkJCXZhciBidWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KjMpOwoJCQl2YXIgbm9ybWFscyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCQoJCQlmb3IodmFyIGogPSAwOyBqIDwgbnVtUG9pbnRzOyBqKyspewoJCQkJdmFyIGJ4ID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDApOwoJCQkJdmFyIGJ5ID0gY3YuZ2V0VWludDgob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDEpOwoJCQkKCQkJCXZhciBleCA9IGJ4IC8gMjU1OwoJCQkJdmFyIGV5ID0gYnkgLyAyNTU7CgkJCQkKCQkJCXZhciBueCA9IGV4ICogMiAtIDE7CgkJCQl2YXIgbnkgPSBleSAqIDIgLSAxOwoJCQkJdmFyIG56ID0gMTsKCQkJCXZhciBudyA9IC0xOwoJCQkJCgkJCQl2YXIgbCA9IChueCAqICgtbngpKSArIChueSAqICgtbnkpKSArIChueiAqICgtbncpKTsKCQkJCW56ID0gbDsKCQkJCW54ID0gbnggKiBNYXRoLnNxcnQobCk7CgkJCQlueSA9IG55ICogTWF0aC5zcXJ0KGwpOwoJCQkJCgkJCQlueCA9IG54ICogMjsKCQkJCW55ID0gbnkgKiAyOwoJCQkJbnogPSBueiAqIDIgLSAxOwoJCQkJCgkJCQlub3JtYWxzWzMqaiArIDBdID0gbng7CgkJCQlub3JtYWxzWzMqaiArIDFdID0gbnk7CgkJCQlub3JtYWxzWzMqaiArIDJdID0gbno7CgkJCX0KCQkJCgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9PQ1QxNi5uYW1lKXsKCQkJCgkJCXZhciBidWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KjMpOwoJCQl2YXIgbm9ybWFscyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZik7CgkJCWZvcih2YXIgaiA9IDA7IGogPCBudW1Qb2ludHM7IGorKyl7CgkJCQl2YXIgYnggPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMCk7CgkJCQl2YXIgYnkgPSBjdi5nZXRVaW50OChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgMSk7CgkJCQkKCQkJCXZhciB1ID0gKGJ4IC8gMjU1KSAqIDIgLSAxOwoJCQkJdmFyIHYgPSAoYnkgLyAyNTUpICogMiAtIDE7CgkJCQkKCQkJCXZhciB6ID0gMSAtIE1hdGguYWJzKHUpIC0gTWF0aC5hYnModik7CgkJCQkKCQkJCWlmKHogPj0gMCl7CgkJCQkJdmFyIHggPSB1OwoJCQkJCXZhciB5ID0gdjsKCQkJCX1lbHNlewoJCQkJCXZhciB4ID0gLSAodi9NYXRoLnNpZ24odikgLSAxKSAvIE1hdGguc2lnbih1KTsKCQkJCQl2YXIgeSA9IC0gKHUvTWF0aC5zaWduKHUpIC0gMSkgLyBNYXRoLnNpZ24odik7CgkJCQl9CgkJCQkKCQkJCXZhciBsZW5ndGggPSBNYXRoLnNxcnQoeCp4ICsgeSp5ICsgeip6KTsKCQkJCXggPSB4IC8gbGVuZ3RoOwoJCQkJeSA9IHkgLyBsZW5ndGg7CgkJCQl6ID0geiAvIGxlbmd0aDsKCQkJCQoJCQkJbm9ybWFsc1szKmogKyAwXSA9IHg7CgkJCQlub3JtYWxzWzMqaiArIDFdID0geTsKCQkJCW5vcm1hbHNbMypqICsgMl0gPSB6OwoJCQl9CgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfWVsc2UgaWYocG9pbnRBdHRyaWJ1dGUubmFtZSA9PT0gUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTC5uYW1lKXsKCQkKCQkJdmFyIGJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQqMyk7CgkJCXZhciBub3JtYWxzID0gbmV3IEZsb2F0MzJBcnJheShidWZmKTsKCQkJZm9yKHZhciBqID0gMDsgaiA8IG51bVBvaW50czsgaisrKXsKCQkJCXZhciB4ID0gY3YuZ2V0RmxvYXQob2Zmc2V0ICsgaiAqIHBvaW50QXR0cmlidXRlcy5ieXRlU2l6ZSArIDApOwoJCQkJdmFyIHkgPSBjdi5nZXRGbG9hdChvZmZzZXQgKyBqICogcG9pbnRBdHRyaWJ1dGVzLmJ5dGVTaXplICsgNCk7CgkJCQl2YXIgeiA9IGN2LmdldEZsb2F0KG9mZnNldCArIGogKiBwb2ludEF0dHJpYnV0ZXMuYnl0ZVNpemUgKyA4KTsKCQkJCQoJCQkJbm9ybWFsc1szKmogKyAwXSA9IHg7CgkJCQlub3JtYWxzWzMqaiArIDFdID0geTsKCQkJCW5vcm1hbHNbMypqICsgMl0gPSB6OwoJCQl9CgkJCWF0dHJpYnV0ZUJ1ZmZlcnNbcG9pbnRBdHRyaWJ1dGUubmFtZV0gPSB7IGJ1ZmZlcjogYnVmZiwgYXR0cmlidXRlOiBwb2ludEF0dHJpYnV0ZX07CgkJfQoJCQoJCW9mZnNldCArPSBwb2ludEF0dHJpYnV0ZS5ieXRlU2l6ZTsKCX0KCQoJdmFyIGluZGljZXMgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKjQpOwoJdmFyIGlJbmRpY2VzID0gbmV3IFVpbnQzMkFycmF5KGluZGljZXMpOwoJZm9yKHZhciBpID0gMDsgaSA8IG51bVBvaW50czsgaSsrKXsKCQlpSW5kaWNlc1tpXSA9IGk7Cgl9CgkKCXZhciBtZXNzYWdlID0gewoJCWF0dHJpYnV0ZUJ1ZmZlcnM6IGF0dHJpYnV0ZUJ1ZmZlcnMsCgkJdGlnaHRCb3VuZGluZ0JveDogeyBtaW46IHRpZ2h0Qm94TWluLCBtYXg6IHRpZ2h0Qm94TWF4IH0sCgkJaW5kaWNlczogaW5kaWNlcwoJfTsKCQkKCXZhciB0cmFuc2ZlcmFibGVzID0gW107CgkKCWZvcih2YXIgcHJvcGVydHkgaW4gbWVzc2FnZS5hdHRyaWJ1dGVCdWZmZXJzKXsKCQlpZihtZXNzYWdlLmF0dHJpYnV0ZUJ1ZmZlcnMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKXsKCQkJdHJhbnNmZXJhYmxlcy5wdXNoKG1lc3NhZ2UuYXR0cmlidXRlQnVmZmVyc1twcm9wZXJ0eV0uYnVmZmVyKTsKCQl9Cgl9CgkKCXRyYW5zZmVyYWJsZXMucHVzaChtZXNzYWdlLmluZGljZXMpOwoJCQoJcG9zdE1lc3NhZ2UobWVzc2FnZSwgdHJhbnNmZXJhYmxlcyk7CgkKfTsKUG90cmVlLlZlcnNpb24gPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXRoaXMudmVyc2lvbiA9IHZlcnNpb247Cgl2YXIgdm1MZW5ndGggPSAodmVyc2lvbi5pbmRleE9mKCIuIikgPT09IC0xKSA/IHZlcnNpb24ubGVuZ3RoIDogdmVyc2lvbi5pbmRleE9mKCIuIik7Cgl0aGlzLnZlcnNpb25NYWpvciA9IHBhcnNlSW50KHZlcnNpb24uc3Vic3RyKDAsIHZtTGVuZ3RoKSk7Cgl0aGlzLnZlcnNpb25NaW5vciA9IHBhcnNlSW50KHZlcnNpb24uc3Vic3RyKHZtTGVuZ3RoICsgMSkpOwoJaWYodGhpcy52ZXJzaW9uTWlub3IubGVuZ3RoID09PSAwKXsKCQl0aGlzLnZlcnNpb25NaW5vciA9IDA7Cgl9CgkKfTsKClBvdHJlZS5WZXJzaW9uLnByb3RvdHlwZS5uZXdlclRoYW4gPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXZhciB2ID0gbmV3IFBvdHJlZS5WZXJzaW9uKHZlcnNpb24pOwoJCglpZiggdGhpcy52ZXJzaW9uTWFqb3IgPiB2LnZlcnNpb25NYWpvcil7CgkJcmV0dXJuIHRydWU7Cgl9ZWxzZSBpZiggdGhpcy52ZXJzaW9uTWFqb3IgPT09IHYudmVyc2lvbk1ham9yICYmIHRoaXMudmVyc2lvbk1pbm9yID4gdi52ZXJzaW9uTWlub3IpewoJCXJldHVybiB0cnVlOwoJfWVsc2V7CgkJcmV0dXJuIGZhbHNlOwoJfQp9OwoKUG90cmVlLlZlcnNpb24ucHJvdG90eXBlLmVxdWFsT3JIaWdoZXIgPSBmdW5jdGlvbih2ZXJzaW9uKXsKCXZhciB2ID0gbmV3IFBvdHJlZS5WZXJzaW9uKHZlcnNpb24pOwoJCglpZiggdGhpcy52ZXJzaW9uTWFqb3IgPiB2LnZlcnNpb25NYWpvcil7CgkJcmV0dXJuIHRydWU7Cgl9ZWxzZSBpZiggdGhpcy52ZXJzaW9uTWFqb3IgPT09IHYudmVyc2lvbk1ham9yICYmIHRoaXMudmVyc2lvbk1pbm9yID49IHYudmVyc2lvbk1pbm9yKXsKCQlyZXR1cm4gdHJ1ZTsKCX1lbHNlewoJCXJldHVybiBmYWxzZTsKCX0KfTsKClBvdHJlZS5WZXJzaW9uLnByb3RvdHlwZS51cFRvID0gZnVuY3Rpb24odmVyc2lvbil7CglyZXR1cm4gIXRoaXMubmV3ZXJUaGFuKHZlcnNpb24pOwp9ClBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzID0ge307CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5QT1NJVElPTl9DQVJURVNJQU4gCT0gMDsJLy8gZmxvYXQgeCwgeSwgejsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuQ09MT1JfUEFDS0VECQk9IDE7CS8vIGJ5dGUgciwgZywgYiwgYTsgCUkgPSBbMCwxXQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9GTE9BVFNfMQkJPSAyOwkvLyBmbG9hdCByLCBnLCBiOyAJCUkgPSBbMCwxXQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9GTE9BVFNfMjU1CT0gMzsJLy8gZmxvYXQgciwgZywgYjsgCQlJID0gWzAsMjU1XQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfRkxPQVRTCQk9IDQ7ICAJLy8gZmxvYXQgeCwgeSwgejsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuRklMTEVSCQkJCT0gNTsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuSU5URU5TSVRZCQkJPSA2OwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DTEFTU0lGSUNBVElPTgkJPSA3OwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfU1BIRVJFTUFQUEVECT0gODsKUG90cmVlLlBvaW50QXR0cmlidXRlTmFtZXMuTk9STUFMX09DVDE2CQk9IDk7ClBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTAkJCQk9IDEwOwoKLyoqCiAqIFNvbWUgdHlwZXMgb2YgcG9zc2libGUgcG9pbnQgYXR0cmlidXRlIGRhdGEgZm9ybWF0cwogKiAKICogQGNsYXNzCiAqLwpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcyA9IHsKCURBVEFfVFlQRV9ET1VCTEUJOiB7b3JkaW5hbCA6IDAsIHNpemU6IDh9LAoJREFUQV9UWVBFX0ZMT0FUCQk6IHtvcmRpbmFsIDogMSwgc2l6ZTogNH0sCglEQVRBX1RZUEVfSU5UOAkJOiB7b3JkaW5hbCA6IDIsIHNpemU6IDF9LAoJREFUQV9UWVBFX1VJTlQ4CQk6IHtvcmRpbmFsIDogMywgc2l6ZTogMX0sCglEQVRBX1RZUEVfSU5UMTYJCToge29yZGluYWwgOiA0LCBzaXplOiAyfSwKCURBVEFfVFlQRV9VSU5UMTYJOiB7b3JkaW5hbCA6IDUsIHNpemU6IDJ9LAoJREFUQV9UWVBFX0lOVDMyCQk6IHtvcmRpbmFsIDogNiwgc2l6ZTogNH0sCglEQVRBX1RZUEVfVUlOVDMyCToge29yZGluYWwgOiA3LCBzaXplOiA0fSwKCURBVEFfVFlQRV9JTlQ2NAkJOiB7b3JkaW5hbCA6IDgsIHNpemU6IDh9LAoJREFUQV9UWVBFX1VJTlQ2NAk6IHtvcmRpbmFsIDogOSwgc2l6ZTogOH0KfTsKCnZhciBpID0gMDsKZm9yKHZhciBvYmogaW4gUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMpewoJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXNbaV0gPSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlc1tvYmpdOwoJaSsrOwp9CgovKioKICogQSBzaW5nbGUgcG9pbnQgYXR0cmlidXRlIHN1Y2ggYXMgY29sb3Ivbm9ybWFsLy4uIGFuZCBpdHMgZGF0YSBmb3JtYXQvbnVtYmVyIG9mIGVsZW1lbnRzLy4uLiAKICogCiAqIEBjbGFzcwogKiBAcGFyYW0gbmFtZSAKICogQHBhcmFtIHR5cGUKICogQHBhcmFtIHNpemUKICogQHJldHVybnMKICovClBvdHJlZS5Qb2ludEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUsIHR5cGUsIG51bUVsZW1lbnRzKXsKCXRoaXMubmFtZSA9IG5hbWU7Cgl0aGlzLnR5cGUgPSB0eXBlOyAKCXRoaXMubnVtRWxlbWVudHMgPSBudW1FbGVtZW50czsKCXRoaXMuYnl0ZVNpemUgPSB0aGlzLm51bUVsZW1lbnRzICogdGhpcy50eXBlLnNpemU7Cn0KClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5QT1NJVElPTl9DQVJURVNJQU4gPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLlBPU0lUSU9OX0NBUlRFU0lBTiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfRkxPQVQsIDMpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLlJHQkFfUEFDS0VEID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9QQUNLRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0lOVDgsIDQpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLkNPTE9SX1BBQ0tFRCA9IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5SR0JBX1BBQ0tFRDsKClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5SR0JfUEFDS0VEID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DT0xPUl9QQUNLRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0lOVDgsIDMpOwoKUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9GTE9BVFMgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTF9GTE9BVFMsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX0ZMT0FULCAzKTsKClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5GSUxMRVJfMUIgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLkZJTExFUiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfVUlOVDgsIDEpOwoJCQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuSU5URU5TSVRZID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5JTlRFTlNJVFksCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQxNiwgMSk7CQkKCQkKUG90cmVlLlBvaW50QXR0cmlidXRlLkNMQVNTSUZJQ0FUSU9OID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5DTEFTU0lGSUNBVElPTiwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfVUlOVDgsIDEpOwkKCQkKUG90cmVlLlBvaW50QXR0cmlidXRlLk5PUk1BTF9TUEhFUkVNQVBQRUQgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTF9TUEhFUkVNQVBQRUQsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQ4LCAyKTsJCQoJCQpQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX09DVDE2ID0gbmV3IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZSgKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVOYW1lcy5OT1JNQUxfT0NUMTYsCgkJUG90cmVlLlBvaW50QXR0cmlidXRlVHlwZXMuREFUQV9UWVBFX1VJTlQ4LCAyKTsJCgkJClBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5OT1JNQUwgPSBuZXcgUG90cmVlLlBvaW50QXR0cmlidXRlKAoJCVBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLk5PUk1BTCwKCQlQb3RyZWUuUG9pbnRBdHRyaWJ1dGVUeXBlcy5EQVRBX1RZUEVfRkxPQVQsIDMpOwoKLyoqCiAqIE9yZGVyZWQgbGlzdCBvZiBQb2ludEF0dHJpYnV0ZXMgdXNlZCB0byBpZGVudGlmeSBob3cgcG9pbnRzIGFyZSBhbGlnbmVkIGluIGEgYnVmZmVyLgogKiAKICogQGNsYXNzCiAqIAogKi8KUG90cmVlLlBvaW50QXR0cmlidXRlcyA9IGZ1bmN0aW9uKHBvaW50QXR0cmlidXRlcyl7Cgl0aGlzLmF0dHJpYnV0ZXMgPSBuZXcgQXJyYXkoKTsKCXRoaXMuYnl0ZVNpemUgPSAwOwoJdGhpcy5zaXplID0gMDsKCQoJaWYocG9pbnRBdHRyaWJ1dGVzICE9IG51bGwpewkKCQlmb3IodmFyIGkgPSAwOyBpIDwgcG9pbnRBdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKXsKCQkJdmFyIHBvaW50QXR0cmlidXRlTmFtZSA9IHBvaW50QXR0cmlidXRlc1tpXTsKCQkJdmFyIHBvaW50QXR0cmlidXRlID0gUG90cmVlLlBvaW50QXR0cmlidXRlW3BvaW50QXR0cmlidXRlTmFtZV07CgkJCXRoaXMuYXR0cmlidXRlcy5wdXNoKHBvaW50QXR0cmlidXRlKTsKCQkJdGhpcy5ieXRlU2l6ZSArPSBwb2ludEF0dHJpYnV0ZS5ieXRlU2l6ZTsKCQkJdGhpcy5zaXplKys7CgkJfQoJfQp9CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVzLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihwb2ludEF0dHJpYnV0ZSl7Cgl0aGlzLmF0dHJpYnV0ZXMucHVzaChwb2ludEF0dHJpYnV0ZSk7Cgl0aGlzLmJ5dGVTaXplICs9IHBvaW50QXR0cmlidXRlLmJ5dGVTaXplOwoJdGhpcy5zaXplKys7Cn07CgpQb3RyZWUuUG9pbnRBdHRyaWJ1dGVzLnByb3RvdHlwZS5oYXNDb2xvcnMgPSBmdW5jdGlvbigpewoJZm9yKHZhciBuYW1lIGluIHRoaXMuYXR0cmlidXRlcyl7CgkJdmFyIHBvaW50QXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzW25hbWVdOwoJCWlmKHBvaW50QXR0cmlidXRlLm5hbWUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZU5hbWVzLkNPTE9SX1BBQ0tFRCl7CgkJCXJldHVybiB0cnVlOwoJCX0KCX0KCQoJcmV0dXJuIGZhbHNlOwp9OwoKUG90cmVlLlBvaW50QXR0cmlidXRlcy5wcm90b3R5cGUuaGFzTm9ybWFscyA9IGZ1bmN0aW9uKCl7Cglmb3IodmFyIG5hbWUgaW4gdGhpcy5hdHRyaWJ1dGVzKXsKCQl2YXIgcG9pbnRBdHRyaWJ1dGUgPSB0aGlzLmF0dHJpYnV0ZXNbbmFtZV07CgkJaWYoCgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX1NQSEVSRU1BUFBFRCB8fCAKCQkJcG9pbnRBdHRyaWJ1dGUgPT09IFBvdHJlZS5Qb2ludEF0dHJpYnV0ZS5OT1JNQUxfRkxPQVRTIHx8CgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMIHx8CgkJCXBvaW50QXR0cmlidXRlID09PSBQb3RyZWUuUG9pbnRBdHRyaWJ1dGUuTk9STUFMX09DVDE2KXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoJCglyZXR1cm4gZmFsc2U7Cn07CgoK")); \ No newline at end of file diff --git a/build/workers/lasdecoder-worker.js b/build/workers/lasdecoder-worker.js index ece244ca3f..08f628b48c 100644 --- a/build/workers/lasdecoder-worker.js +++ b/build/workers/lasdecoder-worker.js @@ -1 +1 @@ -Potree.workers.lasdecoder = new Potree.WorkerManager(atob("CgovL3ZhciBwb2ludEZvcm1hdFJlYWRlcnMgPSB7Ci8vCTA6IGZ1bmN0aW9uKGR2KSB7Ci8vCQlyZXR1cm4gewovLwkJCSJwb3NpdGlvbiI6IFsgZHYuZ2V0SW50MzIoMCwgdHJ1ZSksIGR2LmdldEludDMyKDQsIHRydWUpLCBkdi5nZXRJbnQzMig4LCB0cnVlKV0sCi8vCQkJImludGVuc2l0eSI6IGR2LmdldFVpbnQxNigxMiwgdHJ1ZSksCi8vCQkJImNsYXNzaWZpY2F0aW9uIjogZHYuZ2V0VWludDgoMTYsIHRydWUpCi8vCQl9OwovLwl9LAovLwkxOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKQovLwkJfTsKLy8JfSwKLy8JMjogZnVuY3Rpb24oZHYpIHsKLy8JCXJldHVybiB7Ci8vCQkJInBvc2l0aW9uIjogWyBkdi5nZXRJbnQzMigwLCB0cnVlKSwgZHYuZ2V0SW50MzIoNCwgdHJ1ZSksIGR2LmdldEludDMyKDgsIHRydWUpXSwKLy8JCQkiaW50ZW5zaXR5IjogZHYuZ2V0VWludDE2KDEyLCB0cnVlKSwKLy8JCQkiY2xhc3NpZmljYXRpb24iOiBkdi5nZXRVaW50OCgxNiwgdHJ1ZSksCi8vCQkJImNvbG9yIjogW2R2LmdldFVpbnQxNigyMCwgdHJ1ZSksIGR2LmdldFVpbnQxNigyMiwgdHJ1ZSksIGR2LmdldFVpbnQxNigyNCwgdHJ1ZSldCi8vCQl9OwovLwl9LAovLwkzOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKSwKLy8JCQkiY29sb3IiOiBbZHYuZ2V0VWludDE2KDI4LCB0cnVlKSwgZHYuZ2V0VWludDE2KDMwLCB0cnVlKSwgZHYuZ2V0VWludDE2KDMyLCB0cnVlKV0KLy8JCX07Ci8vCX0KLy99OwovLwkKLy8JCi8vIERlY29kZXMgTEFTIHJlY29yZHMgaW50byBwb2ludHMKLy8KLy92YXIgTEFTRGVjb2RlciA9IGZ1bmN0aW9uKGJ1ZmZlciwgcG9pbnRGb3JtYXRJRCwgcG9pbnRTaXplLCBwb2ludHNDb3VudCwgc2NhbGUsIG9mZnNldCkgewovLwl0aGlzLmFycmF5YiA9IGJ1ZmZlcjsKLy8JdGhpcy5kZWNvZGVyID0gcG9pbnRGb3JtYXRSZWFkZXJzW3BvaW50Rm9ybWF0SURdOwovLwl0aGlzLnBvaW50c0NvdW50ID0gcG9pbnRzQ291bnQ7Ci8vCXRoaXMucG9pbnRTaXplID0gcG9pbnRTaXplOwovLwl0aGlzLnNjYWxlID0gc2NhbGU7Ci8vCXRoaXMub2Zmc2V0ID0gb2Zmc2V0OwovL307Ci8vCi8vTEFTRGVjb2Rlci5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbihpbmRleCkgewovLwlpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucG9pbnRzQ291bnQpCi8vCQl0aHJvdyBuZXcgRXJyb3IoIlBvaW50IGluZGV4IG91dCBvZiByYW5nZSIpOwovLwovLwl2YXIgZHYgPSBuZXcgRGF0YVZpZXcodGhpcy5hcnJheWIsIGluZGV4ICogdGhpcy5wb2ludFNpemUsIHRoaXMucG9pbnRTaXplKTsKLy8JcmV0dXJuIHRoaXMuZGVjb2Rlcihkdik7Ci8vfTsKCm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KXsKCXZhciBidWZmZXIgPSBldmVudC5kYXRhLmJ1ZmZlcjsKCXZhciBudW1Qb2ludHMgPSBldmVudC5kYXRhLm51bVBvaW50czsKCXZhciBwb2ludFNpemUgPSBldmVudC5kYXRhLnBvaW50U2l6ZTsKCXZhciBwb2ludEZvcm1hdElEID0gZXZlbnQuZGF0YS5wb2ludEZvcm1hdElEOwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCXZhciBvZmZzZXQgPSBldmVudC5kYXRhLm9mZnNldDsKCXZhciBtaW5zID0gZXZlbnQuZGF0YS5taW5zOwoJdmFyIG1heHMgPSBldmVudC5kYXRhLm1heHM7Cgl2YXIgYmJPZmZzZXQgPSBldmVudC5kYXRhLmJiT2Zmc2V0OwoJCgl2YXIgdGVtcCA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKCXZhciB0ZW1wVWludDggPSBuZXcgVWludDhBcnJheSh0ZW1wKTsKCXZhciB0ZW1wVWludDE2ID0gbmV3IFVpbnQxNkFycmF5KHRlbXApOwoJdmFyIHRlbXBGbG9hdDMyID0gbmV3IEZsb2F0MzJBcnJheSh0ZW1wKTsKCXZhciB0ZW1wSW50MzIgPSBuZXcgSW50MzJBcnJheSh0ZW1wKTsKCXZhciBidWZmZXJWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKCQoJdmFyIHBCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGNCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGlCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KTsKCXZhciBjbEJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBybkJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBwc0J1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzICogMik7CgkKCXZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KHBCdWZmKTsKCXZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkFycmF5KGNCdWZmKTsKCXZhciBpbnRlbnNpdGllcyA9IG5ldyBGbG9hdDMyQXJyYXkoaUJ1ZmYpOwoJdmFyIGNsYXNzaWZpY2F0aW9ucyA9IG5ldyBVaW50OEFycmF5KGNsQnVmZik7Cgl2YXIgcmV0dXJuTnVtYmVycyA9IG5ldyBVaW50OEFycmF5KHJuQnVmZik7Cgl2YXIgcG9pbnRTb3VyY2VJRHMgPSBuZXcgVWludDE2QXJyYXkocHNCdWZmKTsKCQoJCgkvLyB0ZW1wIGFycmF5cyBzZWVtIHRvIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gRGF0YVZpZXdzCgkvLyBhdCB0aGUgbW9tZW50OiBodHRwOi8vanNwZXJmLmNvbS9kYXRhdmlldy12cy10ZW1wb3JhcnktZmxvYXQ2NGFycmF5Cglmb3IodmFyIGkgPSAwOyBpIDwgbnVtUG9pbnRzOyBpKyspewoJCgkJLy8gUE9TSVRJT04KCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzBdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMV07CgkJdGVtcFVpbnQ4WzJdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyXTsKCQl0ZW1wVWludDhbM10gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzNdOwoJCXZhciB4ID0gdGVtcEludDMyWzBdOwoJCQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrNF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs1XTsKCQl0ZW1wVWludDhbMl0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzZdOwoJCXRlbXBVaW50OFszXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrN107CgkJdmFyIHkgPSB0ZW1wSW50MzJbMF07CgkJCgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs4XTsKCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzldOwoJCXRlbXBVaW50OFsyXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTBdOwoJCXRlbXBVaW50OFszXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTFdOwoJCXZhciB6ID0gdGVtcEludDMyWzBdOwoJCQoJCXBvc2l0aW9uc1szKmkrMF0gPSB4ICogc2NhbGVbMF0gKyBvZmZzZXRbMF0gKyBiYk9mZnNldFswXTsKCQlwb3NpdGlvbnNbMyppKzFdID0geSAqIHNjYWxlWzFdICsgb2Zmc2V0WzFdICsgYmJPZmZzZXRbMV07CgkJcG9zaXRpb25zWzMqaSsyXSA9IHogKiBzY2FsZVsyXSArIG9mZnNldFsyXSArIGJiT2Zmc2V0WzJdOwoJCQoJCS8vIElOVEVOU0lUWQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTJdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTNdOwoJCXZhciBpbnRlbnNpdHkgPSB0ZW1wVWludDE2WzBdOwoJCWludGVuc2l0aWVzW2ldID0gaW50ZW5zaXR5OwoJCQoJCS8vIFJFVFVSTiBOVU1CRVIsIHN0b3JlZCBpbiB0aGUgZmlyc3QgMyBiaXRzCgkJdmFyIHJldHVybk51bWJlciA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTRdICYgNzsKCQlyZXR1cm5OdW1iZXJzW2ldID0gcmV0dXJuTnVtYmVyOwoJCQoJCS8vIENMQVNTSUZJQ0FUSU9OCgkJdmFyIGNsYXNzaWZpY2F0aW9uID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxNV07CgkJY2xhc3NpZmljYXRpb25zW2ldID0gY2xhc3NpZmljYXRpb247CgkJCgkJLy8gUE9JTlQgU09VUkNFIElECgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxOF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsxOV07CgkJdmFyIHBvaW50U291cmNlSUQgPSB0ZW1wVWludDE2WzBdOwoJCXBvaW50U291cmNlSURzW2ldID0gcG9pbnRTb3VyY2VJRDsKCQkKCQkvLyBDT0xPUiwgaWYgYXZhaWxhYmxlCgkJaWYocG9pbnRGb3JtYXRJRCA9PT0gMil7CgkJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjBdOwoJCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzIxXTsKCQkJdmFyIHIgPSB0ZW1wVWludDE2WzBdOwoJCQkKCQkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyMl07CgkJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjNdOwoJCQl2YXIgZyA9IHRlbXBVaW50MTZbMF07CgkJCQoJCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzI0XTsKCQkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyNV07CgkJCXZhciBiID0gdGVtcFVpbnQxNlswXTsKCQkJCgkJCWNvbG9yc1szKmkrMF0gPSByIC8gNjU1MzY7CgkJCWNvbG9yc1szKmkrMV0gPSBnIC8gNjU1MzY7CgkJCWNvbG9yc1szKmkrMl0gPSBiIC8gNjU1MzY7CgkJfQoJfQoJCgl2YXIgbWVzc2FnZSA9IHsKCQlwb3NpdGlvbjogcEJ1ZmYsIAoJCWNvbG9yOiBjQnVmZiwgCgkJaW50ZW5zaXR5OiBpQnVmZiwKCQljbGFzc2lmaWNhdGlvbjogY2xCdWZmLAoJCXJldHVybk51bWJlcjogcm5CdWZmLAoJCXBvaW50U291cmNlSUQ6IHBzQnVmZn07CgkJCgl2YXIgdHJhbnNmZXJhYmxlcyA9IFsKCQltZXNzYWdlLnBvc2l0aW9uLAoJCW1lc3NhZ2UuY29sb3IsIAoJCW1lc3NhZ2UuaW50ZW5zaXR5LAoJCW1lc3NhZ2UuY2xhc3NpZmljYXRpb24sCgkJbWVzc2FnZS5yZXR1cm5OdW1iZXIsCgkJbWVzc2FnZS5wb2ludFNvdXJjZUlEXTsKCQkKCXBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRyYW5zZmVyYWJsZXMpOwp9Cg==")); \ No newline at end of file +Potree.workers.lasdecoder = new Potree.WorkerManager(atob("CgovL3ZhciBwb2ludEZvcm1hdFJlYWRlcnMgPSB7Ci8vCTA6IGZ1bmN0aW9uKGR2KSB7Ci8vCQlyZXR1cm4gewovLwkJCSJwb3NpdGlvbiI6IFsgZHYuZ2V0SW50MzIoMCwgdHJ1ZSksIGR2LmdldEludDMyKDQsIHRydWUpLCBkdi5nZXRJbnQzMig4LCB0cnVlKV0sCi8vCQkJImludGVuc2l0eSI6IGR2LmdldFVpbnQxNigxMiwgdHJ1ZSksCi8vCQkJImNsYXNzaWZpY2F0aW9uIjogZHYuZ2V0VWludDgoMTYsIHRydWUpCi8vCQl9OwovLwl9LAovLwkxOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKQovLwkJfTsKLy8JfSwKLy8JMjogZnVuY3Rpb24oZHYpIHsKLy8JCXJldHVybiB7Ci8vCQkJInBvc2l0aW9uIjogWyBkdi5nZXRJbnQzMigwLCB0cnVlKSwgZHYuZ2V0SW50MzIoNCwgdHJ1ZSksIGR2LmdldEludDMyKDgsIHRydWUpXSwKLy8JCQkiaW50ZW5zaXR5IjogZHYuZ2V0VWludDE2KDEyLCB0cnVlKSwKLy8JCQkiY2xhc3NpZmljYXRpb24iOiBkdi5nZXRVaW50OCgxNiwgdHJ1ZSksCi8vCQkJImNvbG9yIjogW2R2LmdldFVpbnQxNigyMCwgdHJ1ZSksIGR2LmdldFVpbnQxNigyMiwgdHJ1ZSksIGR2LmdldFVpbnQxNigyNCwgdHJ1ZSldCi8vCQl9OwovLwl9LAovLwkzOiBmdW5jdGlvbihkdikgewovLwkJcmV0dXJuIHsKLy8JCQkicG9zaXRpb24iOiBbIGR2LmdldEludDMyKDAsIHRydWUpLCBkdi5nZXRJbnQzMig0LCB0cnVlKSwgZHYuZ2V0SW50MzIoOCwgdHJ1ZSldLAovLwkJCSJpbnRlbnNpdHkiOiBkdi5nZXRVaW50MTYoMTIsIHRydWUpLAovLwkJCSJjbGFzc2lmaWNhdGlvbiI6IGR2LmdldFVpbnQ4KDE2LCB0cnVlKSwKLy8JCQkiY29sb3IiOiBbZHYuZ2V0VWludDE2KDI4LCB0cnVlKSwgZHYuZ2V0VWludDE2KDMwLCB0cnVlKSwgZHYuZ2V0VWludDE2KDMyLCB0cnVlKV0KLy8JCX07Ci8vCX0KLy99OwovLwkKLy8JCi8vIERlY29kZXMgTEFTIHJlY29yZHMgaW50byBwb2ludHMKLy8KLy92YXIgTEFTRGVjb2RlciA9IGZ1bmN0aW9uKGJ1ZmZlciwgcG9pbnRGb3JtYXRJRCwgcG9pbnRTaXplLCBwb2ludHNDb3VudCwgc2NhbGUsIG9mZnNldCkgewovLwl0aGlzLmFycmF5YiA9IGJ1ZmZlcjsKLy8JdGhpcy5kZWNvZGVyID0gcG9pbnRGb3JtYXRSZWFkZXJzW3BvaW50Rm9ybWF0SURdOwovLwl0aGlzLnBvaW50c0NvdW50ID0gcG9pbnRzQ291bnQ7Ci8vCXRoaXMucG9pbnRTaXplID0gcG9pbnRTaXplOwovLwl0aGlzLnNjYWxlID0gc2NhbGU7Ci8vCXRoaXMub2Zmc2V0ID0gb2Zmc2V0OwovL307Ci8vCi8vTEFTRGVjb2Rlci5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbihpbmRleCkgewovLwlpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucG9pbnRzQ291bnQpCi8vCQl0aHJvdyBuZXcgRXJyb3IoIlBvaW50IGluZGV4IG91dCBvZiByYW5nZSIpOwovLwovLwl2YXIgZHYgPSBuZXcgRGF0YVZpZXcodGhpcy5hcnJheWIsIGluZGV4ICogdGhpcy5wb2ludFNpemUsIHRoaXMucG9pbnRTaXplKTsKLy8JcmV0dXJuIHRoaXMuZGVjb2Rlcihkdik7Ci8vfTsKCm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KXsKCXZhciBidWZmZXIgPSBldmVudC5kYXRhLmJ1ZmZlcjsKCXZhciBudW1Qb2ludHMgPSBldmVudC5kYXRhLm51bVBvaW50czsKCXZhciBwb2ludFNpemUgPSBldmVudC5kYXRhLnBvaW50U2l6ZTsKCXZhciBwb2ludEZvcm1hdElEID0gZXZlbnQuZGF0YS5wb2ludEZvcm1hdElEOwoJdmFyIHNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZTsKCXZhciBvZmZzZXQgPSBldmVudC5kYXRhLm9mZnNldDsKCXZhciBtaW5zID0gZXZlbnQuZGF0YS5taW5zOwoJdmFyIG1heHMgPSBldmVudC5kYXRhLm1heHM7Cgl2YXIgYmJPZmZzZXQgPSBldmVudC5kYXRhLmJiT2Zmc2V0OwoJCgl2YXIgdGVtcCA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKCXZhciB0ZW1wVWludDggPSBuZXcgVWludDhBcnJheSh0ZW1wKTsKCXZhciB0ZW1wVWludDE2ID0gbmV3IFVpbnQxNkFycmF5KHRlbXApOwoJdmFyIHRlbXBGbG9hdDMyID0gbmV3IEZsb2F0MzJBcnJheSh0ZW1wKTsKCXZhciB0ZW1wSW50MzIgPSBuZXcgSW50MzJBcnJheSh0ZW1wKTsKCXZhciBidWZmZXJWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKCQoJdmFyIHBCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGNCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyozKjQpOwoJdmFyIGlCdWZmID0gbmV3IEFycmF5QnVmZmVyKG51bVBvaW50cyo0KTsKCXZhciBjbEJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBybkJ1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzKTsKCXZhciBwc0J1ZmYgPSBuZXcgQXJyYXlCdWZmZXIobnVtUG9pbnRzICogMik7CgkKCXZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KHBCdWZmKTsKCXZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkFycmF5KGNCdWZmKTsKCXZhciBpbnRlbnNpdGllcyA9IG5ldyBGbG9hdDMyQXJyYXkoaUJ1ZmYpOwoJdmFyIGNsYXNzaWZpY2F0aW9ucyA9IG5ldyBVaW50OEFycmF5KGNsQnVmZik7Cgl2YXIgcmV0dXJuTnVtYmVycyA9IG5ldyBVaW50OEFycmF5KHJuQnVmZik7Cgl2YXIgcG9pbnRTb3VyY2VJRHMgPSBuZXcgVWludDE2QXJyYXkocHNCdWZmKTsKCXZhciB0aWdodEJvdW5kaW5nQm94ID0gewoJCW1pbjogWyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXSwKCQltYXg6IFsgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZICwgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZICwgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZIF0KCX07CgkKCQoJLy8gdGVtcCBhcnJheXMgc2VlbSB0byBiZSBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIERhdGFWaWV3cwoJLy8gYXQgdGhlIG1vbWVudDogaHR0cDovL2pzcGVyZi5jb20vZGF0YXZpZXctdnMtdGVtcG9yYXJ5LWZsb2F0NjRhcnJheQoJZm9yKHZhciBpID0gMDsgaSA8IG51bVBvaW50czsgaSsrKXsKCQoJCS8vIFBPU0lUSU9OCgkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSswXTsKCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzFdOwoJCXRlbXBVaW50OFsyXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMl07CgkJdGVtcFVpbnQ4WzNdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSszXTsKCQl2YXIgeCA9IHRlbXBJbnQzMlswXTsKCQkKCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzRdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrNV07CgkJdGVtcFVpbnQ4WzJdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs2XTsKCQl0ZW1wVWludDhbM10gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzddOwoJCXZhciB5ID0gdGVtcEludDMyWzBdOwoJCQoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrOF07CgkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSs5XTsKCQl0ZW1wVWludDhbMl0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzEwXTsKCQl0ZW1wVWludDhbM10gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzExXTsKCQl2YXIgeiA9IHRlbXBJbnQzMlswXTsKCQkKCQlwb3NpdGlvbnNbMyppKzBdID0geCAqIHNjYWxlWzBdICsgb2Zmc2V0WzBdICsgYmJPZmZzZXRbMF07CgkJcG9zaXRpb25zWzMqaSsxXSA9IHkgKiBzY2FsZVsxXSArIG9mZnNldFsxXSArIGJiT2Zmc2V0WzFdOwoJCXBvc2l0aW9uc1szKmkrMl0gPSB6ICogc2NhbGVbMl0gKyBvZmZzZXRbMl0gKyBiYk9mZnNldFsyXTsKCQkKCQl0aWdodEJvdW5kaW5nQm94Lm1pblswXSA9IE1hdGgubWluKHRpZ2h0Qm91bmRpbmdCb3gubWluWzBdLCBwb3NpdGlvbnNbMyppKzBdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1pblsxXSA9IE1hdGgubWluKHRpZ2h0Qm91bmRpbmdCb3gubWluWzFdLCBwb3NpdGlvbnNbMyppKzFdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1pblsyXSA9IE1hdGgubWluKHRpZ2h0Qm91bmRpbmdCb3gubWluWzJdLCBwb3NpdGlvbnNbMyppKzJdKTsKCQkKCQl0aWdodEJvdW5kaW5nQm94Lm1heFswXSA9IE1hdGgubWF4KHRpZ2h0Qm91bmRpbmdCb3gubWF4WzBdLCBwb3NpdGlvbnNbMyppKzBdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1heFsxXSA9IE1hdGgubWF4KHRpZ2h0Qm91bmRpbmdCb3gubWF4WzFdLCBwb3NpdGlvbnNbMyppKzFdKTsKCQl0aWdodEJvdW5kaW5nQm94Lm1heFsyXSA9IE1hdGgubWF4KHRpZ2h0Qm91bmRpbmdCb3gubWF4WzJdLCBwb3NpdGlvbnNbMyppKzJdKTsKCQkKCQkvLyBJTlRFTlNJVFkKCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzEyXTsKCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzEzXTsKCQl2YXIgaW50ZW5zaXR5ID0gdGVtcFVpbnQxNlswXTsKCQlpbnRlbnNpdGllc1tpXSA9IGludGVuc2l0eTsKCQkKCQkvLyBSRVRVUk4gTlVNQkVSLCBzdG9yZWQgaW4gdGhlIGZpcnN0IDMgYml0cwoJCXZhciByZXR1cm5OdW1iZXIgPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzE0XSAmIDc7CgkJcmV0dXJuTnVtYmVyc1tpXSA9IHJldHVybk51bWJlcjsKCQkKCQkvLyBDTEFTU0lGSUNBVElPTgoJCXZhciBjbGFzc2lmaWNhdGlvbiA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTVdOwoJCWNsYXNzaWZpY2F0aW9uc1tpXSA9IGNsYXNzaWZpY2F0aW9uOwoJCQoJCS8vIFBPSU5UIFNPVVJDRSBJRAoJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMThdOwoJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMTldOwoJCXZhciBwb2ludFNvdXJjZUlEID0gdGVtcFVpbnQxNlswXTsKCQlwb2ludFNvdXJjZUlEc1tpXSA9IHBvaW50U291cmNlSUQ7CgkJCgkJLy8gQ09MT1IsIGlmIGF2YWlsYWJsZQoJCWlmKHBvaW50Rm9ybWF0SUQgPT09IDIpewoJCQl0ZW1wVWludDhbMF0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzIwXTsKCQkJdGVtcFVpbnQ4WzFdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyMV07CgkJCXZhciByID0gdGVtcFVpbnQxNlswXTsKCQkJCgkJCXRlbXBVaW50OFswXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjJdOwoJCQl0ZW1wVWludDhbMV0gPSBidWZmZXJWaWV3W2kqcG9pbnRTaXplKzIzXTsKCQkJdmFyIGcgPSB0ZW1wVWludDE2WzBdOwoJCQkKCQkJdGVtcFVpbnQ4WzBdID0gYnVmZmVyVmlld1tpKnBvaW50U2l6ZSsyNF07CgkJCXRlbXBVaW50OFsxXSA9IGJ1ZmZlclZpZXdbaSpwb2ludFNpemUrMjVdOwoJCQl2YXIgYiA9IHRlbXBVaW50MTZbMF07CgkJCQoJCQljb2xvcnNbMyppKzBdID0gciAvIDY1NTM2OwoJCQljb2xvcnNbMyppKzFdID0gZyAvIDY1NTM2OwoJCQljb2xvcnNbMyppKzJdID0gYiAvIDY1NTM2OwoJCX0KCX0KCQoJdmFyIG1lc3NhZ2UgPSB7CgkJcG9zaXRpb246IHBCdWZmLCAKCQljb2xvcjogY0J1ZmYsIAoJCWludGVuc2l0eTogaUJ1ZmYsCgkJY2xhc3NpZmljYXRpb246IGNsQnVmZiwKCQlyZXR1cm5OdW1iZXI6IHJuQnVmZiwKCQlwb2ludFNvdXJjZUlEOiBwc0J1ZmYsCgkJdGlnaHRCb3VuZGluZ0JveDogdGlnaHRCb3VuZGluZ0JveAoJfTsKCQkKCXZhciB0cmFuc2ZlcmFibGVzID0gWwoJCW1lc3NhZ2UucG9zaXRpb24sCgkJbWVzc2FnZS5jb2xvciwgCgkJbWVzc2FnZS5pbnRlbnNpdHksCgkJbWVzc2FnZS5jbGFzc2lmaWNhdGlvbiwKCQltZXNzYWdlLnJldHVybk51bWJlciwKCQltZXNzYWdlLnBvaW50U291cmNlSURdOwoJCQoJcG9zdE1lc3NhZ2UobWVzc2FnZSwgdHJhbnNmZXJhYmxlcyk7Cn0K")); \ No newline at end of file diff --git a/examples/viewer.html b/examples/viewer.html index 7f2043b274..b47fb2f2b6 100644 --- a/examples/viewer.html +++ b/examples/viewer.html @@ -41,10 +41,10 @@ - +
@@ -78,6 +78,9 @@ var sceneProperties = { path: "../resources/pointclouds/vol_total/cloud.js", + path: "http://5.9.65.151/mschuetz/potree/resources/pointclouds/pix4d/matterhorn/cloud.js", + path: "http://5.9.65.151/mschuetz/potree/test/cloud.js", + path: "../resources/pointclouds/lion_takanawa/cloud.js", cameraPosition: null, cameraTarget: null, sizeType: "Adaptive", // options: "Fixed", "Attenuated", "Adaptive" diff --git a/src/PointCloudOctree.js b/src/PointCloudOctree.js index edec6b6a0a..4e34f798ef 100644 --- a/src/PointCloudOctree.js +++ b/src/PointCloudOctree.js @@ -573,7 +573,11 @@ Potree.PointCloudOctree.prototype.replaceProxy = function(proxy){ node.name = proxy.name; node.level = proxy.level; node.numPoints = proxy.numPoints; - node.boundingBox = geometry.boundingBox; + if(typeof geometryNode.tightBoundingBox !== "undefined"){ + node.boundingBox = geometryNode.tightBoundingBox; + }else{ + node.boundingBox = geometry.boundingBox; + } node.boundingSphere = node.boundingBox.getBoundingSphere(); node.pcoGeometry = geometryNode; var parent = proxy.parent; diff --git a/src/loader/BinaryLoader.js b/src/loader/BinaryLoader.js index 3abed29232..e031713cfe 100644 --- a/src/loader/BinaryLoader.js +++ b/src/loader/BinaryLoader.js @@ -57,6 +57,10 @@ Potree.BinaryLoader.prototype.parse = function(node, buffer){ ww.onmessage = function(e){ var data = e.data; var buffers = data.attributeBuffers; + var tightBoundingBox = new THREE.Box3( + new THREE.Vector3().fromArray(data.tightBoundingBox.min), + new THREE.Vector3().fromArray(data.tightBoundingBox.max) + ); Potree.workers.binaryDecoder.returnWorker(ww); @@ -92,13 +96,13 @@ Potree.BinaryLoader.prototype.parse = function(node, buffer){ geometry.addAttribute("normal", new THREE.BufferAttribute(new Float32Array(buffer), 3)); } - geometry.boundingBox = node.boundingBox; + //geometry.boundingBox = node.boundingBox; + geometry.boundingBox = tightBoundingBox; node.geometry = geometry; + node.tightBoundingBox = tightBoundingBox; node.loaded = true; node.loading = false; node.pcoGeometry.numNodesLoading--; - - //console.log("loaded: " + node.name + "\t, " + renderer.info.memory.geometries + ", " + Potree.PointCloudOctree.lru.elements); } var message = { diff --git a/src/loader/LasLazLoader.js b/src/loader/LasLazLoader.js index a3717d34fd..001f34bd93 100644 --- a/src/loader/LasLazLoader.js +++ b/src/loader/LasLazLoader.js @@ -198,8 +198,15 @@ Potree.LasLazBatcher = function(node){ geometry.addAttribute('indices', new THREE.BufferAttribute(indices, 1)); geometry.addAttribute("normal", new THREE.BufferAttribute(new Float32Array(numPoints*3), 3)); - geometry.boundingBox = new THREE.Box3(mins, maxs); + var tightBoundingBox = new THREE.Box3( + new THREE.Vector3().fromArray(e.data.tightBoundingBox.min), + new THREE.Vector3().fromArray(e.data.tightBoundingBox.max) + ); + + //geometry.boundingBox = new THREE.Box3(mins, maxs); + geometry.boundingBox = tightBoundingBox; node.boundingBox = geometry.boundingBox; + node.tightBoundingBox = tightBoundingBox; node.geometry = geometry; node.loaded = true; diff --git a/src/workers/BinaryDecoderWorker.js b/src/workers/BinaryDecoderWorker.js index 2ab6ccb806..956ba3b071 100644 --- a/src/workers/BinaryDecoderWorker.js +++ b/src/workers/BinaryDecoderWorker.js @@ -42,6 +42,8 @@ onmessage = function(event){ var min = event.data.min; var nodeOffset = event.data.offset; var scale = event.data.scale; + var tightBoxMin = [ Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]; + var tightBoxMax = [ Number.NEGATIVE_INFINITY , Number.NEGATIVE_INFINITY , Number.NEGATIVE_INFINITY ]; var attributeBuffers = {}; @@ -64,6 +66,14 @@ onmessage = function(event){ positions[3*j+1] = cv.getFloat(j*pointAttributes.byteSize+4) + nodeOffset[1]; positions[3*j+2] = cv.getFloat(j*pointAttributes.byteSize+8) + nodeOffset[2]; } + + tightBoxMin[0] = Math.min(tightBoxMin[0], positions[3*j+0]); + tightBoxMin[1] = Math.min(tightBoxMin[1], positions[3*j+1]); + tightBoxMin[2] = Math.min(tightBoxMin[2], positions[3*j+2]); + + tightBoxMax[0] = Math.max(tightBoxMax[0], positions[3*j+0]); + tightBoxMax[1] = Math.max(tightBoxMax[1], positions[3*j+1]); + tightBoxMax[2] = Math.max(tightBoxMax[2], positions[3*j+2]); } attributeBuffers[pointAttribute.name] = { buffer: buff, attribute: pointAttribute}; @@ -195,6 +205,7 @@ onmessage = function(event){ var message = { attributeBuffers: attributeBuffers, + tightBoundingBox: { min: tightBoxMin, max: tightBoxMax }, indices: indices }; diff --git a/src/workers/LASDecoderWorker.js b/src/workers/LASDecoderWorker.js index 1e6f427590..1313b58a47 100644 --- a/src/workers/LASDecoderWorker.js +++ b/src/workers/LASDecoderWorker.js @@ -84,6 +84,10 @@ onmessage = function(event){ var classifications = new Uint8Array(clBuff); var returnNumbers = new Uint8Array(rnBuff); var pointSourceIDs = new Uint16Array(psBuff); + var tightBoundingBox = { + min: [ Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY], + max: [ Number.NEGATIVE_INFINITY , Number.NEGATIVE_INFINITY , Number.NEGATIVE_INFINITY ] + }; // temp arrays seem to be significantly faster than DataViews @@ -113,6 +117,14 @@ onmessage = function(event){ positions[3*i+1] = y * scale[1] + offset[1] + bbOffset[1]; positions[3*i+2] = z * scale[2] + offset[2] + bbOffset[2]; + tightBoundingBox.min[0] = Math.min(tightBoundingBox.min[0], positions[3*i+0]); + tightBoundingBox.min[1] = Math.min(tightBoundingBox.min[1], positions[3*i+1]); + tightBoundingBox.min[2] = Math.min(tightBoundingBox.min[2], positions[3*i+2]); + + tightBoundingBox.max[0] = Math.max(tightBoundingBox.max[0], positions[3*i+0]); + tightBoundingBox.max[1] = Math.max(tightBoundingBox.max[1], positions[3*i+1]); + tightBoundingBox.max[2] = Math.max(tightBoundingBox.max[2], positions[3*i+2]); + // INTENSITY tempUint8[0] = bufferView[i*pointSize+12]; tempUint8[1] = bufferView[i*pointSize+13]; @@ -159,7 +171,9 @@ onmessage = function(event){ intensity: iBuff, classification: clBuff, returnNumber: rnBuff, - pointSourceID: psBuff}; + pointSourceID: psBuff, + tightBoundingBox: tightBoundingBox + }; var transferables = [ message.position, From 503c203ff898105ae10d1d25ba08cc0032bffdf6 Mon Sep 17 00:00:00 2001 From: mschuetz Date: Thu, 3 Sep 2015 17:09:15 +0200 Subject: [PATCH 22/35] performance improvements; experimental --- build/js/potree.js | 830 ++++++++++++------------------------ build/js/potree.min.js | 12 +- examples/heightProfile.html | 130 ++++++ examples/infos.txt | 100 ----- examples/js/viewer.js | 42 +- libs/other/BinaryHeap.js | 117 +++++ src/PointCloudOctree.js | 818 ++++++++++++----------------------- src/loader/POCLoader.js | 12 + 8 files changed, 828 insertions(+), 1233 deletions(-) create mode 100644 examples/heightProfile.html delete mode 100644 examples/infos.txt create mode 100644 libs/other/BinaryHeap.js diff --git a/build/js/potree.js b/build/js/potree.js index 9a9a95b9b3..2faf9332e3 100644 --- a/build/js/potree.js +++ b/build/js/potree.js @@ -1012,6 +1012,13 @@ Potree.POCLoader.load = function load(url, callback) { var min = new THREE.Vector3(fMno.boundingBox.lx, fMno.boundingBox.ly, fMno.boundingBox.lz); var max = new THREE.Vector3(fMno.boundingBox.ux, fMno.boundingBox.uy, fMno.boundingBox.uz); var boundingBox = new THREE.Box3(min, max); + var tightBoundingBox = boundingBox.clone(); + + if(fMno.tightBoundingBox){ + tightBoundingBox.min.copy(new THREE.Vector3(fMno.tightBoundingBox.lx, fMno.tightBoundingBox.ly, fMno.tightBoundingBox.lz)); + tightBoundingBox.max.copy(new THREE.Vector3(fMno.tightBoundingBox.ux, fMno.tightBoundingBox.uy, fMno.tightBoundingBox.uz)); + } + var offset = new THREE.Vector3(0,0,0); offset.set(-min.x, -min.y, -min.z); @@ -1019,8 +1026,13 @@ Potree.POCLoader.load = function load(url, callback) { boundingBox.min.add(offset); boundingBox.max.add(offset); + tightBoundingBox.min.add(offset); + tightBoundingBox.max.add(offset); + pco.boundingBox = boundingBox; + pco.tightBoundingBox = tightBoundingBox pco.boundingSphere = boundingBox.getBoundingSphere(); + pco.tightBoundingSphere = tightBoundingBox.getBoundingSphere(); pco.offset = offset; if(fMno.pointAttributes === "LAS"){ pco.loader = new Potree.LasLazLoader(fMno.version); @@ -4043,68 +4055,19 @@ LRU.prototype.disposeDescendants = function(node){ }; -/** - * Stands in place for invisible or unloaded octree nodes. - * If a proxy node becomes visible and its geometry has not been loaded, - * loading will begin. - * If it is visible and the geometry has been loaded, the proxy node will - * be replaced with a point cloud node (THREE.PointCloud as of now) - */ -Potree.PointCloudOctreeProxyNode = function(geometryNode){ - THREE.Object3D.call( this ); - - this.geometryNode = geometryNode; - this.boundingBox = geometryNode.boundingBox; - this.boundingSphere = this.boundingBox.getBoundingSphere(); - this.name = geometryNode.name; - this.level = geometryNode.level; - this.numPoints = geometryNode.numPoints; -} - -Potree.PointCloudOctreeProxyNode.prototype = Object.create(THREE.Object3D.prototype); - - - - - - - - -Potree.ProfileRequest = function(start, end, width, depth, callback){ - this.start = start; - this.end = end; - this.width = width; - this.depth = depth; - - //var up = start.clone(); - //up.y += 10; - //this.plane = new THREE.Plane().setFromCoplanarPoints(start, end, up); - this.callback = callback; - this.loadQueue = []; - - var center = new THREE.Vector3().addVectors(end, start).multiplyScalar(0.5); - var length = new THREE.Vector3().subVectors(end, start).length(); - var side = new THREE.Vector3().subVectors(end, start).normalize(); - var up = new THREE.Vector3(0, 1, 0); - var forward = new THREE.Vector3().crossVectors(side, up).normalize(); - var N = forward; - this.plane = new THREE.Plane().setFromNormalAndCoplanarPoint(N, start); +Potree.PointCloudOctreeNode = function(){ + this.children = {}; + this.sceneNode = null; }; - - - - - - Potree.PointCloudOctree = function(geometry, material){ THREE.Object3D.call( this ); Potree.PointCloudOctree.lru = Potree.PointCloudOctree.lru || new LRU(); this.pcoGeometry = geometry; - this.boundingBox = this.pcoGeometry.boundingBox; + this.boundingBox = this.pcoGeometry.tightBoundingBox; this.boundingSphere = this.boundingBox.getBoundingSphere(); this.material = material || new Potree.PointCloudMaterial(); this.visiblePointsTarget = 2*1000*1000; @@ -4113,286 +4076,26 @@ Potree.PointCloudOctree = function(geometry, material){ this.position.sub(geometry.offset); this.updateMatrix(); - this.LODDistance = 20; - this.LODFalloff = 1.3; - this.LOD = 4; this.showBoundingBox = false; this.boundingBoxNodes = []; this.loadQueue = []; this.visibleBounds = new THREE.Box3(); - this.profileRequests = []; this.visibleNodes = []; this.visibleGeometry = []; this.pickTarget; this.generateDEM = false; - var rootProxy = new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root); - this.add(rootProxy); + this.root = this.pcoGeometry.root; } Potree.PointCloudOctree.prototype = Object.create(THREE.Object3D.prototype); -Potree.PointCloudOctree.prototype.updateVisibleBounds = function(){ - - var leafNodes = []; - for(var i = 0; i < this.visibleNodes.length; i++){ - var element = this.visibleNodes[i]; - var node = element.node; - var isLeaf = true; - - for(var j = 0; j < node.children.length; j++){ - var child = node.children[j]; - if(child instanceof THREE.PointCloud){ - isLeaf = isLeaf && !child.visible; - } - } - - if(isLeaf){ - leafNodes.push(node); - } - } - - this.visibleBounds.min = new THREE.Vector3( Infinity, Infinity, Infinity ); - this.visibleBounds.max = new THREE.Vector3( - Infinity, - Infinity, - Infinity ); - for(var i = 0; i < leafNodes.length; i++){ - var node = leafNodes[i]; - - this.visibleBounds.expandByPoint(node.boundingBox.min); - this.visibleBounds.expandByPoint(node.boundingBox.max); - } - -} - - -Potree.PointCloudOctree.prototype.updateProfileRequests = function(){ - // check profile cut plane intersections - for(var i = 0; i < this.profileRequests.length; i++){ - var profileRequest = this.profileRequests[i]; - var plane = profileRequest.plane; - var start = profileRequest.start; - var end = profileRequest.end; - var depth = profileRequest.depth; - - var stack = []; - stack.push(this); - while(stack.length > 0){ - var object = stack.shift(); - - if(object instanceof Potree.PointCloudOctreeProxyNode){ - var box = Potree.utils.computeTransformedBoundingBox(object.boundingBox, object.matrixWorld); - - var sphere = box.getBoundingSphere(); - if(Math.abs(plane.distanceToPoint(sphere.center)) < sphere.radius){ - profileRequest.loadQueue.push(object); - } - } - - - if(object.level < depth){ - for(var i = 0; i < object.children.length; i++){ - var child = object.children[i]; - - if(child instanceof Potree.PointCloudOctreeProxyNode || child instanceof THREE.PointCloud){ - stack.push(object.children[i]); - } - } - } - } - - } - - // schedule nodes needed for a profile request - var finishedRequests = []; - for(var i = 0; i < this.profileRequests.length; i++){ - var request = this.profileRequests[i]; - - if(request.loadQueue.length > 0){ - var object = request.loadQueue[0]; - var geometryNode = object.geometryNode; - if(geometryNode.loaded === true && object.parent !== undefined){ - var node = this.replaceProxy(object); - node.updateMatrixWorld(); - node.matrixWorld.multiplyMatrices( node.parent.matrixWorld, node.matrix ); - - //var boxHelper = new THREE.BoxHelper(node); - //scene.add(boxHelper); - }else{ - object.geometryNode.load(); - } - }else{ - var points = this.getProfile(request.start, request.end, request.width, request.depth); - - request.callback({type: "finished", points: points}); - finishedRequests.push(request); - } - } - - for(var i = 0; i < finishedRequests.length; i++){ - var index = this.profileRequests.indexOf(finishedRequests[i]); - if (index > -1) { - this.profileRequests.splice(index, 1); - } - } -}; - -Potree.PointCloudOctree.prototype.updateMaterial = function(material, vn, camera, renderer){ - material.fov = camera.fov * (Math.PI / 180); - material.screenWidth = renderer.domElement.clientWidth; - material.screenHeight = renderer.domElement.clientHeight; - material.spacing = this.pcoGeometry.spacing; - material.near = camera.near; - material.far = camera.far; - material.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.size().x; - - if(material.pointSizeType){ - if(material.pointSizeType === Potree.PointSizeType.ADAPTIVE - || material.pointColorType === Potree.PointColorType.OCTREE_DEPTH){ - - this.updateVisibilityTexture(material, vn); - } - } -}; - -Potree.PointCloudOctree.prototype.updatePointCloud = function(node, element, stack, visibleGeometryNames, renderer){ - this.numVisibleNodes++; - this.numVisiblePoints += node.numPoints; - node.material = this.material; - this.visibleNodes.push(element); - - if(this.showBoundingBox && !node.boundingBoxNode){ - var boxHelper = new THREE.BoxHelper(node); - this.add(boxHelper); - this.boundingBoxNodes.push(boxHelper); - node.boundingBoxNode = boxHelper; - node.boundingBoxNode.matrixWorld.copy(node.matrixWorld); - }else if(this.showBoundingBox){ - node.boundingBoxNode.visible = true; - node.boundingBoxNode.matrixWorld.copy(node.matrixWorld); - }else if(!this.showBoundingBox && node.boundingBoxNode){ - node.boundingBoxNode.visible = false; - } - - if(this.generateDEM && node.level <= 2){ - if(!node.dem){ - node.dem = this.createDEM(node); - } - } - - for(var i = 0; i < node.children.length; i++){ - var child = node.children[i]; - var visible = visibleGeometryNames.indexOf(child.name) >= 0; - if(visible){ - for(var j = 0; j < this.visibleGeometry.length; j++){ - if(this.visibleGeometry[j].node.name === child.name){ - stack.push({node: child, weight: this.visibleGeometry[j].weight}); - break; - } - }; - } - } -} - -Potree.PointCloudOctree.prototype.updateLoadQueue = function(vn){ - if(this.loadQueue.length > 0){ - if(this.loadQueue.length >= 2){ - this.loadQueue.sort(function(a,b){return b.weight - a.weight}); - } - - for(var i = 0; i < Math.min(5, this.loadQueue.length); i++){ - this.loadQueue[i].node.geometryNode.load(); - } - } -} +Potree.PointCloudOctree.prototype.updateVisibility = function(camera, renderer){ -Potree.PointCloudOctree.prototype.update = function(camera, renderer){ - this.visibleGeometry = []; - this.loadQueue = []; - this.visibleNodes = []; this.numVisibleNodes = 0; this.numVisiblePoints = 0; - - if(!this.visible){ - return; - } - - this.updateMatrixWorld(true); - - this.visibleGeometry = this.getVisibleGeometry(camera, renderer); - var visibleGeometryNames = []; - - for(var i = 0; i < this.visibleGeometry.length; i++){ - visibleGeometryNames.push(this.visibleGeometry[i].node.name); - } - - for(var i = 0; i < this.profileRequests.length; i++){ - var profileRequest = this.profileRequests[i]; - profileRequest.loadQueue = []; - } - - for(var i = 0; i < this.boundingBoxNodes.length; i++){ - this.boundingBoxNodes[i].visible = false; - } - - - - - this.hideDescendants(this.children[0]); - - var stack = []; - stack.push({node: this.children[0], weight: 1}); //TODO don't do it like that - while(stack.length > 0){ - var element = stack.shift(); - var node = element.node; - var weight = element.weight; - - node.visible = true; - - node.matrixWorld.multiplyMatrices( node.parent.matrixWorld, node.matrix ); - - if (node instanceof Potree.PointCloudOctreeProxyNode) { - var geometryNode = node.geometryNode; - if(geometryNode.loaded === true){ - this.replaceProxy(node); - }else{ - this.loadQueue.push(element); - } - }else if(node instanceof THREE.PointCloud){ - if(node.pcoGeometry.loaded){ - Potree.PointCloudOctree.lru.touch(node.pcoGeometry); - this.updatePointCloud(node, element, stack, visibleGeometryNames, renderer); - }else{ - var proxy = new Potree.PointCloudOctreeProxyNode(node.pcoGeometry); - var parent = node.parent; - parent.remove(node); - parent.add(proxy); - } - } - } - - this.updateProfileRequests(); - this.updateVisibleBounds(); - this.updateLoadQueue(); - - this.hideDescendants(this.children[0]); - var vn = []; - for(var i = 0; i < this.visibleNodes.length; i++){ - this.visibleNodes[i].node.visible = true; - vn.push(this.visibleNodes[i].node); - } - - this.updateMaterial(this.material, vn, camera, renderer); - - Potree.PointCloudOctree.lru.freeMemory(); -}; - -Potree.PointCloudOctree.prototype.getVisibleGeometry = function(camera, renderer){ - - var visibleGeometry = []; - var geometry = this.pcoGeometry; - - - // create frustum in object space + // frustum in object space camera.updateMatrixWorld(); var frustum = new THREE.Frustum(); var viewI = camera.matrixWorldInverse; @@ -4401,66 +4104,135 @@ Potree.PointCloudOctree.prototype.getVisibleGeometry = function(camera, renderer var fm = new THREE.Matrix4().multiply(proj).multiply(viewI).multiply(world); frustum.setFromMatrix( fm ); - // calculate camera position in object space + // camera position in object space var view = camera.matrixWorld; var worldI = new THREE.Matrix4().getInverse(world); var camMatrixObject = new THREE.Matrix4().multiply(worldI).multiply(view); var camObjPos = new THREE.Vector3().setFromMatrixPosition( camMatrixObject ); - var sortWeightFunction = function(a, b){return b.weight - a.weight}; + // traverse nodes with highest weight(depends on node size and distance to camera) first + var priorityQueue = new BinaryHeap(function(x){return 1 / x.weight}); + priorityQueue.push({node: this.root, weight: 1}); - var root = geometry.root; - var stack = []; + var visibleNodes = []; + var visibleGeometry = []; var pointCount = 0; - var sphere = root.boundingBox.getBoundingSphere(); - var distance = sphere.center.distanceTo(camObjPos); - //var weight = sphere.radius / distance; - var weight = 1 / Math.max(0.1, sphere.center.distanceTo(camObjPos) - sphere.radius); - stack.push({node: root, weight: weight}); - var nodesTested = 0; - while(stack.length > 0){ - nodesTested++; - var element = stack.shift(); + // first, hide all visible nodes + if(this.root instanceof Potree.PointCloudOctreeNode){ + this.hideDescendants(this.root.sceneNode); + } + for(var i = 0; i < this.boundingBoxNodes.length; i++){ + this.boundingBoxNodes[i].visible = false; + } + + while(priorityQueue.size() > 0){ + + var element = priorityQueue.pop(); var node = element.node; + var parent = element.parent; var box = node.boundingBox; - var sphere = node.boundingSphere; - //var insideFrustum = frustum.intersectsSphere(sphere); var insideFrustum = frustum.intersectsBox(box); - - - var visible = insideFrustum; // && node.level <= 3; - //visible = visible && "r0".indexOf(node.name) === 0; - //visible = visible && node.level === 0; + var visible = insideFrustum; + visible = visible && !(this.numVisiblePoints + node.numPoints > this.visiblePointsTarget); if(!visible){ continue; } - if(pointCount + node.numPoints > this.visiblePointsTarget){ - break; + if(node instanceof Potree.PointCloudOctreeNode){ + Potree.PointCloudOctree.lru.touch(node.geometryNode); + node.sceneNode.visible = true; + node.sceneNode.material = this.material; + visibleNodes.push(node); + + if(node.parent){ + node.sceneNode.matrixWorld.multiplyMatrices( node.parent.sceneNode.matrixWorld, node.sceneNode.matrix ); + }else{ + node.sceneNode.matrixWorld.multiplyMatrices( this.matrixWorld, node.sceneNode.matrix ); + } + + if(this.showBoundingBox && !node.boundingBoxNode){ + var boxHelper = new THREE.BoxHelper(node.sceneNode); + this.add(boxHelper); + this.boundingBoxNodes.push(boxHelper); + node.boundingBoxNode = boxHelper; + node.boundingBoxNode.matrixWorld.copy(node.sceneNode.matrixWorld); + }else if(this.showBoundingBox){ + node.boundingBoxNode.visible = true; + node.boundingBoxNode.matrixWorld.copy(node.sceneNode.matrixWorld); + }else if(!this.showBoundingBox && node.boundingBoxNode){ + node.boundingBoxNode.visible = false; + } + + if(this.generateDEM && node.level <= 2){ + if(!node.dem){ + node.dem = this.createDEM(node); + } + } + + this.numVisibleNodes++; + this.numVisiblePoints += node.numPoints; + + }else if(node instanceof Potree.PointCloudOctreeGeometryNode){ + var geometryNode = node; + var geometry = geometryNode.geometry; + + if(geometryNode.loaded){ + // if geometry is loaded, create a scene node + var pcoNode = new Potree.PointCloudOctreeNode(); + var sceneNode = new THREE.PointCloud(geometry, this.material); + sceneNode.visible = false; + + pcoNode.name = geometryNode.name; + pcoNode.level = geometryNode.level; + pcoNode.numPoints = geometryNode.numPoints; + pcoNode.boundingBox = geometry.boundingBox; + pcoNode.boundingSphere = pcoNode.boundingBox.getBoundingSphere(); + pcoNode.geometryNode = geometryNode; + pcoNode.parent = parent; + pcoNode.children = geometryNode.children; + sceneNode.boundingBox = pcoNode.boundingBox; + sceneNode.boundingSphere = pcoNode.boundingSphere; + sceneNode.numPoints = pcoNode.numPoints; + sceneNode.level = pcoNode.level; + + pcoNode.sceneNode = sceneNode; + + if(parent){ + var childIndex = parseInt(pcoNode.name[pcoNode.name.length - 1]); + parent.sceneNode.add(sceneNode); + parent.children[childIndex] = pcoNode; + }else{ + this.add(sceneNode); + this.root = pcoNode; + } + + node = pcoNode; + + if(node.parent){ + node.sceneNode.matrixWorld.multiplyMatrices( node.parent.sceneNode.matrixWorld, node.sceneNode.matrix ); + }else{ + node.sceneNode.matrixWorld.multiplyMatrices( this.matrixWorld, node.sceneNode.matrix ); + } + }else{ + visibleGeometry.push(node); + } } - pointCount += node.numPoints; - visibleGeometry.push(element); - + // add child nodes to priorityQueue for(var i = 0; i < 8; i++){ if(!node.children[i]){ continue; } - + var child = node.children[i]; var sphere = child.boundingSphere; var distance = sphere.center.distanceTo(camObjPos); var radius = sphere.radius; - var weight = sphere.radius / distance; - //var weight = (1 / Math.max(0.001, distance - radius)) * distance; - // discarding nodes which are very small when projected onto the screen - // TODO: pr threshold was a value choosen by trial & error. Validate that this is fine. - // see http://stackoverflow.com/questions/21648630/radius-of-projected-sphere-in-screen-space var fov = camera.fov / 2 * Math.PI / 180.0; var pr = 1 / Math.tan(fov) * radius / Math.sqrt(distance * distance - radius * radius); @@ -4469,38 +4241,90 @@ Potree.PointCloudOctree.prototype.getVisibleGeometry = function(camera, renderer continue; } - weight = pr; + var weight = pr; if(distance - radius < 0){ weight = Number.MAX_VALUE; } - if(stack.length === 0){ - stack.push({node: child, weight: weight}); - }else{ - var ipos = 0; - - for(var j = 0; j < stack.length; j++){ - if(weight > stack[j].weight){ - var ipos = j; - break; - }else if(j == stack.length -1){ - ipos = stack.length; - break; - } - - - } - - stack.splice(ipos, 0, {node: child, weight: weight}); + priorityQueue.push({node: child, parent: node, weight: weight}); + } + } + + this.visibleNodes = visibleNodes; + + // load next few unloaded geometries + for(var i = 0; i < Math.min(5, visibleGeometry.length); i++){ + visibleGeometry[i].load(); + } +}; + +Potree.PointCloudOctree.prototype.updateVisibleBounds = function(){ + + var leafNodes = []; + for(var i = 0; i < this.visibleNodes.length; i++){ + var node = this.visibleNodes[i]; + var isLeaf = true; + + for(var j = 0; j < node.children.length; j++){ + var child = node.children[j]; + if(child instanceof Potree.PointCloudOctreeNode){ + isLeaf = isLeaf && !child.sceneNode.visible; + }else if(child instanceof Potree.PointCloudOctreeGeometryNode){ + isLeaf = true; } } + + if(isLeaf){ + leafNodes.push(node); + } + } + + this.visibleBounds.min = new THREE.Vector3( Infinity, Infinity, Infinity ); + this.visibleBounds.max = new THREE.Vector3( - Infinity, - Infinity, - Infinity ); + for(var i = 0; i < leafNodes.length; i++){ + var node = leafNodes[i]; + + this.visibleBounds.expandByPoint(node.boundingBox.min); + this.visibleBounds.expandByPoint(node.boundingBox.max); + } + +} - var a = 1; +Potree.PointCloudOctree.prototype.updateMaterial = function(material, visibleNodes, camera, renderer){ + material.fov = camera.fov * (Math.PI / 180); + material.screenWidth = renderer.domElement.clientWidth; + material.screenHeight = renderer.domElement.clientHeight; + material.spacing = this.pcoGeometry.spacing; + material.near = camera.near; + material.far = camera.far; + material.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.size().x; + + // update visibility texture + if(material.pointSizeType){ + if(material.pointSizeType === Potree.PointSizeType.ADAPTIVE + || material.pointColorType === Potree.PointColorType.OCTREE_DEPTH){ + + this.updateVisibilityTexture(material, visibleNodes); + } } +} + +Potree.PointCloudOctree.prototype.update = function(camera, renderer){ + + this.updateVisibility(camera, renderer); + + this.updateMaterial(this.material, this.visibleNodes, camera, renderer); + + this.updateVisibleBounds(); + + Potree.PointCloudOctree.lru.freeMemory(); + + // TODO bounds + // TODO free memory - return visibleGeometry; }; + Potree.PointCloudOctree.prototype.updateVisibilityTexture = function(material, visibleNodes){ if(!material){ @@ -4523,19 +4347,15 @@ Potree.PointCloudOctree.prototype.updateVisibilityTexture = function(material, v return 0; }; visibleNodes.sort(sort); - - var visibleNodeNames = {}; - for(var i = 0; i < visibleNodes.length; i++){ - visibleNodeNames[visibleNodes[i].name] = true; - } + for(var i = 0; i < visibleNodes.length; i++){ var node = visibleNodes[i]; var children = []; - for(var j = 0; j < node.children.length; j++){ + for(var j = 0; j < 8; j++){ var child = node.children[j]; - if(child instanceof THREE.PointCloud && child.visible && visibleNodeNames[child.name]){ + if(child instanceof Potree.PointCloudOctreeNode && child.sceneNode.visible){ children.push(child); } } @@ -4565,14 +4385,41 @@ Potree.PointCloudOctree.prototype.updateVisibilityTexture = function(material, v texture.needsUpdate = true; } + + + + + + + + + + + + + + + + + + + + + + + + + + + Potree.PointCloudOctree.prototype.nodesOnRay = function(nodes, ray){ var nodesOnRay = []; var _ray = ray.clone(); for(var i = 0; i < nodes.length; i++){ - var node = nodes[i].node; + var node = nodes[i]; //var inverseWorld = new THREE.Matrix4().getInverse(node.matrixWorld); - var sphere = node.boundingSphere.clone().applyMatrix4(node.matrixWorld); + var sphere = node.boundingSphere.clone().applyMatrix4(node.sceneNode.matrixWorld); if(_ray.isIntersectionSphere(sphere)){ nodesOnRay.push(node); @@ -4710,18 +4557,43 @@ Potree.PointCloudOctree.prototype.getBoundingBoxWorld = function(){ * */ Potree.PointCloudOctree.prototype.getPointsInProfile = function(profile, maxDepth){ - var points = []; + var points = { + segments: [], + boundingBox: new THREE.Box3(), + projectedBoundingBox: new THREE.Box2() + }; - var mileage = 0; + // evaluate segments for(var i = 0; i < profile.points.length - 1; i++){ var start = profile.points[i]; var end = profile.points[i+1]; var ps = this.getProfile(start, end, profile.width, maxDepth); - var project = function(_start, _end, _mileage){ + var segment = { + start: start, + end: end, + points: ps, + project: null + }; + + points.segments.push(segment); + + points.boundingBox.expandByPoint(ps.boundingBox.min); + points.boundingBox.expandByPoint(ps.boundingBox.max); + } + + // add projection functions to the segments + var mileage = new THREE.Vector3(); + for(var i = 0; i < points.segments.length; i++){ + var segment = points.segments[i]; + var start = segment.start; + var end = segment.end; + + var project = function(_start, _end, _mileage, _boundingBox){ var start = _start; var end = _end; var mileage = _mileage; + var boundingBox = _boundingBox; var xAxis = new THREE.Vector3(1,0,0); var dir = new THREE.Vector3().subVectors(end, start); @@ -4735,10 +4607,9 @@ Potree.PointCloudOctree.prototype.getPointsInProfile = function(profile, maxDept return function(position){ - var toOrigin = new THREE.Matrix4().makeTranslation(-start.x, -start.y, -start.z); + var toOrigin = new THREE.Matrix4().makeTranslation(-start.x, -boundingBox.min.y, -start.z); var alignWithX = new THREE.Matrix4().makeRotationY(-alpha); - var applyMileage = new THREE.Matrix4().makeTranslation(mileage, 0, 0); - + var applyMileage = new THREE.Matrix4().makeTranslation(mileage.x, 0, 0); var pos = position.clone(); pos.applyMatrix4(toOrigin); @@ -4748,20 +4619,19 @@ Potree.PointCloudOctree.prototype.getPointsInProfile = function(profile, maxDept return pos; }; - }(start, end, mileage) + }(start, end, mileage.clone(), points.boundingBox.clone()); - var segment = { - start: start, - end: end, - points: ps, - project: project - }; + segment.project = project; - points.push(segment); - - mileage += start.distanceTo(end); + mileage.x += new THREE.Vector3(start.x, 0, start.z).distanceTo(new THREE.Vector3(end.x, 0, end.z)); + mileage.y += end.y - start.y; } + points.projectedBoundingBox.min.x = 0; + points.projectedBoundingBox.min.y = points.boundingBox.min.y; + points.projectedBoundingBox.max.x = mileage.x; + points.projectedBoundingBox.max.y = points.boundingBox.max.y; + return points; }; @@ -4794,6 +4664,8 @@ Potree.PointCloudOctree.prototype.getProfile = function(start, end, width, depth var inside = null; + var boundingBox = new THREE.Box3(); + while(stack.length > 0){ var object = stack.shift(); @@ -4828,7 +4700,7 @@ Potree.PointCloudOctree.prototype.getProfile = function(start, end, width, depth var centerDistance = Math.abs(halfPlane.distanceToPoint(pos)); if(distance < width / 2 && centerDistance < length / 2){ - //inside.push(pos); + boundingBox.expandByPoint(pos); for (var property in geometry.attributes) { if (geometry.attributes.hasOwnProperty(property)) { @@ -4905,78 +4777,12 @@ Potree.PointCloudOctree.prototype.getProfile = function(start, end, width, depth }(start, end) inside.project = project; + inside.boundingBox = boundingBox; return inside; } } -///** -// * -// * amount: minimum number of points to remove -// */ -//Potree.PointCloudOctree.disposeLeastRecentlyUsed = function(amount){ -// -// return; -// -// var freed = 0; -// do{ -// if(!Potree.PointCloudOctree.lru.first){ -// return; -// } -// -// var node = Potree.PointCloudOctree.lru.first.node; -// if(node.visible){ -// return; -// } -// -// var parent = node.parent; -// var geometry = node.geometry; -// var pcoGeometry = node.pcoGeometry; -// var proxy = new Potree.PointCloudOctreeProxyNode(pcoGeometry); -// -// var result = Potree.PointCloudOctree.disposeNode(node); -// freed += result.freed; -// -// parent.add(proxy); -// -// if(result.numDeletedNodes == 0){ -// break; -// } -// }while(freed < amount); -//} -// -//Potree.PointCloudOctree.disposeNode = function(node){ -// -// var freed = 0; -// var numDeletedNodes = 0; -// var descendants = []; -// -// node.traverse(function(object){ -// descendants.push(object); -// }); -// -// for(var i = 0; i < descendants.length; i++){ -// var descendant = descendants[i]; -// if(descendant instanceof THREE.PointCloud){ -// freed += descendant.pcoGeometry.numPoints; -// descendant.pcoGeometry.dispose(); -// descendant.geometry.dispose(); -// Potree.PointCloudOctree.lru.remove(descendant); -// numDeletedNodes++; -// -// console.log("disposed: " + node.name + "\t, " + renderer.info.memory.geometries + ", " + Potree.PointCloudOctree.lru.elements); -// } -// } -// -// Potree.PointCloudOctree.lru.remove(node); -// node.parent.remove(node); -// -// return { -// "freed": freed, -// "numDeletedNodes": numDeletedNodes -// }; -//} - Potree.PointCloudOctree.prototype.getVisibleExtent = function(){ return this.visibleBounds.applyMatrix4(this.matrixWorld); }; @@ -5069,7 +4875,7 @@ Potree.PointCloudOctree.prototype.pick = function(renderer, camera, ray, params) } for(var i = 0; i < nodes.length; i++){ - var object = nodes[i]; + var object = nodes[i].sceneNode; var geometry = object.geometry; if(!geometry.attributes.indices.buffer){ @@ -5140,7 +4946,7 @@ Potree.PointCloudOctree.prototype.pick = function(renderer, camera, ray, params) if(hit){ var point = {}; - var pc = nodes[hit.pcIndex]; + var pc = nodes[hit.pcIndex].sceneNode; var attributes = pc.geometry.attributes; for (var property in attributes) { @@ -5181,16 +4987,16 @@ Potree.PointCloudOctree.prototype.pick = function(renderer, camera, ray, params) var demTime = 0; -Potree.PointCloudOctree.prototype.createDEM = function(node){ - +Potree.PointCloudOctree.prototype.createDEM = function(node){ var start = new Date().getTime(); + var sceneNode = node.sceneNode; - var world = node.matrixWorld; + var world = sceneNode.matrixWorld; - var boundingBox = node.boundingBox.clone().applyMatrix4(world); + var boundingBox = sceneNode.boundingBox.clone().applyMatrix4(world); var bbSize = boundingBox.size(); - var positions = node.geometry.attributes.position.array; + var positions = sceneNode.geometry.attributes.position.array; var demSize = 64; var demMArray = new Array(demSize*demSize); var dem = new Float32Array(demSize*demSize); @@ -5261,98 +5067,10 @@ Potree.PointCloudOctree.prototype.createDEM = function(node){ dem: dem, demSize: demSize }; - - - - //var geometry = new THREE.BufferGeometry(); - //var vertices = new Float32Array((demSize-1)*(demSize-1)*2*3*3); - //var offset = 0; - //for(var i = 0; i < demSize-1; i++){ - // for(var j = 0; j < demSize-1; j++){ - // //var offset = 18*i + 18*j*demSize; - // - // var dx = i; - // var dy = j; - // - // var v1 = toWorld(dx, dy); - // var v2 = toWorld(dx+1, dy); - // var v3 = toWorld(dx+1, dy+1); - // var v4 = toWorld(dx, dy+1); - // - // vertices[offset+0] = v3[0]; - // vertices[offset+1] = v3[1]; - // vertices[offset+2] = v3[2]; - // - // vertices[offset+3] = v2[0]; - // vertices[offset+4] = v2[1]; - // vertices[offset+5] = v2[2]; - // - // vertices[offset+6] = v1[0]; - // vertices[offset+7] = v1[1]; - // vertices[offset+8] = v1[2]; - // - // - // vertices[offset+9 ] = v3[0]; - // vertices[offset+10] = v3[1]; - // vertices[offset+11] = v3[2]; - // - // vertices[offset+12] = v1[0]; - // vertices[offset+13] = v1[1]; - // vertices[offset+14] = v1[2]; - // - // vertices[offset+15] = v4[0]; - // vertices[offset+16] = v4[1]; - // vertices[offset+17] = v4[2]; - // - // - // - // //var x = (dx * bbSize.min.x) / demSize + boundingBox.min.x; - // //var y = (dy * bbSize.min.y) / demSize + boundingBox.min.y; - // //var z = dem[dx + dy * demSize]; - // - // offset += 18; - // - // } - //} - // - //geometry.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) ); - //geometry.computeFaceNormals(); - //geometry.computeVertexNormals(); - // - //var material = new THREE.MeshNormalMaterial( { color: 0xff0000, shading: THREE.SmoothShading } ); - //var mesh = new THREE.Mesh( geometry, material ); - // - //if(node.level == 1){ - // scene.add(mesh); - // - // var demb = new Uint8Array(demSize*demSize*4); - // for(var i = 0; i < demSize*demSize; i++){ - // demb[4*i + 0] = 255 * dem[i] / 6000; - // demb[4*i + 1] = 255 * dem[i] / 6000; - // demb[4*i + 2] = 255 * dem[i] / 6000; - // demb[4*i + 3] = 255; - // } - // - // var img = pixelsArrayToImage(demb, demSize, demSize); - // img.style.boder = "2px solid red"; - // var txt = document.createElement("div"); - // txt.innerHTML = node.name; - // document.body.appendChild(txt); - // document.body.appendChild(img); - //} - - - - //console.log(n); - // var end = new Date().getTime(); var duration = end - start; - //console.log(node.numPoints + " - " + duration); demTime += duration; - - - return result; } diff --git a/build/js/potree.min.js b/build/js/potree.min.js index 82cc73e182..bc536857f3 100644 --- a/build/js/potree.min.js +++ b/build/js/potree.min.js @@ -1,6 +1,6 @@ -function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var r=new THREE.Vector3(e.x,e.y,.5);r.unproject(t);for(var n=r.sub(t.position).normalize(),a=new THREE.Ray(t.position,n),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var r=o.getContext("2d");e=new e.constructor(e);for(var n=0;n 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying float vLogDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;"," float depth = gl_FragCoord.z;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float sDepth = texture2D(depthMap, uv).r;"," if(vLinearDepth > sDepth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," depth = (pos.z + 1.0) / 2.0;"," gl_FragDepthEXT = depth;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," "," "," #if defined(use_edl)"," gl_FragColor.a = vLogDepth;"," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," float depth = texture2D(depthMap, vUv).g; "," "," if(depth <= 0.0){"," discard;"," }"," "," vec4 color = texture2D(texture, vUv); "," color = color / color.w;"," "," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);",""," gl_Position = projectionMatrix * mvPosition;","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float expScale;","uniform float radius;","","//uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float expToLinear(float z){"," z = 2.0 * z - 1.0;"," float linear = (2.0 * near * far) / (far + near - z * (far - near));",""," return linear;","}","","// this actually only returns linear depth values if LOG_BIAS is 1.0","// lower values work out more nicely, though.","#define LOG_BIAS 0.01","float logToLinear(float z){"," return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth){"," vec4 P = vec4(0, 0, 1, -ztransform(linearDepth));"," vec2 uvRadius = radius / vec2(screenWidth, screenHeight);"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = uvRadius * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a);"," "," if(neighbourDepth != 0.0){"," float Zn = ztransform(neighbourDepth);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.05 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){"," float linearDepth = logToLinear(texture2D(colorMap, vUv).a);"," "," float f = computeObscurance(linearDepth);"," f = exp(-expScale * f);"," "," vec4 color = texture2D(colorMap, vUv);"," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); -var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var r=o.radius,n=this.fov*Math.PI/180;this.aspect<1&&(n*=this.aspect);var a=Math.abs(r/Math.sin(n/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var r=JSON.parse(o.responseText),n=new Potree.Version(r.version);i.octreeDir=0===r.octreeDir.indexOf("http")?r.octreeDir:e+"/../"+r.octreeDir,i.spacing=r.spacing,i.hierarchyStepSize=r.hierarchyStepSize,i.pointAttributes=r.pointAttributes;var a=new THREE.Vector3(r.boundingBox.lx,r.boundingBox.ly,r.boundingBox.lz),s=new THREE.Vector3(r.boundingBox.ux,r.boundingBox.uy,r.boundingBox.uz),l=new THREE.Box3(a,s),d=new THREE.Vector3(0,0,0);d.set(-a.x,-a.y,-a.z),l.min.add(d),l.max.add(d),i.boundingBox=l,i.boundingSphere=l.getBoundingSphere(),i.offset=d,"LAS"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):"LAZ"===r.pointAttributes?i.loader=new Potree.LasLazLoader(r.version):(i.loader=new Potree.BinaryLoader(r.version,l,r.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var c={},u="r",h=new Potree.PointCloudOctreeGeometryNode(u,i,l);if(h.level=0,h.hasChildren=!0,h.numPoints=n.upTo("1.5")?r.hierarchy[0][1]:0,i.root=h,i.root.load(),c[u]=h,n.upTo("1.4"))for(var p=1;p=r?i.pointsCount:i.pointsCount/r,s=function(){var e=t.readData(1e6,0,r);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),n+=e.count,Potree.LasLazLoader.progressCB(n/a),e.hasMoreData?s():(i.totalRead=n,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),r=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),r.add(e.pcoGeometry.offset),i.onmessage=function(o){for(var r=new THREE.BufferGeometry,n=t.pointsCount,a=o.data.position,s=o.data.color,l=o.data.intensity,d=new Uint8Array(o.data.classification),c=new Float32Array(d.byteLength),u=new Uint8Array(o.data.returnNumber),h=new Float32Array(u.byteLength),p=new Uint16Array(o.data.pointSourceID),m=new Float32Array(p.length),f=new ArrayBuffer(4*n),v=new Uint32Array(f),g=new THREE.Box3,E=new Float32Array(a),y=0;n>y;y++)c[y]=d[y],h[y]=u[y],m[y]=p[y],v[y]=y,g.expandByPoint(new THREE.Vector3(E[3*y+0],E[3*y+1],E[3*y+2]));r.addAttribute("position",new THREE.BufferAttribute(new Float32Array(a),3)),r.addAttribute("color",new THREE.BufferAttribute(new Float32Array(s),3)),r.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(l),1)),r.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(c),1)),r.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(h),1)),r.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(m),1)),r.addAttribute("indices",new THREE.BufferAttribute(f,1)),r.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*n),3));var b=new THREE.Box3((new THREE.Vector3).fromArray(o.data.tightBoundingBox.min),(new THREE.Vector3).fromArray(o.data.tightBoundingBox.max));r.boundingBox=b,e.boundingBox=r.boundingBox,e.tightBoundingBox=b,e.geometry=r,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var n={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(n,[n.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,r=e.minSize||1,n=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a,this._useLogarithmicDepthBuffer=!1,this._useEDL=!1;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:r,maxSize:n,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._useLogarithmicDepthBuffer&&(e+="#define use_logarithmic_depth_buffer\n"),this._useEDL&&(e+="#define use_edl\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;in;n++)for(var a=0;i>a;a++){var s,l=n+t*a;s=e[n]?e[n]:e.DEFAULT,r[3*l+0]=255*s.r,r[3*l+1]=255*s.g,r[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var r=new THREE.Vector3(0,0,1).normalize(),n={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},expScale:{type:"f",value:100},radius:{type:"f",value:3},lightDir:{type:"v3",value:r},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:n,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",r,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function r(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",r,!1),l.dispatchEvent(x),P=T.NONE)}function n(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements; -f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,r=o.clone(),n=r.length();n*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*n/i.clientHeight),l.panUp(2*t*n/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var r=(new THREE.Matrix4).makeRotationY(g),n=(new THREE.Matrix4).multiplyMatrices(r,this.object.matrix);this.object.quaternion.setFromRotationMatrix(n),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",n,!1),this.domElement.addEventListener("DOMMouseScroll",n,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function r(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;A=M.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;A=M.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;A=M.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",n,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function n(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(A===M.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(A===M.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(A===M.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",n,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),A=M.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;A=M.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;A=M.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;A=M.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:A=M.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(A!==M.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(A!==M.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,r=Math.sqrt(i*i+o*o);R.set(0,r),C.subVectors(R,P);var n=t.clientWidth,a=t.clientHeight,s=Math.sqrt(n*n+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(A!==M.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:A=M.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),A=M.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,V=new THREE.Vector3,M={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},A=M.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var B={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,r=o.clone().sub(h.target),n=r.length();n*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*n/i.clientHeight),h.panUp(2*t*n/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),r=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var n=Math.min(1,this.fadeFactor*e);o+=n*w,r+=n*x,r=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,r)),r=Math.max(p,Math.min(Math.PI-p,r));var a=T.length();a+=(H-1)*a*n,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(n)),T.x=a*Math.sin(r)*Math.sin(o),T.y=a*Math.cos(r),T.z=a*Math.sin(r)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}V.distanceTo(this.object.position)>0&&(this.dispatchEvent(B),V.copy(this.object.position))},this.reset=function(){A=M.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",r,!1),s.domElement.addEventListener("mouseup",n,!1)}}}function r(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function n(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",r,!1),s.domElement.removeEventListener("mouseup",n,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},r=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(r){var n=r.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(r,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*n*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},r=new THREE.Vector3(o.x,o.y,.5);r.unproject(f);var n=r.sub(f.position).normalize(),a=new THREE.Ray(f.position,n),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,n.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var n=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,n),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var r=i.children[o];r.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.boundingBox=e.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.name=e.name,this.level=e.level,this.numPoints=e.numPoints},Potree.PointCloudOctreeProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.ProfileRequest=function(e,t,i,o,r){this.start=e,this.end=t,this.width=i,this.depth=o,this.callback=r,this.loadQueue=[];var n=((new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),(new THREE.Vector3).subVectors(t,e).length(),(new THREE.Vector3).subVectors(t,e).normalize()),a=new THREE.Vector3(0,1,0),s=(new THREE.Vector3).crossVectors(n,a).normalize(),l=s;this.plane=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,e)},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.LODDistance=20,this.LODFalloff=1.3,this.LOD=4,this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.profileRequests=[],this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1;var i=new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root);this.add(i)},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibleBounds=function(){for(var e=[],t=0;t0;){var n=r.shift();if(n instanceof Potree.PointCloudOctreeProxyNode){var a=Potree.utils.computeTransformedBoundingBox(n.boundingBox,n.matrixWorld),s=a.getBoundingSphere();Math.abs(i.distanceToPoint(s.center))0){var n=c.loadQueue[0],u=n.geometryNode;if(u.loaded===!0&&void 0!==n.parent){var h=this.replaceProxy(n);h.updateMatrixWorld(),h.matrixWorld.multiplyMatrices(h.parent.matrixWorld,h.matrix)}else n.geometryNode.load()}else{var p=this.getProfile(c.start,c.end,c.width,c.depth);c.callback({type:"finished",points:p}),d.push(c)}}for(var e=0;e-1&&this.profileRequests.splice(m,1)}},Potree.PointCloudOctree.prototype.updateMaterial=function(e,t,i,o){e.fov=i.fov*(Math.PI/180),e.screenWidth=o.domElement.clientWidth,e.screenHeight=o.domElement.clientHeight,e.spacing=this.pcoGeometry.spacing,e.near=i.near,e.far=i.far,e.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.size().x,e.pointSizeType&&(e.pointSizeType===Potree.PointSizeType.ADAPTIVE||e.pointColorType===Potree.PointColorType.OCTREE_DEPTH)&&this.updateVisibilityTexture(e,t)},Potree.PointCloudOctree.prototype.updatePointCloud=function(e,t,i,o){if(this.numVisibleNodes++,this.numVisiblePoints+=e.numPoints,e.material=this.material,this.visibleNodes.push(t),this.showBoundingBox&&!e.boundingBoxNode){var r=new THREE.BoxHelper(e);this.add(r),this.boundingBoxNodes.push(r),e.boundingBoxNode=r,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)}else this.showBoundingBox?(e.boundingBoxNode.visible=!0,e.boundingBoxNode.matrixWorld.copy(e.matrixWorld)):!this.showBoundingBox&&e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);this.generateDEM&&e.level<=2&&(e.dem||(e.dem=this.createDEM(e)));for(var n=0;n=0;if(s)for(var l=0;l0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0;){{var a=n.shift(),s=a.node;a.weight}if(s.visible=!0,s.matrixWorld.multiplyMatrices(s.parent.matrixWorld,s.matrix),s instanceof Potree.PointCloudOctreeProxyNode){var l=s.geometryNode;l.loaded===!0?this.replaceProxy(s):this.loadQueue.push(a)}else if(s instanceof THREE.PointCloud)if(s.pcoGeometry.loaded)Potree.PointCloudOctree.lru.touch(s.pcoGeometry),this.updatePointCloud(s,a,n,i,t);else{var d=new Potree.PointCloudOctreeProxyNode(s.pcoGeometry),c=s.parent;c.remove(s),c.add(d)}}this.updateProfileRequests(),this.updateVisibleBounds(),this.updateLoadQueue(),this.hideDescendants(this.children[0]);for(var u=[],o=0;o0;){y++;var b=m.shift(),T=b.node,P=T.boundingBox,v=T.boundingSphere,R=r.intersectsBox(P),C=R;if(C){if(f+T.numPoints>this.visiblePointsTarget)break;f+=T.numPoints,i.push(b);for(var x=0;8>x;x++)if(T.children[x]){var w=T.children[x],v=w.boundingSphere,g=v.center.distanceTo(h),H=v.radius,E=v.radius/g,S=e.fov/2*Math.PI/180,V=1/Math.tan(S)*H/Math.sqrt(g*g-H*H),M=t.domElement.clientHeight*V;if(!(Mg-H&&(E=Number.MAX_VALUE),0===m.length)m.push({node:w,weight:E});else{for(var A=0,B=0;Bm[B].weight){var A=B;break}if(B==m.length-1){A=m.length;break}}m.splice(A,0,{node:w,weight:E})}}}}return i},Potree.PointCloudOctree.prototype.updateVisibilityTexture=function(e,t){if(e){var i=e.visibleNodesTexture,o=i.image.data;t=t.slice();var r=function(e,t){var i=e.name,o=t.name;return i.length!=o.length?i.length-o.length:o>i?-1:i>o?1:0};t.sort(r);for(var n={},a=0;at.name?1:0}),o[3*a+0]=0,o[3*a+1]=0,o[3*a+2]=0;for(var d=0;dn;n++)if(void 0!==t.children[n]){var a=t.children[n],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(l=-l),function(e){var t=(new THREE.Matrix4).makeTranslation(-o.x,-o.y,-o.z),i=(new THREE.Matrix4).makeRotationY(-l),r=(new THREE.Matrix4).makeTranslation(n,0,0),a=e.clone();return a.applyMatrix4(t),a.applyMatrix4(i),a.applyMatrix4(r),a}}(n,a,o),d={start:n,end:a,points:s,project:l};i.push(d),o+=n.distanceTo(a)}return i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,r){if(void 0===r){var n=[];n.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null;n.length>0;){var f=n.shift(),v=0;if(f instanceof THREE.PointCloud){var g=f.geometry,E=g.attributes.position,y=E.array,b=f.numPoints;if(!m){m={};for(var T in g.attributes)g.attributes.hasOwnProperty(T)&&("indices"===T||(m[T]=[]))}for(var P=0;b>P;P++){var R=new THREE.Vector3(y[3*P],y[3*P+1],y[3*P+2]);R.applyMatrix4(this.matrixWorld);var C=Math.abs(h.distanceToPoint(R)),x=Math.abs(p.distanceToPoint(R));if(i/2>C&&s/2>x){for(var T in g.attributes)if(g.attributes.hasOwnProperty(T))if("position"===T)m[T].push(R);else if("indices"===T);else{var w=g.attributes[T];if(1===w.itemSize)m[T].push(w.array[P+S]);else{for(var H=[],S=0;S0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),r=e.clone();return r.applyMatrix4(t),r.applyMatrix4(o),r}}(e,t);return m.project=A,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,r))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},r=o.pickWindowSize||17,n=this.nodesOnRay(this.visibleNodes,i);if(0===n.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointShape=this.material.pointShape,this.pickMaterial.interpolate=this.material.interpolate,this.updateMaterial(this.pickMaterial,n,t,e);var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(r-1)/2,l.y-(r-1)/2,r,r),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),n.length>0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var V={},M=n[P.pcIndex],A=M.geometry.attributes;for(var B in A)if(A.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=M.geometry.attributes.position.array,W=L[3*P.pIndex+0],G=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(W,G,N);X.applyMatrix4(this.matrixWorld),V[B]=X}else if("indices"===B);else if(1===I.itemSize)V[B]=I.array[u+O];else{for(var D=[],O=0;Oc;c++){var u=n[3*c+0],h=n[3*c+1],p=n[3*c+2],m=new THREE.Vector3(u,h,p).applyMatrix4(i),f=parseInt(a*(m.x-o.min.x)/r.x),v=parseInt(a*(m.z-o.min.z)/r.z);f=Math.min(f,a-1),v=Math.min(v,a-1);var g=f+v*a;s[g]||(s[g]=[]),s[g].push(m.y)}for(var c=0;c.5&&n.x.5&&n.y0;){{var n=r.shift(),a=n.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,n.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),r[n+0]=c,r[n+1]=h,r[n+2]=u,n+=3}o.addAttribute("position",new THREE.BufferAttribute(r,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),r=0;o>r;r++)e+=i.substr(r*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],r=i.getUint8(0),n=i.getUint32(1,!0);e.numPoints=n,o.push({children:r,numPoints:n,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(r){console.log("fehler beim laden der punktwolke: "+r)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",r=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],n=THREE.ImageUtils.loadTextureCube(r,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:n},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var r=new THREE.LineBasicMaterial({color:o||8947848}),n=new THREE.Geometry,a=0;t>=a;a++)n.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),n.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),n.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(n,r,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var r=o.image.data,n=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,r[3*u+0]=255*(h/15+.05+p)*n[0],r[3*u+1]=255*(h/15+.05+p)*n[1],r[3*u+2]=255*(h/15+.05+p)*n[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(r)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(r)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),r=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(r)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,r=-t.radius,n=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(r>s)return 0;n=Math.min(n,s)}return n>=t.radius?2:1},Potree.utils.screenPass=new function(){this.screenScene=new THREE.Scene,this.screenQuad=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2,0)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new THREE.Camera,this.render=function(e,t,i){this.screenQuad.material=t,void 0===typeof i?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,i)}},Potree.Features=function(){var e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");if(null===t)return null;var i,o=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT),r=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT),n=(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.LOW_FLOAT),t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT)),a=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT),s=(t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.LOW_FLOAT),o.precision>0&&n.precision>0),l=r.precision>0&&a.precision>0;return i=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getExtension("OES_texture_float"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},SHADER_EDL:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getExtension("OES_texture_float"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},precision:i}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,r=o+2*this.borderThickness,n=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=r,t.canvas.height=n,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*r,.01*n,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,r,n){e.beginPath(),e.moveTo(t+n,i),e.lineTo(t+o-n,i),e.quadraticCurveTo(t+o,i,t+o,i+n),e.lineTo(t+o,i+r-n),e.quadraticCurveTo(t+o,i+r,t+o-n,i+r),e.lineTo(t+n,i+r),e.quadraticCurveTo(t,i+r,t,i+r-n),e.lineTo(t,i+n),e.quadraticCurveTo(t,i,t+n,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},r=function(e){e.target.material.emissive.setHex(0)},n=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var r=e.spheres.indexOf(i.dragstart.object);e.setPosition(r,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",r),s.addEventListener("drag",n),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){var t=this.points[r];o.add(t)}o.divideScalar(this.points.length);for(var r=0;i>=r;r++){var n=r,a=r+1>i?0:r+1,s=0===r?i:r-1,t=this.points[n],l=this.points[a],d=this.points[s],c=this.spheres[n];c.position.copy(t),c.material.color=e.color;var u=this.edges[n];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>n||this.closed;var h=this.edgeLabels[r],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>n||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[r],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>n||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function r(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var r=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(r,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function n(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&n(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,r="undefined"!=typeof e.closed?e.closed:!1,n=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=r,a.maxMarkers=n,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){{var e=this.points[n],a=this.spheres[n],s=0===n?r:n-1,l=n===r?0:n+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[n],p=this.boxes[s];this.boxes[n],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var n=0;n0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ad)&&(r=l,n=d)}}return r?r.position:null},this.startInsertion=function(e){h=u.INSERT; -var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),r=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(r);var n=function(){r.material.color.setHex(5592405)},a=function(){r.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),r=t.clone().unproject(s.camera),n=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(n,r),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,r).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=r;r++){var n=2*Math.PI*r/o,a=3*Math.cos(n),l=3*Math.sin(n);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,r=0;rt;t++)r.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function r(){}function n(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?n[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var r=null,n=null,a=0;ac)&&(r=l,n=c)}}return r?r.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var r=[],n=0;n=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",r,!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var r=0;rH&&(M=Number.MAX_VALUE);var A=t.domElement.clientHeight*M;if(!(Af[I].weight){var B=I;break}if(I==f.length-1){B=f.length;break}}f.splice(B,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var r=0;r0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),r=0;r0&&n.push(n[0]);for(var u=0;uR;R++)for(var C=0;r>C;C++){var x=R+C*r,w=Math.pow(R-(r-1)/2,2)+Math.pow(C-(r-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var V={},M=n[P.pcIndex],A=M.geometry.attributes;for(var B in A)if(A.hasOwnProperty(B)){var I=p.attributes[B];if("position"===B){var L=M.geometry.attributes.position.array,W=L[3*P.pIndex+0],G=L[3*P.pIndex+1],N=L[3*P.pIndex+2],X=new THREE.Vector3(W,G,N);X.applyMatrix4(this.matrixWorld),V[B]=X}else if("indices"===B);else if(1===I.itemSize)V[B]=I.array[u+O];else{for(var D=[],O=0;Or?-1:r>n?1:0};t.sort(r);for(var n=[],a=0;a0&&(l+=1,d=n.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&n.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?n.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),r=e.byteLength/17,n=new Float32Array(3*r),a=new Float32Array(3*r),s=new Uint32Array(r),l=0;r>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256; -n[3*l+0]=d,n[3*l+1]=c,n[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(n,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*r),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=r}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),r=new Potree.PointCloudArena4DGeometry;r.url=e,r.name=o.Name,r.provider=o.Provider,r.numNodes=o.Nodes,r.numPoints=o.Points,r.version=o.Version,r.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(r.spacing=o.Spacing);var n=r.boundingBox.min.clone().multiplyScalar(-1);r.boundingBox.min.add(n),r.boundingBox.max.add(n),r.offset=n;var a=r.boundingBox.center(),s=r.boundingBox.size().length()/2;r.boundingSphere=new THREE.Sphere(a,s),r.loadHierarchy(),t(r)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,r=new DataView(e),n=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=r.getUint8(3*l+0,!0),c=(r.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null;h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=n.length,s=Math.max(s,v.level),n.length>0){var g=n[n.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,n.push(v),v.isLeaf)for(var P=!1;!P&&n.length>0;){n.pop();var R=n[n.length-1];P=n.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file +function Potree(){}function LRUItem(e){this.previous=null,this.next=null,this.node=e}function LRU(){this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}function getMousePointCloudIntersection(e,t,i,o){var n=new THREE.Vector3(e.x,e.y,.5);n.unproject(t);for(var r=n.sub(t.position).normalize(),a=new THREE.Ray(t.position,r),s=null,l=null,d=0;dh)&&(s=u,l=h)}}return s?s.position:null}function pixelsArrayToImage(e,t,i){var o=document.createElement("canvas");o.width=t,o.height=i;var n=o.getContext("2d");e=new e.constructor(e);for(var r=0;r 0",""," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];",""," #endif",""," #if MAX_DIR_LIGHTS > 0",""," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];",""," #endif","","#endif","","//#if MAX_SPOT_LIGHTS > 0","//","// uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","// uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","// uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","// uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","//","// uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","//","//#endif","","uniform float fov;","uniform float spacing;","uniform float near;","uniform float far;","uniform float pcIndex;","uniform float screenWidth;","uniform float screenHeight;","","uniform sampler2D depthMap;","","varying vec3 vColor;","varying float vOpacity;","varying float vLinearDepth;","varying float vLogDepth;","varying vec3 vViewPosition;","varying float vRadius;","varying vec3 vWorldPosition;","varying vec3 vNormal;","","float specularStrength = 1.0;","","void main() {",""," vec3 color = vColor;"," float depth = gl_FragCoord.z;",""," #if defined(circle_point_shape) || defined(use_interpolation) || defined (weighted_splats)"," float u = 2.0 * gl_PointCoord.x - 1.0;"," float v = 2.0 * gl_PointCoord.y - 1.0;"," #endif"," "," #if defined(circle_point_shape) || defined (weighted_splats)"," float cc = u*u + v*v;"," if(cc > 1.0){"," discard;"," }"," #endif"," "," #if defined weighted_splats"," vec2 uv = gl_FragCoord.xy / vec2(screenWidth, screenHeight);"," float sDepth = texture2D(depthMap, uv).r;"," if(vLinearDepth > sDepth + vRadius){"," discard;"," }"," #endif"," "," #if defined use_interpolation"," float wi = 0.0 - ( u*u + v*v);"," vec4 pos = vec4(-vViewPosition, 1.0);"," pos.z += wi * vRadius;"," float linearDepth = pos.z;"," pos = projectionMatrix * pos;"," pos = pos / pos.w;"," float expDepth = pos.z;"," depth = (pos.z + 1.0) / 2.0;"," gl_FragDepthEXT = depth;"," "," #if defined(color_type_depth)"," color.r = linearDepth;"," color.g = expDepth;"," #endif"," "," #endif"," "," #if defined color_type_point_index"," gl_FragColor = vec4(color, pcIndex / 255.0);"," #else"," gl_FragColor = vec4(color, vOpacity);"," #endif"," "," #if defined weighted_splats"," float w = pow(1.0 - (u*u + v*v), 2.0);"," gl_FragColor.rgb = gl_FragColor.rgb * w;"," gl_FragColor.a = w;"," #endif"," "," vec3 normal = normalize( vNormal );"," normal.z = abs(normal.z);"," vec3 viewPosition = normalize( vViewPosition );"," "," #if defined(color_type_phong)",""," // code taken from three.js phong light fragment shader"," "," #if MAX_POINT_LIGHTS > 0",""," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );",""," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {",""," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 lVector = lPosition.xyz + vViewPosition.xyz;",""," float lDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );",""," lVector = normalize( lVector );",""," // diffuse",""," float dotProduct = dot( normal, lVector );",""," #ifdef WRAP_AROUND",""," float pointDiffuseWeightFull = max( dotProduct, 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );",""," #else",""," float pointDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;",""," // specular",""," vec3 pointHalfVector = normalize( lVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;"," pointSpecular = vec3(0.0, 0.0, 0.0);"," }"," "," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );",""," for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {",""," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );",""," // diffuse",""," float dotProduct = dot( normal, dirVector );",""," #ifdef WRAP_AROUND",""," float dirDiffuseWeightFull = max( dotProduct, 0.0 );"," float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );",""," vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );",""," #else",""," float dirDiffuseWeight = max( dotProduct, 0.0 );",""," #endif",""," dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;",""," // specular",""," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );",""," float specularNormalization = ( shininess + 2.0 ) / 8.0;",""," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }",""," #endif"," "," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," "," #if MAX_POINT_LIGHTS > 0",""," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;",""," #endif"," "," #if MAX_DIR_LIGHTS > 0",""," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;",""," #endif"," "," gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;",""," #endif"," "," "," #if defined(use_edl)"," gl_FragColor.a = vLogDepth;"," #endif"," ","}","","",""].join("\n"),Potree.Shaders["normalize.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["normalize.fs"]=["","#extension GL_EXT_frag_depth : enable","","uniform sampler2D depthMap;","uniform sampler2D texture;","","varying vec2 vUv;","","void main() {"," float depth = texture2D(depthMap, vUv).g; "," "," if(depth <= 0.0){"," discard;"," }"," "," vec4 color = texture2D(texture, vUv); "," color = color / color.w;"," "," gl_FragColor = vec4(color.xyz, 1.0); "," "," gl_FragDepthEXT = depth;","}"].join("\n"),Potree.Shaders["edl.vs"]=["","","varying vec2 vUv;","","void main() {"," vUv = uv;"," "," vec4 mvPosition = modelViewMatrix * vec4(position,1.0);",""," gl_Position = projectionMatrix * mvPosition;","}"].join("\n"),Potree.Shaders["edl.fs"]=["","// ","// adapted from the EDL shader code from Christian Boucheny in cloud compare:","// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL","//","","#define NEIGHBOUR_COUNT 8","","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","uniform vec2 neighbours[NEIGHBOUR_COUNT];","uniform vec3 lightDir;","uniform float expScale;","uniform float radius;","","//uniform sampler2D depthMap;","uniform sampler2D colorMap;","","varying vec2 vUv;","","/**"," * transform linear depth to [0,1] interval with 1 beeing closest to the camera."," */","float ztransform(float linearDepth){"," return 1.0 - (linearDepth - near) / (far - near);","}","","float expToLinear(float z){"," z = 2.0 * z - 1.0;"," float linear = (2.0 * near * far) / (far + near - z * (far - near));",""," return linear;","}","","// this actually only returns linear depth values if LOG_BIAS is 1.0","// lower values work out more nicely, though.","#define LOG_BIAS 0.01","float logToLinear(float z){"," return (pow((1.0 + LOG_BIAS * far), z) - 1.0) / LOG_BIAS;","}","","float obscurance(float z, float dist){"," return max(0.0, z) / dist;","}","","float computeObscurance(float linearDepth){"," vec4 P = vec4(0, 0, 1, -ztransform(linearDepth));"," vec2 uvRadius = radius / vec2(screenWidth, screenHeight);"," "," float sum = 0.0;"," "," for(int c = 0; c < NEIGHBOUR_COUNT; c++){"," vec2 N_rel_pos = uvRadius * neighbours[c];"," vec2 N_abs_pos = vUv + N_rel_pos;"," "," float neighbourDepth = logToLinear(texture2D(colorMap, N_abs_pos).a);"," "," if(neighbourDepth != 0.0){"," float Zn = ztransform(neighbourDepth);"," float Znp = dot( vec4( N_rel_pos, Zn, 1.0), P );"," "," sum += obscurance( Znp, 0.05 * linearDepth );"," }"," }"," "," return sum;","}","","void main(){"," float linearDepth = logToLinear(texture2D(colorMap, vUv).a);"," "," float f = computeObscurance(linearDepth);"," f = exp(-expScale * f);"," "," vec4 color = texture2D(colorMap, vUv);"," if(color.a == 0.0 && f >= 1.0){"," discard;"," }"," "," gl_FragColor = vec4(color.rgb * f, 1.0);","}",""].join("\n"),Potree.Shaders["blur.vs"]=["","varying vec2 vUv;","","void main() {"," vUv = uv;",""," gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);","}"].join("\n"),Potree.Shaders["blur.fs"]=["","uniform mat4 projectionMatrix;","","uniform float screenWidth;","uniform float screenHeight;","uniform float near;","uniform float far;","","uniform sampler2D map;","","varying vec2 vUv;","","void main() {",""," float dx = 1.0 / screenWidth;"," float dy = 1.0 / screenHeight;",""," vec3 color = vec3(0.0, 0.0, 0.0);"," color += texture2D(map, vUv + vec2(-dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, -dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, -dy)).rgb;"," color += texture2D(map, vUv + vec2(-dx, 0)).rgb;"," color += texture2D(map, vUv + vec2( 0, 0)).rgb;"," color += texture2D(map, vUv + vec2(+dx, 0)).rgb;"," color += texture2D(map, vUv + vec2(-dx, dy)).rgb;"," color += texture2D(map, vUv + vec2( 0, dy)).rgb;"," color += texture2D(map, vUv + vec2(+dx, dy)).rgb;"," "," color = color / 9.0;"," "," gl_FragColor = vec4(color, 1.0);"," "," ","}"].join("\n"),THREE.PerspectiveCamera.prototype.zoomTo=function(e,t){if(e.geometry||e.boundingSphere){e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(); +var i=t||1,o=e.boundingSphere||e.geometry.boundingSphere;o=o.clone().applyMatrix4(e.matrixWorld);var n=o.radius,r=this.fov*Math.PI/180;this.aspect<1&&(r*=this.aspect);var a=Math.abs(n/Math.sin(r/2))*i,s=new THREE.Vector3(0,0,-1).applyQuaternion(this.quaternion),l=s.multiplyScalar(-a);this.position.copy(o.center.clone().add(l))}},THREE.Ray.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i},Potree.POCLoader=function(){},Potree.POCLoader.load=function(e,t){try{var i=new Potree.PointCloudOctreeGeometry;i.url=e;var o=new XMLHttpRequest;o.open("GET",e,!0),o.onreadystatechange=function(){if(4===o.readyState&&(200===o.status||0===o.status)){var n=JSON.parse(o.responseText),r=new Potree.Version(n.version);i.octreeDir=0===n.octreeDir.indexOf("http")?n.octreeDir:e+"/../"+n.octreeDir,i.spacing=n.spacing,i.hierarchyStepSize=n.hierarchyStepSize,i.pointAttributes=n.pointAttributes;var a=new THREE.Vector3(n.boundingBox.lx,n.boundingBox.ly,n.boundingBox.lz),s=new THREE.Vector3(n.boundingBox.ux,n.boundingBox.uy,n.boundingBox.uz),l=new THREE.Box3(a,s),d=l.clone();n.tightBoundingBox&&(d.min.copy(new THREE.Vector3(n.tightBoundingBox.lx,n.tightBoundingBox.ly,n.tightBoundingBox.lz)),d.max.copy(new THREE.Vector3(n.tightBoundingBox.ux,n.tightBoundingBox.uy,n.tightBoundingBox.uz)));var c=new THREE.Vector3(0,0,0);c.set(-a.x,-a.y,-a.z),l.min.add(c),l.max.add(c),d.min.add(c),d.max.add(c),i.boundingBox=l,i.tightBoundingBox=d,i.boundingSphere=l.getBoundingSphere(),i.tightBoundingSphere=d.getBoundingSphere(),i.offset=c,"LAS"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):"LAZ"===n.pointAttributes?i.loader=new Potree.LasLazLoader(n.version):(i.loader=new Potree.BinaryLoader(n.version,l,n.scale),i.pointAttributes=new Potree.PointAttributes(i.pointAttributes));var u={},h="r",p=new Potree.PointCloudOctreeGeometryNode(h,i,l);if(p.level=0,p.hasChildren=!0,p.numPoints=r.upTo("1.5")?n.hierarchy[0][1]:0,i.root=p,i.root.load(),u[h]=p,r.upTo("1.4"))for(var m=1;m=n?i.pointsCount:i.pointsCount/n,s=function(){var e=t.readData(1e6,0,n);return e.then(function(e){return o.push(new LASDecoder(e.buffer,i.pointsFormatId,i.pointsStructSize,e.count,i.scale,i.offset,i.mins,i.maxs)),r+=e.count,Potree.LasLazLoader.progressCB(r/a),e.hasMoreData?s():(i.totalRead=r,i.versionAsString=t.versionAsString,i.isCompressed=t.isCompressed,[t,i,o])})};return s()}).then(function(e){var t=e[0];return Potree.LasLazLoader.progressCB(1),t.close().then(function(){return t.isOpen=!1,Promise.delay(200).cancellable()}).then(function(){return e.slice(1)})})["catch"](Promise.CancellationError,function(e){if(i.isOpen)return i.close().then(function(){throw i.isOpen=!1,e});throw e})},Potree.LasLazLoader.prototype.handle=function(){},Potree.LasLazBatcher=function(e){this.push=function(t){var i=Potree.workers.lasdecoder.getWorker(),o=new THREE.Vector3(t.mins[0],t.mins[1],t.mins[2]),n=new THREE.Vector3(t.maxs[0],t.maxs[1],t.maxs[2]);o.add(e.pcoGeometry.offset),n.add(e.pcoGeometry.offset),i.onmessage=function(o){for(var n=new THREE.BufferGeometry,r=t.pointsCount,a=o.data.position,s=o.data.color,l=o.data.intensity,d=new Uint8Array(o.data.classification),c=new Float32Array(d.byteLength),u=new Uint8Array(o.data.returnNumber),h=new Float32Array(u.byteLength),p=new Uint16Array(o.data.pointSourceID),m=new Float32Array(p.length),f=new ArrayBuffer(4*r),v=new Uint32Array(f),g=new THREE.Box3,E=new Float32Array(a),y=0;r>y;y++)c[y]=d[y],h[y]=u[y],m[y]=p[y],v[y]=y,g.expandByPoint(new THREE.Vector3(E[3*y+0],E[3*y+1],E[3*y+2]));n.addAttribute("position",new THREE.BufferAttribute(new Float32Array(a),3)),n.addAttribute("color",new THREE.BufferAttribute(new Float32Array(s),3)),n.addAttribute("intensity",new THREE.BufferAttribute(new Float32Array(l),1)),n.addAttribute("classification",new THREE.BufferAttribute(new Float32Array(c),1)),n.addAttribute("returnNumber",new THREE.BufferAttribute(new Float32Array(h),1)),n.addAttribute("pointSourceID",new THREE.BufferAttribute(new Float32Array(m),1)),n.addAttribute("indices",new THREE.BufferAttribute(f,1)),n.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*r),3));var b=new THREE.Box3((new THREE.Vector3).fromArray(o.data.tightBoundingBox.min),(new THREE.Vector3).fromArray(o.data.tightBoundingBox.max));n.boundingBox=b,e.boundingBox=n.boundingBox,e.tightBoundingBox=b,e.geometry=n,e.loaded=!0,e.loading=!1,e.pcoGeometry.numNodesLoading--,Potree.workers.lasdecoder.returnWorker(i)};var r={buffer:t.arrayb,numPoints:t.pointsCount,pointSize:t.pointSize,pointFormatID:2,scale:t.scale,offset:t.offset,mins:[e.pcoGeometry.boundingBox.min.x,e.pcoGeometry.boundingBox.min.y,e.pcoGeometry.boundingBox.min.z],maxs:[e.pcoGeometry.boundingBox.max.x,e.pcoGeometry.boundingBox.max.y,e.pcoGeometry.boundingBox.max.z],bbOffset:[e.pcoGeometry.offset.x,e.pcoGeometry.offset.y,e.pcoGeometry.offset.z]};i.postMessage(r,[r.buffer])}},Potree.Gradients={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},Potree.Classification={DEFAULT:{0:new THREE.Color(.5,.5,.5),1:new THREE.Color(.5,.5,.5),2:new THREE.Color(.63,.32,.18),3:new THREE.Color(0,1,0),4:new THREE.Color(0,.8,0),5:new THREE.Color(0,.6,0),6:new THREE.Color(1,.66,0),7:new THREE.Color(1,0,1),8:new THREE.Color(1,0,0),9:new THREE.Color(0,0,1),12:new THREE.Color(1,1,0),DEFAULT:new THREE.Color(.3,.6,.6)}},Potree.PointSizeType={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Potree.PointShape={SQUARE:0,CIRCLE:1},Potree.PointColorType={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,INTENSITY:4,INTENSITY_GRADIENT:5,TREE_DEPTH:6,POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,TREE_DEPTH:13},Potree.ClipMode={DISABLED:0,CLIP_OUTSIDE:1,HIGHLIGHT_INSIDE:2},Potree.TreeType={OCTREE:0,KDTREE:1},Potree.PointCloudMaterial=function(e){THREE.Material.call(this),e=e||{};var t=new THREE.Color(16777215),i=THREE.ImageUtils.generateDataTexture(2048,1,t);i.magFilter=THREE.NearestFilter,this.visibleNodesTexture=i;var o=e.size||1,n=e.minSize||1,r=e.maxSize||50,a=e.treeType||Potree.TreeType.OCTREE,s=1;this._pointSizeType=Potree.PointSizeType.ATTENUATED,this._pointShape=Potree.PointShape.SQUARE,this._interpolate=!1,this._pointColorType=Potree.PointColorType.RGB,this._useClipBox=!1,this.numClipBoxes=0,this._clipMode=Potree.ClipMode.DISABLED,this._weighted=!1,this._depthMap,this._gradient=Potree.Gradients.RAINBOW,this._classification=Potree.Classification.DEFAULT,this.gradientTexture=Potree.PointCloudMaterial.generateGradientTexture(this._gradient),this.classificationTexture=Potree.PointCloudMaterial.generateClassificationTexture(this._classification),this.lights=!0,this._treeType=a,this._useLogarithmicDepthBuffer=!1,this._useEDL=!1;var l={},d={spacing:{type:"f",value:1},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new THREE.Color(16777215)},opacity:{type:"f",value:1},size:{type:"f",value:10},minSize:{type:"f",value:2},maxSize:{type:"f",value:2},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},heightMin:{type:"f",value:0},heightMax:{type:"f",value:1},intensityMin:{type:"f",value:0},intensityMax:{type:"f",value:1},clipBoxCount:{type:"f",value:0},visibleNodes:{type:"t",value:this.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:this.gradientTexture},classificationLUT:{type:"t",value:this.classificationTexture},clipBoxes:{type:"Matrix4fv",value:[]},depthMap:{type:"t",value:null},diffuse:{type:"fv",value:[1,1,1]},ambient:{type:"fv",value:[.1,.1,.1]},ambientLightColor:{type:"fv",value:[1,1,1]},directionalLightColor:{type:"fv",value:null},directionalLightDirection:{type:"fv",value:null},pointLightColor:{type:"fv",value:null},pointLightPosition:{type:"fv",value:null},pointLightDistance:{type:"fv1",value:null},spotLightColor:{type:"fv",value:null},spotLightPosition:{type:"fv",value:null},spotLightDistance:{type:"fv1",value:null},spotLightDirection:{type:"fv",value:null},spotLightAngleCos:{type:"fv1",value:null},spotLightExponent:{type:"fv1",value:null},hemisphereLightSkyColor:{type:"fv",value:null},hemisphereLightGroundColor:{type:"fv",value:null},hemisphereLightDirection:{type:"fv",value:null}};this.defaultAttributeValues.normal=[0,0,0],this.setValues({uniforms:d,attributes:l,vertexShader:this.getDefines()+Potree.Shaders["pointcloud.vs"],fragmentShader:this.getDefines()+Potree.Shaders["pointcloud.fs"],vertexColors:THREE.VertexColors,size:o,minSize:n,maxSize:r,nodeSize:s,pcIndex:0,alphaTest:.9})},Potree.PointCloudMaterial.prototype=new THREE.ShaderMaterial,Potree.PointCloudMaterial.prototype.updateShaderSource=function(){var e={};this.pointColorType===Potree.PointColorType.INTENSITY||this.pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e.intensity={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.CLASSIFICATION?e.classification={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.RETURN_NUMBER?e.returnNumber={type:"f",value:[]}:this.pointColorType===Potree.PointColorType.SOURCE?e.pointSourceID={type:"f",value:[]}:(this.pointColorType===Potree.PointColorType.NORMAL||this.pointColorType===Potree.PointColorType.PHONG)&&(e.normal={type:"f",value:[]});var t=this.getDefines()+Potree.Shaders["pointcloud.vs"],i=this.getDefines()+Potree.Shaders["pointcloud.fs"];this.setValues({attributes:e,vertexShader:t,fragmentShader:i}),this.depthMap&&(this.uniforms.depthMap.value=this.depthMap,this.setValues({depthMap:this.depthMap})),this.setValues(1===this.opacity?{blending:THREE.NoBlending,transparent:!1,depthTest:!0,depthWrite:!0}:{blending:THREE.AdditiveBlending,transparent:!0,depthTest:!1,depthWrite:!0}),this.weighted&&this.setValues({blending:THREE.AdditiveBlending,transparent:!0,depthTest:!0,depthWrite:!1}),this.needsUpdate=!0},Potree.PointCloudMaterial.prototype.getDefines=function(){var e="";return this.pointSizeType===Potree.PointSizeType.FIXED?e+="#define fixed_point_size\n":this.pointSizeType===Potree.PointSizeType.ATTENUATED?e+="#define attenuated_point_size\n":this.pointSizeType===Potree.PointSizeType.ADAPTIVE&&(e+="#define adaptive_point_size\n"),this.pointShape===Potree.PointShape.SQUARE?e+="#define square_point_shape\n":this.pointShape===Potree.PointShape.CIRCLE&&(e+="#define circle_point_shape\n"),this._interpolate&&(e+="#define use_interpolation\n"),this._useLogarithmicDepthBuffer&&(e+="#define use_logarithmic_depth_buffer\n"),this._useEDL&&(e+="#define use_edl\n"),this._pointColorType===Potree.PointColorType.RGB?e+="#define color_type_rgb\n":this._pointColorType===Potree.PointColorType.COLOR?e+="#define color_type_color\n":this._pointColorType===Potree.PointColorType.DEPTH?e+="#define color_type_depth\n":this._pointColorType===Potree.PointColorType.HEIGHT?e+="#define color_type_height\n":this._pointColorType===Potree.PointColorType.INTENSITY?e+="#define color_type_intensity\n":this._pointColorType===Potree.PointColorType.INTENSITY_GRADIENT?e+="#define color_type_intensity_gradient\n":this._pointColorType===Potree.PointColorType.TREE_DEPTH?e+="#define color_type_tree_depth\n":this._pointColorType===Potree.PointColorType.POINT_INDEX?e+="#define color_type_point_index\n":this._pointColorType===Potree.PointColorType.CLASSIFICATION?e+="#define color_type_classification\n":this._pointColorType===Potree.PointColorType.RETURN_NUMBER?e+="#define color_type_return_number\n":this._pointColorType===Potree.PointColorType.SOURCE?e+="#define color_type_source\n":this._pointColorType===Potree.PointColorType.NORMAL?e+="#define color_type_normal\n":this._pointColorType===Potree.PointColorType.PHONG&&(e+="#define color_type_phong\n"),this.clipMode===Potree.ClipMode.DISABLED?e+="#define clip_disabled\n":this.clipMode===Potree.ClipMode.CLIP_OUTSIDE?e+="#define clip_outside\n":this.clipMode===Potree.ClipMode.HIGHLIGHT_INSIDE&&(e+="#define clip_highlight_inside\n"),this._treeType===Potree.TreeType.OCTREE?e+="#define tree_type_octree\n":this._treeType===Potree.TreeType.KDTREE&&(e+="#define tree_type_kdtree\n"),this.weighted&&(e+="#define weighted_splats\n"),this.numClipBoxes>0&&(e+="#define use_clip_box\n"),e},Potree.PointCloudMaterial.prototype.setClipBoxes=function(e){if(e){this.clipBoxes=e;var t=this.numClipBoxes!=e.length&&(0===e.length||0===this.numClipBoxes);this.numClipBoxes=e.length,this.uniforms.clipBoxCount.value=this.numClipBoxes,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.numClipBoxes);for(var i=0;ir;r++)for(var a=0;i>a;a++){var s,l=r+t*a;s=e[r]?e[r]:e.DEFAULT,n[3*l+0]=255*s.r,n[3*l+1]=255*s.g,n[3*l+2]=255*s.b}return o},Potree.EyeDomeLightingMaterial=function(e){THREE.Material.call(this),e=e||{};for(var t=8,i=new Float32Array(2*t),o=0;t>o;o++)i[2*o+0]=Math.cos(2*o*Math.PI/t),i[2*o+1]=Math.sin(2*o*Math.PI/t);var n=new THREE.Vector3(0,0,1).normalize(),r={screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},near:{type:"f",value:0},far:{type:"f",value:0},expScale:{type:"f",value:100},radius:{type:"f",value:3},lightDir:{type:"v3",value:n},neighbours:{type:"2fv",value:i},depthMap:{type:"t",value:null},colorMap:{type:"t",value:null}};this.setValues({uniforms:r,vertexShader:Potree.Shaders["edl.vs"],fragmentShader:Potree.Shaders["edl.fs"]})},Potree.EyeDomeLightingMaterial.prototype=new THREE.ShaderMaterial,Potree.BlurMaterial=function(e){THREE.Material.call(this),e=e||{};var t={near:{type:"f",value:0},far:{type:"f",value:0},screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},map:{type:"t",value:null}};this.setValues({uniforms:t,vertexShader:Potree.Shaders["blur.vs"],fragmentShader:Potree.Shaders["blur.fs"]})},Potree.BlurMaterial.prototype=new THREE.ShaderMaterial,THREE.FirstPersonControls=function(e,t){function i(e){l.enabled!==!1&&(e.preventDefault(),0===e.button?(P=T.ROTATE,d.set(e.clientX,e.clientY)):2===e.button&&(P=T.PAN,h.set(e.clientX,e.clientY)),l.domElement.addEventListener("mousemove",o,!1),l.domElement.addEventListener("mouseup",n,!1),l.dispatchEvent(C))}function o(e){if(l.enabled!==!1){e.preventDefault();var t=l.domElement===document?l.domElement.body:l.domElement;P===T.ROTATE?(c.set(e.clientX,e.clientY),u.subVectors(c,d),l.rotateLeft(2*Math.PI*u.x/t.clientWidth*l.rotateSpeed),l.rotateUp(2*Math.PI*u.y/t.clientHeight*l.rotateSpeed),d.copy(c)):P===T.PAN&&(p.set(e.clientX,e.clientY),m.subVectors(p,h),m.multiplyScalar(5e-4).multiplyScalar(l.moveSpeed),l.pan(m.x,m.y),h.copy(p))}}function n(){l.enabled!==!1&&(l.domElement.removeEventListener("mousemove",o,!1),l.domElement.removeEventListener("mouseup",n,!1),l.dispatchEvent(x),P=T.NONE)}function r(e){if(l.enabled!==!1&&l.noZoom!==!0){e.preventDefault();var t=e.detail<0||e.wheelDelta>0?1:-1;l.moveSpeed+=.1*l.moveSpeed*t,l.moveSpeed=Math.max(.1,l.moveSpeed),l.dispatchEvent(C),l.dispatchEvent(x)}}function a(e){if(l.enabled!==!1)switch(e.keyCode){case l.keys.UP:l.moveForward=!0;break;case l.keys.BOTTOM:l.moveBackward=!0;break;case l.keys.LEFT:l.moveLeft=!0;break;case l.keys.RIGHT:l.moveRight=!0;break;case l.keys.W:l.moveForward=!0;break;case l.keys.S:l.moveBackward=!0;break;case l.keys.A:l.moveLeft=!0;break;case l.keys.D:l.moveRight=!0}}function s(e){switch(e.keyCode){case l.keys.W:l.moveForward=!1;break;case l.keys.S:l.moveBackward=!1;break;case l.keys.A:l.moveLeft=!1;break;case l.keys.D:l.moveRight=!1;break;case l.keys.UP:l.moveForward=!1;break;case l.keys.BOTTOM:l.moveBackward=!1;break;case l.keys.LEFT:l.moveLeft=!1;break;case l.keys.RIGHT:l.moveRight=!1}}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.rotateSpeed=1,this.moveSpeed=10,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0)};var l=this,d=new THREE.Vector2,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.Vector2,p=new THREE.Vector2,m=new THREE.Vector2,f=new THREE.Vector3,v=(new THREE.Vector3,0),g=0,E=1,y=new THREE.Vector3,b=new THREE.Vector3,T={NONE:-1,ROTATE:0,SPEEDCHANGE:1,PAN:2},P=T.NONE;this.position0=this.object.position.clone();var R={type:"change"},C={type:"start"},x={type:"end"};this.rotateLeft=function(e){g-=e +},this.rotateUp=function(e){v-=e},this.panLeft=function(e){var t=this.object.matrix.elements;f.set(t[0],t[1],t[2]),f.multiplyScalar(-e),y.add(f)},this.panUp=function(e){var t=this.object.matrix.elements;f.set(t[4],t[5],t[6]),f.multiplyScalar(e),y.add(f)},this.panForward=function(e){var t=this.object.matrix.elements;f.set(t[8],t[9],t[10]),f.multiplyScalar(e),y.add(f)},this.pan=function(e,t){var i=l.domElement===document?l.domElement.body:l.domElement;if(void 0!==l.object.fov){var o=l.object.position,n=o.clone(),r=n.length();r*=Math.tan(l.object.fov/2*Math.PI/180),l.panLeft(2*e*r/i.clientHeight),l.panUp(2*t*r/i.clientHeight)}else void 0!==l.object.top?(l.panLeft(e*(l.object.right-l.object.left)/i.clientWidth),l.panUp(t*(l.object.top-l.object.bottom)/i.clientHeight)):console.warn("WARNING: FirstPersonControls.js encountered an unknown camera type - pan disabled.")},this.update=function(e){this.object.rotation.order="ZYX";var t=this.object;this.object=new THREE.Object3D,this.object.position.copy(t.position),this.object.rotation.copy(t.rotation),this.object.updateMatrix(),this.object.updateMatrixWorld();var i=this.object.position;if(void 0!==e&&(this.moveRight&&this.panLeft(-e*this.moveSpeed),this.moveLeft&&this.panLeft(e*this.moveSpeed),this.moveForward&&this.panForward(-e*this.moveSpeed),this.moveBackward&&this.panForward(e*this.moveSpeed)),!y.equals(new THREE.Vector3(0,0,0))){var o={type:"move",translation:y.clone()};this.dispatchEvent(o)}if(i.add(y),0!==g||0!==v){var o={type:"rotate",thetaDelta:g,phiDelta:v};this.dispatchEvent(o)}this.object.updateMatrix();var n=(new THREE.Matrix4).makeRotationY(g),r=(new THREE.Matrix4).multiplyMatrices(n,this.object.matrix);this.object.quaternion.setFromRotationMatrix(r),this.object.rotation.x+=v,this.object.updateMatrixWorld();var a={type:"proposeTransform",oldPosition:t.position,newPosition:this.object.position,objections:0,counterProposals:[]};if(this.dispatchEvent(a),a.objections>0&&a.counterProposals.length>0){var s=a.counterProposals;this.object.position.copy(s[0]),a.objections=0,a.counterProposals=[]}a.objections>0||t.position.copy(this.object.position),t.rotation.copy(this.object.rotation),this.object=t,g=0,v=0,E=1,y.set(0,0,0),b.distanceTo(this.object.position)>0&&(this.dispatchEvent(R),b.copy(this.object.position))},this.reset=function(){P=T.NONE,this.object.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",i,!1),this.domElement.addEventListener("mousewheel",r,!1),this.domElement.addEventListener("DOMMouseScroll",r,!1),window.addEventListener("keydown",a,!1),window.addEventListener("keyup",s,!1)},THREE.FirstPersonControls.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.OrbitControls=function(e,t){function i(){return 2*Math.PI/60/60*h.autoRotateSpeed}function o(){return Math.pow(.95,h.zoomSpeed)}function n(e){if(h.enabled!==!1){if(e.preventDefault(),0===e.button){if(h.noRotate===!0)return;M=V.ROTATE,m.set(e.clientX,e.clientY)}else if(1===e.button){if(h.noZoom===!0)return;M=V.DOLLY,P.set(e.clientX,e.clientY)}else if(2===e.button){if(h.noPan===!0)return;M=V.PAN,g.set(e.clientX,e.clientY)}h.domElement.addEventListener("mousemove",r,!1),h.domElement.addEventListener("mouseup",a,!1),h.dispatchEvent(I)}}function r(e){if(h.enabled!==!1){e.preventDefault();var t=h.domElement===document?h.domElement.body:h.domElement;if(M===V.ROTATE){if(h.noRotate===!0)return;f.set(e.clientX,e.clientY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f)}else if(M===V.DOLLY){if(h.noZoom===!0)return;R.set(e.clientX,e.clientY),C.subVectors(R,P),C.y>0?h.dollyIn():h.dollyOut(),P.copy(R)}else if(M===V.PAN){if(h.noPan===!0)return;E.set(e.clientX,e.clientY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E)}}}function a(){h.enabled!==!1&&(h.domElement.removeEventListener("mousemove",r,!1),h.domElement.removeEventListener("mouseup",a,!1),h.dispatchEvent(L),M=V.NONE)}function s(e){if(h.enabled!==!1&&h.noZoom!==!0){e.preventDefault();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?h.dollyOut():h.dollyIn(),h.dispatchEvent(I),h.dispatchEvent(L)}}function l(e){if(h.enabled!==!1&&h.noKeys!==!0&&h.noPan!==!0)switch(e.keyCode){case h.keys.UP:h.pan(0,h.keyPanSpeed);break;case h.keys.BOTTOM:h.pan(0,-h.keyPanSpeed);break;case h.keys.LEFT:h.pan(h.keyPanSpeed,0);break;case h.keys.RIGHT:h.pan(-h.keyPanSpeed,0)}}function d(e){if(h.enabled!==!1){switch(e.touches.length){case 1:if(h.noRotate===!0)return;M=V.TOUCH_ROTATE,m.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(h.noZoom===!0)return;M=V.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+i*i);P.set(0,o);break;case 3:if(h.noPan===!0)return;M=V.TOUCH_PAN,g.set(e.touches[0].pageX,e.touches[0].pageY);break;default:M=V.NONE}h.dispatchEvent(I)}}function c(e){if(h.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=h.domElement===document?h.domElement.body:h.domElement;switch(e.touches.length){case 1:if(h.noRotate===!0)return;if(M!==V.TOUCH_ROTATE)return;f.set(e.touches[0].pageX,e.touches[0].pageY),v.subVectors(f,m),h.rotateLeft(2*Math.PI*v.x/t.clientWidth*h.rotateSpeed),h.rotateUp(2*Math.PI*v.y/t.clientHeight*h.rotateSpeed),m.copy(f);break;case 2:if(h.noZoom===!0)return;if(M!==V.TOUCH_DOLLY)return;var i=e.touches[0].pageX-e.touches[1].pageX,o=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(i*i+o*o);R.set(0,n),C.subVectors(R,P);var r=t.clientWidth,a=t.clientHeight,s=Math.sqrt(r*r+a*a),l=C.y/s;C.y>0?h.dollyOut(1-l):h.dollyIn(1+l),P.copy(R);break;case 3:if(h.noPan===!0)return;if(M!==V.TOUCH_PAN)return;E.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(E,g),h.pan(y.x,y.y),g.copy(E);break;default:M=V.NONE}}}function u(){h.enabled!==!1&&(h.dispatchEvent(L),M=V.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.fadeFactor=10,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};var h=this,p=1e-6,m=new THREE.Vector2,f=new THREE.Vector2,v=new THREE.Vector2,g=new THREE.Vector2,E=new THREE.Vector2,y=new THREE.Vector2,b=new THREE.Vector3,T=new THREE.Vector3,P=new THREE.Vector2,R=new THREE.Vector2,C=new THREE.Vector2,x=0,w=0,H=1,S=new THREE.Vector3,B=new THREE.Vector3,V={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},M=V.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var A={type:"change"},I={type:"start"},L={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=i()),w-=e},this.rotateUp=function(e){void 0===e&&(e=i()),x-=e},this.panLeft=function(e){var t=this.object.matrix.elements;b.set(t[0],t[1],t[2]),b.multiplyScalar(-e),S.add(b)},this.panUp=function(e){var t=this.object.matrix.elements;b.set(t[4],t[5],t[6]),b.multiplyScalar(e),S.add(b)},this.pan=function(e,t){var i=h.domElement===document?h.domElement.body:h.domElement;if(void 0!==h.object.fov){var o=h.object.position,n=o.clone().sub(h.target),r=n.length();r*=Math.tan(h.object.fov/2*Math.PI/180),h.panLeft(2*e*r/i.clientHeight),h.panUp(2*t*r/i.clientHeight)}else void 0!==h.object.top?(h.panLeft(e*(h.object.right-h.object.left)/i.clientWidth),h.panUp(t*(h.object.top-h.object.bottom)/i.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=o()),H/=e},this.dollyOut=function(e){void 0===e&&(e=o()),H*=e},this.update=function(e){var t=this.object.position.clone();T.copy(t).sub(this.target);var o=Math.atan2(T.x,T.z),n=Math.atan2(Math.sqrt(T.x*T.x+T.z*T.z),T.y);this.autoRotate&&this.rotateLeft(i());var r=Math.min(1,this.fadeFactor*e);o+=r*w,n+=r*x,n=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,n)),n=Math.max(p,Math.min(Math.PI-p,n));var a=T.length();a+=(H-1)*a*r,a=Math.max(this.minDistance,Math.min(this.maxDistance,a)),this.target.add(S.clone().multiplyScalar(r)),T.x=a*Math.sin(n)*Math.sin(o),T.y=a*Math.cos(n),T.z=a*Math.sin(n)*Math.cos(o),t.copy(this.target).add(T);var s={type:"proposeTransform",oldPosition:this.object.position,newPosition:t,objections:0,counterProposals:[]};if(this.dispatchEvent(s),s.objections>0&&s.counterProposals.length>0){var l=s.counterProposals;t.copy(l[0]),s.objections=0,s.counterProposals=[]}if(s.objections>0)w=0,x=0,H=1,S.set(0,0,0);else{this.object.position.copy(t),this.object.lookAt(this.target);var d=Math.max(0,1-this.fadeFactor*e);w*=d,x*=d,H=1+(H-1)*d,S.multiplyScalar(d)}B.distanceTo(this.object.position)>0&&(this.dispatchEvent(A),B.copy(this.object.position))},this.reset=function(){M=V.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",n,!1),this.domElement.addEventListener("mousewheel",s,!1),this.domElement.addEventListener("DOMMouseScroll",s,!1),this.domElement.addEventListener("touchstart",d,!1),this.domElement.addEventListener("touchend",u,!1),this.domElement.addEventListener("touchmove",c,!1),window.addEventListener("keydown",l,!1)},Potree.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.EarthControls=function(e,t,i){function o(e){if(s.enabled!==!1){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},o=getMousePointCloudIntersection(i,s.camera,s.renderer,s.pointclouds);if(o){var a=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),o),h=new THREE.Vector3(i.x,i.y,.5);h.unproject(s.camera);var p=h.sub(s.camera.position).normalize(),m=new THREE.Ray(s.camera.position,p);v=m.intersectPlane(a),f=s.camera.clone(),f.rotation.copy(s.camera.rotation),c.set(e.clientX-t.left,e.clientY-t.top),u.set(e.clientX-t.left,e.clientY-t.top),s.scene.add(s.pivotNode),s.pivotNode.position.copy(v),0===e.button?d=l.DRAG:2===e.button&&(d=l.ROTATE),s.domElement.addEventListener("mousemove",n,!1),s.domElement.addEventListener("mouseup",r,!1)}}}function n(e){if(s.enabled!==!1){e.preventDefault();{var t=s.domElement.getBoundingClientRect();s.domElement===document?s.domElement.body:s.domElement}m.set(e.clientX-t.left-u.x,e.clientY-t.top-u.y),u.set(e.clientX-t.left,e.clientY-t.top)}}function r(){s.enabled!==!1&&(s.domElement.removeEventListener("mousemove",n,!1),s.domElement.removeEventListener("mouseup",r,!1),d=l.NONE,s.scene.remove(s.pivotNode))}function a(e){if(s.enabled!==!1&&s.noZoom!==!0){e.preventDefault();var t=s.domElement.getBoundingClientRect(),i=e.detail<0||e.wheelDelta>0?1:-1,o={x:(e.clientX-t.left)/s.domElement.clientWidth*2-1,y:2*-((e.clientY-t.top)/s.domElement.clientHeight)+1},n=getMousePointCloudIntersection(o,s.camera,s.renderer,s.pointclouds);if(n){var r=n.distanceTo(s.camera.position),a=(new THREE.Vector3).subVectors(n,s.camera.position).normalize();s.camera.position.add(a.multiplyScalar(.1*r*i))}}}this.camera=e,this.renderer=t,this.pointclouds=[],this.domElement=t.domElement,this.scene=i,this.enabled=!0;var s=this,l={NONE:-1,DRAG:0,ROTATE:1},d=l.NONE,c=new THREE.Vector2,u=new THREE.Vector2,h=new THREE.SphereGeometry(1,32,32),p=new THREE.MeshNormalMaterial({shading:THREE.SmoothShading,transparent:!0,opacity:.5});this.pivotNode=new THREE.Mesh(h,p);var m=new THREE.Vector2,f=null,v=null;this.minAngle=10/180*Math.PI,this.maxAngle=70/180*Math.PI,this.update=function(e){this.camera.position;this.camera.updateMatrixWorld();var t=new THREE.Object3D;if(t.position.copy(this.camera.position),t.rotation.copy(this.camera.rotation),t.updateMatrix(),t.updateMatrixWorld(),v){if(d===l.DRAG){var i=(new THREE.Plane).setFromNormalAndCoplanarPoint(new THREE.Vector3(0,1,0),v),o={x:u.x/this.domElement.clientWidth*2-1,y:2*-(u.y/this.domElement.clientHeight)+1},n=new THREE.Vector3(o.x,o.y,.5);n.unproject(f);var r=n.sub(f.position).normalize(),a=new THREE.Ray(f.position,r),s=a.distanceToPlane(i);if(s>0){var c=(new THREE.Vector3).subVectors(v,r.clone().multiplyScalar(s));t.position.copy(c)}}else if(d===l.ROTATE){var h=m.clone().multiplyScalar(e);h.x*=.3,h.y*=.2;var p=new THREE.Object3D,g=new THREE.Object3D;p.add(g),p.position.copy(v),g.position.copy(this.camera.position).sub(v),g.rotation.copy(this.camera.rotation),p.rotation.y+=-h.x;var r=this.camera.getWorldDirection(),E=new THREE.Vector3(0,1,0),y=(new THREE.Vector3).crossVectors(E,r),b=g.position.clone();b.y=0,b.normalize();var T=b.dot(g.position.clone().normalize()),P=Math.acos(T);g.position.y<0&&(P=-P);var R=0;R=h.y>0?h.y-Math.max(0,this.minAngle-(P-h.y)):h.y+Math.max(0,P-h.y-this.maxAngle),p.rotateOnAxis(y,-R),p.updateMatrixWorld(),t.position.copy(g.getWorldPosition()),t.quaternion.copy(g.getWorldQuaternion())}var C={type:"proposeTransform",oldPosition:this.camera.position,newPosition:t.position,objections:0};this.dispatchEvent(C),C.objections>0||(this.camera.position.copy(t.position),this.camera.rotation.copy(t.rotation));var x=this.pivotNode.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),w=Math.abs(x.z/30),H=this.pivotNode.scale.length();this.pivotNode.scale.multiplyScalar(w/H)}m.set(0,0)},this.reset=function(){d=l.NONE,this.camera.position.copy(this.position0)},this.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",a,!1),this.domElement.addEventListener("DOMMouseScroll",a,!1)},THREE.EarthControls.prototype=Object.create(THREE.EventDispatcher.prototype),LRU.prototype.size=function(){return this.elements},LRU.prototype.contains=function(e){return null==this.items[e.id]},LRU.prototype.touch=function(e){if(e.loaded){var t;null==this.items[e.id]?(t=new LRUItem(e),t.previous=this.last,this.last=t,null!==t.previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):(t=this.items[e.id],null===t.previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t):null===t.next||(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,this.last=t,t.previous.next=t))}},LRU.prototype.remove=function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)},LRU.prototype.getLRUItem=function(){if(null===this.first)return null;var e=this.first;return e.node},LRU.prototype.toString=function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e+="}",e+="("+this.size()+")"},LRU.prototype.freeMemory=function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first,t=e.node;this.disposeDescendants(t)}},LRU.prototype.disposeDescendants=function(e){var t=[];for(t.push(e);t.length>0;){var i=t.pop();i.dispose(),this.remove(i);for(var o in i.children)if(i.children.hasOwnProperty(o)){var n=i.children[o];n.loaded&&t.push(i.children[o])}}},Potree.PointCloudOctreeNode=function(){this.children={},this.sceneNode=null},Potree.PointCloudOctree=function(e,t){THREE.Object3D.call(this),Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.tightBoundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(),this.material=t||new Potree.PointCloudMaterial,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.level=0,this.position.sub(e.offset),this.updateMatrix(),this.showBoundingBox=!1,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleBounds=new THREE.Box3,this.visibleNodes=[],this.visibleGeometry=[],this.pickTarget,this.generateDEM=!1,this.root=this.pcoGeometry.root},Potree.PointCloudOctree.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudOctree.prototype.updateVisibility=function(e,t){this.numVisibleNodes=0,this.numVisiblePoints=0,e.updateMatrixWorld();var i=new THREE.Frustum,o=e.matrixWorldInverse,n=this.matrixWorld,r=e.projectionMatrix,a=(new THREE.Matrix4).multiply(r).multiply(o).multiply(n);i.setFromMatrix(a);var s=e.matrixWorld,l=(new THREE.Matrix4).getInverse(n),d=(new THREE.Matrix4).multiply(l).multiply(s),c=(new THREE.Vector3).setFromMatrixPosition(d),u=new BinaryHeap(function(e){return 1/e.weight});u.push({node:this.root,weight:1});var h=[],p=[];this.root instanceof Potree.PointCloudOctreeNode&&this.hideDescendants(this.root.sceneNode);for(var m=0;m0;){var f=u.pop(),v=f.node,g=f.parent,E=v.boundingBox,y=i.intersectsBox(E),b=y;if(b=b&&!(this.numVisiblePoints+v.numPoints>this.visiblePointsTarget)){if(v instanceof Potree.PointCloudOctreeNode){if(Potree.PointCloudOctree.lru.touch(v.geometryNode),v.sceneNode.visible=!0,v.sceneNode.material=this.material,h.push(v),v.parent?v.sceneNode.matrixWorld.multiplyMatrices(v.parent.sceneNode.matrixWorld,v.sceneNode.matrix):v.sceneNode.matrixWorld.multiplyMatrices(this.matrixWorld,v.sceneNode.matrix),this.showBoundingBox&&!v.boundingBoxNode){var T=new THREE.BoxHelper(v.sceneNode);this.add(T),this.boundingBoxNodes.push(T),v.boundingBoxNode=T,v.boundingBoxNode.matrixWorld.copy(v.sceneNode.matrixWorld)}else this.showBoundingBox?(v.boundingBoxNode.visible=!0,v.boundingBoxNode.matrixWorld.copy(v.sceneNode.matrixWorld)):!this.showBoundingBox&&v.boundingBoxNode&&(v.boundingBoxNode.visible=!1);this.generateDEM&&v.level<=2&&(v.dem||(v.dem=this.createDEM(v))),this.numVisibleNodes++,this.numVisiblePoints+=v.numPoints}else if(v instanceof Potree.PointCloudOctreeGeometryNode){var P=v,R=P.geometry;if(P.loaded){var C=new Potree.PointCloudOctreeNode,x=new THREE.PointCloud(R,this.material);if(x.visible=!1,C.name=P.name,C.level=P.level,C.numPoints=P.numPoints,C.boundingBox=R.boundingBox,C.boundingSphere=C.boundingBox.getBoundingSphere(),C.geometryNode=P,C.parent=g,C.children=P.children,x.boundingBox=C.boundingBox,x.boundingSphere=C.boundingSphere,x.numPoints=C.numPoints,x.level=C.level,C.sceneNode=x,g){var w=parseInt(C.name[C.name.length-1]);g.sceneNode.add(x),g.children[w]=C}else this.add(x),this.root=C;v=C,v.parent?v.sceneNode.matrixWorld.multiplyMatrices(v.parent.sceneNode.matrixWorld,v.sceneNode.matrix):v.sceneNode.matrixWorld.multiplyMatrices(this.matrixWorld,v.sceneNode.matrix)}else p.push(v)}for(var m=0;8>m;m++)if(v.children[m]){var H=v.children[m],S=H.boundingSphere,B=S.center.distanceTo(c),V=S.radius,M=e.fov/2*Math.PI/180,A=1/Math.tan(M)*V/Math.sqrt(B*B-V*V),I=t.domElement.clientHeight*A;if(!(IB-V&&(L=Number.MAX_VALUE),u.push({node:H,parent:v,weight:L})}}}}this.visibleNodes=h;for(var m=0;mi?-1:i>o?1:0};t.sort(n);for(var r=0;rl;l++){var d=a.children[l];d instanceof Potree.PointCloudOctreeNode&&d.sceneNode.visible&&s.push(d)}s.sort(function(e,t){return e.namet.name?1:0}),o[3*r+0]=0,o[3*r+1]=0,o[3*r+2]=0;for(var l=0;lr;r++)if(void 0!==t.children[r]){var a=t.children[r],s=new Potree.PointCloudOctreeProxyNode(a);o.add(s)}return o}},Potree.PointCloudOctree.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1;for(var i=0;i0&&(c=-c),function(e){var t=(new THREE.Matrix4).makeTranslation(-n.x,-s.min.y,-n.z),i=(new THREE.Matrix4).makeRotationY(-c),o=(new THREE.Matrix4).makeTranslation(a.x,0,0),r=e.clone();return r.applyMatrix4(t),r.applyMatrix4(i),r.applyMatrix4(o),r}}(n,r,l.clone(),i.boundingBox.clone());s.project=d,l.x+=new THREE.Vector3(n.x,0,n.z).distanceTo(new THREE.Vector3(r.x,0,r.z)),l.y+=r.y-n.y}return i.projectedBoundingBox.min.x=0,i.projectedBoundingBox.min.y=i.boundingBox.min.y,i.projectedBoundingBox.max.x=l.x,i.projectedBoundingBox.max.y=i.boundingBox.max.y,i},Potree.PointCloudOctree.prototype.getProfile=function(e,t,i,o,n){if(void 0===n){var r=[];r.push(this);for(var a=(new THREE.Vector3).addVectors(t,e).multiplyScalar(.5),s=(new THREE.Vector3).subVectors(t,e).length(),l=(new THREE.Vector3).subVectors(t,e).normalize(),d=new THREE.Vector3(0,1,0),c=(new THREE.Vector3).crossVectors(l,d).normalize(),u=c,h=(new THREE.Plane).setFromNormalAndCoplanarPoint(u,e),p=(new THREE.Plane).setFromNormalAndCoplanarPoint(l,a),m=null,f=new THREE.Box3;r.length>0;){var v=r.shift(),g=0;if(v instanceof THREE.PointCloud){var E=v.geometry,y=E.attributes.position,b=y.array,T=v.numPoints;if(!m){m={};for(var P in E.attributes)E.attributes.hasOwnProperty(P)&&("indices"===P||(m[P]=[]))}for(var R=0;T>R;R++){var C=new THREE.Vector3(b[3*R],b[3*R+1],b[3*R+2]);C.applyMatrix4(this.matrixWorld);var x=Math.abs(h.distanceToPoint(C)),w=Math.abs(p.distanceToPoint(C));if(i/2>x&&s/2>w){f.expandByPoint(C);for(var P in E.attributes)if(E.attributes.hasOwnProperty(P))if("position"===P)m[P].push(C);else if("indices"===P);else{var H=E.attributes[P];if(1===H.itemSize)m[P].push(H.array[R+B]);else{for(var S=[],B=0;B0&&(a=-a),function(e){var t=(new THREE.Matrix4).makeTranslation(-i.x,-i.y,-i.z),o=(new THREE.Matrix4).makeRotationY(-a),n=e.clone();return n.applyMatrix4(t),n.applyMatrix4(o),n}}(e,t);return m.project=A,m.boundingBox=f,m}this.profileRequests.push(new Potree.ProfileRequest(e,t,i,o,n))},Potree.PointCloudOctree.prototype.getVisibleExtent=function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)},Potree.PointCloudOctree.prototype.pick=function(e,t,i,o){var o=o||{},n=o.pickWindowSize||17,r=this.nodesOnRay(this.visibleNodes,i);if(0===r.length)return null;var a=Math.ceil(e.domElement.clientWidth),s=Math.ceil(e.domElement.clientHeight),l=(new THREE.Vector3).addVectors(t.position,i.direction).project(t);l.addScalar(1).multiplyScalar(.5),l.x*=a,l.y*=s,this.pickTarget?(this.pickTarget.width!=a||this.pickTarget.height!=s)&&(this.pickTarget.dispose(),this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat})):this.pickTarget=new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),this.pickTarget.setSize(a,s),this.pickMaterial||(this.pickMaterial=new Potree.PointCloudMaterial,this.pickMaterial.pointColorType=Potree.PointColorType.POINT_INDEX),this.pickMaterial.pointSizeType=this.material.pointSizeType,this.pickMaterial.size=this.material.size,this.pickMaterial.pointShape=this.material.pointShape,this.pickMaterial.interpolate=this.material.interpolate,this.updateMaterial(this.pickMaterial,r,t,e);var d=e.context;d.enable(d.SCISSOR_TEST),d.scissor(l.x-(n-1)/2,l.y-(n-1)/2,n,n),d.disable(d.SCISSOR_TEST);var c=this.pickMaterial;e.setRenderTarget(this.pickTarget),e.setDepthTest(c.depthTest),e.setDepthWrite(c.depthWrite),e.setBlending(THREE.NoBlending),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),r.length>0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var B={},V=r[P.pcIndex].sceneNode,M=V.geometry.attributes;for(var A in M)if(M.hasOwnProperty(A)){var I=p.attributes[A];if("position"===A){var L=V.geometry.attributes.position.array,W=L[3*P.pIndex+0],N=L[3*P.pIndex+1],G=L[3*P.pIndex+2],X=new THREE.Vector3(W,N,G);X.applyMatrix4(this.matrixWorld),B[A]=X}else if("indices"===A);else if(1===I.itemSize)B[A]=I.array[u+O];else{for(var D=[],O=0;Ou;u++){var h=a[3*u+0],p=a[3*u+1],m=a[3*u+2],f=new THREE.Vector3(h,p,m).applyMatrix4(o),v=parseInt(s*(f.x-n.min.x)/r.x),g=parseInt(s*(f.z-n.min.z)/r.z);v=Math.min(v,s-1),g=Math.min(g,s-1);var E=v+g*s;l[E]||(l[E]=[]),l[E].push(f.y)}for(var u=0;u.5&&r.x.5&&r.y0;){{var r=n.shift(),a=r.dem,s=(a.demSize,a.boundingBox2D);s.containsPoint(t)}if(s.containsPoint(t)){var l=i(a);if(o?null!=l&&l>0&&(o=l):o=l,r.level<=2)for(var d=0;da;a++)for(var s=0;i>s;s++){var l=a/t,d=s/i,c=l*e.size().x+e.min.x,u=d*e.size().z+e.min.z,h=this.getDEMHeight(new THREE.Vector3(c,0,u));h||(h=0),n[r+0]=c,n[r+1]=h,n[r+2]=u,r+=3}o.addAttribute("position",new THREE.BufferAttribute(n,3));var p=new THREE.PointCloudMaterial({size:20,color:65280}),m=new THREE.PointCloud(o,p);scene.add(m)},Object.defineProperty(Potree.PointCloudOctree.prototype,"progress",{get:function(){return this.visibleNodes.length/this.visibleGeometry.length}});var nodesLoadTimes={};Potree.PointCloudOctreeGeometry=function(){Potree.PointCloudOctree.lru=Potree.PointCloudOctree.lru||new LRU,this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.numNodesLoading=0,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null +},Potree.PointCloudOctreeGeometryNode=function(e,t,i){this.id=Potree.PointCloudOctreeGeometryNode.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.pcoGeometry=t,this.geometry=null,this.boundingBox=i,this.boundingSphere=i.getBoundingSphere(),this.children={},this.numPoints=0,this.level=null},Potree.PointCloudOctreeGeometryNode.IDCount=0,Potree.PointCloudOctreeGeometryNode.prototype.getURL=function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:t.equalOrHigher("1.4")?e=this.pcoGeometry.octreeDir+"/"+this.name:t.upTo("1.3")&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e},Potree.PointCloudOctreeGeometryNode.prototype.getHierarchyPath=function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,i=this.name.substr(1),o=Math.floor(i.length/t),n=0;o>n;n++)e+=i.substr(n*t,t)+"/";return e=e.slice(0,-1)},Potree.PointCloudOctreeGeometryNode.prototype.addChild=function(e){this.children[e.index]=e,e.parent=this},Potree.PointCloudOctreeGeometryNode.prototype.load=function(){this.loading===!0||this.pcoGeometry.numNodesLoading>3||(this.loading=!0,this.pcoGeometry.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize===0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())},Potree.PointCloudOctreeGeometryNode.prototype.loadPoints=function(){this.pcoGeometry.loader.load(this)},Potree.PointCloudOctreeGeometryNode.prototype.loadHierachyThenPoints=function(){var e=this,t=function(e,t){var i=(t.byteLength/5,new DataView(t)),o=[],n=i.getUint8(0),r=i.getUint32(1,!0);e.numPoints=r,o.push({children:n,numPoints:r,name:e.name});for(var a=[],s=5;o.length>0;){for(var l=o.shift(),d=1,c=0;8>c;c++){if(0!==(l.children&d)){var u=l.name+c,h=i.getUint8(s),p=i.getUint32(s+1,!0);o.push({children:h,numPoints:p,name:u}),a.push({children:h,numPoints:p,name:u}),s+=5}d=2*d}if(s===t.byteLength)break}var m={};m[e.name]=e;for(var f=e.pcoGeometry,c=0;c0,y.addChild(P),m[v]=P}e.loadPoints()};if(e.level%e.pcoGeometry.hierarchyStepSize===0){var i=e.pcoGeometry.octreeDir+"/"+e.getHierarchyPath()+"/"+e.name+".hrc",o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType="arraybuffer",o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||0===o.status){var i=o.response;t(e,i)}else console.log("Failed to load file! HTTP status: "+o.status+", file: "+url)};try{o.send(null)}catch(n){console.log("fehler beim laden der punktwolke: "+n)}}},Potree.PointCloudOctreeGeometryNode.prototype.dispose=function(){this.geometry&&(this.geometry.dispose(),this.geometry=null,this.loaded=!1)},Potree.utils=function(){},Potree.utils.pathExists=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),200!==t.status?!1:!0},Potree.utils.computeTransformedBoundingBox=function(e,t){var i=[new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new THREE.Vector3(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],o=new THREE.Box3;return o.setFromPoints(i),o},Potree.utils.addCommas=function(e){e+="",x=e.split("."),x1=x[0],x2=x.length>1?"."+x[1]:"";for(var t=/(\d+)(\d{3})/;t.test(x1);)x1=x1.replace(t,"$1,$2");return x1+x2},Potree.utils.createWorker=function(e){var t=new Blob([e],{type:"application/javascript"}),i=new Worker(URL.createObjectURL(t));return i},Potree.utils.loadSkybox=function(e){var t=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1e5),i=new THREE.Scene,o=".jpg",n=[e+"px"+o,e+"nx"+o,e+"py"+o,e+"ny"+o,e+"pz"+o,e+"nz"+o],r=THREE.ImageUtils.loadTextureCube(n,THREE.CubeRefractionMapping),a={uniforms:{tCube:{type:"t",value:r},tFlip:{type:"f",value:-1}},vertexShader:THREE.ShaderLib.cube.vertexShader,fragmentShader:THREE.ShaderLib.cube.fragmentShader},s=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:a.uniforms,depthWrite:!1,side:THREE.BackSide}),l=new THREE.Mesh(new THREE.BoxGeometry(100,100,100),s);return i.add(l),{camera:t,scene:i}},Potree.utils.createGrid=function(e,t,i,o){for(var n=new THREE.LineBasicMaterial({color:o||8947848}),r=new THREE.Geometry,a=0;t>=a;a++)r.vertices.push(new THREE.Vector3(-(i*e)/2,0,a*i-i*t/2)),r.vertices.push(new THREE.Vector3(+(i*e)/2,0,a*i-i*t/2));for(var a=0;e>=a;a++)r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,-(i*t)/2)),r.vertices.push(new THREE.Vector3(a*i-i*e/2,0,+(i*t)/2));var s=new THREE.Line(r,n,THREE.LinePieces);return s.receiveShadow=!0,s},Potree.utils.createBackgroundTexture=function(e,t){function i(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}var o=THREE.ImageUtils.generateDataTexture(e,t,new THREE.Color);o.magFilter=THREE.NearestFilter;for(var n=o.image.data,r=[1,1.5,1.7],a=i(0,0),s=0;e>s;s++)for(var l=0;t>l;l++){var d=2*(s/e)-1,c=2*(l/t)-1,u=s+e*l,h=i(2*d,2*c)/a,p=(Math.random()+Math.random()+Math.random())/3;p=(.5*h+.5)*p*.03,p=.4*p,n[3*u+0]=255*(h/15+.05+p)*r[0],n[3*u+1]=255*(h/15+.05+p)*r[1],n[3*u+2]=255*(h/15+.05+p)*r[2]}return o},Potree.utils.topView=function(e,t,i){if(e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,o.center.y,e.position.z);t.target.copy(n)}},Potree.utils.frontView=function(e,t,i){if(e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(e.position.x,e.position.y,o.center.z);t.target.copy(n)}},Potree.utils.leftView=function(e,t,i){if(e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.rightView=function(e,t,i){if(e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(i,1),t.target){var o=i.boundingSphere.clone().applyMatrix4(i.matrixWorld),n=new THREE.Vector3(o.center.x,e.position.y,e.position.z);t.target.copy(n)}},Potree.utils.frustumSphereIntersection=function(e,t){for(var i=e.planes,o=t.center,n=-t.radius,r=Number.MAX_VALUE,a=0;6>a;a++){var s=i[a].distanceToPoint(o);if(n>s)return 0;r=Math.min(r,s)}return r>=t.radius?2:1},Potree.utils.screenPass=new function(){this.screenScene=new THREE.Scene,this.screenQuad=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2,0)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new THREE.Camera,this.render=function(e,t,i){this.screenQuad.material=t,void 0===typeof i?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,i)}},Potree.Features=function(){var e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");if(null===t)return null;var i,o=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT),n=t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT),r=(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.LOW_FLOAT),t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT)),a=t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT),s=(t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.LOW_FLOAT),o.precision>0&&r.precision>0),l=n.precision>0&&a.precision>0;return i=s?"highp":l?"mediump":"lowp",{SHADER_INTERPOLATION:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},SHADER_SPLATS:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getExtension("OES_texture_float"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},SHADER_EDL:{isSupported:function(){var e=!0;return e=e&&t.getExtension("EXT_frag_depth"),e=e&&t.getExtension("OES_texture_float"),e=e&&t.getParameter(t.MAX_VARYING_VECTORS)>=8}},precision:i}}(),Potree.TextSprite=function(e){THREE.Object3D.call(this);var t=new THREE.Texture;t.minFilter=THREE.LinearFilter,t.magFilter=THREE.LinearFilter;var i=new THREE.SpriteMaterial({map:t,useScreenCoordinates:!1});this.material=i,this.sprite=new THREE.Sprite(i),this.add(this.sprite),this.borderThickness=4,this.fontface="Arial",this.fontsize=28,this.borderColor={r:0,g:0,b:0,a:1},this.backgroundColor={r:255,g:255,b:255,a:1},this.textColor={r:255,g:255,b:255,a:1},this.text="",this.setText(e)},Potree.TextSprite.prototype=new THREE.Object3D,Potree.TextSprite.prototype.setText=function(e){this.text=e,this.update()},Potree.TextSprite.prototype.setTextColor=function(e){this.textColor=e,this.update()},Potree.TextSprite.prototype.setBorderColor=function(e){this.borderColor=e,this.update()},Potree.TextSprite.prototype.setBackgroundColor=function(e){this.backgroundColor=e,this.update()},Potree.TextSprite.prototype.update=function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var i=t.measureText(this.text),o=i.width,n=o+2*this.borderThickness,r=1.4*this.fontsize+2*this.borderThickness,e=document.createElement("canvas"),t=e.getContext("2d");t.canvas.width=n,t.canvas.height=r,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,o+this.borderThickness,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness,this.fontsize+this.borderThickness);var a=new THREE.Texture(e);a.minFilter=THREE.LinearFilter,a.magFilter=THREE.LinearFilter,a.needsUpdate=!0,this.sprite.material.map=a,this.sprite.scale.set(.01*n,.01*r,1)},Potree.TextSprite.prototype.roundRect=function(e,t,i,o,n,r){e.beginPath(),e.moveTo(t+r,i),e.lineTo(t+o-r,i),e.quadraticCurveTo(t+o,i,t+o,i+r),e.lineTo(t+o,i+n-r),e.quadraticCurveTo(t+o,i+n,t+o-r,i+n),e.lineTo(t+r,i+n),e.quadraticCurveTo(t,i+n,t,i+n-r),e.lineTo(t,i+r),e.quadraticCurveTo(t,i,t+r,i),e.closePath(),e.fill(),e.stroke()},Potree.Version=function(e){this.version=e;var t=-1===e.indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)},Potree.Version.prototype.newerThan=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>t.versionMinor?!0:!1},Potree.Version.prototype.equalOrHigher=function(e){var t=new Potree.Version(e);return this.versionMajor>t.versionMajor?!0:this.versionMajor===t.versionMajor&&this.versionMinor>=t.versionMinor?!0:!1},Potree.Version.prototype.upTo=function(e){return!this.newerThan(e)},Potree.Measure=function(){var e=this;THREE.Object3D.call(this),this.points=[],this._showDistances=!0,this._showArea=!0,this._closed=!0,this.maxMarkers=Number.MAX_SAFE_INTEGER,this.spheres=[],this.edges=[],this.sphereLabels=[],this.edgeLabels=[],this.angleLabels=[],this.areaLabel=new Potree.TextSprite(""),this.areaLabel.setBorderColor({r:0,g:255,b:0,a:0}),this.areaLabel.setBackgroundColor({r:0,g:255,b:0,a:0}),this.areaLabel.setTextColor({r:180,g:220,b:180,a:1}),this.areaLabel.material.depthTest=!1,this.areaLabel.material.opacity=1,this.add(this.areaLabel);var t=new THREE.SphereGeometry(.4,10,10);this.color=new THREE.Color(16711680);var i=function(){var t=new THREE.MeshLambertMaterial({shading:THREE.SmoothShading,color:e.color,ambient:11184810,depthTest:!1,depthWrite:!1});return t},o=function(e){e.target.material.emissive.setHex(8947848)},n=function(e){e.target.material.emissive.setHex(0)},r=function(t){var i=t.tool,o=(i.dragstart,i.mouse,i.getMousePointCloudIntersection());if(o){var n=e.spheres.indexOf(i.dragstart.object);e.setPosition(n,o)}},a=function(){};this.addMarker=function(e){this.points.push(e);var s=new THREE.Mesh(t,i());s.addEventListener("move",o),s.addEventListener("leave",n),s.addEventListener("drag",r),s.addEventListener("drop",a),this.add(s),this.spheres.push(s);var l=new THREE.Geometry;l.vertices.push(new THREE.Vector3,new THREE.Vector3),l.colors.push(this.color,this.color,this.color);var d=new THREE.LineBasicMaterial({linewidth:1});d.depthTest=!1;var c=new THREE.Line(l,d);c.visible=!0,this.add(c),this.edges.push(c);var u=new Potree.TextSprite(0);u.setBorderColor({r:0,g:255,b:0,a:0}),u.setBackgroundColor({r:0,g:255,b:0,a:0}),u.material.depthTest=!1,u.visible=!1,this.edgeLabels.push(u),this.add(u);var h=new Potree.TextSprite;h.setBorderColor({r:0,g:255,b:0,a:0}),h.setBackgroundColor({r:0,g:255,b:0,a:0}),h.material.depthTest=!1,h.material.opacity=1,h.visible=!1,this.angleLabels.push(h),this.add(h);var p={type:"marker_added",measurement:this};this.dispatchEvent(p),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.spheres.splice(e,1),this.update()},this.setPosition=function(e,t){var i=this.points[e];i.copy(t);var o={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(o),this.update()},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=n;n++){var t=this.points[n];o.add(t)}o.divideScalar(this.points.length);for(var n=0;i>=n;n++){var r=n,a=n+1>i?0:n+1,s=0===n?i:n-1,t=this.points[r],l=this.points[a],d=this.points[s],c=this.spheres[r];c.position.copy(t),c.material.color=e.color;var u=this.edges[r];u.material.color=this.color,u.geometry.vertices[0].copy(t),u.geometry.vertices[1].copy(l),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.visible=i>r||this.closed;var h=this.edgeLabels[n],p=(new THREE.Vector3).add(t);p.add(l),p=p.multiplyScalar(.5);var m=t.distanceTo(l);h.position.copy(p),h.setText(m.toFixed(2)),h.visible=this.showDistances&&(i>r||this.closed)&&this.points.length>=2&&m>0;var f=this.angleLabels[n],v=this.getAngleBetweenLines(t,d,l),g=l.clone().sub(d);g.multiplyScalar(.5),g=d.clone().add(g).sub(t).normalize();var E=Math.min(t.distanceTo(d),t.distanceTo(l));E/=9;var y=t.clone().add(g.multiplyScalar(E));f.position.copy(y);var b=Potree.utils.addCommas((v*(180/Math.PI)).toFixed(1))+"°";f.setText(b),f.visible=this.showAngles&&(i>r||this.closed)&&this.points.length>=3&&v>0}this.areaLabel.position.copy(o),this.areaLabel.visible=this.showArea&&this.points.length>=3;var b=Potree.utils.addCommas(this.getArea().toFixed(1))+"²";this.areaLabel.setText(b)}},this.raycast=function(e,t){for(var i=0;ic.activeMeasurement.maxMarkers&&c.finishInsertion()}}}function n(e){var t=c.domElement.getBoundingClientRect();if(c.mouse.x=(e.clientX-t.left)/c.domElement.clientWidth*2-1,c.mouse.y=2*-((e.clientY-t.top)/c.domElement.clientHeight)+1,c.dragstart){var i={type:"drag",event:e,tool:c};c.dragstart.object.dispatchEvent(i)}else if(h==u.INSERT&&c.activeMeasurement){var o=c.getMousePointCloudIntersection();if(o){var n=c.activeMeasurement.points.length-1;c.activeMeasurement.setPosition(n,o)}}else{var o=d();o?(o.object.dispatchEvent({type:"move",target:o.object,event:e}),c.hoveredElement&&c.hoveredElement!==o.object&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=o.object):(c.hoveredElement&&c.hoveredElement.dispatchEvent({type:"leave",target:c.hoveredElement,event:e}),c.hoveredElement=null)}}function r(){h==u.INSERT&&c.finishInsertion()}function a(e){if(1===e.which){h!==u.DEFAULT&&e.stopImmediatePropagation();var t=d();t&&(c.dragstart={object:t.object,sceneClickPos:t.point,sceneStartPos:c.sceneRoot.position.clone(),mousePos:{x:c.mouse.x,y:c.mouse.y}},e.stopImmediatePropagation())}else 3===e.which&&r(e)}function s(){window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),c.activeMeasurement&&h===u.INSERT&&(c.activeMeasurement.removeMarker(c.activeMeasurement.points.length-1),c.finishInsertion())}function l(e){c.dragstart&&(c.dragstart.object.dispatchEvent({type:"drop",event:e}),c.dragstart=null)}function d(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=new THREE.Raycaster;t.ray.set(c.camera.position,e.sub(c.camera.position).normalize());for(var i=[],o=0;o0?a[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;this.activeMeasurement,this.measurements=[],this.sceneMeasurement=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneMeasurement.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneMeasurement.add(this.light),this.hoveredElement=null,this.getState=function(){return h},this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t="undefined"!=typeof e.showDistances?e.showDistances:!0,i="undefined"!=typeof e.showArea?e.showArea:!1,o="undefined"!=typeof e.showAngles?e.showAngles:!1,n="undefined"!=typeof e.closed?e.closed:!1,r=e.maxMarkers||Number.MAX_SAFE_INTEGER,a=new Potree.Measure;a.showDistances=t,a.showArea=i,a.showAngles=o,a.closed=n,a.maxMarkers=r,this.addMeasurement(a),a.addMarker(new THREE.Vector3(0,0,0)),this.activeMeasurement=a},this.finishInsertion=function(){this.activeMeasurement.removeMarker(this.activeMeasurement.points.length-1);var e={type:"insertion_finished",measurement:this.activeMeasurement};this.dispatchEvent(e),this.activeMeasurement=null,h=u.DEFAULT},this.addMeasurement=function(e){this.sceneMeasurement.add(e),this.measurements.push(e),this.dispatchEvent({type:"measurement_added",measurement:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeMeasurement=function(e){this.sceneMeasurement.remove(e);var t=this.measurements.indexOf(e);t>=0&&this.measurements.splice(t,1)},this.reset=function(){for(var e=this.measurements.length-1;e>=0;e--){var t=this.measurements[e];this.removeMeasurement(t)}},this.update=function(){for(var e=[],t=0;t1){var d=new THREE.Geometry;d.vertices.push(new THREE.Vector3,new THREE.Vector3),d.colors.push(i,i,i);var c=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors,linewidth:2,transparent:!0,opacity:.4});c.depthTest=!1;var u=new THREE.Line(d,c);u.visible=!1,this.add(u),this.edges.push(u);var h=new THREE.BoxGeometry(1,1,1),p=new THREE.MeshBasicMaterial({color:16711680,transparent:!0,opacity:.2}),m=new THREE.Mesh(h,p);m.visible=!1,this.add(m),this.boxes.push(m)}var f={type:"marker_added",profile:this};this.dispatchEvent(f),this.setPosition(this.points.length-1,e)},this.removeMarker=function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0==e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update();var i={type:"marker_removed",profile:this};this.dispatchEvent(i)},this.getArea=function(){for(var e=0,t=this.points.length-1,i=0;i=r;r++){{var e=this.points[r],a=this.spheres[r],s=0===r?n:r-1,l=r===n?0:r+1,d=this.points[s],c=this.points[l],u=this.edges[s],h=this.edges[r],p=this.boxes[s];this.boxes[r],e.distanceTo(d),e.distanceTo(c),(new THREE.Vector3).addVectors(d,e).multiplyScalar(.5),(new THREE.Vector3).addVectors(e,c).multiplyScalar(.5)}if(a.position.copy(e),a.visible=this._modifiable?!0:!1,u&&(u.geometry.vertices[1].copy(e),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(e),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),p){var m=d,f=e,v=m.clone().setY(0).distanceTo(f.clone().setY(0));p.scale.set(v,this.height,this.width);var g=(new THREE.Vector3).addVectors(m,f).multiplyScalar(.5),E=(new THREE.Vector3).subVectors(f,m),y=new THREE.Vector3(E.z,0,-E.x);p.position.set(0,0,0),p.lookAt(y),p.position.copy(g)}o.add(e),t.min(e),i.max(e)}o.multiplyScalar(1/this.points.length);for(var r=0;r0?i[0]:!1}var c=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0};{var u={DEFAULT:0,INSERT:1},h=u.DEFAULT;new THREE.SphereGeometry(.4,10,10)}this.activeProfile,this.profiles=[],this.sceneProfile=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneProfile.add(this.sceneRoot),this.light=new THREE.DirectionalLight(16777215,1),this.light.position.set(0,0,10),this.light.lookAt(new THREE.Vector3(0,0,0)),this.sceneProfile.add(this.light),this.hoveredElement=null,this.getMousePointCloudIntersection=function(){var e=new THREE.Vector3(c.mouse.x,c.mouse.y,.5);e.unproject(c.camera);var t=e.sub(c.camera.position).normalize(),i=new THREE.Ray(c.camera.position,t),o=[];c.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ad)&&(n=l,r=d)}}return n?n.position:null},this.startInsertion=function(e){h=u.INSERT;var e=e||{},t=e.clip||!1,i=e.width||1;return this.activeProfile=new Potree.HeightProfile,this.activeProfile.clip=t,this.activeProfile.setWidth(i),this.addProfile(this.activeProfile),this.activeProfile.addMarker(new THREE.Vector3(0,0,0)),this.activeProfile},this.finishInsertion=function(){this.activeProfile.removeMarker(this.activeProfile.points.length-1);var e={type:"insertion_finished",profile:this.activeProfile};this.dispatchEvent(e),this.activeProfile=null,h=u.DEFAULT},this.addProfile=function(e){this.profiles.push(e),this.sceneProfile.add(e),e.update(),this.dispatchEvent({type:"profile_added",profile:e}),e.addEventListener("marker_added",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_removed",function(e){c.dispatchEvent(e)}),e.addEventListener("marker_moved",function(e){c.dispatchEvent(e)})},this.removeProfile=function(e){this.sceneProfile.remove(e);var t=this.profiles.indexOf(e);t>=0&&this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",profile:e})},this.reset=function(){for(var e=this.profiles.length-1;e>=0;e--){var t=this.profiles[e];this.removeProfile(t)}},this.update=function(){for(var e=0;e0?o[0]:!1}}var s=this;this.enabled=!1,this.scene=e,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.dragstart=null,this.sceneTransformation=new THREE.Scene,this.sceneRoot=new THREE.Object3D,this.sceneTransformation.add(this.sceneRoot),this.sceneRotation=new THREE.Scene,this.translationNode=new THREE.Object3D,this.rotationNode=new THREE.Object3D,this.scaleNode=new THREE.Object3D,this.sceneRoot.add(this.translationNode),this.sceneRoot.add(this.rotationNode),this.sceneRoot.add(this.scaleNode),this.sceneRoot.visible=!1,this.hoveredElement=null,this.STATE={DEFAULT:0,TRANSLATE_X:1,TRANSLATE_Y:2,TRANSLATE_Z:3,SCALE_X:1,SCALE_Y:2,SCALE_Z:3},this.parts={ARROW_X:{name:"arrow_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.TRANSLATE_X},ARROW_Z:{name:"arrow_z",object:void 0,color:new THREE.Color(255),state:this.STATE.TRANSLATE_Z},ARROW_Y:{name:"arrow_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.TRANSLATE_Y},SCALE_X:{name:"scale_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.SCALE_X},SCALE_Z:{name:"scale_z",object:void 0,color:new THREE.Color(255),state:this.STATE.SCALE_Z},SCALE_Y:{name:"scale_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.SCALE_Y},ROTATE_X:{name:"rotate_x",object:void 0,color:new THREE.Color(16711680),state:this.STATE.ROTATE_X},ROTATE_Z:{name:"rotate_z",object:void 0,color:new THREE.Color(255),state:this.STATE.ROTATE_Z},ROTATE_Y:{name:"rotate_y",object:void 0,color:new THREE.Color(65280),state:this.STATE.ROTATE_Y}},this.buildTranslationNode=function(){var e=s.createArrow(s.parts.ARROW_X,s.parts.ARROW_X.color);e.rotation.z=-Math.PI/2;var t=s.createArrow(s.parts.ARROW_Y,s.parts.ARROW_Y.color),i=s.createArrow(s.parts.ARROW_Z,s.parts.ARROW_Z.color);i.rotation.x=-Math.PI/2,this.translationNode.add(e),this.translationNode.add(t),this.translationNode.add(i)},this.buildScaleNode=function(){var e=this.createScaleHandle(s.parts.SCALE_X,16711680);e.rotation.z=-Math.PI/2;var t=this.createScaleHandle(s.parts.SCALE_Y,65280),i=this.createScaleHandle(s.parts.SCALE_Z,255);i.rotation.x=-Math.PI/2,this.scaleNode.add(e),this.scaleNode.add(t),this.scaleNode.add(i)},this.buildRotationNode=function(){var e=this.createRotationCircle(s.parts.ROTATE_X,16711680);e.rotation.y=-Math.PI/2;var t=this.createRotationCircle(s.parts.ROTATE_Y,65280),i=this.createRotationCircle(s.parts.ROTATE_Z,255);t.rotation.x=-Math.PI/2,this.rotationNode.add(e),this.rotationNode.add(t),this.rotationNode.add(i);var o=new THREE.SphereGeometry(2.9,24,24),n=new THREE.Mesh(o,new THREE.MeshBasicMaterial({color:11184810,transparent:!0,opacity:.4}));this.sceneRotation.add(n);var r=function(){n.material.color.setHex(5592405)},a=function(){n.material.color.setHex(11184810)},l=function(e){e.event.stopImmediatePropagation();for(var t=new THREE.Vector3(s.dragstart.mousePos.x,s.dragstart.mousePos.y,.1),i=new THREE.Vector3(s.mouse.x,s.mouse.y,.1),o=(new THREE.Vector3).subVectors(i,t),n=t.clone().unproject(s.camera),r=i.clone().unproject(s.camera),a=(new THREE.Vector3).subVectors(r,n),l=a.clone().normalize(),d=(new THREE.Vector3).subVectors(s.camera.position,n).normalize(),c=d.clone().cross(l),u=6*o.length(),h=0;h=n;n++){var r=2*Math.PI*n/o,a=3*Math.cos(r),l=3*Math.sin(r);i.push(new THREE.Vector3(a,l,0))}for(var d=new THREE.Geometry,n=0;nt;t++)n.label.children[t].updateMatrixWorld(!0)},this.setDimension=function(e,t,i){this.dimension.set(e,t,i),this.box.scale.set(e,t,i),this.frame.scale.set(e,t,i)},this.volume=function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)},this.update=function(){this.boundingBox=this.box.geometry.boundingBox,this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=!0)},this.raycast=function(e,t){var i=[];if(this.box.raycast(e,i),i.length>0){var o=i[0];t.push({distance:o.distance,object:this,point:o.point.clone()})}},this.update()},Potree.Volume.prototype=Object.create(THREE.Object3D.prototype),Object.defineProperty(Potree.Volume.prototype,"clip",{get:function(){return this._clip},set:function(e){this._clip=e,this.update()}}),Object.defineProperty(Potree.Volume.prototype,"modifiable",{get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}),Potree.VolumeTool=function(e,t,i){function o(e){var t=d.domElement.getBoundingClientRect();d.mouse.x=(e.clientX-t.left)/d.domElement.clientWidth*2-1,d.mouse.y=2*-((e.clientY-t.top)/d.domElement.clientHeight)+1}function n(){}function r(e){if(u!==c.DEFAULT&&e.stopImmediatePropagation(),u===c.INSERT_VOLUME)d.finishInsertion();else if(1===e.which){var t=s();t&&t.object.modifiable&&transformationTool.setTargets([t.object])}3===e.which}function a(e){return e.preventDefault(),!1}function s(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=new THREE.Raycaster;t.ray.set(d.camera.position,e.sub(d.camera.position).normalize());for(var i=[],o=0;o0?r[0]:!1}function l(){var e=new THREE.Vector3(d.mouse.x,d.mouse.y,.5);e.unproject(d.camera);var t=e.sub(d.camera.position).normalize(),i=new THREE.Ray(d.camera.position,t),o=[];d.scene.traverse(function(e){(e instanceof Potree.PointCloudOctree||e instanceof Potree.PointCloudArena4D)&&o.push(e)});for(var n=null,r=null,a=0;ac)&&(n=l,r=c)}}return n?n.position:null}var d=this;this.enabled=!1,this.scene=e,this.sceneVolume=new THREE.Scene,this.camera=t,this.renderer=i,this.domElement=i.domElement,this.mouse={x:0,y:0},this.volumes=[];var c={DEFAULT:0,INSERT_VOLUME:1},u=c.DEFAULT;this.update=function(){if(u===c.INSERT_VOLUME){var e=l();if(e){this.activeVolume.position.copy(e);var t=this.activeVolume.getWorldPosition().applyMatrix4(this.camera.matrixWorldInverse),o=(new THREE.Vector4(t.x,t.y,t.z).applyMatrix4(this.camera.projectionMatrix),Math.abs(t.z/10));this.activeVolume.scale.set(o,o,o)}}for(var n=[],r=0;r=0&&this.volumes.splice(t,1)},this.reset=function(){for(var e=this.volumes.length-1;e>=0;e--){var t=this.volumes[e];this.removeVolume(t)}},this.render=function(){i.render(this.sceneVolume,this.camera)},this.domElement.addEventListener("click",n,!1),this.domElement.addEventListener("mousedown",r,!1),this.domElement.addEventListener("mousemove",o,!1),this.domElement.addEventListener("contextmenu",a,!1)},Potree.VolumeTool.prototype=Object.create(THREE.EventDispatcher.prototype),Potree.PointCloudArena4DProxyNode=function(e){THREE.Object3D.call(this),this.geometryNode=e,this.pcoGeometry=e,this.boundingBox=e.boundingBox,this.boundingSphere=e.boundingSphere,this.number=e.name,this.numPoints=e.numPoints,this.level=e.level},Potree.PointCloudArena4DProxyNode.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D=function(e){THREE.Object3D.call(this),this.root=null,this.visiblePointsTarget=2e6,this.minimumNodePixelSize=150,this.position.sub(e.offset),this.updateMatrix(),this.numVisibleNodes=0,this.numVisiblePoints=0,this.boundingBoxNodes=[],this.loadQueue=[],this.visibleNodes=[],this.pcoGeometry=e,this.boundingBox=this.pcoGeometry.boundingBox,this.boundingSphere=this.pcoGeometry.boundingSphere,this.material=new Potree.PointCloudMaterial({vertexColors:THREE.VertexColors,size:.05,treeType:Potree.TreeType.KDTREE}),this.material.sizeType=Potree.PointSizeType.ATTENUATED,this.material.size=.05,this.pickTarget,this.pickMaterial,this.updateMatrixWorld()},Potree.PointCloudArena4D.prototype=Object.create(THREE.Object3D.prototype),Potree.PointCloudArena4D.prototype.updateMaterial=function(e,t){this.material.fov=e.fov*(Math.PI/180),this.material.screenWidth=t.domElement.clientWidth,this.material.screenHeight=t.domElement.clientHeight,this.material.spacing=this.pcoGeometry.spacing,this.material.near=e.near,this.material.far=e.far,this.maxLevel>this.material.levels&&(this.material.levels=this.maxLevel+2),this.material.minSize=3;var i=this.boundingBox.size();this.material.bbSize=[i.x,i.y,i.z]},Potree.PointCloudArena4D.prototype.hideDescendants=function(e){for(var t=[],i=0;i0;){var e=t.shift();e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1);for(var i=0;i0;){var v=f.shift(),g=v.node,E=v.weight;g.matrixWorld.multiplyMatrices(this.matrixWorld,g.matrix);var y=g.boundingBox.clone(),b=a.intersectsBox(y),T=b;if(g.visible=T,T){var P=0;if(8===P&&dbgFullyInside++,g instanceof Potree.PointCloudArena4DProxyNode){var R=g.geometryNode;R.loaded===!0?this.replaceProxy(g):this.loadQueue.push(v)}else if(g instanceof THREE.PointCloud){if(this.numVisiblePoints+g.pcoGeometry.numPoints>pointcloud.visiblePointsTarget)break;if(this.numVisibleNodes++,this.numVisiblePoints+=g.pcoGeometry.numPoints,this.visibleNodes.push({node:g,weight:E}),this.showBoundingBox&&!g.boundingBoxNode){var C=new THREE.BoxHelper(g);this.add(C),this.boundingBoxNodes.push(C),g.boundingBoxNode=C,g.boundingBoxNode.matrixWorld.copy(g.matrixWorld)}else this.showBoundingBox&&g.boundingBoxNode?g.boundingBoxNode.visible=!0:this.showBoundingBox||delete g.boundingBoxNode;for(var n=0;nH&&(V=Number.MAX_VALUE);var M=t.domElement.clientHeight*V;if(!(Mf[I].weight){var A=I;break}if(I==f.length-1){A=f.length;break}}f.splice(A,0,{node:x,weight:E})}}}}}}this.updateLoadQueue(),this.maxLevel=0;for(var n=0;n0){this.loadQueue.length>=2&&this.loadQueue.sort(function(e,t){return t.weight-e.weight});for(var e=0;e0&&!(t.length>12);){var d=s.shift(),c=d.boundingBox.clone();c.max.sub(c.min),c.min.sub(c.min);var u=i.intersectsBox(c),h=u;if(h){if(l+d.numPoints>this.visiblePointsTarget)break;l+=d.numPoints,t.push(d),d.loaded&&(d.left&&s.push(d.left),d.right&&s.push(d.right))}}return t},Potree.PointCloudArena4D.prototype.nodesOnRay=function(e,t){for(var i=[],o=t.clone(),n=0;n0&&r.push(r[0]);for(var u=0;uR;R++)for(var C=0;n>C;C++){var x=R+C*n,w=Math.pow(R-(n-1)/2,2)+Math.pow(C-(n-1)/2,2),H=y[4*x+3];y[4*x+3]=0;var S=b[x];(0!==S||0!==H)&&T>w&&(P={pIndex:S,pcIndex:H},T=w)}if(P){var B={},V=r[P.pcIndex],M=V.geometry.attributes;for(var A in M)if(M.hasOwnProperty(A)){var I=p.attributes[A];if("position"===A){var L=V.geometry.attributes.position.array,W=L[3*P.pIndex+0],N=L[3*P.pIndex+1],G=L[3*P.pIndex+2],X=new THREE.Vector3(W,N,G);X.applyMatrix4(this.matrixWorld),B[A]=X}else if("indices"===A);else if(1===I.itemSize)B[A]=I.array[u+O];else{for(var D=[],O=0;On?-1:n>r?1:0};t.sort(n);for(var r=[],a=0;a0&&(l+=1,d=r.indexOf(s.pcoGeometry.left.number)-a),s.pcoGeometry.right&&r.indexOf(s.pcoGeometry.right.number)>0&&(l+=2,d=0===d?r.indexOf(s.pcoGeometry.right.number)-a:d),"X"===s.pcoGeometry.split?c=1:"Y"===s.pcoGeometry.split?c=2:"Z"===s.pcoGeometry.split&&(c=4),o[3*a+0]=l,o[3*a+1]=d,o[3*a+2]=c}i.needsUpdate=!0}},Object.defineProperty(Potree.PointCloudArena4D.prototype,"progress",{get:function(){return this.pcoGeometry.root?Potree.PointCloudArena4DGeometryNode.nodesLoading>0?0:1:0}}),Potree.PointCloudArena4DGeometryNode=function(){this.left=null,this.right=null,this.boundingBox=null,this.number=null,this.pcoGeometry=null,this.loaded=!1,this.numPoints=0,this.level=0},Potree.PointCloudArena4DGeometryNode.nodesLoading=0,Potree.PointCloudArena4DGeometryNode.prototype.load=function(){if(!(this.loaded||this.loading||Potree.PointCloudArena4DGeometryNode.nodesLoading>=5)){Potree.PointCloudArena4DGeometryNode.nodesLoading++;var e=this.pcoGeometry.url+"?node="+this.number,t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=new DataView(e),n=e.byteLength/17,r=new Float32Array(3*n),a=new Float32Array(3*n),s=new Uint32Array(n),l=0;n>l;l++){var d=o.getFloat32(17*l+0,!0)+i.boundingBox.min.x,c=o.getFloat32(17*l+4,!0)+i.boundingBox.min.y,u=o.getFloat32(17*l+8,!0)+i.boundingBox.min.z,h=o.getUint8(17*l+12,!0)/256,p=o.getUint8(17*l+13,!0)/256,m=o.getUint8(17*l+14,!0)/256;r[3*l+0]=d,r[3*l+1]=c,r[3*l+2]=u,a[3*l+0]=h,a[3*l+1]=p,a[3*l+2]=m,s[l]=l}var f=new THREE.BufferGeometry;f.addAttribute("position",new THREE.BufferAttribute(r,3)),f.addAttribute("color",new THREE.BufferAttribute(a,3)),f.addAttribute("indices",new THREE.BufferAttribute(s,1)),f.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(3*n),3)),i.geometry=f,i.loaded=!0,Potree.PointCloudArena4DGeometryNode.nodesLoading--,f.boundingBox=i.boundingBox,f.boundingSphere=i.boundingSphere,i.numPoints=n}},t.send(null)}},Potree.PointCloudArena4DGeometry=function(){this.numPoints=0,this.version=0,this.boundingBox=null,this.numNodes=0,this.name=null,this.provider=null,this.url=null,this.root=null,this.levels=0,this._spacing=null,this.pointAttributes=new Potree.PointAttributes(["POSITION_CARTESIAN","COLOR_PACKED"])},Potree.PointCloudArena4DGeometry.load=function(e,t){var i=new XMLHttpRequest;i.open("GET",e+"?info",!0),i.onreadystatechange=function(){try{if(4===i.readyState&&200===i.status){var o=JSON.parse(i.responseText),n=new Potree.PointCloudArena4DGeometry;n.url=e,n.name=o.Name,n.provider=o.Provider,n.numNodes=o.Nodes,n.numPoints=o.Points,n.version=o.Version,n.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(o.BoundingBox.slice(0,3)),(new THREE.Vector3).fromArray(o.BoundingBox.slice(3,6))),o.Spacing&&(n.spacing=o.Spacing);var r=n.boundingBox.min.clone().multiplyScalar(-1);n.boundingBox.min.add(r),n.boundingBox.max.add(r),n.offset=r;var a=n.boundingBox.center(),s=n.boundingBox.size().length()/2;n.boundingSphere=new THREE.Sphere(a,s),n.loadHierarchy(),t(n)}else 4===i.readyState&&t(null)}catch(l){t(null)}},i.send(null)},Potree.PointCloudArena4DGeometry.prototype.loadHierarchy=function(){var e=this.url+"?tree",t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer";var i=this;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status){for(var e=t.response,o=e.byteLength/3,n=new DataView(e),r=[],a=null,s=0,l=((new Date).getTime(),0);o>l;l++){var d=n.getUint8(3*l+0,!0),c=(n.getUint16(3*l+1,!0),(1&d)>0),u=(2&d)>0,h=(4&d)>0,p=(8&d)>0,m=(16&d)>0,f=null; +h?f="X":p&&(f="Y"),m&&(f="Z");var v=new Potree.PointCloudArena4DGeometryNode;if(v.hasLeft=c,v.hasRight=u,v.split=f,v.isLeaf=!c&&!u,v.number=l,v.left=null,v.right=null,v.pcoGeometry=i,v.level=r.length,s=Math.max(s,v.level),r.length>0){var g=r[r.length-1];v.boundingBox=g.boundingBox.clone();var E=g.boundingBox.size();if(g.hasLeft&&!g.left){g.left=v,"X"===g.split?v.boundingBox.max.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.max.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.max.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}else{g.right=v,"X"===g.split?v.boundingBox.min.x=v.boundingBox.min.x+E.x/2:"Y"===g.split?v.boundingBox.min.y=v.boundingBox.min.y+E.y/2:"Z"===g.split&&(v.boundingBox.min.z=v.boundingBox.min.z+E.z/2);var y=v.boundingBox.center(),b=v.boundingBox.size().length()/2;v.boundingSphere=new THREE.Sphere(y,b)}}else{a=v,a.boundingBox=i.boundingBox.clone();var y=a.boundingBox.center(),b=a.boundingBox.size().length()/2;a.boundingSphere=new THREE.Sphere(y,b)}var T=v.boundingBox.size();if(v.spacing=(T.x+T.y+T.z)/3/75,r.push(v),v.isLeaf)for(var P=!1;!P&&r.length>0;){r.pop();var R=r[r.length-1];P=r.length>0&&R.hasRight&&null==R.right}}{(new Date).getTime()}i.root=a,i.levels=s}},t.send(null)},Object.defineProperty(Potree.PointCloudArena4DGeometry.prototype,"spacing",{get:function(){return this._spacing?this._spacing:this.root?this.root.spacing:void 0},set:function(e){this._spacing=e}}); \ No newline at end of file diff --git a/examples/heightProfile.html b/examples/heightProfile.html new file mode 100644 index 0000000000..763b684b79 --- /dev/null +++ b/examples/heightProfile.html @@ -0,0 +1,130 @@ + + + + Potree Viewer + + + + + + + + + + + + + + + + + +
+ potree.org
+ Point cloud courtesy of sigeom sa
+
+ + +
+
+
+ +
+ + + + + + + + + + + + diff --git a/examples/infos.txt b/examples/infos.txt deleted file mode 100644 index d1e3677cf4..0000000000 --- a/examples/infos.txt +++ /dev/null @@ -1,100 +0,0 @@ - - -"[ " + camera.position.x.toFixed(2) + ", " + camera.position.y.toFixed(2) + ", " + camera.position.z.toFixed(2) + " ]" - - - - -# matterhorn - -position: [ 3334.84, 7806.38, -2970.29 ] -lookAt: [ 550.70, 5659.12, -275.78 ] - -camera.position.set(3334.84, 7806.38, -2970.29) -camera.lookAt(new THREE.Vector3(550.70, 5659.12, -275.78)) - - - - -# dechen cave - -position: [ -2.12, 14.08, -3.40 ] -lookAt: [ -4.80, 13.80, 1.49 ] - - - - -# owl - -position: [ -4.27, 7.02, 4.27 ] -lookAt: [ -0.12, 1.63, -0.05 ] - - - -# skatepark - -points: 0.6 -position: [ 5.10, 195.34, -12.79 ] -lookAt: [ -3.79, 181.82, 5.64 ] - - - -# vol total - -position: [ 255.79, 506.62, -233.26 ] -lookAt: [ 117.90, 321.15, -22.44 ] - - - -#eclepens - -position: [ 331.55, 890.39, 538.83 ] -lookAt: [ 127.47, 600.93, 88.21 ] - - - -# lion_takanawa - -position: [ 3.68, 7.00, 4.37 ] -lookAt: [ 0.27, 4.68, 1.00 ] - - - -# whitby_geom - -position: [ 268.87, 539.56, -101.29 ] -lookAt: [ 94.25, 351.57, -0.64 ] - - -# vienna donaukanal - -position: [ 2.96, 17.32, 10.35 ] -lookAt: [ 1.42, 11.58, -0.04 ] - - -# CA13_SAN_SIM - -position: [ -23190.37, 20563.16, -7653.28 ] -lookAt: [ -22959.89, 20435.17, -7879.27 ] - - - -# lake tahoe - -points: 1.5 -pointSize: 0.6 - - - - - - - - - - - - - - - diff --git a/examples/js/viewer.js b/examples/js/viewer.js index 8572456ed5..42826c4856 100644 --- a/examples/js/viewer.js +++ b/examples/js/viewer.js @@ -22,7 +22,7 @@ var clipMode = Potree.ClipMode.HIGHLIGHT_INSIDE; var quality = null; var isFlipYZ = false; var useDEMCollisions = false; -var minNodeSize = 0; +var minNodeSize = 100; var directionalLight; var showStats = false; @@ -651,6 +651,21 @@ function update(){ pointcloud.material.setClipBoxes(clipBoxes); } + //if(pointcloud){ + // + // var levels = new Uint32Array(20); + // + // var vn = pointcloud.visibleNodes; + // for(var i = 0; i < vn.length; i++){ + // var node = vn[i].node; + // var level = node.level; + // + // levels[level]++; + // } + // + // var a; + //} + } function useEarthControls(){ @@ -876,11 +891,6 @@ var HighQualityRenderer = function(){ pointcloud.visiblePointsTarget = pointCountTarget * 1000 * 1000; var originalMaterial = pointcloud.material; - var vn = []; - for(var i = 0; i < pointcloud.visibleNodes.length; i++){ - vn.push(pointcloud.visibleNodes[i].node); - } - {// DEPTH PASS depthMaterial.size = pointSize; depthMaterial.pointSizeType = pointSizeType; @@ -894,7 +904,7 @@ var HighQualityRenderer = function(){ depthMaterial.far = camera.far; depthMaterial.heightMin = heightMin; depthMaterial.heightMax = heightMax; - pointcloud.updateVisibilityTexture(depthMaterial, vn); + pointcloud.updateVisibilityTexture(depthMaterial, pointcloud.visibleNodes); scenePointCloud.overrideMaterial = depthMaterial; renderer.clearTarget( rtDepth, true, true, true ); @@ -919,7 +929,6 @@ var HighQualityRenderer = function(){ attributeMaterial.heightMax = heightMax; attributeMaterial.intensityMin = pointcloud.material.intensityMin; attributeMaterial.intensityMax = pointcloud.material.intensityMax; - pointcloud.updateVisibilityTexture(depthMaterial, vn); scenePointCloud.overrideMaterial = attributeMaterial; renderer.clearTarget( rtNormalize, true, true, true ); @@ -1063,11 +1072,6 @@ var EDLRenderer = function(){ pointcloud.visiblePointsTarget = pointCountTarget * 1000 * 1000; var originalMaterial = pointcloud.material; - var vn = []; - for(var i = 0; i < pointcloud.visibleNodes.length; i++){ - vn.push(pointcloud.visibleNodes[i].node); - } - {// COLOR & DEPTH PASS attributeMaterial.size = pointSize; attributeMaterial.pointSizeType = pointSizeType; @@ -1085,7 +1089,7 @@ var EDLRenderer = function(){ attributeMaterial.intensityMax = pointcloud.material.intensityMax; attributeMaterial.setClipBoxes(pointcloud.material.clipBoxes); attributeMaterial.clipMode = pointcloud.material.clipMode; - pointcloud.updateVisibilityTexture(attributeMaterial, vn); + pointcloud.updateVisibilityTexture(attributeMaterial, pointcloud.visibleNodes); scenePointCloud.overrideMaterial = attributeMaterial; renderer.clearTarget( rtColor, true, true, true ); @@ -1119,12 +1123,20 @@ var EDLRenderer = function(){ } }; - +//var toggleMessage = 0; function loop() { requestAnimationFrame(loop); + //var start = new Date().getTime(); update(); + //var end = new Date().getTime(); + //var duration = end - start; + //toggleMessage++; + //if(toggleMessage > 30){ + // document.getElementById("lblMessage").innerHTML = "update: " + duration + "ms"; + // toggleMessage = 0; + //} if(sceneProperties.useEDL){ if(!edlRenderer){ diff --git a/libs/other/BinaryHeap.js b/libs/other/BinaryHeap.js new file mode 100644 index 0000000000..1e3a04853e --- /dev/null +++ b/libs/other/BinaryHeap.js @@ -0,0 +1,117 @@ +/** + * from: http://eloquentjavascript.net/1st_edition/appendix2.html + * + */ + +function BinaryHeap(scoreFunction){ + this.content = []; + this.scoreFunction = scoreFunction; +} + +BinaryHeap.prototype = { + push: function(element) { + // Add the new element to the end of the array. + this.content.push(element); + // Allow it to bubble up. + this.bubbleUp(this.content.length - 1); + }, + + pop: function() { + // Store the first element so we can return it later. + var result = this.content[0]; + // Get the element at the end of the array. + var end = this.content.pop(); + // If there are any elements left, put the end element at the + // start, and let it sink down. + if (this.content.length > 0) { + this.content[0] = end; + this.sinkDown(0); + } + return result; + }, + + remove: function(node) { + var length = this.content.length; + // To remove a value, we must search through the array to find + // it. + for (var i = 0; i < length; i++) { + if (this.content[i] != node) continue; + // When it is found, the process seen in 'pop' is repeated + // to fill up the hole. + var end = this.content.pop(); + // If the element we popped was the one we needed to remove, + // we're done. + if (i == length - 1) break; + // Otherwise, we replace the removed element with the popped + // one, and allow it to float up or sink down as appropriate. + this.content[i] = end; + this.bubbleUp(i); + this.sinkDown(i); + break; + } + }, + + size: function() { + return this.content.length; + }, + + bubbleUp: function(n) { + // Fetch the element that has to be moved. + var element = this.content[n], score = this.scoreFunction(element); + // When at 0, an element can not go up any further. + while (n > 0) { + // Compute the parent element's index, and fetch it. + var parentN = Math.floor((n + 1) / 2) - 1, + parent = this.content[parentN]; + // If the parent has a lesser score, things are in order and we + // are done. + if (score >= this.scoreFunction(parent)) + break; + + // Otherwise, swap the parent with the current element and + // continue. + this.content[parentN] = element; + this.content[n] = parent; + n = parentN; + } + }, + + sinkDown: function(n) { + // Look up the target element and its score. + var length = this.content.length, + element = this.content[n], + elemScore = this.scoreFunction(element); + + while(true) { + // Compute the indices of the child elements. + var child2N = (n + 1) * 2, child1N = child2N - 1; + // This is used to store the new position of the element, + // if any. + var swap = null; + // If the first child exists (is inside the array)... + if (child1N < length) { + // Look it up and compute its score. + var child1 = this.content[child1N], + child1Score = this.scoreFunction(child1); + // If the score is less than our element's, we need to swap. + if (child1Score < elemScore) + swap = child1N; + } + // Do the same checks for the other child. + if (child2N < length) { + var child2 = this.content[child2N], + child2Score = this.scoreFunction(child2); + if (child2Score < (swap == null ? elemScore : child1Score)) + swap = child2N; + } + + // No need to swap further, we are done. + if (swap == null) break; + + // Otherwise, swap and continue. + this.content[n] = this.content[swap]; + this.content[swap] = element; + n = swap; + } + } +}; \ No newline at end of file diff --git a/src/PointCloudOctree.js b/src/PointCloudOctree.js index 4e34f798ef..87e8473e13 100644 --- a/src/PointCloudOctree.js +++ b/src/PointCloudOctree.js @@ -1,67 +1,18 @@ -/** - * Stands in place for invisible or unloaded octree nodes. - * If a proxy node becomes visible and its geometry has not been loaded, - * loading will begin. - * If it is visible and the geometry has been loaded, the proxy node will - * be replaced with a point cloud node (THREE.PointCloud as of now) - */ -Potree.PointCloudOctreeProxyNode = function(geometryNode){ - THREE.Object3D.call( this ); - - this.geometryNode = geometryNode; - this.boundingBox = geometryNode.boundingBox; - this.boundingSphere = this.boundingBox.getBoundingSphere(); - this.name = geometryNode.name; - this.level = geometryNode.level; - this.numPoints = geometryNode.numPoints; -} - -Potree.PointCloudOctreeProxyNode.prototype = Object.create(THREE.Object3D.prototype); - - - - - - - - -Potree.ProfileRequest = function(start, end, width, depth, callback){ - this.start = start; - this.end = end; - this.width = width; - this.depth = depth; - - //var up = start.clone(); - //up.y += 10; - //this.plane = new THREE.Plane().setFromCoplanarPoints(start, end, up); - this.callback = callback; - this.loadQueue = []; - - var center = new THREE.Vector3().addVectors(end, start).multiplyScalar(0.5); - var length = new THREE.Vector3().subVectors(end, start).length(); - var side = new THREE.Vector3().subVectors(end, start).normalize(); - var up = new THREE.Vector3(0, 1, 0); - var forward = new THREE.Vector3().crossVectors(side, up).normalize(); - var N = forward; - this.plane = new THREE.Plane().setFromNormalAndCoplanarPoint(N, start); +Potree.PointCloudOctreeNode = function(){ + this.children = {}; + this.sceneNode = null; }; - - - - - - Potree.PointCloudOctree = function(geometry, material){ THREE.Object3D.call( this ); Potree.PointCloudOctree.lru = Potree.PointCloudOctree.lru || new LRU(); this.pcoGeometry = geometry; - this.boundingBox = this.pcoGeometry.boundingBox; + this.boundingBox = this.pcoGeometry.tightBoundingBox; this.boundingSphere = this.boundingBox.getBoundingSphere(); this.material = material || new Potree.PointCloudMaterial(); this.visiblePointsTarget = 2*1000*1000; @@ -70,286 +21,26 @@ Potree.PointCloudOctree = function(geometry, material){ this.position.sub(geometry.offset); this.updateMatrix(); - this.LODDistance = 20; - this.LODFalloff = 1.3; - this.LOD = 4; this.showBoundingBox = false; this.boundingBoxNodes = []; this.loadQueue = []; this.visibleBounds = new THREE.Box3(); - this.profileRequests = []; this.visibleNodes = []; this.visibleGeometry = []; this.pickTarget; this.generateDEM = false; - var rootProxy = new Potree.PointCloudOctreeProxyNode(this.pcoGeometry.root); - this.add(rootProxy); + this.root = this.pcoGeometry.root; } Potree.PointCloudOctree.prototype = Object.create(THREE.Object3D.prototype); -Potree.PointCloudOctree.prototype.updateVisibleBounds = function(){ - - var leafNodes = []; - for(var i = 0; i < this.visibleNodes.length; i++){ - var element = this.visibleNodes[i]; - var node = element.node; - var isLeaf = true; - - for(var j = 0; j < node.children.length; j++){ - var child = node.children[j]; - if(child instanceof THREE.PointCloud){ - isLeaf = isLeaf && !child.visible; - } - } - - if(isLeaf){ - leafNodes.push(node); - } - } - - this.visibleBounds.min = new THREE.Vector3( Infinity, Infinity, Infinity ); - this.visibleBounds.max = new THREE.Vector3( - Infinity, - Infinity, - Infinity ); - for(var i = 0; i < leafNodes.length; i++){ - var node = leafNodes[i]; - - this.visibleBounds.expandByPoint(node.boundingBox.min); - this.visibleBounds.expandByPoint(node.boundingBox.max); - } - -} - - -Potree.PointCloudOctree.prototype.updateProfileRequests = function(){ - // check profile cut plane intersections - for(var i = 0; i < this.profileRequests.length; i++){ - var profileRequest = this.profileRequests[i]; - var plane = profileRequest.plane; - var start = profileRequest.start; - var end = profileRequest.end; - var depth = profileRequest.depth; - - var stack = []; - stack.push(this); - while(stack.length > 0){ - var object = stack.shift(); - - if(object instanceof Potree.PointCloudOctreeProxyNode){ - var box = Potree.utils.computeTransformedBoundingBox(object.boundingBox, object.matrixWorld); - - var sphere = box.getBoundingSphere(); - if(Math.abs(plane.distanceToPoint(sphere.center)) < sphere.radius){ - profileRequest.loadQueue.push(object); - } - } - - - if(object.level < depth){ - for(var i = 0; i < object.children.length; i++){ - var child = object.children[i]; - - if(child instanceof Potree.PointCloudOctreeProxyNode || child instanceof THREE.PointCloud){ - stack.push(object.children[i]); - } - } - } - } - - } - - // schedule nodes needed for a profile request - var finishedRequests = []; - for(var i = 0; i < this.profileRequests.length; i++){ - var request = this.profileRequests[i]; - - if(request.loadQueue.length > 0){ - var object = request.loadQueue[0]; - var geometryNode = object.geometryNode; - if(geometryNode.loaded === true && object.parent !== undefined){ - var node = this.replaceProxy(object); - node.updateMatrixWorld(); - node.matrixWorld.multiplyMatrices( node.parent.matrixWorld, node.matrix ); - - //var boxHelper = new THREE.BoxHelper(node); - //scene.add(boxHelper); - }else{ - object.geometryNode.load(); - } - }else{ - var points = this.getProfile(request.start, request.end, request.width, request.depth); - - request.callback({type: "finished", points: points}); - finishedRequests.push(request); - } - } - - for(var i = 0; i < finishedRequests.length; i++){ - var index = this.profileRequests.indexOf(finishedRequests[i]); - if (index > -1) { - this.profileRequests.splice(index, 1); - } - } -}; - -Potree.PointCloudOctree.prototype.updateMaterial = function(material, vn, camera, renderer){ - material.fov = camera.fov * (Math.PI / 180); - material.screenWidth = renderer.domElement.clientWidth; - material.screenHeight = renderer.domElement.clientHeight; - material.spacing = this.pcoGeometry.spacing; - material.near = camera.near; - material.far = camera.far; - material.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.size().x; - - if(material.pointSizeType){ - if(material.pointSizeType === Potree.PointSizeType.ADAPTIVE - || material.pointColorType === Potree.PointColorType.OCTREE_DEPTH){ - - this.updateVisibilityTexture(material, vn); - } - } -}; +Potree.PointCloudOctree.prototype.updateVisibility = function(camera, renderer){ -Potree.PointCloudOctree.prototype.updatePointCloud = function(node, element, stack, visibleGeometryNames, renderer){ - this.numVisibleNodes++; - this.numVisiblePoints += node.numPoints; - node.material = this.material; - this.visibleNodes.push(element); - - if(this.showBoundingBox && !node.boundingBoxNode){ - var boxHelper = new THREE.BoxHelper(node); - this.add(boxHelper); - this.boundingBoxNodes.push(boxHelper); - node.boundingBoxNode = boxHelper; - node.boundingBoxNode.matrixWorld.copy(node.matrixWorld); - }else if(this.showBoundingBox){ - node.boundingBoxNode.visible = true; - node.boundingBoxNode.matrixWorld.copy(node.matrixWorld); - }else if(!this.showBoundingBox && node.boundingBoxNode){ - node.boundingBoxNode.visible = false; - } - - if(this.generateDEM && node.level <= 2){ - if(!node.dem){ - node.dem = this.createDEM(node); - } - } - - for(var i = 0; i < node.children.length; i++){ - var child = node.children[i]; - var visible = visibleGeometryNames.indexOf(child.name) >= 0; - if(visible){ - for(var j = 0; j < this.visibleGeometry.length; j++){ - if(this.visibleGeometry[j].node.name === child.name){ - stack.push({node: child, weight: this.visibleGeometry[j].weight}); - break; - } - }; - } - } -} - -Potree.PointCloudOctree.prototype.updateLoadQueue = function(vn){ - if(this.loadQueue.length > 0){ - if(this.loadQueue.length >= 2){ - this.loadQueue.sort(function(a,b){return b.weight - a.weight}); - } - - for(var i = 0; i < Math.min(5, this.loadQueue.length); i++){ - this.loadQueue[i].node.geometryNode.load(); - } - } -} - -Potree.PointCloudOctree.prototype.update = function(camera, renderer){ - this.visibleGeometry = []; - this.loadQueue = []; - this.visibleNodes = []; this.numVisibleNodes = 0; this.numVisiblePoints = 0; - - if(!this.visible){ - return; - } - - this.updateMatrixWorld(true); - - this.visibleGeometry = this.getVisibleGeometry(camera, renderer); - var visibleGeometryNames = []; - - for(var i = 0; i < this.visibleGeometry.length; i++){ - visibleGeometryNames.push(this.visibleGeometry[i].node.name); - } - - for(var i = 0; i < this.profileRequests.length; i++){ - var profileRequest = this.profileRequests[i]; - profileRequest.loadQueue = []; - } - - for(var i = 0; i < this.boundingBoxNodes.length; i++){ - this.boundingBoxNodes[i].visible = false; - } - - - - - - this.hideDescendants(this.children[0]); - - var stack = []; - stack.push({node: this.children[0], weight: 1}); //TODO don't do it like that - while(stack.length > 0){ - var element = stack.shift(); - var node = element.node; - var weight = element.weight; - - node.visible = true; - - node.matrixWorld.multiplyMatrices( node.parent.matrixWorld, node.matrix ); - - if (node instanceof Potree.PointCloudOctreeProxyNode) { - var geometryNode = node.geometryNode; - if(geometryNode.loaded === true){ - this.replaceProxy(node); - }else{ - this.loadQueue.push(element); - } - }else if(node instanceof THREE.PointCloud){ - if(node.pcoGeometry.loaded){ - Potree.PointCloudOctree.lru.touch(node.pcoGeometry); - this.updatePointCloud(node, element, stack, visibleGeometryNames, renderer); - }else{ - var proxy = new Potree.PointCloudOctreeProxyNode(node.pcoGeometry); - var parent = node.parent; - parent.remove(node); - parent.add(proxy); - } - } - } - - this.updateProfileRequests(); - this.updateVisibleBounds(); - this.updateLoadQueue(); - - this.hideDescendants(this.children[0]); - var vn = []; - for(var i = 0; i < this.visibleNodes.length; i++){ - this.visibleNodes[i].node.visible = true; - vn.push(this.visibleNodes[i].node); - } - - this.updateMaterial(this.material, vn, camera, renderer); - - Potree.PointCloudOctree.lru.freeMemory(); -}; - -Potree.PointCloudOctree.prototype.getVisibleGeometry = function(camera, renderer){ - - var visibleGeometry = []; - var geometry = this.pcoGeometry; - - // create frustum in object space + // frustum in object space camera.updateMatrixWorld(); var frustum = new THREE.Frustum(); var viewI = camera.matrixWorldInverse; @@ -358,66 +49,135 @@ Potree.PointCloudOctree.prototype.getVisibleGeometry = function(camera, renderer var fm = new THREE.Matrix4().multiply(proj).multiply(viewI).multiply(world); frustum.setFromMatrix( fm ); - // calculate camera position in object space + // camera position in object space var view = camera.matrixWorld; var worldI = new THREE.Matrix4().getInverse(world); var camMatrixObject = new THREE.Matrix4().multiply(worldI).multiply(view); var camObjPos = new THREE.Vector3().setFromMatrixPosition( camMatrixObject ); - var sortWeightFunction = function(a, b){return b.weight - a.weight}; + // traverse nodes with highest weight(depends on node size and distance to camera) first + var priorityQueue = new BinaryHeap(function(x){return 1 / x.weight}); + priorityQueue.push({node: this.root, weight: 1}); - var root = geometry.root; - var stack = []; + var visibleNodes = []; + var visibleGeometry = []; var pointCount = 0; - var sphere = root.boundingBox.getBoundingSphere(); - var distance = sphere.center.distanceTo(camObjPos); - //var weight = sphere.radius / distance; - var weight = 1 / Math.max(0.1, sphere.center.distanceTo(camObjPos) - sphere.radius); - stack.push({node: root, weight: weight}); - var nodesTested = 0; - while(stack.length > 0){ - nodesTested++; - var element = stack.shift(); + // first, hide all visible nodes + if(this.root instanceof Potree.PointCloudOctreeNode){ + this.hideDescendants(this.root.sceneNode); + } + for(var i = 0; i < this.boundingBoxNodes.length; i++){ + this.boundingBoxNodes[i].visible = false; + } + + while(priorityQueue.size() > 0){ + + var element = priorityQueue.pop(); var node = element.node; + var parent = element.parent; var box = node.boundingBox; - var sphere = node.boundingSphere; - //var insideFrustum = frustum.intersectsSphere(sphere); var insideFrustum = frustum.intersectsBox(box); - - - var visible = insideFrustum; // && node.level <= 3; - //visible = visible && "r0".indexOf(node.name) === 0; - //visible = visible && node.level === 0; + var visible = insideFrustum; + visible = visible && !(this.numVisiblePoints + node.numPoints > this.visiblePointsTarget); if(!visible){ continue; } - if(pointCount + node.numPoints > this.visiblePointsTarget){ - break; + if(node instanceof Potree.PointCloudOctreeNode){ + Potree.PointCloudOctree.lru.touch(node.geometryNode); + node.sceneNode.visible = true; + node.sceneNode.material = this.material; + visibleNodes.push(node); + + if(node.parent){ + node.sceneNode.matrixWorld.multiplyMatrices( node.parent.sceneNode.matrixWorld, node.sceneNode.matrix ); + }else{ + node.sceneNode.matrixWorld.multiplyMatrices( this.matrixWorld, node.sceneNode.matrix ); + } + + if(this.showBoundingBox && !node.boundingBoxNode){ + var boxHelper = new THREE.BoxHelper(node.sceneNode); + this.add(boxHelper); + this.boundingBoxNodes.push(boxHelper); + node.boundingBoxNode = boxHelper; + node.boundingBoxNode.matrixWorld.copy(node.sceneNode.matrixWorld); + }else if(this.showBoundingBox){ + node.boundingBoxNode.visible = true; + node.boundingBoxNode.matrixWorld.copy(node.sceneNode.matrixWorld); + }else if(!this.showBoundingBox && node.boundingBoxNode){ + node.boundingBoxNode.visible = false; + } + + if(this.generateDEM && node.level <= 2){ + if(!node.dem){ + node.dem = this.createDEM(node); + } + } + + this.numVisibleNodes++; + this.numVisiblePoints += node.numPoints; + + }else if(node instanceof Potree.PointCloudOctreeGeometryNode){ + var geometryNode = node; + var geometry = geometryNode.geometry; + + if(geometryNode.loaded){ + // if geometry is loaded, create a scene node + var pcoNode = new Potree.PointCloudOctreeNode(); + var sceneNode = new THREE.PointCloud(geometry, this.material); + sceneNode.visible = false; + + pcoNode.name = geometryNode.name; + pcoNode.level = geometryNode.level; + pcoNode.numPoints = geometryNode.numPoints; + pcoNode.boundingBox = geometry.boundingBox; + pcoNode.boundingSphere = pcoNode.boundingBox.getBoundingSphere(); + pcoNode.geometryNode = geometryNode; + pcoNode.parent = parent; + pcoNode.children = geometryNode.children; + sceneNode.boundingBox = pcoNode.boundingBox; + sceneNode.boundingSphere = pcoNode.boundingSphere; + sceneNode.numPoints = pcoNode.numPoints; + sceneNode.level = pcoNode.level; + + pcoNode.sceneNode = sceneNode; + + if(parent){ + var childIndex = parseInt(pcoNode.name[pcoNode.name.length - 1]); + parent.sceneNode.add(sceneNode); + parent.children[childIndex] = pcoNode; + }else{ + this.add(sceneNode); + this.root = pcoNode; + } + + node = pcoNode; + + if(node.parent){ + node.sceneNode.matrixWorld.multiplyMatrices( node.parent.sceneNode.matrixWorld, node.sceneNode.matrix ); + }else{ + node.sceneNode.matrixWorld.multiplyMatrices( this.matrixWorld, node.sceneNode.matrix ); + } + }else{ + visibleGeometry.push(node); + } } - pointCount += node.numPoints; - visibleGeometry.push(element); - + // add child nodes to priorityQueue for(var i = 0; i < 8; i++){ if(!node.children[i]){ continue; } - + var child = node.children[i]; var sphere = child.boundingSphere; var distance = sphere.center.distanceTo(camObjPos); var radius = sphere.radius; - var weight = sphere.radius / distance; - //var weight = (1 / Math.max(0.001, distance - radius)) * distance; - // discarding nodes which are very small when projected onto the screen - // TODO: pr threshold was a value choosen by trial & error. Validate that this is fine. - // see http://stackoverflow.com/questions/21648630/radius-of-projected-sphere-in-screen-space var fov = camera.fov / 2 * Math.PI / 180.0; var pr = 1 / Math.tan(fov) * radius / Math.sqrt(distance * distance - radius * radius); @@ -426,38 +186,90 @@ Potree.PointCloudOctree.prototype.getVisibleGeometry = function(camera, renderer continue; } - weight = pr; + var weight = pr; if(distance - radius < 0){ weight = Number.MAX_VALUE; } - if(stack.length === 0){ - stack.push({node: child, weight: weight}); - }else{ - var ipos = 0; - - for(var j = 0; j < stack.length; j++){ - if(weight > stack[j].weight){ - var ipos = j; - break; - }else if(j == stack.length -1){ - ipos = stack.length; - break; - } - - - } - - stack.splice(ipos, 0, {node: child, weight: weight}); + priorityQueue.push({node: child, parent: node, weight: weight}); + } + } + + this.visibleNodes = visibleNodes; + + // load next few unloaded geometries + for(var i = 0; i < Math.min(5, visibleGeometry.length); i++){ + visibleGeometry[i].load(); + } +}; + +Potree.PointCloudOctree.prototype.updateVisibleBounds = function(){ + + var leafNodes = []; + for(var i = 0; i < this.visibleNodes.length; i++){ + var node = this.visibleNodes[i]; + var isLeaf = true; + + for(var j = 0; j < node.children.length; j++){ + var child = node.children[j]; + if(child instanceof Potree.PointCloudOctreeNode){ + isLeaf = isLeaf && !child.sceneNode.visible; + }else if(child instanceof Potree.PointCloudOctreeGeometryNode){ + isLeaf = true; } } + + if(isLeaf){ + leafNodes.push(node); + } + } + + this.visibleBounds.min = new THREE.Vector3( Infinity, Infinity, Infinity ); + this.visibleBounds.max = new THREE.Vector3( - Infinity, - Infinity, - Infinity ); + for(var i = 0; i < leafNodes.length; i++){ + var node = leafNodes[i]; + + this.visibleBounds.expandByPoint(node.boundingBox.min); + this.visibleBounds.expandByPoint(node.boundingBox.max); + } + +} - var a = 1; +Potree.PointCloudOctree.prototype.updateMaterial = function(material, visibleNodes, camera, renderer){ + material.fov = camera.fov * (Math.PI / 180); + material.screenWidth = renderer.domElement.clientWidth; + material.screenHeight = renderer.domElement.clientHeight; + material.spacing = this.pcoGeometry.spacing; + material.near = camera.near; + material.far = camera.far; + material.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.size().x; + + // update visibility texture + if(material.pointSizeType){ + if(material.pointSizeType === Potree.PointSizeType.ADAPTIVE + || material.pointColorType === Potree.PointColorType.OCTREE_DEPTH){ + + this.updateVisibilityTexture(material, visibleNodes); + } } +} + +Potree.PointCloudOctree.prototype.update = function(camera, renderer){ + + this.updateVisibility(camera, renderer); + + this.updateMaterial(this.material, this.visibleNodes, camera, renderer); + + this.updateVisibleBounds(); + + Potree.PointCloudOctree.lru.freeMemory(); + + // TODO bounds + // TODO free memory - return visibleGeometry; }; + Potree.PointCloudOctree.prototype.updateVisibilityTexture = function(material, visibleNodes){ if(!material){ @@ -480,19 +292,15 @@ Potree.PointCloudOctree.prototype.updateVisibilityTexture = function(material, v return 0; }; visibleNodes.sort(sort); - - var visibleNodeNames = {}; - for(var i = 0; i < visibleNodes.length; i++){ - visibleNodeNames[visibleNodes[i].name] = true; - } + for(var i = 0; i < visibleNodes.length; i++){ var node = visibleNodes[i]; var children = []; - for(var j = 0; j < node.children.length; j++){ + for(var j = 0; j < 8; j++){ var child = node.children[j]; - if(child instanceof THREE.PointCloud && child.visible && visibleNodeNames[child.name]){ + if(child instanceof Potree.PointCloudOctreeNode && child.sceneNode.visible){ children.push(child); } } @@ -522,14 +330,41 @@ Potree.PointCloudOctree.prototype.updateVisibilityTexture = function(material, v texture.needsUpdate = true; } + + + + + + + + + + + + + + + + + + + + + + + + + + + Potree.PointCloudOctree.prototype.nodesOnRay = function(nodes, ray){ var nodesOnRay = []; var _ray = ray.clone(); for(var i = 0; i < nodes.length; i++){ - var node = nodes[i].node; + var node = nodes[i]; //var inverseWorld = new THREE.Matrix4().getInverse(node.matrixWorld); - var sphere = node.boundingSphere.clone().applyMatrix4(node.matrixWorld); + var sphere = node.boundingSphere.clone().applyMatrix4(node.sceneNode.matrixWorld); if(_ray.isIntersectionSphere(sphere)){ nodesOnRay.push(node); @@ -667,18 +502,43 @@ Potree.PointCloudOctree.prototype.getBoundingBoxWorld = function(){ * */ Potree.PointCloudOctree.prototype.getPointsInProfile = function(profile, maxDepth){ - var points = []; + var points = { + segments: [], + boundingBox: new THREE.Box3(), + projectedBoundingBox: new THREE.Box2() + }; - var mileage = 0; + // evaluate segments for(var i = 0; i < profile.points.length - 1; i++){ var start = profile.points[i]; var end = profile.points[i+1]; var ps = this.getProfile(start, end, profile.width, maxDepth); - var project = function(_start, _end, _mileage){ + var segment = { + start: start, + end: end, + points: ps, + project: null + }; + + points.segments.push(segment); + + points.boundingBox.expandByPoint(ps.boundingBox.min); + points.boundingBox.expandByPoint(ps.boundingBox.max); + } + + // add projection functions to the segments + var mileage = new THREE.Vector3(); + for(var i = 0; i < points.segments.length; i++){ + var segment = points.segments[i]; + var start = segment.start; + var end = segment.end; + + var project = function(_start, _end, _mileage, _boundingBox){ var start = _start; var end = _end; var mileage = _mileage; + var boundingBox = _boundingBox; var xAxis = new THREE.Vector3(1,0,0); var dir = new THREE.Vector3().subVectors(end, start); @@ -692,10 +552,9 @@ Potree.PointCloudOctree.prototype.getPointsInProfile = function(profile, maxDept return function(position){ - var toOrigin = new THREE.Matrix4().makeTranslation(-start.x, -start.y, -start.z); + var toOrigin = new THREE.Matrix4().makeTranslation(-start.x, -boundingBox.min.y, -start.z); var alignWithX = new THREE.Matrix4().makeRotationY(-alpha); - var applyMileage = new THREE.Matrix4().makeTranslation(mileage, 0, 0); - + var applyMileage = new THREE.Matrix4().makeTranslation(mileage.x, 0, 0); var pos = position.clone(); pos.applyMatrix4(toOrigin); @@ -705,20 +564,19 @@ Potree.PointCloudOctree.prototype.getPointsInProfile = function(profile, maxDept return pos; }; - }(start, end, mileage) + }(start, end, mileage.clone(), points.boundingBox.clone()); - var segment = { - start: start, - end: end, - points: ps, - project: project - }; + segment.project = project; - points.push(segment); - - mileage += start.distanceTo(end); + mileage.x += new THREE.Vector3(start.x, 0, start.z).distanceTo(new THREE.Vector3(end.x, 0, end.z)); + mileage.y += end.y - start.y; } + points.projectedBoundingBox.min.x = 0; + points.projectedBoundingBox.min.y = points.boundingBox.min.y; + points.projectedBoundingBox.max.x = mileage.x; + points.projectedBoundingBox.max.y = points.boundingBox.max.y; + return points; }; @@ -751,6 +609,8 @@ Potree.PointCloudOctree.prototype.getProfile = function(start, end, width, depth var inside = null; + var boundingBox = new THREE.Box3(); + while(stack.length > 0){ var object = stack.shift(); @@ -785,7 +645,7 @@ Potree.PointCloudOctree.prototype.getProfile = function(start, end, width, depth var centerDistance = Math.abs(halfPlane.distanceToPoint(pos)); if(distance < width / 2 && centerDistance < length / 2){ - //inside.push(pos); + boundingBox.expandByPoint(pos); for (var property in geometry.attributes) { if (geometry.attributes.hasOwnProperty(property)) { @@ -862,78 +722,12 @@ Potree.PointCloudOctree.prototype.getProfile = function(start, end, width, depth }(start, end) inside.project = project; + inside.boundingBox = boundingBox; return inside; } } -///** -// * -// * amount: minimum number of points to remove -// */ -//Potree.PointCloudOctree.disposeLeastRecentlyUsed = function(amount){ -// -// return; -// -// var freed = 0; -// do{ -// if(!Potree.PointCloudOctree.lru.first){ -// return; -// } -// -// var node = Potree.PointCloudOctree.lru.first.node; -// if(node.visible){ -// return; -// } -// -// var parent = node.parent; -// var geometry = node.geometry; -// var pcoGeometry = node.pcoGeometry; -// var proxy = new Potree.PointCloudOctreeProxyNode(pcoGeometry); -// -// var result = Potree.PointCloudOctree.disposeNode(node); -// freed += result.freed; -// -// parent.add(proxy); -// -// if(result.numDeletedNodes == 0){ -// break; -// } -// }while(freed < amount); -//} -// -//Potree.PointCloudOctree.disposeNode = function(node){ -// -// var freed = 0; -// var numDeletedNodes = 0; -// var descendants = []; -// -// node.traverse(function(object){ -// descendants.push(object); -// }); -// -// for(var i = 0; i < descendants.length; i++){ -// var descendant = descendants[i]; -// if(descendant instanceof THREE.PointCloud){ -// freed += descendant.pcoGeometry.numPoints; -// descendant.pcoGeometry.dispose(); -// descendant.geometry.dispose(); -// Potree.PointCloudOctree.lru.remove(descendant); -// numDeletedNodes++; -// -// console.log("disposed: " + node.name + "\t, " + renderer.info.memory.geometries + ", " + Potree.PointCloudOctree.lru.elements); -// } -// } -// -// Potree.PointCloudOctree.lru.remove(node); -// node.parent.remove(node); -// -// return { -// "freed": freed, -// "numDeletedNodes": numDeletedNodes -// }; -//} - Potree.PointCloudOctree.prototype.getVisibleExtent = function(){ return this.visibleBounds.applyMatrix4(this.matrixWorld); }; @@ -1026,7 +820,7 @@ Potree.PointCloudOctree.prototype.pick = function(renderer, camera, ray, params) } for(var i = 0; i < nodes.length; i++){ - var object = nodes[i]; + var object = nodes[i].sceneNode; var geometry = object.geometry; if(!geometry.attributes.indices.buffer){ @@ -1097,7 +891,7 @@ Potree.PointCloudOctree.prototype.pick = function(renderer, camera, ray, params) if(hit){ var point = {}; - var pc = nodes[hit.pcIndex]; + var pc = nodes[hit.pcIndex].sceneNode; var attributes = pc.geometry.attributes; for (var property in attributes) { @@ -1138,16 +932,16 @@ Potree.PointCloudOctree.prototype.pick = function(renderer, camera, ray, params) var demTime = 0; -Potree.PointCloudOctree.prototype.createDEM = function(node){ - +Potree.PointCloudOctree.prototype.createDEM = function(node){ var start = new Date().getTime(); + var sceneNode = node.sceneNode; - var world = node.matrixWorld; + var world = sceneNode.matrixWorld; - var boundingBox = node.boundingBox.clone().applyMatrix4(world); + var boundingBox = sceneNode.boundingBox.clone().applyMatrix4(world); var bbSize = boundingBox.size(); - var positions = node.geometry.attributes.position.array; + var positions = sceneNode.geometry.attributes.position.array; var demSize = 64; var demMArray = new Array(demSize*demSize); var dem = new Float32Array(demSize*demSize); @@ -1218,98 +1012,10 @@ Potree.PointCloudOctree.prototype.createDEM = function(node){ dem: dem, demSize: demSize }; - - - - //var geometry = new THREE.BufferGeometry(); - //var vertices = new Float32Array((demSize-1)*(demSize-1)*2*3*3); - //var offset = 0; - //for(var i = 0; i < demSize-1; i++){ - // for(var j = 0; j < demSize-1; j++){ - // //var offset = 18*i + 18*j*demSize; - // - // var dx = i; - // var dy = j; - // - // var v1 = toWorld(dx, dy); - // var v2 = toWorld(dx+1, dy); - // var v3 = toWorld(dx+1, dy+1); - // var v4 = toWorld(dx, dy+1); - // - // vertices[offset+0] = v3[0]; - // vertices[offset+1] = v3[1]; - // vertices[offset+2] = v3[2]; - // - // vertices[offset+3] = v2[0]; - // vertices[offset+4] = v2[1]; - // vertices[offset+5] = v2[2]; - // - // vertices[offset+6] = v1[0]; - // vertices[offset+7] = v1[1]; - // vertices[offset+8] = v1[2]; - // - // - // vertices[offset+9 ] = v3[0]; - // vertices[offset+10] = v3[1]; - // vertices[offset+11] = v3[2]; - // - // vertices[offset+12] = v1[0]; - // vertices[offset+13] = v1[1]; - // vertices[offset+14] = v1[2]; - // - // vertices[offset+15] = v4[0]; - // vertices[offset+16] = v4[1]; - // vertices[offset+17] = v4[2]; - // - // - // - // //var x = (dx * bbSize.min.x) / demSize + boundingBox.min.x; - // //var y = (dy * bbSize.min.y) / demSize + boundingBox.min.y; - // //var z = dem[dx + dy * demSize]; - // - // offset += 18; - // - // } - //} - // - //geometry.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) ); - //geometry.computeFaceNormals(); - //geometry.computeVertexNormals(); - // - //var material = new THREE.MeshNormalMaterial( { color: 0xff0000, shading: THREE.SmoothShading } ); - //var mesh = new THREE.Mesh( geometry, material ); - // - //if(node.level == 1){ - // scene.add(mesh); - // - // var demb = new Uint8Array(demSize*demSize*4); - // for(var i = 0; i < demSize*demSize; i++){ - // demb[4*i + 0] = 255 * dem[i] / 6000; - // demb[4*i + 1] = 255 * dem[i] / 6000; - // demb[4*i + 2] = 255 * dem[i] / 6000; - // demb[4*i + 3] = 255; - // } - // - // var img = pixelsArrayToImage(demb, demSize, demSize); - // img.style.boder = "2px solid red"; - // var txt = document.createElement("div"); - // txt.innerHTML = node.name; - // document.body.appendChild(txt); - // document.body.appendChild(img); - //} - - - - //console.log(n); - // var end = new Date().getTime(); var duration = end - start; - //console.log(node.numPoints + " - " + duration); demTime += duration; - - - return result; } diff --git a/src/loader/POCLoader.js b/src/loader/POCLoader.js index c7e480ccd8..2264ca4d05 100644 --- a/src/loader/POCLoader.js +++ b/src/loader/POCLoader.js @@ -45,6 +45,13 @@ Potree.POCLoader.load = function load(url, callback) { var min = new THREE.Vector3(fMno.boundingBox.lx, fMno.boundingBox.ly, fMno.boundingBox.lz); var max = new THREE.Vector3(fMno.boundingBox.ux, fMno.boundingBox.uy, fMno.boundingBox.uz); var boundingBox = new THREE.Box3(min, max); + var tightBoundingBox = boundingBox.clone(); + + if(fMno.tightBoundingBox){ + tightBoundingBox.min.copy(new THREE.Vector3(fMno.tightBoundingBox.lx, fMno.tightBoundingBox.ly, fMno.tightBoundingBox.lz)); + tightBoundingBox.max.copy(new THREE.Vector3(fMno.tightBoundingBox.ux, fMno.tightBoundingBox.uy, fMno.tightBoundingBox.uz)); + } + var offset = new THREE.Vector3(0,0,0); offset.set(-min.x, -min.y, -min.z); @@ -52,8 +59,13 @@ Potree.POCLoader.load = function load(url, callback) { boundingBox.min.add(offset); boundingBox.max.add(offset); + tightBoundingBox.min.add(offset); + tightBoundingBox.max.add(offset); + pco.boundingBox = boundingBox; + pco.tightBoundingBox = tightBoundingBox pco.boundingSphere = boundingBox.getBoundingSphere(); + pco.tightBoundingSphere = tightBoundingBox.getBoundingSphere(); pco.offset = offset; if(fMno.pointAttributes === "LAS"){ pco.loader = new Potree.LasLazLoader(fMno.version); From 723377cd2c20b4a56786c3effb4c3d1142758924 Mon Sep 17 00:00:00 2001 From: mschuetz Date: Fri, 4 Sep 2015 11:01:13 +0200 Subject: [PATCH 23/35] update viewer example; add measurement example --- examples/measurements.html | 104 +++++++++++++++++++++++++++++++++++++ examples/viewer.html | 6 ++- 2 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 examples/measurements.html diff --git a/examples/measurements.html b/examples/measurements.html new file mode 100644 index 0000000000..9950b5ad40 --- /dev/null +++ b/examples/measurements.html @@ -0,0 +1,104 @@ + + + + Potree Viewer + + + + + + + + + + + + + + + + + +
+ potree.org
+ Point cloud courtesy of sigeom sa
+
+ + +
+
+
+ +
+ + +
+ + + + + + + + + + + +
+ + + + + + + + + + + diff --git a/examples/viewer.html b/examples/viewer.html index b47fb2f2b6..903e2fdf5c 100644 --- a/examples/viewer.html +++ b/examples/viewer.html @@ -9,6 +9,7 @@ + @@ -77,14 +78,15 @@ + @@ -78,11 +79,13 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +Rendering a three.js / Potree point cloud in +Cesium
+Point cloud courtesy of sigeom sa + +
+ + + \ No newline at end of file diff --git a/examples/georeferencing.html b/examples/openLayers3.html similarity index 100% rename from examples/georeferencing.html rename to examples/openLayers3.html diff --git a/examples/viewer.html b/examples/viewer.html index fad00e7442..ffea0eb918 100644 --- a/examples/viewer.html +++ b/examples/viewer.html @@ -2,6 +2,7 @@ Potree Viewer + @@ -14,7 +15,6 @@ - @@ -38,15 +38,12 @@ - - - - +
@@ -81,11 +78,11 @@ var sceneProperties = { path: "http://5.9.65.151/mschuetz/potree/resources/pointclouds/pix4d/matterhorn/cloud.js", path: "../resources/pointclouds/lion_takanawa/cloud.js", - path: "../resources/pointclouds/vol_total/cloud.js", path: "http://5.9.65.151/mschuetz/potree/resources/pointclouds/vermessung_zh_ch/zuerich/cloud.js", path: "http://localhost/dev/pointclouds/opentopography/CA13_SAN_SIM/selection_converted/cloud.js", - path: "http://localhost/temp/test/cloud.js", path: "http://5.9.65.151/mschuetz/potree/test/cloud.js", + path: "http://localhost/temp/test/cloud.js", + path: "../resources/pointclouds/vol_total/cloud.js", cameraPosition: null, cameraTarget: null, sizeType: "Adaptive", // options: "Fixed", "Attenuated", "Adaptive" diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json new file mode 100644 index 0000000000..06f4ffae75 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":0,"numberOfSamples":1000,"samples":[-0.002403025022753476,-2.5083047211757836e-5,-1.721638967214743e-8,-0.002402558217007106,-2.5020003017226545e-5,-1.7146589882925253e-8,-0.002402152743739069,-2.4908815008776256e-5,-1.7018183343380784e-8,-0.0024018177616850914,-2.4779340864272868e-5,-1.686693112266686e-8,-0.0024015512294922256,-2.4661265859267777e-5,-1.672851429567895e-8,-0.0024013415089134365,-2.4580601237402673e-5,-1.6634308307010567e-8,-0.0024011692853140917,-2.4557354638250633e-5,-1.660856911234815e-8,-0.0024010094083213077,-2.460379520847823e-5,-1.666634004388421e-8,-0.002400832781870665,-2.472274606391698e-5,-1.681138635859172e-8,-0.0024006088674261195,-2.490565851910724e-5,-1.7033840158805374e-8,-0.0024003096414815053,-2.513083477542098e-5,-1.7307985763326293e-8,-0.002399915678730765,-2.5363106308028472e-5,-1.759177707540246e-8,-0.0023994239684226163,-2.5557205638682287e-5,-1.7830822072448312e-8,-0.0023988549431304905,-2.566700881355288e-5,-1.7969488578482e-8,-0.0023982538707374547,-2.5660422954022525e-5,-1.7968844164137065e-8,-0.002397681821948537,-2.553480284678542e-5,-1.7825226886235993e-8,-0.0023971964165357008,-2.53237668313255e-5,-1.7578462540315414e-8,-0.002396830441918346,-2.50885777844268e-5,-1.7301586465142487e-8,-0.0023965800106651434,-2.4896546614298096e-5,-1.7075078798371497e-8,-0.0023964084361551537,-2.4797687943490375e-5,-1.695902560230991e-8,-0.002396262002993096,-2.481096708533641e-5,-1.6976666372280337e-8,-0.0023960882393536166,-2.4923817586803518e-5,-1.7113670694608337e-8,-0.002395849219877066,-2.5101106375207836e-5,-1.732863106912266e-8,-0.002395527525579831,-2.5297461255455714e-5,-1.756761197379987e-8,-0.0023951260596151974,-2.546854998291281e-5,-1.7777564319951067e-8,-0.0023946640036132836,-2.5579325396643004e-5,-1.7916241394922998e-8,-0.0023941708783994835,-2.5608875350224024e-5,-1.7958135357141878e-8,-0.0023936800199459637,-2.5552141704174967e-5,-1.7896681829365477e-8,-0.00239322243029576,-2.5418865388500117e-5,-1.774311016303839e-8,-0.0023928218677541743,-2.5230314934074022e-5,-1.7522587181791123e-8,-0.0023924917832175113,-2.5014690159013176e-5,-1.7268730448048223e-8,-0.0023922342643846748,-2.480218762163173e-5,-1.7017686942652696e-8,-0.0023920407464684762,-2.4620565317509125e-5,-1.6802798466007283e-8,-0.0023918939307276768,-2.4491771693316273e-5,-1.6650542584010726e-8,-0.0023917702332855676,-2.442975015807349e-5,-1.6577888357278284e-8,-0.002391642329452238,-2.443909807420655e-5,-1.6590679729922046e-8,-0.002391481763245852,-2.4514179502452957e-5,-1.6682551340715887e-8,-0.0023912619080620466,-2.4638499724969643e-5,-1.6834129065335303e-8,-0.002390961805205984,-2.478455800610903e-5,-1.701276797456279e-8,-0.00239057134744484,-2.4915132198915024e-5,-1.717399678816932e-8,-0.0023900974268101054,-2.4987729973603072e-5,-1.7266795508165544e-8,-0.0023895689055318833,-2.496391501976109e-5,-1.7244787681999786e-8,-0.002389036165074365,-2.4823284691699932e-5,-1.7083063873624844e-8,-0.002388560578292379,-2.4577378315217863e-5,-1.6794918110509053e-8,-0.0023881937570601162,-2.4274142413621198e-5,-1.643724545979219e-8,-0.0023879553394346147,-2.3985163329236852e-5,-1.6095335313882396e-8,-0.002387823242597225,-2.3778727505381422e-5,-1.5850778179207802e-8,-0.002387743703083488,-2.3693514905278695e-5,-1.575012576846581e-8,-0.002387654469699301,-2.3727803248252375e-5,-1.57919573836453e-8,-0.0023875068224310926,-2.384701163322787e-5,-1.5935693828749185e-8,-0.0023872766838733636,-2.4000872036063545e-5,-1.6121849968027748e-8,-0.0023869645383715133,-2.4139837531397063e-5,-1.6291451853276617e-8,-0.0023865890688437295,-2.4225578577636494e-5,-1.6398545934918142e-8,-0.002386179207668243,-2.4235415814278647e-5,-1.641560182566368e-8,-0.0023857671367677994,-2.4162608465253676e-5,-1.633403013000638e-8,-0.00238538293231372,-2.4014446579879058e-5,-1.6162059832962554e-8,-0.002385050648932289,-2.3809267842749758e-5,-1.5921265822080736e-8,-0.0023847856192039767,-2.357281279621325e-5,-1.564223465313254e-8,-0.002384592973846085,-2.333418942320294e-5,-1.5359717819261274e-8,-0.0023844674152753756,-2.3121781930974167e-5,-1.5107704928910368e-8,-0.0023843942234786524,-2.2959461734624766e-5,-1.491486592392592e-8,-0.002384351361188566,-2.2863520256191973e-5,-1.4800873864748202e-8,-0.0023843123252193354,-2.28406536006252e-5,-1.4773996666932113e-8,-0.0023842493365599203,-2.2887020091128393e-5,-1.4829969279080835e-8,-0.0023841366567967904,-2.2988230871289267e-5,-1.4951960812478233e-8,-0.0023839539952364617,-2.312021069380629e-5,-1.5111546301631272e-8,-0.00238369008534005,-2.3251022890859802e-5,-1.527079819049034e-8,-0.0023833464925758774,-2.3344139544444378e-5,-1.5386101234343148e-8,-0.002382941139623567,-2.336411463944466e-5,-1.5414884137776942e-8,-0.002382509826925251,-2.328539769468119e-5,-1.532618136616557e-8,-0.0023821027927208825,-2.3103440347943915e-5,-1.5114003628255345e-8,-0.002381773349088804,-2.284408291453904e-5,-1.4808671898883374e-8,-0.0023815590512039917,-2.2563826220574735e-5,-1.4477243667166011e-8,-0.002381463086871345,-2.233471929550198e-5,-1.4205559558666824e-8,-0.0023814485095478804,-2.221697578834785e-5,-1.4065641166745777e-8,-0.002381452228381859,-2.2233998994991225e-5,-1.4085907881538568e-8,-0.002381411455037569,-2.2365307161191684e-5,-1.424262147988882e-8,-0.0023812864408547367,-2.2559894107652725e-5,-1.447559680357265e-8,-0.002381068549780454,-2.2758766135733266e-5,-1.4714854003566721e-8,-0.0023807747559344136,-2.291337561706086e-5,-1.4902487127724783e-8,-0.002380436370789755,-2.2994297064707167e-5,-1.5003052078078702e-8,-0.0023800885646524635,-2.299177707261808e-5,-1.5004382649226507e-8,-0.00237976327801646,-2.291211671228343e-5,-1.4913466509235396e-8,-0.0023794853741548514,-2.277298527889861e-5,-1.4750994633350504e-8,-0.0023792708581126575,-2.2599122259547465e-5,-1.4546281765613793e-8,-0.0023791261518308006,-2.241861685502684e-5,-1.4332799297124966e-8,-0.002379048025038435,-2.2259517123002332e-5,-1.4144070736454437e-8,-0.002379024159088545,-2.214660348294054e-5,-1.4009774292460906e-8,-0.0023790344674725033,-2.209831973031592e-5,-1.395206580492697e-8,-0.0023790533562057336,-2.2124111902023713e-5,-1.3982415286808531e-8,-0.002379052917494198,-2.222265873839312e-5,-1.4099513692685225e-8,-0.0023790067355613062,-2.238139064397462e-5,-1.428869841454831e-8,-0.002378893869389061,-2.257747476862916e-5,-1.4523091866730754e-8,-0.002378702581053121,-2.2780337278386994e-5,-1.476653436627111e-8,-0.002378433361551305,-2.2955662245878917e-5,-1.4978254730954575e-8,-0.002378100828725866,-2.3070719458652143e-5,-1.511914018072533e-8,-0.0023777339193535064,-2.310095367991105e-5,-1.515956714522654e-8,-0.0023773732909614727,-2.303748192499462e-5,-1.5088399696609955e-8,-0.0023770645160716658,-2.2893966475516838e-5,-1.492131520640025e-8,-0.002376846389675512,-2.2709585344523315e-5,-1.4704506770614907e-8,-0.0023767362857042957,-2.2543662682762967e-5,-1.4508420483594385e-8,-0.0023767187552697256,-2.2459283627088534e-5,-1.4408307234147157e-8,-0.0023767459611238515,-2.2499820209175073e-5,-1.445625065299755e-8,-0.0023767538670920077,-2.2670163085399482e-5,-1.4658709621930782e-8,-0.0023766872411040843,-2.2934727415897178e-5,-1.4973964372283597e-8,-0.0023765193201164465,-2.323369224805631e-5,-1.5331258141108677e-8,-0.0023762563410213845,-2.350669143427009e-5,-1.5658866089500266e-8,-0.002375928430938125,-2.371079089789632e-5,-1.5905466616878e-8,-0.0023755754730009244,-2.382701217823089e-5,-1.6047996748580552e-8,-0.0023752354105984904,-2.3857755177899014e-5,-1.6088754695381856e-8,-0.002374937643938984,-2.3820288416794153e-5,-1.6047823960984603e-8,-0.002374700710601401,-2.3740166302795695e-5,-1.5955340321399732e-8,-0.0023745323579410426,-2.364615831678585e-5,-1.584546360315411e-8,-0.002374430478790293,-2.356666639934087e-5,-1.575205426032653e-8,-0.002374384221762089,-2.352701024171114e-5,-1.57053729084508e-8,-0.0023743752258978223,-2.3547031862098734e-5,-1.572919102890182e-8,-0.0023743792463522813,-2.3638741087943782e-5,-1.5837991897107692e-8,-0.002374368580960303,-2.380412406762251e-5,-1.60343866710735e-8,-0.002374315566041234,-2.403369636554169e-5,-1.6307405665562255e-8,-0.0023741969508027684,-2.4306554286211768E-05,-1.663253558578559e-8,-0.0023739984897390765,-2.4592488041431972e-5,-1.6974166769903272e-8,-0.0023737187937815855,-2.485635257581502e-5,-1.729069822860392e-8,-0.0023733713634909127,-2.506433547134887e-5,-1.75419012861819e-8,-0.002372983923689407,-2.5191127286277645e-5,-1.769739737193478e-8,-0.002372594652471399,-2.5226659292504724e-5,-1.774469317666995e-8,-0.0023722453489884105,-2.518097690876975e-5,-1.7695084665231785e-8,-0.0023719720500917853,-2.508558541252764e-5,-1.758542950683843e-8,-0.0023717945137316262,-2.4989429346639012e-5,-1.7473550411127092e-8,-0.002371707467356645,-2.494832237534192e-5,-1.7425795584798645e-8,-0.002371677894372136,-2.5008867215187453e-5,-1.7497939205762146e-8,-0.0023716521953735695,-2.519167607485704e-5,-1.7715125311405072e-8,-0.002371573067713854,-2.548183725590846e-5,-1.8060341886620035e-8,-0.0023713996123746663,-2.5833052724984733e-5,-1.8479137373701417e-8,-0.002371120733790304,-2.6184543627960917e-5,-1.8899572452170946e-8,-0.002370755545988175,-2.6481976563885553e-5,-1.925703522704526e-8,-0.0023703426289241364,-2.6692240399045317e-5,-1.951183288718046e-8,-0.002369925545652223,-2.6807480392539526e-5,-1.9654094044252732e-8,-0.0023695414256623836,-2.6840554567015164e-5,-1.969852847864199e-8,-0.0023692152111846727,-2.681698378371743e-5,-1.9675010651785046e-8,-0.0023689586030738027,-2.676742403134865e-5,-1.961971546979294e-8,-0.002368771517557994,-2.672230169153053e-5,-1.9568738474777108e-8,-0.0023686442754798733,-2.6708491821190418e-5,-1.9554090992955217e-8,-0.0023685596467347297,-2.6747237733667733e-5,-1.960116950419851e-8,-0.0023684946354959537,-2.68525198499682e-5,-1.97267938434712e-8,-0.002368422377939945,-2.7029396546161804e-5,-1.9937245693158044e-8,-0.002368314731930507,-2.7272358283705946e-5,-2.0226327583010683e-8,-0.002368145999280894,-2.7564325967266348e-5,-2.0574158419038293e-8,-0.0023678977178564387,-2.7877297359742607e-5,-2.0947880438817348e-8,-0.002367563716932125,-2.8175607003251493e-5,-2.13054362009557e-8,-0.0023671538835179904,-2.842219417818171e-5,-2.1602912348808545e-8,-0.0023666947656918185,-2.8587099112517685e-5,-2.1804557557978034e-8,-0.002366225711058261,-2.865603679897383e-5,-2.1892948933762033e-8,-0.0023657906850576426,-2.8636207775475263e-5,-2.1875955583981355e-8,-0.0023654275601418958,-2.855700316341736e-5,-2.178772414823076e-8,-0.0023651577407058874,-2.8464659629023123e-5,-2.168254086275059e-8,-0.002364979157822262,-2.8411626526095733e-5,-2.162241058543541e-8,-0.0023648650418965824,-2.8442979454826838e-5,-2.166103733977592e-8,-0.0023647696710966484,-2.858341235909699e-5,-2.182833892955203e-8,-0.0023646404647817425,-2.8828964162584613e-5,-2.2120438590644107e-8,-0.002364433315624853,-2.9147094222646294e-5,-2.2499504905555506e-8,-0.0023641258489594833,-2.9486173871872614e-5,-2.2904806040155516e-8,-0.0023637232753826293,-2.979130710829397e-5,-2.3271375506734424e-8,-0.0023632546433513643,-3.0020135017275484e-5,-2.3548762139194928e-8,-0.002362761919778162,-3.0152532930312014e-5,-2.371261331000258e-8,-0.002362287259213515,-3.019176737033716e-5,-2.3766181246292998e-8,-0.002361863354709199,-3.015895406508579e-5,-2.3733906423839642e-8,-0.0023615089325091636,-3.0084812691876054e-5,-2.3651770841389847e-8,-0.00236122863993826,-3.0002168291456246e-5,-2.355846990290136e-8,-0.002361015342081342,-2.9940748794497447e-5,-2.3489231721847384e-8,-0.002360853090462664,-2.99242064708113e-5,-2.347223119682423e-8,-0.0023607198261957722,-2.9968579872684983e-5,-2.352671480071416e-8,-0.0023605896206938806,-3.008134175253829e-5,-2.3661849584525067e-8,-0.002360434817332799,-3.0260449420114613e-5,-2.3875596082544623e-8,-0.002360228724551759,-3.049336232044938e-5,-2.4153533560309604e-8,-0.002359949398259028,-3.0756647438100245e-5,-2.4468344706144205e-8,-0.0023595845450922696,-3.1017291850921676e-5,-2.4781284325725616e-8,-0.0023591366902662777,-3.1236974924948935e-5,-2.5047141991886597e-8,-0.0023586265980894577,-3.1379935910133564e-5,-2.5223485405296768e-8,-0.0023580922330621156,-3.1423318194842274e-5,-2.5282880705071384e-8,-0.002357581446433621,-3.136654245445751e-5,-2.5224014627911062e-8,-0.0023571393504713037,-3.123511772789739e-5,-2.507629936540768e-8,-0.0023567945569627356,-3.107585378526121e-5,-2.4894381030997065e-8,-0.002356549808293787,-3.094425143746427e-5,-2.474345004782824e-8,-0.0023563808398743354,-3.088856588907149e-5,-2.468058353057825e-8,-0.002356243673347264,-3.093631165990455e-5,-2.473883210055294e-8,-0.0023560873309623623,-3.108742146766624e-5,-2.491898425872327e-8,-0.002355867681615853,-3.131543790559243e-5,-2.5190695953120915e-8,-0.0023555585115042363,-3.157564626292947e-5,-2.5501820575724358e-8,-0.0023551570793018816,-3.1817414987353845e-5,-2.5792819079502532e-8,-0.0023546830395721335,-3.199708556138092e-5,-2.601196397786125e-8,-0.0023541715928763573,-3.2087761735616844e-5,-2.612699814404651e-8,-0.0023536634728575476,-3.208356074308803e-5,-2.6130313106072467e-8,-0.002353195112875602,-3.199796079202877e-5,-2.6037164980856268e-8,-0.0023527917127598285,-3.185788963483199e-5,-2.5878832104811108e-8,-0.0023524643421163408,-3.1696231806253835e-5,-2.569384848742031e-8,-0.002352210558042157,-3.15451429795799e-5,-2.5520122001298037e-8,-0.002352017095867703,-3.1431404225224024e-5,-2.5389404645823923e-8,-0.0023518632011028735,-3.137387309610943e-5,-2.532421829510982e-8,-0.0023517237164243985,-3.138241693585632e-5,-2.5336544634470662e-8,-0.0023515716747720653,-3.1457557889187125e-5,-2.542738407693742e-8,-0.002351380666688492,-3.159026777706401e-5,-2.5586503563180176e-8,-0.002351127544409854,-3.1761819323126654e-5,-2.5792232842799336e-8,-0.002350795997438297,-3.194420346482523e-5,-2.601189004377488e-8,-0.00235038109753939,-3.210218902073709e-5,-2.620411988036901e-8,-0.0023498939766626002,-3.2198362784118887e-5,-2.6324761207664516e-8,-0.002349364441336059,-3.2201906185988056e-5,-2.6337171516754927e-8,-0.002348838300113838,-3.2099820884316304e-5,-2.622549250364978e-8,-0.002348367104865175,-3.1906193387378433E-05,-2.6005638953133388e-8,-0.002347991928908947,-3.16632964565759e-5,-2.572670334096174e-8,-0.0023477278385863123,-3.1430895046698076e-5,-2.5458524871709287e-8,-0.0023475573302447783,-3.1266834683295797e-5,-2.526903432937616e-8,-0.0023474365947856223,-3.1207840834265524e-5,-2.5201788974958383e-8,-0.0023473111312674834,-3.125926073193481e-5,-2.5263855985966862e-8,-0.0023471329217680113,-3.139668630853095e-5,-2.5427484190962568e-8,-0.0023468725828316842,-3.157629805487812e-5,-2.564195034641037e-8,-0.00234652400711633,-3.174838223286182e-5,-2.5849203831761563e-8,-0.0023461023891960834,-3.1869477830964374e-5,-2.5998061315297644e-8,-0.0023456379459007243,-3.191071358278629e-5,-2.6054089874945166e-8,-0.002345167714297938,-3.1861618822297345e-5,-2.6004274687434745e-8,-0.0023447273964050676,-3.1729710102991125e-5,-2.5856743363241975e-8,-0.0023443447623778383,-3.15367263237694e-5,-2.5636504725218675e-8,-0.002344035611415732,-3.1312828941514695e-5,-2.5378716588854288e-8,-0.0023438025868741026,-3.1090321324122036e-5,-2.5121307043493483e-8,-0.002343636419494298,-3.0898215687290654e-5,-2.4898533605619872e-8,-0.0023435187346924568,-3.075840762917019e-5,-2.473640851696107e-8,-0.002343425470101371,-3.06836209512552e-5,-2.4650217468068794e-8,-0.002343330156203922,-3.067678824239108e-5,-2.46437581014699e-8,-0.0023432067557343844,-3.0731268964403044e-5,-2.4709591242115973e-8,-0.002343032205144756,-3.083142896996042e-5,-2.482971769728214e-8,-0.0023427890317182145,-3.09534849684997e-5,-2.4976536733214626e-8,-0.002342468429998982,-3.1066960867543575e-5,-2.5114480866863458e-8,-0.0023420738829506476,-3.113759753821509e-5,-2.520334251191813e-8,-0.0023416245655075696,-3.113286617338482e-5,-2.5204692814982757e-8,-0.002341156456037676,-3.1030702451985074e-5,-2.5092155875587517e-8,-0.0023407180452088712,-3.083007768640861e-5,-2.4863906224778936e-8,-0.0023403583393829482,-3.055874873840108e-5,-2.4551880478986413e-8,-0.002340109110049135,-3.027131810595971e-5,-2.421961909495806e-8,-0.0023399695530012623,-3.0033690127916367e-5,-2.394416454197952e-8,-0.0023399035996637175,-2.9898874983898596e-5,-2.378781857784365e-8,-0.0023398534173924984,-2.9886919236503446e-5,-2.3774659522504135e-8,-0.002339761711113448,-2.9979953784273124e-5,-2.388461211409085e-8,-0.0023395905205925225,-3.0132912884441697e-5,-2.4065731184666787e-8,-0.002339328969507674,-3.0291463113513845e-5,-2.4254908440399182e-8,-0.0023389905263682936,-3.0407909014329455e-5,-2.439632805788379e-8,-0.002338604647812188,-3.0450610353352113e-5,-2.4452510933726005e-8,-0.002338207386718835,-3.0406942615971795e-5,-2.4407957962391716e-8,-0.002337833512955816,-3.0281802581374335e-5,-2.4267646192649814e-8,-0.002337510916804099,-3.009374007485284e-5,-2.405271127085375e-8,-0.00233725717872705,-2.9870050109659613e-5,-2.379481298482102e-8,-0.0023370780896862574,-2.96415499392353e-5,-2.3530020163429226e-8,-0.0023369679571642664,-2.943765111817507e-5,-2.3292964938693384e-8,-0.002336911380731853,-2.928228272071026e-5,-2.311196745938867e-8,-0.0023368860519105425,-2.9191004014698512e-5,-2.3005572673000774e-8,-0.0023368660995786595,-2.9169474421886248e-5,-2.2980719814710166e-8,-0.002336825467155114,-2.921325593941368e-5,-2.3032512896595408e-8,-0.0023367409423963475,-2.9308629309781252e-5,-2.3145193486284356e-8,-0.002336594789812839,-2.94340434461076e-5,-2.329383537317645e-8,-0.002336377141683103,-2.9562078747041886e-5,-2.3446595994696407e-8,-0.0023360882937399465,-2.9662099579462933e-5,-2.3567732219797592e-8,-0.0023357408585416017,-2.9704065354320472e-5,-2.36219691020052e-8,-0.0023353611169372288,-2.9664178807460198e-5,-2.3581074777115405e-8,-0.002334987901996926,-2.953256184083392e-5,-2.3432902238347995e-8,-0.002334666656879615,-2.9321444023828176e-5,-2.3191111499019182e-8,-0.002334437144125591,-2.906967526378198e-5,-2.2900614292587276e-8,-0.0023343170286952335,-2.8837540628692366e-5,-2.263164135915559e-8,-0.002334289377364724,-2.868863915936848e-5,-2.245863079739621e-8,-0.0023343042731189534,-2.8664576401788524e-5,-2.243065985991554e-8,-0.002334297427240077,-2.8766728884431434e-5,-2.2550060161150142e-8,-0.00233421602436304,-2.8956937999179782e-5,-2.277304822604038e-8,-0.0023340366493231914,-2.9175695277364925e-5,-2.3030723691705274e-8,-0.0023337675567428337,-2.9365148437702835e-5,-2.325572494540632e-8,-0.002333439019167699,-2.948499872544599e-5,-2.3400714149062195e-8,-0.002333090235900311,-2.9517803647735512e-5,-2.3444668908795366e-8,-0.002332758701346869,-2.9466638538369463e-5,-2.3390385484474364e-8,-0.0023324738052357035,-2.934937562502968e-5,-2.3258055105401835e-8,-0.0023322540424882687,-2.919255582833955e-5,-2.3078281732160556e-8,-0.0023321064600515273,-2.902614663617285e-5,-2.2885999487207492e-8,-0.002332027286009202,-2.8879263050207602e-5,-2.271540058262342e-8,-0.0023320033619865835,-2.877662704188809e-5,-2.259567613496163e-8,-0.002332014289946477,-2.873576097567269e-5,-2.2547631244607782e-8,-0.002332035177135321,-2.8765014379972653e-5,-2.2581326280258576e-8,-0.0023320398449503863,-2.8862571973660708e-5,-2.2694919143851268e-8,-0.0023320042471653172,-2.9016654866027363e-5,-2.287492871831799e-8,-0.0023319096779583115,-2.9206946607571382e-5,-2.3097917898279694e-8,-0.002331745434296553,-2.940702053860624e-5,-2.333330260051453e-8,-0.0023315107913132412,-2.9587554741398894e-5,-2.354703004535643e-8,-0.002331216183994399,-2.9720241445388588e-5,-2.370604059396504e-8,-0.0023308833968589734,-2.9782371874826208e-5,-2.378354402409868e-8,-0.0023305442821816677,-2.976211745161164e-5,-2.376519028712881e-8,-0.002330237019842478,-2.9664138028036154e-5,-2.3655730605611676e-8,-0.002329998741183291,-2.9513937315933643e-5,-2.3484296706424633e-8,-0.0023298543227104943,-2.935776247905231e-5,-2.3304483190610554e-8,-0.0023298039688696283,-2.9254146272590037e-5,-2.3184600111912306e-8,-0.0023298161627486316,-2.9255771124284795e-5,-2.3186513526067538e-8,-0.002329833717182933,-2.9387407680729007e-5,-2.3339799540173714e-8,-0.00232979429485865,-2.963251445919433e-5,-2.3625939095795707e-8,-0.0023296555485235837,-2.993876684354111e-5,-2.3984573422930422e-8,-0.002329410031430962,-3.0240089226068864e-5,-2.433902191722381e-8,-0.002329082684861528,-3.048133910260082e-5,-2.4624941076546366e-8,-0.002328716252266335,-3.063272313348873e-5,-2.4807118980201846e-8,-0.0023283552432151315,-3.0691090518933916e-5,-2.4881121231374615e-8,-0.002328035235814446,-3.067316204035687e-5,-2.486564617259907e-8,-0.002327778453652459,-3.060672619689269e-5,-2.4792504271784795e-8,-0.0023275936390781573,-3.052324005011218e-5,-2.4698123022970693e-8,-0.002327477917828302,-3.0452785078251434e-5,-2.461765146651857e-8,-0.002327419112590265,-3.0420884134364204E-05,-2.458113394257909e-8,-0.0023273980040969685,-3.0446326357327403e-5,-2.4610839446448034e-8,-0.002327390669521878,-3.0539531096370326e-5,-2.4719266183936192e-8,-0.0023273711094918687,-3.070139397965835e-5,-2.4907774784639605e-8,-0.002327314298389271,-3.0922803788878494e-5,-2.5166047977091938e-8,-0.002327199604182002,-3.118523180180453e-5,-2.5472802828543438e-8,-0.0023270141555905726,-3.146275582275373e-5,-2.579813850369303e-8,-0.002326755507257778,-3.1725524753218145e-5,-2.6107509797618743e-8,-0.002326433025242352,-3.194433915074523e-5,-2.636696380227279e-8,-0.00232606757107646,-3.2095816875852493E-05,-2.6549064620552972e-8,-0.0023256892347763903,-3.216744119251998e-5,-2.663874128588696e-8,-0.0023253330548705857,-3.216173673953351e-5,-2.6638224765391106e-8,-0.002325032753407156,-3.209873777588853e-5,-2.6570101510359574e-8,-0.0023248127299698297,-3.201549252585091e-5,-2.6476970450584947e-8,-0.002324679419257254,-3.1960909325668365e-5,-2.641563798078472e-8,-0.002324614738368727,-3.198471760129885e-5,-2.6444333423830437e-8,-0.0023245759518624605,-3.2121629871326e-5,-2.6604171937243653e-8,-0.002324505785473568,-3.237602913514e-5,-2.6901108196581215e-8,-0.0023243518127423596,-3.271591879496891e-5,-2.7298653087985366e-8,-0.00232408675837698,-3.308237216229446e-5,-2.772870037338478e-8,-0.0023237183421038277,-3.341134600686158e-5,-2.8116827565107905e-8,-0.0023232834120907914,-3.365603424276712e-5,-2.8408283829963784e-8,-0.0023228315250686865,-3.379852594585868e-5,-2.8581601521190148e-8,-0.0023224081917482394,-3.384823308876176e-5,-2.8646918820079517e-8,-0.0023220447513682056,-3.3832392487888304e-5,-2.8635163154902712e-8,-0.0023217556857669294,-3.378539642682306e-5,-2.8585851446400122e-8,-0.0023215406467797794,-3.374081042009061e-5,-2.8537897313167375e-8,-0.002321388188291431,-3.3726795999537757e-5,-2.8524238705810844e-8,-0.002321279357326137,-3.376398701175925e-5,-2.8569237172436706e-8,-0.002321190580067218,-3.3864561252015965e-5,-2.8687469509032147e-8,-0.0023210960815719848,-3.403170234189584e-5,-2.8883032294239802e-8,-0.0023209703112198727,-3.425921865422195e-5,-2.9149091545929388e-8,-0.0023207907692627456,-3.453153525414017e-5,-2.9467892708359517e-8,-0.002320541348280485,-3.4824632907782434e-5,-2.9811852888919886e-8,-0.002320215787982576,-3.510859047522046e-5,-3.014647119465895e-8,-0.002319820326628823,-3.5352020534393274e-5,-3.0435397604764066e-8,-0.002319374429235887,-3.5528027890910064e-5,-3.064726176518535e-8,-0.0023189086929537852,-3.562058707993201e-5,-3.0763027321289934e-8,-0.0023184596969337903,-3.562967431567573e-5,-3.078198150000386e-8,-0.0023180625159862473,-3.557348082881343e-5,-3.072444153370548e-8,-0.0023177424037032486,-3.548664144440317e-5,-3.062992075551395e-8,-0.0023175074984734543,-3.5414226963611394e-5,-3.0550393228261676e-8,-0.0023173444808164832,-3.5402047537825155e-5,-3.053919267474974e-8,-0.002317219043515323,-3.548478675955916e-5,-3.063722510387765e-8,-0.0023170825452282313,-3.567474791693208e-5,-3.085971138660794e-8,-0.0023168847150472982,-3.595522696647335e-5,-3.118819869005432e-8,-0.0023165894160324624,-3.628263070896687e-5,-3.157275232013399e-8,-0.0023161874027681608,-3.659879209134966e-5,-3.194610912976707e-8,-0.002315699674318987,-3.6849589557777495e-5,-3.224527727736699e-8,-0.002315169322935829,-3.7001624225642415e-5,-3.2430960432418255e-8,-0.002314646199700832,-3.704960690848625e-5,-3.249625130896201e-8,-0.0023141720768090047,-3.701289220350198e-5,-3.246278529929417e-8,-0.0023137719944856,-3.692533958583261e-5,-3.2369181497699095e-8,-0.002313452787336121,-3.682436937453514e-5,-3.225850415814049e-8,-0.002313206349815514,-3.674303927821273e-5,-3.216911319350878e-8,-0.002313014513893187,-3.6705975238209506e-5,-3.21298653443614e-8,-0.002312853494672486,-3.6728114464930174e-5,-3.215852030546475e-8,-0.0023126972338266515,-3.681481612065799e-5,-3.226175333094992e-8,-0.0023125198655322456,-3.696232465768661e-5,-3.24356389814037e-8,-0.002312297893017724,-3.7158178604489365e-5,-3.266612338087536e-8,-0.0023120126639769563,-3.7381726521067834e-5,-3.292962936131338e-8,-0.002311653424383115,-3.760539504033395e-5,-3.319450237088803e-8,-0.0023112206387045776,-3.7797568417562995e-5,-3.3424282093674193e-8,-0.002310728536788081,-3.7927679776685745e-5,-3.3583518129125895e-8,-0.0023102052694704335,-3.7973269632081315e-5,-3.3645883688399196e-8,-0.002309689114953737,-3.792741024238655e-5,-3.3602769741033175e-8,-0.002309220367796046,-3.780365018678395e-5,-3.34690861984953e-8,-0.0023088306454635615,-3.763560952953059e-5,-3.328295822689161e-8,-0.0023085331437765486,-3.7470095324169245e-5,-3.30979876994702e-8,-0.0023083175552887736,-3.7355299923970754e-5,-3.296981668241202e-8,-0.0023081517291295645,-3.732774019023125e-5,-3.2941121239366296e-8,-0.0023079897002703125,-3.740204716129852e-5,-3.302971182509186e-8,-0.0023077837234663535,-3.7566599907923365e-5,-3.322321468544985e-8,-0.0023074969972720206,-3.778618699150824e-5,-3.348181192736664e-8,-0.002307113642460123,-3.801111136025596e-5,-3.374850764245679e-8,-0.002306642967714749,-3.819047303514916e-5,-3.3964389987148476e-8,-0.0023061164179579287,-3.8285780849737995e-5,-3.40844388236443e-8,-0.0023055780533455137,-3.828042081343265e-5,-3.408864550347391e-8,-0.0023050720265702773,-3.818189606197478e-5,-3.3984813393723e-8,-0.0023046316398957264,-3.801683262139339e-5,-3.3802987367837267e-8,-0.00230427334288954,-3.7821682524135505e-5,-3.358486019035794e-8,-0.0023039963644423222,-3.7633111972824855e-5,-3.337272686138091e-8,-0.002303786336992908,-3.748100255910153e-5,-3.320135317605305e-8,-0.0023036204437704402,-3.738497046118624e-5,-3.3093833427999516e-8,-0.002303472191629436,-3.735370107695463e-5,-3.306068870435814e-8,-0.002303315004370737,-3.738581151208172e-5,-3.310077586295026e-8,-0.0023031247168510474,-3.7471158388023855e-5,-3.32027746012847e-8,-0.002302881512812013,-3.759204402485969e-5,-3.334659244660564e-8,-0.002302571933303701,-3.772437161974421e-5,-3.3504698526810776e-8,-0.0023021913377570913,-3.7839318120416736e-5,-3.364401288936653e-8,-0.0023017466592312736,-3.790639624397905e-5,-3.3729365113627754e-8,-0.002301258499438132,-3.789868982799408e-5,-3.3729469251606456e-8,-0.0023007607416336475,-3.780025860121621e-5,-3.362545368835861e-8,-0.0023002955727393715,-3.761398422436507e-5,-3.341996763976326e-8,-0.002299903135206751,-3.7366095073082776e-5,-3.314251715734096e-8,-0.002299608241321281,-3.7103131944292765e-5,-3.284613208267745e-8,-0.002299409859179875,-3.687991824381861e-5,-3.259369265324991e-8,-0.002299279285932504,-3.674229260682073e-5,-3.243819215569253e-8,-0.002299168823546775,-3.6712133551511284e-5,-3.240551750739637e-8,-0.002299027108588892,-3.678121604662647e-5,-3.248721326687466e-8,-0.0022988143521173038,-3.6915489318077446e-5,-3.2645093229978927e-8,-0.0022985121434507642,-3.706652291671608e-5,-3.282408232012828e-8,-0.0022981259731840605,-3.718510344513982e-5,-3.296765596479805e-8,-0.002297681444338649,-3.723291069296564e-5,-3.3031266622567177e-8,-0.0022972163826716816,-3.7189964304819385e-5,-3.299108395567988e-8,-0.002296771289655474,-3.705699893642229e-5,-3.284699771750507e-8,-0.0022963804162048507,-3.685301926143306e-5,-3.2620069474865724e-8,-0.0022960653412444033,-3.66092080660818e-5,-3.234570517089325e-8,-0.0022958321994601843,-3.6361104881873565e-5,-3.206471491834107e-8,-0.002295672602594345,-3.6141216362085723e-5,-3.181475278986125e-8,-0.002295567237924504,-3.5973699239903435e-5,-3.162406563040041e-8,-0.0022954906243840873,-3.5871742882865936e-5,-3.150833328403298e-8,-0.002295415668514197,-3.583734289021038e-5,-3.1470303577740756e-8,-0.002295317231199662,-3.5862619387422194e-5,-3.15012747362056e-8,-0.002295174587684972,-3.593175025312556e-5,-3.158334026307848e-8,-0.0022949731503511582,-3.6022919077861825e-5,-3.169165951737354e-8,-0.0022947059593891967,-3.6110200777476796e-5,-3.1796616976641045e-8,-0.0022943752972072132,-3.616576445549112e-5,-3.186629056886203e-8,-0.002293994395917849,-3.616308491839482e-5,-3.1870055583428156e-8,-0.0022935884913046806,-3.608188698839053e-5,-3.1784218012190775e-8,-0.002293193570220022,-3.591490428985524e-5,-3.159981966187581e-8,-0.002292850700555697,-3.567488665407547e-5,-3.1330816136700846e-8,-0.0022925949121289655,-3.539799888834784e-5,-3.101814903088958e-8,-0.002292441079759657,-3.5138654460845667e-5,-3.072396888884776e-8,-0.0022923737482313526,-3.495377210004042e-5,-3.051367324612897e-8,-0.0022923487357085484,-3.4881645478195986e-5,-3.043169702193616e-8,-0.0022923082878944408,-3.492651926994169e-5,-3.048374540670587e-8,-0.0022922023645509603,-3.5057777584302726e-5,-3.063565736187704e-8,-0.002292004823110608,-3.522321745129158e-5,-3.0828335408719365e-8,-0.002291718031987991,-3.536782916311345e-5,-3.099901295008251e-8,-0.0022913672330241424,-3.544908418763723e-5,-3.109866179650461e-8,-0.002290990059070643,-3.544468044302114e-5,-3.1100956371175926e-8,-0.0022906260283061795,-3.535334262818601e-5,-3.1003445892457103e-8,-0.0022903084934227853,-3.5191150650947184e-5,-3.082366001102285e-8,-0.002290059645962504,-3.4985740590012e-5,-3.059271116004469e-8,-0.002289888308889336,-3.476990829758171e-5,-3.034806608016834e-8,-0.002289790112933232,-3.457553303386381e-5,-3.0126527996035566e-8,-0.0022897496397346197,-3.442855427528838e-5,-2.995832382862933e-8,-0.002289743927638933,-3.434557978525591e-5,-2.986303752963534e-8,-0.002289746588173612,-3.433235628935457e-5,-2.984772570762622e-8,-0.002289731806192985,-3.438399705495003e-5,-2.9907130752155833e-8,-0.0022896776371395563,-3.448658144544781e-5,-3.0025539997263514e-8,-0.002289568333240068,-3.4619516180843974e-5,-3.0179546880832127e-8,-0.002289395830989697,-3.47581192864351e-5,-3.034104020878307e-8,-0.0022891606980330746,-3.487624615385044e-5,-3.048017863245395e-8,-0.0022888727561433233,-3.494909690242651e-5,-3.0568516096956604e-8,-0.0022885513883073552,-3.4956571873741554e-5,-3.058275352336701e-8,-0.002288225022291335,-3.4887629910986334e-5,-3.050971134872694e-8,-0.0022879285346280604,-3.474558680788467e-5,-3.0352495822772635e-8,-0.002287697014005668,-3.4552914595581084e-5,-3.013619110840197e-8,-0.002287555258528512,-3.4352264826514714e-5,-2.990924381258495e-8,-0.002287505296293813,-3.419939650252042e-5,-2.9735499630763315e-8,-0.0022875185392014596,-3.414608973943245e-5,-2.9674650423240414e-8,-0.002287540654767576,-3.421841512072958e-5,-2.975725826269698e-8,-0.0022875109191809696,-3.44028369555647e-5,-2.9968681291149824e-8,-0.0022873866431173677,-3.4650463730046105e-5,-3.025373403994287e-8,-0.002287158332342123,-3.489747604808045e-5,-3.05398504214709e-8,-0.0022868484445149025,-3.5088852879194874e-5,-3.076405861695239e-8,-0.0022864982748903593,-3.519317267669936e-5,-3.0889870385194194e-8,-0.002286152562989151,-3.520525313625685e-5,-3.091044534452543e-8,-0.002285848351995372,-3.514064936767193e-5,-3.084259232463975e-8,-0.0022856095545583004,-3.5027359972136336e-5,-3.071759518882632e-8,-0.0022854458582351883,-3.4898128170332654e-5,-3.057260162184731e-8,-0.00228535406658743,-3.4784542000901826e-5,-3.0443888195242704e-8,-0.0022853205545476122,-3.471284955278595e-5,-3.0361936066289834e-8,-0.0022853242782383083,-3.4701131164836125e-5,-3.034799776992067e-8,-0.0022853401172956323,-3.475768108400181e-5,-3.0412079618106474e-8,-0.0022853423369857883,-3.488055943683937e-5,-3.055234935450222e-8,-0.0022853079331452636,-3.505829657473036e-5,-3.075595068991225e-8,-0.002285219540357508,-3.5271714452898415e-5,-3.1001145596984345e-8,-0.0022850675526555806,-3.5496617417606936e-5,-3.12604400979373e-8,-0.0022848513167228906,-3.5706935033342264e-5,-3.150417106161792e-8,-0.0022845794630886704,-3.587803665272236e-5,-3.170422273669897e-8,-0.0022842694256383967,-3.599011192601114e-5,-3.183778648177624e-8,-0.00228394612191299,-3.6031573527607656e-5,-3.1891182357691236e-8,-0.002283639559272516,-3.6002497987339216e-5,-3.1863829412209876e-8,-0.0022833807000028155,-3.591781523569677e-5,-3.17720571397393e-8,-0.002283194835117489,-3.580895633737797e-5,-3.1651234007313374e-8,-0.0022830926687873554,-3.572151453512309e-5,-3.155331255203707e-8,-0.0022830615120185546,-3.57062013456485e-5,-3.1536574359696766e-8,-0.002283061910144253,-3.5802515052971905e-5,-3.1646865496677e-8,-0.0022830358716624693,-3.602024681505544e-5,-3.1896238479571526e-8,-0.002282927452508825,-3.6329876875859376e-5,-3.2251745516056244e-8,-0.0022827062816265977,-3.667107036558002e-5,-3.264498114105585e-8,-0.0022823796709535715,-3.697658131461953e-5,-3.299928501542816e-8,-0.0022819864232603475,-3.719735460090399e-5,-3.325834215160285e-8,-0.0022815785791103415,-3.731532145924846e-5,-3.340080377913226e-8,-0.0022812032084957965,-3.734128205682896e-5,-3.3438034270071183e-8,-0.002280891871937716,-3.7304369843453694e-5,-3.3402379181189025e-8,-0.00228065814223643,-3.724061603780327e-5,-3.333439792808469e-8,-0.0022805000038872204,-3.718451764462349e-5,-3.327337443004344e-8,-0.0022804039844390635,-3.7164175330215406e-5,-3.325171023981485e-8,-0.002280349211641098,-3.7198996010101034e-5,-3.3292116454290506e-8,-0.0022803108906574855,-3.729879835377055e-5,-3.3406389414515064e-8,-0.002280263357184188,-3.746369139111816e-5,-3.359514042205903e-8,-0.0022801829142725643,-3.76845561343038e-5,-3.3848312986735143e-8,-0.0022800505440541212,-3.794419075362827e-5,-3.4146529008746734e-8,-0.002279854394613768,-3.821932509749697e-5,-3.446344080378021e-8,-0.002279591667380771,-3.8483592197162534e-5,-3.4769134737453335e-8,-0.0022792694769532365,-3.8711202674219674e-5,-3.503427192200282e-8,-0.002278904453787725,-3.888090559245803e-5,-3.523451107453436e-8,-0.002278520994022731,-3.897981593858639e-5,-3.5354790439935546e-8,-0.0022781481387727765,-3.900661067575245e-5,-3.539296714173588e-8,-0.002277815196272408,-3.897358681368924e-5,-3.536228182941742e-8,-0.0022775462453310945,-3.8907078916294634e-5,-3.5292063500544346e-8,-0.0022773537578315915,-3.88453723888866e-5,-3.5225611058902015e-8,-0.0022772323066882973,-3.88328268780596e-5,-3.5213664861948535e-8,-0.002277154719218136,-3.89093864059176e-5,-3.5302432695555914e-8,-0.002277074301351357,-3.909671606337604e-5,-3.551757119061668e-8,-0.0022769361938568297,-3.93858582620144e-5,-3.584980135264396e-8,-0.0022766965332619883,-3.9734321357865546e-5,-3.625133407898208e-8,-0.002276341115211891,-4.007817531691193e-5,-3.664954907985626e-8,-0.0022758922917568173,-4.035551223226274e-5,-3.697373201351628e-8,-0.0022753992488523085,-4.0528709716748785e-5,-3.7180470529775404e-8,-0.0022749180581077707,-4.059371095721217e-5,-3.726429156698758e-8,-0.0022744933359550488,-4.057442247318822e-5,-3.7251455930854735e-8,-0.0022741491150162865,-4.0509294110553696e-5,-3.718495011122612e-8,-0.0022738888817427747,-4.043836498717976e-5,-3.7109976390399145e-8,-0.0022737006122365193,-4.0394935220934196e-5,-3.706454561541384e-8,-0.0022735628534328385,-4.0401953921682715e-5,-3.7075254422409025e-8,-0.0022734497848497666,-4.047142453162688e-5,-3.7156399239620105e-8,-0.0022733348583905645,-4.060512607912676e-5,-3.731060746631049e-8,-0.0022731934580261463,-4.0795705115488924e-5,-3.752998308750005e-8,-0.00227300512552994,-4.102789765037355e-5,-3.7797496246937914e-8,-0.0022727556876095496,-4.128004247365327e-5,-3.808875005360056e-8,-0.002272439315133133,-4.152626986166031e-5,-3.837450044928072e-8,-0.0022720601389120266,-4.173970137526162e-5,-3.862427282168575e-8,-0.0022716327599983676,-4.1896595491755895e-5,-3.8811002059216745e-8,-0.0022711810539608945,-4.1980908267824755e-5,-3.8916135263443654e-8,-0.00227073496835204,-4.1988409487146426e-5,-3.8934279948754235e-8,-0.002270325441507122,-4.192927899551331e-5,-3.8876227340469446e-8,-0.002269978122215947,-4.1828177158028644e-5,-3.8769219119330844e-8,-0.00226970702629286,-4.172123601459589e-5,-3.865378498185866e-8,-0.0022695094556672577,-4.1649926366732944e-5,-3.857700174244831e-8,-0.002269363629343624,-4.165219466353312e-5,-3.858250738357373e-8,-0.0022692306298698933,-4.175204263636338e-5,-3.869853604806306e-8,-0.0022690619905320303,-4.195007217268219e-5,-3.892687238355782e-8,-0.0022688127656313537,-4.22189359377569e-5,-3.923733305382498e-8,-0.0022684568851602466,-4.2507766167857475e-5,-3.9572560430991624e-8,-0.002267998326091102,-4.275672312180571e-5,-3.986449700076138e-8,-0.0022674714734245843,-4.291695195769548e-5,-4.005713795935709e-8,-0.0022669291597497737,-4.296662160132691e-5,-4.012487438155247e-8,-0.0022664242564903914,-4.2915295188340505e-5,-4.007760659904807e-8,-0.0022659940652150863,-4.279611123618072e-5,-3.995206908990567e-8,-0.002265653503930502,-4.265191244855833e-5,-3.979631362883339e-8,-0.0022653969340296893,-4.252261313043785e-5,-3.965552378432056e-8,-0.0022652046236925952,-4.243769493960012e-5,-3.95634861733223e-8,-0.002265049794477369,-4.241380155046763e-5,-3.9539697044729416e-8,-0.0022649041082798216,-4.245547864330964e-5,-3.9589986428501323e-8,-0.00226474124918325,-4.255711975844435e-5,-3.970856627954339e-8,-0.0022645391613217362,-4.270500455743162e-5,-3.988028806109427e-8,-0.0022642816799547678,-4.287910780361013e-5,-4.008272167427198e-8,-0.002263960087918555,-4.3054900809357125e-5,-4.028824466566982e-8,-0.002263574719130994,-4.320567695985923e-5,-4.0466687322319195e-8,-0.0022631362204558894,-4.330590165289405e-5,-4.058908270551296e-8,-0.0022626656639188536,-4.3335670173572484e-5,-4.063264302083518e-8,-0.0022621925719040524,-4.328569846595285e-5,-4.0586363627982455e-8,-0.0022617502460647106,-4.316153538197371e-5,-4.045582192050501e-8,-0.0022613686905826485,-4.298517863381172e-5,-4.02651379123331e-8,-0.002261066659628733,-4.279254577136207e-5,-4.0054328367112326e-8,-0.002260845254738966,-4.2626492298289355e-5,-3.9871642378719045e-8,-0.002260685452234943,-4.252671070386968e-5,-3.976228848354713e-8,-0.0022605509404802003,-4.251909481418603e-5,-3.9756384567982686e-8,-0.002260396131472639,-4.260760900980759e-5,-3.985954021720435e-8,-0.002260177694963087,-4.277131989594658e-5,-4.004914789052283e-8,-0.002259866766101412,-4.2968166060102e-5,-4.027830918497738e-8,-0.002259458210637815,-4.3145372744970057e-5,-4.048742944540769e-8,-0.0022589733613924707,-4.3254145791464096e-5,-4.062085419440258e-8,-0.002258454294531585,-4.326392054614321e-5,-4.064315339359069e-8,-0.0022579511436190353,-4.3170655978861896e-5,-4.0548734377790825e-8,-0.0022575073922757242,-4.2995916330466316e-5,-4.036104128218041e-8,-0.0022571489718927946,-4.2777865460527206e-5,-4.012258232791228e-8,-0.0022568805697357453,-4.255884861731508e-5,-3.988102778980891e-8,-0.0022566887016491335,-4.2374725671374876e-5,-3.967716426716014e-8,-0.002256548444902981,-4.2248875604791526e-5,-3.953799287615894e-8,-0.002256430457477919,-4.2190877177150564e-5,-3.9475031093020603e-8,-0.0022563063262742698,-4.219814048656945e-5,-3.9485967035225393e-8,-0.0022561518892659908,-4.225864272457631e-5,-3.9557654446514965e-8,-0.0022559490620141626,-4.235363463796422e-5,-3.9669178707093105e-8,-0.0022556869196150115,-4.245992921932744e-5,-3.9794503964805914e-8,-0.002255362650026142,-4.2551960746738174e-5,-3.990484416493067e-8,-0.00225498259128279,-4.260418776905965e-5,-3.9971363026047316e-8,-0.0022545629951551973,-4.259443556510106e-5,-3.996888136177645e-8,-0.002254129647814144,-4.2508371758274345e-5,-3.988086135327218e-8,-0.0022537151993712646,-4.234455193159232e-5,-3.970509132900266e-8,-0.00225335330209883,-4.2118407480589275e-5,-3.9458268320626675e-8,-0.0022530698916637996,-4.186263655252896e-5,-3.917660732834667e-8,-0.0022528740190121094,-4.162180095563857e-5,-3.8909958155369906e-8,-0.002252752217450626,-4.1441201489894646e-5,-3.870944411348118e-8,-0.0022526698614514173,-4.1353325375690816e-5,-3.861225482382609e-8,-0.0022525801000990234,-4.136713774543938e-5,-3.862947201208333e-8,-0.0022524373733573866,-4.146464933767827e-5,-3.8741929345072135e-8,-0.002252210525373519,-4.1605994325611274e-5,-3.89055852814104e-8,-0.0022518911377591767,-4.1740803405337114e-5,-3.906405012373955e-8,-0.0022514949999607,-4.182182996698903e-5,-3.9163825942864726e-8,-0.0022510569958787445,-4.181681135790668e-5,-3.916776403591502e-8,-0.002250621342141275,-4.171557236139564e-5,-3.906331946104076e-8,-0.0022502301294550285,-4.15308425955026e-5,-3.886378396708598e-8,-0.002249913449319389,-4.129306958437996e-5,-3.860271679338941e-8,-0.002249683726453224,-4.104130530740587e-5,-3.832383998911728e-8,-0.002249535283975047,-4.0813295369522146e-5,-3.8069884935159855e-8,-0.0022494483048860476,-4.0637702512655366e-5,-3.787370255806774e-8,-0.002249395075586441,-4.053008747505458e-5,-3.775352485809548e-8,-0.002249346228387429,-4.049258564563083e-5,-3.771239510768213e-8,-0.0022492755010270257,-4.0516052192387256e-5,-3.774046242612261e-8,-0.0022491626277783426,-4.058321264511812e-5,-3.7818520580070174e-8,-0.0022489947436900195,-4.0671780343274614e-5,-3.7921589641568395e-8,-0.002248766957445944,-4.075711343877572e-5,-3.8021986797907276e-8,-0.0022484826632076446,-4.081452585563666e-5,-3.8091951714669235e-8,-0.002248153838048646,-4.0821728247974105e-5,-3.8106341905870566e-8,-0.002247801079960905,-4.076195151424849e-5,-3.804605949402225e-8,-0.002247452593148405,-4.0628012018448585e-5,-3.790257146744856e-8,-0.0022471409301629466,-4.042682459236734e-5,-3.768302732502345e-8,-0.00224689646765886,-4.018263561138499e-5,-3.7414039313886286e-8,-0.0022467379334867687,-3.993603737751534e-5,-3.71407722402369e-8,-0.0022466629330224067,-3.973603731085064e-5,-3.6918205817805125e-8,-0.0022466437937668942,-3.962548372148706e-5,-3.679484541297912e-8,-0.0022466332626418345,-3.962510713746668e-5,-3.679475135912498e-8,-0.0022465795112438054,-3.972433968955547e-5,-3.690704831574807e-8,-0.002246443844399572,-3.988431149987231e-5,-3.7089012125681974e-8,-0.0022462127331009103,-4.005144641550452e-5,-3.728104124941213e-8,-0.002245899726127667,-4.017461828870116e-5,-3.742571513024981e-8,-0.0022455385610210964,-4.021870065905526e-5,-3.7482979092119534e-8,-0.002245171991501091,-4.017101257208119e-5,-3.743755699529912e-8,-0.0022448406857828573,-4.0040872064166135e-5,-3.729877117661851e-8,-0.002244574842630709,-3.985434389103751e-5,-3.709499167218068e-8,-0.00224438953153147,-3.964658315948225e-5,-3.6865281132306804e-8,-0.002244283739282433,-3.9453769098646514e-5,-3.6650395806950313e-8,-0.0022442425786291715,-3.9306138580895836e-5,-3.648483998275852e-8,-0.0022442417262513318,-3.9223235736532204e-5,-3.639130046745756e-8,-0.002244252825270072,-3.921193238763609e-5,-3.637818766334322e-8,-0.002244248580715095,-3.926701981343953e-5,-3.6440147045714485e-8,-0.002244206665010873,-3.9373614587264704e-5,-3.656072898333406e-8,-0.0022441120851505714,-3.9510449394149734e-5,-3.671615220159067e-8,-0.002243958158082218,-3.9653224799783987e-5,-3.687916687487293e-8,-0.002243746569982561,-3.977754481038861e-5,-3.702240992509356e-8,-0.0022434870012997396,-3.986143852984975e-5,-3.7121211995940224e-8,-0.002243196539261886,-3.9887788360821346e-5,-3.715623183345602e-8,-0.002242898748955786,-3.984704324325663e-5,-3.711640914072695e-8,-0.0022426218280860106,-3.974042123909537e-5,-3.7002547544910815e-8,-0.0022423948446182447,-3.9583186860967147e-5,-3.683110598566761e-8,-0.002242241179018976,-3.940641160112801e-5,-3.663638469156625e-8,-0.00224216956598242,-3.925442123747653e-5,-3.646787712775838e-8,-0.002242165743912653,-3.917522022806908e-5,-3.63796461283401e-8,-0.0022421904430927637,-3.92042809462743e-5,-3.641210968875951e-8,-0.0022421888363345576,-3.934800163595166e-5,-3.657333079382851e-8,-0.0022421101287026773,-3.957707112540881e-5,-3.683135600408295e-8,-0.0022419276065207064,-3.983591431005777e-5,-3.712457446970693e-8,-0.0022416477393448642,-4.0063753426798325e-5,-3.73851192566621e-8,-0.0022413045475564155,-4.0215340963561835e-5,-3.7561970560884604e-8,-0.0022409449338205603,-4.0271819274777205e-5,-3.7633148529958066e-8,-0.0022406136872176463,-4.0240309319839884e-5,-3.7605480019251675e-8,-0.002240343470877864,-4.0146522531138636e-5,-3.750668536605433e-8,-0.002240150677565745,-4.002533269708593e-5,-3.7375157741474976e-8,-0.002240035711440105,-3.991240818250783e-5,-3.725076167766338e-8,-0.002239985804253139,-3.9838071993125945e-5,-3.7167903625866e-8,-0.0022399789880449567,-3.9823368021104823e-5,-3.715090319780558e-8,-0.0022399885175577506,-3.9878050065343086e-5,-3.721146830451135e-8,-0.002239987272940578,-4.000036042511323e-5,-3.734824122526935e-8,-0.0022399516443405575,-4.017838712946535e-5,-3.7548239619326853e-8,-0.002239864499431365,-4.0392596449678075e-5,-3.778973496167977e-8,-0.0022397169957782525,-4.061908331716644e-5,-3.804599535317224e-8,-0.002239509163109704,-4.083302738834809e-5,-3.828923970936112e-8,-0.00223924945058436,-4.101186342286681e-5,-3.8494196874711744e-8,-0.002238953599371396,-4.113797301515876e-5,-3.8641048926455915e-8,-0.0022386430618668383,-4.120100796303263e-5,-3.871793082545036e-8,-0.002238342944066297,-4.1200001151770064e-5,-3.872324181388282e-8,-0.0022380791839847307,-4.114530686782865e-5,-3.866788607866194e-8,-0.002237874380510262,-4.1060002066053976e-5,-3.857703907310176e-8,-0.00223774180926945,-4.097948394853225e-5,-3.848995354296783e-8,-0.00223767825635013,-4.094712480839855e-5,-3.845528558322179e-8,-0.002237658399419641,-4.1004061797862145e-5,-3.851967858482813e-8,-0.0022376356888406273,-4.11738325963669e-5,-3.8710382858211906e-8,-0.0022375542283195344,-4.144791944811161e-5,-3.9018797372337954e-8,-0.002237369976256706,-4.178239537910177e-5,-3.939648342269923e-8,-0.0022370705865857117,-4.211192540677199e-5,-3.97707040733493e-8,-0.002236681021205403,-4.237528136520402e-5,-4.0072894403993155e-8,-0.0022362515136581293,-4.2537390808246587e-5,-4.026326754963274e-8,-0.0022358368811051695,-4.2596592517748946e-5,-4.033897314519272e-8,-0.002235479455892738,-4.257760540665977e-5,-4.032647668471118e-8,-0.0022352014732815342,-4.251839568376904e-5,-4.026725325138652e-8,-0.0022350055128588357,-4.245824814262653e-5,-4.0204769494537755e-8,-0.002234879072292001,-4.2429981973685345e-5,-4.017588031994506e-8,-0.002234800143287794,-4.245617891594765e-5,-4.020647152992803e-8,-0.0022347421748675988,-4.254810062132713e-5,-4.030997076660549e-8,-0.002234678089860464,-4.2706022024608e-5,-4.04874490318804e-8,-0.002234583596800719,-4.292040013149177e-5,-4.072877100486095e-8,-0.0022344399196055193,-4.3173776366831664e-5,-4.101470592062815e-8,-0.002234235865992565,-4.344333894544913e-5,-4.13198704377615e-8,-0.002233969089473579,-4.370403283753067e-5,-4.1616299339581775e-8,-0.0022336463289874286,-4.393200590097062e-5,-4.1877337327494744e-8,-0.002233282501130823,-4.410796757286399e-5,-4.2081351239347404e-8,-0.0022328987863395795,-4.422003807868895e-5,-4.2214822045642e-8,-0.0022325199496675764,-4.426587777665794e-5,-4.227465236873269e-8,-0.0022321710530385326,-4.4253972215963034e-5,-4.226962591744968e-8,-0.0022318736432929433,-4.420392191805795e-5,-4.2220888713159193e-8,-0.0022316414113256896,-4.414545555348796e-5,-4.216110347774086e-8,-0.0022314754270215662,-4.4115440270257426e-5,-4.213136166132721e-8,-0.002231359823442391,-4.415175418461966e-5,-4.217445054382591e-8,-0.0022312601532689185,-4.4283382554984865e-5,-4.232367827957026e-8,-0.002231127767120565,-4.4518168017474204e-5,-4.258888372588604e-8,-0.0022309127621388284,-4.483326721123653e-5,-4.2945429863533486e-8,-0.0022305832777618443,-4.5176107345948044e-5,-4.33350641470657e-8,-0.0022301417812274774,-4.548042189951665e-5,-4.3683804639003184e-8,-0.00222962696006888,-4.5691654474732635e-5,-4.3930355472978606e-8,-0.0022290982784922498,-4.578732224176004e-5,-4.404886114752745e-8,-0.0022286126995498105,-4.578096414425489e-5,-4.405337631430236e-8,-0.002228207126679372,-4.571064953482692e-5,-4.39852734699268e-8,-0.002227893056699919,-4.562206961243283e-5,-4.38947320909112e-8,-0.002227660846567752,-4.555526540573994e-5,-4.382620421038141e-8,-0.002227487702103169,-4.55379758899719e-5,-4.381102028222137e-8,-0.0022273451775774154,-4.558426004228901e-5,-4.386564409422788e-8,-0.0022272045720067527,-4.569590592468164e-5,-4.39929402649985e-8,-0.002227040330898362,-4.586469098944103e-5,-4.418444952301841e-8,-0.0022268322499077128,-4.607464729273845e-5,-4.4422813065954085e-8,-0.0022265671012077232,-4.6304319138032545e-5,-4.46843227290974e-8,-0.002226239866699384,-4.65292374402582e-5,-4.4941773047288794e-8,-0.002225854484890745,-4.6724799757426735e-5,-4.51677431041688e-8,-0.0022254237956320375,-4.6869601410910074e-5,-4.5338309138385286e-8,-0.002224968272659459,-4.694890763075256e-5,-4.543684582222292e-8,-0.002224513374267207,-4.695764552052053e-5,-4.545727907051517e-8,-0.0022240857042466885,-4.690227807341315e-5,-4.5406156340506795e-8,-0.0022237084214524207,-4.680103654287797e-5,-4.530300679993751e-8,-0.002223396530534961,-4.668216756519775e-5,-4.517860947561035e-8,-0.002223152787249789,-4.658014304122351e-5,-4.507104168252101e-8,-0.002222964935742375,-4.652995213290346e-5,-4.501951893274435e-8,-0.002222805166025817,-4.655966574712351e-5,-4.505611999008108e-8,-0.0022226330833182246,-4.6682000764129616e-5,-4.519616588800026e-8,-0.002222403496610867,-4.6886909508180545e-5,-4.542958762812166e-8,-0.002222079087811143,-4.7138819175493126e-5,-4.571749442657403e-8,-0.0022216449448798823,-4.738267384694757e-5,-4.59987335824701e-8,-0.002221118171827722,-4.7560111136303446e-5,-4.620795613858712e-8,-0.002220545312392466,-4.763048075773373e-5,-4.629917145710085e-8,-0.002219986393474025,-4.758588464850228e-5,-4.626262271116031e-8,-0.002219493466999461,-4.745169161788492e-5,-4.612549476134362e-8,-0.0022190950899372997,-4.727349057060608e-5,-4.5937616176018814e-8,-0.0022187928437108866,-4.709946526084481e-5,-4.575211981967887e-8,-0.0022185676608473866,-4.6967148258508964e-5,-4.561086581454774e-8,-0.0022183897340214403,-4.6897877865561347e-5,-4.5538205382200175e-8,-0.002218227112864587,-4.689730372738356e-5,-4.55412865670691e-8,-0.0022180511931498754,-4.6958726789225835e-5,-4.5613476972552826e-8,-0.002217839478448058,-4.706684563405332e-5,-4.573834204511953e-8,-0.002217576767892167,-4.720088385532349e-5,-4.5893088802846886e-8,-0.0022172557391592737,-4.7337099909682e-5,-4.605143273264397e-8,-0.0022168773700565656,-4.74510906017821e-5,-4.6186255635813826e-8,-0.0022164511799183666,-4.752034046529439e-5,-4.627248139736567e-8,-0.002215994899699834,-4.7527295848164124e-5,-4.629045712510837e-8,-0.002215532947978386,-4.746279506796771e-5,-4.622968509992351e-8,-0.0022150932151455763,-4.732912349998839e-5,-4.60921625117704e-8,-0.0022147021652644183,-4.714160221841957e-5,-4.589418230010463e-8,-0.002214378969883185,-4.692762570971198e-5,-4.566542228593394e-8,-0.0022141300645164186,-4.672255695780222e-5,-4.544463178449744e-8,-0.0022139458137362612,-4.6562850713633075e-5,-4.52722393117001e-8,-0.00221380060967952,-4.64777591528412e-5,-4.518126383051442e-8,-0.0022136569173281237,-4.648149783906708e-5,-4.518852648490155e-8,-0.0022134729343128413,-4.65678409922886e-5,-4.5288350736913463e-8,-0.002213212730213477,-4.670898079689068e-5,-4.545089717714251e-8,-0.002212856797894262,-4.686004182357243e-5,-4.562684735817594e-8,-0.0022124099074522273,-4.6969555866714336e-5,-4.575890861717408e-8,-0.0022119026018825377,-4.699407898397332e-5,-4.579813949784263e-8,-0.0022113839010346006,-4.691226389953383e-5,-4.5719800103478644e-8,-0.0022109065487812933,-4.673212611187127e-5,-4.553166994833471e-8,-0.0022105106421530336,-4.6487513953655795e-5,-4.52703652159344e-8,-0.002210212924897253,-4.622545023671105e-5,-4.498750033432147e-8,-0.0022100056515220326,-4.599082657138239e-5,-4.4732842639896e-8,-0.0022098634270506174,-4.58151562763414e-5,-4.454182124988341e-8,-0.002209753114187779,-4.5712337116466916e-5,-4.4430643000829475e-8,-0.0022096423610802776,-4.568024895658921e-5,-4.439779129857697e-8,-0.0022095048224221024,-4.570516696428774e-5,-4.4428692789315846e-8,-0.0022093223580628898,-4.576643434562114e-5,-4.45008081941231e-8,-0.0022090854104389146,-4.5840198863217866e-5,-4.458782308690369e-8,-0.002208792684048753,-4.590211841998753e-5,-4.4662757683266604e-8,-0.002208450773065764,-4.592949249699432e-5,-4.470041059236587e-8,-0.0022080738356743857,-4.590342965342051e-5,-4.467976024450722e-8,-0.0022076829208446235,-4.581149511652582e-5,-4.45868263584567e-8,-0.0022073042325302127,-4.565081152181556e-5,-4.441802397944935e-8,-0.002206965605216999,-4.5430915166275075e-5,-4.418331181075295e-8,-0.0022066909305378285,-4.51749843519472e-5,-4.390764665471133e-8,-0.0022064933389565914,-4.49177448738443e-5,-4.3628860219709356e-8,-0.0022063692939843756,-4.469903269899099e-5,-4.339076928750656e-8,-0.002206296459441618,-4.455384182826084e-5,-4.323234070924075e-8,-0.002206237344690818,-4.450182876565845e-5,-4.317610450389361e-8,-0.002206148437110928,-4.454022855258338e-5,-4.322014158498983e-8,-0.0022059920678573607,-4.464314996140854e-5,-4.333696738013364e-8,-0.002205747078655037,-4.47677698551155e-5,-4.3480006469238615e-8,-0.0022054149560458707,-4.4865453971987394e-5,-4.359562672668298e-8,-0.0022050197778874484,-4.4894469310904836e-5,-4.363714563703815e-8,-0.002204602080350687,-4.483081733338681e-5,-4.357698088947024e-8,-0.0022042082496701748,-4.4674256976108435e-5,-4.34136267011671e-8,-0.002203878355963061,-4.444767502332483e-5,-4.317130450908105e-8,-0.002203636131830214,-4.418988337579432e-5,-4.289227455216706e-8,-0.0022034842767954172,-4.3944313012475434e-5,-4.2624468807672645e-8,-0.0022034062225738905,-4.374765150444576e-5,-4.240888990786396e-8,-0.0022033728732570334,-4.362214656382595e-5,-4.22709113039624e-8,-0.0022033511472193176,-4.357325021474196e-5,-4.2217405326860426e-8,-0.002203311259278957,-4.359184072021775e-5,-4.2238963148967383e-8,-0.002203231161403219,-4.365884984553331e-5,-4.2314893940482235e-8,-0.0022030981896355236,-4.37501815219e-5,-4.241868804084055e-8,-0.0022029088590102435,-4.3840715442687394e-5,-4.252255845087228e-8,-0.002202667855443351,-4.390713159132299e-5,-4.2600676139939876e-8,-0.0022023869397814195,-4.392991328620103e-5,-4.263141972686281e-8,-0.002202083971331653,-4.389514078579005e-5,-4.259929970541784e-8,-0.0022017817509400405,-4.3796571313615305e-5,-4.2497155377534966e-8,-0.002201506019114991,-4.363807773550661e-5,-4.232878802184368e-8,-0.002201281829056389,-4.3435865519477696e-5,-4.211145676298463e-8,-0.0022011278651603286,-4.321905966755535e-5,-4.187668985882363e-8,-0.002201049428771376,-4.3026635343832115e-5,-4.166711799444936e-8,-0.0022010326564595945,-4.2899212226683795e-5,-4.1527605488542144e-8,-0.0022010438605880736,-4.2866701401245325e-5,-4.149168981230639e-8,-0.002201036815050561,-4.2936311524374124e-5,-4.156826007306663e-8,-0.0022009668005209242,-4.3087189621691026e-5,-4.1735408849570453e-8,-0.002200805687849186,-4.3275540935940235e-5,-4.194576010041846e-8,-0.0022005511147673534,-4.344845205145683e-5,-4.214141087930924e-8,-0.0022002261579351164,-4.356010243054483e-5,-4.2271627325288035e-8,-0.0021998709471877614,-4.3583870411128616e-5,-4.230621553318354e-8,-0.0021995306329296136,-4.351713167905666e-5,-4.2241049980976345e-8,-0.002199244012936336,-4.337907539302264e-5,-4.209604395428574e-8,-0.0021990354974688524,-4.3203716761038325e-5,-4.190782352683438e-8,-0.0021989114882803953,-4.303068697336216e-5,-4.1719808660383815e-8,-0.0021988611198272934,-4.2896143039547516e-5,-4.157220587465444e-8,-0.002198860529686386,-4.28256834219112e-5,-4.149400848221767e-8,-0.0021988792290551736,-4.283052362484336e-5,-4.149848437908441e-8,-0.0021988868020958604,-4.290728558961128e-5,-4.158266825085552e-8,-0.002198858332636107,-4.30407374421635e-5,-4.1730227888167276e-8,-0.0021987776559889718,-4.320815607531913e-5,-4.191627227789234e-8,-0.0021986383828306827,-4.338394252488224e-5,-4.211255171468341e-8,-0.0021984432617016725,-4.354352417484422e-5,-4.229189520363366e-8,-0.0021982026851288055,-4.366616419637895e-5,-4.243138177200893e-8,-0.002197932987833362,-4.373685585806035e-5,-4.2514400830429825e-8,-0.0021976547873646343,-4.374776948947891e-5,-4.2532145447490745e-8,-0.0021973912163822202,-4.3699666494011446e-5,-4.248507449934088e-8,-0.002197165565964018,-4.360339553726757e-5,-4.238455982416569e-8,-0.0021969976661542537,-4.348102472191013e-5,-4.2254266098886135e-8,-0.0021968986060033643,-4.3365344851824027e-5,-4.212983081364773e-8,-0.002196864488916266,-4.329582521635688e-5,-4.205462845468875e-8,-0.00219687177106506,-4.330950164594914e-5,-4.206983298743024e-8,-0.0021968783763478264,-4.342774012978813e-5,-4.219976819299261e-8,-0.002196833942465688,-4.364410781791684e-5,-4.2438344229764724e-8,-0.0021966974953614438,-4.392134829558463e-5,-4.274547229078794e-8,-0.0021964542822063117,-4.420215324008212e-5,-4.305868573313644e-8,-0.002196122004749595,-4.4429633911088055e-5,-4.3315482134634745e-8,-0.002195743141195934,-4.456667055575025e-5,-4.3474511881865136e-8,-0.0021953688213683063,-4.460502832877005e-5,-4.352567029416044e-8,-0.0021950430896256865,-4.456276883725236e-5,-4.34875261233581e-8,-0.00219479325103675,-4.447456387533459e-5,-4.339707996174946e-8,-0.0021946271302473947,-4.4380500039176534e-5,-4.329781770575668e-8,-0.0021945353071144784,-4.43168589575551e-5,-4.322972528487527e-8,-0.0021944959560133495,-4.4310062852754164e-5,-4.322252177775724e-8,-0.002194480563537203,-4.4373660852183527e-5,-4.32920524953864e-8,-0.0021944595227321863,-4.450786864707432e-5,-4.343945466521452e-8,-0.0021944069506842096,-4.4701191951449525e-5,-4.36527150890374e-8,-0.0021943042180325003,-4.49335617950116e-5,-4.391005375463803e-8,-0.002194141906377647,-4.518027077748843e-5,-4.4184332052663467e-8,-0.0021939201779301136,-4.5416019876788224e-5,-4.444764386522221e-8,-0.002193647790767406,-4.561847347713716e-5,-4.4675332295713537e-8,-0.0021933402416158846,-4.5770915859345256e-5,-4.484892453692752e-8,-0.00219301755709073,-4.586399243241319e-5,-4.495797173896476e-8,-0.0021927019881854267,-4.589680376520009e-5,-4.50011490514789e-8,-0.002192415581968075,-4.587758677189852e-5,-4.498696354861374e-8,-0.002192177416627541,-4.582404354917942e-5,-4.493420418458068e-8,-0.0021920001056428633,-4.576302032079154e-5,-4.487180284605771e-8,-0.0021918853630141493,-4.5728554041258204e-5,-4.483694086387648e-8,-0.0021918193971149852,-4.575678790110061e-5,-4.486962210563871e-8,-0.0021917704552939657,-4.5876737000029106e-5,-4.500249145208053e-8,-0.0021916921793231213,-4.609805171784536e-5,-4.524715951212536e-8,-0.002191535722030832,-4.640085504307758e-5,-4.558273256144663e-8,-0.002191268622527711,-4.673572239421093e-5,-4.5955562378608346e-8,-0.0021908911531643392,-4.703860588774864e-5,-4.6295536372601254e-8,-0.0021904389342049485,-4.725525462149562e-5,-4.654284579454351e-8,-0.0021899688757674282,-4.7361335435271427e-5,-4.667003748796585e-8,-0.002189537217572945,-4.736738240175443e-5,-4.66875152635767e-8,-0.002189182178099598,-4.730905371796731e-5,-4.6633131046491385e-8,-0.0021889175315774733,-4.723144495265606e-5,-4.655539679656418e-8,-0.0021887354256682617,-4.717574835041439e-5,-4.6499184056199204e-8,-0.0021886135162408732,-4.717157179860376e-5,-4.649736314449432e-8,-0.0021885224957076004,-4.723435333698451e-5,-4.656775348526145e-8,-0.002188432196672109,-4.736596568910569e-5,-4.671343301511786e-8,-0.0021883159915355365,-4.755688007918747e-5,-4.69247944722332e-8,-0.002188153797184117,-4.7789060056815985e-5,-4.7182558125506696e-8,-0.0021879339216937933,-4.8039252490120275e-5,-4.7461392605544466e-8,-0.0021876538472704776,-4.828243590852618e-5,-4.773381750934838e-8,-0.002187319992989988,-4.849521912185547e-5,-4.7974061450627616e-8,-0.0021869464613131022,-4.865894024085986e-5,-4.816152081756237e-8,-0.0021865528992877276,-4.87620998684626e-5,-4.828339410490294e-8,-0.0021861618199906937,-4.8801891534619e-5,-4.833627312095251e-8,-0.0021857956854069802,-4.878486309271509e-5,-4.832680892763946e-8,-0.0021854738600616984,-4.8726762987137e-5,-4.8271587194920043e-8,-0.0021852094900030724,-4.86515128943926e-5,-4.8196176656966384e-8,-0.002185006334014698,-4.858914285791343e-5,-4.8133122371377696e-8,-0.0021848556724831675,-4.8572182159752406e-5,-4.8118210423692764e-8,-0.0021847340908449993,-4.862969584851901e-5,-4.818398533821574e-8,-0.0021846040333787834,-4.8778729210677626e-5,-4.835019658202303e-8,-0.0021844197065521583,-4.901477659668526e-5,-4.861300583671992e-8,-0.002184139908137586,-4.9305740268685153e-5,-4.89380239589084e-8,-0.002183745208710712,-4.959578164277363e-5,-4.926436436193073e-8,-0.0021832508778272947,-4.9822400093252296e-5,-4.9523381452495355e-8,-0.0021827054179990426,-4.9940812964766306e-5,-4.9665452368679164e-8,-0.002182172657790118,-4.9941786271621964e-5,-4.967953305482646e-8,-0.0021817074157041024,-4.985220421423567e-5,-4.959386599256073e-8,-0.002181338673865619,-4.9720142395811015e-5,-4.945991919619401e-8,-0.0021810666706533364,-4.9595568980319e-5,-4.933166537295909e-8,-0.0021808703783844,-4.951657478515571e-5,-4.92507832762818e-8,-0.0021807181941960203,-4.950399504420421e-5,-4.924073730655143e-8,-0.0021805769182982548,-4.956218364039945e-5,-4.9307324380953e-8,-0.0021804174795038798,-4.968259370492711e-5,-4.9442212976376634e-8,-0.0021802179110294567,-4.9847836933814006e-5,-4.9627109424267564e-8,-0.002179964670767143,-5.003531159657192e-5,-4.983764252872737e-8,-0.0021796530724134083,-5.0220385609024966e-5,-5.004692161411961e-8,-0.002179287108625143,-5.0379309817940806e-5,-5.0228863268068284e-8,-0.0021788786984716967,-5.049197671212808e-5,-5.0361312329529946e-8,-0.0021784462256297563,-5.054452595703909e-5,-5.04289060225776e-8,-0.0021780122025803136,-5.053151803276535e-5,-5.042538797210063e-8,-0.002177600157916581,-5.045722929573454e-5,-5.035495070136917e-8,-0.0021772310966522526,-5.0335776567875636e-5,-5.023237210708531e-8,-0.002176919902460922,-5.0189932859938544e-5,-5.0081843179902245e-8,-0.00217667207082299,-5.004853269807545e-5,-4.993436120974221e-8,-0.0021764812441906808,-4.994249777622941e-5,-4.982363597059191e-8,-0.0021763280507105863,-4.98996114264398e-5,-4.978052270196503e-8,-0.0021761809437515654,-4.9938185981473035e-5,-4.982603516805561e-8,-0.002176000149806595,-5.006025793450334e-5,-4.9963621703133264e-8,-0.002175745817326205,-5.024622884164902e-5,-5.0172910484799115e-8,-0.002175390157594791,-5.0454365055776456e-5,-5.0408841281164365e-8,-0.002174930337153652,-5.06288459355e-5,-5.061036106903455e-8,-0.002174395353711165,-5.071699644838109e-5,-5.0719362989473973e-8,-0.0021738401034926535,-5.0689679713245726e-5,-5.0703131233504954e-8,-0.0021733265233010663,-5.055363671187018e-5,-5.056794205359903e-8,-0.0021729011128648096,-5.034775070284775e-5,-5.035513085813307e-8,-0.0021725811078602674,-5.012585939427826e-5,-5.012259516349527e-8,-0.0021723547388293137,-4.993700515060601e-5,-4.992354472562844e-8,-0.0021721915116131806,-4.9812811310871116e-5,-4.979285902848771e-8,-0.0021720546749986677,-4.976445626435847e-5,-4.9743630077680485e-8,-0.002171910550591354,-4.978612573658363e-5,-4.977057674929707e-8,-0.0021717334408312126,-4.986073223887547e-5,-4.985593590639394e-8,-0.0021715072056702122,-4.9965197761627746e-5,-4.997503848354697e-8,-0.002171225123681876,-5.007442062639999e-5,-5.010064735726323e-8,-0.0021708891541935235,-5.0164162613396194e-5,-5.020624123144993e-8,-0.002170509011565236,-5.021337352113505e-5,-5.026869269970753e-8,-0.0021701010201165194,-5.020633834079381e-5,-5.027067408474085e-8,-0.002169686481978018,-5.013479660142251e-5,-5.02029350445516e-8,-0.0021692892001323122,-4.999980622314807e-5,-5.006625128102955e-8,-0.002168932022375522,-4.9812758371010945e-5,-4.9872480658075486e-8,-0.002168632724515974,-4.95948957641629e-5,-4.96440934171442e-8,-0.0021683999304833723,-4.9374905475583854e-5,-4.94117279890712e-8,-0.0021682299884622017,-4.9184517024424835e-5,-4.9209644023520306e-8,-0.0021681057683319905,-4.905256550499114e-5,-4.906946354132325e-8,-0.0021679981084059274,-4.899850303697785e-5,-4.901315398366616e-8,-0.0021678702118165865,-4.902660625417457e-5,-4.904654790153962e-8,-0.002167684855459021,-4.912228342329066e-5,-4.915496722137846e-8,-0.002167413675346147,-4.9252117611135175e-5,-4.930287422769272e-8,-0.0021670467328493287,-4.9369236645834006e-5,-4.9439453319941026e-8,-0.0021665991445428225,-4.942457392269512e-5,-4.951084310411176e-8,-0.0021661107109958544,-4.9382031214902844e-5,-4.9476821013151695e-8,-0.0021656359860024264,-4.923205966050717e-5,-4.932584479686643e-8,-0.0021652269664645565,-4.8996524294130615e-5,-4.908058662160895e-8,-0.0021649159058167063,-4.872105249104496e-5,-4.878982557957179e-8,-0.002164706655984438,-4.8458301673946887e-5,-4.8510450968611894e-8,-0.0021645777385677746,-4.825084661063017e-5,-4.8288973195301046e-8,-0.0021644934054848965,-4.812122783466715e-5,-4.81506379139743e-8,-0.0021644159176900527,-4.8071024900689184e-5,-4.809815557247862e-8,-0.0021643141929952214,-4.808594061576428e-5,-4.81168922637752e-8,-0.002164167674411756,-4.814266053659258e-5,-4.818208341414474e-8,-0.0021639667146355628,-4.8214709519840826e-5,-4.8265144796799985e-8,-0.0021637113015193915,-4.8276471408607926e-5,-4.833815104674628e-8,-0.0021634093935051597,-4.8305717497990586e-5,-4.8376751136334334e-8,-0.0021630753860666465,-4.8285336142651836e-5,-4.836216222000512e-8,-0.0021627286667312874,-4.8204863846761885e-5,-4.828283802361071e-8,-0.002162391861482956,-4.8062097732630306e-5,-4.813613888210156e-8,-0.0021620882679398825,-4.786457221389886e-5,-4.792984469758117e-8,-0.0021618381966684985,-4.763020148052184e-5,-4.768283959318655e-8,-0.0021616544721947527,-4.738615688544101e-5,-4.74240049864915e-8,-0.0021615380479013072,-4.716519867376527e-5,-4.718845234479752e-8,-0.002161475302072799,-4.699937039553237e-5,-4.701091284755469e-8,-0.0021614386393250546,-4.6912154688658707e-5,-4.691736184216948e-8,-0.002161391201800069,-4.6911292679655636e-5,-4.691717630397373e-8,-0.002161295075484384,-4.698475296081406e-5,-4.6998506562417824e-8,-0.002161121034202,-4.710162372082691e-5,-4.712886694957854e-8,-0.002160857131367918,-4.7218339997966116e-5,-4.726153824963162e-8,-0.0021605135166616594,-4.728911357216719e-5,-4.734669635449493e-8,-0.002160121614640899,-4.727811102218645e-5,-4.7344670899897986e-8,-0.002159727070259186,-4.71700332472349e-5,-4.72376676723403e-8,-0.002159377681774251,-4.697546153405605e-5,-4.703590761080976e-8,-0.0021591097858532486,-4.672829423936533e-5,-4.677517141941328e-8,-0.002158938074167603,-4.6475408602648845e-5,-4.650582202815821e-8,-0.002158852916009944,-4.626235480050213e-5,-4.627738514230599e-8,-0.002158825801635166,-4.612087538018337e-5,-4.612493766194266e-8,-0.002158819709787541,-4.606270599802699e-5,-4.606214934513943e-8,-0.002158799607308813,-4.608051665422589e-5,-4.6081993496327766e-8,-0.0021587395273344563,-4.615361327504223e-5,-4.616267371658823e-8,-0.002158625286072611,-4.625494118904886e-5,-4.627511694149892e-8,-0.002158453953359905,-4.635691120285143e-5,-4.638936013416345e-8,-0.002158231790057722,-4.643523375110354e-5,-4.647887273854775e-8,-0.002157971911670394,-4.647108233605865e-5,-4.652305041561149e-8,-0.0021576922476335206,-4.6452294121769896e-5,-4.650856384345036e-8,-0.0021574138014324212,-4.637428430326153e-5,-4.6430286990051256e-8,-0.0021571587957101316,-4.624105015071745e-5,-4.629227406134107e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json new file mode 100644 index 0000000000..8eb0d0e6b1 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":1000,"numberOfSamples":1000,"samples":[-0.002156948117797158,-4.6066106188504274e-5,-4.610870837852341e-8,-0.0021567976844821175,-4.587262928957953e-5,-4.590411215695837e-8,-0.002156713908245568,-4.569170874283684e-5,-4.5711626484184725e-8,-0.0021566893595621928,-4.555761003533914e-5,-4.5568113732113295e-8,-0.002156700743371349,-4.549983445555494e-5,-4.5505741530892555e-8,-0.0021567115663395065,-4.5533671389188886e-5,-4.5541790676334716e-8,-0.0021566804178876843,-4.5652915406612466e-5,-4.5670622833809834e-8,-0.002156572912636481,-4.582870678241587e-5,-4.58621255953264e-8,-0.0021563728566239655,-4.601620142754535e-5,-4.6068577295811786e-8,-0.0021560880133587525,-4.616711622705171e-5,-4.623794070121091e-8,-0.002155748222189647,-4.62434863816923e-5,-4.6328641438483505e-8,-0.002155396920669294,-4.622782396424562e-5,-4.632067580425877e-8,-0.00215507933393081,-4.612686483113469e-5,-4.621997607570151e-8,-0.0021548310204559523,-4.596856314722607e-5,-4.605556460572259e-8,-0.0021546697448800787,-4.579380803487395e-5,-4.5870948767990285e-8,-0.0021545925009090403,-4.564545026639773e-5,-4.571243253541094e-8,-0.00215457808447119,-4.555777214888923e-5,-4.561767662258407e-8,-0.002154594019620961,-4.554927142265337e-5,-4.560764640929833e-8,-0.002154605368940617,-4.562040509803385e-5,-4.568383677005805e-8,-0.002154582628502511,-4.575613804937631e-5,-4.583074108471704e-8,-0.0021545067042819666,-4.593156748733217e-5,-4.602179515117175e-8,-0.0021543704349080905,-4.6118291920214145e-5,-4.6226298143065905e-8,-0.002154177429419203,-4.628970757896518e-5,-4.64152905393417e-8,-0.0021539395320203554,-4.642448039496704e-5,-4.656547403677698e-8,-0.0021536740325304696,-4.6508347419083976e-5,-4.6661248300741016e-8,-0.002153401212638439,-4.6534852085000904e-5,-4.669548060691322e-8,-0.0021531422886805827,-4.650565883599465e-5,-4.666974436961425e-8,-0.0021529174221249937,-4.6430830311047396e-5,-4.6594529114611347e-8,-0.002152743281384537,-4.632899782380846e-5,-4.648943285318694e-8,-0.0021526297364554913,-4.622682327908873e-5,-4.6382720029024235e-8,-0.0021525757781952213,-4.615665217809799e-5,-4.6309007987320986e-8,-0.0021525657635618595,-4.615111791560906e-5,-4.630363581540198e-8,-0.0021525683606683156,-4.623433111379003e-5,-4.639321479077921e-8,-0.0021525411131787307,-4.641162808298889e-5,-4.658444896551646e-8,-0.00215244181360915,-4.6662730585749126e-5,-4.685650807739798e-8,-0.002152243559761613,-4.69438336830974e-5,-4.716299443903288e-8,-0.0021519463173773905,-4.720028130623982e-5,-4.744536946490242e-8,-0.0021515783140552483,-4.738487646555355e-5,-4.7652539659263205e-8,-0.0021511863195340735,-4.7473012892754915e-5,-4.775714558013054e-8,-0.002150820158632104,-4.74681988823182e-5,-4.7761682951372046e-8,-0.0021505186509381763,-4.739759003524929e-5,-4.769404722497823e-8,-0.002150301454146949,-4.7301602034095665e-5,-4.75967746928141e-8,-0.002150167504080223,-4.722237577724007e-5,-4.751493736774092e-8,-0.0021500984653760494,-4.7194327180898005e-5,-4.7486029043007825e-8,-0.002150065007643072,-4.7238211715320985e-5,-4.753336591146179e-8,-0.002150034011848315,-4.735890504159874e-5,-4.7663329284699034e-8,-0.0021499752813515308,-4.754650144645341e-5,-4.7866189097583804e-8,-0.0021498666614940885,-4.777999559892799e-5,-4.811985529955003e-8,-0.002149696844734374,-4.8032435641353954e-5,-4.8395408706038154e-8,-0.0021494657462589853,-4.8276239272205825e-5,-4.866295866283441e-8,-0.0021491829316347584,-4.848761715432387e-5,-4.8896590036391526e-8,-0.002148864888882999,-4.864954755615883e-5,-4.9077698538029214e-8,-0.002148531969661492,-4.875324012053347e-5,-4.9196590948451486e-8,-0.00214820559302335,-4.879845385417849e-5,-4.925275811633043e-8,-0.0021479058723801398,-4.8793211725869386e-5,-4.9254476683867235e-8,-0.0021476494691693242,-4.875326148772683e-5,-4.921820529983365e-8,-0.0021474473356039884,-4.8701280224926454e-5,-4.916782927985692e-8,-0.002147302025734625,-4.8665427348109735e-5,-4.913330991550414e-8,-0.0021472046146883317,-4.867636961659977e-5,-4.914769826441347e-8,-0.0021471322071707254,-4.8761685544412094e-5,-4.924121019381598e-8,-0.0021470482597085038,-4.893732048233069e-5,-4.943192954490526e-8,-0.002146908584499707,-4.91979967179343e-5,-4.97152190263401E-08,-0.002146674363316176,-4.9511646656850674e-5,-5.0057427768996096e-8,-0.002146328667920062,-4.982422622000098e-5,-5.0400872447169334e-8,-0.0021458875359486144,-5.007688042712524e-5,-5.0682229364308553e-8,-0.002145397011314185,-5.0228379818507437e-5,-5.0856638807463407e-8,-0.0021449161791735768,-5.0270217445764416e-5,-5.091394422090286e-8,-0.002144495917953705,-5.0226434247242504e-5,-5.087865414824122e-8,-0.002144164522903363,-5.01408709895491e-5,-5.079660476566392e-8,-0.002143924532470479,-5.0060878640441164e-5,-5.0717902245852795e-8,-0.002143757959315198,-5.002483607513269e-5,-5.068379162791456e-8,-0.002143634896737234,-5.005585115815337e-5,-5.071984838493151e-8,-0.002143521842854634,-5.0160650756850324e-5,-5.083446444779818e-8,-0.002143388120717485,-5.0331651201626866e-5,-5.102064773664288e-8,-0.002143210184954386,-5.055054311417113e-5,-5.125954074459971e-8,-0.002142974117514982,-5.079251129394976e-5,-5.152482507010141e-8,-0.0021426765074378826,-5.103064468172294e-5,-5.178753018681961e-8,-0.0021423238391256607,-5.124006797853224e-5,-5.202065134245872e-8,-0.002141930651324379,-5.140134181465216e-5,-5.220297342970296e-8,-0.0021415168281439588,-5.150282446702924e-5,-5.2321688446799315e-8,-0.0021411044645297406,-5.154180999406271e-5,-5.237359158139016e-8,-0.0021407148054202576,-5.152449499997826e-5,-5.236496558245039e-8,-0.0021403655678020684,-5.146510002939213e-5,-5.231059043138093e-8,-0.002140068652238457,-5.138444270295482e-5,-5.2232268635753575e-8,-0.002139828133292629,-5.1308028225241545e-5,-5.2156950212399334e-8,-0.002139638422673149,-5.126350568803761e-5,-5.2114230564000163e-8,-0.00213948268691379,-5.1277018333799685e-5,-5.213259191254482e-8,-0.002139332290822501,-5.1367795817320406e-5,-5.223357239670482e-8,-0.0021391489883805194,-5.154098912009453e-5,-5.242383088390882e-8,-0.002138891970010422,-5.1780522562900146e-5,-5.268710604455327e-8,-0.0021385305995390066,-5.20462253084977e-5,-5.2980835455315765e-8,-0.002138059594008942,-5.2280784568316565e-5,-5.324353111816718e-8,-0.002137508049281609,-5.242840674319948e-5,-5.341489927661907e-8,-0.0021369333564798328,-5.245794992558174e-5,-5.3460757754233854e-8,-0.0021364000567887635,-5.237659280739311e-5,-5.338772944526506e-8,-0.0021359554177806913,-5.222499524366457e-5,-5.323816602452792e-8,-0.0021356157132549174,-5.205829004263862e-5,-5.307010206523827e-8,-0.002135367798385966,-5.1925718630202697e-5,-5.293584770307225e-8,-0.0021351802309842655,-5.185853393324863e-5,-5.2869237987871783e-8,-0.002135015709675917,-5.186747116928778e-5,-5.288277568269625e-8,-0.0021348401734937695,-5.194616985504687e-5,-5.2970891829753475e-8,-0.002134627758060293,-5.2076667370690687e-5,-5.311539888620349e-8,-0.002134362664862016,-5.22346501846903e-5,-5.329085053332862e-8,-0.0021340393185033547,-5.2393733389077045e-5,-5.3469096840437146e-8,-0.002133661644592146,-5.252894430972528e-5,-5.362316413179043e-8,-0.0021332416919183183,-5.2619642849676823e-5,-5.373058405670703e-8,-0.002132797639105352,-5.265187989316952e-5,-5.377605953151373e-8,-0.00213235123299873,-5.262008658853691e-5,-5.3753301407695094e-8,-0.0021319247547086106,-5.252787431710746e-5,-5.366582385721862e-8,-0.002131537812166341,-5.2387711692295135e-5,-5.3526527141880856e-8,-0.002131204386649835,-5.221948578729788e-5,-5.335616249926751e-8,-0.002130930436840616,-5.204813499564776e-5,-5.3180922715721016e-8,-0.0021307122475242276,-5.190051666082856e-5,-5.3029303636494595e-8,-0.002130535691096194,-5.1801663288743484e-5,-5.2928303953712826e-8,-0.002130376577415983,-5.1770519389418736e-5,-5.289893815879023e-8,-0.0021302025383327134,-5.1815158911048855e-5,-5.2950976313991277e-8,-0.002129977378036466,-5.192792796725971e-5,-5.3077407334747964E-08,-0.0021296688087945386,-5.208214555192072e-5,-5.325050928388623e-8,-0.0021292592998348823,-5.2233329336141494e-5,-5.342289782969275e-8,-0.002128757014872047,-5.2328224363975537e-5,-5.353718707965699e-8,-0.0021282003685288873,-5.232211388239153e-5,-5.354471701182651e-8,-0.0021276495587692528,-5.219820202071707e-5,-5.342650421322242e-8,-0.002127165444777017,-5.1977374748586926e-5,-5.32037987462269e-8,-0.002126786408919701,-5.1710339300552144e-5,-5.292980367635397e-8,-0.0021265166937946525,-5.145633618560855e-5,-5.2667177244896215e-8,-0.00212633105580082,-5.126167160748416e-5,-5.246538067689548e-8,-0.002126189328271234,-5.114869660600918e-5,-5.234897812409529e-8,-0.0021260510373621883,-5.111638783278097e-5,-5.231801132895357e-8,-0.002125884513579751,-5.114733030685652e-5,-5.235503053809026e-8,-0.0021256702248682435,-5.121572331910457e-5,-5.243327665430199e-8,-0.002125400455812279,-5.1293642979333694e-5,-5.252321996716058e-8,-0.0021250775059338096,-5.1355096043385815e-5,-5.259696904862907e-8,-0.0021247116610059085,-5.1378537621995244e-5,-5.2631164024147827e-8,-0.0021243192352671083,-5.134861185069034e-5,-5.2609026267915535e-8,-0.002123920533294502,-5.125749504161394e-5,-5.252187717870801e-8,-0.002123537513917045,-5.1105899487825944e-5,-5.237017732952232e-8,-0.0021231909824004935,-5.0903510148269925e-5,-5.21639052525058e-8,-0.002122897386272381,-5.066840160744641e-5,-5.192188374186477e-8,-0.0021226656718111524,-5.042508933637542e-5,-5.166975788992617e-8,-0.002122494839571998,-5.0201204525872756e-5,-5.143662126873064e-8,-0.0021223728064571974,-5.002307532138799e-5,-5.125052539179263e-8,-0.002122277063662247,-4.9910792187481684e-5,-5.1133373559448276e-8,-0.002122177350465051,-4.9873571668336e-5,-5.1095958839310544e-8,-0.002122040271899325,-4.990621895883855e-5,-5.113395766297128e-8,-0.002121835670220407,-4.998749569171908e-5,-5.122580454826739e-8,-0.002121544289358671,-5.008151805352115e-5,-5.133380683137773e-8,-0.0021211653940700756,-5.0143498952941705e-5,-5.141007127166793e-8,-0.0021207216447338448,-5.0130441492102875e-5,-5.1407976149345016e-8,-0.002120257496141451,-5.001520456175847e-5,-5.1297441102601807e-8,-0.002119828397979043,-4.9798850489622e-5,-5.107840402680578e-8,-0.0021194826754195456,-4.9513892869127156e-5,-5.078451782729881e-8,-0.002119244086201465,-4.921409445932999e-5,-5.0472444375840066e-8,-0.0021191046402436534,-4.8954748273117716e-5,-5.0200988226733736e-8,-0.002119031138708923,-4.8773978554723135e-5,-5.001124485406591e-8,-0.002118980101862301,-4.8684026206295004e-5,-4.991720030835334e-8,-0.00211891220827597,-4.867379334879302e-5,-4.990812813538284e-8,-0.0021188006530865576,-4.8717674424215837e-5,-4.9957631878584515e-8,-0.0021186330805224884,-4.878489183979079e-5,-5.003335885442783e-8,-0.002118409606923484,-4.8846210672363946e-5,-5.010414572430475e-8,-0.0021181395569648243,-4.887764161794287e-5,-5.0144131459874775e-8,-0.002117838428140765,-4.8862089859800686e-5,-5.013472762586503e-8,-0.0021175254797301053,-4.87900395563563e-5,-5.006548391793509e-8,-0.0021172217039225403,-4.865995177280172e-5,-4.9934517707598465e-8,-0.0021169477453683006,-4.8478584561881674e-5,-4.9748766630150475e-8,-0.002116721392799632,-4.8261007717598124e-5,-4.952391111144196e-8,-0.00211655455107997,-4.802973321358578e-5,-4.928344153787555e-8,-0.002116450096966629,-4.781233066898358e-5,-4.9056238260434893e-8,-0.0021163995074253497,-4.763723300556185e-5,-4.88723175000772e-8,-0.00211638238176434,-4.752806896211847e-5,-4.8757005535652654e-8,-0.0021163687749273766,-4.749765415455074e-5,-4.872463016284184e-8,-0.0021163245129189124,-4.75433801208055e-5,-4.8773504423959966e-8,-0.0021162186131261293,-4.7645689733550204e-5,-4.888400543678275e-8,-0.0021160311239636605,-4.7770598620135224e-5,-4.902087037517744e-8,-0.0021157594156345004,-4.787624496808221e-5,-4.913984622203423e-8,-0.0021154210653734945,-4.792249771712643e-5,-4.919779498322852e-8,-0.0021150518661444766,-4.788171611098116e-5,-4.916427157162084e-8,-0.0021146983037815758,-4.774784549571525e-5,-4.903151581702451e-8,-0.0021144054214774677,-4.754043449876239e-5,-4.881909664190108e-8,-0.002114203335655032,-4.730071511555959e-5,-4.857004998709531e-8,-0.0021140976257717674,-4.7079605315396366e-5,-4.8338297363515245e-8,-0.002114068243449401,-4.6921741162987395e-5,-4.817168920274723e-8,-0.0021140776517754515,-4.685238849929127e-5,-4.8097948508555413e-8,-0.002114084019446718,-4.6872596236596724e-5,-4.81192411375788e-8,-0.002114053227237637,-4.6963141965845496e-5,-4.821604606694751e-8,-0.002113965448400426,-4.7093502898033734e-5,-4.8356449951288814e-8,-0.0021138158726727416,-4.7231060835115885e-5,-4.8505867927921634e-8,-0.0021136117434029157,-4.73475915439524e-5,-4.863405741638106e-8,-0.002113368243224607,-4.742253450655109e-5,-4.8718797175518944e-8,-0.0021131048107557887,-4.7443958322278066e-5,-4.874708212682086e-8,-0.002112842390293642,-4.740840058984932e-5,-4.87150037508711e-8,-0.002112601402461571,-4.732044050097083e-5,-4.8627229494421786e-8,-0.002112399898104981,-4.71923458598116e-5,-4.84965171325286e-8,-0.0021122513870208202,-4.7043586695278016e-5,-4.834314259144425e-8,-0.002112162155506463,-4.689959768605062e-5,-4.8193650389836864e-8,-0.0021121284044120486,-4.678902511400128e-5,-4.807810872069021e-8,-0.002112134192586928,-4.6738909755118304e-5,-4.802520783954363e-8,-0.002112151736011111,-4.676805674809973e-5,-4.8055358790222776e-8,-0.0021121455008559073,-4.68802207502431e-5,-4.8173435647070684e-8,-0.002112080244306887,-4.705993268071947e-5,-4.8364140938563196e-8,-0.0021119310664213338,-4.727368018370931e-5,-4.8592931302070324e-8,-0.002111691895111901,-4.747730114612249e-5,-4.881352739322071e-8,-0.0021113788749667064,-4.7627699607907756e-5,-4.898012188224292e-8,-0.00211102704677318,-4.7694954771803144e-5,-4.9060201272908396e-8,-0.002110681352249585,-4.767075494556609e-5,-4.90436883734857e-8,-0.002110384874318121,-4.7570663804349934e-5,-4.894570849816082e-8,-0.0021101677401916797,-4.7429813825341904e-5,-4.8802430880724736e-8,-0.002110039696581039,-4.729335730533683e-5,-4.866125590022362e-8,-0.0021099884072854364,-4.7204358850854926e-5,-4.8568084600913465e-8,-0.002109983945387274,-4.7192708949043166e-5,-4.855543459993911e-8,-0.0021099879117350232,-4.726846620998511e-5,-4.863507382826351e-8,-0.0021099639576379094,-4.7421428985429237e-5,-4.879720662545984e-8,-0.0021098861854816123,-4.7626298326830003e-5,-4.901567331796005e-8,-0.002109743186109511,-4.7850789510772105e-5,-4.9256450069474826e-8,-0.002109537586825893,-4.8063526347891254e-5,-4.948609768053289e-8,-0.002109282655958739,-4.8239580975826655e-5,-4.967782243823404e-8,-0.0021089979409871034,-4.8363148343395243e-5,-4.981449771751667e-8,-0.002108705341277884,-4.8427999229028034e-5,-4.988923858233261e-8,-0.002108426170116319,-4.843672757019664e-5,-4.990457813568429e-8,-0.0021081790939703336,-4.8399655340769195e-5,-4.987120855545762e-8,-0.002107978462340765,-4.8333815691984267e-5,-4.98068240380907e-8,-0.0021078325085235445,-4.8261883157006745e-5,-4.973500790876879e-8,-0.002107741182028866,-4.8210487087105704e-5,-4.968358842430621e-8,-0.0021076938773007476,-4.820714020935879e-5,-4.9681591379790985e-8,-0.0021076680383246907,-4.827513281127266e-5,-4.975399170959863e-8,-0.002107630376401887,-4.842654419791798e-5,-4.991432609044488e-8,-0.0021075425159545343,-4.865523284848443e-5,-5.015711147352186e-8,-0.0021073713272879244,-4.893349928726431e-5,-5.045403692151433e-8,-0.002107101054149504,-4.921621165090497e-5,-5.075804312180078e-8,-0.00210674158544731,-4.9453141274911964e-5,-5.1016160495136004e-8,-0.0021063277292051657,-4.960526660686225e-5,-5.1186657637328415e-8,-0.0021059088236712936,-4.965767137535703e-5,-5.1252729209342855e-8,-0.002105533355710234,-4.962333434846008e-5,-5.122672710022117e-8,-0.002105235298687669,-4.953725574759237e-5,-5.114433301511661e-8,-0.0021050267301768173,-4.9444765358431426e-5,-5.105262008384059e-8,-0.0021048975954977385,-4.938895653500951e-5,-5.099704564916817e-8,-0.0021048209457205044,-4.940083264676395e-5,-5.1011036159970786e-8,-0.0021047611320736954,-4.9493878141675046e-5,-5.110997819652719e-8,-0.0021046825545899023,-4.9663315734863536e-5,-5.1290024568352304e-8,-0.002104557033149279,-4.98893453161492e-5,-5.1531150434198844e-8,-0.0021043684802190066,-5.0143026698940785e-5,-5.1803180748147716e-8,-0.002104114312419352,-5.0393089164750924e-5,-5.2073008844431506e-8,-0.0021038039107087792,-5.0611974369170696e-5,-5.2311154609061635e-8,-0.002103455142864527,-5.077997300985246e-5,-5.249634587215205e-8,-0.0021030901973043527,-5.088713159052434e-5,-5.261767665298347e-8,-0.002102731754757487,-5.093327497583167e-5,-5.2674658453290784e-8,-0.002102400038249737,-5.0926853473763044e-5,-5.267593710089334e-8,-0.002102110741705476,-5.088333895282607e-5,-5.2637516149960456e-8,-0.002101873489403106,-5.08235740242651e-5,-5.2580999673824274e-8,-0.0021016904381226816,-5.07720385838116e-5,-5.2531862498246874e-8,-0.0021015548084289933,-5.0754644122074386e-5,-5.2517309070279127e-8,-0.002101449525764805,-5.079541727592946e-5,-5.256294807274047e-8,-0.002101346863688587,-5.091147619245311e-5,-5.268753767417356e-8,-0.0021012107625705593,-5.110647842638639e-5,-5.2895930277749896e-8,-0.0021010036231113496,-5.1364431323432054e-5,-5.317225671965255e-8,-0.0021006978474307205,-5.164780092740599e-5,-5.347763770609452e-8,-0.0021002887607210427,-5.1904283966139336e-5,-5.3757151991875933e-8,-0.0020998017811831972,-5.2082983385010847e-5,-5.3956856249473105e-8,-0.002099287305051419,-5.2153786677272464e-5,-5.404424493360183e-8,-0.002098803714303415,-5.211938886395136e-5,-5.402099729340937e-8,-0.0020983970909576486,-5.201310176200273e-5,-5.392087032373497e-8,-0.0020980879471518285,-5.1884788106360025e-5,-5.379525398388802e-8,-0.0020978694594535633,-5.178355560077695e-5,-5.3695353664609535e-8,-0.0020977146033212875,-5.1744897802943776e-5,-5.3658858151211176e-8,-0.0020975867206337855,-5.17850538647107e-5,-5.370387698001164e-8,-0.002097449252174256,-5.1901448471996434e-5,-5.382901325735156e-8,-0.0020972727165282454,-5.2076755488728516e-5,-5.4017187239652266e-8,-0.002097038679265766,-5.228448053746355e-5,-5.424119501315798e-8,-0.002096741115512614,-5.2494770950254756e-5,-5.446974146690214e-8,-0.0020963856479537316,-5.267968073580639e-5,-5.467310941300608e-8,-0.0020959871806476727,-5.281730553664611e-5,-5.482773870037851e-8,-0.002095566547851664,-5.2894425618154075e-5,-5.49192091763326e-8,-0.0020951467983804607,-5.2907580747666326e-5,-5.494346629557186e-8,-0.0020947496865052926,-5.2862703551995284e-5,-5.490641407062349e-8,-0.00209439283463895,-5.277366064911636e-5,-5.482230500560337e-8,-0.002094087719578533,-5.266022168051224e-5,-5.471156076175677e-8,-0.0020938383034884785,-5.2545818362760925e-5,-5.459846822588298e-8,-0.00209364009071615,-5.245512424241938e-5,-5.4508786421523974e-8,-0.002093479524987209,-5.241128303972207e-5,-5.4467015989831044e-8,-0.002093333866675805,-5.243244496307399e-5,-5.449285675295966e-8,-0.002093172238328941,-5.25272454837531e-5,-5.459637339444828e-8,-0.002092959192295158,-5.2689536740216397e-5,-5.47721861308031e-8,-0.002092662162437497,-5.289419192472436e-5,-5.4994709404817255e-8,-0.002092262731012093,-5.3097515495686634e-5,-5.5218327291160634e-8,-0.0020917682925749906,-5.3246152076680836e-5,-5.5386719323868286e-8,-0.0020912168729252238,-5.32948950916572e-5,-5.5451705931345774e-8,-0.00209066831104737,-5.322638039161152e-5,-5.539407826225248e-8,-0.002090182976448214,-5.306061034027742e-5,-5.523368866112795e-8,-0.0020897991792229852,-5.2847036022818596e-5,-5.502129784760488e-8,-0.0020895220312050072,-5.264403046194828e-5,-5.481735951820511e-8,-0.002089327651578887,-5.2498344531242285e-5,-5.4670817165440435e-8,-0.002089176601984936,-5.243402752975581e-5,-5.46075905285881e-8,-0.002089027832962104,-5.2451886161662154e-5,-5.462976227025945e-8,-0.002088848145979607,-5.253524957931374e-5,-5.4721159636310425e-8,-0.002088616519163286,-5.265749417095675e-5,-5.485481113266398e-8,-0.0020883247601802828,-5.278870213189013e-5,-5.499971074275159e-8,-0.0020879761659435914,-5.290068935685728e-5,-5.512613172786507e-8,-0.002087583221816599,-5.297058683962383e-5,-5.520959628157752e-8,-0.002087164777385674,-5.29832296796577e-5,-5.5233626895864976e-8,-0.002086742950109644,-5.2932455223265686e-5,-5.519126877302781e-8,-0.002086339956581604,-5.282138748957507e-5,-5.508542075950947e-8,-0.0020859750527439137,-5.266171847400609e-5,-5.492801945295256e-8,-0.0020856618891764334,-5.247200185689632e-5,-5.4738177469182e-8,-0.0020854066000901466,-5.227520696881749e-5,-5.453962120190033e-8,-0.0020852067040709943,-5.209587655834655e-5,-5.4357819901512334e-8,-0.002085050761531667,-5.19570440334916e-5,-5.421693100956444e-8,-0.0020849188250382576,-5.187695475340274e-5,-5.4136513752244604e-8,-0.0020847838283227895,-5.1865633386018315e-5,-5.4127943797766366e-8,-0.002084614302700284,-5.192134366393279e-5,-5.4190517439071605e-8,-0.002084379177216386,-5.202743147570318e-5,-5.4307801867957737e-8,-0.0020840552632532838,-5.2151132764179095e-5,-5.444603412637725e-8,-0.0020836367229090016,-5.2246983387897786e-5,-5.4557508305702125e-8,-0.0020831432642481086,-5.226727446908682e-5,-5.45915998704627e-8,-0.00208262110484632,-5.217892051956154e-5,-5.451267651801983e-8,-0.0020821314693878165,-5.1979995231158984e-5,-5.4317639028435655e-8,-0.002081728580818981,-5.170500269403149e-5,-5.404156653193917e-8,-0.0020814384597434145,-5.1412711832119855e-5,-5.374512512192592e-8,-0.0020812512548079114,-5.1162601970100065e-5,-5.349017232141276e-8,-0.0020811301739922143,-5.0993981576040526e-5,-5.331814200443522e-8,-0.0020810288964036128,-5.091778800135395e-5,-5.324144113486929e-8,-0.0020809068797548306,-5.0920708246115815e-5,-5.324742058440525e-8,-0.002080737412895719,-5.0975044648063965e-5,-5.330822538299496e-8,-0.0020805090765344805,-5.104836915559959e-5,-5.339054776415609e-8,-0.0020802235105041346,-5.111032019083676e-5,-5.3462654102947513e-8,-0.0020798920087048986,-5.113645247824958e-5,-5.349856905196274e-8,-0.0020795322310856322,-5.111013067736273e-5,-5.3480319452971573e-8,-0.002079165270330489,-5.102337145825212e-5,-5.339903379738613e-8,-0.002078812929807196,-5.0877027322918444e-5,-5.325522084868336e-8,-0.0020784951021789507,-5.0680399754512935e-5,-5.3058323468374344e-8,-0.0020782272019827155,-5.0450194248135284e-5,-5.2825530483115977E-08,-0.002078017796904138,-5.020860124030872e-5,-5.257971627504764e-8,-0.002077866846658982,-4.998045829403398e-5,-5.234652763334412e-8,-0.002077764949227266,-4.9789769777337244e-5,-5.215090293742938e-8,-0.002077693796213007,-4.96559598259346e-5,-5.201333928555749e-8,-0.002077627945643406,-4.959024266445353e-5,-5.1946199184189877e-8,-0.0020775379573369774,-4.959258117963107e-5,-5.1950458272378425e-8,-0.002077394847759163,-4.964972754567608e-5,-5.20133946027985e-8,-0.0020771757956997636,-4.973494898228385e-5,-5.2107934240242226e-8,-0.0020768707597667575,-4.981047198397003e-5,-5.21948928946358e-8,-0.002076488719453658,-4.9833950263944744e-5,-5.222962698296795e-8,-0.0020760607752435137,-4.976947981592237e-5,-5.217368787144459e-8,-0.0020756363255762,-4.960119521007246e-5,-5.2009327355383566e-8,-0.0020752699804712604,-4.934370262592132e-5,-5.175068444401802e-8,-0.002075002258206543,-4.904167747827994e-5,-5.144355599514386e-8,-0.002074843505137487,-4.875527236421879e-5,-5.115030112001243e-8,-0.002074770885112081,-4.85375576824606e-5,-5.092642497342114e-8,-0.0020747400769557814,-4.841647775431193e-5,-5.080178737543361e-8,-0.00207470360549399,-4.839002227744564e-5,-5.077538800998163e-8,-0.0020746254988324455,-4.843356303392952e-5,-5.082265162308837e-8,-0.002074487411936633,-4.8512066229528486e-5,-5.090778965666528e-8,-0.002074287589063454,-4.8590652566310444e-5,-5.099462507142112e-8,-0.0020740364229402913,-4.864094211986411e-5,-5.105327235216716e-8,-0.0020737516117730406,-4.864364377231825e-5,-5.1063071939584795e-8,-0.0020734542779023923,-4.858893563414716e-5,-5.101324060777878e-8,-0.0020731661303226793,-4.847596434842968e-5,-5.090249495797251e-8,-0.0020729072209830705,-4.831209437291138e-5,-5.073826475982897e-8,-0.002072693884949742,-4.81119863715466e-5,-5.053563043378728e-8,-0.0020725366574624164,-4.789627336170478e-5,-5.031584456326077e-8,-0.002072438244777095,-4.76894406001386e-5,-5.0104114550785046e-8,-0.0020723920062757552,-4.751664405123388e-5,-4.992640119935618e-8,-0.002072381620741844,-4.7399626029792626e-5,-4.980535122260885e-8,-0.002072382493146707,-4.735231857382114e-5,-4.975587690759763e-8,-0.002072365126038206,-4.737703392101369e-5,-4.9781211913094104e-8,-0.0020723002115636837,-4.746229500170882e-5,-4.987048608611002e-8,-0.002072164686144449,-4.758318793891755e-5,-4.9998772052492005e-8,-0.0020719476479477516,-4.7704672733856255e-5,-5.0130175273880784e-8,-0.0020716548762382742,-4.778785681354576e-5,-5.0224127220180263E-08,-0.002071310506859259,-4.779875995902617e-5,-5.0244500497020163e-8,-0.0020709542977483263,-4.7718213318121765e-5,-5.017014103512715e-8,-0.002070633392768585,-4.755018007788747e-5,-5.0003890279004845e-8,-0.0020703892518739446,-4.7324560969728754e-5,-4.9775852540256276e-8,-0.002070243556064142,-4.709095642120351e-5,-4.953713265926498e-8,-0.002070189582318923,-4.690347790577672e-5,-4.93441179578025e-8,-0.002070194443298303,-4.6802416516879245e-5,-4.9239360290252976e-8,-0.002070211781957937,-4.680166452708117e-5,-4.923831183218621e-8,-0.0020701982102484394,-4.688757653287808e-5,-4.9327848095478144e-8,-0.0020701254502533,-4.702784331254064e-5,-4.947517696147768e-8,-0.002069984310820259,-4.718405080239909e-5,-4.9640685225447364e-8,-0.002069781881963152,-4.732196406548829e-5,-4.978861540585559e-8,-0.002069535727065262,-4.741708010271714e-5,-4.989300757237092e-8,-0.0020692682062174064,-4.7456088345065395e-5,-4.993946266170168e-8,-0.0020690022999483347,-4.743604483466135e-5,-4.9924473337753236e-8,-0.0020687589325963695,-4.736278778201662e-5,-4.9853830021207306e-8,-0.0020685552095647745,-4.724938104372905e-5,-4.9740931313843226e-8,-0.0020684029471759965,-4.7114721697835956e-5,-4.9605222607596616e-8,-0.002068307113632894,-4.698198596032385e-5,-4.9470525465095644e-8,-0.002068264210735056,-4.6876359384872586e-5,-4.936274057243991e-8,-0.0020682611085878133,-4.682161851644506e-5,-4.930645763105391e-8,-0.002068275207205279,-4.683559588593652e-5,-4.932042167102954e-8,-0.002068276840995726,-4.692525626768796e-5,-4.941250393336782e-8,-0.0020682343681795467,-4.708286526062035e-5,-4.9575641749325084e-8,-0.002068121336074826,-4.728509807584928e-5,-4.9786665145860586e-8,-0.002067923897843404,-4.7496385865671217e-5,-5.0009436305109905e-8,-0.0020676460373650566,-4.7676378285878495e-5,-5.0202301586995866e-8,-0.0020673105644500745,-4.77898332491647e-5,-5.032822287464823e-8,-0.002066955050994269,-4.781625324925658e-5,-5.036486940750825e-8,-0.0020666233471462645,-4.7756464778773514e-5,-5.0311739548860085e-8,-0.002066354580310086,-4.763398187934115e-5,-5.0191974764700023E-08,-0.0020661724200392493,-4.7490128745401975e-5,-5.004766473653001e-8,-0.0020660778693884388,-4.737345115377653e-5,-4.9929071504630356e-8,-0.002066048524221078,-4.732603099287772e-5,-4.9880421809209325e-8,-0.0020660453797246812,-4.737129330364156e-5,-4.992704483799921e-8,-0.0020660250285791494,-4.7508085193365105e-5,-5.006889477610717e-8,-0.0020659523841825966,-4.7713206060515434e-5,-5.028283650859611e-8,-0.0020658090029066624,-4.795053885650078e-5,-5.053188956294247e-8,-0.002065594771846483,-4.818222569886375e-5,-5.0776768516938594e-8,-0.002065324117375244,-4.837752105633615e-5,-5.0985184294608874e-8,-0.002065019767433622,-4.851728875182688e-5,-5.1136723525022014e-8,-0.0020647068446275245,-4.8594594783670716e-5,-5.1223668798557995e-8,-0.0020644086381638085,-4.861304972472082e-5,-5.124938607964203e-8,-0.002064144097864555,-4.8584434676873395e-5,-5.122584536957933e-8,-0.002063926468637026,-4.852647936788248e-5,-5.1171225339119544e-8,-0.0020637623786124806,-4.846100605905334e-5,-5.11079143446867e-8,-0.0020636508879348973,-4.841213269692522e-5,-5.106066445180714e-8,-0.002063582435238546,-4.8403934845334516e-5,-5.1054290024565175e-8,-0.002063538168965467,-4.8457018960260466e-5,-5.1110281108115146e-8,-0.002063490642966396,-4.858388401565267e-5,-5.12421042751145e-8,-0.002063407082221286,-4.8783799285689586e-5,-5.144985988199522e-8,-0.0020632559577338995,-4.9039126710606216e-5,-5.1716281192541857e-8,-0.0020630160427410785,-4.931581340272001e-5,-5.200696102828744e-8,-0.002062684941410063,-4.95699691789468e-5,-5.2276889335559116e-8,-0.0020622829172062315,-4.9759696099219955e-5,-5.2482526161209284e-8,-0.0020618491854511264,-4.9858113731482825e-5,-5.259526114699326e-8,-0.0020614313126430684,-4.98622055714111e-5,-5.261072103110058e-8,-0.0020610717124268244,-4.979388598943105e-5,-5.255018976438976e-8,-0.00206079622917913,-4.9693307260769264e-5,-5.2454091838812215e-8,-0.002060608259750969,-4.960738794563041e-5,-5.2370482519734586e-8,-0.0020604893759882652,-4.957747244117635e-5,-5.234243575739418e-8,-0.0020604054583355405,-4.962944279368117e-5,-5.239769021503708e-8,-0.00206031622426224,-4.976850689463904e-5,-5.254290844467591e-8,-0.0020601854537221713,-4.997959938080869e-5,-5.276367005121703e-8,-0.002059989171420568,-5.0232827495872717e-5,-5.3029781808228276e-8,-0.0020597197607184654,-5.049196909900188e-5,-5.330394627200139e-8,-0.002059385412596773,-5.0723251719086136e-5,-5.35509256812709e-8,-0.002059005920337264,-5.0901931837912855e-5,-5.374455696877302e-8,-0.0020586068325025636,-5.1015438910330984e-5,-5.387122879648511e-8,-0.0020582139353274493,-5.106332394108202e-5,-5.3929977985066915e-8,-0.0020578492211639973,-5.105516573900859e-5,-5.3930358175955645e-8,-0.002057528552028513,-5.100771436745336e-5,-5.388943054436595e-8,-0.0020572605931187234,-5.094215881551009e-5,-5.382886471043966e-8,-0.0020570463828137086,-5.088182315066045e-5,-5.3772543032440546e-8,-0.0020568790450358394,-5.0850080664488783e-5,-5.3744486331419684e-8,-0.0020567435004348058,-5.086799254343324e-5,-5.376655829843546e-8,-0.0020566165172875277,-5.0951144908211624e-5,-5.38553140117008e-8,-0.002056468009873697,-5.1105440079060466e-5,-5.40176449522486e-8,-0.002056264887091375,-5.13224346701609e-5,-5.4245796040435814e-8,-0.0020559784072281106,-5.157623756835036e-5,-5.451389058844007e-8,-0.0020555942713637253,-5.1825209665744814e-5,-5.4779432398487804e-8,-0.0020551217432332926,-5.202108670480498e-5,-5.4992587084446835e-8,-0.002054595971680873,-5.212442299521637e-5,-5.511211091620739e-8,-0.002054069540827032,-5.212000715115373e-5,-5.51213256728815e-8,-0.0020535954582683582,-5.202381128623128e-5,-5.503543356010499e-8,-0.002053209667556904,-5.187728707364314e-5,-5.48959111155173e-8,-0.002052921320923942,-5.1732422490422854e-5,-5.4755490408141264e-8,-0.0020527136286440546,-5.163540619096735e-5,-5.466165472016251e-8,-0.002052552370246584,-5.16152962902263e-5,-5.464504010682952e-8,-0.002052397089200715,-5.167979779085585e-5,-5.471483931427527e-8,-0.0020522111175157827,-5.1817015362214554e-5,-5.4860156203498216e-8,-0.002051968552414977,-5.200091488002448e-5,-5.505518884494557e-8,-0.002051657757119859,-5.219838699551085e-5,-5.5266251947721564e-8,-0.0020512816489339715,-5.237636228823249e-5,-5.5459107581815276e-8,-0.0020508553095427784,-5.2507832957142995e-5,-5.5605365688318714e-8,-0.0020504017421625635,-5.2575890404729004e-5,-5.568690921630114e-8,-0.002049946887543557,-5.257533993074332e-5,-5.5697769382127575e-8,-0.002049514984834118,-5.251207506856239e-5,-5.5643570315387093e-8,-0.0020491250330573053,-5.240083953067565e-5,-5.553919797775131e-8,-0.0020487886736325817,-5.226219084775036e-5,-5.540559549606092e-8,-0.002048509350314085,-5.211942672300324e-5,-5.526655233827838e-8,-0.0020482822912756475,-5.1995876311308334e-5,-5.514595440180733e-8,-0.0020480948969156336,-5.191250486751777e-5,-5.506543751527602e-8,-0.0020479273660762303,-5.188554270222557e-5,-5.5042078174011434e-8,-0.002047753716271682,-5.19237834715236e-5,-5.5085654827554707e-8,-0.002047543853386551,-5.202532476066097e-5,-5.5195172880639046e-8,-0.0020472677925593256,-5.2174216124140644e-5,-5.535514660858792e-8,-0.002046902870774027,-5.2338771760351975e-5,-5.553355877045675e-8,-0.0020464432837271392,-5.247451873274851e-5,-5.568470840459575e-8,-0.0020459084093877532,-5.253449204712567e-5,-5.575981860047395e-8,-0.002045343640214381,-5.2486027294355265e-5,-5.5724461720487053e-8,-0.002044808785656605,-5.2326853813685626e-5,-5.557525555895152e-8,-0.002044356731611969,-5.208986005362827e-5,-5.534487592771635e-8,-0.002044013525552351,-5.183141847200364e-5,-5.5090255370018856e-8,-0.002043771226817781,-5.160953417781544e-5,-5.48704621303244e-8,-0.0020435956589243583,-5.1464429347744986e-5,-5.472704260792385e-8,-0.0020434418674889353,-5.1410036594933055e-5,-5.4675282541850294e-8,-0.0020432684427998627,-5.14362548539681e-5,-5.470618039648655e-8,-0.0020430462096218717,-5.1516940304592496e-5,-5.4794150517663037e-8,-0.0020427612302023604,-5.161886518563504e-5,-5.490581755587025e-8,-0.002042413976632722,-5.170911019925943e-5,-5.50074620408479e-8,-0.0020420165420526716,-5.1760253982835196e-5,-5.5070471238764245e-8,-0.0020415890123641396,-5.1753638794210315e-5,-5.507496856439569e-8,-0.002041155494939975,-5.168102371657047e-5,-5.501178570621877e-8,-0.0020407401651533347,-5.154474405169965e-5,-5.488278817879703e-8,-0.0020403637204026146,-5.135653343018677e-5,-5.4699684377973364e-8,-0.002040040576882192,-5.113526412477106e-5,-5.448162890443747e-8,-0.002039777091455139,-5.09039490226065e-5,-5.425206240270826e-8,-0.0020395709362431877,-5.068649756636404e-5,-5.4035371776647424e-8,-0.002039411459954195,-5.050467571637247e-5,-5.385385724355181e-8,-0.002039280756574348,-5.037542727193322e-5,-5.372512326084712e-8,-0.0020391552857087123,-5.030852534711591e-5,-5.365977061904039e-8,-0.0020390080427771986,-5.030447590753775e-5,-5.365921376204627e-8,-0.002038811568452725,-5.0352607930303213e-5,-5.3713516384989046e-8,-0.0020385424324039243,-5.042973944197244e-5,-5.379970190700536e-8,-0.0020381875739485158,-5.050077044952324e-5,-5.388206675784495e-8,-0.0020377516616928775,-5.052330199125621e-5,-5.391680200972993e-8,-0.0020372625651711995,-5.045802416725423e-5,-5.386277190055731e-8,-0.0020367698775526524,-5.028392416035833e-5,-5.3697376840582164e-8,-0.0020363321435952564,-5.001196000452072e-5,-5.34308014077663e-8,-0.0020359951521852593,-4.968703486004547e-5,-5.310816086035136e-8,-0.0020357726478473404,-4.937288418461528e-5,-5.279414480895378e-8,-0.0020356419556401216,-4.9126855995544544e-5,-5.2547399322285394e-8,-0.002035556684070434,-4.897959533240644e-5,-5.2399885499866514e-8,-0.0020354668174017705,-4.892970414356411e-5,-5.2351307750795756e-8,-0.0020353344578759418,-4.8951698867931034e-5,-5.237686688565701e-8,-0.0020351402813209166,-4.900893595997211e-5,-5.2440021527677685e-8,-0.0020348825479860966,-4.906468718670452e-5,-5.250353037457378e-8,-0.0020345726105927375,-4.908894182699448e-5,-5.253641005057569e-8,-0.002034229863541913,-4.906144649731033e-5,-5.251727392128725e-8,-0.002033877432711455,-4.897243922319491e-5,-5.2435389666249733e-8,-0.002033538711092817,-4.882223756648143e-5,-5.2290488844127926e-8,-0.002033234470164266,-4.8620156756388854e-5,-5.2091736421230884e-8,-0.0020329804185158853,-4.838285072517303e-5,-5.185597492180308e-8,-0.0020327852353072594,-4.813206614562613e-5,-5.160531630998899e-8,-0.002032649254192641,-4.789178910703803e-5,-5.136415864036497e-8,-0.00203256409568354,-4.7684964149517676e-5,-5.115586867184493e-8,-0.002032513412831578,-4.7530207576543425e-5,-5.099954932398015e-8,-0.0020324746777436327,-4.743890663944881e-5,-5.0907215491822745e-8,-0.002032421864725609,-4.741298395352246e-5,-5.088156196373777e-8,-0.002032328861343699,-4.744359026821503e-5,-5.091451930689139e-8,-0.002032173443614939,-4.7510913626487626e-5,-5.098678990055797e-8,-0.002031941783002499,-4.75853718193778e-5,-5.106873150905396e-8,-0.0020316332829377146,-4.763092567556373e-5,-5.112349305662727e-8,-0.002031264678451989,-4.7611506845454626e-5,-5.111354889776993e-8,-0.0020308711459007655,-4.7500835256465015e-5,-5.101094070015697e-8,-0.002030501384939176,-4.7293891553481265e-5,-5.0809346057054425e-8,-0.0020302046550841244,-4.7015069114082157e-5,-5.053271389164446e-8,-0.002030012417735536,-4.6715860633814e-5,-5.023306514824246e-8,-0.0020299237206302333,-4.645858056483108e-5,-4.997393446583235e-8,-0.002029904534219609,-4.629246101907128e-5,-4.980599835191041e-8,-0.0020299027081861383,-4.6235733219535855e-5,-4.974874457112798e-8,-0.0020298691085456756,-4.6273355836021885e-5,-4.9787942532947575e-8,-0.002029772836986357,-4.6368492929145236e-5,-4.9886997870461254e-8,-0.0020296053518841788,-4.6478270704142267e-5,-5.0002696473796485e-8,-0.0020293762284797076,-4.6565779984025805e-5,-5.009732090515303e-8,-0.0020291058975264805,-4.660586503998099e-5,-5.0144678766039385e-8,-0.0020288190745721122,-4.658611551409667e-5,-5.013139050785385e-8,-0.0020285401833065263,-4.650544482721242e-5,-5.0055709880198454e-8,-0.0020282905163081324,-4.637198758862261e-5,-4.9925521941264115e-8,-0.0020280863812595215,-4.6201017541421475e-5,-4.975620376898143e-8,-0.002027937697407739,-4.6012910954525015e-5,-4.95684364968778e-8,-0.0020278468548150497,-4.5830932166805734e-5,-4.938584335030445e-8,-0.0020278079352926354,-4.5678563130217145e-5,-4.923225233991149e-8,-0.0020278066732735607,-4.5576287146234076e-5,-4.9128512005390405e-8,-0.0020278216052989797,-4.553814792964579e-5,-4.908913495339701e-8,-0.0020278266184087235,-4.5568694544187735e-5,-4.91192941943901e-8,-0.0020277947861438816,-4.566099727855335e-5,-4.921277950752152e-8,-0.0020277030598136164,-4.579640243999685e-5,-4.9351559556919325e-8,-0.0020275370670149273,-4.5946459644631754e-5,-4.950743825762933e-8,-0.0020272951641109476,-4.6077038467505365e-5,-4.964594133297112e-8,-0.0020269909380996286,-4.615441491887575e-5,-4.9732349917762104e-8,-0.002026653192492816,-4.615293081887066e-5,-4.973956903588067e-8,-0.002026322209052732,-4.606314805429271e-5,-4.965671815932576e-8,-0.0020260414134917063,-4.5898197313257225e-5,-4.949598467985722e-8,-0.002025845064816443,-4.569487890022771e-5,-4.929407616837752e-8,-0.0020257453978966516,-4.550622741121225e-5,-4.9104815330766504e-8,-0.0020257254701901042,-4.538541867435896e-5,-4.898274157296879e-8,-0.0020257433889951937,-4.536680350718691e-5,-4.89636608578841e-8,-0.0020257476215753702,-4.5453789008186565e-5,-4.905208248604179e-8,-0.002025695654193513,-4.562012774480506e-5,-4.922225373647776e-8,-0.0020255663701208917,-4.582262170758979e-5,-4.943082479997011e-8,-0.0020253618227586557,-4.6016984020625265e-5,-4.963283638283841e-8,-0.00202510099803616,-4.6169328034816214e-5,-4.979343944742674e-8,-0.002024811017417274,-4.626077683867761e-5,-4.989278000082901e-8,-0.002024519795827304,-4.6286832571634604e-5,-4.992561400738215e-8,-0.0020242514862415977,-4.625433913083903e-5,-4.989840752411386e-8,-0.002024024252686185,-4.617810969109077e-5,-4.982595556164917e-8,-0.0020238493406938953,-4.607808430854788e-5,-4.972841725462505e-8,-0.0020237306112493255,-4.597702408116703e-5,-4.96288581956967e-8,-0.002023664162763472,-4.589834984431947e-5,-4.955099750636145e-8,-0.0020236381094273855,-4.586365827157764e-5,-4.951673189348936e-8,-0.0020236329502209293,-4.5889656355000434e-5,-4.954314934249165e-8,-0.002023623153744319,-4.5984715081919234e-5,-4.963915423232379e-8,-0.0020235804546441657,-4.6145777376813115e-5,-4.980235686787022e-8,-0.002023478863220688,-4.635676148666589e-5,-5.0017332271608656e-8,-0.0020233006158513526,-4.658965624449702e-5,-5.025648223081647e-8,-0.002023041531229927,-4.6808945440860525e-5,-5.048423155390615e-8,-0.0020227139642913913,-4.6978896318268104e-5,-5.066420578545552e-8,-0.002022346013528821,-4.7072161309276584e-5,-5.0767917079637096e-8,-0.002021976583923614,-4.7077557162162256e-5,-5.0782829172766134e-8,-0.002021646938817805,-4.700482993717928e-5,-5.071753209060727e-8,-0.0020213903373314294,-4.688457071627136e-5,-5.060204845365824e-8,-0.00202122225761361,-4.676225438165741e-5,-5.048208770780828e-8,-0.002021134399579563,-4.668682793085823e-5,-5.040757499631068e-8,-0.0020210955157597492,-4.66964938733245e-5,-5.041810897949245e-8,-0.002021060207166187,-4.680660727557303e-5,-5.053039604591645e-8,-0.0020209831787395298,-4.700501284627893e-5,-5.073317426465869e-8,-0.0020208331782008873,-4.7257207541469374e-5,-5.0992163914768974e-8,-0.002020600749527367,-4.751873684499668e-5,-5.126249359928724e-8,-0.002020297495132843,-4.7748817668834114e-5,-5.150253416122725e-8,-0.002019949045350994,-4.791973032907616e-5,-5.168357842505219e-8,-0.002019586148214338,-4.801998291591459e-5,-5.1793273968425187e-8,-0.0020192374342056386,-4.8052601996660434e-5,-5.183409256541799e-8,-0.002018925159106304,-4.8031175323490096e-5,-5.181942050354247e-8,-0.0020186634942643855,-4.797571811880198e-5,-5.1769350061628944e-8,-0.002018458307559683,-4.7909321720409155e-5,-5.17071934570522e-8,-0.0020183074793059634,-4.7855657746552463e-5,-5.1656878184229704e-8,-0.0020182012242393878,-4.783688725574289e-5,-5.164083264519561e-8,-0.0020181224346406887,-4.7871384574551e-5,-5.167777089044754e-8,-0.002018047515893418,-4.797092449356852e-5,-5.177995991815182e-8,-0.0020179484270965854,-4.813745696818201e-5,-5.1950004632217014e-8,-0.0020177966111187182,-4.836022705575067e-5,-5.217785319666721e-8,-0.0020175689778127058,-4.861471743161788e-5,-5.243952149084699e-8,-0.0020172549083493363,-4.886518940475764e-5,-5.2699404555608824e-8,-0.0020168618491771245,-4.9071739379400246e-5,-5.291720278700551e-8,-0.0020164165457899337,-4.920074189090056e-5,-5.305839885690176e-8,-0.0020159601254947663,-4.923537724905972e-5,-5.310497994930823e-8,-0.0020155377782343923,-4.9182101111894395e-5,-5.3062208619770655e-8,-0.0020151863264922898,-4.9070186505180795e-5,-5.2958496549887175e-8,-0.0020149239683831454,-4.894424255995497e-5,-5.28381974040878e-8,-0.002014745466484543,-4.8852234007670655e-5,-5.2749744360003565e-8,-0.002014623980385843,-4.8832737442584404e-5,-5.2732795661562924E-08,-0.0020145187675945538,-4.8905033515197663e-5,-5.2807996323674024e-8,-0.002014386463354211,-4.9064737170752646e-5,-5.297217537397421e-8,-0.0020141926071653754,-4.928613889269881e-5,-5.3200321420099145e-8,-0.002013919923050992,-4.953032530867741e-5,-5.3453543629696204e-8,-0.002013571006866503,-4.975617191211685e-5,-5.369014468097558e-8,-0.0020131652167542056,-4.993046123284049e-5,-5.3875992139383384e-8,-0.002012731692604997,-5.0034158097124634e-5,-5.399109718532883e-8,-0.0020123014742402913,-5.0063845602625036e-5,-5.403129483295887e-8,-0.00201190121087524,-5.002933955111049e-5,-5.4005977959494064e-8,-0.002011549521326985,-4.994945558883987e-5,-5.393385164637899e-8,-0.002011255743455944,-4.984764678639762e-5,-5.383846809376056e-8,-0.0020110201985696686,-4.974843179222414e-5,-5.374453985485008e-8,-0.002010835083772604,-4.9674777295965575e-5,-5.367526613695328e-8,-0.0020106854277154628,-4.964606496865315e-5,-5.365032901804489e-8,-0.0020105500400673802,-4.9676073962541255e-5,-5.3683953076972764e-8,-0.0020104028617102853,-4.9770593190928885e-5,-5.3782559234610896e-8,-0.0020102154280196164,-4.992472116898015e-5,-5.39419945769669e-8,-0.002009961203093299,-5.01205774324166e-5,-5.4145045648848874e-8,-0.0020096220475094026,-5.032702956215601e-5,-5.436091558231032e-8,-0.0020091956873586328,-5.0503577918817376e-5,-5.454893403638213e-8,-0.0020087010935627442,-5.060963041617747e-5,-5.466782814365228e-8,-0.0020081776870822868,-5.06175125618987e-5,-5.468889528583259e-8,-0.0020076760813480246,-5.052404157729019e-5,-5.4607820427235687e-8,-0.0020072426309083852,-5.03543523152836e-5,-5.444874990717472e-8,-0.0020069043511348767,-5.015493124700536e-5,-5.42575575233768e-8,-0.0020066610667815107,-4.997871174697851e-5,-5.40871357697118e-8,-0.0020064875013838,-4.98690470565664e-5,-5.3981449732444325e-8,-0.0020063429428621477,-4.9848723760962696e-5,-5.396442162152271e-8,-0.0020061836818402717,-4.991653940438004e-5,-5.40361687618578e-8,-0.0020059740082301832,-5.005060728795719e-5,-5.4175883241144576e-8,-0.0020056933781890086,-5.021595398427699e-5,-5.434910207886136e-8,-0.0020053390005447076,-5.037374382076034e-5,-5.4516829286568113e-8,-0.0020049242019915922,-5.048986269802197e-5,-5.464425732666e-8,-0.0020044736538592134,-5.054119841472836e-5,-5.470733410760349e-8,-0.0020040170112563204,-5.0518666909647305e-5,-5.469609132681992e-8,-0.002003582651521957,-5.0426916644760484e-5,-5.461455429534083e-8,-0.002003192848389794,-5.028151267800684e-5,-5.4477987905210974e-8,-0.0020028610069787686,-5.010484787898947e-5,-5.430874706071043e-8,-0.0020025908720933084,-4.992194480586509e-5,-5.413196542421391e-8,-0.0020023771463984017,-4.9756918400443195e-5,-5.3971933421660555e-8,-0.002002206808863418,-4.963034306888264e-5,-5.384945799572805e-8,-0.0020020606277349035,-4.955729195151486e-5,-5.3779965287491494e-8,-0.002001914752160842,-4.9545629165052306e-5,-5.377186303277142e-8,-0.0020017426370449094,-4.959424701946217e-5,-5.382477021649585e-8,-0.0020015178700865826,-4.9691252782268014e-5,-5.392756337052816e-8,-0.002001218597218113,-4.981272984636775e-5,-5.4056892268100934e-8,-0.0020008337756181305,-4.9923598500677135e-5,-5.417780009747694e-8,-0.002000370096206164,-4.998267559890689e-5,-5.4248682766537245e-8,-0.0019998563334538166,-4.995319905600739e-5,-5.423191853970226e-8,-0.0019993405058199324,-4.981692900508882e-5,-5.4108211202206056e-8,-0.0019988771595501596,-4.958544642961348e-5,-5.388813032255459e-8,-0.001998508235516319,-4.930060305686856e-5,-5.361273486836377e-8,-0.0019982470792282445,-4.902112276864653e-5,-5.3340329163181614e-8,-0.001998074636703137,-4.880149849864028e-5,-5.31255233957502e-8,-0.0019979490776461596,-4.867431780069525e-5,-5.300163018068865e-8,-0.001997822100817167,-4.864355803151583e-5,-5.2973805172126e-8,-0.0019976535169998273,-4.8688691267618395e-5,-5.3022777123200866e-8,-0.001997419552504148,-4.8774601604832057e-5,-5.311433704727912e-8,-0.001997114744774493,-4.8862226688571974e-5,-5.320970261330998e-8,-0.0019967494607951706,-4.891701856579829e-5,-5.3273961127601174e-8,-0.0019963452028423133,-4.8914377496388965e-5,-5.328171644965104e-8,-0.0019959291743273603,-4.884227819040176e-5,-5.3220032150562435e-8,-0.0019955289872912786,-4.870151669163586e-5,-5.3088954045228216e-8,-0.001995168161878916,-4.850401085939419e-5,-5.289994962557313e-8,-0.0019948628903654394,-4.8269744288963775e-5,-5.267284224427861e-8,-0.0019946202670904343,-4.8023026531601735e-5,-5.2431967802807096e-8,-0.0019944379707342885,-4.7788675113880514e-5,-5.220224766362233e-8,-0.0019943051797844005,-4.7588659781935926e-5,-5.200579146376313e-8,-0.0019942042706509,-4.743954711749449e-5,-5.1859386167826104e-8,-0.001994112859914415,-4.735069680607469e-5,-5.1772781475901097e-8,-0.001994006037341234,-4.732295848864623e-5,-5.1747440313270875e-8,-0.001993858894812306,-4.7347710668200726e-5,-5.177551950964653e-8,-0.0019936496579878314,-4.740627635058635e-5,-5.18390919640976e-8,-0.001993363861819001,-4.7470190253398286e-5,-5.1910146838977426e-8,-0.0019929996205191062,-4.7503541595903896e-5,-5.195272017060764e-8,-0.0019925728195238626,-4.746902878186876e-5,-5.1928915188607375e-8,-0.001992119310680294,-4.7338527946317814e-5,-5.1809644671995214e-8,-0.001991689987214206,-4.710613654808492e-5,-5.1587956392584026e-8,-0.0019913363447532006,-4.6797293437381455e-5,-5.128838764343941e-8,-0.0019910904742861894,-4.6465669201456026e-5,-5.096398901617266e-8,-0.001990950368197197,-4.617513909028325e-5,-5.067840830528089e-8,-0.0019908806466250022,-4.5975167125504204e-5,-5.048140368418561e-8,-0.0019908285309041696,-4.5883747649525306e-5,-5.039181646697579e-8,-0.0019907446103717484,-4.588605349155747e-5,-5.039601315964357e-8,-0.0019905972795608703,-4.59456274268961e-5,-5.045866854053545e-8,-0.0019903769307380295,-4.601920467643337e-5,-5.053718566759492e-8,-0.001990092573971516,-4.60683822052351e-5,-5.059317403618827e-8,-0.0019897653271612717,-4.6066023946311286e-5,-5.059894157366422e-8,-0.0019894219047486518,-4.5998288524238066e-5,-5.0539804388693425e-8,-0.001989089388356069,-4.5864029542767294e-5,-5.041380553085208e-8,-0.001988791342582684,-4.5672889943786124e-5,-5.023002279694939e-8,-0.0019885450270769787,-4.544267119758317e-5,-5.000598811628438e-8,-0.001988359611822744,-4.519623780012269e-5,-4.9764511439258186e-8,-0.001988235373861473,-4.4958196634044265e-5,-4.9530237154278555e-8,-0.001988163874878257,-4.475155292368226e-5,-4.932622435749737e-8,-0.0019881291494703197,-4.4594624487372946e-5,-4.917088069716583e-8,-0.0019881097672433527,-4.449860634103792e-5,-4.907562319610449e-8,-0.0019880814361664893,-4.446599676205845e-5,-4.9043404078743095e-8,-0.001988019896370336,-4.448984902371915e-5,-4.90679788963876e-8,-0.0019879040251158317,-4.455382789815783e-5,-4.9133842968146527e-8,-0.001987719144006088,-4.463316087772778e-5,-4.921694042093964e-8,-0.001987460558236463,-4.46967620556441e-5,-4.9286514917244204e-8,-0.0019871370966062707,-4.471122399257981e-5,-4.9308929889939364e-8,-0.0019867735413332,-4.464753053386993e-5,-4.925440944020967e-8,-0.0019864096922321078,-4.449046879624519e-5,-4.910667619111871e-8,-0.001986093293887148,-4.424847454638656e-5,-4.887310764941467e-8,-0.0019858657165408035,-4.395851101024967e-5,-4.858986252843164e-8,-0.0019857444502105696,-4.36793761172567e-5,-4.831531748591886e-8,-0.0019857123157436644,-4.3471892985409506e-5,-4.811032585031551e-8,-0.001985722442942424,-4.3374678707536145e-5,-4.801403302963816e-8,-0.001985717837909519,-4.3389861516746215e-5,-4.802953349265059e-8,-0.0019856536347009303,-4.348657983914437e-5,-4.812711300883761e-8,-0.001985509793314366,-4.3617293200771854e-5,-4.826016677840372e-8,-0.001985291041141802,-4.373551017512467e-5,-4.8382599589213666e-8,-0.001985018982825112,-4.380710889702349e-5,-4.8460059289153266e-8,-0.00198472269519155,-4.381413163467009e-5,-4.8473904889146595e-8,-0.0019844313817317153,-4.3753602107519224e-5,-4.8420335013601454e-8,-0.0019841698777690116,-4.3634265418978614e-5,-4.830740886578302e-8,-0.00198395631013117,-4.347308097731399e-5,-4.815167459106861e-8,-0.00198380093609794,-4.32920529085931e-5,-4.7974972464015794e-8,-0.0019837056325942176,-4.311530044265703e-5,-4.7801388949448075e-8,-0.0019836639326078916,-4.2966205027643966e-5,-4.765430103584804e-8,-0.0019836616788419274,-4.2864560277764126e-5,-4.755351001687462e-8,-0.0019836784835310212,-4.2823816969524074e-5,-4.75125667742844e-8,-0.0019836901334029686,-4.284880913635948e-5,-4.753661876885519e-8,-0.0019836717844280323,-4.293443985340406e-5,-4.7621167559884083e-8,-0.001983601577361672,-4.306561983656408e-5,-4.775195443764006e-8,-0.00198346427639853,-4.321860830029743e-5,-4.79061064744248e-8,-0.001983254503428399,-4.3363817575379086e-5,-4.805466061004061e-8,-0.001982979128261479,-4.3470011868281195e-5,-4.8166508580713625e-8,-0.0019826583317162807,-4.350982227820718e-5,-4.8213806615591725e-8,-0.0019823245270563744,-4.346642997860529e-5,-4.817876549475533e-8,-0.0019820179079688013,-4.334055689306835e-5,-4.806092503305833e-8,-0.0019817776241884424,-4.315546627647395e-5,-4.788249609663614e-8,-0.001981629243341138,-4.295622121243347e-5,-4.768788218876515e-8,-0.00198157253207564,-4.279964969343516e-5,-4.753376447678903e-8,-0.0019815768110193243,-4.273555993575656e-5,-4.747031671641675e-8,-0.0019815896914275643,-4.2786939561310826e-5,-4.752132323658576e-8,-0.001981556964728314,-4.294065163758243e-5,-4.767470277125102e-8,-0.001981442898715948,-4.315455768342111e-5,-4.788935301045354e-8,-0.001981239994932547,-4.337586664281439e-5,-4.811318043326988e-8,-0.001980965615592369,-4.3559380683812036e-5,-4.830112897720887e-8,-0.001980651104271411,-4.3677669740602314e-5,-4.842535724700544e-8,-0.001980330622165264,-4.37224614567855e-5,-4.8476842035870866e-8,-0.001980033601616317,-4.370082309922366e-5,-4.846185712372692e-8,-0.001979781186553916,-4.362987461869388e-5,-4.8396913373778846e-8,-0.0019795853426471683,-4.35321462310607e-5,-4.8304189751421825e-8,-0.001979449164923876,-4.343211096476673e-5,-4.8208004801788516e-8,-0.001979367516891493,-4.335355049589747e-5,-4.81320762404166e-8,-0.0019793277939190233,-4.331724667908914e-5,-4.8097157631997425e-8,-0.0019793109779484602,-4.333865671006025e-5,-4.811875302716466e-8,-0.00197929334115372,-4.342552864224307e-5,-4.8204839307820454e-8,-0.0019792491585166726,-4.3575840607934675e-5,-4.835390191602501e-8,-0.0019791544719827683,-4.377676979296662e-5,-4.855390559455163e-8,-0.0019789914659854206,-4.400538864917376e-5,-4.878285284376596e-8,-0.001978752618067997,-4.423151487384888e-5,-4.9011380729146134e-8,-0.001978443571552841,-4.442266642057841e-5,-4.920743293376487e-8,-0.0019780837559768326,-4.455044155192306e-5,-4.93424419569069e-8,-0.001977704189216635,-4.459716325964112e-5,-4.9397956177720134e-8,-0.0019773423735596264,-4.4561466986321577e-5,-4.937141684655841e-8,-0.001977034607825835,-4.446140319979623e-5,-4.927959934097138e-8,-0.0019768066566202684,-4.433345001834858e-5,-4.915798984075471e-8,-0.0019766648048065616,-4.422600808807836e-5,-4.905454320636164e-8,-0.001976590642014865,-4.418718038152136e-5,-4.901754862575995e-8,-0.0019765433922679146,-4.424941926591262e-5,-4.908018505043689e-8,-0.0019764714799322142,-4.441704193678446e-5,-4.924782281001948e-8,-0.0019763299672662825,-4.466351711965738e-5,-4.949503779025665e-8,-0.0019760958592488333,-4.494111748014449e-5,-4.9774988214425593e-8,-0.001975773776278894,-4.519821653836421e-5,-5.003649186587927e-8,-0.001975390495162118,-4.539533451112828e-5,-5.0239976118785304e-8,-0.0019749831859174212,-4.551335871876182e-5,-5.0365773681986254e-8,-0.0019745879207018306,-4.555320514137526e-5,-5.041400386812903e-8,-0.0019742323786003236,-4.553037719774458e-5,-5.039938833552872e-8,-0.0019739331147513276,-4.5468406296927464e-5,-5.03448680797245e-8,-0.001973695819172792,-4.539349471122782e-5,-5.0276287499947574e-8,-0.0019735168135767726,-4.533089935511781e-5,-5.0218721062822205e-8,-0.0019733846944876474,-4.5302611923024283e-5,-5.019408501320979e-8,-0.0019732817668098417,-4.532562487218592e-5,-5.021939519624579e-8,-0.0019731854504376916,-4.5410207074392044e-5,-5.0305107394665245e-8,-0.0019730701622044603,-4.5557997564901036e-5,-5.045329830787116e-8,-0.001972910223039121,-4.576026673732602e-5,-5.0655959638034884e-8,-0.001972684031500541,-4.5997198476817514E-05,-5.0894198826261366e-8,-0.001972379090884328,-4.623929153514652e-5,-5.113944114811148e-8,-0.001971996635686588,-4.6451727228890164e-5,-5.135753400078218e-8,-0.0019715539766186102,-4.660160044857538e-5,-5.1515737334611745e-8,-0.0019710828542270687,-4.6666477609024985e-5,-5.159115485388241e-8,-0.001970623298040414,-4.664162896085638e-5,-5.1578016403124346e-8,-0.001970214212090245,-4.65432620191606e-5,-5.1491151948029e-8,-0.001969883242927487,-4.6406229230851866e-5,-5.1364075446337285e-8,-0.001969638857557791,-4.627639846031354e-5,-5.124174919757445e-8,-0.001969467008160238,-4.6199420166105754e-5,-5.116961866658035e-8,-0.0019693336914688433,-4.6208627966382286e-5,-5.1181552597747694e-8,-0.001969193371546135,-4.631535486871011e-5,-5.128996338486575e-8,-0.0019690015104308046,-4.650497733936632e-5,-5.148150977961362e-8,-0.001968727504736385,-4.6740821064600386e-5,-5.172064567922468e-8,-0.001968363316252578,-4.697522012612561e-5,-5.196041523031695e-8,-0.00196792440570595,-4.71636765838571e-5,-5.2156492160433425e-8,-0.001967443051877653,-4.727655930735045e-5,-5.227890703313716e-8,-0.0019669575953292872,-4.730437768201357e-5,-5.2317472555509746e-8,-0.0019665022928231123,-4.7256201646844035e-5,-5.228042290007389e-8,-0.0019661009362071376,-4.715377406937989e-5,-5.218873377314962e-8,-0.0019657647779907092,-4.702464970878444e-5,-5.206938544394163e-8,-0.001965493477560509,-4.689660585321579e-5,-5.194979398067257e-8,-0.001965277377825799,-4.6794002474408414e-5,-5.185413345399812e-8,-0.001965099914950498,-4.67357278760477e-5,-5.1801254050097615e-8,-0.0019649396611614903,-4.673397854378611e-5,-5.180348656861776e-8,-0.0019647721014879383,-4.6793187059781656e-5,-5.186563289514447e-8,-0.0019645716558417217,-4.690878647692816e-5,-5.1983771468773974e-8,-0.0019643145874512157,-4.706604455706395e-5,-5.214404907793817e-8,-0.001963983213520618,-4.7239795327600476e-5,-5.232226406608289e-8,-0.0019635711534783046,-4.7396399391850306e-5,-5.248560550378622e-8,-0.0019630881783210172,-4.749923158841316e-5,-5.2597912011238834e-8,-0.0019625620385825687,-4.7517783547080394e-5,-5.262860028092075e-8,-0.001962034600536159,-4.743810866143697e-5,-5.2563034466538445e-8,-0.001961551663459193,-4.7270187530390955e-5,-5.2409958425237556e-8,-0.0019611493437624405,-4.7047867070956564e-5,-5.2201684891901307e-8,-0.0019608425118726406,-4.682012526184868e-5,-5.198578136085175e-8,-0.001960620223510975,-4.663679110534357e-5,-5.1811253235307756e-8,-0.00196044964691645,-4.65343886842311e-5,-5.1714684022350806e-8,-0.001960286244385532,-4.652696232149927e-5,-5.171103424799668e-8,-0.0019600861987816276,-4.660393314075276e-5,-5.1791161198884274e-8,-0.001959817384072231,-4.673447845393499e-5,-5.192571546679343e-8,-0.0019594663672666632,-4.687647620848606e-5,-5.207366237327364e-8,-0.0019590402013480103,-4.69873681531962e-5,-5.219291849091948e-8,-0.0019585630459199917,-4.7034093216261266e-5,-5.2250281015410575e-8,-0.0019580689434451474,-4.699963912862847e-5,-5.222813797470916e-8,-0.001957593098636109,-4.6884855780413277E-05,-5.212650982795257e-8,-0.0019571642607120374,-4.6705755925512453e-5,-5.196056523166988e-8,-0.001956800031936092,-4.648795164335014e-5,-5.175520387715332e-8,-0.0019565055327110657,-4.626040613743492e-5,-5.1538868280151164e-8,-0.001956274664949442,-4.605019885705157e-5,-5.133830575689433e-8,-0.0019560927255029953,-4.587904903303501e-5,-5.117507505063576e-8,-0.001955939273522816,-4.5761480824035993e-5,-5.106372503209461e-8,-0.00195579066288265,-4.570401845100373e-5,-5.101104052329391e-8,-0.001955622211363207,-4.570476038673568e-5,-5.101566680936453e-8,-0.001955410378080181,-4.575298140689403e-5,-5.1067700552761083e-8,-0.0019551355106216866,-4.5828851541139104e-5,-5.114829612455283e-8,-0.0019547856381423576,-4.590392133545704e-5,-5.122995115968192e-8,-0.001954361197611504,-4.594364275569868e-5,-5.127880370114713e-8,-0.001953879361532978,-4.591336545457481e-5,-5.126044894606853e-8,-0.001953375159198017,-4.5788157126795125e-5,-5.114965466945004e-8,-0.0019528960573228693,-4.556404200060815e-5,-5.094156483201756e-8,-0.0019524888638265663,-4.52650121756844e-5,-5.0658773399677315e-8,-0.0019521829510683111,-4.493969555783338e-5,-5.03482415102804e-8,-0.001951978224705543,-4.4646436883604996e-5,-5.006686001308755e-8,-0.0019518449631389671,-4.4433199757164185e-5,-4.9861909053352045e-8,-0.0019517355290165363,-4.43223575013476e-5,-4.9756164208185047e-8,-0.0019516011374687279,-4.430667685873654e-5,-4.9743737900243164e-8,-0.0019514058087092413,-4.4355660121435736e-5,-4.979589561049797e-8,-0.0019511334488388776,-4.442707829644108e-5,-4.987196748279403e-8,-0.0019507882121724506,-4.4478635729643045e-5,-4.993057447552316e-8,-0.0019503903208332868,-4.447687118184344e-5,-4.9938400968221414e-8,-0.0019499696523796678,-4.440237013879302e-5,-4.9875550740711113e-8,-0.0019495587983859016,-4.425144642123595e-5,-4.973750799595954e-8,-0.0019491867583722598,-4.403481674939329e-5,-4.953408613857425e-8,-0.001948874170726926,-4.3773966244990976e-5,-4.928597425302703e-8,-0.0019486306854478142,-4.3496186610003896e-5,-4.901984567298104e-8,-0.0019484545808215287,-4.322941742227304e-5,-4.876319520040075e-8,-0.0019483342448092852,-4.299784164805793e-5,-4.853991498678627e-8,-0.0019482508367361243,-4.281882578092175e-5,-4.8367249272998264E-08,-0.0019481813406516451,-4.2701332047739913e-5,-4.8254265238426306e-8,-0.001948101431884755,-4.2645465612550796e-5,-4.820147285858156e-8,-0.0019479880023605153,-4.2642663695294445e-5,-4.820104258643957e-8,-0.0019478215084132696,-4.267621983914629e-5,-4.823725928348993e-8,-0.0019475884766814169,-4.2722120831818105e-5,-4.8287176766687065e-8,-0.001947284537476418,-4.2750605376743135e-5,-4.832193112023108e-8,-0.0019469179020162252,-4.272943149953421e-5,-4.830978464674593e-8,-0.001946512130701754,-4.2629987351193034e-5,-4.8222103668448865e-8,-0.0019461057920909896,-4.243645483759409e-5,-4.804249139879382e-8,-0.0019457459924259364,-4.2155871844775294e-5,-4.777688442978733e-8,-0.001945474433914433,-4.182357814670306e-5,-4.745909633402526e-8,-0.0019453099923769398,-4.149726260691403e-5,-4.7145127891331156e-8,-0.0019452376149965635,-4.123797713130104e-5,-4.689469161507122e-8,-0.0019452123501192205,-4.108646923628689e-5,-4.67481344270079e-8,-0.0019451775408544185,-4.104846697515171e-5,-4.671199913017461e-8,-0.001945086305653114,-4.10964890190002e-5,-4.67605464329462e-8,-0.00194491498170104,-4.118420798055841e-5,-4.6849415350206084e-8,-0.0019446649566739968,-4.1263439193324884e-5,-4.693190382853436e-8,-0.0019443564891179575,-4.129638690638195e-5,-4.6970831215838533e-8,-0.001944019871009889,-4.126124977537125e-5,-4.694416268183079e-8,-0.0019436874568431314,-4.115267744009283e-5,-4.6845757576426216e-8,-0.0019433878283089455,-4.097933082895468e-5,-4.668329117893592e-8,-0.0019431420227587768,-4.076018683375537e-5,-4.64748293924473e-8,-0.001942961425049852,-4.052037587530838e-5,-4.624478413720799e-8,-0.001942847090506267,-4.028693694379081e-5,-4.6019666043409794e-8,-0.001942790358890472,-4.008483999357206e-5,-4.5824064376144906e-8,-0.0019427745871054582,-3.9933607897037706e-5,-4.5677259981585586e-8,-0.0019427777616891982,-3.984486508728241e-5,-4.559083113158273e-8,-0.0019427755865315058,-3.982107608163827e-5,-4.556748866183424e-8,-0.0019427445679542873,-3.985544668643988e-5,-4.5601049016244416e-8,-0.0019426648249855798,-3.9932722126588916e-5,-4.5677213148583996e-8,-0.0019425225723483325,-4.003067731752825e-5,-4.577491057145826e-8,-0.00194231231186212,-4.0122223590998573e-5,-4.586815250812175e-8,-0.001942038840723702,-4.017825071467646e-5,-4.592859500544757e-8,-0.0019417189403766162,-4.017172995117602e-5,-4.592943591477745e-8,-0.0019413817963929902,-4.0083668653272205e-5,-4.5851299075569445e-8,-0.0019410663758636533,-3.9910612776753746e-5,-4.5689797651230024e-8,-0.0019408138567119492,-3.9671609827259084e-5,-4.546263553447091e-8,-0.0019406546006421536,-3.941021451110704e-5,-4.52117972507066e-8,-0.001940593319235403,-3.918608994782784e-5,-4.499543804327817e-8,-0.0019406012767298,-3.905498590278002e-5,-4.486832358067523e-8,-0.001940623920404477,-3.904542284858823e-5,-4.4859006867683975e-8,-0.0019406025544464632,-3.914639483061919e-5,-4.495769578301747e-8,-0.001940497520876102,-3.931411884703988e-5,-4.512260307194805e-8,-0.001940299698239888,-3.949212761192832e-5,-4.5299254342045724e-8,-0.0019400271696272137,-3.9631546521015266e-5,-4.5440050246729585e-8,-0.0019397134945464904,-3.970249901148748e-5,-4.55153769119164e-8,-0.0019393955892964717,-3.969592038203203e-5,-4.551557626730208e-8,-0.0019391053846128947,-3.961966037424788e-5,-4.544745102453445e-8,-0.0019388656601532564,-3.9492805816283906e-5,-4.532898685003671e-8,-0.0019386887618311728,-3.9340423201373115e-5,-4.518433473733331e-8,-0.0019385768153243493,-3.9189313030825355e-5,-4.5039624737876385e-8,-0.0019385226755074644,-3.9064588188579694e-5,-4.491950007652083e-8,-0.0019385113945777103,-3.89868350713039e-5,-4.4844233237342264e-8,-0.0019385222021650083,-3.8969763524809525e-5,-4.48273957066787e-8,-0.0019385310528990875,-3.9018436577778017e-5,-4.4874176736247263E-08,-0.001938513684450707,-3.912838732750907e-5,-4.498060099930697e-8,-0.0019384488723173468,-3.928589530112374e-5,-4.51338353807561e-8,-0.001938321483040145,-3.946943857740446e-5,-4.531354277085539e-8,-0.0019381250107120861,-3.965222629013153e-5,-4.5494184057548586e-8,-0.0019378633026130548,-3.9805684583894356e-5,-4.5648196322549064e-8,-0.0019375512317700392,-3.990367219926965e-5,-4.574992768613837e-8,-0.0019372141057675222,-3.9927275177831916e-5,-4.5780279834495175e-8,-0.0019368852732491004,-3.987006414845319e-5,-4.573198875575406e-8,-0.0019366009982821448,-3.9743041431457964e-5,-4.561474398462704e-8,-0.001936392008214114,-3.9577268369624826e-5,-4.545806912288991e-8,-0.0019362725887905185,-3.9421116423997146e-5,-4.530885190760244e-8,-0.0019362308367980837,-3.93293215936308e-5,-4.522070434461868e-8,-0.0019362265448863605,-3.934447117414749e-5,-4.5235796012735197e-8,-0.0019362021567699314,-3.947831204143984e-5,-4.5366449130396565e-8,-0.0019361044622756712,-3.9704499044345756e-5,-4.558787687093552e-8,-0.0019359055467726995,-3.9969038024905696e-5,-4.5848165191453386e-8,-0.001935610918476163,-4.0212436952495197e-5,-4.608967212085328e-8,-0.0019352522767100955,-4.0390248298052926e-5,-4.626892936144965e-8,-0.001934872343550989,-4.04826572347339e-5,-4.636602580928481e-8,-0.0019345110162189247,-4.0492973987788945e-5,-4.6383349171738214e-8,-0.0019341974042064007,-4.0440353373262014e-5,-4.633877244453355e-8,-0.00193394745527741,-4.035183976460438e-5,-4.6258113992407355e-8,-0.0019337648831009675,-4.025623586702828e-5,-4.6169223646382756e-8,-0.001933643297940725,-4.018010690860001e-5,-4.6098017218746215e-8,-0.0019335684391845415,-4.014524819687492e-5,-4.606588963420782e-8,-0.0019335202829593439,-4.016691288990378e-5,-4.608791074426844e-8,-0.001933475196842574,-4.025240778009302e-5,-4.617145854048994e-8,-0.0019334084174011334,-4.039999941699849e-5,-4.6315210257224784e-8,-0.0019332970460884604,-4.0598441631085976e-5,-4.6508730328468455e-8,-0.0019331234337040622,-4.0827636234276635e-5,-4.67330881859333e-8,-0.0019328784570221483,-4.1060782189105156e-5,-4.69628242270068e-8,-0.001932564016748744,-4.126806268614148e-5,-4.716934132885776e-8,-0.0019321940512386387,-4.14215942181376e-5,-4.732552837106896e-8,-0.001931793485630655,-4.1500945427768556e-5,-4.741103326315836e-8,-0.0019313948975945483,-4.149824340283206e-5,-4.741729676503009e-8,-0.0019310330346188518,-4.142188515293687e-5,-4.7351395895912765e-8,-0.0019307375352558293,-4.1297801414388954e-5,-4.723760067108958e-8,-0.0019305246932332914,-4.116693684145903e-5,-4.711522060800814e-8,-0.0019303901558369954,-4.107771840039374e-5,-4.7031429532281454e-8,-0.001930305702440573,-4.1073507327231025e-5,-4.70290097302363e-8,-0.001930223661133537,-4.117772149833033e-5,-4.71316652941459e-8,-0.0019300904151773313,-4.1382707713134946e-5,-4.733292449466249e-8,-0.0019298652063116251,-4.1649473063614e-5,-4.7595646288971316e-8,-0.0019295353407003367,-4.192078311450537e-5,-4.786461098057043e-8,-0.0019291195029987889,-4.214178037375372e-5,-4.8086494979264673e-8,-0.0019286581510240075,-4.227740391874418e-5,-4.822680388860586e-8,-0.0019281977027044515,-4.23190945630982e-5,-4.827648982478889e-8,-0.001927776949794641,-4.228093381957044e-5,-4.8248402386580654e-8,-0.0019274200721663662,-4.219051722902683e-5,-4.8168652620736966e-8,-0.001927135772707496,-4.20798850584923e-5,-4.8067954346620734e-8,-0.0019269198332215003,-4.197912027142969e-5,-4.797542280744417e-8,-0.0019267586318278405,-4.1912777277154615e-5,-4.7915023022203665e-8,-0.0019266323173630316,-4.189820026513446e-5,-4.7903834928403336e-8,-0.0019265173637764677,-4.194471819140883e-5,-4.795122144177823e-8,-0.0019263888011234276,-4.205308385953557e-5,-4.805829680961167e-8,-0.0019262225974915343,-4.221501646557592e-5,-4.821751718558146e-8,-0.0019259985568891125,-4.2413183674726635e-5,-4.8412658231367925e-8,-0.0019257037357562376,-4.262227688328076e-5,-4.861977364178274e-8,-0.0019253358507307667,-4.281183412618318e-5,-4.88097763412886e-8,-0.0019249056464002532,-4.295109158693287e-5,-4.895296804974039e-8,-0.00192443696510101,-4.3015405547280085e-5,-4.9025146674251664e-8,-0.001923963576351099,-4.299286159649854e-5,-4.901401418858055e-8,-0.0019235227456985294,-4.288907110417211e-5,-4.892397352513479e-8,-0.0019231466972611288,-4.2728295806226845e-5,-4.8777489495455956e-8,-0.0019228540148536525,-4.2549887097491935e-5,-4.861195243355361e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json new file mode 100644 index 0000000000..654063534a --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":10000,"numberOfSamples":1000,"samples":[1.9197471616856318e-4,7.996600532056201e-6,-1.2597360486632112e-8,1.923979354906972e-4,8.059544161443208e-6,-1.2601754449986743e-8,1.9274745963100852e-4,8.18217092448731e-6,-1.2612185701149495e-8,1.9301410614298842e-4,8.328459694631899e-6,-1.2625220207854334e-8,1.9320200661086356e-4,8.46367290461882e-6,-1.263746635903232e-8,1.933256574311564e-4,8.557979990756902e-6,-1.264596926377846e-8,1.9340729897750835e-4,8.588749871695277e-6,-1.2648467217789009e-8,1.9347454382165973e-4,8.54234886551231e-6,-1.2643575641672086e-8,1.9355780445299317e-4,8.41580428718647e-6,-1.2630935191527253e-8,1.9368703586457032e-4,8.218144650907273e-6,-1.2611321617725655e-8,1.9388759494511673e-4,7.970728457914735e-6,-1.2586673932584885e-8,1.9417557384287807e-4,7.70570255454025e-6,-1.2559972916060515e-8,1.9455353413614596e-4,7.461994170668981e-6,-1.2534909842557773e-8,1.950079268750979e-4,7.278838435440244e-6,-1.2515320800328438e-8,1.9550946566497787e-4,7.1877009230743185e-6,-1.250443183656935e-8,1.9601716991058025e-4,7.204296880679899e-6,-1.2504049076168112e-8,1.964858622143666e-4,7.322751895738212e-6,-1.2513893072518937e-8,1.9687601817327312e-4,7.513719443070609e-6,-1.2531293180978063e-8,1.9716418145619786e-4,7.727807131336245e-6,-1.255143733487227e-8,1.9735148270881055e-4,7.904972006017888e-6,-1.256828984627858e-8,1.9746717430474582e-4,7.989189307001313e-6,-1.2576107854737417e-8,1.9756414464783983e-4,7.945391162788686e-6,-1.2571208909452543e-8,1.9770522673983343e-4,7.772936988045046e-6,-1.255336219063038e-8,1.9794335851555265e-4,7.508737590816236e-6,-1.2526112219574885e-8,1.9830340643788719e-4,7.216310774252375e-6,-1.2495704511570225e-8,1.9877444051722307e-4,6.9643475770128966e-6,-1.2468991956480241e-8,1.9931605492441463e-4,6.804754497374457e-6,-1.2451273955690413e-8,1.99874367496323e-4,6.7599548302468994e-6,-1.2444993679265321e-8,2.0039900027274713e-4,6.82270849799812e-6,-1.2449629419202722e-8,2.0085428305204736e-4,6.964723431631095e-6,-1.2462470630692901e-8,2.012230129828281e-4,7.147810040913146e-6,-1.2479705950981818e-8,2.015048844233702e-4,7.3331078822919305e-6,-1.2497376827881843e-8,2.0171260728942556e-4,7.4869143007848404e-6,-1.2512018298014086e-8,2.0186784837753266e-4,7.583663846056725e-6,-1.2521002574264202e-8,2.0199788115223623e-4,7.6072954724533325e-6,-1.252268798054521e-8,2.0213287762151582e-4,7.552075776678594e-6,-1.25164799413586e-8,2.023032713093168e-4,7.423389313956485e-6,-1.250287524528341e-8,2.025365492604393e-4,7.238354929979809e-6,-1.2483501654253962e-8,2.0285312487000682e-4,7.025543178481034e-6,-1.2461102098633864e-8,2.032615548180566e-4,6.822697696785637e-6,-1.2439358398961576e-8,2.037542292355152e-4,6.671464949679808e-6,-1.2422433892723618e-8,2.043054648544205e-4,6.609017340781519e-6,-1.241418367286807e-8,2.0487402079284614e-4,6.658061470286973e-6,-1.2417141084804209e-8,2.0541091916908847e-4,6.8183286453880834e-6,-1.2431576848491557e-8,2.0587131297464264e-4,7.063148440915905e-6,-1.2455025250029365e-8,2.0622704282800456e-4,7.343452105811302e-6,-1.2482583077772363e-8,2.064756840198449e-4,7.598950788494315e-6,-1.2508013979414962e-8,2.0664282168786132e-4,7.773572333271332e-6,-1.2525372054527937e-8,2.0677643799377142e-4,7.830732911241555e-6,-1.2530654293509096e-8,2.069346139971509e-4,7.763969732585166e-6,-1.252297208136234e-8,2.0716968071363143e-4,7.599507240572051e-6,-1.2504868071919612e-8,2.075133831394106e-4,7.389324388835024e-6,-1.2481637303243253e-8,2.079680047158014e-4,7.196295440443784e-6,-1.2459822238997104e-8,2.0850678511286473e-4,7.076223630712314e-6,-1.2445361216516968e-8,2.09083353603553e-4,7.063208010991012e-6,-1.2442027977015235e-8,2.0964607359171694e-4,7.163288146015455e-6,-1.245068068918884e-8,2.1015153998119444e-4,7.357300167494584e-6,-1.2469466055778998e-8,2.105729208467013e-4,7.6098914082299795e-6,-1.2494715588623496e-8,2.1090206952705673e-4,7.880059152858419e-6,-1.2522068534104855e-8,2.1114705135521922e-4,8.129688725332927e-6,-1.2547426277362978e-8,2.11327623932954e-4,8.328785948689606e-6,-1.2567558359396523e-8,2.1147063027153733e-4,8.45781981905388e-6,-1.2580371063842255e-8,2.116062170779773e-4,8.508318739735103e-6,-1.2584953522756101e-8,2.1176489219544155e-4,8.482821664273282e-6,-1.2581533889456395e-8,2.1197487908306462e-4,8.394780190546323e-6,-1.2571439050506965e-8,2.1225908578335732e-4,8.268336110121104e-6,-1.2557075378613995e-8,2.1263125815806694e-4,8.137282943263268e-6,-1.2541867403695375e-8,2.1309149641396343e-4,8.042041677157666e-6,-1.2530015745409708e-8,2.1362232923984473e-4,8.023413973770414e-6,-1.2525906367685887e-8,2.141877185477536e-4,8.112834049185048e-6,-1.2533095524318957e-8,2.1473774581068903e-4,8.3210914871919e-6,-1.2553050116063849e-8,2.1522011129794914e-4,8.630080126066386e-6,-1.2584142235542132e-8,2.1559591766686086e-4,8.992908412392393e-6,-1.2621531987775295e-8,2.1585357677476676e-4,9.344915051726786e-6,-1.2658284937238318e-8,2.1601416666211921e-4,9.622593263837225e-6,-1.2687427039128446e-8,2.1612534488552648e-4,9.78287653756447e-6,-1.2704087855205246e-8,2.1624652249650514e-4,9.81514982519467e-6,-1.2706860844017089e-8,2.1643148366610137e-4,9.742398905621779e-6,-1.2697982257149455e-8,2.1671439125053968e-4,9.612686075077394e-6,-1.2682472194826136e-8,2.1710262618754617e-4,9.484942883597433e-6,-1.2666663487275253e-8,2.1757724992220657e-4,9.413689438536168e-6,-1.2656583095773519e-8,2.180998881122663e-4,9.436636301726828e-6,-1.2656579120301334e-8,2.1862349866680082e-4,9.567821662343242e-6,-1.2668481926430359e-8,2.1910382506955763e-4,9.797254291937394e-6,-1.2691451235088495e-8,2.1950852180187367e-4,1.0096209406878957e-5,-1.2722473686840802e-8,2.1982203208259762e-4,1.0425814221374339e-5,-1.2757289563240955e-8,2.2004593990235762e-4,1.0746017377170483e-5,-1.279141904043139e-8,2.2019594725035345e-4,1.1022697089033848e-5,-1.2821004358988786e-8,2.2029723714439854e-4,1.1231954282858246e-5,-1.284332207805951e-8,2.2037976133546005e-4,1.1361792925413278e-5,-1.285697045584737e-8,2.204743050715671e-4,1.1412058566647195e-5,-1.2861837839761607e-8,2.2060942735678435e-4,1.139360836886871e-5,-1.2858986747465736e-8,2.2080886496210573e-4,1.1327297175898568e-5,-1.2850546480647196e-8,2.2108883199633075e-4,1.1242779422350658e-5,-1.2839626876663463e-8,2.2145479727229533e-4,1.117656313941561e-5,-1.2830179748791994e-8,2.218978524119614e-4,1.1168241380550244e-5,-1.2826654765479383e-8,2.223918274118358e-4,1.125368271022084e-5,-1.2833271066266854e-8,2.2289360923823234e-4,1.1454892795233024e-5,-1.2852838922138324e-8,2.2334970247736352e-4,1.1768728623398749e-5,-1.288537714386462e-8,2.2371036423718345e-4,1.2159917386077626e-5,-1.2927189221052759e-8,2.2394786325905398e-4,1.2565129918165497e-5,-1.2971236046903973e-8,2.2407012789687003e-4,1.2910776320851335e-5,-1.3009149058543156e-8,2.2412080512659326e-4,1.3138423398335554e-5,-1.3034156281509835e-8,2.2416403518024246e-4,1.3225258584550226e-5,-1.3043432270151873e-8,2.242617193073924e-4,1.31895428771349e-5,-1.303873108036752e-8,2.244545122747121e-4,1.3080514119203897e-5,-1.302529805681681e-8,2.247533541484739e-4,1.2960154137190002e-5,-1.3009918312410972e-8,2.2514149681588606e-4,1.288542370013457e-5,-1.2999015386017868e-8,2.2558304221404233e-4,1.2896057941767493e-5,-1.2997297157850649e-8,2.2603369392279116e-4,1.3009117176953077e-5,-1.3007061790201875e-8,2.264507770082446e-4,1.3219243737167519e-5,-1.3028087674737915e-8,2.2680097981678127e-4,1.3502917845584759e-5,-1.3057987443448877e-8,2.2706512925085745e-4,1.3825112165154655e-5,-1.3092899943215674e-8,2.2723980182644377e-4,1.4146844760246526e-5,-1.312835960370297e-8,2.2733606659061404e-4,1.4432176615984899e-5,-1.316015072754668e-8,2.2737613010144923e-4,1.4653552288310205e-5,-1.3184975709050629e-8,2.2738889061095103e-4,1.4794967275872633e-5,-1.3200846957566375e-8,2.2740539458427508e-4,1.485298630857986e-5,-1.3207200828708261e-8,2.2745491914188558e-4,1.48361020505556e-5,-1.3204810600297655e-8,2.2756189301271438e-4,1.4763163136429955e-5,-1.3195611648549548e-8,2.2774342945347363e-4,1.4661392768367974e-5,-1.318251654013457e-8,2.2800711646406744e-4,1.4564073938727435e-5,-1.3169225227622847e-8,2.2834878588194946e-4,1.4507553748530596e-5,-1.3159958692847593e-8,2.287503519544513e-4,1.4526782542924386e-5,-1.3158983635572145e-8,2.2917872878590236e-4,1.4648464790645952e-5,-1.3169782666393387e-8,2.2958798770619958e-4,1.4881779191418465e-5,-1.3193861131791164e-8,2.2992738155013117e-4,1.5208892056563145e-5,-1.3229487616666131e-8,2.3015629354228862e-4,1.5580637661667213e-5,-1.3271075564489491e-8,2.3026234150305317e-4,1.5924292688085457e-5,-1.331008459441756e-8,2.3027280889853033e-4,1.6165999528322054e-5,-1.3337725131374554e-8,2.3024916735463958e-4,1.6259694822258185e-5,-1.3348408049319169e-8,2.3026415545918469e-4,1.6206222473384533e-5,-1.334196191813377e-8,2.303737207873722e-4,1.6050930760160185e-5,-1.3323325049974134e-8,2.3059936656605264e-4,1.586282236461781e-5,-1.3300188674521488e-8,2.309273397309413e-4,1.5709080036263402e-5,-1.328019137069129e-8,2.3131987266427655e-4,1.5637160807724585e-5,-1.3268952807786755e-8,2.3172978464227394e-4,1.5668110115491378e-5,-1.3269276372437528e-8,2.3211253167230013e-4,1.579838872190477e-5,-1.3281222326984168e-8,2.3243381968418038e-4,1.6005968044664794e-5,-1.3302645758738719e-8,2.326732628860945e-4,1.6257565449448583e-5,-1.3329918467555854e-8,2.3282524674238283e-4,1.651551762610959e-5,-1.3358697686405669e-8,2.3289788056306504e-4,1.674381866600482e-5,-1.3384673664069943e-8,2.3291052997145164e-4,1.6913063406322665e-5,-1.3404220672953126e-8,2.3289032072172143e-4,1.700401500413197e-5,-1.3414875180816028e-8,2.3286803858424185e-4,1.7009620439693355e-5,-1.3415595856352999e-8,2.328739025738482e-4,1.6935397883075238e-5,-1.3406804390503862e-8,2.3293373693946084e-4,1.6798289595216762e-5,-1.3390246403408823e-8,2.3306590757557672e-4,1.6624355851294292e-5,-1.3368746419574027e-8,2.3327907598190837e-4,1.6445739810291813e-5,-1.334591547674048e-8,2.3357067709120252e-4,1.6297106752196225e-5,-1.3325815392409889e-8,2.3392604926032666e-4,1.621152078481189e-5,-1.3312532903507163e-8,2.3431832644508823e-4,1.6215461539974096e-5,-1.3309583151627188e-8,2.3470981296471905e-4,1.6322593851986297e-5,-1.3319074542987742e-8,2.350563586266793e-4,1.6526652827706943e-5,-1.3340700335972787e-8,2.3531635632917516e-4,1.6795606538324656e-5,-1.3370882993466678e-8,2.3546449597391608e-4,1.7071515543042718e-5,-1.3402687449686616e-8,2.3550651143611578e-4,1.7281479296035646e-5,-1.3427194538859864e-8,2.354860662292638e-4,1.736119067195648e-5,-1.3436455207389577e-8,2.354745423562714e-4,1.7282664410910297e-5,-1.3426879119078932e-8,2.3554413988636483e-4,1.7069422488256228e-5,-1.340100684306105e-8,2.3573843359821594e-4,1.678735137254538e-5,-1.3366380140959267e-8,2.3605794175604995e-4,1.6516440745440828e-5,-1.333226482032832e-8,2.364666128436858e-4,1.6321330128306323e-5,-1.3306309980540544e-8,2.369106704107837e-4,1.6235316784717564e-5,-1.329272307712745e-8,2.373372411284009e-4,1.6259841608278305e-5,-1.3292124623119489e-8,2.3770594596677692e-4,1.6372931299750227e-5,-1.3302373390412671e-8,2.37993246071328e-4,1.6539681380754335e-5,-1.3319651568231e-8,2.3819211939730327e-4,1.6721074059761234e-5,-1.3339438365960858e-8,2.3830961030271236e-4,1.6880231173799742e-5,-1.335727306140373e-8,2.3836375681855868e-4,1.6986636247061285e-5,-1.3369334013755532e-8,2.3838035533166568e-4,1.701905501777484e-5,-1.33728675782703e-8,2.383895323005555e-4,1.6967478698558967e-5,-1.3366467989198284e-8,2.38422070556946e-4,1.6834089647268072e-5,-1.3350197399653409e-8,2.3850556570700744e-4,1.6633066038275236e-5,-1.3325545739040455e-8,2.3866072662191243e-4,1.6388979589520194e-5,-1.32952356240298e-8,2.3889832942241776e-4,1.613376763873816e-5,-1.3262897145540119e-8,2.3921726251748584e-4,1.5902571416136462e-5,-1.3232645062727092e-8,2.3960391772207974e-4,1.5728837101970084e-5,-1.3208572512056224e-8,2.4003306897066437e-4,1.5639090729009958e-5,-1.3194159292205045e-8,2.4047031694471747e-4,1.5647770280759835e-5,-1.3191601366742145e-8,2.408763192909911e-4,1.5752441997243236e-5,-1.320109658813078e-8,2.4121332685415593e-4,1.593012198481269e-5,-1.3220221033409507e-8,2.414543324312317e-4,1.6136500786482835e-5,-1.3243695130072412e-8,2.4159379503856346e-4,1.631092961927605e-5,-1.3263965868818756e-8,2.416563493402631e-4,1.6389819439386743e-5,-1.327294423034196e-8,2.416971351728686e-4,1.6327839253466488e-5,-1.3264745691624821e-8,2.4178793488179986e-4,1.611933231700696e-5,-1.323839068662466e-8,2.4199092390150611e-4,1.580664719687679e-5,-1.3198809867441091e-8,2.4233282522947923e-4,1.546635588883893e-5,-1.315515486800695e-8,2.42795161206397e-4,1.5179028049018296e-5,-1.3117189496490207e-8,2.4332560646111933e-4,1.5000197877739287e-5,-1.3091844309906427e-8,2.4386095630435782e-4,1.494730909943296e-5,-1.3081612462610715e-8,2.443476230301867e-4,1.5004081626133282e-5,-1.3084945993000656e-8,2.447521154769013e-4,1.513382584235183e-5,-1.3097713318885834e-8,2.4506227529865664e-4,1.529290726155764e-5,-1.3114741963102495e-8,2.4528352222681816e-4,1.5440210476210758e-5,-1.3130971246521739e-8,2.454337577216843e-4,1.554235342838633e-5,-1.3142157207141877e-8,2.4553879145722154e-4,1.5576059836117717e-5,-1.3145250706278301e-8,2.456286535961741e-4,1.5529165859651303e-5,-1.313858102750454e-8,2.4573440156436537e-4,1.5401067537156352e-5,-1.312192399297445e-8,2.4588495016140917e-4,1.5202739157127264e-5,-1.3096479904399723e-8,2.4610367254958987e-4,1.4956012999883382e-5,-1.3064759078539774e-8,2.4640490122437197e-4,1.4691580503364029e-5,-1.3030343464314749e-8,2.467909300514352e-4,1.444531172938255e-5,-1.299749108332309e-8,2.472503716788958e-4,1.4252978327617077e-5,-1.2970574858005676e-8,2.4775861981413225e-4,1.4143991993889015e-5,-1.2953383025503955e-8,2.482808292580495e-4,1.4135196216785739e-5,-1.2948356913590524e-8,2.4877732410946555e-4,1.4225995061342692e-5,-1.295589775406787e-8,2.492108317402965e-4,1.439598151292376e-5,-1.297390984283666e-8,2.495546496005041e-4,1.4605934664835293e-5,-1.2997753852338253e-8,2.4980058126312243e-4,1.4802976706468473e-5,-1.3020791083393111e-8,2.499648122532091e-4,1.4930522578149964e-5,-1.3035648974352602e-8,2.500889719183307e-4,1.4942625206491755e-5,-1.3036141981384923e-8,2.502332948927713e-4,1.4819937637970325e-5,-1.301942657528763e-8,2.5046053996871437e-4,1.458121681939785e-5,-1.2987549154608683e-8,2.508142835955966e-4,1.4282610184457833e-5,-1.294739872783118e-8,2.513011655620707e-4,1.4000896174505066e-5,-1.2908626141535389e-8,2.5188749805877945e-4,1.3806467779425598e-5,-1.288027326783674e-8,2.5251290861910285e-4,1.3739666020847875e-5,-1.286777210466249e-8,2.531129543478528e-4,1.3801980509944972e-5,-1.2871727408598455e-8,2.5363851477171943e-4,1.3963248403024858e-5,-1.288867324663838e-8,2.5406475771490327e-4,1.4177059797621997e-5,-1.2912910633960826e-8,2.543902585935145e-4,1.4395467555977205e-5,-1.2938351134914312e-8,2.5463093937902145e-4,1.457846819591566e-5,-1.295977796036463e-8,2.54813136638039e-4,1.4698160028561238e-5,-1.2973461632588474e-8,2.54967981581639e-4,1.4739503755468211e-5,-1.2977324579518188e-8,2.551274405562864e-4,1.4699654562096109e-5,-1.2970877284779953e-8,2.5532142348084824e-4,1.4587027197628657e-5,-1.2955077061468487e-8,2.5557518672666003e-4,1.4420380583572636e-5,-1.2932175481281603e-8,2.5590650103593743e-4,1.4227567224019883e-5,-1.2905548350362233e-8,2.5632253366152845e-4,1.4043212860365394e-5,-1.287943866108471e-8,2.568170361656435e-4,1.3904585536052271e-5,-1.285851192094646e-8,2.5736901125437294e-4,1.384542362248093e-5,-1.2847155402873307e-8,2.5794421239109947e-4,1.388843946076878e-5,-1.2848556465930347e-8,2.5850035030317047e-4,1.403829277109537e-5,-1.2863749847957166e-8,2.589956924459188e-4,1.4277505943607658e-5,-1.2890953907157057e-8,2.5939924357184515e-4,1.4567459494134127e-5,-1.2925525776831505e-8,2.596996993209261e-4,1.4855178454192225e-5,-1.2960705554380696e-8,2.5991041763439313e-4,1.5084813281586183e-5,-1.2989066766874659e-8,2.6006856585053105e-4,1.5211326349834672e-5,-1.3004361087109885e-8,2.602278725687631e-4,1.5213126500508729e-5,-1.3003294012197764e-8,2.6044583194747623e-4,1.5100107540589441e-5,-1.2986715711409487e-8,2.607678954750293e-4,1.4913817381501574e-5,-1.2959760458590743e-8,2.6121309337834975e-4,1.471789554231206e-5,-1.2930675613196354e-8,2.617666739936158e-4,1.4580147819581488e-5,-1.2908507750034461e-8,2.623838952785086e-4,1.4551998820653167e-5,-1.2900372867353652e-8,2.6300436611455946e-4,1.465364176688067e-5,-1.2909389577639032e-8,2.6357084573760297e-4,1.4871017273617807e-5,-1.293411963262422e-8,2.640443869669923e-4,1.5164543154651873e-5,-1.2969586613798102e-8,2.64410737769705e-4,1.548385098723045e-5,-1.3009177614068972e-8,2.6467821443590807e-4,1.5781554620764703e-5,-1.304650817055167e-8,2.648707916531887e-4,1.602193715049497e-5,-1.3076659266674922e-8,2.650204220774552e-4,1.6184189121099728e-5,-1.309668323525758e-8,0.00026516090400317594,1.626199634794566e-5,-1.3105583832666333e-8,2.653238016446657e-4,1.626157432670227e-5,-1.3104045518856175e-8,2.6553584872296177e-4,1.619953400725645e-5,-1.3094120073806924e-8,2.6581694404772865e-4,1.6101034287601604e-5,-1.3078966785871532e-8,2.6617803512994057e-4,1.599792643257314e-5,-1.3062635061321467e-8,2.666186743112128e-4,1.5926127147520803e-5,-1.3049789195619948e-8,2.671247177812508e-4,1.5921303481340893e-5,-1.3045222202262528e-8,2.6766743265218185e-4,1.6012313493671894e-5,-1.3053032308258361e-8,2.682058449019524e-4,1.6212993883764293e-5,-1.3075494404843321e-8,2.6869381754198406e-4,1.6514662380160417e-5,-1.3111934310112453e-8,2.690915392547794e-4,1.688312459406304e-5,-1.3158158531168263e-8,2.693782808806831e-4,1.726356887424719e-5,-1.3206971608799833e-8,2.695612194819721e-4,1.7593764377538284e-5,-1.3249899145305468e-8,2.696757969225932e-4,1.7821710710339604e-5,-1.3279603194733367e-8,2.697766262792751e-4,1.7921174890309415e-5,-1.3292069257397106e-8,2.699221571586634e-4,1.7899381168918985e-5,-1.3287759748585721e-8,2.701585140051222e-4,1.7794662659770487e-5,-1.3271427248333769e-8,2.7050743193193414e-4,1.7665574219650932e-5,-1.3250774476406711e-8,2.70961263500747e-4,1.7575149467220522e-5,-1.3234415117476824e-8,2.714859046544607e-4,1.7574737909080554e-5,-1.3229680863399421e-8,2.7203052331977687e-4,1.769170100835547e-5,-1.324083414757745e-8,2.7254117585821244e-4,1.7924189075479015e-5,-1.3268167506586092e-8,2.729741997691505e-4,1.8244128847031433e-5,-1.3308232751599827e-8,2.733054105239225e-4,1.860683481743521e-5,-1.335506308671976e-8,2.7353289682521516e-4,1.896345349760831e-5,-1.3401893664246537E-08,2.73673842637392e-4,1.9271996265799993e-5,-1.3442759869942829e-8,2.737578282615282e-4,1.9504213337008058e-5,-1.3473535503050086e-8,2.738194967147241e-4,1.9647848480923535e-5,-1.3492301040760689e-8,2.7389256852830313e-4,1.9705491001702175e-5,-1.3499197079042159e-8,2.740058704701865e-4,1.9691777654711647e-5,-1.3496023246278775e-8,2.741810262902575e-4,1.9630334079578346e-5,-1.3485807494797274e-8,2.744310131178127e-4,1.9551058078948304e-5,-1.347245824705066e-8,2.747588655876082e-4,1.948759434125028e-5,-1.3460484076347776e-8,2.7515620852405575e-4,1.9474357175009086e-5,-1.3454669802832967e-8,2.7560192124283077e-4,1.954221941430565e-5,-1.3459536895858992e-8,2.760620815654129e-4,1.9712188518429024e-5,-1.3478446229307413e-8,2.764931140341487e-4,1.998747860898367e-5,-1.3512381587099931e-8,2.768499825458415e-4,2.0346447047745347e-5,-1.3558791588758346e-8,2.7709934818909317e-4,2.0740975236487897e-5,-1.3611211001438215e-8,2.7723376707050325e-4,2.1104902391710272e-5,-1.3660381144345922e-8,2.7727951721184677e-4,2.1372977512600064e-5,-1.3696942301516698e-8,2.7729156569639065e-4,2.150364337470411e-5,-1.371469511192883e-8,2.7733590146886866e-4,2.1494482605572527e-5,-1.3712813986364758e-8,2.7746730910535865e-4,2.1382407878183956e-5,-1.3695935779833347e-8,2.777129170467314e-4,2.1229571564400812e-5,-1.3672319050985458e-8,2.7806720281447627e-4,2.1102980963536406e-5,-1.3651166775522754e-8,2.7849753778370835e-4,2.105639774177976e-5,-1.3640203101975407e-8,2.7895571606205595e-4,2.1119312740397868e-5,-1.36440855384151e-8,2.7939082054513723e-4,2.129380639205303e-5,-1.3663777942921247e-8,2.797602560487331e-4,2.155785003144518e-5,-1.3696778046641539e-8,2.8003725820557e-4,2.1872858482824725e-5,-1.3738005196123418e-8,2.802142004107094e-4,2.219328394309847e-5,-1.3781099702460829e-8,2.8030175709160225e-4,2.2476143948988695e-5,-1.381982555271776e-8,2.8032472939190016e-4,2.268859947612066e-5,-1.3849251125167231e-8,2.803159812312574e-4,2.2812371570131774e-5,-1.386647093141835e-8,2.803101183459111e-4,2.2844791364820303e-5,-1.387080182051307e-8,2.8033821087907477e-4,2.2797146171930603e-5,-1.3863552789390385e-8,2.8042420340903043e-4,2.2691458727297488e-5,-1.3847561307081722e-8,2.8058292600206835e-4,2.2556824850266946e-5,-1.3826691726476474e-8,2.8081916298474405e-4,2.2425953925453616e-5,-1.3805403994071266e-8,2.8112721903985157e-4,2.2331951025042324e-5,-1.3788383591687185e-8,2.8149066344888076e-4,2.2304951530066296e-5,-1.3780134438421739e-8,2.8188238547674434e-4,2.2367947560152177e-5,-1.3784386060479597e-8,2.822658721965546e-4,2.2531246589409013e-5,-1.380320444288144e-8,2.8259936195518845e-4,2.278597036190299e-5,-1.38358812243578e-8,2.828444569445365e-4,2.3098866508920356e-5,-1.3877999412904191e-8,2.82979105364523e-4,2.341279564136978e-5,-1.3921401485040897e-8,2.8301103748081484e-4,2.3657751771110462e-5,-1.3955814384309308e-8,2.8298340770177647e-4,2.37731328817469e-5,-1.3972176264270338e-8,2.8296484207766603e-4,2.3733029889624773e-5,-1.3966353021702428e-8,2.830249037760498e-4,2.3559828091315065e-5,-1.3941085550751729e-8,2.832073180871705e-4,2.331632681640619e-5,-1.3904875495648811e-8,2.8351576155621184e-4,2.308077284889224e-5,-1.3868553787955135e-8,2.8391769853862014e-4,2.2919547763551398e-5,-1.384157822144315e-8,2.8436019434869387e-4,2.287017449835268e-5,-1.3829694080640847e-8,2.847876469600927e-4,2.2937814065198065e-5,-1.3834319348602738e-8,2.8515485284144533e-4,2.3101223801610495e-5,-1.3853146215244e-8,2.85433793371567e-4,2.332264590269975e-5,-1.3881308460203237e-8,2.856153143340677e-4,2.3557815709961442e-5,-1.3912679492992264e-8,2.857074693224336e-4,2.3764383273789843e-5,-1.3941085356826256e-8,2.8573186713930584e-4,2.390828726211465e-5,-1.3961325891680267e-8,2.857188696819171e-4,2.39679560926046e-5,-1.3969911360196299e-8,2.8570231452007376e-4,2.3936257400670855e-5,-1.3965439487283113e-8,2.857144182944666e-4,2.382028199606721e-5,-1.394860030825303e-8,2.8578147687363805e-4,2.3639260037550102e-5,-1.3921869960500952e-8,2.8592084201393037e-4,2.342114432945347e-5,-1.3889012634409748e-8,2.8613931356911184e-4,2.3198585473751224e-5,-1.3854531958188717e-8,2.864327166543551e-4,2.3004883616430312e-5,-1.3823159470958645e-8,2.867863494363946e-4,2.2870125806672398e-5,-1.3799380523453057e-8,2.8717609388622425e-4,2.2817452101605205e-5,-1.378693317459741e-8,2.8757018441867614e-4,2.2859200077940465e-5,-1.378819562942302e-8,2.8793216925267906e-4,2.2992674449651844e-5,-1.3803413833910311e-8,2.8822619040308e-4,2.3196048522297792e-5,-1.3829891060439484e-8,2.8842548394305867e-4,2.3426397377221117e-5,-1.386152544402009e-8,2.885234854253173e-4,2.362330839766609e-5,-1.3889296541301406e-8,2.885438986592403e-4,2.3721722641275258e-5,-1.3903263102308176e-8,2.885424114376653e-4,2.3674183477913317e-5,-1.3896003696172715e-8,2.885929118709168e-4,2.3474313471584593e-5,-1.3866152311867126e-8,2.8875979009874574e-4,2.316637368653028e-5,-1.3819777847051538e-8,2.890704395776163e-4,2.283074746827438e-5,-1.3768264842029872e-8,2.895049885128943e-4,2.2551813469805068e-5,-1.3723757443181604e-8,2.900082669629545e-4,2.2387357101861408e-5,-1.3694865214262721e-8,2.9051374253208817e-4,2.235489612947439e-5,-1.36846867449533e-8,2.909649021340734e-4,2.2436103025525936e-5,-1.3691271872221072e-8,2.9132650488845045e-4,2.2590621258034392e-5,-1.3709370985045623e-8,2.9158637691061105e-4,2.2770429252790272e-5,-1.3732329579321405e-8,2.917517969683068e-4,2.2930448877807925e-5,-1.3753577653967498e-8,2.9184401188628566e-4,2.303489006955536e-5,-1.3767628184703838e-8,2.918927671925494e-4,2.3060445344766418e-5,-1.3770682898745772e-8,2.919314014291164e-4,2.299749274559909e-5,-1.3760937852867262e-8,2.9199247847638013e-4,2.2849926468667013e-5,-1.3738629102849638e-8,2.921039092862608e-4,2.2633834466347406e-5,-1.370584503210565e-8,2.92285666948327e-4,2.2375057960451114e-5,-1.3666144851793793e-8,2.925473850976914e-4,2.2105676829510934e-5,-1.3624037426111123e-8,2.9288716836903646e-4,2.185972836237773e-5,-1.3584395520403735e-8,2.93291734444017e-4,2.1668667070356885e-5,-1.355186975838904e-8,2.937378250344291e-4,2.1556973898122735e-5,-1.3530315087571015e-8,2.941947974500097e-4,2.1538210800188506e-5,-1.3522214675142932e-8,2.9462828965697827e-4,2.161178421989162e-5,-1.3528102494893166e-8,2.950049836659742e-4,2.176062612107966e-5,-1.3546028771640402e-8,2.9529877895283186e-4,2.1950341406551685e-5,-1.3571220417731373e-8,2.95498425036084e-4,2.2131299035723218e-5,-1.3596256341667975e-8,2.956153580837951e-4,2.22458472466366e-5,-1.361215968484941e-8,2.9568840667843486e-4,2.224225736534045e-5,-1.3610641296881544e-8,2.957800686939963e-4,2.2093977823393965e-5,-1.3587181550703598e-8,2.9595999348482825e-4,2.181678085271199e-5,-1.3543713834794471e-8,2.9627849161117025e-4,2.1471574018712877e-5,-1.3489060449153417e-8,2.9674319322068856e-4,2.1145294614123724e-5,-1.343609251827474e-8,2.9731425733706953e-4,2.09172161107864e-5,-1.3396774613550436e-8,2.9792187015270356e-4,2.082994835974585e-5,-1.3377886272534408e-8,2.984942122206886e-4,2.0880413673918396e-5,-1.3379586077781747e-8,2.989796522647844e-4,2.1030612573302552e-5,-1.3396809617098212e-8,2.993552928593664e-4,2.1226817991504233e-5,-1.3421929704689853e-8,2.9962420917402626e-4,2.141632957853267e-5,-1.3447160232838052e-8,2.998076048709863e-4,2.155742331817498e-5,-1.3466074608348756e-8,2.999366508951447e-4,2.162322261659597e-5,-1.3474303011588651e-8,3.0004605342871587e-4,2.160194083120627e-5,-1.3469704117491014e-8,3.001694758979349e-4,2.1495566477339442e-5,-1.3452259987949643e-8,3.003361714790454e-4,2.131801033581268e-5,-1.34238210598226e-8,3.00568250260884e-4,2.109291783629834e-5,-1.3387751649168571e-8,3.0087835205456256e-4,2.0850953582104578e-5,-1.3348491679679161e-8,3.012678716217725e-4,2.062624812724149e-5,-1.3311032550608233e-8,3.0172620046434173e-4,2.045193589878053e-5,-1.3280308792564854e-8,3.0223147737772435e-4,2.0355180263715515e-5,-1.3260534503027968e-8,3.027530905670879e-4,2.03523675046193e-5,-1.3254528922034592e-8,3.0325589739471393e-4,2.0445234386801097e-5,-1.326309141038214e-8,3.0370584098537583e-4,2.061873537337817e-5,-1.3284535301274032e-8,3.0407635475241393e-4,2.084132023298335e-5,-1.3314523112149486e-8,3.043548220950259e-4,2.106807932262644e-5,-1.334635951759101e-8,3.0454817712909907e-4,2.1247259597402573e-5,-1.337190847136496e-8,3.0468606841306306e-4,2.1330590886984806e-5,-1.338324729373875e-8,3.048190993710789e-4,2.1286814653441683e-5,-1.337492842426596e-8,3.0500947292813136e-4,2.1115405047104646e-5,-1.3346293728374482e-8,3.0531334240780847e-4,2.0854333144826318e-5,-1.330280661991811e-8,3.0575933228971686e-4,2.057446009779354e-5,-1.3255246543245369e-8,3.063336126043048e-4,2.035786012500672e-5,-1.3216390908366007e-8,3.0698195437051866e-4,2.0267933422058764e-5,-1.3196404367399528e-8,3.076297906607286e-4,2.0326989761099988e-5,-1.3199302777510673e-8,3.0820929098613465e-4,2.051301152374637e-5,-1.3222284594361782e-8,3.086790667643346e-4,2.0774250916837253e-5,-1.3257795354211066e-8,3.0902959140693113e-4,2.1050411845724763e-5,-1.3296685507824527e-8,3.0927719251130383e-4,2.1289582840270976e-5,-1.3330825505471842e-8,3.0945357058928e-4,2.145674944124067e-5,-1.33545105445674e-8,3.095961699201846e-4,2.153531284308726e-5,-1.3364818313685573e-8,3.0974146708267824e-4,2.152488868920895e-5,-1.3361368767381744e-8,3.0992097203242546e-4,2.1438017800151246e-5,-1.3345858365688848e-8,3.1015887202686857e-4,2.1297039816659653e-5,-1.3321563576426557e-8,3.1047036154725256e-4,2.1131275414374563e-5,-1.3292871575557973e-8,3.1086020309551777e-4,2.0974113615666323e-5,-1.3264820449894448e-8,0.00031132159469673937,2.0859458460963544e-5,-1.3242589706398116e-8,3.118358892299663e-4,2.08172018406579e-5,-1.3230876462418405e-8,3.123739556176808e-4,2.0867961619606607e-5,-1.3233145002595053e-8,3.1289980273878425e-4,2.1017999708571363e-5,-1.3250835029635484e-8,3.133765322075633e-4,2.1255710514705023e-5,-1.3282711917019378e-8,3.1377389441996034e-4,2.1551170659549085e-5,-1.332461455740315e-8,3.1407592571305155e-4,2.1859774047728385e-5,-1.3369828669154369e-8,3.1428671803730246e-4,2.212997996013805e-5,-1.3410177045357869e-8,3.14432506824964e-4,2.2314131680739853e-5,-1.3437721540724634e-8,3.1455876362506394e-4,2.2380463429616143e-5,-1.3446783871977407e-8,3.1472170043465105e-4,2.2323641852085563e-5,-1.3435813847370838e-8,3.1497476110345693e-4,2.217044112756572e-5,-1.3408494160108003e-8,3.153526234579617e-4,2.1976994096751363e-5,-1.337345682081832e-8,3.1585774444304715e-4,2.1815602165497123e-5,-1.3342262745022897e-8,3.1645594131746787e-4,2.1753230588716412e-5,-1.332596859353312e-8,3.170852855440563e-4,2.1829339986754936e-5,-1.3331486306519194e-8,3.1767609064744373e-4,2.204329336795916e-5,-1.335938578246327e-8,3.1817307131503856e-4,2.2357437282565592e-5,-1.3404182809004631e-8,3.185496252597622e-4,2.2713150253212193e-5,-1.3456770258106373e-8,3.188097318692035e-4,2.305068096859074e-5,-1.350756753269062e-8,3.1898017607109944e-4,2.3324049974074164e-5,-1.3548973772346303e-8,3.1909924742474843e-4,2.3507561072834535e-5,-1.3576520061523686e-8,3.192068961684871e-4,2.359541331330978e-5,-1.3588911123510958e-8,3.1933831976116504e-4,2.3597783076813762e-5,-1.358746123971623e-8,3.1952065880791903e-4,2.3536160980096142e-5,-1.3575362908229614e-8,3.19771579080949e-4,2.3439311888661372e-5,-1.3557025218592592e-8,3.200985885643759e-4,2.3340011786561243e-5,-1.3537543756519094e-8,3.2049846336595103e-4,2.3272031254568778e-5,-1.3522245412330314e-8,3.2095680118528186e-4,2.3266656684082567e-5,-1.3516194501257755e-8,3.214482960990994e-4,2.3348264536126095e-5,-1.3523546070473995e-8,3.219387035953197e-4,2.352905494166589e-5,-1.3546710031825095e-8,3.2238945173181284e-4,2.3803973484541637e-5,-1.3585453917150966e-8,3.2276517284783867e-4,2.414782235178386e-5,-1.3636274656717374e-8,3.2304300787259485e-4,2.4516917684648338e-5,-1.369247871891746e-8,3.2322093588827404e-4,2.4856694790520883e-5,-1.374527463790208e-8,3.2332167991338466e-4,2.5114409674883268e-5,-1.3785796286515207e-8,3.233897052011945e-4,2.525357146846435e-5,-1.3807516666649438e-8,3.2348120921461983e-4,2.5265406266578555e-5,-1.3808261001094046e-8,3.2364963922767976e-4,2.5173284625345988e-5,-1.3791120413398418e-8,3.2393091613960477e-4,2.5028248522414485e-5,-1.3763924450587002e-8,3.243327110819311e-4,2.489645279708152e-5,-1.3737355303383892e-8,3.2483114194985555e-4,2.4841661933600615e-5,-1.3722151158493351e-8,3.253764637315329e-4,2.4907661106982096e-5,-1.3726145974744325e-8,3.2590667505080653e-4,2.5106163518978407e-5,-1.3752074004335538e-8,3.263648743232834e-4,2.5414592771149465e-5,-1.3796943801410434e-8,3.267142644419916e-4,2.5784562274762126e-5,-1.3853232512079237e-8,3.2694560655390203e-4,2.6157379978950974e-5,-1.3911368702242648e-8,3.2707552207375036e-4,2.64802029079398e-5,-1.3962446344578679e-8,3.2713809920406574e-4,2.6717260951139974e-5,-1.4000191368277358e-8,3.2717430412455535e-4,2.685395991046812e-5,-1.4021757723105099e-8,3.272230250199076e-4,2.6895095773412356e-5,-1.4027518182301305e-8,3.273154328546555e-4,2.6859988741622723e-5,-1.4020303863838187e-8,3.27472427946398e-4,2.6777052624059808e-5,-1.4004517409235265e-8,3.2770404819257206e-4,2.667917357422416e-5,-1.3985374637999391e-8,3.2800968800751206e-4,2.6600135622202087e-5,-1.396833964272351e-8,3.283784197698704e-4,2.65715822213231e-5,-1.3958675851617953e-8,3.2878934377281676e-4,2.661975357857392e-5,-1.3960963251046796e-8,3.2921252136175277e-4,2.6761429111553565e-5,-1.397844020247438e-8,3.2961152402647006e-4,2.699907821559547e-5,-1.4012129808211943e-8,3.29948753915105e-4,2.7316263206531952e-5,-1.4059921868231094e-8,3.3019401009220286e-4,2.7675690266479282e-5,-1.4116060189696021e-8,3.303348983515174e-4,2.8023052525526852e-5,-1.417164175112956e-8,3.303851664433875e-4,2.8298564869411255e-5,-1.4216501609523993e-8,3.303858174704456e-4,2.845434313568276e-5,-1.4242167403395092e-8,3.303959416014983e-4,2.847131185450436e-5,-1.424477933710207e-8,3.304753311960585e-4,2.8367701265917583e-5,-1.4226626167552076e-8,3.3066574499633107e-4,2.8194592527739406e-5,-1.4195561924860455e-8,3.3097847333721307e-4,2.8020371048836455e-5,-1.4162617817120332e-8,3.3139229136450047e-4,2.7910733393913838e-5,-1.4138840614943994e-8,3.318610576038761e-4,2.7911418740544573e-5,-1.4132437583694847e-8,3.32327158660616e-4,2.8038257552148033e-5,-1.4146944421067845e-8,3.3273630146328536e-4,2.8275956095937735e-5,-1.4180721826563061e-8,3.3304982043797914e-4,2.8584590280257757e-5,-1.4227750741366778e-8,3.332518772704476e-4,2.8911198090895583e-5,-1.4279413650778645e-8,3.3335044303321585e-4,2.9203016014443303e-5,-1.4326720121414798e-8,3.3337264600420897e-4,2.9418844303718548e-5,-1.4362340255230543e-8,3.333565716870711e-4,2.953593528593423e-5,-1.438192328577023e-8,3.333423100299153e-4,2.955156240787833e-5,-1.4384490907506754e-8,3.333646227280616e-4,2.9480245799448394e-5,-1.4372041376989542e-8,3.3344841055820307e-4,2.9348582447400512e-5,-1.434870041016347e-8,3.3360692534264394e-4,2.9189588504290738e-5,-1.4319770705147037e-8,3.338418939605668e-4,2.903780052882538e-5,-1.429092220642219e-8,3.341445478842576e-4,2.8925502238673784e-5,-1.4267598983776846e-8,3.3449686902692956e-4,2.8879716510260736e-5,-1.4254567192028621e-8,3.34872893630502e-4,2.8919305085978387e-5,-1.4255452413328958e-8,3.3524046998712566e-4,2.905162633610626e-5,-1.4272125495191893e-8,3.3556438983591447e-4,2.926868042533546e-5,-1.4303906971243346e-8,3.358120415655983e-4,2.9543700862908523e-5,-1.4346787820191492e-8,3.359620973953016e-4,2.9830621885824582e-5,-1.4393165436296007e-8,3.3601476557872876e-4,3.0069847654572008e-5,-1.4432765793470925e-8,3.3599911919222826e-4,3.020259394749606e-5,-1.4455159337401374e-8,3.3597110300592314e-4,3.019141034190686e-5,-1.4453385307179457e-8,3.35998526488256e-4,3.00380349093956e-5,-1.4427081304578546e-8,3.3613729850181856e-4,2.9787423935761663e-5,-1.4383225010504009e-8,3.3641053011372276e-4,2.9513350056419022e-5,-1.4333808242876725e-8,3.368014006431015e-4,2.9292449987817804e-5,-1.4291641185111276e-8,3.3726185452744576e-4,2.9179980574871958e-5,-1.4266408426820145e-8,3.377303740186198e-4,2.9197037823386694e-5,-1.4262469364142498e-8,3.3814986945613203e-4,2.9330730888683372e-5,-1.427863436126763e-8,3.3848010158714516e-4,2.9543115154846164e-5,-1.4309336642064932e-8,3.38703273259897e-4,2.9783603206552747e-5,-1.4346471770152776e-8,3.388238715787891e-4,3.0001002317025725e-5,-1.4381352417660723e-8,3.388645512106792e-4,3.015313826145052e-5,-1.4406430035573901e-8,3.388596992978482e-4,3.0213214891368453e-5,-1.441656210821404e-8,3.388480896868653e-4,3.0172579589435465e-5,-1.4409671063513486e-8,3.3886595201610624e-4,3.0040010984943417e-5,-1.4386745775937594e-8,3.389415616773652e-4,2.983826465857231e-5,-1.435129353309962e-8,3.3909197448769624e-4,2.9599024245251944e-5,-1.4308467177209232e-8,3.393219732788287e-4,2.935743690567301e-5,-1.4264115645959442e-8,3.396247872186201e-4,2.9147198599977515e-5,-1.4223960274082391e-8,3.3998384944594585e-4,2.8996680396776103e-5,-1.419298232822601e-8,3.4037497978542483e-4,2.8925994092867653e-5,-1.4174970094013113e-8,3.4076876816749476e-4,2.8944576739562157e-5,-1.4172101451461987e-8,3.4113333363185183e-4,2.9048903134653624e-5,-1.4184452613283302e-8,3.4143806830900614e-4,2.9220259014859665e-5,-1.4209426481068721e-8,3.416592313159679e-4,2.942335957385573e-5,-1.4241300071719586e-8,3.4178768959361645e-4,2.9607879560626548e-5,-1.4271351102299056e-8,3.418373350901813e-4,2.971582378240197e-5,-1.4289150939638257e-8,3.4184996084014505e-4,2.9696727082961728e-5,-1.4285356690807156e-8,3.418902633601011e-4,2.952827110856552e-5,-1.425546855762454e-8,3.420270707706498e-4,2.9232745927517535e-5,-1.4202771104298555e-8,3.4230607491550166e-4,2.8876464783064984e-5,-1.4138250014917669e-8,3.4272891522547444e-4,2.8547270391760742e-5,-1.4076783978948293e-8,3.432521860159393e-4,2.8320914566404532e-5,-1.4031512125887654e-8,3.4380643577638096e-4,2.8235399587572567e-5,-1.4009518407800017e-8,3.4432227839255926e-4,2.8284922903914585e-5,-1.4010681330376893e-8,3.4474989405392577e-4,2.8430706232186193e-5,-1.4029244458375631e-8,3.450667007921132e-4,2.8618389049455682e-5,-1.405649452639386e-8,3.4527564357985356e-4,2.879355388007985e-5,-1.4083250375345564e-8,3.453987654829163e-4,2.8912049121438285e-5,-1.4101646097180218e-8,3.45469585268103e-4,2.894525815503267e-5,-1.4106194425210915e-8,3.4552604642457406e-4,2.8881730901118583e-5,-1.4094281874326899e-8,3.4560455047242703e-4,2.8726431535401165e-5,-1.4066215283106948e-8,3.457351529958053e-4,2.84982490045257e-5,-1.4024875511406945e-8,3.459380666037131e-4,2.8226171437823553e-5,-1.397505116091795e-8,3.462216637718113e-4,2.794459723979762e-5,-1.3922581182171141e-8,3.4658209986642525e-4,2.7688322235778394e-5,-1.3873458405560078e-8,3.4700449561030034e-4,2.748781270498401e-5,-1.3833031101689292e-8,3.474653304988083e-4,2.7365322208472776e-5,-1.3805386540778746e-8,3.479355692431911e-4,2.7332084280176915e-5,-1.3792904236856692e-8,3.483841987506852e-4,2.738651159118678e-5,-1.3795909548384521e-8,3.48782076015223e-4,2.7513276120753096e-5,-1.3812375954175199e-8,3.4910623716508923e-4,2.768327317176719e-5,-1.3837706596348546e-8,3.493450066374296e-4,2.785497909947437e-5,-1.3864767635512509e-8,3.4950380428156456e-4,2.7978582520697178e-5,-1.388452258098352e-8,3.496101796449104e-4,2.800470747307293e-5,-1.3887648902006153e-8,3.4971470295323565e-4,2.7898579782032046e-5,-1.3867255990212172e-8,3.498829672228969e-4,2.7657103890016168e-5,-1.3822133605209417e-8,3.5017591926531956e-4,2.7320571946380355e-5,-1.375894735333673e-8,3.5062370726759924e-4,2.6967510508779796e-5,-1.3691352108885298e-8,3.512076836751679e-4,2.668829415482261e-5,-1.3635359280006073e-8,3.518645594543916e-4,2.6549168451208284e-5,-1.3603044848274974e-8,3.525120860381075e-4,2.6567976763254272e-5,-1.359825241655584e-8,3.530801471377777e-4,2.671440633051558e-5,-1.3616465703002289e-8,3.5353016455276417e-4,2.692942938290615e-5,-1.3647971513994665e-8,3.538577002956241e-4,2.7148881753446637e-5,-1.3681795510084634e-8,3.540840771794443e-4,2.7320151877578618e-5,-1.3708567939664234e-8,3.542449634789241e-4,2.740961864282937e-5,-1.372191839944505e-8,3.543805993034693e-4,2.7403434203548572e-5,-1.3718799059739425e-8,3.545289983413223e-4,2.730498627401825e-5,-1.3699233288566783e-8,3.547216624954893e-4,2.7131303055044464e-5,-1.366581028187246e-8,3.5498087228620824e-4,2.690928730173587e-5,-1.3623050830270064e-8,3.5531797095255416e-4,2.6671814970846222e-5,-1.3576675347345746e-8,3.557325408326314e-4,2.6453572621222732e-5,-1.3532810617513158e-8,3.562126332903402e-4,2.628664184351773e-5,-1.3497191162436568e-8,3.5673629776197384e-4,2.619610347960688e-5,-1.3474416118620455e-8,3.5727449108908464e-4,2.6196233744873596e-5,-1.3467331827186608e-8,3.577951171362706e-4,2.628789151186731e-5,-1.3476583429700484e-8,3.582677504977914e-4,2.6457485603445368e-5,-1.3500355686777276e-8,3.5866856083210973e-4,2.667773719840518e-5,-1.3534335889835297e-8,3.58984983565573e-4,2.691031135287597e-5,-1.3571967951946276e-8,3.592197788921785e-4,2.7110381522096033e-5,-1.3605104433755066e-8,3.5939395836391525e-4,2.723347733466807e-5,-1.3625211838772243e-8,3.5954731475294516e-4,2.7245005640118063e-5,-1.3625233122092842e-8,3.5973439287282456e-4,2.7131819567977223e-5,-1.3601941703224978e-8,3.600135954575884e-4,2.6912915110491107e-5,-1.355814290805302e-8,3.60429073295564e-4,2.664325075241653e-5,-1.3503526756102676e-8,3.60990418920039e-4,2.64034696792908e-5,-1.3452835801158697e-8,3.6166146352094975e-4,2.6273775898966717e-5,-1.3421074493356377e-8,3.623688032765512e-4,2.630225709809558e-5,-1.3417659611230746e-8,3.6302889191182174e-4,2.6485921915614753e-5,-1.3442821004948017e-8,3.635787000997205e-4,2.6775836053406942e-5,-1.3488337737398986e-8,3.6399313254539714e-4,2.7100845265447172e-5,-1.3541675775041822e-8,3.6428387361378935e-4,2.739386253867796e-5,-1.3590675845310196e-8,3.644865074909421e-4,2.7608376878739416e-5,-1.3626575377250361e-8,3.6464576613601913e-4,2.7723005292816395e-5,-1.364495582745406e-8,3.6480461555127395e-4,2.77383404850266e-5,-1.3645341642181487e-8,3.6499818740537e-4,2.76710053685678e-5,-1.3630271402829668e-8,3.6525122259954397e-4,2.754788664050142e-5,-1.360432815008887e-8,3.6557730310316335e-4,2.7401492817728636e-5,-1.357329062063108e-8,3.659787553882458e-4,2.72661665993695e-5,-1.3543394730429565e-8,3.6644689750384423e-4,2.7174555417879994e-5,-1.352065178127914e-8,3.669628241382334e-4,2.7153908983776746e-5,-1.3510179030065285e-8,3.674992016602788e-4,2.7222166045638933e-5,-1.3515526234079713e-8,3.68023539090487e-4,2.73843521332642e-5,-1.3538046023492725e-8,3.685030041719975e-4,2.7630228716345682e-5,-1.357642629855776e-8,3.689102801263324e-4,2.793415315314418e-5,-1.362653567100988e-8,3.692294796808659e-4,2.825781083626839e-5,-1.368173224189925e-8,3.694608523244996e-4,2.8555916027981706e-5,-1.3733727733496358e-8,3.6962307871807993e-4,2.8784249160797294e-5,-1.3773978177336275e-8,3.697522993353289e-4,2.8908903102290343e-5,-1.3795451641862713e-8,3.6989731803456434e-4,2.8915385836666257e-5,-1.3794521381371401e-8,3.701106527110447e-4,2.8815745762559872e-5,-1.3772576532502819e-8,3.704358354453675e-4,2.8651045702873957e-5,-1.3736749819577554e-8,3.7089307273516974e-4,2.8486040803253674e-5,-1.369908367506479e-8,3.714679608227572e-4,2.8394043726751596e-5,-1.3673710854101186e-8,3.7210991213757036e-4,2.843405066778115e-5,-1.3672440108961631e-8,3.7274498490128303e-4,2.8628554579815174e-5,-1.3700371291720451e-8,3.733002400374539e-4,2.8953884905579092e-5,-1.375383654447321e-8,3.737283127161456e-4,2.934966667201483e-5,-1.3821992572909582e-8,3.74019840199307e-4,2.9742318752869464e-5,-1.3891158565206442e-8,3.741996113300426e-4,3.0069483883304552e-5,-1.3949424588473654e-8,3.743121974552402e-4,3.0294519375517385e-5,-1.3989456769194334e-8,3.7440629029591007e-4,3.0408720943630665e-5,-1.4009040575435913e-8,3.745237271452724e-4,3.042555417326966e-5,-1.4010137999684472e-8,3.7469432233555345e-4,3.0372415163084517e-5,-1.399745265579277e-8,3.7493481407911624e-4,3.0283392801809747e-5,-1.3977121315336288e-8,3.7524974009757705e-4,3.0194074963467853e-5,-1.3955729687359219e-8,3.7563276072333213e-4,3.013796030115297e-5,-1.3939607838651707e-8,3.7606789752317216e-4,3.014358067755694e-5,-1.3934276197156442e-8,3.765308715945007e-4,3.0231593508346177e-5,-1.394391327502817e-8,3.769911447976581e-4,3.0411553226949515e-5,-1.3970762499094855e-8,3.774153866080384e-4,3.067874957136116e-5,-1.4014505540693484e-8,3.7777276900158004e-4,3.101223988098575e-5,-1.4071785355970582e-8,3.780416881621932e-4,3.137561973052833e-5,-1.4136185048005719e-8,3.782164562994042e-4,3.1721813892388676e-5,-1.4198962795870701e-8,3.7831168136817563e-4,3.2002044707192615e-5,-1.4250643304019193e-8,3.7836207867593326e-4,3.2177378338159576e-5,-1.4283213281041604e-8,3.784166470845473e-4,3.222972568760059e-5,-1.4292338201740607e-8,3.7852801727424653e-4,3.216882097511682e-5,-1.4278915068388991e-8,3.7873941235653586e-4,3.2032643792585974e-5,-1.4249424676350356e-8,3.7907250187723524e-4,3.1880386191779476e-5,-1.4214835935159804e-8,3.79519524138801e-4,3.1778859253417956e-5,-1.4188143257430748e-8,3.800425591675725e-4,3.1785057707013906e-5,-1.4180988668013144e-8,3.8058155833472476e-4,3.192941802742809e-5,-1.420023019579586e-8,3.810702007095623e-4,3.220552703223705e-5,-1.424564138430845e-8,3.814550608339061e-4,3.257118968284767e-5,-1.4309824655516338e-8,3.8171088610531375e-4,3.2961679962287354e-5,-1.4380610992098202e-8,3.818457030615165e-4,3.3310117296884816e-5,-1.444499449135639e-8,3.8189440825249304e-4,3.356630414228731e-5,-1.4492871054400158e-8,3.8190518456659355e-4,3.3706990005561714e-5,-1.4519156100786139e-8,3.8192545511999565e-4,3.3735939536645784e-5,-1.4523932873023375e-8,0.00038199221663132936,3.36770574780388e-5,-1.4511243699103591e-8,3.8212794959808886e-4,3.356532850735636e-5,-1.44874232515469e-8,3.8234068283503006e-4,3.3438964212912564e-5,-1.445961632653455e-8,3.826260695837975e-4,3.333397058547786e-5,-1.4434725361888601e-8,3.8296985541619517e-4,3.328078604508245e-5,-1.4418750654133305e-8,3.8335002714571484e-4,3.3302014460873146e-5,-1.441635218389012e-8,3.837387391287661e-4,3.341034772114456e-5,-1.4430449062814374e-8,3.841046361875188e-4,3.3606223967194986e-5,-1.4461732780659432e-8,3.844163948873668e-4,3.3875453388444264e-5,-1.4508108409027856e-8,3.846481026697538e-4,3.4187920503036706e-5,-1.4564283527851176e-8,3.8478626988731516e-4,3.449926174844078e-5,-1.4621926226168586e-8,3.8483677916458626e-4,3.475742957885683e-5,-1.4670832194101453e-8,3.8482854708888275e-4,3.491455839733871e-5,-1.4701226812136726e-8,3.8481043392111564e-4,3.4941584971485933e-5,-1.4706695752866484e-8,3.8484010168733006e-4,3.484013825587449e-5,-1.468664371357169e-8,3.8496755452253895e-4,3.464574228765504e-5,-1.4647105606473425e-8,3.852194666708856e-4,3.4419635873436564e-5,-1.4599384135326243e-8,3.8559051584685747e-4,3.4231768838361375e-5,-1.4556966089518085e-8,3.8604470174984556e-4,3.4141257634779535e-5,-1.4531832281699271e-8,3.8652549596401316e-4,3.4180796113487486e-5,-1.4531324827219252e-8,3.8697101818921484e-4,3.434917801281351e-5,-1.4556386882613265e-8,3.8732970092140794e-4,3.461318978913546e-5,-1.4601550234372074e-8,3.875723463890504e-4,3.491766325493246e-5,-1.4656605918405712e-8,3.8769763284319733e-4,3.5200524303996284e-5,-1.4709446876581307e-8,3.8772997811639925e-4,3.540841369879993e-5,-1.474921260370285e-8,3.877109937265693e-4,3.550840337825738e-5,-1.476877406003373e-8,3.8768778169230556e-4,3.5492866851361164e-5,-1.476588786722735e-8,3.877020190388187e-4,3.5377264492801586e-5,-1.4742916279944912e-8,3.8778272420060984e-4,3.519311331097323e-5,-1.4705540490345767e-8,3.8794354267678884e-4,3.497940485725285e-5,-1.4661111679795208e-8,3.88183621815305e-4,3.4775082366194856e-5,-1.4617171125102894e-8,3.8849040862005046e-4,3.4613774624727124e-5,-1.4580401934381552e-8,3.888429039948693e-4,3.452069902788002e-5,-1.4556015515333534e-8,3.8921458948142855e-4,3.45109299576898e-5,-1.4547412738969088e-8,3.8957597873680495e-4,3.4588150401447517e-5,-1.455591709815627e-8,3.8989728274007056e-4,3.474336635341969e-5,-1.4580440622513306e-8,3.9015195396758514e-4,3.495368121352255e-5,-1.4617090694513199e-8,3.9032177735499337e-4,3.5182101792084835e-5,-1.4658947568485471e-8,3.9040340540185385e-4,3.5380277120652675e-5,-1.4696467881042956e-8,3.904146306630224e-4,3.549631641986946e-5,-1.4719008759851094e-8,3.903967427080332e-4,3.548836893154207e-5,-1.4717615696219794e-8,3.9040860609677376e-4,3.534095270614115e-5,-1.468840935651692e-8,3.905107938530057e-4,3.507658782265891e-5,-1.4635025503981219e-8,3.9074435561294203e-4,3.4754301960084933e-5,-1.4568447883446436e-8,3.911142837911334e-4,3.445237060488615e-5,-1.4503769375063293e-8,3.915867065914306e-4,3.4242280516138355e-5,-1.4455241755727162e-8,3.9210098851033884e-4,3.416630020580259e-5,-1.4431921054112957e-8,3.9258978921974933e-4,3.42277415173893e-5,-1.4435583191215956e-8,3.92997891960016e-4,3.43949587943332e-5,-1.446115512515839e-8,3.9329397995157005e-4,3.4614214184008465e-5,-1.4498870429778417e-8,3.934741228294369e-4,3.482529654460197e-5,-1.4537116508416524e-8,3.935585439745504e-4,3.497539271070658e-5,-1.456516089516988e-8,3.935841244453831e-4,3.502882428209544e-5,-1.4575248316469991e-8,3.935950084123615e-4,3.497180118274077e-5,-1.4563798423281858e-8,3.9363335905265697e-4,3.4812268755863353e-5,-1.453161028551469e-8,3.9373196934599825e-4,3.457567997812712e-5,-1.4483168817569692e-8,3.9390985158140024e-4,3.4298244121273065e-5,-1.442534785326174e-8,3.941710735045695e-4,3.401951202215226e-5,-1.4365908871774454e-8,3.945062887672119e-4,3.377587091359689e-5,-1.431215883946541e-8,3.948959058166358e-4,3.3595868201667825e-5,-1.4269990715109863e-8,3.9531378332501087e-4,3.34975018387911e-5,-1.4243345355196083e-8,3.95730734118531e-4,3.348697905005418e-5,-1.4233969882786683e-8,3.9611767962868447e-4,3.3558268125866676e-5,-1.424129255710753e-8,3.964487102877791e-4,3.3693000306870486e-5,-1.4262290516375536e-8,3.9670457560232427e-4,3.386072530925677e-5,-1.429136009013897e-8,3.96877142245794e-4,3.402026478479182e-5,-1.4320404114221407e-8,3.96974675963087e-4,3.412377428846557e-5,-1.433955280018419e-8,3.970263033690597e-4,3.412534347773198e-5,-1.4338948576893425e-8,3.970821930901893e-4,3.3994646882125137E-05,-1.4311677516442803e-8,3.972051269460485e-4,3.373258641401384e-5,-1.4257126814339408e-8,3.9745171697619185e-4,3.3380857036472385e-5,-1.4183048350455968e-8,3.9784887548471545e-4,3.3015677815108926e-5,-1.4104376616313594e-8,3.983784208606685e-4,3.272315572911758e-5,-1.4038376360391643e-8,3.989810077392129e-4,3.2567028222608205e-5,-1.3998275239165507e-8,3.995784033932848e-4,3.256650678484111e-5,-1.3988808427858587e-8,4.001011450991133e-4,3.269479846358877e-5,-1.4005705396679457e-8,4.0050766556828905e-4,3.2894820685850835e-5,-1.4038489709830286e-8,4.0078956955466436e-4,3.310064022337845e-5,-1.407446327281956e-8,4.0096621978551547e-4,3.325505206119748e-5,-1.4102093289319672e-8,4.010745404447036e-4,3.3319672146671645e-5,-1.4113112716440347e-8,4.0115849496576356e-4,3.3278246778498246e-5,-1.4103416685224999e-8,4.0126036221118603e-4,3.3135359116825646e-5,-1.4073080729645138e-8,4.014143685471576e-4,3.291243375807629e-5,-1.4025773677232568e-8,4.0164265136440953e-4,3.264223661405534e-5,-1.3967743564302586e-8,4.019534608500238e-4,3.236272447032621e-5,-1.390655605379301e-8,4.023414451750576e-4,3.211102729665613e-5,-1.3849797898036786e-8,4.0278971307670453e-4,3.191824538468825e-5,-1.3803953237611915e-8,4.032731686233601e-4,3.18056089510052e-5,-1.3773602883065726e-8,4.037624347508987e-4,3.178228329803735e-5,-1.376099772735688e-8,4.0422776760387706e-4,3.184466222614487e-5,-1.3765925422093045e-8,4.0464271102872616e-4,3.1976751617668895e-5,-1.3785736315062855e-8,4.049875078121135e-4,3.2151373504918296e-5,-1.3815449042655647e-8,4.0525242347578963e-4,3.2332175019236376e-5,-1.3847964962952615e-8,4.0544119121250843e-4,3.2476862419152035e-5,-1.3874561986942388e-8,4.05574305140568e-4,3.254270756363941e-5,-1.3885979640020726e-8,4.0569066632959827e-4,3.249544686392352e-5,-1.3874369128060043e-8,4.0584474135106326e-4,3.232141920233108e-5,-1.3836033795223245e-8,4.060959597117366e-4,3.203981711665866e-5,-1.3774198864523915e-8,4.0648944202457856e-4,3.170776499799547e-5,-1.3700205970255192e-8,4.070339380710125e-4,3.14094387988266e-5,-1.3631320248747382e-8,4.076901544592694e-4,3.122757281338524e-5,-1.3584880382566213e-8,4.083808447150242e-4,3.1209812559531696e-5,-1.357136683146307e-8,4.090200221087287e-4,3.1349995147856346e-5,-1.3590446140588086e-8,4.0954443123187515e-4,3.1595103343674464e-5,-1.3632168430282483e-8,4.099303837683666e-4,3.187049880203468e-5,-1.3681872256090355e-8,4.101918277261662e-4,3.210671035463291e-5,-1.3725481876963942e-8,4.103671176469619e-4,3.225608889167277e-5,-1.3752883934071199e-8,4.1050398879131114e-4,3.2297665182539014e-5,-1.3759059927073484e-8,4.106480562172606e-4,3.223425978678608e-5,-1.3743742869076615e-8,4.108359107796797e-4,3.208637535174844e-5,-1.371041895829871e-8,4.1109180515318115e-4,3.188566709771694e-5,-1.366514943234374e-8,4.1142658815250326e-4,3.166901056491771e-5,-1.3615380156688916e-8,4.118380537063425e-4,3.147326545835003e-5,-1.3568790580043022e-8,4.123123872285276e-4,3.1330693322293186e-5,-1.3532246924646132e-8,4.1282660990819755e-4,3.12650855735152e-5,-1.3510937230181173e-8,4.1335194038861985e-4,3.12888232285669e-5,-1.3507759179538763e-8,0.00041385782791872523,3.14012402587035e-5,-1.3523006860697865e-8,4.143162097043059e-4,3.158851800056764e-5,-1.3554343762603742e-8,4.147055736697891e-4,3.182504325345812e-5,-1.3596998591413753e-8,4.150145461827425e-4,3.207610038134238e-5,-1.3644157727172217e-8,4.1524476893370035e-4,3.230183268389632e-5,-1.368759809958973e-8,4.1541284364256985e-4,3.2462481911037404e-5,-1.3718658948585584e-8,4.1555091775811174e-4,3.252513293742975e-5,-1.3729683805619488e-8,4.1570478512098117e-4,3.247211793603926e-5,-1.3715984522395111e-8,4.159276624200048e-4,3.2310116826504505e-5,-1.3678055124053507e-8,4.1626805702971783e-4,3.2076790804311726e-5,-1.3623245822332607e-8,4.167524617387805e-4,3.1839355536118996e-5,-1.3565610929515464e-8,4.173687071937988e-4,3.1679433606488e-5,-1.352271054257597e-8,4.180608672886187e-4,3.166480571656874e-5,-1.3509541984888306e-8,4.187443288713044e-4,3.182021371545731e-5,-1.353221487846181e-8,4.193369682737023e-4,3.211533218369021e-5,-1.3585218588590153e-8,4.1978931227977685e-4,3.247863499575709e-5,-1.3654153761093438e-8,4.2009704087509506e-4,3.282777137229304e-5,-1.3721983897773367e-8,4.202929904690921e-4,3.309778073197644e-5,-1.377490014751364e-8,4.2042859167406205e-4,3.325494568929429e-5,-1.3805267082687721e-8,4.2055631802961126e-4,3.329635406528146e-5,-1.3811685967344244e-8,4.207187075410816e-4,3.324181570289828e-5,-1.3797529601781316e-8,4.209438553744661e-4,3.312430221578908e-5,-1.376914696052265e-8,4.212450114021482e-4,3.29820290127452e-5,-1.3734307231289387e-8,4.2162200611876914e-4,3.285276439909095e-5,-1.3700985550654417e-8,4.220632466273461e-4,3.276974175556986e-5,-1.3676406563612262e-8,4.225479806825113e-4,3.275847057478871e-5,-1.3666274054639809e-8,4.2304896717371235e-4,3.283409778896946e-5,-1.367416405793029e-8,4.23535782825238e-4,3.299935006506142e-5,-1.3701088573561653e-8,4.2397886988324306e-4,3.3243478824476034e-5,-1.374527589841765e-8,4.2435406637511227e-4,3.354279531934157e-5,-1.3802236076034794e-8,4.246470102477941e-4,3.3863147891369016e-5,-1.3865160722445153e-8,4.248566904943515e-4,3.4164346787876715e-5,-1.392568757735148e-8,4.249974307882397e-4,3.4406249583597606e-5,-1.3975043403899051e-8,4.2509869023787635e-4,3.455590008719841e-5,-1.4005525482322397e-8,4.252022353167417e-4,3.4594902384809774e-5,-1.4012200930378964e-8,4.2535628227180944e-4,3.452606191561703e-5,-1.3994602436161527e-8,4.2560627053101944e-4,3.437774195887487e-5,-1.3957997791203556e-8,4.259826655671023e-4,3.42033544248866e-5,-1.3913552496987838e-8,4.2648812302165757e-4,3.407288572264099e-5,-1.3876612700332113e-8,4.2708920644435e-4,3.405490071168592e-5,-1.3862734860228985e-8,4.2771960286236156e-4,3.419246160656786e-5,-1.388224482934693e-8,4.2829858276369735e-4,3.4483331127508464e-5,-1.39356667397566e-8,4.287591800201008e-4,3.487711132752329e-5,-1.401286696741407e-8,4.2907189221625086e-4,3.529375343362766e-5,-1.4096933853643936e-8,4.2925111181198606e-4,3.5653822332007866e-5,-1.4170691079982273e-8,4.293431436633978e-4,3.590386737424457e-5,-1.422220020649449e-8,4.294057069943159e-4,3.602629900089709e-5,-1.4246968028465437e-8,4.2949028887441184e-4,3.603476243390713e-5,-1.4247107509361492e-8,4.296326637699373e-4,3.596258975350247e-5,-1.422906114426545e-8,4.298507830160587e-4,3.585122067538412e-5,-1.4201284229219959e-8,4.30146821619837e-4,3.574178595192985e-5,-1.4172502101488057e-8,4.305105528179752e-4,3.567004669500458e-5,-1.4150577469349977e-8,4.309225690144668e-4,3.566353502127585e-5,-1.4141794633184363e-8,4.3135708115020477e-4,3.5739694174433475e-5,-1.4150368611616155e-8,4.3178466029482305e-4,3.5904363120716595e-5,-1.4178070671429282e-8,4.321754230960808e-4,3.615055457113382e-5,-1.4223940930016515e-8,4.3250300470527235e-4,3.645801938170371e-5,-1.4284152898436964e-8,4.327492141671965e-4,3.6794455062480333e-5,-1.4352180111878265e-8,4.329086361301494e-4,3.711914037777242e-5,-1.441944170755436e-8,4.329919362284678e-4,3.738922622588004e-5,-1.4476525706585657e-8,4.3302648954548616e-4,3.756805202918171e-5,-1.4514923144055002e-8,4.330533235187689e-4,3.763391300210855e-5,-1.4528989528198715e-8,4.331202330514279e-4,3.7587099620632155e-5,-1.4517675625248134e-8,4.33271953934643e-4,3.7453099149815584e-5,-1.4485529520827118e-8,4.335391170749413e-4,3.728040086638992e-5,-1.4442540122095772e-8,4.3392835970523195e-4,3.713209968463934e-5,-1.4402528788363379e-8,4.344165500758634e-4,3.707165347756771e-5,-1.4380064897967802e-8,4.3495230062594813e-4,3.714511840207765e-5,-1.438637838413005e-8,4.3546692736868404e-4,3.7364868229131036e-5,-1.4425430174624792e-8,4.3589372030768185e-4,3.7701867510223756e-5,-1.4491842764582526e-8,4.361893091351183e-4,3.8092289800798756e-5,-1.4572120153155367e-8,4.3634757852403625e-4,3.8457985039809324e-5,-1.464910812938325e-8,4.363991796352178e-4,3.8732147174392066e-5,-1.4707727290935779e-8,4.3639763452364114e-4,3.887826414780291e-5,-1.4739264857224268e-8,4.364001722647106e-4,3.889525252824335e-5,-1.474263969373984e-8,4.364523016838084e-4,3.881021476354108e-5,-1.4722977299200551e-8,4.365804771433114e-4,3.866556340462599e-5,-1.468896039574687e-8,4.367919722871205e-4,3.8506926413442914e-5,-1.4650297668231218e-8,4.370786669043261e-4,3.837491837753309e-5,-1.4615939698352876e-8,4.3742177567648004e-4,3.8300841711920557e-5,-1.4593067497875068e-8,4.377959505900983e-4,3.830495380523125e-5,-1.4586611379527836e-8,4.3817246361271725e-4,3.839583492266989e-5,-1.4599028669935255e-8,4.385219262133009e-4,3.856996202628723e-5,-1.4630154871815322e-8,4.388172474094774e-4,3.881133934777927e-5,-1.4677068982739351e-8,4.3903736753377824e-4,3.909172438758446e-5,-1.4734059655137036e-8,4.39171785700476e-4,3.9372492362129876e-5,-1.4792916472356046e-8,4.392250878709724e-4,3.9609287825052854e-5,-1.48438349018792e-8,4.392197841418492e-4,3.9760010138741e-5,-1.4877110525214467e-8,4.391952872335693e-4,3.9795215836805176e-5,-1.488546114998337e-8,4.392015028478242e-4,3.9708130526000964e-5,-1.4866368508482124e-8,4.392874740657098e-4,3.9520303226885334e-5,-1.4823547388579492e-8,4.3948798661524503e-4,3.927964654825381e-5,-1.4766788554084115e-8,4.3981252877586845e-4,3.905019462021475e-5,-1.4709963203151688e-8,4.4024057367895406e-4,3.889606668889953e-5,-1.4667637174980205e-8,4.407251019923313e-4,3.886426054421898e-5,-1.465121537204819e-8,4.4120371732378895e-4,3.897130268161372e-5,-1.4665702138134793e-8,4.4161456567829924e-4,3.919776198075389e-5,-1.4708062006301217e-8,4.41912806692747e-4,3.949272215218089e-5,-1.4767828043097781e-8,4.4208268554817335e-4,3.978761101197567e-5,-1.4829982902345276e-8,4.421409699762284e-4,4.001548958358082e-5,-1.4879284623686034e-8,4.421303237867017e-4,4.012928886396741e-5,-1.4904509091663218e-8,4.4210531633417574e-4,4.011254468451751e-5,-1.4901064005645254e-8,4.421168168722615e-4,3.997960143327207e-5,-1.487124044964496e-8,4.422004451507053e-4,3.9767094807069e-5,-1.4822485598136494e-8,4.4237183113721076e-4,3.9521669753076244e-5,-1.4764783122292205e-8,4.426279491665109e-4,3.928881642907068e-5,-1.4708204056709783e-8,4.429518454747351e-4,3.91054375635812e-5,-1.4661205248835662e-8,4.433181067887932e-4,3.899632725145631e-5,-1.4629752573422735e-8,4.436975223791884e-4,3.8973357147412855e-5,-1.4617048273316101e-8,4.4406056405082626e-4,3.903590468819179e-5,-1.4623561502714967e-8,4.4438008650014344e-4,3.91715076460056e-5,-1.4647122090138582e-8,4.446339768961001e-4,3.935646602380224e-5,-1.4682981479505956e-8,4.448083963396037e-4,3.955684978592832e-5,-1.4723927049201846e-8,4.4490177030358924e-4,3.973098128986008e-5,-1.4760714274992125e-8,4.4492878725670593e-4,3.9834759260079374e-5,-1.4783179135015065e-8,4.4492247041699046e-4,3.983068781073579e-5,-1.4782276848273152e-8,4.4493150521741963e-4,3.9699639584905065e-5,-1.4752832416571488e-8,4.4501065268293756e-4,3.945150399211428e-5,-1.4696101798232349e-8,4.452051621230111e-4,3.912878232058367e-5,-1.4620773630123115e-8,4.4553450758414917e-4,3.879851843897706e-5,-1.4541367888067542e-8,4.459831270119789e-4,3.853341144760553e-5,-1.4474199279655483e-8,4.4650334228181737e-4,3.83892962100095e-5,-1.4432428557074345e-8,4.470294963479162e-4,3.838843851633301e-5,-1.4422210720894016e-8,4.474971022466872e-4,3.8514644123259556e-5,-1.4441268698217063e-8,4.4785977033990704e-4,3.872025545847296e-5,-1.4480033042680275e-8,4.480991934681107e-4,3.8940889744311725e-5,-1.4524608121518424e-8,4.48226794522255e-4,3.911257774162124e-5,-1.4560498684405491e-8,4.482780588321118e-4,3.918669829382871e-5,-1.457607889926847e-8,4.4830195410043057e-4,3.913954024565277e-5,-1.4565007306195704e-8,4.483485381147606e-4,3.8974954360315984e-5,-1.4527125710483059e-8,4.484579671969714e-4,3.872030337677846e-5,-1.4467791545713628e-8,4.4865345969394e-4,3.841765061935548e-5,-1.4396030200337683e-8,4.489392960449042e-4,3.811327623924533e-5,-1.4322193270630174e-8,4.4930320331229367e-4,3.7848511485026534e-5,-1.4255821744391228e-8,4.497213338957374e-4,3.765366154702086e-5,-1.4204163537672068e-8,4.5016388935185643e-4,3.7545304813913294e-5,-1.4171463776027224e-8,4.5060002058532647e-4,3.752619081927828e-5,-1.415888242467012e-8,4.5100150770761724e-4,3.758652962581753e-5,-1.4164756572674547e-8,4.5134546376081325e-4,3.7705677615177184e-5,-1.4184941935731645e-8,4.5161665818218725e-4,3.785383751499737e-5,-1.4213111016563784e-8,4.518100423627256e-4,3.7994051971822126e-5,-1.4241074681839239e-8,4.5193371514478737e-4,3.8085369823532785e-5,-1.4259379743515523e-8,4.5201173652522936e-4,3.808847352382779e-5,-1.4258553184670598e-8,4.5208492668352473e-4,3.797471001575803e-5,-1.4231251193107125e-8,4.522066971808626e-4,3.77376787180318e-5,-1.4175095272905575e-8,4.5243135935849304e-4,3.7403252871591634e-5,-1.4095172040726785e-8,4.5279582657719995e-4,3.7030874343293475e-5,-1.4004497095542028e-8,4.5330172975054594e-4,3.6700112219684904e-5,-1.3921072538958264e-8,4.539088056613535e-4,3.648437266876659e-5,-1.3861984223206524e-8,4.545461169138244e-4,3.642372882885231e-5,-1.3837216692123784e-8,4.5513658700048617e-4,3.651138922317251e-5,-1.3846408129259836e-8,4.556220323441288e-4,3.66997016694241e-5,-1.3879890283223254e-8,4.559775185965056e-4,3.691969978430192e-5,-1.3922769386842146e-8,4.562122242740801e-4,3.710309854736905e-5,-1.3959682858114987e-8,4.5636084388552884e-4,3.7198647914217366e-5,-1.397848887776796e-8,4.564712492187718e-4,3.7180239677984124e-5,-1.3972296643507357e-8,4.5659257815677795e-4,3.7047788247771294e-5,-1.393998633269255e-8,4.5676585962010804e-4,3.682314037864092e-5,-1.3885605024489333e-8,4.57017899354544e-4,3.65430985371316e-5,-1.3816998895031419e-8,4.573585513254664e-4,3.625115082842816e-5,-1.3743986972765052e-8,4.5778120823241134e-4,3.5989329685002914e-5,-1.367641965358165e-8,4.582659310878471e-4,3.579152347703973e-5,-1.3622494409608255e-8,4.587842300484169e-4,3.567911872805785e-5,-1.3587614246913989e-8,4.5930436312677383e-4,3.565921697959824e-5,-1.357389940117045e-8,4.5979615512869434e-4,3.572510183973148e-5,-1.358027877351196e-8,4.6023475988321376e-4,3.585820060660067e-5,-1.360294284347647e-8,4.6060335832733674e-4,3.6030722091809204e-5,-1.3635911870639802e-8,4.60895139188042e-4,3.6208528902177354e-5,-1.3671590860836431e-8,4.6111494690815154e-4,3.635429757026502e-5,-1.3701352069797334e-8,4.612807925415506e-4,3.6431488839050474e-5,-1.3716346193401218e-8,4.614247987373746e-4,3.6410027954227026e-5,-1.3708835750741679e-8,4.6159205914533125e-4,3.62743262879114e-5,-1.3674231350069227e-8,4.6183498055835207e-4,3.6032773953528615e-5,-1.3613573886357206e-8,4.6220096368370197e-4,3.572504366766511e-5,-1.3535497406452498e-8,4.627142460022724e-4,3.5420516607509466e-5,-1.345601089443765e-8,4.633589570077975e-4,3.520158587923049e-5,-1.339462640412944e-8,4.640754895656249e-4,3.5133781640715624e-5,-1.336732887285183e-8,4.6477797333421513e-4,3.523710146370312e-5,-1.337976511947418e-8,4.653863109243403e-4,3.5476761963375476e-5,-1.3424888861955243e-8,4.658546211216421e-4,3.577942568893229e-5,-1.3486488367131025e-8,4.661813358342299e-4,3.6063351831523195e-5,-1.3545965988268696e-8,4.664004611033069e-4,3.626473218857858e-5,-1.3588320959816941e-8,4.665639958352068e-4,3.6350407228647365e-5,-1.360513303776225e-8,4.6672541684679767e-4,3.631790496298228e-5,-1.3594788762173888e-8,4.6692865416770923e-4,3.618845377576418e-5,-1.3561187150119446e-8,4.672026368560225e-4,3.5997925297469526e-5,-1.3511940939945172e-8,4.6755982834898976e-4,3.5788386314177225e-5,-1.3456575605413407e-8,4.67997179408685e-4,3.5601078032541834e-5,-1.3404875559273567e-8,4.684985923176623e-4,3.5470812389852354e-5,-1.3365423942936016e-8,4.6903849108559164e-4,3.542180047068913e-5,-1.3344439413006975e-8,4.695861596821659e-4,3.546508508953634e-5,-1.3345040436527447e-8,4.7011041192164126e-4,3.559772500847251e-5,-1.3367006714160734e-8,4.705840542170844e-4,3.580375537789526e-5,-1.3407016011675667e-8,4.7098759753275935e-4,3.6056678871433476e-5,-1.3459233547938723e-8,4.7131190949890184e-4,3.632298007574168e-5,-1.3516078049011552e-8,4.71559790690804e-4,3.6566204934469644e-5,-1.3569053058169974e-8,4.717465735754899e-4,3.6751383530202755E-05,-1.3609647477316639e-8,4.718998124130554e-4,3.684981905601746e-5,-1.3630405599256602e-8,4.7205781579265745e-4,3.684452081682734e-5,-1.3626310087204059e-8,4.7226605766033966e-4,3.673637051258554e-5,-1.3596506069195115e-8,4.725699924678846e-4,3.654994787786842e-5,-1.3546025765795578e-8,4.730033180778431e-4,3.6336041112372295e-5,-1.3486667699711668e-8,4.7357300089362716e-4,3.616604739808837e-5,-1.3435763281303896e-8,4.74246972161772e-4,3.611397064008277e-5,-1.3411769997669891e-8,4.7495468950762464e-4,3.6228226616847743e-5,-1.342728801093758e-8,4.756075265498231e-4,3.6506596772157785e-5,-1.3482806498111208e-8,4.761324789643435e-4,3.68921215314555e-5,-1.3565521966204982e-8,4.76500027685036e-4,3.729587464380291e-5,-1.3654665288008376e-8,4.7672987690625123e-4,3.763293743393644e-5,-1.3730017018062513e-8,4.768749775046739e-4,3.7850136442992455e-5,-1.3778472109271951e-8,4.7699763159739244e-4,3.7934345672070496e-5,-1.379606231317544e-8,4.7715085690734735e-4,3.790502947009683e-5,-1.3786386207802384e-8,4.7736947329048336e-4,3.780076670277705e-5,-1.3757715344810296e-8,4.7766881383462853e-4,3.7666865402247315e-5,-1.3720316041747617e-8,4.780473761409701e-4,3.7546640888132714e-5,-1.368447808114495e-8,4.7849069816615584e-4,3.747611264933771e-5,-1.3659170952435136e-8,4.789752246660876e-4,3.748091718942398e-5,-1.3651117518452754e-8,4.7947201707088224e-4,3.757448492495361e-5,-1.3664168314897276e-8,4.799505077512641e-4,3.775714321569889e-5,-1.3698971973992664e-8,4.803824002412184e-4,3.801622409426613e-5,-1.3752971782310215e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json new file mode 100644 index 0000000000..0dd6dde4fc --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":11000,"numberOfSamples":1000,"samples":[4.807455898115237e-4,3.832746570992544e-5,-1.3820749559112586e-8,4.810276804026849e-4,3.8657939483712816e-5,-1.3894708855793208e-8,4.8122851144731977e-4,3.897037866353488e-5,-1.3966029941865335e-8,4.8136122169643126e-4,3.922846753666153e-5,-1.4025813189547578e-8,4.8145158055841605e-4,3.94025277918899e-5,-1.406634943105251e-8,4.815355041583503e-4,3.9474978459853574e-5,-1.408245537787128e-8,4.8165478219839815e-4,3.9445013590506954e-5,-1.4072791780691197e-8,4.8185089652025466e-4,3.933196966399209e-5,-1.4041008026015441e-8,4.8215671196515623e-4,3.9176311765079673e-5,-1.3996340784096513e-8,4.825864763543066e-4,3.9036228711670225e-5,-1.3953028790341758e-8,4.8312623641597524e-4,3.897747212754661e-5,-1.3927849119148707e-8,4.837291888970253e-4,3.9055456474574426e-5,-1.3935510387344442e-8,4.843221611312391e-4,3.929313827217236e-5,-1.3982860442730526e-8,4.848265247112546e-4,3.966499254457847e-5,-1.4064616609993489e-8,4.8518733416020557e-4,4.009980545620315e-5,-1.4163881241573302e-8,4.853950931909375e-4,4.050581912340954e-5,-1.425830655995102e-8,4.854866151667581e-4,4.080574058134305e-5,-1.4328715323638037e-8,4.85525688196407e-4,4.096178493042818e-5,-1.4365239392562207e-8,4.855772001398806e-4,4.0979862819758134e-5,-1.4368394366073396e-8,4.856885804979649e-4,4.089713112766541e-5,-1.4346234987150922e-8,4.8588326125485515e-4,4.076435074414623e-5,-1.4310345248447114e-8,4.8616296080937287e-4,4.063161994000118e-5,-1.4272594843316575e-8,4.865136173432042e-4,4.054008405187016e-5,-1.4243172616081504e-8,4.8691142789272524e-4,4.051847158520118e-5,-1.4229620182921136e-8,4.8732762934217247e-4,4.0582299326150006e-5,-1.4236433463507242e-8,4.8773212709177916e-4,4.07341134689005e-5,-1.4264941962397524e-8,4.880965967034294e-4,4.096407600183585e-5,-1.4313353517338398e-8,4.88397573177068e-4,4.1250927252936434e-5,-1.4376959666340294e-8,4.886197129387349e-4,4.1563798332032156e-5,-1.4448564853229553e-8,4.887589435265532e-4,4.1865488207741994e-5,-1.451924254306548e-8,4.888247307700336e-4,4.211748974787741e-5,-1.4579476522027053e-8,4.888405100767859e-4,4.228641181812268e-5,-1.462064263346648e-8,4.888415356313333e-4,4.235083017747227e-5,-1.463666315611464e-8,4.888699069788087e-4,4.2307124574301165e-5,-1.462554429370797e-8,4.889672434197426e-4,4.2172729191325406e-5,-1.459042628142175e-8,4.89166100944331e-4,4.198561886052198e-5,-1.4539802909504917e-8,4.894815424795779e-4,4.179941029790374e-5,-1.4486638095790344e-8,4.899045597653066e-4,4.16738571918689e-5,-1.4446179472955758e-8,4.903995543457572e-4,4.1661226263416274e-5,-1.4432491631334258e-8,4.909084078410756e-4,4.179064877681403e-5,-1.4454232713012669e-8,4.913629055658968e-4,4.205495921373214e-5,-1.4510927067288458e-8,4.917043498415898e-4,4.2406630471518614e-5,-1.4591584452824552e-8,4.919041260653661e-4,4.2768455240018365e-5,-1.4677226547185713e-8,4.91975143734432e-4,4.30581023135401e-5,-1.4747087713819914e-8,4.919667281492841e-4,4.321634341236769e-5,-1.4785795141156964e-8,4.919450134806429e-4,4.322488299346272e-5,-1.4787918091785175e-8,4.919696544610528e-4,4.310619995991277e-5,-1.4758043194016052e-8,4.920780610928328e-4,4.2909134196637064e-5,-1.4707389424281414e-8,4.922813225790399e-4,4.269033595193827e-5,-1.464944226297227e-8,4.925688425220637e-4,4.249988199139718e-5,-1.4596537842685818e-8,4.92916302217559e-4,4.2373819969799324e-5,-1.4557994767186664e-8,4.932930424762773e-4,4.233227598512297e-5,-1.4539483417289066e-8,4.936673798735039e-4,4.2380499169877454e-5,-1.4543082916464466e-8,4.940100632622315e-4,4.251078828128216e-5,-1.4567604259159937e-8,4.942967406427109e-4,4.27043504794895e-5,-1.4608973846901326e-8,4.945102476677884e-4,4.2933063498730834e-5,-1.4660638792530654e-8,4.946431248320447e-4,4.316170803770033e-5,-1.4714088579726986e-8,4.947001929114915e-4,4.335150966562856e-5,-1.4759675319273507e-8,4.947003518474758e-4,4.3465620460088586e-5,-1.4787908056141978e-8,4.946762700491294e-4,4.3476391218321277e-5,-1.4791230435817252e-8,4.946706632709735e-4,4.337312853241991e-5,-1.4766006598097854e-8,4.947286919062398e-4,4.316792790944356e-5,-1.4714140745679074e-8,4.948875598480194e-4,4.289680338026428e-5,-1.46436248866499e-8,4.951660198459949e-4,4.261431606960693e-5,-1.4567507684274658e-8,4.955572023782361e-4,4.238205390573295e-5,-1.4501266960766878e-8,4.960275056948562e-4,4.225356593077395e-5,-1.4459112508157139e-8,4.965226079965434e-4,4.225970770296015e-5,-1.445012992875491e-8,4.969797348841862e-4,4.239855798309805e-5,-1.4475344797421208e-8,4.973435745501257e-4,4.263333074298414e-5,-1.452672530286383e-8,4.975817616767804e-4,4.290011641573763e-5,-1.4588789841322534e-8,4.976949342797306e-4,4.31246291984686e-5,-1.4642736998874316e-8,4.977169933512843e-4,4.32435191844831e-5,-1.4671952404593025e-8,4.977043744489744e-4,4.3222752491909916e-5,-1.4666876259907704e-8,4.977180995272924e-4,4.30657402384419e-5,-1.4627283126456636e-8,4.978060190996614e-4,4.280844975449757e-5,-1.4561258969220208e-8,4.979920722311104e-4,4.2505071693506214e-5,-1.4481783123106343e-8,4.982749931993637e-4,4.221149461163865e-5,-1.4402704387878677e-8,4.986341351162414e-4,4.1972812399652274e-5,-1.4335614319282961e-8,4.99038023174974e-4,4.181724732728816e-5,-1.4288203371298527e-8,4.994521132236064e-4,4.1755451375511826e-5,-1.4263899128169458e-8,4.998442497099592e-4,4.1782774302784495e-5,-1.4262268021020732e-8,5.001879318353291e-4,4.1882399162322495e-5,-1.4279703860248156e-8,5.004642516735846e-4,4.202823461485221e-5,-1.4310113798395751e-8,5.006634317541689e-4,4.218742398465999e-5,-1.4345522650409268e-8,5.007865154243883e-4,4.232301933686223e-5,-1.4376697915433863e-8,5.008471450808845e-4,4.239771827120947e-5,-1.4394026271468186e-8,5.008726192415792e-4,4.237947661390274e-5,-1.4388889379628621e-8,5.009027064025104e-4,4.224906691188224e-5,-1.4355605708386248e-8,5.009844664141034e-4,4.200814399437556e-5,-1.4293595372097094e-8,5.011622958425812e-4,4.168457799010023e-5,-1.4208933086185455e-8,5.014648490094809e-4,4.133098997158663e-5,-1.4114222164068199e-8,5.018933871908035e-4,4.1014046129932506e-5,-1.4026120755346876e-8,5.024172779489319e-4,4.079629120466331e-5,-1.3960894019653134e-8,5.029800978344093e-4,4.0716851663191706e-5,-1.3929502673170868e-8,5.035149205751237e-4,4.0778803174321974e-5,-1.3934148788121047e-8,5.039631026052139e-4,4.0948067350335475e-5,-1.3967574412809247e-8,5.042898951464934e-4,4.116358529728348e-5,-1.4015214047407058e-8,5.044923433820881e-4,4.1354546447450864e-5,-1.405930760929713e-8,5.045980853346142e-4,4.145904379395495e-5,-1.4083628433054094e-8,5.046562864241187e-4,4.143903113694813e-5,-1.4077491031220824e-8,5.047237703547672e-4,4.128796116298141e-5,-1.4038013428869964e-8,5.048504577142612e-4,4.1029648300892024e-5,-1.3970152894372228e-8,5.050682042868694e-4,4.070946922079784e-5,-1.3884718542673423e-8,5.053857892959258e-4,4.038129871002777e-5,-1.3795175637434057e-8,5.057904773855169e-4,4.0094587167200846e-5,-1.3714342555419928e-8,5.062542972907671e-4,3.988514116215506e-5,-1.3651908298048012e-8,5.067420758582822e-4,3.9771018930213065e-5,-1.36131932106548e-8,5.072186700798977e-4,3.9752847710952766e-5,-1.3599056334601855e-8,5.076541049257842e-4,3.981679039448647e-5,-1.3606552572220539e-8,5.080265636895346e-4,3.993839829792082e-5,-1.3629887915207912e-8,5.083239056768367e-4,4.008625429723009e-5,-1.366134539027628e-8,5.085445405312649e-4,4.02251540015048e-5,-1.3692068130210929e-8,5.086982215653529e-4,4.031923748367069e-5,-1.3712790472901225e-8,5.088067942896942e-4,4.033585746282454e-5,-1.3714758380114217e-8,5.089042016332715e-4,4.0250984480183826e-5,-1.369110873241738e-8,5.090342370463796e-4,4.005630209267127e-5,-1.36387919547938e-8,5.09244162874289e-4,3.976656292219734e-5,-1.3560660497017656e-8,5.095732393487734e-4,3.942360984383623e-5,-1.3466737784983145e-8,5.100381218559963e-4,3.9092145563312785e-5,-1.3373334502326575e-8,5.106211663506831e-4,3.884421714299498e-5,-1.3299185546533904e-8,5.112695708256073e-4,3.873558642398053e-5,-1.325938777322804e-8,5.119093049859852e-4,3.878426446529394e-5,-1.3259745614206067e-8,5.124690770718819e-4,3.896273593345075e-5,-1.3294485083970076e-8,5.129030399538616e-4,3.920805997219822e-5,-1.3348486880023718e-8,5.13202292093832e-4,3.944384781038976e-5,-1.3402621757432825e-8,5.133926118135372e-4,3.9603311868793384e-5,-1.3439524368879208e-8,5.135225876503645e-4,3.964513077729718e-5,-1.344773648237942e-8,5.136484244188965e-4,3.955939833262208e-5,-1.3423498173910979e-8,5.138202846515992e-4,3.936503101320661e-5,-1.337045078206997e-8,5.140727251366115e-4,3.9101620258126494e-5,-1.3297891578819023e-8,5.144200439889327e-4,3.8818723273896924e-5,-1.3218230049065295e-8,5.148563248939854e-4,3.8565076244178615e-5,-1.31442269252279e-8,5.153592942705727e-4,3.8379720577811564e-5,-1.3086552229207539e-8,5.158965586590853e-4,3.8286402743178446e-5,-1.3052102047767048e-8,5.164325300028227e-4,3.829166482457637e-5,-1.3043289492522785e-8,5.169345624266961e-4,3.838611140678518e-5,-1.3058250794240458e-8,5.173773998025525e-4,3.854777091398222e-5,-1.3091694599441699e-8,5.177457469094699e-4,3.8746318140652296E-05,-1.3136024508001314e-8,5.180353753683765e-4,3.894721737733719e-5,-1.3182422098429487e-8,5.182533801875123e-4,3.9115464526579055e-5,-1.322176802538456e-8,5.184180207872244e-4,3.9219155018714586e-5,-1.3245479826195314e-8,5.185582174206982e-4,3.923339887816621e-5,-1.3246473160946539e-8,5.187121920390923e-4,3.9145162676454723e-5,-1.3220474590964729e-8,0.00051892397371530155,3.895909776742693e-5,-1.316773040159988e-8,5.192361363727685e-4,3.8702959631497384e-5,-1.3094695644609137e-8,5.19678041196177e-4,3.8429183553321686e-5,-1.3014701920521112e-8,5.20251698135249e-4,3.820781513346968e-5,-1.2946243125940887e-8,5.209217831712024e-4,3.810779889170091e-5,-1.2908049988956758e-8,5.216188239536118e-4,3.817071047034634e-5,-1.2912046211167408e-8,5.222596846655533e-4,3.8389929217076366e-5,-1.295764933741635e-8,5.227776981227885e-4,3.870942493105218e-5,-1.3031193682067312e-8,5.231462221446176e-4,3.90449333361414e-5,-1.3111251595486714e-8,5.233834624169179e-4,3.9315346546736246e-5,-1.3176687479802485e-8,5.235394281321812e-4,3.946752696132619e-5,-1.3213083897284422e-8,5.236754233317036e-4,3.9485713744511626e-5,-1.3215295714260378e-8,5.238462568216775e-4,3.9387314888452363e-5,-1.3186630329662888e-8,5.240896667697123e-4,3.921173128856953e-5,-1.3136310014778118e-8,5.244226644038686e-4,3.900801174331826e-5,-1.3076572242619164e-8,5.248426426550115e-4,3.882439799199982e-5,-1.3020069826079723e-8,5.253311937372029e-4,3.870065090327242e-5,-1.2977767650741354e-8,5.258593061790778e-4,3.8663123547147846e-5,-1.2957402470289928e-8,5.263931056407179e-4,3.8722437005912813e-5,-1.2962597830659435e-8,5.268994400545242e-4,3.887355383309786e-5,-1.2992693609541672e-8,5.273506944811689e-4,3.909786013135494e-5,-1.304323238147115e-8,5.277283618928682e-4,3.9366737045691754e-5,-1.310693161469982e-8,5.280251104455353e-4,3.964596224958332e-5,-1.3174889451303355e-8,5.282454335082373e-4,3.990022972843365e-5,-1.3237768428264953e-8,5.284052231946588e-4,4.009736888639202e-5,-1.3286836033079106e-8,5.285305494829884e-4,4.021225325537939e-5,-1.3314912562979519e-8,5.286557060394544e-4,4.0230579521206196e-5,-1.3317363974876683e-8,5.288202403339737e-4,4.015271335318547e-5,-1.3293259523465599e-8,5.290641459351538e-4,3.999743645858218e-5,-1.3246644881952389e-8,5.29420183065172e-4,3.980429049478516e-5,-1.3187490243689071e-8,5.299032094367221e-4,3.963165594186321e-5,-1.313141009986588e-8,5.304988417193463e-4,3.9546878333224285e-5,-1.3097054263167734e-8,5.311574317731786e-4,3.96065921173356e-5,-1.3100650126240523e-8,5.318014578119245e-4,3.98319165292681e-5,-1.3149038022273758e-8,5.32349611324718e-4,4.019180005671327e-5,-1.3234910936428494e-8,5.327485204893838e-4,4.0608738174731215e-5,-1.3338177317094923e-8,5.32993774836213e-4,4.098800442554419e-5,-1.3433731281722263e-8,5.331274981533502e-4,4.125409164773492e-5,-1.3501160283562443e-8,5.332164335123858e-4,4.137379163363762e-5,-1.353087213849061e-8,5.333259193608972e-4,4.13576666322837e-5,-1.3524569124303872e-8,5.335024650995162e-4,4.124644008992089e-5,-1.3491904463169542e-8,5.337679129261047e-4,4.109355822924989e-5,-1.3446225415098136e-8,5.341216559001369e-4,4.0951180469202836e-5,-1.340113134321436e-8,5.345463734211426e-4,4.0861572281668134e-5,-1.3368231159593744e-8,5.350143019353962e-4,4.0852955656746325e-5,-1.3355852072504397e-8,5.354928423825327e-4,4.093817556745151e-5,-1.3368381791204466e-8,5.359493976739728e-4,4.111506478866112e-5,-1.3406093750610092e-8,5.363555591240247e-4,4.136805710751307e-5,-1.3465430533373401e-8,5.366906062535734e-4,4.167087291184944e-5,-1.353970510439085e-8,5.369441549435876e-4,4.199017748541348e-5,-1.3620131233801054e-8,5.371176836764395e-4,4.229004758300979e-5,-1.3697055796399448e-8,5.372246939412618e-4,4.2536815840649555e-5,-1.376122922588961e-8,5.372894831724115e-4,4.2703741062777625e-5,-1.3804984921125316e-8,5.373446669618185e-4,4.277512234113474e-5,-1.3823300988072162e-8,0.00053742757544824975,4.27496117961429e-5,-1.3814764582700658e-8,5.375755603610683e-4,4.264248462223457e-5,-1.3782413644499372e-8,5.378200593904353e-4,4.2486472593883745e-5,-1.373430126808111e-8,5.381792508290428e-4,4.233015478549633e-5,-1.368338167500512e-8,5.386499283189473e-4,4.223204705859813e-5,-1.3646059069466792e-8,5.392010226639216e-4,4.224848840771485e-5,-1.3638780125339982e-8,5.397734225659609e-4,4.2415447202705524e-5,-1.3672723821927818e-8,5.402914650870005e-4,4.272937436938092e-5,-1.3748141826012162e-8,5.406870951769552e-4,4.3138228021123006e-5,-1.3851605137995859e-8,5.409276624223462e-4,4.355360016244392e-5,-1.3959259082476329e-8,5.410308634400444e-4,4.388299832113226e-5,-1.404572807505199e-8,5.410560312127462e-4,4.406544519190341e-5,-1.409387560046213e-8,5.410774246421454e-4,4.4090008179269903e-5,-1.4099829500317099e-8,5.411566007764416e-4,4.399025355105983e-5,-1.4071552354515442e-8,5.413273035270495e-4,4.3823916588713976e-5,-1.4023612135435341e-8,5.415945168970027e-4,4.365179453199496e-5,-1.3971835246327046e-8,5.41941678191083e-4,4.3523829968479546e-5,-1.3929763987744986e-8,5.423397870270695e-4,4.3473105445618066e-5,-1.3906988846966135e-8,5.427550475932729e-4,4.3515132910834864e-5,-1.3908697960636151e-8,5.431542404764803e-4,4.364960885200329e-5,-1.393582992804166e-8,5.435083954292767e-4,4.386290135691708e-5,-1.3985503452994463e-8,5.437955680521673e-4,4.413075019834189e-5,-1.4051648813651171e-8,5.440031193610353e-4,4.442130458093591e-5,-1.4125847171957948e-8,5.441294904295869e-4,4.4698775986850106e-5,-1.4198377383350764e-8,5.441851609821107e-4,4.4927902109817414e-5,-1.4259451932272639e-8,5.44192274379237e-4,4.5079042801761985e-5,-1.4300570677415424e-8,5.441825131835359e-4,4.513324877772769e-5,-1.4315854380231034e-8,5.441931678314615e-4,4.508643514283918e-5,-1.4303200161377657e-8,5.442616930190452e-4,4.495182030705989e-5,-1.4265097005812744e-8,5.444193252662113e-4,4.475992062198913e-5,-1.420891194830896e-8,5.446845113517835e-4,4.455563870804244e-5,-1.4146439051286658e-8,5.450570012046475e-4,4.439214140356481e-5,-1.4092482439868092e-8,5.455138259491807e-4,4.432123995689494e-5,-1.4062247519459378e-8,5.460091567979519e-4,4.4380529159655735e-5,-1.4067548181360422e-8,5.464806332929459e-4,4.457933352573298e-5,-1.411246534473196e-8,5.468639351101996e-4,4.488842557502628e-5,-1.41900303462031e-8,5.471137114483806e-4,4.5240836901430264e-5,-1.4282186009332701e-8,5.472228700801882e-4,4.5549104705021665e-5,-1.436459415403402e-8,5.472286408053625e-4,4.573542557700775e-5,-1.4415174862346914e-8,5.471991045330296e-4,4.576046398285103e-5,-1.4422216878027767e-8,5.47206448294467e-4,4.56349055279638e-5,-1.4387623676551349e-8,5.473019740297997e-4,4.5409058585348715e-5,-1.4324164571538933e-8,5.475045890269017e-4,4.5149831126079944e-5,-1.4249406835206891e-8,5.47803705825606e-4,4.4918876045973197e-5,-1.4180002072172085e-8,5.481698176479473e-4,4.4759851057189094e-5,-1.412830013525889e-8,5.48565692247331e-4,4.469494792163449e-5,-1.410125538583461e-8,5.489546078069922e-4,4.4727065395722936e-5,-1.4100722236229494e-8,5.493051789854964e-4,4.484400912140682e-5,-1.4124308082445898e-8,5.495938405083384e-4,4.5022613923846395e-5,-1.4166321890606745e-8,5.498062624304646e-4,4.523222436300298e-5,-1.4218687392005276e-8,5.499384595504489e-4,4.54378852388539e-5,-1.4271863647322725e-8,5.49997724894559e-4,4.560386201037831e-5,-1.4315865288538859e-8,5.500030030438457e-4,4.5697985530979016e-5,-1.434147018981161e-8,5.499839508065228e-4,4.5696843463098964e-5,-1.4341625669559141e-8,5.499779032270899e-4,4.559110119398946e-5,-1.4312908167490931e-8,5.500244181110129e-4,4.5389582007094315e-5,-1.4256724128095877e-8,5.50157883005538e-4,4.512048381923619e-5,-1.417984329569152e-8,5.503995686945172e-4,4.482844257285975e-5,-1.4093882581779136e-8,5.507511242321261e-4,4.456714389146746e-5,-1.4013561269086788e-8,5.511914791808575e-4,4.438847474538031e-5,-1.3953862718354635e-8,5.516785262955729e-4,4.43302010252111e-5,-1.3926532510634918e-8,5.521561635635225e-4,4.4404755979930705e-5,-1.3936611787065186e-8,5.525663239678071e-4,4.459220322119048e-5,-1.3979975801327925e-8,5.528642063231052e-4,4.484065587117192e-5,-1.4043007349154969e-8,5.530328973052125e-4,4.507661529127626e-5,-1.4105288308440919e-8,5.530916519570143e-4,4.522480506594574e-5,-1.4145236907282978e-8,5.530923528858961e-4,4.523202408225343e-5,-1.4147030087645297e-8,5.531031506537776e-4,4.5085084291692684e-5,-1.4105860437065999e-8,5.531855430718504e-4,4.4813819040833696e-5,-1.4028958709191986e-8,5.533755526889687e-4,4.447784879142051e-5,-1.3932084645392354e-8,5.536768815553462e-4,4.41448232435347e-5,-1.3833668292310375e-8,5.540662856310166e-4,4.387093911013423e-5,-1.3749517436350942e-8,5.545054107827476e-4,4.369036706870036e-5,-1.3689826206305373e-8,5.549526056740539e-4,4.3613801028485625e-5,-1.3658542876311258e-8,5.553711420623051e-4,4.363257224331595e-5,-1.3654223719707622e-8,5.55733434845886e-4,4.3724503286497815e-5,-1.3671440617076656e-8,5.560225166865299e-4,4.385919757848827e-5,-1.3702164569045507e-8,5.56232263778228e-4,4.400211587684637e-5,-1.3736921152732457e-8,5.563673733728169e-4,4.4117846392702796e-5,-1.376575922796316e-8,5.564433941300915e-4,4.4173372568585065e-5,-1.3779194966470485e-8,5.564864419333089e-4,4.414206095567587e-5,-1.3769317275568825e-8,5.565317072407061e-4,4.4008603643539826E-05,-1.373115531210439e-8,5.566196665612034e-4,4.377426004116058e-5,-1.3664180386757936e-8,5.567893255742785e-4,4.3460653879901505e-5,-1.3573495648336821e-8,5.5706903259323e-4,4.3109638309396154e-5,-1.3470018373719109e-8,5.574671621600434e-4,4.277713905643178e-5,-1.3369019224232388e-8,5.579663031544923e-4,4.25209069743737e-5,-1.3286905991693288e-8,5.585242506155931e-4,4.2385091814629774e-5,-1.323695369887385e-8,5.590827837639093e-4,4.238670958930531e-5,-1.322532616995296e-8,5.595820943030839e-4,4.2508928121728134e-5,-1.324879527303495e-8,5.599765436803205e-4,4.270375260425213e-5,-1.3295025360336303e-8,5.602470647653046e-4,4.290357624198227e-5,-1.3345467218010926e-8,5.604066433327727e-4,4.3038521618008536e-5,-1.3380135565607916e-8,5.604971361354452e-4,4.305496671614097e-5,-1.3382982052173816e-8,5.605778644400599e-4,4.293002467591174e-5,-1.3346289025681776e-8,5.607089623263255e-4,4.267729978794635e-5,-1.3272636519098559e-8,5.609347399582315e-4,4.234165410834814e-5,-1.3173718674744843e-8,5.61272824224999e-4,4.1984822487049506e-5,-1.3066489427049024e-8,5.617125088503604e-4,4.1667542738988164e-5,-1.2968201743518012e-8,5.622215885905281e-4,4.1434866394617e-5,-1.289219032748799e-8,5.627575830200749e-4,4.130882130901546e-5,-1.2845587660872705e-8,5.632786025023382e-4,4.1288594336048484e-5,-1.2829102735199409e-8,5.637508743402848e-4,4.135555763250854e-5,-1.2838217765699319e-8,5.641523616550949e-4,4.147987966628914e-5,-1.2864954028178306e-8,5.644734987008431e-4,4.1626480056051095e-5,-1.2899567931198906e-8,5.647164882240774e-4,4.1759528984558676e-5,-1.2931887162585448e-8,5.648942535231952e-4,4.184578296212132e-5,-1.2952297818560158e-8,5.650294889116143e-4,4.1857547900959665e-5,-1.2952577895423737e-8,5.651535715361088e-4,4.177605896823371e-5,-1.2926828568155383e-8,5.653044894483615e-4,4.159567182824132e-5,-1.287267633441649e-8,5.655225692094629e-4,4.132839759346974e-5,-1.279266224815386e-8,5.658430328778544e-4,4.100697766475647e-5,-1.2695307297663935e-8,5.662857653330005e-4,4.068344030322492e-5,-1.2594934042639526e-8,5.668451659124272e-4,4.042019197207262e-5,-1.2509327194232984e-8,5.674853336557398e-4,4.027347907363591e-5,-1.2455107328985577e-8,5.681455713211361e-4,4.027408208489247e-5,-1.244214622307206e-8,5.68756746685192e-4,4.0414004798879e-5,-1.2469513131187434e-8,5.692626340933667e-4,4.0646580039138516e-5,-1.2525133623159566e-8,5.696369955166504e-4,4.090066807453131e-5,-1.2589478046435055e-8,5.698896665275624e-4,4.110245921092196e-5,-1.2641551835441664e-8,5.700608716068607e-4,4.1195953729986446e-5,-1.2664715990718236e-8,5.702077505850598e-4,4.1155798139361454e-5,-1.2650540717421748e-8,5.703884759901265e-4,4.099042424392756e-5,-1.2600051493450478e-8,5.706483903579017e-4,4.073662588412746e-5,-1.2522583891047876e-8,5.710109691405875e-4,4.0448332338844876e-5,-1.243290518949643e-8,5.714748841309391e-4,4.0182934684654554E-05,-1.2347452802728689e-8,5.720170435890389e-4,3.9988544477136714e-5,-1.2280615128135358e-8,5.726001321744273e-4,3.9895057969472874e-5,-1.2241921421025485e-8,5.731821206679281e-4,3.991064069654339e-5,-1.2234717623019245e-8,5.737250198595423e-4,4.002343402058786e-5,-1.2256397133360156e-8,5.742009861844149e-4,4.0206784374766535e-5,-1.2299779958393722e-8,5.745952088943357e-4,4.042579305071043e-5,-1.2355009254206567e-8,5.749061274942017e-4,4.064339540438695e-5,-1.2411383146639144e-8,5.751440773201222e-4,4.0825069665894794e-5,-1.2458778726029885e-8,5.753293799587323e-4,4.094221059405223e-5,-1.2488629625521792e-8,5.754904006567578e-4,4.097477176506438e-5,-1.2494646793562146e-8,5.756615125629631e-4,4.0913864151746437e-5,-1.2473547362790684e-8,5.758803459554417e-4,4.076472695839921e-5,-1.24259847650868e-8,5.761832436211499e-4,4.0549772255380785e-5,-1.2357617600292305e-8,5.765979379808243e-4,4.0310124351701156e-5,-1.2279811549458918e-8,5.771336876089873e-4,4.010269549721812e-5,-1.2209012413795871e-8,5.777716895829274e-4,3.9989598090760646e-5,-1.2163757626176808e-8,5.784616465902294e-4,4.001937776225071e-5,-1.2159125570823381e-8,5.791308482835355e-4,4.020580099469462e-5,-1.2200322952745242e-8,5.797065295022585e-4,4.0515899636114696e-5,-1.2278907274980914e-8,5.80142457888133e-4,4.087731150446172e-5,-1.2374661952472232e-8,5.804354401798264e-4,4.120363917341638e-5,-1.2462792256088949e-8,5.806232139856671e-4,4.142456024104346e-5,-1.2522577976320966e-8,5.807671988462954e-4,4.1505812543823224e-5,-1.2543184545504214e-8,5.809309310098887e-4,4.145299058481706e-5,-1.2524943479233836e-8,5.811633911987712e-4,4.130273058000135e-5,-1.2477155055317291e-8,5.814906054594975e-4,4.110843349549538e-5,-1.241437134424403e-8,5.819145513730104e-4,4.092617541810449e-5,-1.2352610977888855e-8,5.824169208822125e-4,4.0803658015597504e-5,-1.2306198503680667e-8,5.829655041898003e-4,4.077300848955851e-5,-1.2285457641107754e-8,5.835216304790936e-4,4.08473506951388e-5,-1.2295353076190144e-8,5.840475044047213e-4,4.1020878040647856e-5,-1.2335168157344423e-8,5.845123946407954e-4,4.1271912795883656e-5,-1.2399194688289209e-8,5.848968676341912e-4,4.1568009920163966e-5,-1.247819580484653e-8,5.851947152164219e-4,4.1871931312817365e-5,-1.2561243079423654e-8,5.854127287371877e-4,4.214737362730478e-5,-1.2637501168654626e-8,5.855689082537816e-4,4.236363657066199e-5,-1.2697641820982583e-8,5.856898580934266e-4,4.2498978178316354e-5,-1.2734800220127118e-8,5.85807889067023e-4,4.254292268264029e-5,-1.2745207957826337e-8,5.859579513795578e-4,4.249795347224145e-5,-1.272871639020561e-8,5.861741086786202e-4,4.2380895742717424e-5,-1.2689360718495551e-8,5.8648484953241e-4,4.2223796026970555e-5,-1.2635890084310931e-8,5.869065735812319e-4,4.2073073991807874e-5,-1.2581801894459312e-8,5.874356319421588e-4,4.19846475120227e-5,-1.2544061137121026e-8,5.880413756125081e-4,4.201259995003142e-5,-1.2539678227518325e-8,5.886653049404993e-4,4.219108683589354e-5,-1.2580052638216501e-8,5.8923238679551e-4,4.2514839582835756e-5,-1.266480189970253e-8,5.896756386652956e-4,4.2930283800824865e-5,-1.2778839288959433e-8,5.89964101552167e-4,4.334851356362142e-5,-1.2896139522771572e-8,5.901171113360668e-4,4.367814905014522e-5,-1.298951948589008e-8,5.901947880698806e-4,4.38602737483596e-5,-1.3040992057450742e-8,5.902714285460607e-4,4.3885736496831144e-5,-1.3046861211874255e-8,5.904086373518427e-4,4.3789236335983746e-5,-1.3016096632518927e-8,5.90640488345573e-4,4.362965960038413e-5,-1.2964884842237333e-8,5.90971946441086e-4,4.34695603945582e-5,-1.2911008855333938e-8,5.913852195337234e-4,4.336092270372908e-5,-1.2869904121306538e-8,5.918485774305888e-4,4.333812126088688e-5,-1.285252461742886e-8,5.923245446952727e-4,4.3416150897318016e-5,-1.2864501648532461e-8,5.927764593066211e-4,4.359190961413261e-5,-1.2906114467297666e-8,5.931734732856898e-4,4.384714236114294e-5,-1.2972841846778543e-8,5.934942150203255e-4,4.4152466088083324e-5,-1.3056421398296158e-8,5.937291030815587e-4,4.447215885443439e-5,-1.3146311817982143e-8,5.938811933955622e-4,4.47693426906656e-5,-1.3231356330999967e-8,5.93965485886057e-4,4.5011077674093984e-5,-1.3301399351245954e-8,5.94006799600864e-4,4.5172770496475155e-5,-1.334862131885749e-8,5.940365840398179e-4,4.5241413682133494e-5,-1.336846818500244e-8,5.940891110207756e-4,4.521750624615486e-5,-1.3360212923084611e-8,5.941973595900601e-4,4.511571456359875e-5,-1.3327250246980502e-8,5.943887128092454e-4,4.4964352725929755e-5,-1.3277177720368145e-8,5.946803298205737e-4,4.480359021479988e-5,-1.3221572693952442E-08,5.950740552025116e-4,4.4681698944798734e-5,-1.3175121289205661e-8,5.955515209880322e-4,4.4648007751150914e-5,-1.3153551831570361e-8,5.960715426732222e-4,4.474149532569575e-5,-1.3169977028198143e-8,5.965733804112413e-4,4.4975795704802126e-5,-1.3229934760324216e-8,5.969897334847129e-4,4.5325368620618036e-5,-1.3326761651752678e-8,5.972695820723137e-4,4.572244176421522e-5,-1.3440440521292401e-8,5.974020923934746e-4,4.607385900358259e-5,-1.3542760448690568e-8,5.974260041454101e-4,4.6295468638069834e-5,-1.3607887991505155e-8,5.974149745012774e-4,4.63461491160932e-5,-1.3622690856111841e-8,5.974464645346873e-4,4.62408255489987e-5,-1.3590608456208522e-8,5.975733330563519e-4,4.603711609863486e-5,-1.3527729382284185e-8,5.978120949073726e-4,4.5808229996933905e-5,-1.3455010772294891e-8,5.981476506938362e-4,4.561887790575258e-5,-1.3391473757723922e-8,5.985457456463102e-4,4.551241536514983e-5,-1.3350535217826406e-8,5.989652880636257e-4,4.550820785410715e-5,-1.3339057205444769e-8,5.993671400674556e-4,4.560473672048171e-5,-1.3357888193002322e-8,5.997192571010954e-4,4.578464443118222e-5,-1.340296607210915e-8,5.999993638835912e-4,4.601975491101805e-5,-1.3466562670281527e-8,6.001963194062474e-4,4.627562551405624e-5,-1.353859250547407e-8,6.003106951839153e-4,4.651585668922163e-5,-1.3607999789540018e-8,6.003545828554706e-4,4.670640694476506e-5,-1.3664190858733449e-8,6.003504102879558e-4,4.681993271445912e-5,-1.3698426655564152e-8,6.003285040062579e-4,4.6839792267256964e-5,-1.3705039077842174e-8,6.003233654665366e-4,4.6763054815347505e-5,-1.3682318721009288e-8,6.00368980029104e-4,4.6601915443853456e-5,-1.3632979669015082e-8,6.004936892972919e-4,4.638313791509782e-5,-1.3564152706925421e-8,6.007152397239569e-4,4.6145339984406526e-5,-1.348684271745055e-8,6.010365913857648e-4,4.5934168128419516e-5,-1.3414767746104295e-8,6.014429942225124e-4,4.5795480210201754e-5,-1.3362464203894209e-8,6.019011057532637e-4,4.576653383496385e-5,-1.334252963495435e-8,6.023615895275835e-4,4.586559553492988e-5,-1.3362105344807452e-8,6.027669935205449e-4,4.608188309838632e-5,-1.3419300705541302e-8,6.030658883371729e-4,4.6370003546858796e-5,-1.350105745458068e-8,6.032312519987232e-4,4.66548633865428e-5,-1.3584497719127712e-8,6.032758091670896e-4,4.685133527899667e-5,-1.3643100300052348e-8,6.032535495762095e-4,4.6894725810143705e-5,-1.365628640799527e-8,6.03241729155245e-4,4.6767362660908595e-5,-1.3617683021674188e-8,6.033108166392385e-4,4.65049510596044e-5,-1.3537085025814027e-8,6.034993182490741e-4,4.617895985207165e-5,-1.3435213551070888e-8,6.038060843341433e-4,4.5867317225684895e-5,-1.3335114749071355e-8,6.041994185155103e-4,4.563018257654167e-5,-1.3255104395874068e-8,6.046332663829588e-4,4.549926714185694e-5,-1.3205572436516151e-8,6.05061438746373e-4,4.5478931464839044e-5,-1.3189054107180226e-8,6.054462336936745e-4,4.555306960662015e-5,-1.3201909329785792e-8,6.05762009514742e-4,4.5692876070382345e-5,-1.3236331295070042e-8,6.059957599659084e-4,4.586321651672058e-5,-1.3282117826334546e-8,6.061465022300673e-4,4.6027351570760987e-5,-1.332813231699191e-8,6.062243702543427e-4,4.615066462844048e-5,-1.3363565264245378e-8,6.062495021200464e-4,4.620409516581872e-5,-1.3379104609315037e-8,6.062503718534889e-4,4.616766157689615e-5,-1.3368067825864579e-8,6.062610395188557e-4,4.6033924576426214e-5,-1.3327457601791911e-8,6.063169469718518e-4,4.581063544655485e-5,-1.3258772884036288e-8,6.064494044595206e-4,4.55215188896636e-5,-1.3168331958415403e-8,6.066795318747286e-4,4.52042881604833e-5,-1.3066866709055663e-8,6.070128998625647e-4,4.490545427349359e-5,-1.2968213330564991e-8,6.074363111856063e-4,4.467226793872749e-5,-1.2887087372606102e-8,6.079179098524724e-4,4.4543009907630994e-5,-1.2836174421477544e-8,6.084112436310817e-4,4.453736700212919e-5,-1.282297992625794e-8,6.08863370461571e-4,4.464886329443632e-5,-1.2847073663286673e-8,6.092264758703546e-4,4.4841679024146196e-5,-1.289860746681526e-8,6.094712937410751e-4,4.505445305432866e-5,-1.2959127922180999e-8,6.095987972448405e-4,4.521292039621171e-5,-1.3005410854173592e-8,6.096448764943399e-4,4.5250510079934645e-5,-1.3016030794821033e-8,6.096730138384927e-4,4.513114561506076e-5,-1.2978711001202054e-8,6.097545631549566e-4,4.486402580498518e-5,-1.2895124516848801e-8,6.099439852908066e-4,4.450134061490781e-5,-1.2780348513948726e-8,6.102610819546051e-4,4.4118743907326676e-5,-1.265702267633818e-8,6.106884949894511e-4,4.378880296374916e-5,-1.2547376438516559e-8,6.111831302385094e-4,4.356052924504412e-5,-1.2467023709897674e-8,6.116930853079845e-4,4.3451843285146805e-5,-1.2422507196552202e-8,6.121718091847651e-4,4.3453283807383274e-5,-1.2412110270198072e-8,6.125859229567852e-4,4.3537061943772174e-5,-1.242828767855344e-8,6.129174051327997e-4,4.3666315988779066e-5,-1.2460290569013057e-8,6.131625421240779e-4,4.380214478201701e-5,-1.249629588729844e-8,6.133297797994605e-4,4.390824915390768e-5,-1.2524935334363993e-8,6.134376059320164e-4,4.395405443660182e-5,-1.2536392208869133e-8,6.135126429920539e-4,4.391729178049016e-5,-1.2523285610369912e-8,6.135875232541355e-4,4.37866565556534e-5,-1.248151062142838e-8,6.136978474050366e-4,4.3564553195397556e-5,-1.2411078877572878e-8,6.138776204707606e-4,4.3269171658970975e-5,-1.2316794930864575e-8,6.141531157431434e-4,4.293451537346142e-5,-1.2208394276352459e-8,6.145360882992824e-4,4.260690395661579e-5,-1.2099680577646451e-8,6.150183068876578e-4,4.233718420343913e-5,-1.2006354865178858e-8,6.155698862543469e-4,4.216944569007125e-5,-1.194266561911202e-8,6.161432780116315e-4,4.212893829735594e-5,-1.191760894514987e-8,6.166829962369822e-4,4.221304211145604e-5,-1.1931838226690434e-8,6.171390028809723e-4,4.2388733189199025e-5,-1.1976435073662864e-8,6.174801786565707e-4,4.2598204728411776e-5,-1.2034228597516467e-8,6.177039713164523e-4,4.2771969148489644e-5,-1.2083631887323418e-8,6.178390324477566e-4,4.284658717591776e-5,-1.2104190944765916e-8,6.179391490155112e-4,4.2782467541547576e-5,-1.2082381407395732e-8,6.180690499519215e-4,4.257622589977647e-5,-1.2015807665370394e-8,6.182856981106309e-4,4.2262641290182364e-5,-1.1914142478848567e-8,6.186214061728539e-4,4.1904306638940616e-5,-1.1796159869780265e-8,6.190753692770967e-4,4.1572254817565175e-5,-1.168386155567887e-8,6.196167242703293e-4,4.1325277041778395e-5,-1.1596058210408694e-8,6.201967488488639e-4,4.119594759437842e-5,-1.1543865254199268e-8,6.20764019662867e-4,4.118716574602068e-5,-1.1529328261415304e-8,6.21276549030351e-4,4.127757978552318e-5,-1.154678533548196e-8,6.217080946567695e-4,4.143120927489927e-5,-1.1585638643255654e-8,6.220491812385284e-4,4.1606888823869886e-5,-1.1633240123016763e-8,6.223049974865838e-4,4.176527688606243e-5,-1.1677161479087305e-8,6.224922388533137e-4,4.1873203335198556e-5,-1.1706688765447071e-8,6.226360955927154e-4,4.1906205539858945e-5,-1.1713717885084007e-8,6.227676718629662e-4,4.185030251602371e-5,-1.1693341505436549E-08,6.229214415278793e-4,4.1703735041523074e-5,-1.1644381723185078e-8,6.231319853664534e-4,4.147878640125714e-5,-1.1569970337746821e-8,6.234292802965761e-4,4.120299476324085e-5,-1.1478018587251494e-8,6.238323413543623e-4,4.0918246606836314e-5,-1.1381111507640178e-8,6.243421835840833e-4,4.067585345858345e-5,-1.1295177991775304e-8,6.249366570621865e-4,4.052646987191822e-5,-1.1236482520549367e-8,6.255707246045346e-4,4.0506051125566727e-5,-1.1217220872998886e-8,6.261847863392266e-4,4.062225481812146e-5,-1.124105993740093e-8,6.267202336075681e-4,4.08475845493812e-5,-1.1300642714626034e-8,6.271371716095217e-4,4.112393555640522e-5,-1.1378640363826194e-8,6.274272002337375e-4,4.137818217173511e-5,-1.1452374173663731e-8,6.276160661029025e-4,4.1543172110683946e-5,-1.1500321761911784e-8,6.277555903893943e-4,4.157642470580568e-5,-1.1508102924530854e-8,6.27908422691926e-4,4.147064598947023e-5,-1.1472061584588963e-8,6.281309101857208e-4,4.125382444025051e-5,-1.1399670417759892e-8,6.284589806615875e-4,4.0979990293322234e-5,-1.1307001676311571e-8,6.289004951050204e-4,4.071397673517665e-5,-1.1214196847662963e-8,6.294355537344494e-4,4.051475934856745e-5,-1.1140281814471427e-8,6.300239373611482e-4,4.0422039237037176e-5,-1.1098767800734435e-8,6.306167817204206e-4,4.044943019418976e-5,-1.1095165829009265e-8,6.311685570877783e-4,4.058515042629986e-5,-1.1126836428171848e-8,6.316459742628735e-4,4.079850842401508e-5,-1.1184776656645354e-8,6.320322305868174e-4,4.104897677346346e-5,-1.1256406714476454e-8,6.323269912046183e-4,4.129481071708473e-5,-1.1328374881368757e-8,6.325436800244089e-4,4.149944694038418e-5,-1.138873428162963e-8,6.327057717418874e-4,4.16353572641571e-5,-1.142829124798009e-8,6.3284320211077e-4,4.168599958414399e-5,-1.144127484924841e-8,6.329892507073682e-4,4.1646813714983565e-5,-1.1425641935138297e-8,6.331776221375067e-4,4.1525972124440285e-5,-1.1383308731724334e-8,6.334390698103364e-4,4.134505386970275e-5,-1.1320431548573354e-8,6.337968406765966e-4,4.1139068109295805e-5,-1.1247577530122925e-8,6.342606793062239e-4,4.0954382499360176e-5,-1.1179279984573037e-8,6.34820349377044e-4,4.084256691331992e-5,-1.1132243894526839e-8,6.354414692002509e-4,4.084884439949683e-5,-1.1121682761778917e-8,6.360679001502076e-4,4.0996568100376256e-5,-1.1156195968997953e-8,6.366339468110234e-4,4.1273455162251384e-5,-1.1233067444498262e-8,6.370847593082296e-4,4.162814226045832e-5,-1.1336844237008164e-8,6.37396720814852e-4,4.1982708229566924e-5,-1.1443112874876232e-8,6.375870858518857e-4,4.225789061658065e-5,-1.1526456467575253e-8,6.377074182492132e-4,4.239935949578947e-5,-1.1568844891267493e-8,6.378247532323368e-4,4.239301187350808e-5,-1.1564617122042744e-8,6.380001550354765e-4,4.226467189936685e-5,-1.1520634437041544e-8,6.382730696351323e-4,4.20678159364482e-5,-1.145275407366425e-8,6.386547983664781e-4,4.186642207611976e-5,-1.1380759726833166e-8,6.391301491825187e-4,4.1718969727590826e-5,-1.1323481608403951e-8,6.396645134501095e-4,4.16669354931265E-05,-1.1295058824572489e-8,6.402135211432802e-4,4.1728883630486846e-5,-1.130272523179324e-8,6.407329313863037e-4,4.189994975384543e-5,-1.1346210158588048e-8,6.411869273337647e-4,4.215579668992807e-5,-1.141864418294653e-8,6.415535317098374e-4,4.245951292741821e-5,-1.1508603446175233e-8,6.418266451670236e-4,4.276953906141313e-5,-1.160268944345754e-8,6.420150711981394e-4,4.3046889911181794e-5,-1.168800792468656e-8,6.42139481568027e-4,4.326056338850396e-5,-1.1754073581974093e-8,6.422284650134046e-4,4.3390762964130205e-5,-1.1793939423120785e-8,6.423145863944254e-4,4.343025232088572e-5,-1.1804643333497793e-8,6.424308611712833e-4,4.3384560725109035e-5,-1.1787259369334247e-8,6.426075271147033e-4,4.327164998942055e-5,-1.1746830998873365e-8,6.428686772623222e-4,4.312121499188235e-5,-1.1692290186969063e-8,6.43228211111064e-4,4.297319789412587e-5,-1.163620160738782e-8,6.436849034127897e-4,4.2874338512484316e-5,-1.1593853762600689e-8,6.442175178239869e-4,4.287106863696716e-5,-1.1581024865378009e-8,6.447826241944376e-4,4.299769946587701e-5,-1.1610003778983072e-8,6.453192106631316e-4,4.326148989808878e-5,-1.1684410461728622e-8,6.457633643151136e-4,4.363072674477005e-5,-1.179495428359945e-8,6.460709780358177e-4,4.403539258500074e-5,-1.1919425251124777e-8,6.46238269440531e-4,4.438654427814625e-5,-1.202896701159812e-8,6.463067360377512e-4,4.460863357575101e-5,-1.2098638955452586e-8,6.463473522053487e-4,4.466782983677177e-5,-1.2116629130642991e-8,6.464328198700985e-4,4.458091988511223e-5,-1.2087172530117929e-8,6.466134080396352e-4,4.440296244483021e-5,-1.2026767218001455e-8,6.469062893985017e-4,4.420432212394621e-5,-1.1957162905655501e-8,6.472980673486538e-4,4.4049415375376975e-5,-1.1898899064049858e-8,6.477545569824074e-4,4.398348465637827e-5,-1.1867178141227173e-8,6.482321283936542e-4,4.402769158632383e-5,-1.1870077472484313e-8,6.486874451684293e-4,4.4180110616365914e-5,-1.190843181001741e-8,6.490845942283705e-4,4.442004791255551e-5,-1.1976767655848106e-8,6.493996674170178e-4,4.471399475420608e-5,-1.2064930829832403e-8,6.496230132730473e-4,4.502224997790057e-5,-1.2160170877601224e-8,6.497593165315699e-4,4.530541463222377e-5,-1.2249376594925378e-8,6.498257985589669e-4,4.5530023897967826e-5,-1.2321106524374785e-8,6.498490150835266e-4,4.5672787320462324e-5,-1.2367125184429808e-8,6.49860849248668e-4,4.5723111388483726e-5,-1.2383285624306336e-8,6.498943459428724e-4,4.56838734642481e-5,-1.2369777794004631e-8,6.499798483583396e-4,4.5570805788698724e-5,-1.2330940194194202e-8,6.50141540921297e-4,4.5410946737608354e-5,-1.2274858062634918e-8,6.50394252361549e-4,4.524034632505981e-5,-1.2212820673742356e-8,6.507402898474811e-4,4.510081644081227e-5,-1.2158498221920027e-8,6.511662941424877e-4,4.503501619399875e-5,-1.2126476181320007e-8,6.516409652377725e-4,4.507883196177047e-5,-1.2129687005367259e-8,6.521158333795178e-4,4.525065636203942e-5,-1.2175577965498676e-8,6.525322031476455e-4,4.553941364164363e-5,-1.2261726884082065e-8,6.528365381010586e-4,4.5896913451435045e-5,-1.2372957541494924e-8,6.53001864278318e-4,4.6243075736359524e-5,-1.2482966177543175e-8,6.530450153429226e-4,4.6489294263523875e-5,-1.2562182212005331e-8,6.530262302326049e-4,4.657300931178719e-5,-1.2589338662501737e-8,6.530266241761063e-4,4.6484341852986244e-5,-1.2560253186849565e-8,6.531153745404709e-4,4.626789168937222e-5,-1.248839206681805e-8,6.533259500794602e-4,4.600025166059354e-5,-1.2397689341809364e-8,6.536518626923442e-4,4.5759473698595974e-5,-1.2312978138197302e-8,6.540578644141293e-4,4.56028117197643e-5,-1.2253084886290816e-8,6.544960449519266e-4,4.555825704891566e-5,-1.222809841334969e-8,6.549192256583115e-4,4.562646405711048e-5,-1.2239671643138295e-8,6.552892641813089e-4,4.578752220519903e-5,-1.2282737836356728e-8,6.555809511761707e-4,4.6008638879196065e-5,-1.23475952409882e-8,6.557831063329746e-4,4.625097547136351e-5,-1.2421941128098137e-8,6.558981448308248e-4,4.647540239116749e-5,-1.2492798538365653e-8,6.559406151232579e-4,4.664739366488725e-5,-1.2548313680324879e-8,6.55934795368779e-4,4.674108669115587e-5,-1.2579299722569738e-8,6.559114262674878e-4,4.674234926529412e-5,-1.258037528172128e-8,6.559037475636952e-4,4.6650576798607184e-5,-1.2550589153337167e-8,6.559431799480559e-4,4.647890047352641e-5,-1.2493483386171588e-8,6.560551490320222e-4,4.625272895401807e-5,-1.241665830734056e-8,6.562554736211841e-4,4.6006843480568736e-5,-1.2330965549949725e-8,6.565475621712678e-4,4.5781298533340715e-5,-1.224938677601268e-8,6.569205673771478e-4,4.561626701972796e-5,-1.2185538559539806e-8,6.573487109405446e-4,4.554580590585966e-5,-1.2151659149246088e-8,6.577924153502072e-4,4.5590415220543125e-5,-1.215594635662814e-8,6.58202593113294e-4,4.574881097857109e-5,-1.2199412084801173e-8,6.585297262397721e-4,4.59909687918636e-5,-1.2273096298199133e-8,6.587382425042407e-4,4.62568085760598e-5,-1.2357324481940705e-8,6.588231495329708e-4,4.646624084061321e-5,-1.2425073606254522e-8,6.588204978599106e-4,4.65431768960108e-5,-1.2450244405357208e-8,6.588012287440477e-4,4.644637290291428e-5,-1.2418191579088436e-8,6.588458419334591e-4,4.61899779128904e-5,-1.2332619928155143e-8,6.590119357198074e-4,4.5838877755827045e-5,-1.2214031205022718e-8,6.593137391720427e-4,4.548068499544168e-5,-1.2090617955505468e-8,6.597236153319567e-4,4.519227164557173e-5,-1.1987544773090963e-8,6.601895628610029e-4,4.5018724180246425e-5,-1.1920237507966108e-8,6.606554423138694e-4,4.49697296954195e-5,-1.189308702067798e-8,6.610749674083071e-4,4.502738150794323e-5,-1.1901620274760557e-8,6.614178803084616e-4,4.515738862713096e-5,-1.1935726383931564e-8,6.616706357616994e-4,4.531887849385159e-5,-1.1982572911828448e-8,6.61834447382716e-4,4.547133072107415e-5,-1.2028824379413137e-8,6.6192264137107e-4,4.5579126378920714e-5,-1.2062283892577649e-8,6.619580115031964e-4,4.561475770029697e-5,-1.2073180904243843e-8,6.619700433900955e-4,4.556135838574398e-5,-1.2055197467963607e-8,6.61991699576438e-4,4.5414661343623503e-5,-1.200620365179172e-8,6.620555712945934e-4,4.51840896179602e-5,-1.1928622796913211e-8,6.621894741458482e-4,4.489240920507422e-5,-1.182931385336294e-8,6.624119923538018e-4,4.457342997377879e-5,-1.1718880084197724e-8,6.627287685916333e-4,4.4267655432898346e-5,-1.1610397059841187e-8,6.631303288208212e-4,4.401622188040044e-5,-1.1517614629584648e-8,6.635920520441031e-4,4.3853814799379214e-5,-1.1452739383809711e-8,6.640766309640293e-4,4.3801500136949246e-5,-1.1423990223408127e-8,6.645391547065707e-4,4.3860465762502585e-5,-1.1433213609765761e-8,6.649348907757294e-4,4.400781803244625e-5,-1.1474022268078109e-8,6.652295738743438e-4,4.4196208170768975e-5,-1.1531237312247409e-8,6.654109062286146e-4,4.435975285734818e-5,-1.1582666541464982e-8,6.654978651706966e-4,4.442827675775156e-5,-1.1603994416442983e-8,6.655421492594667e-4,4.434891282437948e-5,-1.1576365369570233e-8,6.656163939754637e-4,4.410816482066763e-5,-1.1494114352982963e-8,6.657897957674164e-4,4.3742356818358154e-5,-1.136844192019311e-8,6.661014873919342e-4,4.332714263267976e-5,-1.1223980436229123e-8,6.66546435586102e-4,4.294919512763321e-5,-1.1089453851181167e-8,6.670813088959861e-4,4.267547632709114e-5,-1.0987569771282318e-8,6.676444956798761e-4,4.2535713727573955e-5,-1.0929181332560628e-8,6.681774843805674e-4,4.252258156620681e-5,-1.0913107238000703e-8,6.686384044883153e-4,4.260325002735994e-5,-1.0929587800350869e-8,6.690062161390295e-4,4.2733346818073974e-5,-1.0964592948012124e-8,6.692787368457985e-4,4.286787118068754e-5,-1.1003310653399214e-8,6.694682707915127e-4,4.296777011126571e-5,-1.1032406940396475e-8,6.695972389198812e-4,4.300322240539698e-5,-1.1041321064106932e-8,6.696946149272839e-4,4.295523829967347e-5,-1.1023008875669534e-8,6.697929196037282e-4,4.2816698354687566e-5,-1.0974419442589062e-8,6.699251733474295e-4,4.2593196764431914e-5,-1.0896807753560433e-8,6.701212865700194e-4,4.230341044442153e-5,-1.0795842637994127e-8,6.704037174690174e-4,4.1978221761531796e-5,-1.0681328919295532e-8,6.707828559139265e-4,4.1657672615155404e-5,-1.0566288547495148e-8,6.712532690016723e-4,4.138524242901553e-5,-1.0465216530512158e-8,6.717922865944109e-4,4.119981360746378e-5,-1.0391550497627238e-8,6.723621835534646e-4,4.112674104581725e-5,-1.0354712996658229e-8,6.729163674503193e-4,4.117028254115718e-5,-1.0357404924622589e-8,6.734087601805087e-4,4.1309743555585105e-5,-1.0393953428156289e-8,6.738045432664134e-4,4.150094656252346e-5,-1.0450378613876328e-8,6.740899326696811e-4,4.168357203370962e-5,-1.0506544084907395e-8,6.742784623792691e-4,4.1793849405908306e-5,-1.0540362360195925e-8,6.744112537778521e-4,4.178074134045985e-5,-1.053345924363471e-8,6.745493044657425e-4,4.1621948675312874e-5,-1.0476951591107518e-8,6.747577135709221e-4,4.1334207987166106e-5,-1.0375304924468307e-8,6.750854372839487e-4,4.097200972504231e-5,-1.0246168788815136e-8,6.755482329271165e-4,4.0612262569480024e-5,-1.0115334350837037e-8,6.761231653952755e-4,4.032957409188221e-5,-1.0008413784011982e-8,6.767578521833027e-4,4.017301604488647e-5,-9.94290139609733e-9,6.773894310269758e-4,4.015465619698559e-5,-9.924065754328441e-9,6.779636072244319e-4,4.025271194279116e-5,-9.945684323589636e-9,6.784462992592076e-4,4.042426218751692e-5,-9.994032077050076e-9,6.788262531519046e-4,4.0619750895181834e-5,-1.0052621713449427e-8,6.791114670866537e-4,4.0793953317949755e-5,-1.0105937498144301e-8,6.793233103813246e-4,4.091197852871128e-5,-1.0141630257049476e-8,6.794909850969935e-4,4.0951453051865014e-5,-1.01514585939184e-8,6.7964728168145e-4,4.090274064307937e-5,-1.0131510062344522e-8,6.798254076015645e-4,4.076859742149239e-5,-1.0082138915684628e-8,6.800561699820016e-4,4.0563850495158245e-5,-1.0007849266961698e-8,6.8036477449427e-4,4.031492566409186e-5,-9.917132870207206e-9,6.807668440871827e-4,4.0058407100975396e-5,-9.822042726828585e-9,6.812639721347429e-4,3.98374389784475e-5,-9.737104678895134e-9,6.818400995093161e-4,3.9695020030860256e-5,-9.677186556046806e-9,6.824608377364019e-4,3.966437272967973e-5,-9.65429089058683e-9,6.830778514977682e-4,3.975846050622824e-5,-9.673896804332269e-9,6.8363893699842e-4,3.996251016407234e-5,-9.732153955509115e-9,6.841017372567231e-4,4.023361206932423e-5,-9.815394137449953e-9,6.844466228191916e-4,4.05092582535884e-5,-9.902727164968086e-9,6.846838738110617e-4,4.072297495515305e-5,-9.971213593928136e-9,6.848523051199315e-4,4.082220466885166e-5,-1.000201594026922e-8,6.850095982123903e-4,4.07828469698932e-5,-9.98560223372568e-9,6.852171873960667e-4,4.0616222783899834e-5,-9.924483469796086e-9,6.855238737488718e-4,4.036653532224773e-5,-9.832728989987601e-9,6.859526224257744e-4,4.00993290741107e-5,-9.732322816114245e-9,6.86494446675017e-4,3.988386503340198e-5,-9.647264291981038e-9,6.871115650576727e-4,3.977452661168896e-5,-9.597109977300679e-9,6.877489646437295e-4,3.979728759741124e-5,-9.592045225736865e-9,6.883501673843535e-4,3.994563772478752e-5,-9.631095222420986e-9,6.888714062386018e-4,4.018638516815171e-5,-9.70376889018204e-9,6.89289773006254e-4,4.047168422173579e-5,-9.79400284884246e-9,6.896042371432542e-4,4.075196513064055e-5,-9.884614283434994e-9,6.898314601928995e-4,4.0985699460782386e-5,-9.960814485912439e-9,6.899994707481199e-4,4.114457896454388e-5,-1.0012195088317796e-8,6.901416346331935e-4,4.1214864630885974e-5,-1.0033353714839723e-8,6.902920197616812e-4,4.119656099349532e-5,-1.0023683572674945e-8,6.904821165138293e-4,4.1101881144250444e-5,-9.986848350330236e-9,6.907382638650003e-4,4.09537582206849e-5,-9.930264533573738e-9,6.910790024415842e-4,4.0784383529647454e-5,-9.864646068425661e-9,6.915118287645734e-4,4.06330723894299e-5,-9.803388502339166e-9,6.92029478921974e-4,4.054225759251511e-5,-9.761330963984282e-9,6.926069404711696e-4,4.055042383207215e-5,-9.752392841996608e-9,6.93201577440324e-4,4.068187369966381e-5,-9.785963135087253e-9,6.937591702126083e-4,4.0935603885594335e-5,-9.86281521804032e-9,6.942270330740719e-4,4.1278405821690475e-5,-9.972398042232453e-9,6.945712632534799e-4,4.164815702606528e-5,-1.0093706764041374e-8,6.947908016139201e-4,4.196965425274466e-5,-1.0200641875276863e-8,6.949204861200494e-4,4.217816671559534e-5,-1.027018519806173e-8,6.950204845917e-4,4.2240436893643125e-5,-1.0289782773011855e-8,6.951568783835051e-4,4.2163991349505506e-5,-1.0260761389728324e-8,6.953820071952732e-4,4.1992296890793167e-5,-1.0196951522017627e-8,6.957214881833488e-4,4.1789873918597023e-5,-1.0119904592446122e-8,6.961704254910497e-4,4.162399139921554e-5,-1.0052855248199617e-8,6.966977464138914e-4,4.154851515582117e-5,-1.0015196278929336e-8,6.972559483814732e-4,4.159322790104321e-5,-1.0018554243928807e-8,6.977931798100247e-4,4.1759927789965654e-5,-1.006500579411969e-8,6.982647541256812e-4,4.202510292476047e-5,-1.0147554437825793e-8,6.986416504509654e-4,4.2347742945279895e-5,-1.0252547579380231e-8,6.989144432942709e-4,4.267979568978907e-5,-1.0363254734980224e-8,6.990924889111561e-4,4.297633660441667e-5,-1.046354978955787e-8,6.991995765864698e-4,4.3203125469473766e-5,-1.0540778184890215e-8,6.992679525856361e-4,4.334055988722916e-5,-1.0587341630078698e-8,6.993324737511327e-4,4.338433788379723e-5,-1.0601042222300012e-8,6.994259422448656e-4,4.33439373540044e-5,-1.0584573537885036e-8,6.995758178822197e-4,4.324016014019141e-5,-1.0544655239898046e-8,6.998018846283525e-4,4.310255497934784e-5,-1.049116419505745e-8,7.001142366953494e-4,4.296687167505949e-5,-1.0436353487376878e-8,7.00511078834245e-4,4.28720812612912e-5,-1.0393964239501379e-8,7.009763426032131e-4,4.285598693783195e-5,-1.0377799290857615e-8,7.014781075470884e-4,4.294835757893481e-5,-1.0399281482030315e-8,7.01969994354906e-4,4.316142500987284e-5,-1.0463892261942207e-8,7.023982919714376e-4,4.3479848296496525E-05,-1.0567290124078954e-8,7.027162843902773e-4,4.385542505735799e-5,-1.0693127635927223e-8,7.029027821209852e-4,4.42135354664673e-5,-1.0815191406563102e-8,7.029758681401383e-4,4.44744496722845e-5,-1.0904987723913586e-8,7.029914590549362e-4,4.458263269534113e-5,-1.0942205658178163e-8,7.030240973959722e-4,4.4528749813272105e-5,-1.0922540209312683e-8,7.031394395161471e-4,4.435182467687107e-5,-1.0858532246731884e-8,7.033730001998939e-4,4.412187581728143e-5,-1.0773708033050758e-8,7.037236525719877e-4,4.391449186565976e-5,-1.0694038600834027e-8,7.041603691418619e-4,4.378961991431415e-5,-1.0640801646843702e-8,7.046353875274154e-4,4.378031259963003e-5,-1.0626632482199593e-8,7.050976569019387e-4,4.3890906265389334e-5,-1.0654550090175343e-8,7.055033512381783e-4,4.4101463726791514e-5,-1.0719012226212606e-8,7.058225832089542e-4,4.4375368649487437e-5,-1.0808140470310517e-8,7.060425584939559e-4,4.4667972118194066e-5,-1.0906544945457309e-8,7.061676354241381e-4,4.4934992978476056e-5,-1.0998328320161188e-8,7.062167941862384e-4,4.513963638656883e-5,-1.1069817830506132e-8,7.062192461146077e-4,4.525758094198104e-5,-1.1111586225981603e-8,7.062091365135665e-4,4.527941172781372e-5,-1.1119497270185845e-8,7.062203187254132e-4,4.521057587191405e-5,-1.1094762027694266e-8,7.062819845440831e-4,4.5069391812404094e-5,-1.1043233702560278e-8,7.06415505665796e-4,4.488393907460559e-5,-1.0974313413837001e-8,7.066323612634319e-4,4.4688540962570335e-5,-1.089978106738531e-8,7.069327966070445e-4,4.452012245181196e-5,-1.0832652650027417e-8,7.073048809528734e-4,4.4414291049901125e-5,-1.0785940512482935e-8,7.077239303819673e-4,4.4400593182769026e-5,-1.0771010723654536e-8,7.081530282662858e-4,4.449628480384157e-5,-1.0795218004047385e-8,7.08546309372772e-4,4.4698728013663695e-5,-1.0858860998889045e-8,7.088570074624559e-4,4.497837061391854e-5,-1.0952277710884579e-8,7.090511764918637e-4,4.527680031930541e-5,-1.1054882078469456e-8,7.091242875412201e-4,4.551603875633128e-5,-1.1138494306429178e-8,7.091120498076681e-4,4.562208888687946e-5,-1.117598713005094e-8,7.090846177539748e-4,4.5555482629709526e-5,-1.1152408119707443e-8,7.091216217038918e-4,4.533143658656323e-5,-1.1072207380177586e-8,7.092802036001695e-4,4.501504148607371e-5,-1.0957523637321026e-8,7.095747795025035e-4,4.469379194735881e-5,-1.0838617797559788e-8,7.099779924341384e-4,4.4444886939645104e-5,-1.0742641317809363e-8,7.104372322708001e-4,4.431417690490606e-5,-1.0686428868332595e-8,7.108944427121056e-4,4.43116119214771e-5,-1.067478403156329e-8,7.113007184917924e-4,4.441806234799192e-5,-1.0702470480375884e-8,7.116236793675328e-4,4.459632083759559e-5,-1.0757592826290675e-8,7.118492538786992e-4,4.480161570626685e-5,-1.0824953711808661e-8,7.11980233791131e-4,4.4989876558258635e-5,-1.0888886188899312e-8,7.120332870788396e-4,4.512373743613871e-5,-1.093553525218388e-8,7.120351830951165e-4,4.517671189813642e-5,-1.0954618391336977e-8,7.12018506314901e-4,4.513573773315998e-5,-1.094058962873492e-8,7.12017114163592e-4,4.500208629716573e-5,-1.0893112309757543e-8,7.120616914124563e-4,4.47905968840482e-5,-1.0816818974571956e-8,7.121758530794824e-4,4.452730583824109e-5,-1.0720449941183935e-8,7.12373225808455e-4,4.424582850797638e-5,-1.0615582948149321e-8,7.126557056969058e-4,4.3983020894276823E-05,-1.0515185840291802e-8,7.130128748690027e-4,4.377430370445033e-5,-1.0432097453514521e-8,7.134225026408814e-4,4.364884043657226e-5,-1.0377410518766734e-8,7.138521296875519e-4,4.3624612316220915e-5,-1.0358662531311387e-8,7.142621087199356e-4,4.370335181858926e-5,-1.0377769717223068e-8,7.146110340123279e-4,4.386580901383108e-5,-1.0428929632440784e-8,7.148644843579355e-4,4.406916289330847e-5,-1.0497305281474699e-8,7.150068229220568e-4,4.424991700273873e-5,-1.0559887164612516e-8,7.150530524366479e-4,4.4336178298709344e-5,-1.0590042672540263e-8,7.15053734810595e-4,4.42704276374271e-5,-1.056605287956476e-8,7.150846291680763e-4,4.403576931514396e-5,-1.0480847359923442e-8,7.152198511851885e-4,4.3670120179829765e-5,-1.0347183403858284e-8,7.155008744882165e-4,4.325529287265698e-5,-1.019372183871818e-8,7.159202063701489e-4,4.288442453165478e-5,-1.0053486378649688e-8,7.164288382090401e-4,4.262714020159595e-5,-9.95164253828637e-9,7.169595712173114e-4,4.2511112636761016e-5,-9.899008498589871e-9,7.174506599694499e-4,4.2524020942925516e-5,-9.892540841677029e-9,7.178598144621892e-4,4.2627404619268514e-5,-9.91983987587705e-9,7.181678446769699e-4,4.27721963699476e-5,-9.964266310840572e-9,7.183759126586623e-4,4.291045343841636e-5,-1.0008908875743132e-8,7.18500405594647e-4,4.300234497131943e-5,-1.0039122755238085e-8,7.185677828556197e-4,4.30196320106107e-5,-1.0044007543963475e-8,7.186101042079086e-4,4.294717412168661e-5,-1.001723346601736e-8,7.186610533817944e-4,4.278335317154585e-5,-9.957406051808767e-9,7.18752168284341e-4,4.253964376045135e-5,-9.867997924772748e-9,7.189091853091514e-4,4.2239192867652126e-5,-9.756827287293615e-9,7.191486680453425e-4,4.191412441845834e-5,-9.635062646698978e-9,7.194753833185204e-4,4.1601472907260915e-5,-9.515794554155215e-9,7.198809710473828e-4,4.1338056243998875e-5,-9.412302783608438e-9,7.203442861506658e-4,4.115483206636226e-5,-9.33615368049298e-9,7.208335901116579e-4,4.107136650050428e-5,-9.295250483512817e-9,7.21310582686931e-4,4.109113767836152e-5,-9.292009746461441e-9,7.217361374829578e-4,4.1198376722348027e-5,-9.321908690989147e-9,7.220776248483091e-4,4.135721706930838e-5,-9.372781644989014e-9,7.223174798075731e-4,4.151444248885548e-5,-9.42550576306746e-9,7.224616572947125e-4,4.160760778234224e-5,-9.456878589667109e-9,7.225448756233372e-4,4.157965702183735e-5,-9.445137808270311e-9,7.226279081272899e-4,4.139838628719147e-5,-9.377400707335786e-9,7.22782831518834e-4,4.107397411941798e-5,-9.256348015631858e-9,7.230679109607896e-4,4.066348908937088e-5,-9.10200491377539e-9,7.235030324353299e-4,4.025454393631868e-5,-8.94585670514005e-9,7.240604349135902e-4,3.993307278447048e-5,-8.819235976789946e-9,7.246770474161983e-4,3.9752475639384204e-5,-8.74220271896425e-9,7.25280167562206e-4,3.972032945361145e-5,-8.71863631377646e-9,7.258112499168408e-4,3.980545137139982e-5,-8.738490452126625e-9,7.262379795707331e-4,3.995588791311808e-5,-8.783922245220665e-9,7.265545698200255e-4,4.011659749582939e-5,-8.83541706972929e-9,7.267755339873465e-4,4.024105833074878e-5,-8.875936197311278e-9,7.269279845271264e-4,4.029652987094112e-5,-8.892976574019021e-9,7.270451450548466e-4,4.026516750216042e-5,-8.879235354411228e-9,7.271616327638609e-4,4.014326976173892e-5,-8.832575722188413e-9,7.273099551577129e-4,3.993996905439593e-5,-8.755682817923396e-9,7.275175140387404e-4,3.9675705000669275e-5,-8.65552457776656e-9,7.278037036096325e-4,3.938023732409923e-5,-8.542589315450922e-9,7.281770882665271e-4,3.9089662899162196e-5,-8.429786504232964e-9,7.286331360591269e-4,3.884197223268564e-5,-8.330888585721539e-9,7.291533677555678e-4,3.867120217350354e-5,-8.258515599405508e-9,7.297067738756757e-4,3.860090558086704e-5,-8.221844583454592e-9,7.302539666578742e-4,3.8638182704821905e-5,-8.224400957513714e-9,7.307538962269374e-4,3.876983049784128e-5,-8.262452625865695e-9,7.311722092434422e-4,3.896204742743471e-5,-8.324571705863522e-9,7.314897527645678e-4,3.9164524285314036e-5,-8.3927927962959e-9,7.317094414493923e-4,3.931904431090589e-5,-8.445566122962981e-9,7.318594845103638e-4,3.937201425400375e-5,-8.462392890762826e-9,7.319908066651358e-4,3.928917259530832e-5,-8.42948659848983e-9,7.321669790530052e-4,3.906885058053107e-5,-8.345010771919948e-9,7.324469928605998e-4,3.8748281868431985e-5,-8.22172192559327e-9,7.328651675913713e-4,3.839739804730499e-5,-8.084889760603431e-9,7.334166535442571e-4,3.809868218835139e-5,-7.964969302770367e-9,7.340570593855317e-4,3.791967584824037e-5,-7.88746795733556e-9,7.347180158889726e-4,3.789093829132095e-5,-7.864694610367329e-9,7.35330978895752e-4,3.799999059049531e-5,-7.893257941684946e-9,7.358473549973659e-4,3.820188625552753e-5,-7.95762224232136e-9,7.36247320859895e-4,3.8438037090302746e-5,-8.036768609057542e-9,7.365375874964547e-4,3.865343008418449e-5,-8.110432460280896e-9,7.367432165561168e-4,3.880698844533339e-5,-8.163005946748622e-9,7.368986354207467e-4,3.8875061863166875e-5,-8.185035831936871e-9,7.370405983510341e-4,3.885061218849014e-5,-8.173156102939069e-9,7.372035548293182e-4,3.8740714185469477e-5,-8.129326522098361e-9,7.374166923744471e-4,3.8563901864775714e-5,-8.05990590565618e-9,7.377017025310008e-4,3.834777065479802e-5,-7.974743340507008e-9,7.38070622142274e-4,3.8126512150255426e-5,-7.886238130470689e-9,7.385236155784789e-4,3.7937678633434624e-5,-7.80816935910351e-9,7.390471872462534e-4,3.7817479218706066e-5,-7.754041850862354e-9,7.39613896733862e-4,3.779443638936219e-5,-7.734832514708064e-9,7.401848806728716e-4,3.788221163124379e-5,-7.75635096994411e-9,7.407160397257579e-4,3.807351780711525e-5,-7.816863716772319e-9,7.411675017627108e-4,3.83377342940748e-5,-7.905958120875292e-9,7.415142919555773e-4,3.8624442718095306e-5,-8.005552813609206e-9,7.417549191637427e-4,3.887335159084064e-5,-8.093346705012602e-9,7.419146387750976e-4,3.902868594401002e-5,-8.14809060536792e-9,7.420415466924796e-4,3.9054260051663074e-5,-8.155305505607456e-9,7.421957712450767e-4,3.894484020912841e-5,-8.111780096870276e-9,7.424340938914088e-4,3.873006125504485e-5,-8.02737573183699e-9,7.42793899355561e-4,3.846880194086285e-5,-7.923264854219435e-9,7.432812620141698e-4,3.823437454532318e-5,-7.82664187542525e-9,7.438677441412036e-4,3.809405520022208e-5,-7.763143694430137e-9,7.444981839003461e-4,3.808955287654943e-5,-7.749409650064826e-9,7.451073361538792e-4,3.822586805072566e-5,-7.788599612458683e-9,7.456389114710405e-4,3.847282903416642e-5,-7.870587084328902e-9,7.460595325375159e-4,3.8777620572790256e-5,-7.97634017132848e-9,7.463633344203971e-4,3.90818258416466e-5,-8.084164382373755e-9,7.465679154850866e-4,3.9335967587656355e-5,-8.175197120055171e-9,7.467056704916095e-4,3.950769387356267e-5,-8.236653653676395e-9,7.468147802209882e-4,3.958364471163843e-5,-8.262748556136644e-9,7.469323302937862e-4,3.956728801685668e-5,-8.25406326448367e-9,7.470900224543724e-4,3.947522924674709e-5,-8.21625230612436E-09,7.473117786206921e-4,3.9333574246693434e-5,-8.15868872939971e-9,7.476122444451707e-4,3.917483364161524e-5,-8.093285230637837e-9,7.479954258414936e-4,3.9035053263447094e-5,-8.033430521419e-9,7.484532171378763e-4,3.8950407831258895e-5,-7.992775209673987e-9,7.489642810589979e-4,3.895244597740534e-5,-7.983527194781351e-9,7.494944525688141e-4,3.906165830601274e-5,-8.014060469529422e-9,7.500002746529996e-4,3.9280174203610924e-5,-8.086078232861302e-9,7.504369055959056e-4,3.9586013083436254e-5,-8.192238951203957e-9,7.507699029120727e-4,3.993257848288867e-5,-8.31570446363603e-9,7.509875768828624e-4,4.025651618290501e-5,-8.432888245201967e-9,7.511084739632404e-4,4.049377684511111e-5,-8.519412651981377e-9,7.511792950330379e-4,4.059903216808652e-5,-8.557453460506901e-9,7.51262580818493e-4,4.056073182061699e-5,-8.541545996409175e-9,7.514184424281146e-4,4.040549547796316e-5,-8.480474453332119e-9,7.516871944073718e-4,4.019036204144835e-5,-8.394680466844668e-9,7.520786833722089e-4,3.998634873333417e-5,-8.31041577663291e-9,7.525708694622507e-4,3.985920059382761e-5,-8.252707967838128e-9,7.531170338310043e-4,3.985300180192867e-5,-8.239147244363815e-9,7.536588526186752e-4,3.998070036708499e-5,-8.276008258796359e-9,7.541413990265233e-4,4.022342678605548e-5,-8.357544078241255e-9,7.54525863865062e-4,4.05380201242533e-5,-8.468421354961952e-9,7.547967008719969e-4,4.0869815523018587e-5,-8.588335122366214e-9,7.549619635945633e-4,4.116635887970118e-5,-8.697206288555848e-9,7.550480101612701e-4,4.1388047065979665e-5,-8.779387588935774e-9,7.550913554910073e-4,4.151357045899603e-5,-8.825967420826681e-9,7.551305842522161e-4,4.154031612162445e-5,-8.835132581061215e-9,7.552001895864037e-4,4.148139165922518e-5,-8.811164119887681e-9,7.55326828426084e-4,4.1361260126847735e-5,-8.762820923675844e-9,7.555274925687125e-4,4.12114438663705e-5,-8.70170647458801e-9,7.558087203055979e-4,4.1066871518413693e-5,-8.640891785799208e-9,7.561661037027524e-4,4.09626519740274e-5,-8.593743073534889e-9,7.565837873294337e-4,4.0930595848213674e-5,-8.572674913245856e-9,7.570343023719693e-4,4.0994708019895345e-5,-8.58746909968765e-9,7.574798432523166e-4,4.116526167701248e-5,-8.642942450707564e-9,7.578766597453443e-4,4.143219506580418e-5,-8.736227826676889e-9,7.581839700006578e-4,4.1760430647830195e-5,-8.85472089607003e-9,7.583769007372872e-4,4.209143613341075e-5,-8.97646260497755e-9,7.584593350854895e-4,4.235492678888832e-5,-9.074535079715516e-9,7.584693326984003e-4,4.249010700473473e-5,-9.125223368184249e-9,7.58470988460264e-4,4.246860282595259e-5,-9.116849569321388e-9,7.585337351705025e-4,4.230716762507732e-5,-9.054700673282172e-9,7.587083994551931e-4,4.206260627237825e-5,-8.959261900385463e-9,7.590114511903744e-4,4.181169099700161e-5,-8.858889905876627e-9,7.594231618304254e-4,4.162653730197789e-5,-8.780808674797843e-9,7.598974502542237e-4,4.155567159126383e-5,-8.744091746991325e-9,7.603770701441117e-4,4.161547883315085e-5,-8.756261200644959e-9,7.608083072352005e-4,4.1791395294714015e-5,-8.813314074637931e-9,7.611518311466191e-4,4.204568142158321e-5,-8.902175671211233e-9,7.613885521055572e-4,4.232834360337178e-5,-9.004492689727314e-9,7.615206177534766e-4,4.258845489577387e-5,-9.100837967244961e-9,7.61568322961355e-4,4.2783817580922045e-5,-9.174529986143186e-9,7.615641863347267e-4,4.288746563387388e-5,-9.214382010099968e-9,7.615458421224065e-4,4.289030424473849e-5,-9.215981555878051e-9,7.615493776879412e-4,4.280020160465099e-5,-9.181526671744856e-9,7.616042486398303e-4,4.26385797343642e-5,-9.118594656166542e-9,7.61730210455046e-4,4.2435795379432153e-5,-9.03837554219817e-9,7.61936050598561e-4,4.222646210520275e-5,-8.953874020503188e-9,7.622194897874063e-4,4.204535712200338e-5,-8.87837427683221e-9,7.625676250645121e-4,4.1923882039288665e-5,-8.824153587401546e-9,7.629576171601758e-4,4.188660389994002e-5,-8.801211913123232e-9,0.00076335781686778445,4.194730410322629e-5,-8.815719768604965e-9,7.637301806589586e-4,4.210424149540176e-5,-8.868024377405146e-9,7.640353866362429e-4,4.233530176320579e-5,-8.950502771608857e-9,7.642418368971225e-4,4.259542541961727e-5,-9.046295943306457e-9,7.643379706413167e-4,4.282042794217269e-5,-9.130652554192153e-9,7.643436783033333e-4,4.29411494887276e-5,-9.176459932444947e-9,7.643128225427903e-4,4.290719105443412e-5,-9.163573390875584e-9,7.643198908851147e-4,4.27107298651634e-5,-9.088104238947882e-9,7.644329712891078e-4,4.23954390951903e-5,-8.965872528852865e-9,7.646866633436667e-4,4.204199444422708e-5,-8.826934866527333e-9,7.650704200976676e-4,4.17372669333947e-5,-8.704057045239502e-9,7.655369936842672e-4,4.154471093131832e-5,-8.621706108552556e-9,7.660227565342318e-4,4.1489461027239444e-5,-8.590446292021975e-9,7.664679096395077e-4,4.155968867214678e-5,-8.60719762281304e-9,7.668295552510263e-4,4.1717667344140696e-5,-8.65897698447111e-9,7.670867797953163e-4,4.191334217832278e-5,-8.727615499482921e-9,7.672399375245228e-4,4.209611415617943e-5,-8.794011363368658e-9,7.673067113076542e-4,4.2223374435902354e-5,-8.841422117427617e-9,7.673167461421355e-4,4.226589688328241e-5,-8.857772846673981e-9,7.673057770691697e-4,4.221051342646373e-5,-8.837001052988211e-9,7.673098402283448e-4,4.206030802892788e-5,-8.779391079594279e-9,7.673601781277127e-4,4.18326361185597e-5,-8.690943756311483e-9,7.674793660680467e-4,4.1555511526051535e-5,-8.58199870451685e-9,7.676789770593695e-4,4.126301892957958e-5,-8.465429763661297e-9,7.679588364412986e-4,4.0990480338567314e-5,-8.354768907767848e-9,7.683075907368027e-4,4.077001331558171e-5,-8.262536838002104e-9,7.687041577968274e-4,4.062672035544098e-5,-8.198843955832656e-9,7.691197778494181e-4,4.057536670843389e-5,-8.170131786714939e-9,7.69520695114969e-4,4.061730481647757e-5,-8.17788778750396e-9,7.698719236009533e-4,4.073758088267318e-5,-8.217289031700045e-9,7.701429410375053e-4,4.090284202188645e-5,-8.276083307954193e-9,7.703158959245221e-4,4.106194157234824e-5,-8.334583011415699e-9]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json new file mode 100644 index 0000000000..1edb28bce9 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":12000,"numberOfSamples":1000,"samples":[7.703954280162467e-4,4.1152337826266915e-5,-8.368108119871265e-9,7.704163319665058e-4,4.111507788730868e-5,-8.352989399151336e-9,7.704421464154993e-4,4.091720944904923e-5,-8.275542352848811e-9,7.705485092428724e-4,4.05724562623383e-5,-8.140252864992262e-9,7.707939985966856e-4,4.014524130054576e-5,-7.971353086916377e-9,7.71193504222048e-4,3.972957759547678e-5,-7.80469566907836e-9,7.717115053607008e-4,3.9412072212316335e-5,-7.673655282248528e-9,7.722792203821364e-4,3.924081276169691e-5,-7.597334312683116e-9,7.728228927422465e-4,3.921592014800571e-5,-7.576902082499595e-9,7.732865636479628e-4,3.930044006202883e-5,-7.599469965429773e-9,7.736417360467977e-4,3.9439508716162856e-5,-7.645015059481085e-9,7.738862021781628e-4,3.9577299627356655e-5,-7.692550022805146e-9,7.740375781067476e-4,3.9667776867413035e-5,-7.724156675043192e-9,7.741257583521852e-4,3.9679734947780095e-5,-7.727075835179889e-9,7.741863193020013e-4,3.959810915098842e-5,-7.69451274251175e-9,7.742552430288779e-4,3.9423328672554246e-5,-7.625696494804441e-9,7.743646142276804e-4,3.9169548057952974e-5,-7.525395913350832e-9,7.745390796275454e-4,3.886191912277735e-5,-7.4029175785362335e-9,7.747931611691499e-4,3.853296073940333e-5,-7.2706518736087654e-9,7.751296404933389e-4,3.821816871539602e-5,-7.14230656603222e-9,7.75539277044951e-4,3.795118644851318e-5,-7.03102083378519e-9,7.760019965895818e-4,3.7759097444815016e-5,-6.947589780698099e-9,7.764894114568546e-4,3.7658393030000226e-5,-6.898960011119357e-9,7.769683935525284e-4,3.765194567776308e-5,-6.887041206138857e-9,7.77405468600329e-4,3.7727187339015794e-5,-6.907852463658269e-9,7.777719367210197e-4,3.7855696317654865e-5,-6.951096001721251e-9,7.780497715515111e-4,3.799465132874708e-5,-7.000433114460731e-9,7.782381033839588e-4,3.809125972066116e-5,-7.035036448543083e-9,7.783590131789634e-4,3.809174285674149e-5,-7.033143881376136e-9,7.784595953194529e-4,3.795570392998253e-5,-6.97793131163529e-9,7.786057068107846e-4,3.767368510457848e-5,-6.864708360881282e-9,7.78863996118783e-4,3.728037531656348e-5,-6.706310810691064e-9,7.792756265371022e-4,3.685219468959701e-5,-6.532225465482031e-9,7.798348397283327e-4,3.648330405006227e-5,-6.379231745544197e-9,7.804875774404013e-4,3.624915992465997e-5,-6.277220111165846e-9,7.811532791147602e-4,3.6178446406365796e-5,-6.238248751260801e-9,7.817563618614648e-4,3.624887846641678e-5,-6.254752293779451e-9,7.822492066349364e-4,3.6404572752001926e-5,-6.305999039127454e-9,7.826184621073835e-4,3.658034238992342e-5,-6.367226110433409e-9,7.828786448897808e-4,3.672020080806501e-5,-6.416659701095429e-9,7.830611528872669e-4,3.678622737434062e-5,-6.439002339589363e-9,7.83204269111392e-4,3.6760045223355876e-5,-6.4262288080890655e-9,7.83346116265409e-4,3.6640538094929564e-5,-6.376990645821899e-9,7.835202865150684e-4,3.644047816686522e-5,-6.2955425776532835e-9,7.837530585274323e-4,3.618322636043522e-5,-6.190565289506217e-9,7.840613538345039e-4,3.5899528490766174e-5,-6.073894295370791e-9,7.844511692520874e-4,3.56240404001225e-5,-5.959079652820332e-9,7.849166362486965e-4,3.5391266889247926e-5,-5.859734881539029e-9,7.854401461991078e-4,3.5230870470624936e-5,-5.787703349498604e-9,7.85994077008628e-4,3.516280326863614e-5,-5.751203618221222e-9,7.865443681490566e-4,3.519312942196211e-5,-5.753224515569559e-9,7.870557121649313e-4,3.531147041257569e-5,-5.790462278713693e-9,7.874977374834473e-4,3.549084781661851e-5,-5.8530751899271e-9,7.878512977067683e-4,3.5690381696580056e-5,-5.925483082828172e-9,7.88113902130303e-4,3.586089281430252e-5,-5.9883395159535995e-9,7.883033069918536e-4,3.595324388575569e-5,-6.021732124830117e-9,7.884579960410935e-4,3.5929083510116866e-5,-6.009544248256601e-9,7.886327975757129e-4,3.577280030598468e-5,-5.9444715378693474e-9,7.888879780100181e-4,3.550164046195876e-5,-5.832367391647236e-9,7.8927192870103e-4,3.51687389345516e-5,-5.693704861085736e-9,7.898018205719634e-4,3.4853326117873307e-5,-5.559814012217819e-9,7.904515896948133e-4,3.4636846056963114e-5,-5.463410169207496e-9,7.911567365586743e-4,3.457328365667514e-5,-5.426733674861982e-9,7.91836723351535e-4,3.4669207955395765e-5,-5.453450884163303e-9,7.924237202788972e-4,3.488486649734166e-5,-5.5288267094573905e-9,7.928824548961669e-4,3.515389152880303e-5,-5.627269436403621e-9,7.932136820118008e-4,3.540839736028799e-5,-5.722097489506235e-9,7.934449059141124e-4,3.5597063748403574e-5,-5.792673659357338e-9,7.936168882573704e-4,3.569210775996662e-5,-5.827295173952732e-9,7.937723217445624e-4,3.568791359332356e-5,-5.822884193637893e-9,7.93948800831336e-4,3.559595323883983e-5,-5.783216738249511e-9,7.941754088277288e-4,3.543933477989003e-5,-5.716920600537979e-9,7.944713320113322e-4,3.524834071649752e-5,-5.635744464363097e-9,7.948452117223364e-4,3.505690102972568e-5,-5.5531067119024055e-9,7.952946621025866e-4,3.489936168856889e-5,-5.482741290558481e-9,7.958060134527227e-4,3.4806877971801684e-5,-5.437234302862502e-9,7.963548356244236e-4,3.4803064153757236e-5,-5.4263155715433935e-9,7.969080873912969e-4,3.4899187129560714e-5,-5.454979598662578e-9,7.974285582348853e-4,3.50899868901018e-5,-5.521799771482021e-9,7.978815595783528e-4,3.53517139310461e-5,-5.618028402827992e-9,7.982428279621153e-4,3.5643920541599894e-5,-5.728107579266846e-9,7.985056927078104e-4,3.591576113045357e-5,-5.8319638327390805e-9,7.986852279968585e-4,3.6116131940588234e-5,-5.908914090462572e-9,7.988176580367524e-4,3.620557989303193e-5,-5.942429308719043e-9,7.989544079791842e-4,3.616720864975489e-5,-5.924668401918435e-9,7.991513656849079e-4,3.601375362426653e-5,-5.859607617947738e-9,7.994550428476274e-4,3.5788266373648105e-5,-5.763648882378041e-9,7.99888593020665e-4,3.5556588356057684e-5,-5.662870662485801e-9,8.004419741134302e-4,3.539153188530321e-5,-5.586797190304597e-9,8.010710698253013e-4,3.5351857597047766e-5,-5.559879219657929e-9,8.017086298947224e-4,3.546304659868737e-5,-5.5935163200738305e-9,8.022846671415112e-4,3.5708577068191366e-5,-5.6822096378184195e-9,8.027481145977655e-4,3.603666410112383e-5,-5.805964874906324e-9,8.03080122412991e-4,3.637928126071499e-5,-5.9377647708489825e-9,8.032943410005627e-4,3.66738652272459e-5,-6.0522761139605395e-9,8.034269249007324e-4,3.687843167960255e-5,-6.132033879229968e-9,8.035230519879982e-4,3.697653334579644e-5,-6.1696217748146e-9,8.036257380118303e-4,3.6974206946549126e-5,-6.166656508896828e-9,8.037692352128727e-4,3.689330257374978e-5,-6.131278442552063e-9,8.039764427338145e-4,3.6764723596644845e-5,-6.075520263494496e-9,8.042586457584074e-4,3.662315128777011e-5,-6.013183162784273e-9,8.046160819092535e-4,3.6503272989771094e-5,-5.9582713714511854e-9,8.050385231957502e-4,3.643678976682334e-5,-5.9237473528870625e-9,8.055057955743184e-4,3.644934285412461e-5,-5.920288595123292e-9,8.05988792090945e-4,3.655676717208342e-5,-5.95478706400642e-9,8.064519656770659e-4,3.676075426661275e-5,-6.028574833606665e-9,8.068582848986766e-4,3.7045013088594046e-5,-6.1357749440002495e-9,8.071769237677392e-4,3.737399900933667e-5,-6.26261951082692e-9,8.073924491758243e-4,3.769659412573422e-5,-6.388754892200863e-9,8.075124666197616e-4,3.7955997865778476e-5,-6.491115253060035e-9,8.075698393218493e-4,3.8104352666225344e-5,-6.549812033282912e-9,8.07616918266904e-4,3.811755258854625e-5,-6.5542030392740885e-9,8.077125028108634e-4,3.8004458985452114e-5,-6.506795533466793e-9,8.079056000982033e-4,3.780654452780539e-5,-6.4233624926436094e-9,8.082214227720043e-4,3.758774308343327e-5,-6.3291414262697445e-9,8.086539871520523e-4,3.741775103981728e-5,-6.252328710187585e-9,8.091672759069606e-4,3.7353752588214316e-5,-6.216752306565877e-9,8.097045052884347e-4,3.742558962134468e-5,-6.235686559437506e-9,8.10203012993122e-4,3.7628423384850995e-5,-6.308502277607127e-9,8.106106251449948e-4,3.792510731679957e-5,-6.421212634856097e-9,8.108985322821864e-4,3.8257644162653106e-5,-6.550833196339432e-9,8.11066628774171e-4,3.856383400569566e-5,-6.6720638631456955e-9,8.111401568994287e-4,3.8793232686939005e-5,-6.763879623403471e-9,8.111600098107639e-4,3.89173073971411e-5,-6.813868422693099e-9,8.111711107269196e-4,3.893182181341246e-5,-6.8194280235812216e-9,8.112128636990658e-4,3.8852913529948424e-5,-6.786357912765378e-9,8.1131356935384e-4,3.8710088334482416e-5,-6.726121364291298e-9,8.114885730374386e-4,3.853908980505929e-5,-6.652976845483148e-9,8.117408037071133e-4,3.837625006855202e-5,-6.5816575047402725e-9,8.120622864326276e-4,3.825456404102906e-5,-6.5257403552766695e-9,8.124357145823514e-4,3.82008938099246e-5,-6.496493824519633e-9,8.128358550233297e-4,3.823344877076438e-5,-6.50185004606853e-9,8.132312194083829e-4,3.8358874558908814e-5,-6.54518991660995e-9,8.135869354214777e-4,3.856887726212377e-5,-6.623869747140799e-9,8.138698868858205e-4,3.8837323813125146e-5,-6.727869263055802e-9,8.140566018155787e-4,3.91199837876055e-5,-6.83950023112515e-9,8.141427039935174e-4,3.935979230186433e-5,-6.9354371500791985e-9,8.14150262656473e-4,3.949946847388898e-5,-6.9918722744796985e-9,8.141277285832854e-4,3.949960053306327e-5,-6.991994835378283e-9,8.141388942367572e-4,3.935526219250151e-5,-6.93289197521611e-9,8.142430879224422e-4,3.910207785679162e-5,-6.8281493368907015e-9,8.144749296276758e-4,3.880686864520632e-5,-6.704223833237992e-9,8.1483306083408e-4,3.854646680042599e-5,-6.592073096421126e-9,8.152821053230805e-4,3.838435896231063e-5,-6.5178631025860026e-9,8.157651947313659e-4,3.835428291873892e-5,-6.49629781434836e-9,8.162207450781731e-4,3.845478693315215e-5,-6.528135674230928e-9,8.16597684699937e-4,3.865376270796675e-5,-6.60159629155916e-9,8.168657158061926e-4,3.889947743847334e-5,-6.69644446442954e-9,8.170194049574676e-4,3.913422953807289e-5,-6.7893400986806185e-9,8.17076394641524e-4,3.930728020730456e-5,-6.85914255437804e-9,8.170710316645813e-4,3.938449175604022e-5,-6.891061862959034e-9,8.170454569870298e-4,3.935306732398158e-5,-6.878882809994513e-9,8.170405722878981e-4,3.9221105681444305e-5,-6.825033584806315e-9,8.1708896023377e-4,3.901310215359767e-5,-6.7388979016364186e-9,8.172108407223391e-4,3.87633764776707e-5,-6.634171213681119e-9,8.174130175522054e-4,3.850938229687362e-5,-6.526094414707984e-9,8.176899834395489e-4,3.8286205079792516e-5,-6.4291520891420515e-9,8.180260959470649e-4,3.812267075009407e-5,-6.3554492104173685e-9,8.183979894619872e-4,3.803873780290355e-5,-6.313637763487015e-9,8.187769116206049e-4,3.804351923521837e-5,-6.308093725118056e-9,8.191312129866966e-4,3.813337134793312e-5,-6.338063937256885e-9,8.194296942684052e-4,3.8289922698924704e-5,-6.396704673018225e-9,8.196467238419641e-4,3.847879781237149e-5,-6.470354270719354e-9,8.197695294206804e-4,3.8650968100779566e-5,-6.538921130269099e-9,8.19806513649201e-4,3.874943540462814e-5,-6.5785960033068025e-9,8.197929489727498e-4,3.8723134804595094e-5,-6.5676898771434025e-9,8.197883002079536e-4,3.854613941350416e-5,-6.4947236728071645e-9,8.198609759695765e-4,3.823403064971981e-5,-6.365297279203114e-9,8.200636944477346e-4,3.784594464219167e-5,-6.203000857389413e-9,0.000820411436661712,3.746667085519243e-5,-6.042172936215794e-9,8.208749674671344e-4,3.7176223092774686e-5,-5.915617415305801e-9,8.213932248000017e-4,3.7022992160726405e-5,-5.843759010230899e-9,8.218961027605576e-4,3.701275044446644e-5,-5.830076453078521e-9,8.223254904904929e-4,3.711435819021485e-5,-5.863118056849916e-9,8.226473843906112e-4,3.727482958449793e-5,-5.922239824745653e-9,8.228545590175748e-4,3.7435687186837764e-5,-5.983966399587255e-9,8.229627474394682e-4,3.7545885310616436e-5,-6.027176921838554e-9,8.230036090129152e-4,3.756990148797665e-5,-6.036554527428151e-9,8.230167806825249e-4,3.749138311092206e-5,-6.004372061981051e-9,8.230423185742567e-4,3.731317666393389e-5,-5.930818699795622e-9,8.231143493501816e-4,3.705449505134662e-5,-5.823063768625377e-9,8.23256553209646e-4,3.674606808012696e-5,-5.693352353058202e-9,8.234798189428454e-4,3.642429612693932e-5,-5.556571384393087e-9,8.237820413355269e-4,3.6125418828181186e-5,-5.427765212931279e-9,8.241496751844597e-4,3.588054059534543e-5,-5.320016584338888e-9,8.245603883153199e-4,3.571199342395666e-5,-5.242923452023574e-9,8.249861688108776e-4,3.563099782478505e-5,-5.201638270344065e-9,8.253965549120751e-4,3.563626588694151e-5,-5.1962726434097535e-9,8.257620082869455e-4,3.571323197160154e-5,-5.221486300041849e-9,8.260577695440884e-4,3.583385451251235e-5,-5.266230045559657e-9,8.262687299902825e-4,3.595753207818218e-5,-5.313924512584801e-9,8.263954241197148e-4,3.6034603798458864e-5,-5.343784865943491e-9,8.264598903887887e-4,3.601442540484084e-5,-5.334201311502159e-9,8.265081515702821e-4,3.585914554288692e-5,-5.268642284511385e-9,8.26604385596247e-4,3.556101693181241e-5,-5.143074426032549e-9,8.268132192939278e-4,3.515537353926115e-5,-4.971501142912185e-9,8.271738744510702e-4,3.471782861774951e-5,-4.7848532086355065e-9,8.276795586094963e-4,3.4340322196190036e-5,-4.621118053741745e-9,8.282766891716653e-4,3.4095760039524445e-5,-4.5108069909192165e-9,8.288861464980373e-4,3.401140563924369e-5,-4.465996728964361e-9,8.29433355059079e-4,3.406500941237964e-5,-4.4785874372255114e-9,8.298704729894737e-4,3.420103631857123e-5,-4.526688711410476e-9,8.301833096396713e-4,3.4353709967328716e-5,-4.583790454622501e-9,8.303862100769367e-4,3.446546478614344e-5,-4.626173157513306e-9,8.305118250621173e-4,3.449687603771798e-5,-4.6370194576684565e-9,8.306008664699762e-4,3.442941009341466e-5,-4.607762309491803e-9,8.306940322478887e-4,3.426386875947961e-5,-4.537752547464339e-9,8.308263261536525e-4,3.401682527001027e-5,-4.4330652748613145e-9,8.310232819304966e-4,3.371620106257414e-5,-4.304822699303797e-9,8.312987280593526e-4,3.339641097448233e-5,-4.167187973746248e-9,8.31653979219806e-4,3.309335744578138e-5,-4.0351952674026125e-9,8.32078417238307e-4,3.283958122742209e-5,-3.9226242940869606e-9,8.325514069439921e-4,3.26599656110982e-5,-3.8401496329485945e-9,8.330453353948687e-4,3.256846904668967e-5,-3.793977723288974e-9,8.335293651888821e-4,3.2566169333962955e-5,-3.785049055168084e-9,8.33973516225973e-4,3.264061001145597e-5,-3.808740687729704e-9,8.343528580041156e-4,3.2766396288388346e-5,-3.855005633134729e-9,8.346517248312861e-4,3.290709657118518e-5,-3.9089874063833434e-9,8.348679389439184e-4,3.301872928211123e-5,-3.95230090306051e-9,8.350167359300278e-4,3.305558632640454e-5,-3.965393684369818e-9,8.351331058149185e-4,3.297932755397413e-5,-3.9314416005053e-9,8.352699660831031e-4,3.277126367429032e-5,-3.8417220291605366e-9,8.354889117471341e-4,3.244507340953231e-5,-3.7012047953805833e-9,8.358419691208809e-4,3.205326833172769e-5,-3.531440109697599e-9,8.36348763283404e-4,3.167867290599403e-5,-3.3670502139274996e-9,8.369813197061595e-4,3.140782451156133e-5,-3.244586908337016e-9,8.376693061030729e-4,3.129669563122999e-5,-3.1881493598681102e-9,8.383263658012633e-4,3.134863920078477e-5,-3.200051972071662e-9,8.388826052155265e-4,3.151766556410064e-5,-3.2619908468242225e-9,8.393050072888866e-4,3.173205489277276e-5,-3.344664087646371e-9,8.395988757541516e-4,3.192172100776251e-5,-3.419003963066664e-9,8.397963286098811e-4,3.203621272799185e-5,-3.46362815353071e-9,8.399416326313247e-4,3.205061679819683e-5,-3.4674080518768483e-9,8.400794992423449e-4,3.1963263817541386e-5,-3.4287495907215916e-9,8.402479103687121e-4,3.179002909330446e-5,-3.3534888117140308e-9,8.404745687451004e-4,3.155830071326884e-5,-3.2525737289196144e-9,8.407754646399417e-4,3.130173895136262e-5,-3.1399368209433314e-9,8.41154541388092e-4,3.1055764720891035e-5,-3.0305415711644196e-9,8.416041280544131e-4,3.085345156272672e-5,-2.9385364426828023e-9,8.421061656017975e-4,3.072164283076384e-5,-2.8755213785209154e-9,8.426344113814458e-4,3.067736638925079e-5,-2.8490015368691745e-9,8.431577953645121e-4,3.072498523450466e-5,-2.8612024549307127e-9,8.436447971117692e-4,3.085470440573325e-5,-2.9084547718786858e-9,8.440683720702881e-4,3.1042869672780824e-5,-2.981273689818602e-9,8.444108321936859e-4,3.125426055813509e-5,-3.065198477158535e-9,8.446680629527056e-4,3.144642492558669e-5,-3.142451937358192e-9,8.448524507159502e-4,3.15759057443261e-5,-3.194437005461156e-9,8.449938340091091e-4,3.160610588444374e-5,-3.2050494314965393e-9,8.451374660071655e-4,3.151638576719877e-5,-3.1646699302547115e-9,8.453375715697237e-4,3.1311130994121866e-5,-3.0742611477808833e-9,8.456453986738488e-4,3.1025780835067146e-5,-2.94819557957702e-9,8.46092653379528e-4,3.0725045293271956e-5,-2.81368862948315e-9,8.466753220872281e-4,3.0488818598972834e-5,-2.704879810332908e-9,8.473471109643087e-4,3.038640446510119e-5,-2.6518278127619258e-9,8.480305696476147e-4,3.0449024854662588e-5,-2.668679548466348e-9,8.486441257401572e-4,3.065628903781551e-5,-2.7477040330430985e-9,8.491313375173792e-4,3.094576582096809e-5,-2.8631317709746885e-9,8.494766164139384e-4,3.123946697058364e-5,-2.9822273668107125e-9,8.497020423260754e-4,3.1471127846907625e-5,-3.0767866876898872e-9,8.498521170161459e-4,3.16017891014394e-5,-3.129775126187276e-9,8.499770409409726e-4,3.1621830699592834e-5,-3.1363362066964675e-9,8.501209480543094e-4,3.1544720456021056e-5,-3.1013685836141294e-9,8.503161532077362e-4,3.1398399640952655e-5,-3.036097487468567e-9,8.505816546173871e-4,3.1217759899263695e-5,-2.9550165687006546e-9,8.509236995527479e-4,3.103916188717301e-5,-2.8735662703891047e-9,8.513369862483362e-4,3.0896507607776705e-5,-2.8063743424389867e-9,8.518060495699486e-4,3.081805794501351e-5,-2.7657886014572145e-9,8.523069735798167e-4,3.082345930368575e-5,-2.7605358876292335e-9,8.528098318936862e-4,3.0920864735206294e-5,-2.79447672381635e-9,8.532822991542584e-4,3.110457416848017e-5,-2.8656065993726486e-9,8.536945524033567e-4,3.1354085988535145e-5,-2.965633018689591e-9,8.540249574865114e-4,3.163548969538209e-5,-3.080489694586202e-9,8.542654720972812e-4,3.190574453586719e-5,-3.192028596537508e-9,8.544254041595665e-4,3.211974836915866e-5,-3.28090202256463e-9,8.545322236510779e-4,3.2239278828225266e-5,-3.3303148632010992e-9,8.546285733291039e-4,3.224218246448245e-5,-3.330007151957699e-9,8.547652672831671e-4,3.2129878781118014e-5,-3.279649312494011e-9,8.549907364400541e-4,3.193111420486313e-5,-3.1907193571916717e-9,8.553382926807156e-4,3.1699773222277685e-5,-3.0858345714949625e-9,8.558140144434115e-4,3.150496484434305e-5,-2.9946769942906606e-9,8.563897321781071e-4,3.1413455736156216e-5,-2.9464704670555277e-9,8.570061787799461e-4,3.1468304822318046e-5,-2.960646903904852e-9,8.575886586831152e-4,3.167199701229673e-5,-3.039317862345337e-9,8.580709942206223e-4,3.198346246211776e-5,-3.1656988018487623e-9,8.584171135061124e-4,3.233248147476386e-5,-3.310099393214403e-9,8.586297960336273e-4,3.264478971416768e-5,-3.440645754903185e-9,8.587438963877701e-4,3.286515489171303e-5,-3.5332321749884526e-9,8.58810255130539e-4,3.2968897888927814e-5,-3.5765784450704622e-9,8.588794391843271e-4,3.2960802961293873e-5,-3.5719305847910328e-9,8.589911009932855e-4,3.2866533850223576e-5,-3.529577019202463e-9,8.591697919005255e-4,3.272249454060714e-5,-3.4646650245504987e-9,8.594251730433313e-4,3.256765883619841e-5,-3.393767811079765e-9,8.597541389353542e-4,3.2438210292960187e-5,-3.3325521813766835e-9,8.601432315592983e-4,3.236427582707883e-5,-3.2942803106507433e-9,8.605707893509768e-4,3.236765846754327e-5,-3.2887387933129255e-9,8.610090272757816e-4,3.245976837958149e-5,-3.3212886990489386e-9,8.614266330715411e-4,3.2639496241471747e-5,-3.3919234343927197e-9,8.617925265638105e-4,3.289145361493536e-5,-3.4944824234170423e-9,8.620810773671341e-4,3.318566240946574e-5,-3.616455097562243e-9,8.62278291344594e-4,3.3480062508905175e-5,-3.7399625948591e-9,8.623874686730959e-4,3.372681857367478e-5,-3.844371487446432e-9,8.624320722870976e-4,3.38822001208865e-5,-3.910489310686052e-9,8.624536695365803e-4,3.391801974913249e-5,-3.925509323340507e-9,8.625041693741896e-4,3.3831145103447495e-5,-3.887217720697746e-9,8.626336863724894e-4,3.364749744285424e-5,-3.805912914971897e-9,8.628771728569449e-4,3.34184061309152e-5,-3.703085242205503e-9,8.632436901356097e-4,3.3209472451514874e-5,-3.606852247536402e-9,8.637117164869609e-4,3.30843353744748e-5,-3.5450791305814132e-9,8.64232526978409e-4,3.30874054017447e-5,-3.537852982664476e-9,8.647417259564168e-4,3.32305264787094e-5,-3.591449619924816e-9,8.651764977358669e-4,3.348834402295054e-5,-3.695963620118213e-9,8.654934113410493e-4,3.380514974584113e-5,-3.827962144226022e-9,8.65680227216288e-4,3.411174050293928e-5,-3.957644664897803e-9,8.657570330287688e-4,3.4346041766830635e-5,-4.057808965225653e-9,8.657669387277931e-4,3.446932313815453e-5,-4.11101586076775e-9,8.657613435022625e-4,3.4472588411529344e-5,-4.112539581686109e-9,8.657862135868558e-4,3.4373094380466114e-5,-4.069050533975013e-9,8.658735763707832e-4,3.4205060581144676e-5,-3.99475967321788e-9,8.660388852455758e-4,3.400943296480929e-5,-3.907091687927469e-9,8.66282466493992e-4,3.3825844969993364e-5,-3.823219696797409e-9,8.665927137849105e-4,3.3687619719216236e-5,-3.7578388388344435e-9,8.669494024009601e-4,3.361913423273398e-5,-3.7219299984715987e-9,8.673264891657124e-4,3.363439881774626e-5,-3.7220625465320145e-9,8.676945418145927e-4,3.373592694579208e-5,-3.7598487309122184e-9,8.680234235964354e-4,3.391351714465576e-5,-3.831368929963179e-9,8.682859972296471e-4,3.4143297256214016e-5,-3.926691202132316e-9,8.684632880644983e-4,3.4388163647136244e-5,-4.029972466578756e-9,8.685506814790997e-4,3.460127638371885e-5,-4.120889818604067e-9,8.685633840062911e-4,3.4734023180121915e-5,-4.178058611548191e-9,8.685380720783138e-4,3.4748252417980764e-5,-4.184372534042753e-9,8.685276349437916e-4,3.462966914812959e-5,-4.132901756292709e-9,8.685883291320915e-4,3.439669502663824e-5,-4.030854924441111e-9,8.687628382465881e-4,3.409933619952682e-5,-3.8992420211352555e-9,8.690658895057307e-4,3.3806647123293056e-5,-3.767634596223998e-9,8.694785799556857e-4,3.358696397155016e-5,-3.66578227162126e-9,8.69953568550893e-4,3.348840676249508e-5,-3.6152232829612797e-9,8.704286241585501e-4,3.352635120659295e-5,-3.623705146793659e-9,8.708434233092473e-4,3.36810197345908e-5,-3.6838087593563796e-9,8.711544860856722e-4,3.390464015558857e-5,-3.775680273187482e-9,8.713445725476498e-4,3.4135193673201416e-5,-3.872743220397276e-9,8.714246913321904e-4,3.4312587501143965e-5,-3.948669842514471e-9,8.714288385999942e-4,3.4392832306213484e-5,-3.983673438771948e-9,8.714035709437477e-4,3.4356588349835174e-5,-3.968454991877816e-9,8.713959401397892e-4,3.4210390500048455e-5,-3.904979500162979e-9,8.714434314935408e-4,3.398142071965159e-5,-3.80439632081465e-9,8.715682144280527e-4,3.370866502664886e-5,-3.6833035835006632e-9,8.717760142029626e-4,3.343373250814609e-5,-3.5597712152619653e-9,8.720583485322628e-4,3.3193644320049306e-5,-3.450143545804329e-9,8.723963305223968e-4,3.301640385510928e-5,-3.367013852901416e-9,8.727645877754009e-4,3.2918942751948914e-5,-3.318240190622122e-9,8.731346053164378e-4,3.290646426016532e-5,-3.3065975355143806e-9,8.734775263631105e-4,3.297227361968222e-5,-3.329661479803068e-9,8.737669246598247e-4,3.3097659941762863e-5,-3.3797021541565744e-9,8.739822501713752e-4,3.325204966262417e-5,-3.443668277316694e-9,8.741134429392175e-4,3.339441456133996e-5,-3.5037068763647772e-9,8.741663973729802e-4,3.347758868121113e-5,-3.538992779628764e-9,8.741674829281171e-4,3.3457101736264556e-5,-3.529614543781381e-9,8.741636709228396e-4,3.33044797175946e-5,-3.4624919926690294e-9,8.742144615830622e-4,3.302135267114131e-5,-3.337668517116169e-9,8.743747932608298e-4,3.264687423555464e-5,-3.1716545924770886e-9,8.746743840366114e-4,3.2251051243278426e-5,-2.9946081022665746e-9,8.751039489192597e-4,3.1913364921373566e-5,-2.841130150424048e-9,8.75616678903275e-4,3.169573821909346e-5,-2.738595983860198e-9,8.761445007935473e-4,3.162302292091491e-5,-2.698649906049282e-9,8.766203447195945e-4,3.167892308982781e-5,-2.715236885002451e-9,8.769963987697803e-4,3.18159383463042e-5,-2.7686104110067445e-9,8.772531062745815e-4,3.197221978649029e-5,-2.8323654947714774e-9,8.773990475854998e-4,3.2088299096119665e-5,-2.880564943726866e-9,8.774645762292172e-4,3.211954673233677e-5,-2.893205151464858e-9,8.774924155916585e-4,3.204298846969703e-5,-2.8593905607603026e-9,8.775277330636137e-4,3.185874387139908e-5,-2.778242446816188e-9,8.776094585559394e-4,3.158700840416259e-5,-2.657838435817586e-9,8.777641128132043e-4,3.126183960920271e-5,-2.5126548703569532e-9,8.78002877757191e-4,3.092341017264447e-5,-2.360210638245288e-9,8.78321864386743e-4,3.061051760107952e-5,-2.217716237311034e-9,8.787048132667152e-4,3.0354696413936292e-5,-2.0993733631963004e-9,8.791271129207127e-4,3.0176554948077197e-5,-2.0146576508170057e-9,8.795600526842855e-4,3.0084265265720063e-5,-1.9675904842138486e-9,8.799746005764623e-4,3.0073592700195904e-5,-1.9567272155798592e-9,8.803445685727407e-4,3.0128701933306585e-5,-1.9754931411414064e-9,8.806494724082241e-4,3.0223295863434567e-5,-2.012635250546257e-9,8.808775707256542e-4,3.0322170015652122e-5,-2.052817626545346e-9,8.810294629751855e-4,3.0383874541022066e-5,-2.077700737209661e-9,8.811219817814094e-4,3.0365784932921254e-5,-2.068140259899549e-9,8.811907881742122e-4,3.0232911390513986e-5,-2.0081342888122047e-9,8.812885190182023e-4,2.997035224275941e-5,-1.8904615726488688e-9,8.814748050867232e-4,2.9595882363843328e-5,-1.7223897108962145e-9,8.817972325406356e-4,2.9164896341324755e-5,-1.5279575596742727e-9,8.822694105023639e-4,2.8759323793384683e-5,-1.343146342028477e-9,8.828590048460752e-4,2.846005103322195e-5,-1.203784176843767e-9,8.834961316970444e-4,2.8315408404152892e-5,-1.1317019817736651e-9,8.840994293836644e-4,2.83238474756633e-5,-1.1270381711241277e-9,8.846048503517724e-4,2.8439563876848128e-5,-1.1705107836514342e-9,8.849825261434277e-4,2.859423427913567e-5,-1.2327153363012424e-9,8.852377405673897e-4,2.872082247503333e-5,-1.2843809606697235e-9,8.854014350719654e-4,2.876976020388615e-5,-1.303411303612948e-9,8.855175691600622e-4,2.8715569658327886e-5,-1.277894686911527e-9,8.856319414654461e-4,2.8556383656666185e-5,-1.2061264571813115e-9,8.857841196699158e-4,2.8309570284204513e-5,-1.0949624616496077e-9,8.86002414496257e-4,2.800577749822175e-5,-9.574157297751806e-10,8.863013254260068e-4,2.7682541703841347e-5,-8.099261480403505e-10,8.866810883604368e-4,2.737801278175877e-5,-6.695408320630273e-10,8.871291034948231e-4,2.712535762590261e-5,-5.513048593649785e-10,8.876228817584209e-4,2.6948399119048687e-5,-4.661876242949888e-10,8.881339924077757e-4,2.6858865286951922e-5,-4.197713685400893e-10,8.886323956855838e-4,2.6855412138336997e-5,-4.1179225649502044e-10,8.890905424093482e-4,2.6924258581403914e-5,-4.3643441475982406e-10,8.89486876270744e-4,2.704096977561104e-5,-4.831197421077393e-10,8.898087302066524e-4,2.7172978043164845e-5,-5.375765842824722e-10,8.900547902185537e-4,2.7282747178927522e-5,-5.831513974124379e-10,8.902372653753913e-4,2.733186854749421e-5,-6.02542926548089e-10,8.903834851144673e-4,2.7286782595027556e-5,-5.803341451115104e-10,8.905356820182493e-4,2.712678713758405e-5,-5.066546828876249e-10,8.907466490935431e-4,2.6853822167289743e-5,-3.817222697006188e-10,8.910687379135351e-4,2.650095008026581e-5,-2.1981389275727818e-10,8.915358613141435e-4,2.613316302797963e-5,-4.974968918210426e-11,8.921441557986117e-4,2.583341569558239e-5,9.130127597938247e-11,8.928435576312597e-4,2.5673648601187617e-5,1.7077634639135572e-10,8.935508750856743e-4,2.5683679634147847e-5,1.7468326592194504e-10,8.941811428365587e-4,2.5837610180360195e-5,1.1381510218411522e-10,8.946793739990621e-4,2.6067113585673513e-5,1.8006901262402275e-11,8.950349091826171e-4,2.6291644820413183e-5,-7.717084794839584e-11,8.952750213494531e-4,2.6446389435700407e-5,-1.427663814093566e-10,8.954475970296075e-4,2.64960814946439e-5,-1.625988001066087e-10,8.956041887442954e-4,2.643519673510351e-5,-1.334689640026147e-10,8.957887712051753e-4,2.6280905283114967e-5,-6.224871917615731e-11,8.960323226691599e-4,2.6064317323041538e-5,3.777765165941726e-11,8.963513575114935e-4,2.5822815459411318e-5,1.5017549800954496e-10,8.96748509792149e-4,2.5594124919428984e-5,2.5799083696445723e-10,8.972140957359525e-4,2.5411712108030967e-5,3.459131555119787e-10,8.97728398380985e-4,2.5301088813513795e-5,4.0208667445015245e-10,8.982646818886401e-4,2.5276973108559064e-5,4.19511702332487e-10,8.987928885022273e-4,2.5341491278246515e-5,3.969097854818967e-10,8.992838386101128e-4,2.548373838032777e-5,3.389148700251626e-10,8.997135067687896e-4,2.5680959581705512e-5,2.5551799630259e-10,9.000668011166033e-4,2.590128913974731e-5,1.6084571383571664e-10,9.003404075887244e-4,2.610773225553987e-5,7.143433854803536e-11,9.005444531271067e-4,2.626306035931546e-5,4.124552392039377e-12,9.00702826310028e-4,2.6335350498633444e-5,-2.636373164642357e-11,9.008518990331428e-4,2.6304027478397698e-5,-1.0173572691243057e-11,9.010369750715351e-4,2.616622985452215e-5,5.4685092455799334e-11,9.013053376731691e-4,2.5942528849006335e-5,1.5954350428825642e-10,9.016950534266347e-4,2.5679451672258137e-5,2.8372503804596007e-10,9.022205066966907e-4,2.544470577148632e-5,3.9657633063202955e-10,9.028595081446744e-4,2.5311299328910574e-5,4.6464848630157026e-10,9.035509621163673e-4,2.5331826054565013e-5,4.634519661365919e-10,9.042106403831823e-4,2.5513725417149697e-5,3.8884970955208253e-10,9.047617243836385e-4,2.5811755065389144e-5,2.60664002639359e-10,9.051639505218222e-4,2.614554976562279e-5,1.1486292999309726e-10,9.054243849394402e-4,2.6432431256007105e-5,-1.1230224109221291e-11,9.055864786501333e-4,2.6615750824420068e-5,-9.174245642919217e-11,9.057083348203511e-4,2.6675961252054152e-5,-1.1728835587695205e-10,9.05843511575355e-4,2.6625694545636095e-5,-9.286576972832296e-11,9.06030514980889e-4,2.649764658641052e-5,-3.258481232105302e-11,9.06290090659766e-4,2.6332711316700743e-5,4.5492394804177083e-11,9.066269079166894e-4,2.617147979221003e-5,1.230902666428942e-10,9.07032727485054e-4,2.6049140781842117e-5,1.8405636274430814e-10,9.074895537591257e-4,2.5992565692749985e-5,2.1580884693763228e-10,9.079725233622418e-4,2.601842289978903e-5,2.1034058494702972e-10,9.08452843161885e-4,2.6131794189518346e-5,1.649501949413581e-10,9.089011187176733e-4,2.632531969086917e-5,8.266582317282753e-11,9.092912509323934e-4,2.657930002330282e-5,-2.7811191372744197e-11,9.096046947811349e-4,2.686337600497953e-5,-1.5287896453951608e-10,9.098343835696975e-4,2.7140160235303376e-5,-2.756580777618742e-10,9.099874027396871e-4,2.737067976970732e-5,-3.7839683569915226e-10,9.100856080701482e-4,2.7521019033657425e-5,-4.4541806075215186e-10,9.101636727790192e-4,2.756915427471307e-5,-4.662024595936307e-10,9.102644580498961e-4,2.751076592587584e-5,-4.3810314345020306E-10,9.104319511252228e-4,2.736291054800073e-5,-3.681879685719245e-10,9.107022221916946e-4,2.7164432891512126e-5,-2.736553609265788e-10,9.110933354507029e-4,2.6971680885033756e-5,-1.800824904443576e-10,9.11596330532063e-4,2.6848117080263942e-5,-1.167738231171905e-10,9.121710507471927e-4,2.6847793958635906e-5,-1.0913815308381964e-10,9.12751534970597e-4,2.6996070209376236e-5,-1.6964949395235283e-10,9.132634636288651e-4,2.72756008370633e-5,-2.9115810444199527e-10,9.136492992958313e-4,2.762733566158342e-5,-4.471383736182009e-10,9.138892892803114e-4,2.797002314543524e-5,-6.005507786510418e-10,9.140064810409892e-4,2.8229735821653137e-5,-7.173953360843062e-10,9.140537060586121e-4,2.8363778381520954e-5,-7.777099880424133e-10,9.14091744347561e-4,2.8368259804342512e-5,-7.790964097262822e-10,9.141707165736832e-4,2.8270290432506036e-5,-7.332676996715194e-10,9.143209375298112e-4,2.811333903517838e-5,-6.595294780294835e-10,9.145523676781168e-4,2.7943782175206335e-5,-5.787922436801097e-10,9.148586524660526e-4,2.780218073489562e-5,-5.09645207598181e-10,9.15222213264884e-4,2.771907523928594e-5,-4.663750532641056e-10,9.156186000215372e-4,2.771356286516508e-5,-4.581833019385022e-10,9.160198239972885e-4,2.7793018214471577e-5,-4.889247071998724e-10,9.163971548837643e-4,2.795307226790254e-5,-5.570122799444724e-10,9.167240149473723e-4,2.8177711329907586e-5,-6.554310086134877e-10,9.169794235753807e-4,2.8439962674449603e-5,-7.720472188029496e-10,9.171519825482253e-4,2.870402885777489e-5,-8.905750008556582e-10,9.172436935254598e-4,2.8929649817970348e-5,-9.925419838939779e-10,9.172722940063046e-4,2.9078832692983632e-5,-1.0603291660817625e-9,9.172706400546866e-4,2.912409780548574e-5,-1.080924584550345e-9,9.17282157849279e-4,2.9056323329246427e-5,-1.0495469582952546e-9,9.17352548715972e-4,2.8889652042343435e-5,-9.719977617501207e-10,9.175193386587934e-4,2.8661331040972106e-5,-8.647637143988589e-10,9.178017998224793e-4,2.842566755332037e-5,-7.524533284368034e-10,9.181939299909826e-4,2.824278153652306e-5,-6.627971222401617e-10,9.186627846165465e-4,2.8164133229208014e-5,-6.200278774014088e-10,9.19153691738718e-4,2.8217986087638425e-5,-6.380459293784765e-10,9.196025451004935e-4,2.8398984740483134E-05,-7.153326477966576e-10,9.199531003263491e-4,2.8666337663424036e-5,-8.338087002295918e-10,9.201741950295597e-4,2.8953522843619235e-5,-9.631226655409933e-10,9.202698561839225e-4,2.918802920852016e-5,-1.0697405631849333e-9,9.202770539297086e-4,2.9313951870328424e-5,-1.1274657767908662e-9,9.20251788073042e-4,2.9307694253609973e-5,-1.1248038587933661e-9,9.202503631241845e-4,2.918064509705824e-5,-1.0663142394564279e-9,9.203142811661418e-4,2.897003743896867e-5,-9.68530131895985e-10,9.204634699590332e-4,2.8724513202568727e-5,-8.534492296718607e-10,9.206973132387841e-4,2.849110787091789e-5,-7.426352211365498e-10,9.209999773637789e-4,2.8307067355278376e-5,-6.534492842105844e-10,9.213465790289916e-4,2.8196472237938423e-5,-5.974035621587512e-10,9.21708293335506e-4,2.8169942280115928e-5,-5.798940312517992e-10,9.220560080914304e-4,2.8225631349565033e-5,-6.005462214024394e-10,9.223629986190541e-4,2.8350410654034294e-5,-6.536955210792199e-10,9.226073866112044e-4,2.8520935298446312e-5,-7.28851240962084e-10,9.227750120124014e-4,2.8705005688838147e-5,-8.113094184352923e-10,9.228628541636617e-4,2.886416079327547e-5,-8.833278120249603e-10,9.228823589672353e-4,2.895853283479903e-5,-9.263428574000358e-10,9.228611534120579e-4,2.8954410829763517e-5,-9.244525203760215e-10,9.22841094274703e-4,2.8833597004887607e-5,-8.687589669821464e-10,9.228711087655056e-4,2.860178543460586e-5,-7.612984631604381e-10,9.229952903879357e-4,2.8291928119182712e-5,-6.167002132570091e-10,9.232395355675018e-4,2.7959342967609063e-5,-4.600776629160696e-10,9.236018170315074e-4,2.766851040299726e-5,-3.211006337196332e-10,9.240504121843283e-4,2.7475443382623978e-5,-2.2596816610665073e-10,9.24531262399518e-4,2.741170749626898e-5,-1.8999789985040983e-10,9.249820629694834e-4,2.747542499218661e-5,-2.1326498107148244e-10,9.25348579660942e-4,2.7631811895541113e-5,-2.805432543382063e-10,9.255984900902482e-4,2.7822723222327646e-5,-3.6544697746303546e-10,9.257290496695094e-4,2.798233184373522e-5,-4.3755816439126784e-10,9.25766534088789e-4,2.80545120609564e-5,-4.705154590635174e-10,9.257576987930197e-4,2.800685278340508e-5,-4.4865598588417815e-10,9.257561138535627e-4,2.7837106293070436e-5,-3.701910247767966e-10,9.258080615404461e-4,2.757056376533481e-5,-2.4616627976356377e-10,9.259425348434525e-4,2.7250326470559132e-5,-9.609656809923689e-11,9.261676807511085e-4,2.6924824434891593e-5,5.773311606893498e-11,9.264731188036599e-4,2.663697142690499e-5,1.9528968966108854e-10,9.268356351407438e-4,2.6417432659609167e-5,3.019901995562894e-10,9.272255509647921e-4,2.6282152592361178e-5,3.6997091936557287e-10,9.276120574189009e-4,2.6232846291373425e-5,3.9797540595297546e-10,9.279670116931762e-4,2.6258881085469936e-5,3.9055441141759986e-10,9.282675227858236e-4,2.633942937784366e-5,3.570959163618194e-10,9.284980234511821e-4,2.644547284239765e-5,3.109050504872678e-10,9.286524796636579e-4,2.654193492234242e-5,2.6822927772623276e-10,9.287369625751979e-4,2.6590780100069592e-5,2.468431766251289e-10,9.287720369209947e-4,2.6556135305642376e-5,2.636822102111064e-10,9.287934339306461e-4,2.6412028824363202e-5,3.312264037819188e-10,9.288486997992517e-4,2.6151880961107663e-5,4.530300718778846e-10,9.289878720362526e-4,2.5796515725207018e-5,6.199146734068698e-10,9.292487589067231e-4,2.5395465656098757e-5,8.092647167352129e-10,9.29641666352082e-4,2.5017209649756432e-5,9.894516360464816e-10,9.301413876496481e-4,2.472917795980915e-5,1.1290141747255939e-9,9.306922559167429e-4,2.4575229989538544e-5,1.2070780979559616e-9,9.312251819721861e-4,2.4561109000296633e-5,1.2202059312944135e-9,9.316789667520669e-4,2.465414560968802e-5,1.1827604254879246e-9,9.320169043861123e-4,2.479571175444768e-5,1.1213819953507269e-9,9.322336847376593e-4,2.4919677271373376e-5,1.0666004249723868e-9,9.323526991819391e-4,2.496981318218703e-5,1.044792681412822e-9,9.324168167771345e-4,2.4911728305382368e-5,1.072537792680831e-9,9.324763341556606e-4,2.473779692662344e-5,1.1541348440936524e-9,9.32577287240139e-4,2.446550131433796e-5,1.2821529509168165e-9,9.327524775390439e-4,2.4130741138395573e-5,1.440358563370683e-9,9.330166395630526e-4,2.3778318046824064e-5,1.608044416470438e-9,9.333661039477023e-4,2.345210977652227e-5,1.7646106799430005e-9,9.337821762564567e-4,2.3187164366326925e-5,1.8933448565731633e-9,9.342366534787011e-4,2.3004991867956138e-5,1.983756984261391e-9,9.346977645863617e-4,2.2912152275451638e-5,2.0323646948176415e-9,9.351352665974508e-4,2.2901360219547865e-5,2.0422501912195693e-9,9.355241516458479e-4,2.2953966611580642e-5,2.021915505548688e-9,9.358471024062418e-4,2.3042848220487e-5,1.983917263664366e-9,9.360962029673838e-4,2.313526295966051e-5,1.9435240421953627e-9,9.362744148421519e-4,2.319579877368126e-5,1.9173555450183216e-9,9.363970340869479e-4,2.3190008396632788e-5,1.921714213936969e-9,9.364926985739199e-4,2.3089580081948874e-5,1.970175219873316e-9,9.366025595028989e-4,2.287954350737153e-5,2.070174683549589e-9,9.367754583789063e-4,2.256662486320555e-5,2.219009962619075e-9,9.370572543760401e-4,2.2185503816041416e-5,2.40080151825208e-9,9.374749898088448e-4,2.179746684581724e-5,2.5870254829646286e-9,9.380215496738124e-4,2.1476617739059208e-5,2.7428988022427817e-9,9.386504920238448e-4,2.1285143976963856e-5,2.8389345262250392e-9,9.392879545260637e-4,2.124847926412409e-5,2.8626284858923288e-9,9.398581363504856e-4,2.1344635824425707e-5,2.8236063659948714e-9,9.403092110193681e-4,2.1513973951784947e-5,2.749245885993131e-9,9.406269138130842e-4,2.1682634723939766e-5,2.67386501863676e-9,9.408323763286779e-4,2.178648157968665e-5,2.6275885831474924e-9,9.409696504997068e-4,2.1786146578814432e-5,2.6292808737827737e-9,9.410906514838015e-4,2.1671298131321062e-5,2.6844268786052037e-9,9.41242649635597e-4,2.145702236312698e-5,2.786633456564728e-9,9.414601509848395e-4,2.1176178630965497e-5,2.9210047073092557e-9,9.417610200086401e-4,2.0870608445111807e-5,3.0681179766648086e-9,9.421460370053103e-4,2.0582809873944577e-5,3.207899651127782e-9,9.426010936837508e-4,2.0348968697412414e-5,3.3229824926066307e-9,9.431012540259686e-4,2.0193985304551373e-5,3.401195641488044e-9,9.436158120570794e-4,2.012884842892798e-5,3.436951038320817e-9,9.441134784478598e-4,2.015031500623975e-5,3.4314859276191417e-9,9.44566950904901e-4,2.0242534645964484e-5,3.3921135298370826e-9,9.449563631171996e-4,2.0379982085524475e-5,3.330805785534591e-9,9.45271517348029e-4,2.0530961708450033e-5,3.2625023737391606e-9,9.455131621575188e-4,2.0661233197895548e-5,3.203395247216593e-9,9.456936234191719e-4,2.0737740900431553e-5,3.1692023079153e-9,9.458369007988554e-4,2.073272466669384e-5,3.1732674706314038e-9,9.459779040524844e-4,2.0628653770206123e-5,3.224233945190357e-9,9.461597634391267e-4,2.0424167988906754e-5,3.3231751090821356e-9,9.46427574458297e-4,2.014003684687474e-5,3.4606600272122213e-9,9.468173676227388e-4,1.98221812789624e-5,3.615192303367057e-9,9.473413942934375e-4,1.9537012097558103e-5,3.755318583394564e-9,9.479753457182548e-4,1.9355058402098106e-5,3.847349600926752e-9,9.486571399076209e-4,1.9325058394134616e-5,3.867688552958027e-9,9.493040520760504e-4,1.9450539767815956e-5,3.814066075128484e-9,9.498430651538646e-4,1.9684623094334385e-5,3.7081770948540923e-9,9.502378728614017e-4,1.994861501821484e-5,3.5870008241428506e-9,9.504975307118342e-4,2.01632840220824e-5,3.4880374073031084e-9,9.506654032765242e-4,2.0274709481559317e-5,3.437068799563959e-9,9.507989420812344e-4,2.0264365859063468e-5,3.4433449550727618e-9,9.509516863480496e-4,2.0145143002205663e-5,3.5013586813003237e-9,9.511626032896819e-4,1.9950604861647016e-5,3.595755007819909e-9,9.514523625841899e-4,1.972359867900281e-5,3.7065483148110366e-9,9.518240846294337e-4,1.9507126203245064e-5,3.813351896094841e-9,9.522662841079077e-4,1.933798514493866e-5,3.898421280054506e-9,9.527567177104721e-4,1.9242649321887765e-5,3.94873970416592e-9,9.532666534200279e-4,1.9234898009828817e-5,3.9573083496472175e-9,9.537653046836214e-4,1.931500888982162e-5,3.923656171525834e-9,9.542241491314553e-4,1.9470419469034043e-5,3.853573929853045e-9,9.546208269205008e-4,1.967778168597357e-5,3.758113485784791e-9,9.549422337944906e-4,1.990624356532854e-5,3.6519733720235854e-9,9.551864658672643e-4,2.012153016907811e-5,3.5515235649189295e-9,9.553635348866212e-4,2.029033148993112e-5,3.4727284456947125e-9,9.554949463176509e-4,2.0384734278047446e-5,3.429079651875691e-9,9.55612166139684e-4,2.03866030610309e-5,3.4295402733541126e-9,9.557537872596488e-4,2.029183687422643e-5,3.4764900665650733e-9,9.559608378031081e-4,2.0114246891201803e-5,3.563775485379721e-9,9.562694312086343e-4,1.988802000189864e-5,3.6753836672060575e-9,9.567005353306505e-4,1.9666425812314765e-5,3.785918859393363e-9,9.572485741343938e-4,1.951354653734905e-5,3.864486310112931e-9,9.57873847869679e-4,1.9487015195238054e-5,3.8829949935352816e-9,9.58506375185627e-4,1.961495423927636e-5,3.827353654574862e-9,9.590658554599388e-4,1.9878214338844435e-5,3.706183686441474e-9,9.59491778185771e-4,2.021167822462048e-5,3.5503480856677113e-9,9.597671996149698e-4,2.0528378965229346e-5,3.4014299519401243e-9,9.599217284447296e-4,2.0753552855409916e-5,3.295380207449077e-9,9.600140258223889e-4,2.084893939258985e-5,3.2508500223577976e-9,9.601071466008167e-4,2.081721898662703e-5,3.2670417811981256e-9,9.602500853369318e-4,2.0691028420511654e-5,3.3288768573415605e-9,9.604701387776805e-4,2.051709319339869e-5,3.4144264007709955e-9,9.60773545484276e-4,2.034297332174702e-5,3.501100421052396e-9,9.611500679665309e-4,2.0208786324005668e-5,3.569552864573399e-9,9.615783591656324e-4,2.014318881895291e-5,3.6056735200335207e-9,9.620307130834803e-4,2.0161937110386437e-5,3.6014269400379457e-9,9.62477113531018e-4,2.0267731706648574e-5,3.5550823882264824e-9,9.628889049217328e-4,2.0450864920827385e-5,3.4710012484743916e-9,9.632422415170349e-4,2.069066577730867e-5,3.3589647822421636e-9,9.635212754316284e-4,2.0957906935666852e-5,3.2329849290971195e-9,9.637208099389389e-4,2.1218360815741975e-5,3.1095519476630494e-9,9.638478893925641e-4,2.143740445538196e-5,3.0054061149790872e-9,9.639218361763492e-4,2.158517204251695e-5,2.9350831633136274e-9,9.639725275225862e-4,2.164161332623286e-5,2.9085171189180765e-9,9.64036920303166e-4,2.1600821946777073e-5,2.928960887667208e-9,9.641539462469475e-4,2.1473982466179215e-5,2.991503500896854e-9,9.643579665181983e-4,2.129029021121154e-5,3.0824929931979146e-9,9.646710825382556e-4,2.1095019009386883e-5,3.180304929063653e-9,9.650951414487477e-4,2.0943493593642626e-5,3.2581268817857795e-9,9.656055505064805e-4,2.08898021785074e-5,3.2893920797482204e-9,9.661506527532753e-4,2.0970707862049013e-5,3.2556740154475738e-9,9.666609700686485e-4,2.1188936127107843e-5,3.154989219151684e-9,9.670695157136533e-4,2.1504456001118907e-5,3.0062342252277902e-9,9.673367523603838e-4,2.1842686062608042e-5,2.8453160317467475e-9,9.674669505838162e-4,2.2120216315934066e-5,2.7126670331229932e-9,9.675052672091475e-4,2.227588153984791e-5,2.6381300324599617e-9,9.67517310975436e-4,2.2290098639572074e-5,2.631571812351488e-9,9.675641549386202e-4,2.2184188610723864e-5,2.683192639935835e-9,9.676856175598294e-4,2.20050732406217e-5,2.770831293998539e-9,9.678958345343047e-4,2.1806797104405777e-5,2.8687326779884426e-9,9.681874796128061e-4,2.1636899335670483e-5,2.953998363007588e-9,9.685391645791842e-4,2.152957275673156e-5,3.00987037631748e-9,9.689223645110006e-4,2.150393434528262e-5,3.0266647100820593e-9,9.693065461435913e-4,2.1564905127593073e-5,3.0015027830697376e-9,9.696627464705727e-4,2.170489096403e-5,2.9376390040777005e-9,9.699663713453124e-4,2.190558400417185e-5,2.843664610904784e-9,9.701997585934131e-4,2.213998368625858e-5,2.732536103734538e-9,9.703546573483743e-4,2.2375052452482884e-5,2.6202568912921775e-9,9.704343769114892e-4,2.2575473791547756e-5,2.524023751178972e-9,9.70454924970594e-4,2.2708679506424222e-5,2.4597828841057676e-9,9.704442684490575e-4,2.2750680548228815e-5,2.4394191096140195e-9,9.70439123002729e-4,2.269163919856002e-5,2.4680675742140396e-9,9.704792630519241e-4,2.2539791907013454e-5,2.542185695856593e-9,9.706000419416595e-4,2.2322356320565065e-5,2.6490241837254375e-9,9.708244225247657e-4,2.208254490993235e-5,2.7679330778128663e-9,9.711561348596273e-4,2.1872563135784633e-5,2.8736116004682885e-9,9.715756674472968e-4,2.1743144202396543e-5,2.9411105609226534e-9,9.720408542324096e-4,2.1730926538918943e-5,2.952015717458691e-9,9.724936339510598e-4,2.1846219921065344e-5,2.9005828036571425e-9,9.728734724452532e-4,2.206526684943893e-5,2.797753482524233e-9,9.73135268736305e-4,2.2331915022099625e-5,2.670534930423955e-9,9.732656869873846e-4,2.2571721047228047e-5,2.5551777813643346e-9,9.732896097496811e-4,2.2715649390846857e-5,2.4855509251822116e-9,9.732616414073596e-4,2.272350320648063e-5,2.481624710067114e-9,9.732459633450723e-4,2.2595527734851322e-5,2.5437609524692543e-9,9.732948670608518e-4,2.2367393624596813e-5,2.6551037957679194e-9,9.73435775314028e-4,2.2093662920085047e-5,2.7895237218060307e-9,9.736697513088091e-4,2.18295826774539e-5,2.9203430820786453e-9,9.739779823635234e-4,2.1618463822268142e-5,3.0263986928152343e-9,9.743307630656896e-4,2.14864286442583e-5,3.094632000552376e-9,9.746951934172733e-4,2.1442559653592196e-5,3.120143478228777e-9,9.75040337470858e-4,2.1481561948537084e-5,3.105047155900916e-9,9.753402753088035e-4,2.1586872020260996e-5,3.0570669881734935e-9,9.755760407850127e-4,2.1733399542332765e-5,2.9882432258541283e-9,9.757372606998641e-4,2.1890007987213578e-5,2.913710103700545e-9,9.758238522467932e-4,2.2022308074060718e-5,2.8502981225779335e-9,9.758475695193567e-4,2.2096463822383953e-5,2.814649675643213e-9,9.75832592759985e-4,2.208441265972937e-5,2.8206647589847394e-9,9.758139779570534e-4,2.1970120824932505e-5,2.8764536267483205e-9,9.758329513980938e-4,2.1755459239150598e-5,2.9814657729990575e-9,9.759289405456378e-4,2.146343405290607e-5,3.1248755506446147e-9,9.761297562449015e-4,2.1136469459250627e-5,3.2863308207215907e-9,9.764427844228285e-4,2.0828722875066234e-5,3.4395760619971846e-9,9.768504235625822e-4,2.05936578116549e-5,3.558401665094199e-9,9.773119310828517e-4,2.047011212383905e-5,3.623414500991834e-9,9.777718670258082e-4,2.0470907088346007e-5,3.627703453703138e-9,9.781733258317801e-4,2.057752945621449e-5,3.5796494003707138e-9,9.784727031122457e-4,2.0742968740602736e-5,3.501766797457081e-9,9.786520083386822e-4,2.090280873294008e-5,3.4254174178099575e-9,9.787247391817811e-4,2.099234249163606e-5,3.3824366972435045e-9,9.787325073239532e-4,2.0964978181006943e-5,3.3960258792809006e-9,9.787325574450096e-4,2.080554329966027e-5,3.474116418782361e-9,9.78780386798012e-4,2.053316629811452e-5,3.607853339306525e-9,9.78914283306498e-4,2.0192836373745813e-5,3.7756288344559166e-9,9.79147450149718e-4,1.9840040928541138e-5,3.9505044744465266e-9,9.794691393037586e-4,1.9525344833017023e-5,4.107694790089413e-9,9.798520178516646e-4,1.928413468832371e-5,4.229601723499455e-9,9.802613780058582e-4,1.9132999458968806e-5,4.30768523320254e-9,9.806628425931363e-4,1.9071152761889917e-5,4.341903576740723e-9,9.810273134182267e-4,1.9084239326578834e-5,4.338962357581536e-9,9.81333537072951e-4,1.9148443642578993e-5,4.310353550740631e-9,9.81569296115634e-4,1.9233976343823555e-5,4.2706388260183405e-9,9.817321483998952e-4,1.9307966381521585e-5,4.235993167701627e-9,9.81830219636952e-4,1.933733918927407e-5,4.222757802688705e-9,9.818829501630556e-4,1.9292467400002797e-5,4.245632427234919e-9,9.819209964844942e-4,1.9152168044642423e-5,4.315222825428222e-9,9.8198392831691e-4,1.890983975966044e-5,4.435029642934434e-9,9.821143377150008e-4,1.857919889488635e-5,4.59861659028588e-9,9.823480141006478e-4,1.819663416702158e-5,4.788408783691395e-9,9.827021678395676e-4,1.781681352429813e-5,4.977767747591471e-9,9.8316630954625e-4,1.750019208422675e-5,5.1370239028109335e-9,9.837010460599907e-4,1.729533464359589e-5,5.242087342349132e-9,9.842471758127079e-4,1.722284340206006e-5,5.282365711457081e-9,9.847423799112572e-4,1.7267922501442923e-5,5.2645551112541595e-9,9.851390392167326e-4,1.7384650541422545e-5,5.210737350473865e-9,9.85416712413494e-4,1.7509721680699187e-5,5.151788515618179e-9,9.855858656559924e-4,1.7580163367743918e-5,5.118732221992248e-9,9.856830005405348e-4,1.754937325800318e-5,5.134813103943706e-9,9.857596419803308e-4,1.7397498039928058e-5,5.210281577132254e-9,9.858686370143312e-4,1.7134242430752782e-5,5.340872784086539e-9,9.860514093620037e-4,1.6794137806137563e-5,5.509998145968244e-9,9.863293550422345e-4,1.6426136917274978e-5,5.693759305662125e-9,9.867012674118518e-4,1.6080882897378395e-5,5.867166202605813e-9,9.871466831850105e-4,1.5799461394281728e-5,6.009706321470195e-9,9.876331363464859e-4,1.560644168178504e-5,6.108876220456722e-9,9.881244546795737e-4,1.5508013115131364e-5,6.16123561320287e-9,9.885877203164924e-4,1.5494168132305846e-5,6.1714423956312695e-9,9.889977731607897e-4,1.554301218967708e-5,6.150173958810571e-9,9.89339357154404e-4,1.5625438489487203e-5,6.11180328305642e-9,9.896077069428486e-4,1.5709163928471263e-5,6.072354236231378e-9,9.898084641090051e-4,1.5761986455145772e-5,6.047846128949401e-9,9.89957481892549e-4,1.575472773264608e-5,6.052821432389052e-9,9.900805416390554e-4,1.5664564164811243e-5,6.098708901861965e-9,9.902123484409752e-4,1.5479331179479615e-5,6.191709401312268e-9,9.903935258545628e-4,1.5202748222706768e-5,6.33020714370356e-9,9.906641160678208e-4,1.4859172652645127e-5,6.502381741232603e-9,9.910530106883304e-4,1.4494749524882107e-5,6.685572808518867e-9,9.915653761885476e-4,1.4170939529055735e-5,6.8494023081549725e-9,9.92173804543939e-4,1.3948485846748767e-5,6.963646567409606e-9,9.92820439606734e-4,1.3865800846189006e-5,7.008937764536123e-9,9.934330686488335e-4,1.3922023616282452e-5,6.98524850756154e-9,9.939493480964887e-4,1.4075052891534514e-5,6.91302227434678e-9,9.943372374337234e-4,1.4256527274009431e-5,6.825888020437902e-9,9.946022722861765e-4,1.4395571285888233e-5,6.75895614654633e-9,9.947808856143072e-4,1.4439740434982362e-5,6.738430832136037e-9,9.949257957257986e-4,1.4366093115323758e-5,6.776065172871318e-9,9.950905167510095e-4,1.418186073054903e-5,6.868729017701459e-9,9.953173989064848e-4,1.391790875148587e-5,7.001518418367263e-9,9.95630713119781e-4,1.3618756991412558e-5,7.152573416875709e-9,9.960345799292754e-4,1.3332040182830323e-5,7.29822948174995e-9,9.965148922381106e-4,1.3099245727471433e-5,7.4176277467670906e-9,9.970441941477112e-4,1.294893783688122e-5,7.496180701557594e-9,9.975882397394037e-4,1.2893264734091967e-5,7.527452492986098e-9,9.98112746713271e-4,1.2927881166143136e-5,7.513323955728468e-9,9.985890416039868e-4,1.3034634044303174e-5,7.462717843178684e-9,9.98997826875862e-4,1.3185900947308538e-5,7.389423516943071e-9,9.993309205324102e-4,1.3349405125668461e-5,7.3096360810763596e-9,9.99591375901445e-4,1.3492586365441474e-5,7.2397137309556e-9,9.99792668555754e-4,1.3586170648049899e-5,7.19436794380859e-9,9.999574846180697e-4,1.3607159236305784e-5,7.185183536470915e-9,0.0010001162353076604,1.3541721843540724e-5,7.219205045654568e-9,0.0010003049165363592,1.3388426048463978e-5,7.297338394204071e-9,0.0010005613623854227,1.3161776667357265e-5,7.4125560623676355e-9,0.0010009186855654698,1.2894930291567578e-5,7.548472365832492e-9,0.001001395431805748,1.2638913929780974e-5,7.679645009834532e-9,0.0010019842716833783,1.2454704246940159e-5,7.775465670467849e-9,0.0010026447567112351,1.2396089240531763e-5,7.80872345265965e-9,0.0010033080233894881,1.2487217081785896e-5,7.766920829338294e-9,0.0010038972478855197,1.2706548445498057e-5,7.660458605367358e-9,0.0010043565504526115,1.2989946449421098e-5,7.521224770364038e-9,0.001004672231437384,1.3254551939388285e-5,7.390681026669133e-9,0.0010048741581043606,1.3430195374539308e-5,7.304097230213788e-9,0.001005019125368549,1.3480998017901777e-5,7.27969563649755e-9,0.001005168386359312,1.340941335065461e-5,7.316596454133312e-9,0.0010053704906546521,1.3246930061867809e-5,7.3994046186029145e-9,0.0010056532197300141,1.3040000118914438e-5,7.505138119129774e-9,0.0010060229091539998,1.2837303701281687e-5,7.609490773330097e-9,0.0010064679702872599,1.2680694358525935e-5,7.691325334965295e-9,0.00100696410900686,1.2599802055308625e-5,7.73543576837147e-9,0.0010074799303969257,1.2609453088105831e-5,7.733972018905462e-9,0.0010079824262810555,1.270927137545503e-5,7.68678360040066e-9,0.001008441983199197,1.2885166585695294e-5,7.600766502657164e-9,0.0010088364680810365,1.3112382500046945e-5,7.488348827427479e-9,0.0010091540147537904,1.3359627618872047e-5,7.365366043977686e-9,0.0010093942793346546,1.3593707411098743e-5,7.248659658443538e-9,0.0010095681767792678,1.3783993741249416e-5,7.15377885761242e-9,0.0010096964280629517,1.3906222158150544e-5,7.093063507146875e-9,0.0010098073351207102,1.3945501108580383e-5,7.074156161434548e-9,0.001009933998475673,1.3898670498425644e-5,7.098839141011301e-9,0.0010101108925560731,1.3776156395851466e-5,7.162087545997906e-9,0.0010103693537762879,1.3603229200616472e-5,7.2513716092129284e-9,0.001010731370310706,1.3419833637562037e-5,7.3466457393835305e-9,0.0010112016762827962,1.3277108498864683e-5,7.422018074019115e-9,0.0010117598625822178,1.3228209751310446e-5,7.450356500270065e-9,0.0010123568768607588,1.3312347000828476e-5,7.411421404428368e-9,0.0010129222480500654,1.3535582819181508e-5,7.301724939909382e-9,0.001013385331984101,1.3858804132080293e-5,7.140781390672817e-9,0.001013703707706818,1.4205000113155494e-5,6.967497490960027e-9,0.0010138822454817784,1.448749274687313e-5,6.825833236491937e-9,0.0010139696115598694,1.464433393257325e-5,6.747309515966404e-9,0.001014034960781267,1.4658559233696529e-5,6.740744459985028e-9,0.0010141406929217946,1.4555765436898252e-5,6.793498539548968e-9,0.0010143254890754552,1.4386576477060897e-5,6.880297884166936e-9,0.0010146008251386124,1.420706593101242e-5,6.973012537470857e-9,0.0010149561275081414,1.4065065181815716e-5,7.047465907773897e-9,0.00101536675460542,1.3993570240248546e-5,7.0867457546242325e-9,0.0010158013574818438,1.4009210516690739e-5,7.0820601273590445e-9,0.0010162275161801665,1.4113340727320419e-5,7.032323770553171e-9,0.0010166159146742558,1.429419134817385e-5,6.943198192930504e-9,0.0010169435907143895,1.4529570251940101e-5,6.825790427443894e-9,0.001017196458485237,1.4790107827825064e-5,6.695003258799705e-9,0.0010173710222833715,1.5043063994411697e-5,6.5675509780237646e-9,0.0010174750556951806,1.5256600380969255e-5,6.459732390817189e-9,0.001017526963278131,1.5404159828331004e-5,6.385177403566588e-9,0.0010175537373666459,1.5468376233596634e-5,6.352868110860509e-9,0.001017587717364337,1.544402654131814e-5,6.365661713647204e-9,0.0010176624605994554,1.5339717534360233e-5,6.419435210938414e-9,0.0010178080063839555,1.5178075945731396e-5,6.502944076621323e-9,0.0010180457452669584,1.4994254410299033e-5,6.598491835633543e-9,0.001018383064035031,1.4832381264038678e-5,6.6836353960864175e-9,0.0010188083316972948,1.47391332796154e-5,6.734397667122887e-9,0.0010192878609278002,1.475363974145172e-5,6.730438678602947e-9,0.0010197678046505864,1.4894272655654495e-5,6.661915015952189e-9,0.00102018443463024,1.5145950174105276e-5,6.5361350999692345e-9,0.0010204836747962334,1.5455522234757765e-5,6.380048705078234e-9,0.0010206437243931602,1.5743334912936524e-5,6.2343512371156256e-9,0.0010206877187796243,1.5931055263172206e-5,6.139179160224897e-9,0.0010206758978202743,1.5972669549953236e-5,6.118206896081988e-9,0.0010206802785743953,1.587040614601252e-5,6.170538509004209e-9,0.0010207572457502255,1.5667653115910527e-5,6.274358304487625e-9,0.0010209325449119094,1.5426977239675342e-5,6.398084889086976e-9,0.0010212017498908892,1.520786821074164e-5,6.511580983868921e-9,0.0010215398590799887,1.5053291656116975e-5,6.5929010127443566e-9,0.001021912431934167,1.498569502034724e-5,6.630329259183798e-9,0.0010222841435015692,1.5008880327172054e-5,6.621529648464819e-9,0.0010226239917599095,1.5112068113238198e-5,6.571614831742929e-9,0.0010229080944826484,1.527401144689631e-5,6.491159177179544e-9,0.0010231212780165244,1.5466570242856973e-5,6.394419794620523e-9,0.001023258140679252,1.565799311163615e-5,6.29764201481796e-9,0.001023323723746117,1.581631986787821e-5,6.217269214912676e-9,0.0010233335657502231,1.5913194832607108e-5,6.1679458224003706e-9,0.001023312652942418,1.592801691867029e-5,6.160375068918902e-9,0.0010232928007281963,1.5851837316847298e-5,6.199331981376249e-9,0.0010233083950897286,1.5690131829775294e-5,6.282255337576482e-9,0.0010233908943278179,1.5463603240336597e-5,6.398818557630599e-9,0.0010235628682748299,1.5206365333078503e-5,6.531796793225194e-9,0.001023832615986048,1.4961295414609502e-5,6.659351030318273e-9,0.0010241904386357422,1.4772889164037382e-5,6.75860252344733e-9,0.001024607567166903,1.4678269177210256e-5,6.810218842264442e-9,0.001025038835875019,1.4697338813962965e-5,6.803536849223181e-9,0.0010254302198467145,1.4824014543455562e-5,6.7412161836967475e-9,0.001025731571596928,1.5021882123837198e-5,6.641636326261475e-9,0.0010259126052034333,1.522848767407803e-5,6.536783150416774e-9,0.0010259765363499528,1.5370953906319304e-5,6.464197088487894e-9,0.0010259633245588596,1.5390062552732196e-5,6.454503675266422e-9,0.0010259374918061134,1.5262568774086813e-5,6.519889575291671e-9,0.0010259645518792863,1.5009405517106155e-5,6.649894303135918e-9,0.0010260881771412683,1.4685110812366908e-5,6.816835676346961e-9,0.0010263193576777233,1.4355638624471758e-5,6.98711790063453e-9,0.0010266398889383535,1.4077159844329356e-5,7.1319926882616635e-9,0.001027014226018415,1.388425288732607e-5,7.2335633845970444e-9,0.0010274020414492461,1.3788133610311604e-5,7.285745723386852e-9,0.0010277670997235588,1.378095198171993e-5,7.292187151879546e-9,0.0010280818168414282,1.384189253769118e-5,7.263261955630348e-9,0.0010283288268859772,1.3942614549109414e-5,7.213352520340318e-9,0.0010285011445110084,1.405139140764495e-5,7.158731665697266e-9,0.0010286019408435882,1.413632711989153e-5,7.115870597147311e-9,0.0010286442540053864,1.4168322568558104e-5,7.09986088584424e-9,0.0010286504037499457,1.4124365397943462e-5,7.12268504128625e-9,0.0010286504791455998,1.3991292700524017e-5,7.191271681234185e-9,0.0010286791648484964,1.3769478993510954e-5,7.3056080066068604e-9,0.0010287705469715204,1.3475266008978337e-5,7.457494460578409e-9,0.001028951327632887,1.3140689311306862e-5,7.630660550566689e-9,0.0010292338285229816,1.280935564220711e-5,7.802822009644976e-9,0.0010296108825569928,1.2528353458002378e-5,7.949760843038067e-9,0.0010300546940236487,1.233759347627838e-5,8.050755726164393e-9,0.0010305208273311641,1.2259178009605778e-5,8.094075186049836e-9,0.0010309570900584187,1.2289732755782155e-5,8.08103476461809e-9,0.0010313157392175553,1.239822992254162e-5,8.027273387668908e-9,0.0010315663465513536,1.2530919495367793e-5,7.960336714121893e-9,0.0010317058209335492,1.2623500762804774e-5,7.913435014428099e-9,0.001031761762409121,1.2618455216019864e-5,7.916445804350526e-9,0.0010317863213620134,1.2482715648861428e-5,7.986708154305847e-9,0.0010318409415092163,1.2218875567850196e-5,8.123174915224233e-9,0.0010319770490094284,1.1864341225077265e-5,8.306813126168584e-9,0.00103222073763433,1.1478137897328902e-5,8.507363432120657e-9,0.001032567744181653,1.1121486498340977e-5,8.693293502779717e-9,0.001032989301697024,1.084087419509298e-5,8.840491614529463e-9,0.0010334441429188832,1.065944919603051e-5,8.936740074754993e-9,0.0010338905402688494,1.0577173083741774e-5,8.981736505163395e-9,0.0010342945423151325,1.0576383955421915e-5,8.98433665789792e-9,0.00103463375858786,1.0628837350001691e-5,8.958991422832772e-9,0.0010348979793146607,1.0701777354861157e-5,8.922621233770985e-9,0.0010350882727302663,1.0762337371071754e-5,8.89230185881902e-9,0.0010352157191526022,1.0780632780980312e-5,8.883608858628518e-9,0.0010353002554859072,1.0732303407048932e-5,8.90925860516677e-9,0.0010353694431257166,1.0601227344865006e-5,8.977690201699487e-9,0.0010354564618759658,1.0382697470573208e-5,9.09143350297743e-9,0.0010355964502504992,1.008658752883728e-5,9.245490273873833e-9,0.00103582062126145,9.739174784541215e-6,9.426394426544935e-9,0.001036148531357024,9.381685552026843e-6,9.612933762557046e-9,0.001036580411402926,9.063860868442835e-6,9.779418101910907e-9,0.0010370928511063498,8.832500434599207e-6,9.901545674027221e-9,0.0010376410685493903,8.717740287966906e-6,9.963490318062588e-9,0.001038168776362179,8.722090107823838e-6,9.963639543713632e-9,0.001038623174432724,8.817117820241822e-6,9.916433090139891e-9,0.0010389699638132367,8.949806345046257e-6,9.849185263172341e-9,0.0010392031310252545,9.056681538401306e-6,9.794814136056429e-9,0.0010393464417650642,9.081041880969784e-6,9.7828832107339e-9,0.0010394465445357972,8.98803121924295e-6,9.831716602058708e-9,0.0010395599652596504,8.773379181090786e-6,9.943793307826468e-9,0.0010397377850124105,8.463527638538071e-6,1.010562028455275e-8,0.0010400124740567555,8.107264085356009e-6,1.0292016552047566e-8,0.0010403907983126954,7.761647465210934e-6,1.047336668482392e-8,0.0010408546068110553,7.476975351250501e-6,1.0623406725890964e-8,0.0010413683448417354,7.285608742141655e-6,1.0725068130866081e-8,0.0010418898199738098,7.197436696745734e-6,1.077292879202111e-8,0.0010423802623030689,7.201792582882333e-6,1.0772323696065717e-8,0.0010428110604212102,7.273401012350935e-6,1.0736320365516424e-8,0.0010431666141344895,7.3794054706384364e-6,1.0682066369385867e-8,0.0010434442537033133,7.485424438284342e-6,1.062758834085327e-8,0.001043652630466233,7.559908129853109e-6,1.0589456096467488e-8,0.0010438096899647942,7.577040457584126e-6,1.0581220954317427e-8,0.0010439407598399314,7.518874452397437e-6,1.0612288493742078e-8,0.0010440766580099585,7.3774053804267025e-6,1.0686856280073861e-8,0.0010442511917944904,7.1569232978676465e-6,1.0802719477653824e-8,0.0010444971593526165,6.876269078840813e-6,1.0950114569202205e-8,0.001044840195797599,6.569674575005575e-6,1.1111270660756568e-8,0.0010452907905748228,6.284047442282688e-6,1.1261780001466925e-8,0.0010458366657182785,6.070632446913745e-6,1.1374885918198315e-8,0.0010464397212440041,5.970991705073476e-6,1.1428761032437083e-8,0.0010470419129418023,6.0012650636924906e-6,1.1414752486565529e-8,0.0010475808873286244,6.142246342171787e-6,1.134266195270011e-8,0.0010480101442759484,6.342031857499272e-6,1.1239472124113928e-8,0.0010483145665516262,6.531775462877667e-6,1.1141164514740623e-8,0.0010485141839921832,6.647674109549178e-6,1.1081204358546142e-8,0.0010486555927916323,6.649554437643226e-6,1.1080769771562399e-8,0.0010487962274780228,6.52970014858732e-6,1.1144090607712959e-8,0.001048988161110087,6.311113549640392e-6,1.1259318747852037e-8,0.001049266135585487,6.038217412853158e-6,1.140334069973273e-8,0.0010496417708631659,5.764112342343603e-6,1.1548386965958874e-8,0.001050103884713581,5.538005408647266e-6,1.1668579695155248e-8,0.0010506236688532541,5.395419538643018e-6,1.1745084312143063e-8,0.001051162793625547,5.352737678222033e-6,1.176905039772956e-8,0.0010516822059403249,5.4065291012566944e-6,1.1742069546748452e-8,0.0010521495626468031,5.5369304279269275e-6,1.1674479004989727e-8,0.0010525439851890206,5.7134564555245825e-6,1.1582329111142928e-8,0.0010528578438257308,5.9014015084172195e-6,1.1483979856274418e-8,0.0010530961263485919,6.067417747217445e-6,1.139710095373138e-8,0.0010532743691075914,6.1835874192326255e-6,1.133647354846759e-8,0.0010534160834845703,6.230045791333779e-6,1.1312589735762775e-8,0.001053550198721015,6.1966823130205854e-6,1.1330774854534354e-8,0.0010537085154161126,6.0844906794547615e-6,1.1390513063025623e-8,0.0010539227224054864,5.906847205676181e-6,1.1484802633572627e-8,0.00105422025687308,5.690435278638442e-6,1.1599668036115498e-8,0.0010546184278993171,5.4746708261865515e-6,1.1714426246353476e-8,0.001055117156275193,5.307635025766357e-6,1.1803769941651274e-8,0.001055692545616445,5.236529243510756e-6,1.184274644058134e-8,0.001056295705931545,5.292689648675187e-6,1.1814655608677331e-8,0.0010568617072468647,5.4757403210461624e-6,1.1719477956429268e-8,0.0010573293783666506,5.74604326804144e-6,1.157796966652239e-8,0.0010576645165347547,6.033560344798371e-6,1.1427058221344922e-8,0.0010578737870635731,6.261973517443829e-6,1.1307094518131505e-8,0.0010580009637449824,6.3760497725166996e-6,1.1247346419441141e-8,0.001058108517330219,6.358165356812837e-6,1.1257242872632262e-8,0.0010582556001528874,6.228289144348805e-6,1.1326384333356857e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json new file mode 100644 index 0000000000..33f96e30e2 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":13000,"numberOfSamples":1000,"samples":[0.0010584823083198346,6.031818825503171e-6,1.14309469118811e-8,0.0010588036033781425,5.823520864538709e-6,1.1542103150393909e-8,0.0010592110744742987,5.6537248748726675e-6,1.1633248752700286e-8,0.0010596790894540058,5.559275280564943e-6,1.1684765345343194e-8,0.0010601724727019367,5.559236240846307e-6,1.1686339583847125e-8,0.0010606540091394276,5.654379293057021e-6,1.163732802349451e-8,0.0010610908819856466,5.829497270171977e-6,1.1545624012790231e-8,0.0010614594503400023,6.057715047147503e-6,1.1425423187205381e-8,0.001061747989835144,6.305862037083749e-6,1.1294367431781857e-8,0.0010619573719630783,6.539955951254238e-6,1.1170587469196216e-8,0.0010620999645025674,6.73003410085884e-6,1.107008326599654e-8,0.0010621972572704668,6.85379996171742e-6,1.1004756707165859e-8,0.0010622768540195135,6.898913123430779e-6,1.098119849532928e-8,0.0010623693266318172,6.864185869807982e-6,1.1000078885400938e-8,0.0010625050436689565,6.760079817880366e-6,1.1055907410923635e-8,0.001062710756522555,6.608668374463369e-6,1.1137052470541557e-8,0.0010630055440594903,6.442842455479279e-6,1.122613014857253e-8,0.0010633958133875673,6.303928192637586e-6,1.1301216346173524e-8,0.0010638698300656857,6.236227673998108e-6,1.1338700200742188e-8,0.0010643938207032379,6.277096687541316e-6,1.1318549017049607e-8,0.0010649135018336272,6.443029009602109e-6,1.1231761017071778e-8,0.0010653652534506645,6.716334917457601e-6,1.1087554932954997e-8,0.0010656971998236583,7.041447402084115e-6,1.0915428186536279e-8,0.0010658919742331224,7.338860744797124e-6,1.0757744815379704e-8,0.0010659770288683225,7.534292063466726e-6,1.0654138240953239e-8,0.001066013886508743,7.587831708115414e-6,1.0625935223163422e-8,0.0010660723258305996,7.506181686783977e-6,1.0669662265910576e-8,0.0010662052115061964,7.3335686443663195e-6,1.0761922260944352e-8,0.0010664358470525873,7.130863915281745e-6,1.0870481691937031e-8,0.0010667588393153595,6.955633515934309e-6,1.0964801902708683e-8,0.0010671485918925085,6.8498410434954626e-6,1.1022511941646397e-8,0.0010675694409390784,6.835426550329633e-6,1.1031759374762615e-8,0.0010679841615469535,6.915158645441867e-6,1.0990824083116765e-8,0.0010683599657830244,7.076052103195604e-6,1.0906394119921115e-8,0.0010686723933572796,7.293685466136946e-6,1.0791343615514796e-8,0.00106890765095213,7.536822311352906e-6,1.0662299642942404e-8,0.0010690635977016276,7.77211139688823e-6,1.0537115853861746e-8,0.001069149428980129,7.968577301214409e-6,1.0432429890255657e-8,0.0010691841550370862,8.101601929648258e-6,1.036149374624633e-8,0.0010691940071483454,8.156061538266819e-6,1.0332478423133815e-8,0.001069209055658057,8.128266563717782e-6,1.03474435063982e-8,0.0010692594713290538,8.026593480405271e-6,1.0402013164716527e-8,0.0010693717459872535,7.870945267100574e-6,1.0485664177770738e-8,0.0010695649713014753,7.691125951702836e-6,1.05825672334285e-8,0.0010698471837835711,7.524020444771572e-6,1.0673046459330192e-8,0.0010702118794917663,7.409199319244088e-6,1.073588364535248e-8,0.0010706353190277158,7.382260325524803e-6,1.0751866255570777e-8,0.0010710762838212979,7.465490347225327e-6,1.0708824642405977e-8,0.0010714809682874885,7.65702106935285E-06,1.0607528738465052e-8,0.0010717954666795326,7.92266264450533e-6,1.0466162353522634e-8,0.0010719849482146093,8.197549025520211e-6,1.031948512559187e-8,0.0010720518335533688,8.403355641842077e-6,1.0209555077841326e-8,0.0010720405373210041,8.477632103826806e-6,1.0169920153450947e-8,0.001072021738228369,8.400092320472587e-6,1.021150931330851e-8,0.0010720635198379748,8.199374023477202e-6,1.0319075409549964e-8,0.0010722065788787624,7.937147885028722e-6,1.0459750886515433e-8,0.00107245583521534,7.681893768449438e-6,1.0597036740148054e-8,0.0010727875503866039,7.487659268153709e-6,1.0702071381753594e-8,0.0010731630002383215,7.384581405590331e-6,1.075864496894142e-8,0.0010735409195010803,7.379180450137632e-6,1.0763066178824929e-8,0.001073885642552888,7.459556157906894e-6,1.0721462765445143e-8,0.0010741711464074789,7.60167164073378e-6,1.064650717664984e-8,0.0010743824677307964,7.774854624539591e-6,1.05545292946971e-8,0.0010745158753886549,7.946253107214568e-6,1.0463140800736486e-8,0.0010745783975093434,8.084663970024577e-6,1.0389154063601514e-8,0.0010745867148931046,8.164015707520659e-6,1.0346669113505363e-8,0.0010745652935797434,8.166515928713906e-6,1.0345347414447921e-8,0.0010745436064007652,8.085247843115634e-6,1.0389003625916266e-8,0.001074552414002862,7.925732239563838e-6,1.04747713355022e-8,0.0010746194263179607,7.705947602888145e-6,1.0593098065321354e-8,0.0010747649179418883,7.45457851834404e-6,1.0728675241616273e-8,0.0010749978735612412,7.207509835919612e-6,1.0862287758949862e-8,0.0010753131883688583,7.0027414856204215e-6,1.0973502950806292e-8,0.0010756904320888402,6.874033979996817e-6,1.1044059873554255e-8,0.0010760947834755237,6.8436529769841505e-6,1.1061787085804026e-8,0.001076481049891446,6.914886396186059e-6,1.1024693263841812e-8,0.0010768018290682909,7.066051634150347e-6,1.0944283327208556e-8,0.0010770200321076698,7.249261634913781e-6,1.0846289489249666e-8,0.001077123420982185,7.39804993243476e-6,1.076656197635394e-8,0.0010771348797026668,7.44585714263904e-6,1.0741042838621376e-8,0.0010771101367558554,7.350779981649652e-6,1.0792371226593277e-8,0.0010771194563272597,7.114340819791003e-6,1.091978472227473e-8,0.0010772207158111727,6.781925749825741e-6,1.1098942285178267e-8,0.001077438751988009,6.423598569950669e-6,1.1292263291924475e-8,0.0010777614606054466,6.107174429654953e-6,1.1463350840217734e-8,0.001078150988925822,5.878278442603043e-6,1.1587643347827043e-8,0.0010785602961386523,5.753858224937523e-6,1.1655892460490189e-8,0.0010789465240847547,5.72623912615062e-6,1.167203738632892e-8,0.0010792781883616845,5.7715171050260465e-6,1.1648769383961856e-8,0.0010795372547668179,5.857715055435001e-6,1.1603202812664468e-8,0.001079718408317149,5.950842140755552e-6,1.1553633958985417e-8,0.0010798274054571314,6.018931123532262e-6,1.1517348515355086e-8,0.0010798793764046966,6.034916081994106e-6,1.150903056702829e-8,0.0010798970957694128,5.979082561969348e-6,1.1539400992860876e-8,0.0010799088782759599,5.841386795654391e-6,1.1613943229511664e-8,0.001079945671266815,5.6234999239785664e-6,1.1731800417280663e-8,0.0010800370563297977,5.339960624404898e-6,1.1885168170973472e-8,0.0010802063626677298,5.017558699714286e-6,1.2059638070394361e-8,0.001080465709873069,4.692281975823613e-6,1.2235836282107038e-8,0.0010808121845919524,4.403722523375394e-6,1.239241282362964e-8,0.0010812263927673289,4.1875776377249006e-6,1.2510056790341688e-8,0.0010816742755761358,4.067606126441703e-6,1.2575830541311822e-8,0.0010821124162932766,4.048764490048608e-6,1.2586910279254428e-8,0.001082496394029135,4.1132067224480435e-6,1.2552812557360103e-8,0.0010827911400719823,4.220728194789922e-6,1.2495218049522599e-8,0.0010829814407256138,4.315035608807498e-6,1.2444602628550136e-8,0.0010830795939978,4.336331558319785e-6,1.2433397469308228e-8,0.0010831263014689158,4.238515418925506e-6,1.2486625405764085e-8,0.0010831815716910997,4.005888907583e-6,1.2612831618416838e-8,0.0010833062871192334,3.6615290203470267e-6,1.2799568273597161e-8,0.0010835411795810717,3.261162454656364e-6,1.3016729071965934e-8,0.0010838933778462134,2.8737930394674124e-6,1.3227010267237029e-8,0.001084337034999438,2.5585169726812227e-6,1.3398407369065678e-8,0.0010848260137734957,2.3486087687672093e-6,1.351281176227918e-8,0.0010853104715353803,2.2479370425633493e-6,1.3567994079646327e-8,0.0010857496852788604,2.2371567972056594e-6,1.3574322546551323e-8,0.0010861181451779231,2.2837281191620208e-6,1.3549388239562281e-8,0.0010864060912470594,2.3509882779473265e-6,1.351309848109019e-8,0.001086617167375567,2.4043382300803017e-6,1.348429676688557e-8,0.0010867653789912383,2.414780175748046e-6,1.3478800918996513e-8,0.0010868723951977914,2.36090336349784e-6,1.3508287044674754e-8,0.0010869652859729975,2.230320299619587e-6,1.357949036950374e-8,0.0010870742527047388,2.0210940838380106e-6,1.3693435401754393e-8,0.0010872297036982135,1.7431263470573831e-6,1.3844706627164613e-8,0.0010874581583647045,1.4188304041524766e-6,1.4021110351396713e-8,0.0010877770309646244,1.0819285734700634e-6,1.420434005833336e-8,0.0010881892473587201,7.732394508393998e-7,1.4372250040797893e-8,0.0010886795450963712,5.330813350595426e-7,1.4502949312721697e-8,0.001089214649730255,3.9140243490344096e-7,1.458013766244398e-8,0.0010897487258969283,3.584072521389756e-7,1.459820749252219e-8,0.0010902335819651038,4.191729634013468e-7,1.4565214418600275e-8,0.0010906310187498445,5.348153076480196e-7,1.4502295396028616e-8,0.0010909236281021046,6.506177348026824e-7,1.443926695100913e-8,0.001091120685014961,7.092800663955221e-7,1.4407391615029013e-8,0.001091257136747916,6.658869235087142e-7,1.4431183604022623e-8,0.0010913854479859381,5.005821622148568e-7,1.4521478794650966e-8,0.0010915618860652314,2.251478759511052e-7,1.467185398741576e-8,0.0010918307189155313,-1.1924299742407577e-7,1.4859864732950039e-8,0.0010922113493534546,-4.734372432057817e-7,1.5053255310459487e-8,0.0010926932935980337,-7.775556028587294e-7,1.5219334684945516e-8,0.0010932410472572044,-9.877102401363634e-7,1.533407805988485e-8,0.0010938063797259453,-1.0859165470122615e-6,1.5387566050399254e-8,0.001094342455259391,-1.080589230442882e-6,1.5384321095468852e-8,0.00109481445675083,-9.995980021090122e-7,1.5339569592932147e-8,0.0010952043212414967,-8.803420527904827e-7,1.5273828324478645e-8,0.0010955103354372215,-7.608506842509845e-7,1.520800473466209e-8,0.0010957438947718288,-6.738297010954895e-7,1.516008890171015e-8,0.0010959255739260278,-6.435882030741187e-7,1.514342886133524e-8,0.0010960816844447629,-6.848008439732961e-7,1.516603611113632e-8,0.001096241543978873,-8.02004725041787e-7,1.5230321629549556e-8,0.0010964350536024304,-9.891361497491146e-7,1.5332873831182345e-8,0.0010966898752015986,-1.2290044827439803e-6,1.5464206803068726e-8,0.0010970275583669783,-1.4932930260580311e-6,1.5608784981685757e-8,0.0010974584822657629,-1.7443109645131954e-6,1.574598051452959e-8,0.0010979764965260918,-1.9399561880694465e-6,1.5852762521604583e-8,0.0010985554895813923,-2.0426623918831098e-6,1.590856103716042e-8,0.0010991510076969397,-2.031063016383569e-6,1.590164521848076e-8,0.0010997091337757634,-1.9102678540224635e-6,1.5834788151340182e-8,0.0011001814643931509,-1.7151290714917107e-6,1.5727115299126148e-8,0.0011005408546707206,-1.5028952094650604e-6,1.5610105905041306e-8,0.001100790948640354,-1.3368393448549428e-6,1.5518581808694086e-8,0.001100965184316589,-1.2672952194125447e-6,1.5480237846173764e-8,0.0011011161176956588,-1.3175209969869768e-6,1.5507843040213407e-8,0.0011012998469212088,-1.4787697248972343e-6,1.5596542078759433e-8,0.001101561065014156,-1.7146998910046917e-6,1.5726308035865734e-8,0.0011019226990827457,-1.9724071175410574e-6,1.586801490545639e-8,0.001102382007116548,-2.196363356079692e-6,1.5991084228148263e-8,0.0011029132667145561,-2.3416096021800094e-6,1.6070722292919825e-8,0.0011034757514399483,-2.38310916619068e-6,1.6093077245681256e-8,0.0011040244786115357,-2.31927776315323e-6,1.6057225467888683e-8,0.0011045205794044041,-2.1694385072843676e-6,1.597381802522786e-8,0.0011049385690624493,-1.966838354498544e-6,1.5861252045493124e-8,0.0011052692443645087,-1.750001842086337e-6,1.5740883086523665e-8,0.0011055186380034719,-1.5550353774155559e-6,1.5632734001830676e-8,0.0011057045369247066,-1.4103695910270938e-6,1.5552549745965977e-8,0.0011058522277989002,-1.3341378137981495e-6,1.551032955262108e-8,0.0011059906217503908,-1.3335025490994153e-6,1.5509962936515426e-8,0.001106149150194748,-1.404950501845874e-6,1.5549420079728942e-8,0.0011063551807779252,-1.5348143523852197e-6,1.5621073311654e-8,0.0011066313631327655,-1.6998081049754247e-6,1.5712016164878937e-8,0.0011069922927926747,-1.8679853774396568e-6,1.580459705808824e-8,0.0011074402507398938,-2.0011637405826746e-6,1.5877740607269027e-8,0.0011079607077455421,-2.060248709035317e-6,1.5909858156164228e-8,0.001108519738968454,-2.0144254988523965e-6,1.588390462537339e-8,0.0011090667951459137,-1.8531436940924132e-6,1.5794016241904865e-8,0.0011095457522609323,-1.5962893152773853E-06,1.5651187561937485e-8,0.0011099131036531966,-1.295286315591519e-6,1.548393416264128e-8,0.0011101558729649911,-1.0201697065466408e-6,1.5331133204623056e-8,0.0011102988958696094,-8.358929741676526e-7,1.5228836499800212e-8,0.001110396160826366,-7.792957175517323e-7,1.519745019538023e-8,0.00111051078357651,-8.4832733122868e-7,1.5235767590110828e-8,0.0011106942753399312,-1.0069042485667557e-6,1.5323711725274e-8,0.00111097368196469,-1.1999692577389667e-6,1.5430718007157876e-8,0.0011113487938456635,-1.370515245006706e-6,1.5525164027079777e-8,0.0011117968919402519,-1.472886234678616e-6,1.5581716379428368e-8,0.00111228126468647,-1.4803580618799743e-6,1.5585522069862342e-8,0.0011127605283525728,-1.38735025143936e-6,1.553345118973782e-8,0.0011131969606502966,-1.207467615593322e-6,1.5433042494833323e-8,0.0011135628384484684,-9.68609089136904e-7,1.5299812786382335e-8,0.0011138441430138264,-7.063766770539463e-7,1.515359787677788e-8,0.0011140413969519087,-4.5716749529745555e-7,1.5014692696968984e-8,0.0011141679771116317,-2.5224292949749117e-7,1.4900524553462284e-8,0.0011142467106409985,-1.1360505719006956e-7,1.4823340179212186e-8,0.0011143057375622243,-5.1947099677121166e-8,1.478906414284595e-8,0.0011143745275428235,-6.641623982905153e-8,1.479718055412551e-8,0.0011144805411490116,-1.4554045014367347e-7,1.4841267716474989e-8,0.0011146465039405943,-2.6868186327244643e-7,1.4909818722617364e-8,0.0011148879464543517,-4.077487512787168e-7,1.4987193531681402e-8,0.0011152106069133069,-5.293572049765862e-7,1.5054810350341645e-8,0.001115607505557431,-5.981354506604627e-7,1.5092967998964315e-8,0.0011160562278251995,-5.82238372920153e-7,1.508390498897239e-8,0.0011165181858738054,-4.617774614729789e-7,1.5016501585294573e-8,0.0011169427756374372,-2.3916486858598275e-7,1.489207589936706e-8,0.001117279123695704,5.281074662320559e-8,1.4728931150574154e-8,0.0011174945353303808,3.5238253651923323e-7,1.4561593636104278e-8,0.0011175918891919794,5.85237341776037e-7,1.4431602483043102e-8,0.001117613973298778,6.922600246158575e-7,1.4371955080154304e-8,0.0011176285284481737,6.540692000960255e-7,1.4393394122909386e-8,0.0011177012518909313,4.973859584028976e-7,1.4480914676359373e-8,0.0011178724639969737,2.807665191832271e-7,1.4601797634793543e-8,0.0011181484319527568,7.064887876481905e-8,1.4718987525011862e-8,0.0011185068668504749,-7.890745011779789e-8,1.4802357637019236e-8,0.0011189091709123736,-1.3646153918415363e-7,1.4834384089423755e-8,0.0011193126105248509,-9.43931094899234e-8,1.48108065335213e-8,0.0011196792366973227,3.5164048593491474e-8,1.473837430297344e-8,0.0011199811858316087,2.26369559642981e-7,1.4631494218090753e-8,0.0011202031869314724,4.4589422366034254e-7,1.4508776239873582e-8,0.00112034310520379,6.586854121746841e-7,1.4389816343386903e-8,0.0011204109385747102,8.330417415667043e-7,1.4292352649188305e-8,0.0011204265234972595,9.446967691452359e-7,1.4229970169917528e-8,0.0011204162785695454,9.796302768584618e-7,1.4210520366177409e-8,0.0011204093914756884,9.354136766252925e-7,1.423536740670385e-8,0.0011204339509095645,8.210357617533893e-7,1.4299488573279187e-8,0.0011205135047749502,6.554492436680685e-7,1.4392288214421408e-8,0.0011206642577800594,4.652528434009131e-7,1.4498888367884619e-8,0.001120892869175372,2.817729973787914e-7,1.4601751044198787e-8,0.0011211947550755549,1.3757495990860276e-7,1.4682621069015419e-8,0.0011215528883894927,6.21872975976025e-8,1.4724918735586556e-8,0.001121937523487324,7.657802320904832e-8,1.471684663627745e-8,0.0011223081121608392,1.862337483495964e-7,1.4655293964103262e-8,0.0011226193191337492,3.7406125879550593e-7,1.4549846746055096e-8,0.001122832579558784,5.965725646991329e-7,1.4424943518651694e-8,0.001122931860338344,7.888398809784377e-7,1.4317073347269448e-8,0.0011229368584202211,8.823540066354003e-7,1.42646972284513e-8,0.0011229030163360236,8.31978931560535e-7,1.4293081372632381e-8,0.0011229027871189272,6.377983868581165e-7,1.4402074372500076e-8,0.0011229961745440554,3.466313844851877e-7,1.4565346045514696e-8,0.0011232080312209413,3.131213495657076e-8,1.4742059226319447e-8,0.0011235241667242122,-2.384517151272013e-7,1.4893183747109764e-8,0.0011239038866639104,-4.1705069829968125e-7,1.4993199888376666e-8,0.0011242978045176068,-4.891837396590307e-7,1.5033552385496457e-8,0.0011246618087164136,-4.650533911979487e-7,1.501996092483476e-8,0.0011249644073865193,-3.712956185955165e-7,1.4967350495564534e-8,0.0011251887847238463,-2.4226609099827207e-7,1.489497804254355e-8,0.0011253319323496448,-1.1342860023329529e-7,1.4822732804632492e-8,0.001125402634959825,-1.6748392335343594e-8,1.476855463336166e-8,0.0011254190551908455,2.2583818610430424e-8,1.4746592428163293e-8,0.001125406006350285,-1.147849811646348e-8,1.4765866874794957e-8,0.0011253918703925659,-1.2428284425453638e-7,1.4829389975213278e-8,0.001125405153669,-3.098575433825358e-7,1.4933811618400424e-8,0.001125470825285484,-5.515007109536961e-7,1.5069747750744837e-8,0.0011256068473051415,-8.237402109522106e-7,1.522287862447306e-8,0.0011258213742378021,-1.0955210324600928e-6,1.5375735433027346e-8,0.001126110953640497,-1.33434576076099e-6,1.551002392607651e-8,0.0011264599688784321,-1.5110754595557068e-6,1.5609325258051984e-8,0.0011268415324472347,-1.6050367155868619e-6,1.5661979950811296e-8,0.0011272200850014037,-1.6091063327225863e-6,1.5663968705012574e-8,0.0011275562307977297,-1.5342861631028003e-6,1.5621508044081852e-8,0.0011278144681279808,-1.4124327608801717e-6,1.5552595027563792e-8,0.001127973697196369,-1.2945868803236955e-6,1.548604925928786e-8,0.0011280382587597413,-1.2418556395565706e-6,1.5456333428887506e-8,0.0011280441049613882,-1.3076713541081708e-6,1.5493515389976944e-8,0.0011280530903307478,-1.5159246352740396e-6,1.5610950547436537e-8,0.001128132778175655,-1.8463668689740967e-6,1.579711977668449e-8,0.0011283296134604944,-2.238778351585612e-6,1.601804452302929e-8,0.0011286507402838491,-2.6162893563312223e-6,1.6230430827785135e-8,0.001129064849116733,-2.914505922934018e-6,1.639803217786027e-8,0.0011295188883964043,-3.1003495271215335e-6,1.650223555792818e-8,0.0011299585096496848,-3.1743954370268017e-6,1.6543390761059785e-8,0.0011303422387863712,-3.1616614223987634e-6,1.6535639899295777e-8,0.0011306468543703053,-3.099226465392222e-6,1.649993957729718e-8,0.0011308665355909385,-3.026115926253836e-6,1.6458343678529448e-8,0.0011310092877528594,-2.97696670198988e-6,1.643041637428008e-8,0.0011310930107738839,-2.9787150579821667e-6,1.643135725219101e-8,0.0011311420979546502,-3.048971357365785e-6,1.6471083224590702e-8,0.0011311844863316548,-3.1951543584245246e-6,1.655374177555831e-8,0.0011312487969415517,-3.4140426711787296e-6,1.667746050617603e-8,0.001131361247585663,-3.6918347099299193e-6,1.683438659836271e-8,0.0011315422288500833,-4.005155407124281e-6,1.701126248263884e-8,0.0011318028686057846,-4.323516118603748e-6,1.719082210152812e-8,0.001132142305142021,-4.613386976593811e-6,1.7354095519871995e-8,0.001132546459390808,-4.843583003603475e-6,1.7483454475893005e-8,0.0011329889427781129,-4.991272754047409e-6,1.7566013688537354e-8,0.0011334344413259357,-5.047541910774497e-6,1.7596784618951905e-8,0.001133844458183822,-5.021292733474158e-6,1.7580889129752105e-8,0.0011341848700335095,-4.94040959890774e-6,1.753421475919338e-8,0.0011344344119443499,-4.8491916969188745e-6,1.748193700907113e-8,0.0011345925814498685,-4.801059066100088e-6,1.745434825021528e-8,0.001134684387300292,-4.846227082445247e-6,1.7479841111046328e-8,0.0011347584805635495,-5.0160858158737145e-6,1.7576061597522453e-8,0.0011348759327808268,-5.309263400214288e-6,1.7742064468409605e-8,0.0011350908173706725,-5.6869034120381485e-6,1.7955706489080888e-8,0.0011354299176144932,-6.082800701089851e-6,1.8179418623203863e-8,0.0011358822190113598,-6.426124898603051e-6,1.8373054177066374e-8,0.0011364043809356825,-6.665757949870108e-6,1.8507648393622844e-8,0.0011369384853650538,-6.7840861137196476e-6,1.8573247563186413e-8,0.0011374316455507916,-6.795823634017219e-6,1.8578280026159067e-8,0.001137848673807987,-6.736604005607285e-6,1.85430965640259e-8,0.001138175543947817,-6.649378408098194e-6,1.8492219634553844e-8,0.0011384164599360274,-6.574091986083006e-6,1.8448433493018965e-8,0.0011385884812031334,-6.5420367269707E-06,1.8429543600599157e-8,0.0011387163515221173,-6.573764105960214e-6,1.844718403120001e-8,0.0011388284833158092,-6.678850501571657e-6,1.8506697577031452e-8,0.0011389539421612653,-6.856289459219892e-6,1.8607380918886297e-8,0.0011391198567281403,-7.094990988364993e-6,1.8742791852569966e-8,0.0011393486909906535,-7.374470404067843e-6,1.8901162544082247e-8,0.001139655105173082,-7.666288253826918e-6,1.9066235687773136e-8,0.0011400426757558419,-7.936983461486883e-6,1.921894205864218e-8,0.0011405013577337874,-8.152936837249098e-6,1.9340168556050783e-8,0.0011410069453844265,-8.286904307477137e-6,1.941447163411268e-8,0.001141523687978373,-8.325052062458535e-6,1.943407977800105e-8,0.0011420104921204704,-8.272482966705914e-6,1.940204081740356e-8,0.0011424298885641681,-8.155032071176124e-6,1.9333238629293002e-8,0.0011427577026877223,-8.01590505046847e-6,1.9252449665323856e-8,0.0011429907616206283,-7.907174957399983e-6,1.9189445751876634e-8,0.0011431501649271265,-7.877608061907913e-6,1.917200273740673e-8,0.0011432784491987938,-7.9594886944176e-6,1.9218374972079383e-8,0.0011434302434748492,-8.157983701078854e-6,1.9331275036921774e-8,0.0011436578055424847,-8.446881947193677e-6,1.949552477305666e-8,0.00114399515501405,-8.773659928063834e-6,1.9681008281834052e-8,0.001144446522983574,-9.073972603149053e-6,1.9850948567032337e-8,0.0011449845240813815,-9.291172843971188e-6,1.997301868872744e-8,0.0011455595354737658,-9.393027652032006e-6,2.0028869806567677e-8,0.0011461161009334714,-9.378716130867975e-6,2.001814630971795e-8,0.0011466089029168024,-9.274461172054308e-6,1.9956008806800238e-8,0.0011470122988015584,-9.121833292035425e-6,1.9866427698242803e-8,0.00114732188508422,-8.96496066277439e-6,1.977481168122164e-8,0.001147550426654242,-8.84115873090527e-6,1.970259092640148e-8,0.0011477216937115396,-8.776250220560751e-6,1.966451506584681e-8,0.0011478647584178116,-8.783503033521037e-6,1.966805944170667e-8,0.0011480097210303582,-8.864451422748417e-6,1.971393023358895e-8,0.0011481847339456337,-9.010282799110149e-6,1.9796897029095008e-8,0.0011484137013095736,-9.203162855983934e-6,1.9906583070119853e-8,0.0011487139621447924,-9.417536219790016e-6,2.0028232082651543e-8,0.0011490935669522466,-9.622008265590576e-6,2.0143797216780358e-8,0.0011495483701545808,-9.782674812070154e-6,2.0233850339937727e-8,0.0011500598968202766,-9.868530899457088e-6,2.0280675342107168e-8,0.001150595576793416,-9.858788234789456e-6,2.027245503525575e-8,0.0011511130407411538,-9.750551556433113e-6,2.0207673116114426e-8,0.0011515690958261268,-9.563815939238883e-6,2.0097983923800655e-8,0.0011519316806153635,-9.340392670730376e-6,1.9967584121287674e-8,0.001152190749497022,-9.135185026245966e-6,1.9848156573524196e-8,0.0011523634382926925,-9.001659265593388e-6,1.9770455193964563e-8,0.0011524907957058544,-8.976351650421527e-6,1.975535707782608e-8,0.0011526268209164589,-9.067935946616826e-6,1.9807599727437817e-8,0.0011528235054923113,-9.25449432683755e-6,1.9914294904382524e-8,0.0011531166414686328,-9.489552149459594e-6,2.0048491573720485e-8,0.0011535164504243166,-9.71476019621844e-6,2.0176519619224113e-8,0.0011540055000518578,-9.875454353321969e-6,2.0266935867828633e-8,0.0011545443526542588,-9.934597905884134e-6,2.029851857027083e-8,0.0011550830429836547,-9.881012223473731e-6,2.026498429883669e-8,0.0011555744937682764,-9.729706251418504e-6,2.0175168201088018e-8,0.0011559854772124829,-9.51504938883692e-6,2.0049071556327196e-8,0.0011563021464909625,-9.280042396553756e-6,1.991163982225793e-8,0.0011565296752859802,-9.065727818539686e-6,1.9786613888511836e-8,0.001156687736425848,-8.903688987058367e-6,1.9692182364519e-8,0.0011568044046975123,-8.8125619957311e-6,1.9638981965480233e-8,0.0011569105458751,-8.797789715304598e-6,1.9629991386652268e-8,0.0011570356151798416,-8.853178776230065e-6,1.9661469660227554e-8,0.0011572048275839113,-8.963029002850191e-6,1.9724213131765286e-8,0.0011574371573823965,-9.104180604326605e-6,1.9804750235027096e-8,0.0011577435098976399,-9.247950130788989e-6,1.9886461799431398e-8,0.0011581246406424353,-9.362476184699034e-6,1.9950934601369646e-8,0.001158568958664678,-9.41631267388031e-6,1.9980033554842147e-8,0.001159051135572797,-9.383982662467644e-6,1.9959107105592105e-8,0.0011595332400694842,-9.253407196201551e-6,1.988127948054991e-8,0.0011599704116754437,-9.033473617199929e-6,1.9751830591591057e-8,0.001160321905079089,-8.757962164306107e-6,1.9590469326886845e-8,0.0011605651381540996,-8.481352968156326e-6,1.9428884611557018e-8,0.0011607066977102414,-8.264780100526713e-6,1.9302555692561575e-8,0.0011607835786356816,-8.156211653841857e-6,1.9239208531028127e-8,0.001160852303938451,-8.173672131833849e-6,1.9249082973678126e-8,0.0011609704050213417,-8.299502401002055e-6,1.9321670102197103e-8,0.0011611786600939425,-8.487524842860316e-6,1.942996472795716e-8,0.00116149085756971,-8.678548440956826e-6,1.9539526753642373e-8,0.0011618930476837161,-8.817263786054158e-6,1.961829467481908e-8,0.0011623502480845786,-8.865197369246996e-6,1.9644073624203352e-8,0.0011628170462849206,-8.807345064885849e-6,1.9608343243756524e-8,0.001163248772606246,-8.652436380407108e-6,1.9516370694754277e-8,0.0011636107636861521,-8.42810745764086e-6,1.9384372461534673e-8,0.0011638841503945102,-8.17290291549061e-6,1.9234838808357553e-8,0.0011640675332915647,-7.927309243105636e-6,1.9091306227406572e-8,0.001164174910574985,-7.725934562782125e-6,1.897381570422459e-8,0.0011642310911780206,-7.592301438636944e-6,1.8895911963434465e-8,0.001164266183153776,-7.536686249750781e-6,1.8863426101585725e-8,0.0011643105098843333,-7.556534996681924e-6,1.8874751833990127e-8,0.0011643907219274397,-7.638508383357229e-6,1.892205030520054e-8,0.0011645272144765674,-7.761166811425134e-6,1.8992807601442906e-8,0.0011647324707863098,-7.897651936164617e-6,1.9071379900299287e-8,0.0011650098094900412,-8.018265814666975e-6,1.914048233352255e-8,0.0011653521888236509,-8.093307790327415e-6,1.9182839583695098e-8,0.001165741133615056,-8.096798948189496e-6,1.9183362843101123e-8,0.0011661465394286383,-8.01169930545659e-6,1.913219846759754e-8,0.0011665289267256526,-7.836536321099879e-6,1.9028592765835697e-8,0.0011668460658409007,-7.591725078170206e-6,1.8884569456476698e-8,0.0011670647742319771,-7.321672629410377e-6,1.872613603007408e-8,0.0011671752536712213,-7.087778965397692e-6,1.8589162929747138e-8,0.0011672007945532352,-6.950506281680236e-6,1.8508875117680157e-8,0.0011671946165852476,-6.946270276537636e-6,1.8506350208028936e-8,0.0011672219724961402,-7.071417197234697e-6,1.8579216055933185e-8,0.0011673358746302342,-7.283275108892446e-6,1.8702356985605753e-8,0.0011675594159570796,-7.517413113909867e-6,1.8838061377010595e-8,0.0011678822015231747,-7.710561368063675e-6,1.8949420655493054e-8,0.0011682689261397071,-7.818135372925264e-6,1.9010538692202126e-8,0.0011686730493583339,-7.821696462300443e-6,1.90108499425854e-8,0.0011690494583318888,-7.727720962976632e-6,1.8954353489254236e-8,0.0011693632444199163,-7.56134032774171e-6,1.885590552632025e-8,0.00116959424227111,-7.358324729191973e-6,1.8736493783482777e-8,0.0011697381322427927,-7.157289319737172e-6,1.861866602390422e-8,0.001169805015940991,-6.993028321525914e-6,1.852264983791331e-8,0.0011698161546601542,-6.891491872816817e-6,1.8463458014440653e-8,0.0011697995747586565,-6.866806023143072e-6,1.8449195474681566e-8,0.001169785345145261,-6.9204124414224666e-6,1.8480593608555368e-8,0.0011698012390084927,-7.0420511084665356e-6,1.8551596753815423e-8,0.0011698692959780039,-7.212115770190638e-6,1.865072612237821e-8,0.001170003535115469,-7.40476340602822e-6,1.876287162320732e-8,0.0011702087001298016,-7.591191261412983e-6,1.887118665962335e-8,0.001170479701385697,-7.742851069545861e-6,1.895896527939579e-8,0.0011708015200401624,-7.834746251544546e-6,1.9011588216858993e-8,0.0011711496211634048,-7.849130822009977e-6,1.9018713426567524e-8,0.0011714913924403504,-7.779910197998646e-6,1.8976869060788222e-8,0.0011717897544849946,-7.637523831636095e-6,1.889230519205385e-8,0.001172010309956273,-7.452738502943907e-6,1.8783182601489195e-8,0.0011721323598993924,-7.275994332800178e-6,1.867913794942048e-8,0.0011721611281580594,-7.168155593634209e-6,1.861581265298405e-8,0.0011721343191450696,-7.1813051484193844e-6,1.862357539268324e-8,0.0011721149049607846,-7.335813716215587e-6,1.87141217167984e-8,0.001172168800567516,-7.607145133330706e-6,1.8872833135365767e-8,0.0011723380208572738,-7.933227173421569e-6,1.9063184028057393e-8,0.0011726252496139771,-8.239481077610759e-6,1.924143891636807e-8,0.0011729975280554965,-8.466260519538257e-6,1.9372719916227837e-8,0.0011734031858778484,-8.584501548552111e-6,1.944016181411194e-8,0.001173790302185874,-8.596454295920204e-6,1.944531693494591e-8,0.0011741190787508823,-8.527161410478187e-6,1.9403109104349883e-8,0.0011743669348481497,-8.413502697600549e-6,1.933534155711618e-8,0.0011745284115409797,-8.294793736602777e-6,1.9265131227668844e-8,0.0011746124079364151,-8.206190261184355e-6,1.9213032276832187e-8,0.0011746385065752375,-8.174556373859033e-6,1.9194649111671876e-8,0.0011746330915234392,-8.216052103381338e-6,1.9219279634408336e-8,0.0011746253880197785,-8.335082109550146e-6,1.9289350289034145e-8,0.0011746435809791025,-8.524542340119898e-6,1.9400586230916127e-8,0.0011747112692470335,-8.767280557710057e-6,1.954286430798587e-8,0.0011748445359639791,-9.03865596643075e-6,1.9701692857538592e-8,0.0011750499632298852,-9.309966660718363e-6,1.9860201817912727e-8,0.001175323799399941,-9.552298843262974e-6,2.0001396821218872e-8,0.00117565222379474,-9.740381416028808e-6,2.0110439466007515e-8,0.0011760125740055314,-9.856258828588306e-6,2.0176834214821782e-8,0.001176375524771259,-9.89270749701017e-6,2.0196458357561633e-8,0.0011767084198622795,-9.856295447680713e-6,2.0173355725141192e-8,0.0011769802534832457,-9.769680052766479e-6,2.0121046365166935e-8,0.001177168799588408,-9.671871258832764e-6,2.0062613323586582e-8,0.0011772694476469777,-9.6141384720008e-6,2.002822704058926e-8,0.0011773031276615976,-9.649130357389883e-6,2.004871269724044e-8,0.001177317927990144,-9.813195811093411e-6,2.0145182911243707e-8,0.0011773784774201084,-1.0107742086366462e-5,2.031816622647421e-8,0.0011775429199502576,-1.0491244705205072e-5,2.054301185498362e-8,0.001177837880102486,-1.0891186429975976e-5,2.077695811502661e-8,0.0011782469508336748,-1.1232228758863288e-5,2.0975685618500445e-8,0.0011787199252995327,-1.1464270048217633e-5,2.1109807093236463e-8,0.001179195117857407,-1.1575096317836384e-5,2.1172327792887724e-8,0.0011796204060343677,-1.1585333083324484e-5,2.117567378298927e-8,0.001179964253721622,-1.153426084540048e-5,2.1143276835969646e-8,0.001180216947487361,-1.1465789942356163e-5,2.1101215758474892e-8,0.0011803864077251783,-1.1418915216628996e-5,2.107252293342305e-8,0.0011804924552570766,-1.1422849945557147e-5,2.1074313204903283e-8,0.0011805616351961057,-1.149534972563153e-5,2.111684828473406e-8,0.0011806231296561194,-1.164260838042896e-5,2.1203547272920038e-8,0.001180705405349917,-1.185983590457733e-5,2.133138289587363e-8,0.0011808332022572984,-1.2132380829244001e-5,2.1491566451183692e-8,0.0011810247593277404,-1.2437538534793616e-5,2.1670609888946692e-8,0.00118128939658047,-1.2747235945817167e-5,2.1851893747692842e-8,0.0011816258296817952,-1.3031688632184382e-5,2.2017816721285344e-8,0.0011820217409164156,-1.3263766786722557e-5,2.215238102483769e-8,0.0011824549343442512,-1.3423476824073942e-5,2.224386173036045e-8,0.0011828960923008392,-1.3501908143475178e-5,2.228715845248425e-8,0.0011833129578829248,-1.3504032616951642e-5,2.2285447254115404e-8,0.0011836756314048944,-1.3449812928952117e-5,2.2250794275112108e-8,0.001183962592413837,-1.3373153848677134e-5,2.2203458812617827e-8,0.0011841669322909438,-1.3318065327970467e-5,2.2169537514422055e-8,0.0011843016926503368,-1.3331175884827947e-5,2.2176482373441217e-8,0.0011844020642103072,-1.3450260247773386e-5,2.2246332098472546e-8,0.001184521202676278,-1.3690428025695983e-5,2.2387640451217336e-8,0.0011847171293863903,-1.4032994909381187e-5,2.2589027933433944e-8,0.001185032463777717,-1.4424743371322873e-5,2.281883562996951e-8,0.0011854755677246913,-1.4792794984495582e-5,2.3033918419938312e-8,0.0011860147396502052,-1.507088024578483e-5,2.319513060443558e-8,0.0011865905179456926,-1.5223319477673633e-5,2.328150001628114e-8,0.0011871389466646689,-1.5253718038456167e-5,2.3295410581307743e-8,0.0011876123061146714,-1.519648813755946e-5,2.3257586969311357e-8,0.0011879885113928858,-1.5099845661934605e-5,2.3196940123018956e-8,0.0011882695341677578,-1.501035144178206e-5,2.31412842396481e-8,0.0011884742356245803,-1.4963788315746421e-5,2.3111852364620775e-8,0.001188630530564791,-1.4982034546106686e-5,2.3121452402727265e-8,0.0011887692807419578,-1.507353292827563e-5,2.3174817880824452e-8,0.0011889202463939105,-1.5235106883747588e-5,2.3269772227890994e-8,0.0011891093972103773,-1.5453904219857056e-5,2.3398442893928934e-8,0.001189356787492648,-1.5709243646093957e-5,2.3548380493865156e-8,0.001189674562434833,-1.597465760311393e-5,2.3703767108688843e-8,0.0011900650705906138,-1.622059546320253e-5,2.3847010207390837e-8,0.0011905194959919482,-1.641817450904896e-5,2.396096721453941e-8,0.0011910177895063875,-1.6543919681829082e-5,2.403177226492937e-8,0.0011915306556030559,-1.6584788766736868e-5,2.4051839818261955e-8,0.001192023898945927,-1.6542298384545826e-5,2.4022324070467803e-8,0.001192464757553144,-1.643440146715635e-5,2.3954211093486313e-8,0.001192829119799411,-1.629404609753833e-5,2.3867395750016865e-8,0.001193108027212104,-1.6164104458207515e-5,2.3787569044241983e-8,0.0011933118430555575,-1.608921071912973e-5,2.3741272731391792e-8,0.0011934707320330146,-1.6105658509481013e-5,2.374985781205688e-8,0.0011936303976635173,-1.623111932778949e-5,2.3823425330801796e-8,0.0011938425904213918,-1.6456797947603263e-5,2.3956291913805633e-8,0.0011941512693824246,-1.6745405678767475e-5,2.4125926378533872e-8,0.0011945777513011316,-1.703806116613979e-5,2.4297131106293858e-8,0.0011951108176325653,-1.7270552184130284e-5,2.4431706269672658e-8,0.0011957078826386161,-1.7394145331375484e-5,2.4500786304503858e-8,0.001196308651953773,-1.7391670563142902e-5,2.4494397478295562e-8,0.0011968553574094527,-1.7280885870127336e-5,2.442346637634852e-8,0.0011973097438809756,-1.7104486121415902e-5,2.4313830319614202e-8,0.0011976600271846305,-1.6913544964189015e-5,2.4196263777647027e-8,0.0011979178287977973,-1.6752823815132273e-5,2.4097605696463648e-8,0.0011981097707620147,-1.6652578579863055e-5,2.4035827004151324e-8,0.0011982686801686477,-1.6626751066110573e-5,2.401899572758425e-8,0.0011984270612510747,-1.6674980003615707e-5,2.4046572026728495e-8,0.0011986131998672476,-1.6785856209140574e-5,2.411144126081378e-8,0.00119884907936858,-1.6939967517406705e-5,2.4201781684558578e-8,0.0011991490988296598,-1.7112385016964997e-5,2.430255743190104e-8,0.0011995189044720176,-1.727490968716899e-5,2.4396846663078468e-8,0.0011999541434850292,-1.73987053704685e-5,2.446740213138539e-8,0.0012004395264967585,-1.7457927525291007e-5,2.4498820966803372E-08,0.0012009491082435547,-1.743451264755266e-5,2.4480422287605266e-8,0.001201448900782843,-1.7323465817622007e-5,2.4409425154034857e-8,0.0012019025457898729,-1.713703206787251e-5,2.429344400128628e-8,0.0012022796375072394,-1.6905527800039264e-5,2.415095110327444e-8,0.001202564674709609,-1.66730256383639e-5,2.4008615527302114e-8,0.0012027634568679232,-1.6487847620334767e-5,2.3895505198766226e-8,0.001202904030611828,-1.6390163394670685e-5,2.3835574955575874e-8,0.0012030311028923925,-1.6400516224166192e-5,2.384078723594285e-8,0.0012031951747230444,-1.6513004713512284e-5,2.390712060734509e-8,0.001203439368777117,-1.6695385826531313e-5,2.4014786720648956e-8,0.0012037875416534632,-1.6896357132806125e-5,2.413273573212916e-8,0.0012042369997383238,-1.7058417430140396e-5,2.422642990299439e-8,0.001204758270153749,-1.7133153462624448e-5,2.42669920335499e-8,0.0012053027296240449,-1.7094557087145528e-5,2.4239131779032624e-8,0.001205816243419089,-1.694576087819249e-5,2.414512189749825e-8,0.001206254208107606,-1.671652593603102e-5,2.4003224447649546e-8,0.0012065924774887938,-1.6452686017868706e-5,2.3841274764580573e-8,0.0012068306855210508,-1.6202252980745935e-5,2.3688257288772364e-8,0.0012069882451567506,-1.6003642610002783e-5,2.3567193058502826e-8,0.0012070962548821874,-1.5879317737007825e-5,2.3491350212189728e-8,0.0012071891126864752,-1.5834987172204415e-5,2.3463848234982794e-8,0.0012072982435586271,-1.5862395994595704e-5,2.3479429419473134E-08,0.0012074484919681056,-1.5943390285158226e-5,2.3526960795175952e-8,0.0012076565349967772,-1.6053727644420263e-5,2.3591735054261115e-8,0.0012079303224518817,-1.6166109640853678e-5,2.3657270713232458e-8,0.0012082687433021958,-1.625265566416613e-5,2.370677465035961e-8,0.0012086611896754904,-1.6287448494366172e-5,2.372466631141001e-8,0.0012090872917999832,-1.6249836702848495e-5,2.3698580523446967e-8,0.0012095176855486077,-1.6128815528154758e-5,2.3622028928013453e-8,0.0012099170613362122,-1.592798579392285e-5,2.349739986274672e-8,0.0012102505659388227,-1.566936060894537e-5,2.3338237567455915e-8,0.0012104933479661164,-1.5393153749585413e-5,2.316906420901978e-8,0.0012106406191476266,-1.5150881099106516e-5,2.302113572545944e-8,0.001210713427762985,-1.4991745019339821e-5,2.2924136337323242e-8,0.0012107557250189674,-1.4946543294335746e-5,2.2896419733099684e-8,0.0012108221716802248,-1.5016161651831003e-5,2.293810304377412e-8,0.0012109612315525406,-1.5170264902251345e-5,2.3030401775421017e-8,0.0012112005956738774,-1.535671009607627e-5,2.3141465559964834e-8,0.0012115402123723076,-1.551722648703216e-5,2.3235958218962858e-8,0.0012119541203185218,-1.5603217342101987e-5,2.32846361790215e-8,0.0012123989690091418,-1.558704649773601e-5,2.32711262155396e-8,0.0012128258188160085,-1.546672637976945e-5,2.3194667025593706e-8,0.0012131919055231588,-1.526397476343263e-5,2.306882035076686e-8,0.001213469672752588,-1.5016981076206275e-5,2.2916988632259907e-8,0.0012136512717100716,-1.4770193242323362e-5,2.2766165374691033e-8,0.0012137479589100495,-1.4563974629347552e-5,2.2640665341646183e-8,0.0012137852603573004,-1.4426773355970368e-5,2.255743926778347e-8,0.0012137959093788662,-1.4371343522844578e-5,2.2523883713028728e-8,0.0012138128365966673,-1.439499826481813e-5,2.2538091856692798e-8,0.0012138638400819995,-1.4482668698853964e-5,2.2590762305896745e-8,0.0012139685086682349,-1.4611158244269921e-5,2.2667775734842887e-8,0.0012141370773553156,-1.4753294457875256e-5,2.2752669276880412e-8,0.0012143704447298367,-1.4881339284913565e-5,2.2828655628043122e-8,0.0012146606157735983,-1.4969696583580246e-5,2.2880242761076628e-8,0.0012149911979015464,-1.499739616837105e-5,2.2894754107216863e-8,0.001215338074413792,-1.495094088433912e-5,2.286409075695815e-8,0.0012156709220629822,-1.4827860365214653e-5,2.278691472150337e-8,0.0012159566967008494,-1.4640607873998432e-5,2.2671006872583375e-8,0.0012161661678526474,-1.4419214392042551e-5,2.253482998176492e-8,0.0012162834218881762,-1.4209794962010202e-5,2.2406545421342624e-8,0.001216315642396274,-1.4065845309811994e-5,2.2318651755283653e-8,0.0012162975273846636,-1.4032046896515793e-5,2.229810801795348e-8,0.001216284646636957,-1.412603160851158e-5,2.2355282871068613e-8,0.0012163354726003424,-1.4328040488737538e-5,2.2477767363016963e-8,0.0012164899159747096,-1.4585949126754397e-5,2.263355123417095e-8,0.001216755574130199,-1.4833892797710722e-5,2.278243853374842e-8,0.0012171078245810246,-1.5014490026863692e-5,2.2889603737556964e-8,0.001217501208749591,-1.5094377647005056e-5,2.2935034657986378e-8,0.0012178847630020077,-1.5068934395509631e-5,2.2916347417685273e-8,0.0012182150285436164,-1.4958137548021152e-5,2.2846155074825506e-8,0.0012184640069405344,-1.4797783644600629e-5,2.2746590779909395e-8,0.0012186220505673322,-1.4629683731770791e-5,2.2643235920746163e-8,0.001218696822913379,-1.449297270290909e-5,2.2559801522444672e-8,0.0012187095811834294,-1.4417539138099393e-5,2.2514186857630122e-8,0.0012186898663968694,-1.4420061297596525e-5,2.2516180023635898e-8,0.0012186696633395672,-1.4502833252156467e-5,2.2566860603567102e-8,0.0012186780735641304,-1.4655108434294776e-5,2.2659490899290508e-8,0.0012187372918174148,-1.4856253456001961e-5,2.2781443114298367e-8,0.001218860273629298,-1.5079824490775369e-5,2.2916635639418696e-8,0.0012190500435946263,-1.5297700051893458e-5,2.3047988343221898e-8,0.001219300200263371,-1.548365519236493e-5,2.3159560794279936e-8,0.0012195960618367548,-1.5616237415079354e-5,2.3238309613797606e-8,0.0012199161265676276,-1.568118550987916e-5,2.3275603178996437e-8,0.0012202338545077081,-1.567373100870673e-5,2.326866879195279e-8,0.0012205201561264112,-1.560100091808706e-5,2.3222067337371707e-8,0.001220747382989795,-1.5484226141098953e-5,2.3148995007320677e-8,0.0012208955835540899,-1.535941411892994e-5,2.3071605072069785e-8,0.0012209607427107806,-1.5274050539459638e-5,2.3018902382756045e-8,0.001220962475274646,-1.5277280997782236e-5,2.3020705792687032e-8,0.0012209458731045407,-1.5403436960660497e-5,2.309762894932575e-8,0.0012209717976255354,-1.565448470536381e-5,2.3250476497938733e-8,0.0012210955463632595,-1.5992317511104423e-5,2.345566341649283e-8,0.0012213435678971353,-1.634934524496698e-5,2.367175263118225e-8,0.0012217022640911984,-1.6653999885394203e-5,2.3855040758167472e-8,0.0012221254162641652,-1.685673242853055e-5,2.397543609100118e-8,0.0012225539172616843,-1.694295513018085e-5,2.4024369111537456e-8,0.0012229355612905532,-1.6930207344080828e-5,2.4013018459709848e-8,0.0012232368258948774,-1.6856088422204816e-5,2.3964815471614588e-8,0.001223445818883135,-1.6764870074623695e-5,2.3907108196114857e-8,0.0012235694616662836,-1.66972195773145e-5,2.3864781052871904e-8,0.0012236282176459417,-1.668400111843338e-5,2.3856473140188308e-8,0.0012236504409797394,-1.6743379709783217e-5,2.3892909894168513e-8,0.0012236671763620997,-1.6880175503808295e-5,2.3976645895061022e-8,0.001223707624433692,-1.708683221483701e-5,2.4102766441136323e-8,0.0012237954317209335,-1.734565340062886e-5,2.426029685357651e-8,0.0012239459921608604,-1.7631973134540477e-5,2.4434117926847972e-8,0.0012241649213519893,-1.791791608308859e-5,2.4607207076905056e-8,0.0012244478183697678,-1.817632574317451e-5,2.476299133590999e-8,0.0012247812244358886,-1.838435464330882e-5,2.4887533086232756e-8,0.0012251444556581857,-1.8526399189167512e-5,2.4971356499031972e-8,0.001225512030680893,-1.8596356874691012e-5,2.5010875116620252e-8,0.0012258566090267735,-1.8599249204608337e-5,2.500940666446154e-8,0.0012261525206215848,-1.8552184327634754e-5,2.4977727871947743e-8,0.0012263801754533244,-1.8484389126531722e-5,2.4934001023126065e-8,0.001226531589440995,-1.8435353897332787e-5,2.4902521731442044e-8,0.0012266163824655456,-1.844942436845583e-5,2.4910327037782435e-8,0.0012266658987470957,-1.8565429063659797e-5,2.498085133256966e-8,0.0012267312754294553,-1.880207278591228e-5,2.5125090674904964e-8,0.0012268713258371598,-1.914430998630717e-5,2.533341535608457e-8,0.001227131022819862,-1.954022969406463e-5,2.557377342250434e-8,0.0012275202373195173,-1.991570456003484e-5,2.5800673545950185e-8,0.0012280066605481112,-2.0202550073462475e-5,2.5972399157529153e-8,0.0012285289260753722,-2.036442274620531e-5,2.6066887113834473e-8,0.0012290215337736447,-2.0405843598096857e-5,2.608730247250189e-8,0.0012294364792536673,-2.0362831684957532e-5,2.605626237353159e-8,0.0012297525480403702,-2.0285001528169813e-5,2.600470001447718e-8,0.001229973287643303,-2.0219675206655426e-5,2.596192790923771e-8,0.00123011945294299,-2.0202577079814657e-5,2.5949829286862887e-8,0.0012302208090147814,-2.0254570927893388e-5,2.598089556577197e-8,0.001230309575850642,-2.0382079862008366e-5,2.6058620701201978e-8,0.0012304158345859968,-2.0579100696291248e-5,2.6178889594627654e-8,0.0012305643517482184,-2.0829746668818747e-5,2.6331638580619262e-8,0.0012307723235892732,-2.1111062515209374e-5,2.6502607204116547e-8,0.0012310478548748765,-2.1396114777007075e-5,2.6675202086625746e-8,0.0012313891899758615,-2.1657391046044656e-5,2.6832534064826254e-8,0.0012317848985939483,-2.187044513583133e-5,2.6959629716658373e-8,0.001232215249623264,-2.2017430944470345e-5,2.7045614719736176e-8,0.0012326547447966258,-2.209001773221379e-5,2.7085542859440893e-8,0.0012330755592392312,-2.2091326924775106e-5,2.70816135899996e-8,0.0012334516279752959,-2.203663011034868e-5,2.7043580150642033e-8,0.001233763101802164,-2.1952544155669515e-5,2.6988170698065287e-8,0.001234000846053606,-2.1874499915341305e-5,2.6937404354593894e-8,0.0012341705639102628,-2.184212653370876e-5,2.691563704449534e-8,0.0012342956223987628,-2.1891979650956894e-5,2.6945050302677308e-8,0.001234416688585595,-2.2047557895417835e-5,2.7039585964648845e-8,0.0012345855888722889,-2.23083766412273e-5,2.719839449139654e-8,0.0012348517249173988,-2.2642708147870215e-5,2.7401545144008608e-8,0.0012352433616983397,-2.2990593392258627e-5,2.7611962377998624e-8,0.0012357521897338616,-2.328103233247334e-5,2.778596961972363e-8,0.0012363319390749912,-2.3458241076732956e-5,2.7889391237730747e-8,0.001236914832205126,-2.3503051358274284e-5,2.7910738893106944e-8,0.0012374372602634584,-2.34370143285074e-5,2.7863779646029196e-8,0.0012378600978094599,-2.3308844078715344e-5,2.7779123129400366e-8,0.001238175025995959,-2.3173834169043024e-5,2.7691345091404345e-8,0.0012383987375117022,-2.3077516654817154e-5,2.7628715793488518e-8,0.0012385621901050622,-2.304804267920002e-5,2.7608434146434345e-8,0.001238700730871274,-2.3095701387628564e-5,2.7636418998067664e-8,0.0012388473917175444,-2.321606101218933e-5,2.7709418024290113e-8,0.0012390291726658905,-2.339397590953754e-5,2.781763697063455e-8,0.001239265187271221,-2.3607198404592336e-5,2.7947049692492793e-8,0.0012395656932513142,-2.3829477290720274e-5,2.808131142382676e-8,0.001239931567574002,-2.4033454791804963e-5,2.8203502070202986e-8,0.001240354197034772,-2.419368952870141e-5,2.8297948187087624e-8,0.0012408160639877112,-2.4289979933212816e-5,2.835226322126063e-8,0.0012412924936616241,-2.431076507997636e-5,2.835947104322042e-8,0.001241754847581157,-2.4255949556786933e-5,2.8319783468064274e-8,0.0012421750027906508,-2.413837942889537e-5,2.8241514856497743e-8,0.0012425305735050856,-2.398330917104594e-5,2.8140695039591662e-8,0.001242810041407821,-2.3825431793646963e-5,2.803911624686781e-8,0.0012430167548026835,-2.3703494765039817e-5,2.796086702784852e-8,0.0012431707595330977,-2.3653019187846447e-5,2.792773776976358e-8,0.0012433075282853305,-2.3697965910599013e-5,2.7954078812129726e-8,0.0012434727173970845,-2.3842679769997022e-5,2.8041949740427052e-8,0.001243712463212426,-2.4066405760676784e-5,2.8177927469785303e-8,0.0012440601035040232,-2.432362427984792e-5,2.8333484399655164e-8,0.0012445228361571915,-2.4553159928907133e-5,2.84706844897476e-8,0.001245074558848186,-2.469598742631698e-5,2.8553156726817562e-8,0.0012456608862963842,-2.4715959349908565e-5,2.8558858281151512e-8,0.001246216708050109,-2.4613291013679496e-5,2.8488399775580813e-8,0.001246688489499405,-2.4423038202625592e-5,2.8364074640010765e-8,0.0012470500759516796,-2.4199802086790886e-5,2.8220269933140577e-8,0.0012473056186578205,-2.3997923243581362e-5,2.8091007067191165e-8,0.0012474816718979766,-2.3856832628854112e-5,2.8000725693752732e-8,0.0012476152297567857,-2.3795467178827526e-5,2.796083255759579e-8,0.0012477434727424471,-2.3813936544781482e-5,2.797087896365848e-8,0.0012478974825907967,-2.3898538079999737e-5,2.802185450423327e-8,0.0012480994715242364,-2.4027063105389873e-5,2.8099607177080368e-8,0.0012483620860405254,-2.4173063448967265e-5,2.8187527217003586e-8,0.0012486885425988454,-2.4309038643380227e-5,2.8268487756534477e-8,0.0012490729604937483,-2.4409048929309893e-5,2.832640747738927e-8,0.0012495008229754566,-2.4451320673572244e-5,2.8347832218140762e-8,0.0012499499393055541,-2.442119484453209e-5,2.8323772418069707e-8,0.0012503925365264328,-2.4314275664468087e-5,2.8251695604431464e-8,0.0012507990005257714,-2.4139030867608762e-5,2.8137171704645568e-8,0.001251143262636996,-2.391768914256767e-5,2.7994415164953935e-8,0.0012514090363835088,-2.368426701735876e-5,2.7844976389814205e-8,0.0012515953110546903,-2.3479107716070564e-5,2.771421375274228e-8,0.0012517191350728285,-2.3340474530020665e-5,2.7625933544735366e-8,0.0012518141482856812,-2.3295030625602135e-5,2.7596407518891168e-8,0.00125192444142756,-2.334975383124914e-5,2.7629401271552236e-8,0.0012520946514939732,-2.348776438369355e-5,2.7713746828686006e-8,0.0012523583631477433,-2.3669877510084097e-5,2.7824516476769492e-8,0.0012527277286170939,-2.38425421336231e-5,2.7928118057615044e-8,0.0012531876409788102,-2.3951178423680048e-5,2.7990642199443437e-8,0.0012536974445180235,-2.395580939174183e-5,2.7987543221912417e-8,0.0012542012794675764,-2.3843814405731823e-5,2.7911488512020674e-8,0.0012546444912580575,-2.3634230998913443e-5,2.7774939914552914e-8,0.0012549898708866338,-2.337098949679818e-5,2.760582318235473e-8,0.0012552269467497428,-2.31078977299701e-5,2.7438033142794907e-8,0.0012553712247767674,-2.2892283909759187e-5,2.730112602560997e-8,0.001255455539610628,-2.2753872111695107e-5,2.7213370434487382e-8,0.0012555187275849952,-2.2701515499694785e-5,2.7179817449245153e-8,0.0012555962675502516,-2.2726235663317327e-5,2.719436714414756e-8,0.0012557148843836085,-2.280713457832666e-5,2.724360162183075e-8,0.001255890687072248,-2.2917285638186973e-5,2.7310518757386415e-8,0.001256129398595488,-2.3028282424195017e-5,2.7377340966423323e-8,0.0012564273842037858,-2.3113398094334926e-5,2.742741470506988e-8,0.001256772748129926,-2.3149894992070267e-5,2.7446594516070987e-8,0.0012571463545275083,-2.3121157899020574e-5,2.7424565261140528e-8,0.0012575231640768645,-2.3019131476612913e-5,2.7356401669610725e-8,0.001257874612111306,-2.284700440575688e-5,2.7244296214391676e-8,0.0012581727000068063,-2.2621361371800596e-5,2.7098925268443296e-8,0.0012583959412701018,-2.2372382207858894e-5,2.6939533510837228e-8,0.0012585362273141267,-2.2140433227805133e-5,2.6791698499354605e-8,0.0012586042852673735,-2.196814660205169e-5,2.6682241581275458e-8,0.0012586306549829782,-2.1889126806689826e-5,2.6632055608261722e-8,0.0012586601311620252,-2.1916855981065547e-5,2.664914718129419e-8,0.0012587403517282045,-2.2038399148444123e-5,2.672480002912566e-8,0.0012589081308858302,-2.2216070066749486e-5,2.6834805998698666e-8,0.001259178401966701,-2.2397001174915816e-5,2.6945651229235044e-8,0.0012595395662738137,-2.2527436600423014e-5,2.7023591961309044e-8,0.0012599565073977735,-2.2567114697326255e-5,2.704368259177285e-8,0.0012603800277351954,-2.249955563699239e-5,2.6996141762203254e-8,0.0012607598300570521,-2.2335587057110256e-5,2.6888416016816608e-8,0.0012610573544834757,-2.2109330675960614e-5,2.674249136516303e-8,0.0012612547690560867,-2.186800615213288e-5,2.6588343449294578e-8,0.0012613575758832708,-2.1658922356915117e-5,2.6455686208838244e-8,0.001261390591051946,-2.151793017938794e-5,2.6366737636690552e-8,0.00126138947197204,-2.146269522919313e-5,2.6332111564846554e-8,0.001261391218294045,-2.1491868003257122e-5,2.635046486548411e-8,0.0012614266428808319,-2.15888902989852e-5,2.641103229929555e-8,0.0012615162216082754,-2.1727952954471072e-5,2.6497431575663864e-8,0.0012616690635331466,-2.187983048108349e-5,2.6591299115901463e-8,0.0012618838439774989,-2.2016383972793845e-5,2.6675035116793972e-8,0.0012621505235054361,-2.2113585277586392e-5,2.6733624171416905e-8,0.0012624521180612978,-2.2153524616584108e-5,2.6755867859438524e-8,0.00126276632102878,-2.2126043067001626e-5,2.6735440962205498e-8,0.0012630672801498218,-2.2030481309721585e-5,2.6672051476437688e-8,0.0012633282001385453,-2.1877576094169603e-5,2.6572675677080794e-8,0.0012635254927225803,-2.1690821374928485e-5,2.6452399559931268e-8,0.0012636447200479173,-2.150581193844573e-5,2.6333924961939377e-8,0.0012636873694712005,-2.1365630790647973e-5,2.62445471842398e-8,0.001263675689203714,-2.1311092535360135e-5,2.6209908895091034e-8,0.001263651583389443,-2.1367352542053175e-5,2.624553285893486e-8,0.0012636669236140193,-2.1532112858698217e-5,2.6349454998586358e-8,0.0012637672086514252,-2.1772261625864342e-5,2.6500247615930587e-8,0.0012639754671761418,-2.2032532614826404e-5,2.666264158225693e-8,0.001264284192241647,-2.2253087100624153e-5,2.679874434506354e-8,0.0012646586664950854,-2.238799657886381e-5,2.687976398338216e-8,0.001265048952007261,-2.2417146448438736e-5,2.68935001124463e-8,0.0012654046375396352,-2.2348637976309602e-5,2.6845743928639548e-8,0.001265687166465729,-2.2213199967963506e-5,2.6756558234120423e-8,0.0012658770847539854,-2.205411237295862e-5,2.6653709859809845e-8,0.0012659757694239995,-2.1916095275190147e-5,2.6565519875628988e-8,0.0012660024992930466,-2.1835733466883678e-5,2.6514812194613012e-8,0.0012659883363219941,-2.183504682483079e-5,2.6514975770749016e-8,0.001265968564043513,-2.1918984668542527e-5,2.656857289282304e-8,0.0012659755016867593,-2.2076758125450218e-5,2.666835322071545e-8,0.0012660331867845541,-2.2286013655878877e-5,2.6799978389807436e-8,0.0012661546447266811,-2.2518299270481508e-5,2.6945459630868268e-8,0.0012663416011667139,-2.2744366594706175e-5,2.708642168120064e-8,0.0012665859156780787,-2.2938374403736194e-5,2.720666230998871e-8,0.0012668718340026004,-2.308069895407578e-5,2.729387607334129e-8,0.0012671783608418628,-2.315961813842999e-5,2.7340731279403066e-8,0.0012674815022603028,-2.3172399530941718e-5,2.734561490457562e-8,0.0012677565540440863,-2.3126206424985553e-5,2.7313258391016998e-8,0.0012679809078356128,-2.3038880813856224e-5,2.7255232108115096e-8,0.0012681379667225815,-2.293909764723427e-5,2.718996925380211e-8,0.001268222410981478,-2.2864607647463806e-5,2.714153350665855e-8,0.0012682458991817589,-2.285674137919671e-5,2.7136033101520892e-8,0.0012682404442877298,-2.294997743206441e-5,2.7194986348181077e-8,0.0012682552261359058,-2.3158135615329883e-5,2.732665258099185e-8,0.0012683438357439264,-2.3463184370203866e-5,2.751908579692521e-8,0.0012685445912806244,-2.381508922712379e-5,2.774017528295886e-8,0.0012688635218484556,-2.4146813037913072e-5,2.794723304902699e-8,0.0012692705636366676,-2.439852622614259e-5,2.8102383947438925e-8,0.0012697114811386142,-2.453808374801821e-5,2.818558432617654e-8,0.0012701278926337827,-2.456798692026666e-5,2.8199025785485304E-08,0.0012704747097447653,-2.451874191640579e-5,2.8162796580241977e-8,0.0012707290511519327,-2.4435369716645258e-5,2.8106093111468987e-8,0.00127089082105009,-2.4363968771578763e-5,2.8058468845464867e-8,0.0012709780445711418,-2.4341966719446985e-5,2.804354865594735e-8,0.0012710200656264432,-2.439279816146933e-5,2.8075722588673664e-8,0.001271050641705294,-2.4524258495752033e-5,2.8159296031538897e-8,0.0012711018882705825,-2.4729497552478398e-5,2.8289339641440367e-8,0.0012711994916664129,-2.4989923105568873e-5,2.8453680377103202e-8,0.0012713595362361608,-2.5279401250563086e-5,2.863560229913506e-8,0.0012715871496310693,-2.5568988582094783e-5,2.8816787886148046e-8,0.0012718768697763392,-2.5831442116825033e-5,2.898007870930307e-8,0.0012722144010838205,-2.6044933071783422e-5,2.911175618979125e-8,0.0012725792455093397,-2.619559555621507e-5,2.9203144635270495e-8,0.001272947626786604,-2.627888618297095e-5,2.9251514544716158e-8,0.0012732953571026233,-2.630006763486035e-5,2.9260441855358742e-8,0.0012736006475878774,-2.6274127894061375e-5,2.9239767557704245e-8,0.0012738470763975945,-2.6225193166156763e-5,2.9205161411702542e-8,0.0012740270157430664,-2.6185124088254545e-5,2.9177104177386633e-8,0.0012741455908807501,-2.6190414429344983e-5,2.9178785414269988e-8,0.001274224316427514,-2.62760887589678e-5,2.9232165679184445e-8,0.0012743020615554482,-2.646586880061536e-5,2.935178899471236e-8,0.001274429803943883,-2.6760187731966526e-5,2.9537333686976303e-8,0.0012746566213436674,-2.712756647179489e-5,2.976831346906732e-8,0.0012750096385508432,-2.7507546288788524e-5,3.0006033761210905e-8,0.0012754781610912526,-2.7829406560484464e-5,3.020548189174035e-8,0.001276013858158292,-2.8039650417442057e-5,3.033279425528792e-8,0.0012765492750488386,-2.812244159011328e-5,3.0378310890776146e-8,0.001277023642649741,-2.810137217333263e-5,3.035772861075833e-8,0.0012774012466509133,-2.802473521408781e-5,3.0302589247883327e-8,0.0012776758745853178,-2.7945890596938154e-5,3.024749497268067e-8,0.0012778647758220772,-2.79085430819153e-5,3.022048134829472e-8,0.001277998800793535,-2.793980262467159e-5,3.0238533240266736e-8,0.0012781132813501053,-2.804931557698271e-5,3.0307171318946226e-8,0.0012782413834105137,-2.8231718287190717e-5,3.042226138414893e-8,0.0012784098972853835,-2.8470294804898002e-5,3.0572571320992245e-8,0.0012786367518833218,-2.8740849073584766e-5,3.074235593251752e-8,0.0012789297433653374,-2.9015619036969142e-5,3.091384476109464e-8,0.0012792863683563302,-2.9267159831319898e-5,3.10696300382083e-8,0.0012796947422641365,-2.9471974501639326e-5,3.119488465856777e-8,0.0012801355484260517,-2.9613619515355336e-5,3.127929159311357e-8,0.0012805848824221722,-2.9684936207415627e-5,3.131847898599492e-8,0.001281017638662968,-2.968910490383866e-5,3.131473845451968e-8,0.0012814109964758992,-2.963950002011583e-5,3.1276957457645865e-8,0.0012817477332364437,-2.9558493616968298e-5,3.1219814796159154e-8,0.0012820192456920046,-2.9475284638605605e-5,3.116227933862801e-8,0.001282228197848576,-2.9422701983244574e-5,3.1125420021043346e-8,0.001282390606699797,-2.943268070189973e-5,3.112941115271035e-8,0.0012825366317504978,-2.9529907636028162e-5,3.118948519163852e-8,0.0012827084194776662,-2.9723676059624966e-5,3.131088059813362e-8,0.0012829528288665348,-2.9999700516418604e-5,3.1483844908667825e-8,0.0012833079130263225,-3.0316201547194518e-5,3.168132285335997e-8,0.0012837859765342673,-3.061020073146328e-5,3.1863018658290956e-8,0.0012843618450062628,-3.081684226297564e-5,3.198765635324121e-8,0.0012849765874220782,-3.089521995994752e-5,3.20294184946202e-8,0.0012855586318208988,-3.084588285428632e-5,3.1989175468429604e-8,0.0012860510837547415,-3.0708540178211655e-5,3.189304549666774e-8,0.001286429391721135,-3.054259065273131e-5,3.1779790208841204e-8,0.0012867022080911398,-3.0404062537684042e-5,3.1685762437681995e-8,0.001286900377279203,-3.0330777585708804e-5,3.163518182633183e-8,0.001287063300987379,-3.0338387143386424e-5,3.163759774986754e-8,0.001287228565364857,-3.042354922701865e-5,3.1690131287687944e-8,0.0012874261434639106,-3.056970632894269e-5,3.1781451277475414e-8,0.0012876761011276928,-3.075264889043229e-5,3.189554315979008e-8,0.001287988197340863,-3.094489886686548e-5,3.201458498978887e-8,0.0012883622633117567,-3.111913753711612e-5,3.2121090216733314e-8,0.0012887890246263095,-3.125116421789353e-5,3.219969606469643e-8,0.0012892514436496775,-3.1322610080414284e-5,3.223881626240157e-8,0.0012897267572810904,-3.132337450102907e-5,3.223217751474067e-8,0.0012901893827250341,-3.125348366035541e-5,3.2180042784654345e-8,0.0012906146194111945,-3.1123848609875844e-5,3.208974051574626e-8,0.0012909826969805158,-3.0955505293186115e-5,3.197517438868874e-8,0.0012912825565626971,-3.0777215881050795e-5,3.185520292845642e-8,0.0012915147687625943,-3.0621540642874033e-5,3.175097395022615e-8,0.001291693035842951,-3.0519716537336427E-05,3.168249183610786e-8,0.0012918438362249742,-3.0495841413462402e-5,3.1664819795655e-8,0.0012920037928547566,-3.056087693364674e-5,3.1704304670211076e-8,0.0012922141715474165,-3.0707282053063105e-5,3.17953364867465e-8,0.001292512034520009,-3.090599709338316e-5,3.1918661500173786e-8,0.0012929187002381516,-3.110850773894603e-5,3.2042880122178096e-8,0.0012934285950733568,-3.1256693423193994e-5,3.213078673276235e-8,0.0012940044453168913,-3.1300498297250774e-5,3.215061328521406e-8,0.001294584877820033,-3.12176444133966e-5,3.20885883560331e-8,0.001295104589766634,-3.102462475607171e-5,3.195596529494129e-8,0.0012955179603695564,-3.077085167751126e-5,3.178521309227125e-8,0.0012958131840410975,-3.0518540566581096e-5,3.1616916955709714e-8,0.0012960105999187787,-3.032026641965267e-5,3.148511085415194e-8,0.0012961495978159076,-3.0205433323736027e-5,3.140845109678617e-8,0.0012962734470908504,-3.0178565979806494e-5,3.1389212768773746e-8,0.0012964186126221632,-3.022527856628844e-5,3.141738252834504e-8,0.0012966099467786687,-3.032037295760454e-5,3.1476126820308665e-8,0.0012968600751613467,-3.043465498738407e-5,3.154631955101938e-8,0.0012971707339509185,-3.0539529403013107e-5,3.160949484610287e-8,0.0012975345391934867,-3.0609886172662965e-5,3.164960498486348e-8,0.0012979366525891216,-3.062613758462698e-5,3.1654217987039235e-8,0.0012983564533401342,-3.057599296156603e-5,3.1615600298714555e-8,0.0012987695840761062,-3.0456167864014533e-5,3.1531828857941956e-8,0.0012991507884455799,-3.027379091331488e-5,3.140775068646107e-8,0.0012994777236449333,-3.004683999448522e-5,3.125530194558217e-8,0.0012997353921117309,-2.9802813505353085e-5,3.1092622133109445e-8,0.0012999202861004046,-2.9575139003558806e-5,3.09416264273142e-8,0.0013000430270444395,-2.93974130243819e-5,3.0824133092212875e-8,0.001300128331498118,-2.9296350396882437e-5,3.075718715872455e-8,0.0013002116679433546,-2.928500804947685e-5,3.074866956412388e-8,0.0013003328193243616,-2.935801434543197e-5,3.0794343521651624e-8,0.001300527308605543,-2.9490231267340253e-5,3.0877225135393917e-8,0.0013008171756119307,-2.9639869058835446e-5,3.0969838317194383e-8,0.0013012031591031939,-2.9756515314625574e-5,3.10395465251122e-8,0.0013016609455879465,-2.9793446563434323e-5,3.105650235031395e-8,0.0013021442562541905,-2.972172931898944e-5,3.100263591424007e-8,0.0013025961177511457,-2.9541337275106654e-5,3.087867894617946e-8,0.0013029660006317406,-2.9283509335878423e-5,3.0705543544897195e-8,0.0013032261586196996,-2.9001308736517474e-5,3.051808034793436e-8,0.0013033793833759004,-2.875164122635431e-5,3.035331118242153e-8,0.0013034547749617115,-2.8577237008618275e-5,3.023868954419752e-8,0.0013034950005774671,-2.8496554952853205e-5,3.018561791167246e-8,0.0013035422626375217,-2.8503927091162528e-5,3.018972942257647e-8,0.0013036286487182313,-2.8576659673191224e-5,3.023572044825167e-8,0.0013037723920898197,-2.8683998777921855e-5,3.0303320007544866e-8,0.0013039784710675347,-2.8794434907111588e-5,3.037204952208462e-8,0.0013042411712836108,-2.8880283437659195e-5,3.042410362765577e-8,0.0013045469059940415,-2.8920083977942182e-5,3.044577741719525e-8,0.0013048765892900785,-2.8899827777303695e-5,3.042817208710491e-8,0.0013052076096280716,-2.8813836177220682e-5,3.0367751697282956e-8,0.0013055158699504063,-2.8665686201342626e-5,3.026699500311816e-8,0.0013057784723598796,-2.8469027833693583e-5,3.0134989400730604e-8,0.0013059774012722158,-2.824758312302742e-5,2.998744624708401e-8,0.0013061039917527009,-2.803329661145913e-5,2.984543622349855e-8,0.0013061631500154798,-2.786174715368294e-5,2.973227959525612e-8,0.0013061755169066931,-2.7764752904717206e-5,2.966860348764004e-8,0.0013061756394885842,-2.7761595595907e-5,2.9666567318660748e-8,0.0013062052931786697,-2.785175086959786e-5,2.972518749832201e-8,0.001306303142538855,-2.801230059159129e-5,2.9828826603746476e-8,0.0013064938194895942,-2.820182285028999e-5,2.9949955265754234e-8,0.001306780086361943,-2.8370168467178228e-5,3.005571106771042e-8,0.0013071407644421912,-2.8471378373462444e-5,3.0116392578181026e-8,0.0013075352201250116,-2.8475996159682643e-5,3.011342304590286e-8,0.001307913334487316,-2.8379292346448963e-5,3.0044539506056616e-8,0.0013082284553436203,-2.820295608258615e-5,2.992467194139616e-8,0.001308449795111905,-2.798934380814309e-5,2.9781980996995586e-8,0.0013085703641908598,-2.7789555942438875e-5,2.9649940584985727e-8,0.0013086075992558702,-2.7649081856834136e-5,2.9557946510256037e-8,0.0013085965713823258,-2.7596068441511594e-5,2.9523765739778143e-8,0.001308578775603071,-2.763613069992761e-5,2.9550353019012925e-8,0.0013085910545795772,-2.7754483402330733e-5,2.9627464816654964e-8,0.0013086582864577261,-2.7923038311927625e-5,2.973644409629548e-8,0.00130879097813508,-2.810881146934206e-5,2.985573633256056e-8,0.0013089866559391336,-2.8280794299983097e-5,2.9965288371083946e-8,0.0013092330853364449,-2.841421177594859e-5,3.004918959647898e-8,0.0013095117218239086,-2.849249915857971e-5,3.00968495932514e-8,0.0013098006051115334,-2.8507901829533638e-5,3.010335322333937e-8,0.0013100766331532816,-2.8461574612671678e-5,3.006956699423517e-8,0.00131031764281404,-2.8363692896845595e-5,3.0002285569679514e-8,0.0013105049028917662,-2.823351948220192e-5,2.991431821194102e-8,0.0013106264457913824,-2.809877946612421e-5,2.9824048280105456e-8,0.001310681133427025,-2.7993271777071674e-5,2.9753766780009736e-8,0.0013106824426351005,-2.795161269268233e-5,2.972610709291234e-8,0.0013106598420135267,-2.8000824017845768e-5,2.975846481850516e-8,0.001310655166280242,-2.8150479328616627e-5,2.9856575254154354e-8,0.0013107127876955784,-2.8385509043680695e-5,3.000993471753322e-8,0.0013108657814568222,-2.866643869990418e-5,3.0192141079751784e-8,0.0013111236756196114,-2.8939129152693387e-5,3.036744088323199e-8,0.0013114677764056418,-2.915104009753794e-5,3.0501486920959236e-8,0.001311856492484787,-2.9267251923133067e-5,3.0571854184595145e-8,0.001312238049311916,-2.9279859822208612e-5,3.057411525864111e-8,0.0013125651169096678,-2.9208198159179714e-5,3.0521802359526976e-8,0.0013128064021552001,-2.909142250826646e-5,3.044129361786551e-8,0.0013129525886068233,-2.897698933927629e-5,3.0364030849243177e-8,0.001313016206816826,-2.890865807546817e-5,3.031854722956662e-8,0.001313026461668143,-2.8916887043806896e-5,3.0324238748257375e-8,0.0013130209243820167,-2.901349026915853e-5,3.0388075426164644e-8,0.0013130364508609068,-2.91912467162573e-5,3.050460897562148e-8,0.0013131016267059507,-2.9427863667728573e-5,3.0658773423636455e-8,0.00131323234339437,-2.9692576163541312e-5,3.0830280966021656e-8,0.0013134309224520154,-2.9953194080713292e-5,3.099817761610996e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json new file mode 100644 index 0000000000..d4e8a6f590 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":14000,"numberOfSamples":1000,"samples":[0.0013136880538731968,-3.0181825300251084e-5,3.1144455018197914e-8,0.0013139862307697747,-3.0358458604268804e-5,3.125626468859012e-8,0.0013143034381558063,-3.0472498704118995e-5,3.1326857923882795e-8,0.001314616342296335,-3.0522889122674205e-5,3.135568412117831e-8,0.0013149028238326915,-3.051757614543907e-5,3.134810730752583e-8,0.0013151441476950397,-3.0472812693602606e-5,3.1315005489895234e-8,0.001315327245423572,-3.041233669157899e-5,3.127221966442859e-8,0.0013154474985632677,-3.0365940022199845e-5,3.1239522569258994e-8,0.0013155119761371786,-3.0366482616605727e-5,3.123852579233063e-8,0.0013155421786821661,-3.044428590458291e-5,3.1288903751562086e-8,0.0013155741637083083,-3.061859253490029e-5,3.140279579367739e-8,0.0013156532826805987,-3.08878545724263e-5,3.15785553459714e-8,0.0013158221093964287,-3.122350814634265e-5,3.179684474210843e-8,0.0013161043666861684,-3.1573152017452694e-5,3.202287220092828e-8,0.001316492562279381,-3.187552478285449e-5,3.221630534507893e-8,0.0013169475071545026,-3.2081986318948946e-5,3.234541530079332e-8,0.0013174114482328236,-3.217362581767834e-5,3.2398333198900105e-8,0.0013178279759007432,-3.216549962188907e-5,3.238578137269618e-8,0.0013181587209702065,-3.209786877058771e-5,3.233512178519737e-8,0.0013183908584672483,-3.202101456924127e-5,3.2280078366949867e-8,0.0013185355723118594,-3.198087692229784e-5,3.22510415181099e-8,0.0013186210256550192,-3.200948903377424e-5,3.226871171627078e-8,0.001318683516304464,-3.212087078817048e-5,3.2341550899422565e-8,0.0013187592325329092,-3.2311333689063695e-5,3.246626921888799e-8,0.0013188777975085585,-3.256278527721231e-5,3.263027897225073e-8,0.0013190580943835157,-3.28478210560236e-5,3.281520552707126e-8,0.001319306537685271,-3.3135522599053245e-5,3.30007052286256e-8,0.0013196176305973269,-3.339691167788335e-5,3.3167938459672674e-8,0.0013199762931723731,-3.360923943949643e-5,3.330224076991175e-8,0.001320361240591444,-3.3758679883073964e-5,3.339478932604852e-8,0.0013207486407314094,-3.3841371491741154e-5,3.3443266039948134e-8,0.0013211154170834028,-3.3863122696377714e-5,3.345170814905867e-8,0.0013214419486963593,-3.3838325595684376e-5,3.342984862739796e-8,0.0013217143059939618,-3.3788485178276064e-5,3.3392152957732015e-8,0.0013219262892678202,-3.374042925569602e-5,3.3356565064026065e-8,0.0013220814837101608,-3.37239298755937e-5,3.334280561542386e-8,0.0013221952658236343,-3.3768093745891034e-5,3.336987271475884e-8,0.0013222959339579021,-3.389572813238187e-5,3.345230413051685e-8,0.0013224231012386285,-3.411559264521433e-5,3.359518483099222e-8,0.001322620987373266,-3.44143314836092e-5,3.378904291433436e-8,0.0013229254974994617,-3.47525377055976e-5,3.4007455453146385e-8,0.0013233481259613213,-3.507078420316715e-5,3.421110391244622e-8,0.0013238651644779758,-3.5307915680853196e-5,3.435980179531848e-8,0.0013244214578083684,-3.5424988893193025e-5,3.4428250117923195e-8,0.0013249498096669955,-3.5421322382391885e-5,3.441665080515855e-8,0.0013253957656545127,-3.533284530570563e-5,3.4349593606930406e-8,0.0013257341054285624,-3.521518782185486e-5,3.4264687362774436e-8,0.0013259708733802966,-3.5122901891955616e-5,3.4198504380576074e-8,0.0013261345823387194,-3.509485421874728e-5,3.4176685340857736e-8,0.0013262639590043055,-3.514877227589115e-5,3.421034115508173e-8,0.0013263974759466818,-3.5282692478288204e-5,3.42972534612874e-8,0.0013265664975942637,-3.547980948220061e-5,3.4425417060696266e-8,0.00132679174008558,-3.5714173837029465e-5,3.457707337361339e-8,0.0013270820868991236,-3.595606011854193e-5,3.473236215303623e-8,0.0013274350277215283,-3.617667618018595e-5,3.487237396855363e-8,0.0013278383205704806,-3.6352045676457e-5,3.4981566469251094e-8,0.0013282725585155749,-3.6465885830951754e-5,3.504952018493835e-8,0.0013287143399232126,-3.651136884131447e-5,3.507202780552796e-8,0.001329139723468503,-3.649166207236073e-5,3.5051459488144146e-8,0.0013295275370495275,-3.6419245769639135e-5,3.499636143139478e-8,0.0013298621741601225,-3.631427873602864e-5,3.492040029054349e-8,0.0013301357987788196,-3.620233676919433e-5,3.484081953074903e-8,0.0013303500182077856,-3.6111625895291846e-5,3.4776475543805855e-8,0.0013305170072328,-3.606960581815073e-5,3.4745462642883064e-8,0.0013306599051258836,-3.609882203418703e-5,3.4762278550856455e-8,0.0013308118536023116,-3.621166286686944e-5,3.483441417239421e-8,0.0013310123518564367,-3.64043217054422e-5,3.495855682409469e-8,0.0013312994223816388,-3.6651762152887505e-5,3.511751481890027e-8,0.0013316973518746693,-3.6907391838432765e-5,3.528018149292224e-8,0.0013322032136629622,-3.711186898684884e-5,3.540737536800615e-8,0.0013327798493111566,-3.721219549322923e-5,3.546437127639159e-8,0.0013333634934342639,-3.718420813249119e-5,3.543571757580381e-8,0.001333886255019829,-3.70450465515009e-5,3.53335093009964e-8,0.0013343019613464686,-3.6846215847581066e-5,3.5192757078025216e-8,0.001334600413137058,-3.6651362298198277e-5,3.505642654975122e-8,0.0013348042208097524,-3.6512872822752915e-5,3.495958564720737e-8,0.0013349544109773996,-3.6458841744971036e-5,3.49205708479965e-8,0.0013350949386154267,-3.649215529746224e-5,3.49404840851344e-8,0.0013352621732775469,-3.659679818886342e-5,3.500770195061645e-8,0.001335480179315456,-3.6746003522191745e-5,3.510363508802379e-8,0.0013357600358690303,-3.6909212409168185e-5,3.520756323936493e-8,0.0013361011544938224,-3.705705068984642e-5,3.52999605336332e-8,0.00133649332519081,-3.7164741980348925e-5,3.536463540591373e-8,0.0013369190829818159,-3.7214510810799346e-5,3.539015342857483e-8,0.0013373563443612583,-3.719721204638616e-5,3.537079341232845e-8,0.0013377813051418917,-3.711323131523201e-5,3.530711046883947e-8,0.0013381715937814552,-3.697254005026054e-5,3.520601101140213e-8,0.0013385094912165925,-3.6793660324817705e-5,3.5080116340020854e-8,0.0013387847813319696,-3.660147627572446e-5,3.494630461274569e-8,0.0013389968351418553,-3.642410292771776e-5,3.482354178926302e-8,0.0013391557003256266,-3.628905404552198e-5,3.473019081800264e-8,0.0013392819820180002,-3.621893946658274e-5,3.468102678374732e-8,0.0013394052631200586,-3.622700347066692e-5,3.468425016446891e-8,0.0013395607383982387,-3.631286700900988e-5,3.473878515860904e-8,0.0013397835600754613,-3.645915330073845e-5,3.483228424044899e-8,0.0013401005623555385,-3.663056453013473e-5,3.494077405219707e-8,0.0013405202232471124,-3.6777887727110934e-5,3.5031461893425745e-8,0.0013410241084409612,-3.684910446392256e-5,3.5070089714356354e-8,0.0013415655317836142,-3.68068037108336e-5,3.503236888286036e-8,0.0013420805713068025,-3.664539114072159e-5,3.491530557749418e-8,0.0013425100358751974,-3.6397470548011556e-5,3.47413920987351e-8,0.00134282186684753,-3.6122771266874264e-5,3.455114282299104e-8,0.0013430210440999052,-3.5884585735838275e-5,3.438718523558038e-8,0.0013431424937006674,-3.5727401868071906e-5,3.427912167202074e-8,0.00134323392387406,-3.5666709476200635e-5,3.423668442759081e-8,0.0013433393957544833,-3.569188452387105e-5,3.425186840423222e-8,0.0013434898472930886,-3.577592172660759e-5,3.430576805004325e-8,0.0013437006458960645,-3.588557734935549e-5,3.4375631883152696e-8,0.0013439733632099559,-3.598872432152733e-5,3.443987682266083e-8,0.0013442990272794215,-3.6058572131738544e-5,3.448082578605249e-8,0.0013446613049089872,-3.6075754726357985e-5,3.44859220020242e-8,0.001345039248616876,-3.6029368037547205e-5,3.444825503332818e-8,0.0013454098213895693,-3.591751673460431e-5,3.436684759254604e-8,0.0013457504724702282,-3.57474829484819e-5,3.424678910825797e-8,0.0013460419605556845,-3.5535332633184876e-5,3.409904369034362e-8,0.0013462713941414768,-3.530453678562293e-5,3.3939575913952353e-8,0.0013464350440412546,-3.5083247688415916e-5,3.3787496601098456e-8,0.001346540218956281,-3.490026072080504e-5,3.366224387151234e-8,0.0013466055506973335,-3.478008498355249e-5,3.358013732940204e-8,0.001346659241019408,-3.4737853074248655e-5,3.355088149022233e-8,0.0013467351263881956,-3.477505002897689e-5,3.3574748237485566e-8,0.0013468668157807983,-3.487707274585662e-5,3.36411293630354e-8,0.0013470805087412794,-3.501350818296307e-5,3.3728992049500143e-8,0.0013473874871725111,-3.5141989537112516e-5,3.3809694862078156e-8,0.0013477779846166242,-3.5216299066590065e-5,3.385250575241212e-8,0.0013482190793279586,-3.5198369687471605e-5,3.3832555330064887e-8,0.001348659613978359,-3.507162618165665e-5,3.3739577083562544e-8,0.001349043468490627,-3.485031268644354e-5,3.358395470384573e-8,0.001349327999366581,-3.4578485620740276e-5,3.3395893343763146e-8,0.0013494994616960665,-3.431622032059404e-5,3.321604676365601e-8,0.001349576900362316,-3.411840812110945e-5,3.3081186820720924e-8,0.0013496024923671088,-3.4016892922365775e-5,3.3012189592066463e-8,0.0013496246279193777,-3.401415154718749e-5,3.300992090644571e-8,0.0013496829179363164,-3.408870967312186e-5,3.305913434321514e-8,0.0013498005419856707,-3.420638364611618e-5,3.313629142245499e-8,0.001349983766265312,-3.433103577998142e-5,3.3216931742549514e-8,0.001350225503188383,-3.443167213616684e-5,3.328041116125517e-8,0.001350509870791549,-3.44857855079198e-5,3.3311987997451824e-8,0.001350816111848709,-3.44802776149318e-5,3.330325655153641e-8,0.0013511215354534733,-3.44113203272646e-5,3.325193674476666e-8,0.0013514038266242718,-3.428394324938091e-5,3.3161588903372553e-8,0.0013516432294084326,-3.41115562702498e-5,3.3041366067246576e-8,0.0013518249947347244,-3.391515061958602e-5,3.29055587983786e-8,0.0013519421489563276,-3.372159161237384e-5,3.277246672853169e-8,0.0013519981162253448,-3.35604192219653e-5,3.2662172488743894e-8,0.0013520082488663807,-3.345899609113347e-5,3.259313778399188e-8,0.0013519991491952143,-3.343655294053388e-5,3.257806735071459e-8,0.0013520049886915973,-3.349849264305731e-5,3.262004101630264e-8,0.0013520609158930905,-3.36328575909331e-5,3.2710241377374956e-8,0.0013521948074782938,-3.3810651240403614e-5,3.2828394204526694e-8,0.0013524194680195325,-3.399070247049815e-5,3.2946301667474426e-8,0.0013527275548078518,-3.412846985252045e-5,3.3033954284171145e-8,0.0013530910516223313,-3.41870260521444e-5,3.306696170857802e-8,0.0013534662186818406,-3.414758958099839e-5,3.303351712767489e-8,0.0013538036921596796,-3.401650121264336e-5,3.293885919569297e-8,0.0013540617630267778,-3.3825695437600704e-5,3.280532715743045e-8,0.0013542189655621978,-3.3625013396523797e-5,3.2666968653528377e-8,0.0013542809896239987,-3.3467679762926974e-5,3.255963827369867e-8,0.0013542783419837156,-3.3394020433318414e-5,3.251003853738814e-8,0.0013542554119995557,-3.342020697923614e-5,3.252828382153754e-8,0.0013542560140103023,-3.3536391035527796e-5,3.2606892142050424e-8,0.0013543116989025482,-3.371353007933651e-5,3.2725642792952345e-8,0.0013544365308802784,-3.391431273365121e-5,3.285910327271554e-8,0.0013546280975285543,-3.410316353858851e-5,3.2983383466057345e-8,0.0013548720539619643,-3.4252552907384106e-5,3.308026489902493e-8,0.001355147353668992,-3.43454908576762e-5,3.313870075252464e-8,0.0013554305468037433,-3.437553330264171e-5,3.315467676927687e-8,0.0013556988011802253,-3.434572357619407e-5,3.313045281129339e-8,0.0013559320038673691,-3.426735815892247e-5,3.30737806614842e-8,0.0013561145343338845,-3.415887769336406e-5,3.299724375590522e-8,0.0013562372346350193,-3.40446430953795e-5,3.291748056072256e-8,0.001356299729968249,-3.395293821719811e-5,3.285379960496967e-8,0.0013563126464800305,-3.39124616274109e-5,3.2825694374099335e-8,0.0013562986345168043,-3.394695718115785e-5,3.284908231937111e-8,0.0013562906901488832,-3.406854808973949e-5,3.2931730931658255e-8,0.0013563265580224901,-3.4271700357362895e-5,3.3069227097465745e-8,0.0013564394803830895,-3.453081024388408e-5,3.3243512234392763e-8,0.001356647830444362,-3.480395690125668e-5,3.342564568063368e-8,0.0013569477158602284,-3.504296952579012e-5,3.358281757335669e-8,0.0013573120584085639,-3.52068525793514e-5,3.368754392194241e-8,0.001357697050412798,-3.5273779767518736e-5,3.3725762172275216e-8,0.0013580538346326509,-3.524742322405932e-5,3.3700952947215904e-8,0.0013583414729187431,-3.515577457801083e-5,3.3633068996217375e-8,0.0013585373183607017,-3.504326814963739e-5,3.3552899090837633e-8,0.0013586421139425234,-3.4958781479045985e-5,3.3493719387707e-8,0.001358678685937704,-3.494290707046618e-5,3.3482624669021657e-8,0.001358684778336174,-3.501803608967189e-5,3.353396129882613e-8,0.001358702322909947,-3.518405715028354e-5,3.36466993389363e-8,0.0013587666406036992,-3.542061521536396e-5,3.380626499920978e-8,0.0013588989123856205,-3.5694495803273485e-5,3.398974496696862e-8,0.001359103663247866,-3.5969025766868755e-5,3.417229612867719e-8,0.0013593708567535968,-3.621226756590788e-5,3.4332592451649465e-8,0.0013596806793210175,-3.640207539916034e-5,3.4456072169122394e-8,0.0013600088338772479,-3.6527817297702786e-5,3.4535941490019846e-8,0.0013603309085686056,-3.6589745925869715e-5,3.4572666368770736e-8,0.0013606253906847028,-3.659727205627579e-5,3.4572817000381455e-8,0.0013608755966453268,-3.656705235731982e-5,3.45478428901892e-8,0.0013610710755603856,-3.652125748003627e-5,3.4512957394544435e-8,0.0013612090115036409,-3.648585481662091e-5,3.448596151433922e-8,0.0013612958461505,-3.648833256815448e-5,3.448560847301663e-8,0.0013613487825353768,-3.655412453139295e-5,3.452905427534737e-8,0.0013613960977975756,-3.6701245140876124e-5,3.4628141465119906e-8,0.0013614745650237811,-3.693358561190437e-5,3.4784884782548805e-8,0.0013616224205170902,-3.7235042204870165e-5,3.4987633233731027e-8,0.001361868091522445,-3.756832421090297e-5,3.521045772248526e-8,0.001362218255945228,-3.788197415238886e-5,3.541808383563176e-8,0.0013626514699812326,-3.812539193249165e-5,3.557619486093644e-8,0.001363122322234058,-3.8266165560665596e-5,3.566324383611881e-8,0.0013635754647547845,-3.830134386399334e-5,3.5678079037798024e-8,0.0013639630780626708,-3.825738313571894e-5,3.563975015298319e-8,0.001364258080357862,-3.817994201829989e-5,3.5580274568062977e-8,0.0013644589434662312,-3.811922202797349e-5,3.5534332460088205e-8,0.0013645865742663128,-3.81166924124298e-5,3.5530027944857735e-8,0.0013646762446455044,-3.819653354824757e-5,3.558310331044814e-8,0.001364767819829093,-3.8362605590993256e-5,3.569514079478911e-8,0.0013648967631197295,-3.8600238344742254e-5,3.585514627803409e-8,0.0013650874946786213,-3.888148752071901e-5,3.60434300221522e-8,0.0013653499642588421,-3.917227000116867e-5,3.62365942886353e-8,0.00136567964200512,-3.943967176457917e-5,3.6412451385441956e-8,0.0013660603709506384,-3.965784039600382e-5,3.65538578644758e-8,0.0013664688889499187,-3.981147629204727e-5,3.665089579529965e-8,0.0013668796761675812,-3.989679821734419e-5,3.6701401260529234e-8,0.0013672690955396569,-3.992052333462929e-5,3.6710241547116054e-8,0.0013676183253096337,-3.9897716306200194e-5,3.668789735721834e-8,0.0013679151464472477,-3.984932666566189e-5,3.664884493646582e-8,0.0013681550099158162,-3.979985343784534e-5,3.660997364210455e-8,0.0013683418187992174,-3.977508572660584e-5,3.658897704031485e-8,0.0013684886345164064,-3.9799531863791056e-5,3.6602481816290366e-8,0.0013686181140462686,-3.989297417404592e-5,3.6663608773571173e-8,0.0013687618136698219,-4.006569078124706e-5,3.677873040014451e-8,0.0013689567976789784,-4.031268759372785e-5,3.6943686509812775e-8,0.0013692379960220952,-4.0608958982055686e-5,3.714077674900414e-8,0.0013696263976024602,-4.0909688045915914e-5,3.733908018595111e-8,0.001370116858706226,-4.115943735403728e-5,3.7500783826076915e-8,0.0013706730192843547,-4.131030892561659e-5,3.759353716751259e-8,0.0013712357655380756,-4.1341651354543865e-5,3.760387092264407e-8,0.001371743681640421,-4.1269733274189294e-5,3.754378869036469e-8,0.0013721549303818486,-4.114093707006044e-5,3.744600118910848e-8,0.0013724590038156602,-4.1013018078885606e-5,3.7350822712677154e-8,0.0013726746583584263,-4.0935524588789915e-5,3.7292433498253575e-8,0.0013728388253621247,-4.093780361015353e-5,3.7290504667023286e-8,0.0013729936653109317,-4.102619609853645e-5,3.7348411588796894e-8,0.001373176359782013,-4.118762655376452e-5,3.745605098886693e-8,0.0013734130133102524,-4.139607981819826e-5,3.759467361926248e-8,0.0013737161837680623,-4.161950138762874e-5,3.7741869452387925e-8,0.0013740850229568907,-4.182594710895547e-5,3.787581954548767e-8,0.0013745072421834012,-4.198858396882682e-5,3.797857502949695e-8,0.0013749623837124778,-4.208926335925624e-5,3.803827857381001e-8,0.0013754258276343432,-4.2120407717748035e-5,3.8050265155743136e-8,0.001375872892622539,-4.2085198307853355e-5,3.801710263943968e-8,0.001376282469925798,-4.199628974034897e-5,3.7947728565110885e-8,0.0013766397572874227,-4.187345120748918e-5,3.7855899666402347e-8,0.0013769379150291574,-4.1740698791756187e-5,3.775826686919178e-8,0.0013771788132807986,-4.162339046388268e-5,3.76723488673647e-8,0.0013773731537905993,-4.154540420571933e-5,3.7614493141915814e-8,0.0013775401104706387,-4.1526264618012495e-5,3.759779228022895e-8,0.0013777064032593797,-4.157796597586423e-5,3.762987031680914e-8,0.001377904267471179,-4.170125910920436e-5,3.771044184184231e-8,0.0013781672206391812,-4.188175848661827e-5,3.78288749397831e-8,0.00137852256618738,-4.2087548328483725e-5,3.7962807628071696e-8,0.0013789809169083302,-4.2271422389212076e-5,3.807982991820045e-8,0.0013795260580142504,-4.238109909941585e-5,3.8144447194615674e-8,0.0013801120459359865,-4.237742637005507e-5,3.813041208095439e-8,0.0013806741263976,-4.225334424947585e-5,3.8033625865393774e-8,0.0013811520519300435,-4.2041187655938626e-5,3.787713159675286e-8,0.0013815136370865081,-4.180098864064637e-5,3.7703002181980215e-8,0.0013817644462791729,-4.159593522969593e-5,3.755522195444356e-8,0.0013819398040921613,-4.146995772891535e-5,3.7463973571636786e-8,0.0013820873195676013,-4.143814444971667e-5,3.74389528223684e-8,0.0013822508297504756,-4.1489856674521627e-5,3.747173694159376e-8,0.0013824612018183504,-4.159808318168086e-5,3.7542636676095634e-8,0.001382733677333939,-4.172918004101423e-5,3.76277743218216e-8,0.0013830692173663335,-4.185025959459586e-5,3.7704340994960595e-8,0.0013834575067367659,-4.193387127219509e-5,3.7753754368892116e-8,0.00138388030970731,-4.196070426809343e-5,3.776329962305264e-8,0.0013843148322871465,-4.1921028124019695e-5,3.7726878625517075e-8,0.0013847370777409624,-4.181512286564115e-5,3.7645150528966244e-8,0.0013851250900450299,-4.165273271465304e-5,3.752512539985943e-8,0.0013854619058602147,-4.145156074913463e-5,3.737919056711855e-8,0.0013857379458243554,-4.123483834305219e-5,3.722351350041851e-8,0.0013859525067954938,-4.1028195536964666e-5,3.707590164867331e-8,0.001386114186987945,-4.08562465832129e-5,3.6953376917189425e-8,0.0013862402914967716,-4.0739217947163935e-5,3.6869727504020365e-8,0.0013863552819137583,-4.068981038566365e-5,3.683325080139284e-8,0.0013864882812566375,-4.071045407698197e-5,3.684488191793497e-8,0.0013866695093654466,-4.0791084850707254e-5,3.689683217641563e-8,0.0013869252570760705,-4.0907845082072896e-5,3.6971967000828836e-8,0.0013872711358115565,-4.102392437415202e-5,3.7044638632372434e-8,0.0013877044103900269,-4.10944872644231e-5,3.708418444800822e-8,0.0013881982022425643,-4.107730918647336e-5,3.70621554354846e-8,0.0013887024507251455,-4.094823201885367e-5,3.696274535980045e-8,0.0013891560996636264,-4.071545369969397e-5,3.6792453536201996e-8,0.0013895088976246747,-4.042264374578624e-5,3.658214577314118e-8,0.0013897421255975183,-4.013475017712353e-5,3.637717862062872e-8,0.0013898751358086116,-3.99123909946508e-5,3.621955119697095e-8,0.0013899539157585976,-3.97898760399196e-5,3.613256495667892e-8,0.0013900305358917047,-3.976825529054825e-5,3.611605869920365e-8,0.0013901459897183817,-3.982280938552323e-5,3.615187595826213e-8,0.001390322583927315,-3.9916483926864295e-5,3.621354110721034e-8,0.0013905644815372748,-4.00116379826972e-5,3.627465691377648e-8,0.001390862196549241,-4.007719389834769e-5,3.6313891042696686e-8,0.0013911977272878053,-4.009168854677753e-5,3.631692015857626e-8,0.001391548803289706,-4.004388985804637e-5,3.627660019245447e-8,0.0013918921108757572,-3.9932383942914886e-5,3.619246897144912e-8,0.001392205925877442,-3.976474847087717e-5,3.607009012040189e-8,0.001392472481833256,-3.9556371616133894e-5,3.592027726302581e-8,0.0013926801795685095,-3.932876436594814e-5,3.5758025153182566e-8,0.0013928255206943443,-3.910712261197275e-5,3.5600891948591315e-8,0.0013929143574365078,-3.891704325009154e-5,3.546670424830646e-8,0.0013929619662561058,-3.878067864465175e-5,3.5370785800753655e-8,0.0013929916634681091,-3.8712865216251155e-5,3.5323145245009847e-8,0.0013930319212074739,-3.871783709874851e-5,3.532613964822986e-8,0.0013931121650108214,-3.878718027241075e-5,3.537313617747967e-8,0.0013932576761824852,-3.889956926863257e-5,3.544855030305457e-8,0.0013934841205019005,-3.902264562679513e-5,3.5529430896809445e-8,0.0013937923389470475,-3.911747336501126e-5,3.558876680690813e-8,0.0013941645951322254,-3.9146037401005566e-5,3.560072677257016e-8,0.0013945643433518572,-3.908149684330105e-5,3.554760976148454e-8,0.0013949419740809537,-3.8919080012482775e-5,3.54271205202408e-8,0.0013952477277678645,-3.868301987054237e-5,3.525691407233159e-8,0.001395448996586115,-3.842366805801884e-5,3.507242835859129e-8,0.0013955441184541493,-3.8202198743737096e-5,3.491619511363628e-8,0.001395563841894682,-3.806835542580855e-5,3.482237329132881e-8,0.0013955584098649994,-3.804297850225461e-5,3.4804676331452736e-8,0.0013955778157443777,-3.8114400232592614e-5,3.4854056156277526e-8,0.0013956561830292,-3.8248114880291454e-5,3.4945709067619815e-8,0.0013958061096767589,-3.840169374270801e-5,3.504970300817749e-8,0.001396021525706078,-3.853707477095065e-5,3.513962678304474e-8,0.0013962843041433993,-3.8627076516026636e-5,3.5197026880596114e-8,0.0013965707576988314,-3.865699570879773e-5,3.521229439063478e-8,0.0013968563725718281,-3.8623536025609064e-5,3.5183688298750485e-8,0.0013971187911648243,-3.8532907044979155e-5,3.511587978476073e-8,0.001397339741657006,-3.8398963032655006e-5,3.501866053362015e-8,0.0013975065707011172,-3.824149273866268e-5,3.490584928664414e-8,0.0013976137214529206,-3.808437691328442e-5,3.47941124837482e-8,0.0013976641337538325,-3.795316224892923e-5,3.470130668547223e-8,0.0013976701313359334,-3.787171824233571e-5,3.4644083108582145e-8,0.0013976530803277948,-3.785809777299285e-5,3.4634877223998395e-8,0.0013976411745630901,-3.792027581554576e-5,3.467883721971932e-8,0.0013976651171231898,-3.8052873706371765e-5,3.477154552196402e-8,0.001397752138213877,-3.8236151892252456e-5,3.489846164729002e-8,0.0013979195447783234,-3.8438219455829296e-5,3.5036710195449224e-8,0.0013981694399458889,-3.862056128580171e-5,3.515918741519236e-8,0.001398486147697437,-3.874608834560939e-5,3.524031957876636e-8,0.0013988374531938928,-3.878827062153085e-5,3.526239348503685e-8,0.001399180229735303,-3.873936055813441e-5,3.52210743179183e-8,0.0013994701906148062,-3.861521125226919e-5,3.5128449985403174e-8,0.0013996740998213511,-3.845410205611195e-5,3.501191367250836e-8,0.0013997808979702491,-3.830798334251088e-5,3.490787420794603e-8,0.0013998068841861602,-3.822734029112152e-5,3.485117466616385e-8,0.0013997912690781416,-3.824484084870901e-5,3.486381492238321e-8,0.001399782875381604,-3.836511152067367e-5,3.494805808686753e-8,0.0013998239209614296,-3.856545057793629e-5,3.508720829151086e-8,0.0013999383452429608,-3.880618248898522e-5,3.5253069111989446e-8,0.001400128687982977,-3.9044513556967366e-5,3.5415721677933286e-8,0.0014003803140351105,-3.924559928935504e-5,3.555119946742358e-8,0.0014006688652410718,-3.938796884383357e-5,3.564509648433299e-8,0.0014009672459019793,-3.946401158692379e-5,3.569268613464028e-8,0.0014012504631784645,-3.9477773714654874e-5,3.5697219627372335e-8,0.0014014983378744935,-3.9442025791079544e-5,3.566783351875651e-8,0.0014016968485090753,-3.937562123845998e-5,3.561776933093947e-8,0.0014018389311078144,-3.930135009856592e-5,3.556297869454529e-8,0.0014019252611881805,-3.924395351028988e-5,3.552079791655267e-8,0.0014019650674987158,-3.922771502573723e-5,3.550823547292913e-8,0.0014019765254487317,-3.927316184126799e-5,3.5539561321083074e-8,0.0014019859072127623,-3.939286678870541e-5,3.562326047613582e-8,0.0014020245683540645,-3.9587049026522654e-5,3.57589225433063e-8,0.0014021232793080098,-3.984050350448809e-5,3.5935183683834784e-8,0.0014023045619820167,-4.0122876368864325e-5,3.613011664758931e-8,0.001402575188517273,-4.0393711578013267e-5,3.631499515737404e-8,0.0014029218430838034,-4.0611873294491905e-5,3.6461068646827724e-8,0.0014033123169753285,-4.074679499372091e-5,3.654749216388009e-8,0.0014037026283073234,-4.078780138232347e-5,3.6567752091281347e-8,0.0014040481592061073,-4.074819558912667e-5,3.653228462529379e-8,0.0014043154629272954,-4.0662606574106574e-5,3.646629348386904e-8,0.0014044912857379814,-4.057825582912705e-5,3.640333363998543e-8,0.001404586199481951,-4.054249152292174e-5,3.6376420565956944E-08,0.0014046315916832204,-4.059001163717845e-5,3.640913312668297e-8,0.0014046706036646942,-4.073363552405963e-5,3.650939734711049e-8,0.0014047457709805932,-4.096173679938644e-5,3.6668033280187714e-8,0.0014048875975041877,-4.1243138982900314e-5,3.686248986601918e-8,0.0014051079231287907,-4.153727189609017e-5,3.706412048229687e-8,0.0014053996891925462,-4.180543919169627e-5,3.724605723962737e-8,0.0014057418851642401,-4.201928520354164e-5,3.7388982979293707e-8,0.0014061067325829505,-4.216459310863377e-5,3.748357386154352e-8,0.0014064662792454632,-4.2240904034702006e-5,3.75300453375767e-8,0.001406796935332708,-4.225873123662221e-5,3.753610982343233e-8,0.0014070818711074016,-4.223609237701761e-5,3.7514565091294765e-8,0.0014073119283782146,-4.219538055815336e-5,3.748118402098386e-8,0.0014074858454996213,-4.216086923191445e-5,3.7453036902211475e-8,0.0014076103837110468,-4.215657537536124e-5,3.744699428145286e-8,0.001407700482867457,-4.2203893189522455e-5,3.7477990165415446e-8,0.0014077790394113716,-4.231848459825597e-5,3.755673767593618e-8,0.0014078754676845311,-4.250633958081457e-5,3.768691664581742e-8,0.0014080219967517041,-4.275967059593405e-5,3.7862358742113034e-8,0.0014082470158322466,-4.305438268393406e-5,3.8065444478173206e-8,0.0014085662107764442,-4.3351709842482535e-5,3.826846229183665e-8,0.0014089744868300872,-4.360598119993927e-5,3.843922404533621e-8,0.0014094431536157055,-4.377765422595991e-5,3.8550288702544655e-8,0.0014099256069116926,-4.384699363489847e-5,3.8588547143931624e-8,0.001410370621965012,-4.3822017616625005e-5,3.8560684416864574e-8,0.0014107379906385569,-4.373660777036701e-5,3.8491618344667396e-8,0.001411009964557524,-4.363969764258664e-5,3.841657689536917e-8,0.0014111946000197385,-4.3580512043394426e-5,3.8370420063415034e-8,0.0014113211867777273,-4.359545857298468e-5,3.837829828573306e-8,0.0014114306461733982,-4.3700232323209964e-5,3.8450239351540594e-8,0.001411564408632792,-4.388818610139138e-5,3.858035161105931e-8,0.0014117547305501578,-4.4134232812283986e-5,3.874997182226532e-8,0.0014120184750084578,-4.440248212920195e-5,3.8933324817321076e-8,0.0014123552829552618,-4.4655279826922307e-5,3.910396017989396e-8,0.0014127498958597165,-4.4861304314633954e-5,3.924032595412258e-8,0.0014131773611926266,-4.500092974261656e-5,3.932930729967511e-8,0.0014136092759243295,-4.5068124233728125e-5,3.9367328715653395e-8,0.001414019350464863,-4.50693223258045e-5,3.9359414083827914e-8,0.001414387280570928,-4.5020436860496765e-5,3.931705416718012e-8,0.0014147007530842784,-4.4943253683445574e-5,3.925572649703533e-8,0.0014149560140847756,-4.486209219785531e-5,3.919262101512192e-8,0.0014151576551419522,-4.4801074437002196e-5,3.914474595500056e-8,0.001415318136201093,-4.478183557739158e-5,3.912726793698288e-8,0.0014154572003696824,-4.482122856836196e-5,3.9151802563573214e-8,0.0014156009001108517,-4.492859041749618e-5,3.9224425325897754e-8,0.0014157795097893533,-4.5102449376290346e-5,3.93433918158505e-8,0.0014160233109937125,-4.532727500167816e-5,3.94970098303655e-8,0.0014163555567608258,-4.557201265798743e-5,3.96628298780135e-8,0.0014167833913719533,-4.579313198730899e-5,3.980996986060289e-8,0.0014172901012929602,-4.594441145983626e-5,3.990606550755613e-8,0.0014178341748209257,-4.599235373069634e-5,3.9928088314464635e-8,0.0014183591944381855,-4.593096157451421e-5,3.987268351609923e-8,0.0014188124373602864,-4.5787093578951006e-5,3.975984439233655e-8,0.001419163393834719,-4.561185313227637e-5,3.9626636645945325e-8,0.0014194126920989531,-4.5462152420401115e-5,3.951386849890556e-8,0.0014195882504336435,-4.5382171232237414e-5,3.945270542300551e-8,0.0014197329253106763,-4.539256577330823e-5,3.9456983564371725e-8,0.0014198906236090039,-4.548923231726588e-5,3.952257759491028e-8,0.001420095771986858,-4.5648857684138e-5,3.963175850856077e-8,0.0014203677362581296,-4.5837385340540104e-5,3.975959325884974e-8,0.0014207096597213865,-4.601850510949015e-5,3.988016811818957e-8,0.0014211104809135435,-4.616063637726872e-5,3.9971495331700885e-8,0.0014215489510336552,-4.624177480943514e-5,4.001871904464167e-8,0.0014219986351035052,-4.6251956591088596e-5,4.0015574979438314e-8,0.0014224329376801295,-4.619339291718908e-5,3.996426457805398e-8,0.001422829353219783,-4.607871301987465e-5,3.9874120697775513e-8,0.0014231724530763103,-4.592798447099774e-5,3.9759530620922137e-8,0.0014234554326269762,-4.57652124151591e-5,3.9637548056577846e-8,0.0014236803642659415,-4.561496504861187e-5,3.952556952558051e-8,0.0014238575838519927,-4.5499512314608026e-5,3.943929979142778e-8,0.0014240046262760098,-4.543644346492547e-5,3.9390987574810174e-8,0.0014241448474782898,-4.543650107068099e-5,3.938780661528568e-8,0.0014243055769598875,-4.55014025622324e-5,3.943030334635427e-8,0.0014245153230789524,-4.562160361393435e-5,3.951093333991738e-8,0.0014247992679477627,-4.5774516750711624e-5,3.9613026810845106e-8,0.0014251725776000539,-4.592471607435623e-5,3.97111673534239e-8,0.0014256324150758487,-4.6028499832087334e-5,3.9774539919194244e-8,0.0014261519278773278,-4.604466942670059e-5,3.97745103455597e-8,0.0014266816106519023,-4.595018557846401e-5,3.9695557904295956e-8,0.0014271621257017225,-4.575388705227969e-5,3.9544859389287236e-8,0.0014275457311608392,-4.549845458283125e-5,3.935358890200528e-8,0.001427815306107102,-4.524605002091276e-5,3.916657774531871e-8,0.0014279894860666584,-4.505443172790813e-5,3.9025101307670685e-8,0.001428111845943068,-4.4957151971777735e-5,3.895259664595886e-8,0.0014282324457039898,-4.4956997998443266e-5,3.8950037799349965e-8,0.0014283921152246375,-4.5031813061035744e-5,3.9000405529012745e-8,0.001428614503799861,-4.514594302658012e-5,3.907728510090153e-8,0.0014289052039444517,-4.526123102336767e-5,3.915303573565249e-8,0.0014292549887714064,-4.5344780633131716e-5,3.9204408290150735e-8,0.0014296445351593818,-4.537328317671618e-5,3.921546485399938e-8,0.0014300491927835234,-4.533479827914965e-5,3.917854634066426e-8,0.0014304433224275918,-4.522881772940035e-5,3.909403114722347e-8,0.001430804033341362,-4.5065037434135e-5,3.896929881664266e-8,0.001431114134170649,-4.486114602985143e-5,3.8817147411994384e-8,0.001431364173594574,-4.463995090524377e-5,3.8653843304944497e-8,0.001431553477665542,-4.4426110315797016e-5,3.8496905092415785e-8,0.0014316900992935974,-4.4242818950062476e-5,3.8362786478080485e-8,0.0014317897941557708,-4.410886020323244e-5,3.8264727869013804e-8,0.0014318743099349634,-4.403620954390451e-5,3.8210949087253464e-8,0.0014319691565770345,-4.402814004867514e-5,3.8203232744223565e-8,0.0014321008288139233,-4.407781633250867e-5,3.823596615193787e-8,0.0014322933132242908,-4.4167493057523215e-5,3.829575167824442e-8,0.0014325635783059797,-4.426874231918825e-5,3.8361828243839776e-8,0.0014329159984174987,-4.4344806916418694e-5,3.8407962919808685e-8,0.0014333367610415697,-4.435666435111393e-5,3.840682171688473e-8,0.0014337910720800594,-4.4273697098380086e-5,3.833742616530986e-8,0.0014342273731959762,-4.408716016137151e-5,3.819450047412489e-8,0.0014345914434781843,-4.382020957560829e-5,3.79954130449742e-8,0.0014348470970175808,-4.352582193219588e-5,3.7778581483576264e-8,0.0014349925697684392,-4.326902649537983e-5,3.759070188014273e-8,0.0014350613489107376,-4.3101343714786775e-5,3.746837044387351e-8,0.0014351064354383872,-4.304237393549526e-5,3.74248666578265e-8,0.0014351786308693037,-4.3077895175319485e-5,3.744893988723652e-8,0.001435311120145527,-4.3171511316731736e-5,3.751349253798805e-8,0.001435514983638263,-4.3280124103506245e-5,3.7587031889058094e-8,0.0014357827442222175,-4.33657644870084e-5,3.764234602726513e-8,0.0014360950176135047,-4.340168328161423e-5,3.766080981694061e-8,0.0014364268982985113,-4.3373918763642415e-5,3.7633249662091946e-8,0.0014367527843651797,-4.328039694830718e-5,3.755898187846603e-8,0.0014370497401466067,-4.312909776010434e-5,3.7444270646673757e-8,0.0014372999251545048,-4.29358844997081e-5,3.730070931627148e-8,0.0014374923724849156,-4.2722063680720855e-5,3.71435536648068e-8,0.0014376241618117747,-4.251167408721932e-5,3.6989920136254e-8,0.0014377009262072043,-4.2328490779715396e-5,3.6856738666764285e-8,0.0014377364788064743,-4.2192837572660376e-5,3.675846863045126e-8,0.0014377513692969844,-4.2118585485798534e-5,3.6704856042820815e-8,0.001437770451447845,-4.2110786884528316e-5,3.669912913273134e-8,0.0014378196981251372,-4.21642244916051e-5,3.6736925449717485e-8,0.0014379224790505686,-4.226308798281828e-5,3.680616377621557e-8,0.0014380955334853483,-4.238200534606743e-5,3.6888012155040675e-8,0.0014383449114242503,-4.2488670304332985e-5,3.6959034935254815e-8,0.0014386623333420816,-4.254848883471872e-5,3.69946922542799e-8,0.001439023053413255,-4.253172746547254e-5,3.6974437223496824e-8,0.00143938722951177,-4.242284653717159e-5,3.688818009449981e-8,0.001439707137154768,-4.222971419566938e-5,3.674257304428873e-8,0.0014399409659193428,-4.198781671588203e-5,3.656376280190634e-8,0.001440069459918548,-4.1753765044836575e-5,3.6392606119182155e-8,0.001440106597622063,-4.158679104094984e-5,3.6271381464065536e-8,0.0014400959148385573,-4.1525832600832144e-5,3.622739349459521e-8,0.0014400927711180566,-4.15752438414865e-5,3.626283531393904e-8,0.0014401429180055368,-4.170699406909172e-5,3.635659541946491e-8,0.0014402691460889587,-4.1875615871244114e-5,3.6475292110604114e-8,0.0014404700687453444,-4.20353985030447e-5,3.658586574851633e-8,0.0014407270427852904,-4.215187194132588e-5,3.666388371140973e-8,0.001441013130719309,-4.220595818615349e-5,3.6696359973947585e-8,0.0014413003263376396,-4.219308157288958e-5,3.6680826446642095e-8,0.001441564033217401,-4.212012924590863e-5,3.662287749152233e-8,0.0014417853809006085,-4.2002181831792545e-5,3.653368462176073e-8,0.0014419523959797523,-4.185969337729201e-5,3.642799751790315e-8,0.0014420606999227586,-4.171600435622608e-5,3.632248964966348e-8,0.0014421139198980406,-4.159487387718513e-5,3.623411674528073e-8,0.0014421237028206181,-4.151777055500738e-5,3.6178218018737015e-8,0.0014421089934266833,-4.150085444996026e-5,3.6166287820635e-8,0.0014420941576250958,-4.155198804294638e-5,3.620370937664565e-8,0.0014421057972856064,-4.166845338362705e-5,3.628802792965738e-8,0.0014421685219863218,-4.183607922736202e-5,3.6408352528175015e-8,0.0014423002757643633,-4.203032172674412e-5,3.65463031098458e-8,0.0014425080608542666,-4.22195472333642e-5,3.667862994977846e-8,0.001442784991572208,-4.237031728117714e-5,3.6781252110025435e-8,0.0014431095090614871,-4.245409762385614e-5,3.6834180674033206e-8,0.0014434474962299161,-4.245454297942441e-5,3.682664986919906e-8,0.0014437579597159325,-4.237398291446551e-5,3.676149381934002e-8,0.0014440024218877274,-4.2236870836770005e-5,3.665727124065034e-8,0.0014441566692500326,-4.208735480065546e-5,3.654623465415403e-8,0.0014442210777839057,-4.197894413823149e-5,3.646678154580181e-8,0.0014442238639085503,-4.1957657259825583e-5,3.6451395741224957e-8,0.001444213177633174,-4.204514955028633e-5,3.6514704020701185e-8,0.0014442400148779796,-4.2230738483301597e-5,3.664799820937176e-8,0.001444340327612597,-4.2477002171248194e-5,3.6823531208232587E-08,0.0014445252831045401,-4.273521305190709e-5,3.700583739358809e-8,0.001444782633063003,-4.296167146369278e-5,3.716358146341754e-8,0.0014450854085491184,-4.312785702347721e-5,3.727679374827056e-8,0.001445401951167018,-4.322288651739154e-5,3.733842340885731e-8,0.001445703365975638,-4.3250813436262515e-5,3.735212787958807e-8,0.0014459674945798882,-4.32260760357198e-5,3.73288004390637e-8,0.001446180300220262,-4.316923443732345e-5,3.728344873718978e-8,0.0014463359582635035,-4.310370309668452e-5,3.723292189167686e-8,0.0014464365687389773,-4.305328850624032e-5,3.719426687269874e-8,0.0014464918465855834,-4.304002473972689e-5,3.718325365119318e-8,0.0014465186728166825,-4.308181819575483e-5,3.721266618215463e-8,0.0014465400355141305,-4.3189687170519945e-5,3.7290221487352145e-8,0.0014465827531187007,-4.336489798552785e-5,3.741640893771544e-8,0.0014466736056468219,-4.3596841039752464e-5,3.758294229173246e-8,0.0014468340922974643,-4.386279199894946e-5,3.77726972029659e-8,0.0014470748301542683,-4.413057535440872e-5,3.7961848327240886e-8,0.0014473912922101449,-4.4364408720834884e-5,3.812432810558878e-8,0.0014477626657607462,-4.453297875666711e-5,3.8237820661230854e-8,0.001448154854433801,-4.461771816489685e-5,3.828974037644961e-8,0.0014485274030723117,-4.461890202134063e-5,3.8281447589952853e-8,0.0014488429638407447,-4.455758179245559e-5,3.822931479912126e-8,0.001449077126957026,-4.447225398864734e-5,3.816195570741389e-8,0.001449226023125882,-4.441032020245069e-5,3.8113794316332475e-8,0.0014493090755652274,-4.441579020404974e-5,3.8116125833806295e-8,0.001449364947092221,-4.451633994090186e-5,3.818794133287042e-8,0.0014494407057380814,-4.471426477041007e-5,3.832972073058778e-8,0.0014495774144823556,-4.498555350055323e-5,3.8523117853081915e-8,0.0014497978450341655,-4.5288121537755064e-5,3.873716648698755e-8,0.001450101396289851,-4.557563857325436e-5,3.89383696430426e-8,0.0014504674700356046,-4.581077178440381e-5,3.9100206897818924e-8,0.001450864329811925,-4.59729347684755e-5,3.920855010190983e-8,0.001451258767715561,-4.605934108050844e-5,3.92621859121156e-8,0.001451623153623208,-4.608136827590191e-5,3.926997648012008e-8,0.0014519388956488832,-4.605924560935e-5,3.9246910208725725e-8,0.0014521971379447417,-4.6017229535460886e-5,3.9210629613232204e-8,0.0014523980389310705,-4.5980057149587095e-5,3.917896492879653e-8,0.0014525496603379358,-4.597051953376308e-5,3.9168276920308264e-8,0.0014526669574361673,-4.600759430739576e-5,3.9192135619664394e-8,0.0014527708281076104,-4.610453020282936e-5,3.9259884840940946e-8,0.0014528867245701964,-4.626654176388048e-5,3.9374895639106777e-8,0.0014530421048613528,-4.648831416903428e-5,3.9532731387203335e-8,0.0014532621468013511,-4.6752190201937326e-5,3.971990995005398e-8,0.0014535637916342824,-4.7028515568426274e-5,3.9914326393312656e-8,0.0014539493947660874,-4.727971460801391e-5,4.008841173852169e-8,0.0014544025921314587,-4.7468597955633217e-5,4.021531201044032e-8,0.0014548892922685616,-4.7569142347220584e-5,4.027675511472258e-8,0.0014553650558184153,-4.7575810436338764e-5,4.026972977663235e-8,0.0014557870851216873,-4.750717265528638e-5,4.020889782847651e-8,0.0014561265502366723,-4.7401772022354576e-5,4.012327246018735e-8,0.0014563767220609832,-4.730757137609055e-5,4.004821937536077e-8,0.00145655435776092,-4.726880621379515e-5,4.001569186801683e-8,0.001456694463586125,-4.73144514864003e-5,4.004587627083997e-8,0.0014568404770532691,-4.7451327393656046e-5,4.0142460997834714e-8,0.0014570327641523222,-4.7663290283813975e-5,4.029246947753112e-8,0.001457298519145466,-4.7916441311999795e-5,4.047043105356473e-8,0.0014576457793189451,-4.816871716330359e-5,4.064555627563837e-8,0.0014580630692166065,-4.8380870254886153e-5,4.07896946312839e-8,0.0014585242916217804,-4.85254475628263e-5,4.0883660976549706e-8,0.0014589966823086494,-4.859135992178545e-5,4.092028278391199e-8,0.0014594488895383127,-4.8583561201735886e-5,4.0903922552317477e-8,0.0014598568660654338,-4.851917902858856e-5,4.084752107398645e-8,0.001460206718017994,-4.8422238333548e-5,4.0768741953613706e-8,0.0014604949812930131,-4.831876578154884e-5,4.068648768877478e-8,0.0014607274013576004,-4.823314160900414e-5,4.0618350180221016e-8,0.0014609172150457537,-4.8185712318530414e-5,4.057893429465176e-8,0.001461083502746424,-4.8191179258434106E-05,4.0578670798416085e-8,0.001461249671904525,-4.82571706133708e-5,4.0622715345642995e-8,0.001461441693727446,-4.838261929000545e-5,4.07097296081658e-8,0.0014616854233344243,-4.8556014057686534e-5,4.083066061163576e-8,0.0014620023267894015,-4.8754249269082786e-5,4.0968058990523775e-8,0.0014624034953483796,-4.894358809285292e-5,4.109698020827211e-8,0.0014628831941533296,-4.908464338861261e-5,4.118875936509696e-8,0.0014634150433660768,-4.914226299762998e-5,4.121824393937142e-8,0.0014639548020531532,-4.9098224861191336e-5,4.117296927439143e-8,0.001464451637979818,-4.8961091183785824e-5,4.106020733296679e-8,0.0014648646915946838,-4.8766820370606e-5,4.090722801199529e-8,0.0014651772883869003,-4.8568009313809076e-5,4.075319349404685e-8,0.0014654017214941388,-4.8416426777365386e-5,4.063612262558724e-8,0.0014655731149098806,-4.834715390556542e-5,4.05811408271586e-8,0.0014657366598345033,-4.8370472978448067e-5,4.0594648027202523e-8,0.0014659342958094506,-4.847253437725393e-5,4.066516335293664e-8,0.0014661950114605521,-4.862215666828612e-5,4.076876008564538e-8,0.0014665301910791108,-4.8780249807602064e-5,4.0876316291687736e-8,0.0014669336173157724,-4.8909088442915184e-5,4.096041061837196e-8,0.0014673849869394323,-4.89797010783182e-5,4.10005813588427e-8,0.0014678556191269404,-4.8976435201010984e-5,4.0986359543432826e-8,0.0014683149714162325,-4.889830880085964e-5,4.091793502517985e-8,0.0014687365529222206,-4.875735290426732e-5,4.080472681276175e-8,0.0014691021142846357,-4.857481423921316e-5,4.0662543710692137e-8,0.0014694036337962362,-4.8376450354823765e-5,4.0510213167388694e-8,0.0014696432745798936,-4.8188046898087444e-5,4.0366429937764576e-8,0.0014698319277800106,-4.803190530328035e-5,4.0247286006004545e-8,0.0014699871102827962,-4.7924526915939426e-5,4.0164595796703556e-8,0.0014701307848855516,-4.787522027490336e-5,4.012482396092963e-8,0.0014702872622128149,-4.788517195205734e-5,4.012834089633514e-8,0.0014704809975428358,-4.794666693736669e-5,4.0168855709075365e-8,0.0014707338344027386,-4.804244009905834e-5,4.0233062784634995e-8,0.0014710611213139102,-4.814566107532364e-5,4.030084085232558e-8,0.0014714665413726273,-4.822181569590968e-5,4.034683134470572e-8,0.001471936732554558,-4.823419676772928e-5,4.0344537351810816e-8,0.0014724385787785134,-4.815393883152968e-5,4.02735824939934e-8,0.0014729232921461939,-4.7972708991935915e-5,4.012881131104992e-8,0.001473339733380658,-4.771194684085152e-5,3.99268721108642e-8,0.0014736534482333627,-4.7420811459529796e-5,3.97045678271898e-8,0.0014738614631978186,-4.716016424666695e-5,3.9506949528936975e-8,0.0014739933492919856,-4.697982067329245e-5,3.937043540172194e-8,0.0014740979744279096,-4.690167112469379e-5,3.931032980142313e-8,0.0014742246024554207,-4.691644256644111e-5,3.9318604552850936e-8,0.0014744082651071803,-4.69922299640802e-5,3.9370563974310175e-8,0.0014746637140043946,-4.708756851895923e-5,3.943489870131204e-8,0.0014749866046875014,-4.7162958123676244e-5,3.948243157993727e-8,0.001475358543065385,-4.71883294842356e-5,3.949159654624633e-8,0.001475753210166725,-4.714652817698946e-5,3.945074236392933e-8,0.001476142078096254,-4.7033888847950614e-5,3.9358189832320374e-8,0.0014764992123982724,-4.685887934392134e-5,3.9220928510260014e-8,0.0014768049713061416,-4.663938791887539e-5,3.905248086942313e-8,0.001477048391317066,-4.639911917690382e-5,3.8870289051615004e-8,0.0014772281442441146,-4.61636413222774e-5,3.86929540003015e-8,0.0014773521218631534,-4.595660324837137e-5,3.8537604231317574e-8,0.0014774358574483667,-4.579659133441228e-5,3.841765492707048e-8,0.0014775001956065402,-4.569496823083304e-5,3.8341186816552856e-8,0.0014775686820781154,-4.565470129067433e-5,3.830999686167372e-8,0.0014776649243166784,-4.566994456347111e-5,3.8319233095593914e-8,0.0014778099359220231,-4.5726192560117234e-5,3.83575570353092e-8,0.0014780193244124584,-4.580097117160524e-5,3.840782891730723e-8,0.0014783000450939625,-4.5865328797617776e-5,3.8448445201550915e-8,0.0014786467079729625,-4.588696439857752e-5,3.845582251437362e-8,0.0014790384080720245,-4.583611242343526e-5,3.840873944588172e-8,0.0014794383527260398,-4.56945594107753e-5,3.82947864626867e-8,0.001479799398450005,-4.5465999161076066e-5,3.811769435150879e-8,0.0014800774121277783,-4.518250806512075e-5,3.790185132520664e-8,0.0014802492942168032,-4.489995809258601e-5,3.768879845012064e-8,0.0014803258879004637,-4.467961171000656e-5,3.7523621216932424e-8,0.0014803496588216847,-4.456364916372832e-5,3.7436882425543227E-08,0.0014803767789849922,-4.455914717389837e-5,3.743285124826617e-8,0.00148045471663273,-4.463944669785187e-5,3.749072374826842e-8,0.0014806079903739232,-4.4759080332929866e-5,3.757599995374444e-8,0.0014808363575325631,-4.4871298219932226e-5,3.7653765328709984e-8,0.0014811213748755097,-4.49400791113898e-5,3.7697698950566665e-8,0.0014814353063795221,-4.494494148911797e-5,3.769349125262831e-8,0.0014817486607833878,-4.488064489949951e-5,3.7638296039217246e-8,0.0014820352591590176,-4.475444899156155e-5,3.75383511170801e-8,0.001482275222988769,-4.458271568201399e-5,3.740624045556785e-8,0.0014824566343186552,-4.438752806725547e-5,3.7258364186440963e-8,0.0014825762933425046,-4.41933973514123e-5,3.711263205430016e-8,0.0014826396781233982,-4.402407385189993e-5,3.698628868785702e-8,0.0014826601038704105,-4.3899537486014864e-5,3.689381745950238e-8,0.0014826570290835308,-4.3833355408042506e-5,3.684500249109746e-8,0.0014826535665252642,-4.383076384824262e-5,3.684342893133268e-8,0.0014826734964349505,-4.388776027353641e-5,3.688571137475423e-8,0.0014827381250709867,-4.3991250197185465e-5,3.696157870415823e-8,0.0014828632277558774,-4.4120225732295084e-5,3.7054853705114773e-8,0.0014830562790585913,-4.424796254416029e-5,3.7145299091021524e-8,0.001483314114902658,-4.4345226853738956e-5,3.721123064884487e-8,0.0014836212427355765,-4.438471351759688e-5,3.723292906691934e-8,0.0014839495880320053,-4.434704884177869e-5,3.719700534277648e-8,0.0014842612053440878,-4.4227969750309367e-5,3.7101437221589655e-8,0.001484515578411819,-4.4044706083483356e-5,3.6959930289161086e-8,0.0014846818321571568,-4.383767436946015e-5,3.6802887599284104e-8,0.001484752665298912,-4.366282494601175e-5,3.6671649941767425e-8,0.0014847523079773632,-4.357345179251354e-5,3.6605110282143873e-8,0.0014847306685902028,-4.3598461730291396e-5,3.662379044416523e-8,0.0014847439416985908,-4.372996532663204e-5,3.672084767057359e-8,0.001484832455576805,-4.392834159757466e-5,3.6866053246575335e-8,0.0014850084524969315,-4.414052139172515e-5,3.701958292803764e-8,0.0014852579225742377,-4.4319394962506785e-5,3.7146574635816525e-8,0.00148555111690797,-4.443521318072178e-5,3.7225576915926685e-8,0.0014858540251273446,-4.447773434048518e-5,3.724992857383376e-8,0.0014861364543161625,-4.445270363925244e-5,3.722482225495067e-8,0.0014863760913723298,-4.437656318307988e-5,3.716309655277369e-8,0.0014865597532513933,-4.427164451826376e-5,3.708154822513582e-8,0.0014866832683675857,-4.4162460074345484e-5,3.699824191460888e-8,0.0014867508559287582,-4.407282323694022e-5,3.693054466535894e-8,0.0014867742340000237,-4.402339782503651e-5,3.68934712540527e-8,0.0014867713714220555,-4.402943420367354e-5,3.689807422058526e-8,0.0014867646564762282,-4.409867285281513e-5,3.6949844467746125e-8,0.0014867782740302412,-4.422973621937711e-5,3.7047415402730984e-8,0.0014868348754921309,-4.441152508594255e-5,3.718204520461165e-8,0.0014869519465962582,-4.462400182095811e-5,3.733824048865543e-8,0.0014871384186216602,-4.484053098879151e-5,3.749566462993671e-8,0.0014873921480441546,-4.5031733174503954e-5,3.7632239067973675e-8,0.0014876988747097991,-4.517047600970056e-5,3.772804673560034e-8,0.0014880330851069787,-4.5237407062414714e-5,3.776948065811721e-8,0.0014883611336936045,-4.522638867386191e-5,3.7753106366925946e-8,0.0014886470419661934,-4.5148829423299135e-5,3.768853679617695e-8,0.0014888610099375744,-4.503511107630251e-5,3.75991142701746e-8,0.0014889893734640611,-4.493078727593386e-5,3.7518833390943256e-8,0.0014890426802024238,-4.4885939658503095e-5,3.74844077895564e-8,0.0014890568559620368,-4.493900359979849e-5,3.752344755667185e-8,0.0014890836459080803,-4.5101175184416406e-5,3.7643181361237684e-8,0.001489172305795643,-4.535029512050693e-5,3.7826206234394064e-8,0.0014893513815948645,-4.5639131365739326e-5,3.803685162170241e-8,0.0014896203853677792,-4.591379586939746e-5,3.8234980089391865e-8,0.0014899543663838013,-4.613185728141613e-5,3.8389462478218916e-8,0.0014903162297077394,-4.6271946349084726e-5,3.848520377485263e-8,0.0014906691385107214,-4.6333741604474694e-5,3.852289537208366e-8,0.0014909844428688587,-4.6332267253878814e-5,3.851449641139075e-8,0.0014912446994979787,-4.629096295265064e-5,3.8477884251820716e-8,0.001491443475023993,-4.623604922293549e-5,3.843262815520471e-8,0.0014915838036451312,-4.61927449105687e-5,3.8397284898482245e-8,0.0014916764513131834,-4.618284796155863e-5,3.838776175182558e-8,0.0014917383357409837,-4.622298504810592e-5,3.8416126988273096e-8,0.0014917909428913134,-4.632303584535767e-5,3.848944739748476e-8,0.0014918583550758398,-4.648458412369112e-5,3.860856466449232e-8,0.0014919645095770773,-4.669969166698596e-5,3.8767106301308565e-8,0.001492129594339425,-4.695065290037247e-5,3.895130296913219e-8,0.0014923659795207224,-4.721144655663761e-5,3.914118664687933e-8,0.0014926745732702724,-4.745133715731877e-5,3.931347861780057e-8,0.0014930428020581202,-4.764050267803905e-5,3.944599080200351e-8,0.0014934453287540244,-4.77567381989998e-5,3.952272977792478e-8,0.0014938479976421455,-4.7791615726440825e-5,3.9538419803086526e-8,0.0014942145959709434,-4.775437268653611e-5,3.950114664854367e-8,0.0014945152548361581,-4.7672147717775885e-5,3.943216537025932e-8,0.0014947347496844735,-4.758571958330954e-5,3.936237614997539e-8,0.0014948784839529095,-4.754071729882442e-5,3.9325587712150906e-8,0.001494973688060228,-4.7575580700830986e-5,3.934960606065222e-8,0.001495063893699758,-4.7709339668887554e-5,3.9447410821275483e-8,0.0014951967819727924,-4.793386974666786e-5,3.961177012530231e-8,0.0014954089548056488,-4.82150113356529e-5,3.9816407071216556e-8,0.001495713972368483,-4.8503439552528306e-5,4.0024278257678855e-8,0.0014960992299929698,-4.875088216767253e-5,4.0199671339311314e-8,0.0014965325627533485,-4.892426755697233e-5,4.031863181757441e-8,0.0014969742965597005,-4.9012244353112056e-5,4.037361715514292e-8,0.0014973887060458133,-4.90234527916337e-5,4.037196030438772e-8,0.0014977509975768778,-4.897987925534544e-5,4.033069659995429e-8,0.0014980493699429142,-4.8909370842569586e-5,4.0270872530960104e-8,0.0014982838272042372,-4.8839785143966184e-5,4.0213214367086265e-8,0.0014984636893112296,-4.879533379597899e-5,4.017552829673121e-8,0.0014986050564438516,-4.879459745805125e-5,4.0171351190536136e-8,0.0014987286878216618,-4.884940264365551e-5,4.020917276631506e-8,0.0014988581486848397,-4.8963892845157507e-5,4.029171690125393e-8,0.0014990177337836207,-4.9133541633318104e-5,4.0415144161886566e-8,0.0014992296650089489,-4.934439725353427e-5,4.056846910653133e-8,0.0014995103608385159,-4.957328780427341e-5,4.073379081419653e-8,0.0014998661313054954,-4.978992849651283e-5,4.0888033317214166E-08,0.001500289438846751,-4.996169395570395e-5,4.100670227701081e-8,0.0015007575640223773,-5.00609271009138e-5,4.1069476582698656e-8,0.0015012354183340914,-5.0073132062903215e-5,4.106633523245191e-8,0.001501682931435136,-5.000313393611321e-5,4.10020124318666e-8,0.0015020653958463235,-4.9876318236111225e-5,4.089664152349184e-8,0.001502363510762478,-4.973362668651773e-5,4.078166708635209e-8,0.0015025796036362987,-4.9621359434477365e-5,4.06919240015438e-8,0.001502737788613337,-4.957881774687852e-5,4.0656280257301776e-8,0.0015028778851812186,-4.9627518948032364e-5,4.0689710099869005e-8,0.001503044775055048,-4.9765138003926926e-5,4.078912007859041e-8,0.001503276131990282,-4.9966042084288354e-5,4.093418214974257e-8,0.0015035921340975534,-5.0188522911167886e-5,4.109307745813918e-8,0.0015039904959644906,-5.038664086853307e-5,4.12314822617478e-8,0.0015044484479765602,-5.052272450607022e-5,4.1321828260849926e-8,0.0015049305867960681,-5.057627006151882e-5,4.1349724488542334e-8,0.0015053992671028003,-5.0546698588028124e-5,4.1315734395285215e-8,0.001505823682333701,-5.0450202162379264e-5,4.123276774522326e-8,0.0015061851264551991,-5.03131376162049e-5,4.1120991139124105e-8,0.00150647810650972,-5.0164985415371416e-5,4.100254562995308e-8,0.0015067085911635734,-5.003289045076868e-5,4.0897557578942296e-8,0.0015068910568689683,-4.9938339881018866e-5,4.0821788084939146e-8,0.0015070455081733843,-4.989557017837055e-5,4.078553560863914e-8,0.0015071949768719031,-4.991095762554463e-5,4.079319265895584e-8,0.0015073634330199596,-4.998270255847455e-5,4.0842964940455486e-8,0.001507573648758257,-5.0100484272582855e-5,4.092657881678172e-8,0.001507844474226869,-5.024531275080717e-5,4.1029213145852094E-08,0.0015081872475477102,-5.039029477878423e-5,4.113020982278904e-8,0.001508601639381369,-5.0503348351200574e-5,4.1205288990591655e-8,0.0015090721800536042,-5.0552825964399286e-5,4.123090271547341e-8,0.0015095677542445187,-5.051598845732162e-5,4.119061726808571e-8,0.0015100464398749296,-5.0388137396494456e-5,4.1081869583940654e-8,0.0015104661524490966,-5.0188150732697904e-5,4.091992886992478e-8,0.0015107980562968522,-4.995626598255443e-5,4.073597315450068e-8,0.0015110369884425087,-4.974323096834382e-5,4.056865503257804e-8,0.0015112037636235288,-4.9594689096187027e-5,4.0452143784550536e-8,0.0015113382538688342,-4.9537390122333774e-5,4.040571885063075e-8,0.001511486651518908,-4.9572491390367476e-5,4.0428949376900265e-8,0.0015116882343063284,-4.9677288522526345e-5,4.0503412055625985e-8,0.001511965832908493,-4.981328246977489e-5,4.0599203239587485e-8,0.0015123218678560742,-4.993712667865752e-5,4.0683458185044255e-8,0.0015127398774388951,-5.001120491259384e-5,4.072833176366586e-8,0.0015131902459503254,-5.0011430442294444e-5,4.0716651632460574e-8,0.0015136381639806527,-4.9930908725903795e-5,4.064433406034829e-8,0.0015140516272895985,-4.977923819466192e-5,4.051953249837382e-8,0.0015144075622012096,-4.9578319631606846e-5,4.035928102066704e-8,0.0015146949683276282,-4.9356355695184494e-5,4.0184938821169755e-8,0.0015149150502128804,-4.9141887980333486e-5,4.0017799643976816e-8,0.0015150791746275875,-4.895917584109024e-5,3.9875772118617474e-8,0.0015152057997848073,-4.8825388632539786e-5,3.977139653273003e-8,0.0015153173317295856,-4.874940504486354e-5,3.971098695425316e-8,0.0015154374095433952,-4.8731643689852686e-5,3.9694467703771245e-8,0.0015155886318726306,-4.876432642304724e-5,3.971551230211538e-8,0.0015157903988936615,-4.8831866635134174e-5,3.976183295261236e-8,0.0015160564336704537,-4.891150797550089e-5,3.9815759747989534e-8,0.001516391691608481,-4.8974788479225625e-5,3.985552106330658e-8,0.0015167888924818176,-4.899079602098747e-5,3.985786664037715e-8,0.0015172258993118245,-4.893217400965164e-5,3.9802659015735863e-8,0.0015176663030841539,-4.878381729040918e-5,3.967934665594565e-8,0.0015180658418397924,-4.855185669703154e-5,3.9493549812086156e-8,0.0015183852145058741,-4.8267882631723335e-5,3.927002879151628e-8,0.001518605245428821,-4.7983227159816684E-05,3.904816418536927e-8,0.0015187364109845078,-4.7752853667001454e-5,3.8869607112691156e-8,0.0015188162107197098,-4.76157007253304e-5,3.876330623471329e-8,0.0015188951081814535,-4.7581646967552716e-5,3.87356971621642e-8,0.0015190187423242043,-4.763095682004308e-5,3.877055536279872e-8,0.0015192148843438057,-4.7724206359166875e-5,3.883693164021174e-8,0.0015194889111096335,-4.7816122036906335e-5,3.890001525702813e-8,0.0015198265573875282,-4.78675190041975e-5,3.893034461914193e-8,0.0015202006147450764,-4.785267690604367e-5,3.8909281403952436e-8,0.0015205786058022936,-4.776206764521024e-5,3.883074987792664e-8,0.001520929655959892,-4.7601511265561416e-5,3.8700210594517606e-8,0.0015212297485279174,-4.73889457227636e-5,3.853192522081979e-8,0.001521464985636384,-4.714978616986874e-5,3.834534142739313e-8,0.001521632714070136,-4.691181862109943e-5,3.8161308626593714e-8,0.0015217407259916819,-4.6700544473304215e-5,3.7998737945680615e-8,0.001521805050737679,-4.653561112622005e-5,3.7872078917049705e-8,0.0015218469609350476,-4.6428620942574455e-5,3.77897496515343e-8,0.0015218898209953303,-4.638232433864213e-5,3.7753505077697286e-8,0.0015219562588472324,-4.63908829784902e-5,3.775855431522331e-8,0.0015220657852472567,-4.644073196168358e-5,3.779415592915643e-8,0.0015222326849345393,-4.6511768353575117e-5,3.78445580321092e-8,0.0015224639302797234,-4.6578917633677744e-5,3.789033821231449e-8,0.0015227569400496383,-4.6614434070743716e-5,3.791035015751786e-8,0.0015230973823843132,-4.659163295010869e-5,3.788469386599491e-8,0.0015234580899453059,-4.6490764418833046e-5,3.779915028577375e-8,0.0015238011301948635,-4.630679101973296e-5,3.765088713532935e-8,0.0015240852672769784,-4.6056717425461094e-5,3.7453737167092474e-8,0.001524279176362041,-4.578158370729293e-5,3.723946842777562e-8,0.0015243761207970313,-4.5537893273890615e-5,3.7051147789336374e-8,0.0015244012465784203,-4.537833811089991e-5,3.692846975976653e-8,0.0015244043069810233,-4.5330485030194646e-5,3.689159982476225e-8,0.001524440051851727,-4.5386093677926136e-5,3.693319329946158e-8,0.0015245475921702796,-4.550706901455292e-5,3.70231970685862e-8,0.001524739631177373,-4.564256280847005e-5,3.712221109997426e-8,0.0015250039821238194,-4.574645320979391e-5,3.719506196713576e-8,0.001525312469978232,-4.57880724817201e-5,3.7219009823727845e-8,0.0015256311465300198,-4.575529177708597e-5,3.71858758629502e-8,0.0015259283156329572,-4.5652460184988825e-5,3.710009588757813e-8,0.001526179490549331,-4.549604863952453e-5,3.697504333756095e-8,0.0015263698298762106,-4.5309863016883735e-5,3.682918922629797e-8,0.0015264948690534665,-4.5120549024834013e-5,3.668269874859717e-8,0.0015265600057452486,-4.495356643058214e-5,3.65545436819091e-8,0.0015265789603062382,-4.4829825029204026e-5,3.646015826369734e-8,0.0015265714591917814,-4.476317621887072e-5,3.640967597256171e-8,0.001526560393019653,-4.47588814097071e-5,3.6406785222506725e-8,0.0015265687425595057,-4.481319012855167e-5,3.6448328955322366e-8,0.001526616673386339,-4.491402171639455e-5,3.6524727155707175e-8,0.001526719088838322,-4.5042478706087005e-5,3.662110821247449e-8,0.001526883671120863,-4.517492388060347e-5,3.671899335520608e-8,0.001527109357997393,-4.528556689050531e-5,3.679846629243785e-8,0.0015273852648541443,-4.5349660451110904e-5,3.684080865883039e-8,0.0015276902649918051,-4.5347572784252786e-5,3.683168213824624e-8,0.0015279940023550515,-4.5269982630066084e-5,3.676496818810432e-8,0.001528260741500139,-4.5123660491407865e-5,3.664687940483986e-8,0.0015284573649040436,-4.493568923535388e-5,3.649883068748661e-8,0.0015285651819203082,-4.475224028990135e-5,3.6356268024786054e-8,0.001528591522529057,-4.462799322930828e-5,3.6260564495138095e-8,0.0015285733068809862,-4.4606708170989893e-5,3.6244339332635135e-8,0.0015285663015500417,-4.4701580903939586e-5,3.631667920617675e-8,0.001528623057978843,-4.4888075568297965e-5,3.645788182105769e-8,0.0015287721301055885,-4.511488889181742e-5,3.662804240559266e-8,0.0015290104785997134,-4.532567197125326e-5,3.678385405657058e-8,0.0015293104382067145,-4.547810886081325e-5,3.689331286542308e-8,0.0015296334898081117,-4.555238252513215e-5,3.6942127930790746e-8,0.0015299425822774475,-4.5549875508693376e-5,3.6932458321921016e-8,0.0015302094618059117,-4.5487012585997464e-5,3.687784149123152e-8,0.0015304173593234294,-4.538838777224406e-5,3.6797650641900755e-8,0.0015305608012845585,-4.5281191160702335e-5,3.6712741731269536e-8,0.0015306441945146152,-4.5191250244956506e-5,3.664253537729438e-8,0.0015306800306723414,-4.514019365633332e-5,3.660306514411148e-8,0.0015306868440561443,-4.5143317412885504e-5,3.660554118454364e-8,0.0015306868688130097,-4.5208046874071456e-5,3.665525950628058e-8,0.001530703372269813,-4.533304361844633e-5,3.675088279926432e-8,0.0015307577071024677,-4.550816475509205e-5,3.6884311766138235e-8,0.0015308663545292767,-4.5715530714938635e-5,3.7041438425744794e-8,0.001531038403461839,-4.5931705831679506e-5,3.7203859056823594e-8,0.0015312738096312358,-4.613076201647923e-5,3.7351380006003594e-8,0.001531562647587085,-4.628797631784266e-5,3.7465058196804165e-8,0.001531885540287841,-4.638388948223532e-5,3.753045447184219e-8,0.0015322154350115606,-4.6408424099129384e-5,3.75407624833672e-8,0.0015325210181051422,-4.636473481435046e-5,3.749952617090675e-8,0.0015327722562987192,-4.62720299113284e-5,3.742243109933671e-8,0.0015329482178092664,-4.616568661040811e-5,3.7337038635539955e-8,0.0015330459667584296,-4.60922941785365e-5,3.7278814888025735e-8,0.001533087023241133,-4.609795126881395e-5,3.728225619249699e-8,0.001533115983708838,-4.621153374983078e-5,3.736837190134323e-8,0.0015331876400693626,-4.643018459294151e-5,3.753391652633899e-8,0.0015333461088477486,-4.6716886718747485e-5,3.7749779963297116e-8,0.001533607077938741,-4.701413330082583e-5,3.797158062251958e-8,0.0015339536898771556,-4.7266463413301e-5,3.8156979046495933e-8,0.0015343469210881689,-4.7438804933053115e-5,3.827972461061156e-8,0.0015347420400233514,-4.7522609577066365e-5,3.833423468532848e-8,0.0015351018922789568,-4.75311913550837e-5,3.833175719045527e-8,0.0015354032268769953,-4.7490536847499134e-5,3.8293014468682244e-8,0.0015356372503282487,-4.7430749661384474e-5,3.8241437080403724e-8,0.0015358072060457936,-4.738020854009638e-5,3.819867181103716e-8,0.0015359252275494756,-4.736231090740194e-5,3.818223813016995e-8,0.0015360095332831896,-4.739380510817324e-5,3.820445815928393e-8,0.0015360820478136717,-4.748383499571379e-5,3.82718722773441e-8,0.001536166141831675,-4.763330834665019e-5,3.838478548063725e-8,0.001536284194639195,-4.783458629340891e-5,3.8536969464764897e-8,0.0015364548174580863,-4.8071792138992605e-5,3.871582755825761e-8,0.001536689888308331,-4.832221693893701e-5,3.890347256035087e-8,0.001536991949021952,-4.8559125680806725e-5,3.907898810591917e-8,0.0015373526882001662,-4.875585201501901e-5,3.9221757056841037E-08,0.0015377531409755225,-4.889068042494506e-5,3.931538272353313e-8,0.0015381659828674545,-4.895167436888976e-5,3.9351451406966635e-8,0.0015385598715198048,-4.894040830492917e-5,3.9332267184161023e-8,0.0015389053503828088,-4.887366805568127e-5,3.927184980018389e-8,0.0015391815674583567,-4.878238533919379e-5,3.919473310592367e-8,0.0015393827610044833,-4.870713902780217e-5,3.913220935194622e-8,0.001539522826925547,-4.868983638924286e-5,3.911586463438951e-8,0.001539635551012186,-4.8762258491063296e-5,3.916897922140672e-8,0.0015397681169518995,-4.893424373568861e-5,3.929783969200081e-8,0.0015399675307219867,-4.9186670824232385e-5,3.9486747633733346e-8,0.0015402639575685848,-4.94746582698892e-5,3.970072063670472e-8,0.001540658896768355,-4.974203898215638e-5,3.989665648604e-8,0.0015411250260262703,-4.9940960584229624e-5,4.0038309783718896e-8,0.0015416177088270302,-5.0046684404287795e-5,4.010752915400204e-8,0.0015420911707916128,-5.006124568783706e-5,4.010688682435594e-8,0.0015425111740769344,-5.000709715400226e-5,4.00545534176231e-8,0.0015428603593231258,-4.9916572907574924e-5,3.9975967592465016e-8,0.001543137348004615,-4.9822560505639655e-5,3.9896549730067413e-8,0.0015433527728847896,-4.9752685894152456e-5,3.983728353617607e-8,0.0015435248853113634,-4.972672630231794e-5,3.981289716560943e-8,0.0015436759860362377,-4.975595477250484e-5,3.9831537088095255e-8,0.0015438297952060482,-4.984325147671539e-5,3.989494979643839e-8,0.0015440093369692496,-4.998334813656624e-5,3.999866380557658e-8,0.0015442348151259754,-5.016309804535865e-5,4.013214246585282e-8,0.0015445211154071746,-5.0362121259628284e-5,4.027925529887606e-8,0.0015448749611662643,-5.055446980018576e-5,4.0419618992163206e-8,0.0015452923005028491,-5.071189862384606e-5,4.053125674762409e-8,0.0015457569800726891,-5.0808855828295383E-05,4.059460327889975e-8,0.0015462418900000286,-5.082850879931722e-5,4.059724221672877e-8,0.0015467132993301472,-5.076823346637892e-5,4.0538094268894254e-8,0.0015471380038922773,-5.064252614673594e-5,4.042945683138028e-8,0.0015474916360774626,-5.048174585710053e-5,4.0295709244955134e-8,0.0015477657624747324,-5.0326348408581844e-5,4.016852598729084e-8,0.0015479715584376128,-5.02176988612463e-5,4.00795759607021e-8,0.001548138675163666,-5.018759931395581e-5,4.0052468864238434e-8,0.001548309019173918,-5.0249167170106635e-5,4.0095999848332944e-8,0.001548526363415651,-5.039173011559901e-5,4.020064552392213e-8,0.001548824072026234,-5.0581979693915296e-5,4.033985817256759e-8,0.0015492146318262102,-5.0772290610955474e-5,4.047669746431854e-8,0.0015496851936439822,-5.091443598787875e-5,4.057438892398452e-8,0.001550201601146154,-5.0973893683465014e-5,4.0607169310144533e-8,0.001550719547427848,-5.093895551994056e-5,4.0567056747315524e-8,0.0015511979549022272,-5.082132789363123e-5,4.0464060310906736e-8,0.001551609085796503,-5.064930767517722e-5,4.032070429909841e-8,0.001551942485882253,-5.045777032215602e-5,4.0164179972009266e-8,0.001552203365741154,-5.027932903282667e-5,4.0019527762343134e-8,0.0015524080338778475,-5.0138911795649996e-5,3.990557662144009e-8,0.0015525789206599471,-5.005169954767954e-5,3.983352487266917e-8,0.0015527405622942454,-5.0023207216840704e-5,3.980713258549693e-8,0.001552916795278977,-5.005024771803662e-5,3.982350168918181e-8,0.0015531287739189376,-5.012197934084325e-5,3.987384769919168e-8,0.0015533932025365111,-5.022080731770897e-5,3.99441559610026e-8,0.0015537202826231122,-5.03234457482546e-5,4.0016025565273536e-8,0.0015541112665716941,-5.0402810390084915e-5,4.0068239562396716e-8,0.0015545561079804125,-5.0431489448755314e-5,4.007959506236113e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json new file mode 100644 index 0000000000..dc1eb06c03 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":15000,"numberOfSamples":1000,"samples":[0.001555032396790159,-5.038717964716439e-5,4.003321453737454e-8,0.001555507240340409,-5.025945257220019e-5,3.992178064606655e-8,0.0015559433318249748,-5.005568561411016e-5,3.975199831316558e-8,0.0015563086828940746,-4.9802949292686764e-5,3.9545822083813816e-8,0.001556587031841404,-4.9543375923704664e-5,3.9336583092513e-8,0.0015567845028372617,-4.93232976794034e-5,3.9160317297773175e-8,0.0015569291408115862,-4.9179757456819175e-5,3.904518941710335e-8,0.0015570631279621951,-4.912957061070448e-5,3.90031151041951e-8,0.0015572306984882043,-4.916483994647903e-5,3.902661169621281e-8,0.0015574660511056152,-4.9255840502179806e-5,3.9091477245714126e-8,0.0015577847760354089,-4.9359606772293576e-5,3.9163823082464017e-8,0.001558180685115808,-4.943135773630568e-5,3.920908834205859e-8,0.0015586283968716341,-4.943566203060656e-5,3.920059314584998e-8,0.0015590906701226305,-4.9354497209498185e-5,3.9125494924869697e-8,0.001559528261058972,-4.919020584318819e-5,3.8986728207848124e-8,0.0015599093591160292,-4.896289913685733e-5,3.880070214408021e-8,0.0015602159244718476,-4.870367300374791e-5,3.8591890031225615e-8,0.001560445583043622,-4.844627081761637e-5,3.838637217885279e-8,0.0015606095190522666,-4.821988699048854e-5,3.8206389463064e-8,0.001560728059333107,-4.80447105719932e-5,3.8067072967328046e-8,0.0015608258215469178,-4.7930366808124216e-5,3.797538689472998e-8,0.0015609276655558022,-4.787644642721989e-5,3.793059714039383e-8,0.0015610558505919753,-4.7874043041353836e-5,3.792543115973339e-8,0.0015612281647851558,-4.7907464781617856e-5,3.794734148986789e-8,0.0015614564996265033,-4.795579391508165e-5,3.797969902153523e-8,0.0015617453775785114,-4.7994480662788104e-5,3.8003106795686565e-8,0.001562090231917282,-4.799751763502489e-5,3.7997236526191586e-8,0.0015624757732016965,-4.7940913074933274e-5,3.7943666553683704e-8,0.0015628755385377238,-4.780797264952134e-5,3.783002608138753e-8,0.0015632543909054244,-4.759591895225801e-5,3.765503864336205e-8,0.0015635755508337965,-4.7321569326116703e-5,3.743272490582087e-8,0.0015638118247210714,-4.702212301492192e-5,3.719276938020053e-8,0.0015639572183669657,-4.674759666086147e-5,3.697442350326965e-8,0.0015640325431972783,-4.654548661616456e-5,3.681443353406246e-8,0.0015640803149591668,-4.644389332460276e-5,3.673389012822279e-8,0.0015641503210691414,-4.644165242496307e-5,3.673070606589074e-8,0.0015642829369577056,-4.651013021168292e-5,3.678135043023996e-8,0.0015644977495392904,-4.660446073429612e-5,3.685000664095114e-8,0.001564790749643378,-4.6677917336542896e-5,3.6900071652951433e-8,0.001565138707406003,-4.66938238368795e-5,3.690350083708066e-8,0.0015655073435626183,-4.663241657433939e-5,3.6845954665167155e-8,0.0015658602190323327,-4.649255514773499e-5,3.672776169544263e-8,0.0015661663607259592,-4.628936931980565e-5,3.656170224679889e-8,0.0015664055799049252,-4.6049225283354464e-5,3.636883604376693e-8,0.001566571002171141,-4.580336936715299e-5,3.6173502381504967e-8,0.0015666687673390187,-4.558160277952096e-5,3.599852488215996e-8,0.0015667154033415197,-4.5407215387777025e-5,3.586148463513818e-8,0.0015667338355941623,-4.529393320932333e-5,3.577253994149994e-8,0.0015667490993197454,-4.524500274399756e-5,3.573380667359368e-8,0.0015667846174289822,-4.5254024907903564e-5,3.57399848967389e-8,0.001566859497029681,-4.5306834496840176e-5,3.5779734964378544e-8,0.0015669868024443458,-4.5383715412729446e-5,3.583733887760147e-8,0.001567172455798627,-4.546158479647085e-5,3.5894430294282084e-8,0.0015674144103284765,-4.551618411695069e-5,3.593183701499408e-8,0.001567701899164982,-4.5524599621765035e-5,3.593172347162997e-8,0.0015680149455750063,-4.5468646452923546e-5,3.588034316011282e-8,0.001568325023881159,-4.533952995396979e-5,3.577163595791014e-8,0.001568598375261144,-4.514331996072684e-5,3.561129614715066e-8,0.0015688033307539359,-4.490516831986402e-5,3.5419775786897466e-8,0.0015689213635770478,-4.4668520678280764e-5,3.5231422956829793e-8,0.0015689580930293371,-4.448560774152507e-5,3.508694038347068e-8,0.001568947072838441,-4.439966029933874e-5,3.501951652065551e-8,0.0015689406813127415,-4.442653532989222e-5,3.5040594280255434e-8,0.0015689905208410501,-4.454694343553021e-5,3.5134005465375e-8,0.0015691279470960945,-4.471462114836585e-5,3.526264408522862e-8,0.001569355167197491,-4.4874982251366504e-5,3.5383351783517066e-8,0.0015696491590304815,-4.498328840192346e-5,3.5461324901144965e-8,0.0015699730086184231,-4.5014843868502684e-5,3.547806086334234e-8,0.0015702878466824224,-4.496644962533722e-5,3.5432227789964445e-8,0.0015705615045717492,-4.48522455988792e-5,3.5336015448358164e-8,0.0015707731361774711,-4.469737825179658e-5,3.520983386424041e-8,0.0015709146371371892,-4.453167337270511e-5,3.507720338549927e-8,0.0015709899450492496,-4.4384204168804375e-5,3.4960569188722246e-8,0.0015710129446352492,-4.427899769327988e-5,3.487815813513884e-8,0.0015710044338982897,-4.4232035758685976e-5,3.484187409746818e-8,0.0015709885901114629,-4.424966839076787e-5,3.48562113954969e-8,0.0015709893763831153,-4.4328433769242266e-5,3.491813422291662e-8,0.0015710273252120134,-4.4456174728882454e-5,3.501786728147512e-8,0.001571117095259444,-4.4614146603934006e-5,3.514044529398255e-8,0.0015712659471281585,-4.4779625550250765e-5,3.526772890807883e-8,0.0015714729990209998,-4.492865339998087e-5,3.5380643711257126e-8,0.0015717290886569444,-4.503882672267935e-5,3.5461540303863484e-8,0.0015720171486412,-4.509218250304847e-5,3.549662088853352e-8,0.0015723131710548195,-4.507838065681111e-5,3.547847663955526e-8,0.0015725883317389549,-4.499835421555663e-5,3.540880348366659e-8,0.001572813307826608,-4.486786800809496e-5,3.5300892636416496e-8,0.0015729655070056204,-4.47191603474519e-5,3.518058646081875e-8,0.0015730384980441499,-4.459776227937817e-5,3.5083578249073555e-8,0.0015730502214990328,-4.4551776967474605e-5,3.504702004926623e-8,0.0015730436787471955,-4.461436338745037e-5,3.5095992048822466e-8,0.0015730749295945277,-4.478695231412046e-5,3.5230609633398364e-8,0.00157319126570817,-4.5034672737442647e-5,3.542266299781257e-8,0.0015734115792861226,-4.529940702276995e-5,3.562602881073632e-8,0.0015737208148722149,-4.552319788898638e-5,3.5795178558746185e-8,0.0015740799139331147,-4.5667994072365434e-5,3.590075376760617e-8,0.0015744426094396393,-4.572297761098429e-5,3.593523410445762e-8,0.0015747694654922382,-4.570060260613509e-5,3.5909545233455296e-8,0.0015750350883362262,-4.56275210357777e-5,3.584556214181634e-8,0.0015752294134122743,-4.5535604842148e-5,3.576877953266378e-8,0.0015753556604648073,-4.545534529408837e-5,3.5703062165524755e-8,0.0015754271119554817,-4.541175214597163e-5,3.566756900441209e-8,0.0015754637850900197,-4.5422021566715475e-5,3.567516845886349e-8,0.0015754892419881964,-4.549435685857388e-5,3.5731726192643936e-8,0.0015755275323007985,-4.562767745693644e-5,3.5835969133508226e-8,0.0015756002822981585,-4.581213815904196e-5,3.597985887669808e-8,0.0015757240290649212,-4.603051129355547e-5,3.6149580268519345e-8,0.0015759080778055216,-4.626046736804536e-5,3.632726928230143e-8,0.0015761532032229398,-4.6477532670966515e-5,3.6493374497356665e-8,0.0015764513190264005,-4.66583682351069e-5,3.662937540080888e-8,0.0015767861221216862,-4.6784116146357104e-5,3.67205887315865e-8,0.0015771347357232419,-4.6843579857850895e-5,3.6758772560147956e-8,0.0015774703483009739,-4.683599304438294e-5,3.67442426941251e-8,0.0015777659552356682,-4.677317302149219e-5,3.66873186351272e-8,0.0015779995237324785,-4.668049190430199e-5,3.660873387655922e-8,0.0015781605555831091,-4.659528839149842e-5,3.6538079166891776e-8,0.0015782567852510353,-4.656091594072024e-5,3.650901070819981e-8,0.0015783179633283798,-4.6615418475760236e-5,3.655049543919046e-8,0.0015783922903835324,-4.677665068892878e-5,3.667544840847755e-8,0.0015785325756434202,-4.703036852583066e-5,3.687171431896692e-8,0.0015787756427616659,-4.733035159097787e-5,3.7102367094230025e-8,0.0015791259181678027,-4.761430923312568e-5,3.731827295238525e-8,0.0015795538411506713,-4.7828037828527396e-5,3.747709330858676e-8,0.0015800096969891477,-4.7943878769038486E-05,3.7557792145692596e-8,0.0015804431624417705,-4.796481847401571e-5,3.756375094216574e-8,0.0015808178057632656,-4.791635491291735e-5,3.7516101368887467e-8,0.0015811164141571583,-4.783405291768669e-5,3.744360223405161e-8,0.0015813392677104443,-4.775314048922322e-5,3.737423693485045e-8,0.0015814993203580124,-4.7702326404354844e-5,3.733035174588052e-8,0.0015816171643790661,-4.7701193814970105e-5,3.7326791516613286e-8,0.0015817169630395575,-4.775965776778595e-5,3.737071389079256e-8,0.001581823347515752,-4.787832470052812e-5,3.7462041637598934e-8,0.0015819588828547596,-4.8049258257063996e-5,3.7594106726625155e-8,0.0015821417963573898,-4.8257082895207296e-5,3.775446258471748e-8,0.0015823838479101893,-4.848060164321304e-5,3.792608585212836e-8,0.001582688504544025,-4.869520808633535e-5,3.8089269531459865e-8,0.0015830498625370153,-4.887615170356731e-5,3.822428825087552e-8,0.0015834527637300596,-4.9002351733972964e-5,3.8314560752223585e-8,0.0015838743628422021,-4.906026034512833e-5,3.834982706901485e-8,0.001584287221216587,-4.904715037019271e-5,3.832875105474419e-8,0.001584663741938823,-4.897310145628491e-5,3.826032241557493e-8,0.001584981463061841,-4.8861079857009655e-5,3.8163607031293117e-8,0.0015852285820703014,-4.874466991235223e-5,3.8065608345197424e-8,0.0015854088600154176,-4.8662962215500585e-5,3.7997004979177486e-8,0.0015855444217866606,-4.86522846509656e-5,3.798563784368472e-8,0.001585674261819128,-4.8735533803462465e-5,3.804836085608511e-8,0.001585846375312292,-4.891189807186035e-5,3.818334234181005e-8,0.00158610348310477,-4.9151982596995845e-5,3.836657757562266e-8,0.001586466654834368,-4.9403489989380824e-5,3.8556531405909456e-8,0.0015869251102463237,-4.960807810621859e-5,3.870740581132169e-8,0.0015874391429179613,-4.9722343633764594e-5,3.8785587350351096e-8,0.0015879553631793688,-4.973190214442801e-5,3.878064452942808e-8,0.001588425577199708,-4.9652024693980827e-5,3.870567071163837e-8,0.00158881977381429,-4.951725979120483e-5,3.8588846273972866e-8,0.0015891295065786543,-4.936775952074638e-5,3.84623889278333e-8,0.001589364066660281,-4.9238715531157035e-5,3.8354092314337146e-8,0.001589543909685928,-4.9154994199223596e-5,3.8283168581558065e-8,0.0015896945618050432,-4.9129902713118106e-5,3.825948659678869e-8,0.0015898422153512498,-4.916611627099987e-5,3.8284520145138256e-8,0.001590010859028341,-4.925727610695112e-5,3.8352726691160195e-8,0.0015902202966968217,-4.938958761833569e-5,3.845280876708773e-8,0.0015904844846205953,-4.954336749390981e-5,3.8568874325898195e-8,0.0015908099083882816,-4.969485381752708e-5,3.868182932013065e-8,0.0015911941068452644,-4.98187279964764e-5,3.8771413773902485e-8,0.0015916248545581027,-4.989160905264646e-5,3.881908380631811e-8,0.0015920807276100831,-4.9896318601345885e-5,3.881152013111638e-8,0.0015925336582621405,-4.982618528736371e-5,3.874409592893164e-8,0.0015929536328127007,-4.9688213379708714e-5,3.862330576383604e-8,0.0015933149629505758,-4.950379940089145e-5,3.846710078351864e-8,0.001593602808933612,-4.930610263244153e-5,3.830248200720968e-8,0.0015938182399501703,-4.913404445176729e-5,3.8160453318297506e-8,0.0015939802243672306,-4.902380951458289e-5,3.806916042959481e-8,0.0015941233988982489,-4.899946750049259e-5,3.8046581250505863e-8,0.0015942911880484664,-4.906498251129774e-5,3.80945375169188e-8,0.0015945249563040758,-4.920032285756388e-5,3.8196040630227036e-8,0.0015948515164234465,-4.9364207196608636e-5,3.8317796980507725e-8,0.001595273159867582,-4.950449066879408e-5,3.841854809931519e-8,0.0015957650230228916,-4.9573895929635576e-5,3.846143646287539e-8,0.0015962822947114133,-4.954513058246872e-5,3.842577890144347e-8,0.0015967748230214939,-4.941856956430488e-5,3.8312929742037596e-8,0.001597202494943064,-4.921934317902047e-5,3.814375061431865e-8,0.0015975448239908775,-4.898645979137916e-5,3.794978155712491e-8,0.0015978022649466863,-4.876005227964857e-5,3.7762998553756675e-8,0.0015979913135114392,-4.85719625681952e-5,3.76083609760703e-8,0.0015981373497028673,-4.84414879329937e-5,3.750059586381275e-8,0.0015982682896983585,-4.837523496803743e-5,3.744429677813117e-8,0.0015984102235238262,-4.8369073369492696e-5,3.743563223650375e-8,0.0015985848577516198,-4.8410619737028296e-5,3.746436079232389e-8,0.0015988080578801715,-4.848147621960483e-5,3.751556089859576e-8,0.0015990887787054714,-4.8559129023742496e-5,3.7571077107145096e-8,0.0015994279675657184,-4.861890144868653e-5,3.761106919377434e-8,0.0015998175105410416,-4.8636534469734454e-5,3.761614354464905e-8,0.0016002397772522405,-4.859177185400766e-5,3.757032802152641e-8,0.0016006686543139628,-4.84728413566226e-5,3.74647259539885e-8,0.0016010729910405593,-4.828097347843213e-5,3.7301095421887124e-8,0.0016014227983081818,-4.8033231546302496e-5,3.709395135898375e-8,0.0016016972164009232,-4.776158920159305e-5,3.686957478771082e-8,0.001601891799677878,-4.750708267512769e-5,3.6661070725469196e-8,0.0016020220967839574,-4.730984733590426e-5,3.65002268054441e-8,0.0016021214376728508,-4.7197895387483466e-5,3.640855159267248e-8,0.0016022329539292035,-4.7178441191331395e-5,3.6390568883612766e-8,0.001602398098868516,-4.723486700987873e-5,3.64317778525816e-8,0.0016026451775172069,-4.7330459524417435e-5,3.6502037536061675e-8,0.0016029812826023223,-4.741790311922242e-5,3.6563402100527594e-8,0.0016033900211863004,-4.7451924030049034e-5,3.658023478305435e-8,0.0016038359142873748,-4.7401493578198037e-5,3.65287527576269e-8,0.0016042743565764664,-4.725778830099e-5,3.6403069368047857e-8,0.0016046639296792753,-4.703526837810497e-5,3.621574128865795e-8,0.0016049768310006606,-4.676579911472799e-5,3.599284252644777e-8,0.0016052041001474093,-4.6488499312397777e-5,3.576575444073776e-8,0.0016053547788864799,-4.623936983449527e-5,3.556292473478258e-8,0.0016054506685802667,-4.604404725371659e-5,3.540424269592429e-8,0.00160551955904301,-4.591491456251917e-5,3.529894528530359e-8,0.0016055893304846428,-4.585176544402924e-5,3.5246319584402404e-8,0.0016056839738281931,-4.584435487657563e-5,3.523780378361235e-8,0.0016058214226180075,-4.58754099005351e-5,3.525934967930275e-8,0.0016060125662822487,-4.5923316964371105e-5,3.5293484731850514e-8,0.0016062607469574757,-4.5964330399595076e-5,3.5321033008763995e-8,0.0016065612721366269,-4.597465556251913e-5,3.5322825752794e-8,0.001606900939181552,-4.5932990607520925e-5,3.528185027009399e-8,0.0016072580949436541,-4.582396800827508e-5,3.518611857277115e-8,0.0016076041773001588,-4.564246758849356e-5,3.503214741997083e-8,0.001607907835484071,-4.539791130326102e-5,3.482829369055841e-8,0.001608142149154005,-4.511646354493401e-5,3.4596304332457856e-8,0.0016082937279128775,-4.483839603063741e-5,3.4368956580540236e-8,0.001608370164011681,-4.460905850485839e-5,3.418262319337986e-8,0.0016084013367679887,-4.4465215778220584e-5,3.4066244784300986e-8,0.0016084321421592992,-4.442209614898366e-5,3.4031040378216796e-8,0.0016085087032214472,-4.4467328910789975e-5,3.406590890538271e-8,0.001608663854204168,-4.4564751128790306e-5,3.414084287148784e-8,0.0016089078261996121,-4.466603533873435e-5,3.4216585652257157e-8,0.0016092268749752002,-4.472491235101269e-5,3.425621097733665e-8,0.0016095888815234746,-4.470896660568734e-5,3.4234524970492415e-8,0.00160995294459917,-4.46061700180591e-5,3.414304169545714e-8,0.0016102797685153603,-4.442554150736995e-5,3.39901449867369e-8,0.001610540291413511,-4.41928249660299e-5,3.379729090404697e-8,0.001610720877149768,-4.3942959524330366e-5,3.3592785051752095e-8,0.0016108243718107255,-4.3711535533740247e-5,3.340493987008991e-8,0.0016108673896750982,-4.352740556905542e-5,3.325631883018611e-8,0.0016108751528596623,-4.340803798367828e-5,3.31602500419108e-8,0.0016108756639389974,-4.3358117340029234e-5,3.31199083561361e-8,0.00161089471982018,-4.33708154841172e-5,3.312942713946964e-8,0.0016109525410755215,-4.34306101333567e-5,3.317612870807587e-8,0.0016110620470242626,-4.351655218140907e-5,3.3243045504261954e-8,0.001611228317562383,-4.360524372648092e-5,3.331122931252226e-8,0.0016114486396584151,-4.367330914275547e-5,3.336174083792286e-8,0.0016117127150576606,-4.3699607289291936e-5,3.33775293772246e-8,0.0016120029665654158,-4.366764384768521e-5,3.3345510827283086e-8,0.0016122953248352881,-4.35685848202546e-5,3.3259070099345036e-8,0.0016125613483437497,-4.340490324202378e-5,3.312093756709973e-8,0.0016127727551766623,-4.319382193216696e-5,3.294576076085041e-8,0.0016129088996316033,-4.296843215561775e-5,3.276074107332174e-8,0.0016129659137071207,-4.277350269527232e-5,3.260204841704383e-8,0.0016129634518711477,-4.2654123502679954e-5,3.250560511019986e-8,0.0016129434192342419,-4.263951160928507e-5,3.249413087936494e-8,0.0016129578689934336,-4.272950726670111e-5,3.25664702196115e-8,0.001613050232896208,-4.2892278302879625e-5,3.2696007974918103e-8,0.0016132395138366183,-4.307566567224347e-5,3.2840080832235315e-8,0.0016135153781361821,-4.3225967007183096e-5,3.295532521363271e-8,0.0016138447598283675,-4.330446141592195e-5,3.3011068605873004e-8,0.0016141845061787268,-4.329558915141256e-5,3.299579503566333e-8,0.0016144937858859182,-4.320654916003372e-5,3.29165093334752e-8,0.0016147426836319956,-4.3061418898431364e-5,3.2793617549553344e-8,0.0016149162538619413,-4.28932148940195e-5,3.2654235700933185e-8,0.0016150148382885333,-4.273622151749938e-5,3.252591778532962e-8,0.0016150517857130536,-4.261972946654225e-5,3.243173477682972e-8,0.001615049514803641,-4.256367933918242e-5,3.238701919898679e-8,0.0016150347633862986,-4.2576490174574447e-5,3.239787068664833e-8,0.0016150339039934956,-4.265505690214593e-5,3.24613058418649e-8,0.0016150690590622733,-4.278649690659109e-5,3.2566675877575025e-8,0.0016151554483356746,-4.2951022505443604e-5,3.269788817933618e-8,0.0016153001048231429,-4.312527285417708e-5,3.283598386574173e-8,0.0016155017602802555,-4.328548587995333e-5,3.2961656880308e-8,0.0016157514557302796,-4.3410193344149555e-5,3.305749480030836e-8,0.0016160335151886938,-4.348253336100209e-5,3.310998203842222e-8,0.0016163267962227231,-4.3492450229067064e-5,3.311139396130571e-8,0.001616606420595729,-4.343902077762299e-5,3.306167660919614e-8,0.001616846570836147,-4.3332918110579625e-5,3.297027424956425e-8,0.0016170251774682734,-4.319829401359851e-5,3.285736904569684e-8,0.0016171308087405997,-4.307222907662207e-5,3.2753160720529384e-8,0.0016171704476762414,-4.299915965162309e-5,3.2693234113441636e-8,0.0016171742841552047,-4.301865193973153e-5,3.2708769773927315e-8,0.0016171918923307148,-4.314894035091985e-5,3.281350053431754e-8,0.0016172768691222427,-4.337450691395369e-5,3.299396166424684e-8,0.0016174652144145727,-4.364756211844907e-5,3.321089173978478e-8,0.0016177597932134746,-4.390561146011057e-5,3.341354613711286e-8,0.0016181304852361284,-4.4095543629212986e-5,3.3559243265705895e-8,0.0016185284692897027,-4.4190547319258514e-5,3.362705585213057e-8,0.0016189045522376445,-4.4193243891010715e-5,3.362020601659291e-8,0.0016192223969067512,-4.412817824935237e-5,3.355967969498163e-8,0.0016194638193470891,-4.403063195720452e-5,3.34748138358053e-8,0.0016196280163832983,-4.393679585500097e-5,3.339511192107193e-8,0.0016197277267549035,-4.3877154423368346e-5,3.334489133236136e-8,0.0016197845593948158,-4.387287847418416e-5,3.334056960624522e-8,0.0016198245204375643,-4.3934319125600074e-5,3.3389732573910446e-8,0.0016198739737394417,-4.4060948688515964e-5,3.3491313790702704e-8,0.001619956137050907,-4.424248547766236e-5,3.3636593203828094e-8,0.0016200882954145463,-4.4460987523551896e-5,3.381084517949932e-8,0.0016202798937417601,-4.469366279624242e-5,3.399550450501883e-8,0.0016205316675254457,-4.4916122131234496e-5,3.417072218106146e-8,0.0016208358841783572,-4.51056635939364e-5,3.431804144775011e-8,0.0016211775123474187,-4.524417861154815e-5,3.442285758382958e-8,0.0016215360341788234,-4.532053562216261e-5,3.447647579529873e-8,0.0016218877589150979,-4.5332465127465866e-5,3.4477688314315185e-8,0.0016222086413283134,-4.528794941479019e-5,3.4433800071019065e-8,0.0016224777898770169,-4.520602795248432e-5,3.436102856785716e-8,0.0016226820080681198,-4.511649275684907e-5,3.428394416218811e-8,0.0016228212897336288,-4.505716598228851e-5,3.423303906504118e-8,0.0016229139005976808,-4.50670885186496e-5,3.423920259833186e-8,0.0016229978830992289,-4.51749217202737e-5,3.432456868826437e-8,0.0016231246866747196,-4.538503437297744e-5,3.449162408965321e-8,0.0016233428870291516,-4.566853319778398e-5,3.4716252957965794e-8,0.0016236772248806965,-4.596812991238768e-5,3.495178509204106e-8,0.0016241152647686152,-4.621869465816446e-5,3.514559949367053e-8,0.0016246116056889723,-4.637312377459764e-5,3.526003661180751e-8,0.0016251072872445914,-4.6418152194176277e-5,3.5285198490338464e-8,0.0016255516901675028,-4.637296697358738e-5,3.523771443245092e-8,0.0016259155653828902,-4.627592173555477e-5,3.5149685697300395e-8,0.0016261928281600965,-4.616943668607092e-5,3.5056106184870745e-8,0.0016263953747431522,-4.608946050777786e-5,3.4986134383754507e-8,0.00162654592076792,-4.606055522365073e-5,3.4959174040392114e-8,0.0016266717530924076,-4.6094961601108544e-5,3.498436583192719e-8,0.0016268002162611959,-4.619362578856872e-5,3.506170277704274e-8,0.0016269555762756986,-4.6347898809298577e-5,3.5183591772346576e-8,0.0016271567027249208,-4.654151467710764e-5,3.533649211716943e-8,0.0016274153179251607,-4.675286847043376e-5,3.550269075582101e-8,0.0016277348011426761,-4.695766887346226e-5,3.566236234788382e-8,0.0016281097039318963,-4.7132008983412574e-5,3.5796030279421156e-8,0.0016285262644494334,-4.7255678611228e-5,3.5887315314142226e-8,0.001628964073625187,-4.731526564371127e-5,3.5925567937765023E-08,0.0016293987695045343,-4.7306594472402196e-5,3.5907931482636357e-8,0.0016298055166128098,-4.723617482978707e-5,3.5840485560798704e-8,0.0016301629750232944,-4.7121376003895105e-5,3.573820180050115e-8,0.0016304574112304933,-4.698912835410786e-5,3.562359354313474e-8,0.001630686636381212,-4.687296006046646e-5,3.552402309108488e-8,0.001630863266571223,-4.6807921698255846e-5,3.546744809793738e-8,0.001631016074302961,-4.6822961021669483e-5,3.5476346222796364e-8,0.0016311873490471736,-4.6931285427303824e-5,3.556023149782128e-8,0.0016314241196807519,-4.712134705140385e-5,3.570874980570606e-8,0.0016317631244090534,-4.7353656267366736e-5,3.5889370924150126e-8,0.0016322143049490748,-4.756904084464057e-5,3.605411987293246e-8,0.0016327523237028758,-4.770869469055887e-5,3.615570802256036e-8,0.001633323721960312,-4.7737093003807625e-5,3.616600609540491e-8,0.0016338673630050457,-4.7654512699828896e-5,3.608614967055138e-8,0.0016343363161102794,-4.7492623882838964e-5,3.59428498486487e-8,0.0016347097760828822,-4.729839554612501e-5,3.577507367476015e-8,0.0016349924051370127,-4.7117130386448616e-5,3.5619987353530545e-8,0.0016352061343948639,-4.6981902350859326e-5,3.550426387925348e-8,0.0016353807083681227,-4.691028273741784e-5,3.544154910868567e-8,0.0016355464804455415,-4.690570628738172e-5,3.543383998937961e-8,0.001635730112170018,-4.696057989449839e-5,3.5474262687520425e-8,0.0016359523601496132,-4.705941012943231e-5,3.5549738432914185e-8,0.0016362269041772656,-4.718145036852111e-5,3.56431208201011e-8,0.0016365595879771274,-4.730304536267612e-5,3.5735016865504467e-8,0.0016369478987237219,-4.7400035126582016e-5,3.58056778292684e-8,0.0016373808483354118,-4.7450543227840547e-5,3.583728050603426e-8,0.0016378397017732427,-4.7438197284311285e-5,3.581663456998011e-8,0.0016383000265438497,-4.7355354305080354e-5,3.573790790644766e-8,0.001638735210162438,-4.720557229499285e-5,3.5604668453241686e-8,0.0016391211394910926,-4.700451726643738e-5,3.5430520082254106e-8,0.001639441306452008,-4.6778640180967995e-5,3.5237790208829276e-8,0.0016396912690668532,-4.6561377647454084e-5,3.5054142350092676e-8,0.0016398813658379573,-4.63872399230719e-5,3.490753406266736e-8,0.0016400368292994823,-4.628458200577974e-5,3.4820292858860436e-8,0.0016401946504560447,-4.6268117996810935e-5,3.480322538106792e-8,0.0016403967479677747,-4.6332728578918845e-5,3.485095674241419e-8,0.001640679685853359,-4.645083249127904e-5,3.494018708827335e-8,0.0016410627568417529,-4.657595311703952e-5,3.5032828146860476e-8,0.0016415385136823188,-4.665404102506928e-5,3.5085209016852697e-8,0.0016420712361589218,-4.6640593747802424e-5,3.506183028304087e-8,0.0016426066758982037,-4.651680204060536e-5,3.49483030632206e-8,0.0016430902029990438,-4.6296213477060036e-5,3.4756616314912035e-8,0.0016434846325752775,-4.601807762842053e-5,3.451956176891535e-8,0.0016437792010674768,-4.573164001443794e-5,3.4277753576294015e-8,0.0016439873944463735,-4.5480182565328244e-5,3.406648234300473e-8,0.0016441377649539473,-4.5291435015766347e-5,3.390791520498886e-8,0.0016442637177816871,-4.517553440841134e-5,3.38096166616314e-8,0.0016443960339398653,-4.512789702654878e-5,3.376713660815342e-8,0.0016445588953631549,-4.5133752929414504e-5,3.3767884966551584e-8,0.0016447684565497988,-4.517231429766106e-5,3.3794572068923304e-8,0.001645032669366525,-4.521994135279829e-5,3.382772789479797e-8,0.0016453514524502528,-4.5252519765481794e-5,3.3847558228796395e-8,0.0016457168505185967,-4.524759349498278e-5,3.38356608525806e-8,0.001646113327512554,-4.51867851078022e-5,3.3777059144320585e-8,0.0016465187233436285,-4.5058731090684236e-5,3.366270182651552e-8,0.0016469065595708819,-4.4862213010709696e-5,3.349209230451183e-8,0.0016472501485759548,-4.460855757214049e-5,3.327522050357837e-8,0.0016475282892311342,-4.43219688174928e-5,3.303267631530774e-8,0.001647731361928809,-4.40365769207798e-5,3.279298525555044e-8,0.0016478658173717641,-4.378990661504161e-5,3.2587010223876336e-8,0.001647955012278325,-4.361395560197095e-5,3.244050743190803e-8,0.0016480353368982224,-4.352634140384957e-5,3.236693816783387e-8,0.0016481481573200063,-4.352430208745986e-5,3.236282743263174e-8,0.0016483294908475749,-4.358362185466893e-5,3.240727442369534e-8,0.001648600066709863,-4.366323577305269e-5,3.2466074614676396e-8,0.0016489585077819739,-4.371486073861877e-5,3.249977289857885e-8,0.0016493799815096145,-4.369565905864213e-5,3.247396466644824e-8,0.0016498216574363398,-4.35805854427313e-5,3.236916312326058e-8,0.0016502342591044501,-4.337016148742985e-5,3.2186868815840264e-8,0.0016505762173780565,-4.309020706568123e-5,3.194909432152713e-8,0.0016508250968513124,-4.278317246005813e-5,3.1691092721698956e-8,0.0016509819009967624,-4.24946924788503e-5,3.1450271221881416e-8,0.0016510674183862332,-4.226105950962592e-5,3.125597438215787e-8,0.0016511135338679924,-4.210202576888828e-5,3.112374663814163e-8,0.0016511538874274358,-4.201993406387043e-5,3.105483497910188e-8,0.0016512170388640625,-4.200324771532353e-5,3.1039256218679945e-8,0.0016513230147448136,-4.2031673250908966e-5,3.106005739207479e-8,0.0016514824899899535,-4.2080862105879425e-5,3.109711887696447e-8,0.0016516973653265966,-4.212590433392133e-5,3.1129923067476226e-8,0.001651961729402234,-4.214373526750093e-5,3.113947244255304e-8,0.001652262709403183,-4.2115034434587586e-5,3.11098777670916e-8,0.001652581282236162,-4.20262355409554e-5,3.103010807540562e-8,0.001652893563089459,-4.1871968498026697e-5,3.089609413234407e-8,0.0016531733119630543,-4.165773999853627e-5,3.071294747399099e-8,0.001653396304072018,-4.1401950749318465e-5,3.0496512296258735e-8,0.0016535465337220673,-4.113559677284715e-5,3.027291157231968e-8,0.00165362283822673,-4.08978653952933e-5,3.007468972951524e-8,0.001653643051829214,-4.072709688518788e-5,2.993320892854408e-8,0.0016536425379715574,-4.064915069866908e-5,2.986905479463843e-8,0.0016536658656256423,-4.0667642322225216e-5,2.988415848613424e-8,0.0016537538623654171,-4.076077998128367e-5,2.995949305378407e-8,0.0016539310239152949,-4.088682206365838e-5,3.0059909699632935e-8,0.0016541982039326847,-4.099610396545309e-5,3.0144299811144e-8,0.0016545328263749025,-4.1044953793367646e-5,3.0177129842224954e-8,0.0016548957129889686,-4.100692229408898e-5,3.013755445295461e-8,0.0016552417765755723,-4.0878540058739154e-5,3.0023865014476645e-8,0.0016555313813681053,-4.0678744800547455e-5,2.985267628556814e-8,0.0016557394578348126,-4.0442706059349526e-5,2.965356616713717e-8,0.0016558602205119905,-4.0212091256584694e-5,2.9460936650144332e-8,0.0016559066064064827,-4.002467175107929e-5,2.9305507808049016e-8,0.0016559051411805651,-3.990618815504244e-5,2.9207810627581598e-8,0.0016558883208421219,-3.986641734804314e-5,2.9175190181454984e-8,0.0016558871094012825,-3.989970995789232e-5,2.920244204328383e-8,0.0016559255239323612,-3.9988717521732396e-5,2.9274958922300416e-8,0.0016560179934640134,-4.010939295998521e-5,2.9372803922459204e-8,0.0016561690600313398,-4.023567907279301e-5,2.947446435780696e-8,0.0016563744709726966,-4.0343077329543915e-5,2.9559704687070583e-8,0.0016566227473716701,-4.04110569171678e-5,2.9611550177314757e-8,0.0016568967011817656,-4.0424765170366424e-5,2.9617783814663727e-8,0.0016571748725286567,-4.03766005139679e-5,2.9572361572399208e-8,0.001657433277921752,-4.026798280415287e-5,2.9476932544257488e-8,0.0016576481341211992,-4.011122108290574e-5,2.9342315929308953e-8,0.0016578002161897344,-3.993068140079735e-5,2.918927620055278e-8,0.0016578808882250792,-3.97616016784514e-5,2.904730413787855e-8,0.0016578983842147038,-3.964455859766971e-5,2.894986463588264e-8,0.0016578810457861806,-3.961480375790006e-5,2.8925550308629004e-8,0.0016578735047228827,-3.968893422226867e-5,2.8987194852995764e-8,0.0016579242628156493,-3.985510074322592e-5,2.9124022121367424e-8,0.0016580686098759247,-4.007348282468502e-5,2.9302307407495906e-8,0.001658315212483153,-4.028875236110224e-5,2.9475907260284677e-8,0.0016586433615687947,-4.044883713349159e-5,2.9601907087753384e-8,0.0016590113970561915,-4.0520869931719907e-5,2.9653810852602028e-8,0.0016593709065407672,-4.049825768358674e-5,2.9627222749183985e-8,0.0016596801558158162,-4.039855087642855e-5,2.953777937619335e-8,0.0016599128451770951,-4.025546688761349e-5,2.9414208659192474e-8,0.001660061372670357,-4.010894002692455e-5,2.928985879812469e-8,0.0016601355508499426,-3.999598249842553e-5,2.9195098085642385e-8,0.0016601582578794414,-3.994386969418339e-5,2.9151836997324146e-8,0.0016601594601349523,-3.9966285990856224e-5,2.9170608546724392E-08,0.0016601699239930832,-4.006254573710791e-5,2.9250175101477995e-8,0.0016602158041532625,-4.021951416375853e-5,2.9379253301896273e-8,0.0016603149537395255,-4.041536412718664e-5,2.9539614735345927e-8,0.00166047527124585,-4.062408817363606e-5,2.970971399095024e-8,0.0016606948895783432,-4.081978853524619e-5,2.986812443718438e-8,0.0016609636296508186,-4.098007900947471e-5,2.9996308350286483e-8,0.0016612650174455234,-4.108841983012459e-5,3.0080601450579956e-8,0.0016615783991599132,-4.113565076063209e-5,3.01135932639863e-8,0.00166188105966781,-4.11211016170598e-5,3.009513534055636e-8,0.001662150531071203,-4.105352714493535e-5,3.0033097660775586e-8,0.0016623675379770072,-4.095183539624763e-5,2.994381510048298e-8,0.0016625201033940193,-4.0844962473662907e-5,2.98517361833591e-8,0.0016626087554811723,-4.0769446539057265e-5,2.9787188477707118e-8,0.0016626514160071732,-4.0762994359918156e-5,2.9780965991072815e-8,0.0016626848298044925,-4.0853432310140516e-5,2.9855291758414986e-8,0.0016627585180696237,-4.104557297078488e-5,3.001319945286181e-8,0.0016629196343020275,-4.1312810810254054e-5,3.023184378109478e-8,0.0016631936622173485,-4.1601319751516236e-5,3.046615302114082e-8,0.0016635717482644979,-4.1848343784879263e-5,3.0664058183648755e-8,0.0016640132555107746,-4.200576477773202e-5,3.0786057280139574e-8,0.0016644620386205267,-4.205590491481198e-5,3.0818301607812385e-8,0.001664866364125141,-4.201279974388258e-5,3.0773509768777413e-8,0.001665192705554029,-4.1912072651471524e-5,3.068227045198648e-8,0.0016654301308830564,-4.1797159168452974e-5,3.0581274453788686e-8,0.0016655875286445104,-4.170783384293948e-5,3.050359333944092e-8,0.001665687465604892,-4.167319984191924e-5,3.0472896827926416e-8,0.0016657594905155892,-4.170874776273719e-5,3.050124412626773e-8,0.0016658342301060726,-4.181625386895793e-5,3.058929521132896e-8,0.0016659386770511526,-4.1985505643195065e-5,3.0727965256502515e-8,0.0016660927790692734,-4.2197234556937535e-5,3.0900934221248055e-8,0.001666307394327278,-4.242676039351328e-5,3.108761361993264e-8,0.0016665836116936171,-4.2647885737481854e-5,3.1266263776837525e-8,0.0016669133750296294,-4.2836615240290816e-5,3.141699700450582e-8,0.0016672812040082632,-4.29742538784887e-5,3.1524353127941986e-8,0.001667666583854231,-4.3049585079543835e-5,3.157918783389978e-8,0.0016680466219054927,-4.306016694156729e-5,3.1579840829446867e-8,0.0016683988209936053,-4.3012919060955386e-5,3.153264421759085e-8,0.0016687039684606657,-4.2924075892586436e-5,3.145177637443578e-8,0.001668949248977301,-4.281847186208641e-5,3.135844372913255e-8,0.001669131786259909,-4.272775819299064e-5,3.127914542178871e-8,0.0016692623804481766,-4.268653070428464e-5,3.1242302733313314e-8,0.0016693680627836978,-4.272526972232355e-5,3.1272440060728026e-8,0.0016694908319522278,-4.286013130087455e-5,3.138195636848311e-8,0.0016696795079151228,-4.3082236687797025e-5,3.156257050561017e-8,0.0016699738397906113,-4.335263606913009e-5,3.178138863954782e-8,0.0016703860640257925,-4.3610062290433165e-5,3.1987399692878435e-8,0.0016708909850968417,-4.3792311883293744e-5,3.212916881254575e-8,0.0016714333005318656,-4.3861116917503015e-5,3.217546090751692e-8,0.0016719492822700806,-4.3815726814167675e-5,3.2126524444803504e-8,0.0016723897475633752,-4.368843070089595e-5,3.201025739742718e-8,0.0016727324810957033,-4.352796787840965e-5,3.1868119479992646e-8,0.0016729818078562674,-4.338203342372647e-5,3.174024705968066e-8,0.001673160510358554,-4.3286058936851166e-5,3.165596355869807e-8,0.0016733001997954202,-4.325918304672302e-5,3.1630534790235667e-8,0.0016734335563792723,-4.3305040518058526e-5,3.166611119385737e-8,0.0016735892269826305,-4.3414715646800075e-5,3.1754482304429493e-8,0.0016737888324904195,-4.357023755789901e-5,3.188016234879414e-8,0.0016740453537005702,-4.3748057320064645e-5,3.202330368510447e-8,0.0016743624861162748,-4.392241829557162e-5,3.216241408654458e-8,0.0016747348092937828,-4.406860454410632e-5,3.227695616684352e-8,0.0016751487805059524,-4.416603666815915e-5,3.234987839857888e-8,0.001675584637718124,-4.420100590072595e-5,3.236992864406305e-8,0.0016760191120139118,-4.4168658691226686e-5,3.23333885762874e-8,0.0016764286255676625,-4.407397693962139e-5,3.224493873197347e-8,0.0016767926831136699,-4.393169599546051e-5,3.211753662941352e-8,0.001677097237930815,-4.3765093105344423e-5,3.197123217472216e-8,0.00167733777658621,-4.360358105039846e-5,3.183091478114156e-8,0.001677521869398556,-4.347902774846859e-5,3.172303510741116e-8,0.0016776707408900074,-4.342049118287758e-5,3.167116295241453e-8,0.0016778187422698135,-4.3447130391136005e-5,3.1690241873688606e-8,0.0016780089503785252,-4.3560098509420256e-5,3.178016652122048e-8,0.0016782833720448765,-4.373614563117936e-5,3.192080369790514e-8,0.0016786683666438333,-4.3927655024510755e-5,3.207221484054373e-8,0.001679160369115784,-4.407367191046424e-5,3.2183808817329206e-8,0.0016797209875307913,-4.412114009758808e-5,3.221188471697183e-8,0.0016802880403294148,-4.404672142738793e-5,3.213771971384632e-8,0.001680798773740542,-4.386597338792192e-5,3.197519004817064e-8,0.0016812121713359505,-4.362439078443936e-5,3.176318558267004e-8,0.0016815186777889915,-4.337739128303645e-5,3.1548644038694827e-8,0.0016817358173011794,-4.317163234212843e-5,3.137068706839119e-8,0.0016818964774662018,-4.303518866881324e-5,3.125235326029229e-8,0.0016820373053456571,-4.2976515779093504e-5,3.1199916976096325e-8,0.0016821908517579908,-4.298835334932385e-5,3.120645643391533e-8,0.001682381643870257,-4.305295001771544e-5,3.125647495228362e-8,0.0016826248641123465,-4.314669659029766e-5,3.1329875743603594e-8,0.0016829262935964223,-4.3243765750394774e-5,3.1404959032322505e-8,0.0016832827993444842,-4.3319058823132525e-5,3.1460773886099394e-8,0.0016836831808576592,-4.335081474193989e-5,3.147921387142313e-8,0.0016841094761317773,-4.332309858073908e-5,3.144709006843145e-8,0.0016845389965708768,-4.322812581928537e-5,3.1358136502702837e-8,0.0016849472827916928,-4.30680097516396e-5,3.121454317459761e-8,0.001685311817324549,-4.28553785051464e-5,3.102747616737498e-8,0.0016856160259362443,-4.2612465496661675e-5,3.081620600067579e-8,0.0016858529647612876,-4.2368472572295754e-5,3.060568908899294e-8,0.0016860279929869306,-4.2155252212118004e-5,3.042272064814904e-8,0.0016861597397253318,-4.2001707138160697e-5,3.029110352696416e-8,0.001686278802546357,-4.192753075558542e-5,3.0226450956112963e-8,0.0016864236511896307,-4.1937096150845514e-5,3.023131644925384e-8,0.0016866333005143353,-4.20148809990313e-5,3.029172471873377e-8,0.0016869370383114897,-4.212468985170035e-5,3.0376837396555156e-8,0.0016873432300061099,-4.221528826700933e-5,3.0443795692792346e-8,0.0016878316433975797,-4.223370069387507e-5,3.044875659726567e-8,0.0016883549945588567,-4.214339067565662e-5,3.0361907947096335e-8,0.0016888524992501178,-4.193939125212146e-5,3.017996755366323e-8,0.0016892708942925403,-4.165129888299081e-5,2.992858118803242e-8,0.0016895823148465297,-4.1331399559831654e-5,2.9652240492607542e-8,0.0016897900659125485,-4.103474076847829e-5,2.9397395175287495e-8,0.0016899216625505006,-4.080203475990938e-5,2.919799465346154e-8,0.0016900157054978312,-4.0652031392961096e-5,2.906915313908238e-8,0.0016901099208097574,-4.058288462987776e-5,2.900853004866035e-8,0.0016902339270298944,-4.057817378667731e-5,2.900165126974593e-8,0.0016904065626526063,-4.061354355146046e-5,2.9027644312851774e-8,0.0016906360051758417,-4.0661950119559325e-5,2.9063648467584324e-8,0.0016909209995482196,-4.069723028481099e-5,2.9087710885649258e-8,0.0016912522654108416,-4.069653884596306e-5,2.9080721860103752e-8,0.0016916138646757722,-4.064230977992161e-5,2.9028017183053914e-8,0.0016919847467131485,-4.052416230559773e-5,2.8921020015667242e-8,0.0016923408945919195,-4.034078146507427e-5,2.8758904768726176e-8,0.0016926584456100585,-4.0101338254094135e-5,2.854984370404633e-8,0.0016929177886920088,-3.98256830559316e-5,2.8311126828899853e-8,0.001693108077881154,-3.954252987433632e-5,2.8067479641023334e-8,0.0016932310746483276,-3.928519728252996e-5,2.7847258747180767e-8,0.0016933029691601435,-3.908519792267514e-5,2.767686433700739e-8,0.0016933530634665743,-3.896487647791898e-5,2.7574483226122663e-8,0.0016934189419301243,-3.893091195901987e-5,2.7544749748504323e-8,0.0016935386906464923,-3.897054727601237e-5,2.7575867805514548e-8,0.001693741560057379,-3.905203356829756e-5,2.7640332995878002e-8,0.0016940391412425884,-3.9130122676386634e-5,2.7699808677760945e-8,0.0016944196388182435,-3.9156405028759944e-5,2.7713881316001143e-8,0.0016948479443695268,-3.909270277009998e-5,2.7651188701418565e-8,0.0016952732925359264,-3.892369137957591e-5,2.749979593321849e-8,0.0016956435737868081,-3.8663481150373246e-5,2.7272496371780773e-8,0.001695921508217519,-3.835205250275875e-5,2.7003629854952092e-8,0.0016960956761315402,-3.804202367397545e-5,2.67378143191e-8,0.0016961815319577094,-3.778160361537539e-5,2.6515529524935576e-8,0.001696213032473906,-3.7601416121365983e-5,2.6362069074866936e-8,0.0016962301457196613,-3.750973613700963e-5,2.628370233701135e-8,0.0016962680770975457,-3.749551816840239e-5,2.627045669394839e-8,0.0016963512376621233,-3.753538910232288e-5,2.63021853253086e-8,0.0016964917453452192,-3.7600818583413475e-5,2.635465438290942e-8,0.001696690651419292,-3.766350660714986e-5,2.6404007688425848e-8,0.001696940137771745,-3.769874102950349e-5,2.642947829630893e-8,0.0016972256658882062,-3.7687335396604675e-5,2.6414948818137022e-8,0.0016975277902204365,-3.761694740849289e-5,2.635007890531258e-8,0.001697823895555182,-3.7483365373189244e-5,2.6231474474216885e-8,0.0016980904064073249,-3.729186542931282e-5,2.6063916854335785e-8,0.0016983059629982868,-3.705818431813839e-5,2.5861193564983613e-8,0.00169845567523588,-3.6808209557159376e-5,2.5645733638452276e-8,0.0016985358748413822,-3.6575286342219624e-5,2.544614117888997e-8,0.0016985578725676185,-3.6394393189292205e-5,2.5292069524213555e-8,0.0016985486004877865,-3.629367901585675e-5,2.5206946956193076e-8,0.001698546470920179,-3.628561471787852e-5,2.5200532434859682e-8,0.0016985925376170278,-3.6361141746669543e-5,2.5264171502710526e-8,0.0016987192823167937,-3.648970911878939e-5,2.537113473313952e-8,0.0016989407603901555,-3.66260131869023e-5,2.548261022146134e-8,0.0016992475797464068,-3.672165020583402e-5,2.5557724392811732e-8,0.0016996084606618878,-3.673811638230782e-5,2.5564517650592807e-8,0.001699977956475142,-3.6657310285023185e-5,2.5488638588697726e-8,0.0017003082070326627,-3.648654916289649e-5,2.5337305501061796e-8,0.001700561508238771,-3.625653060246809e-5,2.5137301531646965e-8,0.0017007199892369825,-3.601259358681587e-5,2.492738326789755e-8,0.0017007892677775634,-3.580192599678626e-5,2.474739066190967e-8,0.0017007949978842718,-3.566104751616369e-5,2.462773297309177e-8,0.0017007740285271689,-3.560774970729352e-5,2.4582760104628268e-8,0.001700763881614479,-3.5639540723169225e-5,2.4609678123756305e-8,0.0017007942876682992,-3.5737747088271245e-5,2.4692199666377635e-8,0.0017008827935677405,-3.5874468764077714e-5,2.48064931342209e-8,0.0017010342865269056,-3.601946403066804e-5,2.4926953335125145e-8,0.0017012429683338664,-3.614526778038245e-5,2.503041713192252e-8,0.0017014952046849267,-3.623023427960677e-5,2.5098644185563178e-8,0.001701772238022168,-3.626002631665762e-5,2.5119562344499273e-8,0.0017020524196195597,-3.6228338899696296e-5,2.5087946189913077e-8,0.0017023131682198593,-3.613749747676565e-5,2.500601481098576e-8,0.0017025331952084945,-3.599911636755302e-5,2.488403054979358e-8,0.001702695545569224,-3.583443484893609e-5,2.4740519688495516e-8,0.001702791658995604,-3.567341761960704e-5,2.4601345097724025e-8,0.001702825905263925,-3.5551336305842663e-5,2.449660803475595e-8,0.0017028188818827854,-3.550180632355494e-5,2.4454604213756933e-8,0.001702806735149731,-3.5546798682885895e-5,2.4493348244526906e-8,0.0017028341827005904,-3.5686793861779424e-5,2.4612368548798255e-8,0.0017029417119942861,-3.589622192692521e-5,2.4789084250634145e-8,0.001703151464359933,-3.612826882154989e-5,2.4983140816697334e-8,0.0017034584180842351,-3.632857896050061e-5,2.514822835935455e-8,0.0017038313132765339,-3.645226816286234e-5,2.5246595649292e-8,0.0017042226379164888,-3.647699395454146e-5,2.5260079820686068e-8,0.0017045828447247262,-3.640761249596701e-5,2.5193854756660187e-8,0.0017048733046878682,-3.627237682470769e-5,2.5072903100127402e-8,0.0017050744960167964,-3.611354589471979e-5,2.4933747465570844e-8,0.0017051883610562926,-3.597597816658294e-5,2.4814589910546375e-8,0.0017052354342512147,-3.5896752180398834e-5,2.4746512664333185e-8,0.0017052482576193312,-3.589793749996182e-5,2.4747526264296278e-8,0.001705263072666433,-3.598363726072869e-5,2.482032549880074e-8,0.0017053119227668128,-3.614137236019604e-5,2.4953695706256513e-8,0.0017054169711461474,-3.6346798808851755e-5,2.5126630491637535e-8,0.001705587948875609,-3.656997064057401e-5,2.5313627491764613e-8,0.0017058225445119196,-3.678132058142517e-5,2.548965965479151e-8,0.0017061087821257628,-3.69561651974611e-5,2.563388881603951e-8,0.0017064282269366776,-3.70773600928232e-5,2.5731871018470053e-8,0.0017067591018042412,-3.713639521195745e-5,2.5776518819360373e-8,0.0017070789070781516,-3.71335783856623e-5,2.576833424327725e-8,0.001707366647808429,-3.7077896034809675e-5,2.5715344204894712e-8,0.0017076050669122245,-3.6986775316050295e-5,2.563286430776859e-8,0.0017077833482693745,-3.6885519284883346e-5,2.5542879446377526e-8,0.0017079005422884115,-3.6805662765103294e-5,2.547244983570222e-8,0.0017079692563718653,-3.678101653653675e-5,2.545019000338502e-8,0.0017080179220300188,-3.684031594380135e-5,2.549999137370553e-8,0.0017080887479602191,-3.699691368462634e-5,2.5632392147724558e-8,0.001708228641281455,-3.723898589582162e-5,2.583648649016691e-8,0.0017084735851781347,-3.752657719115359e-5,2.607763848747086e-8,0.0017088326289339622,-3.7800822890985845e-5,2.6305464895935834e-8,0.0017092809717665692,-3.800389880699946e-5,2.6470864658603684e-8,0.001709767617820864,-3.810010719756817e-5,2.6543979991628234e-8,0.0017102337850382358,-3.8086965178193554e-5,2.6523588534275293e-8,0.0017106319934249428,-3.799214504651016e-5,2.6434316445958196e-8,0.0017109375331463164,-3.786074079930412e-5,2.6315481437475767e-8,0.0017111503518974585,-3.774050858751181e-5,2.6208213356204093e-8,0.0017112901426587356,-3.767043065840216e-5,2.6145574168089167e-8,0.001711388473927356,-3.767435097338324e-5,2.6147233879245078e-8,0.0017114807478860903,-3.7759148181293965e-5,2.6218181852708225e-8,0.0017115993915441882,-3.791616629237784e-5,2.6350243451075947e-8,0.0017117688340202747,-3.812478479964005e-5,2.6525321161408846e-8,0.0017120025462314225,-3.8357269218783055e-5,2.671957407701288e-8,0.0017123022368902155,-3.858401705662783e-5,2.690781030939024e-8,0.0017126589667248331,-3.8778319536625255e-5,2.706742096037333e-8,0.0017130556713426438,-3.892000575518932e-5,2.718139609955358e-8,0.0017134704463890348,-3.8997637220543705e-5,2.72401837338603e-8,0.0017138799079658143,-3.900926090925543e-5,2.7242381927571813e-8,0.0017142621560916798,-3.896209930041389e-5,2.719452965369347e-8,0.0017145992769997747,-3.887164408049795e-5,2.7110327165076998e-8,0.0017148795732618073,-3.876038090260755e-5,2.7009443934541433e-8,0.0017150997739135154,-3.8656079592503165e-5,2.691587804537622e-8,0.0017152674011576832,-3.858919935674702e-5,2.6855564023675893e-8,0.001715402930080424,-3.858850645778573e-5,2.68525620088811e-8,0.0017155403030105689,-3.867411814540851e-5,2.6923223505940072e-8,0.001715723354598753,-3.884849496986257e-5,2.706875788258036e-8,0.0017159957908326042,-3.9088518326831626e-5,2.7268754434345864e-8,0.0017163851403779347,-3.9344697300168935e-5,2.748066663980295e-8,0.001716886993958065,-3.955318428218216e-5,2.7650053898035193e-8,0.0017174602847125158,-3.965909042471542e-5,2.773040269966326e-8,0.001718040134972025,-3.963938085916244e-5,2.770265841257851e-8,0.0017185625897166842,-3.9511228867599055e-5,2.758236823583223e-8,0.0017189868062355465,-3.932167724591736e-5,2.7410713552494807e-8,0.001719303790073166,-3.912724285345024e-5,2.7236765021706585e-8,0.0017195315916373054,-3.897569321704473e-5,2.710159348901865e-8,0.0017197039490144403,-3.889639604552238e-5,2.7029929542711243e-8,0.001719859026622647,-3.889874932274322e-5,2.7028998797406246e-8,0.0017200313178398767,-3.897534491821806e-5,2.7091549749431207e-8,0.0017202469671751624,-3.910684938799904e-5,2.7200319928931065e-8,0.001720521602018453,-3.926695176135516e-5,2.7332412797781222e-8,0.001720859794259045,-3.942689817955544e-5,2.7463158757262513e-8,0.001721255728863236,-3.955955466122989e-5,2.756947544016638e-8,0.0017216948873827532,-3.9642868900642176e-5,2.7632707506931933e-8,0.001722156569161592,-3.966254350579579e-5,2.764085344336467e-8,0.0017226170439005363,-3.9613697538888915e-5,2.7590003469533287e-8,0.001723052976870324,-3.9501301872358064e-5,2.7484764624405265e-8,0.0017234446600947672,-3.933941901930363e-5,2.733763268972299e-8,0.001723778754377761,-3.914951517199835e-5,2.7167486552635708e-8,0.0017240504576373702,-3.8958063040786535e-5,2.6997386666773607e-8,0.0017242650711087881,-3.8793531002493264e-5,2.6851810256787167e-8,0.0017244389431611393,-3.868270733259092e-5,2.675337383241879e-8,0.0017245995113033862,-3.864602832841346e-5,2.671885005626151e-8,0.0017247834536315045,-3.8691681327300336e-5,2.6754311849929e-8,0.0017250313802367769,-3.880929377612953e-5,2.6850034141866425e-8,0.001725377842565471,-3.896581169015178e-5,2.697723630726428e-8,0.0017258375470063556,-3.910800396460535e-5,2.7090318371162557e-8,0.0017263930836693708,-3.917572346874251e-5,2.7138107085967308e-8,0.0017269933872087041,-3.912436180795919e-5,2.7082925689746156e-8,0.0017275689865215494,-3.8945638522437385e-5,2.691835379492017e-8,0.0017280585048235183,-3.86727214245852e-5,2.6673635556659343e-8,0.001728431073422244,-3.836534884152783e-5,2.6400818438587404e-8,0.0017286923868734853,-3.808504387510162e-5,2.61532106623058e-8,0.0017288748816655678,-3.787530232705404e-5,2.5968120288942417e-8,0.0017290217154868146,-3.7754199534558863E-05,2.5860493154658515e-8,0.0017291734675064128,-3.771726995413944e-5,2.582562501534354e-8,0.0017293607820238672,-3.7744848247661723E-05,2.584579636728525e-8,0.001729602000315515,-3.780948874960963e-5,2.5896883802857644e-8,0.001729903599395464,-3.788165973355425e-5,2.595331727889163e-8,0.0017302617181777903,-3.7933690493989186e-5,2.5991389794231897e-8,0.0017306640141175572,-3.794259510943676e-5,2.5991547940454676e-8,0.001731091755867424,-3.789224556048095e-5,2.594015958103042e-8,0.001731522255539111,-3.7775051882364856e-5,2.5830937167328825e-8,0.0017319317604426708,-3.7593037290670407e-5,2.5665905426726304e-8,0.0017322987686243735,-3.735795299004614e-5,2.545555029736884e-8,0.0017326074067128012,-3.709011144855787e-5,2.5217806685687195e-8,0.0017328503457029842,-3.6815919057722917e-5,2.4975834819967113e-8,0.001733030801250284,-3.6564297546596944e-5,2.4754770932095832e-8,0.001733163245050693,-3.636230112525841e-5,2.4577788776660804e-8,0.0017332725692263016,-3.6230386059595666e-5,2.446195888578073e-8,0.001733391561335409,-3.6177777041230204e-5,2.4414354594100277e-8,0.0017335564073636222,-3.619837183913728e-5,2.4428778625296542e-8,0.001733799814146551,-3.626816379255833e-5,2.4483858210644657e-8,0.0017341419144584454,-3.634606741287226e-5,2.454398795466479e-8,0.0017345806750870597,-3.638048933612316e-5,2.4565021790145197e-8,0.0017350858869240476,-3.632295309658755e-5,2.4505843202086038e-8,0.0017356024788424108,-3.614624025006184e-5,2.4343764994910206e-8,0.0017360663216553012,-3.585874629062718e-5,2.408675934782713e-8,0.0017364275421104804,-3.550486845228883e-5,2.377374351553505e-8,0.001736668888599713,-3.514850340937432e-5,2.34602712311622e-8,0.001736808661045457,-3.4848567953173e-5,2.3197265336036242e-8,0.001736888544939611,-3.464037865199596e-5,2.301485336433552e-8,0.0017369558513605297,-3.4530440416808935e-5,2.29179595201377e-8,0.001737049707092597,-3.4502354376221574e-5,2.289165624475731e-8,0.0017371947516276504,-3.4526982344086895e-5,2.2910199010581445e-8,0.0017374008073448293,-3.4571512886728264e-5,2.2944984052831473e-8,0.001737665467048844,-3.460545560147143e-5,2.2969695297045837e-8,0.001737977290689824,-3.460390307791772e-5,2.296299541437974e-8,0.0017383186141002541,-3.454918032334136e-5,2.290982677063709e-8,0.0017386679295325906,-3.4431804356590167e-5,2.2802188582601254e-8,0.0017390021734525031,-3.42511906097866e-5,2.2639776047910924e-8,0.0017392992945751758,-3.40160914722638e-5,2.243042545250072e-8,0.0017395413117880889,-3.374434814309473e-5,2.2189933916874547e-8,0.0017397176600680104,-3.346135952529788e-5,2.1940688488459516e-8,0.0017398281621878566,-3.319689225605055e-5,2.170877243418754e-8,0.0017398847366847004,-3.2980307378858836e-5,2.1519663391740078e-8,0.00173991100205662,-3.283480466826047e-5,2.1393128136041958e-8,0.0017399392899709579,-3.27718231350248e-5,2.1338379242105724e-8,0.00174000521831946,-3.278698042141254e-5,2.1350723083240454e-8,0.001740140572588363,-3.285870325852261e-5,2.1410652793135758e-8,0.0017403655886877377,-3.295034303669861e-5,2.1485963701877946e-8,0.0017406820927880144,-3.301629939579607e-5,2.153721791335664e-8,0.0017410695269251995,-3.301209684177935e-5,2.152643905078453e-8,0.001741486310794703,-3.290702867540473e-5,2.1427864745405244e-8,0.0017418784545159788,-3.269589869418132e-5,2.1237862433750336e-8,0.0017421948525763043,-3.2404476839655194e-5,2.097945465702013e-8,0.001742404370709457,-3.208389090653782e-5,2.069734831489266e-8,0.001742506671572139,-3.179415040864402e-5,2.0443603476147352e-8,0.0017425307722198473,-3.158389373995162e-5,2.0260073766504838e-8,0.0017425223974869423,-3.147622681133658e-5,2.0166207874633754e-8,0.0017425275508909542,-3.146622368211866e-5,2.0157058325399752e-8,0.0017425801811898768,-3.152827253738807e-5,2.020986020759265e-8,0.0017426972860252556,-3.162719052466486e-5,2.02938080720638e-8,0.001742880085460341,-3.172780363660379e-5,2.0378372619537326e-8,0.001743118076178938,-3.180084546028723e-5,2.0438317988914532e-8,0.0017433934077427334,-3.1825558838409014e-5,2.045583270732787e-8,0.0017436844082488409,-3.179033969714021e-5,2.0421013873564265e-8,0.001743968178512343,-3.169263001235832e-5,2.0331783624667846e-8,0.0017442227209409098,-3.153871728518193e-5,2.0193782525411485e-8,0.0017444291701622036,-3.134350069999404e-5,2.002022746940685e-8,0.0017445744879534223,-3.112978763186553e-5,1.9831294365844262e-8,0.0017446545474839863,-3.092639446856581e-5,1.9652370870985962e-8,0.0017446769299296102,-3.0764373350770444e-5,1.9510621046903156e-8,0.0017446621867443558,-3.067120727891532e-5,1.9429795770389297e-8,0.001744642159515886,-3.066382603124781e-5,1.9424111620866493e-8,0.0017446545782597647,-3.074243219545489e-5,1.9492972810802038e-8,0.0017447345609175441,-3.088764647827402e-5,1.961870511808151e-8,0.0017449051754598907,-3.106281392238331e-5,1.9768826171514667e-8,0.0017451700230479688,-3.122163105108318e-5,1.9902887093021913e-8,0.001745510408947374,-3.1319374667683715e-5,1.9982307573413395e-8,0.001745888357283682,-3.1324766347923475e-5,1.998060209584599e-8,0.0017462551360621196,-3.122919694479231e-5,1.989118907219179e-8,0.0017465634988662125,-3.105046157655002e-5,1.9730384470556232e-8,0.001746780545164631,-3.0829192817083005e-5,1.9534083265630877e-8,0.0017468971763283654,-3.06181089004315e-5,1.9348284579479396e-8,0.0017469304559974707,-3.0466979567041213e-5,1.921600927524104e-8,0.001746917542182514,-3.0408580265584186e-5,1.916519343229281e-8,0.001746903536584843,-3.0450937289348743e-5,1.9202135362128732e-8,0.0017469283478326418,-3.057824727716383e-5,1.931250208156185e-8,0.0017470175401144699,-3.075870969388561e-5,1.9468283092315117e-8,0.0017471793662891689,-3.095489208974001e-5,1.9636835355944387e-8,0.00174740696584924,-3.1132521919019314e-5,1.978845734405289e-8,0.0017476831047323403,-3.126577909856488e-5,1.9900875698021727e-8,0.0017479851225330183,-3.1339285687671686e-5,1.9960887050540934e-8,0.0017482888771933986,-3.134799753916344e-5,1.9964247391127438e-8,0.001748571500534339,-3.1296247023240655e-5,1.9914888607216414e-8,0.0017488134063673208,-3.1196725784627565e-5,1.9824099003596076e-8,0.0017490001909731922,-3.106955308858083e-5,1.970973106837139e-8,0.0017491248720657058,-3.0941022082626086e-5,1.9595042768266226e-8,0.0017491904664698418,-3.084128927975832e-5,1.9506546090950694e-8,0.0017492122725144203,-3.080019758367981e-5,1.9470218613974216e-8,0.0017492184473760612,-3.084086291599031e-5,1.950583763271849e-8,0.0017492470171063378,-3.097194995726486e-5,1.9620297100766168e-8,0.0017493381646387358,-3.1181363894115793e-5,1.980227981843363e-8,0.0017495228601829887,-3.143510381205071e-5,2.0021485851797534e-8,0.0017498116793050868,-3.168386290175472e-5,2.023458425088819e-8,0.0017501889553554505,-3.18764773563137e-5,2.039704390946832e-8,0.001750615655745262,-3.197543249573554e-5,2.0476649055390935e-8,0.0017510402683068693,-3.1968199999134966e-5,2.0463276536587624e-8,0.0017514133531797574,-3.187031880307763e-5,2.037138563020928e-8,0.0017517005273633118,-3.1719998107685436e-5,2.0235063634656074e-8,0.001751890219662361,-3.156694813316782e-5,2.009806183335921e-8,0.0017519948081852045,-3.1459214757831945e-5,2.0002203745109712e-8,0.0017520456413406555,-3.14316280501743e-5,1.99773642676767e-8,0.001752083843670919,-3.149863525213701e-5,2.0035412948970665e-8,0.0017521497040240116,-3.1652918673865666e-5,2.0169255510395947e-8,0.0017522736069611874,-3.186951297035694e-5,2.0356620338662876e-8,0.0017524707370152176,-3.211356229077129e-5,2.056690037038114e-8,0.0017527403103441905,-3.234896981308914e-5,2.076865466262888e-8,0.0017530684808992239,-3.254545176213017e-5,2.0935651692450514e-8,0.0017534331318351181,-3.2682714956734884e-5,2.1050408448247448e-8,0.0017538088119477358,-3.275180452227584e-5,2.110531752462392e-8,0.0017541707526388716,-3.275447431229004e-5,2.1102114748483773e-8,0.0017544976901405082,-3.270162706579011e-5,2.105056824283674e-8,0.0017547738024637697,-3.2611589026689284e-5,2.096699993899653e-8,0.0017549902985381242,-3.250844445279376e-5,2.0872790992964694e-8,0.001755147084288628,-3.242014951493518e-5,2.0792620166438958e-8,0.001755254570490484,-3.2375793594230804e-5,2.0751927960372814e-8,0.001755335063281145,-3.2401220502996406e-5,2.0772996896363735e-8,0.0017554223357314845,-3.251259859283147e-5,2.0869356621329078e-8,0.0017555573977173214,-3.2708863724273736e-5,2.1039332104000612e-8,0.0017557790984082053,-3.29660727723672e-5,2.126132814313656e-8,0.0017561108323753565,-3.3238262436040336e-5,2.1494763264115556e-8,0.0017565485849542516,-3.346811995275699e-5,2.1689479904005575e-8,0.0017570576145160576,-3.360552772869162e-5,2.1801953478252693e-8,0.001757581785070488,-3.362585143779291e-5,2.1811245999041253e-8,0.0017580620722044517,-3.353851148587489e-5,2.1726427797049774e-8,0.001758455202278241,-3.3382035778471196e-5,2.158208310470156e-8,0.0017587444079113072,-3.320959575010596e-5,2.1425399176948597e-8,0.0017589399770165945,-3.307263661221911e-5,2.130160656072588e-8,0.0017590722808459125,-3.3008502295315075e-5,2.1243072677899854e-8,0.001759181556547813,-3.3034286998855964e-5,2.1264051244620618e-8,0.0017593078653479616,-3.314644102862432e-5,2.1360602034657684e-8,0.0017594831921096522,-3.332452486865661e-5,2.1514143545573805e-8,0.0017597265437465275,-3.353738875474003e-5,2.1697021326259336e-8,0.001760042245970357,-3.3750244753001815e-5,2.1878713640531822e-8,0.001760421146334321,-3.393124357669487e-5,2.2031497920959415e-8,0.0017608439638752132,-3.405644801825657e-5,2.2134681640893213e-8,0.0017612857471203435,-3.411264048046515e-5,2.2176972713998292e-8,0.0017617204091223166,-3.409797973084421e-5,2.2157031793999206e-8,0.0017621245438929386,-3.402096746414191e-5,2.208259287114386e-8,0.0017624801775086999,-3.3898450706873454e-5,2.1968740632231774e-8,0.0017627765982876126,-3.3753300304850276e-5,2.183585863215288e-8,0.001763011621842634,-3.3612016549370004e-5,2.1707446371806972e-8,0.0017631925713161728,-3.350214912888116e-5,2.1607729651469524e-8,0.0017633370417948848,-3.344913871513708e-5,2.1558783250075647e-8,0.0017634730174059953,-3.347197967528787e-5,2.1576714714329268e-8,0.0017636371116576798,-3.357742597786236e-5,2.1666704084487572e-8,0.0017638691979690627,-3.3753723774377576e-5,2.181772916999189e-8,0.0017642023031790117,-3.396680513750332e-5,2.1999445627985694e-8,0.0017646491667109299,-3.4163476660183754e-5,2.2165086343053056e-8,0.0017651911849654452,-3.428501454789286e-5,2.226334653764835e-8,0.001765778160698935,-3.428858702670496e-5,2.2257091907866984e-8,0.0017663432093342334,-3.416606996623403e-5,2.213983656780172e-8,0.0017668269543614896,-3.3948415208319496e-5,2.193955489711035e-8,0.001767197842766506,-3.369259112538415e-5,2.17070724834961e-8,0.0017674586193811824,-3.34596154530708e-5,2.1496498412280247e-8,0.001767639060592299,-3.329574652596208e-5,2.1348468166328244e-8,0.0017677821871205088,-3.3223440312985864e-5,2.1282180173486558e-8,0.0017679311822968995,-3.324154570836546e-5,2.129578103953367e-8,0.001768120512436396,-3.333086353608994e-5,2.1371561635770116e-8,0.0017683715270797181,-3.346142626072527e-5,2.148260408851196e-8,0.0017686914318105862,-3.3599409128902524e-5,2.1598953117881766e-8,0.0017690744739801523,-3.371291615094851e-5,2.1692652330809286e-8,0.0017695045695388376,-3.3776430454713476e-5,2.1741529840179073e-8,0.0017699588242402324,-3.3773791444695706e-5,2.1731694812881347e-8,0.0017704114732510778,-3.369964876976124e-5,2.1658752122008647e-8,0.0017708378094016797,-3.355943690940463e-5,2.152778106353521e-8,0.0017712176390383754,-3.336799684118138e-5,2.1352151053456795e-8,0.0017715378651225137,-3.314720089247531e-5,2.1151437607701027e-8,0.0017717941126926234,-3.2923077927578334e-5,2.0948840418387312e-8,0.0017719915599731899,-3.272273093629134e-5,2.0768364307715262e-8,0.0017721450953806894,-3.257108279253322e-5,2.063183815712094e-8,0.001772278789586462,-3.248736044869667e-5,2.0555760321616602e-8,0.0017724243969323124,-3.2481099228891417e-5,2.0547838756955484e-8,0.0017726180377305497,-3.2547672204280884e-5,2.06032360891902e-8,0.001772893902096436,-3.26643881516983e-5,2.070137445010743e-8,0.0017732745145420026,-3.278970120097843e-5,2.0805422495871913e-8,0.0017737592672930375,-3.286910117515717e-5,2.0867510935645095e-8,0.0017743165104114895,-3.285007607212869e-5,2.0841794381781585e-8,0.0017748868641271837,-3.27030730663727e-5,2.0702786663879134e-8,0.0017754014530360297,-3.2437768348831866e-5,2.0459662686927267e-8,0.0017758080743716612,-3.2102608481630945e-5,2.015584789108212e-8,0.0017760903595036206,-3.17656634260758e-5,1.985200104905266e-8,0.0017762693117928238,-3.1488255206219554e-5,1.9602496536206447e-8,0.0017763894591366236,-3.13062590108772e-5,1.9438747273234566e-8,0.001776500414190258,-3.12255836885439e-5,1.9365283650061506e-8,0.0017766430268873303,-3.1228419406428315e-5,1.9365541425495753e-8,0.0017768429247380117,-3.128342719222774e-5,1.9411160162745227e-8,0.0017771097947912773,-3.1355028823638904e-5,1.9470365609482324e-8,0.0017774396800211817,-3.141000926638304e-5,1.9513809181670135e-8,0.0017778182926467716,-3.142162035464175e-5,1.951808140830944e-8,0.0017782244717445747,-3.137198226709649e-5,1.946769186203101e-8,0.0017786336024299082,-3.12533185341731e-5,1.9356066032986675e-8,0.0017790209705546684,-3.1068226775794e-5,1.9185763398043137e-8,0.0017793650121143564,-3.08290205222032e-5,1.8967926769402895e-8,0.001779650296646995,-3.055604937514018e-5,1.8720829744334336e-8,0.0017798698743530228,-3.0274995636721267e-5,1.846747256260845e-8,0.001780026632235612,-3.001344158238894e-5,1.8232467517967285e-8,0.0017801335374979842,-2.9797089846618077e-5,1.8038579085288705e-8,0.0017802127450977066,-2.964590951538579e-5,1.7903218620709243e-8,0.0017802935187865058,-2.9570467972433672e-5,1.783518762572123e-8,0.0017804088777299578,-2.9568714404354944e-5,1.7831942719272197e-8,0.0017805907080136712,-2.9623577448738986e-5,1.7877681205500904e-8,0.0017808630276179797,-2.97023326731302e-5,1.7943009994474517e-8,0.0017812337934054229,-2.97595557883807e-5,1.7987695659313328e-8,0.0017816872967592035,-2.9745687070046982e-5,1.7968220015004007e-8,0.0017821813976015835,-2.962172070135213e-5,1.7850629717166458e-8,0.0017826548299887984,-2.9376324177287026e-5,1.762553130680372e-8,0.0017830461959892749,-2.903634032102028e-5,1.731731488754778e-8,0.0017833176117902473,-2.866124927995671e-5,1.6979208783705445e-8,0.001783469533852475,-2.832122375637814e-5,1.6673724822837606e-8,0.0017835376035968266,-2.80706105762117e-5,1.6448993998207882e-8,0.0017835749164607615,-2.793168172891396e-5,1.6324306949224888e-8,0.0017836317390693452,-2.7894493168831586e-5,1.6290136262871556e-8,0.0017837425116183111,-2.7927737072698468e-5,1.6318029727125984e-8,0.0017839222251040216,-2.7991952248573566e-5,1.6372552649405453e-8,0.0017841690180765415,-2.804960543379875e-5,1.6420305148628225e-8,0.0017844690921453375,-2.8070762770376914e-5,1.6434881896134044e-8,0.001784801494145308,-2.803540319002629e-5,1.6398785045025665e-8,0.0017851419554334824,-2.7933929717305372e-5,1.6303760303012625e-8,0.0017854659718042635,-2.7766907604290468e-5,1.6150522430904983e-8,0.0017857515136427459,-2.7544366750350456e-5,1.5948164497142894e-8,0.0017859816002243757,-2.7284609584283965e-5,1.571315251966609e-8,0.0017861467536977667,-2.7012260273114013e-5,1.5467614316026404e-8,0.0017862470230057806,-2.6755286369400636e-5,1.5236648496569402e-8,0.0017862930134701384,-2.654104265296623e-5,1.504470406978934e-8,0.001786305424195102,-2.6391773125555355e-5,1.491146539228525e-8,0.0017863128449208082,-2.6320220335777346e-5,1.4847885035371189e-8,0.0017863478278571186,-2.632612309632168e-5,1.4853112441925018e-8,0.0017864415524204687,-2.639440009895842e-5,1.491303463720827e-8,0.0017866176433893105,-2.649564870787032e-5,1.500094022968379e-8,0.0017868858723667914,-2.6589505322540724e-5,1.5080702406757717e-8,0.0017872368982414784,-2.66314436018206e-5,1.5112903973863852e-8,0.0017876399981771522,-2.6583121415397484e-5,1.5063969741293373e-8,0.0017880463839678022,-2.6424855833963814e-5,1.4917086903880453e-8,0.0017884001103203367,-2.61662566626825e-5,1.4681479769128718e-8,0.0017886554421320897,-2.5848825556468653e-5,1.439459563665528e-8,0.0017887942451537537,-2.5535601758596886e-5,1.4112816495281188e-8,0.0017888338091817063,-2.5289736988679483e-5,1.3892330893168733e-8,0.0017888195185604239,-2.515213106178181e-5,1.3769205429052592e-8,0.0017888063464290775,-2.5129846263159923e-5,1.3749151498984439e-8,0.0017888398156686227,-2.5199537269306553e-5,1.3810764966794239e-8,0.0017889451574657782,-2.5320670226036306e-5,1.391749936516575e-8,0.0017891262814678304,-2.544988601042015e-5,1.4030567902762325e-8,0.0017893708634015488,-2.5550922719877188e-5,1.4117760285831568e-8,0.0017896570726811836,-2.5599109255723216e-5,1.4157333008626661e-8,0.0017899592671993573,-2.5582042811262578e-5,1.4138489270469296e-8,0.0017902519438446774,-2.5498478260559e-5,1.4060321791036643e-8,0.0017905123629933307,-2.535677868794753e-5,1.3930440496755607e-8,0.0017907225488373376,-2.51734072821892e-5,1.3763682625522863e-8,0.0017908711693659085,-2.4971322438834654e-5,1.3580725771725944e-8,0.0017909554371954345,-2.4777821665357153e-5,1.3406151734326352e-8,0.0017909827283962571,-2.462135499749847e-5,1.3265522508586063e-8,0.001790971202300491,-2.4527148765017287e-5,1.3181360162542386e-8,0.0017909485628708425,-2.4512064252896147e-5,1.316846906372442e-8,0.0017909483769799933,-2.457975629539259e-5,1.3229610662378395e-8,0.0017910040460442844,-2.4717652977466054e-5,1.3352913035006776e-8,0.001791141441592685,-2.4897216452611835e-5,1.3512291120867038e-8,0.0017913719494893788,-2.5078198784446382e-5,1.367144672572904e-8,0.0017916878464235458,-2.5216509648907783e-5,1.3791025050547342e-8,0.0017920615866127356,-2.5274345945545365e-5,1.3837668829362787e-8,0.0017924499408709218,-2.5230505604992228e-5,1.3793113821811035e-8,0.001792803043549295,-2.508822447015411e-5,1.3660997294053245e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json new file mode 100644 index 0000000000..5dc872940a --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":16000,"numberOfSamples":1000,"samples":[0.0017930770944964171,-2.487756201187732e-5,1.3468791504217692e-8,0.0017932476264231187,-2.464987080068864e-5,1.3262714904077391e-8,0.0017933184724985877,-2.446409956071231e-5,1.3095425337680572e-8,0.0017933216314600794,-2.436869143477916e-5,1.3009865564682467e-8,0.0017933067138776958,-2.438639601001157e-5,1.3025800857085489e-8,0.0017933242278720884,-2.450889654783832e-5,1.3135191695059903e-8,0.0017934104016406212,-2.470298517826634e-5,1.330788790362845e-8,0.0017935796118112995,-2.4923857068963115e-5,1.35036193070344e-8,0.0017938254296263332,-2.512860398380717e-5,1.3684062401894767e-8,0.001794127049257825,-2.5285096932882215e-5,1.3820701756483629e-8,0.0017944568919538132,-2.537530987356056e-5,1.389769075082024e-8,0.0017947867111250417,-2.5394724503292413e-5,1.3911234845185292e-8,0.0017950914943699093,-2.5349982163249467e-5,1.3867468677974076e-8,0.0017953516485814604,-2.5256290869559507e-5,1.3780165902829643e-8,0.0017955543110713956,-2.513520274015715e-5,1.3668792904120013e-8,0.0017956944918898108,-2.501264398241291e-5,1.3556752559378335e-8,0.0017957763330320648,-2.4916631576514276e-5,1.3469287614057573e-8,0.0017958142078399008,-2.487403171878831e-5,1.343048298157746e-8,0.0017958328475770424,-2.4906014603702265e-5,1.3459107884232579e-8,0.001795865353512456,-2.5022541802827092e-5,1.3563657130380593e-8,0.001795948122041468,-2.521726303763574e-5,1.3737855679584164e-8,0.0017961127345561176,-2.546517299188524e-5,1.395871521848886e-8,0.0017963766324439366,-2.572537619201675e-5,1.4189187885469435e-8,0.0017967359302593923,-2.5949711291697144e-5,1.4386024761031048e-8,0.0017971637506210216,-2.6095329969824996e-5,1.451109103127541e-8,0.0017976155937020869,-2.6137143168968956e-5,1.4542469045381444e-8,0.0017980404371389018,-2.607573723966647e-5,1.4481422712615806e-8,0.001798394095120732,-2.5938065908348892e-5,1.4352832525648934e-8,0.0017986508156540284,-2.5770774714917362e-5,1.4199014670934582e-8,0.0017988099091846071,-2.5628118914854457e-5,1.4068743101640252e-8,0.0017988956039585806,-2.555773604555096e-5,1.4004458068040699e-8,0.0017989500158965364,-2.558822796060149e-5,1.4031230788508505e-8,0.0017990211621026053,-2.5722340085414784e-5,1.415084222610123e-8,0.0017991498357205768,-2.593791853046823e-5,1.4342850551324464e-8,0.0017993597382745207,-2.6195968610161597e-5,1.4571956673982097e-8,0.0017996538157950808,-2.645239065855816e-5,1.4798559267271849e-8,0.0018000169294873425,-2.666894130169837e-5,1.498852497549383e-8,0.0018004224996779246,-2.6820193009237008e-5,1.5119328433877708e-8,0.0018008399579285909,-2.6895709367472842e-5,1.5181911626012463e-8,0.0018012407279650508,-2.6898643187987404e-5,1.5179375808053418e-8,0.0018016019580566775,-2.6842624017871885e-5,1.512418529733506e-8,0.0018019083507358257,-2.6748422125539742e-5,1.503519386765796e-8,0.0018021529000758112,-2.664111066735776e-5,1.4935106313335826e-8,0.0018023373010458653,-2.654770620791294e-5,1.4848328300519829e-8,0.0018024724205052492,-2.6494772143160663e-5,1.4798742963175621e-8,0.0018025786668415908,-2.6505317999914305e-5,1.4806850211476605e-8,0.0018026854955645365,-2.659451656531552e-5,1.4885891179718516e-8,0.0018028287921071594,-2.6764406036804033e-5,1.5037147763755564e-8,0.0018030448604636129,-2.6999007434058543e-5,1.5245693907824705e-8,0.0018033608554715635,-2.726276700041339e-5,1.5479157196478573e-8,0.0018037839756043577,-2.750560873314212e-5,1.5692371417557645e-8,0.0018042943907072807,-2.767567790489397e-5,1.583886014992919e-8,0.0018048471164087917,-2.7736268154231167e-5,1.5886025345858665e-8,0.0018053841995643509,-2.7679480289528892e-5,1.582737530167465e-8,0.0018058526507647669,-2.752969711011927e-5,1.5685558185452904e-8,0.001806220217685462,-2.73353380759272e-5,1.550478294473961e-8,0.0018064829196074033,-2.715336860705409e-5,1.533667607943918e-8,0.001806663117932587,-2.7033305913710596e-5,1.5225741546222746e-8,0.001806800801895628,-2.7005730814722615e-5,1.5199028506319084e-8,0.0018069420013151019,-2.7077300335566203e-5,1.5261811538653193e-8,0.0018071276684187964,-2.7232000211422743e-5,1.5398964117004876e-8,0.0018073853085648632,-2.7437165696606414e-5,1.5580585890886757e-8,0.0018077246572371043,-2.7652248535832284e-5,1.576998693661435e-8,0.0018081377800550024,-2.7838089562507862e-5,1.5932006675260243e-8,0.0018086029626342595,-2.7964541054522235e-5,1.603977518121356e-8,0.0018090908374324907,-2.8014926126988497e-5,1.607861859878816e-8,0.00180957084697334,-2.7986978508900445e-5,1.6046829753568754e-8,0.0018100165314672806,-2.7890983536707856e-5,1.5953965389800106e-8,0.0018104089137041853,-2.774636589803873e-5,1.5817776136232783e-8,0.0018107380434183873,-2.7577939639375955e-5,1.5660833269492737e-8,0.0018110032945058872,-2.7412588632335316e-5,1.5507519669488106e-8,0.0018112130984671998,-2.727650820984009e-5,1.5381492498527788e-8,0.0018113845185778008,-2.719266881496396e-5,1.5303331370154355e-8,0.0018115426463610783,-2.7177984586301253e-5,1.5287947407869493e-8,0.0018117192686648675,-2.7239724617485946e-5,1.5341380468993828e-8,0.001811949680932402,-2.7371212382235838e-5,1.545703888127489e-8,0.0018122663836599232,-2.754807176709037e-5,1.561247872864076e-8,0.0018126893601793177,-2.772785807579092e-5,1.57692019263019e-8,0.001813215168157243,-2.7856683016959833e-5,1.5878661656300398e-8,0.001813810503341971,-2.788443523714781e-5,1.589593222254393e-8,0.0018144169960900853,-2.7784424994027194e-5,1.5797369795099836e-8,0.0018149690546354657,-2.7567238609616395e-5,1.5593102180247856e-8,0.0018154173615913274,-2.7279217321055754e-5,1.532562475157829e-8,0.001815745477353155,-2.698524284095293e-5,1.5054105867581623e-8,0.001815971625884253,-2.674564379645672e-5,1.4833294082824518e-8,0.0018161376350310534,-2.6598869981665784e-5,1.4697715161200344e-8,0.0018162930699050063,-2.6555272801256695e-5,1.46561098570472e-8,0.0018164816791041126,-2.6600309925083196e-5,1.4694563048089877e-8,0.001816733162707175,-2.6702680190249542e-5,1.4784125685246063e-8,0.0018170600913158257,-2.682355433898887e-5,1.4889335877885533e-8,0.0018174585911996668,-2.6924764974141972e-5,1.4975656178105195e-8,0.0018179114635388195,-2.697514492077015e-5,1.5015123550887387e-8,0.0018183927840198378,-2.69547379106428e-5,1.499003182489609e-8,0.0018188731580403156,-2.6856711418009936e-5,1.4894556739454665e-8,0.001819324793629755,-2.6687029559253713e-5,1.473440683021408e-8,0.0018197256785068433,-2.6462277654925132e-5,1.4524849413287513e-8,0.001820062373922574,-2.6206258898886165e-5,1.428764312060864e-8,0.001820331254382838,-2.5946127881015275e-5,1.4047536963377575e-8,0.001820538445168254,-2.5708755861324498e-5,1.3828946837314153e-8,0.0018206989383891886,-2.5517624437804906e-5,1.365308557110985e-8,0.0018208352337955717,-2.5390152599451144e-5,1.3535489407026761e-8,0.0018209755912363625,-2.533520724364273e-5,1.34837573147026e-8,0.001821151632775928,-2.5350517985874814e-5,1.3495281869197622e-8,0.0018213945362785741,-2.5420047270152325e-5,1.3555011738893574e-8,0.0018217289276931587,-2.551235675360919e-5,1.363413439824075e-8,0.001822164406689718,-2.5582239942904856e-5,1.3691653129699898e-8,0.001822686655285152,-2.557849948022469e-5,1.3681411343723724e-8,0.0018232531039378613,-2.5459295222371094e-5,1.3565889406493894e-8,0.0018237998026180275,-2.5211254782313133e-5,1.3333435451442727e-8,0.0018242618025331551,-2.48617013791813e-5,1.300934477782622e-8,0.0018245988973076108,-2.4473013353101097e-5,1.2650735273151976e-8,0.0018248114805428112,-2.4119027032174727e-5,1.2325005783849212e-8,0.0018249369229238492,-2.3856916289854328e-5,1.2084104532181132e-8,0.0018250308362240503,-2.371030618670482e-5,1.1949100841989596e-8,0.001825146047330891,-2.366910915234589e-5,1.1910159201163204e-8,0.0018253190675345766,-2.3700474694523012e-5,1.1936747643950821e-8,0.0018255659145471929,-2.3762271034004848e-5,1.1990121606287427e-8,0.0018258842445968248,-2.3813805840709907e-5,1.2033166516185259e-8,0.001826258169929863,-2.382242826521537e-5,1.2036355717542334e-8,0.0018266634773100754,-2.3766769983762126e-5,1.1980573637170289e-8,0.001827072388230482,-2.363782080690576e-5,1.1857967699394822e-8,0.0018274577516185762,-2.343858881848419e-5,1.1671564450583e-8,0.0018277966526101797,-2.318264021823313e-5,1.1433927158541618e-8,0.0018280733241575382,-2.2891668446499556e-5,1.1164967072672481e-8,0.0018282811577905753,-2.259224023359341e-5,1.0889004337993399e-8,0.001828423551827078,-2.231201801919025e-5,1.0631321018346868e-8,0.0018285135003267157,-2.207596922814408e-5,1.0414665395833809e-8,0.0018285721071275558,-2.1903000912757984e-5,1.0256127104231965e-8,0.0018286262706814032,-2.1803209435120533e-5,1.0164594038831645e-8,0.001828705702435555,-2.177583438325039e-5,1.0138909579633824e-8,0.001828839337656277,-2.1807956588344662e-5,1.0166784524005633e-8,0.0018290509329571627,-2.1874064192536067e-5,1.0224554437432966e-8,0.0018293535538177238,-2.1937215282132975e-5,1.027838557907086e-8,0.0018297433561300666,-2.1953289747187514e-5,1.0288214837085777e-8,0.0018301945153309169,-2.1879869760203124e-5,1.0215787794044302e-8,0.001830658946308421,-2.168992779500395e-5,1.0036992338479185e-8,0.0018310753618979378,-2.138679258668782e-5,9.755367998113473e-9,0.0018313889838965569,-2.1011704357252705e-5,9.40893730399691e-9,0.0018315746329431721,-2.063467135717398e-5,9.061841978804914e-9,0.0018316490783180249,-2.0328796754628263e-5,8.780851241439044e-9,0.0018316632653398112,-2.0141677331726018e-5,8.60917634137112e-9,0.001831679395233614,-2.0080681978185537e-5,8.55305072202464e-9,0.0018317476612021335,-2.0117816834583795e-5,8.586332987307337e-9,0.0018318940208144653,-2.0206428881992914e-5,8.665969743081962e-9,0.0018321201082134187,-2.0298263194615822e-5,8.747708166164193e-9,0.001832409908402203,-2.0354458317239478e-5,8.796142458866711e-9,0.00183273774398109,-2.035003732644327e-5,8.788718700893353e-9,0.001833074770107819,-2.027416826766039e-5,8.715846695855356e-9,0.001833393452426999,-2.0128529716534936e-5,8.579316424344743e-9,0.0018336705866361742,-1.992511730302927e-5,8.390268759309309e-9,0.0018338894912187423,-1.968387735533606e-5,8.167058601271752e-9,0.0018340416791292305,-1.943010095958344e-5,7.932910852662894e-9,0.0018341280134618974,-1.9191384559990707e-5,7.713154507289564e-9,0.0018341590816821458,-1.8994066898046752e-5,7.53193522572574e-9,0.0018341544149850127,-1.885940649167221e-5,7.40865932392435e-9,0.0018341403815578727,-1.8800038802715472e-5,7.3546966523347715e-9,0.0018341468535115438,-1.8817250628981883e-5,7.370872897137305e-9,0.0018342029234141627,-1.889956862277312e-5,7.446231414582977e-9,0.0018343321227258867,-1.9023083174690816e-5,7.558447698209529e-9,0.0018345476553118807,-1.9153707945490168e-5,7.676042116963366e-9,0.0018348481083950683,-1.9251549921866032e-5,7.762491329140837e-9,0.0018352144196331546,-1.9277769509678416e-5,7.782530133022137e-9,0.0018356096596253435,-1.920398976117508e-5,7.710681424220857e-9,0.0018359837763515755,-1.9022957466042443e-5,7.540865396769042e-9,0.0018362849741516284,-1.8756908829736255e-5,7.293910761478627e-9,0.0018364766833233455,-1.8457870012827724e-5,7.017737181329629e-9,0.0018365538571077135,-1.8194914639068882e-5,6.775647214996834e-9,0.001836548563460727,-1.803024372589666e-5,6.624410847690285e-9,0.0018365187675594202,-1.7995409567851337e-5,6.592525088216024e-9,0.0018365252877235454,-1.8081331449302935e-5,6.671177914624835e-9,0.0018366101542084223,-1.8246672589318575e-5,6.822077045534804e-9,0.0018367869375824912,-1.8436994200718304e-5,6.995122222991016e-9,0.001837043888830328,-1.8602938875977135e-5,7.145101322978344e-9,0.0018373537387537482,-1.8710583772040503e-5,7.241122599512904e-9,0.0018376837337121634,-1.8743874840279134e-5,7.2687428712580284e-9,0.0018380027530075403,-1.8702372696090056e-5,7.227808403795434e-9,0.0018382852635966235,-1.8597450955179613e-5,7.128926096284541e-9,0.001838513176276471,-1.8448670412689796e-5,6.990149973877557e-9,0.0018386767249291653,-1.8280754164638692e-5,6.8342449477846595e-9,0.0018387750038904136,-1.812090639012062e-5,6.686252226411574e-9,0.0018388162973281307,-1.799601728606697e-5,6.570911706461216e-9,0.0018388179260978472,-1.7929389648419776e-5,6.509607695224068e-9,0.0018388050594228275,-1.7937016075237906e-5,6.516893378261047e-9,0.0018388079846011016,-1.8023966004633595e-5,6.597145459559734e-9,0.001838857713922728,-1.818180313357647e-5,6.742223335637884e-9,0.0018389803552352245,-1.838806035919854e-5,6.9310780933096055e-9,0.0018391912530982262,-1.860858891245793e-5,7.132034188312767e-9,0.0018394902971468079,-1.88029481324306e-5,7.3078518212857724e-9,0.0018398597310770378,-1.8932177661136858e-5,7.422918615431776e-9,0.0018402654168871984,-1.896772954162206e-5,7.451423914551764e-9,0.0018406621235211068,-1.8899934385024923e-5,7.385028293072869e-9,0.0018410028729857332,-1.8743806537061265e-5,7.238049462551088e-9,0.0018412512510457238,-1.8539475868505472e-5,7.047719368366382e-9,0.0018413937282192889,-1.834483799071887e-5,6.86733900839635e-9,0.0018414470718991932,-1.8220140618210308e-5,6.752093172557913e-9,0.0018414557581306575,-1.8208514775956216e-5,6.741217444212319e-9,0.0018414780209857879,-1.8320709364073575e-5,6.844095149750602e-9,0.001841565803992494,-1.8532077021471085e-5,7.037638298125493e-9,0.0018417482230087799,-1.8793447944416692e-5,7.276395121919292e-9,0.001842025845932932,-1.9049480082961622e-5,7.509453930519011e-9,0.001842376034057044,-1.925507263145096e-5,7.69549565376883e-9,0.0018427639401787223,-1.9383990375315344e-5,7.810647629678605e-9,0.0018431531413094465,-1.942958955901095e-5,7.849070713791684e-9,0.0018435127392187048,-1.940088549418417e-5,7.8192866216250315E-09,0.001843820730492911,-1.9317320377072763e-5,7.739348166296656e-9,0.0018440648885501498,-1.9204160908646343e-5,7.632620118984367e-9,0.001844242531542363,-1.9089035068363377e-5,7.524612793811735e-9,0.0018443600647661403,-1.8999259868333292e-5,7.440521812341918e-9,0.001844432549312981,-1.8959307662865297e-5,7.402863667254894e-9,0.0018444829953387927,-1.8987874349045107e-5,7.428729689176291e-9,0.0018445407209490732,-1.9094430440071465e-5,7.52658268876082e-9,0.0018446380463958871,-1.9275761849198014e-5,7.693093256534828e-9,0.001844804951317121,-1.9513700180089063e-5,7.911127592194227e-9,0.0018450622049142106,-1.9775670897407012e-5,8.15036239379623e-9,0.0018454146537959305,-2.0019361155694627e-5,8.37168352380671e-9,0.0018458471645658634,-2.020149491512519e-5,8.53532123115057e-9,0.001846325472916595,-2.0288852030465627e-5,8.610991677718667e-9,0.001846802738334875,-2.0268255874207588e-5,8.587035433849896e-9,0.0018472305526570348,-2.0152106866842266e-5,8.475412368243551e-9,0.0018475714841345342,-1.99772538420524e-5,8.31053358635742e-9,0.0018478096100095864,-1.9796940495792812e-5,8.141712154172403e-9,0.0018479558587613187,-1.9667497884298463e-5,8.020816057287474e-9,0.0018480460497650023,-1.9633092096664974e-5,7.988216118779569e-9,0.0018481313475885142,-1.97130435184807e-5,8.061204673026506e-9,0.0018482635125553158,-1.989628715353263e-5,8.229056332405201e-9,0.0018484798977238869,-2.014547254945726e-5,8.45695909902495e-9,0.0018487937859131421,-2.0409270039150275e-5,8.697434490355547e-9,0.0018491933464550954,-2.0637777460108637e-5,8.904531720257321e-9,0.001849648388562267,-2.0794981895125802e-5,9.04525543618406e-9,0.0018501208603383453,-2.0864590650255843e-5,9.104868950596546e-9,0.0018505745805460858,-2.0849287684095834e-5,9.086145203825255e-9,0.0018509815951685388,-2.0766006244656177e-5,9.004964655845875e-9,0.0018513249009249032,-2.0640121265863943e-5,8.88493947825769e-9,0.0018515986248674762,-2.0500399014916906e-5,8.75275158592604e-9,0.0018518069924697927,-2.037529947986055e-5,8.634737803338043e-9,0.0018519630574627775,-2.029034519449881e-5,8.55444480376467e-9,0.0018520875544509319,-2.0265862670398454e-5,8.530515515536571e-9,0.0018522076118006106,-2.0314479503742223e-5,8.574357895458459e-9,0.001852354640478269,-2.043817792207266e-5,8.68743961998716e-9,0.0018525605725263623,-2.0625343158510295e-5,8.85862825193293e-9,0.0018528519045839407,-2.0849110173348045e-5,9.06276525797922e-9,0.0018532420360760945,-2.1069073571299936e-5,9.262339779435322e-9,0.001853724130935122,-2.123818424609054e-5,9.413907129041965e-9,0.0018542681745039775,-2.13146965067963e-5,9.479118156772436e-9,0.001854825500677946,-2.1275855803305648e-5,9.437327265942164e-9,0.0018553411001434338,-2.1127603421251835e-5,9.294511094167757e-9,0.001855769808091963,-2.0905197786356253e-5,9.083769325899609e-9,0.001856089934500493,-2.066366542445483e-5,8.856377940750694e-9,0.001856309055157489,-2.0461827016597087e-5,8.66688007773098e-9,0.0018564605291198604,-2.0346009610590452e-5,8.557941716365146e-9,0.0018565929794966702,-2.0338609963516525e-5,8.549815123998282e-9,0.0018567566935258077,-2.0434095465034442e-5,8.636794189047838e-9,0.0018569909246059376,-2.0602544164462002e-5,8.790679141975657e-9,0.001857315247217037,-2.079894845221756e-5,8.96952007306406e-9,0.0018577267622189627,-2.097526582003082e-5,9.12880609280628e-9,0.001858203223977554,-2.109175679528336e-5,9.231914666619509e-9,0.0018587104540100233,-2.1124682017155018e-5,9.257156442445109e-9,0.0018592113115679834,-2.106890188932159e-5,9.200104828967708e-9,0.0018596735056705283,-2.0935816127821806e-5,9.07163153057935e-9,0.0018600745996205108,-2.0748452915729757e-5,8.89332379757743e-9,0.0018604039664238258,-2.0535775690622106e-5,8.692194187757801e-9,0.0018606624467996109,-2.032768021272182e-5,8.496037214902576e-9,0.0018608607937328295,-2.0151290741381685e-5,8.329989644194028e-9,0.0018610177895546044,-2.0028404875289557e-5,8.214148845006132e-9,0.0018611584243115355,-1.9973516875703052e-5,8.161728802068476e-9,0.0018613119834204608,-1.999186368250376e-5,8.17725592983337e-9,0.0018615094730483387,-2.0077264157555704e-5,8.254611200906061e-9,0.0018617795921467622,-2.021010824142319e-5,8.375250055651793e-9,0.0018621426777235635,-2.0356759570897997e-5,8.507743574528015e-9,0.0018626030974959807,-2.0472527218197918e-5,8.610594760757943e-9,0.001863142529370494,-2.0510266452106173e-5,8.640213095127023e-9,0.001863718542838287,-2.0434462278556232e-5,8.563932655985352e-9,0.0018642726717816077,-2.0236362154722935e-5,8.374014217097276e-9,0.0018647478436570396,-1.9942109211313427e-5,8.095175761587323e-9,0.001865108368948935,-1.960728289796133e-5,7.779474788722417e-9,0.0018653524017467537,-1.9298711898535704e-5,7.4892916930745e-9,0.0018655107551995035,-1.9072315354648044e-5,7.27659510756275e-9,0.0018656340820196373,-1.895724351204022e-5,7.168151304633016e-9,0.0018657758320747826,-1.895135064135561e-5,7.161416176012306e-9,0.0018659780113648356,-1.9026593337249196e-5,7.229749985625541e-9,0.0018662631207856332,-1.9139791481250695e-5,7.332602529333776e-9,0.0018666323647777408,-1.9244376015289706e-5,7.426524029334083e-9,0.0018670686302071045,-1.93003096381889e-5,7.474374412439072e-9,0.0018675424105708905,-1.9280847880737214e-5,7.451532270409492e-9,0.0018680189994260549,-1.9175704489265866e-5,7.348747503653877e-9,0.0018684654564785955,-1.8990736169104185e-5,7.171778438188237e-9,0.0018688561260398076,-1.8744836865035615e-5,6.938463114669843e-9,0.0018691760026911882,-1.8465188498455326e-5,6.674284503730649e-9,0.001869421833270251,-1.818207784859466e-5,6.407542925266269e-9,0.0018696013388690184,-1.7924257543533537e-5,6.165035437391302e-9,0.0018697312745747144,-1.77154221714517e-5,5.968767927016784e-9,0.0018698350512996898,-1.7571817919185243e-5,5.8337191006715384e-9,0.0018699402886244905,-1.750060390009367e-5,5.76630978226681e-9,0.0018700762544792589,-1.7498573862310598e-5,5.763229760950721e-9,0.0018702708423503566,-1.7551071627329354e-5,5.8104800416812336e-9,0.0018705465025051088,-1.763137263486119e-5,5.882878383752786e-9,0.0018709146903029294,-1.770161615547732e-5,5.945007935726127e-9,0.0018713693790612124,-1.771717503436893e-5,5.955326079857078e-9,0.001871882005628167,-1.7636224585071255e-5,5.875056690709975e-9,0.0018724021730790383,-1.7434179833481032e-5,5.681589270232072e-9,0.0018728684333721528,-1.7118167658035483e-5,5.3819353393236815e-9,0.0018732287172204356,-1.6732355540166632e-5,5.017686966724454e-9,0.0018734616898216,-1.6346704189132433e-5,4.654472798669768e-9,0.0018735862278335242,-1.6031827206181716e-5,4.358367558462995e-9,0.0018736526901350647,-1.583326478782647e-5,4.1717537065880975e-9,0.0018737219046122688,-1.5758804508346698e-5,4.10148922345258e-9,0.0018738443004110933,-1.578241850439683e-5,4.12273758898688e-9,0.0018740479774201498,-1.5858384906640113e-5,4.192354118637595e-9,0.0018743368377812267,-1.5936813363410486e-5,4.2635170100055776e-9,0.0018746952507608576,-1.5975245333576563e-5,4.296582563572818e-9,0.001875095253598817,-1.594505681652756e-5,4.265000879239349e-9,0.0018755037392833745,-1.5833619336192383e-5,4.157239354603041e-9,0.0018758885761289046,-1.5643635440476038e-5,3.976084601740173e-9,0.001876223379869671,-1.539063040568846e-5,3.736258860742264e-9,0.0018764908158095375,-1.5099215718405392e-5,3.460921341786339e-9,0.0018766843555797306,-1.4798700313825205e-5,3.1775739251165955e-9,0.001876808514204054,-1.4518593640800304e-5,2.913862771528727e-9,0.001876877684600156,-1.428449594527703e-5,2.6937304046643276e-9,0.0018769138794313335,-1.4114849713635936e-5,2.534362112040424e-9,0.001876943877891384,-1.4018784813808756e-5,2.444153315210054e-9,0.0018769961556297737,-1.3994930354196748e-5,2.4215928014478305e-9,0.0018770976892354386,-1.4030988542626093e-5,2.454884423634573e-9,0.0018772705481379275,-1.4104015382463982e-5,2.5222631987773908e-9,0.001877528051302119,-1.4181603792678899e-5,2.5931789806121115e-9,0.0018778703569376982,-1.4224713941675174e-5,2.6310160704288327e-9,0.0018782801543122864,-1.4193451439422243e-5,2.598529820729149e-9,0.0018787205590664604,-1.405678212300852e-5,2.4669139600598395e-9,0.0018791386692319275,-1.3805285464980217e-5,2.2276810492311913e-9,0.0018794780123360833,-1.3462303276611882e-5,1.9030504386180313e-9,0.0018796988460152687,-1.3085081939944344e-5,1.5469771882351445e-9,0.001879797376121251,-1.2749246711917046e-5,1.2305366805810725e-9,0.001879810814909188,-1.2520431987685998e-5,1.0152379061173355e-9,0.0018798025069450173,-1.2428480565797385e-5,9.28792039154265e-10,0.0018798356637794984,-1.2459405930458762e-5,9.576569245815327e-10,0.0018799514652937973,-1.2567147881760806e-5,1.058227207885944e-9,0.0018801611228964044,-1.2694459694026742e-5,1.1765668337490139e-9,0.0018804504286041776,-1.2790844470236134e-5,1.2652815802583089e-9,0.0018807898296935043,-1.2822211239622132e-5,1.2925348480468322e-9,0.001881144296639176,-1.2773137375766395e-5,1.244082520275377e-9,0.001881480541304962,-1.2644829708590756e-5,1.1212779543347608e-9,0.0018817714830373492,-1.2451442593087324e-5,9.37573033027889e-10,0.0018819987877392661,-1.2216113471832141e-5,7.147943106851535e-10,0.0018821541835679256,-1.1967040551517974e-5,4.79481554800589e-10,0.001882239823342938,-1.1733614321682521e-5,2.592733145950963e-10,0.0018822677333682823,-1.1542659347071796e-5,7.937878641490489e-11,0.001882258290813125,-1.1414929386642006e-5,-4.073055482831923e-11,0.00188223769665013,-1.1362192719985606e-5,-9.008293919875422e-11,0.001882234648515446,-1.1385337979164145e-5,-6.800108198389007e-11,0.0018822765976668182,-1.147373068275585e-5,1.529829570741141e-11,0.0018823859220090569,-1.1605863972995146e-5,1.3934936610352848e-10,0.0018825762769299201,-1.1751333204930212e-5,2.7535196640362164e-10,0.001882849356696919,-1.1874174668779581e-5,3.8937810798312383e-10,0.0018831923326353601,-1.1937760844475924e-5,4.470257514000792e-10,0.0018835766745060477,-1.1911660763090492e-5,4.198775427362523e-10,0.0018839599006157666,-1.1780441166968134e-5,2.937343558620432e-10,0.0018842923200876947,-1.1552816367157377e-5,7.714292268036392e-11,0.0018845300065070212,-1.1267101431234662e-5,-1.935563353070176e-10,0.001884651848842402,-1.0986979616266467e-5,-4.582805070815646e-10,0.0018846729512961321,-1.0783668473551395e-5,-6.500369715974631e-10,0.001884644026311698,-1.0709107993313308e-5,-7.201687612284614e-10,0.0018846329849430254,-1.0774324376780514e-5,-6.586566194780138e-10,0.0018846977991100334,-1.0946622650667459e-5,-4.966346506891892e-10,0.0018848664449174443,-1.1166459365350037e-5,-2.9038739613313543e-10,0.0018851332005309256,-1.1371807843700045e-5,-9.836030862044166e-11,0.00188546833284025,-1.1516483567944784e-5,3.6072174092010136e-11,0.0018858320534413794,-1.1577196587717038e-5,9.118298144119174e-11,0.0018861858170151932,-1.1551897946543376e-5,6.526251494340663e-11,0.0018864988368209698,-1.1454250824736898e-5,-2.8641386320276168e-11,0.0018867506997908348,-1.130771157982184e-5,-1.683171289939276e-10,0.0018869317981828468,-1.114067253953726e-5,-3.269535468848281e-10,0.00188704288267068,-1.0982683580718171e-5,-4.766790893169354e-10,0.00188709425157458,-1.0861262431198378e-5,-5.915582605683498e-10,0.0018871045582005074,-1.0798915164720963e-5,-6.504092600231872e-10,0.0018870989904794264,-1.0810255077489202e-5,-6.395398827368157e-10,0.0018871065171513206,-1.089946266139451e-5,-5.551558313967678e-10,0.0018871561148395357,-1.1058676341069262e-5,-4.048719775294948e-10,0.0018872723151573511,-1.1267948529405112e-5,-2.077232698081918e-10,0.0018874707273317042,-1.1497174238386989e-5,7.702962172308863e-12,0.0018877543345839755,-1.1710094620244999e-5,2.0709679356946207e-10,0.0018881113731507087,-1.1870079468074387e-5,3.5592247332806187e-10,0.0018885154354453212,-1.1947025394181564e-5,4.2594198011051527e-10,0.0018889282709940963,-1.1924554434572256e-5,4.0198452420754266e-10,0.0018893057509901104,-1.180642796887354e-5,2.8793937793174093e-10,0.0018896072155190882,-1.1620319815144137e-5,1.102325230061882e-10,0.0018898073174633363,-1.141620503858083e-5,-8.378045830706647e-11,0.0018899072882816023,-1.1256680872880053e-5,-2.350144500265779e-10,0.00188994004525897,-1.1199004466727915e-5,-2.8962303888349816e-10,0.0018899634124805416,-1.1274091765243815e-5,-2.187662588737686e-10,0.0018900409279768637,-1.1472911999612212e-5,-3.133758064503063e-11,0.0018902183761997377,-1.1749297526970216e-5,2.2880621691449785e-10,0.0018905085190595347,-1.2038537620544541e-5,5.004579398597872e-10,0.0018908911977333046,-1.2281010673800587e-5,7.273646082903298e-10,0.0018913257026649535,-1.2438746635557551e-5,8.738262880584713e-10,0.001891766418942364,-1.2500025159169855e-5,9.289921702418269e-10,0.0018921745217345054,-1.2474898759061678e-5,9.025856295473614e-10,0.0018925235949496604,-1.2387224374957897e-5,8.173373978207359e-10,0.0018928006012498605,-1.2267242724669224e-5,7.019521780489794e-10,0.001893004532648849,-1.2146219309942353e-5,5.860420989860535e-10,0.0018931444568213974,-1.2052958305120446e-5,4.968374482519974e-10,0.0018932376922635935,-1.201136506885249e-5,4.5688395279176046e-10,0.0018933080932005942,-1.203830971069964e-5,4.820179060546816e-10,0.0018933840198379344,-1.2141431704543413e-5,5.792878687063079e-10,0.0018934954432214392,-1.2317048491958935e-5,7.449904944807481e-10,0.0018936698433884116,-1.2548874791752978e-5,9.63493451044306e-10,0.0018939271289290503,-1.2808571057900438e-5,1.207801973263226e-9,0.0018942745270844783,-1.3059009801183272e-5,1.4426931836520661e-9,0.0018947029628015445,-1.3260512884313262e-5,1.6306445395104082e-9,0.0018951865409454112,-1.3379240786205856e-5,1.739776196090901e-9,0.0018956861193035659,-1.339582085200682e-5,1.7520006276159735e-9,0.001896156784362993,-1.3311821218936873e-5,1.6691149414387627e-9,0.0018965578833635218,-1.315201628144059e-5,1.5148888736049156e-9,0.0018968634955145083,-1.2961201862073039e-5,1.3319718714925833e-9,0.0018970707895216053,-1.27953186054354e-5,1.1734090967998433e-9,0.0018972035254706415,-1.270792499395131e-5,1.0897877058615488e-9,0.0018973082905004745,-1.2734836504746565e-5,1.1147159041982071e-9,0.0018974426469162598,-1.2881765897702211e-5,1.2532161191392723e-9,0.0018976577334179135,-1.3120638566367633e-5,1.4783604413576136e-9,0.0018979817061840188,-1.3397830754750496e-5,1.7391592222003208e-9,0.001898411458923872,-1.3651830597880485e-5,1.9773042111285594e-9,0.0018989162166529016,-1.3832467412215963e-5,2.1453543532283e-9,0.0018994501504002229,-1.3913394698958246e-5,2.218528300226893e-9,0.0018999670934915821,-1.3894285229865015e-5,2.1967560935101533e-9,0.0019004313205916007,-1.3794987368719163e-5,2.0991062793393773e-9,0.0019008222473536457,-1.3646563923406225e-5,1.9552477096692173e-9,0.0019011342862434643,-1.3483210869567092e-5,1.7977502645593472e-9,0.0019013742670453792,-1.3336710126712298e-5,1.656805182705815e-9,0.0019015583445810035,-1.3233251710861967e-5,1.557210441490532e-9,0.0019017093215130678,-1.3191683234416556e-5,1.516718948288368e-9,0.0019018544551819409,-1.322222486221346e-5,1.5448335845441187e-9,0.0019020232614363063,-1.332508798252e-5,1.641518474045382e-9,0.0019022446122891282,-1.3489036976123344e-5,1.7958687511443292e-9,0.0019025425844261994,-1.369058867045455e-5,1.985394636394811e-9,0.0019029310998461496,-1.3895103526272778e-5,2.177098013812628e-9,0.0019034084130146504,-1.4061158291373949e-5,2.3316432829741173e-9,0.0019039536403952983,-1.4148798826174367e-5,2.411188360481643e-9,0.00190452798036301,-1.4130390523376207e-5,2.3896713112052716e-9,0.0019050821403015848,-1.4000599135125858e-5,2.262277159589695e-9,0.0019055688083909521,-1.3781106731241096e-5,2.0499028297317794e-9,0.0019059562148011579,-1.3517137805515713e-5,1.795813482384683e-9,0.0019062378216281627,-1.3266226807941069e-5,1.55488479026225e-9,0.0019064346707243743,-1.3082876840158903e-5,1.3789321851604236e-9,0.0019065897975290977,-1.300402884385789e-5,1.3028645792247607e-9,0.0019067566525288243,-1.3039478647258866e-5,1.335631681489911e-9,0.0019069848668208623,-1.3169664466781716e-5,1.458241594737562e-9,0.0019073072088376596,-1.3351363244590194e-5,1.6292950121476715e-9,0.0019077314104704636,-1.35297729754093e-5,1.7965331398129217e-9,0.0019082393455308658,-1.3653389545506359e-5,1.910981408664566e-9,0.0019087936495511212,-1.368692249063571e-5,1.9391998920108105e-9,0.0019093490888763,-1.36182247050182e-5,1.8698433679372743e-9,0.0019098643504093444,-1.3457815665676977e-5,1.7131785903247102e-9,0.0019103104535418381,-1.3232664882104302e-5,1.49513174647234e-9,0.001910674199703993,-1.2977653683504635e-5,1.2491153226176072e-9,0.001910957383345947,-1.2727836569487273e-5,1.0086216538112337e-9,0.0019111736376836673,-1.2513095263658599e-5,8.021151208985223e-10,0.0019113446910483782,-1.2355262008813369e-5,6.502990133921028e-10,0.0019114970699477254,-1.2266914435896981e-5,5.649887739956633e-10,0.001911659458251913,-1.2250863989869682e-5,5.48651037755953e-10,0.0019118603142655674,-1.2299688915426472e-5,5.939871771107086e-10,0.0019121250704395051,-1.2395224103850199e-5,6.83479516283135e-10,0.001912472298250459,-1.2508553962420433e-5,7.894175597020551e-10,0.0019129086995072113,-1.2601732458062466e-5,8.755614362231623e-10,0.0019134238587510172,-1.2632856875682743e-5,9.019823758839568e-10,0.0019139872139001782,-1.2565475255362356e-5,8.340185275907759e-10,0.0019145507149744756,-1.2380996991705414e-5,6.541016494998854e-10,0.0019150594943169597,-1.208942059331609e-5,3.720012705806915e-10,0.0019154687355826697,-1.1731803189978585e-5,2.7186751351475117e-11,0.0019157599073696201,-1.1370438510631843e-5,-3.2059589419623007e-10,0.0019159480871280882,-1.1069433649940181e-5,-6.099776897920081e-10,0.0019160765242110884,-1.0874351161307604e-5,-7.975067244527357e-10,0.001916201638240862,-1.0799731954230843e-5,-8.695695269755934e-10,0.0019163757206690922,-1.0828066294132719e-5,-8.432736692445251e-10,0.001916633663319116,-1.0918083407511515e-5,-7.583931686950212e-10,0.0019169865545414935,-1.1017681518618213e-5,-6.649208970516302e-10,0.0019174220148160516,-1.1077138327480256e-5,-6.104228457140029e-10,0.001917909652400136,-1.1059628873658679e-5,-6.300141180862712e-10,0.0019184095373273615,-1.0947442807596206e-5,-7.404583107456317e-10,0.0019188815145464583,-1.074336196537258e-5,-9.388858115135974e-10,0.0019192932808213034,-1.0467594123611643e-5,-1.20575358697917e-9,0.0019196256213150462,-1.0151606595075532e-5,-1.5107725145640873e-9,0.0019198741582867806,-9.830831037267878e-6,-1.8199155582087304e-9,0.001920048034328906,-9.53810189496491e-6,-2.101716952530784e-9,0.00192016664884815,-9.298985720095432e-6,-2.3317451423285186e-9,0.0019202557299710247,-9.129284586844093e-6,-2.4949779817672822e-9,0.0019203436982262987,-9.03425635494825e-6,-2.5865276762768656e-9,0.0019204586561453517,-9.008766308266697e-6,-2.6114761398253937e-9,0.0019206257964393613,-9.037767379553837e-6,-2.584400459288261e-9,0.0019208647556760669,-9.096934635335611e-6,-2.528749375572851e-9,0.0019211863918376449,-9.153791617985142e-6,-2.475744453410305e-9,0.0019215887893763244,-9.170318069016814e-6,-2.4618619106144695e-9,0.0019220532680969222,-9.108486698013456e-6,-2.5235177511399977e-9,0.0019225426370994027,-8.93968667282501e-6,-2.6880381102716844e-9,0.0019230051437690364,-8.656881355420935e-6,-2.9620064184294193e-9,0.0019233868768198299,-8.284641843373393e-6,-3.321635583237772e-9,0.0019236508865696793,-7.87924983238811e-6,-3.7126811593957043e-9,0.0019237944180940756,-7.513626152701059e-6,-4.064969808739745e-9,0.0019238530642237287,-7.251346875133989e-6,-4.317442787274023e-9,0.0019238875264319904,-7.123184534446885e-6,-4.440727658128514e-9,0.0019239602849499028,-7.118772335068044e-6,-4.445080751689829e-9,0.0019241150340064711,-7.195410187776e-6,-4.3718032484889515e-9,0.0019243672115235493,-7.296057858543114e-6,-4.275859784550209e-9,0.0019247056490780219,-7.366796576870663e-6,-4.209081160263236e-9,0.001925100638222425,-7.368390575798459e-6,-4.2090899838722325e-9,0.0019255136991263675,-7.28124033598263e-6,-4.29459094897082e-9,0.0019259062934330908,-7.105313322498182e-6,-4.465474633111174e-9,0.001926246455241092,-6.8569503429279765e-6,-4.705904064104801e-9,0.001926513155176582,-6.563908504672785e-6,-4.989086595641599e-9,0.0019266984060524598,-6.259565315487143e-6,-5.28285207654197e-9,0.0019268072181901595,-5.977125716265304e-6,-5.555231795710813e-9,0.0019268557194206991,-5.744607949504135e-6,-5.779286983994542e-9,0.001926867956789526,-5.581192829623622e-6,-5.93661711990306e-9,0.0019268720688889452,-5.495252817643273e-6,-6.019245563941074e-9,0.0019268965365545243,-5.483964670467983e-6,-6.029980211505466e-9,0.0019269669147046517,-5.534047865259946e-6,-5.981698489668393e-9,0.0019271030607710645,-5.623188311924287e-6,-5.895977467639949e-9,0.0019273166863302753,-5.7219540024492885e-6,-5.8012471529754476e-9,0.001927608964943563,-5.7963044626612365e-6,-5.730359732741071e-9,0.001927968073137577,-5.811296023443038e-6,-5.716996716285913e-9,0.001928367327868175,-5.736968151573158e-6,-5.789976737812062e-9,0.0019287657529438592,-5.556881102280313e-6,-5.965023129181158e-9,0.0019291137044280984,-5.2780252562612125e-6,-6.235225744033611e-9,0.0019293656129909568,-4.9378508432014095e-6,-6.564293224012181e-9,0.0019294981647026979,-4.601333003765205e-6,-6.88943201632588e-9,0.001929525485728095,-4.342876353937429e-6,-7.138863176862139e-9,0.0019294994801223031,-4.217696588858802e-6,-7.25946537969358e-9,0.0019294908116161604,-4.238299439230228e-6,-7.239417461315074e-9,0.001929560314582812,-4.371015270438031e-6,-7.111424613284696e-9,0.0019297377118852202,-4.55344246107046e-6,-6.935795233464066e-9,0.001930017314096714,-4.719917590952116e-6,-6.775858205910853e-9,0.001930367658027968,-4.821014209853837e-6,-6.679201920416775e-9,0.0019307459008136353,-4.8316120263198285e-6,-6.669947990797228e-9,0.0019311099639047478,-4.749855588336907e-6,-6.749791325681373e-9,0.001931426078730715,-4.591648798416053e-6,-6.903320619292728e-9,0.0019316723240502833,-4.384152509840636e-6,-7.104284083463843e-9,0.00193183957714851,-4.159855661523347e-6,-7.321298468100921e-9,0.0019319309590358179,-3.951522849872863e-6,-7.522721099309414e-9,0.001931960272729608,-3.7879464393165173e-6,-7.680755766459321e-9,0.0019319496225054618,-3.690498897752296e-6,-7.774788967531755e-9,0.0019319263202685097,-3.6706055523742944e-6,-7.793831867149322e-9,0.001931919267959071,-3.7283927164905087e-6,-7.737819257871908e-9,0.0019319552108667095,-3.852716726614077e-6,-7.617573393096083e-9,0.0019320552988749142,-4.02248969024826e-6,-7.453520879166667e-9,0.0019322322171346693,-4.209066647074804e-6,-7.27339092546293e-9,0.0019324880384187753,-4.379522397329557e-6,-7.109051304871561e-9,0.0019328128907126745,-4.5006846976982455e-6,-6.9926006585541975e-9,0.001933184500922892,-4.543960637217014e-6,-6.951680008281516e-9,0.0019335690805746674,-4.491239132575197e-6,-7.0037418708715674e-9,0.0019339247854987158,-4.3417098714221724e-6,-7.149447726110859e-9,0.0019342092422925217,-4.118009382523817e-6,-7.366743932940767e-9,0.0019343916827004838,-3.868204312684253e-6,-7.608992772716862e-9,0.001934467361572726,-3.658733712507117e-6,-7.811866984567964e-9,0.001934467204138646,-3.5553083996379697e-6,-7.911879053399946e-9,0.0019344532495840499,-3.5966460829545584e-6,-7.871776332288663e-9,0.0019344968195731504,-3.7753114217998696e-6,-7.698978894623498e-9,0.0019346495112623097,-4.03947689724567e-6,-7.443761240396356e-9,0.0019349242390860283,-4.315579736048795e-6,-7.177294842177374e-9,0.0019352959799658958,-4.537209508290387e-6,-6.9637480873944295e-9,0.0019357174371195988,-4.664295527601881e-6,-6.8417869033334726e-9,0.0019361376429321514,-4.687227031264865e-6,-6.820621053087697e-9,0.0019365149604292852,-4.620518272556331e-6,-6.886137513437268e-9,0.001936822735002006,-4.4930784615761195e-6,-7.01030959332819e-9,0.0019370497573068866,-4.3395817761451026e-6,-7.159541983283873e-9,0.0019371982714750445,-4.194332245529059e-6,-7.300606086896117e-9,0.0019372813098119841,-4.0872389658178436e-6,-7.404541171072901e-9,0.0019373200047168263,-4.041081596253815e-6,-7.449311969194115e-9,0.0019373408698219712,-4.06951090543502e-6,-7.421751862826817e-9,0.0019373728401152071,-4.175601163817662e-6,-7.318959872347354e-9,0.0019374438984557292,-4.351140097040351e-6,-7.14897163907601e-9,0.0019375773878386295,-4.577090029110529e-6,-6.930294004143148e-9,0.0019377884492321462,-4.8255307456941e-6,-6.690013847281935e-9,0.0019380811458521296,-5.063086450380342e-6,-6.460482833914179e-9,0.0019384468078961414,-5.2556340897116115e-6,-6.274765644942493e-9,0.001938864070694948,-5.373859826780817e-6,-6.161257575262624e-9,0.0019393008815218134,-5.39900090253849e-6,-6.138107237175963e-9,0.0019397185968336869,-5.328108998262378e-6,-6.208094891699568e-9,0.0019400783924782288,-5.178029968915432e-6,-6.3547673684562564e-9,0.001940350064460665,-4.986568248040517e-6,-6.541330751226949e-9,0.0019405222410656135,-4.808507589956162e-6,-6.714561951692604e-9,0.0019406110279473565,-4.704360703335738e-6,-6.815780527851394e-9,0.0019406619186682263,-4.722099909779016e-6,-6.798592282970913e-9,0.0019407397828170951,-4.877341093394415e-6,-6.6480630164182626e-9,0.0019409070239167167,-5.142645237546104e-6,-6.3909979796592525e-9,0.0019411991246476956,-5.455021750594156e-6,-6.08859132515089e-9,0.0019416113591816284,-5.739907638638507e-6,-5.813170806092759e-9,0.0019421039399188788,-5.938379623146413e-6,-5.621848443746926e-9,0.001942620441220814,-6.023358180511173e-6,-5.540825654139379e-9,0.0019431076064300335,-6.000155352616885e-6,-5.564854280690739e-9,0.0019435278468381142,-5.896618797745685e-6,-5.66679479290207e-9,0.0019438629592743444,-5.750852545969404e-6,-5.809548326748877e-9,0.0019441120808416875,-5.601534475667561e-6,-5.955480832384088e-9,0.001944287443752201,-5.482065741624393e-6,-6.072125549617999e-9,0.0019444101506376872,-5.417660736467644e-6,-6.135020234542866e-9,0.001944506708268009,-5.424015514502002e-6,-6.12900103028505e-9,0.0019446061453395735,-5.5065945921930115e-6,-6.048882321230036e-9,0.0019447372317435117,-5.660164219490716e-6,-5.899883466024544e-9,0.0019449253683826993,-5.8687316263243564E-06,-5.6976552684035205e-9,0.001945189030333371,-6.106463427556881e-6,-5.467362321854533e-9,0.001945536161431122,-6.340235377640483e-6,-5.241200084831334e-9,0.0019459613750219223,-6.534129514976202e-6,-5.0540407206024526E-09,0.0019464450016517627,-6.655627092463941e-6,-4.9374385215283745e-9,0.0019469548828858596,-6.682567740270542e-6,-4.912878296775678e-9,0.001947451269570495,-6.60932933283276e-6,-4.985758640608991e-9,0.0019478943525422965,-6.450513493834239e-6,-5.14178782748562e-9,0.0019482532181079584,-6.2407756398245034e-6,-5.347142200685174e-9,0.0019485145355209999,-6.029956846976695e-6,-5.553227818359947e-9,0.001948688832848761,-5.8732962326046545e-6,-5.706255960069141e-9,0.0019488117889920867,-5.817657136586249e-6,-5.76069054929591e-9,0.001948938125527602,-5.886667676818439e-6,-5.69370500652984e-9,0.0019491274075020232,-6.0699856033129015e-6,-5.515569915679763e-9,0.0019494249289553265,-6.3227915401508744E-06,-5.270071903094241e-9,0.001949845257742566,-6.578590377092514e-6,-5.022021831291358e-9,0.0019503668701211755,-6.771379833246088e-6,-4.8356927104913765e-9,0.001950941025999169,-6.857006618888046e-6,-4.754047856449597e-9,0.0019515098360051739,-6.823912357418047e-6,-4.788264987953578e-9,0.0019520240658229982,-6.690500284410137e-6,-4.920280238133386e-9,0.0019524536244067533,-6.49382548244997e-6,-5.113816259747165e-9,0.0019527895094792508,-6.276752315075202e-6,-5.326941081183438e-9,0.0019530401509459683,-6.078332438438705e-6,-5.521497393189113e-9,0.001953225817980965,-5.928567237035448e-6,-5.668236483345585e-9,0.0019533734478342783,-5.84651286102268e-6,-5.74866469745462e-9,0.0019535127069048035,-5.840135760566559e-6,-5.755159455452236e-9,0.0019536730713173847,-5.906707798229399e-6,-5.690546687804252e-9,0.0019538812761171337,-6.033223898987462e-6,-5.567654612994196e-9,0.0019541585144023286,-6.197000707763707e-6,-5.408699430107965e-9,0.0019545171385095907,-6.367107479822374e-6,-5.243879262195881e-9,0.0019549572076320533,-6.5074833444539475e-6,-5.108346058501838e-9,0.0019554639201165612,-6.582363249082454e-6,-5.03694129358835e-9,0.001956007498430186,-6.563809875728904e-6,-5.0568720809815e-9,0.001956546986261798,-6.4398326830353245e-6,-5.179789317621606e-9,0.001957038319601614,-6.220390777973844e-6,-5.3959025305882386e-9,0.001957445211377807,-5.938406346561329e-6,-5.6729623501463044E-09,0.0019577497434098727,-5.6441961139281294e-6,-5.961701088875459e-9,0.00195795905198493,-5.3940117834603315e-6,-6.207071934832427e-9,0.001958105475933685,-5.235595818058769e-6,-6.362420055449834e-9,0.0019582395183540724,-5.194843437985116e-6,-6.402542072145623e-9,0.001958417079498149,-5.267559275761301e-6,-6.331712684108876e-9,0.0019586841391798864,-5.419208397437096e-6,-6.183867152169376e-9,0.0019590632992368684,-5.5936274617679324e-6,-6.0140407497047866e-9,0.0019595468572287758,-5.728796846682779e-6,-5.882943397267424e-9,0.001960099404208329,-5.774659859002328e-6,-5.8395474337831e-9,0.0019606692273000065,-5.706491547132605e-6,-5.908007246472056e-9,0.001961203875844111,-5.5290734820936245e-6,-6.083550911233866e-9,0.001961663710892444,-5.271294504247528e-6,-6.33775249294814e-9,0.0019620291042840325,-4.974990706173587e-6,-6.62948408349352e-9,0.0019623006544432146,-4.683271223898374e-6,-6.916401377222745e-9,0.001962494734377491,-4.432015613971804e-6,-7.163317469825513e-9,0.00196263744876942,-4.24555166449937e-6,-7.3464495352867865e-9,0.001962759151531451,-4.135625053205161e-6,-7.454405906541533e-9,0.0019628903475563684,-4.102163162853727e-6,-7.487397138171459e-9,0.001963058825873597,-4.134581772027361e-6,-7.45591629508366e-9,0.0019632873735704035,-4.2130275752858015e-6,-7.37949782948698e-9,0.001963591384460584,-4.309670509689841e-6,-7.285447272084761e-9,0.001963976034392938,-4.390698571258319e-6,-7.2069014925367394E-09,0.00196443330876546,-4.419933657794488e-6,-7.1793089036528066e-9,0.0019649399761413515,-4.364865771727716e-6,-7.23453490273262e-9,0.001965458415821613,-4.2050069352158806e-6,-7.392670556572303e-9,0.0019659423021510165,-3.940624693125234e-6,-7.653438357820787e-9,0.001966347619651084,-3.5979703831828426e-6,-7.991020087185636e-9,0.001966646410720784,-3.2268073690315724e-6,-8.35646294373238e-9,0.001966837804951861,-2.88866026076316e-6,-8.6892469084276e-9,0.0019669507350560987,-2.638942552458159e-6,-8.93489923720782e-9,0.001967036219204756,-2.509897091168396e-6,-9.061792188439865e-9,0.0019671521102095036,-2.5011703515333097e-6,-9.070385947269845e-9,0.001967346338386762,-2.5810055380569523e-6,-8.992002968155938e-9,0.0019676443316525953,-2.696486676324743e-6,-8.878723391163976e-9,0.0019680437540308916,-2.788602202893239e-6,-8.788584213578214e-9,0.00196851699192739,-2.8074134547524235e-6,-8.77069512204032e-9,0.0019690198105688102,-2.723406029950918e-6,-8.854087293070188e-9,0.001969503286514971,-2.5325606025790628e-6,-9.042705655591e-9,0.0019699255438227234,-2.2545503651888572e-6,-9.317149614451272e-9,0.0019702602048416143,-1.9254253998824907e-6,-9.64186138287465e-9,0.0019704998243126686,-1.587626778063647e-6,-9.974977396460062e-9,0.001970654436207738,-1.2805361083925496e-6,-1.0277671836369529E-08,0.001970746848452303,-1.0338220010957484e-6,-1.0520734387427998e-8,0.001970806813276138,-8.642671882979529e-7,-1.0687691080751363e-8,0.0019708657346138646,-7.754852094272468e-7,-1.0775054263680461e-8,0.001970952685885467,-7.59358064857489e-7,-1.0790873734095068e-8,0.001971091690133412,-7.980785287859418e-7,-1.075270881326718e-8,0.0019712997330186763,-8.661819417994633e-7,-1.0685635082892515e-8,0.001971584912381313,-9.325958251431366e-7,-1.0620251655417039e-8,0.001971944386893563,-9.632389319096306e-7,-1.0590148555848218e-8,0.0019723623172643737,-9.250101036695197e-7,-1.0627989281767547e-8,0.001972808830631805,-7.919702181976068e-7,-1.0759406320346234e-8,0.0019732419679683944,-5.536462457545765e-7,-1.0994779047683153e-8,0.001973614823661226,-2.2335933302557065e-7,-1.1320973812675675e-8,0.0019738884737286657,1.5799990717252462e-7,-1.1697589927724113e-8,0.0019740473224203847,5.280347963458416e-7,-1.2062959771330483e-8,0.00197410928803649,8.20358883314744e-7,-1.2351497457826083e-8,0.001974123317235958,9.877098265902934e-7,-1.251656570489879e-8,0.001974153255924493,1.0192999814429548e-6,-1.2547588496020676e-8,0.0019742556717545824,9.434428611000109e-7,-1.2472576911245205e-8,0.0019744623865517686,8.154180584666158e-7,-1.2346103517772794e-8,0.001974774135226251,6.982018680757243e-7,-1.2230299564424663e-8,0.001975164866836536,6.44800593857355e-7,-1.2177471453811616e-8,0.001975592187135106,6.871905621175031e-7,-1.221921769330186e-8,0.001976009248334955,8.327104581488337e-7,-1.2362852376014084e-8,0.0019763749925609457,1.0663971388143509e-6,-1.259366276420492e-8,0.001976661273607453,1.3571121056137057e-6,-1.2880913658228117e-8,0.0019768563928079714,1.6655158949823804e-6,-1.3185711559255818e-8,0.001976965150873674,1.9522178827619e-6,-1.3469078659361015e-8,0.0019770060231024044,2.1846215565256827e-6,-1.3698753468466588e-8,0.001977006519814771,2.3414551764659016e-6,-1.3853691582153882E-08,0.0019769979445145433,2.4146980122888094e-6,-1.3925966248255384e-8,0.0019770105929741008,2.409217344158514e-6,-1.3920387497226856e-8,0.0019770700502998715,2.340825972519958e-6,-1.3852563760087515e-8,0.0019771946962903715,2.233613597212906e-6,-1.3746268263541514e-8,0.001977394083641216,2.117137695108602e-6,-1.3630691930216664e-8,0.00197766776849491,2.02355937158754e-6,-1.353764934893884e-8,0.0019780043391657534,1.9844130263776497e-6,-1.3498405475263642e-8,0.001978380746958981,2.0264143260061553e-6,-1.353951384539365e-8,0.001978762774876461,2.1656876800633962e-6,-1.3677055583687163e-8,0.00197910834678161,2.4005955486988004e-6,-1.3909478074330424e-8,0.0019793755690996236,2.7052325640155345e-6,-1.4211108687579435e-8,0.0019795358980323765,3.0280329593492748e-6,-1.4530782563116931e-8,0.0019795888602322726,3.3008762468395384e-6,-1.4800926854883546e-8,0.001979569909580966,3.4602522751505376e-6,-1.4958607317158036e-8,0.0019795428292347273,3.4729664075210322e-6,-1.4971007396679774e-8,0.0019795766858330343,3.3517185374406653e-6,-1.485078131230214e-8,0.001979719097725177,3.150012236996182e-6,-1.4650917551003886e-8,0.0019799807430923235,2.939717703579574e-6,-1.4442508997057445e-8,0.001980337179051505,2.785210747885825e-6,-1.4289220607364234e-8,0.001980742604001265,2.726455749296866e-6,-1.423061560237119e-8,0.0019811460867675897,2.7744247605888214e-6,-1.4277633511904348e-8,0.001981503955526798,2.915383589334282e-6,-1.4416788031389436e-8,0.0019817866606374806,3.119072655949307e-6,-1.4618203584318185e-8,0.0019819810541467733,3.3472878569643014e-6,-1.4844069697144964e-8,0.0019820896686203603,3.5612914305410776e-6,-1.5055977587760283e-8,0.00198212818028609,3.7276910519524167e-6,-1.522077511487346e-8,0.0019821217200457113,3.822702343827983e-6,-1.531483119915164e-8,0.001982100526968717,3.8346574475360094e-6,-1.5326546430867445e-8,0.001982095446197697,3.7647342774013897e-6,-1.525707214555077e-8,0.0019821337647565624,3.626027788928867e-6,-1.511936833404366e-8,0.00198223586051072,3.441229396883561e-6,-1.4935887639064302e-8,0.00198241295750562,3.2394074768603723e-6,-1.4735395171384388e-8,0.001982665941468611,3.0524134698759988e-6,-1.4549442314482317e-8,0.0019829850278711707,2.9111670054398966e-6,-1.4408723058841443e-8,0.0019833501452222605,2.841809897117393e-6,-1.4339272286988301e-8,0.0019837320752173157,2.8615334931783054e-6,-1.4358293854803897e-8,0.001984094861776407,2.9738376767734945e-6,-1.4469388182609625e-8,0.001984400625925791,3.163606036205151e-6,-1.465759406565055e-8,0.001984617903763515,3.39387177161666e-6,-1.4886148324894974e-8,0.001984733239124418,3.6078493427449448e-6,-1.5098540495896356e-8,0.001984762586708769,3.740319866084089e-6,-1.522990885918146e-8,0.001984755051949164,3.739151728899739e-6,-1.5228487094580237e-8,0.0019847812506757346,3.589373742862749e-6,-1.507949371776934e-8,0.0019849070018280613,3.324884794977739e-6,-1.481665653780441e-8,0.0019851657075547475,3.017077739740492e-6,-1.4510837813089766e-8,0.001985546337819205,2.7455641756043497e-6,-1.4240999293311826e-8,0.0019860027126962026,2.5689052542741243e-6,-1.4065234505030063e-8,0.001986474911058454,2.5102785475177926e-6,-1.4006586884914449e-8,0.001986909190146146,2.5597820777408202e-6,-1.4055310223533645e-8,0.001987269141598994,2.685729541695863e-6,-1.4180024373601416e-8,0.001987538415975901,2.8470244196991636e-6,-1.4339955147058143e-8,0.0019877184535379826,3.0026745725009918e-6,-1.4494369758932575e-8,0.001987824315689395,3.1178169485181043e-6,-1.4608579499453113e-8,0.0019878803285720108,3.1671431670578377e-6,-1.4657380747630862e-8,0.001987916017903525,3.1367378731829e-6,-1.4626916752757822e-8,0.00198796225735607,3.0248075252962984e-6,-1.4515412078652403e-8,0.001988047562103157,2.8413753222055076e-6,-1.4332850735856531e-8,0.0019881946131477435,2.60687216740141e-6,-1.4099542829987458e-8,0.001988417298411971,2.349527873938127e-6,-1.3843513258288562e-8,0.0019887187102340417,2.1016769841030624e-6,-1.3596844711551368e-8,0.001989090425727029,1.895388778983732e-6,-1.3391377619170956e-8,0.001989513160461744,1.7578895979745178e-6,-1.3254203612054567e-8,0.001989958770446367,1.7071788559904026e-6,-1.3203316404532476e-8,0.001990393534070427,1.7481911434179824e-6,-1.3243755974189393e-8,0.0019907827350952195,1.8697874359525122e-6,-1.336454230925692e-8,0.00199109681028482,2.0431157285996407e-6,-1.3536978415285554e-8,0.001991319151058384,2.222726763531207e-6,-1.371574429721612e-8,0.0019914544946981836,2.3526243150694117e-6,-1.3844968523515149e-8,0.0019915347809361574,2.379086977407752e-6,-1.3871077631016254e-8,0.001991617224389839,2.269346242030513e-6,-1.376144811926663e-8,0.0019917698902892863,2.0294384279911193e-6,-1.3522157951942242e-8,0.0019920466456429435,1.7095202837346074e-6,-1.3203206351826863e-8,0.001992463423863107,1.3885001624897012e-6,-1.288317749571206e-8,0.0019929908638321907,1.143480512993817e-6,-1.2638853847306288e-8,0.0019935682104733686,1.0214708448982725e-6,-1.2517091776224162e-8,0.0019941285130815195,1.0283869976145581e-6,-1.2523846927649901e-8,0.0019946200002937324,1.1365035316745898e-6,-1.2631538348227922e-8,0.001995015574720192,1.300685938679259e-6,-1.2795181679410482e-8,0.0019953118522825736,1.4734595686959486e-6,-1.2967407715671091e-8,0.0019955231121392253,1.6145721408287418e-6,-1.3108023269665573e-8,0.001995674485554681,1.6953207844439172e-6,-1.3188361405392658e-8,0.001995796372307964,1.6996250991069645e-6,-1.3192379686625797e-8,0.0019959203169879858,1.6236696505985474e-6,-1.3116312565503816e-8,0.0019960757921594096,1.475055708754886e-6,-1.2967807444551166e-8,0.0019962873383381975,1.271613814117125e-6,-1.2764702800757431e-8,0.001996571813660661,1.039617664310189e-6,-1.253321173415832e-8,0.001996935876688311,8.10987734279826e-7,-1.2305124592895642e-8,0.0019973742307001037,6.19237649378676e-7,-1.2113796509748371e-8,0.0019978693382533895,4.943937406260044e-7,-1.198913399233764e-8,0.0019983931254425164,4.575767847518032e-7,-1.1952232495962723e-8,0.0019989108215040154,5.162092500765573e-7,-1.2010593106379118e-8,0.0019993866344011147,6.609218430927506e-7,-1.215498240158599e-8,0.001999790531775251,8.650472468204294e-7,-1.2358850045151053e-8,0.0020001051872744658,1.0872195388065961e-6,-1.258086799786539e-8,0.0020003320300538583,1.2774384887276872e-6,-1.2770987731393865e-8,0.0020004948833237455,1.386820963278251e-6,-1.2880238021882123e-8,0.0020006389899060112,1.380409164658492e-6,-1.2873596607745973e-8,0.0020008230599442827,1.250445294729628e-6,-1.2743295658742569e-8,0.0020011035292148414,1.0248522465183068e-6,-1.2517287786395435e-8,0.0020015145004623476,7.642707366236366e-7,-1.2256256246504428e-8,0.002002052224806011,5.444286659134359e-7,-1.203598958625036e-8,0.0020026739455431216,4.2948544136936147e-7,-1.1920745495741174e-8,0.002003313579512777,4.496948714502562e-7,-1.1940890619262743e-8,0.0020039058326337656,5.94885512572639e-7,-1.208630936784008e-8,0.0020044058510690797,8.245709877731227e-7,-1.2316460457905977e-8,0.002004796841439746,1.0859096843776425e-6,-1.2578353220820108e-8,0.0020050868112686674,1.3296101468781744e-6,-1.2822521486441082e-8,0.0020053001577274294,1.5190539612688328e-6,-1.3012215262669332e-8,0.002005469139021302,1.6331027930982382e-6,-1.3126245137314179e-8,0.0020056275325741548,1.6652065850658668e-6,-1.3158091335992063e-8,0.0020058066106900104,1.6211993428942383e-6,-1.3113673482230696e-8,0.0020060325903481888,1.5170686408574125e-6,-1.3009079439298547e-8,0.002006324650222416,1.3769637497429265e-6,-1.2868534813545612e-8,0.0020066929754689877,1.2310800018681066e-6,-1.2722269046986007e-8,0.002007136798951896,1.1127780991151567e-6,-1.2603647647411476e-8,0.0020076429784578894,1.054378781853201e-6,-1.254500526328362e-8,0.002008186099861188,1.081598763449451e-6,-1.2572118807769247e-8,0.0020087311297168646,1.2074288608481698e-6,-1.2698088673752461e-8,0.002009239103287181,1.4270773152031296e-6,-1.2918234760844035e-8,0.0020096752789058284,1.716007875070945e-6,-1.3208055118895744e-8,0.0020100179652990918,2.0326550064858777e-6,-1.352587734554098e-8,0.0020102654993804938,2.3260539621831587e-6,-1.3820486693134687e-8,0.0020104390771972405,2.547030253336762e-6,-1.4042386690680413e-8,0.002010580106295075,2.6604804750482006e-6,-1.4156191902665433e-8,0.0020107419502173964,2.6557832329077294e-6,-1.4151139319925016e-8,0.0020109771879805558,2.5523069324261464e-6,-1.4046647718123685e-8,0.0020113229426591533,2.397375789826293e-6,-1.3890280276741745e-8,0.0020117884211216064,2.2554114694326285e-6,-1.3746841070905745e-8,0.0020123497341117697,2.1898980519676447e-6,-1.3680257875013628e-8,0.002012955651515441,2.2438213886840194e-6,-1.3733900181722728e-8,0.0020135433728180985,2.4266447610087438e-6,-1.39174182558369e-8,0.0020140579317852875,2.71366437476233e-6,-1.4206014604787913e-8,0.0020144668228012324,3.057204948402956e-6,-1.4551671002974376e-8,0.0020147647475891694,3.403199418756304e-6,-1.4899863316082618e-8,0.0020149692079483423,3.7055522989431925e-6,-1.520408419186706e-8,0.00201511150064555,3.9340846123691215e-6,-1.5433892567141782e-8,0.0020152277251075717,4.076173637410506e-6,-1.5576577887703656e-8,0.002015352239871468,4.134536644454852e-6,-1.563490853663456e-8,0.0020155138461719147,4.123692670047893e-6,-1.5623536213635403e-8,0.002015733840614426,4.0666243269108735e-6,-1.55656072328393e-8,0.0020160248674950276,3.992054942875605e-6,-1.549001455038565e-8,0.002016389829459018,3.93198510839712e-6,-1.542893704410032e-8,0.0020168206820040395,3.918765993757011e-6,-1.541493242521958e-8,0.0020172975756185623,3.980985777701276e-6,-1.5476833726911856E-08,0.0020177894153615887,4.137875398081949e-6,-1.5634127210906082e-8,0.002018257233673766,4.392939175307108e-6,-1.589050240627824e-8,0.0020186613266694954,4.728908346737077e-6,-1.6228694079735292e-8,0.0020189715206215524,5.107091194937329e-6,-1.660975065177038e-8,0.0020191776486713324,5.473615092617835e-6,-1.6979292753435012e-8,0.002019295779758033,5.772429950864491e-6,-1.7280651483171656e-8,0.002019366518176988,5.961349214838775e-6,-1.7471108259171236e-8,0.0020194449006417144,6.025194125173232e-6,-1.7535205282025255e-8,0.0020195851788385455,5.980999551576999e-6,-1.7490022440756466e-8,0.0020198257279237858,5.873603143711555e-6,-1.7380744515888384e-8,0.0020201787279912464,5.763467291729197e-6,-1.7268403150332105e-8,0.002020627231636164,5.710627551405569e-6,-1.7213706810198902e-8,0.002021130054639501,5.7592346508056935e-6,-1.7261429057047976e-8,0.002021632985760314,5.926817997082376e-6,-1.7429501306651574e-8,0.0020220830928120654,6.20118699778434e-6,-1.7705783145695567e-8,0.0020224418380563767,6.54565640069781e-6,-1.8053264624984565e-8,0.002022693062944097,6.910491614078083e-6,-1.842162169656846e-8,0.0020228439203432147,7.246330768272015e-6,-1.876083414523109e-8,0.00202291967499455,7.515105216752511e-6,-1.9032294027402762e-8,0.002022955371584404,7.695808702277565e-6,-1.9214681031198905e-8,0.0020229876289183193,7.785067752112486e-6,-1.9304540519772036e-8,0.002023048591573068,7.794246700981407e-6,-1.931333154928886e-8,0.0020231624980154585,7.745203409912733e-6,-1.926311028183914e-8,0.0020233442466032186,7.666212202219833e-6,-1.918240528759956e-8,0.0020235989734061375,7.588624354679677e-6,-1.9102866270263047e-8,0.002023921859131006,7.544034825291021e-6,-1.9056442936228402e-8,0.0020242978850773183,7.561308638331777e-6,-1.907241483206435e-8,0.0020247018586647472,7.662755338235264e-6,-1.9173526603769192e-8,0.0020250996748987574,7.859045107714878e-6,-1.9370801266084847e-8,0.0020254522736660083,8.143408211325172e-6,-1.9657586738974178e-8,0.0020257235021321623,8.487284167289417e-6,-2.0005064388235096e-8,0.0020258914008579325,8.841089839559924e-6,-2.0362983469746076e-8,0.0020259593522022504,9.143502782538063e-6,-2.0669092452411597e-8,0.002025960886878649,9.339097586877438e-6,-2.0867079499950275e-8,0.0020259529258870486,9.398254944606137e-6,-2.0926796085751366e-8,0.0020259980842913805,9.329515946722925e-6,-2.085676872498728e-8,0.0020261436498098338,9.177436067364245e-6,-2.0702003689784143e-8,0.002026406976788043,9.007145260904893e-6,-2.0528373390696197e-8,0.0020267726311981303,8.883574211806648e-6,-2.0401649057662443e-8,0.002027200045442295,8.85396367750792e-6,-2.0369837232274553e-8,0.00202763668051562,8.938366466169523e-6,-2.0453528387901555e-8,0.002028031669042613,9.128606584898225e-6,-2.0644735364591285e-8,0.0020283466335991557,9.39376249959402e-6,-2.0912327645621907e-8,0.00202856210099846,9.689503075361093e-6,-2.121142268331872e-8,0.002028679138809268,9.968698912730516e-6,-2.1494151041399055e-8,0.0020287166795685033,1.0191047732068404e-5,-2.1719481725996414e-8,0.0020287057358542504,1.0329897581158466e-5,-2.186021727137697e-8,0.0020286822638829623,1.0375287950705e-5,-2.1906123600102078e-8,0.0020286804677956084,1.0333353870444897e-5,-2.186332802988044e-8,0.0020287278066525257,1.022312602899354e-5,-2.175105158087606e-8,0.0020288421647846723,1.0072112218170743e-5,-2.1597111262225863e-8,0.0020290308875681577,9.911875842701016e-6,-2.143344844153332e-8,0.0020292909665944156,9.774243576700235e-6,-2.129232494824514e-8,0.0020296097239808366,9.688113323346603e-6,-2.1203133387480477e-8,0.0020299656877050217,9.67644684934271e-6,-2.11893658424898e-8,0.0020303297882378582,9.752905982662366e-6,-2.1265165055571597e-8,0.0020306676073327287,9.917766980710009e-6,-2.1431087980682735e-8,0.002030943934628873,1.0153584998504719e-5,-2.1669593622508353e-8,0.0020311306708723493,1.0422590466425067e-5,-2.1942323425636325e-8,0.002031217579951732,1.0669289798588603e-5,-2.219275019954811e-8,0.002031222335730858,1.0831796516238949e-5,-2.235778014634001e-8,0.002031193048301995,1.0861890930176747e-5,-2.2388241959551486e-8,0.00203119703859634,1.0746492481003186e-5,-2.2270735146629827e-8,0.002031297195154339,1.0517768776177442e-5,-2.2037844471414716e-8,0.0020315273094421984,1.0243291108028e-5,-2.1758092239078608e-8,0.0020318802493412753,1.0000530434740792e-5,-2.1510081000851584e-8,0.002032314137298937,9.850022664826762e-6,-2.1355340836590286e-8,0.002032770207259545,9.81982278786599e-6,-2.132258299426645e-8,0.0020331917199350323,9.904280503784482e-6,-2.14063888568104e-8,0.002033536949342053,1.0072489993620747e-5,-2.157566092331201e-8,0.0020337847861032054,1.0280151984724976e-5,-2.178555756437125e-8,0.002033934644404204,1.0480633734434917e-5,-2.1988684509594312e-8,0.002034002956023895,1.0633476288885205e-5,-2.2143773497299168e-8,0.0020340179562521273,1.0710065550269308e-5,-2.222152752762457e-8,0.002034013813275749,1.0696609639052564e-5,-2.2207730651406188e-8,0.002034024860105363,1.0594604521297306e-5,-2.2103765848150748e-8,0.002034080587443095,1.0419122419825089e-5,-2.19248717814829e-8,0.0020342019278727854,1.0195455518673118e-5,-2.169670062200928e-8,0.0020343991620295483,9.954802844166271e-6,-2.145091239995425e-8,0.0020346714321390342,9.729785129053017e-6,-2.122063084652677e-8,0.0020350074824118905,9.550386709694598e-6,-2.103636451097717e-8,0.002035387185509016,9.440493583899565e-6,-2.0922533216016104e-8,0.0020357836037984364,9.414912608424384e-6,-2.089444107511516e-8,0.0020361655489376162,9.476655420791237e-6,-2.0955452598258494e-8,0.002036501001353076,9.614310232276557e-6,-2.1094206564680248e-8,0.002036762210872142,9.79994037620005e-6,-2.1282363869390327e-8,0.0020369330481708123,9.989184837192771e-6,-2.1474658477092256e-8,0.002037017771296381,1.012628359366276e-5,-2.1614061269663444e-8,0.002037047915437464,1.015658110540848e-5,-2.164463677168314e-8,0.0020370813026867737,1.0046056108125668e-5,-2.153154985964805e-8,0.0020371875508600258,9.800650799576031e-6,-2.1280773292665346e-8,0.002037421936656467,9.472336381754918e-6,-2.094520101904596e-8,0.0020378005857027153,9.143072453333508e-6,-2.0608270685343048e-8,0.0020382928899801513,8.892876275813154e-6,-2.035149508235166e-8,0.0020388358398022157,8.770499811406708e-6,-2.0224669132370346e-8,0.002039359770557812,8.781941663669052e-6,-2.0234157130035133e-8,0.0020398103504522254,8.897729739466089e-6,-2.0350211586612295e-8,0.0020401588643933475,9.069382952218172e-6,-2.0523629149456965e-8,0.0020404019625274035,9.245293559122839e-6,-2.0701866584475123e-8,0.002040555827693921,9.381504609670853e-6,-2.0840025781472896e-8,0.0020406489259659406,9.447228151930216e-6,-2.0906536788607898e-8,0.0020407154331214734,9.426696770852405e-6,-2.088512838607746e-8,0.00204078985578392,9.318873354513713e-6,-2.077459998128169e-8,0.00204090271395194,9.135845367544504e-6,-2.0587206452044835e-8,0.0020410771407216085,8.900239108317796e-6,-2.034599700431967e-8,0.002041326419699712,8.641807325844239e-6,-2.0081292128129632e-8,0.0020416526435947345,8.393337339943669e-6,-1.982648942593215e-8,0.002042046703171445,8.186237577472187e-6,-1.9613586261310882e-8,0.0020424895896427346,8.046339142518472e-6,-1.9468954219893878e-8,0.0020429547843234747,7.990305000968632e-6,-1.940972395069631e-8,0.0020434115251253306,8.022843551834938e-6,-1.9440936885743926e-8,0.002043828782565443,8.134892448156656e-6,-1.9553616311880043e-8,0.0020441798602190554,8.302917025788585e-6,-1.972393223071845e-8,0.0020444477519546617,8.4896969525292e-6,-1.9913901817449882e-8,0.0020446311903293338,8.647706547103258e-6,-2.0074815114312748e-8,0.0020447501973034107,8.726723226422148e-6,-2.0155077328217368e-8,0.002044848244940901,8.686627904246379e-6,-2.011341515541943e-8,0.0020449867383772256,8.513737749746249e-6,-1.9935671842505055e-8,0.002045228541166259,8.234144633017872e-6,-1.964846070320371e-8,0.0020456134638839763,7.913572361465218e-6,-1.931898185881672e-8,0.0020461377861319533,7.63729312921591e-6,-1.9034476270744172e-8,0.0020467521585061633,7.477202828544634e-6,-1.8868592712503943e-8,0.002047381272856939,7.464688941483806e-6,-1.8853644549237028e-8,0.0020479532062943314,7.58431837206364e-6,-1.8974080315531745e-8,0.0020484215587382487,7.78774400789283e-6,-1.918060677428675e-8,0.0020487722662357426,8.015405362121847e-6,-1.941233147259879e-8,0.002049018198077936,8.214197838192044e-6,-1.9614843383185996e-8,0.0020491889216315115,8.346735295295853e-6,-1.9749735808637718e-8,0.0020493210512069144,8.393632060507522e-6,-1.979700451228811e-8,0.0020494512449664246,8.351957607960816e-6,-1.9753525015406534e-8,0.0020496117250101715,8.23232744734854e-6,-1.963010652990153e-8,0.002049827426776408,8.055769435622714e-6,-1.944827439536342e-8,0.002050114053526486,7.850558869214728e-6,-1.9236989441846953e-8,0.0020504767490431433,7.648847136675355e-6,-1.9029157282885984e-8,0.0020509094756088818,7.482854532348159e-6,-1.8857725613841873e-8,0.002051395453334524,7.380623768682452e-6,-1.8751377321085998e-8,0.0020519090052662243,7.361760387571575e-6,-1.8730230620980626e-8,0.0020524188593675297,7.433818308990292e-6,-1.8802173480598776e-8,0.0020528926844391848,7.589950602549962e-6,-1.8960428834936324e-8,0.0020533024421489844,7.808390524123514e-6,-1.9182928498524213e-8,0.0020536299340462158,8.054192913403938e-6,-1.9433978306497595e-8,0.0020538718361486044,8.283434195619361e-6,-1.9668482974938482e-8,0.0020540434289632683,8.45004521906672e-6,-1.9838956797592828e-8,0.0020541797514216247,8.515402796906978e-6,-1.99054534057615e-8,0.0020543322054149753,8.459930706160225e-6,-1.984759651675978e-8,0.0020545585952090927,8.293944827313858e-6,-1.9675807879402267e-8,0.0020549063810787,8.062431097372e-6,-1.9436246264897823e-8,0.0020553934153247633,7.837497117823304e-6,-1.920304947832446e-8,0.002055995700465939,7.696451661454231e-6,-1.9055809090821722e-8,0.002056651811353018,7.693154521324639e-6,-1.9050112336143213e-8,0.0020572846695030584,7.837818600247798e-6,-1.919671296351236e-8,0.002057829365555983,8.096658859821898e-6,-1.946106441052887e-8,0.002058252145844519,8.409493816274429e-6,-1.978134730901258e-8,0.0020585536030746266,8.712990432294358e-6,-2.0092375696100318e-8,0.002058759808669095,8.957877739096902e-6,-2.0343349339844396e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json new file mode 100644 index 0000000000..64ee0a0a25 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":17000,"numberOfSamples":1000,"samples":[0.0020589095356776037,9.116105504093818e-6,-2.0505272164235435e-8,0.002059043510293161,9.180255067418492e-6,-2.0570390059257767e-8,0.0020591976431414568,9.159302745262173e-6,-2.054785882824188e-8,0.002059399625909375,9.073759899582225e-6,-2.045874721325323e-8,0.0020596674746746844,8.95148439515232e-6,-2.033170765436402e-8,0.00206000888513569,8.824207938457376e-6,-2.019937465729761e-8,0.002060420904195782,8.724308617167852e-6,-2.0095032184184587e-8,0.0020608899779143205,8.68132520947309e-6,-2.0049049012491025e-8,0.0020613928365786132,8.717972919315283e-6,-2.008482719556681e-8,0.0020618988348358,8.845955809078727e-6,-2.021453482958727e-8,0.002062374125258358,9.062441716260134e-6,-2.0435474508193457e-8,0.0020627874895708226,9.348364762479418e-6,-2.072826871336509e-8,0.0020631169945883126,9.669654112154566e-6,-2.1058015950605946e-8,0.0020633560604633263,9.98198746864013e-6,-2.137908652587735e-8,0.002063517288428266,1.023877017749716e-5,-2.164330411583651e-8,0.002063632645942536,1.0401139220424818e-5,-2.1810299545772995e-8,0.0020637491502467223,1.0448183572471843e-5,-2.185815206205818e-8,0.0020639198525462597,1.0385066085844465e-5,-2.1791885352537092e-8,0.002064190922547863,1.0246206042140799e-5,-2.1646843352671344e-8,0.002064587291919049,1.0090636415679369e-5,-2.1483949591921145e-8,0.0020651014652658243,9.988078798241432e-6,-2.13753442005915e-8,0.002065691367589172,9.998026570269695e-6,-2.1382754626188622e-8,0.002066291012197917,1.0149230388591655e-5,-2.153622147579785e-8,0.002066831501387849,1.0429452683376921e-5,-2.182338975756979e-8,0.002067263169333099,1.0791237145000513e-5,-2.2195367611649683e-8,0.002067568557615017,1.1170401662074308e-5,-2.2585814103541868e-8,0.0020677618994642912,1.1507219742502304e-5,-2.2932879418767003e-8,0.0020678786593962845,1.1760992660056131e-5,-2.319433420100162e-8,0.00206796228678175,1.1914801500387303e-5,-2.3352529680849556e-8,0.0020680536670884195,1.1972789302221374e-5,-2.3411612372762594e-8,0.002068185083895209,1.1954165594086708e-5,-2.339133460421787e-8,0.0020683778972125345,1.1887104070253944e-5,-2.3320744180844544e-8,0.002068642307553408,1.180390121082168e-5,-2.3233173740066774e-8,0.002068977856263579,1.1737393814191125e-5,-2.3162537647244684e-8,0.002069373999389383,1.1717978706675388e-5,-2.3140267827765654e-8,0.0020698107873335274,1.1770514429890422e-5,-2.3192140613020073e-8,0.0020702602014525747,1.1910715973072524e-5,-2.3334573248691355e-8,0.002070688939508567,1.2141252692424613e-5,-2.3570578997251697e-8,0.0020710632916822844,1.2448527390387745e-5,-2.3886375187523575e-8,0.002071356066541742,1.2801803268012288e-5,-2.4250382510760558e-8,0.0020715543319876706,1.3156451701310057e-5,-2.4616491549786515e-8,0.00207166551766087,1.3462116971780244e-5,-2.493246716960177e-8,0.002071719050649512,1.3674624989544023e-5,-2.5152297788431047e-8,0.0020717617377544535,1.3768431742533288e-5,-2.524915847137308e-8,0.0020718472574079074,1.374550081599251e-5,-2.5224700784713937e-8,0.0020720223622184525,1.363727582508806e-5,-2.5111195478472052e-8,0.0020723137031515636,1.3498471162329928e-5,-2.496519243244624e-8,0.002072719191338335,1.339381780152275e-5,-2.485385332221292e-8,0.002073206795757431,1.338096643139214e-5,-2.483723759380846e-8,0.0020737219362692,1.3494245133198445e-5,-2.4951381108780162e-8,0.00207420211020392,1.373455339359368e-5,-2.5197661804572466e-8,0.0020745944143773383,1.4069430089365293e-5,-2.554271199173207e-8,0.002074869746023746,1.4443723774723879e-5,-2.5929405831806994e-8,0.0020750285128816304,1.479667972622433e-5,-2.6294607590510123e-8,0.0020750966176363173,1.5078544268788864e-5,-2.6586483364644268e-8,0.0020751148669499956,1.5260889492796408e-5,-2.677529701011583e-8,0.0020751270004247535,1.5338783722705668e-5,-2.6855711891848633e-8,0.0020751704833224575,1.5326746513909972e-5,-2.684261106263222e-8,0.0020752715762822763,1.5251984116094389e-5,-2.6764080409271047e-8,0.002075444009124103,1.5147762629496005e-5,-2.6654533703698157e-8,0.002075689729548116,1.504827746606285e-5,-2.6549398220846943e-8,0.002076000366210549,1.4985082629739757e-5,-2.6481430881895264e-8,0.002076358657231711,1.498441301720375e-5,-2.6477967033587838e-8,0.0020767397992757677,1.5064587977735741e-5,-2.6558240543651232e-8,0.002077113259954405,1.5233004156103975e-5,-2.6730240753699176e-8,0.0020774459186594374,1.548284453443912e-5,-2.6987226620384064e-8,0.002077707337417931,1.5790500049088474e-5,-2.7304945193864276e-8,0.002077877261826839,1.6115682164498162e-5,-2.764165309505029e-8,0.0020779538822941765,1.6406603632449e-5,-2.7943458192743133e-8,0.0020779594398716464,1.6611353072832964e-5,-2.8156170195329946e-8,0.0020779390055978278,1.6693382219093287e-5,-2.824146792653341e-8,0.0020779502913158923,1.6645409426593984e-5,-2.8191416586278918e-8,0.002078046844161103,1.6494938438233428e-5,-2.803425405045996e-8,0.0020782610782756087,1.6297779276038386e-5,-2.782772424649056e-8,0.0020785941150732565,1.612175588363035e-5,-2.7642241561896423e-8,0.0020790159587568842,1.6027141518751153e-5,-2.754063775278662e-8,0.0020794748756735038,1.6050743503202965e-5,-2.756160492638588e-8,0.0020799118940896845,1.619791239208086e-5,-2.7711253577368164e-8,0.0020802757626315633,1.6443513592555717e-5,-2.7963924844698012e-8,0.0020805345246273253,1.674043522617959e-5,-2.8270877063799093e-8,0.002080681226938013,1.7032634096537527e-5,-2.857380300224129e-8,0.002080732951995497,1.7268943244941685e-5,-2.881925151534997e-8,0.002080724194408864,1.7413982316484317e-5,-2.8970092565580946e-8,0.0020806971435383278,1.745367834708195e-5,-2.901136620869484e-8,0.0020806920260737966,1.7394912621893336e-5,-2.8949975367327408e-8,0.002080739988704213,1.72607815502705e-5,-2.8809768850635676e-8,0.002080859515267317,1.70838985357426e-5,-2.8624560861473263e-8,0.0020810559636607064,1.6899885539921436e-5,-2.8431349761988563e-8,0.0020813230557203376,1.6742274751481572e-5,-2.8265022453786016e-8,0.0020816451171855417,1.6639033795220282e-5,-2.8154767386943654e-8,0.0020819993189068113,1.6610203007369465e-5,-2.812164312243963e-8,0.0020823577851628115,1.6665911699555345e-5,-2.817650914736122e-8,0.0020826899633292987,1.680426930790959e-5,-2.8317770861029884e-8,0.002082966018551884,1.7009150846059025e-5,-2.852896394235378e-8,0.002083162073066397,1.7248756752608075e-5,-2.8777135556946513e-8,0.0020832674579102563,1.7476932878513038e-5,-2.9014151463292816e-8,0.0020832924694833594,1.7639846001218737e-5,-2.9183675584427234e-8,0.0020832727739094805,1.7689422424584678e-5,-2.9235274256026354e-8,0.0020832653064138955,1.7601030960855478e-5,-2.9142946193151746e-8,0.0020833330245630757,1.7387646058308056e-5,-2.8919920603682593e-8,0.002083522753935488,1.7100955802243916e-5,-2.8619808329920083e-8,0.0020838468179513333,1.6815710705222776e-5,-2.8320330725747508e-8,0.002084278439419095,1.6604039049236554e-5,-2.8096659219011013e-8,0.0020847625566020353,1.6512511531122853e-5,-2.799759622144117e-8,0.002085235023267062,1.6551414097566436e-5,-2.8034351982823543e-8,0.0020856408987005555,1.6697366798988196e-5,-2.8183104552679034e-8,0.0020859461245631033,1.690450794263447e-5,-2.8396456266918066e-8,0.0020861415082864985,1.7118421130651345e-5,-2.8617819915088376e-8,0.0020862405867537945,1.7288696492304295e-5,-2.8794501922373435e-8,0.0020862736330299575,1.737809826474195e-5,-2.8887350772104285e-8,0.002086279804006059,1.7367702998098975e-5,-2.8876251011356654e-8,0.0020862990421835854,1.7258011428210435e-5,-2.8761400589556528e-8,0.002086365115922038,1.7066487746353264e-5,-2.8560802190087286e-8,0.0020865008408489875,1.682256943694604e-5,-2.8305053907286174e-8,0.002086715919263949,1.656156014476701e-5,-2.8030941270095572e-8,0.0020870071990390262,1.6318714925791584e-5,-2.7775237638634485e-8,0.0020873606761909773,1.612444436636325e-5,-2.7569706696292268e-8,0.0020877543487093165,1.6001012803300085e-5,-2.7437694306513178e-8,0.0020881612220372825,1.596050578626689e-5,-2.7392040420271822e-8,0.002088552230288847,1.6003549082607828e-5,-2.7433729548710437e-8,0.0020888992435952967,1.611837191802468e-5,-2.7550832366391624e-8,0.0020891786471092483,1.6280160651193357e-5,-2.7717702617435652e-8,0.0020893761169842166,1.6451350603092855e-5,-2.7895164399045403e-8,0.002089492678959948,1.6584503687808136e-5,-2.803347849401429e-8,0.0020895506186168747,1.6629975070205594e-5,-2.8080421596796448e-8,0.0020895956639829702,1.654957839540818e-5,-2.799570583593579e-8,0.002089690395538273,1.6333804471878623e-5,-2.7769090685971695e-8,0.002089896033722322,1.6014373257708863e-5,-2.7433529126734662e-8,0.0020902475806469254,1.5661140369289124e-5,-2.7061908434893643e-8,0.002090735796633609,1.5359270098771867e-5,-2.67432120407e-8,0.00209130859780546,1.5176778132377433e-5,-2.6548672939580005e-8,0.002091891842946931,1.5140754055244766e-5,-2.6506954770801897e-8,0.0020924165245282877,1.5233761825979138e-5,-2.660030176659009e-8,0.002092838108888907,1.5407435049015967e-5,-2.6778581186473033e-8,0.0020931426145603437,1.5602073463539797e-5,-2.697961713028947e-8,0.002093342524197185,1.576303163752042e-5,-2.7146256028244872e-8,0.0020934681224012187,1.5850536534203465e-5,-2.7236664035016808e-8,0.002093558330924372,1.584356238962605e-5,-2.7228488040135843e-8,0.002093652929189025,1.5739702587511593e-5,-2.711885649216876e-8,0.002093786585558144,1.5552692842214613e-5,-2.6921891528832596e-8,0.002093984610700063,1.530847635566744e-5,-2.6664625730728237e-8,0.002094260408522702,1.5040327883243397e-5,-2.6381866829385993e-8,0.0020946146605398033,1.4783590396206654e-5,-2.6110629573656682e-8,0.0020950361908124754,1.4570612940870071e-5,-2.5884801421741135e-8,0.002095504287982403,1.4426464136665532e-5,-2.573066979561237e-8,0.0020959920098880948,1.436589162782448e-5,-2.566378974830331e-8,0.0020964698904481064,1.4391654082877689e-5,-2.568727581986414e-8,0.002096909672107035,1.4494027260271335e-5,-2.5791262682142066e-8,0.002097287955238897,1.4651254484391914e-5,-2.595327902709219e-8,0.0020975898588619776,1.483086589384205e-5,-2.6139490483611765e-8,0.0020978129239909112,1.4992194433574303e-5,-2.6307227096703933e-8,0.002097971126731232,1.5091109530391926e-5,-2.6409931481351222e-8,0.002098097703998993,1.5088284225384236e-5,-2.6405927211233465e-8,0.002098243998954342,1.4961356647547054e-5,-2.6271336291410024e-8,0.002098470643735973,1.4718558663920096e-5,-2.601451060716538e-8,0.002098829142769062,1.4406847413029446e-5,-2.568461021728266e-8,0.002099338584112944,1.4104891981013634e-5,-2.5364227738068856e-8,0.002099970577078888,1.389718581053549e-5,-2.51422113367583e-8,0.0021006554024350413,1.3839945599057747e-5,-2.5077873022135188e-8,0.0021013089162565824,1.3939075366767634e-5,-2.5177804466452004e-8,0.0021018642410454017,1.4152966541286029e-5,-2.5398697748388907e-8,0.002102290544234685,1.4414719463911722e-5,-2.5670555129297722e-8,0.002102593458372229,1.4657717276490355e-5,-2.5923475251490083e-8,0.002102803823419274,1.4832523419603329e-5,-2.610539494337901e-8,0.002102963997051854,1.4912874042482475e-5,-2.6188440763515092e-8,0.00210311701985688,1.489429901720448e-5,-2.6167581509441245e-8,0.00210329981316489,1.4789514144286761e-5,-2.605589711490424e-8,0.0021035395604685125,1.4623216960515582e-5,-2.5879181897882027e-8,0.002103852012857229,1.4427256816148642e-5,-2.5670874573032203e-8,0.0021042409306866908,1.4236166858646234e-5,-2.546731313778813e-8,0.002104698454320543,1.4082882456060734e-5,-2.53031751996881e-8,0.0021052064752133293,1.3994654154339699e-5,-2.5207158431920774e-8,0.0021057391315831625,1.3989407920046565e-5,-2.519818244598461e-8,0.002106266387320575,1.4073050130678136e-5,-2.5282607415599342e-8,0.002106758334830071,1.423820083636465e-5,-2.5452924691916057e-8,0.0021071897012097697,1.4464569256647e-5,-2.568810271807864e-8,0.0021075440763852053,1.4720984983073159e-5,-2.5955605114652786e-8,0.002107817455023985,1.4968991587208612e-5,-2.6215033812032676e-8,0.0021080207898770947,1.5167881763610569e-5,-2.6423345985019315e-8,0.0021081811782254606,1.52812712911579e-5,-2.6541802838830476e-8,0.002108340721814446,1.5285367127017497e-5,-2.6544815228638046e-8,0.002108551393130802,1.5178224387244792e-5,-2.6429882679400344e-8,0.0021088642657054028,1.4987405902763008e-5,-2.6225817522741596e-8,0.0021093131823441873,1.477109413125047e-5,-2.5993980396136906e-8,0.0021098973634679687,1.4606796678395606e-5,-2.5816350529623914e-8,0.0021105729078048107,1.4566334520348138e-5,-2.5769076832392603e-8,0.0021112628777701157,1.4686483996552583e-5,-2.589140375989459e-8,0.002111884963727069,1.49524858304974e-5,-2.616814292368397e-8,0.0021123820416213326,1.530564027223351e-5,-2.653758083888853e-8,0.002112738443062604,1.566943862865359e-5,-2.6919021383359056e-8,0.0021129763380782042,1.597734406587063e-5,-2.7242128079128386e-8,0.002113139906608551,1.6188913189144726e-5,-2.7463982116337144e-8,0.0021132785147635735,1.6292255587917617e-5,-2.7571731956963736e-8,0.002113435244892276,1.6298231436790853e-5,-2.7576542617677282e-8,0.002113641467647694,1.623231108640538e-5,-2.750507948119659e-8,0.0021139155020888497,1.612742596429646e-5,-2.739200662875825e-8,0.002114263195353226,1.601868102419684e-5,-2.7274398004963558e-8,0.002114679097938746,1.5939462619916927e-5,-2.7187584649230205e-8,0.002115147857818045,1.591820498712063e-5,-2.7161697731839154e-8,0.0021156460082405507,1.5975354031712748e-5,-2.7218453269601503e-8,0.0021161445333496127,1.6120489838517026e-5,-2.736813658476198e-8,0.002116612541248858,1.6350066999505276e-5,-2.7607239032229045e-8,0.002117021983644663,1.6646569377117553e-5,-2.791754490148783e-8,0.002117352837098394,1.697979911393296e-5,-2.826741083990463e-8,0.0021175978015787107,1.731065634053247e-5,-2.8615637817191073e-8,0.00211776543378165,1.759725263509948e-5,-2.8917829165943654e-8,0.002117880769420787,1.7802584133189674e-5,-2.9134478291953385e-8,0.002117982886203447,1.7902584529889876e-5,-2.9239569317390042e-8,0.002118119198387002,1.7893289828263934e-5,-2.922832774864068e-8,0.002118336487991736,1.7795584944785858e-5,-2.9122440610658274e-8,0.0021186692843823997,1.7655389538035962e-5,-2.8970402749374115e-8,0.0021191276345471233,1.7536852324466382e-5,-2.8840362727093884e-8,0.0021196884143433207,1.7507199823531867e-5,-2.880401634238384e-8,0.002120295925762307,1.7615411346021366e-5,-2.8913861014445143e-8,0.0021208758106100725,1.787247903713528e-5,-2.9182079529307654e-8,0.002121359406182991,1.8244267405424016e-5,-2.9572807067690778e-8,0.0021217074721560777,1.8663209769622012e-5,-3.0014474124992184e-8,0.0021219209004431955,1.905356541542978e-5,-3.042663828206199e-8,0.0021220343298265485,1.9356536768551152e-5,-3.0746705244532125e-8,0.002122099166839674,1.954377814105041e-5,-3.094431491310143e-8,0.002122166330543905,1.9617217855782224e-5,-3.102119259421685e-8,0.0021222752180405586,1.9600531064406503e-5,-3.100215517299388e-8,0.002122449658514504,1.952878967527067e-5,-3.092419165467688e-8,0.0021226984612435964,1.9440127761138346e-5,-3.082765962692926e-8,0.002123017846957808,1.9370314072744265e-5,-3.075052790344494e-8,0.0021233940681903195,1.934948928989278e-5,-3.0724888774326296e-8,0.0021238056794888474,1.9399952935627528e-5,-3.077458440678296e-8,0.002124225682580438,1.9534193054597844e-5,-3.091310551719368e-8,0.002124624113565031,1.9752886458047202e-5,-3.1141464105636413e-8,0.002124971655833702,2.0043233580223036e-5,-3.144639940286134e-8,0.00212524450155675,2.037859705176521e-5,-3.179992728445566e-8,0.002125429949440885,2.0720660307119964e-5,-3.216153381034379e-8,0.0021255313735390655,2.1024952911718785e-5,-3.2483951488909524e-8,0.0021255706390746042,2.1249553405534983e-5,-3.272236244662322e-8,0.0021255862274255134,2.136531580176944e-5,-3.284530096658392e-8,0.002125626472329969,2.136477599867833e-5,-3.2844230643420137e-8,0.0021257389764561077,2.1266765123494018e-5,-3.273861136499655e-8,0.0021259586471253046,2.1114766388613177e-5,-3.2574325849611996e-8,0.0021262973922635143,2.0968604798671925e-5,-3.241497651320302e-8,0.0021267384416393392,2.0890666115759917e-5,-3.2327268627746654e-8,0.0021272376715695132,2.0929425811587144e-5,-3.236339970670092e-8,0.002127733046172089,2.110460424404699e-5,-3.2545061768599696e-8,0.00212816092546539,2.1399236109442378e-5,-3.2854762929754035e-8,0.0021284746737500223,2.176302809822261e-5,-3.3239236614057686e-8,0.002128658496133636,2.212740460159936e-5,-3.362543623506609e-8,0.0021287304336883744,2.2426834845535454e-5,-3.3943333219980947e-8,0.0021287335646911943,2.2617434207905126e-5,-3.414584047635682e-8,0.0021287204228760234,2.2685679731977404e-5,-3.421817395035784e-8,0.0021287380406940413,2.264602236182866e-5,-3.417535947240264e-8,0.002128818715188701,2.2531501692113913e-5,-3.4052283410800604e-8,0.002128977344015476,2.2382911676892006e-5,-3.3892197642410027e-8,0.002129213263803856,2.2240213464310166e-5,-3.373760006185234e-8,0.0021295139322477768,2.2137245808817076e-5,-3.362460002842891e-8,0.0021298586205894944,2.2099046795842652e-5,-3.358004972356987e-8,0.0021302214146577676,2.2140545104573738e-5,-3.362013028869592e-8,0.0021305737006618716,2.2265607580957118e-5,-3.374931398457121e-8,0.0021308867762918587,2.2466010723704024e-5,-3.39592257518173e-8,0.002131135293920836,2.2720594046935103e-5,-3.4227667717305434e-8,0.0021313019334212695,2.2995565753170124e-5,-3.451884933521096e-8,0.0021313829342262734,2.3247460182788705e-5,-3.4786456209133385e-8,0.0021313929103826883,2.3430080081429465e-5,-3.4981018338903236e-8,0.0021313662623369065,2.35053775592328e-5,-3.506154647311194e-8,0.002131352534668617,2.3455775394926864e-5,-3.500875472352498e-8,0.0021314050619435174,2.3293157757724045e-5,-3.483475480248656e-8,0.0021315656878382726,2.305959461858975e-5,-3.458394904972025e-8,0.002131851148769884,2.2817817875395575e-5,-3.432300884872676e-8,0.002132246675708553,2.2634145895239077e-5,-3.412278123476084e-8,0.0021327093056224787,2.255991732479814e-5,-3.4038512859965103e-8,0.0021331794386085386,2.261762912569421e-5,-3.4094941293936804e-8,0.002133596614516856,2.2795606804280943e-5,-3.4280365800889207e-8,0.0021339148569076657,2.3052078776754165e-5,-3.455073970041519e-8,0.0021341135296762083,2.3327034579694484e-5,-3.484217778475803e-8,0.0021342009716787884,2.355832491670355e-5,-3.508814955727273e-8,0.0021342101969445745,2.3697300658380293e-5,-3.523629751598651e-8,0.0021341884075972216,2.3719450332254015e-5,-3.525994944230765e-8,0.002134184081791398,2.3627331849970435e-5,-3.5161372712859956e-8,0.002134235900463689,2.3446066878692636e-5,-3.4967036409302774e-8,0.0021343663946126897,2.321429430328426e-5,-3.471798296710547e-8,0.0021345807976598918,2.2974350116389325e-5,-3.4459344612988514e-8,0.0021348696549837566,2.2764450779378168e-5,-3.4231980765256686e-8,0.0021352131046345666,2.2613905870942357e-5,-3.4067347153649095e-8,0.0021355851791665065,2.25409643711599e-5,-3.398518306415485e-8,0.002135957353588875,2.255223300982052e-5,-3.3992879723749303e-8,0.0021363013822437923,2.264265540717151e-5,-3.408542886166249e-8,0.0021365919676518924,2.279553658100697e-5,-3.4245382178955386e-8,0.0021368099415358917,2.298274820199354e-5,-3.444296877039347e-8,0.0021369464146205742,2.3165964903851673e-5,-3.463731317033913e-8,0.0021370076236995232,2.3300428516159704e-5,-3.4780406073762714e-8,0.0021370188901841084,2.334275576213467e-5,-3.482548254690987e-8,0.002137024662802771,2.3262920180390915e-5,-3.473993474880969e-8,0.0021370813223880038,2.3057492795026685e-5,-3.451958523389752e-8,0.002137241889275746,2.2757801904735166e-5,-3.41974981982623e-8,0.0021375370262618257,2.2426116340509338e-5,-3.3839966919214845e-8,0.002137961316631726,2.213800200907653e-5,-3.3527737842564464e-8,0.0021384728126343628,2.1957459800264673e-5,-3.332951347872889e-8,0.002139006670366777,2.191643370582827e-5,-3.3280036206354196e-8,0.0021394959229136664,2.2007302232413204e-5,-3.3371904617377737e-8,0.0021398901271324055,2.2189143712365275e-5,-3.3562023526722955e-8,0.002140166006414651,2.2402515162981413e-5,-3.378718549615929e-8,0.002140329077781706,2.2586184572995143e-5,-3.398186921720036e-8,0.0021404083035632985,2.2691063196128188e-5,-3.409319354061641e-8,0.002140446731689183,2.2688976940126358e-5,-3.409045739764433e-8,0.002140490895281052,2.2575699890952926e-5,-3.396857223236857e-8,0.0021405812375513067,2.2368761539972847e-5,-3.374586429282327e-8,0.002140745261299301,2.21013187905107e-5,-3.345758704823717e-8,0.002140994332456639,2.181402372302832e-5,-3.314720913566537e-8,0.002141324077070165,2.15469856889004e-5,-3.285775427864785e-8,0.002141717448243737,2.1333424920190157e-5,-3.262494699138589e-8,0.0021421491254591573,2.1195757227350775e-5,-3.247299004550511e-8,0.0021425900057506363,2.1143998775028036e-5,-3.2412859574264454e-8,0.002143011062769476,2.117578153748411e-5,-3.2442332125159627e-8,0.0021433864887417924,2.1277166088685482e-5,-3.254683206575627e-8,0.0021436964440635616,2.142377656843826e-5,-3.270056832632809e-8,0.0021439298869587705,2.1582271289495213e-5,-3.2867992137633203e-8,0.0021440878674806683,2.1712763255525305e-5,-3.3006289361086e-8,0.002144187054590783,2.1773439803346106e-5,-3.3070310510598916e-8,0.002144262009093983,2.172867744059509e-5,-3.302135431596869e-8,0.002144363336494184,2.156066898233932e-5,-3.2839788635029706e-8,0.0021445484486645283,2.128161554298987e-5,-3.253826914107641e-8,0.0021448640499980975,2.093968006406232e-5,-3.216820242252745e-8,0.0021453256085358927,2.0610778355504582e-5,-3.181096877059883e-8,0.002145905198301666,2.0374493068902587e-5,-3.155211428654284e-8,0.00214653761622983,2.028404497865664e-5,-3.144915450204835e-8,0.002147143609271417,2.0346789600608755e-5,-3.151058660106004e-8,0.0021476575414585346,2.0525272704293914e-5,-3.1696854344447995e-8,0.002148045581613403,2.0755200980876327e-5,-3.193942834876001e-8,0.0021483090662633483,2.0968393190590092e-5,-3.2165288983192186e-8,0.002148476685362016,2.111059951237463e-5,-3.231601401750927e-8,0.002148592188673189,2.115054857145032e-5,-3.235756967674147e-8,0.0021487026050471423,2.108140192452833e-5,-3.2282037014221544e-8,0.002148849218208448,2.091738286919093e-5,-3.2104180012498956e-8,0.0021490617141141114,2.0687943158359667e-5,-3.185531826563116e-8,0.0021493552248900965,2.043093865495207e-5,-3.1576037272193084e-8,0.0021497299103959574,2.018578295980443e-5,-3.1308781112487576e-8,0.0021501726730506327,1.99873898678633e-5,-3.109124846202539e-8,0.0021506604730088547,1.986152543363258e-5,-3.0951322070678607e-8,0.0021511645783630928,1.9821951349432184e-5,-3.0903980935864254e-8,0.0021516549924586936,1.986945352369192e-5,-3.0950285248140185e-8,0.0021521044365688485,1.9992440843010033e-5,-3.107804747030246e-8,0.0021524916686676407,2.016856874486101e-5,-3.126355090492214e-8,0.0021528042317079527,2.0367018571783807e-5,-3.147390414350625e-8,0.002153040804545645,2.0551375958833374e-5,-3.167000555671362e-8,0.002153213305985311,2.0683403675124328e-5,-3.181050955508008e-8,0.002153348503797179,2.0728467991859314e-5,-3.185767901736995e-8,0.002153487865791758,2.06633838486928e-5,-3.178596101433709e-8,0.002153683336498533,2.0486260716953912e-5,-3.159278162166714e-8,0.0021539866168050876,2.022543685029994e-5,-3.130833435668043e-8,0.0021544317139913717,1.9941401323367558e-5,-3.099772567279643e-8,0.0021550161923323133,1.9714632358069782e-5,-3.074786370682314e-8,0.002155692720036186,1.961840203113644e-5,-3.0638105864892124e-8,0.0021563809762338523,1.9688010875520684e-5,-3.070702518398803e-8,0.0021569972223773057,1.990511081944595e-5,-3.0935392402114285e-8,0.002157485124027573,2.0207307545267066e-5,-3.125638734645144e-8,0.002157830955696959,2.0515501898373752e-5,-3.1584963952577884e-8,0.0021580591073866546,2.0761657983135865e-5,-3.1847730058857165e-8,0.0021582161445200332,2.0904745124936695e-5,-3.200013957830926e-8,0.0021583539825240404,2.0933500471754782e-5,-3.20295538061186e-8,0.0021585179343003775,2.0861021855106574e-5,-3.194956386357729e-8,0.0021587404344839763,2.071653038410741e-5,-3.179127525102121e-8,0.0021590389475030915,2.0537441620192218e-5,-3.159486520542445e-8,0.0021594163239126024,2.0362778417702688e-5,-3.140248197378161e-8,0.002159862527034524,2.02278948399552e-5,-3.12524698579826e-8,0.002160357285130327,2.0160345669093216e-5,-3.117480508185589e-8,0.002160873478204498,2.017687657565958e-5,-3.1187780101922056e-8,0.002161381090914999,2.028164028054539e-5,-3.1296077539601465e-8,0.0021618514304895253,2.0465857833124282e-5,-3.1490443368311834e-8,0.0021622611359319007,2.0709012451658273e-5,-3.174899334089471e-8,0.002162595566211041,2.0981352258249935e-5,-3.203986438715612e-8,0.0021628513653473066,2.1247405686018214e-5,-3.232489338007879e-8,0.0021630380775924086,2.1470340095996585e-5,-3.256419591015205e-8,0.0021631786722644116,2.1617083222566323e-5,-3.272164177108625e-8,0.00216330868415945,2.1664275769114177e-5,-3.277135694153426e-8,0.0021634731281762807,2.1605065487863532e-5,-3.2705257492733154e-8,0.0021637197852005,2.1455812436603205e-5,-3.254053477237097e-8,0.0021640877997709013,2.1259948537739125e-5,-3.232400898296171e-8,0.002164592603377122,2.108438739205041e-5,-3.212829934769005e-8,0.0021652124263154904,2.1004045458292953e-5,-3.2034996857797784e-8,0.002165885927123784,2.107545579977581e-5,-3.21059404679378e-8,0.002166528501769656,2.1310646054636276e-5,-3.235474767326647e-8,0.0021670632549307834,2.1668132745757332e-5,-3.273691349900394e-8,0.0021674499574846086,2.2069275229952522e-5,-3.3167461209084994e-8,0.002167695398646148,2.2430414143251984e-5,-3.355576152777364e-8,0.0021678424617177497,2.2691454458900874e-5,-3.383651203996052e-8,0.002167948850623929,2.2828166985303557e-5,-3.398307877885336e-8,0.0021680682294110717,2.2848871903014454e-5,-3.400396925492826e-8,0.002168239621410091,2.2783477264658934e-5,-3.393109259567893e-8,0.0021684843405062296,2.2671975588932204e-5,-3.380744770218485e-8,0.0021688073255370847,2.2555681481195456e-5,-3.367771500329707e-8,0.0021692001470083005,2.247154601714925e-5,-3.358207900819488e-8,0.0021696442585630864,2.2448607182279223e-5,-3.355228837104354e-8,0.0021701141864079454,2.250565226458912e-5,-3.360901884393857e-8,0.0021705808201399487,2.2649663627314837e-5,-3.376013066261044e-8,0.002171014994842116,2.2875029470842755e-5,-3.399981066861581e-8,0.0021713914000250586,2.3163823595123173e-5,-3.430889349840126e-8,0.002171692521788873,2.348758011808522e-5,-3.4656770876542255e-8,0.0021719120261017694,2.381072758144914e-5,-3.500503838425244e-8,0.002172056961163761,2.4095477309522668e-5,-3.531268029929626e-8,0.002172148267756013,2.430773141450824e-5,-3.5542386815216575e-8,0.0021722192183669113,2.4423369339532766e-5,-3.5667380799741086e-8,0.0021723115797911727,2.443412716691192e-5,-3.567793407850738e-8,0.002172469370856416,2.435222243916228e-5,-3.558662383347489e-8,0.002172730141133899,2.4212483806263987e-5,-3.5430893243344456e-8,0.0021731143123856107,2.406994280862633e-5,-3.527059410845282e-8,0.0021736147553494305,2.399049051461565e-5,-3.517783640369402e-8,0.0021741911382967354,2.4033616638707532e-5,-3.5218066388396594e-8,0.0021747750128882433,2.4230582571380168e-5,-3.542607458320517e-8,0.0021752887669595176,2.4567528571206925e-5,-3.5787372573666643e-8,0.002175673052155437,2.49852415759974e-5,-3.623781078312394e-8,0.002175908854725856,2.5399662837313294e-5,-3.668591393596756e-8,0.0021760215228088064,2.5733306593570758e-5,-3.704716213606398e-8,0.002176065901163682,2.5940343519971294e-5,-3.727134201842648e-8,0.0021761034783204496,2.6014370722419524e-5,-3.735101978943853e-8,0.0021761840080405325,2.598057227504093e-5,-3.731306905929495e-8,0.0021763370696546024,2.5881272618678495e-5,-3.7203079961238056e-8,0.002176571964578955,2.5762734966788867e-5,-3.7071131130532555e-8,0.002176881812643163,2.5666444320064544e-5,-3.6962369095902545e-8,0.002177248530362033,2.562462645803108e-5,-3.6912097310867254e-8,0.0021776471185262275,2.56583990067598e-5,-3.694366624460091e-8,0.0021780490847102727,2.577707907708006e-5,-3.706762059466764e-8,0.002178425470464016,2.5977906113517757e-5,-3.7281338682605485e-8,0.002178749995054507,2.6246122306122735e-5,-3.7569099018844795e-8,0.00217900258816672,2.6555835903572176e-5,-3.7903003824289374e-8,0.0021791731432856958,2.687235363923373e-5,-3.8245472427078433e-8,0.002179264774642755,2.715651610226576e-5,-3.8553882093067663e-8,0.0021792954993946666,2.737100012726711e-5,-3.878734993897014e-8,0.0021792972905228126,2.7487801409019163e-5,-3.891485525836279e-8,0.0021793118845096627,2.7495392292255558e-5,-3.8923106738733907e-8,0.0021793835257311045,2.740366279969572e-5,-3.8822101383632065e-8,0.0021795497062576503,2.7244969924330507e-5,-3.864650695887784e-8,0.0021798315902990814,2.70702521421955e-5,-3.845164962605757e-8,0.0021802262299320907,2.693987847972113e-5,-3.8303651911103566e-8,0.0021807030536763806,2.6909868400577606e-5,-3.826434729027413e-8,0.002181207209043901,2.7015773686396604e-5,-3.837346895969279e-8,0.002181671386070132,2.7258810728352984e-5,-3.8633200520179275e-8,0.0021820347882051537,2.7600628586197033e-5,-3.9002200115334744e-8,0.002182263235355336,2.7971926183414146e-5,-3.940491263576584e-8,0.0021823611556105044,2.829417321789066e-5,-3.9755366604696456e-8,0.0021823687183090976,2.8505597620353956e-5,-3.9985695960752894e-8,0.002182345504518596,2.8579166128070304e-5,-4.006587420492795e-8,0.00218234968005574,2.852535965389795e-5,-4.000679786407413e-8,0.0021824224556048176,2.838187447749541e-5,-3.984911376569704e-8,0.0021825822079256305,2.8198197432587352e-5,-3.964648840870845e-8,0.002182826606343748,2.802230424969246e-5,-3.9451180587015695e-8,0.0021831385394179867,2.7892584515013404e-5,-3.930524420287103e-8,0.002183492363313434,2.7834558372804433e-5,-3.9236882225582924e-8,0.00218385884397354,2.7860496490932013e-5,-3.9259933128383583e-8,0.0021842086588251997,2.7970168372585447e-5,-3.937460019364952e-8,0.0021845150758582356,2.815172900254157e-5,-3.956836422313752e-8,0.0021847565668936496,2.838260505830918e-5,-3.9816914283289737e-8,0.002184919839335821,2.8630898322059892e-5,-4.0085638458821643e-8,0.002185003215576358,2.885819450463714e-5,-4.033263381846127e-8,0.00218501956630861,2.9024619642616696e-5,-4.0514173513386934e-8,0.002184997331671042,2.9096343678574037e-5,-4.0592881414629923e-8,0.0021849779434766005,2.9054458176741742e-5,-4.054747138967016e-8,0.0021850086809995705,2.890265974050007e-5,-4.0381253019101765e-8,0.0021851317555203866,2.867039550492026e-5,-4.012573894978999e-8,0.002185372477190764,2.8408972654841787e-5,-3.983659301605007e-8,0.002185730455124099,2.8180528313815657e-5,-3.958174677758403e-8,0.0021861771693066417,2.804251014407566e-5,-3.942450075684918e-8,0.002186661265337064,2.803206489062113e-5,-3.940634962351665e-8,0.0021871205644257144,2.8154906091556042e-5,-3.953453886956924e-8,0.0021874978725242504,2.8382145494403323e-5,-3.977826745766282e-8,0.002187756423815575,2.865671184733779e-5,-4.0075466582978284e-8,0.0021878902551987,2.8908425992492547e-5,-4.0349239996036213E-08,0.0021879255831569328,2.907366219308399e-5,-4.052949755270081e-8,0.002187912085216684,2.9112986253584563e-5,-4.057244739063578e-8,0.0021879072199879612,2.9020292931549317e-5,-4.0470759660277784E-08,0.0021879598630596396,2.8820635503511565e-5,-4.025130399634947e-8,0.0021880992812219192,2.855917509608077e-5,-3.996313733776403e-8,0.002188332056726784,2.8287020621832985e-5,-3.9662060963515264e-8,0.0021886456060208528,2.804939262502735e-5,-3.9397673106991304e-8,0.0021890148819920466,2.7878715380127772e-5,-3.9205757381181164e-8,0.002189409156221178,2.7792378102702624e-5,-3.9105747978824426e-8,0.0021897972687176166,2.7793455583849522e-5,-3.9101439536603146e-8,0.0021901511374968234,2.7872602070577086e-5,-3.9183008468822456e-8,0.0021904481235000325,2.80099950384596e-5,-3.932910624744156e-8,0.002190673074057688,2.8177065500827853e-5,-3.950871255388833e-8,0.0021908206554662854,2.8338483116444323e-5,-3.9683248872783535e-8,0.002190898034144987,2.8455330491275332e-5,-3.980999342254779e-8,0.002190927155960091,2.8490498477234655e-5,-3.9847964078533655e-8,0.0021909449561215767,2.841676049523602e-5,-3.9766800450551744e-8,0.002190999293289918,2.8226395593368268e-5,-3.955740530076425e-8,0.0021911391604951622,2.7938931175521973e-5,-3.924055987672371e-8,0.0021914004248092763,2.7602074739011113e-5,-3.886808440988153e-8,0.00219179202133541,2.7282286475806473e-5,-3.851264350198292e-8,0.002192289357213238,2.704625873866707e-5,-3.82475557684289e-8,0.0021928392696263337,2.6940105864173445e-5,-3.812399760810237e-8,0.0021933752027235077,2.697500409955819e-5,-3.815512007691709e-8,0.002193836370061701,2.712470614302269e-5,-3.8313049345572726e-8,0.0021941837606845793,2.7334592335765326e-5,-3.8538514178115646e-8,0.0021944084668189573,2.753776194502866e-5,-3.875830475133487e-8,0.002194531286417225,2.7672583796492192e-5,-3.890450991618433e-8,0.002194595052600508,2.769704623340426e-5,-3.893040017878978e-8,0.0021946525033668582,2.759686253141467e-5,-3.881953924029014e-8,0.002194753120305771,2.7386090076476726e-5,-3.858667842959779e-8,0.0021949323250686314,2.7100914061041817e-5,-3.82710888669168e-8,0.0021952055424206626,2.678902702000713e-5,-3.792497063521771e-8,0.0021955679291575467,2.6498107213706706e-5,-3.760078207771899e-8,0.0021959986568907772,2.626660204683497e-5,-3.73410335002723e-8,0.0021964674766541165,2.6118501228737073e-5,-3.7172439057852775e-8,0.0021969413113013753,2.60620374695922e-5,-3.7104408935529385e-8,0.0021973894608135576,2.6091132908844254e-5,-3.7130604436828466e-8,0.00219778705276762,2.6188108161646412e-5,-3.7231911539965425e-8,0.0021981171577645352,2.6326541689641457e-5,-3.7379570709525906e-8,0.0021983722862443157,2.647389410124768e-5,-3.753800898406534e-8,0.0021985558494707763,2.6594192238440678e-5,-3.766770585522208e-8,0.0021986837479933113,2.6651537795907375e-5,-3.772898009889921e-8,0.0021987855132714115,2.6615420265459276e-5,-3.76878288712398e-8,0.0021989034252902504,2.646839864760911e-5,-3.752446513210713e-8,0.002199087291365176,2.621516384114665e-5,-3.7243437839789706e-8,0.002199383129417582,2.588937576288623e-5,-3.688130790905145e-8,0.0021998169911259277,2.555241378810931e-5,-3.650538638656394e-8,0.0022003802001003703,2.5279351320183844e-5,-3.619836871761591e-8,0.0022010254563611044,2.513422877506996e-5,-3.603114654032077e-8,0.002201679461595271,2.5145548720641303e-5,-3.603578324988553e-8,0.0022022676262901954,2.5295397762231912e-5,-3.619337702747384e-8,0.0022027384098715387,2.552770043771887e-5,-3.6442911016991864e-8,0.0022030761947726936,2.5769490088737933e-5,-3.6704451465803936e-8,0.0022032999837505608,2.5953710056367697e-5,-3.690413133727294e-8,0.002203452495899009,2.6035101872089713e-5,-3.699166081129466e-8,0.00220358608653898,2.5996726968420892e-5,-3.6947657521712005e-8,0.0022037500668679825,2.584868135819004e-5,-3.678246540474378e-8,0.0022039815599960576,2.562183741456571e-5,-3.6529498934363496e-8,0.0022043004146107474,2.5359154396673204e-5,-3.6235824598435174e-8,0.0022047079845341367,2.510642092784503e-5,-3.595198121736966e-8,0.002205189271399241,2.490392157422305e-5,-3.5722695471243174e-8,0.0022057175485827437,2.4780291065975067e-5,-3.557995202152093e-8,0.002206260229099632,2.4749273402388118E-05,-3.553929040719807e-8,0.0022067847011294868,2.4809362891213233e-5,-3.559935513770356e-8,0.002207263133432532,2.494571788740346e-5,-3.574402276444476e-8,0.0022076757646234684,2.5133391696059046e-5,-3.594599847110066e-8,0.0022080127950028375,2.534094893318031e-5,-3.61707958606488e-8,0.0022082753512539274,2.5533983406702185e-5,-3.6380543421501094e-8,0.0022084759594946783,2.5678586499651885e-5,-3.653770547250637e-8,0.0022086387115195184,2.5745202620986414e-5,-3.6609273231779453e-8,0.002208798772150077,2.5713550443386234e-5,-3.6572240060008746e-8,0.002208999993716592,2.557900040024047e-5,-3.6420802882875486e-8,0.0022092887458073814,2.5359488384672675e-5,-3.6174216899908184e-8,0.0022097025167608603,2.5099812062111692e-5,-3.588172643050776e-8,0.0022102543881308777,2.4867936743048755e-5,-3.56185625830845e-8,0.0022109195242995543,2.4738476511340537e-5,-3.5467648422950415e-8,0.002211634051687777,2.4765337819048855e-5,-3.5489237515539794e-8,0.002212313150289902,2.495636083716276e-5,-3.5692713187243686e-8,0.0022128823429647753,2.526671790565515e-5,-3.602912278257172e-8,0.0022133046472050132,2.5616981016093155e-5,-3.641102991172894e-8,0.0022135888531115686,2.5924578071327065e-5,-3.6747220225829005e-8,0.0022137783155401383,2.6130440340332528e-5,-3.69721280559337e-8,0.0022139309577410685,2.6210438172246873e-5,-3.705850643683236e-8,0.0022141014474845195,2.6172901848814536e-5,-3.7014821330468624e-8,0.0022143303324376486,2.604895373490618e-5,-3.687478915277662e-8,0.002214639802017609,2.5881451700368056e-5,-3.668537821684993e-8,0.0022150338963010646,2.5715502764954452e-5,-3.649643735626844e-8,0.0022155011447347337,2.5591302194405776e-5,-3.6352737563078843e-8,0.0022160184567097205,2.553907975187675e-5,-3.628822151576024e-8,0.0022165557263009628,2.5575938852458807e-5,-3.63223191891732e-8,0.0022170807551756427,2.5704576800506107e-5,-3.6458407892383054e-8,0.002217564030701961,2.591385422119361e-5,-3.668441906146322e-8,0.0022179828448299827,2.6181049859668053e-5,-3.697537858622144e-8,0.0022183242804138395,2.6475407977684876e-5,-3.729737331333177e-8,0.002218586851652362,2.6762362021212276e-5,-3.7612202106384365e-8,0.002218780907528584,2.7007899392426868e-5,-3.7882116402540654e-8,0.00221892800983572,2.718282261799535e-5,-3.807443917791746e-8,0.0022190594291572868,2.7266897794539164e-5,-3.816614008581418e-8,0.002219213643884262,2.7253074171586324e-5,-3.814862701576736e-8,0.0022194321448706397,2.7151812912431053e-5,-3.8032782192625904e-8,0.0022197524438374,2.699457943246866e-5,-3.785310248538782e-8,0.0022201977516507457,2.6834004944931882e-5,-3.7668058896544666e-8,0.0022207647596439554,2.6736960739406968e-5,-3.755241769514929e-8,0.002221414588087056,2.6767401671111417e-5,-3.757801963905858e-8,0.0022220754445295104,2.696116773143545e-5,-3.778551747050506e-8,0.002222662982074354,2.7304481080951647e-5,-3.81602371398771e-8,0.002223112492580615,2.7732335963690483e-5,-3.8630272100101265e-8,0.0022234048892087036,2.815262001038408e-5,-3.9093316095525206e-8,0.002223570353579146,2.8482812379548647e-5,-3.9457507211628694e-8,0.0022236698422765312,2.8677471002609632e-5,-3.9671972494411865e-8,0.002223768955546225,2.8734606819302868e-5,-3.973390147896533e-8,0.002223918561912486,2.8685068606721128e-5,-3.9676852435000445e-8,0.002224146947177898,2.857614254949019e-5,-3.955275079853739e-8,0.002224460584546953,2.8457539680318737e-5,-3.9416539001133896e-8,0.0022248488878112726,2.8372409677147155e-5,-3.931628151961653e-8,0.0022252897394614136,2.8352697862785916e-5,-3.9287926512737694e-8,0.002225754439448891,2.8417200189247082e-5,-3.9352956850409215e-8,0.0022262119752000306,2.8571064147124517e-5,-3.9517646409515605e-8,0.0022266329015272588,2.8806246946617162e-5,-3.977346217838114e-8,0.002226992971723243,2.9102919767945163e-5,-4.009861614536306e-8,0.002227276408541931,2.9431986686848863e-5,-4.046090776146395e-8,0.002227478443459657,2.975881765135786e-5,-4.082189498635584e-8,0.0022276066367046955,3.00479536480172e-5,-4.114208286135804e-8,0.0022276806541805206,3.0268246647568305e-5,-4.1386550741833944e-8,0.0022277304168021564,3.0397850263698415e-5,-4.153044218187168e-8,0.0022277927064168696,3.0428497299104088e-5,-4.1563769098494404e-8,0.0022279064138012593,3.036858246513481e-5,-4.149502940286735e-8,0.002228106506621653,3.0244655302837534e-5,-4.13531517818982e-8,0.0022284166785792644,3.0100550888706932e-5,-4.1186794221321944e-8,0.0022288411897262855,2.9992625796661267e-5,-4.10591614928939e-8,0.0022293578310589434,2.997937361758266e-5,-4.1036340003927136e-8,0.002229915827113162,3.0105006870106393e-5,-4.116870189588894e-8,0.0022304437011137785,3.0380336855881893e-5,-4.146920822621145e-8,0.0022308696821551816,3.0770008843180174e-5,-4.189889481023213e-8,0.0022311489278408515,3.119747911794132e-5,-4.237238494059883e-8,0.002231282975267909,3.157105128869589e-5,-4.278709882978031e-8,0.0022313182697664352,3.181892335039289e-5,-4.3062523712161575e-8,0.0022313244787628863,3.1913280890993805e-5,-4.316712531818715e-8,0.0022313668866389517,3.187208721013959e-5,-4.312031825412391e-8,0.0022314877691962513,3.174329917730292e-5,-4.297493790279011e-8,0.0022317016189136243,3.1584440533183345e-5,-4.2794660080913634e-8,0.0022320000376087473,3.1447193001066374e-5,-4.263700565313382e-8,0.0022323599775302527,3.1369544649942365e-5,-4.2544629399779314e-8,0.0022327512669868426,3.13736485445689e-5,-4.254281430583861e-8,0.0022331420789577098,3.146660704082846e-5,-4.264014632464142e-8,0.002233502662649728,3.164221547907365e-5,-4.283028278424188e-8,0.0022338081602597494,3.188287847991798e-5,-4.309400116155361e-8,0.0022340411058888376,3.216172283638613e-5,-4.340155202858812e-8,0.002234193788318541,3.244531827001491e-5,-4.371572186288535e-8,0.002234270215537642,3.269748772071455e-5,-4.399608728756532e-8,0.0022342870174345488,3.288434625146084e-5,-4.4204595810092806e-8,0.0022342725300309807,3.298010211189754e-5,-4.431198509478476e-8,0.00223426358719864,3.297265366270278e-5,-4.430402838113176e-8,0.002234300042169446,3.28677210223566e-5,-4.4186255163092324e-8,0.0022344176501358816,3.269023712664952e-5,-4.398572890389884e-8,0.0022346404530500393,3.248215526411121e-5,-4.374887676761402e-8,0.0022349739993351363,3.229642695778004e-5,-4.3534981383312984e-8,0.002235400846601725,3.218729338221004e-5,-4.3405375317758714e-8,0.0022358801294424515,3.2197598996961654e-5,-4.3409074494626946e-8,0.0022363531613351687,3.234518444318427e-5,-4.356719715545998e-8,0.0022367562584270713,3.26124404623423e-5,-4.386088239969612e-8,0.002237039364916164,3.2944799036726895e-5,-4.4229360674700297e-8,0.002237184585255663,3.3263008754100455e-5,-4.458371191536925e-8,0.0022372152097443723,3.348808466964168e-5,-4.4835003790813605e-8,0.002237188268790842,3.356890037152168e-5,-4.492538522979582e-8,0.002237172973766367,3.3498373396684425e-5,-4.4846285550617134e-8,0.002237226446062347,3.331063740330506e-5,-4.463527151098567e-8,0.0022373785866876966,3.306356285861056e-5,-4.435657408777556e-8,0.0022376301801785795,3.281796598936418e-5,-4.407798109343235e-8,0.002237960293002327,3.262266212632057e-5,-4.385422435645071e-8,0.0022383364907900727,3.250798890852662e-5,-4.371970523753345e-8,0.002238723456645966,3.2485676809755455e-5,-4.3688197681211816e-8,0.0022390886143439774,3.255173487689696e-5,-4.3755889161178954e-8,0.002239405282078471,3.2689939993701276e-5,-4.390514695537152e-8,0.002239654500276259,3.2874917872497975e-5,-4.410791058122196e-8,0.002239826466603891,3.3074841894149056e-5,-4.43287154816248e-8,0.0022399219825763365,3.325431872964785e-5,-4.452793608909369e-8,0.00223995372724577,3.337818442270938e-5,-4.466602508507044e-8,0.002239946609945796,3.341665474095889e-5,-4.4709250539583116e-8,0.0022399361149010558,3.335152643078121e-5,-4.463662869840457e-8,0.0022399637177205746,3.318214901741799e-5,-4.4446666383878356e-8,0.0022400692719222156,3.292908438196356e-5,-4.4161604326662625e-8,0.0022402815961347503,3.263324461259011e-5,-4.382667142532589e-8,0.0022406097829435986,3.234928937051243e-5,-4.35029200728048e-8,0.0022410381982317313,3.2133989991873885e-5,-4.325433505758617e-8,0.002241527366860039,3.2032192958380706e-5,-4.31320710589e-8,0.002242021338402319,3.206407169227447e-5,-4.315991919307524e-8,0.002242460373611949,3.22173758634287e-5,-4.3325235858678146e-8,0.0022427962572554097,3.244758975145919e-5,-4.3578759913273076e-8,0.002243006285647738,3.268735329396462e-5,-4.384500203668317e-8,0.002243101254106713,3.2863977904254935e-5,-4.4041959824776854e-8,0.002243123492551911,3.292048609982193e-5,-4.410494856355586e-8,0.0022431341784470964,3.283271918257909e-5,-4.400603585822717e-8,0.002243194132145136,3.261533508896748e-5,-4.376093452019552e-8,0.0022433459529788004,3.2314277942817154e-5,-4.342065606321087e-8,0.0022436045440565053,3.198999227156275e-5,-4.305276261895022e-8,0.002243958133515982,3.169947891807182e-5,-4.2721289735892826e-8,0.002244376640907042,3.148388477407264e-5,-4.2472798095789184e-8,0.0022448221512804886,3.136378685678507e-5,-4.233096289601714e-8,0.0022452575632132565,3.134045113321896e-5,-4.2297823602288997e-8,0.002245652005153063,3.139999666608745e-5,-4.2358322241039085e-8,0.002245983472810847,3.151802159817808e-5,-4.248543069195238e-8,0.0022462398578507008,3.166353197668659e-5,-4.2644554056704593e-8,0.002246419446397792,3.180211929402931e-5,-4.2797108244559135e-8,0.0022465314514837314,3.1898991863196846e-5,-4.290391686790522e-8,0.0022465964763423293,3.192267915682146e-5,-4.292934587877446e-8,0.0022466461542808808,3.185001140863545e-5,-4.2846882077462555e-8,0.0022467207138888905,3.1672240851810194e-5,-4.264604611928958e-8,0.0022468631990779767,3.140089843834509e-5,-4.2339079016408486e-8,0.0022471100388813652,3.1070610463486265e-5,-4.196427300171984e-8,0.002247479746499827,3.073566784992554e-5,-4.158230565870342e-8,0.0022479638331529823,3.045874199951375e-5,-4.1263714808448154e-8,0.002248524763253154,3.02937857422682e-5,-4.1069733388505545e-8,0.002249103611883865,3.0268960024283786e-5,-4.1032988729356464e-8,0.0022496357222364597,3.0376558929030593e-5,-4.114590430823665e-8,0.002250068824548509,3.0574158665270486e-5,-4.1361647414439126e-8,0.0022503772247836114,3.07964029825346e-5,-4.160710741763205e-8,0.002250567802057482,3.097301904580212e-5,-4.1803061544443096e-8,0.002250676749711126,3.1047324392743566e-5,-4.188509138902905e-8,0.0022507586723131802,3.099010340839463e-5,-4.1819420951854353e-8,0.002250871480347393,3.080538471041008e-5,-4.1609680129912226e-8,0.0022510615188335178,3.052699532297764e-5,-4.1293253390966694e-8,0.002251353179262093,3.0207520227351978e-5,-4.092900157619033e-8,0.0022517456031207373,2.990365199999711e-5,-4.058081653528731e-8,0.002252216441744965,2.966277801546249e-5,-4.0302454700107246e-8,0.0022527301904458124,2.9514465763670236e-5,-4.012779775956819e-8,0.0022532475943158755,2.9467955847632948e-5,-4.0067851081194045e-8,0.0022537333307623537,2.9514413442723212e-5,-4.0113146302274113E-08,0.0022541607881451917,2.9631644844628163e-5,-4.023900335211374e-8,0.002254514189838657,2.9789237110179563e-5,-4.041133614434692e-8,0.0022547890266936274,2.9952985275678716e-5,-4.059167064094272e-8,0.0022549917913854377,3.0088440765969818e-5,-4.074114160771088e-8,0.0022551396035145384,3.016407696389352e-5,-4.08240201186456e-8,0.0022552597216511264,3.015481429148342e-5,-4.081164539487939e-8,0.0022553882919875423,3.0046508802163843e-5,-4.0687495180085486e-8,0.002255567099077569,2.9841357504034444e-5,-4.045337540522603e-8,0.0022558369388607233,2.9562838755949134e-5,-4.0135156504026914e-8,0.0022562271875581842,2.9257130726269753e-5,-3.978455631529007e-8,0.0022567436326642507,2.898714903281843e-5,-3.947255364662877e-8,0.0022573598823487835,2.8817209579511943e-5,-3.927213390100102e-8,0.002258018966071855,2.8791605493017066e-5,-3.923404737454537e-8,0.002258648117312685,2.891633036493332e-5,-3.936599702943412e-8,0.0022591820275492096,2.9154153382066135e-5,-3.962682189325287e-8,0.0022595839247476135,2.9436595028559185e-5,-3.993977198480979e-8,0.00225985505008105,2.9686790215993037e-5,-4.021816649643196e-8,0.002260030241699472,2.9842461088519565e-5,-4.039130403089442e-8,0.002260164133587199,2.9870701143892955e-5,-4.042125712911031e-8,0.0022603147060398874,2.9772008334002676e-5,-4.0307640364203134e-8,0.002260529356679789,2.957539212424842e-5,-4.008236218492744e-8,0.0022608360709949985,2.9328088618681445e-5,-3.9798262676794195e-8,0.002261240279369694,2.9083351681059975e-5,-3.951545849385412e-8,0.0022617268003365322,2.888909043567816e-5,-3.9288472509905356e-8,0.0022622655482008036,2.8779388123142624e-5,-3.915647214350556e-8,0.002262819189102602,2.8770098261314698e-5,-3.913805732001187e-8,0.002263350798057785,2.88586129564398e-5,-3.92308125522209e-8,0.0022638299762149723,2.9026875547142857e-5,-3.9414639258724473e-8,0.00226423666135669,2.9246199189130553e-5,-3.9657234352431613e-8,0.0022645626786873415,2.9482478245198007e-5,-3.992005306099529e-8,0.0022648116674165116,2.9700822468235492e-5,-4.016358408751382e-8,0.0022649981596772123,2.9869345096513426e-5,-4.0351602493104255e-8,0.00226514630501003,2.9962411033835785e-5,-4.04547762743576e-8,0.002265288298830657,2.9963862391270176e-5,-4.045428268554886e-8,0.0022654620702153745,2.9870664852001304e-5,-4.034600056798178e-8,0.002265707212446325,2.969691295175194e-5,-4.0145217890832345e-8,0.002266057956294179,2.947691133511338e-5,-3.9890345763315734e-8,0.0022665329039003286,2.926444328548644e-5,-3.964227072360827e-8,0.0022671236887107245,2.9124484378898093e-5,-3.9475022511818456E-08,0.002267788240646869,2.9115420126813518e-5,-3.945552451759843e-8,0.0022684561262601086,2.9265821438624493e-5,-3.9617054061131354e-8,0.0022690490903026677,2.955733641213853e-5,-3.993960157280089e-8,0.002269509515122626,2.992626254599793e-5,-4.035147042985752e-8,0.00226982162214845,3.0286068029203308e-5,-4.0754733553186254e-8,0.0022700138757717004,3.055897303667495e-5,-4.1061025649979134e-8,0.0022701436737226793,3.069989577380529e-5,-4.1218699906638504e-8,0.00227027517647685,3.070387520696665e-5,-4.122131101616223e-8,0.002270461042897145,3.059919619723711e-5,-4.1100011651257346e-8,0.002270732689133939,3.0433729733369717e-5,-4.090835113136894e-8,0.002271098337780852,3.026097227227714e-5,-4.070670005595391e-8,0.002271546105525531,3.012906258930677e-5,-4.0549886052690306e-8,0.002272049606456396,3.007354356655947e-5,-4.0478868217575704e-8,0.0022725744638758933,3.011354728086309e-5,-4.051615436512521e-8,0.0022730847790649704,3.0250954443169037e-5,-4.066458322488583e-8,0.002273548838725809,3.047206367789406e-5,-4.0909059104787467e-8,0.0022739434936463994,3.075113090835044e-5,-4.1220551846418976e-8,0.0022742568636345524,3.105504186902545e-5,-4.156147942044127e-8,0.0022744892839467825,3.134835492335001e-5,-4.189151521878511e-8,0.0022746527416301044,3.159798737144839e-5,-4.217292294439811e-8,0.0022747692873981264,3.177714018497166e-5,-4.237495585906838e-8,0.0022748688113758886,3.186850606857967e-5,-4.247743480535395e-8,0.002274986290774487,3.186699225575003e-5,-4.2473855910760004e-8,0.0022751583117732004,3.178213127539921e-5,-4.237427673206388e-8,0.0022754182619907173,3.1640017291713195e-5,-4.2207768491395545e-8,0.0022757894556965316,3.1483670873694755e-5,-4.202308555544977e-8,0.0022762763149492913,3.1369490725813464e-5,-4.188476186116999e-8,0.002276855832823401,3.135697026894548e-5,-4.186133900931318e-8,0.0022774744421386866,3.1490633861351893e-5,-4.200454099581501e-8,0.0022780569340058936,3.177865036092299e-5,-4.232457983909165e-8,0.0022785298502353986,3.217986098398422e-5,-4.277512950721424e-8,0.002278850878859694,3.261186828087253e-5,-4.326249088421801e-8,0.002279027127460274,3.29810254809563e-5,-4.3679853601427606e-8,0.0022791101135152944,3.3218485070021266e-5,-4.3948435338700015e-8,0.0022791716138773816,3.33017751806445e-5,-4.404203618293163e-8,0.0022792763622203156,3.325354630218967e-5,-4.3985619723857855e-8,0.0022794650184009696,3.312474867222378e-5,-4.3836336864797965e-8,0.0022797502493714416,3.297479872131966e-5,-4.3661248003750406e-8,0.00228012142820996,3.285672340462785e-5,-4.35206528604119e-8,0.0022805525144040995,3.2809069538178984e-5,-4.3458910771532503e-8,0.002281009749824412,3.28530678199272e-5,-4.350102367560977e-8,0.002281457946481573,3.299290573495884e-5,-4.3652647942342574e-8,0.0022818653863613037,3.3217663060474e-5,-4.390203862093646e-8,0.0022822076095379298,3.350430854908523e-5,-4.4223341324998374e-8,0.0022824701581385626,3.38215008984268e-5,-4.458094556850484e-8,0.0022826501909389498,3.413398695711384e-5,-4.493459121134231e-8,0.0022827568168762593,3.44073498830337e-5,-4.524485208989148e-8,0.0022828100447377627,3.4612658901913384e-5,-4.547843105508966e-8,0.0022828384740465075,3.4730475087631895e-5,-4.561266796396316e-8,0.002282876011570533,3.475388096679199e-5,-4.5638964500433376e-8,0.002282957848421652,3.469040464851831e-5,-4.5565062411767125e-8,0.0022831158204580496,3.456271833872463e-5,-4.541606069616092e-8,0.0022833731202049406,3.440786048574832e-5,-4.5233819572801423e-8,0.0022837383081319583,3.427425554837967e-5,-4.507378989735375e-8,0.0022841992424606486,3.42151255976047e-5,-4.4997528462908375e-8,0.0022847190630679586,3.427694413898361e-5,-4.505929978605274e-8,0.0022852381039333777,3.448341082476899e-5,-4.528736898920922e-8,0.002285686017006873,3.4819631970934466e-5,-4.566551541864208e-8,0.0022860045965692596,3.522625967483624e-5,-4.6126130449042295e-8,0.0022861729555042707,3.5613274931110104e-5,-4.65660689031637e-8,0.002286219685653516,3.5892392446296056e-5,-4.688394305335418e-8,0.002286211691889868,3.601177133491025e-5,-4.7019944247694604e-8,0.002286225505956513,3.5972626779050686e-5,-4.697479161031815e-8,0.0022863188543598124,3.58205873724714e-5,-4.6799832485411654e-8,0.00228651668635773,3.562198060753e-5,-4.6570120297171264e-8,0.002286812966928041,3.5440632292562546e-5,-4.635820450409294e-8,0.002287180868527256,3.532389707738892e-5,-4.6218365864022434e-8,0.002287583967878681,3.5298098790532246e-5,-4.618136168410986e-8,0.0022879848284268977,3.536980504236021e-5,-4.6255633734096165e-8,0.0022883504197809537,3.552946613083765e-5,-4.643115703668337e-8,0.002288655274879669,3.575541538610793e-5,-4.668378554344655e-8,0.0022888834463104927,3.60176745468646e-5,-4.697952823998258e-8,0.002289029789277668,3.6281738912671874e-5,-4.727893103740416e-8,0.002289100595889158,3.65126058036671e-5,-4.754178038619249e-8,0.0022891133320047745,3.667916372430841e-5,-4.773217946936401e-8,0.0022890950961498148,3.675871799412574e-5,-4.782371311654076e-8,0.0022890795607725576,3.674100774676719e-5,-4.7804003549630296e-8,0.002289102527511509,3.663093644990813e-5,-4.767785241181172e-8,0.002289196541348638,3.644938070154096e-5,-4.746830614559982e-8,0.0022893851939173337,3.6231636872978196e-5,-4.7215134114218746e-8,0.002289677840039512,3.602331407239086e-5,-4.6970406519053876e-8,0.0022900654708520327,3.58736629553553e-5,-4.679101983320465e-8,0.002290518708418688,3.582634915501503e-5,-4.6728061346799346e-8,0.0022909894789891827,3.590809695929047e-5,-4.681348212371508e-8,0.002291418352774001,3.611712058525191e-5,-4.704638370723802e-8,0.002291748752111823,3.641569025232455e-5,-4.7384109668672996e-8,0.0022919460643483626,3.6733133288591057e-5,-4.774556420547209e-8,0.0022920143328060607,3.6983858880081674e-5,-4.803206329891999e-8,0.002291999814615806,3.7096977477987554e-5,-4.8161604641847836e-8,0.002291975474626928,3.704374634491269e-5,-4.8100515063701843e-8,0.0022920128248449328,3.6846970662485426e-5,-4.787422973248501e-8,0.0022921567275596033,3.656759825553701e-5,-4.7551933742153225e-8,0.0022924155206640656,3.627866505605262e-5,-4.721685937218435e-8,0.0022927669894349093,3.6041857596996885e-5,-4.6939648387720506e-8,0.002293172035520522,3.589533984270876e-5,-4.676448884083824e-8,0.002293587774220062,3.585234950794764e-5,-4.670737294106673e-8,0.00229397625599273,3.5905780732209896e-5,-4.676107434656356e-8,0.0022943087935883965,3.603438248915831e-5,-4.690198432790658e-8,0.0022945674627496593,3.6208248273547327e-5,-4.709625363021303e-8,0.0022947453752612396,3.639309951270794e-5,-4.730469355160464e-8,0.002294846618012875,3.655385217382977e-5,-4.748694572871607e-8,0.0022948859966711527,3.6658142221179055e-5,-4.760561192507473e-8,0.0022948882229804706,3.66802485027254e-5,-4.7630789899419904e-8,0.002294885915277481,3.660536515102313e-5,-4.754496057001509e-8,0.0022949158390162044,3.64335141641052e-5,-4.7347464493291285e-8,0.002295013303258485,3.6181877526743895e-5,-4.705723761896796e-8,0.0022952053707549756,3.5884255428738196e-5,-4.6712359540665154e-8,0.0022955042500871392,3.558678939109289e-5,-4.6365392836542746e-8,0.002295902637857623,3.534001900618766e-5,-4.607449202272132e-8,0.002296372603345501,3.518847407688666e-5,-4.5891531629784525e-8,0.002296868936882388,3.515979486113663e-5,-4.584945571699113e-8,0.002297337100875107,3.525571375908133e-5,-4.595154991513938e-8,0.0022977251112613487,3.54474663309797e-5,-4.6165727461002804e-8,0.002297997511006086,3.567828648084553e-5,-4.642708208073091e-8,0.0022981479038201797,3.587486868504097e-5,-4.665101902295781e-8,0.0022982048890346418,3.59670990491837e-5,-4.6756152857442506e-8,0.0022982264993906746,3.591076706084595e-5,-4.66907281238414e-8,0.00229828244392896,3.570370688981107e-5,-4.645139989864305e-8,0.0022984305793150974,3.538654013029307e-5,-4.6084187811529834e-8,0.002298698613153666,3.502687277549902e-5,-4.5666380520174655e-8,0.0022990791902976694,3.4695334694455384e-5,-4.5279093849930466e-8,0.0022995381727997865,3.4445276278051516e-5,-4.49839970221804e-8,0.002300029218953335,3.430321854904224e-5,-4.4812265883725474e-8,0.0023005071520190556,3.426970567379333e-5,-4.4765358220823394e-8,0.0023009363058259054,3.432593949783263e-5,-4.4822399265362546e-8,0.0023012938617268945,3.444159290053393e-5,-4.494899788620879e-8,0.002301570006953491,3.458126436569647e-5,-4.51046246777301e-8,0.002301766800108603,3.470904311234521e-5,-4.524791553057968e-8,0.002301896888738061,3.479179416047871e-5,-4.534053254240823e-8,0.002301982375857608,3.480208071788327e-5,-4.535057802732492e-8,0.0023020534602801847,3.472142304601621e-5,-4.525634915545079e-8,0.0023021460538406057,3.454404162586172e-5,-4.505063369302154e-8,0.002302297520970304,3.4280415377693827e-5,-4.474483116108385e-8,0.00230254017354546,3.395911142067943e-5,-4.4371164167657605e-8,0.0023028932564570586,3.3624877587848964e-5,-4.398066536436923e-8,0.0023033555964254958,3.333152309155398e-5,-4.3635188638132984e-8,0.0023039020503271127,3.312995217770553e-5,-4.339376844190064e-8,0.002304486385520222,3.305425894193706e-5,-4.329658172175806e-8,0.002305051035348368,3.3110519998397165e-5,-4.335181227808648e-8,0.0023055413708626526,3.3272560571329226e-5,-4.353040435431237e-8,0.0023059202737308734,3.348666573581906e-5,-4.3771124818958763e-8,0.0023061786570983014,3.368428524135492e-5,-4.3994995923487775e-8,0.0023063388048928817,3.379947725797813e-5,-4.412542796611055e-8,0.0023064492323863275,3.378653186463361e-5,-4.410875759920423e-8,0.0023065718780325255,3.363277880294064e-5,-4.392931753536871e-8,0.0023067648430645355,3.336223440573916e-5,-4.361391666217241e-8,0.0023070660644278905,3.302816568314063e-5,-4.322345795297547e-8,0.002307483727852774,3.269679339994018e-5,-4.2834243518091083e-8,0.0023079967124393116,3.242829025455311e-5,-4.2516054578377455e-8,0.002308563857239961,3.2262195589673835e-5,-4.2315205384790976e-8,0.0023091372052619127,3.221149782256434e-5,-4.224750159055635e-8,0.002309673844341424,3.2265073740245427e-5,-4.2300823774791806e-8,0.0023101432068525158,3.239501720334835e-5,-4.244342832539441e-8,0.0023105295861446016,3.256496006872504e-5,-4.2633513685632894e-8,0.0023108314009869526,3.2736917316135974e-5,-4.282717939490637e-8,0.002311059046577513,3.287596311964373e-5,-4.298390962236588e-8,0.0023112325956021447,3.2953249680788354e-5,-4.30701110947523e-8,0.00231137979665109,3.294831861010061e-5,-4.306178209267358e-8,0.0023115340997543143,3.285151044406728e-5,-4.2947275355292e-8,0.0023117319317365243,3.2666777386046935e-5,-4.2730561942988145e-8,0.0023120082445560355,3.241439708027806e-5,-4.243445694518821e-8,0.0023123897136956896,3.213200948149292e-5,-4.210197938273945e-8,0.002312886188388601,3.1871514418046985e-5,-4.179294978549619e-8,0.0023134830361791667,3.168968477884489e-5,-4.157326718028376e-8,0.0023141388246951094,3.163282940214068e-5,-4.149718047268907e-8,0.002314792329840861,3.172005820484998e-5,-4.158778555622238e-8,0.002315378896673669,3.193290371843414e-5,-4.182474929661659e-8,0.0023158505127047306,3.2217740072628357e-5,-4.214680612835947e-8,0.0023161909435828218,3.2501262856054346e-5,-4.2469442360932653e-8,0.002316419671183998,3.271254277366566e-5,-4.27103290681903e-8,0.0023165841921237427,3.2802780436011716e-5,-4.2812247472897776e-8,0.0023167450214273137,3.2756541656388914e-5,-4.275628838705075e-8,0.0023169591271539453,3.259272819167442e-5,-4.256326379538918e-8,0.0023172663812004936,3.2356898186037265e-5,-4.228512778642178e-8,0.0023176817453812227,3.2108186977599e-5,-4.199006993769168e-8,0.002318194185054491,3.1904582986137214e-5,-4.174553762547756e-8,0.00231877176791076,3.1790160014621046e-5,-4.1603324561922454e-8,0.002319371007020906,3.1787119353049104e-5,-4.159008391244041e-8,0.0023199475183516252,3.189400454355314e-5,-4.17049622110272e-8,0.0023204650305293554,3.20894591354611e-5,-4.1923747329153166e-8,0.002320900868517307,3.2339315150879754e-5,-4.220702939293869e-8,0.0023212476092142357,3.260440417190498e-5,-4.2509329097549e-8,0.0023215118356965506,3.284715719192341e-5,-4.278686762213579e-8,0.0023217113982006393,3.3036182323788574e-5,-4.300295310375987e-8,0.002321872364162279,3.314903836216729e-5,-4.313120169100703e-8,0.0023220262092654128,3.3173971066507745e-5,-4.315751282036905e-8,0.002322207158400309,3.311135649858902e-5,-4.3081732272613976e-8,0.0023224491028571363,3.297521373884765e-5,-4.291948491394481e-8,0.002322781228382118,3.279447518776715e-5,-4.270382165655561e-8,0.0023232216822924234,3.261266466520483e-5,-4.248505510679363e-8,0.002323769722566849,3.2483621858754785e-5,-4.2325943183644296e-8,0.002324398904211897,3.2460944922610885e-5,-4.228942774440365e-8,0.002325056179267136,3.258120401470381e-5,-4.241896142727533e-8,0.002325671964702718,3.2846122159074696e-5,-4.271751943685757e-8,0.00232618144268266,3.321386581244003e-5,-4.3137207029593565e-8,0.0023265488268709705,3.36082031220369e-5,-4.3589753742231386e-8,0.0023267814240886583,3.394420957442691e-5,-4.397636855767629e-8,0.0023269254239565483,3.415782391829717e-5,-4.422212158225807e-8,0.002327046906947544,3.422452814123435e-5,-4.429770088385412e-8,0.002327209206277997,3.4160981089080925e-5,-4.422143906155781e-8,0.002327456336525311,3.401357864203633e-5,-4.4046282714445835E-08,0.002327805923589105,3.384194337626255e-5,-4.384093488623098e-8,0.002328250166554385,3.37036441574621e-5,-4.3672328614357636e-8,0.002328761740259225,3.364315089403521e-5,-4.3592791245387643e-8,0.002329301915681379,3.36856352720997e-5,-4.3632602011700155e-8,0.002329829055291661,3.383516729126079e-5,-4.379753708045467e-8,0.0023303062390849644,3.407663050535043e-5,-4.407078165874924e-8,0.0023307070359199853,3.438049828740393e-5,-4.441833484198168e-8,0.0023310187619350036,3.470925636680583e-5,-4.4796515547741785e-8,0.0023312431048083324,3.502410718649536e-5,-4.515990686671555e-8,0.002331394528886721,3.5290797443504604e-5,-4.5468276438613356e-8,0.002331497260081565,3.5483844383961805e-5,-4.569154976787356e-8,0.002331581733856791,3.558904226640621e-5,-4.581270005257149e-8,0.0023316810811048884,3.560465423137779e-5,-4.582909582100883e-8,0.002331827771099224,3.5541816076164474e-5,-4.575300867708182e-8,0.0023320501595354027,3.542447396167401e-5,-4.561169901534009e-8,0.0023323683909373285,3.528871876135906e-5,-4.5446880835164095e-8,0.0023327891822946096,3.51805346933835e-5,-4.531231018055253e-8,0.002333299958278486,3.515015003696038e-5,-4.52672578511267e-8,0.0023338645432176663,3.5241270465413334e-5,-4.5363790266725256e-8,0.002334424562220092,3.5475412457926315e-5,-4.562814505895616e-8,0.0023349112408662287,3.583613212030472e-5,-4.6041947983230845e-8,0.002335268146958933,3.626338247097496e-5,-4.6535418255023436e-8,0.0023354760591965088,3.666773954728629e-5,-4.700402689339779e-8,0.0023355644528050535,3.696270836812873e-5,-4.7346394509497067e-8,0.002335600051392683,3.7098371862978543e-5,-4.75036656435806e-8,0.002335658860810056,3.707695140177438e-5,-4.747763880896117e-8,0.0023357987401432536,3.694435600604198e-5,-4.732093922172631e-8,0.002336045463982361,3.6767616798790464e-5,-4.711093689128459e-8,0.002336393449628172,3.661235323283033e-5,-4.6923808409687194e-8,0.00233681482692482,3.6528212315890726e-5,-4.68177625437056e-8,0.002337270388702322,3.6542959451067806e-5,-4.682607312286444e-8,0.0023377189367930666,3.66625719363429e-5,-4.6956871248297825e-8,0.002338124071548144,3.687450363014641e-5,-4.7196561629315964e-8,0.002338458716826444,3.71523445299233e-5,-4.75149713046986e-8,0.0023387078440758034,3.7461115310449495e-5,-4.787144263559505e-8,0.002338869585723431,3.7762817841687184e-5,-4.822140859107426e-8,0.0023389547817296704,3.802184043837775e-5,-4.852287616148231e-8,0.0023389850485431105,3.820974950563554e-5,-4.87421532200505e-8,0.002338989627065774,3.830895059743735e-5,-4.885815585004515e-8,0.0023390014899789605,3.8314840733578865e-5,-4.8864887051675046e-8,0.002339053227796983,3.823643256374001e-5,-4.8772155817743224e-8,0.0023391730470084114,3.809565596331883e-5,-4.860485990028719e-8,0.002339381007965399,3.7925524692509784e-5,-4.840106376674009e-8,0.0023396854228536312,3.776719520424567e-5,-4.82088209371393e-8,0.0023400793116841023,3.76654727255943e-5,-4.808107898018889e-8,0.002340537481346002,3.766178500501879e-5,-4.8067398459253976e-8,0.0023410160318337752,3.778395059438169e-5,-4.820166978989883e-8,0.0023414571514578423,3.8033753723512084e-5,-4.8487112668261064e-8,0.002341802014567862,3.837655741982126e-5,-4.888372230559299e-8,0.0023420114228051465,3.874102641968516e-5,-4.930783648964436e-8,0.0023420863661792065,3.9036695298684036e-5,-4.965293287954776e-8,0.0023420745217566197,3.918717458210972e-5,-4.982885057806455e-8,0.0023420538209714603,3.91622722916344e-5,-4.9799546790811774e-8,0.0023421004046062298,3.8988852688015025e-5,-4.959573407663678e-8,0.0023422602630217295,3.8734768578304047e-5,-4.9296049457022376e-8,0.0023425391360975905,3.847893082192605e-5,-4.899224673303789e-8,0.0023429102765989336,3.828568044273994e-5,-4.8759531463412606e-8,0.0023433299940436355,3.819251167163617e-5,-4.8642341136861975e-8,0.0023437518655280796,3.8209551159922836e-5,-4.865357708177263e-8,0.0023441359775748295,3.8325147109487965e-5,-4.87807783260245e-8,0.002344453495623456,3.8512988018584136e-5,-4.8994075741131246e-8,0.002344688236531956,3.873852777500904e-5,-4.9253489797137967e-8,0.0023448367420634006,3.896429832747165e-5,-4.951513690495988e-8,0.002344907563344286,3.915445172418351e-5,-4.973668851539436e-8,0.002344919846223446,3.927885131661452e-5,-4.9882338277690744e-8,0.0023449010717055798,3.9316757036171124e-5,-4.992722780668246e-8,0.0023448838074805536,3.925979958184939e-5,-4.986094461349622e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json new file mode 100644 index 0000000000..a7e1312810 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":18000,"numberOfSamples":1000,"samples":[0.002344901558802442,3.911368303105064e-5,-4.968948981883951e-8,0.002344984132234963,3.8898163040661456e-5,-4.9435280092255396e-8,0.002345153076453194,3.8645137911801235e-5,-4.913505665071581e-8,0.0023454177649364274,3.8394882701718704e-5,-4.883571430956027e-8,0.0023457726182683734,3.8190636084535106e-5,-4.858818570335279e-8,0.0023461958479369647,3.8071833815956895e-5,-4.8439580759263196E-08,0.0023466502566154754,3.806617270836784e-5,-4.8423700396250246e-8,0.0023470871667342188,3.818099295284342e-5,-4.855052067391149e-8,0.0023474547964515697,3.8395736841710905e-5,-4.8796864492445077e-8,0.002347711548848421,3.865908630266998e-5,-4.9102715263344044e-8,0.0023478420825502667,3.889571950044163e-5,-4.937914952780937e-8,0.00234786961391877,3.902607152063935e-5,-4.9531851099022974e-8,0.0023478548636246925,3.899526350333567e-5,-4.949545923878963e-8,0.002347876570857601,3.8797420616696476e-5,-4.926230021920203e-8,0.0023480009856264934,3.8479554435582394e-5,-4.888691218568922e-8,0.002348257394842648,3.81212678497871e-5,-4.8462214576854004e-8,0.0023486326479069406,3.7803093228172886e-5,-4.8082513592352674e-8,0.0023490835964367573,3.75814623825538e-5,-4.781433129307214e-8,0.002349556312825578,3.747939916176964e-5,-4.768549705089819e-8,0.002350001794120482,3.7490379203984336e-5,-4.768944037993623e-8,0.002350384381521822,3.758800212452211e-5,-4.779618621991062e-8,0.0023506841057128985,3.773572437125139e-5,-4.796348785816809e-8,0.0023508956980960788,3.7894232799687954e-5,-4.814536983155262e-8,0.00235102648099269,3.802641740658273e-5,-4.829803528414698e-8,0.002351094173287532,3.810084978765315e-5,-4.838411531070628e-8,0.0023511246964647748,3.8094608924835005e-5,-4.837614007717066e-8,0.0023511496348331447,3.799585924542727e-5,-4.825963731338258e-8,0.0023512029179003826,3.780605403700456e-5,-4.803571540037979e-8,0.002351316493203054,3.754110540847055e-5,-4.772242618165293e-8,0.002351515254331023,3.723065606146325e-5,-4.7353971759481864e-8,0.0023518120205759476,3.6914840723378074e-5,-4.697706960436158e-8,0.0023522036900594134,3.663842066327486e-5,-4.664428486396447e-8,0.0023526697415857454,3.6442835626573675e-5,-4.6404850464569946E-08,0.0023531739492806607,3.635743472275251e-5,-4.629433098034591e-8,0.0023536695969230293,3.639153741844735e-5,-4.632502065598751e-8,0.002354107963028887,3.65290387843179e-5,-4.64791633358682e-8,0.0023544493334192655,3.672744771866113e-5,-4.670739713326941e-8,0.0023546748244885193,3.692340046714689e-5,-4.693502893752279e-8,0.0023547957604870243,3.704596407123413e-5,-4.707779081016492e-8,0.002354855915443392,3.703656572046711e-5,-4.70656375977696e-8,0.0023549223160394474,3.68699978500431e-5,-4.6867843166706427e-8,0.002355064610704272,3.656683381659626e-5,-4.65078344897485e-8,0.002355330456332751,3.6188645949168455e-5,-4.605762360942627e-8,0.0023557290800031,3.581614088997792e-5,-4.561209830788785e-8,0.0023562313149006323,3.552104851024793e-5,-4.525598622392911e-8,0.002356784170343763,3.534573263514571e-5,-4.503985226093692e-8,0.00235733028458666,3.529761527789713e-5,-4.49733843052568e-8,0.002357823000083982,3.535587514723036e-5,-4.503300722505471e-8,0.0023582334607192713,3.548324139112816e-5,-4.517550230472812e-8,0.0023585511399880337,3.5636946080439145e-5,-4.535076312918837e-8,0.002358780962041987,3.577633956909642e-5,-4.551078335076926e-8,0.0023589395842511522,3.5867314155800855e-5,-4.561499749370089e-8,0.002359052080351249,3.588475773629073e-5,-4.563332272362631e-8,0.002359149147828655,3.58142084645814e-5,-4.554820350082022e-8,0.0023592643626533377,3.565335730415486e-5,-4.5356402142557453E-08,0.002359430841246486,3.541339537933329e-5,-4.507057121932486e-8,0.0023596768567981123,3.511952535451973e-5,-4.471987460114685e-8,0.0023600205188522927,3.480948168500788e-5,-4.4348345490610194e-8,0.0023604644698905536,3.452896471445555e-5,-4.400967986329848e-8,0.002360992350010294,3.432364769813786e-5,-4.375798612579386e-8,0.002361569042366369,3.422878850205881e-5,-4.363559641492016e-8,0.0023621460051594665,3.4259012492440044e-5,-4.3660883375380844e-8,0.0023626713616961515,3.440164922381125e-5,-4.3820080092443e-8,0.002363102567048767,3.4616447316981465e-5,-4.4066547053651594e-8,0.002363418276529288,3.484277697645849e-5,-4.432896661511161e-8,0.002363625904080295,3.501331834422755e-5,-4.452741922922826e-8,0.002363762140673494,3.50713100177352e-5,-4.459391491625094e-8,0.0023638851680286292,3.498694287747205e-5,-4.449207573009896e-8,0.0023640594734086117,3.4767688893707976e-5,-4.422967279774819e-8,0.002364337052724743,3.44579776897352e-5,-4.385849503168624e-8,0.0023647414089119547,3.412668761857231e-5,-4.345970698104098e-8,0.002365260922020612,3.3846152104623893e-5,-4.3119075143364176e-8,0.0023658544426327192,3.367093165302294e-5,-4.290180278936738e-8,0.0023664660490979486,3.362478090509265e-5,-4.2836928949552116e-8,0.002367041894211088,3.3699477499923e-5,-4.29156715149733e-8,0.0023675425813141815,3.3863070665591675e-5,-4.3100929149056666e-8,0.002367948361133545,3.407186155979982e-5,-4.334131276515742e-8,0.0023682583104001854,3.4281125480317074e-5,-4.358383945165417e-8,0.002368486347050624,3.4452289918945094e-5,-4.378254145392837e-8,0.002368656569458454,3.455667745010834e-5,-4.3903037676489125e-8,0.002368799213631667,3.457704329979657e-5,-4.39244496666408e-8,0.0023689474323752143,3.450818698611703e-5,-4.384015205758009e-8,0.0023691344170632556,3.4357416482385305e-5,-4.3658308045106786e-8,0.002369390127550806,3.4144946605107745e-5,-4.340234799568976e-8,0.002369737050180081,3.390358038895181e-5,-4.311066755298774e-8,0.0023701849761484078,3.367640314542406e-5,-4.283404275674573e-8,0.002370725808074802,3.351105695568608e-5,-4.262900855450118e-8,0.0023713306372070224,3.344998149691437e-5,-4.254638292238252e-8,0.0023719519724518553,3.351806525291478e-5,-4.261657041710548e-8,0.0023725329401571575,3.371175366291013e-5,-4.283642668257849e-8,0.0023730222295828053,3.3995002702351264e-5,-4.316414308379054e-8,0.002373389973065274,3.430578520129685e-5,-4.3526671192005085e-8,0.0023736381505010734,3.4572328983584834e-5,-4.38388242013889e-8,0.0023738010098588143,3.473355012811767e-5,-4.402752760022938e-8,0.00237393531167498,3.4756315512409036e-5,-4.40524591922618e-8,0.0023741041518875864,3.4643979531241987e-5,-4.391644020525929e-8,0.0023743597715574142,3.443428581685144e-5,-4.366325823519776e-8,0.002374730275263065,3.418808569592938e-5,-4.336456918047751e-8,0.0023752135991477064,3.397259983293269e-5,-4.3100208376556956e-8,0.002375779941817866,3.384415723124978e-5,-4.293768908589405e-8,0.0023763813960745914,3.383531261076801e-5,-4.2916694132470866e-8,0.0023769653178674142,3.394966546843266e-5,-4.304258701004152e-8,0.0023774870203995034,3.416488144273135e-5,-4.3289677344681276e-8,0.002377918235263097,3.444154087954113e-5,-4.3611544323386645e-8,0.0023782499725694506,3.473394751413563e-5,-4.3953871457543554e-8,0.002378490676997382,3.499948400810439e-5,-4.4265690042450136e-8,0.002378661785361829,3.520478219905836e-5,-4.45068771402646e-8,0.0023787927125148967,3.5328684667322306e-5,-4.465179236135274e-8,0.0023789164661922424,3.5362982250262976e-5,-4.4690190041228925e-8,0.002379066168330197,3.531210837114164e-5,-4.462683919511151e-8,0.0023792721073279486,3.519257964256899e-5,-4.448085699607398e-8,0.0023795586569317585,3.50323249823028e-5,-4.4284979324380445e-8,0.0023799404698155602,3.486935159153574e-5,-4.408411931944888e-8,0.00238041786411957,3.4748539855140206e-5,-4.39317205628605e-8,0.0023809723866902452,3.471506365948844e-5,-4.38820214882267e-8,0.0023815649852208134,3.48036933953732e-5,-4.397726798401748e-8,0.0023821401857936045,3.502563195655052e-5,-4.423182507960411e-8,0.0023826385643343764,3.535804096673262e-5,-4.461940477123716e-8,0.002383015549616911,3.574351081297848e-5,-4.507218244911266e-8,0.0023832590121007622,3.610394768843331e-5,-4.549722500288198e-8,0.0023833960729126107,3.6365403192313095e-5,-4.5806082879119395e-8,0.0023834844707587666,3.6482794911242564e-5,-4.594430660481812e-8,0.0023835926131679144,3.6453070353420245e-5,-4.5907232417809996e-8,0.0023837780068744117,3.6312527567923084e-5,-4.573698815443366e-8,0.002384072504190872,3.612228458903607e-5,-4.550549834835012e-8,0.002384477540262076,3.594951747525463e-5,-4.529245938741677e-8,0.0023849679834993427,3.5850894327466484e-5,-4.516576690664186e-8,0.0023855013057676516,3.586164050491832e-5,-4.5168379713013465e-8,0.0023860287687607305,3.599113018920311e-5,-4.5312724744731254e-8,0.002386506003294634,3.6224400739596276e-5,-4.558208417162952e-8,0.0023869010817420566,3.65281921996621e-5,-4.5937482125035984e-8,0.0023871989250919125,3.685955147899608e-5,-4.632784241705567e-8,0.002387401820865755,3.7174763898084735e-5,-4.6700739768763154e-8,0.002387526785819297,3.7436733765039484e-5,-4.701140163670798e-8,0.0023876010849905364,3.761979915266924e-5,-4.7228628272774645e-8,0.00238765727041805,3.771186667545958e-5,-4.733742080218521e-8,0.002387728725155376,3.7714449644070145e-5,-4.7339022820513065e-8,0.0023878460686218663,3.764152424039279e-5,-4.724953688088123e-8,0.002388034216505095,3.751792399775393e-5,-4.709805432518741e-8,0.0023883096269505005,3.7377464417580596e-5,-4.692455759226862e-8,0.002388677274146209,3.726041803036959e-5,-4.677709598428318e-8,0.0023891272588487315,3.720938268477899e-5,-4.6706986835451093e-8,0.0023896319399229,3.7262272101778856e-5,-4.6760418636059854e-8,0.0023901458647094826,3.7441849520893325e-5,-4.696572132812101e-8,0.002390611746871633,3.774354152197786e-5,-4.731844757029362e-8,0.0023909747687158945,3.81269601588696e-5,-4.777091840959034e-8,0.002391202906290385,3.8519192870702565e-5,-4.823603735908806e-8,0.0023913040660786186,3.883476948556154e-5,-4.8611270833999345e-8,0.002391328128732739,3.9006667440986484e-5,-4.881589018117696e-8,0.00239134943562406,3.90124026913742e-5,-4.882222941094568e-8,0.002391438487576229,3.8880411452464615e-5,-4.866331475848319e-8,0.0023916383708005662,3.867507853522781e-5,-4.841510309828039e-8,0.00239195590432241,3.847153998643774e-5,-4.816669872463936e-8,0.0023923668018147257,3.833341819751815e-5,-4.799408876442468e-8,0.002392828007801345,3.830015839190798e-5,-4.794511807386538e-8,0.0023932907590552147,3.8383856123547755e-5,-4.8035481865629606e-8,0.00239371096036409,3.857245714578611e-5,-4.82521178047072e-8,0.0023940559931876475,3.883616405890264e-5,-4.856042818085454e-8,0.0023943082930363074,3.9134985874419545e-5,-4.891304887908877e-8,0.0023944662220829185,3.9426309839536574e-5,-4.925889576057055e-8,0.0023945426540706474,3.967167832740828e-5,-4.955145041930234e-8,0.0023945617795173573,3.984206233309221e-5,-4.975530429415886e-8,0.002394554803373748,3.992121054124771e-5,-4.985033218746083e-8,0.00239455526447015,3.990695202747839e-5,-4.983330111917577e-8,0.002394594661569528,3.9810623353083994e-5,-4.971716322616409e-8,0.0023946988252229935,3.965513390937551e-5,-4.952874150407233e-8,0.0023948850777624304,3.9472259325648355e-5,-4.9305586614794425e-8,0.00239515997526318,3.9299439114975593e-5,-4.909233045733194e-8,0.0023955174021503037,3.9175945382072434e-5,-4.893628682300761e-8,0.002395937007932476,3.9137890421156826e-5,-4.8881533371822775e-8,0.002396383695909191,3.921131979781866e-5,-4.896047917113908e-8,0.0023968099593563576,3.9403258047878505e-5,-4.918277327372618e-8,0.002397163497613983,3.969252739918278e-5,-4.952387416863947e-8,0.0023974015854493413,4.002518309701328e-5,-4.99193026544001e-8,0.002397509675261247,4.0321678158350774e-5,-5.027326909845036e-8,0.0023975151824612907,4.049998955523513e-5,-5.048669925554299e-8,0.0023974844671535013,4.050819106081807e-5,-5.049657166197553e-8,0.002397499090668801,4.034853438152713e-5,-5.0304833087084466e-8,0.0023976229322382613,4.007667775600651e-5,-4.997738881179162e-8,0.002397879519985696,3.977656534145411e-5,-4.96140773901125E-08,0.0023982502957491016,3.9527801939768744e-5,-4.93098968993077e-8,0.002398689129527083,3.938302665345923e-5,-4.912820157919039e-8,0.002399141121851689,3.936112368628708e-5,-4.9092584839070415e-8,0.002399557122870482,3.945190021821551e-5,-4.919217196871091e-8,0.002399901681190261,3.9625470595205126e-5,-4.939240127952472e-8,0.0024001557140803276,3.9841782493496445e-5,-4.9646053324931454e-8,0.00240031603823306,4.0058414074826275e-5,-4.990243651972935e-8,0.0024003933848322214,4.02365269468108e-5,-5.0114610330648764e-8,0.0024004095942288745,4.034539638022784e-5,-5.0245052214989265e-8,0.0024003941453741816,4.0365693589607254e-5,-5.0269831914895396e-8,0.0024003801497172756,4.0291449589680024e-5,-5.018110199371788e-8,0.0024004000531943383,4.013054961443052e-5,-4.9987707246810776e-8,0.0024004814327914467,3.990360304898532e-5,-4.9713797552627094e-8,0.0024006433784475078,3.96412645683471e-5,-4.9395635374628664e-8,0.002400893829350257,3.938038444905259e-5,-4.907710595026679e-8,0.0024012280072063545,3.9159384872200925e-5,-4.88043653842751e-8,0.002401627983789423,3.901309599496099e-5,-4.861979177381442e-8,0.0024020634684160267,3.896712290496793e-5,-4.8555194568685595e-8,0.0024024942344411503,3.903172416614497e-5,-4.862420076639316e-8,0.0024028751869229125,3.919562945854613e-5,-4.881439962151439e-8,0.0024031652429550516,3.942160059336088e-5,-4.908159561584208e-8,0.0024033401183291706,3.964740296327271e-5,-4.9350792145343485e-8,0.002403406122558092,3.9796826052265784e-5,-4.952959530944614e-8,0.0024034075771528214,3.9802695108078196e-5,-4.953626629721684e-8,0.002403418663533099,3.963531471377749e-5,-4.933424264248788e-8,0.002403517483513351,3.9320414167136537e-5,-4.895377104664041e-8,0.00240375400559779,3.893213949475224e-5,-4.848339885001966e-8,0.0024041310350306584,3.856275056172833e-5,-4.803360539427687e-8,0.002404608522803643,3.8287467657906244e-5,-4.7694797328705657e-8,0.002405124618903588,3.814364277978108e-5,-4.7512463896821273e-8,0.002405618526611032,3.812961405164927e-5,-4.748570334517685e-8,0.0024060450436589023,3.821594093326314e-5,-4.7580367143404314e-8,0.002406379515424713,3.8359386346411104e-5,-4.774544974096198e-8,0.0024066165603803674,3.851416440298249e-5,-4.7926337409967924e-8,0.002406766193043988,3.863916072047892e-5,-4.8073452764022304e-8,0.0024068496190933135,3.870200493814187e-5,-4.814731567974312e-8,0.0024068954751543747,3.8681384728337856e-5,-4.812157280049673e-8,0.0024069363302526986,3.8568469741027326e-5,-4.7984907944708237e-8,0.002407005092363638,3.8367620010703626e-5,-4.774197343294295e-8,0.0024071311642991904,3.8096143001373596e-5,-4.741307791637707e-8,0.00240733648448139,3.7782662926820594e-5,-4.703219316231057e-8,0.0024076319591230843,3.746376601902139e-5,-4.664296180742872e-8,0.0024080150100535243,3.717901842199488e-5,-4.629284851707181e-8,0.0024084688627471237,3.6964873105139e-5,-4.6025986316963574e-8,0.002408963950387803,3.684822663195842e-5,-4.587550926484438e-8,0.002409461535231225,3.6840528070730786e-5,-4.585634918576009e-8,0.0024099194289861434,3.6933325176103526e-5,-4.595954827428758e-8,0.002410299639091284,3.709615129870326e-5,-4.6149286023116704e-8,0.0024105775736920194,3.727809719448076e-5,-4.636443290545415e-8,0.0024107515290991625,3.7414947503234764e-5,-4.652707276927955e-8,0.0024108494422053167,3.744332346904537e-5,-4.6559778833502254e-8,0.0024109280582808607,3.732068196771385e-5,-4.641012552830863e-8,0.0024110599588631028,3.704486401008396e-5,-4.6074593882075726e-8,0.0024113092457543352,3.666207745630117e-5,-4.560832165779338e-8,0.0024117058579894443,3.625440453889971e-5,-4.511002792620606e-8,0.00241223320394758,3.590984658345839e-5,-4.468591059086578e-8,0.0024128367433007784,3.569068786073452e-5,-4.4411566261216975e-8,0.002413447167854588,3.561679042361314e-5,-4.431182379727306e-8,0.002414003943390364,3.566857531655897e-5,-4.4364131508880796e-8,0.002414468917828636,3.5802128924618506e-5,-4.45164528407243e-8,0.0024148287689588913,3.596582802687616e-5,-4.4707042649597976e-8,0.0024150906323866994,3.6112294226174406e-5,-4.487876186163635e-8,0.0024152756199526553,3.620466985756144e-5,-4.4986732147043753e-8,0.002415412983422486,3.621886433437632e-5,-4.5001246595991545e-8,0.002415535705571361,3.614384708305006e-5,-4.490832914512481e-8,0.0024156771163272757,3.59813440871689e-5,-4.470949129805716e-8,0.0024158678193869285,3.5745351613970705e-5,-4.442116416614326e-8,0.002416132416351302,3.546120330008051e-5,-4.4073537242749924e-8,0.0024164859220694446,3.516352548830468e-5,-4.370808294460031e-8,0.00241693034169506,3.4892359785693274e-5,-4.337295078484064e-8,0.0024174524408001833,3.468719086143528e-5,-4.3115900098566585e-8,0.002418023930833043,3.457944258321774e-5,-4.2975364635792224e-8,0.002418604957254082,3.4584872568489474e-5,-4.297126534219297e-8,0.002419150952416655,3.469789771516463e-5,-4.30979643194712e-8,0.0024196218300455495,3.48898251884466e-5,-4.3321783064122653e-8,0.0024199916518604678,3.51121471359681e-5,-4.3584618304832864e-8,0.002420256595170644,3.5304987746849386e-5,-4.381393076419317e-8,0.002420439070447764,3.54098460734516e-5,-4.393818240200917e-8,0.002420585972638163,3.5384692412318615e-5,-4.39053621156832e-8,0.0024207596255476035,3.521796937688811e-5,-4.3700303187940916e-8,0.00242102169533141,3.493649672842064e-5,-4.335458114598203e-8,0.0024214136673983418,3.460203389622349e-5,-4.294254391313394e-8,0.0024219412696859064,3.4294397281599166e-5,-4.2560928350924536e-8,0.002422570997871016,3.40859042454751e-5,-4.2297873198728576e-8,0.002423241774708797,3.401825188013031e-5,-4.220478688725671e-8,0.002423886226246646,3.4092534703597756e-5,-4.2284029344064495e-8,0.002424450990286084,3.4275193790697986e-5,-4.2495842308161056e-8,0.002424907897269756,3.4513860089160096e-5,-4.277731373829174e-8,0.002425254646420478,3.475404717614502e-5,-4.306250514379759e-8,0.0024255087764721997,3.495073098604035e-5,-4.329653600382793e-8,0.0024256997145779124,3.5073628211510956e-5,-4.344214009667556e-8,0.0024258619447215263,3.510795400575972e-5,-4.3480765687463235e-8,0.002426030203565686,3.505305808974759e-5,-4.341105272837135e-8,0.0024262362674914877,3.4920608081784176e-5,-4.3246676601309794e-8,0.0024265064422872465,3.473295174654087e-5,-4.3014350394663596e-8,0.0024268589868617334,3.4521461493677566e-5,-4.275180769052857e-8,0.002427301138503399,3.432410975088323e-5,-4.250490759677728e-8,0.0024278260913050916,3.418129571204661e-5,-4.2322676945393295e-8,0.002428411097108386,3.4129280643721544e-5,-4.2249456747169526e-8,0.002429018449007624,3.4191654643649516e-5,-4.231457750259257e-8,0.002429600921945329,3.4370848029145066e-5,-4.2521942446609057e-8,0.002430111852543173,3.464306742421111e-5,-4.284362752322127e-8,0.0024305177078212167,3.4960014332554184e-5,-4.322166147588011e-8,0.0024308089963019476,3.525864256604065e-5,-4.3579634420191055e-8,0.0024310052103568625,3.54768490791095e-5,-4.3841674275576033e-8,0.0024311514832499894,3.5570331945046896e-5,-4.3953026184890535e-8,0.0024313076209347257,3.552531869349453e-5,-4.389576556823521e-8,0.0024315325810961527,3.5363327353876604e-5,-4.369491031447773e-8,0.0024318686265469066,3.513647254223246e-5,-4.341303915546696e-8,0.0024323294873825944,3.491423748049786e-5,-4.3134445579347336e-8,0.002432896167264619,3.476495141289254e-5,-4.294268271529085e-8,0.0024335222309093078,3.4737272570903575e-5,-4.2897907650809233e-8,0.0024341473034816276,3.484777220801906e-5,-4.3021473228785095e-8,0.0024347141143896403,3.5078911481254485e-5,-4.3293103813853885e-8,0.0024351828565165653,3.5387420696509406e-5,-4.3660807647483854e-8,0.0024355382696882246,3.571869639847352e-5,-4.4058284519528546e-8,0.0024357886769330174,3.602113490945862e-5,-4.442243365076725e-8,0.0024359595899447976,3.6255981177570735e-5,-4.470551282002724e-8,0.002436085616257832,3.64014787157889e-5,-4.4880378715262854e-8,0.002436203431207954,3.645261201880796e-5,-4.49403083766768e-8,0.002436346881699283,3.641860110716656e-5,-4.489600455109322e-8,0.0024365439720128446,3.631989439005647e-5,-4.477193408814986e-8,0.002436814886263786,3.618547757967348e-5,-4.460305079373914e-8,0.0024371701965660787,3.605043991849035e-5,-4.443187709405474e-8,0.0024376087810835056,3.5953118153448417e-5,-4.430512313890507e-8,0.002438115638816738,3.593080766479197e-5,-4.42685612060324e-8,0.0024386606910261066,3.601319060175138e-5,-4.43590417894124e-8,0.0024392005329820178,3.621366124796751e-5,-4.459380937231256e-8,0.0024396852406738875,3.652073535771226e-5,-4.495979153559817e-8,0.002440070792536112,3.689393707336404e-5,-4.540830813754903e-8,0.0024403341938348043,3.7269028978704966e-5,-4.586125501539923e-8,0.0024404847869948067,3.757420212930339e-5,-4.6230801286461525e-8,0.0024405649339235085,3.775253295873212e-5,-4.6446847061845124e-8,0.0024406379971211724,3.778108573313487e-5,-4.6480442904616754e-8,0.0024407684360130493,3.7678040163525975e-5,-4.635265130274541e-8,0.002441002576816896,3.749564568269083e-5,-4.6126207922268527e-8,0.0024413569455008703,3.730344562480743e-5,-4.58853778897302e-8,0.0024418164775716804,3.716885726843634e-5,-4.571251766869334e-8,0.002442341086211704,3.7141004685513786e-5,-4.566838003723965e-8,0.002442877339190302,3.72411338432493e-5,-4.5780171769525656e-8,0.002443371731515466,3.746064251142103e-5,-4.603872319654958e-8,0.002443782406429579,3.7766052234272806e-5,-4.640413953378797e-8,0.002444086872764397,3.810893879139721e-5,-4.681768347059421e-8,0.002444284388309687,3.843785498667255e-5,-4.721633349478445e-8,0.002444393232414692,3.8709012326829734e-5,-4.7546011694557105e-8,0.002444444549161754,3.889334328329184e-5,-4.7770454539860257e-8,0.002444475074792687,3.8979187827749855e-5,-4.787468720267451e-8,0.0024445206944451194,3.8971331473534686e-5,-4.7863936944109584e-8,0.0024446118314487707,3.8887888173957045e-5,-4.775982946018779e-8,0.0024447706911564257,3.8756507830295623e-5,-4.7595742185117445e-8,0.002445009754862674,3.861079858955392e-5,-4.741246632391835e-8,0.002445330792627307,3.848709249206566e-5,-4.7254353116952106e-8,0.0024457239072774276,3.84210898084392e-5,-4.7165331531864033e-8,0.002446166646694304,3.844355610942536e-5,-4.71836986496915e-8,0.002446624062616858,3.857428817952799e-5,-4.733464480752854e-8,0.0024470514934107203,3.88144481598043e-5,-4.762062321108293e-8,0.002447402125327943,3.913928762815128e-5,-4.801212199106996e-8,0.0024476400881559847,3.9495739935443694e-5,-4.8444475535150416e-8,0.0024477561339314394,3.981049166716775e-5,-4.8827712071902615e-8,0.002447778077693695,4.001077266348328e-5,-4.9072160123498955e-8,0.0024477670483197492,4.005148747549024e-5,-4.9121840338880554e-8,0.0024477974812433497,3.993465087268592e-5,-4.897832831402965e-8,0.002447929926440992,3.9709268450711776e-5,-4.870064967828901e-8,0.0024481909223161946,3.9451954414470326e-5,-4.838174394154787e-8,0.0024485684783898502,3.923993501418732e-5,-4.811575988446022e-8,0.0024490213965491316,3.9129377699806304e-5,-4.797180052202577e-8,0.0024494948154261892,3.91451644029732e-5,-4.798138431887394e-8,0.002449935069477873,3.928119976470324e-5,-4.8138482471436045e-8,0.002450300397506881,3.9507323269912974e-5,-4.840749035993413e-8,0.0024505668157711494,3.9779044908857327e-5,-4.8734735279841313E-08,0.0024507297637555462,4.004759573096723e-5,-4.906061161920809e-8,0.002450802394303154,4.02688488745371e-5,-4.9330599704006644e-8,0.0024508113644507706,4.0410128173367605e-5,-4.95038655686505e-8,0.002450791125069385,4.0454212555310635e-5,-4.955844487476108e-8,0.0024507778465312773,4.040035570468197e-5,-4.949267054201453e-8,0.0024508040198822152,4.026270069107783e-5,-4.932327950223557e-8,0.0024508944505534447,4.006688255862525e-5,-4.908122347286046e-8,0.0024510638634689867,3.984580917053899e-5,-4.880648823794057e-8,0.00245131584498336,3.963541528939374e-5,-4.854295462312273e-8,0.002451642653661857,3.9470681141633724e-5,-4.833364518839405e-8,0.002452025536044154,3.938176083843848e-5,-4.8216083300638214e-8,0.002452435488543121,3.938977033584164e-5,-4.8217107227132724e-8,0.002452835048062748,3.950174696583605e-5,-4.8346481745672895e-8,0.0024531824507044967,3.970500384005907e-5,-4.858962496972789e-8,0.0024534396241559695,3.9962702831889606e-5,-4.890182990265696e-8,0.0024535843268946146,4.021443150526203e-5,-4.920880941676828e-8,0.002453623652929858,4.0386636134526066e-5,-4.9419622792017125e-8,0.002453601452891794,4.041499005959166e-5,-4.945444695873122e-8,0.0024535904575645672,4.0272043808040254e-5,-4.9278768855135644e-8,0.002453667088416081,3.9984366591700615e-5,-4.892445528448971e-8,0.0024538804961186404,3.9625472135700606e-5,-4.8481018851177726e-8,0.002454234041076148,3.9286627001372286e-5,-4.8059919577965076e-8,0.002454688758937021,3.90430339964667e-5,-4.7753378723272426e-8,0.002455182859858328,3.893307901809375e-5,-4.760913419343073e-8,0.0024556538362148746,3.895585698194267e-5,-4.762729962876685e-8,0.0024560537286482022,3.908100050787737e-5,-4.777201985779246e-8,0.00245635559786168,3.92623565237223e-5,-4.7987768345426784e-8,0.002456553543520675,3.945013089553443e-5,-4.821391608652092e-8,0.002456659304914327,3.9599666210168044e-5,-4.839543997652059e-8,0.002456697551274787,3.9677063676223765e-5,-4.849000855734107e-8,0.002456700822614684,3.966238759049165e-5,-4.847222180997126e-8,0.0024567044573505052,3.9550907364328136e-5,-4.833540821334541e-8,0.0024567417680072287,3.935256550822404e-5,-4.8091109193474636e-8,0.0024568398052084747,3.9089819952275556e-5,-4.776643242859904e-8,0.002457016102034005,3.879409971555748e-5,-4.739964644423014e-8,0.0024572767266246858,3.850135084065896e-5,-4.7034702557923994e-8,0.002457615714144817,3.8247292949526414e-5,-4.671548886753261e-8,0.002458015719767934,3.806281830374309e-5,-4.648030512056859e-8,0.0024584497093368225,3.7969709899505705e-5,-4.6356668032574766e-8,0.0024588835950892117,3.797672416493626e-5,-4.6356402548602995e-8,0.002459280019112911,3.8076035091713856e-5,-4.647098884390965e-8,0.0024596039507214372,3.8240450757803655e-5,-4.666776031810568e-8,0.0024598307142160007,3.842294852242427e-5,-4.68890281670926e-8,0.002459955918353923,3.8561282527527495e-5,-4.7057687283657186e-8,0.0024600044256263562,3.85906258738798e-5,-4.7093002809037085e-8,0.0024600323640595525,3.846469351560399e-5,-4.693699010582562e-8,0.002460115198327215,3.817888591278212e-5,-4.658318142014719e-8,0.0024603211513315733,3.778139333481038e-5,-4.609033001301854e-8,0.0024606816896058582,3.7360118141523624e-5,-4.5566248750844804e-8,0.0024611773581020993,3.700873869629158e-5,-4.5126111329188663e-8,0.0024617480565587665,3.679136890764092e-5,-4.484915535672109e-8,0.0024623194040428297,3.6725241793431914e-5,-4.4757458521259293e-8,0.002462828313114861,3.6785610286324895e-5,-4.4821776764596e-8,0.0024632368323780508,3.692313753770688e-5,-4.49825480110503e-8,0.002463533911415987,3.7081973038857536e-5,-4.517174974987359e-8,0.002463730207416001,3.72123954530806e-5,-4.5328262829285335e-8,0.0024638508339381053,3.727738907944816e-5,-4.540602228952397e-8,0.0024639287406243806,3.725496815222289e-5,-4.537712390347134e-8,0.002463999440178538,3.7138246844026674e-5,-4.523220853693909e-8,0.002464096769834068,3.693441043162565e-5,-4.4979410248424785e-8,0.002464249278477507,3.6662920271676045e-5,-4.464221452771284e-8,0.0024644771058909905,3.6352892349154964e-5,-4.4256185173269244e-8,0.0024647894963774355,3.60394813223482e-5,-4.3864446992286476e-8,0.00246518333004217,3.575928664507124e-5,-4.3512032388348086e-8,0.00246564308966862,3.5545192829730305e-5,-4.323961698689231e-8,0.002466142462746481,3.54212599682058e-5,-4.30773347216381e-8,0.0024666475561435836,3.539825611996659e-5,-4.303928925890125e-8,0.002467121549800276,3.5470424064565755e-5,-4.311941218583528e-8,0.002467530510301026,3.5614038369783264e-5,-4.328936880925462e-8,0.0024678501018424014,3.578830836147025e-5,-4.3499317664747304e-8,0.00246807277205011,3.5939557401127685e-5,-4.368284640476247e-8,0.0024682141340358534,3.6009986170699735e-5,-4.3767824546787344e-8,0.002468315806348312,3.595167953042106e-5,-4.369398422338407e-8,0.002468440719277613,3.574403825458124e-5,-4.343483114258189e-8,0.0024686576285004418,3.5408406295791984e-5,-4.301598790135291e-8,0.002469016756628685,3.5009868675168896e-5,-4.251749277816247e-8,0.002469527016305481,3.4639085816369505e-5,-4.2051331770138575e-8,0.0024701491272457075,3.437918303108398e-5,-4.172053655964463e-8,0.0024708107727132163,3.4275108324639473e-5,-4.1581346163947136e-8,0.0024714349391305145,3.432221330845508e-5,-4.162900742123513e-8,0.0024719649634269477,3.447673339527891e-5,-4.181047415170179e-8,0.0024723756773897968,3.4677347990773343e-5,-4.2050733510056084e-8,0.0024726711706196352,3.486498141779451e-5,-4.227704642717137e-8,0.002472875776800631,3.499457801076819e-5,-4.243345755026598e-8,0.002473024311147267,3.5039164456257024e-5,-4.248596282344877e-8,0.002473154485424879,3.49892258455584e-5,-4.24219893311207e-8,0.0024733018836487117,3.485023256564978e-5,-4.224757508831041e-8,0.0024734966693373177,3.4639859686924084e-5,-4.198405931463602e-8,0.002473761122223743,3.4385249288497285e-5,-4.166470061647262e-8,0.0024741075410927692,3.412005527399114e-5,-4.1330957835760266e-8,0.0024745365035125336,3.388081280598191e-5,-4.1027956557272016e-8,0.0024750358991933777,3.3702298329276224e-5,-4.0798783384882296e-8,0.002475581446443766,3.361205682415149e-5,-4.0677810154140694e-8,0.0024761393094790735,3.362488283309667e-5,-4.068393655070341e-8,0.00247667099923248,3.3738415010136826e-5,-4.081509111115514e-8,0.0024771401592741794,3.393112591255991e-5,-4.104553604679316e-8,0.0024775202300596727,3.4163782098038836e-5,-4.132736396042357e-8,0.0024778015552186553,3.4384841805604154e-5,-4.15968981141725e-8,0.002477996355230064,3.453957481857277e-5,-4.178587242689799e-8,0.002478139925461257,3.4582095835946386e-5,-4.183646089222978e-8,0.0024782863608294597,3.448855008036613e-5,-4.171792894077942e-8,0.002478497599215119,3.426810101996982e-5,-4.1440616533293496e-8,0.002478826423475806,3.3966768621773196e-5,-4.106097101147728e-8,0.002479297655651806,3.365920201414745e-5,-4.067146491268234e-8,0.0024798956470742607,3.3427359889743966e-5,-4.0374142208359564e-8,0.002480566263107198,3.333281657692773e-5,-4.0246164098665086e-8,0.0024812348815230548,3.339569240715765e-5,-4.031349099874403e-8,0.002481832069138389,3.359098154088289e-5,-4.054608293176884e-8,0.0024823140828337882,3.3862509899205475e-5,-4.087496962472572e-8,0.0024826701499891905,3.4144843169478624e-5,-4.121926049669797e-8,0.0024829174589391183,3.438196398751778e-5,-4.150927531351717e-8,0.002483090231395934,3.453716218275256e-5,-4.169890994247633e-8,0.0024832289273681676,3.459479555529096e-5,-4.1768010969739914e-8,0.0024833725099405357,3.455739202683464e-5,-4.171898971311369e-8,0.002483553953461178,3.444130953944551e-5,-4.1571586234288615e-8,0.002483797896582137,3.42726872143246e-5,-4.135789466565913e-8,0.002484119250717028,3.408404982664835e-5,-4.111811949072816e-8,0.0024845220544084173,3.3911157045767064e-5,-4.08966177191401e-8,0.0024849984608592214,3.378942234513219e-5,-4.073744810316272e-8,0.002485528319030998,3.37493393541924e-5,-4.0678740705520224e-8,0.0024860802611576817,3.381090099062003e-5,-4.07458217081001e-8,0.002486615292822404,3.3977887022200906e-5,-4.094410565553709e-8,0.0024870933615432594,3.4233776242617746e-5,-4.1253884823212716e-8,0.0024874822433588704,3.454145160287273e-5,-4.162972775740252e-8,0.0024877666980437367,3.4848325612800404e-5,-4.200659476353093e-8,0.002487954948091704,3.5096872718110185e-5,-4.2312767159825944e-8,0.0024880797904155523,3.523845842873798e-5,-4.248704298833028e-8,0.002488193043039279,3.5246843277377304e-5,-4.249570636640487e-8,0.0024883539592743067,3.512738494103619e-5,-4.234426909230887e-8,0.0024886140602875923,3.49187025600563e-5,-4.207987071532803e-8,0.002489002194927896,3.468515900952789e-5,-4.178219564842183e-8,0.0024895143834379584,3.450085337149065e-5,-4.1543686661381805e-8,0.002490112692358687,3.4428839747837344e-5,-4.144362746866002e-8,0.002490735095733774,3.4502254176917696e-5,-4.152441444489307e-8,0.002491313820334456,3.47148501990305e-5,-4.177943206499539e-8,0.0024917952057646542,3.5025110867509906e-5,-4.21578484386859e-8,0.002492153108185882,3.537166319265242e-5,-4.2583614770799746e-8,0.0024923915653697563,3.569250545655623e-5,-4.297938359576452e-8,0.0024925381077774505,3.594019773552308e-5,-4.328553882965522e-8,0.0024926327298874706,3.608907519420701e-5,-4.346936640882342e-8,0.0024927174854313663,3.6135139860801745e-5,-4.352511605516019e-8,0.0024928293045150462,3.6091731116077385e-5,-4.3468759712982866e-8,0.0024929962078651933,3.598404077227055e-5,-4.3331234070503576e-8,0.002493235828937878,3.584424198247867e-5,-4.315237723752643e-8,0.002493554988497319,3.5707654226319e-5,-4.297612739315671e-8,0.002493949475402431,3.560950550536974e-5,-4.284648196073154e-8,0.002494403814902926,3.558150409860973e-5,-4.2803251027824265e-8,0.0024948914829334063,3.5647523756435825e-5,-4.287670742727347e-8,0.0024953765911673344,3.581825773142045e-5,-4.308089582356996e-8,0.0024958182908375675,3.608573040867354e-5,-4.340666705533066e-8,0.0024961786512342457,3.641986140806195e-5,-4.381718846972339e-8,0.0024964332001036105,3.677013333856981e-5,-4.424981283072611e-8,0.002496580985875428,3.707466125980302e-5,-4.4627260595163124e-8,0.00249664942189288,3.7275972463325826e-5,-4.487730097257107e-8,0.002496690103679088,3.733875515066651e-5,-4.4954995613220536e-8,0.0024967655193018647,3.726250067358835e-5,-4.485864320894178e-8,0.002496931013734003,3.7083456871196986e-5,-4.46324458229267e-8,0.0024972186148263043,3.686490845186074e-5,-4.435466169172905e-8,0.002497628180291189,3.6679510733870065e-5,-4.411582351619956e-8,0.002498128079111284,3.658972340409257e-5,-4.3994441199673844e-8,0.0024986644042137227,3.663208106121771e-5,-4.4037246854020054e-8,0.0024991755753180833,3.680926861936187e-5,-4.4248953740883185e-8,0.002499608064555356,3.709163133072151e-5,-4.459370765840227e-8,0.0024999288144117358,3.742710477725366e-5,-4.500715060851872e-8,0.0025001310412585205,3.775603780312682e-5,-4.5414811573711545e-8,0.0025002324917523817,3.8025992028683344e-5,-4.57506862741052e-8,0.002500267909808244,3.82021913744237e-5,-4.5970516699009e-8,0.0025002791334092648,3.827161818741498e-5,-4.6057156152074936e-8,0.002500306150636883,3.824142696912959e-5,-4.601877616789812e-8,0.002500381023813219,3.813396254515294e-5,-4.588273798227383e-8,0.002500524917925695,3.7980819109320463e-5,-4.5688184530668866e-8,0.002500747387946368,3.781755623906785e-5,-4.547941847511398e-8,0.0025010467943652028,3.7679593748579237e-5,-4.530076608806616e-8,0.002501411000812327,3.759894473403009e-5,-4.5192519652786e-8,0.002501818061535664,3.76010451065458e-5,-4.518700349120371e-8,0.002502237249305373,3.7700983349453346e-5,-4.530383549196263e-8,0.002502631391630373,3.789891117462528e-5,-4.5544060670952407e-8,0.0025029618245448393,3.817544639615828e-5,-4.588418136956523e-8,0.0025031968555852867,3.8489391629367015e-5,-4.6273070203581374e-8,0.002503322900130418,3.878132383082006e-5,-4.6636329847159344e-8,0.0025033544659702643,3.898595666221756e-5,-4.689179674409995e-8,0.0025033366866835474,3.9052160624291637e-5,-4.6974744631872444e-8,0.002503335424761968,3.8963286204251026e-5,-4.686346369928086e-8,0.002503416415545243,3.874697513072474e-5,-4.659163332249408e-8,0.002503622458507168,3.846773122092755e-5,-4.623914977805023e-8,0.0025039595976610314,3.820530008492874e-5,-4.590530882256746e-8,0.002504397631776516,3.802946606966512e-5,-4.5677537488936655e-8,0.002504882299547712,3.798169372682445e-5,-4.560852435839345e-8,0.002505352221421315,3.806826004220745e-5,-4.570743517294879e-8,0.00250575432324309,3.8263797822131395e-5,-4.59439244261933e-8,0.0025060542893460607,3.852145546614233e-5,-4.6260390338084265e-8,0.002506241100184328,3.878568465963214e-5,-4.658768272125083e-8,0.0025063261680084966,3.900454144029845e-5,-4.686046599932783e-8,0.0025063382859264074,3.913932359754488e-5,-4.702948014495108e-8,0.0025063160483484925,3.917014569025023e-5,-4.706882713849625e-8,0.002506299694580531,3.9097007570934184e-5,-4.697758835500036e-8,0.0025063241642786917,3.893705066219002e-5,-4.677655197485161e-8,0.002506414458106024,3.8719469291395064e-5,-4.650187612960767e-8,0.002506583529031959,3.847966713294664e-5,-4.6197729527279165e-8,0.0025068322231723375,3.825390939784268e-5,-4.5909552105830005e-8,0.00250715042643049,3.8075081039815325e-5,-4.5678747389959236e-8,0.002507518671035578,3.79694315028609e-5,-4.553864588391083e-8,0.002507909881434134,3.7953757863868274e-5,-4.551099211154035e-8,0.0025082914429322,3.8032479762118567e-5,-4.560219705504129e-8,0.0025086283062298424,3.819441369790588e-5,-4.5799089344806656e-8,0.002508888222288745,3.8409920504514224e-5,-4.6065065644875405e-8,0.002509049867274366,3.863051042059274e-5,-4.633938175836797e-8,0.002509113004638694,3.879425510226927e-5,-4.654391267553016e-8,0.0025091068429147767,3.883993594289078e-5,-4.6601084959132783e-8,0.0025090898042000585,3.872875934821506e-5,-4.6461387254399373e-8,0.002509134996273683,3.846495952331999e-5,-4.6129379088556667e-8,0.002509303823785431,3.810176136963081e-5,-4.567118163005868e-8,0.0025096206611317003,3.77249340788089e-5,-4.519386918014874e-8,0.0025100635025889603,3.742094334698776e-5,-4.480570179737146e-8,0.0025105750725739227,3.7247279761174246e-5,-4.4579149479260436e-8,0.0025110856597778002,3.721891833235642e-5,-4.4533963341258614e-8,0.0025115347336513087,3.7312355209207396e-5,-4.464198908935113e-8,0.0025118837717088426,3.7479672497395944e-5,-4.4844363555259744e-8,0.0025121197805155586,3.766434463552293e-5,-4.507092241835546e-8,0.0025122524606316582,3.781403239390384e-5,-4.5256039989766344e-8,0.002512308218517646,3.788897265948401e-5,-4.534921710684068e-8,0.002512323198993744,3.7866377431753216e-5,-4.532087455967344e-8,0.0025123364352792246,3.774164049515155e-5,-4.5164209733579505e-8,0.002512383722153255,3.752690440451212e-5,-4.4893662222274306e-8,0.0025124927690744884,3.724752495244522e-5,-4.454058376296237e-8,0.0025126800686300593,3.6937187041074546e-5,-4.4147073781900625e-8,0.002512949640805612,3.663249847498581e-5,-4.3759102263850506e-8,0.0025132935154346414,3.636784559588725e-5,-4.3419995601533096e-8,0.0025136935134270817,3.6171127440481755e-5,-4.3165098457630535e-8,0.002514123766723244,3.606055777639336e-5,-4.301781026749884e-8,0.002514553618955688,3.604231707921164e-5,-4.298663815376317e-8,0.0025149508839445193,3.610876316223164e-5,-4.306282715704458e-8,0.0025152857940081257,3.6237122105096005e-5,-4.321846926867821e-8,0.0025155362609611655,3.6389174493579715e-5,-4.3405830751730746e-8,0.002515694790395706,3.651350376824656e-5,-4.356001367114698e-8,0.002515776049335391,3.6552764092910476e-5,-4.360815615449484e-8,0.0025158217306482694,3.64579617376964e-5,-4.348766977365181e-8,0.002515896936537497,3.620833883698536e-5,-4.317158041654697e-8,0.002516073071847446,3.5828669318152446e-5,-4.269046581534293e-8,0.002516399987719169,3.539060604592482e-5,-4.213413246847748e-8,0.0025168814606322987,3.499021840014745e-5,-4.162331415721513e-8,0.0025174707936113064,3.4710531005774946e-5,-4.126263149227772e-8,0.002518090589616577,3.459078644678115e-5,-4.1102057661954364e-8,0.002518663524727177,3.4618912918017596e-5,-4.112741399925282e-8,0.0025191361740298083,3.474582741761788e-5,-4.1278096176040484e-8,0.0025194875406559848,3.490802432070915e-5,-4.147510457868247e-8,0.002519725292742549,3.504638962014763e-5,-4.16444050552658e-8,0.0025198766141857846,3.5116951628882e-5,-4.173036446018124e-8,0.002519978706172601,3.509468993429849e-5,-4.1700694202266914e-8,0.002520071130482626,3.497310385097045e-5,-4.154621540106111e-8,0.002520190252699242,3.4761794687652565e-5,-4.1278135639874127e-8,0.0025203652372844786,3.448316626617987e-5,-4.092409555262571e-8,0.002520615191656812,3.416849468288395e-5,-4.05232510677893e-8,0.002520947440465501,3.385345763496335e-5,-4.0120551152513905e-8,0.002521357059662189,3.3573332103171066e-5,-3.976057689732734e-8,0.0025218278023055253,3.335822588172072e-5,-3.9481488035551096e-8,0.0025223344083919984,3.3228896480038676e-5,-3.930979257938309e-8,0.0025228460215779803,3.319367073788616e-5,-3.925652251261835e-8,0.0025233303087924958,3.324669892834196e-5,-3.9315015622613785e-8,0.0025237579626117535,3.336760095667987e-5,-3.946031753109398e-8,0.0025241074151963775,3.352256518500154e-5,-3.9650309128366536e-8,0.0025243697315655363,3.366716014331096e-5,-3.982900185191263e-8,0.002524553460207322,3.375163915239177e-5,-3.9933128485974816e-8,0.002524688300114605,3.37298851909107e-5,-3.9903559505638475e-8,0.002524824998114826,3.357240651657453e-5,-3.970202211903166e-8,0.0025250277665400896,3.328120777325597e-5,-3.933021967054159e-8,0.002525356611076024,3.289990453199541e-5,-3.8842803606554595e-8,0.0025258428381231134,3.250914558990305e-5,-3.834160036262284e-8,0.0025264698957574395,3.220189906693548e-5,-3.794432342774024e-8,0.0025271741566565867,3.2047197639093385e-5,-3.773873488953271e-8,0.002527868930050737,3.206296769477658e-5,-3.7748283537389005e-8,0.002528477957775852,3.2214078628227146e-5,-3.792951338789108e-8,0.0025289589671146006,3.243333093220877e-5,-3.8198347470684486e-8,0.002529308244893737,3.2649160481611736e-5,-3.8464834618929027e-8,0.002529551044230285,3.280554245702909e-5,-3.8658136766423037e-8,0.0025297276422903844,3.286996887218826e-5,-3.873662679239773e-8,0.0025298816375502052,3.283279972249427e-5,-3.8687266747971134e-8,0.002530052440279624,3.2702708511500886e-5,-3.852013964263886e-8,0.0025302712732322313,3.250144171865661e-5,-3.8262077101730963E-08,0.002530559210242333,3.22591991158146e-5,-3.7950935413685944e-8,0.002530926148178654,3.2010602838034795e-5,-3.7630466201304596e-8,0.002531370351391248,3.1790798148834993e-5,-3.7345270529438355e-8,0.0025318786907376338,3.1631370951251876e-5,-3.713553615551818e-8,0.0025324279262051433,3.155608559611767e-5,-3.703162366365894e-8,0.0025329874164920214,3.1576901848478516e-5,-3.704907123537745e-8,0.0025335233363896095,3.1691081346079224e-5,-3.71849683887019e-8,0.002534004013295205,3.1880164541897305e-5,-3.741660475396124e-8,0.0025344056658638974,3.211134266810114e-5,-3.770302889521404e-8,0.0025347176716889862,3.234141683476799e-5,-3.798981805268735e-8,0.0025349464931195965,3.25231453918205e-5,-3.821692596727692e-8,0.002535117468766687,3.261356425395861e-5,-3.832919965284332e-8,0.002535273522037362,3.25837585549067e-5,-3.828894828785741e-8,0.0025354694854592633,3.242890013057747e-5,-3.808899818124254e-8,0.0025357608919522735,3.217582413424165e-5,-3.776263794934066e-8,0.002536187666940124,3.1883621764644e-5,-3.738458087106923e-8,0.0025367568259437178,3.1632385404099197e-5,-3.7056717765237276e-8,0.0025374327525164407,3.1499190159307474e-5,-3.687752844703763e-8,0.0025381439662942977,3.152925181564535e-5,-3.690529396896161e-8,0.00253880714969785,3.1717495544648184e-5,-3.7134493175846014e-8,0.002539357012067217,3.201212311537006e-5,-3.7500132915228656e-8,0.002539765928854451,3.233760649167408e-5,-3.79067823651572e-8,0.0025400453147970577,3.2622583246552875e-5,-3.82638918563021e-8,0.0025402331112333227,3.281872156862578e-5,-3.850972952935261e-8,0.002540377487382661,3.290621872055572e-5,-3.8618458257282727e-8,0.002540524155092487,3.288979390474908e-5,-3.8595246105451726e-8,0.0025407093934606078,3.279105867884921e-5,-3.846681028316092e-8,0.002540957537634892,3.2641231271875194e-5,-3.827233474111451e-8,0.002541280815381751,3.247562338960235e-5,-3.805651702208651e-8,0.0025416799467947535,3.232966235413645e-5,-3.786445609457888e-8,0.002542144857740274,3.223562798311164e-5,-3.7737407372711096e-8,0.002542655579590631,3.221938662051105e-5,-3.7708565661377785e-8,0.0025431838362320446,3.229680174430522e-5,-3.779849423590047e-8,0.0025436960054889923,3.247013233511464e-5,-3.8010564296692125e-8,0.00254415790798978,3.272542643389036e-5,-3.8327620226833e-8,0.002544541182956549,3.303226997284184e-5,-3.871155421654684e-8,0.0025448301444755037,3.334704611861932e-5,-3.9107270584671315e-8,0.0025450273211040327,3.3620069672829226e-5,-3.9451574837501164e-8,0.002545155729501141,3.380568399136757e-5,-3.968592063249876e-8,0.002545256556630443,3.387319471601984e-5,-3.977037692107729e-8,0.0025453820443540687,3.3816009067509984e-5,-3.969547432241733e-8,0.002545584452323269,3.365650342624907e-5,-3.948871602576002e-8,0.0025459029162299583,3.344455147949948e-5,-3.9213016496428415e-8,0.0025463510522096334,3.324840420752361e-5,-3.895529090102889e-8,0.002546909232956193,3.3138246514345544e-5,-3.8805530645937213e-8,0.002547525817875957,3.31656565561402e-5,-3.883045961997576e-8,0.002548129745697608,3.334578366524815e-5,-3.9050513834874766e-8,0.002548651901131051,3.3650693689135876e-5,-3.9431034299941284e-8,0.00254904685669721,3.4018656743914485e-5,-3.989388291545174e-8,0.002549305056062235,3.4375770534290136e-5,-4.034493649891447e-8,0.002549450755241978,3.465939649203068e-5,-4.070401123079711e-8,0.0025495291586907494,3.4833241697630345e-5,-4.092420182378461e-8,0.002549590687379239,3.4890489219274215e-5,-4.099602575860678e-8,0.0025496789205144556,3.4848031855415884e-5,-4.0940251920067316e-8,0.0025498244612649898,3.473730209237217e-5,-4.079637327911076e-8,0.0025500436032672657,3.459585033605535e-5,-4.061196445682029e-8,0.002550339547154352,3.4461308211710806e-5,-4.0434988555481746e-8,0.0025507043433619027,3.4367523260307965e-5,-4.030880973480197e-8,0.0025511206731693597,3.4341897944161364e-5,-4.0268729945377805e-8,0.002551563424104876,3.4402972367080165e-5,-4.03388608138628e-8,0.002552001606617659,3.4557690980306746e-5,-4.0528610973922175e-8,0.002552401461273141,3.479848664498499e-5,-4.082892216673804e-8,0.0025527314827823774,3.510120673609544e-5,-4.120952912256527e-8,0.002552969364218686,3.542565410114826e-5,-4.161951137566323e-8,0.0025531095580215266,3.572058968524942e-5,-4.19935413975739e-8,0.002553168729760865,3.59339104478195e-5,-4.226480110017664e-8,0.0025531858573809097,3.602631744383978e-5,-4.238244913932361e-8,0.0025532150611217693,3.598419299693054e-5,-4.232817322961466e-8,0.002553312233386756,3.582648549097322e-5,-4.212517282076237e-8,0.0025535195183206613,3.560220174300033e-5,-4.1835212060668614e-8,0.002553852830502855,3.537869695525301e-5,-4.15439349344679e-8,0.0025542964378125308,3.5224255096316406e-5,-4.133880357556166e-8,0.002554806195557747,3.519005643611671e-5,-4.1286055750094206e-8,0.002555320571266334,3.5296537354939525e-5,-4.141303722830442e-8,0.0025557766128750385,3.552799805828805e-5,-4.170091750744843e-8,0.002556126465171574,3.583732608559857e-5,-4.209034923582469e-8,0.002556349360987087,3.615973932622834e-5,-4.249882289419115e-8,0.0025564551410904254,3.6431100822784126e-5,-4.284408179364047e-8,0.0025564785276809823,3.6604393384032696e-5,-4.306534222497807e-8,0.002556467160589559,3.6658984478097046e-5,-4.3135357610844236e-8,0.002556468510402671,3.660096821231846e-5,-4.306106582894111e-8,0.0025565200544311623,3.645675748916501e-5,-4.28755593884766e-8,0.0025566445046864778,3.626394236750845e-5,-4.262649174123844e-8,0.0025568493925952245,3.606285126280341e-5,-4.236530656389189e-8,0.002557129168848333,3.589047078361781e-5,-4.213942711868888e-8,0.0025574680949682657,3.5776750212926264e-5,-4.1987475893609535e-8,0.0025578429268030643,3.574244515459497e-5,-4.193647233080398e-8,0.002558225197975276,3.579750560221392e-5,-4.1999734310573656e-8,0.0025585835602312756,3.593934241195524e-5,-4.217460204810126e-8,0.002558887016647417,3.61509584570488e-5,-4.2439939751589254e-8,0.0025591098618594843,3.639984373749989e-5,-4.2754572922321514e-8,0.002559238497448476,3.663948624180955e-5,-4.305908526809104e-8,0.002559278835866122,3.6815737799850185e-5,-4.3283910146574906e-8,0.002559261046831353,3.68791601038681e-5,-4.336518833602966e-8,0.0025592372774527606,3.680125222475687e-5,-4.3265665007869605e-8,0.0025592697003744484,3.658826729490232e-5,-4.299250430234186e-8,0.0025594113266689754,3.6284623802832374e-5,-4.260177686092147e-8,0.0025596874257284618,3.596177093402923e-5,-4.218437109225698e-8,0.0025600863540812774,3.569620677368294e-5,-4.183807532178788e-8,0.002560563687246403,3.554623400075656e-5,-4.1637989758230514e-8,0.002561056690233244,3.553661609585996e-5,-4.161684553067492e-8,0.0025615023865055877,3.565507989845713e-5,-4.176023644906828e-8,0.002561853048804872,3.585927599621287e-5,-4.20151041647804e-8,0.0025620856129585094,3.6090108860365954e-5,-4.230643641429664e-8,0.0025622040446008454,3.628699041834416e-5,-4.255663518033421e-8,0.0025622353918832905,3.6401300490328786e-5,-4.270283147309331e-8,0.0025622213473997326,3.6405401558346106e-5,-4.2708678956345274e-8,0.0025622078408738705,3.6295813489391095e-5,-4.256872173084837e-8,0.0025622353848293975,3.609068615788058e-5,-4.230540259760305e-8,0.00256233232102081,3.582322550250386e-5,-4.1960772840867707e-8,0.002562511863801732,3.553353735483984e-5,-4.158605612885912e-8,0.0025627725248878294,3.526111693837438e-5,-4.123196242121757e-8,0.00256310070883618,3.503928727808233e-5,-4.0941482037820396e-8,0.0025634741471409566,3.4891828381175004e-5,-4.074551346356165e-8,0.002563865248603042,3.483125361276283e-5,-4.066063228427299e-8,0.002564244075042713,3.4857926898380974e-5,-4.068793102758481e-8,0.002564581202623444,3.495942454822687e-5,-4.0812119542659516e-8,0.00256485109943431,3.5110048036088305e-5,-4.100075191629571e-8,0.0025650367242128005,3.527118210779312e-5,-4.120451556732618e-8,0.002565135498337338,3.539413055019303e-5,-4.136076151439963e-8,0.0025651654120114266,3.5427525351978796e-5,-4.1403038721833427e-8,0.0025651680412939974,3.533045146974794e-5,-4.127809559426407e-8,0.0025652038004362098,3.508913423679075e-5,-4.096749224333056e-8,0.0025653363340437958,3.472992631684516e-5,-4.050439181559414e-8,0.0025656093621240807,3.431861032240273e-5,-3.997271395936973e-8,0.0025660270415399614,3.394124366569468e-5,-3.9482630402027894e-8,0.0025665499166005316,3.367374522340637e-5,-3.913169321930131e-8,0.0025671094737676993,3.3555941288687166e-5,-3.8971649823626466e-8,0.0025676326398133926,3.358238507761676e-5,-3.899658257921173e-8,0.00256806353887396,3.3710715096302974e-5,-3.915332696323073e-8,0.0025683748955028416,3.387946611070678e-5,-3.936392740831083e-8,0.0025685688159335627,3.402630843529469e-5,-3.954873741392243e-8,0.0025686706264498697,3.410151913115822e-5,-3.96436201055269e-8,0.002568719735740128,3.4075375284090386e-5,-3.9609586863852165e-8,0.0025687602388208127,3.3940249039981586e-5,-3.9435794394587893e-8,0.002568832735617296,3.370870760914346e-5,-3.913743671001868e-8,0.0025689681542897694,3.340879250968684e-5,-3.874991257803349e-8,0.0025691840551694215,3.307763210742136e-5,-3.832068947589197e-8,0.002569483538443005,3.275462578485857e-5,-3.790047634512565e-8,0.00256985645494049,3.2475309573827486e-5,-3.753521316052912e-8,0.0025702822795653883,3.226668899010827e-5,-3.725997236190257e-8,0.002570733820216625,3.214437650152126e-5,-3.70952464417701e-8,0.002571181033117111,3.211133565934368e-5,-3.70453424363933e-8,0.0025715946013054125,3.215772517602418e-5,-3.7098167201791944e-8,0.002571949318347555,3.226144137496881e-5,-3.722583343084536e-8,0.002572227570996682,3.2389277195387017e-5,-3.738598474604562e-8,0.0025724233208959243,3.249913626791757e-5,-3.752447594345222e-8,0.002572546572517723,3.2544481248383096e-5,-3.7581027423136185e-8,0.002572627105263867,3.248253008845186e-5,-3.7499865346558056e-8,0.0025727146254667485,3.2286766565557764e-5,-3.7246045798024494e-8,0.0025728713746888203,3.196144702345607e-5,-3.6824362906102526e-8,0.0025731546573224077,3.1551122395760685e-5,-3.6291732875808416e-8,0.0025735930611439093,3.113531128318894e-5,-3.5750349486020505e-8,0.0025741686669498156,3.080383281342957e-5,-3.5315932671875985e-8,0.002574818793527538,3.0622158898999846e-5,-3.5073179334983326e-8,0.002575459250901792,3.0606384083367444e-5,-3.5043561582390667e-8,0.0025760157713347175,3.072183306088944e-5,-3.518340880366333e-8,0.0025764462366678763,3.0902486165110045e-5,-3.5408643786040035e-8,0.0025767458975593516,3.107681621716422e-5,-3.562773879707096e-8,0.0025769394739584782,3.118739906047621e-5,-3.5766760816977004e-8,0.0025770682803444704,3.12001551469743e-5,-3.5781267605868635e-8,0.0025771782767451306,3.110525759781823e-5,-3.565767914468704e-8,0.0025773113662062915,3.091339865537416e-5,-3.540879179965687e-8,0.0025774999609862632,3.065026064735654e-5,-3.5066958787603745e-8,0.0025777640357551542,3.035060945700293e-5,-3.4676643389330934e-8,0.002578110043284982,3.0052507451921462e-5,-3.428694627394564e-8,0.002578531397055513,2.979192628154181e-5,-3.3944523195161236e-8,0.0025790103290381297,2.9598057935518227e-5,-3.368738209113566e-8,0.0025795209096909134,2.948965519446499e-5,-3.354007538112134e-8,0.002580032896739608,2.94727630782897e-5,-3.351077440578792e-8,0.0025805159234916397,2.954000878094914e-5,-3.3590389005577315e-8,0.002580943592558336,2.9671294779383406e-5,-3.375345201478358e-8,0.0025812972568394475,2.983567962877638e-5,-3.3960441519085414e-8,0.002581569412426488,2.9994385199715056e-5,-3.416148972868799e-8,0.002581766674986788,3.0105076417356167e-5,-3.430175679860849e-8,0.0025819120683374308,3.0127919994288804e-5,-3.4329229444587715e-8,0.002582045519993052,3.0034048227300084e-5,-3.420579656011638e-8,0.0025822203949664234,2.9816100977510195e-5,-3.392112802616561e-8,0.002582493526172687,2.9498181435378302e-5,-3.3505790908997055e-8,0.0025829078467866826,2.913934269067586e-5,-3.3035889417979293e-8,0.002583471922975573,2.8823154006253027e-5,-3.261957918279001e-8,0.0025841475821974037,2.8630944686295138e-5,-3.236241863773583e-8,0.0025848575009842015,2.860875020177161e-5,-3.23245690882075e-8,0.0025855132051104206,2.8747336224273945e-5,-3.249487409873808e-8,0.0025860483870083825,2.898840096044825e-5,-3.279872884323055e-8,0.0025864386289602428,2.925160284354101e-5,-3.31328354281292e-8,0.0025867003344974215,2.9464434140691195e-5,-3.340364643567008e-8,0.0025868758817611977,2.9580498213838604e-5,-3.355089908895895e-8,0.0025870163518221215,2.958356532888121e-5,-3.3552916689574256e-8,0.00258716874146591,2.948254760991543e-5,-3.342033057128494e-8,0.0025873690254704456,2.930331685653275e-5,-3.31857940505852e-8,0.0025876396104315717,2.908092911135896e-5,-3.289416461028243e-8,0.0025879892061104566,2.88534249664018e-5,-3.259456856612757e-8,0.0025884138089266786,2.8656989162023898e-5,-3.2334059412977954e-8,0.002588898359017111,2.8521979692271508e-5,-3.215231454490244e-8,0.002589419062272378,2.8469586189780088e-5,-3.2077164254932806e-8,0.002589946473323683,2.8509159090307877e-5,-3.212107523599057e-8,0.002590449393316276,2.8636563050092073e-5,-3.227904091415366e-8,0.002590899361197364,2.8834057391279875e-5,-3.2528461699677137e-8,0.00259127520629838,2.9071975778584452e-5,-3.2831291645010475e-8,0.0025915670649930126,2.9312176621478835e-5,-3.313838678718475e-8,0.0025917793326626975,2.951309804139549e-5,-3.33958896106978e-8,0.0025919320721802777,2.96361235160836e-5,-3.355336698452127e-8,0.002592060388232209,2.9652876016196784e-5,-3.357329612354791e-8,0.0025922110409532205,2.9552949250428954e-5,-3.344128213388367e-8,0.0025924352611730508,2.9350891816452204e-5,-3.3175402893513874e-8,0.0025927770732672843,2.908978789339379e-5,-3.2831114881942346e-8,0.0025932582302109035,2.8837351096213648e-5,-3.2496316807290324e-8,0.0025938644424488276,2.8670845449783314e-5,-3.2271752176790486e-8,0.00259454130569729,2.8651787572331885e-5,-3.223802204062918e-8,0.0025952073153012044,2.880006435961552e-5,-3.242178048536644e-8,0.0025957820237779284,2.9082752023308125e-5,-3.2781025144444316e-8,0.002596215451355888,2.942669394122801e-5,-3.3221292787055197e-8,0.0025965024447693404,2.9748129367640864e-5,-3.3634051131772567e-8,0.0025966765282158253,2.998185229157122e-5,-3.3934507817174133e-8,0.002596791242167228,3.009622528063916e-5,-3.408109516064842e-8,0.0025969011572768027,3.0092558261656323e-5,-3.4074756512656124e-8,0.002597049688176753,2.9995632087270322e-5,-3.3946851949197073e-8,0.0025972643186138377,2.9842572236855614e-5,-3.3744958806311066e-8,0.002597556681278304,2.9673938276303314e-5,-3.3521470462183287e-8,0.002597924726275709,2.9527819877394803e-5,-3.332595043754231e-8,0.0025983552864050196,2.9436122490796813e-5,-3.320019805897644e-8,0.002598826556628034,2.9421965307062316e-5,-3.3174709416024415e-8,0.0025993106853013,2.949756098639174e-5,-3.32658027069346e-8,0.002599776848353735,2.9662467082486734e-5,-3.347330412600232e-8,0.0026001951252648077,2.99025861685836e-5,-3.377926073172787e-8,0.0026005411717937273,3.019067108816419e-5,-3.414860105393843e-8,0.002600801115884702,3.048904747005782e-5,-3.453261736501532e-8,0.0026009756449572323,3.075479964565841e-5,-3.487558988314453e-8,0.0026010821201373643,3.094704699047445e-5,-3.512412559281178e-8,0.0026011537374556978,3.103526998712179e-5,-3.523794137373505e-8,0.0026012352359606815,3.100711111394474e-5,-3.52001023446636e-8,0.0026013752640351045,3.08739211784446e-5,-3.5024463414013454e-8,0.0026016160874248713,3.0672358090410115e-5,-3.475804093991398e-8,0.0026019820559800674,3.0460335902351476e-5,-3.447598865451195e-8,0.0026024694362678106,3.0306029731080202e-5,-3.4267389520307465e-8,0.0026030416290290835,3.0270338541856285e-5,-3.421233572704718e-8,0.0026036342474958208,3.0386657894908002e-5,-3.435533680675956e-8,0.0026041720030882468,3.064594194570206e-5,-3.4685549028801975e-8,0.0026045930310347977,3.09961293659131e-5,-3.513578419828963e-8,0.0026048698621258057,3.1359222083486464e-5,-3.560466452625087e-8,0.002605016277847952,3.165875436058266e-5,-3.5992435719287957e-8,0.0026050775582436726,3.1843809880593544e-5,-3.623231983185307e-8,0.0026051114117463955,3.1899280024474e-5,-3.630395313793583e-8,0.0026051700508598736,3.184180085895025e-5,-3.622821835659225e-8,0.0026052897100294578,3.1707923332180516e-5,-3.605202198717156e-8,0.0026054879335475844,3.154166996092474e-5,-3.5832271992857454e-8,0.0026057657097087847,3.138536625159791e-5,-3.5624031184444675e-8,0.0026061113393798714,3.1274330301516524e-5,-3.5473569113068227e-8,0.0026065041725679677,3.123426843754492e-5,-3.5414846395313414e-8,0.0026069176827509784,3.127995084377525e-5,-3.54676479866181e-8,0.0026073221793504135,3.141424395457776e-5,-3.563622226078849e-8,0.002607687760832499,3.162725534231478e-5,-3.590812143263662e-8,0.002607988052610515,3.189600175406857e-5,-3.6253749808592313e-8,0.0026082048747776295,3.218555030603266e-5,-3.662781876104157e-8,0.0026083332526672066,3.2452725750126513e-5,-3.697411627683993e-8,0.0026083853531278017,3.265297934002162e-5,-3.72343878712858e-8,0.0026083914259650088,3.2749867670578894e-5,-3.736065308576354e-8,0.002608396133617845,3.272507890931113e-5,-3.732831038939484e-8,0.0026084499787289036,3.258582024132688e-5,-3.714589715717855e-8,0.0026085974212649975,3.236651424287259e-5,-3.6857515677651e-8,0.0026088647679620098,3.2123260707560836e-5,-3.65358635683691e-8,0.002609251366434725,3.1921661831404596e-5,-3.6266559361749115e-8,0.0026097270315835943,3.182058662536569e-5,-3.612701970627575e-8,0.002610237284691165,3.185588171012813e-5,-3.6165054551592994e-8,0.002610716126815699,3.202876234196642e-5,-3.6383392719986345e-8,0.0026111037028992033,3.23033372673764e-5,-3.6736088564341154e-8,0.0026113636304113436,3.261570097552551e-5,-3.714014721843922e-8,0.002611493434829786,3.2892780986458314e-5,-3.750008482171149e-8,0.002611523495367077,3.307418573417459e-5,-3.7736560791061144E-08,0.002611505142783382,3.312826382278772e-5,-3.780750968567028e-8,0.002611493763715752,3.3056708359165294e-5,-3.771431792722278e-8,0.0026115341933477952,3.2888214172239555e-5,-3.749370515848177e-8,0.0026116528511147953,3.266635873779777e-5,-3.7202054725746606e-8,0.0026118568135878677,3.2437504850753895e-5,-3.6899719726700316e-8,0.0026121372770168093,3.22421675305727e-5,-3.663975855845446e-8,0.0026124744813415092,3.2110441667230555e-5,-3.646188211570326e-8,0.002612842227916604,3.206036322123708e-5,-3.639018811094762e-8,0.00261321139785924,3.2097696128144984e-5,-3.64327692480781e-8,0.00261355274464152,3.2216066114155835e-5,-3.658181139714531e-8,0.0026138396427348816,3.2397063044748426e-5,-3.681367790345908e-8,0.0026140514872013475,3.261067171343822e-5,-3.708942654441659e-8,0.0026141780311365196,3.2817050683532635e-5,-3.7357080590710184e-8,0.002614224114800926,3.297101014117252e-5,-3.7557436147006555e-8,0.002614213119889088,3.303013696291152e-5,-3.7634673802280204e-8,0.002614186549965068,3.296599359632987e-5,-3.755103806085695e-8,0.0026141973753741167,3.277534783937561e-5,-3.7301599143301795e-8,0.002614297046902401,3.248635183237581e-5,-3.69224435741917e-8,0.0026145197475576695,3.215508644569542e-5,-3.648630993783964e-8,0.002614870090159904,3.185171140863245e-5,-3.608467312200419e-8,0.0026153197674543857,3.164059402548646e-5,-3.5801927989370486e-8,0.0026158147703580206,3.156177686629293e-5,-3.569118447274441e-8,0.0026162903077401106,3.1620210993565046e-5,-3.5760006489734524e-8,0.0026166880991987354,3.1785560398102544e-5,-3.5969814749259693e-8,0.002616970841721617,3.200160523740788e-5,-3.624783231824479e-8,0.002617130261397801,3.220181753315225e-5,-3.65072435138508e-8,0.0026171871606737534,3.232655585316976e-5,-3.6669675925902054e-8,0.00261718397046602,3.233719347395405e-5,-3.6683842036219965e-8,0.0026171724016019787,3.222347506708292e-5,-3.6535405177033614e-8,0.0026172002283405987,3.200264024737339e-5,-3.624607593524087e-8,0.0026173011810684,3.171173130676567e-5,-3.586373455846947e-8,0.0026174902392406083,3.139662825485608e-5,-3.544818102047367e-8,0.0026177642440258567,3.110164755113335e-5,-3.5057518398642445e-8,0.0026181060091383474,3.086218416322592e-5,-3.4738433135395185e-8,0.0026184896650506663,3.070099873181416e-5,-3.452121062024481e-8,0.0026188855768160607,3.062736487635263e-5,-3.441851050195791e-8,0.0026192641644238587,3.063776642104189e-5,-3.44262138034998e-8,0.0026195987827379364,3.071705603650061e-5,-3.452490184616867e-8,0.0026198682621240295,3.083960982102611e-5,-3.4681327174304134e-8,0.0026200597799300902,3.0970713580179304e-5,-3.485016751422272e-8,0.0026201724252346513,3.106906901777973e-5,-3.497724556731821e-8,0.002620221032692184,3.1091763777759243e-5,-3.500601824118333e-8,0.0026202386178564006,3.10028288611161e-5,-3.4888839501679675e-8,0.0026202745150329704,3.0784947027866455e-5,-3.4602410900141006e-8,0.0026203852922867623,3.0450819216758257e-5,-3.416279062923851e-8,0.002620618265425924,3.0047622079189514e-5,-3.363132109745287e-8,0.002620992870319827,2.9648323815135033e-5,-3.31033303947174e-8,0.0026214894619416536,2.932979763141325e-5,-3.267956343422445e-8,0.0026220531242507274,2.9146566799369495e-5,-3.2431878766493014e-8,0.002622611657445149,2.9112958080091928e-5,-3.237984681690709e-8,0.0026230987533740094,2.9201352737337322e-5,-3.248826516711856e-8,0.0026234720422993033,2.935474709537481e-5,-3.268331002587069e-8,0.002623720696604966,2.950580934218716e-5,-3.28772184813543e-8,0.002623863141320352,2.9594733190630928e-5,-3.2991532941629956e-8,0.002623938403472255,2.9581523567624585e-5,-3.2973239176112444e-8,0.0026239948751797743,2.945153944445875e-5,-3.280223748832211e-8,0.002624079352158989,2.9214975075539966e-5,-3.249095709508292e-8,0.0026242282334253994,2.8901697565596798e-5,-3.207786296841002e-8,0.0026244620668671175,2.855315053807396e-5,-3.161700102240202e-8,0.0026247839524003213,2.821331655109691e-5,-3.116615430893701e-8,0.0026251814438661785,2.7920728883389294e-5,-3.077624804492969e-8,0.002625630821426735,2.770290261143587e-5,-3.048387523980967e-8,0.0026261023194173497,2.7573621615054672e-5,-3.030759911853844e-8,0.0026265650867071107,2.753272069170523e-5,-3.024760371638935e-8,0.0026269911754542366,2.7567495629662442e-5,-3.0287542037181364e-8,0.0026273585031503107,2.7654808956776647e-5,-3.0397305793839284e-8,0.0026276531846827346,2.776337289842733e-5,-3.0535989704684127e-8,0.0026278717322375995,2.785627661607388e-5,-3.0655133830369624e-8,0.0026280234298139303,2.7894361322732897e-5,-3.0703083939648824e-8,0.0026281325803872136,2.7841478039741167e-5,-3.063189326845691e-8,0.0026282392000712505,2.7672557297109677e-5,-3.040802070948686e-8,0.0026283955437060506,2.7384085700415085e-5,-3.002625965469175e-8,0.00262865565196701,2.700371371201096e-5,-2.9522515841626875e-8,0.002629057605315128,2.6592301817640855e-5,-2.897657699704715e-8,0.0026296042239974493,2.623136467768682e-5,-2.8495630917078668e-8,0.0026302538309996223,2.599585843503772e-5,-2.8178505464655922e-8,0.002630930614107705,2.5924188462011436e-5,-2.807623809106079e-8,0.0026315519205043305,2.6002942441934412e-5,-2.8171931342658712e-8,0.002632057542513618,2.6175113742488016e-5,-2.8391396121084223e-8,0.0026324258329257447,2.6364726212698507e-5,-2.8635308308118833e-8,0.002632672462723894,2.6502714775448774e-5,-2.881304110057633e-8,0.0026328380412312087,2.6543357889184606e-5,-2.8864178132588297e-8,0.0026329731241864014,2.6469411774491017e-5,-2.8765333495100423e-8,0.0026331258609140727,2.6289281768524357e-5,-2.852665947748336e-8,0.0026333338989213834,2.6030282261764095e-5,-2.8183285436663457e-8,0.002633620171689503,2.573080090149753e-5,-2.7785262712895203e-8,0.002633991642655656,2.5432731091922993e-5,-2.7387706234444074e-8,0.0026344403222787766,2.517473880061446e-5,-2.7041855038120544e-8,0.002634946113457011,2.498684705051351e-5,-2.6787753182580472e-8,0.0026354809501950237,2.4886802821856877e-5,-2.6649271729928865e-8,0.0026360135612485953,2.487845151655501e-5,-2.66318567861711e-8,0.0026365141657436557,2.4952076373098923e-5,-2.672296922722169e-8,0.002636958487571637,2.508635806998142e-5,-2.6894714182866534e-8,0.002637330770592852,2.5251345857424093e-5,-2.7107782135658014e-8,0.0026376258574601534,2.541191401004594e-5,-2.731596108184508e-8,0.002637850566159729,2.5531539580490765e-5,-2.747102088376633e-8,0.002638024527826738,2.557660264320669e-5,-2.7528304916922454e-8,0.0026381802741849004,2.552172015255805e-5,-2.7453780860784707e-8,0.0026383615500640014,2.535654692073106e-5,-2.7233147342018143e-8,0.0026386179885873363,2.5093413410281484e-5,-2.6882116638732477e-8,0.002638994289794082,2.4773009859853065e-5,-2.6454097522886618e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json new file mode 100644 index 0000000000..55ee759eb7 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":19000,"numberOfSamples":1000,"samples":[0.00263951402096563,2.446275040491078e-5,-2.6038117688221015e-8,0.0026401631724560673,2.4241976200195275e-5,-2.5739261712150362e-8,0.002640884349598046,2.417407411008679e-5,-2.5641764129475454e-8,0.0026415912918163185,2.4277459627606698e-5,-2.577057311285661e-8,0.0026422007751247287,2.4514250198517228e-5,-2.6076268743377622e-8,0.002642664329828072,2.4806135401016956e-5,-2.6455914313675208e-8,0.002642981408758501,2.5067420523334124e-5,-2.6796599674782414e-8,0.0026431902581784475,2.523476738670862e-5,-2.701462116287926e-8,0.0026433473077564114,2.5280434293348607e-5,-2.707291191164421e-8,0.0026435080278592402,2.5209814035850336e-5,-2.6977864625794997e-8,0.0026437153058168224,2.5051197769627946e-5,-2.6766036632474325e-8,0.002643995008250455,2.4844553414124373e-5,-2.6489610125027892e-8,0.002644356096346505,2.4632482174508258e-5,-2.6204648569688263e-8,0.002644792866933108,2.4453878979516923e-5,-2.5962750928942762e-8,0.002645287958825506,2.433962413644026e-5,-2.580522022561437e-8,0.0026458157625529125,2.4309628109960647e-5,-2.5758941317575327e-8,0.00264634623063722,2.4371028134717308e-5,-2.5833817493889664e-8,0.0026468490048528843,2.4517626043978552e-5,-2.6021955503015233e-8,0.002647297629221693,2.473075415894809e-5,-2.629884122598041e-8,0.002647673419069512,2.498168300232041e-5,-2.6626587976528904e-8,0.0026479684516871804,2.5235364563765828e-5,-2.6958906132239313e-8,0.0026481873145099825,2.54550480044092e-5,-2.724714977923732e-8,0.0026483474854581976,2.5607329200806667e-5,-2.744689859121178e-8,0.002648478321749667,2.5667306663201197e-5,-2.7524725198145248e-8,0.002648618565417001,2.562364143904652e-5,-2.746495256788262e-8,0.002648811933829168,2.548331398325493e-5,-2.7276137128600436e-8,0.002649099993304903,2.5275225022656478e-5,-2.6996080239347117e-8,0.0026495118344468096,2.5050470037239995e-5,-2.6692385337925312e-8,0.0026500516782408433,2.4875937156110125e-5,-2.6454031394300517e-8,0.0026506887377273874,2.481830242231187e-5,-2.637005584696817e-8,0.0026513571570154788,2.4919878684211346e-5,-2.649732055333089e-8,0.0026519727576500727,2.5176293414199947e-5,-2.6830682803784936e-8,0.00265246347865712,2.553137242424813e-5,-2.7296067819030845e-8,0.0026527977885291948,2.5897092428559638e-5,-2.777691417282513e-8,0.0026529937872264786,2.6188736914085377e-5,-2.8160834927125474e-8,0.0026531053400488365,2.6354405340763377e-5,-2.8378742435525895e-8,0.002653197143730883,2.6384803835271885e-5,-2.8417798104530085e-8,0.0026533237489522734,2.630496073324375e-5,-2.8310488620170042e-8,0.002653519415667135,2.61584941720321e-5,-2.8113966146280626e-8,0.0026537972075638358,2.5993391727317396e-5,-2.7891437296909137e-8,0.0026541528220946162,2.5852711656499893e-5,-2.7699980495729533e-8,0.002654569583467504,2.576980469437125e-5,-2.758418502662082e-8,0.002655022888269817,2.5766321279371505e-5,-2.7573341150534074e-8,0.0026554838903719694,2.5851487346184455e-5,-2.7680269328933923e-8,0.0026559228543872925,2.6021962722230312e-5,-2.7900982114737346e-8,0.0026563125592436493,2.6262270927647677e-5,-2.8215210320601784e-8,0.0026566318822620954,2.6546159408893735e-5,-2.8588246183577963e-8,0.0026568693325829773,2.683937297731775e-5,-2.8974675169938895e-8,0.00265702588046726,2.7104047119859548e-5,-2.9324209301872344e-8,0.0026571162804157502,2.730439944298196e-5,-2.9589182861804454e-8,0.002657168287578267,2.741298625135473e-5,-2.973278593466467e-8,0.002657219506910407,2.7416528074622072e-5,-2.9736788701860016e-8,0.002657312004454739,2.7320200846281446e-5,-2.9607346163960382e-8,0.0026574851280428084,2.714945498836805e-5,-2.9377627673142143e-8,0.0026577671410715864,2.6948550466389847e-5,-2.9106116594645743e-8,0.0026581666337407396,2.677480114515534e-5,-2.8869130261933987e-8,0.002658665644369953,2.668759153112913e-5,-2.874622335182529e-8,0.0026592177642860556,2.673249924766369e-5,-2.8798893801029236e-8,0.0026597551845333914,2.6923863313585407e-5,-2.9047096880029876e-8,0.0026602066278280773,2.7233239467283458e-5,-2.945360447347533e-8,0.0026605218701161496,2.759279450344971e-5,-2.992839322576825e-8,0.002660691339317348,2.791687831695263e-5,-3.0357403494703774e-8,0.0026607489650131524,2.813307297178182e-5,-3.064397603742436e-8,0.002660756316410744,2.820629128228656e-5,-3.0740975280116455e-8,0.00266077813131762,2.814444053347429e-5,-3.0658329382785926e-8,0.0026608626181401033,2.7987094517445165e-5,-3.044802835863527e-8,0.002661033282093157,2.7787369099427664e-5,-3.018018911351549e-8,0.002661290670229049,2.759646253123286e-5,-2.992268275086257e-8,0.002661618847227499,2.745466279524221e-5,-2.9729256636510297e-8,0.002661992324996788,2.7388048564438633e-5,-2.9635075082451442e-8,0.0026623814914065623,2.740846380825369e-5,-2.9656508743774662e-8,0.0026627564064791672,2.751469021981976e-5,-2.9792508338229933e-8,0.002663089657287003,2.769378081550649e-5,-3.002626101217006e-8,0.0026633589993581537,2.7922422231694105e-5,-3.032697532756177e-8,0.0026635502049094915,2.816877186333765e-5,-3.065235507227498e-8,0.002663660058606214,2.8395509491539593e-5,-3.095269273591784e-8,0.0026636988226479592,2.8564683516255168e-5,-3.1177317725720975e-8,0.0026636910185861354,2.8644267020628355e-5,-3.128328931824663e-8,0.002663673368164203,2.8615444636392442e-5,-3.124507257083623e-8,0.0026636892999802016,2.847882357726595e-5,-3.106284172552677e-8,0.0026637804953454328,2.8257367087954442e-5,-3.076651119240239e-8,0.0026639771539304236,2.7994347029093748e-5,-3.041320967031577e-8,0.002664289390944928,2.7745919962196963e-5,-3.0077603120369135e-8,0.0026647021583839263,2.7569343911087362e-5,-2.983632036881539e-8,0.002665175574611234,2.7508966541401323e-5,-2.9749234062979572e-8,0.002665651753105894,2.758308150002246e-5,-2.9841711448467954e-8,0.0026660679387967637,2.777557445101302e-5,-3.009314804079612e-8,0.002666373652606828,2.8036422130212083e-5,-3.043735504000154e-8,0.0026665467921051737,2.8293485634668975e-5,-3.0778184924067085e-8,0.002666601852555459,2.8473726055012245e-5,-3.1017907545195027e-8,0.0026665852853927806,2.8526301970881325e-5,-3.1088172804032435e-8,0.002666559122253182,2.843738526897907e-5,-3.0969895282801916e-8,0.0026665805053176046,2.823043592843639e-5,-3.069370740064932e-8,0.0026666863526158286,2.795380188020402e-5,-3.032352927191644e-8,0.002666888030781808,2.7663438827002143e-5,-2.993366290807507e-8,0.0026671748130789254,2.7408493516036183e-5,-2.958966680282094e-8,0.0026675216046985984,2.722333376093842e-5,-2.933771824724552e-8,0.0026678967932506742,2.7125467417972392e-5,-2.920171724683057e-8,0.002668268174343812,2.7116928055334394e-5,-2.918496557666993e-8,0.0026686067536675503,2.718687142750966e-5,-2.9273488870256556e-8,0.002668889153521843,2.7314125916714938e-5,-2.9439367095546293e-8,0.0026690995240611494,2.7469415229723713e-5,-2.9643692403226327e-8,0.002669231588881734,2.761768401200625e-5,-2.983969287822529e-8,0.0026692909045567758,2.772137604439484e-5,-2.9977123836592665e-8,0.002669296689582548,2.7745483589062654e-5,-3.0009007656812204e-8,0.0026692818814056923,2.76645400450632e-5,-2.9900964988722216e-8,0.002669289786419154,2.7470487600255673e-5,-2.9641735210395685e-8,0.0026693663135547675,2.7178855682651955e-5,-2.9251483856010147e-8,0.002669548600717101,2.6829814064937723e-5,-2.8783321052296953e-8,0.002669853232704221,2.6481571864986507e-5,-2.8314646721668814e-8,0.0026702686612265127,2.6196540227162797e-5,-2.792883344868289e-8,0.0026707555410017745,2.6024208042934442e-5,-2.769243626155642e-8,0.0026712556999075863,2.5986573478360687e-5,-2.7635653186376986e-8,0.002671707089748267,2.6071129511972674e-5,-2.7742712797765785e-8,0.0026720600901569886,2.6233603318288687e-5,-2.795522462078366e-8,0.002672290443135009,2.640954156364561e-5,-2.818742186699068e-8,0.0026724052428170825,2.653145786869803e-5,-2.8349002218997386e-8,0.002672440220313686,2.6546752821712073e-5,-2.8369163632258638e-8,0.0026724489957256573,2.6431102842522592e-5,-2.8214673922745004e-8,0.002672487698917711,2.6193125149463324e-5,-2.789629736013679e-8,0.0026726001820109838,2.586916578069951e-5,-2.746199942230688e-8,0.002672808644915501,2.551090053887501e-5,-2.6980507296689357e-8,0.0026731118372536797,2.5170934360175597e-5,-2.6522128760281473e-8,0.0026734896589889912,2.4891330726868854e-5,-2.6143393330707435e-8,0.0026739109227287,2.4697549447807037e-5,-2.5878832880513e-8,0.0026743410670043246,2.4597486622909633e-5,-2.5739543146492245e-8,0.002674747998989801,2.458373190904632e-5,-2.5716071958711425e-8,0.0026751057440529678,2.463704675194214e-5,-2.57830039780471e-8,0.0026753964831346907,2.47297865751725e-5,-2.5903529531835557e-8,0.00267561183646005,2.4828867315808e-5,-2.6033429491443315e-8,0.0026757540793394046,2.489859900654912e-5,-2.6124877326598502e-8,0.00267583747024861,2.4904174485618595e-5,-2.6131104709850983e-8,0.0026758891320712635,2.4816671777239062e-5,-2.6013096260213478e-8,0.0026759481268225807,2.4619877273035702e-5,-2.5748745104085175e-8,0.002676060878740094,2.4317891637757816e-5,-2.534308690420903e-8,0.002676271641860672,2.3940547910458253e-5,-2.4835628594163594e-8,0.0026766089922976954,2.3542240639262514e-5,-2.429887410844018e-8,0.002677072911743146,2.3190810939116947e-5,-2.3823549830955104e-8,0.002677629384711697,2.2947801471423495e-5,-2.349226195279842e-8,0.0026782174373540597,2.284747447523584e-5,-2.3351420427147178e-8,0.002678767190753552,2.2884450527373708e-5,-2.3394574904936935e-8,0.002679221246387928,2.3015772470718473e-5,-2.3564955982734086e-8,0.0026795504594499405,2.31755695605357e-5,-2.3774871289120044e-8,0.002679759170591716,2.3295137206169125e-5,-2.393243272963582e-8,0.0026798803135628544,2.3320917185443094e-5,-2.3965602905995443e-8,0.0026799640145154023,2.322577558520088e-5,-2.3837397612610006e-8,0.0026800639314745046,2.3012215146842673e-5,-2.3550384713622862E-08,0.0026802248899573116,2.2708392050599457e-5,-2.3141585163499967e-8,0.0026804742934984,2.235906805897442e-5,-2.2670554977751216e-8,0.0026808185968568944,2.2014267511493717e-5,-2.220428842578894e-8,0.0026812448336239396,2.171854636264718e-5,-2.180280461715125e-8,0.0026817259374465234,2.150323880680172e-5,-2.1508611094251824e-8,0.00268222781652349,2.1382809836528223e-5,-2.1341628366433782e-8,0.0026827161726339327,2.1355034347562173e-5,-2.1299284836488415e-8,0.0026831617535715744,2.140378470911418e-5,-2.1360196730420277e-8,0.0026835436457758872,2.1502965966267144e-5,-2.1489465414133864e-8,0.0026838509543692596,2.16204854567272e-5,-2.1644050147128995e-8,0.002684083542702058,2.1721810919128004e-5,-2.1777567204648777e-8,0.0026842524063363047,2.1773296218550722e-5,-2.184473901283113e-8,0.0026843798793523676,2.174584592951199e-5,-2.1806283785570994e-8,0.002684499254751002,2.1619604754520625e-5,-2.1635208600026604e-8,0.002684652615539522,2.1389936125771377e-5,-2.132488556836351e-8,0.0026848851553524585,2.1073684595338914e-5,-2.0897551736655894e-8,0.002685234761333537,2.071276203290809e-5,-2.040922349572789e-8,0.0026857179492677428,2.0370460882582813e-5,-1.9944823185549678e-8,0.002686317392056504,2.0116807827503108e-5,-1.9598553255649772e-8,0.002686979523907763,2.0004912349695077e-5,-1.9442129284992614e-8,0.0026876280837219843,2.0048512671163523e-5,-1.949455243073783e-8,0.0026881899249303247,2.0214024293583018e-5,-1.9711294931862544e-8,0.002688620249435145,2.043285656095454e-5,-2.000069039920413e-8,0.002688914623014258,2.0626936406510176e-5,-2.0258093448061607e-8,0.002689104448499188,2.073370425998305e-5,-2.0399378529749706e-8,0.0026892419298627126,2.0720641518941455e-5,-2.038044359813892e-8,0.00268938312888527,2.0587598019377475e-5,-2.0200427284762034e-8,0.002689574768650333,2.0360579482662567e-5,-1.989355990805515e-8,0.0026898465947728313,2.0081670543145843e-5,-1.9515867700560127e-8,0.0026902088053080623,1.9798500950558975e-5,-1.913120086648592e-8,0.002690653320029833,1.9555086732382298e-5,-1.8798959747669437e-8,0.0026911577108349486,1.9384918317815483e-5,-1.856468027518342e-8,0.0026916907283687213,1.9306783846534458e-5,-1.8454204375709315e-8,0.0026922183440946422,1.932346249716126e-5,-1.8471725008849565e-8,0.0026927093194704355,1.9422959535281348e-5,-1.8601349303398246e-8,0.002693139577075912,1.9581620030571056e-5,-1.8811304655394267e-8,0.0026934949979082095,1.9768275469618075e-5,-1.905959980051295e-8,0.0026937727037630865,1.9948579211282313e-5,-1.9299928293298172e-8,0.002693981227014739,2.008903816565814e-5,-1.9487102008012012e-8,0.0026941399761876384,2.0160743594175506e-5,-1.958202828436642e-8,0.002694278150304583,2.014308771745926e-5,-1.9556669135148625e-8,0.002694432839134833,2.0027814972522264e-5,-1.939951202924289e-8,0.0026946454407021474,1.9823465164879817e-5,-1.912164795226923e-8,0.002694955118743798,1.9559228013221924e-5,-1.876210188452582e-8,0.0026953885604227568,1.9285588555638527e-5,-1.8388822887488567e-8,0.002695947389646158,1.906784792733087e-5,-1.8090003030037158e-8,0.002696598361371597,1.8969529356223275e-5,-1.7951673808881418e-8,0.0026972747172651123,1.9028183067974308e-5,-1.8024976958726027e-8,0.002697894448259002,1.923482567582152e-5,-1.82982964892157e-8,0.0026983903263144058,1.953167385178543e-5,-1.8694084270395405e-8,0.0026987355972708806,1.9833273175935162e-5,-1.9097304148343785e-8,0.002698950451980689,2.005962260427181e-5,-1.9400090848296767e-8,0.0026990880859063043,2.016241265792062e-5,-1.9537100067242948e-8,0.0026992117922432905,2.013345355569334e-5,-1.949684506615443e-8,0.002699375647089422,1.999759245364751e-5,-1.9312213181089278e-8,0.002699614261285006,1.9798830819145078e-5,-1.9041939056218857e-8,0.0026999406340535597,1.9586801508834097e-5,-1.8752604336031518e-8,0.0027003488738597202,1.9406767550178475e-5,-1.850529554434705e-8,0.002700818970481651,1.9293437948365567e-5,-1.8347238284879605e-8,0.0027013220497049467,1.9267719508964687e-5,-1.8307237617048195e-8,0.002701825549465035,1.9335593552310834e-5,-1.839393020569358e-8,0.0027022980757690288,1.9488723621636194e-5,-1.8596431789749385e-8,0.002702713662607276,1.970654001153539e-5,-1.8887103092774177e-8,0.002703055157533248,1.9959543955443707e-5,-1.9226073522447195e-8,0.002703316448267429,2.0213520540267606e-5,-1.9567030088327615e-8,0.0027035033133196956,2.0434152409261692e-5,-1.986350378693203e-8,0.0027036329373279133,2.059147843487134e-5,-2.0074871352699753e-8,0.002703732317100221,2.0663912104588616e-5,-2.017172044859481e-8,0.002703835708462897,2.064176391337209e-5,-2.0140576017720335e-8,0.002703981045779454,2.0530222225002636e-5,-1.9987983238696774e-8,0.002704204955540068,2.0351562676141675e-5,-1.9743638549377247e-8,0.0027045358067139627,2.014570325430151e-5,-1.9461313750205066e-8,0.002704984805772576,1.996714707688034e-5,-1.92148397591981e-8,0.0027055368649279493,1.987574577050617e-5,-1.9085611169575944e-8,0.002706145685078051,1.9919963553539275e-5,-1.913981275734757e-8,0.0027067395839023285,2.0115935619329194e-5,-1.9399872245807953e-8,0.002707241964949466,2.0432627984345386e-5,-1.9824189275903496e-8,0.002707600561978769,2.079591363745013e-5,-2.031258854203578e-8,0.0027078094546453073,2.1114943868623784e-5,-2.0742078873478338e-8,0.0027079095029694275,2.1317626509160715e-5,-2.101494646065448e-8,0.002707967740739984,2.1374638784031844e-5,-2.1091231796414332e-8,0.0027080501916891273,2.1301291919555723e-5,-2.0991196408044287e-8,0.002708202805321296,2.1142645928582355e-5,-2.0775234408464792e-8,0.0027084452776870867,2.0954316120813476E-05,-2.0518098346501502e-8,0.002708774162575712,2.078764131629634e-5,-2.028905117718749e-8,0.002709169810830763,2.0681479161499233e-5,-2.014086685744763e-8,0.0027096034430987557,2.065925821172407e-5,-2.0105765910602988e-8,0.0027100428652535534,2.0729021182110605e-5,-2.0195268624788187e-8,0.0027104568599029244,2.088478077558925e-5,-2.0401806622108805e-8,0.0027108187654351296,2.1108546115977512e-5,-2.0701327617105837e-8,0.002711109496587725,2.1372986326076458e-5,-2.10568899223502e-8,0.002711319970232938,2.1644827851250796e-5,-2.142334211249965e-8,0.002711452708090201,2.1889050652350722e-5,-2.1753098561200446e-8,0.002711522206080725,2.207368852602839e-5,-2.2002679141313222e-8,0.002711553726110139,2.2174663760722812e-5,-2.2139227350930035e-8,0.0027115804817427185,2.2179989492678676E-05,-2.214615199321869e-8,0.0027116394229722046,2.2092790600064617e-5,-2.2027220749220564e-8,0.002711765902353902,2.1932661136871404e-5,-2.1808497541801675e-8,0.0027119875265561675,2.17349102139576e-5,-2.153749682666738e-8,0.0027123175594141167,2.154714321577371e-5,-2.1278725972971384e-8,0.002712748677090166,2.1422310197924048e-5,-2.1104340382649643e-8,0.0027132489457220156,2.1407462817094904e-5,-2.107881988743877e-8,0.002713763222707799,2.1528939153101463e-5,-2.12386510801654e-8,0.002714223539826301,2.17779711508261e-5,-2.1572526893751845e-8,0.0027145692235508168,2.210462782438041e-5,-2.201294395593925e-8,0.0027147705289971287,2.242831272043591e-5,-2.245045363896241e-8,0.002714842961370987,2.26651374401677e-5,-2.2770961975807826e-8,0.0027148417371246187,2.2759728481484883e-5,-2.2899019449501894e-8,0.0027148384646546696,2.270361220246182e-5,-2.2822761360270927e-8,0.002714894133814566,2.253147752919397e-5,-2.2588785865962968e-8,0.002715042481976411,2.230178058034443e-5,-2.227589996373742e-8,0.0027152877602880654,2.2075146022270574e-5,-2.196600255000497e-8,0.0027156119658795414,2.189977200438472e-5,-2.1724460810982776e-8,0.0027159847379479274,2.180547085498409e-5,-2.1592064109398672e-8,0.0027163717326484887,2.18037059038195e-5,-2.158495102003217e-8,0.0027167402462662167,2.189035707386248e-5,-2.169814943921391e-8,0.0027170626329077376,2.204902136902486e-5,-2.1909862774099005e-8,0.002717318577686348,2.225407880034124e-5,-2.2185536220454567e-8,0.002717496917322223,2.247368848952755e-5,-2.2481941172479003e-8,0.0027175971570509785,2.2673148098990517e-5,-2.2751819980273843e-8,0.002717630437619656,2.2818986025088118e-5,-2.2949521472554347e-8,0.002717619374232879,2.2883830547347417e-5,-2.3037639752791775e-8,0.0027175960863589687,2.2851508344780233e-5,-2.29939131948583e-8,0.002717598071460584,2.27213176952526e-5,-2.281699857396905e-8,0.0027176621709201596,2.2510260056520727e-5,-2.2529529271382513e-8,0.0027178174751903974,2.22521853070832e-5,-2.2177067543554316e-8,0.0027180784671276526,2.1993333213934358e-5,-2.1822217623532972e-8,0.0027184398641318065,2.178448760758116e-5,-2.153411268172913e-8,0.0027188745594770346,2.1670561409178468e-5,-2.137429317301222e-8,0.0027193360025531545,2.1679009178246315e-5,-2.1380826619141587e-8,0.002719766138446254,2.1809462677510583e-5,-2.1553961002315126e-8,0.00272010902935972,2.2028302823201387e-5,-2.184847600516649e-8,0.0027203278821346134,2.2272524858974438e-5,-2.2178797892063562e-8,0.0027204196799707763,2.24654419229855e-5,-2.2440404566424472e-8,0.002720419476537429,2.2541182151501676e-5,-2.2543308403420168e-8,0.002720389514355453,2.246792006086709e-5,-2.2443785172222848e-8,0.0027203968580779593,2.2257868624423312e-5,-2.2157995797522724e-8,0.0027204907531003454,2.1959156500183422e-5,-2.17509487518943e-8,0.0027206903780250197,2.1635680043467534e-5,-2.1309184877300774e-8,0.0027209858546815508,2.1346417556349277e-5,-2.0912787442917073e-8,0.002721347808163526,2.1132433058736414e-5,-2.06177932502233e-8,0.002721738732659261,2.101302770424033e-5,-2.045091160605777e-8,0.002722121842089695,2.0988064107378192e-5,-2.0412526919188236e-8,0.0027224663072612032,2.104272221321373e-5,-2.0482980964473065e-8,0.0027227497312666536,2.1152219247249398e-5,-2.0628864697851955e-8,0.0027229592187699085,2.1285646420264224e-5,-2.0808205423364215e-8,0.002723092024279769,2.140915534170127e-5,-2.0974851448080727e-8,0.002723156140984944,2.14891410191427e-5,-2.108288393508341e-8,0.002723170606461795,2.149605797679514e-5,-2.1091870780846034e-8,0.0027231647986974373,2.140913982897247e-5,-2.0973305086363463e-8,0.002723175747615389,2.122154123906254e-5,-2.0717585989345948e-8,0.0027232427667478894,2.094452464224403e-5,-2.0339705819586754e-8,0.0027233996145755853,2.0608713479640643e-5,-1.9880992713257535e-8,0.002723665721382843,2.026060892275378e-5,-1.9404470170278227e-8,0.0027240391567136266,1.9953854594028393e-5,-1.898310231028625e-8,0.002724494146855511,1.9736789731948312e-5,-1.8682948875842208e-8,0.002724984781134481,1.9639562245665583e-5,-1.8545605329381536e-8,0.002725454640230336,1.9664591180140306e-5,-1.8575060281540082e-8,0.0027258502841296267,1.978346436416098e-5,-1.8733227690675876e-8,0.0027261353236396123,1.9941877016394326e-5,-1.894645849238284e-8,0.002726301248658682,2.007230249813052e-5,-1.912271463933041e-8,0.0027263713289722514,2.011187104949174e-5,-1.9175991154117115e-8,0.002726395138448426,2.002057957804487e-5,-1.905127428909273e-8,0.002726434196991114,1.9793401183908815e-5,-1.8741182852925098e-8,0.0027265433420372793,1.946100805656228e-5,-1.828705235095383e-8,0.0027267551469351914,1.9078518607560066e-5,-1.7763682989189432e-8,0.002727073366580046,1.870747687105405e-5,-1.7254861286109985e-8,0.0027274765293817524,1.8398952985918913e-5,-1.683037011094019e-8,0.002727927993060576,1.818353027833995e-5,-1.6532295654523488e-8,0.0027283871266923043,1.8069347217504134e-5,-1.637222675764901e-8,0.0027288178204516824,1.804577514014172e-5,-1.633611041703065e-8,0.0027291931918580247,1.8089300870504294e-5,-1.6392157254153952e-8,0.0027294972768002954,1.816913014448269e-5,-1.649844892067187e-8,0.0027297251046408027,1.8251552466542002e-5,-1.660892918346911e-8,0.0027298822811575333,1.830324285422369e-5,-1.6677976929709144e-8,0.0027299846109979653,1.8294199006395545e-5,-1.6664471571957215e-8,0.0027300576392803658,1.8201084382144078e-5,-1.6536379482566312e-8,0.002730135367558795,1.801142871411346e-5,-1.6276481194654895e-8,0.0027302569950561194,1.772835840690819e-5,-1.5888815400112085e-8,0.002730460675000141,1.7374367034465673e-5,-1.540383280991605e-8,0.002730774317388617,1.6991538671805468e-5,-1.487874681986958e-8,0.002731205492992096,1.663554986253649e-5,-1.4389430286252634e-8,0.0027317346225685167,1.6362736100393333e-5,-1.401285392592605e-8,0.0027323159732417688,1.6213321694122396e-5,-1.3804237823242727e-8,0.0027328882043883593,1.6197272773221976e-5,-1.377768292956184e-8,0.002733391477933123,1.628923403372551e-5,-1.3899104903846669e-8,0.0027337846859482747,1.6435087027299024e-5,-1.4095004537599963e-8,0.002734056500043612,1.656745755001094e-5,-1.4273511480543449e-8,0.0027342271115420556,1.6624323330041047e-5,-1.4349761230979106e-8,0.002734341218625606,1.6564849873113524e-5,-1.4267579057934553e-8,0.0027344551943848145,1.6378505391622318e-5,-1.4012046808109738e-8,0.002734622289801755,1.608581588143182e-5,-1.3610682506044439e-8,0.0027348797656559553,1.5731229116967588e-5,-1.312384293400565e-8,0.0027352411979116873,1.5370487927067927e-5,-1.262758861964929e-8,0.0027356956705479342,1.5056407177672457e-5,-1.2194285616455754e-8,0.002736213318040265,1.4827270079832405e-5,-1.1876677483532097e-8,0.0027367546090290257,1.4700733657187753e-5,-1.169940036745348e-8,0.002737279962922846,1.4673731384326293e-5,-1.16586767454608e-8,0.0027377570640155654,1.4726736350655366e-5,-1.1728029197099415e-8,0.0027381648557289963,1.482989457646782e-5,-1.1866648191392354e-8,0.0027384946423735903,1.4948942426058718e-5,-1.2027544616739114e-8,0.002738749434445084,1.504985821963847e-5,-1.216399804528127e-8,0.0027389426406392242,1.5102225647928979e-5,-1.2234218749741384e-8,0.0027390967313658887,1.508190848938774e-5,-1.2205022203274869e-8,0.0027392418828776502,1.497377683520103e-5,-1.2055543818857391e-8,0.0027394140032673863,1.4774979914795335e-5,-1.1781703210623261e-8,0.0027396510558396095,1.449859754939216e-5,-1.1401214646296961e-8,0.0027399865631337478,1.4176337452192784e-5,-1.0957324233453986e-8,0.0027404401157403325,1.3857589419184968e-5,-1.0517579850249122e-8,0.002741006988407936,1.3601649709835046e-5,-1.016324470539438e-8,0.002741651946643131,1.3461932237357087e-5,-9.967701894510386e-9,0.0027423134297618586,1.3466164991872435e-5,-9.969292325791265e-9,0.0027429204127412043,1.3602045380436758e-5,-1.0151559338201335e-8,0.0027434161980657615,1.381781057785335e-5,-1.0443902181835858e-8,0.0027437775903663983,1.403930043979941e-5,-1.0744867582233018e-8,0.00274402026056172,1.4195086586668818e-5,-1.0956551973741348e-8,0.002744189707180539,1.4237647948831023e-5,-1.101361813162918e-8,0.0027443444308235623,1.4153214739371446e-5,-1.0896808965594635e-8,0.0027445391212823013,1.3960083614703103e-5,-1.063071839494125e-8,0.0027448126229584063,1.369940353501182e-5,-1.0271311517205686e-8,0.0027451820491002014,1.342296064314159e-5,-9.889353385649206e-9,0.0027456424369939375,1.3181296837245952e-5,-9.554228595057486e-9,0.0027461706266553357,1.301415215625418e-5,-9.320814951324564e-9,0.0027467319065318033,1.2944348784452829e-5,-9.220945708603037e-9,0.0027472878430236675,1.297566686114043e-5,-9.26028974478475e-9,0.0027478036209455806,1.3094521161716708e-5,-9.420488426281658e-9,0.0027482535395967965,1.3274409109423844e-5,-9.665206228210173e-9,0.002748624017387072,1.3481665911821765e-5,-9.94808846615289e-9,0.002748914201993835,1.3681151040180056e-5,-1.0220678594459335e-8,0.002749134840466332,1.3840922486020028e-5,-1.0438925666362003e-8,0.0027493062755827883,1.3935617636275572e-5,-1.0567851392877573e-8,0.0027494561978375956,1.3948871850020234e-5,-1.0584841736813426e-8,0.002749617298368145,1.3875330877006017e-5,-1.0482372438320108e-8,0.002749824478571436,1.3722661790345272e-5,-1.0270772986168708e-8,0.002750110830763187,1.3513482353169196e-5,-9.98093410823438e-9,0.00275050148863685,1.3286167853943228e-5,-9.665504146217214e-9,0.0027510052007713166,1.3092282740735443e-5,-9.395433012835077e-9,0.0027516054627253683,1.2987797311630384e-5,-9.247916863310523e-9,0.0027522560077975567,1.3016795714357577e-5,-9.283940992366734e-9,0.002752887270832192,1.3191513005764179e-5,-9.520705716744854e-9,0.0027534268750110877,1.3479307947422266e-5,-9.913575792228905e-9,0.002753827252818105,1.380820104122874e-5,-1.0363635022831688e-8,0.002754085066367869,1.4092408000508905e-5,-1.0752843979321471e-8,0.002754240423604777,1.4264671631161601e-5,-1.0988570669126968e-8,0.0027543577158397454,1.4297504261183262e-5,-1.1032801675695634e-8,0.0027545010082918016,1.4205075789953122e-5,-1.0904699986993847e-8,0.0027547161998007054,1.4030591799180186e-5,-1.0663283329901377e-8,0.0027550240194078655,1.3829185117178249e-5,-1.0384043206256625e-8,0.002755421453020712,1.3653474454465471e-5,-1.0139258403077382e-8,0.0027558875196220835,1.3544259564344984e-5,-9.985280220478687e-9,0.0027563903321073395,1.3525955479519786e-5,-9.956181654857124e-9,0.0027568938904163395,1.3605460183974092e-5,-1.0062009063794016e-8,0.002757364073561223,1.3773418082126131e-5,-1.029030898978133e-8,0.0027577735523741467,1.4007312606634619e-5,-1.0610254942756665e-8,0.002758105281049702,1.4275878871466236e-5,-1.0978721485269755e-8,0.0027583543129910426,1.4544196144378514e-5,-1.1347397176404875e-8,0.002758527884760369,1.4778781498711986e-5,-1.1669921998794136e-8,0.0027586439565762334,1.495202207329257e-5,-1.1908062139585563e-8,0.0027587286752269713,1.5045486741457556e-5,-1.2036263263573345e-8,0.002758813283168323,1.5052079543374385e-5,-1.2044567346228864e-8,0.0027589307562035483,1.497726783006875e-5,-1.1940277717807085e-8,0.0027591121400170103,1.4839587044545021e-5,-1.1748696271030066e-8,0.002759382258301141,1.4670374331164395e-5,-1.1512860934478634e-8,0.0027597543590631487,1.4512060743916354e-5,-1.1291303651724086e-8,0.002760223851724849,1.4413504572653444e-5,-1.1151667518328181e-8,0.002760762772812467,1.4420577561528979e-5,-1.1157671499436408e-8,0.002761318710750578,1.4561512390203414e-5,-1.1348746558323507e-8,0.00276182335825203,1.483046758444795e-5,-1.171717072812087e-8,0.002762213232767044,1.5178600777388183e-5,-1.2195628938203373e-8,0.0027624561618459875,1.5523579998102924e-5,-1.2670370954457433e-8,0.002762568055471419,1.577896645887847e-5,-1.3021911778698365e-8,0.002762607053442844,1.588892345218556e-5,-1.3173036202525945e-8,0.0027626477535367317,1.5847494556313896e-5,-1.3115353264673006e-8,0.002762752148698717,1.5693341116187472e-5,-1.290193227055894e-8,0.002762952717258098,1.5488291251018845e-5,-1.2617722370350503e-8,0.0027632510418019677,1.5294686690858635e-5,-1.2348462136331391e-8,0.0027636259344087917,1.5160707656321381e-5,-1.2160612203495138e-8,0.002764043924793039,1.511465428428553e-5,-1.2093523880228672e-8,0.002764468105360931,1.5165219435121325e-5,-1.2159711904489318e-8,0.0027648642771565795,1.5304554776486206e-5,-1.2348881160795975e-8,0.00276520491193756,1.551214917612753e-5,-1.2633083740317827e-8,0.0027654717421526196,1.5758859205074683e-5,-1.2972187445271782e-8,0.0027656573615933593,1.601108180866163e-5,-1.331966747011974e-8,0.0027657658412326984,1.623508143758839e-5,-1.3628693916074076e-8,0.0027658122315612965,1.6401336192405455e-5,-1.385824500072823e-8,0.0027658208032614435,1.64885423505343e-5,-1.397868551819702e-8,0.0027658220656359834,1.6486733828388484e-5,-1.397605157394892e-8,0.002765848891824904,1.639909794692674e-5,-1.3854513826157042e-8,0.0027659321674139512,1.6242317878778517e-5,-1.3636849548780435e-8,0.002766096303503263,1.6045369593808686e-5,-1.3362857387789591e-8,0.0027663548615603564,1.5846730676314847e-5,-1.308562701077851e-8,0.0027667064826740096,1.5689835021215877e-5,-1.2865361853446855e-8,0.002767131628491153,1.5616253392744474e-5,-1.2759959238257351e-8,0.002767591541465577,1.565613932350352e-5,-1.2811680422273687e-8,0.0027680318643640033,1.581672526418174e-5,-1.3031031172521404e-8,0.0027683935757452003,1.607229328191158e-5,-1.3382687188492964e-8,0.0027686315906423767,1.6362317419807093e-5,-1.3782849249591848e-8,0.0027687352106116232,1.660487394222258e-5,-1.4117902190796029e-8,0.002768738239820442,1.6725105080637398e-5,-1.4283993588661351e-8,0.0027687087079556953,1.6685822510540136e-5,-1.422947633870195e-8,0.0027687213527381837,1.650176304721841e-5,-1.3974559220475729e-8,0.0027688289978741332,1.622925799770131e-5,-1.3596908755438644e-8,0.002769048363398059,1.594031700512789e-5,-1.3195832869032236e-8,0.00276936337344147,1.569769408859385e-5,-1.2857958409166736e-8,0.002769738192543268,1.5541237964123733e-5,-1.2638499739393606e-8,0.002770130857577132,1.5485700596560033e-5,-1.2558236264973412e-8,0.0027705028435936804,1.5525121557837643e-5,-1.2609441752677153e-8,0.002770824104016123,1.5639139817898094e-5,-1.2764417778794309e-8,0.0027710750382562957,1.579871667179225e-5,-1.298325399628226e-8,0.002771246995946245,1.5970684935818387e-5,-1.322007185623983e-8,0.0027713422068845884,1.6121524757386047e-5,-1.3428307331702114e-8,0.0027713733059165882,1.622087961293736e-5,-1.3565689517813172e-8,0.0027713622519797507,1.6245092710609566e-5,-1.3599228831309594e-8,0.002771338258376431,1.6180665568763176e-5,-1.3510033682923686e-8,0.0027713344138243505,1.6027070557930125e-5,-1.3297175460530656e-8,0.0027713830768532144,1.579813080854103e-5,-1.2979564370243544e-8,0.0027715105782646693,1.5521323628688927e-5,-1.2595002061998987e-8,0.002771732045267941,1.5234636665673235e-5,-1.2195915802458485e-8,0.002772047301432447,1.4981007805899022e-5,-1.1841777298032802e-8,0.002772438752589332,1.4800880562158318e-5,-1.1588867502371844e-8,0.0027728720133379584,1.4723695349422957e-5,-1.1478455258934069e-8,0.0027733000270757664,1.475936384689405e-5,-1.1524829287417343e-8,0.0027736714038943994,1.4891518683271445e-5,-1.1705728640433002e-8,0.002773942949580787,1.5075513691583893e-5,-1.1959405556781578e-8,0.002774094298536084,1.5244784160866828e-5,-1.2193420369479077e-8,0.00277413935771806,1.5327642621168224e-5,-1.2308056164262575e-8,0.002774127095241945,1.5271382737278492e-5,-1.222991079233378e-8,0.002774127125267959,1.5063483024427677e-5,-1.1941373736095969e-8,0.002774204509579759,1.4737530909312808e-5,-1.1488800019336111e-8,0.0027743965548067697,1.43593324733346e-5,-1.0963210259393599e-8,0.0027747034985702353,1.4001351538615448e-5,-1.0464911437262635e-8,0.0027750951364715324,1.3719672259939094e-5,-1.007167416389651e-8,0.002775526051367617,1.3542754928601997e-5,-9.823200461899074e-9,0.0027759503581378433,1.3472044653032601e-5,-9.721903248961207e-9,0.0027763311030684443,1.3489110782461308e-5,-9.742655844025204e-9,0.0027766441055164853,1.356402503429683e-5,-9.84425800476849e-9,0.002776878237542247,1.3662175145885656e-5,-9.978801364369811e-9,0.00277703421910064,1.3749001999510627e-5,-1.0098250340897997e-8,0.002777123145672282,1.3793304300500613e-5,-1.0159108468992627e-8,0.002777165069365021,1.3769948799978488e-5,-1.012627712891473e-8,0.002777187380425079,1.366257139239754e-5,-9.976865115490197e-9,0.002777222427192686,1.3466379006569386e-5,-9.704079704233e-9,0.002777303795784524,1.3190508945819256e-5,-9.32046418862628e-9,0.0027774610887294536,1.285887005615791e-5,-8.859037531642524e-9,0.00277771379236086,1.250829794191475e-5,-8.370757335750319e-9,0.0027780656045215007,1.2183280121571277e-5,-7.917278908180143e-9,0.00277850108054271,1.1927476784055753e-5,-7.559280656595044e-9,0.002778986285044394,1.1773582658743977e-5,-7.3424319327927995e-9,0.0027794741941447932,1.1734065609188585e-5,-7.284473669250357e-9,0.0027799142794985264,1.1795451333347614e-5,-7.367127372081157e-9,0.00278026452821218,1.1918270864807826e-5,-7.535846169209884e-9,0.0027805032458643373,1.204384768123753e-5,-7.709138116829781e-9,0.0027806373209791524,1.2107676158375936e-5,-7.797171506191644e-9,0.002780703452468078,1.2057033090757864e-5,-7.726358310931846e-9,0.002780759925646668,1.186787561236933e-5,-7.46295792291357e-9,0.002780869728653987,1.155427127221588e-5,-7.026249491461181e-9,0.002781080498337681,1.1164946271353642e-5,-6.483757041896363e-9,0.002781409786732128,1.0767143875816982e-5,-5.928845847483083e-9,0.0027818421004138097,1.04248448157659e-5,-5.450501229246064e-9,0.0027823377629871307,1.0181105245430409e-5,-5.10879819574084e-9,0.002782847735319512,1.0050699713777196e-5,-4.924616944992279e-9,0.002783327243787241,1.0022856728953502e-5,-4.883325460734916e-9,0.0027837440651562097,1.0069594711575953e-5,-4.94624874966697e-9,0.0027840812269027786,1.015483206039899e-5,-5.063271670053514e-9,0.0027843360787357524,1.024152532104462e-5,-5.1827770304128115e-9,0.002784517883012557,1.0296305457586499e-5,-5.258162067166841e-9,0.0027846452783812006,1.0292292461840592e-5,-5.251838399917288e-9,0.002784744078074569,1.0211053940810853e-5,-5.138017383006263e-9,0.0027848451722726508,1.004447040455388e-5,-4.905319130341186e-9,0.002784981869337182,9.796760182050914e-6,-4.559563393831464e-9,0.0027851859388087303,9.486172936094592e-6,-4.1260871182282976e-9,0.0027854820195520776,9.145128566965864e-6,-3.649923337373014e-9,0.0027858809685050146,8.817212839408479e-6,-3.1916519447886542e-9,0.002786374004344479,8.549858663854469e-6,-2.8172810988601715e-9,0.002786930516713693,8.38311526590999e-6,-2.5826759770245543e-9,0.0027875021251903167,8.337323332657525e-6,-2.5164033042951878e-9,0.002788033442730153,8.404341144331321e-6,-2.6074358965324996e-9,0.0027884768663511967,8.546587963184419e-6,-2.8036922561923524e-9,0.002788806444515096,8.705359435428541e-6,-3.023511191011914e-9,0.002789025898946628,8.816155454370437e-6,-3.1769693624562517e-9,0.00278916808580964,8.826174280013064e-6,-3.1902919454504053e-9,0.0027892861494492062,8.708654066453408e-6,-3.0259083522581603e-9,0.002789439024007953,8.46996585135858e-6,-2.6924102085292982e-9,0.0027896754169786063,8.14743898998842e-6,-2.2415918566646356e-9,0.002790020989298804,7.798481749683577e-6,-1.7533598997337004e-9,0.0027904727105389194,7.484380983397801e-6,-1.3132102122914294e-9,0.0027910019465777094,7.254182931369871e-6,-9.89761674395551e-10,0.0027915644996498075,7.133899378245067e-6,-8.196308089392246e-10,0.002792113334641582,7.123723332179867e-6,-8.034153427098901e-10,0.0027926094573086616,7.202432983697204e-6,-9.117101623954198e-10,0.002793028233302452,7.335726174669705e-6,-1.0966748720526548e-9,0.0027933609484635524,7.4849003149403414e-6,-1.3041707157630382e-9,0.002793613109513304,7.61360949860106e-6,-1.4832721372423023e-9,0.002793801331699417,7.692125726622039e-6,-1.5923023708007069e-9,0.0027939501157332436,7.699650544928369e-6,-1.602113739190793e-9,0.0027940890449749374,7.62559574208575e-6,-1.4978805430814948e-9,0.0027942502546082484,7.47061613566804e-6,-1.2805101597583769e-9,0.002794465545354246,7.247708832349798e-6,-9.681400023267961e-10,0.0027947623730721393,6.982972729165114e-6,-5.97180208495864e-10,0.002795158293619206,6.714815163187818e-6,-2.2122179168722028e-10,0.0027956544044971682,6.489842552957791e-6,9.465788350054435e-11,0.0027962298905296608,6.353985618709735e-6,2.862426270105938e-10,0.0027968413003591638,6.339329590931643e-6,3.085594249353236e-10,0.002797430023565606,6.450574770211097e-6,1.5483829055035215e-10,0.0027979381407812233,6.657939065789282e-6,-1.33481326751483e-10,0.0027983274370340884,6.9023050870562255e-6,-4.73865860969561e-10,0.0027985929487883057,7.112534229482264e-6,-7.668664513252449e-10,0.0027987644712778367,7.227889781129287e-6,-9.274873085756629e-10,0.002798895846497114,7.215922522318092e-6,-9.102130577481535e-10,0.0027990476214502418,7.07954168609196e-6,-7.189055791823305e-10,0.002799270159329704,6.8528184660678055e-6,-4.0097058487487015e-10,0.0027995921098042825,6.589150394962895e-6,-3.089155205840986e-11,0.0028000160559371254,6.346543838175632e-6,3.10246237176008e-10,0.0028005208861621384,6.174077528739478e-6,5.536306075559972e-10,0.002801069138807742,6.102332622183427e-6,6.561508599671992e-10,0.002801616887775129,6.139228531226112e-6,6.063570042587458e-10,0.0028021235424224794,6.271340195284573e-6,4.227738196672006e-10,0.0028025593261495505,6.469448209654452e-6,1.462323628969768e-10,0.002802909202716053,6.696171451931554e-6,-1.7081556781815749e-10,0.0028031732715659992,6.913472533175175e-6,-4.748902722777455e-10,0.002803364595060627,7.088522312131387e-6,-7.198047146353163e-10,0.002803505761944061,7.197381055746142e-6,-8.718919784335805e-10,0.002803625279954858,7.226791581760613e-6,-9.125259098952547e-10,0.0028037543398572442,7.1748236665111314e-6,-8.389867042693141e-10,0.0028039239008144736,7.051055423278122e-6,-6.646711695244907e-10,0.0028041616337651505,6.8765748079719594e-6,-4.190817695600791e-10,0.0028044880974484863,6.6835013555270844e-6,-1.471822583423747e-10,0.0028049117634366405,6.5130028002482435e-6,9.333211200818222e-11,0.002805423407949294,6.410183518830969e-6,2.391581525590211e-10,0.0028059919682429956,6.414458134729057e-6,2.348761811647254e-10,0.0028065656354558507,6.545964496883274e-6,5.204916047160679e-11,0.0028070820322286597,6.792467980851788e-6,-2.923256812302114e-10,0.0028074875111325586,7.1049452709561795e-6,-7.295484999982558e-10,0.002807758398439204,7.408801568743201e-6,-1.1549479735996095e-9,0.002807912309953183,7.629016879277494e-6,-1.4632184010996237e-9,0.0028080018600268285,7.717209899264664e-6,-1.5864308892715257e-9,0.00280809416469148,7.666574793887121e-6,-1.5149558263742769e-9,0.0028082476851966315,7.509156810078956e-6,-1.293585924107478e-9,0.0028084967768828226,7.30058864751775e-6,-1.0001414868267381e-9,0.002808847262739549,7.101610708252468e-6,-7.196587372359342e-10,0.0028092805508106752,6.9632211202788204e-6,-5.236849754708002e-10,0.0028097620700029556,6.9179843415002716e-6,-4.5813084509820613e-10,0.0028102506436204987,6.977109497128568e-6,-5.3909443895529e-10,0.002810706875116468,7.1318269763759485e-6,-7.546337294862254e-10,0.002811099653827845,7.357649721019065e-6,-1.0705937383009498e-9,0.0028114103186717213,7.620360090645017e-6,-1.4389400470211245e-9,0.0028116342841793644,7.882562522965005e-6,-1.8069960493090511e-9,0.002811780336556491,8.109700436176797e-6,-2.1259981185286337e-9,0.0028118681577567702,8.274759500587497e-6,-2.3578054290919355e-9,0.002811924804212133,8.361260065829955e-6,-2.479149299892737e-9,0.002811980892546883,8.36454527445245e-6,-2.4834224476780367e-9,0.0028120670235339054,8.291786877210306e-6,-2.380638941437992e-9,0.002812210545938763,8.161235186498023e-6,-2.196355734372293e-9,0.0028124324269317093,8.000947582996757e-6,-1.9699141477060387e-9,0.0028127438794841287,7.846806856187975e-6,-1.7517213264542863e-9,0.002813142552806622,7.739137129470781e-6,-1.5985536553676695e-9,0.002813608808015108,7.716755992795095e-6,-1.5652027889490953e-9,0.002814103934259319,7.807540942446503e-6,-1.6911479779159391e-9,0.0028145735374341036,8.016337002635303e-6,-1.9834359406417603e-9,0.0028149593679730016,8.31455967856922e-6,-2.4019489267911616e-9,0.0028152192752681693,8.639495206008205e-6,-2.858393347499628e-9,0.002815347491924279,8.910155826623826e-6,-3.238690313459153e-9,0.0028153820992645705,9.056877288906372e-6,-3.444739279219633e-9,0.0028153917225959865,9.049565373279847e-6,-3.434183721829044e-9,0.0028154478006963196,8.907688181128402e-6,-3.234368005566589e-9,0.0028155987912163055,8.687766600877536e-6,-2.924641731063571e-9,0.002815858796138938,8.458997654451106e-6,-2.6021037702235526e-9,0.0028162112125574854,8.281283974367032e-6,-2.3508457347741356e-9,0.002816620244870729,8.193045999255578e-6,-2.2249439851131193e-9,0.002817043196425516,8.208464494140208e-6,-2.2446042949535775e-9,0.0028174399451113383,8.320583317078408e-6,-2.4004250119473305e-9,0.0028177788955663485,8.506869283546043e-6,-2.661052702041974e-9,0.0028180401266746525,8.735196722855205e-6,-2.9814634943747566e-9,0.002818216618208338,8.969546300902432e-6,-3.3109360361838935e-9,0.0028183139820533165,9.175233421802618e-6,-3.600466281728827e-9,0.0028183488727125663,9.323413400084446e-6,-3.809217986798757e-9,0.0028183463049050498,9.39458305470024e-6,-3.90954465122841e-9,0.0028183361606477814,9.380837778898787e-6,-3.890194719106599e-9,0.002818349263122649,9.286671155840795e-6,-3.757406772881838e-9,0.002818413492033781,9.128333531433483e-6,-3.53396419516556e-9,0.0028185502773691137,8.932029054209705e-6,-3.2566550844126667e-9,0.0028187715560268277,8.731181934898563e-6,-2.972477812164968e-9,0.0028190771735186674,8.562773878565448e-6,-2.7335615331514525e-9,0.002819452811212173,8.462515809163019e-6,-2.5904087552382515e-9,0.0028198689659859892,8.458399189389392e-6,-2.5827732791303527e-9,0.0028202823760493027,8.562461789260582e-6,-2.7279409911836136e-9,0.0028206420530898016,8.76203294867925e-6,-3.0082465413739715e-9,0.0028209016970371353,9.01428419331315e-6,-3.3633026041725225e-9,0.0028210372630595158,9.250300643214355e-6,-3.695772409602383e-9,0.0028210625026776777,9.393515552182452e-6,-3.897503770163006e-9,0.0028210309762700552,9.388841811821506e-6,-3.890735771174717e-9,0.0028210180397079793,9.227581680220804e-6,-3.6632088806019304e-9,0.002821090430482207,8.951597895319539e-6,-3.273910330543877e-9,0.002821281364602508,8.633748034245999e-6,-2.8253997402826636e-9,0.0028215841712364,8.34816387734706e-6,-2.4219756103304343e-9,0.0028219629940235817,8.147536600047868e-6,-2.1378075495426764e-9,0.0028223698510740254,8.054819543764938e-6,-2.0053439921519466e-9,0.002822758897752516,8.06627654451556e-6,-2.0195926662397562e-9,0.0028230947143213737,8.159510301354147e-6,-2.149322407764077e-9,0.0028233554406812823,8.301852148391436e-6,-2.348744115947894e-9,0.00282353282593384,8.45708600749022e-6,-2.5668892800147934e-9,0.002823630975521782,8.590367413029983e-6,-2.754534233626674e-9,0.002823664602469181,8.671985233133684e-6,-2.869577271902303e-9,0.0028236568220320374,8.680413957217215e-6,-2.881448031847007e-9,0.002823636368151626,8.604700974308771e-6,-2.77454826352887e-9,0.00282363417253053,8.446003171394267e-6,-2.55042869198829e-9,0.0028236793809163405,8.217892940976991e-6,-2.2281801649158934e-9,0.0028237951897224314,7.945063459574405e-6,-1.8425677017566835e-9,0.0028239951055245996,7.660380146708828e-6,-1.4398777251617586e-9,0.0028242801645024245,7.40050743300998e-6,-1.0718072754261351e-9,0.0028246375107151937,7.200455492493439e-6,-7.878393942073073e-10,0.002825040666646605,7.087470503711195e-6,-6.266431600801484e-10,0.002825451877475943,7.074723084324243e-6,-6.071044899922806e-10,0.00282582713879414,7.155466286875476e-6,-7.199525343266866e-10,0.0028261246005233435,7.299190176080726e-6,-9.222045847808211e-10,0.00282631625064073,7.452589468357933e-6,-1.138486076576167e-9,0.002826400528199012,7.5487591099507736e-6,-1.2740885116638722e-9,0.002826410104662908,7.52604944408374e-6,-1.2417419852670848e-9,0.0028264072933222306,7.3519489307029926e-6,-9.95445629992879e-10,0.002826464019776748,7.0400481913062265e-6,-5.543990372405558e-10,0.0028266339859106117,6.6478080126638315e-6,2.5428477574195166e-13,0.002826932486316038,6.254009951919073e-6,5.573195548555597e-10,0.002827334926475173,5.928910433440534e-6,1.017639188279871e-9,0.0028277917797869642,5.7135131054699254E-06,1.3232757200131534e-9,0.002828248468891538,5.614983691413445e-6,1.4639603114758254e-9,0.0028286601533812237,5.614073569452187e-6,1.4666632447107474e-9,0.0028289983913868215,5.676607424183315e-6,1.379463686399024e-9,0.002829251626940915,5.763552361016194e-6,1.257411163440545e-9,0.0028294226533315623,5.8378051497912814e-6,1.1529709034080448e-9,0.002829525391442807,5.868127420486881e-6,1.1104318965864509e-9,0.002829581983388046,5.831461400637911e-6,1.162556397104102e-9,0.0028296201636700017,5.714584370675174e-6,1.3281613329217984e-9,0.0028296704970861516,5.515438234757098e-6,1.610201352537694e-9,0.0028297631021037386,5.243980536622576e-6,1.9945855887171813e-9,0.0028299236827314406,4.922012339098648e-6,2.4504737826893106e-9,0.0028301691569658544,4.581263003820374e-6,2.933023335426697e-9,0.0028305037217332307,4.259296600010102e-6,3.3891673170969797e-9,0.002830916459461489,3.993408191619676e-6,3.766190530193445e-9,0.0028313814792820546,3.8133369601973606e-6,4.021977064794002e-9,0.0028318611572783646,3.7341893056990802e-6,4.135010647324168e-9,0.0028323123871055148,3.7511839643312496e-6,4.1118687449955575e-9,0.002832695135207755,3.837639289960757e-6,3.990171251095755e-9,0.0028329821184355144,3.947374265896908e-6,3.835263147375323e-9,0.0028331678013638183,4.02244680576321e-6,3.7292680413861366e-9,0.002833273994081028,4.0063226672806816e-6,3.752376733977591e-9,0.0028333486086335536,3.8605677828823e-6,3.959124752584863e-9,0.0028334548656437477,3.5800588386143807e-6,4.356815088093346e-9,0.0028336519146150165,3.199196575199989e-6,4.896744085319297e-9,0.002833973775156948,2.7832242943678695e-6,5.486528461109836e-9,0.002834417043797699,2.4062456980927005e-6,6.021220646396547e-9,0.002834944056387233,2.1262318186002894e-6,6.418661302859258e-9,0.0028354988875670265,1.969203084860813e-6,6.641874660667108e-9,0.0028360266300474844,1.927913656213458e-6,6.70098348403756e-9,0.0028364871221820765,1.971420933258333e-6,6.639725869469694e-9,0.0028368601012207684,2.0580493155069e-6,6.517137481949485e-9,0.002837143798391918,2.146084523307919e-6,6.392404569592256e-9,0.0028373505649315713,2.200262702481213e-6,6.315634711039505e-9,0.0028375022225614853,2.194747581939334e-6,6.323580516384682e-9,0.002837626278744532,2.1141632193792574e-6,6.438118184879123e-9,0.002837752983195648,1.9539503821470446e-6,6.665710573780227e-9,0.002837912672316925,1.720635357079953e-6,6.997035491702147e-9,0.0028381327625960472,1.4319563558805509e-6,7.406851308263388e-9,0.0028384339774149996,1.1162175023410766e-6,7.85496469067567e-9,0.0028388259645027686,8.098741102245192e-7,8.289678744088075e-9,0.0028393032769971362,5.525056854996284e-7,8.654901931555912e-9,0.002839843390194472,3.791424868007549e-7,8.900980702450035e-9,0.0028404085467517684,3.1124743347196077e-7,8.997452128487504e-9,0.002840952357445899,3.4901622113740223e-7,8.943973785765355e-9,0.002841430295633725,4.68119085106208e-7,8.775000509935415e-9,0.0028418113735728568,6.229385663401742e-7,8.555251582211405e-9,0.0028420874546643236,7.562180083845292e-7,8.366042862071104e-9,0.002842277186103206,8.12928826496597e-7,8.28557717186452e-9,0.0028424229792514757,7.548341939316745e-7,8.368220742089385e-9,0.0028425812098529235,5.718152359385369e-7,8.628388634888865e-9,0.002842807562695609,2.864119988032696e-7,9.034090564959052e-9,0.0028431411958904427,-5.075784686922267e-8,9.513435790152513e-9,0.002843592795816794,-3.745954342178899e-7,9.973922781259542e-9,0.00284414136383234,-6.243541079214667e-7,1.0329162879331443e-8,0.0028447415293055118,-7.608178796241404e-7,1.0523290713005752e-8,0.0028453383289325533,-7.7516339165713e-7,1.0543619193061516e-8,0.0028458829874018483,-6.870431643594794e-7,1.0418002465363624e-8,0.002846343745861855,-5.347045473568402e-7,1.0200845400060194e-8,0.002846709393672464,-3.626758819940621e-7,9.955588339874181e-9,0.0028469868913886353,-2.1168976993434465e-7,9.740321417669294e-9,0.0028471961486281772,-1.1277953739782726e-7,9.5993194186896e-9,0.002847364587199702,-8.507667609072321e-8,9.559858106078426e-9,0.0028475227795878447,-1.357926730672906e-7,9.63217247842041e-9,0.0028477012760148397,-2.6098770439544055e-7,9.810568108142715e-9,0.0028479280799226956,-4.4634904759132186e-7,1.0074568307647262e-8,0.002848226026012085,-6.678989044547163e-7,1.038996413878128e-8,0.002848609485491815,-8.932110104100397e-7,1.0710570698878495e-8,0.0028490803883028048,-1.08421348997412e-6,1.0982211998329638e-8,0.0028496244808374053,-1.2027066912850638e-6,1.1150545368581883e-8,0.0028502098087099434,-1.2189535497820264e-6,1.117325646547346e-8,0.0028507899812964224,-1.1218694346857707e-6,1.1034558640475975e-8,0.0028513137786630493,-9.269848437980516e-7,1.0756559639854864e-8,0.0028517396184371633,-6.772541783626091e-7,1.040045521595228e-8,0.002852049745857075,-4.3383629160081065e-7,1.0053410747715433e-8,0.002852257667938162,-2.588555502582333e-7,9.80397507841194e-9,0.0028524050176591494,-1.966808876808624e-7,9.715373390453078e-9,0.002852549088431962,-2.610733914805113e-7,9.807193562515353e-9,0.002852746181827145,-4.3236107396414083e-7,1.0051389365553414e-8,0.002853036583500799,-6.643300296990387e-7,1.0382115635541902e-8,0.0028534351813685878,-8.975086395893872e-7,1.0714629219647167e-8,0.002853929365115319,-1.0745790729053187e-6,1.096719853065988e-8,0.0028544839144717562,-1.1539281212368752e-6,1.1080391616891132e-8,0.002855051068247713,-1.1181731669905117e-6,1.1029268499031812e-8,0.002855582768565016,-9.75875355579879e-7,1.0825912624788529e-8,0.0028560415652221956,-7.566392276976092e-7,1.051252610395587e-8,0.0028564073406055135,-5.018534207721013e-7,1.0148247915315251e-8,0.002856678785926064,-2.5444286344771827e-7,9.794490668368394e-9,0.002856870524742683,-5.058886026101649e-8,9.503046426891806e-9,0.002857007914873242,8.512852095070961e-8,9.30908662963937e-9,0.0028571215454132087,1.412895044493818e-7,9.22891211852966e-9,0.002857242681589101,1.1896856287060092e-7,9.260923881079643e-9,0.0028573999738171854,3.009713316077348e-8,9.38800232202608e-9,0.0028576170512156747,-1.0428600410014353e-7,9.580041432918065e-9,0.002857910332403342,-2.5568229132032263e-7,9.796312889070212e-9,0.002858286478980994,-3.900984786692505e-7,9.988259642955946e-9,0.002858739364701392,-4.712582429285285e-7,1.0104059717794627e-8,0.00285924729195101,-4.661759280679692e-7,1.0096572400747676e-8,0.002859772355326098,-3.5361998523694726e-7,9.935435750221926e-9,0.0028602647405304277,-1.3415193562808552e-7,9.621442048735044e-9,0.0028606740590430527,1.6248167838119398e-7,9.197139078236257e-9,0.0028609662384943444,4.78853899398024e-7,8.74468806781909e-9,0.002861139063409164,7.44255750862787e-7,8.365236229068475e-9,0.0028612269346888057,8.984655386532225e-7,8.144871394043985e-9,0.002861290126468282,9.137233591571715e-7,8.123196247026203e-9,0.0028613933351704225,8.035260371148903e-7,8.280824203979028e-9,0.002861584483698411,6.150660520729815e-7,8.55027050948895e-9,0.0028618827041504077,4.113854839993796e-7,8.841474477305177e-9,0.0028622775767180642,2.524378755512151e-7,9.068802254899132e-9,0.0028627363987564036,1.8135003911035153e-7,9.17060221962431e-9,0.0028632149243848224,2.1781405590917407e-7,9.118624569170666e-9,0.002863668101326738,3.577669060595684e-7,8.918529212376947e-9,0.0028640588395250108,5.775725882547501e-7,8.603998240368662e-9,0.002864363874395403,8.409557603452859e-7,8.226895323903023e-9,0.002864576317683268,1.1070964706719793e-6,7.845700967819764e-9,0.0028647049562361203,1.3383042800297684e-6,7.514484405755572e-9,0.0028647709664122996,1.505912805444349e-6,7.274393180785887e-9,0.0028648031644739605,1.5936658590036488e-6,7.148753085068565e-9,0.0028648329825001757,1.5985844872876452e-6,7.141820831205116e-9,0.0028648901078107145,1.5298597346848266e-6,7.240401923975936e-9,0.0028649992237887115,1.40662889791498e-6,7.417073022953166e-9,0.002865177723667968,1.255395999935133e-6,7.63388684017037e-9,0.002865433962330402,1.1074017364182093e-6,7.84611558047985e-9,0.0028657656359532793,9.9575507730559e-7,8.006322067477023e-9,0.002866158158739561,9.517297115380463e-7,8.069644697438206e-9,0.0028665835690910722,9.99411061201828e-7,8.001485323787432e-9,0.0028670015032235038,1.1483302317519537e-6,7.788115041184415e-9,0.002867364559705957,1.3852827350377053e-6,7.448455109494122e-9,0.0028676299233594852,1.6691386030128764e-6,7.041536345565719e-9,0.0028677759678411305,1.9347439744128324e-6,6.660862146080923e-9,0.0028678167309223023,2.1103546939003207e-6,6.409323306547407e-9,0.0028678034788689843,2.144698261273195e-6,6.3603400593137696e-9,0.0028678078376921227,2.029720577821034e-6,6.525302617003996e-9,0.0028678938191672595,1.8044434865642015e-6,6.8481776203151215e-9,0.002868094666236441,1.5376263800915127e-6,7.230454856236507e-9,0.002868405913933894,1.3009574329347206e-6,7.569539411050057e-9,0.0028687938676968555,1.1474463535309566e-6,7.789602788927635e-9,0.002869210861589051,1.1019524188615657e-6,7.855057338570128e-9,0.002869609334325944,1.1622461307956396e-6,7.769013139741857e-9,0.002869951231852881,1.3057241037395412e-6,7.563711223382599e-9,0.002870212677215331,1.4976923875705954e-6,7.288744102079043e-9,0.002870385194690064,1.699062535904297e-6,7.000097817318875e-9,0.002870474725317542,1.8727935944983242e-6,6.75093165594071e-9,0.002870499135165648,1.988954290042755e-6,6.584275013804583e-9,0.00287048464138741,2.0282382639665136e-6,6.527917653518532e-9,0.0028704616140799583,1.9837809533528225e-6,6.5917562221991524E-09,0.0028704602549171655,1.8612665906276216e-6,6.767640226165102e-9,0.002870506668811975,1.6774673462495774e-6,7.031500508441279e-9,0.0028706197689758587,1.457604560662817e-6,7.34716419913411e-9,0.0028708091655566463,1.2320673332684813e-6,7.671058717135242e-9,0.0028710739127016565,1.0328358362055718e-6,7.957305852913069e-9,0.0028714019528153388,8.896734068155328e-7,8.163146833604354e-9,0.0028717702214416355,8.259448522978371e-7,8.254940922690583e-9,0.0028721457505871515,8.537612288983449e-7,8.215181934479207e-9,0.0028724887943640687,9.684630238408015e-7,8.050494120702066e-9,0.0028727594429303256,1.1436800035455436e-6,7.798780069504199e-9,0.0028729285817180555,1.3300651297795598e-6,7.531028042365649e-9,0.0028729915695690435,1.462263368762386e-6,7.341218977444032e-9,0.002872978448805743,1.4772429274966988e-6,7.3198920236120235e-9,0.002872951252863827,1.339998687991839e-6,7.517195289934864e-9,0.0028729836176172785,1.0630678713911078e-6,7.914951705548082e-9,0.0028731308183241877,7.051695488262558e-7,8.42876029911416e-9,0.0028734078884947605,3.473260311513201e-7,8.942348496380804e-9,0.0028737882087745852,6.114666054513867e-8,9.353047158655345e-9,0.002874219668384876,-1.1272126322969022e-7,9.602619303010073e-9,0.0028746456433421104,-1.6888577001482716e-7,9.683354937474298e-9,0.002875020314855133,-1.291094150016922e-7,9.626438926383505e-9,0.00287531548780091,-3.018828501717634e-8,9.484597230108128e-9,0.0028755210579180877,8.668647485398011e-8,9.31689120875924e-9,0.0028756422882183752,1.8328829012502568e-7,9.178200849892443e-9,0.002875696134402279,2.288312141503027e-7,9.112800066087184e-9,0.002875707547399061,2.025805089596482e-7,9.150562494597015e-9,0.002875705846174958,9.52630333672185e-8,9.304873938120105e-9,0.0028757210926035038,-9.052120703341189e-8,9.57200496741452e-9,0.0028757804866157105,-3.4091383411167794e-7,9.932003851136088e-9,0.002875904942563708,-6.325855214179894e-7,1.035130470799866e-8,0.0028761062305016523,-9.357358663929467e-7,1.0787070613173603e-8,0.002876385114451254,-1.2180331505464313e-6,1.1192851470911072e-8,0.002876730724811969,-1.4490859095561661e-6,1.1524975361779462e-8,0.002877121258656621,-1.6050876840491572e-6,1.174919121731711e-8,0.002877526072604426,-1.6732673197605107e-6,1.1847070930135468e-8,0.0028779092664162932,-1.6557908710847165e-6,1.1821668584018685e-8,0.0028782350578963945,-1.5726563757144414e-6,1.1701746720225946e-8,0.002878475324870978,-1.4624372605699738e-6,1.1542873713258664e-8,0.0028786189483200725,-1.3787231489666856e-6,1.1422265207849368e-8,0.002878680701003052,-1.3798468481290254e-6,1.1423915368175761e-8,0.002878704787159146,-1.5113471987390404e-6,1.1613291349036044e-8,0.002878756903957089,-1.785757177929549e-6,1.2008265758302951e-8,0.002878902862502164,-2.1705939820080316e-6,1.2561939708202041e-8,0.0028791817969540797,-2.5954920375929927e-6,1.3173007501556022e-8,0.002879589402551466,-2.9784185508799e-6,1.3723483959784089e-8,0.0028800817252932734,-3.2567032182663314e-6,1.4123284543802338e-8,0.0028805956227206074,-3.4055518723271702e-6,1.4336808076009957e-8,0.00288107208392016,-3.4376003397330977e-6,1.4382284035630344e-8,0.0028814710783001875,-3.3898579305011365e-6,1.43129954824349e-8,0.0028817755563885373,-3.3082580675083343e-6,1.4195060433588716e-8,0.002881988308033612,-3.2361154678533363e-6,1.4090836012607044e-8,0.0028821262129773463,-3.207791533507497e-6,1.4049812193983022e-8,0.0028822147082530657,-3.246215519180097e-6,1.4105033781258338e-8,0.0028822834027905776,-3.36241780936278e-6,1.4272395487930903e-8,0.002882362616150177,-3.5558741422002764e-6,1.4551103140709693e-8,0.0028824803465096684,-3.815258525621979e-6,1.4924750790070064e-8,0.002882659335415783,-4.119686711663455e-6,1.5363142882474208e-8,0.0028829141547347752,-4.440809412356523e-6,1.5825359058537653e-8,0.0028832486380844327,-4.746136382797398e-6,1.626457640078978e-8,0.0028836543274357697,-5.003595714935634e-6,1.6634632356475022e-8,0.0028841105948802857,-5.186858658952929e-6,1.6897660746955784e-8,0.0028845868380229104,-5.280659678729527e-6,1.703172244416492e-8,0.0028850468268388713,-5.285119178421869e-6,1.703703042675255e-8,0.0028854548808014517,-5.2180136555174015e-6,1.693924927655556e-8,0.00288578318588404,-5.1141539701945615e-6,1.678862920440044e-8,0.0028860192930803964,-5.021207939658294e-6,1.6653980349342108e-8,0.0028861723562649236,-4.991365507388845e-6,1.6610608238690897e-8,0.0028862757956466495,-5.06888921218822e-6,1.6722303008240677e-8,0.0028863833910300974,-5.2754810860775145e-6,1.7020219754766915e-8,0.002886556622110814,-5.598336802918629e-6,1.7485702072118628e-8,0.0028868448006271175,-5.988001271290007e-6,1.804727106737048e-8,0.0028872654738177545,-6.371171534302883e-6,1.8599132347397268e-8,0.002887795844354059,-6.675623117016277e-6,1.903710691825924e-8,0.0028883812762736244,-6.855447025490349e-6,1.9295003604406827e-8,0.0028889563468819752,-6.903610854021034e-6,1.9362747686658358e-8,0.0028894665800328696,-6.847559620219423e-6,1.9280059028761153e-8,0.0028898810668172878,-6.734011844686922e-6,1.911450684067196e-8,0.0028901940052642504,-6.612662324206851e-6,1.893795127279494e-8,0.0028904191547270935,-6.524988204859821e-6,1.881034874825922e-8,0.002890582222841485,-6.4992181867616665e-6,1.8772471855239283e-8,0.0028907142743236822,-6.549601240706169e-6,1.8844849350322546e-8,0.0028908470537224477,-6.677663335062472e-6,1.9029580088897277e-8,0.0028910098168515577,-6.87394958687946e-6,1.9312855656179486e-8,0.0028912269035187145,-7.1197167658875545e-6,1.966742957177217e-8,0.0028915154465618195,-7.388703555439692e-6,2.0055217248474415e-8,0.002891882983346302,-7.649501334948221e-6,2.0430764834169687e-8,0.002892325261621495,-7.869140909601243e-6,2.0746451553512368e-8,0.002892825069667161,-8.018140622490618e-6,2.095977025193972e-8,0.0028933531569161294,-8.0765493987099e-6,2.1042023401707183e-8,0.0028938720607829473,-8.039749741569616e-6,2.0986676926427616e-8,0.002894342905333149,-7.92219781746215e-6,2.081475472290096e-8,0.0028947341280570267,-7.757261613370963e-6,2.0574609101836252e-8,0.0028950300744023127,-7.592178937176516e-6,2.033462657209387e-8,0.0028952370056188714,-7.47855706718128e-6,2.0169463592427875e-8,0.0028953844081573035,-7.460137255342665e-6,2.0142316838205095e-8,0.00289552034348127,-7.560525475110968e-6,2.0287169809216575e-8,0.0028957008077851775,-7.774273461944861e-6,2.0595931401456922e-8,0.0028959747760086865,-8.06484752748952e-6,2.1015565228355683e-8,0.0028963687909720668,-8.37202856618837e-6,2.1458840848969644e-8,0.002896876822197008,-8.628384556733143e-6,2.1828161536226112e-8,0.002897460687328443,-8.779917072525279e-6,2.2045408873836965e-8,0.0028980621551318326,-8.802502597728348e-6,2.207573173944743e-8,0.002898621746734977,-8.706920074860234e-6,2.1934852495291796e-8,0.0028990957821008693,-8.531279911183452e-6,2.1678125082780306e-8,0.002899465167343782,-8.326114196731398e-6,2.137891611386844e-8,0.0028997348041497496,-8.13959047569529e-6,2.110712912790612e-8,0.002899926963249216,-8.007836040779991e-6,2.091513975889782e-8,0.002900073067994656,-7.951291908204955e-6,2.0832502054918495e-8,0.002900206831484279,-7.975306429587075e-6,2.0866828269500727e-8,0.002900359629928538,-8.072622529241776e-6,2.1007425546019428e-8,0.0029005576921144888,-8.226159990315293e-6,2.1229360644075667e-8,0.0029008202589749987,-8.411462892954981e-6,2.1497037476612273e-8,0.0029011579526491515,-8.59892006014462e-6,2.176744153154923e-8,0.0029015709907129882,-8.756361710375036e-6,2.1993920303424827e-8,0.002902047505571332,-8.85279154909494e-6,2.2131593765595492e-8,0.0029025628872768883,-8.863671727157463e-6,2.2145000075912374e-8,0.0029030815052825793,-8.777345014016352e-6,2.2017385091665053e-8,0.0029035620496829224,-8.600986341434939e-6,2.175931513310784e-8,0.002903966637114285,-8.363362576374002e-6,2.141266869690318e-8,0.0029042717781266334,-8.111634884846253e-6,2.1045980547935134e-8,0.002904477372654277,-7.901280532790563e-6,2.073978444425112e-8,0.002904609628244343,-7.781372369153714e-6,2.0565217145761693e-8,0.002904715791276944,-7.780057503835996e-6,2.056294239996993e-8,0.0029048518634546975,-7.895457374774159e-6,2.0729997122619613e-8,0.0029050672122561154,-8.095212921731798e-6,2.1019213111936452e-8,0.0029053908949938285,-8.324795261790677e-6,2.1351336711916632e-8,0.002905823673533291,-8.52201545814966e-6,2.1636089845854755e-8,0.0029063379482547036,-8.63355664871243e-6,2.1796127132877224e-8,0.00290688567731947,-8.628754999473182e-6,2.178700899956975e-8,0.002907411886688896,-8.506448804640417e-6,2.1607149038605026e-8,0.002907869313118284,-8.29292031099503e-6,2.1294847433827952e-8,0.002908229337953015,-8.032291094367549e-6,2.0914343210019756e-8,0.002908486197412823,-7.773494661513888e-6,2.0536855496935417e-8,0.0029086544808403334,-7.5585686559262325e-6,2.0223523711567358e-8,0.0029087623904295403,-7.415402414785589e-6,2.001484051067057e-8,0.002908843981353781,-7.35553482324306e-6,1.9927459583560743e-8,0.002908932726752054,-7.375649943051864e-6,1.9956406208574644e-8,0.0029090572536835126,-7.460809532075294e-6,2.0079817615799907e-8,0.002909238952715364,-7.5879228762615555e-6,2.0264014865399943e-8,0.0029094906884145105,-7.728775534689363e-6,2.0467914700593435e-8,0.0029098158523242937,-7.852662044244406e-6,2.064685157630933e-8,0.002910207338650096,-7.929175550194102e-6,2.0756624253538985e-8,0.0029106466203267355,-7.931911576665453e-6,2.0758877958416994e-8,0.002911103814377557,-7.843588459108618e-6,2.062855490190973e-8,0.0029115402023730556,-7.66224497593975e-6,2.0362916420013977e-8,0.002911914696322001,-7.406730952055019e-6,1.998953139422466e-8,0.0029121945161994208,-7.118129171687856e-6,1.9568325801371748e-8,0.0029123675377467186,-6.853478439441242e-6,1.918239985768633e-8,0.002912450734123804,-6.670885447814342e-6,1.8916298524169225e-8,0.002912488859188778,-6.610394269086291e-6,1.88281387438807e-8,0.0029125417695362995,-6.679120462312963e-6,1.8928018749465943e-8,0.0029126652147423104,-6.848070988212437e-6,1.9173497757355166e-8,0.0029128935517388484,-7.061935206702308e-6,1.9483944368025575e-8,0.002913231037578079,-7.256695642236208e-6,1.9766193972595816e-8,0.0029136533209005457,-7.377571585707302e-6,1.9940619511564884e-8,0.0029141165252539614,-7.391701575272796e-6,1.9959524190801965e-8,0.0029145697689046887,-7.293322714917477e-6,1.981463990082668e-8,0.0029149673788549375,-7.1018310443380406e-6,1.953430007430907e-8,0.002915278149714961,-6.8545563898393026e-6,1.9172935518929185e-8,0.002915490151865234,-6.596725101954491e-6,1.8796465187354656e-8,0.0029156107375936115,-6.371248850546456e-6,1.846741356078346e-8,0.002915662539790091,-6.210673245514143e-6,1.8233164243708407e-8,0.0029156771594396804,-6.1327104522359935e-6,1.8119444504375368e-8,0.002915688499493966,-6.139498762978267e-6,1.812926086634637e-8,0.0029157272510905927,-6.219687203803143e-6,1.824596696099231e-8,0.0029158172217261446,-6.3520114728173305e-6,1.843850247261238e-8,0.002915973412501954,-6.5091582694995025e-6,1.8667034188020637e-8,0.0029162012640837876,-6.6612268782975755e-6,1.888798608393158e-8,0.0029164964235661433,-6.778735787311186e-6,1.9058396783844645e-8,0.002916844658644618,-6.835584702079287e-6,1.91402221340199e-8,0.0029172220097263466,-6.812552966048134e-6,1.910544630322981e-8,0.002917595884444303,-6.7017614420562816e-6,1.8942618913472558e-8,0.002917928412307093,-6.511815863831633e-6,1.8664385893287575e-8,0.00291818347875855,-6.2719153866716e-6,1.8313480562819844e-8,0.002918337682433519,-6.031490122748525e-6,1.7962147335797165e-8,0.002918392453911434,-5.8514246809711895e-6,1.7699255420367632e-8,0.0029183808220965175,-5.785913109725185e-6,1.760375851831056e-8,0.002918361694896576,-5.860827931022856e-6,1.7713146738291097e-8,0.0029184005478205227,-6.060277614749884e-6,1.8003943123245615e-8,0.0029185450818061424,-6.330635628385983e-6,1.8397723097046376e-8,0.002918808813042895,-6.6005652769916755e-6,1.8790403319492904e-8,0.002919169951357401,-6.805733183674234e-6,1.908827114831872e-8,0.0029195829508730235,-6.906435273516535e-6,1.92336174657321e-8,0.002919994648581057,-6.893430674434389e-6,1.9213166424777753e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json new file mode 100644 index 0000000000..480e1a0af0 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":2000,"numberOfSamples":1000,"samples":[-0.0019226433452019043,-4.2400202047522655e-5,-4.847209139509104e-8,-0.0019224915279308452,-4.232138293995991e-5,-4.839917575682174e-8,-0.0019223575599970867,-4.2339533342532786e-5,-4.841941987929699e-8,-0.0019221925201880694,-4.2455757141232014e-5,-4.853500256368106e-8,-0.0019219535221161883,-4.264378690983704e-5,-4.87214377132331e-8,-0.0019216173050324704,-4.285653639574512e-5,-4.893368444013015e-8,-0.0019211878632388768,-4.304035090341533e-5,-4.911986351109583e-8,-0.0019206944269591652,-4.3151566455827686e-5,-4.923733483565604e-8,-0.001920180782153211,-4.316840557061996e-5,-4.9264336921476375e-8,-0.0019196912154135558,-4.3093903838697776e-5,-4.920299044056076e-8,-0.001919259170950511,-4.2950548434361e-5,-4.9074301884897993e-8,-0.0019189019210674083,-4.277089886837732e-5,-4.8909249976046343e-8,-0.0019186208521778832,-4.258868047478004e-5,-4.8740241599705884e-8,-0.001918404926768647,-4.243272605567538e-5,-4.859521792579728e-8,-0.0019182349450095773,-4.2323928794774185e-5,-4.849461482060666e-8,-0.0019180872700253946,-4.2274266862589164E-05,-4.8450338629402915e-8,-0.001917936666180632,-4.228680533004299e-5,-4.846574052979398e-8,-0.00191775854316843,-4.2355896173164964e-5,-4.8535824807684226e-8,-0.0019175311877270766,-4.246735024004276e-5,-4.864742159638906e-8,-0.0019172384671460499,-4.25989290061144e-5,-4.877961167038227e-8,-0.0019168730864799963,-4.2721876682799584e-5,-4.890508625070886e-8,-0.0019164398837302117,-4.280432151427329e-5,-4.8993279677066866e-8,-0.0019159579014177714,-4.281706315274191e-5,-4.901583883335078e-8,-0.0019154594243000278,-4.27412144250086e-5,-4.8953968414289994e-8,-0.001914984557283099,-4.2575562469439085e-5,-4.880561552483321e-8,-0.0019145716125768752,-4.234039279521026e-5,-4.858934382627422e-8,-0.0019142459086730812,-4.207501807745824e-5,-4.834220694952108e-8,-0.0019140111182697102,-4.1828569489815494e-5,-4.811113500434928e-8,-0.0019138468399848853,-4.1646650455964184e-5,-4.794024685992306e-8,-0.0019137136475314569,-4.155842585264431e-5,-4.785840090516636e-8,-0.0019135639168575628,-4.156847538008292e-5,-4.787112479174571e-8,-0.001913354878178476,-4.165575436672902e-5,-4.795925785880041e-8,-0.001913060039736298,-4.1779660100407035e-5,-4.808445425303678e-8,-0.0019126758326174886,-4.189128905126362e-5,-4.8199834042895305e-8,-0.0019122216639617473,-4.194655693717889e-5,-4.8262624541360104e-8,-0.0019117335388331718,-4.191721880810053e-5,-4.8244930247959284e-8,-0.0019112535774869718,-4.17965282482666e-5,-4.8139407883790543e-8,-0.0019108191058004997,-4.159831661316574e-5,-4.795859671838348e-8,-0.001910454761111615,-4.13507805095086e-5,-4.7729094163578805e-8,-0.0019101693588310655,-4.108797784158734e-5,-4.74834365018481e-8,-0.0019099571113809235,-4.084210928294797e-5,-4.725264424568893e-8,-0.0019098014051956349,-4.06383521782112e-5,-4.706116300989979e-8,-0.001909679232807439,-4.049244367589526e-5,-4.6924445600308274e-8,-0.0019095650792493577,-4.041027304587661e-5,-4.684851156054176e-8,-0.0019094338706790138,-4.038850509596943e-5,-4.6830551880131895e-8,-0.0019092631960406178,-4.041545998091156e-5,-4.685979719885473e-8,-0.0019090353342274217,-4.0471961726856714e-5,-4.691831881589462e-8,-0.0019087395911655302,-4.053242839868951e-5,-4.698199191766588e-8,-0.0019083750969175394,-4.0566889485238066e-5,-4.7022295836454817e-8,-0.0019079535950202848,-4.05448090409642e-5,-4.7009857068801336e-8,-0.0019075008929219535,-4.0441352326518995e-5,-4.692041592595363e-8,-0.0019070548602137859,-4.024557340002766e-5,-4.674274417153859e-8,-0.0019066581194424014,-3.996789525520936e-5,-4.648596905336088e-8,-0.0019063458229643833,-3.964246667720178e-5,-4.618202616974119e-8,-0.001906132593687367,-3.932066250072738e-5,-4.5879631296205274e-8,-0.001906005112413036,-3.9056140911694693e-5,-4.563013841888741e-8,-0.0019059250849624966,-3.888725831245831e-5,-4.547077730150599e-8,-0.0019058418160187416,-3.882488208844757e-5,-4.541289156609024e-8,-0.0019057084893034362,-3.885058262649113e-5,-4.5439933455113804e-8,-0.0019054953071705263,-3.892448678948119e-5,-4.551462448108332e-8,-0.0019051956015066044,-3.899818092129441e-5,-4.559102248754266e-8,-0.001904824751066378,-3.902764552633575e-5,-4.562680789434229e-8,-0.0019044139453100216,-3.898286178877979e-5,-4.5592592314242095e-8,-0.0019040014133682513,-3.8852641286461894e-5,-4.547679044559279e-8,-0.0019036234930003598,-3.864464423892581e-5,-4.5285911009026024e-8,-0.0019033074182967,-3.838144973804248e-5,-4.504099501526467e-8,-0.0019030670807785748,-3.809414814477403e-5,-4.477156044224583e-8,-0.0019029021776647626,-3.7815292683842436e-5,-4.4508817510060506e-8,-0.001902800227035411,-3.757290803529455e-5,-4.427982585191298e-8,-0.0019027403062597105,-3.738655521525043e-5,-4.410361508352597e-8,-0.0019026972766109718,-3.726562021454014e-5,-4.3989482282936625e-8,-0.0019026455605967178,-3.720939282853564e-5,-4.393706825168861e-8,-0.001902562049494492,-3.720819681311018e-5,-4.393747898583925e-8,-0.0019024282429587474,-3.7244887169539354e-5,-4.397474157144386e-8,-0.0019022320167928473,-3.7296417780327447e-5,-4.402726172840666e-8,-0.0019019694121183246,-3.733563521997301e-5,-4.406942025345132e-8,-0.0019016466101295054,-3.7333817380047615e-5,-4.4073850286943826e-8,-0.001901281721675244,-3.72647279533573e-5,-4.401521158739995e-8,-0.0019009051492186858,-3.7110772537172744e-5,-4.387608872624823e-8,-0.0019005564761927897,-3.687070357499274e-5,-4.365449081610721e-8,-0.0019002760006965934,-3.656614621766662e-5,-4.3370288285066725e-8,-0.0019000913323042824,-3.624205466668279e-5,-4.306583828633659e-8,-0.0019000039601944792,-3.5956706816941076e-5,-4.279656932567122e-8,-0.0018999840816792122,-3.576226105855051e-5,-4.261250079410351e-8,-0.0018999792883793371,-3.568461104514584e-5,-4.253901137884262e-8,-0.001899933981398471,-3.5713853399087564e-5,-4.2567602344540055e-8,-0.0018998090711157681,-3.581022732657273e-5,-4.266128735242672e-8,-0.0018995924498515157,-3.5920529128532807E-05,-4.27699363285063e-8,-0.0018992979805863262,-3.599552540735251e-5,-4.284667515898346e-8,-0.001898956996465333,-3.60016505232314e-5,-4.2859033641491364e-8,-0.0018986077115788766,-3.5925404995038095e-5,-4.2793327231141533e-8,-0.0018982861274868695,-3.5772115322624845e-5,-4.2653762704726326e-8,-0.0018980197803509253,-3.556151123416992e-5,-4.245848237196928e-8,-0.0018978243192027849,-3.532201505409536e-5,-4.2234258129154944e-8,-0.0018977025183165013,-3.5084842908056075e-5,-4.201085903922587e-8,-0.001897645338891351,-3.487865622253372e-5,-4.181584089370757e-8,-0.001897634548299051,-3.472539749417785e-5,-4.1670438822720854e-8,-0.0018976462592206278,-3.4637684651986404E-05,-4.158699002545304e-8,-0.0018976547528813345,-3.461783260192269e-5,-4.156798431104482e-8,-0.0018976360025567379,-3.465835456450116e-5,-4.160658512785339e-8,-0.0018975704668702292,-3.474353699435762e-5,-4.168818028849286e-8,-0.0018974450856599756,-3.485154582856132e-5,-4.179238643199875e-8,-0.0018972547032642363,-3.4956750270050015e-5,-4.189517808310863e-8,-0.0018970031462578617,-3.5032293373468896e-5,-4.1971187462921197e-8,-0.001896704041121835,-3.5053177068163955e-5,-4.199649895495414e-8,-0.0018963811064912409,-3.500033872352196e-5,-4.195247884233675e-8,-0.0018960669388229457,-3.486606242620335e-5,-4.183101890714069e-8,-0.0018957986732221059,-3.466005594878666e-5,-4.1640536726904226e-8,-0.0018956091571617987,-3.441367338006517e-5,-4.141024300465335e-8,-0.0018955143084655717,-3.417789714991304e-5,-4.11883959487616e-8,-0.0018955015199407235,-3.401103934461799e-5,-4.103064766105313e-8,-0.0018955276091062383,-3.395751831846302e-5,-4.097979506922786e-8,-0.0018955320612609062,-3.4027724788744977e-5,-4.104650552871127e-8,-0.001895460925824634,-3.419213691026499e-5,-4.120354608540807e-8,-0.0018952876637236959,-3.439431347479264e-5,-4.139792350116541e-8,-0.0018950194973305701,-3.4574094187676726e-5,-4.157273141268476e-8,-0.00189468901820827,-3.468727701743215e-5,-4.168573954249668e-8,-0.0018943393648524587,-3.471417304124221e-5,-4.171758103848185e-8,-0.001894011175966523,-3.4658126432902484e-5,-4.1670568510380554e-8,-0.0018937347654549707,-3.4538913747532676e-5,-4.156270803527193e-8,-0.0018935271586108895,-3.438520384909261e-5,-4.1420753571334326e-8,-0.0018933922404869188,-3.4228171385826936e-5,-4.127420869753851e-8,-0.0018933224519850319,-3.409667569558539e-5,-4.115067186901395e-8,-0.001893301244193991,-3.40137190510597e-5,-4.10723266568858e-8,-0.0018933060255165923,-3.399399788202456e-5,-4.105348708812609e-8,-0.0018933114133081418,-3.404253904550354e-5,-4.109924608197351e-8,-0.0018932925837213562,-3.415443233452324e-5,-4.120524021833533e-8,-0.0018932284621856921,-3.431570348176952e-5,-4.135853030487643e-8,-0.001893104383091029,-3.4505267334039883e-5,-4.1539480078514925e-8,-0.00189291393259836,-3.469764551964496e-5,-4.172428673891212e-8,-0.0018926599383916741,-3.486610463956082e-5,-4.188783776156979e-8,-0.0018923546511316431,-3.498605241766292e-5,-4.2006785198344876e-8,-0.001892019101621626,-3.5038631408074926e-5,-4.206286015466167e-8,-0.0018916814855736094,-3.5014534367428806e-5,-4.204652314564249e-8,-0.001891374040852943,-3.491799599962725e-5,-4.196092987201902e-8,-0.0018911275262606326,-3.477018738663742e-5,-4.182542386637248e-8,-0.0018909628356181614,-3.460994197225293e-5,-4.167647877700423e-8,-0.0018908809794151223,-3.448870510773402e-5,-4.1563025636714426e-8,-0.001890855680381783,-3.4457266426274074e-5,-4.1533801407386716e-8,-0.0018908353879217353,-3.454621539121781e-5,-4.1618610494880996e-8,-0.0018907590601062614,-3.474930510512576e-5,-4.1812322746267864e-8,-0.0018905806559135173,-3.502183484605819e-5,-4.2073175486873276e-8,-0.0018902883688857062,-3.529801938551741e-5,-4.233914044230188e-8,-0.0018899068551920142,-3.551742428610809e-5,-4.255290749642152e-8,-0.001889483249018912,-3.564481602849056e-5,-4.268065997382881e-8,-0.0018890679245541686,-3.567523527632135e-5,-4.2716955210695495e-8,-0.00188870032072965,-3.562727788606181e-5,-4.267856906938492e-8,-0.0018884030745074487,-3.5532202829357725e-5,-4.2594437460528625e-8,-0.0018881823723488097,-3.54243921208098e-5,-4.2496795451858114e-8,-0.0018880312102406572,-3.533504994855418e-5,-4.2415230301185514e-8,-0.0018879332139387782,-3.5288747014991394e-5,-4.237330143238159e-8,-0.0018878660597741292,-3.5301680267534746e-5,-4.23867434249854e-8,-0.001887804493950075,-3.5380813257388804e-5,-4.246254511061698e-8,-0.0018877231921547025,-3.552361030820859e-5,-4.259866804167272e-8,-0.0018875996014664324,-3.5718391160070784e-5,-4.278440830777563e-8,-0.0018874167566322304,-3.594551788242534e-5,-4.300154835611885e-8,-0.0018871657927251448,-3.617965687985636e-5,-4.322647911791066e-8,-0.0018868476636197298,-3.639308212496223e-5,-4.3433238917490384e-8,-0.0018864736576865142,-3.655967876258171e-5,-4.359717299143751e-8,-0.0018860644895497603,-3.66591992046944e-5,-4.369885112248462e-8,-0.0018856478855353213,-3.668124668546799e-5,-4.37278181581545e-8,-0.0018852547440176993,-3.6628421846668554e-5,-4.3685686879638724e-8,-0.0018849140165977931,-3.651813115392309e-5,-4.358808695279573e-8,-0.0018846464338938206,-3.638236555382138e-5,-4.346473580791103e-8,-0.0018844576056432885,-3.6264235942699986e-5,-4.3356365793623564e-8,-0.0018843321784880178,-3.6209913884206997e-5,-4.3307130103906174e-8,-0.0018842322632395324,-3.625576306513159e-5,-4.335226126403655e-8,-0.0018841040436168481,-3.641349949400654e-5,-4.350374571050373e-8,-0.0018838940566287233,-3.6660400894427665e-5,-4.374080127460915e-8,-0.001883570085252579,-3.694276386559895e-5,-4.401301964778491e-8,-0.001883135475562002,-3.7194520085842316e-5,-4.425796870583932e-8,-0.001882627578444282,-3.73621475032825e-5,-4.442477583414205e-8,-0.0018821014403124572,-3.742201299485457e-5,-4.4490542846202025e-8,-0.001881609313986513,-3.7382507458315104e-5,-4.4462439215216833e-8,-0.0018811865907120172,-3.7274116019286886e-5,-4.436849914685254e-8,-0.001880847632416261,-3.713591350573811e-5,-4.424508395808057e-8,-0.00188058871037337,-3.7004918805228556e-5,-4.4126962304448526e-8,-0.0018803936614843618,-3.691021781204701e-5,-4.4041748300567786e-8,-0.0018802392951189633,-3.6870851790922326e-5,-4.400778710220607e-8,-0.0018800994849178696,-3.68957089255605e-5,-4.40339130327419e-8,-0.0018799481169941405,-3.698411204251374e-5,-4.411991825255021e-8,-0.0018797614670353787,-3.7126553405316096e-5,-4.425722892864331e-8,-0.0018795204776576248,-3.730559347706619e-5,-4.442976975442706e-8,-0.0018792131464299988,-3.749729428555327e-5,-4.46153152223929e-8,-0.0018788368365865878,-3.7673694011914794e-5,-4.4787772369335294e-8,-0.0018783998781203336,-3.780658890837698e-5,-4.492065092723705e-8,-0.0018779216417479986,-3.787236867220032e-5,-4.4991520603290696e-8,-0.0018774304478634798,-3.785712894848209e-5,-4.4986782858554793e-8,-0.001876959132956837,-3.776087580238688e-5,-4.490568783170876e-8,-0.001876538772816988,-3.759950843431476e-5,-4.476237298058196e-8,-0.0018761917084975216,-3.740363503756282e-5,-4.458499652618009e-8,-0.0018759253154816227,-3.721393836510612e-5,-4.441161416080866e-8,-0.0018757279816746558,-3.7073377257336396e-5,-4.4282962063134714e-8,-0.0018755687920489152,-3.701708377818567e-5,-4.4232881827984826e-8,-0.0018754023218197238,-3.706175871807319e-5,-4.427809041286009e-8,-0.0018751791516401983,-3.71976903316632e-5,-4.4410338519050925e-8,-0.0018748606150037481,-3.738752598197328e-5,-4.4594994984169714e-8,-0.0018744330348925565,-3.7574982787928245E-05,-4.47791613026569e-8,-0.0018739145177022712,-3.770239276914684e-5,-4.490826020461936e-8,-0.0018733495373167643,-3.773009490362128e-5,-4.4944415378813574e-8,-0.0018727931908080317,-3.764831441568e-5,-4.487773977743384e-8,-0.0018722931442570632,-3.7476441825173546e-5,-4.472576455407728e-8,-0.0018718776143170825,-3.72522449686114e-5,-4.452343076403651e-8,-0.0018715526178116695,-3.701813258333055e-5,-4.431030817274317e-8,-0.0018713062231411261,-3.681055615655657e-5,-4.4120686585272034e-8,-0.001871115468151383,-3.665468354723957e-5,-4.397851191896047e-8,-0.001870952694577932,-3.6563328602725056e-5,-4.389625440586987e-8,-0.0018707900517583916,-3.653811265418476e-5,-4.3875885637797216e-8,-0.0018706023334060244,-3.6571255822349916e-5,-4.391050608580251e-8,-0.0018703688700737859,-3.664722159578986e-5,-4.398588937722728e-8,-0.0018700751930006965,-3.6744157938658e-5,-4.408184554328447e-8,-0.0018697148769254426,-3.683557666976917e-5,-4.4173775089313205e-8,-0.0018692914772034106,-3.6892936200826666e-5,-4.423502611041501e-8,-0.0018688199023591616,-3.688965083963331e-5,-4.424057092448585e-8,-0.0018683261082645549,-3.680648604854699e-5,-4.4172010900809014e-8,-0.0018678439684996118,-3.663736658049673e-5,-4.4023038613393244e-8,-0.0018674088734324848,-3.639364723333976e-5,-4.3803546879327065e-8,-0.0018670490319146785,-3.610454803253589e-5,-4.354021989210011e-8,-0.001866776960604691,-3.581233195531623e-5,-4.327223113044107e-8,-0.0018665842545617494,-3.556274227869284e-5,-4.304246095848443e-8,-0.0018664419014308188,-3.539322985208859e-5,-4.2886518844144926e-8,-0.001866306540510951,-3.532250177755452e-5,-4.282282625286369e-8,-0.0018661311596336301,-3.5344543323723834e-5,-4.284673828172474e-8,-0.0018658774885188531,-3.542898898557433e-5,-4.293057236042494e-8,-0.0018655268253949977,-3.55281941668765e-5,-4.303001094315354e-8,-0.0018650860333417425,-3.55896847358241e-5,-4.309572055327366e-8,-0.0018645862558132557,-3.557072469934887e-5,-4.3087114771064386e-8,-0.001864074064290464,-3.54502290003869e-5,-4.298370377047688e-8,-0.0018635978679334747,-3.523359331224885e-5,-4.278980205390345e-8,-0.0018631947076426666,-3.494883476042089e-5,-4.2531058883068645e-8,-0.0018628822307316867,-3.4636347734627516E-05,-4.224496475448857e-8,-0.0018626577466252,-3.433705755884229e-5,-4.196979779298566e-8,-0.0018625028468491243,-3.408334448344101e-5,-4.173608792809358e-8,-0.0018623903292806535,-3.389462368841906e-5,-4.1562378749819724e-8,-0.001862290600784725,-3.377697613200107e-5,-4.145477037782527e-8,-0.0018621762300559555,-3.3725088096835355e-5,-4.14086669723388e-8,-0.0018620246347852986,-3.372488473601601e-5,-4.141123207304418e-8,-0.0018618195632346566,-3.375593156589706e-5,-4.1443656121148575e-8,-0.0018615521548540242,-3.3793432453618705e-5,-4.148302730689643e-8,-0.001861222100187459,-3.3810221048498295E-05,-4.15041470998425e-8,-0.0018608389284970092,-3.377941053241642e-5,-4.148192086511341e-8,-0.0018604228570434176,-3.367833230390359e-5,-4.139496124109246e-8,-0.0018600040268228783,-3.3493942425028966e-5,-4.123062094176194e-8,-0.001859618642548962,-3.322877352067173e-5,-4.0990619843655576e-8,-0.0018593011806838898,-3.290498445207031e-5,-4.0694967467908326e-8,-0.001859073836432133,-3.256319848003421e-5,-4.038105550600808e-8,-0.0018589370096645738,-3.225400787141628e-5,-4.0095898376829484e-8,-0.0018588658572420299,-3.202355089014602e-5,-3.988278237900221e-8,-0.001858815953690681,-3.1898535195761845e-5,-3.9767279252543205e-8,-0.0018587365322608792,-3.187731481624273e-5,-3.974875641256137e-8,-0.001858585847420525,-3.193072891426777e-5,-3.9800881931187754e-8,-0.0018583427276889898,-3.201157846011818e-5,-3.988018363222736e-8,-0.001858011024484624,-3.206838339685549e-5,-3.993871620605644e-8,-0.0018576168661056972,-3.2058722129593e-5,-3.993651170976707e-8,-0.001857200628294303,-3.1958785793748546e-5,-3.98506487342928e-8,-0.0018568063178679155,-3.1767390735336565e-5,-3.9679225404044e-8,-0.0018564711830394505,-3.150417991339459e-5,-3.943989843936122e-8,-0.0018562180244630548,-3.120309508365586e-5,-3.916393604405171e-8,-0.001856051832860989,-3.0903287984785486e-5,-3.888777991719524e-8,-0.0018559610387409902,-3.0640165715613776e-5,-3.864464037772421e-8,-0.0018559222165318323,-3.043888182499085e-5,-3.845831450517588e-8,-0.0018559062367179708,-3.031135180046263e-5,-3.8340287099323454e-8,-0.0018558839785556914,-3.025648674119293e-5,-3.828987583339211e-8,-0.0018558305005729916,-3.0262498510445098e-5,-3.829637141557298e-8,-0.0018557274688207667,-3.030998413607464e-5,-3.8341946180221575e-8,-0.0018555642923261315,-3.0374874455143256e-5,-3.8404431294548646e-8,-0.0018553386335638984,-3.043096245585696e-5,-3.8459652833342595e-8,-0.0018550567897867762,-3.0452262426219995e-5,-3.8483550463237314e-8,-0.0018547340635318174,-3.041572528206477e-5,-3.8454603062521525e-8,-0.0018543947164707576,-3.03048875961989e-5,-3.835716288178646e-8,-0.0018540704590361671,-3.0114692323656852e-5,-3.81859702743685e-8,-0.0018537960249984855,-2.985666954648834e-5,-3.79511015108531e-8,-0.0018536008786521339,-2.9562027461414482e-5,-3.768102528692731e-8,-0.0018534981424192035,-2.927893614320846e-5,-3.742024332911934e-8,-0.0018534751696137296,-2.9061233360087007e-5,-3.72188887172703e-8,-0.0018534923481789171,-2.8950357584252507e-5,-3.711593484750272e-8,-0.0018534940550578869,-2.8958436077817732e-5,-3.7123378482837e-8,-0.0018534282008300274,-2.9062277323979435e-5,-3.722046668883958e-8,-0.0018532645332598092,-2.921211788923309e-5,-3.736159207290112e-8,-0.0018530028720135114,-2.934986972526837e-5,-3.7493050320642694e-8,-0.0018526694542170326,-2.942727873570747e-5,-3.756982425163037e-8,-0.0018523058642196187,-2.9417150023504876e-5,-3.7566073539067835e-8,-0.0018519564866905035,-2.9316192868627697e-5,-3.7477965536880444e-8,-0.0018516584089416203,-2.9141557732680905e-5,-3.7320700414486564e-8,-0.001851435208412855,-2.8923992161479002e-5,-3.712235494419344e-8,-0.001851294541339165,-2.869997092993335e-5,-3.691666372244825e-8,-0.0018512288972952473,-2.850431556199019e-5,-3.673612972502268e-8,-0.0018512187605911334,-2.8364293030248146e-5,-3.6606422818222735e-8,-0.0018512372743969517,-2.8295880091963878e-5,-3.6542771387623024e-8,-0.001851255373367241,-2.830245486957463e-5,-3.654865101402205e-8,-0.0018512464347500161,-2.837567990696616e-5,-3.661658029509977e-8,-0.0018511897654824728,-2.849797616767571e-5,-3.6730452314410044e-8,-0.0018510726455833026,-2.864577894127868e-5,-3.6868605111867225e-8,-0.0018508911239511774,-2.879283048085962e-5,-3.700688885749968e-8,-0.0018506500169525825,-2.891316386992196e-5,-3.712138235946777e-8,-0.0018503624659893852,-2.8983841434482034e-5,-3.719083313132091e-8,-0.001850049192722774,-2.8987717253845237e-5,-3.719912582085492e-8,-0.00184973724683297,-2.8916604783197052e-5,-3.7138199915807674e-8,-0.0018494574590516221,-2.877500685094965e-5,-3.7011601488886906e-8,-0.001849239457271444,-2.8583618727700412e-5,-3.6837917133073514e-8,-0.001849103637120204,-2.8380420558935783e-5,-3.665199142573758e-8,-0.0018490512556514666,-2.8216113176951286e-5,-3.650082802289004e-8,-0.0018490568923369543,-2.814133170477168e-5,-3.643173901900574e-8,-0.001849070044366471,-2.8187498919253204e-5,-3.6474479853762786e-8,-0.0018490301023305032,-2.835027238269989e-5,-3.662573037762882e-8,-0.0018488899067574623,-2.8587217166636767e-5,-3.6846766146306595e-8,-0.0018486348257891318,-2.883361606393152e-5,-3.707797543919425e-8,-0.0018482863056600417,-2.902755950667316e-5,-3.726201459105288e-8,-0.0018478899852914469,-2.9130064005063796e-5,-3.736241363816512e-8,-0.0018474976562760789,-2.91321131307372e-5,-3.737016828147584e-8,-0.0018471524750899352,-2.905016180405401e-5,-3.729976063286029e-8,-0.0018468812786227445,-2.8916268553225196e-5,-3.718025357565311e-8,-0.0018466931172711491,-2.876806315238052e-5,-3.7046173746412294e-8,-0.0018465815057894385,-2.8640983775258864e-5,-3.6930365429741035e-8,-0.00184652829693714,-2.8563136245366806e-5,-3.685914654239289e-8,-0.0018465080445311866,-2.8552306292304803e-5,-3.6849396405970724e-8,-0.0018464923711327586,-2.8614698711177184e-5,-3.69072585309602e-8,-0.0018464540475209713,-2.874515858709884e-5,-3.702828145510411e-8,-0.001846370522506678,-2.8928669467886978e-5,-3.7198811661589566e-8,-0.001846226627091265,-2.9142919199792575e-5,-3.739840984195331e-8,-0.0018460161773210895,-2.936159596526058e-5,-3.7602928735736206e-8,-0.0018457424092981416,-2.9557907441157696e-5,-3.7787745528739335e-8,-0.0018454174436069045,-2.9707932709951874e-5,-3.793078679950588e-8,-0.001845060979936064,-2.9793682517744152e-5,-3.8015266553066575e-8,-0.0018446983139210466,-2.9805837685586976e-5,-3.803216933965162e-8,-0.001844357663506958,-2.974619611849742e-5,-3.7982560537325245e-8,-0.0018440664544479193,-2.9629797711193566e-5,-3.7879707314877856e-8,-0.001843845950446449,-2.948601531108566e-5,-3.775030341662861e-8,-0.0018437041818345754,-2.9356851092842417e-5,-3.763307774716062e-8,-0.0018436286704259478,-2.929018395984869e-5,-3.7572610524337075e-8,-0.0018435826591715672,-2.9326650546160026e-5,-3.7607099199983846e-8,-0.001843510243611047,-2.9482479522100277e-5,-3.7752270839027916e-8,-0.0018433534878047207,-2.9736569576451163e-5,-3.798922207122916e-8,-0.001843076228620517,-3.003258999787417e-5,-3.826624809927366e-8,-0.0018426810050820315,-3.0299279226205748e-5,-3.851758748645876e-8,-0.0018422077376924746,-3.0478508169391107e-5,-3.8689353289091895e-8,-0.0018417156239789582,-3.054470317700498e-5,-3.875746335719129e-8,-0.0018412606553196052,-3.050710730095082e-5,-3.872977574482587e-8,-0.001840880483325183,-3.0398882257686496e-5,-3.8636192256924036e-8,-0.001840590004125507,-3.026250677128237e-5,-3.851540126764517e-8,-0.0018403844397698059,-3.013820957242196e-5,-3.840435285169504e-8,-0.001840245361005513,-3.0057347763451893e-5,-3.8332152701456324e-8,-0.0018401466765782936,-3.0039751280580974e-5,-3.831749547487945e-8,-0.0018400595016326148,-3.0093363332831677e-5,-3.836817784862127e-8,-0.0018399559497764423,-3.0215015910877106e-5,-3.848169905675189e-8,-0.001839812170196447,-3.039186553279613e-5,-3.864654273812751e-8,-0.0018396108283989022,-3.060338054950594e-5,-3.884402378562721e-8,-0.0018393430417674114,-3.082394307346604e-5,-3.905071575977295e-8,-0.001839009544828154,-3.1026114366856945e-5,-3.924146216346563e-8,-0.0018386207708631277,-3.1184328723264915e-5,-3.939273712194119e-8,-0.0018381957305413437,-3.127857148136643e-5,-3.948596451419425e-8,-0.0018377597459139795,-3.1297656724416976e-5,-3.95104860508152e-8,-0.001837341137178437,-3.1241751125251476e-5,-3.946590292406994e-8,-0.0018369670512292443,-3.112376810976386e-5,-3.9363472022820164e-8,-0.0018366586561733092,-3.096932899220622e-5,-3.922626209101001e-8,-0.0018364258708403016,-3.0814812173559905e-5,-3.9087559514838445e-8,-0.0018362621920370473,-3.070252357614279e-5,-3.8986539372919337e-8,-0.0018361412688580824,-3.067203929167175e-5,-3.896025500527251e-8,-0.0018360180816703487,-3.0748042684471684e-5,-3.903223795898209e-8,-0.0018358378502917804,-3.092774827382751e-5,-3.920064225747588e-8,-0.0018355532968053283,-3.1174550168373766e-5,-3.9432189756387474e-8,-0.0018351446756584952,-3.142525945238052e-5,-3.966879216514516e-8,-0.001834631257077125,-3.161182618802566e-5,-3.9847630332795574e-8,-0.001834065391188641,-3.168747068911088e-5,-3.992527940095902e-8,-0.0018335116541834382,-3.164236364109196e-5,-3.989214970654177e-8,-0.0018330236496004874,-3.1501495858562004e-5,-3.977056585296882e-8,-0.0018326302885483708,-3.130976247069251e-5,-3.960119517536447e-8,-0.0018323344622033428,-3.111494455177007e-5,-3.94275962437217e-8,-0.0018321196002908996,-3.095597209536023e-5,-3.928554181120305e-8,-0.0018319582888422555,-3.085789845493625e-5,-3.919836392406287e-8,-0.0018318194757880513,-3.083157342368737e-5,-3.9176511626126014e-8,-0.0018316733480543946,-3.0875483927058214e-5,-3.9219089175635253e-8,-0.0018314943794796696,-3.097812687524317e-5,-3.931593991989682e-8,-0.0018312633560748676,-3.1120334429811935e-5,-3.9449760179892773e-8,-0.001830968913688379,-3.1277592120351454e-5,-3.9598246635518696e-8,-0.0018306087634235733,-3.14226374107931e-5,-3.9736499110668715e-8,-0.0018301904168349817,-3.152864766531905e-5,-3.9839932121797345e-8,-0.0018297309265778968,-3.1573033171681355e-5,-3.988771007373838e-8,-0.0018292551760944991,-3.154139489645285e-5,-3.986633134180522e-8,-0.0018287925523648566,-3.1430926466745534e-5,-3.977274223006469e-8,-0.0018283721888019805,-3.125244172846256e-5,-3.961626454205167e-8,-0.0018280173510476312,-3.1030241019074e-5,-3.941861928815817e-8,-0.0018277399014371466,-3.079933897322065e-5,-3.921157228495376e-8,-0.0018275359237807758,-3.060002936908609e-5,-3.9032106768399976e-8,-0.0018273836315456557,-3.0470075984707517e-5,-3.891530628053033e-8,-0.0018272448509398856,-3.0435259419920423e-5,-3.8885571590877783e-8,-0.0018270713806662069,-3.0500042234658058e-5,-3.8947817158765014e-8,-0.0018268166773114957,-3.064158208297821e-5,-3.908171343754616e-8,-0.0018264509824322654,-3.081128525962225e-5,-3.924294928095106e-8,-0.0018259745066705093,-3.0946791653507584e-5,-3.937422858396294e-8,-0.001825421200068397,-3.0992294321174295e-5,-3.942401662190722e-8,-0.001824848707194268,-3.091859675203208e-5,-3.936503312287334e-8,-0.0018243181665254498,-3.0732388589482095e-5,-3.920280801715213e-8,-0.0018238741939498265,-3.047033281073113e-5,-3.897033103345112e-8,-0.0018235344222076416,-3.0182968256406758e-5,-3.871343791162342e-8,-0.0018232907112232296,-2.9917962061241705e-5,-3.8475612220985564e-8,-0.0018231175915879915,-2.9709470223528575e-5,-3.8288287874661005e-8,-0.0018229820547856707,-2.9574767415543407e-5,-3.8167680241916334e-8,-0.0018228511227224586,-2.951575072500136e-5,-3.811601209651671e-8,-0.0018226963993247997,-2.9522399260808083e-5,-3.812455102291935e-8,-0.001822496346012939,-2.9576313361484465e-5,-3.817679071516764e-8,-0.00182223736569908,-2.9653667368211555e-5,-3.82511596794088e-8,-0.001821914484007764,-2.9727713244422272e-5,-3.8323339418991535e-8,-0.0018215319226575477,-2.9771325860086927e-5,-3.836859871537784e-8,-0.0018211033649289739,-2.9760077349048065e-5,-3.8364575828414726e-8,-0.0018206513209798074,-2.967600860452736e-5,-3.82946771372016e-8,-0.001820204868578569,-2.95117106918752e-5,-3.815177651088395e-8,-0.001819795308698592,-2.9273717903851084e-5,-3.7941337848129227e-8,-0.0018194499553985499,-2.8983792765006212e-5,-3.768268339819807e-8,-0.001819185216669178,-2.867678407238349e-5,-3.74071910297524e-8,-0.0018190008974349288,-2.83945853396037e-5,-3.715294339073842e-8,-0.001818877777254797,-2.8177048843502435e-5,-3.69565401325332e-8,-0.001818779842287521,-2.8051892787703585e-5,-3.684386725138177e-8,-0.0018186613648890997,-2.8026242318695985e-5,-3.682221547238342e-8,-0.0018184777104345217,-2.8082404782524753e-5,-3.687617397457534e-8,-0.0018181975534309522,-2.8179856821560048e-5,-3.6969212144048666e-8,-0.001817813196202531,-2.8264185854983048e-5,-3.705172966271644e-8,-0.001817345167041442,-2.8281685470529075e-5,-3.707441588866618e-8,-0.0018168381018592475,-2.8195553966210703e-5,-3.7003162870434875e-8,-0.0018163479603249767,-2.799754849487948e-5,-3.6829836985857307e-8,-0.0018159250008670967,-2.770979157575244e-5,-3.657403648862273e-8,-0.0018155995956956029,-2.7375894624095573e-5,-3.6275093682421794e-8,-0.0018153764219808644,-2.704596699485922e-5,-3.5978494998850386e-8,-0.0018152377869368145,-2.6762455524996808e-5,-3.572301447864534e-8,-0.001815152477201721,-2.6551760020655958e-5,-3.553302574177351e-8,-0.0018150853173970892,-2.6422470662984083e-5,-3.541677798998169e-8,-0.0018150042988686545,-2.6368080187245047e-5,-3.5368740905128105e-8,-0.001814884542944513,-2.637140326946383e-5,-3.5373559468304656e-8,-0.0018147098501943748,-2.640883213452553e-5,-3.540992975432918e-8,-0.001814472968339351,-2.6453705314678775e-5,-3.5453704890593495e-8,-0.0018141754822484056,-2.6478914642215583e-5,-3.548029701796509e-8,-0.0018138277280354835,-2.645933668573588e-5,-3.54668779570484e-8,-0.0018134485433922909,-2.63746995002284e-5,-3.539493771542412e-8,-0.0018130641999637516,-2.6213143484268603e-5,-3.525347116797519e-8,-0.0018127056529817164,-2.5975139443379584e-5,-3.504252776569707e-8,-0.0018124034131899443,-2.5676611824827752e-5,-3.477610412804476e-8,-0.0018121801872194175,-2.534931109205454e-5,-3.448259855575883e-8,-0.0018120429840718477,-2.503646524431114e-5,-3.420100849172037e-8,-0.0018119778375527472,-2.4783230392470123e-5,-3.3972382770939356e-8,-0.001811950347330866,-2.462408751833058e-5,-3.3828419190625865e-8,-0.0018119132838824324,-2.4571574822020067e-5,-3.3781151941416513e-8,-0.0018118193692635378,-2.461097139426063e-5,-3.381793208892705e-8,-0.0018116348830005524,-2.470333459138878e-5,-3.390395510139745e-8,-0.0018113494195414132,-2.479592830408992e-5,-3.399155855798691e-8,-0.0018109788397635016,-2.483652227449304e-5,-3.403315775348767e-8,-0.0018105608775236578,-2.4787225178468724e-5,-3.399388280325552e-8,-0.001810144903993606,-2.4634019749026035e-5,-3.386038668968676e-8,-0.0018097788424705386,-2.438943653685379e-5,-3.364343809426621e-8,-0.0018094970976968308,-2.408776623021186e-5,-3.3373712923926915e-8,-0.0018093131065530167,-2.3774611485516244e-5,-3.3092397700764274e-8,-0.0018092184234519324,-2.3494490111001275e-5,-3.283995827133673e-8,-0.0018091877331322158,-2.3280593294754563e-5,-3.2646790853564697e-8,-0.0018091871161683125,-2.314939866682767e-5,-3.252822506211939e-8,-0.0018091823293289193,-2.31004611501778e-5,-3.248421726376951e-8,-0.0018091448540584615,-2.311978262620908e-5,-3.250233499343941e-8,-0.0018090550794540737,-2.3184591180723153e-5,-3.2562086291900066e-8,-0.0018089031861997175,-2.3267897328885993e-5,-3.2639095018153503e-8,-0.0018086887334329814,-2.3342085624690892e-5,-3.2708403157821664e-8,-0.0018084198247745962,-2.338158487023955e-5,-3.2746898333729124e-8,-0.0018081122968712463,-2.3365150542970265e-5,-3.273533916353727e-8,-0.001807788822855228,-2.3278370617031e-5,-3.2660558495518114e-8,-0.0018074773359588981,-2.3116713555088714e-5,-3.251818044986732e-8,-0.0018072078836895496,-2.2888860456224638e-5,-3.231565942478291e-8,-0.0018070071067168634,-2.2619145607374683e-5,-3.2074584949186564e-8,-0.0018068904090166695,-2.2346867579039005e-5,-3.18301977417072e-8,-0.001806853807850492,-2.2119984734449717e-5,-3.162581546841964e-8,-0.0018068696241016469,-2.198255341150245e-5,-3.150153125112428e-8,-0.0018068904530553504,-2.195926967130759e-5,-3.1480191546692454e-8,-0.0018068624614854115,-2.2044177423088666e-5,-3.155704270849953e-8,-0.0018067433270976935,-2.2200245280886165e-5,-3.1699156433731375e-8,-0.0018065165630427827,-2.2371032429944445e-5,-3.1855811466588946e-8,-0.0018061958896326482,-2.2498959032548624e-5,-3.197492592167717e-8,-0.0018058190557784669,-2.2542034459431462e-5,-3.201819263383411e-8,-0.0018054353226003737,-2.2483393859611878e-5,-3.196979945333175e-8,-0.001805091981515879,-2.2332389766442987e-5,-3.183757466667896e-8,-0.0018048237525921153,-2.211905907663405e-5,-3.1648156894879373e-8,-0.0018046468284378982,-2.1884874969180767e-5,-3.1438765962970895e-8,-0.0018045577965828564,-2.167257080863706e-5,-3.124804952076372e-8,-0.0018045367469031802,-2.1517256483314775e-5,-3.1108003719807276e-8,-0.0018045532547471112,-2.1440415901790588e-5,-3.103843208390343e-8,-0.0018045734964459543,-2.1447606975861767e-5,-3.1044738831155513e-8,-0.0018045667264467702,-2.1529672691860464e-5,-3.111893588046535e-8,-0.0018045098804961046,-2.1666384245823865e-5,-3.1242914374253404e-8,-0.0018043898839023068,-2.183112130503548e-5,-3.1392708760228225e-8,-0.001804203954475141,-2.1995397908962797e-5,-3.1542638797071024e-8,-0.0018039586205425583,-2.2132522471774145e-5,-3.166864148494045e-8,-0.0018036682150897336,-2.222029327998615e-5,-3.1750683255942955e-8,-0.0018033532774611,-2.2243105107731316e-5,-3.1774601732825967e-8,-0.0018030388535303287,-2.2193945397383773e-5,-3.173385130063672e-8,-0.0018027522942073136,-2.2076575061598045e-5,-3.1631467135425805e-8,-0.0018025198123736337,-2.1907738260673892e-5,-3.148213395270582e-8,-0.0018023610503111382,-2.171835234695091e-5,-3.131339673265721e-8,-0.0018022817446064101,-2.155153029171974e-5,-3.1164020013668663e-8,-0.0018022664981731129,-2.145492195250491e-5,-3.107715875834362e-8,-0.0018022761116299893,-2.1466616576633423e-5,-3.1087611729159285e-8,-0.001802254637597213,-2.1598488185100718e-5,-3.1206666940015674e-8,-0.0018021472428660756,-2.182595909351053e-5,-3.1412695010306495e-8,-0.0018019218634438376,-2.2092822584774562e-5,-3.1655360838329714e-8,-0.0018015825756897933,-2.2331161258804622e-5,-3.187351846210822e-8,-0.0018011669858702807,-2.2485932648024347e-5,-3.2017362632812046e-8,-0.0018007305205330378,-2.2531424552391003e-5,-3.20632837968358e-8,-0.0018003274466781097,-2.247396849454174e-5,-3.201639378115172e-8,-0.001799997044701253,-2.2344006761817026e-5,-3.190352915618942e-8,-0.0017997576968600084,-2.2183994777753875e-5,-3.1762527108728355e-8,-0.0017996074214415598,-2.2037129804367622e-5,-3.163218737463046e-8,-0.0017995281388526994,-2.1939134700851098e-5,-3.1544874466880096e-8,-0.001799491474118722,-2.191336925847295e-5,-3.1522014871558e-8,-0.0017994648236848451,-2.196879034163294e-5,-3.157211653547259e-8,-0.0017994169612412726,-2.210030852102367e-5,-3.1690969385098476e-8,-0.0017993225970557186,-2.2291116208268445e-5,-3.1863685374065217e-8,-0.0017991654559053219,-2.2516364846537557e-5,-3.2068017711543623e-8,-0.0017989396964144166,-2.2747470340719118e-5,-3.2278281986817246e-8,-0.001798649733945888,-2.2956364822787877e-5,-3.246922246142647e-8,-0.0017983088087218547,-2.3119105042172602e-5,-3.2619262744900355e-8,-0.0017979368481374199,-2.3218557224021916e-5,-3.271288686018867e-8,-0.001797558043108042,-2.3246284945411038e-5,-3.274229168261259e-8,-0.0017971982454755217,-2.3203905608775542e-5,-3.2708591798824984e-8,-0.0017968820442133351,-2.3104089519329166e-5,-3.2622768771998037e-8,-0.0017966291126735867,-2.297111342990777e-5,-3.250628913382254e-8,-0.0017964493540700971,-2.2840186859440642e-5,-3.239064633254201e-8,-0.001796337092370337,-2.2753871040159905e-5,-3.231424590201427e-8,-0.001796266176874397,-2.2753701692947285e-5,-3.2314867821004395e-8,-0.0017961898758915664,-2.2866622884127602e-5,-3.241733430757836e-8,-0.0017960501969663332,-2.3089920943539757e-5,-3.261975895170297e-8,-0.0017957976108034395,-2.3383568322421448e-5,-3.288650179068292e-8,-0.0017954135250510931,-2.3679171476829465e-5,-3.315617804332179e-8,-0.0017949215447578652,-2.390518557869303e-5,-3.336437672142568e-8,-0.0017943787200954949,-2.401500851776904e-5,-3.3468942402757484e-8,-0.0017938521133034476,-2.400161061140643e-5,-3.346310636110839e-8,-0.0017933953283730748,-2.3893135268437862e-5,-3.3371567284018426e-8,-0.0017930360672664986,-2.3736813868647664e-5,-3.323619106299432e-8,-0.0017927757839283627,-2.3582117106361543e-5,-3.310107169625848e-8,-0.0017925963117210405,-2.3469363688785598e-5,-3.300241303329868e-8,-0.0017924682328384592,-2.342451096539411e-5,-3.296382113706184e-8,-0.0017923581550719071,-2.345828625550179e-5,-3.299539036168371e-8,-0.001792234150133278,-2.356759742598324e-5,-3.309481410911366e-8,-0.0017920696405059335,-2.3737980155055785e-5,-3.324947345493431e-8,-0.0017918461088012336,-2.3946656287756952e-5,-3.343914759620848e-8,-0.0017915547494891267,-2.416604836192296e-5,-3.363918826601897e-8,-0.0017911970460121622,-2.4367571375549456e-5,-3.382396166819764e-8,-0.0017907841940512808,-2.4525457139788785e-5,-3.3970302096064133e-8,-0.0017903353488858134,-2.4620205356925683e-5,-3.4060599419872674e-8,-0.001789874928831574,-2.464121873006898e-5,-3.408513361013069e-8,-0.0017894293545302076,-2.458842006514815e-5,-3.404350871950484e-8,-0.001789023505241213,-2.4472837169482275e-5,-3.394520600674971e-8,-0.0017886770648342907,-2.431614883409421e-5,-3.3809267595780996e-8,-0.0017884008200234735,-2.4149141187628658e-5,-3.366304609271047e-8,-0.001788192903348495,-2.4008712245158947e-5,-3.353964297579916e-8,-0.0017880354372265181,-2.393253545893989e-5,-3.347316905691076e-8,-0.0017878931539800256,-2.3950554353910987e-5,-3.34910405981934e-8,-0.0017877167144701928,-2.4073806065351983e-5,-3.360377068735919e-8,-0.001787453569690734,-2.428392045087678e-5,-3.379534491041236e-8,-0.0017870663495322726,-2.4530220442592966e-5,-3.402051298850108e-8,-0.0017865519910194932,-2.4741563720019448e-5,-3.4215448424805376e-8,-0.0017859491906381667,-2.4852189071213217e-5,-3.4321023197333045e-8,-0.001785325958533287,-2.482869995671932e-5,-3.4307016493753474e-8,-0.0017847528767015353,-2.4681669420333632e-5,-3.418245486606978e-8,-0.0017842781208460322,-2.4456188730650273e-5,-3.3987154219619505e-8,-0.0017839168488831807,-2.4210443635923462e-5,-3.3772695142451446e-8,-0.0017836554356915608,-2.3996010205156732e-5,-3.358499104157047e-8,-0.0017834629055072672,-2.384722325415727e-5,-3.345487005540549e-8,-0.0017833022278605421,-2.377911957973221e-5,-3.33961693481918e-8,-0.0017831382257718895,-2.3790191594592873e-5,-3.340803787799357e-8,-0.0017829420119458068,-2.386664304225821e-5,-3.347858835271957e-8,-0.0017826931337199766,-2.3986439556649512e-5,-3.35884337520014e-8,-0.001782380554182279,-2.4122805007119548e-5,-3.37138034186474e-8,-0.0017820030107513522,-2.424741808773985e-5,-3.382943346932811e-8,-0.0017815688268330704,-2.4333593880854584e-5,-3.391144581214018e-8,-0.0017810949919451016,-2.435957061890063e-5,-3.3940296734933424e-8,-0.0017806052023764001,-2.4311695591746605e-5,-3.3903609380761455e-8,-0.001780126733231539,-2.4186960953258744e-5,-3.3798419210927013e-8,-0.001779686389109376,-2.3994309151659606e-5,-3.363234575116789e-8,-0.0017793060255654567,-2.3754312161234117e-5,-3.3423362014270186e-8,-0.0017789982504817423,-2.3497003448101446e-5,-3.319796437690346e-8,-0.0017787629677499328,-2.325789658218794e-5,-3.2987743056121986e-8,-0.0017785853328477087,-2.307245026259536e-5,-3.2824528494159e-8,-0.001778435693719291,-2.29692203202828e-5,-3.2734270343295896e-8,-0.0017782724447692514,-2.2962114363640616e-5,-3.2729999425653523e-8,-0.0017780489744251891,-2.304310446279494e-5,-3.2805121499466924e-8,-0.0017777252482119056,-2.3178271529330762e-5,-3.292970232577239e-8,-0.0017772823647096638,-2.331129259651724e-5,-3.305351428606098e-8,-0.0017767346083272459,-2.3377529158287416e-5,-3.311868318348257e-8,-0.001776130764697321,-2.3326480780226323e-5,-3.3079844371637935e-8,-0.0017755397912121303,-2.3142506066602418e-5,-3.292267378791187e-8,-0.001775025923089456,-2.285130228165791e-5,-3.2669641431352325e-8,-0.001774626618706956,-2.2507845107702927e-5,-3.2369284423643596e-8,-0.0017743445685003865,-2.217390512592298e-5,-3.207630409849978e-8,-0.0017741544806826274,-2.1898231682136928e-5,-3.1834061464338805e-8,-0.0017740169436090173,-2.1707118952548065e-5,-3.166620956255327e-8,-0.001773891219541728,-2.1604779152879516e-5,-3.157692307526984e-8,-0.0017737432310165142,-2.157882930216389e-5,-3.155562491937049e-8,-0.0017735489504333692,-2.1606679331330368e-5,-3.1582552828697624e-8,-0.0017732949817235678,-2.1660754250425577e-5,-3.163336707176071e-8,-0.0017729779982578978,-2.1712249139899234e-5,-3.1682516270717386e-8,-0.0017726039251191308,-2.1733947237802756e-5,-3.170578892729579e-8,-0.0017721870422029683,-2.170274238348413e-5,-3.168258293259854e-8,-0.001771748742021881,-2.160228540957275e-5,-3.1598253034946674e-8,-0.001771315436498432,-2.142574791419228e-5,-3.144654198656495e-8,-0.0017709151725227585,-2.1178148251122183e-5,-3.123163082063926e-8,-0.0017705729667818262,-2.0877318554922502e-5,-3.096901728522543e-8,-0.00177030549185305,-2.055260685325797e-5,-3.0684433448224743e-8,-0.0017701162882080364,-2.0240789383713746e-5,-3.041032430169265e-8,-0.0017699929466398218,-1.99794218315807e-5,-3.018005089313501e-8,-0.0017699074633654773,-1.9798779288104986e-5,-3.002078373264498e-8,-0.0017698202590316055,-1.971411094245867e-5,-2.994657558110185e-8,-0.0017696875886955075,-1.9720002942223983e-5,-2.9953206911113435e-8,-0.0017694714315701055,-1.9788544043428927e-5,-3.0016365819494506e-8,-0.001769150179508032,-1.9872824099373976e-5,-3.009460999645151e-8,-0.0017687273917546744,-1.9916635597634004e-5,-3.013794933369788e-8,-0.0017682349328222557,-1.986951675134688e-5,-3.0101278511672435e-8,-0.00176772710105645,-1.970328034493384e-5,-2.995916376833186e-8,-0.0017672653670454336,-1.942323674398719e-5,-2.9715881402750377e-8,-0.0017668987135009146,-1.906762066737871e-5,-2.9404951820690843e-8,-0.0017666484557888058,-1.8694185914153163e-5,-2.9077305426574343e-8,-0.0017665045683398996,-1.836037649987278e-5,-2.8783779540595175e-8,-0.0017664336822339468,-1.810670803004512e-5,-2.85604298531802e-8,-0.0017663927590512497,-1.7949525459591675e-5,-2.8422063980110166e-8,-0.0017663414629926905,-1.7882936783559632e-5,-2.8363836548011972e-8,-0.001766249541876796,-1.7885707909765793e-5,-2.8367242121714928e-8,-0.001766099266242993,-1.7928819727490756e-5,-2.8406756909275128e-8,-0.0017658847993394775,-1.798137782732972e-5,-2.8455090069843767e-8,-0.001765610393070421,-1.8014480188581894e-5,-2.8486659197502897e-8,-0.0017652885448722823,-1.800366604960887e-5,-2.8479796999216368e-8,-0.0017649384258213695,-1.7930802219111313e-5,-2.8418420896184835e-8,-0.0017645842871166185,-1.778602853787445e-5,-2.829372109660203e-8,-0.0017642532352409623,-1.7569903288050705e-5,-2.81060198076404e-8,-0.001763971759473834,-1.7295278259522374e-5,-2.786641950500421e-8,-0.0017637607807011494,-1.698782162266873e-5,-2.7597305393828584e-8,-0.0017636298282722234,-1.668378910785923e-5,-2.7330463361969477e-8,-0.0017635720325075125,-1.6424062245120354e-5,-2.7101919283812356e-8,-0.0017635623160880396,-1.624485381333525e-5,-2.6943804573923697e-8,-0.0017635607308321933,-1.6167370096356146e-5,-2.6875224575923194e-8,-0.0017635211289864948,-1.6190012162179073e-5,-2.68952735608918e-8,-0.0017634030561349838,-1.6286391210993562e-5,-2.6981120973846906e-8,-0.0017631832067511017,-1.6410496829813158e-5,-2.7092420717209323e-8,-0.001762862804611093,-1.650784066444652e-5,-2.7181070789573557e-8,-0.001762468592752757,-1.6529538541808296e-5,-2.720366625840219e-8,-0.001762046894151369,-1.6445530812446836e-5,-2.713326263374019e-8,-0.0017616519554521687,-1.6253198861825676e-5,-2.696709599279156e-8,-0.0017613315225252794,-1.5978453405918325e-5,-2.672764292807032e-8,-0.0017611140058775958,-1.5668350101802668e-5,-2.645617877953825e-8,-0.0017610016624053787,-1.5377341425857762e-5,-2.6200694380823762e-8,-0.001760972152477191,-1.5152050261090025e-5,-2.6002466768736517e-8,-0.0017609872896826445,-1.5020078162915458e-5,-2.5886132235295784e-8,-0.0017610048499390252,-1.4986153105280482e-5,-2.585618781524479e-8,-0.0017609887967856529,-1.5035267740803247e-5,-2.5899659894477047e-8,-0.0017609151979063953,-1.5139768158020223e-5,-2.5992305073980463e-8,-0.001760773716567572,-1.5266958060346903e-5,-2.610532992986437e-8,-0.0017605661687073292,-1.5385079455718696e-5,-2.6210718388494383e-8,-0.0017603038826338377,-1.5467116653328303e-5,-2.6284636330568005e-8,-0.0017600050563999715,-1.5492918931559058e-5,-2.630931543163531e-8,-0.00175969254649456,-1.5450515709074643e-5,-2.6274181953792665e-8,-0.0017593918639489119,-1.5337330423786408e-5,-2.617687582404043e-8,-0.0017591287810466108,-1.516152233340109e-5,-2.6024399594225813e-8,-0.0017589258943309788,-1.4943092225619993e-5,-2.5834108333616962e-8,-0.0017587977883399433,-1.4713698844311321e-5,-2.563361964748376e-8,-0.001758745306123578,-1.4513557060983797e-5,-2.5458186180871662e-8,-0.0017587508567577885,-1.4384033445413648e-5,-2.534426611652559e-8,-0.0017587779139626098,-1.4356303112866524e-5,-2.5319563744401592e-8,-0.0017587774818432792,-1.4439371548397277e-5,-2.5392423095802513e-8,-0.0017587014180465244,-1.461308765223457e-5,-2.5545545630735418e-8,-0.0017585182143315644,-1.4831017637906244e-5,-2.573837988454579e-8,-0.001758224300036135,-1.5033522952700285e-5,-2.5918544356983626e-8,-0.0017578456814572269,-1.5165890121277228e-5,-2.6037769834404815e-8,-0.0017574296827317477,-1.5194062164951215e-5,-2.6065783871821737e-8,-0.0017570309130902051,-1.5112670663097581e-5,-2.5997452534758276e-8,-0.001756696813994369,-1.4944139321311835e-5,-2.5852086776316284e-8,-0.0017564568402563836,-1.473071652369088e-5,-2.566653582995585e-8,-0.0017563173354597894,-1.4522642160396031e-5,-2.548486082353178e-8,-0.0017562624354948073,-1.4365851015030895e-5,-2.5347546705261553e-8,-0.0017562599735600776,-1.4292151664489295e-5,-2.5282821848690496e-8,-0.001756270345717931,-1.4313890299943314e-5,-2.5301868529854778e-8,-0.0017562557588578422,-1.4423796145213121e-5,-2.5398581829437754e-8,-0.0017561874812613571,-1.4599191257972496e-5,-2.5553204717269587e-8,-0.0017560497205785389,-1.4808590783445874e-5,-2.573812424229174e-8,-0.0017558401001670073,-1.501849889141526e-5,-2.5923886858305346e-8,-0.0017555677036126833,-1.5198851791683837e-5,-2.6084035700955837e-8,-0.0017552499882569114,-1.5326523211685818e-5,-2.6198219746351277e-8,-0.0017549096171388453,-1.5387143092883683e-5,-2.625378099409158e-8,-0.0017545716844747704,-1.5375917958639373e-5,-2.624643446693762e-8,-0.0017542612485054693,-1.5298085448759974e-5,-2.618062930004095e-8,-0.0017540007404882867,-1.5169273450952789e-5,-2.6069861979063126e-8,-0.0017538066861335557,-1.5015531634949477e-5,-2.593675647987724e-8,-0.0017536853789179659,-1.4872118319182157e-5,-2.5812093138283254e-8,-0.0017536279768385933,-1.4779491480665109e-5,-2.5731383005018647e-8,-0.001753606952723239,-1.477510058162383e-5,-2.5727704626657337e-8,-0.0017535772625469973,-1.4881293853944655e-5,-2.5821044107833472e-8,-0.0017534854838303832,-1.5093084239007569e-5,-2.600743669074431e-8,-0.001753286710863749,-1.5372854528035302e-5,-2.6254185280220255e-8,-0.0017529628465813953,-1.5658309245887e-5,-2.650676375421154e-8,-0.0017525321779777868,-1.5882916451512282e-5,-2.6706754294287406e-8,-0.0017520438774256833,-1.599931632431093e-5,-2.6812413521358316e-8,-0.0017515603547515798,-1.599389242849295e-5,-2.6811474485739375e-8,-0.0017511370747768787,-1.58870721613282e-5,-2.6721446136561115e-8,-0.0017508085426400448,-1.5722498178991464e-5,-2.6580205900138525e-8,-0.001750583522276346,-1.5552126055896935e-5,-2.6433054088095324e-8,-0.0017504477988545496,-1.5423007708300132e-5,-2.6321212129111954e-8,-0.001750371174214469,-1.5368439711583733e-5,-2.62740633198849e-8,-0.001750315851837096,-1.5403810993203438e-5,-2.630543047416448e-8,-0.0017502443819633047,-1.552642617773328e-5,-2.641330452405617e-8,-0.0017501260881107377,-1.5718366270618406e-5,-2.6582255837826362e-8,-0.001749941315168841,-1.595138996435713e-5,-2.6787687878177625e-8,-0.0017496832210316077,-1.6192740022060927e-5,-2.7000937830024997e-8,-0.0017493572693855985,-1.6410744434680557e-5,-2.719422519070173e-8,-0.001748978948913387,-1.6579358203906588e-5,-2.7344668887639668e-8,-0.0017485704968312657,-1.6681163415333903e-5,-2.74369274282324e-8,-0.0017481574240992264,-1.670883282721197e-5,-2.7464466784574147e-8,-0.0017477653066889829,-1.666547427544194e-5,-2.742983935525184e-8,-0.0017474168841164288,-1.6564305460559376e-5,-2.7344394725503e-8,-0.001747129279233854,-1.6427879931202274e-5,-2.722763656186771e-8,-0.0017469110243550452,-1.6286771476204226e-5,-2.7106146180372478e-8,-0.0017467586534195868,-1.6177063093025705e-5,-2.7011472007132247e-8,-0.0017466533463252492,-1.6135412490742596e-5,-2.6975864478472212e-8,-0.0017465594178202246,-1.6190686058868135e-5,-2.7024931986323628e-8,-0.0017464276261986936,-1.6352739951425828e-5,-2.7167717614836124e-8,-0.0017462061719448097,-1.6602042086509395e-5,-2.7387475511613235e-8,-0.0017458589390846183,-1.688727509586495e-5,-2.7639480984314817e-8,-0.001745383793112345,-1.7137548063945405e-5,-2.7861723308800773e-8,-0.001744819115139456,-1.7287659579105718e-5,-2.7997065592867195e-8,-0.0017442316274042247,-1.7303833560797986e-5,-2.8015768007836517e-8,-0.0017436912573285538,-1.7194973975304273e-5,-2.7925287860788828e-8,-0.001743247452036388,-1.7004614184730193e-5,-2.7763247275154654e-8,-0.0017429180130239536,-1.6791404372740664e-5,-2.758049651565357e-8,-0.0017426913839497045,-1.6609904370917028e-5,-2.7424492345162885e-8,-0.001742536475141356,-1.649859690995107e-5,-2.7328913073261393e-8,-0.0017424137905466815,-1.6475754777084468e-5,-2.731001280582881e-8,-0.0017422844622990985,-1.6540670952381766e-5,-2.7367575703814308e-8,-0.001742116355369948,-1.6677544114767887e-5,-2.7488179361086792e-8,-0.0017418876343611228,-1.686031928037145e-5,-2.764933739189588e-8,-0.0017415883616594284,-1.70577248174131e-5,-2.782387438953023e-8,-0.0017412205022093819,-1.7238115114124338e-5,-2.7984175560639326e-8,-0.0017407965855088022,-1.737379930727008e-5,-2.8106002984605667e-8,-0.0017403372333003285,-1.744456666693547e-5,-2.81716008451723e-8,-0.0017398678463401798,-1.7440083829039737e-5,-2.817179627356715e-8,-0.0017394149398974874,-1.7360942313155324e-5,-2.8106908907450188e-8,-0.0017390025998627163,-1.7218462503755394e-5,-2.7986581351569095e-8,-0.0017386492629266872,-1.7033516940844868e-5,-2.78287765345854e-8,-0.0017383648667583472,-1.6834511621145167e-5,-2.7658071698212013e-8,-0.0017381483860776027,-1.6654526309760896e-5,-2.750323777098479e-8,-0.0017379857880764208,-1.6527352718845074e-5,-2.7393844848311547e-8,-0.0017378488996451671,-1.6481799532138352e-5,-2.735530264547702e-8,-0.0017376966372265247,-1.653390656976417e-5,-2.7402002468754002e-8,-0.0017374807521994074,-1.6678137811977933e-5,-2.752950967892001e-8,-0.0017371577619254865,-1.6881003467352378e-5,-2.7708880462880502e-8,-0.0017367058418978965,-1.7082956805723142e-5,-2.7888277038928824e-8,-0.0017361397871615877,-1.7213636041267133e-5,-2.8006313607759834e-8,-0.0017355130919502622,-1.7217983517437767e-5,-2.8014887489228886e-8,-0.0017349010873700975,-1.7080148864802256e-5,-2.789998107144859e-8,-0.0017343723348015217,-1.6829898005292252e-5,-2.7687166142917287e-8,-0.0017339647832955254,-1.6527764114669422e-5,-2.742869117101087e-8,-0.0017336786370508808,-1.6239846977128967e-5,-2.718170516827529e-8,-0.0017334849605685624,-1.6017009429821272e-5,-2.6990333500378085e-8,-0.0017333407869161536,-1.588567181395312e-5,-2.6877727087182345e-8,-0.0017332024740586718,-1.5848606242811324e-5,-2.6846667644146168e-8,-0.0017330340615586818,-1.5890746362680283e-5,-2.68844715727071e-8,-0.0017328110493750382,-1.598598400945783e-5,-2.696877596915934e-8,-0.00173252127473545,-1.6103053832416733e-5,-2.7072598915931684e-8,-0.0017321643150833425,-1.6210210138051937e-5,-2.716841036510506e-8,-0.0017317501140170313,-1.6278998147010685e-5,-2.723144593688566e-8,-0.0017312970188940173,-1.6287366080985484e-5,-2.7242447571344237e-8,-0.0017308292084595779,-1.6222185622260528e-5,-2.7189872388028625e-8,-0.001730373452436675,-1.6081006942388617e-5,-2.7071418830950497e-8,-0.0017299553582569695,-1.5872667604661172e-5,-2.6894553273205772e-8,-0.0017295955423252537,-1.5616500957420817e-5,-2.6675832877706237e-8,-0.0017293061873740823,-1.5340170469505593e-5,-2.6439061947713e-8,-0.0017290883470865532,-1.507625010199129e-5,-2.6212382075122478e-8,-0.0017289303472872032,-1.485771739629063e-5,-2.6024423253133448e-8,-0.0017288076171489378,-1.4712600788592941e-5,-2.5899692716363257e-8,-0.0017286843786890062,-1.4657982104751628e-5,-2.5853345982890227e-8,-0.0017285179920752429,-1.469378801204321e-5,-2.5885710544355952e-8,-0.0017282669016267444,-1.4797809692912494e-5,-2.597784298491023e-8,-0.0017279022709099565,-1.4924826606494031e-5,-2.6090678957383975e-8,-0.0017274210330882648,-1.5013539408658058e-5,-2.6171041964052904e-8,-0.0017268544886931924,-1.500339980186787e-5,-2.6166307322124555e-8,-0.0017262646488298942,-1.4857541654773406e-5,-2.6044338623451537e-8,-0.0017257250829835684,-1.4580494467278208e-5,-2.5808814537283378e-8,-0.0017252937794389228,-1.4218526667931194e-5,-2.5499476937908507e-8,-0.0017249930231404602,-1.3840794807331261e-5,-2.517585149150039e-8,-0.0017248067699141875,-1.351270711306445e-5,-2.4894335555473773e-8,-0.0017246934534974646,-1.3276295708485894e-5,-2.4691333401292228e-8,-0.0017246038274408126,-1.314433765536367e-5,-2.4578159853052325e-8,-0.0017244948196652298,-1.3105269854769773e-5,-2.454517288778279e-8,-0.0017243364526524838,-1.3132362073222714e-5,-2.456957312402072e-8,-0.0017241132667976712,-1.3192342565411862e-5,-2.4622786661510245e-8,-0.0017238228661482834,-1.325163183139236e-5,-2.4675851118792835e-8,-0.0017234735662261548,-1.3280343921097598e-5,-2.470291409721152e-8,-0.0017230820075737141,-1.3254924222723466e-5,-2.4683557620105018e-8,-0.0017226707950760843,-1.3160121817767504e-5,-2.4604525475472103e-8,-0.001722265910630456,-1.2990581890931382e-5,-2.4461095384133306e-8,-0.001721893605087852,-1.275194862461917e-5,-2.4258014835579526e-8,-0.0017215766694778005,-1.2461004044485085e-5,-2.400961012256891e-8,-0.0017213304202050618,-1.2144266502687791e-5,-2.373858904526001e-8,-0.0017211591144521662,-1.1834740035222872e-5,-2.3473278345894057e-8,-0.0017210536379387664,-1.15669121811399e-5,-2.3243368159746304e-8,-0.0017209912434660293,-1.137053703664978e-5,-2.3074600444917153e-8,-0.00172093786428734,-1.126418106526938e-5,-2.2983213066028008e-8,-0.0017208531150557185,-1.1249725559581083e-5,-2.2971150222902847e-8,-0.0017206977257007766,-1.1309037278010377e-5,-2.3023095245395752e-8,-0.0017204427559582552,-1.1404176889886242e-5,-2.3106548502949438e-8,-0.0017200791234227555,-1.1482681882738014e-5,-2.3176327687590162e-8,-0.0017196246541953794,-1.148889330573019e-5,-2.3184350335903796e-8,-0.001719124641958263,-1.1380227657635337e-5,-2.3093722950941158e-8,-0.0017186423638384035,-1.114361781624759e-5,-2.289295661201278e-8,-0.0017182400231541156,-1.0804036814357762e-5,-2.2603315828948557e-8,-0.0017179572397719124,-1.0418304686722344e-5,-2.2273489276189473e-8,-0.0017177979779009823,-1.0055136813138216e-5,-2.1962468500676522e-8,-0.0017177326568771723,-9.771363476111051e-6,-2.171915971274942e-8,-0.0017177126940655086,-9.59618259083335e-6,-2.1568855933039855e-8,-0.0017176882158911563,-9.528664202440341e-6,-2.151102115154199e-8,-0.0017176207842986657,-9.54532916023194e-6,-2.152570092195504e-8,-0.001717488539588401,-9.61114215968148e-6,-2.1582903167043163e-8,-0.0017172856020235222,-9.688935408136953e-6,-2.1650695633700068e-8,-0.0017170188075453885,-9.745503388018222e-6,-2.1700489974222203e-8,-0.001716704030343493,-9.75481187740589e-6,-2.1709853665659155e-8,-0.001716363051667733,-9.699527683861308e-6,-2.1663854398151375e-8,-0.0017160209740540878,-9.571902058244573e-6,-2.155581284513286e-8,-0.0017157037275235207,-9.374493289871258e-6,-2.1387892099804606e-8,-0.0017154351582843574,-9.12063251889091e-6,-2.1171465309349033e-8,-0.0017152334371241793,-8.834059379219236e-6,-2.0926792740536966e-8,-0.0017151070380174468,-8.54691461997685e-6,-2.0681324010697784e-8,-0.0017150511747853247,-8.295434661355793e-6,-2.0466057621787945e-8,-0.0017150460711992154,-8.113332137404114e-6,-2.030992124260642e-8,-0.0017150584488687581,-8.023886119027629e-6,-2.0233017236108107e-8,-0.0017150469068009022,-8.032794681682757e-6,-2.0240470470753276E-08,-0.0017149705846409252,-8.124212126971078e-6,-2.031895666669989e-8,-0.0017147992299687779,-8.261786867259084e-6,-2.043750161115691e-8,-0.0017145220766764634,-8.39524066367176e-6,-2.0553060054856926e-8,-0.001714152932724592,-8.471588872493842e-6,-2.062012893709478e-8,-0.0017137294505731322,-8.448766698921679e-6,-2.0602470471424994e-8,-0.0017133056268037235,-8.30827935977141e-6,-2.0484010951138584e-8,-0.0017129382965746429,-8.062726137621993e-6,-2.0275329834940626e-8,-0.0017126708829768335,-7.754388283059394e-6,-2.0012476947012425e-8,-0.0017125200757254853,-7.443621313326269e-6,-1.9747060849152198e-8,-0.0017124712795059404,-7.190431363037621e-6,-1.9530504080148718e-8,-0.001712485108463056,-7.0366396458408515e-6,-1.9398773754969298e-8,-0.0017125116285125956,-6.995979960543143e-6,-1.9363850589301513e-8,-0.0017125055152946264,-7.054904126090996e-6,-1.941433171688431e-8,-0.0017124362267456486,-7.181290036679982e-6,-1.9522819783303132e-8,-0.0017122912356786113,-7.33559115667751e-6,-1.9655458212988638e-8,-0.0017120739679193392,-7.480041670713854e-6,-1.9779851901213196e-8,-0.0017117993662422982,-7.584250733816216e-6,-1.9869913460128613e-8,-0.0017114893374762983,-7.627641340691138e-6,-1.9907989660052855e-8,-0.0017111690927208221,-7.6000125055850025e-6,-1.9885345225042433e-8,-0.0017108644073861132,-7.501412760528949e-6,-1.9802025000362843e-8,-0.0017105992780522003,-7.341978719606794e-6,-1.966667578346078e-8,-0.0017103933189507282,-7.1417111820099305e-6,-1.949632951528594e-8,-0.0017102585004460788,-6.929573781906971e-6,-1.9315642219774395e-8,-0.0017101954017993111,-6.7409497837180035e-6,-1.9154764556717096e-8,-0.0017101899463117245,-6.612514274616833e-6,-1.904501927146042e-8,-0.0017102124219094009,-6.574302226505446e-6,-1.9012164611844463e-8,-0.0017102208546907933,-6.640381461484933e-6,-1.906841604034119e-8,-0.0017101696872487946,-6.801430426475136e-6,-1.920604126355059e-8,-0.0017100221870999638,-7.023203351349197e-6,-1.939596217498844e-8,-0.0017097624173563275,-7.2532026779098715e-6,-1.959339512897098e-8,-0.0017094018542985613,-7.4343348959541015e-6,-1.9749511339903364e-8,-0.0017089776595243197,-7.520980981562084e-6,-1.982519953065219e-8,-0.0017085430785728673,-7.491875094526717e-6,-1.98021064005799e-8,-0.0017081533169143335,-7.355782261528479e-6,-1.968751486928549e-8,-0.0017078512816734047,-7.148736530329722e-6,-1.9512013140907094e-8,-0.0017076570788535014,-6.924050653939927e-6,-1.9321004792382517e-8,-0.0017075639301940206,-6.73805286028801e-6,-1.9162573935492407e-8,-0.0017075414744693901,-6.635623404704152e-6,-1.9075152574921577e-8,-0.0017075452538536885,-6.6397481673598866e-6,-1.907856769945405e-8,-0.0017075291279762277,-6.74799680854229e-6,-1.917095975773456e-8,-0.001707456464753147,-6.936270654025548e-6,-1.9331909124735297e-8,-0.001707306873839935,-7.167486224038338e-6,-1.9529815014463757e-8,-0.0017070774940020905,-7.40150152130711e-6,-1.9730384470556232e-8,-0.001706780055599116,-7.603160648750164e-6,-1.9903542367193303e-8,-0.0017064359548183703,-7.747073464223104e-6,-2.0027552034501053e-8,-0.0017060712869391593,-7.819370843360752e-6,-2.009053088308096e-8,-0.0017057128647851082,-7.81750689300007e-6,-2.0090272816758505e-8,-0.0017053853475831233,-7.749258787440385e-6,-2.0033369653230264e-8,-0.0017051090246987348,-7.63165252439743e-6,-1.9934273203516424e-8,-0.0017048976130836205,-7.48990374053086e-6,-1.9814391821666054e-8,-0.0017047556071532683,-7.355870167993619e-6,-1.9700800557958514e-8,-0.0017046752314598494,-7.265069438578037e-6,-1.962374814999241e-8,-0.001704633907873945,-7.251176602605976e-6,-1.9612010035070857e-8,-0.0017045942123405239,-7.337574074837141e-6,-1.968569133958673e-8,-0.0017045088636094908,-7.527447475358424e-6,-1.984773628854404e-8,-0.0017043321125059295,-7.796609969145614e-6,-2.0077728553648004e-8,-0.0017040352892301902,-8.094628881719389e-6,-2.033278529821439e-8,-0.0017036199174814714,-8.357321757473915e-6,-2.0558199710134475e-8,-0.0017031207453830734,-8.527279641554265e-6,-2.07049674527795e-8,-0.0017025957211632837,-8.573251713438601e-6,-2.0746330786424403e-8,-0.0017021073995130097,-8.499347348814524e-6,-2.0685612575558143e-8,-0.0017017044497118188,-8.341162243397592e-6,-2.0552915628861326e-8,-0.0017014101770728533,-8.152663137236833e-6,-2.0393996128262026e-8,-0.001701220123087332,-7.99029114266652e-6,-2.0256802195303342e-8,-0.0017011069963663247,-7.899440803721392e-6,-2.0180015465234488e-8,-0.0017010298088642021,-7.905934485141747e-6,-2.0185786978182623e-8,-0.0017009442845075707,-8.013087611659719e-6,-2.0277176829621546e-8,-0.001700812271449088,-8.203778005991368e-6,-2.043983579510598e-8,-0.001700608518360257,-8.446292559298515e-6,-2.0646923134808663e-8,-0.0017003238336688721,-8.702227743979316e-6,-2.086581340902206e-8,-0.0016999645473487364,-8.934420936028888e-6,-2.106486263485468e-8,-0.00169954913513485,-9.113190354238928e-6,-2.1218747636263865e-8,-0.0016991033874861217,-9.22001102864717e-6,-2.1311618593498575e-8,-0.0016986554807616981,-9.248647435155238e-6,-2.13380740034121e-8,-0.0016982318855080062,-9.204399731118582e-6,-2.1302519561850147e-8,-0.0016978543995590132,-9.10238542444722e-6,-2.121770451114759e-8,-0.0016975380294125626,-8.965565187764711e-6,-2.1103046899748445e-8,-0.0016972892355614753,-8.822716746064468e-6,-2.0982928734896224e-8,-0.001697104147393287,-8.706075816679848e-6,-2.0884721675880377e-8,-0.0016969666972081788,-8.647926619789557e-6,-2.0835920379221263e-8,-0.00169684740011825,-8.675181170249637e-6,-2.0859546028640884e-8,-0.0016967045804855362,-8.801519162920972e-6,-2.0967436610679105e-8,-0.0016964905065300056,-9.01844333619171e-6,-2.1152579343920042e-8,-0.0016961639731149969,-9.289415793960601e-6,-2.138406153842879e-8,-0.001695707106127775,-9.553311743058151e-6,-2.160998864081665e-8,-0.0016951385176591758,-9.741104001052941e-6,-2.1771702413548394e-8,-0.0016945128063564176,-9.801298769835388e-6,-2.1825425829586347e-8,-0.001693902985101117,-9.720976758235634e-6,-2.176009941619977e-8,-0.0016933741666031645,-9.529958261736527e-6,-2.1600847624303437e-8,-0.0016929627649807358,-9.286767509844959e-6,-2.1397063223247418e-8,-0.0016926700984223038,-9.056285660978077e-6,-2.1203544267075215e-8,-0.0016924690855679811,-8.890755742029625e-6,-2.1064502321326876e-8,-0.0016923170302585921,-8.819805710338477e-6,-2.1005150945671767e-8,-0.0016921682214408472,-8.8489478525651e-6,-2.1030391509463162e-8,-0.0016919833229793798,-8.963433333096914e-6,-2.1127991678712995e-8,-0.0016917350451069605,-9.1345146397534e-6,-2.1273812337831973e-8,-0.0016914106590955637,-9.326304850307346e-6,-2.1437577987506275e-8,-0.0016910119930584138,-9.50234733555081e-6,-2.158843896357954e-8,-0.0016905533915853798,-9.631291450467526e-6,-2.1699798048136526e-8,-0.0016900581754099764,-9.69110899668149e-6,-2.1752905508392625e-8,-0.0016895542586885487,-9.671493446052107e-6,-2.1738910779710982e-8,-0.0016890696305639124,-9.574362283327237e-6,-2.1659302094648493e-8,-0.0016886283866275086,-9.412685663855614e-6,-2.1524925607916213e-8,-0.001688247743667381,-9.208192002297713e-6,-2.1354054577412935e-8,-0.0016879360364431592,-8.98854909081757e-6,-2.1170017704178606e-8,-0.0016876914563649197,-8.784322466768402e-6,-2.0998642806816554e-8,-0.0016875013089274406,-8.625690463057586e-6,-2.086549585606093e-8,-0.0016873417279686287,-8.53858560005698e-6,-2.0792626469016813e-8,-0.001687178325547085,-8.539692110101775e-6,-2.079432297753112e-8,-0.0016869691166023061,-8.630151987089456e-6,-2.0871746461888742e-8,-0.0016866715029369072,-8.789267347131455e-6,-2.100754636158876e-8,-0.001686254318023176,-8.97163165767185e-6,-2.1163398058176738e-8,-0.0016857129301765929,-9.112940780203801e-6,-2.1284938230037018e-8,-0.0016850801573558933,-9.148161471228022e-6,-2.1317184884815498e-8,-0.001684422796496244,-9.037763226930734e-6,-2.122672379094548e-8,-0.0016838198027999708,-8.787797426035769e-6,-2.1018591580797273e-8,-0.0016833318949512636,-8.44940531154977e-6,-2.0735764854021037e-8,-0.0016829803888256231,-8.096954946202853e-6,-2.0440726785689123e-8,-0.0016827459755191082,-7.799047296914452e-6,-2.0191141842253217e-8,-0.001682583454796451,-7.598483392665845e-6,-2.0023083749209106e-8,-0.0016824406087873034,-7.507046345778621e-6,-1.9946647297024858e-8,-0.00168227233893414,-7.511005682637191e-6,-1.995050767444206e-8,-0.0016820477635596358,-7.580629314178077e-6,-2.0009840918065495e-8,-0.0016817519149339769,-7.679226904576688e-6,-2.0093885939198342e-8,-0.0016813844563981313,-7.770076038468931e-6,-2.017176810577966e-8,-0.00168095711875254,-7.821310599237092e-6,-2.02166337334569e-8,-0.0016804905773571324,-7.809332280904686e-6,-2.020854689581189e-8,-0.001680010953275545,-7.72105576611143e-6,-2.013639837823021e-8,-0.001679546036692029,-7.555014866778501e-6,-1.999884849506686e-8,-0.0016791214090587767,-7.3212178391739496e-6,-1.9804212819061585e-8,-0.0016787568208649483,-7.0396326381076e-6,-1.956919439356282e-8,-0.0016784633058374865,-6.737431280764423e-6,-1.9316573595337173e-8,-0.0016782413530992905,-6.445394475960026e-6,-1.907219462969039e-8,-0.001678080222805157,-6.193862700986028e-6,-1.8861571689255484e-8,-0.0016779584103784654,-6.008506027515523e-6,-1.8706342929766363e-8,-0.001677845249146384,-5.906093833141004e-6,-1.8620715185890165e-8,-0.0016777038192801804,-5.890290612856807e-6,-1.8607914310898255e-8,-0.0016774958004093384,-5.947719194763358e-6,-1.8656841222782147e-8,-0.0016771890493794792,-6.04551842846217e-6,-1.873997969081269e-8,-0.001676767832841618,-6.132885965309012e-6,-1.8814675758844495e-8,-0.0016762435242489034,-6.149771262434435e-6,-1.8830466334363702e-8,-0.0016756602448421592,-6.044400624246342e-6,-1.8743841862040513e-8,-0.001675087945535953,-5.795520152856072e-6,-1.8536922752685177e-8,-0.001674600133436057,-5.427392994706577e-6,-1.8229981102522346e-8,-0.0016742451149479186,-5.004926323171685e-6,-1.7877295972549893e-8,-0.0016740276746855878,-4.608399079730942e-6,-1.7546004506771972e-8,-0.0016739119980301556,-4.302510944871832e-6,-1.729026756861099e-8,-0.0016738412334485694,-4.117301795986611e-6,-1.7135338860309113e-8,-0.0016737597260480786,-4.047201977927108e-6,-1.7076725758927597e-8,-0.0016736272940627243,-4.062129813392705e-6,-1.708939796436854e-8,-0.0016734236526182423,-4.121225593287399e-6,-1.7139232302019368e-8,-0.0016731464204356393,-4.183527382690121e-6,-1.719194905092986e-8,-0.001672806667024793,-4.214324596648135e-6,-1.721846074771176e-8,-0.0016724243936852225,-4.1882372375009135e-6,-1.7197481453770475e-8,-0.0016720247121886067,-4.090499672781078e-6,-1.71166177315317e-8,-0.001671634560924054,-3.9173958791691575e-6,-1.697273167292582e-8,-0.0016712796064216253,-3.676148262014399e-6,-1.677183719774153e-8,-0.0016709811132979546,-3.3841381804794744e-6,-1.6528438089025636e-8,-0.001670752839878428,-3.067097445950772e-6,-1.626401154436992e-8,-0.0016705983902454557,-2.755995668689129e-6,-1.6004410253319553e-8,-0.0016705096420609104,-2.4827410471397807e-6,-1.5776279333381472e-8,-0.0016704667555038147,-2.2751486697532836e-6,-1.5602864533974782e-8,-0.001670440054529566,-2.151829226592785e-6,-1.5499751063543376e-8,-0.001670393800312215,-2.117817669325008e-6,-1.5471212409242127e-8,-0.001670291584102462,-2.1617204405963794e-6,-1.5507814775575798e-8,-0.0016701029794063543,-2.2550054075283997e-6,-1.5585801952800447e-8,-0.0016698110099757678,-2.354258371242796e-6,-1.5668961170856538e-8,-0.0016694193436379667,-2.4075797922360825e-6,-1.5713962061550806e-8,-0.0016689568880535386,-2.3659216383981152e-6,-1.5679837674904023e-8,-0.001668476255894404,-2.198389705642687e-6,-1.5540770761251108e-8,-0.0016680427111036224,-1.9070635849955495e-6,-1.5298448763090533e-8,-0.0016677138985701416,-1.5331708742942751e-6,-1.49871845626283e-8,-0.001667517861434114,-1.147223731015582e-6,-1.4665690841976024e-8,-0.0016674416245268775,-8.243545513833562e-7,-1.4396566986045408e-8,-0.0016674379465091208,-6.170824570407865e-7,-1.4223645290633774e-8,-0.0016674458929825874,-5.401446955353702e-7,-1.415932767755485e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json new file mode 100644 index 0000000000..1de0a5478d --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":20000,"numberOfSamples":1000,"samples":[0.002920358133904192,-6.784113942412794e-6,1.9052440314477163e-8,0.0029206413912713745,-6.613636446664559e-6,1.880279195741177e-8,0.0029208307139081857,-6.4248857259363685e-6,1.8526799455172666e-8,0.002920930147853429,-6.259580496894272e-6,1.8285299846459358e-8,0.002920958301557765,-6.151401288497133e-6,1.8127384394993633e-8,0.002920943527534336,-6.121517965926748e-6,1.8083876197142136e-8,0.002920918375602291,-6.176714362040785e-6,1.816459054828576e-8,0.0029209142523147777,-6.309966452545619e-6,1.8359183512205728e-8,0.0029209570493570875,-6.502919273456435e-6,1.864078390277559e-8,0.0029210641805222245,-6.729529878146821e-6,1.8971329337261025e-8,0.0029212431239192664,-6.960111764971586e-6,1.9307474224319167e-8,0.0029214911994797127,-7.165144308668532e-6,1.960613535377138e-8,0.002921796120285953,-7.318617634903727e-6,1.982935162046132e-8,0.002922137007124233,-7.4010933087209115e-6,1.994874542519259e-8,0.0029224858842140738,-7.402792330024526e-6,1.9950053694911065e-8,0.0029228100891597296,-7.3269133160290385e-6,1.9838013786501703e-8,0.0029230765056806078,-7.192875581754198e-6,1.9641124744988003e-8,0.002923258593947595,-7.038021661925838e-6,1.941411030247615e-8,0.0029233461420444737,-6.914897975233613e-6,1.9233867338703342e-8,0.0029233550561071457,-6.88082642372724e-6,1.9184132872670825e-8,0.002923331035256764,-6.979157664713172e-6,1.9328047777690732e-8,0.002923340142385916,-7.2183869507838524e-6,1.9677702094935728e-8,0.002923445583922481,-7.561828631160178e-6,2.0179192009197127e-8,0.002923681317946548,-7.937980661899995e-6,2.072789220706034e-8,0.0029240384097172193,-8.268180631197756e-6,2.1208898937220332e-8,0.0029244717828463846,-8.495446917109097e-6,2.1539128515592525e-8,0.0029249206337382287,-8.5993447870362e-6,2.168897594018406e-8,0.0029253292642615033,-8.593866031641322e-6,2.1679150221309016e-8,0.002925659785723746,-8.515407336314436e-6,2.1563040883823154e-8,0.0029258958667452545,-8.409144036535884e-6,2.140676187245665e-8,0.0029260405842169023,-8.318330424117874e-6,2.1273515340970926e-8,0.0029261116369550147,-8.277597083016847e-6,2.1213831819462888e-8,0.0029261360482877165,-8.309529221173803e-6,2.1260608728115165e-8,0.0029261452014683505,-8.42340926017503e-6,2.142729184107828e-8,0.002926170313882796,-8.615486024606374e-6,2.1708269585437497e-8,0.00292623844165663,-8.870566448345604e-6,2.2081201504360447e-8,0.00292636924853009,-9.164729529600066e-6,2.2511001728707966e-8,0.0029265727710682966,-9.46889441648262e-6,2.295507952203869e-8,0.0029268483980316373,-9.752900430721535e-6,2.336931848773817e-8,0.0029271851539575938,-9.989600330613871e-6,2.371405611551756e-8,0.0029275631112714875,-1.0158516530347245e-5,2.3959412562508196e-8,0.002927955664309901,-1.0248883948905652e-5,2.408973052847181e-8,0.002928332543885939,-1.0262052169211477e-5,2.4107097524156514e-8,0.002928663659626732,-1.0213176614852856e-5,2.4033835922844377e-8,0.002928924086482032,-1.0131859571605514e-5,2.391343414198871e-8,0.002929100469893201,-1.006068720901442e-5,2.380835533385682e-8,0.00292919825272032,-1.0049779074946679e-5,2.3791978424671676e-8,0.0029292472514429032,-1.0145544621233506e-5,2.3932078427797663e-8,0.0029293008561212352,-1.0374107175155202e-5,2.4266580620660107e-8,0.0029294238469290295,-1.0725024417737487e-5,2.4779841229322424e-8,0.002929669111734987,-1.114611883277768e-5,2.539521780426727e-8,0.0029300535325597157,-1.1558053316444333e-5,2.599647534430263e-8,0.0029305485124082784,-1.1884615009568598e-5,2.647210161222967e-8,0.0029310923955805034,-1.2081611605397568e-5,2.675757842754958e-8,0.002931616304399638,-1.2148069338781219e-5,2.6851763811636517e-8,0.002932067285150511,-1.2117575796211164e-5,2.6804177118692685e-8,0.002932418917621506,-1.2040100109443465e-5,2.6688285414068273e-8,0.002932670230039864,-1.1965464765100921e-5,2.657720810322275e-8,0.0029328387680504554,-1.1933289258766363e-5,2.6528961772784398e-8,0.00293295270881014,-1.196897681852962e-5,2.658062017342903e-8,0.002933044376699607,-1.2083490982675024e-5,2.67480469420976e-8,0.0029331455921541476,-1.2274805413081184e-5,2.7028061070784242e-8,0.002933284292138651,-1.2529877406152909e-5,2.7401345594697467e-8,0.00293348183921598,-1.2826952297089921e-5,2.7835835906596038e-8,0.0029337508490475143,-1.3138354603080276e-5,2.829083170402535e-8,0.002934093645838865,-1.3433894030281315e-5,2.872201713802254e-8,0.0029345016544849406,-1.3684880135773215e-5,2.908736254701938e-8,0.0029349561406361926,-1.386840837531521e-5,2.935340201831078e-8,0.002935430486740117,-1.3971275110489517e-5,2.95009506018706e-8,0.002935893835760189,-1.3992889279387817e-5,2.9529348563241594e-8,0.002936315747796631,-1.3946693107954746e-5,2.9458526641335536e-8,0.0029366714399644074,-1.3859725730502529e-5,2.9328347332084718e-8,0.0029369471463227275,-1.3770076163005065e-5,2.919483182596872e-8,0.0029371450608840764,-1.3721886782902614e-5,2.912277265954847e-8,0.002937286864066753,-1.3757394229001907e-5,2.917400350300773e-8,0.0029374138979444495,-1.3905986529102212e-5,2.9391340967481903e-8,0.002937581299334286,-1.4172039349156543e-5,2.9780814874648412e-8,0.002937844163109093,-1.45262281968288e-5,3.029905020497397e-8,0.0029382377175291947,-1.4907319198974039e-5,3.085599616240686e-8,0.0029387598782889463,-1.5239082205155629e-5,3.13397558100923e-8,0.0029393676298225253,-1.5457827043506526e-5,3.165695446938089e-8,0.002939992216838139,-1.5536378976067384e-5,3.1767915909756623e-8,0.0029405653190518453,-1.5490797301223943e-5,3.169654522724492e-8,0.002941041254771594,-1.536815347138079e-5,3.151235350452084e-8,0.00294140542344543,-1.5225670745632641e-5,3.129971116966001e-8,0.0029416699353257774,-1.511314588614597e-5,3.113191036723647e-8,0.002941863403875871,-1.5063955018859357e-5,3.105791466104839e-8,0.002942020994539501,-1.5093505935668198e-5,3.110013611490886e-8,0.002942177366646585,-1.520170158147927e-5,3.125814014183412e-8,0.0029423625508156873,-1.537654151057894e-5,3.1514004634474597e-8,0.002942599690849947,-1.559743059921687e-5,3.183721614696178e-8,0.00294290359336924,-1.5838011990550073e-5,3.2188849522134435e-8,0.00294327957060671,-1.606891948600009e-5,3.252562907878252e-8,0.002943722566359027,-1.626091105834113e-5,3.2804552667574874e-8,0.0029442169460562008,-1.6388674978272435e-5,3.2988495583917805e-8,0.002944737613991192,-1.643514977217652e-5,3.3052553288382284e-8,0.002945253028492552,-1.6395599116742716e-5,3.299000825108424e-8,0.0029457301748656087,-1.6280316984019043e-5,3.2816276383530096e-8,0.0029461409054937337,-1.6114844458962526e-5,3.2569189442586106e-8,0.002946468467779173,-1.59369584836108e-5,3.230452078197805e-8,0.0029467127007430827,-1.5790452065963385e-5,3.20867790313752e-8,0.002946892484190752,-1.571653783339316e-5,3.19765091292342e-8,0.0029470444074099875,-1.574421226294738e-5,3.201610119609517e-8,0.00294721700040216,-1.5881334913556607e-5,3.2216717921521556e-8,0.002947460426363542,-1.6108825234197094e-5,3.2549869520431156e-8,0.002947812788728661,-1.6380947123874963e-5,3.294795449427606e-8,0.002948286406491707,-1.663423983095662e-5,3.3317466246604255e-8,0.0029488597757889802,-1.6805051579412595e-5,3.356478318315856e-8,0.0029494809972528905,-1.6850594771345913e-5,3.362711592054566e-8,0.0029500837834087173,-1.6764027436157334e-5,3.3494691584581735e-8,0.002950609547099543,-1.65754022846451e-5,3.321214488618771e-8,0.0029510248489415226,-1.6338277873894157e-5,3.285874310463184e-8,0.002951326908519711,-1.6110067758768604e-5,3.251932528889389e-8,0.002951537740617979,-1.5935923031543694e-5,3.226045946019777e-8,0.002951692897861342,-1.5841154803625142e-5,3.2119268917177497e-8,0.0029518308167177263,-1.5831373922113136e-5,3.210371527010424e-8,0.002951985680243071,-1.5896753371837802e-5,3.219898309769699e-8,0.0029521838394617654,-1.6017149276703177e-5,3.237510141211502e-8,0.0029524425171660266,-1.6166416508957604e-5,3.259333287301716e-8,0.002952769476479237,-1.631566760743691e-5,3.281097659429368e-8,0.0029531628666808734,-1.6435949662826805e-5,3.298530817637135e-8,0.002953611072809355,-1.6501010877409013e-5,3.307765926789581e-8,0.0029540929521073237,-1.6490693620487103e-5,3.305842467294873e-8,0.002954579264429746,-1.639499922671663e-5,3.291305556929234e-8,0.00295503617946976,-1.6218085914775832e-5,3.264794315872196e-8,0.0029554312636725514,-1.598068794654785e-5,3.2293958485677294e-8,0.002955741283648492,-1.5719093070127868e-5,3.1904895652031e-8,0.002955959806034109,-1.547937573783238e-5,3.154889715991773e-8,0.0029561017019983917,-1.5307268455907255e-5,3.129343797151466e-8,0.002956202124345455,-1.5236171399037398e-5,3.118759456372629e-8,0.002956309344895545,-1.5277053681785616e-5,3.124717312307237e-8,0.002956473061121083,-1.5413664099591182e-5,3.144774573045378e-8,0.002956731321048645,-1.56048785559379e-5,3.1728248939181924e-8,0.00295709965139376,-1.5793981380019647e-5,3.20047831722283e-8,0.002957565526219128,-1.592284518104132e-5,3.2191570296512827e-8,0.002958090281759539,-1.5947524626471783e-5,3.2223937815342005e-8,0.0029586188407144266,-1.5850738642942996e-5,3.2076690446522256e-8,0.002959094945026436,-1.5646720190761735e-5,3.177121976954928e-8,0.002959476848073268,-1.5376083073574004e-5,3.136786811924238e-8,0.0029597476091094625,-1.5092533249955837e-5,3.094622473963542e-8,0.0029599165389014807,-1.4847001851064014e-5,3.058161120537158e-8,0.0029600126576895124,-1.4675368085643121e-5,3.032691574396036e-8,0.0029600742944759875,-1.4593152680899354e-5,3.020479859533819e-8,0.0029601393336397405,-1.4596748310243467e-5,3.020960605628144e-8,0.002960238698290419,-1.4668406120361078e-5,3.031483113270092e-8,0.002960393348094185,-1.4782054688900286e-5,3.048176038556993e-8,0.0029606137208240614,-1.4908213038661743e-5,3.0666732803764704e-8,0.002960900307724539,-1.5017561814104221e-5,3.082638893027108e-8,0.002961244434757364,-1.50835587775595e-5,3.092151102287129e-8,0.0029616289196745093,-1.508481954343969e-5,3.092053838966425e-8,0.0029620288994349014,-1.5007922270276185e-5,3.080373072655211e-8,0.002962413625758523,-1.485083932757977e-5,3.056826258788275e-8,0.0029627502369207145,-1.4626387490437281e-5,3.023332794121676e-8,0.002963010182597418,-1.4364071234967201e-5,2.9842834228472034E-08,0.002963177767764606,-1.4107920694885702e-5,2.9462135061082662e-8,0.002963258245024794,-1.390835698351417e-5,2.9165907356940043e-8,0.002963281197327158,-1.3808595017261191e-5,2.9017964910745684e-8,0.0029632955592347656,-1.3829869002871433e-5,2.9049396981577167e-8,0.0029633562901483323,-1.396211303207011e-5,2.9244867118890364e-8,0.002963507429295757,-1.4165122782118485e-5,2.9544476640865564e-8,0.0029637685076608447,-1.4380196230406393e-5,2.986111941278739e-8,0.0029641293995320965,-1.4547336536681909e-5,3.010599812437667e-8,0.0029645544477331213,-1.462147944059388e-5,3.021262159737794e-8,0.002964993199433165,-1.4582947790407866e-5,3.015220993420224e-8,0.002965393786237881,-1.4440252912374524e-5,2.993775541428279e-8,0.002965715263846332,-1.4225700000439636e-5,2.9617431791449873e-8,0.002965936105661564,-1.3985740295725363e-5,2.926023813664994e-8,0.0029660572013795127,-1.3768956215185547e-5,2.893816297894991e-8,0.0029660991821764673,-1.361495218959358e-5,2.8709729777681658e-8,0.0029660954822132313,-1.3546940317984253e-5,2.8609061319606824e-8,0.0029660836753954115,-1.3569374678669404e-5,2.86424548981107e-8,0.002966097715672726,-1.3670152439685494e-5,2.8791723939980673e-8,0.002966162758787371,-1.382559151959131e-5,2.9021622975413763e-8,0.002966292909415142,-1.4006141463460001e-5,2.9288313696922994e-8,0.0029664912327432187,-1.4181368889154244e-5,2.9546719679842586e-8,0.00296675098439865,-1.432364071392131e-5,2.975594063607446e-8,0.0029670571768570203,-1.441068763053631e-5,2.988302426452729e-8,0.0029673880824924595,-1.4427641005829092e-5,2.990599124607975e-8,0.0029677168251591012,-1.4369146872198044e-5,2.9817001755657374e-8,0.002968013691011178,-1.4241810907193253e-5,2.962601250879183e-8,0.0029682500709710805,-1.4066513065220714e-5,2.93642059457502e-8,0.002968404731954602,-1.387910107568484e-5,2.9084963591962518e-8,0.002968471978193223,-1.3727039399383037e-5,2.88588007731629e-8,0.002968469059433979,-1.3659767445614165e-5,2.875897632722551e-8,0.0029684378958154877,-1.3713145157645224e-5,2.8838395498620046e-8,0.00296843646941631,-1.3893353069001035e-5,2.9105800690051132e-8,0.0029685202671800416,-1.4169383669450605e-5,2.9514779524273305e-8,0.0029687215722676882,-1.4480741544933563e-5,2.997532983204709e-8,0.0029690374925616814,-1.4758063993347154e-5,3.038452227517716e-8,0.002969432550313911,-1.494625005415047e-5,3.0660807023103234e-8,0.0029698527534371528,-1.501941615613648e-5,3.076614564288683e-8,0.002970242975131316,-1.4983590593674082e-5,3.070991787329774e-8,0.002970560707010411,-1.486978332026129e-5,3.053852833456252e-8,0.002970783380041674,-1.4722598896256202e-5,3.031840881526067e-8,0.0029709096528671933,-1.4588664344004444e-5,3.01187930361603e-8,0.0029709563531596737,-1.4507263299708571e-5,2.999782950169233e-8,0.0029709528196634203,-1.450412607323851e-5,2.9993430059943106e-8,0.0029709340930672533,-1.4588613765477793e-5,3.011917526326649e-8,0.0029709342235076834,-1.4754157039491757e-5,3.036503994043903e-8,0.0029709808089967682,-1.4981337496558506e-5,3.070201327711546e-8,0.0029710914938153535,-1.524256500555707e-5,3.1089054340748793e-8,0.0029712726180356206,-1.5507206205397086e-5,3.1480689014010646e-8,0.0029715197167699482,-1.5746211713835314e-5,3.1833846061620287e-8,0.002971819217195222,-1.5935676545529305e-5,3.211310994113541e-8,0.0029721506391493777,-1.6059298169857467e-5,3.2294356226821274e-8,0.002972488915422919,-1.6110085669579795e-5,3.236730284468479e-8,0.0029728068475521232,-1.609171171330991e-5,3.233754856855953e-8,0.0029730780491342918,-1.6019684593364873e-5,3.2228331099957483e-8,0.002973280996517472,-1.5922014544477006e-5,3.2081488017266414e-8,0.002973404663571169,-1.5838170077771026e-5,3.195582334149546e-8,0.0029734552005521004,-1.581431674792034e-5,3.1919928221359786e-8,0.002973461188362297,-1.589302000644207e-5,3.2036819078499595e-8,0.0029734728689441363,-1.609792381140514e-5,3.234121094806937e-8,0.0029735507610109523,-1.6418860094304986e-5,3.281753040259766e-8,0.002973744280704623,-1.6807320664665265e-5,3.3393348896120576e-8,0.0029740698756861514,-1.7189700640362698e-5,3.395915574472174e-8,0.002974502213153519,-1.7494403406110863e-5,3.4408643234550394e-8,0.002974984560957685,-1.767802825408724e-5,3.4677597890506306e-8,0.0029754513730213712,-1.773672456282881e-5,3.476073805538473e-8,0.002975849730807777,-1.7700253301847003e-5,3.470280180238341e-8,0.0029761508530331345,-1.7616516953682456e-5,3.4575409590022556e-8,0.0029763511916333146,-1.7535807952942615e-5,3.445351817065031e-8,0.0029764671850589274,-1.7499734982786542e-5,3.439891544803893e-8,0.002976527814731713,-1.753553605886131e-5,3.445182277720747e-8,0.0029765674333753333,-1.7654482487030005e-5,3.462863214504655e-8,0.0029766197783471023,-1.785285028144174e-5,3.4923452338110174e-8,0.002976713303471049,-1.8114495901758313e-5,3.531200044507124e-8,0.00297686786306883,-1.841450460826479e-5,3.575704849602197e-8,0.002977092820345906,-1.8723439945705067e-5,3.6214741069552453E-08,0.0029773865940886136,-1.9011730919729806e-5,3.6641106825301627e-8,0.00297773758195352,-1.9253744086145604e-5,3.6998098021908325e-8,0.002978126225410339,-1.9431077092030192e-5,3.725847234837322e-8,0.002978527778364898,-1.953481608938666e-5,3.740914085341509e-8,0.0029789154040244796,-1.9566826718393777e-5,3.7453087807647996e-8,0.002979263474936315,-1.9540223734977267e-5,3.741007038668588e-8,0.002979551126528603,-1.9479037319080024e-5,3.731610210216535e-8,0.002979766242014358,-1.9416859969519788e-5,3.722137847792964e-8,0.0029799099497124348,-1.9393715173435276e-5,3.7185523694292244e-8,0.002980000915971834,-1.94498533312271e-5,3.7268276541520824e-8,0.0029800772524500073,-1.9615566721707554e-5,3.7514326950814606e-8,0.002980192469529219,-1.9898167604817833e-5,3.7934040287157073e-8,0.0029804022602219083,-2.0271164712515565e-5,3.8487521814506124e-8,0.0029807434701728474,-2.067424132501533e-5,3.9084720785291444e-8,0.0029812147089178787,-2.1030261025836366e-5,3.961077233026522e-8,0.0029817719928732045,-2.127449949752043e-5,3.99694784583061e-8,0.0029823449666828935,-2.1379992430783766e-5,4.0121037663042906e-8,0.0029828645165091085,-2.136410513008704e-5,4.009182899623436e-8,0.0029832854451143304,-2.127531976246566e-5,3.995464665032265e-8,0.002983594498668351,-2.1171712511966522e-5,3.97964527218785e-8,0.0029838054954291746,-2.1103248487216302e-5,3.9691834147374094e-8,0.002983948836829765,-2.110276132606735e-5,3.968953147631429e-8,0.002984061290257191,-2.1184288397485705e-5,3.981006008442894e-8,0.002984178513731084,-2.1345484561751207E-05,4.004945855912969e-8,0.00298433040769511,-2.157146104983014e-5,4.0385128619668554e-8,0.002984538433971821,-2.183875045296736e-5,4.078179890719198e-8,0.002984814157245484,-2.2119128743535838e-5,4.1197228817699106e-8,0.0029851587068223267,-2.2383338100873876e-5,4.158774803164346e-8,0.0029855631058775885,-2.260472386163859e-5,4.191366897386889e-8,0.002986009558291577,-2.2762699849510053e-5,4.214444460091879e-8,0.002986473810408079,-2.2845709776562213e-5,4.226307152736928e-8,0.0029869284555065143,-2.285321248440732e-5,4.226903134195116e-8,0.0029873468009023675,-2.279640960153469e-5,4.217934987696174e-8,0.0029877069362470323,-2.2697618488155953e-5,4.202762496290873e-8,0.002987995706883981,-2.2588196005956238e-5,4.186087368514205e-8,0.0029882122724941918,-2.250493424394035e-5,4.173407992678916e-8,0.002988370845250907,-2.2484777608857293e-5,4.170223881865493e-8,0.0029885017936435655,-2.255756728162393e-5,4.180950622118746e-8,0.002988649508545319,-2.2737002269993502e-5,4.20757789848222e-8,0.002988864944534272,-2.3011660125789477e-5,4.248345478531366e-8,0.0029891917531914853,-2.3340375925996207e-5,4.2970713042447454e-8,0.0029896486141179545,-2.3657833305475466e-5,4.3439950290240724e-8,0.002990215930999584,-2.3893473135528555e-5,4.378597223794274e-8,0.0029908371871804683,-2.399812996226874e-5,4.393568517521914e-8,0.0029914382467285117,-2.396417191820179e-5,4.3878147729951906e-8,0.0029919551613743003,-2.38265851199188e-5,4.3666186218943454e-8,0.0029923547556799392,-2.364535922564181e-5,4.33899815622375e-8,0.0029926388924618567,-2.34815530183942e-5,4.314111317342226e-8,0.0029928352743501543,-2.3379858232251807e-5,4.298635560434982e-8,0.002992983643000855,-2.3362211966869825e-5,4.2958145653724355e-8,0.002993124239325345,-2.3429729514789833e-5,4.305762336091702e-8,0.0029932908205783236,-2.3568260581625195e-5,4.3263117748307686e-8,0.0029935075467194595,-2.3754218892099406e-5,4.353897939933425e-8,0.002993788115402275,-2.3959322132927218e-5,4.3842700238288005e-8,0.002994135865131543,-2.415427368613513e-5,4.413039745178603e-8,0.002994544317604473,-2.431187474329782e-5,4.436143642962751e-8,0.0029949981369148688,-2.4409940834154676e-5,4.4502773677267694e-8,0.002995474733920963,-2.4434159363146072e-5,4.453322269139798e-8,0.002995946867852737,-2.438065412063379e-5,4.444727962470359e-8,0.0029963863997792425,-2.4257633800533217e-5,4.425756592263305e-8,0.0029967688850502656,-2.4085455016201706e-5,4.399488097416399e-8,0.002997078338300538,-2.3894673268282683e-5,4.370522458009922e-8,0.002997311349129843,-2.3721945852451404e-5,4.344359182276227e-8,0.002997479656226587,-2.360404297666528e-5,4.32649398235654e-8,0.0029976103593761477,-2.357065305448074e-5,4.3213385803306306e-8,0.002997743110787153,-2.3636926496027646e-5,4.3311086910764544e-8,0.002997923748088096,-2.379704664473801e-5,4.354874311053949e-8,0.0029981942175954005,-2.4020889171051923e-5,4.388077348084879e-8,0.0029985799058661606,-2.4256592745038067e-5,4.422930981774514e-8,0.0029990778745615423,-2.444143335305884e-5,4.450051619084297e-8,0.002999651934402648,-2.4520419116148653e-5,4.461236561595702e-8,0.003000240119555401,-2.4466536425871935e-5,4.452486712152954e-8,0.0030007744382348467,-2.4292342453891288e-5,4.4257372821343864e-8,0.0030012043836071256,-2.4045254021272564e-5,4.388146492212079e-8,0.003001512146798215,-2.3788596603881732E-05,4.3492440534199405e-8,0.003001713011004348,-2.3579216292932016e-5,4.3175608587979206e-8,0.0030018440201570076,-2.345253767991309e-5,4.298382851303703e-8,0.0030019492490419297,-2.3418849803166555e-5,4.293202980731309e-8,0.0030020683571267115,-2.3467794115789163e-5,4.300412504387121e-8,0.003002230577040951,-2.3575924418412295e-5,4.3164515275253525e-8,0.0030024530481396073,-2.371369072928725e-5,4.336864156691746e-8,0.0030027414546316424,-2.3850507219765965e-5,4.357057053753451e-8,0.0030030914014577796,-2.395813305179184e-5,4.3728004665977624e-8,0.003003489836964812,-2.4013129247926298e-5,4.3805913400348664e-8,0.003003916505986112,-2.3999045197511412e-5,4.3779791639210484e-8,0.0030043458018004154,-2.3908648392456543e-5,4.3639009503235175e-8,0.003004749546491452,-2.3746015567883387e-5,4.338995688522113e-8,0.0030051010544452283,-2.3527756377723387e-5,4.305786620408989e-8,0.003005380278727441,-2.3282359290256304e-5,4.268578367873625e-8,0.0030055791218540325,-2.3046814799346892e-5,4.232942511550203e-8,0.003005705403471987,-2.2860300990568903e-5,4.2047613637055405e-8,0.0030057838269298923,-2.2755768795899834e-5,4.188959157506121e-8,0.0030058528292368726,-2.275134395340437e-5,4.188212374752424e-8,0.003005957307061821,-2.2843946110056914e-5,4.2020014794074984E-08,0.003006138413427418,-2.300724171618979e-5,4.226319699714995e-8,0.0030064225790959894,-2.319527741556905e-5,4.254234844837243e-8,0.003006812562702178,-2.335201743558618e-5,4.277330694714285e-8,0.0030072836012702583,-2.3425444976355578e-5,4.2878234687331705e-8,0.003007787264335132,-2.3382901257872224e-5,4.280856410095554e-8,0.003008263689228249,-2.3222450315454287e-5,4.2561953877304193e-8,0.0030086592071474436,-2.2974830200955383e-5,4.218511547518296e-8,0.0030089426676550976,-2.26937486182808e-5,4.17591305405803e-8,0.00300911333844383,-2.2438134195979213e-5,4.137267939823414e-8,0.003009197487585295,-2.225432969879038e-5,4.1095226879594374e-8,0.003009236757661162,-2.216547948200621e-5,4.0961121500672567e-8,0.003009274709149118,-2.217043771176245e-5,4.09681037873079e-8,0.0030093468102407217,-2.224960297551781e-5,4.108625065125137e-8,0.003009475717436156,-2.2373205783984607e-5,4.1270546851323725e-8,0.003009670815179887,-2.250862585044295e-5,4.147189797251425e-8,0.0030099299700386954,-2.2625428795493783e-5,4.164463699013084e-8,0.00301024187402901,-2.269838136100306e-5,4.1750971465696804e-8,0.003010588197802463,-2.2709282253166442e-5,4.17636812926794e-8,0.0030109454772800953,-2.2648401738654642e-5,4.1668279995880246e-8,0.0030112871514783373,-2.2515993789587058e-5,4.1465320020488957e-8,0.003011586410402015,-2.2323777967550487e-5,4.1172650945728414e-8,0.003011820354517727,-2.2095615453953176e-5,4.082642765490463e-8,0.0030119753682766987,-2.1866121724890676e-5,4.0478962804724885e-8,0.0030120526329220835,-2.167596603147096e-5,4.019155827324615e-8,0.003012071619005174,-2.1563470526289128e-5,4.002177521312465e-8,0.0030120689879420764,-2.1553983387326334e-5,4.0007412510859045e-8,0.0030120914835277484,-2.1650539471334874e-5,4.015251477306536e-8,0.003012183981443884,-2.1829957093484467e-5,4.0421644155871945e-8,0.003012376436940448,-2.2046872823385574e-5,4.074612539538994e-8,0.003012674385510726,-2.2245060636632923e-5,4.104120937557746e-8,0.003013056385483303,-2.237249037808146e-5,4.122877520759659e-8,0.003013479206572159,-2.2395363336080645e-5,4.125840285038834e-8,0.00301388907552939,-2.2307009988112173e-5,4.112064949092303e-8,0.003014235716569667,-2.21292539477236e-5,4.0848957479960844e-8,0.0030144852458368573,-2.1905904722336058e-5,4.0509715506145036e-8,0.003014628140393211,-2.1690273931464643e-5,4.0183354013727575e-8,0.0030146798861370155,-2.1530670765035162e-5,3.9942465173289727e-8,0.003014674513909391,-2.1458647516230403e-5,3.9834154839566405e-8,0.0030146539150070514,-2.1483480978725524e-5,3.9871866653527925e-8,0.003014657045850174,-2.159355446238517e-5,4.003762590554032e-8,0.0030147123189946208,-2.1762610361229233e-5,4.029158028075859e-8,0.0030148344079461886,-2.1957660138997936e-5,4.0583952504102195e-8,0.003015024723893025,-2.214588593896058e-5,4.0865392615269084e-8,0.0030152739036193445,-2.22993320272481e-5,4.109395623141755e-8,0.0030155648211872598,-2.2397503358356043e-5,4.123893927793968e-8,0.0030158753159103555,-2.242862410171888e-5,4.1282740545661414e-8,0.0030161804959735242,-2.239035571976067e-5,4.122196425411615e-8,0.0030164549748184135,-2.2290484655788065e-5,4.106850249505057e-8,0.0030166756785176938,-2.2147566876471484e-5,4.085053467582822e-8,0.0030168257902463656,-2.1990840651876128e-5,4.0612367627877493e-8,0.0030168998356597245,-2.185809576971141e-5,4.041113557692705e-8,0.003016908801918456,-2.1790004412026398e-5,4.030814374624823e-8,0.0030168827390098687,-2.1820318277313286e-5,4.035402021045058e-8,0.0030168675107474373,-2.19637983748077e-5,4.057054444845606e-8,0.003016913871536386,-2.220687703617631e-5,4.09366942603126e-8,0.003017061280745224,-2.2507121073764624e-5,4.138801109760418e-8,0.0030173232653145413,-2.28042122748035e-5,4.1833304318833444e-8,0.0030176816547766365,-2.3038752114974032e-5,4.218308051823787e-8,0.003018092461901088,-2.317060860472061e-5,4.2377204037070425e-8,0.0030185000617629827,-2.3189358211647577e-5,4.240056434796237e-8,0.0030188531890023565,-2.3114278349446322e-5,4.2282916648184983e-8,0.0030191172695145925,-2.298608274263823e-5,4.2086230161827244e-8,0.003019280521670172,-2.2854616393563075e-5,4.188596434454325e-8,0.00301935377876645,-2.27664496809722e-5,4.1752283274555145e-8,0.0030193653932179577,-2.2755137035095014e-5,4.173540981919782e-8,0.0030193531828910203,-2.2835689436507088e-5,4.185743087774839e-8,0.003019355569264338,-2.3003756094996915e-5,4.211123646364793e-8,0.003019403958407845,-2.323899690414335e-5,4.246574371735947e-8,0.003019517875462904,-2.3511172447957385e-5,4.2875145551518413e-8,0.003019703373553423,-2.3786991097561844e-5,4.328922423781491e-8,0.003019954219332213,-2.4036029761377636e-5,4.3662218358333147e-8,0.003020254766068992,-2.423482031971884e-5,4.395891153209101e-8,0.003020583367897793,-2.4369010761043288e-5,4.415784033020523e-8,0.0030209155492026242,-2.4434102956819604e-5,4.425239523927991e-8,0.0030212267021837735,-2.443546844269732e-5,4.4250868318591255e-8,0.0030214945520319145,-2.438812313993975e-5,4.417614262844354e-8,0.0030217018620748537,-2.4316298536123176e-5,4.406504030121207e-8,0.0030218398456035413,-2.4252307744576375e-5,4.396654725060574e-8,0.003021912331535931,-2.4233602777596313e-5,4.39372627104561e-8,0.0030219396761021347,-2.429662036167427e-5,4.4032012805518794e-8,0.0030219599100410016,-2.4466782499552282e-5,4.4288740896769435e-8,0.00302202361177359,-2.4746531459929342e-5,4.47105455738881e-8,0.003022180395983599,-2.5107010582484676e-5,4.525329764117915e-8,0.003022460057180725,-2.5490814286278737e-5,4.5829951905006934e-8,0.003022857627761485,-2.5828964736561783e-5,4.633626256410645e-8,0.003023332267934383,-2.6065721301283244e-5,4.668826880948124e-8,0.003023821927221237,-2.6178133626157623e-5,4.685181828073514e-8,0.0030242654527104103,-2.618060722133502e-5,4.6849397702988095e-8,0.00302462064736006,-2.6115003315723564e-5,4.674500325784846e-8,0.003024872054652819,-2.6034210741007566e-5,4.661907867346306e-8,0.003025029247398639,-2.5987096868666402e-5,4.654559337911846e-8,0.003025119674183166,-2.600869221520683e-5,4.657718713531259e-8,0.0030251798618585422,-2.6115962524536738e-5,4.6738915646380234e-8,0.003025247304514287,-2.6307892425086884e-5,4.702858653637406e-8,0.0030253540345252404,-2.6568373656992416e-5,4.742130825887169e-8,0.003025522180290973,-2.6870812112854194e-5,4.7876552038498893e-8,0.0030257616742353777,-2.718362842899639e-5,4.834647617031556e-8,0.0030260701248843638,-2.7475754898200334e-5,4.878418797216237e-8,0.003026434531440565,-2.7721296131052857e-5,4.915072369570908e-8,0.003026834267375794,-2.790282528074767e-5,4.941997646359749e-8,0.003027244652317317,-2.801310467185596e-5,4.958126578195143e-8,0.00302764045789911,-2.8055375984440208e-5,4.963976761859313e-8,0.0030279989828120874,-2.8042678247256376e-5,4.961548465878466e-8,0.003028302732030385,-2.7996614735003015e-5,4.9541371336797554e-8,0.0030285419382640503,-2.7945668380696642e-5,4.946074008271887e-8,0.0030287171664962805,-2.7922799028450726e-5,4.9423540183523226e-8,0.003028841979820805,-2.796162115926255e-5,4.948048077466765e-8,0.0030289448272879803,-2.8090202994150213e-5,4.967360897101288e-8,0.00302906808799766,-2.832216698757468e-5,5.002291747065914e-8,0.003029261393516597,-2.8646859820436187e-5,5.051165188848918e-8,0.0030295674732655794,-2.9023648863821986e-5,5.107788139765754e-8,0.0030300035036457318,-2.9387468552092513e-5,5.1622994265168756e-8,0.003030547654439084,-2.966892547984612e-5,5.204210187529804e-8,0.0030311419708281494,-2.9821700123341288e-5,5.226546402242462e-8,0.003031713429022907,-2.9841451121119933e-5,5.228710697781398e-8,0.0030322015269454838,-2.9764614366811912e-5,5.216297581619774e-8,0.003032576700297681,-2.964992539693665e-5,5.1982771928407634e-8,0.0030328427049061664,-2.95558177823456e-5,5.18354400080819e-8,0.0030330273738204275,-2.952483864326578e-5,5.178537523848844e-8,0.0030331699517057442,-2.9577898541893805e-5,5.1863748181959154e-8,0.0030333104138618784,-2.9715604944099784e-5,5.207074030425486e-8,0.003033482465717576,-2.9922976396352082e-5,5.238294189196952e-8,0.0030337098242709487,-3.017493755703473e-5,5.276185486031358e-8,0.0030340047066781646,-3.0441434203506502e-5,5.316170038656006e-8,0.0030343677318868385,-3.069201162682167e-5,5.353632168723621e-8,0.0030347889661070187,-3.089987345211356e-5,5.384526338775909e-8,0.0030352499978571756,-3.104524236184448e-5,5.405880170678398e-8,0.0030357268634388502,-3.111778908424594e-5,5.416158516454266e-8,0.0030361935715449567,-3.1117887001919675e-5,5.415451590233293e-8,0.003036625814699871,-3.105651407747209e-5,5.4054586154864e-8,0.003037004388893214,-3.095390233892545e-5,5.3892806738359834e-8,0.003037318044491069,-3.083722670992275e-5,5.3710656905416486e-8,0.0030375656938618433,-3.073753439132445e-5,5.355535566628204e-8,0.0030377579336559293,-3.068595891553895e-5,5.347403607373892e-8,0.0030379177300265737,-3.0709070813912385e-5,5.350663829087113e-8,0.00303807966723912,-3.0823076928323533e-5,5.367713979638666e-8,0.0030382864205653216,-3.102708512509555e-5,5.3983480616954495e-8,0.003038580787609243,-3.1297162733261364e-5,5.438876948576837e-8,0.0030389926926067358,-3.158502205672186e-5,5.481947606929273e-8,0.003039524072818,-3.1826340398447944e-5,5.517809779127173e-8,0.0030401396754807146,-3.196074975273588e-5,5.5373393880473416e-8,0.0030407732402690456,-3.1956872342941396e-5,5.5358273365942866e-8,0.0030413506216760183,-3.1827784431995975e-5,5.515324561172027e-8,0.0030418182463314066,-3.1625541651179424e-5,5.4838080988230775e-8,0.003042160215499455,-3.141800758364335e-5,5.4516451859117366e-8,0.003042396527409552,-3.126315753054347e-5,5.4276642795710085e-8,0.003042568426483442,-3.119410063882663e-5,5.416865946881467e-8,0.0030427219468042673,-3.121729790939866e-5,5.4201628447496637e-8,0.0030428965072263536,-3.131876817788899e-5,5.435349924198628e-8,0.0030431195875498325,-3.1472417249374476e-5,5.4583966139684054e-8,0.003043405671120528,-3.164719823662061e-5,5.48454888443154e-8,0.003043757278206,-3.181220441401584e-5,5.509103044165085e-8,0.0030441666670632966,-3.194016210578213e-5,5.527928024881129e-8,0.0030446177728978936,-3.2010055857858906e-5,5.537854846801234e-8,0.0030450884814295937,-3.200922767702134e-5,5.5369895852801475e-8,0.003045553386619406,-3.193493319092446e-5,5.524947681257876e-8,0.003045987115545042,-3.179510076572901e-5,5.502968803317016e-8,0.0030463680745412454,-3.1607871380829794e-5,5.473845618856727e-8,0.0030466821164058687,-3.139963516825679e-5,5.441621391559135e-8,0.0030469255028017037,-3.120163298944072e-5,5.4110664553357935e-8,0.003047106649642553,-3.1045429760949075e-5,5.3869815322197836e-8,0.003047246264489913,-3.0957724333207185e-5,5.373401644060654e-8,0.0030473756148905722,-3.0955076276420677e-5,5.372793333790556e-8,0.0030475327337165107,-3.10391075449408e-5,5.385333611732599e-8,0.0030477562593878016,-3.119291882112134e-5,5.408383161903094e-8,0.0030480767420623433,-3.138019112187306e-5,5.436371344206401e-8,0.003048506271394186,-3.154923496407961e-5,5.461427067933738e-8,0.003049029398017934,-3.164403612417949e-5,5.4750595244403097E-08,0.003049600741217892,-3.162181473782961e-5,5.470817249590223e-8,0.0030501546590933596,-3.147129459702184e-5,5.447053534930495e-8,0.0030506267199089275,-3.122124129326912e-5,5.408216609011085e-8,0.003050977543809847,-3.0931489493301834e-5,5.363475132421305e-8,0.0030512056349143645,-3.066970206362606e-5,5.323164358366911e-8,0.0030513427951945633,-3.048709541508865e-5,5.2950735410073135e-8,0.0030514375272195533,-3.0405493613713788e-5,5.2824725934812176e-8,0.0030515374213706445,-3.0418359774685625e-5,5.284287745599565e-8,0.003051677995809869,-3.050014466075965e-5,5.296553808075435e-8,0.0030518790092155215,-3.061696562449272e-5,5.314062781446654e-8,0.003052145625853913,-3.073469977610028e-5,5.3316031028704927e-8,0.0030524714707749288,-3.082377392153637e-5,5.344682144560079e-8,0.0030528417493476028,-3.086160174564249e-5,5.34988474804598e-8,0.0030532358836312897,-3.0833881042707114e-5,5.345060667689741e-8,0.003053629879526026,-3.0735485986035706e-5,5.3294565854492434e-8,0.0030539988364117142,-3.0571146292916206e-5,5.30382059792326e-8,0.0030543199507090837,-3.0355674406952507e-5,5.270438907050841e-8,0.0030545760956502454,-3.0113150877368533e-5,5.233010961195881e-8,0.00305475954547292,-2.9874438142143042e-5,5.1962653663563995e-8,0.003054874940487383,-2.967277780668974e-5,5.165280031939516e-8,0.0030549404324154324,-2.9537825570307475e-5,5.144563962738253e-8,0.0030549861390338404,-2.9489134143288323e-5,5.137059250576423e-8,0.0030550495976808005,-2.953061394193003e-5,5.143300630399881e-8,0.003055168710759939,-2.9647526534915528e-5,5.160970828560753e-8,0.0030553733364540553,-2.9807121158297693e-5,5.1850176986509324e-8,0.0030556770688369554,-2.9963521348213533e-5,5.208418350889287e-8,0.0030560711382057876,-3.0066914121891328e-5,5.223590149011024e-8,0.003056522783852153,-3.007606385331831e-5,5.224295582005858e-8,0.0030569803906741184,-2.9971466768568165e-5,5.207634125974998e-8,0.0030573862107332603,-2.9764480348069197e-5,5.1754164969916074e-8,0.0030576939719519337,-2.9497043921062268e-5,5.134105271121149e-8,0.0030578844960596806,-2.9229485363525857e-5,5.092940536552576e-8,0.0030579714726823846,-2.9020378842860718e-5,5.060856308901679e-8,0.00305799430929109,-2.890783769790072e-5,5.0436246780448754e-8,0.0030580024833647516,-2.8900743931462217e-5,5.042530128741445e-8,0.0030580398139917744,-2.8981793723107103e-5,5.0548579370877406e-8,0.0030581349144192635,-2.9117796452997896e-5,5.075489270553819e-8,0.0030582989710085853,-2.927092112731661e-5,5.0986296117823764e-8,0.00305852838098303,-2.9406906130383003e-5,5.1190589621726315e-8,0.00305880913029923,-2.9499417804318987e-5,5.132784410791377e-8,0.0030591209014314944,-2.9531615236497716e-5,5.1372652866946216e-8,0.003059440241717404,-2.949633831159525e-5,5.131434068941656e-8,0.00305974298908132,-2.9395907947313022e-5,5.1156659354477445e-8,0.0030600065090859636,-2.9241933794825013e-5,5.091753916282965e-8,0.00306021229511157,-2.9054948323373344e-5,5.062856693783168e-8,0.003060349177847135,-2.8863199511689882e-5,5.033312632870034e-8,0.003060416814008068,-2.8699745555567035e-5,5.008188395273282e-8,0.0030604284223485962,-2.8597283966096064e-5,4.992478512143156e-8,0.0030604111977471983,-2.858098323762389e-5,4.990002248696701e-8,0.0030604029204521956,-2.8660871126497475e-5,5.002240613766968e-8,0.0030604443802250266,-2.8826475438747818e-5,5.027527520898142e-8,0.0030605691021830185,-2.9046441406551585e-5,5.061009175503469e-8,0.00306079346737266,-2.927436144349517e-5,5.0955543464884993e-8,0.0030611106463299936,-2.945974872572592e-5,5.123445153963956e-8,0.003061490627398194,-2.9561147187201426e-5,5.1383839021491824e-8,0.0030618866932196325,-2.9557585511589545e-5,5.137235223398255e-8,0.0030622468460100747,-2.9455021239405097e-5,5.1209933881528055e-8,0.0030625273270125427,-2.9285654512983767e-5,5.0946554534423536e-8,0.0030627045011972953,-2.909970499319971e-5,5.065943900038011e-8,0.003062781223049597,-2.8951506243513924e-5,5.043168206571564e-8,0.0030627851170516554,-2.8884214842026012e-5,5.032886811317642e-8,0.003062759221135395,-2.8918582214671775e-5,5.038203695084455e-8,0.0030627487734678108,-2.9049687038960627e-5,5.0582911500186546e-8,0.0030627893702877065,-2.9251814457828465e-5,5.0891584468485985e-8,0.0030629003148716434,-2.9488179827505706e-5,5.1251525998749074e-8,0.0030630839037973016,-2.972103318011528e-5,5.160504457192073e-8,0.0030633288315558426,-2.9918997653759335e-5,5.190441062046527e-8,0.003063615124797014,-3.0060785653816723e-5,5.211739828811116e-8,0.003063918729338474,-3.013609360645597e-5,5.222854366679751e-8,0.003064214995878956,-3.014497667576545e-5,5.223815136496016e-8,0.0030644811540353513,-3.0096760320048008e-5,5.2160662139867385e-8,0.003064698316991432,-3.0009023509637796e-5,5.202315302953461e-8,0.0030648536429064674,-2.990656924730143e-5,5.186378488235481e-8,0.0030649429933266646,-2.9819741475536308e-5,5.1729180727117875e-8,0.0030649738454125133,-2.9781167475517766e-5,5.166933721709507e-8,0.0030649674206902153,-2.98201748061254e-5,5.172897531156119e-8,0.0030649581828044383,-2.9955006804012056e-5,5.19355879701887e-8,0.0030649887015580467,-3.0184701153387606e-5,5.2287079973691934e-8,0.0030650993228122743,-3.048438554024296e-5,5.274472973817438e-8,0.0030653151426291397,-3.080799959377198e-5,5.3237545317571995e-8,0.0030656356436287177,-3.109971429626911e-5,5.36798936350581e-8,0.003066032397083313,-3.131062399609393e-5,5.3997123564829124e-8,0.0030664566457068772,-3.141392264624986e-5,5.414878191396371e-8,0.003066853673243906,-3.141241782904111e-5,5.414000445922996e-8,0.003067178107954643,-3.1336255718859404e-5,5.401782535141934e-8,0.003067405017322031,-3.123297452844401e-5,5.385569119674471e-8,0.0030675342967685115,-3.115406523908855e-5,5.3732673458228506e-8,0.0030675883450696387,-3.1142126616185284e-5,5.3713731593782084e-8,0.003067604598905477,-3.122165258980363e-5,5.3835712946092174e-8,0.0030676253853558076,-3.139518885501176e-5,5.41016984091395e-8,0.0030676878955794595,-3.164514859820826e-5,5.448403678006608e-8,0.0030678167760080873,-3.1940102956282886e-5,5.4934156079083943e-8,0.00306802082106185,-3.22432379520567e-5,5.539556794925043e-8,0.0030682938008947383,-3.252038055262967e-5,5.581610023286302e-8,0.003068618188348601,-3.2745712319185725e-5,5.6156527333722295e-8,0.0030689700372110436,-3.290455445210272e-5,5.63947158589191e-8,0.0030693235621584002,-3.299368835276426e-5,5.652604281911584e-8,0.0030696546829265168,-3.302018003318915e-5,5.656158441311524e-8,0.003069943501781531,-3.299964329710182e-5,5.652548727111865e-8,0.0030701761356594238,-3.295448884467991e-5,5.6452316329964884e-8,0.0030703464351241215,-3.2912168983386934e-5,5.6384348797087725e-8,0.0030704579205523843,-3.290292724600728e-5,5.6368046064395786e-8,0.0030705257705411666,-3.2956240209135014e-5,5.6448491101539555e-8,0.003070577902929506,-3.3095212754677564e-5,5.666072725949836e-8,0.003070653303256023,-3.332901887976236e-5,5.7018206275630994e-8,0.0030707954675129484,-3.3645317050531466e-5,5.750131258839977e-8,0.003071040281409215,-3.4006866132882734e-5,5.805237688321617e-8,0.003071401442066699,-3.435724590922433e-5,5.858460257890024e-8,0.003071860664240823,-3.463707718078335e-5,5.900700173455468e-8,0.003072369948294953,-3.4805077484133635e-5,5.9256687131385314e-8,0.0030728668933984586,-3.4853323968064e-5,5.932224867940723e-8,0.00307329574470014,-3.4808729472292477e-5,5.9245906426521214e-8,0.0030736238628414326,-3.472127382584356e-5,5.910521892617646e-8,0.0030738476136962186,-3.4646440956723325e-5,5.898583976281836e-8,0.0030739883560582247,-3.462984017376718e-5,5.895772090868357e-8,0.0030740829181741033,-3.46981445897087e-5,5.906122528438606e-8,0.0030741729261370603,-3.485661305223858e-5,5.930354340403719e-8,0.0030742957031104122,-3.509154811261891e-5,5.966276668283171e-8,0.0030744779277463736,-3.537572740023708e-5,6.00964697542749e-8,0.0030747323559975367,-3.5675189893930766e-5,6.055223916889516e-8,0.003075057487670119,-3.5956061174078274e-5,6.097812908001633e-8,0.0030754397046584866,-3.619027550379833e-5,6.133134047523962e-8,0.0030758570531433604,-3.6359408441814945e-5,6.158398173260262e-8,0.0030762836935755364,-3.645637499575067e-5,6.17255797130405e-8,0.0030766941332692503,-3.6485215974385064e-5,6.176270393282051e-8,0.00307706662715048,-3.645952970605651e-5,6.17165520944473e-8,0.0030773855806581914,-3.64002479832436e-5,6.161954383422073e-8,0.0030776432027652626,-3.63332416409525e-5,6.151163570192726e-8,0.003077840759611733,-3.628682113866609e-5,6.143643256726638e-8,0.003077989627912044,-3.628885788142236e-5,6.143667890109774e-8,0.0030781120193623807,-3.6363006241524466e-5,6.154837667649236e-8,0.0030782405956229293,-3.652349964920907e-5,6.179278977302228e-8,0.0030784153961581056,-3.6768720995789186e-5,6.216668724687254e-8,0.003078676287039924,-3.707542807113103e-5,6.263368664319519e-8,0.0030790504999446576,-3.739763323181358e-5,6.312273725650803e-8,0.0030795385416962856,-3.767491089624212e-5,6.354097060212617e-8,0.0030801063485889927,-3.7851372011602716E-05,6.380282181650783e-8,0.003080691860843348,-3.789839797156401e-5,6.3864909335135015E-08,0.0030812263089583505,-3.782804205247127e-5,6.374660437345014e-8,0.0030816595018051856,-3.768799022595951e-5,6.352218567186832e-8,0.003081975175275685,-3.754141745986299e-5,6.328960513196501e-8,0.0030821904003572086,-3.7444257862379394e-5,6.313520651894206e-8,0.003082343638281676,-3.743069219176931e-5,6.311124043335557e-8,0.0030824800552818033,-3.7509564541134194e-5,6.323047245576145e-8,0.0030826400072475326,-3.7668452785068254e-5,6.347276711043042e-8,0.003082852413765722,-3.788093848520992e-5,6.379661295313797e-8,0.003083132266538477,-3.811403698482697e-5,6.415076333549884e-8,0.0030834808667202927,-3.833449478651092e-5,6.448396137955909e-8,0.0030838877341181153,-3.8513714836371074e-5,6.475242681002939e-8,0.0030843336004778847,-3.8631288755844996e-5,6.49251538042667e-8,0.003084794042322366,-3.867707285475078e-5,6.49869875714132e-8,0.0030852433321181686,-3.865183435490819e-5,6.49395475346079e-8,0.0030856581339217173,-3.856655888053119e-5,6.48001336398034e-8,0.0030860206460516367,-3.844058492853828e-5,6.459884806542256e-8,0.0030863208771382037,-3.8298947069799535e-5,6.437449277747022e-8,0.0030865580404335806,-3.816935596666206e-5,6.416988298112212e-8,0.0030867412223701774,-3.807898089265322e-5,6.402682842646071e-8,0.0030868893766480983,-3.8050984731237867e-5,6.398072676630348e-8,0.0030870304944824955,-3.810068561233592e-5,6.405462439468387e-8,0.003087199430753806,-3.823122572618231e-5,6.425261522376926e-8,0.0030874333446925814,-3.842914766591009e-5,6.455320872359164e-8,0.0030877636895722525,-3.866159342862816e-5,6.490525234810125e-8,0.0030882049718960573,-3.887836166676586e-5,6.523127311346362e-8,0.003088743561312213,-3.9022341755227606e-5,6.544356507347711e-8,0.003089333590640843,-3.904860755320145e-5,6.547348840413299e-8,0.0030899071036917716,-3.894510170953161e-5,6.530322358465656e-8,0.0030903979050176593,-3.8742004346281896e-5,6.498015271661827e-8,0.003090767228006569,-3.8501181533249536e-5,6.460049051721142e-8,0.0030910160608724553,-3.8290854101103754e-5,6.426997931057188e-8,0.0030911786470456865,-3.816087723268984e-5,6.406549047523721e-8,0.003091304636594572,-3.81308943961482e-5,6.401668515462453e-8,0.0030914415331645385,-3.819243835001492e-5,6.410948319588161e-8,0.003091624053373996,-3.831851468248846e-5,6.430123035197483e-8,0.0030918706623143453,-3.8474104361764894e-5,6.453722136219927e-8,0.0030921846709144477,-3.8624255014770126e-5,6.476330985906157e-8,0.0030925572633731823,-3.8739191826344275e-5,6.493373044917373e-8,0.0030929709124494467,-3.879722444333691e-5,6.501542077873879e-8,0.003093402731555433,-3.8786312162609277e-5,6.499027635350036e-8,0.0030938277663450082,-3.870467412242986e-5,6.485599547202599e-8,0.0030942222139669767,-3.856054410640383e-5,6.462566902485165e-8,0.003094566519648795,-3.8371053174280506e-5,6.432606100579885e-8,0.0030948481721392368,-3.816012347433993e-5,6.399436069664364e-8,0.003095063804553022,-3.795541247827492e-5,6.36734419165358e-8,0.003095220250846101,-3.778464042825393e-5,6.34061366452044e-8,0.003095334440344874,-3.76716671513097e-5,6.322910755980504e-8,0.00309543208101415,-3.76325912073004e-5,6.316677889485286e-8,0.0030955450293822886,-3.767217508425234e-5,6.32258396731875e-8,0.003095707183071852,-3.778095740397159e-5,6.339090801722296e-8,0.00309594862334514,-3.793365750566644e-5,6.36222778804018e-8,0.003096287931628474,-3.80901905074783e-5,6.385770713701393e-8,0.0030967236941520254,-3.8201303672671125e-5,6.402124536059043e-8,0.003097228280907147,-3.822036947682624e-5,6.404140759803494e-8,0.0030977490184312755,-3.8120022723220564e-5,6.387670810024808e-8,0.0030982210755350135,-3.7907147081520453e-5,6.353864073301886e-8,0.0030985900761617553,-3.762610731223205e-5,6.309655120907573e-8,0.0030988336384995293,-3.734434007536094e-5,6.265523738702239e-8,0.003098968816215725,-3.7126254709522466e-5,6.231441792645098e-8,0.003099041425769494,-3.7010331236075636e-5,6.213318613669418e-8,0.0030991055833493103,-3.7000963291756114e-5,6.211747094970239e-8,0.0030992057850765756,-3.707503307238412e-5,6.223050579274813e-8,0.0030993681475792695,-3.719515769679686e-5,6.241367766141261e-8,0.0030996000182369945,-3.7321886461173106e-5,6.260562024590069e-8,0.0030998940056717068,-3.742152940130405e-5,6.275433238229519e-8,0.003100233021590866,-3.7469791909199243e-5,6.282264287237035e-8,0.0031005946146256498,-3.74527865541713e-5,6.278957087078115e-8,0.0031009543309571943,-3.7366892039579344e-5,6.264995951136436e-8,0.003101288498980592,-3.721816385706405e-5,6.241351573364313e-8,0.0031015767979117176,-3.702139137135275e-5,6.210337620395833e-8,0.0031018047687390517,-3.679862687950359e-5,6.175387343947005e-8,0.0031019661991720264,-3.657686241831285e-5,6.140695022313485e-8,0.0031020649564957345,-3.638462538015085e-5,6.110684934249384e-8,0.0031021156285978737,-3.624768225270253e-5,6.089338495755532e-8,0.003102142484188417,-3.6184428286903e-5,6.079473351831937e-8,0.0031021765631752685,-3.620172937410701e-5,6.082097958568538e-8,0.0031022510076930674,-3.629208197157182e-5,6.095979473559371e-8,0.0031023950750430954,-3.643289906673445e-5,6.117550104443778e-8,0.0031026275545373554,-3.658852828809345e-5,6.141241349154455e-8,0.0031029505897565103,-3.6715498961018746e-5,6.160314515690131e-8,0.0031033454561945222,-3.677128760644678e-5,6.168223979401771e-8,0.0031037725875075316,-3.672594194239396e-5,6.160407633853862e-8,0.0031041783170027994,-3.6573890333345214e-5,6.13609507617016e-8,0.0031045091130757767,-3.634081561194844e-5,6.099349544356457e-8,0.0031047297909969312,-3.607980110758601e-5,6.058452494813771e-8,0.0031048374201034855,-3.585494963702326e-5,6.023352619407363e-8,0.003104862516995215,-3.5718644691785436e-5,6.002135737673514e-8,0.003104856093193385,-3.569405931092349e-5,5.998319444364333e-8,0.0031048700872880267,-3.577137790618058e-5,6.010288490586609e-8,0.003104941604094109,-3.5916960865466545e-5,6.032745899023271e-8,0.00310508658575867,-3.608784938858073e-5,6.058987181278256e-8,0.003105301813939656,-3.6244129061960325e-5,6.082825896614451e-8,0.0031055709169320175,-3.6355939860998774e-5,6.099670423139435e-8,0.003105870647986892,-3.6405690275413666e-5,6.106846533436347e-8,0.0031061756914431407,-3.638750956805874e-5,6.103492926911871e-8,0.0031064618740461935,-3.630572623697611e-5,6.090315332297189e-8,0.0031067083897661323,-3.617327510332381e-5,6.069340518034317e-8,0.0031068996748370463,-3.6010179052804656e-5,6.043687697777326e-8,0.0031070273067826453,-3.5841809895788134e-5,6.017304374810048e-8,0.003107091924907097,-3.569640763286369e-5,5.994580924865879e-8,0.003107104690948129,-3.5601421586642455e-5,5.979775912534584e-8,0.0031070874280543044,-3.557871974140187e-5,5.976263364692894e-8,0.0031070705639987084,-3.563939705212548e-5,5.985721638430891e-8,0.00310708845076731,-3.577953751271076e-5,6.007479140748683e-8,0.0031071724854550274,-3.597857902840596e-5,6.0382741421625e-8,0.003107343449944664,-3.620155104969642e-5,6.072622362437715e-8,0.0031076051132779385,-3.640540195274204e-5,6.10381901744192e-8,0.0031079410880545904,-3.6548419234103456e-5,6.125412657583635e-8,0.0031083163328670636,-3.6600797795219e-5,6.132843658673388e-8,0.003108683776045806,-3.655377779638129e-5,6.12484672972554e-8,0.0031089953478281146,-3.642449473760269e-5,6.104178540723422e-8,0.0031092151923365167,-3.6254006005909544e-5,6.077284786520125e-8,0.003109331132111241,-3.6097367552710236e-5,6.052739707346827e-8,0.00310935954808475,-3.6007610042852635e-5,6.038750927329051e-8,0.0031093404361101393,-3.601917120844064e-5,6.04059490162074e-8,0.0031093239113226005,-3.6137917913298556e-5,6.059089030936383e-8,0.003109354124427072,-3.6341991680345246e-5,6.090751315544337e-8,0.0031094576079410963,-3.6591899919457295e-5,6.12939239128099e-8,0.003109639723574992,-3.684400498898479e-5,6.168222747975021e-8,0.003109888172433052,-3.706155993675539e-5,6.201562972733295e-8,0.003110179865335902,-3.7220522609188814e-5,6.225730522644977e-8,0.0031104876813696455,-3.731061864999249e-5,6.239184703464731e-8,0.00311078539719096,-3.733367074941028e-5,6.242252235980394e-8,0.0031110506840359895,-3.730106234421321e-5,6.236728729470829e-8,0.003111266829818254,-3.723134017143124e-5,6.225510727514509e-8,0.0031114239398752712,-3.7148181411718e-5,6.212287206499815e-8,0.0031115201531575613,-3.7078419428024274e-5,6.201236188919679e-8,0.003111562975299694,-3.7049500972479054e-5,6.196625586571644e-8,0.003111570240611829,-3.7085775629295866e-5,6.20222732746493e-8,0.0031115696907623807,-3.720350361712773e-5,6.220533256957703e-8,0.003111595961660061,-3.740535774526301e-5,6.251900193071125e-8,0.0031116842348012787,-3.7676298720104116e-5,6.293919212979045e-8,0.0031118612256879658,-3.798340020650173e-5,6.341407163920447e-8,0.003112136139777003,-3.828150901245256e-5,6.387306782824209e-8,0.003112495379209596,-3.852427301854293e-5,6.424415997620797e-8,0.003112903926884855,-3.867726198381603e-5,6.447432367142958e-8,0.0031133136874417224,-3.872848224078679e-5,6.454579824951314e-8,0.0031136761793375063,-3.8692456923064396E-05,6.448222652228261e-8,0.0031139554371912236,-3.860656882561176e-5,6.434267804320025e-8,0.0031141372703484766,-3.8521032659985596e-5,6.420576709598722e-8,0.0031142324513703736,-3.848555621137015e-5,6.414873497201981e-8,0.003114273122112332,-3.85363882869955e-5,6.422732768153216e-8,0.0031143034616922818,-3.868736365238427e-5,6.446208120483557e-8,0.0031143674207793413,-3.892758353008189e-5,6.483503018920008e-8,0.003114497459059395,-3.9226240381586666e-5,6.529750515880651e-8,0.0031147078121036174,-3.954245370409532e-5,6.578559894383833e-8,0.00311499378960663,-3.983627974908429e-5,6.623730004445356e-8,0.0031153360888836355,-4.007726426013293e-5,6.660567612073376e-8,0.0031157075151952004,-4.024868825724295e-5,6.686529743458914e-8,0.00311607947574405,-4.034776414925683e-5,6.701237492469503e-8,0.0031164267230209515,-4.038331710088937e-5,6.706105409678788e-8,0.0031167301083817336,-4.037260325837689e-5,6.703845169512361e-8,0.003116977890976981,-4.033831580823609e-5,6.698004129434217e-8,0.0031171663505323325,-4.030610095786534e-5,6.692583316158584e-8,0.0031173002857739405,-4.030233658179883e-5,6.691691302618574e-8,0.0031173935830516013,-4.035158745219613e-5,6.699141672014888e-8,0.003117469472534857,-4.047311163717984e-5,6.71790093138832e-8,0.0031175594775110223,-4.067616621474953e-5,6.749354678239481e-8,0.0031176996760878236,-4.095478103045957e-5,6.792501578391407e-8,0.003117923245200117,-4.1284097202451735e-5,6.843400804444655e-8,0.003118249965451604,-4.162156390749211e-5,6.895378532468487e-8,0.0031186762577232225,-4.1915651713568604e-5,6.940399276282996e-8,0.0031191714040973333,-4.212116830683181e-5,6.971456663709166e-8,0.0031196840741649716,-4.2215346438736336e-5,6.985077033810668e-8,0.003120157847027817,-4.220674667049533e-5,6.98269624957057e-8,0.0031205489414833265,-4.2132362620646234e-5,6.97018734876997e-8,0.0031208383916512266,-4.20448327662397e-5,6.955836204462521e-8,0.003121034785095203,-4.199616018547974e-5,6.947774286240719e-8,0.003121168632125931,-4.202421267565137e-5,6.951862361251391e-8,0.0031212820770698153,-4.214528318978495e-5,6.970544612819716e-8,0.0031214177248149594,-4.235306877230772e-5,7.002722768273191e-8,0.0031216092731973467,-4.2622792035729374e-5,7.044435725304227e-8,0.0031218754919343627,-4.2918580516760454e-5,7.090035608149642e-8,0.0031222181803268524,-4.320209457310386e-5,7.133539946884241e-8,0.003122623947005099,-4.344044848734895e-5,7.169857291254788e-8,0.00312306884485219,-4.361179467816571e-5,7.195639886437939e-8,0.003123524289638139,-4.370774340490241e-5,7.209642624241596e-8,0.0031239626656890764,-4.373282262997294e-5,7.21262580887302e-8,0.0031243615440335547,-4.3701909396077086e-5,7.206948965492392e-8,0.0031247061538028763,-4.3636780471882876e-5,7.196033443639855e-8,0.0031249903765416783,-4.356272900897019e-5,7.183837800351165e-8,0.0031252168682957006,-4.3505688790359626e-5,7.174410685588453e-8,0.0031253968441908885,-4.348975073626395e-5,7.17150048965672e-8,0.0031255497310814042,-4.35346390742139e-5,7.178155313739291e-8,0.00312570246406995,-4.3652662272077505e-5,7.196242839516862e-8,0.0031258876523310264,-4.384487979547073e-5,7.225856364534224e-8,0.003126139361453899,-4.409699636109416e-5,7.26468964950289e-8,0.003126485461480311,-4.437689592985936e-5,7.307674195249288e-8,0.003126937079372063,-4.4637120813428204e-5,7.347383911846252e-8,0.003127478854765807,-4.482535361453673e-5,7.375675854161458e-8,0.0031280666690904416,-4.490213927602775e-5,7.386449999496449e-8,0.0031286382404406153,-4.4858518891369295e-5,7.37839353542856e-8,0.0031291344460409416,-4.472272685316552e-5,7.356017852034121e-8,0.0031295207052957296,-4.455029894921475e-5,7.328095575302624e-8,0.0031297969026368396,-4.440289276125083e-5,7.304320913549977e-8,0.0031299925059136854,-4.4327735522592144e-5,7.292069128837017e-8,0.0031301525953489643,-4.4346566926362245e-5,7.294663172919162e-8,0.003130323040755186,-4.44552245163689e-5,7.311334170083266e-8,0.0031305398839340287,-4.463002091424208e-5,7.338260528006618e-8,0.00313082404631057,-4.483652215332876e-5,7.369977824422968e-8,0.0031311803606072124,-4.503787355813529e-5,7.400698484506922e-8,0.0031315994383132096,-4.5201450522542784e-5,7.425347439859536e-8,0.0031320612381614877,-4.530356848674249e-5,7.440279963037097e-8,0.0031325396046175753,-4.533218545978504e-5,7.443682235158883e-8,0.003133007088926917,-4.528754210138793e-5,7.435654510846008e-8,0.003133439334571156,-4.51809403698077e-5,7.41801159799911e-8,0.003133818472273233,-4.503213230381495e-5,7.393873233871031e-8,0.003134135205289634,-4.486591093923118e-5,7.367133504974223e-8,0.0031343895555660316,-4.470855447784281e-5,7.34190699593144e-8,0.003134590575431148,-4.4584622562577654e-5,7.322027017012072e-8,0.0031347554245567386,-4.451420562905288e-5,7.310611312884732e-8,0.0031349080100163845,-4.451044644791041e-5,7.309669605942408e-8,0.0031350771198854635,-4.457710742852157e-5,7.319723119373661e-8,0.0031352936217133444,-4.47060605212665e-5,7.339422020383135e-8,0.0031355858958112227,-4.487510826442938e-5,7.365224958348347e-8,0.003135972822388433,-4.5047645339306655e-5,7.391369496033267e-8,0.0031364549294214225,-4.517674188187485e-5,7.410524949995039e-8,0.003137006880828943,-4.521608014150156e-5,7.415499865583744e-8,0.0031375773084138556,-4.513707215275879e-5,7.401903658596108e-8,0.003138101428611319,-4.494515854131807e-5,7.370680978793502e-8,0.0031385245037932065,-4.468383466731007e-5,7.328731665396651e-8,0.0031388241332245405,-4.441996388809048e-5,7.286597138629206e-8,0.003139017499846824,-4.421722026618582e-5,7.254276438257211e-8,0.003139150157383647,-4.411342074013215e-5,7.237653893372397e-8,0.0031392756212672386,-4.411288523762928e-5,7.237306272266767e-8,0.003139437968769991,-4.4192948719133804e-5,7.249557334607343e-8,0.0031396632755686426,-4.431658177299298e-5,7.268500837724008e-8,0.0031399588406845693,-4.444412071309936e-5,7.287870894461722e-8,0.0031403166737552367,-4.454122642373622e-5,7.302295817715162e-8,0.0031407183126958165,-4.4583109623867075e-5,7.307944575839242e-8,0.0031411394477191415,-4.4556196731207386e-5,7.302762227868937e-8,0.0031415539994911366,-4.445830099035177e-5,7.28647417048713e-8,0.003141937728993228,-4.429775179132686e-5,7.260437295376374e-8,0.0031422713373744243,-4.4091609934731785e-5,7.227358181570472e-8,0.0031425429027575314,-4.386309308749254e-5,7.190893225978437e-8,0.0031427494576673834,-4.363836426557965e-5,7.155149576181157e-8,0.0031428974772572276,-4.3442976873453624e-5,7.124128957024562e-8,0.003143002214192302,-4.329843267004607e-5,7.101185038058907e-8,0.003143086052266109,-4.321920239699395e-5,7.088551186228275e-8,0.0031431760678829164,-4.3210361139567735e-5,7.086966698763124e-8,0.0031433008971223707,-4.3265945431617366e-5,7.09542336198036e-8,0.003143486895319873,-4.336813785078726e-5,7.111052058211447e-8,0.0031437533847702066,-4.348759147027911e-5,7.12919612296051e-8,0.0031441069213620117,-4.358585463469756e-5,7.143813366953108e-8,0.003144535476545944,-4.362139298757207e-5,7.148429942205696e-8,0.003145005091611609,-4.3560203673701036e-5,7.137795505629189e-8,0.003145463126681861,-4.3389675112285365e-5,7.11003324650128e-8,0.003145851574927433,-4.3129979926205826e-5,7.068402441148508e-8,0.0031461283507413433,-4.2833959953962696e-5,7.021264040871186e-8,0.003146286100171612,-4.257032356693477e-5,6.979432110562806e-8,0.0031463558591178996,-4.239669820392884e-5,6.951932082306872e-8,0.003146392327049763,-4.233819904869464e-5,6.942631862677053e-8,0.0031464507043553205,-4.2383168839997224e-5,6.94958958380317e-8,0.0031465688651928546,-4.249459392815535e-5,6.966883115670779e-8,0.0031467612849682977,-4.262689345829094e-5,6.987285185595196e-8,0.0031470222789782287,-4.273918499304871e-5,7.004366315740973e-8,0.0031473330289561153,-4.2802158807808166e-5,7.013567759431403e-8,0.003147668417268007,-4.279983806022786e-5,7.01245308551207e-8,0.0031480021049310764,-4.272860133319068e-5,7.000526722286279e-8,0.0031483099313495784,-4.259528124034335e-5,6.978916831189976e-8,0.0031485723125253334,-4.241509647530167e-5,6.950045735299453e-8,0.0031487761173877083,-4.2209454417396814e-5,6.917289890407978e-8,0.0031489161538580373,-4.2003459881328945e-5,6.884596295593158e-8,0.003148996162170557,-4.1822953882087386e-5,6.856021556609623e-8,0.003149028978654053,-4.169106752864223e-5,6.835188836388549e-8,0.003149035482429731,-4.162464544196019e-5,6.824720046102467e-8,0.003149042199251593,-4.163112014627014e-5,6.825739085675065e-8,0.00314907771956232,-4.170639233813112e-5,6.837538674971382e-8,0.0031491682653819867,-4.18342132313785e-5,6.857492364962827e-8,0.0031493329122884942,-4.198742613049102e-5,6.881267918772647e-8,0.003149579039836493,-4.213120402571019e-5,6.903358555963276e-8,0.0031498986271138838,-4.2228420130555436e-5,6.91794432100356e-8,0.0031502664228729867,-4.2247298350746497e-5,6.920097199180307e-8,0.003150641701734798,-4.217078712182122e-5,6.907238815589541e-8,0.0031509754961388586,-4.200545381164349e-5,6.880509810771359e-8,0.0031512238608324395,-4.1785638196682574e-5,6.845392811745735e-8,0.0031513640821730364,-4.1567794289340616e-5,6.810802378555436e-8,0.003151406157010707,-4.141327484247085e-5,6.786370323995615e-8,0.0031513912510576945,-4.136560918026271e-5,6.778876311671728e-8,0.003151375804577231,-4.1434395174820625e-5,6.789730029476199e-8,0.0031514098642566202,-4.159482257943738e-5,6.81492342574456e-8,0.0031515215625475173,-4.18012216288661e-5,6.847194098192803e-8,0.0031517136174996478,-4.200494130433833e-5,6.878861599395965e-8,0.0031519692707481077,-4.216756787951769e-5,6.903911030241721e-8,0.003152261517243071,-4.2266490087485424e-5,6.918851693440988e-8,0.0031525610670786637,-4.229461685062819e-5,6.922644943555905e-8,0.0031528414655990046,-4.22573706176436e-5,6.9162068457332e-8,0.003153081775375267,-4.216923255662013e-5,6.901853417953314e-8,0.0031532678798198805,-4.205077312180638e-5,6.882835975902144e-8,0.0031533932546355388,-4.192616457967239e-5,6.862959482793142e-8,0.0031534595708972847,-4.1820803001536924e-5,6.84621653927876e-8,0.0031534770784778826,-4.175861379115542e-5,6.836364650161207e-8,0.0031534643622982412,-4.17588032667655e-5,6.836409543908077e-8,0.0031534468701465957,-4.183228856251606e-5,6.848035579602831e-8,0.003153453782052926,-4.197854007215975e-5,6.871105220452271e-8,0.003153513263736754,-4.218384148552481e-5,6.903390427614672e-8,0.0031536467429532566,-4.242196322172231e-5,6.940693592124387e-8,0.003153863430347162,-4.265783483101526e-5,6.977446531891138e-8,0.003154156585993926,-4.285397543340932e-5,7.007742427316526e-8,0.00315450279718283,-4.2978622186424466e-5,7.026625449926472e-8,0.0031548650041122103,-4.301400854080456e-5,7.031388230440871e-8,0.00315519943918034,-4.296289169347691e-5,7.022577473855363e-8,0.003155465859320983,-4.285109888117147e-5,7.00436294628589e-8,0.0031556391659936065,-4.272394847220358e-5,6.983943122484468e-8,0.0031557188612724523,-4.263555517927237e-5,6.969842457165365e-8,0.0031557317728420436,-4.263280101975123e-5,6.969387032889604e-8,0.0031557249027450757,-4.2739520543408744e-5,6.98623192302485e-8,0.0031557498994496218,-4.294833096833603e-5,7.019104128047928e-8,0.00315584589866597,-4.322452786249621e-5,7.062447804376743e-8,0.0031560287243041687,-4.3519737897634517e-5,7.108598411323216e-8,0.003156290210848438,-4.378791545601902e-5,7.150311106554863e-8,0.0031566054069980037,-4.3996660675542415e-5,7.182534984786604e-8,0.0031569423808284628,-4.4131253208340974e-5,7.203026754938302e-8,0.003157270337523358,-4.4192994871844845e-5,7.212064457656072e-8,0.003157564470837877,-4.419496903596624e-5,7.211761487890475e-8,0.003157808015852627,-4.415761251223253e-5,7.205364259861087e-8,0.0031579926823708912,-4.4105138784809375e-5,7.196695049477917e-8,0.0031581184957774153,-4.406285452731199e-5,7.189738913692536e-8,0.003158193599416625,-4.4054911516432865e-5,7.188294750699247e-8,0.003158234031798483,-4.4101897275740684e-5,7.195593087373301e-8,0.003158263018098467,-4.421788006294162e-5,7.213822712040806e-8,0.003158309054218505,-4.440704337455989e-5,7.243594276621938e-8,0.0031584021289597524,-4.466069514352587e-5,7.283470938809992e-8,0.0031585679463628875,-4.495603322513259e-5,7.329786169090022e-8,0.003158821045759386,-4.5258255933040026e-5,7.37699600181512e-8,0.003159158924190263,-4.5526890236963015e-5,7.418696615489833e-8,0.0031595597943583466,-4.572549126524957e-5,7.44916678688917e-8,0.003159985788919604,-4.5832004494916494e-5,7.465002833083531e-8,0.003160391467505701,-4.5846244908167024e-5,7.466284408960723e-8,0.003160735390904223,-4.5791651761595475e-5,7.456824370500927e-8,0.003160991329864051,-4.5710340506587154e-5,7.443354724124745e-8,0.0031611557652805296,-4.56525958579643e-5,7.433840211999739e-8,0.0031612493653574466,-4.566356507695597e-5,7.43536688058528e-8,0.0031613116320375638,-4.577082683019708e-5,7.452191859422641e-8,0.00316138983687732,-4.5976704493927694e-5,7.484561016922063e-8,0.0031615255351170207,-4.625816721714404e-5,7.52873081576349e-8,0.00316174330606514,-4.6574539940815696e-5,7.578215147025375e-8,0.0031620456464795553,-4.687999059605023e-5,7.625769376845123e-8,0.003162415165519021,-4.713588347181678e-5,7.665335200741533e-8,0.003162822036835446,-4.731880660958561e-5,7.693289460631574e-8,0.0031632329785881486,-4.7422738256966696e-5,7.708762391075058e-8,0.0031636185498555743,-4.7456548574135615e-5,7.713222429686289e-8,0.003163957394531511,-4.743930170684533e-5,7.709723112409955e-8,0.003164237749092535,-4.7395460395258866e-5,7.702145770310557e-8,0.0031644572629982944,-4.735103026805132e-5,7.694598016390119e-8,0.0031646221440750945,-4.733077694987257e-5,7.690981863864776e-8,0.003164746262745098,-4.735610332844896e-5,7.694660644621445e-8,0.003164850315648308,-4.744295341822404e-5,7.708123668442743e-8,0.003164960615211108,-4.7599282087552986e-5,7.732580598792541e-8,0.00316510674443353,-4.7822150507262595e-5,7.767502077308712e-8,0.0031653173075884386,-4.809522158373371e-5,7.810233831505504e-8,0.003165613500816317,-4.8388234367153477e-5,7.855932068502407e-8,0.003166001527547761,-4.8660505245747866e-5,7.898136490858256e-8,0.0031664667240323473,-4.886967395690606e-5,7.930165483686465e-8,0.0031669732473650035,-4.898427913808119e-5,7.947106008168446e-8,0.0031674717018881997,-4.899555012818512e-5,7.94766938590658e-8,0.0031679131839261526,-4.892263568963575e-5,7.934999749978144e-8,0.0031682643359964833,-4.8808002238974886e-5,7.91591853553536e-8,0.0031685171259444567,-4.8704610129976645e-5,7.898863798646383e-8,0.003168689888016564,-4.866027347872532e-5,7.891391738685978e-8,0.0031688203554882553,-4.870497925930795e-5,7.898168134647224e-8,0.0031689541483683986,-4.884458925824059e-5,7.919995944645049e-8,0.003169132666912061,-4.90615415154104e-5,7.953967154409288e-8,0.0031693835370994743,-4.932123743816433e-5,7.994513150365482e-8,0.0031697155633991425,-4.958174182690445e-5,8.034963065946353e-8,0.0031701188096189092,-4.9803993111668386e-5,8.069160780662406e-8,0.0031705690690595756,-4.995993501816825e-5,8.092735112553882e-8,0.0031710349046023332,-5.003685841512912e-5,8.103761860361142e-8,0.003171484997353245,-5.003758483585365e-5,8.10276899103105e-8,0.0031718939250299756,-4.997743721292307e-5,8.092241368604767e-8,0.0031722454763997874,-4.98796363572316e-5,8.075886678430627e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json new file mode 100644 index 0000000000..600fe28dc2 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":21000,"numberOfSamples":1000,"samples":[0.0031725336341924394,-4.9770637985046546e-5,8.057900832626396e-8,0.0031727619720193665,-4.967631255249218e-5,8.042370582661394e-8,0.0031729423213677447,-4.961918610821703e-5,8.032842301827844e-8,0.003173093301004051,-4.9616439750269165e-5,8.032005503717977e-8,0.0031732388512125246,-4.9678142521825614e-5,8.04140915834666e-8,0.003173406461172115,-4.980531114277095e-5,8.061152056197695e-8,0.003173624434517486,-4.998780080363393e-5,8.089554409980637e-8,0.0031739174410596086,-5.02027153676187e-5,8.122921958837977e-8,0.0031743000569504428,-5.0414905317985565e-5,8.155645946622467e-8,0.0031747693572844707,-5.058170552271261e-5,8.1809696462639e-8,0.003175299754099858,-5.066328166614758e-5,8.192630588543693e-8,0.003175844728509721,-5.06368615606572e-5,8.187106223913913e-8,0.003176348378152092,-5.0508762136083794e-5,8.16550486069026e-8,0.0031767639923363524,-5.0316402748498936e-5,8.133866443459827e-8,0.0031770709661550177,-5.011689791600365e-5,8.101329428919594e-8,0.0031772811274633317,-4.9967147620633346e-5,8.076944687326912e-8,0.003177432030673561,-4.9905479367471625e-5,8.066745206192551e-8,0.003177572270523811,-4.994259580574966e-5,8.072317955227706e-8,0.003177746439699948,-5.0063033684474547e-5,8.091070950808379e-8,0.0031779848344744835,-5.0233470557248106e-5,8.117598151931799e-8,0.0031782992076989803,-5.0413262606724425e-5,8.145387798184555e-8,0.003178683508504494,-5.056397454491497e-5,8.168346678500409e-8,0.0031791178624765563,-5.0656360805938936e-5,8.181895509495128e-8,0.003179574229733301,-5.067436252240991e-5,8.183576329438713e-8,0.003180022490647086,-5.0616168724939576e-5,8.173192449420742e-8,0.0031804358927458322,-5.049270511433461e-5,8.152548156884965e-8,0.0031807950553075313,-5.0324297904340744e-5,8.124910490024964e-8,0.0031810901697997096,-5.013646650496189e-5,8.094342997127281e-8,0.003181321456190578,-4.995570801310683e-5,8.065043893174666e-8,0.0031814982527144423,-4.9805917795511555e-5,8.040785329190629e-8,0.0031816373210504898,-4.970574993088201e-5,8.024497887522197e-8,0.0031817608717426495,-4.9666782981278536e-5,8.017978161620004e-8,0.0031818944706078238,-4.969213348437762e-5,8.021665586604609e-8,0.003182064656150664,-4.977526990474911e-5,8.034455083019423e-8,0.0031822958582123618,-4.9899054210053294e-5,8.053555151866265e-8,0.0031826060765792474,-5.00355420814562e-5,8.074475516704612e-8,0.0031830011463665404,-5.014786026254351e-5,8.091345990457809e-8,0.0031834686693217383,-5.0195995982255704e-5,8.097846711663703e-8,0.0031839746468371897,-5.01475748419181e-5,8.088913626890179e-8,0.0031844673261262986,-4.999173257679851e-5,8.062922765445895e-8,0.003184891172592454,-4.974957666882377e-5,8.023331134917238e-8,0.0031852075073160895,-4.9472597723993216e-5,7.978406694492346e-8,0.0031854111053174357,-4.922574084934537e-5,7.938518959159813e-8,0.0031855320833315435,-4.9062718900561163e-5,7.912193983519057e-8,0.003185621952271365,-4.9007423813544054e-5,7.903149987919705e-8,0.003185733140730741,-4.905026352546958e-5,7.909733195325303e-8,0.003185903073154297,-4.915750209942922e-5,7.926446313102022e-8,0.0031861477150601954,-4.9285511618747645e-5,7.946261622724468e-8,0.0031864630412842053,-4.9393086955828754e-5,7.962606325736776e-8,0.0031868305582437354,-4.944910682330027e-5,7.970578335261417e-8,0.0031872237417380285,-4.9435815064372105e-5,7.967442526435043e-8,0.003187613799646374,-4.934910556784959e-5,7.952642648280632e-8,0.0031879743406409483,-4.919701658863508e-5,7.927535204629794e-8,0.0031882849181979036,-4.899707191619981e-5,7.894954072044581e-8,0.0031885333705692622,-4.8772886247731465e-5,7.85867133852273e-8,0.0031887169235430774,-4.8550472591157195e-5,7.82281831475899e-8,0.0031888421191353347,-4.8354611885566905e-5,7.791317453714298e-8,0.0031889236591736768,-4.820561826479776e-5,7.767373204135999e-8,0.003188982392912168,-4.811685191685343e-5,7.753076281390647e-8,0.0031890428229633568,-4.80931088914721e-5,7.749144001256398e-8,0.003189130371339149,-4.8129751866914776e-5,7.754779717892457e-8,0.0031892684093893045,-4.821248076042052e-5,7.767640704932689e-8,0.003189474936144377,-4.8317827589117846e-5,7.78393091488724e-8,0.003189758740824415,-4.841472688601514e-5,7.798671830001753e-8,0.0031901151496382964,-4.846801130205281e-5,7.806277470675716e-8,0.0031905224205677797,-4.844497532884705e-5,7.801604196463123e-8,0.003190941284990858,-4.8325353983456495e-5,7.781525298490396e-8,0.0031913210506145494,-4.811258839800113e-5,7.746697340533311e-8,0.0031916141519961177,-4.784055752540146e-5,7.702604990677442e-8,0.003191795418319783,-4.7568255887754585e-5,7.658695371946121e-8,0.0031918755740832448,-4.73600221174305e-5,7.625217949764229e-8,0.003191898603829455,-4.725988960279658e-5,7.609132297246147e-8,0.0031919229650166662,-4.7275184045738147e-5,7.611500607230232e-8,0.003191998333085281,-4.737827479416436e-5,7.62779363395227e-8,0.0031921508881996145,-4.752216804202383e-5,7.65041794434679e-8,0.003192381393929433,-4.765854984268982e-5,7.671628736820805e-8,0.0031926718219546014,-4.7750056416319196e-5,7.685497758163076e-8,0.003192994371773742,-4.7775167613736925e-5,7.688676322707986e-8,0.0031933191121518447,-4.7727892633397725e-5,7.680310882032987e-8,0.0031936191057208192,-4.761498877639121e-5,7.661565929511285e-8,0.0031938734231599622,-4.74525826505499e-5,7.635065824624502e-8,0.0031940688710230926,-4.7262880918771545e-5,7.60436847923047e-8,0.0031942008964133926,-4.707097737875328e-5,7.573466367930087e-8,0.0031942737606263116,-4.6901719035824056e-5,7.546299629687368e-8,0.003194299972841271,-4.6776661718682426e-5,7.526278957837741e-8,0.003194298887206334,-4.6711226468842323e-5,7.51583342891208e-8,0.003194294386829285,-4.671240074914931e-5,7.516039741374076e-8,0.0031943118407074603,-4.6777394668392805e-5,7.526403312546946e-8,0.0031943746893159835,-4.6893437644436546e-5,7.544826377873212e-8,0.0031945009495270385,-4.7038759907479775e-5,7.567773903852656e-8,0.0031946998830175675,-4.7184820903478814e-5,7.590646855791671e-8,0.0031949691011137634,-4.729986237129749e-5,7.608369607755573e-8,0.0031952925157211496,-4.735397448743149e-5,7.616211706606225e-8,0.003195640046002511,-4.7325873413935426e-5,7.610866131565764e-8,0.0031959707011487326,-4.721084275969199e-5,7.591694218179518e-8,0.0031962407678702612,-4.7027544120006907e-5,7.561778712416466e-8,0.0031964172220154555,-4.68193172139658e-5,7.528100427078354e-8,0.003196492459990767,-4.664522204584982e-5,7.500092425591764e-8,0.003196492024360513,-4.6560407478603466e-5,7.486507180241458e-8,0.0031964677331033607,-4.6593856889802264e-5,7.491877034751068e-8,0.003196477403032644,-4.673659702635629e-5,7.514654134177191e-8,0.0031965625176653793,-4.694773588519694e-5,7.548204705047288e-8,0.0031967362693748544,-4.717322873987367e-5,7.583837429474331e-8,0.003196985533609338,-4.73651776342118e-5,7.613905990916508e-8,0.0031972812138878572,-4.74929888958597e-5,7.633588427653374e-8,0.003197589462630078,-4.7545490933105095e-5,7.64119965822908e-8,0.0031978796496195555,-4.752757942989125e-5,7.637620017022061e-8,0.00319812848863574,-4.745512493931714e-5,7.625453549820702e-8,0.00319832144886984,-4.73503257355979e-5,7.608275219379998e-8,0.003198452856742482,-4.723812082730018e-5,7.590064580016247e-8,0.0031985255501511783,-4.7143356527051194e-5,7.57476813144896e-8,0.0031985502819583764,-4.708825806567633e-5,7.565908112945316e-8,0.003198544736531598,-4.708995351933302e-5,7.566191375034777e-8,0.0031985318797554075,-4.7158036203798245e-5,7.577116598009077e-8,0.0031985373474858482,-4.729251335254058e-5,7.598640463765804e-8,0.003198585869566576,-4.7482775567525455e-5,7.629010685976644e-8,0.003198697155597323,-4.77081476564717e-5,7.664860219081877e-8,0.0031988819238857836,-4.794029858008897e-5,7.701607636820799e-8,0.003199138852327985,-4.8147471043280815e-5,7.734153154992998e-8,0.003199453210956632,-4.830010600773658e-5,7.757794512375888e-8,0.003199797758983186,-4.8377126251611665e-5,7.769236057072432e-8,0.0032001363178023106,-4.8371976704389703e-5,7.767540881795748e-8,0.0032004303140051693,-4.829716076321788e-5,7.754825940028813e-8,0.0032006480922657813,-4.818534649742223e-5,7.736402060215561e-8,0.0032007754503471137,-4.8084736666072045e-5,7.720004750070717e-8,0.0032008237523528764,-4.804734673697885e-5,7.713910918442968e-8,0.0032008304786310298,-4.811209016681051e-5,7.724247975155619e-8,0.0032008488052868407,-4.828932206014769e-5,7.75255161602495e-8,0.0032009288771208118,-4.8555592301733185e-5,7.794960329169746e-8,0.0032010998408043487,-4.886272668875077e-5,7.843695977208304e-8,0.003201361960637265,-4.915635461273817e-5,7.89004476629134e-8,0.0032016912406135044,-4.939361188750261e-5,7.927192014721211e-8,0.0032020513707647475,-4.955240233850549e-5,7.951689650027676e-8,0.003202405716929175,-4.963141986809062e-5,7.963431614369855e-8,0.003202725094131901,-4.964474472975755e-5,7.96475824883057e-8,0.0032029909049170156,-4.961523348656123e-5,7.959378125967193e-8,0.0032031952157390927,-4.9569099471490336e-5,7.951497736532009e-8,0.003203339535741044,-4.9532218017991734e-5,7.945241230521701e-8,0.003203433394698867,-4.9527674213515084e-5,7.944273135170713e-8,0.003203493051170196,-4.9573859322178696e-5,7.951503476725994e-8,0.0032035401504446515,-4.968261143955701e-5,7.968790885396807e-8,0.003203599881864006,-4.9857248372708116e-5,7.996622623173358e-8,0.0032036981474841027,-5.009083623491609e-5,8.033833401588e-8,0.003203857560932273,-5.036549668524096e-5,8.077497791863144e-8,0.003204092697562571,-5.0653692877754714e-5,8.123148677107812e-8,0.003204405679190628,-5.092213317310819e-5,8.165420910353239e-8,0.0032047836194003913,-5.1138171334250516e-5,8.199093925766638e-8,0.0032051993388942314,-5.1277508026645685e-5,8.220333981594443e-8,0.0032056159214573134,-5.1331152612609345e-5,8.227803147217174e-8,0.003205994476325643,-5.130950962968257e-5,8.223291039616594e-8,0.0032063034747539243,-5.124205747668012e-5,8.211628608958799e-8,0.0032065274675029567,-5.117202959915313e-5,8.199800522314307e-8,0.0032066727907678195,-5.114661833837934e-5,8.195353656090792e-8,0.003206768020942503,-5.120449980278048e-5,8.204400434520673e-8,0.003206857735831905,-5.1363916576045276e-5,8.229736031489842e-8,0.0032069901253816147,-5.161569359479557e-5,8.269759795845019e-8,0.0032072020803685336,-5.192501441612641e-5,8.318797642795423e-8,0.0032075077397297554,-5.2242393867866604e-5,8.368882847285539e-8,0.0032078955532431,-5.251946367429561e-5,8.412289258504691e-8,0.0032083345384939406,-5.272262269658563e-5,8.443706503733802e-8,0.0032087857334492185,-5.2839458337762004e-5,8.461246000974382e-8,0.0032092132683576424,-5.287735806351859e-5,8.466190722367029e-8,0.003209591378752329,-5.285732676741347e-5,8.461980304623928e-8,0.0032099067777057117,-5.28068081968459e-5,8.45304822826286e-8,0.0032101578456377655,-5.275393921740916e-5,8.443903221733049e-8,0.0032103524731652163,-5.272386017376191e-5,8.438550073902889e-8,0.003210505786562472,-5.273660287213019e-5,8.440164096217491e-8,0.0032106382225371155,-5.280577247081059e-5,8.450886182259405e-8,0.0032107738321281018,-5.293736316606222e-5,8.471631689347386e-8,0.0032109383060951215,-5.312841217033488e-5,8.501870672494748e-8,0.0032111560978738906,-5.3365752533195204e-5,8.53942849508674e-8,0.0032114462795934918,-5.362571089155793e-5,8.580446840164302e-8,0.003211817437324192,-5.3875979778961625e-5,8.619700739786424e-8,0.003212262941595191,-5.408075100149098e-5,8.651439387397291e-8,0.0032127589082548043,-5.42090965214644e-5,8.670741201761251e-8,0.003213267160170133,-5.4244595572723914e-5,8.675057308886833e-8,0.0032137438024166646,-5.419248668805494e-5,8.665344939450431e-8,0.003214151231767454,-5.4080711291759844e-5,8.646208359285265e-8,0.0032144693035585834,-5.395352361443707e-5,8.624839037585663e-8,0.003214701461565474,-5.385958237500533e-5,8.609072790016972e-8,0.003214873783886847,-5.383864063516811e-5,8.605238679805011e-8,0.0032150276171485034,-5.391105610832501e-5,8.616487457733809e-8,0.003215208326315366,-5.4072889410851724e-5,8.642041535988369e-8,0.0032154533705997484,-5.429755486548332e-5,8.677506471248515e-8,0.0032157828754069747,-5.4543390211428154e-5,8.716123185097693e-8,0.0032161952720170784,-5.47649828140714e-5,8.750601063943785e-8,0.0032166691643119804,-5.492483570390711e-5,8.7749822276115e-8,0.003217170484883344,-5.500177601999277e-5,8.785966932376333e-8,0.0032176621369899984,-5.499386164298536e-5,8.783350388091249e-8,0.0032181127441866936,-5.491583634520034e-5,8.76958803060696e-8,0.003218502126948113,-5.479314994168618e-5,8.748819344576886e-8,0.0032188229483265337,-5.465521433334049e-5,8.72578166749344e-8,0.0032190794757014783,-5.452988429357098e-5,8.704931644272088e-8,0.0032192849457666393,-5.443991014971355e-5,8.689888287838887e-8,0.003219458734952503,-5.440110974291796e-5,8.683149639470852e-8,0.003219623918717538,-5.442154904813298e-5,8.685964506488469e-8,0.0032198052118412182,-5.45010330062948e-5,8.698248405259667e-8,0.0032200268668433098,-5.463053766414709e-5,8.718490554543236e-8,0.0032203099278025797,-5.479171920972871e-5,8.743680309860852e-8,0.0032206683696555803,-5.4957218224956276e-5,8.769370344416006e-8,0.003221104252445989,-5.509302127948437e-5,8.790074530833945e-8,0.0032216031987040658,-5.516423932315975e-5,8.800209652952139e-8,0.003222132914621037,-5.514457142603367e-5,8.795617458979574e-8,0.003222647901010924,-5.502711200558859e-5,8.775290593353369e-8,0.0032231013851103294,-5.483131338436564e-5,8.74247239172623e-8,0.003223460966712298,-5.4600702849415643e-5,8.704264763661174e-8,0.003223720696988658,-5.43901749473945e-5,8.66955543476372e-8,0.0032239032022557705,-5.4248004296358326e-5,8.646099319840247e-8,0.003224051050262102,-5.4200944786757004e-5,8.638114273675721e-8,0.003224212268778945,-5.424827912428962e-5,8.645345453958669e-8,0.0032244265358801734,-5.4365234327404105e-5,8.663660081008881e-8,0.003224716276502034,-5.451231450454134e-5,8.686597920410975e-8,0.003225083737911467,-5.4646403659949004e-5,8.707189019189658e-8,0.0032255131188312245,-5.473059972318432e-5,8.719538813836393e-8,0.0032259761006378034,-5.4741087113638165e-5,8.719911679190398e-8,0.0032264390598020325,-5.467034723233956e-5,8.707212789604444e-8,0.003226870334335864,-5.452668660564738e-5,8.682879510984012e-8,0.0032272460710804887,-5.4330699940323715e-5,8.65029138253738e-8,0.0032275536298945894,-5.4109915442819836e-5,8.613902532997006e-8,0.003227792304669776,-5.389313593906661e-5,8.5783374691673e-8,0.0032279718677233277,-5.370570458175747e-5,8.547642058179856e-8,0.003228109845550558,-5.356634066004432e-5,8.524786544988952e-8,0.003228228456413095,-5.348557339633553e-5,8.511420042723426e-8,0.0032283518197443535,-5.346531342893715e-5,8.507801310989298e-8,0.0032285035568127823,-5.349896832429377e-5,8.512814037196994e-8,0.003228704536722173,-5.357174984312455e-5,8.524016481482288e-8,0.0032289703539402797,-5.366119984972382e-5,8.537735462686527e-8,0.00322930813206437,-5.373842092470895e-5,8.549282323459017e-8,0.003229712689921856,-5.377103839587337e-5,8.553448506801853e-8,0.0032301631836865975,-5.3729107718665944e-5,8.545465152637074e-8,0.0032306227277087924,-5.359428799950994e-5,8.522472059019744e-8,0.0032310441986026,-5.337012969281068e-5,8.48515280839209e-8,0.0032313836582013745,-5.30879790841398e-5,8.438660592029636e-8,0.0032316176061930268,-5.280197806460897e-5,8.391790250084734e-8,0.0032317548261706127,-5.2571609399665335e-5,8.354146004605948e-8,0.0032318343808087915,-5.243934120871027e-5,8.332524114371036e-8,0.00323190997001867,-5.24157284474321e-5,8.328513968311465e-8,0.003232029903870015,-5.247922773889295e-5,8.33849749888785e-8,0.0032322230037252673,-5.2587959715898925e-5,8.355594128527012e-8,0.0032324945300250224,-5.269508974157829e-5,8.372185756843382e-8,0.0032328299476484103,-5.2761097382812485e-5,8.381914925073835e-8,0.0032332022647684135,-5.2760565068347416e-5,8.380767128683809e-8,0.0032335796804347913,-5.268412304439345e-5,8.367349551296979e-8,0.003233931955256522,-5.2537170491451925e-5,8.342645104170425e-8,0.00323423510297691,-5.2336755010051395e-5,8.309480474079313e-8,0.003234474406802793,-5.210743061617814e-5,8.271847665355266e-8,0.0032346457437325534,-5.187668488346703e-5,8.234172294838152e-8,0.003234755280902423,-5.167055575138879e-5,8.200621219761825e-8,0.003234817807050895,-5.150997501251897e-5,8.174527616602243e-8,0.00323485410132211,-5.140821394599531e-5,8.157988013641992e-8,0.0032348878601373273,-5.1369622605597356e-5,8.15166024002056e-8,0.003234942697918216,-5.138953284328997e-5,8.154743911983669e-8,0.00323503947037617,-5.1454958354580704e-5,8.16508993774942e-8,0.0032351938886941546,-5.154582187779148e-5,8.179401797604287e-8,0.0032354142832091816,-5.16366609641141e-5,8.193524012891515e-8,0.003235699333554656,-5.1699018157927345e-5,8.202847891428973e-8,0.0032360358332845078,-5.170513116825102e-5,8.202923924758582e-8,0.003236397395298634,-5.163367599192616e-5,8.190391001440081e-8,0.0032367460274376706,-5.147751296830587e-5,8.164208997353886e-8,0.003237038911014802,-5.125146075858404e-5,8.126881868503913e-8,0.0032372413519731985,-5.099546813545693e-5,8.084938120768122e-8,0.0032373424767896393,-5.076735769152771e-5,8.04773994266105e-8,0.003237364737593232,-5.0623575968753e-5,8.024369261604461e-8,0.0032373583817348877,-5.0595930934664296e-5,8.01987556722749e-8,0.0032373814263608053,-5.067835383782129e-5,8.033154293976049e-8,0.0032374767927001143,-5.0831888417986464e-5,8.05778502518239e-8,0.0032376595358681605,-5.100299476696643e-5,8.08503013355666e-8,0.0032379179830066707,-5.1142929781694154e-5,8.106998345596535e-8,0.0032382234578475634,-5.121949714913483e-5,8.118548183125027e-8,0.0032385413765336594,-5.1220034229706235e-5,8.117745244402647e-8,0.0032388396301233986,-5.1148784000511076e-5,8.105395968506553e-8,0.00323909343633175,-5.1022080757357263e-5,8.084232217504016e-8,0.003239287476598087,-5.086344596635564e-5,8.058099601387515e-8,0.003239416418574005,-5.06993062299847e-5,8.031267394281034e-8,0.0032394844711164405,-5.055531403368913e-5,8.007849327535253e-8,0.0032395041778899027,-5.0453203864372276e-5,7.991313554603084e-8,0.003239494528968082,-5.0408228290502986e-5,7.98408045445796e-8,0.0032394784475627734,-5.0427301336513986e-5,7.987225828658261e-8,0.003239479791896909,-5.050810067219918e-5,8.000332058699083e-8,0.0032395202194974377,-5.063931236648878e-5,8.021522493846629e-8,0.003239616293252338,-5.080193546123921e-5,8.047671952390412e-8,0.003239777049036872,-5.097147176821398e-5,8.074769163503124e-8,0.003240002171167665,-5.112088531384368e-5,8.098412232278307e-8,0.0032402808961741075,-5.122423243494423e-5,8.114415044682696e-8,0.0032405918090109447,-5.126100829262938e-5,8.119521335082708e-8,0.003240904131438615,-5.122133435508816e-5,8.112236888320618e-8,0.003241181684719136,-5.111146117220087e-5,8.093692711688671e-8,0.003241390622446391,-5.095766931217798e-5,8.068237971757372e-8,0.0032415106650658305,-5.080520775946731e-5,8.04323546602781e-8,0.003241546514068598,-5.070868740467566e-5,8.027494782684523e-8,0.0032415324844812794,-5.071373081832885e-5,8.028313812372978e-8,0.003241523709398545,-5.083705921425271e-5,8.048281634683229e-8,0.0032415751240446157,-5.1057319994444045e-5,8.083823631077988e-8,0.003241719537245258,-5.132391935969942e-5,8.126660197144499e-8,0.0032419576140943988,-5.157842278878715e-5,8.167296421774885e-8,0.0032422632301883753,-5.177516910115313e-5,8.198373070848606e-8,0.0032425973491017465,-5.189151237656024e-5,8.216316480911329e-8,0.003242921385633165,-5.192728220314501e-5,8.221219939811576e-8,0.003243205429064354,-5.1898436692860174e-5,8.215775773060924e-8,0.0032434313058024543,-5.182970678799692e-5,8.204054311489319e-8,0.0032435923938506023,-5.1748673330064326e-5,8.190536290404036e-8,0.0032436920809447035,-5.1681708633171465e-5,8.179466859600291e-8,0.0032437419250657485,-5.165123951677518e-5,8.17443236041018e-8,0.0032437597611700603,-5.167373948957442e-5,8.178051974505204e-8,0.0032437676397874047,-5.1758154968282606e-5,8.191729901686929e-8,0.003243789408658554,-5.190473825027876e-5,8.215464440259327e-8,0.0032438478099100776,-5.2104555505873134e-5,8.247762756783664e-8,0.0032439612563935362,-5.234009583257239e-5,8.28573715553115e-8,0.0032441407595725984,-5.258721229750601e-5,8.325425050664329e-8,0.0032443875424479525,-5.281834024054875e-5,8.36232428780749e-8,0.0032446918276209393,-5.300675228469284e-5,8.392100559929466e-8,0.0032450332255609038,-5.3131371114476176e-5,8.411381289746435e-8,0.00324538295404514,-5.318148371486626e-5,8.418520437848297e-8,0.003245707983573782,-5.316071079859441e-5,8.414223757206918e-8,0.0032459772192329835,-5.3089364431137183e-5,8.401896535485175e-8,0.0032461694781570896,-5.300370532228837e-5,8.387484551908885e-8,0.003246281847351533,-5.2950284714670026e-5,8.37853066862844e-8,0.0032463352544695014,-5.297443793121066e-5,8.382308719834454e-8,0.0032463728424833803,-5.310479309421307e-5,8.403337508404443e-8,0.003246448216996769,-5.333992759564566e-5,8.441256609303461e-8,0.0032466062921121183,-5.364552457477591e-5,8.49040114435253e-8,0.0032468659901151594,-5.396605828032138e-5,8.541718992475005e-8,0.003247214553528512,-5.424562065011762e-5,8.586156956307863e-8,0.003247615679936334,-5.444642162568678e-5,8.617657458590432e-8,0.003248024912597425,-5.455655514944839e-5,8.634399975468773e-8,0.003248403432332568,-5.458687626580262e-5,8.638262859372707e-8,0.0032487255353343303,-5.4562352771310106e-5,8.633386467620277e-8,0.00324898008935198,-5.451326661190067e-5,8.624724859115626e-8,0.0032491685238771285,-5.4468896133598934e-5,8.617020704301661e-8,0.0032493017385686698,-5.44538837415368e-5,8.614231992982142e-8,0.0032493972235823195,-5.448639212370825e-5,8.619253072529561e-8,0.0032494766715691,-5.4577106999117414e-5,8.633766110669544e-8,0.003249563821635595,-5.4728537878472483e-5,8.658130339795376e-8,0.0032496821379050258,-5.4934496846960336e-5,8.691293350608795e-8,0.0032498520196944476,-5.5180047124981716e-5,8.730779131766455e-8,0.0032500875683692987,-5.544249647615775e-5,8.772852392629017e-8,0.0032503934051933206,-5.569395062737085e-5,8.812944569042736e-8,0.0032507623946056432,-5.5905572624570456e-5,8.846361811302392e-8,0.0032511752416808635,-5.60531534073218e-5,8.869203900002466e-8,0.0032516027189509527,-5.6122949655416366e-5,8.879316740083876e-8,0.003252010653866079,-5.6116271961945236e-5,8.87702629117698e-8,0.0032523669850277413,-5.605136928982403e-5,8.865417136694602e-8,0.0032526495630223616,-5.596163996267052e-5,8.850004846746351e-8,0.003252852996146235,-5.588978132512746e-5,8.837752315420322e-8,0.0032529925562878982,-5.58782471815996e-5,8.83550511189378e-8,0.003253103082055259,-5.595758026448335e-5,8.848108953757554e-8,0.0032532314776745693,-5.613576384150119e-5,8.876716640678854e-8,0.0032534234568621025,-5.6393001850667115e-5,8.917985280515563e-8,0.0032537084871765787,-5.668575826548498e-5,8.964767779069584e-8,0.0032540894242032077,-5.696017640428366e-5,9.008307761306017e-8,0.00325454214619616,-5.716962075359378e-5,9.041084937999461e-8,0.0032550252674333844,-5.728830620990315e-5,9.059011621990187e-8,0.003255494511827089,-5.731556283163272e-5,9.06209904156305e-8,0.003255914883576044,-5.7271048375594106e-5,9.0536487245569e-8,0.003256266746644497,-5.71854418674298e-5,9.03871423788393e-8,0.003256546050101389,-5.709145577327869e-5,9.022629331978918e-8,0.003256761198809244,-5.701770488175832e-5,9.010018411835402e-8,0.0032569290319573213,-5.6985589687069876e-5,9.004308407198988e-8,0.0032570712782715805,-5.700820517414628e-5,9.007569729439265e-8,0.003257211829634789,-5.709019855395602e-5,9.02050273070369e-8,0.003257374555642879,-5.722785472994945e-5,9.042451477474267e-8,0.0032575811280771455,-5.740918789972536e-5,9.07141464433097e-8,0.0032578484112563417,-5.761434937787547e-5,9.104111671626653e-8,0.003258185352705804,-5.781702102123823e-5,9.136217618930464e-8,0.0032585898547709312,-5.7987501554828986e-5,9.162880083070914e-8,0.003259046711760422,-5.8097856157750106e-5,9.179571951463989e-8,0.0032595281106661137,-5.812865707175766e-5,9.183195308320635e-8,0.003259997899742414,-5.807559874358659e-5,9.173151942039728e-8,0.003260419534272522,-5.7953377600878414e-5,9.151954278320197e-8,0.003260765818064894,-5.7794560130481856e-5,9.125009531413922e-8,0.0032610273094332534,-5.7642803315349266e-5,9.099481763997835e-8,0.0032612163205118245,-5.754195090058938e-5,9.082492438170712e-8,0.0032613648222029144,-5.752416949150301e-5,9.07918667306029e-8,0.0032615165714595593,-5.7600716096652344e-5,9.09125486368035e-8,0.003261715522120589,-5.7758163232549566e-5,9.116362370356967e-8,0.003261993680028687,-5.796146329096944e-5,9.148694570509478e-8,0.0032623620293660872,-5.8163394938097374e-5,9.180524978805767e-8,0.003262807665272582,-5.8317766793719975e-5,9.20437012761951e-8,0.0032632983134054426,-5.839199548958222e-5,9.215020451540345e-8,0.0032637924706452283,-5.8374669624859956e-5,9.210741718701442e-8,0.0032642511156409566,-5.827592207902026e-5,9.193302480930112e-8,0.0032646467560847373,-5.8121634092867766e-5,9.167002565308534e-8,0.003264967464613854,-5.794476140729533e-5,9.137245205768258e-8,0.0032652161360441057,-5.777729029325265e-5,9.109227604970783e-8,0.0032654068966987506,-5.764485386744147e-5,9.087078295628466e-8,0.003265560763456718,-5.756421591411039e-5,9.073466938213295e-8,0.0032657018358711034,-5.754278131830879e-5,9.069539608026732e-8,0.0032658544101094944,-5.757911789189286e-5,9.075008999633211e-8,0.0032660408074434333,-5.766372839766714e-5,9.088277448331733e-8,0.003266279396647697,-5.777976701135738e-5,9.106550153542938e-8,0.003266582301739539,-5.790395532285883e-5,9.12598753635655e-8,0.0032669526451217174,-5.80083795326496e-5,9.142009964322477e-8,0.003267381767555401,-5.8063972041273024e-5,9.149881185930952e-8,0.0032678476163183977,-5.804619770493952e-5,9.145646309337639e-8,0.003268316164476314,-5.79424713012002e-5,9.12733988533491e-8,0.0032687475221006164,-5.7759070899220414e-5,9.096097972973574e-8,0.003269106529960257,-5.7523825509117984e-5,9.056570793575683e-8,0.0032693746058921917,-5.7281393394498796e-5,9.01612217244734e-8,0.0032695575700859222,-5.7081169177186004e-5,8.982829299441299e-8,0.003269685200835826,-5.696205583363011e-5,8.962983858648573e-8,0.003269802214385346,-5.69404396125155e-5,8.959138558936853e-8,0.0032699545344188102,-5.700604476264368e-5,8.969464615227079e-8,0.0032701763009091883,-5.7126338282034846e-5,8.988518777066455e-8,0.003270481677542585,-5.725676162404585e-5,9.008956185060092e-8,0.0032708629470038705,-5.735286992395743e-5,9.023531943545998e-8,0.00327129431081459,-5.73809369580062e-5,9.026823726629858e-8,0.003271739599354458,-5.7324683909892404e-5,9.0162995318363e-8,0.0032721614993477402,-5.7187059246788255e-5,8.992569167509696e-8,0.0032725298445275717,-5.698731841848309e-5,8.958873870059514e-8,0.0032728270521627735,-5.675482647236528e-5,8.920055536744774e-8,0.003273049851570274,-5.652171851946322e-5,8.881356947561132e-8,0.0032732076970815966,-5.6316492523811355e-5,8.847388481842329e-8,0.003273319145670565,-5.615979289425225e-5,8.821459453534936e-8,0.0032734076545255755,-5.6062581528121386e-5,8.80529729256984e-8,0.003273497839452653,-5.602614665502433e-5,8.799058220459504e-8,0.003273612612866018,-5.604313201827532e-5,8.801494830994981e-8,0.0032737710867281598,-5.609888691693807e-5,8.81017115844299e-8,0.0032739868282610452,-5.617282175496241e-5,8.821681580619211e-8,0.0032742660365082388,-5.6239927611709573e-5,8.831905491514963e-8,0.003274605453936708,-5.627300819139812e-5,8.836386764965425e-8,0.0032749903608651097,-5.624637481283029e-5,8.830953041101465e-8,0.0032753938061936853,-5.614154823740327e-5,8.812653176627841e-8,0.0032757789936782864,-5.595449360495289e-5,8.78092919463083e-8,0.003276106647287594,-5.5701960526054305e-5,8.738628367074491e-8,0.0032763471421135533,-5.5422576587764e-5,8.692152997987455e-8,0.003276493258995722,-5.516877259292599e-5,8.650115186701256e-8,0.0032765664014518425,-5.499014654352684e-5,8.6206007430559e-8,0.003276610999942624,-5.491529491512299e-5,8.608196484440229e-8,0.00327667876464851,-5.494164014254628e-5,8.612345199946136e-8,0.0032768108494707626,-5.5038149965003114e-5,8.627829358674474e-8,0.0032770262708863127,-5.5157998227194705e-5,8.646888984364038e-8,0.0032773198064892668,-5.525387498988542e-5,8.661760852501955e-8,0.003277667339223204,-5.528988528837087e-5,8.666631731922832e-8,0.0032780346135977243,-5.5247658906088445e-5,8.658614562003795e-8,0.0032783860663120725,-5.512713483912658e-5,8.637835326428021e-8,0.0032786918994025917,-5.494363190933129e-5,8.606912261480339e-8,0.0032789327276445193,-5.472280951801439e-5,8.570104945011115e-8,0.003279101674465376,-5.449476059083265e-5,8.532342409842275e-8,0.0032792040453030104,-5.4288301754132294e-5,8.498301212375031e-8,0.0032792550494914192,-5.4126402494692005e-5,8.471678473867611e-8,0.00327927635003745,-5.402331015253779e-5,8.454741469132955e-8,0.003279292261048445,-5.398344931011103e-5,8.448159405887646e-8,0.0032793262697919023,-5.4001841681931624e-5,8.451073771217038e-8,0.0032793983038223334,-5.406554644950239e-5,8.461328637466328e-8,0.003279522775013503,-5.4155543035676e-5,8.475773055077884e-8,0.0032797071337421773,-5.4248736184423704e-5,8.490590178054932e-8,0.0032799506498463736,-5.432014534373688e-5,8.501666483516674e-8,0.003280243299674806,-5.434560660615751e-5,8.505051210231342e-8,0.003280565004985942,-5.430549748269372e-5,8.497579494488648e-8,0.003280886168989561,-5.4189871664097075e-5,8.47771184438119e-8,0.003281171139090372,-5.4004474659509736e-5,8.446499011144445e-8,0.003281386101154559,-5.377533480404946e-5,8.408301336304262e-8,0.0032815110470657827,-5.354778435894943e-5,8.370597725390225e-8,0.003281551525320081,-5.3376005048922325e-5,8.342256462979238e-8,0.0032815423544261006,-5.3303997698127796e-5,8.330417977081286e-8,0.0032815375199139597,-5.334662167257096e-5,8.337402779899631e-8,0.003281589425999078,-5.3482477388724635e-5,8.359571772677401e-8,0.003281729077837722,-5.366347603158219e-5,8.388931201996357e-8,0.0032819577992785165,-5.383448660629819e-5,8.416390530143764e-8,0.003282252028816867,-5.3951461208844274e-5,8.434755805679241e-8,0.003282575064733863,-5.399087527054447e-5,8.440270284958065e-8,0.0032828888308288045,-5.395041499415586e-5,8.432692167156779e-8,0.0032831620823933123,-5.384442525035143e-5,8.414501783308623e-8,0.003283374577592845,-5.369758720472906e-5,8.389827797025655e-8,0.0032835182149421297,-5.3538900495709054e-5,8.363445972132653e-8,0.003283596317507677,-5.3396677990892325e-5,8.339967143688218e-8,0.0032836217594359217,-5.3294597136367996e-5,8.323212142857587e-8,0.0032836142689651616,-5.3248868881598726e-5,8.31577096068053e-8,0.0032835972456282487,-5.326663219322064e-5,8.318754756177193e-8,0.003283594445314077,-5.33455619881586e-5,8.331735797629278e-8,0.003283626858166137,-5.34746355750414e-5,8.35286872417797e-8,0.0032837101355881193,-5.363590835227975e-5,8.379175121758466e-8,0.0032838527983820075,-5.3806929427041975e-5,8.406937560267436e-8,0.003284055181100754,-5.396343946274494e-5,8.432148778286718e-8,0.0032843089773761463,-5.40822511951771e-5,8.450998775388706e-8,0.003284597358913076,-5.414438100313206e-5,8.460404446842303e-8,0.003284895834787221,-5.413857912979374e-5,8.458595257932233e-8,0.003285174445296768,-5.406532947278778e-5,8.445757818292492e-8,0.0032854023338345904,-5.3940697089698616e-5,8.424636958756322e-8,0.0032855554831677934,-5.379806390910282e-5,8.400782714837921e-8,0.003285626815766494,-5.3684562539693467e-5,8.38193737194727e-8,0.0032856347701112503,-5.3649414340871245e-5,8.376117760633833e-8,0.0032856235616832005,-5.3725485877918647e-5,8.38860837426238e-8,0.003285650142636974,-5.391249164401037e-5,8.419236027689752e-8,0.0032857616382241683,-5.4173556173630084e-5,8.461836300416228e-8,0.003285976011289329,-5.444965808100916e-5,8.50665090145353e-8,0.003286277545198635,-5.468347961861177e-5,8.544264341871019e-8,0.0032866275363075573,-5.483838580460321e-5,8.568728752895917e-8,0.0032869809330381304,-5.490461627338049e-5,8.578565026164803e-8,0.0032872996339806037,-5.489474335285152e-5,8.575977711296552e-8,0.003287559053510933,-5.48347345844862e-5,8.565341922089876e-8,0.0032877491677817746,-5.475543920672599e-5,8.551775502054806e-8,0.0032878725457978937,-5.4686451467669074e-5,8.540127833973602e-8,0.0032879413934742783,-5.465235422268597e-5,8.534381381044643e-8,0.003287974597188788,-5.4670536130827427e-5,8.53731992403231e-8,0.003287994886136215,-5.474993658443841e-5,8.550343585455102e-8,0.003288026004617243,-5.489052942074253e-5,8.573393033814724e-8,0.0032880898877680324,-5.508355309891816e-5,8.604985500404462e-8,0.003288203921857211,-5.5312587539400495e-5,8.642385409484243e-8,0.0032883785505384453,-5.5555608027442216E-05,8.681938148259401e-8,0.0032886156357365445,-5.578790705412445e-5,8.719554080619211e-8,0.0032889078436774757,-5.5985521987479445e-5,8.751283667062376e-8,0.003289239125545009,-5.612881998939157e-5,8.77392146012537e-8,0.003289586318797038,-5.620594849831879e-5,8.78558281449679e-8,0.0032899218910641607,-5.621585137160659e-5,8.786195042061433e-8,0.0032902179191576634,-5.617054021271309e-5,8.77784760736655e-8,0.0032904515278464005,-5.609599525829377e-5,8.764903319639631e-8,0.003290611690989794,-5.603034994237022e-5,8.753663675600585e-8,0.0032907060886177963,-5.601757230920074e-5,8.751312401969255e-8,0.0032907648315062244,-5.60957001758165e-5,8.763993271030684e-8,0.00329083651219213,-5.628175714456582e-5,8.794367269940098e-8,0.003290973902945432,-5.656023599277606e-5,8.839762192953688e-8,0.003291213321631433,-5.6884077700507716e-5,8.892363541663668e-8,0.003291558763057707,-5.7191191598862794e-5,8.941943124269481e-8,0.0032919809643103797,-5.742839856654776e-5,8.979798297636507e-8,0.0032924313677109907,-5.756902600419823e-5,9.001640079964623e-8,0.0032928611324823196,-5.7616237434723784e-5,9.008120657162066e-8,0.003293234884122227,-5.759476981903807e-5,9.003437623650073e-8,0.003293535602904595,-5.753893290328132e-5,8.993321103832823e-8,0.003293762927268325,-5.7482792094576774e-5,8.983397854989548e-8,0.003293928650397064,-5.745439610101603e-5,8.978246898705095e-8,0.003294052074754002,-5.7473344437337244e-5,8.981023130920463e-8,0.003294156313027807,-5.755021904012821e-5,8.993390698836747e-8,0.0032942654733313977,-5.768674160814335e-5,9.01556607176256e-8,0.0032944022662521263,-5.787621616364838e-5,9.046394738638393e-8,0.003294585697181951,-5.810428412374258e-5,9.083470767938509e-8,0.003294828730883638,-5.835025192829971e-5,9.123350329312376e-8,0.0032951361110117538,-5.858935210068161e-5,9.161924961334033e-8,0.003295502862145243,-5.879608733804884e-5,9.194981099819587e-8,0.0032959140922813155,-5.894836427269165e-5,9.218894166181916e-8,0.003296346501630117,-5.903178845858687e-5,9.2313465377073e-8,0.0032967716942378903,-5.904330752969372e-5,9.231927451156279e-8,0.003297161013652729,-5.8993325195830865e-5,9.222465017716898e-8,0.0032974912528637187,-5.8905595820280855e-5,9.206977518622295e-8,0.0032977504065195102,-5.881449638135142e-5,9.191186754025751e-8,0.003297942473857903,-5.875940209359208e-5,9.181563871498607e-8,0.0032980898714052753,-5.877616173854993e-5,9.183921908280787e-8,0.0032982314957932714,-5.88866346272826e-5,9.201718962789459e-8,0.0032984146833885644,-5.908904162486795e-5,9.23451566292984e-8,0.0032986812779857745,-5.935379884542151e-5,9.277334751463147e-8,0.003299051997951586,-5.962945134656554e-5,9.321663709787946e-8,0.003299516827886728,-5.985901363351853e-5,9.358146928311346e-8,0.0033000378122319263,-5.999998453310655e-5,9.379868554416737e-8,0.003300563468977945,-6.003775679601342e-5,9.384541959529023e-8,0.003301046759699778,-5.9986342425414024e-5,9.374604054768167e-8,0.0033014576765286454,-5.987863396959832e-5,9.355579500500295e-8,0.003301786809054379,-5.975339670750789e-5,9.33390980278829e-8,0.0033020419823445663,-5.964508164161518e-5,9.315264867329e-8,0.0033022421362587082,-5.9578548895871055e-5,9.303685979764736e-8,0.003302411561432909,-5.9567748630520254e-5,9.301394192772079e-8,0.0033025757102160976,-5.961647141519134e-5,9.308938092423752e-8,0.003302758454813665,-5.971971311326604e-5,9.32543085753427e-8,0.003302980149123383,-5.986499809573707e-5,9.348767984635991e-8,0.0033032558966772426,-6.003362496588928e-5,9.375826851834662e-8,0.003303593705146403,-6.0202192353766145e-5,9.402715772445558e-8,0.0033039926166897105,-6.034495084095433e-5,9.425167222522078e-8,0.003304441386900897,-6.043737478577002e-5,9.439138689843304e-8,0.003304918618617791,-6.046082993353868e-5,9.441594479608006e-8,0.0033053952081656575,-6.040751190609572e-5,9.431324511412548e-8,0.0033058394190006372,-6.028418972979809e-5,9.409552551950787e-8,0.0033062239072710452,-6.011307792870043e-5,9.380056022170947e-8,0.0033065329819612454,-5.99287475949815e-5,9.348622559924204e-8,0.003306767914704313,-5.977122717532698e-5,9.321879190076651e-8,0.003306948486177933,-5.9676703637333575e-5,9.305741226162379e-8,0.0033071098761496675,-5.966803032891732e-5,9.303855751819586e-8,0.003307295078633383,-5.974750722150152e-5,9.316446634613662e-8,0.003307544114132092,-5.9894223093106617E-05,9.339925812123948e-8,0.0033078824817017226,-6.006764076265878e-5,9.367527554290179e-8,0.003308312428674662,-6.021771715946743e-5,9.390997219756039e-8,0.003308810868846452,-6.02993136284251e-5,9.402960860305769e-8,0.003309335890088662,-6.028585030600706e-5,9.39915224159716e-8,0.003309839846317023,-6.017646168426142e-5,9.379561381316522e-8,0.003310283495942255,-5.999380790271972e-5,9.348042402784567e-8,0.0033106453888089448,-5.977450811021991e-5,9.310709708273535e-8,0.0033109239015205183,-5.955734946844783e-5,9.273979011758474e-8,0.003311133299984977,-5.937407692846487e-5,9.243051520461885e-8,0.0033112972340637236,-5.924481776115903e-5,9.221178385233012e-8,0.0033114426199441147,-5.917750316763905e-5,9.209590179549796e-8,0.0033115952609545363,-5.9169497804775444e-5,9.207784107991695e-8,0.003311777204723194,-5.920987375766593e-5,9.213904652853273e-8,0.0033120052080999,-5.92814938356559e-5,9.225082851606375e-8,0.003312289594904694,-5.936274846059623e-5,9.237717028262174e-8,0.003312633024578902,-5.942929679557276e-5,9.247760893901174e-8,0.003313029137070735,-5.945642637260442e-5,9.251122688928723e-8,0.0033134615879803833,-5.942257807852542e-5,9.244260873645003e-8,0.0033139044987459776,-5.931413137224047e-5,9.22498336783901e-8,0.0033143255654085853,-5.913063940039792e-5,9.193309185903323e-8,0.003314692523404364,-5.888852657791199e-5,9.152061902109267e-8,0.003314982071759978,-5.862063074863608e-5,9.106765658072329e-8,0.0033151883441194956,-5.836990960235362e-5,9.064573525743296e-8,0.003315327061036844,-5.817820907612507e-5,9.032387007253822e-8,0.003315432756404787,-5.807381239007963e-5,9.014792415786519e-8,0.003315549502730872,-5.80625870862475e-5,9.012617527068651e-8,0.0033157184572218204,-5.8126053541180765e-5,9.022654455023874e-8,0.003315966551858763,-5.8226689676969886e-5,9.038585941639497e-8,0.0033162996332138915,-5.831825523870404e-5,9.052728727571216e-8,0.0033167015288640424,-5.835787971070538e-5,9.058041563143791e-8,0.0033171388754599613,-5.8316694902620264e-5,9.049864230177064e-8,0.003317570199537387,-5.818631498100734e-5,9.026951683504713e-8,0.0033179566224040904,-5.7979533462259516e-5,8.99154851350754e-8,0.0033182710352989515,-5.772533753434543e-5,8.94853309482593e-8,0.003318503156852944,-5.746022504077495e-5,8.903967082003617e-8,0.003318659520612165,-5.721893166409305e-5,8.863565691424088e-8,0.0033187593907932924,-5.7027409664830245e-5,8.831554830627552e-8,0.0033188288152567313,-5.6899447070337116e-5,8.810136402150192e-8,0.0033188949683195744,-5.683663868685322e-5,8.799503967854189e-8,0.0033189820031886176,-5.683044444173091e-5,8.79819251290983e-8,0.0033191086079180677,-5.686498657172212e-5,8.80353851458633e-8,0.0033192868090701146,-5.6919687627007744e-5,8.812108202417043e-8,0.0033195213608058194,-5.6971468212093134e-5,8.820056393045532e-8,0.003319809205334997,-5.6996756676009524e-5,8.823463939940167e-8,0.0033201388682853913,-5.6973850769248384e-5,8.818741927408212e-8,0.0033204901645404743,-5.688617916715095e-5,8.803185327819643e-8,0.0033208351653437364,-5.672667481568836e-5,8.775700668157399e-8,0.0033211417606726764,-5.650258196722333e-5,8.737589343481958e-8,0.0033213807589085697,-5.623860290952227e-5,8.693042466255639e-8,0.003321535704580842,-5.5975194089382036e-5,8.64882803546673e-8,0.003321611779853912,-5.575964063734652e-5,8.612788421461543e-8,0.0033216383488875716,-5.563121550563371e-5,8.591372038897917e-8,0.00332166160133251,-5.560648771923718e-5,8.587208299016034e-8,0.003321729332346463,-5.567246407025703e-5,8.597999999454416e-8,0.0033218749696411454,-5.5791288194139026e-5,8.617344710132884e-8,0.003322108078793622,-5.591357362818337e-5,8.636987047930183e-8,0.003322414074917141,-5.599359775464645e-5,8.649361999558831e-8,0.0033227610657908736,-5.600062818328033e-5,8.649468343439781e-8,0.0033231098129842453,-5.592409172339057e-5,8.635693899550423e-8,0.003323423401229845,-5.577304858807897e-5,8.60968278743868e-8,0.0033236746106560327,-5.5571625019046895e-5,8.57553706414179e-8,0.0033238501378285963,-5.535223551652658e-5,8.538670353148495e-8,0.003323951512978097,-5.5148243821503265e-5,8.504591708672522e-8,0.0033239930515267515,-5.4987516475655016e-5,8.477855814651931e-8,0.003323997693098464,-5.4888022929405465e-5,8.461360179444422e-8,0.0033239919654675055,-5.485601986581888e-5,8.456067453943338e-8,0.0033240012834951657,-5.4886614374086276e-5,8.461111130656435e-8,0.00332404640453801,-5.496599005265156e-5,8.474164448132102e-8,0.003324141328817078,-5.507438956499113e-5,8.491926542726227e-8,0.003324292421254159,-5.5189074106772154e-5,8.510604823670503e-8,0.0033244982624229583,-5.528690636714247e-5,8.526342573891019e-8,0.0033247498139609742,-5.534665974060568e-5,8.5356116539381e-8,0.003325030738318475,-5.535139742517621e-5,8.535622814349039e-8,0.003325318078773487,-5.529132808874682e-5,8.524810407518335e-8,0.0033255840434287193,-5.516732559483926e-5,8.503412127897562e-8,0.003325800025884042,-5.4994500283684165e-5,8.474038755337137e-8,0.003325943636647162,-5.4803921202816106e-5,8.441925947919739e-8,0.003326007954119694,-5.463949661780294e-5,8.414386557641033e-8,0.0033260093929748016,-5.454751850488496e-5,8.39906316797749e-8,0.0033259881913321188,-5.4560143825206843e-5,8.401195873056964e-8,0.0033259972865628765,-5.4680122236649234e-5,8.421112518435034e-8,0.003326082679984568,-5.4876669269890736e-5,8.453576539427439e-8,0.0033262656698723574,-5.509660108184346e-5,8.489670021080734e-8,0.0033265367421952,-5.528454025680654e-5,8.520177547374201e-8,0.0033268625692368203,-5.540089651290604e-5,8.53858406600953e-8,0.0033271997836301316,-5.5430263445104554e-5,8.542454745717457e-8,0.00332750801243725,-5.538020410605459e-5,8.533193941439912e-8,0.0033277582273325535,-5.527451512296222e-5,8.514878834424156e-8,0.0033279360985943923,-5.514504454421498e-5,8.492865234127454e-8,0.0033280417206101223,-5.502443713341801e-5,8.47257264967664e-8,0.0033280872119350394,-5.494062573953781e-5,8.458583816329359e-8,0.0033280931856418602,-5.4913121909954754e-5,8.454056432249686e-8,0.003328084687829209,-5.49510529651956e-5,8.460424445406648e-8,0.003328087119786794,-5.505287514330795e-5,8.477367296994299e-8,0.003328122619004344,-5.520754438276987e-5,8.503008040542494e-8,0.0033282072794208633,-5.539681605654844e-5,8.534289014342119e-8,0.0033283494784650124,-5.559823205385741e-5,8.567459021016955e-8,0.0033285493241682613,-5.5788247308437714e-5,8.5985886311372e-8,0.0033287989546007955,-5.594511202878772e-5,8.624053969095568e-8,0.0033290834152926,-5.605145404558202e-5,8.640978601385084e-8,0.0033293820025522038,-5.609665354800625e-5,8.647641681844645e-8,0.00332967012765513,-5.607914249037254e-5,8.64386360154981e-8,0.003329922108265471,-5.600868372770514e-5,8.63137014691309e-8,0.003330115618151409,-5.590807269377462e-5,8.614043768918587e-8,0.0033302381328333365,-5.58126677029861e-5,8.597808953775239e-8,0.0033302943335076583,-5.5765475825965935e-5,8.589791861426393e-8,0.0033303112431023363,-5.580611329656748e-5,8.596488539474054e-8,0.003330335893358347,-5.595512706192685e-5,8.621187561535514e-8,0.0033304217950196257,-5.620076748901601e-5,8.661809726569148e-8,0.0033306077541668403,-5.649824615334275e-5,8.710815973363818e-8,0.003330900673735715,-5.678551821777345e-5,8.757850948338549e-8,0.0033312733708816735,-5.7007580014031255e-5,8.793794593475561e-8,0.003331677827847687,-5.713506396332166e-5,8.81385544183494e-8,0.0033320641462310304,-5.7168762976044525e-5,8.818303689777447e-8,0.003332394888741356,-5.713232454494835e-5,8.81121521924967e-8,0.003332650948899174,-5.706056072566515e-5,8.79848172366316e-8,0.0033328307387244707,-5.69892054818512e-5,8.786079588531413e-8,0.003332946103134148,-5.6948270940260595e-5,8.7789662082767e-8,0.003333017524013881,-5.695869565914077e-5,8.780546633003202e-8,0.003333069785980845,-5.7031151550971855e-5,8.79250644837299e-8,0.003333128293176569,-5.7166122827538784e-5,8.814848616597651e-8,0.003333215942814037,-5.735486447701515e-5,8.846062555209589e-8,0.003333350526081416,-5.758107712399529e-5,8.883400189972032e-8,0.003333542711568079,-5.782323256543382e-5,8.923255045240708e-8,0.0033337948024626724,-5.805748921759443e-5,8.961641831353482e-8,0.0033341004955474854,-5.826092281925177e-5,8.994735848331943e-8,0.0033344456574180216,-5.8414663420069585e-5,9.019404254409442e-8,0.0033348099763535065,-5.850667539814434e-5,9.033680470762473e-8,0.0033351693972139954,-5.8534013007029704e-5,9.037145788055351e-8,0.0033354992652454255,-5.850435337312846e-5,9.031176994724097e-8,0.003335778150817505,-5.8436628216984924e-5,9.019026948162117e-8,0.0033359924676545083,-5.836033415719681e-5,9.005674088553579e-8,0.003336141696475799,-5.831247259530645e-5,8.99728131408324e-8,0.003336242937122228,-5.833081796090152e-5,9.000064726389226e-8,0.003336332072852576,-5.844314497737879e-5,9.018519988192054e-8,0.003336457993721301,-5.8654611621949015e-5,9.053364701309959e-8,0.003336668034416213,-5.8939341334053395e-5,9.100181248328803e-8,0.0033369886308538366,-5.9243988034202145e-5,9.15003563787348e-8,0.0033374117211466396,-5.950577741976175e-5,9.192485569877443e-8,0.0033378966406314506,-5.9676814334938345e-5,9.219623025373824e-8,0.003338387060585492,-5.974061238822445e-5,9.228818050131115e-8,0.003338832161640395,-5.9712769824558396e-5,9.222809662066525e-8,0.003339200660884803,-5.9629238348668325e-5,9.207713490030904e-8,0.0033394839946629365,-5.9531508527586526e-5,9.19051435138701e-8,0.00333969194933606,-5.9455615021928336e-5,9.177216062406416e-8,0.0033398456958361393,-5.9426735296063406e-5,9.171952556625893e-8,0.0033399714625476887,-5.94580076063395e-5,9.176821138029921e-8,0.0033400959454044452,-5.9551503177061825e-5,9.19207583444299e-8,0.003340243216604815,-5.969991931487511e-5,9.21642828744451e-8,0.003340432528612182,-5.988845372977386e-5,9.247363390315894e-8,0.00334067661964073,-6.009682747560091e-5,9.281470236403697e-8,0.003340980391006287,-6.0301603901974886e-5,9.314821825194654e-8,0.0033413400860247433,-6.047899922745841e-5,9.34344253905957e-8,0.0033417433406987395,-6.0608161718892285e-5,9.363861218700703e-8,0.0033421704338331562,-6.0674530868574566e-5,9.373681434940468e-8,0.003342596793867571,-6.067274472862805e-5,9.372073186756808e-8,0.003342996619504433,-6.060857747387037e-5,9.360092417739725e-8,0.0033433472973181913,-6.049938316515723e-5,9.340736779360886e-8,0.003343634076313921,-6.037265637678459e-5,9.318674843140178e-8,0.003343854352958671,-6.026253039672385e-5,9.29962869527095e-8,0.0033440207974379525,-6.02040503597778e-5,9.289398103642671e-8,0.00334416209570793,-6.0225227664861864e-5,9.292540486542561e-8,0.0033443195738953684,-6.033783862182839e-5,9.310869759814082e-8,0.0033445382535737425,-6.052967926745262e-5,9.342213643036966e-8,0.0033448528768625176,-6.076271261213488e-5,9.380146725962548e-8,0.0033452733341006566,-6.098129519580642e-5,9.415379750598335e-8,0.0033457773304763423,-6.11302103754188e-5,9.43875995339562e-8,0.003346316441695281,-6.117498982465232e-5,9.444642575943193e-8,0.0033468338086486238,-6.111354333006799e-5,9.432810795018451e-8,0.0033472838692474196,-6.097324927755117e-5,9.4079645301939e-8,0.0033476441985163447,-6.0797240704200516e-5,9.377398884436344e-8,0.0033479163084475117,-6.062888070521747e-5,9.348385258171712e-8,0.003348119017326552,-6.050124738963157e-5,9.326410433273226e-8,0.0033482798563691583,-6.043317112036643e-5,9.314535120928058e-8,0.0033484280459571253,-6.0429873261064216e-5,9.313533471622201e-8,0.0033485900303240564,-6.0485597297215256e-5,9.322360188274091e-8,0.0033487870427821647,-6.058650061285441e-5,9.338645264051759e-8,0.003349033779148276,-6.071317745669125e-5,9.359112405668456e-8,0.003349337512154647,-6.084287930407258e-5,9.379941019517652e-8,0.0033496973868342426,-6.0951778738148076e-5,9.39713912066027e-8,0.0033501040189214903,-6.1017654657638296e-5,9.406994902831682e-8,0.003350539852327468,-6.102313701204754e-5,9.406628005534092e-8,0.0033509808424563464,-6.0959184102096446e-5,9.394579478956938e-8,0.0033513997985662727,-6.0828035243102085e-5,9.371305998195274e-8,0.003351771242630648,-6.064464806465786e-5,9.339407682046672e-8,0.0033520770502697586,-6.043567280060645e-5,9.303431185934628e-8,0.0033523115992083793,-6.023549059632611e-5,9.269175686275925e-8,0.0033524849538567095,-6.0079656147178764e-5,9.242570667708549e-8,0.003352622868607595,-5.999683644913714e-5,9.228321247007672e-8,0.0033527629108964156,-6.0000858451751614e-5,9.228598308330152e-8,0.0033529466888537886,-6.0084899028015664e-5,9.242109352946563e-8,0.003353209163212818,-6.0220101719581925e-5,9.263915942649568e-8,0.003353567452423346,-6.036056292024498e-5,9.286301996208644e-8,0.003354013074553909,-6.045506176241125e-5,9.300742375322236e-8,0.003354511938151932,-6.0462793179074204e-5,9.300515855826013e-8,0.003355013937094379,-6.036701837740332e-5,9.282957547814603e-8,0.0033554690078815767,-6.018006277425595e-5,9.250263119120252e-8,0.0033558424476254254,-5.9937221757790955e-5,9.208440293612802e-8,0.0033561228412348943,-5.9683282240027307e-5,9.165030735952862e-8,0.003356320744440452,-5.9458664926667036e-5,9.126781835699132e-8,0.003356461215846782,-5.929059997108527e-5,9.09818074709203e-8,0.0033565749791113304,-5.919060979973586e-5,9.081060603989335e-8,0.0033566915189816907,-5.915640839670276e-5,9.07494897969949e-8,0.0033568350305881473,-5.91755770416691e-5,9.077702401431161e-8,0.003357022613830941,-5.9229226963443656e-5,9.086121990946202e-8,0.003357263701159578,-5.929496452229679e-5,9.096440629587108e-8,0.003357559911226247,-5.934921839576949e-5,9.104702421945221e-8,0.0033579049385909485,-5.9369383956175455e-5,9.1071192375381e-8,0.0033582845835001054,-5.9336313704812116e-5,9.100494733703145e-8,0.00335867744667257,-5.923739982099832e-5,9.082751861971475e-8,0.003359057001605932,-5.906997363720898e-5,9.053508695821385e-8,0.003359395616398978,-5.884413276926084e-5,9.014546329210125e-8,0.003359670484111321,-5.858354614172143e-5,8.96992412648217e-8,0.003359870306372325,-5.83227294745991e-5,8.925494292974744e-8,0.003360000476205311,-5.8100244081356475e-5,8.887733886137964e-8,0.0033600842939887445,-5.794905158876692e-5,8.862112733910623e-8,0.0033601588394004405,-5.7886876867381644e-5,8.851484939281549e-8,0.0033602660797591934,-5.790993390908707e-5,8.85506789176601e-8,0.003360441674025316,-5.799244505104898e-5,8.868407215376571e-8,0.003360704848971143,-5.809247460735285e-5,8.884397868653839e-8,0.003361052408555661,-5.8162610399993446e-5,8.895098477449679e-8,0.0033614587985430038,-5.816263041067814e-5,8.893850581578914e-8,0.003361882595100984,-5.807055435201572e-5,8.877103313526498e-8,0.0033622778382321966,-5.788851232418176e-5,8.845357733079992e-8,0.003362606646946412,-5.764123357960088e-5,8.802875740347297e-8,0.003362848722009863,-5.736772166360094e-5,8.756257923304475e-8,0.003363004624307182,-5.710951428610873e-5,8.712465566458204e-8,0.0033630925651310676,-5.690004657624532e-5,8.677046271557997e-8,0.0033631411170110623,-5.6758424875231495e-5,8.653114040510852e-8,0.003363181256001812,-5.668835779717318e-5,8.641199419472419e-8,0.0033632402740149748,-5.6680785627308535e-5,8.639713164955336e-8,0.0033633383786634027,-5.67180183840242e-5,8.64564805526587e-8,0.0033634874868962595,-5.6777755378881375e-5,8.65524655651299e-8,0.0033636912810481303,-5.683628445550697e-5,8.66452477529796e-8,0.003363945718484768,-5.687086249094485e-5,8.669663650025481e-8,0.0033642395389277832,-5.686171426360383e-5,8.667346696354637e-8,0.0033645548029027344,-5.6794222114151424e-5,8.655138743646585e-8,0.0033648679728196743,-5.6661634264931834e-5,8.631952160889124e-8,0.003365152316192434,-5.646808727765676e-5,8.598556119531746e-8,0.0033653823440695273,-5.6231009443925796e-5,8.557966538825618e-8,0.003365540348867742,-5.598115619209057e-5,8.515425825459867e-8,0.0033656236291926926,-5.5758262063050816e-5,8.477643543829795e-8,0.003365649237974656,-5.5601580627967396e-5,8.451187493962213e-8,0.003365652653538818,-5.5537505781072915e-5,8.440402629396734e-8,0.0033656789459104476,-5.5569291146105796e-5,8.445703766415184e-8,0.003365769023611574,-5.5674099565599833e-5,8.463116901817921e-8,0.003365946605285959,-5.580935658495085e-5,8.485389455646114e-8,0.003366211262409989,-5.592573091926771e-5,8.504204720695987e-8,0.0033665395943343838,-5.598132333980049e-5,8.512577176624952e-8,0.003366892961472996,-5.59521898282755e-5,8.506604596898847e-8,0.003367228357217615,-5.583677491599288e-5,8.486175343471328e-8,0.0033675090217883843,-5.565418314517531e-5,8.454632832083293e-8,0.0033677122812087027,-5.543770395775392e-5,8.417651191158752e-8,0.0033678331653782018,-5.522579913828783e-5,8.381704806824443e-8,0.0033678834944036373,-5.50530389308712e-5,8.352552276592036e-8,0.0033678872697589877,-5.494321345418341e-5,8.334103225252462e-8,0.003367874119813055,-5.490600237086945e-5,8.327889130742978e-8,0.0033678728417263332,-5.493731937946403e-5,8.333146207894089e-8,0.003367906582298691,-5.50223028120182e-5,8.347329601819736e-8,0.003367990240931756,-5.5139459330814e-5,8.36680693328067e-8,0.003368129820921837,-5.5264706650024884e-5,8.387526013174893e-8,0.0033683230141878383,-5.53746278372721e-5,8.405550425907457e-8,0.0033685602874602904,-5.544884667401181e-5,8.417455801548991e-8,0.0033688260245799536,-5.5471875403664845e-5,8.420648096017351e-8,0.0033690996964164,-5.54349217648513e-5,8.41368044105891e-8,0.0033693574390171246,-5.533796983745346e-5,8.396611154911362e-8,0.003369574738556079,-5.51920190230235e-5,8.371373979967595e-8,0.0033697309471166486,-5.502062543221554e-5,8.342014676700197e-8,0.0033698157191195807,-5.4858963662490004e-5,8.314502135403152e-8,0.00336983588693757,-5.4748211466438515e-5,8.295758836096101e-8,0.003369819180796456,-5.472435396786891e-5,8.291770942984493e-8,0.0033698103447281362,-5.4804144817696605e-5,8.305241791698605e-8,0.0033698580327925177,-5.497509215486744e-5,8.333937840761425e-8,0.00336999704671909,-5.519660736781785e-5,8.370918090270701e-8,0.003370235023755808,-5.541355414664154e-5,8.406846696487325e-8,0.0033705505910493,-5.557548077177791e-5,8.43325066766928e-8,0.0033709027002781183,-5.565191209448797e-5,8.445094442884492e-8,0.0033712449573918956,-5.563811944371171e-5,8.441726573141519e-8,0.0033715383281370122,-5.5551947479558465e-5,8.426301455023264e-8,0.0033717588003342688,-5.5425603682988634e-5,8.404350744757277e-8,0.0033718997534319347,-5.529628730757146e-5,8.382176259040501e-8,0.0033719703516509663,-5.519808521396885e-5,8.365483265879684e-8,0.0033719915125817105,-5.515616301581334e-5,8.358424368986457e-8,0.003371990670460589,-5.5183508520810655e-5,8.363084262341449e-8,0.003371996312094328,-5.5280222125438397e-5,8.37938999603007e-8,0.0033720332014755966,-5.543506986883743e-5,8.405389123547616e-8,0.0033721189855487107,-5.56286157858378e-5,8.437778720791833e-8,0.003372262458821144,-5.5837078683713314e-5,8.472545698884107e-8,0.0033724633940253805,-5.603614789623234e-5,8.505597653427594e-8,0.003372713546608454,-5.620417709122976e-5,8.533294234846123e-8,0.0033729982668022603,-5.632452546423462e-5,8.552844070193068e-8,0.00337329829570848,-5.6387235045065904e-5,8.562597120345452e-8,0.003373591662554191,-5.639037939243083e-5,8.56228158420924e-8,0.0033738558827816345,-5.634128823507716e-5,8.553209949381927e-8,0.0033740709065428706,-5.625757728164715e-5,8.538435984518772e-8,0.0033742233614416587,-5.6167318041165296e-5,8.522753464272809e-8,0.0033743120850930324,-5.6106839883563096e-5,8.512295286558207e-8,0.0033743535182657845,-5.6114284681771475e-5,8.51343302306435e-8,0.003374383584560917,-5.621816091412462e-5,8.530860378052354e-8,0.003374451653711905,-5.642363033026548e-5,8.565316246357324e-8,0.003374604874548048,-5.670392651341919e-5,8.612176775673318e-8,0.003374868363272367,-5.700515151316815e-5,8.662290807184912e-8,0.0033752327666612806,-5.726543902108981e-5,8.705223569982031e-8,0.003375657734454065,-5.743861941957818e-5,8.733251492462779e-8,0.00337608883276525,-5.7508964679654286e-5,8.743842547911098e-8,0.0033764770314720334,-5.749109053497066e-5,8.739613430904317e-8,0.003376791288154108,-5.741928432963936e-5,8.726484516431357e-8,0.003377021873463669,-5.733428391425587e-5,8.711405749206888e-8,0.003377177244553692,-5.727289468373037e-5,8.700584615729924e-8,0.0033772782065038614,-5.7261975296652276e-5,8.698482352101486e-8,0.003377351897211726,-5.731608876134401e-5,8.707450164078988e-8,0.0033774266600864046,-5.743750053577925e-5,8.727765185706965e-8,0.0033775279397840904,-5.761758344607225e-5,8.757892428997106e-8,0.0033776751676794963,-5.783921764291742e-5,8.794897670651642e-8,0.0033778797227997696,-5.807988352583364e-5,8.834963725304223e-8,0.0033781440270615184,-5.831509017006301e-5,8.873957895692964e-8,0.0033784617768650477,-5.8521803894550365e-5,8.908001953560924e-8,0.003378819238634322,-5.868149381761238e-5,8.933984781642511e-8,0.003379197323670683,-5.8782439093002966e-5,8.949957584080041e-8,0.003379574066231394,-5.882122050843463e-5,8.955393397490966e-8,0.003379927308581292,-5.880351542948081e-5,8.951323372093641e-8,0.0033802375736910525,-5.8744255904977356e-5,8.940353066295135e-8,0.003380491220639322,-5.86670851430349e-5,8.92654614473728e-8,0.003380684061250688,-5.8602724717853605e-5,8.915117457299559e-8,0.003380825238790617,-5.8585283278155506e-5,8.911787039413452e-8,0.0033809400725077258,-5.8645366370736766e-5,8.921617853680288e-8,0.0033810692089788217,-5.8799874204040243e-5,8.947323513780382e-8,0.003381260821250198,-5.904106722336901e-5,8.987469296042821e-8,0.0033815547925915685,-5.933123263112307e-5,9.0356110182332e-8,0.003381964109575867,-5.961028832185029e-5,9.081592148861166e-8,0.0033824647851254143,-5.981713959083937e-5,9.1151422106769e-8,0.003383003169851391,-5.9914358833980524e-5,9.130033548932249e-8,0.0033835175357943767,-5.9901254032734106e-5,9.126278647579509e-8,0.0033839605590798446,-5.980890433849116e-5,9.10926902260356e-8,0.00338431099616989,-5.968366488858203e-5,9.086948355865654e-8,0.0033845727837585357,-5.9570442762593056e-5,9.066948346775116e-8,0.0033847670858004075,-5.950243521857609e-5,9.05484296124944e-8,0.0033849232362922243,-5.9497727807565615e-5,9.053594275132374e-8,0.0033850716583332255,-5.956024397003957e-5,9.063751388399143e-8,0.0033852393421935963,-5.9682490187505253e-5,9.083949487511646e-8,0.0033854472176725985,-5.984859127500225e-5,9.111441080009529e-8,0.0033857086133339863,-6.003720459463659e-5,9.142588647628522e-8,0.0033860284271986017,-6.022439650227471e-5,9.173340583043047e-8,0.003386402955846923,-6.038656005091193e-5,9.199713865518988e-8,0.003386820462731965,-6.0503374088305864e-5,9.218289744117541e-8,0.003387262658810295,-6.05606230682693e-5,9.226693315388558e-8,0.0033877071395750856,-6.0552452997181255e-5,9.223981379163578e-8,0.0033881305330445235,-6.048266726105932e-5,9.210864890465263e-8,0.0033885120041810286,-6.036487174837796e-5,9.189727295160823e-8,0.003388836782278121,-6.022136221100909e-5,9.164417689053099e-8,0.003389099364723984,-6.008071140194549e-5,9.139814912203612e-8,0.003389306087909998,-5.9974056769629564e-5,9.121173103792565e-8,0.0033894766507592314,-5.992991778520634e-5,9.113234376727132e-8,0.0033896436217253243,-5.9967392439029444e-5,9.119094033650632e-8,0.003389848331184142,-6.00884494472235e-5,9.138938243016609e-8,0.003390131696696725,-6.027176738671097e-5,9.169052134537972e-8,0.003390520408645742,-6.0472489173007385e-5,9.20181223124543e-8,0.003391013048776062,-6.0632291852483944e-5,9.227391611926006e-8,0.003391574685345615,-6.069936708195099e-5,9.237117323434914e-8,0.0033921465752053356,-6.0649508463182645e-5,9.227013011226155e-8,0.003392668019375996,-6.049561955058757e-5,9.199390213601754e-8,0.003393098109249708,-6.027985582758634e-5,9.161498325294656e-8,0.003393425788317697,-6.005472021645174e-5,9.12229510324662e-8,0.00339366621882231,-5.986502345047448e-5,9.089367784604274e-8,0.003393849764889761,-5.973824800765525e-5,9.067301795341194e-8,0.0033940108887349028,-5.9683418753718195e-5,9.057517474706375e-8,0.0033941806177451347,-5.969475502631139e-5,9.058927390461232e-8,0.0033943828082887316,-5.9756555264083074e-5,9.068792616803152e-8,0.0033946329021984417,-5.984744069403636e-5,9.083450585144963e-8,0.003394937808251754,-5.994358255246006e-5,9.098854172687638e-8,0.003395296161910116,-6.002127117598997e-5,9.110993548500498e-8,0.003395698804414143,-6.0059267214638514e-5,9.116285658288206e-8,0.0033961296425301405,-6.004122350292775e-5,9.111984405853812e-8,0.0033965672449549665,-5.995817702591761e-5,9.096608893871411e-8,0.0033969875056327195,-5.9810681332088226e-5,9.070310529653611e-8,0.0033973673472186662,-5.960989551896998e-5,9.035055940505286e-8,0.0033976890073721226,-5.937702862808381e-5,8.994519524467432e-8,0.00339794414966279,-5.914078600227383e-5,8.953626954603158e-8,0.00339813686265762,-5.893285864413488e-5,8.91776383701858e-8,0.0033982846760873316,-5.8782022201718587e-5,8.891757350029357e-8,0.0033984170426695744,-5.8707756459061303e-5,8.878796990728907e-8,0.0033985710041651773,-5.8714419523522015e-5,8.879474808736464e-8,0.003398783964213327,-5.8787308590801815e-5,8.891163690828701e-8,0.003399084097724401,-5.889244323337396e-5,8.908026373626042e-8,0.003399480270250761,-5.898203293481756e-5,8.921967011645284e-8,0.0033999551699554283,-5.900646431000797e-5,8.924656326463904e-8,0.003400466358786225,-5.893049216975236e-5,8.91024588459512e-8,0.003400957801068039,-5.8747104648884236e-5,8.877683281588798e-8,0.003401378527359106,-5.848118000125292e-5,8.831304298309702e-8,0.0034016995373273343,-5.817987411373497e-5,8.779181892187154e-8,0.0034019205448226966,-5.789489120259509e-5,8.730103063936285e-8,0.0034020649231812825,-5.7666180030203005e-5,8.690798801868969e-8,0.003402168049287801,-5.751375176227864e-5,8.664571506488682e-8,0.003402265858276145,-5.743804869788241e-5,8.651389470980682e-8,0.00340238747932283,-5.742519852330234e-5,8.64881096032888e-8,0.0034025522455255973,-5.7453234933997976e-5,8.653057385184077e-8,0.0034027695489980392,-5.7497130460310654e-5,8.659865614011625e-8,0.003403039886903058,-5.753221388492227e-5,8.665054230622828e-8,0.0034033560870460524,-5.753644074444263e-5,8.664895352331391e-8,0.0034037044047870047,-5.7492186034072585e-5,8.656414307834132e-8,0.003404065680014834,-5.738807359108861e-5,8.637705347880114e-8,0.0034044170305128105,-5.722099116240365e-5,8.60828262613509e-8,0.003404734597935735,-5.6997926909140374e-5,8.569395943787588e-8,0.003404997558905359,-5.6736793275923886e-5,8.524163215191012e-8,0.0034051929890715296,-5.646520876211743e-5,8.477344074418974e-8,0.003405320408160798,-5.621648018227168e-5,8.434631513995815e-8,0.003405394300451476,-5.6022900264124296e-5,8.40149123124777e-8,0.0034054430646795236,-5.590772696450894e-5,8.381791884209707e-8,0.0034055038606741876,-5.587815564824331e-5,8.376626228374444e-8,0.0034056142384550816,-5.59216390476811e-5,8.383721738396868e-8,0.003405802567121793,-5.600706841995555e-5,8.397686437719106e-8,0.003406079762115114,-5.609104831024885e-5,8.411111539414267e-8,0.0034064347003346877,-5.6128202268790945e-5,8.416335082003054e-8,0.0034068351738956544,-5.6083285215666045e-5,8.407483916197228e-8,0.003407235151776666,-5.594181500695267e-5,8.382243623901492e-8,0.0034075871596243503,-5.5715353849958e-5,8.342714398589868e-8,0.0034078560389337632,-5.543856994368361e-5,8.294878555047174e-8,0.0034080288015259303,-5.5158405656903775e-5,8.246741739171249e-8,0.003408116556022004,-5.491960304745137e-5,8.20587213493105e-8,0.0034081483496585887,-5.475262430635319e-5,8.17736335484883e-8,0.0034081606287834965,-5.466819510979342e-5,8.162935251217643e-8,0.003408187213574958,-5.465879991060622e-5,8.161218884734959e-8,0.0034082529479952245,-5.470438823302094e-5,8.168747464274309e-8,0.0034083714747449156,-5.477893708194855e-5,8.181075694408507e-8,0.0034085458513296286,-5.4855751000708015e-5,8.193669718795236e-8,0.003408770414545297,-5.4910925975911326e-5,8.202480039048432e-8,0.003409032781106392,-5.4925363401297566e-5,8.204274072682829e-8,0.0034093155318804143,-5.488606600123461e-5,8.196858076576507e-8,0.0034095977133735593,-5.478735913882586e-5,8.179294852554372e-8,0.0034098566636729913,-5.463228818846857e-5,8.1521508229844755E-08,0.003410070752139286,-5.443391476149148e-5,8.117715796819658e-8,0.0034102233957102024,-5.4215684339399623e-5,8.0800505879973e-8,0.003410308068531649,-5.400958289018258e-5,8.044648266424068e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json new file mode 100644 index 0000000000..d5f6513882 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":22000,"numberOfSamples":1000,"samples":[0.003410332914201753,-5.3850894022675106e-5,8.017517098961131e-8,0.003410322528879365,-5.376958194615e-5,8.003701237438996e-8,0.0034103145652221627,-5.3780481135696216e-5,8.005617875605212e-8,0.0034103506775372276,-5.3876274061593275e-5,8.021888857849169e-8,0.003410464307410866,-5.402707135418975e-5,8.047308167596654e-8,0.003410669971601388,-5.4187778507499705e-5,8.074133887896081e-8,0.003410958362427396,-5.431078402439631e-5,8.094271511350002e-8,0.0034112988966924413,-5.435925986441926e-5,8.101538020005893e-8,0.0034116483046836123,-5.431671386401488e-5,8.093263501288651e-8,0.0034119621492173344,-5.41904204198061e-5,8.070834304160092e-8,0.0034122059256284677,-5.400841636122217e-5,8.039138838903804e-8,0.0034123629141804617,-5.38113276447821e-5,8.005145827068325e-8,0.003412436926427523,-5.3641509849942013e-5,7.976047048128742e-8,0.0034124495366027988,-5.3532666321671336e-5,7.957504010808949e-8,0.0034124330661485227,-5.350283981451321e-5,7.952484351765614e-8,0.0034124218722404974,-5.3552370565715433e-5,7.960947036368768e-8,0.0034124447457084236,-5.3666539079328896e-5,7.980316491937519e-8,0.0034125202858526367,-5.382106091332426e-5,8.00642647210325e-8,0.0034126555868305777,-5.398815305369993e-5,8.034545908014444e-8,0.0034128473776592204,-5.414152490629849e-5,8.06021342297411e-8,0.0034130843642180496,-5.425966542015235e-5,8.079783644736344e-8,0.0034133497512128354,-5.4327618445658844e-5,8.090725685897239e-8,0.003413623435855102,-5.4337869912637006e-5,8.091781018622006e-8,0.003413883907454681,-5.429097539492461e-5,8.083081580105819e-8,0.0034141102665403125,-5.419622361028624e-5,8.066268207707981e-8,0.0034142849136512055,-5.407215162017978e-5,8.044570051432896e-8,0.00341439730488426,-5.394617096384391e-5,8.022718223765307e-8,0.003414448551881033,-5.385201336379878e-5,8.006482802604857e-8,0.0034144554442633347,-5.382365677022172e-5,8.001619006311863e-8,0.003414451133210198,-5.388562472720168e-5,8.012215438343905e-8,0.0034144795115925615,-5.4042269894100845e-5,8.038890648236031e-8,0.003414582717752921,-5.427144088560471e-5,8.077748959286917e-8,0.0034147858366957128,-5.452785635760065e-5,8.120990068433355e-8,0.003415086335408109,-5.475685197042185e-5,8.159276299340531e-8,0.0034154541675420077,-5.491264135361651e-5,8.184854560101504e-8,0.003415842328369328,-5.497241133679643e-5,8.19395012048398e-8,0.0034162020648540446,-5.494079694397467e-5,8.187500799224558e-8,0.0034164960597480513,-5.484509224563486e-5,8.170297816008171e-8,0.003416705855690934,-5.472520370648011e-5,8.14923147861858e-8,0.0034168331491478627,-5.462263220717812e-5,8.131389578844407e-8,0.003416896425673255,-5.457135459703978e-5,8.122506662590603e-8,0.003416924864737033,-5.459196701501527e-5,8.125992201462119e-8,0.0034169512624180483,-5.468942093895768e-5,8.142580537893595e-8,0.0034170054267853647,-5.485407812356393e-5,8.17054100824689e-8,0.0034171092005408077,-5.506533196508355e-5,8.206310391954363e-8,0.0034172737893538854,-5.529662285957986e-5,8.24534661992994e-8,0.0034174994368857004,-5.552057481406241e-5,8.282992315001632e-8,0.0034177769459542693,-5.5713266654435735e-5,8.315188937008223e-8,0.0034180902481047706,-5.58571185539423e-5,8.338960767448971e-8,0.0034184192209990544,-5.594239734507513e-5,8.352672714006698e-8,0.0034187422744122974,-5.5967759795049916e-5,8.356130894842189e-8,0.0034190386613258106,-5.5940313585960716e-5,8.350600300356605e-8,0.0034192907451060053,-5.5875438829459745e-5,8.338772029482915e-8,0.0034194865853197334,-5.5796286755981725e-5,8.324661178228372e-8,0.0034196231618546383,-5.573239332743332e-5,8.313343416160889e-8,0.0034197100026956712,-5.571629566234729e-5,8.310353167794132e-8,0.0034197718373557965,-5.5777017730924494e-5,8.320565011677361e-8,0.0034198476546487924,-5.593045265235306e-5,8.346570742357244e-8,0.0034199832418701356,-5.6169307155583144e-5,8.387000547866622e-8,0.0034202166393619616,-5.64584557493018e-5,8.435767926960611e-8,0.0034205614639800535,-5.67418663020452e-5,8.483274082655738e-8,0.003420997727034218,-5.696140593963007e-5,8.51962311929662e-8,0.0034214773558268368,-5.707879301142648e-5,8.538365211417604e-8,0.0034219421419332224,-5.708851047552745e-5,8.538688805157197e-8,0.0034223438059788605,-5.701585691614104e-5,8.525060072019697e-8,0.0034226564954146083,-5.690413699843295e-5,8.504993386503595e-8,0.003422878920363075,-5.679944106094893e-5,8.486413227000239e-8,0.0034230291674335464,-5.6739176541925223e-5,8.475681081074442e-8,0.003423136660697731,-5.6746178962097036e-5,8.476606168603778e-8,0.0034232343831674863,-5.682746769406769e-5,8.490269488349289e-8,0.0034233527024106186,-5.697594757338996e-5,8.515352124084064e-8,0.003423515048462373,-5.717372366496969e-5,8.548725451920484e-8,0.003423735360724929,-5.739623453008071e-5,8.586162778920173e-8,0.0034240171921175824,-5.761661689063496e-5,8.623076555625632e-8,0.003424354282394761,-5.7809781532945634e-5,8.655200921001188e-8,0.003424732337212298,-5.795580012171021e-5,8.679159414405439e-8,0.0034251316600929604,-5.804228112995662e-5,8.692867283680107e-8,0.0034255301389273553,-5.8065571370678764e-5,8.695739993818016e-8,0.0034259061435299876,-5.8030942708281336e-5,8.68873016976559e-8,0.003426241192945239,-5.7952061490074354e-5,8.674237096252997e-8,0.003426522442310002,-5.784987818084441e-5,8.655906513984539e-8,0.0034267450710929025,-5.775090698206635e-5,8.638314938058331e-8,0.0034269146613510586,-5.768461436478088e-5,8.626498016672915e-8,0.0034270492888037753,-5.7679206341423455e-5,8.625215296635437e-8,0.0034271801115048016,-5.775513150463932e-5,8.637847340111039e-8,0.003427348318837799,-5.791673040416302e-5,8.66500111928406e-8,0.003427596290732135,-5.814466196255829e-5,8.703260278195282e-8,0.0034279529627239238,-5.8394327194921334e-5,8.744949479355945e-8,0.003428418470586544,-5.860576263431353e-5,8.77983298726461e-8,0.00342895785967562,-5.872474275422114e-5,8.79870966366347e-8,0.0034295111225311516,-5.872520138069127e-5,8.797231646130829e-8,0.0034300159367414112,-5.8619276575255356e-5,8.777608739665868e-8,0.003430429936364875,-5.8449346719175054e-5,8.747221956219683e-8,0.0034307409539403753,-5.8269005362368705e-5,8.715330218992734e-8,0.0034309636874953423,-5.812488879415304e-5,8.689927969838687e-8,0.0034311290547955646,-5.804651663753494e-5,8.676002574361577e-8,0.0034312730856115364,-5.804431513186724e-5,8.675224016919222e-8,0.003431428842749821,-5.811258599710215e-5,8.686495556850346e-8,0.003431621833748501,-5.823424073945281e-5,8.706799112634763e-8,0.0034318679871170456,-5.838549788451625e-5,8.732014432177786e-8,0.0034321731793053077,-5.854001187955921e-5,8.757621999925782e-8,0.0034325337535511193,-5.8672442465983527E-05,8.779300375802679e-8,0.0034329377969641297,-5.876149483775846e-5,8.79343338304245e-8,0.0034333670820067457,-5.8792422402358875e-5,8.7975316488367e-8,0.0034337996533433854,-5.875886549720411e-5,8.790547650809066e-8,0.0034342129023982814,-5.8663743295375374e-5,8.773032040338553e-8,0.0034345867528595554,-5.8519040728693963E-05,8.747098149349937e-8,0.00343490662495616,-5.834457618854895e-5,8.716204139286165e-8,0.003435165997133961,-5.816584043444344e-5,8.684766473704805e-8,0.003435368377604481,-5.8010940498476064e-5,8.657614158669101e-8,0.003435528469312809,-5.79066894188021e-5,8.639300030976978e-8,0.0034356721817477088,-5.787374966119817e-5,8.633265875065238e-8,0.0034358346431882215,-5.7920805816179714e-5,8.640865043476558e-8,0.00343605489737805,-5.8038637339463834e-5,8.660388209222903e-8,0.0034363663675272185,-5.8196543664505935e-5,8.686495377469283e-8,0.003436784132872785,-5.834498191690136e-5,8.710692888866458e-8,0.003437293776835478,-5.8427735873480615e-5,8.72341254787051e-8,0.0034378497110881335,-5.8402092841660325e-5,8.717442687949159e-8,0.0034383882973978448,-5.8257765502926945e-5,8.691145603639477e-8,0.003438851408713721,-5.802240303565348e-5,8.649384664598423e-8,0.0034392073380863355,-5.774932951993929e-5,8.601401185593557e-8,0.0034394577744100104,-5.749559608304214e-5,8.557022184800596e-8,0.003439630233895451,-5.7303386349150334e-5,8.523451882013677e-8,0.0034397639148655676,-5.71921018810065e-5,8.503923334835471e-8,0.003439897152082377,-5.716002300749245e-5,8.498019404726612e-8,0.0034400599773055985,-5.719061355114749e-5,8.502796230293353e-8,0.0034402713672934656,-5.725932344600479e-5,8.513976877355545e-8,0.0034405393098027363,-5.7338962376120295e-5,8.52687687250456e-8,0.0034408620305790096,-5.7403458295962594e-5,8.5370360365332e-8,0.0034412295639111826,-5.74305399376233e-5,8.540661686558558e-8,0.0034416255077720182,-5.7403819017073256e-5,8.534975049941572e-8,0.0034420290593737894,-5.7314494475115625e-5,8.518502074925517e-8,0.0034424175204084556,-5.7162649725107814e-5,8.491300299198063e-8,0.0034427693744096327,-5.695780291358059e-5,8.45505703435799e-8,0.003443067694390436,-5.671827027498391e-5,8.412977141244271e-8,0.0034433033585062117,-5.6469137408961e-5,8.369422260683416e-8,0.003443477522363603,-5.6238888006486065e-5,8.329312068593308e-8,0.0034436028265143223,-5.6054927768332085e-5,8.297335687745774e-8,0.0034437028776761053,-5.593849466785818e-5,8.277067663956046e-8,0.0034438096971042514,-5.589961405993521e-5,8.270110737924363e-8,0.0034439589152577502,-5.593284157050621e-5,8.275395289466784e-8,0.0034441825909026142,-5.601493075148707e-5,8.288821797121621e-8,0.0034445001635288017,-5.610621465702858e-5,8.303535737202917e-8,0.0034449095226591654,-5.615762951966539e-5,8.311147869532069e-8,0.0034453821233687756,-5.612393855092263e-5,8.303989847633601e-8,0.003445866927768903,-5.598013860657117e-5,8.277898571579688e-8,0.003446305117155568,-5.573359851034611e-5,8.234268399454156e-8,0.003446650688170405,-5.54237541297035e-5,8.179975395214818e-8,0.003446886420895123,-5.5107576665760024e-5,8.124862318937609e-8,0.0034470267259821934,-5.483846667724602e-5,8.078097385183255e-8,0.00344710766051307,-5.464993566767857e-5,8.04536936374894e-8,0.003447171789706657,-5.455038535028025e-5,8.028012646114274e-8,0.0034472558389312216,-5.452741901483898e-5,8.02378602589795e-8,0.003447384454009153,-5.455622510521429e-5,8.028347230580017e-8,0.003447569166450617,-5.460748845901849e-5,8.036626359875367e-8,0.003447810144196527,-5.465292154467429e-5,8.043768722291936e-8,0.0034480987268725206,-5.466849659176279e-5,8.045671557812648e-8,0.003448419783191651,-5.46362499989435e-5,8.039277888315682e-8,0.003448753772593059,-5.45454637568273e-5,8.022774113086465e-8,0.0034490787902391605,-5.439364106836301e-5,7.995762374625734e-8,0.003449372967644381,-5.41872734508112e-5,7.959400330433788e-8,0.0034496174799257423,-5.394199608711304e-5,7.916430464845655e-8,0.003449800033082265,-5.368150494101013e-5,7.870985989025718e-8,0.0034499182123150364,-5.343472982432336e-5,7.828086678372597e-8,0.003449981722370573,-5.323117506956941e-5,7.792815673433031e-8,0.0034500124919465153,-5.30949612652312e-5,7.769278778854012e-8,0.0034500419488425822,-5.303878495366926e-5,7.759565134357626e-8,0.003450105483013042,-5.305939695552917e-5,7.762989261880157e-8,0.0034502349108771345,-5.3136052000312036E-05,7.775860628781301e-8,0.00345045036327994,-5.3232896856317525e-5,7.791934553656435e-8,0.0034507534559009615,-5.330563477313901e-5,7.803586216602371e-8,0.0034511239123253042,-5.331189940292976e-5,7.80359816725961e-8,0.0034515217741313154,-5.3223411868618484e-5,7.787229296285301e-8,0.0034518963778732035,-5.303630985682997e-5,7.753954870439826e-8,0.003452200772443476,-5.277494601652743e-5,7.708083438603485e-8,0.0034524067233620208,-5.24857622131667e-5,7.657676351766069e-8,0.003452513539318852,-5.222238745671445e-5,7.611970105647155e-8,0.003452546358006263,-5.202834487641089e-5,7.578401494859984e-8,0.003452545316805372,-5.1925238857953614e-5,7.56059228122419e-8,0.0034525517079226162,-5.1910531969244896e-5,7.55799748568084e-8,0.0034525973425899702,-5.1963341595560646e-5,7.566935879164173e-8,0.003452699860306806,-5.2053492925631584e-5,7.582168477769657e-8,0.003452863075258511,-5.2149607426261665e-5,7.598291155508565e-8,0.0034530799060755258,-5.222439818684115e-5,7.61063070119408e-8,0.003453335818338361,-5.2257343532068194e-5,7.615685892232103e-8,0.003453611766785339,-5.223571891965294e-5,7.61129377116946e-8,0.0034538864899658996,-5.215494408708145e-5,7.596690383151867e-8,0.003454138506384482,-5.201882998128307e-5,7.572562427973521e-8,0.003454348337076918,-5.183978826068164e-5,7.541091271463072e-8,0.0034545013314538756,-5.1638552963418784e-5,7.505903324803353e-8,0.003454591043269122,-5.144265642680074e-5,7.47179322561575e-8,0.0034546224963198295,-5.128290588661151e-5,7.444094709790633e-8,0.003454614029832736,-5.118756231866206e-5,7.427657654620211e-8,0.0034545960964780477,-5.117499667449252e-5,7.425575471974446e-8,0.0034546059759224725,-5.124696696840789e-5,7.438038383349255e-8,0.003454678971542103,-5.13853618139435e-5,7.46180167622108e-8,0.003454838496800186,-5.155451806553497e-5,7.490622976898416e-8,0.003455088410098183,-5.170923490366474e-5,7.516676020545438e-8,0.0034554104312331923,-5.18063784397559e-5,7.53256558047392e-8,0.0034557677626890567,-5.181660232781692e-5,7.533338722547459e-8,0.003456114043853787,-5.173270086815992e-5,7.517894604581043e-8,0.0034564052677747885,-5.157212308820495e-5,7.48937718027089e-8,0.003456611436614271,-5.1372648185342906e-5,7.454392055414663e-8,0.0034567244663298784,-5.118206849108857e-5,7.421205085109125e-8,0.0034567595924578005,-5.104487112438851e-5,7.397444303572169e-8,0.0034567496932292933,-5.0990411029647274e-5,7.388079046187029e-8,0.0034567348219838017,-5.1026634462844346E-05,7.394368941315555e-8,0.0034567511208470503,-5.1140910162072285e-5,7.41404001886787e-8,0.003456822969488365,-5.130640701071599e-5,7.442407063670418e-8,0.0034569600809666373,-5.149059048477161e-5,7.473844540174441e-8,0.003457158836079232,-5.166263101478568e-5,7.503054191154755e-8,0.0034574058624226842,-5.179814342816616e-5,7.525864485773623e-8,0.0034576819982162126,-5.188131487414444e-5,7.53958236160267e-8,0.003457965624434055,-5.190529764163641e-5,7.543055726802653e-8,0.003458235153642075,-5.187182989119657e-5,7.536613158997809e-8,0.003458470988800748,-5.179074706531707e-5,7.52198852644471e-8,0.0034586575036994354,-5.1679536585510255e-5,7.502247538759579e-8,0.0034587855033521653,-5.156254212189298e-5,7.481641900418598e-8,0.0034588552057932243,-5.1469030724573484e-5,7.465256143383775e-8,0.0034588791061978532,-5.142920657003421e-5,7.458297859873786e-8,0.003458883218149259,-5.1467660711166246e-5,7.464955268013278e-8,0.0034589045776179444,-5.159510836468649e-5,7.48697763858947e-8,0.0034589835250980615,-5.180135000044591e-5,7.522485150187091e-8,0.0034591517840109193,-5.205370320062124e-5,7.56573232920082e-8,0.0034594206555359705,-5.2303828254811026e-5,7.608317761780516e-8,0.0034597750906966754,-5.250174966429808e-5,7.641623908985145e-8,0.0034601771049745287,-5.2611539439694236e-5,7.659526793472266e-8,0.003460577222136936,-5.262200185778321e-5,7.660223703442587e-8,0.003460928903507887,-5.254861496345348e-5,7.646534203758294e-8,0.003461200559315436,-5.2427345790902366e-5,7.624789704143432e-8,0.0034613819623500147,-5.230371513415596e-5,7.602909490634815e-8,0.00346148446467581,-5.2220931733726785e-5,7.58833715008536e-8,0.003461536103359664,-5.2210117968981436e-5,7.586364467457609e-8,0.003461573517811942,-5.2284544913011865e-5,7.599167543503633e-8,0.0034616329485504336,-5.243864613206289e-5,7.625673698865155e-8,0.003461742549106104,-5.265142211148723e-5,7.662177846795173e-8,0.003461917703165235,-5.2892782274308036e-5,7.703449448843473e-8,0.0034621599737674246,-5.313072477304534e-5,7.74396760194996e-8,0.0034624591084389793,-5.33374098966768e-5,7.778955053911857e-8,0.003462796779292467,-5.349304510582412e-5,7.805033191515012e-8,0.003463150686187144,-5.3587487694671127e-5,7.820488911072816e-8,0.0034634980867577683,-5.362014291759816e-5,7.825256020973388e-8,0.0034638184347490337,-5.35989854743125e-5,7.820751398896041e-8,0.0034640953366142095,-5.353936163065365e-5,7.809672470592285e-8,0.0034643182806015373,-5.3462782486652334e-5,7.795785220255605e-8,0.0034644845501561154,-5.339545627403919e-5,7.783656035226323e-8,0.0034646014413177184,-5.336592005983549e-5,7.778221516267927e-8,0.0034646882637985664,-5.3400881599815127e-5,7.78405393635882e-8,0.003464776653159077,-5.351867683920702e-5,7.804231285445772e-8,0.003464906957150965,-5.372111733504216e-5,7.838949782169935e-8,0.0034651189235659127,-5.398689725856593e-5,7.884418711991946e-8,0.0034654377510551313,-5.427171287388532e-5,7.932912268318844e-8,0.003465861181889111,-5.45189747063227e-5,7.974637922620187e-8,0.0034663557995089868,-5.4679006723517416e-5,8.001057810235294e-8,0.003466866832075317,-5.4727667638690595e-5,8.008101605182355e-8,0.003467337213583027,-5.467430917764118e-5,7.997525515932372e-8,0.0034677259185634294,-5.45558137956383e-5,7.975848386026634e-8,0.0034680175758430914,-5.4421850197762574e-5,7.951758779610465e-8,0.003468221945391668,-5.431943863471243e-5,7.93341221303494e-8,0.003468366749984431,-5.4282189894998705e-5,7.926564782173139e-8,0.003468488253575451,-5.432554626942201e-5,7.933775100923389e-8,0.003468622577673265,-5.4446940976185534e-5,7.954473091422483e-8,0.00346879910386759,-5.4629139136083834e-5,7.985575566520995e-8,0.003469036315266957,-5.484531500646757e-5,8.022385234336574e-8,0.0034693400970225562,-5.506482644748267e-5,8.05959068464886e-8,0.003469704347103154,-5.525874833196587e-5,8.09221138287859e-8,0.003470113426848338,-5.54043045866477e-5,8.116348069551332e-8,0.003470545719066106,-5.548767615842907e-5,8.129655797854296e-8,0.0034709775149081618,-5.550506450046016e-5,8.131522490515083e-8,0.0034713865350294564,-5.546223505877917e-5,8.122990831469518e-8,0.00347175466700389,-5.537307165347207e-5,8.10651077332558e-8,0.003472069935483391,-5.5257707024367603e-5,8.085614780070984e-8,0.0034723279767847086,-5.514048489525153e-5,8.064555763367976e-8,0.0034725332728849033,-5.504767565387728e-5,8.047894670947377e-8,0.0034727002510506733,-5.5004592720721175e-5,8.039983781883514e-8,0.003472853897452726,-5.5031486682279284e-5,8.044249502323219e-8,0.0034730286883273595,-5.513778809238864e-5,8.062209526950794e-8,0.003473263973229728,-5.531544130156531e-5,8.092351809161323e-8,0.0034735943076693245,-5.553413717659481e-5,8.129347436960563e-8,0.003474035665897499,-5.574326882078972e-5,8.16441259001113e-8,0.0034745731955609315,-5.5884742086398796e-5,8.18752580591423e-8,0.0034751596486798657,-5.5914583892773785e-5,8.19115493205368e-8,0.003475729749079442,-5.5822556153648676e-5,8.173640984494093e-8,0.0034762246796353497,-5.563705319293436e-5,8.140033666182622e-8,0.003476612701492186,-5.541203574155975e-5,8.099801039245487e-8,0.003476895422108325,-5.52051656998577e-5,8.063001150121857e-8,0.0034771002354880218,-5.50597528893753e-5,8.037124816213464e-8,0.003477266808137206,-5.499678333889154e-5,8.025718895626209e-8,0.003477434878777277,-5.501575513956466e-5,8.028567476587208e-8,0.0034776364077081026,-5.510010155564282e-5,8.042677847876208e-8,0.0034778919129647623,-5.522370891534653e-5,8.063443431098723e-8,0.003478209655577147,-5.53567664624354e-5,8.085668027157581e-8,0.003478586484780268,-5.547053781197861e-5,8.104383769654996e-8,0.003479009745324267,-5.5541137233202974e-5,8.115488223399064e-8,0.0034794599661624203,-5.55522999409954e-5,8.116209039532e-8,0.00347991406310937,-5.5497055559913984e-5,8.105385714697197e-8,0.00348034877409459,-5.5378226962704636e-5,8.083554656447708e-8,0.003480743967899695,-5.5207701396177e-5,8.052824678244802e-8,0.003481085399356866,-5.500462615502403e-5,8.016563989201027e-8,0.003481366669257658,-5.4792906661938594e-5,7.978960191727658e-8,0.0034815903954937507,-5.459831114198394e-5,7.944505128213398e-8,0.003481768645435652,-5.444530524158718e-5,7.917429462220676e-8,0.003481922641158277,-5.435363020679066e-5,7.901097650404148e-8,0.003482081557943241,-5.43344611388244e-5,7.897344901624152e-8,0.0034822796949849086,-5.438607219406785e-5,7.90574880741661e-8,0.0034825508886991334,-5.4489814677525574e-5,7.922969966297901e-8,0.003482919510198329,-5.460863179618924e-5,7.942530879637457e-8,0.00348338922468968,-5.4691530175031036e-5,7.955606784582527e-8,0.0034839341482262006,-5.468684887826709e-5,7.953314250976801e-8,0.003484500044929782,-5.456236411226566e-5,7.930171563250027e-8,0.003485020395764967,-5.432242661163013e-5,7.887051211495277e-8,0.003485441830665722,-5.4009666442778456e-5,7.831463037203127e-8,0.003485744308334187,-5.3687830051453043e-5,7.774555423085291e-8,0.003485944356059249,-5.341619454208322e-5,7.726643890430705e-8,0.0034860824605426953,-5.323068031905013e-5,7.69391413336341e-8,0.003486205192699337,-5.313887848336849e-5,7.677573716104043e-8,0.003486351616487765,-5.312585818689202e-5,7.674902644824243e-8,0.003486546989851855,-5.3163832246076e-5,7.680975614919294e-8,0.003486802071512451,-5.322081037736187e-5,7.690188262653895e-8,0.003487115234474545,-5.326655085161755e-5,7.697289095930539e-8,0.003487475361305784,-5.3276107450321254e-5,7.697977967690026e-8,0.00348786468748232,-5.323188756023941e-5,7.689243976502786e-8,0.003488261541112851,-5.3124867656400085e-5,7.669564695902987e-8,0.0034886431118577687,-5.2955187271283527e-5,7.639006967152842e-8,0.0034889883345022694,-5.273207584356439e-5,7.599217164183895e-8,0.00348928082718179,-5.247287143335613e-5,7.553253065060545e-8,0.0034895115406157772,-5.220092938007728e-5,7.505217138911657e-8,0.0034896806403166163,-5.194253721386278e-5,7.45970984578306e-8,0.003489798281891112,-5.17231700616895e-5,7.421163449310192e-8,0.003489884081885023,-5.156346255637453e-5,7.393127924950925e-8,0.0034899651917605482,-5.1475349070217194e-5,7.37759579390884e-8,0.0034900730046242873,-5.145880727187514e-5,7.374448490150087e-8,0.0034902384487222934,-5.149957504391051e-5,7.38108940008001e-8,0.003490485713360978,-5.1568581097192085e-5,7.392383226896056e-8,0.0034908247516596694,-5.162452953725788e-5,7.401135645851316e-8,0.0034912442178913756,-5.162129070334261e-5,7.399384833356589e-8,0.0034917082870866084,-5.152067046187914e-5,7.380600775763368e-8,0.003492161919526589,-5.1307906470345714e-5,7.342344472404727e-8,0.0034925468003312904,-5.100251708159784e-5,7.28812436475048e-8,0.0034928230231711763,-5.065567102917774e-5,7.22692085054129e-8,0.00349298480607223,-5.0332008284307815e-5,7.170010948102879e-8,0.003493060486880091,-5.008509810197167e-5,7.126687367301145e-8,0.0034930978108644877,-4.994040408769448e-5,7.10129659368693e-8,0.003493144812116986,-4.989292212429899e-5,7.092852991350264e-8,0.003493236329890927,-4.991616821749949e-5,7.09664233386691e-8,0.003493389382240401,-4.997451260323819e-5,7.106400377600212e-8,0.0034936049670886314,-5.003303046878982e-5,7.116036558566628e-8,0.0034938724850190725,-5.006315699024087e-5,7.120605641471014e-8,0.003494174181710002,-5.004500801825621e-5,7.116689888635155e-8,0.003494488647240114,-4.9967898958017656e-5,7.10247226686362e-8,0.003494793491455296,-4.983017838931351e-5,7.077701977191036e-8,0.0034950676495118685,-4.963883343406836e-5,7.043629688622425e-8,0.0034952936893218015,-4.940884123717768e-5,7.00290073852739e-8,0.0034954602703394025,-4.91619116469257e-5,6.959337044053813e-8,0.003495564525333123,-4.8924164351532744e-5,6.917524860206665e-8,0.0034956137545527114,-4.872255946766232e-5,6.882178267966077e-8,0.003495625715726868,-4.858035828766625e-5,6.857332667336269e-8,0.003495626962793271,-4.8512296531638016e-5,6.845495049254806e-8,0.003495649053141319,-4.852049680516395e-5,6.846936904534974e-8,0.00349572299679345,-4.859225484338337e-5,6.859329915473242e-8,0.0034958728136478237,-4.870052145709375e-5,6.877863372874697e-8,0.003496109274904872,-4.8807474643686194e-5,6.895900381066696e-8,0.0034964250870034323,-4.887130098211752e-5,6.906179269833887e-8,0.0034967931639454048,-4.885581409325789e-5,6.902485348345956e-8,0.0034971698712657363,-4.874139651093061e-5,6.881530246607359e-8,0.0034975044920154213,-4.853405294472491e-5,6.84449092255104e-8,0.0034977539089692195,-4.82679369446728e-5,6.797415829244196e-8,0.0034978977356623906,-4.799750824878962e-5,6.749837862946622e-8,0.003497946438249529,-4.778016802970108e-5,6.71174247409688e-8,0.003497937170337883,-4.765667743097292e-5,6.690162413586374e-8,0.0034979190953097782,-4.763908471093491e-5,6.687094352623798e-8,0.003497936251514583,-4.771117288133363e-5,6.699607854306233e-8,0.0034980160892215074,-4.783863709240464e-5,6.72164958349271e-8,0.0034981665960245093,-4.798196106874302e-5,6.746304065721289e-8,0.0034983797653029723,-4.810632101892896e-5,6.7675162011292e-8,0.003498637465113023,-4.818668505636025e-5,6.780961989824135e-8,0.003498916867361659,-4.820909523255125e-5,6.784251930616007e-8,0.0034991943722301896,-4.816994545602405e-5,6.77679407084832e-8,0.003499448182358842,-4.8074658565751284e-5,6.759564195017042e-8,0.003499660159392372,-4.793641707463699e-5,6.734892080114882e-8,0.003499817561197899,-4.777495464323169e-5,6.70625616249293e-8,0.0034999149556601225,-4.761498368904733e-5,6.678005875369204e-8,0.0034999561644388504,-4.7483672003196496e-5,6.654908362581237e-8,0.003499955598723389,-4.7406752130685654e-5,6.64145242188782e-8,0.003499937981419274,-4.7403373506660164e-5,6.64093764187308e-8,0.0034999354725625304,-4.748062569635709e-5,6.654518620862992e-8,0.0034999818663642855,-4.762947778629249e-5,6.680512211808298e-8,0.003500104737353191,-4.782411608126126e-5,6.714310459443665e-8,0.0035003176166506283,-4.802589279357225e-5,6.749101949715656e-8,0.0035006147541124916,-4.819155958831892e-5,6.777333062458293e-8,0.0035009704717046735,-4.8283900302600454e-5,6.79257035406021e-8,0.0035013438418472647,-4.828195062171539e-5,6.791269545624289e-8,0.0035016879794580935,-4.818789700989003e-5,6.77394776851162e-8,0.00350196195728518,-4.8028314713332036e-5,6.7453611515929e-8,0.0035021422800556846,-4.784851634702435e-5,6.713486096804716e-8,0.0035022301857497284,-4.770064526201016e-5,6.687425034339409e-8,0.0035022515726871335,-4.762872570098612e-5,6.674801281177754e-8,0.003502248809025409,-4.76559744371242e-5,6.6795665439382e-8,0.0035022673478896467,-4.777938593190681e-5,6.701087743219682e-8,0.003502342631637575,-4.7973344665574994e-5,6.734808187955503e-8,0.0035024922414820824,-4.819969702053791e-5,6.774024524213613e-8,0.003502715017307082,-4.841926028605082e-5,6.811897897486228e-8,0.0035029954034810603,-4.8600480484494276e-5,6.842952899629088e-8,0.003503309784163736,-4.872362633221379e-5,6.863790981889476e-8,0.0035036322351094896,-4.878127146575032e-5,6.873159448741184e-8,0.0035039386022962613,-4.877672372667128e-5,6.871671928860393e-8,0.003504208970165578,-4.87218399559206e-5,6.861430714964363e-8,0.003504429141433504,-4.863501729753385e-5,6.845682584882933e-8,0.00350459182981821,-4.853945290340068e-5,6.828516088744188e-8,0.0035046979735865453,-4.846124060565817e-5,6.814520400131455e-8,0.00350475808642424,-4.842667362547513e-5,6.808297903800876e-8,0.00350479302443529,-4.845822639406622e-5,6.813746753851686e-8,0.003504833027239744,-4.8569169986268695e-5,6.833115419174137e-8,0.003504913702238319,-4.8757838383985466e-5,6.866012446657687e-8,0.0035050683853181447,-4.900391199350466e-5,6.908782646579392e-8,0.0035053182256271995,-4.926964452673352e-5,6.954751938057267e-8,0.003505663509814919,-4.950767016413277e-5,6.995616209346973e-8,0.003506080502214955,-4.967398233611283e-5,7.023720489982495e-8,0.0035065262851390663,-4.974153435641874e-5,7.034430756266863e-8,0.003506950416802348,-4.970896615211756e-5,7.027638385694825e-8,0.003507309058355678,-4.960110682063593e-5,7.0078148342398e-8,0.003507576569966767,-4.9461571981689524e-5,6.982680430100155e-8,0.003507751260505524,-4.9340525835212706e-5,6.961036660223815e-8,0.0035078543380118467,-4.928155435713404e-5,6.950463542881697e-8,0.003507923017411245,-4.931120710474176e-5,6.955507505634865e-8,0.003508000088817847,-4.943373386134086e-5,6.976794205386932e-8,0.0035081230318595195,-4.9631997266688886e-5,7.011223942234489e-8,0.003508315707408989,-4.987372010955851e-5,7.053089174394624e-8,0.003508584634184765,-5.012067906449034e-5,7.095689951327328e-8,0.003508920154172877,-5.033779131119303e-5,7.13291488630146e-8,0.0035093011174319503,-5.0499608977751295e-5,7.16036029544808e-8,0.0035097008909079027,-5.059322819724562e-5,7.175822123658268e-8,0.003510092795370233,-5.0618099620991336e-5,7.179252228933486e-8,0.0035104540074803628,-5.058396686418179e-5,7.172395576915468e-8,0.0035107678630634256,-5.050815563358695e-5,7.15831936559844e-8,0.0035110250474179707,-5.041300190160958e-5,7.140965978633763e-8,0.003511224303772449,-5.0323602655051194e-5,7.124755864747469e-8,0.003511373081760116,-5.026556563032649e-5,7.114182180173342e-8,0.0035114881227789486,-5.026219499321855e-5,7.113303314780363e-8,0.003511595434404246,-5.0330578468163386e-5,7.125049337013055e-8,0.003511728512620591,-5.047647794780582e-5,7.15033405278639e-8,0.0035119233836461974,-5.0689046876978714e-5,7.187153222950117e-8,0.003512209769178392,-5.093800093324406e-5,7.230120436607415e-8,0.003512599955153083,-5.1176799888461815e-5,7.271049692322936e-8,0.003513080034794742,-5.135392592457402e-5,7.300940477436388e-8,0.003513609502076132,-5.14298349934786e-5,7.312941724983363e-8,0.0035141320281950124,-5.139216413429823e-5,7.305001548325024e-8,0.0035145936629104664,-5.1261041454466944e-5,7.28077595651944e-8,0.003514959887450534,-5.108168091747994e-5,7.248300624823855e-8,0.0035152241266274524,-5.090867675710344e-5,7.217204520177112e-8,0.0035154059396990682,-5.078968882418096e-5,7.195828527441259e-8,0.0035155420813633245,-5.075426745699315e-5,7.189270617613542e-8,0.0035156751083582306,-5.0809654038145116e-5,7.198679130075311e-8,0.003515843117254807,-5.094257374417173e-5,7.221607476825528e-8,0.0035160725094786714,-5.112494538587068e-5,7.253048594280297e-8,0.0035163744088703465,-5.132142690619098e-5,7.286773029032713e-8,0.0035167446049327736,-5.1497064920155425e-5,7.316666417595633e-8,0.003517166385541075,-5.1623642515698906e-5,7.337826896105822e-8,0.0035176151934762446,-5.168374224689177e-5,7.347259275945112e-8,0.0035180638474490854,-5.167220679053694e-5,7.344117159692746e-8,0.003518487230567752,-5.159533656149261e-5,7.329555446259182e-8,0.0035188657466365884,-5.146856119474064e-5,7.306321274190783e-8,0.0035191873567905307,-5.13134535075297e-5,7.278232032475649e-8,0.0035194484899109596,-5.1154771029381724e-5,7.249655785721567e-8,0.0035196543025420254,-5.101775638284942e-5,7.225031546170417e-8,0.0035198186084428556,-5.0925530397301455e-5,7.208400788541844e-8,0.0035199635105888586,-5.089622436322815e-5,7.202894163244655e-8,0.003520118343208592,-5.093945103045378e-5,7.210112224469392e-8,0.0035203169511922577,-5.105206016209678e-5,7.229397007328736e-8,0.003520592065648051,-5.1214188069510806e-5,7.2571689142489e-8,0.00352096625240208,-5.138810927673326e-5,7.286756429012272e-8,0.0035214411001403445,-5.1523353653888815e-5,7.309310451119305e-8,0.0035219896591436894,-5.15702050538723e-5,7.316168179423694e-8,0.0035225589618442157,-5.149859927706176e-5,7.302152157725176e-8,0.003523085668432638,-5.1313067895405906e-5,7.268175566529078e-8,0.003523518917940908,-5.105359802726036e-5,7.221375246224139e-8,0.003523838095962248,-5.0780520742168284e-5,7.17243210762634e-8,0.0035240564761216146,-5.0552185506667285e-5,7.13161973079306e-8,0.003524211505779421,-5.040730619616483e-5,7.105688273569124e-8,0.003524349502340482,-5.035813602950126e-5,7.096680808680643e-8,0.0035245122820342207,-5.039321453053906e-5,7.102455458373297e-8,0.003524729076631242,-5.0485092313253465e-5,7.1180850127246e-8,0.003525013583176288,-5.059899047337806e-5,7.137404304621766e-8,0.003525364590777378,-5.070022815478351e-5,7.154318300099117e-8,0.0035257686958330417,-5.075977742115368e-5,7.163764186847562e-8,0.003526204144558562,-5.075793251795897e-5,7.16233638631601e-8,0.003526645154897335,-5.06861406598159e-5,7.148591957241648e-8,0.003527066167471657,-5.0547118838004726e-5,7.123062042100954e-8,0.0035274455836368955,-5.03535175473795e-5,7.088014482938875e-8,0.003527768623758874,-5.012545639882056e-5,7.047021401502236e-8,0.0035280290362206864,-4.988738877980477e-5,7.004408058198917e-8,0.0035282296839363246,-4.966483945398808e-5,6.964675729891865e-8,0.003528382291270085,-4.9481325891113706e-5,6.931952735975422e-8,0.003528506567199636,-4.935546278755109e-5,6.909476075587484e-8,0.003528628724271695,-4.929815291741338e-5,6.899092748257108e-8,0.0035287791842859104,-4.9309749713025403e-5,6.900767973450815e-8,0.0035289888641371506,-4.9377284113068966e-5,6.912119895490268e-8,0.003529283256307753,-4.947268367777429e-5,6.92813827041382e-8,0.0035296742313782816,-4.955407009659888e-5,6.941439827038625e-8,0.003530151349516904,-4.957278427309963e-5,6.943511266213218e-8,0.0035306772094212354,-4.948747198735312e-5,6.92717079077621e-8,0.003531192964839601,-4.928195652942658e-5,6.889685346018671e-8,0.0035316365215482056,-4.89774365236009e-5,6.834895029601523e-8,0.003531966575744259,-4.862874958980648e-5,6.772540073203424e-8,0.0035321786442322665,-4.830377164926679e-5,6.714615431489767e-8,0.003532303511122255,-4.805750770984733e-5,6.670788672264682e-8,0.0035323910644271955,-4.7915439884981005e-5,6.645464473265158e-8,0.003532490905278016,-4.787198094158151e-5,6.637538089556046e-8,0.0035326391070453276,-4.7899603242805185e-5,6.6420465804465665E-08,0.003532853457600977,-4.79609329089279e-5,6.652335567882734e-8,0.003533134764875135,-4.801870810507902e-5,6.661826425948239e-8,0.0035334709225311187,-4.80420607780708e-5,6.6651124930788e-8,0.0035338414892082007,-4.800969554135657e-5,6.658497123133597e-8,0.003534221883309781,-4.791109649069916e-5,6.640185991590025e-8,0.0035345870911481937,-4.774650430734176e-5,6.610271983901248e-8,0.003534914922415681,-4.7525956167852065e-5,6.570564041722356e-8,0.003535188784668761,-4.726751897573049e-5,6.524278234784632e-8,0.003535399869757837,-4.699475689773158e-5,6.475593288560843e-8,0.003535548488616758,-4.673352273796198e-5,6.429082959559262e-8,0.0035356443027719678,-4.6508419457597334e-5,6.389085743601263e-8,0.003535705452163371,-4.633936348530399e-5,6.359090277517784e-8,0.0035357567090917945,-4.623851257366044e-5,6.341187165168234e-8,0.003535826730715225,-4.6207747236638295e-5,6.335626221346214e-8,0.0035359444328626815,-4.62369186224868e-5,6.340521229944e-8,0.0035361343987252193,-4.6303140463713727e-5,6.351750974087675e-8,0.0035364112077063,-4.637182901460024e-5,6.363172583245652e-8,0.0035367731674912405,-4.640084478194753e-5,6.367372155706706e-8,0.003537197303637594,-4.634911429135081e-5,6.357183762261232e-8,0.0035376391122535576,-4.618966433176537e-5,6.327964211385549e-8,0.003538041119459337,-4.592349949638268e-5,6.280007246840904e-8,0.0035383510638224264,-4.558644822183458e-5,6.219724757422401e-8,0.0035385429814836127,-4.524104977366377e-5,6.158200500178063e-8,0.0035386287865788782,-4.495389988038994e-5,6.107183348045023e-8,0.003538652157842681,-4.477026159769317e-5,6.074602879654554e-8,0.0035386688439036844,-4.47004078804151e-5,6.062170724859673e-8,0.003538726003163398,-4.4722809906257866e-5,6.065974926915645e-8,0.0035388505435425223,-4.4797903515981296e-5,6.078947944701308e-8,0.003539047874416657,-4.488281287540454e-5,6.093489620785433e-8,0.0035393068814284787,-4.4941391084842396e-5,6.103238884542969e-8,0.003539606554146499,-4.494882794965666e-5,6.103867464873075e-8,0.003539921676724328,-4.4892499760318906e-5,6.093205597538492e-8,0.003540226919719803,-4.477102781459113e-5,6.07105950251088e-8,0.0035404997394379314,-4.4592754938286915e-5,6.03893845810904e-8,0.0035407226338242614,-4.437398906963968e-5,5.999749164758063e-8,0.003540885022134315,-4.413694086471505e-5,5.957436958624628e-8,0.0035409847601478635,-4.3907158055120185e-5,5.91653320895687e-8,0.003541029039603609,-4.371029443432704e-5,5.881578782502931e-8,0.003541034222876167,-4.3568356911767184e-5,5.856451374224705e-8,0.0035410242820919035,-4.34959360356527e-5,5.843690932693798e-8,0.0035410278165807162,-4.349704460319828e-5,5.8439391136652944e-8,0.003541073866467474,-4.35631774348635e-5,5.8556051173999174e-8,0.003541186954993939,-4.367314619920436e-5,5.874856491748497e-8,0.0035413819586960823,-4.379504612211161e-5,5.895993621631804e-8,0.003541659481115643,-4.389056974908652e-5,5.9122364071120686e-8,0.0035420026717852874,-4.392188556736655e-5,5.9169501196338025e-8,0.0035423770266627625,-4.386091460591744e-5,5.9052739202674654e-8,0.003542735137307152,-4.369954534362978e-5,5.8758966934382756e-8,0.003543027709928473,-4.345726115647605e-5,5.8323693696870554e-8,0.003543219432923343,-4.318096116450492e-5,5.783045574779396e-8,0.0035433037039722254,-4.293306375151269e-5,5.7389662664115485e-8,0.003543307510625984,-4.2770211481893025e-5,5.710096925546551e-8,0.003543281657416864,-4.2722564889928e-5,5.7016803661170176e-8,0.0035432808969128654,-4.2784998811324036e-5,5.7127048886294805e-8,0.003543345083182791,-4.29237431526913e-5,5.7371094348610354e-8,0.0035434901225729534,-4.309218173774192e-5,5.766603094543882e-8,0.0035437096200434323,-4.324625449648452e-5,5.793397699501254e-8,0.003543982437111229,-4.335377416740421e-5,5.811844457672117e-8,0.003544280963361055,-4.339731616568985e-5,5.81892230593214e-8,0.003544577345674607,-4.337307492070495e-5,5.814014309175838e-8,0.0035448472547188253,-4.328818788598209e-5,5.798423922921832e-8,0.003545071945356522,-4.315800457900615e-5,5.774893393946444e-8,0.0035452395202854154,-4.300371531604833e-5,5.7471914844255585e-8,0.0035453459408502194,-4.285012265748278e-5,5.719723861116069e-8,0.0035453958923160433,-4.2723120313231096e-5,5.697084279090594e-8,0.0035454032149012556,-4.264651128545993e-5,5.683482254338785e-8,0.0035453903011499546,-4.2638151061864956e-5,5.682050114724788e-8,0.003545385835098054,-4.270593783651835e-5,5.6941284815840156e-8,0.0035454206037119564,-4.2844639289619016e-5,5.718710304786205e-8,0.003545521737679013,-4.3034763683612925e-5,5.7522579910149e-8,0.0035457064554863466,-4.3244478586494526e-5,5.7890672855239426e-8,0.0035459768841103315,-4.343484771283477e-5,5.822218243869248e-8,0.0035463175130871715,-4.35676865911608e-5,5.8449803092231185e-8,0.003546696374372438,-4.361459001005239e-5,5.852408386886376e-8,0.003547070408275864,-4.3565227278255075e-5,5.842791123349795e-8,0.0035473947092906958,-4.343266116837182e-5,5.8185596798430805e-8,0.003547634245769986,-4.3253317404532224e-5,5.786248016398101e-8,0.003547775128552845,-4.307980993012999e-5,5.755198880500784e-8,0.0035478310759871168,-4.296686019185961e-5,5.7350653828112885e-8,0.003547840931561206,-4.295416001320256e-5,5.732790326738767e-8,0.003547856465191098,-4.305323561587963e-5,5.7503072995357236e-8,0.0035479251065484753,-4.3244764513410865e-5,5.7840967381065036e-8,0.0035480755467052556,-4.3487437490787506e-5,5.82678059755974e-8,0.003548312159234838,-4.3733132149183526e-5,5.869821561074207e-8,0.003548618609759482,-4.394085957403888e-5,5.9059893258797215e-8,0.0035489665155445534,-4.4084657379925696e-5,5.930742385274079e-8,0.0035493243155301293,-4.4155064485646884e-5,5.94246850590516e-8,0.0035496635912923074,-4.415657349882108e-5,5.942017343141657e-8,0.003549962454933137,-4.4103723515838815e-5,5.932002348157367e-8,0.0035502068853032385,-4.401745537774121e-5,5.91615814739689e-8,0.0035503910919313167,-4.392223541541534e-5,5.898836758135166e-8,0.0035505176599334156,-4.3843716170544275e-5,5.884594653272736e-8,0.0035505977261718136,-4.3806355923926305e-5,5.877765373835154e-8,0.0035506509029348764,-4.38304481117814e-5,5.881923373523053e-8,0.0035507042417583052,-4.392838644885185e-5,5.8992150582505356e-8,0.003550789375607358,-4.4100629561268414e-5,5.9296460179193444e-8,0.0035509372747178996,-4.4332623510118206e-5,5.970549942120029e-8,0.0035511709877155606,-4.459455929913146e-5,6.016568287046157e-8,0.0035514981633926815,-4.4845618151110135e-5,6.060425933750863e-8,0.0035519062473257645,-4.504285818124529e-5,6.094521953949166e-8,0.003552363010141798,-4.515265199572119e-5,6.112959670344877e-8,0.0035528232538145662,-4.516091931665212e-5,6.113348597576136e-8,0.0035532400588138987,-4.5078419810363994e-5,6.097717700290937e-8,0.0035535771481694945,-4.4939099071296303e-5,6.07218955472018e-8,0.0035538186514130496,-4.479186991256323e-5,6.045492489427308e-8,0.0035539735035672354,-4.4688098423139305e-5,6.02672442098929e-8,0.0035540731748337205,-4.466810631879039e-5,6.022963420680442e-8,0.0035541630731403067,-4.475043551216551e-5,6.037388305148787e-8,0.003554289865126375,-4.4927280773815736e-5,6.068503341769779e-8,0.0035544886846951913,-4.516779476639947e-5,6.110755581298996e-8,0.0035547745839082123,-4.542805241964009e-5,6.156319330980759e-8,0.0035551408759050616,-4.5663759910920776e-5,6.197350799964669e-8,0.003555563963135248,-4.5841008864221135e-5,6.227883337795943e-8,0.0035560116876657694,-4.5941979139417047e-5,6.24482093400329e-8,0.0035564516280192447,-4.596527201117455e-5,6.24798008660841e-8,0.003556857010155012,-4.592266312849646e-5,6.239502440655055e-8,0.003557209714814007,-4.5834565631833704e-5,6.223046308066282e-8,0.003557501080364987,-4.572581403912075e-5,6.203040815733011e-8,0.0035577315537230697,-4.562240269450946e-5,6.184110140786349e-8,0.003557910036471095,-4.554903608560832e-5,6.170637764909142e-8,0.0035580533024840793,-4.552692161730423e-5,6.166368747736406e-8,0.0035581853049642667,-4.557119728743023e-5,6.173946177102266e-8,0.0035583356940717664,-4.568768485662425e-5,6.194333838364082e-8,0.0035585365708927026,-4.586927857225371e-5,6.226185510588425e-8,0.0035588166627198116,-4.609326999183041e-5,6.265390851272246e-8,0.003559193137323904,-4.632193829336071e-5,6.30520372167614e-8,0.003559663281878733,-4.650876999059089e-5,6.337362542760012e-8,0.003560200245713937,-4.661063021140253e-5,6.354254648899662e-8,0.0035607569317794813,-4.6602396654738655e-5,6.351506594055439e-8,0.003561278648384015,-4.6487494514614917e-5,6.32983887923139e-8,0.0035617199935504846,-4.6298558243764545e-5,6.29516014692535e-8,0.003562058627582537,-4.608741314362649e-5,6.256758166751812e-8,0.0035623004672044175,-4.5909078533960046e-5,6.224430829280521e-8,0.003562475581175662,-4.5806486601264316e-5,6.205760310203278e-8,0.0035626279001984354,-4.580067735294027e-5,6.204384806523509e-8,0.003562802954124633,-4.5888015756848204e-5,6.219537779330008e-8,0.003563037055132452,-4.6043654273636875e-5,6.246701201447148e-8,0.003563350070700666,-4.622932203076322e-5,6.27901620525839e-8,0.0035637427913076075,-4.6403085941301916e-5,6.309025042503193e-8,0.003564198880158738,-4.6528682381631946e-5,6.330320173165173e-8,0.0035646903766327347,-4.658232632749611e-5,6.338736538669235e-8,0.0035651848849890845,-4.6555732749513495e-5,6.332870370697999e-8,0.0035656523705938485,-4.645535269046844e-5,6.313929883122431e-8,0.0035660700713561725,-4.6298937321714985e-5,6.285117367268997e-8,0.003566425004528302,-4.611096934697695e-5,6.250815533966789e-8,0.0035667143995241142,-4.591827694533483e-5,6.215809174271331e-8,0.0035669448573334944,-4.574655007561588e-5,6.184666832943819e-8,0.0035671310343054594,-4.561778706202556e-5,6.161284724828767e-8,0.0035672942787601126,-4.554824175451044e-5,6.148516952915002e-8,0.0035674611803288114,-4.5546361387194964e-5,6.147805454901015e-8,0.003567661543033928,-4.5610385548273515e-5,6.158757512312564e-8,0.003567924912442449,-4.5725767445714075e-5,6.178702994408387e-8,0.0035682748142848095,-4.5863544983274e-5,6.202428486357496e-8,0.0035687207877180566,-4.598192357438832e-5,6.222480065079293e-8,0.0035692503506583244,-4.603366023380281e-5,6.230484445613422e-8,0.0035698255742100237,-4.597995195287227e-5,6.219611092854864e-8,0.0035703895352063105,-4.580682740172019e-5,6.187471998839677e-8,0.003570883632004423,-4.553525834522834e-5,6.137904502638934e-8,0.003571268864222055,-4.521699225352601e-5,6.080211684283172e-8,0.0035715396695708015,-4.4916408899932836e-5,6.025908338968015e-8,0.003571723198393817,-4.468799023289393e-5,5.984686372144387e-8,0.003571866379697392,-4.456067955242553e-5,5.961625196141818e-8,0.0035720191409290983,-4.453406964456066e-5,5.956536150564443e-8,0.0035722211083410766,-4.458410992868764e-5,5.965019352482582e-8,0.003572494625911943,-4.4673173061435514e-5,5.980293252365561e-8,0.0035728434568544545,-4.476028636567257e-5,5.995034390494367e-8,0.0035732552997467812,-4.480936493091201e-5,6.002839604720158e-8,0.003573706429317807,-4.479480285769821e-5,5.99920413721776e-8,0.0035741673042217212,-4.4704415364411226e-5,5.982025244393188e-8,0.0035746082437256763,-4.45398457623661e-5,5.951659167339322e-8,0.003575004335958261,-4.43147481520429e-5,5.9105889956792483e-8,0.003575338940318722,-4.405137481478573e-5,5.862814161090186e-8,0.0035756054724064797,-4.3776367002100296e-5,5.81310100746709e-8,0.0035758075061845546,-4.3516565870462726e-5,5.766237414128631e-8,0.0035759576042431298,-4.32955011747464e-5,5.726406668644314e-8,0.003576075473322457,-4.313078064462699e-5,5.696719548910158e-8,0.0035761858511276887,-4.3032185858342236e-5,5.678871564724287e-8,0.0035763162079560256,-4.300017921430965e-5,5.672876610846801e-8,0.0035764940524594456,-4.3024605140873026e-5,5.6768438605918676e-8,0.0035767432881861085,-4.30836704446525e-5,5.686814868430869e-8,0.0035770790275487753,-4.314407216803266e-5,5.6968106744896594e-8,0.0035775010573515023,-4.3164050813275044e-5,5.699394484154996e-8,0.003577987803146952,-4.310136895375068e-5,5.6870952361826546e-8,0.0035784948165471183,-4.292678335936257e-5,5.65479221696561e-8,0.003578962840272767,-4.2639405852658924e-5,5.602429479005061e-8,0.003579336851006414,-4.227498438897039e-5,5.536473452635238e-8,0.003579588685688661,-4.18979968512765e-5,5.468488805835137e-8,0.0035797296080622783,-4.1578011198993515e-5,5.4109049105691114e-8,0.0035798042114301037,-4.1363105981440804e-5,5.372259413331688e-8,0.0035798702564199783,-4.126542984896543e-5,5.354626012529212e-8,0.0035799774382410184,-4.126391236459329e-5,5.354128307652321e-8,0.003580154993927935,-4.1317791469285e-5,5.363395239974795e-8,0.003580409608935486,-4.1381581597515776e-5,5.374262013811699e-8,0.003580729783643385,-4.1415934670145685e-5,5.3797139133405634e-8,0.003581092408746188,-4.139336320909661e-5,5.3748926352074026e-8,0.003581469034566333,-4.130007224972205e-5,5.357400193982709e-8,0.0035818310034735766,-4.1135487314135264e-5,5.3271956810880735e-8,0.0035821534692491988,-4.0910476824976e-5,5.286268340386592e-8,0.003582418418358619,-4.06446935945381e-5,5.238161243589318e-8,0.0035826166797022483,-4.0363280171443215e-5,5.187384845082181e-8,0.00358274884529989,-4.009317462540421e-5,5.1387588037206476e-8,0.003582824995614943,-3.985933882274082e-5,5.096737917280055e-8,0.0035828632611508504,-3.9681384105172434e-5,5.064806914993073e-8,0.0035828875139954875,-3.957098298811167e-5,5.045014818249678e-8,0.003582924529544475,-3.953016479695639e-5,5.0376688098463605e-8,0.00358300081862799,-3.955047708564117e-5,5.0411877426842314e-8,0.0035831392261010796,-3.961300640930363e-5,5.052117648958689e-8,0.003583355214352302,-3.968931328155379e-5,5.065319072165797e-8,0.0035836526718863154,-3.974377438611344e-5,5.074407946967609e-8,0.003584019676710392,-3.973841845099247e-5,5.072633320424865e-8,0.0035844258489106545,-3.9641235948389545e-5,5.0543575221023724e-8,0.003584824176308066,-3.943762986883524e-5,5.0170788891649215e-8,0.0035851605988330357,-3.914173842671066e-5,4.963424297277142e-8,0.0035853918960880448,-3.880043670747472e-5,4.9018405921792256e-8,0.003585505322328108,-3.848249328671764e-5,4.844644654517097e-8,0.003585527515563994,-3.8253569503164206e-5,4.803549689485371e-8,0.0035855144146158527,-3.8149888897543195e-5,4.784960245800021e-8,0.0035855273906091824,-3.8166487904675314e-5,4.787887836846632e-8,0.0035856104495281117,-3.8265157169492204e-5,4.805402080142565e-8,0.0035857798816200707,-3.8393560363288984e-5,4.828082047147677e-8,0.0035860268763078557,-3.8503227747035004e-5,4.847250586230702e-8,0.003586326680961035,-3.855986372475001e-5,4.8568113786697065e-8,0.003586648121636525,-3.8546152355993225e-5,4.853728942981486e-8,0.0035869605978639182,-3.846010828728895e-5,4.837710529272839e-8,0.003587238303345829,-3.8311783073421156e-5,4.810602981932446e-8,0.0035874625495865785,-3.811982896336047e-5,4.775775329407981e-8,0.00358762304655042,-3.790829412712801e-5,4.7375493462969575e-8,0.003587718543212155,-3.7703539314087314e-5,4.700651815697953e-8,0.0035877568854504843,-3.753109690746856e-5,4.669652828927809e-8,0.0035877543189045003,-3.741240911193318e-5,4.648378792509094e-8,0.0035877337821993926,-3.736170012036886e-5,4.639348279578213e-8,0.003587722146397466,-3.738348798138e-5,4.643324183247487e-8,0.003587746637258956,-3.747117499085622e-5,4.659063494568057e-8,0.0035878308010265218,-3.760702188597041e-5,4.683321176191194e-8,0.0035879904688035855,-3.776372946249842e-5,4.7111485215557924e-8,0.0035882302134709367,-3.790765307608103e-5,4.736488113389693e-8,0.0035885407027646038,-3.800358818517712e-5,4.753047496748133e-8,0.0035888975265631912,-3.802122612155703e-5,4.755460390198331e-8,0.003589262683625903,-3.7943134492679234e-5,4.740703403510289e-8,0.003589590313060849,-3.777295305645327e-5,4.709535929441549e-8,0.0035898376636516174,-3.754070148435225e-5,4.6674180657203245e-8,0.003589979939820703,-3.730052104784748e-5,4.6240824276023414e-8,0.003590023371945228,-3.711708048632642e-5,4.5910925049693536e-8,0.0035900077501635065,-3.7042871910765236e-5,4.577784781514526e-8,0.0035899933020088546,-3.709707415007798e-5,4.587502096050476e-8,0.003590037208575344,-3.725873614994456e-5,4.6163979998570615e-8,0.0035901730111987757,-3.747812082032692e-5,4.655494611376622e-8,0.0035904033060219416,-3.769784537258867e-5,4.6944876133643913e-8,0.003590705852666982,-3.787137405914086e-5,4.725061888805473e-8,0.0035910458330059257,-3.7972004750569304e-5,4.7424881917477886e-8,0.0035913870901548824,-3.799305368319623e-5,4.7456342834723396e-8,0.003591699210907479,-3.794340612840332e-5,4.736148608065085e-8,0.0035919606768198722,-3.7842095199116786e-5,4.7174801397497153e-8,0.0035921596171359957,-3.7713708795726786e-5,4.6940568127754947e-8,0.003592293558379161,-3.758490512066759e-5,4.6706667488679346e-8,0.0035923688823323,-3.7481625279828046e-5,4.651961895285797e-8,0.0035924001126666325,-3.742650014676788e-5,4.641991343171655e-8,0.003592408782381076,-3.743612894819133e-5,4.643708427178588e-8,0.0035924214411165024,-3.751830128528744e-5,4.6584688608919025e-8,0.0035924664696293106,-3.7669705308534085e-5,4.685621045027915e-8,0.003592569774155505,-3.7874901547291835e-5,4.7223301285490726e-8,0.003592749902450613,-3.810728859606727e-5,4.763765035237718e-8,0.0035930135281971444,-3.833251364146036e-5,4.8037268016193544e-8,0.003593352477999401,-3.85142094254474e-5,4.835692293551611e-8,0.003593743318325711,-3.862124028617287e-5,4.8541211620976406e-8,0.0035941500803349773,-3.8635219635304036e-5,4.855799005285224e-8,0.0035945303054739485,-3.8556856029829644e-5,4.8409563859566875e-8,0.0035948441441678958,-3.84093266238022e-5,4.8138450958546775e-8,0.0035950652932258955,-3.823653707192244e-5,4.7823971958565097E-08,0.003595191000352243,-3.809453371200407e-5,4.7566669363102354e-8,0.003595246796889517,-3.803631027123147e-5,4.7461060314247433E-08,0.0035952816700368603,-3.809404780623166e-5,4.756396298769029e-8,0.0035953529476908017,-3.826654280703843e-5,4.7872228760978966e-8,0.0035955064360887307,-3.851914359448242e-5,4.832290540180464e-8,0.0035957614102684605,-3.8797097685212365e-5,4.8817364790469434e-8,0.0035961074408753227,-3.904519065318432e-5,4.925659081088645e-8,0.0035965125426542463,-3.922380619036841e-5,4.9569925989950274e-8,0.0035969362675940465,-3.9315732962972006e-5,4.972712682605005e-8,0.003597341109482439,-3.932441886961113e-5,4.9735041797245097e-8,0.0035976991308152764,-3.9267828750470704e-5,4.962644042986901e-8,0.0035979941492756103,-3.917176770050048e-5,4.944797265987095e-8,0.0035982212646163817,-3.906461231436291e-5,4.925073309806581e-8,0.0035983853864858173,-3.8973731332623625e-5,4.9083882869826816e-8,0.003598499705108412,-3.8923037020490345e-5,4.899027237780294e-8,0.003598584313547959,-3.893093107139329e-5,4.900272753215885e-8,0.003598664665047769,-3.900814200916675e-5,4.914012707459969e-8,0.003598769295912446,-3.91554181102269e-5,4.940325446403414e-8,0.003598926296552057,-3.936159589408526e-5,4.9771395938974046e-8,0.0035991584178781378,-3.9603052569638225e-5,5.020149262688757e-8,0.0035994774570306106,-3.9845742495034574e-5,5.063196470603437e-8,0.003599879456446016,-4.0050595060088164e-5,5.099254875986903e-8,0.0036003427551529487,-4.018188155414745e-5,5.121939647495595e-8,0.0036008305267239238,-4.021666105614067e-5,5.127201267350899e-8,0.003601298082359539,-4.015241628723848e-5,5.114683795044416e-8,0.0036017034785005065,-4.001010080325409e-5,5.0882498429844205e-8,0.0036020186446318633,-3.983102151691306e-5,5.055393791953197e-8,0.00360223784043595,-3.966773922720605e-5,5.025583994965174e-8,0.0036023807275160397,-3.957088011118183e-5,5.0078834765566855e-8,0.0036024884440489483,-3.957514576006304e-5,5.008445593779248e-8,0.003602612836630004,-3.9688759093846825e-5,5.028643421396089e-8,0.003602801507346342,-3.9890448396384285e-5,5.064559582445518e-8,0.0036030837132397233,-4.013591224250133e-5,5.1081729897139555e-8,0.0036034625787910108,-4.037175117016467e-5,5.149873123423126e-8,0.0036039164745840613,-4.0551277524241955e-5,5.181297742668326e-8,0.0036044080529050305,-4.0646004294966926e-5,5.197384946590186e-8,0.00360489619893693,-4.064945869958866e-5,5.197041780922286e-8,0.0036053460251226866,-4.0574082061552914e-5,5.182570742191499e-8,0.0036057344318386826,-4.044453999591332e-5,5.158455566701788e-8,0.0036060514579108944,-4.029075668722807e-5,5.130104481965624e-8,0.003606299011004411,-4.01424970484346e-5,5.1028778692332877e-8,0.0036064885833287518,-4.0025849226308426e-5,5.081459498933569e-8,0.003606638973317254,-3.9961099891688534e-5,5.069476213733481e-8,0.003606774332411993,-3.9961203232245695e-5,5.069221405358963e-8,0.0036069222452277806,-4.003023028212907e-5,5.081374865009258e-8,0.0036071112182922568,-4.016168303508934e-5,5.1047028727656355e-8,0.003607366963232316,-4.033714988858951e-5,5.135826999643147e-8,0.0036077072303672525,-4.0526398781894345e-5,5.169257162187404e-8,0.0036081358410376746,-4.069044856608033e-5,5.19795998409735e-8,0.00360863791472181,-4.0788768684664725e-5,5.214662964419998e-8,0.0036091792602710175,-4.079000858969095e-5,5.2137837160242114e-8,0.003609712280943959,-4.068309768113012e-5,5.1934170132578293e-8,0.0036101880918484254,-4.04838562463079e-5,5.1565076095717744e-8,0.0036105710604826644,-4.0233135214053623e-5,5.11049366675387e-8,0.0036108500263461432,-3.998610781681087e-5,5.065355467128838e-8,0.003611041677968052,-3.9796540409886596e-5,5.0307660035659015e-8,0.0036111851665100313,-3.970186618515915e-5,5.0134017422303575e-8,0.0036113304864999287,-3.971382372907988e-5,5.0152753919674675e-8,0.0036115247250119607,-3.98167918000583e-5,5.033467938084641e-8,0.0036118001491949494,-3.997345877334354e-5,5.061180843179813e-8,0.003612167114637999,-4.013564216404726e-5,5.089703004119631e-8,0.0036126132814578962,-4.025692196720492e-5,5.110687626163271e-8,0.0036131087640671185,-4.0303479742982214e-5,5.118093281193777e-8,0.0036136150876857724,-4.026034802700086e-5,5.109292725088119e-8,0.003614094856008835,-4.0132016043704154e-5,5.085165351686192e-8,0.0036145193074628326,-3.993836208888382e-5,5.0493512681573206e-8,0.003614872292763547,-3.9708210576448246e-5,5.0070825982924494e-8,0.003615150815762236,-3.947285164647236e-5,4.9640137095099506e-8,0.0036153632808230353,-3.926096931140428e-5,4.9253097195019005e-8,0.0036155267616432177,-3.909538048400595e-5,4.89506275147321e-8,0.0036156642392711075,-3.8991230807476714e-5,4.8759693003331155e-8,0.0036158021749105296,-3.895495080175904e-5,4.86914245950835e-8,0.0036159682275933073,-3.8983383111791493e-5,4.873955389149923e-8,0.003616188577386115,-3.9062911493915725e-5,4.887889729439448e-8,0.0036164842465590077,-3.9168981167351876e-5,4.906461395007111e-8,0.003616866127419069,-3.926707099410478e-5,4.9234122993500053E-08,0.003617329348913702,-3.931673398289274e-5,4.9314522167269587e-8,0.003617849150796829,-3.928001916208648e-5,4.923780665633049e-8,0.003618381798653043,-3.913360777112033e-5,4.896267227430695e-8,0.0036188735440883186,-3.888055553865431e-5,4.849554188132768e-8,0.003619276853702225,-3.855491658006466e-5,4.789873129478229e-8,0.0036195676184713646,-3.821416389457841e-5,4.7276580612196774e-8,0.0036197545025373444,-3.792090095161403e-5,4.6742254073388355e-8,0.0036198753513412853,-3.772222272857822e-5,4.6380371688515686e-8,0.0036199830801991757,-3.763623905030227e-5,4.6222755173165736e-8,0.00362012849213772,-3.7650144684676776e-5,4.624521707582522e-8,0.003620346940104583,-3.77278873639625e-5,4.6381754134727366e-8,0.0036206519317770578,-3.7822429509832206e-5,4.654694600928876e-8,0.0036210353347296935,-3.788800232657244e-5,4.6658156643896576e-8,0.0036214722356083732,-3.7889552847069945e-5,4.665250017723497e-8,0.0036219282737146377,-3.7808250334028e-5,4.6496606350338104e-8,0.003622367558528604,-3.764294604213074e-5,4.618907856043481e-8,0.003622759613618764,-3.740807222574171e-5,4.5756568470016735e-8,0.003623084197594277,-3.7129000539556704e-5,4.524531717165578e-8,0.0036233334897944123,-3.6836271033352585e-5,4.471070197478162e-8,0.003623511822352105,-3.656004150987419e-5,4.42072171491852e-8,0.003623633625770037,-3.632568696345636e-5,4.378055463898182e-8,0.0036237204746564565,-3.615095303416537e-5,4.3462496938331666e-8,0.0036237980238943072,-3.604451542869379e-5,4.326833725239851e-8,0.0036238932087061873,-3.600542881626248e-5,4.3195891834918523e-8,0.0036240316260941043,-3.6022998605292114e-5,4.322528366433578e-8,0.003624234754252283,-3.6076927455552074E-05,4.331926852948421e-8,0.0036245165668879796,-3.613800749232242e-5,4.34246123367742e-8,0.003624879311897084,-3.617023187311202e-5,4.3476066000601294e-8,0.0036253090835464646,-3.6135726391495956e-5,4.3405390637871034e-8,0.0036257732585274127,-3.6003592967351125e-5,4.315733397260209e-8,0.0036262232058954036,-3.576186980901324e-5,4.271111422394686e-8,0.003626605331546473,-3.542823247726426e-5,4.209956869519151e-8,0.003626879436036661,-3.50518579454549e-5,4.1412337399755736e-8,0.0036270365079126123,-3.470071004044956e-5,4.0772704917605835e-8,0.0036271047904969573,-3.443736111457935e-5,4.029373159298715e-8,0.0036271389316380864,-3.429581521273013e-5,4.003629528591115e-8,0.0036271983746661196,-3.427189565117347e-5,3.999186380888534e-8,0.0036273272627723543,-3.433001504928174e-5,4.009507060595036e-8,0.0036275443605000503,-3.441929039714666e-5,4.02532013146905e-8,0.003627843559349204,-3.448978456372097e-5,4.037574941419381e-8,0.0036282007307444626,-3.450355291645972e-5,4.039436204166938e-8,0.0036285824334346232,-3.443962968437811e-5,4.027168052144104e-8,0.003628953774846586,-3.4294406238919776e-5,4.000181674287031e-8,0.003629284453436167,-3.4079224683629005e-5,3.960585055025596e-8,0.00362955288864694,-3.381643465683662e-5,3.912462715686188e-8,0.0036297485036715003,-3.353465476085004e-5,3.8610171191587416e-8,0.0036298722480067286,-3.3263883330298314e-5,3.811684927278125e-8,0.003629935574821214,-3.303104643643447e-5,3.769332757952957e-8,0.003629958188257625,-3.285642390889165e-5,3.737611903004188e-8,0.003629964993502037,-3.275128511796277e-5,3.7185320702803963e-8,0.0036299828010852926,-3.271683137367501e-5,3.712271268820873e-8,0.003630037189355566,-3.274419552984249e-5,3.7171770693712e-8,0.003630149597490292,-3.281517977483511e-5,3.729903127915843e-8,0.0036303345419651353,-3.290362286671258e-5,3.7456641443449155e-8,0.0036305967997701106,-3.297753462876925e-5,3.758635247116539e-8,0.003630928513207681,-3.300252642506156e-5,3.762587782766384e-8,0.0036313068265694214,-3.294744940956532e-5,3.7519188323039196e-8,0.00363169380297549,-3.2792780456482834e-5,3.7231652891866554e-8,0.0036320412779389313,-3.254062980327011e-5,3.676798183842747e-8,0.0036323028298620714,-3.222229600651305e-5,3.618566999286661e-8,0.00363245144150968,-3.1896535693968474e-5,3.559165692670533e-8,0.003632494924818845,-3.163343128727202e-5,3.5112974053962996e-8,0.003632477752238004,-3.148784739433187e-5,3.4848610971418145e-8,0.0036324645616411712,-3.147677766139223e-5,3.4828549478256566e-8,0.003632513929295136,-3.1574620316264846e-5,3.5005434477029905e-8,0.0036326579319382944,-3.1727711619258e-5,3.528122902984301e-8,0.0036328967617592234,-3.187682011716218e-5,3.554823526809591e-8,0.0036332061434049393,-3.197502524181992e-5,3.572156454636925e-8,0.0036335495974229026,-3.1995847248725226e-5,3.575374279393732e-8,0.003633889293870905,-3.19333227910892e-5,3.563461873953822e-8,0.003634193172744235,-3.17978842240923e-5,3.538369154094479e-8,0.003634438615965457,-3.161109030916799e-5,3.504045625380042e-8,0.003634613855985011,-3.1400671454106465e-5,3.465541572534082e-8,0.003634718071699902,-3.11961575856113e-5,3.428219175465637e-8,0.003634760562279025,-3.102500639946222e-5,3.3970535921702535e-8,0.0036347591134491177,-3.0909251987672765e-5,3.376025962304962e-8,0.003634737607805422,-3.086278268132625e-5,3.367629517795057e-8,0.0036347229490649663,-3.088948453492992e-5,3.372533325761154e-8,0.003634741563228235,-3.0982560065987805e-5,3.389460784514429e-8,0.003634815901229414,-3.112512713113596e-5,3.4153020033679004e-8,0.0036349612766972193,-3.129198170965659e-5,3.4454394956192596e-8,0.003635183245992869,-3.145240784677646e-5,3.4742669582784826e-8,0.0036354757079425717,-3.1573956992053166e-5,3.495886526255861e-8,0.0036358199160614058,-3.1627212256825974e-5,3.504983415027823e-8,0.0036361849045063073,-3.159171660721317e-5,3.4979039620345153e-8,0.003636530479561921,-3.1462895172653124e-5,3.473901011215707e-8,0.0036368142578559253,-3.1258495477149596e-5,3.436280051338025e-8,0.003637003387374721,-3.102115681331883e-5,3.3928392231956515e-8,0.003637088755021439,-3.081237158304347e-5,3.35475459720963e-8,0.003637094946225761,-3.069500019812094e-5,3.333402234292594e-8,0.0036370770559699434,-3.0708848592774254e-5,3.335935424561485e-8,0.0036371013292986853,-3.085231309250355e-5,3.361973574732224e-8,0.0036372186076369544,-3.108268917674487e-5,3.4036836713625407e-8,0.0036374461301725914,-3.133543760619602e-5,3.449300493597974e-8,0.0036377666800752285,-3.154966294649507e-5,3.4877648547478624e-8,0.003638141297749838,-3.1685759118405125e-5,3.511925103365506e-8,0.0036385252843173046,-3.173024090401332e-5,3.5193980505349496e-8,0.0036388799750885084,-3.1691380373824776e-5,3.5117541386689996e-8,0.003639178463924923,-3.1591479016366276e-5,3.493096321710203e-8,0.003639406831918024,-3.145964120367891e-5,3.4687408289269027e-8,0.0036395631103395176,-3.132641488984484e-5,3.444246310972407e-8,0.003639655535314708,-3.122008096808154e-5,3.4247456211883176e-8,0.0036397006665107633,-3.1163893875378406e-5,3.414448139816457e-8,0.003639721329488939,-3.1173806420359784e-5,3.416226804857164e-8,0.0036397441644748767,-3.125655767899938e-5,3.431270209771732e-8,0.003639796568166988,-3.140832386339877e-5,3.458839076722247e-8,0.0036399030331303018,-3.161441580614675e-5,3.49621599593727e-8,0.0036400812861970703,-3.1850493516183555e-5,3.538933414193512e-8,0.0036403388783366928,-3.2085469069802425e-5,3.581309683606768e-8,0.003640670899708472,-3.228595888933305e-5,3.617266898678714e-8,0.003641059410890908,-3.242184074945234e-5,3.6413480741849684e-8,0.003641474976614793,-3.2472192397990765e-5,3.6497992784001544e-8,0.0036418804736073327,-3.243081777099901e-5,3.6415684316993066e-8,0.0036422373048892133,-3.231046066567557e-5,3.619054998193656e-8,0.003642513965287651,-3.2144261682321465e-5,3.588351146600024e-8,0.0036426959856221573,-3.198235682061668e-5,3.5586005065773693e-8,0.0036427944977556605,-3.1881697208743154e-5,3.5401356745524745e-8,0.0036428486849075714,-3.188933045907144e-5,3.5414444145402196e-8,0.0036429173685921887,-3.202403752604784e-5,3.565852233264122e-8,0.0036430596414088368,-3.226577445343364e-5,3.609629779052436e-8,0.0036433124954249867,-3.2561078847616284e-5,3.66299793816928e-8,0.0036436776177795477,-3.284337212027593e-5,3.713830880496045e-8,0.0036441242313400286,-3.3057030277970586e-5,3.7520345040000954e-8,0.0036446041810241324,-3.317277180321848e-5,3.772337507096917e-8,0.0036450692490085615,-3.3189738563198884e-5,3.7746545722749065e-8,0.003645482899676809,-3.3128175256394194e-5,3.7627357042686266e-8,0.0036458246434632187,-3.301933774306142e-5,3.7423151774873677e-8,0.003646089234413236,-3.289707990184836e-5,3.71957515176344e-8,0.003646283665094115,-3.279244336538491e-5,3.7001641525103554e-8,0.0036464239349174375,-3.273067656021924e-5,3.6886607019548715e-8,0.0036465323149864697,-3.272957018214073e-5,3.6882747854165715e-8,0.0036466349961541663,-3.279825429446103e-5,3.700630533575309e-8,0.0036467596710251142,-3.2936106766617314e-5,3.725568811188398e-8,0.0036469325807821826,-3.313193807407561e-5,3.7610026698915855e-8,0.0036471748124150484,-3.3364069240662704e-5,3.802938859382088e-8,0.003647498169133209,-3.360210126412473e-5,3.845809149088258e-8,0.0036479015316435363,-3.38109253939106e-5,3.883209072712449e-8,0.003648368986541947,-3.395689666898082e-5,3.909027582893097e-8,0.003648870921029724,-3.401521748118757e-5,3.9187927000580045e-8,0.0036493686380024244,-3.397675991479839e-5,3.91090927084104e-8,0.0036498219897588453,-3.385230235314705e-5,3.887418894134722e-8,0.0036501985693956885,-3.367263505175776e-5,3.854000701640252e-8,0.0036504824684245895,-3.348382883038354e-5,3.819088250354824e-8,0.003650680396759058,-3.333785800459016e-5,3.792145205144569e-8,0.003650822939161007,-3.3279840876376515e-5,3.781338373671198e-8,0.003650959134371577,-3.3334613467666114e-5,3.791106516073476e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json new file mode 100644 index 0000000000..c83a531d9b --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":23000,"numberOfSamples":1000,"samples":[0.003651144035305788,-3.3496975736922465e-5,3.820410327566936e-8,0.0036514219143992843,-3.3730554777606135e-5,3.862552436820353e-8,0.0036518112676496577,-3.397791609056264e-5,3.907035721036122e-8,0.00365229870095008,-3.417907449598782e-5,3.9429383363913e-8,0.00365284489977173,-3.4290356787269744e-5,3.962343833009104e-8,0.0036533992613388363,-3.429527055965991e-5,3.962310443890886e-8,0.003653915601993734,-3.4204210437811016e-5,3.9448034728001705e-8,0.0036543625588809866,-3.404606217387052e-5,3.915149562803171e-8,0.003654726821743164,-3.385745548023324e-5,3.880065521411588e-8,0.003655011114586897,-3.367402646076845e-5,3.846060844958942e-8,0.003655229952491537,-3.352516388562213e-5,3.818482941081412e-8,0.0036554053665251193,-3.343165583497147e-5,3.8010946814686524e-8,0.0036555634966590643,-3.3404964167691095e-5,3.7959478606448984e-8,0.0036557319972541605,-3.3447035834001456e-5,3.803352192134055e-8,0.0036559377077366316,-3.355009646938942e-5,3.821840523078073e-8,0.003656203941986329,-3.3696494348695236e-5,3.848145228658821e-8,0.0036565469978612378,-3.3859223781751256e-5,3.877301569526761e-8,0.0036569720596978405,-3.4004124438745524e-5,3.9030579556823116e-8,0.003657469498455847,-3.40947073072433e-5,3.918763315500793e-8,0.003658013393850613,-3.409978236972752e-5,3.918760770228968e-8,0.0036585642841328063,-3.400250012732713e-5,3.9000338042948336e-8,0.003659077039174998,-3.380774452480385e-5,3.8635466490843415e-8,0.0036595124517896076,-3.354428513728769e-5,3.8146233975437406e-8,0.0036598488695074555,-3.325957393919969e-5,3.761980345160911e-8,0.0036600895177045143,-3.30080589998171e-5,3.7155744789631976e-8,0.0036602626699706706,-3.2836659874036776e-5,3.6839414480127626e-8,0.0036604145345912036,-3.277203283919482e-5,3.671875744486885e-8,0.003660597076071134,-3.281332359526204e-5,3.679128814107534e-8,0.0036608541980586175,-3.293230507705976e-5,3.700462952878297e-8,0.003661210012998719,-3.308093000187256e-5,3.7270537712529526e-8,0.003661662575751951,-3.320440094368456e-5,3.74888633727299e-8,0.003662185161327315,-3.325597408349231e-5,3.7574542846225874e-8,0.003662734729255613,-3.320874898829924e-5,3.747900861351535e-8,0.0036632644530644296,-3.3060666580031256e-5,3.719917570818271e-8,0.003663735688217234,-3.283177311008349e-5,3.677230797634811e-8,0.003664125550367317,-3.255600900274537e-5,3.6260899113540797e-8,0.0036644288159946347,-3.227144312843095e-5,3.573475239964142e-8,0.003664655379067319,-3.20122786606644e-5,3.525635740926294e-8,0.0036648256060508692,-3.180406776074698e-5,3.487218993328028e-8,0.0036649655917790954,-3.166186058055134e-5,3.460940215582945e-8,0.003665103342555086,-3.15901849968733e-5,3.4475849367541365e-8,0.003665265988254904,-3.158372346364206e-5,3.4461364201339914e-8,0.003665477540567749,-3.162801003528849e-5,3.4539055157405407e-8,0.0036657565338192736,-3.17000936026722e-5,3.466655892539428e-8,0.0036661130590637785,-3.176968248208968e-5,3.478820502904388e-8,0.003666545202793297,-3.180174937323968e-5,3.483986629008923e-8,0.003667035788941662,-3.1761745550580205e-5,3.475855435760227e-8,0.0036675514497473767,-3.162389916152661e-5,3.449759311569503e-8,0.003668046654744528,-3.138114071038292e-5,3.404470126419763e-8,0.0036684741721542814,-3.105261032794423e-5,3.343560777759723e-8,0.003668799974560434,-3.068345735179965e-5,3.2753539214570226e-8,0.0036690165364966303,-3.0334013759936222e-5,3.2109244036842246e-8,0.0036691474276989216,-3.0061206934846583e-5,3.160683200695938e-8,0.0036692401145173264,-2.9900241087574385e-5,3.131020806459518e-8,0.0036693503292834495,-2.9854613982101406e-5,3.122493185911916e-8,0.003669525187357138,-2.989751080207272e-5,3.1301037813817e-8,0.0036697912282753556,-2.9982013376298203e-5,3.1452001909760237e-8,0.003670149929656101,-3.0055069990531985e-5,3.15804774867729e-8,0.00367058012275416,-3.007069224005011e-5,3.160245845426072e-8,0.003671045233915078,-2.9999480736268876e-5,3.14646043020311e-8,0.00367150289146305,-2.9833136999524488e-5,3.1152343179196404e-8,0.0036719145236925356,-2.9583830819543413e-5,3.068856987855197e-8,0.0036722528819754623,-2.9279274289988172e-5,3.012451965536157e-8,0.0036725060723375516,-2.8955216659429878e-5,2.9525956515840337e-8,0.003672677754130943,-2.864755268356975e-5,2.895869275364607e-8,0.003672784291843022,-2.838594682136872e-5,2.8476927435519246e-8,0.0036728502871910297,-2.8189969093245898e-5,2.8116221838894727e-8,0.0036729039195573616,-2.8067750927584617e-5,2.7891105878276732e-8,0.0036729730472076353,-2.8016458620949784e-5,2.7795998669456532e-8,0.0036730823256591566,-2.8023639314141942e-5,2.7807699502206006e-8,0.0036732510393670506,-2.806876922500443e-5,2.7888233842029837e-8,0.0036734911388206174,-2.8124848250507907e-5,2.7987802985082756e-8,0.003673805048096844,-2.8160365318995213e-5,2.8048454388623762e-8,0.0036741831643614118,-2.8142417714421486e-5,2.800989211450284e-8,0.0036746017845311393,-2.8042014596425726e-5,2.781926303572099e-8,0.003675023305396148,-2.7842042600133794e-5,2.7445742165138232e-8,0.003675401277467576,-2.7546573380207877e-5,2.6897486202051013e-8,0.0036756920590245525,-2.718737099853137e-5,2.623340000871415e-8,0.0036758711240840844,-2.682142732552505e-5,2.555844943167183e-8,0.0036759465937811365,-2.6515692647237495e-5,2.499551903112205e-8,0.0036759605227197774,-2.6323182982489206e-5,2.464151777744949e-8,0.0036759744983032644,-2.6262593443452535e-5,2.4530039671133795e-8,0.0036760466285700347,-2.6312844659637143e-5,2.462156779143457e-8,0.0036762123044454384,-2.6424126112870143e-5,2.4824015221802194e-8,0.003676476786014314,-2.6537239075107872e-5,2.5028430559382807e-8,0.0036768192350094923,-2.6601221243758545e-5,2.5141395201407517e-8,0.0036772028513650874,-2.658386925131194e-5,2.5104237965815816e-8,0.0036775858883604795,-2.6474864491415744e-5,2.4898599976612817e-8,0.0036779306440379686,-2.6283647779182486e-5,2.4542371246482394e-8,0.003678209538973982,-2.603439997978615e-5,2.408037372138913e-8,0.003678408358108114,-2.5759783494692988e-5,2.357282896906436e-8,0.003678526948850447,-2.5494493653466036e-5,2.308351403533256e-8,0.0036785777355817883,-2.5269467883076505e-5,2.2669143006386352e-8,0.003678582593628918,-2.5107461818455048e-5,2.2371273529194018e-8,0.003678568782474355,-2.5020417507422695e-5,2.2211520779320994e-8,0.0036785647042003374,-2.500871973525351e-5,2.21902445854814e-8,0.0036785961805071692,-2.5062054156622615e-5,2.228816628316454e-8,0.003678683593958781,-2.5161266743696174e-5,2.24697994986493e-8,0.003678839813725382,-2.528068865976697e-5,2.268772363615898e-8,0.0036790686589521994,-2.5390721102639514e-5,2.28873548323344e-8,0.0036793636633603534,-2.5460766843175067e-5,2.301239734670839e-8,0.0036797070625050198,-2.5462938404665122e-5,2.3011746096490555e-8,0.0036800695540226,-2.5377224112577794e-5,2.2849032250097418e-8,0.0036804123072578534,-2.5198284596178738e-5,2.251506689142407e-8,0.003680693157902537,-2.4942526484895308E-05,2.2040681988927512e-8,0.003680878158399637,-2.4651854910035483e-5,2.150341156448466e-8,0.0036809565821238504,-2.4388619881055524e-5,2.101802531841774e-8,0.003680952179938686,-2.4218042502926116e-5,2.0704157135192892e-8,0.003680920788736872,-2.418258152607271e-5,2.063924897056901e-8,0.0036809307429876595,-2.428216159309294e-5,2.082238656290625e-8,0.0036810354111426534,-2.4473729304710523e-5,2.1173726237950885e-8,0.003681253971997315,-2.4690578711906134e-5,2.1570233191745147e-8,0.0036815697161010955,-2.4868511669727512e-5,2.1893875946001677e-8,0.00368194233743989,-2.4964629040890916e-5,2.2066135288962184e-8,0.003682324212490332,-2.496342898745231e-5,2.2059068741709067e-8,0.0036826731166814996,-2.4873277705717296e-5,2.1888636709994033e-8,0.0036829591588462465,-2.4718729832185195e-5,2.1600441398920033e-8,0.003683167023967205,-2.4532594782350245e-5,2.1255080252265367e-8,0.0036832954099022645,-2.4349370543578626e-5,2.0916081024659693e-8,0.0036833550335923348,-2.4200218198591833e-5,2.0640692551785886e-8,0.0036833658565634006,-2.410924176009306e-5,2.047307011231562e-8,0.00368335380237866,-2.4090944865297163e-5,2.0439619325797367e-8,0.0036833471475006176,-2.4148859135246296e-5,2.054650508300012e-8,0.003683372810946003,-2.4275435196936255e-5,2.07794955328708e-8,0.003683452919780664,-2.445325289733475e-5,2.110623168930102e-8,0.003683602046501696,-2.465734339942249e-5,2.1480525304410102e-8,0.003683825298735307,-2.4858264023953814e-5,2.184802813428788e-8,0.0036841172991974114,-2.5025683730293013e-5,2.2152849985111426e-8,0.0036844620856947494,-2.5132324086251992e-5,2.234486049199623e-8,0.003684833943600737,-2.5158192450841574e-5,2.2387540094785343e-8,0.0036851994497372497,-2.5095227283073492e-5,2.226654684123872e-8,0.003685521611166236,-2.495214102688181e-5,2.199854944989616e-8,0.0036857671361551635,-2.4758044853092278e-5,2.1637716007903936e-8,0.0036859169029455434,-2.4561976529873086E-05,2.127462522493109e-8,0.0036859772914223593,-2.44246555966739e-5,2.102094321803886e-8,0.0036859863765741317,-2.4400569866343113e-5,2.0976459090247287e-8,0.0036860072100742725,-2.451503865503077e-5,2.1187033549314085e-8,0.0036861059724534228,-2.4748908547852973e-5,2.1616674172997784e-8,0.003686324629094954,-2.504318975211854e-5,2.2156284356747038e-8,0.003686664486266351,-2.5323155005089623e-5,2.2668137696737203e-8,0.0036870898114569946,-2.5527244493044108e-5,2.303909962374833e-8,0.003687546149128421,-2.5624766795011134e-5,2.3213143420424893e-8,0.00368798044731879,-2.5617338941137874e-5,2.3193859568407812e-8,0.0036883539373483384,-2.5529670793774248e-5,2.3027315403045705e-8,0.0036886463867155743,-2.5397760191839542e-5,2.2780188658898496e-8,0.003688854693802478,-2.5259351496340612e-5,2.2522155643143783e-8,0.0036889891708466456,-2.5147850491353615e-5,2.231471497123031e-8,0.0036890695533378795,-2.5088946206269493e-5,2.2205016955307542e-8,0.0036891214131626097,-2.5098827308126288e-5,2.222261384963983e-8,0.0036891729137179556,-2.518329063537529e-5,2.2377841591020216e-8,0.0036892516769625227,-2.5337494371236543e-5,2.2661397865423784e-8,0.0036893816097385863,-2.554645169281843e-5,2.3045303929869593e-8,0.0036895797925711486,-2.578657672893664e-5,2.3485809567516533e-8,0.0036898538468566012,-2.6028463573269312e-5,2.392855402626147e-8,0.003690200266554174,-2.624073990187162e-5,2.431568410168666e-8,0.0036906040827712275,-2.6394652975592825e-5,2.4594312535909952e-8,0.0036910401320671615,-2.646892578198544e-5,2.4725481010514338e-8,0.0036914760290490357,-2.6454258869800837e-5,2.469246723504824e-8,0.0036918767628710283,-2.6356872170899155e-5,2.450728188668473e-8,0.003692210885339878,-2.6200462392483775e-5,2.4214168577148188e-8,0.0036924581686777775,-2.602543095805307e-5,2.388800430693621e-8,0.003692617733382483,-2.5883626505455566e-5,2.362443103435925e-8,0.0036927139953002153,-2.58271594885082e-5,2.3519158494680385e-8,0.0036927961075991973,-2.5891978747853797e-5,2.3637775773338626e-8,0.0036929267649546634,-2.6081277797364088e-5,2.398538810384016e-8,0.0036931609455419815,-2.6358161739026842e-5,2.4493348826303326e-8,0.0036935234174346435,-2.665549718890737e-5,2.5037572254635175e-8,0.003693998101314756,-2.6900775812927172e-5,2.5484402286752192e-8,0.0036945360219985063,-2.7042710855034788e-5,2.5739608547857825e-8,0.0036950760446270714,-2.7065371302568437e-5,2.57743737612283e-8,0.003695565661023816,-2.6985691375977797e-5,2.5620578062499176e-8,0.00369597274607554,-2.684069713273219e-5,2.5347080120574853e-8,0.003696287324292012,-2.667345195030066e-5,2.5033662232297028e-8,0.0036965173262114045,-2.6523010525635966e-5,2.4752456189175374e-8,0.0036966825886261623,-2.6419227346433036e-5,2.455840471365584e-8,0.003696809522700842,-2.6380986372349695e-5,2.4486064306819182e-8,0.0036969270936339123,-2.6416117172469423e-5,2.454950799475654e-8,0.0036970637745599656,-2.6521893503182198e-5,2.4743286277766767e-8,0.0036972449046433265,-2.6685737210574117e-5,2.504376987032764e-8,0.0036974900334030988,-2.6886274245188e-5,2.541115595707101e-8,0.003697810176347896,-2.7095219934198905e-5,2.5793006605434385e-8,0.0036982053804941253,-2.728057365079077e-5,2.613018555159297e-8,0.003698663356525077,-2.7411217452902692e-5,2.6365357275177697e-8,0.0036991599725369096,-2.7462484334453646e-5,2.6453253365305067e-8,0.0036996621606698965,-2.7421763096580724e-5,2.6370997112730044e-8,0.00370013328491362,-2.729281033021235e-5,2.6126029195423446e-8,0.0037005403211717563,-2.7097411250876837e-5,2.5759105766375958e-8,0.0037008616198824073,-2.6873458549975153e-5,2.534063229254157e-8,0.0037010937154705065,-2.6669054268328128e-5,2.4959623377691335e-8,0.0037012553893138378,-2.6532771677849146e-5,2.470560529795536e-8,0.003701386925754609,-2.6501162935385394e-5,2.464554459140342e-8,0.0037015427319560873,-2.65862451416973e-5,2.4800881221936585e-8,0.0037017770840136652,-2.6767600671031702e-5,2.5133175185444305e-8,0.003702126226889177,-2.6994365678892358e-5,2.5547991564237983e-8,0.003702594034496086,-2.7199503702774686e-5,2.5921361512321817e-8,0.003703149146929241,-2.7322124217394617e-5,2.6140992193989e-8,0.0037037362260185593,-2.732763109091641e-5,2.6143421934714618e-8,0.003704295665546802,-2.721607872496196e-5,2.5929372282700263e-8,0.0037047816795343263,-2.7016566312550213e-5,2.5553267597604028e-8,0.003705171555362991,-2.6773370862474705e-5,2.509745527697299e-8,0.003705465407158616,-2.6531809403462105e-5,2.4645955131628586e-8,0.0037056802842188206,-2.6328749558537203e-5,2.4266888380384873e-8,0.003705842962671197,-2.6188473724591307e-5,2.4004889346311846e-8,0.0037059839388316924,-2.6122241314280676e-5,2.3880388417301026e-8,0.0037061332623507665,-2.6129556128220352e-5,2.3892034999399584e-8,0.003706317770909461,-2.6199800840217618e-5,2.4019772205175913e-8,0.0037065589557418377,-2.6313745875571078e-5,2.4227665838511646e-8,0.003706870840343872,-2.644512355745995e-5,2.4466855843329514e-8,0.003707257688373799,-2.6562856852741105e-5,2.4679720562225874e-8,0.003707711915905993,-2.6634592082949376e-5,2.4806441695489335e-8,0.003708213120455237,-2.663186058357122e-5,2.479455939697902e-8,0.0037087294412449907,-2.6536451255494063e-5,2.4610743259413702e-8,0.003709222214515911,-2.6346543661015368e-5,2.4252099963225886e-8,0.0037096538724641567,-2.6080329046030495e-5,2.3752812169666824e-8,0.003709997524539029,-2.577492734907529e-5,2.3182040780489726e-8,0.0037102454227998637,-2.5479672505274922e-5,2.263137359655951e-8,0.0037104132986381126,-2.524481178501241e-5,2.219379012489409e-8,0.0037105385684950997,-2.5108446768208215e-5,2.1939440481081604e-8,0.003710672201591465,-2.5085405601484373e-5,2.1895121723236657e-8,0.0037108659074224157,-2.5161493732589e-5,2.2033822651041703e-8,0.0037111577917986476,-2.5295461489293446e-5,2.2278586025456243e-8,0.0037115606470070174,-2.542917933201141e-5,2.2521498478199035e-8,0.0037120571654388006,-2.5503837048517596e-5,2.2653719725711947e-8,0.003712604656330799,-2.5477070966070233e-5,2.259714366597435e-8,0.0037131481138471807,-2.5334611035146297e-5,2.232587717598007e-8,0.0037136365417578987,-2.509202414715311e-5,2.1869364929837613e-8,0.0037140360486028587,-2.4786787143587042e-5,2.1297584304020552e-8,0.0037143354755474435,-2.4465255139622436e-5,2.069678054959071e-8,0.003714544467024974,-2.4170306202152613e-5,2.0146497047207724e-8,0.003714687020580643,-2.393338515246342e-5,1.9704838425664365e-8,0.0037147941125955726,-2.3771532108372094e-5,1.9403042636394202e-8,0.0037148976705766875,-2.3687944947412868e-5,1.924662719845783e-8,0.0037150265340877417,-2.367419895466894e-5,1.9219583030809972e-8,0.003715204015883382,-2.37127525260934e-5,1.928905809182854e-8,0.0037154462776015544,-2.377915294824585e-5,1.9409457545578542e-8,0.0037157608120527794,-2.384409788521174e-5,1.9526274662557453e-8,0.0037161447586631148,-2.387597552240848e-5,1.9580823667812967e-8,0.003716583383528966,-2.384460787773986e-5,1.9517213785745727e-8,0.0037170496879362957,-2.372665990986959e-5,1.929240272445178e-8,0.003717506623292282,-2.3512366057301022e-5,1.8888665065491976e-8,0.003717913280569818,-2.3211764390501293e-5,1.832510925529357e-8,0.0037182350231976446,-2.2857213753819283e-5,1.766226069432184e-8,0.0037184549931704456,-2.2499015996168416e-5,1.69938183046161e-8,0.0037185822522199053,-2.2193400184984013e-5,1.642422937600723e-8,0.0037186520125712316,-2.1986125984029035e-5,1.6038180871423233e-8,0.0037187166025020217,-2.1897980951190913e-5,1.5873715102312037e-8,0.0037188302313518797,-2.1918094714878887e-5,1.5909975868926e-8,0.0037190333250862505,-2.200738683831528e-5,1.6073822676410523e-8,0.003719341736464505,-2.211021106517147e-5,1.6261616807192078e-8,0.003719743573072058,-2.216979978548509e-5,1.636795341593824e-8,0.0037202036700935363,-2.214280148765948e-5,1.631260873446929e-8,0.0037206737661205037,-2.2009147434640982e-5,1.6058763393847896e-8,0.0037211051970497504,-2.1775071201819367e-5,1.5618506174731158e-8,0.003721460458739193,-2.1469112666244478e-5,1.5045318183279198e-8,0.0037217205729197273,-2.113297412457324e-5,1.4417004888548999e-8,0.0037218868002361744,-2.081050254733132e-5,1.3815164650950308e-8,0.0037219772900882707,-2.0538209327698315e-5,1.3307554545741322e-8,0.003722020789722907,-2.033950176989565e-5,1.2937408851043707e-8,0.00372204987109083,-2.022296133826621e-5,1.2720322617019088e-8,0.0037220953992123298,-2.018363795951063e-5,1.2646747001885697e-8,0.0037221828649194387,-2.0205878245740093e-5,1.26873047206367e-8,0.0037223303313133104,-2.02664502220618e-5,1.2798609312135926e-8,0.003722547317866394,-2.0337344535813425e-5,1.292845264550573e-8,0.0037228339677174557,-2.0388317730423293e-5,1.3020518278734751e-8,0.003723180190839855,-2.0389705420379754e-5,1.3019629712220013e-8,0.0037235650128087322,-2.0316187736311858e-5,1.2878799919059847e-8,0.003723957027956693,-2.0152005616268402e-5,1.256897561523051e-8,0.003724317479797812,-1.9897320189773163e-5,1.2090860847159705e-8,0.0037246074892309214,-1.9573777293026863e-5,1.1485194896322013e-8,0.0037247994563825186,-1.922551672634567e-5,1.0834500081040653e-8,0.003724889413287953,-1.8911635022200557e-5,1.024891375539621e-8,0.003724903860006442,-1.8689419208005423e-5,9.834890386340725e-9,0.0037248950039658825,-1.8593936835862856e-5,9.657227552497414e-9,0.0037249241617011717,-1.8624070004157957e-5,9.713213497022367e-9,0.0037250406734058938,-1.874272347827841e-5,9.933231932671707e-9,0.003725266442256563,-1.889068343187049e-5,1.0206743013046786e-8,0.003725591957814072,-1.900639132302381e-5,1.0419161121580107e-8,0.0037259828367480837,-1.9042941445738243e-5,1.0483445088589561e-8,0.0037263919105630754,-1.8977532859680972e-5,1.0357575288150131e-8,0.0037267718541946424,-1.8812970780198845e-5,1.004722544629047e-8,0.0037270852122032435,-1.857321752592454e-5,9.597390829866145e-9,0.0037273105106150057,-1.829556589372417e-5,9.077766944676528e-9,0.0037274442822466383,-1.8021665816886436e-5,8.566019197106112e-9,0.003727499446205275,-1.7789180452793088e-5,8.132238797880786e-9,0.0037275009651962054,-1.762549477405663e-5,7.827238632585327e-9,0.003727480107433613,-1.7544324987777415e-5,7.676278027300595e-9,0.003727468693735596,-1.7545252223564655e-5,7.678260381961283e-9,0.0037274943796830745,-1.7615546114334517e-5,7.809198521585769e-9,0.0037275775048591624,-1.773333185341448e-5,8.028155894012631e-9,0.003727729461688348,-1.7871140037744037e-5,8.283855986333845e-9,0.0037279521045785026,-1.7999224672154963e-5,8.520831022886832e-9,0.0037282376812551145,-1.80885880022614e-5,8.685033780576021e-9,0.0037285690243083164,-1.8114038809190196e-5,8.729555432946514e-9,0.003728920113641478,-1.8057767593507887e-5,8.621345067804234e-9,0.0037292576952676747,-1.7913835381609194e-5,8.349624258909386e-9,0.0037295452618239825,-1.769325645659619e-5,7.935342096310923e-9,0.003729750685610381,-1.742782377238727e-5,7.438195143004906e-9,0.0037298573864923707,-1.7169070621178025e-5,6.954523489002591e-9,0.0037298756982351187,-1.6978346810287705e-5,6.598664526266755e-9,0.003729847357057938,-1.690734999300974e-5,6.466620041821976e-9,0.0037298361456615196,-1.6976011363689884e-5,6.594939654273422e-9,0.0037299052651525726,-1.716065001020904e-5,6.938856540972064e-9,0.003730092529452638,-1.7401587629302746e-5,7.386701385086378e-9,0.0037303974273488636,-1.7626624987369516e-5,7.803782958842304e-9,0.0037307856005640463,-1.7776600142330956e-5,8.080023637204767e-9,0.0037312048557727917,-1.782075236454326e-5,8.158500185359126e-9,0.0037316025984929033,-1.7758874434021704e-5,8.039315141398938e-9,0.003731938096263313,-1.7614499874872118e-5,7.76676690099454e-9,0.0037321881752387263,-1.7424800949631686e-5,7.410439462798648e-9,0.003732347832913049,-1.7230987288991442e-5,7.047285654047261e-9,0.003732427807332729,-1.7070752855394434e-5,6.747564430999931e-9,0.0037324505819447216,-1.6972951318685194e-5,6.564937105062063e-9,0.0037324456392299724,-1.695435236964585e-5,6.530439072511247e-9,0.003732444524964121,-1.701842445824136e-5,6.650238763256346e-9,0.0037324762624747466,-1.7155994000405556e-5,6.906918712508451e-9,0.003732563584080442,-1.734745000939961e-5,7.263649467205659e-9,0.003732720347862681,-1.7566052220995436e-5,7.670403442963853e-9,0.003732950305259306,-1.7781762662003478e-5,8.071102483695934e-9,0.003733247046701793,-1.796503766997897e-5,8.410658713739836e-9,0.003733594793483443,-1.8090329320746774e-5,8.641476568061361e-9,0.003733969829689655,-1.8139333953936072e-5,8.729522514097567e-9,0.0037343425695851745,-1.8104141430392796e-5,8.660245887318678e-9,0.003734680606263795,-1.7990430125363365e-5,8.444572497323546e-9,0.003734953553838489,-1.782034694147802e-5,8.124239420623847e-9,0.003735140403146867,-1.7633507226156773e-5,7.77352976095781e-9,0.003735238848109435,-1.748329459267977e-5,7.4921953391734e-9,0.003735273477531778,-1.742550583944127e-5,7.384151459049214e-9,0.0037352966592492363,-1.749922907883764e-5,7.52182191537506e-9,0.0037353759026406193,-1.7706708770883272e-5,7.908742842178216e-9,0.003735568740471046,-1.8005201420696946e-5,8.464598259716825e-9,0.003735897522340255,-1.8320262806021934e-5,9.050180658370451e-9,0.0037363400742964556,-1.8575326378219387e-5,9.522633384422312e-9,0.0037368415776035976,-1.8720037863678725e-5,9.788290822532997e-9,0.0037373380712256233,-1.874245668787921e-5,9.825363797506921e-9,0.0037377771555825133,-1.8663787364666786e-5,9.673974471483982e-9,0.0037381282616453346,-1.852433494079792e-5,9.409797508911304e-9,0.0037383834002827367,-1.8369540890756483e-5,9.117901324121186e-9,0.003738552757404369,-1.824019873721411e-5,8.874473223547163e-9,0.003738658809558917,-1.8167100505264942e-5,8.736870253285727e-9,0.003738730844138739,-1.8168783218842287e-5,8.739462794445459e-9,0.0037388003329487827,-1.8251037280980622e-5,8.892751862877826e-9,0.00373889698628947,-1.8407514500518183e-5,9.18453775255549e-9,0.0037390453516148825,-1.8621272393550024e-5,9.582855243041857e-9,0.0037392620029640536,-1.886722395403692e-5,1.0040612490717398e-8,0.0037395535311001136,-1.9115464924135617e-5,1.0501851379362463e-8,0.0037399156645016815,-1.9335279841595094e-5,1.0909231443508442e-8,0.003740333727271666,-1.949936503986908e-5,1.1211879486748627e-8,0.0037407843754003085,-1.9587781487259298e-5,1.1372730485053469e-8,0.00374123843967038,-1.9591286559904284e-5,1.1374739407503882e-8,0.003741664694071747,-1.951376722599113e-5,1.1225445494692067e-8,0.003742034426709988,-1.9373566096839915e-5,1.0959456056172562e-8,0.0037423268826330203,-1.9203348136011737e-5,1.0638143074060602e-8,0.0037425355319994974,-1.9047512251718933e-5,1.0344682395521544e-8,0.003742674153842459,-1.8955552707843683e-5,1.0171510875620036e-8,0.003742780075672932,-1.897020365172007e-5,1.0198117014107015e-8,0.003742910352084255,-1.91115247419747e-5,1.0461391980825988e-8,0.003743127236642866,-1.936274082819314e-5,1.0929372494595087e-8,0.0037434748877366456,-1.966787992300605e-5,1.1497025901544866e-8,0.0037439582292228346,-1.994830716850865e-5,1.2017239417133448e-8,0.0037445380916303205,-2.0132874757777342e-5,1.235715857869903e-8,0.003745147304945264,-2.018475709919423e-5,1.24483095139559e-8,0.003745717536123864,-2.0110039024257403e-5,1.2302602979977455e-8,0.0037462009957385913,-1.994718213155144e-5,1.1992528512288664e-8,0.003746578533952196,-1.9748112336383324e-5,1.1615631205305184e-8,0.0037468562058775336,-1.9561943110626034e-5,1.1263957057301948e-8,0.0037470568320752493,-1.942580720910747e-5,1.1006894832462288e-8,0.003747211591296955,-1.936188801722068e-5,1.0885690830408487e-8,0.0037473537091404366,-1.937798694893093e-5,1.0914592901045096e-8,0.00374751426169476,-1.9469411529319156e-5,1.1084443738119213e-8,0.003747719306811906,-1.9621107982094123e-5,1.1366715498674678e-8,0.003747987653823677,-1.98098865025236e-5,1.171772196127629e-8,0.0037483289877986337,-2.00069900657524e-5,1.2083476553019989e-8,0.0037487424409848157,-2.018133651430223e-5,1.2405790481457967e-8,0.003749216049729212,-2.0303576953806943e-5,1.262985740223278e-8,0.0037497276616432853,-2.0350656359240593e-5,1.2712744009555985e-8,0.0037502476097356495,-2.0310161881186038e-5,1.263147987969798e-8,0.0037507430698388022,-2.01836052339569e-5,1.238917732256602e-8,0.003751183640813286,-1.9987806416820744e-5,1.201762072309364e-8,0.003751547358372743,-1.975377558398845e-5,1.1575159589463945e-8,0.0037518262278624856,-1.9522888966651756e-5,1.1139487350292194e-8,0.003752030366449994,-1.9340357022812065e-5,1.0795307888503861e-8,0.003752189575101569,-1.9246075080711368e-5,1.0617115929008991e-8,0.00375235065514588,-1.926362082860626e-5,1.0648597353873207e-8,0.00375256874733072,-1.9389760757096198e-5,1.0883103913087454e-8,0.0037528923589819,-1.95889336244771e-5,1.1253515334163685e-8,0.003753345377221318,-1.9798233653190108e-5,1.1641722277737352e-8,0.003753914085684261,-1.9945444226348306e-5,1.1912441558529761e-8,0.0037545482183929373,-1.997468342657704e-5,1.1961217063101045e-8,0.003755178268860511,-1.9866841003214947e-5,1.1752664664935419e-8,0.003755740498054235,-1.9643572837075e-5,1.132790926630942e-8,0.003756196287862252,-1.9354386897528227e-5,1.078027677361611e-8,0.0037565380292510645,-1.9056473937833167e-5,1.02173374524946e-8,0.003756783287516352,-1.879808625982981e-5,9.729641408606765e-9,0.003756964059188642,-1.8610299848009276e-5,9.375278483928095e-9,0.0037571168822495586,-1.850601029274588e-5,9.178087064121487e-9,0.0037572761536310796,-1.8482743679660896e-5,9.133032553034088e-9,0.003757470458105261,-1.8526444575679007e-5,9.213386299761704e-9,0.003757720726876309,-1.8614862202039136e-5,9.377117285257808e-9,0.0037580391353763576,-1.8720347719301517e-5,9.572164083264661e-9,0.0037584281701537876,-1.88124868526117e-5,9.741392613497707e-9,0.003758879845331222,-1.886115999095588e-5,9.828343171502811e-9,0.003759375547369298,-1.884045521805883e-5,9.784556157303305e-9,0.0037598873171901443,-1.8733336140393533e-5,9.578297218737537e-9,0.0037603812993048536,-1.8536245409891986e-5,9.20316322759362e-9,0.003760823522734917,-1.826223272290799e-5,8.683933253519903e-9,0.0037611872682305502,-1.794102306496649e-5,8.07668074991078e-9,0.003761460322951104,-1.761495849043393e-5,7.461118830695648e-9,0.003761649939215854,-1.7330967802997768e-5,6.925453527388214e-9,0.003761783669047966,-1.7130080930370736e-5,6.546618226195867e-9,0.0037619052215471355,-1.7036850169632218e-5,6.370380696093653e-9,0.0037620655927134623,-1.7051287457088965e-5,6.396265383341771e-9,0.0037623107889809214,-1.7145824206739997e-5,6.571987750426438e-9,0.0037626686506996173,-1.7269316797664524e-5,6.8011328521040325e-9,0.0037631385620556235,-1.7358826009662052e-5,6.965369983083214e-9,0.003763688525936491,-1.735727517214488e-5,6.957620478797519e-9,0.0037642627046168722,-1.7231514285195872e-5,6.7159383377332736e-9,0.003764798192409383,-1.6983144070799588e-5,6.243784790204022e-9,0.003765244475384821,-1.6646684177942917e-5,5.606514320308481e-9,0.003765577041731878,-1.6276113749033035e-5,4.905976489211403e-9,0.0037658001496303955,-1.5926872483978327e-5,4.246574565661419e-9,0.003765940043113608,-1.5641428521669665e-5,3.7080826046676444e-9,0.0037660339883212393,-1.5442580188857785e-5,3.3330932819261697e-9,0.0037661202972565054,-1.533378212849883e-5,3.1277370664346276e-9,0.0037662317987403426,-1.530331931720143e-5,3.0696368494463564e-9,0.00376639269783391,-1.5329353706236113e-5,3.117459743615627e-9,0.0037666175999535394,-1.5384239766858776e-5,3.2190461479142756e-9,0.003766911424015544,-1.5437798596845338e-5,3.3175546155956647e-9,0.0037672694199051165,-1.5460010735471215e-5,3.3565118674225895e-9,0.003767677144880793,-1.5423844881946676e-5,3.285127707090549e-9,0.0037681108405431198,-1.5308808573030386e-5,3.0649759961602738e-9,0.00376853909328297,-1.5105335091860154e-5,2.678249819012819e-9,0.0037689267978603287,-1.4819271966290807e-5,2.1362017496681052e-9,0.0037692419464796334,-1.4474679157593949e-5,1.4843891964449467e-9,0.003769464408607395,-1.4112525842013234e-5,8.001758661740843e-10,0.0037695940570376656,-1.3783562552421724e-5,1.7924187200268179e-10,0.003769654513644912,-1.3535943066435279e-5,-2.877953882684514e-10,0.003769689655352273,-1.3401132828683478e-5,-5.419454827697908e-10,0.0037697528877103145,-1.3383352936094304e-5,-5.756719343471206e-10,0.0037698924838657317,-1.3456848768446041e-5,-4.379133873754168e-10,0.0037701379529232566,-1.3572133855236433e-5,-2.2219011005250034e-10,0.0037704917152187136,-1.36690613658659e-5,-4.190341608565942e-11,0.003770928286669406,-1.3692704936665648e-5,-4.184426881656405e-13,0.003771400984222682,-1.360764722503169e-5,-1.6419689144365008e-10,0.0037718542846100875,-1.3406801484918508e-5,-5.462400593197952e-10,0.0037722383742051645,-1.3112239502991186e-5,-1.1045888736203505e-9,0.0037725215280944423,-1.2767820548965187e-5,-1.756277314541145e-9,0.003772696517123917,-1.2426225277517897e-5,-2.4018373226817705e-9,0.003772779492258509,-1.2135018031827889e-5,-2.9516198186066968e-9,0.0037728027992608884,-1.1926333275018554e-5,-3.345233937647147e-9,0.003772805248437262,-1.1812618336310583e-5,-3.559509949169215e-9,0.0037728234022769208,-1.1787985186950563e-5,-3.605855082757096e-9,0.003772885871274732,-1.1832888997680663e-5,-3.5213519611769673e-9,0.0037730107830056705,-1.1919671821302818e-5,-3.3582733409701644e-9,0.0037732054834411486,-1.201738319949041e-5,-3.1750111515168823e-9,0.0037734672788120238,-1.2095393134790393e-5,-3.029308059715573e-9,0.0037737843623683997,-1.2126141515841897e-5,-2.9731078275435696e-9,0.0037741366633792803,-1.2087713479066177e-5,-3.0477005332985616e-9,0.0037744969434948855,-1.1966854684521575e-5,-3.2780044851181107e-9,0.0037748329505799573,-1.1762652811277419e-5,-3.665584516120736e-9,0.0037751117090649177,-1.1490296257088035e-5,-4.1815534879312055e-9,0.003775306671071242,-1.1183066734645489e-5,-4.762857357367671e-9,0.0037754069823609203,-1.0889694911885241e-5,-5.3173572358538974e-9,0.0037754256798606545,-1.0664706834353456e-5,-5.742147928915882e-9,0.003775401726689244,-1.0552455653838138e-5,-5.953742048116789e-9,0.003775391866454253,-1.0570337492320954e-5,-5.9196954740658214E-09,0.0037754533346908404,-1.069965404964022e-5,-5.6757115830877735e-9,0.0037756245234761812,-1.0889973474384802e-5,-5.3172574611983255e-9,0.0037759125769722722,-1.1075505491388981e-5,-4.9685789284492975e-9,0.0037762927653174714,-1.119569145297422e-5,-4.743856103245313e-9,0.0037767180710236953,-1.1211551456236634e-5,-4.716422581730153e-9,0.0037771336262513635,-1.1113289439129748e-5,-4.904484620551893e-9,0.0037774906920141566,-1.0919093669290008e-5,-5.273435637376515e-9,0.0037777568305629415,-1.0667562119560446e-5,-5.750186818487831e-9,0.0037779208867569462,-1.0406866195721732e-5,-6.243650787702565e-9,0.003777992767016646,-1.018352746019933e-5,-6.665958168127169e-9,0.0037779989182269913,-1.0033140590648544e-5,-6.949989656900959e-9,0.0037779751011073896,-9.97469904417571e-6,-7.060078675057539e-9,0.0037779584786724603,-1.0009194292538516e-5,-6.994608417451776e-9,0.0037779809048557934,-1.0121958368840203e-5,-6.781516708789922e-9,0.0037780645720082466,-1.0287344353781977e-5,-6.469394097223917e-9,0.003778220234630747,-1.047413085648688e-5,-6.1172540917545026e-9,0.003778447456985994,-1.0650388607779883e-5,-5.785368244403539e-9,0.003778735979536752,-1.078723859059365e-5,-5.528224279977244e-9,0.0037790674522738318,-1.086163687447547e-5,-5.3893085312301e-9,0.0037794172242492487,-1.0858682366088469e-5,-5.396741791551607e-9,0.003779756331525049,-1.0773944571270184e-5,-5.55883105247937e-9,0.0037800542820276006,-1.0616049404699768e-5,-5.859127603922072e-9,0.0037802835715694304,-1.0409041615552987e-5,-6.251958361016585e-9,0.0037804265587483227,-1.019284428731572e-5,-6.661632999833887e-9,0.0037804839392265306,-1.0019107510829138e-5,-6.990419724209726e-9,0.003780481632655872,-9.940027335123063e-6,-7.139785874260027e-9,0.003780470551458204,-9.990760852975178e-6,-7.043636122099973e-9,0.0037805145003715693,-1.0171924492472818e-5,-6.701260118724001e-9,0.0037806679024364473,-1.0443026877787217e-5,-6.189548974586507e-9,0.003780953749669685,-1.0734040814978671e-5,-5.640990002948598e-9,0.003781354446672115,-1.0970848138577473e-5,-5.195569712053512e-9,0.0037818202123343133,-1.1100878236964057e-5,-4.952398320323635e-9,0.0037822885451625726,-1.1106690075405191e-5,-4.9441331682067115e-9,0.0037827037918562686,-1.1004732221553931e-5,-5.139393429677356e-9,0.003783029580921028,-1.083450210581651e-5,-5.463297256101165e-9,0.0037832528926456414,-1.0645014240624529e-5,-5.8230619263333884E-09,0.003783382008619057,-1.0483107839539345e-5,-6.130107278142606e-9,0.0037834411521074293,-1.0385293670330903e-5,-6.315462602182711e-9,0.003783463866855065,-1.0373167422302901e-5,-6.338434431871988e-9,0.003783486346677699,-1.0451924135314523e-5,-6.1894075059543604e-9,0.0037835415059761126,-1.0611498941792025e-5,-5.887657773983901e-9,0.0037836543994592214,-1.0829747870240204e-5,-5.475280541301254e-9,0.0037838393893894684,-1.1076912436351042e-5,-5.00868499477498e-9,0.0037840991940355684,-1.1320547095963303e-5,-4.549244861849569e-9,0.0037844256115939245,-1.1530111692398709e-5,-4.154636535393267e-9,0.003784801380528869,-1.168067724546158e-5,-3.871892905681978e-9,0.0037852026131201958,-1.1755664641185652e-5,-3.732277813199833e-9,0.0037856015155439153,-1.1748839795853997e-5,-3.747515652641209e-9,0.003785969367532291,-1.166580442859177e-5,-3.906921033511718e-9,0.00378628001510182,-1.1525110745466617e-5,-4.175235589964458e-9,0.003786514449205436,-1.1358637205725354e-5,-4.491921267897067e-9,0.0037866667919770496,-1.1209875032777431e-5,-4.774493370527981e-9,0.0037867507548969247,-1.1128029735137191e-5,-4.929817589830909e-9,0.0037868036489551913,-1.1156279232741838e-5,-4.8764159931144795e-9,0.0037868831215570773,-1.1315159538627571e-5,-4.575860551166065e-9,0.0037870524179700496,-1.1587432273622035e-5,-4.061235434398263e-9,0.0037873563096598654,-1.1915434657407038e-5,-3.441960618087722e-9,0.0037877994416602927,-1.2218268853877623e-5,-2.871179678081107e-9,0.00378834159065941,-1.2422814649923206e-5,-2.4871089224278254e-9,0.0037889140278449785,-1.249102829822317e-5,-2.361451809750297e-9,0.0037894464319104034,-1.2428832387716597e-5,-2.4826372919214795e-9,0.003789888854569995,-1.2276000741283246e-5,-2.775033513542293e-9,0.003790220598166225,-1.2087372015433666e-5,-3.13458685349092e-9,0.003790447689810322,-1.1915907774812648e-5,-3.4609407828149515e-9,0.0037905948035725874,-1.1802236082212254e-5,-3.6772233896817644e-9,0.003790696401172688,-1.1770385986698964e-5,-3.73808626895047e-9,0.003790789335206898,-1.1827575732369238e-5,-3.6300747743801807e-9,0.003790907337032187,-1.1966138926110403e-5,-3.3679632150517645e-9,0.0037910770946163676,-1.2166553303929558e-5,-2.9889909055131355e-9,0.0037913156361942314,-1.2401135693384962e-5,-2.545809144827838e-9,0.0037916289168516333,-1.263815898674036e-5,-2.0986190900712304e-9,0.0037920116463947694,-1.2846175399722612e-5,-1.7069510131467538e-9,0.0037924484233062025,-1.299819527970367e-5,-1.4217770124520617e-9,0.0037929160329965078,-1.3075228465631499e-5,-1.2788768709480869e-9,0.0037933865555892653,-1.3068858631174979e-5,-1.294030013439374e-9,0.0037938309814365434,-1.2982776331081918e-5,-1.4601266957738199e-9,0.0037942231481280977,-1.283322743822306e-5,-1.7462770627408988e-9,0.003794543866539171,-1.2648304256008901e-5,-2.0991058430070644e-9,0.003794785242433129,-1.2465858940810928e-5,-2.4467144889246194e-9,0.0037949550625008244,-1.232927438422763e-5,-2.7067816859225326e-9,0.003795080187817642,-1.2279927284374798e-5,-2.8009626097236014e-9,0.0037952065161867134,-1.2345871523227187e-5,-2.6763892980301933e-9,0.0037953921373555235,-1.2528542983790664e-5,-2.3307936469979733e-9,0.0037956913857025054,-1.2793157015980988e-5,-1.8305356927816436e-9,0.003796132776286854,-1.3071563213552118e-5,-1.3050406169510527e-9,0.0037967017325761278,-1.328280143626571e-5,-9.077926254452141e-10,0.0037973411548898497,-1.3364516232244082e-5,-7.568234874396928e-10,0.0037979727650269374,-1.3297561018064426e-5,-8.881042448926196e-10,0.003798527090663047,-1.3109356495992466e-5,-1.2492122368724608e-9,0.003798964917021712,-1.28570520619648e-5,-1.7313517826797332e-9,0.0037992820034057637,-1.2603783737617608e-5,-2.2145093402545987e-9,0.003799500926082306,-1.240063635168012e-5,-2.6017407417391375e-9,0.0037996585584883936,-1.2278587025970907e-5,-2.8344302677579545e-9,0.0037997952173949366,-1.2248205620853774e-5,-2.892780987975255e-9,0.0037999474748775944,-1.2303191954665917e-5,-2.789037696090718e-9,0.003800144171209063,-1.2424890429828608e-5,-2.5588855394347242e-9,0.0038004044225855666,-1.2586549203308632e-5,-2.2533402981175947e-9,0.003800736709459013,-1.2757180681021012e-5,-1.9313801867040904e-9,0.0038011386726849684,-1.2905234943333781e-5,-1.6529274004774604e-9,0.0038015976307220777,-1.300228941643676e-5,-1.4718298071475957e-9,0.0038020920655212837,-1.3026745702081325e-5,-1.4288825387251392e-9,0.0038025942999659027,-1.2967137471847075e-5,-1.5456250913598982e-9,0.0038030742779153713,-1.2824453504739554e-5,-1.8199956009474816e-9,0.0038035040835843223,-1.2613005619355985e-5,-2.224696148359336e-9,0.003803862725819495,-1.2359515273662385e-5,-2.7088896073266286e-9,0.0038041406058219682,-1.210021971862752e-5,-3.203654961905564e-9,0.003804343039903815,-1.187601536262798e-5,-3.6312222314006306e-9,0.0038044921992625045,-1.172572264151848e-5,-3.9178384073525195e-9,0.00380462650870891,-1.1677577510893996e-5,-4.010014190249887e-9,0.0038047960105914956,-1.1739750231113836e-5,-3.892553967922982e-9,0.0038050522524015824,-1.1892359741202971e-5,-3.603641811340095e-9,0.0038054328722651374,-1.2085474055587181e-5,-3.238495369877979e-9,0.003805944893983198,-1.224821847258572e-5,-2.931950879082715e-9,0.003806555314129275,-1.2310374852742212e-5,-2.8173999266934114e-9,0.003807197680863527,-1.2229146407934576e-5,-2.9759540232212596e-9,0.0038077950074467274,-1.2006673466743497e-5,-3.4031768325958983e-9,0.003808287639007238,-1.1687444632760447e-5,-4.014049779331443e-9,0.003808650970431554,-1.1338022030420527e-5,-4.681632012604156e-9,0.003808896131037573,-1.1022265614456972e-5,-5.284306129734353e-9,0.0038090582406506883,-1.0784417102233183e-5,-5.738002868905132e-9,0.0038091815513970188,-1.0643809594594406e-5,-6.006202185145872e-9,0.003809307974440942,-1.0597903969188504e-5,-6.094047127429888e-9,0.0038094707196667066,-1.062865600428072e-5,-6.036147477861492e-9,0.0038096919065528753,-1.070881560223071e-5,-5.8845641294033734e-9,0.003809982306819115,-1.0806887438420577e-5,-5.699365884995947e-9,0.003810341878982876,-1.0890883083801036e-5,-5.541482188826337e-9,0.003810760558410313,-1.0931470433055232e-5,-5.466698369518253e-9,0.003811219360612792,-1.0905036479831683e-5,-5.5198308461602985e-9,0.003811692191355198,-1.0796853778255012e-5,-5.728734249431048e-9,0.0038121488378866334,-1.0604042188757008e-5,-6.098714331775193e-9,0.0038125593293713445,-1.0337543772812268e-5,-6.608803289335694e-9,0.003812899313522184,-1.0022178567600895e-5,-7.211652084835195e-9,0.003813155569947561,-9.694053505107579e-6,-7.838435889364233e-9,0.003813330410478557,-9.395101236701062e-6,-8.409236512806301e-9,0.0038134436413059824,-9.165292526420089e-6,-8.847896464769259e-9,0.0038135310890633975,-9.033789295919845e-6,-9.098924795496566e-9,0.0038136392405932478,-9.010703935907942e-6,-9.143237881021444e-9,0.0038138161247166904,-9.081404582108e-6,-9.008993457535895e-9,0.003814099382214336,-9.205645720023213e-6,-8.773169562587337e-9,0.0038145038512597245,-9.323767143029389e-6,-8.549656250554983e-9,0.003815012795942145,-9.370894020933878e-6,-8.462137200027408e-9,0.0038155779477628124,-9.29673571143693E-06,-8.606350895718982e-9,0.0038161315938342274,-9.08397255339519e-6,-9.015063906599803e-9,0.0038166080185463146,-8.755923206484596e-6,-9.64348405426532e-9,0.003816965037754244,-8.368207760136484e-6,-1.0385219024877421e-8,0.003817195248806939,-7.988222530295059e-6,-1.1111520776134655e-8,0.0038173229340541176,-7.673167559394442e-6,-1.1713278449963451e-8,0.0038173910001939285,-7.456361956860252e-6,-1.212711923818663e-8,0.0038174460930694254,-7.344703089557365e-6,-1.234016488954878e-8,0.0038175278039535875,-7.323953104584782e-6,-1.2379836417372083e-8,0.00381766349450458,-7.3667834734719346E-06,-1.2298441630227018e-8,0.003817867345920316,-7.44006181186134e-6,-1.2159268639340678e-8,0.003818141527292887,-7.510114938000029e-6,-1.2026573341010378e-8,0.003818477933177015,-7.546220680736763e-6,-1.1958946292781465e-8,0.003818859819405176,-7.523169308927341e-6,-1.2004439996582582e-8,0.0038192634063506886,-7.4236603910782554e-6,-1.2196000644852678e-8,0.0038196599709800997,-7.2408663983656445e-6,-1.254657877456703e-8,0.003820019070571289,-6.980898470168708e-6,-1.3044426574530458e-8,0.0038203132898458427,-6.664287919255013e-6,-1.3650268900585339e-8,0.0038205242460868597,-6.325154432293589e-6,-1.4298887743684189e-8,0.0038206486164603457,-6.006817141678243e-6,-1.4907506500728048e-8,0.0038207020750147184,-5.75354803338733e-6,-1.5391558345619086e-8,0.0038207189146382747,-5.599839594091006e-6,-1.568521212544733e-8,0.0038207461938191602,-5.560151445206347e-6,-1.5760970711142652e-8,0.00382083315281559,-5.622636517693993e-6,-1.5641635859755003e-8,0.003821018492077559,-5.749455228146534e-6,-1.5399662200224305e-8,0.0038213190875863523,-5.884391306755396e-6,-1.5142562499287096e-8,0.0038217235693960125,-5.966361142703782e-6,-1.4987076158289204e-8,0.0038221931563597426,-5.9456270845393625e-6,-1.502819170366169e-8,0.0038226704818977797,-5.798272337779563e-6,-1.531149257821805e-8,0.0038230947974088572,-5.5340664292121286e-6,-1.581812655956149e-8,0.0038234191450172406,-5.194116998158923e-6,-1.6469310260958883e-8,0.003823623312951976,-4.838285790666961e-6,-1.7150435861376128e-8,0.0038237175482825378,-4.526986941152714e-6,-1.7745939341755873e-8,0.0038237362016777052,-4.3046651521168036e-6,-1.8170927741837015e-8,0.003823725137708133,-4.1908453164058315e-6,-1.8388262055022257e-8,0.003823728754133948,-4.180212251173304e-6,-1.8408322336149633e-8,0.0038237809830387044,-4.2490079943162265e-6,-1.8276693046141356e-8,0.0038239015028385787,-4.363551982793333e-6,-1.8057833412152605e-8,0.003824095946593768,-4.487740674388706e-6,-1.7820751134813358e-8,0.003824358126063857,-4.588281903972761e-6,-1.7629039709488436e-8,0.0038246727136478013,-4.637862217435199e-6,-1.753487003336477e-8,0.003825017627068585,-4.61711276381841e-6,-1.7575256806811815e-8,0.003825366118825118,-4.516259894351772e-6,-1.7768895996776932e-8,0.0038256891088083935,-4.336919177129825e-6,-1.8112701958105336e-8,0.0038259584950023394,-4.093846046758095e-6,-1.8578421203903003e-8,0.00382615197722384,-3.815735474025295e-6,-1.9111084395452904e-8,0.0038262592364493595,-3.543489200549398e-6,-1.963234108463913e-8,0.0038262880282502877,-3.3242349858685718e-6,-2.005195595532296e-8,0.0038262672917729517,-3.200584377536259e-6,-2.0288421016364784e-8,0.0038262439982333636,-3.197318624244381e-6,-2.029444817156697e-8,0.003826272400189211,-3.3105522427901474e-6,-2.0077656752741834e-8,0.0038263982363601133,-3.505059768382942e-6,-1.9705603558615896e-8,0.003826643866615569,-3.7224637285441357e-6,-1.929005491723827e-8,0.003827000550067141,-3.897808129259171e-6,-1.8955276671465806e-8,0.0038274307773840765,-3.9781801362031975e-6,-1.8802446818552187e-8,0.0038278791501668245,-3.936838386802747e-6,-1.8882656721060616e-8,0.003828287511464482,-3.7789936758587133e-6,-1.91858484343628e-8,0.003828609599833306,-3.538639788532877e-6,-1.9646859993872794e-8,0.0038288214789188135,-3.2682591437941436e-6,-2.01651251887211e-8,0.0038289254924217973,-3.0247269062595245e-6,-2.0631684713590868e-8,0.0038289472814131997,-2.855414110560565e-6,-2.0955834728401942e-8,0.0038289273259179074,-2.788188187669053e-6,-2.108429624581785e-8,0.0038289100096469695,-2.827593307999e-6,-2.100851341943847e-8,0.0038289336504991763,-2.957270847791984e-6,-2.0759969177050435e-8,0.0038290239989857604,-3.1466075062872564e-6,-2.0397397678011425e-8,0.0038291919363631554,-3.358735621529485e-6,-1.9991428033826533e-8,0.0038294345412146105,-3.5575484015966483e-6,-1.9611153660184545e-8,0.0038297379974115684,-3.7126062375014595e-6,-1.931477643950267e-8,0.0038300809546290265,-3.8019422327944494e-6,-1.9144289526878937e-8,0.003830437556664625,-3.813471476213471e-6,-1.9122815383613343e-8,0.0038307800423785735,-3.7458453013279217e-6,-1.925296167705247e-8,0.0038310813355700818,-3.6092600087004904e-6,-1.951522260747604e-8,0.003831318289772106,-3.4261620143933223e-6,-1.9866570427390518e-8,0.0038314761727888578,-3.2310651372663914e-6,-2.024078705408704e-8,0.003831554328173983,-3.067891478985199e-6,-2.0553606536838275e-8,0.00383157155253598,-2.9829338185445362e-6,-2.071629056719002e-8,0.0038315679388297268,-3.0127134004410304e-6,-2.0658964500687748e-8,0.0038315991481782685,-3.1692879484097765e-6,-2.0358751628086406e-8,0.0038317214021556132,-3.429727904878386e-6,-1.9859827008455862e-8,0.0038319713636641617,-3.7377031114383478e-6,-1.9270251199510938e-8,0.003832350581616624,-4.0199454376947184e-6,-1.8730381252591345e-8,0.003832823444733821,-4.211063811726861e-6,-1.8365375552540856e-8,0.0038333298168283644,-4.2746105018214276e-6,-1.82449115700899e-8,0.0038338051698647065,-4.211439514210527e-6,-1.8367216874901712e-8,0.003834198761806769,-4.0546278942909735e-6,-1.8668806860764246e-8,0.003834484151940069,-3.856273197654131e-6,-1.9049773936193798e-8,0.0038346613147808603,-3.6724518049993973e-6,-1.940260611015573e-8,0.0038347524550533677,-3.550605899014387e-6,-1.9636361789940677e-8,0.0038347942577808274,-3.52127028068912e-6,-1.969253972068335e-8,0.0038348288874075678,-3.5944825007219915e-6,-1.9551978029488838e-8,0.0038348954913967792,-3.7604912766397788e-6,-1.9233502467926943e-8,0.0038350235792819626,-3.9939514459539405e-6,-1.8785861778853742e-8,0.0038352291926199416,-4.260277158951203e-6,-1.8275496622939114e-8,0.003835514073341714,-4.522523088560736e-6,-1.7773291753942183e-8,0.0038358673369616493,-4.7473979554075516E-06,-1.7343025332758908e-8,0.0038362687210526454,-4.9095732722181525e-6,-1.7033139263666595e-8,0.00383669236799276,-4.99408908331157e-6,-1.6872194841765404e-8,0.003837110381916312,-4.997253315309627e-6,-1.6867206012024054e-8,0.0038374959397268127,-4.926686817006647e-6,-1.7003556999435392e-8,0.003837826168240292,-4.800973729438346e-6,-1.724561889505605e-8,0.0038380852198412027,-4.64897087800454e-6,-1.7538006826362915e-8,0.0038382680055769084,-4.508244405378731e-6,-1.780856000998818e-8,0.0038383845372422826,-4.4213473667315845e-6,-1.7975542156029803e-8,0.0038384635487548452,-4.428331072852901e-6,-1.7962111992879813e-8,0.003838552412999034,-4.554891468079644e-6,-1.7719129920892407e-8,0.003838709449637709,-4.79857611780019e-6,-1.7251579776228027e-8,0.003838986727658379,-5.120008018211622e-6,-1.6635275122453434e-8,0.0038394080255532118,-5.448208410521412e-6,-1.6006525398447498e-8,0.0038399539523913803,-5.703228860578149e-6,-1.5518689679738132e-8,0.003840565607656355,-5.826728491288216e-6,-1.5283563189269852e-8,0.0038411666084649057,-5.803303992373885e-6,-1.5330502316579828e-8,0.003841690669226006,-5.6615015185918996e-6,-1.5604511736937722e-8,0.0038421002535852433,-5.457713918832178e-6,-1.5997183329700725e-8,0.0038423907809453407,-5.254822630049416e-6,-1.6387728287251544e-8,0.003842584084612968,-5.1054363205735894e-6,-1.6675159725889587e-8,0.0038427176193724898,-5.043044755021766e-6,-1.6795248365588627e-8,0.003842834018332966,-5.07989312250766e-6,-1.6724578044920652e-8,0.003842972942410085,-5.209054269116863e-6,-1.6476567824802356e-8,0.0038431654789848045,-5.4086399567047076e-6,-1.60933997922233e-8,0.00384343077449617,-5.647036470412883e-6,-1.563595510392797e-8,0.00384377466746861,-5.888566057774086e-6,-1.5172890552403953e-8,0.003844190175581018,-6.098988812967744e-6,-1.477000694122479e-8,0.0038446595948861905,-6.250255466342545e-6,-1.4481091439427506e-8,0.003845157818995818,-6.324023724179862e-6,-1.4341201409106802e-8,0.0038456562996112983,-6.313615647304992e-6,-1.4362989566193652e-8,0.003846127011783707,-6.224437602563978e-6,-1.4535971378501742e-8,0.003846546039512686,-6.073206328661482e-6,-1.4828020425045514e-8,0.0038468967151338742,-5.886318244836747e-6,-1.518844046641186e-8,0.0038471724104394123,-5.6974965543184785e-6,-1.5552409101517088e-8,0.0038473791476006172,-5.544524492413738e-6,-1.5847232591313744e-8,0.0038475379016441485,-5.464345014145458e-6,-1.6001824499551356e-8,0.0038476855030219305,-5.485613097100651e-6,-1.596112434254084e-8,0.003847871879727775,-5.6186931393504005e-6,-1.5705383768277254e-8,0.0038481508803807564,-5.845389848453475e-6,-1.526986177286528e-8,0.003848563503714657,-6.114171536753636e-6,-1.4753886498476955e-8,0.0038491178160156275,-6.348715588209728e-6,-1.4304328128888127e-8,0.0038497770085141143,-6.472740813382431e-6,-1.4067840281603289e-8,0.0038504673064347367,-6.441502007513236e-6,-1.4130328256331074e-8,0.0038511053849232322,-6.261082594443713e-6,-1.4479857491646347e-8,0.003851629844832358,-5.983091492067725e-6,-1.5016874116127136e-8,0.003852018859395578,-5.680152288202065e-6,-1.5601434430578248e-8,0.0038522882875718684,-5.418923444947771e-6,-1.6105201466218447e-8,0.0038524776393092323,-5.243503092060938e-6,-1.644339124890214e-8,0.0038526343526436983,-5.171293042120779e-6,-1.658266798991624e-8,0.0038528022610099396,-5.196803821713961e-6,-1.6533754071038998e-8,0.003853015203081441,-5.2983925912731155e-6,-1.6338444310091512e-8,0.003853294442269686,-5.444945618229092e-6,-1.6056762373860484e-8,0.0038536482567425854,-5.601504835855946e-6,-1.5756133822008962e-8,0.0038540726814287585,-5.7339517789242305e-6,-1.550233250246981e-8,0.0038545530770026947,-5.813032433141409e-6,-1.535167747524828e-8,0.003855066511348219,-5.817774971569551e-6,-1.5344433001374196e-8,0.0038555849763886965,-5.738119863076067e-6,-1.5499788248752717e-8,0.0038560793166990247,-5.576384824864866e-6,-1.5813120373490353e-8,0.0038565234608473496,-5.347216994734051e-6,-1.6256150387493468e-8,0.0038568984147355433,-5.075979025649893e-6,-1.678004601450871e-8,0.00385719557764678,-4.795731754718215e-6,-1.7321162029551486e-8,0.0038574190570229696,-4.543041028615571e-6,-1.780903983008837e-8,0.003857586762326891,-4.352859428110214e-6,-1.817625138390654e-8,0.003857730049101876,-4.252572787910336e-6,-1.8369938134093778e-8,0.0038578912513364937,-4.255213948707043e-6,-1.8364992404288677e-8,0.003858117874957074,-4.3525404651654585e-6,-1.8177456727680517e-8,0.003858452354547486,-4.510210597999658e-6,-1.7873784612501723e-8,0.003858917791777117,-4.669051428707108e-6,-1.756829129472984e-8,0.003859503672194377,-4.756979406824098e-6,-1.7400082133742694e-8,0.003860160107605068,-4.712384004790362e-6,-1.7487936966225806e-8,0.0038608091664962376,-4.510570068775836e-6,-1.7879323414882926e-8,0.003861372398538454,-4.177424357879907e-6,-1.8524047943606895e-8,0.003861800506333025,-3.7795425476321384e-6,-1.9293349565570984e-8,0.0038620880164654562,-3.396288792625095e-6,-2.0033913711143205e-8,0.003862267166860147,-3.0911799396654256e-6,-2.062317555474824e-8,0.0038623893494130436,-2.8966628210158406e-6,-2.099867596807234e-8,0.003862506563495998,-2.8140990119499413e-6,-2.115798768293966e-8,0.0038626598321244918,-2.822389550608056e-6,-2.114198102596278e-8,0.003862874873005275,-2.8882527356427605e-6,-2.1014973901108832e-8,0.003863162336153394,-2.9744902195046028e-6,-2.0848814677809523e-8,0.0038635199304515298,-3.045533830271848e-6,-2.0712205478631623e-8,0.0038639348992436243,-3.0710234770790767e-6,-2.066378398501029e-8,0.0038643864355204357,-3.028367117469868e-6,-2.0747147455070232e-8,0.00386484822728367,-2.904831494192115e-6,-2.0986801911394604e-8,0.0038652914752601592,-2.699236644680084e-6,-2.1384920240420773e-8,0.003865688624510196,-2.4228755743300013e-6,-2.191962018272638e-8,0.00386601767419727,-2.0990064949875313e-6,-2.2545976090700474e-8,0.003866266452299767,-1.760409030734062e-6,-2.3200715561079226e-8,0.0038664359843247702,-1.4449098341719433e-6,-2.3810796904036255e-8,0.0038665420780329414,-1.1892409375748905e-6,-2.4305217895457498e-8,0.003866614450261009,-1.0220808697119544e-6,-2.4628464023641513e-8,0.0038666931331427633,-9.574329517630934e-7,-2.4753373068809092e-8,0.00386682224894407,-9.894664267422647e-7,-2.469119648990868e-8,0.0038670414158975728,-1.0900193002419434e-6,-2.449647640784153e-8,0.0038673755149895308,-1.2103925169421118e-6,-2.4263553007702945e-8,0.0038678247276590877,-1.2892296045959293e-6,-2.4111252377403624e-8,0.003868358444959499,-1.267252656795297e-6,-2.4154311249935473e-8,0.0038689178723244452,-1.106609395965305e-6,-2.446591385034712e-8,0.0038694306364283385,-8.077989637281885e-7,-2.504494355576824e-8,0.0038698345342124824,-4.141703486132289e-7,-2.5807311711834674e-8,0.003870099809101716,1.7314109784301966e-9,-2.661245619101961e-8,0.0038702378083155316,3.6458720020279093e-7,-2.7314567339474627e-8,0.0038702920854368386,6.214663267685033e-7,-2.7811317375819918e-8,0.0038703190910244194,7.53858335647063e-7,-2.8067074676155508e-8,0.00387036974897286,7.748010931081934e-7,-2.8107228302703305e-8,0.0038704788581488724,7.175311052953002e-7,-2.7996153658333026e-8,0.0038706626331334653,6.232083040671878e-7,-2.781347285744613e-8,0.0038709211656908133,5.318687125353667e-7,-2.7636609917695287e-8,0.003871242513436442,4.772284502188831e-7,-2.753078648423058e-8,0.003871606525933271,4.841804967947889e-7,-2.754418615260003e-8,0.0038719879135084533,5.675785755217659e-7,-2.7705577960566147e-8,0.003872358880346966,7.314004543716178e-7,-2.8022675148351287e-8,0.0038726919022138077,9.680249185641712e-7,-2.8480732932027746e-8,0.003872963138652044,1.2579586782204766e-6,-2.9042030043767234e-8,0.00387315657601737,1.5708285211382788e-6,-2.9647789466682646e-8,0.0038732683373289547,1.86855923238929e-6,-3.0224309921934445e-8,0.0038733099271485473,2.1112153111972303e-6,-3.069424612561177e-8,0.003873308852725411,2.2650543922665764e-6,-3.0992188082449424e-8,0.0038733053736022243,2.3111642765606837e-6,-3.108140596859698e-8,0.003873345192169577,2.2521788410355123e-6,-3.0966904370240415e-8,0.0038734693367986866,2.1146262125177263e-6,-3.0700024716839653e-8,0.003873703593536369,1.9454980220390796e-6,-3.037183659191588e-8,0.0038740502205765353,1.8030645268901052e-6,-3.009534652539585e-8,0.003874484463380578,1.7433559304306285e-6,-2.997927136727451e-8,0.003874957745425761,1.805067475563303e-6,-3.009872427079351e-8,0.0038754081819814224,1.9969121911983876e-6,-3.0470633717663e-8,0.0038757768904046563,2.2921729176794824e-6,-3.104314330933098e-8,0.0038760255596562514,2.6342273406501153e-6,-3.1706344087442033e-8,0.003876148467003275,2.953007064522305e-6,-3.232426651598912e-8,0.003876173208269964,3.1867247516892045e-6,-3.2777089184574225e-8,0.0038761496228379723,3.299682974732298e-6,-3.2995681880150156e-8,0.0038761325461103228,3.2890272755367357e-6,-3.297463097922817e-8,0.003876166403606068,3.179714693762658e-6,-3.276239593634084e-8,0.003876276896591104,3.0126859225590633e-6,-3.243833774524097e-8,0.0038764701624275557,2.8325579269208208e-6,-3.208888404389721e-8,0.0038767365992111737,2.6787515873070964e-6,-3.1790385133102694e-8,0.003877056148306675,2.580816495240054e-6,-3.160009687833867e-8,0.003877403029010765,2.556826343211539e-6,-3.1553084495681475e-8,0.0038777493008821016,2.613289973686861e-6,-3.166203618942354e-8,0.0038780675614554605,2.745446505360736e-6,-3.191780672517262e-8,0.003878333476381656,2.937524412643369e-6,-3.2289889347489e-8,0.0038785287779384415,3.1632353044676755e-6,-3.2727348319001116e-8,0.0038786449743421613,3.38733667833281e-6,-3.3161835770498974e-8,0.0038786873128192818,3.569409484611795e-6,-3.351491898098499e-8,0.003878677591593657,3.6707118908738144e-6,-3.371139093728882e-8,0.003878653651155005,3.663736005572876e-6,-3.369782934114989e-8,0.003878663611183559,3.5420997935283253e-6,-3.346179770353897e-8,0.003878754731082063,3.3267106762652564e-6,-3.304380167421774e-8,0.003878959662882301,3.0642480397399228e-6,-3.2534349810315585e-8,0.0038792851193151815,2.8166766000497898e-6,-3.2053637071171815e-8,0.003879707781335941,2.644580007151263e-6,-3.171924924585675e-8,0.003880179414535661,2.590044261113597e-6,-3.161296170025512e-8,0.003880639462395093,2.664856929841553e-6,-3.175779169109812e-8,0.003881030963909623,2.847441295081661e-6,-3.211196330829822e-8,0.003881315132026455,3.088989773401876e-6,-3.258074793403881e-8,0.003881480673019954,3.3267950065992406e-6,-3.304234350010906e-8,0.0038815453906210946,3.500934082932849e-6,-3.33803219040278e-8,0.0038815497710628015,3.5694288741531944e-6,-3.3513127109619604e-8,0.003881544796778198,3.5173837589184617e-6,-3.341184114435914e-8,0.003881578212321525,3.3577257039687044e-6,-3.310159999772678e-8,0.0038816837406748395,3.1243817248589497e-6,-3.264830861127478e-8,0.0038818760151617553,2.8614164265762064e-6,-3.213752525507882e-8,0.0038821512694009203,2.612341272483004e-6,-3.165370238768937e-8,0.0038824917692874394,2.4124461107722537e-6,-3.1265314802538124e-8,0.003882871480346175,2.2849072067360234e-6,-3.1017329356398934e-8,0.0038832611824149987,2.2398928027330586e-6,-3.0929494207351274e-8,0.0038836323245214632,2.275318774487282e-6,-3.099781618751069e-8,0.0038839597921307414,2.378108423025778e-6,-3.119699030134757e-8,0.0038842242152507703,2.5254286212354412e-6,-3.148275781095068e-8,0.0038844144663355965,2.686059250390416e-6,-3.179451894543604e-8,0.0038845306688387576,2.822639547206788e-6,-3.2059675183163195e-8,0.003884587357003466,2.8959475224504465e-6,-3.220196455639171e-8,0.0038846153737523,2.8722310269464106e-6,-3.21557550736718e-8,0.003884660056959134,2.7333387608771316e-6,-3.18857668919105e-8,0.0038847732762158013,2.4869046599035173e-6,-3.1406851357082614e-8,0.0038849991252745794,2.1712642698410145e-6,-3.0793495921892944e-8,0.0038853574442500984,1.8496451423368823e-6,-3.016850650976043e-8,0.0038858330515733975,1.5925789224385644e-6,-2.9668865383990577e-8,0.003886377556622482,1.4547566015723252e-6,-2.940082528056271e-8,0.0038869241473787107,1.4569552475180457e-6,-2.9404819127186324e-8,0.0038874085176017156,1.5809669809562609e-6,-2.9645564220367717e-8,0.003887786800305342,1.7780034980890623e-6,-3.002832302171855e-8,0.0038880447159318995,1.9850173646662214e-6,-3.0430573951043864e-8,0.0038881971924163384,2.1420596256770285e-6,-3.073574438290413e-8,0.003888280961175994,2.205781072292864e-6,-3.085948449380518e-8,0.0038883435694981065,2.1568374784550173e-6,-3.076410840731744e-8,0.0038884319296096136,2.0009593416802778e-6,-3.0460718017368735e-8,0.00388858281744708,1.7646673454508626e-6,-3.000089846925649e-8,0.003888816937092785,1.487387634284406e-6,-2.9461380448588014e-8,0.003889137213009564,1.2122368285186793e-6,-2.8926083312790018e-8,0.0038895308769200843,9.77741933194379e-7,-2.8469964105098837e-8,0.0038899740437511265,8.120453633245923e-7,-2.81477220260484e-8,0.003890437171818333,7.300902557734322e-7,-2.7988343358411724e-8,0.0038908900772970704,7.333723847624609e-7,-2.7994672649499975e-8,0.0038913058202770783,8.11313345377628e-7,-2.8146131740211625e-8,0.003891663485624368,9.432958331578632e-7,-2.8402680159512044e-8,0.0038919502946732623,1.1008399990349611e-6,-2.8708996787877187e-8,0.0038921635340459903,1.2499486900889057e-6,-2.8998973546822423e-8,0.0038923125934744473,1.3541502616078596e-6,-2.9201603267134142e-8,0.0038924208408559866,1.379197734291158e-6,-2.9250157793629576e-8,0.0038925260361622285,1.3003034856014153e-6,-2.909634192665132e-8,0.0038926769630940033,1.1115916402400212e-6,-2.8728743103664676e-8,0.0038929238963934186,8.34996763450161e-7,-2.819013439953649e-8,0.003893302729372596,5.229491681716229e-7,-2.7582633768285374e-8,0.0038938176635446077,2.486270920040773e-7,-2.704868519022275e-8,0.0038944323474479204,8.290889866841129e-8,-2.6726217478885122e-8,0.0038950779585628413,6.71542862886964e-8,-2.6695708784190685e-8,0.0038956768103849595,1.9679611586948285e-7,-2.694825472718397e-8,0.003896169311776245,4.2495370109331924e-7,-2.73925766726845e-8,0.003896530677936019,6.822594553111313e-7,-2.7893606935094835e-8,0.0038967721729981984,9.007324311420936e-7,-2.8318972956552194e-8,0.003896930972109137,1.0312737312306008e-6,-2.8573056292209646e-8,0.0038970560356940956,1.0512333616440805e-6,-2.8611714898809007e-8,0.0038971954492596143,9.637576168076825e-7,-2.84410251401411e-8,0.0038973875128366286,7.922909732076531e-7,-2.8106623400673385e-8,0.003897655773663217,5.73039745366953e-7,-2.7679078820458593e-8,0.0038980074203048315,3.470975623162463e-7,-2.723855936562174e-8,0.003898434383602654,1.532557749678879e-7,-2.686076811069166e-8,0.003898916483642837,2.2273778031217942e-8,-2.6605698033749048e-8,0.003899425869944706,-2.6879705272445377e-8,-2.651026260606674e-8,0.003899931946443452,1.135752503116599e-8,-2.658517606455315e-8,0.003900405988380751,1.2952483923987927e-7,-2.6815784333920333e-8,0.0039008248607193337,3.0902597073996624e-7,-2.7165815642283763e-8,0.0039011736945926885,5.228355224148576e-7,-2.7582659172522265e-8,0.003901447733469793,7.385703341824681e-7,-2.800327930437387e-8,0.0039016535931530446,9.218576909926763e-7,-2.8360689234556944e-8,0.003901810063641041,1.0402342282423203e-6,-2.8591513682344532e-8,0.0039019482346590566,1.068114437545263e-6,-2.8645727584383664e-8,0.0039021099156309434,9.933162871447647e-7,-2.8499486010026745e-8,0.0039023425147539973,8.245733393134014e-7,-2.816985246159411e-8,0.0039026886667243655,5.973876226969504e-7,-2.7726207946250197e-8,0.0039031709184319144,3.732053312467776e-7,-2.728856993304565e-8,0.003903776436955178,2.2643689124575264e-7,-2.7002203145251322e-8,0.0039044517336320776,2.1908852626009318e-7,-2.6988107235954432e-8,0.0039051160269753435,3.7343990320735743e-7,-2.728970832405026e-8,0.0039056904602020087,6.597257455398579e-7,-2.7848816986833218e-8,0.0039061274952976715,1.008182754458275e-6,-2.8529159419230002e-8,0.003906424029832539,1.337864454440272e-6,-2.917267690733211e-8,0.0039066143239121455,1.584673185538172e-6,-2.9654276855512307e-8,0.003906751629333246,1.7160417124478927e-6,-2.991045051383723e-8,0.003906889981347287,1.7312807173328777e-6,-2.993987957694521e-8,0.003907072257425082,1.6535639424178371e-6,-2.978777180552823e-8,0.003907324953080964,1.5196860399174986e-6,-2.9525923596991393e-8,0.003907657617907691,1.3710174126904936e-6,-2.9235136326534077e-8,0.003908064791635279,1.246627938272527e-6,-2.8991808582392042e-8,0.003908529121213566,1.178355331974727e-6,-2.8858246582644022e-8,0.0039090251008069895,1.1874723538953122e-6,-2.8876064406570793e-8,0.0039095231741027164,1.2828026766380307e-6,-2.9062457134925734e-8,0.003909993971965604,1.4602429723720258e-6,-2.940930205385144e-8,0.003910412376088683,1.7037257014122688e-6,-2.9885126077279e-8,0.003910760972899444,1.9875614267849495e-6,-3.043974711070414e-8,0.003911032543742426,2.279815827653438e-6,-3.1010855542352346e-8,0.003911231493909528,2.5463069029857515e-6,-3.153173238001942e-8,0.003911374222650876,2.7549910335127733e-6,-3.193972170951845e-8,0.003911488384327841,2.880624085469085e-6,-3.218531726661661e-8,0.003911610864352182,2.909667982481857e-6,-3.224183476086153e-8,0.003911783886839922,2.84536194505679e-6,-3.211546429333361e-8,0.003912048236733935,2.7121190655270843e-6,-3.1853969077637996e-8,0.003912432956737331,2.5569177610852085e-6,-3.1549408250500364e-8,0.003912942711842446,2.4439948046497946e-6,-3.13276712957956e-8,0.003913547494005578,2.439525781374463e-6,-3.1318405148871284e-8,0.003914182801008766,2.587612510786791e-6,-3.160796365905382e-8,0.00391476670682019,2.8876813198392386e-6,-3.219515496038958e-8,0.003915229878465214,3.288612511808708e-6,-3.297977441605243e-8,0.00391554262842195,3.707168304776008e-6,-3.3798756641249064e-8,0.003915722816780819,4.061134667377567e-6,-3.449114586943816e-8,0.0039158221519932715,4.297554871760769e-6,-3.495337435976911e-8,0.003915902612886247,4.403020028690837e-6,-3.5159304982510026e-8,0.003916016771863963,4.3972762305046315e-6,-3.51476057496457e-8,0.003916198069716032,4.319425094326008e-6,-3.499472431255641e-8,0.003916459596845121,4.214738888555488e-6,-3.4789167335719515e-8,0.003916797401300606,4.125457418511884e-6,-3.46135897824814e-8,0.003917195121291198,4.085545626385126e-6,-3.453456558879286e-8,0.003917628376812855,4.118078743411213e-6,-3.459741276197698e-8,0.00391806864547818,4.234057023541767e-6,-3.4823781820516536e-8,0.0039184868549933145,4.432100524385358e-6,-3.521100643460954e-8,0.003918856894454718,4.698942282664103e-6,-3.5733089149345645e-8,0.003919159062997544,5.010909292212568e-6,-3.634366398414867e-8,0.003919383180819294,5.336673361384431e-6,-3.698142096457321e-8,0.003919530829987342,5.641296545403175e-6,-3.757799607711368e-8,0.0039196162213828035,5.891218249778886e-6,-3.8067651883344666e-8,0.0039196653747344806,6.059652716046391e-6,-3.8397777275256786E-08,0.003919713456096689,6.131770978781817e-6,-3.853905013964011e-8,0.003919800276775679,6.108967573413839e-6,-3.849390802272054e-8,0.003919964045053333,6.011521522845613e-6,-3.830191792649171e-8,0.003920233494230299,5.878730153642338e-6,-3.804014811232711e-8,0.003920618992780859,5.764983763374026e-6,-3.781547454419313e-8,0.00392110459247313,5.730010496430183e-6,-3.7745352062984805e-8,0.0039216448866342514,5.822802882578071e-6,-3.792614771435408e-8,0.00392217165582521,6.062441369382195e-6,-3.839540769990899e-8,0.003922612784897084,6.424343781374744e-6,-3.910483982583697e-8,0.003922918279510956,6.842549813656679e-6,-3.9924854655693004e-8,0.0039230801956615,7.231684285990491e-6,-4.068779460101494e-8,0.003923134148926395,7.5187772284920845e-6,-4.125047503163074e-8,0.003923141833425455,7.667435752105012e-6,-4.1541586012182924e-8,0.003923166269325025,7.683166138878378e-6,-4.1571999586433136e-8,0.003923253198934327,7.602234341381125e-6,-4.1412808153840096e-8,0.00392342418128479,7.474463541507354e-6,-4.1161593315289665e-8,0.003923678875818511,7.348774715809465e-6,-4.091417238620076e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json new file mode 100644 index 0000000000..2a81d6b313 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":24000,"numberOfSamples":1000,"samples":[0.003924001349468574,7.264665173102422e-6,-4.0747989552475184e-8,0.003924366586169156,7.248790607297544e-6,-4.0715438046854016e-8,0.0039247455983737215,7.31449699975775e-6,-4.084288354023843e-8,0.003925109134008881,7.462510402409807e-6,-4.1131928535769936e-8,0.003925430619334403,7.681943579661476e-6,-4.156132990390201e-8,0.003925688916221978,7.9515663056217e-6,-4.208949033990723e-8,0.003925871139610513,8.241724001493012e-6,-4.26582543580377e-8,0.003925975343160025,8.517452558510482e-6,-4.319903585164052e-8,0.003926012408625573,8.743124708146312e-6,-4.364190844664137e-8,0.0039260062351111815,8.888393011087458e-6,-4.392721436513869e-8,0.0039259914819518545,8.934553769547599e-6,-4.401802379763859e-8,0.003926008601681654,8.87995541059872e-6,-4.391078722925618e-8,0.003926096603853184,8.742886424791559e-6,-4.364111335220435e-8,0.003926284700461693,8.560700555841224e-6,-4.328218871863738e-8,0.003926584419799495,8.38460458304358e-6,-4.293463839580567e-8,0.003926983982520055,8.27018419490559e-6,-4.270791978660203e-8,0.003927446933578442,8.26450952654458e-6,-4.269489056436631e-8,0.003927917035426422,8.392007583137403e-6,-4.294388907717355e-8,0.003928330548152765,8.643213090672838e-6,-4.343648270886796e-8,0.003928634404239271,8.97202431142347e-6,-4.4082022548759444e-8,0.003928804571353034,9.306016764539644e-6,-4.473798796749362e-8,0.003928855847415065,9.568840746130847e-6,-4.525415343428905e-8,0.0039288366735898165,9.705875342600683e-6,-4.552310678124801e-8,0.003928810708523999,9.70075387287824e-6,-4.5512697637589113e-8,0.003928834802404048,9.575566014901797e-6,-4.526632710582171e-8,0.003928943827175889,9.377534807333275e-6,-4.487669985208786e-8,0.003929146690245219,9.161289638700064e-6,-4.445102369531869e-8,0.003929431010766044,8.97479258527682e-6,-4.408344678591044e-8,0.003929771249439363,8.851942834798086e-6,-4.3840594450064106e-8,0.003930136299987928,8.810775413828423e-6,-4.375803213461219e-8,0.0039304949376361325,8.854733935909684e-6,-4.3842713182813283e-8,0.003930819251349883,8.97490756364095e-6,-4.4077307493303816e-8,0.003931086911330102,9.152169769274805e-6,-4.442436000944777e-8,0.0039312831240633185,9.359120650070548e-6,-4.4830096409770687e-8,0.003931402736278697,9.562353565431697e-6,-4.522888479978551e-8,0.0039314523679986994,9.725809891954073e-6,-4.554983213541918e-8,0.003931451821677968,9.81581544058732e-6,-4.572667330703574e-8,0.0039314335373014,9.807739373223678e-6,-4.5710846370490446e-8,0.003931438847422937,9.693139686684408e-6,-4.5485541526462294e-8,0.003931510540598468,9.485126741041124e-6,-4.507628154878644e-8,0.0039316827752822045,9.21922505098598e-6,-4.455269004539336e-8,0.003931971055312627,8.947933809120098e-6,-4.401789076476449e-8,0.0039323657307728825,8.729358784614993e-6,-4.358622919525109e-8,0.003932831731699162,8.612643855888081e-6,-4.335462841531593e-8,0.003933315344617792,8.62429738570606e-6,-4.337560654570439e-8,0.003933756715300976,8.759463349484685e-6,-4.363994931455601e-8,0.003934105106059232,8.981053856326873e-6,-4.407485811762412e-8,0.003934332913929343,9.227877438043526e-6,-4.4559891225405716e-8,0.0039344440871193175,9.430525068002884e-6,-4.4958286576969273e-8,0.003934473402796723,9.530858688927084e-6,-4.5155432327327116e-8,0.003934475863914978,9.498545685117723e-6,-4.509149078422063e-8,0.003934509718222492,9.33827824991407e-6,-4.47756142603218e-8,0.003934619792227327,9.085158588882537e-6,-4.427682786107174e-8,0.003934827415641757,8.791280140237335e-6,-4.369760258181166e-8,0.00393512933343696,8.510038014808986e-6,-4.31429928445453e-8,0.0039355035636141015,8.284081649552148e-6,-4.269695029529051e-8,0.003935918018543304,8.139406686077033e-6,-4.241070000822375e-8,0.003936338353846052,8.084775818140693e-6,-4.2301584302013366e-8,0.003936733445406277,8.114176353890525e-6,-4.235787766689351e-8,0.0039370785461212525,8.210197709692123e-6,-4.254541828860122e-8,0.003937356971767464,8.347130480599071e-6,-4.281369430236631e-8,0.003937561263758311,8.493567783692922e-6,-4.310094762045791e-8,0.003937694438031615,8.615002843389891e-6,-4.333926631812809e-8,0.003937771330134241,8.67725650150846e-6,-4.346131796842194e-8,0.003937819322870859,8.651508326884634e-6,-4.3410256470381495e-8,0.003937877058427044,8.521099894445721e-6,-4.3153137231452934e-8,0.003937989463885939,8.288931327634417e-6,-4.269550841092151e-8,0.003938198228981029,7.982475866423666e-6,-4.209131265757179e-8,0.003938529202136906,7.652421272823026e-6,-4.144024574779018e-8,0.003938981172624146,7.362348631112524e-6,-4.086748201679056e-8,0.003939521858698951,7.171057158621901e-6,-4.048891544782165e-8,0.003940094615197016,7.113880374154503e-6,-4.0374365707466556e-8,0.0039406342007793785,7.190918645244552e-6,-4.052432522098116e-8,0.003941085456845227,7.366953288287352e-6,-4.086966435709471e-8,0.003941417979926735,7.582297213206803e-6,-4.1292902967637985e-8,0.003941632550878733,7.769811582108233e-6,-4.1661704613367465e-8,0.0039417586573959,7.872367731094012e-6,-4.186332403044912e-8,0.00394184498935138,7.856147459827803e-6,-4.183089280710224e-8,0.003941946090056001,7.716963831159671e-6,-4.155595404739903e-8,0.003942108844751583,7.478721284531861e-6,-4.1085488184775086e-8,0.003942362280649743,7.1851264448118275e-6,-4.0505610055412035e-8,0.003942713056297738,6.887545188092401e-6,-3.9917635489093076e-8,0.003943147094181412,6.63285056822077e-6,-3.9414089140640513e-8,0.00394363576055283,6.45458746493619e-6,-3.906122521138246e-8,0.003944143851940386,6.3689698481875325e-6,-3.889108334065558e-8,0.003944636869159611,6.375238897636767e-6,-3.89021835862169e-8,0.003945086178514301,6.458758785510235e-6,-3.906566285644976e-8,0.003945471885644119,6.595087712929455e-6,-3.9333345409787816e-8,0.003945784062145488,6.75381682031183e-6,-3.96453240801719e-8,0.0039460231949269235,6.9018086924852714e-6,-3.993631138475404e-8,0.003946200484182494,7.0061699834473986e-6,-4.0141443325436696e-8,0.003946338123548155,7.037663514739489e-6,-4.020297398706976e-8,0.003946469030517169,6.975321308310946e-6,-4.007939202239149e-8,0.0039466347171631935,6.8125615268396335e-6,-3.9757548945000605e-8,0.003946879526314831,6.563781000662389e-6,-3.926572917290399e-8,0.003947240113576192,6.26832771088985e-6,-3.8681519815076635e-8,0.00394773162032693,5.987155767768718e-6,-3.8125213666258697e-8,0.00394833606959585,5.788678511154436e-6,-3.7731893344309e-8,0.0039490010315956,5.726070108611301e-6,-3.760663760887806e-8,0.003949653254363835,5.815841448021564e-6,-3.778221021701663e-8,0.003950222933085804,6.029784395114221e-6,-3.8203094717768544e-8,0.003950666763769117,6.305251283013329e-6,-3.874572335149639e-8,0.003950978997636163,6.567633107643007e-6,-3.926282625402561e-8,0.003951187946508848,6.753390037519353e-6,-3.9628897768472654e-8,0.003951342970045106,6.82499234587586e-6,-3.9769697357740485e-8,0.00395149899125544,6.775528812781524e-6,-3.9671369919487616e-8,0.003951703461040263,6.625121099539185e-6,-3.9373432374454456e-8,0.003951987858015527,6.412572497682793e-6,-3.8952382552237284e-8,0.003952363959429004,6.185216687773946e-6,-3.8501729618800614e-8,0.003952824318389738,5.9890392604355895e-6,-3.811248119847719e-8,0.003953346084383744,5.8605580191022866e-6,-3.7857015174201214e-8,0.003953896995412957,5.821583390244034e-6,-3.777860582122305e-8,0.003954442092751837,5.877359468380301e-6,-3.7887672658214384e-8,0.003954949781935346,6.017769412892624e-6,-3.816417373000497e-8,0.003955396289717578,6.220694202785564e-6,-3.856432318594815e-8,0.003955768174884203,6.456367672750993e-6,-3.902927598979735e-8,0.003956063179994125,6.691705169501888e-6,-3.949369249275251e-8,0.003956290051901221,6.894111093467348e-6,-3.989319559509603e-8,0.003956467854520423,7.034854759428582e-6,-4.017095218887658e-8,0.0039566249669400816,7.092436622888951e-6,-4.0284290088954386e-8,0.003956797478346305,7.056481487425291e-6,-4.021245059161304e-8,0.003957025994777186,6.932388600346256e-6,-3.996590300588929e-8,0.003957349414623954,6.7458410699163445e-6,-3.959537173887109e-8,0.003957794778545756,6.544498614818847e-6,-3.9195220973930975e-8,0.003958364489074411,6.392651543668574e-6,-3.889283923884582e-8,0.003959026190955713,6.355295837039837e-6,-3.881705762450065e-8,0.003959713978117959,6.473712946892012e-6,-3.904975388942963e-8,0.003960346658841707,6.743821961530491e-6,-3.958294960032686e-8,0.003960857575990237,7.112323350996538e-6,-4.031115186969541e-8,0.0039612197932018854,7.496174919039376e-6,-4.10699402100219e-8,0.003961452306299503,7.814588012843276e-6,-4.169936348567501e-8,0.003961606574536528,8.01530911676443e-6,-4.209596468724888e-8,0.003961744529834369,8.08439052342442e-6,-4.223205431160473e-8,0.003961919898203691,8.041055608842375e-6,-4.2145503385516964e-8,0.003962167934107929,7.92540646416268e-6,-4.1915471608097986e-8,0.003962502766954194,7.785608877629877e-6,-4.1637175222764884e-8,0.003962919504652272,7.667738377555936e-6,-4.140189174962666e-8,0.00396339860412415,7.6088866362392024e-6,-4.128330394764023e-8,0.003963911081389532,7.633028280277278e-6,-4.132919427751386e-8,0.003964423927548092,7.749152914604407e-6,-4.1557593105492124e-8,0.003964905318504584,7.951432583245587e-6,-4.1957026443146924e-8,0.003965329172806784,8.221199670866641e-6,-4.249046155503989e-8,0.0039656786145144665,8.530378408627668e-6,-4.310220299700377e-8,0.003965947990889918,8.845841392371245e-6,-4.37266017606286e-8,0.003966143368775138,9.134007815143316e-6,-4.429715430491004e-8,0.003966281763390242,9.365126081644348e-6,-4.475489492347632e-8,0.003966389432433808,9.517028569907252e-6,-4.50557398961551e-8,0.0039664994413490615,9.578380169243303e-6,-4.517691762130738e-8,0.003966648478154706,9.551562333274848e-6,-4.512279719134597e-8,0.003966872442131501,9.455213790585541e-6,-4.493010285476397e-8,0.003967200009096507,9.325645135291122e-6,-4.4670856835179115e-8,0.003967643942139405,9.215087087823338e-6,-4.4448923046119814e-8,0.0039681916280942,9.183905742556441e-6,-4.438445858297688e-8,0.003968799131557344,9.284666046934797e-6,-4.4582129386551373e-8,0.003969395714603861,9.540259293398974e-6,-4.508756258136944e-8,0.0039699037202130414,9.926237027984614e-6,-4.585222439096121e-8,0.003970268552470416,1.0371684773005795e-5,-4.673521137896835e-8,0.003970482142169558,1.078412203468818e-5,-4.755282003004367e-8,0.0039705843561092195,1.10860283048514e-5,-4.815115477383973e-8,0.003970642360386332,1.1241376583518066e-5,-4.845874452293147e-8,0.003970722821708415,1.125981504453911e-5,-4.8494689966727235e-8,0.0039708723071808566,1.11829441885822e-5,-4.834134805360363e-8,0.003971110919069601,1.1065211622363857e-5,-4.810650188240576e-8,0.003971435431608885,1.0958632735931508e-5,-4.7893216781566505e-8,0.003971826265812919,1.0903990546723049e-5,-4.778250186894762e-8,0.003972254586729742,1.0927283245886881e-5,-4.782624238951511e-8,0.003972688105211575,1.1039249843146977e-5,-4.8046116883982526e-8,0.0039730955939297884,1.1236386675066273e-5,-4.843545087392066e-8,0.00397345054557075,1.1502799362280447e-5,-4.8962807876693554e-8,0.003973734208169738,1.1812792318729848e-5,-4.9577158828296015e-8,0.003973937950405579,1.2134265111817801e-5,-5.021471558067026e-8,0.003974064679006379,1.2432918992578263e-5,-5.080734411592102e-8,0.003974128944467808,1.2676973960732623e-5,-5.129190491821449e-8,0.003974155556457899,1.2841827542246017e-5,-5.1619414061577866e-8,0.0039741767870729505,1.2914097734147498e-5,-5.1763003268766806e-8,0.003974228381508199,1.2894585117898373e-5,-5.1723840310494984e-8,0.0039743446740342315,1.2799778794775203e-5,-5.1534278839920305e-8,0.003974553031218095,1.2661651645222267e-5,-5.1257656952560386e-8,0.00397486770830553,1.252526192551265e-5,-5.0983665712715536e-8,0.003975283624309093,1.244306855380536e-5,-5.081702986908633e-8,0.003975771762776541,1.2464764616558008e-5,-5.085712444532777e-8,0.003976279358595454,1.2622668128129355e-5,-5.1168686224427466e-8,0.003976738806949802,1.2915806066879637e-5,-5.174997205879499e-8,0.00397708712480231,1.3300494013523065e-5,-5.251398213335525e-8,0.003977290708495544,1.3697307875515348e-5,-5.3302462984544026e-8,0.003977362035950759,1.4017395454687275e-5,-5.393846232144907e-8,0.003977355858695399,1.4196719691249908e-5,-5.429455632185751e-8,0.003977345605575303,1.4218583669657343e-5,-5.433755885903962e-8,0.003977394646971235,1.4112859234273654e-5,-5.412679978292305e-8,0.003977538120767945,1.3937040535825622e-5,-5.377637606636613e-8,0.003977780313015663,1.3753373811437281e-5,-5.3409789340420174E-08,0.0039781024005110955,1.361276026355333e-5,-5.312812805725196e-8,0.003978473023124186,1.3547849219766439e-5,-5.299644136530384e-8,0.003978857094370713,1.3572654477401475e-5,-5.304293291262342e-8,0.00397922161367756,1.3685187261991948e-5,-5.326404503945597e-8,0.0039795391090315735,1.387078103509612e-5,-5.363091484811033e-8,0.003979789799970764,1.4105237357237993e-5,-5.4095556401576257e-8,0.0039799632178153825,1.4357845076354077e-5,-5.45968922420498e-8,0.003980059500806607,1.4594673222991368e-5,-5.506737604277994e-8,0.003980090142970023,1.4782539911570218e-5,-5.5440930753357645e-8,0.003980077642195864,1.4893710156689642e-5,-5.566226817310781e-8,0.003980053468419345,1.4910803096605801e-5,-5.56965853216742e-8,0.0039800541106269635,1.4830983623911673e-5,-5.553787293347947e-8,0.0039801154418540406,1.466838142817004e-5,-5.5213797919344863e-8,0.003980266139921954,1.4453775388946017e-5,-5.478524269653043e-8,0.003980521287767714,1.4231023369268172e-5,-5.4339391697161045e-8,0.003980877353979621,1.4050315119139707e-5,-5.397640762167942e-8,0.003981309717837675,1.395868469966156e-5,-5.3790488944141864e-8,0.003981774090037387,1.3988628469092594e-5,-5.3846999457069773e-8,0.003982213281677193,1.4146764402475845e-5,-5.415961657859051e-8,0.003982570011449755,1.4406143821260008e-5,-5.467482526558627e-8,0.003982804131697453,1.47071498764841e-5,-5.527369286809923e-8,0.003982908778352366,1.4970992193698437e-5,-5.579891732093303e-8,0.003982916824397885,1.5124448073961797e-5,-5.6104337480320424e-8,0.003982891263406429,1.5126160410236833e-5,-5.610742482232311e-8,0.00398290215454356,1.4980743595872157e-5,-5.581730514030468e-8,0.0039830019202654705,1.4733222541316497e-5,-5.532354528930037e-8,0.003983211326857249,1.4448727937037265e-5,-5.4755680309660146e-8,0.003983520104257227,1.4189885389384998e-5,-5.423828496751849e-8,0.003983897259054235,1.4001826693159665e-5,-5.386125283385029e-8,0.003984303459136277,1.3907216352427944e-5,-5.366993275012876e-8,0.003984700579759181,1.3908279420985249e-5,-5.3669095525382856e-8,0.003985057207973846,1.399170223752423e-5,-5.3832563887307894e-8,0.00398535107067196,1.4133635001783242e-5,-5.411306762933109e-8,0.003985569881970607,1.4303771905497005e-5,-5.445033306625039e-8,0.0039857117052029475,1.4468652878353123e-5,-5.4777689929636526e-8,0.003985785248092382,1.4594817843348775e-5,-5.502840613731594e-8,0.003985809897015252,1.4652472383143383e-5,-5.514301337657362e-8,0.003985814826438397,1.4619974837042523e-5,-5.5078226609295487e-8,0.0039858363205629195,1.4488750116827408e-5,-5.481669944437828e-8,0.003985912714645442,1.426742833517886e-5,-5.4375274115178266e-8,0.003986077146685968,1.3983468945714063e-5,-5.380829619913038e-8,0.003986349418788184,1.3680607655818763e-5,-5.320267121504874e-8,0.003986729243878734,1.3411429492368585e-5,-5.266321054783875e-8,0.003987193368925278,1.3226052188088213e-5,-5.229014065094215e-8,0.0039876982347206835,1.3159498917999302e-5,-5.2153854337675876E-08,0.00398818833657533,1.3221106579292605e-5,-5.227358445765773e-8,0.003988608901007278,1.338916970518754e-5,-5.260647556617648e-8,0.003988920183252699,1.3613194193081244e-5,-5.3051916801022585e-8,0.003989109646982799,1.3824650626505712e-5,-5.347299765131535e-8,0.003989197746223967,1.3954767944424933e-5,-5.373215558025435e-8,0.003989233827788415,1.3954763566654355e-5,-5.373171638754063e-8,0.003989281800794039,1.3811236850979288e-5,-5.3444699852450874e-8,0.003989400134260441,1.3549823535973889e-5,-5.292209959911019e-8,0.003989624365284392,1.3225093106393183e-5,-5.227268643727621e-8,0.003989959279866753,1.290162083662521e-5,-5.1625249279043706e-8,0.0039903824814073756,1.2635093520500604e-5,-5.109093995112096e-8,0.00399085532254792,1.2460509228031144e-5,-5.0739748289693165e-8,0.003991335096141489,1.2389290014694273e-5,-5.0594703090057124e-8,0.003991784193685639,1.2412788238110021e-5,-5.063879306432595e-8,0.0039921750376531425,1.2508400657934924e-5,-5.082710027342623e-8,0.0039924916979013365,1.264552801312763e-5,-5.109866380876292e-8,0.003992729733420645,1.2790244411010073e-5,-5.138580639540977e-8,0.003992895505481774,1.2908774182592685e-5,-5.162109554086806e-8,0.003993005539841018,1.2970483448082949e-5,-5.1743325651077926e-8,0.003993085805853583,1.2951169554634605e-5,-5.170407528089941e-8,0.0039931702182065525,1.2837098930575677e-5,-5.1475750096119304e-8,0.003993297356816803,1.2629535465925717e-5,-5.106062222453551e-8,0.003993504537036869,1.2348458326471559e-5,-5.04982889205154e-8,0.00399381928261621,1.2033164964636035e-5,-4.9866956012253766e-8,0.003994250001187529,1.1737322154317254e-5,-4.9273662215669775e-8,0.0039947794474397376,1.1517572315967707e-5,-4.883161802180583e-8,0.003995364932969854,1.1417909076784898e-5,-4.8629022529340004e-8,0.0039959471867255245,1.145512467560501e-5,-4.8699907040692296e-8,0.003996465923696541,1.1611411554188564e-5,-4.9009176717670445e-8,0.003996876828671035,1.1837637422183225e-5,-4.9458966925161574e-8,0.003997163971009506,1.2066380201857806e-5,-4.991458667779847e-8,0.003997343759283495,1.2230228260355551e-5,-5.024110820721207e-8,0.003997459714537061,1.227962356731739e-5,-5.033913205513782e-8,0.0039975700174394516,1.2195246540345806e-5,-5.016966528746188e-8,0.0039977315793668896,1.199171433994848e-5,-4.9761614483588085e-8,0.003997985303974457,1.1711837911922054e-5,-4.920037428897476e-8,0.003998346858193554,1.1413566865496914e-5,-4.8601769213070115e-8,0.0039988053495900785,1.1154143067304714e-5,-4.808037527313077e-8,0.0039993293627035445,1.0976671983429418e-5,-4.7722620398013583e-8,0.003999877225762814,1.0902767894712806e-5,-4.7571985490559816e-8,0.004000407493370264,1.0931979187466173e-5,-4.762776490445662e-8,0.00400088668699902,1.1046120607170104e-5,-4.785368769200271e-8,0.0040012933178902805,1.1215681826101956e-5,-4.8190753288722657e-8,0.004001618824597613,1.140602944436198e-5,-4.856968419517292e-8,0.004001866716617343,1.1582292382143262e-5,-4.8920729394387654e-8,0.004002051089467816,1.1712900988527266e-5,-4.9180732644461024e-8,0.004002195134543225,1.1772393926335084e-5,-4.9298705411811596e-8,0.0040023296147842545,1.1744241358596293e-5,-4.9241438831947997e-8,0.004002490702025333,1.1624164492064202e-5,-4.9000150214148706e-8,0.004002716177242634,1.1423787492992013e-5,-4.859784391910101e-8,0.0040030390227214704,1.1173356864132723e-5,-4.8094833920023865e-8,0.004003478361347815,1.0920997712239193e-5,-4.7587334303852796e-8,0.004004029802038545,1.0725563863908767e-5,-4.719320099784125e-8,0.004004659792221574,1.0641953511935584e-5,-4.7022548424382676e-8,0.004005309358395405,1.0702231547952575e-5,-4.713991105371558e-8,0.004005909305357476,1.0900742430031743e-5,-4.7534332339053704e-8,0.004006402231050277,1.1192022790909333e-5,-4.8115061170983004e-8,0.004006761493609258,1.1504328555145381e-5,-4.8738556290387605e-8,0.004006998416788491,1.1762810600434922e-5,-4.925487801263246e-8,0.0040071557972175655,1.1911802199676452e-5,-4.955234189469917e-8,0.004007292492485376,1.1928068755813912e-5,-4.9584090451901684e-8,0.004007466154921649,1.182270536529946e-5,-4.9371962164986925e-8,0.004007719484345561,1.1633960677447274e-5,-4.8992235679285965e-8,0.004008072516982853,1.1415035698476774e-5,-4.855132546462214e-8,0.004008521247009628,1.1220739757355388e-5,-4.81591306861145e-8,0.004009041556486812,1.1095986552782165e-5,-4.790595409748483e-8,0.004009596684482728,1.1068126254001404e-5,-4.784699794194256e-8,0.004010146061004549,1.1144061978931795e-5,-4.799641499742937e-8,0.0040106533603855915,1.1311869844993711e-5,-4.833044905420133e-8,0.004011092236707525,1.1545566812726804e-5,-4.8796997573800546e-8,0.004011449171177877,1.1811239466230054e-5,-4.9327987188523245e-8,0.004011723764818403,1.2072971677857698e-5,-4.985134835693644e-8,0.00401192736389657,1.2297623888833959e-5,-5.0300619813788786e-8,0.004012080963416897,1.2458294160137046e-5,-5.06218316152855e-8,0.004012212952149902,1.2536886563441079e-5,-5.077857415701251e-8,0.004012356748830488,1.2526361690877996e-5,-5.075648134300845e-8,0.004012547921684051,1.2433048238960548e-5,-5.0567928963629637e-8,0.0040128199805693305,1.2278886932150372e-5,-5.025666471468604e-8,0.004013197985529161,1.2102470950470938e-5,-4.990002190519058e-8,0.00401369000353784,1.1956510006150005e-5,-4.960388878819715e-8,0.004014278532066863,1.1898883530667995e-5,-4.948472066423443e-8,0.0040149167491389135,1.197622246061075e-5,-4.963648586630433e-8,0.004015535619726837,1.2203997061740317e-5,-5.0090569001978953e-8,0.004016064005360639,1.2553240036393509e-5,-5.0789018255737813e-8,0.0040164548830214815,1.2954750430225737e-5,-5.1592962190804215e-8,0.004016703733644348,1.3322431746732769e-5,-5.232951731508461e-8,0.004016848431434354,1.3584310465564186e-5,-5.2854110685949694e-8,0.004016951977140229,1.3704978067918915e-5,-5.309550581731473e-8,0.00401707918422125,1.3690726517722423e-5,-5.3066050186417026e-8,0.004017278464444657,1.3580022117076173e-5,-5.284257367174307e-8,0.004017573349390648,1.3427603643939568e-5,-5.253461517336548e-8,0.004017962524787026,1.3289293461804937e-5,-5.2254123260796106e-8,0.004018424992325505,1.3210932934703492e-5,-5.2093339215260626e-8,0.0040189273729024705,1.3221997414880813e-5,-5.211190437947683e-8,0.0040194315062708425,1.3333214209773679e-5,-5.2331872879317006e-8,0.004019901334926071,1.3537385768781908e-5,-5.273915282943784e-8,0.00402030839443015,1.3812681913253474e-5,-5.3290015781132485e-8,0.004020635440219238,1.4127527132908653e-5,-5.392095666905157e-8,0.004020878035146411,1.4446146519830484e-5,-5.455996088115213e-8,0.004021044226821732,1.473392798977689e-5,-5.513737746601209e-8,0.00402115275112109,1.496191131793451e-5,-5.559493860655362e-8,0.004021230393628464,1.5110074592057919e-5,-5.589227823087387e-8,0.004021308993990323,1.5169566143298608e-5,-5.601133518705951e-8,0.004021422225284333,1.5144214158221058e-5,-5.595940175161358e-8,0.0040216019835709,1.505150937068162e-5,-5.57712373201424e-8,0.004021873939755527,1.4922916833095616e-5,-5.550989215428107e-8,0.0040222517467002885,1.4802621499919506e-5,-5.5264327043482085e-8,0.004022730175355548,1.4742845077977562e-5,-5.513999395696767e-8,0.00402327924617558,1.4793651408929851e-5,-5.5238179247849234e-8,0.004023843665981839,1.498685836194858e-5,-5.562340967782772e-8,0.004024352851506316,1.5318263529964064e-5,-5.62874975195311e-8,0.004024743118745088,1.573836892528872e-5,-5.7130821512435726e-8,0.004024984194842726,1.6162535861771282e-5,-5.7982877436069443E-08,0.004025094377176705,1.6501026274800637e-5,-5.866291758713605e-8,0.004025133037057492,1.6693810177365013e-5,-5.9050065212816505e-8,0.0040251747474465615,1.6730082192383597e-5,-5.912247029379822e-8,0.004025281332087344,1.6644195416193686e-5,-5.894897656672424e-8,0.004025485746450353,1.6495866969054968e-5,-5.864930998217878e-8,0.004025790429201538,1.634835179138792e-5,-5.8350370181822665e-8,0.0040261746462862255,1.6253223052331517e-5,-5.815584387978385e-8,0.0040266044641294775,1.624327250382378e-5,-5.813200951807451e-8,0.004027041638836209,1.633135361213576e-5,-5.8305293951082345e-8,0.00402745025711566,1.6512469372403883e-5,-5.866622925242898e-8,0.00402780134494779,1.6767326438795646e-5,-5.917637987828972e-8,0.004028075926393701,1.7066612366788847e-5,-5.977686171643531e-8,0.004028266748303052,1.7375686093179322e-5,-6.039784671300595e-8,0.004028378700267617,1.7659404592882538e-5,-6.096841423803015e-8,0.004028427921096438,1.7886793273255926e-5,-6.142604364033798e-8,0.00402843964084909,1.8035151508268353e-5,-6.172486403108444e-8,0.004028445012514573,1.809312331270539e-5,-6.184175008856881e-8,0.0040284773268235005,1.8062494703952662e-5,-6.177988665082503e-8,0.004028567910222432,1.7958723498241694e-5,-6.156990468255793e-8,0.004028741861400401,1.781021131030546e-5,-6.12686094634135e-8,0.0040290136622913525,1.765619786846825e-5,-6.095496322789188e-8,0.0040293826809504,1.754280016104753e-5,-6.07222216328837e-8,0.004029829124215082,1.751619084809753e-5,-6.066410876225836e-8,0.004030312256108125,1.7612020509539247e-5,-6.085324393616324e-8,0.004030774031389632,1.7841815454699297e-5,-6.131341293797681e-8,0.00403115142107213,1.8180564860966387e-5,-6.199433879515745e-8,0.0040313974300052735,1.8563852856182064e-5,-6.27659191383855e-8,0.004031503203472192,1.8902856758312773e-5,-6.344869780801121e-8,0.004031507215610012,1.9116091643266002e-5,-6.387812802255732e-8,0.004031481930153734,1.916242569246173e-5,-6.397118926916185e-8,0.004031503768949901,1.9055383830683572e-5,-6.375504333127174e-8,0.004031624504421274,1.885153534554923e-5,-6.334344369125224e-8,0.00403185885677837,1.8623798019755862e-5,-6.288296518438462e-8,0.004032189274944319,1.8436620157024645e-5,-6.250321630029159e-8,0.004032579178971542,1.83324637336343e-5,-6.228981683190497e-8,0.004032986090714059,1.8329161981569122e-5,-6.227911243671427e-8,0.0040333708125981456,1.8423493871162983e-5,-6.246522183995398e-8,0.004033702484811329,1.8596808258675e-5,-6.281112340841897e-8,0.0040339608469825575,1.882045266602357e-5,-6.325939983367222e-8,0.004034137070431829,1.906045203237547e-5,-6.374161530130195e-8,0.004034233855241526,1.928170635220029e-5,-6.41868612531973e-8,0.004034264876079334,1.9452018078757834e-5,-6.453000617107153e-8,0.004034253391531761,1.9546047063260236e-5,-6.47197441623075e-8,0.004034229755724816,1.9548977882390267e-5,-6.472596597020264e-8,0.004034227730682795,1.9459320969577683e-5,-6.454533452522716e-8,0.004034279865723162,1.9290186380915923e-5,-6.420383235003002e-8,0.004034412486171448,1.9068594732676885e-5,-6.375547510633614e-8,0.00403464093034948,1.8832637893526655e-5,-6.327679436677401e-8,0.004034965687074627,1.8626536313167505e-5,-6.285707244922939e-8,0.004035370034247165,1.8493819644007736e-5,-6.258465123000945e-8,0.004035819874790727,1.846886648562048e-5,-6.252971679787746e-8,0.004036266904185114,1.856732169763407e-5,-6.272465029492704e-8,0.0040366565598250765,1.8777113738250836e-5,-6.31455681508602e-8,0.0040369414612311345,1.9053783781087113e-5,-6.370271942688705e-8,0.004037098344333292,1.932539834606959e-5,-6.42504851948613e-8,0.004037141902942749,1.951083270094533e-5,-6.462457097034529e-8,0.004037125865169994,1.954813798447868e-5,-6.46995458547251e-8,0.004037125861820998,1.9419995141300983e-5,-6.444028053955575e-8,0.00403721048480607,1.9160768124473176e-5,-6.391602935018678e-8,0.004037416430514758,1.88403649270376e-5,-6.326771012194285e-8,0.0040377405727112705,1.853563684839144e-5,-6.265022145619625e-8,0.004038149143064464,1.8305856043064805e-5,-6.218312567891382e-8,0.004038594479970898,1.8181596820678142e-5,-6.192833669694351e-8,0.004039029805036155,1.8165835433560526e-5,-6.189230839848963e-8,0.004039418015136255,1.8241197474729e-5,-6.204049708155263e-8,0.0040397350446880215,1.837815198734788e-5,-6.231370568667206e-8,0.004039969999138671,1.8541650006683282e-5,-6.264136381327966e-8,0.004040124041563737,1.8695860404660215e-5,-6.295108921511804e-8,0.004040209074777056,1.8807706049100226e-5,-6.317591860236914e-8,0.004040246363654397,1.88500021655281e-5,-6.32607471793734e-8,0.004040264737547788,1.8804636954320954e-5,-6.316879237455187e-8,0.004040297831687618,1.866571824947087e-5,-6.288791561688243e-8,0.004040379958326903,1.844201983765977e-5,-6.243550964565625e-8,0.004040540705219954,1.8157672301950075e-5,-6.185990253089828e-8,0.004040799030115895,1.7850119174229367e-5,-6.123634554926798e-8,0.0040411581509778,1.7564868093298403e-5,-6.065660011340943e-8,0.004041602732207329,1.734741098407994e-5,-6.021277355052825e-8,0.0040420995762303815,1.7233639004230466e-5,-5.997796689164541e-8,0.004042602323436688,1.724067110935005e-5,-5.998756494201581e-8,0.00404305992163886,1.736012884995211e-5,-6.022533875758978e-8,0.004043427966196684,1.7555910433464828e-5,-6.061865961283453e-8,0.0040436810936756275,1.7768500926616962e-5,-6.104709566844615e-8,0.004043823230883101,1.7927149455153616e-5,-6.1367140862782e-8,0.004043891164479845,1.7968977540453174e-5,-6.145110341710769e-8,0.004043947176700689,1.7860007267002482e-5,-6.122984744605595e-8,0.0040440603521150744,1.760913353792817e-5,-6.072111082777755e-8,0.004044282997667049,1.726658843338252e-5,-6.002633777071843e-8,0.004044633306112802,1.6905912165610116e-5,-5.929416783466505e-8,0.0040450925842591984,1.6598297213721576e-5,-5.866858772554347e-8,0.004045616463144047,1.6391968202125593e-5,-5.824729428445154e-8,0.004046152091763345,1.630410509649094e-5,-5.80653572847142e-8,0.004046652760383014,1.6324348036651065e-5,-5.8102214711525505e-8,0.004047085929565268,1.6424100266681775e-5,-5.830035937199191e-8,0.004047435228495953,1.6566189179488793e-5,-5.8584786032397173e-8,0.004047698959744002,1.671216642566975e-5,-5.8877737365682856e-8,0.004047887444712365,1.6826943646276348e-5,-5.9108127517374904e-8,0.00404802049508203,1.6881670483517197e-5,-5.9217433706880595e-8,0.004048125273323472,1.6855947238255258e-5,-5.9164217502915826e-8,0.004048234127401434,1.674008799311883e-5,-5.8928701076803824e-8,0.004048381670060571,1.6537530470193916e-5,-5.851761039418674e-8,0.004048600436416601,1.6266746291805815e-5,-5.796802584768781e-8,0.004048914984056892,1.5961326425245878e-5,-5.734760338043135e-8,0.004049335282066074,1.566668088020222e-5,-5.674801447212363e-8,0.0040498513719114376,1.5432414454828066e-5,-5.626965875165331e-8,0.004050431921230339,1.5301075079280176e-5,-5.5998974280483204e-8,0.004051028668995067,1.5296083993458358e-5,-5.598395649797168e-8,0.004051586738790464,1.5412983005455173e-5,-5.62162478465142e-8,0.004052058328986434,1.5617600591062285e-5,-5.6627167195976384e-8,0.004052415758160085,1.5852514347711364e-5,-5.7100596870077054e-8,0.004052659913064241,1.6050494133565283e-5,-5.7500160816537554e-8,0.0040528214440387015,1.6151570852562244e-5,-5.7703907353645075e-8,0.004052953861013157,1.611931020329749e-5,-5.763746552942237e-8,0.004053119682835466,1.595162622613579e-5,-5.729612717276807e-8,0.004053373025435257,1.5682212292362576e-5,-5.6747852350428666e-8,0.004053744027610918,1.537106055446932e-5,-5.611410681536437e-8,0.004054230846152612,1.5086637935810276e-5,-5.553375453822118e-8,0.004054802304411898,1.488624806595296e-5,-5.5123232299645195e-8,0.0040554095026198176,1.4802029857689209e-5,-5.494808734565473e-8,0.004056000829014219,1.4836834906018199e-5,-5.501449222707493e-8,0.0040565344012080526,1.496913360261363e-5,-5.527907211829798e-8,0.004056984713435475,1.5162646600086324e-5,-5.5668377746635783e-8,0.004057343673139978,1.537616244421555e-5,-5.609881419197702e-8,0.004057618154709957,1.5570907870645105e-5,-5.6491651348612124e-8,0.004057826336088842,1.571498161585009e-5,-5.678207302107251e-8,0.004057994236563965,1.5785663812756403e-5,-5.692387796847087e-8,0.004058152876449292,1.5770755436499932e-5,-5.6892175274642595e-8,0.004058335730497766,1.56698047725992e-5,-5.6685842838322767e-8,0.004058575736492297,1.5495479753201927e-5,-5.6330312045967666e-8,0.004058901067412491,1.5274593050186677e-5,-5.587969998232432e-8,0.0040593292989023755,1.504744016568601e-5,-5.541556302293769e-8,0.004059860688647646,1.4863522530534258e-5,-5.5038323485976716e-8,0.004060472924789321,1.4772178278052189e-5,-5.484831991380623e-8,0.004061121016256655,1.4808824187926628e-5,-5.491786333355384e-8,0.004061745398388068,1.4980995070619321e-5,-5.526278213620586e-8,0.0040622878335508355,1.5260905424743596e-5,-5.58271445794069e-8,0.00406270977840194,1.5589957864201896e-5,-5.6492254117461846e-8,0.004063005280007226,1.5895053516072876e-5,-5.71096919262533e-8,0.004063202722944347,1.611033761314179e-5,-5.7545486920249105e-8,0.004063355322523949,1.6195737978189514e-5,-5.7717829505718655e-8,0.004063524982892078,1.614629397440836e-5,-5.761611433490631e-8,0.0040637654881181635,1.5990874718776372e-5,-5.729846921069878e-8,0.0040641096822484745,1.5782374878243806e-5,-5.687200018963553e-8,0.004064563196214051,1.558309622417832e-5,-5.646323142518138e-8,0.004065105372946402,1.5449401160722053e-5,-5.6186965778914343e-8,0.004065696400389077,1.5419375479983378e-5,-5.612111731815594e-8,0.004066288252635861,1.5506240841777267e-5,-5.6293121212787874e-8,0.004066836155862962,1.5698542971993716e-5,-5.668010909236039e-8,0.004067307459695976,1.5966009975132922e-5,-5.7220705532581126e-8,0.00406768613309999,1.6268363193234948e-5,-5.783296271933897e-8,0.004067972917711898,1.6564106468153707e-5,-5.8432340733695405e-8,0.004068182486831887,1.681727652571284e-5,-5.894554234053274e-8,0.00406833933892352,1.7001503611134662e-5,-5.931880776278692e-8,0.004068473756113949,1.7101841750667816e-5,-5.952159722920657e-8,0.004068618388467829,1.7115337876791556e-5,-5.9547687041123166e-8,0.004068805319711415,1.7051183194416186e-5,-5.941546370891142e-8,0.004069063045413328,1.693080237181354e-5,-5.9168176976249445e-8,0.004069412642286213,1.6787584460103433e-5,-5.887352588619779e-8,0.004069862675046376,1.6665125654505054e-5,-5.862021049541122e-8,0.0040704033862420915,1.6612132979317868e-5,-5.8507611354420696e-8,0.004071002433343476,1.6672362317351996e-5,-5.8625252169843815e-8,0.004071606146962371,1.6870078458229394e-5,-5.90230533337598e-8,0.004072150180031084,1.7195707718266797e-5,-5.968194828764344e-8,0.004072579327330133,1.7600304654934825e-5,-6.050250155157372e-8,0.004072869038903364,1.800622384140864e-5,-6.132663264350784e-8,0.004073036765467772,1.8332569931295446e-5,-6.1989505493645e-8,0.004073135737926338,1.852349328887892e-5,-6.237718185712606e-8,0.004073234663677566,1.85650892687075e-5,-6.246099877342193e-8,0.004073394556097025,1.848476914851136e-5,-6.229627231999442e-8,0.004073652726352091,1.833737723399551e-5,-6.199414171839608e-8,0.004074017372470005,1.818678426452505e-5,-6.168431508746106e-8,0.0040744707750797445,1.808984214398682e-5,-6.148259812586677e-8,0.004074977337424825,1.8085790232343694e-5,-6.14693541796517e-8,0.004075493263269258,1.8191439776279438e-5,-6.167952512829171e-8,0.004075975798354961,1.840124607827241e-5,-6.210249277646861e-8,0.004076390776901895,1.8691144047334405e-5,-6.268964660170682e-8,0.004076717622217568,1.902494399145827e-5,-6.336732629192284e-8,0.004076951353972912,1.9361837440099986e-5,-6.405219775676581e-8,0.004077101746210127,1.96635091438295e-5,-6.46659095300111e-8,0.0040771903314508785,1.989970237527024e-5,-6.514655672234517e-8,0.004077246262806788,2.005165635670929e-5,-6.545569860243698e-8,0.004077302032084395,2.0113486301099913e-5,-6.558109876386352e-8,0.0040773896466789,2.0092092019349717e-5,-6.553647593087778e-8,0.004077537342209875,2.0006253451383885e-5,-6.535969647604283e-8,0.004077766555167821,1.988527789663943e-5,-6.511016738314298e-8,0.004078088689458051,1.976710784085783e-5,-6.486516989220184e-8,0.004078501328342447,1.96951136887764e-5,-6.471343334262049e-8,0.004078984379126887,1.971216651307541e-5,-6.474300004433253e-8,0.004079498090171917,1.985082590723176e-5,-6.502100525056876e-8,0.004079986278779378,2.0120252289371937e-5,-6.55667052274478e-8,0.004080388235941525,2.0494122797303468e-5,-6.632662153528476e-8,0.004080659282108669,2.0908086133771597e-5,-6.716933519624624e-8,0.0040807921628955995,2.1274886377819846e-5,-6.791652262392293e-8,0.004080825530396653,2.151542116556529e-5,-6.840653341073122e-8,0.00408083076942298,2.1590301346052778e-5,-6.855881484240877e-8,0.00408088328291802,2.1513241158620907e-5,-6.84010788689678e-8,0.004081035155949392,2.134019848115492e-5,-6.804703209129059e-8,0.004081302546732209,2.1144355238359504e-5,-6.764545015636383e-8,0.004081668918553097,2.0992072249557375e-5,-6.733141248227607e-8,0.00408209685499066,2.092848134334002e-5,-6.719713964870882e-8,0.004082540990125184,2.09731231952271e-5,-6.72830951751148e-8,0.004082958197133572,2.112218615191573e-5,-6.758231956110174e-8,0.00408331422869279,2.1353847294547875e-5,-6.805099975797541e-8,0.0040835874057665485,2.1634567155020024e-5,-6.862106700376206e-8,0.004083770116681637,2.1925434668298697e-5,-6.921309213990532e-8,0.004083868551366543,2.218816882099307e-5,-6.974866033503243e-8,0.0040839008942840345,2.239039499761978e-5,-7.016132947403248e-8,0.004083894232067077,2.250978778831476e-5,-7.0405207142333e-8,0.004083880571241067,2.25366960163881e-5,-7.046030306590217e-8,0.00408389252947929,2.2475031488631666e-5,-7.033426314434203e-8,0.004083959249418965,2.2341562177163083e-5,-7.00608865512821e-8,0.004084102836943754,2.2163971654346905e-5,-6.969625158825354e-8,0.004084335399848269,2.1977972812721735e-5,-6.931302372966625e-8,0.004084656614019778,2.1823582213426522e-5,-6.899305140282665e-8,0.004085051725131036,2.1740298666453316e-5,-6.881758196303943e-8,0.00408549043013785,2.1760499615591525e-5,-6.88536205880247e-8,0.004085928134416261,2.1900671848150498e-5,-6.913569532030017e-8,0.0040863118371121795,2.215161693360532e-5,-6.964550832191338e-8,0.004086592559838579,2.2471365259167905e-5,-7.029728262333709e-8,0.004086743511323791,2.278742626781085e-5,-7.094245749548945e-8,0.004086777069432108,2.3014650869490377e-5,-7.140649996468963e-8,0.004086748324489586,2.3086554162397423e-5,-7.155319319147187e-8,0.004086737210606845,2.298478523801362e-5,-7.134486880118048e-8,0.0040868162246094596,2.274751838270059e-5,-7.085933294161156e-8,0.004087022774633262,2.245098166859568e-5,-7.025197183973786e-8,0.004087351063401967,2.21773293531232e-5,-6.969023534135919e-8,0.004087762942117613,2.1988078250473938e-5,-6.929965848306815e-8,0.004088206426731321,2.1912888693068682e-5,-6.914113536613453e-8,0.0040886315320029145,2.1951514131721826e-5,-6.921484527465759e-8,0.004088999563181579,2.2082048330308014e-5,-6.947683655171173e-8,0.004089286694209541,2.227007195705091e-5,-6.985740065000953e-8,0.0040894840997412005,2.2476260228544262e-5,-7.027641992708612e-8,0.004089596524746182,2.2662126678655353e-5,-7.065510425729817e-8,0.004089640201779963,2.2794420332461283e-5,-7.092513321189004e-8,0.0040896402838893646,2.284862699133553e-5,-7.103599943485881e-8,0.004089627705490863,2.2811697616913437e-5,-7.096068474456991e-8,0.004089635411507748,2.2683801109797253e-5,-7.069921973276663e-8,0.004089694115390104,2.2478677051700234e-5,-7.027932793650815e-8,0.004089828036207196,2.2222286505042233e-5,-6.975365444924291e-8,0.004090051161470819,2.1949786269337134e-5,-6.919369964114232e-8,0.004090364511991667,2.170103932630054e-5,-6.86808528694382e-8,0.004090754790796106,2.151498959955255e-5,-6.829506592183514e-8,0.004091194666195651,2.142330844766789e-5,-6.810185855541579e-8,0.004091644993372157,2.1443624281504225e-5,-6.813824314344391e-8,0.0040920596967446154,2.1572833523424404e-5,-6.83986719144852e-8,0.004092394222561333,2.1782031162445324e-5,-6.88243378416857e-8,0.00409261763274889,2.2016102025325163e-5,-6.93022303226837e-8,0.0040927261558925485,2.2201941671687712e-5,-6.968213454108016e-8,0.004092752390399775,2.226781056753669e-5,-6.98165868041908e-8,0.004092761828782771,2.217010941896625e-5,-6.961594162020133e-8,0.004092832347522563,2.191489742469643e-5,-6.90924145000651e-8,0.004093023916310563,2.1559197363135236e-5,-6.836256507621499e-8,0.004093355382863215,2.1188443825140062e-5,-6.760103065423595e-8,0.004093801442773309,2.0883140487863215e-5,-6.697239893387999e-8,0.004094308353665391,2.0693642127327703e-5,-6.657980636574702e-8,0.004094815962852751,2.0632674505226746e-5,-6.644971858931919e-8,0.0040952745320277885,2.068224872375703e-5,-6.654596569206641e-8,0.0040956524926629954,2.0806194730034872e-5,-6.67951505187713e-8,0.004095937126088291,2.0961685991746184e-5,-6.711000602505771e-8,0.004096131713874594,2.1107263596701378e-5,-6.740571701477901e-8,0.004096251810518326,2.1207630473032185e-5,-6.760979080112129e-8,0.004096321810660583,2.123646163530461e-5,-6.766796655208107e-8,0.004096371868974252,2.117828020698269e-5,-6.754820351325027e-8,0.004096434786498749,2.102987222746858e-5,-6.724363080817744e-8,0.0040965424713340064,2.0801158863912584e-5,-6.677428971329367e-8,0.004096721827951759,2.0514974467630822e-5,-6.618661611930796e-8,0.004096990403276643,2.0205057223031076e-5,-6.554934138305202e-8,0.004097352573177603,1.9911884762201487e-5,-6.494509874821933e-8,0.0040977972420050135,1.9676507214749987e-5,-6.445798705026133e-8,0.00409829795293573,1.953307645034436e-5,-6.415839226662203e-8,0.00409881595753222,1.950131413892924e-5,-6.408749767114518e-8,0.0040993062317397294,1.958041987144307e-5,-6.424454113672405e-8,0.004099725949858662,1.9745840788228674e-5,-6.457984351456717e-8,0.004100044534043069,1.9950335607570126e-5,-6.499672432697775e-8,0.004100253632198516,2.013084019847643e-5,-6.536554032319219e-8,0.004100374104936217,2.0221969791798727e-5,-6.555157283498206e-8,0.004100455954183344,2.017477740412432e-5,-6.545379905395303e-8,0.0041005675891791,1.9975516702515512e-5,-6.504358355699308e-8,0.004100774805833544,1.965545542492212e-5,-6.438482789008002e-8,0.004101116885460426,1.928372582152993e-5,-6.361922074229146e-8,0.004101591870619371,1.894360567216253e-5,-6.291755062884213e-8,0.004102159238000308,1.8703470116557066e-5,-6.242018269746027e-8,0.00410275747591571,1.859703517591237e-5,-6.219659152435074e-8,0.0041033257619690735,1.8620141853715126e-5,-6.223872071816769e-8,0.004103819526959297,1.874065523208672e-5,-6.248114525442182e-8,0.004104216341986781,1.8912959818053868e-5,-6.283064370406833e-8,0.004104514378076207,1.909031638156852e-5,-6.319144791179558e-8,0.004104727475774354,1.9232607115184218e-5,-6.348113509152911e-8,0.004104879851426564,1.931006277488053e-5,-6.363836365897142e-8,0.004105001750774871,1.9304641429037065e-5,-6.362581755356893e-8,0.004105126061105588,1.9210481227772614e-5,-6.343120965738759e-8,0.004105285298052878,1.903412670485694e-5,-6.306774716776545e-8,0.004105508333763851,1.879451414608241e-5,-6.257405625726658e-8,0.004105816518487927,1.8522105372562953e-5,-6.201237977882163e-8,0.004106219408261088,1.8256224455901378e-5,-6.146316659960243e-8,0.004106711031782206,1.8039834534071813e-5,-6.101448588822051e-8,0.00410726820104739,1.7911758794004197e-5,-6.074620274769431e-8,0.00410785241819564,1.7897526858302653e-5,-6.071123337928272e-8,0.004108416180285091,1.8001212401072268e-5,-6.091866896065255e-8,0.0041089130241994485,1.820113748087769e-5,-6.132469615222139e-8,0.004109309104207408,1.8451646262672002e-5,-6.183595690444913e-8,0.0041095931983087045,1.869153552715818e-5,-6.232669811154938e-8,0.004109782084836411,1.8857869433917337e-5,-6.266717936609684e-8,0.004109919049387194,1.890226775739589e-5,-6.275732940350907e-8,0.004110064678761718,1.8805497319272342e-5,-6.255697025959145e-8,0.004110281124285083,1.858555641793577e-5,-6.210261238000375e-8,0.004110613703963449,1.829511610327427e-5,-6.150227952510236e-8,0.004111076186029953,1.8007169267841526e-5,-6.090602884987728e-8,0.004111646199815092,1.779292050803584e-5,-6.046048759796877e-8,0.0041122733354077975,1.770055011084275e-5,-6.026514317284309e-8,0.0041128962379817155,1.774357289428051e-5,-6.034829633072815e-8,0.004113460777981091,1.790224628658376e-5,-6.06698069713779e-8,0.004113932211375858,1.8134726118468195e-5,-6.114390913053563e-8,0.004114298813701848,1.8391239948785017e-5,-6.166830949707429e-8,0.004114568894174971,1.862570592744579e-5,-6.214811466500701e-8,0.004114764817887481,1.8802594772439982e-5,-6.251002429640857e-8,0.004114916941016438,1.8899611324047082e-5,-6.270792853777051e-8,0.004115058788903396,1.8907892822336005e-5,-6.272336282371548e-8,0.004115223529956793,1.883126597625609e-5,-6.256398245923092e-8,0.00411544112890223,1.8685396522870248e-5,-6.226179188618023e-8,0.004115735426728429,1.8496880076378558e-5,-6.187126850283822e-8,0.004116120670135077,1.830166124887891e-5,-6.146615285795259e-8,0.0041165976094830435,1.8141735245261587e-5,-6.113275473128614e-8,0.0041171501459813615,1.8059102673713814e-5,-6.095761535265301e-8,0.0041177444298378775,1.808677278934742e-5,-6.100903876410642e-8,0.0041183326482072515,1.8238377845822922e-5,-6.131565461947553e-8,0.004118862644895194,1.8500025366803055e-5,-6.184947666116739e-8,0.004119291845670744,1.882888305936909e-5,-6.252277761117837e-8,0.004119600995524518,1.916129270179671e-5,-6.320463576506777e-8,0.004119802051454148,1.9429176950619105e-5,-6.375467477591138e-8,0.004119936452241972,1.9579389208801835e-5,-6.406297574667329e-8,0.004120063979010977,1.958911524116044e-5,-6.408192449547398e-8,0.004120246088908799,1.9472222424355246e-5,-6.383944294513096e-8,0.00412052913259154,1.927501773422856e-5,-6.343041897475507e-8,0.004120932292519319,1.906320686341203e-5,-6.299000026420115e-8,0.0041214433902594435,1.890409343719484e-5,-6.265701578056743e-8,0.004122023468462977,1.884920647966687e-5,-6.253815085908088e-8,0.004122618451191795,1.8922390072082127e-5,-6.268323571647604e-8,0.004123173897075194,1.911656377839061e-5,-6.307832429936484e-8,0.0041236480036418895,1.939920158835302e-5,-6.365677983994343e-8,0.004124019202185466,1.9723461236942205e-5,-6.432213367561228e-8,0.004124287288244285,2.0040448516884058e-5,-6.49734234542431e-8,0.004124469567213898,2.0308896945277934e-5,-6.552527867409888e-8,0.004124594685466592,2.050066336393985e-5,-6.591937018917111e-8,0.004124696486907284,2.0602417835979338e-5,-6.61279466825767e-8,0.004124809121272801,2.0614914334906605e-5,-6.615231627858997e-8,0.00412496354787499,2.055127128513555e-5,-6.601926590271963e-8,0.004125184918062037,2.0435134717556e-5,-6.57772755655983e-8,0.004125490124622406,2.029885113054249e-5,-6.549281651963915e-8,0.004125884999648892,2.0181120072676474e-5,-6.524562199853932e-8,0.004126361187835996,2.012312227810521e-5,-6.512079755335909e-8,0.004126893637683346,2.016202160381174e-5,-6.519543374690128e-8,0.0041274407643772945,2.0321520249793008e-5,-6.551902559572129e-8,0.0041279499280898095,2.0601210358685798e-5,-6.609131944530118e-8,0.00412836969991199,2.0969274287628928e-5,-6.684706034379096e-8,0.004128666706476001,2.1364544730577544e-5,-6.766013860494177e-8,0.0041288402130868545,2.1711284432474734e-5,-6.837410979895914e-8,0.0041289260941142205,2.1943052421982018e-5,-6.88515335136089e-8,0.0041289863790102055,2.2025323150899638e-5,-6.902071138081227e-8,0.004129088666642758,2.1966206179071726e-5,-6.889782614187511e-8,0.0041292849632450085,2.1811418243791324e-5,-6.857662713945957e-8,0.0041295982485091585,2.1627811881081866e-5,-6.819461136355642e-8,0.004130019713586947,2.1483464269815928e-5,-6.789215710034456e-8,0.004130514847826705,2.1431037977969292e-5,-6.777831067919666e-8,0.004131034556120914,2.1497848193685356e-5,-6.79102050168444e-8,0.0041315275855180284,2.1683260008845836e-5,-6.828741599827955e-8,0.0041319514162801475,2.196236627165169e-5,-6.885922779761631e-8,0.0041322797208666745,2.2294052841138688e-5,-6.95410620986726e-8,0.004132505435793167,2.2631076927335552e-5,-7.023526137874012e-8,0.004132639559466678,2.2929656701609897e-5,-7.085103297987233e-8,0.0041327068073958445,2.3156619956378226e-5,-7.131941152567361e-8,0.004132739789933165,2.329325563893979e-5,-7.160135080100659e-8,0.0041327732697304005,2.3336073204430915e-5,-7.168931655885992e-8,0.004132839498526474,2.3295362222597494e-5,-7.160425905283545e-8,0.00413296489491445,2.319267720853539e-5,-7.139037898864675e-8,0.004133167727447015,2.3058081690060263e-5,-7.110948143247038e-8,0.004133456251584568,2.2927368246838634e-5,-7.083536734083875e-8,0.004133826864680379,2.2838893766911416e-5,-7.064744138921729e-8,0.004134262246139552,2.2829234263837425e-5,-7.062178621276581e-8,0.004134730285875639,2.2926717969593375e-5,-7.081769093706275e-8,0.004135185707911027,2.31425991815179e-5,-7.125916402041035e-8,0.0041355769071945506,2.346164589422353e-5,-7.191520269449173e-8,0.004135859441965122,2.383687117408675e-5,-7.268874415754124e-8,0.00413601369908566,2.4195039750171892e-5,-7.342810252300716e-8,0.004136058529573073,2.4456681249135846e-5,-7.396855759155849e-8,0.004136050487278654,2.456513384479195e-5,-7.419258398190955e-8,0.004136065019007573,2.4509860369459744e-5,-7.407805053129414e-8,0.004136168231272512,2.4330162569653813e-5,-7.370577611668552e-8,0.004136394459822497,2.409789030051738e-5,-7.322376999160329e-8,0.0041367395368764786,2.389056192725738e-5,-7.279186780905995e-8,0.0041371686481556655,2.3768649735412706e-5,-7.253505860848046e-8,0.004137631091783037,2.3763952092816136e-5,-7.251957894397494e-8,0.0041380747660009765,2.3878490225956004e-5,-7.275049880309497e-8,0.004138456791204421,2.4090059448810835e-5,-7.318286374029693e-8,0.004138749601503419,2.4360668956780575e-5,-7.37387885346733e-8,0.004138943194899096,2.4645468588374668e-5,-7.4325712073413e-8,0.004139044422775969,2.49009409295305e-5,-7.485336553975188e-8,0.0041390740178470385,2.509158954761269e-5,-7.52478055388981e-8,0.004139062078858488,2.519450532721772e-5,-7.546109277291754e-8,0.004139042857680081,2.5201537323836e-5,-7.547591881161818e-8,0.004139049681730755,2.5119185084212284e-5,-7.530538123596477e-8,0.004139110696144454,2.4966623708413148e-5,-7.498882514872912e-8,0.004139245793706889,2.4772544989273615e-5,-7.458527889421062e-8,0.004139464664095014,2.4571523457755883e-5,-7.416602259172535e-8,0.0041397656452513715,2.4400247311316832e-5,-7.380696250121588e-8,0.004140135103394312,2.4293510720908743e-5,-7.358048043260725e-8,0.004140547313718007,2.427954414351527e-5,-7.354575599206736e-8,0.004140965413628404,2.4374141223041407e-5,-7.373639326420042e-8,0.004141344873455721,2.457362346913388e-5,-7.414551482757032e-8,0.004141641326420783,2.48483642172095e-5,-7.471205791422762e-8,0.0041418235765014145,2.5141002654557318e-5,-7.53169965475809e-8,0.004141889215372904,2.537511100337642e-5,-7.58014858398564e-8,0.004141874921065243,2.5477517766043897e-5,-7.601342829768719e-8,0.004141851043315424,2.5408217951499304e-5,-7.58696248028512e-8,0.004141897199717203,2.5181416417097176e-5,-7.539927233814727e-8,0.004142070032062376,2.4862233791190885e-5,-7.473692425033855e-8,0.004142382136416294,2.4539521848464896e-5,-7.406615519129582e-8,0.004142802962387187,2.4291862821753357e-5,-7.354938496791458e-8,0.004143276515293847,2.4165133492908547e-5,-7.328171206236878e-8,0.004143742610608551,2.416776805253065e-5,-7.328119646301892e-8,0.004144152149564842,2.427840550811608e-5,-7.350451056510971e-8,0.004144474270556827,2.4457891470911152e-5,-7.387144252687797e-8,0.004144697408744952,2.4660435604785124e-5,-7.428767698568889e-8,0.004144827026181618,2.484202674459949e-5,-7.466207837487929e-8,0.004144881994566124,2.4966196964502726e-5,-7.491871231531306e-8,0.0041448905048311665,2.500781452275799e-5,-7.500493400442998e-8,0.004144885711446158,2.4955282841337656e-5,-7.489617429690564e-8,0.004144901261135358,2.481120187725696e-5,-7.459741678649363e-8,0.004144966982912023,2.4591489692204364e-5,-7.41413441693972e-8,0.004145105121592094,2.4322991873659133e-5,-7.358329870301691e-8,0.004145327544473218,2.403980237268326e-5,-7.299364256044502e-8,0.004145634190738719,2.377879003345024e-5,-7.24485997969921e-8,0.0041460127758167105,2.3574818073592004e-5,-7.202053283003591e-8,0.00414643966336036,2.3455929817344242e-5,-7.17680808924154e-8,0.004146881876040019,2.343860803994068e-5,-7.172625974921142e-8,0.0041473004753961136,2.3523144481116746e-5,-7.189658153429537e-8,0.004147656007247302,2.3689506623327728e-5,-7.223811648289735e-8,0.004147916808771172,2.3895221603221915e-5,-7.266284458651311e-8,0.0041480699650081705,2.4078275121643128e-5,-7.304167053080141e-8,0.004148132195104441,2.4168654642653938e-5,-7.322864004199276e-8,0.004148154320381181,2.4109831376965727e-5,-7.310586674653458e-8,0.004148211444887462,2.388423375298592e-5,-7.263656875158706e-8,0.004148377033934869,2.3528252738308904e-5,-7.189610084153054e-8,0.004148691963497075,2.3123109596003326e-5,-7.105280147716092e-8,0.0041491473031022115,2.27629923552026e-5,-7.030185625864194e-8,0.004149691355374006,2.251899382813585e-5,-6.979067613092937e-8,0.004150253959921051,2.2418989460666156e-5,-6.957735617198645e-8,0.0041507716459602394,2.2449203170718728e-5,-6.963393426794152e-8,0.0041512023452277315,2.2568972898863263e-5,-6.987681903782312e-8,0.004151528686471275,2.2727414027209948e-5,-7.020106669410957e-8,0.004151754402958528,2.287579296648152e-5,-7.050582576156142e-8,0.004151898371708361,2.2974592076086222e-5,-7.070894000466604e-8,0.004151988885126911,2.2996670531363484e-5,-7.075363347500511e-8,0.004152058955955876,2.2928322974470473e-5,-7.061092750138042e-8,0.004152142382845093,2.2769356506527704e-5,-7.02799821925708e-8,0.0041522701226427315,2.253246200945357e-5,-6.978684571499767e-8,0.004152466791086021,2.2241707192617996e-5,-6.91812637823709e-8,0.004152747431065876,2.192983419561754e-5,-6.853098876725601e-8,0.004153115009949348,2.163416853510276e-5,-6.791329347391853e-8,0.004153559267504416,2.1391372281000134e-5,-6.740420502635174e-8,0.004154057371060857,2.1231670864169294e-5,-6.706668724391143e-8,0.004154576533781043,2.1173336928637963e-5,-6.693925978559595e-8,0.004155078480972005,2.121824985076246e-5,-6.702665399660066e-8,0.00415552544495053,2.1349266802329204e-5,-6.729405133405011e-8,0.004155887326128362,2.153005321203464e-5,-6.76663910045802e-8,0.004156149549489265,2.1708297200182368e-5,-6.803485371706521e-8,0.004156320429207047,2.18236504091612e-5,-6.827342868724723e-8,0.004156435436193511,2.1821325191162423e-5,-6.826745995209362e-8,0.004156554325266331,2.1670061717922965e-5,-6.795132318021076e-8,0.004156747395736589,2.137880483492358e-5,-6.734326680703699e-8,0.004157071827894007,2.100211751024774e-5,-6.655662407843876e-8,0.004157547507220719,2.0626045399976664e-5,-6.577030263586701e-8,0.004158146618620178,2.033725265562143e-5,-6.516458127082557e-8,0.0041588047435924405,2.0191197783449442e-5,-6.485500848833399e-8,0.00415944679960301,2.0196654226797564e-5,-6.486025586921148e-8,0.004160012347865569,2.0321627878139327e-5,-6.51143438105989e-8,0.004160468885463152,2.0512010737360385e-5,-6.550526134746365e-8,0.004160812154099564,2.071068901280456e-5,-6.591452917912113e-8,0.004161059067630895,2.087014425419266e-5,-6.624331294613351e-8,0.004161239040043181,2.095792204410952e-5,-6.642382604808944e-8,0.004161386829742425,2.095738077188751e-5,-6.642102047979822e-8,0.0041615375835493676,2.0866361049708102e-5,-6.622998144256762e-8,0.004161723445766619,2.069540030448162e-5,-6.587231810027344e-8,0.004161970833005958,2.0465957657424777e-5,-6.53924752623177e-8,0.004162297807662163,2.0208374532718804e-5,-6.485342857751e-8,0.004162711465524075,1.9958972538912966e-5,-6.433060157681065e-8,0.004163205788963567,1.9755721872438256e-5,-6.390289279020207e-8,0.004163760874885751,1.9632401292486634e-5,-6.364064398012052e-8,0.0041643445126078645,1.9611945515193513e-5,-6.359191191485507e-8,0.004164916661599382,1.9700370056451175e-5,-6.376982675484982e-8,0.004165436593260296,1.9883038081479463e-5,-6.414465536185601e-8,0.004165871533002719,2.0124840290481865e-5,-6.464389273479223e-8,0.004166204973161034,2.03750141868381e-5,-6.516203187808346e-8,0.0041664427071129,2.0576291719662896e-5,-6.557950750839939e-8,0.004166614831251215,2.067725739446178e-5,-6.578854573835485e-8,0.004166772201513261,2.064596860090837e-5,-6.572180046924913e-8,0.004166976394844767,2.0481684872547044e-5,-6.537706967734264e-8,0.004167283762105637,2.0220289969068403e-5,-6.482876722062341e-8,0.0041677270966903575,1.9928853053708316e-5,-6.42166276496646e-8,0.004168301889621721,1.9687639520167372e-5,-6.370817178698891e-8,0.004168964945397345,1.9564346141463034e-5,-6.344493463573707e-8,0.0041696482095524585,1.9591663234778752e-5,-6.349560115607152e-8,0.004170281928490304,1.975909669494271e-5,-6.383883261318782e-8,0.004170815776114936,2.002177562328637e-5,-6.438149484450375e-8,0.004171229165072177,2.0319307693815556e-5,-6.499787658365365e-8,0.004171529641595815,2.0594371506068787e-5,-6.556842529790701e-8,0.004171744205095692,2.08044574697309e-5,-6.600426377969002e-8,0.004171909319060356,2.0925909999591906e-5,-6.625570255367975e-8,0.004172063035543002,2.095283945319605e-5,-6.631007474738575e-8,0.004172240006446445,2.0893942567726186e-5,-6.618518936112582e-8,0.004172468631381149,2.0769185793469826e-5,-6.592244924085984e-8,0.00417276921141435,2.0606998287037323e-5,-6.558098507505531e-8,0.004173152263607924,2.044171213681954e-5,-6.523229587640529e-8,0.004173616699217774,2.0310521591751063e-5,-6.49539193513707e-8,0.004174148228173609,2.0249146804649307e-5,-6.482044670278411e-8,0.0041747190205534725,2.0285797724636808e-5,-6.489100076513135e-8,0.004175290038969232,2.043401685070224e-5,-6.519431780277011e-8,0.004175817138082009,2.0686286120805764e-5,-6.571531492271147e-8,0.004176260742955059,2.1011275247548487e-5,-6.638915896100802e-8,0.004176596947866172,2.135738903704526e-5,-6.710846106930013e-8,0.004176826283818876,2.1663316572518304e-5,-6.774516430718877e-8,0.004176976440504031,2.187329985370935e-5,-6.818241888125293e-8,0.004177097171342621,2.1952541600749897e-5,-6.834687461472092e-8,0.004177248393652027,2.1897850265493772e-5,-6.823110493770005e-8,0.004177484698447774,2.1740143881249863e-5,-6.789904756326871e-8,0.004177840456289382,2.153777152476557e-5,-6.74722389787032e-8,0.004178319648003268,2.1361956093379974e-5,-6.709951969906079e-8,0.004178893720907776,2.1277850737766288e-5,-6.69174602353876e-8,0.004179508920172153,2.1326593435868438e-5,-6.701273548062968e-8,0.00418010143870764,2.1514398644594126e-5,-6.739909921106913e-8,0.004180615325979776,2.181278040040501e-5,-6.801760816720763e-8,0.004181016588925626,2.2169477458321236e-5,-6.875930338309788e-8,0.004181298828271539,2.2524986894682156e-5,-6.949975199756988e-8,0.004181480040607371,2.282791399696808e-5,-7.013122390191389e-8,0.0041815939531634075,2.304443453220907e-5,-7.058260201965475e-8,0.004181680312312281,2.3160968578745368e-5,-7.082508197011263e-8,0.0041817771738139765,2.31820016723154e-5,-7.086767934850143e-8,0.004181916138040746,2.3125777208913207e-5,-7.074824050457918e-8,0.004182119981389813,2.301988109644779e-5,-7.052420786013162e-8,0.004182401587912403,2.2897560902910874e-5,-7.026493333350233e-8,0.004182763226082177,2.279464572132352e-5,-7.004528039888718e-8,0.004183195714757309,2.27463722411251e-5,-6.993905040066949e-8,0.0041836776903782045,2.2783245722880823e-5,-7.001037080800247e-8,0.004184175936522711,2.2925337371297516e-5,-7.030174363642383e-8,0.004184648351533992,2.3175376573468616e-5,-7.081948145094982e-8,0.00418505106926234,2.351265779926658e-5,-7.152078397866612e-8,0.00418534981740814,2.3891456557676195e-5,-7.231026107348822e-8,0.004185532699444083,2.4247798955379997e-5,-7.305402455302344e-8,0.0041856186975773695,2.4515523630203316e-5,-7.361333203789702e-8,0.004185656116733408,2.4647127383329684e-5,-7.388829334143641e-8,0.004185709463990267,2.4630561585255983e-5,-7.385309068068146e-8,0.004185839553237669,2.4494045601495442e-5,-7.356612233607162e-8,0.004186085175026919,2.4297013898756418e-5,-7.315119149276783e-8,0.004186453058714402,2.4111865678345753e-5,-7.275951997366621e-8,0.00418691819641979,2.4003918546233812e-5,-7.252797509274851e-8,0.004187432570247736,2.4015686123816057e-5,-7.254618294928173e-8,0.004187938527366445,2.4158751006996613e-5,-7.283932258420115e-8,0.00418838289655064,2.4413937365967342e-5,-7.336815666881627e-8,0.004188728513422404,2.4738606360928003e-5,-7.404399556996649e-8,0.00418896077263449,2.5078536869024493e-5,-7.475342352649681e-8,0.004189088187108331,2.5380979408035573e-5,-7.538568393181177e-8,0.004189137637378765,2.560542386655624e-5,-7.585541248978948e-8,0.004189146482758514,2.5729746333905715e-5,-7.611571356090715e-8,0.004189154226481784,2.5751295531856018e-5,-7.616056328669566e-8,0.004189195811872894,2.5684118435083626e-5,-7.601902615037475e-8,0.004189297432699497,2.55542284301067e-5,-7.574531169066045e-8,0.004189474640743976,2.539461358412779e-5,-7.54082984053367e-8,0.004189731923761839,2.5240920754474522e-5,-7.508253449426259e-8,0.004190062893369365,2.5127892543049684e-5,-7.484086743090381e-8,0.004190450577587119,2.508605327542561e-5,-7.474758404267058e-8,0.004190867863493793,2.5137902888573805e-5,-7.48504270355493e-8,0.004191278851066964,2.5293029167128904e-5,-7.517021445445091e-8,0.004191642553303303,2.55423836176811e-5,-7.568861108228818e-8,0.004191920429727899,2.585359199989586e-5,-7.633807975528864e-8,0.004192087961726734,2.6171043691637975e-5,-7.700197953776512e-8,0.0041921473996541884,2.6425138639552714e-5,-7.753404214212685e-8,0.004192134962329874,2.655208648022618e-5,-7.780007245043969e-8,0.004192114992464122,2.6518357750800253e-5,-7.772933711625707e-8,0.004192159595389882,2.6337159580545134e-5,-7.734907825665287e-8,0.0041923223662205,2.6066037508450072e-5,-7.677941655751047e-8,0.004192619875803577,2.578592305862587e-5,-7.618950486964727e-8,0.0041930293080447165,2.557321200031067e-5,-7.57392457018824e-8,0.004193500258489232,2.5478197525003033e-5,-7.553431849801728e-8,0.004193972401104941,2.5516253407646417e-5,-7.560771560475328e-8,0.004194391412284077,2.5670481527066318e-5,-7.592504671513956e-8,0.004194719476384159,2.5901118869691845e-5,-7.640387556528128e-8,0.004194939943894964,2.6157253045760205e-5,-7.693795310378307e-8,0.004195057196908215,2.6387965736528168e-5,-7.742045708403442e-8,0.004195093049339342,2.655137914482246e-5,-7.776307074307687e-8,0.0041950809049979216,2.662075619193178e-5,-7.790902792572845e-8,0.0041950589164355375,2.6587196549228087e-5,-7.783901651533447e-8,0.004195063418449753,2.6459035460426867e-5,-7.75700484300396e-8,0.004195123687424457,2.6258649342688074e-5,-7.714875237095379e-8,0.004195258624765763,2.6017731648806405e-5,-7.664139315682479e-8,0.0041954753979068695,2.5772178721423704e-5,-7.612311259338277e-8,0.004195769575099257,2.5557431308106203e-5,-7.566822001278618e-8,0.004196126138573454,2.540453466231477e-5,-7.534204817948078e-8,0.004196520954855405,2.53367037714102e-5,-7.51938225051339e-8,0.004196922622790946,2.5365966871741377e-5,-7.524954946219042e-8,0.004197295156724912,2.5489504985313087e-5,-7.550410520029874e-8,0.004197602564194241,2.5685951525308174e-5,-7.591317047680027e-8,0.004197816369561635,2.5913292788382522e-5,-7.638861304882352e-8,0.004197925960352721,2.6111518336327034e-5,-7.68040568734833e-8,0.004197949030411529,2.6213720596972247e-5,-7.701841069760118e-8,0.004197935777056729,2.6166841984154432e-5,-7.691972134593537e-8,0.004197959246279704,2.5955973534895593e-5,-7.647632694596954e-8,0.004198090449018128,2.561816100677808e-5,-7.576574198158926e-8,0.0041983690577137925,2.523320397695459e-5,-7.495518310321368e-8,0.00419878704502883,2.4893403872054307e-5,-7.423809664192561e-8,0.004199294657828197,2.466944744060831e-5,-7.37627848726335e-8,0.004199822567905109,2.4590529631573546e-5,-7.35909004360926e-8,0.004200305861270729,2.4644214422214637e-5,-7.369713717322046e-8,0.0042006995521685,2.478930388189759e-5,-7.399597656866322e-8,0.0042009837510207735,2.497203494463084e-5,-7.437531825774549e-8,0.004201161612568837,2.5139530804678885e-5,-7.472443695283559e-8,0.0042012538478359,2.524867550071118e-5,-7.495254886807737e-8,0.004201292331705662,2.527094607106964e-5,-7.49991216701699e-8,0.00420131393742547,2.5194311755950153e-5,-7.483814941996342e-8,0.004201354951284227,2.502295376661067e-5,-7.447781373617757e-8,0.0042014462866753815,2.4775206437341213e-5,-7.395626000164893e-8,0.004201609778427287,2.448005996210069e-5,-7.333420007618452e-8,0.004201855844869758,2.4172631007671907e-5,-7.268529378705414e-8,0.004202182698645817,2.3889171851144942e-5,-7.208562808425933e-8,0.004202577017310062,2.3662279170995062e-5,-7.160372968477706e-8,0.004203015758641201,2.351672818202007e-5,-7.129194406720078e-8,0.004203468829726377,2.3466037764782944e-5,-7.11792747736706e-8,0.004203902457944527,2.3509754658052647e-5,-7.126556074908164e-8,0.004204283346550584,2.3631449505063676e-5,-7.151698648158335e-8,0.004204584061959764,2.3797752657327603e-5,-7.186374646115213e-8,0.0042047900364866496,2.3959694992948275e-5,-7.22027000677904e-8,0.0042049075001769935,2.4058568751254713e-5,-7.240978381987185e-8,0.004204969667533672,2.4038460412971196e-5,-7.23666645880367e-8,0.004205036113172845,2.386531479855544e-5,-7.200115046387884e-8,0.004205179685910332,2.3546624248548318e-5,-7.132872503889457e-8,0.0042054607744250174,2.313929579412769e-5,-7.046897812798647e-8,0.00420589989798239,2.27347232082449e-5,-6.961404483515537e-8,0.004206466015888612,2.242427014344388e-5,-6.895601774624227e-8,0.004207089445384607,2.2264274521212205e-5,-6.861351443079364e-8,0.004207690765000283,2.2260358548173973e-5,-6.859880736537034e-8,0.004208207794816714,2.2375384589948536e-5,-6.883449347627073e-8,0.004208608832725967,2.2550256047354552e-5,-6.919700655526116e-8,0.004208892174623421,2.2724239908018644e-5,-6.955907850228315e-8,0.0042090782601795,2.284808125073127e-5,-6.981713891001085e-8,0.004209200296160906,2.2889691428958756e-5,-6.990328564693268e-8,0.004209296350094005,2.283492007234416e-5,-6.97870980120373e-8,0.004209403565906254,2.268592751806816e-5,-6.947247890090181e-8,0.004209554005893156,2.2458595057271006e-5,-6.899240475833879e-8,0.004209771538720962,2.2179411033598958e-5,-6.840241608206303e-8,0.00421006954601963,2.1881833085248087e-5,-6.777287276654248e-8,0.0042104495193963105,2.1602047665670182e-5,-6.717991814560981e-8,0.0042109008189892645,2.137421177667367e-5,-6.669544160393412e-8,0.004211401868604031,2.1225620883696596e-5,-6.637699983388579e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json new file mode 100644 index 0000000000..56ed583dde --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":25000,"numberOfSamples":1000,"samples":[0.0042119228229227776,2.117242668988509e-5,-6.625892772821196e-8,0.00421242951621424,2.1216421815835606e-5,-6.634559593072919e-8,0.004212888396602669,2.1343324948057996e-5,-6.660764965178544e-8,0.004213272077688695,2.1522955697259163e-5,-6.698208934125665e-8,0.004213565153061029,2.171164617537871e-5,-6.737707330135306e-8,0.004213769823711238,2.1857483451438128e-5,-6.768286051317844e-8,0.004213910198871436,2.190927122349849e-5,-6.779084064030356e-8,0.004214032922657624,2.1829493537962127e-5,-6.762116816618272e-8,0.004214200852587069,2.160938196621095e-5,-6.71548148810529e-8,0.004214477322022827,2.1280462370500936e-5,-6.645802296286292e-8,0.004214903100503305,2.091373094832423e-5,-6.568048925307495e-8,0.004215475880773675,2.0600151223130995e-5,-6.501412598684065e-8,0.004216145898744334,2.0417442948628495e-5,-6.462301093688222e-8,0.004216833579580056,2.0400376819345232e-5,-6.458079850055622e-8,0.004217459970123071,2.053157579362677e-5,-6.485132807375522e-8,0.004217972502130171,2.0755398012646987e-5,-6.531780445307867e-8,0.004218354775674382,2.100283844312381e-5,-6.583514699901046e-8,0.004218621473875984,2.1213061032032433e-5,-6.627523661803764e-8,0.004218806437975746,2.1344829856945014e-5,-6.655094448616457e-8,0.0042189509605779895,2.1378863630848206e-5,-6.662115374902181e-8,0.004219095409105211,2.1315105530184897e-5,-6.648517553484988e-8,0.004219274283414654,2.1168357298914947e-5,-6.617374421911176e-8,0.0042195135261831026,2.0964046864058137e-5,-6.574021509881736e-8,0.0042198289277669875,2.0734467344645254e-5,-6.52526270229363e-8,0.004220225061155502,2.0515161357874974e-5,-6.478598265567233e-8,0.004220694716869642,2.0341013243499278e-5,-6.441392136515793e-8,0.004221219187507694,2.024179213121955e-5,-6.419932023758131e-8,0.004221769966808666,2.0237378693578086e-5,-6.418431147260425e-8,0.0042223122778394,2.033346797221274e-5,-6.438129961003437e-8,0.004222810379006872,2.051879431947242e-5,-6.47670814186124e-8,0.0042232340746766765,2.0764877854194254e-5,-6.528213506219293e-8,0.004223565395287756,2.1029006330211313e-5,-6.583665389689409e-8,0.004223804128873946,2.1260585340412296e-5,-6.632374566900979e-8,0.004223970876957566,2.1410361180324564e-5,-6.663887945834917e-8,0.004224106369310762,2.14415465441151e-5,-6.670356203916723e-8,0.0042242657983087495,2.134115638552841e-5,-6.648957977625455e-8,0.004224507399419219,2.112855412696634e-5,-6.603731852191216e-8,0.004224876159364572,2.085686994094544e-5,-6.545888489491197e-8,0.004225386732174476,2.0603067839644234e-5,-6.491709513429656e-8,0.004226013160943935,2.0446027498544085e-5,-6.457905743766462e-8,0.004226693128151923,2.043932475634994e-5,-6.45585312505897e-8,0.004227347974683707,2.059163946791718e-5,-6.487440472016235e-8,0.004227909703767054,2.086563813515611e-5,-6.544822544194953e-8,0.004228341362829596,2.1195202646072075e-5,-6.614053530613902e-8,0.004228642402086946,2.1510125092377255e-5,-6.680302045077538e-8,0.004228840647210552,2.1755805619472572e-5,-6.732012834688552e-8,0.004228978598476052,2.190213346099413e-5,-6.762786101905045e-8,0.0042291010496863166,2.194302357527711e-5,-6.771287814009528e-8,0.0042292470592518745,2.1891133200885374e-5,-6.760145956889963e-8,0.004229446049571827,2.1771621167792976e-5,-6.73464393792848e-8,0.004229716468222322,2.1616855272094037e-5,-6.701607817399818e-8,0.004230065522044785,2.146232151279719e-5,-6.668539495546459e-8,0.004230489183412082,2.134317016838142e-5,-6.642880367863476e-8,0.004230972374903851,2.12906866823376e-5,-6.631261090471438e-8,0.004231489771832401,2.132821216102119e-5,-6.638640134078987e-8,0.00423200798906628,2.1466603019303647e-5,-6.667347585959588e-8,0.004232489876042049,2.1700112891328544e-5,-6.716214332465655e-8,0.004232901078212662,2.2004253231900497e-5,-6.780110661848243e-8,0.0042332180115707534,2.233735468493118e-5,-6.850259405413669e-8,0.004233435294041164,2.264690582136456e-5,-6.915558955274176e-8,0.004233570081750011,2.288024682846949e-5,-6.964836523197342e-8,0.004233661175459219,2.299740945877807e-5,-6.989570010663392e-8,0.00423376212210765,2.298272324126421e-5,-6.986362270031153e-8,0.004233929261141872,2.2851697779811398e-5,-6.958422181245012e-8,0.004234207211841524,2.2650495622957343e-5,-6.915475814576002e-8,0.004234615425259081,2.2446809897144912e-5,-6.871849564593151e-8,0.004235140014210337,2.231313047848069e-5,-6.842929415254376e-8,0.004235734703969059,2.230620625541042e-5,-6.840801170460767e-8,0.004236332511029088,2.2449320169543877e-5,-6.870475534746973e-8,0.004236865352914913,2.2724777630289437e-5,-6.928273029224622e-8,0.004237284245080581,2.3080599212484498e-5,-7.003223837757029e-8,0.004237571736415137,2.3448608166368112E-05,-7.080893495957507e-8,0.004237742342841121,2.3765484141766943e-5,-7.147847424023432e-8,0.004237833085799702,2.3988137660734125e-5,-7.194917126202141e-8,0.004237890189882673,2.4099447950975766e-5,-7.218425790080511e-8,0.004237957595590428,2.4105773514283147e-5,-7.219670738284095e-8,0.004238069919582637,2.4030269658422523e-5,-7.203516533111505e-8,0.004238249618365501,2.39056679238968e-5,-7.176871236223504e-8,0.004238506777009503,2.376842054507791e-5,-7.14744782604305e-8,0.004238839960336995,2.3654485763485328e-5,-7.122870298290076e-8,0.004239237195182148,2.359612316887198e-5,-7.109993006965748e-8,0.00423967689584437,2.3618836515735366e-5,-7.114251881836275e-8,0.00424012919339875,2.3737839999153642e-5,-7.138914208350213e-8,0.004240558555859129,2.3954028829091893e-5,-7.184219988672258e-8,0.004240928632216016,2.425035359666654e-5,-7.246603747851151e-8,0.004241209686151803,2.4590515496345863e-5,-7.31840475098621e-8,0.004241387602314709,2.4922420371615704e-5,-7.388587732093796e-8,0.00424147157146284,2.5187961743731242e-5,-7.44481247159738e-8,0.004241496426214619,2.5338027012562994e-5,-7.476619148263978e-8,0.004241516665120159,2.53481927416961e-5,-7.478765248745461e-8,0.004241592614544567,2.5228750538790737e-5,-7.453362965654456e-8,0.004241773093309497,2.5024267468472517e-5,-7.409800415341168e-8,0.004242080828456248,2.480219962828495e-5,-7.362345063271682e-8,0.004242505642303187,2.463448176734963e-5,-7.326256531566072e-8,0.004243007230734643,2.4578174120876555e-5,-7.313688342900408e-8,0.004243526169055569,2.4660842178798045e-5,-7.330574786416262e-8,0.004243999680967984,2.4874463362710607e-5,-7.375310120416703e-8,0.0042443776570801894,2.5179193207145155e-5,-7.439515440950807e-8,0.004244634361830328,2.551555261019759e-5,-7.510602778954726e-8,0.0042447725833558445,2.5820973313206575e-5,-7.575282082432305e-8,0.004244819645713096,2.6045265557054406e-5,-7.622855268466984e-8,0.004244817657500771,2.6160427534331055e-5,-7.647316726976563e-8,0.004244812063322777,2.6162998914343238e-5,-7.647870316326475e-8,0.004244842201737484,2.6070232563465724e-5,-7.628128320228887e-8,0.004244935733735506,2.5913058455968382e-5,-7.594622609168704e-8,0.004245106822619801,2.572872050475992e-5,-7.555241538069889e-8,0.004245356804103788,2.5554802441117856e-5,-7.517960510152853e-8,0.004245675934005867,2.5425040582432493e-5,-7.48995353162313e-8,0.004246045266184226,2.53664067068817e-5,-7.47697603900719e-8,0.004246438382144604,2.5396616745149382e-5,-7.482836234073875e-8,0.004246823330043397,2.552139706651534e-5,-7.508808847131201e-8,0.004247165619004974,2.5731389115804212e-5,-7.55296442638736e-8,0.004247433275937945,2.5999499171301278e-5,-7.609589214748047e-8,0.0042476044631466715,2.6280705900143398e-5,-7.669131102787287e-8,0.004247676613223559,2.6517177808645175e-5,-7.719284879324458e-8,0.004247673609435171,2.6650746595202952e-5,-7.747651982304646e-8,0.004247645708001549,2.66412350943042e-5,-7.74564776254694e-8,0.004247658309913079,2.6483856580341366e-5,-7.712204781528955e-8,0.004247771456591539,2.6216061034290582e-5,-7.655226898516179e-8,0.004248018640476505,2.590800755606473e-5,-7.589568494417051e-8,0.004248395212570714,2.563994069145496e-5,-7.532244221725396e-8,0.004248861259489376,2.5477021622606432e-5,-7.497104067998361e-8,0.00424935590167607,2.5452038700586148e-5,-7.491170753332291e-8,0.004249815624233812,2.5560514080836893e-5,-7.513587325912593e-8,0.0042501900081495896,2.5766672608186727e-5,-7.556853344785969e-8,0.004250451383611506,2.6015861961209102e-5,-7.609427999654669e-8,0.0042505977356969114,2.6248914551540066e-5,-7.658758795271883e-8,0.0042506498090625795,2.6415031884901112e-5,-7.694017883491166e-8,0.004250644097952955,2.648096828203765e-5,-7.708071584908982e-8,0.0042506237812728765,2.6435303290169302e-5,-7.698415129034421e-8,0.004250629816343292,2.6287691938557887e-5,-7.667036324682085e-8,0.0042506940711203485,2.6064200669597658e-5,-7.619435383064163e-8,0.00425083548128867,2.5800616341765846e-5,-7.563201480582007e-8,0.004251059186062351,2.5535598231431913e-5,-7.506549954746807e-8,0.004251357853991461,2.5304981396812947e-5,-7.457106386619228e-8,0.004251714123475805,2.5137752884505912e-5,-7.421052674232194e-8,0.004252103288002902,2.5053445751813735e-5,-7.402578044122805e-8,0.0042524958808914486,2.5060282096586535e-5,-7.403485203242214e-8,0.004252860347046862,2.5153483119387155e-5,-7.422821487858902e-8,0.004253166420302202,2.5313592833064807e-5,-7.4565027741937e-8,0.004253390056795452,2.5505445065978426e-5,-7.497072826604751e-8,0.004253520373611728,2.567954717105097e-5,-7.533987563241299e-8,0.004253567583483577,2.5778553226866115e-5,-7.555000192971296e-8,0.004253568477479618,2.57508981459835e-5,-7.549083696491824e-8,0.004253583802551681,2.5570092233629636e-5,-7.51055603806773e-8,0.004253683035294351,2.5251865633977112e-5,-7.44273175308893e-8,0.0042539191944363595,2.4857202588394434e-5,-7.35855734003273e-8,0.004254305764216735,2.447438286380503e-5,-7.276784994537231e-8,0.004254809815918776,2.4186839495990022e-5,-7.215147164839955e-8,0.004255365549942023,2.40441206534225e-5,-7.184200794898621e-8,0.004255899200387112,2.4050089820884473e-5,-7.184826829956902e-8,0.0042563516080044266,2.416972185021108e-5,-7.209662433728606e-8,0.004256690396141003,2.434605252160264e-5,-7.246675786316027e-8,0.0042569115892744334,2.4517943449023026e-5,-7.282912443145628e-8,0.0042570344588616455,2.463347637775471e-5,-7.30732558512375e-8,0.0042570934805204125,2.465775417313392e-5,-7.312438614433928e-8,0.004257129932313604,2.4575925834567138e-5,-7.295011734563332e-8,0.0042571843494951115,2.4392667825468296e-5,-7.255962537821784e-8,0.00425729039774817,2.4129023933815476e-5,-7.199717208281165e-8,0.004257470606229811,2.3817370327804808e-5,-7.133146006679518e-8,0.004257734255741909,2.349544247400287e-5,-7.064283667735547e-8,0.004258077393204028,2.3200390137071024e-5,-7.001050679824002e-8,0.004258484618862725,2.2963666553012255e-5,-6.950158216921607e-8,0.004258932027056634,2.2807293789006354e-5,-6.916316297269846e-8,0.0042593906153518026,2.2741586385370254e-5,-6.901757022449099e-8,0.0042598297434363165,2.276399055898611e-5,-6.905989169541386e-8,0.004260220606168873,2.2858651267932304e-5,-6.925694232532747e-8,0.004260539991874552,2.2996585299082128e-5,-6.954740578872719e-8,0.004260774793749827,2.3136869567961894e-5,-6.984415171021355e-8,0.004260927452055153,2.3230106921002925e-5,-7.004155848425731e-8,0.004261021309681241,2.3226075701983406e-5,-7.003196358517582e-8,0.004261102938290243,2.308688722779646e-5,-6.9733984200722e-8,0.004261236712509181,2.2804045770392858e-5,-6.912910597515336e-8,0.004261487734137989,2.2412204909363093e-5,-6.829103484152083e-8,0.004261895857940792,2.1987951130290533e-5,-6.738297115674651e-8,0.004262453748847359,2.1626559517556065e-5,-6.660796308383029e-8,0.004263104835077354,2.14049565306401e-5,-6.613002381831203e-8,0.004263765230072934,2.1352073118542486e-5,-6.601108302348439e-8,0.004264356348996169,2.14434400684497e-5,-6.619951822339648e-8,0.00426482929740014,2.1618744627758198e-5,-6.656745990661841e-8,0.004265171943391067,2.1807560186110623e-5,-6.696539410340849e-8,0.004265402331610535,2.194966411597293e-5,-6.726522140368924e-8,0.004265556764276095,2.2005321336605362e-5,-6.738204521109695e-8,0.004265678484351986,2.1957407300082035e-5,-6.727876331639272e-8,0.004265809259589074,2.1808924150594526e-5,-6.696101507231523e-8,0.004265983904005325,2.1578682448027443e-5,-6.646826954849454e-8,0.004266226920993157,2.1296504146896058e-5,-6.586379168206377e-8,0.004266550629286272,2.0998265292050864e-5,-6.522408289024045e-8,0.004266954602654954,2.072086530767614e-5,-6.46280184319503e-8,0.0042674264408546,2.0497353315112702e-5,-6.414629674705478e-8,0.004267943861511287,2.0352576012947905e-5,-6.383209365453901e-8,0.004268477960877023,2.0299833661802612e-5,-6.371398436365584e-8,0.004268997253092252,2.0338959047789847e-5,-6.379193925228933e-8,0.004269472004022922,2.0455923406950072e-5,-6.403649435074647e-8,0.004269878504480831,2.0623872099556896e-5,-6.439082513227808e-8,0.004270203091943123,2.0805512560485156e-5,-6.477560803074754e-8,0.004270445852852126,2.0956944805511876e-5,-6.509700275244613e-8,0.004270623800199121,2.10334314266037e-5,-6.525895403540025e-8,0.004270772558072353,2.0997890319405713e-5,-6.518152289098647e-8,0.00427094441011345,2.083220432249813e-5,-6.482534637528951e-8,0.004271199798210908,2.05492416329248e-5,-6.421755267416815e-8,0.00427159041645784,2.0199863007888447e-5,-6.346677840095314e-8,0.004272137010630017,1.986641311092636e-5,-6.274914812415897e-8,0.004272812866192905,1.9637907019181664e-5,-6.225512618287865e-8,0.004273546661830289,1.957484111226967e-5,-6.211428300886088e-8,0.004274248084309201,1.9683554754882735e-5,-6.234052528862284e-8,0.004274842584556,1.9916585609271047e-5,-6.283284863669002e-8,0.004275294989396107,2.0196932839426866e-5,-6.34271221447608e-8,0.004275612111248886,2.044876157713103e-5,-6.396157774097112e-8,0.004275829854443942,2.0618302854561106e-5,-6.432132893338302e-8,0.004275996344867708,2.068048102350494e-5,-6.445246254988373e-8,0.004276158761153353,2.0635703336763096e-5,-6.435525871581819e-8,0.00427635575964747,2.050278681984088e-5,-6.406929194779216e-8,0.004276614264766545,2.03118344130943e-5,-6.365844604760266e-8,0.004276948681532183,2.0098462742130343e-5,-6.319870838452115e-8,0.00427736112987467,1.9899240304877655e-5,-6.276838480380487e-8,0.004277842211255956,1.974773290141609e-5,-6.243949971073313e-8,0.004278372391904025,1.967077619426468e-5,-6.226968673760751e-8,0.004278924276628769,1.9684968915617704e-5,-6.229464867897638e-8,0.00427946603046503,1.9793798937027695e-5,-6.252207128612635e-8,0.004279965907331355,1.9986115124125946e-5,-6.292842834492383e-8,0.004280397398965965,2.0236567080278434e-5,-6.345990398536185e-8,0.004280744247696593,2.0508303055502708e-5,-6.403801521126411e-8,0.004281004505802116,2.075787626038736e-5,-6.45698971255669e-8,0.004281192901995228,2.0941958152062637e-5,-6.496252518206134e-8,0.004281340930710332,2.1025255578912166e-5,-6.513969573609285e-8,0.004281494037741554,2.0988991621400003e-5,-6.506040387677097e-8,0.004281705020143845,2.083884172795236e-5,-6.473613988226346e-8,0.004282022932066112,2.0609966237029076e-5,-6.424190093837948e-8,0.004282478182800925,2.0365345667199266e-5,-6.371269223823294e-8,0.004283067616495902,2.018344302717714e-5,-6.331700549222439e-8,0.004283747241477742,2.0134651144824004e-5,-6.320619458649664e-8,0.0042844407554519515,2.0253973496551404e-5,-6.345578723847007e-8,0.004285064598384449,2.0524555265033713e-5,-6.403009214368057e-8,0.004285558228008341,2.0883667246896797e-5,-6.479498002189184e-8,0.004285903068305841,2.1248575485531713e-5,-6.557331881327865e-8,0.004286121591209917,2.1546759971092086e-5,-6.620971443688664e-8,0.004286261550244254,2.173512138139228e-5,-6.661161891835543e-8,0.004286377010822107,2.1803562222643158e-5,-6.675698118613891e-8,0.004286514639174886,2.1767962224157696e-5,-6.667927461907289e-8,0.004286707249844844,2.1659831340824737e-5,-6.644549978914754e-8,0.004286972651294204,2.1517288514130502e-5,-6.613702981233638e-8,0.004287315036407035,2.137879459328305e-5,-6.583625969488997e-8,0.004287726996196279,2.1279125575024203e-5,-6.561792724729806e-8,0.00428819142343141,2.1246497524740444e-5,-6.554282703858169e-8,0.004288683412819257,2.1300005175710134e-5,-6.56522121072733e-8,0.004289172646002349,2.144705325197606e-5,-6.596225331674356e-8,0.004289626831671317,2.1681083267848825e-5,-6.64591918001667e-8,0.004290016489747565,2.1980505883871905e-5,-6.709706780234995e-8,0.0042903207017423875,2.2309974166205005e-5,-6.780039689973465e-8,0.004290532704681695,2.2624802256956494e-5,-6.847351420232322e-8,0.004290663720481053,2.2878545281189634e-5,-6.901668815447957e-8,0.004290743428588021,2.3032647343331645e-5,-6.934675430215987e-8,0.004290816160740989,2.3066060527652307e-5,-6.941783186631997e-8,0.004290932973482719,2.298241860165485e-5,-6.923692897416443e-8,0.004291140720082246,2.281268438762679e-5,-6.886989001401675e-8,0.004291469988513568,2.261171092999127e-5,-6.843422945885471e-8,0.0042919245712092595,2.244789438370406e-5,-6.807700264279899e-8,0.004292475971297328,2.238658804783379e-5,-6.793912075922681e-8,0.004293066649609138,2.2470558774809148e-5,-6.811318501504072e-8,0.004293623937526895,2.2703998892035536e-5,-6.860890598586648e-8,0.0042940818493636184,2.304812006375384e-5,-6.934344898792616e-8,0.004294402362672422,2.3432831436448893e-5,-7.016645002765099e-8,0.004294586104386337,2.378055743966283e-5,-7.091121590795328e-8,0.004294667795317409,2.4030920659155234e-5,-7.144780929009046e-8,0.004294700566059802,2.4155324165777983e-5,-7.171440891510901e-8,0.004294738209100082,2.4157840931771394e-5,-7.171925710040148e-8,0.0042948226573763385,2.4066452881318333e-5,-7.152192906009953e-8,0.004294978812281802,2.3921337639631674e-5,-7.120830502904449e-8,0.004295214901080934,2.3765000948817973e-5,-7.08694876550506e-8,0.004295525436407369,2.363587044291823e-5,-7.058807624485363e-8,0.004295894601684546,2.3564786623837452E-05,-7.04305813207749e-8,0.004296299122201778,2.357308522950433e-5,-7.044321503200956e-8,0.004296710657229467,2.367115187319423e-5,-7.064870539544668e-8,0.004297098295590391,2.38568917503796e-5,-7.104295898373251e-8,0.004297431906932636,2.4114275885103977e-5,-7.159190498213205e-8,0.004297686870625992,2.4412901902798002e-5,-7.223050607165677e-8,0.004297849991681794,2.4710049162891303e-5,-7.286710575334312e-8,0.004297925302316519,2.4956591162591826e-5,-7.339606327152146e-8,0.004297937372396556,2.5107015043400802e-5,-7.371925088269417e-8,0.004297929510021779,2.5131737805527713e-5,-7.377254984435431e-8,0.004297955548234345,2.5027789983162344e-5,-7.354890403274291e-8,0.004298066575615005,2.4823310836198834e-5,-7.310812995376074e-8,0.004298296552607654,2.4573070322224938e-5,-7.256747872959403e-8,0.004298651648983001,2.434559188780995e-5,-7.207413756368472e-8,0.004299106911661393,2.4205518413300738e-5,-7.176741926718479e-8,0.004299611453430702,2.4196312655059432e-5,-7.174150839999789e-8,0.0043001009376553104,2.4328171010078167e-5,-7.201924724959771e-8,0.004300514215980978,2.45747458074727e-5,-7.254478183774332e-8,0.00430080955408668,2.4880164403869278e-5,-7.319841098782959e-8,0.00430097535914321,2.5174795560467062e-5,-7.383040760602065e-8,0.004301031639911904,2.5394822709818133e-5,-7.430318462394381e-8,0.004301021854896047,2.549876742515806e-5,-7.452698087324046e-8,0.004300998826632299,2.5475424898201563e-5,-7.447707677090092e-8,0.0043010105133326326,2.5341837209243172e-5,-7.418955573869462e-8,0.00430109035070397,2.513426620792213e-5,-7.374198268112992e-8,0.004301253742716078,2.48970164755011e-5,-7.32294267491531e-8,0.004301499427306543,2.467299592201586e-5,-7.274417707510015e-8,0.0043018132999952385,2.4497627550464064e-5,-7.236262240548909e-8,0.004302172657874503,2.4395814589290057e-5,-7.213867310051331e-8,0.004302549817683467,2.4380785913499932e-5,-7.210122313442096e-8,0.0043029149958991805,2.44536492446394e-5,-7.225313252007961e-8,0.004303238964457443,2.460296377691644e-5,-7.2570238773880585E-08,0.00430349625434463,2.4804348391217722e-5,-7.300042578258291e-8,0.0043036695281246816,2.50209511462533e-5,-7.34645445614565e-8,0.0043037550770795956,2.5206324498041653e-5,-7.386254745634518e-8,0.004303768148276709,2.5311391686062272e-5,-7.408849797523384e-8,0.004303745290754547,2.5296058710614142e-5,-7.405564302472968e-8,0.0043037402219377715,2.5143263129179642e-5,-7.372674513257676e-8,0.004303811401843918,2.486984655474745e-5,-7.31375476237472e-8,0.004304003924871586,2.452738717704159e-5,-7.239861410051003e-8,0.004304332998053507,2.4189634346796077e-5,-7.166837537127397e-8,0.004304777053220583,2.3930305794275484e-5,-7.110548942813876e-8,0.0043052839373079,2.380055815885997e-5,-7.082046368346776e-8,0.004305786979287081,2.381512406074437e-5,-7.084577599968396e-8,0.004306223908680077,2.3950918898359302e-5,-7.113265222969439e-8,0.0043065521824008435,2.4156359154944985e-5,-7.157081214482665e-8,0.00430675720105395,2.4366745878058644e-5,-7.202132826384251e-8,0.00430685272341944,2.452074994873828e-5,-7.235202054839195e-8,0.0043068746876313785,2.457397362237289e-5,-7.246674040986775e-8,0.004306870807432403,2.450692094765032e-5,-7.232274420159353e-8,0.0043068889333198876,2.4326274108967804e-5,-7.193368553734489e-8,0.004306967157178836,2.4060115372153373e-5,-7.135951482856131e-8,0.004307127792060001,2.3749312473508598e-5,-7.068800846487233e-8,0.004307375847549257,2.3437998378882705e-5,-7.001424126954424e-8,0.0043077011487614265,2.316559033074148e-5,-6.942331161839482e-8,0.004308082476774727,2.296156998550824e-5,-6.897901648309085e-8,0.004308492160407662,2.2843008936849732e-5,-6.871848008341235e-8,0.00430890014225028,2.2814028032551207e-5,-6.865098180169714e-8,0.004309277281921247,2.2866200020617407e-5,-6.875880227967708e-8,0.004309598220494261,2.2979234337591817e-5,-6.899862356038913e-8,0.004309844408536244,2.3121853538730567e-5,-6.930329429478826e-8,0.0043100078615668095,2.3253479651415424e-5,-6.95853524949172e-8,0.004310095640386761,2.3328083445441076e-5,-6.974529757037752e-8,0.0043101338257101485,2.3301787131791224e-5,-6.968807200575135e-8,0.004310168187241177,2.3144787924465443e-5,-6.934892854607553e-8,0.004310257826444425,2.285531683637069e-5,-6.872365125157918e-8,0.004310459684221365,2.2469228310805165e-5,-6.788925321183882e-8,0.0043108073193948325,2.2056750050369026e-5,-6.699692997284909e-8,0.004311294032439131,2.170255209789584e-5,-6.622910378436072e-8,0.004311871307369093,2.1476062378587954e-5,-6.573553756794064e-8,0.004312465198993063,2.1407057452158824e-5,-6.558081946270183e-8,0.004313001977162613,2.147859710794636e-5,-6.572910476913147e-8,0.00431343005920553,2.1637960989153616e-5,-6.606750631843108e-8,0.004313730316577628,2.181691089414023e-5,-6.644950764688654e-8,0.004313914738250244,2.1951418489715036e-5,-6.673726332891451e-8,0.004314017860593639,2.1995240270097538e-5,-6.6830778021755e-8,0.00431408563427076,2.1926188546349096e-5,-6.668152880876458e-8,0.004314164844430976,2.1746350005664837e-5,-6.62931915957548e-8,0.00431429466372932,2.1478088191753095e-5,-6.571331506627689e-8,0.004314501024681896,2.1157447735519515e-5,-6.501929657323107e-8,0.004314794068269408,2.0826407239506826e-5,-6.430170217264929e-8,0.004315168523400873,2.0525388218328684e-5,-6.364798919827755e-8,0.00431560642180513,2.0287173353931803e-5,-6.31292183912412e-8,0.0043160812455876356,2.0132909454777427e-5,-6.279132138753954e-8,0.004316562520177888,2.007033177327738e-5,-6.265126152698634e-8,0.00431702006617794,2.00938082788825e-5,-6.269717769742918e-8,0.004317427588706235,2.018551638500187e-5,-6.28909388180351e-8,0.004317765712734754,2.0317234227004703e-5,-6.317193328846631e-8,0.004318024775138963,2.0452628316515763e-5,-6.34618604024906e-8,0.00431820770093002,2.0550394730606987e-5,-6.367139110618334e-8,0.004318332893899484,2.0569188001987255e-5,-6.371081436092053e-8,0.004318436011644906,2.04754635624101e-5,-6.350712260775898e-8,0.0043185681789404615,2.0254385622796044e-5,-6.302778494565895e-8,0.004318787523787666,1.9921423273137004e-5,-6.230594134708772e-8,0.004319142414166795,1.9528518015015e-5,-6.145372829533996e-8,0.004319650180655444,1.9156534321257355e-5,-6.064588141621515e-8,0.004320282432594846,1.8890460254098007e-5,-6.006610839445816e-8,0.00432096924731175,1.8786257539194468e-5,-5.983551079099197e-8,0.004321623889974825,1.8848028753740572e-5,-5.99633110710282e-8,0.004322174856199251,1.9029232241916958e-5,-6.03494594472305e-8,0.004322587553187694,1.9254995930678356e-5,-6.083272565155132e-8,0.004322867520357473,1.9450265918529555e-5,-6.125132934634046e-8,0.004323049667978551,1.956007946768571e-5,-6.148655784160723e-8,0.004323182862961931,1.9557648041747735e-5,-6.148015369528662e-8,0.004323316556168647,1.9443050480583164e-5,-6.123159791433297e-8,0.004323491840940722,1.9237131005163212e-5,-6.0785188942898e-8,0.004323736659978244,1.8974013586600857e-5,-6.021415798447603e-8,0.00432406401637427,1.8693883726101143e-5,-5.960523413418266e-8,0.004324472264424686,1.8436553474490432e-5,-5.904470094336049e-8,0.004324946983099295,1.8236033860153257e-5,-5.860648003866715e-8,0.004325464084859797,1.811635649105119e-5,-5.8342897748555724e-8,0.004325993794135984,1.8088868183602328e-5,-5.8278740560323874e-8,0.004326505053826906,1.8151193617222837e-5,-5.84090469392405e-8,0.004326969827564337,1.8287871460248693e-5,-5.870057233852731e-8,0.004327366867667058,1.8472348280178974e-5,-5.909613070587311e-8,0.004327684784604043,1.8669955227489085e-5,-5.952094345795759e-8,0.004327924409123366,1.8841706401499647e-5,-5.989069354469142e-8,0.004328100446453682,1.8948978694444737e-5,-6.012153384588638e-8,0.004328242207755195,1.8959396499784854e-5,-6.014285604854431e-8,0.00432839251061342,1.8854306712077532e-5,-5.991366270790545e-8,0.004328602976287375,1.8637363771232864e-5,-5.9441399495521534e-8,0.004328923808193235,1.834172061702968e-5,-5.879768517306489e-8,0.0043293877420519525,1.803074398317214e-5,-5.8119858923673065e-8,0.004329992303019424,1.7786082973530267e-5,-5.7585025996974733e-8,0.0043306904239555155,1.768141014178147e-5,-5.735306902442807e-8,0.004331400140317573,1.7751344357086818e-5,-5.749928204325917e-8,0.00433203358321681,1.797402614272783e-5,-5.79766211094402e-8,0.004332530332663138,1.828016466901793e-5,-5.8635303908857e-8,0.004332875915402321,1.858298602165903e-5,-5.928765562337491e-8,0.00433309804217549,1.8810034258350935e-5,-5.977689798049865e-8,0.004333248483983109,1.8921204984793378e-5,-6.001607106531904e-8,0.00433338344031064,1.891050947589809e-5,-5.999178553599807e-8,0.004333550076056095,1.879802272931174e-5,-5.974688447449809e-8,0.00433378028617974,1.8619161178224815e-5,-5.935746777534596e-8,0.004334089547866698,1.841532739235039e-5,-5.891288378805079e-8,0.004334478361386218,1.8227051919153682e-5,-5.8500987248132956e-8,0.004334934676237755,1.8089192813388756e-5,-5.819765687811798e-8,0.004335436753461419,1.8027479513569926e-5,-5.805910095808496e-8,0.0043359564346629785,1.805604332199269e-5,-5.8116315662884676e-8,0.004336462854060841,1.8175905259323786e-5,-5.837173979925861e-8,0.0043369265589401195,1.8374650843245116e-5,-5.8798606028170783e-8,0.0043373237749320314,1.8627644789034814e-5,-5.9343665372251605e-8,0.004337640287689868,1.8900903887741546e-5,-5.993342885257249e-8,0.004337874393414731,1.915541028175581e-5,-6.0483416036833585E-08,0.004338038508031595,1.935252810257927e-5,-6.090974291052553e-8,0.004338159117798005,1.9460134108828392e-5,-6.114232980148806e-8,0.004338274774933433,1.9459013263327866e-5,-6.113884811203717e-8,0.004338431681466829,1.9348999136279857e-5,-6.089826911602292e-8,0.004338676165081497,1.9153806772625883e-5,-6.047161761109011e-8,0.004339043688685932,1.8922294391678095e-5,-5.996487910391701e-8,0.004339545635601907,1.872276095381814e-5,-5.952661815361361e-8,0.004340158161930944,1.8627380820978457e-5,-5.9314042383671195e-8,0.004340820587457169,1.8688023122385006e-5,-5.944030774359304e-8,0.0043414499059315215,1.8912570225124942e-5,-5.992294543545765e-8,0.004341969354982378,1.9256317958197064e-5,-6.066513104038634e-8,0.00434233727438235,1.963727956575248e-5,-6.148895689362684e-8,0.004342559700425284,1.9968375421524345e-5,-6.22053917653275e-8,0.004342681194553419,2.0187890581981525e-5,-6.268039485374884e-8,0.004342762928135588,2.0273446998614515e-5,-6.286515201466919e-8,0.004342861762115175,2.0238340874590014e-5,-6.278807051788223e-8,0.0043430181177510525,2.0118621313219873e-5,-6.25268278416331e-8,0.004343252686041884,1.9959504096147545e-5,-6.217910056180777e-8,0.004343568466291725,1.9805367104343365e-5,-6.184105171446118e-8,0.004343954731686096,1.9693836953182042e-5,-6.159455561595036e-8,0.004344390973704534,1.9652723436851773e-5,-6.150043408182522e-8,0.004344850331140559,1.969838524407601e-5,-6.159471002910778e-8,0.004345302792489047,1.9834740731576415e-5,-6.188629404236862e-8,0.004345718569954192,2.0052786388798823e-5,-6.235588467085406e-8,0.004346071890108299,2.0330942481172956e-5,-6.295676357140448e-8,0.004346345120939216,2.0636843362656404e-5,-6.361874562488397e-8,0.004346532649407227,2.0931092520010435e-5,-6.425633112670948e-8,0.004346643556812209,2.1172987348254808e-5,-6.478105282775598e-8,0.004346702139067369,2.1327622981692872e-5,-6.511679997367014e-8,0.004346745608778673,2.137326837845882e-5,-6.521581332631904e-8,0.004346818808370958,2.130755124320618e-5,-6.507223672428581e-8,0.004346966320702236,2.1150975510158874e-5,-6.472999399619078e-8,0.004347222824520035,2.0946473775532036e-5,-6.428207114555517e-8,0.004347603087958219,2.0753784072168932e-5,-6.385844812624413e-8,0.004348093942432825,2.0637814013072452e-5,-6.36007815326696e-8,0.004348651739160019,2.0651659508830847e-5,-6.36252925003523e-8,0.0043492091234758985,2.0818025289423062e-5,-6.398208836552688e-8,0.004349692649033529,2.1116545144798856e-5,-6.462735152225057e-8,0.004350046851532632,2.148558579412229e-5,-6.542717677117046e-8,0.004350254077818288,2.1841590704683874e-5,-6.619972247540033e-8,0.004350339218690546,2.2108334127427978e-5,-6.677897296497183e-8,0.0043503570289232605,2.2241363549602545e-5,-6.706795464383658e-8,0.004350370300956235,2.2236598604831392e-5,-6.705740408002692e-8,0.004350430646805905,2.2122994339245096e-5,-6.680980212150948e-8,0.004350568672542956,2.1947338186704e-5,-6.642641374111236e-8,0.004350793241612556,2.1759652050497017e-5,-6.601571687264844e-8,0.0043510958731244245,2.1603418432720286e-5,-6.567227801223937e-8,0.004351456464205779,2.1510811396030194e-5,-6.546638399293138e-8,0.004351848247956533,2.1501213936502228e-5,-6.544069492800358e-8,0.004352241536665431,2.1581184167779784e-5,-6.560999904068952e-8,0.00435260671995346,2.174478040527643e-5,-6.596178678053824e-8,0.004352917203110646,2.1974004373243897e-5,-6.645716600620018e-8,0.004353152776554337,2.2239771173006768e-5,-6.70329889115276e-8,0.0043533034557195595,2.250423557099356e-5,-6.760694213289382e-8,0.004353373159793762,2.2725320394767957e-5,-6.808739588456914e-8,0.004353381934028024,2.2863721397970617e-5,-6.838860655220757e-8,0.004353365144473504,2.2891593869259356e-5,-6.844958399294913e-8,0.004353368520464555,2.2800891768739177e-5,-6.825225963723115e-8,0.004353439178980252,2.2608536352457108e-5,-6.783284315230564e-8,0.004353614398994551,2.235592337679717e-5,-6.728093363331758e-8,0.004353911091254241,2.210179351953395e-5,-6.672420060605343e-8,0.004354319093981324,2.1909457854221882e-5,-6.63007028625976e-8,0.00435480070535855,2.183105798865961e-5,-6.612459579585697e-8,0.004355297564439238,2.1892701313526038e-5,-6.62535720399581e-8,0.004355744274261172,2.208486894760374e-5,-6.666768156040473e-8,0.004356085988373349,2.2362140804206785e-5,-6.72684784304803e-8,0.004356294790867451,2.265429960519879e-5,-6.790310472655907e-8,0.004356378446729466,2.2886711643210605e-5,-6.840875002736263e-8,0.004356377083974059,2.300287959510685e-5,-6.866191818023424e-8,0.004356348835649946,2.2979906602058662e-5,-6.861222380829316e-8,0.004356351070803769,2.283100298627068e-5,-6.828791603511024e-8,0.0043564253033482265,2.2596103437619816e-5,-6.777550831067574e-8,0.004356590438485916,2.232692894571213e-5,-6.71873398673657e-8,0.004356843977258533,2.207328036231141e-5,-6.663181407464889e-8,0.00435716773989199,2.1874255200302816e-5,-6.619429149558181e-8,0.0043575345277402245,2.17545974438534e-5,-6.592907552880914e-8,0.00435791364940389,2.1724473774609717e-5,-6.585880479157714e-8,0.004358274835255978,2.1780736857639492e-5,-6.597708420358102e-8,0.00435859102021611,2.190842428008057e-5,-6.625166759485598e-8,0.004358840788105637,2.2082124326210005e-5,-6.66273960160543e-8,0.004359011140673432,2.2267590761594875e-5,-6.702970759557112e-8,0.004359100770459174,2.2424521416654e-5,-6.737069654700543e-8,0.0043591232349589806,2.2511572931629804e-5,-6.756005138998922e-8,0.004359108521787183,2.2494178942973776e-5,-6.752211476792377e-8,0.004359100878157092,2.235434252364082e-5,-6.721725820444066e-8,0.004359151203790916,2.209952344550378e-5,-6.666129656422452e-8,0.004359304391648528,2.1766202486049173e-5,-6.59333189575158e-8,0.004359585156155929,2.141440124607869e-5,-6.516384241477555e-8,0.004359988028082468,2.1112991988769316e-5,-6.450292098818624e-8,0.004360476321122433,2.0920264451710092e-5,-6.407788779132097e-8,0.004360991139310915,2.0866833130000284e-5,-6.395608344448584e-8,0.0043614672632936585,2.094691373648151e-5,-6.412567446990825e-8,0.00436185047259702,2.1120373710730043e-5,-6.449986452881506e-8,0.004362111124733698,2.1324180464702604e-5,-6.4941620161576e-8,0.004362250570187353,2.1489435250093217e-5,-6.53007002748905e-8,0.004362299121386524,2.155913544719217e-5,-6.54524253343876e-8,0.004362306490900004,2.1501808725852057e-5,-6.532755100187959e-8,0.004362327761153033,2.131732881203479e-5,-6.492513324816661e-8,0.0043624093738372635,2.103373524474476e-5,-6.430576510522246e-8,0.0043625793884881775,2.0697054625575986e-5,-6.356950528095524e-8,0.004362844207020741,2.0358383999011046e-5,-6.282776240788013e-8,0.004363191208127825,2.006260880711081e-5,-6.217865603614356e-8,0.004363594835992581,1.984133466131531e-5,-6.169150041406605e-8,0.004364023394089613,1.971031936272081e-5,-6.140108548051583e-8,0.004364444713893855,1.9670147056786693e-5,-6.130906149278202e-8,0.004364830116595006,1.9708457183723877e-5,-6.13887614197793e-8,0.004365157008842049,1.9802456355045293e-5,-6.159066614971228e-8,0.0043654108447642925,1.9921222630134676e-5,-6.184741174273681e-8,0.004365587133171469,2.002805687530203e-5,-6.207888714985402e-8,0.004365693773882021,2.0083687956816993e-5,-6.219920719112305e-8,0.004365753261816067,2.0051413982690625e-5,-6.21279557727769e-8,0.004365803266929434,1.990492580654581e-5,-6.18073352015643e-8,0.004365893211815998,1.963812772857377e-5,-6.122369196067238e-8,0.00436607468587738,1.9273718051626967e-5,-6.042630561545666e-8,0.004366386030933518,1.8864892817626648e-5,-5.953112197574838e-8,0.004366836077417156,1.8485075349996475e-5,-5.869834534688314e-8,0.004367395636384049,1.8206114824510273e-5,-5.808489610024617e-8,0.0043680034475078715,1.807342018736887e-5,-5.779018629925774e-8,0.004368585429190273,1.8090183319349116e-5,-5.7821670584522674e-8,0.004369078205338029,1.8218018646954217e-5,-5.8096130493753056e-8,0.004369446485515545,1.8391914972714372e-5,-5.8472137246485704e-8,0.00436968898915749,1.854111673960781e-5,-5.879546235081837e-8,0.004369833869388169,1.8607666783746486e-5,-5.893945230499611e-8,0.004369927829734204,1.8558083076927652e-5,-5.883053071818364e-8,0.0043700232722843815,1.8387261432697222e-5,-5.845686139765173e-8,0.004370166642890487,1.8115771799109823e-5,-5.78626810222891e-8,0.004370389908592708,1.778250420799372e-5,-5.7132479090411445e-8,0.004370706190176643,1.7434832951346612e-5,-5.63696521066772e-8,0.004371109765100231,1.7118586178875612e-5,-5.5674571774707e-8,0.00437157972214823,1.6869939219546253e-5,-5.5126719806860253e-8,0.004372085769119738,1.671054970042191e-5,-5.477386649502183e-8,0.004372594495239376,1.6646123535862942e-5,-5.462880762363998e-8,0.004373074761423813,1.6667710334556395e-5,-5.467217352867607e-8,0.004373501568673639,1.675457816700928e-5,-5.485876153998176e-8,0.004373858478157565,1.687756120804058e-5,-5.5124896858937915e-8,0.004374139111879542,1.7002287531392034e-5,-5.5395470307775045e-8,0.0043743482958161295,1.7092346989803696e-5,-5.559079621301812e-8,0.004374503133939031,1.7112951246571128e-5,-5.5634563689226273e-8,0.004374633720251839,1.7035925052044434e-5,-5.546478116239983e-8,0.00437478225005965,1.6846665517467146e-5,-5.504911354774486e-8,0.0043749983953135655,1.6552475631203626e-5,-5.440324873724291e-8,0.004375328872488854,1.618927976830758e-5,-5.360566541222857e-8,0.0043758013925030695,1.5821068508656155e-5,-5.2796405543630164e-8,0.004376408267399701,1.552634116046679e-5,-5.214735730105396e-8,0.004377099954417064,1.5371900421595234E-05,-5.180488666204743e-8,0.004377797060914417,1.5385036173928835e-5,-5.182897065432117e-8,0.004378418187720637,1.5540645773084347e-5,-5.2165003016123936e-8,0.004378909008357041,1.5771884933839974e-5,-5.266706122898232e-8,0.0043792572209281865,1.599719360222389e-5,-5.315697219265368e-8,0.004379488986244382,1.6147744983164754e-5,-5.34842622002332e-8,0.004379653735493992,1.6183696763184442e-5,-5.356159676976171e-8,0.004379807029548539,1.6097454183882332e-5,-5.337188796430934e-8,0.004379997377027852,1.5908215829117925e-5,-5.2956489809098333e-8,0.004380258535441446,1.5652790384862128e-5,-5.239536296392365e-8,0.004380606499311609,1.5376010872551103e-5,-5.178635373794103e-8,0.00438103981704955,1.5122274389860483e-5,-5.122678455064238e-8,0.0043815422062817,1.4928716380928159e-5,-5.079841505994918e-8,0.0043820867949589636,1.4820349015323273e-5,-5.055656434916802e-8,0.004382641303252554,1.4807475268811135e-5,-5.052422039228374e-8,0.004383173380248949,1.4885420145896664e-5,-5.0691348370280644e-8,0.004383655356796422,1.5036302184118528e-5,-5.1018815625741976e-8,0.004384067847834171,1.5232293344004387e-5,-5.144564428159387e-8,0.0043844019828522774,1.543961315370945e-5,-5.1897827868784535e-8,0.004384660446837142,1.5622634657119858e-5,-5.229728990740927e-8,0.0043848576711448175,1.5747902572815793e-5,-5.257058563354719e-8,0.0043850193932531934,1.5788236658408824e-5,-5.2657827564574646e-8,0.0043851814481957125,1.572732220635757e-5,-5.252279948825495e-8,0.004385386970873339,1.5565072314536914e-5,-5.216487783723147e-8,0.004385680534183977,1.532309143986357e-5,-5.163119876709418e-8,0.004386097920633204,1.5047759637200314e-5,-5.102352030618483e-8,0.004386652021040343,1.4806503360449029e-5,-5.0490006751438264e-8,0.004387319473877426,1.4672634763753373e-5,-5.019184730718326e-8,0.004388037475553013,1.4699180145777687e-5,-5.024571194944651e-8,0.004388719358254085,1.4892581471994294e-5,-5.066597535539156e-8,0.004389286252243407,1.5203884862031068e-5,-5.1345376667470573e-8,0.00438969797548042,1.5546829342512437e-5,-5.209476228885879e-8,0.004389964650890107,1.583302129175502e-5,-5.272030351592314e-8,0.004390134913807563,1.6002864742013964e-5,-5.309129370757188e-8,0.004390272271287374,1.6037840528340582e-5,-5.3166940446750974e-8,0.004390434097429688,1.595511112825302e-5,-5.298445643173724e-8,0.004390660057645578,1.579392903294117e-5,-5.262936255347156e-8,0.004390969109008046,1.5602006407262715e-5,-5.220585215637865e-8,0.0043913615412258964,1.542537772061049e-5,-5.1814795817357e-8,0.004391823037389939,1.5302039558842245e-5,-5.153985439117854e-8,0.004392329121287766,1.5258332624760626e-5,-5.143939304550827e-8,0.004392849551497714,1.5307073316800725e-5,-5.1542117695367437e-8,0.004393352682154456,1.54470359086033e-5,-5.18457185429351e-8,0.00439380971458905,1.566375392426153e-5,-5.23185628529972e-8,0.004394198597306122,1.5931683059558592e-5,-5.2904527284831545e-8,0.004394507186734965,1.621768345692803e-5,-5.353077333402549e-8,0.004394735227108045,1.6485492657756142e-5,-5.411762647781867e-8,0.004394894902223298,1.6700626893534787e-5,-5.45892803278868e-8,0.004395009971871057,1.6835218512750443e-5,-5.48843068576531e-8,0.004395113603586854,1.687246367982367e-5,-5.496537371682426e-8,0.004395244949411491,1.6810475067017456e-5,-5.482779901120044e-8,0.0043954442427448425,1.6665347947444088e-5,-5.450649984627839e-8,0.004395745883391455,1.6472740140844224e-5,-5.407968384406357e-8,0.0043961693024316155,1.6286178870649144e-5,-5.366522773031633e-8,0.0043967088244268844,1.616943709032258e-5,-5.340384348847231e-8,0.00439732633496883,1.6180870696195093e-5,-5.342443633742838e-8,0.004397953375547895,1.635135413255929e-5,-5.379535836427356e-8,0.0043985084347460835,1.6664842817597192e-5,-5.448152340898046e-8,0.004398926535594353,1.7055762545965226e-5,-5.533868602056141e-8,0.004399186184162931,1.7430878674003617e-5,-5.616169045398201e-8,0.004399316502889809,1.7706012639717648e-5,-5.676535310620799e-8,0.004399380619391071,1.7836085828877507e-5,-5.7050496127308454e-8,0.0043994479138703985,1.782330059445976e-5,-5.70217692683362e-8,0.004399571685962228,1.7705329205192075e-5,-5.676158687960766e-8,0.004399779842592975,1.7535919356775476e-5,-5.6387604272475e-8,0.004400076250313624,1.736849329520766e-5,-5.601691660456328e-8,0.0044004470021380936,1.7246443601718784e-5,-5.574493496590799e-8,0.0044008672958289925,1.7199144884804796e-5,-5.5636639903815625e-8,0.004401307044890794,1.724130099925887e-5,-5.572497188992369e-8,0.00440173510197177,1.737368836590099e-5,-5.6012208288017816e-8,0.004402122691783258,1.7584415933249197e-5,-5.6472543144591716e-8,0.004402446537357039,1.785064042267672e-5,-5.705582151470724e-8,0.004402691816659508,1.8141037663291022e-5,-5.7693066337959046e-8,0.004402854735432183,1.841939830699297e-5,-5.8304506128850546e-8,0.0044029441466111215,1.86494319283523e-5,-5.88101859483882e-8,0.004402981550175842,1.8800342453498846e-5,-5.914217622460607e-8,0.004402999067764595,1.8852377164001726e-5,-5.925669183407802e-8,0.004403035359985339,1.8801411674438728e-5,-5.914416507577008e-8,0.0044031298139103415,1.866162281600663e-5,-5.883524829467042e-8,0.004403315601073636,1.8465518632622366e-5,-5.8401102927705954e-8,0.004403612303337892,1.8260820798133723e-5,-5.794674902359043e-8,0.00440401903455858,1.810360352195355e-5,-5.7596036212635465e-8,0.004404509752154576,1.8047165882872968e-5,-5.746702598309528e-8,0.004405033516436402,1.812725114889848e-5,-5.763917890945277e-8,0.004405522902615492,1.834684093381671e-5,-5.8119578846809494e-8,0.0044059119457882465,1.866727755270758e-5,-5.8823215461512124e-8,0.004406159440016461,1.9013925428711905e-5,-5.958550245976834e-8,0.004406266628248096,1.9299284542711648e-5,-6.021339687547807e-8,0.004406277737108989,1.945484969608813e-5,-6.055575571644973e-8,0.004406261496645234,1.9454837423611572e-5,-6.055559500071444e-8,0.004406284449775708,1.9319660877416878e-5,-6.025761062267969e-8,0.00440639062788073,1.910099176720538e-5,-5.977521664665257e-8,0.004406594829344743,1.886022453602534e-5,-5.924323335780905e-8,0.004406887078573716,1.8651292088100253e-5,-5.878025539400848e-8,0.004407241761031286,1.8511880264080445e-5,-5.846944211875105e-8,0.0044076263524043535,1.8461551898719056e-5,-5.835435137480919e-8,0.0044080076754981524,1.8503530268696664e-5,-5.8442683603324096e-8,0.00440835579500999,1.862755742929406e-5,-5.871235534719573e-8,0.004408646532290339,1.881262321625275e-5,-5.911736690258402e-8,0.004408863496128932,1.9029458207028737e-5,-5.959328119831901e-8,0.004409000066919958,1.924325840921723e-5,-6.006330961355848e-8,0.004409061253908856,1.9417302526743488e-5,-6.044637646552229e-8,0.004409064800155661,1.9517894893698925e-5,-6.066804549783033e-8,0.00440904055014602,1.9520391771617026e-5,-6.067376479634501e-8,0.004409027212339246,1.9415263477098266e-5,-6.044217579738232e-8,0.004409066265143777,1.9212538136596372e-5,-5.99949182565613e-8,0.004409193715141178,1.8942795303234154e-5,-5.939893403493536e-8,0.0044094314113227616,1.865344497733075e-5,-5.875845298339941e-8,0.004409780143242562,1.8400286623901103e-5,-5.8196555817766816e-8,0.004410216569539457,1.8235638567657733e-5,-5.782905216370578e-8,0.004410695422717016,1.8195238170461436e-5,-5.773546974239403e-8,0.004411157650944433,1.8286844900537162e-5,-5.7933659296607315e-8,0.004411543971861461,1.8484117436023682e-5,-5.836601541020027e-8,0.004411811395675748,1.8729348317482946e-5,-5.890535923731313e-8,0.004411947793992804,1.89470109132833e-5,-5.938486561457419e-8,0.0044119780011767805,1.906592214848751e-5,-5.964712702981143e-8,0.004411956808968038,1.9042277832868503e-5,-5.9595124411453214e-8,0.004411950401682743,1.8873156757466962e-5,-5.92220569871064e-8,0.004412014554899769,1.8594182067809693e-5,-5.8606156280090905e-8,0.004412179536671111,1.8263848967560027e-5,-5.7876134214088945e-8,0.0044124466739733125,1.7943581917926447e-5,-5.716729690606632e-8,0.004412794575472388,1.7682304086576782e-5,-5.6587619247160394e-8,0.004413189368832398,1.7509204078874898e-5,-5.6201810628385806e-8,0.004413594086340192,1.743345530047553e-5,-5.603059765879325e-8,0.004413975065031127,1.7447630029714103e-5,-5.605809066694707e-8,0.004414305472350097,1.7532025516451413e-5,-5.6241179923360305e-8,0.004414567041261399,1.7658503065552773e-5,-5.651793566777759e-8,0.004414751115520992,1.779363418722658e-5,-5.681456751260478e-8,0.004414859663338807,1.7901658854669397e-5,-5.7052019121006296e-8,0.0044149062993784445,1.794805755027884e-5,-5.7153915757579485e-8,0.004414916691840586,1.7904389601374315e-5,-5.7057269944060924e-8,0.004414927200000021,1.77543682378513e-5,-5.672588204884182e-8,0.0044149804922138025,1.750003314877578e-5,-5.616395099473292e-8,0.00441511759337999,1.7165714561544804e-5,-5.542484487782527e-8,0.004415367428776234,1.679696126662312e-5,-5.460881274387819e-8,0.0044157368984729635,1.64525946058128e-5,-5.3845568238601775e-8,0.0044162055472075626,1.6190716787134946e-5,-5.3263516737987664e-8,0.004416727899593218,1.6052589799655223e-5,-5.295419024084609e-8,0.0044172437234548155,1.6049869174066154e-5,-5.294395078197559e-8,0.004417693384688244,1.615974344870538e-5,-5.3183040430361466e-8,0.004418033663467096,1.6329784446188893e-5,-5.355607037861073e-8,0.004418249405605174,1.6491255741248804e-5,-5.391129234465096e-8,0.004418357633513688,1.657727659886784e-5,-5.41007360539825e-8,0.004418402673640693,1.6540796109409133e-5,-5.4020027084270734e-8,0.004418443391223361,1.636694373579072e-5,-5.3635805163711675e-8,0.004418536429934856,1.6075637077552477e-5,-5.2991599870440183e-8,0.004418721153570862,1.5713686813819345e-5,-5.219048380509432e-8,0.004419011327149181,1.5339827180016276e-5,-5.136208116526004e-8,0.004419395436149071,1.5008693642004086e-5,-5.062720950800594e-8,0.004419843763828487,1.475917925423041e-5,-5.0072119853676645e-8,0.004420318190940414,1.4609543041482485e-5,-4.973758066953034e-8,0.004420781006999231,1.455837640529271e-5,-4.9620879180614367e-8,0.004421200875707693,1.4588855571197866e-5,-4.9685116993361385e-8,0.004421555921818236,1.4673832615992423e-5,-4.9870423302738325e-8,0.004421834861138942,1.4780363310829798e-5,-5.0103979045361175e-8,0.004422037237442245,1.4873349197413976e-5,-5.030810679146616e-8,0.0044221735003303324,1.4918708687383351e-5,-5.0407314602882546e-8,0.004422265076734925,1.488684665139391e-5,-5.0335987892971714e-8,0.004422343894139628,1.4757129675741033e-5,-5.004829930915722e-8,0.004422450182798508,1.4523472760162985e-5,-4.953057889944237e-8,0.004422627129488367,1.4199935359410018e-5,-4.8813710361903955e-8,0.004422911606825086,1.382367526534905e-5,-4.7979688149729203e-8,0.004423322237828266,1.3451651182103001e-5,-4.715436315562399e-8,0.00442384901396835,1.3148639319550321e-5,-4.6480995689175956e-8,0.004424450465700748,1.2968277830758903e-5,-4.6078384882655163e-8,0.004425062411682258,1.2934115116972632e-5,-4.599895383332543e-8,0.004425616532075163,1.3029713949506274e-5,-4.620678002907812e-8,0.00442606125460747,1.3203026493029452e-5,-4.658713648167632e-8,0.004426376247492937,1.3382921571667098e-5,-4.698291956016331e-8,0.0044265757656095205,1.3500398155340669e-5,-4.7241493967355725e-8,0.0044267015746751685,1.3506656906523134e-5,-4.7254652877251136e-8,0.004426809564985756,1.3383317501207797e-5,-4.698127400556689e-8,0.004426954798878417,1.3143641854113754e-5,-4.645015416988944e-8,0.004427178862902963,1.282611238434304e-5,-4.574598280569655e-8,0.004427502065621027,1.248309395401886e-5,-4.498442593684408e-8,0.004427921557662274,1.2167909243147152e-5,-4.4283605507852286e-8,0.0044284149290582065,1.1923590626574095e-5,-4.373914849628887e-8,0.004428947492553156,1.1775726251332769e-5,-4.340818287378602e-8,0.0044294807498054785,1.1730276245194692e-5,-4.330431159108967e-8,0.00442997978210213,1.1775616157272551e-5,-4.3402016286169154e-8,0.004430418284203898,1.1887104697408922e-5,-4.3646763807176316e-8,0.004430781078167451,1.2032394059880673e-5,-4.396683813881441e-8,0.004431064723837474,1.2176260557030221e-5,-4.428411771350637e-8,0.0044312770935376515,1.228454666456542e-5,-4.452283720664672e-8,0.004431436570445023,1.2327479539015128e-5,-4.4616919616307796e-8,0.004431571073044788,1.2282959424570596e-5,-4.451723465126646e-8,0.004431716519505703,1.2140402085948442e-5,-4.420012359781004e-8,0.004431913708413011,1.190525144918933e-5,-4.367745401611296e-8,0.004432202271488714,1.1603137979985335e-5,-4.3005902031456583e-8,0.00443261096494701,1.128105558813796e-5,-4.228959825337529e-8,0.004433145658560025,1.1001798769206879e-5,-4.166779716993523e-8,0.004433779801368679,1.082900401217352e-5,-4.12817006687968e-8,0.004434454646972603,1.0805123199301839e-5,-4.122560821070611e-8,0.004435094025680583,1.093179184586048e-5,-4.1503363883340675e-8,0.004435629850168535,1.1164738583475233e-5,-4.20170322203088e-8,0.004436026030782993,1.1428372850655338e-5,-4.259921088755147e-8,0.004436288544140871,1.1642827137621819e-5,-4.30729574358741e-8,0.00443645852333741,1.1749408550127374e-5,-4.33081550485094e-8,0.004436594888881352,1.1724150687214207e-5,-4.3251474414460785e-8,0.004436755874140951,1.1577909422798677e-5,-4.292656969019233e-8,0.00443698556045168,1.134743368171151e-5,-4.241440383930332e-8,0.004437307141160754,1.1082923092713402e-5,-4.1825890935872864e-8,0.004437722000943753,1.0835997728485317e-5,-4.1275427325207346e-8,0.004438212894918262,1.0650076781292515e-5,-4.0859608303239765e-8,0.004438749638289341,1.055393982394728e-5,-4.0642808497137944e-8,0.004439295959152751,1.0558721353467244e-5,-4.065026502851615e-8,0.004439816265453436,1.065819146280534e-5,-4.0868482817672476e-8,0.004440281272009354,1.0831676496297347e-5,-4.1251640135869176e-8,0.004440671831938921,1.1048643543678123e-5,-4.173183848769729e-8,0.004440980777783971,1.1273898329578631e-5,-4.2230779881881195e-8,0.00444121303269828,1.1472474912977608e-5,-4.267071508775094e-8,0.004441384565236301,1.1613723431763203e-5,-4.298351149337096e-8,0.004441520716355006,1.1674659260946504e-5,-4.311801611635916e-8,0.004441654103827259,1.1642927188475744e-5,-4.304658575328331e-8,0.004441821893723169,1.151970903380154e-5,-4.277157863485106e-8,0.004442061733825511,1.1322569755221519e-5,-4.2331789891194374e-8,0.004442405367359218,1.1087324544257746e-5,-4.1806717475930976e-8,0.004442869542993695,1.0866655575333044e-5,-4.1313536007648224e-8,0.004443445735403163,1.0722317764963522e-5,-4.0989728756109695e-8,0.004444093284368835,1.0708865030730829e-5,-4.0956817567218523e-8,0.0044447430760904995,1.085167507562386e-5,-4.127142029165161e-8,0.004445316435740319,1.1129602124610225e-5,-4.1886642259513546e-8,0.004445754128237322,1.1475626607160576e-5,-4.2653546623268654e-8,0.004446040101964218,1.180003031512926e-5,-4.3372752883896014e-8,0.004446205530673317,1.2024629257590159e-5,-4.387057130415036e-8,0.004446312162708855,1.2108771182796773e-5,-4.405669777283164e-8,0.004446427135514646,1.2055740045207085e-5,-4.3938284164400834e-8,0.004446602819718554,1.1902415131929761e-5,-4.3596893302424874e-8,0.004446867462772274,1.1702280581489064e-5,-4.3150880569211476e-8,0.00444722502652385,1.1510013581017392e-5,-4.272141346034424e-8,0.004447660112373166,1.1371009258943887e-5,-4.240940734950581e-8,0.004448144592351008,1.1315808141326373e-5,-4.228315760058449e-8,0.00444864413440166,1.1358103698667109e-5,-4.237371725707588e-8,0.004449124029971733,1.1495141539025288e-5,-4.2675501313854964e-8,0.004449554153193063,1.1709878328814522e-5,-4.315087896932633e-8,0.004449912835517964,1.1974488478859295e-5,-4.373794004970734e-8,0.004450189440411732,1.2254789064169708e-5,-4.4360459045246395e-8,0.004450385488268202,1.2515133469631053e-5,-4.493894052335691e-8,0.004450514285615522,1.2723218588808307e-5,-4.540139076746559e-8,0.004450599251519201,1.285424788009527e-5,-4.569253626675187e-8,0.0044506713012207,1.2894201090678989e-5,-4.578100104332719e-8,0.004450765540459394,1.2842246866083047e-5,-4.5664633203186566e-8,0.004450917284953617,1.2712332911019386e-5,-4.537412450667041e-8,0.004451157155322636,1.2533780867555994e-5,-4.497450577626395e-8,0.004451504873237557,1.2350163721766086e-5,-4.45628020467471e-8,0.004451961919675364,1.2214876307893983e-5,-4.425820466465791e-8,0.004452504731610211,1.218142064773772e-5,-4.418032467973815e-8,0.004453082319776596,1.2287689702351628e-5,-4.441399178406356e-8,0.0044536237576869794,1.2537566429059222e-5,-4.496809227303929e-8,0.004454058600129623,1.2889221277017663e-5,-4.5749448011482285e-8,0.004454344557171657,1.3261764007055407e-5,-4.657774011379726e-8,0.004454487209756872,1.356321056345686e-5,-4.724799032523849e-8,0.004454537817108847,1.3726577222573843e-5,-4.761103975360433e-8,0.004454569953530231,1.3733042945322505e-5,-4.762500825386583e-8,0.0044546503114754445,1.3611019367534598e-5,-4.7353008192290663e-8,0.004454819540444871,1.3417353161617989e-5,-4.692121901981639e-8,0.004455088006355839,1.3214963151419203e-5,-4.6469264458608674e-8,0.0044554417320164475,1.3056798315819873e-5,-4.6114776888332594e-8,0.00445585181070049,1.2978205618864193e-5,-4.5936593073707565e-8,0.004456283063848414,1.2995515360089378e-5,-4.597157388372203e-8,0.004456700455403941,1.3107894323916252e-5,-4.621850553884396e-8,0.0044570734879752745,1.3300386432833933e-5,-4.664459015113946e-8,0.004457379329847273,1.354733210799182e-5,-4.719288460843296e-8,0.004457605083715164,1.381611653844664e-5,-4.779065425340231e-8,0.004457749208594007,1.4071308351959136e-5,-4.835873390854053e-8,0.004457821935847933,1.4279162754995978e-5,-4.882171487818592e-8,0.004457844413589892,1.4412244841220207e-5,-4.9118304592704225e-8,0.004457846392811299,1.4453606997495086e-5,-4.9210578647334747e-8,0.004457862579541846,1.4399892313824196e-5,-4.909080557286075e-8,0.004457928006711199,1.4262935015950712e-5,-4.878499921089497e-8,0.0044580728160356475,1.406956442522464e-5,-4.835259699152093e-8,0.004458316817654614,1.385936585539174e-5,-4.7881662798881046e-8,0.004458664213340158,1.3680097018682372e-5,-4.7478820736234354e-8,0.004459099197509258,1.3580228791160693e-5,-4.725262339870064e-8,0.004459584026033035,1.3598195514992196e-5,-4.728940689142557e-8,0.004460062199621417,1.3749252092781208e-5,-4.762371409222547e-8,0.0044604695823886415,1.4013664681784223e-5,-4.8211740969940616e-8,0.004460753777901616,1.4333327715772738e-5,-4.8923755358978294e-8,0.004460895857321044,1.4624178301927179e-5,-4.957195585635171e-8,0.00446092230560696,1.4804495669279922e-5,-4.997383459421404e-8,0.004460896977374359,1.4826692738442146e-5,-5.002318300311229e-8,0.004460895349738283,1.4694329378561483e-5,-4.972790533985917e-8,0.004460976016780967,1.4455254987504552e-5,-4.919452719357374e-8,0.0044611646111219405,1.4178234027314433e-5,-4.857603680579923e-8,0.004461454185855782,1.3928460573193122e-5,-4.801746458935442e-8,0.0044618157539403095,1.3752419469232318e-5,-4.7622364855750946e-8,0.0044622107137216325,1.3673354803297678e-5,-4.7442825841443116e-8,0.00446260043945746,1.369354382664959e-5,-4.7484455725649896e-8,0.004462952022908023,1.3799219006272274e-5,-4.7717131725367e-8,0.004463241121058138,1.3965553328710682e-5,-4.8085882901992276e-8,0.004463453324834858,1.4160873361938923e-5,-4.852016867099879e-8,0.0044635849469705675,1.435036495631774e-5,-4.894218569650978e-8,0.004463643417515637,1.4499782775240661e-5,-4.9275285274911396e-8,0.004463647051016639,1.4579493829923948e-5,-4.945312739285398e-8,0.004463623708041326,1.456882906403381e-5,-4.9429429021382195e-8,0.004463607842406662,1.4460176219189537e-5,-4.918704040982184e-8,0.0044636357910401445,1.4261818394534823e-5,-4.874420470914212e-8,0.0044637397511841466,1.3998495202235436e-5,-4.815581116683994e-8,0.004463941391235043,1.3708962880863763e-5,-4.7508063679370155e-8,0.004464246337336341,1.3440376771153735e-5,-4.6906117413019404e-8,0.0044646407956383674,1.3240001878015215e-5,-4.645569825673976e-8,0.004465091381001237,1.3145269848031426e-5,-4.624087973870854e-8,0.004465549066273715,1.3173598219246631e-5,-4.6301165592733985e-8,0.004465957939694511,1.3314136875100861e-5,-4.661280004540448e-8,0.004466268576327031,1.352468763662037e-5,-4.708169932958065e-8,0.00446645372428031,1.3737541360524216e-5,-4.7556478385599956e-8,0.004466520878302181,1.3876287526487771e-5,-4.786615773013864e-8,0.004466514326078782,1.3880445157377903e-5,-4.7875375783545784e-8,0.004466502142877897,1.3727918531229615e-5,-4.753461483998569e-8,0.004466552086217613,1.344312403337607e-5,-4.689826847344771e-8,0.0044667082651349286,1.3085819784721498e-5,-4.609959388131855e-8,0.004466980019477852,1.2727550786706039e-5,-4.529813388914731e-8,0.004467345755137234,1.2428783962732317e-5,-4.4628795806165725e-8,0.004467765779943532,1.2225982089979055e-5,-4.4173112494455235e-8,0.004468196005854024,1.2129693991677846e-5,-4.395498255353792e-8,0.004468597642816224,1.2129490543834448e-5,-4.395156917433471e-8,0.00446894206410521,1.2201011417455164e-5,-4.410885737385981e-8,0.00446921225500677,1.2312244640502023e-5,-4.43555394468987e-8,0.004469402654481283,1.2428213420078234e-5,-4.46134499502362e-8,0.0044695185950805304,1.2514503621319245e-5,-4.48055188286882e-8,0.004469575723049835,1.2540430548831996e-5,-4.486296672886854e-8,0.004469599148903078,1.2482479511679878e-5,-4.473308223481721e-8,0.004469621667375493,1.2328204497541601e-5,-4.4387945702341005e-8,0.004469680258111596,1.2080054076724377e-5,-4.38329250854799e-8,0.004469810440791369,1.1757832861630705e-5,-4.3112118745779403e-8,0.004470038938882233,1.139812552580378e-5,-4.2307071423256166e-8,0.004470376233823944,1.1049363336854192e-5,-4.1525836645826615e-8,0.004470811437085582,1.0762470256707936e-5,-4.088220096014905e-8,0.004471311827050345,1.057885493987764e-5,-4.046892914926202e-8,0.004471828174441778,1.0518954079644614e-5,-4.0332120643179816e-8,0.00447230517930829,1.057478045414597e-5,-4.045439322306815e-8,0.004472694773246646,1.0709058764895794e-5,-4.075274930775221e-8,0.004472969079340785,1.0862056909000877e-5,-4.1093716830421817e-8,0.004473129460972397,1.096542999972803e-5,-4.1324306385980915e-8,0.004473208349376754,1.0960344314636686e-5,-4.131265117419883e-8,0.004473261801176122,1.0814980769902441e-5,-4.098727821687716e-8,0.004473353611162491,1.0535090952922028e-5,-4.036078520359405e-8,0.004473535890618031,1.0162456216834655e-5,-3.952640941680167e-8,0.004473833792415958,9.760956408521302e-6,-3.862688960352953e-8,0.004474240602953426,9.396173414810474e-6,-3.7808898628385294e-8,0.004474724001444978,9.11738920258227e-6,-3.718281945206038e-8,0.004475238859403357,8.948272943174389e-6,-3.6801887768029544e-8,0.0044757402350894555,8.887048525787006e-6,-3.6662466891908055e-8,0.004476192324498001,8.912754115928486e-6,-3.6717928510436886e-8,0.004476572466872101,8.99328366656885e-6,-3.689655835364853e-8,0.004476871540255352,9.092325994737656e-6,-3.711706737226179e-8,0.0044770926280973825,9.174281950373387e-6,-3.7299643889725875e-8,0.004477249315061717,9.207572991317009e-6,-3.737343689531388e-8,0.0044773641629216165,9.167232096321902e-6,-3.7282422144220036e-8,0.004477467204936426,9.037578898248145e-6,-3.699141801660316e-8,0.004477593756950581,8.815347168589488e-6,-3.649307148880597e-8,0.00447778058690321,8.512872182307729e-6,-3.5814955514758316e-8,0.004478059745215661,8.159958224253264e-6,-3.502372164908136e-8,0.004478450365817333,7.802247766408065e-6,-3.4221459193305144e-8,0.004478950468601355,7.494062159631074e-6,-3.3529720730520204e-8,0.004479532465119492,7.285542176108168e-6,-3.3060801908352687e-8,0.004480146136971822,7.2072554470058906e-6,-3.288331103792207e-8,0.004480730224220354,7.258279349781589e-6,-3.2995444030558204e-8,0.004481229449583244,7.4035582392112385e-6,-3.331896233314279e-8,0.004481610689525678,7.582522644393277e-6,-3.371838931973838e-8,0.004481872292063173,7.725939025928392e-6,-3.403868938062639e-8,0.00448204374844317,7.774910697168804e-6,-3.414782399457034e-8,0.004482176671298304,7.696059172490782e-6,-3.397078855811176e-8,0.004482330435030019,7.4890430319435334e-6,-3.350650916046562e-8,0.004482556672721601,7.1850969128227755e-6,-3.282465246101726e-8,0.0044828866992572885,6.837522641746615e-6,-3.2044432737991846e-8,0.0044833250857910616,6.507056498926579e-6,-3.130192899832561e-8,0.004483850858172803,6.24650987263678e-6,-3.071570165203201e-8,0.004484425307959444,6.08924159396039e-6,-3.036088489326645e-8,0.004485003194359061,6.044356934728174e-6,-3.025827024763154e-8,0.004485543401858622,6.098712850233066e-6,-3.0378643182073185e-8,0.004486016219005494,6.2234233182378906e-6,-3.0657287324259747e-8,0.0044864064166258944,6.3817652026060565e-6,-3.1011736157922704e-8,0.004486712974298434,6.536100940869929e-6,-3.135738930785751e-8,0.004486946987567679,6.652794334948827e-6,-3.16186317416998e-8,0.0044871290855611435,6.705289352964788e-6,-3.173578594963119e-8,0.004487287039748156,6.676139966458214e-6,-3.1669660514816774e-8,0.004487453549021817,6.558809591876483e-6,-3.1405558068106883e-8,0.004487663626245549,6.359694715241642e-6,-3.095779699979666e-8,0.004487950667436226,6.100153211559874e-6,-3.0374268126452117e-8,0.004488340386805238,5.817319379742182e-6,-2.973828357636435e-8,0.004488842722498734,5.561454687988725e-6,-2.9162651978515495e-8,0.004489443758855133,5.387386078451001e-6,-2.87704753805209e-8,0.00449010207955269,5.339481305214199e-6,-2.866142686948672e-8,0.004490754688042762,5.434077367358827e-6,-2.887228736862537e-8,0.004491334130057058,5.647948607453723e-6,-2.9351019643881805e-8,0.004491791249757919,5.921297869142392e-6,-2.99634549511861e-8,0.004492112629279643,6.17644552752166e-6,-3.0535254824106297e-8,0.00449232388491216,6.343735825162951e-6,-3.0910079891972617e-8,0.004492478423788278,6.3824291151391336e-6,-3.0996454297399085e-8,0.0044926387333911215,6.288994539844147e-6,-3.078631234061721e-8,0.004492858636300761,6.092913739653983e-6,-3.0345562453837724e-8,0.004493171588724417,5.844789364045817e-6,-2.9787493231587065e-8,0.00449358619792652,5.60206433789655e-6,-2.9240893731404095e-8,0.004494087869175982,5.4161245069199806e-6,-2.882123891207294e-8,0.004494644740160421,5.322864554289205e-6,-2.8609503663609465e-8,0.004495216006784931,5.337654872160231e-6,-2.864069875751362e-8,0.004495760772876803,5.45491845871229e-6,-2.8902689986086383e-8,0.00449624562807949,5.6517357057193595e-6,-2.9344127629553888e-8,0.004496649625176552,5.894052353282223e-6,-2.988837234120634e-8,0.004496966197981279,6.14368973988668e-6,-3.044936038422412e-8,0.004497202413708704,6.364618307242032e-6,-3.094585642668188e-8,0.004497376491928267,6.527582409948589e-6,-3.131194447327545e-8,0.004497514640436966,6.6129278100694005e-6,-3.150337999113445e-8,0.004497647925917268,6.612117621637158e-6,-3.150093270015358e-8,0.004497809336845073,6.528610724443239e-6,-3.131231070153016e-8,0.004498030707089667,6.3785361876222695e-6,-3.09736925859592e-8,0.004498338829174895,6.191080665260008e-6,-3.055066942661581e-8,0.004498750077775436,6.0076683654676744e-6,-3.013646953689903e-8,0.004499263612814337,5.8780642609847445e-6,-2.9843203850422515e-8,0.004499854940636369,5.851244450515609e-6,-2.9781269629881294E-08,0.004500473936466841,5.960397636023314e-6,-3.002551100540538e-8,0.004501052719345036,6.205775394502228e-6,-3.057655086561226e-8,0.00450152565398311,6.544818406940442e-6,-3.133855594471292e-8,0.004501855052718436,6.89991925988118e-6,-3.213677936923044e-8,0.004502048299394567,7.184984577129539e-6,-3.277745584916125e-8,0.00450215485481849,7.337928245096862e-6,-3.312096524996092e-8,0.004502244939964075,7.34104622514252e-6,-3.31275673941889e-8,0.0045023832883471036,7.220589179745083e-6,-3.285626158580508e-8,0.0045026110823796145,7.030850470500054e-6,-3.2428926008768215e-8,0.0045029404092560505,6.834169236371335e-6,-3.198546698313869e-8,0.004503358106314494,6.685082210089396e-6,-3.1648403907449894e-8,0.004503833931529304,6.621199922123047e-6,-3.150250475699595e-8,0.004504329393182454,6.659916022098113e-6,-3.158735035096041e-8,0.004504805490228415,6.79906815339101e-6,-3.18986098972113e-8,0.0045052288712172945,7.020052500014815e-6,-3.239479081077634e-8,0.004505576291020284,7.292536290791366e-6,-3.300768877577651e-8,0.004505837190189702,7.580099251624076e-6,-3.3655110613896705e-8,0.0045060143045280365,7.846042790020471e-6,-3.42541110553583e-8,0.004506122446663604,8.058625318459529e-6,-3.473295260761845e-8,0.0045061858442556986,8.195104654863028e-6,-3.504028264202122e-8,0.004506234642510104,8.244233774000591e-6,-3.515070923594395e-8,0.004506301185498216,8.20730170658394e-6,-3.506705303538336e-8,0.004506416396345633,8.098093426558627e-6,-3.482021907021817e-8,0.004506606235169193,7.94206498498607e-6,-3.446740371929097e-8,0.004506887964378976,7.774744655900673e-6,-3.4088620681013444e-8,0.004507265898608951,7.63883680811971e-6,-3.378026681707891e-8,0.004507726866888514,7.578827637892328e-6,-3.364294154809401e-8,0.0045082369085281135,7.631796357853752e-6,-3.376059550196789e-8,0.0045087423408103665,7.81442404265071e-6,-3.4171064362557586e-8,0.004509179270358261,8.109527450340536e-6,-3.48355963905556e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json new file mode 100644 index 0000000000..78aa7c424b --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":26000,"numberOfSamples":1000,"samples":[0.004509493310776733,8.460255546355793e-6,-3.5625800851343465e-8,0.004509663584584268,8.78152154032578e-6,-3.634960149730122e-8,0.004509716789810693,8.989819707723907e-6,-3.681866430913203e-8,0.004509719059465651,9.037418772725032e-6,-3.692552117143939e-8,0.004509748243703133,8.930185223519827e-6,-3.668355434778159e-8,0.004509863647122957,8.719470842231082e-6,-3.620846132642241e-8,0.004510089653785742,8.476972036399517e-6,-3.5661533171045015e-8,0.004510416800722429,8.269299770251092e-6,-3.51925282944491e-8,0.004510813094911667,8.1427235238956e-6,-3.4905561743649874e-8,0.004511237012805131,8.118815983827459e-6,-3.4849442039030304e-8,0.004511647598100416,8.19695215375018e-6,-3.5023237901990346e-8,0.004512010754110658,8.359585736620415e-6,-3.538793530902102e-8,0.004512302608721269,8.577895407180773e-6,-3.5878908014654e-8,0.004512511101780664,8.817020399356672e-6,-3.6417590410461715e-8,0.004512636407156604,9.040913865577355e-6,-3.692247406897225e-8,0.004512690307657771,9.216869444768706e-6,-3.7319489010541575e-8,0.004512694498577715,9.319590010896785e-6,-3.755134208751638e-8,0.004512677812454461,9.33448051439994e-6,-3.758499305360356e-8,0.004512672525088187,9.259714461186162e-6,-3.74162487552752e-8,0.004512710155956202,9.106773676260358e-6,-3.7070886445067697e-8,0.004512817232229619,8.899452134994748e-6,-3.660239062283695e-8,0.004513011361703757,8.671416905011533e-6,-3.6086549932726506e-8,0.0045132978459024205,8.462410007400726e-6,-3.561303803422552e-8,0.00451366700674806,8.313087368408677e-6,-3.5273853268424084e-8,0.004514092641922462,8.258223307030978e-6,-3.5147920393724736e-8,0.004514532771288454,8.318077690988317e-6,-3.5281410931936163e-8,0.004514934630932754,8.4888481118899e-6,-3.566597134940736e-8,0.004515245854344678,8.735374126556136e-6,-3.622214330179837e-8,0.0045154316998782295,8.991891199064452e-6,-3.6801147360575755e-8,0.004515492902915043,9.176856590224277e-6,-3.7218586920753816e-8,0.004515473030595792,9.22132948769478e-6,-3.731873347690093e-8,0.004515445973338222,9.09843419372188e-6,-3.704104339955742e-8,0.00451548682469044,8.835578371895206e-6,-3.644751863773576e-8,0.00451564268107663,8.500985857177386e-6,-3.5692080359945736e-8,0.0045159197183348996,8.174205711565663e-6,-3.495399269113799e-8,0.004516289609363855,7.91891452501725e-6,-3.437668106843999e-8,0.004516706111846334,7.769533914623208e-6,-3.403776290168179e-8,0.004517121078763411,7.73134067417984e-6,-3.3949388348932536e-8,0.0045174946878258695,7.787734155315276e-6,-3.4074540770568025e-8,0.004517799867137044,7.908923469211388e-6,-3.434642142253354e-8,0.004518023021591153,8.059160327422076e-6,-3.468456742654183e-8,0.004518163140214663,8.202005982025426e-6,-3.50066650311153e-8,0.004518230411948181,8.30424890030949e-6,-3.523747823122548e-8,0.004518244570725208,8.33915192550796e-6,-3.531634932075353e-8,0.004518232782286238,8.28935594403696e-6,-3.5203891163581475e-8,0.004518226774465987,8.149365170645358e-6,-3.488762043767852e-8,0.004518259006711036,7.927116613346235e-6,-3.438542274392408e-8,0.004518358060544222,7.643963370228097e-6,-3.3745425584923236e-8,0.004518543856405558,7.332621283429884e-6,-3.3041356370972954e-8,0.004518823498710852,7.0329632269025115e-6,-3.236314547040654e-8,0.004519188579967757,6.785903929501321e-6,-3.180325247605029e-8,0.004519614661144808,6.626048418181081e-6,-3.14401232958339e-8,0.0045200634304379044,6.5740276672578925e-6,-3.132079397132222e-8,0.004520487966458727,6.62956304606739e-6,-3.144502131997278e-8,0.00452084147546764,6.766843341505083e-6,-3.175463526314589e-8,0.004521089187148414,6.934764185105069e-6,-3.2134004538126606e-8,0.004521221269959029,7.065025688552307e-6,-3.2428442843453624e-8,0.004521261859102045,7.089574850293132e-6,-3.248384715700535e-8,0.0045212674299407694,6.964089990219654e-6,-3.2199939344201606e-8,0.004521310513078177,6.687544084459722e-6,-3.1574464342686096e-8,0.004521453447203763,6.305670157088708e-6,-3.071085821791362e-8,0.0045217253573987225,5.893958647960642e-6,-2.9779688167653515e-8,0.004522114733755025,5.529133856038296e-6,-2.8954214723599135e-8,0.004522579377927455,5.264744210794258e-6,-2.8355366465152043e-8,0.004523065009217748,5.120982847527676e-6,-2.802885167464862e-8,0.004523521972907846,5.088150002782038e-6,-2.7952986672350293e-8,0.004523914736487703,5.136932989628306e-6,-2.8061821235107004e-8,0.004524224518460753,5.229079919518181e-6,-2.8269112293518485e-8,0.004524447866784532,5.325356167857952e-6,-2.8486202260608446e-8,0.004524593830297251,5.390497834119252e-6,-2.8633216627973057e-8,0.004524681160259874,5.396171432205578e-6,-2.864585654482284e-8,0.004524735849207278,5.323027317101781e-6,-2.8480176026552257e-8,0.0045247886943237964,5.16249823096028e-6,-2.8116730602371682e-8,0.004524872353940403,4.918444281738836e-6,-2.7564280225240977e-8,0.0045250174349796965,4.608134848323794e-6,-2.68619228883987e-8,0.004525247591606092,4.261615509273891e-6,-2.6077583364155316e-8,0.004525574321292053,3.918549452938378e-6,-2.530086898948843e-8,0.00452599277311532,3.622150479587777e-6,-2.462943302074595e-8,0.0045264801545203655,3.4107258886289212e-6,-2.4149954956603862e-8,0.004526998018263306,3.308450392319929e-6,-2.3917312554474847e-8,0.004527498775693957,3.317760005942039e-6,-2.3937301228621522e-8,0.00452793558120547,3.415707219466181e-6,-2.415823276235786e-8,0.00452827373820132,3.555942963102195e-6,-2.4475281614218993e-8,0.004528501076735233,3.677053577969154e-6,-2.4749321189987848e-8,0.004528634255226658,3.7166708540264696e-6,-2.4838951555615288e-8,0.00452871788049019,3.6288209284880697e-6,-2.4639908971730102e-8,0.004528814461392247,3.399578871249497e-6,-2.4120586107355082e-8,0.004528986348915549,3.0544546974012395e-6,-2.3338735228699577e-8,0.004529275447593868,2.652362755159554e-6,-2.2427751850493508e-8,0.0045296894826229355,2.266809562799965e-6,-2.1554061940523532e-8,0.004530201357681512,1.962172998408435e-6,-2.0863453384503786e-8,0.004530761107800889,1.7757792179593227e-6,-2.044053421769499e-8,0.004531313427122603,1.7122786235617054e-6,-2.0295983770420518e-8,0.0045318125655776954,1.749367675975404e-6,-2.037944352447753e-8,0.004532230187937357,1.8490802478591477e-6,-2.0605011670815894e-8,0.00453255650096998,1.968861091375431e-6,-2.08762767548505e-8,0.004532797413529103,2.069429992863889e-6,-2.1104137100273155e-8,0.004532970455627508,2.1191957801873115e-6,-2.121685754164669e-8,0.004533101006844266,2.0963386322046738e-6,-2.1164869031366592e-8,0.004533219236241922,1.9898190337828303e-6,-2.09231193072752e-8,0.004533357423629913,1.8001513809640854e-6,-2.0492836790277707e-8,0.004533546992225019,1.540165048997408e-6,-1.9903207651827864e-8,0.004533814625910253,1.2352637227640804e-6,-1.9211889086172134e-8,0.0045341773121543635,9.220902568912064e-7,-1.8501932634248034e-8,0.004534637007950439,6.443360771918933e-7,-1.7872295458798828e-8,0.004535176664792075,4.4499167138597644e-7,-1.7420339103780497e-8,0.004535760035304328,3.557925328380303e-7,-1.7217978115692215e-8,0.004536337215533742,3.866412902473646e-7,-1.728772350881937e-8,0.004536855876733859,5.191842687487436e-7,-1.7588072274695526e-8,0.004537275385870752,7.081369882607212e-7,-1.8016430469229954e-8,0.004537579125593926,8.912435030713721e-7,-1.8431639886474907e-8,0.004537780530744449,1.005317578228007e-6,-1.8690357071296403e-8,0.004537920538034231,1.0034699039837472e-6,-1.868616129977461e-8,0.0045380570398233745,8.682810605385142e-7,-1.837946472292758e-8,0.004538249294644987,6.169983072998986e-7,-1.780931248930263e-8,0.004538541670781989,2.970358272201004e-7,-1.708319176747392e-8,0.004538951579800054,-2.7231731686069303e-8,-1.634711520277816e-8,0.004539465565272268,-2.9245638234442717e-7,-1.5744867236873657e-8,0.004540044817016876,-4.530987714794202e-7,-1.537993968878856e-8,0.004540637691521912,-4.913904592554641e-7,-1.5292863661002783e-8,0.0045411941681401885,-4.179588426089708e-7,-1.545968048557915e-8,0.0045416771529875445,-2.646725790176748e-7,-1.580808820140591e-8,0.004542067915028178,-7.389589463817978e-8,-1.624181308946475e-8,0.004542365941693601,1.1161571806108388e-7,-1.6663601282918254e-8,0.004542585366851695,2.557719936323004e-7,-1.6991327574329404e-8,0.004542750301596352,3.328556897280507e-7,-1.7166487509062615e-8,0.004542890539772055,3.288339048433999e-7,-1.7157205799619142e-8,0.004543038110357333,2.4148307307612337e-7,-1.6958505979006495e-8,0.00454322442352209,8.020747945813414e-8,-1.659185787564851e-8,0.004543477357567356,-1.341554185295706e-7,-1.6104693284517906e-8,0.0045438176089469635,-3.6995599015852086e-7,-1.5568968349127696e-8,0.004544254057927853,-5.868612278189073e-7,-1.507632289085078e-8,0.004544778812882803,-7.409000787411416e-7,-1.4726631776247386e-8,0.0045453638821404034,-7.933529756111925e-7,-1.4607830316871693e-8,0.004545962512626217,-7.226259496806341e-7,-1.4768947865738407e-8,0.004546517831531095,-5.353354038386974e-7,-1.5194914668309396e-8,0.004546978401910495,-2.705801777601392e-7,-1.5796839796783648e-8,0.004547315606031961,7.426064280520287e-9,-1.6428760347708144e-8,0.00454753489003374,2.2771495362971647e-7,-1.6929398929145512e-8,0.004547674975302893,3.348200634734904e-7,-1.7172762210130373e-8,0.004547795269270398,3.0546407671952013e-7,-1.7106022758788838e-8,0.004547957342816333,1.5361082419481356e-7,-1.6760923023671023e-8,0.004548207818776337,-7.620926519655014e-8,-1.623857269178295e-8,0.004548567688113334,-3.2310178950335675e-7,-1.5677235728358874e-8,0.004549029689400049,-5.261904517049809e-7,-1.5215224434557068e-8,0.004549562879332015,-6.387181991297879e-7,-1.4958938590346338e-8,0.004550122119909111,-6.369676213818445e-7,-1.4962560924246113e-8,0.004550659547407562,-5.227487180281773e-7,-1.522226203843342e-8,0.00455113503524916,-3.198295674394947e-7,-1.568415057741117e-8,0.004551523306381531,-6.614611648123595e-8,-1.6261898726347644e-8,0.004551816641272785,1.9551328796095916e-7,-1.685796274830549e-8,0.004552023601182218,4.2580724108011224e-7,-1.7382583753550408e-8,0.004552165189758773,5.945892816202448e-7,-1.7766991018379748e-8,0.004552270093790798,6.837932410099917e-7,-1.7970026091410244e-8,0.004552370226282839,6.880617875256065e-7,-1.797954851084639e-8,0.004552497089156715,6.141061808103928e-7,-1.781091130786019e-8,0.004552678823971549,4.796156243032983e-7,-1.7504429067141582e-8,0.004552937441607541,3.1202357072442164e-7,-1.7122570952647516e-8,0.004553285657210565,1.4683488458868566e-7,-1.6746191281231358e-8,0.004553723072438308,2.461230159602889e-8,-1.6467701649164962e-8,0.004554232297584862,-1.4673606685835707e-8,-1.6378198838017022e-8,0.004554776931368462,5.916408340345163e-8,-1.654648595704409e-8,0.004555304544316013,2.5471410996338887e-7,-1.699210890005788e-8,0.004555757580182239,5.487508779098537e-7,-1.766206390844868e-8,0.00455609163018589,8.847980560550384e-7,-1.8427567403072217e-8,0.004556294266149341,1.1862585904106192e-6,-1.9114066338961307e-8,0.00455639356224145,1.3819276275300728e-6,-1.955944643880223e-8,0.004556449423840962,1.4320994076717743e-6,-1.967347844662727e-8,0.00455653146260646,1.3415196289400694e-6,-1.9467164239301853e-8,0.004556695250636879,1.1538974614742377e-6,-1.9040064669564954e-8,0.00455696762660136,9.337292242152009e-7,-1.8538868697838413e-8,0.004557344253094815,7.457228920368247e-7,-1.8110674855141883e-8,0.004557796262614695,6.393184058846508e-7,-1.7867944352973605e-8,0.004558280964655819,6.408021303045762e-7,-1.7870661006435703e-8,0.004558752717751708,7.521507776956689e-7,-1.812364701480733e-8,0.004559171865542613,9.545520907436515e-7,-1.8584396920373626e-8,0.004559510918417762,1.214685417394258e-6,-1.9177186559210626e-8,0.0045597577345257365,1.492268065989241e-6,-1.9810175736451022e-8,0.004559915758252532,1.747525782261627e-6,-2.0392490975707653e-8,0.004560001790681829,1.947399946982737e-6,-2.084852456530275e-8,0.004560042130719432,2.069755428846989e-6,-2.112766147211479e-8,0.004560068031127442,2.105379942421046e-6,-2.1208875035905857e-8,0.004560111313149676,2.0580137470542224e-6,-2.110073390215724e-8,0.004560200668904181,1.943025512553438e-6,-2.083829693588606e-8,0.004560358702285993,1.785412603296129e-6,-2.0478523102675264e-8,0.004560599413535639,1.6174458646150957e-6,-2.009495393525646e-8,0.004560925771429382,1.4758038902445344e-6,-1.977126696599221e-8,0.004561327227637577,1.3976103681723366e-6,-1.9592281027131787e-8,0.004561777687863393,1.414475222692563e-6,-1.963031184849548e-8,0.004562235579990404,1.5439760444566057e-6,-1.9925614673578647e-8,0.004562648675447503,1.7796412722016043e-6,-2.046341689014831e-8,0.004562966076598825,2.0834817290894464e-6,-2.1156859279096877e-8,0.004563156563769151,2.3880171788488707e-6,-2.1851733662215338e-8,0.004563226026995868,2.6134961406077906e-6,-2.236596297709388e-8,0.004563222002259049,2.697182257226839e-6,-2.255654425324677e-8,0.004563218140920344,2.6200473503104345e-6,-2.2380369070183947e-8,0.004563285177328307,2.4142697533356353e-6,-2.1911080480621846e-8,0.00456346510562536,2.1474700508499156e-6,-2.1302898831592876e-8,0.0045637614855055355,1.8952029862123072e-6,-2.0727876983910757e-8,0.004564146109374209,1.717390042126911e-6,-2.0322347502066937e-8,0.004564573586655692,1.6467160412382832e-6,-2.0160696512706902e-8,0.004564995621143562,1.6879982482464885e-6,-2.025403919365333e-8,0.004565371098880404,1.823849272809698e-6,-2.0563061761098215e-8,0.004565671575998424,2.0224636955771143e-6,-2.1015577494141815e-8,0.004565883304822525,2.2451570701558744e-6,-2.1523520714831093e-8,0.004566007062175339,2.4528861969496664e-6,-2.1997743592595424e-8,0.004566056469157245,2.6116666971517507e-6,-2.23604574329312e-8,0.004566055109573586,2.6967378051573467e-6,-2.2554903643749895e-8,0.004566032787591015,2.6952576374760298e-6,-2.2551638035756678e-8,0.004566021340058094,2.6074130943391173e-6,-2.2351082445335482e-8,0.004566050456020915,2.445916611802514e-6,-2.198229461679592e-8,0.004566143978834918,2.234071638222029e-6,-2.1498460356284963e-8,0.004566316991076654,2.002834908710053e-6,-2.0970174692905903e-8,0.004566573698773829,1.7872369419549948e-6,-2.047735188978444e-8,0.004566906025496633,1.6222415688750605e-6,-2.009987915744285e-8,0.004567292941820179,1.5378947751270364e-6,-1.9906572258774763e-8,0.0045677009482845456,1.5534732761251689e-6,-1.9941722705096247e-8,0.004568086845586504,1.6706423254153708e-6,-2.0209304708076832e-8,0.004568404479915657,1.8669001932336232e-6,-2.065787129431821e-8,0.004568616641222311,2.0927296815380814e-6,-2.1174057753546027e-8,0.004568710628782926,2.277737563029436e-6,-2.159677431671749e-8,0.004568710906383361,2.3496980887248315e-6,-2.1760931647364762e-8,0.004568678450507578,2.2627328227331568e-6,-2.1561913449607736e-8,0.004568690934995052,2.0202730399911163e-6,-2.100789416692359e-8,0.004568811461316786,1.6765736725135978e-6,-2.0223021008261412e-8,0.004569064102334118,1.3138502582226867e-6,-1.939501198865483e-8,0.00456942983638702,1.0095623883627573e-6,-1.870048308376553e-8,0.0045698609228537225,8.126805895776015e-7,-1.8250956905805127e-8,0.004570301299600792,7.370286449055343e-7,-1.8077863586350383e-8,0.004570702395164331,7.675146472653699e-7,-1.8146849034032396e-8,0.004571031105591736,8.712119800734532e-7,-1.838299920858834e-8,0.004571271553897738,1.0077872223193491e-6,-1.8694474593890068e-8,0.004571423431715869,1.1371794672960694e-6,-1.898988427190855e-8,0.00457149912894306,1.224623094486609e-6,-1.9189713805360918e-8,0.004571520661368493,1.2439529482437433e-6,-1.9233970167685107e-8,0.004571516461258664,1.1798659800376192e-6,-1.90875063062554e-8,0.004571517887299565,1.0292685411183112e-6,-1.874320617434184e-8,0.00457155544903053,8.015811947188519e-7,-1.822266996676711e-8,0.004571654890494846,5.177527012148897e-7,-1.757386049492885e-8,0.0045718335249696285,2.0776980474633583e-7,-1.686531683855287e-8,0.004572097388308316,-9.323396016944465e-8,-1.6177255542095043e-8,0.004572439665645757,-3.4987692521596087e-7,-1.5590463436344316e-8,0.004572840644505964,-5.31972816140779e-7,-1.5173961796713732e-8,0.004573269348815289,-6.200415053200593e-7,-1.4972436045635267e-8,0.004573687024026574,-6.10406095595246e-7,-1.4994491965318193e-8,0.004574052809641157,-5.192579563073559e-7,-1.520320779417572e-8,0.00457433198222599,-3.843987328357727e-7,-1.5512049283710714e-8,0.004574506433080039,-2.6231970700412053e-7,-1.57915871799184e-8,0.004574585098804139,-2.1787955603130257e-7,-1.5893271807468845e-8,0.0045746091849351205,-3.056827632750247e-7,-1.569220003592137e-8,0.004574645498676162,-5.476968892825376e-7,-1.513834525051923e-8,0.004574765267068838,-9.184797312588896e-7,-1.4290196294897466e-8,0.00457501606601899,-1.3499749934384158e-6,-1.3303575679860455e-8,0.004575402559457306,-1.7569182650377685e-6,-1.2373436343486388e-8,0.00457588755670308,-2.0690376161348062e-6,-1.1660288023729968e-8,0.0045764106752221,-2.2521266223356963e-6,-1.1242149216779647e-8,0.004576911396180024,-2.3103385627944873e-6,-1.1109414454615705e-8,0.004577344958268909,-2.275047092560445e-6,-1.119036156480763e-8,0.004577688009744958,-2.190125367673378e-6,-1.1384764724171442e-8,0.00457793703023403,-2.1001362793857524e-6,-1.1590799048558753e-8,0.004578103680851678,-2.0432033769984585e-6,-1.1721260373927869e-8,0.004578209903486739,-2.0476287663152695e-6,-1.1711299731405369e-8,0.00457828387494594,-2.1305649056463137e-6,-1.1521549135013692e-8,0.004578356691217041,-2.2974938653969773e-6,-1.113942510021554e-8,0.004578459254883159,-2.5420904405371936e-6,-1.0579494532798996e-8,0.004578618975408969,-2.8466169571197294e-6,-9.882523233547e-9,0.004578856169100808,-3.183321162571054e-6,-9.112167432714705e-9,0.004579180478803452,-3.5174083811508843e-6,-8.34808453913955e-9,0.004579588120477424,-3.8118316727193404e-6,-7.674971745318212e-9,0.004580060934558044,-4.03352156185739e-6,-7.168392305513895e-9,0.0045805679854873955,-4.1600968235078126e-6,-6.87951141941344e-9,0.0045810699651512255,-4.185692981165825e-6,-6.821782230335321e-9,0.00458152603375295,-4.124467505914989e-6,-6.962856854404446e-9,0.004581902189684743,-4.010657797913334e-6,-7.224349646031663e-9,0.004582179915574498,-3.894438306832133e-6,-7.491268811747432e-9,0.004582363424246814,-3.833098119282915e-6,-7.632267271587255e-9,0.004582483126184382,-3.8777855317296025e-6,-7.53011848341852e-9,0.004582592398102796,-4.057840675385612e-6,-7.117693448106915e-9,0.004582755475052093,-4.367487092300224e-6,-6.408428922268497e-9,0.004583027684494128,-4.761913130848646e-6,-5.505193981758026e-9,0.004583434904318093,-5.1682652158940795e-6,-4.575001218916299e-9,0.004583962740856525,-5.509717091332434e-6,-3.793847647778333e-9,0.004584562235224711,-5.731726984261732e-6,-3.286608037184449e-9,0.0045851690079899594,-5.8173444046123675e-6,-3.092013230972495e-9,0.004585724984926677,-5.785936446522613e-6,-3.1655856948169594e-9,0.004586192672434863,-5.680003803249362e-6,-3.4098510201368928e-9,0.004586558909587067,-5.549240041603622e-6,-3.710862720240599e-9,0.004586831090544941,-5.438473165345392e-6,-3.965824489806852e-9,0.004587030516411275,-5.381337431846182e-6,-4.097587491428378e-9,0.004587186126494469,-5.398361853965937e-6,-4.059053627389166e-9,0.0045873298103882906,-5.49731379182367e-6,-3.8324359563939324e-9,0.004587493095288864,-5.6741958005571095e-6,-3.427014054705955e-9,0.0045877044693880785,-5.914235263036652e-6,-2.876857912876998e-9,0.004587986651218072,-6.192958116809043e-6,-2.238299632400325e-9,0.004588353448843592,-6.477950803344133e-6,-1.5858038797377467e-9,0.004588806428404769,-6.73216177730537e-6,-1.0043412823020856e-9,0.00458933233628059,-6.919340188748711e-6,-5.769299288868636e-10,0.004589902743292579,-7.011376771941958e-6,-3.6786881572565e-10,0.004590477310455618,-6.996130497857601e-6,-4.0485922692968167e-10,0.004591011167147137,-6.883260760486553e-6,-6.656513658249578e-10,0.0045914652682251846,-6.705371049354524e-6,-1.075393733113511e-9,0.004591817010039603,-6.512924106794449e-6,-1.5182606557942965e-9,0.004592067796621043,-6.363468442006583e-6,-1.8621675068497396e-9,0.004592244944227824,-6.307637731525589e-6,-1.9909320328163395e-9,0.004592396800370081,-6.375463343972728e-6,-1.835720290287429e-9,0.004592581636072272,-6.566741952320174e-6,-1.397147556305703e-9,0.004592852503308843,-6.848670800862258e-6,-7.506592754098574e-10,0.0045932418347822595,-7.16265852740837e-6,-3.085310633349787e-11,0.004593750787773998,-7.439775464126724e-6,6.039907256439864e-10,0.004594348004365676,-7.620693551409611e-6,1.0176568839792315e-9,0.004594979307958952,-7.67285027729872e-6,1.1353900564086016e-9,0.004595584733360852,-7.597882344516838e-6,9.60993606260401e-10,0.004596115629330661,-7.427042036220201e-6,5.663444100107817e-10,0.004596545284004681,-7.208277314545172e-6,6.172570217697634e-11,0.004596870828408168,-6.9916428475073475e-6,-4.377209163440163e-10,0.004597108555701069,-6.818392915343977e-6,-8.371051908542961e-10,0.004597286586221487,-6.715617670183615e-6,-1.0741512526115635e-9,0.004597438018468549,-6.6953943241077795e-6,-1.1211643140079087e-9,0.004597595917342151,-6.7563461785649045e-6,-9.814428534041288e-10,0.0045977900559172604,-6.8858632210796456e-6,-6.841521467843064e-10,0.004598044659033155,-7.062128212677125e-6,-2.796287018101613e-10,0.004598376318128057,-7.255916920005681e-6,1.6480339335871812e-10,0.004598791545151504,-7.4327601793754e-6,5.698408862789437e-10,0.004599284036273952,-7.55641510487658e-6,8.521963256757693e-10,0.004599832545317101,-7.59449169585154e-6,9.37519703522967e-10,0.004600401089893143,-7.526267837569374e-6,7.783330705853753e-10,0.0046009435048163455,-7.351117380604259e-6,3.7337668699399923e-10,0.004601413323426574,-7.094082392306315e-6,-2.1959916877791475e-10,0.004601777276461345,-6.804398311453375e-6,-8.872456883447427e-10,0.004602027574734469,-6.544807205465784e-6,-1.4852269544859042e-9,0.004602187108824936,-6.373998484428838e-6,-1.878640796994688e-9,0.004602304305622246,-6.328662725555859e-6,-1.983290254130587e-9,0.004602439234285484,-6.4122851305789306e-6,-1.7913894121004542e-9,0.004602646341656962,-6.59454075292182e-6,-1.372856112257814e-9,0.004602959791749618,-6.820555679744346e-6,-8.539567811146143e-10,0.004603385401025903,-7.026168406663905e-6,-3.8223413598513426e-10,0.004603900535041509,-7.154432726648315e-6,-8.862971018962839e-11,0.004604461221360877,-7.16909923779504e-6,-5.6530923583887666e-11,0.004605014161836207,-7.061911347469658e-6,-3.0496913721986693e-10,0.004605510173710997,-6.852198505821913e-6,-7.894778705239851e-10,0.004605915231864156,-6.579480498016876e-6,-1.4190378636351609e-9,0.004606216233404941,-6.291994615044852e-6,-2.0824711583876744e-9,0.00460642071017142,-6.035108556079831e-6,-2.675171494544614e-9,0.00460655193149057,-5.842863718623184e-6,-3.1186589302558516e-9,0.004606641995139615,-5.733972110264688e-6,-3.369853455113043e-9,0.004606725264452894,-5.711711571864843e-6,-3.4213163304000836e-9,0.0046068334424430035,-5.7661813773756325e-6,-3.2960088168680032e-9,0.004606992447073734,-5.877366283212291e-6,-3.0401786490361465e-9,0.004607220525040382,-6.01804827384349e-6,-2.7166204947669695e-9,0.004607526828035787,-6.156368380259616e-6,-2.3987754818787228e-9,0.004607909878637184,-6.2584771004198995e-6,-2.1646433927517645e-9,0.004608355861891447,-6.292108699703443e-6,-2.0885544550141327e-9,0.004608837460403657,-6.231941022115572e-6,-2.2288041686048496e-9,0.004609314869247811,-6.066944432541149e-6,-2.610692390028512e-9,0.004609741181179981,-5.808287594175388e-6,-3.208296374163034e-9,0.004610073532643847,-5.494016982094601e-6,-3.9337217762102935e-9,0.004610288280096579,-5.185259144008995e-6,-4.645941435360547e-9,0.004610393895995997,-4.950873931477467e-6,-5.186269288801948e-9,0.004610433184336685,-4.844246198175972e-6,-5.431895389162019e-9,0.004610470758879338,-4.8829096485003395e-6,-5.342766223918112e-9,0.0046105707030473,-5.0419564476459976e-6,-4.976589310976798e-9,0.004610775446429694,-5.26417400954597e-6,-4.465310329754646e-9,0.004611094963682681,-5.480348310975678e-6,-3.968302033161426e-9,0.00461150823724263,-5.62972692844612e-6,-3.625329611994953e-9,0.004611973094222571,-5.673786679284628e-6,-3.524987578971608e-9,0.0046124390559712505,-5.60146915226002e-6,-3.692726761576285e-9,0.004612859222188488,-5.427288532920816e-6,-4.095184948750271e-9,0.004613199097686521,-5.184761096077944e-6,-4.655216115005645e-9,0.00461344157660515,-4.917463952163088e-6,-5.272388730713527e-9,0.004613587996069912,-4.669665926120923e-6,-5.844552407820035e-9,0.004613655691602776,-4.478251084401866e-6,-6.28652082530562e-9,0.004613673077859672,-4.367267921755222e-6,-6.542744128551488e-9,0.00461367367651798,-4.345651474038695e-6,-6.592631310893555e-9,0.0046136904516331,-4.407814373872608e-6,-6.449178045460803e-9,0.004613751389181142,-4.536239263420983e-6,-6.152919507168062e-9,0.004613876649815567,-4.704994955452618e-6,-5.763751856803909e-9,0.004614077028175075,-4.883303608630905e-6,-5.352690069082215e-9,0.004614353162834188,-5.038827337005442e-6,-4.994329710158694e-9,0.004614695036423012,-5.140875843306533e-6,-4.759499974144619e-9,0.004615081647533657,-5.164078436357073e-6,-4.706796509128987e-9,0.004615481345908867,-5.093156815280933e-6,-4.871507157630509e-9,0.004615854140456318,-4.928932317867542e-6,-5.251665030544923e-9,0.004616157793161933,-4.694284295014727e-6,-5.794263848231378e-9,0.004616358878782183,-4.436656622864292e-6,-6.389541647842568e-9,0.004616447225878722,-4.222062557520083e-6,-6.884973524270293e-9,0.004616447316459371,-4.117217975337249e-6,-7.126660174101772e-9,0.0046164171712829195,-4.163817419832329e-6,-7.018720722844495e-9,0.004616430002982171,-4.358091358751388e-6,-6.5703061256921416e-9,0.004616545920780777,-4.64955458388336e-6,-5.898225015384205e-9,0.004616789519416018,-4.961068379082266e-6,-5.180477898492885e-9,0.004617144952363664,-5.21797868115541e-6,-4.5890532040936815e-9,0.004617567428571435,-5.370589400078979e-6,-4.238257150629672e-9,0.004618001377383055,-5.4024523567296e-6,-4.165786813726474e-9,0.00461839617858386,-5.326689531338634e-6,-4.341319230810882e-9,0.004618715659086564,-5.176427103811998e-6,-4.688546619249612e-9,0.004618941704013463,-4.994299138923035e-6,-5.1092602716603065e-9,0.0046190738457956015,-4.823500218588578e-6,-5.503860695653606e-9,0.004619126539673815,-4.701021915286869e-6,-5.786919842108562e-9,0.00461912513350184,-4.6530002781485684e-6,-5.897985711351209e-9,0.004619101113456684,-4.692128922859444e-6,-5.8076723886911916e-9,0.004619087174435325,-4.817110070681227e-6,-5.5190059356818914e-9,0.004619112672785507,-5.013950645613634e-6,-5.064416509080086e-9,0.004619199956383798,-5.258745206492392e-6,-4.499227652478228e-9,0.004619361925076508,-5.521396310506229e-6,-3.892989039720409e-9,0.004619600861690062,-5.769630238686212e-6,-3.3201995651143257e-9,0.0046199082837785595,-5.972903127371703e-6,-2.851352592334347e-9,0.004620265553426885,-6.106140175320044e-6,-2.5443702178223045e-9,0.004620645157437597,-6.15344235394916e-6,-2.4360418005486742e-9,0.004621012910332626,-6.111969284666793e-6,-2.5329705998129033e-9,0.004621331889116244,-5.995896088586415e-6,-2.8023280874564467e-9,0.004621569196957076,-5.839257062531263e-6,-3.16525563366286e-9,0.004621705946598681,-5.6949592448301445e-6,-3.499245426945735e-9,0.0046217486369424686,-5.626269776579186e-6,-3.6579976183436843e-9,0.004621736346891752,-5.688589628394338e-6,-3.5136773121236357e-9,0.004621735560203208,-5.9056093086997374e-6,-3.011976455429588e-9,0.004621818663207311,-6.252544277839716e-6,-2.2106262735571202e-9,0.004622034186749106,-6.660327133482274e-6,-1.269447535738715e-9,0.004622386277920894,-7.0421296244785226e-6,-3.8895869566759596e-10,0.004622835921998608,-7.326987257096725e-6,2.672247922603419e-10,0.004623320597655784,-7.481387241366695e-6,6.22078154458821e-10,0.004623778166074979,-7.511256501722334e-6,6.895832720469361e-10,0.0046241631750252934,-7.4503005879202574e-6,5.476957123973267e-10,0.0046244526906444455,-7.344777280885875e-6,3.031921981158643e-10,0.004624644751104253,-7.241142852555951e-6,6.324918068849496e-11,0.0046247535293354415,-7.178329664083658e-6,-8.227089394819571e-11,0.004624803929537004,-7.1838293799132266e-6,-6.982495105222414e-11,0.004624826696230001,-7.272134715425384e-6,1.3414464882997706e-10,0.004624854095060916,-7.444583539571314e-6,5.327371256362688e-10,0.004624916026302616,-7.690267618702546e-6,1.1006291093985203e-9,0.004625036574007785,-7.98793405485864e-6,1.7885067099525766e-9,0.004625231133799637,-8.30888821439031e-6,2.5298802519654072e-9,0.004625504428824734,-8.620815020618825e-6,3.2500039740028935e-9,0.004625849747329165,-8.892151827359156e-6,3.875986187591585e-9,0.0046262495157665465,-9.09652545200698e-6,4.346970267559263e-9,0.004626677147753625,-9.216883627944467e-6,4.623605244888573e-9,0.004627100098948487,-9.249002221467704e-6,4.6961442314090165e-9,0.004627484100502901,-9.204044867914665e-6,4.590434874603475e-9,0.004627798689161824,-9.109776567161958e-6,4.3708109803278244e-9,0.004628024187515499,-9.0095003276215e-6,4.1376398888795614e-9,0.004628159602392367,-8.956974239448121e-6,4.015455545081188e-9,0.004628229255540625,-9.005485803645908e-6,4.127521100134283e-9,0.004628283803510658,-9.1910726190435e-6,4.556926589182645e-9,0.004628390435834369,-9.514454774165462e-6,5.304877259037512e-9,0.004628610918423801,-9.931843970056032e-6,6.269651296939101e-9,0.004628975503068454,-1.03648245865506e-5,7.2696549997176675e-9,0.004629467998225569,-1.0728850454589621e-5,8.10939549229837e-9,0.004630032512152586,-1.0965482676576773e-5,8.65397700401509e-9,0.004630597398772655,-1.1060056137677217e-5,8.86984853736169e-9,0.004631101082919748,-1.1038122203419039e-5,8.816457412620772e-9,0.004631507147841215,-1.0948389067229884e-5,8.606690701628071e-9,0.004631806481354592,-1.0844288661248472e-5,8.364204739480547e-9,0.004632011465302068,-1.0771358781577292e-5,8.194291991699351e-9,0.004632147892557216,-1.0761401585255883e-5,8.170455351365712e-9,0.004632247893263616,-1.0831308542105932e-5,8.331728476942694e-9,0.00463234477781505,-1.0984114505098195e-5,8.685073680741978e-9,0.004632469369290628,-1.1210771926742844e-5,9.209415190899736e-9,0.004632647141513031,-1.1492171204089592e-5,9.860291714348777e-9,0.004632895765556187,-1.1801489544677315e-5,1.0575356211698413e-8,0.004633222987185644,-1.2107161747595294e-5,1.1281365019742708e-8,0.004633625109689717,-1.2376748980879223e-5,1.1903214390625413e-8,0.004634086659004174,-1.2581610090192167e-5,1.2374746891829162e-8,0.004634581752502566,-1.2701806877036646e-5,1.2650024924146413e-8,0.004635077356706937,-1.273044813037253e-5,1.2713298103112125e-8,0.004635538281190807,-1.2676599340062202e-5,1.2585709492729057e-8,0.004635933426539173,-1.2565907068775515e-5,1.2326775887080312e-8,0.0046362425090470906,-1.2438342120984666e-5,1.202920592778017e-8,0.004636462294497865,-1.234271921279755e-5,1.1806193185873564e-8,0.004636611028747824,-1.232775517799123e-5,1.1770617073140064e-8,0.004636729067608224,-1.2429993538057063e-5,1.2006973681361427e-8,0.004636873204322435,-1.2660614669240317e-5,1.2540806146547426e-8,0.004637103047741207,-1.2995764214321633e-5,1.3316407776853431e-8,0.004637461294852211,-1.3376967540621544e-5,1.4197950262497705e-8,0.00463795534065098,-1.3726217412767458e-5,1.5004554273269622e-8,0.004638550845381015,-1.3972478316380603e-5,1.5571711376454045e-8,0.004639183148953752,-1.4077211752893863e-5,1.5810383357853653e-8,0.0046397812865391925,-1.4045280259926954e-5,1.5732214181573113e-8,0.0046402914283477465,-1.3917086868911308e-5,1.5431235497281092e-8,0.004640688992994678,-1.3749519789539588e-5,1.50396004361683e-8,0.004640977811977925,-1.3597154104758875e-5,1.4683939035007512e-8,0.0046411816590931215,-1.3500634643284917e-5,1.4458435271925997e-8,0.004641334337283517,-1.3482814716284878e-5,1.4415936504639937e-8,0.004641471841569615,-1.3549864644392499e-5,1.45705737914381e-8,0.004641627345314647,-1.36943373473814e-5,1.4904873429144573e-8,0.004641828265389255,-1.3898382253809021e-5,1.5377192152694978e-8,0.004642094369945667,-1.4136568493739574e-5,1.592827642183505e-8,0.004642436229981527,-1.4378530825307724e-5,1.648746362443435e-8,0.004642853793025203,-1.4591962398589605e-5,1.6979710468902657e-8,0.00464333536372152,-1.4746476784586312e-5,1.7334602810121096e-8,0.004643857739129038,-1.481845010519349e-5,1.749756817785199e-8,0.00464438837763796,-1.479624509342569e-5,1.7441917675913e-8,0.0046448901141322415,-1.4684572553892183e-5,1.7178880316379137e-8,0.00464532817306209,-1.4506395760338885e-5,1.676197448758261e-8,0.0046456782783954416,-1.4300948688484878e-5,1.628240091514535e-8,0.004645933875498211,-1.4117326680498562e-5,1.5854168093428857e-8,0.004646110289799332,-1.4004423473821114e-5,1.5590715394014384e-8,0.004646244116896511,-1.399911276381716e-5,1.5577449679665026e-8,0.004646387005593405,-1.41153100211975e-5,1.5846355805771457e-8,0.004646594141764705,-1.4337032558028205e-5,1.6359950354097322e-8,0.004646909305258094,-1.4618613247030586e-5,1.701188561366317e-8,0.0046473503812339495,-1.4894178333601433e-5,1.7649042879564176e-8,0.004647900916773948,-1.5095625610264924e-5,1.811329983033688e-8,0.004648512809389593,-1.5173842404411922e-5,1.829077431406508e-8,0.004649120903019922,-1.5114403601433032e-5,1.8148248545685655e-8,0.004649663817187577,-1.4940331193331636e-5,1.7739550224659373e-8,0.004650101646361556,-1.4701189768492982e-5,1.7180166575556488e-8,0.004650423559198932,-1.4455016176381626e-5,1.6605176919502795e-8,0.004650644665764515,-1.4251827770794912e-5,1.613086614501808e-8,0.004650796624019296,-1.4124141025250696e-5,1.583268895658235e-8,0.004650917415804542,-1.4084914955533756e-5,1.5740543813909623e-8,0.004651043598431591,-1.4130241265291127e-5,1.5845089278510927e-8,0.0046512057278376125,-1.4243729279101672e-5,1.6107974164142077e-8,0.0046514261340793615,-1.4400690454054686e-5,1.6471579916206996e-8,0.00465171789456136,-1.4571531090473221e-5,1.6866922638427443e-8,0.004652084137226091,-1.4724599130893931e-5,1.7220302263998086e-8,0.00465251732741125,-1.4829134893015994e-5,1.746020024223448e-8,0.004652998819609395,-1.4859005735948932e-5,1.7525983107701823e-8,0.004653499526234626,-1.4797478165342453e-5,1.7378984205893643e-8,0.004653982822792938,-1.4642447874902636e-5,1.701461884775316e-8,0.004654410522758944,-1.4410540357957179e-5,1.6471859896107837e-8,0.004654751676673082,-1.4137726039344877e-5,1.5834608479389963e-8,0.0046549921899199246,-1.3874312315314267e-5,1.5219993013443092e-8,0.004655141733859297,-1.3673984905797297e-5,1.4752835810267254e-8,0.004655234441725839,-1.3579420898515158e-5,1.4532174851046341e-8,0.00465532189043984,-1.3609191262358246e-5,1.460084197006534e-8,0.00465545992364021,-1.3750758727023153e-5,1.4929278998332993e-8,0.004655693328327301,-1.3962304090208998e-5,1.5419907146882814e-8,0.004656043110456753,-1.4183068768481111e-5,1.5931259431933548e-8,0.0046565001678516875,-1.434927671056179e-5,1.631501554350779e-8,0.004657027305155954,-1.4411158052329369e-5,1.6455548921583325e-8,0.004657569281103155,-1.434612452943196e-5,1.630052615942731e-8,0.004658068049326739,-1.41639120076071e-5,1.5872851697627348e-8,0.0046584782426453645,-1.3901969676808915e-5,1.525993191601153e-8,0.0046587776708922075,-1.3613082255371558e-5,1.458484088844579e-8,0.004658969832612916,-1.3350233172794423e-5,1.397103491590227e-8,0.004659079003760188,-1.3154157206487545e-5,1.3513330900768914e-8,0.004659141208384155,-1.3046837117797856e-5,1.3262761688597618e-8,0.004659194957403009,-1.3031068730407019e-5,1.3225604937819598e-8,0.004659274330167408,-1.3094026415269862e-5,1.3371747416260096e-8,0.0046594050651191455,-1.3212282800757067e-5,1.3646426315830232e-8,0.004659602999671059,-1.3356523513515203e-5,1.3981232874721674e-8,0.004659873789227049,-1.3495310852038219E-05,1.430287645128278e-8,0.004660213024776066,-1.359808005239616e-5,1.4540151248134795e-8,0.00466060633304002,-1.3637992835869933e-5,1.4630579714044076e-8,0.00466102965981684,-1.3595349253137439e-5,1.4528372069494455e-8,0.004661450563042212,-1.3461902340691184e-5,1.421449651710166e-8,0.004661831730217652,-1.3245578696188559e-5,1.3707678548966238e-8,0.004662137755511344,-1.2973872164911173e-5,1.307227092715899e-8,0.004662344999202101,-1.2693012432152884e-5,1.2416231574338447e-8,0.0046624519407560735,-1.2460082818593683E-05,1.1872648439435237e-8,0.004662485004202495,-1.2327880026386206e-5,1.1564379854227212e-8,0.004662494901102442,-1.2327021407297365e-5,1.1562375295099926e-8,0.004662542595555069,-1.24533420275431e-5,1.185644126351985e-8,0.0046626799506357805,-1.2667322066857839e-5,1.2354101779958266e-8,0.004662933402383711,-1.2906251170550697e-5,1.2909087247827492e-8,0.004663297073919368,-1.3103506845817271e-5,1.3366273288023952e-8,0.004663736575308624,-1.3207064274389993e-5,1.360471420722314e-8,0.00466420034455511,-1.3191474217760806e-5,1.3565421464328888e-8,0.004664633821846689,-1.3061257113502004e-5,1.3259181775894936e-8,0.0046649923454657955,-1.284657142486857e-5,1.2756441236261749e-8,0.0046652500093320995,-1.2593575575264028e-5,1.2164869400910327e-8,0.004665403125135055,-1.2352518526780268e-5,1.160163133759852e-8,0.004665468293837048,-1.2166612359423423e-5,1.1167452954822372e-8,0.004665476372929213,-1.2064179756235221e-5,1.092829431744967e-8,0.004665464527011558,-1.205536188602705e-5,1.090765701107904e-8,0.00466546866248559,-1.2133139463074206e-5,1.1088976843000324e-8,0.004665517840456056,-1.2277264814901737e-5,1.1424838647350068e-8,0.00466563119751025,-1.245936221956031e-5,1.1848924275875613e-8,0.004665817006354218,-1.2647802841822536e-5,1.2287410809984839e-8,0.004666073053110041,-1.281166414378168e-5,1.2668190698852117e-8,0.004666387542373383,-1.292381306206243e-5,1.2928022906658796e-8,0.004666740117300406,-1.2963606556451226e-5,1.3018805625924864e-8,0.004667103089208761,-1.2919782368290056e-5,1.2914336858847914e-8,0.004667443516313451,-1.2793855787151033e-5,1.261828935995056e-8,0.004667727216102982,-1.2603634007130076e-5,1.2172443742013038e-8,0.004667925717887047,-1.2385223968453717e-5,1.1661335221281164e-8,0.004668025982969037,-1.2190587373047782e-5,1.1206425769168459e-8,0.004668040124918859,-1.2077562615726495e-5,1.0942668267392677e-8,0.004668009332740903,-1.2092131257680859e-5,1.0977046211594681e-8,0.004667995963365245,-1.2248776168792324e-5,1.1342816317376177e-8,0.004668063394253834,-1.2519839245074089e-5,1.1974895693262607e-8,0.004668252213447853,-1.2842352538933383e-5,1.272604191553377e-8,0.004668565476656956,-1.3140346753934688e-5,1.3419026252516424e-8,0.004668970137839872,-1.3350798188378615e-5,1.390712963685913e-8,0.00466941145688206,-1.3440881943664238e-5,1.4114239617360718e-8,0.004669831352637258,-1.3411820715628956e-5,1.4043647933471819e-8,0.004670183125758375,-1.3292231840828618e-5,1.3762398499525709e-8,0.004670439551567326,-1.3126587614643615e-5,1.3374333363953765e-8,0.0046705947835942166,-1.2963357965618242e-5,1.2992486691062576e-8,0.004670661871582767,-1.2845325839862214e-5,1.2716578643366719e-8,0.004670667699865216,-1.2802931475699457e-5,1.2617538625965364e-8,0.004670646681376949,-1.2850763728081769e-5,1.2729307862896565e-8,0.00467063427678483,-1.2987111806417097e-5,1.304775137827414e-8,0.004670661343090428,-1.3196164916613432e-5,1.353577457443399e-8,0.004670750064167247,-1.3452020070287972e-5,1.4132715042564545e-8,0.004670911777831962,-1.3723508501828329e-5,1.4765677409608379e-8,0.004671146597861861,-1.397894625705489e-5,1.5360669460035923e-8,0.004671444375319671,-1.4190158848444865e-5,1.5851986140975655e-8,0.004671786392194452,-1.4335593144657587e-5,1.6189419371909977e-8,0.004672147385320302,-1.440277455442945e-5,1.634395024210514e-8,0.004672497882915822,-1.439047323877524e-5,1.63128171558708e-8,0.004672807221955093,-1.4310754474099981e-5,1.6124358297051074e-8,0.004673047967062916,-1.4190585450886653e-5,1.5841798023873977e-8,0.004673202402940901,-1.4071681804180103e-5,1.556283414706472e-8,0.004673270739720579,-1.4006175424222032e-5,1.5409373309145138e-8,0.004673278417874302,-1.4045585886180635e-5,1.5501616287218707e-8,0.0046732771097705355,-1.4223112429589761e-5,1.5916656213600744e-8,0.0046733335426375954,-1.4535231411889031e-5,1.6645637433110732e-8,0.0046735060396706435,-1.4934337773744007e-5,1.7576826633511244e-8,0.004673819189801707,-1.5341741234222534e-5,1.852618723245616e-8,0.004674252268579398,-1.5677278964770178e-5,1.9306615085994873e-8,0.004674748944885229,-1.5888924620635015e-5,1.9797027686382072e-8,0.004675240882951573,-1.5966460031890974e-5,1.997414641383107e-8,0.004675670613593522,-1.593625842060622e-5,1.9900119679567408e-8,0.0046760041793818975,-1.5845643844857367e-5,1.9685820881802324e-8,0.00467623309851158,-1.5746690960885734e-5,1.945294625392006e-8,0.004676369818220206,-1.568457041001168e-5,1.930686205008403e-8,0.004676440772138309,-1.5691203227189234e-5,1.932191376955323e-8,0.004676479528732202,-1.5782987495501686e-5,1.9536206216259085e-8,0.004676520954653062,-1.5961033347667108e-5,1.995215400474037e-8,0.004676596422060922,-1.6212951573783454e-5,2.0540610281932875e-8,0.004676730027189161,-1.6515837372076925e-5,2.1247813816331533e-8,0.004676935979999788,-1.6840152095742693e-5,2.2004505046599017e-8,0.004677217318990602,-1.7154102391278926e-5,2.2736247570911134e-8,0.00467756602649892,-1.7428077777037665e-5,2.3373860561672378e-8,0.004677964479425937,-1.763863379374355e-5,2.3862716425329537e-8,0.0046783879238457065,-1.7771596392012232e-5,2.4169923607945506e-8,0.004678807583239352,-1.782417897198473e-5,2.4289203675387195e-8,0.004679194192743565,-1.780618647288843e-5,2.4243687912563586e-8,0.004679521978008149,-1.7740311713799754e-5,2.4086639550366526e-8,0.0046797732769125674,-1.7661270247751158e-5,2.3899445231071237e-8,0.004679943926326737,-1.7612934963310745e-5,2.378485408762777e-8,0.00468004874105327,-1.76419904879494e-5,2.38520116422879e-8,0.0046801248137174605,-1.7786845602176726e-5,2.4190427202702886e-8,0.004680228593309382,-1.806263404032576e-5,2.4834927068767032e-8,0.004680422650323219,-1.844760764224442e-5,2.5734020536887993e-8,0.0046807527992763975,-1.8880759513499523e-5,2.674458018490809e-8,0.0046812254701966765,-1.9278549072575866e-5,2.7671099756894892e-8,0.004681800427430815,-1.9566523632612258e-5,2.8339657629219468e-8,0.004682406079741662,-1.9708395147643984e-5,2.8665861411746463e-8,0.004682968366748158,-1.9715465849410977e-5,2.867679352392317e-8,0.004683435608529261,-1.9634266355882566e-5,2.8481924313167707e-8,0.0046837883337889595,-1.952439154406978e-5,2.822106187628867e-8,0.004684035487230924,-1.9439673756009193e-5,2.8020203083391307e-8,0.004684204485088165,-1.941806770279495e-5,2.7967929163297136e-8,0.00468433116167156,-1.9479029937500837e-5,2.8109428435669545e-8,0.004684452186456466,-1.9625176187452407e-5,2.845049597540157e-8,0.004684600168465979,-1.984553498761316e-5,2.896517248241957e-8,0.0046848006032723915,-2.0118998764571928e-5,2.9603786467988204e-8,0.0046850698397548065,-2.041773635670475e-5,3.0300926191513015e-8,0.004685413783371999,-2.0710763850050337e-5,3.098384943257845e-8,0.00468582740770953,-2.096777642395736e-5,3.1581541361914726e-8,0.004686295292293071,-2.1163165376747107e-5,3.203417446835051e-8,0.004686793459251504,-2.127986172954694e-5,3.230208207219933e-8,0.004687292561605285,-2.1312386356273433e-5,3.2372809600881676e-8,0.0046877621105637915,-2.126854613740853e-5,3.2264991110637834e-8,0.004688175258111988,-2.1169442043346494e-5,3.202831932504239e-8,0.004688513640797768,-2.104761290672734e-5,3.173919627450822e-8,0.004688771804655766,-2.0943260277204035e-5,3.149188772523059e-8,0.004688960704666771,-2.089847309766487e-5,3.138494951118754e-8,0.004689109427812848,-2.0949239557927876e-5,3.150244410680444e-8,0.0046892635417487075,-2.111546408427255e-5,3.189053130139887e-8,0.004689477922148566,-2.139077308886334e-5,3.253367882818093e-8,0.004689802698454854,-2.1736387602686895e-5,3.3340499356742825e-8,0.004690264446209853,-2.2085256460148676e-5,3.415361339714332e-8,0.004690850572478942,-2.2360461861946586e-5,3.4792836260214054e-8,0.004691507905376526,-2.2503277074614084e-5,3.512087981369812e-8,0.0046921603699025816,-2.2496547289027997e-5,3.5098078105129547e-8,0.004692737515622717,-2.2369205648309436e-5,3.4792895698371355e-8,0.0046931977430484575,-2.218033828194287e-5,3.434443116540985e-8,0.004693535450245421,-2.19946049648199e-5,3.390460552743203e-8,0.004693773572452373,-2.1862829343110403e-5,3.359254933534034e-8,0.0046939501630360635,-2.181362607661693e-5,3.3475032195887265e-8,0.004694106408800557,-2.1853986931876104e-5,3.356800326714713e-8,0.004694278929507639,-2.1974145041739544e-5,3.384814078091561e-8,0.004694495986966662,-2.2153135943492177e-5,3.4265942399950725e-8,0.00469477605708682,-2.236343686777121e-5,3.475658838964401e-8,0.004695127385027143,-2.25745849279392e-5,3.5248415385464474e-8,0.004695547882976639,-2.2756322352379375e-5,3.567032900021728e-8,0.004696025355911659,-2.2881787560675736e-5,3.595935203368904e-8,0.004696538399017729,-2.2930998865573962e-5,3.6068830865346576e-8,0.0046970585118214685,-2.2894428695522926e-5,3.597678695177047e-8,0.0046975538398428066,-2.277591695522771e-5,3.569266368776685e-8,0.004697994417085737,-2.2593897361128732e-5,3.52601055038316e-8,0.004698358163045725,-2.238005741037552e-5,3.475374675121492e-8,0.0046986364344812365,-2.2175013783692378e-5,3.4269031535764016e-8,0.0046988377483364,-2.2021316841364653e-5,3.3905777612987485e-8,0.004698988505350433,-2.1954843872662592E-05,3.3747957039559153e-8,0.00469913001615439,-2.199603289469974e-5,3.384312019587815e-8,0.004699311555481439,-2.2142626039551497e-5,3.418542095617081e-8,0.004699579681160445,-2.2366028659942287e-5,3.470720003209844e-8,0.004699965159038889,-2.261379023439517e-5,3.528496641002932e-8,0.0047004707613474824,-2.2820209470544427e-5,3.576439822294622e-8,0.004701065275270101,-2.29245915141501e-5,3.600321104272019e-8,0.0047016890656927665,-2.2891951736126434e-5,3.591970431021748e-8,0.004702272011748362,-2.2726666777386748e-5,3.5524736397453896e-8,0.004702756920507253,-2.2470877734699576e-5,3.491788013206634e-8,0.004703116987165939,-2.2187808782063738e-5,3.4248104068405246e-8,0.004703359534640568,-2.193925935774467e-5,3.3660754039070295e-8,0.004703517130520162,-2.176842696306175e-5,3.325714330433221e-8,0.004703633418269326,-2.1693450292192006e-5,3.3079469125848756e-8,0.004703750784664788,-2.1710014565138826e-5,3.311710181821752e-8,0.004703902999268972,-2.1798210735348334e-5,3.332284229703271e-8,0.00470411241473192,-2.1929606093883388e-5,3.362958798550564e-8,0.004704389870876045,-2.207267688476105e-5,3.396308166894864e-8,0.0047047356012256255,-2.2196523423997598e-5,3.425061394883235e-8,0.004705140226676658,-2.2273583221930157e-5,3.4427402906015455e-8,0.004705585684179088,-2.2282131344618075e-5,3.444250019797068e-8,0.004706046484988976,-2.2209080754436687e-5,3.426539393023329e-8,0.004706492021561705,-2.205305499960459e-5,3.389321201807501e-8,0.004706890608130669,-2.182697129221664e-5,3.3356730967267744e-8,0.00470721539646339,-2.1558758464267093e-5,3.2721977504560417e-8,0.004707451321018943,-2.12887104727388e-5,3.208392178194558e-8,0.004707601124258925,-2.1062650368795808e-5,3.1550339335174934e-8,0.004707687923092548,-2.092164673284272e-5,3.1217597646232705e-8,0.004707752373939844,-2.0890881213821516e-5,3.1144495257733445e-8,0.004707844271649323,-2.097124597532204e-5,3.1332583670419434e-8,0.004708010475613604,-2.113670162270532e-5,3.172008981581706e-8,0.004708282385389394,-2.1338748014371744e-5,3.219257613945702e-8,0.0047086664359290925,-2.15173693706775e-5,3.2608780636782456e-8,0.0047091404880734164,-2.161606952423453e-5,3.283599569519555e-8,0.004709657840613588,-2.159728736032355e-5,3.278626927707014e-8,0.0047101587972046815,-2.14536381865304e-5,3.244275536750323e-8,0.004710587092019814,-2.1210639927389882e-5,3.1866026733256766e-8,0.004710905784652387,-2.0918934500008726e-5,3.11756702803512e-8,0.004711106530119068,-2.0638435018091832e-5,3.051288304831013e-8,0.004711208865517889,-2.0420804081158147e-5,2.999917704131898e-8,0.004711250995690448,-2.029710843358638e-5,2.9707348003223693e-8,0.004711277151420492,-2.0274053881011356e-5,2.9652724627549498e-8,0.00471132674977426,-2.033766978305856e-5,2.9801983439850805e-8,0.00471142806619857,-2.046071242907155e-5,3.009067825446045e-8,0.004711596296366146,-2.061020016312087e-5,3.044100612335261e-8,0.004711834389857875,-2.0753171954947886e-5,3.077533281366249e-8,0.004712134965726818,-2.086041685204148e-5,3.1024925417154556e-8,0.004712482251510385,-2.090882235568343e-5,3.1135456149055995e-8,0.004712853737906606,-2.0883211847782863e-5,3.107133595210802e-8,0.004713221881139335,-2.0778334625325025e-5,3.082042383122008e-8,0.004713556597760101,-2.0601134262572815e-5,3.0399376917884984e-8,0.004713829354068818,-2.037263915355485e-5,2.9858068237885336e-8,0.004714019207495355,-2.0127999853239356e-5,2.9279591365504785e-8,0.004714120040236812,-1.9912737159773322e-5,2.8771311538676714e-8,0.00471414655809,-1.9773869991005393e-5,2.8443873226592142e-8,0.004714135386249772,-1.9746861801332327e-5,2.83804276963628e-8,0.004714138370032906,-1.984258160661189e-5,2.8606000254505665e-8,0.004714208596707071,-2.004036454826956e-5,2.9071316232283385e-8,0.004714383927031075,-2.029154199139544e-5,2.966130936884501e-8,0.00471467478824134,-2.0532945180363846e-5,3.022705867006223e-8,0.004715061013315357,-2.070513244011117e-5,3.0628741349271914e-8,0.00471549819391272,-2.0768559539906018e-5,3.0773644450018024e-8,0.004715930398805945,-2.0712828599232458e-5,3.06378229761092e-8,0.00471630479798327,-2.0557372487725065e-5,3.02675794944921e-8,0.00471658419168978,-2.0344538606421003e-5,2.9763064924636998e-8,0.004716754587575241,-2.012762846230072e-5,2.9250034311585e-8,0.004716826391143379,-1.9957347775696705e-5,2.8847903519089865e-8,0.004716829482927148,-1.9870328926400146e-5,2.8642734974974278e-8,0.004716804183631088,-1.9882591570309303e-5,2.8671899620700577e-8,0.004716791192796836,-1.9989005281011388e-5,2.8922902741116466e-8,0.004716823437325514,-2.016770532199581e-5,2.934387756265717e-8,0.004716921469150951,-2.0387043502867066e-5,2.986002387931219e-8,0.0047170924226144694,-2.0612596164450385e-5,3.0390138793191444e-8,0.004717331446500595,-2.081266616228881e-5,3.085955828244744e-8,0.00471762425529221,-2.0961852660023846e-5,3.120852397033979e-8,0.004717949786709429,-2.104309008518074e-5,3.139695112234478e-8,0.004718282560551554,-2.104890203008696e-5,3.1407378398035346e-8,0.00471859492533725,-2.0982516486430054e-5,3.1247623321056654e-8,0.004718859796079545,-2.0859052414961204e-5,3.0953605446153896e-8,0.004719054624823485,-2.0706285041295662e-5,3.059112867970817e-8,0.004719167008269947,-2.0563643657749342e-5,3.025342322589191e-8,0.0047192012609654915,-2.0477478018717793e-5,3.00498426889888e-8,0.00471918345441392,-2.0491050133859172e-5,3.0082155472353386e-8,0.004719160711673773,-2.0630138351970563e-5,3.041060704503147e-8,0.004719191097019601,-2.0889406258420564e-5,3.1021931692673706e-8,0.004719325043469325,-2.1227769789697886e-5,3.181866698159706e-8,0.0047195859260143365,-2.1578468896618452e-5,3.264310559084911e-8,0.004719960156972756,-2.187111814865657e-5,3.3329373513019146e-8,0.004720402230039262,-2.2055137896671795e-5,3.375863627291979e-8,0.004720851199728154,-2.211368644516015e-5,3.3891818178741824e-8,0.004721249742534635,-2.2064084478755165e-5,3.3770422384395773e-8,0.004721558271420089,-2.194802371751545e-5,3.349326327499581e-8,0.004721761248337392,-2.181765833721016e-5,3.318355542341268e-8,0.004721866556401599,-2.1722520963282726e-5,3.295805030285286e-8,0.004721900238871268,-2.169987115382176e-5,3.29043510790176e-8,0.004721898892204645,-2.176929055241197e-5,3.306826983285239e-8,0.004721901529417458,-2.193141803818353e-5,3.345092527192641e-8,0.004721942348745987,-2.2170269412426117e-5,3.401426136456454e-8,0.004722045516212493,-2.2458138717909424e-5,3.4692640398515564e-8,0.004722222546618573,-2.2761699487966296e-5,3.540726851507083e-8,0.0047224722135377,-2.3047940802877143e-5,3.6080226653327896e-8,0.004722782394577666,-2.3288951948910685e-5,3.6645758612571877e-8,0.004723132980101565,-2.3465103100195668e-5,3.7057739558551584e-8,0.004723499026608934,-2.3566743782828097e-5,3.729363200615465e-8,0.004723853726366984,-2.3594919509001365e-5,3.7356145869933e-8,0.004724171226410891,-2.356158846622636e-5,3.727375668144662e-8,0.00472442964344223,-2.3489522051841577e-5,3.710048713221879e-8,0.004724614776565834,-2.3411574874169688e-5,3.691415587823861e-8,0.004724724794459883,-2.3368277341243487e-5,3.6810591870453345e-8,0.0047247752100325596,-2.340213360934399e-5,3.6890033197833116e-8,0.004724801818033701,-2.354741153860014e-5,3.723294414462482e-8,0.00472485768521177,-2.3816423663497148e-5,3.786770260091306e-8,0.004725000635390749,-2.418751526032683e-5,3.8742466858000376e-8,0.004725272431033011,-2.4603620051597823e-5,3.972202334985268e-8,0.0047256788219663705,-2.4987702204493527e-5,4.062439541897351e-8,0.004726183285667441,-2.5270759185625143e-5,4.128696584233639e-8,0.004726720126803429,-2.541754230471784e-5,4.162712542300643e-8,0.004727219448344189,-2.5435941739691993e-5,4.166429361538732e-8,0.004727629770664268,-2.536784151980682e-5,4.149811650246318e-8,0.00472792886355938,-2.5270329894455154e-5,4.126387077300937e-8,0.00472812265068321,-2.5197835046972124e-5,4.109015364379114e-8,0.0047282373150355555,-2.5190669974525258e-5,4.1071880240448236e-8,0.004728309665470908,-2.5270343003186838e-5,4.125937504726307e-8,0.004728378624615121,-2.543968430350618e-5,4.165883422548709e-8,0.004728478767596398,-2.5685707126707573e-5,4.223916565564198e-8,0.004728635885651726,-2.5983880913205705e-5,4.294209090323031e-8,0.004728864409439411,-2.6303109090072288e-5,4.369389967187808e-8,0.00472916659618418,-2.6610845597161917e-5,4.44175634064523e-8,0.004729533321857145,-2.687781278328495e-5,4.5043926732075706e-8,0.00472994622235607,-2.708187235910797e-5,4.55208730022123e-8,0.004730380793270376,-2.721067737099242e-5,4.5819553184842186e-8,0.004730809906752847,-2.7262961196945158e-5,4.593735403726144e-8,0.004731207297948036,-2.724866569169805e-5,4.589813042879811e-8,0.004731550882303068,-2.7188193463415645e-5,4.5750407942570875e-8,0.004731825972564864,-2.7110878798737e-5,4.5563763450471336e-8,0.004732028530653421,-2.7052515132200603e-5,4.54229491228676e-8,0.004732168446389242,-2.7051350258781955e-5,4.541834024160813e-8,0.004732272116670077,-2.714157631827611e-5,4.563044734216501e-8,0.004732382358303023,-2.734381236381859e-5,4.610740117539504e-8,0.004732552676207028,-2.765400554259749e-5,4.6838853150868065e-8,0.004732833512182073,-2.803550331529912e-5,4.773748847006038e-8,0.004733252285295634,-2.842190019560124e-5,4.864598097253564e-8,0.004733796293531172,-2.8735835655547945e-5,4.9381511830951945e-8,0.004734411109839088,-2.891853713979851e-5,4.980557132802008e-8,0.004735019503554785,-2.895397730306729e-5,4.9880998252676156e-8,0.004735551138537044,-2.887270533546891e-5,4.9680920882470014e-8,0.00473596575267552,-2.873482839748109e-5,4.9348284107208375e-8,0.004736259519104328,-2.8605104853960317e-5,4.903667122874668e-8,0.004736457060975534,-2.8533821667809858e-5,4.886493863585071e-8,0.0047365979415711565,-2.85485921602435e-5,4.88979128990018e-8,0.004736724583238949,-2.8654807118183317e-5,4.914769787656253e-8,0.0047368742116397,-2.8840382877356432e-5,4.958511728727826e-8,0.004737074552126241,-2.9081541619000465e-5,5.015347478913712e-8,0.004737342012367782,-2.934812648323624e-5,5.078111482310837e-8,0.004737681309886265,-2.960821833601568e-5,5.139231870366264e-8,0.004738086098954303,-2.9832193363411564e-5,5.191692419486976e-8,0.004738540469209245,-2.9996259595434974e-5,5.229874245767923e-8,0.0047390212881655396,-3.0085394338945098e-5,5.2502529913061444e-8,0.004739501377336211,-3.0095423581682325e-5,5.251886124976056e-8,0.004739953305782397,-3.0033870472254683e-5,5.236603682676017e-8,0.004740353348319325,-2.9919407976351642e-5,5.208868447062693e-8,0.004740685200385828,-2.9779991128983356e-5,5.175327771239827e-8,0.004740943182403257,-2.9649741613378564e-5,5.1440738209547884e-8,0.004741134674185391,-2.9564621576085497e-5,5.1236171222247815e-8,0.004741281429687509,-2.955689735080932e-5,5.121571324845782e-8,0.004741419089674041,-2.9648317114137292e-5,5.1430346955513816e-8,0.004741593583568248,-2.984236535396184e-5,5.18876132323745e-8,0.0047418528064249385,-3.0117417530783683e-5,5.2535574522677666e-8,0.004742232999460031,-3.0424697664623252e-5,5.325821214909581e-8,0.004742742611363063,-3.069609207813721e-5,5.3894094209571386e-8,0.004743351393757184,-3.086414788615748e-5,5.4283751424790724e-8,0.004743994368040548,-3.088836563852584e-5,5.433186801908802e-8,0.004744593460110826,-3.0773559410401626e-5,5.4050676811265004e-8,0.004745086788273111,-3.0567784478253706e-5,5.3554919237006306e-8,0.004745448989905369,-3.034083898991905e-5,5.301067418598428e-8,0.0047456930853903715,-3.015732469647893e-5,5.257126350003612e-8,0.004745857698513026,-3.00585998089884e-5,5.233439298931279e-8,0.004745990240669041,-3.0058200221043662e-5,5.233146185427817e-8,0.004746133999600095,-3.01466801907586e-5,5.2539325380684306e-8,0.004746321325199566,-3.0299826522431672e-5,5.289999214373297e-8,0.004746571565708012,-3.048628868783824e-5,5.333878061980279e-8,0.004746891547053987,-3.067323831866283e-5,5.377769034777425e-8,0.004747276976592629,-3.083031101807034e-5,5.414468688672485e-8,0.0047477141402886116,-3.09325591886319E-05,5.4380693556431183e-8,0.004748181886555148,-3.096289364885244e-5,5.444541244979396e-8,0.004748654088097438,-3.09141513535335e-5,5.432224087989675e-8,0.004749102826477359,-3.079058892868887e-5,5.4021765189798875e-8,0.0047495023578297945,-3.060826542501298e-5,5.358256772490767e-8,0.004749833466407175,-3.0393770407297746e-5,5.306810148158317e-8,0.0047500874842839194,-3.018108231591561e-5,5.2559163277776153e-8,0.004750269208928283,-3.000667785776047e-5,5.214226026089898e-8,0.004750398005292498,-2.990333609399654e-5,5.1894905169507964e-8,0.004750506508683392,-2.9893424852776115e-5,5.186969825178604e-8,0.004750636541043871,-2.9982645840082855e-5,5.2079533030619567e-8,0.0047508320083346,-3.0155421919572188e-5,5.248676449937229e-8,0.004751128908639331,-3.037369192805859e-5,5.300052553271625e-8,0.0047515437134295745,-3.058146946640733e-5,5.348771766126394e-8,0.004752063484848125,-3.071700733657849e-5,5.380196084787112e-8,0.0047526432287152715,-3.073156493559227e-5,5.382809002665862e-8,0.004753215530274019,-3.060859876345908e-5,5.352758456900073e-8,0.004753711939495655,-3.0373149193153703e-5,5.2960713748294996e-8,0.004754087100048578,-3.0083973403278307e-5,5.226769683183297e-8,0.00475433293603724,-2.98112136590755e-5,5.1615475629158006e-8,0.004754476264544549,-2.9611822552670604e-5,5.113920082596975e-8,0.004754563953700199,-2.9514823359041654e-5,5.0907249040929476e-8,0.0047546455613278705,-2.9520016886330627e-5,5.0918372072733805e-8,0.004754761071596459,-2.9605722627759065e-5,5.112036823852704e-8,0.004754935662167024,-2.9739033755819657e-5,5.143462572713782e-8,0.0047551796096890735,-2.988434036747737e-5,5.1776389895648226e-8,0.004755490589258526,-3.0008869624587908e-5,5.206783588245407e-8,0.004755856442393838,-3.008584029224015e-5,5.224546763974042e-8,0.004756257668350731,-3.0096339668500227e-5,5.2264540791731686e-8,0.004756669706745484,-3.0030731792701057e-5,5.210242554479061e-8,0.004757065414585785,-2.9889908539192638e-5,5.176159886049536e-8,0.004757418195542284,-2.968619040159789e-5,5.1271759843174285e-8,0.00475770601363651,-2.9443203318333868e-5,5.0689459342253564e-8,0.004757915965546911,-2.9193873541743718e-5,5.009323271378707e-8,0.004758048438176281,-2.8975983699953833e-5,4.957295059706262e-8,0.0047581194741599594,-2.882542250153593e-5,4.921372935448555e-8,0.004758160019778779,-2.876818870394926e-5,4.9076934374705044e-8,0.004758211358591651,-2.8813062505827567e-5,4.9182827912228046e-8,0.004758317093348088,-2.894711954955259e-5,4.950002836532726e-8,0.004758513086696229,-2.913579719092093e-5,4.994582695633771e-8,0.004758817511140333,-2.932837760191171e-5,5.03993731608605e-8,0.004759223605850981,-2.9468701036464705e-5,5.072723219425754e-8,0.004759697867909933,-2.9509504216527897e-5,5.0817464553032814e-8,0.004760185864983653,-2.942696235017769e-5,5.061410130962157e-8,0.0047606259543624555,-2.9230317643366145e-5,5.0139889000795495e-8,0.004760967607467908,-2.896139174117637e-5,4.9494965504536796e-8,0.004761187350905263,-2.8682116608214554e-5,4.882704196243258e-8,0.004761294966547717,-2.8454389880011927e-5,4.828336259201367e-8,0.004761327275387122,-2.8321230768383856e-5,4.796585845162461e-8,0.004761333553681048,-2.829714704173953e-5,4.790836114893017e-8,0.0047613601652829966,-2.8369688621673795e-5,4.808053312846534e-8,0.004761440321646852,-2.8508399895063426e-5,4.8409387338905586e-8,0.004761590551451071,-2.8675522491192136e-5,4.880485640357133e-8,0.004761812082991868,-2.883449707617644e-5,4.917998782520274e-8,0.004762094385548418,-2.8955069947828657e-5,4.946298307321452e-8,0.004762418882065095,-2.9015693696433737e-5,4.960280392062293e-8,0.0047627620311700624,-2.9004461174501594e-5,4.95713500331758e-8,0.004763097828331392,-2.8919547543918302e-5,4.936452599578333e-8,0.004763400221147088,-2.8769621484632385e-5,4.90032528762637e-8,0.004763646058855578,-2.8574085268911304e-5,4.8534040160042696e-8,0.004763818946533213,-2.8362398774863e-5,4.802731915464349e-8,0.004763913739565946,-2.8171404920085826e-5,4.757097276326134e-8,0.004763940543520972,-2.8039773963918373e-5,4.725700354486537e-8,0.004763926283878361,-2.7999613583819032e-5,4.7161505527736824e-8,0.004763911790083301,-2.806694015820014e-5,4.732201788368541e-8,0.004763943561668426,-2.8234348316907707e-5,4.772020956502153e-8,0.004764061768513518,-2.846950262937871e-5,4.827848357257109e-8,0.004764288248044224,-2.8721294087771193e-5,4.8874818169044365e-8,0.004764618840848933,-2.893247019251986e-5,4.93729414401414e-8,0.004765022978940383,-2.905493603698263e-5,4.965875709174304e-8,0.004765450868508584,-2.9062967578863874e-5,4.967170122917772e-8,0.004765846191254104,-2.8960399760946087e-5,4.942169071629253e-8,0.00476616076776282,-2.8779715550303997e-5,4.8986766544630736e-8,0.004766367084636814,-2.8573141543301774e-5,4.849172329484978e-8,0.004766464911858467,-2.839814847115955e-5,4.807347695622499e-8,0.00476647980983421,-2.8301831799976193e-5,4.784386143983262e-8,0.004766454199070231,-2.830937480805551e-5,4.7862255367856655e-8,0.004766434603844106,-2.8420157629011527e-5,4.8126495550133353e-8,0.004766459867818386,-2.861169104607286e-5,4.8582435764613466e-8,0.004766553900979995,-2.8848469249434867e-5,4.9145161379864336e-8,0.004766723895020026,-2.9091731049801776e-5,4.9722271610959204e-8,0.004766962652236033,-2.9307102792118214e-5,5.023203099217928e-8,0.004767252783211253,-2.946903329270971e-5,5.061383669831442e-8,0.004767570966247876,-2.956252059197733e-5,5.083224211036534e-8,0.00476789143265435,-2.9583263200849124e-5,5.0877272768619633e-8,0.004768188657904238,-2.9537233992896767e-5,5.076341708753041e-8,0.004768439713838026,-2.9440208044921784e-5,5.0528530531352904e-8,0.004768626910754468,-2.9317193423369705e-5,5.0232483468787865e-8,0.004768741178477299,-2.9201099070795987e-5,4.9953931538163455e-8,0.004768786027644776,-2.9129513499080413e-5,4.978252629146496e-8,0.004768780936853772,-2.9138496012208616e-5,4.980400285879896e-8,0.0047687618966803106,-2.9253256552848995e-5,5.007792821246455e-8,0.004768776430770757,-2.94777909524039e-5,5.0613091054872876e-8,0.004768871988096792,-2.9788111750287958e-5,5.13515752527904e-8,0.004769080444607102,-3.013432954967566e-5,5.2173957718739495e-8,0.004769405284770623,-3.0453486715106665e-5,5.293006343952431e-8,0.004769818220406904,-3.0688999004594416e-5,5.3485350267577706e-8,0.00477026743433048,-3.080834002271513e-5,5.376298803352503e-8,0.004770693577738604,-3.081168201237658e-5,5.3764285152528835e-8,0.004771046589895863,-3.072935915638893e-5,5.3562407814568835e-8,0.004771297631526678,-3.0610999818195513e-5,5.3276237909610404e-8,0.004771443711692161,-3.051122681918304e-5,5.303613422492912e-8,0.004771505396973143,-3.047631542556714e-5,5.295212013490912e-8,0.004771519499267242,-3.0534710642808274e-5,5.3091406911566415e-8,0.004771529205577235,-3.0692816320908944e-5,5.346855026149306e-8,0.00477157418650815,-3.0936189653487376e-5,5.404847750248202e-8,0.004771682921045021,-3.123511651048176e-5,5.4759893534474465e-8,0.004771868687189363,-3.1552574400663744e-5,5.551430977654335e-8,0.004772129449714966,-3.1852223337845775e-5,5.622508871487745e-8,0.004772450721118148,-3.210457768014518e-5,5.682212037646142e-8,0.0047728099065585915,-3.2290564110685556e-5,5.726024480323222e-8,0.004773180754965365,-3.240266257319448e-5,5.752190311025016e-8,0.004773537085899212,-3.244442374528547e-5,5.761592957241243e-8,0.004773855633711976,-3.242925814099788e-5,5.757463774878549e-8,0.004774118342142201,-3.237905496994603e-5,5.7450525834272396e-8,0.004774314614586185,-3.23226647010406e-5,5.731264700502641e-8,0.004774443914942631,-3.2293765111534964e-5,5.724146147285952e-8,0.004774518652136438,-3.232717786829844e-5,5.731994509929363e-8,0.0047745663374796085,-3.245259117379958e-5,5.761852250142311e-8,0.004774628801644312,-3.268548015279706e-5,5.817341730913397e-8,0.004774755642402249,-3.301726301171104e-5,5.896332753649877e-8,0.004774990554962329,-3.340982109567715e-5,5.989660608993938e-8,0.004775353818295921,-3.3800784181514464e-5,6.082409330155231e-8,0.004775829687604098,-3.412186477507274e-5,6.158296115132251e-8,0.004776367868533359,-3.4323594773016025e-5,6.205572173406188e-8,0.004776900497853547,-3.439347655809735e-5,6.22134491263007e-8,0.004777365818310518,-3.435798439395554e-5,6.21203712505869e-8,0.004777726423271264,-3.426947678704886e-5,6.190234646575702e-8,0.004777975587727213,-3.418704078505039e-5,6.170085067616404e-8,0.004778133031878161,-3.416016772550692e-5,6.163388088984261e-8,0.004778235183303571,-3.42193194337018e-5,6.177353927618648e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json new file mode 100644 index 0000000000..2b68f8a113 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":27000,"numberOfSamples":426,"samples":[0.004778324486778677,-3.437325503603603e-5,6.213990841775234e-8,0.0047784403655323285,-3.4611193149972956e-5,6.270647293317436e-8,0.004778612794687001,-3.490776213298559e-5,6.34120907874662e-8,0.004778858592736182,-3.52292773450405e-5,6.41760174740733e-8,0.004779180332297561,-3.554033000747647e-5,6.491361305699471e-8,0.0047795676373042825,-3.580972313910667e-5,6.555048782196374e-8,0.004780000304382801,-3.601491695515349e-5,6.603309632804475e-8,0.00478045244087296,-3.61445559073166e-5,6.63347373647879e-8,0.004780896788498023,-3.619907152539314e-5,6.64569282050896e-8,0.004781308537182374,-3.6189716300693844e-5,6.642701476463283e-8,0.004781668287402928,-3.613665338138569e-5,6.62935418736394e-8,0.004781964263597514,-3.606664631235279e-5,6.612070094818705e-8,0.004782194088007322,-3.6010502207012165e-5,6.598220199376154e-8,0.004782366358377176,-3.600003307813221e-5,6.595397202033107e-8,0.004782501973157172,-3.6063967015481664e-5,6.610431957871602e-8,0.004782634428155468,-3.622211612037997e-5,6.647996630880908e-8,0.004782807312744113,-3.647777437681964e-5,6.708796154697767e-8,0.004783066725500625,-3.681018070253991e-5,6.787788985789277e-8,0.004783447527929692,-3.717158351927006e-5,6.873512189479286e-8,0.004783956543699519,-3.749495769285591e-5,6.949941757309266e-8,0.004784561694818515,-3.7714824470447004e-5,7.001467512930746e-8,0.00478519734376055,-3.779386901530488e-5,7.019245393058328e-8,0.004785787298279908,-3.773988586048272e-5,7.005238005891471e-8,0.004786273540716633,-3.760159745695435e-5,6.971198893123057e-8,0.004786634261718939,-3.7446681679021194e-5,6.93338948131939e-8,0.004786883955125812,-3.7336538281738074e-5,6.90651418882107e-8,0.004787060855944783,-3.731025026111713e-5,6.89987545085644e-8,0.004787211498019626,-3.738052485901743e-5,6.916423518663561e-8,0.004787378723491085,-3.753768633517913e-5,6.953747098677388e-8,0.004787594743852002,-3.775688736390837e-5,7.005827277528313e-8,0.004787878341866488,-3.8005421267547694e-5,7.064797754466723e-8,0.004788234677867704,-3.824887091042978e-5,7.122411974828502e-8,0.004788656578890198,-3.845602832364749e-5,7.171211724931977e-8,0.004789126866304347,-3.8602762874008655e-5,7.205447458736902e-8,0.004789621527438917,-3.867476505188969e-5,7.221733392634786e-8,0.004790113453092092,-3.866900598852055e-5,7.219394452663505e-8,0.004790576389242894,-3.859380569021363e-5,7.200475975629059e-8,0.004790988658217021,-3.846749668906106e-5,7.169414035802423e-8,0.004791336185455692,-3.831592746623132e-5,7.132428928460062e-8,0.004791614602286293,-3.8169236193829984e-5,7.096748066882624e-8,0.004791830442019499,-3.8058199395276177E-05,7.069730505809583e-8,0.00479200147328233,-3.8010251494226334e-5,7.057912997799612e-8,0.00479215608282581,-3.8045112493544786e-5,7.065962097547686e-8,0.004792331243570715,-3.816988109148568e-5,7.095502401154791e-8,0.00479256801539422,-3.837391090721481e-5,7.143902873254914e-8,0.004792903356231363,-3.8625101009650084e-5,7.203412021826269e-8,0.00479335809982377,-3.887092912081732e-5,7.261428947824125e-8,0.004793923998139211,-3.904832069801235e-5,7.302876037880577e-8,0.004794557121329183,-3.910366330394545e-5,7.314982344552248e-8,0.004795186187943556,-3.901641098772414e-5,7.292918982979318e-8,0.004795737032643518,-3.881216157437762e-5,7.242916797983955e-8,0.004796161501972789,-3.855411099464743e-5,7.180203477009054e-8,0.004796453566145229,-3.831658356890081e-5,7.122636889591443e-8,0.004796644767523727,-3.815714860499036e-5,7.084000022037542e-8,0.004796785949434881,-3.8101951194646106e-5,7.070485098911682e-8,0.004796928139441377,-3.8146598603855446e-5,7.080934608157665e-8,0.004797110480654036,-3.8265789851055167e-5,7.109188904690533e-8,0.004797355877127002,-3.8424311612934556e-5,7.146748579270787e-8,0.004797671612426517,-3.8585616852327366e-5,7.184835086333892e-8,0.004798052093481322,-3.8717282547673696e-5,7.215687639979793e-8,0.004798481982683185,-3.879416904832568e-5,7.233306811500727e-8,0.0047989392109531745,-3.880032466659669e-5,7.233903786826962e-8,0.004799398014519919,-3.873014716490181e-5,7.216177815700216e-8,0.004799832156249859,-3.858883316916818e-5,7.181423253686315e-8,0.004800218353251468,-3.839193072968296e-5,7.133417138730679e-8,0.004800539728226463,-3.816370201797726e-5,7.07801739212383e-8,0.004800788798428815,-3.7934150450836535e-5,7.022440790334248e-8,0.004800969422381577,-3.773493298607536e-5,6.97427737273164e-8,0.004801097307136082,-3.7594608437565975e-5,6.940350057998089e-8,0.004801198860837516,-3.753375575082618e-5,6.925545753494772e-8,0.004801308307002621,-3.7560557353341817e-5,6.931760143740602e-8,0.004801463061629263,-3.766739513003747e-5,6.957089748412672e-8,0.0048016973159992595,-3.7829085241195104e-5,6.995424232825527e-8,0.004802033897188718,-3.800393663211438e-5,7.036721161540528e-8,0.004802475381486049,-3.8139426649914707e-5,7.068384881196978e-8,0.004802997237534293,-3.8183940325160886e-5,7.078086051437349e-8,0.0048035477616877155,-3.810365748834886e-5,7.057799420498539e-8,0.004804059432364746,-3.789890582121566e-5,7.007704800926735e-8,0.004804471058177286,-3.76100617891968e-5,6.93758159734603e-8,0.004804751226949466,-3.730566920695092e-5,6.863938578566553e-8,0.0048049094711126545,-3.705654492532993e-5,6.803781398940207e-8,0.004804988697932718,-3.691017647857788e-5,6.768458911635844e-8,0.004805045208603211,-3.687881976068849e-5,6.760819207952647e-8,0.004805128912216125,-3.6943695478478026e-5,6.776250536534154e-8,0.004805272128763522,-3.706800766501402e-5,6.805842303113509e-8,0.0048054875443432725,-3.72102043926267e-5,6.839587172762585e-8,0.004805771578807736,-3.733305531184578e-5,6.868556225257375e-8,0.004806109373196501,-3.740819210339049e-5,6.885971585954908e-8,0.004806479267214914,-3.741763766075652e-5,6.887556737614801e-8,0.00480685624919262,-3.7353970688048305e-5,6.871568343569287e-8,0.00480721474503835,-3.722005965565962e-5,6.838732853486281e-8,0.004807531254878627,-3.70285788369557e-5,6.792132402469517e-8,0.004807787168840347,-3.680107359176237e-5,6.736978068548045e-8,0.0048079717908961535,-3.656606685754552e-5,6.680147748275388e-8,0.004808085124176199,-3.635572067784862e-5,6.629375291303479e-8,0.0048081395655390005,-3.6201003683608846e-5,6.59208353445968e-8,0.004808159619935799,-3.61259119702826e-5,6.573995300854134e-8,0.004808179052187587,-3.614182096799145e-5,6.577781399967254e-8,0.0048082354644977225,-3.624339663861216e-5,6.602088125342372e-8,0.004808363016906486,-3.640739698014146e-5,6.641263422122376e-8,0.004808584568140996,-3.659514206004428e-5,6.685967165663355e-8,0.004808904762436531,-3.6758854267688404e-5,6.724710168628325e-8,0.00480930579650223,-3.685155258136531e-5,6.746239580653564e-8,0.0048097478566896616,-3.683927126708737e-5,6.742470100953433e-8,0.004810176029910032,-3.6712847565078014e-5,6.711298772615927e-8,0.0048105340254307105,-3.649482817530326e-5,6.658239512536003e-8,0.004810781727205723,-3.62365842449442e-5,6.595705126594526e-8,0.004810909644980501,-3.6003671889103674e-5,6.539470778083783e-8,0.004810942478516832,-3.5853999525254e-5,6.503419712779448e-8,0.004810929054258762,-3.581891665158464e-5,6.495006857326439e-8,0.0048109239580987374,-3.589619723046781e-5,6.513597488805307e-8,0.0048109704482596355,-3.605632765339819e-5,6.552011162684835e-8,0.004811091479469972,-3.625616637154878e-5,6.599830095926331e-8,0.0048112894999106535,-3.645235261818129e-5,6.646628961790225e-8,0.004811551496979631,-3.661003899809157e-5,6.684062633294758e-8,0.004811855326073649,-3.6706519877171644e-5,6.706718834733222e-8,0.004812175008010524,-3.673147922115121e-5,6.71216166824625e-8,0.00481248442724685,-3.668578285980148e-5,6.70063528600365e-8,0.004812759857408077,-3.6580011791983614e-5,6.67471364140862e-8,0.004812982021847438,-3.643312892218514e-5,6.638984182107787e-8,0.004813138260380984,-3.627105788419161e-5,6.599705939990736e-8,0.004813224984539436,-3.612453739463318e-5,6.56428706687843e-8,0.004813250027706149,-3.6025539008764395e-5,6.540413556464342e-8,0.004813233901618618,-3.600194055235022e-5,6.53476083256435e-8,0.004813208641342787,-3.6070981482546236e-5,6.55141956879046e-8,0.004813213185891162,-3.623309956685937e-5,6.590422431888505e-8,0.0048132853329533815,-3.6468577247922494e-5,6.646953796652841e-8,0.00481345196089862,-3.6739232782648675e-5,6.711775543238068e-8,0.004813720524850067,-3.699585543676539e-5,6.773031548224511e-8,0.004814074915372328,-3.718990777229592e-5,6.819070851646075e-8,0.004814477519636433,-3.7286327454266165e-5,6.841524919716474e-8,0.004814877412507499,-3.727371265226798e-5,6.837744468682739e-8,0.004815222824200392,-3.71687674239285e-5,6.811846623591315e-8,0.004815474776181273,-3.70132472069625e-5,6.773954080785747e-8,0.0048156180606356,-3.686348225678969e-5,6.737652512252384e-8,0.004815665783668138,-3.677486127562191e-5,6.716247159200004e-8,0.004815655222405848,-3.678604759224073e-5,6.718971555136587e-8,0.004815636005506843,-3.690868613654817e-5,6.74853269118757e-8,0.004815655154643246,-3.712641741469069e-5,6.800902880734398e-8,0.0048157448657402905,-3.740272786418989e-5,6.86723392503097e-8,0.004815916982414414,-3.769330697538445e-5,6.936842915828944e-8,0.004816164398472773,-3.79575991566434e-5,6.999989097850887e-8,0.004816466732888395,-3.8166161444911164e-5,7.049630552378684e-8,0.004816796998892661,-3.830332545250297e-5,7.082047667647441e-8,0.004817127128752034,-3.8366574426466915e-5,7.096680517792435e-8,0.004817431716377734,-3.8364425072400815e-5,7.095614538559232e-8,0.00481769031494261,-3.831406952629976e-5,7.0830151666776e-8,0.004817889007363463,-3.823930287395324e-5,7.064632660863894e-8,0.004818021924002364,-3.81685964240486e-5,7.047337979987863e-8,0.004818092995005395,-3.8132677946559405e-5,7.038533637487357e-8,0.004818117609598462,-3.8160829347254704e-5,7.045252292139183e-8,0.0048181231757472446,-3.8275439457385075e-5,7.072838433001155e-8,0.004818147032808319,-3.848524220234855e-5,7.123323584537503e-8,0.004818230263552585,-3.877913888410908e-5,7.193954194116859e-8,0.004818407376247594,-3.9123929426344404e-5,7.276667979907158e-8,0.004818694517905241,-3.946919365675648e-5,7.359290131063591e-8,0.004819081226702352,-3.975987623674142e-5,7.428575222689352e-8,0.004819530473516512,-3.99528372131395e-5,7.474192447320143e-8,0.004819988207444505,-4.003071053802827e-5,7.492052207630327e-8,0.0048203989246250615,-4.000728896884301e-5,7.485582965376748e-8,0.004820721175466344,-3.99227597487728e-5,7.464556945092878e-8,0.004820937782280773,-3.9831445677784674e-5,7.442110541926777e-8,0.004821058434419171,-3.978679151255124e-5,7.431111753324506e-8,0.004821115078288102,-3.982808284365596e-5,7.44096350669423e-8,0.0048211522270188,-3.9972043873461636e-5,7.475600152324611e-8,0.004821215190839854,-4.021085655268812e-5,7.533039650683856e-8,0.004821339447086454,-4.051642323333889e-5,7.606436621672032e-8,0.004821543793180569,-4.084903826994292e-5,7.686186217830935e-8,0.004821828560137223,-4.11675330397259e-5,7.762370019061549e-8,0.00482217843219588,-4.143791773110746e-5,7.826830249781045e-8,0.004822568060222116,-4.163862375087511e-5,7.874420409142698e-8,0.004822968276370532,-4.176204785493435e-5,7.903364411314588e-8,0.0048233512962861805,-4.1813332547424874e-5,7.914952587908982e-8,0.004823694268337095,-4.180773689787612e-5,7.912902718095061e-8,0.004823981341733217,-4.176770959006623e-5,7.902653839294732e-8,0.004824204843306262,-4.172022434438517e-5,7.890725119874452e-8,0.004824366170721857,-4.169434217802275e-5,7.884127164436675e-8,0.0048244767088938545,-4.1718500655906905e-5,7.889702962949885e-8,0.004824558542278362,-4.1816828861910714e-5,7.9132317175072e-8,0.004824644046356498,-4.2004005130913916e-5,7.958186192139638e-8,0.004824772810595939,-4.227902970506275e-5,8.02424031086156e-8,0.004824984330163837,-4.261986981161869e-5,8.105999852427741e-8,0.0048253063789773926,-4.2982701249766916e-5,8.192845535537351e-8,0.004825742302472369,-4.330968240475467e-5,8.2708249557431e-8,0.004826263889668254,-4.354578668059347e-5,8.326714000557609e-8,0.004826816164327769,-4.365883275531775e-5,8.352838122738419e-8,0.004827334389224904,-4.3652515189787744e-5,8.350199407923697e-8,0.0048277656748831246,-4.356505406150206e-5,8.328128245698638e-8,0.00482808475136242,-4.3454640222978786e-5,8.300742298950006e-8,0.0048282979694060126,-4.337986978855226e-5,8.282198985286413e-8,0.004828436715004647,-4.3383781338829196e-5,8.28283556019412e-8,0.004828545452468338,-4.3485739353153795e-5,8.307227830943268e-8,0.004828669442671055,-4.368097256269977e-5,8.354112596095182e-8,0.004828845131978453,-4.394543747541324e-5,8.417594361299053e-8,0.004829094332003,-4.42434357404026e-5,8.489003053203357e-8,0.004829422222056958,-4.453594609792681e-5,8.558908046994333e-8,0.004829818689134246,-4.4788154520325726e-5,8.618928271603903e-8,0.004830262162433468,-4.497503014521456e-5,8.663067376891177e-8,0.004830724791376845,-4.508429236527066e-5,8.688419593273334e-8,0.004831177763389958,-4.5116784857431304e-5,8.695250414418422e-8,0.0048315958105310045,-4.50848066644472e-5,8.686584714086303e-8,0.004831960372320328,-4.50092207251216e-5,8.667501419792826e-8,0.004832261385448886,-4.4916181410082026e-5,8.644339426785272e-8,0.004832498085672877,-4.4834021165063305e-5,8.623945104183476e-8,0.004832679280731162,-4.479034989518507e-5,8.612971656792317e-8,0.004832823322580668,-4.480906858922817e-5,8.61715560370843e-8,0.004832957631610085,-4.490685000713927e-5,8.640463908636807e-8,0.0048331170643941285,-4.508874878499018e-5,8.684036295819687e-8,0.004833339822081472,-4.5343323574385394e-5,8.745021561454051e-8,0.004833659599911437,-4.5639123415037367e-5,8.815754137046817e-8,0.004834094074838598,-4.592604139982e-5,8.884105976880853e-8,0.004834633097564738,-4.6145321609871045e-5,8.935914049205118e-8,0.004835233759482804,-4.624855257649796e-5,8.959560230484134e-8,0.004835829415303181,-4.621862951064732e-5,8.951018080070509e-8,0.004836352230776127,-4.6080232054244594e-5,8.916366565204528e-8,0.0048367583349983355,-4.589150422661235e-5,8.869757625100208e-8,0.004837041591904654,-4.572106996194247e-5,8.827831621545146e-8,0.004837230223456968,-4.562385027524527e-5,8.803847379686291e-8,0.004837371762779652,-4.562714338453696e-5,8.804318221037112e-8,0.004837516153686477,-4.572936473719342e-5,8.828738354028514e-8,0.004837703559825233,-4.590705729913291e-5,8.871321255880796e-8,0.00483795842100459,-4.6124666861455577e-5,8.923395641208231e-8,0.0048382884248457615,-4.634354743735913e-5,8.975592732878355e-8,0.004838686449812278,-4.652885932931713e-5,9.019505444720963e-8,0.004839134059291325,-4.6654302346770156e-5,9.048817401084265e-8,0.00483960577414928,-4.670490119196287e-5,9.059963781515475e-8,0.004840073592346507,-4.6677962776577816e-5,9.052354945919353e-8,0.004840511260350432,-4.6582397345525144e-5,9.028205993460479e-8,0.004840897899231785,-4.643670396318439e-5,8.992042145949509e-8,0.004841220660300779,-4.626596989787898e-5,8.949965282921296e-8,0.004841476202205037,-4.6098371678003375e-5,8.908802385796573e-8,0.004841671077489782,-4.596168029442229e-5,8.875259106524241e-8,0.004841821307091204,-4.587997080031785e-5,8.855125453694367e-8,0.004841951292609372,-4.587045888723051e-5,8.852512147964674e-8,0.004842091964053706,-4.5940344193465115e-5,8.869088863412212e-8,0.004842277739297711,-4.6083631809650075e-5,8.903322182845005e-8,0.004842541493972926,-4.627838807084122e-5,8.949828371537751e-8,0.004842906839177331,-4.648600438823033e-5,8.999219477976895e-8,0.004843378264295116,-4.665522221668618e-5,9.039097681872455e-8,0.004843932381435793,-4.6733606371812626e-5,9.056834871587784e-8,0.004844516593310677,-4.6686017948423326e-5,9.044026966797496e-8,0.004845061297440305,-4.651301745333522e-5,9.000924058638993e-8,0.004845504427784852,-4.6256995746914114e-5,8.93789350952813e-8,0.004845816313409309,-4.598827316210438e-5,8.872033893206934e-8,0.004846009719910427,-4.5777184591241536e-5,8.820391758061302e-8,0.004846129972474116,-4.566860671556084e-5,8.793778061329034e-8,0.0048462338316596935,-4.567181248329228e-5,8.794324136066889e-8,0.004846370227429732,-4.576600567215227e-5,8.816863162886767e-8,0.0048465699861102345,-4.591338738919411e-5,8.852141023091782e-8,0.004846844129874208,-4.6071908146491065e-5,8.889930925992923e-8,0.004847187112262369,-4.6204138643279386e-5,8.921179902089594e-8,0.004847581703514996,-4.6282067896565305e-5,8.939150694429025e-8,0.004848003735402131,-4.6289076937789076e-5,8.939877769506586e-8,0.004848426256645651,-4.6220321509909585e-5,8.922246700657916e-8,0.004848823209408606,-4.608209856359733e-5,8.887836627853265e-8,0.004849172664527739,-4.58903562975773e-5,8.840557932192903e-8,0.0048494595475039315,-4.5668426291373705e-5,8.786099087737668e-8,0.0048496777143903665,-4.544400174802944e-5,8.731188333905859e-8,0.004849831083297237,-4.524549703219852e-5,8.682706510070045e-8,0.0048499335706496585,-4.5098191704872816e-5,8.646751496052212e-8,0.004850007839811998,-4.502058698290767e-5,8.627758023189437e-8,0.004850082971399407,-4.502123491055191e-5,8.627733894012528e-8,0.00485019108473835,-4.509627653317102e-5,8.645669590689583e-8,0.004850362866722029,-4.522799803925022e-5,8.677198648497969e-8,0.004850621906510939,-4.5384910987798636e-5,8.71463393443206e-8,0.004850977946640694,-4.552441540774088e-5,8.747633199424684e-8,0.00485142013660625,-4.5599608404899196e-5,8.764862963748815e-8,0.0048519131380055204,-4.557121093968653e-5,8.756886324253519e-8,0.004852400538216197,-4.5422915883702246e-5,8.719862480298039e-8,0.004852819081156075,-4.517383633579113e-5,8.658536065820687e-8,0.004853121273694221,-4.4878623615075926e-5,8.586240756352643e-8,0.004853295526580276,-4.461012521329985e-5,8.52067471895604e-8,0.004853370910340709,-4.443133874108983e-5,8.477085726904584e-8,0.004853402989489355,-4.437253239360528e-5,8.462723494908248e-8,0.004853450340338429,-4.4425573958519136e-5,8.475489986913897e-8,0.004853555566747505,-4.4554520782041413e-5,8.506551757055743e-8,0.004853737798332979,-4.471246662007726e-5,8.54446544743408e-8,0.00485399486389547,-4.485554721718429e-5,8.57858896141624e-8,0.004854309864890948,-4.495075979662197e-5,8.600964247263456e-8,0.00485465803028982,-4.497849770452831e-5,8.6069040778254e-8,0.00485501203358417,-4.493206747983682e-5,8.594850455856457e-8,0.00485534568228858,-4.481608527441229e-5,8.565974574854902e-8,0.004855636618776108,-4.464461889212684e-5,8.523726941055656e-8,0.004855868536584048,-4.4439150233652795e-5,8.473347207406128e-8,0.0048560330722339125,-4.422617519806977e-5,8.421282174134603e-8,0.004856131296365982,-4.4034205116743515e-5,8.374453608584602e-8,0.004856174444895931,-4.389004599187381e-5,8.339349699528367e-8,0.004856183359155293,-4.381463425405478e-5,8.321012126246628e-8,0.004856186304500604,-4.381908244061987e-5,8.322079181766202e-8,0.0048562152009108475,-4.3901681750652377e-5,8.342065742125228e-8,0.004856300584346492,-4.4046572784289005e-5,8.37705159905011e-8,0.004856465867596215,-4.422466583704176e-5,8.419918887759595e-8,0.004856721671702306,-4.439714167069116e-5,8.46121777512187e-8,0.004857061176355107,-4.452169624559631e-5,8.490696041970339e-8,0.004857457829840346,-4.456149265628484e-5,8.499476400738042e-8,0.00485786732258919,-4.4495941699599566e-5,8.482662558070934e-8,0.0048582357611451545,-4.433064375541632e-5,8.44172762033907e-8,0.004858514335168011,-4.4101716857274364e-5,8.385533918607352e-8,0.004858676764439197,-4.386931833014717e-5,8.32873433067394e-8,0.004858731337204977,-4.369916734671689e-5,8.287271910808891e-8,0.004858719353578516,-4.363884359422422e-5,8.272626402178683e-8,0.004858699079100403,-4.370113971203409e-5,8.287790899006382e-8,0.004858723862983524,-4.3863152455982114e-5,8.32708541147057e-8,0.004858826040038608,-4.4079389942548624e-5,8.379377681762571e-8,0.00485901243298159,-4.429951477497208e-5,8.432416681478761e-8,0.004859269289883763,-4.448198863401187e-5,8.476146671893096e-8,0.004859570954995191,-4.460045524794661e-5,8.504236029963514e-8,0.004859887795941977,-4.464428204949593e-5,8.514179476144743e-8,0.004860191622124641,-4.461614115330714e-5,8.506688634502332e-8,0.004860458789785439,-4.452889224023546e-5,8.48492775788132e-8,0.004860671945597038,-4.440278682495274e-5,8.453839235720549e-8,0.004860821241729715,-4.426305156165498e-5,8.419563819915824e-8,0.004860905419245433,-4.4137473414217795e-5,8.388856225560573e-8,0.004860932724572903,-4.405349915154474e-5,8.368376120026044e-8,0.004860921196088654,-4.403452027360999e-5,8.363778704610134e-8,0.004860897562807879,-4.4095524083173727e-5,8.378654746993848e-8,0.004860894101884112,-4.4238943389541296e-5,8.413526183041853e-8,0.0048609433408634845,-4.4451997534014956e-5,8.465211854456047e-8,0.004861071294856948,-4.470688491827875e-5,8.526891053304732e-8,0.004861290736213975,-4.4964675805282034e-5,8.589067031036176e-8,0.004861596402411748,-4.518269904195639e-5,8.641375721967553e-8,0.00486196380325942,-4.5324110154403064e-5,8.674916232953769e-8,0.0048623525742310615,-4.536760086172835e-5,8.684603658726279e-8,0.004862714420798966,-4.531482706925229e-5,8.670954354944289e-8,0.004863004623796651,-4.519303097661249e-5,8.640693812132527e-8,0.004863194723425296,-4.505076964306804e-5,8.605688184505726e-8,0.0048632825102846704,-4.494612337857568e-5,8.58005774809639e-8,0.004863294732214557,-4.492967036023607e-5,8.576036145889535e-8,0.004863279646140609,-4.50281209417457e-5,8.600009804265731e-8,0.004863291238192513,-4.5235972657266385e-5,8.650521261792416e-8,0.004863371875000471,-4.5519265521149334e-5,8.719217023603693e-8,0.004863541092600532,-4.5828989880735264e-5,8.794132978880563e-8,0.0048637941431590335,-4.611699389480268e-5,8.863570335939151e-8,0.004864108348633099,-4.6347665140982225e-5,8.918925654220265e-8,0.00486445241548828,-4.650270904600831e-5,8.95582979767788e-8,0.0048647945683711405,-4.658026758675538e-5,8.973908538631549e-8,0.004865107760312099,-4.659122884457311e-5,8.975868058567857e-8,0.004865372216069882,-4.655509521210519e-5,8.966485595145175e-8,0.004865576369720018,-4.649651590121914e-5,8.95177115085765e-8,0.004865717179949249,-4.644257685804242e-5,8.938315205316097e-8,0.004865800395588709,-4.642041241650156e-5,8.932709842864613e-8,0.004865840829426269,-4.6454505120622764e-5,8.940887781848442e-8,0.004865862139653059,-4.656317873149144e-5,8.967262906616372e-8,0.00486589520436499,-4.675433988431925e-5,9.013692766243163e-8,0.00486597415698355,-4.7021367342236717e-5,9.07848659725663e-8,0.004866129742279287,-4.7340909048838094e-5,9.15588685419079e-8,0.004866380968437412,-4.7674714425056845e-5,9.236536298478788e-8,0.004866727661902241,-4.797676853483728e-5,9.309231162293983e-8,0.004867147324684734,-4.8204752728047944e-5,9.363717379329655e-8,0.004867598631309231,-4.833237436364809e-5,9.393686151571851e-8,0.00486803127888161,-4.835807099496604e-5,9.398874966956663e-8,0.004868399226752945,-4.8306738611208255e-5,9.385460419655338e-8,0.0048686730911499205,-4.8223736532853264e-5,9.364566598366033e-8,0.004868847969216985,-4.816304071077976e-5,9.349354754634237e-8,0.0048689445715649204,-4.817300077705271e-5,9.351546946352385e-8,0.004869003383995121,-4.8283613222312364e-5,9.378341924616291e-8,0.004869073380924081,-4.849890638879081e-5,9.43059380023238e-8,0.0048691985524858695,-4.8796843985408144e-5,9.50282614209952e-8,0.004869406558763143,-4.9136789945777165e-5,9.585077822881535e-8,0.0048697031730176215,-4.947169627205198e-5,9.665881714263925e-8,0.004870073718317038,-4.9760441298475204e-5,9.735263346838005e-8,0.004870489786100687,-4.9976304469416066e-5,9.786787764373727e-8,0.004870917867218918,-5.010990840288102e-5,9.818254906626896e-8,0.004871326805083185,-5.016747905294032e-5,9.831256717497081e-8,0.004871692531052498,-5.016661596207553e-5,9.830134495028733e-8,0.004872000142688164,-5.0131652452055496e-5,9.820844897666668e-8,0.004872244237261572,-5.008976155652556e-5,9.810014547881626e-8,0.004872428488982316,-5.0068019068499616e-5,9.804229692860984e-8,0.004872565118915182,-5.0091037618228904e-5,9.809461966944169e-8,0.0048726744092658725,-5.017854275436142e-5,9.830475483883204e-8,0.004872783856378547,-5.034234927557437e-5,9.870086948139556e-8,0.00487292606572329,-5.058265619676878e-5,9.928265588588883e-8,0.0048731343054660824,-5.0884445663438285e-5,1.0001269113882292e-7,0.004873435129492483,-5.1215919899950034e-5,1.0081284930929764e-7,0.0048738390660209,-5.153170034332811e-5,1.015723136253397e-7,0.004874332805219763,-5.178266204412348e-5,1.0217165527867006e-7,0.004874877889632444,-5.1930947916088274e-5,1.0251939608479708e-7,0.004875419222669628,-5.196437324983978e-5,1.0258697726965176e-7,0.004875901546822159,-5.190279042143044e-5,1.0242405238386324e-7,0.004876286929160504,-5.179247995187442e-5,1.0214451691172397e-7,0.004876565554442809,-5.1691121210262656e-5,1.0188954108256096e-7,0.004876756238178176,-5.165032541885692e-5,1.0178476106510073e-7,0.004876898311797196,-5.170234825273362e-5,1.0190790776405611e-7,0.004877039291090606,-5.185415619525043e-5,1.0227463542533915e-7,0.004877222603926023,-5.20886997024062e-5,1.0284205932149231e-7,0.004877478233490123,-5.237148471881915e-5,1.0352515418660084e-7,0.004877817707882309,-5.2659998699574115e-5,1.0421992098956346e-7,0.004878233764547773,-5.291357147653802e-5,1.0482740644614637e-7,0.004878704103850562,-5.310151400306657e-5,1.0527339067231532e-7,0.0048791978095219886,-5.3207947753445196e-5,1.0551996632875121e-7,0.004879682486508378,-5.323275948828798e-5,1.055676880907866e-7,0.0048801303140343175,-5.318929968967715e-5,1.0544982140066945e-7,0.004880521970866183,-5.3100190207577814e-5,1.0522202640813102e-7,0.004880848294653186,-5.299267897057388e-5,1.0495098947741473e-7,0.0048811102117961675,-5.289457264711433e-5,1.0470451475918726e-7,0.004881317747189281,-5.2831136722353006e-5,1.045440020638691e-7,0.004881488756100408,-5.282274765893747e-5,1.0451875219165502e-7,0.004881647595748994,-5.2882791831743e-5,1.0466084584560046e-7,0.004881823499265498,-5.301535663747745e-5,1.0497951455693293e-7,0.004882047968987757,-5.321257874700818e-5,1.0545473459947656e-7,0.004882350207115018,-5.34522364381064e-5,1.0603152097503244e-7,0.004882749931583773,-5.3697319596594616e-5,1.0661911602920183e-7,0.004883248411975124,-5.390029444311228e-5,1.0710159048430002e-7,0.004883821223283848,-5.40142565780382e-5,1.0736509452548331e-7,0.004884418535029374,-5.400964585550486e-5,1.07338516263783e-7,0.004884977331862179,-5.388945231346987e-5,1.0703038492932809e-7,0.004885442982784979,-5.369291520334631e-5,1.0653767571805211e-7,0.0048857896031786405,-5.348285896525935e-5,1.060146273029446e-7,0.004886027899428079,-5.33225701704739e-5,1.0561598542362421e-7,0.004886197488183362,-5.3254761974328e-5,1.0544546399226637e-7,0.004886350220054461,-5.329186339414478e-5,1.0553216327134056e-7,0.00488653376420074,-5.341832436145469e-5,1.058366269418165e-7,0.004886780973520583,-5.3599972431194304e-5,1.0627419538425782e-7,0.004887105836022719,-5.379505921217329e-5,1.0674231474866518e-7,0.00488750437159898,-5.3963749688183614e-5,1.071437647657893e-7,0.004887958428542934,-5.4074868096297026e-5,1.074029666188478e-7,0.004888440866556042,-5.410987220354813e-5,1.0747544257958971e-7,0.004888921197063378,-5.406429862465683e-5,1.0735113586693954e-7,0.004889370931079509,-5.3946902121682926e-5,1.0705217492870693e-7,0.004889767913025726,-5.377692855867965e-5,1.0662613496775146e-7,0.004890099148351,-5.3580229669963764e-5,1.0613649899040003e-7,0.0048903619623596834,-5.3384985707783635e-5,1.0565218481282615e-7,0.004890563646224889,-5.321774155887791e-5,1.0523787065252472e-7,0.004890720050330306,-5.310023848256073e-5,1.0494629332969267e-7,0.00489085365033552,-5.304708763981897e-5,1.0481260896297154e-7,0.004890991351657461,-5.306401912048959e-5,1.0485014474108545e-7]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json new file mode 100644 index 0000000000..568a595986 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":3000,"numberOfSamples":1000,"samples":[-0.0016674126654346861,-5.729007527752374e-7,-1.4186514962201376e-8,-0.0016673064653587321,-6.734015165127343e-7,-1.4270276706700349e-8,-0.0016671184978181936,-7.942288639572809e-7,-1.4371055120518062e-8,-0.0016668581653082658,-8.937549802808163e-7,-1.4454094104781238e-8,-0.0016665462863460693,-9.416288807763305e-7,-1.4494058993362982e-8,-0.0016662092022260732,-9.201664606449159e-7,-1.4476216298494372e-8,-0.0016658745541862263,-8.237755484396502e-7,-1.4395945891238539e-8,-0.0016655683268689287,-6.578186550518726e-7,-1.4257765362438796e-8,-0.0016653124526036561,-4.3741842925891825e-7,-1.4074304544820363e-8,-0.0016651224530400707,-1.8607276082775895e-7,-1.3865132894139859e-8,-0.0016650049642489826,6.643303169026634e-8,-1.3655018765663274e-8,-0.0016649554928538104,2.8739437967418395e-7,-1.347113935991257e-8,-0.0016649572160637774,4.4604795424859426e-7,-1.3339056817593825e-8,-0.0016649817855313575,5.194876808583452e-7,-1.3277813795917761e-8,-0.0016649928181043465,4.985157505581373e-7,-1.329507262967021e-8,-0.00166495207648607,3.9179414860133283e-7,-1.3383654246342673e-8,-0.0016648274069321705,2.26664827416035e-7,-1.352084347660865e-8,-0.001664600739494372,4.5708357821865315e-8,-1.367124421905444e-8,-0.001664274219706894,-1.0088239670451744e-7,-1.3793127784445051e-8,-0.0016638726869829803,-1.6616023108150796e-7,-1.3847473701249546e-8,-0.0016634410124484337,-1.1869904209770958e-7,-1.3808176255662588e-8,-0.0016630354517974334,4.659577780072841e-8,-1.3671009811639623e-8,-0.001662709627560605,3.030262655914423e-7,-1.3458136463059741e-8,-0.0016624982880314673,5.958730436677693e-7,-1.3214963229037875e-8,-0.001662404794976831,8.568537842964569e-7,-1.2998163907749735e-8,-0.0016623988702162175,1.0254972177202318e-6,-1.2857973826241794e-8,-0.0016624271346917532,1.0685455003698803e-6,-1.2822084766277138e-8,-0.0016624319248438782,9.883600460942418e-7,-1.2888614390257493e-8,-0.001662369242835807,8.174787260993229e-7,-1.3030565315055226e-8,-0.0016622183938909184,6.041843871353809e-7,-1.3207794337616674e-8,-0.0016619818565370786,3.9717316279278375e-7,-1.3379782718210806e-8,-0.0016616789185444716,2.3502260822879676e-7,-1.3514435597222689e-8,-0.0016613377123989804,1.417265131744283e-7,-1.3591822041815075e-8,-0.0016609886089808544,1.2662367606576446e-7,-1.360423147824086e-8,-0.0016606598282278315,1.863922842656112e-7,-1.3554490273298172e-8,-0.0016603748199426104,3.0744517886406376e-7,-1.3453938412913645e-8,-0.0016601505255394024,4.680421085231016e-7,-1.3320649411749458e-8,-0.0016599957713533597,6.402384067973255e-7,-1.3177803860265977e-8,-0.0016599094977454972,7.922656339357963e-7,-1.3051723165875262e-8,-0.0016598791098382528,8.920717595398815e-7,-1.296895475612751e-8,-0.0016598798337515695,9.124839151887528e-7,-1.2952012505708826e-8,-0.001659876379622952,8.376861160842476e-7,-1.3014014454721298e-8,-0.0016598280484381447,6.695105801256583e-7,-1.3153456420237919e-8,-0.0016596973256014155,4.309782162426044e-7,-1.3351256087288848e-8,-0.001659460185844518,1.644717783767708e-7,-1.3572258355341262e-8,-0.0016591147270322442,-7.656124715275952e-8,-1.3772130406953462e-8,-0.0016586845140589572,-2.408327142852044e-7,-1.3908356700286018e-8,-0.0016582146152118225,-2.934361433791715e-7,-1.3952042824758485e-8,-0.0016577609941446497,-2.2641155822799227e-7,-1.3896646268225657e-8,-0.0016573762399432718,-6.21980795145008e-8,-1.3760786009222337e-8,-0.0016570956693766155,1.5125835864904947e-7,-1.3584155440668849e-8,-0.0016569277304044742,3.526938844470182e-7,-1.3417439166449944e-8,-0.0016568517179810498,4.838995413033776e-7,-1.3308801583491872e-8,-0.0016568239567060939,5.055051370474298e-7,-1.329085416886814e-8,-0.0016567907846579653,4.069873023778711e-7,-1.3372361772156796e-8,-0.0016567038867919353,2.0748592272561992e-7,-1.3537525963856996e-8,-0.001656532487673912,-5.231661404744325e-8,-1.375267653077842e-8,-0.0016562685745488837,-3.2332365832738283e-7,-1.3977143471321514e-8,-0.0016559247754694372,-5.607837026808751e-7,-1.4173848477561865e-8,-0.0016555275418913935,-7.327632792039998e-7,-1.4316343411791168e-8,-0.0016551092006448183,-8.233258722118555e-7,-1.4391445802169112e-8,-0.0016547013993568505,-8.316848376668471e-7,-1.439852456672699e-8,-0.0016543308264849162,-7.693391900307951e-7,-1.4347111821174578e-8,-0.0016540168884855639,-6.568154472154755e-7,-1.4254194224863743e-8,-0.00165377050241833,-5.208100635030763e-7,-1.4141844859881727e-8,-0.001653593196269087,-3.917048152325665e-7,-1.4035172614624135e-8,-0.001653476129350162,-3.0088888763530243e-7,-1.3960118899539777e-8,-0.0016533992421155022,-2.7714172882948965e-7,-1.3940479436687606e-8,-0.0016533313967630901,-3.4151069511884616e-7,-1.3993675666328718e-8,-0.001653232946576946,-5.008677652271779e-7,-1.4125420729844042e-8,-0.001653062183142646,-7.418000865678651e-7,-1.4324648124704472e-8,-0.0016527858361718897,-1.0281008249946432e-6,-1.456142157572885e-8,-0.0016523911376223348,-1.305464686483764e-6,-1.4790826634502255e-8,-0.0016518942603108112,-1.5146795210217696e-6,-1.4963914427081036e-8,-0.001651339688429203,-1.609920243457309e-6,-1.5042853245080335e-8,-0.0016507887609035258,-1.5746267527137686e-6,-1.501402985970417e-8,-0.0016503014049699613,-1.4275884845194972e-6,-1.4893009020259092e-8,-0.0016499186673924447,-1.2167625516751627e-6,-1.4719368976416159e-8,-0.0016496525262988243,-1.0042695210536724e-6,-1.4544312694847968e-8,-0.0016494852722868205,-8.488903215522008e-7,-1.4416272286595473e-8,-0.0016493768933366411,-7.916520763817829e-7,-1.4369068693422452e-8,-0.0016492770441696662,-8.477319335831267e-7,-1.441525088113211e-8,-0.0016491379089976894,-1.005586142802875e-6,-1.454535921366001e-8,-0.0016489247906258263,-1.2324077723442385e-6,-1.4732398295614608e-8,-0.0016486222435663186,-1.483745124523919e-6,-1.4939753931208416e-8,-0.0016482349077829455,-1.714387062746813e-6,-1.5130169934377415e-8,-0.0016477837047942081,-1.8876251196414704e-6,-1.5273388453025773e-8,-0.0016472992687706423,-1.9809318567924716e-6,-1.53508288088995e-8,-0.0016468148667739665,-1.987610693939075e-6,-1.5356941194346824e-8,-0.0016463605427636564,-1.915263460295526e-6,-1.529794271457019e-8,-0.0016459592556230336,-1.7824940981911972e-6,-1.5189110139549575e-8,-0.0016456248820582223,-1.6151699815473968e-6,-1.5051713360546717e-8,-0.0016453614347904178,-1.4430148462818047e-6,-1.4910218742385646e-8,-0.0016451628120618224,-1.2966201405178637e-6,-1.4789829372760213e-8,-0.0016450127057533186,-1.2044728826030512e-6,-1.4714032583746818e-8,-0.0016448847709624051,-1.1893868953393184e-6,-1.4701653351213367e-8,-0.0016447437874436506,-1.2638103881750775e-6,-1.4762980827432679e-8,-0.0016445491773054968,-1.4241708565546202e-6,-1.48951005064794e-8,-0.0016442623193067107,-1.645902905672155e-6,-1.5077791633897704e-8,-0.0016438578535539828,-1.8825890625995552e-6,-1.5272828105373147e-8,-0.0016433361724119703,-2.073293524915233e-6,-1.5430051194420875e-8,-0.0016427306855190664,-2.1595591992381907e-6,-1.5501400836018825e-8,-0.0016421028587470339,-2.107131410238427e-6,-1.545878784662949e-8,-0.0016415236596336047,-1.921503495197351e-6,-1.5306805835881395e-8,-0.0016410491716874508,-1.6475995048951014e-6,-1.508237666232406e-8,-0.0016407026930217476,-1.3532595827599134e-6,-1.4841150585489634e-8,-0.0016404710798181709,-1.1058220927750292e-6,-1.4638324030823384e-8,-0.0016403140434198668,-9.529880693486804e-7,-1.4513000663883932e-8,-0.0016401794241349037,-9.138189075949228e-7,-1.4480834585139251e-8,-0.001640017698453548,-9.79444485492997e-7,-1.4534599598191043e-8,-0.0016397921504842823,-1.1199629554508742e-6,-1.46498259445195e-8,-0.001639483962540219,-1.2938873374757163e-6,-1.4792536911725107e-8,-0.0016390929025693608,-1.4576102121358978e-6,-1.492701055511908e-8,-0.0016386346780947172,-1.5734220969873702e-6,-1.5022352898574618e-8,-0.0016381360741017184,-1.615194314249089e-6,-1.50571474431728e-8,-0.0016376290513289884,-1.5712506992188948e-6,-1.502179647791281e-8,-0.0016371449438908516,-1.4444928408342774e-6,-1.4918620999811586e-8,-0.0016367096648583616,-1.25031555175269e-6,-1.4760165902237422e-8,-0.0016363404739891797,-1.0131188796195411e-6,-1.4566365366279228e-8,-0.0016360443826047542,-7.623240043753878e-7,-1.4361298196704363e-8,-0.0016358178081207191,-5.285826195157557e-7,-1.4170084868955413e-8,-0.0016356469788772767,-3.4036970890659786e-7,-1.4016082203265821e-8,-0.001635508814606122,-2.207663722595964e-7,-1.3918227118982464e-8,-0.0016353723164385856,-1.840892669518823e-7,-1.3888261221685396e-8,-0.0016352009622329746,-2.3204470491520787e-7,-1.3927578205263703e-8,-0.0016349571713373055,-3.4963943026521634e-7,-1.4023883873503605e-8,-0.0016346099310555375,-5.023932688054426e-7,-1.4148931817790818e-8,-0.0016341454885156152,-6.3792299560969e-7,-1.4259849140121573e-8,-0.0016335782650784292,-6.955174267981529e-7,-1.4307009536395608e-8,-0.0016329555381133835,-6.248455078933967e-7,-1.4249353069369657e-8,-0.001632348566823429,-4.0811994916454653e-7,-1.4072462495238987e-8,-0.0016318292392897165,-7.307325909948915e-8,-1.3799065103672127e-8,-0.0016314426223732346,3.1411804635436726e-7,-1.348317422928833e-8,-0.0016311911484804568,6.740899862647185e-7,-1.3189486706427881e-8,-0.0016310385568320672,9.431757478148973e-7,-1.2969887537649966e-8,-0.0016309281956906096,1.0909595365989285e-6,-1.284917620325891e-8,-0.0016308035869936743,1.1218851358131656e-6,-1.2823744428951683e-8,-0.001630622539391083,1.0659851233981184e-6,-1.286910999649688e-8,-0.0016303628898681499,9.662126791094569e-7,-1.2950244535657924e-8,-0.0016300220532569065,8.673019924964457e-7,-1.303067628890683e-8,-0.0016296132995635643,8.078877149326865e-7,-1.3078931636879651e-8,-0.001629160810966706,8.157006448712503e-7,-1.3072446478192921e-8,-0.0016286945140845575,9.051596921306019e-7,-1.2999506114425888e-8,-0.001628245126395128,1.0769022975441644e-6,-1.285960415768863e-8,-0.0016278397306271277,1.3189544201936767e-6,-1.266248230864526e-8,-0.001627498165347806,1.6092434451098838e-6,-1.2426094284497363e-8,-0.0016272305284777825,1.919140067868813e-6,-1.2173739988352222e-8,-0.0016270360259148394,2.2175661941671596e-6,-1.1930728972988056e-8,-0.0016269031154630333,2.475096567993343e-6,-1.1721030329836182e-8,-0.0016268106690123906,2.6677037698851066e-6,-1.1564201830643506e-8,-0.0016267299509751117,2.7800877693262435e-6,-1.1472661493037969e-8,-0.0016266273869119789,2.808609891480967e-6,-1.1449301618478332e-8,-0.0016264683188791577,2.7638226285538478e-6,-1.148545475645509e-8,-0.001626222281076474,2.6722456015579204e-6,-1.1559486532781036e-8,-0.0016258702666007566,2.576093825543154e-6,-1.1637054006801947e-8,-0.001625413368763386,2.528652681956703e-6,-1.1674892793466553e-8,-0.0016248800163113045,2.5829769218688514e-6,-1.163000825805575e-8,-0.0016243264182511817,2.7739410660516134e-6,-1.147422855629942e-8,-0.001623824448257784,3.0994362029174313e-6,-1.1209399713251122e-8,-0.0016234371005962335,3.5125193005639037e-6,-1.0873674286989874e-8,-0.0016231924460283597,3.934280626806754e-6,-1.0531046713794774e-8,-0.0016230722116879442,4.2839261521980505e-6,-1.0247004462157263e-8,-0.0016230223920017024,4.509022315061528e-6,-1.0064052989792204e-8,-0.001622977701628644,4.599308318664541e-6,-9.990503166746648e-9,-0.0016228844735368534,4.580979504172208e-6,-1.0005062897292258e-8,-0.0016227124043607017,4.500425340947215e-6,-1.007001881606373e-8,-0.0016224552660553113,4.4079367639713336E-06,-1.0144494972609784e-8,-0.001622125516269599,4.346659224530802e-6,-1.0193467505461069e-8,-0.001621747326018003,4.347159211571133e-6,-1.0192193851439426e-8,-0.001621350394160166,4.425844840376646e-6,-1.0127472727933714e-8,-0.0016209651093993971,4.585398795260131e-6,-9.99724721593909e-9,-0.001620618755614523,4.816205832030953e-6,-9.809405621898151e-9,-0.0016203324293711152,5.0984795936064065e-6,-9.580037457445881e-9,-0.0016201185778446112,5.4050620808012625e-6,-9.331168050521922e-9,-0.0016199792751218015,5.7049341968223675e-6,-9.087925536625024e-9,-0.0016199055449921847,5.967355112173079e-6,-8.875191668941198e-9,-0.0016198780222882233,6.166231880713312e-6,-8.714053321567563e-9,-0.0016198689897785872,6.284171358720325e-6,-8.618507598772804e-9,-0.0016198456428020592,6.315766071306402e-6,-8.59280112903386e-9,-0.001619774385405621,6.26973000154361e-6,-8.629727496350617e-9,-0.0016196259296935819,6.169525357590731e-6,-8.710169915500509e-9,-0.0016193810015156772,6.052090182629365e-6,-8.804188184311565e-9,-0.0016190363271137104,5.963922429773775e-6,-8.87422587160706e-9,-0.0016186098081281857,5.953407381087274e-6,-8.88131796854117e-9,-0.0016181424573248472,6.058817784323751e-6,-8.794748910421731e-9,-0.0016176935536342239,6.293589642068541e-6,-8.60386918296675e-9,-0.001617326219104022,6.634329004002173e-6,-8.327694536227654e-9,-0.0016170853930605306,7.020289243504353e-6,-8.015286175478002e-9,-0.0016169778930223832,7.370415677596483e-6,-7.732028934152944e-9,-0.0016169675000937544,7.6131522800298654E-06,-7.535643904942126e-9,-0.0016169901136538418,7.713155380487486e-6,-7.454642010804234e-9,-0.0016169800837689205,7.679978347262525e-6,-7.481256003272846e-9,-0.0016168922572558102,7.556948303108508e-6,-7.580374851378752e-9,-0.0016167104555515727,7.400752728903742e-6,-7.706059646917471e-9,-0.0016164437683271215,7.26360821746386e-6,-7.816027752541982e-9,-0.0016161173530747812,7.183346466944154e-6,-7.879724076888564e-9,-0.0016157633104902577,7.180632707092512e-6,-7.880570755501255e-9,-0.0016154140207041772,7.260286490250837e-6,-7.814851788477083e-9,-0.001615098001463881,7.414069548772224e-6,-7.689396067402687e-9,-0.001614837378113596,7.623584166153096e-6,-7.519187049980965e-9,-0.0016146461104334338,7.863038966555796e-6,-7.325110558075486e-9,-0.0016145285922477045,8.102151822196889e-6,-7.13161729702838e-9,-0.0016144786655525626,8.30954750461279e-6,-6.963995681741373e-9,-0.0016144794389958994,8.456851025280304e-6,-6.8450772368244266e-9,-0.0016145044863076245,8.523247037034214e-6,-6.791555454796449e-9,-0.0016145208238440725,8.499790759989043e-6,-6.810504300559879e-9,-0.0016144936330299336,8.392510891781708e-6,-6.896885929710203e-9,-0.001614392228170857,8.223343280763281e-6,-7.032834909617165e-9,-0.0016141963521061268,8.028183732838383e-6,-7.189288356946133e-9,-0.0016139016436967962,7.851860839942969e-6,-7.330101133146092e-9,-0.0016135231106711163,7.740313336524296e-6,-7.4183830864822594e-9,-0.0016130954016894184,7.730606125699386e-6,-7.424519615650904e-9,-0.0016126685428214326,7.840105042654435e-6,-7.334806831697677e-9,-0.0016122981087462733,8.057474208610399e-6,-7.1585873366644e-9,-0.0016120303080747725,8.339676729142519e-6,-6.930579850289531e-9,-0.001611885615787256,8.619402313112867e-6,-6.704899178695777e-9,-0.0016118481928508355,8.824139607217275e-6,-6.539785116730204e-9,-0.001611868604140801,8.90107812285037e-6,-6.477642765675682e-9,-0.001611881154272387,8.835912981377337e-6,-6.529915716142489e-9,-0.0016118277460059921,8.655388821984905e-6,-6.674986610903632e-9,-0.001611675919713035,8.41338736769802e-6,-6.869352972909047e-9,-0.0016114237381993468,8.169993921702883e-6,-7.06452679210035e-9,-0.001611093177231819,7.974354515474472e-6,-7.220908293079042e-9,-0.0016107187721478148,7.856385780125358e-6,-7.3144902295771e-9,-0.0016103373933631776,7.826230747315016e-6,-7.33726541883732e-9,-0.0016099815773490676,7.877830737849756e-6,-7.294288237410739e-9,-0.0016096761674665666,7.993507370107692e-6,-7.199928950656389e-9,-0.0016094369744081014,8.147984768505116e-6,-7.074608444117655e-9,-0.0016092702451640983,8.311598200694667e-6,-6.942216930039938e-9,-0.00160917228355665,8.453152537768642e-6,-6.827830668858108e-9,-0.001609129179254943,8.543077992903146e-6,-6.755189047281374e-9,-0.0016091171262881026,8.557333011262786e-6,-6.743558851885236e-9,-0.0016091041391435737,8.481979668330493e-6,-6.804049103358642e-9,-0.0016090539129368906,8.317618601666572e-6,-6.9360391917084e-9,-0.0016089320065604345,8.082194724983374e-6,-7.1249350615802805e-9,-0.0016087135318696238,7.810443188597418e-6,-7.342654995567478e-9,-0.0016083904469439763,7.548814847622212e-6,-7.551773316743061e-9,-0.0016079759933311404,7.346151109873746e-6,-7.71307892483668e-9,-0.0016075042761180575,7.242056143792723e-6,-7.794939036152872e-9,-0.00160702430711951,7.255973870729432e-6,-7.782022387653911e-9,-0.0016065893832426634,7.380066935880531e-6,-7.680904798184895e-9,-0.0016062439692449664,7.578337494266571e-6,-7.520654677956422e-9,-0.0016060111996290365,7.793284040925081e-6,-7.347429731587253e-9,-0.001605884722251656,7.959699219668078e-6,-7.2134347447406345e-9,-0.0016058284903456366,8.02276170190471e-6,-7.162490523129645e-9,-0.001605786300256652,7.954794950983538e-6,-7.216659725347376e-9,-0.0016056989183379042,7.763856680531235e-6,-7.3693711382787e-9,-0.0016055223349501092,7.489910937153623e-6,-7.5884774454684e-9,-0.0016052394922760655,7.190282869697641e-6,-7.827929734487749e-9,-0.0016048613732839356,6.9214213509586415e-6,-8.042440056461898e-9,-0.0016044191014809085,6.724717813606781e-6,-8.19887721405118e-9,-0.0016039523942876091,6.620315668122966e-6,-8.281210552001504e-9,-0.0016034994404368291,6.608103489245576e-6,-8.289661775609236e-9,-0.00160309058100955,6.672612775449543e-6,-8.236730302719379e-9,-0.0016027456251598608,6.788717605477168e-6,-8.142605180973005e-9,-0.0016024734564696638,6.92643298585074e-6,-8.031328805630021e-9,-0.001602272562723833,7.054461000471735e-6,-7.927975303945096e-9,-0.0016021316395473646,7.1429733909865235e-6,-7.85643420942448e-9,-0.001602030096147785,7.166416618010949e-6,-7.837159326460504e-9,-0.0016019389325304322,7.106967943498292e-6,-7.884384590805072e-9,-0.001601822909317285,6.958748005321464e-6,-8.002733282683978e-9,-0.001601645025670833,6.732028706082511e-6,-8.183846196126166e-9,-0.0016013737843991493,6.455595568760507e-6,-8.404514185145453e-9,-0.0016009923060795966,6.174736476004758e-6,-8.628343547216521e-9,-0.0016005063926833,5.943025935706647e-6,-8.81240660038963e-9,-0.001599947436018963,5.80863970378304e-6,-8.918249717289788e-9,-0.0015993671346443959,5.799343297164342e-6,-8.923895711975885e-9,-0.001598824450917896,5.912206177088279e-6,-8.831981049727163e-9,-0.0015983691261643967,6.112691262219383e-6,-8.670353040535608e-9,-0.001598027750726865,6.34370842368762e-6,-8.484735141405814e-9,-0.001597796970333321,6.541210365541908e-6,-8.32624668865039e-9,-0.0015976453400901444,6.6511270032490696e-6,-8.237927113772566e-9,-0.0015975225826418882,6.642865882163979e-6,-8.244027233433758e-9,-0.0015973733172837778,6.5160674645092064e-6,-8.344671256899067e-9,-0.0015971514460371861,6.299134854850162e-6,-8.517063826659138e-9,-0.0015968312197721644,6.040236787256278e-6,-8.722695998097968e-9,-0.0015964119337554,5.793741677183589e-6,-8.918192024461737e-9,-0.0015959153524303371,5.606512708157547e-6,-9.066246268690955e-9,-0.0015953776009036073,5.508240931702783e-6,-9.143302312759663e-9,-0.0015948390145066778,5.5079279870896205e-6,-9.142302190616902e-9,-0.0015943353730508711,5.595937570596819e-6,-9.0710022424212708E-09,-0.0015938924112206762,5.749295724445448e-6,-8.947734194601513e-9,-0.0015935237022038362,5.937745603497693e-6,-8.796600268425784e-9,-0.0015932308952599915,6.128923308494835e-6,-8.643381449495809e-9,-0.0015930050349990598,6.292138592490837e-6,-8.512542405787741e-9,-0.0015928280496299403,6.401112560124816e-6,-8.425039499555748e-9,-0.001592674118163697,6.436402325511549e-6,-8.396358552439093e-9,-0.001592511242825915,6.388162226916735e-6,-8.434284847973138e-9,-0.0015923038548076277,6.259479463662382e-6,-8.536238644079333e-9,-0.0015920175360308354,6.069704190545227e-6,-8.686647143544019e-9,-0.0015916265581974022,5.855945053772369e-6,-8.855809836079169e-9,-0.0015911234432686942,5.66982094337028e-6,-9.002557749844637e-9,-0.0015905271902137126,5.566980643098267e-6,-9.082660120678599e-9,-0.0015898846649755427,5.5901058549402035e-6,-9.062364074658102e-9,-0.0015892607401442954,5.751420421663427e-6,-8.932240034166934e-9,-0.0015887185141690312,6.0241142294602755e-6,-8.713870498328418e-9,-0.0015882979764191441,6.3490168297115175e-6,-8.454426383873467e-9,-0.0015880035039804617,6.654182728757788e-6,-8.211064945180594e-9,-0.0015878052699886624,6.877775058584288e-6,-8.032786882775957e-9,-0.0015876517590710897,6.984489838970192e-6,-7.947450754328946e-9,-0.0015874863779336544,6.971221701182685e-6,-7.957325293941682e-9,-0.0015872619917445506,6.863185748489404e-6,-8.042215733171648e-9,-0.0015869502414554443,6.704200258300083e-6,-8.167230467721707e-9,-0.0015865450265327885,6.544861833301743e-6,-8.292209810873044e-9,-0.001586060881771174,6.431419708027262e-6,-8.380562643969391e-9,-0.0015855275390838218,6.397223103243651e-6,-8.4060105625722e-9,-0.001584982293378186,6.457920516330214e-6,-8.356321717507075e-9,-0.0015844620349776742,6.61081898948137e-6,-8.233749425801078e-9,-0.0015839966677754043,6.837813403661317e-6,-8.052680242552925e-9,-0.0015836049744388627,7.110512974486875e-6,-7.83558877254055e-9,-0.00158329313272495,7.39599782801762e-6,-7.60852007937778e-9,-0.0015830553572955281,7.661943418484884e-6,-7.397063210929995e-9,-0.0015828757453601038,7.88048537908479e-6,-7.223288825216026e-9,-0.0015827305073950087,8.030921094971425e-6,-7.103576255489422e-9,-0.0015825902239223386,8.10175707948008e-6,-7.046953362750228e-9,-0.0015824222470464458,8.09261347207407e-6,-7.0535751904136625e-9,-0.0015821938020142208,8.016239439311893e-6,-7.1131587433406575e-9,-0.001581876678930113,7.90023529461386e-6,-7.203688583790658e-9,-0.0015814541506088944,7.786937005316729e-6,-7.291589958387156e-9,-0.001580929437716428,7.72886735500687e-6,-7.33539011103742e-9,-0.001580332627237802,7.777305469592599e-6,-7.294769075619663e-9,-0.0015797203731629178,7.964409090283794e-6,-7.144630568893987e-9,-0.0015791630814620142,8.285391603077017e-6,-6.889058321940481e-9,-0.001578720878001717,8.692298812053108e-6,-6.566101724486824e-9,-0.001578419502984907,9.10747486170557e-6,-6.2370916464480965e-9,-0.0015782405062512823,9.452091527792786e-6,-5.9641611304561455e-9,-0.0015781312909732138,9.674079549613374e-6,-5.7882606428250385e-9,-0.001578027360075597,9.761402781761969e-6,-5.718703551331627e-9,-0.0015778737449317608,9.738155742011253e-6,-5.736256424581671e-9,-0.0015776373992268053,9.650582774239132e-6,-5.804222309092312e-9,-0.0015773098917586672,9.551555633876995e-6,-5.88077278945436e-9,-0.0015769037319662415,9.488450878456881e-6,-5.928572703455147e-9,-0.001576445875891479,9.49569390768316e-6,-5.920653078048749e-9,-0.001575970674530697,9.591327497139855e-6,-5.84304192231517e-9,-0.0015755133171369835,9.77658865659438e-6,-5.694997471322311e-9,-0.0015751042615903047,1.003778163139329e-5,-5.487458624638412e-9,-0.001574765041689377,1.0349895109118027e-5,-5.240176643150512e-9,-0.0015745057554236149,1.0681318357532525e-5,-4.978030419643896e-9,-0.001574324361526077,1.0998934195309128e-5,-4.727059345412328e-9,-0.0015742076584801335,1.1272847997949395e-5,-4.510760254880358e-9,-0.0015741334933916324,1.148015300643822e-5,-4.347106597166391e-9,-0.0015740736145208995,1.1607546540740536e-5,-4.2464524410951475e-9,-0.0015739967905234456,1.165297766004052e-5,-4.210215818202505e-9,-0.0015738721019847755,1.1626573124438477e-5,-4.230176567081147e-9,-0.0015736725816667494,1.1550994953670337e-5,-4.288272760115865e-9,-0.0015733796828682138,1.1460984868635478e-5,-4.357060355334619e-9,-0.0015729888863822469,1.1400977627530216e-5,-4.401668546947189e-9,-0.001572515654131937,1.1418948321355508e-5,-4.38465144129614e-9,-0.0015719991378984194,1.155499016771094e-5,-4.27489553861985e-9,-0.0015714991590845522,1.1825387317786e-5,-4.059992614526739e-9,-0.0015710820407434478,1.2207971645261938e-5,-3.757587705347629e-9,-0.00157079647604091,1.2639630181296142e-5,-3.4172617851035963e-9,-0.0015706506457699233,1.3034205729014649e-5,-3.106531606911105e-9,-0.0015706061696304065,1.3315507185698884e-5,-2.885049906609442e-9,-0.0015705947849098492,1.3446774868260129e-5,-2.7815199812259615e-9,-0.0015705471798354855,1.3439686701807493e-5,-2.7865797392088607e-9,-0.0015704165589056223,1.3341690442592115e-5,-2.8627232184856177e-9,-0.0015701872847721412,1.3213818456770147e-5,-2.9617956699222407e-9,-0.0015698706765883304,1.3111683729022345e-5,-3.0400379076245207e-9,-0.0015694951802119525,1.3074916344619818e-5,-3.0664473087197053e-9,-0.0015690965559719964,1.3124045477720016e-5,-3.02518922812497E-09,-0.0015687104237655423,1.3261776187223445e-5,-2.914483963298332e-9,-0.0015683672849147719,1.3476135614623932e-5,-2.744017121960997e-9,-0.001568089331561201,1.3744221248213585e-5,-2.531925583923272e-9,-0.001567888481635352,1.4036199389495978e-5,-2.301652902586154e-9,-0.0015677654444036897,1.431949385617295e-5,-2.0787019259425203e-9,-0.001567709854690696,1.4563082634763757e-5,-1.8873090716874538e-9,-0.0015677016010537767,1.474164561397543e-5,-1.7472081474154697e-9,-0.0015677133377832947,1.4839081201440235e-5,-1.6708576042155112e-9,-0.0015677139033290711,1.4850945784761677e-5,-1.6615071481920558e-9,-0.001567672273456403,1.4785614343760266e-5,-1.712298071717079e-9,-0.001567561728035762,1.4664077909571058e-5,-1.8064872373507266e-9,-0.001567363964362006,1.4518342278869283e-5,-1.9188087740274477e-9,-0.0015670730416101715,1.4388371092908044e-5,-2.017975036911366e-9,-0.001566699009351379,1.4317124795163991e-5,-2.0706086887569183e-9,-0.001566270342050259,1.434288706438812e-5,-2.0471994116831762e-9,-0.0015658331609196012,1.4488670512990482e-5,-1.9302484376469083e-9,-0.0015654445000836176,1.4750408147840926e-5,-1.72331580198987e-9,-0.0015651576376926135,1.5088818242514955e-5,-1.4572399696723894e-9,-0.0015650016611725502,1.543273520838367e-5,-1.1875289074112136e-9,-0.0015649646525930018,1.5699315031914638e-5,-9.786981777112633e-10,-0.0015649932080395524,1.5825615668091956e-5,-8.797288461446118e-10,-0.0015650127561441629,1.5794360168681763e-5,-9.039460652179229e-10,-0.0015649578766231919,1.5637909598140213e-5,-1.0258340424130335e-9,-0.0015647946888691952,1.5419919015121727e-5,-1.1953572908828253e-9,-0.001564525408102832,1.5208671664966406e-5,-1.3589165068917122e-9,-0.0015641786040441487,1.5056893076463547e-5,-1.4752664574075088e-9,-0.00156379486909857,1.4993534545273575e-5,-1.521981552315444e-9,-0.0015634150399108117,1.5024788854757072e-5,-1.4945831313107964e-9,-0.0015630731490801214,1.5139317110787819e-5,-1.4023153307767539e-9,-0.0015627932503844573,1.5314097884522007e-5,-1.2634546568637839e-9,-0.0015625884467632353,1.5519419283943223e-5,-1.1013546330723007e-9,-0.001562460875346721,1.5722949233932406e-5,-9.412785609553453e-10,-0.0015624021479970563,1.5893311969822037e-5,-8.076525173200512e-10,-0.0015623942663999986,1.600355815982286e-5,-7.213957276926135e-10,-0.0015624113087739449,1.603464562664121e-5,-6.972120092446669e-10,-0.0015624222244725121,1.5978599480086515e-5,-7.411073308205331e-10,-0.0015623947894483653,1.5840685366149302e-5,-8.486840929629714e-10,-0.0015623003825704094,1.563995164582476e-5,-1.0047498832725248e-9,-0.00156211896716867,1.5407677934949402e-5,-1.1846143530044873e-9,-0.0015618434715127026,1.5183522199556461e-5,-1.3572122413585078e-9,-0.001561482731818114,1.5009579708722523e-5,-1.4898312300154014e-9,-0.0015610623229379093,1.492287455651844e-5,-1.553978673492256e-9,-0.0015606225925568506,1.4946887881331915e-5,-1.5318866836714567e-9,-0.001560212971251659,1.5083203136375069e-5,-1.422837639342225e-9,-0.0015598818401117295,1.530556706953706e-5,-1.2475983890907835e-9,-0.0015596626235708532,1.5560011265301256e-5,-1.0482226412439358e-9,-0.001559559627593272,1.577486934926789e-5,-8.802955933378288e-10,-0.0015595405570984476,1.5881538273988095e-5,-7.9692043926817e-10,-0.0015595430360532403,1.5839771966023374e-5,-8.291538101517867e-10,-0.0015594959955338393,1.5654660779172335e-5,-9.72801001056983e-10,-0.0015593463001946208,1.5374391353418983e-5,-1.190114515735307e-9,-0.0015590762116928854,1.5069709060576866e-5,-1.4258030022227316e-9,-0.001558703847788798,1.4807611900845037e-5,-1.6276153266680996e-9,-0.0015582703547364113,1.4632787290015397e-5,-1.7608768873779355e-9,-0.00155782354477752,1.4561962806159921e-5,-1.812864234105201e-9,-0.0015574055106049006,1.4587994709651823e-5,-1.7895075593158592e-9,-0.0015570463687551211,1.4687835068240819e-5,-1.7090593224017948e-9,-0.0015567627265973315,1.4830172836249719e-5,-1.5960694700656643e-9,-0.0015565585721585488,1.4981143223910987e-5,-1.4769346528028385e-9,-0.0015564268779924705,1.5108248878273527e-5,-1.3768878228299211e-9,-0.001556351184307716,1.5183283689987646e-5,-1.3177718726983572e-9,-0.0015563071846080817,1.518499355836712e-5,-1.3159931882651027e-9,-0.001556264759061091,1.5101840586844419e-5,-1.3803631127402186e-9,-0.0015561910289953722,1.493467497760959e-5,-1.5099983155967233e-9,-0.001556054769142461,1.4698525876528096e-5,-1.692928407678446e-9,-0.0015558319325716652,1.4422419435365395e-5,-1.9062865699394374e-9,-0.00155551134062967,1.4146276673803998e-5,-2.118820791349384e-9,-0.0015550990200105716,1.3914554215767493e-5,-2.2959501362179986e-9,-0.0015546195256492723,1.376733680242155e-5,-2.406755127218841e-9,-0.001554113115567492,1.3730683214261952e-5,-2.4314473667369036e-9,-0.001553628664032215,1.3808584379673326e-5,-2.367474165297039e-9,-0.0015532132442453931,1.3978822784027847e-5,-2.232532482775318e-9,-0.0015529002123789554,1.4194626461009348e-5,-2.063117347756414e-9,-0.0015526985302697924,1.439325938164884e-5,-1.907804521574992e-9,-0.0015525869004329388,1.4511149461068737e-5,-1.8155962076796212e-9,-0.0015525163561113226,1.4502518791870292e-5,-1.821618126894051e-9,-0.0015524229966605255,1.4355340596169604e-5,-1.934861536785402e-9,-0.0015522480046320417,1.4097085782131253e-5,-2.1337720574238567e-9,-0.0015519570630758844,1.3785964147240603e-5,-2.373056019133126e-9,-0.0015515502090884452,1.3490805690072358e-5,-2.5993134735632945e-9,-0.0015510581583219735,1.3269136012428824e-5,-2.7680732374480753e-9,-0.0015505287216183647,1.3153018247135854e-5,-2.8547493909096727e-9,-0.0015500111337097319,1.3146302784594268e-5,-2.8566824400189927e-9,-0.0015495446374244918,1.3230505435768768e-5,-2.788469542937826e-9,-0.001549153320614908,1.3373991814169866e-5,-2.6747740927702085e-9,-0.0015488458317407083,1.3540368315253085e-5,-2.543818936185515e-9,-0.0015486175736199625,1.3694424215569561e-5,-2.422826603784886e-9,-0.0015484534953238353,1.3805782453544893e-5,-2.335244042665086e-9,-0.0015483305799586244,1.3851194736815257e-5,-2.2989915178837034e-9,-0.0015482199989999771,1.3816427644258473e-5,-2.3249912029369815e-9,-0.001548089463216438,1.369826171317471e-5,-2.41558809311908e-9,-0.0015479064843226234,1.3506495043573231e-5,-2.5629790637511724e-9,-0.0015476430650823826,1.3265142070830212e-5,-2.748308110889761e-9,-0.0015472817047777522,1.3011433188873347e-5,-2.9425170054115522e-9,-0.0015468215378123499,1.2791153939947237e-5,-3.1100615838046316e-9,-0.0015462823008519895,1.264978126784404e-5,-3.2158634430605283e-9,-0.0015457034820694632,1.2620793299373853e-5,-3.23437207800151e-9,-0.0015451371557708795,1.271461979911524e-5,-3.1580199349164043e-9,-0.0015446354809309358,1.2912598720449401e-5,-3.001718234269623e-9,-0.0015442364302565255,1.3169086681883902e-5,-2.801040276875315e-9,-0.0015439524938185769,1.342193894043896e-5,-2.604019123633512e-9,-0.0015437662068975597,1.3608488064402962e-5,-2.4588197532468753e-9,-0.0015436340713854192,1.3682357584886e-5,-2.4008622169249547e-9,-0.001543497962354699,1.3626252232787606e-5,-2.4430807619033354e-9,-0.00154330101649021,1.3456844397511336e-5,-2.572263294225788e-9,-0.0015430034083978895,1.3219882326718478e-5,-2.7529027871083723e-9,-0.0015425929181858147,1.2976711436722279e-5,-2.937645646025132e-9,-0.0015420866882192013,1.278670592403656e-5,-3.080856310691857e-9,-0.00154152398796979,1.2691851204048305e-5,-3.1504613502583297e-9,-0.001540953480044075,1.2708519035282108e-5,-3.1341863973903237e-9,-0.0015404202334010281,1.2827867903263539e-5,-3.039126457904035e-9,-0.0015399566733843208,1.302256759212801e-5,-2.886485245993735e-9,-0.0015395788942260255,1.325586308652444e-5,-2.7045866919813093e-9,-0.0015392872954454852,1.3489692472678766e-5,-2.5226746116671805e-9,-0.0015390695180788213,1.3690362719305401e-5,-2.3666060094382767e-9,-0.0015389039426561332,1.3831829101966165e-5,-2.2563601055744896e-9,-0.0015387628159656927,1.3897428531583792e-5,-2.20469239650718e-9,-0.0015386148936828994,1.388103058929039e-5,-2.2162086122068876e-9,-0.0015384280799308537,1.3788188762037226e-5,-2.28644706084773e-9,-0.0015381727896268602,1.3637252599749298e-5,-2.4010335015984904e-9,-0.00153782662638598,1.3459685165893791e-5,-2.5355047694054314e-9,-0.0015373803606947806,1.3298103454663454e-5,-2.6569224773298658e-9,-0.0015368439449366434,1.3200271754010526e-5,-2.7285944715443808e-9,-0.0015362497069414172,1.3208268582747388e-5,-2.7184455758695063e-9,-0.0015356491281297727,1.3344727868614513e-5,-2.609535624585385e-9,-0.0015351012857119798,1.3601376685119754e-5,-2.4087144532296773e-9,-0.001534655333305587,1.3936432395579682e-5,-2.1484399499017215e-9,-0.0015343338675460306,1.4284442308400234e-5,-1.8790986065537597e-9,-0.001534124900712501,1.4575769360907748e-5,-1.6540268609434805e-9,-0.001533986063403117,1.4757650849527079e-5,-1.5134089313619608e-9,-0.0015338585577077514,1.4808523097929115e-5,-1.4733758294952858e-9,-0.001533684646016743,1.4741520547899112e-5,-1.5234227094639102e-9,-0.001533422629589494,1.4597945041350879e-5,-1.6315309243635806e-9,-0.0015330556633583313,1.4434363097761433e-5,-1.7541719141681908e-9,-0.0015325932941699795,1.43077142414427e-5,-1.8477863331828831e-9,-0.0015320665277323265,1.426230754346835e-5,-1.878725396982042e-9,-0.0015315185461519663,1.4321473573738102e-5,-1.8295328556822685e-9,-0.001530993934766879,1.4485180350014558e-5,-1.7006180859558923e-9,-0.001530529287402824,1.4733246178698408e-5,-1.5076755247691595e-9,-0.0015301472235543963,1.5032273750256648e-5,-1.2763383865137975e-9,-0.001529854434526647,1.5343751423442615e-5,-1.0360201232972493e-9,-0.0015296430494533845,1.5631173065596047e-5,-8.145421075795626e-10,-0.0015294939224596445,1.5865044960165455e-5,-6.343581941131169e-10,-0.0015293804665335667,1.6025681201232713e-5,-5.104211518947967e-10,-0.0015292721800424954,1.6104406698012555e-5,-4.492264661427397e-10,-0.0015291376898846022,1.610398838942385e-5,-4.484456737093128e-10,-0.0015289476443276155,1.6038826092304203e-5,-4.967851368558057e-10,-0.0015286780300962212,1.5934920116292352e-5,-5.7407767303816e-10,-0.0015283144581671828,1.5828995706173513e-5,-6.520649957069123e-10,-0.001527857433495814,1.5765420962771622e-5,-6.968641554284709e-10,-0.0015273273599870595,1.578919190086431e-5,-6.74377333345776e-10,-0.001526766307082904,1.5934197950098757e-5,-5.592021348606761e-10,-0.0015262325434225242,1.6208917896855537e-5,-3.454009983392546e-10,-0.0015257856016340661,1.6585900155219326e-5,-5.434009904032178e-11,-0.001525465322369261,1.7003376453317625e-5,2.6667254099619e-10,-0.0015252747715500247,1.738282006332563e-5,5.577945753003107e-10,-0.0015251774516648478,1.765614484759572e-5,7.673293029466002e-10,-0.0015251111941016761,1.778888314628154e-5,8.693422948032573e-10,-0.0015250108675460873,1.7788373699605145e-5,8.698678813149482e-10,-0.0015248284104435656,1.769597096092772e-5,8.008933904221264e-10,-0.001524543138352943,1.7570342537972436e-5,7.074837082249667e-10,-0.001524161958697962,1.747014596631279e-5,6.344307222398109e-10,-0.00152371290844506,1.7441141511317046e-5,6.163780060845438e-10,-0.001523235851785127,1.7509215448337496e-5,6.72585413499027e-10,-0.0015227730669315363,1.7678694633934106e-5,8.058200670495614e-10,-0.0015223612736943114,1.7934688640477055e-5,1.0043203383510617e-9,-0.0015220259505717274,1.82482101335355e-5,1.2458005545171251e-9,-0.0015217783771147274,1.858278154644696e-5,1.502482588468059e-9,-0.0015216153779278,1.8901176203271382e-5,1.7461563926156706e-9,-0.001521521286606779,1.9171184850908933e-5,1.9524855806838318e-9,-0.0015214713531420381,1.936973086375099e-5,2.1040967574472464e-9,-0.0015214357043695024,1.9485117407839795e-5,2.1923000740043392e-9,-0.001521383137404215,1.9517692447771478e-5,2.217627952739704e-9,-0.0015212844821984616,1.9479511468266107e-5,2.1895835175049778e-9,-0.0015211156742934025,1.939342867657197e-5,2.1258913140746853e-9,-0.0015208608563400331,1.9291673965034527e-5,2.0512979780619082e-9,-0.001520515854495682,1.9213505125941906e-5,1.995657851135691e-9,-0.0015200919884612346,1.9200901897949216e-5,1.9905876211772794e-9,-0.0015196190517206686,1.9290978781291798e-5,2.0637415938522103e-9,-0.001519144803733725,1.9504713196396947e-5,2.2304122471037216e-9,-0.001518727462232059,1.9834280591372538e-5,2.484141135478913e-9,-0.0015184192950395239,2.0235367514319987e-5,2.7910634415758664e-9,-0.0015182452262433325,2.0633099952696904e-5,3.0944338572009063e-9,-0.0015181877354138221,2.094520859440517e-5,3.3320858875781925e-9,-0.0015181899043198905,2.1113683302729238e-5,3.4603240998125803e-9,-0.0015181776587180065,2.1127106051478163e-5,3.4708520228233463e-9,-0.0015180885131474918,2.1021030404410242e-5,3.391091106264991e-9,-0.0015178909438639508,2.0859213783789e-5,3.2698730446144373e-9,-0.0015175877233646422,2.0709171992738493e-5,3.1587082248994756e-9,-0.0015172073558787026,2.0623842481949752e-5,3.0977101310951086e-9,-0.0015167914191089214,2.063317965218757e-5,3.1092048210673748e-9,-0.0015163832619076432,2.0743705953134367e-5,3.1975368071754336e-9,-0.0015160200669873704,2.0942485608743105e-5,3.3523023756736195e-9,-0.0015157281682930876,2.1202788343014117e-5,3.5528268410564887e-9,-0.0015155208240000008,2.1490072546112796e-5,3.7727761422749006e-9,-0.0015153978329193042,2.1767775800983042e-5,3.984512020996164e-9,-0.0015153466823297202,2.2002561279956053e-5,4.162975427671088e-9,-0.0015153449752000046,2.2168662578104594e-5,4.2888951154383054e-9,-0.0015153638372301824,2.225102728825126e-5,4.351136659371982e-9,-0.001515371889179471,2.2246993016359994e-5,4.3479874066622305e-9,-0.0015153392563930425,2.216641597337143e-5,4.287271959233951e-9,-0.001515241213541778,2.2030490914074532e-5,4.1854284582402095e-9,-0.0015150613338686283,2.1869574703626888e-5,4.065761994294679e-9,-0.0015147941551076818,2.1720147110229897e-5,3.956004055400928e-9,-0.0015144474064621842,2.1620798118500058e-5,3.885163322724043e-9,-0.0015140436280418352,2.160676344805545e-5,3.879380610579873e-9,-0.0015136202312386242,2.1702388771875214e-5,3.956357484574458e-9,-0.001513226034844196,2.191177437422689e-5,4.1185205826258535e-9,-0.0015129120080209172,2.221001677650227e-5,4.346649078495528e-9,-0.001512715541928629,2.254041791686142e-5,4.597890678761155e-9,-0.001512642323751254,2.282451516198137e-5,4.8132638236435735e-9,-0.001512656112032841,2.2987226657755368e-5,4.936448725917021e-9,-0.0015126871339836351,2.2987814401065566e-5,4.937036368579893e-9,-0.0015126589666124984,2.283832816494508e-5,4.824488181507253e-9,-0.0015125191642603442,2.2596939508072832e-5,4.643164810446097e-9,-0.001512255771697461,2.234135481963672e-5,4.452159952580022e-9,-0.0015118937115124553,2.2139907404171068e-5,4.303255975411923e-9,-0.00151147883232571,2.203443093930126e-5,4.227845582902372e-9,-0.001511060993239207,2.2037202305538674e-5,4.234671953457867e-9,-0.0015106824975225093,2.213657085421608e-5,4.314282868663287e-9,-0.0015103725536317254,2.2305348342064856e-5,4.4455958177446396e-9,-0.001510145935250769,2.2508543748264166e-5,4.601885979825811e-9,-0.0015100037941396729,2.27093975733727e-5,4.75536669510632e-9,-0.0015099353530227085,2.2873996336669858e-5,4.880600371514767e-9,-0.0015099200916151164,2.2974973370313923e-5,4.957188134048892e-9,-0.0015099304637137257,2.2994496007904244e-5,4.971952359005194e-9,-0.0015099352286913673,2.2926461766264454e-5,4.920579998432417e-9,-0.0015099033645110472,2.277759522000927e-5,4.808472749402745e-9,-0.0015098082535331882,2.256704567886276e-5,4.650450638927179e-9,-0.0015096316019525189,2.2324318804894625e-5,4.469136915658275e-9,-0.0015093665766133704,2.208567924099814e-5,4.2921241199986e-9,-0.0015090197629728298,2.1889299652124044e-5,4.148176635499323e-9,-0.0015086116448405531,2.1769507934527783e-5,4.062815296740895e-9,-0.0015081753500045245,2.1750466832938717e-5,4.05360291565382e-9,-0.0015077531763032308,2.183960388547096e-5,4.125383508132904e-9,-0.0015073900399322092,2.202167990402843e-5,4.2660809956394935e-9,-0.0015071232263286609,2.225573764208077e-5,4.44462415416496e-9,-0.0015069693776782423,2.2478572667533146e-5,4.6136193435732875e-9,-0.0015069127900212765,2.261830809440704e-5,4.719430802140069e-9,-0.0015069025568193628,2.2617773461514468e-5,4.719545121206075e-9,-0.0015068654430890603,2.2459193836491986e-5,4.601005606662283e-9,-0.001506732732291867,2.2175454413684737e-5,4.388897633440769e-9,-0.0015064676102254564,2.1838262916960467e-5,4.1374773793336535e-9,-0.0015060770908259737,2.152899176668202e-5,3.9081543995164606e-9,-0.0015056034531821725,2.130964096087466e-5,3.747499605308365e-9,-0.0015051039831142801,2.120817745888039e-5,3.67616765940978e-9,-0.0015046318558587788,2.121994692951462e-5,3.6900798243215312e-9,-0.0015042251268647423,2.1317953608248667e-5,3.768369282876351e-9,-0.0015039036630436163,2.1464388035088392e-5,3.88222893943776e-9,-0.0015036707819547192,2.1619516091843104e-5,4.001665844105285e-9,-0.0015035165886605325,2.1747302655433718e-5,4.099689013291884e-9,-0.00150342132600212,2.1818716266063703e-5,4.154695925069204e-9,-0.001503358325448771,2.1813879500024203e-5,4.1519986156729824e-9,-0.0015032968462424501,2.1723736492507323e-5,4.08503905892022e-9,-0.0015032052341075262,2.155133538091197e-5,3.956368101994074e-9,-0.0015030546872407823,2.1312355770057032e-5,3.778071180337243e-9,-0.0015028235326783174,2.103420332333634e-5,3.5710789610787957e-9,-0.0015025013887804367,2.075307806093682e-5,3.362886440108658e-9,-0.0015020922453497882,2.0508886287330707e-5,3.183598559287639e-9,-0.0015016154742786625,2.0338452391119222e-5,3.0607104114683997e-9,-0.0015011040515861569,2.0268076034948164e-5,3.0134867470089806e-9,-0.001500599804274013,2.030688168146457e-5,3.04807733049152e-9,-0.0015001460726057133,2.044239395900025e-5,3.154424023362247e-9,-0.00149977856352969,2.0639604039527855e-5,3.305819021705255e-9,-0.0014995156172464786,2.0844817059723325e-5,3.461959279396227e-9,-0.0014993500137638414,2.0995399978085027e-5,3.576249789876038e-9,-0.0014992456432738306,2.1035335583678028e-5,3.60729449457631e-9,-0.0014991428844553212,2.0933644184201608e-5,3.532476786791916e-9,-0.0014989745730104767,2.0698804268457708e-5,3.3586078624101303e-9,-0.0014986888360896111,2.0380406021878866e-5,3.1231135922833585e-9,-0.0014982686733544998,2.0053717417477414e-5,2.88245886837212e-9,-0.001497737525690711,1.979300837962255e-5,2.692135997911263e-9,-0.001497148017881539,1.9647196210900128e-5,2.588415637713842e-9,-0.0014965613991866607,1.9629093705834248e-5,2.5803785904338805e-9,-0.0014960289411646245,1.971968706434261e-5,2.653283174951249e-9,-0.0014955820412908304,1.9880736800477454e-5,2.778157555940626e-9,-0.0014952309905867504,2.006787897714019e-5,2.9216817011335566e-9,-0.0014949687552116315,2.0239968863611068e-5,3.053154202397362e-9,-0.001494776174475137,2.0364131096063462e-5,3.1481831138080597e-9,-0.0014946265704327824,2.0417849223123522e-5,3.1901577490234746e-9,-0.0014944892845262566,2.038968095963877e-5,3.170735822070018e-9,-0.001494332545660484,2.0279629489477603e-5,3.090127645122555e-9,-0.0014941263545837618,2.009946410020862e-5,2.957370145196969e-9,-0.0014938459444002585,1.9872625600314708e-5,2.7902699955053625e-9,-0.0014934759328347927,1.9632856641228426e-5,2.614335134584265e-9,-0.0014930145655336932,1.9420569813598002e-5,2.4599538294097267e-9,-0.001492476702076429,1.9276431553751654e-5,2.3574741074222654e-9,-0.001491893815555032,1.923270705234934e-5,2.3306640563010123e-9,-0.0014913096645020614,1.930428755097455e-5,2.3900526656468323e-9,-0.0014907716135890666,1.9482318555866433e-5,2.5283426168944e-9,-0.0014903193643921373,1.973316438958572e-5,2.7198781518158167e-9,-0.0014899741448074898,2.0003956799043533e-5,2.9249937542774248e-9,-0.0014897315523588778,2.023395845028581e-5,3.098573729705269e-9,-0.0014895604078392077,2.036929696434408e-5,3.200967785115278e-9,-0.0014894086578894246,2.0377579597678796e-5,3.2087039570247428e-9,-0.0014892158047863976,2.0258385868426954e-5,3.122098731804692e-9,-0.001488929416536435,2.00457625312811e-5,2.9669485121319134e-9,-0.0014885210657221955,1.9800292408669174e-5,2.7885218058526498e-9,-0.0014879957071757151,1.9591794282292342e-5,2.6386436925550972e-9,-0.0014873899746012964,1.9478359809753334e-5,2.5601312681883347e-9,-0.0014867596618360918,1.949011570768919e-5,2.5748323704033555e-9,-0.0014861620498762876,1.96239922223134e-5,2.6799132147527057e-9,-0.0014856407320978139,1.9849868774778618e-5,2.8525944425785092e-9,-0.0014852179082245765,2.0123138972227992e-5,3.0595746869390322e-9,-0.001484894404555705,2.0397436089605455e-5,3.266468246613373e-9,-0.0014846544662120268,2.063358248057847e-5,3.444366312054756e-9,-0.0014844719149976677,2.080401172999627e-5,3.573026893968126e-9,-0.0014843155256631664,2.089389600951698e-5,3.6416569247405195e-9,-0.0014841529717873015,2.0900677734307805e-5,3.6485643076621275e-9,-0.0014839536957402732,2.083324538196875e-5,3.6005774495059056e-9,-0.0014836914694317035,2.0711220588510544e-5,3.5125354304605184e-9,-0.0014833473561297718,2.0564086382282243e-5,3.406608295349423e-9,-0.0014829133688975399,2.0429297886048457e-5,3.3108019367196984e-9,-0.0014823963710327067,2.0348185310062236e-5,3.2557973035666802E-09,-0.0014818207428450856,2.0358734524199104e-5,3.269510016130022e-9,-0.0014812274772494347,2.048563738802864e-5,3.369725367338494e-9,-0.0014806675693328044,2.0730221397913308e-5,3.556767697544755e-9,-0.0014801896123771137,2.106481501301274e-5,3.809538836492915e-9,-0.0014798249253679303,2.143590416769047e-5,4.088059593597637e-9,-0.0014795761455542354,2.177709692752412e-5,4.3431788306475135e-9,-0.0014794146511569793,2.202796158292254e-5,4.530508461441201e-9,-0.0014792883061481331,2.21516328538685e-5,4.623353141774396e-9,-0.0014791364524373138,2.2144870224967428e-5,4.620002061129199e-9,-0.001478906684187595,2.203791530288745e-5,4.543444647931511e-9,-0.0014785683235115793,2.1885258092804413e-5,4.434360357647662e-9,-0.0014781193401062422,2.1750689691606835e-5,4.339933827235743e-9,-0.0014775854795386373,2.169092982823376e-5,4.3017291032046366e-9,-0.001477012299802205,2.1742145708306606e-5,4.345842348530162e-9,-0.0014764526498468376,2.191281179061359e-5,4.477843345187745e-9,-0.0014759534363243591,2.2184454181331846e-5,4.683549499194312e-9,-0.0014755455960484022,2.2519217855883682e-5,4.93475027814799e-9,-0.0014752396898019221,2.2870962823821085e-5,5.1974073013490225e-9,-0.0014750271342094889,2.3195958122338928e-5,5.439457561441334e-9,-0.0014748851544931095,2.3460421517391652e-5,5.636259530417908e-9,-0.0014747829673421675,2.3644120169039524e-5,5.773169265596725e-9,-0.001474687320693333,2.374080291527646e-5,5.845840169919798e-9,-0.0014745666070528286,2.3756880234768512e-5,5.859274017653767e-9,-0.0014743937130802754,2.370958754850038e-5,5.826487086509059e-9,-0.0014741482569230124,2.3625217663658505e-5,5.767179828898929e-9,-0.001473818894785108,2.353730629244631e-5,5.7063097259063755e-9,-0.0014734060778071696,2.3484074946004946e-5,5.672082995091509e-9,-0.001472924981874492,2.3504008874457454e-5,5.692603170476783e-9,-0.0014724072644037177,2.3628534088270373e-5,5.790480507708103e-9,-0.0014718991918354172,2.387197597384268e-5,5.975569281186334e-9,-0.0014714535304005726,2.422153315886059e-5,6.2378093646216116e-9,-0.0014711147480171334,2.463284924493281e-5,6.5441791770475725e-9,-0.0014709018005976526,2.5037149761910478e-5,6.844044438239558e-9,-0.0014707971735682401,2.5361087416693702e-5,7.08371765685339e-9,-0.0014707499231823534,2.5551998946229314e-5,7.224937628064112e-9,-0.0014706928556039132,2.559617122586235e-5,7.2582251778159335e-9,-0.0014705654035565266,2.5521412187611647e-5,7.204692681405604e-9,-0.0014703314954858874,2.5384704814681434e-5,7.106814374546921e-9,-0.001469986538679709,2.5252782134341083e-5,7.013936096625625e-9,-0.0014695540981764408,2.5183955143550453e-5,6.968766442288963e-9,-0.0014690762900327096,2.5215950258180403e-5,6.998456432120111e-9,-0.0014686020708823385,2.5360870206104967e-5,7.1110940673169154e-9,-0.001468176386598783,2.5606318665205407e-5,7.296811789583651e-9,-0.001467831922902369,2.592100301791191e-5,7.532134484148677e-9,-0.0014675843884544473,2.6263002803544234e-5,7.786145194716698e-9,-0.0014674316308986469,2.6588795756606222e-5,8.027060457500164e-9,-0.0014673561469447757,2.6861167542429433e-5,8.22790296065784e-9,-0.001467329858105644,2.7054651629686617e-5,8.370365121482301e-9,-0.0014673197245071011,2.7158013293985568e-5,8.446566196624374e-9,-0.0014672929285562525,2.717410966689769e-5,8.458950180331899e-9,-0.0014672208834997042,2.7118011201820044e-5,8.4189307986924e-9,-0.0014670820001531884,2.7014370775278294e-5,8.34495143072538e-9,-0.0014668636033767842,2.6894642929169563e-5,8.260369284515231e-9,-0.0014665634811135814,2.6794222102966245e-5,8.19123024785904e-9,-0.0014661914098972825,2.674909228562432e-5,8.163696466874626e-9,-0.001465770520724381,2.679114846664634e-5,8.200590836488431e-9,-0.001465337400999473,2.6941364730020337e-5,8.316505230393117e-9,-0.0014649388274165344,2.720105595585084e-5,8.511638713086152e-9,-0.0014646228477321868,2.7543744071366404e-5,8.766111014759959e-9,-0.0014644237187200332,2.791300341092992e-5,9.03854416039646e-9,-0.001464344966501293,2.8232690622237343e-5,9.273507511061049e-9,-0.00146435037296069,2.8431059296295023e-5,9.418980704214775e-9,-0.0014643722903750673,2.8469546292426055e-5,9.447272055057291e-9,-0.0014643365365555757,2.835968319109381e-5,9.367378735882624e-9,-0.0014641906956874835,2.8157374663821298e-5,9.220801767421116e-9,-0.0014639203699168175,2.793907130398366e-5,9.063972153156974e-9,-0.001463547743641747,2.777469392086682e-5,8.94819704622287e-9,-0.0014631181589848093,2.770971394278009e-5,8.906400483072525e-9,-0.0014626840013922983,2.7759615661242276e-5,8.949152904876544e-9,-0.0014622919778576426,2.7913376841285792e-5,9.067487925009645e-9,-0.0014619755187329977,2.8141209895819113e-5,9.238874894232356e-9,-0.0014617515941158011,2.840319839203045e-5,9.43374255358404e-9,-0.0014616206414562979,2.8657228590944903e-5,9.621316724398479e-9,-0.0014615686117483452,2.88656511750599e-5,9.77438646312151e-9,-0.0014615705063021332,2.9000359578134314e-5,9.872855466969257e-9,-0.0014615948598680729,2.9046009835060456e-5,9.905967029354836e-9,-0.001461608579480747,2.900124632155569e-5,9.873148682283592e-9,-0.0014615815016667387,2.8877991973552452e-5,9.783504838835818e-9,-0.001461490094774729,2.86991569091944e-5,9.65415693656674e-9,-0.0014613200429391873,2.8495379357004293e-5,9.507823393054517e-9,-0.0014610677949529376,2.8301325099769305e-5,9.370010304543687e-9,-0.0014607412749224225,2.8151769243240655e-5,9.266016170060544e-9,-0.001460359934266054,2.807741831222614e-5,9.217802419101563e-9,-0.001459954104262802,2.810012125881796e-5,9.240548810429125e-9,-0.0014595629027557774,2.8227079611997363e-5,9.338632920695437e-9,-0.001459229207373408,2.8444570378339046e-5,9.501348366973721e-9,-0.0014589903312328463,2.8713478214577256e-5,9.699906185659169e-9,-0.0014588646330113623,2.8970928160528702e-5,9.888704607981145e-9,-0.0014588380390138703,2.9143000527045176e-5,1.0014441084658272e-8,-0.0014588592510678298,2.916941323267889e-5,1.0033827086917958e-8,-0.0014588523821274818,2.9030953044343186e-5,9.933409035109415e-9,-0.0014587456644553276,2.8762477106263568e-5,9.739062259576716e-9,-0.001458501091057045,2.844024437257861e-5,9.506799999855063e-9,-0.001458127143420008,2.8150315430128008e-5,9.299622484807696e-9,-0.001457669435461303,2.7957472722960843e-5,9.164649386359438e-9,-0.0014571891196582215,2.788982620398424e-5,9.12181556433836e-9,-0.001456742655817562,2.7940470402478702e-5,9.1652351867303225E-09,-0.0014563700347164715,2.807848674258035e-5,9.271524962474886e-9,-0.0014560912588836175,2.826144010513699e-5,9.409190716108027e-9,-0.0014559078903742333,2.8445360201978687e-5,9.546033498517481e-9,-0.0014558067229891146,2.859145029300421e-5,9.65399985693406e-9,-0.0014557639343839687,2.867025540336573e-5,9.712068997365372e-9,-0.0014557492065120391,2.8664138594720785e-5,9.707890097359682e-9,-0.0014557298001960863,2.8568493551007577e-5,9.638560286519974e-9,-0.0014556745936851589,2.839177608483774e-5,9.510625422205857e-9,-0.0014555579370875656,2.815423714782051e-5,9.339183329667601e-9,-0.0014553629537277198,2.788526924195518e-5,9.14595894628804e-9,-0.0014550838573302906,2.7619586166606147e-5,8.95646433151999e-9,-0.0014547270310782067,2.7392671032165182e-5,8.796565507284847e-9,-0.0014543107698863327,2.7235881381529104e-5,8.688803061502544e-9,-0.0014538636547068316,2.7171559156514596e-5,8.648806078255112e-9,-0.0014534215710303232,2.7208440099601352e-5,8.68207399305285e-9,-0.001453023162629078,2.7337595874378007e-5,8.781285876904159e-9,-0.0014527031545351094,2.7529636906441165e-5,8.924571639210088e-9,-0.0014524833008458392,2.7735059993107925e-5,9.075970709988018e-9,-0.0014523621957538728,2.7890571544417234e-5,9.190018425776328e-9,-0.0014523077282724134,2.793379091660291e-5,9.22219677030714e-9,-0.0014522585937687897,2.7825223830983982e-5,9.144582317840528e-9,-0.0014521403795198652,2.7569149189017554e-5,8.960821255109384e-9,-0.001451893505617349,2.7219493141957345e-5,8.71038541518176e-9,-0.0014514989868257015,2.6862149989671336e-5,8.455773632611902e-9,-0.0014509858377754307,2.6581283086955036e-5,8.257991564297597e-9,-0.0014504161415827162,2.642918854125528e-5,8.154588223766253e-9,-0.0014498591074915373,2.6414918608475404e-5,8.151437565096828e-9,-0.0014493694267968629,2.6511849721997745e-5,8.228438049517682e-9,-0.001448977429522189,2.667403387196817e-5,8.351639483937653e-9,-0.0014486894408670674,2.6851542282472955e-5,8.484552463610772e-9,-0.0014484932417684118,2.700055872143433e-5,8.595494996252945e-9,-0.0014483645278005612,2.7088384874182358e-5,8.661115546099852e-9,-0.0014482724252906584,2.709519725146361e-5,8.667505390416874e-9,-0.0014481837922433506,2.7014246607076915e-5,8.610209915657879e-9,-0.0014480667630384213,2.6851367625677863e-5,8.493819386236972e-9,-0.0014478939985973695,2.6623968239600285e-5,8.331252341426477e-9,-0.0014476458307236476,2.635924813759418e-5,8.142498231074953e-9,-0.00144731311061095,2.6091231865376743e-5,7.952456649511876e-9,-0.0014468992107673786,2.5856444834127285e-5,7.787722099695875e-9,-0.0014464205463444633,2.5688537660867144e-5,7.672567457310853e-9,-0.0014459051593164764,2.5612502082256553e-5,7.624669465502379e-9,-0.0014453891705153014,2.5639343311066898e-5,7.651283894303304e-9,-0.0014449112632642608,2.5762226244715e-5,7.746636370364774e-9,-0.0014445057152640856,2.595501245227754e-5,7.891145026699935e-9,-0.0014441946694093064,2.6173960497131583e-5,8.052917461887092e-9,-0.0014439806475695987,2.636349963132186e-5,8.192048807278225e-9,-0.0014438411873451745,2.646690890427581e-5,8.268250609640819e-9,-0.0014437286296687954,2.6441511003512633e-5,8.251567637578792e-9,-0.001443578444853297,2.6275165731848128e-5,8.1339948899965e-9,-0.0014433273202660133,2.5997083928831833e-5,7.937096006765073e-9,-0.001442936409115405,2.567444219779277e-5,7.709508223593939e-9,-0.0014424086701659907,2.5391506100637698e-5,7.511889392046065e-9,-0.0014417892862947695,2.5219227646515815e-5,7.3950023164529674e-9,-0.001441147821285167,2.5191187270965408e-5,7.382424698161206e-9,-0.0014405525671188652,2.5297654232244746e-5,7.46642211059057e-9,-0.0014400506984845914,2.549697136888099e-5,7.616367322101587e-9,-0.0014396609875323325,2.573422047511667e-5,7.792362299919142e-9,-0.0014393770763216152,2.595731091946943e-5,7.956884889193762e-9,-0.0014391755390315833,2.6126299063856226e-5,8.081435414644157e-9,-0.0014390240648945822,2.621661961154909e-5,8.14872862017226e-9,-0.0014388876944924675,2.6218749094750767e-5,8.152319004850451e-9,-0.0014387330155882449,2.6136521805769236e-5,8.095315097039274e-9,-0.0014385310964584244,2.5985249879172986e-5,7.98902323659588e-9,-0.0014382599562942464,2.578984727441783e-5,7.851630723953415e-9,-0.001437907000473791,2.558258430097201e-5,7.706602007982529e-9,-0.0014374713475980292,2.539984818095332e-5,7.580298299298504e-9,-0.0014369654370357835,2.5277430919184726E-05,7.498481675769508e-9,-0.0014364149450387434,2.524445155724815e-5,7.481837634246073e-9,-0.0014358560907401488,2.531680732424275e-5,7.541239382042651e-9,-0.0014353299421923447,2.549174348391302e-5,7.67395063074306e-9,-0.0014348742608147498,2.5745447771436074e-5,7.862124322155557e-9,-0.0014345144552345818,2.6035180886781052e-5,8.074600559849243e-9,-0.0014342558619612528,2.6306381027453562e-5,8.272200047331242e-9,-0.001434079589311781,2.6503932782313694e-5,8.415841468953633e-9,-0.0014339437223416472,2.658569469617018e-5,8.476099349229682e-9,-0.0014337909162949274,2.653533090809111e-5,8.442148816768944e-9,-0.0014335620776601706,2.6370518693983798e-5,8.32738512813637e-9,-0.0014332136074441035,2.614232716045764e-5,8.16878953155742e-9,-0.0014327328436069065,2.592319956427502e-5,8.01823403658462e-9,-0.0014321447131647473,2.5785451237951414e-5,7.927095900408931e-9,-0.0014315049081303302,2.5778022969174607e-5,7.92972291182139e-9,-0.001430881462440153,2.591187567232032e-5,8.0331743458699e-9,-0.0014303331772278684,2.616035797685171e-5,8.217711692267238e-9,-0.0014298944934438224,2.6472481447071226e-5,8.446469961108673e-9,-0.0014295714210435305,2.6790920056085873e-5,8.67839265732808e-9,-0.0014293466416022695,2.706669905365202e-5,8.878682424407924e-9,-0.0014291886521796292,2.726698482237647e-5,9.024249768378522e-9,-0.0014290605250002484,2.7376714200605378e-5,9.104750656058354e-9,-0.0014289262535661926,2.7396668664601868e-5,9.121125674470142e-9,-0.0014287546376585928,2.734037378186705e-5,9.083361209742851e-9,-0.0014285215854872378,2.7231132652078738e-5,9.008387004102195e-9,-0.0014282118094740023,2.7099446056366132e-5,8.91824477219024e-9,-0.0014278205169719102,2.6980369162120895e-5,8.838165817857077e-9,-0.0014273551041353886,2.6910052790540644e-5,8.794014126806641e-9,-0.001426836217410468,2.692081607168585e-5,8.808668492982802e-9,-0.0014262969989791532,2.703467650249471e-5,8.897360695655925e-9,-0.0014257791653392638,2.7256366225002294e-5,9.062761040100194e-9,-0.0014253252294257476,2.7568169951920956e-5,9.291482753990074e-9,-0.0014249678412150235,2.7929586139618507e-5,9.554082763102208e-9,-0.001424719247272349,2.8283922152095817e-5,9.8099633515569e-9,-0.0014245649540888968,2.857138997614607e-5,1.0016784431585915e-8,-0.001424464819701088,2.874523105273305e-5,1.0141889729331605e-8,-0.0014243621807249333,2.8785614912595313e-5,1.0172034668321106e-8,-0.001424198594399113,2.8706550061364885e-5,1.0118076747905602e-8,-0.0014239298298215845,2.855338333973738e-5,1.0012952173362216e-8,-0.0014235384273948743,2.8391359153604704e-5,9.903332600293055e-9,-0.001423039068963574,2.8288237213866135e-5,9.837163726172813e-9,-0.0014224748046457894,2.8295862255426144e-5,9.850620457112531e-9,-0.0014219048911750486,2.8436423102220665e-5,9.95855573897215e-9,-0.0014213881167722824,2.8698019217145672e-5,1.0151643259449534e-8,-0.001420967450066756,2.9040746996965335e-5,1.0400951762124473e-8,-0.0014206611416994707,2.941022918094345e-5,1.066766982712532e-8,-0.001420462210050991,2.9752840746124096e-5,1.0913884054961945e-8,-0.0014203445464611544,3.0027360180390388e-5,1.111072374244291e-8,-0.0014202718523974758,3.0210625033603962e-5,1.1242230035220288e-8,-0.0014202059478694213,3.0297793467362173e-5,1.130543514634517e-8,-0.0014201126851082163,3.0299379741317255e-5,1.1308212546961511e-8,-0.001419965354967399,3.023722740125861e-5,1.126641797154726e-8,-0.0014197463754245395,3.0140745523510838e-5,1.1201222166966375e-8,-0.0014194482287997765,3.004374201377961e-5,1.1136832656018542e-8,-0.0014190743137684472,2.9981438465230445e-5,1.1098298258684281e-8,-0.001418639809555389,2.9986901963587264e-5,1.1108885328964141e-8,-0.001418171968272546,3.008617815680982e-5,1.1186579824169502e-8,-0.0014177085861886171,3.0291942135319834e-5,1.133964646008498e-8,-0.001417293059956346,3.05967206924271e-5,1.1562003200599675e-8,-0.0014169650708668305,3.0968510049347896e-5,1.1830355814926381e-8,-0.0014167481369272308,3.135278601208798e-5,1.210581797947972e-8,-0.0014166384270926171,3.168371673086619e-5,1.2341922339142801e-8,-0.001416601011852032,3.1903068064781095e-5,1.2497950944243014e-8,-0.001416577597530908,3.197990561297152e-5,1.2552765821321245e-8,-0.001416504023895075,3.192205189348772e-5,1.2512782170450044e-8,-0.0014163303334027324,3.177388113563488e-5,1.241023118085146e-8,-0.0014160352058320256,3.160197306166359e-5,1.2292773285630224e-8,-0.00141563020412267,3.147525183817631e-5,1.2209223647116733e-8,-0.001415154182806351,3.144686499940079e-5,1.219665427065755e-8,-0.0014146612944608804,3.1542588220823e-5,1.2272337128455885e-8,-0.0014142068212377667,3.17574992652059e-5,1.2431711044918489e-8,-0.0014138345495532411,3.206030619328251e-5,1.2651790954942593e-8,-0.0014135683760217552,3.240316711893786e-5,1.2898338055852669e-8,-0.0014134095167311366,3.273394154711765e-5,1.3134557510283644e-8,-0.0014133391618895421,3.300757270905415e-5,1.3329020931988017e-8,-0.0014133249690354472,3.31939594183018e-5,1.34610409333419e-8,-0.0014133289896605121,3.328119077205221e-5,1.3522794560786908e-8,-0.001413314822460721,3.3274656159752014e-5,1.3518607273504532e-8,-0.0014132527079583823,3.3193518643689525e-5,1.3462443644765452e-8,-0.0014131223461608018,3.3066195373724894e-5,1.3374722960227905e-8,-0.001412913992766144,3.292604615376844e-5,1.3279258055873786e-8,-0.0014126286522506636,3.2807704536436217e-5,1.3200599557144906e-8,-0.0014122779793304208,3.274378481004234e-5,1.3161617579820244e-8,-0.0014118840527596287,3.276134215889836e-5,1.318093997452497e-8,-0.0014114785988180107,3.287744387268909e-5,1.3269863918137662e-8,-0.0014111005438624472,3.309364278437632e-5,1.3428626290622916e-8,-0.0014107903444190032,3.339035361538781e-5,1.3642698341029341e-8,-0.0014105801213301545,3.372401496582465e-5,1.388102605623399e-8,-0.0014104809172316352,3.403140528598448e-5,1.4099169038639324e-8,-0.0014104721889999377,3.4244418459823575e-5,1.4249623837810556e-8,-0.0014105012730983308,3.431313016865975e-5,1.4297897851110098e-8,-0.0014104976530675871,3.4227232153276674e-5,1.4237483279052317e-8,-0.0014103978203613941,3.4023102917727105e-5,1.409478258989675e-8,-0.0014101683041605874,3.37710788967813e-5,1.3920030577394821e-8,-0.0014098152448564095,3.3549879175073367e-5,1.3769043937615413e-8,-0.0014093780596700428,3.342166325020871e-5,1.3685419104499984e-8,-0.0014089135400348065,3.341756238018929e-5,1.3690309226175862e-8,-0.0014084788334548454,3.3535493238112093e-5,1.37811189010826e-8,-0.0014081186845767038,3.374669781848928e-5,1.3936497322555077e-8,-0.0014078585339577186,3.400633332696204e-5,1.4124144409347155e-8,-0.0014077028508541673,3.42645878758073e-5,1.4308805334751806e-8,-0.0014076373664685578,3.4476340111075574e-5,1.4459025629545484e-8,-0.0014076339312917433,3.4608360343685586e-5,1.4552028310657353e-8,-0.0014076568208633863,3.464345854701809e-5,1.457641017245677e-8,-0.001407669277186434,3.458141606859998e-5,1.4532638817739162e-8,-0.0014076391876356137,3.443714237304597e-5,1.4431695615751243e-8,-0.0014075431589499628,3.42369134134312e-5,1.4292440206539112e-8,-0.0014073687088618709,3.401369363319955e-5,1.4138337135936162e-8,-0.0014071148025871514,3.380247774740365e-5,1.3994150056515684e-8,-0.0014067912957618034,3.363619137526845e-5,1.3882976655598566e-8,-0.001406417785833611,3.3542132876375727e-5,1.3823657520053249e-8,-0.0014060220696082155,3.3538605100390865e-5,1.3828389059174037e-8,-0.0014056380007306819,3.363132267047934e-5,1.3900311168766636e-8,-0.0014053019647113963,3.3809476163547754e-5,1.403098639393186e-8,-0.0014050467952829435,3.404235090138576e-5,1.4198316878603361e-8,-0.0014048925106380783,3.427900969237467e-5,1.4366522015636952e-8,-0.0014048352740607154,3.4454830578689884e-5,1.4490717899879615e-8,-0.0014048394576729162,3.450785686877302e-5,1.452817586539771e-8,-0.0014048405652307403,3.4402642110255266e-5,1.4454790297227312e-8,-0.001404764049178016,3.415061768516878e-5,1.4279243287251102e-8,-0.0014045544794032856,3.381223147440442e-5,1.4044512501709342e-8,-0.001404199019517501,3.34753415760048e-5,1.3812662721467575e-8,-0.0014037308928993113,3.322120032523223e-5,1.3640780805957817e-8,-0.0014032126628860826,3.309751484531842e-5,1.3561886833224022e-8,-0.0014027118105852483,3.311012467826726e-5,1.3579138976547671e-8,-0.0014022815504324637,3.3230920394382554e-5,1.3671690150678322e-8,-0.0014019518800177807,3.341272421638346e-5,1.3805518700988216e-8,-0.0014017290980962978,3.360354473780993e-5,1.3943711301648619e-8,-0.0014016000243125806,3.375694744860536e-5,1.4053807349603574e-8,-0.001401537920759662,3.383830386691697e-5,1.4112051071441454e-8,-0.001401508516602354,3.38278961316903e-5,1.4105333153706423e-8,-0.0014014756088146735,3.372177220527613e-5,1.4031568509718768e-8,-0.0014014060660440912,3.353076489929489e-5,1.3898885331730495e-8,-0.0014012739860668733,3.327793091957308e-5,1.3723815329935129e-8,-0.0014010636973225197,3.2994742987017955e-5,1.3528667448275764e-8,-0.0014007713279077503,3.271646976821572e-5,1.3338315101143095e-8,-0.0014004048383781237,3.247734073521475e-5,1.3176767910392181e-8,-0.001399982720160362,3.230609707347399e-5,1.3063963984102755e-8,-0.0013995317115542282,3.222223618554686e-5,1.3013065431940527e-8,-0.0013990837824146862,3.223298100013896e-5,1.3028362806501945e-8,-0.0013986724408224693,3.2330914871978444e-5,1.310378977963939e-8,-0.0013983280897938944,3.249234472603756e-5,1.3222059543851011e-8,-0.0013980719157413676,3.26771022098923e-5,1.3354806377875613e-8,-0.001397908301055983,3.2831582187595467E-05,1.3464847011626819e-8,-0.001397817347062273,3.289747667782527e-5,1.3512189019105797e-8,-0.001397751512132713,3.28277047548693e-5,1.3464871106866769e-8,-0.0013976423203658295,3.260691801970788e-5,1.3312974762696126e-8,-0.0013974208313565252,3.2266892279175194e-5,1.3079220779759064e-8,-0.0013970462170215551,3.188350281420138e-5,1.2816866134850941e-8,-0.001396526429072313,3.15504266134185e-5,1.2591347003175733e-8,-0.0013959162362914407,3.134208482490942e-5,1.2454319312828303e-8,-0.0013952934212709952,3.12876940613365e-5,1.2425488800691024e-8,-0.0013947290248052181,3.1368994960239776e-5,1.2491155941132685e-8,-0.0013942677926455445,3.153656609401135e-5,1.2615901943459306e-8,-0.001393923604268954,3.173094679442987e-5,1.2757639356311874e-8,-0.0013936850245932673,3.189863660685751e-5,1.287894027262053e-8,-0.0013935243292366379,3.20005016684368e-5,1.295286703830315e-8,-0.0013934059148908537,3.2014351751696166e-5,1.2964583482053157e-8,-0.0013932926868055352,3.193431439306784e-5,1.29106853876459e-8,-0.0013931506171936453,3.176890244780789e-5,1.279767711238989e-8,-0.0013929521622677431,3.153852371658084e-5,1.2640170940633758e-8,-0.0013926789463034916,3.1272453315631026e-5,1.2458806214965603e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json new file mode 100644 index 0000000000..7170bac92e --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":4000,"numberOfSamples":1000,"samples":[-0.0013923237156324762,3.10051313115372e-5,1.227772476593132e-8,-0.0013918913030339685,3.0771749723490945e-5,1.2121506307793586e-8,-0.0013913982265213998,3.060338976954708e-5,1.2011722091998317e-8,-0.0013908707040811456,3.052231698115309e-5,1.1963565646016446e-8,-0.001390341194667023,3.053811122326968e-5,1.198311590315129e-8,-0.0013898437960375297,3.064516965374932e-5,1.206567850949141e-8,-0.0013894089283486013,3.0821985171837794e-5,1.219550046257788e-8,-0.0013890577325521491,3.103246124664618e-5,1.234697235237071e-8,-0.001388796542557306,3.12295787680487e-5,1.2487412403812631e-8,-0.0013886120720738905,3.136210718279558e-5,1.2581786671309725e-8,-0.0013884688947041909,3.1385084006792996e-5,1.2599819994917749e-8,-0.0013883119458332274,3.127360474065753e-5,1.2525244839418013e-8,-0.0013880771300425396,3.103666131759266e-5,1.2365079707027838e-8,-0.0013877108551321243,3.072388276790292e-5,1.2154123117817592e-8,-0.0013871929430152989,3.0416606360292832e-5,1.1948741207200948e-8,-0.001386550391714903,3.0201205713724095e-5,1.1808429582903155e-8,-0.0013858506737383077,3.01357997768827e-5,1.1772803776767341e-8,-0.0013851759104291312,3.0229273883448915e-5,1.1847175892297428e-8,-0.001384592881220668,3.0443874540562336e-5,1.2004550146250928e-8,-0.0013841349373795028,3.0716035009628255e-5,1.2200281016361826e-8,-0.0013838008265632472,3.098058540822912e-5,1.2389009867920565e-8,-0.0013835645353088798,3.118712181259742e-5,1.2536034707260684e-8,-0.0013833877106148682,3.130621279611001e-5,1.2621499602221395e-8,-0.0013832296076505604,3.132862793970199e-5,1.2639667607070031e-8,-0.0013830533398082588,3.12615629520694e-5,1.2596119024238894e-8,-0.0013828292717648978,3.1124447793189026e-5,1.2504739208443173e-8,-0.001382536894290198,3.094526718665489e-5,1.238515875044467e-8,-0.001382166093661862,3.0757242436986546e-5,1.2260502826500002e-8,-0.0013817180828804721,3.059536687843876e-5,1.2155030689028627e-8,-0.0013812057662645032,3.0492356610198686e-5,1.2091316281131741e-8,-0.001380652965115511,3.0473944416237442e-5,1.2086924984252354e-8,-0.0013800918794172976,3.055405387965315e-5,1.2151015510603047e-8,-0.0013795585330693598,3.073089776278415e-5,1.2281664264941277e-8,-0.0013790865545975047,3.098519781713838e-5,1.2464780864846123e-8,-0.0013787002512115332,3.128152698517288e-5,1.2675280274755086e-8,-0.0013784083744284533,3.1573186320784075e-5,1.2880703491497357e-8,-0.0013782000273174174,3.181021399913377e-5,1.3046891803617532e-8,-0.0013780438976636682,3.19495350745652e-5,1.3144947940134446E-08,-0.0013778917807731484,3.1965865743675875e-5,1.3158522917130986e-8,-0.0013776871187557247,3.186125601721507e-5,1.3090054814128084e-8,-0.0013773784345414448,3.167005542915762e-5,1.2963872114938864e-8,-0.0013769355296510653,3.145540027821075e-5,1.2823586040322064e-8,-0.0013763632310821636,3.129451925350386e-5,1.2721957602677264e-8,-0.0013757051938257864,3.12548297658547e-5,1.2704580862237566e-8,-0.0013750325167593762,3.136980980661643e-5,1.2793513871866098e-8,-0.0013744200205683455,3.162705495398507e-5,1.297932656913296e-8,-0.001373921486003332,3.197529339541822e-5,1.3226141868971426e-8,-0.0013735559011152846,3.2345581764334165e-5,1.348632479099502e-8,-0.001373308834962327,3.267443076739067e-5,1.371638565723486e-8,-0.0013731440063741707,3.2918760928589506e-5,1.3887174851188765e-8,-0.0013730169969555664,3.306017025212218e-5,1.3986670884338575e-8,-0.001372885707505598,3.310177282032628e-5,1.4017645484980559e-8,-0.0013727161916267327,3.3062157152929236e-5,1.3993385650784678e-8,-0.0013724849650755444,3.2969528124314865e-5,1.3933613214447525e-8,-0.0013721795043743403,3.2857132549704686e-5,1.3861350571725312e-8,-0.001371798199420233,3.275975393211377e-5,1.3800541749182052e-8,-0.001371350267391638,3.2710546394120883e-5,1.3773879566233536e-8,-0.0013708554660210265,3.273748651144435e-5,1.3800332746004124e-8,-0.0013703429392595617,3.285908614832062e-5,1.3892159705457934e-8,-0.0013698482842253537,3.3079732505826116e-5,1.4051723281032588e-8,-0.0013694081789119867,3.33859216188847e-5,1.4269017354682299e-8,-0.0013690527752354515,3.3745292715916165e-5,1.4521206280880815e-8,-0.0013687973523058758,3.411026251376824e-5,1.4775341685527618e-8,-0.001368635864809167,3.442685430142285e-5,1.4994571911094206e-8,-0.001368539190809793,3.464725058126877e-5,1.5146764379461272e-8,-0.0013684596653155585,3.474271507765218e-5,1.5213225547749854e-8,-0.001368341412275528,3.471292842213015e-5,1.519483961915156e-8,-0.0013681340963783179,3.458864103148684e-5,1.5113572919781048e-8,-0.001367806641243441,3.442624486265195e-5,1.50084742827696e-8,-0.0013673571913396174,3.429481060775766e-5,1.492663952720893e-8,-0.0013668159712882611,3.425816744323766e-5,1.4910976651613327e-8,-0.0013662389537410337,3.4356679623137404e-5,1.4987969233571176e-8,-0.0013656929127156684,3.45948313307106e-5,1.5159539607809455e-8,-0.0013652362239514341,3.493996318255312e-5,1.540252269790559e-8,-0.0013649025854399397,3.533339206451559e-5,1.5676457844807535e-8,-0.001364694017006319,3.5709311516460834e-5,1.5936510012581336e-8,-0.0013645848390629765,3.6013317990182196e-5,1.6146000719145376e-8,-0.001364533006244744,3.6213785847992433e-5,1.6284003030435945e-8,-0.0013644928514191061,3.630413358810897e-5,1.6346724249025713e-8,-0.0013644247321696538,3.629841553527456e-5,1.6344369702902035e-8,-0.0013643001276189908,3.622421100892573e-5,1.6296216699097295e-8,-0.0013641030557909385,3.611585301733881e-5,1.6225972675099123e-8,-0.001363829489218644,3.6009284510185593e-5,1.6158272516967093e-8,-0.0013634861732545276,3.59384398039273e-5,1.6116209694143087e-8,-0.0013630895393642458,3.593237657339973e-5,1.6119355456194334e-8,-0.0013626646638417342,3.601230966247092e-5,1.618170797397962e-8,-0.001362243629102119,3.61880268938273e-5,1.6309266089582144e-8,-0.0013618622841067652,3.64538655276576e-5,1.6497393820657673e-8,-0.0013615544772974737,3.6785502430891855e-5,1.6728827194428735e-8,-0.0013613437161679772,3.713991173468955e-5,1.697386187057922e-8,-0.001361234021080087,3.746108911824493e-5,1.719439828116546e-8,-0.0013612037638524796,3.7692536866159856e-5,1.7352457140518053e-8,-0.001361206847971344,3.779396838960132e-5,1.742144636974678e-8,-0.0013611832374142226,3.7756031020244054e-5,1.7396011201743785e-8,-0.001361076191644119,3.7606086154550635e-5,1.7295762883204998e-8,-0.0013608496577971183,3.7401677631123275e-5,1.716059227166306e-8,-0.0013604990488915285,3.721408821670011e-5,1.7039232838343093e-8,-0.0013600520125571307,3.710835900255645e-5,1.697551683056106e-8,-0.0013595600099726545,3.712640498271043e-5,1.699695432191236e-8,-0.0013590841935409244,3.727760024130748e-5,1.71086275657347e-8,-0.001358679890204125,3.7538440708709115e-5,1.7293378278633092e-8,-0.00135838372132039,3.7860514706880266e-5,1.7517577456580113e-8,-0.0013582064390924846,3.818407848658802e-5,1.7740504047095585e-8,-0.0013581329272131877,3.845318903981301e-5,1.7924558906917483e-8,-0.0013581286541984837,3.862806850028087e-5,1.804345582610699e-8,-0.0013581498661130592,3.869159882723496e-5,1.8086397228283904e-8,-0.0013581539476281528,3.8649261142348775e-5,1.8057850041261867e-8,-0.0013581071226586598,3.8524189345567815e-5,1.7974088393725628e-8,-0.0013579883897526658,3.835008509330396e-5,1.7858356144320932e-8,-0.00135779018044884,3.8164384929534315e-5,1.7736239335068338e-8,-0.001357517027048097,3.800295694389865e-5,1.7632074255281237e-8,-0.0013571835099064594,3.789645286761099e-5,1.7566453802397066e-8,-0.0013568122323385436,3.786770844912354e-5,1.7554432313878906e-8,-0.0013564319146861178,3.792940545542113e-5,1.760394100218013e-8,-0.0013560751230173448,3.808144637277682e-5,1.771409396726125e-8,-0.001355774723096159,3.830809315615486e-5,1.7873437098055103e-8,-0.0013555581129589143,3.85759738967685e-5,1.805883775217439e-8,-0.0013554390847187276,3.883530834118127e-5,1.8236503204011578e-8,-0.001355409076240439,3.9027250633763036e-5,1.836699003058032e-8,-0.0013554321238842734,3.909874292882928e-5,1.8415131641263553e-8,-0.0013554490528045462,3.90218298649933e-5,1.836291168093209e-8,-0.0013553934777036426,3.88088274293409e-5,1.8219570358978306e-8,-0.0013552148739573212,3.8513364752411945e-5,1.8022193158569097e-8,-0.0013548976458011926,3.821394753241361e-5,1.7824422483376295e-8,-0.0013544662886432806,3.7987376502045904e-5,1.767824374087245e-8,-0.001353975167144596,3.788495877740173e-5,1.7617747380746665e-8,-0.0013534897169433626,3.792082265498023e-5,1.765132964873523e-8,-0.0013530679623867672,3.807359000944715e-5,1.776318309780284e-8,-0.0013527479846985185,3.82970266342332e-5,1.7920945154219862e-8,-0.0013525427737545379,3.8534126622979775e-5,1.8085549434599747e-8,-0.0013524413684721215,3.8730475725509086e-5,1.8220348872787433e-8,-0.0013524143580498815,3.8844550459139665e-5,1.829793515757917e-8,-0.0013524218120327396,3.885388259987187e-5,1.830403299861606e-8,-0.0013524218425320289,3.8756778190668846e-5,1.8238389323156565e-8,-0.0013523781464381873,3.857000249417001e-5,1.8113029207340084e-8,-0.0013522652859119853,3.832360437107422e-5,1.7948697828581297e-8,-0.0013520711816035556,3.805446144349454e-5,1.7770522740602527e-8,-0.0013517970474576544,3.7800026057570636e-5,1.760383303417335e-8,-0.0013514555502732262,3.759328234789039e-5,1.7470765883749638e-8,-0.0013510681406707162,3.745922197053802e-5,1.7387859156658665e-8,-0.0013506622145259056,3.741251692416933e-5,1.7364450412879974e-8,-0.0013502682953014952,3.7455843878886433e-5,1.7401577299135237e-8,-0.0013499170098815133,3.757843888576176e-5,1.749114206947162e-8,-0.0013496352319221148,3.775487577483726e-5,1.7615323797154796e-8,-0.001349440649488639,3.794495617766193e-5,1.7746750386563e-8,-0.0013493347424008647,3.809671819615431e-5,1.7850659872577422e-8,-0.001349295890582923,3.8155046902679206e-5,1.7890635669466993e-8,-0.0013492766959825838,3.807708327935155e-5,1.783874654599152e-8,-0.0013492110735612106,3.785133903622449e-5,1.768815260529381e-8,-0.001349033855976422,3.751108479626499e-5,1.7461969909133265e-8,-0.0013487069795288752,3.71303580506857e-5,1.7210535401503925e-8,-0.0013482379377772538,3.67993136705882e-5,1.6994726215196717e-8,-0.001347678208637462,3.659042766946213e-5,1.6863046213677397e-8,-0.0013471024913643088,3.6534216931232214e-5,1.6835204236635903e-8,-0.0013465817610538201,3.661531138061667e-5,1.6899639174625656e-8,-0.0013461637307948591,3.67855921967629e-5,1.702274689456107e-8,-0.0013458659040266978,3.698362593147122e-5,1.716236688366139e-8,-0.0013456786096961092,3.715150481672573e-5,1.7279353443021854e-8,-0.0013455729607305563,3.7245547989349e-5,1.7344764650321256e-8,-0.0013455098437546319,3.724113849988471e-5,1.7342896275356996e-8,-0.0013454479816408654,3.713333537401668e-5,1.7271384802952297e-8,-0.0013453504339775678,3.693472237791048e-5,1.7139497446621565e-8,-0.0013451893773290563,3.66714125531848e-5,1.69653115025737e-8,-0.001344949053305138,3.6377906041960216e-5,1.677225728879621e-8,-0.0013446268270830342,3.6091487557028635e-5,1.658542561013439e-8,-0.0013442324429496473,3.584683872566402e-5,1.642801203779135e-8,-0.0013437858000863968,3.567151610583387e-5,1.6318286339007397e-8,-0.0013433138090793446,3.5582718952246464e-5,1.6267381969080993e-8,-0.0013428468552322854,3.5585336135370534e-5,1.6277959343087233e-8,-0.0013424151246411572,3.567102736278635e-5,1.6343650045473796e-8,-0.0013420448217986622,3.581815905326798e-5,1.6449191850671144e-8,-0.0013417540843769415,3.5992621037087415e-5,1.6571231526067074e-8,-0.0013415482762467888,3.6150103914661236e-5,1.6680073457991738e-8,-0.0013414149103668283,3.624123041516313e-5,1.6743183400191018e-8,-0.0013413198868642417,3.622112481074397e-5,1.6731446982117347e-8,-0.00134120845189209,3.606369069563323e-5,1.662842184473864e-8,-0.0013410151654745213,3.577732086480887e-5,1.644054815603201e-8,-0.0013406846000409867,3.5413460407537786e-5,1.6202722853245097e-8,-0.0013401964609990825,3.505743910760731e-5,1.597215167212452e-8,-0.001339580425708274,3.479926151774641e-5,1.5808809507200667e-8,-0.0013389081886428587,3.4697739505285814e-5,1.5751417893888703e-8,-0.0013382653066040724,3.475913717423584e-5,1.5803205836748927e-8,-0.0013377198411129057,3.494136132320177e-5,1.593492656261746e-8,-0.0013373043650111932,3.517656334298736e-5,1.610030358752367e-8,-0.001337015439682562,3.5396327466275055e-5,1.6253166407767607e-8,-0.0013368239990238355,3.5548502293726705e-5,1.6358821610884963e-8,-0.0013366882809558854,3.560374914900627e-5,1.639832805964985e-8,-0.001336564467218173,3.55549452941308e-5,1.636783817572624e-8,-0.001336413776905145,3.541320348266067e-5,1.627564290331889e-8,-0.0013362066349266496,3.520293709170862e-5,1.6138666700184393e-8,-0.0013359249232274644,3.4956909941254224e-5,1.5979096337218204e-8,-0.001335562924155841,3.4711420854670354e-5,1.582122151313896e-8,-0.0013351271377057652,3.4501629448674695e-5,1.568840971408109e-8,-0.0013346349529169633,3.435711455278746e-5,1.5600199028356044e-8,-0.0013341121333342526,3.429797828590833e-5,1.5569686455152157e-8,-0.0013335892705868344,3.433199575848479e-5,1.5601580165570786e-8,-0.0013330975858291425,3.4453164621146024e-5,1.5691228226897585e-8,-0.0013326644706178011,3.464175000353744e-5,1.5824749599259128e-8,-0.0013323090899715643,3.4865868704546576e-5,1.5980301002253026e-8,-0.001332038338966892,3.508467362609938e-5,1.6130447896255385e-8,-0.0013318434113794785,3.525330077002587e-5,1.6245627748951825e-8,-0.0013316975322695253,3.5330051294305984e-5,1.629891139049964e-8,-0.001331556286785722,3.528619312938393e-5,1.6272293810409786e-8,-0.0013313628892067757,3.5117465072944155e-5,1.6163989779264318e-8,-0.0013310606240185723,3.485372509921916e-5,1.5994525193249938e-8,-0.001330612092239529,3.4560074860567006e-5,1.5807325007709106e-8,-0.0013300188819388664,3.432251695865668e-5,1.5659203035008636e-8,-0.0013293294672254824,3.4218415257834896e-5,1.5600856484188996e-8,-0.0013286258106659328,3.4284781738908746e-5,1.565595284409048e-8,-0.0013279927272366466,3.45034557497139e-5,1.5811466092247673e-8,-0.001327487245815521,3.481218305757908e-5,1.6025241776050835e-8,-0.0013271243297834456,3.5132573390047304e-5,1.6244759544611692e-8,-0.0013268819281744182,3.539726971412401e-5,1.6425301589944376e-8,-0.0013267165573191055,3.556482846968116e-5,1.6539830337867083e-8,-0.0013265791200544272,3.5621827657685704e-5,1.65802341767557e-8,-0.0013264257556151145,3.5577571686315266e-5,1.6553560503722946e-8,-0.0013262233226004878,3.5456646993180176e-5,1.6476832678516347e-8,-0.0013259512363842734,3.529220284957108e-5,1.637245418374682e-8,-0.001325601512184336,3.512067149730725e-5,1.626470172512635e-8,-0.0013251780734556981,3.497753493359976e-5,1.6177001160356565e-8,-0.0013246955832461917,3.4893601735033355e-5,1.6129548566876927e-8,-0.0013241776457557696,3.48914999010468e-5,1.6137021291032074e-8,-0.001323654076904617,3.4982458503977466e-5,1.6206426975212878e-8,-0.001323157041794967,3.5163901163299414e-5,1.633548781930137e-8,-0.0013227162371304468,3.5418581049974166e-5,1.651211397605036e-8,-0.001322353687199993,3.571581068946272e-5,1.6715367990939248e-8,-0.0013220789387146789,3.601504810064792e-5,1.6918061706656873e-8,-0.0013218855424575772,3.627176280866538e-5,1.7090842854582353e-8,-0.0013217496703317407,3.644508967537851e-5,1.720733490398808e-8,-0.0013216315923340778,3.65064979819164e-5,1.7249749168249524e-8,-0.0013214807524120568,3.644842841848515e-5,1.7214291107647377e-8,-0.0013212451222116156,3.6291038759722376e-5,1.711523751546295e-8,-0.0013208846495029996,3.60839095678969e-5,1.6985751198887913e-8,-0.0013203863550454039,3.5898854230369885e-5,1.6873006904681262e-8,-0.0013197752519399667,3.581166273538234e-5,1.682623169287687e-8,-0.0013191132255276836,3.587626651540886e-5,1.6879911863534467e-8,-0.0013184815790603076,3.610241659999537e-5,1.7039381967031404e-8,-0.0013179528033887597,3.645020189165614e-5,1.7277474450637978e-8,-0.0013175658344386403,3.684610326885073e-5,1.7545256584706124e-8,-0.0013173174371027003,3.721139594219093e-5,1.7790800848516823e-8,-0.0013171711591591722,3.7487162393554715e-5,1.797564920289059e-8,-0.0013170751083556422,3.764583818573417e-5,1.8082333520008842e-8,-0.0013169783809209286,3.768958704883004e-5,1.8113134460390254e-8,-0.001316841058972772,3.764169488899078e-5,1.8084193168326844e-8,-0.001316637900558923,3.7536910324560003e-5,1.8018963620713753e-8,-0.0013163581227781179,3.74137736701684e-5,1.7943079177386814e-8,-0.0013160036253867771,3.730942928907114e-5,1.7880963442603383e-8,-0.0013155869869080489,3.725613444561233e-5,1.7853614375631473e-8,-0.0013151295414577234,3.7278505354125304e-5,1.787686235519351e-8,-0.0013146592408699255,3.7390914042800114e-5,1.7959684433815758e-8,-0.0013142077768859126,3.759497729467439e-5,1.8102557862085905e-8,-0.0013138065061219567,3.787768395385184e-5,1.829626511989185e-8,-0.0013134811566555547,3.821118959139425e-5,1.852186865762894e-8,-0.0013132460042088404,3.855535190871637e-5,1.8752556581883928e-8,-0.0013130988888896927,3.886358760935178e-5,1.895768052314085e-8,-0.0013130187880983333,3.9091668685304416e-5,1.9108648012779857e-8,-0.0013129673945528086,3.920788927157972e-5,1.9185567048502283e-8,-0.001312895240496861,3.920217618512819e-5,1.918302681873874e-8,-0.001312751730863596,3.9091588709663886e-5,1.911338071545348e-8,-0.0013124973851131767,3.892009752658912e-5,1.9006243630838438e-8,-0.0013121156803837925,3.875132474201483e-5,1.8903462645629538e-8,-0.0013116210944716046,3.865427657691962e-5,1.884969011796569e-8,-0.0013110596023093825,3.868436788208665e-5,1.8880112079492577e-8,-0.0013104989534392041,3.8865074759319735e-5,1.9008779400316116e-8,-0.0013100096397849926,3.917783531577995e-5,1.9222392671536106e-8,-0.001309642829716195,3.9566441267412706e-5,1.9483464693369486e-8,-0.0013094148936341004,3.995569860122959e-5,1.974262974906959e-8,-0.0013093055437344233,4.027611457180882e-5,1.9954738594955732e-8,-0.001309269039156997,4.048329051082387e-5,2.0091415425642147e-8,-0.0013092512762208149,4.0565121305456764e-5,2.0145608286767512e-8,-0.001309204630257768,4.053753924890765e-5,2.012862157893427e-8,-0.0013090962818779034,4.043433842048082e-5,2.0063277178960123e-8,-0.0013089102465701447,4.029664197237238e-5,1.997689758602726e-8,-0.0013086455823332675,4.0164989376255385e-5,1.9896096938048397e-8,-0.0013083132488531785,4.0074480065967925e-5,1.984365052124649e-8,-0.0013079330725531747,4.005204604799757e-5,1.9836785608003348e-8,-0.0013075312073712847,4.011466197911539e-5,1.9886069633644747e-8,-0.001307137746835643,4.026767679567208e-5,1.9994358344677895e-8,-0.0013067837953618638,4.0503094151805196e-5,2.01557240211866e-8,-0.001306497350497541,4.079836018355392e-5,2.0354765247593485e-8,-0.0013062978171497592,4.111688713507512e-5,2.0567103458832157e-8,-0.0013061898867567608,4.141184316071489e-5,2.076202115095573e-8,-0.0013061586859034154,4.163420723263055e-5,2.0907824211338083e-8,-0.001306168888940125,4.174442656977121e-5,2.097944515467198e-8,-0.0013061699709006594,4.1724685296821706e-5,2.0966324787464215e-8,-0.0013061076049721034,4.1587191985985025e-5,2.0877595932876798e-8,-0.0013059383156452651,4.137443165518275e-5,2.0741958445759947e-8,-0.0013056425938951044,4.115010375057371e-5,2.060146632532868e-8,-0.0013052319085176942,4.098302152604378e-5,2.0500810520890916e-8,-0.001304747148248314,4.092874780265062e-5,2.0475326047336553e-8,-0.0013042487662768554,4.101434730128175e-5,2.0541288681716853e-8,-0.0013038012226081626,4.1230688242288156e-5,2.0691321547541416e-8,-0.0013034559571685768,4.153480564579156e-5,2.0896370294196396e-8,-0.0013032379646765557,4.186207205593781e-5,2.111390047210881e-8,-0.0013031404096450596,4.214456168589532e-5,2.1299885763046148e-8,-0.0013031290193728036,4.232935992827865e-5,2.1420571741681682e-8,-0.0013031540596875038,4.23905340975399e-5,2.1460031357444974e-8,-0.0013031647722243158,4.233156537247573e-5,2.1421513055924925e-8,-0.0013031210288061141,4.217942322107834e-5,2.132339132411696e-8,-0.0013029993698451085,4.19743987627646e-5,2.1192421768565933e-8,-0.0013027936105723457,4.175999540557228e-5,2.1057114924379603e-8,-0.0013025120277159838,4.157542941681899e-5,2.094288448231488e-8,-0.0013021733414850117,4.145125605159004e-5,2.0869268627645957e-8,-0.001301802931785606,4.1407329810052036e-5,2.08486684580033e-8,-0.0013014297605223135,4.1451908374797514e-5,2.0885812894513818e-8,-0.001301083724057496,4.158098532303902e-5,2.097737756976615e-8,-0.0013007927456693646,4.177756479690925e-5,2.1111607157953057e-8,-0.0013005788777021498,4.201134797256275e-5,2.126826146359011e-8,-0.0013004531008736547,4.224008178027535e-5,2.1419659516259312e-8,-0.0013004095063849311,4.241435176037529e-5,2.1533904163364884e-8,-0.001300421059288809,4.248719684661846e-5,2.1581120022324038e-8,-0.0013004404355749176,4.2427837091928494e-5,2.154224223145945e-8,-0.0013004089398097013,4.223528221728633e-5,2.1417667998620045e-8,-0.001300273032166463,4.194483810430357e-5,2.1231287584532605e-8,-0.0013000028044365167,4.162178844603964e-5,2.1026176296912758e-8,-0.0012996038559836165,4.13426408192214e-5,2.0852193780685487e-8,-0.0012991166051237216,4.117141562699113e-5,2.075042537733095e-8,-0.0012986036072820868,4.11409724530234e-5,2.0741091404972655e-8,-0.00129813093698426,4.1245817779201306e-5,2.0819172199719124e-8,-0.0012977508063343123,4.144686388868798e-5,2.095795336418839e-8,-0.001297490230837804,4.168441992169005e-5,2.1117875653405696e-8,-0.0012973474395914163,4.1894427134593377e-5,2.1257279803455193e-8,-0.001297295439153459,4.2023506126082147e-5,2.1342116234441085e-8,-0.001297290782074011,4.2039616230905444e-5,2.135260920238544e-8,-0.0012972848326498105,4.193654440887813e-5,2.1285844007437435e-8,-0.0012972345579685953,4.173200901824314e-5,2.1154255926592056e-8,-0.0012971103085002236,4.146082617494708e-5,2.0981029477300475e-8,-0.0012968992859630204,4.116578087591e-5,2.0794135694006106e-8,-0.0012966049398672192,4.0888917956883526e-5,2.062073980233298e-8,-0.0012962436295018886,4.066503581169255e-5,2.048307865442981e-8,-0.0012958401889284622,4.051793533458231e-5,2.039611146731544e-8,-0.0012954236654983476,4.045897416475759e-5,2.036662737785466e-8,-0.001295023782419015,4.0486965044612695e-5,2.039320583348045e-8,-0.0012946679941183582,4.058855472756083e-5,2.04665171281949e-8,-0.001294378612670228,4.0738730472340536e-5,2.056977240662803e-8,-0.0012941693814056939,4.0901748941956324e-5,2.0679500965812705e-8,-0.0012940411451917645,4.1033526442706687e-5,2.0767257575044023e-8,-0.0012939771911233996,4.108715604463087e-5,2.0803239961642293e-8,-0.0012939403977219072,4.102298074380838e-5,2.0762689854466084e-8,-0.0012938758566673656,4.082263405184535e-5,2.0634736809638925e-8,-0.0012937224662835883,4.050242606522025e-5,2.04308134609819e-8,-0.0012934330065076513,4.0117530900919203e-5,2.0187204767311665e-8,-0.00129299496709262,3.974958987689844e-5,1.995693470396842e-8,-0.0012924399284722028,3.947942732467301e-5,1.97920270271869e-8,-0.0012918341252307118,3.935776650460108e-5,1.9724509449887175e-8,-0.0012912547182092019,3.938930857514804e-5,1.97562193674393e-8,-0.001290764690673244,3.9536318616132314E-05,1.9861433777957795e-8,-0.0012903973760540492,3.973598386964465e-5,1.999850762256767e-8,-0.001290153512484858,3.992107605315687e-5,2.0123564778314824e-8,-0.0012900074223779303,4.003630507822636e-5,2.0201177921784495e-8,-0.0012899173653183767,4.0047651738485965e-5,2.0210256251888748e-8,-0.001289836338458807,3.9945200597234635e-5,2.0145554957262593e-8,-0.0012897212998023743,3.9741174964429464E-05,2.0016045030261284e-8,-0.0012895399514628268,3.946480109359224e-5,1.984132894245313e-8,-0.001289274703109967,3.915530609271689e-5,1.9647018285539673e-8,-0.0012889236983102278,3.885435148165427e-5,1.9459904493796818e-8,-0.0012884992067051736,3.8599204907948656e-5,1.9303690980758627e-8,-0.0012880241094008248,3.841760919532316e-5,1.919581678542283e-8,-0.0012875274288492854,3.832480054634275e-5,1.9145604099175267e-8,-0.0012870398381923532,3.8322598965528926e-5,1.9153682307136752e-8,-0.001286589752637628,3.840001624621069e-5,1.921238243257403e-8,-0.001286200095515784,3.853470660398659e-5,1.9306731004946026e-8,-0.0012858854886256378,3.86948874374072e-5,1.9415831342562718e-8,-0.001285649499877651,3.8841815281819475e-5,1.9514646939711093e-8,-0.0012854817125208561,3.893347048250045e-5,1.9576511347082232e-8,-0.0012853550995704204,3.893063802338816e-5,1.957702413451274e-8,-0.0012852255062502298,3.880636244566652e-5,1.9499927026725242e-8,-0.0012850362965845573,3.855807120421911e-5,1.9344575221523857e-8,-0.0012847311762881526,3.821819412132976e-5,1.9132471126811794e-8,-0.0012842747415224602,3.785512960173213e-5,1.8907745295762985e-8,-0.0012836727720354248,3.755682902569352e-5,1.8726620068053298e-8,-0.0012829784848701268,3.739895052372073e-5,1.863702330001396e-8,-0.0012822761530718633,3.7413406126274804e-5,1.86584821716486e-8,-0.0012816490975353263,3.7576622715437714e-5,1.8774747376732938e-8,-0.0012811506382189232,3.782352818577273e-5,1.8943030423325083e-8,-0.001280792436308164,3.8075703038799706e-5,1.9112370169816575e-8,-0.0012805506354879592,3.8266803390174146e-5,1.924016463208864e-8,-0.001280380738437669,3.835616719714332e-5,1.9300925603521577e-8,-0.0012802324630361284,3.833113206068958e-5,1.9287565495948508e-8,-0.0012800605197691444,3.820264194508425e-5,1.920823586964087e-8,-0.0012798308757682997,3.799830026151315e-5,1.9081529959526996e-8,-0.001279523586304221,3.775524645033635e-5,1.8931707405877297e-8,-0.0012791333774328948,3.751366233471992e-5,1.8784512978711527e-8,-0.0012786686262423056,3.731102412992637e-5,1.866362274807214e-8,-0.001278148993439162,3.717726455085912e-5,1.858772206348688e-8,-0.001277601942460214,3.7131143654458575e-5,1.8568311190285354e-8,-0.001277058498171101,3.717813474632904e-5,1.860839408251708e-8,-0.0012765487555219646,3.7310038774287194e-5,1.8702216632045073e-8,-0.0012760977084929888,3.750624505138479e-5,1.8836075192321827e-8,-0.0012757217769639956,3.773626898786361e-5,1.8990020553034313e-8,-0.0012754261510291623,3.796321117292025e-5,1.9140234836138346e-8,-0.0012752029370164196,3.814797161205375e-5,1.92619071682081e-8,-0.0012750300928311285,3.825433491231409e-5,1.9332571089335484e-8,-0.0012748715426223701,3.825537269909844e-5,1.933609650898041e-8,-0.0012746797344262949,3.814138317428424e-5,1.926746861138821e-8,-0.0012744025805871105,3.7928235466975745e-5,1.9137729803848053e-8,-0.0012739963106319753,3.76626292022581e-5,1.897701998328715e-8,-0.0012734431088101711,3.741827327675125e-5,1.8832033009774208e-8,-0.0012727667106644165,3.7277449564075795e-5,1.875439150470419e-8,-0.0012720341118107905,3.730026444876515e-5,1.8781318347441222e-8,-0.0012713356167803904,3.749648014380484e-5,1.8917966913490027e-8,-0.0012707503868975216,3.7818967997163176e-5,1.913345694695096e-8,-0.0012703173742792029,3.818460780063819e-5,1.937431495323869e-8,-0.0012700276843224567,3.850870965846999e-5,1.958648929745315e-8,-0.0012698377681131297,3.873234768920965e-5,1.9732821725893906e-8,-0.0012696906468235986,3.883226562099348e-5,1.9799315570624595e-8,-0.0012695333572401244,3.881646913695297e-5,1.9792123553590806e-8,-0.0012693264687479164,3.8713735516634753e-5,1.9730552119127156e-8,-0.0012690470332673868,3.856312435152506e-5,1.9640099461015192e-8,-0.0012686878191508922,3.840594630060172e-5,1.9547213377593628E-08,-0.0012682550883168057,3.8280251328920796e-5,1.9475836828836382e-8,-0.0012677659821863632,3.8216972883763434e-5,1.9445125675948716e-8,-0.0012672456478990807,3.823702573972687e-5,1.9467782522189376e-8,-0.0012667239315270157,3.834915450270301e-5,1.954879813655444e-8,-0.0012662315252516165,3.8548712365379255e-5,1.9684700622829385e-8,-0.0012657956741872701,3.881779556352557e-5,1.9863631777743846E-08,-0.0012654358895180374,3.9127111421915734e-5,2.0066562567351532e-8,-0.0012651603219259492,3.943960149495701e-5,2.0269701099621573e-8,-0.0012649633922718845,3.97155188282893e-5,2.044787773900412e-8,-0.0012648251191054683,3.991847051986315e-5,2.0578512385264233e-8,-0.0012647124020133814,4.002181530954318e-5,2.0645672703362345e-8,-0.0012645824423290432,4.0014854271467307e-5,2.0643806946391964e-8,-0.001264388687972703,3.99081829052254e-5,2.0580779083148893e-8,-0.001264089784429187,3.973682895821391e-5,2.0479457047750557e-8,-0.0012636612589438738,3.955863316563664e-5,2.0376410433125773e-8,-0.001263107692385635,3.944474943991824e-5,2.031587286383709e-8,-0.0012624700916807313,3.9460627398303827e-5,2.0337965483915675e-8,-0.0012618210646095807,3.9641206055020366e-5,2.0463436185732815e-8,-0.0012612438544760331,3.997186027742948e-5,2.0682014530823786e-8,-0.0012608019231333165,4.03889145758586e-5,2.095293879084057e-8,-0.001260515403514942,4.080331509500292e-5,2.1219900523197546e-8,-0.0012603580066779792,4.1134769690694334e-5,2.143251915066937e-8,-0.0012602736669382706,4.133709908764442e-5,2.156229199212994e-8,-0.0012602001674625438,4.140455790552599e-5,2.1606510199617428e-8,-0.0012600871138250655,4.13627425982667e-5,2.1582334626039323e-8,-0.0012599037723692542,4.125395520943257e-5,2.1517286350261602e-8,-0.001259639059405887,4.112448324373034e-5,2.1440993984703374e-8,-0.0012592978126801822,4.1016374406620794e-5,2.1379934028673295e-8,-0.0012588963729254486,4.096310517242658e-5,2.1354792900167895e-8,-0.0012584587728795547,4.0987516848376617e-5,2.13793433801656e-8,-0.0012580135545439072,4.110070043061135e-5,2.145990419081642e-8,-0.001257590729174874,4.130124851631068e-5,2.1594960240885516e-8,-0.0012572184068382751,4.1574933436424366e-5,2.1774990856265992e-8,-0.0012569188758809874,4.1895365866185666e-5,2.198290829395347e-8,-0.0012567044061644376,4.2226400284913416e-5,2.2195638913385633e-8,-0.0012565736154616957,4.252676325544257e-5,2.2387154231576545e-8,-0.0012565095347204847,4.275674007069808e-5,2.2532803702984725e-8,-0.001256480413149145,4.2886024148070224e-5,2.261430451888185e-8,-0.0012564438185601924,4.290116127527485e-5,2.262433259898739e-8,-0.0012563537977570908,4.2810748157597085e-5,2.256953566001536e-8,-0.0012561701266762151,4.264685474788228e-5,2.2471059965738813e-8,-0.001255868216795208,4.246161786198218e-5,2.2362052663867524e-8,-0.00125544775922725,4.2318356345838705e-5,2.2281882031267264e-8,-0.0012549374800614776,4.22774052795677e-5,2.226731056823057e-8,-0.0012543928884045982,4.237873413357958e-5,2.2341924508824796e-8,-0.0012538846382849707,4.262624486160383e-5,2.2506767656905367e-8,-0.0012534783871114205,4.2981135163356555e-5,2.2736596297391955e-8,-0.0012532126561929605,4.3370682260662835e-5,2.2985558206766268e-8,-0.0012530852538086268,4.3711798272939364e-5,2.3201876301994538e-8,-0.0012530559769681426,4.393918260812166e-5,2.3345305957001018e-8,-0.0012530638749481211,4.4024288239515566e-5,2.3398863033464984e-8,-0.0012530490271740113,4.3977672971138264e-5,2.3370162208987406e-8,-0.0012529684380834512,4.383778762251783e-5,2.3284209882351702e-8,-0.0012528018888721966,4.365500575092296e-5,2.317318439808869e-8,-0.001252549834499636,4.34782797526141e-5,2.3067930135885604e-8,-0.0012522276998212633,4.334721846604825e-5,2.2992993745712078e-8,-0.0012518599576908918,4.3288848879161106e-5,2.2964722563118695e-8,-0.0012514754687159037,4.331706400168195e-5,2.299109201556656e-8,-0.0012511041057524219,4.343305080609753e-5,2.3072114029472213e-8,-0.0012507740089569535,4.362583037811218e-5,2.3200256491004583e-8,-0.001250508740600051,4.387284960062057e-5,2.336086149484763e-8,-0.0012503238892904954,4.414121645053139e-5,2.353297738143989e-8,-0.0012502232383400124,4.439057639247119e-5,2.3691245534858623e-8,-0.0012501953913701654,4.4578519987771495e-5,2.380937649691334e-8,-0.0012502124466062187,4.466862199857083e-5,2.386522426953918e-8,-0.0012502324655709908,4.463985453790723e-5,2.38466230351851e-8,-0.0012502066668911443,4.449465916127025e-5,2.3756267679178933e-8,-0.0012500904907569506,4.4262301368479445e-5,2.3613540810084584e-8,-0.0012498556988007213,4.3995081325114545e-5,2.3451824758728542e-8,-0.0012494996714732477,4.375734202677175e-5,2.3311357072906797e-8,-0.0012490486343557058,4.360978994232384e-5,2.3229326501100328e-8,-0.0012485532799728183,4.359328030608507e-5,2.3229896399582473e-8,-0.001248077323762565,4.3716595091107244e-5,2.331696995481848e-8,-0.0012476814413027032,4.395208150458591e-5,2.3471965518926978e-8,-0.0012474066926813987,4.424143994728845e-5,2.3657815110514976e-8,-0.001247262641945451,4.4511219507711075e-5,2.3828756487483382e-8,-0.0012472248755787513,4.469382181566311e-5,2.3943301525145774e-8,-0.0012472435198697964,4.474664503382738e-5,2.3975912178036033e-8,-0.001247259506344416,4.466205719091103e-5,2.3922954185837815e-8,-0.0012472217473297215,4.446513739596869e-5,2.3801066644975018e-8,-0.0012470987187946957,4.420202198632878e-5,2.3639715221988536e-8,-0.0012468817729012385,4.392519162060175e-5,2.3471897838937096e-8,-0.0012465817445801888,4.368137901444268e-5,2.3326586331146017e-8,-0.0012462224178688196,4.3504603084736476e-5,2.3224476425034505e-8,-0.0012458339394664786,4.3413868956406416e-5,2.317671064191687e-8,-0.0012454477067935401,4.341371210977519e-5,2.318536732956266e-8,-0.001245092875503066,4.349582099726864e-5,2.3244572533892913e-8,-0.001244793861427751,4.364070138997217e-5,2.334159650208275e-8,-0.0012445680145702208,4.381919330597018e-5,2.3457855646996076e-8,-0.0012444228840729505,4.399437802864513e-5,2.35701808197754e-8,-0.0012443530695937283,4.4124913953168016e-5,2.3652983748257247e-8,-0.0012443375127046577,4.4170905959475854e-5,2.36819578137255e-8,-0.001244339050323051,4.410267397222573e-5,2.3639490947179656e-8,-0.0012443085409083597,4.391102098493597e-5,2.352090842966235e-8,-0.0012441949428326805,4.361529559426061e-5,2.3339274923289387e-8,-0.0012439599109511782,4.3264248999509696e-5,2.3125688607710063e-8,-0.0012435919172900148,4.292632418466513e-5,2.2923014333021052e-8,-0.0012431132807987672,4.2670863701421686e-5,2.2774032688701237e-8,-0.0012425758812366372,4.2547004754978845e-5,2.2708303443627026e-8,-0.001242046681417017,4.256875652229016e-5,2.273310098467663e-8,-0.0012415887940260054,4.2711639999148036e-5,2.2831736522023835e-8,-0.0012412448848635037,4.292095325018456e-5,2.2969151481539737e-8,-0.0012410276081992223,4.312771971755229e-5,2.310214052847942e-8,-0.0012409187405165644,4.3266945611404475e-5,2.3190749585606232e-8,-0.001240876179833917,4.329319757536537e-5,2.3207763152117412e-8,-0.0012408462077011405,4.3189822733976015e-5,2.314410023143346e-8,-0.001240777320283415,4.297005585476495e-5,2.3009154427995445e-8,-0.0012406317702474867,4.267059575677806e-5,2.2826536022629307e-8,-0.0012403919863629748,4.234042689642282e-5,2.26269926746929e-8,-0.0012400610415698615,4.2028799199970334e-5,2.2440951581700866e-8,-0.0012396584394359302,4.1775753442481906e-5,2.229275950494211e-8,-0.001239213642370792,4.160681735016447e-5,2.2197568374873713e-8,-0.001238759622997134,4.153164993599383e-5,2.21606545642313e-8,-0.0012383277669794706,4.154532626799311e-5,2.217831390256571e-8,-0.0012379443945620973,4.163077699858882e-5,2.223941511624005e-8,-0.0012376284470835346,4.17613701854737e-5,2.2327028899360917e-8,-0.0012373896362990083,4.190335157601163e-5,2.2420000164546246e-8,-0.001237226498897373,4.201852746249583e-5,2.2494706995441768e-8,-0.0012371242703294284,4.2068080603654364e-5,2.2527507113518604e-8,-0.0012370533291036505,4.201858038815096e-5,2.249845761104157e-8,-0.001236970018387961,4.18506164139745e-5,2.239652980094868e-8,-0.0012368223070618539,4.1568658962976625e-5,2.2225481522563593e-8,-0.0012365619116138991,4.120801712255095e-5,2.2007914498811416e-8,-0.0012361611416612153,4.083280694899721e-5,2.1783828379414836e-8,-0.001235627714205694,4.052073423663693e-5,2.1601104914924004e-8,-0.0012350082702082678,4.0337708897671565e-5,2.149979267276202e-8,-0.0012343757042772982,4.031356310619789e-5,2.1497194944095898e-8,-0.0012338050721628741,4.043155020851939e-5,2.1581628688838263e-8,-0.001233349834870539,4.063630930677973e-5,2.1717708568439122e-8,-0.0012330286624901638,4.0854394434720134e-5,2.1859385815913868e-8,-0.001232825543872876,4.1016780529853954e-5,2.1964061307544442e-8,-0.0012326994687433222,4.1075328421856106e-5,2.20027389188401e-8,-0.001232597984556413,4.1010377237678075e-5,2.196447509602127e-8,-0.0012324701701386766,4.083038763729262e-5,2.1855784862297425e-8,-0.0012322765508626758,4.0566046838917725e-5,2.1696628675659008e-8,-0.0012319949600370919,4.026131873137667e-5,2.151464212796346e-8,-0.0012316222127142264,3.996359807215556e-5,2.1339009160521587e-8,-0.0012311720726316338,3.971485937041825e-5,2.1195127901571155e-8,-0.001230670573013148,3.954524762662862e-5,2.1100877649413684e-8,-0.0012301501032358588,3.946977464651513e-5,2.1064790494578928e-8,-0.0012296436170803153,3.9487963552311815e-5,2.108595595697376e-8,-0.0012291799191749856,3.958568949318732e-5,2.1155185653788322e-8,-0.0012287803742935324,3.973818698101526e-5,2.1256853700710867e-8,-0.001228456809047748,3.991337515449703e-5,2.1370956879184295e-8,-0.0012282101383242943,4.007518264093764e-5,2.1475236423481508e-8,-0.0012280293349605576,4.0187061533075706e-5,2.1547450730279715e-8,-0.0012278906587169442,4.0216265386799466e-5,2.1568075140606426e-8,-0.001227757733952711,4.0139660658889306e-5,2.152381649965794e-8,-0.001227584040852701,3.995131561109933e-5,2.141206714008766e-8,-0.0012273199557392438,3.9670437193476325e-5,2.1245481814044025e-8,-0.0012269256617048919,3.934568255249432e-5,2.1054357934419238e-8,-0.001226387988600605,3.9049849819512705e-5,2.088324803621528e-8,-0.0012257337792927004,3.886073981427376e-5,2.077925099285005e-8,-0.001225029176986983,3.8832259555441034e-5,2.0774438780732722e-8,-0.0012243597146831978,3.897014608672804e-5,2.087118383561181e-8,-0.001223799174185458,3.922790438935534e-5,2.1039910874573118e-8,-0.0012233842237546633,3.952612757691313e-5,2.123118242844517e-8,-0.001223107335217403,3.9782946538246464e-5,2.139456934167179e-8,-0.0012229273220081428,3.993907780657064e-5,2.1494114292522025e-8,-0.001222787747765819,3.996887325239496e-5,2.1515041468992588e-8,-0.0012226337779387417,3.987869845089384e-5,2.1462498186417195e-8,-0.0012224231672501788,3.9698352797038394e-5,2.135591073507243e-8,-0.001222131287192134,3.94706075535104e-5,2.1222223071618265e-8,-0.0012217517999359017,3.924165377627985e-5,2.1089871554669243e-8,-0.0012212945943425393,3.905340977839935e-5,2.0984126176207197e-8,-0.0012207820344604945,3.8937868022761935e-5,2.0923847255017387e-8,-0.0012202442110411317,3.891356765329418e-5,2.0919587003276005e-8,-0.0012197138193019857,3.898419985757117e-5,2.0972925719657997e-8,-0.0012192212575737466,3.913919956043711e-5,2.1076902982625034e-8,-0.0012187904880345962,3.9356035455342134e-5,2.1217396945348294e-8,-0.001218436045934365,3.960367962125383e-5,2.1375213106972125e-8,-0.00121816125440768,3.9846620466140236e-5,2.1528562534707792e-8,-0.0012179574526165029,4.004903399140244e-5,2.165570613461297e-8,-0.0012178040605647724,4.0179078031285165e-5,2.1737684879836926e-8,-0.001217669467291421,4.021348370120589e-5,2.1761144819940345e-8,-0.0012175131332450237,4.014272182328031e-5,2.1721351070588032e-8,-0.001217289990042325,3.997662689165655e-5,2.162532349147562e-8,-0.0012169585457825218,3.9749007528304005e-5,2.1494297600574853e-8,-0.0012164931847068905,3.9517836703297245e-5,2.136358703249228e-8,-0.0012158983378917096,3.9356329110915773e-5,2.1277115324960004e-8,-0.0012152176438466392,3.9332104759699913E-05,2.127493647531436e-8,-0.001214528479586985,3.947928991470707e-5,2.1376600643727462e-8,-0.0012139177363669367,3.9778311663362115e-5,2.1569180758206194e-8,-0.0012134484162272517,4.015900048914238e-5,2.180933946924029e-8,-0.0012131363021741985,4.052837642935356e-5,2.2040280902569133e-8,-0.0012129497831343294,4.080665261167639e-5,2.2213672818770073e-8,-0.0012128291159121656,4.095125233841926e-5,2.230428148992462e-8,-0.001212710628911282,4.096082546243361e-5,2.2312340353820234e-8,-0.0012125440419645064,4.0864936103992574e-5,2.2257017392004202e-8,-0.0012122998065612566,4.070927702557695e-5,2.2167052698862267e-8,-0.001211969092054254,4.054291261138361e-5,2.207270204179144e-8,-0.0012115601294701622,4.04096307802744e-5,2.2000393390250897e-8,-0.0012110935055385707,4.034290695442932e-5,2.1969806882960636e-8,-0.001210597514896922,4.0363263803066746e-5,2.1992540281281542e-8,-0.001210103734529621,4.047720018381726e-5,2.2071717239761007e-8,-0.0012096427900898502,4.0677387217859966e-5,2.22022573473533e-8,-0.0012092403935229314,4.094407090176532e-5,2.237175494917936e-8,-0.0012089138646246408,4.124773087837309e-5,2.2562054742508997e-8,-0.001208669509931094,4.155294488543246e-5,2.2751575294808985e-8,-0.0012085012343950414,4.1823087158483395e-5,2.2918206290301382e-8,-0.0012083905541689021,4.20253509279023e-5,2.304245225579731e-8,-0.0012083080279941285,4.213570362400274e-5,2.3110503419034456e-8,-0.0012082161114372763,4.2143459888724324e-5,2.3116949841108062e-8,-0.0012080735324706796,4.2055159230597596e-5,2.3066900585552403e-8,-0.001207841533426535,4.189723091537656e-5,2.297724001603263e-8,-0.0012074923383279116,4.171613868549196e-5,2.2876363669851336e-8,-0.001207019283053891,4.157362669411139e-5,2.2801120538061767e-8,-0.0012064459189305014,4.1534493783767346e-5,2.2789521758592166e-8,-0.0012058286024298984,4.164656524482071e-5,2.2869009240234377e-8,-0.0012052460554162017,4.19184087749905e-5,2.3043477200400544e-8,-0.0012047743940046401,4.2307229374438395e-5,2.3286316882609802e-8,-0.0012044572585227797,4.272895499439604e-5,2.3546579750409415e-8,-0.001204288381331058,4.308962693418823e-5,2.376779519103741e-8,-0.0012042176630236775,4.332107815521141e-5,2.390938507508682e-8,-0.0012041753802073372,4.340093341660907e-5,2.3958706867713977e-8,-0.00120409843142815,4.335014281596996e-5,2.3929491995290315e-8,-0.0012039461046134032,4.3216266495513626e-5,2.3851510393422998e-8,-0.0012037033879847602,4.305483536435831e-5,2.3758982441867673e-8,-0.001203376539335363,4.291599030590616e-5,2.368228317218689e-8,-0.00120298613557427,4.283755592078561e-5,2.364376268900528e-8,-0.00120256066507784,4.2842730196850536e-5,2.365655954004364e-8,-0.0012021315896690958,4.29401323049733e-5,2.3724918753893763e-8,-0.0012017295357681474,4.3124764351869256e-5,2.384500705422323e-8,-0.0012013810188355309,4.3379445958178134e-5,2.400589014719376e-8,-0.0012011053959982453,4.367684303151363e-5,2.4190760318183176e-8,-0.0012009120711434845,4.3982426851927915e-5,2.4378686124360526e-8,-0.001200798320179096,4.4258666524398955e-5,2.4547135559008024e-8,-0.0012007483813156155,4.447035815567847e-5,2.4675237441635286e-8,-0.0012007344048218429,4.45904789956841e-5,2.4747373111654414e-8,-0.0012007195396916456,4.4605667043112055E-05,2.475647427648304e-8,-0.0012006630679124704,4.4520319606676825e-5,2.4706349244549025e-8,-0.0012005271433299393,4.435834252862902e-5,2.4612444809990292e-8,-0.0012002844344340745,4.416178423355356e-5,2.450065938028214e-8,-0.0011999257549066937,4.39856842762662e-5,2.4403951995426074e-8,-0.0011994662184232547,4.3888471317910234e-5,2.435650342589999e-8,-0.001198947460842372,4.3917923813857226e-5,2.43855173915342e-8,-0.001198432684587654,4.409482178445086e-5,2.4501884310528832e-8,-0.0011979921332492878,4.43998509534339e-5,2.469284335350204e-8,-0.00119768078598594,4.4772044938470945e-5,2.492136091235081e-8,-0.0011975168459692923,4.512476493318901e-5,2.5135693210741254e-8,-0.00119747326559844,4.53756385533257e-5,2.528710231716238e-8,-0.0011974888649364393,4.547604253094459e-5,2.5347319618533324e-8,-0.0011974930862349044,4.542451975687877e-5,2.5316491092253453e-8,-0.0011974302262546881,4.525952548655604e-5,2.5218719541367353e-8,-0.0011972721728209824,4.5039793706352555e-5,2.509006550443868e-8,-0.0011970183063790395,4.48245155389913e-5,2.4966396418741908e-8,-0.001196687932279745,4.4660550904328974e-5,2.487559033145641e-8,-0.0011963111623788396,4.457738285834904e-5,2.4834604037411308e-8,-0.0011959215436754737,4.45871920184613e-5,2.4849769736576936e-8,-0.0011955511692190652,4.468712727908596e-5,2.4918432734679642e-8,-0.0011952275920148667,4.486193679281758e-5,2.5030717037665653e-8,-0.001194971551310585,4.508639373150898e-5,2.5171047327290172e-8,-0.001194794863314542,4.5327777567539424e-5,2.5319623085596163e-8,-0.001194698341899172,4.554901617532855e-5,2.5454274898017947e-8,-0.0011946701458042791,4.5713081220382614e-5,2.555310251854561e-8,-0.0011946854231435274,4.5788787339589856e-5,2.5597980508971714e-8,-0.0011947082714650892,4.575734391539159e-5,2.5578493326096783e-8,-0.0011946966519119835,4.561819225984636e-5,2.5495358009355167e-8,-0.0011946100335258174,4.539218001394653e-5,2.536213072497259e-8,-0.0011944184455051122,4.512031317912244e-5,2.5204163446924352e-8,-0.0011941107653257608,4.485734384224478e-5,2.5054453515492776e-8,-0.0011936999083235803,4.466088478508766e-5,2.4946937452023213e-8,-0.0011932230592092813,4.457796164782929e-5,2.4908499047797812e-8,-0.001192735881163747,4.463180004644925e-5,2.4951402925395812e-8,-0.0011923007264965835,4.481237616870531e-5,2.506816181625162e-8,-0.001191970530689217,4.507461064861558e-5,2.523093820360962e-8,-0.0011917724140860335,4.5347229185161454e-5,2.5397066980609755e-8,-0.0011916972032087528,4.5552150560644986e-5,2.552053976524705e-8,-0.0011917008223672682,4.5628853227269786e-5,2.55662585680403e-8,-0.001191718836140086,4.55536438037028e-5,2.5521241678494558e-8,-0.0011916882079971906,4.534483429463704e-5,2.5397506076360736e-8,-0.0011915661764232738,4.50523352358896e-5,2.52256885925892e-8,-0.0011913387387294007,4.47385355732246e-5,2.504346293478613e-8,-0.0011910180546011024,4.446011631860293e-5,2.4884567965759092e-8,-0.0011906333941084394,4.425692301702829e-5,2.4772196056940904e-8,-0.0011902211184680275,4.414860982271032e-5,2.4717178867113547e-8,-0.0011898169790774708,4.4136455261757274e-5,2.4719329452121577e-8,-0.0011894514485054754,4.4207250005153805e-5,2.4769977404092045e-8,-0.0011891472970888017,4.43372203473938e-5,2.4854416724191735e-8,-0.0011889182539292847,4.449528806773453e-5,2.4953861754942293e-8,-0.0011887678749798924,4.464592966057503e-5,2.504712463555681e-8,-0.0011886883030289687,4.4752380198887884e-5,2.5112510632544797e-8,-0.0011886592771498138,4.478098874931083e-5,2.5130424449580425e-8,-0.0011886483992062577,4.4707117457076194e-5,2.5086889829383304e-8,-0.0011886140329250244,4.4522010180780784e-5,2.4977592415005244e-8,-0.0011885119078034235,4.4238713784012066e-5,2.4811273251672534e-8,-0.0011883051844906306,4.3894051675223444e-5,2.461069041472246e-8,-0.0011879756183442926,4.354386275480496e-5,2.4409531085824178e-8,-0.0011875317045031677,4.3250911754683235e-5,2.4244998266980886e-8,-0.001187009814984017,4.306830808202916e-5,2.4147865942933328e-8,-0.0011864667588603476,4.302388062774488e-5,2.4133330210664937e-8,-0.0011859656180111609,4.3111034611001064e-5,2.4195943412766552e-8,-0.0011855592107146609,4.328925296709795e-5,2.4310387221332328e-8,-0.0011852761111206852,4.349413359054941e-5,2.443782423047731e-8,-0.0011851131455521931,4.3654131747047644e-5,2.4535986395746288e-8,-0.0011850365116463047,4.370946428713365e-5,2.4570271546609728e-8,-0.0011849914632903148,4.362784368851426e-5,2.4522773768495008e-8,-0.001184917896100419,4.341215487751708e-5,2.43964861556252e-8,-0.0011847668283073867,4.3097519747167916e-5,2.4213256739576758e-8,-0.001184512183165127,4.273915270154866e-5,2.400637699709233e-8,-0.001184154359433377,4.239606712181469e-5,2.381082880477647e-8,-0.001183715829325232,4.211673537541401e-5,2.3654834718410355e-8,-0.001183232091457753,4.193072848064575e-5,2.355508585492585e-8,-0.001182742076052658,4.184692919527811e-5,2.351593181722576e-8,-0.001182280783554334,4.185637277082278e-5,2.3531280291149167e-8,-0.0011818749650736491,4.193705913158789e-5,2.3587563717348847e-8,-0.0011815412371566454,4.20587459208501e-5,2.3666591547139997e-8,-0.001181285518418681,4.218688550045602e-5,2.374784651401943e-8,-0.0011811028444095974,4.2285853886151184e-5,2.381037385561812e-8,-0.001180977123076948,4.232217251513254e-5,2.3834703066651765e-8,-0.0011808810539391222,4.2268560697046846e-5,2.3805269882627502e-8,-0.0011807771612472478,4.2109361969074505e-5,2.3713602572318883e-8,-0.0011806214602274067,4.1846957049957275e-5,2.356200196449372e-8,-0.0011803711677501327,4.150714518977967e-5,2.3366529209186637e-8,-0.0011799963986054275,4.113978509884284e-5,2.3157162420999488e-8,-0.0011794927933482826,4.08108363408142e-5,2.2972909369344754e-8,-0.0011788890049142986,4.058504354233647e-5,2.2851491515976213e-8,-0.0011782430294203484,4.050438512482597e-5,2.2816671906510717e-8,-0.0011776263052778516,4.0571991173592686e-5,2.2868981508891815e-8,-0.0011771016155169122,4.074982996867079e-5,2.2984703383283737e-8,-0.0011767044632477951,4.097122380197114e-5,2.3123630234264177e-8,-0.0011764349839248737,4.1161829736862925e-5,2.3241707139593455e-8,-0.0011762614801303043,4.1260299791107996e-5,2.330328303434297e-8,-0.0011761320404088328,4.1232336783918625e-5,2.328924297558214e-8,-0.0011759893133244327,4.1075838938516295e-5,2.3199711124094704e-8,-0.0011757842580515552,4.081779203779472e-5,2.3051819147004552e-8,-0.001175486057786376,4.050513963720658e-5,2.2873984543674025e-8,-0.0011750866908770193,4.0192525827399625e-5,2.2698514425147638e-8,-0.0011745998913217442,3.9930000443378806e-5,2.2554401861589946e-8,-0.0011740555181366963,3.975350915748105e-5,2.2461942074838184e-8,-0.0011734914447389271,3.967996159531561e-5,2.2430123462058758e-8,-0.001172945410878914,3.970705295686038e-5,2.245677720924922e-8,-0.0011724486794790487,3.981662159239835e-5,2.2530685939862905e-8,-0.0011720222605774908,3.997974255206267e-5,2.263458529327139e-8,-0.0011716754580197422,4.0161947727554296e-5,2.274816904236688e-8,-0.0011714059108263474,4.032766224367516e-5,2.285064391621753e-8,-0.0011712002787532773,4.044378850159482e-5,2.2922839703133115e-8,-0.001171035100466492,4.048293650443117e-5,2.2949153547451752e-8,-0.0011708778846540614,4.042697766162125e-5,2.2919658210313572e-8,-0.0011706891457959967,4.0271429475899425e-5,2.2832600750891778e-8,-0.001170426728995793,4.0030416719605716e-5,2.269711830719015e-8,-0.0011700538042031948,3.9740414742010276e-5,2.253517245414926e-8,-0.0011695506069301434,3.945916078722506e-5,2.2380689483545792e-8,-0.0011689268944945577,3.9255517922141815e-5,2.227353935744273e-8,-0.001168228173677312,3.918909798715985e-5,2.224769728531718e-8,-0.0011675279781217165,3.9285907063139966e-5,2.2317220439852915e-8,-0.0011669049542857158,3.952322670802093e-5,2.24676871654407e-8,-0.0011664145207980038,3.9834885125080155e-5,2.265953681114611e-8,-0.001166070295452867,4.013563731944959e-5,2.2842517129925196e-8,-0.0011658440641923867,4.035108613749354e-5,2.2973299450432576e-8,-0.0011656808972777184,4.043846993678506e-5,2.302764914878378e-8,-0.0011655191438936243,4.039246802510346e-5,2.300366653105076e-8,-0.0011653067613803536,4.023909875147127e-5,2.291788321046429e-8,-0.001165010689103841,4.002390781978695e-5,2.2797942341975254e-8,-0.0011646197556137458,3.979940906101893e-5,2.2674938420648966e-8,-0.0011641429633779334,3.961443280877213e-5,2.2577103601577477e-8,-0.0011636049134929856,3.950632417993853e-5,2.252541402741315e-8,-0.0011630396411959254,3.9496218494349576e-5,2.253115281543781e-8,-0.001162483900516477,3.95874667786907e-5,2.2595320378682432e-8,-0.0011619709327954436,3.976699600781008e-5,2.2709638135691125e-8,-0.0011615255979191684,4.000893838449559e-5,2.2858712233979922e-8,-0.0011611613858706039,4.0279582776409567e-5,2.3022849008527116e-8,-0.001160879376169587,4.054263299169933e-5,2.3181024514051384e-8,-0.0011606687592218374,4.076394687408465e-5,2.3313608208272293e-8,-0.0011605083240079387,4.09154288041749e-5,2.3404666156265128e-8,-0.00116036847554564,4.097823517679709e-5,2.34438834621506e-8,-0.0011602136824594566,4.0945659648512586e-5,2.3428227761797474e-8,-0.0011600057215318002,4.0826012397539306e-5,2.3363471925632195e-8,-0.0011597086232655231,4.0645264473458956e-5,2.326545539839303e-8,-0.0011592962457193116,4.0447999006798314e-5,2.3160337368834338e-8,-0.00115876229853727,4.0293821820255384e-5,2.3082332980724006e-8,-0.0011581301558147067,4.0245920350732926e-5,2.3067127381392428e-8,-0.0011574563121098651,4.035081622828792e-5,2.3140425634618856e-8,-0.0011568199270357543,4.061526212816023e-5,2.3304961265381497e-8,-0.0011562968471505665,4.099409631845051e-5,2.353376588241085e-8,-0.0011559290458727804,4.140161770840252e-5,2.3776854904296303e-8,-0.0011557078806939019,4.1744238983237644e-5,2.3980097768470524e-8,-0.0011555814912751524,4.195588110422897e-5,2.4105697188319998E-08,-0.001155479481195814,4.201658493401853e-5,2.4142985129680127e-8,-0.00115533863075793,4.194919447273282e-5,2.4106395513946268e-8,-0.0011551182129401877,4.1802901903976074e-5,2.4025610864818883e-8,-0.0011548035981328402,4.163510488935334e-5,2.3934641492285587e-8,-0.0011544024679921467,4.149790402491649e-5,2.3863731188845464e-8,-0.0011539381598193543,4.143037373269924e-5,2.3834886083816383e-8,-0.0011534428504190312,4.145529592249755e-5,2.3860242372633465e-8,-0.0011529515734318722,4.157867605802834e-5,2.3942156152824156e-8,-0.001152497126030711,4.17910018793201e-5,2.407424330087287e-8,-0.00115210581430915,4.2069853360416185e-5,2.4243037050196697e-8,-0.001151794185245135,4.238365328686831e-5,2.4430139497299415e-8,-0.0011515669930675036,4.269628302794372e-5,2.461478437537122e-8,-0.0011514166348674099,4.2972125399724006e-5,2.4776661433350763e-8,-0.0011513241096236361,4.318091082678523e-5,2.4898702175336794e-8,-0.0011512612721551612,4.330181717597658e-5,2.496949457208967e-8,-0.001151194039557355,4.332656629776271e-5,2.4985098203453446e-8,-0.0011510862887999457,4.326145348232724e-5,2.4950132422663092e-8,-0.0011509043845628019,4.312830423117919e-5,2.4878096818187747e-8,-0.0011506225888506414,4.296414251839801e-5,2.4790856099194497e-8,-0.0011502295873348479,4.281860836006933e-5,2.4716871495239724e-8,-0.0011497354598191344,4.27473669523015e-5,2.4687324428481763e-8,-0.0011491767132249047,4.27998987093043e-5,2.4729297172923822e-8,-0.0011486149745644995,4.300208635109734e-5,2.4856210146960896e-8,-0.0011481242788471762,4.333890754543513e-5,2.505836780419132e-8,-0.0011477663805973333,4.37484335258334e-5,2.529978271595454e-8,-0.0011475638693054652,4.413754488074797e-5,2.552713565537854e-8,-0.0011474880690233208,4.441675095791563e-5,2.5689536506059154e-8,-0.0011474716437174161,4.4535329714636256e-5,2.5758576446798924e-8,-0.0011474381423005444,4.4496153607781065e-5,2.573686319342581e-8,-0.0011473298248947472,4.434525522139947e-5,2.5651963688180006e-8,-0.0011471206519927625,4.4148021131686344e-5,2.5542431090685233e-8,-0.0011468143867924144,4.396712744434881e-5,2.5444745012451112e-8,-0.001146435178096694,4.384958556407789e-5,2.538566338712817e-8,-0.0011460173053052653,4.382244135856911e-5,2.537984964690841e-8,-0.0011455972066733823,4.389369052636168e-5,2.543072424927479e-8,-0.001145208205189756,4.4055310810386594e-5,2.553258147049571e-8,-0.0011448771116926027,4.4286732802865605e-5,2.5672846892049696e-8,-0.001144621838537778,4.455834866317327e-5,2.5834176207532318e-8,-0.0011444496596464482,4.483524010238264e-5,2.5996533958276677e-8,-0.0011443561757723407,4.508136367107901e-5,2.6139484084071172e-8,-0.001144325302176957,4.526422796836885e-5,2.624479996609313e-8,-0.0011443306796744088,4.5359678801102835e-5,2.629920696942144e-8,-0.001144338684074093,4.535607232962796e-5,2.6296805202445227e-8,-0.0011443128443530714,4.525711697688811e-5,2.6240674007741413e-8,-0.0011442192204715602,4.5082805045375516e-5,2.6143256225398415e-8,-0.0011440321422607781,4.4868033997148654e-5,2.6025290536327584e-8,-0.0011437397009143968,4.465876200865301e-5,2.5913293776335838e-8,-0.0011433483936894827,4.450556201387472e-5,2.5835666573269417e-8,-0.0011428859132346458,4.4454301330230345e-5,2.5817407374967364e-8,-0.0011424002463549068,4.4534205124580296e-5,2.587362598157788e-8,-0.0011419527122034946,4.474530750720313e-5,2.600289980431649e-8,-0.0011416033368196802,4.505002810376823e-5,2.618294554588382e-8,-0.001141390428908636,4.5375931822066494e-5,2.6372385764556846e-8,-0.0011413123883100827,4.5634818511907473e-5,2.6521473534591453e-8,-0.001141323589395823,4.5754058078499044e-5,2.6589641295518906e-8,-0.0011413505127724332,4.570482861131677e-5,2.65614039044391e-8,-0.0011413207093381398,4.5510745451041515e-5,2.6451239643199213e-8,-0.001141188094617734,4.523323032317512e-5,2.6295158823665544e-8,-0.0011409425267060696,4.494512245552072e-5,2.613539055975473e-8,-0.0011406039242835295,4.470782444666231e-5,2.6007055239340012e-8,-0.001140209199720666,4.455976514490526e-5,2.5931497221064563e-8,-0.0011397998215520568,4.451513360626569e-5,2.591575701768682e-8,-0.001139413450043509,4.456814837601221e-5,2.595536246540539e-8,-0.0011390795966643849,4.469876670368622e-5,2.60379203690528e-8,-0.0011388178217883774,4.487777100093782e-5,2.614620234117578e-8,-0.001138637029323737,4.507087406977781e-5,2.6260499784491232e-8,-0.0011385351171898522,4.524231213375679e-5,2.636058011508952e-8,-0.001138498908997064,4.5358536475447353e-5,2.6427687830903223e-8,-0.001138504742717813,4.539239795883406e-5,2.6446876610957435e-8,-0.0011385203577618363,4.5327686077719404e-5,2.6409596426616204e-8,-0.001138508626476679,4.5163215308385346e-5,2.6316020938140107e-8,-0.001138433164520453,4.491524922861346e-5,2.617635271007851e-8,-0.0011382651611644248,4.461705208805853e-5,2.60103768433134e-8,-0.0011379901212315725,4.431475914112068e-5,2.5844832363761734e-8,-0.0011376128472153897,4.405962607495448e-5,2.5708742448517676e-8,-0.0011371591432191399,4.38977377850055e-5,2.5627459120037902e-8,-0.0011366732292220137,4.385892899825392e-5,2.561652405049774e-8,-0.0011362103950232623,4.394710877414942e-5,2.5676581411835278e-8,-0.0011358251542952108,4.413475261191414e-5,2.5790765942044402e-8,-0.0011355565320898134,4.436471443508226e-5,2.5926126309661128e-8,-0.0011354142388612493,4.456177182242592e-5,2.6040272006294392e-8,-0.0011353715564004837,4.4653360616528623e-5,2.6092925147649926e-8,-0.0011353705510015804,4.459362909579968e-5,2.605922322764486e-8,-0.0011353404038372476,4.4380227560943225e-5,2.5938971302698022e-8,-0.0011352217466509087,4.405454262243014e-5,2.5756616732937143e-8,-0.0011349852948189293,4.368490247039827e-5,2.5551578991552723e-8,-0.0011346366674042077,4.334216194977203e-5,2.5364227495662016e-8,-0.001134208126523297,4.307971922662928e-5,2.5224447033233243e-8,-0.0011337443916172296,4.292448780803408e-5,2.5146609857361533e-8,-0.0011332897864486306,4.287791196077834e-5,2.5130427988720302e-8,-0.0011328801743606684,4.292232941936807e-5,2.5164886702881576e-8,-0.0011325395437544183,4.302832693352377e-5,2.5232645329543546e-8,-0.0011322795036267984,4.316082969546979e-5,2.5313558114926845e-8,-0.0011320999644248192,4.328354167402069e-5,2.538712994851353e-8,-0.0011319900022255828,4.336233306022805e-5,2.5434328063291953e-8,-0.0011319286947636842,4.336840808418778e-5,2.5439298179225213e-8,-0.0011318863330729578,4.328188187579225e-5,2.5391365668682646e-8,-0.001131826798984989,4.309582777844892e-5,2.5287327028303578e-8,-0.0011317119237820342,4.282000536402383e-5,2.513352362103692e-8,-0.0011315081184450266,4.248267021715128e-5,2.4946745756693704e-8,-0.0011311944679122136,4.212855215251888e-5,2.47528810798855e-8,-0.001130770145740669,4.181171313272162e-5,2.458263730132284e-8,-0.0011302581872849279,4.158375073838242e-5,2.446470685820663e-8,-0.0011297031604086858,4.1480108144529596e-5,2.4418045723061402e-8,-0.001129162188693781,4.15087736209508e-5,2.4445738038119535e-8,-0.001128691235841923,4.164541695493883e-5,2.453267453652789e-8,-0.0011283303644603515,4.1837167858544846e-5,2.464812593336712e-8,-0.0011280922029762194,4.201470996660632e-5,2.4752841228200912e-8,-0.0011279572033331556,4.2109977185660934e-5,2.480903447905591e-8,-0.0011278777807429035,4.2074869072542864e-5,2.4790706388729773e-8,-0.0011277911058960631,4.189530837193729e-5,2.4691226160505966e-8,-0.0011276372138476932,4.15954194176583e-5,2.4525357679971217e-8,-0.0011273763094417542,4.1229584247699144e-5,2.4324526909304625e-8,-0.0011269987883137111,4.0865150594873515e-5,2.4126913313744505e-8,-0.0011265246487921932,4.056282496645149e-5,2.396636013648397e-8,-0.0011259939870450367,4.0362229990203176e-5,2.3864352719984643e-8,-0.0011254538280006646,4.027651035222083e-5,2.3827236887481313e-8,-0.0011249466443459084,4.029509964658356e-5,2.3848081936514294e-8,-0.0011245033782163948,4.0390924133027086e-5,2.3910968573532058e-8,-0.0011241409403492657,4.052829514471608e-5,2.3995517170635476e-8,-0.00112386263638038,4.066934213518109e-5,2.4080458369857855e-8,-0.001123659844043524,4.077852227744454e-5,2.4146059818045725e-8,-0.0011235138537491161,4.082575535334954e-5,2.417579891950277e-8,-0.0011233975399612892,4.078906093563617e-5,2.4157813543967808e-8,-0.0011232772130354719,4.065741806846923e-5,2.4086515680471002e-8,-0.0011231154772805123,4.043402590037051e-5,2.3964410167377178e-8,-0.0011228760409062776,4.0139252991621545e-5,2.380366568263808e-8,-0.0011225309508780508,3.9811507466245704e-5,2.362643573893063e-8,-0.0011220694021852218,3.9503593998477884e-5,2.3462607402847364e-8,-0.0011215052868612503,3.927276808058977e-5,2.334405693151438e-8,-0.0011208791815421717,3.916532907922445e-5,2.32959719470691e-8,-0.0011202512996662164,3.9200465609938846e-5,2.332793726446843e-8,-0.001119685750452599,3.936055511280073e-5,2.3428801926640012e-8,-0.0011192313624241938,3.959351310628623e-5,2.3568365483427852e-8,-0.0011189067970222813,3.982728786145331e-5,2.370580293829856e-8,-0.0011186957125675833,3.9990849821071303e-5,2.380156013682102e-8,-0.0011185529359586416,4.003380335406222e-5,2.382827657042045e-8,-0.0011184183604654927,3.9938559297950844e-5,2.3777363910180102e-8,-0.0011182335261142832,3.972257873820071e-5,2.365991178424167e-8,-0.0011179561348970367,3.943138742499119e-5,2.3502406776038373e-8,-0.0011175690250342211,3.9125231705559594e-5,2.333898219278873e-8,-0.0011170818909624026,3.8863484851492184e-5,2.3202592856615218e-8,-0.0011165261146400343,3.869113689297805e-5,2.3117576365828163e-8,-0.0011159450191786187,3.863070018781825e-5,2.309541688994295e-8,-0.001115382950846316,3.8680782729081375e-5,2.3134291481037248e-8,-0.0011148763323054643,3.88202433349568e-5,2.3221657136516122e-8,-0.0011144484116093652,3.9015366788503146e-5,2.333836405534532e-8,-0.0011141077300649053,3.922741200952648e-5,2.3462821981382622e-8,-0.0011138492060015412,3.941880989590515e-5,2.357433208540127e-8,-0.0011136564631223104,3.955748183796071e-5,2.3655382121537695e-8,-0.001113504398766395,3.961966181875024e-5,2.3693174947865333e-8,-0.0011133616119702572,3.9591985478981636e-5,2.3680806672121074e-8,-0.0011131929173312004,3.9473502927766754e-5,2.3618399758240768e-8,-0.001112962646214551,3.927781992830418e-5,2.3514237054040706e-8,-0.0011126396430199091,3.903476453581059e-5,2.338553477815076e-8,-0.0011122044622860591,3.878987372235069e-5,2.325794563447264e-8,-0.0011116579050496058,3.859916050478475e-5,2.3162471082326266e-8,-0.0011110277638066819,3.8517161490373446e-5,2.3128770665243614e-8,-0.0011103686318442126,3.857932217863279e-5,2.317550345585091e-8,-0.0011097504345893342,3.878498007287958e-5,2.3301147042226735e-8,-0.0011092368658773112,3.909083067031221e-5,2.348067606937274e-8,-0.001108862561025627,3.9421677057301995e-5,2.3671766690779e-8,-0.0011086207894536008,3.969541345367182e-5,2.3828789988108746e-8,-0.001108467784835197,3.9850203582443234e-5,2.3917930158623212e-8,-0.0011083400223898265,3.986149013467848e-5,2.3926558339224554e-8,-0.0011081749835332257,3.9744019406875444e-5,2.3864144977322292e-8,-0.0011079272311021648,3.954206227866765e-5,2.3756473773474773e-8,-0.0011075764036130426,3.9314276041815806e-5,2.3636846724881514e-8,-0.0011071276513506274,3.911872082508301e-5,2.353751460723729e-8,-0.001106606712234522,3.9001210256697606e-5,2.3483218868648787e-8,-0.0011060519911277476,3.8988244203939216e-5,2.3487531140898155e-8,-0.001105505670300844,3.908468395961993e-5,2.3551953376769463e-8,-0.001105005565791467,3.927568764132802e-5,2.3667339954019526e-8,-0.0011045790708096976,3.9531788880221474e-5,2.3816896490402398e-8,-0.0011042398847317478,3.9815546406795756e-5,2.397985579796228e-8,-0.0011039874767033147,4.008822786866677e-5,2.413504494817365e-8,-0.0011038086569949937,4.031539899273079e-5,2.4263827315283715e-8,-0.0011036803427045844,4.047087645509333e-5,2.4352204679952328e-8,-0.0011035726966564098,4.053916604625667e-5,2.4392162684179795e-8,-0.0011034522434320714,4.051692930416066e-5,2.438250815301555e-8,-0.0011032850399023103,4.041397991610771e-5,2.4329393420554233e-8,-0.0011030403485004744,4.0253960514007384e-5,2.424655679752155e-8,-0.001102695483905325,4.0074227905403326e-5,2.415503580398189e-8,-0.001102242193580227,3.992352368685253e-5,2.4081660659305638e-8,-0.0011016936673696796,3.985525563697915e-5,2.4055253488353385e-8,-0.0011010891641663526,3.991473667135059e-5,2.409971221190807e-8,-0.0011004912378463276,4.012168328025906e-5,2.422468321626409e-8,-0.0010999711538006204,4.045477360482803e-5,2.4417430252093232e-8,-0.0010995842055226655,4.084938248726866e-5,2.4641830821643385e-8,-0.0010993460929871167,4.121581701041971e-5,2.484844677700392e-8,-0.0010992250658169746,4.1472215284716905e-5,2.4992557013455944e-8,-0.0010991556460179283,4.1574464276116506e-5,2.505058969589844e-8,-0.0010990652089385281,4.1527398961356164e-5,2.5026265284520233e-8,-0.001098898156768374,4.1375312448001e-5,2.4945200752454744e-8,-0.0010986280334354423,4.118167475058328e-5,2.484337320183111e-8,-0.0010982574815838655,4.100937470290851e-5,2.4755843824772127e-8,-0.0010978110406426043,4.090738485072404e-5,2.4709226856153248e-8,-0.0010973257121964122,4.0904499228446404e-5,2.471836767874099e-8,-0.0010968421791160742,4.10083665738254e-5,2.4786177550209052e-8,-0.0010963977347210852,4.120779805968306e-5,2.4905329142025246e-8,-0.0010960210677344888,4.147702335351955e-5,2.506090255556026e-8,-0.0010957289251758702,4.178110279291195e-5,2.5233456325869303e-8,-0.001095524697387541,4.2081778366454555e-5,2.540215364575196e-8,-0.0010953988246681838,4.2343079153780506e-5,2.5547670181248777e-8,-0.0010953307583887954,4.253610901231246e-5,2.5654681311269465e-8,-0.0010952920447938042,4.264254236325311e-5,2.571372890267199e-8,-0.0010952499739452775,4.2656633559821643e-5,2.5722338660353446e-8,-0.0010951713587064734,4.2585944785351156e-5,2.5685421940828945e-8,-0.0010950263137780906,4.245110365085979e-5,2.5615053368196092e-8,-0.001094792159453469,4.2284683294743016e-5,2.5529653777638224e-8,-0.0010944577225138132,4.212890345796607e-5,2.5452477208888395e-8,-0.0010940280855575993,4.2031223829935575e-5,2.5409021613321293e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json new file mode 100644 index 0000000000..7f82b4594e --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":5000,"numberOfSamples":1000,"samples":[-0.001093528836966317,4.203642676149489e-5,2.5422725793163846e-8,-0.0010930072646208094,4.217440867148639e-5,2.5508574660559997e-8,-0.0010925265640548522,4.2445448281040656e-5,2.566549440168746e-8,-0.0010921498584701538,4.280927315836898e-5,2.5870776828536737e-8,-0.0010919163003251823,4.318794211770871e-5,2.6081780444674054e-8,-0.001091820523294629,4.348883154959585e-5,2.624831762871915e-8,-0.00109181029138295,4.364045659227296e-5,2.6331989440280285e-8,-0.0010918072934319603,4.362110831307491e-5,2.6321766949888615e-8,-0.0010917391971531742,4.346321105608486e-5,2.6236404835428295e-8,-0.0010915640090047574,4.323393624900339e-5,2.611370862534541e-8,-0.0010912766199280236,4.3007345034387695e-5,2.599493426705449e-8,-0.0010909009016498547,4.284299979150903e-5,2.5912727223068096e-8,-0.001090476431342811,4.277625215835485e-5,2.5885719367964947e-8,-0.0010900465218413144,4.2817753215300766e-5,2.5918503099339365e-8,-0.0010896499951765957,4.2957752709860237e-5,2.6004412180594708e-8,-0.0010893164869373976,4.3171842376795946e-5,2.612906955898042e-8,-0.0010890641035068592,4.34265580743787e-5,2.6273675178051805e-8,-0.0010888984776027527,4.3684563677071033e-5,2.6417842719480934e-8,-0.0010888129019089097,4.3909513777838174e-5,2.65421057988998e-8,-0.0010887895341848287,4.407054827337014e-5,2.663018859077577e-8,-0.0010888016920848876,4.4146217427231046e-5,2.667102788931276e-8,-0.001088817192482838,4.4127450376416946e-5,2.6660363442769395e-8,-0.0010888024752733671,4.401909753500576e-5,2.6601590837686793e-8,-0.0010887270459753056,4.383981898364833e-5,2.65056658451493e-8,-0.0010885677996571497,4.362036647066958e-5,2.639002532249307e-8,-0.0010883129235325867,4.3400346577718806e-5,2.627658759927833e-8,-0.0010879651578661836,4.322346930498476e-5,2.6188934255361087e-8,-0.001087544097987234,4.313109216854214e-5,2.6148709458164907e-8,-0.001087086674855694,4.315374123594729e-5,2.617116796712862e-8,-0.001086644066498112,4.330094126455337e-5,2.6260046435218025e-8,-0.0010862728381159504,4.3551620609182124e-5,2.640284239026193e-8,-0.00108601928226965,4.38502022017017e-5,2.656903579292576e-8,-0.0010859001135970722,4.411523709589743e-5,2.6714781887700585e-8,-0.0010858889754997796,4.426383145393484e-5,2.6795876138844725e-8,-0.0010859203351680025,4.424423453619814e-5,2.6785128110422738e-8,-0.001085913618912209,4.4058578601592776e-5,2.668460538734044e-8,-0.001085805393800295,4.376072785978275e-5,2.6524487039470494e-8,-0.0010855708545136362,4.343117507166159e-5,2.6349304657863846e-8,-0.0010852250584937636,4.314592290426317e-5,2.620071963961655e-8,-0.0010848090868554553,4.295570916633156e-5,2.6105975798650347e-8,-0.001084372654611788,4.2880291469861494e-5,2.6074830737518084e-8,-0.0010839610398885847,4.291308032542563e-5,2.6102403255115617e-8,-0.0010836081790852113,4.302959653013973e-5,2.6174200961517643e-8,-0.0010833344520610171,4.3195574161869046e-5,2.6270850944433867e-8,-0.001083146945167361,4.3373198164366636e-5,2.637160337223827e-8,-0.0010830405767407777,4.352569954505452e-5,2.645674242392391e-8,-0.0010829995124754573,4.3621083270509026e-5,2.6509425138913995e-8,-0.001082998991414148,4.363548696163819e-5,2.6517334874121295e-8,-0.0010830078695757855,4.3556232067080865e-5,2.6474252100274967e-8,-0.0010829921546684827,4.338421730365343e-5,2.638134536379059e-8,-0.0010829195457739626,4.313495597945831e-5,2.6247737743075178e-8,-0.0010827645199852117,4.2837568459182473e-5,2.6089894868217516e-8,-0.0010825131481838203,4.2531405839397756e-5,2.5929625306960433e-8,-0.0010821667257754604,4.2260415291339646e-5,2.5790800121408916e-8,-0.001081743391863589,4.2065789758412284e-5,2.5695202717475755e-8,-0.0010812771260442285,4.197779093233889e-5,2.5658116797976546e-8,-0.00108081368235774,4.2007788209395396e-5,2.5684279138019833e-8,-0.0010804030553122393,4.214188129809646e-5,2.5764875776401685e-8,-0.0010800884167244415,4.2338329128859495e-5,2.5876603076949472e-8,-0.001079892778156456,4.2531881372048156e-5,2.598424858567189e-8,-0.001079807154698478,4.264767562282009e-5,2.6048107274120274e-8,-0.0010797867060579334,4.262394191909685e-5,2.6035904077434437e-8,-0.001079760973783162,4.243610779021697e-5,2.593546226975552e-8,-0.0010796577282035234,4.210950720238184e-5,2.5761387251077892e-8,-0.00107942993302375,4.171117273294466e-5,2.555057096694696e-8,-0.001079071274203828,4.132383281774707e-5,2.5348037433669575e-8,-0.001078613065447523,4.101676275871758e-5,2.5191031444188244e-8,-0.0010781076445001167,4.082789625905243e-5,2.509930154443339e-8,-0.0010776094725232313,4.076147500814069e-5,2.507401361434535e-8,-0.0010771620659250866,4.079616385676292e-5,2.5102488709573008e-8,-0.001076792527426751,4.089624684549766e-5,2.5164595184415124e-8,-0.001076511483357941,4.102115014348993e-5,2.523807558214155e-8,-0.001076315486299618,4.1131846253385905e-5,2.530198861820359e-8,-0.00107618985214185,4.1194730844247526e-5,2.533864785318205e-8,-0.0010761111699562399,4.118418519494565e-5,2.5334821170315685e-8,-0.0010760496321073894,4.1084740905426734e-5,2.5282775112651636e-8,-0.0010759717151872302,4.089317638698599e-5,2.5181368331821842e-8,-0.0010758437806077928,4.062025720268964e-5,2.5037000465379675e-8,-0.001075636874965737,4.029124488214523e-5,2.4863872287821255e-8,-0.001075332344175619,3.994403311673042e-5,2.4682887122784044e-8,-0.0010749270772761371,3.962409533524119e-5,2.4518755050929554e-8,-0.0010744366625150808,3.937631781230898e-5,2.439541151761965e-8,-0.0010738948032005251,3.92350369958662e-5,2.433057466908826e-8,-0.0010733481764564313,3.9214698025557454e-5,2.433083409288902e-8,-0.0010728472503692334,3.930384295442124e-5,2.4388737863373705e-8,-0.0010724347731497891,3.94645175457536e-5,2.44828950313044e-8,-0.0010721343835682733,3.9638151634969455e-5,2.458148402653822e-8,-0.001071942205574794,3.9757775235519326e-5,2.4648932372444277e-8,-0.001071824440490328,3.976485588304506e-5,2.4654800605721794e-8,-0.0010717234455627444,3.962693202706781e-5,2.4582909766611626e-8,-0.0010715727554048086,3.935008138551149e-5,2.4437676459267312e-8,-0.0010713175244551965,3.8979848282591754e-5,2.4244352737564492e-8,-0.0010709326265880106,3.858785169979547e-5,2.4041693976913273e-8,-0.0010704300073954966,3.8248525783302696e-5,2.386941805332488e-8,-0.0010698520086136918,3.801636200014798e-5,2.375603419291011e-8,-0.0010692550526086402,3.791333074165718e-5,2.371227592816189e-8,-0.0010686922574283954,3.792939556885814e-5,2.3731673323543086e-8,-0.0010682017404291997,3.80320722103819e-5,2.379598347049132e-8,-0.0010678024504110503,3.8178531959137147e-5,2.3881867002065674e-8,-0.001067495548138812,3.832556322890049e-5,2.3966240581430207e-8,-0.001067268273277274,3.843582509864842e-5,2.4029501058277472e-8,-0.0010670980487706369,3.848102746680633e-5,2.4057051807740725e-8,-0.0010669558863532884,3.844342728250387e-5,2.403996707058116e-8,-0.001066809160826231,3.8316803241082525e-5,2.3975457859135465e-8,-0.0010666243579828204,3.810746586828673e-5,2.386741669396789e-8,-0.0010663705574710293,3.7835149903862285e-5,2.3726898442079206e-8,-0.0010660241691441985,3.753288897009294e-5,2.3571997852970833e-8,-0.0010655747063436035,3.724442359481839e-5,2.3426335194630528e-8,-0.0010650302250668731,3.701779702157739e-5,2.331547794071486e-8,-0.0010644199291991467,3.68949742785659e-5,2.3261297539301097e-8,-0.001063791223981958,3.6899545236002384e-5,2.327544760228617e-8,-0.0010632000453968727,3.7026820203446666e-5,2.335429289972638e-8,-0.0010626963599818942,3.7241111127013385e-5,2.3477789197827204e-8,-0.0010623095681190381,3.748268981872828e-5,2.3613519575245354e-8,-0.0010620391726174265,3.768289862153553e-5,2.3724946388273585e-8,-0.0010618540779868658,3.7782581455481364e-5,2.3781234371721873e-8,-0.0010617006609737272,3.7748061352030124e-5,2.3765573920194672e-8,-0.0010615170480434892,3.758012724746697e-5,2.367965267011593e-8,-0.0010612495768359004,3.731371428715724e-5,2.3543130785882002e-8,-0.0010608669746345562,3.700835235428079e-5,2.3388256328231037e-8,-0.001060368182069979,3.6731912216637085e-5,2.325105313533104e-8,-0.0010597813426304625,3.654245594481344e-5,2.316169727120985e-8,-0.0010591544075762823,3.647402066316346e-5,2.313718174627855e-8,-0.0010585410167500333,3.653074230958909e-5,2.317853751683003e-8,-0.001057986920975386,3.669012758790272e-5,2.327290785733631e-8,-0.0010575211579176061,3.691257472653399e-5,2.339881300069309e-8,-0.001057153350837812,3.715260399430297e-5,2.3532138314401993e-8,-0.0010568758374386459,3.736812754225494e-5,2.365093104713143e-8,-0.0010566681914793606,3.752620921432137e-5,2.3738273286109503e-8,-0.0010565020401735535,3.760563844652094e-5,2.378349597906288e-8,-0.0010563451015339039,3.759754719033252e-5,2.3782437194464704e-8,-0.0010561643423562313,3.750528822528541e-5,2.3737377447389552e-8,-0.001055928777775758,3.734426906295574e-5,2.365696343832137e-8,-0.0010556126783150875,3.714173971895337e-5,2.3556054900511646e-8,-0.0010551998123746519,3.693577609363618e-5,2.3455071168099988e-8,-0.0010546886977346502,3.677200754758798e-5,2.3378106802298378e-8,-0.001054097575413405,3.66964742503015e-5,2.33490503669857e-8,-0.001053466266416154,3.674410830929957e-5,2.338552532428398e-8,-0.0010528513171096396,3.6925144473778674e-5,2.3491902560416617e-8,-0.0010523125721679219,3.721530665965493e-5,2.365441113669717e-8,-0.0010518941136466624,3.7556866487537555e-5,2.384196911473466e-8,-0.001051607652331739,3.787365765176419e-5,2.4014260649323585e-8,-0.0010514271013640408,3.809514403546298e-5,2.4134458275138142e-8,-0.001051297410707953,3.8178799703989044e-5,2.4180962088243847e-8,-0.001051153003686843,3.812136015142763e-5,2.415318391268279e-8,-0.00105093733776516,3.795628189484318e-5,2.4069945427589834e-8,-0.001050616809646753,3.7741095264425834e-5,2.396246019827039e-8,-0.0010501863481547247,3.754067586859115e-5,2.3865199592522806e-8,-0.0010496673073456411,3.7411575394765774e-5,2.380750812194908e-8,-0.0010490998191358019,3.739064048823195e-5,2.380774834712807e-8,-0.0010485322021737509,3.748944550858809e-5,2.38707245777141e-8,-0.0010480100257824426,3.769477583367159e-5,2.398835336975793e-8,-0.0010475672083879396,3.797425178348991e-5,2.4142928600404912e-8,-0.0010472208647171518,3.8285082197056416e-5,2.4311824887822292e-8,-0.0010469704046910332,3.858335909600687e-5,2.4472287017073512e-8,-0.0010468001087383734,3.883168894481607e-5,2.4605240478689e-8,-0.0010466836675630368,3.900401645641016e-5,2.469763622155349e-8,-0.0010465891449321784,3.9087623690885925e-5,2.4743396088065535e-8,-0.00104648333056439,3.908308679776768e-5,2.4743374271449885e-8,-0.0010463351903678341,3.900321589613522e-5,2.4704818833201865e-8,-0.0010461187174899236,3.887169112109677e-5,2.4640634398441143e-8,-0.0010458157657489216,3.872153411276594e-5,2.456847676636226e-8,-0.0010454194198092652,3.8592904649491364e-5,2.4509434847279802e-8,-0.0010449379598351336,3.85290470767447e-5,2.4485769249212857e-8,-0.0010443983417922637,3.8568960460999586e-5,2.4517067123617403e-8,-0.0010438466104127784,3.8736263817727636e-5,2.4614598497805885e-8,-0.0010433416549984493,3.902636136480175e-5,2.477493404220497e-8,-0.0010429399987465788,3.9398027050649106e-5,2.4975871277955936e-8,-0.0010426746362297934,3.9777843434769186e-5,2.5178904654138547e-8,-0.0010425380922074639,4.0081503788804406e-5,2.5340291710930592e-8,-0.0010424814444555638,4.0244644241275436e-5,2.5427023133151833e-8,-0.0010424322947735387,4.024690202392131e-5,2.5429321392407133e-8,-0.0010423219582340482,4.01162830340403e-5,2.5362869290134385e-8,-0.0010421073140257824,3.9914219183457514e-5,2.526080398688154e-8,-0.0010417790504298643,3.9712303792083824e-5,2.5161204349048078e-8,-0.001041357514815806,3.957206053756882e-5,2.509620077309175e-8,-0.0010408820867983744,3.953305791576254e-5,2.5085701841939114e-8,-0.0010403994183290342,3.960922925354849e-5,2.5135719972456448e-8,-0.001039953473752625,3.979097235888994e-5,2.5239903766051643e-8,-0.0010395783534878653,4.005056096735985e-5,2.538278306056733e-8,-0.0010392939602767437,4.034918264408066e-5,2.5543680164653243e-8,-0.001039104389012981,4.0644480901831106e-5,2.5700644896490313e-8,-0.0010389988421567525,4.089757785496551e-5,2.5833941072896978e-8,-0.0010389545970551956,4.107865514075927e-5,2.5928726316951552e-8,-0.0010389412824983889,4.11705030871186e-5,2.5976731161695342e-8,-0.001038925600905446,4.116986580467381e-5,2.5976894786312716e-8,-0.0010388757116827172,4.108687415422475e-5,2.5935077860987764e-8,-0.0010387648487817887,4.094320887370908e-5,2.586310945168862e-8,-0.0010385741873378635,4.0769583233729096e-5,2.5777407288912374e-8,-0.0010382952268426782,4.0602784133407614e-5,2.569728649515853e-8,-0.0010379320091739295,4.04820837611387e-5,2.564292327050562e-8,-0.0010375031926033312,4.0444330838904017e-5,2.56327270085341e-8,-0.0010370431136598767,4.0516825192555824e-5,2.5679750881275533e-8,-0.0010365998252919112,4.07078727032145e-5,2.5787103029239512e-8,-0.0010362274507746704,4.0997023108730364e-5,2.59432896351184e-8,-0.0010359711779905647,4.133023718538513e-5,2.6120005918730713e-8,-0.0010358476721283505,4.1627586877103866e-5,2.6276137158887212e-8,-0.0010358308191826967,4.180745449119192e-5,2.6370052259346927e-8,-0.0010358552027499252,4.18193769451226e-5,2.6376375102413223e-8,-0.0010358403135057738,4.166678727036104e-5,2.6297719124715485e-8,-0.0010357228189093813,4.140456572009227e-5,2.6163449539399887e-8,-0.0010354780401623975,4.111391003936417e-5,2.6016503918615263e-8,-0.0010351214402610947,4.0871490524131414e-5,2.5897043112633257e-8,-0.0010346952781462417,4.0728626709958974e-5,2.5831362930703574e-8,-0.0010342513894169626,4.070496768499591e-5,2.582864079884688e-8,-0.0010338376130666347,4.0792468598692156e-5,2.588333975697396e-8,-0.001033489928572441,4.09637112677769e-5,2.5979990127741127e-8,-0.0010332292836012598,4.118057987218832e-5,2.6098059615421084e-8,-0.0010330613284611158,4.140165888760393e-5,2.6215931638488723e-8,-0.0010329777530100068,4.158819846524718e-5,2.631390656871405e-8,-0.0010329586810779521,4.170886241656704e-5,2.6376437158564403e-8,-0.001032975936317296,4.1743274993385874e-5,2.6393736765147437e-8,-0.0010329969885598913,4.168421213030391e-5,2.636277559384442e-8,-0.0010329892783965391,4.153821954893292e-5,2.62875676595281e-8,-0.0010329244588995863,4.132454750884092e-5,2.6178635261370543e-8,-0.001032782060381272,4.10726094101633e-5,2.6051674387741775e-8,-0.0010325522769319654,4.0818357819433007e-5,2.5925576579428118e-8,-0.0010322377709549141,4.0599882712942876e-5,2.5819988038191913e-8,-0.0010318544785740738,4.045240035953763e-5,2.575258468299546e-8,-0.001031431325710975,4.0402610592020545e-5,2.5736166079833738e-8,-0.0010310082903914864,4.04622844238969e-5,2.577556155474702e-8,-0.0010306315696239265,4.062155526853457e-5,2.586455506912295e-8,-0.0010303445107737654,4.084394736602622e-5,2.5983723580936618e-8,-0.00103017415051348,4.106712011714914e-5,2.6101034286724267e-8,-0.00103011645990442,4.121429379152592e-5,2.617762452180817e-8,-0.0010301283373702107,4.1218183604357294e-5,2.617978519094077e-8,-0.0010301360479824519,4.1049891214193474e-5,2.6093535091742128e-8,-0.0010300617418679534,4.073592787552085e-5,2.5933314593629573e-8,-0.0010298552834028627,4.0349707833675383e-5,2.5737635695545288e-8,-0.0010295123624857808,3.9981058901976845e-5,2.555325702866578e-8,-0.0010290699371210256,3.970266737753418e-5,2.541762182017323e-8,-0.0010285862799355606,3.95510226577242e-5,2.5348871652570656e-8,-0.001028119665030133,3.952567217658717e-5,2.5345604153804084e-8,-0.0010277146398166707,3.9599592103778894e-5,2.5392608827923747e-8,-0.0010273969445857086,3.9732019239784237e-5,2.54679029136312e-8,-0.0010271741439923543,3.987889635605635e-5,2.554837330653049e-8,-0.0010270387420002831,3.999979218338487e-5,2.5613362144150908e-8,-0.0010269717730998133,4.006209216467498e-5,2.564665439659544e-8,-0.0010269462335600545,4.004361181148552e-5,2.563758062373979e-8,-0.001026930475247916,3.993429582593155e-5,2.5581696150718296e-8,-0.0010268917955752411,3.9737131056284514e-5,2.54811632465487e-8,-0.0010268003254188763,3.946803547779058e-5,2.5344696049297998e-8,-0.001026633045285693,3.9154302349015926e-5,2.51867793373167e-8,-0.001026377413673644,3.883136780108241e-5,2.502596843310329e-8,-0.0010260339595217747,3.8538067531633994e-5,2.4882331374804033e-8,-0.00102561729797183,3.8310807330376756e-5,2.477430480252826e-8,-0.0010251551932449294,3.8177261675103885e-5,2.471538175976041e-8,-0.001024685487708184,3.8150384280356484e-5,2.4711128828705612e-8,-0.0010242508292970316,3.822352571453758e-5,2.475696413222644e-8,-0.0010238910923221203,3.836763523516221e-5,2.4837113045173785e-8,-0.0010236336767047106,3.853222377882937e-5,2.492543131105467e-8,-0.0010234830537858264,3.865239008611646e-5,2.49891058187856e-8,-0.0010234129983969168,3.8663590948988006e-5,2.4996031285257513e-8,-0.0010233670245726736,3.852273512816904e-5,2.492524814844594e-8,-0.001023271959887443,3.822833359285693e-5,2.4776942964655382e-8,-0.0010230632432314934,3.782769524653137e-5,2.4575998844550145e-8,-0.0010227107525744934,3.740279961889332e-5,2.436473371991324e-8,-0.0010222302402959167,3.703969137491942e-5,2.418716232193019e-8,-0.0010216740030515826,3.6798124988745376e-5,2.4073362152007457e-8,-0.001021108290579188,3.669683896443461e-5,2.4031974626159863e-8,-0.0010205912572348655,3.6717350983459955e-5,2.4052398420585333e-8,-0.0010201604372997207,3.681830406381751e-5,2.411249122180296e-8,-0.0010198303307530497,3.6950727918991715e-5,2.418666800590093e-8,-0.0010195960756659162,3.706898533184759e-5,2.4251597017513103e-8,-0.001019439056359185,3.713670445797552e-5,2.4289132019925126e-8,-0.001019332059571601,3.7129221763336125e-5,2.428734485125245e-8,-0.0010192433493335681,3.70343141516297e-5,2.4240686043212892e-8,-0.0010191400194511332,3.685229866278754e-5,2.4149908608415946e-8,-0.0010189911883879065,3.659580376531763e-5,2.402192783224623e-8,-0.0010187714343872375,3.628895436908966e-5,2.3869435845986977e-8,-0.0010184645132939021,3.596533710163379e-5,2.3709873676371996e-8,-0.001018066855839815,3.566412672527142e-5,2.3563393719128077e-8,-0.0010175898667280023,3.542425031334137e-5,2.3449761052332165e-8,-0.0010170599390659412,3.5277162817117435e-5,2.3384558945173422e-8,-0.001016515394012989,3.523949770501541e-5,2.3375440811865953e-8,-0.0010160002224420199,3.530738001007149e-5,2.3419397704779323e-8,-0.0010155553831384591,3.545419198619564e-5,2.3501928264935122e-8,-0.001015209142874551,3.563302488615149e-5,2.3598624983890202e-8,-0.0010149684067089226,3.5784346527384886e-5,2.3679292211144022e-8,-0.0010148133891465872,3.584860072421633e-5,2.3714344288769612e-8,-0.0010146982630651578,3.5782055660811007E-05,2.3682629377636572e-8,-0.0010145599654888093,3.557207326886522e-5,2.3578848270284908e-8,-0.0010143351722388912,3.5245823371830506e-5,2.3417678410022003e-8,-0.0010139811800521554,3.486632047924191e-5,2.3231576085062046e-8,-0.001013492050599654,3.4513974439642034e-5,2.3061330561170134e-8,-0.0010129013184621315,3.4259974954934804e-5,2.2942555475658693e-8,-0.0010122691652813616,3.4143842428325755e-5,2.289440024171102e-8,-0.001011660964001645,3.416527319904436e-5,2.291564249859294e-8,-0.0010111280235503381,3.429134318278579e-5,2.2988645742694414e-8,-0.0010106976785511353,3.447205752042876e-5,2.3087503664077148e-8,-0.0010103730798261847,3.465571175252602e-5,2.3185940039964153e-8,-0.0010101387428839818,3.479919616418346e-5,2.3262469964226124e-8,-0.0010099675794849883,3.487271276682596e-5,2.3302608900919384e-8,-0.0010098269209837737,3.4860699206272e-5,2.3299134968487392e-8,-0.0010096829020666328,3.476102080226269e-5,2.3251535621906485e-8,-0.0010095036482449427,3.4583741581220033e-5,2.316533851284319e-8,-0.00100926202814437,3.434990375649573e-5,2.3051517011118484e-8,-0.0010089385902406682,3.409004467856952e-5,2.2925769286763956e-8,-0.0010085248696185096,3.384168830235557e-5,2.2807227493595864e-8,-0.0010080265806791115,3.3644931550302674e-5,2.2716140262856692e-8,-0.0010074654828322916,3.353571640167953e-5,2.26703687608163e-8,-0.0010068782778092742,3.353743271134205e-5,2.268110345686206e-8,-0.0010063112194841138,3.36528689313314e-5,2.274888894220196e-8,-0.0010058104572475534,3.3859569732431347e-5,2.286150383963712e-8,-0.0010054101212326877,3.411145176628525e-5,2.2995062591133473e-8,-0.0010051217418514823,3.434769733360527e-5,2.3118734876600543e-8,-0.0010049287823506632,3.450726125747007e-5,2.3202145373587556e-8,-0.0010047886815621875,3.454511779650876e-5,2.3223469127649264e-8,-0.001004642523791172,3.444551550645358e-5,2.317587375654054e-8,-0.0010044301777682276,3.4228082912857005e-5,2.307029016040388e-8,-0.0010041070053985303,3.394428660482434e-5,2.293333606477324e-8,-0.0010036572007801948,3.366424530591849e-5,2.280046957873214e-8,-0.0010030989670374397,3.3457142010512746e-5,2.2706067870780697e-8,-0.001002478977520436,3.3371580578821594e-5,2.2673661179006083e-8,-0.0010018578283530568,3.342312200493025e-5,2.2709939398912565e-8,-0.0010012922882052613,3.359334378293894e-5,2.2804621910948108e-8,-0.0010008212275209021,3.3839363188058443e-5,2.2935524319804295e-8,-0.0010004594328713067,3.410840614322706e-5,2.3076001992787873e-8,-0.0010001992187818722,3.4351274842747164e-5,2.320166356575127e-8,-0.0010000167281470184,3.453101661995363e-5,2.3294552412610813e-8,-9.998793317252265e-4,3.462633409658824e-5,2.3344654270450874e-8,-9.997518470452732e-4,3.4631318428131296e-5,2.3349607127017085e-8,-9.996009199043014e-4,3.455348552109253e-5,2.3313647478180466e-8,-9.9939795849614e-4,3.44114906802232e-5,2.3246470434010358e-8,-9.99121407187035e-4,3.4233040893128126e-5,2.3162210737379513e-8,-9.987590833800812e-4,3.405276743515656e-5,2.3078368950141786e-8,-9.983108679056524e-4,3.390926822320403e-5,2.3014265042933495e-8,-9.97791306534957e-4,3.384032770146051e-5,2.2988554306834156e-8,-9.972307991430098e-4,3.3875718713881964e-5,2.3015580148524872e-8,-9.966733564831009e-4,3.4028221102158114e-5,2.310094837163757e-8,-9.961691020362934e-4,3.428546408696686e-5,2.3237638825588425e-8,-9.957615865134595e-4,3.46069401339788e-5,2.3404762682669036e-8,-9.954733186501152e-4,3.493021100327155e-5,2.357086532821176e-8,-9.952956330342465e-4,3.5186762200118035e-5,2.370192787102682e-8,-9.95188477807128e-4,3.532262383638006e-5,2.377162507367407e-8,-9.950913872963697e-4,3.5315508210565336e-5,2.376975873492727e-8,-9.94941500795456e-4,3.518154860532421e-5,2.3705430116577784e-8,-9.946916452042978e-4,3.496972133573339e-5,2.3603993034892922e-8,-9.943224955306555e-4,3.4747072949003844e-5,2.3499389344168517e-8,-9.938459958236127e-4,3.458033160070616e-5,2.3424766870853507e-8,-9.933002965673123e-4,3.451936283405707e-5,2.3404222600228282e-8,-9.92738532106868e-4,3.4586492210376424e-5,2.34477123751599e-8,-9.922149570488884e-4,3.47737697346077e-5,2.35500702634693e-8,-9.917723365169562e-4,3.504802300243e-5,2.369389615669735e-8,-9.91433801696836e-4,3.536137626092322e-5,2.385500900287136e-8,-9.912006576782077e-4,3.566352992413874e-5,2.4008564476421496e-8,-9.910555099664157e-4,3.591217265700787e-5,2.4134077453991628e-8,-9.909685467225334e-4,3.607935109184319e-5,2.4218367354514807e-8,-9.90904493799253e-4,3.615353059249766e-5,2.4256393376223053e-8,-9.90828480212809e-4,3.613845925610944e-5,2.4250587005171246e-8,-9.90710154736621e-4,3.605041340979941e-5,2.420946428455628e-8,-9.905262925749175e-4,3.5915102415850375e-5,2.4146106990416895e-8,-9.902625674466235e-4,3.576480559520487e-5,2.407673810359449e-8,-9.899151595612757e-4,3.563558997580312e-5,2.4019285840091026e-8,-9.894925239248037e-4,3.556393259086711e-5,2.399161892926978e-8,-9.890169789091286e-4,3.558183032668142e-5,2.400906596769323e-8,-9.885248529442735e-4,3.570977187754583e-5,2.4080982598891237e-8,-9.880631022206629e-4,3.594816942793109e-5,2.4206693186517794e-8,-9.876803749587692e-4,3.6270078383065484e-5,2.4372152484305683e-8,-9.874125517596248e-4,3.662032117452578e-5,2.4549731590826265e-8,-9.872671120179847e-4,3.6926008414473374e-5,2.470348797116585e-8,-9.872146960178598e-4,3.7118461255131244e-5,2.4799926090503432e-8,-9.871951531337715e-4,3.715829143129886e-5,2.482028574407889e-8,-9.871375620403313e-4,3.705077677427379e-5,2.476806781996489e-8,-9.869847448893906e-4,3.684329236067619e-5,2.466765451933042e-8,-9.867105450566658e-4,3.660725536650436e-5,2.4555140657066402e-8,-9.86323904247596e-4,3.641469724773145e-5,2.4466432455541804e-8,-9.858615016007492e-4,3.631928880259697e-5,2.442766534764061e-8,-9.85374633250025e-4,3.634645237112784e-5,2.4450388419430107e-8,-9.849156337300748e-4,3.649235218034662e-5,2.453139904021426e-8,-9.845270231932197e-4,3.672923823051199e-5,2.465582036281864e-8,-9.842346708626541e-4,3.7014300862134964e-5,2.4801822245291615e-8,-9.840451716688692e-4,3.729969081586018e-5,2.4945700886248175e-8,-9.839470708571595e-4,3.754181375466232e-5,2.5066377411016933e-8,-9.839150653915634e-4,3.770836043790428e-5,2.514864253568232e-8,-9.83915845150665e-4,3.778218739727299e-5,2.5184832131647895e-8,-9.839141440703577e-4,3.776204586365129e-5,2.5175023720621267e-8,-9.838778946578378e-4,3.7660825559131726e-5,2.5126110722890017e-8,-9.837819111355383e-4,3.750231363693385e-5,2.5050212268447694e-8,-9.83610120160167e-4,3.731747931219535e-5,2.4962853060990782e-8,-9.833567922937184e-4,3.714089212336408e-5,2.4881163070795294e-8,-9.830272886633775e-4,3.700727412351498e-5,2.4822096717103307e-8,-9.826385911278707e-4,3.69477424015823e-5,2.4800505830703303e-8,-9.82219396284537e-4,3.698509836147771e-5,2.4826830050034716e-8,-9.818087670899545e-4,3.712771767756578e-5,2.4904243886600084e-8,-9.814515702841564e-4,3.7362648046258683e-5,2.5025539421476875e-8,-9.811889802018954e-4,3.7650571338024e-5,2.5170939795615703e-8,-9.810442154511204e-4,3.792755371116602e-5,2.5309102919604293e-8,-9.810080333830023e-4,3.811864493199592e-5,2.5403711739960307e-8,-9.81033207624282e-4,3.8163102204115404e-5,2.5425633123846726e-8,-9.810462359989666e-4,3.804100654306584e-5,2.5365828059548833e-8,-9.809743731534347e-4,3.778505688611488e-5,2.524112956896296e-8,-9.807739041156364e-4,3.746843502401319e-5,2.508825210734586e-8,-9.804438663459916e-4,3.717577379911337e-5,2.4949313572355698e-8,-9.800204118408863e-4,3.697428727925494e-5,2.485733884169189e-8,-9.795593431768212e-4,3.6897909348930136e-5,2.4828320900585492e-8,-9.791176972697106e-4,3.694613487266822e-5,2.4860822858248447e-8,-9.78740821256568e-4,3.709208601691692e-5,2.4940346749398108e-8,-9.784561041063255e-4,3.7293678129001164e-5,2.5045249521682385e-8,-9.782718489133458e-4,3.7504071244625615e-5,2.5152145120602866e-8,-9.781792758595254e-4,3.7679941882763186e-5,2.5239992535436655e-8,-9.781562333794412e-4,3.778745647138105e-5,2.5292850462091087e-8,-9.781718882523143e-4,3.780606999115621e-5,2.530147602469855e-8,-9.781918620216884e-4,3.773013883351006e-5,2.5263886480747403e-8,-9.781832167389938e-4,3.7568458080856365e-5,2.518501010675023e-8,-9.78118742072559e-4,3.7342042791065954e-5,2.507558218052921e-8,-9.779801236071979e-4,3.708061130398327e-5,2.4950452157285786e-8,-9.777597868775496e-4,3.681839353569755e-5,2.4826535622686178e-8,-9.774615375963498e-4,3.6589861622145944e-5,2.47206704952449e-8,-9.771002958644923e-4,3.642562803302159e-5,2.464752335844287e-8,-9.767011177636903e-4,3.6348412775412787e-5,2.461757103592887e-8,-9.762974059618317e-4,3.636884684333104e-5,2.463512177599872e-8,-9.759277035517238e-4,3.648101405343806e-5,2.4696356361916733e-8,-9.75629951246629e-4,3.665840901177218e-5,2.4787660934629145e-8,-9.754322748465593e-4,3.685252659570957e-5,2.4885193908702775e-8,-9.75340987613693e-4,3.699788916582287e-5,2.495739454375517e-8,-9.753299684090048e-4,3.702722840929396e-5,2.4972198717358794e-8,-9.753395265608093e-4,3.689599167738356e-5,2.490869287630752e-8,-9.752920720559031e-4,3.6606102877796636e-5,2.4768523544825133e-8,-9.751219280535475e-4,3.62127126348543e-5,2.457919604533296e-8,-9.748035378869218e-4,3.580501071706199e-5,2.4384716721739845e-8,-9.743604317943561e-4,3.5470563709328834E-05,2.4228018734390125e-8,-9.738510761405169e-4,3.526450154078282e-5,2.4135686744524703e-8,-9.733435765106256e-4,3.519840608946445e-5,2.411249078547065e-8,-9.728943634004211e-4,3.5247780682422384e-5,2.4145284649450995e-8,-9.725377477092212e-4,3.536768335651393e-5,2.4211049479849402e-8,-9.722848444423038e-4,3.550754893515966e-5,2.428448154165182e-8,-9.72127563371285e-4,3.562150854076412e-5,2.4343174928178926e-8,-9.720441769973178e-4,3.567417242302132e-5,2.437035998268252e-8,-9.720046367152485e-4,3.56432887461309e-5,2.4355963585866076e-8,-9.719752390974952e-4,3.552063301357858e-5,2.4296779131561367e-8,-9.719228596586245e-4,3.531171554305102e-5,2.4196141313711178e-8,-9.718188423673552e-4,3.503437202507118e-5,2.406317927089353e-8,-9.716423998941957e-4,3.471621408885309e-5,2.3911605715671775e-8,-9.713832408989576e-4,3.439096166140005e-5,2.3757978780585042e-8,-9.710430366130846e-4,3.409389102193965e-5,2.361948593481193e-8,-9.70635446133547e-4,3.3856923351839665e-5,2.3511491505683215e-8,-9.701846919981149e-4,3.370390574741038e-5,2.3445165212560717e-8,-9.697228228770885e-4,3.364647614797688e-5,2.342546325722505e-8,-9.692857745624962e-4,3.368081166293388e-5,2.3449670440655165e-8,-9.689081926968012e-4,3.378557365972413e-5,2.3506650641077334e-8,-9.686168099705691e-4,3.392170644199995e-5,2.357703705485365e-8,-9.684224658620934e-4,3.4035563171401795e-5,2.3634937383161203e-8,-9.68312113340623e-4,3.406746818840269e-5,2.3652061632635778e-8,-9.682443258694862e-4,3.396706662113197e-5,2.3604922859051918e-8,-9.681538286062369e-4,3.371329935534211e-5,2.348419799835916e-8,-9.679692761326831e-4,3.333058404686902e-5,2.330235800983941e-8,-9.676407409410866e-4,3.2888734991917684e-5,2.3093584924486144e-8,-9.671629996624705e-4,3.2480309923178234e-5,2.2902797651000153e-8,-9.665791080763037e-4,3.2184835146996645e-5,2.276825671546724e-8,-9.659613244934983e-4,3.204046428493923e-5,2.270778086296016e-8,-9.653822640887052e-4,3.203767611505963e-5,2.2715798323767404e-8,-9.648929276683705e-4,3.213287335072607e-5,2.2770213229558723e-8,-9.645149837962753e-4,3.226903530996189e-5,2.2842729866168465e-8,-9.642442355567376e-4,3.239247708087407e-5,2.2907171397624284e-8,-9.640587530216115e-4,3.24620993246358e-5,2.2943963859402317e-8,-9.639270001539048e-4,3.245248074250296e-5,2.2941464499432092e-8,-9.638140578411377e-4,3.235353569481727e-5,2.2895550510650823e-8,-9.6368595444148e-4,3.2168912493880215e-5,2.28086319018673e-8,-9.635128997527551e-4,3.191410788621952e-5,2.2688634455621677e-8,-9.632720633656184e-4,3.161432337084309e-5,2.2547969983926774e-8,-9.629500908473864e-4,3.1301728190777524e-5,2.2402276055104036e-8,-9.625451789726969e-4,3.101176374193039e-5,2.226867575507521e-8,-9.620681774777247e-4,3.077836455776551e-5,2.216345368450055e-8,-9.615420329416084e-4,3.0628500411465295e-5,2.209935540113096e-8,-9.609991467969121e-4,3.057690888665009e-5,2.2082994490797295e-8,-9.604766797714861e-4,3.062205911343596e-5,2.2112942498469528e-8,-9.600102747775835e-4,3.074434601472043e-5,2.2179018433807102e-8,-9.596270214263777e-4,3.090724439259373e-5,2.2263089974248304e-8,-9.593386562986945e-4,3.1061771792007744e-5,2.2341454918293274e-8,-9.591361349101454e-4,3.1154428547892235e-5,2.2388764734143828e-8,-9.589871735461636e-4,3.113854434292479e-5,2.2383389507898628e-8,-9.588390052667267e-4,3.0987899671081076e-5,2.23137088373979e-8,-9.586285812047179e-4,3.0709291166627064e-5,2.2183841699676357e-8,-9.583004549904042e-4,3.034807980718291e-5,2.20160808943815e-8,-9.578277490469907e-4,2.9980170319710332e-5,2.1846942684937246e-8,-9.572262091683876e-4,2.968886340238766e-5,2.1716059377740093e-8,-9.565515092747311e-4,2.953507814969651e-5,2.1651963566920276e-8,-9.558790138711099e-4,2.9536365304518656e-5,2.166217296734255e-8,-9.552767930981623e-4,2.9665583334704913e-5,2.173278583758932e-8,-9.547860467171304e-4,2.9867061406297094e-5,2.1836474927304304e-8,-9.544158266696612e-4,3.0078540975903094e-5,2.1943173400982044e-8,-9.541492278461368e-4,3.024805141205629e-5,2.20281932369835e-8,-9.539540335951516e-4,3.034185193150517e-5,2.2075920768301698e-8,-9.537924048895253e-4,3.0345247140230987e-5,2.208000983233228e-8,-9.536275311546465e-4,3.025982229495277e-5,2.204185499562896e-8,-9.534275077413425e-4,3.0099841725022342e-5,2.1968736705240954e-8,-9.531675967845711e-4,2.9889041402266785e-5,2.187225621318765e-8,-9.528318988517542e-4,2.9657867759765324e-5,2.1767059789256722e-8,-9.524149404686213e-4,2.9440645440285744e-5,2.1669541941369942e-8,-9.519231274636026e-4,2.9272003957849185e-5,2.1596154336982085e-8,-9.513754532627277e-4,2.9182105324352853e-5,2.156109047838405e-8,-9.508024505321581e-4,2.9190878090889825e-5,2.1573483188737836e-8,-9.502424663511357e-4,2.9302351813132366e-5,2.1634700321363326e-8,-9.49735030418587e-4,2.9500882232911995e-5,2.1736638845838566e-8,-9.493122042363756e-4,2.975120128025421e-5,2.1861931766478845e-8,-9.489899450602254e-4,3.0003488125871785e-5,2.19865714491652e-8,-9.487620601966599e-4,3.020311750055373e-5,2.2084695992892515e-8,-9.485988957950232e-4,3.030316317880326e-5,2.2134553407674564e-8,-9.484518091654521e-4,3.0276810472256283e-5,2.2124270364054122e-8,-9.482632222856166e-4,3.0126538386465414e-5,2.205597301242971e-8,-9.479807554179524e-4,2.9887047408005317e-5,2.194689841841948e-8,-9.475724436270446e-4,2.961960692398054e-5,2.1826477535904775e-8,-9.470384606933393e-4,2.9397309036501518e-5,2.1729216202936675e-8,-9.464140919087501e-4,2.9284117233135745e-5,2.168479093152599e-8,-9.457607135250013e-4,2.931474722874649e-5,2.1708699518209903e-8,-9.451468703045619e-4,2.948415363474355e-5,2.179756824154432e-8,-9.446272642077682e-4,2.975166154093429e-5,2.19313942223417e-8,-9.442287741878977e-4,3.005706659105484e-5,2.2081348790756766e-8,-9.439480612138644e-4,3.0340177706433605e-5,2.2219059244211306e-8,-9.437587330039747e-4,3.05555047742844e-5,2.232346391891961e-8,-9.436224123828684e-4,3.0678595514250895e-5,2.2383640253534496e-8,-9.434987028230832e-4,3.0705355294702186e-5,2.2398300631400305e-8,-9.433518093842979e-4,3.0647746413302585e-5,2.2373619930447855e-8,-9.431539596951896e-4,3.052879162175852e-5,2.2320812424416252e-8,-9.42886827941632e-4,3.0378337056025078e-5,2.2254139731918605e-8,-9.425421763466582e-4,3.0229750427711546e-5,2.2189391361884014e-8,-9.421224563862095e-4,3.011700715597695e-5,2.2142531937943215e-8,-9.416414774327706e-4,3.0071346469157127e-5,2.212810620989906e-8,-9.411245660268458e-4,3.0116816661240038e-5,2.215710354642401e-8,-9.406070615964384e-4,3.026467552618603e-5,2.2234316233793085e-8,-9.40129838692488e-4,3.050774422637882e-5,2.2355753528190237e-8,-9.397312194328286e-4,3.0817081031483444e-5,2.2507225708871276e-8,-9.394363651629871e-4,3.1143952690525606e-5,2.266544635054926e-8,-9.39247469629382e-4,3.14289902634384e-5,2.2802467253505157e-8,-9.391392811567771e-4,3.161734154321736e-5,2.28928419535772e-8,-9.390631834203985e-4,3.1675072753920046e-5,2.292128485717643e-8,-9.389595011470184e-4,3.160054917881444e-5,2.2887892684632222e-8,-9.38774017044829e-4,3.142629938669554e-5,2.2808821851867562E-08,-9.384731170441491e-4,3.121073248180759e-5,2.2712144428496986e-8,-9.380529653295315e-4,3.102263562512172e-5,2.2630329259409035e-8,-9.37540421932073e-4,3.0923179639618185e-5,2.2591680785415607e-8,-9.369857583175107e-4,3.095034383443137e-5,2.261312414301245e-8,-9.364492385837592e-4,3.1109898640259824e-5,2.269626110812058e-8,-9.359853619300495e-4,3.137546064701527e-5,2.2827755619925506e-8,-9.356295240548179e-4,3.16974681512932e-5,2.2983821119346855e-8,-9.353911527823038e-4,3.2017802198202046e-5,2.313717510433112e-8,-9.35254811672147e-4,3.228479107023496e-5,2.326399499414142e-8,-9.351875597689146e-4,3.2463820357644084e-5,2.3348709349042408e-8,-9.351488611202442e-4,3.2541398176328435e-5,2.338570291153537e-8,-9.350994833205346e-4,3.25234996917194e-5,2.3378386345866902e-8,-9.350074661012362e-4,3.2430678404906835e-5,2.333682380228043e-8,-9.348510276335349e-4,3.229243028857118e-5,2.3275080016553152e-8,-9.346193314669444e-4,3.214231620297721e-5,2.3208959235950077e-8,-9.34312262797197e-4,3.2014221186669155e-5,2.3154273367792384e-8,-9.339400414025882e-4,3.193933185076618e-5,2.3125418905859264e-8,-9.33522913696338e-4,3.194305448645945e-5,2.3133910756853474e-8,-9.330904862493931e-4,3.204115275895757e-5,2.3186578394138074e-8,-9.326796244283101e-4,3.223492294630654e-5,2.3283386135426127e-8,-9.323295184334296e-4,3.250635238251842e-5,2.3415326287966734e-8,-9.320730236673442e-4,3.281574833663746e-5,2.356349553000111e-8,-9.319252711366798e-4,3.310543782936856e-5,2.3700943505328696e-8,-9.318736216132645e-4,3.331219177128394e-5,2.3798471243414568e-8,-9.318752640651988e-4,3.338676318697942e-5,2.3833655432768257e-8,-9.31866963948998e-4,3.331301147491189e-5,2.3799668733206908e-8,-9.317849968972861e-4,3.311655040946259e-5,2.3709231637614105e-8,-9.315865645433877e-4,3.2857438239323513e-5,2.3591073380549135e-8,-9.312628626536916e-4,3.2610345594110236e-5,2.3480457903216238e-8,-9.308393005661033e-4,3.24417200448329e-5,2.3408301483171562e-8,-9.303651936824847e-4,3.239281090859414e-5,2.339318150193606e-8,-9.298986864069065e-4,3.24725338782039e-5,2.343818307136948e-8,-9.29492219127464e-4,3.265959531263871e-5,2.3532245846076462e-8,-9.291818021359038e-4,3.2911055999915944e-5,2.3654527540462002e-8,-9.289814804693926e-4,3.317408157338681e-5,2.3780107907133812e-8,-9.28883102878134e-4,3.339795710135585e-5,2.3885603751994195e-8,-9.288606081706539e-4,3.3543937048918637e-5,2.3953598676844333e-8,-9.288772589118661e-4,3.3591181371482934e-5,2.3975172255395918e-8,-9.288937419745458e-4,3.353814016920971e-5,2.395033272948154e-8,-9.288751893623011e-4,3.340004673214571e-5,2.3886721538417358e-8,-9.287959268978146e-4,3.320403594462646e-5,2.3797303763589087e-8,-9.286417064222096e-4,3.298355112980294e-5,2.369778683496962e-8,-9.284099392258089e-4,3.277328729013441e-5,2.3604298515993387e-8,-9.281087947963245e-4,3.260518664063019e-5,2.3531530406527254e-8,-9.277558922978596e-4,3.25053020042501e-5,2.3491259018736307e-8,-9.27376881127838e-4,3.2490978444289704E-05,2.349102519309791e-8,-9.270036743482587e-4,3.2567791005183e-5,2.3532761106056747e-8,-9.266715169341242e-4,3.2726055504754945e-5,2.361130945511728e-8,-9.264137151151058e-4,3.293770276831043e-5,2.3713172494102367e-8,-9.262532777753961e-4,3.315574465668824e-5,2.3816439311101114e-8,-9.261924253535585e-4,3.331972423030237e-5,2.389335984974595e-8,-9.262040127993932e-4,3.336992217268715e-5,2.3916815814377182e-8,-9.262317722939682e-4,3.326872605091641e-5,2.3870037451283865e-8,-9.26204733848964e-4,3.3020183443077696e-5,2.3755545743126395e-8,-9.260627882338456e-4,3.267485106444268e-5,2.3597373291928313e-8,-9.257806549268176e-4,3.2313603001887904e-5,2.343349628055146e-8,-9.253766285983505e-4,3.201794497161325e-5,2.3301884783205278e-8,-9.249026226141552e-4,3.1842977355389055e-5,2.3227766419155888e-8,-9.244236141866019e-4,3.1804942562237756e-5,2.321783898637054e-8,-9.239978305283136e-4,3.188429203691447e-5,2.3261932645223352e-8,-9.236643245273065e-4,3.203781785436325e-5,2.3339012154274225e-8,-9.234386977616611e-4,3.221281488408803e-5,2.3424069805742805e-8,-9.233147289125141e-4,3.235906739356297e-5,2.3493825767808208e-8,-9.232692914346888e-4,3.243722377144107e-5,2.3530540271546322e-8,-9.232686902572398e-4,3.242362191865267e-5,2.3524031114582375e-8,-9.232753070314963e-4,3.231198064538372e-5,2.347219924760264e-8,-9.232537561991422e-4,3.211234823824068e-5,2.3380345332508162e-8,-9.231758558037119e-4,3.1847866001873865e-5,2.3259584838009844e-8,-9.230239270817444e-4,3.155012781518374e-5,2.3124710835478002e-8,-9.227922362546493e-4,3.1253999746506684e-5,2.299185234886264e-8,-9.224867387452752e-4,3.0992724464646724e-5,2.2876250708263638e-8,-9.221236055597706e-4,3.079385597163362e-5,2.27903811393233e-8,-9.217270560533948e-4,3.067609570471294e-5,2.2742468990955336e-8,-9.213267796337176e-4,3.064680318714811e-5,2.2735346156833847e-8,-9.20954912564315e-4,3.0699934328855683e-5,2.2765581416612138e-8,-9.206421478418023e-4,3.08143607477365e-5,2.2822873109824424e-8,-9.204122660196305e-4,3.095320827010874e-5,2.2889943688910157e-8,-9.202747886912586e-4,3.106597764009101e-5,2.2943650815208422e-8,-9.20216936947342e-4,3.1095988189358365e-5,2.2958395502173376e-8,-9.201985234595585e-4,3.099497926622176e-5,2.2912665548665453e-8,-9.201557642877907e-4,3.074296687634402e-5,2.2797948208220792e-8,-9.200186966514138e-4,3.0364621739963786e-5,2.2626137511840795e-8,-9.197385636888824e-4,2.9929213138156976e-5,2.242949417390068e-8,-9.193108394574188e-4,2.9527970187913423e-5,2.225019669376877e-8,-9.187785340875029e-4,2.9238845703639758e-5,2.2123997801802605e-8,-9.182134225021054e-4,2.9098989670442113e-5,2.2067447146301895e-8,-9.176879830111815e-4,2.9098589555165532e-5,2.2075132170368005e-8,-9.17253784391652e-4,2.9193712335522423e-5,2.212586268610836e-8,-9.169332050515159e-4,2.932621852597383e-5,2.2192168520093514e-8,-9.167219505579218e-4,2.944065181810668e-5,2.224829932694638e-8,-9.165966656263807e-4,2.949439756587482e-5,2.2274934020959177e-8,-9.165233093736817e-4,2.9461840863147958e-5,2.226094758259148e-8,-9.164642868928159e-4,2.9334685108527463e-5,2.220331133229603e-8,-9.163839913645998e-4,2.9120232422900573e-5,2.2106066579955823e-8,-9.162530317647461e-4,2.883851348103519e-5,2.1978863978225656e-8,-9.160513185398048e-4,2.8518597058158136e-5,2.1835244906513958e-8,-9.15769988624412e-4,2.8194298243653313e-5,2.1690730238489156e-8,-9.154120664548803e-4,2.7899535170271005e-5,2.1560765750180442e-8,-9.149917488095805e-4,2.7663738874698725e-5,2.1458654195702416e-8,-9.145323801553542e-4,2.7507851429598272e-5,2.1393709233720136e-8,-9.140634112563936e-4,2.744128142921948e-5,2.136983448703116e-8,-9.136166435043148e-4,2.745994641856036e-5,2.1384644526880326e-8,-9.13221944692427e-4,2.754549808736449e-5,2.1429208794373388e-8,-9.129024910120398e-4,2.7665888640565562e-5,2.148847949703196e-8,-9.126694819496386e-4,2.7777706431344518e-5,2.154253176218981e-8,-9.125166098566058e-4,2.7831321553144563e-5,2.156899691685832e-8,-9.124157000485842e-4,2.7780165658292776e-5,2.1547232079309533e-8,-9.123165267733067e-4,2.759442992476146e-5,2.1464373542698462e-8,-9.121548623777333e-4,2.7276427140508372e-5,2.1322119221499095e-8,-9.118711019526034e-4,2.6870144591949852e-5,2.114094313683426e-8,-9.114350063079968e-4,2.6455006129514234e-5,2.0957209029743784e-8,-9.108634742462995e-4,2.6120092101343845e-5,2.081139801841706e-8,-9.102178200814272e-4,2.5929424367736944e-5,2.0732255869559906e-8,-9.095797117160946e-4,2.5898353086471822e-5,2.0726067368364644e-8,-9.090202329768966e-4,2.5993933266429337e-5,2.077699539719869e-8,-9.085793014011967e-4,2.615479802733407e-5,2.0856387709915296e-8,-9.082619863653898e-4,2.6315579246745158e-5,2.09341239475786e-8,-9.080467696016204e-4,2.6424152758084614e-5,2.098656643738969e-8,-9.078974977973308e-4,2.6448875948786817e-5,2.0999792057647626e-8,-9.077736775849799e-4,2.6378608518081082e-5,2.0969414117202983e-8,-9.076374388060467e-4,2.621931034153885e-5,2.089880711320176e-8,-9.074576563940846e-4,2.598981028468818e-5,2.0797007293920687e-8,-9.072123555606045e-4,2.5717763310892864e-5,2.067680801973962e-8,-9.068901702931364e-4,2.543581375595846e-5,2.055305287961445e-8,-9.064910919600087e-4,2.51777245706118e-5,2.044096225969404e-8,-9.060264239903059e-4,2.497429600456872e-5,2.0354350101638346e-8,-9.055176396903595e-4,2.4849147035049042e-5,2.0303725663131417e-8,-9.049938331462582e-4,2.48148520431951e-5,2.0294513960783498e-8,-9.044877759473634e-4,2.487013629166907e-5,2.0325761996341625e-8,-9.040309431041147e-4,2.4998716181532725e-5,2.0389648367651206e-8,-9.036480496186143e-4,2.5170219741609872e-5,2.0472012539751645e-8,-9.033517513971097e-4,2.534346091236584e-5,2.0553994872596846e-8,-9.031382345469437e-4,2.5472113323665762e-5,2.0614734900078757e-8,-9.029845516590252e-4,2.5512741628428336e-5,2.0635033273204925e-8,-9.028490149929373e-4,2.5434954827073677e-5,2.0601836238167363e-8,-9.026764902106563e-4,2.5232408447057923e-5,2.0513003051675774e-8,-9.02410173775587e-4,2.4931333305205534e-5,2.03809375747986e-8,-9.020092509206674e-4,2.459113424824214e-5,2.0232703367730958e-8,-9.014671775780341e-4,2.4291763948560345e-5,2.0104263036672917e-8,-9.008206650653747e-4,2.4108119510329703e-5,2.0028949316011377e-8,-9.001407652157997e-4,2.40815816794724e-5,2.002473027343289e-8,-8.995076036470077e-4,2.4204454860463047e-5,2.0087372224985797e-8,-8.989819618378563e-4,2.4426402095344975e-5,2.0193550978397385e-8,-8.985886426926948e-4,2.4677367529835956e-5,2.0311351442965695e-8,-8.983168875609791e-4,2.489249041554455e-5,2.0411570672683616e-8,-8.981321994515865e-4,2.5027742305275945e-5,2.0474734817052442e-8,-8.979905680705888e-4,2.506411353886881e-5,2.0492861273368607e-8,-8.978493659111419e-4,2.50042478933684e-5,2.0467761838839778e-8,-8.976735626310779e-4,2.486629512223054e-5,2.040810250953443e-8,-8.974383807300419e-4,2.46779904367794e-5,2.0326637181998767e-8,-8.971300793370073e-4,2.447195277178342e-5,2.0238087853917463e-8,-8.967460299014721e-4,2.4281946492655756e-5,2.0157529321890946e-8,-8.962944874862408e-4,2.41394984040332e-5,2.009894778188007e-8,-8.957939342688571e-4,2.4070383811391924e-5,2.0073707412014148e-8,-8.952715333108823e-4,2.4090842783267837e-5,2.0088849549234874e-8,-8.94760107898572e-4,2.420397021695154e-5,2.014545178891125e-8,-8.942933680114259e-4,2.4397265038716906e-5,2.0237535845060154e-8,-8.938997498069575e-4,2.4642474151023778e-5,2.0352064205131918e-8,-8.935958998883974e-4,2.4898610660257977E-05,2.047041270308535e-8,-8.933813137979958e-4,2.5118392150347438e-5,2.057138082449648e-8,-8.932357382837027e-4,2.525738915614616e-5,2.0635360425476936e-8,-8.931205738507962e-4,2.5284299096435977e-5,2.0648906749984923e-8,-8.929848689198422e-4,2.5190265415252555e-5,2.0608774843090036e-8,-8.927757350545704e-4,2.4994824362930195e-5,2.052437537467493e-8,-8.924519189134882e-4,2.4745797708676503e-5,2.0417514294488545e-8,-8.919975931406865e-4,2.4510848006438183e-5,2.031846414448125e-8,-8.914314961573257e-4,2.436039906856739e-5,2.0258291785338553e-8,-8.908058509117407e-4,2.4345690900774747e-5,2.0259156353576073e-8,-8.901923458736179e-4,2.4480408023514104e-5,2.032632704668696e-8,-8.896591855754514e-4,2.473538117757218e-5,2.0446077286436584e-8,-8.892494467896753e-4,2.505003874490458e-5,2.0590986107984132e-8,-8.889707658958967e-4,2.5354671159387962e-5,2.0729934824061592e-8,-8.887992171195747e-4,2.5592069573353648e-5,2.0837712880844427e-8,-8.886922966930062e-4,2.572983863637043e-5,2.0900398514110002e-8,-8.886031916452067e-4,2.576187327548421e-5,2.0915874009217856e-8,-8.884910916697882e-4,2.5702806387382103e-5,2.0891201501616617e-8,-8.883263469942507e-4,2.5580247122862124e-5,2.0839048300129043e-8,-8.880918126579759e-4,2.5427917810549098e-5,2.0774582188619598e-8,-8.877822930623571e-4,2.528066113611859e-5,2.071327182632323e-8,-8.874034503409459e-4,2.51709375729389e-5,2.0669390176493168e-8,-8.869707261418254e-4,2.5125989723721748e-5,2.0654810035291582e-8,-8.865081500699982e-4,2.5164954314173364e-5,2.067774642510077e-8,-8.86046435520712e-4,2.5295625909005256e-5,2.074132329135633e-8,-8.856195799846079e-4,2.5511276908268373e-5,2.0842176511925037e-8,-8.852594627043434e-4,2.578871501824554e-5,2.0969645761179816e-8,-8.849887434082308e-4,2.6089236359805585e-5,2.1106290594163275e-8,-8.848135668142814e-4,2.6363915683878577e-5,2.12303363316089e-8,-8.847186517320325e-4,2.6563437790964064e-5,2.132009779085571e-8,-8.846674515235134e-4,2.6650601378864086e-5,2.1359523275735847e-8,-8.846087189309281e-4,2.66117823350549e-5,2.1343206192558952e-8,-8.844884826177575e-4,2.6463259603390726e-5,2.1279054822091283e-8,-8.84264302201615e-4,2.6249677950410016e-5,2.1187425909026206e-8,-8.839176546726403e-4,2.6034332006823362e-5,2.109662263366006e-8,-8.83460649868888e-4,2.588342561020468e-5,2.1035784916221402e-8,-8.82934630955511e-4,2.584833167410523e-5,2.102703848956324e-8,-8.824002202963414e-4,2.595091364572211e-5,2.1079174189276926e-8,-8.81920975885244e-4,2.61768927835987e-5,2.1185003004173495e-8,-8.815456299885851e-4,2.648030419312936e-5,2.132360042425762e-8,-8.812952960849518e-4,2.6797977084991984e-5,2.146685384949102e-8,-8.811602994497689e-4,2.7068443874576867e-5,2.1587808754275467e-8,-8.811068251980501e-4,2.7247856141716944e-5,2.1667584069800153e-8,-8.81089260979772e-4,2.7317788146902162e-5,2.169866440830599e-8,-8.810626671495409e-4,2.7284359038585255e-5,2.168436095027221e-8,-8.809914703339173e-4,2.7171697969967655e-5,2.1635803660338795e-8,-8.80853375306616e-4,2.7013728986054004e-5,2.1568241334736312e-8,-8.806396376131523e-4,2.6847076911299085e-5,2.14978976330453e-8,-8.803534902028214e-4,2.670608170906783e-5,2.1439805851815076e-8,-8.800081064751453e-4,2.661959400830792e-5,2.140644761622855e-8,-8.796247407013677e-4,2.6608697363742646e-5,2.1406789555317838e-8,-8.792309875330124e-4,2.668453948521081e-5,2.1445354689839482e-8,-8.788585456571649e-4,2.684586308158884e-5,2.152116684744657e-8,-8.78539601693883e-4,2.7076554888474195e-5,2.162673250547703e-8,-8.783011687268403e-4,2.7344451028370228e-5,2.1747606543339466e-8,-8.781575952511767e-4,2.760340690883203e-5,2.1863392752506867e-8,-8.781030584565838e-4,2.780060405021578e-5,2.1951002414711444e-8,-8.781075985026394e-4,2.7889387640801088e-5,2.1990279643567898e-8,-8.781205807905475e-4,2.7844561840664714e-5,2.197066505165757e-8,-8.780829418086908e-4,2.767387999018061e-5,2.1896173090185512e-8,-8.779448870805086e-4,2.74194206923248e-5,2.178590013371832e-8,-8.776820355245091e-4,2.7146767973214645e-5,2.166911671129024e-8,-8.773032995196551e-4,2.692589193920319e-5,2.157667830482182e-8,-8.768478522267831e-4,2.6811226903755186e-5,2.153215088316852e-8,-8.763733034865937e-4,2.6827771709541934e-5,2.1545755773169187e-8,-8.759398672705631e-4,2.6966612293309254e-5,2.1612637371882027e-8,-8.75595423955086e-4,2.718972268856917e-5,2.171528609991872e-8,-8.753651397527334e-4,2.744156484383133e-5,2.182888124213572e-8,-8.75247681912975e-4,2.766380317219204e-5,2.1927841507686533e-8,-8.752182834583848e-4,2.7809084316441637e-5,2.1991802394858896e-8,-8.752370705991506e-4,2.78503969031841e-5,2.2009553750829985e-8,-8.752596751637627e-4,2.7784140827711733e-5,2.1980196488628183e-8,-8.752468743315799e-4,2.7627256123099378e-5,2.1911727125109708e-8,-8.751709906385506e-4,2.741056684869909e-5,2.181802519722558e-8,-8.750184292407893e-4,2.717106230583093e-5,2.1715442258405405e-8,-8.747891179445456e-4,2.6945211256019782e-5,2.161989799005169e-8,-8.744942264117304e-4,2.6764246324536103e-5,2.1544865267399724e-8,-8.741534012510591e-4,2.6651298588158375e-5,2.1500162537119337e-8,-8.73792188217311e-4,2.6619664630001775e-5,2.1491228293641114e-8,-8.734396730616577e-4,2.6671435073366737e-5,2.1518551762450664e-8,-8.731258580016011e-4,2.679606382670435e-5,2.1577100432093963e-8,-8.7287798682881e-4,2.696908317973565e-5,2.165584590639723e-8,-8.727151324958717e-4,2.7152056798777518e-5,2.1737843898724333e-8,-8.726411876491597e-4,2.7295776371153268e-5,2.180169400597056e-8,-8.72638123277193e-4,2.7348884643569248e-5,2.1825288578833227e-8,-8.726635290724197e-4,2.7272385770363037e-5,2.1792059497611342e-8,-8.726572026318421e-4,2.7056308642078688e-5,2.16981558387545e-8,-8.725583379939474e-4,2.673014546177635e-5,2.1556946339519295e-8,-8.723277672615219e-4,2.6358529275551267e-5,2.1397083391496553e-8,-8.719640776249092e-4,2.6020955368897574e-5,2.1253534423843147e-8,-8.715045501738401e-4,2.5784651947306544e-5,2.1155571953329428e-8,-8.71011034255676e-4,2.5683903518439307e-5,2.1117663450457478e-8,-8.705491307552995e-4,2.5713812934991007e-5,2.113685431521052e-8,-8.701702166525884e-4,2.5837496324388218e-5,2.119617587482424e-8,-8.699014006819977e-4,2.6000426627921144e-5,2.1271201276789622e-8,-8.697436570127698e-4,2.6145631661998167e-5,2.1336868320268546e-8,-8.696759171271625e-4,2.6225891752515828E-05,2.137282593288771e-8,-8.696624900426764e-4,2.621144415050257e-5,2.136666972028361e-8,-8.696616766384265e-4,2.609309797451578e-5,2.1315093592520665e-8,-8.696339802855976e-4,2.58812240139253e-5,2.1223246173929514e-8,-8.695486258957221e-4,2.560145694153938e-5,2.1102720086846007e-8,-8.693875014404906e-4,2.5288439658636282e-5,2.096877998090809e-8,-8.691463110554454e-4,2.4979158898865863e-5,2.083749001199522e-8,-8.688333814216199e-4,2.4707133641329762e-5,2.0723252879501703e-8,-8.684669509396333e-4,2.449818770419122e-5,2.0637035505226535e-8,-8.680718625220174e-4,2.4367943926356345e-5,2.0585317375536392e-8,-8.676763190924599e-4,2.432063005736646e-5,2.0569587886541e-8,-8.673088635246923e-4,2.4348592526606557e-5,2.0586157121313442e-8,-8.669953180759233e-4,2.4432155464044134e-5,2.0626149014017224e-8,-8.667551694766482e-4,2.4539935083866278e-5,2.0675728630559995e-8,-8.665969051568935e-4,2.4630410220170644e-5,2.0716875446414914e-8,-8.665124727648299e-4,2.4656354944466406e-5,2.0729342915038327e-8,-8.664725697134575e-4,2.4573949994687252e-5,2.0694555012387574e-8,-8.664264664054185e-4,2.43569138231536e-5,2.0601608133330403e-8,-8.663110139622543e-4,2.401199304406164e-5,2.0453867175701917e-8,-8.660704693962533e-4,2.3586965902470763e-5,2.0272378725582345e-8,-8.656806366986982e-4,2.316147155005631e-5,2.0091868871878088e-8,-8.651633988921566e-4,2.281978312873848e-5,1.9948869925345905e-8,-8.645805810525198e-4,2.2618527290404762e-5,1.9867633866200034e-8,-8.640097643843145e-4,2.256770525095591e-5,1.9851904328723277e-8,-8.635166675543678e-4,2.2633614094821955e-5,1.9886336038762515e-8,-8.63137948012429e-4,2.2757311910044172e-5,1.9944743482180508e-8,-8.628781813717942e-4,2.2875933655872637e-5,1.9999555353413913e-8,-8.62716501594731e-4,2.2938215554097242e-5,2.0028639520069148e-8,-8.626167844185233e-4,2.291219190087368e-5,2.0018587878018706e-8,-8.625373867297079e-4,2.2786717609544522e-5,1.9965210231098124e-8,-8.624388179572647e-4,2.256927580919071e-5,1.987237287145151e-8,-8.62289189850553e-4,2.2281913356921493e-5,1.975006320331657e-8,-8.620677332013985e-4,2.195621272300181e-5,1.9612130462789248e-8,-8.617664966194991e-4,2.16277997444501e-5,1.9473928068892485e-8,-8.613902656342819e-4,2.1330954467429593e-5,1.935006757875441e-8,-8.609548908336364e-4,2.109389378252815e-5,1.9252475069560743e-8,-8.60484364617139e-4,2.0935189055747062e-5,1.9188905233103563e-8,-8.600071436128826e-4,2.086164348674763e-5,1.91620410767755e-8,-8.595522857630777e-4,2.086763182325774e-5,1.916920143547591e-8,-8.591457649603986e-4,2.0935595960451394e-5,1.9202563113239573e-8,-8.588070106868445e-4,2.103741778004402e-5,1.9249802291736785e-8,-8.585455278490724e-4,2.1136657572340328e-5,1.9295144248855717e-8,-8.583574459539792e-4,2.119206027325631e-5,1.9320951414396224e-8,-8.582223041875423e-4,2.1163256231024873e-5,1.9310193204886934e-8,-8.581015046639913e-4,2.1019633830437e-5,1.9250187621650533e-8,-8.579412331421961e-4,2.0752106826417253e-5,1.913751847356446e-8,-8.576831677947019e-4,2.0384459053393114e-5,1.898276909784322e-8,-8.572838524692297e-4,1.997686961930766e-5,1.8811952221028124e-8,-8.567366035007616e-4,1.9613260947646273e-5,1.8661045623987466e-8,-8.560824766647061e-4,1.9371935268362093e-5,1.8563376708157653e-8,-8.553990379155328e-4,1.9293084341216936e-5,1.8535706064271064e-8,-8.547703530167884e-4,1.936321412352537e-5,1.8571651992880513e-8,-8.542559556665059e-4,1.952555465174852e-5,1.864632532315067e-8,-8.538756727449201e-4,1.970687106733324e-5,1.8727989569739696e-8,-8.536133022643489e-4,1.9843141688829028e-5,1.8789169711081318e-8,-8.534305325201742e-4,1.989357508587466e-5,1.8812667709058706e-8,-8.532814843157356e-4,1.984307509264013e-5,1.879252452479186e-8,-8.531232008002682e-4,1.969807749884717e-5,1.8732068113313398e-8,-8.529215833508998e-4,1.9480194465247334e-5,1.864101205609392e-8,-8.526540395091069e-4,1.9220106769211913e-5,1.8532719999846374e-8,-8.523103008730304e-4,1.8952387630912345e-5,1.8421969114052342e-8,-8.518922166171214e-4,1.8711017815063302e-5,1.83230973754797e-8,-8.514126718644334e-4,1.8525339647629737e-5,1.8248378472723516e-8,-8.508935758492765e-4,1.8416482805648164e-5,1.820658103690855e-8,-8.503628746581636e-4,1.839451037204468e-5,1.8201787199229734e-8,-8.498506739728784e-4,1.8456726342008194e-5,1.823266217066025e-8,-8.493848597949864e-4,1.858755364818312e-5,1.8292382925859e-8,-8.489867877928165e-4,1.8760075533750793e-5,1.8369304773500778e-8,-8.486675197616957e-4,1.8939094885436825e-5,1.8448317961918758e-8,-8.484249414374999e-4,1.908551666785093e-5,1.8512794690847823e-8,-8.482420318448436e-4,1.9161892414962764e-5,1.854700959220887e-8,-8.480866947760388e-4,1.9139120485201888e-5,1.853898427741999e-8,-8.47914089849887e-4,1.9004229019293404e-5,1.8483705191242097e-8,-8.476729841454053e-4,1.8768219337488148e-5,1.8386304668266145e-8,-8.473174336537129e-4,1.847105600233066e-5,1.8264025543393118e-8,-8.46823043761053e-4,1.8178888378359918e-5,1.814493877116609e-8,-8.462024594710862e-4,1.7968779622830955e-5,1.8061442704564362e-8,-8.455100213327113e-4,1.790201857047041e-5,1.8039011781499097e-8,-8.44827387250912e-4,1.7997506299222376e-5,1.8085063263440332e-8,-8.442336473553949e-4,1.82219741246474e-5,1.8184995677384506e-8,-8.437761660142642e-4,1.8504766407932626e-5,1.8308588065556925e-8,-8.434584576481965e-4,1.8767662195956877e-5,1.842267679658266e-8,-8.4324815382798e-4,1.895151458304113e-5,1.8502419193258396e-8,-8.430953104809079e-4,1.9028223922689918e-5,1.853631028756183e-8,-8.429494942284543e-4,1.8998849917980934e-5,1.852528741826402e-8,-8.427701821877676e-4,1.8884905878580218e-5,1.8478909462789928E-08,-8.425307640973115e-4,1.8718917804788393e-5,1.8411232187863652e-8,-8.4221863676526e-4,1.853706175763964e-5,1.8337626368837928e-8,-8.418337179676496e-4,1.837420046907955e-5,1.827269721178165e-8,-8.413866423383756e-4,1.8260484347668602e-5,1.822893007494307e-8,-8.408968704231464e-4,1.8218648925198794e-5,1.821564458019552e-8,-8.403904546985228e-4,1.8261602613572497e-5,1.8238040596675744e-8,-8.398971047784783e-4,1.8390365569227584e-5,1.8296347683661744e-8,-8.394462933471349e-4,1.859286581010708e-5,1.8385307406524103e-8,-8.390625554693548e-4,1.8844349042141637e-5,1.849434016111365e-8,-8.387606740926772e-4,1.9109956838288736e-5,1.86086555425353e-8,-8.38541735765671e-4,1.934955354341349e-5,1.871133966197072e-8,-8.383910411803681e-4,1.9524369896896514e-5,1.8786212347626552e-8,-8.382786396254357e-4,1.9604517498810704e-5,1.882101552190826e-8,-8.381628606157513e-4,1.957613104080785e-5,1.8810378176449664e-8,-8.379968680478822e-4,1.9446885164135782e-5,1.8758024552986323e-8,-8.377380159940519e-4,1.924845999124919e-5,1.8677651607636933e-8,-8.373591718549969e-4,1.9034058927322546e-5,1.8591733411884385e-8,-8.368597531357094e-4,1.886904423475679e-5,1.8527502435010273e-8,-8.362722099438048e-4,1.881422597460021e-5,1.8509963766801086e-8,-8.356585036787218e-4,1.890516421021724e-5,1.8553367099453363e-8,-8.350935969910999e-4,1.913599743885326e-5,1.865465529485676e-8,-8.346403242080155e-4,1.945802313397077e-5,1.8793064946602195e-8,-8.34327545916489e-4,1.979670869488179e-5,1.893732043323308e-8,-8.341432058884843e-4,2.0079064624085877e-5,1.905704488089487e-8,-8.340443957116498e-4,2.0256813697895776e-5,1.9132370964305275e-8,-8.339762461212966e-4,2.0315496394862994e-5,1.915767659009268e-8,-8.338890176634837e-4,2.0269954024688864e-5,1.9139616310843984e-8,-8.337477088005211e-4,2.015310994528189e-5,1.9092327487425826e-8,-8.335344195487556e-4,2.0004740360878148e-5,1.9032641784256222e-8,-8.332464619472108e-4,1.9863456916696745e-5,1.897669433393755e-8,-8.328930721117551e-4,1.9762094713418337e-5,1.8938027533986976e-8,-8.32492297882966e-4,1.9725314418621403e-5,1.8926665101186917e-8,-8.32068415293489e-4,1.97681582273195e-5,1.8948588036477114e-8,-8.316495311428089e-4,1.9894810847537727e-5,1.900526818571205e-8,-8.312647852018803e-4,2.0097427747145573e-5,1.909320121864192e-8,-8.309406311115315e-4,2.0355522535096095e-5,1.9203660731413604e-8,-8.306961138447342e-4,2.0636898921431595e-5,1.9323105247655924e-8,-8.305378232200559e-4,2.0901137965268803e-5,1.9434664802670044e-8,-8.304559556956476e-4,2.1106081507306507e-5,1.9520878928693548e-8,-8.304232734093543e-4,2.121667553013109e-5,1.9567400873830927e-8,-8.303983658234531e-4,2.121422167099143e-5,1.9566836162855173e-8,-8.303333870477527e-4,2.1103220227911646e-5,1.952153119702011e-8,-8.301848490250651e-4,2.0913258553630374e-5,1.9444248405592745e-8,-8.299248979192241e-4,2.069466744819484e-5,1.935621254368111e-8,-8.295501421522738e-4,2.0508232040964325e-5,1.928269583340997e-8,-8.290853574454966e-4,2.0410715377186484e-5,1.9246942812164235e-8,-8.285801055587781e-4,2.0439332177392955e-5,1.9263794111536346e-8,-8.2809766077195e-4,2.059951905236773e-5,1.9334808940806114e-8,-8.276980402284858e-4,2.086083916102179e-5,1.944680759157122e-8,-8.274201421640853e-4,2.1164367562493242e-5,1.957510063623294e-8,-8.272700826664273e-4,2.1440488239337026e-5,1.9690891838981256e-8,-8.272211164209307e-4,2.163042771909038e-5,1.9770119508971764e-8,-8.272248984694739e-4,2.1702369405362463e-5,1.980002378644996e-8,-8.27228099796603e-4,2.1656229173428763e-5,1.9781034701150995e-8,-8.271868289199328e-4,2.151765544352276e-5,1.9724204114230814e-8,-8.270743741962598e-4,2.1326531390819485e-5,1.9646358599563786e-8,-8.26882219952542e-4,2.1125677324855516e-5,1.9565355735798533e-8,-8.266169368517766e-4,2.095292185174144e-5,1.94967870339568e-8,-8.262957480189584e-4,2.0836914464318622e-5,1.9452286083130493e-8,-8.25942474644233e-4,2.0795532754586838e-5,1.9438941053262905e-8,-8.255843718992038e-4,2.083550384946244e-5,1.9459206265133282e-8,-8.252495647333255e-4,2.095228065573517e-5,1.9510899184512012e-8,-8.249644062349847e-4,2.112985311313308e-5,1.958715392852858e-8,-8.247500865889223e-4,2.1340896571258705e-5,1.96765117319045e-8,-8.24618243855376e-4,2.1548299489712724e-5,1.9763583444848516e-8,-8.245661579256653e-4,2.1709369314150928e-5,1.983081139445514e-8,-8.245731982415894e-4,2.1783542272099323e-5,1.9861656355918796e-8,-8.246010337711906e-4,2.174293624505869e-5,1.9844932417100713e-8,-8.24599762693081e-4,2.1582829143363222e-5,1.9779092489063103e-8,-8.245199320168276e-4,2.1327443144663598e-5,1.9674559193285197e-8,-8.243271463267552e-4,2.1027056964939968e-5,1.9552443886955017e-8,-8.240137478913354e-4,2.0745880537874062E-05,1.9439417625111437e-8,-8.236027048837928e-4,2.054443207807126e-5,1.9360323569771445e-8,-8.231420981185931e-4,2.046260583006955e-5,1.9331166390175837e-8,-8.226923062309316e-4,2.050897293837082e-5,1.9354816716611825e-8,-8.223101620532402e-4,2.065914064149752e-5,1.9420558033546697e-8,-8.220346412416486e-4,2.0863033376546166e-5,1.9507310836051278e-8,-8.218778118280972e-4,2.1058697312165184e-5,1.958944171580837e-8,-8.218233231961076e-4,2.1188662210092975e-5,1.964349015093813e-8,-8.218326197553458e-4,2.1214125651217814e-5,1.9653903415513317e-8,-8.21856605729153e-4,2.112285109501725e-5,1.9616154125454246e-8,-8.218486723198633e-4,2.092896166987658e-5,1.9536534435121197e-8,-8.21774900682099e-4,2.0665900016862456e-5,1.9429164058162805e-8,-8.216189955439171e-4,2.0376078120981753e-5,1.9311669317101807e-8,-8.213819939742871e-4,2.010103213726683e-5,1.9201115798957357e-8,-8.210785719648872e-4,1.987447711399243e-5,1.911118281263017e-8,-8.20732153301422e-4,1.9718757169934105e-5,1.905076891931154e-8,-8.203703758138432e-4,1.964388881521585e-5,1.9023668998090353e-8,-8.200215277640998e-4,1.9647991667492965e-5,1.9028805308153496e-8,-8.197118007420141e-4,1.971813517172542e-5,1.906061049159396e-8,-8.194627667111748e-4,1.983118207998987e-5,1.910940136475893e-8,-8.192884188063901e-4,1.99548908795387e-5,1.9161861647232118e-8,-8.191914615513263e-4,2.005020377589606e-5,1.920200887423933e-8,-8.191593400069361e-4,2.0076033762683125e-5,1.92131658914827e-8,-8.191616964490206e-4,1.999753215727303e-5,1.9181325413606254e-8,-8.191520734989105e-4,1.9797250015148836e-5,1.909967483876304e-8,-8.190765586708921e-4,1.948575838000759e-5,1.8972896885336155e-8,-8.188893026085382e-4,1.9105659284594878e-5,1.881876618035338e-8,-8.185698549347501e-4,1.8723588649551148e-5,1.8664805935860888e-8,-8.181336800547649e-4,1.8410527065246534e-5,1.8540121068539456e-8,-8.176292682317155e-4,1.8218322499468568e-5,1.8465698823274743e-8,-8.171225750854558e-4,1.816336880244077e-5,1.844774602721915e-8,-8.166763753560664e-4,1.8224017124166648e-5,1.8476781130729858e-8,-8.163333375780404e-4,1.8350561857245017e-5,1.853193523194076e-8,-8.16107745214289e-4,1.8481632209535812e-5,1.8587831243527868e-8,-8.159860616604793e-4,1.8560533642340127e-5,1.8621333711184525e-8,-8.159338548044192e-4,1.8547406867931718e-5,1.8616474714546974e-8,-8.159059685028022e-4,1.8425544094309115e-5,1.856691337547998e-8,-8.158571772717478e-4,1.8201877478809365e-5,1.8475986230218312e-8,-8.157511568267292e-4,1.790263037304738e-5,1.8354797984609146e-8,-8.155662647845826e-4,1.756578402681822e-5,1.8219061692464088e-8,-8.152974777324008e-4,1.7232463817564305e-5,1.80855624276064e-8,-8.149548380423059e-4,1.6939285910434784e-5,1.79690735294896e-8,-8.14559552341495e-4,1.6713010048744217e-5,1.7880250136234366e-8,-8.141391520903434e-4,1.6567887899189816e-5,1.7824625038532265e-8,-8.13722894907782e-4,1.65052911686815e-5,1.7802510165505718e-8,-8.133380240113629e-4,1.6514764792978118e-5,1.7809448528021547e-8,-8.130068823177181e-4,1.6575692411162992e-5,1.7836899066496914e-8,-8.127444898746023e-4,1.6659173301351172e-5,1.787301036505299e-8,-8.12556110967037e-4,1.6730231029844328e-5,1.79035428156178e-8,-8.1243455505061e-4,1.6751012160459823e-5,1.7913194389418595e-8,-8.123576337801389e-4,1.6686038010803166e-5,1.7887740556088877e-8,-8.122873281432063e-4,1.6510317217035855e-5,1.7817300812807638e-8,-8.12173296759821e-4,1.6219656866485414e-5,1.7700472205744483e-8,-8.119633169768517e-4,1.5839706948872637e-5,1.754794502201198e-8,-8.116204935794114e-4,1.5427302108426434e-5,1.7382995748216617e-8,-8.111412381260521e-4,1.5058049525129414e-5,1.723638629723847e-8,-8.105632272728717e-4,1.4801145884299286e-5,1.713607209252042e-8,-8.099554919138893e-4,1.4692744717581516e-5,1.7096374287795603e-8,-8.093939263332287e-4,1.4722847634811913e-5,1.7112747706322244e-8,-8.089353936498745e-4,1.484233801753127e-5,1.7164799969601408e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json new file mode 100644 index 0000000000..de223822b7 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":6000,"numberOfSamples":1000,"samples":[-8.086030009769924e-4,1.4983810405869992e-5,1.7224897231104907e-8,-8.083859978917138e-4,1.5083891420443416e-5,1.7267300877946733e-8,-8.082495498012613e-4,1.5098334698112563e-5,1.727428602498279e-8,-8.08147627922185e-4,1.5007880436382382e-5,1.72384405012867e-8,-8.080344588306433e-4,1.4817024022017442e-5,1.716203842239244e-8,-8.078727223656254e-4,1.4548770451198794e-5,1.705477562558989e-8,-8.076383715174149e-4,1.4237727414253643e-5,1.6930867623711068e-8,-8.07322519250199e-4,1.3922902257012772e-5,1.6806096847405343e-8,-8.069308512481781e-4,1.3641062334595963e-5,1.6695163186853533e-8,-8.064810674365431e-4,1.3421371907981373e-5,1.6609600165603765e-8,-8.059989962711845e-4,1.3281793410593358e-5,1.65564122262766e-8,-8.055140919096513e-4,1.3227437282497666e-5,1.6537470119423336e-8,-8.050550211507427e-4,1.3250758311506548e-5,1.654960752689265e-8,-8.046459011976815e-4,1.3333167640947059e-5,1.658525704041747e-8,-8.04303377210941e-4,1.3447472960351647e-5,1.6633415280209964e-8,-8.040343930544604e-4,1.3560785131852206e-5,1.6680814883554258e-8,-8.038344371049681e-4,1.3637887698738715e-5,1.6713305884428016e-8,-8.036861808400415e-4,1.3645376246194308e-5,1.6717552173535383e-8,-8.035588881624019e-4,1.355715046434086e-5,1.668324932697258e-8,-8.034098545481887e-4,1.3361633179672876e-5,1.660599824235996e-8,-8.031899161995416e-4,1.3069806636622722e-5,1.6490473396248044e-8,-8.028548171317579e-4,1.2720836118968e-5,1.635260915989386e-8,-8.023817298130074e-4,1.2379672673151174e-5,1.6218567533971117e-8,-8.017848916609258e-4,1.21214866090865e-5,1.6118432225501397e-8,-8.011195394685814e-4,1.2004672862047483e-5,1.6075358566152277e-8,-8.004664161243661e-4,1.2045064498369676e-5,1.6095295025865495e-8,-7.999018683719954e-4,1.2207888551202842e-5,1.6163899894807838e-8,-7.994702224832471e-4,1.242340488168506e-5,1.625294935668257e-8,-7.991732540075557e-4,1.2615665237930678e-5,1.6331930886767175e-8,-7.989782632286061e-4,1.2727385321542004e-5,1.6378010390939176e-8,-7.988353176257354e-4,1.2731278778766297e-5,1.6380533700705246e-8,-7.98693545654588e-4,1.262891363153558e-5,1.6340492793338305e-8,-7.985117563218257e-4,1.2443008649451221e-5,1.6267331548458157e-8,-7.982633092416262e-4,1.2208291416633506e-5,1.617517573988445e-8,-7.97937024226046e-4,1.1963551111059878e-5,1.6079587401967125e-8,-7.975359220318068e-4,1.1745517867734186e-5,1.5995123017000115e-8,-7.970748169146011e-4,1.1584298423249006e-5,1.5933578635139873e-8,-7.96577147084504e-4,1.1500116000004205e-5,1.59027823489698e-8,-7.960712612774264e-4,1.1501312858278244e-5,1.5905873133149612e-8,-7.955863788122124e-4,1.1583659586297626e-5,1.5941057128577827e-8,-7.951485028139105e-4,1.1731083070377464e-5,1.6001886167851592e-8,-7.947767272267163e-4,1.191780985300591e-5,1.607808021319529e-8,-7.944803671342594e-4,1.2111620389700717e-5,1.615680382240154e-8,-7.942570988685387e-4,1.2277833661532118e-5,1.622426162217438e-8,-7.940921495251726e-4,1.2383811890041994e-5,1.6267523534675877e-8,-7.939586304605242e-4,1.2403888228974189e-5,1.627651653757225e-8,-7.938193280601158e-4,1.2324675476991541e-5,1.6246136706354253e-8,-7.936307142675456e-4,1.2150538325271284e-5,1.6178380649204796e-8,-7.933502814410618e-4,1.1908091876990174e-5,1.608405253597014e-8,-7.929477558193591e-4,1.164701184564693e-5,1.5982993948326116e-8,-7.924185834346178e-4,1.1433225812865484e-5,1.5901308272972388e-8,-7.91794201526995e-4,1.1331683271163489e-5,1.5864503448445484e-8,-7.911404620961953e-4,1.1381697803054312e-5,1.5887775959579784e-8,-7.905387505296019e-4,1.1576581858174432e-5,1.5968081661271605e-8,-7.900557579253249e-4,1.1862063556780149e-5,1.6083659449037498e-8,-7.897185238722374e-4,1.2157584885353175e-5,1.6202533533502623e-8,-7.895090488599649e-4,1.238821600505574e-5,1.629512295943271e-8,-7.893784662655317e-4,1.2508703453700893e-5,1.6343711956180873e-8,-7.892687928634058e-4,1.2510154891614356e-5,1.6345059350363414e-8,-7.891303130012338e-4,1.2412762325594466e-5,1.630746636423513e-8,-7.889301607306106e-4,1.22532563576661e-5,1.6245726990312346e-8,-7.886537075923972e-4,1.207350096757021e-5,1.6176528951831164e-8,-7.883021088407754e-4,1.1912612868365128e-5,1.611529698390703e-8,-7.878886554381245e-4,1.1802366938175958e-5,1.6074404646753326e-8,-7.874351827903575e-4,1.1764678405500699e-5,1.606225725212218e-8,-7.869686785579548e-4,1.1810193745663737e-5,1.6082821884922013e-8,-7.865178808041266e-4,1.1937644143326378e-5,1.613543027797478e-8,-7.861097334099989e-4,1.2134002375285157e-5,1.621485643068633e-8,-7.857657050956631e-4,1.2375715139896458e-5,1.631178566628287e-8,-7.854982761710509e-4,1.2631342722271491e-5,1.6413830995212057e-8,-7.853082129742637e-4,1.2865627763957707e-5,1.650712800670973e-8,-7.851832404152557e-4,1.3044611801087987e-5,1.6578365268496393e-8,-7.850984979333072e-4,1.3141234772513003e-5,1.661701655440917e-8,-7.850189859904393e-4,1.314074642924285e-5,1.6617484545055545e-8,-7.849040783473408e-4,1.3045167089176555e-5,1.658083277620777e-8,-7.847140887854131e-4,1.2875989940709468e-5,1.6515781106734278e-8,-7.84418739673568e-4,1.2674020385660439e-5,1.643854403323704e-8,-7.840067264380274e-4,1.2494690124657561e-5,1.637089555624342e-8,-7.834940629310338e-4,1.2397202649814611e-5,1.633586078646625e-8,-7.829269123445694e-4,1.242762480633356e-5,1.6351121218225165e-8,-7.823738580167101e-4,1.2600199243328678e-5,1.6421819173272966e-8,-7.819059640317111e-4,1.2886068491034284e-5,1.6536310251172648e-8,-7.815711190078477e-4,1.3218908359013295e-5,1.6668481029581357e-8,-7.813760467322517e-4,1.3518369457025356e-5,1.678692018769316e-8,-7.812866097556989e-4,1.3719738169680302e-5,1.6866455278038853e-8,-7.81245043675736e-4,1.3793772038801468e-5,1.689586528796916e-8,-7.811924892995569e-4,1.3748855436262393e-5,1.6878708749903426e-8,-7.810853126995724e-4,1.3619700644445478e-5,1.6828864667497608e-8,-7.809012145161698e-4,1.3452099763330615e-5,1.6764485192192976e-8,-7.806376216935296e-4,1.3290653946538645e-5,1.6703112676782687e-8,-7.803066615377375e-4,1.31716120529323e-5,1.6658847878700447e-8,-7.799298430182615e-4,1.311988593603372e-5,1.6641219568441624e-8,-7.795337437080761e-4,1.3148379669826384e-5,1.665500141543589e-8,-7.791466519745774e-4,1.3258192670318894e-5,1.6700371540229692e-8,-7.787956166079658e-4,1.3439123013885566e-5,1.6773161126941902e-8,-7.785034521569552e-4,1.3670540636302536e-5,1.6865211246133127e-8,-7.782855194761558e-4,1.3923070098588027e-5,1.6965022456657025e-8,-7.781465158733033e-4,1.4161671472159447e-5,1.705894395665733e-8,-7.780780274644127e-4,1.4350439747166847e-5,1.713304166764391e-8,-7.780578724819625e-4,1.4458808126371696e-5,1.717552433911576e-8,-7.780520945693767e-4,1.4468165316748068e-5,1.7179332308174036e-8,-7.780199264883032e-4,1.4377381074197417e-5,1.7144283672725583e-8,-7.779212697790456e-4,1.42055818063788e-5,1.707811591367681e-8,-7.777254715128031e-4,1.399092160934568e-5,1.6995928407681764e-8,-7.774196852037493e-4,1.37848241088391e-5,1.691784077706239e-8,-7.770148281025337e-4,1.3641905255902624e-5,1.68649932739021e-8,-7.7654695118254e-4,1.3606723344494496e-5,1.6854386908037733e-8,-7.760719733956719e-4,1.3699981752654324e-5,1.6893614104122298e-8,-7.756528920660803e-4,1.3908611710779359e-5,1.6977171984468366e-8,-7.753414973715193e-4,1.4185135339496087e-5,1.708636928482128e-8,-7.751607783545031e-4,1.4459758828692502e-5,1.7194078255654558e-8,-7.750965022472446e-4,1.4662655192892729e-5,1.7273331572288793e-8,-7.751031768498831e-4,1.4747011345581016e-5,1.730618293517172e-8,-7.751215862559233e-4,1.4701900854900151e-5,1.7288656969080978e-8,-7.750986283316115e-4,1.45502732264208e-5,1.7229950783472687e-8,-7.750005720993924e-4,1.4336090541435382e-5,1.714739884303355e-8,-7.748166257563864e-4,1.4108830030091316e-5,1.7060381671628664e-8,-7.74555246270904e-4,1.3911680743308552e-5,1.6985680755460048e-8,-7.742375216046733e-4,1.3775437312394145e-5,1.6935101840957774e-8,-7.738908672395347e-4,1.3716934985120997e-5,1.691492118059338e-8,-7.735443296708602e-4,1.373987657547806e-5,1.6926288994825302e-8,-7.732253688257358e-4,1.3836379992091725e-5,1.6965903557041073e-8,-7.729574201870145e-4,1.398850143961783e-5,1.702664562074045e-8,-7.727575479089458e-4,1.41697546103367e-5,1.7098179346093112e-8,-7.726338127068317e-4,1.4347167415583573e-5,1.7167741915981117e-8,-7.72582526013079e-4,1.4484672906976143e-5,1.7221441721592798e-8,-7.725862452751478e-4,1.4548420666369706e-5,1.724630156120042e-8,-7.726138958417847e-4,1.4513823225779425e-5,1.723297684502607e-8,-7.726244080267737e-4,1.4372974279860863e-5,1.717861929269323e-8,-7.725743889406402e-4,1.4139927504773041e-5,1.708890500581759e-8,-7.724286327675101e-4,1.3851021527237483e-5,1.6978122122320604e-8,-7.721705055599232e-4,1.3558663671444288e-5,1.6866694872960056e-8,-7.718085762849863e-4,1.3319387181004731e-5,1.6776479385700888e-8,-7.713767987397502e-4,1.3179295367351444e-5,1.6725086614472134e-8,-7.709275714331829e-4,1.3161122848693512e-5,1.6720920077215314e-8,-7.705191844169844e-4,1.3256827859980563e-5,1.6760442718757147e-8,-7.702008063045723e-4,1.3428227793557443e-5,1.6828582942267516e-8,-7.699990644679152e-4,1.361618554202354e-5,1.6902388068197547e-8,-7.699104039245936e-4,1.3756467861176603e-5,1.6957151603506948e-8,-7.699023224946573e-4,1.3797806695198463e-5,1.697331252819716e-8,-7.69923693570122e-4,1.3715970518988264e-5,1.6941802014512077e-8,-7.699204730517889e-4,1.3518607018056203e-5,1.686585566047806e-8,-7.698506029324883e-4,1.3239647040700348e-5,1.675881321149357e-8,-7.696928309426752e-4,1.292679553392078e-5,1.663924458294889e-8,-7.694477547487295e-4,1.2627916951666916e-5,1.6525649634657365e-8,-7.691330174202381e-4,1.2380977939982187e-5,1.6432564147368763e-8,-7.687761526504343e-4,1.2209237379755138e-5,1.6368739832210366e-8,-7.684079653894965e-4,1.2120781661778011e-5,1.633703602331063e-8,-7.680577369530784e-4,1.2110432408898472e-5,1.6335228492463344e-8,-7.677501944254693e-4,1.21623329271923e-5,1.6357054465017322e-8,-7.675035516029946e-4,1.2252353588631538e-5,1.6393155437041988e-8,-7.673278510063229e-4,1.2350244031443248e-5,1.6431898304259127e-8,-7.672231013092557e-4,1.2422047112441263e-5,1.6460286860244704e-8,-7.671772688900853e-4,1.243363156115782e-5,1.6465302548663993e-8,-7.671649640707796e-4,1.2356108383738767e-5,1.6435971563363704e-8,-7.671484101972802e-4,1.2173134658280302e-5,1.6366160768870968e-8,-7.670825263514741e-4,1.188858814480631e-5,1.6257519307403445e-8,-7.669249561884815e-4,1.153125860759139e-5,1.6121270567197454e-8,-7.666492306156377e-4,1.115245465159126e-5,1.5977261511360678e-8,-7.662560978121537e-4,1.0814456656206232e-5,1.5849466079461248e-8,-7.657770512027595e-4,1.05724402594284e-5,1.5758977593618244e-8,-7.65267023298901e-4,1.0456872508954073e-5,1.571723833544501e-8,-7.647885985095952e-4,1.0463873633946137e-5,1.5722417018223885e-8,-7.643941100002343e-4,1.0557097979145212e-5,1.5760262592280024e-8,-7.641121194876584e-4,1.0679365871370066e-5,1.580868049828012e-8,-7.639418824019487e-4,1.0769014504534602e-5,1.5844044262621295e-8,-7.63856040874777e-4,1.0775642632836637e-5,1.5847200884499e-8,-7.638095816807227e-4,1.067134664327151e-5,1.5807708446849496e-8,-7.637520719001363e-4,1.0455341968064698e-5,1.5725533933861105e-8,-7.636398633410946e-4,1.015159717703648e-5,1.5610082730947348e-8,-7.634452271731003e-4,9.80080001717917e-6,1.547706895850993e-8,-7.63160419406769e-4,9.449412193445568e-6,1.5344290126782374e-8,-7.627963935193374e-4,9.13916163473737e-6,1.522760366709052e-8,-7.623775983584871e-4,8.899634906261868e-6,1.5138131787055436e-8,-7.619351862275943e-4,8.745021320744058e-6,1.5081084100568852e-8,-7.615007251523846e-4,8.674467790722235e-6,1.50559612980206E-08,-7.611015754607918e-4,8.674636046522299e-6,1.5057573206547553e-8,-7.607580727699104e-4,8.723012138457471e-6,1.507730793528806e-8,-7.604819845856674e-4,8.79104729455283e-6,1.5104310215033872e-8,-7.602755220059144e-4,8.84693302571431e-6,1.512651308174354e-8,-7.60130395955743e-4,8.858401879917029e-6,1.5131688225382546e-8,-7.600268787531797e-4,8.796280560370882e-6,1.5108794499177295e-8,-7.599335469922736e-4,8.639531259323042e-6,1.5049899963453894e-8,-0.000759809210702789,8.381910431287344e-6,1.495271925500096e-8,-7.596089689111743e-4,8.038852722231386e-6,1.4823230368913413e-8,-7.592954714676379e-4,7.651012523481406e-6,1.4677004696445236e-8,-7.588534536653339e-4,7.279557888325591e-6,1.4537373653592984e-8,-7.583012167940397e-4,6.990438849818558e-6,1.4429384557414762e-8,-7.576907836367265e-4,6.831496399448591e-6,1.4371061617021388e-8,-7.570930731261787e-4,6.813281142864784e-6,1.4366159181078007e-8,-7.56573893838745e-4,6.904553518906711e-6,1.440256548875904e-8,-7.561728030269616e-4,7.044803405478948e-6,1.445716559337654e-8,-7.55894167206311e-4,7.166043359666975e-6,1.450415417168199e-8,-7.55711412564325e-4,7.212993883249746e-6,1.4522671727194704e-8,-7.555791656848098e-4,7.1549930276133835e-6,1.4501273602714309e-8,-7.554470640511585e-4,6.988776194001312e-6,1.443893097512812e-8,-7.552712370159999e-4,6.734529749762169e-6,1.4343479112262025e-8,-7.550218631592772e-4,6.428246653777687e-6,1.422866437274883e-8,-7.546866678361489e-4,6.112788824185316e-6,1.4110719482184918e-8,-7.542707923333388e-4,5.8292867079302145e-6,1.400510243390426e-8,-7.537936783321645e-4,5.610111184424559e-6,1.392387568318107e-8,-7.532839358400108e-4,5.474383321977379e-6,1.3874075234006555e-8,-7.527734587962739e-4,5.42640635004478e-6,1.3857186797906472e-8,-7.522919859404003e-4,5.45669894844625e-6,1.386957766596827e-8,-7.518629339501932e-4,5.544851652733658e-6,1.3903575419281547e-8,-7.515008253699221e-4,5.66324214311497e-6,1.3948838400251825e-8,-7.51210094786353e-4,5.780767390543559e-6,1.3993723032625362e-8,-7.509847483529711e-4,5.866229168685598e-6,1.4026532943938554e-8,-7.508084438557491e-4,5.891537175053618e-6,1.4036723339664531e-8,-7.506548991499108e-4,5.835186884660035e-6,1.4016225902040902e-8,-7.504890649576297e-4,5.6865153995048614e-6,1.3961069522205696e-8,-7.502702069824309e-4,5.450810519333698e-6,1.3873309470797243e-8,-7.499584705215199e-4,5.154093641144201e-6,1.376281194863296e-8,-7.495258303846799e-4,4.844492327076601e-6,1.3647730610076522e-8,-7.489697010459084e-4,4.585680212391129e-6,1.3551982235163058e-8,-7.483229773845283e-4,4.439424944083938e-6,1.3498642646116442e-8,-7.47651384167147e-4,4.441135789993236e-6,1.3500781498633393e-8,-7.47033630108719e-4,4.5810783550153105e-6,1.3554518828823992e-8,-7.465319640685318e-4,4.8048662841334895e-6,1.3639340521473976e-8,-7.461696806020518e-4,5.035072310667735e-6,1.3726250888424918e-8,-7.45927649234082e-4,5.200984456189078e-6,1.3788876550238137e-8,-7.457581262680648e-4,5.260058265685222e-6,1.3811432021938078e-8,-7.456046602651826e-4,5.203880705388684e-6,1.3790914319102578e-8,-7.454181631269655e-4,5.052110434397819e-6,1.373481274651468e-8,-7.451656280700271e-4,4.841472760620587e-6,1.3656958068869079e-8,-7.448325507537849e-4,4.61494382342504e-6,1.357343640410499e-8,-7.444214445461733e-4,4.413322175715639e-6,1.3499417669267064e-8,-7.439484346229335e-4,4.2694368736615086e-6,1.3447009746671435e-8,-7.434389857049532e-4,4.204518303627032e-6,1.3423957631836567e-8,-7.429232000552066e-4,4.22642353337615e-6,1.3433047936838739e-8,-7.424310713391792e-4,4.3296407656193255e-6,1.3472159698785832e-8,-7.419881612882491e-4,4.496920195240808e-6,1.3534885426142835e-8,-7.416121363128246e-4,4.702242436589464e-6,1.3611614172495427e-8,-7.413105280088105e-4,4.9146848337064315e-6,1.369092983616905e-8,-7.410798564648585e-4,5.102579289552534e-6,1.3761123342581654e-8,-7.409059284613239e-4,5.2374620959614515e-6,1.3811649751762265e-8,-7.40765021747722e-4,5.2976581500819286e-6,1.3834473325427858e-8,-7.406258251361314e-4,5.271569720175211e-6,1.3825313013330133e-8,-7.404522940607082e-4,5.16079816624066e-6,1.3784817350730312e-8,-7.402080188256512e-4,4.982998369865964e-6,1.3719616164717567e-8,-7.398629579022926e-4,4.773502162654375e-6,1.3642888630399176e-8,-7.394027814983437e-4,4.583451075155526e-6,1.3573616754794363e-8,-7.388391120671625e-4,4.471358391383276e-6,1.3533406453527241e-8,-7.382156353710173e-4,4.486293417993243e-6,1.3540246689754017e-8,-7.376025584177996e-4,4.646263952038066e-6,1.360057244394542e-8,-7.370753966750942e-4,4.923220958661702e-6,1.3703844593894654e-8,-7.366853493943496e-4,5.247831278658755e-6,1.3824412277992002e-8,-7.364384127765779e-4,5.535851078356583e-6,1.3931243008841947e-8,-7.362964904189415e-4,5.721421847439438e-6,1.400013251189647e-8,-7.361977969831083e-4,5.777834083495166e-6,1.4021317172913075e-8,-7.360817614101209e-4,5.717840477241389e-6,1.3999596259483795e-8,-7.359055977095308e-4,5.580085272187351e-6,1.3949330970951832e-8,-7.356494891230436e-4,5.412741838724204e-6,1.3888375540751401e-8,-7.353140711726487e-4,5.2611317114854454e-6,1.3833462198014537e-8,-7.349148352444343e-4,5.160747629068616e-6,1.3797605620566516e-8,-7.34476381499244e-4,5.134402307300587e-6,1.378907362699951e-8,-7.340275945238301e-4,5.1916865952263e-6,1.3811240956866352e-8,-7.335976379390709e-4,5.3295409738639065e-6,1.386285790594125e-8,-7.332124264851362e-4,5.533583318487555e-6,1.393857552488052e-8,-7.328914883847182e-4,5.780224195792896e-6,1.4029729175094004e-8,-7.326453464977734e-4,6.039657534633526e-6,1.412541622107681e-8,-7.324737353478441e-4,6.279722160979335e-6,1.4213885118568412e-8,-7.323650721376349e-4,6.470322863277057e-6,1.4284138014656952e-8,-7.322974036581984e-4,6.587844288483066e-6,1.4327549734585913e-8,-7.322407659586676e-4,6.619032470350085e-6,1.4339305787613665e-8,-7.321607813179032e-4,6.563928060747684e-6,1.4319492082724502e-8,-7.320233046863541e-4,6.4374966021072834e-6,1.4273690279829042e-8,-7.317999978283977e-4,6.269641412024475e-6,1.4212954276300681e-8,-7.314747508146167e-4,6.103003158628865e-6,1.415295567438129e-8,-7.310503956340962e-4,5.987372946262786e-6,1.4111888222525968e-8,-7.30553886574779e-4,5.969501086118192e-6,1.4106716472582734e-8,-7.300364338939657e-4,6.078516230287104e-6,1.4147877299553037e-8,-7.295642924788504e-4,6.3107236580662384e-6,1.4233817360402606e-8,-7.29198788762624e-4,6.622175486804494e-6,1.4348383535941494e-8,-7.289720333664855e-4,6.9380135239147e-6,1.4464270004578152e-8,-7.288720132220635e-4,7.178968146684719e-6,1.4552629285696456e-8,-7.288478475491566e-4,7.292033122646066e-6,1.4594189017363577e-8,-7.288324425920637e-4,7.267653302542506e-6,1.4585519239748402e-8,-7.287681356467766e-4,7.1358561174840265e-6,1.4537665753835853e-8,-7.286220514824529e-4,6.9483598487620115e-6,1.4469630977301123e-8,-7.28388085845522e-4,6.7592678922152605e-6,1.4401275496516345e-8,-7.280804913481166e-4,6.612273121504457e-6,1.4348581630811597e-8,-7.277252407959589e-4,6.5354231757555416e-6,1.4321716844225746e-8,-7.273527660572583e-4,6.540950211029966e-6,1.4324997142073501e-8,-7.269930114233965e-4,6.6273182842564705e-6,1.4357691570767854e-8,-7.26672240266485e-4,6.781718300136292e-6,1.4414990002890305e-8,-7.264107154812758e-4,6.982473886382033e-6,1.4488915944389668e-8,-7.262207318281119e-4,7.201524453767113e-6,1.4569238469116222e-8,-7.261048945983162e-4,7.407366857871365e-6,1.464452799757507e-8,-7.260549073749619e-4,7.568797659062485e-6,1.4703494431167381e-8,-7.26051465526772e-4,7.659436861891897e-6,1.4736614332348274e-8,-7.260658689683676e-4,7.662469338693832e-6,1.4737849783051846e-8,-7.260636091525101e-4,7.574690894230019e-6,1.4706123818166879e-8,-7.260097162467727e-4,7.408843381596091e-6,1.4646170303919831e-8,-7.258751869359084e-4,7.193327753172565e-6,1.4568414770672015e-8,-7.256434329193616e-4,6.968816351578809e-6,1.4487705994885722e-8,-7.253155606930208e-4,6.781829885047062e-6,1.4420936000282275e-8,-7.249132562182546e-4,6.6756763505280914e-6,1.4383719471977372e-8,-7.244778292372096e-4,6.679612946037396e-6,1.438647617104953e-8,-7.240638597492315e-4,6.798235959896041e-6,1.443065370266917e-8,-7.237266826504071e-4,7.004766318589259e-6,1.4506391489857573e-8,-7.235054613225411e-4,7.243025516191428e-6,1.4593301323513466e-8,-7.2340765660686e-4,7.441405783647142e-6,1.4665511557876749e-8,-7.234034010785615e-4,7.53631382926181e-6,1.4700082991218885e-8,-7.234351925205399e-4,7.495034347391305e-6,1.468523799630331e-8,-7.234393429224217e-4,7.325932982914151e-6,1.462407472647779e-8,-7.233679091640017e-4,7.071240070168453e-6,1.4531993918580552e-8,-7.2320061796834e-4,6.7884821942071435e-6,1.4429962503804012e-8,-7.229442000740695e-4,6.531515408382787e-6,1.4337580335722595e-8,-7.226237824510028e-4,6.338676971745417e-6,1.4268730878278133e-8,-7.222726609371696e-4,6.229186086844068e-6,1.4230270463511608e-8,-7.219243370456767e-4,6.204979076589403e-6,1.4222735101428858e-8,-7.216077209136364e-4,6.254637305234233e-6,1.424182454315981e-8,-7.213447052154808e-4,6.357313551246988e-6,1.427987548429127e-8,-7.211489353260135e-4,6.485977719230195e-6,1.432706196354135e-8,-7.210249390732579e-4,6.610178726644471e-6,1.4372391800318248e-8,-7.209673047686168e-4,6.69888928465445e-6,1.440471413451235e-8,-7.209601280974389e-4,6.7240278150433335e-6,1.4413965009805703e-8,-7.20977427897608e-4,6.664882671759e-6,1.4392744472576701e-8,-7.209854343714221e-4,6.51295128433434e-6,1.4338056762127022e-8,-7.209473640933031e-4,6.27595967171071e-6,1.4252764848687728e-8,-7.20830498270342e-4,5.979351536502665e-6,1.4146129546232638e-8,-7.206142541252474e-4,5.663667819126294e-6,1.4032848951131945e-8,-7.202969652261338e-4,5.377288241995543e-6,1.3930404038766788e-8,-7.198989165010806e-4,5.1656853148451214e-6,1.3855144520274798e-8,-7.194600346572165e-4,5.059761967389392e-6,1.381807600558674e-8,-7.190320840484526e-4,5.066413372274996e-6,1.3821501796020195e-8,-7.186667008859963e-4,5.164217116728777e-6,1.3857550892980985e-8,-7.184018625214499e-4,5.306290101127747e-6,1.3909277458429183e-8,-7.182503872805278e-4,5.430848543585556e-6,1.3954476928807232e-8,-7.181945402363831e-4,5.477745639924967e-6,1.3971593615188382e-8,-7.181899363308149e-4,5.406401461740874e-6,1.3946114620028615e-8,-7.181787956068019e-4,5.208432912413644e-6,1.3875092760960466e-8,-7.181080232052682e-4,4.909307597908525e-6,1.3767756999698908e-8,-7.179446434546303e-4,4.558250395919083e-6,1.3641890350548404e-8,-7.176825410055812e-4,4.2115104900122955e-6,1.3517783575060329e-8,-7.173394303115774e-4,3.9166207270580965e-6,1.3412530864261023e-8,-7.169476918402883e-4,3.7030604472824477e-6,1.3336657086835069e-8,-7.165441754546074e-4,3.5802790936875876e-6,1.3293434686648582e-8,-7.161624370313028e-4,3.540740334466443e-6,1.3280030267105057e-8,-7.158283342384227e-4,3.5648889198243974e-6,1.3289336702046267e-8,-7.155582446948228e-4,3.6259309695520506e-6,1.3311712356351884e-8,-7.153587035969551e-4,3.6936410852722728e-6,1.3336343509346127e-8,-7.152264834437153e-4,3.7373251672731826e-6,1.3352284086218272e-8,-7.151486443905965e-4,3.7285507918335262e-6,1.3349406474614047e-8,-7.151027106872547e-4,3.6443643170977546e-6,1.3319531867733131e-8,-7.150577088567976e-4,3.471371309569102e-6,1.3257885044742072e-8,-7.149771233861474e-4,3.2102934517910352e-6,1.3164734543938834e-8,-7.148246566289133e-4,2.879607352494538e-6,1.304671174381637e-8,-7.145727155168279e-4,2.5159715205526265e-6,1.2916970172838227e-8,-7.14211741474117e-4,2.1691340011926946e-6,1.2793345447593278e-8,-7.13756704294834e-4,1.8907340958244058e-6,1.2694309938959155e-8,-7.13246867286023e-4,1.7195895090076379e-6,1.263368292154631e-8,-7.127372110269032e-4,1.6687917986243744e-6,1.2616035558109819e-8,-7.122837106314069e-4,1.7200599947476228e-6,1.2634736954970411e-8,-7.11927625851379e-4,1.8279231828251246e-6,1.2673513419775649e-8,-7.116842639270483e-4,1.9322272870562014e-6,1.2710931582090524e-8,-7.115395372739504e-4,1.9745795969288553e-6,1.2726232447310445e-8,-7.114547557725002e-4,1.9136654302389338e-6,1.270474472926178e-8,-7.113777961538001e-4,1.735292690655213e-6,1.2641441637291946e-8,-7.112572859060644e-4,1.4546876493828617e-6,1.2541763992937194e-8,-7.110556761496227e-4,1.1107338000528394e-6,1.2419577806846834e-8,-7.107574398631749e-4,7.542984399074633e-7,1.2293006190122626e-8,-7.103703854584871e-4,4.3467766591549663e-7,1.2179579666103922e-8,-7.099206413352514e-4,1.8848792044254664e-7,1.209227121863942e-8,-7.094440058956009e-4,3.38112439872334e-8,1.2037433652280913e-8,-7.089770272256449e-4,-3.005946575574514e-8,1.2014751159396523e-8,-7.085502677011695e-4,-1.8942666134325098e-8,1.2018584823579895e-8,-7.081845728037587e-4,4.1504324056836106e-8,1.2039859175127503e-8,-7.078898530136206e-4,1.2085396250360532e-7,1.2067846450829226e-8,-7.07665357590904e-4,1.8796389173417595e-7,1.2091574008084617e-8,-7.075005062641622e-4,2.1404627281451953e-7,1.2100880394544461e-8,-7.073757642706145e-4,1.7527949313218791e-7,1.2087321949694448e-8,-7.072636271028598e-4,5.563556618695607e-8,1.2045175593473184e-8,-7.07130371455471e-4,-1.496666377152965e-7,1.1972682276401499e-8,-7.069396260706627e-4,-4.3038263800395507e-7,1.1873415802529695e-8,-7.06658736467273e-4,-7.585342773530107e-7,1.1757266370952408e-8,-7.062679103912365e-4,-1.0893111587869973e-6,1.164011958067034e-8,-7.057699493448573e-4,-1.3683565279279107e-6,1.1541242460665835e-8,-7.051958014848092e-4,-1.546143275736306e-6,1.1478149826314971e-8,-7.046006461074884e-4,-1.5955509000684547e-6,1.1460378253613378e-8,-7.040489785775769e-4,-1.5244730508863847e-6,1.1485082661954835e-8,-7.035938487042454e-4,-1.3758182686775965e-6,1.1537113738876136e-8,-7.032597812034259e-4,-1.2137575651664247e-6,1.1593901613711014e-8,-7.030369079407669e-4,-1.1027795845962554e-6,1.1632801609042198e-8,-7.028872532957906e-4,-1.0889580682558247e-6,1.1637630789638363e-8,-7.027584678100196e-4,-1.1897271998792792e-6,1.1602238033439061e-8,-7.025988796732991e-4,-1.3932883666335377e-6,1.1530725736851102e-8,-7.02369467900341e-4,-1.6652872066721532e-6,1.1435125811886794e-8,-7.020507465969052e-4,-1.959328698109832e-6,1.1331711320640786e-8,-7.016442939978633e-4,-2.2282184952551496e-6,1.1237034626369414e-8,-7.011697035243303e-4,-2.4335618600813347e-6,1.1164544945400339e-8,-7.006583801112918e-4,-2.5521150452073807e-6,1.1122365961218336e-8,-7.001460060304543e-4,-2.5781375982917395e-6,1.1112496075816941e-8,-6.996655112290227e-4,-2.5220161431554106e-6,1.1131319063948755e-8,-6.992418776281199e-4,-2.4062965783673872e-6,1.1171004748331547e-8,-6.988893060139256e-4,-2.260591788360715e-6,1.1221277939326513e-8,-6.986105278643894e-4,-2.1166353920163535e-6,1.1271116834225942e-8,-6.983975667488254e-4,-2.0042272969958953e-6,1.1310137596645092e-8,-6.982331775114807e-4,-1.948167868728002e-6,1.1329646935505253e-8,-6.980924984224593e-4,-1.9658036073505293e-6,1.1323502940205919e-8,-6.979449169280985e-4,-2.064692866216944e-6,1.128895545665963e-8,-6.977566158534427e-4,-2.240091878769088e-6,1.1227562045779688e-8,-6.974946560896657e-4,-2.4725062008836e-6,1.1146078731656455e-8,-6.971334322778307e-4,-2.7265579611108132e-6,1.1056870056968845e-8,-6.966634001809645e-4,-2.9535495920723803e-6,1.0976992639682918e-8,-6.960998225694706e-4,-3.1003923112501523e-6,1.0925024976391107e-8,-6.954864809875409e-4,-3.125514095301827e-6,1.0915470365326537e-8,-6.94888405730523e-4,-3.0171655312078273e-6,1.0952385872816837e-8,-6.943721615170897e-4,-2.8040956720319907e-6,1.1025740558355747e-8,-6.939812476892919e-4,-2.5493950355256136e-6,1.111363121856989e-8,-6.937199582600355e-4,-2.328052856844355e-6,1.119007794880418e-8,-6.935545525919977e-4,-2.199995786806156e-6,1.123431816683279e-8,-6.93429179173718e-4,-2.1924546956316556e-6,1.1236874298485071e-8,-6.932862200777068e-4,-2.2974342328778687e-6,1.1200440938200634e-8,-6.930818299262455e-4,-2.4806963116481874e-6,1.1136809772812793e-8,-6.927932877982263e-4,-2.69515791678022e-6,1.1062250907052743e-8,-6.924193527516066e-4,-2.8932872464684024e-6,1.0993214408490107e-8,-6.919763333906085e-4,-3.036081365862266e-6,1.0943205101581768e-8,-6.91492215226939e-4,-3.098326934476717e-6,1.0920952638432522e-8,-6.910002904512773e-4,-3.070683044984637e-6,1.0929697707612377e-8,-6.905331356871504e-4,-2.959140124946023e-6,1.0967394783237994e-8,-6.90117596465121e-4,-2.7823877442401985e-6,1.1027633804261848e-8,-6.897712626577218e-4,-2.567793687719598e-6,1.1101026790081565e-8,-6.895006358475275e-4,-2.3467550008997916e-6,1.1176795508382824e-8,-6.89300944615274e-4,-2.150115599113473e-6,1.1244329229978124e-8,-6.891573100006782e-4,-2.00424231133623e-6,1.1294520632905088e-8,-6.890467540316551e-4,-1.9280356409594636e-6,1.1320793607430406e-8,-6.889406381638624e-4,-1.930734024848246e-6,1.1319874885504703e-8,-6.888074504279619e-4,-2.0102414136189414e-6,1.1292397488351405e-8,-6.886161724085662e-4,-2.1518695593095066e-6,1.1243363432643985e-8,-6.883407101463712e-4,-2.327739840236361e-6,1.1182368829498123e-8,-6.879658514959947e-4,-2.497813089077346e-6,1.1123245267791766e-8,-6.874944007746656e-4,-2.6143891697839814e-6,1.108247815801189e-8,-6.869533275424424e-4,-2.6320148015926607e-6,1.1075749525894508e-8,-6.863944546199724e-4,-2.522826202578732e-6,1.1112635168862051e-8,-6.858844538666012e-4,-2.2926275030821306e-6,1.1191109583836215e-8,-6.854832279089802e-4,-1.9877298379677976e-6,1.1295269233710088e-8,-6.852191743942243e-4,-1.6834486218362717e-6,1.1399318636952878e-8,-6.850762207670568e-4,-1.4561494259965552e-6,1.1477115718733162e-8,-6.850017506227822e-4,-1.353885669014518e-6,1.1512169978020316e-8,-6.849299395502611e-4,-1.382232489232581e-6,1.1502489363880025e-8,-6.848057305429362e-4,-1.5099055715152289e-6,1.1458706325152704e-8,-6.845983153559325e-4,-1.6859188037799119e-6,1.1398245647313847e-8,-6.843027428170722e-4,-1.8571846721204412e-6,1.1339299333489303e-8,-6.839342878524915e-4,-1.9804742909492373e-6,1.1296704524613013e-8,-6.83520537940993e-4,-2.0280142608472192e-6,1.1280001238857747e-8,-6.830941226507634e-4,-1.9884992920636643e-6,1.1293074773063915e-8,-6.826870433621648e-4,-1.8656132505174621e-6,1.13346680053564e-8,-6.823264387413217e-4,-1.6753696630438363e-6,1.1399305110651174e-8,-6.82031487121087e-4,-1.4427423697938251e-6,1.1478456664893744e-8,-6.818114056550049e-4,-1.1978017957364357e-6,1.1561864398442774e-8,-6.816645845240956e-4,-9.716026242010502e-7,1.1638940368353777e-8,-6.81578901101889e-4,-7.920793248862827e-7,1.1700156773758746e-8,-6.815332503350359e-4,-6.803319074311323e-7,1.173830361103633e-8,-6.815001275355418e-4,-6.477490111422285e-7,1.1749467706559448e-8,-6.814489184104265e-4,-6.941843501332436e-7,1.1733661035226025e-8,-6.813496403718091e-4,-8.071935459534741e-7,1.1695093476635976e-8,-6.81177053403738e-4,-9.623862476189849e-7,1.164206416834527e-8,-6.809151476327394e-4,-1.1251098518570805e-6,1.158639073471916e-8,-6.80561933977751e-4,-1.254012468855875e-6,1.154218474453644e-8,-6.801338767888566e-4,-1.307464024167702e-6,1.1523643336190613e-8,-6.79668066854345e-4,-1.2535982747354408e-6,1.1541612761355467e-8,-6.792188902309273e-4,-1.0830088825351644e-6,1.1599275967291585e-8,-6.78845970446115e-4,-8.196398734036575e-7,1.1688487599342648e-8,-6.785938804680131e-4,-5.21865523976247e-7,1.1789443842818592e-8,-6.784716853381285e-4,-2.670917135713526e-7,1.1875898145539714e-8,-6.784454801674145e-4,-1.229862560247459e-7,1.1924869708763637e-8,-6.78451422731065e-4,-1.2039502744957288e-7,1.1925808501975738e-8,-6.784224136183189e-4,-2.4413852327126643e-7,1.188376744728601e-8,-6.783122474568518e-4,-4.450160638167141e-7,1.1815400961230667e-8,-6.781056774875232e-4,-6.622121589485789e-7,1.1741382274874111e-8,-6.778146379208505e-4,-8.426921141446391e-7,1.1679787181502826e-8,-6.774678679897052e-4,-9.513665380458594e-7,1.1642596348323024e-8,-6.771004646386013e-4,-9.730261227384026e-7,1.163500954750871e-8,-6.767463032638174e-4,-9.096388229470013e-7,1.165635793010542e-8,-6.764335621130428e-4,-7.761178639860844e-7,1.170155308564171e-8,-6.761823408651586e-4,-5.962181208590508e-7,1.1762500661860506e-8,-6.76003339470729e-4,-3.9886548663780184e-7,1.1829366116277767e-8,-6.758971746004418e-4,-2.1465214616865e-7,1.189177429067364e-8,-6.75854349008327e-4,-7.229850977163453e-8,1.1940006997847552e-8,-6.758560464209218e-4,4.947983413017979e-9,1.1966210837941946e-8,-6.75876029123182e-4,2.7488136745964224e-9,1.196554475242547e-8,-6.758837935815457e-4,-8.161918553295126e-8,1.1937085753012027e-8,-6.758487615666738e-4,-2.3790708629766936e-7,1.1884286585775744e-8,-6.757450114730958e-4,-4.432901815565406e-7,1.1814847546413683e-8,-6.75555981832124e-4,-6.647221873892998e-7,1.1739927591423942e-8,-6.752785440219556e-4,-8.632714013106472e-7,1.1672680443195546e-8,-6.749257989924772e-4,-1.0003070529774613e-6,1.1626159710092367e-8,-6.745277736728225e-4,-1.04533785405786e-6,1.1610666373841045e-8,-6.74128768082691e-4,-9.849061499935828e-7,1.1630749295767326e-8,-6.737798662443241e-4,-8.306924641557072e-7,1.1682486866486084e-8,-6.735259935027122e-4,-6.231378273326227e-7,1.1752281613645974e-8,-6.733897881249691e-4,-4.257941722485988e-7,1.1818755484053001e-8,-6.733589931298577e-4,-3.0779861157673254e-7,1.185861347121806e-8,-6.733862647382449e-4,-3.189045445843042e-7,1.1855019353474524e-8,-6.734052719418553e-4,-4.6933352922082787e-7,1.1804407956455615e-8,-6.73356095178138e-4,-7.26669545411652e-7,1.1717608951207223e-8,-6.732058920007578e-4,-1.03135768079192e-6,1.1614681309859787e-8,-6.729549688437168e-4,-1.3203085634674708e-6,1.1516948301661333e-8,-6.726292231984343e-4,-1.5456410863813466e-6,1.1440629950089799e-8,-6.722669138054278e-4,-1.6825813512472906e-6,1.1394139323916218e-8,-6.719069745690607e-4,-1.728292691642922e-6,1.1378462534167964e-8,-6.715817867987357e-4,-1.6963310651301452e-6,1.1389032635968985e-8,-6.713140269531039e-4,-1.6104898771342205e-6,1.1417818254359392e-8,-6.711159576172181e-4,-1.4997911391117643e-6,1.1455027849828653e-8,-6.7098967808978e-4,-1.3947627025395655e-6,1.1490377166722129e-8,-6.709276170943395e-4,-1.3244157649111584e-6,1.1514110299334853e-8,-6.709132260466664e-4,-1.3133527174552276e-6,1.1517964713543777e-8,-6.709221924822578e-4,-1.3787160274900425e-6,1.1496180968261428e-8,-6.709246793383498e-4,-1.5271024239717297e-6,1.144652479963841e-8,-6.708890101922466e-4,-1.7521057789037506e-6,1.1371108056069637e-8,-6.707867329827515e-4,-2.03349427394575e-6,1.1276673671676083e-8,-6.705983390374779e-4,-2.3389296906621046e-6,1.1174033427878806e-8,-6.703183942720542e-4,-2.6286525837106187e-6,1.1076507144233978e-8,-6.699586275639561e-4,-2.862764821608109e-6,1.0997482902064068e-8,-6.695477636789244e-4,-3.009877260332382e-6,1.0947514998244096e-8,-6.691275106414471e-4,-3.0553669347500317e-6,1.093155672567259e-8,-6.687448110835039e-4,-3.0073333148598256e-6,1.0946969098039167e-8,-6.684411914721439e-4,-2.8982694801256994e-6,1.09829603567278e-8,-6.682410506419115e-4,-2.7805932569171573e-6,1.1022061743662119e-8,-6.681420923177971e-4,-2.7151112480580224e-6,1.1043947687668447e-8,-6.681122430425281e-4,-2.7538322953627776e-6,1.103115103055556e-8,-6.680967532338296e-4,-2.922229780866871e-6,1.0975005824736362e-8,-6.680351768836946e-4,-3.208938989025025e-6,1.0879155445024393e-8,-6.678818198079746e-4,-3.569206800689314e-6,1.07584697087957e-8,-6.676199799142348e-4,-3.941264216912157e-6,1.0633592515886972e-8,-6.672637124200508e-4,-4.26723863883779e-6,1.0523919613312888e-8,-6.668484745365341e-4,-4.508722102625259e-6,1.0442353880863865e-8,-6.664173881818245e-4,-4.652194081672177e-6,1.0393476953270497e-8,-6.660096559372878e-4,-4.705856726945458e-6,1.0374609216835914e-8,-6.6565400917304e-4,-4.692450116383464e-6,1.0378215067070535e-8,-6.65366691378365e-4,-4.641992506869934e-6,1.0394325668100645e-8,-6.651520724436302e-4,-4.586289293999795e-6,1.0412367136578511e-8,-6.650041770194664e-4,-4.555288303349263e-6,1.0422370733593156e-8,-6.649082145975189e-4,-4.574557922642622e-6,1.0415807035090087e-8,-6.648419516531094e-4,-4.663098319825658e-6,1.0386306849815094e-8,-6.647772977923628e-4,-4.830967209773467e-6,1.0330446811403125e-8,-6.64682793482468e-4,-5.0767082913095886e-6,1.0248610310513204e-8,-6.645276535009935e-4,-5.385272368662441e-6,1.014569716509483e-8,-6.642874935506787e-4,-5.727739295789978e-6,1.0031241672519338e-8,-6.639508926581502e-4,-6.064303841982294e-6,9.918438764338643e-9,-6.635248175263377e-4,-6.351327713612035e-6,9.821803180388749e-9,-6.630363208422775e-4,-6.551644593751551e-6,9.753736842483382e-9,-6.625286011154107e-4,-6.6453412099685115e-6,9.720943269391243e-9,-6.620515220562129e-4,-6.637210765563028e-6,9.721958663164957e-9,-6.616490030515382e-4,-6.557815458928014e-6,9.746799934408593e-9,-6.613470434299081e-4,-6.457206611119339e-6,9.779019488102298e-9,-6.611460182660693e-4,-6.3927400851426745e-6,9.799687434697574e-9,-6.610196289517972e-4,-6.414181155194645e-6,9.79227361540468e-9,-6.609211623926225e-4,-6.550090663171576e-6,9.747151909141079e-9,-6.607958578615187e-4,-6.799453044112043e-6,9.664428684028409e-9,-6.605961968829965e-4,-7.131600161094896e-6,9.554052462247139e-9,-6.602952658559864e-4,-7.495192731900008e-6,9.432897717263338e-9,-6.59893337291204e-4,-7.833471097170003e-6,9.319721647992294e-9,-6.594154199307799e-4,-8.10003951822256e-6,9.229912967892944e-9,-6.589015974741606e-4,-8.26940720505979e-6,9.171982193286219e-9,-6.583948475325114e-4,-8.339570999084169e-6,9.146702941363071e-9,-6.579310057521284e-4,-8.32782653290947e-6,9.1484953460235e-9,-6.575332522116057e-4,-8.26326332931551e-6,9.167892353553748e-9,-6.572109057110091e-4,-8.179301464685762e-6,9.193979644439203e-9,-6.569608894446945e-4,-8.108097437895046e-6,9.21621770862212e-9,-6.56770170806039e-4,-8.077049399664383e-6,9.225578151807406e-9,-6.566181353193237e-4,-8.106736580969876e-6,9.2152178288862e-9,-6.56478602741209e-4,-8.209430423295186e-6,9.18097422655523e-9,-6.563217982510564e-4,-8.387533414582957e-6,9.121895607077113e-9,-6.561169927829369e-4,-8.631800308226666e-6,9.04085550962115e-9,-6.558365936151278e-4,-8.91992576094595e-6,8.945052981019506e-9,-6.55462020900297e-4,-9.216878126763627e-6,8.845932484547084e-9,-6.549905970801155e-4,-9.47883318251498e-6,8.757896962005024e-9,-6.544410174747893e-4,-9.66200422791736e-6,8.695387849400742e-9,-6.538536905887626e-4,-9.73541782277881e-6,8.668667779698704e-9,-6.532830284212719e-4,-9.693338183562016e-6,8.679746644976681e-9,-6.527824423394355e-4,-9.561069012846983e-6,8.72050444633388e-9,-6.523874598641779e-4,-9.389804754378765e-6,8.77438033627454e-9,-6.521043283306284e-4,-9.24162630277522e-6,8.821227300503736e-9,-6.519088365606864e-4,-9.170835057503315e-6,8.843328210896267e-9,-6.517549256998489e-4,-9.20896440435165e-6,8.83024338053133e-9,-6.515887679402991e-4,-9.35797527614904e-6,8.781065819974303e-9,-6.513631828401716e-4,-9.592194273994584e-6,8.703882366870197e-9,-6.510485784423071e-4,-9.866901365965093e-6,8.613066195460134e-9,-6.506383852720353e-4,-1.0130449155765347e-5,8.525370284901691e-9,-6.501484713535216e-4,-1.0336665778532513e-5,8.455876704000505e-9,-6.496113485493177e-4,-1.0454609877589606e-5,8.414782975243667e-9,-6.490671674646127e-4,-1.0473577830441985e-5,8.405737418544261e-9,-6.485542315122563e-4,-1.0402716045749107e-5,8.42594207718587e-9,-6.48101570190052e-4,-1.0266290315339773e-5,8.467673384414735e-9,-6.477249772667448e-4,-1.0096801161149698e-5,8.520499798179897e-9,-6.474264817325805e-4,-9.928189624151298e-6,8.573469231980985e-9,-6.471962142913522e-4,-9.790591753984345e-6,8.616798727509629e-9,-6.470153398393853e-4,-9.707072173579713e-6,8.642931881769316e-9,-6.4685902944632e-4,-9.691946903899617e-6,8.647090904414083e-9,-6.466990567131604e-4,-9.749935634588221e-6,8.627569008879582e-9,-6.465061945891082e-4,-9.875497327061216e-6,8.585973740369635e-9,-6.462529770962636e-4,-1.005213254042066e-5,8.527489357020453e-9,-6.459175297868126e-4,-1.0252057697941712e-5,8.46101921967877e-9,-6.454888874271263e-4,-1.0437434177263124e-5,8.398808897746156e-9,-6.449732096697071e-4,-1.0564966265109888e-5,8.354946495019238e-9,-6.4439852831923e-4,-1.0595381812212404e-5,8.34225639995346e-9,-6.438138844513587e-4,-1.0507072144502154e-5,8.367854756241516e-9,-6.432790367365826e-4,-1.0308974899831868e-5,8.428993979308454e-9,-6.428454586197086e-4,-1.0044472629606271e-5,8.511840347096126e-9,-6.425364546618369e-4,-9.780404242463435e-6,8.595019151624936e-9,-6.423374992473061e-4,-9.584105091257316e-6,8.656940621566346e-9,-6.422025862017104e-4,-9.499924509528801e-6,8.683268961814048e-9,-6.420723318815535e-4,-9.536788226021915e-6,8.6709032555823e-9,-6.418937058551346e-4,-9.670339340684684e-6,8.62736165406817e-9,-6.416333150807353e-4,-9.854985606826542e-6,8.567021549391805e-9,-6.412819489618678e-4,-1.0038675384978085e-5,8.506456394204669e-9,-6.40852233208935e-4,-1.0175358821881159e-5,8.460459308358457e-9,-6.403723843214741e-4,-1.0233119886925515e-5,8.439407583253215e-9,-6.398785177155639e-4,-1.0197922583846564e-5,8.44800812947473e-9,-6.394070755339369e-4,-1.0073651943128085e-5,8.485229457435074e-9,-6.389883923031362e-4,-9.879211991447938e-6,8.545190825663756e-9,-6.386421940044092e-4,-9.643564938301254e-6,8.61872891621823e-9,-6.383754932638375e-4,-9.399866438278023e-6,8.695270282083074e-9,-6.381828126059341e-4,-9.179868626602678e-6,8.764629424150486e-9,-6.380482197594612e-4,-9.009455497870036e-6,8.818449463555083e-9,-6.379484020972791e-4,-8.905757191846968e-6,8.851137444227476e-9,-6.378559844764216e-4,-8.875794396678722e-6,8.860308373744816e-9,-6.37742611576723e-4,-8.916182840260416e-6,8.846890961194638e-9,-6.375817826161573e-4,-9.013389503892508e-6,8.815063136955268e-9,-6.373517365413405e-4,-9.144324590548281e-6,8.772088767448038e-9,-6.37038822435467e-4,-9.277480646007872e-6,8.727983133697308e-9,-6.366416476230471e-4,-9.375433709051482e-6,8.69473010267958e-9,-6.361755073060954e-4,-9.400076070259292e-6,8.68460137525384e-9,-6.356751215483993e-4,-9.321725715954837e-6,8.70721463674457e-9,-6.351921226563311e-4,-9.131431137281154e-6,8.765577089452952e-9,-6.34783668220924e-4,-8.851983055038034e-6,8.852573074499977e-9,-6.34492590110691e-4,-8.53933103808297e-6,8.950528563696693e-9,-6.343273922649219e-4,-8.26772377613986e-6,9.035920785086607e-9,-6.342551582389573e-4,-8.102013804904856e-6,9.088118007656425e-9,-6.342142013915741e-4,-8.071933386762328e-6,9.097504097485443e-9,-6.341394360266019e-4,-8.163387841999844e-6,9.06827899549311e-9,-6.339853162802021e-4,-8.329403778276332e-6,9.01508325066568e-9,-6.337359214736137e-4,-8.510810762680521e-6,8.956528860220945e-9,-6.334023030696212e-4,-8.65473815155575e-6,8.909374863487501e-9,-6.330132471509208e-4,-8.725202991217194e-6,8.885158614041552e-9,-6.326051717095914e-4,-8.706169178413972e-6,8.889176992237429e-9,-6.32214019748295e-4,-8.599843727994052e-6,8.920959050065301e-9,-6.318697327111989e-4,-8.422780448879686e-6,8.975440229886825e-9,-6.315928418750007e-4,-8.20125617049522e-6,9.044392176943476e-9,-6.313926873838825e-4,-7.966459175451952e-6,9.117945199759327e-9,-6.31267082506243e-4,-7.749777386235528e-6,9.186104282521891e-9,-6.312033160743475e-4,-7.5785372180136775e-6,9.240130028371382e-9,-6.311803126735913e-4,-7.472534294452365e-6,9.273661681811642e-9,-6.311716770969148e-4,-7.441681249593242e-6,9.283469414099118e-9,-6.311491861629334e-4,-7.484987837433047e-6,9.269772409499044e-9,-6.310862639818491e-4,-7.590780571477355e-6,9.236162458649285e-9,-6.309612058273856e-4,-7.737892241529536e-6,9.189230845951367e-9,-6.307601275839634e-4,-7.897660405035442e-6,9.137956611667645e-9,-6.304796987183105e-4,-8.036756534142556e-6,9.09284140190737e-9,-6.301296693209371e-4,-8.121168651637492e-6,9.064674114885852e-9,-6.297347052073675e-4,-8.122014010732786e-6,9.062695008476826e-9,-6.293340333682221e-4,-8.02357893613418e-6,9.092032490280441e-9,-6.289764922907992e-4,-7.832498886235678e-6,9.150771158405365e-9,-6.287088356458074e-4,-7.584313389584958e-6,9.227855564074418e-9,-6.285582300395714e-4,-7.340955663643736e-6,9.303857526237659e-9,-6.285162181702288e-4,-7.173981894358338e-6,9.35622506385365e-9,-6.28535844534191e-4,-7.137050918742098e-6,9.367918818323381e-9,-6.285482266619833e-4,-7.242236086511384e-6,9.334891322630107e-9,-6.284908233474023e-4,-7.4556587282647425e-6,9.267547066221383e-9,-6.28330425274692e-4,-7.714648020679488e-6,9.185435045716488e-9,-6.28069302206002e-4,-7.95377724697567e-6,9.109102634548203e-9,-6.277362671666278e-4,-8.124785819023314e-6,9.053825972438715e-9,-6.273721375619873e-4,-8.204270724462586e-6,9.02715680817319e-9,-6.27017398081553e-4,-8.191793049541557e-6,9.029461806338658e-9,-6.267047725449272e-4,-8.103665827061228e-6,9.055810702686439e-9,-6.26456043916988e-4,-7.966249400547607e-6,9.098033223137005e-9,-6.26281416479543e-4,-7.810389877515416e-6,9.146451274581206e-9,-6.261800463441795e-4,-7.667092566462788e-6,9.191260130576387e-9,-6.261411718711373e-4,-7.564004290537873e-6,9.223675064183579e-9,-6.261457836463466e-4,-7.522438367703082e-6,9.23690378724907e-9,-6.261689058554466e-4,-7.554911651594159e-6,9.226935824039986e-9,-6.26182575765119e-4,-7.663394769762143e-6,9.193084339014298e-9,-6.261594321595429e-4,-7.83867655737204e-6,9.138166390547462e-9,-6.26076519398364e-4,-8.061135092227624e-6,9.068247870454783e-9,-6.259188201018052e-4,-8.302926480673475e-6,8.991964522431026e-9,-6.256821123187454e-4,-8.531474630101965e-6,8.919455933728389e-9,-6.253747887567023e-4,-8.714062415411706e-6,8.860964423618094e-9,-6.250183114255093e-4,-8.823240323023451e-6,8.825167866103795e-9,-6.246458882436894e-4,-8.842823215536685e-6,8.817300503612222e-9,-6.242985755887415e-4,-8.774026346559433e-6,8.837199099376945e-9,-6.240177934968095e-4,-8.640273119230142e-6,8.87774343727035e-9,-6.238340168367981e-4,-8.487734929015043e-6,8.924628410892147e-9,-6.237537835039231e-4,-8.37786762163323e-6,8.958649435262117e-9,-6.237508622334895e-4,-8.370050553809897e-6,8.961109428361436e-9,-6.237694285501078e-4,-8.498608243715725e-6,8.921029687418638e-9,-6.237425116459058e-4,-8.75592709653261e-6,8.840509552635665e-9,-6.236182223750581e-4,-9.0935440897417e-6,8.734482255018053e-9,-6.233789176946422e-4,-9.44210315649724e-6,8.62453087546554e-9,-6.230431618178639e-4,-9.738006393072087e-6,8.530559779025655e-9,-6.226528415322329e-4,-9.942072412796151e-6,8.464944949980187e-9,-6.222558156538971e-4,-1.0044216892862036e-5,8.431044644216811e-9,-6.218928123420268e-4,-1.0057759649626142e-5,8.424931676993069e-9,-6.215911924046659e-4,-1.0010051523072495e-5,8.438260126232764e-9,-6.213639804945358e-4,-9.934048776771606e-6,8.460847692598394e-9,-6.212115296909202e-4,-9.862436775050359e-6,8.482499035264433e-9,-6.211238864357817e-4,-9.823973462843352e-6,8.494171700339035e-9,-6.210830596535341e-4,-9.841115150435778e-6,8.488757155704299e-9,-6.210651942122257e-4,-9.928215073960674e-6,8.461672312188594e-9,-6.210429443543682e-4,-1.0090001829574346e-5,8.411340895070526e-9,-6.209883936927952e-4,-1.032045635967511e-5,8.339532086435201e-9,-6.208766895726924e-4,-1.0602611237518307e-5,8.251410557946112e-9,-6.206901011511374e-4,-1.0909904384581257e-5,8.155117882712867e-9,-6.204217801816662e-4,-1.1209428967393452e-5,8.060785794006027e-9,-6.200783346355796e-4,-1.1467000570356854e-5,7.978999665257574e-9,-6.196803527606607e-4,-1.1653487857353938e-5,7.918867885019981e-9,-6.192602675084233e-4,-1.1751341629004252e-5,7.886009589301413e-9,-6.18857430993645e-4,-1.1760013081941588e-5,7.880853644284182e-9,-6.185107199373036e-4,-1.1698990162283051e-5,7.897639687734814e-9,-6.182494033759342e-4,-1.1607106693188978e-5,7.924550386176266e-9,-6.180837782626559e-4,-1.1536704553317361e-5,7.945441153139379e-9,-6.17998354061986e-4,-1.1541930108901036e-5,7.943422534415343e-9,-6.179514865732182e-4,-1.1662608663681637e-5,7.905878369024749e-9,-6.178847530264709e-4,-1.1908666705688085e-5,7.829382187794986e-9,-6.177413716940561e-4,-1.225291771545529e-5,7.722050838337925e-9,-6.174866683392963e-4,-1.2638281908291842e-5,7.601388082277714e-9,-6.171202061499132e-4,-1.2997807711744528e-5,7.488094639614473e-9,-6.166733164451345e-4,-1.3277552122048224e-5,7.398956214429256e-9,-6.161948260617495e-4,-1.3451111439177265e-5,7.342324255674225e-9,-6.157338992816079e-4,-1.3521276834735159e-5,7.317585667968248e-9,-6.153277910312762e-4,-1.351221220619276e-5,7.3175400954822244e-9,-6.149969832299286e-4,-1.345864223227892e-5,7.331678474457581e-9,-6.147459001310118e-4,-1.3396792379450818e-5,7.3489284361196675e-9,-6.14566195981989e-4,-1.335865891362545e-5,7.3594093806847335e-9,-6.144404163975216e-4,-1.3369061432935648e-5,7.3553652588823905e-9,-6.143451013492217e-4,-1.3444276092296466e-5,7.331624223806665e-9,-6.142533201726146e-4,-1.3591271145411236e-5,7.285864502738724e-9,-6.141370824533147e-4,-1.3807054893883965e-5,7.2188286363125555e-9,-6.139701752177742e-4,-1.4078197634895255e-5,7.134475176715785e-9,-6.137317622253945e-4,-1.4381127354302388e-5,7.03989660873347e-9,-6.13410548401449e-4,-1.4684067691371548e-5,6.944744457685035e-9,-6.130086364730966e-4,-1.4951295234998012e-5,6.8599511266353936e-9,-6.125436581487522e-4,-1.5149749237378634e-5,6.795727421966501e-9,-6.120476639627279e-4,-1.5256983677622905e-5,6.759136642679807e-9,-6.115619176413706e-4,-1.5268340231572266e-5,6.751886205597447e-9,-6.111281095430912e-4,-1.520077746265615e-5,6.769114447606619e-9,-6.107779587857513e-4,-1.5091461683002552e-5,6.799746818271109e-9,-6.10524015294988e-4,-1.4990666324170982e-5,6.828571027830531e-9,-6.103544553284269e-4,-1.4950126437351983e-5,6.839718154874809e-9,-6.10233932630094e-4,-1.5009403395997819e-5,6.820816675408024e-9,-6.101112797303565e-4,-1.5183860384006196e-5,6.7667449207401965e-9,-6.099330136988942e-4,-1.5458296216177136e-5,6.6817180549403645e-9,-6.096591780398321e-4,-1.5789545255279567e-5,6.578625916310926e-9,-6.092759401267423e-4,-1.611861496564348e-5,6.475384794437283e-9,-6.087995316766636e-4,-1.638857118742033e-5,6.389456320634693e-9,-6.082696917744599e-4,-1.656102986792536e-5,6.332762451172584e-9,-6.07735931357823e-4,-1.6624724248411486e-5,6.309028251969762e-9,-6.07243028636269e-4,-1.659408062376702e-5,6.314176973263146e-9,-6.068212130456064e-4,-1.6500688633924005e-5,6.3388763395423195e-9,-6.064828882107512e-4,-1.6382732655089433e-5,6.3716957047222936e-9,-6.062244250029457e-4,-1.6276375396916556e-5,6.401688363734559e-9,-6.060303124501623e-4,-1.6210566121514825e-5,6.41997117246288e-9,-6.058775295989655e-4,-1.6204774019256874e-5,6.420448907864246e-9,-6.057391575612956e-4,-1.6268443228459086e-5,6.400024095330046e-9,-6.055871563899351e-4,-1.640110876257458e-5,6.358597590462493e-9,-6.053947651586242e-4,-1.6592563064539658e-5,6.299040120511544e-9,-6.051391799853258e-4,-1.6823062293831563e-5,6.2271479239230684e-9,-6.04804958969757e-4,-1.7064185629920318e-5,6.15140407656365e-9,-6.043880305658054e-4,-1.7281339145854306e-5,6.082244629251485e-9,-6.038993664978827e-4,-1.743882255386278e-5,6.03054138334135e-9,-6.033664982363028e-4,-1.7507647128342022e-5,6.005236775662678e-9,-6.028306776843586e-4,-1.747471621344875e-5,6.0105545030052955e-9,-6.02338498179153e-4,-1.7350074414647643e-5,6.043785475000533e-9,-6.019293636463869e-4,-1.7168208077473955e-5,6.094852354472843e-9,-6.016229799273229e-4,-1.6981102965108023e-5,6.148328418570691e-9,-6.014120043088848e-4,-1.6844415703121967e-5,6.1875079574704055e-9,-6.012631542790681e-4,-1.6801491798937394e-5,6.199152357907398e-9,-6.011264926259588e-4,-1.687094638850435e-5,6.177250027198649e-9,-6.009494858060641e-4,-1.7041783355707502e-5,6.124605564008008e-9,-6.006912495843881e-4,-1.7277030403387907e-5,6.051910031149934e-9,-6.003329547922971e-4,-1.7524265175610315e-5,5.974701125327572e-9,-5.998817609412311e-4,-1.7729749635034893e-5,5.909152133979997e-9,-5.993674834698096e-4,-1.7852060415235455e-5,5.8679359897686786e-9,-5.98833377167506e-4,-1.7871308208750187e-5,5.857377281089162e-9,-5.983242961249349e-4,-1.77916038049349e-5,5.876628602108236e-9,-5.978761089750183e-4,-1.763692721889734e-5,5.9188348328191164e-9,-5.97509246371083e-4,-1.744281060909608e-5,5.973566370425565e-9,-5.972272340443155e-4,-1.724717783696112e-5,6.029530158965291e-9,-5.970191412732754e-4,-1.708303930127975e-5,6.076760853223087e-9,-5.968639601907031e-4,-1.6974182393121108e-5,6.107949062772968e-9,-5.967351618909186e-4,-1.6933562355692315e-5,6.1189757620988596e-9,-5.966044914543551e-4,-1.6963408114122988e-5,6.108924653343465e-9,-5.964448552706594e-4,-1.7056054741231575e-5,6.079858424794432e-9,-5.962326779452772e-4,-1.719488339402509e-5,6.036551327657856e-9,-5.959503269411983e-4,-1.7355296242159556e-5,5.9862122504836265e-9,-5.955890709894159e-4,-1.7506243438176608e-5,5.9380510048463094e-9,-5.951525234145372e-4,-1.7613258416163484e-5,5.902393637339857e-9,-5.946596553230791e-4,-1.764400034962936e-5,5.889033529766786e-9,-5.941454005656148e-4,-1.757658081028564e-5,5.9047300999132285e-9,-5.936562505153676e-4,-1.740909145309199e-5,5.9503386560754e-9,-5.932393300043767e-4,-1.7166185049999746e-5,6.018820818675055e-9,-5.929270253618056e-4,-1.6897363809678338e-5,6.095715953083003e-9,-5.927235829331455e-4,-1.6664334583585255e-5,6.162832492505709e-9,-5.926012168281408e-4,-1.6521086061127168e-5,6.204080876826821e-9,-5.925088318791681e-4,-1.6495650783895652e-5,6.2108462578212325e-9,-5.923893296595289e-4,-1.6581983910685432e-5,6.18445634623603e-9,-5.921973240230338e-4,-1.6744373968298434e-5,6.135018198325406e-9,-5.919105305805832e-4,-1.6930486544110382e-5,6.077709827522491e-9,-5.915325837551485e-4,-1.708674963487434e-5,6.028320742756395e-9,-5.910887401414671e-4,-1.7171114333858196e-5,5.999481940305171e-9,-5.906173977802621e-4,-1.7160751663905477e-5,5.998318193545036e-9,-5.901602907269286e-4,-1.7054266849847147e-5,6.025679671747184e-9,-5.897536026274595e-4,-1.6869186278252847e-5,6.076768658723353e-9,-5.894215706944987e-4,-1.6636088071657184e-5,6.142787676934763e-9,-5.891734417193177e-4,-1.639112845867565e-5,6.21311247089221e-9,-5.890037891503861e-4,-1.616881901687457e-5,6.277444531418832e-9,-5.888953870874903e-4,-1.599649526801642e-5,6.32750261058349e-9,-5.888234156540204e-4,-1.5891120266408232e-5,6.358035497480615e-9,-5.887598278097893e-4,-1.585830828911002e-5,6.36716114540014e-9,-5.886770911880141e-4,-1.5892951435849457e-5,6.356201350362242e-9,-5.88551067772663e-4,-1.598065881617845e-5,6.329251478975357e-9,-5.883632730491481e-4,-1.609944079656462e-5,6.292675486505938e-9,-5.881029486085081e-4,-1.622153632414498e-5,6.254574948934901e-9,-5.877692932525501e-4,-1.6315735016464423e-5,6.224131558643309e-9,-5.873738337045345e-4,-1.6350916709415508e-5,6.2105932820424296e-9,-5.869421485315761e-4,-1.630165097021894e-5,6.221632150191717e-9,-5.865131121598357e-4,-1.6156063475258574e-5,6.261002414793579e-9,-5.861331744440621e-4,-1.592434760802166e-5,6.325989749491587e-9,-5.858441940187316e-4,-1.5643598634390996e-5,6.405942312898085e-9,-5.856671951075539e-4,-1.5373106219251778e-5,6.483607719282582e-9,-5.855897763285556e-4,-1.517729276675414e-5,6.540086767802591e-9,-5.855664407766135e-4,-1.5101743305100796e-5,6.561819413722951e-9,-5.855345304499817e-4,-1.5154956209859986e-5,6.545946710766161e-9,-5.854378007236991e-4,-1.5306366023333386e-5,6.500984799091855e-9,-5.852448952227367e-4,-1.550045098503084e-5,6.442830961710452e-9,-5.849551516575722e-4,-1.567734639813534e-5,6.388848412759949e-9,-5.845930082893017e-4,-1.5789777542943528e-5,6.352965558410412e-9,-5.841969678310368e-4,-1.5811729052473348e-5,6.343113417189745e-9,-5.838084552194186e-4,-1.5739511632880423e-5,6.360814546463471e-9,-5.834633032295308e-4,-1.5588003820527e-5,6.402145833924053e-9,-5.831864760835484e-4,-1.538472081382847e-5,6.4593502606737386e-9,-5.829896181558738e-4,-1.5163375096637597e-5,6.5226561160815544e-9,-5.828708999533577e-4,-1.4957769589611858e-5,6.582074977801076e-9,-5.828167555766546e-4,-1.479662672105976e-5,6.628984531476504e-9,-5.828049993600993e-4,-1.46998740108272e-5,6.657304486326205e-9,-5.828086784632086e-4,-1.4676619073704028e-5,6.664156600488167e-9,-5.828000486403008e-4,-1.472477456925716e-5,6.649997471487258e-9,-5.827541399829672e-4,-1.4832100153552331e-5,6.618295601842242e-9,-5.826515746817173e-4,-1.4978198357449995e-5,6.574915976578972e-9,-5.824806499688132e-4,-1.5136975222470618e-5,6.5273858129103555e-9,-0.00058223891266244855,-1.5279382997478107e-5,6.484113573877451e-9,-5.819343932522649e-4,-1.537659130322262e-5,6.453510098108357e-9,-5.815864337643335e-4,-1.540395190071223e-5,6.442875322162274e-9,-5.812255138914551e-4,-1.5346207013270155e-5,6.456887019322757e-9,-5.808906783087563e-4,-1.5203879326331496e-5,6.495696015125998e-9,-5.806227398257667e-4,-1.4999252917115385e-5,6.553106536171523e-9,-5.804523980144355e-4,-1.4778150938693695E-05,6.6159779015583296e-9,-5.803857787226134e-4,-1.460244790593015e-5,6.666344613112382e-9,-5.803949019080188e-4,-1.453107430828226e-5,6.68691651811743e-9,-5.804222577193308e-4,-1.4595598468279076e-5,6.6681996557004115e-9,-5.804015691477434e-4,-1.4784365571006996e-5,6.613182223466211e-9,-5.802844416075218e-4,-1.504659664064087e-5,6.536251455252701e-9,-5.800572407115345e-4,-1.5314205201811868e-5,6.456956105272316e-9,-5.79740462121484e-4,-1.5527257460748158e-5,6.392682319350163e-9,-5.793754455308698e-4,-1.564997575685766e-5,6.354031421288331e-9,-5.79008526869674e-4,-1.5673984575231004E-05,6.3438332685434564e-9,-5.786793595545836e-4,-1.561305703577987e-5,6.358555023821292e-9,-5.78414926698478e-4,-1.5494822966848187e-5,6.390561211013941e-9,-5.782279782895778e-4,-1.535291284406682e-5,6.430282529202295e-9,-5.781179986625985e-4,-1.5220866757312826e-5,6.467953037038186e-9,-5.780733038593612e-4,-1.5127728821522725e-5,6.494942808591026e-9,-5.780737214613339e-4,-1.5094878202343984e-5,6.5047765753731806e-9,-5.780937304323509e-4,-1.5133945325895573e-5,6.493829724860568e-9,-5.781059012122124e-4,-1.5245845768728994e-5,6.461654192249107e-9,-5.780844231366714e-4,-1.5420967008494582E-05,6.410916404303534e-9,-5.780084375089962e-4,-1.5640566187065733e-5,6.346952753693187e-9,-5.778647777628711e-4,-1.5879285361295647e-5,6.277008199105833e-9,-5.776498175490725e-4,-1.6108436934896513e-5,6.209288793870668e-9,-5.773703656839252e-4,-1.6299721111280603e-5,6.151931069035016e-9,-5.770436111533959e-4,-1.6429208290678547e-5,6.111913238799296e-9,-5.766960225533119e-4,-1.6481506020845262e-5,6.093889659946264e-9,-5.763608734161528e-4,-1.6454038016908552e-5,6.098936037071565e-9,-5.760736744361726e-4,-1.6361021724264736e-5,6.123317511020036e-9,-5.758647102549619e-4,-1.6235696451862072e-5,6.157725998483951e-9,-5.757488547335339e-4,-1.612803540234014e-5,6.1878352067051535e-9,-5.757153315080947e-4,-1.609480237938911e-5,6.197125012537102e-9,-5.757234435926061e-4,-1.6181340271018654e-5,6.17217305833007e-9,-5.757111211388329e-4,-1.6400971995423106e-5,6.108703432860775e-9,-5.756170143529824e-4,-1.6724228696811727e-5,6.014819069588441e-9,-5.754058752564376e-4,-1.7087730422599016e-5,5.908527015219574e-9,-5.750819117894468e-4,-1.7419566737748216e-5,5.810457691770534e-9,-5.746829127406637e-4,-1.7665934924859706e-5,5.736209930949652e-9,-5.742617293776332e-4,-1.7804887133825812e-5,5.692403621165638e-9,-5.738676244788915e-4,-1.7844643668928444e-5,5.677123312045796e-9,-5.735352118200017e-4,-1.781324586487339e-5,5.682774688163753e-9,-5.732813705044003e-4,-1.774712544477777e-5,5.699224028512855e-9,-5.731070706253558e-4,-1.7682465513048927e-5,5.716183635261324e-9,-5.730010810481334e-4,-1.7650014543434743e-5,5.7246996299768535e-9,-5.729437243720952e-4,-1.7672436560521165e-5,5.717992329661441e-9,-5.729101327422091e-4,-1.77629912703616e-5,5.691943387538161e-9,-5.728732254490138e-4,-1.7924881686606425e-5,5.645364913125561e-9,-5.728066872098459e-4,-1.8151183111504288e-5,5.580046983978404e-9,-5.726880446715707e-4,-1.8425518479711568e-5,5.500544376149344e-9,-5.725017360320156e-4,-1.8723776519021976e-5,5.4136497171616706e-9,-5.722417478110209e-4,-1.901709758465021e-5,5.327525281669176e-9,-5.719132058612187e-4,-1.9275973453983113e-5,5.250556794951275e-9,-5.715324599224961e-4,-1.9474966424702655e-5,5.190061549896955e-9,-5.711254487065863e-4,-1.9597425970417595e-5,5.150993130292952e-9,-5.707243215314012e-4,-1.963951786184574e-5,5.134796911166756e-9,-5.703624645452386e-4,-1.961289496480425e-5,5.138582384870229e-9,-5.700681701023597e-4,-1.9545349551733103e-5,5.154808129149603e-9,-5.698573617980196e-4,-1.947850234148492e-5,5.171796776237571e-9,-5.697265168248463e-4,-1.946126166119291e-5,5.175504776714801e-9,-5.696483046445741e-4,-1.9538307489946467e-5,5.152814866181088e-9,-5.695737447050487e-4,-1.9735023712205888e-5,5.095954657144991e-9,-5.694440581573207e-4,-2.0044122435153433e-5,5.006492424902162e-9,-5.692107976121244e-4,-2.0422259733411498e-5,4.896447185420986e-9,-5.688556702159739e-4,-2.080239735784011e-5,4.784807248298537e-9,-5.683984430252771e-4,-2.1118146298752406e-5,4.69055903235853e-9,-5.678877874524411e-4,-2.1327200844530532e-5,4.6259837892894646e-9,-5.673813072802742e-4,-2.1421699487486857e-5,4.593705379214873e-9,-5.669266461901139e-4,-2.1423333992840117e-5,4.588040913127525e-9,-5.665515251973581e-4,-2.1370168449335505e-5,4.598631280140418e-9,-5.66262954244887e-4,-2.1303510202976556e-5,4.614029495947506e-9,-5.660516519242294e-4,-2.1259150169743164e-5,4.624106881604416e-9,-5.658977760906469e-4,-2.1263246516499423e-5,4.621241923637268e-9,-5.657758344743934e-4,-2.1331262909287216e-5,4.600715978969188e-9,-5.656582879656547e-4,-2.146824690958318e-5,4.560744399958647e-9,-5.655182799852074e-4,-2.166944979816653e-5,4.502372881234427e-9,-5.653320939464026e-4,-2.19210611198664e-5,4.429288721729575e-9,-5.650817267772786e-4,-2.2201302733604196e-5,4.347494108741701e-9,-5.647576281566446e-4,-2.248238891148829e-5,4.2647329227178e-9,-5.64361175875774e-4,-2.273385814627313e-5,4.1895539317782425e-9,-5.639060211063388e-4,-2.2927360460003696e-5,4.129994037758887e-9,-5.634173669126164e-4,-2.3042324624474837e-5,4.092025805841426e-9,-5.629285951340259e-4,-2.3071330028784256e-5,4.078067292741761e-9,-5.624753358397186e-4,-2.3023652525244365e-5,4.085953126634584e-9,-5.620879235594856e-4,-2.2925599059856908e-5,4.1087412604200885e-9,-5.617838311213657e-4,-2.2816948292584702e-5,4.13556726191145e-9,-5.615618506350042e-4,-2.274366245931516e-5,4.1535543827756625e-9,-5.613996862607292e-4,-2.2747751693369897e-5,4.150602400752755e-9,-5.61256426475516e-4,-2.2855979724977274e-5,4.1186293748158945e-9,-5.61080812039059e-4,-2.307016575944345e-5,4.056477812301431e-9,-5.608247544560862e-4,-2.3362823347901296e-5,3.971353014138016e-9,-5.6045888275338e-4,-2.3681771753724775e-5,3.877666551810311e-9,-5.599840255643514e-4,-2.3964648029816697e-5,3.7929726560466655e-9,-5.594323224548366e-4,-2.4158896301923775e-5,3.732284697554104e-9,-5.588562140180068e-4,-2.4238382403495358e-5,3.7033386543166194e-9,-5.583104935056323e-4,-2.4208922097151482e-5,3.7049913841555217e-9,-5.578362118896362e-4,-2.4101634993633252e-5,3.729013562684922e-9,-5.574526700823866e-4,-2.395959922159319e-5,3.763717738012945e-9,-5.571580150477938e-4,-2.3824918225424018e-5,3.7974724057465164e-9,-5.56934945270612e-4,-2.3730431642789787e-5,3.820986693463586e-9,-5.567575402096818e-4,-2.369650431855389e-5,3.828264474037562e-9,-5.565968561839238e-4,-2.3731175634325677e-5,3.81667238499676e-9,-5.564247258473144e-4,-2.383170766272784e-5,3.786608603817477e-9,-5.562162343773809e-4,-2.3986308687498875e-5,3.741076017959136e-9,-5.559516320965893e-4,-2.41756410521933e-5,3.6852669334650524e-9,-5.556182989939095e-4,-2.4374329729557413e-5,3.626126257835752e-9,-5.552129829469255e-4,-2.455308708972398e-5,3.5717509128408136e-9,-5.547439478003086e-4,-2.4682169708976556e-5,3.5304410056635687e-9,-5.542320441001034e-4,-2.4736519034990855e-5,3.509299202176376e-9,-5.537093394875636e-4,-2.470209240070845e-5,3.5124945121858324e-9,-5.532141884717492e-4,-2.4581739735308707e-5,3.539625413001244e-9,-5.527827987017785e-4,-2.4398065123244182e-5,3.584874043486559e-9,-5.524392207026548e-4,-2.419093064879187e-5,3.6375935558350362E-09,-5.521871673866484e-4,-2.400904254983496e-5,3.6845003460724823e-9,-5.52006996859421e-4,-2.3897600320895216e-5,3.7129769442225496e-9,-5.518594417411545e-4,-2.3885806156130697e-5,3.714505319352247e-9,-5.516952472542898e-4,-2.3978206075858976e-5,3.6871706513466653e-9,-5.514680023266997e-4,-2.415252676916681e-5,3.636467576060659e-9,-5.511466570996784e-4,-2.436472997812125e-5,3.5741160763841065e-9,-5.507243054631822e-4,-2.456016575596165e-5,3.5151030037156743e-9,-5.502204943898792e-4,-2.4688078368491355e-5,3.4736716022299434e-9,-5.49675845316952e-4,-2.4715297420699776e-5,3.4594450841273604e-9,-5.491403496431156e-4,-2.4634524609268043e-5,3.475010754579904e-9,-5.486594079579832e-4,-2.4464309834586896e-5,3.5158016687115214e-9,-5.482626949453814e-4,-2.424130364105868e-5,3.572121989232335e-9,-5.479593003710058e-4,-2.400859263852101e-5,3.6322781071167195e-9,-5.477393924139225e-4,-2.380483572567349e-5,3.685543859039702e-9,-5.475800136344878e-4,-2.365734300350956e-5,3.7241138416981567e-9,-5.47451900115605e-4,-2.3579686113701558e-5,3.743864278401933e-9,-5.473251545092862e-4,-2.3572576485177517e-5,3.744220422532077e-9,-5.471730460260657e-4,-2.3626248739021626e-5,3.727569108803425e-9,-5.469742478632765e-4,-2.3723043848052887e-5,3.6985616396725427e-9,-5.467142469598954e-4,-2.3839630731377964e-5,3.6634824609621807e-9,-5.463866264206015e-4,-2.3948973655604125e-5,3.6296880385067596e-9,-5.4599456793534e-4,-2.4022629138410048e-5,3.604980769764583e-9,-5.455523444943196e-4,-2.4034135649642785e-5,3.5967054365603564e-9,-5.450858818683846e-4,-2.396401744104895e-5,3.6104037986387385e-9,-5.446308564687652e-4,-2.380610222496027e-5,3.648086038965713e-9,-5.442267710418497e-4,-2.3573376044700058e-5,3.7065940327411654e-9,-5.43906780201333e-4,-2.3300037015731352e-5,3.776970362392915e-9,-5.436858585814063e-4,-2.303631065445945e-5,3.8457757017923984e-9,-5.43552613478327e-4,-2.28353475000358e-5,3.898554409891338e-9,-5.434699258623914e-4,-2.2736277504907688e-5,3.924381501274142e-9,-5.433855832143338e-4,-2.275078970747129e-5,3.919540539705527e-9,-5.43248646299094e-4,-2.285936214945721e-5,3.888688548443496e-9,-5.430245801652687e-4,-2.3018194797770242e-5,3.8431759853901846e-9,-5.427037893107168e-4,-2.3172944399802506e-5,3.7974973736510936e-9,-5.423020260258028e-4,-2.3273629234107787e-5,3.765329016282113e-9,-5.418542195221602e-4,-2.328631805513169e-5,3.756319626683319e-9,-5.414045400541133e-4,-2.3199382210688513e-5,3.774257587440266e-9,-5.409955890221134e-4,-2.302384304625818e-5,3.8167930066406206e-9,-5.406592269132189e-4,-2.2788582348018324e-5,3.876564618794517e-9,-5.404109156371855e-4,-2.253214165155441e-5,3.943315026925249e-9,-5.402484736817223e-4,-2.2293496058127136e-5,4.00637464546443e-9,-5.401548723226671e-4,-2.210423231623976e-5,4.056855142789439e-9]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json new file mode 100644 index 0000000000..00cb5c9c4e --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":7000,"numberOfSamples":1000,"samples":[-5.401035826582183e-4,-2.1983771746004456e-5,4.089071108861903e-9,-5.400645679375473e-4,-2.1937995914044596e-5,4.1010390739496695e-9,-5.400093979365809e-4,-2.1960549237341188e-5,4.094200825458988e-9,-5.399147607226752e-4,-2.203560775605646e-5,4.072680770337793e-9,-5.397644338651072e-4,-2.2140989396072942e-5,4.0424039620270295e-9,-5.395502643031555e-4,-2.2250959079911428e-5,4.010291455194114e-9,-5.392727708698771e-4,-2.233868896010399e-5,3.983582390762636e-9,-5.389417235021638e-4,-2.2378792834005243e-5,3.969178139964558e-9,-5.385766058145648e-4,-2.235055698671764e-5,3.972815745495291e-9,-5.382062428829531e-4,-2.2242365349685453e-5,3.9978965146973945e-9,-5.378662132655593e-4,-2.205712418011711e-5,4.043993326717811e-9,-5.375924932704364e-4,-2.181705877637256e-5,4.105479870305896e-9,-5.374109340395555e-4,-2.1564488189815053e-5,4.171221914461289e-9,-5.373252109046606e-4,-2.13546121672999e-5,4.226432351021938e-9,-5.373095626709229e-4,-2.123923851906108e-5,4.256999417283581e-9,-5.373130817418842e-4,-2.1246850964482913e-5,4.25485673473855e-9,-5.372765380678705e-4,-2.136960735856047e-5,4.221561718856039e-9,-5.371540300970259e-4,-2.156549994879516e-5,4.167859343731849e-9,-5.36928145915775e-4,-2.177449463181616e-5,4.109507993256763e-9,-5.36612298142394e-4,-2.193926959851254e-5,4.061836554881471e-9,-5.362421974391817e-4,-2.202084762893932e-5,4.035594559950374e-9,-5.358628658080441e-4,-2.200502185841941e-5,4.035163172736923e-9,-5.355167351147426e-4,-2.1900830823744038e-5,4.058798324504693e-9,-5.35235449411885e-4,-2.173439788390032e-5,4.100071676730384e-9,-5.350357193602122e-4,-2.15410881740401e-5,4.14980207032798e-9,-5.349185757880749e-4,-2.135782693181579e-5,4.198050291539687e-9,-5.348712290073628e-4,-2.121657442592248e-5,4.2359280087428855e-9,-5.348708000481933e-4,-2.1139615342117445e-5,4.257004944159546e-9,-5.348890826615417e-4,-2.113709309176623e-5,4.258128208977309e-9,-5.348974104172614e-4,-2.1206799246401138e-5,4.239584522007182e-9,-5.348708384321045e-4,-2.1335822917691524e-5,4.204678615706449e-9,-5.347911231697716e-4,-2.1503424398811796e-5,4.158913513206647e-9,-5.346483663470459e-4,-2.1684383203511062e-5,4.109023325019758e-9,-5.344415971986584e-4,-2.185222293312799e-5,4.062070768370815e-9,-5.341787121227865e-4,-2.198213649495927e-5,4.024683100836483e-9,-5.338760303296781e-4,-2.2053786749643512e-5,4.002365575691231e-9,-5.335574557412858e-4,-2.2054309116071213e-5,3.998758028608726e-9,-5.332528017860458e-4,-2.198181627770456e-5,4.014702338546216e-9,-5.32994271803446e-4,-2.1849184863030615e-5,4.047158626760407e-9,-5.328099775273082e-4,-2.1686695872980368E-05,4.088373074123842e-9,-5.327143982259301e-4,-2.1540670747909262e-5,4.1261167888255816e-9,-5.326982547305342e-4,-2.146472539588816e-5,4.145954976805639e-9,-5.327237676269208e-4,-2.150269819024173e-5,4.135827219007261e-9,-5.32732172820136e-4,-2.166880035547954e-5,4.091442962833996e-9,-5.32664363807273e-4,-2.193675634261866e-5,4.019307535221708e-9,-5.324850262715923e-4,-2.2247356034033065e-5,3.93482109123221e-9,-5.321959712692641e-4,-2.253169043764306e-5,3.856170494966331e-9,-5.318318024819819e-4,-2.2736299986202895e-5,3.797697407775919e-9,-5.314434001136979e-4,-2.283727543038531e-5,3.7661716224598815e-9,-5.310801862783224e-4,-2.2840328090950416e-5,3.760701663621395e-9,-5.307784695622606e-4,-2.277209911293882e-5,3.774865010501329e-9,-5.305570300482153e-4,-2.2669296597542187e-5,3.799377675031908e-9,-5.304177923198672e-4,-2.2569563199808032e-5,3.824373068544768e-9,-5.303490345079164e-4,-2.2505211219014473e-5,3.841055895162692e-9,-5.303294436667859e-4,-2.2499458669989806e-5,3.842819986704146e-9,-5.303323047521583e-4,-2.2564506861846283e-5,3.825934653411622e-9,-5.303295770130921e-4,-2.2701095439328812e-5,3.78981094362531e-9,-5.302956400451363e-4,-2.2899349303107257e-5,3.736840685640963e-9,-5.30210473665667e-4,-2.314073527658426e-5,3.6718507329490764e-9,-5.300620142371433e-4,-2.340093393614476e-5,3.601265981895817e-9,-5.298474349228372e-4,-2.3653284469214588e-5,3.532132956929273e-9,-5.29573308984056e-4,-2.3872320401723e-5,3.4711768964710575e-9,-5.292548431176042e-4,-2.403707365259649e-5,3.4239812057610383e-9,-5.289143407918906e-4,-2.4134058857944783e-5,3.3942741989696835e-9,-5.285789266630395e-4,-2.4159906281443744e-5,3.3832709646259577e-9,-5.282773952237134e-4,-2.4123609199085298e-5,3.389033411558258e-9,-5.280357364388392e-4,-2.404808982327215e-5,3.4059246595776906e-9,-5.278708810726782e-4,-2.3969949940549298e-5,3.4245089739342943e-9,-5.277831391864141e-4,-2.3935357712190903e-5,3.4325187746853774e-9,-5.277497546540487e-4,-2.3990053843999665e-5,3.417490568679712e-9,-5.277243373408124e-4,-2.416362760309801e-5,3.371043381811958e-9,-5.276472969010053e-4,-2.4453303594010498e-5,3.2933522318209953e-9,-5.274672038760931e-4,-2.4817592116745615e-5,3.1949762152372857e-9,-5.271634422555336e-4,-2.5188059386224728e-5,3.0937979755767632e-9,-5.267559068389037e-4,-2.549567899523349e-5,3.008057415556971e-9,-5.262952781608044e-4,-2.569664316277229e-5,2.9495561606916857e-9,-5.258412694183832e-4,-2.5783493066863733e-5,2.9207489680924703e-9,-5.254425066389419e-4,-2.5779503885456728e-5,2.9161612247094987e-9,-5.251263833011977e-4,-2.5724489785007588e-5,2.925940256027055e-9,-5.248986095698239e-4,-2.566102959629115e-5,2.9392604634341714e-9,-5.247480432907525e-4,-2.5625368004893986e-5,2.946595015690205e-9,-5.246528338231885e-4,-2.5643091786020372e-5,2.940887498147975e-9,-5.245858121778989e-4,-2.572797628618578e-5,2.918009092055048e-9,-5.245186697908287e-4,-2.5882406676612352e-5,2.8768303754599108e-9,-5.244252403009383e-4,-2.6098529986454154e-5,2.8190430572214277e-9,-5.242842104460674e-4,-2.6359918036558112e-5,2.748752781998075e-9,-5.240813809095547e-4,-2.664376012583758e-5,2.6718566779627634e-9,-5.23811405473642e-4,-2.6923697743507696e-5,2.5952305181850944e-9,-5.234786998958045e-4,-2.7173303690041893e-5,2.5257824612885647e-9,-5.230971720563157e-4,-2.7369871435687406e-5,2.4694878843742183e-9,-5.226886747385083e-4,-2.749801736194075e-5,2.4305157487672832e-9,-5.222802740203602e-4,-2.7552679878417226e-5,2.410501767346455e-9,-5.219004721067165e-4,-2.7541114744677728e-5,2.4080150610133087e-9,-5.215746064004773e-4,-2.748348611429587e-5,2.4182963593044943e-9,-5.213196916609409e-4,-2.741169261001642e-5,2.433387542607336e-9,-5.211390633776294e-4,-2.7365830864708946e-5,2.442883976030173e-9,-5.210177939670833e-4,-2.7387386588784694e-5,2.4356382416405185e-9,-5.2092103264559e-4,-2.7508753633437043e-5,2.4025749182162106e-9,-5.207983793056417e-4,-2.7740648686792387e-5,2.3401865242185253e-9,-5.205966266482828e-4,-2.806223642295004e-5,2.253350576167634e-9,-5.202789824851698e-4,-2.8421269302758358e-5,2.1554312055901617e-9,-5.198423209709797e-4,-2.8748981292602243e-5,2.064380772209385e-9,-5.193213569961983e-4,-2.8985277857182498e-5,1.996093068377223e-9,-5.187754286828383e-4,-2.9100856801229018e-5,1.95860814721846e-9,-5.182654734879904e-4,-2.910408008464851e-5,1.950328402209735e-9,-5.17834468885133e-4,-2.903146570281326e-5,1.9624204795998646e-9,-5.174994717055985e-4,-2.8930642345991606e-5,1.9830589980046977e-9,-5.172543344144145e-4,-2.8845521813800735e-5,2.0010793286060667e-9,-5.170775031307184e-4,-2.8808046397317225e-5,2.0080420772500573e-9,-5.169400421587481e-4,-2.883586587420426e-5,1.998918998843043e-9,-5.168116638617822e-4,-2.8933416322078027e-5,1.9719933681402133e-9,-5.166645952694133e-4,-2.9094191480639365e-5,1.928446821526537e-9,-5.16476024252827e-4,-2.930309443473024e-5,1.8718459878098334e-9,-5.162298604848831e-4,-2.9538674218475745e-5,1.8075644448687839e-9,-5.15918183163581e-4,-2.9775463189840496e-5,1.7421226458261029e-9,-5.155423951219354e-4,-2.9986754143992856e-5,1.682415416929058e-9,-5.151137407302886e-4,-3.0148054298078004e-5,1.6348102041026057e-9,-5.14652612618079e-4,-3.024103796625174e-5,1.6041685250154395e-9,-5.141862173715009e-4,-3.025736743569097e-5,1.5929194416540232e-9,-5.137445594032925e-4,-3.0201544061071227e-5,1.6003442662174793e-9,-5.133551073665073e-4,-3.0091913298744713e-5,1.6222546448333353e-9,-5.130369284461957e-4,-2.9959105712960137e-5,1.651244127376648e-9,-5.127954099507898e-4,-2.9841663506552026e-5,1.6776263789056898e-9,-5.126187743607301e-4,-2.977911818282605e-5,1.6910763709352394e-9,-5.124775920139699e-4,-2.980317215645477e-5,1.6828919402962205e-9,-5.123285291058596e-4,-2.992827896807966e-5,1.6485704768880652e-9,-5.121232184702717e-4,-3.0144080674584436e-5,1.5900146804836555e-9,-5.118216874803194e-4,-3.041333535976552e-5,1.5163090868023582e-9,-5.114069216089788e-4,-3.06788578426189e-5,1.4420450362417905e-9,-5.108941341159282e-4,-3.087997193374652e-5,1.383045829244638e-9,-5.103283884814538e-4,-3.097314754523197e-5,1.350950290890561e-9,-5.097696659935665e-4,-3.0946985077149386e-5,1.3492802047218747e-9,-5.092722871601308e-4,-3.0823751756630565e-5,1.3729826486285837e-9,-5.088689790088103e-4,-3.064783528784369e-5,1.4112787115572115e-9,-5.085657929059659e-4,-3.046880866802487e-5,1.4518356546063253e-9,-5.08346811352875e-4,-3.032757248561428e-5,1.4841879987672864e-9,-5.081833205273989e-4,-3.024951848205968e-5,1.5014927928567059e-9,-5.080425577921641e-4,-3.024389232124672e-5,1.5008319918093534e-9,-5.078937898414977e-4,-3.0306504584070308e-5,1.4827093655212703e-9,-5.077117106050379e-4,-3.042331137863873e-5,1.4502784815439696e-9,-5.074781087294359e-4,-3.0573627604291196e-5,1.4085697181512755e-9,-5.071827632231985e-4,-3.0732762305829554e-5,1.363783212066794e-9,-5.068241386956512e-4,-3.087440447664662e-5,1.322616276444108e-9,-5.064099743494193e-4,-3.097328317084115e-5,1.2915471371343079e-9,-5.059573813360568e-4,-3.100850766576199e-5,1.2759963019804067e-9,-5.054917280931815e-4,-3.09675266499804e-5,1.2793674539120017e-9,-5.050436028710859e-4,-3.085000943630236e-5,1.3021016279347987e-9,-5.046435847782699e-4,-3.067039629349787e-5,1.3410151010863194e-9,-5.043154041700915e-4,-3.0457621016956392e-5,1.3892739397176436e-9,-5.040690924503929e-4,-3.025093383015183e-5,1.4372920683562972e-9,-5.038963498673596e-4,-3.0091976510982597e-5,1.4745708467378526e-9,-5.037701041335682e-4,-3.001474285367648e-5,1.4921523724764496e-9,-5.036491510419384e-4,-3.0036038672483e-5,1.4850891219563646e-9,-5.034873278369172e-4,-3.0149240525066758e-5,1.4542250103523055e-9,-5.032453132593057e-4,-3.032361586041559e-5,1.4066373962624775e-9,-5.029021178492986e-4,-3.0510322165871625e-5,1.3543382658568904e-9,-5.024627404979756e-4,-3.06545113386691e-5,1.3112907864465489e-9,-5.01958677253733e-4,-3.0710749963624354e-5,1.2894420761309303e-9,-5.014397693770699e-4,-3.065674386674007e-5,1.2951067361437504e-9,-5.009594637119274e-4,-3.0499774007028698e-5,1.327181960804589e-9,-5.005591265624038e-4,-3.027289359707675e-5,1.3779593095465411e-9,-5.002577464773517e-4,-3.002286754188913e-5,1.4360302437884732e-9,-5.000502980916162e-4,-2.9795642680252517e-5,1.4898545010720947e-9,-4.999135018056022e-4,-2.96252177016554e-5,1.530564984614016e-9,-4.998148703059288e-4,-2.9528734833433275e-5,1.5533180663703762e-9,-4.997210391324866e-4,-2.9507108813167577e-5,1.557313949211449e-9,-4.996033580441727e-4,-2.95486805281199e-5,1.5450349761472517e-9,-4.994407134467235e-4,-2.963354086042027e-5,1.5212284427432084e-9,-4.99220513807549e-4,-2.9737275227078863e-5,1.4919412361183264e-9,-4.989388300780407e-4,-2.9833867578447486e-5,1.4637165471569636e-9,-4.986003615032496e-4,-2.989808300652266e-5,1.442933990607473e-9,-4.982184149831263e-4,-2.9907927865987277e-5,1.4351810441446417e-9,-4.978145252172193e-4,-2.9847712851288548e-5,1.4445248582206659e-9,-4.974169169914042e-4,-2.971176155615385e-5,1.4726359068551763e-9,-4.970569165391165e-4,-2.9508056286774713e-5,1.517893845763169e-9,-4.967628303390822e-4,-2.926026998042455e-5,1.574829976621728e-9,-4.96551978398408e-4,-2.900608455871382e-5,1.634431128285346e-9,-4.96423302209712e-4,-2.879027553840682e-5,1.6857146709917446e-9,-4.963541060645736e-4,-2.865323310167557e-5,1.7184681499924557e-9,-4.963036761354488e-4,-2.861842652841363e-5,1.7263462753477494e-9,-4.962236841992082e-4,-2.8683800491744274e-5,1.7091218148852898e-9,-4.960720233794146e-4,-2.8820919804120417e-5,1.673117417745899e-9,-4.958250916601518e-4,-2.898244031513813e-5,1.6295915726764063e-9,-4.954843911405692e-4,-2.911516518981793e-5,1.591663143962164e-9,-4.950757567029083e-4,-2.9174289607850693e-5,1.5708062654753593e-9,-4.946419883627445e-4,-2.9134683182893188e-5,1.5739443674704452e-9,-4.942313197632331e-4,-2.899634780038582e-5,1.601897900139963e-9,-4.938850760519116e-4,-2.8782878175581034e-5,1.6495407345080696e-9,-4.936280480341194e-4,-2.8533738897703263e-5,1.707525662802973e-9,-4.934641902772148e-4,-2.8293088750190768e-5,1.7649546067683797e-9,-4.933783032088761e-4,-2.80988640410467e-5,1.8121051613246878e-9,-4.933422254005704e-4,-2.7975289802310766e-5,1.842421094099516e-9,-4.933227875226166e-4,-2.793022331205908e-5,1.853363241919422e-9,-4.932888738289174e-4,-2.7956735636432285e-5,1.8461872237371115e-9,-4.932160962554518e-4,-2.8037116641906087e-5,1.8250326211687373e-9,-4.930889594766327e-4,-2.8147435486230603e-5,1.7957702854856959e-9,-4.929012427190119e-4,-2.8261502965497104e-5,1.7649326447086253e-9,-4.926554961798312e-4,-2.835390391705434e-5,1.7388763334173934e-9,-4.923623095573031e-4,-2.8402349479687208e-5,1.7231683216680764e-9,-4.920395867133475e-4,-2.8389889647024718e-5,1.722073563894763e-9,-4.917115540492151e-4,-2.8307497965287012e-5,1.7379836944677346e-9,-4.914067695061618e-4,-2.815714883271202e-5,1.7707008124423624e-9,-4.911541935152892e-4,-2.7954758530073625e-5,1.8166878141640076e-9,-4.9097673506944e-4,-2.773135265619518e-5,1.868683014872907e-9,-4.908829819257416e-4,-2.753002578310636e-5,1.9163130986412e-9,-4.908600342594571e-4,-2.7396792960745575e-5,1.9482274136412787e-9,-4.908721173909682e-4,-2.736633164669827e-5,1.9555585722015448e-9,-4.908685218729858e-4,-2.7447945016454782e-5,1.935427847646306e-9,-4.907995565142859e-4,-2.7619289411182313e-5,1.8926347984558103e-9,-4.906336832509187e-4,-2.7832348344015255e-5,1.8383867655335314e-9,-4.903676923646972e-4,-2.802925951189207e-5,1.7865984348223615e-9,-4.900260027571856e-4,-2.81603898676814e-5,1.7495716625922467e-9,-4.89651135545775e-4,-2.8197278587712897e-5,1.7348223698973235e-9,-4.892906052692192e-4,-2.8137212384925217e-5,1.7438257478064728e-9,-4.889850187707911e-4,-2.800028120231637e-5,1.7725003438639047e-9,-4.887600631930353e-4,-2.782169608840279e-5,1.8128296668897378e-9,-4.886231415493295e-4,-2.764229676123075e-5,1.8550063239660704e-9,-4.885642484701803e-4,-2.7499550273375093e-5,1.8896080581632753e-9,-4.88560103003217e-4,-2.7420633789239168e-5,1.9094190965771907e-9,-4.885802098906471e-4,-2.741859369588705e-5,1.9105887095828677e-9,-4.885932963466409e-4,-2.749186494528233e-5,1.892958847920264e-9,-4.885727070221833e-4,-2.7626586385723848e-5,1.8596151082628022e-9,-4.884999125827284e-4,-2.780056601507957e-5,1.815912403162441e-9,-4.883659918181414e-4,-2.7987688626019622e-5,1.7683031663824352e-9,-4.881714965792303e-4,-2.8161857991136438e-5,1.7232621331153711e-9,-4.879253817230721e-4,-2.8300053385778088e-5,1.6864793191295907e-9,-4.876435954604153e-4,-2.838460913858599e-5,1.6623231380987314e-9,-4.87347570898538e-4,-2.8405127125376862e-5,1.6534487206287574e-9,-4.870624676766653e-4,-2.8360400428380635e-5,1.660397458157364e-9,-4.8681464921107224e-4,-2.8260451760282097e-5,1.6810999234867354e-9,-4.8662762504571956e-4,-2.8128194590838857e-5,1.710378936760407e-9,-4.865159493111669e-4,-2.7999259061439134e-5,1.7398402884595435e-9,-4.864778001628795e-4,-2.7917688216241995e-5,1.758782346831438e-9,-4.864891773662556e-4,-2.7925623648319725e-5,1.7566564873211407e-9,-4.8650469881442816e-4,-2.8048055389582203e-5,1.7268436941845679e-9,-4.8646900022718986e-4,-2.8278862045047066e-5,1.6701987909042514e-9,-4.863366661408441e-4,-2.8577505119019685e-5,1.596014686119699e-9,-4.8609095859314307e-4,-2.888149066944309e-5,1.5191180487893385e-9,-4.8575031131327785e-4,-2.9129303897496962e-5,1.4543917377772392e-9,-4.853594628443761e-4,-2.928127077721007e-5,1.4117786999065398e-9,-4.8497195747729835e-4,-2.932864068445588e-5,1.394071849831376e-9,-4.846337505125269e-4,-2.92901557766113e-5,1.397598481510503e-9,-4.8437354423659196e-4,-2.9201624636557654e-5,1.4144787727407432e-9,-4.842002284292061e-4,-2.9104393029698005e-5,1.4351477859261177e-9,-4.841052181270292e-4,-2.903609161431683e-5,1.4504558263885193e-9,-4.84067228217977e-4,-2.9024670479161186e-5,1.4531643834621424e-9,-4.840577748119623e-4,-2.90853939257728e-5,1.438879930124667e-9,-4.8404655015113853e-4,-2.9220176531956694e-5,1.4064663055144139e-9,-4.840061936266715e-4,-2.9418854952069273e-5,1.3579222509944927e-9,-4.839159970403585e-4,-2.9661986241126522e-5,1.2977592972372048e-9,-4.8376421255598803e-4,-2.99245694584744e-5,1.2320364517035848e-9,-4.8354887698368103e-4,-3.0180063885511402e-5,1.1672683012708056e-9,-4.832772700501507e-4,-3.0404142004948953e-5,1.1094257627540442e-9,-4.829643557323166e-4,-3.0577722626730395e-5,1.06319106972272e-9,-4.826306810340864e-4,-3.068915192762852e-5,1.0314937573263063e-9,-4.823000236618913e-4,-3.073572511170575e-5,1.0152261736262526e-9,-4.819967854440488e-4,-3.07247596187981e-5,1.0130129991719876e-9,-4.8174290438235536e-4,-3.067424662353938e-5,1.0209817846856487e-9,-4.8155387647187757e-4,-3.061273027346073e-5,1.032629336411569e-9,-4.814336608023644e-4,-3.057734555154527e-5,1.0391143981355627e-9,-4.813692597631775e-4,-3.060832201910778e-5,1.0304832601707698e-9,-4.813275459614071e-4,-3.073869463472397e-5,9.981998565152625e-10,-4.812585659790297e-4,-3.09804507134622e-5,9.386721541243323e-10,-4.811087866201458e-4,-3.1312961751180574e-5,8.56262021686922e-10,-4.8084200197442165e-4,-3.168291882514008e-5,7.634346976835111e-10,-4.804573453938174e-4,-3.202098523525012e-5,6.767668830172286e-10,-4.799919742448245e-4,-3.226863232885468e-5,6.104833504614054e-10,-4.7950561722214457e-4,-3.239963129412474e-5,5.713324640502453e-10,-4.7905711130771735e-4,-3.2424683834516966e-5,5.57489239643948e-10,-4.7868648919253005e-4,-3.2380572165611614e-5,5.61014998658449e-10,-4.78408756745913e-4,-3.231372536823076e-5,5.715060758294507e-10,-0.00047821695541208484,-3.226672810540936e-5,5.790543339561175e-10,-4.780892929635116e-4,-3.2270696159169436e-5,5.759797425532569e-10,-4.7799654019284706e-4,-3.2342694027153804e-5,5.575709307492149e-10,-4.7790798337904856e-4,-3.2486240286347094e-5,5.222191413059654e-10,-4.7779572256916394e-4,-3.269322339193252e-5,4.712137846897875e-10,-4.776377532430203e-4,-3.294643314889626e-5,4.0828191455557877e-10,-4.7742011900052996e-4,-3.322255415686779e-5,3.3887550315425643e-10,-4.7713813362436103e-4,-3.3495522236272236e-5,2.692723543611399e-10,-4.767966058786844e-4,-3.374005506219493e-5,2.0561845121165476e-10,-4.764089810761079e-4,-3.3935100660724256e-5,1.5304719488686107e-10,-4.759953978571277e-4,-3.4066794130658526e-5,1.150012473363178e-10,-4.75579914293648e-4,-3.4130529894258694e-5,9.281539758685568e-11,-4.7518726401693057e-4,-3.4132012358599385e-5,8.552166664277137e-11,-4.7483937947707337e-4,-3.4087283256587925e-5,8.9808001360197e-11,-4.745518134530909e-4,-3.402168289331611e-5,1.0012352749726892e-10,-4.743301302744044e-4,-3.396758918434555e-5,1.0901384685598315e-10,-4.7416643965561046e-4,-3.3960444197777966e-5,1.0790405985855532e-10,-4.740368979791793e-4,-3.4032281179469596e-5,8.86169595898152e-11,-4.739021227586955e-4,-3.420250408423377e-5,4.5725881072999446e-11,-4.7371326042227083e-4,-3.446757033559661e-5,-2.0710561717845824e-11,-4.734254927457585e-4,-3.479429725681101e-5,-1.0330249928567228e-10,-4.7301639236006836e-4,-3.5123672220509924e-5,-1.881476569178234e-10,-4.725000431178112e-4,-3.5388839961071916e-5,-2.591876480176443e-10,-4.7192604541348076e-4,-3.554105374407855e-5,-3.044707002743182e-10,-4.7136099969806975e-4,-3.556883779945993e-5,-3.206993534357789e-10,-4.7086294225468346e-4,-3.549888047725581e-5,-3.1342792392102554e-10,-4.7046352272326177e-4,-3.538050951555742e-5,-2.935213287305637e-10,-4.7016473226171217e-4,-3.5265590743997314e-5,-2.726806915020762e-10,-4.699464136836216e-4,-3.5194260656001715e-5,-2.6030955535709985e-10,-4.697770469616606e-4,-3.518932915329649e-5,-2.622205939252974e-10,-4.696228012465099e-4,-3.5256920462369833e-5,-2.8060094716625834e-10,-4.6945333703288087e-4,-3.538992906669341e-5,-3.145484253008059e-10,-4.69244867902677e-4,-3.5571919634512485e-5,-3.607624652693146e-10,-4.6898164086817774e-4,-3.5780529452895425e-5,-4.1425452821863957e-10,-4.686566863176195e-4,-3.5990449974228233e-5,-4.690962154934373e-10,-4.6827208786035787e-4,-3.617631589754077e-5,-5.192139267408718e-10,-4.678386863652773e-4,-3.631568320727738e-5,-5.591870571551936e-10,-4.6737497335989225e-4,-3.6392083291211825e-5,-5.849904896303589e-10,-4.6690488301707415e-4,-3.639782201853782e-5,-5.94602599597509e-10,-4.6645445102384944e-4,-3.633592139146378e-5,-5.883906819014525e-10,-4.660476945176547e-4,-3.6220661871468307e-5,-5.692228942796334e-10,-4.657022695838701e-4,-3.6076407131886816e-5,-5.422815071321678e-10,-4.6542554666657507e-4,-3.5934607127357874e-5,-5.145430862929582e-10,-4.6521176990474016e-4,-3.582914597600692e-5,-4.93889587145379e-10,-4.650408921003716e-4,-3.579037660247443e-5,-4.878228226654467e-10,-4.6487973809540686e-4,-3.583822677071e-5,-5.017887049330647e-10,-4.646864289969452e-4,-3.5975183793548686e-5,-5.37296846788472e-10,-4.64418929535433e-4,-3.618107017587765e-5,-5.903807450996709e-10,-4.640473748557744e-4,-3.641280549063968e-5,-6.513004445318026e-10,-4.6356706963375163e-4,-3.6612571972860786e-5,-7.064066461510136e-10,-4.6300573393137634e-4,-3.672503075757567e-5,-7.42296675743031e-10,-4.624182914159778e-4,-3.671797163766815e-5,-7.508047679955584e-10,-4.6186855565977626e-4,-3.659550128472903e-5,-7.321670756526646e-10,-4.614064225580401e-4,-3.6395389241618036e-5,-6.944563282812404e-10,-4.610528332327597e-4,-3.6172385710832e-5,-6.498299076742612e-10,-4.607987283925611e-4,-3.597801715887471e-5,-6.100320374056605e-10,-4.6061468507508637e-4,-3.5846959612404006e-5,-5.833503649471653e-10,-4.6046349004600013e-4,-3.579313229929127e-5,-5.736387227312834e-10,-4.6030994274539054e-4,-3.5812705095171745e-5,-5.807834219497946e-10,-4.601262422144594e-4,-3.588972134772124e-5,-6.017486078129592e-10,-4.5989390505752053e-4,-3.600142119002202e-5,-6.316505581854882e-10,-4.596038614192552e-4,-3.61222398339944e-5,-6.646706362294414e-10,-4.592559568531993e-4,-3.6226694452753686e-5,-6.948193567656552e-10,-4.5885834703375316e-4,-3.629175808199892e-5,-7.166060109300918e-10,-4.584267277797475e-4,-3.629920933167143e-5,-7.25651034334448e-10,-4.5798303120869814e-4,-3.623817319516776e-5,-7.192617233124736e-10,-4.575530806030977e-4,-3.610762730040304e-5,-6.969458465337379e-10,-4.571628892970559e-4,-3.591815255208761e-5,-6.607620683323364e-10,-4.56833823604343e-4,-3.569198142091502e-5,-6.153534493322551e-10,-4.5657747279228704e-4,-3.54605678450924e-5,-5.675121322431022e-10,-4.5639155317605325e-4,-3.525945503013983e-5,-5.251872676244543e-10,-4.562582877399368e-4,-3.5121101489857186e-5,-4.960025021303906e-10,-4.561462404911574e-4,-3.5067166813251846e-5,-4.855281510313871e-10,-4.560157354184803e-4,-3.510209657136758e-5,-4.956760285975314e-10,-4.558271844438492e-4,-3.520973052125918e-5,-5.23642942124648e-10,-4.555509722539143e-4,-3.5354377231198915e-5,-5.618485388203806e-10,-4.551767900011865e-4,-3.5487271728465515e-5,-5.99216862288837e-10,-4.547194931700101e-4,-3.555821241925147e-5,-6.238372524193589e-10,-4.5421824807652514e-4,-3.553016757808225e-5,-6.264728450339745e-10,-4.537270827198009e-4,-3.539206308847836e-5,-6.037125880351339e-10,-4.532987076358123e-4,-3.5163679660655164e-5,-5.592847955933052e-10,-4.5296792741134556e-4,-3.488912728160238e-5,-5.027086388929701e-10,-4.527422313081323e-4,-3.462138798450755e-5,-4.458766460131134e-10,-4.5260323410913533e-4,-3.4405453702598874e-5,-3.9926413768010085e-10,-4.5251644486876176e-4,-3.426740951649623e-5,-3.6938487658784766e-10,-4.5244332300902997e-4,-3.421213627964388e-5,-3.5808595438001316e-10,-4.523505626185003e-4,-3.4227480505678286e-5,-3.632636675315268e-10,-4.5221482312207624e-4,-3.4290899461766846e-5,-3.8020116677613763e-10,-4.5202375557595886e-4,-3.437554371425792e-5,-4.029081427514244e-10,-4.5177505774483904e-4,-3.445460262322402e-5,-4.251869797649234e-10,-4.514749547370295e-4,-3.4504079311446706e-5,-4.4139362238526164e-10,-4.5113679020358777e-4,-3.450468018923218e-5,-4.469651496899405e-10,-4.507797731939009e-4,-3.444350711070474e-5,-4.388225099902334e-10,-4.504274678763231e-4,-3.431595710739258e-5,-4.1574789980056126e-10,-4.501053968208255e-4,-3.412772239306382e-5,-3.7876689398194317e-10,-4.49837245052929e-4,-3.3896171321560205e-5,-3.3143923698792594e-10,-4.4963967883302245e-4,-3.364990241377015e-5,-2.7982500286964254e-10,-4.495167350280108e-4,-3.342519780636138e-5,-2.3182893325347959e-10,-4.494557916595384e-4,-3.32588698365336e-5,-1.9575098987866422e-10,-4.494275238613324e-4,-3.317868246084438e-5,-1.7822526619476317e-10,-4.493912544321645e-4,-3.319433112785999e-5,-1.8215182067943742e-10,-4.4930491559363935e-4,-3.329257874488547e-5,-2.0541584757431906e-10,-4.491366544886963e-4,-3.343893518934762e-5,-2.409915239755049e-10,-4.4887423428689434e-4,-3.358582747083409e-5,-2.785249749837473e-10,-4.4852918924545023e-4,-3.3684857564196356e-5,-3.069592004180854e-10,-4.481345025764483e-4,-3.3699547562141865E-05,-3.174400965017838e-10,-4.477364173205387e-4,-3.36150453685436e-5,-3.056899582009406e-10,-4.473824653024104e-4,-3.3442075559446554e-5,-2.731645840371916e-10,-4.471089794236686e-4,-3.3213746559910004e-5,-2.2659609678642381e-10,-4.4693193476726584e-4,-3.2975892326254515e-5,-1.7600234698550785e-10,-4.4684415933761597e-4,-3.2774072581832724e-5,-1.318180279743324e-10,-4.468195596048631e-4,-3.264180812728822e-5,-1.0215906621877542e-10,-4.468221350963377e-4,-3.259390394722096e-5,-9.111564082088563e-11,-4.468159270102211e-4,-3.262613831507543e-5,-9.843768488394674e-11,-4.4677253154619184e-4,-3.271981887431175e-5,-1.2037327381122013e-10,-4.466747593938944e-4,-3.2848326037323585e-5,-1.5107991793165482e-10,-4.465169535590928e-4,-3.298315215165685e-5,-1.8405170853296948e-10,-4.4630337571044507e-4,-3.309824656748056e-5,-2.1323351666357844e-10,-4.4604597579605345e-4,-3.317263929462189e-5,-2.337308573244723e-10,-4.45762317539977e-4,-3.3191928530204014e-5,-2.421841171496663e-10,-4.454738218877487e-4,-3.314935956184844e-5,-2.369644191333686e-10,-4.4520398080873634e-4,-3.304699535971351e-5,-2.1835135532547503e-10,-4.449759188950929e-4,-3.289697404544757e-5,-1.887628854791514e-10,-4.448087241116615e-4,-3.2722220146874976e-5,-1.529489231537002e-10,-4.4471242614531716e-4,-3.2555363695373645e-5,-1.1787226547448037e-10,-4.446825403539786e-4,-3.2434324371631275e-5,-9.188130706746193e-11,-4.4469655992664646e-4,-3.2393735943472714e-5,-8.291075104452407e-11,-4.4471563063769776e-4,-3.245364245052461e-5,-9.596818943647909e-11,-4.446933654754844e-4,-3.2609831845342675e-5,-1.3086158754423952e-10,-4.445900359888028e-4,-3.2831347836709934e-5,-1.814400172328324e-10,-4.4438642125605143e-4,-3.306811219248421e-5,-2.370680722983898e-10,-4.4409080264432883e-4,-3.326622792760892e-5,-2.858581212801058e-10,-4.437360837083105e-4,-3.33843518504114e-5,-3.1823887552277983e-10,-4.433690949210459e-4,-3.340463330407339e-5,-3.294487374573945e-10,-4.430370755530498e-4,-3.3335321031998855e-5,-3.203184353265311e-10,-4.427759960089928e-4,-3.320596713714179e-5,-2.9650278742528307e-10,-4.4260339341241914e-4,-3.305809413124731e-5,-2.666935334285821e-10,-4.425164934095727e-4,-3.293443729480453e-5,-2.403889490512539e-10,-4.424951037855245e-4,-3.286939195932481e-5,-2.2573681301802528e-10,-4.4250792553513906e-4,-3.2882577323854434e-5,-2.2789539745179735e-10,-4.425203905633074e-4,-3.297653466831185e-5,-2.4823497974085815e-10,-4.425019734590562e-4,-3.313848660280707e-5,-2.8448803781729026e-10,-4.424313311491289e-4,-3.334499881923905e-5,-3.3168004394333305e-10,-4.422985572981347e-4,-3.3567784931305844e-5,-3.834657566606249e-10,-4.4210484891880924e-4,-3.377905354369237e-5,-4.3346022827032136e-10,-4.4186050614891556e-4,-3.3955460677570604e-5,-4.762630706971752e-10,-0.00044158229376506733,-3.408047587119074e-5,-5.080560853142402e-10,-4.4129088951131405e-4,-3.4145537682724034e-5,-5.268328707022444e-10,-4.4100864451780675e-4,-3.415060214756904e-5,-5.324321778308508e-10,-4.4075744431709034e-4,-3.4104538515809105e-5,-5.265509515466792e-10,-4.405562048159596e-4,-3.402543308853396e-5,-5.128193797311413e-10,-4.4041749799388676e-4,-3.394031824044413e-5,-4.968520411437988e-10,-4.4034317371603764e-4,-3.388321666420194e-5,-4.859836819661576e-10,-4.4031985380117906e-4,-3.389003663385937e-5,-4.882781596747447e-10,-4.4031667309458187e-4,-3.398947734201114e-5,-5.105417250572887e-10,-4.40288726603928e-4,-3.419139460117802e-5,-5.556392875995702e-10,-4.4018852720764694e-4,-3.447763007612022e-5,-6.202734840122589e-10,-4.3998312776834925e-4,-3.4802253044518366e-5,-6.948530997978604e-10,-4.396688525708522e-4,-3.510470657110431e-5,-7.662719727894685e-10,-4.3927463938373874e-4,-3.533108692677226e-5,-8.225278615720626e-10,-4.388514849831018e-4,-3.545261924397217e-5,-8.567545923869293e-10,-4.384542114569926e-4,-3.5472467064472854e-5,-8.687704570663886e-10,-4.381250309194333e-4,-3.542007387575285e-5,-8.640367362840351e-10,-4.3788477725332484e-4,-3.533865244353876e-5,-8.512299465652137e-10,-4.377321566231613e-4,-3.52722511840646e-5,-8.396926899517458e-10,-4.3764830456916964e-4,-3.525614476523123e-5,-8.374333127536711e-10,-4.376036478383992e-4,-3.531151963905395e-5,-8.498330044244647e-10,-4.3756499698159503e-4,-3.544392307484552e-5,-8.790159276265403e-10,-4.3750174764789934e-4,-3.56445680225368e-5,-9.238259471745557e-10,-4.3739057794072914e-4,-3.5893675770702265e-5,-9.803621067461992e-10,-4.372182577922428e-4,-3.6165025749781834e-5,-1.042950971201023e-9,-4.369824734841252e-4,-3.6430802734025703e-5,-1.1053246753441703e-9,-4.36690901264442e-4,-3.6665949804834746e-5,-1.1617407465670032e-9,-4.3635900542241446e-4,-3.685147801086402e-5,-1.2078249534317108e-9,-4.360071976804138e-4,-3.697647114841903e-5,-1.2410262063482944e-9,-4.356579555231565e-4,-3.7038915732516285e-5,-1.260728985867218e-9,-4.353331667358742e-4,-3.704575670653252e-5,-1.2681800873321904e-9,-4.350516275750907e-4,-3.701249208677096e-5,-1.2663789075441324e-9,-4.348264748497907e-4,-3.696235632581322e-5,-1.2599873663792249e-9,-4.3466228069439307e-4,-3.692480626009468e-5,-1.2551736513394884e-9,-4.3455177288540366e-4,-3.6932510170417106e-5,-1.25912798564809e-9,-4.3447301468774706e-4,-3.701572674939781e-5,-1.278902275184977e-9,-4.3438916026796164e-4,-3.71935894381788e-5,-1.3194060826546412e-9,-4.3425376802956616e-4,-3.74638561498117e-5,-1.3809346111075104e-9,-4.340236163024067e-4,-3.779593543622154e-5,-1.4574024307369292e-9,-4.3367640876553675e-4,-3.8134118564692025e-5,-1.5369256916288049e-9,-4.332244241737091e-4,-3.8414502041651824e-5,-1.6055222702572017e-9,-4.3271386018431076e-4,-3.858948430017033e-5,-1.652481129483999e-9,-4.3220787923143326e-4,-3.864607462666557e-5,-1.6743270763616353e-9,-4.317629656468537e-4,-3.860761863456337e-5,-1.6752156913577408e-9,-4.3141176547786695e-4,-3.8520414864384305e-5,-1.6642240440609935e-9,-4.3115868222643985e-4,-3.8435327419660585e-5,-1.651702421749401e-9,-4.3098557996193025e-4,-3.8393580822086956e-5,-1.6464759363415677e-9,-4.3086147835504085e-4,-3.841992287116871e-5,-1.65440671246263e-9,-4.307516674336233e-4,-3.8521823132790755e-5,-1.6780078303099869e-9,-4.306243804306794e-4,-3.8692067403099935e-5,-1.716664885505569e-9,-4.3045497513185133e-4,-3.891267180424769e-5,-1.7671843133691706e-9,-4.302282105989142e-4,-3.9159095494623204e-5,-1.824566327370246e-9,-4.299390751286171e-4,-3.940438880534627e-5,-1.8829431790449586e-9,-4.295924025130069e-4,-3.9623034498814555e-5,-1.936562263178734e-9,-4.292014630930585e-4,-3.9794261037469396e-5,-1.9806593157273097e-9,-4.287856876623859e-4,-3.9904630596068394e-5,-2.0120950226613972e-9,-4.28367754503315e-4,-3.994964610903417e-5,-2.0296763544745215e-9,-4.279704452993792e-4,-3.9934237516808346e-5,-2.0341813886434956e-9,-4.276136265667553e-4,-3.987227137249826e-5,-2.0282039753249915e-9,-4.273114688402678e-4,-3.978527077197651e-5,-2.0159259234067885e-9,-4.2706992488113834e-4,-3.9700366198973295e-5,-2.002829069662559e-9,-4.268845197863682e-4,-3.964737840173896e-5,-1.9952647642030475e-9,-4.267386265969893e-4,-3.965471131576109e-5,-1.999700373052887e-9,-4.266029510717304e-4,-3.9743544324180614e-5,-2.0214358793739664e-9,-4.26437834568534e-4,-3.992039295746758e-5,-2.0627867533072652e-9,-4.2620038657907274e-4,-4.016980373449743e-5,-2.1212012265236316e-9,-4.2585728334790284e-4,-4.0451299582123726e-5,-2.1883606719571155e-9,-4.25400265363133e-4,-4.070596598753596e-5,-2.25155109322746e-9,-4.248561337280175e-4,-4.0874859811857436e-5,-2.2977411834001216e-9,-4.242820619720334e-4,-4.092274432793028e-5,-2.3187965446079723e-9,-4.237451316903482e-4,-4.085341822572131e-5,-2.3147791360394584e-9,-4.2329694415442286e-4,-4.070654441064251e-5,-2.2932869092235596e-9,-4.229578411734412e-4,-4.0538947222353454e-5,-2.2656447239000503e-9,-4.2271688421275413e-4,-4.040304127911455e-5,-2.2426165588610284e-9,-4.225427433080427e-4,-4.0333144803596924e-5,-2.231704275563879e-9,-4.223968689264773e-4,-4.0342043136537935e-5,-2.2363639652971267e-9,-4.222434398179648e-4,-4.042433106460874e-5,-2.256430112670042e-9,-4.220548334090586e-4,-4.056222883882198e-5,-2.2890006714688703e-9,-4.218136677594013e-4,-4.073117018433807e-5,-2.3293788637137593e-9,-4.21512946299068e-4,-4.0904258616967875e-5,-2.3719643641673716e-9,-4.2115531676598317e-4,-4.105575217512033e-5,-2.4111025484600863e-9,-4.207517952197999e-4,-4.1163907229954436e-5,-2.441863734119646e-9,-4.203200113401336e-4,-4.121333480514526e-5,-2.460678044086568e-9,-4.198819221794372e-4,-4.119688223171917e-5,-2.4657691210332674e-9,-4.194609188969578e-4,-4.111682572964086e-5,-2.4573520283086842e-9,-4.1907848888926417e-4,-4.0985005162454883e-5,-2.4375869987131062e-9,-4.1875086145044143e-4,-4.082171835588424e-5,-2.4103369791762464e-9,-4.1848604840921634e-4,-4.065342570658751e-5,-2.3807851127628465e-9,-4.182816061708275e-4,-4.050935427302264e-5,-2.3549026071762925e-9,-4.1812347686722286e-4,-4.041715861848515e-5,-2.3387103150409148e-9,-4.1798629068454416e-4,-4.039789505126642e-5,-2.337275945283984e-9,-4.178356307985684e-4,-4.046059638808345e-5,-2.353438615303446e-9,-4.1763304542852736e-4,-4.0597133531294696e-5,-2.3864309135234715e-9,-4.17344485054109e-4,-4.07791348421971e-5,-2.4308988000567276e-9,-4.1695157842682465e-4,-4.095991780817399e-5,-2.477108670627579e-9,-4.16462448119742e-4,-4.108433698392642e-5,-2.5130503328766345e-9,-4.15915771968092e-4,-4.1106404871525956e-5,-2.528346010590168e-9,-4.153721159190534e-4,-4.100833523430551e-5,-2.5184530965389194e-9,-4.1489323356661917e-4,-4.0810007275967356e-5,-2.4867440031700544e-9,-4.1451934265011636e-4,-4.056149998336314e-5,-2.443004015897615e-9,-4.14257057163492e-4,-4.032253315069391e-5,-2.399280027476654e-9,-4.140829643037679e-4,-4.014115402159914e-5,-2.365624213252662e-9,-4.139573594589503e-4,-4.004203540654317e-5,-2.347719850083814e-9,-4.1383883902764264e-4,-4.0026135838993726e-5,-2.346648557292666e-9,-4.1369395521428763e-4,-4.007714518494776e-5,-2.359918634965156e-9,-4.1350116283010187e-4,-4.0169438678037385e-5,-2.3828275358386247e-9,-4.132509204849382e-4,-4.02745458009851e-5,-2.409672202656709e-9,-4.12944098431814e-4,-4.036544899383293e-5,-2.434693727626981e-9,-4.1259003312596384e-4,-4.0419283786942026e-5,-2.4528076757501718e-9,-4.1220463180241106e-4,-4.041920894315126e-5,-2.460165886913844e-9,-4.118084241146482e-4,-4.035589750016881e-5,-2.4545551866637317e-9,-4.114243079808707e-4,-4.0228769440772255e-5,-2.4356339267987566e-9,-4.1107472547243434e-4,-4.004674770704506e-5,-2.4050065497151834e-9,-4.107782411517076e-4,-3.982801465533893e-5,-2.3661110631512318e-9,-4.1054594259781567e-4,-3.959827057314572e-5,-2.3238887851075064e-9,-4.10378395758591e-4,-3.938732383127705e-5,-2.2842171118400988e-9,-4.1026395191599125e-4,-3.922422342717951e-5,-2.2530908614786637e-9,-4.101791123460307e-4,-3.9131562701737556e-5,-2.23557803383868e-9,-4.100913745510124e-4,-3.911997116984464e-5,-2.2346619299068557e-9,-4.099645570075549e-4,-3.9183950507037974e-5,-2.250178149363926e-9,-4.097661972198411e-4,-3.930021397784681e-5,-2.278150153434694e-9,-4.0947612025577423e-4,-3.9429780090729804e-5,-2.310922006873919e-9,-4.090943862753506e-4,-3.952493336780649e-5,-2.338459230035468e-9,-4.086456517799025e-4,-3.954111611657848e-5,-2.3508883014153373e-9,-4.081763984351799e-4,-3.945141594102922e-5,-2.34172318966217e-9,-4.0774310491620253e-4,-3.9258165010706924e-5,-2.3105104000586573e-9,-4.0739410414728915e-4,-3.899487440782558e-5,-2.2634068239480487e-9,-4.071530517716821e-4,-3.8715380711305496e-5,-2.2110648360130516e-9,-4.07012517735472e-4,-3.8474663908117465e-5,-2.1647814676881445e-9,-4.0694031503661626e-4,-3.83111097332982e-5,-2.132885090794267e-9,-4.0689355328915437e-4,-3.823811500140989e-5,-2.118905391336737e-9,-4.0683245131795863e-4,-3.824611552137267e-5,-2.121744169365106e-9,-4.0672875066320724e-4,-3.83106584547127e-5,-2.137053712749919e-9,-4.065681541205749e-4,-3.8401284561318635e-5,-2.1588842425524963e-9,-4.063489170280104e-4,-3.848820200325258e-5,-2.181051087605659e-9,-4.0607899542711783e-4,-3.854620981262006e-5,-2.198080022710527e-9,-4.0577321760118843e-4,-3.855665233157998e-5,-2.2057933114142437e-9,-4.054509336224549e-4,-3.850839314776131e-5,-2.2016348705458945e-9,-4.051339790749997e-4,-3.839848304650612e-5,-2.1848218714545927e-9,-4.0484452728607707e-4,-3.8232763492249975e-5,-2.1563917184551757e-9,-4.046024009615301e-4,-3.8026166396044666e-5,-2.1191704389762e-9,-4.0442170184689123e-4,-3.780206287518215e-5,-2.0776109012345515e-9,-4.043071522932379e-4,-3.7589916539575194e-5,-2.037394588277785e-9,-4.0425112417486777e-4,-3.7420805564781884e-5,-2.0046841607319565e-9,-4.0423270413599097e-4,-3.732108474951415e-5,-1.9850017433876396e-9,-4.042199941499895e-4,-3.7305461211264305e-5,-1.9818909364028005e-9,-4.041759729458141e-4,-3.7371576180890595e-5,-1.995722476799383e-9,-4.040669367934563e-4,-3.749819781395151e-5,-2.023080949156707e-9,-4.038714430168704e-4,-3.764824543910441e-5,-2.0570719150784504e-9,-4.0358723837979936e-4,-3.777652245214125e-5,-2.088652532821821e-9,-4.0323392522940814e-4,-3.784066890271968e-5,-2.108786263221883e-9,-4.028499668827034e-4,-3.7812733764463005e-5,-2.110917795052249e-9,-4.024839213955273e-4,-3.768809159565209e-5,-2.0930452841422504e-9,-4.0218154105103323e-4,-3.748838143603014e-5,-2.0586134771402745e-9,-4.0197245691300375e-4,-3.7256296497542606e-5,-2.0156987881971886e-9,-4.0186148165965595e-4,-3.7042976733979594e-5,-1.974586200188155e-9,-4.018283808339541e-4,-3.6892494178303976e-5,-1.944623987475064e-9,-4.0183608868270894e-4,-3.6829760565161567e-5,-1.9316327261505804e-9,-4.0184323029191903e-4,-3.685629057238657e-5,-1.9367984159228025e-9,-4.0181540972463755e-4,-3.6953941902521246e-5,-1.9571606390107712e-9,-4.0173160962337696e-4,-3.7093205760581396e-5,-1.9871078224997477e-9,-4.015852743493223e-4,-3.724183204408453e-5,-2.0200937211791826e-9,-4.013819118193629e-4,-3.737112093517171e-5,-2.0500268935527753e-9,-4.0113546642722405e-4,-3.745934046666174e-5,-2.072145790532876e-9,-4.008649162475529e-4,-3.749303145455463e-5,-2.0834320591036338e-9,-4.005915876567197e-4,-3.746722429672266e-5,-2.0827005722215756e-9,-4.00337051736825e-4,-3.7385338843855984e-5,-2.0705219071079996e-9,-4.0012112723467486e-4,-3.725911600757237e-5,-2.0491068141487655e-9,-3.9995945006566694e-4,-3.710838880148392e-5,-2.02219878218256e-9,-3.9986036290861937e-4,-3.696000071532959e-5,-1.9948926212214277e-9,-3.9982147601925637e-4,-3.684496081292581e-5,-1.9731958999948373e-9,-3.998270224104261e-4,-3.6793151712941985e-5,-1.9631309255681626e-9,-3.9984782850540707e-4,-3.6825820017548094e-5,-1.9693326621769157e-9,-3.9984567314217234e-4,-3.6947721487253395e-5,-1.9934475370821446e-9,-3.997823060669654e-4,-3.714229558595796e-5,-2.0329994613703186e-9,-3.996308094008664e-4,-3.7373115060623765e-5,-2.0814266273117242e-9,-3.99384988712439e-4,-3.759249203934011e-5,-2.1295566994293455e-9,-3.9906271036433164e-4,-3.775472405457742e-5,-2.1681019565900638e-9,-3.987016202917927e-4,-3.7829193936713294e-5,-2.190272534708571e-9,-3.9834887836798216e-4,-3.780875269054671e-5,-2.193608295241445e-9,-3.980485538263064e-4,-3.7711034648837475e-5,-2.1805271009791155e-9,-3.978305141809676e-4,-3.75729460791574e-5,-2.157555028882998e-9,-3.9770366530245046e-4,-3.744037328616604e-5,-2.1335311050243456e-9,-3.9765504299890545e-4,-3.735613027207092e-5,-2.1172878104897155e-9,-3.976546923721489e-4,-3.7349520461290274e-5,-2.1154458093897077e-9,-3.976645841027215e-4,-3.7430385886824955e-5,-2.1309453027747796e-9,-3.9764857481630915e-4,-3.7588969553787584e-5,-2.16269710822895e-9,-3.975803240688057e-4,-3.78008285196242e-5,-2.206328545718188e-9,-3.9744725472712117e-4,-3.8034406317778884e-5,-2.2556260006985536e-9,-3.972504331599879e-4,-3.825848207709496e-5,-2.304116143937135e-9,-3.970016678082849e-4,-3.8447576129588216e-5,-2.346328968114079e-9,-3.967195597523896e-4,-3.85847761019194e-5,-2.378535140950185e-9,-3.9642580202908984e-4,-3.8662499543895226e-5,-2.3989805580658325e-9,-3.9614227617272086e-4,-3.8682093918056946e-5,-2.407778956750608e-9,-3.9588887819566896e-4,-3.865305185717903e-5,-2.406662527805749e-9,-3.9568165300506234e-4,-3.8592229765188354e-5,-2.3987512411946675e-9,-3.9553072846361295e-4,-3.852295871827556e-5,-2.3883867003944353e-9,-3.9543774790634314e-4,-3.847345808670505e-5,-2.3809297326839213e-9,-3.9539305003282924e-4,-3.847364136251777e-5,-2.382287114028292e-9,-3.9537371824626544e-4,-3.854948972135635e-5,-2.397910865159832e-9,-3.9534454501332527e-4,-3.8715107497318946e-5,-2.4312142198376576e-9,-3.952641095528031e-4,-3.896460770802551e-5,-2.4818178598376683e-9,-3.9509636929992376e-4,-3.9268210077471814e-5,-2.5445577437541576e-9,-3.9482433024793544e-4,-3.957704143478872e-5,-2.6102337078048142e-9,-3.944590437311957e-4,-3.983728465279895e-5,-2.66827632892777e-9,-3.9403811672779804e-4,-4.000826568398732e-5,-2.7102607573795425e-9,-3.936136334447647e-4,-4.007582516475161e-5,-2.732568246881595e-9,-3.932354489171214e-4,-4.005509986930359e-5,-2.7370829288428234e-9,-3.9293735005261444e-4,-3.9983124149450465e-5,-2.730028550413103e-9,-3.927304162113228e-4,-3.990616554842289e-5,-2.7198283129693987e-9,-3.926037104670152e-4,-3.986712394333029e-5,-2.7148744382944538e-9,-3.925300340245018e-4,-3.989630581245046e-5,-2.721726552456415e-9,-3.924740322961887e-4,-4.000673567964125e-5,-2.7439566656949624e-9,-3.9240044960224226e-4,-4.0193797020507027e-5,-2.781711773518208e-9,-3.9228100027058804e-4,-4.043835453992976e-5,-2.8319939335662753e-9,-3.920988397429943e-4,-4.071220949346134e-5,-2.8895632795737313e-9,-3.918501286346216e-4,-4.098447018044798e-5,-2.9482215655903276e-9,-3.915428759247042e-4,-4.1227354423628e-5,-3.002126932202798e-9,-3.911938860598323e-4,-4.142035578932055e-5,-3.0468184632871506e-9,-3.908248865257149e-4,-4.1552391217979064e-5,-3.079773043002786e-9,-3.904587877773441e-4,-4.162213920665322e-5,-3.100490246668063e-9,-3.901166540589265e-4,-4.163716629526032e-5,-3.1102498369570066e-9,-3.898154596295406e-4,-4.1612528206521545e-5,-3.1117545046976984e-9,-3.895663343014008e-4,-4.15692477287104e-5,-3.108816873159751e-9,-3.893729274795302e-4,-4.1532643167673676e-5,-3.106122424164249e-9,-3.8922964958095066e-4,-4.1530120920376783e-5,-3.108959796232942e-9,-3.8911993547672825e-4,-4.158773400879558e-5,-3.1226873440949273e-9,-3.890154780111431e-4,-4.172477613316137e-5,-3.1516937951170783e-9,-3.8887832398421657e-4,-4.1946490302301866e-5,-3.1978260954989524e-9,-3.8866798799491536e-4,-4.2236923527193535e-5,-3.2587392014650204e-9,-3.883541075724722e-4,-4.255643026767475e-5,-3.3271796700881e-9,-3.879309179981178e-4,-4.2848970224092304e-5,-3.3923178303223024e-9,-3.874252936797595e-4,-4.3060086306725585e-5,-3.4432808142227515e-9,-3.8689085406422015e-4,-4.315822428367038e-5,-3.473343383367832e-9,-3.863889877673784e-4,-4.3147231358598694e-5,-3.4823712443678767e-9,-3.859670303418556e-4,-4.306282988945449e-5,-3.476235200012914e-9,-3.856450179732965e-4,-4.29567332020061e-5,-3.4640108169692097e-9,-3.8541502948697586e-4,-4.287851646215824e-5,-3.4548315486565543e-9,-3.852493149355605e-4,-4.2863147399264384e-5,-3.4556957290431317e-9,-3.851111325842977e-4,-4.2926194690833945e-5,-3.4704676625369628e-9,-3.849641750666217e-4,-4.306488479653104e-5,-3.4997555963823663e-9,-3.8477904449105344e-4,-4.326230537360815e-5,-3.541315667419064e-9,-3.845368505256895e-4,-4.349269606106779e-5,-3.5907716079917845e-9,-3.842305470775176e-4,-4.372677264988809e-5,-3.6425556238611925e-9,-3.838644713396162e-4,-4.393662457551494e-5,-3.690971057311515e-9,-3.834524001017426e-4,-4.4099766813166904e-5,-3.731195660582228e-9,-3.8301455462920074e-4,-4.4201952462350065e-5,-3.760022682061001e-9,-3.8257407697839317e-4,-4.42385677285092e-5,-3.776219192075404e-9,-3.821534971407641e-4,-4.42146190699868e-5,-3.78049345493217e-9,-3.8177167811354886e-4,-4.414353188785048e-5,-3.775176115440497e-9,-3.814415037458072e-4,-4.404520966037506e-5,-3.763795599090132e-9,-3.811682438952999e-4,-4.3943745048884684e-5,-3.750686091708826e-9,-3.8094841874788385e-4,-4.3864881721126706e-5,-3.740645067077998e-9,-3.807690606418496e-4,-4.383310219135978e-5,-3.738542478624394e-9,-3.8060747113549404e-4,-4.3868015094879415e-5,-3.7487069852998005e-9,-3.8043212896826716e-4,-4.397964230952124e-5,-3.77392849591353e-9,-3.8020614214202126e-4,-4.416283549922484e-5,-3.814126337469046e-9,-3.7989477348660916e-4,-4.43925934432593e-5,-3.8651369785543476e-9,-3.7947723172862823e-4,-4.462397219530305e-5,-3.918497560033356e-9,-3.789593875598948e-4,-4.4800964639163135e-5,-3.96317158934382e-9,-3.783796554624242e-4,-4.487522211492297e-5,-3.989310173516736e-9,-3.7780028171270733e-4,-4.482731494297352e-5,-3.992457390009027e-9,-3.772848187336151e-4,-4.4677289049787794e-5,-3.975587279866091e-9,-3.768738589342568e-4,-4.4476302813578715e-5,-3.947557776892742e-9,-3.765731596693725e-4,-4.4284647088400656e-5,-3.919157973229763e-9,-3.763583684669076e-4,-4.415011216339383e-5,-3.8993178944763496e-9,-3.7618935482083637e-4,-4.409689236608701e-5,-3.893153730927883e-9,-3.760245905568384e-4,-4.412564418670974e-5,-3.901816527226052e-9,-3.758305281239963e-4,-4.4219737409461237e-5,-3.923290331122069e-9,-3.755856622553639e-4,-4.435289044370741e-5,-3.953443754350989e-9,-3.752809867131644e-4,-4.449563849145108e-5,-3.987032034029203e-9,-3.749186681115099e-4,-4.462002058569582e-5,-4.018598786101294e-9,-3.745100126286204e-4,-4.4702883418774216e-5,-4.043293546650498e-9,-3.740730272909859e-4,-4.472824114947566e-5,-4.057558558959361e-9,-3.736296275242296e-4,-4.4688796131403827e-5,-4.059581153155581e-9,-3.732025909944763e-4,-4.4586579231906474e-5,-4.049448013925343e-9,-3.7281240901532864e-4,-4.4432606619089756e-5,-4.029008414573869e-9,-3.724743361521061e-4,-4.4245446122239154e-5,-4.001513612609417e-9,-3.7219604683176886e-4,-4.404881315412431e-5,-3.971147889469539e-9,-3.719761559946201e-4,-4.386851506422404e-5,-3.942550572712875e-9,-3.718036869016746e-4,-4.3729011292962504e-5,-3.920339561133363e-9,-3.716585476438696e-4,-4.364979112255484e-5,-3.908574248164302e-9,-3.715130942800803e-4,-4.364173138022532e-5,-3.910078188684471e-9,-3.713350457921283e-4,-4.370352841575415e-5,-3.925586069346227e-9,-3.7109238380513845e-4,-4.3818651024463044e-5,-3.9528488394828995e-9,-3.707607845405598e-4,-4.395425389302266e-5,-3.986112633364346e-9,-3.7033298488081413e-4,-4.406449097933762e-5,-4.01659369367896e-9,-3.698271408886742e-4,-4.4100617660546984e-5,-4.034478858226037e-9,-3.6928850300559833e-4,-4.402761136944001e-5,-4.032309510928544e-9,-3.6877886950402043e-4,-4.3841161627626426e-5,-4.008397336623387e-9,-3.68354844176475e-4,-4.3574127073054776e-5,-3.9681227490621515e-9,-3.680456442399449e-4,-4.328536888044946e-5,-3.921896540270247e-9,-3.678438514995482e-4,-4.303605390842075e-5,-3.88088052714649e-9,-3.6771344272492777e-4,-4.286765668321312e-5,-3.853066475373028e-9,-3.6760744211130974e-4,-4.279271827029995e-5,-3.841571155142976e-9,-3.6748400287878505e-4,-4.279868404809011e-5,-3.845110101089603e-9,-3.6731503805980255e-4,-4.2858040425471004e-5,-3.859505188909107e-9,-3.670878782353395e-4,-4.293828963274571e-5,-3.879232548481663e-9,-3.668030259099282e-4,-4.300887457302174e-5,-3.8986149146387406e-9,-3.664707239972699e-4,-4.304497730933188e-5,-3.912649349560868e-9,-3.6610775839668016e-4,-4.302929792015812e-5,-3.917575783781463e-9,-3.657347454762509e-4,-4.295287241734541e-5,-3.911245377621743e-9,-3.653736412651876e-4,-4.2815417391808795e-5,-3.893281236926014e-9,-3.650452228879931e-4,-4.2625259277326516e-5,-3.865029786249455e-9,-3.6476641984123815e-4,-4.239866016669585e-5,-3.8293301914713776e-9,-3.645476115673927e-4,-4.215819173345968e-5,-3.790137077788593e-9,-3.643903517009124e-4,-4.192994909126311e-5,-3.752032661708107e-9,-3.642861036996599e-4,-4.173977362622034e-5,-3.71966635491313e-9,-3.642164327955368e-4,-4.160892942215545e-5,-3.697132215015159e-9,-3.641549093482707e-4,-4.1549858066543754e-5,-3.6872863278909777e-9,-3.6407072313266787e-4,-4.1562773802817286e-5,-3.6910546876715064e-9,-3.639337297548633e-4,-4.1633785245227165e-5,-3.706842402789998e-9,-3.637205402382895e-4,-4.17351263688552e-5,-3.730239026226662e-9,-3.634210733541716e-4,-4.182826882524199e-5,-3.7543125950062615e-9,-3.6304426985984744e-4,-4.187077889867399e-5,-3.770791848359487e-9,-3.626205679360432e-4,-4.1827023967553126e-5,-3.772195287003563e-9,-3.621980590998262e-4,-4.168082324199709e-5,-3.754465893092228e-9,-3.6183040236259707e-4,-4.144515737090433e-5,-3.719051514202747e-9,-3.615588707716338e-4,-4.1162290906568653e-5,-3.6731031521314867e-9,-3.61396538504054e-4,-4.089083947416614e-5,-3.627175685529882e-9,-3.6132387086853867e-4,-4.0684523717909506e-5,-3.5913642442355727e-9,-3.612984871112935e-4,-4.057381858184938e-5,-3.57191628278744e-9,-3.6127263538453984e-4,-4.0559572504084276e-5,-3.5699106570700582e-9,-3.6120844626298833e-4,-4.061897653845609e-5,-3.5820719173724824e-9,-3.610852118619653e-4,-4.0717434213808e-5,-3.6026558942381903e-9,-3.608991626924136e-4,-4.0819528038116416e-5,-3.625305177385425e-9,-3.6065929725962267e-4,-4.0895889554540754e-5,-3.644354040211268e-9,-3.6038248887045136e-4,-4.092611299111932e-5,-3.6555594903413846e-9,-3.6008948797461456e-4,-4.089924983103489e-5,-3.6564197922185135e-9,-3.598020583044798e-4,-4.0813324951301555e-5,-3.6462285238279096e-9,-3.5954081132138837e-4,-4.06746448702424e-5,-3.625955167087689e-9,-3.593232203764928e-4,-4.049706401005377e-5,-3.5980159849031315e-9,-3.591614767911618e-4,-4.030096233320472e-5,-3.5659792059672047e-9,-3.5906017581369425e-4,-4.011143008152642e-5,-3.5342021902016163e-9,-3.590142746293756e-4,-3.9955202075565014e-5,-3.5073577657903728e-9,-3.5900813493897933e-4,-3.9856294031816824e-5,-3.4898049410216977e-9,-3.590165228657977e-4,-3.9830885148132995e-5,-3.484809323888809e-9,-3.5900811619758537e-4,-3.988259608517585e-5,-3.4937187933879266e-9,-3.589513508368191e-4,-3.9999692692636196e-5,-3.515316951993148e-9,-3.588215300116031e-4,-4.015553409221791e-5,-3.5456245459726613e-9,-3.586074994236263e-4,-4.031277515563591e-5,-3.578347724118303e-9,-3.5831611404968134e-4,-4.0430887172238557e-5,-3.6060328154525907e-9,-3.5797300106842354e-4,-4.0475752013014714e-5,-3.621798180660383e-9,-3.5761860209188446e-4,-4.0429328523306393E-05,-3.6212892232579545e-9,-3.572993273213688e-4,-4.029669010026284e-5,-3.604282007806e-9,-3.5705516107877836e-4,-4.01074134564653e-5,-3.575261109336151e-9,-3.56907171864305e-4,-3.990910227757714e-5,-3.542466178765705e-9,-3.5685000952815797e-4,-3.975360446642084e-5,-3.51546370509442e-9,-3.568535768631939e-4,-3.968060851260814e-5,-3.502095452651505e-9,-3.568738387353768e-4,-3.9705767185260144e-5,-3.506123139270059e-9,-3.568676969066613e-4,-3.981847075560239e-5,-3.526548679024781e-9,-3.568050583051709e-4,-3.9988930782059254e-5,-3.558632436406407e-9,-3.56673931076042e-4,-4.017965642244248e-5,-3.595815124716367e-9,-3.564788653472729e-4,-4.035578451744323e-5,-3.631596410599711e-9,-3.562358193015023e-4,-4.049130472750036e-5,-3.6608170038248088e-9,-3.5596655047241536e-4,-4.057119598922274e-5,-3.6802591959901357e-9,-3.556941971200325e-4,-4.059099060777297e-5,-3.688733399766354e-9,-3.554403466676326e-4,-4.055530827745248e-5,-3.6868596918516015e-9,-3.552231502274103e-4,-4.047630480756108e-5,-3.6767210257453985e-9,-3.550558309426621e-4,-4.0372330118324426e-5,-3.6615103358701634e-9,-3.549450842029947e-4,-4.0266541812810685e-5,-3.6452166207126978e-9,-3.5488926874896996e-4,-4.018488717008979e-5,-3.6323023478007748e-9,-3.5487679855453013e-4,-4.0152863925988295e-5,-3.6272565039705226e-9,-3.5488564634128154e-4,-4.019082120417089e-5,-3.6339063053833576e-9,-3.548851821818268e-4,-4.030831790087331e-5,-3.6544836887830023e-9,-3.548412788564619e-4,-4.049915486044093e-5,-3.6886696467672877e-9,-3.547243771613122e-4,-4.073952000048624e-5,-3.733057102710848e-9,-3.5451840841679887e-4,-4.0991294984085655e-5,-3.781467494098887e-9,-3.5422725173712733e-4,-4.121070540757682e-5,-3.826258266543762e-9,-3.538757710829669e-4,-4.136004087638724e-5,-3.8603033376723175e-9,-3.53504443877645e-4,-4.1418554823238366e-5,-3.879000807542093e-9,-3.5315908496719346e-4,-4.1388813578662445e-5,-3.881636157749867e-9,-3.528788443462086e-4,-4.1296476166252965e-5,-3.871679975513234e-9,-3.5268596813342254e-4,-4.118364620333568e-5,-3.855939529728651e-9,-3.525801622010045e-4,-4.109766926615156e-5,-3.84277572321506e-9,-3.5253922633776333e-4,-4.107846753507557e-5,-3.839853266345332e-9,-3.5252589900936437e-4,-4.1148172477191464e-5,-3.852089139473279e-9,-3.5249873593641004e-4,-4.130635182893659e-5,-3.880468677924388e-9,-3.524232758040045e-4,-4.153215835850133e-5,-3.922098707575269e-9,-3.5227977421103506e-4,-4.179200475176239e-5,-3.971370515911904e-9,-3.5206553777650213e-4,-4.2049383308559924e-5,-4.02168889154195e-9,-3.517923456022032e-4,-4.22732706596802e-5,-4.067108127961648e-9,-3.5148116482799436e-4,-4.2443054420599876e-5,-4.103423630040207e-9,-3.5115656427665365e-4,-4.254990072284108e-5,-4.128602719456839e-9,-3.508422977149487e-4,-4.259571927212223e-5,-4.1426852963775e-9,-3.505584283820493e-4,-4.2591075740938084e-5,-4.1473814440995675e-9,-3.503196597354921e-4,-4.2553010117369735e-5,-4.145588069811775e-9,-3.5013425081355416e-4,-4.250315194947812e-5,-4.140977734111264e-9,-3.5000296732766683e-4,-4.246594915992028e-5,-4.1376949637137355e-9,-3.4991789475969336e-4,-4.2466442610266224e-5,-4.140069290235601e-9,-3.4986146693382345e-4,-4.252696515740907e-5,-4.152177172551735e-9,-3.498066307483597e-4,-4.266243723623054e-5,-4.177099698568324e-9,-3.497195305195477e-4,-4.287472041112924e-5,-4.215884841538455e-9,-3.495659175480646e-4,-4.31478811621325e-5,-4.266536865943841e-9,-3.4932096349046604e-4,-4.3447520413318964e-5,-4.323660910585198e-9,-3.4897946134101256e-4,-4.372699512012349e-5,-4.379354851830018e-9,-3.4856132871286715e-4,-4.394038767390347e-5,-4.425380590164783e-9,-3.481082489458901e-4,-4.4057719624662955e-5,-4.455829749739181e-9,-3.4767160295073125e-4,-4.407548988414973e-5,-4.469069235668393e-9,-3.4729671592580966e-4,-4.401761276765464e-5,-4.468122927844235e-9,-3.470101043459885e-4,-4.392694681445468e-5,-4.459514042827404e-9,-3.4681399513372885e-4,-4.3851866775344917e-5,-4.4512484058967996e-9,-3.466884675872167e-4,-4.383320048423082e-5,-4.450711814114548e-9,-3.465989335162038e-4,-4.3895141685846634e-5,-4.463003731704032e-9,-3.4650592936654275e-4,-4.404155435899953e-5,-4.4899789588464385e-9,-3.4637451628011674e-4,-4.425746261242522e-5,-4.53010146035591e-9,-3.46181278482088e-4,-4.451449326164072e-5,-4.579071229769213e-9,-3.459177599712526e-4,-4.477844122387709e-5,-4.631023039653653e-9,-3.4559013570456575e-4,-4.501691233562397e-5,-4.679952084717743e-9,-3.452158716119919e-4,-4.520525913805162e-5,-4.720973867124305e-9,-3.4481879495999203e-4,-4.532981541959789e-5,-4.7511223937350465e-9,-3.4442408015957925e-4,-4.538843813449534e-5,-4.769589480143558e-9,-3.440542089166945e-4,-4.5389084894805184e-5,-4.7774936884748956e-9,-3.437263070319252e-4,-4.534740102436488e-5,-4.77738576894948e-9,-3.4345067735983324e-4,-4.5284143124787143e-5,-4.772713716467364e-9,-3.4323003778487113e-4,-4.5222842054429787e-5,-4.76739691027074e-9,-3.4305901194424496e-4,-4.518761784714889e-5,-4.765524511352927e-9,-3.429236989818069e-4,-4.52007347246193e-5,-4.771068404277782e-9,-3.428015696217947e-4,-4.5279382227483e-5,-4.787430575127021e-9,-3.426625060919474e-4,-4.543136538951815e-5,-4.8166784633623644E-09,-3.424723163020663e-4,-4.565015092623224e-5,-4.858517932523486e-9,-3.4219991287895055e-4,-4.591113849483137e-5,-4.9093917591879784e-9,-3.418278103507178e-4,-4.6172490727433865e-5,-4.962406765475092e-9,-3.413624942079579e-4,-4.6383736833411844e-5,-5.008742784565768e-9,-3.408383536332906e-4,-4.650185695871724e-5,-5.040476506469633e-9,-3.4030994982600497e-4,-4.650853684917004e-5,-5.053640312983224e-9,-3.398339484712107e-4,-4.641889431496161e-5,-5.0498114969366615e-9,-3.394494690556336e-4,-4.627597601679743e-5,-5.03533340901495e-9,-3.3916682212753793e-4,-4.6134299214963423e-5,-5.018789578479401e-9,-3.389684970747851e-4,-4.60416761329767e-5,-5.0082068715226695e-9,-3.388189563580666e-4,-4.602714616208865e-5,-5.009119290870518e-9,-3.386770001401216e-4,-4.609734320211425e-5,-5.023773996416256e-9,-3.385060967047203e-4,-4.623938128036451e-5,-5.051224680335727e-9,-3.382808819877009e-4,-4.642712042057251e-5,-5.0879722483668916e-9,-3.3798991630609986e-4,-4.662831095629719e-5,-5.128915587919849e-9,-3.3763548039858775e-4,-4.6811176467318076e-5,-5.16845422831316e-9,-3.3723121913479214e-4,-4.694969103565298e-5,-5.201576989894772e-9,-3.367983998553216e-4,-4.7027084779648636e-5,-5.224733145745607e-9,-3.3636159656376993e-4,-4.703738149569362e-5,-5.236319126134027e-9,-3.359445418555763e-4,-4.698513068870385e-5,-5.236724866703748e-9,-3.3556670577894265e-4,-4.688372871358966e-5,-5.228009274195705e-9,-3.3524095168534554e-4,-4.675286146676685e-5,-5.213367901026198e-9,-3.3497229454820115e-4,-4.661567260074138e-5,-5.196589566113095e-9,-3.3475746495397114e-4,-4.6496053972731513e-5,-5.181629379466889e-9,-3.3458496403935856e-4,-4.6416067332450106e-5,-5.172290074158099e-9,-3.3443550989848553e-4,-4.639329367171046e-5,-5.171902756508261e-9,-3.3428303229029717e-4,-4.64378573046309e-5,-5.182859497219969e-9,-3.3409679136510515e-4,-4.654895942300463e-5,-5.205901867299847e-9,-3.3384565314112754e-4,-4.671137333713532e-5,-5.2392644177281354e-9,-3.3350538321036714e-4,-4.689360879171389e-5,-5.278078891925973e-9,-3.330683964243518e-4,-4.705068211910057e-5,-5.314688239576653e-9,-3.3255256023083976e-4,-4.713428191609814e-5,-5.340419822664278e-9,-3.3200274383931173e-4,-4.71097541805525e-5,-5.3486420687704235e-9,-3.314797357602177e-4,-4.6972927801329136e-5,-5.337761831657595e-9,-3.3103860655846234e-4,-4.67558263411006e-5,-5.312260680512601e-9,-3.307076685003807e-4,-4.651535747158061e-5,-5.28090259224886e-9,-3.30480214378984e-4,-4.6310845214460665e-5,-5.2532057684234896e-9,-3.303220348953695e-4,-4.618357322333606e-5,-5.236272390095169e-9,-3.301874844254908e-4,-4.61477186883596e-5,-5.233313814606197e-9,-3.3003452239918076e-4,-4.619282888887948e-5,-5.243799607308075e-9,-3.2983367667361197e-4,-4.6292393090905275e-5,-5.264447531098321e-9,-3.2957087722242947e-4,-4.6413211027825386e-5,-5.2904004316313725e-9,-3.2924630863698787e-4,-4.652281087401979e-5,-5.316302669134748e-9,-3.288714144932077e-4,-4.659436358753661e-5,-5.337217434375077e-9,-3.284653025069503e-4,-4.6609576179093505e-5,-5.349376028202255e-9,-3.2805103471112654e-4,-4.656006986482792e-5,-5.35069069746132e-9,-3.2765205016821133e-4,-4.6447489372098676E-05,-5.340948027169847e-9,-3.2728894386480116e-4,-4.628254233746377e-5,-5.321669265696422e-9,-3.2697676918230653e-4,-4.608314579988514e-5,-5.295709141439522e-9,-3.2672307735294367e-4,-4.5871826451843845e-5,-5.266715731905392e-9,-3.265269163253492e-4,-4.567268490866273e-5,-5.238595811180517e-9,-3.263787833299249e-4,-4.5508326939279494e-5,-5.2150856928611045e-9,-3.262613612892449e-4,-4.5396953226487785e-5,-5.199410066665686e-9,-3.26150973687626e-4,-4.5349627530952965e-5,-5.193932690177878e-9,-3.2601983786595027e-4,-4.5367769831319596e-5,-5.1997081785981995e-9,-3.2583937029624085e-4,-4.544098475670977e-5,-5.215918457321146e-9,-3.2558503734766617e-4,-4.554569690961154e-5,-5.2393381578890325e-9,-3.252430307869566e-4,-4.5645933134909383e-5,-5.264196058241929e-9,-3.248178384294444e-4,-4.56983335628188e-5,-5.282923877448141e-9,-3.2433764411315686e-4,-4.566298738150629e-5,-5.288101154267343e-9,-3.238524934028116e-4,-4.55187894312056e-5,-5.275271384380036e-9,-3.2342122598822694e-4,-4.527677794176033e-5,-5.245365700942163e-9,-3.230898582700321e-4,-4.498163827286755e-5,-5.205044425823437e-9,-3.228725935037573e-4,-4.469651453348592e-5,-5.164266989512154e-9,-3.2274750094473347e-4,-4.4478159074842894e-5,-5.13235180184745e-9,-3.226689152698676e-4,-4.435700005748701e-5,-5.114830829337623e-9,-3.225871774071815e-4,-4.433186738587753e-5,-5.112508862693316e-9,-3.2246425807672813e-4,-4.437776497525427e-5,-5.1224162241922625e-9,-3.2228031504722966e-4,-4.445858657848031e-5,-5.139485592758135e-9,-3.2203286741891803e-4,-4.4538062588412724E-05,-5.1580709737048375e-9,-3.217324318411406e-4,-4.4586481028774453E-05,-5.173027330322962e-9,-3.213975733128406e-4,-4.458364652752997e-5,-5.180397855754135e-9,-3.210507152123642e-4,-4.451955192695055e-5,-5.177821168001773e-9,-3.20714821071863e-4,-4.43939735421001e-5,-5.164703758157465e-9,-3.2041064399458284e-4,-4.421548906702248e-5,-5.1421458139077516e-9,-3.2015437220027257e-4,-4.400000934734236e-5,-5.112638550353013e-9,-3.199556359923085e-4,-4.3768795235697604e-5,-5.079609309330488e-9,-3.1981598750983545e-4,-4.354585021416585e-5,-5.046904699548832e-9,-3.197281840014739e-4,-4.3354726543107915e-5,-5.018289250760496e-9,-3.196765829420705e-4,-4.321510531744181e-5,-4.997015044656991e-9,-3.1963870183165634e-4,-4.313959806056474e-5,-4.985452141399794e-9,-3.195878597550035e-4,-4.313112514042971e-5,-4.984725308729074e-9,-3.1949679113388595e-4,-4.318123126172128e-5,-4.994338339842217e-9,-3.1934206103072054e-4,-4.326970683766678e-5,-5.0118522340722995e-9,-3.191090769027233e-4,-4.336592775766331e-5,-5.032784985900198e-9,-3.1879727330728615e-4,-4.3432619842126424e-5,-5.0510003085641095e-9,-3.184242585414621e-4,-4.3432905625344e-5,-5.059844813029959e-9,-3.180265341602522e-4,-4.3340679734383175e-5,-5.054050804727019e-9,-3.1765375634226675e-4,-4.315212077889462e-5,-5.031931810784182e-9,-3.173550483018549e-4,-4.289299386726835e-5,-4.996837554368338e-9,-3.1716080997909414e-4,-4.261505262909454e-5,-4.9567039021442e-9,-3.170692069796597e-4,-4.237923706416617e-5,-4.921374850462595e-9,-3.170465026363197e-4,-4.223264659485568e-5,-4.898891858407981e-9,-3.170418960140496e-4,-4.21921256965402e-5,-4.892790866082162e-9,-3.1700761388347835e-4,-4.224278875220216e-5,-4.901672313350512e-9,-3.169131831034806e-4,-4.234911923149743e-5,-4.920678900423363e-9,-3.16749371627084e-4,-4.246978287171236e-5,-4.943593716023741e-9,-3.165243898644444e-4,-4.2568904032282556e-5,-4.964541739482594e-9,-3.1625720934575716e-4,-4.262161789567898e-5,-4.9789925323940574e-9,-3.159714090148497e-4,-4.2615163483100204e-5,-4.984192983307216e-9,-3.1569080936814757e-4,-4.254769010175503e-5,-4.979239205595006e-9,-3.154366980394452e-4,-4.242640923152246e-5,-4.964927408765917e-9,-3.1522594108550356e-4,-4.226576420878259e-5,-4.9434488536958256e-9,-3.150694594909588e-4,-4.2085617046374826e-5,-4.9179780034059015e-9,-3.1497088780468846e-4,-4.190919872197873e-5,-4.892216555795521e-9,-3.1492551795328115e-4,-4.1760510317359374e-5,-4.869937621819285e-9,-3.1491993926755705e-4,-4.166103135750512e-5,-4.85453930904946e-9,-3.1493292291119807e-4,-4.162602317937051e-5,-4.8486082924002386e-9,-3.149378852148921e-4,-4.166109759027768e-5,-4.853496717228234e-9,-3.149068763252208e-4,-4.1759869297922245e-5,-4.8689420569251265e-9,-3.1481563886056355e-4,-4.1903492821241635e-5,-4.892817724760096e-9,-3.146489018901334e-4,-4.206263788736928e-5,-4.921152563389806e-9,-3.1440486675449474e-4,-4.220199291018188e-5,-4.948556753677259e-9,-3.1409782736031844e-4,-4.2286972882281444e-5,-4.969141215356648e-9,-3.1375783301927705e-4,-4.229193221838251e-5,-4.9779020409811375e-9,-3.1342629281164673e-4,-4.2208473219180394e-5,-4.972322659694826e-9,-3.131469410284784e-4,-4.205134100763301e-5,-4.953675901336095e-9,-3.129532228356514e-4,-4.185850783786602e-5,-4.927339367737182e-9,-3.128559402293983e-4,-4.168268583803075e-5,-4.901590331357037e-9,-3.128372712174129e-4,-4.157504774094596e-5,-4.884996661975068e-9,-3.1285591758021213e-4,-4.1567376446027606e-5,-4.883435028626847e-9,-3.1286216261514294e-4,-4.166161325502891e-5,-4.898203035129861e-9,-3.128152510161355e-4,-4.1832011412133305e-5,-4.926093299613993e-9,-3.1269456478840265e-4,-4.2037319835952676e-5,-4.96108661782143e-9,-3.1250114325379443e-4,-4.2235381879465134e-5,-4.996540702951394e-9,-3.1225205877241923e-4,-4.239361488219513e-5,-5.026892948270938e-9,-3.119724750885652e-4,-4.249330688871886e-5,-5.048533140222312e-9,-3.116889276893549e-4,-4.252921835778996e-5,-5.059987008882629e-9,-3.1142503078342897e-4,-4.25069961860904e-5,-5.0616921955618265e-9,-3.111992283429283e-4,-4.244023805497469e-5,-5.055583300773006e-9,-3.1102368764590496e-4,-4.234797844643438e-5,-5.044617784933671e-9,-3.1090358734081304e-4,-4.22526006575234e-5,-5.032321067688745e-9,-3.108364399804756e-4,-4.217778740604939e-5,-5.022387283844178e-9,-3.108115257297438e-4,-4.214600986581236e-5,-5.018313830814128e-9,-3.1080993296466673e-4,-4.2175257475328325e-5,-5.023008475613783e-9,-3.1080593916080375e-4,-4.227521362395652e-5,-5.038322479284464e-9,-3.1077034837130563e-4,-4.244369565068855e-5,-5.06453984568056e-9,-3.1067585579162317e-4,-4.266468404943358e-5,-5.099969884051941e-9,-3.105035849258535e-4,-4.290936505875487e-5,-5.140877929168914e-9,-3.1024899896644803e-4,-4.314094465863473e-5,-5.181956628701638e-9,-3.0992505626402714e-4,-4.332264950955875e-5,-5.217361941575282e-9,-3.095610883380589e-4,-4.342700451466909e-5,-5.2421145403966415e-9,-3.091971222357173e-4,-4.3443817524911114e-5,-5.253502474396329e-9,-3.088746927985775e-4,-4.338445254519018e-5,-5.252067765269822e-9,-3.086262289687441e-4,-4.328075377912741e-5,-5.241813665026146e-9,-3.084657459880443e-4,-4.317815751980895e-5,-5.229427402694319e-9,-3.083838136062314e-4,-4.312402180818095e-5,-5.222569664693657e-9,-3.083492587428513e-4,-4.315408297432371e-5,-5.227650075739371e-9,-3.083181203766566e-4,-4.328165458806027e-5,-5.247856867561176e-9,-3.082471429138195e-4,-4.349411061585933e-5,-5.2822613795529054e-9,-3.081064848257633e-4,-4.375827146070421e-5,-5.3263709887758225e-9,-3.0788661043989416e-4,-4.403198008161343e-5,-5.373792020884821e-9,-3.0759759139367557e-4,-4.4276497491867025e-5,-5.418190385136207e-9,-3.072628362842785e-4,-4.4465056129220834e-5,-5.454790327401472e-9,-3.0691106900856074e-4,-4.458588788817899e-5,-5.481074258715986e-9,-3.0656967318466223e-4,-4.4640878311394534e-5,-5.496772186340735e-9,-3.0626062010192915e-4,-4.464213768265969e-5,-5.5034243148592386e-9,-3.0599865177202766e-4,-4.460833959835805e-5,-5.503787246380918e-9,-3.057908013060658e-4,-4.4561687503291136e-5,-5.501265100167681e-9,-3.0563641143263365e-4,-4.4525580714277986e-5,-5.4994619326435316e-9,-3.0552715792361276e-4,-4.4522582031122806e-5,-5.501861033144501e-9,-3.0544706109613843e-4,-4.457210286773981e-5,-5.511548919490009e-9,-0.00030537297561927964,-4.4687381552856436e-5,-5.5308628299553145e-9]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json new file mode 100644 index 0000000000..777c056896 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":8000,"numberOfSamples":1000,"samples":[-3.0527640252829807e-4,-4.487182696660493e-5,-5.56088448082571e-9,-3.051274863200565e-4,-4.511556230951057e-5,-5.6008437940501195e-9,-3.049014822200931e-4,-4.5393887171247894e-5,-5.647698563779582e-9,-3.045865825423837e-4,-4.566978863347711e-5,-5.696284894052496e-9,-3.041902526794886e-4,-4.590165294193654e-5,-5.7403050551512475e-9,-3.0374053440293064e-4,-4.605480630272924e-5,-5.774008768966934e-9,-3.032803042778928e-4,-4.6112832816305496e-5,-5.793973590280497e-9,-3.028557483245855e-4,-4.608383761616052e-5,-5.800251345674449e-9,-3.025032355259023e-4,-4.599882516164128e-5,-5.796427523208801e-9,-3.022393949447573e-4,-4.5902896545994185e-5,-5.788631331365615e-9,-3.020574267495867e-4,-4.5842714571687194e-5,-5.7838921806700334e-9,-3.019300694661608e-4,-4.585434504667538e-5,-5.7883384069394884e-9,-3.0181769376023336e-4,-4.595468543172006e-5,-5.805682519418446e-9,-3.0167899235319e-4,-4.613834629665025e-5,-5.83635658405951e-9,-3.014813398322303e-4,-4.638044052124705e-5,-5.877534282545917e-9,-3.0120806044062887e-4,-4.664417952898078e-5,-5.924029708374941e-9,-3.008608032921932e-4,-4.689076983299546e-5,-5.969769115749644e-9,-3.004568895018775e-4,-4.70885065576558e-5,-6.009334760264992e-9,-3.000232042040917e-4,-4.7218579979817117e-5,-6.039104695872155e-9,-2.995891071912802e-4,-4.72766796425179e-5,-6.057736521969508e-9,-2.9918053358217385e-4,-4.7271135672653113e-5,-6.066024169441235e-9,-2.9881634126882297e-4,-4.721922325858296e-5,-6.066350982343671e-9,-2.9850682571005375e-4,-4.714317647578276e-5,-6.0620073426491385e-9,-2.982536857147729e-4,-4.706682514849363e-5,-6.056588919504954e-9,-2.9805063249734796e-4,-4.7013055973122464e-5,-6.053577596287479e-9,-2.978841024009395e-4,-4.700177778028711e-5,-6.0560846647952315e-9,-2.97733963612634e-4,-4.7047861809806975e-5,-6.066639640409404e-9,-2.975745746966664e-4,-4.715862391952254e-5,-6.086875521052076e-9,-2.9737697702912646e-4,-4.733079302488828e-5,-6.117026762619431e-9,-2.9711318240313096e-4,-4.754766231303244e-5,-6.1553289826818086e-9,-2.967630328757633e-4,-4.777820603997843e-5,-6.1976547684464505e-9,-2.963225516133362e-4,-4.7980702799556336e-5,-6.237878353608434e-9,-2.9581034269964766e-4,-4.8112531767448336e-5,-6.26929277722192e-9,-2.952671701271256e-4,-4.8144449769795835e-5,-6.286810452998715e-9,-2.9474584957997816e-4,-4.807330163392616e-5,-6.28897999422168e-9,-2.942942146728656e-4,-4.7925741507049555e-5,-6.278697823265868e-9,-2.939390776646052e-4,-4.774982986598883e-5,-6.2621933111198565e-9,-2.9367888471910724e-4,-4.759858957460034e-5,-6.246887112949443e-9,-2.9348722961036977e-4,-4.751366495959348e-5,-6.239195834786848e-9,-2.933236015115482e-4,-4.7515401306169104e-5,-6.243051945843658e-9,-2.9314581436119905e-4,-4.760093779409941e-5,-6.2593279168203955e-9,-2.9292007500896937e-4,-4.774844549298213e-5,-6.286013467788338e-9,-2.926269983387905e-4,-4.792463505513392e-5,-6.318926256564662e-9,-2.9226350769051096e-4,-4.80930810595307e-5,-6.352759512595941e-9,-2.918412941194005e-4,-4.822168516898902e-5,-6.382264012712696e-9,-2.9138274761924426e-4,-4.8288192173938596e-5,-6.4033284884177525e-9,-2.9091546827443674e-4,-4.828307144331461e-5,-6.4137142155758484e-9,-2.904666459630382e-4,-4.820960531850297e-5,-6.413290100567614e-9,-2.9005845372039675e-4,-4.808169188193544e-5,-6.403779607548024e-9,-2.897051121066428e-4,-4.7920298339887756e-5,-6.388175539851937e-9,-2.894117280467004e-4,-4.77495594070045e-5,-6.3700487926475646e-9,-2.891745460224369e-4,-4.7593309240161246e-5,-6.352958916462981e-9,-2.889819981834109e-4,-4.7472392700331755e-5,-6.340071065896678e-9,-2.8881605249833365e-4,-4.740260960082055e-5,-6.333942633116508e-9,-2.886536932128631e-4,-4.739292957383811e-5,-6.336355114475078e-9,-2.884687014832789e-4,-4.7443667570689896e-5,-6.348050662755428e-9,-2.8823427250380447e-4,-4.754452904089668e-5,-6.368308311532382e-9,-2.879272735231633e-4,-4.767303651414079e-5,-6.394467888137689e-9,-2.875345818250315e-4,-4.7794856179294424e-5,-6.4217381728864196e-9,-2.8706055734247936e-4,-4.786832012302628e-5,-6.443756519509059e-9,-2.865324198422822e-4,-4.785486234755549e-5,-6.4542037210419195e-9,-2.859983895327293e-4,-4.773390713864742e-5,-6.449179015088165e-9,-2.8551497623516194e-4,-4.7515537099475336e-5,-6.429222290163076e-9,-2.8512656698742036e-4,-4.724172825041583e-5,-6.399602792241161e-9,-2.8484791237568235e-4,-4.697228518879425e-5,-6.368414825098121e-9,-2.846599731981497e-4,-4.676227057336778e-5,-6.343524830079535e-9,-2.845204990113826e-4,-4.664360730421715e-5,-6.330077698450703e-9,-2.8438137789211793e-4,-4.661903031892221e-5,-6.32954910609419e-9,-2.842033332610527e-4,-4.666740117899054e-5,-6.340163616828402e-9,-2.8396352830062366e-4,-4.6754274987887116e-5,-6.357961127061933e-9,-2.836566692220362e-4,-4.684229725179311e-5,-6.377959739889069e-9,-2.8329216427076527e-4,-4.689886773239183e-5,-6.395189096969708e-9,-2.828896488527907e-4,-4.6900720390375284e-5,-6.405540596281919e-9,-2.824742018907562e-4,-4.6836037546351875e-5,-6.4064023526000905e-9,-2.8207178859335354e-4,-4.670471097933904e-5,-6.397002591025266e-9,-2.817052464373959e-4,-4.6517083949337426e-5,-6.378389721142845e-9,-2.8139115347079264e-4,-4.629149712487325e-5,-6.3530658178796655e-9,-2.811378256204399e-4,-4.605106192105769e-5,-6.324396845660935e-9,-2.8094456582733565e-4,-4.582011369839805e-5,-6.295969795469077e-9,-2.8080213121061873e-4,-4.562084808863251e-5,-6.271061910825657e-9,-2.806941282722342e-4,-4.547056083835451e-5,-6.252305778500468e-9,-2.805989529923734e-4,-4.537959014034061e-5,-6.241511789741509e-9,-2.80492067241958e-4,-4.5349843601162954e-5,-6.239532828776588e-9,-2.803485913613245e-4,-4.5373805665704785e-5,-6.246068068716576e-9,-2.8014639891832464e-4,-4.543399639996473e-5,-6.259380228216586e-9,-2.7987013346108646e-4,-4.550321157816095e-5,-6.276047783203556e-9,-2.795162996405821e-4,-4.5546626057891795e-5,-6.291045688354151e-9,-2.790984739623287e-4,-4.5527321372703615e-5,-6.298505516465384e-9,-2.7865004000894166e-4,-4.541620148794469e-5,-6.2933199008508685e-9,-2.7822043288384707e-4,-4.520484869900707e-5,-6.273276588202333e-9,-2.7786184532760936e-4,-4.4915535087074116e-5,-6.240723143326448e-9,-2.776091852793529e-4,-4.459975553570474e-5,-6.202458787212566e-9,-2.774638632702066e-4,-4.432123225548417e-5,-6.167368360824802e-9,-2.7739275622409024e-4,-4.41307893297388e-5,-6.142942429461774e-9,-2.7734363791847937e-4,-4.404793703195258e-5,-6.132712569902154e-9,-2.772666481119829e-4,-4.405873879426259e-5,-6.135803693451539e-9,-2.7712954630060494e-4,-4.41272344392883e-5,-6.148198003690473e-9,-2.769220926915838e-4,-4.421078330515423e-5,-6.164515668643785e-9,-2.7665243775120893e-4,-4.4271847046803456e-5,-6.179465722684056e-9,-2.7634044414996943e-4,-4.42840858576599e-5,-6.188763867311319e-9,-2.760112787880964e-4,-4.4233969441495255e-5,-6.1896325079837635e-9,-2.7569053678467995e-4,-4.4119908832911274e-5,-6.1810143630256235e-9,-2.7540081443001705e-4,-4.395037973603709e-5,-6.1635500652351195e-9,-2.7515925763830574e-4,-4.374163186724933e-5,-6.13931893200916e-9,-2.7497583229343773e-4,-4.351509382685275e-5,-6.1113765985356755e-9,-2.7485228599034487e-4,-4.3294504323835476e-5,-6.083191373407955e-9,-2.747818899337699e-4,-4.3102814240736015e-5,-6.0580978536060394e-9,-2.7475014030275356e-4,-4.2959058861573174e-5,-6.038863549547172e-9,-2.747364727847155e-4,-4.287561578709453e-5,-6.027414092691353e-9,-2.7471679197166814e-4,-4.2856211898555225e-5,-6.024680664675889e-9,-2.74666552518033e-4,-4.2894856634732136e-5,-6.0304870842090665e-9,-2.745641634544586e-4,-4.297583426922976e-5,-6.043429961128174e-9,-2.7439449831047824e-4,-4.307484329777695e-5,-6.060781782144661e-9,-2.7415239183585174e-4,-4.316139154284506e-5,-6.078538519547611e-9,-2.738458939963984e-4,-4.320289628151456e-5,-6.0918223659286445e-9,-2.7349833665268886e-4,-4.317111271140737e-5,-6.095829254040278e-9,-2.731473286401864e-4,-4.305077016877184e-5,-6.087300751131777e-9,-2.728384066406977e-4,-4.284850797286421e-5,-6.0661306830069746e-9,-2.726122464122091e-4,-4.2597682445614436e-5,-6.036317211131248e-9,-2.724883882208636e-4,-4.2353186226421395e-5,-6.005346149629137e-9,-2.724538993112942e-4,-4.21739660621937e-5,-5.981721324392774e-9,-2.7246601864680027e-4,-4.209994110375406e-5,-5.971667694606237e-9,-2.724694960632973e-4,-4.2136627145050584e-5,-5.976871636177898e-9,-2.724184831524113e-4,-4.225643997788255e-5,-5.9944559253544774e-9,-2.7229051896981396e-4,-4.241362759713718e-5,-6.018773549341146e-9,-2.720878961454436e-4,-4.2562043557314734e-5,-6.043635716054438e-9,-2.718303929497391e-4,-4.266714123706157e-5,-6.063913242192316e-9,-2.715458512132313e-4,-4.271024379125761e-5,-6.076285881259704e-9,-2.712626659453091e-4,-4.268748746246162e-5,-6.07938776767281e-9,-2.710052329722968e-4,-4.260653559518088e-5,-6.073631332430156e-9,-2.707916949070718e-4,-4.248307887576607e-5,-6.060863861100873e-9,-2.7063291676093104e-4,-4.233782096456377e-5,-6.043919283576518e-9,-2.70531999054325e-4,-4.2193858972839276e-5,-6.026112658845783e-9,-2.7048412159524855e-4,-4.207417276834723e-5,-6.010749252660998e-9,-2.704768085276078e-4,-4.199898085891688e-5,-6.0007083249929064e-9,-2.7049091718653486e-4,-4.198292846456885e-5,-5.998122765150181e-9,-2.705026716692996e-4,-4.203245930769175e-5,-6.0041500657964715e-9,-2.704867786001442e-4,-4.2143960157053555e-5,-6.018813110137525e-9,-2.7042033326989443e-4,-4.2303217237346e-5,-6.0408918160634616e-9,-2.702869966792254e-4,-4.248659500899885e-5,-6.067897441023674e-9,-2.7008072908028737e-4,-4.26641123975258e-5,-6.096212887106141e-9,-2.698083301299173e-4,-4.2804202514864496e-5,-6.121495193355481e-9,-2.6949017078992116e-4,-4.287971029548579e-5,-6.139410707238995e-9,-2.6915846953213103e-4,-4.287457712691834e-5,-6.146692366322419e-9,-2.688523188530164e-4,-4.2790136468926805e-5,-6.142330933965789e-9,-2.6860905054935876e-4,-4.2648942394378234e-5,-6.128480097984698e-9,-2.684529386021688e-4,-4.249325511328419e-5,-6.110525799006696e-9,-2.683846561272461e-4,-4.237577162193681e-5,-6.0958916495610374e-9,-2.6837713845480256e-4,-4.2343242447415576e-5,-6.091676533973367e-9,-2.6838259865424467e-4,-4.241897119821026e-5,-6.1020278393601044e-9,-2.6834954243159544e-4,-4.259356052706968e-5,-6.126618946744287e-9,-2.682414538672124e-4,-4.282968580925502e-5,-6.161071746178656e-9,-2.680473788683876e-4,-4.307777590451198e-5,-6.198928228542621e-9,-2.6778068952418554e-4,-4.329323584064263e-5,-6.233932842908828e-9,-2.6746984498891765e-4,-4.3447294758245534e-5,-6.261585257801009e-9,-2.6714767994234935e-4,-4.3529579126087075e-5,-6.279696539448954e-9,-2.6684354540698494e-4,-4.3545106782298875e-5,-6.288235271926127e-9,-2.6657927046700944e-4,-4.3509317188260445e-5,-6.288838671033637e-9,-2.6636794026195363e-4,-4.3443465401146905e-5,-6.284232359286678e-9,-2.662140688653375e-4,-4.33711394559145e-5,-6.277670357631493e-9,-2.661141777281877e-4,-4.331570058397092e-5,-6.272450417208355e-9,-2.660574130223562e-4,-4.329813146063895e-5,-6.271533343649169e-9,-2.6602631028516745e-4,-4.3334832510506525e-5,-6.277259574999488e-9,-2.6599810856047266e-4,-4.3435186752350394e-5,-6.291119283070944e-9,-2.6594709819864e-4,-4.35991710667151e-5,-6.313534449691571e-9,-2.6584826187483416e-4,-4.3815728146144786e-5,-6.3436577175095264e-9,-2.6568197080015167e-4,-4.406282185693006e-5,-6.379260979809167e-9,-2.654388737832523e-4,-4.4309976961368614e-5,-6.416844899921613e-9,-2.651235904796523e-4,-4.452352360454744e-5,-6.45208973946681e-9,-2.6475574490715504e-4,-4.467379291793127e-5,-6.480660100582804e-9,-2.643674413816663e-4,-4.474263772198858e-5,-6.499235785255884e-9,-2.639972203386808e-4,-4.472932230357101e-5,-6.506524425656316e-9,-2.636814333534693e-4,-4.4652981742684745e-5,-6.50394943475184e-9,-2.6344474410546685e-4,-4.455031096217054e-5,-6.4957052750673075e-9,-2.6329215242018296e-4,-4.446797824163044e-5,-6.487971527226249e-9,-2.6320539661309406e-4,-4.445066132419316e-5,-6.487318143828218e-9,-2.63146231141766e-4,-4.452761326611089e-5,-6.498693327228091e-9,-2.630670795117471e-4,-4.4702593314460794e-5,-6.523735117410233e-9,-2.629259962418986e-4,-4.495205403355389e-5,-6.560195481816707e-9,-2.626998326199566e-4,-4.523322969000845e-5,-6.6028055138425835e-9,-2.6238984542081514e-4,-4.5498615964264204e-5,-6.645151128486782e-9,-2.620181139265042e-4,-4.57101034480172e-5,-6.681643636040315e-9,-2.6161796896905014e-4,-4.584720776675456e-5,-6.7088001834994565e-9,-2.6122365300701173e-4,-4.590801043953323e-5,-6.725594759670876e-9,-2.608629732320002e-4,-4.590508421570969e-5,-6.733110680725014e-9,-2.605538971319134e-4,-4.585973386898697e-5,-6.733869753505527e-9,-2.6030410219870376e-4,-4.5796853823059685e-5,-6.731122265893311e-9,-2.601120119629486e-4,-4.574121346938611e-5,-6.728248726724007e-9,-2.5996821459528486e-4,-4.571499884470834e-5,-6.728333811525041e-9,-2.5985675252670267e-4,-4.573601546615178e-5,-6.733900781581118e-9,-2.597563470776258e-4,-4.581593891770877e-5,-6.7467347208660815e-9,-2.596420276961034e-4,-4.5958327928148174e-5,-6.76770494879153e-9,-2.594877524327709e-4,-4.6156630892450285e-5,-6.796534200413236e-9,-2.5927042693107434e-4,-4.6392942692009576e-5,-6.8315565589601714e-9,-2.589751849875842e-4,-4.663871238482509e-5,-6.86962752289666e-9,-2.586008062635789e-4,-4.685864046342157e-5,-6.906416881867135e-9,-2.5816311466290005e-4,-4.7018104873896896e-5,-6.937219567577798e-9,-2.5769402554871504e-4,-4.70926588010539e-5,-6.9581636155644655e-9,-2.5723517884218273e-4,-4.707644773329669e-5,-6.967428938305518e-9,-2.568273908815006e-4,-4.6986025040791123e-5,-6.966001210496018e-9,-2.564992393431867e-4,-4.685748280218821e-5,-6.957630999254399e-9,-2.5625871902160277e-4,-4.6737400412949545e-5,-6.947966529409689e-9,-2.5609074998136574e-4,-4.667043573132832e-5,-6.943105351110571e-9,-2.5596122517727485e-4,-4.6687347367702306e-5,-6.947967062704738e-9,-2.5582634783583117e-4,-4.6796866950713174e-5,-6.964938644351132e-9,-2.5564461158371896e-4,-4.698373076282578e-5,-6.993209196686726e-9,-2.553879109156633e-4,-4.7213518226825917E-05,-7.029044733220987e-9,-2.5504832832596024e-4,-4.744277599023395e-5,-7.066933407213379e-9,-2.5463858429774843e-4,-4.7630969964505535e-5,-7.1011838454172516e-9,-2.541865650862485e-4,-4.775023325017012e-5,-7.127396703046114e-9,-2.537265402404863e-4,-4.7790107831489385e-5,-7.143345909601783e-9,-2.532904918374822e-4,-4.775683549761495e-5,-7.1491178104008635e-9,-2.529021042786563e-4,-4.766889086299671e-5,-7.146663004807935e-9,-2.525741732148423e-4,-4.7551249353078e-5,-7.139062192878236e-9,-2.5230871169483677e-4,-4.743029000875771e-5,-7.129782907503167e-9,-2.5209851175530824e-4,-4.733012368995658e-5,-7.12209759254885e-9,-2.519291245187472e-4,-4.7270279788107355e-5,-7.1187265860613594e-9,-2.517806968882801e-4,-4.726422556842384e-5,-7.12166746585097e-9,-2.5162963986732293e-4,-4.731809415808857e-5,-7.132097650423624e-9,-2.514505510713131e-4,-4.742927313984141e-5,-7.1502341423829864e-9,-2.512190030433243e-4,-4.758501628393123e-5,-7.175103678264232e-9,-2.5091568236328035e-4,-4.7761815907209246e-5,-7.204305121348925e-9,-2.5053181294401e-4,-4.7926849500478765e-5,-7.233991717484305e-9,-2.500746237911642e-4,-4.804301276238442e-5,-7.259360514494356e-9,-2.495701519604955e-4,-4.8078046570921506e-5,-7.275783141609628e-9,-2.490601882212913e-4,-4.8015746621047336e-5,-7.280321967292176e-9,-2.4859206990471175e-4,-4.786450499113676e-5,-7.272987851368456e-9,-2.4820404096295365e-4,-4.7657974491023386e-5,-7.2570490683069305e-9,-2.479123719305355e-4,-4.744593983612639e-5,-7.238137844085153e-9,-2.477062542180496e-4,-4.7278801363755583e-5,-7.2225323219480234e-9,-2.475523859045091e-4,-4.719243023421515e-5,-7.2153509223338515e-9,-2.4740634073176207e-4,-4.7199163254914456e-5,-7.21928276128765e-9,-2.472256149075255e-4,-4.728689651818537e-5,-7.234113502680999e-9,-2.469800996566623e-4,-4.742481447800407e-5,-7.2570090226968695e-9,-2.4665781472638505e-4,-4.757279635380423e-5,-7.283374548153914e-9,-2.462655369996502e-4,-4.769151536169288e-5,-7.308038135183422e-9,-2.458251322065457e-4,-4.775085456159175e-5,-7.326465854721028e-9,-2.4536711100036463e-4,-4.77350886691006e-5,-7.3357152755733405e-9,-2.4492329122390537e-4,-4.764420066221715e-5,-7.334911212083219e-9,-2.4452039783219196e-4,-4.749169496663902e-5,-7.3251748443696005e-9,-2.441758732145271e-4,-4.7300134577938174e-5,-7.309112821670338e-9,-2.4389627170717684e-4,-4.7095968591426874e-5,-7.2900891206745445e-9,-2.4367780651202367e-4,-4.6904922721911e-5,-7.2715143086660904e-9,-2.4350820404063506e-4,-4.674862028056588e-5,-7.2563236900772534e-9,-2.4336901910568495e-4,-4.6642494199979074e-5,-7.246701350541432e-9,-2.4323787902715116e-4,-4.6594604978692496e-5,-7.243991435989502e-9,-2.4309057272598025e-4,-4.6604855006113405e-5,-7.248666445835073e-9,-2.4290326713360635e-4,-4.666429753503088e-5,-7.260234391154556e-9,-2.4265533867043101e-4,-4.67546250155109e-5,-7.2770527231963495e-9,-2.4233328045250883e-4,-4.684845105661854e-5,-7.29615811529741e-9,-2.4193563237893614e-4,-4.6911622727816726e-5,-7.313363425619466e-9,-2.4147769061437337e-4,-4.690904210391057e-5,-7.323911274472526e-9,-2.409931846698145e-4,-4.68145030450435e-5,-7.3237831866979765e-9,-2.405293638181594e-4,-4.6622304985804496e-5,-7.311327256640174e-9,-2.4013397134164407e-4,-4.6354911420302454e-5,-7.288398575368516e-9,-2.3983792521253927e-4,-4.606009583001144e-5,-7.260171753226957e-9,-2.396424964711392e-4,-4.579591722183568e-5,-7.233460507133913e-9,-2.3951876787466002e-4,-4.561007369104896e-5,-7.21434469153871e-9,-2.394196251219914e-4,-4.552433842374012e-5,-7.206304347525716e-9,-2.3929702425245816e-4,-4.553082614515197e-5,-7.209572961363757e-9,-2.3911604156302504e-4,-4.559902693265397e-5,-7.221607636814043e-9,-2.3886148969033618e-4,-4.56878141259867e-5,-7.238141334743658e-9,-2.385376124584638e-4,-4.57569458542221e-5,-7.25434375948497e-9,-2.381635151221613e-4,-4.5775227331894453e-5,-7.265844606590987e-9,-2.3776689984276165e-4,-4.57248113055291e-5,-7.26951760352044e-9,-2.3737775512568452e-4,-4.560224089873021e-5,-7.26396202658587e-9,-2.3702288262502966e-4,-4.541701560695537e-5,-7.249620171308552e-9,-2.3672182048234104e-4,-4.518837706556744e-5,-7.228512886555455e-9,-2.3648451210419064e-4,-4.494110071809932e-5,-7.203679129923876e-9,-2.3631073766417756e-4,-4.470112417759971e-5,-7.1784915077864556e-9,-2.3619104748406788e-4,-4.449166637344944e-5,-7.156032804897266e-9,-2.361087730659606e-4,-4.433028327220373e-5,-7.138674148007875e-9,-2.3604256281260482e-4,-4.422705852302139e-5,-7.1278965459513375e-9,-2.3596896071219697e-4,-4.41837594790764e-5,-7.124282211477298e-9,-2.358648734407393e-4,-4.419359846967748e-5,-7.127541904743606e-9,-2.3571005457793368e-4,-4.424139308519803e-5,-7.136477505700135e-9,-2.3548986076137152e-4,-4.4304182265018096e-5,-7.148875985336727e-9,-2.3519855436410849e-4,-4.435271161882365e-5,-7.16145714276836e-9,-2.348430390860336e-4,-4.4354724701945077e-5,-7.170110582162483e-9,-2.3444587375598763e-4,-4.428117792866847e-5,-7.170657306550671e-9,-2.3404509111068765e-4,-4.411557127942225e-5,-7.1601656476032516e-9,-2.3368771973065835e-4,-4.386412570504797e-5,-7.138447255205115e-9,-2.334157329157928e-4,-4.356117057573164e-5,-7.108920211252188e-9,-2.3324859251575434e-4,-4.326304457334257e-5,-7.077986722810363e-9,-2.3317225159038513e-4,-4.3029164658112595e-5,-7.0528241170588876e-9,-2.3314325821755143e-4,-4.289880884221161e-5,-7.038651316312173e-9,-2.3310674475310233e-4,-4.287707539508815e-5,-7.037006731343113e-9,-2.330173793949718e-4,-4.2937138101060195e-5,-7.045793591462278e-9,-2.3285221519255721e-4,-4.303448249497462e-5,-7.060613085178226e-9,-2.3261221161084732e-4,-4.312326355963217e-5,-7.076380098752534e-9,-2.3231616237874106e-4,-4.3167782922615494e-5,-7.0885642907420745e-9,-2.3199226213489643e-4,-4.3147504709399666e-5,-7.093925360427784e-9,-2.3167066135599025e-4,-4.305722178644823e-5,-7.090854405127532e-9,-2.3137815592412457e-4,-4.290464072813479e-5,-7.079431225173229e-9,-2.3113482317374794e-4,-4.2706990561187926e-5,-7.061239222047379e-9,-2.3095210624270325e-4,-4.248733394858226e-5,-7.0389514644621475e-9,-2.3083209319112942e-4,-4.22708356697799e-5,-7.0157556508521975e-9,-2.3076787058155768e-4,-4.208124244565444e-5,-6.994754152444318e-9,-2.3074481404720975e-4,-4.193779429781794e-5,-6.978475418029599e-9,-2.3074269629111773e-4,-4.185278131262165e-5,-6.9685812919441475e-9,-2.3073838954341724e-4,-4.183002690679065e-5,-6.9657828504140465e-9,-2.307087773182823e-4,-4.1864416184094224e-5,-6.969890191920407e-9,-2.3063358371772487e-4,-4.19423194920427e-5,-6.979881232260712e-9,-2.304980447362638e-4,-4.204276810737836e-5,-6.993919691136392e-9,-2.3029541532778425e-4,-4.2139396145542684e-5,-7.00935383163725e-9,-2.3002929420596648e-4,-4.220331442258605e-5,-7.022821179996584e-9,-2.297155277725766e-4,-4.220735882242904e-5,-7.0306406913778314e-9,-2.2938274641947577e-4,-4.2132214476566026e-5,-7.029632424365228e-9,-2.2906972807424893e-4,-4.197407643695822e-5,-7.018296801761733e-9,-2.2881761972917472e-4,-4.175160042946605e-5,-6.997961873684011e-9,-2.286567093282979e-4,-4.15075256296687e-5,-6.9732029722847966e-9,-2.2859182172845228e-4,-4.129977684881916e-5,-6.9508561159118375e-9,-2.2859518852719337e-4,-4.118158264999498e-5,-6.937623078004585e-9,-2.2861445669427582e-4,-4.1179317366699686e-5,-6.937368890191579e-9,-2.2859373178187907e-4,-4.128165726085842e-5,-6.949709434593278e-9,-2.2849535207625107e-4,-4.144683429672747e-5,-6.970641653126126e-9,-2.283102601143957e-4,-4.162180946726997e-5,-6.994513297007544e-9,-2.280546314648973e-4,-4.1760936140705576e-5,-7.015996457807604e-9,-2.2775905137933017e-4,-4.1836162324814815e-5,-7.0312662464705675e-9,-2.2745750303615093e-4,-4.183854159207291e-5,-7.038384862713035e-9,-2.2717978153226345e-4,-4.1774688473891304e-5,-7.037214328561364e-9,-2.269476550317656e-4,-4.166168283592476e-5,-7.029107904443636e-9,-2.2677360769187676e-4,-4.152239765949198e-5,-7.016489998134974e-9,-2.2666086428735168e-4,-4.13817553708349e-5,-7.002360297324509e-9,-2.2660400530891817e-4,-4.126365474609324e-5,-6.989766583218536e-9,-2.2659004542151717e-4,-4.1188304668478054e-5,-6.981333927974789e-9,-2.266000219235072e-4,-4.116989011754661e-5,-6.978931288333946e-9,-2.266111881676761e-4,-4.12146495166316e-5,-6.9835033237536505e-9,-2.2659985001449061e-4,-4.131967774449151e-5,-6.9950455254666655e-9,-2.2654460748588225e-4,-4.147283960401956e-5,-7.012666563520272e-9,-2.264295628693442e-4,-4.165394006870694e-5,-7.034672741319516e-9,-2.2624709886908756e-4,-4.183709352380845e-5,-7.058654437906543e-9,-2.259998866238783e-4,-4.1994173550205136e-5,-7.081632424729571e-9,-2.2570180047419192e-4,-4.20991362790095e-5,-7.100361989265034e-9,-2.2537742095192945e-4,-4.213298776272619e-5,-7.111886301353217e-9,-2.2505959382885995e-4,-4.208912506154797e-5,-7.114348718520941e-9,-2.2478421898691062e-4,-4.197821401236689e-5,-7.107904138739319e-9,-2.2458174592226204e-4,-4.1830607186345735e-5,-7.0953504217620375e-9,-2.244663606137209e-4,-4.169327376221295e-5,-7.081979987657558e-9,-2.2442665203386655e-4,-4.1618683723854355e-5,-7.074284006802257e-9,-2.2442408061700852e-4,-4.1646821969372816e-5,-7.077692877238242e-9,-2.2440397415766895e-4,-4.178786877968106e-5,-7.0943342038050634e-9,-2.2431615173148974e-4,-4.201628734466668e-5,-7.122132208245681e-9,-2.2413418489370047e-4,-4.2281316841771065e-5,-7.155838491573877e-9,-2.238625036955378e-4,-4.252762716447894e-5,-7.189267752364687e-9,-2.2352958981585374e-4,-4.271389191467571e-5,-7.217364886846549e-9,-2.231742512295794e-4,-4.2821232086966055e-5,-7.2372470959088515e-9,-2.2283320562756947e-4,-4.285179730744506e-5,-7.2482661351785805e-9,-2.2253387205703278e-4,-4.282232746248896e-5,-7.2515555960049095e-9,-2.2229206566917885e-4,-4.275713751688142e-5,-7.2494356512215224e-9,-2.2211260756237194e-4,-4.2682685880708425e-5,-7.244838453971768e-9,-2.2199099538278396e-4,-4.262399641811782e-5,-7.240796077498677e-9,-2.2191514949620428e-4,-4.260230497054901e-5,-7.240011891369483e-9,-2.2186707232957353e-4,-4.26332616889838e-5,-7.244543832697758e-9,-2.2182464125580366e-4,-4.2725338241283515e-5,-7.255615619695993e-9,-2.217638453501513e-4,-4.287842690194515e-5,-7.273534478793906e-9,-2.2166170729793913e-4,-4.308298693357485e-5,-7.2976765517466445e-9,-2.2149980429336165e-4,-4.332033803452491e-5,-7.326522432477613e-9,-2.2126785688274673e-4,-4.3564584276414805e-5,-7.357751075488498e-9,-2.20966584781167e-4,-4.3786290015324124e-5,-7.388436436288333e-9,-2.2060898292754956e-4,-4.395759483340187e-5,-7.415404439706891e-9,-2.202193504707468e-4,-4.405796910551689e-5,-7.435775583366592e-9,-2.1982983813928416e-4,-4.407947682940211e-5,-7.4476444040565705e-9,-2.1947474914701923e-4,-4.403040203489803e-5,-7.450766846569757e-9,-2.1918316392070605e-4,-4.393615767618415e-5,-7.447040423172644e-9,-2.1897091886597989e-4,-4.3836355658260945e-5,-7.440501159279104e-9,-2.188338255077648e-4,-4.3777167322247025e-5,-7.4366017543605706e-9,-2.187450180632313e-4,-4.379926707359548e-5,-7.440747299185002e-9,-2.1865951766138927e-4,-4.3924079338995526e-5,-7.456451577868975e-9,-2.1852701523895825e-4,-4.414394644131482e-5,-7.48388495394003e-9,-2.1830915181893224e-4,-4.442241000664643e-5,-7.51964660486929e-9,-2.1799327092026865e-4,-4.47064341649404e-5,-7.558021886353412e-9,-2.1759542948186208e-4,-4.4945093539923776e-5,-7.593080121112747e-9,-2.1715190572061313e-4,-4.510525927973701e-5,-7.62051102463403e-9,-2.1670511352975532e-4,-4.5177775919498044e-5,-7.63846614779529e-9,-2.1629130702600425e-4,-4.5174263035486545e-5,-7.647414111500688e-9,-2.1593400226015044e-4,-4.511913434864514e-5,-7.649461867526958e-9,-2.1564283671687278e-4,-4.504151932089862e-5,-7.647573809127245e-9,-2.1541555700511315e-4,-4.496945565191675e-5,-7.644907915657562e-9,-2.152409460728591e-4,-4.4926547873120016E-05,-7.644326527091175e-9,-2.1510150205944102e-4,-4.493027145003056e-5,-7.648080390942638e-9,-2.1497560662559327e-4,-4.499101379307958e-5,-7.65764086825275e-9,-2.1483945926710325e-4,-4.511125926355644e-5,-7.673632641449619e-9,-2.1466926637521481e-4,-4.528477274004901e-5,-7.695803268049495e-9,-2.144441173207301e-4,-4.549613641988964e-5,-7.722992976764426e-9,-2.1414962209211983e-4,-4.572138551931352e-5,-7.753133503949428e-9,-2.137817825713578e-4,-4.5930557875204e-5,-7.783365806364265e-9,-2.1334992695909555e-4,-4.609259275443571e-5,-7.810385927253544e-9,-2.1287718132165904e-4,-4.6182138061975344e-5,-7.831058043246478e-9,-2.123972901802133e-4,-4.618667111745394e-5,-7.843194529569795e-9,-2.1194776550871445e-4,-4.611156504767954e-5,-7.846275859882824e-9,-2.1156084382754122e-4,-4.598097245517623e-5,-7.841849026160612e-9,-2.1125475027746477e-4,-4.5833615902049135e-5,-7.833415837621815e-9,-2.1102786191385352e-4,-4.57141563789811e-5,-7.825754714870187e-9,-2.1085766176323766e-4,-4.5662121102797614e-5,-7.823773717687805e-9,-2.1070526783781765e-4,-4.570112440445812e-5,-7.831148800367581e-9,-2.1052503260910168e-4,-4.5831388471697066e-5,-7.84914193292144e-9,-2.1027715631769618e-4,-4.602835716858338e-5,-7.876058836978009e-9,-2.0993957436240816e-4,-4.6248926026246374e-5,-7.90766713758257e-9,-2.095146194759454e-4,-4.644402823389973e-5,-7.938509723459188e-9,-2.0902749841148404e-4,-4.6573103373786205e-5,-7.963593692431587e-9,-2.085173003005473e-4,-4.6614726939852604e-5,-7.979751223426029e-9,-2.080247685004384e-4,-4.656971988276465e-5,-7.986202202748241e-9,-2.0758195037667867e-4,-4.645702153575651e-5,-7.984303236040702e-9,-2.0720680107128868e-4,-4.630568678322192e-5,-7.976805592462343e-9,-2.069027746736158e-4,-4.6146864470554793E-05,-7.967006829227965e-9,-2.0666149949068237e-4,-4.6008053738656595e-5,-7.958051544835984e-9,-2.0646643337144435e-4,-4.591001322147901e-5,-7.952478950941206e-9,-2.0629619473845173e-4,-4.586558575032321e-5,-7.952010523962518e-9,-2.0612715730170046e-4,-4.587946155808738e-5,-7.957511462395227e-9,-2.0593551752786214e-4,-4.594814009737746e-5,-7.969025447952002e-9,-2.0569936999224403e-4,-4.6059814191126656e-5,-7.985789917193825e-9,-2.054013396767555e-4,-4.619444426954505e-5,-8.006201300389058e-9,-2.0503200586908336e-4,-4.632476440606799e-5,-8.027795774410303e-9,-2.0459370977526643e-4,-4.6419232557928356e-5,-8.04739911864323e-9,-2.0410341514187733e-4,-4.644771828424737e-5,-8.061606874456355e-9,-2.0359249297940358e-4,-4.6389591386022976e-5,-8.06761967917358e-9,-2.0310152417526018e-4,-4.6241943470151586e-5,-8.064208675557398e-9,-2.026701314330422e-4,-4.602412220191169e-5,-8.05238930586289e-9,-2.0232482212882342e-4,-4.5775201703916056e-5,-8.035415203185357e-9,-2.0206981769589567e-4,-4.5543952383211005e-5,-8.017995799141722e-9,-2.0188503857131567e-4,-4.5374719563007136e-5,-8.005002937932091e-9,-2.0173208974531864e-4,-4.5294685661682146e-5,-8.000132839061242e-9,-2.0156558865288865e-4,-4.530694102432007e-5,-8.004940251523124e-9,-2.0134563404935994e-4,-4.5390862347908655e-5,-8.018476540387911e-9,-2.010477628284383e-4,-4.5508700213428396e-5,-8.037583629336856e-9,-2.0066816008643582e-4,-4.56159424839469e-5,-8.05775420557668e-9,-2.002233040454102e-4,-4.5672547498502866e-5,-8.074324603901956e-9,-1.9974456130923202e-4,-4.5652156194690424e-5,-8.083656540042794e-9,-1.992695170896543e-4,-4.554701856445397e-5,-8.083957366931921e-9,-1.9883270591920156e-4,-4.5367698049175715e-5,-8.075522287619769e-9,-1.9845841745310465e-4,-4.513832170771045e-5,-8.060398815725766e-9,-1.981572124953109e-4,-4.488951139782889e-5,-8.041672208553757e-9,-1.9792619199168255e-4,-4.46514605035761e-5,-8.022654713173082e-9,-1.97751818665741e-4,-4.444885607769098e-5,-8.006221420156825e-9,-1.9761372928278598e-4,-4.429815409582809e-5,-7.994418534127477e-9,-1.9748834183331958e-4,-4.4206787770554826e-5,-7.988349103172298e-9,-1.9735172150645567e-4,-4.417347840913245e-5,-7.988243219864344e-9,-1.9718177685405577e-4,-4.4188897515318655e-5,-7.993577576316224e-9,-1.969602185929472e-4,-4.423633228093872e-5,-8.003137811219496e-9,-1.96674791367231e-4,-4.429249144944042e-5,-8.01500158984719e-9,-1.9632209229852586e-4,-4.43290434847933e-5,-8.026530943997656e-9,-1.9591072087203853e-4,-4.4315855466975366e-5,-8.03455558004738e-9,-1.9546352222861362e-4,-4.422685189198833e-5,-8.035926730100295e-9,-1.9501665604001342e-4,-4.404835137258371e-5,-8.028456381532183e-9,-1.9461311284592976e-4,-4.3787482447394696e-5,-8.011956426634773e-9,-1.9429036612252486e-4,-4.3475903590539156e-5,-7.988819905738023e-9,-1.9406609579109184e-4,-4.31641133352837e-5,-7.963631507898714e-9,-1.939293801808378e-4,-4.290607476846081e-5,-7.941776010191559e-9,-1.9384326424020214e-4,-4.274050836180446e-5,-7.927647618378034e-9,-1.9375801371840964e-4,-4.267820492195053e-5,-7.923311832665135e-9,-1.9362806935360174e-4,-4.270088509049269e-5,-7.928124868965717e-9,-1.934249241067107e-4,-4.277008015595093e-5,-7.93923136862352e-9,-1.931422172148227e-4,-4.284026359050476e-5,-7.952533831849908e-9,-1.9279378906395382e-4,-4.287086605432226e-5,-7.963753390058145e-9,-1.9240746774724533e-4,-4.283438753175265e-5,-7.96935681810304e-9,-1.9201729184363728e-4,-4.272004332166115e-5,-7.967224995384466e-9,-1.9165604145344355e-4,-4.253352928312996e-5,-7.956980058119363e-9,-1.9134921912310286e-4,-4.229384282667856e-5,-7.939923003820991e-9,-1.9111121492372828e-4,-4.202818834980984e-5,-7.91860535841166e-9,-1.9094402083634387e-4,-4.176615800307559e-5,-7.896162848299419e-9,-1.9083831639714896e-4,-4.1534410208336746e-5,-7.87561120850624e-9,-1.9077625422079947e-4,-4.1352743879738196e-5,-7.859295143438076e-9,-1.9073505303328413e-4,-4.123196142628293e-5,-7.848605195695082e-9,-1.9069054410135802e-4,-4.1173414159399545e-5,-7.843964753064974e-9,-1.906201224278099e-4,-4.116971136664543e-5,-7.844982280018888e-9,-1.905050256123524e-4,-4.1205978856558556e-5,-7.850625899117948e-9,-1.9033218543530693e-4,-4.126132493487268e-5,-7.859318656901609e-9,-1.9009597946679268e-4,-4.131052250053904e-5,-7.868951080561997e-9,-1.8980014139863044e-4,-4.1326260782891054e-5,-7.876912836277283e-9,-1.8945967012305145e-4,-4.128269700216912e-5,-7.880323549005257e-9,-1.8910169760086778e-4,-4.116102678475968e-5,-7.876614821307504e-9,-0.00018876338867391296,-4.0956863108143176e-5,-7.864445949430287e-9,-1.884847853602136e-4,-4.0687258733253435e-5,-7.844654109638144e-9,-1.8829616966925856e-4,-4.039278804799636e-5,-7.820672655457958e-9,-1.88203845813791e-4,-4.012954778719805e-5,-7.797856014628003e-9,-1.8818277508791647e-4,-3.995054240701812e-5,-7.781684520999545e-9,-1.881832875362198e-4,-3.988448188439229e-5,-7.77566376533795e-9,-1.8815018874959586e-4,-3.992443525486756e-5,-7.780096416824334e-9,-1.880434791354815e-4,-4.003285000490112e-5,-7.792321866458137e-9,-1.8784973035415947e-4,-4.015822215563545e-5,-7.808013539986401e-9,-1.8758115050261835e-4,-4.025292234742e-5,-7.822655543413694e-9,-1.872668184883031e-4,-4.02846843903453e-5,-7.832609350063291e-9,-1.869421745375567e-4,-4.024036343886389e-5,-7.835668960723405e-9,-1.866405011096358e-4,-4.012421563344865e-5,-7.831233109466725e-9,-1.8638746606769327e-4,-3.9953517066443375e-5,-7.820209997762073e-9,-1.8619833336478678e-4,-3.9753447846682424E-05,-7.804705559277455e-9,-1.8607713456172942e-4,-3.955211791223761e-5,-7.787528077260694e-9,-1.8601733956143633e-4,-3.937609305312275e-5,-7.771594675631029e-9,-1.8600372362801028e-4,-3.924671808006975e-5,-7.759377516311174e-9,-1.860151033940145e-4,-3.9177490549839045e-5,-7.752521038826082e-9,-1.86027579535179e-4,-3.917265795237302e-5,-7.751697825195558e-9,-1.8601784500762417e-4,-3.922712275877602e-5,-7.756683939980297e-9,-1.859660991240961e-4,-3.932748873083235e-5,-7.76655338904938e-9,-1.858583415306685e-4,-3.945386020008228e-5,-7.779863803220138e-9,-1.856880765199331e-4,-3.9582104032858643e-5,-7.794764745634513e-9,-1.8545751111847034e-4,-3.968648336286518e-5,-7.80905273811186e-9,-1.8517832726768282e-4,-3.974272194646584e-5,-7.820277095975539e-9,-1.8487191715710737e-4,-3.973182286832981e-5,-7.826043324454552e-9,-1.84568326062585e-4,-3.964498003485806e-5,-7.824607063924266e-9,-1.8430252736954805e-4,-3.948909619720772e-5,-7.81567723225054e-9,-1.841068015813026e-4,-3.9290916557531185e-5,-7.801120265142914e-9,-1.8399941650295114e-4,-3.9096168023688346e-5,-7.785080204503404e-9,-1.8397315757144196e-4,-3.8959732030985414e-5,-7.773061430941858e-9,-1.8399121969710352e-4,-3.892667494260442e-5,-7.769999153806498e-9,-1.8399720413110593e-4,-3.9012062532908605e-5,-7.778165646339316e-9,-1.8393709799280938e-4,-3.919247414624714e-5,-7.796192327999907e-9,-1.837809253347292e-4,-3.94159913142451e-5,-7.81983562463752e-9,-1.835314504140859e-4,-3.9624174692404916e-5,-7.843866044999501e-9,-1.832175926465497e-4,-3.9772376929694886e-5,-7.863852973816922e-9,-0.00018288007799367867,-3.983939802399363e-5,-7.877101234873762e-9,-1.825581525567214e-4,-3.9826609012344015e-5,-7.88278698428171e-9,-1.8228153953364634e-4,-3.975151493070294e-5,-7.881673076367993e-9,-1.8206747389102235e-4,-3.96403257759107e-5,-7.87567869457065e-9,-1.8192093438847728e-4,-3.952183195728649e-5,-7.867403264403688e-9,-1.818363144226791e-4,-3.94230088792691e-5,-7.859627774104685e-9,-1.8179960057993597e-4,-3.9365938879669173e-5,-7.854836651382487e-9,-1.817908037429815e-4,-3.9365650403408574e-5,-7.85483970570868e-9,-1.817866154295425e-4,-3.9428705477013426e-5,-7.860566324909944e-9,-1.81763290141203e-4,-3.955254076382139e-5,-7.872043997922005e-9,-1.8169966125836646e-4,-3.9725745338659054e-5,-7.888521312020506e-9,-1.8157997375724025e-4,-3.992943179925509e-5,-7.908654800013727e-9,-1.8139615201193202e-4,-4.01395859443014e-5,-7.930677800847704e-9,-1.8114926843234067e-4,-4.0330149429537525e-5,-7.952524911278175e-9,-1.808500494869329e-4,-4.047662276442048e-5,-7.971962158343955e-9,-1.8051827933978514e-4,-4.055992560857808e-5,-7.986810256067089e-9,-1.8018101316444614e-4,-4.0570277674346596e-5,-7.995336625795394e-9,-1.7986930754112723e-4,-4.0510916503467394e-5,-7.996822725172099e-9,-1.796128754203871e-4,-4.0400967753350356e-5,-7.992167447243349e-9,-1.7943243126465743e-4,-4.027577035424067e-5,-7.984224841668468e-9,-1.793308527151646e-4,-4.0182267013651894e-5,-7.97751603843064e-9,-1.7928650189256697e-4,-4.016762654034507e-5,-7.977085620844553e-9,-1.7925412028238575e-4,-4.026237728195528e-5,-7.986681974367066e-9,-1.791774416147169e-4,-4.046502137035069e-5,-8.007050548514257e-9,-1.79010578141659e-4,-4.07384889308924e-5,-8.03541534862946e-9,-1.7873692411944845e-4,-4.102346717380981e-5,-8.066621496285543e-9,-1.783741420058078e-4,-4.1261830836882335e-5,-8.095249938080533e-9,-1.7796361074475225e-4,-4.1416463164230464e-5,-8.117421582789139e-9,-1.7755290410782594e-4,-4.1478368578888085e-5,-8.131520449449486e-9,-1.7718135033389617e-4,-4.146198733197798e-5,-8.13797055610707e-9,-1.768730990346715e-4,-4.139529321745453e-5,-8.138602365296292e-9,-1.766365818208645e-4,-4.131042648440153e-5,-8.135996394797593e-9,-1.7646729539195152e-4,-4.123728457209718e-5,-8.132931548149722e-9,-1.7635140912427015e-4,-4.119998363428822e-5,-8.131940782911007e-9,-1.7626901592075078e-4,-4.1215139264067615e-5,-8.13497319552361e-9,-1.7619688175239353e-4,-4.129104627639256e-5,-8.143187102834443e-9,-1.7611095329391106e-4,-4.142731358893801e-5,-8.156888519239014e-9,-1.7598889716912629e-4,-4.1614887437690714e-5,-8.17558928584182e-9,-1.7581281192462515e-4,-4.183670829192403e-5,-8.198133122013413e-9,-1.7557194116890116e-4,-4.206939570725801e-5,-8.222846596370708e-9,-1.7526489185315834e-4,-4.2286145337228534e-5,-8.247693685378518e-9,-1.749007892130791e-4,-4.246067239676419e-5,-8.27045287578726e-9,-1.7449889291473196e-4,-4.257177890837406e-5,-8.288966601271894e-9,-1.7408636134491067e-4,-4.260785569445014e-5,-8.301502622549816e-9,-1.7369417612683185e-4,-4.257044116629862e-5,-8.307207425135431e-9,-1.733515749373912e-4,-4.247603925671317e-5,-8.306560538240727e-9,-1.7307951561946385e-4,-4.235546258407321e-5,-8.301660768772593e-9,-1.7288404300892215e-4,-4.224980670333177e-5,-8.296116391034056e-9,-1.7275126742316764e-4,-4.220232082429011e-5,-8.29435675977847e-9,-1.7264662508130276e-4,-4.2246603872407674e-5,-8.300377709365537e-9,-1.7252121501086634e-4,-4.239390927424923e-5,-8.316260399484159e-9,-1.723259194563172e-4,-4.262512746453453e-5,-8.341125038747223e-9,-1.7202921853819408e-4,-4.289359303196469e-5,-8.371205255110296e-9,-1.7163005621497463e-4,-4.314027956941037e-5,-8.401196120311941e-9,-1.7115808212438073e-4,-4.3314891182245837e-5,-8.426208336859534e-9,-1.706611339045414e-4,-4.3391899781138715e-5,-8.4432830383759e-9,-1.701876762651756e-4,-4.3374419715413495e-5,-8.4518562411058e-9,-1.6977323193821857e-4,-4.328714577136297e-5,-8.4533209117178e-9,-1.6943492968409378e-4,-4.316484300779904e-5,-8.450215049832509e-9,-1.691728141266524e-4,-4.304229490465962e-5,-8.445454567334958e-9,-1.689743734967421e-4,-4.294814563749508e-5,-8.441762371783732e-9,-1.6881942342299218e-4,-4.2902261156559144e-5,-8.441296223429344e-9,-1.6868404487941965e-4,-4.291519214458628e-5,-8.445444774098598e-9,-1.6854347563705814e-4,-4.2988495594045744e-5,-8.454766529152133e-9,-1.6837439851704656e-4,-4.3115257163194266e-5,-8.469036389597806e-9,-1.681571293442517e-4,-4.3280710287122344e-5,-8.487346444855007e-9,-1.6787800682957013e-4,-4.3463272785180736e-5,-8.508217625345404e-9,-1.675319055511752e-4,-4.363653952219832e-5,-8.529718093993882e-9,-1.6712433065999726e-4,-4.3772654109465174e-5,-8.549625270960761e-9,-1.6667221550076703e-4,-4.3847053130506195e-5,-8.565688893545171e-9,-1.6620251090174813e-4,-4.384394863589244e-5,-8.576022891083493e-9,-1.6574805161057994e-4,-4.3761243185843136e-5,-8.57958137502147e-9,-1.653410166729793e-4,-4.361321227414499e-5,-8.57659196538238e-9,-1.6500526069332353e-4,-4.3429595920686075e-5,-8.568780938240553e-9,-1.6474941938175833e-4,-4.325061380526027e-5,-8.559242374508827e-9,-1.6456278474184848e-4,-4.311845658282386e-5,-8.551872091484495e-9,-1.6441558827007797e-4,-4.306679435913246e-5,-8.55041163875152e-9,-1.6426459590353389e-4,-4.31107428021797e-5,-8.55731514316368e-9,-1.6406370565747632e-4,-4.324040567689213e-5,-8.572814975918328e-9,-1.6377738091422734e-4,-4.3421136814201817e-5,-8.594619277300757e-9,-1.6339259528422065e-4,-4.360218549923664e-5,-8.618509053213847e-9,-1.6292403742707357e-4,-4.3731933663244515e-5,-8.639692356752142e-9,-1.6240945516230828e-4,-4.3773994492029846e-5,-8.654343911008955e-9,-1.618968607756375e-4,-4.371721460881521e-5,-8.660647603934844e-9,-1.614295836691662e-4,-4.357579691594396e-5,-8.658990171403235e-9,-1.6103554540079272e-4,-4.338116258064244e-5,-8.65143750147207e-9,-1.6072371734170566e-4,-4.317072694826411e-5,-8.640899300411265e-9,-1.60486597377181e-4,-4.2978486922922624e-5,-8.630346264051817e-9,-1.6030553083480994e-4,-4.28295955015562e-5,-8.622255741822829e-9,-1.6015613527411944e-4,-4.2738546072660895e-5,-8.618310231123223e-9,-1.6001252941236853e-4,-4.270953342717434e-5,-8.619310983523769e-9,-1.5985023392522713e-4,-4.27376696865566e-5,-8.62524258194941e-9,-1.5964820616548375e-4,-4.281026269130828e-5,-8.635407427994393e-9,-1.5939063606626693e-4,-4.290797545834162e-5,-8.648555381100611e-9,-1.5906893911632526e-4,-4.300622619989431e-5,-8.662980381924239e-9,-1.586839320425307e-4,-4.307745905419132e-5,-8.6766176574788e-9,-1.5824763893893554e-4,-4.309485149551601e-5,-8.687224944489166e-9,-1.577836553301402e-4,-4.303761508032331e-5,-8.692728743322592e-9,-1.5732473003351639e-4,-4.2897150815443866e-5,-8.691735505534104e-9,-1.5690673041701025e-4,-4.2682099455994495e-5,-8.684069583127032e-9,-1.5655967783061677e-4,-4.241963218334136e-5,-8.671100768675983e-9,-1.5629842252569848e-4,-4.215106331379977e-5,-8.65564776892293e-9,-1.5611654367897435e-4,-4.1922027222526855e-5,-8.641393519477788e-9,-1.5598634365727104e-4,-4.1769990723229766e-5,-8.631943434242865e-9,-1.558655337576891e-4,-4.171332468953909e-5,-8.62980875112357e-9,-1.55708599326998e-4,-4.1745676230751626e-5,-8.635639653747643e-9,-1.5547926756793228e-4,-4.183738871643539e-5,-8.64796410233513e-9,-1.5516040876164026e-4,-4.194344529267842e-5,-8.663544317198107e-9,-1.5475857077794318e-4,-4.2015642345345564e-5,-8.678275332417251e-9,-1.5430178219828054e-4,-4.2015487508945786e-5,-8.688346657903147e-9,-1.538312653883322e-4,-4.1923888974596855e-5,-8.691272266061803e-9,-1.5338985144061818e-4,-4.174464729428951e-5,-8.686443715723425e-9,-1.5301108912570144e-4,-4.150107912857046e-5,-8.675074640975934e-9,-1.5271247020407983e-4,-4.1227745509928506e-5,-8.659650972450587e-9,-1.5249412865362623e-4,-4.096082102643691e-5,-8.643154944543995e-9,-1.5234202142190386e-4,-4.0730361657362306e-5,-8.628341074666747e-9,-1.522332666590427e-4,-4.0556036818412694e-5,-8.617240877586801e-9,-1.5214146355814283e-4,-4.044607832465574e-5,-8.610948820189256e-9,-1.5204082770238207e-4,-4.0398276306418136e-5,-8.609649713449356e-9,-1.5190894966737008e-4,-4.040182404940597e-5,-8.612791693953891e-9,-1.5172855998777816e-4,-4.04392073340307e-5,-8.619289651721801e-9,-1.5148890221367985e-4,-4.048788673301634e-5,-8.627671304566296e-9,-1.511871960678653e-4,-4.052207249406931e-5,-8.636154913727928e-9,-1.5083025434630082e-4,-4.051521495503619e-5,-8.642725787473477e-9,-1.5043574158394175e-4,-4.044383852156764e-5,-8.645327734018624e-9,-1.500319353466808e-4,-4.029297377626192e-5,-8.642261093560134e-9,-1.496544166579292e-4,-4.006242686937451e-5,-8.632759521112276e-9,-1.4933857066749907e-4,-3.9771500609913104e-5,-8.61753525645397e-9,-1.4910878327908136e-4,-3.9458613965874134e-5,-8.598961074703302e-9,-1.4896817540041468e-4,-3.9173255620837376e-5,-8.580634729706417e-9,-1.4889434793359147e-4,-3.896143953895252e-5,-8.566369717397555e-9,-1.488446779231985e-4,-3.885027635490195e-5,-8.558992598500318e-9,-1.4876971971684565e-4,-3.883878985692342e-5,-8.559461170923111e-9,-1.4862882605840358e-4,-3.889897430693147e-5,-8.566637964807312e-9,-1.484015496846831e-4,-3.8985699273179814e-5,-8.577719545041904e-9,-1.4809146958670756e-4,-3.9050500471712874e-5,-8.589075917670951e-9,-1.4772283139077166e-4,-3.90541832810773e-5,-8.597200861671296e-9,-1.4733252302452735e-4,-3.8975093804996464e-5,-8.599531021666814e-9,-1.46960319709348e-4,-3.8811988524448995e-5,-8.594969943036304e-9,-1.4663989849332713e-4,-3.8581911562734315e-5,-8.58402541962936e-9,-1.4639243737691714e-4,-3.831439622032589e-5,-8.568556760394407e-9,-1.4622381432699978e-4,-3.8043832331238845e-5,-8.551221326080342e-9,-1.4612546696149864e-4,-3.780203085357788e-5,-8.534793996272362e-9,-1.4607800835754142e-4,-3.761267871861787e-5,-8.521560570514165e-9,-1.46056126596556e-4,-3.748848840769632e-5,-8.512936995642796e-9,-1.4603336462438332e-4,-3.743087337648366e-5,-8.509368863912567e-9,-1.4598588657925202e-4,-3.743138625583485e-5,-8.510465027645555e-9,-1.4589496353338089e-4,-3.747399290628529e-5,-8.515247763091069e-9,-1.4574843347403674e-4,-3.753744263121957e-5,-8.522385868843517e-9,-1.4554162934537264e-4,-3.759745129656199e-5,-8.530332304446479e-9,-1.4527818133022795e-4,-3.7628889350479104e-5,-8.537375532161534e-9,-1.4497079464529807e-4,-3.76084521534279e-5,-8.541699439939246e-9,-1.446416124057033e-4,-3.751836753687077e-5,-8.541581339326527e-9,-1.4432111704455668e-4,-3.7351398285757994e-5,-8.535812444372269e-9,-1.4404404714688575e-4,-3.711638518574359e-5,-8.524282605408122e-9,-1.438412079624837e-4,-3.684187866182322e-5,-8.508477097627533e-9,-1.4372811461076546e-4,-3.657397293866363e-5,-8.491503673689153e-9,-1.436949746655447e-4,-3.636532952138359e-5,-8.477371791217123e-9,-1.437049148338037e-4,-3.625715011489158e-5,-8.469647157873269e-9,-1.4370460041685984e-4,-3.626225419817731e-5,-8.470096677118393e-9,-1.436435657655829e-4,-3.6359182629031623e-5,-8.478059693349249e-9,-1.4349217679652826e-4,-3.650097828056397e-5,-8.49083875172551e-9,-1.4324944734727836e-4,-3.663301747612782e-5,-8.50476357027434e-9,-1.4293924274250757e-4,-3.6710244446883646e-5,-8.516318183217591e-9,-1.42599606440927e-4,-3.670734481993864e-5,-8.522934387042323e-9,-1.4227107692698355e-4,-3.66208983276144e-5,-8.523380609554418e-9,-1.4198762087161575e-4,-3.646586091026803e-5,-8.517827359725516e-9,-1.4177127123896665e-4,-3.626931158012475e-5,-8.507668428407443e-9,-1.4163010445375599e-4,-3.606360234221836e-5,-8.495144285064709e-9,-1.4155881398565556e-4,-3.588006957388633e-5,-8.482821921176052e-9,-1.4154122929864088e-4,-3.574396664003745e-5,-8.473039059830415e-9,-1.4155410250967632e-4,-3.5671120527783085e-5,-8.467454781925923e-9,-1.4157137341078065e-4,-3.5666522461359366e-5,-8.46681890030178e-9,-1.4156819516112225e-4,-3.572468450852716e-5,-8.4709875707388e-9,-1.4152418460917606e-4,-3.58313730753767e-5,-8.47912807725831e-9,-1.4142558873947818e-4,-3.59661705458511e-5,-8.489992557926502e-9,-1.412664184643966e-4,-3.6105261696455e-5,-8.502137383045136e-9,-1.4104888166358994e-4,-3.6224110895191465e-5,-8.514032189748423e-9,-1.4078340386514088e-4,-3.630008132933925e-5,-8.524097794432883e-9,-1.4048831120426743e-4,-3.6315244359799485e-5,-8.530777751256682e-9,-1.4018893987105985e-4,-3.6259700669489686e-5,-8.532761075544734e-9,-1.399154045802046e-4,-3.613554770648095e-5,-8.529406358796928e-9,-1.396978493880879e-4,-3.5960758369385744e-5,-8.5212719609298e-9,-1.395584274220083e-4,-3.5770777754258144e-5,-8.510484614118273e-9,-1.395010799090941e-4,-3.5614419533547606e-5,-8.500584815712752e-9,-1.3950347955379841e-4,-3.554134224026499e-5,-8.495600252331792e-9,-1.395181326667312e-4,-3.5583057711782186e-5,-8.49852886633527e-9,-1.3948692048425989e-4,-3.573661667274257e-5,-8.509976577861838e-9,-1.3936409233349114e-4,-3.596248146847602e-5,-8.52783178092342e-9,-1.3913464178440764e-4,-3.6200002121230084e-5,-8.548219699136488e-9,-1.3881747770678196e-4,-3.6391341144876804e-5,-8.567072309384218e-9,-1.384540237025143e-4,-3.650005380239695e-5,-8.581375137160207e-9,-1.380914704582618e-4,-3.6517145395985524e-5,-8.589669620504838e-9,-1.3776939627770373e-4,-3.645667302158028e-5,-8.591982763540148e-9,-1.375129529417687e-4,-3.634680402050186e-5,-8.589508759325445e-9,-1.373315794560991e-4,-3.622095854655851e-5,-8.584220023840957e-9,-1.3722091216789167e-4,-3.61110737959683e-5,-8.578448656336925e-9,-1.3716598999432205e-4,-3.6043161150447865e-5,-8.574449379800085e-9,-1.37144819913883e-4,-3.6034601772228566e-5,-8.573995788120039e-9,-1.3713202193536196e-4,-3.60927847497726e-5,-8.578098184526851e-9,-1.3710237308793484e-4,-3.621495858814332e-5,-8.586914569799196e-9,-1.3703402980724396e-4,-3.6389181641333254e-5,-8.5998516774355e-9,-1.36911205202354e-4,-3.65962542961265e-5,-8.615789199981454e-9,-1.3672602214730465e-4,-3.68124573584491e-5,-8.633327431858329e-9,-1.36479349089764e-4,-3.701271677512592e-5,-8.650970819822634e-9,-1.3618068653054776e-4,-3.717379627140313e-5,-8.667222550115315e-9,-1.358472662707308e-4,-3.7277344343605105e-5,-8.680647089426607e-9,-1.3550242612119607e-4,-3.731274903926245e-5,-8.68999424871703e-9,-1.3517320152061808e-4,-3.727978006702851e-5,-8.694459140313209e-9,-1.3488680793789882e-4,-3.719092897384664e-5,-8.694073713436727e-9,-1.3466544021457864e-4,-3.707279073129639e-5,-8.69010051987593e-9,-1.3451925275556113e-4,-3.696481485133304e-5,-8.685177236944263e-9,-1.344388658671642e-4,-3.69131046298267e-5,-8.682934876706395e-9,-1.3439108416693466e-4,-3.695778715724225e-5,-8.68695839392729e-9,-1.3432331140892352e-4,-3.7116200157038535e-5,-8.699334814541392e-9,-1.3417981211901297e-4,-3.737010340084863e-5,-8.71951455375979e-9,-1.339246580951755e-4,-3.7667420214442775e-5,-8.744316749020727e-9,-1.3355816900488716e-4,-3.7941435370631326e-5,-8.769244026211392e-9,-1.3311593340372153e-4,-3.813725721253883e-5,-8.79029609068621e-9,-1.3265197371800877e-4,-3.8229929052285945e-5,-8.80518898519348e-9,-1.3221793913426716e-4,-3.822643977336777e-5,-8.813555366407018e-9,-1.318492290963614e-4,-3.8155740932226004e-5,-8.816480101901048e-9,-1.3156091565529496e-4,-3.8055615871408505e-5,-8.815891247203971e-9,-1.3135036452187486e-4,-3.796239043644523e-5,-8.814051427765528e-9,-1.31202438800492e-4,-3.7905049072083586e-5,-8.813160873514698e-9,-1.3109463784149872e-4,-3.79028210263575e-5,-8.81503385420893e-9,-1.3100122611687848e-4,-3.796469387651649e-5,-8.820852830416448e-9,-1.3089648863076503e-4,-3.80897908046812e-5,-8.83104051118581e-9,-1.3075748536931842e-4,-3.826825886682798e-5,-8.84527997381368e-9,-1.3056648321026467e-4,-3.848267424904795e-5,-8.862659526172724e-9,-1.3031305885508222e-4,-3.871009371470224e-5,-8.881878607082005e-9,-1.2999564462678402e-4,-3.8924886973358905e-5,-8.90144922639146e-9,-1.296221126551315e-4,-3.9102224081252054e-5,-8.919852317394064e-9,-1.292091137554164e-4,-3.9221787764163894e-5,-8.935653170963314e-9,-1.287801342980387e-4,-3.9271231345139034e-5,-8.947626178113364e-9,-1.2836237102655372e-4,-3.924893370147562e-5,-8.954946573809908e-9,-1.2798264289840097e-4,-3.916561004732102e-5,-8.957459750970044e-9,-1.2766262594780724e-4,-3.9044431207776e-5,-8.955969094344736e-9,-1.2741366297480022e-4,-3.891923161696911e-5,-8.952404162384802e-9,-1.2723168997357461e-4,-3.883000967390067e-5,-8.949679509496966e-9,-1.27093748029005e-4,-3.881487829910734e-5,-8.951097831921052e-9,-1.2695870357679422e-4,-3.8898685950468335e-5,-8.959323326278861e-9,-1.267751555869125e-4,-3.908106724078372e-5,-8.975233990146882e-9,-1.2649729890266872e-4,-3.933002315131596e-5,-8.997238422616873e-9,-1.2610380646318407e-4,-3.958793924368254e-5,-9.021623338742478e-9,-1.2560933231630603e-4,-3.979117636916569e-5,-9.043949542052622e-9,-1.250601064281325e-4,-3.989428803618717e-5,-9.060747657363913e-9,-1.2451535807132656e-4,-3.988519479442612e-5,-9.070550347589108e-9,-1.2402584828578883e-4,-3.978414776435241e-5,-9.073886011159246e-9,-1.236205981940215e-4,-3.963065544738354e-5,-9.07260038223968e-9,-1.2330492479386814e-4,-3.946804731107443e-5,-9.06907791995821e-9,-1.2306592379153069e-4,-3.9332584341514184e-5,-9.065663183276685e-9,-1.228800828847495e-4,-3.9248605036294036e-5,-9.064298093394783e-9,-1.2271974809462355e-4,-3.9227959023930204e-5,-9.066308761174449e-9,-1.2255751932836511e-4,-3.9271422800291845e-5,-9.07230522767062e-9,-1.2236902385258616e-4,-3.937056825807537e-5,-9.082190481665708e-9,-1.2213485314795255e-4,-3.950953825587356e-5,-9.0952670217167e-9,-1.2184219766310128e-4,-3.966680598205627e-5,-9.110401741288104e-9,-1.2148636162885278e-4,-3.981726696521993e-5,-9.12619905571748e-9,-1.2107197250418744e-4,-3.9935062083796264e-5,-9.141156188037495e-9,-1.2061333772280514e-4,-3.9997258003077964e-5,-9.153805898123638e-9,-1.2013331124746263e-4,-3.998800386203117e-5,-9.162873756252375e-9,-1.1966030668005657e-4,-3.990236796499482e-5,-9.167476141008514e-9,-1.1922355711720542e-4,-3.9748848224879454e-5,-9.16735668291749e-9,-1.1884727409519039e-4,-3.9549573910041856e-5,-9.163106709226148e-9,-1.1854484500946807e-4,-3.9337626281964046e-5,-9.156273357353645e-9,-1.1831435745928925e-4,-3.9151554868869843e-5,-9.149247534449742e-9,-1.1813661119487769e-4,-3.9027669333984225e-5,-9.144851147026704e-9,-1.1797667960421902e-4,-3.899110483450793e-5,-9.145628060950681e-9,-1.1778991790734548e-4,-3.904737063700308e-5,-9.15299150810211e-9,-1.175325624741728e-4,-3.9177091689939015e-5,-9.166537396277783e-9,-1.1717523308225653e-4,-3.933731131848976e-5,-9.183898816605155e-9,-1.1671489921126038e-4,-3.947171279421601e-5,-9.20137620436505e-9,-1.1617906373001206e-4,-3.952820645458404e-5,-9.215188158288917e-9,-1.1561807446250038e-4,-3.947694802803824e-5,-9.222771080593783e-9,-1.1508795403832579e-4,-3.931977427169145e-5,-9.223487247363517e-9,-1.1463218392673738e-4,-3.9086539305895255e-5,-9.21849929028679e-9,-1.142709592978943e-4,-3.8821745934336895e-5,-9.210076040428456e-9,-1.1400074179654687e-4,-3.856946273893001e-5,-9.20078618611514e-9,-1.1380094799943816e-4,-3.836294492571193e-5,-9.192886631995141e-9,-1.1364261812623197e-4,-3.822069459714716e-5,-9.1879765359956e-9,-1.1349551541127026e-4,-3.814719957123449e-5,-9.186871306246775e-9,-1.1333258761490281e-4,-3.8135736535814055e-5,-9.189633338269424e-9,-1.1313230069867286e-4,-3.817141008984336e-5,-9.195706259883106e-9,-1.1287982382393343e-4,-3.823369291997683e-5,-9.204097657482591e-9,-1.1256786310513337e-4,-3.829851605574717e-5,-9.213553802888529e-9,-1.1219751803139118e-4,-3.8340376762559447e-5,-9.22269414066259e-9,-1.1177904223869293e-4,-3.833503671167999e-5,-9.230116686601745e-9,-1.1133191698447232e-4,-3.826315103578705e-5,-9.234523255112086e-9,-1.1088335748373442e-4,-3.811461096830071e-5,-9.234910233392347e-9,-1.1046449079987319e-4,-3.789262697562118e-5,-9.230826308386785e-9,-1.1010413601670693e-4,-3.7615910350771354e-5,-9.222627139411862e-9,-1.0982130517158393e-4,-3.731722308065027e-5,-9.21160402770721e-9,-1.0961868889767661e-4,-3.703748088216355e-5,-9.199872312326249e-9,-1.0947969429209346e-4,-3.681630820680492e-5,-9.189976537874282e-9,-1.0937067838856088e-4,-3.668157414423921e-5,-9.184272074658242e-9,-1.0924829447019257e-4,-3.664109554625678e-5,-9.18424056176897e-9,-1.0907020550257687e-4,-3.667913877536005e-5,-9.189954915184103e-9,-1.0880642515705916e-4,-3.6759033088402764e-5,-9.199907267392656e-9,-1.0844824947981108e-4,-3.683171835853091e-5,-9.211326762762983e-9,-1.0801195079731945e-4,-3.684853152381634e-5,-9.220949393187014e-9,-1.0753533107081977e-4,-3.6774884340293415e-5,-9.225997564122934e-9,-1.0706735543311275e-4,-3.6600269285523224e-5,-9.22499909034669e-9,-1.0665405844386353e-4,-3.634060345263345e-5,-9.218128116932532e-9,-1.0632599695639417e-4,-3.6031911809698865e-5,-9.206981038369621e-9,-1.0609189824736788e-4,-3.5718319405997615e-5,-9.19395506438557e-9,-1.0593992002165717e-4,-3.543962353913638e-5,-9.181522987160879e-9,-1.0584432970216088e-4,-3.5222894444418944e-5,-9.171654265312317e-9,-1.0577377509585269e-4,-3.5079615353876484e-5,-9.165501882736301e-9,-1.0569811427307857e-4,-3.500714701067259e-5,-9.163352800650679e-9,-1.0559264518508524e-4,-3.499226206662488e-5,-9.164771801813917e-9,-1.0544004786505433e-4,-3.5014920510423576e-5,-9.16883982493074e-9,-1.0523095671395252e-4,-3.5051391464275926e-5,-9.174389778026609e-9,-1.0496405295401565e-4,-3.507665669286638e-5,-9.180172150801203e-9,-1.0464618835727268e-4,-3.506655725701059e-5,-9.184939032839345e-9,-1.0429252092118758e-4,-3.500030193581135e-5,-9.187495988674884e-9,-1.039261276946598e-4,-3.48637823947789e-5,-9.186800523449334e-9,-1.0357615793353864e-4,-3.46536541858101e-5,-9.182170455832e-9,-1.0327350441689744e-4,-3.4381246691956354e-5,-9.173580720955574e-9,-1.0304364939716516e-4,-3.4074253186413085e-5,-9.161923230549191e-9,-1.0289802766204464e-4,-3.3773697803369534e-5,-9.149039646343281e-9,-1.0282725778280255e-4,-3.3524929232600696e-5,-9.137394421723031e-9,-1.0280029662432293e-4,-3.336441855594974e-5,-9.129418606410994e-9,-1.0277162008556858e-4,-3.3307298589755e-5,-9.126750143428798e-9,-1.0269452672034878e-4,-3.334132380659976e-5,-9.129679824022376e-9,-1.0253530901109662e-4,-3.3430128766657056e-5,-9.137028969170211e-9,-1.0228281327026914e-4,-3.352418168582912e-5,-9.146483951023313e-9,-1.0195058478501845e-4,-3.357486167811767e-5,-9.155243273725392e-9,-1.0157200536431759e-4,-3.354696552794696e-5,-9.160762004820197e-9,-1.0119077576295845e-4,-3.3426523116505044e-5,-9.161389983981338e-9,-1.0084972538708518e-4,-3.322258471680729e-5,-9.1567428994038e-9,-1.0058085340582454e-4,-3.296319855077416e-5,-9.1477233287177e-9,-1.0039895151362752e-4,-3.268715204906611e-5,-9.13620386476633e-9,-1.0030009479870362e-4,-3.243403248359135e-5,-9.124482475916777e-9,-1.0026481761500761e-4,-3.2235448634192776e-5,-9.114685797381227e-9,-1.002643617789796e-4,-3.210959204158094e-5,-9.108299298278605e-9,-1.0026767382911762e-4,-3.205986487873324e-5,-9.105941746310106e-9,-1.0024717983614368e-4,-3.207681406252085e-5,-9.107401083971613e-9,-1.0018239318013028e-4,-3.214184576455504e-5,-9.111860642617299e-9,-1.0006142614792553e-4,-3.223125875718116e-5,-9.118191582072067e-9,-9.988108258667136e-5,-3.2319691729833556e-5,-9.1251948611398e-9,-9.964632646321523e-5,-3.238278403756544e-5,-9.131729422340635e-9,-9.936964829441685e-5,-3.239938756272473e-5,-9.136742201877834e-9,-9.907040628933112e-5,-3.235385780725714e-5,-9.139278262243717e-9,-9.877374852922494e-5,-3.22388541842853e-5,-9.138569270716463e-9,-9.850827687016545e-5,-3.2058685656720396e-5,-9.13425646517205e-9,-9.830143939364078e-5,-3.1832365719454527e-5,-9.126703455871307e-9,-9.817223068137955e-5,-3.159432274657247e-5,-9.117234559865558e-9,-9.812252419680496e-5,-3.138997708142053e-5,-9.108071823699427e-9,-9.813089016549055e-5,-3.126452109365012e-5,-9.10182146027846e-9,-9.815412222958905e-5,-3.124710157480261e-5,-9.100604093125194e-9,-9.813914491830552e-5,-3.1337456387429606e-5,-9.105211374499513e-9,-9.804153498796248e-5,-3.150322611607172e-5,-9.11475449547984e-9,-9.784154686536156e-5,-3.1690737195221436e-5,-9.127000792101932e-9,-9.754967528636868e-5,-3.1843765894223964e-5,-9.139172281973027e-9,-9.720055366819144e-5,-3.192085559051927e-5,-9.148776150107598e-9,-9.684015327249356e-5,-3.1904655488520306e-5,-9.154172659673398e-9,-9.651257696551535e-5,-3.180236177111936e-5,-9.154822358487452e-9,-9.62504127431069e-5,-3.163996841124646e-5,-9.151274976782774e-9,-9.60698168291565e-5,-3.145374077091899e-5,-9.144961054288212e-9,-9.596984265486474e-5,-3.128151423757891e-5,-9.137828523893096e-9,-9.593497386265119e-5,-3.115537334164327e-5,-9.131885483864583e-9,-9.593976606922285e-5,-3.109656681303233e-5,-9.128751308860314e-9,-9.595447136657913e-5,-3.111310201829616e-5,-9.129337933414458e-9,-9.595049936624177e-5,-3.119999178987712e-5,-9.133745810921736e-9,-9.590477548725535e-5,-3.134160856925637e-5,-9.141380171958168e-9,-9.580246226255177e-5,-3.151529116825042e-5,-9.151211708597388e-9,-9.563797539391283e-5,-3.16952830703858e-5,-9.162060481302314e-9,-9.541467373049275e-5,-3.185625961327806e-5,-9.172796825714589e-9,-9.514380915860319e-5,-3.197615493895167e-5,-9.182419310694514e-9,-9.48431552537596e-5,-3.2038443093745316e-5,-9.190051974883061e-9,-9.453543133902659e-5,-3.2034182987011704e-5,-9.194952520053085e-9,-9.424633486772374e-5,-3.1964113362905855e-5,-9.19662086089252e-9,-9.400158823504068e-5,-3.18408340759899e-5,-9.195038235111904e-9,-9.382220633420554e-5,-3.169033305608827e-5,-9.19095818861579e-9,-9.371778135278529e-5,-3.155104568024974e-5,-9.186065400464665e-9,-9.367914980804929e-5,-3.1468046822899884e-5,-9.182785199579648e-9,-9.367412170350315e-5,-3.1480918711509026e-5,-9.183626205872267e-9,-9.365156347345576e-5,-3.160755715402989e-5,-9.19020294586336e-9,-9.355668865963729e-5,-3.183175941432533e-5,-9.202419571888166e-9,-9.335267713728581e-5,-3.210430056471749e-5,-9.218371347956345e-9,-9.303667906521569e-5,-3.236020861117679e-5,-9.235103819495216e-9,-9.264032211325917e-5,-3.2543385860012626e-5,-9.249755228307922e-9,-9.221548591093086e-5,-3.262483810785695e-5,-9.26041652356236e-9,-9.181507378196565e-5,-3.260698117914955e-5,-9.266413523353581e-9,-9.147845491400025e-5,-3.251632942914815e-5,-9.268166415699002e-9,-9.122520847559706e-5,-3.239154168921172e-5,-9.266889513425695e-9,-9.105564635912965e-5,-3.227244723700269e-5,-9.2642646836748e-9,-9.095498913811478e-5,-3.219240887699171e-5,-9.262101784399266e-9,-9.08987318910297e-5,-3.217406213098664e-5,-9.261994204243429e-9,-9.085793054099272e-5,-3.222762121230062e-5,-9.265019829464496e-9,-9.080392835417925e-5,-3.2351052738033134e-5,-9.271567916967034e-9,-9.071228168806134e-5,-3.253168391369461e-5,-9.28134185774094e-9,-9.056569168800201e-5,-3.2748874236925676e-5,-9.293522462109239e-9,-9.035578936575062e-5,-3.297739074658915e-5,-9.307015941925984e-9,-9.008365802729651e-5,-3.319108369388331e-5,-9.32068773621464e-9,-8.975916266917992e-5,-3.336636099032471e-5,-9.33350717957054e-9,-8.939940883763627e-5,-3.348509546284864e-5,-9.344592008056796e-9,-8.902663953210632e-5,-3.353691102753202e-5,-9.353211946825554e-9,-8.866569313938621e-5,-3.352090126483869e-5,-9.35883336145802e-9,-8.834103551839693e-5,-3.3446806313605515e-5,-9.361261938630803e-9,-8.807317448099914e-5,-3.333560303798455e-5,-9.360872293875294e-9,-8.787408489854848e-5,-3.321895898344246e-5,-9.35881896249169e-9,-8.774178162211213e-5,-3.313618048205553e-5,-9.357051719661311e-9,-8.765551941425548e-5,-3.312704407820512e-5,-9.357971217288903e-9,-8.75747733839315e-5,-3.3219976944643985e-5,-9.363691049098633e-9,-8.74461410016907e-5,-3.341812218722618e-5,-9.375114762347986e-9,-8.7220065678816e-5,-3.3690479945789706e-5,-9.391311854138805e-9,-8.687212463896635e-5,-3.397702246395055e-5,-9.409699673510456e-9,-8.641654285989432e-5,-3.420979174434094e-5,-9.427069578077248e-9,-8.590181922728967e-5,-3.433967242416912e-5,-9.440848661633535e-9,-8.539061620032401e-5,-3.435314501297649e-5,-9.44984340985916e-9,-8.493672097339013e-5,-3.4271269582614564e-5,-9.454233252297501e-9,-8.45709727893319e-5,-3.413584988272384e-5,-9.45513539359531e-9,-8.429907159057472e-5,-3.399315338192215e-5,-9.454135610822126e-9,-8.410710066635141e-5,-3.388222278476255e-5,-9.452932691116559e-9,-8.39694300761685e-5,-3.382927951155617e-5,-9.453065287658341e-9,-8.385576288840835e-5,-3.384661045247159e-5,-9.455682021020762e-9,-8.373632656338405e-5,-3.39337961074905e-5,-9.461372860972362e-9,-8.358545827544782e-5,-3.407987563331084e-5,-9.470111676055729e-9,-8.338408132706894e-5,-3.426590539557689e-5,-9.481331913003121e-9,-8.312136430352067e-5,-3.446778153328366e-5,-9.494105686910258e-9,-8.279564587432089e-5,-3.465932720987703e-5,-9.507355644814983e-9,-8.241450667287213e-5,-3.481564090403858e-5,-9.520030613693909e-9,-8.19937854235765e-5,-3.491646452503521e-5,-9.531207314372736e-9,-8.155553782746594e-5,-3.494912799250977e-5,-9.540129776878508e-9,-8.112514759519504e-5,-3.491073158250606e-5,-9.546243568285508e-9,-8.072780222779476e-5,-3.480934834136822e-5,-9.549283156140592e-9,-8.038456389393579e-5,-3.466401475530754e-5,-9.549426224657887e-9,-8.010831362600719e-5,-3.450333338545574e-5,-9.54746360191402e-9,-7.989980971585162e-5,-3.4362440274271346e-5,-9.544875278633311e-9,-7.974437782718713e-5,-3.427773727254322e-5,-9.543676237437192e-9,-7.961061805952735e-5,-3.427884237468908e-5,-9.545950110564333e-9,-7.945341861300056e-5,-3.437837958684637e-5,-9.553132576768602e-9,-7.922353858236074e-5,-3.456254513569184e-5,-9.56529984876067e-9,-7.888371631202135e-5,-3.478810345141471e-5,-9.580865713138687e-9,-7.842594949679023e-5,-3.499174125974583e-5,-9.597013547859506e-9,-7.787972052612896e-5,-3.5111823238104886e-5,-9.61077091176288e-9,-7.730339317992335e-5,-3.5112654366270275e-5,-9.620133730535203e-9,-7.676190727235558e-5,-3.4997103078953485e-5,-9.624598331243174e-9,-7.630368913524509e-5,-3.480106932702219e-5,-9.62496228087358e-9,-7.594864786183333e-5,-3.457584341541249e-5,-9.622755990773589e-9,-7.568955618661085e-5,-3.4369955647098174e-5,-9.619710536672963e-9,-7.550120699012476e-5,-3.4218070735318946e-5,-9.617407235355379e-9,-7.53506844299028e-5,-3.4137703834965904e-5,-9.617061902570326e-9,-7.520512620818642e-5,-3.4130887726558557e-5,-9.619389347609227e-9,-7.503635353608889e-5,-3.4187713250424024e-5,-9.624544759331411e-9,-7.482323554456231e-5,-3.4289930549698735e-5,-9.63216195796353e-9,-7.455284746952063e-5,-3.441408243113663e-5,-9.641484197830746e-9,-7.422104933606681e-5,-3.4534311144901265e-5,-9.651545196785234e-9,-7.383266982034839e-5,-3.4625139821498456e-5,-9.661340808730684e-9,-7.340115252227199e-5,-3.466447763315732e-5,-9.669951148188559e-9,-7.29472860281118e-5,-3.4636811794840895e-5,-9.676610258024069e-9,-7.249670181575391e-5,-3.453612755069931e-5,-9.680751536488109e-9,-7.207617225320659e-5,-3.436789907206864e-5,-9.682071150846721e-9,-7.170907254595313e-5,-3.414954611457939e-5,-9.680633872207702e-9,-7.141062395474628e-5,-3.39088790257861e-5,-9.676997430229804e-9,-7.118375946617258e-5,-3.3680346460547944e-5,-9.672282908069223e-9,-7.101650731517465e-5,-3.349931488623629e-5,-9.668098481187566e-9,-7.088172523947388e-5,-3.33948756399492e-5,-9.666247026220778e-9,-7.074007291564022e-5,-3.3381977619494795e-5,-9.668224096412342e-9,-7.054706001923604e-5,-3.345448175111133e-5,-9.674640120668145e-9,-7.026421186175586e-5,-3.358188659485631e-5,-9.68481262676929e-9,-6.987236648803186e-5,-3.371310919852034e-5,-9.69679586348801e-9,-6.938216497629712e-5,-3.3789366876241454e-5,-9.707962916374584e-9,-6.883511643281062e-5,-3.376368965928737e-5,-9.715940864866819e-9,-6.829161852117123e-5,-3.3618736578177726e-5,-9.719434092883315e-9,-6.781005922500603e-5,-3.337302815858778e-5,-9.718519685799377e-9,-6.742756648217968e-5,-3.307197650765509e-5,-9.714369050431293e-9,-6.715167109481134e-5,-3.276964162612763e-5,-9.70868572509175e-9,-6.696431540140377e-5,-3.251149483555875e-5,-9.703181489926008e-9,-6.683272014943683e-5,-3.23249804831107e-5,-9.699229967536756e-9,-6.672046595425307e-5,-3.221830593712131e-5,-9.69768646622021e-9,-6.659514882482948e-5,-3.218413792480631e-5,-9.69883261424372e-9,-6.643222102070501e-5,-3.2204715407059465e-5,-9.702422223220024e-9,-6.621623206383647e-5,-3.225639014403438e-5,-9.707811412099236e-9,-6.594084229704343e-5,-3.231307689206832e-5,-9.714134303646899e-9,-6.560847130759857e-5,-3.234892257240772e-5,-9.720473000120565e-9,-6.522984548096849e-5,-3.2340745725612146e-5,-9.725978398839142e-9,-6.482324202400488e-5,-3.227068092840828e-5,-9.72993539962299e-9,-6.441292964570893e-5,-3.212909927557402e-5,-9.731798587080863e-9,-6.402628163536215e-5,-3.1917364877182857e-5,-9.731239839313383e-9,-6.368937200887575e-5,-3.164953586182567e-5,-9.728232443086724e-9,-6.342148728367543e-5,-3.135192586641782e-5,-9.723155862069091e-9,-6.3229704409613e-5,-3.105968506127635e-5,-9.716864968224381e-9,-6.310518395759158e-5,-3.081035792541784e-5,-9.710646408580894e-9,-6.302274843342547e-5,-3.0635492967811876e-5,-9.706009068758345e-9,-6.294459210654977e-5,-3.055226083848084e-5,-9.704313675315504e-9,-6.282790628516361e-5,-3.0557342633427204e-5,-9.706329094269245e-9,-6.263513206345579e-5,-3.062513212686725e-5,-9.711875217337033e-9]} \ No newline at end of file diff --git a/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json new file mode 100644 index 0000000000..745c250185 --- /dev/null +++ b/libs/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1.0,"startIndex":9000,"numberOfSamples":1000,"samples":[-6.23446137633139e-5,-3.071164556992463e-5,-9.719731332151204e-9,-6.19586809157847e-5,-3.076438157665265e-5,-9.727914890125598e-9,-6.150587794551883e-5,-3.073654937098242e-5,-9.734280833128142e-9,-6.1034943329782044e-5,-3.060168191808949e-5,-9.737216476929997e-9,-6.0601038606681665e-5,-3.036287029042388e-5,-9.736134809126074e-9,-6.024888746053323e-5,-3.0051869736974383e-5,-9.731565682588457e-9,-5.999994090928063e-5,-2.971789522758825e-5,-9.724862066857019e-9,-5.9848834314815545e-5,-2.9411354882677176e-5,-9.71770907732456e-9,-5.976923198886018e-5,-2.916989718887004e-5,-9.711648469978378e-9,-5.972462316432335e-5,-2.9011586735457638e-5,-9.707751149758674e-9,-5.967870819510338e-5,-2.8935387308633597e-5,-9.70647628370283e-9,-5.9602228253192676e-5,-2.89259970676844e-5,-9.707695687073557e-9,-5.947591112549622e-5,-2.8959747148304846e-5,-9.710838540242717e-9,-5.929077173354268e-5,-2.9009608654381066e-5,-9.715094525623705e-9,-5.904719567985657e-5,-2.9048773862964067e-5,-9.71960852884578e-9,-5.8753773367436014e-5,-2.9053136374370507e-5,-9.72361187781754e-9,-5.842624685184096e-5,-2.9003338061866847e-5,-9.726475623750488e-9,-5.8086360356536405e-5,-2.8886966009567993e-5,-9.727714468149827e-9,-5.776002754298137e-5,-2.870105742876016e-5,-9.726995392498005e-9,-5.74741651198525e-5,-2.845449366073143e-5,-9.72419549652686e-9,-5.725183467800746e-5,-2.8169256139263426e-5,-9.71951151762819e-9,-5.7106100541113594e-5,-2.7879041181757347e-5,-9.713564114276547e-9,-5.7034227249689176e-5,-2.7623923778951554e-5,-9.707405962417725e-9,-5.7014849044397024e-5,-2.744114170465607e-5,-9.702361282140308e-9,-5.701050918052841e-5,-2.735425399096375e-5,-9.699698830847758e-9,-5.697609718243167e-5,-2.7364576162975244e-5,-9.700232368303819e-9,-5.6871038817050416e-5,-2.7448633497066595e-5,-9.704002376450864e-9,-5.667116781282969e-5,-2.7563221973356075e-5,-9.710182005555758e-9,-5.637617678776307e-5,-2.765667320675218e-5,-9.717264987992663e-9,-5.601027591624169e-5,-2.7682736375781414e-5,-9.723480590272698e-9,-5.561600483675091e-5,-2.7612936285683867e-5,-9.727297528384073e-9,-5.524303937361784e-5,-2.7443956618506687e-5,-9.727850312943274e-9,-5.493513840003189e-5,-2.7197955922928915e-5,-9.725154651913568e-9,-5.471906725691787e-5,-2.6915691607899557e-5,-9.72005407261872e-9,-5.4598911019501836e-5,-2.6644703453075705e-5,-9.713934027115233e-9,-5.455730383150816e-5,-2.64266189741069e-5,-9.708311206523093e-9,-5.4562420129529145e-5,-2.6287768574123053e-5,-9.704433569738843e-9,-5.457752704343605e-5,-2.623553492658023e-5,-9.703008653848694e-9,-5.456957532646678e-5,-2.6260220049275858e-5,-9.704121931504624e-9,-5.451464446828428e-5,-2.6340246599419492e-5,-9.707335422027123e-9,-5.439995050230707e-5,-2.6448131932234545e-5,-9.711898924726039e-9,-5.422339633670513e-5,-2.6555532499365036e-5,-9.716981565914689e-9,-5.399194066121386e-5,-2.663678226094542e-5,-9.721842938139277e-9,-5.37197431734721e-5,-2.667116151947731e-5,-9.725902670942154e-9,-5.342650643560834e-5,-2.6644534881516494e-5,-9.728727486336505e-9,-5.313587618209729e-5,-2.655097739679037e-5,-9.729995225631237e-9,-5.287334596399925e-5,-2.639462790136861e-5,-9.72950469114869e-9,-5.266297173036476e-5,-2.619143036945524e-5,-9.727266597271218e-9,-5.252243553464907e-5,-2.596971389861331e-5,-9.723645863256587e-9,-5.245681707745194e-5,-2.5767877042401753e-5,-9.719459836489783e-9,-5.245295661436816e-5,-2.562748717562385e-5,-9.715914975816248e-9,-5.247784135201871e-5,-2.558182145120203e-5,-9.714321344765071e-9,-5.248433005910525e-5,-2.5643167778965002e-5,-9.71565414605581e-9,-5.242443255043768e-5,-2.5794981125069657e-5,-9.720157774265109e-9,-5.2265507859568556e-5,-2.599424952537427e-5,-9.727205074415084e-9,-5.200192042456586e-5,-2.6184413784918434e-5,-9.735490249337039e-9,-5.165673914621095e-5,-2.6313264574752945e-5,-9.743443035999223e-9,-5.127351919687404e-5,-2.6348054742647138e-5,-9.749667801257827e-9,-5.0902725125982576e-5,-2.6282713166082426e-5,-9.75326720347049e-9,-5.0588284184408174e-5,-2.6136491038281e-5,-9.754009356253531e-9,-5.0357993370069754e-5,-2.5946393683606597e-5,-9.752342082004198e-9,-5.0219232993974796e-5,-2.5756667981670227e-5,-9.749262933352734e-9,-5.015982106504244e-5,-2.5608303159542794e-5,-9.746061951023208e-9,-5.0152906269271166e-5,-2.5530759317958693e-5,-9.743991748123502e-9,-5.016424167598713e-5,-2.5537314473559887e-5,-9.743957229389409e-9,-5.015987799753719e-5,-2.5624510658344092e-5,-9.746324283706057e-9,-5.011244865581866e-5,-2.5775123374663638e-5,-9.750904754883811e-9,-5.000492623338741e-5,-2.596321755352963e-5,-9.757101352467545e-9,-4.9831698223674514e-5,-2.6159651038122543e-5,-9.764134932390347e-9,-4.959756293540752e-5,-2.6336794409959954e-5,-9.77125471218565e-9,-4.9315586018946434e-5,-2.6471880876366733e-5,-9.777857341227311e-9,-4.900467765247903e-5,-2.6549048296052148e-5,-9.78350042703132e-9,-4.868733505302663e-5,-2.6560573645593127e-5,-9.787854781108205e-9,-4.8387507995782974e-5,-2.6507830841147043e-5,-9.790671063781774e-9,-4.812820015775109e-5,-2.640221991296037e-5,-9.791823659827242e-9,-4.792822925558667e-5,-2.626586053182433e-5,-9.791440657019166e-9,-4.7797688235235664e-5,-2.6131146731513124e-5,-9.790058210807481e-9,-4.7732434736905576e-5,-2.603750245204811e-5,-9.788680030956192e-9,-4.770949127982192e-5,-2.602362103765612e-5,-9.788622629016349e-9,-4.768699088683465e-5,-2.6115132800391774e-5,-9.791115783371455e-9,-4.7612514838547504e-5,-2.6311416798164514e-5,-9.796791594098938e-9,-4.744004786748611e-5,-2.6579162837951064e-5,-9.805340798551625e-9,-4.714894275327642e-5,-2.68596183979786e-5,-9.81558384504337e-9,-4.675409408145582e-5,-2.7088789244523173e-5,-9.82593563524379e-9,-4.63007016373858e-5,-2.7220538865820394e-5,-9.834966162719081e-9,-4.584698755933853e-5,-2.7240537539346205e-5,-9.841756608580806e-9,-4.544489497457328e-5,-2.716612358051693e-5,-9.845989371386469e-9,-4.512720869220526e-5,-2.7035870592725035e-5,-9.847894204339548e-9,-4.490350340869352e-5,-2.6895966227287968e-5,-9.848150476851382e-9,-4.4762813526265216e-5,-2.6788619054627426e-5,-9.847749002642056e-9,-4.467974944751262e-5,-2.6744535726717833e-5,-9.847788854326644e-9,-4.4621551529998665e-5,-2.67793858092927e-5,-9.849227199555758e-9,-4.4554711427458415e-5,-2.6893402551401513e-5,-9.852654250504786e-9,-4.445048423814215e-5,-2.7073346152810357e-5,-9.858177344922723e-9,-4.428881976659844e-5,-2.7296183901073322e-5,-9.865455416384905e-9,-4.406041691263042e-5,-2.753370714423536e-5,-9.873857188997167e-9,-4.376691930956634e-5,-2.7757247847319554e-5,-9.882664459772306e-9,-4.3419538053046194e-5,-2.7941805347373132e-5,-9.891234414250543e-9,-4.303660454191013e-5,-2.8069095603610774e-5,-9.899069051818642e-9,-4.264069174434751e-5,-2.8129368229640377e-5,-9.90579879900749e-9,-4.2255769073996823e-5,-2.8122238695490774e-5,-9.911139409555858e-9,-4.1904486407320275e-5,-2.8056896725693683e-5,-9.914892497705433e-9,-4.160543814119917e-5,-2.7951878164291356e-5,-9.9170275201943e-9,-4.137010911506443e-5,-2.783431847991674e-5,-9.917825281106567e-9,-4.119921521788755e-5,-2.7738086497587085e-5,-9.917998408072091e-9,-4.107878264055179e-5,-2.769954625238172e-5,-9.91867215364473e-9,-4.097763615938715e-5,-2.7749689768273665e-5,-9.921139370467895e-9,-4.0849404904229084e-5,-2.7902797854934692e-5,-9.926407792259145e-9,-4.0642441010064514e-5,-2.8145057541786642e-5,-9.934713814169385e-9,-4.031787237599612e-5,-2.8430538779043658e-5,-9.945298702787681e-9,-3.9868810330146976e-5,-2.8691908882654146e-5,-9.9566665170196e-9,-3.932833565054289e-5,-2.8864961803409028e-5,-9.967212572062042e-9,-3.875854394725441e-5,-2.891437192128338e-5,-9.975808367109482e-9,-3.822616913640833e-5,-2.8845330760606945e-5,-9.98201180056612e-9,-3.777943806979286e-5,-2.869613572190929e-5,-9.98594693625295e-9,-3.743725664498184e-5,-2.8519754654329504e-5,-9.98810862349428e-9,-3.719134397363045e-5,-2.8366020937962917e-5,-9.989234069973608e-9,-3.701525587842487e-5,-2.8270836040562245e-5,-9.99020103086058e-9,-3.6874340673262915e-5,-2.8252557552493446E-05,-9.991881928374356e-9,-3.6733633947777075e-5,-2.831302992680173e-5,-9.994958846882884e-9,-3.656313374093195e-5,-2.844073037686516e-5,-9.999766501751608e-9,-3.634100881655143e-5,-2.8614561011922926e-5,-1.000623541918002e-8,-3.605533964519792e-5,-2.8807801587885512e-5,-1.0013957531492734e-8,-3.570465334841229e-5,-2.8992079074828512e-5,-1.0022338457116705e-8,-3.529734816247884e-5,-2.914116709250595e-5,-1.0030762046344616e-8,-3.485006993645185e-5,-2.92343805861204e-5,-1.0038702615702036e-8,-3.4385142229079815e-5,-2.9259238226273796e-5,-1.0045757091094494e-8,-3.3927359255493513e-5,-2.9213049460563632e-5,-1.0051621058011619e-8,-3.350058407226353e-5,-2.9103332940466208e-5,-1.0056066702504657e-8,-3.3124457063630464e-5,-2.8947189972084985e-5,-1.0058976990550987e-8,-3.2811366323358286e-5,-2.8769735723801098e-5,-1.0060445345746964e-8,-3.256375787328263e-5,-2.8601623226662544e-5,-1.0060897143616392e-8,-3.2371816097269846e-5,-2.8475488693954947e-5,-1.0061145174295647e-8,-3.221189052935458e-5,-2.842075314931494e-5,-1.0062287880142022e-8,-3.204694100578321e-5,-2.8456309260332803e-5,-1.0065415316236122e-8,-3.183109485034811e-5,-2.8581804503757855e-5,-1.007118993199182e-8,-3.152026648812525e-5,-2.877048997646703e-5,-1.0079484318373714e-8,-3.108835216793204e-5,-2.8969238348406404e-5,-1.0089312218910324e-8,-3.0542974461299724e-5,-2.911131486583659e-5,-1.0099182540644034e-8,-2.992994780628945e-5,-2.9140766616140142e-5,-1.0107715115987456e-8,-2.9319253695152042e-5,-2.9036541761832005e-5,-1.0114124886146775e-8,-2.877809393386789e-5,-2.8820960229194144e-5,-1.0118307228329601e-8,-2.8346852894650365e-5,-2.8547443251060635e-5,-1.0120625267983092e-8,-2.803055359693186e-5,-2.8277133796314353e-5,-1.0121677071264258e-8,-2.7805852942645365e-5,-2.8058810315545394e-5,-1.0122171969069935e-8,-2.7634885870697304e-5,-2.7919586021142028e-5,-1.0122851241518537e-8,-2.7477784344898564e-5,-2.7865136011979794e-5,-1.0124374041290903e-8,-2.73005681768325e-5,-2.788470342701019e-5,-1.0127178785398857e-8,-2.707876938176712e-5,-2.7957027015369363e-5,-1.0131386580299943e-8,-2.6798428484780897e-5,-2.8055381987984983e-5,-1.0136799525049531e-8,-2.6455880523470634e-5,-2.8151496961065997e-5,-1.0142993650083491e-8,-2.6056989964450905e-5,-2.8218751221123247e-5,-1.0149458252670142e-8,-2.5615936366383297e-5,-2.82350089513246e-5,-1.0155717100330529e-8,-2.5153423477268736e-5,-2.8185218808561722e-5,-1.0161389371918144e-8,-2.469410784372093e-5,-2.80636100261117e-5,-1.0166188348621973e-8,-2.426321414819864e-5,-2.787501653366006e-5,-1.0169893731105325e-8,-2.3882668480529245e-5,-2.763487038497263e-5,-1.01723489245492e-8,-2.3567286234310905e-5,-2.7367666919278267e-5,-1.017351616196784e-8,-2.332156842397692e-5,-2.7103905438103306e-5,-1.017357593949472e-8,-2.3137641969046203e-5,-2.6875705732266855e-5,-1.0173013410180529e-8,-2.299476051584912e-5,-2.6711500845227496E-05,-1.017261329344951e-8,-2.2860705750699917e-5,-2.663018704620786e-5,-1.0173308322342749e-8,-2.2695665047880168e-5,-2.663518611623227e-5,-1.017589092482202e-8,-2.2459337873909423e-5,-2.6709603552242226e-5,-1.0180685150351775e-8,-2.212140867809451e-5,-2.6814846177850375e-5,-1.0187337375833014e-8,-2.1673671732367735e-5,-2.6895869468464378e-5,-1.0194873028803975e-8,-2.1139047774474032e-5,-2.68952440266726e-5,-1.0202044877588625e-8,-2.0570501852735378e-5,-2.6773653165214853e-5,-1.0207808391111026e-8,-2.0035779945461135e-5,-2.6527596262472074e-5,-1.0211650200164242e-8,-1.95929968856085e-5,-2.6192859779762135e-5,-1.0213616507492086e-8,-1.9270119523824262e-5,-2.5830075681245798e-5,-1.021413380368983e-8,-1.905933904298975e-5,-2.5500927912146165e-5,-1.021381348729072e-8,-1.892657043021345e-5,-2.5248592103061754e-5,-1.0213321886218076e-8,-1.8827443033921196e-5,-2.5090146839981592e-5,-1.0213277816654462e-8,-1.8720869387209668e-5,-2.5019585350191788e-5,-1.0214142627298827e-8,-1.8576464284264876e-5,-2.5015668692887527e-5,-1.0216127260583814e-8,-1.8376611843414558e-5,-2.504980617624261e-5,-1.0219166169699748e-8,-1.8115567499788158e-5,-2.5091878000311348e-5,-1.022297593256864e-8,-1.77975879404375e-5,-2.511396168920078e-5,-1.0227169183059294e-8,-1.743505293856026e-5,-2.5092754555130803e-5,-1.0231368833090536e-8,-1.7046707371919865e-5,-2.5011456803880348e-5,-1.0235274298180084e-8,-1.6655740859370975e-5,-2.4861532084328557e-5,-1.023866489114029e-8,-1.6287282974612118e-5,-2.464432330060455e-5,-1.0241365206381334e-8,-1.596501252310151e-5,-2.4372025169081737e-5,-1.024321801882643e-8,-1.570702113141324e-5,-2.406725812436014e-5,-1.0244103967347291e-8,-1.552160951313559e-5,-2.376063009939192e-5,-1.0244017040254267e-8,-1.5404061827608693e-5,-2.3486101581026236e-5,-1.0243161489551215e-8,-1.5335535519959935e-5,-2.327460877469775e-5,-1.0242006517918706e-8,-1.5284891552236783e-5,-2.314712391361825e-5,-1.0241237021644048e-8,-1.5213603604440276e-5,-2.3108728191468194e-5,-1.0241580512137116e-8,-1.5083201808082548e-5,-2.3145172717351075e-5,-1.0243555303704379e-8,-1.4864218209902013e-5,-2.32231622645874e-5,-1.0247243960115732e-8,-1.4545036900022462e-5,-2.3295366098052616e-5,-1.0252208937023976e-8,-1.4138251105215157e-5,-2.3310524416851092e-5,-1.0257614027791928e-8,-1.368146422366092e-5,-2.322748601135849e-5,-1.0262512342819018e-8,-1.322989051622768e-5,-2.3029486169829173e-5,-1.0266164007946504e-8,-1.2840855736179594e-5,-2.2732545405069593e-5,-1.0268236392507776e-8,-1.2555169579427251e-5,-2.238231187733215e-5,-1.0268825150242116e-8,-1.2383914527037539e-5,-2.2038912589209548e-5,-1.0268347802691693e-8,-1.2307249887307113e-5,-2.1756613087809175e-5,-1.0267393640885903e-8,-1.2284812012886326e-5,-2.156813016555327e-5,-1.0266572608916944e-8,-1.2270971936084373e-5,-2.1479552451146128e-5,-1.0266376938115249e-8,-1.2227457536302338e-5,-2.1474911265539056e-5,-1.0267077590847187e-8,-1.2129749205895953e-5,-2.1525263563921737e-5,-1.0268689111523196e-8,-1.1967892292312714e-5,-2.1597450054922837e-5,-1.0271017429226725e-8,-1.174422548889918e-5,-2.166023896731968e-5,-1.0273764819876203e-8,-1.1470257655664928e-5,-2.1687790859828148e-5,-1.0276640831595281e-8,-1.1163872918540682e-5,-2.16613873970703e-5,-1.0279429528370393e-8,-1.0847087574647729e-5,-2.1570437594962387e-5,-1.0281991235380007e-8,-1.0544002989509588e-5,-2.141339145539365e-5,-1.0284216045362617e-8,-1.0278390240021108e-5,-2.1198652865103365e-5,-1.0285974464584003e-8,-1.0070447996162899e-5,-2.0945037086426453e-5,-1.028711043152021e-8,-9.932690801530476e-6,-2.068088652200719e-5,-1.028749799157689e-8,-9.86563644678306e-6,-2.0440844298465255e-5,-1.0287141168707594e-8,-9.854764583517574e-6,-2.0259766952748523e-5,-1.028626273479879e-8,-9.870619619233569e-6,-2.01644508838674e-5,-1.0285319481300823e-8,-9.8733786193769e-6,-2.0165339281957866e-5,-1.0284908068411034e-8,-9.821625784056985e-6,-2.0251252759600633e-5,-1.0285579389915266e-8,-9.683168074476673e-6,-2.0389683901633625e-5,-1.0287635145367275e-8,-9.444561568473699e-6,-2.053338593781372e-5,-1.0290997813059452e-8,-9.116224347150207e-6,-2.063177957102368e-5,-1.0295216467786993e-8,-8.731339354531077e-6,-2.0644132770129046e-5,-1.0299605534523448e-8,-8.338457137712565e-6,-2.055092931652111e-5,-1.030345694288755e-8,-7.98933323349338e-6,-2.0360097137701205e-5,-1.0306242488373733e-8,-7.72506620945875e-6,-2.0105711184980106e-5,-1.0307743277604975e-8,-7.564775484823967e-6,-1.983876173135379e-5,-1.0308080804889762e-8,-7.500921681843046e-6,-1.9612526930376168e-5,-1.0307656350511951e-8,-7.503139782780013e-6,-1.946768074753192e-5,-1.0307019062928134e-8,-7.528820005869814e-6,-1.9422601531502887e-5,-1.0306699910081859e-8,-7.535794278292598e-6,-1.947177763761887e-5,-1.0307063665786794e-8,-7.492269894596984e-6,-1.959128917115925e-5,-1.0308233957531626e-8,-7.381486721375345e-6,-1.974765598713154e-5,-1.0310113143840973e-8,-7.201498312177095e-6,-1.990624677978869e-5,-1.031247670749912e-8,-6.962107167616799e-6,-2.0037161470478344e-5,-1.031508699283958e-8,-6.680993863389137e-6,-2.011834907841151e-5,-1.0317770097194946e-8,-6.380273436048308e-6,-2.0136768138740442e-5,-1.032042648831648e-8,-6.0838277247680745e-6,-2.0088636779103125e-5,-1.0322983928965702e-8,-5.815108860030673e-6,-1.9979521669310532e-5,-1.0325335032912242e-8,-5.594817165694961e-6,-1.9824453315227466e-5,-1.0327309582072665e-8,-5.437930590768389e-6,-1.9647685779100526e-5,-1.0328712972235372e-8,-5.349939383493514e-6,-1.948122710398913e-5,-1.0329423078834094e-8,-5.3228826376455855e-6,-1.936095973346019e-5,-1.0329498903693821e-8,-5.332864110333339e-6,-1.9319532507723174e-5,-1.0329235310495402e-8,-5.341522628441661e-6,-1.9376734531154476e-5,-1.0329117209882681e-8,-5.303353476159965e-6,-1.953039383977173e-5,-1.0329676054612896e-8,-5.17823507516099e-6,-1.9752454282041895e-5,-1.0331308373795825e-8,-4.945019491343102e-6,-1.9993909540435985e-5,-1.0334140752283602e-8,-4.610138350751177e-6,-2.019829297048899e-5,-1.0337995748268947e-8,-4.206914461260477e-6,-2.0318725218684748e-5,-1.0342450652703292e-8,-3.7858145479968068e-6,-2.033162353691172e-5,-1.0346947057188743e-8,-3.3999204340748854e-6,-2.0242322080569558e-5,-1.0350921705190584e-8,-3.090978422107698e-6,-2.0081863583639396e-5,-1.035394277316305e-8,-2.879939472361453e-6,-1.9897267305424163e-5,-1.0355827001534681e-8,-2.7637461044958318e-6,-1.9738805558921248e-5,-1.035669501194934e-8,-2.7182918430026305e-6,-1.9647845328083208e-5,-1.0356930437472887e-8,-2.706078182001334e-6,-1.964815539595743e-5,-1.0357046501868146e-8,-2.6861280184476436e-6,-1.9742416449230415e-5,-1.035751449251452e-8,-2.623356484294166e-6,-1.9914165200530054e-5,-1.0358627867133187e-8,-2.495051690997066e-6,-2.0133848461016657e-5,-1.0360457505484327e-8,-2.2933525948354025e-6,-2.0366613404506264e-5,-1.0362901596694904e-8,-2.024101506874866e-6,-2.057945330065126e-5,-1.036578541391425e-8,-1.703438490176005e-6,-2.0746243231691587e-5,-1.0368950180661795e-8,-1.353670649395772e-6,-2.085034603832491e-5,-1.0372285844231933e-8,-9.995092065925437e-7,-2.0885306200609506e-5,-1.0375703780683756e-8,-6.650892091385618e-7,-2.085449651147433e-5,-1.0379079635308058e-8,-3.715968940342627e-7,-2.0770428531116953e-5,-1.0382217349452199e-8,-1.3503446063713592e-7,-2.065397945826239e-5,-1.0384871607393536e-8,3.635039213145238e-8,-2.053328258334241e-5,-1.0386834569506982e-8,1.451554926153161e-7,-2.0441523455916053e-5,-1.038805057918194e-8,2.0789280435282035e-7,-2.041250688557186e-5,-1.0388697272151172e-8,2.56355366977416e-7,-2.047315309918241e-5,-1.0389176849844525e-8,3.3464806040304173e-7,-2.0633626967615144e-5,-1.039000389350313e-8,4.896682666698106e-7,-2.0878520990299207e-5,-1.0391635630909641e-8,7.558554175414243e-7,-2.1164864508976094e-5,-1.0394332164603972e-8,1.1400137473200676e-6,-2.143168146622313e-5,-1.039811235383832e-8,1.6149011662753742e-6,-2.161972150492724e-5,-1.040278944838272e-8,2.1267889603254867e-6,-2.169252145724684e-5,-1.0408016370122865e-8,2.613791080986166e-6,-2.1648099623553002e-5,-1.0413314414030032e-8,3.0255611796536674e-6,-2.1516600834236966e-5,-1.0418136661790554e-8,3.335896657502066e-6,-2.1347475609993867e-5,-1.0422008383847894e-8,3.5455028334495375e-6,-2.1193595706788387e-5,-1.0424695027343131e-8,3.6771057866818085e-6,-2.1098205117584193e-5,-1.0426297045670991e-8,3.766730983759074e-6,-2.1087212163472165e-5,-1.0427207186394536e-8,3.8543118584060025e-6,-2.116678673670468e-5,-1.0427955059979016e-8,3.97556153049034e-6,-2.1325112935168602e-5,-1.0429021553114722e-8,4.156112148298531e-6,-2.1536968915716497e-5,-1.043071137120023e-8,4.4083884967787636e-6,-2.1769858276116903e-5,-1.0433124870667529e-8,4.731238299426264e-6,-2.199039967092715e-5,-1.0436213182297564e-8,5.111871251593329e-6,-2.216982148981789e-5,-1.0439862617282118e-8,5.5293180610449155e-6,-2.228781360239789e-5,-1.0443951826756803e-8,5.958483105439134e-6,-2.2334471279948907e-5,-1.0448355486385057e-8,6.3739591557127685e-6,-2.2310548005592115e-5,-1.0452908274701619e-8,6.753167656295747e-6,-2.2226596306971968e-5,-1.0457371227043073e-8,7.0788641774440105e-6,-2.2101555638768476e-5,-1.0461442256004719e-8,7.341270437022586e-6,-2.19610250197676e-5,-1.0464828194753588e-8,7.540107011405848e-6,-2.18351220744106e-5,-1.0467357564690674e-8,7.686656069240698e-6,-2.1755428418429816e-5,-1.0469080980364281e-8,7.805377469636384e-6,-2.175014455624397e-5,-1.047029980195859e-8,7.933563002743403e-6,-2.1836872868918745e-5,-1.0471493607166954e-8,8.116719413656968e-6,-2.2013889674084526e-5,-1.0473170238320335e-8,8.397782946960609e-6,-2.2253242470900754e-5,-1.0475713376965965e-8,8.801167458084262e-6,-2.2501424654771112e-5,-1.0479313312473675e-8,9.31809147430383e-6,-2.2692544610459407e-5,-1.0483994091602052e-8,9.903277804372193e-6,-2.2771894060168208e-5,-1.0489651043077342e-8,1.0488693236733184e-5,-2.2718401944810526e-5,-1.0496011071352977e-8,1.1008517592282977e-5,-2.2552507598399298e-5,-1.0502567400688094e-8,1.14214527653244e-5,-2.2325484053898436e-5,-1.0508639692043991e-8,1.1719729539192924e-5,-2.2098427892878435e-5,-1.051360321451119e-8,1.192434757606461e-5,-2.192293983959106e-5,-1.0517149141774825e-8,1.2073148493867486e-5,-2.1830348879371115e-5,-1.0519399549919799e-8,1.2208507379845121e-5,-2.1829582167914723e-5,-1.0520823108331641e-8,1.2368142087573956e-5,-2.1910517424363665e-5,-1.0522026852220468e-8,1.2579647860001937e-5,-2.204963465047748e-5,-1.0523548294514526e-8,1.2858046046948135e-5,-2.2216044306126058e-5,-1.052573427092128e-8,1.3205504635807662e-5,-2.2377097194277054e-5,-1.0528728383253077e-8,1.3612660353343853e-5,-2.2503232700248113e-5,-1.0532528837699294e-8,1.4061128311368573e-5,-2.257179941745656e-5,-1.053705767622001e-8,1.4526835423976653e-5,-2.2569659248670465e-5,-1.0542194374134102e-8,1.4983796312142356e-5,-2.2494425657141477e-5,-1.0547763574333112e-8,1.5407831934948618e-5,-2.2354282969079747e-5,-1.0553504640982075e-8,1.5779770461427512e-5,-2.2166624359187616e-5,-1.0559067684047334e-8,1.608797482690634e-5,-2.195590135189993e-5,-1.0564065337397685e-8,1.6330245854374478e-5,-2.1750905552668204e-5,-1.0568177866410433e-8,1.6515130621988764e-5,-2.1581513602797013e-5,-1.0571271898841906e-8,1.6662595891771928e-5,-2.1474755707688038e-5,-1.0573475716392125e-8,1.680367989659793e-5,-2.144982680559584e-5,-1.0575164031555221e-8,1.6977991855744892e-5,-2.15119081550659e-5,-1.0576851619497795e-8,1.7227451460833117e-5,-2.164590037929872e-5,-1.0579043607594197e-8,1.758528349482335e-5,-2.1813063305720084e-5,-1.0582122319913347e-8,1.8061786594786307e-5,-2.1955189701945334e-5,-1.058632473338257e-8,1.8632948981106676e-5,-2.200995658499017e-5,-1.0591773118012249e-8,1.9241195983456193e-5,-2.193466323120593e-5,-1.0598445172373046e-8,1.981317133003406e-5,-2.1726452282952587e-5,-1.0606040069575834e-8,2.0287448616256157e-5,-2.1425281858291863e-5,-1.061388459734303e-8,2.0636332778655594e-5,-2.109672690297479e-5,-1.0621077002227759e-8,2.087033260256244e-5,-2.0805852875933422e-5,-1.0626847060734854e-8,2.1026869693195923e-5,-2.0597119217422514e-5,-1.0630882019558624e-8,2.115329294074093e-5,-2.0487273010198692e-5,-1.0633405474768798e-8,2.129300028400665e-5,-2.0468775249628576e-5,-1.0635008899056331e-8,2.1477766769687902e-5,-2.0517857674518222e-5,-1.0636384654839218e-8,2.172530639983127e-5,-2.0602735888928814e-5,-1.0638109815842078e-8,2.203989369531137e-5,-2.0690072956350867e-5,-1.0640550610319622e-8,2.2414327228279076e-5,-2.0749586688981025e-5,-1.0643876480653403e-8,2.2832428864176618e-5,-2.075731437602081e-5,-1.0648123545462657e-8,2.327186373709147e-5,-2.06979052512023e-5,-1.065324691100052e-8,2.370725263408254e-5,-2.056607264478361e-5,-1.065912813728469e-8,2.4113571523498897e-5,-2.0367140342581537e-5,-1.0665546197757955e-8,2.4469666599175597e-5,-2.011644324456059e-5,-1.067215081453571e-8,2.4761457155718238e-5,-1.9837455761494462e-5,-1.0678483547801098e-8,2.4984396740016067e-5,-1.9558825643028435e-5,-1.0684064625935296e-8,2.5144939672969598e-5,-1.9310587473940774e-5,-1.0688525639022025e-8,2.5260818881569855e-5,-1.9119802585786575e-5,-1.06917361236997e-8,2.535994562171527e-5,-1.9005914717674657e-5,-1.069386581323808e-8,2.5477696466233576e-5,-1.897609088271257e-5,-1.0695349149176802e-8,2.5652094341733997e-5,-1.902096367210599e-5,-1.0696767956414568e-8,2.5916298087693046e-5,-1.9111975005796678e-5,-1.0698709732170148e-8,2.628859728374691e-5,-1.9202643001807574e-5,-1.0701666562329869e-8,2.6762094197675117e-5,-1.9236556751696734e-5,-1.0705996336353121e-8,2.729911355674748e-5,-1.9163344524585584e-5,-1.0711891767678148e-8,2.783684602254258e-5,-1.895885387153898e-5,-1.0719277613221644e-8,2.8306670586864564e-5,-1.8639334239086277e-5,-1.072766183557865e-8,2.8659855505782475e-5,-1.8258763113995928e-5,-1.073612159190717e-8,2.8885279659063856e-5,-1.7888184927921706e-5,-1.0743575505291491e-8,2.9009231738796605e-5,-1.7588764782654586e-5,-1.0749225136080199e-8,2.908000233439939e-5,-1.7393518711195572e-5,-1.0752864147570606e-8,2.914855079008243e-5,-1.7304111401313012e-5,-1.0754868997586099e-8,2.9254770735155143e-5,-1.7298721919266967e-5,-1.0755947029287413e-8,2.9421960148790195e-5,-1.73433769434448e-5,-1.0756840443938963e-8,2.9657262395368594e-5,-1.7401543433202763e-5,-1.075813349050785e-8,2.9954830790562838e-5,-1.7440335048629465e-5,-1.0760197584755174e-8,3.0299471035757358e-5,-1.7433879737981824e-5,-1.0763229561035464e-8,3.066988743140981e-5,-1.7365039408173015e-5,-1.0767308977273792e-8,3.104156445903691e-5,-1.7226340848682806e-5,-1.0772421289059723e-8,3.138958150404849e-5,-1.7020431608455362e-5,-1.0778433463519163e-8,3.169160978062888e-5,-1.67599800034654e-5,-1.0785050830896731e-8,3.193113385062856e-5,-1.6466649719056538e-5,-1.0791801522036606e-8,3.2100549457274216e-5,-1.6168735086317945e-5,-1.0798090040294278e-8,3.2203473041458363e-5,-1.5897357896149383e-5,-1.080332573716205e-8,3.225558795119785e-5,-1.568153341658853e-5,-1.0807089151843031e-8,3.2283527758016355e-5,-1.5542734995758057e-5,-1.0809272801144117e-8,3.232156973954858e-5,-1.548986537631878e-5,-1.0810136690642487e-8,3.24062788787755e-5,-1.551564386066977e-5,-1.0810253821627844E-08,3.256954672694955e-5,-1.5595319915829232e-5,-1.0810370807169095e-8,3.2830743045217534e-5,-1.5688646392023816e-5,-1.0811243374832355e-8,3.318930936264058e-5,-1.5746136030541182e-5,-1.0813499406816032e-8,3.362016828548337e-5,-1.572010074949781e-5,-1.0817540474292183e-8,3.4075238666891787e-5,-1.5579179787124913e-5,-1.0823450353064908e-8,3.449382518613816e-5,-1.532196370613026e-5,-1.0830892582439516e-8,3.482107455406541e-5,-1.498254328611866e-5,-1.0839063244369992e-8,3.502767239053273e-5,-1.4622079522363778e-5,-1.0846829814097262e-8,3.5120439857015004e-5,-1.4307820231652071e-5,-1.085309302508078e-8,3.51375862864246e-5,-1.4089687106817873e-5,-1.085719959088525e-8,3.513199200269295e-5,-1.3986345854532377e-5,-1.085914650566585e-8,3.51525500412995e-5,-1.3985560988209588e-5,-1.085947705163363e-8,3.523209339490654e-5,-1.4054646803086456e-5,-1.0858988747294016e-8,3.5384088933798624e-5,-1.4153334684894148e-5,-1.0858452300955869e-8,3.560538153213612e-5,-1.4243709791482467e-5,-1.0858457682387729e-8,3.5881218350812025e-5,-1.4295764431560704e-5,-1.0859389106431877e-8,3.619005612992247e-5,-1.4289538747822578e-5,-1.0861464399875234e-8,3.650727263331189e-5,-1.4215445163763979e-5,-1.0864770150441248e-8,3.680795793798622e-5,-1.4073968871802461e-5,-1.0869255064842456e-8,3.7069338849790505e-5,-1.3875233842953704e-5,-1.0874690311021376e-8,3.7273324238066565e-5,-1.3638322204225281e-5,-1.0880636211450608e-8,3.740935211446729e-5,-1.338984019635138e-5,-1.0886460859978193e-8,3.747723555199965e-5,-1.3161108246832657e-5,-1.0891439508632244e-8,3.748918890039127e-5,-1.2983612439641286e-5,-1.0894923864558378e-8,3.746992648426565e-5,-1.2882969889767162e-5,-1.0896531846094513e-8,3.745388166964016e-5,-1.2872486930655807e-5,-1.089628939077259e-8,3.7479301400060466e-5,-1.2948111531254483e-5,-1.089466332568615e-8,3.758006931596514e-5,-1.3086710784613064e-5,-1.0892467653005773e-8,3.7777099336497654e-5,-1.3248905734680901e-5,-1.0890674230236611e-8,3.807156828641263e-5,-1.3386503835473725e-5,-1.0890190192257392e-8,3.844207700891592e-5,-1.3453370708504295e-5,-1.0891659080748418e-8,3.8847217212184006e-5,-1.341755372714709e-5,-1.0895313751720727e-8,3.9234030267991595e-5,-1.3271607631699584e-5,-1.090089279363746e-8,3.955132226947631e-5,-1.3037539781839813e-5,-1.0907643242370493e-8,3.976462669241938e-5,-1.2763223288738137e-5,-1.0914452499003047e-8,3.9867493531828635e-5,-1.250952451713426e-5,-1.0920130006578416e-8,3.988372523989806e-5,-1.2331758085782543e-5,-1.0923768775661982e-8,3.9858740281902724e-5,-1.226291312067013e-5,-1.0925025267279314e-8,3.98438771345933e-5,-1.2305852412647015e-5,-1.0924174807119913e-8,3.988096864166715e-5,-1.2436775734862486e-5,-1.092193559817097e-8,3.9993234799773925e-5,-1.2616327199137168e-5,-1.0919186656117713e-8,4.0184029323987886e-5,-1.2802124998079611e-5,-1.0916728214422174e-8,4.0441034122307655e-5,-1.295806215039957e-5,-1.0915158387722742e-8,4.07423430323965e-5,-1.3059008181614689e-5,-1.0914851840032176e-8,4.106194258997215e-5,-1.309190696252388e-5,-1.0915982377055156e-8,4.137369026554492e-5,-1.305496471159586e-5,-1.0918538217819229e-8,4.165397699143815e-5,-1.295627528662622e-5,-1.0922312589289403e-8,4.188372567499801e-5,-1.281253335343146e-5,-1.0926886273075621e-8,4.205038798547874e-5,-1.2647779157268254e-5,-1.0931637253225023e-8,4.2150263329725885e-5,-1.2491600175957169e-5,-1.0935808929506866e-8,4.219089514943613e-5,-1.2376014975777942e-5,-1.0938645719799141e-8,4.219264556971658e-5,-1.2330443038611213e-5,-1.0939574041035733e-8,4.2187994684927e-5,-1.2374868917154073e-5,-1.0938381011529256e-8,4.221708942536862e-5,-1.251262722220375e-5,-1.0935330563847715e-8,4.2319148750577894e-5,-1.272563608677644e-5,-1.0931164753811414e-8,4.252146931834362e-5,-1.2975210570017808e-5,-1.0926967333923104e-8,4.282981205890698e-5,-1.3209939979367455e-5,-1.0923913734952636e-8,4.3224317253663856e-5,-1.3379021269503886e-5,-1.092296888156952e-8,4.3663191015489984e-5,-1.3446687017306154e-5,-1.0924616375420668e-8,4.40932553261884e-5,-1.3402692615521834e-5,-1.0928699864093918e-8,4.446391154055205e-5,-1.3265486287865059e-5,-1.0934436131087437e-8,4.4740262897078254e-5,-1.3077370375528966e-5,-1.0940609312170373e-8,4.491180449520049e-5,-1.2893262674070154e-5,-1.0945898968800855e-8,4.49944176700801e-5,-1.2766207079580588e-5,-1.0949239480507803e-8,4.502512200115446e-5,-1.273370298418019e-5,-1.0950092267772875e-8,4.505116850684658e-5,-1.2808910095088956e-5,-1.0948539845884595e-8,4.511705275984765e-5,-1.2979305349759284e-5,-1.0945188231944347e-8,4.5253768849291526e-5,-1.3212635289537497e-5,-1.0940942427650663e-8,4.547343858202198e-5,-1.3467274984818715e-5,-1.093675586758881e-8,4.576991139681106e-5,-1.370288962080165e-5,-1.0933437996680767e-8,4.6123562686564354e-5,-1.3888173614010929e-5,-1.0931552459312198e-8,4.6507586318521756e-5,-1.4004532581867268e-5,-1.0931388495325245e-8,4.689364295154041e-5,-1.404638935558007e-5,-1.0932970781736282e-8,4.725592017948633e-5,-1.401955872819049e-5,-1.0936077710211673e-8,4.7573669880768315e-5,-1.3939013934426217e-5,-1.0940262282537435e-8,4.783282623871706e-5,-1.3826794886489019e-5,-1.0944887017204275e-8,4.8027394648472436e-5,-1.3710116999369636e-5,-1.0949190756732851e-8,4.816102679731794e-5,-1.361918978051325e-5,-1.095239527820225e-8,4.824866180786038e-5,-1.3583965343721564e-5,-1.0953844774146032e-8,4.8317389669767263E-05,-1.3629077500997938e-5,-1.0953156144793383e-8,4.8404937665998705e-5,-1.3766894228811147e-5,-1.0950352515756894e-8,4.85539270343216e-5,-1.3990186698127629e-5,-1.094594628661613e-8,4.880120852726276e-5,-1.4267952993854126e-5,-1.0940929580088114e-8,4.9164604434804093e-5,-1.4548760923785778e-5,-1.0936627198037842e-8,4.963284107903462e-5,-1.4773613411439147e-5,-1.0934389782899522e-8,5.016508945338154e-5,-1.4894876338232566e-5,-1.0935178671721424e-8,5.070227547728938e-5,-1.4892932210451892e-5,-1.0939190020118924e-8,5.118560276541905e-5,-1.4782534477633037e-5,-1.0945713139716886e-8,5.157392379064546e-5,-1.4606625431828425e-5,-1.095332893238933e-8,5.185338963389235e-5,-1.4421810233716862e-5,-1.0960371481365232e-8,5.203770610741841e-5,-1.4282157086463557e-5,-1.0965440644733544e-8,5.216122418436789e-5,-1.422646572966351e-5,-1.0967760623641757e-8,5.226841451573015e-5,-1.4271353392898255e-5,-1.0967288706004566e-8,5.2402901302713924e-5,-1.4410350265664105e-5,-1.0964601820102489e-8,5.2598368352539667e-5,-1.4617978010402564e-5,-1.0960658830434025e-8,5.2872840342696726e-5,-1.4857176091440661e-5,-1.0956540629101209e-8,5.322704970841118e-5,-1.5088075305254894e-5,-1.0953236332976238e-8,5.364663492512684e-5,-1.5275993367745722e-5,-1.0951500603035131e-8,5.410696514106418e-5,-1.539698624027727e-5,-1.095178087382418e-8,5.457893133346143e-5,-1.5440298921740233e-5,-1.0954194761142424e-8,5.50342383558213e-5,-1.540806131983914e-5,-1.0958542424790509e-8,5.544932692850507e-5,-1.5313173657149106e-5,-1.096434545062792e-8,5.580777697902618e-5,-1.5176465955951547e-5,-1.0970910845978872e-8,5.610161114139606e-5,-1.502389729946295e-5,-1.0977420875607443e-8,5.633207828382777e-5,-1.4883981469539802e-5,-1.0983045974823884e-8,5.651030827952544e-5,-1.4785143953867945e-5,-1.0987069782932988e-8,5.6657843445042456E-05,-1.475241870537396e-5,-1.098900869828785e-8,5.68064043339674e-5,-1.480281230944594e-5,-1.0988713689162896e-8,5.6995445257911e-5,-1.493919710310919e-5,-1.0986451645489575e-8,5.726569833881333e-5,-1.5144085304198487e-5,-1.0982961665724738e-8,5.7647873217573626e-5,-1.537676462498628e-5,-1.097945336000276e-8,5.8148783022304093e-5,-1.5578618482013747e-5,-1.0977468969124607e-8,5.8741629395056166e-5,-1.5689303712884644e-5,-1.0978518978595156e-8,5.936880170599819e-5,-1.5669452550320848e-5,-1.0983516728908241e-8,5.995982222233368e-5,-1.5518212400740367e-5,-1.0992265385709335e-8,6.045655109961612e-5,-1.5274524989521094e-5,-1.100336461316192e-8,6.083213388443301e-5,-1.500128721893175e-5,-1.1014687824535179e-8,6.109517706905173e-5,-1.476232162248893e-5,-1.1024177858417426e-8,6.128078642644321e-5,-1.4603933293794295e-5,-1.1030515003487311e-8,6.14360565632286e-5,-1.4546623392676997e-5,-1.1033379525122147e-8,6.160676979381152e-5,-1.4585862441534919e-5,-1.1033325129027129e-8,6.182836446050053e-5,-1.4698115916188576e-5,-1.103144492460905e-8,6.212137962144658e-5,-1.4848716247797194e-5,-1.1029016395917635e-8,6.249043218855688e-5,-1.499957486442772e-5,-1.1027231651313366e-8,6.292575713367833e-5,-1.5115848315998846e-5,-1.1027035010884309e-8,6.340659244996193e-5,-1.5171078050374148e-5,-1.1029042575856415e-8,6.39057084276371e-5,-1.5150397168465046e-5,-1.1033511588368882e-8,6.439430170432664e-5,-1.5051632264841132e-5,-1.1040338007405747e-8,6.484651366485014e-5,-1.4884453987230887e-5,-1.1049078955669309e-8,6.524295871579131e-5,-1.4668006957840344e-5,-1.1059009733669053e-8,6.557293822920603e-5,-1.4427696477046931e-5,-1.106922243082436e-8,6.583546021894932e-5,-1.4191801641639522e-5,-1.1078757988711264e-8,6.603942429151922e-5,-1.3988227254888844e-5,-1.1086754263160646e-8,6.620324712438544e-5,-1.3841351539194972e-5,-1.1092584244638724e-8,6.635399675116738e-5,-1.376871069724712e-5,-1.1095960923446284e-8,6.652567539394843e-5,-1.377713360613599e-5,-1.1097002545640146e-8,6.675562941069513e-5,-1.3858317394900903e-5,-1.109626926494747e-8,6.707780774668518e-5,-1.3985038180359028e-5,-1.1094780789983727e-8,6.751241829499467e-5,-1.4110813964274978e-5,-1.1093985695546706e-8,6.805398404589733e-5,-1.4176969697956724e-5,-1.1095592658974113e-8,6.866384590550756e-5,-1.4129570457204582e-5,-1.1101140430408416e-8,6.927548828970987e-5,-1.3942193950697216e-5,-1.1111323602410547e-8,6.981586375490909e-5,-1.3632135932979031e-5,-1.1125409233657399e-8,7.023376113526364e-5,-1.3257268294156674e-5,-1.1141255562749935e-8,7.051856313032443e-5,-1.2893039413830864e-5,-1.1156102060587921e-8,7.06990864524921e-5,-1.2603544775620664e-5,-1.1167680283957444e-8,7.082667807448929e-5,-1.2422764469719474e-5,-1.1174960488599823e-8,7.095499623308146e-5,-1.2351727669469376e-5,-1.1178226969257668e-8,7.112590319904138e-5,-1.2366745927631601e-5,-1.1178667858819269e-8,7.136360199813396e-5,-1.2431038164156497e-5,-1.117783577309838e-8,7.167471562637514e-5,-1.2504825814492575e-5,-1.1177222677717251e-8,7.20513073116622e-5,-1.2552337068439892e-5,-1.1178022183958767e-8,7.247483939519828e-5,-1.2546082636510993e-5,-1.1181041603564716e-8,7.292025057925622e-5,-1.2469246626440453e-5,-1.1186692155499417e-8,7.335996924164086e-5,-1.2316707228409032e-5,-1.1195001134773114e-8,7.376777185043507e-5,-1.2094851223874839e-5,-1.1205627668886617e-8,7.41223204444516e-5,-1.1820215935622424e-5,-1.1217891224875756e-8,7.441008632046292e-5,-1.1516986111407657e-5,-1.1230839822596301e-8,7.462727595584035e-5,-1.121357421653002e-5,-1.1243374292470443e-8,7.478054238337684e-5,-1.0938760084437633e-5,-1.1254418929902535e-8,7.48865297826223e-5,-1.0717820966566956e-5,-1.1263107130437595e-8,7.497036903850236e-5,-1.0568904309436396e-5,-1.1268942299422062e-8,7.506321783824891e-5,-1.0499811842188604e-5,-1.1271900341615984e-8,7.519881869817697e-5,-1.0505257389349248e-5,-1.1272463646632064e-8,7.540869080999105e-5,-1.056479190521469e-5,-1.1271600290428743e-8,7.571546174872404e-5,-1.0642370424357846e-5,-1.1270700670162078e-8,7.61246291272292e-5,-1.0689513165947758e-5,-1.1271446895380041e-8,7.661678435223831e-5,-1.0654320433158899e-5,-1.1275546237460665e-8,7.71448147730922e-5,-1.0497201563490087e-5,-1.1284249952033519e-8,7.764205458950148e-5,-1.0209521680141907e-5,-1.1297711821998253e-8,7.804347387462571e-5,-9.824875614952504e-6,-1.1314530735816466e-8,7.831185681715099e-5,-9.411967862924406e-6,-1.133196933848187e-8,7.84533388443129e-5,-9.048847109690942e-6,-1.134696307423481e-8,7.851205357156255e-5,-8.792740654590127e-6,-1.1357361358067248e-8,7.854866512846068e-5,-8.662856311024963e-6,-1.1362623719687482e-8,7.861729582289454e-5,-8.642245361453145e-6,-1.1363680031735883e-8,7.875197622822127e-5,-8.691794929389404e-6,-1.1362277223349593e-8,7.896418283479847e-5,-8.765841602924702e-6,-1.1360297098831838e-8,7.924709191886245e-5,-8.823284793479496e-6,-1.1359315593534433e-8,7.95818503140842e-5,-8.833269852576455e-6,-1.1360426738010168e-8,7.994322616848324e-5,-8.777041367256928e-6,-1.1364233495034238e-8,8.030394161526125e-5,-8.647855079034407e-6,-1.1370898907447606e-8,8.063800618353983e-5,-8.450099063104403e-6,-1.13801913797548e-8,8.092351739561471e-5,-8.197986994855086e-6,-1.139151507594174e-8,8.114517708580553e-5,-7.913748681025796e-6,-1.1403947928868321e-8,8.129649091610874e-5,-7.625053643838189e-6,-1.1416325803923466e-8,8.13812925714093e-5,-7.361498470228608e-6,-1.1427396960663914e-8,8.141408671042445e-5,-7.150374877007221e-6,-1.143603391639288e-8,8.141887617018724e-5,-7.012246466696308e-6,-1.1441458496670813e-8,8.142639354204631e-5,-6.9569547070524565e-6,-1.1443423882852663e-8,8.146989071188947e-5,-6.980733178277085e-6,-1.1442305223764873e-8,8.157988588747373e-5,-7.0650386142183395e-6,-1.1439079612900346e-8,8.177834068751832e-5,-7.177494714956207e-6,-1.1435206339439226e-8,8.207274310460953e-5,-7.275416748518267e-6,-1.1432431508335396e-8,8.24510452990543e-5,-7.312655501458012e-6,-1.1432513684254343e-8,8.287939415777408e-5,-7.250137973215447e-6,-1.14368513607406e-8,8.330545375814392e-5,-7.068926237825051e-6,-1.1446018896562171e-8,8.366980628525399e-5,-6.781801504635946e-6,-1.1459328098698728e-8,8.392475651610919e-5,-6.436424280153653e-6,-1.147469615909485e-8,8.405365240588183e-5,-6.103856380286995e-6,-1.1489120917511639e-8,8.407948845031888e-5,-5.853970011362507e-6,-1.1499731792143241e-8,8.405583920133282e-5,-5.729599983451548e-6,-1.1504887252346792e-8,8.404479026302159e-5,-5.733734864168806e-6,-1.1504668019600196e-8,8.409487550610288e-5,-5.8348805222652595e-6,-1.1500567610929476e-8,8.422953279231353e-5,-5.983832090974439e-6,-1.1494726575699467e-8,8.44475135877195e-5,-6.130958240035688e-6,-1.1489203384318796e-8,8.473016954110671e-5,-6.237308506807428e-6,-1.1485549198160168e-8,8.504997460131159e-5,-6.278822698858891e-6,-1.1484684339034437e-8,8.537722202659041e-5,-6.24604350020151e-6,-1.1486947837148801e-8,8.56843216611937e-5,-6.141962433049987e-6,-1.149219497561945e-8,8.594839135529726e-5,-5.979584647913548e-6,-1.1499878642207251e-8,8.615303700245352e-5,-5.7797022876110846e-6,-1.1509108282661373e-8,8.628989016331793e-5,-5.568700527437504e-6,-1.1518717192858226e-8,8.636003840534361e-5,-5.3759285752394796e-6,-1.1527377565087991e-8,8.637502793286532e-5,-5.230188533993722e-6,-1.1533784620290696e-8,8.635675385529202e-5,-5.155286769746592e-6,-1.1536897415011626e-8,8.63355224875678e-5,-5.165182714998419e-6,-1.1536184302568082e-8,8.634591892159362e-5,-5.259775561616308e-6,-1.1531803962477889e-8,8.642073115040163e-5,-5.4226586174864975e-6,-1.152465872996433e-8,8.65839351077441e-5,-5.622046886179956e-6,-1.1516287597576716e-8,8.684430755827092e-5,-5.8153923203604484e-6,-1.1508609070013934e-8,8.719130249188195e-5,-5.95728092691672e-6,-1.1503558232602766e-8,8.759455242721197e-5,-6.009491974966764e-6,-1.150267039330855e-8,8.800800850055604e-5,-5.95147211987009e-6,-1.1506668360848453e-8,8.837913286366379e-5,-5.7886627769627485e-6,-1.1515138637633855e-8,8.866225574551908e-5,-5.555373933240397e-6,-1.1526431984484355e-8,8.883301404506053e-5,-5.309063543337344e-6,-1.1537937388838975e-8,8.889840023466499e-5,-5.115164449411993e-6,-1.1546777723907165e-8,8.889656623832367e-5,-5.026383401286591e-6,-1.1550737585091733e-8,8.888441107440784e-5,-5.065123260574208e-6,-1.154900893343037e-8,8.891787950494431e-5,-5.21765631045529e-6,-1.1542374452129857e-8,8.903443511633252e-5,-5.442337151279303e-6,-1.1532775965427147e-8,8.924516874443352e-5,-5.686194762207577e-6,-1.1522563607641413e-8,8.953744138069596e-5,-5.90108623252899e-6,-1.1513813593362013e-8,8.988360538093972e-5,-6.053558073616242e-6,-1.1507938669655695e-8,9.025045498071756e-5,-6.127657333921901e-6,-1.1505594789433005e-8,9.06062942791196e-5,-6.123105910016481e-6,-1.1506768232466762e-8,9.092503624012695e-5,-6.051676523403866e-6,-1.1510921388865986e-8,9.118813404710323e-5,-5.933591903961702e-6,-1.1517128603869335e-8,9.138545565664259e-5,-5.794575433039127e-6,-1.1524189430321015e-8,9.151591271894805e-5,-5.66334449111308e-6,-1.1530742462923101e-8,9.158811085003475e-5,-5.568946066028995e-6,-1.1535410442970295e-8,9.162072310193748e-5,-5.537335450390624e-6,-1.1536995250412474e-8,9.164182458652515e-5,-5.58694690455087e-6,-1.1534711584048976e-8,9.168620213239225e-5,-5.723696108466005e-6,-1.152841879943091e-8,9.178992959661302e-5,-5.936777568263604e-6,-1.1518779345972147e-8,9.198249027190544e-5,-6.197337314678204e-6,-1.1507263760530225e-8,9.227820821065515e-5,-6.461935833751877e-6,-1.1495944136778205e-8,9.266993147833276e-5,-6.6812950165578724e-6,-1.1487076652143873e-8,9.31278874804674e-5,-6.8125918600802576e-6,-1.1482550916430714e-8,9.360510332344588e-5,-6.831677883244499e-6,-1.1483350519634967e-8,9.404841563306238e-5,-6.741163582188049e-6,-1.1489195433374426e-8,9.441208477567966e-5,-6.57151688468949e-6,-1.1498505989231926e-8,9.467017588287623e-5,-6.374429642810231e-6,-1.1508741618074349e-8,9.482411049793587e-5,-6.20983930092064e-6,-1.1517053215341923e-8,9.490280063124226e-5,-6.12986333255191e-6,-1.1521069363394867e-8,9.49546446025167e-5,-6.164351503798526e-6,-1.1519561592846616e-8,9.503343971679581e-5,-6.312991752990002e-6,-1.1512751366586703e-8,9.518296893644879e-5,-6.546957614728857e-6,-1.1502154648514587e-8,9.54258618892581e-5,-6.819249442704191e-6,-1.1490053068776307e-8,9.576033063758811e-5,-7.079181183195936e-6,-1.147882172959562e-8,9.616458460450145e-5,-7.285251177458946e-6,-1.1470361003639736e-8,9.660557779129375e-5,-7.412533789784719e-6,-1.1465779950685564e-8,9.70480253349657e-5,-7.454061673847203e-6,-1.1465342600263835e-8,9.746107955264904e-5,-7.418094434670623e-6,-1.1468592015480105e-8,9.782204348641294e-5,-7.323724614127018e-6,-1.1474549309030842e-8,9.811778004559563e-5,-7.196576837891347e-6,-1.1481914889362466e-8,9.834488254743438e-5,-7.065336659585935e-6,-1.1489242896633806e-8,9.85094970832235e-5,-6.958985648334306e-6,-1.1495095179541215e-8,9.862717385640469e-5,-6.90413645241066e-6,-1.1498196338733799e-8,9.8722513616579e-5,-6.921815594705209e-6,-1.1497607920369037e-8,9.882784972662761e-5,-7.023345607949021e-6,-1.1492923262731212e-8,9.897986411696639e-5,-7.205665995436498e-6,-1.148446098537155e-8,9.921318771121227e-5,-7.447586546246423e-6,-1.1473395307025696e-8,9.955120060763667e-5,-7.709619295232465e-6,-1.146172404791077e-8,9.999642762624879e-5,-7.940035443749168e-6,-1.1451968869426325e-8,1.0052494732063333e-4,-8.087647613726074e-6,-1.1446579632065744e-8,1.0108913471724907e-4,-8.117933472199266e-6,-1.1447169892722494e-8,1.016297505105532e-4,-8.025879558080473e-6,-1.1453875399227287e-8,1.0209339869072522e-4,-7.839290063002508e-6,-1.1465163461608666e-8,1.0244827762320929e-4,-7.610760831100816e-6,-1.1478236898852096e-8,1.0269227243374284e-4,-7.4019405703705335e-6,-1.1489879553959839e-8,1.0285149371859283e-4,-7.266368505272329e-6,-1.1497391887392736e-8,1.0297118136782965e-4,-7.236336161787715e-6,-1.1499280042755185e-8,1.0310270675950262e-4,-7.316726316035047e-6,-1.1495523318503002e-8,1.0329056362595021e-4,-7.486349598341804e-6,-1.148742159707798e-8,1.0356255453322497e-4,-7.705430672579288e-6,-1.1477144225777614e-8,1.0392519544575366e-4,-7.926623660176716e-6,-1.1467147125266295e-8,1.0436481553339658e-4,-8.106347722194308e-6,-1.1459615835618466e-8,1.048532139215313e-4,-8.213492770649762e-6,-1.1456056721422704e-8,1.0535556460250918e-4,-8.23373787288498e-6,-1.1457100913129077e-8,1.0583805546501133e-4,-8.169439622731186e-6,-1.1462518463608636e-8,1.0627352735391126e-4,-8.036400609196678e-6,-1.1471385560392026e-8,1.066445607363988e-4,-7.859266130393587e-6,-1.1482325768957206e-8,1.0694441306334356e-4,-7.666977342055716e-6,-1.1493758257334187e-8,1.0717666268625118e-4,-7.489017281889044e-6,-1.1504111986789331e-8,1.0735435490295485e-4,-7.35244966639261e-6,-1.1511999323604564e-8,1.0749903983642938e-4,-7.2792806829164845e-6,-1.1516363131548234e-8,1.0763957831135115e-4,-7.283580274524651e-6,-1.151661702847303e-8,1.0781007680501017e-4,-7.368012685883945e-6,-1.1512793302970118e-8,1.0804590054700001e-4,-7.520061810504988e-6,-1.1505692043057436e-8,1.0837680611466255e-4,-7.709425069854278e-6,-1.1496977420176755e-8,1.0881740161785823e-4,-7.889347522041987e-6,-1.1489103221812277e-8,1.0935759791410143e-4,-8.004876957400208e-6,-1.1484917776821892e-8,1.099584343313986e-4,-8.008601428695032e-6,-1.1486882532745956e-8,1.1055881062444225e-4,-7.879155597116695e-6,-1.1496092004950944e-8,1.1109371258594231e-4,-7.633039843956237e-6,-1.1511581608136923E-08,1.1151663459051103e-4,-7.321605202687162e-6,-1.1530431309502565e-8,1.1181492903404441e-4,-7.013454241810893e-6,-1.1548741122352925e-8,1.1201106022014476e-4,-6.771340174468865e-6,-1.1562985724005811e-8,1.1215140197415839e-4,-6.634405209780007e-6,-1.1571068149846324e-8,1.1228984212495073e-4,-6.611278102413541e-6,-1.1572697123814852e-8,1.1247315925664164e-4,-6.6831267112462406e-6,-1.1569144942454731e-8,1.127316993096942e-4,-6.812598750203812e-6,-1.156266778319374e-8,1.1307579932787652e-4,-6.954602663343077e-6,-1.1555859496188551e-8,1.1349688400417341e-4,-7.066217820959545e-6,-1.1551101049908461e-8,1.139717903089487e-4,-7.114299397794903e-6,-1.1550167056351804e-8,1.1446891416054345e-4,-7.080077937874377e-6,-1.1554002562827165e-8,1.149548174283551e-4,-6.960537575809596e-6,-1.1562667346861427e-8,1.1540007923220339e-4,-6.766933444370123e-6,-1.1575426285469924e-8,1.1578354861211906e-4,-6.521295786051894e-6,-1.1590947546989276e-8,1.1609463410885247e-4,-6.2519478086589645e-6,-1.160756007562344e-8,1.1633376296363593e-4,-5.989012039941205e-6,-1.1623518348194946e-8,1.1651156393922294e-4,-5.760573051355079e-6,-1.1637234212047214e-8,1.1664740182339614e-4,-5.589622358594828e-6,-1.1647459659802337e-8,1.1676759334021895e-4,-5.4915067272458905e-6,-1.1653428976732367e-8,1.1690326783015823e-4,-5.471531648050538e-6,-1.1654974611229112e-8,1.1708746557034123e-4,-5.5225030012895636e-6,-1.1652632718742514e-8,1.1735068033667883e-4,-5.622479874781477e-6,-1.1647735276380047e-8,1.1771412944112854e-4,-5.734062550996382e-6,-1.1642435438662262e-8,1.1818113725851937e-4,-5.8076621481172495e-6,-1.163954187668793e-8,1.1872926880585935e-4,-5.791344442245663e-6,-1.1642004245374285e-8,1.1930855430309953e-4,-5.647553044674574e-6,-1.1651984086518556e-8,1.1985155215788543e-4,-5.371443175151925e-6,-1.1669760410394222e-8,1.2029547121095116e-4,-4.99995084485974e-6,-1.1693115291372944e-8,1.2060678781026997e-4,-4.6024408688642385e-6,-1.1717833613867049e-8,1.2079400904598451e-4,-4.255199093046226e-6,-1.173926368756903e-8,1.2090126966665237e-4,-4.0137842781003e-6,-1.1754062382778059e-8,1.2098843584166365e-4,-3.897678566972292e-6,-1.176115704922468e-8,1.2111008984554611e-4,-3.891400665164609e-6,-1.1761637208694449e-8,1.213022496940009e-4,-3.95630760713687e-6,-1.1757971241563372e-8,1.2157839399120963e-4,-4.044896229076136e-6,-1.1753097167220337e-8,1.2193195516922581e-4,-4.112420305157807e-6,-1.1749718015863004e-8,1.2234182152848596e-4,-4.124267718560327e-6,-1.174987984666976e-8,1.227785275255919e-4,-4.059624660286843e-6,-1.1754780294877045e-8,1.2321007408265877e-4,-3.9124489345179326e-6,-1.1764728817057517e-8,1.2360698042256985e-4,-3.6904598768444323e-6,-1.1779212189448352e-8,1.2394631226203136e-4,-3.4126109266878824e-6,-1.1797041115608418e-8,1.242144823774108e-4,-3.1055077065965403e-6,-1.1816559520484416e-8,1.2440867826661164e-4,-2.799226073876711e-6,-1.1835897138338729e-8,1.2453685337986063e-4,-2.523031477587932e-6,-1.1853238148010125e-8,1.2461646512564885e-4,-2.301547896694e-6,-1.186706784611472e-8,1.2467235994619418e-4,-2.1516861724259745e-6,-1.1876371614580685e-8,1.2473410454800834e-4,-2.0803083645591164e-6,-1.1880779589050701e-8,1.2483283115915695e-4,-2.0825349597226646e-6,-1.1880660082478308e-8,1.2499748069359724e-4,-2.14069314709482e-6,-1.1877165836353078e-8,1.2525010295091812e-4,-2.2241823656063393e-6,-1.1872226457607199e-8,1.2559995192754653e-4,-2.2912602137460035e-6,-1.1868437590207958e-8,1.2603705811992328e-4,-2.2945068883105327e-6,-1.1868742828901586e-8,1.2652772420829495e-4,-2.191539426597471e-6,-1.1875794007561012e-8,1.2701630641300356e-4,-1.9604423994929207e-6,-1.1890987874401511e-8,1.2743771444703272e-4,-1.6147035257241735e-6,-1.1913481241468902e-8,1.2774003479321577e-4,-1.2075860053489198e-6,-1.1939854087612531e-8,1.2790733523272295e-4,-8.17705683285339e-7,-1.1965019553764724e-8,1.279679628288094e-4,-5.194673008425952e-7,-1.1984174542305361e-8,1.279816584662349e-4,-3.5470155045429583e-7,-1.1994671485721905e-8,1.280138942373341e-4,-3.2155917529888203e-7,-1.1996712018024326e-8,1.2811314916667707e-4,-3.832848611376374e-7,-1.1992721904466058e-8,1.2830082617175774e-4,-4.869902782138533e-7,-1.198611016092719e-8,1.2857305116365837e-4,-5.810461096132203e-7,-1.1980164163535222E-08,1.289084172136336e-4,-6.257202090277428e-7,-1.197740043466469e-8,1.2927653296285668e-4,-5.972525154990381e-7,-1.1979329944634138e-8,1.2964491995966202e-4,-4.877474608997493e-7,-1.1986472365228349e-8,1.2998387075651414e-4,-3.031311612369654e-7,-1.1998477370081351e-8,1.3026979244258862e-4,-6.038288953220458e-8,-1.2014282732417834e-8,1.3048752957989842e-4,2.1562191863560383e-7,-1.2032296857404085e-8,1.3063183983413705e-4,4.956069602951913e-7,-1.2050612633462722e-8,1.3070798712429174e-4,7.49696777087375e-7,-1.2067254493324593e-8,1.3073127127371782e-4,9.513984761652111e-7,-1.2080450782354818e-8,1.3072533232997706e-4,1.0813761032640532e-6,-1.2088898078971734e-8,1.3071932425519906e-4,1.1305045965556356e-6,-1.2091976791290884e-8,1.3074424349902703e-4,1.1018477731859764e-6,-1.2089887050399828e-8,1.3082870101893535e-4,1.0113362985932872e-6,-1.2083690937629776e-8,1.3099441618179766e-4,8.869501908669666e-7,-1.2075251931326807e-8,1.3125168068481923e-4,7.662116754938402e-7,-1.2067066918911372e-8,1.3159510738595574e-4,6.915586905267705e-7,-1.2061965515433264e-8,1.3200056820097142e-4,7.028841658829567e-7,-1.2062624571151364e-8,1.3242528918228636e-4,8.270198550287169e-7,-1.2070869118686841e-8,1.3281385380364976e-4,1.0657937989025924e-6,-1.2086852795495238e-8,1.3311208615874337e-4,1.3873940278361398e-6,-1.2108442324416934e-8,1.3328674475046086e-4,1.728378788589479e-6,-1.2131335420364398e-8,1.333423026531807e-4,2.011359960326922e-6,-1.2150284217646462e-8,1.333230859574093e-4,2.173641367897251e-6,-1.2161076558038903e-8,1.3329628509418603e-4,2.1916886718834704e-6,-1.2162183678561086e-8,1.3332488742110422e-4,2.0869799011873835e-6,-1.2155091872515184e-8,1.3344631607287334e-4,1.9118834458728775e-6,-1.214330168860428e-8,1.3366614959370036e-4,1.7270017762180142e-6,-1.213081977253317e-8,1.339647660819936e-4,1.5827822630531564e-6,-1.2120978054806648e-8,1.3430900171919165e-4,1.5107505188582636e-6,-1.2115885232530696e-8,1.346625507586368e-4,1.5227555156633589e-6,-1.2116379839448163e-8,1.3499278908367805e-4,1.6143357752029857e-6,-1.2122232655650623e-8,1.352743630890875e-4,1.7691319425712106e-6,-1.2132411706736463e-8,1.3549082147805045e-4,1.9628976716705375e-6,-1.214532559179744e-8,1.3563536205606977e-4,2.1669414090184472e-6,-1.2159041601093816e-8,1.3571114539193986e-4,2.3513531864422336e-6,-1.2171504657912729e-8,1.3573115122892719e-4,2.488365757099318e-6,-1.218077928907646e-8,1.3571726302195615e-4,2.555989521491244e-6,-1.2185316078541546e-8,1.3569814446294577e-4,2.5416602671032738e-6,-1.2184217684665625e-8,1.3570568585111713e-4,2.4452206623935392e-6,-1.2177449976565543e-8,1.3577024230789847e-4,2.280427964073108e-6,-1.216594442676682e-8,1.3591527737192273e-4,2.0743135607314645e-6,-1.2151550454018783e-8,1.361522991152803e-4,1.8640121265254014e-6,-1.213681987513195e-8,1.3647708727637718e-4,1.6911483786144465e-6,-1.2124630980449703e-8,1.3686810998498884e-4,1.5943000966245994e-6,-1.211767957644585e-8,1.3728794824521178e-4,1.6002951590033876e-6,-1.2117875538135754e-8,1.376885995265603e-4,1.715563961241601e-6,-1.2125719871977474e-8,1.380212492054774e-4,1.9198116421548985e-6,-1.2139827416802713e-8,1.3824979653251647e-4,2.16545754172393e-6,-1.2156862702966804e-8,1.3836476748777283e-4,2.3863798766054845e-6,-1.2172165361997345e-8,1.3839118089512586e-4,2.516681597723158e-6,-1.2181109204786456e-8,1.383836958661086e-4,2.5139173425388923e-6,-1.2180756018019766e-8,1.3840809682379775e-4,2.3754960365028225e-6,-1.2170971847677191e-8,1.3851731397930713e-4,2.1385549249810985e-6,-1.2154358737266609e-8,1.387345180742526e-4,1.8635150257748393e-6,-1.2135089041809021e-8,0.00013905061657867654,1.6115027181214983e-6,-1.21173713319074e-8,1.3943376606727773e-4,1.4271981388203693e-6,-1.2104305360794658e-8,1.3984300364040437e-4,1.3321511005655048e-6,-1.2097427842395805e-8,1.4023941764179271e-4,1.3266107575433846e-6,-1.2096814698533307e-8,1.4059252722173118e-4,1.3952876797859035e-6,-1.2101447432625885e-8,1.4088264636512158e-4,1.5134604515907064e-6,-1.2109616882522158e-8,1.4110100645417162e-4,1.651840139911393e-6,-1.211925900245617e-8,1.4124909369002032e-4,1.780117071596497e-6,-1.212821380203447e-8,1.41337902381737e-4,1.8698047521882043e-6,-1.2134441476175163e-8,1.413871243968482e-4,1.897057213198281e-6,-1.2136236886680415e-8,1.4142383018431504e-4,1.845841427761066e-6,-1.2132461012287831e-8,1.4147997719204125e-4,1.7113175489430788e-6,-1.2122777537746821e-8,1.4158823504138685e-4,1.502646517645388e-6,-1.2107840476713205e-8,1.4177619737628733e-4,1.2439767012537168e-6,-1.2089354094720186e-8,1.420599003828967e-4,9.723315462248096e-7,-1.206992596215161e-8,1.4243837480090518e-4,7.317359454874271e-7,-1.205266945550483e-8,1.428912639706557e-4,5.641719353741576e-7,-1.2040586686537376e-8,1.4338097885540922e-4,4.993306811954009e-7,-1.2035847099509482e-8,1.4385960277296563e-4,5.458783176763343e-7,-1.2039139663143369e-8,1.4427940471458366e-4,6.868122641353136e-7,-1.2049291370737595e-8,1.4460478846783334e-4,8.807411239238364e-7,-1.2063317321420302e-8,1.4482281559751307e-4,1.069839105541091e-6,-1.2076991054963683e-8,0.00014494904837242869,1.1937309248725323e-6,-1.2085887289049307e-8,1.4502568900064648e-4,1.2064426101944527e-6,-1.208665562177113e-8,1.4511070047506638e-4,1.0911379333922037e-6,-1.2078100163221958e-8,1.4526028585175462e-4,8.663198283372468e-7,-1.2061600256805915e-8,1.4551122674497707e-4,5.797058648325919e-7,-1.204063541031233e-8,1.45870714182893e-4,2.919007977922922e-7,-1.2019605889673682e-8,1.4631756661427476e-4,5.7383281304037876e-8,-1.2002481688680475e-8,1.4681257082234934e-4,-8.908235910099019e-8,-1.199182771411262e-8,1.4731178048653533e-4,-1.3681974382092278e-7,-1.1988462719314775e-8,1.4777718123388823e-4,-9.589928020150776e-8,-1.1991666707489123e-8,1.4818241807458256e-4,9.827970495226143e-9,-1.1999669866292774e-8,1.4851424057603252e-4,1.4975826284681487e-7,-1.2010174857616424e-8,1.4877150780700368e-4,2.9190903564939884e-7,-1.2020776035974408e-8,1.4896338718739874e-4,4.064988238931833e-7,-1.2029249027716422e-8,1.491076446423247e-4,4.6841038637613003e-7,-1.2033745868534184e-8,1.4922916257107874e-4,4.5938546572257956e-7,-1.2032953779941988e-8,1.493582247095228e-4,3.705242197180493e-7,-1.2026262139108474e-8,1.4952777954767635e-4,2.051005400277564e-7,-1.2013946805018194e-8,1.4976894050346446e-4,-1.904479417246828e-8,-1.19973299130609e-8,1.5010454947427974e-4,-2.6906541765304796e-7,-1.1978814248321542e-8,1.5054183504320976e-4,-5.005400438808663e-7,-1.1961656886072548e-8,1.510667193509588e-4,-6.659267765992611e-7,-1.1949384554955782e-8,1.5164312623254563e-4,-7.269820831206918e-7,-1.1944897119523432e-8,1.5221953156980696e-4,-6.673181911368249e-7,-1.1949511382214759e-8,1.5274192731700445e-4,-4.998737686083151e-7,-1.1962335916114308e-8,1.5316902981055573e-4,-2.655106490847173e-7,-1.198030645635063e-8,1.5348421088217352e-4,-2.266891378647792e-8,-1.1998944827432675e-8,1.537000877768807e-4,1.6834438575237464e-7,-1.2013585861232607e-8,1.538547110431581e-4,2.613132906223005e-7,-1.2020649305678164e-8,1.5400096519828458e-4,2.3581112219275996e-7,-1.2018566303697278e-8,1.5419235863208593e-4,1.0173672189554832e-7,-1.2008120314198619e-8,1.5446908544374386e-4,-1.043344103221339e-7,-1.1992147545698048e-8,1.548482390991489e-4,-3.2985719788034745e-7,-1.1974709621771796e-8,1.5532098094650596e-4,-5.207662508907146e-7,-1.1959996690102956e-8,1.5585716932915963e-4,-6.350241871756243e-7,-1.1951293605787887e-8,1.5641522266013897e-4,-6.511187991959759e-7,-1.1950307300835039e-8,1.569532769257661e-4,-5.697016549164902e-7,-1.1957005001839564e-8,1.5743798528095797e-4,-4.09469379855435e-7,-1.1969906863521253e-8,1.5784917981561064e-4,-2.0015710169451744e-7,-1.1986632887038163e-8,1.5818066995231428e-4,2.4528128874972442e-8,-1.2004482272335572e-8,1.584385964221662e-4,2.3238212408654543e-7,-1.2020894960770384e-8,1.5863886107822444e-4,3.9624199560292434e-7,-1.2033748244121223e-8,1.588046247824748e-4,4.961257588820515e-7,-1.2041519855910776e-8,1.5896414577085214e-4,5.208075434900433e-7,-1.2043387212766305e-8,1.5914861628490783e-4,4.6946391491526275e-7,-1.2039325589190074e-8,1.5938926955830503e-4,3.53541008361074e-7,-1.2030232908600866e-8,1.5971294009466412e-4,1.982741610365036e-7,-1.2018050074089633e-8,1.601357000258253e-4,4.2346553631336995e-8,-1.2005764507559371e-8,1.6065547610377416e-4,-6.653262914643824e-8,-1.199711354071502e-8,1.6124655500583345e-4,-8.178371801242496e-8,-1.1995829366236498e-8,1.618604147678731e-4,2.7237558855628032e-8,-1.200446695222325e-8,1.624361983654284e-4,2.6113543526894443e-7,-1.2023214939678597e-8,1.6291924082183584e-4,5.850389636777833e-7,-1.2049358081100115e-8,1.6328002909722807e-4,9.37029053897171e-7,-1.2077889657121621e-8,1.6352419934365228e-4,1.2479123374621913e-6,-1.2103126439366304e-8,1.6368904604779273e-4,1.4631281062483648e-6,-1.2120552485357369e-8,1.6382956183236765e-4,1.557395384432055e-6,-1.2128060940280816e-8,1.6400122926582002e-4,1.5381144862877748e-6,-1.2126239058948575e-8,1.6424588726093894e-4,1.439208355081074e-6,-1.2117853915445577e-8,1.6458370748174056e-4,1.3096328102448778e-6,-1.2106913755361764e-8,1.6501154402339606e-4,1.200644338827852e-6,-1.2097641160415495e-8,1.6550648589063686e-4,1.1547586852730628e-6,-1.2093577694547275e-8,1.6603290776267415e-4,1.198176070928625e-6,-1.209694831318382e-8,1.665511035023388e-4,1.3375614745420673e-6,-1.2108362039271342e-8,1.6702550418416318e-4,1.5612138983333382e-6,-1.2126873437650308e-8,1.674307780932752e-4,1.8436692523999273e-6,-1.2150349328123835e-8,1.677549195800197e-4,2.152050182706575e-6,-1.2176009110305286e-8,1.6799940801179606e-4,2.4524165413076667e-6,-1.2200981766056503e-8,1.6817724583540448e-4,2.7148658232038214e-6,-1.2222754118217347e-8,1.683099873280913e-4,2.9168866968960664e-6,-1.2239454785978735e-8,1.6842467146592558e-4,3.0452180407235236e-6,-1.224999322944638e-8,1.6855102695086848e-4,3.0968539557096263e-6,-1.2254119042353992e-8,1.6871880126855085e-4,3.079744230574199e-6,-1.2252464324778996e-8,1.6895472067160068e-4,3.0133940896606534e-6,-1.2246598903420829e-8,1.6927840464195295e-4,2.9289893043908684e-6,-1.2239070910506032e-8,1.6969685867088022e-4,2.8677904600524987e-6,-1.2233319274918822e-8,1.7019831718506845e-4,2.875824828445984e-6,-1.2233272151029017e-8,1.7074810284391787e-4,2.993272269193482e-6,-1.224246480019927e-8,1.7129098425295404e-4,3.2394101336393448e-6,-1.2262719249205929e-8,1.7176398102373194e-4,3.5987654038797006e-6,-1.2292867630372567e-8,1.7211809981800891e-4,4.018086806079489e-6,-1.2328398800877828e-8,1.723391427347796e-4,4.420818917734477e-6,-1.2362681188303285e-8,1.7245473153053103e-4,4.734662467285292e-6,-1.2389396409868513e-8,1.7252252726735316e-4,4.917578549027333e-6,-1.2404843785782865e-8,1.726071540897258e-4,4.968749604148368e-6,-1.2408893192054333e-8,1.727589046978858e-4,4.9221724964740185e-6,-1.2404411962237101e-8,1.7300260344177033e-4,4.83048076677902e-6,-1.2395876284086118e-8,1.7333699122422784e-4,4.748210739532242e-6,-1.2387966354953343e-8,1.7374060169450008e-4,4.719717242328655e-6,-1.2384556320964524e-8,1.7417998643729247e-4,4.77276442662093e-6,-1.2388155529251713e-8,1.7461775716833916e-4,4.916710446013261e-6,-1.2399710045232228e-8,1.7501937203030822e-4,5.1438468128633355e-6,-1.24186647572412e-8,1.7535828951289732e-4,5.432860035887848e-6,-1.2443225854658522e-8,1.756192629618798e-4,5.753664444472852e-6,-1.247077258016822e-8,1.7579965373443565e-4,6.07283129609336e-6,-1.249834752183416e-8,1.7590884946030766e-4,6.358829228718526e-6,-1.2523139875377372e-8,1.759661130968674e-4,6.586381943570775e-6,-1.2542883039875933e-8,1.759974500115724e-4,6.739459298134962e-6,-1.2556116611078232e-8,1.760321637278397e-4,6.812845618154416e-6,-1.2562313354106072e-8,1.7609950601134763e-4,6.812603660833107e-6,-1.2561914546371991e-8,1.7622548831381987e-4,6.755770295736606e-6,-1.2556315384687489e-8,1.7642970412317874e-4,6.669448359319251e-6,-1.2547819558221092e-8,1.7672181959903853e-4,6.589129298634931e-6,-1.2539538164845853e-8,1.7709754531837021e-4,6.555409184978373e-6,-1.253513882005936e-8,1.7753484841258758e-4,6.6077367992058346e-6,-1.2538298544744623e-8,1.7799261074736457e-4,6.774298835042637e-6,-1.2551762208519981e-8,1.7841520147040621e-4,7.059131678797954e-6,-1.2576102085454612e-8,1.7874610453487877e-4,7.431432411420299e-6,-1.2608660039097732e-8,1.7894917443968755e-4,7.825953175386766e-6,-1.264353962001558e-8,1.7902774380033063e-4,8.161207083206408e-6,-1.2673296174765145e-8,1.790278108183074e-4,8.37057801926549e-6,-1.2691829535203863e-8,1.7902000252517539e-4,8.429111940731165e-6,-1.2696822098010562e-8,1.7907052731275117e-4,8.359865779353108e-6,-1.2690259514578959e-8,1.792184376056174e-4,8.218710920752939e-6,-1.2677033409507345e-8,1.7946899122588982e-4,8.070217272528202e-6,-1.2662824877992331e-8,1.798005516314884e-4,7.968098174834111e-6,-1.2652431102927129e-8,1.8017678902342154e-4,7.945639373964074e-6,-1.2648941656457344e-8,1.8055783018827178e-4,8.014489469180937e-6,-1.2653594995131369e-8,1.809079743025977e-4,8.167991049630246e-6,-1.2666002492302427e-8,1.8120015594670137e-4,8.386055770599257e-6,-1.2684515636010646e-8,1.81418169137406e-4,8.640136272423779e-6,-1.2706635648062213e-8,1.8155745362714864e-4,8.897929471115659e-6,-1.2729437938407207e-8,1.816247890930127e-4,9.127778918254038e-6,-1.2749994232411722e-8,1.8163698371062952e-4,9.302709168045539e-6,-1.2765766433492419e-8,1.8161856182727902e-4,9.403888438419948e-6,-1.2774938041748913e-8,1.815985642893323e-4,9.423138551089404e-6,-1.2776645313126941e-8,1.8160681506560852e-4,9.36415692920561e-6,-1.2771087603012172e-8,1.8167007529985502e-4,9.242389932513445e-6,-1.2759527269267482e-8,1.8180839374719023e-4,9.083630182385395e-6,-1.2744194260900506e-8,1.8203189191582484e-4,8.921407254932055e-6,-1.272809684680252e-8,1.8233811686921964e-4,8.793234923543979e-6,-1.271472568547752e-8,1.8271007573164471e-4,8.735513832696627e-6,-1.2707603433132443e-8,1.831156226205783e-4,8.776587215035303e-6,-1.2709611967731912e-8,1.835098044135818e-4,8.927979072561361e-6,-1.2722097762312471e-8,1.8384221630675696e-4,9.175500192615347e-6,-1.27439367278731e-8,1.840705475552472e-4,9.474371020128938e-6,-1.2771002906062082e-8,1.841780628060236e-4,9.754616948466088e-6,-1.279667951127827e-8,1.8418683651227492e-4,9.940934290960093e-6,-1.281380356682737e-8,1.8415563603335129e-4,9.98187460304554e-6,-1.281747050358581e-8,1.8415861263877017e-4,9.872544364405676e-6,-1.2807136409084753e-8,1.842552921475183e-4,9.65575714304891e-6,-1.278665574601449e-8,1.8446960989311107e-4,9.401323160175794e-6,-1.2762350921109002e-8,1.847878917819339e-4,9.177921705907351e-6,-1.274048999348862e-8,1.851716145817177e-4,9.033077144764868e-6,-1.2725517880425859e-8,1.8557404333119885e-4,8.98674862545095e-6,-1.2719465951244568e-8,1.8595285565285299e-4,9.03489153155634e-6,-1.2722206457539776e-8,1.8627673471227903e-4,9.156961441484826e-6,-1.2732052732514901e-8,1.8652737698281774e-4,9.323291635298407e-6,-1.2746379558568107e-8,1.8669908398996258e-4,9.500851281252383e-6,-1.276214259667023e-8,1.867974540649122e-4,9.657494220093313e-6,-1.2776296198795173e-8,1.868377674238962e-4,9.765290802188679e-6,-1.2786140679959678e-8,1.8684306967336814e-4,9.803397871508996e-6,-1.2789619363565743e-8,1.868417147083351e-4,9.760610094037025e-6,-1.2785567727151342e-8,1.8686412458466885e-4,9.637324414561794e-6,-1.2773894189412115e-8,1.8693880886411663e-4,9.44635537749392e-6,-1.2755655110877828e-8,1.8708806034181723e-4,9.212124471751703e-6,-1.2732996276901077e-8,1.873239407935784e-4,8.968006164774606e-6,-1.2708946706398693e-8,1.8764524855502274e-4,8.751851247504868e-6,-1.2687053344743047e-8,1.8803613506589658e-4,8.600047003777075e-6,-1.267086308882513e-8,1.884668350213392e-4,8.540750156571121e-6,-1.266327943929974e-8,1.8889688401037388e-4,8.586957156317759e-6,-1.2665841049346619e-8,1.892813662336039e-4,8.7303677532984365E-06,-1.2678028004774141e-8,1.8958055151708885e-4,8.937957777496288e-6,-1.269682650981506e-8,1.8977205698003573e-4,9.154221964303619e-6,-1.2716894887330907e-8,1.8986226816951858e-4,9.312023948278568e-6,-1.2731645634466873e-8,1.8989097282145473e-4,9.3523306591095e-6,-1.2735235873700964e-8,1.899229344963519e-4,9.246977657328054e-6,-1.2724818924541804e-8,1.9002600500419477e-4,9.012639158824845e-6,-1.2701873808086355e-8,1.90245267253111e-4,8.705899735453676e-6,-1.267169944090641e-8,1.9058743747324758e-4,8.400731767561984e-6,-1.2641284800066107e-8,1.9102317062649488e-4,8.161375525659737e-6,-1.261678823134974e-8,1.915028135995743e-4,8.024638131175617e-6,-1.2601877107848063e-8]} \ No newline at end of file diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0cad64662c7fa9980eebcf2204b25004032851aa GIT binary patch literal 12067 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7e63bd63e15e41ae5cc6de1cf5c9d16ce6a3ac48 GIT binary patch literal 14055 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�^LnCJNOiE^|dQAevN1N8_>y7MSL3^S0uzkkUwQ+k)H z?Kg~*G@`El5ZO9O>6%A;_7tCfa@F4meqU}kDTcmjt|LbJg5xzSY;QgnvsT+r>Qp=Rq5=|3NKa1-vHE8V zuGxk;F+o`+YL_Z~E(LlRsOL4%CSRKbEZ=Fu^W08hmrS%2sLz0sN?GbEk1^{^N@4q( zaKvhwSCI5{Okbroit$ra|J{rrE#6hmqWS0oSKnlr*n)t70FpyOWJmvYx8;wtmf#7!~$b-~V)Sby55kTW^=>;-Ehojjp8yTtq>Oxo5Y#a-|71RM9kj0^5_d7qf9Q--=%KLzi*p z9ocbR>`7D%3hh;Ln}!|q&DhSddnl8;#uzeDL0D(?Ep8TT@5;K z7vk6-FDH28qOnrR2JH^#{c()JI88V9?rMsHl9NJ044bdYta-=OB%8k%Q{=#r&if!k z^Ge)@h|!fL-dBq}QDHX^HvI3cT!853CcI2;s=>TgWl8knEdzHN{%kD*m-&O^$4>8; zSL7IGQ>)6t^cyj%9loE-)nw$tz%ndvQ|Ha{hfJcG5ldXHA6U6Ndbu^JE8>*@im0g? zHzdNtw=(~fd+k!6JoYS=NMT0Lj}kifl~1iUYTU@Jht{1>j&g7|S=GO^ttT_GPkADu zHcv`3-Lk_=@tR{1CWK5XP-<#E`h7 zuceLahG|F^D9^>K{(g5LRuF&S&!|KHnq&PSEhkqN$AJkty)C%JSMw*)**3A(ZzWxE0nT{fI5#KymTA!jo`W;;%R! zcW>Lgd!c9F2%d^q!;2_Ut*Ts-%ogYEAX}}#cngNR5fEr_o<>1j)5sz zl|FHot?eYynAh>A2lR5QgMp9nJoVc?0D1A#+p%ibJ+@MyYf0!C zz^R`9q55mh?9QN;rZ_K)BoV=OY-B|Ifv%EB59(B!V~F-i`)n1 zPY9~ytvu&n-Irbjq6?_PelFhH3B9~-$uCS3k&ar8tJ`-4E? zgQlUS0*<1K084rB6G=<#>;%jsKmaDAI7E*sH8y@5MZj+^#&blIEc!14vZBr^G9sn z%DrL1HaM8wnAH0$umb6<{scRCXn~^On;ex=iM({c=C_POSsqIGri@mSqO>8_v&<~T zpVZzPVp)3qmZ86bII#8d{gZx$qn!MzSoh)6NtxD&ihO3ed!V$xG%5e>4#+si&0V=t#1#RJa(Net{;vh{h z1tK^4vqbS#`6-4)`m2rNB7*~$w>pbJmaiaIz`pucvO7}Wzr|cD1>_{NH`$M~N7`F3 zj*4^`D6&`3Bn$e@Z!DvicV$mX;~h;vpS)oWyCv9GZhkbY^NBEHWqaIqNPN`@7wFHN z@A~%>+8QHPULO%TCQ7frQd^YE8>7fm)!!iu(TO=3QZ-qtUw%^T`u1g7uc5olN!hWV zSz-%nz548z9>|i?d}HWogA`+()D-qln=9#|%4Yg<=oh4-*=^GAG+^PIBfVR{2-U z2Uc$#Y>%q)`@%b07vN(cXECuscm7m~E)JDo2=Y;*)W_d`dezjH=vCsfcoVx-KUOUk zbZ>xuQ9xSw^u9;$9>sr^C(FoS%#d>gd53jS%=;PO1*uV3C^??@UnIyfaX7|+Sq7)7 z9di47q#25t%$AYzT~cOHz6{`uM!$^cHBrrk;UVQ?~@O*}D@z0&+I%{NAQL4(bY5U{mrcr4Q`MW`~b~T@dz3Vn*7G$oAo&PZZ zMI;pha*IpF%?w}OmAcGLMKa`^yp5fH2AC>?#QHO98e(v7`-Rvo?^XNW0w1F+?@3fW z0&o_IGN(7)_T(X6{_|561Z`%0@}F>N%*+MP1Fi@>6|$PuADIoQ`#y^c8M3QB(4Ob~ zmD+?HTb$(2qbgZ{hphO6JPfatcNJ1F%BuX|BHd`{WLqf0CLc`@grzmUOl}a6VEZ;= z#fJSlav=SzFaC)#(a>g|mbohK=QS;4v^*s?gcL=?e2P^&@OxzJ6iu{gj}iVl@dqdQ nGEs^3tOoyPaiQ126}_~o(HS23x87XbhQfdK3C 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 N=ZW^Fvg+)|e*opc=PUpK literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..605f63f13ae6f7304fca2ebffa0420afdc3e1f8c GIT binary patch literal 11399 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 M%z23(+5O!A0yWH#b^rhX literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..319458e12a338f54f662f01f8a5966acbb26a891 GIT binary patch literal 10652 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 O(89*{jodQtXa5H+guAo= literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6a3859d6c448595bf674abb88bc3c51c7d083b2 GIT binary patch literal 13142 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 I`Q!5c09|P>?*IS* literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6913a2b087bcaab44d4b1cb2a4cf7e92cea59062 GIT binary patch literal 9643 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df89ed220abff86b7a6ebde048cd6427533a1e68 GIT binary patch literal 15312 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

^0hw>=ycdl0c0`L%NK1XE9zY5 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f27415e273302f8e68b11f041dabc05d323e8f7 GIT binary patch literal 10532 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 CbCZDp literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce2b06ecb08af6d7f0ed5a71aede2e75d7c1da79 GIT binary patch literal 13262 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 Q{d+fdY9K(zemDKU0L;K*x&QzG literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3c0312010a8ff72e5d03f840ec730869f9d7642 GIT binary patch literal 8157 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3ec3215035c09e69bb908d948cf84ac199f847d GIT binary patch literal 9307 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

B(0oLYLG5>jB|SL<8z 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32c6e5ae28e354be0e2bc54ad06cdd5421087c4f GIT binary patch literal 15862 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c390948178866dcbea9f05c0726c306ef073385 GIT binary patch literal 10657 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 M*_KK>`gZ!i0SZmd6aWAK literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3e7abe713796c195cd9b2fdd35bab1a56d93d923 GIT binary patch literal 12456 zcmbWdXHb(*`2HIR5PDHSN@xNiMJ4nW5ctx2?+Aq61Bwv33Mz)sK|0bxN2Ci%HKBv_ z-U39rbm@P7r_P*L=bU?IpEtX+bAM)cXRqDox}CmV2GDA%YN!GT2nYancLi`e2T%qO z6Ws;yf4(Hd#3ZCtq@*AaDJ=yh8P$DS`uq22@7<$+z{X6^2xh!@kA<5B%+A5Z#YNA| z!^gweqr^M3{*ASNLp1(DK_lG1Q8++*PU{~WjN06J0v0096<@DM;qM*yTFxa|gT z000EUciH|=!v9AQ5CVyaNkF7z

)u>S+Ol1VA9+UH*3fcfCXJ+5tp##P_%$iX`_9 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 J*6C*Me*liy%M1Vj literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..732c32f954742a50ed13b6e2411fcd5ee6826c53 GIT binary patch literal 14940 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 F{a+$VI>G<| literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..576ec70e73593bd2838014bb941e5a0af455f10f GIT binary patch literal 9531 zcmbW6cT^M6^XQk3NKphN(go=v1O!4!K&48NUR8RNj)K$x0xB&O=}16Y=pZeKRHgTh z^d9M52!!zR{k?Y1`|G_odv?#=z4zR`pP92eb7!unua|&Z>dI=$01*)pU_m&5>sjC_ zKt@UslK))E$;iklX(%ZvC@62;q`pCO=N7{q`djq$40qW;3{0#{^z`?*@3FFTaB*=l zfOz-QlnJmTZ0&yfjuuV6rzfX zzgO4P*43jMezgDk-O<_A-P1cdHa;;qHT`F1d1ZBNeFO7%bL;Tv_~i88**W&&KV1Le z{GamQ!Tt}f+XOCRf>}r@{=-E?>_a$7Zj+L6iILMQ>QGpE+_?`9p=5XxpHtO#gIiqp zfYHixgo=qrV)?=0f6)Gm?Eeld^#69aNL zD$u*j;=kmA{%TLA${>O!_+N?ZtF9Ay99!iLHHms-i!jl&PVvI#v1>sRCjj#GrsldlFI+=ow~MFXR^(MT`B* zoOrs56MP^z7d|wZ7ptToB~zT`4r`ABHo^y2i~w&TS%{@BB+@iF@E9PUQ<99QjVgD&*J z64qQg86Vm$6>&i|?dz_dQnrEakSoVh+Xa0Qx=Z8LqawAqbt4-=EmcIhjI~5R|BJ@h zxjk-gA}GF=o24OFchLdJL{0lbn@`!@gAA+!jmI;R6uMr!hNgSYqdT}_=CmzO^99Rd zx^u@vhIMJRDWK?$JRtb_qpQ=d^wZDb&1t9n z{znhNP)lrx_HAB@{=&arxME)^`%w5jtIpCb4#2)>&Cpw9)e!10BD0Yd5R)c#qlNiq zC_Jv@R%@cN%`u}se=8~Rz~&3AGt|6%d7LEOo3XQVgsdl?#GktkrtYsskDTw}&U|;< zA}CL1t)4@QAxqDP!6Z1;H6#8S*bl*;mhj(q-xC2F)qhcTdWhETm{2LX2OW9*Lo`CO z5zWWCdZ9OMhA_aNLC-sgs-~^C^}>B^%+zp_E6L)U<5?(q#~J7yA+^e2k@ z*s^d zn4PFrw=uV=BYQMG7i7!!;XtoBkspq<0abL1-evFaDw30E1C;roKXE;?Ie7w?3iiBi?8>_pn0V%a$u;nI; zpk4kD>$LHenCWf2aZRSH9KJC9OIPhDfqM3DdC>xwgG4*>Tl()NFS49iwVH_kKw4+(5iRjc1Q%qNzvo)1-X_5F|HYVxi9|kztg~@#yt& zdNW`Ai?wJ!c%lJce4gcT0$fptCsGp;Vf;(bjm#@ClcsC&@!MM?at%fXXWdsqtX{{i ztqdDz?@!7DN6D9Y?tw$KB5!C)5Q)TgB&<^AC;w1?VigwmJPgCCo;vB|9P_^8pLy|9!5>aZkfWIpzO@&?NkOn;+pgA}_92y) z;*ws3KfVB^kP{(}waV+B9Zu$p7Ew7Wpc~8-JLRk8qG!*I{VI+;%w2S_#{QRm9a>Lt zMXiZ3f8-A|4Z`G~ie3KtFzt$eXUVPg+y>d3W7yT==Y2d@t9ysg5=&7Ae&k_k|5U6iA^B}TWU+AiR@Rugw15# z3z4J2+*E%k2p=hNetXeeU)L0yK!4vLW2bBa102~NpMt?`4r(7~Q}Mb>cCD*JFc1#E>4AeU7sVH;Bj1l;+UN)E%Ra`L>cdV2#>RqB=4Wwpl?YwuOHjQRHNDF zj-VeIQ}ORgm692}vb5mc1rKLkShx*OI1f(;B;=+@#XqaZ`YkKqYbpv;FTU_iAp85C zt^aTb3)ZBE;CY31-dOk6W3K_vn68E^?Q?xkGlk9dDC1%FQkj)%r|{;4X0=FXjDa#(Wx?sK40~#oZSK)`Ka3B-@0_4&{uqTsi>z1yU#KtA z>u(uC9yZQocr5E1ctCod#Xb` zXGM}d+~hM1)$|6Q(ifTOxz;EZ_eLMfrXLeWSdup$Srb31CqS~_eu%>!vJ?i;r5<+| z)Sd``gLzI$|fUU)<=N!WF;%7y7x%l z>GpaG7r0b5f;TK~PiX2YTdmN;xV9!_R>GPhxefK~qsMlzY#F=d&2HPa9Tig_#?RM4 z6j?9>`AH9Zqvq2Mksy7TF8?v}YOweiWN1Aypv`Kg(p|xIZX=(QUbU6YiR^28W-^FP zM$bpR)h3Sa+cgkl&{Jh2N(~Ll3eB4j=R<+kKerV}1uJhtE-uGMigDk8W{dPLCG^Vrbew=mGe@JQhy98DD-?BwT@uj* zx05_?ZOBq7Fs&rUG|nn2Pkxt^t}}DdonLRytYuB`Btz=XhDD(7W2)*0ExPj|FjK?I zeb4%R$~kUkKFIuJxa>y`ja7+%pKhf_Gx32yL(2owZMBe3AO8Bb;x?VYoJP{vpjS9L zH;gu|{vI>mLJGAc$KE;u)FCp~dO!U(kLAXL^?4zpP>)PH1u#&2*U+IipzmGGVe|pz z<03ce1W^`6jy(*Ax*FH#^7)rMq*UF?4r0%eaj7+g@J%mbLGPu<5(-uZg362`7C?7ToCmXutcnwN1$&G?t z+g>%#Z^4CEugq8ve-WJ@s{QlyJz8h`?%TE6;iO2>+xutBj}~B9>n-dRrGpGfmk={a zFV9wzX-l-&MG5i-n0*gZt*RzP+%}R}F zz`xzC2Z!JjRMvx`84l<>zZpty<+LnV4{bjA-7q-*@NZS(l_1&Y2(O?^Wsml2AQ;t- zvbd+5INjowQwZlWo|v|dNiA*D%i;!t8nU~!2RQ!(E713%x(I?F!&q4U_~L%x z-`Dg*g0Nzpm@<5bdZ+@#P{O-f-!H69 zF&!ka?_OE0{eI7M1ElaOyMho&A$lLxRU$tcgL#|R+d5)jwZco5CL#Ot64K_ z^r0DL{afMZ@#l9!RK)*qnXXT{+ggB~j92Y`u@Y@*8mb2U*3~S=I9g?U`g`Zp-l$+L zW!eo^WoZKr|2j34q00iJcGo*V4}SZ%d`=aC4K*1a??$kSi&6mL?TI^DL^yH%iJ8^6 ziG8f$vC^IrottXY9hklE>SGgotZmHX>c4xDkN zQg?74w{`3md*0^|tB`p01{qLr1MjW`K_U-xdyChHcoHc27O#N`%}bkL;5#v-eedMk zveh5O%B$U6&aX{F1@LCWV zsK*|w$bU%Q7_TS$QtI`TRl(DUnr=gg_suSpw71z0Q^~if;aDA!pt{y|w#Em`5(MhD z_V2Gqx|T*aTnXCp{u5AXFjci{5p32Ie$Z^4$#eo3rgyON=cJL7D=hXBEEBB8I~H}+ zvM&uAP0*H&OL3j-EqHZ^YThEiq(g z(Y}EKrKddTHBM9Xr?dA5=1yszYd}Zqs>5odlfvhs>T1G>8#~5xtVZFgz`Cw-%BV-v z68^zWdl{daD;$gza^U#Q8jY_hm!-E&WHI-ejfJz-OghpH)EfKnU^wC!M%)`itp0R@ zwH&3mB^8<38nVf-b>vng?CwO;98c9Q+sQ@2;-|3Qq_lL7re8io=lagQ)1)6_A^0y5 zkMS>B4>PI7dak5%JjD?yu$@&{5*0=AA8EF5acLO8P&^_zuB*u2GVv$%E-B_@BWBij zaPe2gy2cRm_W7_GvMK&AKauiqzsJzawjV+I^ZhSBVYUS5E^E^GU}D+!PmaL}&zam* z064b}C?EcFStWbG;FxEK#prJX-WN4vqRQF582-jfhzYOCbCX-JkvgQ&qigtW5p*)L z>CAp#w3DK89~(JHGkzvNz}I)R;P^5;3T*D1a6=N5M-q{;ar1;t5C#q`rCwJvchw1{ z$ZlKtHUw*jsk_gSKM9rZPK{i)44h-Iv;e! zHfjQDJs9`X&QW*@!`S_z858k2_(ix%7W_Afy79@-YZSf)xY}wB-OGl*(>@=Gn-{Ue zdBU}vz`mHo{fIoQ*YTqje&Q$nP#yQHKmeA-|4CZtBwMd8SFjvrHAJBwC;%d5@~`MdL`Wt z1B)-zb;%~Z2vHl5C69hV0;f)Ya`RoG^+A4zD6?V4@OVveGzNH=ZTk%-<2q9nqN?O( zEgN@xTP;L4&au(SS?sHfo>risW1@!A^ckuF8(&Tl( z$P*cY?f46I)PJ!ki3o@(1*;2qC<_>qeoIbqV=yKkc^+wQy^s{Ft{$`?j;3>xtlaLJ z{2J^kt}M{%@qB^M8hc(jmhu=ZP!LycD5%)wH(YOS9ZaVfV&J{&jIU|733gwjb8<9( zwl-3eo@gsT!kAyK#zgZ#)k9-nxmBEGTeIVNq?oFWw5jy2?vkGOhy}Mq=6EV(U)AU! z4=khZ%P^-)Bp{|m@Z6gU-G|D8FC$Xy*$DGV=Q8rnh;=Z5*eS}G3s(p#;_r|iM*Uu* z#!CQmIyDoiyI%*1nJ%arnZ8O=;Ho)xZ)<-s5>Mvr5?;~|CB?Y)2ew?jD@_)Nv*l|3 z!0@m3<)wiX-&vJGx3*Y%ox}88t3L*p?(@$%3|C5dwo(&b&f@eH-6O9|_MDYA*B!W0 z(hZU8RQ+yi1@ekL87P*fQY-V0c=Z(ADLw*_;w3t&?KtmKza`RgSf{n-pKZKzbgX$P zeoaVf_-&U4JSto0xz|=WRC^6XcXlY8b~7%T;U1(|NXd-4%0Fq`rlv(9nQ%T2Q0=2s44 zs4XRpw%NM2i&5X8s7Uf>+^^cdlndH^Mp&zF*Sy6@7>gL$o(=G}jgPNLau54cdCpc7 zPxoYt7X8L?=H=JMVgFhOWjgZB~bP2Ae& zCM!2qOnA-Sm|p|b-`RfQvE;R7c*djx^|&?z_JR@|D0o1XT$g;%-qy_m?G&5{edd679e2d9(cqMZBp$aA5>9eZ)0^t4ka zcIHdv>8lHNmP>S}Tqm>@eo<01j02(GB*(up({!!dn|&^k{oQX}S$p}U!sKHc9>i{* ze8KY|WkZ)7p4L{jUY%-&Rb%xy3|VA9?-a@^uqbm7@=O0kxxdfu;d1Z|6g*o}jk@gM zq7pwPxC6mWiv#V5n)#}p0u`}Nxt{5s#1lEXRwE;O=gD}6d30ie(@=8Wo-OIc%FoS} zt)A_Nw11b2^1qF*xdc2|&M9R2+I`V-`7}F6Kkln^(rTnbtI6%-*wmpTh7k$dG#}~;ovbAHS?q_a`$hrL zx6DX3I|ZNBN081^zhT~CRLCEM*#)G7s!a()g%r8lq2&Ppp!HkYyXe(^mg67Ji5_cTT;`(XA6j%^Bz=B2Rj z66O%)bI+Z0#A4i|*7T`sZa!IL7LD|CzOzH6aPKFU&PxwXsz%nEnp90yEgp4Z=ai#P zd21x*p{sf>RZdLF7+LtJE2%GTyLznou2Y|&`NA8fN#{I9hmbftnlW6xX8BN-<;k7o z?%1hi_B@lIF_hV}rr)*%_s@mflHHGxnJ6Of;T&hEgBnpPbm_7n#-}RUH)(!)Jon~} z*C&s!3&l*4M8apd2Bp?6si$JAk`f7_t{;bC!N^J-obIQ=Tjb%cn^jKLXC$%$RH1z^ z6|o}+bG8bPJ`*NN@CD|yAS5G!CGTvNrCtUFw17= zHUq+ezyP=KALh?hi}6T|VU9t#)&!7M2;oJ~R*fe0vOAAxBIo&8@yDF_CIPtt(+mavh4Qh;5QSi=TJ1eU9;ER!}@E$)?njY(VO`SY4&-lKJA9y#T}i~-bcGZwt=q- zt^58~sJeyuwQ}$l+I5Z8BmO$U&h_#43A>^u>1$wCD$+8l6B>vUE9gjYe1HnmHBLYc4` z(>51ma0^~_2{wl|u*+!Mye(z$tL_(uGQUy}sc>5jM;tuK7~1f-dXrao?vmXOWU)jc zF1EQq*Fdw!ONEB7%4;mar=Wt2#!faETkVjrlB4|Kr{&GAoQ%7n0guTkM=fEeV~=n> zWi_EQWClt^3ax-UMZSUfygjXlu0XQJTkfgJDp$|*wBl&%?+>w6B<+ZD{!3ldfYGgf z59H|Aeoejqufi~X=!wi%xTf68F1NIaDH#vE`jSL3e7Mf9Yxv3tNozy*o!qd((p!S&Veiq@Vs zz;{_1Bb5VJ_k*53R%O5+GHtRxzWqmTf5xEy2#a%zPBn`n-F8V&%@;&h}&@d1g8L>6H~>?dLdt zpDnT3NZ7!j46%Tz)}`OL@u%gqMITms`OAAriL|0?w7(>P{1rh6bEiP#i)hSIZl4{V z6Hb*N_sxPIR=D}x0xX9=2-v8~tlX#Qn3 z@lO;R?A}*(>}L$rbBDt1G1n103Byqwij6y_!aWtx#|JKb2Ba>@IOFXovTQo|pglMJ36TAcLT z5De@ayPEieHs+uQZ&!=Y~&6lj{6Pg@7%%WN&rRzN4wgoNKS zmx7oGxq4_cI;R&*6SXx0c70`pLZwCQws>V?vL#wmQ0~Rqek2`Fl$Je%`s!i+uHZKk zKRZngX);|bHMo&KvI8N-iJ*|Vhx2sh(ginco!w}VS{{bqgu+rv*u|?Mn~m2%nSMdb z;A(`0Ke0kd=pr8`5HqjDH@!MLT4(+#3S>6l{bCh*a#|0P!!5pgqp}0AM$p6$r$;eiWMu)>eCz_*mBPn2Gi9YaC(fTpSAxn+ACXAcphxRW=l))pFIdi&vb#7z~b_kvC zCVH>rUgCFMukqC~qNh>|^QVvbbvjp>FQ^ioO|WQaUx!c#U7W{J;<RiNleJJ|d?VmrtbBhH zEk%>6h&Rpj;9hf*$(kKZl$F|RGTsN#__g&N3{xgz7UKMJ&$3pf4)T~k^_FBIA%@Y8MBTcjlO?fCjDWJQ^PBb7_{{BUgH z_O4zx*`%$(!(l496@{6`&zsXh@8Sk(M7xBp#xjTPq&xQnuTss&9Dg?W++{sP;A@SJ z>$;x=d-|RgXMFlMw5`0Af0JsXF!`s)09T9wg+$J0cWuB=#PKq<{wC6^!y46%i;mv! zMLO%IvV@k>)oM19><0m3rq5z-(v+OrB~5qtQwRN9{H+_98FHqG*I(+?CoMtafFf>L zBCNYSKpa&=3e}psmFY)i5F;69-LzTc)~Eo)&SbvkuFl*;kF1=TgjzrjBJ=aKP?E3 z>I<%4bn8lgN@}aj(}g32n`ZQd)eWotW00VNg{_pNQrgr;KQjTn(rS&R5p&L&5x>87 z)SBr6oij*uZB(A`Ozbs3QiX1-NTpIvUgl6HR5UvV4bBCfddjYrJxbj2Qd^TkbHoT? zgR`ELxT-ccB0#744(@cMRTQ#{Js0d`G_G3G5VqrVP6GF?A`GJF=)!;L&B z>K#Hf|GC)s@GlhY{9%h9&1mKuEgELwaSd#vu7UU62K7XL??NuTjN1E^Y4-_L-7@v6 zp1*pVh=alb3vtyi!Hhf{yLS=gAhg#e84Yux$xZG5u1vJb#jyLRBr#)K{A!`3Z~t2&XkdWaKH>(BA2jyzmOsEg={uYRpmQ z7>J}|%jX@G$o^;EZPwB-C|o!wd&xg?6#S_in6T z1NGR*m(5FfhQ^c;xQu4sE_QTW;;yU1EP_zWCt$)?$6a5)o(%bna2rh__DEl&&(W;aYkz^=qj3tWiG-HWu%_#dw_AM2{ zj4g!hB!dYdJ7fFJ_kDlMb-jPR@B4YK=lSP3&$-V1e9k$a`@YZd$niA5XK89-3b3%S z0C$)da6ArN0@zM41N7gMosEs1;}i!67|g+UlAH6?X+FWz0(=4jf@j1<1%)BP0s?2H z&q5@iQc_ZaqB3$alCt8GQj-65!otSR&H?7&<>26z6cP}U{Qn%sO#nX!3%~+^Sk3{g z{45}Tmg80c3IHr@%+dZg;Qtvcte_KY>|hQ~u9M6L)qDUe3kbx@96u8PvvnBrJ#d1b zO+ZT3i2bzvUGO=Kpju?&TMlXC@@652?|)^~UHzgsxrEP%h@L$!D<`j@sG+H)tpn4& zblJqz%-q7#5#@B{>b2`P&~EqKJ??vY`9FRV5Ev9368$VD_W6sr_@v}lDXFj1(lg%W z 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..300aa5803058740c23a2f7feacdffc885fbc0d59 GIT binary patch literal 11678 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

(UqMK&i1Or?IyTt{CzX<&VbSiEcEjuuy@wiy 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�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 E1AMk3J^%m! literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eabb83c797f17f2d050def7490a89ec0dadfd923 GIT binary patch literal 8474 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 DwUaJM literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..54e6b007638c5635711fd66bf0e865cf2d293713 GIT binary patch literal 12265 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 L57JeI-u?a`tsc*t literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..311241c8d8dd68f5e0c9e6bdd93c92450720fc7d GIT binary patch literal 16477 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 ONjPipD?QNFkN*H+1YbM= literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01a1caf81b392c69579a146845461cb84fa24c72 GIT binary patch literal 10274 zcmbWdc{o&W7(YA=M#vUL_Rt`ep&09+vSnu^sqD*SSA!8_iAs~5&=_PHOV+X_S;~w- zMwaaB3}eYomIgoH_x&x`_5Ss~?|rUw{yEP%=lNXsbAO)ubKmD=*urdG`06>OI z07f1LAP>XI4}cf|z`%Su+y5r~KaGJA$i&P7Vm-sgembC*8^Fi_1Tvn^{}jOK=&;lK z045%0UI~Z}%Q*{2&?SF9#mJ;QR!QCJHh#-r8&XP60a0hz&R-A^yeNGcEF&v-qCA)VG+K#q_pPK=i0jZhQ=@L-+y!vh@GUa{(-@v-@_xLW3zJ<>ihz2acOyTYkOz+ z@815w;eWXP!}-7L{|5H|z{PWli}BPgOrZa8F)#+5oXT=48Q?oICUP72LJ=i zJS=5Vy>Y;Glc%y=%Rx4kJ|mV#{GEBfCMxIR+Ir-&XW4L8`c1E00He~%?_>b+o2>nf zn9TQ5b!*xyCxGRW7v9NgGjrKeceFLj?%KakTwOPuD(JWd!8*qw8MQ(yn8hi0R9foZ zB8u%*!tX@R30puwE2ICu6_EoSn9}Dh%=Ke?|KEVQuo6z2U-62Pa);^?mKUwmdgN*A z65)R3xQcc*daq@aoV$kT3BAt|YtDu#0gBoD68jAywpgWY@qbqVMN1Zf5+6kcYo-Z~mW;EQJDt>tSX=`{p zfn~~5rC8rlF|^+;DLdmI%F?p&RvXh?Y7$nqbGP{4K&*lx^uvt7$1WjHLhxJ+P#n^_ zyKyVAs{^Uw`D=>ff*hZ#O^H$MoNsr?_qgY5OyMno*iHH7$9^1fr z=pN++Fl3$TEjbu!QWj<>5vlu;n_Ghy@a4isFWC?)@Ipd%_8`3l>l+KNX6d2 zbB67g#|M(JOVvSGX|x_ZcAjeK;Tb2nEoIFXaA5&vg*%e1(JPl|?ZRLVaXXw00)m=L z6olUBnu4s9dXmb70f8mthI4=jQFf;lc7#v`H!MQ`$Pld5mEsF<%o52C%7$*L)Z|I@ z;gH-8rHlg*!5FxV;MUuKB%85)&Dq{9;j0#B6nr0#7p3hvD{;Px*cx3j|Te?{bH%$ooBAzQt_zo=8xZCarsW;~I#m^A=u&*`!*D0t zy)yRJ1 z-Dc;SyW2`v>nQb@NqJrJn2k^j6y4hBQ zw-m2}8j3;>TfRS{hm;R}EH>5qYZ*PJaioPE@SgJ&ma)&V>a%+AYT$J^+0DguV#|Lb zX&-)NbjlS{@G@x136+4rQ4j=krB5+qT0RU~E$>#W*9|>+ZpXuKDRJiRFjkn|h?^}9x_-|%{BgPRpFcM^~_hdjUSw(CVDW;oL@4! zAjNTflbe@QDZ#?>+8Q($q{zHDx)7rW_BFb5b?;L=!eA7W|1ESOBXUp=Ftdr1;|`qW zI~dIzd`ih(H?~UekVqLX{%7P`-CujHAOWq!3?-fb>}qD1dhip^%Ixsna=Oj@dj3=8 z>X+=Aq~Mm6p3X;KIdZz2^`&Yi_1-LmApb6#LPfX^=*viptXBjEwlYkVy8nLo>pmMkFS2Est$V8zJkx_#m*9w`S(|wAOkt_9d^wAw>ll3T0PIgArp^v87z`--T z5+mNtR#Xw{=?9axz)flu)wm|cu&3Efpx=^6r@JKAcAs5crUXZa4zv}j875aZJv-6z z5)jI8jJ9JzM=;(42)m26mw0el&N@+ge7^?&UA6WRl1=xzE61@*!8@DY9FP~ z6xZEwb^Z|RLoDe$0j%V-W2d6x#7W}SLLsw(Sk56KF}rZC6$@PL>*C088>t-;8ND%` z0#NkvQXw!&yJMRZ6=D)ARA*63Ha^I}E)&7r+pCXx;a{ zc~I<8RK~0Eh37|q;xj2L^rabqqNhfORolNGX@|%>9R~xS)I?Ibkx<&2K2`Q6c>7w; zljpgc>y}H22YaC!t%?PaO;Ujth&R*;rpXk{PKVXL;Xl3iatDRdY32;+QX8_~ln0F+ zUyN_-Z2iOl6NdTu{8f|2^c9ur3~v@bL3Gs793+{d<3=ya6VZ}B&xfr}M zK%e`npQUTtIXnB&Zn|gE0wMh8yCa5cpjQ9wkL}+dwE!zAa6%xlnAYEn)a8Q+bEZLH zmnVW~TT6$7P-32D@Tw&($amR8TUH~*R9C07sC1ibgi0f|Em>b0l)hV>7{rfQ_E_EE z^Kt&AL_Pu7!b6$1uX7{CAX-rcU&dcNCF~F$ zg1_Xtrv#y4I1T@b(KZT&leIgKH))p&%vlz^W;P?IS5^;gkn-$F0$?Fkb^R+jNAC~9 zJbRiTL$7CCznlPG+C3zH{&e=MvjFLodK5_u=Oq*Lh?Ic?uHLsVlvJIHM}g{Cu5IGM z0`~2v1k(v&ODD5;QX64_C>AAV1h~zF z1EE5JO=4Zx^17RpLH64Tk9NO)Is4`IZOnS2AIdpl`**EGy=R`_!-iHT z6m1~xK*N`(qvJbU?b-?8_A{$CQd19cFmDtuW$`0-b*w}07sh?-xc0{s;nCHo0x2c6p@#QYpg#z~#4mO}F2&wIffwa=pC1)s7eiewF`~T~jQVWCLZ?1{jpTkX^J8jMUs%?WQDy0(?OcDe|iiQ9Z)E) z$|b|bI9F}>&Z1^XLFt{Sk*iUxVvs}5W~HA(?EY^hq@0T;r*&40{qBjpUY{OcI`z_$ z!+q(e0s zi>b%_K!7^+1W?->)(nGn+9=+*ZPIA%YE~hO#LXnM=U_JcY&nucag8@B@}=+LrBZf? z`$w`IuPTK%??y0dYD>y{KL1MH1@;%;3Iot;uS;*5I4N!Q1EaG5;dHGTv|RW?V$2w) z*?fQLn)Dn0=swQR8)lE9`}~b4)rC(KYQjE~c5>e(;xi=dnuZ6~AY&G(w`*YWzQ zCPl&up9qfhS~S*`*G+}6GCdXcgY{l{|JL|RR4!D#5oWh!ck_v|Nh>E-G_7}xS?!Zc zA`oo{SJC0b_i+8Z!#u^X%q!X-Z$BXsEz#fke?7V2Pg3j+ zQq;p79B-~=@m~UH&&%j67 z@6K@g8-GWIS~n|%g`(IBF4^`~w^#VzTYVJlqW!qbtT{V3S?N^W<(oYT_=w@8`^VGx z&;Fc^4YJ8@l~d}q{m0gv);XhVF`7+%j@Lt@Za z>t8xI36zTv`*?k;4&zHaiDjb7Tc(O=(=_B|>RBNUm$Sskl-hfXYJYdd>~6n}mqt#F z09-b0>aN`lOley^Mjye?2?Mcgs-bbzfajA(HHiGPjglL?W$(=-nW_cHmn>45W=+Ek zG__J8AM*8r_~ey_5jnJ_W7MFNhBDQ@f|GTIXLlK$X6x8+6sFa3gnGgZNQ&N>`_M5_ z{`n(T1}q3&TBR35qLkOb8p$YzQ$>6+$0jQ99s^gxPId1` zS*bAzviFGCz(N1+L*hEOy0w=;SJ`K7n8dN>2>^zAz@ax|rF|Lq{W8YS6VTr3$H(Rq zB-*Go$ls|-9jwl^NEaX?SX7aOmqGTl6dP|BdAgt4kdsQS=g5yU!h!4e_)9qYP6<-` z0Bwa0hj)+jx=w{ZoN({|Vxn`my*jTw>Oy3^iNmExcEw^j#Q?o9bbGc*U*0FJ=zsG5 z6~DeSs=^Qd9>%q8GEbzBJ^uq%pWbukS@rb^bxwKE!GvJ{w&0w;cas=g^em*GWZg*4 zFzr`RC0a!H-J|U6BDK;{dNiKmmd=tron^IIeFQOap>mqEFj-Tnt~b5;k;a6q90(ZG zBA(^jL$zdX?@Ir?f>}4x{L&A9rJvq5!V%qGb&Q^U^qMJg{BwVSYmI(4sndQdtogt7 zSAON^)$*&!A$NIc9?+R1m>v0Trma@E@1vbh-SQbaQW?wP&LkS$gez0J>*`ctw$|KO zFA_I5S;4PAVHFWxo4IYGZf|V#DY@;g&j^fIe*!2iaG%j@QK@WZsKZptK?a={I_}ljv-}<_xDvX=hw*CkX=u7bs90T>80OSL8(=C;- zl*AC#-5s%#V)%w0>QJ;LXWuGuhiMB%!5oXGJxI0{dj8Q_oFc_}W)DVNGAF(L*;Ku> zv~L~Pns|#-brJ`nS@_H_i>Xp&g#TfYML%x0u8sHMju3(hr4y9mUbI=cn%DZ+4I!g6gE$|12)VQ&pGK)C#t?Y#I09+pI?WFb&o zQx67PIp%9u{1y?1y=>j+h}k_pH~}!ky%F@{GD^Zo1{{X=&&c~?4gsL%E250WbQ5vQ z?j_v*T!df)^%9LKvW;M(&Ze{8ros7b+U{Ws1U7pd<_Xug8t+ewRa3|_r}~IvLy_g| znvukxIrF<8*P^2nHp|IDj1luNbwUl4Y8N7&QR}AuPY*SyYdsf0y~p&=yu#_2vwnLNu2v zBo4-2;O_dH96VUZM4?|sCm3O>>9RlvYYg@i54np0>;X(DIW4!z-H{hkkJZ=yjvKNS z)fRhw${9z9@cD!4PV&`6)dHsRxC+5oTL&qJ|4c zvRcrM6Tmy6PZ7aPS!J)VfD082yK@D)`ggjq&No?~^`a;(cuIdx1LIv`N(0p$KbTdP zeE;=phX>$qex_(q&7*IhRR!hz6vDkIDT85VzdvxC88bWD9iacSep~MWwP=`e2nbWq zgsvOk)_)1u5QtYW)G8P>!gS%G0)Qi>emq;j(G=GpZRJ?Zi1nD;f1(fa9*4`FgxYdl~8k_kZ{uYc2Oz4<2@HSFaA@8qS* z@sLH{Y9zzjlipXFo&eseGYArlXq&rb$m)aSbFJb*bTpx)eo7O@);HihEkQQo1yzgY zHq^3zlBdd*ank4s^T|k&_(sr+^H2#PJK|Bu4JXzelfqe zaq#-OkyMI_xapR%_My%5za9B*&!*afuMyez;YUA7@+=@zTn@hF_Xkgn`K@6#p(r!Q zxL>*u`)V7BE|bX&F9m~MGouPZ-8K2!evEm+g6emiYqnU0Z7fZEJhBOE1)QT~(+Nv& z+IX`7xYqDiw0mUhZXs#4HSZoU$&`8#;5fr(j0y1kcOR>lFE!|{+Le&jFctcYwo?H4 z_XWqIHkge>tqGhKVRNXSY>H`c`>0m&Ma}({@!$CImm%*3>0i zW-8d=aE2mMgC^4~LjoWV%d)2?RZE7>ODB+huOmvvcXx?fbEz7}d3Bv_$L2;;zheDBI_qnQB&qK1v)u`^W6eg#nl0pJSTPp{*eV)LpUdnuq6mFT%AsZXdvSM_ za(Q9?(o0E_Pu;v*uAJ)~pldw4@!OuF2@32mNi)|usE*8;rPMd;`GxOwfdW)dqtKHh z`da|3J$oJ}OiLm1;XNe%4y<>U(PSejH!02+4$l8RB(^4&VQ9beNzMb!*Dl1Hg0}NA zo<2SSz!iiB1~!TsTZsdgvWZhGN1k6(aGxQsO3hBg`{GdbTPKsAR)&e+D0+d*P^a|R zOeyuct{HIf)Ipnh9^jIz?96 zwpf~`%f**b3r=Q_8t9*l%_R@~&R0O-3GA_s^xJMFJstWP zw&9oSYcc8hK4AEpOqd)&W|g2^WIAncUDMfn0#I5L2`)M>Aaw%R{pk$u@#c5Bj_|V} zq6?V<)HoRc$P)mxgby2I-Cf;UEaUzTgF1Y6gU<^UM4@ln)Dfb6Zi!N#YJEMl5)6W@ z1$lc>CakI|;A0o&?PEJhJAYy2cZJp8b+uaa@^>z4lVG!E2G5CGBb0@)AMQ|%93o@+ z`1o3IeO2W1cS$FJQ4aLcGg$<@GY`{^)G{}!bR5=fF{2sBJ>I#T1Yr0AfeK?O7#Da< z>deoJ@lZ>uTm=JgWe_KqzM#A$)G!hux4IT2nqv{?t8?yCsp<0$#V(LMCE0%jxpQds zD8v=X+4JMscuFsdOXryXOh8agQZfT{DW#8VyFXPH@RkTF0jKCPnvfgn{y0l$AB*+I z0D&0J{6?*vR*r2MTUD`9xNOP$WAU5)d(ndhsyh_kBb2Ms!oNj8v zSx(ZR1wcig>X>>M;tta7K!;orLO@?X0X)>@0xulACP`MFZnzhN<@DP2{3kZ_TXqiz zcof(slz^XiK$7txyQ@aw3k#jJoIr~*ABUbF6@KbK8$KV2*t^bRGOc1}n=95Ybm}<- zBd?B}!-bhZ5~jvXL#T&C7>;C3=qjBrl@3v2Cx^V$6_XOHi*sXaZk-WAhrA3N|_6OsfoiE>d64iATJv6uZJ z8VxG+*oVA*`;`HE0x(-LzAosS7QFmGBm5a&PN`w^wKdp-?30$Y>Fd;=O`ERuFeI&{ zSW~4R6sjV4#GgFX@FDhR{O(e<5li5k`>|KVttK{T<3os}UKQ0cSHfjbZd6ytxVVaG zK{fqxYR6CaCRpVZMp{X8uM)%Z1tuN{9#Sz}{U175OMh@er}8~S3(#r-w_4_xMQ;uC zxgX@vOe0xeyJ+fu&LEfp5edB&ZGgBZF3BeOUDW6StrI}Z8GDnFGM=MZ^IJ;mfmrAC z*4;m9mSnA^ige#=y01>l=nYP$VTkhY*Y?we16eurz0@d`b)Nl~N7rm40BPFhEYMS# ztM-0JV5!iP_rA271@F$DxIeL4V6W8T&Z}X+E_}}vRxV*M+Om85L02hk*jSrZAGqEh z>)p#8_G@M0^l7_yWwIV%DW5Kc|%N}VX=TZk=`Z^DCe(qP{;Ga1Guxf~vtXoUm z^CW9<;)S_3VTJ1I89|zUre=c!I-MkO%6>H=EJoHR_gwTr*7;nhiZi)Hb7_3zRFh;w zLUB9uY2UU{hhegjYOBI3Q2Mv1 zf`13s$>{ghH}40xIwps@r~EW+<}}d4*IG)aIA*@SN^}JlN^)?}G>vlrgVJAHk!3dT~1TmjZdoNx0 zAzp2Vj!2ewjQxcb-XX(`n$C!e(gg5)m$eqW!g>Oiuc&@=j8*>^0Oi;CnJ(Fas`xG- zY=wI5@n~C-!UQ+WFqB~5W+1Fvty-$WyVm^V_$WO|HP+lLnh^yf{oF*dDJp1L2H;-Y z=EZ=6B-jPL!^+xM*$X4D4sVI|rWU-#$_l&76$H^sjbsfagru$z!N7*q^`CZ_boa#B zm@gH7P!#Y%Lf6L!;|K92^?*dwLfM(R#bK{vq;Y>S)g{?rcjs>jiYp+X{Ni2iwsEE> zBmf8Y*m`N+*2g`_@kUZRpMwJ@>_=Rsnp4mnru+yvTX^N?-M5WLG6%t$vLmeRIG9li_74+qV)sV2($O3w2Vrautix~| zg@5K)Wsfjb)ZhPS>Eb>;+>ecLj5Q>Yz$J%$zQEAm|mGH-p}OGXqw zur&29gPU}1VI+eoian7NWD1fLX|jMU|t%^)nBw7 z_qNm@PUOqSnV84Yr-xVc8-K$1no!7}S2&PEmvwvdeY;b}2PsRY%G5Sq#Z^un@eNZ` zvkFgw^aI;j)qozpS-&%2T+3U#?FWhm9FAl*JyXcw_V}VFfGm42lq6SVOZB0*knr-3 zXF3x_P%aB#Ol^ zNLiI&AV#sKsF!=s+&h{&>OU8u@EF#;g@0&L!zd|E!B7NYIE1q5>rJ|xsac7T{!-S< zMgtuQXkv6umJJ~UJkNjLh){s_N(kPSHzZP3O9bKYp#baB9gQRm*L+s|t==FPidaJB z61~*Rf~lvw9>>QITq17YJdYg6S#Wb6+~XH=vEG$Ih7|tPGnLhWk`aJZ$ZiSzQy-;P zJC{;uBET;CXZ{Prp_TFN??UyW=%y@lEeo8Kfw4%%vU)l!D6S$5l?lto5Ujk0ui z-yBqKAqh#xM}PKj6)|%(Fq5pxEpY(NMjAM$(!fd3v* zB+f1qN)$UnZ|0pz(HA4fSl&;tG&S7SEFHB?^_r*{p@IBB;N9XGC#gHOdk{LTlh07% z0`Dhp`vABp`f*pKlc30VdD$0Y>Y|DvmrD~n_L?q)N8lnt*~0Dgw{v0yd2$y)*_~GKzE=DOP|S)Hx^I$36gLPuDApVQZO==@6SA$jJHHz)E~3-l5U{2f0QOmDm&d zYZ|Elg}oy04~$<`APBFj9$G3tE(qSc@lo--PXjQhWEDO>onlqPY=6alFz!Vq#i)Zj z$yoAt5yH`))}NP`m_{P%n6{CtX4q1T;e-L~_Ufv!W0W>aK`w_Lq(k*gC($RhqvS&D ziU}(g0I*0o?S0y^r8;XQnj-ie^dG5(AyxtspOqZ{YBVl{IiHAuSYFFxbVf!=|A5Z-_M= zHmRpO)8wKQB-w|~=}OAXypMbV!qE77%_xhq^ZIzRM}vP1`tc&HT1Um>Bmw+9IwnY^ zP*rcDBEZa2EsR+~ax}i#^96_XYC>=RSkJyiiZ;jiSenH3ZLwYSAreYFqRXcJgY@X(Ft~`6zIx$WR_LEMmUrXJKXu9S4D3M;#EryDbc7S zEI8U2T5?|4DR!|)z|X^in7J0=!qenGC^e-d zn|i)X>N{N!vP}qi^Hvu9a+v372663klV|&z(?8en)shW(8aN)8+F`#lR}`;A@)`0- zmjTsYgYhDCwczbJ+Z`%Q|JcfS1!#H5oz=Vb`#B3*nRD3*Y5Mhr42DG#R^^7%V;P!D z7w-T8;nqJ)8aPw?repL}g7BPZHbD3qbjE6^VI|T6EoV%dK&t^VI{Dlqaf+TVubE}} zWvAr99&Z%Up13$vQ8Zunr>H_FLUwY`1o_7gHhtMP-!R z52$ZoXk=_{V{2#c;OGSY*pWwIWj6b=1Xi+^0$=KwDgS3ANd7^Ma3nhWp(up zjZMuht!;h%13w4hL&GD}GqZE^3yVw3TiZy~&Mx}b-u~&?`Niec^`D#D|KR!$&i@(z z9oYYYi{ud(=Hs?t-shl>hC5Y^`Ko}mmd}3a0FFuo?&Tk4U z&nW^*W}z*X)BiyGZ^-`dfQA2mA^Tsz{x_~=03jB}w7cqhnQcQ^EGaz4-1;X~k}H)E;wt)197z_*Xx*(|t~^ zn1ZInybJ>6V(gbzUc>0+Zo|NOXuQ(O{nT06X>fFnug?0QI@3|6?$E1{PG{!!RMumR z!JxnA(`_s!e$UH)z83q1kIi3AJt_4*;JZ2X_c)u#A%TI7L7afA1M}9cZi=7VG~&5; zLd)qxI%W~&q~g6jdw-ob&$;UgUnW&tMhADxG@r}lK7m9k59UlCs=K>&IWs3Eq0oR+ zy1BiF1CGpU|7)fXrsxg7?Z4m=CrV@z3FR^E3wfdz8k;8w9yPe9ewIc1?=Bn@~)=JsmYX~C7Gc_m* zDod-S{9h-@CUZ}IG|rk0=G!s6IK)TFqA8eto-dc!)~2{l1?#=H>ZkSEdjO3q{p~DP zXrjtOps_yfy2P6cNK0%deEijnts;yPDQA@zYT9|~f8WnYJQAs>Vyx^Iq#fj?&NDln zp~DYrNK61wqjIvlwbv`YR8T!jBe@IgzrT`Au~=JoaBoow07(Vu$+dY|Uo5L$-P!;t za$SmS>sup7DdI(rP26zDG;ky=h<7v$odSw2bW1KJ4!(Xhd`^?CL-Pracg{(9YZF^? z>+&*Zi7A8Ddt-rO=pUfi$>64|GgZ=-O5X$=b~zC;TqzdF+bwA9EUJw72aqZ}JJ0RE ze_*Y<(pDXB&*m6+%8=(_rNlH`>S46Zzaf$yK|=olgx@Ul{)iqH=p19isHO7EU-P~0 zrSG_%&kS=eUKLd5NHnET5$R5qjEF)o9MNZ7mo@}cH}ad5G9`J*t|4&~_#c8h9rcp) z>vxsD<+GpUO^jPxmKz-j$gZS)_Q56%Y3r{!%Jtt-3$Wq*H8k3*!zWj5lRCK6tUM25 z0-a+F(-#<|{fRKVvnvFXdpB(hdzS4zC+gJ@FsTeuB0@UrdFDI+^gH_NEj1Q|$6RJU z{=jNLyE*^EX(9JFl#Z7{n3N-M*LN|j;WX+WAdKW@{#`(gXLrgcbISRDfZD2}mEulR zeP|hzEZ?A~^j$FUvZZ?KyaX&nq-cE1OiK%gE~IvPJ7!f=bK=?7i`-XtHU)ep02Xnqgpm_>q^nmBm?88i*{$Iy=x&`kZZe zU*ZW~d>QMQxI!{e@n>RNGRVOg%Z8cs^NlZD7wRnY;SO&}$L})>6gQo~=0Uh%!_hE4 z^-e=J(lew|ejXui1G{OTafpfQr{8ySr@344BjHe8rf@ysS>M(BoJxRs6KX4y!C>6# zcNKrQz&_)(5|hR)_wd$Bb|R5w%5`Bh^Fh)p9#3izKW7yaY;@Z?Dg0E<`EQlEFyc5r z9RsS#ge#K{cbX>O;V7nRfS6v?+e;L>9j9`U>vN?FjFi95WBcRJMc*ps<~Q6^T0H5N z!<S5<>dJh@y*ME*g^`oe>0IvUo$xosD)tSBfc)Q|JrBQerN9PEbF3ZeO)t%6 zntZMC32>{F;Tm((^DHBKh7+bu;#c9@k4L0XI7MH&P1-AjhQ?d0YU=Cq)1UqpO5p)d zfS~R}$J*y14J)Dl0Q7y|=XjZ$GoNGvW>8I29vEmbD(YdlOUUIpQFEE8X44by7o3p8 zDgaW7F!`@oRSJ#br4TDg^5U;dmHf}ctc6tifgFK^cRTT8A(~Eu9rNj5UNsqAiZTYy zw{Ru+^9nWupl3m9L9&M3xf9*9Y&}|KuU4q<`Gawji>TLR~Tap4KpE$UTIp zQnEf(&g3Naqi%EYIlD>b&8L7tWRdHv=OSl*%(bhUG95YDW#i3JukB==T2lA2U`Ymv zGhzoDm7i|iA{^af`mi_t0i>mB3PL`f&o`23d{#9K9DsUy$a11mRFeXJxjR%QBH&wh z0WMSnPKI>rIxxr;bMk$p#7ciE58JqdQ9MQr4;=aP(*`$x%;eF>_xWQ(J;S$|qiJJ4 ziAfI(lgOBgWkVxL2}bOY4XOBvdejtrNoM@z&}k_l_L*`I>=q@uHU8;mdVE@}+Y%nS zP$wlDIhk7BI*t)U63Zd9Sx$vvs5U06rTJ$*V$}X=xtZL{R5VHL=08BY37J3ysnr)Ti~2M^Ik_qDbIuoZwjtdOwVK>GFx5RnPI^ zgUky}636-vgxb}&rm8!MXJ%oW6c0h-4;`pmZU)p84^Pr=*lWrATl#NnEiQDpjpi3*i4l~F8jm!Jg z1pLJZpbxcbLEx^fE&Y09Eh${iTp8Dc*%RuE=yKLEGdZfTuEX&H97{fBX9#1+4t9=D z^8Hfc>QlCON66L5eqAg0k)xI9xEG%>MLY8L7C7gS>!?InIrRUP4O^3VpVKeY0i&1%o;|{c#Zy?;6`ozz(LJ1R4QDrr8##0%)zxkbtPeCP#HUtmWWS+>^zu)?MiJ% zoJ>`XKm5=G^S27T3P+rYmbmA_-CiiUVytAS!1CJGcY;3x!8~iAe{_Y9Og>TD50g8a z(`8IhIhef|cRwlv8}E9?{sM<@ua8B?;>-HAk9wA#Bp(pO}(Ya_Od9iDRGp1k!KO8-_KLA{(i#}M|Zm-qf1n2K$T((7oU5!(L$|zj0{)~Wa>Bz8mp(sUZq`7-5dd6Y zZKciJx)(XJDre@QdAE7&8|u1r6N_w~5g+$*u3lVeT8VV_wq3>Aw6Ld^MQ5Jbeg-A) z7}J^0Nsm{g%CzKr_xS#_SE_Kl=9C%r{oG1Gq@)8f=3+P&85G^Le^qbTG9vx7&E|b` z^3huzPUTA80*HWo4+wUuGfXQoH0~oYNZ}cRFrU*d)3LlN}F76hHe&ctEnsXp`kstzrOljvKE;6k=`6hYMTS~0O2yn7!wjcmzPJy z5$;A*s?F9R6ZKj(D>W@yvLYI@=AD{bdNvE@g4`Z!Chaznd`l{fwAYLY{3k{@PY--o zP2_O!*H95jDi7Q_*~CnlU6yuUtpNuOpQz5J-&%{qwR+BH?swa*<@pzX&bChUbz2A& zSTH+$u!kvjn{VV+n#Of4{>0p5*Vog)M?w-23b}*TPTqV9Pn-HC76F^L@tT^a74fWG zdXN=U#n_);^v%}divp@kuB)?(c_I6YoxreW6zuup=!JW*9_r<%ge=FeYKwz7 zL>n$4F~#q}+yd|~TKC`UtkHp>g_)I{&RXC}s(4^|kpm?BEy0I#vgASBgC2z2Wo4Bk zPKNFs{SLhfw^i&mDTe!Fg^blCOAr6WS-^V0h0U+d-QE=c?f&nu-5@zp`h;`Yj9tA7 zFZaWUmEj*2k0`ZErWtC6Z1rbzm8e8G%XU7d;{8_ZudcZ|*F7GU6n2$E@Tk2tVO{R? zFLd(ZOk~fCv3~<(`O!BZgCF%B-QVEFE2b>9a@VJ%B=J}No1bU{7Ibjp9iO*2M)2Pi zDXoSO=5XGNYIm6A6P6KkuYw*Z>I!{M_|HqKy=Yy3=426my=vDc8vxue+qiWuTFbPY zXbppkk5;_UkzCEV0oK0;++<5C?^a6O?c?(L>PBmqh{t*e6Nt?h{{b$6e(shZKF1wR z>D}jDoiJZf@5_=Isgjs|*mciKdG@ozBYpY9mv180NjlcjcgW@~W08d-M^p@l-8))7 zPEd{nG=v~(clqg7jIKK_Hynbd(cD%tokQ?CxQ6D)a>_+gy&4t${ts~QkTS6~MKS3K z=c?t2JevOz@D(rm_WcYcRbPdRKXQe7_eWdDtSgg6GbO1Q)3pnY_{k(VUPCg-DPvBU zsY$7!IZ6S-?^;K4C>bO!HP=rZWMi{Ct~e($sJ}WuBc?55;6OE@M0-bgs%JZYc+8w^ zqtoHiZu5;-6mlM3EJk}i0~O3H^b=st+O?P&5nGM$mdGIj9l-Q;))fe14zKE!W#=eY z1)&u$sHkNBIvvIl1VN6+Lylt14Kum?C^wQhY$PcFuYg}EhS`$g0P8MiF1@)QZH~M; zr(=##Qnl~<_{_u^T^9TZE&or|B_^h-l;WSsMht7A?*uR)9Ab9jSO9O@Pe1NdYrpVt zyVcSTlbc%*2+*)VJ&LI(G~GDP`e3a|WOLMM#-B$Cr}{z6N#k6^Z8)@$vT9SZ8F4ZC z?+G-tll^Yzg7xiges0)hqB}JviIZ-FZ{g+|>JI+^HoYt;MVgkA;7Qe@xt_NMR6}%p zM1E||VC{X0r;7cDk-SFCWJl$6C2DbP8o0atsc2gb8E;zE;0{9lh%*U3=@tryFJv~%Q7u2rtg`IN7Xq1lMCwSr=k)YoNx-dd-wA{fz6)Vf!djK#0vAo05>6 zmINwBdx0*(#cVWC`#O}8$pNWNgkZK3XyD5#z?mTn?62Ev23&Vl2V558cABj~VNtXf zQr3&xjV{O8uOcQ!*l|RC22CcrFaWtjkTb4Inb5mT*5QtC+4*0ek9J~(D<1czdDGln zA}Sr1g?DpZYK=Q#9?Cw!N8xk>sNW{y6CuRL;Tz`lNi&k$G%9w!xjq&u{T7#uA(6~J zsm)*LW|pLf&32UEOVQ&pEfh)4czk6&V-+wpGb292FM{D<=<9e=^wm@D6mp86p<93>uv{g8Cgduk`&E-}yt_;BEkfl+7o& zW}#Vy`my=qipkCd?pq8y8Q3g$9s3isL+b-euWa#I5zTN%qw6mLqB);lw!J;|*sW_f zL%enG(yjP~_|qb+&nC*I>P*SWsl)#OaA=4`#k#H-sS;CNDI?uLLNLs#n$&D|l(qNT z;{|pOI_KNGt~(iV13p&vR1uzq_`&e8w4@G>CeP2xwdSQNYlorK#p_ z!DerY$Il zYcelZQBfsD+07S?)6z}p=%MgZjY{#u5t}&er5Ll#1-jZvD~+pORO9X$RQ8Aib5w9( zG`un~^1>AIT>7WX_J`4clyDOui^)zx75KOS_<`mNrD9}O08uV07Dl|jRFL4tdfQWz zAHQ67t#@ntq`odRY54nGR2~HxHP|jzB(5sBqE$S3EWaoSW@p?IhRbSPN~r1^x=yzG z$&r5O5YT;)tN-kxW86#7UXyRd=m>=pgwl$i~K<2^_54$iVt1RD+v3Izmfwd zKeDR!bWSz=gd`Xuv%X1GK7q)(_E-cPb7Nrq60P@;Z_lZVngz(tb$vs;N$tw0T5?k4YxigI-fAx#vQ7ZCmpNfwBoKSX7Gzw3{J^y7~Z8|pf>^oh148m=0SKYy8!uVX}JjVzbKkCPSMsX8ga_hmB)-`ka zOoFjaMew_Yx6(OTxH24lfS}lC8r9<<4G(DDyF~cs`#58Nk6X27Nk__RJ~XOJz1!<% z%JkR=QC?4~yY$_Qr}+?hXy6SJyF5fNz-5wxoQbnFzQ6kN2K`j8!d3CVDckp4ibL3?=UFP zh1TG?!b2vp+c4v-KJNw&=|phSh#htiaUSYc4Md{_zKF%;ubge(Z-@lpYOkD@wHam| z3aazRb<9&Gz;|G126lJ})zKmmCrVIp@+ifd6f@O!xx=4qMkcq?i|0e<7pv%r-g7#F zq_@M2WCze}erQg%x^d{>f=N*tZ$G2^(ni>I{X@u0t6rf*Kkrd0P-w-CIGZ&8qz#e( zoFA`kb0S4$&g(Pmpd`T)=B8~vK}aZn*pOSJzKiMb%kdP`pgeu1POh)*T>8ozquQK; zk|j^%u?AJoH%d<~3+=8briF}vc7qpI!4??WEkrGw$-}g{=8d#d^7E*150aRh0)=LW ztCN3#`7&&i<%i!gi>7Dm<{wD$aTy`(bVIV*`aqCYEZ!JOww-%2Y=) zx7}_HkG~b5jsXy_ihwxc50cAVLa{n4kVIR2>3BM);|l_jBxy&rlD(Y zzN~tacOYtP1Ij285L@*mRsLNP6niFd^;ojadceIpT+$kON3eHU68CqR{!nP ze1oK)ogDX-3sWw$4Jxh@f&t}^4cBjhZYtT|m3$R^ZbEMy))$t$^OtM8OumS|pk#JU zaF0V>FBax)7YUmgW==hvs39=oDY3*p$*i`9RJAnKHNOT2cnbdrgpV>Pf zY1X9cgKz*b&cj=*!=>xPR!S;|+%0E?hKhU*xoiUapC}(>ZeJ=03H<1HW!4=5lUrYx z^_nn2aRX2HjP+%_qJFdmp-@bNn5t9>M;nYDMCt|tCPWS_v)*l;V?;d02#6BJ>Q15>D){|^g}LI3BVKVXenAn}@ak{>^9 zfTt*_FQQsHD6FdQZY1+fecg_=`?uVYT0_N!QWSfR;Y|M^6`Xb7L@M&^*EY~Fe}M|Dmu zuW62q*G$|2f{6{Rj7v(RFkG*OXi=E&X7 zA3U68>S0xJeq`?FK39lQqS*oy{eu4ex46A&Zp&_U(A+B@Q*;q zMpruJFy8FqhK$q!@CIi>`4_OHgHFvon?+Nbc7;-`LM`7px0=T5cx)6AqYao&LzPuk zDB#JIsukAGf)rdif{;fBr=z51)yb}}v#*c#V$KZeAF+8pr02%PfYHLh>-P(M^XW)O ziCM)nB(Mat;vJJ^Jq#8=oD2XZtv3!C{fXA>?2g@V>Z#ZfO&U0jSYV=}UwiLbbx`2< z%Ds7j+#^YxYC^yu8DSm}>@`{JWzp0u{6a5N8MQ(6w%9R&I2~qR$_66^LFb${be^Wa z??@E5Z%@pK0wBi2U|~l&#FgNyrW$j#l~28|EK^qE#w18_-xlA9&WME6A0iV|CCTHW zM|zYZ5J78x6B1BaqgHzmc{vCBJ%grkGdX{P#JmwOSmKssIi@%hcZrF#bu;Jkod4QK znnV5{0N;8*hOYjU^4q*9?^LKlK`f45d`b0_`HN?oa$O?Jk?o3tXUgJA^n+aqO^LQZ zi#2D+pOoUpjp(D})CB}|*<;2<$42=dAf{SuZ-Ma=K~-Ho0;(?*);t{g4QlZcYrRy0 z7&#f-f+dYiJ0u5b+!b#ldaJtSPZO43&sQ<*Y}qK^aQZ_fALtv?N_=(HC3{8aU*~M4 zekc{WA^dDXn<9S8AsbU=-x$Oa$ohhTa(Vu$Z9`LVq}aTPx?DC*VFBH89-Zb^X7S`> zk?5Ohx1gRuVw_UbRiRqGBn7uDs>TjLL|C}S=HpaezxcrB_O4!Fd$E@KmZWvtJ!Umv z^fs50`t&7_V_^cdO>;~JYswc!ADLF`n}tYjD7kK_esNnzys>z}zA^dMiD1RFb^R=1 z{ocYyhup|?P3rZ~TT+d!g(`odjPXzNartJBqt5v#+muCE_Q+jl zu|Jcwz&~jaw~nhjZ#jQ)jU4c7_!4%exFN~GhC7MQaUSfDaoymRy!saoZ|J62^UCPLX|Z4^98?mq_yJtH%?1heI8HY+E6{E_ z?X=b(W+q+1r@cd8RC4faHM;X|y_W9>DQ$({C7)c-&+%l(!D@{*_LARADdBm0sfbx= zRuKyoQnQS^VrYmqUJBWeuCEWfu{h+#M|tgQ77GVcSvQ7RM&j`6MF_pBkk6$#(Ypw6Noud`H* zfDi@k4a6*f_Wg;C^O^X9iDxr=>sbd}5eci0%Df)0$Y73X?mmLk{~^UrG4ZRb3#+(` zr{B?Ayu45(o#A=rR}(P4llG#vX!HgNx(ajxJm#583xj!b9ww&9{u*r-=cc_cxFeb~ zY94sY70DL1a3(vQdB*QBmZcem6tm7LApTvkbm66fojCL>BxWn5uZ?GFEH8}^mzu7u zy+xeFPWSJsO|Vx7r@D(RGt}-xB}tD1_5O8Yd~UVdKR|S${qWz?V)+9{p;RQ1_jm4s z1U(NW+wHbX?t=1nL)~g&H{L}eb*3)t}> zz7=Rth3eKCLJ+Te%38{d!vUF6j5JlLM<+x?9!v()5^fT1w*}R<9jjMJzt>Ii_R#eh z!a6W}O2am3J`JxLSk$tnR^d}rdR_6vDDP~{@1Tc5afmy$s+hA?Ogg6Wsn^+2Uvl#5 zyrV;aptnt?f~%ut!tdzVZXxYe6Dd-5hgAv-|L6X5K_cA49_YBSCnmJ~bkY8MMVaB^ zWe2Q&{{Zm~e}RG2j)jii<6wIy@)1<{ehFVbou*qvqn~YeRG^%XOS8x=4{C~^Q9vFp zcF(mZ*5mj)AhsMN9?wNXp?zS!M!4?lWZF@>@7KsjQYpFmdmO7LbG@{zmtr>;?pR0^^M`isQI=Rp0b0_oLtlw{DNUdS;-M zGpM|w9!Y15JxrL5>lR%JUbxjWj;xJxrI$2XM328;esz!g?6G#ds{Z&iN0Bd1;&jgI zBMP)I0xLkj|8-06)6GT&@0Oiz;JF;v8C>nRFEjl~V(ZQ==sJV~<;K|cpmPr9#Y`-||os&w;HS6-QU65?|cRq+#+4($zi)_xXiqA_q!Mf02 zSCtZ*8|%`eTnum6BUW1PLsGeHhMS)@9AEtOEsCyEFWBecj@)Tt_DeuVVKI964k0Lh z!3T}8dXf}`;yD<(KTr$U&rtmg4uOtvS?+$*O$ySvM-=oU^YlfNRkA5}-=tCjkf$YX zEEaO_adTC_NDY3SNFt%3xGU^>q#x#q1=u#C8ja^(%&Bm%kve7DR_{b808R}E;%w{} z_eDl}6n44wQ{54VKknNDP|J+K%8O{Tv96frvq&ao0pC&`Y!~e10PysgST{DB#P1Vo+h#vt$ zlE%P@Mu$h|Ulstsf9zEEjf~o?Mrj1&K;H*H-G*NJy$@@=w{fzG=FUKAb16%l;acx9 zC$oka6$Kjsm);uGc>2JOqS*^CHDXm|r*Y`%C!`BLE6j|<@xm4GJUg3f~sf;i@s zLYo5B5(95#xY%}K_;|2RNAhxG<;BHXs@8x{q3XA+$>l=Z+S~wl*1&q|M5SUmJ#+R< z4qn!$q{X}@Vez_qCf6#oCI$N9atPtA2cFZ5G!coY7gg-hD=xLJ@ zKG;!DxhyMDCd$8l-%d9X5P+c(*gUk#PDkwCzut8~tSH1$=CQ=^M!%qJe8L18iwrE< z7a|zX<<9Zukh0z&KTJ&?^A;Eh`7!}|Apg0iNp(>fYKh1-np%f#Ra-IF~X%s?;F}aNAbfg1_GLOZ)Q3qUu0Ap=L*^lo<9u|uTC!R zKkJ(=H||*IJ90-9Z~6oI_bc+LcuOt6nIXS##g-UQFhW5Vfo+Nj$<}ywP zyV2ROfSAc^*#{sy*h$Dr>YF(gu7L>AD3&%ZBe6!GVs_L@Y1KZ>?Oa9DamkqJ_$fbJ ziOY0Y=fX2b&!LD^5iun5Wud+o?zJDcKh_GvL)%}>9QE+XN}83~GZy`VX8Wm0M+R-Wl<0)M@aPDu)9@I<4?&w`xo zkM83_7x}3I)h!L=;(YCHDyoJ3M?vCRJ6)|skQ0`xH=XBqtY6ORy!iq*sw0M8uVFL1 zzblG!ZpyDf$1LJJ+=jK$qtT>b=$vcuyJ&IDR_E>)zWzTmpT_Bvr(dnXXAaCYx2wOj zRStGaNw7?QpnCh>p)VUv&6W_H8(rz&qAJYUZU5oK{+Ux^@rl|=p!O*yTyE|e#QSVb zBUC6<=BFtn3`PdCxHvJ#2=Hi&DwXaVc>P&<>O7hLx7qghAu)7^1F+w3gn zHTG~Ize_`IzwuOvC{>SmDZ|m#LJkMzCr_P)U}W!x>I$Yb6Q{5KzW4k1hE?Fl z6QZ@TE8n5;4NSY0$dkz52OXQ29ExCiBbm;Q2syvePaAJ${{7xwEm9>h*yU1paQ|1) zEtRI+>BvBug&xPyFtu>%wWO>0P7lEnsO9hK?W{!PUM#@PhKm*!^JDX`;L2lqVG1c# z3F41p+UcblB>Qp8etju?vU3Ae)74p){s$OBmd9x8nL_FJirRDE6E&|hRBD(MbN#%@{X zLOx}!nTB1b6(1O|`ZZC;yc!y2sWnwE$_E$k(sIvFK}u!WwP!C5ahx@-2fUj}6`nv> zps^mK4g80m&S!dvZjjGpE~0}p?M&Nd0*mrl{HV;O(=&N5_lxlXP!wb{zW+WGbs0}B zlH&H0JCVg;C3P4JD~CwB{XBD9n3!fi4cfPEk}|ZF`8F$LlM_c)(9F<~0AkWaBRYsrK;U0+MsU3v^tp z2imi|On$s>JAn||=5=(~$poiZ+E63Lw}vVeF;wnES2f1BGE&cKM_KjmYK7jP$iF{! z@;}8MVdAdd`0RhkhF=zvY$on4tj_l7-Q6i}be?-^TE@d=QwUL*R5;Qm;o=t$DJO*# zwWzgAc8PDJ_IYrmvgt7cZ^+Ax9t&y%s+*=<CggCzIem(o@DhkI1L(LHHb>;iF z{{Szeg(gX~k)UL|J7^MKZls_RDVV`aF7!R1oK4-1p_j zp$krt*boPSia540W@!Nr9DcYoSMIEo!jn3&aP>2L0vcxf?)hf6coOAk&-(%#W^XEl z@wr-Qs)2i^`Xcqia|wePR11M&t12*fykYPBE}n@@TydDvz1qzS^M@xUuf`k|wJ_#u z2xke9E>g&c8I|cPMsYn`D*sK-q9PG3vcyBT7rRtgIm771F0^bu_tyQRa}>wR^*Lmx z*>|BNjy{q>GHD5~vS$CI%P}r;k>5*Yp;%QPp!Z~x=t+W!rzw4d(Vf$X~M zr(nAM{lyWWVd>MvnT6(?t4b4wXXb0GKZ0`J$FnyAF{_0XdG-bzU9y)DaRjw!@leE43rul{qk-Nbw^=g zlOefPj$pNk^~FM*65OjFS(&Djm{Tg5g714cl{J`YxAVrui6>+_9p1YAeE7b(n{HTM zN<9cl9^~Kqll(rP>3#1Blmn8dovAZWZiBL?MptWGR*rr7fFmu_xae@5WIYUQDZh1HQQWZS1=3z#U)($QB0Q1?EN}A4q20Vie;m&=XD`KUQm&0=4$$%b441S99x^#tkQ@b4Lzj%dO1GOi*CJ_+h^_vuf* zkmd`{<}@S~u^>2Ip*yf!U-?A6OzfuN!F9IWn!{QL`nGia^ojge_4nkd6Jo3EnI^7r z2{9A~7qr0?%&A-~BWp^*z>qK0ijOL9xvQ&es!<)N$Gn9ivBZh8O+9k_a^bcmY8zMo z5O6JJ@Y<~)X{|obvt<32Xc%;9LNV#r;JpktKGKk~!9gr#vHZ*l({m&S&tuJK@RfNK( zj66mpo?J@Ho=!dXA9Um=Y~(1-Y8&++0BQ9Pv@S$GZX|%!=fPI|E0ZC{&jny#n|EXb zRyz4xq~>bEm2^!-?Q|+ENi45V&AMECJ=?UkvRXa@3Pbq1!gCJ=M`n8v%OXlzVch=gJgfkrJ z?X|#zFA^RVgluXz6P|unr3K+e+N6#Burq5vo3-3y)PtA(z_OZ0g-=s$Xo<(Z$)h;_ z50Jxk=+On|(fgegd~td6t9vV6LIY@$`wnbYGS06Fn7+HJ_U#FF1Zz+4rjruj8oN0u z_plW?V6ARLDk8vS(1=1K6`4R*g*&g3wc4}DVJxB345d^)s%tFj>YtRwzd|T0eA`+q zYt#lFiaMINDH~aSZccB0qq1Zgzc?3v_=q%5EH{6j_e<0mGW{e;=(W^&nyk+O;<6f} zrOUfDrI)l8J6dWp2Q7TLghQgCNg|W^=HnmS$V`JBRfxo~R;H$aLKOGcK~1psRe_d# z80_wLru+~A5Rki3!JYLkr-6XrlqMcGG3cGOnG1%JBDOSIXRiARI7!|fTwkXDGLL`v zg}3Bl8cQb_KA%pBBqRyF`EYtpA6`+8^Da`3K=PB+Ic!eYrD?L2jf(O2+Y{Y9&Mb|f zK@ZJ8pN@`WvcQ;`(GtNW+g*bGgggmm9M$#hD#ghaiI=XrJTl zJ&K;HNFFbt#uR#mhF8yEr^Y_!jMGaG(~lKud`hqjG2+%>*xt~%5yV%j%CqMxA@mRM zY@&@+l}JFm73mysbCi|K)56vw%~9~6*DsW2Ah@n3(lHLRrlKnaf7DjWT7u^W7ZHQN zsxPzF!-L8_m3E7p&Bpws{DH=;PQ}hzOdAxybkX2TDbSDF6e#(pf_E4z(qdACmK3JbiAr+-FH(f(_5{v0m(Sic^;OgNjC%cgsy4G$R z?7IE*S)F%}y_{-O;Fz_wC_$NoT@LlE{TQ!5Y|c4?IaUKt-aC1@8<;0g<*)jUGUi5n zHbtd%wA3s-920h$2?X}~(YQE2ig}a7U6bekP!P^ZDXF>IVXjd#~d{5ZLsllllB$N>D>7;Jp3j=k{DD%7l(pq_HuWUbnyI>fz+TRDppK+wmRfye17QeNkxy z#EWMN*Wn+c8%7bk%rP=Oy4lLX8_9}-Etkla0=py?dKIb{E}u3Dy|Jc4$8d2<@ywIx z#v|gEXwP+uR3`Yo2X;Ij1q@m$fL$1l=DMEtBzW(G1-JVv6Q{rU)c0Y%mE3H}T>LVhtg8^2e)Gg#C+D-A{p#uPnd$bK#BJEFSH8;G_=wS!j3Yo;r$M z?hF#H>FK0KxCO(MmSA`*i;$Xm3ZQX%fNdwr6Y*(M9j%639w^Q{vbZush;00c!sr){-xT8;$H6tjVyG)L=IWOJdM2l&;v+5(O)Q@M>zBwWo}cD_DS z>03S7224A^f%&uBXEga&P~=CaScSn=(24eSNo(Pk=Ado3`0(W;yPo~j`W;_T@z_Db zBxUVL-AXV~W1IdZ43UFNAT2qoXBU>rWJ~lEY^>d`jO~;a^!V?k{iBD}&6o!K8lF6p MtS(79^>69F0GRHO1ONa4 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fbcfa628f1d8b16cb5923858a851722ac939ab2d GIT binary patch literal 11877 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 bIl1ie$J5y!#kB{r>L`lu6K13!ALjlW031w_ literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..334ab2581e88ff5d677a0f9d27b6647242f5d6bb GIT binary patch literal 6636 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ebbc3a099b5bbe6d8d22b0e79231e6ccf595a969 GIT binary patch literal 11564 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c3a8e97c87b91e3dfd53501aec18385b34ad3f5a GIT binary patch literal 16411 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f730f364ebd0a3db37383a638b4384662f1f733 GIT binary patch literal 12756 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 V@<3z0L8+)r-_^Uk2K+GpKL7*R`uP9= literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75235d6f8763163e1aff35b916422c00cc3a12a2 GIT binary patch literal 9032 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..036d682ec89d85ce8bd3a0aaf645ad008a621850 GIT binary patch literal 12957 zcmbWcbyyT{827tKiU@+B#FC42_fktp3rKe(DP7Vaf{IHmU5iL8jpULN0!xE*EalP& zNGwRd{LXpfy3SwcoO`aBf9APnp3gk@%zb~qb2oRl3V5QftfmaW!NCDo-*14sMSvmz zAMZYJ|2q=k;}Z})CL$svBzp3QbJXZPs%

{${_o=QKd%2c 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 cfdKh!MP6x{SuDa1Bh!zA%^s=Id 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 n!t@hwGU0hTWP&Zid5IhuC%> literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg b/libs/Cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82c2a34aae83ac3608136b3b6faaf132a409dc25 GIT binary patch literal 11859 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 DcH2J` literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml b/libs/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml new file mode 100644 index 0000000000..eb7b3f37fd --- /dev/null +++ b/libs/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml @@ -0,0 +1,15 @@ + + + NE2_HR_LC_SR_W_DR_recolored.tif + + EPSG:4326 + + + + + + + + + + \ No newline at end of file diff --git a/libs/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg b/libs/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2f298755640bb9a0ea091ff02d66c8fd19473345 GIT binary patch literal 134462 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 tV;y2v$4JxpHKkKNZyOx{;iUL>cPKpXuUoEu3S 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

JQ}n*Piy=h97Dp&(!pNR9S%6R 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 MqFHV|sDI!5KWo*gV*mgE literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg b/libs/Cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg new file mode 100644 index 0000000000000000000000000000000000000000..803622879039c6c6bbf5c3b8989acd8229304a14 GIT binary patch literal 167849 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岔g3oEy+?}!aesnO)f&*{e9 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 LAlgX(--rJLv`JM( literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg b/libs/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..476ca2c1d8f954017f2e0221f358c7f04b4ac5d6 GIT binary patch literal 183677 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

    purV00{IM8EH)iMcM7sk$syFlj0(<+w z*vI%veQ^RBuCbwaxPr=m`ag}jg_eCbEJy<;T>uJ?h0o{y=_hMVJ;W z76i&SutF9ZHv%F4LUK3V?gHS-p4eV<-;B1I$%$tb(#dUw&|u62%i?0NRl`+6S|g}{ zY7VRJX-)_B6@HJ=nxffyo@=Z%2c@L6_VNk3;$?v}@Nb)n??4CBlNGrzdTL{%9SzCX|8Jr}`FiCOBNq;B&uWSRWH?sCo3CBQYp zSBpL^B`UKa!bZVBN`!GOmM$+T7uNxhBqRISR3^kF{%5FacXnuN*nSDB8;FAUCJ(N; zdzXPxL51c??8c zI&_N}HX$xkP0MbeH&mGGbs5h0rZR0*zc1Kj2K?}^DJCwp8-#)&;On6xhKO{WDOO0);r{L5c1@?Bn6&=G09S7hE zsMT*~oZQmK?{pA%c2m*5JkT&ZIGT*RBv^I#)sn35a@)_5xp(pcAM|6?^7M4*x4WSn z`RSuV3ez4Fx}r5sm52BMt&WNWRIx0*C}jLhTGp?@ZYRP1@Su~I)mfHrDcwK&;smoIB<~==;g~_*}S$XlZQro(yvuCG-zhNZ(n1Fs$uDoSBlQLRJaFotjJ$d zAug4et8T)%@F~Gsi#7z`x&`+jvM=j@N)o#N*&8TnxHRx~dHmvdoF7+0pwuf)QjyFe zVG3IUMNuN$ZjJ`u0V+`6n5NO@eKs)uR+{pn^(4CPVxi@!4O1ic22uBkD3ZZ=qT zwRkyk9N8QR|Dp%XXTA|Rq{iG7X$i(uivth2Uuus)u1)22y27>5&NAq5gMw7W%Z_>Z zEB~6D-P4rRVmsm+2amP@*-bl~Z?YfbJz-DLiS1U)zt5hW-I(f0Ftt?g0#;TQ?{r;S z7Y0f|MJLzcK3#sUrhNt8w>*19PR@7F@fp1IEr*q3JFNXN>G1adMQAl8xKvp-g^f_B z*?AvwU#P{uIWE_sf2|n3(h3LJ2;0-=lx7SJ*`k2r@_A}vBy8m2#CN<%>*r4KXpS~p zkVg!H%Ti2(dAU<4HFhFQ0-xiIfPJ?Y0OHNb1cS%H+{j-^_q7j~dk@Rw%YThI4dgsE z%pGck0j7-UbyvaOvQKFR6W*m$R7L9p#E;1F*s-!}>#I_|h1P&vALqkwdnwfa9uU zc)Mt6r=IJSnmJJz8PXQp8?J3`y2By4P6zSPiOTW^u4u3^>o?YuJT zOsYu2gGZ#PDjg1pInC8w*>oS!;28_A2iI^LU1TtzO-6vXAFhy#Ivg@HG;Ku*UM0|+xB0O zjx)ijj#1&8nX$L`^(HwvGp1-T?I!=&y+d_}{>(Ycp}oCu>}c(6T?1lpBgiQ0t8H)o zf|n!grhaoGXdJa`N~f!%8-nUAyC;tvjD1}a+tnNGZMOiPN>@ssym)?xsisg3{9Nf=KdC*B5E0#rdU$Kx#=)RnSFZhekBd zUtXDt1!FS*?#~JQ-yiXZ%{$e0{Ixrq$Aa|pNUFDgmA`)$cNkHQ-7F|sk5KRd8i4!m zvLxS;Uwva2_-E76Qky_+_$Y=MbD%d3`0!gAMq6GuRb$@m%sTdA|h9QahXBJv}q;s5U z8c?Dowy*Jov5A6D;4AMCme#*-i}O!Okdc|QFY{+|)xH_Mt&15nxZ|w~d4$$^d~D;o z;`F;iHOkGvlgh&FJZ`OuJm~!N$ za7|v_)Wde)J+|j?fJ|hB+pwR}-nY4(Nf zeMM;5g$rt@YS(>v#`Z51_MJRWfY;2vqdl-o@kt0cqI3Wxs$p@*?`1!}Sj?4>R^|ea zUv#GFf60*eb&0I-vzCrWDZ}$?jwkG)1YmjjfsW7-QJa2y7gc>4*O^Pk{(JUGFlbUmX&e?pLJ|jP&R(#;3-4iA@VK% z_7acfZgkOh8qUuXOHydJyse>Ekgp!hI}fq16q7ThHxw+HH0&7n{=Vd7D9) zFU9=H?~VxcJ`f)6Y=`B&?g2bQZEnEC`$u$Pb6^SaAvdn$i<(a%*xkPeQQ&M?@nM6+ zLLzVyO>&Jyy ztFTW*$(tj^s(`Z8!EyB7yhCkP!U1nKqt&XgYp2;Ot=f%1JI@iLx1k`Xaf+&d0+_^6 zey`!k(5JYl$X@9aow=qmC@xQ+Iug%=5c=58&<@oMI*`_*NiAR+YgEj@7TUzaAMWaV zc%FCT91qo+aMgqYYqpZIGbM#Gq~?@tZ+4s+=<)ehpzf$>ZJa0AKgsO0W*tVz9D<*3 zdYB;Ez5-Sq5AV%IMUhp5J|!5KZj1z=Gy?tQk5?X?B|s@LyBy`=2)Vh}&N2b|0!CMq zX>Vz&)?E_pTAkgbtwI!k`I0U8z`ArH>d;9q@y|DvdVAZs;*$L=nZh|V zuKvT_hb+Z2A6Pr*-kyxJ7voAKQoV)={ipWbB#qK)p|DNkK%UF*V9nW+{~(^u(L_A} zd5um-0$p^cs&Sj=CZFv)G=tknMfz&p^yadGr9$^}m+u;kW`nF!fXTWj5|>>Ic3SeI zA5Lu!BBP+Zv9jqS7n#Ulsrix}Ov;)iw}!72LZ20*z4nD7u0o47EB{n}B%_23moOw% zQ$KqvPx=k-RU08w7%R(P(hA2Kt+G(C0RHsmegqX-4ofw>q51k3&#dor;NN;UTax|( z*5HVd;fh2xHh0KbXad^SMSj1be81e(tXgTUA(9t{NN4jm#FKD9u_>p{4WWEnzf-Hn&fI`E^OxW@7Z{r7wD@2=lxyA|t1>zPl zAFFb|Q+#8GC*9bTGN%s9ELi$%+u01TZ=~3iyN5Q&E(A@X5n|Pbb|OfcHV=^g zDAaD-Gpfe1`{Yle*jY-zXL8@>&E#8e-u3Tr=z3pVxl>ko16#?E`@3G7w~_Ba{dhS8 zAiq=1{nmYfO>U0dUn#Ekf2P~R_ZNI2Tk37C#rjr3*Idt@Afm0ja)&GryrcxGnt+Up zUaL=F{e9)SiV=xCoW?P81quO=a-=*at@}(r!)_FjZxfK;?R4g%>l*8l_V!8h(r)vO z@aYu(14yF(xd!!GfD-)E)lU?DvRWttIbP&qZvl6a_KW}fN9z^!&nmoK;vK>&yWdmD zE#Rtz3n=yaiVAd5T==Req&VE+9LdKW$q$}QqaCjt;V_xD%+db0>RBg3OYuxQP`A#Z zk+(H&y#byP`k!pQgpJL*sHBJ+Ufw^lMe70=OFC`HU6qz1wp?9(_^X)%zZ0l26|X1>_$`c4yanasA(7n z@ilUp$r;?2GolIbX!Ffd-}=^~5H&7o=BpTCMFQ?iD%aEjY{%#B0UYl+` ziwiPY7C|_5l$Z?VOA$?E-i(FafjaD}1eag~w6D1E}Cqg$f5fLR}1;_06DOyJ| zIAf9|Dp1um;$U$MA7{vsGi(%3(}MRM-Z3J>P8*(H7EIegJj#tu8hi^L6h&SkOX^=> zH3c2nFKX2c)2oMvOD%1>|9;%~x6vnc^SSwD5HX!@=;0x_ick0&74;465wC9u^Mz_w zHn^YgZ?K+gIP1=&HO?-pe(*eIt_E8ebXF2wGGDZ)Y|+xgGRa*aR3iyS`r&A2)dxC; zg8%geBlzi$dd{T++H~6fFzabip5u@G5L?iEGCzqVrSW zQ=Ai6>P`2BX0IhvvAjf5m#y9q!opt*t2rdf>z3-thh04`B>cm%nrR3g9+M_rbSd|i z34%j1ul`QcI@n%4W?)oEx0<8WBb?cXrG+zpc5NY`QSYFb8RzhLrmy6tw{l##xC#t0 zTF8b%W|k_rD??E{)s??y-bV>WesEhg>UH(q z(?`z1_Sp$*fcP%UwqozcCxhdhK5f>_A02s@+u(~Cw>z__3wS_UrK?_fF-tiNv-|&4 zTMeM3dWrL;t|W@-=iEs>FG&deJ6DpihRg&u-rsz`Wec0jClm4{z4vtT{)C!yXHg_^ z&dv+18gIOvI%~^g6qiPCc)!ojeta~X8p~_SPFTA@8`IOJZ*i$!ryC!}yF3OZ z_8MyKP4f!${M6BHc<<{jT~-ZKvq!t{AW{AT>>{wdKfxjS#fbu&n%cPu#o__2)Pl2N zv7f5*3f3yBcqQae^tNQvG`Z@);HeQIrc6Y!@Fr{flbmQ%o{J(BVS#Y zn%OwT3kI;~j+asIt{SF0r@g%oxV)e`ZxN$Bpv52l-Tm*eG023{mhPUY3r51FI|?p` z861XVYH3JE4gT6|-~EHEaQ3}FSM7iUR!)mIk33qj)Q1dA&x1;!{-ZeKrWH|o)Xze+ z?8##MN}*wk2Y-!v%tqMVIkx%mf?*15N0&Tk*)h_zBuev%k3c~|`pz&@{i?1y{nwC1 z9nm5a7^_{{7Zo;pcrw)rZdTI>@+Rd^03TySl%wRcu$jwg&*Q73WC7CN!|FRx^3@Q} zvbC0jXlu4E3Z81@7zGBc+ZIJKMTr{5c~5jmDl!f{yUzBL%OD5WxwdJC_w_g@2j_fL za{G`5wM%dQZZgK0=_E_6Ph9(4;LP7AZv19f9N~?<#P>Uw{Ln<&z$?Zs%sL@;Jey>^ zytn7w9Z)@_`8iZY{Y?z`k!t)H;eEBJ?X<_M-YX9?agw%x1({6cS>{k4B*hpAi2 z6QDKA#rBv$WBs-|h}lV$a8>}~j6VG+5p8e7xH&33u!0f@sz5cRakHlA^8NX1#q}Q& zjuy&xfR>z+?h8mQMk_@Z!hbp%4#L=r%m9t|FAdoNPjGDVwk%wn-Xr#}A75CQaC4+0 zzwje~CkmnQwsiU7fx3Mk2=XZKZ<>$QIOwznS;hQi@mil+mHpkzr7K1Lds|IXX+cp_ zG-sDI0ggbi;>)+e{}uDT@LY0Sb!-+VZV(7ieBa4<4$_RXT#SOfbR>eChpLDjXSV>* z84hYfajsygSValpSG54`NqMp#%GyZ|O45Zi_}c>K%=J$Hn`6SVhdl4g@vziGO>h;g zuNxwncB;VZEGTEg>GGnk2AWu03h$GC&ebvLoyNG-)lGo22kiZ^VkQ_XfEY^jYLZoF$uY@2dkyab{WGL@SikQs2WTUGAbW zlHQclc`~Cb=FCEoP+xu$v_VM00Nn`YZYVaRn>qS`<&3<}UjE}_j$s>V-L3JA!AlVh z>&=P$4@d;h#93(}d$$$G88(X8;(ouSft*8I`aw2su%I_Hw(^G;=Jwt47J<{UXQ*q+SwTCOPZqEjr>dX4E=O&ePumh{~RXHmhMQ^sQyt1952@& zM9;ua>#8WPw&68hp2tsb=xvEAax;UImfz{3P*+i7ZQYJh^}D>yyoq-KuHiAWFlZHd zy79rBP)IOiu*D!ig(7eDJj0?MIj3E;K>hJZqF8skEeI@9jj(vfX1IN<_| zewj0?XIZdibI5@7JiBCDO(^EtYcU*`w={jk<`zQ!bS`MqL|xL?HmfSbGNTMPVsGyT<=dhakH(<)*>jT?_`{DCg)GAg_Twx%&?{_LUK zuF!u#{+J zX`4B^tBI42HM+12t16~u*S8+d z_{I${l3;mxi7O?IjgU-`QoB>j#Kow%m~4^xc+`(A0G|74@+zOsehI%3?gC!hC3vizlt5vtS}eYN5-Wd^Xb0u~2kQ?c}k>AsRtXC;^;8nGR;ic4mC4%zK{TB zg(OZV5N>zUoS!KRj{In70S*>C4PhgKyCQypO0YYpcDH=zvmHS6eA$_AdTdVyY4?3> z%IV5NmW5l@HePYc5(tCTc*G_)Xl$7VaR`rgo-S#8M(Z+*aX>TP-m`@R%1O3n!gO5SY-La(QTM$jq``n3Y(0#72r8U zuyWaT2$6Be|4bIg6Ri>9ieahs&xm=6IY9Q?CXdaT!~`F*Y{feo@4Uj0fun~#<>l-; z2d;)uXnFbc!@0BbTplnBt^@t7$t5(;x~QsRhDM3l^x{>r{L3%3298ZwlQ04CEYMDR z=e*C1UnUE*6l`j4{&rh9+~AnN^YnA!E-duYc8Iex4(rc!B2iK%qx+umF~jc-Bx?O4TqT!vkZsR+zKyC z^fFY8zzG8^=E-8*^oFj?zy8hE)+|9N-PX8oU_cF%pKwNrT6||*Z8qL=RQ?FoLKovq(r!0 zN5q~~0DCr#-Qof1ufC>dXR{i+7ocqD!1opzR1(^x@@8!2%eha#u6Eh2y~CdkeKQI8 z>KAU`blN|mj&EXl*lc^pp({SMo1Ah4WS1bRi478dU-Wb&V_x^u54hZf7hm zY2(n-LTO;=oop@^dq;4(dTK4S&{v!O_;u_JEP`pqTmG=erWQ_z<1pZCFkpINnGfGv ze%nY#s4yO!mr-V}+O{qsMe>Juy9AK5lDuS|jh*rxu-BIsM1#j5e_}!WsJZj7|+` zeRqQ~;W10=zL{9>8TDY6y?LZ>b)hyao!*VQ7<4wlvKubd!;f=_#XX>F!u;~_Eq?y4 zCv4P6c<(fD(@_3+4{DS#DdMtf6Jvt<<<>Hf%xou%CL+`380&7F7J8%nk%_$;Eq0fW z@Obz5upBF#ikh`p0UTchUaI?rI!ru!{i@*atOK^g%_6;D!*&{spZx(S{GuYR>O*!S z#@KlK>pRnNP7znK5$JLcPiz5Vf<3{jixEDU*m3ocfudu$MxeUc&fsnQYkZ7&Ajt-A z?4@p(d@k+M1by@L42}p-H&uZu=fy&y#@${&z;Dr|L!#7^C1j!W zJfQ#ZcyOaeWD>fO8HSz*J5Xz`t;cJ;J?Rq_lo-=v3V7Eo?gWxJo=0PS)1&J2 z{J`#A|93Fq1P2jQ-bvJo=eRZI_DbXd-zNZ3vy<*f`B?z{qICoj>}pTYd->O?0>W8> zg(Tys>tU7qR_6Y-F)Lpo$l#0yjTDlwnBS;AjCd;*q}M0@eYEt8uDz0!pWX~$0;FJZ zYj^R0@NEeJ4jQLTl^~Wz9FgRE{uW3=SSv%YQmDnKQ`E9?*nRO1Je?TzRjHF5Um2x$ zJelteR{nwuO8yPvGHdWmVmnhV=uzxtX~g-ApdCjG^3j`DM&+BzDE50ePuj*}sjliM zJV;)=B4)4mn4ZfdxH`&{8bv)%g}?5iSJ8Y~g%fSJP)iM%H2Xy{Ph9r5hxfw<2}4Z& zd_PVu;t61hzN=mZ7z-rS_G$z7)QBn^_@%YJGy=O{(Y+TGj>_yCkB$W7^Wm9tQBQ8h z)0y%z1zkNPjbJMYl)StjgAwVAz;hQ6esrd*L?%E>Z#>3w`ly0T?uZ|qR)~#HAW70d zd-V}p^C|?9&zK8dbB3z=#Y(4swLj7&{1eheUXLa$9{1Bid($5J@4@YssM@nMMmp}$rqdAZ?y~&^r zXIX=EVu(I=XmWftAk0^Y%h&2ym~K_G!V_^{F2;pTglq(6f7^m#fK5^XoUN$~`43p^ z4!kCk1d&!ZtutHNPBj7`Bi~Q)!aqcLHGBM3vbfkuV%zFk%(1lv-#g&x(_+8aa{hK6 zT^?1~G)^O!$5nr&#N=*E7zy?J(X_JOi?}r3z6i3A08gZ&7si)No(L$LKI&@s3A?)P z)_NvwWc=0?%~6f!g_yuxwftL7r{o;kJfg=qId8O7W{*?Opu(V;-Kge>>)t(Q!eD8Q z=1U)9x1E;nqRtEUKXhQVL)PjH*L&foss(Q8bPyE`4s3#g17l2qEx_4up=5XLXc#>4}G_Ige;6Qfl@ScUvt_aG7D7r}R$I?jmTyuXF|#>bD2~OAH1jb(8I$e*5V15`$NnzoTd$nFUmlG_$qL) z1>KF1FdLg>qg7p?=E~%=H?QRFH91}`PTgs~$qi5~P*)qcOMro`aIi^B9lEKzCAEPk z7h@j7(*^AG^zFHqyqn=;eJ@m={?COCy64-9QsX+?ulq4koDIX4zdX|ickhIW`jij{ z@M0jVtt*No)lFlk@7&wrm&=Fz1W1KuApFYObhXIHzW!A@F@(qeje-N*5hCDZTHjdJ zQjwNE_obCq)0pEn6bKEd^p0ax@rHhz<}uq>8vxJ)zeMv!B16iA5u(1_9NWBORd zZ22L(ra{97M} zdSvACe)+8INiTwV0%0viKhTCt1SFRU#XqC}!dGO6JWk7A)%D)e6$-@MQ4}9tVqG?L zXKzm@lEK)M+;%lW=aFk;WOe#Z3RN>#Pp$mhEGh%ll=m4d3^+9+(KSKw*9*4UTE-Vj zmYk?axVd-a6%ZMjA&o6D9h zPcH*!aidRiMIv$4_z^;A2g`w1KdO53H5sN+VD5f%Jj|^PZ4mJ*r8QeY__JePjD1Pc z9P76H``9&GwKSRpztRTfuFP%*Q(Zqa_iXPgZ)IBQ6FhaFHUsP5qas4O&wzvlA4f&h z1UtIEV=;gD%83z0b2f+4Af4(QFKA@%^$TLOY1GREvJiV2t)Y;CJ}~nnACdntnqGKC zGg0$}f!&ojpyS1G;NV-C-~s%vmA_OT&K~>7^5&o>RvIn1p9|A)+VSa}8+4jr0OZys zLk*lT&R&@>&RwCBw+er(0(m`d$Lvw9{+Eg%Bj1=*+;mDa<(r=R0Z1`~g~lo=Vvv?# zIs11gxATPkKKYLa_R(*L!6D9ZJJhC0ikmn}lL^G@RZ@beW#^faO!OaQIp6 zDk6zsF0K+!AETpnIQy3rW)*ehU;(LeVG}%Y`AUgThQz%(&Et3g!>!NqNLv4IR5C1# zLv~1g3%NTzrX?Qe`|xlCqCSJhLk3vJ@uNk?bJT~9y$vv2@wHf<)6$Oz8Cu-&koa~0 zNhi;P@cNanGP_a9Aa!Tk;-*d6HCLhPt68l*Cf`Ashx>l9WZS-I->E4l7wy|*L`h=c z#qXvIKflB(2QV**mO3=61&gTCn=0^dJla)G72_=-&6px7QvlNH=-}m4Rzv{hRhpwm zhoQE-x2<^aSByb$|HgULt;|;+pKejCG@P`hM3r)e-DS4;`#6G0sEGb|nmbqj`Bh#W z%rlPXa04bSvt;{)76EVn5uP@M^et*`yaNnj>7bc;$kiSkNdO(_qrCE^ls;BMU}ilU z)noCJiuGSH$?6dK*Cj#H@6532&9MBYwZSEz!|&Om;pS05Meq7-Oy;XOu)V*bhi(T+ zF6nj8598K4As(&|Ra5y_ru)`MOTh>BCvymgJPD~`yUwjgnGf?1a8XNxriRvAsY3tZ?q$$`^@GG(hhin zEDgp(GG;fnDGL)!R9d}eWezAN7h;yl!f63UoOfbRlGC$h`X9SUw^fnuGg<93b(+v$KaaUcWI#j*YLquY-_mYUz!0hSp?urr)nzX9;Xs(tDR~=6?O+_6!zT zum+|yYS2vyaC1#=NU3ehF-^C7iugGZ;_B2&$w+$qq{5>%D7bjmONsB$dTf2LcVNtp zitK^*r&e=___K}QVicX0=ADv991|zft=OgA&W7Dj4(9FO?TOVas3420*1lvajghw2 zhblnuzjZ8=yTN^^F8GnF=C0BwD1}D5Q6F2z$87a4e>CFI@YEQK*L~6_U#+y|y%y;x z2?)F1581_*3Bhc?adA=qSVqTgoz!QKf?PPo8jNApgcEp((ZLIEABLRPW5K-(OQx2B zrKLBSS?cetKJAgS3)-;kcChyt%K8EgGC_D>0rSc4wXt_E-u>!m$Qc`VnQI)W55q`6 zGk!&>e{){8=xjLn&5zMfbAf7SWr7-HY~GPR^QIF+g}b{u&ydd%$}DrWcV`BuM>&!B z-he;Aj1)y@9k`S9RTZt~{#*~$DCo_%)h{%$UJ2I-Z5(T3ei0kQ(>i-lUFFtucAVk?q zwlT|U{3Xu{8xQKB#X5t)h+V@Sa)0t(rya!wS!sdXcI}0em0b}3WaA~; z(8q!r(!{#R?>&0(fZpEt0W^3Mr(Va_^1J13>=vGCvFAfhr8PgW`4h_vWP^IO@jG-w zV;6)4+0+~2^BQ}i(9{G9!aMUO0b=H^= z>2*_0-R{^PM?8q>y)D@-3g&WQcM zQpG%18MgaH*{1!+USnpbJwYY|&~2OUQ(ZoW_eMq@08wJNor_AC83|?~hcr^M^BdT{ zY%vD5HLR8ri$>ZbR-tvkUn%5hniyTw`u>&@$5PV{K4t$!X*>~sRXDwpe=mE^M;&es zCO`o7Y9Q}!pBhf5^1jZWSRkV^;2XmwJ>&+V_>JB8Q4+>C2gvXx8|(xmX$`{Zlw#8MS3ASirx104O7?ijHu$uS%wS;S@iBwI74 zt>fd+_JVgwfG4wq1CR*liRJmV&HZVuy(X#w{hUwFsST+zd>OhGMfXzz$*daP9RV0u z@(g)38rx*Em5L{aZO1-?oQ>tJE1JIaB>LS85X&%SZ(b&_WYt8Nt`#81USSd&J^*1+8#IBI$)|nvO);Kvu#~2({ZbYMTJubSqH|^%fofsJ> zE%8yCX3Vm_>I>Mpbd@{vDc%0Ro@A4xR-jZ_UeEN z&27~#$R0d&2N~F!ihtUjxe)PS2sd(@9i;CVCM9b*EtD)8_D^trdl@Kt?ix25PZNnW z@WT1Bm+P}uTHPhMB9y@a0K+>O@8BHnm);N;DkF>2U2FvTxxm#gEEyaBmvO*UO0#){ zOETL==5;i-Z}a?M@^HCvZ1>WS5@|)1S**ZW7vgbiWArl)ud+p`DN%h=3B#oZ_XGBn zn4 aUBSG%HJ%td%^81{-@=C@a0%e1XlPuh-B!r*;azIgX30y{0mxK!W+3~smfWewhPS{<%Qi}O*PNU5RIEs!Gg51T2?FYD};>6`x_d| zVu9n!L||iB-;=UhN+G`Xt@`O~h{`PtLcxF6`HEhUMig3=U+R=;vM|td1ssIns$5wP zWHh#YGwYFA^X)KuUj5X{QX>75gS53~*)1Txuz_MSp=4S0Kj41iN9(*-5wRS`dJ@2n z+B6cFv#*xsx_IfiRhk&q=3V>MPffKFQ0y?fqTakGhO$kIJ=#_T;9J7hC?S!5+l`BS z6VSgq8s7zz4sGR#GJF7>teMGSksve}LMH0@2bSWiu(s2mk}dU1jN=9yCBL`n)`CxI z>EU}hxga+*Rj$YJQ#IP0^BQz~Q}-bIIPvc*z$usK3~zWdcm;L#xs5Mpk3QmV@0*%F z0u&~7(x7wcHLI9i-o%$Xq4o3&t`^MM$`x`eSmBbTde7JK#3G*&ts>8o{iPMCXl!)`2iwnc&r~C4n?ixyKvsvLjeE+EbfV-FoH?=r9Sr*I> z+6}Ja=^P*p-hOS=VdH-vL*lz(am1Lm7NW5T8RkmsihAXGoeX9+8>b`t2yZ<_5E0l#Oi2Vva zzUi1`EdFNpxWVIZTX(R_^pA(E2)lxvYm*!Mw64T&4y?)L`1*Mw9IYBO>kb_SKcol51P9j6-l7L31ffV?Hzrn``*-YD`XYDD!rg~%l}fj1v6s%@WSTl|AA+! ztGit`EAM>#i3cLM2w!~vp`zWlMcam7(Ib}DqA9vcf)g?(-%TDVF*atF;(PDa`)a=S zW0G-2G=TAf(_2v9Z8fkKlV-2eQpcT7R%( z=wPj9dDq-MFh1HlVd4n*L#R-kMV_Rm*XY>}1CzVv8EGREQIzw_#`!d%_b%6>Z13;# z;0@1f&qvPKJoh`Wt(Lbo?|RVVC0UDLYXzdQ7;D^fsp25XFvlHuof6Fj-&zN`ziufM zUeX3W8U<&JEf?Wa(eB$>Lu^baVJ+k{>!*$8mx)Un)<3YIHT>VqihYmW!HKFEZ{_vS zLYUn@8L3JYZQYkQUph@$&vy7ms*z6>z-yMpnt4y`vDB%_QW)p05~FWfP#kgV{x$!E z&;J1})e_4IP`1-!6=TU4pUD70{4@?^-BoWS+D`|MztPqjDF#s}&NxTN2s+G+5uXOm zl5DlkXdt13;9{yu+n098xj^&mA5uX`%j_~{Q}t7cd27J%^)27H zJ0|T7X`!w6#!tm7Pj>;!MJ`gNAryw#XP9zUTGxVA(vcuPZF&HrrTNY9!kh!i*Mr!J z0IQ=aK2EVGo)#Td?VCO#ivnwSO~%1Ui(tKvG#r4e@450D6d?&gji zO6I>Ze@1I%7kawHMf-AjreH=j?}FONu%QIJ=9mN|Rk{M$?eSCV=WdKI4rytN z76zA#pImj^Gp94Zx%DI3a! zE6SnOrX@KaY8v0)>-zoQ&8^$^dhPW*JRbK)0@b^Fj?&z!dTE=Ou=vIy2=j2mwt+Q( zp+F87eN#S9D(YBR)PG~DIW`n;brXtrDc-cZ!B);d)_W%_^t(336GY!oX&^EZ;r)6O zF$jZUul3P#+cNKFwve9eJexneP~CdeW{f==Z}&!hnA667c2-ZlG%Q%bD&Ti|X`vjA zTyFjCZ+v+l*{*%lfYNm(s1RxKo5vDnfnPZFc5)3?mt>MQ-#4^aY5Tv7fAH-nYJacZ zmf52GPs6xZ)(J!Totqx$&0FQMG)CQqHD`JKFKrSu%SDDLLIrh9XP>mj&{Hu%3dcQ) zhMV&;ZWxquI74pj2lz()T7KVxnda~*YYI}CyC?cDSXXS8ldllmnSWm2e4P$YP5E;)E$M`1|fvDRBmhFun}&tCGH9}{VOJXif?m^K#@BabE(-Nd$2NI6rD@;W`nmkR+NV}LP=$~bl%M%krmiF6G4I;4^CzD|Cc*;11qNN(@nk8C1MaCm6lHR$B`UFm5x;v0%kBgGNR5S?rWB1~nk4bRsX zaAZ`dk7~N3Njo@tMIE9_?0qD~n{%T}bd1Ga1hI7%Uy-AH8`%cqy0$xc^6o^N=acyUnEh}f&TMszTPI!)(B?+n5pn!xiHjMBU=h@YS z#LiT0D;h94JDLCDI>(X4od?T-P{3H4NtyUv%4L?t{c8&I(l?138&TH4A7-hkyVgE| z5ZN5%dm-9c=I2n1?ttUv`u3_jZoG0c;@4)3dlfW5X_t=mGE_EP{HA8>JDirx$9*FY zu{J;p)0qSBu5*H-uulQ&%gM6iutbMst^|Y-0)?3JV9fL%L=w4*$1YR`XhkHf4094(cg|0{w|}%v*;5CxQPEY2jJ5*q zSv7{9&W2);gey0`pjfEf-|prYuMX}Oo`?$QEXt3LDvm zAbAm0tt2x;)INLYy9z_1rIo!{`3dNqJAL(%z-`k!RTJ(KD26jTs^UT(1c$Q!;-UaE z1hU3d%L#&D%(cMB8(@dv(^2_t%H`gtL6MEaBgy*2WjXI-es6)pRgnZIfEHX7Ah>d% z95Io<9V6vxix>EvU%S89&s|A^qA&}XA^>mRaBz$2O*6GN7~7YgUOceoF+dfY^xzDT z7_gf%A5tdsbr1g7wPUzW z9U@G6&h>__o%*Ve`lD)l0ve#n{igHvaIm}h_&nOR)k4#t22$P} z)QsO7GW=j(L!bo$6JYXsh0x;lo;}`cj+6ZR{?y7KWf)g&?IyP>ign16C1A=?Z68Fv z>z2TVanlpu_ioRvD<&lwHY!Mxf{Dq|Yu;Sj{2e7J*b3)`)u2xd9ib^wpV%Of_6-2` z)UoGLq~O%z?~dt@Kib$WsFx?MX8ggqb3Q<3k#3`H&YeR_fay;dx^=<-5dkVFm|XT# z!7gKT9AyyhC(U<9;p_9Pn(kz|{^D|95XyEq0uHu_Gk4#{X$`L}hYOI-=>*q%Hn8Rp zs~h}88>jWc1$#-)njp5tq3&TIU{X3ND=qXTtX%|x_zSDotpR~Mo>-6AC_?hm_U?h8 zvmhn422!XG58)m>wRO_s!amk1zlL|e?CLO6@>v+xitF;f+f&@xshJ)Ab482GL18!7 zZPni00LxVLAeiT(wxfEeLa>Oe+BKCor!vWvEwmGq^g!Q80*UO;WqW~JmAI6BrOSz| z-<>R@fl=j2m>$nv*)~1^Rx3Pq-DbNpI}6ozTOj%4{#)CT=v@#VAGmZIOuPjj?8HP%L5mRRj8KQ9z4Vu zp)N=(YPMQ=h{81wA+)Ako+Uy+mDmi0_AQL>+)-u;F>IB<3Han zd}tY9Bd4Klz3_&L#l^q3y^qyM_9=Lj_t5cyX@~hOBs{tufP{m`id|nPM-0a6$z~Na zGOP!E_+CV8ok_U99FtkZqGu`s_aS3nRs+v5DRtc{RZuCuHi)po*wKC@gF8sP9gwG2 zW(RMCX{jHZhY35=@YrhEx@+N^-#7l7w6;+O#p5S_(i8#JJ8WZ}agsB{)S_2D!4bo| zHtsctFmV#uqWBi|=h7|jx01&(P5GnKeJmE+sVu{d^okVbVZgN8syF{5`uQqSS*H(1uXQ@v81VR z$D%CSDs?p_dG7h~7gH1S+7-f>Buw8v1*d=u8z`iG{E9>`mx+P`^ImzPx1+qob^rNf zVcng<-W&b+`p|y?587hG=skizywsoS>UNGMe%V6ON@N)}5D>EU#TfQp_g`qesqOJe z)V`uj%ASK!rdR)tsP^YBEllS^=Q6fkfI8pw+b(lwS5tqK-@eJrf!UzZ?p$`u{ZoLp z4#cAKMMA~rD-doNh8Fs|I))MRr~F@wc1NjunPGkaS(;Bu?d7zqJ{J-wZUTLyLF1ki z=kwgh+Go_AcExt5tR9tL+iiMg*t@ag1y=^^&H&0v1C-2KBUHDlVc2ygg>UsNGfCGi z-uAYJxL)oL8;AxTtUnd~T{*^1)P4(q8t3zm0n|~FmBX%@V5wE($n+chHu>uduag3s zUSp>igr#Z!*f!?lY`FR9Q2)1GS~^IB3lRWQvNrFfZM7uI^~gv0HIKv3b_EdRH4`92 zc~>{A3!=Ewa*Lu$jnooN(XvS-5L}Sf*+ON>@(Pjg6WMko;ot>`u36xo(=`ciFi|Rh zWn8?aY(6jm%WNlFUOcIKC_zVkeA;)fzQEY#yQk5!)yLDHB0V}5ux6|F?bfo5F@?A} z$(hfbR|!VfAdYql7-nu>2ufa=(i0%tKT~sL2cU7vz(gY{pUkv1h zj5Xz4n&no1gV^D_fq7j$^FzwqFf_HSSZY@PKj**nVxL;FzKg0Z?QYZ2fQ-NzN6qum zpX<#dvWT8_l~A^3z(P4 z=y~Org5ugZ?cEc;=0Cy;E9;GOh6C-z{(!q~fKG%6$g!$~2vU5-Y@_enEW1oH6eWl) z|34`C3j@|cn6ljGT2gOzi#B;J)MT&K>uxWts(9orRCK9{l0R3De0IHbF zHX?%INle1vc%O6cRM$>;W{>tgD-=0AD2nIgr?L^e-7kx{yvpUCHDOvH(Y=@J1$^WI z&AxU;3*+RZSc6P>olvn<4nMZviq5|6>(uAv`qI*$ajs-bDkEAAxh26)+y|=Al~$=H zg_8bJ-g~XNv#6kl$qEdTn#hr(#hl5$)2E;W%e0%|?U`|0F7h&6{Wckjvg2}WDDrFS zAQNnU0Gv`J(i}hDhrI^r-LcJ)M4=b-;90in-6=>zPhd1GXpGrO;D3T``FT7>52zOv zX%?`C?JrHtxd1{ShhEvLT>DRnn>j?y~3YWke%sK6C{)& zlH|(W^!XnH)qY+|l9K{>Ly> z9S4rDtq1NML%nAsY}ljHh`yR}W$eQ>I8JCL<^K_nG`%7_thD)_mM`_`rVw^ayknRF z7g4w0IU!rGC?62D3{1jm{QG$Q|Hf$9fL*_L*ZFP`RY$u91t)HI&?Vwt;UAF)OG_WB zk!86jY*cu5;ughcmSIyp#z<}Yn0TQafj7wIY2Vwasg6wQYj(6bWO|{qQdeb;@alh0 zOO3-z5Xy2M^PY)zan$M2Nnd9ZEX3^Vo46L$^*Cb7Ll13|Q^p?}!(LM7xzs+`Th>_c zK07T)o36IT5=g)7n1!laT|zlYk+QxUTBmkp!SDOYoudX?(r*B{CkfK@C5M$KXkfJG zqRYdN6*ea%B%9Av;nAJCB*i7-xS9vSjCXZP8%XGMwbwLQuIkW%&#|nt*#0;t)(WYG zLb(xB6JHUsV)w%1KWKW$LW#VPI*%!< zRV-C0{MnKa%Qo7;xQ|%V*7HBM()h)|o!ucoozdKF*;!e}eX5jbNoId1APLfcGsLIj z)q_e*lpihPz$E2JaSowa{^#-11P5k87OfSNR29GrtR6j-n5H(Iw49M=-)P>|`TYbk z?k!;YT|*j!eV!rG(Df)C3LsqyzW&9m&{YH+%wC7zw;mDRcg*k(D9_%%#RJzv>yXdu z-M2IGffC@lBlN`|LgZ{Y^m0#n(q*zlSA8?bdb;G|-c~a(H7D-18LQlOW0a{c{^aWu zVG>`?OIC`0fOJXAZDYDYHUeqGgz#u>+>5JCi8P+)_K$5}lb1dhcnAcxGA-)F_l#P_ z&Ln|tf8m(09)gg74qZ}r~4OAmx?r-Y!RBpR< z6E)=ZZi{^5;^WjO`BnzbQvQ57Orm)2MH>9d$4i1z;d}Vg7^MJ3x?{aQ`s73-ogf^WB&*nd z4}XT41CDol+e@YI_iY@7JmhGX=3l5A{#sIFrlY3Ox-3ijo@{^T zi9hz@CR*W&x)1@I2A&$I!mebTp)N~ZeO!6-+-(RlYWzVE*PiZVAoWAn-fL#2F#F-{ zxannjz_}(|VH+M|ua;f;-{#F;CagOSkYM-3SEofx#`3qV!`S1ZZ3P|WdkQBlFTTBk z#LV-OF$?3qdkA?RZ#sVDADb@d4=6ritsXPyEs3Y~5gSEHRTuoh@Ps?2(y8)q33%}l zg|wgUXG?rf9*uU8RWFJRQcg#!f!w{&zzB#3pr%Co@ zgj+thWGy3&upk|%>9B{bi4$!?*kBAR&*($TiOP)M3f4>?Zu(Is?N$eAAgH%Z7uvFl~erJDLHODXuqy@6C-h{h4 z#SJ50tEDW6rK|M5L(ymA98rHMk+l9F^7#tv_USR@5WVoZ zGR-N&Dkiq^so{Ai_~lO?c7tirZwz8jB=ry* zs5;;f)n%}Xz5NdPEy(+PQdYj-WD+4AoM@VVM9Hhxj6{KDC&ktxJ?r+|iV-Ymit3y0P>Hj0c|WPR?AoNf}N zl`6|vthxC6?b{nLQ?40(xzw|H#VW6x9=0|uQ^lu#znv`#Dyo({1LwjgMP*oFApS7l zj5k6hhl92;3?cx9QTkQA@tY_A-Ce&{)D^WsA8Do&k8}dZq1w4oZDw%F(Wu#y@$k0i z_P^FVelR6SYuXL_XjlVSazTpv4OZ#~B+$7L$D8VKQ5JNLnl>1z=NB}X)E(m?1Iudl z7^f;YVbsU#JH*C5{wC*z`j?JoIEf<`R-!SROFsP*RglmBxoU4|+B$rIdwESyAWT1R z=t?54e`zI}VwNp6uK=RXKcUbfj$NN#)tb5w_-`RgKWOwhPY1Fx<)*R z1Kr&;MpUEmilKdBI<`(cFe*O=r*os8Sj$_3jWe>K32_xx#rAd3azw@7yBmrGVm=)L zWFS=m26OH3)r&5k=K5lL#<4Y#XI~Nh6JW$Z;7UtJ}=YNs%LlgO7w=b{Z(WNH-|CR=FqY$k1t9v1R zt=nrdyItb?8ONT=&d9Hk+Kvt+RRJ;Vz{FuPZ_d*|O3E`ENO?q5nmQbz4+uO-D46_yG~^7MU*8ju1?dY+ z7D3@8z<{x@mvfY10uKD{REEZyF$>0fx!%gEV7AMWltURKX*9aacE&hl@W{#SWdiTGvu=c}ku!Af*z zyyTxONcaT|Y-j)z=+yyn>9eC;*vZm*Af(P3G$+UnL6hMa8Gnkh z<5`)#Ts60-Y<^l1xM>ZuP@PyaxqA0O@K6&3hKCGMTe3--BamkHRc?(oin2ft)(uv8 z9*Kt_6kRhKp=^z}8xCZv?b^(N#G%|=$fI3FZA35$h>}rlV;WGT3dJn7*AAoFL1d@; zsR3rV@zr&&Ak}@QMb&GWnL?s#LHQj_{p$nwsbr!$0{#X)brXuz>QO01+<2BGTQIC1 zDcq1Ra;5wcdfc-sv(IEv?CsuqRTt?Kk6ZSGLS!6|G}^~^ne|9QyXS62Z;`&UxvJ-u zhi>f}N=2ot2AfHO5VcU)x@+fR$2zMR`0*TJk9^|y1D06^Sd-7i%C}sclkX;%8yVWG z&Cu3&B0pNIGwlP1_Bb-USbk~}5m|P<&K^_Am>eJcp$9Xub!$uzZSk?y@sNOqRkUK| zfQ=R)q(!_Nj{b9Xh$;Bbry&1U&yaa@BSwlfdam??r+?CSW`8cu<7dGT32X7EW7dh# z1f@lMMIet_NF=t@N=fQM)si3-ot;)gfh?tQDa7U$%Dc=T?s8^7fC0J`zx@Fezs`w3 z;&KwE^mdB=Esoxd>jl(kRPV=L!w)|BTDk1@m6 z=li~w&)t$l-S?9CRcc>nclU@Zo&Amz<%c1fXnmiE>w&~+Qk}tQ1nhsw_G6d^cOH$=>pO^lQqMYv( z*D`>9%7#4{f}KkUfeY=wYXpUgEtyF(Y$9b&Nm-zSXj;|JLPGR-<3t$l3VCT_))IvYaE$2Ho@{0o+0S!f@?FVaSS}}%tvRQTNOKIk z7Ubk;5yQ;#{3M)M-D~S(U$zaz;!xXhTp9^AZ$Q;`(9E)>>pB5_w09$}?jYo+_u$9m z&$&}}Ja>kN<4z|J%TCwC5QdOD&!V!+E`ncL?H86^MGcUzuPt7f!B^;6Xm^;w2iEq3 z9ensrE%#~jE%`1jGWkM{8|#m{pT=&3k=e00oKFC(>TPayEBo*|)8G8{*(g zp6ulnkaG{(>TAuihZn!6_D*hZ3j8@=*oKy6f@zq3@dnj=KTP7{Etr0Q0x@OCnCwpB z|9!`C%J16&<6ST>>Fm;S+9}-X-KT4C1T*8>d)^PtPBxYPB{^2t!)rML5>8BXE#cmO zkk)V|EzYtCMVf1gv2A;+CO5MQyd>_#^ydp-+nQ7fr2m5~6bbZ&AIe|-SK`;CUJl9X z(qw4;)p;3+9Ec4)>zh@zO6Pvy z4CC#%QnsaGt0`w)_E+r@pc7s!*Ucf0O8ROs|I8+HgEeafSrx@9+N88g z%hXZM{kEsJ)M2*W_{VV|{xVDOu(k0>iJ2EGR!-^|kCO4R%?~}L9_=Qou#3p4Iqll9 z0eg0ZM&SH|DQ&$u_PS7Of!7CL+W2aQu{U&vboVsDAWM1EY#lGzrECCs?|<=v{BtUF z)MLhdO%E@zAIb1n25;fJUMTGfTKt0s-k$RC7ej{q&>9tHLJ>&S1 zj+AU}nEvcqz%)`6|1ZS0daQr_<2X%EVvaU#+UI2F4L+gOIgAyt znWKwNYP6cu>jtzfeM5y=m@$9cx3RvVKIGuQsp0k`Ta%YA9R6O4V3)ev@ygl#x$R!T z5orwTH(h1dof9%JX_ooehYyDDQnrsiV=9Fir%#1#cR4ZT072oQtg}LpH-4nKrcgz4 z9Ky@EOGY61q=2b`a9(<>tz17}& zh|oQnQezg_tjWR5mP~n8L2I*5Z z`|Q(W_7)qL`p-~$I8=q7Ns`A!F7&3OEy8H9ysPJaKk^~3rS$X7_c;bltU{WwN)!IP zXNdHxGGCs%+X$plMSM98?g~KNWj+yrZ#$cKASUj6OA>?Dozcc5kEsWgh7+SN2Ip0N z+-wr;8^Vsa-0(a+F(-By=bRtcP|>El={9o!`Ne+2I^T^U?;T{0587QF)y%hlud6Ys z^+_}wA92V@1TAb|vM4A_^59pSa&}+Vp!&1y4mgNt2{v5|^Um2Zzp)*ONsIpO@u}JS z<{2Ts{+=iIsdlKW|KT&%oiCT2Hk~STqH8VPQt5OMu0M_%!$fgx>Aa7ha^1|Q9BB0o za1&mN7<2|V0O~+h#bzeB1Bc zNaGtg6e@lgGU%(apP}fxv|q{CCWIpNMYK-n=@ zozJ!z?4}SEx5k(=zLaK2tD#-ZZt$89=e^M7Dqls9W7DSJ?HEuPdillu1W&k;voe zKBOR@SkISqZG_@AR$Lw3%VEr-(Hq8{vRad~Ksg7&j9=O!edAq!J8AwmH%TPvMXi?o z5g@!p6HEgeZ~c!*)>%V}>yEk=CCdm;$7Pat<7*s?DSW9Dz%2Ud#K)(_P2>7PlrZgXKdZDBKwRq*7o z%oyo0Bz2;OWkJId%Mi<(~5ezR4yv{n}>z=6Ea5j1Kggku-08rO^4V-lHurct^wU{ zxBMHfthp6R`xd8e7M76>Ic<5*tv4^E(0{+HPE?nn==5Coa?YkgpcRoLJW8E)sDK?f z4^S(<9-cmD_&N|Gllj$6s?7Cml%H%>Myp9+aK5{fAFM@7eX{Qz`}~G>qM|%Z2k4SA zyi>y0j~(kXl4X>E$YC2&M>~;FX^w@L8_rlxqxXuP*dDzoPvcLyCr#2?3+*}#_d*au zf1Qx(cB13B(1=-Oa5b+1iI^X%|MY>AS$`iWIPNp_>@10w4mVCADXUNHF(~G@=%K9a zwS{(~0HpCBi5**ZVBvX!jRe6CZY1E4G4%ZCQD%XG(cRx?o<%5EPU1%jpPj`MgjJYH zGzL{BpRtFQVq111nA76ATWY3>Q)WiwH~1<4u{x&%W-9dcAB`C|F=ImiqHdz2pUQpX zFA<^zmyvP9uKS_Zo=;sNN6pR1WF*#5jaqhk-0N8h6a}`CM_M`=>rZ~Cb>rC4q52{$ z)bs+XhM31RhOg$vqZf8uysge^<+_5TW&Bk<9n#?jmZb~ zwL){}6AWWsdF+-efMHEob-!NN*os)k-n$F2upoSQqseST0KY;ADg|T#djIwnH64p@ zw2wTzxc1l-_Lq2my%rtoL87nos;Co*nR2(r{NZ}e`J zpfGK)Jmp!U-f=iCvu1GdC-CnQ{}n%wPq7>1!`Gq_o5$4At;c!*E-EnRfYtks382HO z+RmDDEyYfqKzA5YeEe|Gacd+V!Qo^3T<^gucR#scj!_CcwW@Ls_n$0D@z2a*{>weVSURE)aZ0@+W#ZMPt^VcmiqW z#LxNVUU<%t#IuN6XL=vZYs*YXy*{EWCNTG*k(!!zr!B?Xt+2@>Js>^I$r#{^{EcjW zZnbrv!ndcg7RFaBbgI>(H2TlNYYZs^^SNCR> zSgV_}YJo!w3ieD6y+sv3Dilgz=CU#URM|+OEsf{Zu6^I7Ogz5{cE~AdeP)*HJ@v#! zQ;|u$V74p+WLd-puwJz%ML@=FwWrXfA}wv=rUCxXfGI5j<5eR;I&g0tC;#Cdb63lN zcu!~P$9p(b_pk;U?Kh)6d!`#qf$r2c-l`Kx>f}}$A~7u=1Vtg@?iGl-HN^5N%_T_c$m6iOZtYJ)L$mhswrqox{U2U8Vv+jo zzO;AOA567b80xXP(!Tks>_4LQw%R~Diduykfj?=0K7YgKYT%r%oAX&$8O0$D~*RE~z6*K7x9oaJg5$4`!^cx70kyyd^o zDXY}9fnZSADhy3OBPq=vgC_-c2=twQQ-N9cXfnUrwAF^EKUUw1Q5z1LLDnktKCvEI zD%#H7O%Vr{_1^dbGZ$qfT{gi)!h6bm`}?eH*NWm%v~OwPJgO1$uWmXS#{L+;6A38R zuh7)FnqS}To+L|V#fpi2g;lNCWGu=6j*-uU7*+Zbpncl2h|TiZXm)QskAvI(DK_90kDm6@xHJL zR)%l0>yc-Dhh4(>h3du@hTtrVohwjYiSTs!gj_AUA=k^6 zYho1#;gJ!HpR;?}UVC=hxFo4{M(@$!>sVfl)Me)XmtlPRQG5!)$I+A{8I ze&bcpW%RH?eTJCl^7ztkWzP-`m{MLl^|4|^TK6|0MfJFH}Ix5S&2Ki!z+415xrU!O%r~D|5 z(`*1EV?3Q_aT*9CtO&lVcaj0^x4D;RWz5ORveVuyC}=DzTc|Jl!gDC+#DP_bVK@Ek zIQX-FK%`q}5FIBwp6mid5c5a(?DU@G3;Tv0VV2YbL$Cah>TuX4?y!)i@23&f8gL89h`8n~{ zS~NwE=^ZSNb;;psyI%G(m-RLOx;`{5|9)Wl%4)BJ+bSdv*F7Jt%?Wg3(9e?& z&Hr4-(fAJZw~qzKV1I{NqVXf&QuD{iy*7#@EuPl|C46Ii=fMYha8}rC*~ISh6gM*` zGA-MAarF%2d{h>Y(|_jh9Orq_lNzaHP(PNDu#NUw2bTue8Ik3B&6&nL*^^o9+z;CY#G(d*rZQ7WX{s+ z@y>Ez>ekP1UNo$sUNI=SD5dIMKXCGcFzHx+EjX7TJUY%XQ>@oy)3}3?%JxY6I`~<& zfOD}lcM6{6X%;n5pvd(x@=zCzli)fjU+G4)Yp_mf9N2(*>%<|=GpF;bpn@Lw&^yL@ zedh$4K!xju4~IH=&)|x5y&l`az=85N>IYnRjgwG5F){bOun67-@NiiDsm;CLLjaS^ z#LtJHR?G45`rbmD=iyUn4DLqE8kIqV@H%42NqCsooH_BJM)%{7uz?M3=Ad zOcL@nu0vnW?hiZ1kB?!Oj_+&G7bh;b6px!0XqQ8gQ%E!>!2)(Z$E>V*oUKt&@Ib%D z$_vV5#3O&^1N5MqStO699Opwb>Y#2@q0XQCc$BZl@^ZS=A;55#`0;8mF~Z1>?0#9{ z5^P=r)E^O~Z?ek<9$sq-`cVKDueBjA@o54P2Z%Pw{vvGe6{q|_jvW_Z^s>_v)TrHS z=mA&E!qQD(DF6!_?)e$-^3*~eTTC?_LQBjW#vBob}>rJZ^lk{V0`gcj8*J^R) zB++ZA$H)T0%CXpwSp7-@QE2}?OFbOdAJuFb-b!OP$}9eJ?b^magCL2Kvj0btMp_zi z;Qgm3x`nI1Kjd7bzI6j|`$w5Wz2(NZ7YUvjM;_aLg2%&T+DAaZkk&>@>2jidSu%=? zx|P>rBXpj1e;{*-_lzSIQ7DwtpU>Nka zKHiL)*`D6ALJ#g%U&HZ829og7;SD-ka@V7$=O^}wKHL)+5?pU!Wm@YQ+Hk^u{p|}Q zS|*PKG%7+6mUb!#B5RDaBK!1MyB%NxVW6*qVF7hWBtU)vATS6HOdwS$q9%#ZI|iJ4 zv%D``Cx>SEqz6?Gx^J>dyFyI+m9hL)zxQ6|+>OeOfdEG1)et9=QQK&{wX~wR>Bio{ z+l>irMix31gir_M??cJxst>3?Jhm{vAya;4l^j9)Zi2(n=#>-@j@A>u%R+ei$lnaD z*oZ7hcILlb(?svN&IC{M%tgM<$|vEQ`l5mrOO+fnf+*u0sHVVyO)S)VaK?i+gdwtwl-EcL}jV*uU>%b&OI(fEq8Npro2b%>Ampd4G6 zoFE^z{b+rlPVY8SK*~ z#@-`jMJ`IB@Iy@v)1>pCD5dMHz@npbeu8Y%NrEJWN6pQQPtT8L-RUyLV`#158SI+p zx9QfS4)EgNv`WCAs)jsAdLs+r>FN6l*EXF*q)tkt;V3`JTRcAeHD5(sV@?n z%>NAMF!WCkugf8umvt!t0NH&*KsVf)0I$dMv3s!~IwLtq+Cmfe&E7)JU5yKHf6(dR zLG3r5zZN(1_WYVcip%pCSJz(@U3{EiVW9?G4d2}sWpE*;=j}rkGY^)I#ug;R@SM~8 zH{_y~fvZKwFFszDe(nTk!@5l{0oLG>sKaHeT1KJFzvHaCdwugZh7c1O6{r2je$Cev zL8{xjr*7t^o23-PSsaZHGa$KeE_-*$1pn*V9K~qF^@`j_t@x;=@4VRs)1nia3nudC z2^l--}05Mz5-~Gu3)*Iz99=D76ad|2B$?bHeP}!J04=b}{CGmBx|;tT$bX2RIMYKF8x2 zzPJHBhR1tZ!Pw+EmM*yar~ClJ!|Oxxwr|9*pAN09N1L0RU7W}@K+<$>a>I-$>CqR@ zF{2^QdndQRR%3AkVDB=!Y`1!~8DDp8BZ&^*)I`S9i$Hll8F0eg=6fP5Qib$`*c1h} zvD?0Eh6V#{5>m`E%I4o#)fnU4eziPr$*1pEm~|PxT0Ibq$LkZR%YFJQN;y@iFE^xv z=B5YU>*ExgFyxVdM~@6C`j?hYjJcj+(yga}{ogsiPnohI$O47^z4hv((*?q^_SpXL z8(lFY`M?{`I&DqdaMzCV}q#r9eWO?!>TVpt_`xLJGx9k}6!?eB48@d9Hup~m5S zu)FYdsF97=gt*!;n)#(OYXij@NRD7tDc!@?_-%bvma!905=0lal{M$j{|vZo*Y3@V z#emIdvUEb>pRKX=>(YEff`=0fJnQX@^)-+K%%EO}zKX6aI%TB;bgG%0O}w%r%1D|o zsm0QI(0qD>7|^cObP7Q+5K$YW2~kfRA2l#|KHE)L6ikkmZG9J2w5@Z=pS6PYK51ro z0>52d6NLv7EdW8Qs~8;V{L~1NuR$FDUy=JUv4&y>tsL{6|k>Nj&CPjS14T1TiPojaI>6V8f zJmJhF3EuKyijZTVQ{8q%gXo&!n0GG zL5S$UYbAFG`zk({{(7?a==Hi|E8h&;9RIfP(}w(15;8Ar>m#;k24#6w4QT~>KEzZc*_kTxu4E?h!fRBl9Gs#ac(SV;Cn^W(0{Vn}({p(3C5=LOE`W9rr{L zZK`7juMtrGn&Nk@d%@L-{`EHuc-))fUz{7X0(_I^&G%o$PemN-WEo$TFHHX)y(WsL zt8JFrqY^9j<(I!ftS?MiUgUe+eOVH3jP8h`%gg59-4wd6&>=snNJP9yv?RBk6&nAc zXDEp}8K)5HMPxo(S1>or$`9>)KvvJH}dPV`6<<{*>Yb6rfiQ|nfOg(5Uq6x8NLf7hzpl-RiVBF(JijlI;AY^^H z59_qlT(ykTPeQOumK+c5bNwmO-bz@o#tvTcQU8hMK)uM>{G(StGxWIkcb$>ZGsBn?6i6iUYx5jvLhy ziYhLjB*4!D&F_B|fAG5RTV!EFwiQ7RhZ1d4^z}QYhu8_wZ|_kgr@Hp(Y1)we1(1Yk zT*}WJ*zR)S`QBYWJtkjKeET8Y1nspv@+(txt8-*jekZeaqR`R!kE1(S#~4yPn6msg z@qw#e!FM}K%euK zbKpa?hMAhET^npoF+~hF2@vZT3X=lj(@w(t*)xz9#nA3rFi2pDFOTZOx>Ck}H(OsI zb_XZZ#=t}ZXYo!#LTAhmLDdK0mP`A)Q>G`#Y6;YjL_46H2!fvs`xO$&b}9S+4dmLp zWWQ3pL|P3J-RA}`f6(q!o5Ev$02e9mdY2Z%OH~bHFJPjhv_hiVNeHRx)vBJ1 zm$2j&e6#BZLo7^D?)4^R@$`iXa%kS|H-qxbRX`<-a#nTu*_~Dmp%JwtdcL>2H_(m0 zA?tZ)9BViuHImL&LJ`UB9w?0op!UZ-v>CN|)wHmn1kNoT$O2Dz<6J02j$x;2rF|eE zi`pST5|+x5$ixJ3A*pJR6JLS7Q&v&PXngi zrE+B4#eHSl5;iym@n|AM!Sox=dr#E$+f&*J-(0Ju%N?ZZ0g>!EXBFopVfL(TPd+xdiEOnyYYDRZzppKr& z3?xQka?q|iOmQ+bbZXyFLDb&c3qPW%e9(NL6< z2-8FSQ+_r>Au}}A>>G=Z2K<>4Cx)`+MX{Qz)h#c9i39}bf~wjE9w!Nz610<7L19OT zZ+HI^up6nJAG+89Di1<+TS;Vz@4EnP1e3dH2)>$e-)OkC=P11VI{{f1@yO*f<*LC}X!o2} zh}R{C6Tz4&`q#_ubK{1kS06PR{H2?M9lc4}nQFHHKixSp3k>y#$J?@{CnUD<@4K~I z6sy%5hA$9`LER>HszYi7-)*Sct_~Mkh?c%6jq1TmDO`o2^fSyDHzd}6qteiab z79E^;!MX4dFD<|RT@jrlD9E0=^Pe%YPv_H>*qheyShM`V@t?oNoP6cYR!81XQMx)( zimP=oHqNqzMX{94Tey9$;l~Cz7QKMI@7W`rEf3e)>c`Fh=M@Dn21mcx``}Z%^W8l* zjuCKP#*rs_SFJru)V4zuew0{R5L>PjyVK1>aY7Nxaxie%UW<@;q3L+#6jq6cBx2tYowhpiXJ@S`#(#C++>ssF)u%&YnL z0Db4ro^#@>@GNBs{uL3HEZ*|e5>fMA&22eqcIE$Zbnbyn@BbhF%rG=_iPM(3Zsk%( zZifxC;WU?=S?Huv5hWdIv)pfEQO8+xFV$Q+E~8T}rRY#d*-+--L|LKHl8{?+{r=wP z=kJJZpZEK9c|IRcQ)u6{`v!(eCm3{py(IUVC#ua|X%M**|YP<;vX~pTg^!5y;jp!gLY3+mv!CNWf_%qs(Xw~PDOp)xN zqwT*2tBJ+5_m5}R&J-3Z+$dWFl9G)U@Y^h}^%=HVWE*AtI;QbC>GHW95&p!aC#YvA z;wD&a==_~{_lX*2=QyS<;3@n`DOVPJ8bQosw{P~^p(sO`53EDZdZvA9=!wA(##iaHzr5lvj!uh*D)jd_#hAhyowJ_PKklu< zPR6~p$6lOJ6R!1NgR88D99)SctYLw>rbavXc^Gv03NnR({IL_=TrsgYyH+ zmDh9?wL+x-P0EW0p%!cP%lankl46NZdPiXO>M`W>;(x38?*mNXJNeKWH|LG&3Hj(l zZ+6Gqho;W-ZJlE8Z218*%*u8*mIvFeb9UOls!6s$tQg#tgz5^A*a@>0h%0(e&7fd7Av*W7yNTpg=it z$rH%f>WA=}53B}r>m{MHC;p~szrW;#nML3yP*Z}KuW<_V2jsDWwqECUF|DYY4a=?V zjMrbxJf$sHG*S`F^8J~2_y2t;r1F3q6Bu_299w6pkhjd##tFysbCpZ_R2R&@p$0ikG&I58y; zEbWCK;nl_^TTjeNCC^+rAm|1ZJ=4nqwsxb#>S-RcaaFCq%;2KWRX{s^0qu4E)kg^p zO@!7UJSo~;tI@D7%*>Rti1VAJ!RGsp+SQHf_3PdGR(ag0_7mTQDX$ANzjrDlit}x) zJKd^C)qcekXnm&+e)h*M!26)ct3@;k{+tCmrf_B>Hz_GrF@4)VlWlO`Mn87;`D29c zTA!Rz!zClRmo!NC7aaJ1`qz zf<{tOlNPg%kL({iFZP|90&?lh^I|xkZZ`%Ac@(jyU%L-F+kPyjyf>1v3bLq7@pZ%q z$v+vYqM4k${=8^4y}}8VUlkZ=jnOc48yL}!62tY5K?=(=Twg?Y(`gWycX8}UA(5eW z{CP~NMhmBy>hz7c@`1fGQwhJ8>Kd#|To!1ZCWc@a+3{z%EXlr8fC&U$z{pf*Tpipy z2x##2A#K<|&@*&fVEEPp!hQq!2$1)Uwg7Cj%xP;-dziX#mz4F;j))-Oi#N}nP!j*Y zHX@_ zG_T|wWW6wB$SPKI_2~Ms)~Y#^C(SU`#2qp%yJ8%cdy!`Sux43lE8#Z+4jgsNg4L zM)|?;+n8Rp+&Hb>8Tu!?HJrZ2W_o$lm7fQP`_v=#39ul!2D! z!0x&Hz|v3t$YQ9A%m$v;+Ft@eWlj?~Cd2O;h~%rtrb{3A)Hf;*f)U?o-eU=U5Ke+p z4iA)$Ou2XW03R+vUSn?hP@M1}Agi=#v}m1(?Indp1}8G^ z#@iY2l3K-DnKT#8JLQ32)mA@dhb$9tIl`xw6t%sWNZ6s1G{gyTMoNQ_slU&O+656= zJqDI1lo4>_jrq~Vs!`_Zm9b*AaX>wRa=yi#>shqyI{(gFkh1vdryH~{YDM#dGX1Pc z8g*MX{}D05qI79yj_Or&XF<0Kb4CW*bjhZq8h$~)7B^p^sjeg;5P@;0!rX;@=r9<| zR!vdPS?H@&_}{pzg#v0#)0pmZX|Efz-6_1!(KFJLmtTX&e~;9p%xb zd%2NCmzLbf%;9IfW@{hbmHbQFR|uE)J?ZSi4cEV5&C!z3y=nt%1DTIvO7U);%ZUHZ z`{c_D6^FV*OyO(@ufNsm2?e%awHS%?)+-_dpXTbnC=WW~-5&9vPv;*WH^=^3x&O|R zuU8_=41+6rC>zHRX8Jf;Dfb}aQH!dVcPYdUtm3y#)jgA=%-?;ZBkiTBbHl+KnZaAj zk%uG5e|+6KQ`C}l`^YdG!Z>%&^S1a2zA#&xOd&Es-9NNM2IRyQvF{NbwRG!6u>T{G zub-nl4GLYf&9*uK@0wz#2(=y`Prp&nBm!1op7m-9h|KPv&AHJRi!&*9K1H~%^)1o$->(z!{S510AQ_5<%RQJmulcMoc~TYd>{JqNb+$(dyMQhA~=@*9UWnn+^bJgf9UWy1bB^N#IElAM%An%qt z31%!fAxVn6U7qtdj~4knFbY(0q_8b!PS0cd#A2^qq*_G&b0-(Q(33wFJV-~#%SdX| zc`t}%m+GvVsciO$Z}dN%3=|9pXg%?Ro_=;OZP0}jyi85 zP%R)63f|FuZC6hef{49&t~pepdBSw6p9TbaR~#LeL0=3aItLUYZ+AY9qbnB+F@?! z_O-m#gs;e7#739khHlsix)BqTm@7&S;(}z7k0}Q|FdciSGp)I{j|Tc=B|XcxbrSb) z%a-G_TeeTHq0YiyxZ-}6ixTBDb#IbE&Zns&A;hpwC)-UvM1L^(qHLsTwhQ-^uy!-- z_}x3cNT;vUqUkNr%@aq9Bqh$yXG|NBl=T~qyoBTyV1LuCmw@w7Y+xN)HAlH@Rei-` zn$KFQAmpThZrLtbzdP*`1LMA}*daM->ix-{f;D~TUJClZDyUS!&?2=U4a{{MHqCwt z54xVAAA`urjLfM+TI^y-#)573jXsl8k?Ob^Y}sU>A$7l1_DZMPs?9e|LzT}v2sp+k z`}wKY>>w+XT?JHFCn|Qusi8Aaq=nS~0H0p_Rte9}vM#ytph=yktlLzHET27cCD7Z9 z^@_-^Gx6Wv*87Ds9JS_SsN&x!UMNPOmq?@pA1K^XB7{HscWsSs!Hq?_qr(^ML%yaI zDYTy-rZb;O$-M<4ecLbG@wka#z0rFXdi@?|c7?qz{K;F!#%bQQa)pYo-_nx363cD_ z24&mAN@9fvjxbBydNSpb)9|yBc`RN^_CDcUs(7BU5pm|k^oZ6ZoS}LNl75uweV5CR ztlSOpmruOeB$>5T3I3N;CBA-oke)aYB7hb!)Eq0f=V($6dav&HH4yAy{ zbklEiuNJC25UUr=u)K~X{+|3!ErX^nPz-t zHuSwU+g^_>Sbc$yIK-2fyG0=ypO7Pldn~8=LZ8NGd3P3GY1``(61e2Z^kF@~eKfds zS_=PK`SYimZEDxKvf}?ivP#p5fm20wODt}vtFh6%K-A=u1*aj=iAef~KYnJRS5jIc@wS*o_H zJ9P&p^yL*l0c;G)rM%pDRDPx!J$5RGc6~R^Q~GG203(yjrg}hQ(G${}kRqX%Vtj9R zUE{*)V_t7(Uk>1?|$$p3MkkD9pSxxNPyk|f|h^2xv zq7?kYQw#CYOVzV;HMK?fmd7_IbL7vRiJYWgqUR zv&gsoLd(09ozyoAV_1z`Yw7{MgKa#2(K{&pj0gG>Az zguG^g({!q)UgvM`)AVEU`1AvTKM=))-Rb(~&a0_obO?>`(WbqR&-ptqMn1Ia1#t+@ zU(a^NE)Xl#;VH2RfT$R+TV^n}wDG+%Czs(N^fC1oDFM_q^Jespi8F1hb%zmI@z9w* zf^n_joXVIKH_dS~HgXf{Nw%%knXq-kyyJf7t(09noo=3v6%L8{gon##3{OmVvBB}1?lXQy-O(kK(*%MX?U|mpftdzl(kty0~CN694*ZICPCdyr0+4mzV9o9w?)g$>1OV;tA}`OViR zN+_nbvj#H!d@2P76~n}VWbx_?V_g&#fe~nCj+${gEe6%)*wrF=%ihS8&6BU$>OtP! zev5;=!KT29M(mPtp0IYQJbbpJn7NAd;WGTI#Dvb+QU$!cu-3<3kDr`>HMcYho|+|| zpZ26*5Ak{o0Vo#%z9d|#8cO9d-&AF_{ z2UwIawCJB}DlWmSKv@%ZJyiFctqKedXH%1aPx^B;MrnUemQSQyv4x_VR}?`CG7^5` z-%osgZM`Mug}Gw?Xadf- zi=f%3irT@wtoVgWk;f_;{J-+N6f11(IeES5i(BLP#wR2n%;5*3200y)@|@(J}gv5cDQskNmr99nxZ;xcN*Z zE>}L=Ix=48ERO{1ZI4}7(}<{8V~zF zo+y5dgs*Iu?*>Y_X5c)Ex_o~gl(bu6i*sU1~1E4f== zK)@i&QB*hd+@MeGdk?L}Ce})v^zqbCZT~H!mIGNo#o^WOWhaFp)7fa17xlfCZPnV3 zx)s0Vh=5s>^u)AgM|OH9H<&S@XDxhPpn?eCZEywvHB{R*?({#goyzTwAkfzN^q2C` z(OUAj*RF3f_$o)<=v7i9w)$pHlc#i9E zCE2&Qyh=8|8UODeCNnR2Lta0-*c$BfVYcaSJr&+_`2q_!s}{BYiiU4U7fKbSu_*Up z^dx2#Y&L718VDCGhtB2kT)1ijwdaC!mG(YwnwTXD_K1$BhAxH2UzCB7#-;FxQ_2?- zWq{@TszE`tN_~%5-UwT8_bb>|4;jP&K_|B){;FS{NPd3!BA6`|M6w!Vb*-3NU|81l z{<-MhHLSvk%9}8UK|;_Fhs_+-+Ht(>97xJsk52$bCiJFghjB#wW|+2r(yIdZo zn-_#PlK~GJ7@3%$QeFq+94B&9_SMR~C;HQDCT)B%vycAZ0b;FX= zT+V&scuW$x!st;z3kP@m_;7C+`y)*|*H$NwfNA@zwqV1y?i{tHS-3_rfWJgMJ!_uPlIMdvlZ*51&u3pICOuEA(ZPKtkYAVJ zGtcMh?{zb>?2>p8m*vNThm+13m0|_Q-$)%3d|=0KaqnEhZvY;z)~fB#V{!*(ffGv6 z{vrZ5^tSM*6|^ufJXov*HW0}TS9Of`^2%{}bl;`%}dhtK>J z`!WCgY38CnQ*t1O1}@>h!~+DAZ29Yvmj^1kr;=3@iM z--IYGUEVa2D1m0bFDH-kduaOY7|lC>QAaS&h>fi%btFx?ut1#qPKPvd>vKDbHYr+# z2XiBt61}JY5wA>kb)nR7Pl)yS5+n8=2;+s8$9GA|+Y3115_mbo&7?{k5lG9C~)Lb{m`J0dq z^avq8{|Zf{D;ba6%)a!q&vXW^Qb~;6dF5(r!V_p)M|?u@pq?t>{{6A9Zmhw669slJ z?At3yMM=tKus|nLvERxLuja#YZ$n0jmIa|^ZMq$tfekP{w+#3y6riV;%8eH*x*+op zlnL19FlBkoH)0@|WMl0#^3p849Z%h8V!Pp-mN=XNo5__=31`?^Rq!-$_LpzV8Ae9o zHr9Mf9i@)kGx-_eYBw6~bi14eq5fp&F7d!alaBitfu-b2$N7p4J~W915C#h_Ezk)3=(z=eYvft6;3s3JWsJ&zyDR%HCLubZ*M;MyFZ zLY6Ilt2iZ)MG8Q&x%RsoLQpRCsE}jyKg*#e|g# zpHl3Ccj8hhR3y6XEafbh%R{m9-^Ax&(vpaTOrO%o@;WGVPhX#0dBlQIXZoA0?$St! z6kQ>CvGFfnovOkO{3e`qS1FP}%yirk8HmtPv+fZHfR9n~_{8MP(4Wo<;r!wzf!Si)$Ld)Yy+Z*Zl^xkuX}LlkUZ6U{mz98pG_hOL<$4rtdrUyo z)X3wFb50zBf(Mv^M>DyJ5-eaaol7vgvprn|Cx+*ys4dP->nT2qGak@3$}T@oZ_65Y zT$h0$EZUG1!7Fa~!EKkwAUF9C;ls^Ht?iuu_5vmG(QP{Qm^S>_PH@G-#11qkU+$L8 z_6$_ZMSSQJ?0HG|WkA%g4eHM}9m#GrXXeH#vbBpcXFs)Vjsf?1SvV)AC(Y@!EFwj( zp}D&X%i0LM+ZKTA;@N%gxhbtZm|_S91bkf#Q?yGEgn3NFm!Ii^r+jGOux|G@#7+F#4#SeQSDn67*ZglfhEkL z!PHCevu{xhcNsa0T%i(~%xZ!OPlCm3s|(m8q%LXIwwTWd&w!M11n39Z*vFQf=A36A z@|E%Q8V@Ki1~;6Xgt)ioPFhIx`*xn&!PKmiwJDxKu=~U3UtN7X(RdGX;7{7#7rcz^ z&I%9Sn7CLP7h#vCJl&X%;0M<(h!NB7$27H6+eCCaa#0dmE8D0#{*R>>!~3P$$@wMe zAYJat15SbDd7bZo-k@POR_>SqHyE_6hob|4G&U|yAd^pBicT~$n^fvV7!Tx#pAss# z=n86Hd;}ikDDl^@bV#LuyvLRS3+M8q#I*rQXQMRC3VRniYMsghIR~rMOnfXZr^QZv z4>krBIAt_q)T&@iqdDugej)iPWVEl40!i7;RA49^B2~Ga);s$3NCs0#EAg&MUE*NRyJ zGKpKFY&*5Ea<=tqyfMH6GK2hX6x=HPQ8JNY-U4)XK|elVj%`o9 zNjO8_fem6H9KrWb4`dJ*S&QoLV0cz>%33EI{m*&%^QZhm_)C~shiLF06yK>en$vL& zOe`b9t2a&jySFb?x0^8+k&C0*@dtOiA1@M{k(fZkG2I7u$>@}_Y05Ljqq1qAPG`N7 z-4*T^ZbVPWhV(8K$8Oz~k2u}|Cj!UEl3<51iu-)Ac@LY2UgPB>PtD@$6Bn%e=#0vMu!vkF{tmREY? z7Y`~ray3SW69(_9nB8YHp5MmG8o{^A|JG!=>h6#bAG~4OW_Rt2)(l#nQ_^`ktH<)% zXR0?ezeSkwtO*wD=on*BpgAXd22yW(8`4O?kl#m}qjkJ4&k5Q4^Z36jLHEHsobv)6 z$K{x%6IOxhI#jReKQpmL^{}kcjVgAX$t*ZDalJ<~vDd>vbRwRg%N#zKpKlq{qZtR! zjbEyqIf1=s`1Az95dgG&H@qTukP}AgxAF@W>h!DImdGWvhI^RdyO1!PHNAzX{mJIh zeMhI*)YnF+PF9Hpr&kR#-D^*``nz&&7KAt_nR?cF--t72yR9yj^*l>c^neo`|8rj_ zdm6s0A0BVR&yNz;=!QT1!bKyKA`uv^#p_pHA8-2yMmAY-D%m_2l6&KEe%dhImTdub z+Nbd8vv#U2#>X$|)2PZ*X-!1?PXx6) zCe3od+4$v*Su7kI327-EdWNmB%w}=Nz5(4_-`9M$hfy8sc?23~pf-QI;?&)Hxck8u z5Lv)Za&-UkcIwOx{8DEa8@l@`^A;~|q~zAJK;#km<%3J>J~3Ciwxs<-ABuWF?=s2z zp_5(6uc}uC8Ncer^^)9xDmBnbbJC-e(V{=;e#G%#2RkV8(C@2Hvf_UW_fhT=jcIV1 zK4o!??YT8?dJ+;q^nwOX%ZJ+Uyp5l7MLsEKrrATd{wGDL6VH9p5} znglc(Wj&3wAjoBR-oLJMUjV``UU;3-JD5uh_A>VbB&#o^bDD2_9!s&AvBoL{*(CVm z!HdkX6y4J)FpI=v(4>TTdQaiMmu~ThnDv(REnVwherylmhY}Fn{<>`pT@B;L{uaEXE; zM1NilOsG3g+tW~k1yWKIm~{iv)&o2r?T9|kfgyrCK=qptkj^tx6ctSVd_zg84VIG@ zC#Lb&`)|ty6h7xvqWPg;Z90T0-E1wpZe~t#i*HNgDFO($$m0&!FLhP8UWOI2)j+JX z&%Mbs*joo_=7o3oWK8M8^J^0WoFyd9UJsDlXtwJEBCs{U!$FLne#cU!>SI7Dxf!5O zISY&IZa#2cj~%nJ@kxZJbeJERq7ccJ7!u24rOrYzcBvGO-*^mRv1f`hOwhCKAmr`4 zZ!}h_`@j>Eb45Dv5$coEFI*v|o1SVz?sFbS<*O6lLeCcSJP(*jNB6o$JcX1i%Jpd=^6e0!6f^X94~|NLRdaeX_ge$vykf_ z7)=lprkqdH-L5}e>>@p>r>J%)%FCP@X2qR-42tk%XJHb;^%VgN3G<3SuodWI8*SJa zU z5VL7AvUvV2i^pCm*Ec5%fg~=f?O@60vvU5S2?_a4k8XUp`Ge+uvwGxRl(T#!D#`RR zJ|x{Bdd7LbS9^#+>{|>v+lH+p@{R z0w|at?_2aocQ17tHXDK$w;&-?P?)MX!^6NW3P!^g2ZE6yc=Z(VQRgm4UH6}R>-MGI?21n~>qc=>QtwdB=B;ZncbOEs-i8`J$IO8at7N3K{ zPPp(`ef?Dq{#vp@Syp!eXfxVBQ!pDK$z$<_!U_?eRfxYBN?*J&10Ig&aO@u;oc-|+-_sl(<^_c%Y`5S;*wJcmd zQ=L04M~1!vEa%T8yCg|*8NsQw0*>X|VryUZHJ($FpZjd3XwRHYN>PdU$}E6C+7CwP zX#_N)9>2161PI&X)85R@(E`~MAb*2GY!`k9jlscZb2whp=Qw?Eq#vztTktqPN(k5! zt~waFJeAt_t&?isFW371ty9203^w$MC+$$-KArk&UkFQE7hOim32jJb6Wf+kya|*j zuWrzV2HQt+C@4eJhgUg6PM1f9TBm%p{TdH1O3l%N{Pz2b*3CKGP+U#Yo!ts>Q+!}Z zYU&VQA5bb|-Z}E+{;Q72FXQR(e>R%l;osxJHA}ggDC@b-vjNr%!$AuiHZ;ZkCcAm{ zk?FGu;9J$0_VyQX34y4YOjo3g*O6;k0?2-T?^`aA_x+ePK$flg+*iFjMpZiACYRJC z8z65zeTXruk93wqg18%se-dT5o5(Sbd%zir+-0Zu4-&=Oe<$7l0o}-vH~L5Yw9q@ zFTY>HE;uZ2lBVpRx79?KoQT(d>G#a%d_Rf(#UaRsf7w$0Z zv*vBuPFi-HcQgBJo5(hgPb0LGyk(icLG@C69oY^oQTrbhko=_nm(aabIyexLNUw~v z!}%q*iVI}}Hta*I?s*VwfPjluw6fp1e_Mlg(#uy3`@Giqo6L=Q?|1AwI61GtY!8z6 zQ+sT(+?6(ZOi)aaJ7MZwR&o=G6vh_sIS2JL6;sh6oB<%zNRej*xUrcQhAO4<8oGrC9dZ2L1lP)NkheD5<*C_wq0zTDF#MO1B_%&K*>Vr2ex zZ6vQ@Oy3nK^?W&8?bEBCsob$FuY?8XHIN5c`mTu>G;mfrvUXF^j&aCLG6CKalI6go zbH6@pdeoRXHGa(@u1BfDvgrQ#@ke>>ozx_2`lY?=hZdI!yC2p(eCO-?Ps5DU=b4K8 z{r|r1g{P}uCI&AXBl1T2*(UDXUiqF}&TsKtrqFSDYN=|{U~4+sC9#Z~koT6aJ%Z^r z=|#Cq;-%9*&+7N>!$bwx+yd$^G~g95`SClU@W)j7yv5RR*<2_*D?pu^^rTwT?W#u> z7P;UQ4xe$AI~5Y?KYz7npw_jx#FL)teFOWaT~{Z80Ljo&FxBpp-)$svsSf7PF0btj zq438-b?ahRs!@s0a0ow!1K)|k=D5|Van0p z?2IQ>5@vA4(kuYLIkL+z`m2?8lX!9!sFe-n3h>o)oK%1xSPt0rn-?Hmw&Vywm251zb7GnW$STiaHIKHB*|Y&4v+!ombJKR zWPbWR|D*d*&lv~Lj4{5R74QunaR1%t_pEErHB*~{Ih?HUl1dPIeyN(9ZfKP}YrQtm zL@?l|#KaJm^s`oNI1W}Gfr`wjtt7J}DvlYy-1%z&QQtNO6U#QHV46iQem~xApEESV z_sy$B!Ivdk(Skao-Bd^&4*6mbSk6}b&A`CtiIZ@1H7Ab16C&U>4_$FofU)MLTrnaJV7 z1|&DL0^eLxZAlvI86_#~RwfXLo2FL^>W#J=wu#>#5+UluPh2c4+!W#`qBhJf+&IF` z>}m?pv>tk2=s%-j#YPaJkExfqr}NddtfSxnu7Td(@&G7TKRZN;ADRsN&#n)Pl(}%Q zz9GL(dl7lVOAn=`?!IKBv>k8j7OpDb4n({AWgz2OLs~T>Cv}|7;$_5*t9ujvSv}*G zc>4({47zgXILz>{!46ynG3`oEsSl8{#0ghzJn!Ad?Ut*<2XZ>&w~D|EHEOguP$ZZV zFH~BY#as9s$(VKP>C+G94Jzx$5hd=zsZ1x|rl%gu5&&jCDsSLWz;4rZ;ZQA-6W9Co z>`-p?744AiKwWV;9e(3r=IXAepL)NbnBsAF*t>SwAd}jE@K%_a+K&j=!pI1 ztZ80R?AAlH1H*G79{VA`SOBS=gPg@m<&7ketp!=QMt^dJiF}_T#gw;1022ON*zjRm$&QM!2S1hojNV4 z+|3sC=b^(ZnzYMVy^Ct?p*jIgCZ~(&xjQsod_b+%vNNdlb z;4v$*Cxmg~k8DDx2@LZzoHH_@bxGaBAggN169u7rQO+-R_j|i;*+69l@akTQp#JB$ z9g(dBRO$HTD*4dShc=Bw5iUZ}Eh4`NcKnU#3usoWKHU=`2#9+|RgqTj=0%QbN8!jv zW2)#c%3afM*{Y>g?RuM42KlO~JOG4QnsHCKDv4eZB=sF;woh{auHhM5P75fRLPyD4 zt^IkE?Z(i&r{XcJK8O@e_C||FUO`IhhaPbG!C9SY+b%-kpWS@Uc6}<d*$89hjl>{tDVHvn zSn)SMW~G9%1KIsNl#gXfd>=jXJHPt$iN}n)Kqn1~;c9T_vt#Gpre=2AA=QUF4+G;Q)axV+)_^t9>Sg~l%9pxILK^1MBk}5e6R>S zXL;>fm#cbRmc_xKcDHy}@b=zp$_et(UtySkg)WS4w-ZT(%3RAY?lZ!8zxFdhje>X6 zLaCR6{2k6nEj0iA+lJ{#(JbaN& zvb}qr9$xtONO`0!n`k_se-(X52*v9?ExCvN-Rb8p4A2xgrWEHZMF#$zvFg5Ml!VX& zTDtjir62b9m@BU~rj&U4yu9o8KywG$QA6lG*srbAB~d%Y1jBZPJx#X#C<=b5G*F{S z9qPhhdYwv+GP9t3gBqH|4yRu=Gkhkm2c7p)Ub}503CwUImAgz4%o(VvQwIkoU23NH ziKIjXSL1tvMka8C8}6lG=LcH#IL6BY^XIOY4;c^fEJ5iE8aPUQ%dOL=*w|)RQ`MSY zlkR=u9Ic0171A!xfJa)zAqH-fvuLb?k!8joX>lajhQs`t?$4*?mA z(1<#*&wxO1l))FZoL9cKXE0X|6QIQx=5`@$PK5s~*-P3u>4FP6(44d3TDoKm3VQNR zh>B-Zqf=LoH6}MzP%&?Z5Ayf?(5WO&=~n76!)1~y!ies*` z@zhp4U9JoLOPjSRTH%J9aVu_P-b>$7gd}vWHU($RZ(W?%T)q5Cq6PU^86&1v*OC$j z4jt}xc$0jBQI-cP-T9?T_?hH%~H6PEV|4Df1QKxAB;_=oBO_3>V?Jqo{-TS&bWg9Y=1c_It zyySIu+)zU*)7@OR_7mJ+yfH-CeT63L`&7=TRL2MJ(KCxlnp)lgG$bMwn}ZpZWz^zzw})c9|3{60jD{kMwrW9X4)hC^ieJkMR%!H-h^=@>3uJUDoz zdEsTbB}T{XWY2rH&i|mjoe)vnO{)5F0a>YI%#@#yy)ORFqu02aEKMXgTzIdINu|WT zwE)x!GSC`!G9IhIfRRJPYcfW0L>v&f^`uqhrpYDt<8EpIvSwR|tW+fS3=4U?T~+vA zp~;xU{JuT_yHiR5w5Wm7Kx=-<;|| zH}F$v+}pzAhYD6dblDm1lBdfUp#QZH+C=Nc-Oj1}OXfjnZr=ytY*_uZqMRmGp-!ARu7e?>=Dl zNJ)YS$^(PU-*qKx65@Ws`y*>Wlk?|1pY^&7GrAxf42+L? zu{$zu>5B=B)liMd>D_OB$QgbOk%8bQDcx42CK2U%rcU$@xFf6N0PDi(ORuLhj9#eu{$<(X^J9e_8@4us=X7mRl1u@irJ2*UluF@&>dj>XUeNj zSXs`Dyw6MC0gGpek3#a?dj)MXX;zls{}~`2EZ(f%v8&F)V;Lhz9C4Zgvx=2cMH#Vc zVyhv@B`=4+H0O58f*^j)9_~b0irQX41oj=f5L;HBvrfST&^iKX|HVsE2lv&>2GPJ- zocsJ5mS0RLg~lw~#s432$!S2XZuvcK6FPJClf!f(k`ML;W5CbD6U;{_iO8Z-X{~I= zYg@WRP?T=D{l2_JKME<_XoLoZ0eEtmUTR*Asq_om~KV*HDXEg0EWKqha!UY}LS22(;c(qmBn2-I!=V))Ic zF#@mFUBeg70+RocrDOjDNa}b6#IZP3I~PlOgN1s7)|X@6kSmB46f(LH#=n zcjQUd*O0!c+jbx329EJVvC^z(+=zoi4oTjQGMm?J;rkq;I!)Ot@(Wfd+88ZGP!pCp zLbI1+0hz5It2vq|A1rs>;r`(ZL1`4|rmJpRN1C0*JDwu5)2a0&Xr7H)?zY39{=3)h zgrbLZk$j^v#5U67+ww<#^I?PRo+0jsLUv>Ck*7g3!l|jP*wTVC=QFn(rz3D1DVs^v zs(9p}{xMKpL2u4Q z5M|R;E5G87G=Nf6?j;%{?Mp5!n7RB_)HV^A$BvyAl4Uo!L4_zQ@9{O?Z?j79>I<$* zb0CvF{leZcb~$$zH@PA_@h8ATD`=9n&+`xd$Rx0!v_&s1B zf0iG2#_1fua^r)s#cqw-Dr2g{yS!=f$>buB+~JXhzw|~+F4Ru{;wXRmu-cGQt2fw| z8ERH#L5~zYAh>W+9DnWybbHqXbFP!D7iPQoxD8${^!_R+3rUAmB~hLBpwx_q;!@ur zbE@)DO7!Ft9V9gYN$sPl-FXEqg{}$d0O(xw7vFFn%NG~1#9q>ca^sat57I!1r#}EV z(*`)*4HQh^p!?+w5ZEA5qnqbk3s1M<7{3;K9qj3s(I!l1?BIMd5(zL0Nj zTLi9B4V&T#m2{mQ4e2i1llG2boehB3jR%*jI;ZTgc@pWPgyf{^W~VWfC0|OG^??<} zccZ;CzY>JHZnXdEFbiG%IXm-(dnI|s=TfJ;q_yK4H|>7-ai^x%VzWS+8McRi`}D3j zTvh;=wY4Algr+1S;cxR_<)GTqzb^W(J54OkwBk4hqMf1TaQiw$SUWfO$06~=|1Z7YN6O}k=6PEVg$Q`Dji5UOl{ zZOrQ5p(BgsR~H0<@YJTU=(Y6^g+HfL-Yujy>enDv=e&Q#X8@E;hy|8yJ+)M-d|l!2 zocqZ>siU5-zl>?}n5P+^K|;KG9}!3`2Cd*PKh5nGZsDg;KaBld?(7jXR21Z7ei$s^;|hzWV+F z`(fMr{W?6a>v~)~s^$&}E?l1}hR{`OdF9U@IYU;~&*&H_2lNCq!!dU~&D}6hT{au1 z)PwJm!m0af%Ne+t(3qJvEZ3a~w#?EWOKc;`$rzBF$)SDwP3!L(`4~gu`^{TB}V z77{L;4iE9(wDYORxxwhAlelX#q3`q7v~&ogB$0zu(%cKWu}NP|zB>B)(zIN#ZmlN& z+3h`;np99JJ#^S^bDX637Ga_{t1ZHKRrImuQp+<>+`>wj94TlrZ)}HoQQ?_$$wdwu z@5Fh`Hl+I7at)i&9#={}lcu~S>ssRK&5Y|s=u?ZWeAR{#6Qth^62!-1geT5vTG4iR zdVFYOLh`bn5udDfq9WNh@h*F8aaV?QGsncb zfv@J=Fo;T%%GKn3?oFzJcfT?-D9;=2g2-aZg)&E7Z;r`*8k!L~C_ z#w<5{NUjjviTs*+cen<(X80LnM4-#|emUbH?Lx z;7SDv4t%FVoeRD!&l7aZ*jEJIZl*B8l6jrEKG=>+oDzB^i@CVDhW>)s6k24w7>KUkdt(o?YKlwHQsIWY&zQTxHbFHCw4sT$qii zsim^E;iiHRq`E<^ zPy3O4jiGCxpz3YppoV32#{GJ{bRM-jN z6-i+R@ACcc*tsBTx*6bfVGErrzQd{Dm^tC45ub)5%|eoiDFW4RIGA|CtxnMy!kC){ z6*QBhFZX0;9q!{5D4Z3;(7)bBC=}2x} zJik!B%?(-UuaYv=O?JE{pS^3;+>P$dOJS)yG=Af&X}oZ>{!jR4eS?W-5rjevGQ`mO zdbIi*o+miVn&^9aG@FW{1iC41LyjvwEIu`U_U44p1}bV!VC-LsJN+Jg!Rbe@8Gfa~ zJ{VEBPgnwqKW=B`L?s+<~=oF^7`fXu@$Yo1X#4$&SDGaqa zh5OHf(MK0ceyXh;TOM>o$30CTz=+3$<7 zlQpqj5Dsa@RZR5zqMQJMseCuA`LT#EJ@X~UO}>@2?it#*i#(^^)^9kK_M?vpz(3E! z+P9XaY6ix=cM>e2U$FE+SDiy%d9C0Jk>}V^YD^+jP4UcNc1=VC`0tE2ut-8gxv8+= z7`atUa9j{e+c2>JjuMU0#qEYPA4o>5L?5qN7q-A|KO3CH=%q|K|u0!f7p$Pn~MqN(vgzG)$t^8KdM^qzsqy-|T0zJTF`T=4r?>WHyxv?t}S_ z-dT{m+=4a@1u;14iPme|Gn8fKpj1{4B`;M%$X1OLdpGdn%8c2e73U=j6>4XKUZ=sw z-&f#)n}An$S@w|zuMvW#JD5K9J)>bmFUK>&^#H1ouObL-koJEwdVS+|0DC={|Fw9= zLv$a4F%fA86YpD7xpU(RQukA4Q^&R=!G`@aS*c|#1eEHJEik#+9(Oq1N+tc&uyl*CGyVnDt#Z5TIxr_-9attl7yvah61#(t&%--t@{0Eq(p zOs@kVfq`hR85F_3qbObiNE9VOB@U;9lFmdxtC446o^Rsd#yOrgiznbJrP0(Op@$6g z!mLIKO3f1t1@jYW?#}mCMu{RR2?ULndMveBn&3ZtwMCUNfH%}{Q7WjXRTW|bjZb;& z6u|Xvf1SEpo1Gq^0Tut943Y_z*bJwDU{ZIocb(^LvcGQ&h_F^kA%kZww30{ui^Sm;T{S-*x7+ zDjBLByGj--ZJ>AlF6v%2nAe832|b$*n0D%|oBHC2`Ve*`6bi>+utI?NJ`;`g&iB%7 z2uKByt><~r%j45j{b)ISbausT{Pb2EKYcIxD3~DqNazdRcJ#QL@(AQaVZPD%l=NOL61f za8s6|!=!(Ga`!rj^w{d=d1)+0SPysf=)Z&Yzt*9u;v@!4!0MCTMHxP#G;=?oEoo;D zJR}P$UsRsn@hURXA>dPij>}=D#aN9d%!RDTU5gLO2#m=|itd(3jgw5OFT|fc_;s6&nqxZ2-#Ntb`ka>x^<@byVF9M zj(u#PC_UH6K~s1_B3&u;`sbNo{T^0QP@}lfXkaBvHL`n7bR>ry0j(2F^o`apmiZDB zMV*anktlV$+_aTfgul#M{nhsjrP>wGPtZyuP2vBkH8K8511?j_SruBw=RrRGuo~4X zVSY6+0rjpTPMvh5?omKjdWxkx<^$3H)x-ux z2km>ooRgR#@ZZ;pntp?F4g}bpLU_dlqKYy}3IHs;svwxt8xTlphxBQjLE?n|_ea*2 z#MHfd4x^vKCVjT=GyJ3xcB)A-Fao-$&&l??W(DWk$g`DO=8|n5T$VlrhGTdfI zt7CM9+P8&Cs<=wNa{bg9@A{a4v|>+yW^%R`AfCtCK#QlhIKAL28|4laQv!pQ2RiGS z*~JAC%b}^Ig&FstVgGE*P4Xa&V07yv?Xg4q@9iJT0yAePs7QRZdBaRjg3TIiAVw`5AIQ zA19I#SvX%NFu#2XHUvt^ZD_449ossaqR2w>q-&oIwEms|&IMyNNtnuM)_LaY3tQik z1EMC7sZfK1cDj~klLD_({!}{Lq#Dm&+gA=(i*_YxH(oh}TQs^wc%Y-HrLM6DCy@k? za{Ak)W4>9#vXsJ@HynrlXg^es@FVm)G9Z)9s#c!uAXSl#jeGB8pFrc_Or6_7@Fo`?+<;o?a@BT7nJDcAr(*@zMVe zduGl{W|!G{96MvG_(kpo5iWA5mW}js`S36fD~Ic5?A3pC*!Y`4m_EA-PM$PvCpngb zy5;_8o0q1`<@Cm>ocKgj0m7tYqHF7-EQPbMc>J%HSk)-}e6gIWnT0qX%tE^#Lcq_3 z!&4JIDIiDXd{jnYL<%b>+Y2rA$AK~jngiWb<)0IJ4Z+)5xH;nO2d;EX_%LA&Tj5f{ zI6ir0So)Q(uChmZwwuXa%UcYu{c>6`tVzNe4J_W(i3#C(+Ix4X<`%cJaIdwA2>4Tv z^+_V&{;1)K*Te0dw}eT zx>B+PSa^*2(19m*ovZI6qvr*LN`QcDW)`;rngg^t6s^*lhg8V1)4)A=thcn=1%V+~ z7<||tD7F7ys&-BI#nrhgC$8xc%amPvy z$Y$d1!&Uq&5!*cI$qy{(U3uPVedM*ef3il+>|_2QLF?lt!P&`4Amv_^R!H44Z&fG# zt_64mb9TOYyJ)*PQp1K%EPYNaM#}B6JdCwx_O-lCMT43%P>Ok6NdLgHr4xsAA(~rK z0Y!iT-fowfJ1KSY5srkfDE9r?3LHVUiwVsIAhHdQ1(Yih3l-bwuJGamJ%fS{c|)18 zic2JU;uQqHz|1Xvaq9W$eWY+C4V^CF#UP_pK znJ-u{ZeU=hkFC$gf^;9MLq+w+AHAEPjD2Y{U1lQL*sW1;t326>FF{zOT7t;+RG$V( z7PU}rKm;jUy61u3z)e_^>LLNST4%D-?XAALnGAYoIjeRgF@?$EyN(Ym(RXsW(Nl#m z3t)veRm0Y^D?fTBF;bKOWne)YUN`z?KJ(?g8#mk{$2EEWhwt1zd2ocMw{o0?uqz9G zLL~r$erEjH9mhB>Bp{EtTa`Gqil*H8jgTbD@#K6VL^ZhfA=T4_u@Y9&9Jkb0pnHA~ z2Fx~-A8a2EO^!etn8I8nk7qmLR! z?Y&5`rfT=GoWZa{Ud>RredkDT+SL~SL0Ep{$Aoq$>**5&9Z89%pGY*u_Z+%rz!0@OHOsi~D@*YO=dCW+tfAKm_KJ zN@-!hN>geoOyR*r1Cqa{#p zhd~KZxTNiO=F(Ml)M*Z*o^N@Z&rKg6#MO*gvlqU}l6Sv^Wj3X>Yd|`q^5}ilUJd z0XGkkx)YXptH}j-YqzwLI_dk7X)`XtTIwi2?$~2tEokn50%{KhdPUgLVe+bO+Jpc& zpG*F=92A-R?V=F~hP;Id^c%mdQaCHpHgsYno4kcFP%;?{pqJ;u)tq3DB3&3uYf8uTu zSj19oM}2a_b8IhSr4pJ9*R7X zd7`C4S6$mQ$IIb_R)a*gC|dfa01m(;F%ED%bh^^doS+#Nu}sofXp%i0`Ja7t?t1>e zor}efbpw&<$?(i(gfV&M^Bd4MOfv@tBt#+VU1%%)!tR2Ix7k7BaKh zd-geKsxFXM=GV4gJAU_!!wKyy+C+DvrRrI%NRtf==)j}U-`&-*Guo>+ZnKLjwkw&hcBzYBYgZbT7nM9oIAHQGC(R92B*xt zI=D$Rw=Ij^V!k=X(j zlnlbxF4{dUv%qKY{22v^eX#kuommb$)Q|X5jl>&&C&3H%F0%q(mUw9(kd(&Iw zqj21nR(S3NuVK6(V+KaI!tojbr`PlH-M5FaS*vg7)&Io+t7L8;jvd?*5=aOyJ=;2o zrhuBXk|R0r4Eu-(*MUNH;(m+GS{l>Vyt*q1m*fM+(#5I+oUacWqv!H&9ci0}UB%kR zykM`YSt28ZgaItD{E+$7jo%a6ou&n|qt{(Vx({5Qnac498_JWKV_C|AJ=Tk$!G8O( zhcMA+=2CnQkpwrdcu4Jbp_qL+Y`PILEHFx$^ilZK+10QPvm@QQ=DG9X zL3@LX0~o?{)D057t-t%5go!W2`($ils4E&wL*Wx*h}LotKv>i6LnRJn^4=p1K#B(yHWAn92T-1UR%y)5*| zFmo+g>jW_)h-MGx!hXBtHb+DN^oe>DK57kAC9TtsdFrW(GpPGlBCkXk`;KLbZkGl< z^jma6R?Oml2|KTH&+R1Rz`l1`T_!nAgrMmAmx=yjFaTO+nO)YqP_RBBZ3G0&u?s?7 zcs@aO3Aj`t1_zK?chTTgD`s7DdtblgMwjly7`Vh4+<@?4g;PByX#3ivT^95DfpsqpU7e^}u=7y-SM^BGC+Pl-qNQYRPiKlC2oVViO16vv z$&L?M4ujs?D|bx^6pfWeen_ewlebDM@xX)*^s;n`2R7XJ;IvTgod?IS8;wl??{*nV zbieHBTLakC#8U625;XSw*PqG-%lJ6U?C|@Q91SUe_tg9kQb%&rgEUU=p>T7mCjpmgHd~tGF8hKdo!=nBB}GA3 zIWghRbWMTWuqDGW-%Ks(n`AhUmj-HQdKyo9G>#XgZfy-zkKYJ#v+M924~M*Pk_fww z3;P1V()BhC%ID{I0h$Qxgol7mnks(Fp1~8ftYE=IBRASAoW58WqO@|D+{G>kqXrZ9 zUq7@ZV?`l=&~fU*|lU_NE^a!YD1~3!xRUNb!@YpwxM(Z zg~$w%q_5=~+!G9TGOD^Z+q^iS*t4@7dB5aHU<5|h=+v4`159}dHd5HIjvHboCsguP zJEq;bNViV)KdM~#Y`ugmetU|68xWZ|a&BcAcyTWI5 z2no93l4T|p6-YHs6JL@U0ShvJlS9Mza)Oqo$e<=!T)wLp4A6OH?Ca3cGOOp~0Xl9Z z%uMl=Th3p+wZ`tSXoDs}H(5q^0f^hQZp%IM-0$B&gbIG z%HoX2=}dF%?F@P}S2~!?^|6n1mf0#!f6NCYqAy`V+xqV_a#r?s4jD`U=;Jn(-PCs{ zo-MYDm82P(Zr%>}dvKO!cVYv`$6YXgmt}an)!@di7x(-Wl2ANwHhOHM3(}!EMvCG` z;aUCQAS*1VHwNWuBngYw8Onf7k`Z)%sVUM4jt3d&H03X<+y4jM8i%q!H;6z@1vUn1 zyBQ&G0SBUL8rnjzL&L~yocDU7wutqbRi5GExch*Y<+Z2vnm4h6DZukDPB&NFpbL{e zzN>-6lV)1?nd{vSVJ9;5uRLdD&Q@4&M|~I~zh{#=B+_c7!CB~#*#_b3M=CHACF6$? z;A@Tj?w2`+hls;D2e4@fCQS!G5|B0P9BmnJ@Pcm8hwwrJZ-Ep*lvqz5Cd;iS-~y+mZh~Vi^p#J<#XO?-TQi5CbgFvETQ>JUc}F{I#*PQBGPkcY?xqNX`Zuz&%+Y1r%8J6Dfsw8lk{BjUs-KKxje7H*q69aVI^6k%jR zG9k$^2AUJVR!0Iu`!CDK(`dfhT#nU`31Eh<^dER*&*b@EK~(?XEn003zjChb-u~S# z5Go!gWAGCE4ifHrSNgnmaRW~ufFiEdL67iWA(8DaI6dzS@ofAW_usHPT99L`I-U+2 zzkl=n?c4Q;HWdt+M3ON%Fv+rE!5h?H&kBT{-x~!64Sa;zY2TdE@%L_CE+jF5_o2xs z>167}a=FFj_Jp+I*~NwOj^B@#{{9*lN*1jpXBtVa)2=@LnDRo6WE^9tl&*}k2p4iA zWwY${krc-VMwXY%x)ai;+KKM6_NEX~v|?bsd<13x4(C8MhGLCw;Ps!`L7Pn*p$Hjz zUg2JQ#kJLfy?MCU94;WQoFm+d^wJrYj}+@3b;2PFP$$~@CI^sGB>5yjsN?Y;N zV%0CM@3ZRy@z|ld?aWb%=ZTiyLcI)wNFg`8mC!KJH+6u$Is1^qaSjB3%QDJ8m8t=K z)$B6Mt2rFrNC>mDqC1KgY%-rZ&C?p;KU_bGJtJ7Xx=Om`ekKcKjw0OCYOfAkdJ?Wj z*62S!KDwKakM7bxU=o?jjZj+8Eo~GkyGWMNJ5J5hd@QZgF@gwUUuJ|Urd>Z454a8! z|LD&9)xUp5vVw#%U z!2}L@J!l`#09^77N`FYDF$+y@cO9dqtA3(B+Jk=c4kP-BFeot&$+Ozyh6&&u^-Qhd<8M0~Pc^-K@&o(X)zonMF z98+es9e#EzhgFoeu7}sJuANFAF6O7b4PPW+I^I=Jgo1JcU6 zsG2-)C!KDn8$RDB{xl2r3>pAMukz4<$tQ#L&UdvMt8;}(xP^juGxkwGIf!(Won@;ylcMR zBdxf%kU8)+FZdK0yFfV$^LO%{%SiwMmDRIWry9BuQ0Pih9zE>nJ0&Xi9T$ax{bO}=D$;fgAc5%n)#_XPit8@ z1cOeIcc!IKFvqS3*7)pxq?eKCpV!qDwcmBa;l}Gru{hb{#NtX728tCwPxuA$vIh8c zbYVV(H+bzvHuoTM#%~Xmn;mC6wc@jAWTO;a=wZWokZyDZ{D!do)5aG;@Jm3#;It0D zWTRh(R+S;(@Rnu>=@d!T7E@!5-08BSnT{Fm_-*0yus43vKywI^$+-FzAuIjNjyFYVep-#|oi4;*uTbN4TBY zMNPh07^Ex{5bstdG?g&?{C7_eJ1`1X!}Hv;$gs?b{m;0Yf*X)<1v^;j6H0(WQr_lA zrjap-yG{zBE`-Zc$*`AJoSY-Ne(=q5T11qrR5c)D4F?fQpY#{RVLtm(v-m`^xRMVq zEh=4GQh3n!uK%mu4Jk-0Ly_c*?vbmSlqC^+V&?e@2|yF%+G#Bk40nICc=B6{%@_5&T|NnD6D#MLZ8Z_ldPp z|1e&9*R|g_(}IOcwDZo=OTh+wwHC{Jz$Dd;BJuV(Kwy6P-;d)}!sDuT8<1wct<3uO@`6MM#x?z5~ThD?rN-raJKT+I_v z`;#67o4d89hY?U+r_#Rk8xCjjE6^ z%s7N4WcPkNa0%r~7N6kyx-Odx0d)4gq(Bb}Ac^c<@6uOqKor`PXm5PtCgnSV%!eEb z#c#Y0?GxMkERY^Vp#lYVdHKxWnJ69$JS+^1ZPQ>wc8QzQxUok`e-u@=$ z`-D5QA%q(>)gJ{+y9E5xxGoDdI6fGkyeX+=ts1ydh$=iH2T}|a(!*O~_1Z%5eS0?% z$fQM^3Jmo0*mIC!`q?eE|0Y~Jw+<;mzby0_z9Cx#^7JKN8h*Xi;fLr856p~-62=N4 zJJUTFr`z6i1lNL5Ok}xwXCK@(z5kZ6qIJgymQ9D^?>~6 zxn^+{SY7;7Xn`(JH^V9CfZ~t{LmH0HJilCcaOg-Nc&9CfCfqsurcXpmij$n=v;2Lu zp}874*|0_GlXFiVIQNy9EBwTmnsCkAv+1aREA~A+5ckzK7+4;vU%4FT?8|!BZS_tL z46>QGYubh~Cw$Zs)6)WzV~bCWR#cqZ_juf#_Tnr0kK=E;8rJcv`!ju&^FR7vmf9f| zonj9)Q)m7jX^s{mHb`MSMrs=e%vBecK$X>s>qirY)%%K3Q zG)O+_r;eOa$U-Ss7fWut%Z-bgg&wS=JhoQt#w}_I8`6LxF$9-Lkg_ad@r!Kd@Xu{M zEL5C)lIVu_Qkj;Lw|Qa&iYX8CO;n5m`|M+xXGpy?= z4<5e3Mt&tPohi#C4*ylE2c=~VTC~S@fO^BbELH!{{NiG*mn=)`;)zvew#U)i`>x82 z_9A~Q3ypt5BTst1_%$f~jHz{w{}H-tOSQvlRV&gd|Ju9ydxp=O!BF)ZAG(rZIp=)e zpaa!84A0J8^l|OY{I!6M!`n-ZLmD~SZCQ_9UjZ!loQYw9mx<6lG z5pOgYGu8}&%SFXRec$e`28S_%v1AWTv;bbZ9LEm@XD+g@kj;hWaY7Q=09_&{yuEE> z^_%kS%A=0qMdQ%S^M;OEr=pKqrSHQb1K}Ow0U(b-1=^}gQj|6smW)uq(kcn9?QC}F*_%N=<~D-C0^!(-1kS$up_L5cUujZq6%3^I0j zv$2HOPUfGE?S6|7*+UK-l+H~RkNH?#$p4dDduda*gfeGcJmvo7%X8F-|YUTu{?C@Jfm z123<{U*mOl?u}O&=y|{jI!Ywi^Q+$s!d!Y>lZYv6u_e@`^=9V{(O4*yycAvLe;Rq< z+)yOS^^%ci#RL!|4UZ1LLo&N(=FYB1Te)=mNo1)AgDXb8MX!nG_mX^5>hY<>HRi;@ z{8F;EPFhM)qvZR{T7r+-yo2-P{bwt}8KdC7iYmnqFDsWV+V@+gycD8SlaaANAzWPQ z$E)LYoO8Pqj5?LR*IrC(G`Y0`!-H%sZ%lN}IWQ*@BhT~(l=>{b`fNSR7o)}i!aVYhkq1E=rAFLTq)B=KGI0j>((0%zwpq`sJlSh_)-nZ2pI|C z*Gem0i_t9)|uN0x{klNXi4oNNk&B~oBwn5^3ahjcKcu~VZ+J|69*cG zWI{eA{7BOd(zX?6UKbTn5;Z8-OkVi39$* z@lq9QQZwb2Iy}FoTak~bvd=AqFfl_ZGcNz|fKB347LwC8+?!TEgQ7}7F!pt)dlS}Ar!`L^UurCG=NF#K*$#Y zhq_L6`7N6ftKq;|x;7vGsdSAyW^ z(fZ)%1YB=uCARfT*x-2;CtylWtTBacPA5aTy+w0MVduWBDs+ujb33jfN%sX=glR`? z&#mbIi77b=7w|pGz3;;AOg@4F0S?)r4l}lQ@~s7eHcQ-yu#x{+FbB+2VSxKE$bJ? zT*~0ZS9q}A_fY-6MH@$IfLSj}-APJec*uwv@xZCuTy_7QiDM_GTyvb{ z-~MS(#sV~J=DZ9PNmWeGC42TMdl_s_+CoKT+;KmZ=|O+E@iH=*R|matJrG5yl+y(` zo|zLaLIh7`aD8JJG2&BHRQG6s3P8|xS!@9ix-?_*3N3uNAc}DBOAy`mUOTZgP@%0x*B+7`bt@ zQ1?NqM-M$dlm~KG;l_)?igP{&=|JTMuu`jN3)X6V@cQx z+#Ek>m_t-XtyJCi(EzdP%yNSx5Y(*(Aq$kZ>@@Mo8L^AH--n)6+C5GgT^TR5M0vPU zm_SUk_p*#sS4W&|13|PPzb_boYNA^U9W$S7kp)wlDWA2|(y}Tb?l*-3)RC0=4aY9F zg9OaW^$tO_DPG#d4=w99TeDnNP3_BWbwc3wFLT?%@gI;&G~quvhjTXDqvwS(v;Bcl^1-EEyplHaIrf!9$c^Kd z8V?;{c?>IXC@Xqm3kn>PqFe21Fmnjzgog(5+8Bt6o@-(hSD(rT)3CdhZ!Qt#c-8g< z2B$&R`&dt#4d=PDH}o?=G55%U^bFt|eod!N{G>g)=yUg=yZRSp7nh1>%hdKmUR)hI z8aS}Q>cE@Zq|9Vy#b?iO6O(^|&hgEUJbJ{j@*w{3-KU!+MGp=3aoX8xRGO5q0?Zj! z*Qr~a+L<#{tx3^V@2piSBn!o?U75Xm>78Ul_m`#QbTj>{yE=a`dc6K&9d&Cn16|=K z#|}^}%Pd6%toLxziPFWg5ohQ=9pwZ_-3FgepB-FJ7sxH9_BZ}rmvRk(m;Fq2IH&5m z9|>1I6-yC0dL%FP_tL*$V@`4QBMlRimljg6nVpn$Qi^>^;x|m@EHv z#e8(W33v2dYdQI%K;%bo%fW;KobQ@0?411@@+V&&l_Ze!t1fpLH~IxRjO&Kpl)@c3 zw&3y;ewlOq-sCYv&|`QuhZR2;ztktczOka!+>IWwU$5v7y(76MvbG52BfV=P13O6} zdSuaVN z!snE8TVAI4bDUmqxiRv$DR2u2>!t8b^ zg8Nr1Lbv7+H(@Esu>Vu}HdBFO2P}}aUftGk*a!3W&$H(*4Yq568=7O$uf>q2ia{wm z*u;MBciVjeh}a#SYDpX@*Q(@T>OKDk!*nkdv%vDfOBLK2(e^YDnKV3#8287Jmws_} za(3zQ#H%~*CQtZm-DFXh>SUkZVIP9-!?c^KSoyI$VhtGV)kL$&@~d&dXE2?xe37tv z%=^a3sgUmJ7PH0GvudfpcGbtJ;IaDF-xzz8JFmVZySVE32i??Z-C&IPgsqQbSMD$> z_J0tm%+KeZcHrV9u}|3pe{%|SoHALLg1m5-AETA6*vTWZ!k`B)N?M&G z0sD*s46XhmE*Q$KA0-W=DU&{5N;dRoI0@gt;8kl;?f!GO^RKqT5%x>J1R=6Ib1kg1 z_L%ML;~T`Y6V0yc%4NX-iy&{tAfo?uXy%w7dRnwoXF|f*SnHox@}4HgPJp83G=hzq zDzQT_@ygDgMMs=)Tv{0YC}D$>fTD!{szyU3{3C+?&cry$W^Nxm17G}6UKrMK!f!oU zTK|@XT-O{|u7QGN*+Nq5cYc=8$aDd)v8WYszA0eHDOvZt=pe+7w2i-5l7}k3$-EvW z=fbEcf@)w|_F!M}>kx09M>Y00=}h6N%xb{1*`)sn=)<_D970<{KYT}(j`(WeV5Zuif9@h(2)O%?VTKWb&Yfc{P(goX`KGwu@ z(4G%aae~OhmE$Z(r6X-V@EfVj(L&E&GN0z|x95|_!FwnT`#IaBIQfdHF&h`m89u{W zA81Ju2_HE8X6b&IzRhEwsr_24W4Sf!okICfF3UP!7b=k61^Y1mo`n>4tAQ zP|x$)eHu|3g!%)CXR#!#7bUiQ8#_>C$kljbyXXI)$|OH1J;O;00cUys=y5Z7_)+NV z}2Jk(uLq6&Lf9^s>XT{=I&Gggq zyQBXH#bAInuGx;U>$hj~x0Ffe_OYSM63%5{VYw`2MOydtd6rNRy5B^tfgUbS7v>ks zK$JxWw1y&qDS49UuE+ARS^C$cn*oQ+;19ylV`W8GQ<^0rhzeR`M3c<aQ#VdaI{5SF$vRkeTsQhS`zCDUU(Mvl1<4hJr`>|3bDausu@l zoacpk(1pDr2WD&(QFq0l<&Sv8+=myZU6F%}vLt&Wfl)l<3>i4dpJ=x+>ka1J2|G$7 zj&bQ|Bl(h78CP0`C}{_EfQ*$^T$nFJ^^}s=HMNj*H|D*V zJCY{cekZ%Q*o5L{)4m0uZq}k;tYJ=CHDJ%cFG}Hnockpt=*`h0j)#XEd5X%i2$8~W zt=_W@rMF4|10a4Dq*?8vB``V9%Ap8Abs&F&Dh~CmIO6QE^F>+lr&jUFmw*#@u#swq zlJJs?Pbp~53dwq^NHjG?MZ1JVs*`=Wl~Tg!O6u7|gF;wJ1PlS5)TyA<>(2MXb6oML zc=(!4U#Gff)@)i+`Ib!ff4AFO8%8!aiWkbVPC>(%1Xu1&V^%$QTe&&-~+RFxD8iAPn{uc^_Rnj5S6VAQu$k z>IcMni~0f#QT{xBe&vScFBlf}JbZZL=j3t<=STg`Rs<*3VdO*N-@fp`P3GE2PMC5y z=0F7>_BT*o5%ykN+;MRs?WJ0Bq~>`Jx!VdRqsPm$_amQs9r{!2bJ8-z=))|ucA3lm z3fW>rRINT?3pA!B<$rasHAgDXtBf@NofMS;TW^+sIl@m?L7L%RN$KmWeC6`$5e7B@ z#W;Gb-g7y8WDuQCCQYI-Yb}2qde<;Lj|u(JuGt~u#VV%W7N9x`%r0c5fAbegKoaR6 zJA_@fGdFtxD<+jg*0+&?yN{PJGD{YWq%@VyKANg~4bTRE7eX$+8!;mN6gyU%iY+cO z@!+qX>Y;zTheASDu|I#T1 zF#_pSX36);K|SL=eukyE>xW(wJ6dreyY;pbt+_5Lq59Nrb>;vlmdXVSu*7)lzO=bh zwe?V~!yqnqvAnT>hHO=?YYIG{ALM3Y!d;L*x9w+?x#iz7oNRVAREmMQbe-~=S_T#N zxTxam1g{iC`&Bz*36C3|YhZG$q#HoEiF!B_K3qw*p%I^D}-Q{iKN9 z?5}i(=J*6}*8fp-=5a}-ZyP@df*L`V6^ytP7HUo5G6o8QIk{zMYP*%CW%iZ{xKb+U zsO1piR#t>Kxi*#U>ezxU;8I}fq~($YN^0&}x&Gc~{@0HJhjZ@dy07bdZ9n&_LPrI> zoyL?~jQ7}UQXF>(WMxgD?V&j3!5f9(EP{4Ovv~Ey#*+IpYpgT})}-mjyvm7A6K$RyS2VbE zKHfY3Tmx=z7x1AMQ_Xrmdn?Ux~Xl<>QDyR&{*-;Sf%xHAAiexO2DsP?S3L?G3dngC989ra_Zcxgc^~c2ln5OiVI#n_u(m6mj}}1jRCM)uY-+IWgzfBXd>9*B)*B`ZXq z_HR4#@EELaFdmh461fG^+D~@EC7|j1wf!r_v%S9I{dMyf7K3UVUfQ|1hvP|==cY>M zZ~3f9>mt8SfY0)NfP6T0BlDP<0z8<0iL`4J4EIQf(utPkpli);HZaaE1cRg~OYDqd z^O3%@VT3Q@OCjY6O0Z|PnV|hac;<|8X*MBlYQ6sUNAjO0=&Ym{U_&DOWyi}1eI$#j zTU)%h`3|*Pc#nb`l25Bw;*F>QUdn){Uze?!sY6-u+AcgQnJMXrEiBBR4E( zvUiCq67AKFXz(VfW~`(uGJUlB^6Ni){SD!8MAd#5jpgLe0CU3z6v1C_0)^-`r#pCg z01~6d^~NJ>?JTfdPzPaOij6DttQw~kbUM&x4ge+fU(^CQrT zA%!&|M3V&~;}a>vu=J!zvRkQ!Sn1X(Y1Y%<=%8{Cwme>9{EH-}j!Jx=x4bAlX*b0R zkdtNuQlDIW3sQQA^L~N0K@t%%$}iZ+uizM006;4Q!kFhtthodTs8e(irQW3Y&bzeP zoCI))%;5Qk5bjdz2Cf>CE?JGa{HL*6LP(^`7hxXNgU&I~WP1w}NBn#adDY|KfBVB8 z4tICVB}<}9f8a-Z@+3J-$UOCKF}_#xsRY_&w1ACrU^QNpmxDKbOWp?IxiX?<%olMw z0=lroe#D5>XfBiR*V?3LTwN{%Cd}+o1JvkPN|5rX^HmOhP9+CA95Ofr|33Stgb2bLQ7{o_Qlk#NcR?ED; zYoy&3jSvY?%^*;PoW@jf`6rY(MItB`|B^DYmH1%gp+BY4CjsKPyB%&QeO9~-S#HWF zO_ZIQ*}|==^g9<2@&Hu8PJ_ck%4!r5U}{*3xhKZWvw>oit!VHDPDO#YX$t!zN}Qxv zoZ7KQvtdF5VrrZvks+%Eax-988KB0HD0NCwoB4uE(nE3sf@Alos^&)2B$Yr2C-}oA zwCv{SX~*JYTSEIbBE1(F>PHSBLG?lkXc5OiMXS>9G@Qp z0yX3C;nIj}o}|hzlmVZbNxgE^hjg$6s74T?IAmoLH1b#NuSK>Q*~7ni+N~H-nJc|&;NSapJ|ntpiKI7-2>@I zi?zgnM`HQs&|@Jui@?0?Xmv@?0x)r4?MjY)we zC(5p#XcqC=H{&GH?noVpL|r@xP8;5lG7g0bJlI?>++CNdBMA^pk@#GF(w`deQzMXO zjF+v%S{ilWh?Oh`Rz2hu8X6)pU9z6+bB}TcAm)3~&jNmjWslYFp<03U`z}jjRIWi( z!fqAzaPs1FN87vG;KxnJDWhOVjb3YOe1MH&yh8b6?|5o$R-Svj?y{gRcrv$hs(71i zl%LU->AHD_Pc9r*vM%Z+Kfyx400$zNbDuqi3?or+1AhC$;0d`o)riULR(Na0{NP%9 zL)-?5u3rOQ?BDa5dDQ48f(A~Kz!sB11fY}XX$9S6cGeO>2y-yzKU**UJ0KPagv{S5%4bp0;X7Or(ea+lTwiCxrSw_2N z{I=o2R^gUVuGrf$$4-&#u(N#kg+EQOwW%uh@K5Yw)eU$3ToeWWIiAWWoH2oVb~%MP z$B^Jz%FdP>y=Ce;xDaA64uR0&2AACYSc+~m8VFbm)`VOk1hbR^LI+bInK`oLSWuM9 zY|E>l`=1{_j<=cu+ijtu5!P@-1*4_dT@7QNwpz73Odo<=bR-7L_4#?kNSSNo#Opeh z-^N5Q@bGntj9qFK@lx-ARkVtNBFSc@i4jGa*sJzSghgKs=4TUaPXx`pK4!hz)ce%+ z8e%_?Gku%&PFvURc3bD%ihq<6ZExo5XSoQ>97X}~oY4>kgI(BJr|3#9 z9CABG%CLQ#LuSJ6vwB1`UinepMU+`s>wx(+^;32xltX>LLH1*V zZd*Ux(KK@un%ELE@aeYm;NCki3CABjS~ccax_7wfN`azSYaN;^mp4q6dnFU?Pnq(L zMfq8*O4sIzu^P+y z`VX{)rAC!$VibaK>pIFjW1?`rh}_QMvAhGw4T7 zD$eeac!}ILCQLNE49S)*&L<|?(idI`d(o?uuGRA=aQ8+(^rhIpe1>r=wLiM!rpLQx zQNn!1&ipW}ME{3IFujsEO|og`&+)SS6B`)XDCo66^SCXG+a{TdrcKTU6o>qEiTZ24 zX*$`nj8cqmydQF!8bbd^>Jktcao4P1SpBx${Dl~Ue%H723i?8NuyJh>w3snb-dK&e zyN<;?6_s?QY(~fd6gq-XkD_o%a(r;>h}$8GMjRJ6ZzI4B&B-u5eo$7@QtBG}-{1V5 zhJen7w=#SS0S?MCC+dkP0p2Xx#0!Y3s0)cbMdya{4e6=J;o|ceRAg_jG60G3&buplO8B?*~=PP=&YES#C>q!AN(` ztEALNmXxEfmOsS+J@pT3M1#D6wB)rxpDA^Nl#H>dXSutJ{lfrj!KN~Gy+Iu*_kDqZ z=QiRQg3v;~_)x%M=PLIzYt(dlg+~y^lcoVvhgmn(we9KHC+i>DmJs94t2BVXnLBl{QYwwkUatkuPj-tVjG7Zy7Rc`!_2D$|Bnp-S-ZSaL+8JGtjIyE}o- zTS&HrPEM;FM7*8Zcc)amxRU54II2}{of6ev80tlBAQB0n>#ksYa+7Chz4DF?8HT9% zm|!+xz00;%aL6NShvS63!;}oQ+9lR}b)~PQmB&W~x28g!f{>R*W^WzgZK-0`HYVi>b!?RUz?W} z;{wokjm8a18dm2O<-t{18*xDwJ8QRX9-h@GDT!P9;Z)(ZuB3`g zRzfuA1Y{Y;6}x0c`KD8Ghx};M!>x|352+tnsBWu}max!FD9PTA|0Y4j3%zY=H4$iO z;nyO}RW!R%tJ>8hM_43XwkrR@+k#{(>z^|g7IeiQ;Zxi_85v~mU{M`XvuQ> z|9U_Wd|qho4wO(=`2KRJE-Ju-m!_d_v#eL}V(>J780bn}YTY;qZas{&HCEPj3%tM! zuxn=;)Jq0_HtVq;lFxyb%5jgVKXkbYdc|Q*aY6vn{uZ~sVct$0A@D}Q1#Pqbh zz%N6*&@--2t=+0`=0IvIQHnr5BWNsa$<3#z*r3;Z?`cbCad*OOSinE|L7-ws1sZ5l z-9wJ;vC;!Pm?>F>VQqvFZ#jkZd=gaRta0hcZ5WJjXufOy)aJEUoxcZDi5DO)yG`4)7|f8Fk+J<>{u#*}``4bI#BfNm{+7xdEkKrbQbot$5}i7OX8c z`Hf?wJyV%Xi!GFaRItH@?bX{7P16Az*pQd%VEXr8<#<{zhEf(9^${>b!YROU8d0tC zThgh=|HU~Bw1gA+C^!H#JG8bAc)0pNoRmGZkSG>lVcfQO0cq}d7L|_J-R%_17d^yt z9BbJ2RdY(p{6H`{$}}B{d%NB>G*@_5XOU0)>)S>owuo-6N6QszX9Mn_&~~GvUa!oV zOTO78<-zQZ?V2&&h}!5q)M+jWK%i`~6ksI4~P$_<;IfF1BYJaq5<8Zy@$Xrhz zI=e3pveo~nR}n0N)RjrkFIt{{m;KP}%DQ}3LN9z+IkaO_tpQyBE=7Iv%+g=}3TInY zQ7m+oI;N4Gy3qhivGeHbylgfbrz}~z8A2V0kEC|a+t{0mO^I!~cJO`6_*0Oj{W=AZSHSy zn16ji`yjl6B<1B!zYXZSw&ud|hEQqQJouDyj$JrvlmlS!7fZZc7oKn4f2ug4R)M`W6#pjkV|QCox%Eg=eHo(j%g$>9>je>~|2iI`P|> zCrc*6)~JtI)R)I)<@> zp@^am#(B-)f%(CAAsI(%wgY|{CaDakY&9DUSh92?&4>g0G>M!y9BO4;ByYGlDBTCQ z5tGS{@qN>%f+`pyqCbIgA>5JJYBd%5cNAzx*E%RNL$$TL4+dmLi@XoK^_KBXPqcN4n# zcEH;5Y5qi>-9@5*vCZcfAv(B7GWBC2;s~PjUt;Xm5!}!>?jS|^)OG9bWghQCv(-IQ zuFtgrdZsylo#}S*Ha9sFW~h26M$zESKOh1|&>+mPwDu>236uli+asgNWY~K!t&J6W zMXs_e@GITMWck6AyE~;_*zexJqXSS+nCgSKH~ZH;8*QKeUSj9(7IuslqQ{4vqRc3YMFx8|FwZ(y=gaptZO`orN1P3W-E8WE ztxbHd>b3X!W+w@ykN1dA8{65`=BAuoG}!=OW$eC*{fV&1Xlf}mZzrw;RZLz)+SJrE z9hke9F75j}WGrcvn8U!95dz)qA8>1FQFikc#@9^uif_3oqA<>h5sRV7h`)~D=&^lV zwPheIlaKsWocaKWHzsFXqVBKSrs-EPfy5}-ZIH^goUftrj^;+htosvV?~R9lDgy<< zRBFtLm*!sZGf4#s`p=RxIcuuTpTFp`aQhjy2+k)re}DI21<9AI;-TZ_pXF_zaH+q! zRl+x`GC#ZAZpaH^_#<7;)N#j>3U8AyRtGjo56}m~Lf2UJZ56IG@0VQhz%XN`6enQ9 zUWv%5@N#7zYsu3W4Ufsrxl$Jn@4M`ek0v=~IYHlxd-x$#1=5hP0G=P*M(MuacQaq* z0@+v~J76gIPY!->bo;TB%04NQvH3;u3vujcin0bAAWR^oOY8{fQUzYf zw6)uW(JGG-B;%JY$d5&sZ@ppDz=J{aPrJ9?X|kPYA(rWXE`D`wSC9s$X1!dw%B?ST z83jkT8Q9d|_VSn)5hYIK9hVqxJRFvkvC)f)%6+T1j4b}kqwon~)9b#c)!@+7g4lT9 zb{IjBV*Ee^pI#x`GB!dN^-xNVlZ-qdx@U=61(&tywj~ z$u+c=T9kRcT0e?vrE|Ov3KXYH6u}6>;<;wMZ!_@E^}xNN)a_WJI1BgNy`*i5(mB(b zbTmpf;UEWi{CSXF%p+(d+yHWp&ExBh-0a+}qEhVT2x8^q6R_uLF6Fx#)Te-X;pH+U z@@z}r6S0BmmgNR;>MWo(2y^*{^n2T@*%KO3S?+YPHbjs*#1iX@0_9(2(ZG%^=Og2b zQ8?mgxNv9IAxa66kVDl1ln`H(!N|9c4OvYK7jy#o*h>dE44Y0E9lUEN;qgJG!*mE$ zS>|^eB~ue6NApdb;t23oX?mVt!`b>G2fnqQU3NXC0{z_i;r71!f|Rl%v&Dxk@xi*ux7L;mBRbiC zR}F+bjO)%;VC*9x*jP zt8xAlBdnVMm^v{OM#}YMOD67>N)PS_}Ak>H2JmATTjyU~%MY#Nmw`IzgV>B z1dB(}Rbc28A6R!*cojkb%M)qTJcSSImcT&=h-n6^FdxEMh0-ty13NTGi5I-DR|{sM zb`NATeA!uD3AA+5$uGcry?7YyoG%}meJ5tBEBE_F9+cAQ1m?Th})i~;5T5@pw3ISk ztneNZ{QQ!aLa`JnfBW@KlJ8qQ6|V1vKq8{#%P<4D>vf*wO zb680Q_o`K)xqPw$r?uDtpw)=_?&LazBuvu`46i%U zIiV+Olm7t_z>Ge^m>(!vMPWD;8t@!D2YQ(SGocw6o{)xhMAStk<#5w@k-Z@?b}ari zM7?XcL}L6dgQ4pw(2>$QeLAmM^2SWJqU-H_kGKI{&ukT=(w6yT6Uk-xTX3XQjlB4ZuVw8vlT9)qU2+}6t0l8q;~ zSaV+%UW2pYA||+?ns>qTdMX=UVjO+~VDrZn`r~34JjHG)vRu5R#JqMZTT5H&WF=C%Y-ZH21JF8(mLF|3#{Q+t7z$X4d|Gh zR-DjtI!cUbLNC3A;Z4m>m28qhMH~}B;o;z*NU!|Vm3W#U$2xmAHQ4?xkr<&Kj1WX@ z)f158q2;kD-DLJqic8G=$+gF_41)3ky5Mq}=y~DH+a;UzMPrb>t0==aZa|Un-Q?oq zaN))Q2z)1Ir3a$pZFJ0&UT8e&aDKqg%BeKd)KkNlxBItT9@*Di}E z!M0Ur9@F2whoZUThWna~HXdc3Z+~-1dwN}Ch*F{z095R6zx`W$DQ?9_KZ_3|MMn>Y zT}VZtkzM9)1T9Zgmig=FoCA5r%liJ2SVQpUN}7F>QTaBbyb;F zTejl1H9B@80c~grpZ(8-e$-2DtGKq^uF0CJLG-Q=qK%G(Z;ui|Lws+PSr)^6X3=lC zy>F|nm69Z`##42of)eq5)*KdG|_2#Cbq^y86QQ(svIx2Ou!MK0VtE4_uS}0ne?oJ#i!rr}c8P($J|CnsMjtZ2|&+Ms!PZ420_n zbRB^^&o>Brjnl0FXh}NQKd^Ii_@&>g4rc$o{P$1+-zD1Q>v`cY=EW+-%u0BOIXhL9 z{LA^=YL}EczWOQRbfe%=TdpvA+Wh%-`pYA@m0KNhC3a;d`i2p%$8d(9rZpB|VV<(u z>hEyUCMtvV^rGYQE7cFr-|8T2a+tv?_&C|Bdb!!0VASU?zm56b5AZ57YQ`!luUr^r zIJs7e@f!GDh`TFyVM4=jfie=X5rQsy@A50Ct{)Y3$Vaap|9<@R-1QEvWZHGA%xG6O zJNpM$Swww{{vTvN0+9#37L$P!)h@~3Fn~JOQD#nlwE?ce=x_SrZI9erSU~PAEZJZk zTNh=5*6N+*1ulDid?TF>7B3JUm8-xGuoSHmebr3_@TH!JxG2$cGfD)*FwGyH&wP2u zG{VA0=lH^p$R+}6?ba>Eg2xr3eW6^frS^La% z-GQR-y}*>XWEtnVjVj88x0A1fjD=(RsJlc2*4JMzDHJT~G5#9i3Q4%**U5DGZi)ii z{%DKU#0P+An36#;4gQI4H_|NZC#4T-FKF(72+Q;2{mf6BsP$Bw44U8$4`f0!SW1J! z8oIyCJ}O=}8~DnzX;X(krYrZ8`Sr8@a4d?3J?Wqh&Y{~FDvfxe_!7jzyBuc_oR{Gb z(N7@IW87x0-*Np5mf1a5_n^tx%F3q@rF@BGQnWA|$Z^vA6sUGkdc#YbDLPuSTd*Cj z#}GH0%|vS_+ook44vQ(1A`La~C9+TwC2q8PCwvGF3tP7&9v){{==@zXy7$NK8>-+m&;yV>?w{} zJeoFFh9k+S15-Eh1M6wC90u4ZZn?MP+O-o6@G6RWVnN?JIWJWxfhm0qH%2Ax?BaF= z`T?IRRHJg>qX;mTmCcL+{oaDjO>*yY2PwBDPt(u~kXWH5(AvJcOQH#SyrgI+0|Z39 z5$O)HMZ9TQuVl)+yBy}hxNx8yXi#7B_g1Wlum9?2#!%~+E`j}!uAI&+#`1$!Je=4D zZQ6DI#dn>Q;rHUI2Tr)mAvL=tZ^Ozi*RPfqk^h657lZ8lwz8b1R2kxkoT{!+@=#UK zTx*r%sUW++6hpk(Kgo7KukL*@Uw1hU1xJCu2fTY3^LWM!PxRiW+QhoV?hD zRX^Ubw&Ga*e8kI>I=d9?R&Pz#nLEj_pZqOQFNWLPmUC`m^^72ipY?>EY`60P#;!S9 z!MMKVxtZr}$m@LZXVnVJdxyMc(ZW{mt`A8az32eZ^DRISp1;cUrm75n$Ph<^trcDx z*N0IQb4mZ@xVN<<61E$qOQz=_0n@FC@i)*JY#wO(K#c+=p*RV&C*lysb5eHKD2OoL zUN|m;M;$Y|xkZmPdMa)Q z!`5j<70CqZePf^e$9RrI$M|$9ND~4jyY*w99RgI84tyG#34jjBXtQyS5O^G;AqI8Pk8)F&;PtuE3~550h3?T> z?cI;|s1WDovYVG|E88?#lUJcLzpFeCDZwX|>w}x*8_=?Q(&7ElxZuz3glynN&29?? zkit!dX4pe{-{y-UD!y(p`p?0R-stHP_q4ht=|hs_Y^H(9{hVTp{b#^^(K#5V7%3Zj z4d*8XaGRU;Qqyd)s7gv%mYreDQF}u~;S(w1#NRiID7FOCI|$~X6af)O4xs`V=c0Prv6KN|2+2w`Gp?;UyJp6$O_{|V7H_P z$ilE?#H-7`&3stdUi!XX-8Zm<6bm(2CI!LP@Bcjrf9l-dIf*>j&q9^hK3^I5R{uQA z=c0T9mE`RI?FM8M07HaLg32?w%@W}<-h_kKo4pPzaiqJWU2_2s&{-Q}aFjZP^l2LE zxJ%d_Kfv4o#!;yMlwM<**fp6$UG&JX^nPmke`8(AhEvGgWR>DKBi@)_llr8`xsi^u z(L}L}5z>{?5NoW{cWBL3`l)W6{?%A+MV$O96Qx#x(Peg5gy$uyMf@@EAyM0BY20%6 z#1Y9NRXbe_$sNj><<)i61;hUip&k|)w#aX1;5hs@%3sGlEVtDJS(DBRb46#9v!+YW zzYFnRwab2WNORihdL)%piisj~0RXEBR!d%jTqi(PY6>T8`bxIP9DP-Blzx`mUWNk= z4+7D%$hW$s3J-fb<;(!f>ZY?H=KV{rr!ZQtri`nuku9+}nfvYYRqIcq$fK+2Sxeh# zF;h4~Sm42T#o-(GJr-|wr6_0S=i1m~e_wD~R#P9E-AbF%6;5VGpEPyZRY)?uAC*X^ z^Jb@e+00c(j4zme8?_8w))V^cynFv4zNTMCi_wm=E`69U>zp`Wx9O|l=4z2C-9Y7% zEHoH0H_CY{Ts!&0O@*>J+}=}~u>M&0tDUQGA5%}vDRGD&sLC3dLG?@2Ve-@qr`B)W z1xEh5f40{c-Sg}+86hHc72Sf?JBjw}z(U)d8%3Ea1c0d6Ocx;^eQle!zC^ z3tbLD>TzsYGVos!+~4Z^nW|Txw(K$qu3@s5Aol2G_Rea?77LJ`kHVsEnfX8V$#L5`!#f*r zIn+MG<;9)mxcQsdQZkB>?nx~R*|_GhlR+Iv&Q&B;*Ut}RL@@vGQd04e&}`_yaC>El zev|i#+9OR{nA8S(qMgDfG_ZeV-tR1fHMQ&^1%okGS}xA|El6lA5N7#gK(H$DODO~7 z$e_K3HR^(nPZFSUcMnowC+fGdrAQCE`GK+IN`qa6v4KY1hS}uYOphGqYqNqhgnol1 z_doa##e{!Gj3~m`>)llr;njF0&asAFvvcnQo9@XZ(o{(bbMId%w><0RVcH}Mok{Bt z#pn6~QE{_gmE9MrgOu4YwV1sBNWc>OmT=U%bd5C1PAcIfF9gjHp|pcdsVN7_+J!$z zQ-AI0d-9l5Q~zSPTOEZ#eP$X$xoMmxQ}d`N%K;T~a<(=0Gk+VNLdT|y! zY&hk_nY;ELXTx{_j5lR{kmw1=W^w<>##f=xXBOEnGNQZ&)z@_clJvqyeNnD^Goo$~ zW&ZXk(7yS5hhk5Z`nK2peNKIU-n_G#J$Iwh;`Wv|zou!0AyE8(pkD;2BVnpT`G7Wd zZ{xaS4h?I`zKZ4Kx@*J~ZyZidTX1PbV(Ck5vs0_XMIc1(?W%LE=`BAlr<#?+^5Zx# z3hMo}!4t4o7YmG>3kxMzeM4gKLv=SwT{2nSU}`_?Z^%fqw!~a1mO~svMhP`mFlj^Q zrdwp3gqR)^@*{34hn75>)2|I+9xN}5e8**2<_RJSCo@Epq4kJJ(9o;-%3FLW-zUIp zD)2+w1y7b2TThpkH;gJ}Zy_7dT1B_n3lsjWhcsA!73(IoiQ!C4dB1&AX!P{2;3p2;X4puXtOcHEq7=pB%XlBYUJiuUfTrnV+*;R^B`N% zSoq}Hg(=GLe*h55(&|m#a4A=*>A5Dg%iOI(dKdypy2}LfVZNL&#xw)X+zs&Tj_gd= z(21OQ0t8r~GqLD!1_jN}V@CeQpu`hPCnnV;>nSvmHKZ_c!hrD2{ExB_ zLijp$Frj7Sqfz?lvYax(Ro`W%HwAUGV9{N8$n|RZvSA!)DOSG$O+)w?WMd2BEAt!h$tahl&d} z_j8O~!;^YYON{o$^!jzT3I%eXciRHBE zQ7^x(bWo7iTWNMy=#K@E_JO+0iX|8SNQrM46(y@8@Cl$W!i<|c%rxlq9!$1nQk6+< zeH1Z4&(l9134(KmoZB6uHt0O_loL6=VR+Q1IHo(rgX1?d>YZI3$n=r8S{ zdfRkg{$Js>`%T(c?!wY34XxVe)O$ zc$9>&mJ0QdLR8g3(3pjs{B%1qa0Pfk%QpT?c-W znb4fB%DkJ~Y0`p38fX)3YG~L-X+_Rq3riw>%z^njGOG4IiV!}Or4m2xI^O_ITTTNZ zb46~t3yN!nB;m;1O9Y8ccxX)^?`WF^@{p7kpoj| zhJ1q1VO)`$<|$-56CdK;pgj#w?aUor+~F|u<27~X`LBDUHDW^*BcBlCPr-o#?=@RX z^0EQe!sH8{M|L@z3T$2ryoiqw95I`<_;iEV6UMhC8>;E`^V}JL-X({4LVA90Q0DVL zZWvZ))k;Eg#nz|0>R~9_;|RzyiYJ0bnOKr`#shASIt&U!ANEFmbPg|Leaf17jn;eS zw9Ke5Uk%#Og-*-KZg5)R08;_dbM%3C4ShAIWz%x2F?RbHFgKAcCv&GuGZB=+%c!!G z2b;RtoqAW1REn!2Z(epJ|32M0c9e;ME-8>*E5Mwx-^e_*{|CIp^uE`xb%X5p`OG@Y zN)`<9pOT~oH+kW9(!*9vPO7IntB^!OJs+v9Q9YZu0nlE1B^vo zHi1IjBWl#E(9|wz3iu7jlgbRnCOycA4-w6NQvU}nkI1aC8iP@^-~w8spqM34hUN!g zM#7TSv7V&6Kx8s0LH~|Acw3l%Bx~}uL8co*s}V8OPa$eEfLHj9O&BT};O=shuk!9} z3Xk=!9~kXP|J^2!M9{DYW}9UX2&EnldDT(dnQyS`&e!O+)j8ddMk}K%o zEk=9zie!C%gc`|Ksn3Pd9p(q*sq5c2+4rt*&6cFrD~aMo$C@Z_JpC@%FC6}D|0=8Nbyv<>)53dhy?ARr>8SjbcbI~T;DvDL zH8S@vo4%RWFYjHdOc+v<29e~%9X_x7s$sN8cBMgzmrz>6oU+0wo~DzT*}^H~&g}f7uD1dW0$6tyD9XvKFpkF^{PleuS8z8a z67%bx$-%vv5(v=v^ZO$XS%12*DkgxfmT%2d9YhFuBM_>q$<@~sl*`SHQY*}kY1Hgd$h<5Q?O zGlmj;c01ztRtJ~6@J*>BiP)+kR^tte-~Mz!+tg`8vUW}l_e7eL*Von2nLD@tf-ES`l*ibbS`_x%6va6pjyxQ{ zv{UVu^bk62nHB?u-+&BVbyX&<>zirMaN#;7Wgs&djnVczb^T5TTtGjcgC(U#-ha}Q zH+~;_&&T(VHvX~1+|Blu*X%T?QMs`>-wL|1&eKxxb1wI_!~b3IyL1ch)hputn2#9j zjB|YMVyxiGfu?|jgt-D~td2AZ6vkG)b7lE69=z!aN!G9K)Q`w`Mm$@Nn_YY;I*Lfx z78X8Sm1b5$pVc#je%p5$ZSX?GRoI^mMMRJK3|OtYxz|47NyTp5ksKEb|C0pV zhwT;S*Q;enbF$~5pN>V_C6*0Jrp*m_IqG8`8erV@%=(?&4rOv=6Z+QfcONT=mdHcE zvpcW@-RYzq9;$kTw{?=bNGctnRFlM!`NI8%O|f`J{${w0D4K7E3^t?~QoiZ0vBF$G zJKHSBT*vxOmsk;uMe)i&CghjP9_SOZ>4o5=n3sG6-I!4I6WAhP$$u8tI9; z-5XMH1cIpWGt2YX(YbEni)6qHojiX(i9h7GqWD(O)XOIdi>OD zXw8Pg+SX6EZJkVj&V>kAajAEO65pTgM(P`+%Jf}4$QoR8T3W$2O8I?Qa zEfKN-d=;;-XV^j%(wZoj$?ZAIfFs4nS0H|Jw$R6r5Jv=0sXexPqv3?f+{NVV($ej) z+7Q(e!e{QMOn*okqI2smEJm z8AV2&3mx>>;kewu*6Ro;9YMMgqDNobR{SbR?a8}8S&QbjC7JM#CGC{@nS-0D!-R3O z4)?tbcH!J(BBZ%g51NSbcV_*X%5Jr2Dey2!wqs)U9D|=Q;$;wwvp`d}gOn;C%Jg?W zClBkDg2NXL@SDT1AVFmpY`sLxF{Kbe9V(8Xsn$pzR&Qv-mfCo%ye}8(_{rF$DTv>j z3mBjN9!x0gUF#ZogT>{U*Dz5R1S6HJc*)aWVJJwO3Xq)Jj#F?D<^Ua3DBqjhG7Ral zQ<|FRX%)Nz?Cs|;1@5swxxy%M$n5o*5#2jWqYod&_ zprPwy?#N?!Sa_AYTLYVK60M!O0kBlXXs$YW@*{txNBm}i;OFGPA}=8HOki8AdDkz& zsh36|Gdu8KgxEd7VB*c5tCIIapyO^VDt5McFCljZ(?-DDAn2f$&!W-V|Hk;_>ky39 z%x=?=p3f{k{P*(%>Gh?Mrkpxm0`Z|p_oyd;Xp2x7A{OZpb(tp7jd!&xBNrbw!wzv@ z+rU53C!EjvLs3DKpY9HUjzjz8P02n6-D)>!xAjKG`6T*R=n(gMO{A{skxf?t*eHAA z7&=G(Fi^0MN}Te$8zOH@^U!{I8}z*C)dO!SRadUR{8dUFXrCPNGMNeKB}h2DIS?fA z&cVc)DXU2g!0%XAph`IE!ftD=f~7p)j33GYuF<7GGE;oQ{?Px2tDO0govsmk59fZ< zhitVMW#M#S=J2bnBTN&Lf{K=8W#bE$Dwljr@wo@T_|kNn$3ULU5yEt|6q{l9;*+R}S%zHxmQczD{$%L)D zc6<>_rNXVSz&bMBg6t}mj99$#8`#Qc5~+(D`AiT+-HVq3bJpLC>dn(^6h&msit zs-BrlGmF=O#6kIZj_V@c4PXkuU#;LPg3sMzp#Wq*im|ydV@b-*1Ne=oBOkBIGU^(` zQPP6x3flcpwAUb{CFmHRXPejf;EgI~nzAmNT^P>X4QDv$$@S|`RYjuuls^OQ9>s*!R=CeHA7n9YFo3^L0Emg7F-ooTY z{<71)S$UF}xBI-;>Hl&1G8IuSx24}}6=_7yyJB`78Hra{meMPJ8gGgVzk>oVc*uV( z+h%#ir9BY_#5MP(>Sh;XNSAFXmnhFpEv>ygu0~1yl6UT^j|s7`4O(bH0XI^sbm=}t zcS+FWPk9Toij~2p}7g21;>kMdS>t#vQ9LlJPQTlHsnIxApOp2vL6ZYkBnR$9 z^tG({r77}Ov0mfeMMS7s7GZI{K$w^Cz9#}&MPi4@!tYRY&m(O_)kmF{N$&WBRuToR zw7|)XfF%wgXs|vLMlU3n7spLRLGfCG*Dc_%ZmoK1Nj#x(NSV+pjJ`|IhGv1;sJ-}f zCYumX83CaUhF@dxd3?vV7YP?7_qB=1>ej)I`#Co^JZ8b6*zx9xq_4_k&}Vb55i>q1 z%oR?}0$7aE$~TtQ(-E!ID{%QX`36=6Y}?t*Ans6`SPywTa>u2g%woDAO7TN#hS~hqQ#nT zuz42|mUpq)6L*SlB!v7(?WGK(HKv3Viy{?;4uD)AJaC83o`%!auHD-p#4Xte!^=kg`K<^_R@y>L)nrozGGCS z@7Gi8{|e<_80g8<9F0JMeYKZ=71zLUo^q-{F%<|H8cG zL`zK}pv4Pu7LK*~I8z)3RMyyC`$osB#1F9g zh6U%C68}H=U7Hc%DapSue}7XPriVM*l49_(l78>~H4zACvmzZXR+D6ougIE5lo}n~ z3v}Pw_>hB7fAykqmTpPm!K893hvJTP9Asj+C z_T}=uNbM}!i!Cu?%S|~x|Cv8SL=MvGGQdUZxHN5+^^|%;=-zL2b1zw+%x$F(2;s{8 zSry<4gA#D3HZ1K>xh>c%^Y}1nhtFF!2JDHoq_3jX3oc;Cgk~UIjO_;RXNkNuPWeWpu zbX3m$YZbEa9xm<9;%!wP|MYnfP4SKMZpvY_4 zCKeX;lycWD(WLf#a0dRU_s;CBRUnrWiSI_eN`mw{vlwwzKy`U9L#8!_{y#_O z;>h&=|MAZZLyJhKEyFbBR&qOR7^4#-ja<4qrKY5>w3%EcY?MyUntQ1;Gsk6gqmGJ0 znZ%GxIERpEVxL^!{9zdr!UXYbGJ{dzv1k0+MidndL%ATTJ*?#scW~AgKQ|%>uu%W|Dt$k4vMKp^Fp4puufB|!!fFWvAlr|0=VN8j=b<-lA z(hzvLpm;~8l@}PZ2Ww{C^eJz_(zG_TfhNHXTqyaQN|G4#+q^Cz+qIqsQ|y;QXPGXuF|V>w=~i=U|{vQPVeo5?nM~V!4&*k?83E)G699 zTB?^8eviwk{X}t;zA%N64;Iu;#^F%<6}7HwOwA3k7^*_>NKOQcZw-1%vNgzFvxn~1 z;71}6e66zZ`}PKc)Co$fhf3O_awurna8OP&r@@-dJm*(CSj7hKR+tJPdpKf#RB0WM zS2=6GFNfe`t<(K?Vm??+2O|v%h^p~+*J|(^B~Ny$8=7_^j6qWCwX~;3mzOqq*iIg# zc2z$=Z@JMhTE@`?!J2R1{Wn>sRwn>0Ry~XBd2v2G7P3-zmWBSmc^#dDto0YB8OkTf z@iSWBbE&LH)AYiQP;slwuO;U68}(hwXLo!fuD#jmhQcih5D;RQCL_g`n_Oy_Qw{Ga zFO{fxLh~MR_+nN*(bwHovl@Dk2TP5`nqkXYU-gsG&k!TZwDsc_?_bKO)Znlz;rxLZex! zB6K~DhAL|}%CpiB2ZzOY!l5pBEIsAb^l0LXTw%67Z>!v6K>VDI%47jbH~|zvb+rHsMvbbeuUN2kr2saHGdsJtk<~i-Tez2*ZKPCPDu( z0Ze~aW}%6`)%Cy&ctp8#nEsmS)cm8tjDsXiSo*D|5QFE}mK#?qKq})1oJSo5y~*_; z-A?D6X4mX&rat<^gkKUX?pm*gQnQ}1Z2#p6Bh?Z5YvRlP5%`F#E0dlG@CxNCWE!X$ zwI*ex9F40S?dx&rg=%(eiQ!?SLsDSs_O7btR&29pE1S% zOuzdVjilfdm_Bnh*|MMlx%ak~`=cCi=1FJE?p-*TS{*v?saOvboK9@^hPSp#`X(KF zu6NFuqE&n?@!!tbC9jFi%>jjF9o`r7qy) zd1~Kx$OM~muXiPpsXh1vtDi=r!SiO~O-xX0;f<*}p=VCjVKO?{-PxWy=y^FNCgCPI zZBwB7>Hz*!)>TU(?gOZRc~J9EeGhw{#ki_4EZB348yW-tjqh(^u$2EGbzG+HR0e=~?uyzJBf#rDP9!Gf3c()?;CnDh$py~rENvqc zCR<)1FH`jto?NfO!j9Pul$ScODC>+IzALD)usm4YztxzL(}y<{A{NU2{eI}>FSYK@DfL7r87Rv_? z!;TJy8@@kvQ{poMX1kXA&5@Q4?#{2&WL0NB)hHxSJs<8dERGU$*6Yha3RfQGakry6*V50R zUWr1n7I*ohH}Ai>gR4005an`vRg9J!p74rM%bI;`?N*P;S^C>>FUwVndG6GPVsa2S zaHiGCGqS)XxA#)~HlJ*1Vf|KN!)2gpLzjJ6_Oq?@8>u*bCPRW~02B?K_POlWsl1!G zn2%0j&mJHj-oNX17J-5jP*dKISlkXkpFP6Egq0s7nQPxXAe(8@0rdqdYd?5TTY4QN zdgde7KKYJ_O$ows6=33t(|HUJgOZmc#FPf zpjJMg-h-D^6jL4VVLpc$*%lP{J;j5b&&Y+BX&NQ0y6Xdor04sv<~6uyC)gP$7dpdP zjn(Gt-jJ%nb%vtEEYCA^Y~}LMvr)jKe&aKC$YZc`#QxF6h2_BGhkiMoKg?wJhY5b{ z`=AjRRnIzTLmgO(F=JPHt`waf*ic8K#bLB=H9Yrt_1DdT?z?k06^3i4yp4yO$!7vu z^~qlmmCJ9Sp9kY!U)UA59ETe$H41qGKi&PKxK$2fI>AhuoYJ!*960np|K6i)x}N5YMFKhw;V*L(sb) zsLS(dB9yWMkDL0?Fy{U1?9m{1Am^rpTj7RF^FbxoqQ2+11&^-oh~LH-?5vdV-+mnt z9ezmI#a#U4YU_i*Wga~&kSK8vs!J}1B;O#w3Cd|ZGJ-?zfK=30&Zf8tK#(^0_L2SC z^k7Yf*seITWeCOp%}s<^09fuxfod9z=H@J~)UBJ>^7BO?%FDh2A&W~uDEmQHkVKvy z&^WT`IlH7Kfla|wsC0V1_j3fDM5;q_M0ak*p(dokvc4H?2gUYFdT>Y>!Uc%d8o~@W zKDgT*OAB}uY?JvuHA-z!_X==lH%>Co=9t99wT-j3#&&3M>D{?HcRl_g%!J2U|JwK{ zg918vmEN6(6fL$S)viE;qkmMDfaL7n8T?wI#g@diBbXZ^E7#yf z0W5$y8oRai)DaA3oQ0(4^gIE?Rl`wC*b^fuHl#}p zi$tb^e*ugRIwrs_71Fzhk(Sw#T3jx+`Z;l>f@TO)gw@gVQLLn^p}r4kw&ZX&x#poe zZG1sLD!u)o*H`$Dx81qj;$ahvmax=Fq+cG;2i4*M`-qkQjj1Xy-NfTx;>gb}jwyT}N{GOb!35QRpL9lWLz_J52!w zfUgxv_pY_H@^u4%{3t7gZjIskU5H^d5}N6h5Ucyr3*}mXzj?@sJ(Y$u)9hB4WivrY zzw+RMGRQOh2gyqj*NhlhYhV7oGZaEEq*6B2D3!q5nzZ}RvY-dg@XL&pc(AAX15{e} zQO=qOM8vI?%Tr_@&OFL*md)h}?ZKL~-5jW?p13l%0nn!O{hteolYnFQ?SEN*ha zPP_?G3+(A(EkqEOmrb8oTcCXJus5K0s;|H3FWX#~!*$X$g_Q5+!S!m5d!DKOdS#Dt zCJDZ{>Ua=+8iO6-l78H1rHT?_lyyp+1gxR0KG^-?VLh*vo3)-?$UJ(oL)0o-_H5tE z?#guPfh(z-`(nE5Bhv35PW$x!IZdl8qZGnM=)j<`o^;)xh7O|)ga(S+Bdf*#=3<^1 zD-A^gf$CG7Yo4Vy3kb{LXO&-;E1$Y1^j1we#rMVQYcV0UWqL0)b${2W-dykkIWUXW zVAbZ#;8tTGAmt~_O|K`OgX!gTnswOAHutdKSW0=Cx(QM^(ah>~+L@7*CQjJ11%XP= zYaOfK8Nyjxjt-ILm}vX$PGm4Fg}mM%Td)2&zX@&~qN?iCea~xo9*u*D;Ck>1>N5lAcqTLZ|gh} zfp{}lb@wE>(-jPu2kJ3eMcY%n<&mVtHx{NRgtZ9epRpFJd*S-fS0I(yZ^$l&J0rVC zvdP#byi~X683O&r)YuFf0r{P0ABbQr8}z>9 zCG!H+FL*yK>@4ssvj&6Q3`*uG;fVYV+DrrzPeTdt@{qlSTWJ&dXfp57#kpn z@w!k19&7K!ge?l$+1`aGe(#%|_BpsPGEekG8{Qy7`*!q=BS6+%!c=uJ<@}!F-l7_> zESnP>o>;T>QL;t9+yRzqB5kZbcd`9a;eV0}^aWI~cFTcAP`s{F2BoT*CZ zGBSGR>{>8ahOc_Ww`fh;4hp|@c`Oc{e7a#1{eylT@E%aZ15!C*+2CyNQsVuk|1LJ@ z-9ikU6XsGVfBy4ckCDIU5vY-Qyz9TY7tDvUdQuz<7w-7TuS%;>2(a>VEw$QmL{;Vb z!9iT5UCn6kro#efYI)hi-W;7<>O8V8r%?EvXxPa@sePy$ zdnsiXwi?a}^o3X*flRy6&^xONrv0c1CW2%mONIx<4No?X+wNl7Hi;O3Zo>S z6o06!GQ*y%*0Ij8b;T-E%kU$GK7OhhH!oVYBK})Xq3j_aTsb;i);PeXATl<=tn$ zUW@5LH~xAh&48!P0~C^Rv#wpY9&HJVKW0=@ea>q`TU#WP+Jn-sd-U`R?U4NdEoRT_ zXIz&P_%9j3i*J7I`FX<)1Fy4x)y$tb!ZGS0%(tneF%?pNEp8y6^DpO@)^5uq*u?%e zpZ}nQ!ZJj|gTwLrBXEYMBcUNlhTYXW=bP$|kq_Ct^U2{+E1<6iL)77Wn?Qm5Z`Y%? z?Q_RFFHEJAes<5D|9WrpHBHpRW(-rxlVIU3(m^;bGvx??YA2w&V^kG9=Lpaf+=_T)L z<9g5r*cI0V+@IWn^M0s2#LYv{7XpII03_#4vLm8Hf##c2I-WDQi8t&WtnZnT;F&gL z!^(@G60;bCS$KOq_9C^Lm2~LPg?6o#=fmQu?#veJLDplahzpZPdYY8_7^(d3mA&<* z*vRcmhEJ9cd9~Fm3l9~vmu9%fPk;OFSMO2gK!RV+H?+nkFi2`=e9SUB{6%Ac2J0N< zWx@$K+IW>T4G4%5-bW#v_ z#f2izWIVS$g$=nZpdAOb$`?ecBU~Ob3~Y5cpYCnKor0nqHWxBJbmwc+dP07}@^sYN z?CKj33%ssuG|gCFk1W((M790;&$h~${+sY~6XI`O z9Z5lqp3Inq^_?XJg9(UMyhsI9H}b=wmJPhi0!`cX_zH*kgOJOVK{5Wc)B1}%JsY@R5rN3s>|E1Rc@F2ZFjHM28_=#q04|NmaC<&57 z$Y=ki)E!pdG`!Y~9~-*jN5gN(`PRe8TF`Myhhjedaji3Okcr za}@y&l3dHHb$;+DueLT~6eui^bof%5p5sli*`%duP$!GXOG`7r%41^Etl*lIl z4}~Lt_MC8?NclW3)`fan$RflOycxa`4KHKH7Lf)RAbVIiJH67qr$!kDLK-t7u``#n zI-yE_88-XHO_snvfM;#~UcVqd2K^7t<1>acc~ZejK)zw_tQT6OZ;Bt*&{0~#-GSgq z(~sZeuvC*J%XUNj+Hqdgny0kO-`;aBj2jQ=8qSxR@!2$(2?o}y3DQaVJK`k7wR6hU zJo$1LM6>2_7A5ClGELH#bRPg8EA51#bRi`Vl!0xJU8oc%7|&_go|~;}rmsFN0R{t= zMwzs7%!5|y>F#;5rQj+oH4MjUDht;?X4Be)6e?5gpy7A8N+x~iH&)J*v=OIEK&(p2 zO=a^~i7J*KZdp>KU10#O4UNnuew%PF%-<~O?Or_CiD=N}!8?g_qz$bjAqnFgj-nOb zokg$v{_e9GN%FzuA_I6r)9e1YsLxzn4=if2@&Kj6^+wAt=J|nKGhH4FU_3#s*i4Gn z2^*)L-?wzS1n1lkVz%kQ$3(KwtmX9cnL=Y#X^{ZF>peL0^6=#_%B+`+6J4T`@h~uE z+B?7LCn!s#ECrM17)(~7_~Lb=BvMRGrGRK^o8c>j+Z)pjRR%QQ4oCXpk{pav(I^o? z7b$&#An1;V9Y!`~GE(Zbno3R3uXPA$=@UrrIy7r78u7PawBk*80P+g!Cr4g^_dQpp zsj3s1T}sH19EsH1UY6FWl_VVIKu4@s{|1yX-E!j!R3lnSkbx~E;q1{#sQ{lEv;B~Mq;agzn1l3_wv_y!)$hG{r&Rs+Y*E!tgSzx;uX z3L2ug4N7)%3tU%vuTTqLF$M~98wZ5KIRgcY{%p<;s_VaTUv{JB1e3u_V7S)?6bX;j)N*G~mLFqQMf@7)LT`u`kp0`B7iPvO4xY6VT_VGt zdZza`Cp2tv+6~&NN$1|4WB|3GboaQ*a-j9{ejVVi)PVH&+k3%dH{?vT*d%LKcZn`R zOU9ZXx(l|qpw!;+E*QqsfEZQe49_YQ!v$MvHE#6ERyO~?=%5otaWkHeN;)4^5!pWp ziBAG&&Gyu{p2Gp(y3crc*pf7jiXr|Oj7Y(? z(lJx#$cz)kgEW&YSrAZB+Bco;8K47<61K4EOvVOw@7%Y-2tVDQf~e29Nx{H_;2nS4 zf(9uPBp@i^(UwAn-w=ahHL<2cu6mq#1o=pRdU=MIPa^2HP^MP3@30$WD*j4gxa*Or0 zPo5{INTMhhHm}9Dujkovv$xm6H9{jV8gv6la~ zjzohs$XeT&j3q8_l=o+?>;4PFK_2Q+=-@>$&Y&PUZzrbc(ohU!14J~x?fd_Cdw0n~ z(X#Q$+j{7Mcqqf&wsBHTdMCFc@Ylf|B*D!A$OP3w(}GtvjD$a(x4SStTO6bRGzCU5 z$Y1?kck;SJlroL@n@h>iOP}#up zfVo;tcP1uQP?tw9TIfA$mvW-z&Y+TvS$JNREZ7=q{AG|+7zsF6`6XFRud-K5#&Ts; zIEF@CScws`wKK-|ps3j(iY|XhHYr>f*k4w?LH8;5NUp`MNVZReC974&1x^dCY{}bmN0nK&B_sS}e^t2IbyLnfT@Ee#@=9Q#h)KfW8dhrc&F` z-Fo|ZkG|i(mx&*xPv!L8IWm@Qb?>6l^}QESQKcvK6Fr}mIrZ>qOE-4+b$aRXgR{v~ zJiZX4m>L9F=r^)rt)JmqnRn;gZF}%D)>(y=e>OXwDMo3;y?UiX5aA`@O4(hKZTy>D z^M1{Mrj^?yqfkhxSG1U;i}SYd$-jCzu|vhXdpPvQ6*@_^B|$6Sy!=8@JIfbsuts0} zTJ-q$ZK^NHR_cEA6+WRf`^+7GbWo5dGSy^)$KWTsQprcR=$XHCz&`Z@Zb?Z?t+`eab>FI9#nr4+Yi!xSwJ87T(KO&;OfKD+ z-*;-+tIb@z3~G;6f?n?WLkgu{X{9bFCejsUX_@7|w;vVe%Gd#3Hf`Pbx3jAM1OtbK z;jxT8#&Vm#oGt+*c$X4twY859%SC?un5o~bN(<(aO>WAEdE&95Ezkh0g={iM^z|ox z;*z}6aKOYxHCSsn24x9v7vcVAcTPC2=HgbvZwOfF(Z1DjbO(ALmRgon119QYUg+ZN zeL6bEekg?m`yXU|z%L~4*Y=u?1+}dgA3*jVE@3-r(QN<=NZL@J*M>JYi_&g|bECjX zccdrPOu2OnZ`Ot^#%zPokBgO8pUniJHrL$<`&wU{I3>mrlN~o%7`@;54~FIGJl8j0 z>fhXZGsZ15<|)OxRTrkNTxA@^gzde6f5+#gyQMacFxlSUV=ouO;lzpGG^CMntrBm_ zJL0EKRaIB>gDg!C5Hp`khiDplW9A=D5K5v4&5-zwDS>H*Y|J(rG{xh%;NzX7LnGSU z78Yi!ImK6B6%;wtXLU(kA2?4>9=T=WbiK7q2jQ~~3Tpg{>%Qgm2g5$NkfOMHi?`=w zQtnv1Hfj$J;vv~z7Ud5h2fe?p8cT7ix8(RpDNkPbz>c~8BG-B-3MOGfholX|pS8{- z0$Kqdo);ELOAPl;d1dC0pwYDCB&EuLIt;U`f55u>d%7P*NoDArv|+^bgkDZ{I;1`{ z_LR-1;o$=}N^+i+5#+i^x#g{d_j*Jwi8_C1Gog`9a@S~CLc1y1afFEc|P z220^%EtxRE~QNCKA}Mi&+~O{!X@!VW_Y9P9ymuP*Dd&)ODus@I-Hz z46@YpeKV;+H9So%v({hIaLsKChuWOnfb%S6WhejQcEgVhW5(x;Sj(2o7^!7|$)Q_%8X)eNo`0KE@CV9iX!J<*8!VCrP4x`tUB@eD7thE+|MC4;SPBK#^NO-vr zd`@VzMmMmh`46I0U+2h8a5W(LL>|z62-3{qrO)G+iYs>fCVyxaPwl!fT<{4-z%DhT zmnkrPTe9P3aJkg{XBTJhrRBJftZiOc9mcmVgb+v)e2=luPSjHLfEpk_Isfp+!qB?{ z4I_KUPS|qh9oOytK;6S!zSqkZNuH~`AgN)Hu@XDziy3FfKY@4oWaoJz5doHm$L`#Z z(Uz1qt`}Z)!0?l|1x2VLh*ltGg1Bo@q*B#1^Ib8OBWAjHwxvbfU0HJsVDR&SpI@HC z{YKD*O8CMt6TXU>226#r%3-kZGO9i^soM7Jfi*+~I74TKKG+|bMc6_4M0Mdk`V8~rvq==`A3w!Qx)K@ygFV(HNWtWGI2i}$x|Qw==6b?+-_&QMpHo@UOvNeX zZh3iYN17HS)rDARYEXy|!hdsR)2HFwkC~P2nqG1guGCUBFml7>a4t085pu*e_DOJN z&|!KjwAz%72mBbhKIO>q%=ai>PK)a~CiIZSulPE`kzjB&0&`&6#4m zKb5|Qn*XXzV=S(Pe?E#qi1gx+>a8yP+lYZ;Bmx2ORIQyv(@mzGHjWC3H#2iX2#&XS zYU%H!z^*vJcMFjl6v`D9%2&iU6Z@qXeL|@XRlo(^rDU=7bee}BqcA`7fGJ^+^}&LX zacfbo`)cGOJ(mF2&(NO7)l{1N26qmn5B||&cRl!b{1O<$P)o|kw6~y z8vQ%D@H`3Ma=G9;O&v!0{B?C@UH8G}>jhh`TnW7ws^l5GqLAypd=Jypt-yhKVR@-+ zCNNXUwwkwzxuVs{+G&!seGhJX>LU^!tP}{~_uKZ{^%zz2Mz5CzB`|Ky(iYs>kkujQ z(UgVOFOu@L1J*`4=Q4kR79}UN7MdZ`YrRBd%=J(!WaZ=tqI>t2DD}F(Wehp>1=jJ&l4*hyz#~SP51GQcxtcWOAlK3 zp!Pc%6bHncsBA{>5~HM*$-eRfN+$_M zuaO<$rl%aW+07QR}V9u{!6?l$=L{zZf>W^)T8 zn`9_)_P_4j#))!$U46GoKN%Tq%nY-GohIn|{Q5TU$c6rL=(`Z3gKyLSPWL$~^O*nj zReMRuehw5BXCfSq%$Lb4jdq4dYUF`(VL^*kt;o>YV0kV4=b{Nk5%wZrrqVxG|8xowZh zl% zc+L`kOWjWUZSG6nEbUd^j@m|erEu?;;kzCC+ZrOBQoLj_GxWg*=IuX!Ie2Y%O&%I` zaFVg&U!x%;ctl(l82;_q;3`XkV02p#^~=+Zt#TLEdUBrC-G#CH5katv`EsJx$%kom7TrS1T8ffeqI3?XXm}I{~Y2LseXdNk6%ry=6pO7 z^Z9+}-Y^ImpT$J89w-0)RMqssO);;Y+%#8P+E&lr7<>tSE zU0?zjL6wy-%6PoRH@sD_O|kK zmtr2qgNtg`2VJCdq47m*tLPwyc>}=su56-=Egv_QXpVOnnOo4Lc-vy0#<3d8Hek&w34Y*z$7$XX=dkec4t2;#e%aP2?K9b`Dm)?Ag}l zoW)s~y2CJU-M^0|IFkW~3(qrbw`Y=(O}ui0_vh{AeUh!uB>RLqxE|!XRErLW*w~LO zsdxgnNLpx+h1mI_ZA(I!b29(@f%Mt>B6NGE&F^__Z4iG5z9@e3OPfL9&W~^S*5YSO zh_>5WqqEZqzOaeldX4yeBE~dO^PmH7UJFk2MT>iO7Mp7arC<6iMhh&r9AQ`S1!0B0 zl~S_u(8+NbUy5Fx_}q9KZb>$@clDh(c+H8de?*Ex3HMh`n?pO2&Oo!th9|0_QaBbz zS02^P`o*eMs$C(ui~(gMKKOn$KUJshSMF8Acm(g^IVEB(-iHsGAK6nA!(991YG2`b zo8-+t?&ZJMo&|lK^|7ULlx!uWOC3Q>0^jsHYP#PamJJ&*80Y#1@SS>o^FitWUZa|3 zj~KJ4UlAi?sX3)NYN)r**SU>QOEo#{y&N3}ty0MDOcecdVmYF3*jyFaGXAr1zdL$kjzN2Xhd(XwAKAmd`%=AE<=#A8i$8dRcPf{Fa?hT}j z)V0KotGP7O{u^6c<-LeZJ=}_1mJ;Ic@^1)7zVcrV32`OK- z;DCN}M2F|=<=7%-2y$r&<5xe6*vZ<=UrU_WYg0vV4p}T7+jtF;np)j`cZ8E|`^n}U zH2g|;ibo^X=oZ=&uQ~f;E=+=9;o~i5#)pSm;5gK3rGI-{hgF(Rd3UNmd2zx9K$JNl z+ick^vK&xvG38?FN_X;B{ZA5QMr-Lv%5g()2!_JOV&?7yJj&cejwpCHF$f%NdN~EJ zzM@Os=XCvG=|3eh{nIw^!eUQr87O$uGR>i$yx$ThDW7HfL#Y6vy6iLSv%6+3(gd(JsXx8U>%99-%ttE$XH_ zn0>EZ`gm0)r3KF>gRd7m&xx6;zNk-50nb80H2aC)yKJUg(JqCfB-p$8EuHj*us##v zQ)_RVjzG&J*{Tx%%n)A9U0>Dk-i&w2K~a{ z1|tu8$-|`$r&bKxS=-{K2XX{r!%>RzEm`4Sg`&hFRT3Zp1YxjPqc0XC@J`RgQnK60 zCEvYM-o_R@&3c+IuIsy>5*1^h8efW|%PXC!cVO)!I*Ccub$P!>O1XrOEY<6MO8d@8 zuvws0fzUK|{f9#Is~ z8-0k5YD(Mje)~0Dq9{@E;?bVIBA4EAr=#p$PFFG1)pRI)ITwEA6GRaAEf==;oVVYFq|CA{sF!{K zDVqy|r&b^vsQHq$NhxDK6U`7SN3Vr%L20+@)6^%{bscZi9)&|N=SA0yU;x16zr!WO zpUIBd(+nm2#_n>xv3v=zv%*iAVi+h<0-T6-& zA_Hm+tUg31p9BfLpW!;OD(0_bkI-1~S8hg5;jG*@gs~+ELFtW@RyeQn5+<97c(L*4 z8c4=y`RJ&Sc4uP7Hf$_eTa7U&EU?;v+R+e$K~{+miV^sU9x&Va;MzsTDFl(re~^UJ z({(|~NBksL3LXUlf~ZMYedKfDZe4F0@RtharT|Cxs7AT}k&ui(h=^xTw%00e5>ye8 zj&ow)zS8ZP;+b3cT_p4h*j?tCEq}F)wYQ4h1fc+Xt`u_Cy}tk6i_cU@I!26NlxD0y zvl#znKKu3aI1Hc-ugLkZkL)KSqB9%yM8D zHk41iHtPRsJlsBH3nWFOS1Y)CGk;+}tuTojlq?E29ertW2AX_@T&@=vP`H|qadQ3nF0U&W#$w9{|1#bTiW>IIUdseJk;kW<-liyvhFtbF?p@v0e>vOkYjID-v z{kfhA9yqp7dDPxMwd;D-RlOF-c#dz)^#z9UggOa6!)C@rjzAC=i7!g-q=(T2I5X6M z!{&Ku4^Q*M`rXUrWhCT2H8@QN@qWg)Z;H*|__N0JxzOENb^l8oi{Jvsr?jy00kmJU zzx2u9PxQ{D?aTV*ZnhD2Za#Cb5^33+$C)MlsduBweidtpCZih_BK-zQsqMH2=g&N3 zQSQ~Le(g+Ku18`aK^2aR2Lar}RQ&JJZ><*)$_7e6 z7)3nvbSeDvewqXJg~SS0i^{&1TKA!0>VWxf8Q$pR4DX{m5LzOWCHGL$NVU_RyHrW= zK0BC&Zm=}v+nHDq6e`CVQW6_XotxiR*FAIIgBtk{+S9{-vi zOuGO68i8g>9g@r{cr{ja-1VA1Gg_cFNcGlB*ePAGLJa^QV^4Px(dUhs@;r)j^VFJa zO9@98wd3|RcQpj@N4ebgY%lbmv8QD(Z27T_p|2RN$}y7Wp&e?L>9wOLYg*e7hF3jw z+zhdorA24ZKP)l)WR)OQ7|x8^SH>LAWN+tOTW~}B)tefwUG|4Pu3dmT-CExs8%bD_ zFpnAsUBV+avfMg{fK|}doFogiNpahC9I(b5sjCUyRznVtoMJ;PSE&u?ah7(LQLaT* zNWktYnH>GYWmjLL_x|y{Ufxyo8p5uk+DsmfjfD5imi-4keQ(={gGQp8A@WY^3bbE> z>yAeg+b;Zp>fc>TE#f!+6vE^i|GlZ!yGpMs^PbxH zg5dMZlE)Q6XJbx#dYquRt>-uIwQ$HEe1ro)aGI-l*$*D7Y&o=A+bRQ|vi!6DRxT&& z8Qy}=p`r<%>eRZOZUFj%i2COvIf$7oEO#k2o7~DKMLMzKfkMj}{@+jE1%PsmFFD-- zM(6m0EyQc3P8Xd5%L6z(ZsCdESHCnt+C1$>oZ&I0nYK@)H+aMV%8E!vcUn&$2xixz zp#?x|I@&7_r>4+FOJyn0vKOL{Sbq4@ux?iUg%Br>+^}?K50Df9bA6Jy+?mkb>ZTTJ z9c43^=Ja*(;~#BHb|H*b0VKPG0@O#nhw-3_cV^kE#ah%l;%^|3Vdl@lI()6Ksklvd z0hYPX^b{vr=GRl66T{6YTRPLV~e!<@h!>lds^06H?m@EzkWb}(oDuWk`(GXKHp0b}RJS9?M!B}Lx z%gEV+mY8x)1`7bnG~6<;L?|14n;;LyK)UiiXHb?!fh~g676O@cN&-f5(ERQl90ND$ z0pSoB$#>UZo9pnRl}lweP4FWIFAJ&@zRRM_RJVSZAR%5qtB?qELoP@voc*a-!zr%; zmf@qvcVRm+Pz1!_Vo9*7Q=_Z5b(d6$&58mXC0r^=N6qp;-LLm4*u!ewclFu78Cx>L zpt)%ut?flOf`rDcFaG&_4hJ;=U>}*-SNc_esS6$)qASwboz&;uFv2O z_r7OENtF%%03-M!INyvwp!-PTBvU^-8%{FNd*c$FjYOBQn`;5jtCo?5Gx* zTKb94Ct{z@(}X59D1qvtZauh35uTQ0Zy&v7tdy`~py^uRsD7t=68*71^!h)&UfWu) zq-N!X1afaHZ%P1tQ1O7oviQcbD}bmbtvuN`LH0t%kE{~}_D&<*T;^$kxMVTO@uns z8LR11cnh?_-i#C&)S8r9=)}V3*`3yJu!k^rXGVBZ=V%a3gXF8=lHTl1cIV}_?w|lV z9fE!1oe0$lzUyL1n|lxoiN{uM&wNB|!?6;}VeiaUhxx)Hu<XN`YBz*VtAQWFth>` zqWiwk(l-bdgFJ{#f(1iKVxxWL?Ic5o6N3$QV!Ks#xOt?jH2{?4U$i1FN5+N zu+tzR3@P6L=+ z%sQ|KL5tXf4Gl9qcFNUiccT?cp?cvJb|E&q09}@Qh4beczERDNS18mtuq?#F+${Ii!U<}eRFr)s!YWyOnq zm|$uwoZYJ%X>5B{c~hxxm41VH(3#9XTWi#6ENzZ(WFwn_Q*%BXjxZwa@*3Dm5J$eB zn?7K^tWtYIz#GY!6{y_EFQ~Vn;&EJp9rt($Qed8~JKac(H@>u*oM&)q`5-E5$N>lv znWp}Ms~vHzBXXBqk!tJs#<3aLUr$!F3!46)_EKp1}lX6>Y z+>`uIX1|KY$Ok`^B_wREZ0``TJUsNc1+{qKr`VaPb)bXyIOTX`0zeN``X>E()%4Wb z%=FL*m5V^j5*?#|-bR(Z;#jw}Iy0GH*Pm>^boNI7&4@h|w@we+8P{V_cE6>1IDHV2 z%G!Uyl9>@E? z!zx@p6xb;nI<|J)udEwGzJpexrTF!*S^D*k!n2p_3nzQ?UKaYu5e)&IM13P>a zCF4_R%CZak2;Va;TIVa(jPL!ltj$s>6#6g*u}LTa!nQvBr$g7t2z{56O_N&7ljO&v zztpD`>B^`VFB=pv)_>mo7&3gru=ekG*ZGmLJU8`a$~P<9^Oqwpr!fKq;>Ig^|D`t& zdG9V{;}vQYt6hvq_U)x|O{0to|7W}BrkjWB7aiIUFYB?hUo1znwT8upyAHo_eK&&$ zPP(+o!r&OWwGF>Fvv}%5SJG+rW_$2KI;M0rq>Bg`R~tL(2~v?PY3^GnA&-P^0_NLYqp2wk z)!MlKa!n8poI%8LC4Z8a{a>~-ICI+?AUE|!z^0P#D2^zTt+@) zq7A3-6d0Fvf&|A!pL!oZ!EZQ5B4k?1Jq-8YHfH!n7z$6A-EDuR^vdj1E83#)RoI;1 z<+RRIhe+`(kGEcUJRSt)=Q#bNobO>&jVy)82=R%W<7OZ}2-~ z@-DpMr#k}tw4u5ECXtl)AEdnqnu0`sKRVE8Q{sR&X|Q9N<^0c*lBgB=XUeCC_cvUa zPNf*ZHmVt$5S+Q{lWOugT`1(I-A~wX=a6z-8KZG&y}AuNP@At#i4#=dB&$o66M922N*-~G7*3C* z{c>YwF&qn`*`NM2GBR(zZj#mi-N2>L_ZZ}U{M@jYap=t{wn+TI%sqf+Jk#l6{ox^z zP*#4H{v=tb4Z05jMWBx%E;ud4D_QEkFK-=X^<)YXZxG zdN)kVsBfsoPuA1>X)T1pbF}+W z4qW;KU(sS{(qWUJ4FbV=kjMSDB`@?^xceg*z46mIaYw0}TzL6T;9zYmXOFw*LYWb? z?4V<%2}xY@wm-!aiDq$wsXT7)m4)@~ETuSII4{M>I=AtbbXMmt^Oy7`h15jh9HqJbjCFp?jZUD{u3Ns_Ih{dke%y zG=zTmk!!e!Q;zTydQYWm0c6?zrR5)UoA?%2N7NNY?cQwL?01un>(wb9km9o~x6s?C zimPg0l#udQA;kP95kVnji~8 ze^RcbX_~!Trje(Bsnh(dy;BZ*$xB{&abY-ffk$(B9PHUFBln<_g{wG7kZOu@gS}L#`LV&GrH*0b3jLiQp+gTyfC8K zhO@Wm6MY7`MOJ_0Z?a{9mKfo@0OIj==XzsG{ftLy5IL=2zHGJ?jDR^eThn1P2+Ad$ zh>Dk{a-A03+8dgms3s7nG{}ZTJaN`5GH`o|CaCi z@>VvC%5NG6nQu4c5Wdv8TkH8t8G}vIpt#TCM`++I{NW)eP8pJM63sN}ZA+q3KXqJW z+-HzsyZgn71W!o@uU~Ieh_n(=Kf6je)JJk~g18f;aCl#(E<~?hlssEr=^jnBUo>8l z9Mg)hKRn^BAJh}28q_l894Q}QZPPl{;^9&)eNws|8?^s&(I0q4o7gVn>avx3aEe>2 zT|TPQvl~3Fr&4?cim#=B9I^UCRO*y zGe$?GG%0@4^&o|c#+`p$?q?-7!OMF%3)5f7uUS^HN{)&~@pjf`i<(m&unAtOhpy~} zhn3a?OWi$alc8t<>wZ1E2g{iT`_}Tc(G8%iZOK{7cHB5}sf8!df=ZRNHSC<5;G@BzbK2NR- zd@P*^hPU^l(@{?4tIU9`D*f2JLnr?LjV_8#*F8X{;R>Q)BEp1+P5)k2BGdn=!^KIE z{<{k^(s~bm$x)ILo9l*Q#e+`1_aX@vX>faW!ab5!aVv@jq1z@%ox?VV333)43{1c= z^rx3|;T}eW$qu*g{f0e-lBokrL#}1hRTE!xlWswgfK)n zzfXVlc=Sh!Z~MOAulMWqd|`~^>|^Fj(~&+RlHpG5E0y)FmdCDJMz`Scop(R9C>YLB ze$M}c^C!HazoDkh74|_(7YhMc!c9F|;+$jl%AK-HaYyka&bdA0Udca~Af-sV`i~?D z9dM4(Gneb1y0awDolms$TTz;+dB$u9R%bq>>51T(d7a+5-66_kSm0ybcF-|swug;e zPV4U6rZ`z~)uM$!@4WY9RQjmGSSH|xhg``qRyK}%Xhcq$&Riwn*RSF798d|gEUg=c zXbls%IYyUlexDH^m^BYC5bg3nx>}JD*VZ=ghEQKTEOT4QYdUz=%g;hyxfn0jaRMp> zW(EL>*pB<-e_Ad9@?YefvA0BNHU9Qsjch!HzNL}AYTj~fVcGU8zTp5E=Ar-m zX{=`0f6!zGQW_MYyt}@anj+v8(^=iC6sIh<&jI$Cu!7j`IQyjW-Z>G*+#&k%+ld;C z)99T zGSggo#=QrSgxwjSgQ9Hif=Ov6Wvi2jA;pCb?!U47Kbd5Yx;13%vQ~&(#)hZGCFGA< zJ3Lcw733YGVN@fXB}t8P?Y(O@M5=$$jxRDjlfRY zr}#&lx;t|h&gdhL@i{z70y^ZF43mA>e`3`#CbPgbzTQjag&Jn&xo7650DN$o-*;~8 zG%eddjAwHYp4@bPARIje_7~BpN7Pkr+uqbH)Z53ovb*a1M=HiwH*bcak)Pcn=49O9 zu0{4*{B!SHTY8}LszF*&s@i~w7J!pq+;>MM*#tg{6`M@Mou22FX8cLq68Q_Mj|!m_ z<>lYIA0+0TCBsAXfJ>U{{0%?-o~?bkdGOhB*Z-in8zww!iR1KdrTbpCwC|y#(rNF+ z(wIn*Tgwq2Exiy_jJp1_Xz>5-($qRz_1#(AtBVI{!#&*{kSs8MX2*a!+!;s0;q()B zz1{0Wnk7b%ailQ&NT=sXGry|jZFEbe&A90OEr_SY`knDVIE3>cB0nrlg3tOnO_h&H ziKVWNk3U=2aFmiebA~0q;U8VDX;H++ePnhPbMNbH3@|91Z1Cf!l_y9Z|2BC`cat=* zJGj1tV5qg0gdRC8U}!YQUF&&lwj#55#7=QFxRO@BcO`^>TV{e2kAjPdZ&2L^XPfdj z4Ve>}i-1xaed~O$StAk6fIvmv5_~TK1T6<%UJBdo{D;kyZ`Aph3e^}e=s*4i;UHjp zs+M~1}4KLbL{ZrnskEe(smkhUQ@ia$k%l->3NK zi`x&W2Q1N(WEmK1-`O@7og{{5k98X$i%(+@DnjrDF*)ADT5o<--0?SHAVPm6{2t_C zY|eNirYwQTnYujfk6)w<^6gFqS4rlMq2Wa#CX;iY?J?t1-!uQ2+=@Ni06`)$5%8v* zs$A=OixLq(L`jR6WV&p+&uF5wn!GK#0iVxryMjE#@4nj{*Xq0ymSsnr`a6)AcFTD6 zL|f5d6-tXWj1!A~hr(tvq70fii~ju5L(#{31DJ_c3EAX$PaMwe>v_qE@%KgMmz%JJ z@>6Km*jp=uJA3PjQxgO6+C5mM_;;$Sy6Qi|q7doqlJD!sFJpDrrT*n&vgMXuf#u|X z(7~t%$`4;yhzh{Iw|ho${YdECMk0^h)sezAU7@i zr4rZ?&(&=W=qg)v`T-Rw?CM;ztwiC{3WG_*5znA4yR4y!Q79wY;(jPKAk=oyaIERgUgPjtK=~||JE+?LP zmjg5FTgY1dBej{?Fju4rssSd)1t{OUd&|z8f3UE6TmVX>oU%GZsseh9unH=k<%tWt z4iIvN+1~N&cx>r6QmeC9z_HN)7ph3jL%s-gIdTJlIAC}$=aM|6TO%#CE*re*wlwiHM&#=g#%T1gy&QDXDs}MA4 z{`7YqeTK-)*u?;RqELkb4Wb4NIWgoKK$wgBe7eUpG!@^x{eV|%KC%Z;u@BV`M z;;Ae|R>0Z>+#mq2w(d@h`oeN)HKMkTaRxe*z~RcoIK$fxVn@OOkHG~BR#gmKD(Pc2 zBRZ7D##vH2e4M%_RXqB|-KE*V2hrxC99wl?e7k8jvq1(BGslxS3*KR8VbLFI=z(2! z#rK00{4SGa<((M}J!V?md5bSDGpPrQSn3B-zi<&Z|1tAIV2>eK_PS^$0t2c7pyxYm zV!Em)A~x>|(_i^9?U}v-Yxp}0wT_L{Z(Q<$AMob}O)5V-OMX|^kn+W%$M|r_WYg{2 zZ)XGVG_2+tC?WpeW)48Ym&zO!%WDY`+C?5=2WxC>HOLy3-d{h&PJ9g>4oq&whDdx; zSLdzFL`t-y-xDnuBGER<<^1Fxh9^K1?9}zuHDvz*29qyX zQ2r#Z?5i2VF<|l-dUSPtO<{q6|N<~@**=3;p!nC z@FYPwe29&Jz~AptXd5V)7srRR-MEJSZWJGYN+#ojpTJCai);0y>LA&o=}k zIKu7+GpQvvq$n*nio5h|yGOeZPX-?Cf2nIfJ6)jJ`l@C8a_OSx>lv$dbToGL(#F&Y zwnHEk>v!b}nu>#Y!}*KxRVbDjz0kgxKH+^mbr$BCg#sS%W*3P?w?3+9OEIy`(D8PW#;zI`)dA z%I7pEfZ{Ksku3MBkw;XMFpmb=qH-$jS%v|N%KkC>U8FP+#-4TT`_ z@ho-}?C2jS8TRmDV9ou*!m?z;_GEDztL4jXiuUTM{`dfR4evGr_()gGBEN3V|Me8e z5U(5ohB1Ts?U%pBC$q5;*{3Z>n^kzdjV&gWnw1#e%FF3B@o0M;k|ZEO5K&CeC9UDT zG!z+j<;SDEik*&zMO28(WZ*r7eR}7^FhclOG@d!N8oTGI#SZ0AxQ(Zr*?iLf+DoISgXx@NjAiL6HV(IDLSl_|p%$#Nv2kkL1M!soWd7J2-Ctf@ zZ4~2ST`I--BPG?rd7EvfYaVei)8oVaJ--GxAS@fq(l3Kalmd*w?Pen%e>1MgyG~py z0M2|w`QGUzWhwlldD$ud)P<{~E&~t73XVU8Sl|8WSG}_}8Z3`6+?`vLrB~xpjeLkC zqW+>-U;NN1n|MCjC3DoM+S=kOy#6(ZBkY}`YPQM4+rJ>s$b}!;?WL&M<-gxprfT`V z(-!*k7m~fp!!X27kq-&Qi3GSVM5+C1+`V5?s~=@+x)}Z4Em%tMf^zotCoZ1NBSBBR zFJoGkG=DQPPUR!duAVvA(kdC@QLMY(=YKwsL|1G6T1Z+>Ff8BiSuniqC|+KFoE8Fo zdwG{f_0AF7=rEpgl={vmN^BYJQ3X#_@X7eiQ?;D$=7jUvM9{`Yr zp28%CtIvmXOW~q6TNWqL%6dYK*Y3>Itgy&B1N%GmnRvu|@cPX#A0BKgcfpy~eed0k zuJ}*1T1yWrXV=& zWxUV(mWeFHe!!1RJYoS*4|FbY1nuioLJ3|p#oPyL%v9!&U=Hh8XP5sr$$)wo@QBj%&qqk-;0yIuX1FWjL&zqXf4xlk<&gf;Z zWnm6N?dF;}eTumq{0|-7P=lKGxJvI+KlXC}H(J|Zj)ayp=@#c1Z<7989$3etO2+d; zJv!@e>bkj|inzz~{@xw;t%NG^88D2=2_c%_E953bF9iQY3coLgqjopR&P{|)Y~{k| z#&@~(w>9@CcLGeMdUP>;19NR7$>2XIm4f8v!Lv>qxzJoxLG#00nTploI1eijD!<+H zpHQ7`laZao(_3{K`vrblTAuA15~nHyDse_x)C+2OJj_*sn6syAwy<@dQ`?dI+15!* zmx>SgYMg0y2+VZT2+NyqCKVH(+XK&m0!d5@*_@K`fr9o{7GE@ts4%+b<7Vx0<`N`Z z^VPXv!~>$xNN=HS%{~u(z&FVF(kpYR_OQNtphx^9)ntH|Rrx4!*Osqb*k=GeBGF@g zz@VW0eSbP)Z}r0{-8}pyFgzrmxpV->x(b=%zS>8Y^q%-pRMswqz1qpeqm_>~-9PV! zvc5f>%%rY`gFUXcFkxx2$Y7vz^0b<#5m?IZF2!$QLw_ko)oyj5@{wPd-~=tPv$hmd zV)AV?=@4>!ii*S#;mWt*0Uu;gWtoc8qXL&~dwf-at&X>!1ZWG`NiepVEe`xb zx8-E^<=a+CnFA@zQ{kPb{};K1tvB2qAu^)UmX(g0yT3A+Lsw73Kl!@HpM@L}xjf9S z6q30W8hmrtIox6dpnfunuUhc@4Pp(>LY5_@Vm{;lNFu@4G{m zXe$9}u??aCw35EwSgPG$TXIJK2H9|jx1XC$qkkf3Sccd-F(_e{e(jf-7+*N2D~SeD z^gl#p3WIJarST|vtfi%JNoqLe^*X6)5-Sgr%D|q=Zn23F3P9y1JmwPNhi}FjP%zcu zJFzyS@EcIqi-csSEa+22SS=nhb(C(Gn<2?!X0x>$!_(K@sS3KcbBAtt6ts~MvG?Jp z#cm7p9dI-fVIXBrOzb_iQ-J4AyP&jm&|Mv}2autessj7j_WkXe^_JnrY7yy7Hlhn0 z9#H30*lyvmnX85?F|JNNQDXq1!K_KkKKkAB3*b3)G8f{k3r;*BM{d*1plM(M%U+${ z&k4(I6GVX8iPr|UX{<$G1^kb7>?rI?LN-wKoG;?fBtirooVicHSgjh{uEhE5U*A zL5v75@0_jTs)@@>){5IiTp@DI14at$GN^*!S8-zn54L@^V3WdzTROLZvM)vyLMbXT zZ3oM=cYJIITtyHD$?#I;gtx?~_;n!JsXp!DKHCef4#K=~U(3CIY*6A<2?gRW6(XlQ zlE22p#M}L4Q@;(A^Y)4juYbB3awH;W(Pf-BR8!nw5`I@)ngHrjb(0b!AqU`Sz&YYq z{a1?ga;Lk~#+H0-QCuBnFPFZc3#lzWy62(K62HIc_+0W&xD~_0@WgQk-(Sw(UGQ+J zI_ZAbaWxKnDjDWq76Hn;l&(AV?@Rcsf5X1*!LDlCPK} z@pAV?e?%(EX$e3;IMPB2h4uWz`PoP8+&QH|R;_H039eV{*E(=R)+6xCj@;te$INbR zAOw?sDk`YU+IgcNaL~ORJszx~-AROn_rUY1R>tzM6O34;q2yb!KS90K{}k1D0Yt&~ zx0P8ms6O;Id|-qkt(gff#R~Jlo!KetTce+)({ZG)eWx{8vY0b65iq&*xCCT!vvD$# zEF}Z`KToqJiKm$jZC*NQLjB4K7nYr<^e&}M$GcQ1+&SUQpn$hlqP)Zwa`@YgrVgTmM) z;7+DHB;@#4zkM8~&xj&Ebiu8dJFZOJW5g;7|AUBqB?&h#T2_|Q;-^XD4a-XfE>k&` zM_`2WQ(P2e4_q??D&Cv(+MW{^qlc`#oy$*jW+kWC*{C{%mqcpC(q+{k)N<=F&TXL1 zCWsB#K?N;n?}zav98~Zhlkk;+^~+1Fl@MsYB@J9e0aDoeILLtx-?Zxh1z~FyQ|tI# zS=aKcTV&ioBHAgi>$zE^S|(~g00nP&G6eYKo3u?6te&`@X0Ve(!Jt~1*`aJEw|HAk zp(g4_0gFFZR&IEeqWxRb=mi1%>f$x;o(#0J<{xB#hKs{LJM7aE+H!SF&(!#%?(NWd z*tMS&bj3<}h>#3_# zU(3qlVa_~ej~B8Q)c*RPKjR0^*nV^Q z`q31j_xDSNx7{SqZfp)bEq=?5i_-rL+f3KB^5HdQHe)CiqzP)|fj}Iz!{tLGv1`m# zHz?5TOnOD%9&VsO@jNEJR@7vie&5kIdiUY=M%M{E8FyOvG}g!HO(kmiFJ1cDmCsqH zT~Y`tT$EFEJ8NnF<5hb9-g~-1>20-JJ7Qz}g4Pg|`FbZ?+om(SXWYNf6mO$l@(RBrYtV1mG z`yQKAnF~)Fm|c#%`rEE<`blf=qy==>*%~ac>LNN{GTiks37~3;Om*HQ2t=rU6L62EwQ;~liXXr>oEr`5lhZSK2@lq6ychPxWt0&akC-i1jYDt7 zXSh(tzR+IvejsC8e$@L$y)p>2URz_-utr$ZY%eP@9=Ocyf1-4#5m)QNw6XFseNwTp z?K<8wXu`|svU&L%Zz!^aAE>kbMqW>)MPh>HDZQjtF~CV#VJeF13Jc4 z_&nBo!C%P605)kNX=+?qiV?vjxDK4=SGP$S@EJqx#l-d%|QSBPX zy+?qZi>*SE@v81^AONIk>->_h{&PW0hc_Gtm{7W^Xt8mbV^DZPiGxw@h$sBdg4g+6 z`4eyBnUHW7f>7WC<1RN<2fWK*)F7%=@-c`ZL0eOfg3|aFLXZ)6ow{q+<`4yP*_~yC z*9H7K+JRX^xF&NEzjA_YRzrVgx<(5eFL!f)10%$CGSgz92&f(H zKI*xUW&$s_E0*h!5EXVwBIfrFc*PDW9t`)p5$YU16OV=lno__H|&29-KJV9jFTh z1%Z%K+87mY5VN#@;gPtV>+lCubq7r7dp|9J|+4(${sEmTcRo#&zRl|8IkW6^xIe2hQ2O`}f8dGH$5@ zHqmjZwOC=y;V$_-+P@mABkHjm;G)n#s(!;tcZ11c%XVXbW^8!*t}6Ik1?pC~W}?X8 zik8bHI^@nS6n#ntb7N60b=hvn#&(MPDCiWJG`F#`o{?W#@?(%J{rPD(RSjoX?P?XH zi_d@ovN?Vdd<;XM#8e2oeAcJdFd$I(sT?k}M_nvcSa5_z+zu6KdfS_#`s1bP>Al83 z_`Ix->mhT`wgmtw_UwCV@cb!&Hg5EkIATP8)MoS{kQg86y3v9cXt#SWDof?3A6dD( z0GrOM>pr_O2IMgbf_(cG;I2D#!EeHoQ!yc5Sn@4}2Dx0&%xi@^U!O`U)Vj9y-wK-q z=dpdh5XmPB+@&8_Seck4x}W4Fl|ZHhSGR$jFm!?!D?=4uZENkP`=|8e@ zZszBPEgtZPb(Ix@f~Y{J@1N48F&XMkVNO-++QR`3J=XV$^dNH_IdbD9Sm9WeKzG# zpJ$&Z++h#8Xa>;UE+dTAr>}cgOYFDHU4;2qMKwoDx|E{mhn%b(ulTM{Bp-2z>f=<> zTxpnb&KG8P#3#1F<;PdEWq~_Jo=|0B>fzR)aF4-i#vmMxeAj(4M)6y~$eC}YniQgH zkg(K!xAt~I8p4E9-)>9Ql<;d)oEHt|kLZyv+ zc&w>qB{IV84VF90^jNcjm11UBnu3aMZfS+9#Vq%;6^0`n^L8aFe?uB3iHL+Ia6Y=1 zn{v#x%r7msOJI}Rc)obM3Aw@K=ivd(y|3Q7xnC78#E_kq6NF}MB@rsO_UKT_2$E`o zcROEx#%-LN+<=Ftt=2D2Vj2I_gZ}EZ&LOE9*b6C?dULvGaM;q-#v8}iGyWR?)KY2E zcJ+E|gM1tGg$8}PbGU#Q-Cuom$n4#HwRP?p{^=3hcX7cg9yqq=s@~JAlU01lkmQcO z^U6h-&IIc4j$ta=Mq`CEclSuErok?*w0t2!a-#WGj>e32W2@>mr`qMaE@zN+k@)lo z9vVS2h3zS@SRoR^aGHx04`c3}Z21%0OYU}$#i=O^y|@y!9DdG2n)>GX#pcbwZDv@1 z!t*d9!{bTgG~vfT#_yK?BlHY2whW5gEa%tCg&IoZ*;arlv}Fbow|E+#%pJW|I3ccI zl*89-DvZB!>9e(XWNM#BE4>ADU##JV!84a)J1dYQp8^U=VISsOfJ3^V40=@`nY*Cc zA`jBeV8q$4#Kih#kcB(-9w|~AlKQX8G7Gx&&F&<=&@}@^?msGen;GP>jA%Ssm~DNM zkondf9e<|3ji(XHjYZdfKC5D4}5$n zuz!rIW1Re(LEu%waxDp3DiEvZer^l+8z5jRf4Vd}%6Qjz$x)M7sB0HyhjUgA{%>s| zh2iFGzss-!O8H_%y}U)E856)NC?DO!ug7duA+;d3&MEYNU|!_Di4=_b3;1>A?{DiZ zhBlNQO59Jgp*VEFZ?YEi;Fe@fWXVa>8cM3#J(eV}n>te5&oMpPS+@&K-DKZ^ebKa8S zZek)*7DA>(0=i}}-F~V2+MB5Slb_Zf>^r;-YNy#w!j|vZJPkjP%$(sRmW#9sMx7!W5Q~xev0X6lT>ka8yW}A}I|lx)j#r;*m2GXN=K^9CnDL2yMk!^`gvp$U zL~roG6=V!bjw{($1k(7R&QVtedTPoSH8IFq-I1Yx2;AhsF0xOH9hararfyU*> zNxJPw_}r`QM%PWgNxu82)LjUz1a1P(`&;Zo#Oi>~32~_l<$E!RVYAhY4Rda?vcWqI z&79h`t|kX-d=ai&JaX#|N>87%G7DnlVT+z(Jb$s%FniTEYAWTx4;hiXa3}jFG^d=R zuDRNG*ct30>-I@LItjX7$QX=B(;p8CPJk-kuihqjI2Da--VvtWfiXsLWobV%&vq5W zLO|1SvFH`XMj-5xDC$3@&EjqElF3tiu8(ddRyDI%)3xL%h$K4*bZS8#)6cf^O}Fz- zCdP!r@M$sXgJM-qcTlkN@5inbWCfRdpM#wZLc!eKWV|arDh6&*lRniym6n+U?7=Lq8Gncjs}^9g4va`&=kL4@G(_%pV=J$w8IL`;z>JabUECl zE*$6(_+>LhNVhliLeLlt+xKi*r+1iX1MxW%IJ&XKsi5HQOGS~#$;6prQ>Tu+j0ymoJs*0}3v@FL`s#nl6(RNZq5a zI3r4YL8Nd&6`CP>46lhsz5Lg!(lM^lc0)xS94cBbrt%BMMaTq@s|QNJyP#1uxlcO8 zsxne>K;mI$H9x7N1A23$njEYTGwI8^>*I#qq3-^~_NOKy;HS~Li64SHJ;&HPV7i}M3H6SZn%X``N zBs<&~bp@1Ey9ZJ+0gn=4ryxztI5#e&7;3O;z#IC}(o0{7QTLM<|IWj4cm<#MjEMe9ijev+{b3I*~&RhGD9 zEhmxM3dfRF*c&3=_A?(}Bdkli@OrUR$BR?7?OjhTFou^H+E!=3m~1&n2JpNe`x6h1 zHbLH#E2QzIctHnz13n{K|5?cBPOUu_kh*L&rYrmw+P%W?8nD46-Z}C})|({gP#IzJ zGYdvQRBZqeh`%^sI~yUcR=-u(8#l0%a(1$2G5W_Krw~qHklWER&*p)kDShOW7i06fH|k(GY#SFxBqXIr$7m0wnwi3$R9L2lO)hi zk3WdO6`OlHZ}UFxt(#}euSOUYq|Jy%vz~j5GFv2!C=dw(txUGos%j0Bxg^I+Ky5C~ zjsM(k+Z(SB-1vg?%CVkbjZ9vf({%A1{-R>pjBT&gmhz!RmA;V%PinVfwnvq^F@}nh z+DCjJ*~rt|T-uQekQF?#XVXaQehE>8`>BLyNj0^r)CQ3KD+58QMI-|FHKSv+kN|8Wa5R19#69Z*@G^JA&J@ zju*qGD#sT!=?7o)9@hPkItmGF&Qcnt8rvAn8l0;4>s~k9y|7}t$MKQF zI-49i!ZO-;wyR#TJQi8Sy%jjC*}O|-(0yc;l@Fb8(AX4)=3?5s2Ne&klZIy}e8>md z%1*^tpaK5i*Ue3Lp$1NTKxKQlSal}BAgNzi^`3qz7=^90;7&9U=kyb_r>Gj+nvv_% zh_!farJ+1Oel#+`J{5!lnenE|L#hDd4IFXg#un!i$HIt{nD%Q0LwM_zn0I)+Or|Nm=9p-> zhhjfBU+no_fBf0?i+!(^V~uYK8ymgK(#!|Z-U+j5v+vfQh#x9uN**R;dquPwWrkO` z*&MKzbcsg3#y>`jO^Y+A`Wo#BCB6%?$aq;1z{(!mbJNsSM;EUXr8=9|%r49syyELk zNVFZ>=RA&|Xh8^vOV6tOw$dG@?@sFT$^ni5hse|{t!jfC(&mi$xR+|mDE=;lXzzy}I^UqGs4qlLPx z8$AdtfslqnigDD*=6As8>2`ibe!i7ZssGmDkKd#%ql~C_=JG$jXDHlZ`&PCJhd=B% zoz`==5a~%AB}r%8PqZf@vXIQ~y4`^&|FFABiSQnQezxxvYtBE}(Q--dE&s^o)3X7!yOA29QZ%&W8-_KWVGXf=AuSYD5JHc=y$SIJ42+*7 zbb)gB-pfmiH3ZNdd^SYA5uhzD#n=UIosmZ3?4Z16`-??{IoX((mCfOGUh6(- z(!v=LT-owj*x|n`Bf=*?Y|YG^GnxAnrhWSt=_5CffwsDoG#?w=#gyHrYWsTIq_Ran z4@jWn9-0EJ2@=N4mGrqL%?JdSR68(aLSV@jTLB1NaRbRXG2S{+%YE?5ldnE-;2l!UK1Y7`_^gRm%CDI+^{mV4LUrA|NY|B zK2^@d7|n!R)`x7I0xq6(D=XIb{SD15p|n%k3Ks?LAzsLO0vXRc##cdIV%o}EN)+yR z@uhZ$E{3c8uK1xT;VMEE-bHx@ArSEX$B2g;>Jh@K+g8-2uIn$78WCKkP`sQEU0~I8 z&Y48w6dc-#+y83F#@Wsi-51gA)&-+f%#RPK209a*OJ_YsX;wSF!N${o5SmABFa~qV zxKCk@1-QGcy*7+(53ynLm3H+noK7Y+0J( zo#hDN!%xm$*4ZK5_O8RAMp6C@Qq^j(YHhavbgPQ@fs&x9g6V23V5#f8`ke&j>3>b|?~9>S@`Xt|e<@AI`4pl@T}RkN-H+!jOpp8SAx z7iZJ2?skw(uH0IF+Vh}!16a#Rc6ogwRHSyYYDCefagOm4Onl+QL$iiIgHs2c3rZl3 z%0VHOS#`Tmn%NPUGz=8oyFtfVJhm>o&yJ6G=DmwVN#%e>F}C{0b<`f>UqO?m*pXa# zqWfO9$1>2-A4Y0dKp@9;o~Y?1hxdRRd%0WZyO~&CQ<}G8FJc((3^ZmFMz6<&m)}Xv z##v%FQHx@@!V?FdT{Eb0<`=4?uL!A)vPEBLeZ|o*_W+;2 zu+_Pqt&*OC6U_p{ps04%XZM*x)fNJ$rA6kfcxGmP0K$?LJ$Qg1eo>Ic_Gm|jJtM7N zgaRhp?v8bVZRgiqe7d?d&HY5y`k|c+5rqQAE5`_t#`>1F2|u%xIR;{v&ah$0 zzPK9@1K|Q{^GvtBT8|Ce-=eCVTk^dWxQWgyHn9HU{JVGFjiz53CVC7^}g3#B_> zbA!%H<+7y?HaCmFMgm>)W9i|>%?p7iUnHeBpxsGgFY2!Jmrh=MA=d_JC|X?FUyX3M zu31DBElPfmx8WU2{+xJ^Z9TrKdk^Mk@sDLv`a`rguARy2ooij*1zjx&&yD|n%G;?1 zzSwoSvHG3&5QQnm$0np&dH8G9Z*#+hg6Vv`tEti`Z-Zje-C$VqfUs^My6=MoUpc{9 z`Y4d=oG`}<);GvNe%Wr(*xJkUSTAmW1_R@m*k;P2%il}kOsm}t zc23LS!i^VPUL5Qvmiw>sW@Lm=!HrRX1D!Tk)h_gqzNh2r@oNO%(gR+y(a$WQ4J9U= zy!^}*)^NSM%+E5FU@9wu)o62rP10z~tj5Ph5hRQDkr~-Tq~m;}bBV{HB z8QJ69L!KwUwVOC{^pjf}3Fi|fGfY#i_+8v9GHp!HtaX!BNiV-#qIZX@hN6U=WH)HO zVPaJms@cAiP(v*6>la+aeJtA7X?l3kq|oW9G*%dLwC#*)&Sl|-YDJH}^Y4d3&)?AX z1kGm>@7JI>5utu!Ywq%c^gB^f`hU>1v9>Ej5T(EGR)%tqVGQ&Ny8Xf{MhfRiZKO^O8z6?X)bC9^u4i|?| zFXV9=c6HB5(e6hw_2;I=3jYP7Oj|&u#e+I`lZDPD@3W z0TfwB--^Tifrh!4K!z#R(ex}@57XFeU2tKXs@=5Cu3sftvbSRY_sq_#4tNEEcy}s4 zroZZnAjn)GtHjTk-N!}xb1%P?eWFNcXSI#>O1#Yphv^weiBo-{uJI%4*XcU$eYNxb z3}n+b)_{(^a!Y25=8-)QM{!tsLv?82`zxrgY42>bc|eF9%ijgvn{nHzg_oT}$E7J; zU&?h-tMO~aSmM$relKa|vjP~Y3k_eFsu8X)?q1lYHJt%-l7Tn%S=X`;Bydo3jCTae z-V{81rif@TT%wsO5NBAiY9bb1dAxqs6l!4zX(hpVSg!wlie~ye(8d}mD0fVI!6wjs9T%Ji;8H4DLDt=X zVpb!Y9KGdOzBgX?`-}Ay@t_!(E!9!#F>{@dyALv#cFD7j^JvE90AaF1KcotG>LE9JtB=ww9XU@xqH`6D;nM#OK>g@%^95;JP`&%!4Q zE*s|hCN?gpuzCn!&f78Ja6=NhKk;Qv0LXqw_jBs-g_0PTx)6f?vlTUnd}A}!pg|L! zj=`c_#(N&v8AOR4gE}7$*-9R|dqEpOsl*gVXlDNnq%r>56(>u#LdVAVKAJF=V-!F% zUT>T;Ca3p5#7NeV;LV$R&)CwKn2sGIp1xFPD{yQ@mc1ESXZeN!;qyrvt@8QRfDRhX zN;ejrl?(7bAQh+Op_Iv04}{DINGQz8cVv+#BxP`)4cz_dYAee4Y( z7QN?jgnU=^0jaD|R=)W0D#V#;_I7b;2t~2u;!I&}draXDhcarHB{X}@GwQHLcuzOD zTlgjo>)Xd)tTEal6!UrRx{xC6jPz)vbCdy6qS%Mp7$6Aurdf}@zj@Z#A;&`K{lJbV zRSZ+k!aPQ7xk6ESymGE@#_ZOp+l4$nj1Vl?4*&KsKg!3S&y`;^5cry+zHr;v>1(tb z7Nlp`nA|6C=0f8_1~v)rJdyLPXzohD?6cCOk;kcy-(ZqJ>Y9HOA~eK+Oa3H5^1zG; z7ocP242Hcf80(Ba4-_oTi7p%~v~vEMO@a@XK(^Qurzo+VH_bJZ77Yp%Dz|IQci2}p ztNaJ~bv?G*X~J&-AP@q<+9Z=3FYNwmdVMsW?uI-$C3N0C6M{5MZ(Q&85u& z`1|lg44A%&XHg!KOOjAjg8i<>MNhaRS{l;{pGDixz1@yo^geEN7G|4{IN5hIWP73& zt6e?5RB(+*)NCVtM$lrqJjc33CxP)IVS}TA(x&W3G2c5~o;=! z@N@eFQ1--Dcc@@E@UrInMs9_@sciU)DBbs~VaWL}8Wzoy%&vmhi`|()FO7Hi)e;|i zyJW=GV!AdjGn6(}8_hy$#Jqe;8k7dDS$K(Zgd zMknFZONA$gZIa=&t5r3oG&dxvrP;P%zsn0VlN=cq&+1urwucTLgtU;&9x^VFLkqlA zvWY?@S4KDq6$ENUP(zTWxd9j9x` zz=7>!{@4HhHm0jExdyVK8wWO?tT-9LX%&-XW%#&|7VUo*@FZVIzcN!2-@EL-DYrj& z=g_!d-JHUZQ;1OMa3XH@9(*B~Tv`Q5!ujzF%mke;>#*mCc6*xewtl@|b2>ZRhC0Fb zxju~xx8+)YW?&M|g`C)mb}{BuC69Ro$}|t;P?;TpQ^5$h@=r6503Ect`p5YF1s9t0 z*Fz3Tfri^%TyQ9t))U@)4Obtl7;1;PPRJ^qz|4VqGp!bZ^J|pIJZ>G_Cvpfsy!=$a z91;Xb>@qw}`Ga}+?zmF`k1QMF+(6xfW;dO#Jkt5%_>O~S`1`k;ceW1Ls9PZ&LD?8;)=@mveiXO4Wx#V>@+9O> ztCu$|b**vud0D<*Au56^RhXQe0|yB&|Lfw{kJIG>Dcg#KP@P-qP$eOMQT%#r%>rA$#Z0dI;IiV=IJc7(t8WFrzn=cY-zy!QGu=7jb7*{1tok;#-BIaK7(E*1yUin6Qr2I0&n@LQpWcMWoK-qKNh z?84=MtwGCI5KQ)b;X1hV-t(#Yr$Uu|_if3udvmgm%_Eh#$ok6kS%FO+JutBXL0?|r zbZ6_tBfI)hk^zpzX;48%&t`psWGn~jNic0xE_bxLq_bunao_!v#|T>0hwIhafH^ocNpbKwaJ9O&c+_T^9 zyyiMJH1DsRq-(v*`UOMi9{OBCPX@E+-=Bnk^;YML;B^<{su?$|5vioqm<-Od2g_-u zI3=%8X!R46e~e;W>Z>1KD44%Jb21ngK2TQI>J&+yYMTD_^;**8dRix7Yj6&XHGsa$ zWI6Ro5uK`aM;Ga=;l3-?;*NlT;hMUWgoKs;%HI!OsaB&DxH`_a zuNR3-A6f;dKw@SrsN2%7*}`>nyoMMbk;#%a-njSHkry{eiv~$39Oj|-&VYRaKCWEg zlka1j>UYH~=S5PPoh&f7XwDOb=Zj1VJ0bIjjO`P9TsgWC>C1hFq?9u+kmxdhpYJD+ z-cHuu=hl*iJ3AHZXGw}G|K}^=Th)PmWmbDH@(f6XFSOL65&12Vg4^(jG z+n3Y%Azdv^(fQp*yUQi`CEeFKV~>sLPqDlG7jJVc$6opwfaH-*I#ek`@%1av5%H6S zK39xS`Io+=^sxsIpv02Aq;{^NT9u8^Bi38YvZwX_)xe(WLQ5HMSLR(s?`3Bu88`Pt zYgn}aECd3oKGkV2UgSy(>G2>#!MZgG42F&8yiG>wx)Mj^O7CBsXR|}hQ{>0%=pX%G ze~*CT8$n!1awLeT^je1eyg!o=%g;?99jmwHAFrzgY23xcMdzMsc@3#b#%6Dqou7EaoJ(9a zg&}xn6JDeb7_t|t=0-doOl{q8PBZs94xzug2OA5M&c7X{Z^R_PedCSCJ!l-4<3%G8 z=+esgMXuP;rjL%sVISOIPUk~&q$pjctY%>@XRq#L`q!-Lg58i8qhocMS z*&%2pCvW*;rD6ePtWHmK;&@d8S&4|G6@^agbbzgh!(F+0Xes$f(5bI%6rcgxgvldVBWf^vtISjyV1G1`Ds z*v-h$aER<*tUN9B#G9CyIQDWM=_Ty|H9Fv7EhogZW6V^}H9Nw6?&^|ZAT?d?;|k=_ z1qe`&gIcw6z6G^{47?N_G@d%+=j(F)_&_#9pcDsoiH__85};Ww9I30#-i`PQHmG|y z%Q7*1ad@sUFEWPsiF(s@Y~ZUpw3B345Wn~wj-3wp3GoCFt8O?GN%m~(2bB(voqQA8 zZTR@Yt6eXNz9ibu?AOH_%Re0@#$`v2wOP*NyJhfvAjk&D zr0>CavT%!UKoZ_i=9CH9K0;fsR)(&&);v$p+ADF|3#u}EHy$qxAdB;Xj9x=Bb#L1aJ1u)Eolx0*D)cDI zB>`k++-)k(D;@TRU2o)uLpREjNUtv!DRc;yQe$c6GiYGK|j21VxLHfk`BT*6oT1>bWOb6xAW

    Bv*Al^xFfPkF137pHJsOs9<>?=s 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 aJBNwjC9&DH+$sB^eMFFs%dr37>;DIyJ68k% literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg b/libs/Cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg new file mode 100644 index 0000000000000000000000000000000000000000..251e07cd5adf4b639da448342d07e35fcfaf7678 GIT binary patch literal 168829 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 z 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

    NFB2oW+pI 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg b/libs/Cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d6d86c2a4b67ff402595b963b6cb94840030a26d GIT binary patch literal 168640 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 z%0D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∾fTt&zE$yU&H>_V!N8!yF(XwukL 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 z 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/airfield.png b/libs/Cesium/Assets/Textures/maki/airfield.png new file mode 100644 index 0000000000000000000000000000000000000000..b7746842450337edd3077787e78714d54613eac1 GIT binary patch literal 1188 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 Ef)m}|HUIzs literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/alcohol-shop.png b/libs/Cesium/Assets/Textures/maki/alcohol-shop.png new file mode 100644 index 0000000000000000000000000000000000000000..b75a5d9eaa9f28c1903123abfb7e53f381abe74e GIT binary patch literal 1293 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 FV1ko^?Tr8c literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/art-gallery.png b/libs/Cesium/Assets/Textures/maki/art-gallery.png new file mode 100644 index 0000000000000000000000000000000000000000..a663512ef383476c5371146562eb372718a0936d GIT binary patch literal 3159 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/bank.png b/libs/Cesium/Assets/Textures/maki/bank.png new file mode 100644 index 0000000000000000000000000000000000000000..a67cee06eb706317409be669ca47654565aca264 GIT binary patch literal 936 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49vEkE{-7;x8BZ;^$1RsIDVa7R8XW;P$JMJ zJa$S#S+K~ZZBf}bRisT8`k0BnVa{K6K|H5Pg7+Z5T4O-?B&pPJrQK4BPUfBFuI5fX z@7Ut5nQbLj zwE=b4IntjL%1$|A`EW`>$g3T%GS}6H%;GTXkK#x=X%DLDzKcZ8bqqtJ7N>`^j zmz`g~&_eX_o(;C~2OcI#>+9&;>2O=TZ{|!%`xnW1dGFGUX6^}EvTbX9_x{igS>_V* z^80V!xbfp++GgG8wbyv29MPYC`s>!^%b#a5GWsRXcdZM_{BL1qR(3ycd;Ri;wu$dv zy{cNbcJrGbSF_kcp7XELynNxpht5Tk-7=n&Hb%VJ=GGK@w&C*6=2thC_5_+d=44?~ zz7?5pQct3Yd7{S?#-m2<+qP{p&*qYlk*V?7c;?{y@B5t@m;@RcdKDbzntlELoxQ!i zUEZm3$K7}5cd@Q$jj)m1f2?%&r;imj@&XMEED8*a91buIcR61JL1?$3M*pv0zw~3e z9z+Si6(FfaVTy=exN=40^@|r3OWVJF`*z)Iwyx_#UI7CGgAXq6doxO%=kxzkWMCAL zW8_%DvUcs-e0O(u=GU#)U)TPR=YH|-om}Mk^8G6xDFGc~;M(x&o1wk^`>V~bx)qq} zLcAQ()1Q0qU4PLdDk^H3ukeDfEw9e*viceM@|uC_9=F32{_j7uRYC6tb%!1nWR#VC3!8XaJU#XK{W;n9R~tG&3EE#Uk9ySpymVO!_+$xbtytlqqd{9MhFa(M5dk2(ICDN~NOzPZjM kb3*nrCvxhYaO#FVdQ&MBb@0JrL$(*X{S~Knx0v0)W;cxF|w$-$6+@4;P?$So8C~z!E%zlK?>W&+mZxaolDU< z-fx}b4eV-*ON+5CRdz7C7Z&S+P>P(8180KrA(?pdV#=vQx8|BxoI8A|yrC~&Si@A( zc1}?an!sl9Dk_CSwq~EfV3Z{^mCCxR%KWH7olg}1o~M?-H>QxmzM0_4 z=P*2wW>>m@gYO|Sy5vVhaX@&NB3Qh5BRwcIv`I@{{l)0?^p3mn{T)M+@9YyAZBI7h z_`0>N?d+AfxR*AzwtR74U*B0viSyIK=;P(uupF1*Y&L# zu#da(JR3I!2@DLJg+xK;SK2dwc_uS7G7<*Jd_vhu*%_lGhlMd%E~yGKl9LcV19#y@lT(2 zgXQLbr95!!>B*Zy&dL`u2_GgVlAS!cb#--TVS;GZk&ms#JZEkK79*vxQ zO;z4P1UsU5Rw4$2Q6wcOYKhF>;5IhuE+kTQ=6S8_>hIPZ-xMHALi9|qj@o+zeq09! zhj=-gJ*gz0Zh$r*t(@6j@+n zZvHk}Qan0}do|8My-hdNJp62#n(%z(3@eEu;ffs>O{gsBp@ySW?YTr536aUzdYxoC~pui4x(wx>6kX=D;Zf-meuQ%9R z)V~NfKI-~mbo6Ttqcw*P>=BKv4u#w$lgVMX;V&gBp6(t+qu7&*F$e9Sv+`a;dmoG7 z_RLyq!dQl@1H7%Pizqc6o7z0oUK5i+RP~~I32YoE!1Y^(S&H6a!X4cix;v`LMlHLg l-Mc}esmip9dtGU8T_^QbC-5%0ym|jn0WWuqTeC}e=6|d!rZfNm literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/baseball.png b/libs/Cesium/Assets/Textures/maki/baseball.png new file mode 100644 index 0000000000000000000000000000000000000000..23f344bbfab9618ca1eb6d1390c104547211f9ab GIT binary patch literal 1838 zcmV+}2hsS6P)Px#32;bRa{vGi!vFvd!vV){sAK>D2E$22K~#9!?VWo_ zWK|r;$F*{)WDBF(h~3zww%x7WUQ4(ewUv(Z&>SamOeGb~K&8?me3We=>pBR&(0m|< zsG#K^4U`ZWNSTFFlOQY~x z3{?!G_?zr@RFtv!OG`^Bb8~a9si~=~g@uJwivKx@%IXwl@L7#9DyoOqJJmmu*snQwJ>A;)!r`tK^gIVS^y9$ zDJkgzAUuYuE42R3&dzeJ;%``1R@P@gOn4BL2LR|5f5Xz!(!K^f;V`Pt833{T{QM69 zPdFgD_(_N0EksoRI~w}aI?q&9`G0BoOH1UK&-d7_hkUWb)o_=`-_p2lk+hT z0K_~VPZ0niN<;v${zBB$)YS3WB`zw4sQU&a6Z8#Kjm0mU0sI|f?SMqI2=D30O1kH zkogE4837PTe;vd`Ede1&mXwtAQxJ26TM&X|85tR$2MdA}4|X90$%>1M2YCW;I-TEQ z%}4=4U0vN-o)88G242KvE|($LmLXb3uY2+(gbvIWcBu zXP@B(z~OLwkMZCNgky4IEH5u7^McUY+WNZCl~X?mcPb=oM&}3jiU{F0h5FH|!SP_X za1f*~eLVz$jOAGau-om67!S63LKFm{s;a7)HH6B_%C`~1R!@k8Ak56nWEi-_CDtVB zrL=DhlNcj+ zjDqM8B9!7ndV2a7oRhS@CebfaK87HW4d4tQ_=KO-SMY|Ll)OQ2_MDlS`6&ivon4aN z>CVBy!I!XTr(76{GF&1Zxg83oz|$jU4h%LTO%yk4(E zm~sViZC>JUSW!{YyJ{goXBr7plAf5D$WBg9{$aB)wY9Z1S|ChLPCm=9Tw&iS;s-26 zukS$y3vY#mh41l>3(%G*$#dg&Z0n~LC^0edycP%v2?-Zi%qfR;q9%QTQ!GXc9XK3$Xv)TRtKI@?!)B0U5*H;X)*chc%7^S79?=U)4>d1}&ptX!36PWEZqbxPE zZ3P7d?*pH8G@QhbGNP8_cTd?B+lz~fPt)F~yu7>}fN(5q3v1)!<2gJ5tV2jpnDV5$ zS6f@#Yhew6$MH9`2~(iczqEKEuo;BdJz+V~qE&p7tf|RZ$>u!;2tJ)FutPs4u-w*4 zGUfoEcS4~N>{giW{Fmn5_4V~{h2<)2GD`7(;OXh zG&D543B?4GolABfd6AK1_e;Ou7_xH$DlMA#^GKfXD-DE>j*bcq&;NKxdxApC-(^&z zpe<)BBx~Fo64RIvj8~pO^&{HRQG0uPrA7z`gFQsGD?H#SgFI6ff^;n~NY)^)-V-Wi zi|F+NUR0>XC^9QY1EHy@>5V{3?cHwoIXn|pCj^_#_B#!Po}QjpHpLMyML9*xP32mK zsIyn;6 zf4$}3jp}Ml&QelRzSG(AkD{{l0Jg0&B0Fq!OkLv3OI5~zYXS*L7W1kd?MQYPD#|b) z$ji(7khaf9@%4GZwa}VVx7&RddOs!xTsB^ybxQRJs>cq3MWy&S&gTFjmQsA|^Nk)E cX??ZI|7*Dd*pJ!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1quc4ZA&E978H@y`AgtArdHaeEFp}@-1#IWh*{} z1Xg?$`r8;&e%n4TReM>`t|XU9>=&IKQ>r%lxhioe-Q`jIG9@KZT##AtkX|L%eY5BN^Ru(Rr?uVppX8(WvBKv5t4VXhJQn*2 zx8|&1QlBBeX=jbWeWp!QKT1nWN6$&ww^m_-@ZGgnI!>NE`8sU+rJs|}ZM}Nx*>ml= zHJ+X)<@=9sPAqLb{7_PqWA_@1HzHbdO)_uHl0D;p;{EskL6VdBqE>e zq6f@cm(P@%&zLXpGRHn7@0_L5S^K3)b$5K9sXzJrQ!G^Bjd@Am{w-TdPWB!ZxU1?T6RcGan z!w0@R{rQ&&^Z{P0uDod?1xM*WN>+!M9OGl0z;cbh2oyO#$ z{AS68=QwyD+q&F+|`-i+)(K2t(8R?ZSk4=RRym^yzEiFblcc$Q6Al5E)?U2#3{rmTOF8OJq&Q!Jk*ip&a zD$PTGrcIj`=l5Q};kTBvpzji&;_0r7FPcxCI`#3F)q6!u;=;qf?^?e6xt#CONf-a@ zFPlG2YK6>>d5;284p`rG+Hto1fvJRpU`$xN{1d4wpUWfGuB~VM6h3uUQEOs0D3y7- L`njxgN@xNAi`h+a literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/beer.png b/libs/Cesium/Assets/Textures/maki/beer.png new file mode 100644 index 0000000000000000000000000000000000000000..a15cf99119df13c3f50968f637e6df3170134342 GIT binary patch literal 1403 zcmV->1%&#EP)Px#32;bRa{vGi!vFvd!vV){sAK>D1rSL@K~#9!?VVdl zltC27*X&}Z(M?T5iry-^5SG1^L3?+#%vDpe+{M5mkZ4gN5)75dkbDu$$`|v=hm>%; z;6qO)A{Lq9qalT135I5vZZr6xjpI7sef;JO{NMJQ@67ql?#!7vGi$LhmbtmP1f(Po zvl1;z3#udz$pccXWXaACg+e>Paq0>AbC1;C4~|n=QhI+hILtr*=)=3nhsVdqv-jA(9dE;Ez!@d~FA0Ni9nd3kw#EJg$Zfv08yP*+!1#nNuK z+dZZxfE2Q#^78V>EQaLf=JqR|3ma6BohM1#OG-+fv$Wgi^Sz?9`;1&elF7>2+S*DP zzlw9J^#uI^EU`N?Gjo`w-8D5e_bJaGkYxy(ipFp;7;ylAwavY~y_YD@Cm3RkhyYZJ z0RR9eZB}9oZC6N9Z_uHjpWQXw18_Q>zvQloAjNXt`!^~{NYDa+jjYh?^$sWq#`bd# zAfB{27z~!MwAbVDeA5EJak9eF($Z%v2KoK|AjKdj=Kzk8Hdj?uJz!~Xetv#8WfkKvo|Lv=RHe%F(?XvBT4~8iM}eTZ~-z=lU@M;bewhr z00000NZIZ7DHfxqr>8Slv-5E<$p~OpO8|DV;`H?N?~nnpAQYTVPyo2q0+2>lURGB2 z1RTF0G*$gTnSxr?0)x)cyq2UhY8<3*b0#yX$iprX7Y~x~y7LsuR000000Kj|z zGBPs0fb;bOuq0Qey1Kd+oNo;k78btM13&`#g2BPTd;nk#wYRrlrvNyt_GWb?`I3o= ziE{wJ8X6fH$)QBSQECH#U`#^x2hOhGDqjW$U;qFB0DuMnSkDWXRSt(^N>2bO5DWaT z;^N{L6aWt0vc@_)JFkiips}&>HU+>wtrAzG73`UsQawFAmnl=wtz4#Vi!uNs0P6vO z*=9fhfMWo5yZtu+&<}u$rop5 zXMchiK&R_?(2G*Zmj?m?q0S57;8XV)Al!KYG$j)%N2s>8wp#Tw!4iIg)`~t5FLNFs z&d?L(Fat99NIw7o0Ad5M*=*B-0GQkY$V02qjuU51VU0HVx*00000004kf0A8>6BW%Rz2Vlv*Kz)7v zU6bbm1q~0v76I5!8q?q3f6>eU@GZK!=K{gLK=?cGG)+gBGY+`j?jL4!K9@HEE4}J* zwfBA=0L0Ra!p54(`S=R^Wjb5D#pn|5-c6i8iBA&ZEP~Z0pU?MtU|^siT>C7%6f^#H z;Yz~yXK(`m8M96>0GlnmmF50_#e_Y7y@lt3j67sg=clUetAEZ&&<#%~#s~la002ov JPDHLkV1oGCVwV5_ literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/bicycle.png b/libs/Cesium/Assets/Textures/maki/bicycle.png new file mode 100644 index 0000000000000000000000000000000000000000..fb871be483a439271a6a9ec1123dcd82729f1ce8 GIT binary patch literal 3989 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/building.png b/libs/Cesium/Assets/Textures/maki/building.png new file mode 100644 index 0000000000000000000000000000000000000000..885f1128a60dd5382036528c43f8fde8a1a432d9 GIT binary patch literal 1765 zcmZ`(dpy$%8~<%FBOCTgQdpN!Te&nlZimdBllzeIx*Z9J^Zk6E=fCH9zE6R>s{>3yLjeE)n3JQe zr<8-g0Sb}kKj|qZQj)oZcfkWdd&&Oo5Lu}PUG{Xa23ojB-b;mioTJ}m0D!Z;0W=)j z5C#Acl9Mf-kSbWIhMhlrQGIyoNN$W-(kRdHoM>idX8S_@pCZ*2$mgQJrWBxR*TJAB zs2cUEDk2~1fhbc4E0hMGsJLEyQXWBg3Pqgouy$0`u#;DzBK+J{eKT%<5FF{-Tp^Oq z#H^;>%tT)ANZAukGBa0iZT8h5kC?>G_Ghz(hXewFPZ2xe;6&}a&3n(>rXY#GE}D2i z&6X-9<^_?Zw(ZAGU0YO3d|@h%JyD35$hc3iO}Wd0Lkv$AJH7>pC1%b*EdCMYmrOa| zI`Cu1~I&&#m$8@S|F~9LxqPftz`eaYuO@@ff(U%-qyd6Mlx=lwy#~YF&Xgc zv~fv1;m&zNJ%GhvFv4SeN$bI}NBCzWBN`WoMCafPjgLxn`UrdMctBF~^aP*p?Ghiq zCU=-x@ez$eT?`Em*P(!p=0tCGTIE+LwS|T!CvV)V3i&=rUS3{UQd}H{MShRpIQmBr zM`)ist0JIrxLivY#_D~}cS7_-VjpjM+J7)BjU5fx0kyaDjyu(+{VSf3$Co;#A$}>x0jZdAP^apM^~$Eb>GaxlmU20 zM@Jb(wQ%%tl%<=m^AA4=^RoK$8&kFz61gt43O&fnORPgE*QUo7HJX~5lBM$@TP8VG zMUNdNj>+J0cyCFmHhd)FFxVT+M?{Fkp-av&F)`J-^d8})NH{j37HyTD zzBT&0v)Vp>#;sj!#rai3WJ7_2oJG>Bsqw;!q@<*WSJbeteF6jDu;=IJQz7|tcZUcq zHZFF|N7AAX=<8AN=P_c4SK7% z7RNL<6sxXKvPt&#L#R`S$II<&CEZV+oVz`dD?@H(2H-Nyd9{5=-ixS*UJ<>>`dttw zxQVWCrkty_nxbOilzwMmU?9Lc9S*yc9Ju|O$8%?8)pUjDw$%>3qS4?to$J18QXeNT z*rlbVVdtV43Pb}xk#KP70>DV<-qtsICAr^7p-{A?u1I^U-0Xp_RKsG>=r^TNV~M^} z>l8_wVMAm}oMjf2ICdJ1?m@28-?t>1y*B1WJ*OKXz@pXmJ>3kJm_nmisdNx&RO&@f zxZQA0mnmU+7c{JIR zAagh`3vGeGeKlFr%nsMQNofBZz}-Lgh`BF0YdPBIIN$;5@9j$et+GlH*(Hm8dgl=T zF-#U@0-H5BzdffXj!jyq&yWGfX=c&?s{#c;NI)hFPzJzOz(2*DinMYRkjb+CSNZ=6 z<&f@?yblYAxno+(c77Xyr$oB5S9e0SG^iq7qc`=KGTdBPC>VP0w9_8sib4w-ixp$H z*cHJ`t@ON_U_lg7>JrU1+ww9_9_nLAd&0{&Vy z@gaxe5;1yX;I!9-_NV^l;~MYZ=ADttDRb5L=mtT}{gf8*Q$BXR{7Fnh-UBTgO#JiS zjRwrm_GI-!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49wM@E{-7;x8B}8-z}6V!Tw=m&kBu<-y0QJ zysO__vA=Lq{_&e{%^EpJeXJ@3Ua34(v|1wJ#{PYSg5wW<74HXYo!OZu3*>Vbi|a== zrg&`gdoQh>vw7FKy!G$*d_MQR^|{5l&-><=Ka)*wOBXr1EKTCr$%`3Jgf+xOZc0m* z=)Zii>V@OyDTNyuP`t<^Jrm&pxXSOtO%P zn?K?4OU=I@yG%BV^I0GMQ@3By>&32pWhd%%tiEkg;yh4s@!JQRt1_vDeN#CT)cq{7 z9H$C2$Z@*o$o_F#{Bc3pYTGSBN{k^|Q;&xgt-JoZQNC3uhTja+nviFSyM<-);T%-KOOXpB9Us zwSHM*RnG9h+-vEjU^xc6&wjVwev4)J(VJry%>oQ{5ODBlNHDlj{)k!9_wp`?5D8?1 z`Qs01GWaw+$X~iLabv`pzSDPAggU>M@x|$g{kG8C6{0tNev8w>eOnl2`aJt;7rK3$ ztHu_WnO{xJFE6YFWIrgIq#HeE`L zQ@s$iHtdX--IvI1A`B@HWjjL7lm_)~_Y~x7-@p5nh|B63pBZl4xl@x;Xq4m4eBo_b z{`prMR;{{kAsQ>YE0=dhrASV0?%I!gxK@R&UMbmZKj~Ay#NA_mtbf-0TPjj~UL_zgFwy2Y%)X4Xq9gA60j zVGC{sZw9;6xLmQO+l(iE=xEwV-Mp!}Y4hn~hKOeZYZ%uR{hqYyWyXh1Y!6H-BbZ}? z-eiF7SCC-%yD!B=>Timw3scAO$MS2Q_}srIzCkD`FbECs!(_ezws%1nPx#32;bRa{vGi!vFvd!vV){sAK>D1%pXMK~#9!?VWu{ zU1c1{-P(%v9uf2+EedCQYiqXIT3c;-)$27)^x_MYicU0dh9nh6rc)yWzP_k6$bMUZ>Wea`Rmoaa90 zdHJ1?5D0=G2!bF8f*=Tjpv|w<)zw>>AM<*>hnY_@M+cElF-I~#!MtO$1%3TXMTJ^kUVgd1zu(i? z*jQd)Uw`IicSA!%MR#|1@#5lQq6UPpfHXbI5AB-5bar;Wosf|5OH@?UYOpyjF7A(- znwk#<0Ai>EBD?nA&ljYpr{~S+=;+JA7<`piYHMpN`D=9{g*L zkB|RtVPWAF4#FYX01l}OFf}!m=5RQc?Erw>+uK{j0XQxjz!7x;Mn*tq=H})y z4nQn*$90%`jk~A`r(UFK0EUN$^Xvqmsj2A$f4i^@z>CzA1b_emP=PpT_*nt~%mbi6 zh%nS7*&P6T9{6Z-ax&eh=jP^;*8vd*06NWjd{>#T7^~V985afz2VWNr^0B+% zb^wrI_Q3jYdwcu40tmYSK;qEG^z?Kp-!lRLiLR)q_>{j306>S+($c=m&CUH%k8^Tz zzEXy1R`~Pe=jZnUfTV6{adGkI{CV>7^3DT*BmmS61%LoQhyefq1TBD&Jh40 z55P%5jP?Nl000000000000000002Nx1EA%JPpZxScS8LcT3ad@4Lt_{l7=D%1_lcG z^OTg7v;%-705mtipQo*@t(3o$0KftOw5pmN_a8qcIX^$2#Cvy^{ z1hs!J7G_!O#Kgqu(b3UdLGT@hcG&=c;gxht9*^gXnVA{4Aowm8{0Ff(*S`Q?al73= zsGXXcI+2~7{dHMcStCuzo3bVp05rEP&H6A$?4qq+K5f(h0KWlHk0%s6WK42$a`I0G zYCYxBxWm*vVm1e`QdL#;$p(RUFz;v0&Apav(z6?Yf`Wpxm6esX)z#G>(;%B5;FP!| zl=%Uw?S5^@0|1|fBEqF^Qw4yvdxkAfWdi`303vmd=Kz4YGh(#o*Yvi29RSa$3otP; z@hU5r*De4kD+~wV1=*|x|ryKJzd+!!2yBeDTJ!nc3r<>mEu06-Hgg0_E` z?1W9*DM1CFvc}`_^aOF%6mMo`=7?Y-g`RHjvMSJbvXeigJXG*LCh7_F_4U0`R8-WR zm6bJ21-{wMuHzf3^&K4@?@%QZT=OZ7_|T8?J-#+EJNTXs>~kK7=h@%8jW#bQ5Ij>M zMCndLpd?{M;LP`az0J>21k0McKrevf>H}wIXH(dZ(YGlnDL=ycoSvS3VSIf2H9oDG zUH}JpdP74)`Lxaj6YPFvLV3~uQ+ zLa>FwzueN&^1ep!pEfj5M;~Sf?a^9h%^>`Zps!u`qZNE5AKX@7o`SdVgKp|H#ei@l z_>|yVqvjv>E4#V^Vc$9sF4=uSR$X1)8B2n%2Lh#akBNy{uxaqGiV}HWAD%XKT2g`V zl<3R4y1L$?Y=CwPzD6qhYtxdJ%n7dtf$jtvinfadxudNOJ_q3dh8Bc=mc?fq-W?OT zcge_mtCI2x6Wj?mg1;?9wv^^*r!pgC$H3F_!>~>9J~0S_AP9mW2!bF8f*{}YKb{#R UyCZWW6#xJL07*qoM6N<$g0*?N_5c6? literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/camera.png b/libs/Cesium/Assets/Textures/maki/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..ec54e12a21c131a7d455fc6735e0b48356b0d1be GIT binary patch literal 1976 zcmV;p2S@mcP)Px#32;bRa{vGi!vFvd!vV){sAK>D2Te&tK~#9!?Oh8@ z990yhAL~Cx>L;nS(U>$Q8f~nfCMNX@?7s-REG#q#Xjv8#@B=Lgh!)!NiM657)Gwha zrXXsIO)F7Cup%a!U=gXL4F*F|6h%=hN?Cj-F3mEX-FdUjEDUpRaISKo@idAR&sCWBEdK`Z89y+ZZ0_+I{Nzhl9H2?JENkaybRMyBPAu}Q`itG``U%({A*-5{-U-OH^g)-k+AWw z|8)}+6E?fu{*4-r_lLvb=p7#)kM*~WvPhLToX)?N70RGM`+8Rp8&?S1{_^tjO0}Io z1K1Ll7iC%q&c7^ByBrFbu3G{$Kas+7Q&Ush!bLz@TH41V<&B(=fzR~}cQD+`utC@? z0F#rG*4oC;Y;o5GW{K?ECx=O!g3eGx7K zU`wQ|8v~S83isn_M~8&@Zv~IzmtZvL8*K)y!DyFRZQ-h!X0!R{BS((pg!;53CMJFv zE&^anrEaZ}`Si;Me~oTm8GFwxP`ks%-<8c)E3{s&uI zTQk*)x9A<)wrzV&_!LA4<2w8H?JFi{sROs$eOQu!nwpvta+W$kFOUcz0*C-2fCx|) zY|QeP)9L&wFE8(HHt4B1aNxl6M~@!$w6wHj<2#PwH$-gbb9}Sd2=KD;N`Gl->F)mi z{zTq5%$YN161Q*P{tB)QcXxZy5U^>}rop{?_r8evh)@G!xE4B~iwNMy`RwfMcSc7? z(4BcwKA2dsV!C?6F;K75>sU4@UudmN%w*DXj zW(TqU*}s2(QMfYVU<+YnA|OZrOKmWluM+{j>A^rVN@@Z&)tCm=6ai=k5E_^3xTdD2 zJUlfXkLO(gwHe3c5_#;{u`D!yx+NeZBjZCkj^DX+XQkC@JsTt|; zDcupUb?eqQc%0*QyWbDhMpjnVdptG@3JTuT9RZDvjk!F{!(3jH?Apm73o|YNFL0%r zAx#i~aKO;ekb|T4A68?IR*2!@VY^Zx3QZ7Tv)P8EqMZ0WSdT}JEuLNx&eIJ6>;-&E z${|RXM4pWjVGf=i5jq9BApo;hQVuzB;zT+-cS;F+ot>R&Qua_L-4K9vT2c<_?(R-e zC}1`fU}4@YurhtE8v>Bb%G3Wh8jZir)fUq+#xovZWg5^80Vb2_cb*xq&6_uWGFMyB z!9%veU>MiaIKYcGUdl1m)zvS})fVQ2rR=n~w?C!SbfsnnVr6AzFY^T8un=%A3o&>` z!pOSN-AI@<4IMnrLArM+?*i7$jiF}q*ifRW(;NXvv_k$4kAoT-8lE+q&7-`!aW1am z(apvi2}+DNG&vu@8;}Fgm-p=>5o~NQ#m@PRr{AweAWm}xpr#@YBWD(?v9a+P;1n?cl@S7Z6h(}?4v##fakuWu1`vv)uwe&qHk5~JUl$PQLWHO^iqPFv~sfd~@L^Yio3ddmOxtcX!?d7?e&yGf~MvZp@bTZu| zlpW2Pu!U|VZ)%BDN{h$iX;v#2bWyL6VSV&puw_nfZ?8+P<8ckHg$`OFqresb7~vKb z71d&07;3fuoHD-S7}kpw7Z=yKT&^xPx|p;|(l4t5BUqcw_C0{_3uWUGTBb?_5CKF0 z5ujgWW@fgC5wKA>!9mVa2f4Yq4Ppe`=YL>iWF+2XGW|*pQ$E?CuCA^?xR*8vxK+ps z`pe`nWr4AZNY3j6Gn-`_#WrSDaz0egH6IiE0W!XCp4l+_PO%|7qL0{391GnD@=;P! zQXOcim2dObr89ent`OUto1hwu7wyQ-4qVCbC^;uA&R-SiuR|{NZC7t5N2&G~S&=;d z;j$9@-uwQrfykH}Vtifw)$}KEBqSsxBqSsxBqSsxBqSvBEdK%j+k|KG;WoVh0000< KMNUMnLSTZ}C8~D- literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/campsite.png b/libs/Cesium/Assets/Textures/maki/campsite.png new file mode 100644 index 0000000000000000000000000000000000000000..36e0a92deb342424d23a58fe325c74c07b11deb4 GIT binary patch literal 2411 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 A7XSbN literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/cemetery.png b/libs/Cesium/Assets/Textures/maki/cemetery.png new file mode 100644 index 0000000000000000000000000000000000000000..df244fda024b8220e1b9e4dc496c24dedb952efa GIT binary patch literal 967 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/chemist.png b/libs/Cesium/Assets/Textures/maki/chemist.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1ea3574940e0d0fb4332518e3393016880bcfe GIT binary patch literal 1603 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/circle-stroked.png b/libs/Cesium/Assets/Textures/maki/circle-stroked.png new file mode 100644 index 0000000000000000000000000000000000000000..88689e47fcd3e61645900d6b2f763264df148c45 GIT binary patch literal 2126 zcmV-U2(kBxP)Px#32;bRa{vGi!vFvd!vV){sAK>D2jfXZK~#9!?Okt3 zUR4->-_~+&!xr1xhxVaSi3oz*KwE2n*z|R;Q+wy$)KOxY)Q1KJk`)LJoQaA;At8v0 zAA+rqeix%!t+7Yd(Zj(&OOh0 z{@zf?!&fqy+(G1p)z#IVq2NLXH;YIikun5%jga(QfGX!A0PP|`9YF$IB*%#C4nSXB z4HFbhK3^B4rKP1e=H}+!oSK??>(;GX?~IR+zkl=Q z&3EDFd-v{DEiNv`5QsPu08gZ|v$G=>i_I1l6|Fjzii(Q4wzjt3m6et9v?BtJhbj{u z9v*HkFE5|d0bC?!&z}9Yx3~AQ%DBip_IPohKO-}_<>loH0L3KeEQv;=zbz~*R7w(2 z>LueyIHBv;uQ#Lube0Sb4t^?0#BQ6xFAzEz#O~7xIOP4NvAwj|k8^PxedVYRB zZZq&31x{9?Ie7+r(~8xkj*w8$;Z$3)%)!mf%v5_3_>FSo#*KOb30qSE{x;sA>g(&T z`2qYjsjRI0K|sQ@)@(b)#l;WY03{NM{8?63_H#)|$saBe@yLodfj0;kB<7?EnJZmg zU7stQ*Z&o8N%ZygwE{`lM5I(F2*5{~AX(MF+`oVSJf@=!2qD`@0&9%mlXCrZWElLU zNZDZtkc;uAx=I4M=^;blC&$LdK1hZ8`R?7jZW+&o}I9H70u zz1t88yNzx=L_sb)9kil*7#w?9DhlqgC$?CH2r{3)u}?=B;74dTzIgHCRVRb3t*xDq z1SEoNx15xDZewHP*T{B4sSfy=93`eaNXflE*YGLsfGNKf>k#2Mo`9)z$)rTb%7ZRj z@;Rb71*Sf50)8&-M(56*n^7H<$cQ3fJe5LURw*V490%SJ?bYvOK=3+qz&~zD==3lq z2`pE(3ivN$Y(2a^-?lg_8P9f1ouKs=(EfR3WaML&0o2sgOmbF!mZcHB46M^pYisM5 zj@|;Y5?;hu{ayoKh6GhR!BO%T?Vo06XRDEnti2vdr`e8i0%QgHl?hOJC^68!VGRDX z$8wquW4JAp;s)fGM|BCXK7g&Z9hEZhc&K>=82F6A_!f_5_JuiK zR4uzeI>u{U>DW&~j;hoICVWUd9-q== z`H)WtIH0pTK<=w>aq2uE5{dlf*VWI%MFZSb?yK5ECGqcLbF>Oq_I%Sxrq%!)ZjorWi9M ze`zmNomUGAEhzv0ydMdmm0YRl0V4!hlP&B4J>VJvAs=5lSkX#osW*iqQ$PSd0Z_** zMF4p40s`;}fMRkf0uqTtO+bJ=0kZW8v|v5e<$CANo!Wo^c>(Ay%=0bbAn!7Y^qixf)Kd7#*zOBh{p-;fi z)mfm>FG+@gJe|srmX?;U(kU|zDk5dE85$b;L|83Dl;$%gazn{|U-vlp2N}2|HF4P` z#dJI#|6cY%9UUFrezJ_AdXqLEFg{V!64wz>7}N*w7o_Uyhbl|Tf;?&DtP27OU5tT8 zJqG@9+B~4a2*S1;Rw6*PH36rOPPRw3o;|ejt0XIMa;AheV*3nNN$&HS!wngOJV$%q z=;-K&ie1Zp@)`*|@S)3#%KV{2uwz{aAI8CG&eYxA-OeE)+cNO?vc{@%>JjYy`4}ev zrGZRLOuWY-A!-Tur#Wp3&SUk*P#qMtET^if>O0i|B@&4X)^(o!PuXtajY}oiB62$@ zt$yscK;li)fbp(+JtHc5!Rl@Y-S|T32XAIVc-vm#^7Yn2Z4Ml#_Hdx^O_c6 zb{Z6%j{X-)o{?5Ngjc(elp*_Nbp`w#6p5(ZU)9Lk z&|dk0Q5OtPS!uL-_Ks4k-^- z=$?*j7U-32%?Eu%X1s1ka@&NJg1HX-ZB~WtbS!4uMD#TeYh$N64m=wK+BAFVV{SrI zANvD8CWRJEw?5H8)REjtWX)}X4#5(qEPFeFiIlVMHwa7#G^dq3;%0aysi{cz%&wCB zg(=XIQ^B@~guHgK;t9MUh)P1R6M;sA&<#@2lFsyUdZpB7Ludj;B2cL#TZKZiTEXKA z?bjT-FmgkFx>(s3P6Xn$5P^cW3eejEepdW46Hi_V`T1fcf2CTWb$=+`E>=RYi*hs+ zTuPx#32;bRa{vGi!vFvd!vV){sAK>D1xQImK~#9!?Ojbs z6;Tu($x1WKP-xMns3ZhITqq`D$Wwfpre^O2k@iH|g^Hl}_%gdB?e6a0O{G%zS5{UYE-fuRo|~I{vbeaIfWJ33Hex$FJ8cpSQH8`4 zjEs!DX=`g+k3=H6RkXIYrUnNGlLrR}Euk|6EDz0m@WjN#%a)dwlpVr(Xl`!)o=hf( z%)A%*jv_z$`9_hC+uPe~1yY0yF<_rO@7)OaX)B&e!kZW(peZA8+$Ei zh(eXgui$;a=;-K>O2lVkU|`^#fDvj{B;W9*H#avsRVF?Yu(INPlW)j(dSZ2Qju4oj zv%KEPGGA_OZ7uFc;xn-&Jj3+)q{?2w;Jd+65I);%O$e8+6r72%{SZ$7X> zehKYC?d|PrNVKH`yeiwhA8xOZWa~%SX2`#RuE!BqRAssMPfkw0Kw`zw-{1e<(kLJ^ z_7&{?j*fx~)4hLveLaqZ%Dd<{Z2%-w?kHg18;~EX(ExJ6h&!qi?)`Q{194wK-xmm< zcp{08O~!@X09rWPKmzT95sO;Gbw8b*onMhaIRU|3H-zrTeK&N{{hUJsI15^S!g1mt z`J@Uq?Gc>w)C8UPJ|25=s<6k4hQ zV9A7p$p_>y3mE`T@Q^V1fMjwZ1FWvDK0w0UxvZxqTP!axKSILf17sD1MnF(c zTi_hvhdBV3q0RtQUeExFWz?Vna3_og&=}b-2S}QG2KZ0gr?K0q%?!~ms~u=E%bXdmO_ zfYJok0OGV( za>Op-C~$Q1Rca|ucxGniDUvD!1MBKZ*=w6Yx)a3!PQl!0{Re#i}ABQk7J-i+&KN z6|AOu))!@MS*NHf1%I((_8Dl<{MK0a2`oS?s?!rT7@Jocl7d{#&y97x$-~st)bm6l z@sSYs+alrVuCA`nCWd4HU>KfVKtvO%ukmi0fLA8!PzBYk+jW z7PiI;2zC+G8n)y7gi@D!dYNZuH$EB}xrf=CjW!8~9eOc{)2jHLe*thvOZr2Q_XYp} N002ovPDHLkV1g;=myiGe literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/city.png b/libs/Cesium/Assets/Textures/maki/city.png new file mode 100644 index 0000000000000000000000000000000000000000..37d8fad8850f8e449ca94b0848c5d46d3ea7d99a GIT binary patch literal 788 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-3`{FMT^vIyZoR#0*e&HKa-h(3f{PQ!&K8mI zmSzW!T_WN;PMKuKl-P1abQH)x$hox4E4_5<()$N)ou6<_Yihz&Jy(HslSJ~;{8=}@ zd3F14VS4%d{U4;xOCJATTz3DAXt0**jT>^}PFbcxm8OOlQpDfPC@_kIW)%kb@w zp7!(=56~w-(4)Tl75`U(x^ymu6dV3zF=76uU%?+eE^HGrns(f3)tvM|?;|3N-;TOJ z{Qg_v&3eHL-?nbZ)z14g|M<#_#!LkTN7wv|>%aBf@AhYj?CD-tqWdNnGpN52TNGC> zxOqSK)DuN#ww=}3|8F`gV?p1B+Mvsp(+n6+->)#6U8=hJ+QEc^#nKMnyDVSSUi!Br zclzn4OH16k*lxW3TKB?l&B`Lv7qy;gaX0$azNsleoQohOSzmnroqUqPeep%}yT9#r zeeVfkx*er0s1yG#}1VRO%%mCKZ6E5`U8Qg;0K(kFk#PH4?(Vz)N;R71 z{YzAQdA?hPVe-i*Q9_pty?A{-5c9Juv+M z0UzUyf8xg6fiJ^TFXPK)-mo`e7KnB!@b{p Z{~2!INpjQb4|osK^j!HCg}w literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/clothing-store.png b/libs/Cesium/Assets/Textures/maki/clothing-store.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5f8a2b18022fa2455b1c539a72a7e3599687e3 GIT binary patch literal 2037 zcmbW2`9IT-1IOQ+jg977QG^v*nj=lt{~OLIiA=1!Sf z7M8^3C~}{DB-gM|R=z&JeSZGF9*^hi`FQ;WuT&drON6MLC;$KmJkG*y&!m5V3Gekx zLD<#N7UT#&>FDeG^#Ay%W#sXB*WTHl4OZ-5e2nLgVTT-)G) zqU<7g(APa0^(iUpT^*$};$sYpr}64)W&KmNy~uOwOXF1HRQ^(|KTE z;P%480@YweBqb|rw~4`E-16`^YRa+)4YhQ*kl#9ukkpEEdI$1ybD2lTRCmO*iJRL5 zp3{uE@@>|VlkQa$!vEGcAHD@?Z*LbkySfSnc|6{LH7@0jw-f(Uc7ugx{UHT~7m9}A zwc5J6n~9x(xD$O)>+Fydt=`=A6hvC+?ZVQZzP`Tvt(Ec7&!eLhWpl9P;_8`9hy61M zaq)^#|E4YCu>mEH9A}^Td6vzQW`|nQH-oqz!wueCe0gMc$r`o0yIYZm1WS`9>LW{{ z{?JQ%b2DgKSSU zg=dd&w+|dRP?I=wLT*QiKp;#^5&u%OlS^vtc8L5_Y5#N`8*2&I(a|xM%9bqai0=6O zcvUMjDD!yRt(R}P78b;m+QWYWLVa&n|>pX{IOYX%1t zKlBzXEiGj=`k-bZyT-R?EJ{#;4fiT^1-@Btlc%&N>Ub(Sb-R`tp;kEDwm5hn2rh4A z1`e2e1Rv~3mqmWq{zCHVmQ zyztm(Wo2bRv=p)QZ+pG6zO%#q{dPyYluQlWE^;SPU2ZEQFBW$qbeX5G1%2>)5eq+c z1*YYG@cy(34Mr@tj?>lEb$~^`L#E-2jpC52W-&1_!-RGHAq*<`rjJj!8&AbQ#DMaY zEg?guJ;^7Rl@!fqqY%m{_m-eH@);7-$klcZ$C@(i{|AA1UT}Y*tE~k^zREflmTP@lu zd`u59Z0zxhiaQd5VM5Y7blP3I?(-&d!o{ZPt1FXlcdx0ij7)?bYcmi3jJuU0?W+z7so$&n?aVQJIMo;BUm99lB$~4YIkzMtFT2JKJI5};L=N7+;_B63^xGpXC zA2|FZ#axJ{$DFadU~u@hp6-|BO&Qfo;BM7o(L&M}5X0~5XW`Rw`MG>Rzkje=e;?)?U6GYrVK!Ly&#yzFZLY`Y}AdO02(*`Cml|C@69K zOoe_)#h^-So{h8fNc&u7b?5Ws?}Y&HS5HHff}OoR7Z%C1JvG~)f2|EXnOf_ z^s8tE-x>f2suBtY{Pnu)?;juV=M7A3=hAWRemBp=BmhwP?o}S2ol)+G=iLSy21b7n zekF+(O(F~xh7wz4&@O>(^D*-(8Z)Bt<8yo?vA)x7A}t?>`iGDQWA4WTzq;;`3boQJ zv;;6!>f}=f;Ao{Y^#WL8Lm0lJ-mt00&)lh=85-o<0#*SBNXJ7^p#NL(Y>0X;(_O(0 z{D4Z`P0%yvRlmFDt{j29rBpUUp*s&y*M9Cye82cxga?Q5j{&!|a n`7&TH1_(RJwlw`$9%6REODgbgc`LT!-cG literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/college.png b/libs/Cesium/Assets/Textures/maki/college.png new file mode 100644 index 0000000000000000000000000000000000000000..102638704ac3a302655240bc8b51071492960438 GIT binary patch literal 2502 zcmV;%2|4zOP)Px#32;bRa{vGi!vFvd!vV){sAK>D30p}-K~#9!?Oh8{ zRAm&#@R3=Tr8y>LS~{7NrDd9BfSeM@I-tA)p|~ z%#3l+&@3{F95KtWEGLV!ED$=MU6|!^@BRN}ciFqU|Cu=h!!UPuzw*OR% zm@r|&gb5QSOqeiX!h{JECQQqknwoBJY-}7x{sQ>~@)6{H1TvNf{#F9|F>+7xDGEM@ z{->8f%KX50A%BDbc2@!3(7ot?pTsN?$e9j&X9DygayJg(<&If0oV>e0(slpb7=gg78A{LVDv;#>p1|ryKVQ@W_44J*ev1|@%J%T^_|4VT_1}ny zh?2_6%Gr!SOeTLAvq~VXJmPy3K+kG{cw;N?!U;!1LI@^;J;#xuv0 z--qBkaxOm-S&JG-_4V~rb8>Q${r&yFB5)g7;2XM^m)FnBmoHyeS6Ao52*fz@dmSba z9J%~WFD@>Q4G9T3Mqu7B26(won>Ov-x^?T)5KKlOz#;CkXW+Z?@C&a?l&x$* zF5iK`w{mcZdGqGIfBg9IFb)neSoa*l)LhZzdqI5 z+xx6ufLGuUzb7Up?!fHi;1K<-p1N8(m$#PdoGBVQAxxBT!5gcOQzI|LAf-t+S z!*coa=g$YupFcm3a`~%v2z(nd7aAIR4QmmTGTaiQjLmc7* zvvUZZT>kp?>(eNgU#+KH-pU*zzqYnE$RrLS)#b;qa``oD)};CP_?&Ze;1xK;AK(xd zFJAO#%!mnXI0XISeyz;L7IS%Pa)@QimaXUD5W{Z@=6RDu*a5D~px~0RebM z{>SX>?ALvLeQN}8=5cp-_qwE{r0rL(T=A8w_z-|0YGvcM$fi!6`lA4`{r!fBh=}4- zr%ugM*#n-tS>MrOx`^76B}+DWdV2mUK;>U@LPA0+l$IQshP8J~S((Lpu{SJSxNs-( zT>-GV`}z6RY}>Xig;BTzJMO1ca2rVOsuhT;s;Zf>v9a$G1N>V6-YWn9B`qy&4VG@L zQO|7lON!(nQj}B!ff~r1IdeY5I_Jp1qX3zZkg$t`0i$Es)7YlVFjnoqq@*Nf=FFMp zw%T+tVS}xw0a(T%3dSj(zU}Usp{`B-gjU-TzGu&#g@J*ApF7B?uPZ7liemupYE}`j zRI(Vw>i>fEVI#8V0H6xYp(W~Kk+vi~{2ubLEa{0oa|o3HU|^0kODBvo5Piv?X9WTr z0vUp>*81b(;`TyU$`OFUR*@gl3%f`<8BO_NVq#*Bt#Ake{;!yrm;&^;@&1E?f=;jk zfM$!e1-MKOar*S>8G7arXfsAdMHS22jJgj%J2^xdKCoVZpF4MM>CvM{Us8I%HWL7Y z{h=EVhd`|)G&J;6YjFtV^5Nm(2U!XSn+t$UGs-;Eo0pgO3Vq0v9oTh)JpJ&20|%mb z-k;3|K+?r<9jrFs5Z_ub5Dl|t%_@gv(wIZvHW>g(TQuI-6Yl7tu2``mlQ_f=<}44- zm@(rRhpNr40^lq^54L;v?nGV?z#*0{UAmDt#3d7tB%Qz#$Mc#q0cdq{ao4V0Nj#$!90EDJj6*bH z^WMC9^Aar`PP5~J58N-Ir2KHi0JH=G?@#1WAFk8qbY2!_A4#fWb z`{Pm6GX?l&r_}f}g#c8_0`QZ<02raG+g7AzO{+tFnVFd@%vsyPp>J~^gM~0z4z5(O zZ6!s~SPsYO=C&1i%My}zJ zWMr&VSO(AFbg0$|7(E1_kCJ}K9BZ|?Rm`}WKn={Anwk)$5(sYN0{d1ujx<5HC25F! z^#VRr-#j;IMMXswYCPj|R#sMK8|}YN_JRINA1Em)DaXn)p#gnq2nBe!1*)>RJ3{Sw z$ne^ne$i25W|UehQj#-voHVdv)NCNOS68Ld=3rOd0=rUGElq*v{ZL1&54Xlc0$ zG3u{5YD`Z_PHc0IInDshzlbUR~>T{@9-X6SlWGQCb%0D0DOmmlb%f~RrHgT z)?PfFFkFd)lurZrGln%H4WB4ooZ)Q5?Crsl=gTDOJ)LaDF#V-NAfBubhbwYYQ&ZOh zY=fFmEtV`6@Y2oc1C0S*ArLqxF-&@vS{cGNzt2Y6BZg>vxK=_gv@ch!T9v^AJnm&M z1$dREw1;%B5}rLsx{cl0$<|HM6uHQ+QE1Obh^yAbmo}I-EAGaI#owfne^5kW()C>{83lk!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49xYOE{-7;x8C0M_n2HLbNplE1kTd+-U_8J z1fD9sJ-;%i`dO9PaWg@0GlMr5l7yGJHd?zlaVp9k>b`Mnp?!k-($jjPWn6D2t=TVd zMN#a~f~b(yYwrtNpD{gpzyG-9_V3K{aw6Yq>d$}Q`uyYb{NgB`u4udY_a~ixI?MHz z%PrR}Rb3YKt8d7Q{@$Ck|8CGqUy(a1T<^p-c3Yg>|6-B8?y<>5YiI9|6v^|Sl_;gD1&a7EJ>>78<{%P;nvE#+uS+jPT7#S5Uo@ZodSC^WY`0$I7Ks&2T z^USmPI_2l*&zR9+HTRr<*lN@G{);AWt5t+L(>F(k&(uzApUH6c>8$+CH#dE~_2&^w z^Fj8f>zIrgr``E|`Q?`7^XC6d{Zw65Wfj9zaLK3P+oR^=k3Vvo)Mh#@yzuwZ>H|Iu zYkwSAym;~Tj9-_&eEq7b#a0lTV8}^(=qAtA zlIp!TWvytZOWt*z0~an_(4A`fZQZ(c;#>^&lTSX;ycuO|Z2X*&fuUg*i-d&4j${*8 zGrRfvE14#EsGK`>t?Ou#_)JzqZYE%K!aze5(~o4GNhjTG^p*$tFP-*k_E|F)2Mv*3 z=JxjQr}zHw{jt>PbN$(K=jKgbYiem(IdiMRwI-0}&y0WS{!jMWr(|Yhb4EMK#~ElX z94y$!SQ7jH&DW~LEbNq3ocJ%7an?Kun3+lLn6<(2Pxc#2d-v}7Ui&MPd)K|zoO-^{*v`j)TUdSl zf9GjR5nW)lD=Zl%VXHv5`A3ebv>5!7J&{a=V+UPeZhxYOh&>999Se4jf}V@%;0(N#Fh14nO>G*DEzI z@7)=$vt?6$*Qre|k z)V{Y1W-`n^!Wg~!CCkwneVw(7ZKBvc46gR8gIwn6>gTe~DWM4fpr)u0 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/cricket.png b/libs/Cesium/Assets/Textures/maki/cricket.png new file mode 100644 index 0000000000000000000000000000000000000000..6642a3af2a8342896188779f3b75939d26565cc0 GIT binary patch literal 1677 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/disability.png b/libs/Cesium/Assets/Textures/maki/disability.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc355097788c5fe5252fe1958f04d492b68c279 GIT binary patch literal 3437 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/embassy.png b/libs/Cesium/Assets/Textures/maki/embassy.png new file mode 100644 index 0000000000000000000000000000000000000000..46b7e1e1cd9a0e7a5a4eb7b18fd6b68ccaf59ad2 GIT binary patch literal 1680 zcmb7?YgEz)7{>pYre$v45(Uc4dF^PKnP91FX~Gs>7)F6b<}EKI>QXXwG%v$~Fg3F@ zZ`jmK$y*H5jCrZN;2EYS^Va?r;VnQ^YAUnu`?B|(=Y7s|-uKIM&M({F*GF$VY&!q| zdKk19Zqv_yk;;j$w}hKm%KMEm&(aLlSU4-vRYPgmg1(qoU6w0KiwB zUj%s(TOA4jTdgo&$M7`q!u{xzh(O~PcSd~nMNv3)6l`tXZ`Lj~BSh~ylgzMd@2qsL ze@lP7)qnEqPD@1=z4iLGz=~f~^HAmxD0GER8YSUs6c?nwX1TxuXf;Q*Gmh`DuzO=LyXJlkF=;-L^@jzcQHh81tCYiQ>jJ@l`&z=<|5W}-~ zD#3CeJ!;d3!;b_Xyz8i~t*zb#gC*NpTZg;Z*hnt;`3>GUn3|Duvo*n`no&AM)>a+{ zzjiBhDmvusY(x$UTHAeh-N)ZQXCQk6i$<&JIULaHuE$_*;?qu=mHdXXkYMI{H~us{5@4wRYu!&b*HM#Ix0mf zYy~BXUta$9c1uf(j!#HH&}wddV$#~tII&oKZUjL;5Mr!-&fi}qIK|=(CF5|S=?@<+ z=H@k&&X_)!)QbY4euylt84xhd?$h#caalf@mbUS$v8wdap|m_2yop$MS$Ha4HV~I{ zq2qeneJrMg`|x3M-bXXc*%IQ}v#gmN zcVEAL4G|VY09VNL)#9UlcM1wF>ZTJc6}dU0_vh`Z(6Yic}+^v`F7BEDIJ6K2FiIa#7mpNbZUdI-;sQbbp*$bl}C z$;fkabL1b9pn3CHjBCQ-qwcHQQG9{$)RyJ-hc^4Q^W>gOroz7^KiN)byzK4$d{Pi2 zneR#cN@0lPyz{l#8Q91!FE4LasZ<{)B2z*`XV`6{o9uhN>QZ+-$@i1#)0>VC?Y!Ah zL||~9y{Q(7L`fein_IoX2sj*0GQM;>;z?a%W)Vb_s$~oXk+U%_%GK3~?(S|@jf;o9 z{jB!0KZGyNY3*Bq5WrDgdMAn5J$0rY#@#x}lfpqLU!^+E<@5O%!KsjuE}FZBepvKw zsNu(N^gv3+YFx4>6UOSf%__WDLqvhB~Zs^21j3e(u>RB;t^)f%YS*+4+< zwLfDJTsgF3uuSqE3wZ5Gj01ZxATEd-Igq_~w10sNk;Mvfbb@^YFo00n55 zxBM@F{_9y52{c}Y{r;Y0_4bObfcalJvxMh%S1lb(`k=yo zNh2gZJzZ*eg||V)yVE;YfS#V767V|VX4>24%F3Cu*}Z!u?FYTl+9Z9oNo)@Of#E;m z9oBhLu0o;UJ;*JuVTVwMF6;OphQmM1&f3>hSJQ4pACmP_a|~fGF~ijOXwsjNP@{6} zy`8PHhQP-|nK4TL;*@b+fuA=eE1}hn_BQ=5gV6<)ojm@%QVobGO5QH&Z10MBa_8yN U_qHjIzLdmx`+C)Xcm9`u0ez_m1^@s6 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/emergency-telephone.png b/libs/Cesium/Assets/Textures/maki/emergency-telephone.png new file mode 100644 index 0000000000000000000000000000000000000000..fac62396845e81e45b98752d76b3cd6cc35f1910 GIT binary patch literal 1533 zcmVPx#32;bRa{vGi!vFvd!vV){sAK>D1(HcbK~#9!?OaVr zRY4Sf_CuObN=XDoY5vfUErbXmiolya-m`jXkz&>>7ZSM9+_@;Ql_4m!EdrrcySJ%L zhzk=D7s*?_jU<&I2!bFzdapa=gWL7qnYs7QnYlk_;4CWh&V1jQ?|d`&&ctF8Td`Oy z)8llZP&g99Ca>v$SL%^8hfYQtq5}{9Nh|OT(T*s=fnUo2zZ8{{B(O?<)@9B1NbNGI+)Al9uV-M2_RNi0r;RZ*>mO_!G|P32Y)XMpqZJOr@g(sv&R1LL^7HD zF+M*2%9kXtG~YZJh)xq7rhzgwHTBXd=yuW3(Xq-PA>j+RV+B400j$hVBoeG4X>Dz-ld~{afVv&8 z1o*w+T7kc{wRPKxJCdULZU_h>_(XQ>ezv>2dyb0$k#5H=0UWaP$B&xtIq{$~pSL4H zb2~iXlbD~Me`Gsu2)E;gfS|b@E6ulyp`oGomg6SX7^>j%5)eeU<1{hH#>QUT5g-kG z2aA=!xgFOtUxw_sCBP>Ix8O$exd_mwe!0~@bar-Tp(0@57e#Y%lw_} zuQo5jTEi?mcHmo(P!N&%3kwTotc2 zRG`~&Av=s&UBeG&v$)F(Uy$YXJg2Phmy^fWhY=p&1E~bo`%sze0p|Li13X&$G=PH3D{h3Ebb` zpHX?`i*G&!mqb8|d9ayG<{5Sjz^?fUbF=#vl-z>=>2{pFu#du)MBHlNBO@bkWnFMbIsSh(vKw7ivfvv?Xy6?;5(dE+?T*O%1V+ZA>_ECB&Oo;#W1WC*2bP2u7k8{xA#wuS j&RuJ94)9wLt$*z=x$v=T>eQds00000NkvXXu0mjfj>pns literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/entrance.png b/libs/Cesium/Assets/Textures/maki/entrance.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ba8c5d6ad858d5b79edfe30fb0cefd28ddaf26 GIT binary patch literal 1307 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 BqFDd{ literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/ferry.png b/libs/Cesium/Assets/Textures/maki/ferry.png new file mode 100644 index 0000000000000000000000000000000000000000..58c2f27a8567c693ec875537330915b00cafa33b GIT binary patch literal 2879 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/garden.png b/libs/Cesium/Assets/Textures/maki/garden.png new file mode 100644 index 0000000000000000000000000000000000000000..265edb8d6751d7cc9a4d15f4b81af52ab10e9163 GIT binary patch literal 2057 zcmV+k2=@1hP)Px#32;bRa{vGi!vFvd!vV){sAK>D2cAhpK~#9!?Ol6J z97P!47VE3NpS8yNjIr@Wv6k9mQz^$C$D89gI1V^SN-#b`fW%fHsSQ3Lxf)4>z#nL0 z|7g<03V)PDG-*V{hz3QXL5QghYKRXaDUm`8&NO%C#GToh-I?8;WxnJK$+7#*%D-QupU}YEBS_d={XbP~u9sFI-(l)S}1oSDOw<{tFsJI(w z7D9I!04EV+7wT>Ub$%RU*DVtGStP2%ZYD?DT{Q7p_{pjOe!%E}MpfhsO8{zBvF z+8DL<2g@$q21&6xK0_t#+T?u>%J0at!aP0jo9Hhn(dcR~{YVLDdv-xV^#}xJqjNK$$xq(37OBI{TLKA=j3KFAd{KbJE)4931JX*Vjg@xau>^YJE zs9vx4ch=zJKtpMMe*OflEk_UlH6tVAFGBDy&=7zcI#z2=PR)Mmf*)t__KQMTXO{1O(g-607-x(KoTGc zkOW8q=m~JSTnmx_3kfJKEgcdW{M_8!GeQ&4)z#G~G64+@4Lu?e;C9+PKy%P<2LkRe zy7Oo!h4UAJfX9UL3xY?4A`*Z)U$(nrR=QfHL!r>8B7qOjA%q%!NW9G)F!n>=rOOq& z3(A{qX=y221n@Cl6&Z>sf_j4NP6E!QMG;9rg>TjHMmTFH;5{DCISseT`xMbcE12Tc zsZ-C|0sNkxo|iP-S9U3)3aq@AZ%#)?N3#{czX626cPLd6T?oR8F6qq7j4vDxf5a2? zl9G~P=-f-_HMdJ~ih#!4M(eLRFfdTv+}wQB@ArQL-b&BYI%WBMzV8nnJlNIO*Y})` zc!e#B(lrr!fVSc03mpW&=$M-&y7WC`yAc8anR_LQk^o776iI+2K#C+l5+FqqAPJBn z2_W7QfQj+$0S)mG?yqD-vz%P(L;`@VtD}iT+@!gRfIdK-tPq#2gf>|c&^tvY0A@|3 z09@;wA(5oOOh(}U?|4to?xPh1M4ii?OuCW=s3XM|_O_wy2fas8$W&#G8sK#cQ zrLduPA^=>w$ISMtRp2_*#S04yIfoA)e$(&wf9-O)7FBXF{BY>dp|^&Ihr>E5bFY;I zpj_&4IyN>IYH4YS6c!eatJLEH{Jp8EsRL&Bq9I@_LxOplgef_6Gui5kmy9aw~_vm#{$u zB<$r$0LkiRettgJ>-GM|)6E@4zz(&G>+9>^VHkDz6U`*Wk^qtyO7O&f#j360aCiVw z&OY3vWJ+*FcX#*81ic}F1py@E{mGLjUob1kLu)y+Q(e&E1?ZZimIZ*PBvR~z86n@NZhxZx@*q8+QN zt9yA80Nvd!imu$GXDimFW^8b9u!?6RDk>^I=0O0Q77< z2P_HT{p2$ndQ=Fw+p56p#>U3CSrE|K+1X@OU^mc*SsV*`P_OK~8-`jPkrFUEIvV0# z$LZ;5Kh?fJ%b{p!XsD8R1J&LWNC+?^C>%z3niALz4Bmt)C=?2vHoJ?H5CFHuElTJC z^)4PRBD+xq>P-tws(E>NKhh8Y773qm&Lwo-=xLu`61=E_X+ueMboV9_0(idVM)jhl zU)y8+r3+m{5sm=P;4fSLkvCA#6&fU57>Gri`n$5jSKs`CN@wfuzy zSOvaO2QFIyd{LXvKho8ZgZ3A(^f)KY0j{%A|V-9$*QWV zei6YhDk>TkCY259C^M!fPMmmAB=94V$g3LQ?@{a~Bwp1V$7xnCSc?Sb5y^^Og(LyT zkt0W1>QkH&Y)2e<)7#toJnJuSz{wSU%Yf2jJ3(=hXf0Jy3NtCv z5(0;pU@$nOGk7FLak7{c3Z*NkP+3btGD(}HnWk(b+n9)b76I>3r2J>aw1H!o?7vSt n(2WvpvYxSn5$I3bwT=G(+JH4uNBw=x00000NkvXXu0mjfmN2@u literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/gift.png b/libs/Cesium/Assets/Textures/maki/gift.png new file mode 100644 index 0000000000000000000000000000000000000000..866263e16b72f6bf5abdf6ffede21aeddc5a7c79 GIT binary patch literal 1606 zcmV-M2D$l(P)Px#32;bRa{vGi!vFvd!vV){sAK>D1=~qPK~#9!?VVpp zB~=)}N3FfGq*A505+iBQUy6np8#EPM#e zSHVXK^g&FBz`!6PF$|FvM35reySeMGtM+|xh0EQ0&dixRbIvz&zkv@$XXg9!JLfxR z&U`atSq8R)gM$b6_xGOwc?F~f1#@*fBw+{DTUtez+9v&Wa5{#9V zmF7ZPKI%bzhsU8EtE;O`km~MY3eSP1m45BS9EkBEbkxHemXYX5ASGO$Mx3#tPCl$R74Gq65 z08EktFf=sug-RZ^xo)^+*P^$#w^O2h;P`D-otTpHooi%d_U*~fmd)lcgkY@f;nYZKqZgq*qfWg7Rp+Eqbot=F@ zp9A&v^?$ex%HrbUyD9*1f492O&V1*bo15z-2LLWaUQ$UJ0|Nu!c%6p4Oh0I!$~n=0 z(>>svYOrw085|vUa$%$c0NR1}pk0!4?g;>#A-NVbJw5$_A8RtEWO;e{8rc<5$#U@R zFa*E3x%n4?k8u(Jpc|gjxgx4l;7U3zxieO7QQ2fUwzjtR&maaLrk!6&{EAzYHfRkG z*bR2Qy}e`L*goZ;<5KzP=;&t-?hBV#)HX2eaZQy8Mg@ZZFy+dKr$Qe56G5mAIu_F4 zmsvsDz~~o368K6h$QzcP2QcvQK%^T%z)SEF9m~S8#5`Lv_mE$P-`{Xi#`t<>pg${- zNAdis!3KF1=r5JPmu6a!i8N7>v7y{x znkqFJ{7Tcg+U_bmw1adeH&PfZj}e(EUDP?fJWpu0a+Q!R=Z!DCO-)UG7>mVj>a5Sy zwF--Vp?`%wLRDz+6OtmTw4V!QrU5uvqW1L(8c`vxu62JZ0PO7XZDu5zZYC0me~J+R z`mOa|K|W#yR=tB6nkBeE&xf2juHgm z&pU))TS?e6KeQ0MKu(Z%e^a5Pn~fqxS{*_ljd#Wdwd_rAPqmX|ITI zS{*SqHukAsAP4~1L;sAvGcE(*0-*|o*9h67@6)!B=c5yV4;n~D#H!uIbN~PV07*qoM6N<$ Ef(ec2SpWb4 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/golf.png b/libs/Cesium/Assets/Textures/maki/golf.png new file mode 100644 index 0000000000000000000000000000000000000000..2169d91589d4f1e5de6ef5d7fa32ccec863040dd GIT binary patch literal 1999 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/harbor.png b/libs/Cesium/Assets/Textures/maki/harbor.png new file mode 100644 index 0000000000000000000000000000000000000000..2814f3cd541ec74cc62887ac81597d334a21dd38 GIT binary patch literal 2048 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/hospital.png b/libs/Cesium/Assets/Textures/maki/hospital.png new file mode 100644 index 0000000000000000000000000000000000000000..faf294e870656bbc24bb750a80e42df7d219ed7b GIT binary patch literal 909 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49rTNE{-7;x8B~}m@S+rbL`{lrs&1q?MkBN zTW7ektSq@;=KFpPr=rJ&7J-grw*PFcK7J?nCw}welVsVRcTjPKLdsgvRv*jz@)Z(~ z@0uExzn@#VpZ)xm3(xB2pDw)cyf!&f(({@cc8m!}EQ<2}|u0zkTE3>e~)_4q|{pP3Mu#5Na zhids(7k_M;$S~FGsf&683ozJlf)BDWZucH+@-%KZbyee>;i|^_7p|W66m*a|sb^B5 zTH#x6n01u#nSQ-$sJID>!XCDj8|Cth8tj{N5ngwhWmk+nE9l(2oJ~`^)M@>{pp{=HDjtjG;A465{r7pv zxDw7)$4$J;W3q ze{U|@`KNKA>#ZJ(*cGCNGJNxmcDzuM7Sv-=SQ)nZz2v=56MH$Fs~y+9e#f?V!NrU{ zsU832ZgvhHvElQM=5{Y^}n^Nv=&W;imb*EQTTZ$~_tDxaKh$T(-W%sZjlZ_0MmEWR-?@ZrgHPGCobOlv9mtp3=+V``_;2*(F>D zHwiurnmadiKX2vLA1kh_pOC8nidZgP$*sn?M*Ys&Is5f?9OAInl>DcB`ik;Nrw{8b troD7;y82_c*l~G*-Lu&K8|Xg&BYZe;o8YC=yNf{X@O1TaS?83{1OSi{ej)$> literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/ice-cream.png b/libs/Cesium/Assets/Textures/maki/ice-cream.png new file mode 100644 index 0000000000000000000000000000000000000000..323c964948a2a1fd4cad80d51262d13b60b3b242 GIT binary patch literal 1602 zcmV-I2EF--P)Px#32;bRa{vGi!vFvd!vV){sAK>D1=mSLK~#9!?Okt3 z97h!2R3X&XK$GS}C?rrqghC`FCLte$hM2p0|Ee(;bN1}lsFc{$1O%@IK`5d0OTkuJ zLMs$S2&ErH@N@emfzVQlVkriS(Ao+ng5_Ehuk%_DuHMYt&hE_ao7ow7pyIxH@AsSc zX7|nPtm7bSrBbPm$csBtFH7(C_V$4topp|F{{sCC0i~HpN<_$Yhl%VVKQ|F+6}_Gz z&0tR?fG5r#k_4J6Ib`aHKa3pssz@^h_nEB{=ok8Tsi##Z@ME75HVDo}PZk4GGz7_D8om!ETPOz1Rq#8ag#Kbwf4yW%>Nhoncw2s4QSV zOAjXSkJAiXT3X5l1%6pbpI2)UaAR=rOF^AEhOXnNM}N@Zmqm6I@N{B$(mg>l>{4gv z&tVaePA31TML{bRNf)`$gx1?B&Y~l61z=q@Us8;ZLy;@b>lVQ#=ADCns-->LmVs zh9(U$M*mYR1gJ1c09yBA{wV!}kv! z^hSXI@Dl?8uT<5378Y_*AOQTtK)_3O4hVM+sIvsv+fYluZt3jkc!-FAr#$diS6914 zb+Xos(GUQuQdkHWA0K~@N5DXT|5u_qCnhEemhjxcFA>mb%!3Y1azaMbY@X>z~ zH32*C@R}R}dmQY|PQKw2aKumojySqBngdXuff_t^VbzfwofVIw!&9TwZ(T^~J5B3bB<|^=IGV#?(f0`ANn_b^z)txyzEex zDbT-h_x>CL4q{6~jP!HRF}2Ygez#EgI1KQi-^iq&TFaG~wlEq^0BcM8Yw`G>L4ptc zq1$R6W)$3=nHda{0O&7rqrV~wPKBL@7^DAGR0yE%9eSgu=Ux!tLqFQ?`B9mMR37f? z=1^8AN)0|K5>^^w-2EJIqSk0Y6cj%b6ryUq|W zfc=cuTZ=Nl2R&%ta>ty8W+Z+5VTSP$28;Ut2{@}N4KYUlS&O=h0$n1Jc={uYa_k0|Kt>-*Xb`0#&r^!q0u;WY}hIbsYs0gYb1 z%*y!!YNJI}oCIo_I-k!|*9ze8w(KnTnV^AHN*Ea#`J@tj_?>geQiDa)dla<#JmaU; zqNu1yXUqv#rjlS$lTSjsOYqw*S|Lo#I!?I%09b?*A1i|?9{>OV07*qoM6N<$f_oR< AT>t<8 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/industrial.png b/libs/Cesium/Assets/Textures/maki/industrial.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3b525db81c45627bcd6719793834151e035a1d GIT binary patch literal 1092 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49qt@T^vIyZoQrBogwVV&~{sE>%If*FGAmV zuD;UEK3~*xk>@Ovi_WtaY?>(3n!xAe@3odw%_-A0bwa;N5ABe9Qru^y zM)BLtYp!NF?)_jMDDqTx9c%2XIyE)5eH&O-I5(-V^q!ss zjf(O$3}Mrig=RR;-1R?no45nt3mx4ly}i8+CnofrxO1E@e&MG?77}j6^?d(=NP5i*GTW%{usx+iTyc^#9+I9D= z;SMK@OH(^THAGfP@OrN{JegvoyLn%((t@dpn%S0n7RyXLHsMojTJ7zShOXJ7`(}q7 z{Pd~lMoz%m-j&y1+s*tM>Co_RFaM{u?r#e-On!xhMQ9yOGF04br_HGllf_@}a*VM_ zx5n=N_10F_)}rHi=AUOLZP_Ywz}-ON&x*%oiSRf*vs42%pwSqI`J6&&0f zmj87vEmmYvo4<7FQtO!AOFQ2D=lKyhfAIp<1O{oduWSotHwUe}Qrx1}fAr|lYA2?U zPe1<%x1`UzdiAR3+#dIx+n3FsJ-gb*+S;1;hlU7Oe@of<(D_N~h2aqgo~^ic?P$25 zkH3ZM?LEIum|kfeub4mKiDN|2!OhPD1FTNPAI^7;m+tLX0OouKPgg&ebxsLQ0D`K| Ai2wiq literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/land-use.png b/libs/Cesium/Assets/Textures/maki/land-use.png new file mode 100644 index 0000000000000000000000000000000000000000..f86b21bcd08af8c9ba96eda25409fe0357bd6245 GIT binary patch literal 1773 zcmVPx#32;bRa{vGi!vFvd!vV){sAK>D27*aMK~#9!?VVjr z9Yqv?(Q345YOy~?s|hBJ+L&OgR;#Hsid=r~DuML!FW^r|6o|%zAP;CTQi7ByQt|0FB$Y?v0}1+oxh*&+xi`68c4lXH=XZB*a$aEX-E+=2J9FmD z%-NhAPM_V~-NQ&uQp!U)A^RYk9uaCM`thfbyvayP_V)G;=;m~!^Jxz@9%AMAqYNE? zhaiJq(Wu2g=fl1uL2vpDFXv~ACIH0RhQ6F9!udKtK>EET)GqYs+)et??d|RIWHMQ^ zva-@ZBWr7G^_!cUmt2&6UE#jJ(5^4oWVdr?XQzw_0GyMSmX_WrEG*m$A`J}<^MpP# zSJ5XRX4loStWCRZ03k2{Xo*hF86O}2G^q145{t!lbn1$P0YG0kfpZKi=Vzp@uI?J< zUhyac5aRrdtgf!Ujk)Kk$N|7Pzp}FOIxheqgz?}mh7Pcd0MG>mPCwq>-aanU`Dxh=(iNfWE{L4D2L^x(IboJ7!TFicbP;2)<t(nZvIiU-c$h4A79{==V6$tNYO%o?#X`5`uci}482_es1S0}%IN6m=NMft zx;@QBMMWtk0T7&jTQvYKp=mD3CRzFt0Vo!7(#kEju1E_2xOH6!&lGlkX8qtQDKymu zfEN9}7sJwWRCxfnFs-VpYE>5igz>;q9)MF;aCv#TNhjy0L(~6g(*&wL0r`IO9S{o2 zjCTBrHe)~t0F>$izzQP(-R1%DkO4TX6@aWAy_V(x&b!U-l?C8+DNiPVAe#vc00Y1P zFaQhy1Hb?<01N;FzyL4+3;+XwYB%u_kz4y%9d1)e=RiBW5rBIXQv71%0Hlp6RY7Su zrRkyJ+^aAEOW1*AhR#3kL+2;7Z~Zod@@2G^AoU~C$B}>Q8}?N|oSvTkNcHXLtmA#J zvazvI#iaNk`qDXvqe|b02>{Od6%`dXIGtNNZUDH%`;(KCpYS}VKpiNA830tT<$Z3T zv9a;zK!b9~0SGyY3v(sRy$T`=fKc`855c>-k8uN#NF@HWe|KhP=0jQqc>%yxdz_!2 ze_uw49pZQpHUPMIU&P#|zP|n!&*MP|0Z6U-1-11sI$Q`n09?q4X0E@hT4EDEIdE4vKn8sTOC#3c%@IFFex`6B831z8Xqc0XTi9udnY*2{YjHkplpa zzKmpCe}Dgg=f)BQKyh*LzW^ayaOp(b0LHn-n=;*j2F%NVuG7B=e5LA?|XmmrK>nhB=v5VG01<>$Jl?^3dP!S0))J`+NYavNo6};9wAC3;+Yb z05AYl0x&o@*bA>2cayfZwkfBVz|nlyi--U~t4lJOtYHcOMrs{S$TJ4Ov?N22(mGm{ z`f@P%@qqR|rd0U^^drwkrS-FJbl4fLkFMyfCas@Y5huTCi!6E6%l-ZbAf3MZbLKKk P00000NkvXXu0mjfJQXlO literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/laundry.png b/libs/Cesium/Assets/Textures/maki/laundry.png new file mode 100644 index 0000000000000000000000000000000000000000..53fd20de4216737841f12430ee9fb6d7d338b0be GIT binary patch literal 2407 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/lighthouse.png b/libs/Cesium/Assets/Textures/maki/lighthouse.png new file mode 100644 index 0000000000000000000000000000000000000000..a78e21a5b5a78a08a78d660a0129a7e0eaffbda5 GIT binary patch literal 1944 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/london-underground.png b/libs/Cesium/Assets/Textures/maki/london-underground.png new file mode 100644 index 0000000000000000000000000000000000000000..94972f7dd657dc83ea14b64875909009c651aedf GIT binary patch literal 2979 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/marker.png b/libs/Cesium/Assets/Textures/maki/marker.png new file mode 100644 index 0000000000000000000000000000000000000000..825eeca6997b7946c5308d0208d9a39fbcf2bb77 GIT binary patch literal 2448 zcmV;B32*j^P)Px#32;bRa{vGi!vFvd!vV){sAK>D2_;EHK~#9!?Oh8@ z)>Rb$i<*zrOr;c4QO$ z(cRrWg2?!;uCB+3%qQ|J5oaQ6iEIENf4`o5t|qdQ$U-7cL?)6yA1T;}O`wk?06tD+ zDfzyUe7X_YVuR?&zh6aUHj%M*Wcy#~lL2%h1{(plCT6;GX4rQI13Wb^>xKbzp1eqY zcOH>Zng*W$;YjWGpa5)dZ}+@;^QQOp>(_m+UAwjozPGitZSCyrbRW$BLw?(pe9k4G z4q99FW2wXJ*S2?bbaHc+fb-hcz-!Yrb zH$6Q)8$&}wE92tg-YqF9No;9p@fn~pT!>83%Br8$pN$95j~zRfuw%!L3Ig`81mt@} zx(6$uq`<(yOIcZ2hXyLWFfIBzQ^X+A`0N?!TX>1wigz~<&=zwq$zPi(dC zLnYqc-rtv%l|@_G4bLc23G^gu#vbbA$&;^;RsXY;z_Vs4EiEnAN*JpwC6LKZ0JP8R2`HJHcR?EsMlL%gV~iRGQQ6Pr|~&KINnYQ@FHNysi(C8h1RSp9qU z?0HXx;NKS?AD;%ORmfr&&~!r|@ayX8f=njUpK4VA?1J3f+;l8gB!&4|sioE5YZrWn zB<=K~R?=w7!ORxQY5A~Q<4rM)+hMrtA1gs4tB%LgV0>)!GAGIC4`jgn$ z*bfjhG*_%rW1k;ROiV1&68Io~etxxx0+xxPfT!3W4i69iSZfM^{1BU}2AZWL4%pk< z`-;{S045hQz6=%yF?N76693=OpaQyq-N7zKF%+VEWUpq z1!QMuXJ}0UK&?ko5sSsx0i#$F)`bff!eL8lNdX5B9?VCwq0_~x2drm#KwGzN{ZUKy zzp}D25-HA)6RRS&Sc~=GUbkwlAm(R-XnaxHQlQTSDk>_Xv{DmDNJw}aQNTj6IYFCQ zGvw*%*`xsl+(XO{*#Aewrlma1PU66U18=Hb0sj8}HOT7UBn2_c!VEPuGz1t7hC6Cj z0Ed{hKoV*q)@TDL8)^lA%a$$ISvCaaM~xGt7#KMh8f&Q48OO)RzatxRF5Lwqv0Lzg zfq@s*20j#>;Bq;lfN4_S5m>}d>coi?acZj(z%5U#v4`Y$#c1yzBO8*EXrWp~tN%7I zzYzt%_gkirgLvga0Y zkt3Oi?O!k3)-|**oGUx&ef#z)j=byV=l3mAa)g|}qaf!&COC&x0Nfu?Qo#oN7N?7r zvmp0DQ`Ii)c=;%{es~TuNC@5jj!o8akuQ5S?i>9U~f5mppvPNSEhYWGG z0`CEDR$QNH8kSmg$W2dA&yj1kG&nf8iqp8yNl@Z|9&1=zVmaoCj7H-vPBT|$L8*f} zohzteU?*fSMF9Z; zmt>G^`=h$LI+SzbRmXb;Xk(`r*oTA%hg;`TMm^ct*{>lh-=w+@>a?M&g(-qtCQ_NA zu&}VtI1Tyc32GelHB=V;<;Vf;a|sv@zi{&WYZToveE?C>8jMdQa)-sc*bPTjL_Gu8 z1!#}af`Woq#mW^$MMa(FL_M;z{P1gJhi zOR(X5Yeso_`O8=nRw82rEe)D0(y?Fw^Vnc8+#ZgQGb1A-o74MqhM>hkTi;lutq&bK z^!iYTrVw&+5^YNbEf0+5KGem0cr6x2E2PXeZNFEN@=Gn=BMFXjC@y?Jd6CoQ&?sr! zVHt*|283xH4UY3c>^{5#QPUykAe7*Q0R@iJR(}v08u}&DYFPTN=Q38pQjR}3X9KC~ zDu+%EoX*j9wE6zP1@i~w05#yYXe5knKXc|x43^~-{W6_G3phsXd@#Vq;JkPrWR4x- zfhl1oc0S0>%}s+unl%ML_{vE!+wJ}!m9PW@GA1VGBWv%4GZ8=cJe?*b%i&3FEPRQB6%v2sBRZeS1AGFE5Rg=W((l`Cz8V5%UM|&iI~g zjo1|;$=+37= literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/minefield.png b/libs/Cesium/Assets/Textures/maki/minefield.png new file mode 100644 index 0000000000000000000000000000000000000000..60e174abbcb228c0a069449a161e8d777fc7621e GIT binary patch literal 1907 zcmV-(2aNcMP)Px#32;bRa{vGi!vFvd!vV){sAK>D2M9?-K~#9!?Oj_; zV?`J)yRe|^eb)q|LR{Urn%##@$ZpiQ>jes>7bpS+DHo$4ay10CMj~Xn2?_+cB$bqy z00KUUgr`Ok#gK>~F@^^*E2cqFOp!=LK@^-ZttrQr&YW{*=CqwZ`5s8yGc(^e^Us-o z{uxv%Zrr$W+dBbp5#WB#23_J~0d!t)iL*o4_V@Q=e2~vYpw#2E(r#ke0gfSuwjQgA=M1Sl#h8s{uha6iCSy$JvjXhZ%8T*LrGD4;GkOX>Y? z?Ck8EQ$Sn7UA!Li^@S)Ofvr;vdw(Jd`Kzm|>4yoBo0~h$uni}C@OskoOOgH>sbu$~ z*Xvgf6TmeYhcl?Z+E3kMu^I})0ThR9v>fiojp^y>B#Ok}f?9W60jP}z)Vd4|47`9M z0GOnIpj7Wi@M76I(!%lpjNB@KoP*@h9U^o_j=rpj6DJp5)!rrLTF)_n04e6 z6$=XsPZAeuRc5XneM|pYquowZr$o-Rcug}iT{>;Zq z!FAXTH=E5L`)XWcW8>>mMgv?dk?j2*ZYY+9ulKh?7pfa4X46B6#Kgqk1iwkf=wX*= z2vAZ|@-9Z59v9i`KR>JvrKP1KLX{)rYsd%7#KoUQXjS7$!>z=LXL= zCDd|LQ&Yc{Ljc!X$Wf2-9}`1940Yp{3j~W}vIv4`YHDf~?l-{LI8FEC#@yUof>>X_ zwY8N(Wc~pU*Pv8jW@hFou@&&Liblf7$jI|@3IOLaG4)7KPhS*UrbeUr)t>;j(dv!; z{rxZDG#t3G9XSPXtqG9JUt3#yLTY*Q^Yccgu^5y$B^vI>4X4wYhEg_|v_F)iJXym5 zFe)k+5v{GQO^20bv)L>p1n@Tspg?k#g(|>(a;%DRk(89QNwfF+6CfuiXGYF)tXAtQ zsIiYQmTqBaXsC*&06jfDuafLo9zsXT9+i~KH+p$f`fvBGqN3s*k^;c8Jc5m%k}3x` z^m-8^_CbuCuCA^+lFxU;;c#SG7z+xv{aaa!$6_fZxwj1&HNtNIV7y z2XhsjC>89GC3O=cbFP<@egN_u76;^>7n}VR%4lwGevNv(i!7IK!CedN;RB?8Y=qw`d&7h&7T+y28T|k`!P8=*$EFhNKFC;&sm2DG~i`V z@W2JUao5X@FuriB63M?&3ehmP2oSQSv>h#&(d?tn7nDSPlo-;7hli^IDack?Svg4a z&Lm=Mf~u;jw*xua30&4!Ebr12l7E&})R8rydjg|BK45x(FvkAt>gqZJLV#f2fMIq` zzSN7gg9RxmDGzf27$PexD^Bq)2qvip@dkW2pM)6!o{?j{2#dxML8H<95-fS2t~Q-l z!dd`phYaSBVqE&9H2h_^+n-g;LQLuoS#@=_Ef9!@DVOlF4#8ePgkl81IbH7yQ&UsV z6c-o2rv$=HCes(Aqob9+BBYA_Pkkg}|L}@5cxeW_t_+IQ-Q8VVUtixL7A-9;&Ew9AMBi4-Fgts`+?w%nuPB#K))t-Ei)wRtU}p?LUTg tZQz_%7~$t&mWPTPH*VaxapM*m_74Whh|T#d9P0o8002ovPDHLkV1hw3Z7=`; literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/mobilephone.png b/libs/Cesium/Assets/Textures/maki/mobilephone.png new file mode 100644 index 0000000000000000000000000000000000000000..a40ef9c1f6a026e82e340c37c3dcb7667399555e GIT binary patch literal 1474 zcmZWoXHXMp5dDH8k)o8LoeBXYaMCWK5I~fYUJW_M?Qy!Uoz-bPznT@(@gO%MPeVva%C@cQ+= zgdXD6iS!^OuN`zXwloHyB2kFz#Lt@{B%6ySpzQte8QyT%2V+kH;7IdcLfXBb5&_`1 zGe;T!b9;nCyN4m#9&dM*m$WcWbQq~o4#W=$$2^A(J-VURl|l1ulWl)h6_eO!(}zN1 ziarG{C(0G9t4bzgl zR~Zc^W~LmGQe$enunc$G)437`t4EO1IcgzmA!kAy4j){ABiDB!*`iF&{5<(R+b?+D z2ic%}r>d&z!YqdqY{u7w2rn1WytUIqdVJG8IC#5sX=%x$Ff^~ft*s5W^fxNk_dqu5 zT&QV%es6EDJv?P5IdWsSgHXXeZ(xuGH$nmx-QD%t2f9@Z2E*|^H(+IL%}xkRjDMem zu)4E`2L@Kd#Y1y)a`YjMN`(Ric}j&0%&SkddWX`)ysc(nBtnRuaMI5`aRouS_~TS% zD-`V9s(0i}dKY2ksQO_tpm7=LmX--&Y1l4xc6MH(QmNjjAgZdWGR0+O3$ZnvL+1VN0GkYaHBg5Qva#qU7)YKIJax3VNfI#k( zy7d+4b>`fPi`lWpt}d)1)&4UiPpgR@6~$lVL)cQyX9TLX)}^AgFWJ~M@P&q`xNxG4 z+8QMGHu--nL&uXpOj+O#0J`Q(IwwI+UOq%|1V~9srwqN0)P$s_rq&$K#xMypxbPlKjK4fHBV)r2hZ|7ws~qKMPmC@vzY@wP>SXPX zJ5R4&pb}CKP4x(xs6qFufF^;^=Y!3#j^dJ%SrJHM6iW|(dG9s$DRBZEYZf?4>Pg3spyKlFCTdEhwdMZA8 z%~xj=$8^~eV_Kgvh3r>_DN0mn4)*uInG9qYuv=>0NaC)nMd{~6zssI<&bFG;#Ukcg zj}n_YBKKghXJ9N=0Zdhcanw_(xJSx8$(1~V2a}am;Bdj0bq@-WeuHCUV=!?0asc29 zYxJ7%>cTaPKY&)dQ0(o8WusXNR`H;QU)ONVdN@BnKZeC(9eswI`{2o?YKT1vtRP2N z9(U35wMh4dJGfdqD?oK)@gqO)RjV?stYe9*Vvd85h)f~dAAx#ML>@9iO3-#$$~VY1 zz8f{-{n6&|g4Wv$uRoOAM?9%wtRrdd3N?Lf+{UslWx>Dh@|)D2z0=LnR;V(Q>*46G==`!I=i?(ehDRa~;!Aa6ClAGk5)eKM* zw?$cM&LnCc!!XokmT3f%i%^`Ih1tNVsez9Eh@Epk_j5i!+;i^v+|Rk^q9Q2>xFZ|@ z00cFR7-QlCUjSQU>VMZ12ABvuLZA@Agu<=7uHH0l>QF z3m|tQ- z=a88;D$cwbdj7gS3O5&(0OKxU$yf;txuA)KRT06e!hO z6%`ewUh6NkO*`LHLkb{c$hv0>S?TF-YBZ}(zYWzOUT7nR$VfwH zXXm5-?&`}t-a?YU?e!^eSBs_Q_Ig~pJqo21&a0glXOD7fYnSko-JPi3j-ZXQg-{xe zrnegp>IUH;F$Ps)7?X8zOBG5bFI$)-IR;I=PckYM3PvRM;5wclDSo%#fwKQdbqf^8)g^`#>gp1a0G!M zrAZds$Cqt%&{rx|>}e9dsHh0{#c79_V#VavvVT5JT0nV`s+CKMtRwdn+oMKQvOe?8 zJq5?VT~VRTPr~D-^^-TDoCaOVe9BaHtgDA8Z?Y8n=79ilqSAm}dFc&{;@Y%)WBBUS z&9$gMqT^FjnJze-5vkJB!ouENvc+IlA0>iqH?BURA2Nj}(|hYyi8Szjvk&FpyZcV? z^qB5Fl{Rl)O75urhKUpk)8;N&R^XW?W*RKokeVUQamy_H>;vz6`&j&sda+n+>+xOl z`$EqxTYi6Q(ZqxD9cN6zP5~KH*KgbimeGpm0?$ogQUzwu>o4>91}7*MfMOq_&2{K; zrBYeZ($ezz@mO49VzqXs*}}2K(90o@nkTJbYogk1n;VL2Uu+lzf|e2;rl$371A#JC kPMO<>jKk$Y8}hn<{9 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/museum.png b/libs/Cesium/Assets/Textures/maki/museum.png new file mode 100644 index 0000000000000000000000000000000000000000..23c179003a5028a6345a3240900e1837ef04b8ca GIT binary patch literal 2578 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/music.png b/libs/Cesium/Assets/Textures/maki/music.png new file mode 100644 index 0000000000000000000000000000000000000000..dbef56f228820e5b9270f81cba7fb9eac3fbe0e5 GIT binary patch literal 1371 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�a=nmM0A^3^Z z)RF~IJYqoIwIX=#LX83pRS^alWd{7jiJS@!D1Iix#UDC!Xfa$omD?&`O4LlAJh@sU z2LQ=~FDrOM^%pK&NF~~N$jI5>OZ*^cS``HxJ$iJZH#d?S;+)RVguCAV@)sKRLf^R4o z_WjDr$~59o*1-q^JRx=#^sEYIQUk|bKyGesu~DaJtviSX3lk31l zTM4XuK_%4t^y$;-SoSJ=hPOdapFaJUNP9)$56oELu?{QZ&fK|k%g|R978OJxv7Zdk z(*Pc&hPkUK9rMX%{JVP0cpUo5%E}f{61$CMmw2!OKrk;6wF71~7u~7(Jj# zMnIDj{diIj@5cjvIEiMY;@=0ZBaqhLE6KBG&(2CuPyaF7d+r$7XQ$Ko2H_2j@v8WFVY;t%}v5gP;zYlPw%ZlBN? zKs-^)t$*_@6&@ZRCS!!x_pb#PTWR_3f5NK7gF&v`waPzq0%M}#gSLKZtZiwD8hQQ$q zr(vB8;nG;ekNRSOzW&D5Q%8RsbN~YqiU*wZ@uyf43;_;{s#_-t_BMV{^y?)LjfWuy z`r`eJBBxrGg&=t`e;xH7d(%}xG_XEsSeP{u! zB5;;s9jT|JxZ(|~%frj4^%M)qQi8)K3QYOHSv64S7Nz%Ts2A=)yDGAbuer%B3B~s| zvo0Hd$E=5pA;8*lx?CEXaG~V$i+%ik$I)W7E6}d88BFR2F_bd}mqj2W82KI?UorroF6G0*pgbcW;KkBt$NQ>?ABNFV7;{c}xa= zJl=UhfUFMLj>!4yY2{an_=@O8z4WB&1p>B|->32N&dckvtffY_W0;+uhiV2*9xSlz zbtPhq2yQ6KD-3yg=cPe1Sm}4c^h6+)U8xWQ+o@7daFGP`WOuh30UPBgs zK=oR_s)%p&O0ldrbmYj9T&eeIDEI-rD*GXgN+-5|shX++sqz33XbmYCqHew> zPMr9rw8c#vB4}ujCN}ZSymMEL~Nx9^d0iwjPL)nv`#(ikeyvazNjZ{JyDcYU- zNHk%9R`DNMDntsue^+tVTLm6hv&cJ^j2&{x8X%n51HS7eo~JP}G4an-xH-6_kRba} z`avub=g1ngXm~KH#N>>S3O{itV1S5%|BE^hNasOT3vS1>DqLB*wx;i^ptBZ7gcCBH z5aDm7_~1m5+4g#rVc(6g@(;!U!It^XZT__T!#W nKb|$J6_14T!!YcLT9fntSflJP1jA9f00000NkvXXu0mjf3%pY& literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/park.png b/libs/Cesium/Assets/Textures/maki/park.png new file mode 100644 index 0000000000000000000000000000000000000000..741110e37e065804f2460167763c03760291687c GIT binary patch literal 2059 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 W83OF7@gwd40000!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49sslT^vIyZoQp*He1+HrY(Ewwulw-x*bXt z9}+TOuho#t`Fmnk&f-iT?oP(rBDb0=M59~;PC71OuYR%cNc8^}E=!F?;*R_~GuCn_ zR(uKId8--ZIj2#l?dHt8H{Y0?eYelPfZ`>n z$y=k|N@Q%|tI|K2>$u3pOypba`+qauKk@6=FXel-DjYxV|IYp``=(8Sfe8~evF(d4N&mEf<%;{MzTZ+d zKO5$T9q!9xk5AdWY15}OX(u*a?%x}?S-PypMd@i6#{>z@#XH|kkF!_!yyeiFH*a=_ z9bA6V*UB8XROw4xd(WJQ}lR0mp*fv7vi-ek3olpEYNWj_E$lPrEV-7aEDNFqXtMX1toR z?)84@+a61U=Ig4=5&TxSdvzE$r=vi^t$n+8{n|3~_WgBjY_4H{bsC;DdButR3)uWU z$IQ%3u1IR{t768-b7ptHpS^eQ!MRFXHf;D1wd|me+UIHJ?@v8vQoE6RG2_d0pX%AO zXJ^i1xTn(TZ^WxM`DD|Xi}%u*d=mNhEV^LJ&Emj7CDibrWyZ6Tr$sxD-^}^8H1^uH zYx6!_>rdD|)obYzpX#?_7k^2-*(Sau<<{f1{_1;IEo|2O(X4el`*2Ly&3T(rx!$N5 z{Z>hwzCT|_#9-BmgA=Q&YwJW3*8E)jp}g<6^!09uqMJ81beERwVc6dtdFRQp(`NqV j3xGL}tJP}9FZSpA`Bn$LE&L2D3>Z9J{an^LB{Ts5?4$8s literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/playground.png b/libs/Cesium/Assets/Textures/maki/playground.png new file mode 100644 index 0000000000000000000000000000000000000000..5270d3c424195b82c728422293fc4589edfebe11 GIT binary patch literal 3856 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 UK|+Dz9{>OV07*qoM6N<$g531-egFUf literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/polling-place.png b/libs/Cesium/Assets/Textures/maki/polling-place.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d02a9041f5e01f43c9b4f73359efcfd8e51ad3 GIT binary patch literal 1772 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/prison.png b/libs/Cesium/Assets/Textures/maki/prison.png new file mode 100644 index 0000000000000000000000000000000000000000..355cba44adc86fa9820f59fe440e1c0d99d05702 GIT binary patch literal 1371 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 X_$`j+;@B!`00000NkvXXu0mjfxTOP= literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/rail-underground.png b/libs/Cesium/Assets/Textures/maki/rail-underground.png new file mode 100644 index 0000000000000000000000000000000000000000..42cfeb7e18d5bfa514901f2417063be45cb6f3f7 GIT binary patch literal 1996 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 D-P^wD literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/religious-christian.png b/libs/Cesium/Assets/Textures/maki/religious-christian.png new file mode 100644 index 0000000000000000000000000000000000000000..201bc81ca35ce5287e40f87e5974a3fef1f77a97 GIT binary patch literal 948 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49uRME{-7;x8B}8pMAMN;`m3asSAUT_y(vM z2^{&Eyx@UL!R)-hFIR0{)Wl&`y&scd+Q0UIB6ZRU8 zzj9mtFF(Ag=dns=@srhocQo#JEftE4kKey{+qSawNIC#1?NJiNBJ-a$TQ zVL*id58LUqL)UjLJHWH8>9We5DsG8u?90FX6g%|)?!}BRiy04y3gzu(?RnKang7oD zFvcrk6HcZ)+LanB{2+G89hroh;*3`U!Ll!JFs#tm(Xlc9u|Gjy)BHYb>|L2#r%s)+ zEiFlAPsq!AxAb7%ivB5#3=K>S48TO7!N9P90mwPH_j48H9U{8zXA(0e0>tIl~0b4ow^mP$5U|0?gZ z>gucBq>UB#SDs7T-2awoNzh7jzje_oLv}57FJMk6`pms<-MV{Qh0m3}xOwwtI4~_? z0|(65W?Y!Rf4<-H`PNrIsm0HpE4}Q!i_*t)CreL1E$X*oESM*sA{DQ8uy?Z<-^!V4 z3=-R{Co^pAPGtD-UgU;h`1&i0mi^D3&wly8VZ*HAXTiqS)GXV=XZCH$ zVTQlCG1ud!GNvCZ%u>SU1RP=xj0_CG>>$Fx5Wv8I;6PMg*l4tC{)bDKE?qu)^yrkU zVcVUa*B!dHy`h*dF6OZQ>HD6i&Ten0V`uc6xWTezGGC0yE2G8tr49wY6^o4Cx4!#J fXJ5?u<1T-hk`4c;O8@(n2r|{v)z4*}Q$iB}k9V4L literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/religious-jewish.png b/libs/Cesium/Assets/Textures/maki/religious-jewish.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c75f6b3087ab511b5d5b1f75c391633b7d5f2b GIT binary patch literal 2384 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%0AZtWr z)nphO^i;rNm_;QAB4Q9izzuop)~%aw^1c~FRqKY$jd>QGwmN}?cF~({_3G6N;L!rF z$qVT|3nYJl03j4A@Ibg2I)J-o+&r;T(e*SvTr5SZ8f+Ndunm(IZ2;hv0yLbPo4XRX z8{yV%z{AlF1{REwSW$$oTRPGiJ=6=qZ{dq_I+Uz%sG8W`gtZtfL@AySX`;FYR}&@j zwvjc%-mG-Wn?@RtBhxzB-Hy@=XxoDODivHMk8(lE^HgD7o}29uz$r=Km>=ME8gi)O jv&G(;DS1ksr~3Inte7zh<8AW#00000NkvXXu0mjf$I5Zq literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/restaurant.png b/libs/Cesium/Assets/Textures/maki/restaurant.png new file mode 100644 index 0000000000000000000000000000000000000000..816282a6e07e44e9e667a42d5c4e8759b0438144 GIT binary patch literal 2499 zcmV;!2|V_RP)Px#32;bRa{vGi!vFvd!vV){sAK>D30O%)K~#9!?VSry zR8<&&d1#thV_KPrqUEDZO-(f4#dFyWSl(~q6_Y#!m4_sT=on!$Mogwj!9Xvpp+Sa; zDRPV$YKSI_7$!0)CWnb)!cdG-q4Uq&t-Jr8yL;~4WdruynSX%2hrR##zkAL-=Rg1X zubtf(9HXP7(?>=|mJ-=a#9fe$L>7~CQ-v~)?pJLH^!OWEGLw7Swkt`Mx>i=OXfRCFn$c-wJvO*Yt$Cklz;)aj+ZD2T|0Sh&PcZ zB*Yym3I;V&MkN5;XrzpW$Z7zo(C9PC|1T465+5Vi!LnZIHLYcQjf~1zLf~$-XEZvr zC?_JD%+&M#ac6v?+fiBB_&RZ6(C;px`?AFK+{WYGzZ@&t+uIvlT3T9o^5n_9Xs6B)fFyP=`&}}q#Zqa^tq;{rbK*Bcs|%m7~VnX*O~74{{H^J z*4EZ1tE;OsiS7l(#l=Mp4GmA@a^n%ec3csyR{NuehsP*LSXfxw@bIu7u1I`*{71Sn z8jYr}y}dmOmpORw;7jEEO(^5(={XF*C=g~+j6a2(d(@c0bvH?Ja&m28VBmK?K0bet z>x}4h0?EqCdVL}QP>U6WN{K50m8z?&OA(hjfBt+lG3ejoat96^cv)QL`t|F+{{H?K z#bsh+V?Ut)xEC4UQFy>o4PRANl?Cvu z%zQ&!23iei8NZ6lgocKGMKP)q(&u5C;o+L$;o+^i7R4eQfJ^`|cc2*`o--ME<@ zIRFI!goo}9eExZIkpI0Q*Z3TOOaSEP-S`}gVn|;5T;p>9>;M*Hk7r(9-U$xCdH@XE;i;*q z?{NUu17P5Mi;IhE%+WqEe}@P%1ow}LRIr73-0f5j#Q_lcf1fVw)t*fg`9V-B2I9qLM zCTxoU*5jz=;NakPOBt zt&al`8Dko4BQ`)FWB4yvEAH*>eWkg%IYGklHWyu!13(73mB`~*abbSIv{NM`BjYUz z<2zBV#{oz{aHlMmUtpPu-vN(^Y#IPD$Rl`o$QrCwQc`l5G8b@QxTd|3ncbVW0JMR+v$HdTb%In-P*6$% zFkJ@xTOiT45T)TwOJ8gY0CrGv_}nxj4Doh_EzyydQOgzp=;iQ%q}Z&(zm$}e8VZ0p zX6WK#QvieqqDpBJrMS4bk0}7=aRBoAV71bX8xk8aTsQ#s3g3nm&&|z!l@$P_la~`2 z!2vM%XJB^=D*#BgK>_d(2f$w8d$8h(iHRSu0`T$i8KC%s)^Y&s6?RtWh|}$?ABKe$ z^c@>H0QN4(VB8%X9NZzp6FCC!bCKha;{fylJb=T~X}KSaNli^nI(EphzP5^YLC7fv zsb}OSQGz!x;k-af-)3iv0M=7d$jDkKhj|0uAE0|3A_ri)!kh71ljN>O!Mwp7hn%eg z&~wBI$(Jm#EB+1+fXyeb=ZJ$uO>zN1@+R88U=Dx{fSR&tTNZ%G$jHx3y)%phpaU?7 zh}*w^{|NfZWC@pY}-9$NP!MQrOghr$Jg|;yxIXStux3@Q#mYP!O z-7nH-CH~&__Vy^;6~Ubk#;5Gkfg5V}gaH5sqrF}P1Qy&OOFFnHAb&)0adA;cM@OVY zAgx-d6AtM!o%XT^2pX=asK^05pj(ni6lFAH%Xo$`gO)c)hQM97z`{dhjRHNO4%6%= z;vqoTrl8W^O1+;Z^jV0#wI&4CqG#GogFKP)Px#32;bRa{vGi!vFvd!vV){sAK>D1hq*-K~#9!?Ok0+ zQ&AkBAE7T)H${oyme!p}6=iGDt9~Mg) zUfFE6o}eX@$#jt4odhSz-_7KAtpyh!f(fDR1a?la5gaGqTLX3(7a^#Ppob&r`EY}v z6{HgqN<_Gp7){kie76L|=YW`~E0t{5Ye^$}jS!Shr*9<^30FKG?_XVA^@hXY@u{h) zXOT$6AB)92^gjKZgAmqABEE(+>Sm!NP=beshTd4M)~rG7jg5`H*xufD79qyfayK=n z3Tg1@=;$j#ScU`XOmua1{hXYfd|sdst>xD159n>&!otEMLQ2X^(pj+CY{|8?wfj1s zwWnOj@6^*EpU?MB1nDeCbw zG83=F($dnfR-0roIfwH- z4G|hen4OM%4<%}4V;1`Q`o2md0^M0;J;=_^&fQ8PUI`78)F9O6Z*Feht7P*3B9%(r z7BVN~TkWi@tURa&^7V{_lCSgWBvno13lX8(%?=B6ht~8RRq}-ws&T^QFcOaNm~Py17u@^F8uudzEgXxBi-Ceh0qc+jWbz#a)NMz1@1K~Mm;;gAH|wtJ ze(}P(-|&0EH(h3k+&m5QQ_{(}S=0Os4i3HrfyOaEKOfX|g-7ofXogsO{vgj>Gqk_= zpHqIgyu3UN;>=wQk&b_eX@1;p_j?e>4>L0}PgHom1p8kiI2?{IOf$q&0GG@4LB;?) zUNB`IfB=#SkW41;K!6enKzE{Un*q{y#Y66^5-lV5F z5P-h`TU%RhH36 zegG1MfOzT&*kq~pi;&R9a)mL8^i~Tl=6q342x{j@xQ*`M(glHRZT$_F WAAK+j8%yN?0000Px#32;bRa{vGi!vFvd!vV){sAK>D1`0_;K~#9!?VVd_ zTtyhi*GpSl5wV3T#rDMu*oWS%QqX!Md*4mmbwe&L5%M4j!KUP5h{X63N?C$0#y}I; zU@##jgh-x*JcxvX5iycRG$d3oAsT%UQ=-u%8)tCExZSy&b7tnu%$Wlp^dX%y^ZU=4 z%lCaV>+_k%@srEtjskmRcX#&;uxG))!@y!i?0H}Z4KaI=@56w#Y(S_x4OPqo0PO>y zqO5=;M7Yb4{y+5nyrCDGq5jYC5)=vD2=E{Hh+E)2Er63@W_fuzRbF2Hbs!MkpH^6Hz z0L3^TcN4s}0)X-U0TTSOva*{pz}HRyQ2A3N__Bc4P5{!z3hrKIgRhMMpwa;x{6r%0 zt&H$1Dk{EGUI5bO3T&wUlo39(!NI{6r3D~`17!t|8-A1#Ky~;i0l+Hmg!0iU72qp7 z0fS2VQQ$W=Hp*0iUsF@_sd56~{5orEYe`k$D>?py%AJ(mt-wHlQ%brQRD&N1g>EU+ z`vLqrc*5`O?0j!!Wu^Sz@}{S!Ym>?3H)i;u@M=1NFf=sOMDiO&B9UJN3hh_Zu~uFt()WT2=DXhe-AdUO?fgOoc_>0?b75+hyy}!G=`-&UR zuwphhH}|TYcg)PpyoM+<%FHL@6vSRHq-ggt4g9O%u~T*`mAb*y<$yXd;t)d4ZQp)6 zot`dMhq1A-OR#<%#64mMK9}LASefnZ?blQbu2_H{W$F@km=X4+4w0=wo1L9aGxv5D zD=eGMwz2LdR*!eeW{r)FA2Ppw0JSl3Qqj@T(aVM9O-)U`t}^^sEcPR2=sC?iBE_Ni zt334VVBm+DhXe-(2Hs=|-|ZtpJeRXh;U8exTT$C`17FbagD5MfBYZG--pxe-n9t72 zAI>7eB_n)bhq|GD=WVswB>2p zj}o0!Re($;bCodcoRR(@9nAAoQGoUJ^_L0o+4j0Z3O4u)4W6lgV7cy{9k-$uk1boU#EE^AC2x*Vfj4LUAv2j?&$%rvUk( z=wTeFiHV6fET)3bk;e3NI{leNf4{y0fXdMS0{$vQLjN#$oW}5*Qy#>gB z3HQ?6;|~KPdx14HG<-z*f2*sjDTfg+{RNgsxzVa(TC z0^~(FZ3jF&496kp?mYqa2oVw)XEp+$=Z6v_fLso}^F{y({YgduBY+XW2w(&-0vG|* z5@5Tfr6r3=!rEtOvljph-Tb6D9|3k~p&J3%39!@L+&o}@&t0qlj-cl)Uu(A4g`o8=<0k02D%#}fKAjxs<-cNp!DL1_j$x~00000NkvXXu0mjfqwgCD literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/school.png b/libs/Cesium/Assets/Textures/maki/school.png new file mode 100644 index 0000000000000000000000000000000000000000..fb20bf4e24eb49d5b4acfae16c143e714274f338 GIT binary patch literal 3838 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 Af&c&j literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/scooter.png b/libs/Cesium/Assets/Textures/maki/scooter.png new file mode 100644 index 0000000000000000000000000000000000000000..41f74164946dfdadec10b1851bd68a6a2cc58b3e GIT binary patch literal 2942 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/shop.png b/libs/Cesium/Assets/Textures/maki/shop.png new file mode 100644 index 0000000000000000000000000000000000000000..11a6b755a2b887a911ba0833071d857352fd307a GIT binary patch literal 1544 zcmV+j2KV`iP)Px#32;bRa{vGi!vFvd!vV){sAK>D1)WJmK~#9!?VVd_ zV?`LptLuucyC}QL>WX&+7jLY)EGsK6?j~)LUQN;~y`+-XqD$2h@u9JW7Ao~Yi(>7I z#rC1JFV)s66s>}_R9tI)s6`(X!5WBEBE@Rlu8C)q#qH!f$;p{HC+Ru=!2d1zCiDNz zne)w@nK=aodHzWx68jY$63~GHe6)R%$>bG^VW$+87$v0)hoURtc4|xa7->8uxc*HY!$ES8JD+mKyYGWo4x<7K=Tu0Yb5z%)dLG z8I_flUppL*q->RymHn6j!g0G~I-~(ZLqlOBjOP^&hX>O@*k|?DPgcCOwROr2^DnBZ zs_HA-Wk+gVk6A6BS6f@#J1P(!vQ6uc$Kz$`Ome&3zZDl3NA*hieJox4wY9ZMTU-T7 z-@litXklUDpOi77Q0Oh0sb+tF|4S+m5-PtrXtmbw7$oE-VN|iS@ zHujw5uL7!qN*D19Z-&?F{m#fiS0E7hh=6dxmH?>MXvWA_Yq?6dd6`xE|J{NBoC4BR zZZsP85dijB_6EGXyj*WaS3t${cs%QT*)uaUPZ8feWR>pcF1~W(>vDp zV1q;AKOEi(E&N0_b1}oi!!Piacez}@o4FD~8FMTV4`|-aGS10d8-GS;<-g=B9}EUR zFcW~vQ@DiActv?}V-=Z=oSU0#F?&6b?Ach;W>532;`#JH%($sK03fa0Mw-7T&9ajB za08m{<^MGss$M`}91_pWoz>y3D0v{T_+@0!v>gwt~2Y`R|x8XNp^#9psLjV8( z000000001xBLLDy!x#l;Ry-armA$6vQUJH|!6T7~561s5wgZO%a7-ByM_JLpvqVR;!f181w6wfW0C-d{fRuxlnwpwEhSBP(sHpf}+KreB zq*%61U88vyhv5{dYQx2-Bax(3@)^=Wo?_DQ1g9?13z zxRDRShS@MUvjztTUnBtBpY0WJgb&i!*Y`3E&a7ZCI70v^6h3FIp`qbZ7@S!ikLOq6 zOh{!x?s*t&QYwlJ2mk;800000G95PzX+OkC2mpJvER5AI>ZL&0n13^|FW3)bwTqq1 zD+1tf7Ow(?2sJl1&*=t0%>%8kuX|yv*n}Lipq-wE&d<+30dq5JWMt%d830aFLD(th zFj-yf-3Thn6J1gsNnUz2G&VMV!cI=KyV%yG$;rvH(vP-Resp~4N9 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/skiing.png b/libs/Cesium/Assets/Textures/maki/skiing.png new file mode 100644 index 0000000000000000000000000000000000000000..4fc11e2e5edaede5a1efa409aca19b46619e7149 GIT binary patch literal 3345 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 bNwxn1+}=3eX&$w^00000NkvXXu0mjfOz$Od literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/slaughterhouse.png b/libs/Cesium/Assets/Textures/maki/slaughterhouse.png new file mode 100644 index 0000000000000000000000000000000000000000..9b094cabd1d164d2d71bd420993478ed4a355baf GIT binary patch literal 2270 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/soccer.png b/libs/Cesium/Assets/Textures/maki/soccer.png new file mode 100644 index 0000000000000000000000000000000000000000..2385daf916c328a4581974f3793f9d0d48a617d5 GIT binary patch literal 2420 zcmV-)35)iLP)Px#32;bRa{vGi!vFvd!vV){sAK>D2?&^7?e%~kc;{Gdd8C^1}%wz~oOkLjx< z+RKUQO0-*AY0H)x<98U$bS3g|b-Dg5DU+tAru@gp$AgB4hr_O3y&84p%9WVG!NJIp zk&#e%KRrF|M*#>=SDW!W^)dk%Sz20J=IiS_;^pNvhfBf1!CzHXRlR}(gfw9uclH^- zUeAClD=Uj^Hro#*4A-K-z`$?LpFf|j6Nr1Aan@T=XS$D%&-W~uu0;O+{?~PY;N>ig z-+(e85DP{yU4dpnpCE#0fhI$uqoaE}Iy%z& z`}P z(9)_I2L{tP;f{`uhV0+J|5uX!96EHUK?8*4JjKo$rH;UC!5w5kK)`iMCt1~#H11i$ zY&PFCd?iR9S*bQSoPlL$XV)8H`$SPqb~}0pQ&Lh=E`kv*K0dxnZ{H08 zftJ_-c`TYG6vp7~?L9*Y1RD$HTWN?L*s%y|ivE|*o;{mO352aQnZJp2=I`6L?+=j~ zFEg%L3OZpGQ@M}I{HUm?Pn?DMcapSQ`jK>ZL}T{b6i&B4qjWAaGqc$lnZH0`VPT(> zoD+zws8R!u$u-*4)bs*Mr{GlT%*b&rf#RGtXf`V$wyP;WvmA4xi07=&UrS^e}ii%>Afn2e<4I&NPT+FYkO`_t3YThtmpaNxj) z&LDnB0f>%{?j!lOLM-ZbO#pc8EJOwX*T*dv5UeVOlpO6E4c{hZeoalyOQHe*b|}`{ z;5%o(r{f=cdU_Jo8qCVdYNTM?8Wj-$76(IBJs|f-yWRe=tB4=H0I>MJLXya~B_aPs z001&|6vdDc0311T@4Mfe0=-|ya9lH zz0m;3h1&xFTV&Ej3t0jX8you(ZvY^n+h_nFi9}8WEviTY;o>X-7#bRi;0=HX`Uyn4 z+zMFafRBlZ>1BNeK=G^6BE2Sao~sZ5c*gN%Mn=Y4yxe=Nncvvh_@drErKF_1%c3uG zE=mC43CEY^<>e(j{j0ULwTEdBHZn5uQ_&^{6c~}y0gvd-Ze$hi0TB$OgA57^`kF>x z<{dCxc0u<$zJ#Ts)(~VJvI3#FxVQpma1h1JBB75a0MH)NNf?k)YpAcUFP=lX&@{@R zA|fI_V;v0#ajHVug0ix*ns|f(0?u0J2M@Xdpm(T*@@p~?a=R7)c-rxgZEbBCY7Ij988`Fq zif{c*uO$?U)2dcIp}h}IN=oWC@QQSP*OR1GTb| z67zTj&$4DbPL!LpZTt=~N8lZ`c3^cNCuzw2Bgkvf940)inh-uu(!N4^)Ltb3JdBKB zpvm}#hK5{P{elo0T;I0tA|7%-2n-Ay;sF3H#VqZ~Cs_2azP>&Ob?2iJj_9M6q-Qa5 z73AmV*NW_6Ti8;f=thM;?!d|u_Ve@mR&-IsJK9c-ph7Tqw!G2NY>*W04AFLaClTDA zfLbeJxm*JU1qD^2t^zGD9#2xTlTj(u#4D*zF94`Dj93$tX;$dtPQB%7?vZNY)6 zXv!r-59%#QEcF2n08pdH2Ml-~wQ=SbjHH?6AE@K>EN#Jj4+$0LP9UJ8GcV0p_pZaec`qr4G1LTM4vJ%n%R^!Ma+Z@vs7Ep9jFsq;YqQ zaaXFV>4ZB((yU0PVjUj3DTFJmR*G<$+Zrvgz|)jXgP=?^!UdmV-NcO|pLu%L7&?Qj zCQ%>M%bR&Q`cVmr(;_PQP0nzo?ON0w%Y59CAvyv|azb5H#J<{u6FCS#Y!$JD0aSz3 zd878DCTD%-J!>|-dwIxD&`J_PB`CiJHSjR*l=m{Z%A@4y*F%sW2F`czJV7!!Wb{K> z1*mNS1xBFC3)EwPdPjucvO1l((J7iNA|_e5)Qm?2!b1?|Z!|6CXFfE33umTpHn|_g mm9bhbagdNag)kd9JpTY$dWdjeo!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-3{3K#E{-7;x8B~}*d^>J!~P&f`9|l`x2Eao z3tN3x@d~|L-02Z7U`-pt!xtz_=~T(3W%O7P#wsVS#FyB%#8K0mc|M~nHl#k)T3 z_R3QA5B5ISn$-8jbH}}u@ALM=t-rr6Y<2nRr=Rwkc)!Wsd~?sr*I(~1eQs2GD97w~ zh={9Z`RSyMKLU0eE}u8YM=gFzc|}Xazr$CAy-v?paftXoKa~I6^UwWUr{`apHzB6( z*yE4ktxx^$%#dc}X+QiPDE#9s2QVZU{8$%UfBpB>_uuyKs-495_cIwt@Jw6x`pvp^ zf*@%IhK9w=d*00XzzpHhf;^DR80Xp|+$W#+_3&Dd1qC$?9}d|oAFB1AqmtCtqiDy( z(2&9?(d%|!`jwVQu)2o-Jo*Tgd%$ zV-WbH+Sl&?HF{d=M{$Ke9~0!AV)`D<6EJ`FTKn! zJpXvZwM(MQPoGtP*uZ)E@6r1A)z{u~7QK#Xi#xw6_CMn${@LdfjZ&OIF7$Nub6Mw< G&;$SjWBh^u literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/square.png b/libs/Cesium/Assets/Textures/maki/square.png new file mode 100644 index 0000000000000000000000000000000000000000..babc9c531005241fba7a844629e8acc4abff26a1 GIT binary patch literal 582 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1quc1-Ct2978H@y}i3I?@)k5+r#EaqwPNDl4i`l zp|dJ2aRuvTC#&>zO@SltXBMJX9yH|D{-dY_x+@rRrNELy_|LMPx!Q_XIKlO|8H2eO0)Ur`j1~+>H&%5o>g(CiXowIv zvHR=(&Ube?mMcE_d)u-)mnSn5^)B5ok^RT{ciAfC&zCc+)h?``z2en^eP69x9Uqo; Su*@+4IndM9&t;ucLK6V=cF+_6 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/star-stroked.png b/libs/Cesium/Assets/Textures/maki/star-stroked.png new file mode 100644 index 0000000000000000000000000000000000000000..242e42e206ac917a8f6f2115291f97e9ecffc2d7 GIT binary patch literal 3460 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/telephone.png b/libs/Cesium/Assets/Textures/maki/telephone.png new file mode 100644 index 0000000000000000000000000000000000000000..6d57dc61a8a62c84825a83c8fae7c1ddcc6d694b GIT binary patch literal 1702 zcmV;X23h%uP)Px#32;bRa{vGi!vFvd!vV){sAK>D20KYaK~#9!?VVpp zWK|r;XSb!7AcB3V-g+pamW{2pjh$LC9c8sqM|XBni;5nkfB0WVt#&nEL&twPGp&}X z=z~6p2tG=P`5=anwX01#IS7Iv2$E#XbPsgvdb;=AKXcDL=g#jO_~GE(nS0LXd*^rl z|BlB4ETz-whf}H43zA)vtXQ%)b?kNNGtWwP&Lff~;13yqY}S0z_nsAWod=Iwu@FKf zNnl=d0KU>L3F`mBFLW6GzrO|nKb0yn0&9PNzkGRl`MrgOg%9TD=04K0`T6+|S65fx zIXpZpGb#jR_{0{?z`(%m{QUfMhL)O`m}t-wL8=$dK!dLdBOZ_6v;qA8Ykl z!Nc$G@4rI>zHFgTC<isjI8|ju-gD!^59u zU5}Ymi2C~aF<#(DqtSL{-bzbLw~@Je?1%)vp`qa$Uf_?6jI?6#i`n`mX?+nFYt$khCa&_zR%}7;Yt9vwDZwiGS<$2VC8#`kB>{Z z5x^}y+}_^aPG#Q8%F5z4&mZT38rum5gFnjms;Q}&BVF6m)6=EQTObhFwsOy8G8yEi z7tC^06Ricp@430TS*dnyI2^{|-?tmSWKZ%mors6@00k|1CrKxr#h`wXQ=xJku5ymp-5NiZvadpQn=7C$z3dPqdMH z>MUL72Yz#N^Vc-t>-gV%LY^;ZeGb7T-4n04F}uvuG-AZ*PL>h)a+0ojO|OMiRaLd@ z^ZEX)uCD%G2RyPXV8-(g4h{ll+>TWdOc+1#+uPfR7{brBP!@02!0+hj7-R@PCxbFw zvLe`jas26XsEtl%dS ziJ+71d>-NFvhw*Tum;T@t{dQ=Cv>u64B_W^AS5jS-QC?^GK8NC1%93y02DcjmCt9g zc9OTJpH*we$V^r?!GBr}0$S6~XjBspe66Q{YisKki?y1d+zv?qtBX<%L=)KtU*Q@N zfY#H$wzl>*=%%I${70P>U}IyWS_D2lEx=Q1>tHCxSNmB+pFJ(WB^(5LN}b&D3Az$i z3v|7{zW$ceo1XEQ{Xzf+JI_J7BbEXnL)(Kui@;I<}13!fkefWx1io&A^~!W%*W zx;xPCtA+o<#)lpg0@z^TaQKcIeAy-^C+k5Sj^JcJps%m*HVM9LOG``dYy1k%WupL& z^n~${FIwh%YzIh~cLV`ThRi&3wL~px_Tk0z9MPhW@ewe|mbl)@)EygZqAqK+TF- zsSE6YujPIm--YO8`e)x$M(cvCMwB(W10BM^oa(QjtE;QWY!q>;@CkbYK#Yu@C+q>c zODm$Rk-fiQjt4{|k7j}_sYH}bQdlc=(E}-w_6H~r%)!r0p#=X`55z>;A%jG~PYY5z zIl_iRF=4{jtCVq5o|$4}bipegk@Q7CCk0V}|B4`QPy{R6mUQ4>7Q{`~31&8Ha~0Io zg(7$}30I&~;R^Vfx}%wynNQTf7Zw&Cot&KbxrwU@p>>2pNa{qj67Zd9qUxA%I}Ak- w@NE*oXBNKXb{-exY)t5=ZiDc>g4XHuH{NepCC=3qnE(I)07*qoM6N<$g31Lx@&Et; literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/tennis.png b/libs/Cesium/Assets/Textures/maki/tennis.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb63205403a91c1a22f1bc01fd498ae0da7865e GIT binary patch literal 1658 zcmV-=28H>FP)Px#32;bRa{vGi!vFvd!vV){sAK>D1`kO@K~#9!?VW8% zWK|f)$8|TU*r?rFqM(8z0;9g!Zbh}Ncizmo^R#)RcI(>X9h!*tKNFLUm_=Q;OWcvwFybI^ZWfb$H&LtHVC3vto)<&)D?z^hHuV zcyIlxg&rFl8-^l&#+H|tTS@Ckpn~q~?CcxR#Lw8?-d+s>!h>LDxlqN=7zkG+s`%*% zTY^wOFE8R3sTHuZv-1-X0ARx_u7puh0S^Gm)Yf%G5nsa-=srA!(0dmE6aMAi9EjO68xw*O5 zx!6T>W9v`bEyvvudf}Ze29R(YZn~f5Hg8+7R zc4{R62LYrH*h&C$7%Bls01|*p0mNdlFC+l_mZP7@efh$|LWcxkAAl2XcSAhviv6zu zUavPH0XTRjXmWD$P0@r#v2BT00H;NFLs)!Lowzt3q*jQ=#>Ov25I-7?eobpsya0GX z#9okl4wPE}q+Zb6+`I@?{HCU+D|#9fPXPR)^aAAbKi69qu1-p;6=r^Z{xwMAH#9VS zW#mgA-T<6eD^P81?Iz^2|6l-Ud?$7bYRiWP;0&~n^+-M+B!Ki9(MzOUKoCYd-~rHF z5&q~Iiq8iPfChnwz2oc|uCM^KvLZSam@{iTRsle!@YD;a$yi%jT0VmyzCi%|K)~na zwJHYrI7=uL`h~m9i)veydaSRn?|q06@I;df2&64aqc$`&^e*IOYey1#pqD(rI;S%p zvewnrtwDhh4u`*|q&X|KQvBPkPOyz9aWgYB7t71buk#F{qN3tDr5=7O+)e>axRsTa zR~1G1E4z@ry}cjgkzm^~>+kQM&;y~SrshZ6VgmMWYA@3BwM=_^`=_EpKrvz6@}59S zQ)A>q4V=_NR0xqs1z!1uq0x&yzz}a-UO9l2{Jxi=~N2VdL{7jV;3piTSDzP{)D@Of)A?vRsdC$w4 zc7aw7QI))UK%O7z{R1IKGYbeBleM5DF`%uj?J|^mTxb_k=!HOAw$NQ~0svFjknHd8 zSF8Nq;~q{QMlpf5fafy>z|6Yq%-1lm<4c&ib)m*3T1*wfSVp-7jg*)UHC&|c1T z&Bg=tVKF+=IIHwB?d43?XrSMU%_1gLRaIT3X!MxjBZ;E7d@CS?LZP2c>11+y@~lU& zheb@NudiPr{KkuV){5>W?H9P>+E_*qMn*>7Vd5>)i+4pHmpv?os3N;-5HUgRRzIn# zjYCwN07U|@I3^4X42)AQ7mZ2)HuMCwR6pTx_y-vSY>Ww+t=;wY^%(wF^f?okJwb;( zEEQw};b{}%D^fXz51Jp{V?g{1QZeg#L$QYVXR`nQzfY;c1)GgeumAu607*qoM6N<$ Eg3(O{?*IS* literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/theatre.png b/libs/Cesium/Assets/Textures/maki/theatre.png new file mode 100644 index 0000000000000000000000000000000000000000..772c96e4e31b501c5ec76fd5838bcc98d7c4214e GIT binary patch literal 3233 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 CG6nJg literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/toilets.png b/libs/Cesium/Assets/Textures/maki/toilets.png new file mode 100644 index 0000000000000000000000000000000000000000..e87cf19c072126f496cc1918a344fc3d595d8a0a GIT binary patch literal 2917 zcmai0`8U*!7yir`W0x2T$>g;j{i9$loppV zgOzCs;(;(l06=vT%O59t8U_X4G1LJnhpw#C0F%FwZ6E-!cm3y}KEF~|0AQvd^$?aJ z)0_4z{+3^P*~3q?3mEZtK-@5?k;R@ciRK!v9tjf)RGI|&uIQP9So`(df`6Ja*cK`(7(3p+{faO_hKj~%J9uM z8r2DIq%7GNY6{4YayvGp;JjqFn*ed;H{${5w_KVvTJVorW~z*VXQ>sodu51`p`9%a zhNN`FuCb;K21E?Qnxg|%-~CD8SAyoKV;)=D+S=|CGoLEMil(psEkT$2`=y#E5nM?>l%{oS-|5c}S zA`B3HA|fKvF3O4(?fB&f1!WwD+90Q6EI36c*p<>uW{9j$SJCd@c;8s>wx5R)oConF$N~qRj7;92o z4IeKyoiVP!N7DlbH4ed>(;u(Jhn`DX2(AvC9rvgFwVa}P)!qwMUVVEpocE^Z$bu_f za&9gb1m!$k1p5ujQ06~)S)@FCrcL7Y$c_q0r{sW1WgtH(*#_T*wr5&~(Br=jUiL+R z=hK-1gZRq<(+wuEX%BrSE6-jqyCAG9Y^qaj_NtBY7MN*;wFCR&MzNB(ANr1N7bGbV%eet}3nWap)(<%8F z^xO{6DVdrq+|n4Z-20-N)b82@AI~ZKn8>fRb>@Hf)Awo@E#SP^yZTxMQF(r0`M9}b zW_^8~%2>|>C_Y4_%s(uFTxMnt@+Cf-@7 z(C)u)6UEwJyhWSXL=c`*>}3+1zqpv6t{!^exmAQrlWcL=ehq3kloC%B)ciXHPq>=x zTz}9Pme#)&fB17!#vL*JQu{^WHQlHQX__RoI*Q=cw?7QUoa)18hramHnADppVuH1> zv1#Ci>>1KzBnMfPwM(k6YZRK%anv(Uu_`MsuO*1ktIETB2CX0Pnz5n&fj^QM+1L}_ zZfTf7!atA%TxWlQ>|J1Bw4GaGu@P%^W0-ZiJ*yTgKan2uIcYoe4UX zPVwsqbDc4g-P{m5Jl>f)X+D8-(}CX_V+Z^7Z}Om2c6>YZKN@qKQ!7~#&(U8r#&E_`BP-{gnBBhe5mZ=E04^Ak5%R<}G2W1JN+&-}yRp!-WT-M&Pc?~G2hI79d4C93bYPCQYI3X5QdTzpPN81Zj1@pV|TfNW`Q&udl=}A-K)Ha!dSd7$9 z{#q079P~IbMz2+!d#iqr5co+LSnf+&DB%Xm;9Ww*NjLsmfvbb2k>!&YgSGeDin59U z9FNf)pdROU*|$!vf1kiJt9c)A+PjH`M$TYw2pWGK= z^b?M|5ZteFCcq%^%5RS)+ry%bj?Xf?P&GSC-iDy{F-1!@9fnzY7DKp+VZC91Rhwp#Fh@Q4=k8 zIylcb$I2dkv)o6FmhpNY67cuH73ALz!e~i@hd$Yd5o`0&;Ep1tqPf!maiCgRGU^sg zV4mYwr5F%Hb)Zd4P9zK(?fkF=P$S85lxpFnmMBn6EssYKgWGh3Ou;UavK5lmygG9& z=L1H!3PH#4U?P|Pk!fQ`BXd37*RG?x&W6Uf3;1GPw2PWzr6~B-lDf!8L0o#l@oIMmr+YsoiTO_bvhXBgw{o zMparBadH%uptTV_tFQ?Dd5!>YD>FVk0TrdBHW5mlWh2YoN+I~UY zR6YA|o@Fw&MV=Lc`C=`Qx{3Q(W)_x(TVEk>v!dGSJ6}Ka6Q8x;r z4hkAO969Jr*~JSGdW}n_z=y)4pP$}UbHs1XHU>`DJ(^+G=Nt;hRCRGa?T$GYo#omR zAnB`Z77nl_^pGQ_FNPRJ)rv{?%K_m-UTaDBc=(^gdoQ>c`$B+_ou8%!V8FM3Q)%?~ z6-HcAdtnVmR;*wY>?kLmD=0V~A$SM!{?*23FK>bl0KKdPPvRuAcr-Ygx){rM<=gQXj2X IspE+MA2>mI{Qv*} literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/town-hall.png b/libs/Cesium/Assets/Textures/maki/town-hall.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5c7ce4d8f5c83c0f596136ec9b8995874d52d GIT binary patch literal 2005 zcma)7`#;l*8~<#`b*07%T_8#*B>(^*uKS%2 zZgS8sC~Vp6pKrujZ;~vXKp_A?O}6q{u-v8wF%G)y1FCwor#FRS)P7$E0H_Ln0ra2K z+@k;>f6~>N;Kdx64NUa#^48i>A^B8V(Jcuspj`=@&$pulq$wK~>r5XpKO-LHQ2Do(G@2WxAsw;w(fynuct#GK1RK&`Uj(jVVu z{Sk2ZTMc#fFEfuL25;%;=p=iM$NkQpxnq|S;*DCQ%LG5EEn%&Hmp+n{lUs*tX<7FK z?=m-E6lG;)9hHx~K~bq|EF!1gbu?E;qfoWF;+8tS;Vq--t+Rtq9LD$%(D;^AuKbW5 zX|1={<0zF%HE~|Q9Ww6UsEfr;=WTb%(l;Mk0Csv>~*B~&r;#&jhuMKS2Y z`&St2C_Yy--5d*AwCp{xTgE0{rxlxELf-QP|b>FunQb z@=Lvu0SFe0#l)UH``mn}T4gRQy(}li+*n*#Scu<&7e9xhP~S_RhhRhO(4)heR9~wo zT8f6Tcxh?L*xTssg4gyDr81vNKPe$DF0R6b2eN-dtl*vw3v87E;izlD(T4`^_a(Yf#&M)?I5oewJ{00)6nwrd2bmyXZXfrW^ zo#9KvpwWY$i0y;CJ0&G;-7zvjspKKP$>s3&64uh>E8)Yp;=EzEX86y;O$pM*RxK z`n5>3jB#Mu`kgrL{Zf8@cAtPOnOCgQ*|sl_??t-!r)mS4bP$#*qv#0E0rc5c%IvX? zn>TOTmiDb!PJRxGz4-{3;+PqzGp-vF0e#Hj{ll$t5X{!}tnm5)T#amSzEX9V=)Tbr z!(o&e%x>4;71I`=-dJlob$p|xg7aY@Qsb|trjL$y2f=i?Awz!aIeGlWGyX6b%xlvQ z_^<0X{)8)&7Vh5|J6m`|o!j0DYmKD?RPU+@HSJ5l9w2=8dYtH~Ijss}@7T)M9xkDyziu0XaL^LvVIe8WbA8}3l& zO02`@5%9ij@B5w0kCeynJ{nyT^r_qppv{QIG1~PH zHV1?_`H)B*ESK5Y;ikk)ZP3DD?RxA)Jn>iD|C|5+ryiv!E5&U` z0AeTHar@L_7c2*OEeixZSi!~1-rw>k@R(1z1XfjOuPxRv;nO`4+_JJA)Y85+ckugu zSb2H55p?ATy4YX@)Aei#-7X2{Ap4pP0mD_6@BnJE+@vRJvbE8XJFY)JuB6Vlk7s5( zqT@QRuy$E#caI=0uP()WnI*fqxz$kd$_Jm;i7sYmJ4m=q5{aaL;<&%fNsYQ^$GlEr zU|5drAJng=nw(v?hp(Ez3knLZ=uH)_l66xwTXrKSS8VdS<{vsPkG;fzOG_@)9(f8y zTSX@2Uc4s1>jQQaEO}Q}_x)%5nnT-O1*20CSCcgUFOR8Scla=LK4S)D%hgnu$oc)Dg1%G`hAs!Fk zw&?6Vvy3@}`yUzOa5zEb8k1{CuwOVtDvGGAs_H?M z7o?U7MV>-qZg2Tu>UQCtcT=rg4(v%tZiQ34!X<)1!au(yF;Hu5aJEeYhv%W^t|rUK lSR3VCom%N5A_9k`zag|-E9W&E=$o$?a3xZmtM&z@{R<5!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49vegT^vIyZoQrBogwVV(DwUNBS#QRu4`Zy zJFEVprmvm3$!n!29=o(eQ;PS7^TF=DNA8tm^EG`f7^OK) zZmPq&y%M=|rn((6ntkrgxtwnw|9`kYY3|Jbv#;l!$Z=+7aTI`|rck}<(w(y>wDjJ( zbH~O>X2}lemnYu7JHxJI+%}? zE{V4Oad=Ilo{o;qi^0?}L*84}K&K)~;ELZ47{*}7nb&QMYT>o`gMBj!PmCt=HFKwdvqsjAF@Btw-uvJe<0;*}`yU-Wdi3`cEA3robJKZqva()jX5ak# z_wW4{y=yI3IRA=IpFVxDA6tS6*S0466H*u6ym^zn`Kfl-r{EL9aku{18yS7N*2}P^ zZ4--;t?gfz5L-5OcKc$TE4@CK{Y|9)J_uqkwY9YT=@VAl*4}=9^Ob|s87{s2QoQ@s z(M{Q(cpIwLrKV*4IM=CKNNx)kND&=zmFc=4jS&f&VWG&RL4 zx#vIEO-{hv=7PfoWmR*hPn-6R37GQ1;76Kx%2FQf>%k&RVL}WIu>#u`LU|9^8JL-w<6Yj{ zY~Y4#Do|v2(*##8!Px#32;bRa{vGi!vFvd!vV){sAK>D3aUv&K~#9!?OX{| zlvNZ)&D~sbE7MFfP0h-E$z7IVK#UznS=9!1JbJ-)SR}vkv$VFhEC{0KVQl*>_t?1TA0ldy7CmfByWWGiT0(m6erE z5PW7Nb3#3dqWPo0B?D2-1DlbNvE0YUr_j~a^$wV)r{`a>v9UW!OG{rsoX|}oY5wRR z#siw3o}R%#zsszGw}^;{L$`0=9*^)rBZ;Qz;CJG|hvi14Qk7!h>y6EhbYvFvlZcwQ z?hBP1c;Kl+N|408|9-zgG7q7Mye7%K+hJKC^vO9A^0|~xP_XrPuet!N$wOakBwHyG1yl&mP z6l5uSMiQ@1Hj=OyMvOn8y77+=#?CjaI zp@O^@09-Yu2nug>|0ty|A#bBZvclkn1}W`0aTR3JMB>y}Z2s zpn%8-y7$vu2QM!#FPg3CH!0u&M<9Fpdp2+0ytk=NoIij5I^;Ko z)@nj#ooj;C^#lb4eN80ZTYLBJog+%pL)=Hn6<7INDwXOQ1p1KQ=~$Z`(4X({iWMuC zQ%5ZHp5~6U0^GR(4zYX8nqN1WeZ*TA4C}06WYqi>71avhYLkbNI zJxX-yoo(B;y@>o~ui6HFU97lj&YU^f)Y1PcYY0#SA*jax{nV*b;jrhY{H~v$-;YRL z5jge1+T?()JV*x*9-IlOLkdWYBhDej3x~L-;9O?I`QL|AFV(pV7cP7Qaqf^>LCCBl zjg?g3eH{!52{}z9-kbaP@1KPL)V-2}TPcZ_|NbB1K5VA2zkyphbCm!f!2JdOo`nv;{Cm_ zurLq-rX8}(HGq%;|Jm^H@K33+rJXx>&P8@bPdPI2j^I0FO7t=_GZU+F8(_rYo%zp0 z@Qt02uM-b>7Z5^*D(hyBIQqNrU>rSqbQ;^8{6hgFI5_w#LEV27BTlb_5pq&e(t2v* zX33HzuOZJJg9{13pLy_iGI%5^p5cl!*^(`P0@>T4-!G8B)M;iUl z@*P;acI^Uc$T%h@<~;;}(bQUhMap#F_qS}>@)DJhD~Gx(*;t3r8em&OQ(`piWc&+K zTnpCLgmyCKWsU+4IuV8H>}aRI2O5dd`!`r~@u(Y{p=yg9$uRQc~7Z33=JFWh+hD zh1E3p4Y6rY4UEC==f+u9yX8QU0{XopTU4eihQrg(g9v#p}a1tdE zFPsmM(KgD`5<*OC01;4X$>Z$VvvUL|@w)c3_P4Mk76V1Ja6(2p+S&^52DL|S<`(@L ziA8m@7x2-wHaR(Y1C@B8s==1JF3586zklJv1q}q@sE0yK{AUg~*<$GtiRrFUIyZUp zt$Ce*OAaYC^vSSuXy$P-VvmxrFlG8ja?p ztvQR*2?H_RxpU_xQ+E|%VPT(P^_kVBV8jF=5QZi$ojNRB0-3++8vUr4ZtB#j2Poh} zasX$`D#ZlS!qftYT`jvevTP;X*l;#&y#!>jvb38_Z@ zJ#uq%W2o8$f%tEvO$k{M)0w@MV+5@gs8m|jz!th5Hj`)0oS93FU13{jo6Tf}cn#Lh zMT-_?Q4ceMvhW(yX<_;_tyUXE)u*vTf(Y!+-R>R99Dnqnh_DyCz^TY#uhyzEJhq7bsd44*Y?)^6(7 zTA;>%%o+|b5YsJPx-^rj$AZ`pGWz@2VM3`rRz6SFtqH_`ZWgKWv6q6H8A#QcD}b>0 zrEKd2gTV%6@l-;F44~Bpn=&oOAk*@FYQ?dmX>zgU77{VR!NF&V;y*2>H85+r#l&>` z_U((NhHfD+hk!rK-fQl$ejhk+Ad0GGfHFvnHylb$zX9=5#dM%L!H5?^*e-V7L^GeN z=3#^^n)w|~alin(-Ot^7M8l8l%6c!c+@ultP zjV5q+j#4M7li*nge8JUdJ%txsKqPO&h7I%Q&Yk-%q#>iCqH?8~W-&1_J7L*Dwx9Z2 zSejH0MW~%EoKTZya1Rlta+hW^>xWi@E9wz936RYUR+*kgOYxN}2fAVRJ4-X$+?1OH nn!Cs*n{2YlCYx-s$;R5hwM2tck`yeJ00000NkvXXu0mjf1IJnv literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/triangle.png b/libs/Cesium/Assets/Textures/maki/triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c47f42180c8f91fa40e5d77abbd3bcf4bdb253 GIT binary patch literal 2137 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 VA@*_T;r3eq93@h$sw_Q|{|C9P$Q%Fw literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/warehouse.png b/libs/Cesium/Assets/Textures/maki/warehouse.png new file mode 100644 index 0000000000000000000000000000000000000000..910f1e4c940c73334fe62ac0845f2783189dc191 GIT binary patch literal 1908 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 Dn66b{ literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/maki/water.png b/libs/Cesium/Assets/Textures/maki/water.png new file mode 100644 index 0000000000000000000000000000000000000000..159a557de69a1b2f8998b56d3ebc85aec3203a6a GIT binary patch literal 2411 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/moonSmall.jpg b/libs/Cesium/Assets/Textures/moonSmall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..47f52522ea7501f58eb0cf14bd89e4f90c32fde5 GIT binary patch literal 18196 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/pin.svg b/libs/Cesium/Assets/Textures/pin.svg new file mode 100644 index 0000000000..7892c36823 --- /dev/null +++ b/libs/Cesium/Assets/Textures/pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libs/Cesium/Assets/Textures/waterNormals.jpg b/libs/Cesium/Assets/Textures/waterNormals.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb1baa2d62829297680a99ef890ef719599965cc GIT binary patch literal 294196 zcmbTdc{p3!|3B)So=#MIT2)2MX$@_SHH5a5 uQswqg2qvk}UhM39cv_(sC%oWoy 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�+MF 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

    wyy2=a9FLQ8h}6#D77{rNRn8IRs)5W|CzsVe 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𝔒gs%v+c8CCNCS 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 z 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μ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%0A{Q_eH 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 Ql)4Vfg;7(EzyCA+|7<^4(EtDd literal 0 HcmV?d00001 diff --git a/libs/Cesium/Assets/Textures/waterNormalsSmall.jpg b/libs/Cesium/Assets/Textures/waterNormalsSmall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57b19d8f46fdc4a7e6fe249da37f0fe9c3c461e8 GIT binary patch literal 34121 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�MKo&Lj{(*y=W)D+k z1YZEH#0F9xPW8@d!7WkJiW6+*hA(mNPqZ2%c{BK7a+c0woL$drk`<4n2!O_H19ed8 z$rzra;(iBZ;fv`07_F1ZL|2`FtlHTd20aMdw14T*6aFh*PV1$n9gEEb+=&O>pmYca z%6;t}Z#{xOp71OC3A=wn4G2Bp89OGP?O_ zbS?UdNk6>O>3gj%?O1#{zM@$}Cy;uZgnzsWnvDAPKQh!CW2?O@*2?8}8krk@V!N}g zhnF;E%Q3bq_nXsee^i02EOhC8Q};X+GI%5eI)w{Y?na^~N_gJ|YfA}xhP>B35Fbx` z;G9Tz%(ADmgy~+v%^aVnuXuA3l=_UAtW2oi(-h-!+yqeemXg zG!~8jXe>3sVvC5hxylqT%7aNtoi(>GfGr*0V+1N}6eYM6AcD%9+~2GXRorX}iFkeb zq7lngn;bKvMiN|DShPZ`4lukH(rPyS;LV$Ikw{8)b`x7P-f|)~*pB1VtGUWt-})V_ zmdLALa6m!}0FWqD2Bq-#Xu-9TnetHz4<>OTy_-7K=>@`G>-%XHsC{n;W9kh`SC6j~ z8;>0cpDR!w-DQbcc;yJwIs>XtgjPUsG{lh{P(;ENiZ7K=97q=2Ez%>sk(TOFd(WLtp(O%*3};DM$7_N8cG zgK*s2c*o9bMaFYByd$48D5hwh@5cJFFm&90lq|(_<4VfVr=5{9G^^Xf+@$3EDm~IU z$V`-;l={xM{5rt1z(>{~YA{fEy0EWvpbxmt{dh}c|B-Day@A=Ss#yIM3T$*J0RKqoO1w2Kon~cileBf6|pY + * MIT Licensed. http://www.opensource.org/licenses/mit-license.php + * + * https://github.com/gregjacobs/Autolinker.js + */ + +/** +@license + Copyright (c) 2013 Gildas Lormeau. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the distribution. + + 3. The names of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, + INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**/ + +/** + * @license + * Copyright (c) 2011 NVIDIA Corporation. All rights reserved. + * + * TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED + * *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS + * OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT,IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA + * OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT, OR + * CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS + * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY + * OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, + * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + */ + +/** + * @license + * Copyright (c) 2000-2005, Sean O'Neil (s_p_oneil@hotmail.com) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the project nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Modifications made by Analytical Graphics, Inc. + */ + +/** + * @license + * Knockout JavaScript library v3.2.0 + * (c) Steven Sanderson - http://knockoutjs.com/ + * License: MIT (http://www.opensource.org/licenses/mit-license.php) + */ + +/** + * @license + * Knockout ES5 plugin - https://github.com/SteveSanderson/knockout-es5 + * Copyright (c) Steve Sanderson + * MIT license + */ + +!function(){var e,t,i;!function(r){function n(e,t){return C.call(e,t)}function o(e,t){var i,r,n,o,a,s,l,u,c,h,d=t&&t.split("/"),p=_.map,m=p&&p["*"]||{};if(e&&"."===e.charAt(0))if(t){for(d=d.slice(0,d.length-1),e=d.concat(e.split("/")),u=0;u0&&(e.splice(u-1,2),u-=2)}e=e.join("/")}else 0===e.indexOf("./")&&(e=e.substring(2));if((d||m)&&p){for(i=e.split("/"),u=i.length;u>0;u-=1){if(r=i.slice(0,u).join("/"),d)for(c=d.length;c>0;c-=1)if(n=p[d.slice(0,c).join("/")],n&&(n=n[r])){o=n,a=u;break}if(o)break;!s&&m&&m[r]&&(s=m[r],l=u)}!o&&s&&(o=s,a=l),o&&(i.splice(0,a,o),e=i.join("/"))}return e}function a(e,t){return function(){return p.apply(r,w.call(arguments,0).concat([e,t]))}}function s(e){return function(t){return o(t,e)}}function l(e){return function(t){v[e]=t}}function u(e){if(n(g,e)){var t=g[e];delete g[e],y[e]=!0,d.apply(r,t)}if(!n(v,e)&&!n(y,e))throw new Error("No "+e);return v[e]}function c(e){var t,i=e?e.indexOf("!"):-1;return i>-1&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function h(e){return function(){return _&&_.config&&_.config[e]||{}}}var d,p,m,f,v={},g={},_={},y={},C=Object.prototype.hasOwnProperty,w=[].slice;m=function(e,t){var i,r=c(e),n=r[0];return e=r[1],n&&(n=o(n,t),i=u(n)),n?e=i&&i.normalize?i.normalize(e,s(t)):o(e,t):(e=o(e,t),r=c(e),n=r[0],e=r[1],n&&(i=u(n))),{f:n?n+"!"+e:e,n:e,pr:n,p:i}},f={require:function(e){return a(e)},exports:function(e){var t=v[e];return"undefined"!=typeof t?t:v[e]={}},module:function(e){return{id:e,uri:"",exports:v[e],config:h(e)}}},d=function(e,t,i,o){var s,c,h,d,p,_,C=[];if(o=o||e,"function"==typeof i){for(t=!t.length&&i.length?["require","exports","module"]:t,p=0;p>>0,u=Math.max(0,Math.min(i,_)),h=[],c=_-u+1,d=[],p=a(),u)for(v=p.progress,f=function(e){d.push(e),--c||(m=f=g,p.reject(d))},m=function(e){h.push(e),--u||(m=f=g,p.resolve(h))},y=0;_>y;++y)y in t&&e(t[y],l,s,v);else p.resolve(h);return p.then(r,n,o)})}function u(e,t,i,r){function n(e){return t?t(e[0]):e[0]}return l(e,1,n,i,r)}function c(e,t,i,r){return v(1,arguments),d(e,_).then(t,i,r)}function h(){return d(arguments,_)}function d(t,i){return e(t,function(t){var r,n,o,s,l,u;if(o=n=t.length>>>0,r=[],u=a(),o)for(s=function(t,n){e(t,i).then(function(e){r[n]=e,--o||u.resolve(r)},u.reject)},l=0;n>l;l++)l in t?s(t[l],l):--o;else u.resolve(r);return u.promise})}function p(t,i){var r=C.call(arguments,1);return e(t,function(t){var n;return n=t.length,r[0]=function(t,r,o){return e(t,function(t){return e(r,function(e){return i(t,e,o,n)})})},y.apply(t,r)})}function m(t,i,r){var n=arguments.length>2;return e(t,function(e){return e=n?r:e,i.resolve(e),e},function(e){return i.reject(e),o(e)},i.progress)}function f(e,t){for(var i,r=0;i=e[r++];)i(t)}function v(e,t){for(var i,r=t.length;r>e;)if(i=t[--r],null!=i&&"function"!=typeof i)throw new Error("arg "+r+" must be a function")}function g(){}function _(e){return e}var y,C,w;return e.defer=a,e.resolve=t,e.reject=i,e.join=h,e.all=c,e.map=d,e.reduce=p,e.any=u,e.some=l,e.chain=m,e.isPromise=s,r.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(w,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return c(t,function(t){return e.apply(w,t)})})}},C=[].slice,y=[].reduce||function(e){var t,i,r,n,o;if(o=0,t=Object(this),n=t.length>>>0,i=arguments,i.length<=1)for(;;){if(o in t){r=t[o++];break}if(++o>=n)throw new TypeError}else r=i[1];for(;n>o;++o)o in t&&(r=e(r,t[o],o,t));return r},e})}("function"==typeof i&&i.amd?i:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),i("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),i("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),i=Object.defineProperties;return t&&e(i)||(i=function(e){return e}),i}),i("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(i){t=i.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),i("Core/Credit",["./defined","./defineProperties","./DeveloperError"],function(e,t){"use strict";var i=0,r={},n=function(t,n,o){var a=e(o),s=e(n),l=e(t);l||s||(t=o),this._text=t,this._imageUrl=n,this._link=o,this._hasLink=a,this._hasImage=s;var u,c=JSON.stringify([t,n,o]);e(r[c])?u=r[c]:(u=i++,r[c]=u),this._id=u};return t(n.prototype,{text:{get:function(){return this._text}},imageUrl:{get:function(){return this._imageUrl}},link:{get:function(){return this._link}},id:{get:function(){return this._id}}}),n.prototype.hasImage=function(){return this._hasImage},n.prototype.hasLink=function(){return this._hasLink},n.equals=function(t,i){return t===i||e(t)&&e(i)&&t._id===i._id},n.prototype.equals=function(e){return n.equals(this,e)},n}),i("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),i("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),i("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var i;for(this.mti==this.N+1&&this.init_genrand(5489),i=0;i>>1^t[1&e];for(;i>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),i("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var i={};i.EPSILON1=.1,i.EPSILON2=.01,i.EPSILON3=.001,i.EPSILON4=1e-4,i.EPSILON5=1e-5,i.EPSILON6=1e-6,i.EPSILON7=1e-7,i.EPSILON8=1e-8,i.EPSILON9=1e-9,i.EPSILON10=1e-10,i.EPSILON11=1e-11,i.EPSILON12=1e-12,i.EPSILON13=1e-13,i.EPSILON14=1e-14,i.EPSILON15=1e-15,i.EPSILON16=1e-16,i.EPSILON17=1e-17,i.EPSILON18=1e-18,i.EPSILON19=1e-19,i.EPSILON20=1e-20,i.GRAVITATIONALPARAMETER=3986004418e5,i.SOLAR_RADIUS=6955e5,i.LUNAR_RADIUS=1737400,i.SIXTY_FOUR_KILOBYTES=65536,i.sign=function(e){return e>0?1:0>e?-1:0},i.signNotZero=function(e){return 0>e?-1:1},i.toSNorm=function(e){return Math.round(255*(.5*i.clamp(e,-1,1)+.5))},i.fromSNorm=function(e){return 2*(i.clamp(e,0,255)/255)-1},i.sinh=function(e){var t=Math.pow(Math.E,e),i=Math.pow(Math.E,-1*e);return.5*(t-i)},i.cosh=function(e){var t=Math.pow(Math.E,e),i=Math.pow(Math.E,-1*e);return.5*(t+i)},i.lerp=function(e,t,i){return(1-i)*e+i*t},i.PI=Math.PI,i.ONE_OVER_PI=1/Math.PI,i.PI_OVER_TWO=.5*Math.PI,i.PI_OVER_THREE=Math.PI/3,i.PI_OVER_FOUR=Math.PI/4,i.PI_OVER_SIX=Math.PI/6,i.THREE_PI_OVER_TWO=.5*3*Math.PI,i.TWO_PI=2*Math.PI,i.ONE_OVER_TWO_PI=1/(2*Math.PI),i.RADIANS_PER_DEGREE=Math.PI/180,i.DEGREES_PER_RADIAN=180/Math.PI,i.RADIANS_PER_ARCSECOND=i.RADIANS_PER_DEGREE/3600,i.toRadians=function(e){return e*i.RADIANS_PER_DEGREE},i.toDegrees=function(e){return e*i.DEGREES_PER_RADIAN},i.convertLongitudeRange=function(e){var t=i.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},i.negativePiToPi=function(e){return i.zeroToTwoPi(e+i.PI)-i.PI},i.zeroToTwoPi=function(e){var t=i.mod(e,i.TWO_PI);return Math.abs(t)i.EPSILON14?i.TWO_PI:t},i.mod=function(e,t){return(e%t+t)%t},i.equalsEpsilon=function(e,i,r,n){n=t(n,r);var o=Math.abs(e-i);return n>=o||o<=r*Math.max(Math.abs(e),Math.abs(i))};var r=[1];i.factorial=function(e){var t=r.length;if(e>=t)for(var i=r[t-1],n=t;e>=n;n++)r.push(i*n);return r[e]},i.incrementWrap=function(e,i,r){return r=t(r,0),++e,e>i&&(e=r),e},i.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},i.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},i.clamp=function(e,t,i){return t>e?t:e>i?i:e};var n=new e;return i.setRandomNumberSeed=function(t){n=new e(t)},i.nextRandomNumber=function(){return n.random()},i.acosClamped=function(e){return Math.acos(i.clamp(e,-1,1))},i.asinClamped=function(e){return Math.asin(i.clamp(e,-1,1))},i.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},i}),i("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,i,r,n){"use strict";var o=function(t,i,r){this.x=e(t,0),this.y=e(i,0),this.z=e(r,0)};o.fromSpherical=function(i,r){t(r)||(r=new o);var n=i.clock,a=i.cone,s=e(i.magnitude,1),l=s*Math.sin(a);return r.x=l*Math.cos(n),r.y=l*Math.sin(n),r.z=s*Math.cos(a),r},o.fromElements=function(e,i,r,n){return t(n)?(n.x=e,n.y=i,n.z=r,n):new o(e,i,r)},o.clone=function(e,i){return t(e)?t(i)?(i.x=e.x,i.y=e.y,i.z=e.z,i):new o(e.x,e.y,e.z):void 0},o.fromCartesian4=o.clone,o.packedLength=3,o.pack=function(t,i,r){r=e(r,0),i[r++]=t.x,i[r++]=t.y,i[r]=t.z},o.unpack=function(i,r,n){return r=e(r,0),t(n)||(n=new o),n.x=i[r++],n.y=i[r++],n.z=i[r],n},o.fromArray=o.unpack,o.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},o.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},o.minimumByComponent=function(e,t,i){return i.x=Math.min(e.x,t.x),i.y=Math.min(e.y,t.y),i.z=Math.min(e.z,t.z),i},o.maximumByComponent=function(e,t,i){return i.x=Math.max(e.x,t.x),i.y=Math.max(e.y,t.y),i.z=Math.max(e.z,t.z),i},o.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},o.magnitude=function(e){return Math.sqrt(o.magnitudeSquared(e))};var a=new o;o.distance=function(e,t){return o.subtract(e,t,a),o.magnitude(a)},o.distanceSquared=function(e,t){return o.subtract(e,t,a),o.magnitudeSquared(a)},o.normalize=function(e,t){var i=o.magnitude(e);return t.x=e.x/i,t.y=e.y/i,t.z=e.z/i,t},o.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},o.multiplyComponents=function(e,t,i){return i.x=e.x*t.x,i.y=e.y*t.y,i.z=e.z*t.z,i},o.add=function(e,t,i){return i.x=e.x+t.x,i.y=e.y+t.y,i.z=e.z+t.z,i},o.subtract=function(e,t,i){return i.x=e.x-t.x,i.y=e.y-t.y,i.z=e.z-t.z,i},o.multiplyByScalar=function(e,t,i){return i.x=e.x*t,i.y=e.y*t,i.z=e.z*t,i},o.divideByScalar=function(e,t,i){return i.x=e.x/t,i.y=e.y/t,i.z=e.z/t,i},o.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},o.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var s=new o;o.lerp=function(e,t,i,r){return o.multiplyByScalar(t,i,s),r=o.multiplyByScalar(e,1-i,r),o.add(s,r,r)};var l=new o,u=new o;o.angleBetween=function(e,t){o.normalize(e,l),o.normalize(t,u);var i=o.dot(l,u),r=o.magnitude(o.cross(l,u,l));return Math.atan2(r,i)};var c=new o;o.mostOrthogonalAxis=function(e,t){var i=o.normalize(e,c);return o.abs(i,i),t=i.x<=i.y?i.x<=i.z?o.clone(o.UNIT_X,t):o.clone(o.UNIT_Z,t):i.y<=i.z?o.clone(o.UNIT_Y,t):o.clone(o.UNIT_Z,t)},o.equals=function(e,i){return e===i||t(e)&&t(i)&&e.x===i.x&&e.y===i.y&&e.z===i.z},o.equalsArray=function(e,t,i){return e.x===t[i]&&e.y===t[i+1]&&e.z===t[i+2]},o.equalsEpsilon=function(e,i,r,o){return e===i||t(e)&&t(i)&&n.equalsEpsilon(e.x,i.x,r,o)&&n.equalsEpsilon(e.y,i.y,r,o)&&n.equalsEpsilon(e.z,i.z,r,o)},o.cross=function(e,t,i){var r=e.x,n=e.y,o=e.z,a=t.x,s=t.y,l=t.z,u=n*l-o*s,c=o*a-r*l,h=r*s-n*a;return i.x=u,i.y=c,i.z=h,i},o.fromDegrees=function(e,t,i,r,a){var s=n.toRadians(e),l=n.toRadians(t);return o.fromRadians(s,l,i,r,a)};var h=new o,d=new o,p=new o(40680631590769,40680631590769,40408299984661.445);return o.fromRadians=function(i,r,n,a,s){n=e(n,0);var l=t(a)?a.radiiSquared:p,u=Math.cos(r);h.x=u*Math.cos(i),h.y=u*Math.sin(i),h.z=Math.sin(r),h=o.normalize(h,h),o.multiplyComponents(l,h,d);var c=Math.sqrt(o.dot(h,d));return d=o.divideByScalar(d,c,d),h=o.multiplyByScalar(h,n,h),t(s)||(s=new o),o.add(d,h,s)},o.fromDegreesArray=function(e,t,i){for(var r=new Array(e.length),a=0;aa;a+=2){var s=e[a],l=e[a+1];r[a/2]=o.fromRadians(s,l,0,i,r[a/2])}return r},o.fromDegreesArrayHeights=function(e,t,i){for(var r=new Array(e.length),a=0;aa;a+=3){var s=e[a],l=e[a+1],u=e[a+2];r[a/3]=o.fromRadians(s,l,u,i,r[a/3])}return r},o.ZERO=r(new o(0,0,0)),o.UNIT_X=r(new o(1,0,0)),o.UNIT_Y=r(new o(0,1,0)),o.UNIT_Z=r(new o(0,0,1)),o.prototype.clone=function(e){return o.clone(this,e)},o.prototype.equals=function(e){return o.equals(this,e)},o.prototype.equalsEpsilon=function(e,t,i){return o.equalsEpsilon(this,e,t,i)},o.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},o}),i("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,i,r,n){"use strict";var o=function(t,i,r){this.longitude=e(t,0),this.latitude=e(i,0),this.height=e(r,0)};return o.fromRadians=function(i,r,n,a){return n=e(n,0),t(a)?(a.longitude=i,a.latitude=r,a.height=n,a):new o(i,r,n)},o.fromDegrees=function(e,t,i,r){return e=n.toRadians(e),t=n.toRadians(t),o.fromRadians(e,t,i,r)},o.clone=function(e,i){return t(e)?t(i)?(i.longitude=e.longitude,i.latitude=e.latitude,i.height=e.height,i):new o(e.longitude,e.latitude,e.height):void 0},o.equals=function(e,i){return e===i||t(e)&&t(i)&&e.longitude===i.longitude&&e.latitude===i.latitude&&e.height===i.height},o.equalsEpsilon=function(e,i,r){return e===i||t(e)&&t(i)&&Math.abs(e.longitude-i.longitude)<=r&&Math.abs(e.latitude-i.latitude)<=r&&Math.abs(e.height-i.height)<=r},o.ZERO=r(new o(0,0,0)),o.prototype.clone=function(e){return o.clone(this,e)},o.prototype.equals=function(e){return o.equals(this,e)},o.prototype.equalsEpsilon=function(e,t){return o.equalsEpsilon(this,e,t)},o.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},o}),i("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,i,r,n,o,a,s){"use strict";function l(t,r,n,o){r=i(r,0),n=i(n,0),o=i(o,0),t._radii=new e(r,n,o),t._radiiSquared=new e(r*r,n*n,o*o),t._radiiToTheFourth=new e(r*r*r*r,n*n*n*n,o*o*o*o),t._oneOverRadii=new e(0===r?0:1/r,0===n?0:1/n,0===o?0:1/o),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===n?0:1/(n*n),0===o?0:1/(o*o)),t._minimumRadius=Math.min(r,n,o),t._maximumRadius=Math.max(r,n,o),t._centerToleranceSquared=s.EPSILON1}var u=function(e,t,i){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,l(this,e,t,i)};n(u.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),u.clone=function(t,i){if(!r(t))return void 0;var n=t._radii;return r(i)?(e.clone(n,i._radii),e.clone(t._radiiSquared,i._radiiSquared),e.clone(t._radiiToTheFourth,i._radiiToTheFourth),e.clone(t._oneOverRadii,i._oneOverRadii),e.clone(t._oneOverRadiiSquared,i._oneOverRadiiSquared),i._minimumRadius=t._minimumRadius,i._maximumRadius=t._maximumRadius,i._centerToleranceSquared=t._centerToleranceSquared,i):new u(n.x,n.y,n.z)},u.fromCartesian3=function(e,t){return r(t)||(t=new u),r(e)?(l(t,e.x,e.y,e.z),t):t},u.WGS84=a(new u(6378137,6378137,6356752.314245179)),u.UNIT_SPHERE=a(new u(1,1,1)),u.MOON=a(new u(s.LUNAR_RADIUS,s.LUNAR_RADIUS,s.LUNAR_RADIUS)),u.prototype.clone=function(e){return u.clone(this,e)},u.packedLength=e.packedLength,u.pack=function(t,r,n){n=i(n,0),e.pack(t._radii,r,n)},u.unpack=function(t,r,n){r=i(r,0);var o=e.unpack(t,r);return u.fromCartesian3(o,n)},u.prototype.geocentricSurfaceNormal=e.normalize,u.prototype.geodeticSurfaceNormalCartographic=function(t,i){var n=t.longitude,o=t.latitude,a=Math.cos(o),s=a*Math.cos(n),l=a*Math.sin(n),u=Math.sin(o);return r(i)||(i=new e),i.x=s,i.y=l,i.z=u,e.normalize(i,i)},u.prototype.geodeticSurfaceNormal=function(t,i){return r(i)||(i=new e),i=e.multiplyComponents(t,this._oneOverRadiiSquared,i),e.normalize(i,i)};var c=new e,h=new e;u.prototype.cartographicToCartesian=function(t,i){var n=c,o=h;this.geodeticSurfaceNormalCartographic(t,n),e.multiplyComponents(this._radiiSquared,n,o);var a=Math.sqrt(e.dot(n,o));return e.divideByScalar(o,a,o),e.multiplyByScalar(n,t.height,n),r(i)||(i=new e),e.add(o,n,i)},u.prototype.cartographicArrayToCartesianArray=function(e,t){var i=e.length;r(t)?t.length=i:t=new Array(i);for(var n=0;i>n;n++)t[n]=this.cartographicToCartesian(e[n],t[n]);return t};var d=new e,p=new e,m=new e;u.prototype.cartesianToCartographic=function(i,n){var o=this.scaleToGeodeticSurface(i,p);if(!r(o))return void 0;var a=this.geodeticSurfaceNormal(o,d),l=e.subtract(i,o,m),u=Math.atan2(a.y,a.x),c=Math.asin(a.z),h=s.sign(e.dot(l,i))*e.magnitude(l);return r(n)?(n.longitude=u,n.latitude=c,n.height=h,n):new t(u,c,h)},u.prototype.cartesianArrayToCartographicArray=function(e,t){var i=e.length;r(t)?t.length=i:t=new Array(i);for(var n=0;i>n;++n)t[n]=this.cartesianToCartographic(e[n],t[n]);return t};var f=new e,v=new e;return u.prototype.scaleToGeodeticSurface=function(t,i){var n=t.x,o=t.y,a=t.z,l=this._oneOverRadii,u=l.x,c=l.y,h=l.z,d=n*n*u*u,p=o*o*c*c,m=a*a*h*h,g=d+p+m,_=Math.sqrt(1/g),y=e.multiplyByScalar(t,_,f);if(gs.EPSILON12);return r(i)?(i.x=n*P,i.y=o*A,i.z=a*D,i):new e(n*P,o*A,a*D)},u.prototype.scaleToGeocentricSurface=function(t,i){r(i)||(i=new e);var n=t.x,o=t.y,a=t.z,s=this._oneOverRadiiSquared,l=1/Math.sqrt(n*n*s.x+o*o*s.y+a*a*s.z);return e.multiplyByScalar(t,l,i)},u.prototype.transformPositionToScaledSpace=function(t,i){return r(i)||(i=new e),e.multiplyComponents(t,this._oneOverRadii,i)},u.prototype.transformPositionFromScaledSpace=function(t,i){return r(i)||(i=new e),e.multiplyComponents(t,this._radii,i)},u.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},u.prototype.toString=function(){return this._radii.toString()},u}),i("Core/Event",["./defined","./defineProperties","./DeveloperError"],function(e,t){"use strict";var i=function(){this._listeners=[],this._scopes=[],this._toRemove=[],this._insideRaiseEvent=!1};return t(i.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}}),i.prototype.addEventListener=function(e,t){this._listeners.push(e),this._scopes.push(t);var i=this;return function(){i.removeEventListener(e,t)}},i.prototype.removeEventListener=function(e,t){for(var i=this._listeners,r=this._scopes,n=-1,o=0;ot;t++){var o=i[t];e(o)&&i[t].apply(r[t],arguments)}var a=this._toRemove;for(n=a.length,t=0;n>t;t++){var s=a[t];i.splice(s,1),r.splice(s,1)}a.length=0,this._insideRaiseEvent=!1},i}),i("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,i,r,n){"use strict";var o=function(t,i){this.x=e(t,0),this.y=e(i,0)};o.fromElements=function(e,i,r){return t(r)?(r.x=e,r.y=i,r):new o(e,i)},o.clone=function(e,i){return t(e)?t(i)?(i.x=e.x,i.y=e.y,i):new o(e.x,e.y):void 0},o.fromCartesian3=o.clone,o.fromCartesian4=o.clone,o.packedLength=2,o.pack=function(t,i,r){r=e(r,0),i[r++]=t.x,i[r]=t.y},o.unpack=function(i,r,n){return r=e(r,0),t(n)||(n=new o),n.x=i[r++],n.y=i[r],n},o.fromArray=o.unpack,o.maximumComponent=function(e){return Math.max(e.x,e.y)},o.minimumComponent=function(e){return Math.min(e.x,e.y)},o.minimumByComponent=function(e,t,i){return i.x=Math.min(e.x,t.x),i.y=Math.min(e.y,t.y),i},o.maximumByComponent=function(e,t,i){return i.x=Math.max(e.x,t.x),i.y=Math.max(e.y,t.y),i},o.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},o.magnitude=function(e){return Math.sqrt(o.magnitudeSquared(e))};var a=new o;o.distance=function(e,t){return o.subtract(e,t,a),o.magnitude(a)},o.distanceSquared=function(e,t){return o.subtract(e,t,a),o.magnitudeSquared(a)},o.normalize=function(e,t){var i=o.magnitude(e);return t.x=e.x/i,t.y=e.y/i,t},o.dot=function(e,t){return e.x*t.x+e.y*t.y},o.multiplyComponents=function(e,t,i){return i.x=e.x*t.x,i.y=e.y*t.y,i},o.add=function(e,t,i){return i.x=e.x+t.x,i.y=e.y+t.y,i},o.subtract=function(e,t,i){return i.x=e.x-t.x,i.y=e.y-t.y,i},o.multiplyByScalar=function(e,t,i){return i.x=e.x*t,i.y=e.y*t,i},o.divideByScalar=function(e,t,i){return i.x=e.x/t,i.y=e.y/t,i},o.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},o.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var s=new o;o.lerp=function(e,t,i,r){return o.multiplyByScalar(t,i,s),r=o.multiplyByScalar(e,1-i,r),o.add(s,r,r)};var l=new o,u=new o;o.angleBetween=function(e,t){return o.normalize(e,l),o.normalize(t,u),n.acosClamped(o.dot(l,u))};var c=new o;return o.mostOrthogonalAxis=function(e,t){var i=o.normalize(e,c);return o.abs(i,i),t=i.x<=i.y?o.clone(o.UNIT_X,t):o.clone(o.UNIT_Y,t)},o.equals=function(e,i){return e===i||t(e)&&t(i)&&e.x===i.x&&e.y===i.y},o.equalsArray=function(e,t,i){return e.x===t[i]&&e.y===t[i+1]},o.equalsEpsilon=function(e,i,r,o){return e===i||t(e)&&t(i)&&n.equalsEpsilon(e.x,i.x,r,o)&&n.equalsEpsilon(e.y,i.y,r,o)},o.ZERO=r(new o(0,0)),o.UNIT_X=r(new o(1,0)),o.UNIT_Y=r(new o(0,1)),o.prototype.clone=function(e){return o.clone(this,e)},o.prototype.equals=function(e){return o.equals(this,e)},o.prototype.equalsEpsilon=function(e,t,i){return o.equalsEpsilon(this,e,t,i)},o.prototype.toString=function(){return"("+this.x+", "+this.y+")"},o}),i("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,i,r,n,o,a){"use strict";var s=function(e){this._ellipsoid=i(e,a.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return n(s.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),s.prototype.project=function(t,i){var n=this._semimajorAxis,o=t.longitude*n,a=t.latitude*n,s=t.height;return r(i)?(i.x=o,i.y=a,i.z=s,i):new e(o,a,s)},s.prototype.unproject=function(e,i){var n=this._oneOverSemimajorAxis,o=e.x*n,a=e.y*n,s=e.z;return r(i)?(i.longitude=o,i.latitude=a,i.height=s,i):new t(o,a,s)},s}),i("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(e,i,r,n){this.west=t(e,0),this.south=t(i,0),this.east=t(r,0),this.north=t(n,0)};r(l.prototype,{width:{get:function(){return l.computeWidth(this)}},height:{get:function(){return l.computeHeight(this)}}}),l.packedLength=4,l.pack=function(e,i,r){r=t(r,0),i[r++]=e.west,i[r++]=e.south,i[r++]=e.east,i[r]=e.north},l.unpack=function(e,r,n){return r=t(r,0),i(n)||(n=new l),n.west=e[r++],n.south=e[r++],n.east=e[r++],n.north=e[r],n},l.computeWidth=function(e){var t=e.east,i=e.west;return i>t&&(t+=s.TWO_PI),t-i},l.computeHeight=function(e){return e.north-e.south},l.fromDegrees=function(e,r,n,o,a){return e=s.toRadians(t(e,0)),r=s.toRadians(t(r,0)),n=s.toRadians(t(n,0)),o=s.toRadians(t(o,0)),i(a)?(a.west=e,a.south=r,a.east=n,a.north=o,a):new l(e,r,n,o)},l.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,n=-Number.MAX_VALUE,o=Number.MAX_VALUE,a=-Number.MAX_VALUE,s=0,u=e.length;u>s;s++){var c=e[s];r=Math.min(r,c.longitude),n=Math.max(n,c.longitude),o=Math.min(o,c.latitude),a=Math.max(a,c.latitude)}return i(t)?(t.west=r,t.south=o,t.east=n,t.north=a,t):new l(r,o,n,a)},l.clone=function(e,t){return i(e)?i(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new l(e.west,e.south,e.east,e.north):void 0},l.prototype.clone=function(e){return l.clone(this,e)},l.prototype.equals=function(e){return l.equals(this,e)},l.equals=function(e,t){return e===t||i(e)&&i(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},l.prototype.equalsEpsilon=function(e,t){return i(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},l.validate=function(){},l.southwest=function(t,r){return i(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},l.northwest=function(t,r){return i(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},l.northeast=function(t,r){return i(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},l.southeast=function(t,r){return i(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},l.center=function(t,r){var n=t.east,o=t.west;o>n&&(n+=s.TWO_PI);var a=s.negativePiToPi(.5*(o+n)),l=.5*(t.south+t.north);return i(r)?(r.longitude=a,r.latitude=l,r.height=0,r):new e(a,l)},l.intersection=function(e,t,r){var n=e.east,o=e.west,a=t.east,u=t.west;o>n&&a>0?n+=s.TWO_PI:u>a&&n>0&&(a+=s.TWO_PI),o>n&&0>u?u+=s.TWO_PI:u>a&&0>o&&(o+=s.TWO_PI);var c=s.negativePiToPi(Math.max(o,u)),h=s.negativePiToPi(Math.min(n,a));if((e.west=h)return void 0;var d=Math.max(e.south,t.south),p=Math.min(e.north,t.north);return d>=p?void 0:i(r)?(r.west=c,r.south=d,r.east=h,r.north=p,r):new l(c,d,h,p)},l.contains=function(e,t){var i=t.longitude,r=t.latitude,n=e.west,o=e.east;return n>o&&(o+=s.TWO_PI,0>i&&(i+=s.TWO_PI)),(i>n||s.equalsEpsilon(i,n,s.EPSILON14))&&(o>i||s.equalsEpsilon(i,o,s.EPSILON14))&&r>=e.south&&r<=e.north};var u=new e;return l.subsample=function(e,r,n,a){r=t(r,o.WGS84),n=t(n,0),i(a)||(a=[]);var c=0,h=e.north,d=e.south,p=e.east,m=e.west,f=u;f.height=n,f.longitude=m,f.latitude=h,a[c]=r.cartographicToCartesian(f,a[c]),c++,f.longitude=p,a[c]=r.cartographicToCartesian(f,a[c]),c++,f.latitude=d,a[c]=r.cartographicToCartesian(f,a[c]),c++,f.longitude=m,a[c]=r.cartographicToCartesian(f,a[c]),c++,f.latitude=0>h?h:d>0?d:0;for(var v=1;8>v;++v)f.longitude=-Math.PI+v*s.PI_OVER_TWO,l.contains(e,f)&&(a[c]=r.cartographicToCartesian(f,a[c]),c++);return 0===f.latitude&&(f.longitude=m,a[c]=r.cartographicToCartesian(f,a[c]),c++,f.longitude=p,a[c]=r.cartographicToCartesian(f,a[c]),c++),a.length=c,a},l.MAX_VALUE=a(new l(-Math.PI,-s.PI_OVER_TWO,Math.PI,s.PI_OVER_TWO)),l}),i("Core/GeographicTilingScheme",["./Cartesian2","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./GeographicProjection","./Math","./Rectangle"],function(e,t,i,r,n,o,a,s,l){"use strict";var u=function(e){e=t(e,{}),this._ellipsoid=t(e.ellipsoid,o.WGS84),this._rectangle=t(e.rectangle,l.MAX_VALUE),this._projection=new a(this._ellipsoid),this._numberOfLevelZeroTilesX=t(e.numberOfLevelZeroTilesX,2),this._numberOfLevelZeroTilesY=t(e.numberOfLevelZeroTilesY,1)};return r(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}}),u.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<=a&&(p=a-1);var m=0|(o.north-t.latitude)/h; +return m>=u&&(m=u-1),i(n)?(n.x=p,n.y=m,n):new e(p,m)},u}),i("Core/getImagePixels",["./defined"],function(e){"use strict";var t={},i=function(i,r,n){e(r)||(r=i.width),e(n)||(n=i.height);var o=t[r];e(o)||(o={},t[r]=o);var a=o[n];if(!e(a)){var s=document.createElement("canvas");s.width=r,s.height=n,a=s.getContext("2d"),a.globalCompositeOperation="copy",o[n]=a}return a.drawImage(i,0,0,r,n),a.getImageData(0,0,r,n).data};return i}),i("Core/HeightmapTessellator",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./freezeObject","./Math","./Rectangle"],function(e,t,i,r,n,o,a,s){"use strict";var l={};return l.DEFAULT_STRUCTURE=o({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1}),l.computeVertices=function(r){var o,u,c,h,d=Math.cos,p=Math.sin,m=Math.sqrt,f=Math.atan,v=Math.exp,g=a.PI_OVER_TWO,_=a.toRadians,y=r.vertices,C=r.heightmap,w=r.width,S=r.height,E=r.skirtHeight,b=t(r.isGeographic,!0),x=t(r.ellipsoid,n.WGS84),T=1/x.maximumRadius,P=r.nativeRectangle,A=r.rectangle;i(A)?(o=A.west,u=A.south,c=A.east,h=A.north):b?(o=_(P.west),u=_(P.south),c=_(P.east),h=_(P.north)):(o=P.west*T,u=g-2*f(v(-P.south*T)),c=P.east*T,h=g-2*f(v(-P.north*T)));var D=t(r.relativeToCenter,e.ZERO),M=t(r.structure,l.DEFAULT_STRUCTURE),I=t(M.heightScale,l.DEFAULT_STRUCTURE.heightScale),O=t(M.heightOffset,l.DEFAULT_STRUCTURE.heightOffset),R=t(M.elementsPerHeight,l.DEFAULT_STRUCTURE.elementsPerHeight),L=t(M.stride,l.DEFAULT_STRUCTURE.stride),N=t(M.elementMultiplier,l.DEFAULT_STRUCTURE.elementMultiplier),F=t(M.isBigEndian,l.DEFAULT_STRUCTURE.isBigEndian),B=s.computeWidth(P)/(w-1),z=s.computeHeight(P)/(S-1),k=x.radiiSquared,V=k.x,U=k.y,W=k.z,G=0,H=65536,q=-65536,j=0,Y=S,X=0,Z=w;E>0&&(--j,++Y,--X,++Z);for(var J=j;Y>J;++J){var Q=J;0>Q&&(Q=0),Q>=S&&(Q=S-1);var K=P.north-z*Q;K=b?_(K):g-2*f(v(-K*T));for(var $=d(K),et=p(K),tt=W*et,it=(K-u)/(h-u),rt=X;Z>rt;++rt){var nt=rt;0>nt&&(nt=0),nt>=w&&(nt=w-1);var ot=P.west+B*nt;b?ot=_(ot):ot*=T;var at,st=Q*w*L+nt*L;if(1===R)at=C[st];else{at=0;var lt;if(F)for(lt=0;R>lt;++lt)at=at*N+C[st+lt];else for(lt=R-1;lt>=0;--lt)at=at*N+C[st+lt]}at=at*I+O,q=Math.max(q,at),H=Math.min(H,at),(rt!==nt||J!==Q)&&(at-=E);var ut=$*d(ot),ct=$*p(ot),ht=V*ut,dt=U*ct,pt=m(ht*ut+dt*ct+tt*et),mt=1/pt,ft=ht*mt,vt=dt*mt,gt=tt*mt;y[G++]=ft+ut*at-D.x,y[G++]=vt+ct*at-D.y,y[G++]=gt+et*at-D.z,y[G++]=at;var _t=(ot-o)/(c-o);y[G++]=_t,y[G++]=it}}return{maximumHeight:q,minimumHeight:H}},l}),i("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var i=r.exec(t);this.scheme=i[1],this.authority=i[2],this.path=i[3],this.query=i[4],this.fragment=i[5]}}function t(e){var t=unescape(e);return o.test(t)?t:e.toUpperCase()}function i(e,t,i,r){return(t||"")+i.toLowerCase()+(r||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var r=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(a,i).replace(n,t)),this.path&&(this.path=this.path.replace(n,t)),this.query&&(this.query=this.query.replace(n,t)),this.fragment&&(this.fragment=this.fragment.replace(n,t))};var n=/%[0-9a-z]{2}/gi,o=/[a-zA-Z0-9\-\._~]/,a=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var i=new e;return this.scheme?(i.scheme=this.scheme,i.authority=this.authority,i.path=this.path,i.query=this.query):(i.scheme=t.scheme,this.authority?(i.authority=this.authority,i.path=this.path,i.query=this.query):(i.authority=t.authority,""==this.path?(i.path=t.path,i.query=this.query||t.query):("/"==this.path.charAt(0)?(i.path=this.path,i.removeDotSegments()):(i.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,i.removeDotSegments()),i.query=this.query))),i.fragment=this.fragment,i},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),i=[],r=""==t[0];for(r&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?i.pop():"."!=e&&i.push(e);("."==e||".."==e)&&i.push(""),r&&i.unshift(""),this.path=i.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),i("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,i,r){"use strict";function n(){for(var e=document.getElementsByTagName("script"),t=0,i=e.length;i>t;++t){var r=e[t].getAttribute("src"),n=h.exec(r);if(null!==n)return n[1]}return void 0}function o(){if(t(l))return l;var r;if(r="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:n(),!t(r))throw new i("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return l=new e(r).resolve(new e(document.location.href))}function a(e){return r.toUrl("../"+e)}function s(t){return new e(t).resolve(o()).toString()}var l,u,c,h=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,d=function(e){t(u)||(u=t(r.toUrl)?a:s),t(c)||(c=document.createElement("a"));var i=u(e);return c.href=i,c.href=c.href,c.href};return d._cesiumScriptRegex=h,d.setBaseUrl=function(t){l=new e(t).resolve(new e(document.location.href))},d}),i("Core/destroyObject",["./defaultValue","./DeveloperError"],function(e,t){"use strict";function i(){return!0}var r=function(r,n){function o(){throw new t(n)}n=e(n,"This object was destroyed, i.e., destroy() was called.");for(var a in r)"function"==typeof r[a]&&(r[a]=o);return r.isDestroyed=i,void 0};return r}),i("Core/isCrossOriginUrl",["./defined"],function(e){"use strict";var t,i=function(i){e(t)||(t=document.createElement("a")),t.href=window.location.href;var r=t.host,n=t.protocol;return t.href=i,t.href=t.href,n!==t.protocol||r!==t.host};return i}),i("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(i){t=i.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),i("Core/TaskProcessor",["../ThirdParty/Uri","../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./destroyObject","./DeveloperError","./isCrossOriginUrl","./RuntimeError","require"],function(e,t,i,r,n,o,a,s,l,u){"use strict";function c(){if(!n(v._canTransferArrayBuffer)){var e=new Worker(d("Workers/transferTypedArrayTest.js"));e.postMessage=r(e.webkitPostMessage,e.postMessage);var i=99,o=new Int8Array([i]);try{e.postMessage({array:o},[o.buffer])}catch(a){return v._canTransferArrayBuffer=!1,v._canTransferArrayBuffer}var s=t.defer();e.onmessage=function(t){var r=t.data.array,o=n(r)&&r[0]===i;s.resolve(o),e.terminate(),v._canTransferArrayBuffer=o},v._canTransferArrayBuffer=s.promise}return v._canTransferArrayBuffer}function h(e,t){--e._activeTasks;var i=t.id;if(n(i)){var r=e._deferreds,o=r[i];if(n(t.error)){var s=t.error;"RuntimeError"===s.name?(s=new l(t.error.message),s.stack=t.error.stack):"DeveloperError"===s.name&&(s=new a(t.error.message),s.stack=t.error.stack),o.reject(s)}else o.resolve(t.result);delete r[i]}}function d(e){var t=i(e);if(s(t)){var r,n='importScripts("'+t+'");';try{r=new Blob([n],{type:"application/javascript"})}catch(o){var a=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,l=new a;l.append(n),r=l.getBlob("application/javascript")}var u=window.URL||window.webkitURL;t=u.createObjectURL(r)}return t}function p(){return n(f)||(f=d("Workers/cesiumWorkerBootstrapper.js")),f}function m(t){var o=new Worker(p());o.postMessage=r(o.webkitPostMessage,o.postMessage);var a={loaderConfig:{},workerModule:v._workerModulePrefix+t._workerName};if(n(v._loaderConfig))a.loaderConfig=v._loaderConfig;else if(n(u.toUrl)){var s=new e("..").resolve(new e(i("Workers/cesiumWorkerBootstrapper.js"))).toString();a.loaderConfig.baseUrl=s}else a.loaderConfig.paths={Workers:i("Workers")};return o.postMessage(a),o.onmessage=function(e){h(t,e.data)},o}var f,v=function(e,t){this._workerName=e,this._maximumActiveTasks=r(t,5),this._activeTasks=0,this._deferreds={},this._nextID=0},g=[];return v.prototype.scheduleTask=function(e,i){if(n(this._worker)||(this._worker=m(this)),this._activeTasks>=this._maximumActiveTasks)return void 0;++this._activeTasks;var r=this;return t(c(),function(o){n(i)?o||(i.length=0):i=g;var a=r._nextID++,s=t.defer();return r._deferreds[a]=s,r._worker.postMessage({id:a,parameters:e,canTransferArrayBuffer:o},i),s.promise})},v.prototype.isDestroyed=function(){return!1},v.prototype.destroy=function(){return n(this._worker)&&this._worker.terminate(),o(this)},v._defaultWorkerModulePrefix="Workers/",v._workerModulePrefix=v._defaultWorkerModulePrefix,v._loaderConfig=void 0,v._canTransferArrayBuffer=void 0,v}),i("Core/TerrainMesh",["../Core/defaultValue"],function(e){"use strict";var t=function(t,i,r,n,o,a,s,l,u){this.center=t,this.vertices=i,this.stride=e(l,6),this.indices=r,this.minimumHeight=n,this.maximumHeight=o,this.boundingSphere3D=a,this.occludeePointInScaledSpace=s,this.orientedBoundingBox=u};return t}),i("Core/TerrainProvider",["./defined","./defineProperties","./DeveloperError"],function(e,t,i){"use strict";var r=function(){i.throwInstantiationError()};t(r.prototype,{errorEvent:{get:i.throwInstantiationError},credit:{get:i.throwInstantiationError},tilingScheme:{get:i.throwInstantiationError},ready:{get:i.throwInstantiationError},hasWaterMask:{get:i.throwInstantiationError},hasVertexNormals:{get:i.throwInstantiationError}});var n=[];return r.getRegularGridIndices=function(t,i){var r=n[t];e(r)||(n[t]=r=[]);var o=r[i];if(!e(o)){o=r[i]=new Uint16Array(6*(t-1)*(i-1));for(var a=0,s=0,l=0;i-1>l;++l){for(var u=0;t-1>u;++u){var c=a,h=c+t,d=h+1,p=c+1;o[s++]=c,o[s++]=h,o[s++]=p,o[s++]=p,o[s++]=h,o[s++]=d,++a}++a}}return o},r.heightmapTerrainQuality=.25,r.getEstimatedLevelZeroGeometricErrorForAHeightmap=function(e,t,i){return 2*e.maximumRadius*Math.PI*r.heightmapTerrainQuality/(t*i)},r.prototype.requestTileGeometry=i.throwInstantiationError,r.prototype.getLevelMaximumGeometricError=i.throwInstantiationError,r.prototype.getTileDataAvailable=i.throwInstantiationError,r}),i("Core/HeightmapTerrainData",["../ThirdParty/when","./defaultValue","./defined","./defineProperties","./DeveloperError","./GeographicTilingScheme","./HeightmapTessellator","./Math","./Rectangle","./TaskProcessor","./TerrainMesh","./TerrainProvider"],function(e,t,i,r,n,o,a,s,l,u,c,h){"use strict";function d(e,t,i,r,n,o,a){var s=1,l=e._width,u=e._height,c=o*(l-1),h=c+l-1,d=a*(u-1),p=d+u-1,m=1<1)for(_=S;E>=_;++_)for(g=C;w>=g;++g)for(var R=(_*l+g)*O,L=0;O>L;++L)M[I++]=T[R+L];else for(_=S;E>=_;++_)for(g=C;w>=g;++g)M[I++]=T[_*l+g];return new y({buffer:M,width:b,height:x,childTileMask:0,structure:e._structure,createdByUpsampling:!0})}function p(e,t,i,r,n,o,a,l){var u,c,h,d,p=e._width,v=e._height,g=e._structure,C=g.stride,w=e._buffer,S=new w.constructor(p*v*C),E=t.tileXYToRectangle(i,r,n),b=t.tileXYToRectangle(o,a,l);if(C>1){var x=g.elementsPerHeight,T=g.elementMultiplier,P=g.isBigEndian,A=Math.pow(T,x-1);for(c=0;v>c;++c)for(h=s.lerp(b.north,b.south,c/(v-1)),u=0;p>u;++u){d=s.lerp(b.west,b.east,u/(p-1));var D=f(w,x,T,C,P,E,p,v,d,h);_(S,x,T,A,C,P,c*p+u,D)}}else for(c=0;v>c;++c)for(h=s.lerp(b.north,b.south,c/(v-1)),u=0;p>u;++u)d=s.lerp(b.west,b.east,u/(p-1)),S[c*p+u]=m(w,E,p,v,d,h);return new y({buffer:S,width:p,height:v,childTileMask:0,structure:e._structure,createdByUpsampling:!0})}function m(e,t,i,r,n,o){var a=(n-t.west)*(i-1)/(t.east-t.west),s=(o-t.south)*(r-1)/(t.north-t.south),l=0|a,u=l+1;u>=i&&(u=i-1,l=i-2);var c=0|s,h=c+1;h>=r&&(h=r-1,c=r-2);var d=a-l,p=s-c;c=r-1-c,h=r-1-h;var m=e[c*i+l],f=e[c*i+u],g=e[h*i+l],_=e[h*i+u];return v(d,p,m,f,g,_)}function f(e,t,i,r,n,o,a,s,l,u){var c=(l-o.west)*(a-1)/(o.east-o.west),h=(u-o.south)*(s-1)/(o.north-o.south),d=0|c,p=d+1;p>=a&&(p=a-1,d=a-2);var m=0|h,f=m+1;f>=s&&(f=s-1,m=s-2);var _=c-d,y=h-m;m=s-1-m,f=s-1-f;var C=g(e,t,i,r,n,m*a+d),w=g(e,t,i,r,n,m*a+p),S=g(e,t,i,r,n,f*a+d),E=g(e,t,i,r,n,f*a+p);return v(_,y,C,w,S,E)}function v(e,t,i,r,n,o){return e>t?i+e*(r-i)+t*(o-r):i+e*(o-n)+t*(n-i)}function g(e,t,i,r,n,o){o*=r;var a,s=0;if(n)for(a=0;t>a;++a)s=s*i+e[o+a];else for(a=t-1;a>=0;--a)s=s*i+e[o+a];return s}function _(e,t,i,r,n,o,a,s){a*=n;var l;if(o)for(l=0;t>l;++l)e[a+l]=0|s/r,s-=e[a+l]*r,r/=i;else for(l=t-1;l>=0;--l)e[a+l]=0|s/r,s-=e[a+l]*r,r/=i}var y=function(e){this._buffer=e.buffer,this._width=e.width,this._height=e.height,this._childTileMask=t(e.childTileMask,15);var r=a.DEFAULT_STRUCTURE,n=e.structure;i(n)?n!==r&&(n.heightScale=t(n.heightScale,r.heightScale),n.heightOffset=t(n.heightOffset,r.heightOffset),n.elementsPerHeight=t(n.elementsPerHeight,r.elementsPerHeight),n.stride=t(n.stride,r.stride),n.elementMultiplier=t(n.elementMultiplier,r.elementMultiplier),n.isBigEndian=t(n.isBigEndian,r.isBigEndian)):n=r,this._structure=n,this._createdByUpsampling=t(e.createdByUpsampling,!1),this._waterMask=e.waterMask};r(y.prototype,{waterMask:{get:function(){return this._waterMask}}});var C=new u("createVerticesFromHeightmap");return y.prototype.createMesh=function(t,r,n,a){var s=t.ellipsoid,u=t.tileXYToNativeRectangle(r,n,a),d=t.tileXYToRectangle(r,n,a),p=s.cartographicToCartesian(l.center(d)),m=this._structure,f=h.getEstimatedLevelZeroGeometricErrorForAHeightmap(s,this._width,t.getNumberOfXTilesAtLevel(0)),v=f/(1<1){var l=a.elementsPerHeight,u=a.elementMultiplier,c=a.isBigEndian;r=f(this._buffer,l,u,s,c,e,n,o,t,i)}else r=m(this._buffer,e,n,o,t,i);return r*a.heightScale+a.heightOffset},y.prototype.upsample=function(e,t,i,r,n,o,a){var s;return s=1===this._width%2&&1===this._height%2?d(this,e,t,i,r,n,o,a):p(this,e,t,i,r,n,o,a)},y.prototype.isChildAvailable=function(e,t,i,r){var n=2;return i!==2*e&&++n,r!==2*t&&(n-=2),0!==(this._childTileMask&1<=a.maximumRequestsPerServer?void 0:(n[s]=l+1,t(o(e),function(e){return n[s]--,e}).otherwise(function(e){return n[s]--,t.reject(e)}))};return a.maximumRequestsPerServer=6,a}),i("Core/ArcGisImageServerTerrainProvider",["../ThirdParty/when","./Credit","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Event","./GeographicTilingScheme","./getImagePixels","./HeightmapTerrainData","./loadImage","./Math","./TerrainProvider","./throttleRequestByServer"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m){"use strict";var f=function(e){this._url=e.url,this._token=e.token,this._tilingScheme=e.tilingScheme,r(this._tilingScheme)||(this._tilingScheme=new l({ellipsoid:i(e.ellipsoid,a.WGS84)})),this._heightmapWidth=65,this._levelZeroMaximumGeometricError=p.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,this._heightmapWidth,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._proxy=e.proxy,this._terrainDataStructure={heightScale:.001,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0},this._errorEvent=new s;var n=e.credit;"string"==typeof n&&(n=new t(n)),this._credit=n};return n(f.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},ready:{get:function(){return!0}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}}}),f.prototype.requestTileGeometry=function(t,i,n){var o=this._tilingScheme.tileXYToRectangle(t,i,n),a=(o.east-o.west)/(this._heightmapWidth-1),s=(o.north-o.south)/(this._heightmapWidth-1);o.west-=.5*a,o.east+=.5*a,o.south-=.5*s,o.north+=.5*s;var l=d.toDegrees(o.west)+"%2C"+d.toDegrees(o.south)+"%2C"+d.toDegrees(o.east)+"%2C"+d.toDegrees(o.north),p=this._url+"/exportImage?interpolation=RSP_BilinearInterpolation&format=tiff&f=image&size="+this._heightmapWidth+"%2C"+this._heightmapWidth+"&bboxSR=4326&imageSR=4326&bbox="+l;this._token&&(p+="&token="+this._token);var f=this._proxy;r(f)&&(p=f.getURL(p));var v=m(p,h);if(!r(v))return void 0;var g=this;return e(v,function(e){return new c({buffer:u(e),width:g._heightmapWidth,height:g._heightmapWidth,childTileMask:15,structure:g._terrainDataStructure})})},f.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<0&&(this._hash={},e.length=0)},i}),i("Core/AttributeCompression",["./Cartesian2","./Cartesian3","./defined","./DeveloperError","./Math"],function(e,t,i,r,n){"use strict";var o={};o.octEncode=function(e,t){if(t.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),t.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){var i=t.x,r=t.y;t.x=(1-Math.abs(r))*n.signNotZero(i),t.y=(1-Math.abs(i))*n.signNotZero(r)}return t.x=n.toSNorm(t.x),t.y=n.toSNorm(t.y),t},o.octDecode=function(e,i,r){if(r.x=n.fromSNorm(e),r.y=n.fromSNorm(i),r.z=1-(Math.abs(r.x)+Math.abs(r.y)),r.z<0){var o=r.x;r.x=(1-Math.abs(r.y))*n.signNotZero(o),r.y=(1-Math.abs(o))*n.signNotZero(r.y)}return t.normalize(r,r)},o.octPackFloat=function(e){return 256*e.x+e.y};var a=new e;return o.octEncodeFloat=function(e){return o.octEncode(e,a),o.octPackFloat(a)},o.octDecodeFloat=function(e,t){var i=e/256,r=Math.floor(i),n=256*(i-r);return o.octDecode(r,n,t)},o.octPack=function(e,t,i,r){var n=o.octEncodeFloat(e),s=o.octEncodeFloat(t),l=o.octEncode(i,a);return r.x=65536*l.x+n,r.y=65536*l.y+s,r},o.octUnpack=function(e,t,i,r){var n=e.x/65536,a=Math.floor(n),s=65536*(n-a);n=e.y/65536;var l=Math.floor(n),u=65536*(n-l);o.octDecodeFloat(s,t),o.octDecodeFloat(u,i),o.octDecode(a,l,r)},o.compressTextureCoordinates=function(e){var t=1===e.x?4095:0|4096*e.x,i=1===e.y?4095:0|4096*e.y;return 4096*t+i},o.decompressTextureCoordinates=function(e,t){var i=e/4096;return t.x=Math.floor(i)/4096,t.y=i-Math.floor(i),t},o}),i("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},i=function(i,r){e(t[i])||(t[i]=!0,console.log(r))};return i}),i("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),i("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,i,r){"use strict";var n=function(t,i){this.normal=e.clone(t),this.distance=i};n.fromPointNormal=function(i,r,o){var a=-e.dot(r,i);return t(o)?(e.clone(r,o.normal),o.distance=a,o):new n(r,a)};var o=new e;return n.fromCartesian4=function(i,r){var a=e.fromCartesian4(i,o),s=i.w;return t(r)?(e.clone(a,r.normal),r.distance=s,r):new n(a,s)},n.getPointDistance=function(t,i){return e.dot(t.normal,i)+t.distance},n.ORIGIN_XY_PLANE=r(new n(e.UNIT_Z,0)),n.ORIGIN_YZ_PLANE=r(new n(e.UNIT_X,0)),n.ORIGIN_ZX_PLANE=r(new n(e.UNIT_Y,0)),n}),i("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,i,r,n,o,a){"use strict";var s=function(r,n,o){this.minimum=e.clone(t(r,e.ZERO)),this.maximum=e.clone(t(n,e.ZERO)),i(o)?o=e.clone(o):(o=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(o,.5,o)),this.center=o};s.fromPoints=function(t,r){if(i(r)||(r=new s),!i(t)||0===t.length)return r.minimum=e.clone(e.ZERO,r.minimum),r.maximum=e.clone(e.ZERO,r.maximum),r.center=e.clone(e.ZERO,r.center),r;for(var n=t[0].x,o=t[0].y,a=t[0].z,l=t[0].x,u=t[0].y,c=t[0].z,h=t.length,d=1;h>d;d++){var p=t[d],m=p.x,f=p.y,v=p.z;n=Math.min(m,n),l=Math.max(m,l),o=Math.min(f,o),u=Math.max(f,u),a=Math.min(v,a),c=Math.max(v,c)}var g=r.minimum;g.x=n,g.y=o,g.z=a;var _=r.maximum;_.x=l,_.y=u,_.z=c;var y=e.add(g,_,r.center);return e.multiplyByScalar(y,.5,y),r},s.clone=function(t,r){return i(t)?i(r)?(r.minimum=e.clone(t.minimum,r.minimum),r.maximum=e.clone(t.maximum,r.maximum),r.center=e.clone(t.center,r.center),r):new s(t.minimum,t.maximum):void 0},s.equals=function(t,r){return t===r||i(t)&&i(r)&&e.equals(t.center,r.center)&&e.equals(t.minimum,r.minimum)&&e.equals(t.maximum,r.maximum)};var l=new e;s.intersectPlane=function(t,i){l=e.subtract(t.maximum,t.minimum,l);var r=e.multiplyByScalar(l,.5,l),n=i.normal,a=r.x*Math.abs(n.x)+r.y*Math.abs(n.y)+r.z*Math.abs(n.z),s=e.dot(t.center,n)+i.distance;return s-a>0?o.INSIDE:0>s+a?o.OUTSIDE:o.INTERSECTING};var u=new a(new e,0);return s.intersect=function(e,t){r("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var i=a.fromCartesian4(t,u);return s.intersectPlane(e,i)},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.intersectPlane=function(e){return s.intersectPlane(this,e)},s.prototype.intersect=function(e){return s.intersect(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s}),i("Core/BingMapsApi",["./defined"],function(e){"use strict";var t={};t.defaultKey=void 0;var i=!1;return t.getKey=function(r){return e(r)?r:e(t.defaultKey)?t.defaultKey:(i||(console.log("This application is using Cesium's default Bing Maps key. Please create a new key for the application as soon as possible and prior to deployment by visiting https://www.bingmapsportal.com/, and provide your key to Cesium by setting the Cesium.BingMapsApi.defaultKey property before constructing the CesiumWidget or any other object that uses the Bing Maps API."),i=!0),"Aj1ony_-Typ-KjG9SJWiKSHY23U1KmK7yAmZa9lDmuF2osXWkcZ22VPsqmCt0TCt")},t}),i("Core/BoundingRectangle",["./Cartesian2","./Cartographic","./defaultValue","./defined","./DeveloperError","./GeographicProjection","./Intersect","./Rectangle"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(e,t,r,n){this.x=i(e,0),this.y=i(t,0),this.width=i(r,0),this.height=i(n,0)};l.fromPoints=function(e,t){if(r(t)||(t=new l),!r(e)||0===e.length)return t.x=0,t.y=0,t.width=0,t.height=0,t;for(var i=e.length,n=e[0].x,o=e[0].y,a=e[0].x,s=e[0].y,u=1;i>u;u++){var c=e[u],h=c.x,d=c.y;n=Math.min(h,n),a=Math.max(h,a),o=Math.min(d,o),s=Math.max(d,s)}return t.x=n,t.y=o,t.width=a-n,t.height=s-o,t};var u=new o,c=new t,h=new t;return l.fromRectangle=function(t,n,o){if(r(o)||(o=new l),!r(t))return o.x=0,o.y=0,o.width=0,o.height=0,o;n=i(n,u);var a=n.project(s.southwest(t,c)),d=n.project(s.northeast(t,h));return e.subtract(d,a,d),o.x=a.x,o.y=a.y,o.width=d.x,o.height=d.y,o},l.clone=function(e,t){return r(e)?r(t)?(t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height,t):new l(e.x,e.y,e.width,e.height):void 0},l.union=function(e,t,i){r(i)||(i=new l);var n=Math.min(e.x,t.x),o=Math.min(e.y,t.y),a=Math.max(e.x+e.width,t.x+t.width),s=Math.max(e.y+e.height,t.y+t.height);return i.x=n,i.y=o,i.width=a-n,i.height=s-o,i},l.expand=function(e,t,i){i=l.clone(e,i);var r=t.x-i.x,n=t.y-i.y;return r>i.width?i.width=r:0>r&&(i.width-=r,i.x=t.x),n>i.height?i.height=n:0>n&&(i.height-=n,i.y=t.y),i},l.intersect=function(e,t){var i=e.x,r=e.y,n=t.x,o=t.y;return i>n+t.width||i+e.widtho+t.height?a.OUTSIDE:a.INTERSECTING},l.equals=function(e,t){return e===t||r(e)&&r(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height},l.prototype.clone=function(e){return l.clone(this,e)},l.prototype.intersect=function(e){return l.intersect(this,e)},l.prototype.equals=function(e){return l.equals(this,e)},l}),i("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,i){this.start=e(t,0),this.stop=e(i,0)};return t}),i("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,i,r,n){"use strict";var o=function(t,i,r,n){this.x=e(t,0),this.y=e(i,0),this.z=e(r,0),this.w=e(n,0)};o.fromElements=function(e,i,r,n,a){return t(a)?(a.x=e,a.y=i,a.z=r,a.w=n,a):new o(e,i,r,n)},o.fromColor=function(e,i){return t(i)?(i.x=e.red,i.y=e.green,i.z=e.blue,i.w=e.alpha,i):new o(e.red,e.green,e.blue,e.alpha)},o.clone=function(e,i){return t(e)?t(i)?(i.x=e.x,i.y=e.y,i.z=e.z,i.w=e.w,i):new o(e.x,e.y,e.z,e.w):void 0},o.packedLength=4,o.pack=function(t,i,r){r=e(r,0),i[r++]=t.x,i[r++]=t.y,i[r++]=t.z,i[r]=t.w},o.unpack=function(i,r,n){return r=e(r,0),t(n)||(n=new o),n.x=i[r++],n.y=i[r++],n.z=i[r++],n.w=i[r],n},o.fromArray=o.unpack,o.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},o.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},o.minimumByComponent=function(e,t,i){return i.x=Math.min(e.x,t.x),i.y=Math.min(e.y,t.y),i.z=Math.min(e.z,t.z),i.w=Math.min(e.w,t.w),i},o.maximumByComponent=function(e,t,i){return i.x=Math.max(e.x,t.x),i.y=Math.max(e.y,t.y),i.z=Math.max(e.z,t.z),i.w=Math.max(e.w,t.w),i},o.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},o.magnitude=function(e){return Math.sqrt(o.magnitudeSquared(e))};var a=new o;o.distance=function(e,t){return o.subtract(e,t,a),o.magnitude(a)},o.distanceSquared=function(e,t){return o.subtract(e,t,a),o.magnitudeSquared(a)},o.normalize=function(e,t){var i=o.magnitude(e);return t.x=e.x/i,t.y=e.y/i,t.z=e.z/i,t.w=e.w/i,t},o.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},o.multiplyComponents=function(e,t,i){return i.x=e.x*t.x,i.y=e.y*t.y,i.z=e.z*t.z,i.w=e.w*t.w,i},o.add=function(e,t,i){return i.x=e.x+t.x,i.y=e.y+t.y,i.z=e.z+t.z,i.w=e.w+t.w,i},o.subtract=function(e,t,i){return i.x=e.x-t.x,i.y=e.y-t.y,i.z=e.z-t.z,i.w=e.w-t.w,i},o.multiplyByScalar=function(e,t,i){return i.x=e.x*t,i.y=e.y*t,i.z=e.z*t,i.w=e.w*t,i},o.divideByScalar=function(e,t,i){return i.x=e.x/t,i.y=e.y/t,i.z=e.z/t,i.w=e.w/t,i},o.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},o.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var s=new o;o.lerp=function(e,t,i,r){return o.multiplyByScalar(t,i,s),r=o.multiplyByScalar(e,1-i,r),o.add(s,r,r)};var l=new o;return o.mostOrthogonalAxis=function(e,t){var i=o.normalize(e,l);return o.abs(i,i),t=i.x<=i.y?i.x<=i.z?i.x<=i.w?o.clone(o.UNIT_X,t):o.clone(o.UNIT_W,t):i.z<=i.w?o.clone(o.UNIT_Z,t):o.clone(o.UNIT_W,t):i.y<=i.z?i.y<=i.w?o.clone(o.UNIT_Y,t):o.clone(o.UNIT_W,t):i.z<=i.w?o.clone(o.UNIT_Z,t):o.clone(o.UNIT_W,t)},o.equals=function(e,i){return e===i||t(e)&&t(i)&&e.x===i.x&&e.y===i.y&&e.z===i.z&&e.w===i.w},o.equalsArray=function(e,t,i){return e.x===t[i]&&e.y===t[i+1]&&e.z===t[i+2]&&e.w===t[i+3]},o.equalsEpsilon=function(e,i,r,o){return e===i||t(e)&&t(i)&&n.equalsEpsilon(e.x,i.x,r,o)&&n.equalsEpsilon(e.y,i.y,r,o)&&n.equalsEpsilon(e.z,i.z,r,o)&&n.equalsEpsilon(e.w,i.w,r,o)},o.ZERO=r(new o(0,0,0,0)),o.UNIT_X=r(new o(1,0,0,0)),o.UNIT_Y=r(new o(0,1,0,0)),o.UNIT_Z=r(new o(0,0,1,0)),o.UNIT_W=r(new o(0,0,0,1)),o.prototype.clone=function(e){return o.clone(this,e)},o.prototype.equals=function(e){return o.equals(this,e)},o.prototype.equalsEpsilon=function(e,t,i){return o.equalsEpsilon(this,e,t,i)},o.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},o}),i("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,i,r,n,o){"use strict";function a(e){for(var t=0,i=0;9>i;++i){var r=e[i];t+=r*r}return Math.sqrt(t)}function s(e){for(var t=0,i=0;3>i;++i){var r=e[u.getElementIndex(p[i],d[i])];t+=2*r*r}return Math.sqrt(t)}function l(e,t){for(var i=o.EPSILON15,r=0,n=1,a=0;3>a;++a){var s=Math.abs(e[u.getElementIndex(p[a],d[a])]);s>r&&(n=a,r=s)}var l=1,c=0,h=d[n],m=p[n];if(Math.abs(e[u.getElementIndex(m,h)])>i){var f,v=e[u.getElementIndex(m,m)],g=e[u.getElementIndex(h,h)],_=e[u.getElementIndex(m,h)],y=(v-g)/2/_;f=0>y?-1/(-y+Math.sqrt(1+y*y)):1/(y+Math.sqrt(1+y*y)),l=1/Math.sqrt(1+f*f),c=f*l}return t=u.clone(u.IDENTITY,t),t[u.getElementIndex(h,h)]=t[u.getElementIndex(m,m)]=l,t[u.getElementIndex(m,h)]=c,t[u.getElementIndex(h,m)]=-c,t}var u=function(e,i,r,n,o,a,s,l,u){this[0]=t(e,0),this[1]=t(n,0),this[2]=t(s,0),this[3]=t(i,0),this[4]=t(o,0),this[5]=t(l,0),this[6]=t(r,0),this[7]=t(a,0),this[8]=t(u,0)};u.packedLength=9,u.pack=function(e,i,r){r=t(r,0),i[r++]=e[0],i[r++]=e[1],i[r++]=e[2],i[r++]=e[3],i[r++]=e[4],i[r++]=e[5],i[r++]=e[6],i[r++]=e[7],i[r++]=e[8]},u.unpack=function(e,r,n){return r=t(r,0),i(n)||(n=new u),n[0]=e[r++],n[1]=e[r++],n[2]=e[r++],n[3]=e[r++],n[4]=e[r++],n[5]=e[r++],n[6]=e[r++],n[7]=e[r++],n[8]=e[r++],n},u.clone=function(e,t){return i(e)?i(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new u(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},u.fromArray=function(e,r,n){return r=t(r,0),i(n)||(n=new u),n[0]=e[r],n[1]=e[r+1],n[2]=e[r+2],n[3]=e[r+3],n[4]=e[r+4],n[5]=e[r+5],n[6]=e[r+6],n[7]=e[r+7],n[8]=e[r+8],n},u.fromColumnMajorArray=function(e,t){return u.clone(e,t)},u.fromRowMajorArray=function(e,t){return i(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new u(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},u.fromQuaternion=function(e,t){var r=e.x*e.x,n=e.x*e.y,o=e.x*e.z,a=e.x*e.w,s=e.y*e.y,l=e.y*e.z,c=e.y*e.w,h=e.z*e.z,d=e.z*e.w,p=e.w*e.w,m=r-s-h+p,f=2*(n-d),v=2*(o+c),g=2*(n+d),_=-r+s-h+p,y=2*(l-a),C=2*(o-c),w=2*(l+a),S=-r-s+h+p; +return i(t)?(t[0]=m,t[1]=g,t[2]=C,t[3]=f,t[4]=_,t[5]=w,t[6]=v,t[7]=y,t[8]=S,t):new u(m,f,v,g,_,y,C,w,S)},u.fromScale=function(e,t){return i(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new u(e.x,0,0,0,e.y,0,0,0,e.z)},u.fromUniformScale=function(e,t){return i(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new u(e,0,0,0,e,0,0,0,e)},u.fromCrossProduct=function(e,t){return i(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new u(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},u.fromRotationX=function(e,t){var r=Math.cos(e),n=Math.sin(e);return i(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=n,t[6]=0,t[7]=-n,t[8]=r,t):new u(1,0,0,0,r,-n,0,n,r)},u.fromRotationY=function(e,t){var r=Math.cos(e),n=Math.sin(e);return i(t)?(t[0]=r,t[1]=0,t[2]=-n,t[3]=0,t[4]=1,t[5]=0,t[6]=n,t[7]=0,t[8]=r,t):new u(r,0,n,0,1,0,-n,0,r)},u.fromRotationZ=function(e,t){var r=Math.cos(e),n=Math.sin(e);return i(t)?(t[0]=r,t[1]=n,t[2]=0,t[3]=-n,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new u(r,-n,0,n,r,0,0,0,1)},u.toArray=function(e,t){return i(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},u.getElementIndex=function(e,t){return 3*e+t},u.getColumn=function(e,t,i){var r=3*t,n=e[r],o=e[r+1],a=e[r+2];return i.x=n,i.y=o,i.z=a,i},u.setColumn=function(e,t,i,r){r=u.clone(e,r);var n=3*t;return r[n]=i.x,r[n+1]=i.y,r[n+2]=i.z,r},u.getRow=function(e,t,i){var r=e[t],n=e[t+3],o=e[t+6];return i.x=r,i.y=n,i.z=o,i},u.setRow=function(e,t,i,r){return r=u.clone(e,r),r[t]=i.x,r[t+3]=i.y,r[t+6]=i.z,r};var c=new e;u.getScale=function(t,i){return i.x=e.magnitude(e.fromElements(t[0],t[1],t[2],c)),i.y=e.magnitude(e.fromElements(t[3],t[4],t[5],c)),i.z=e.magnitude(e.fromElements(t[6],t[7],t[8],c)),i};var h=new e;u.getMaximumScale=function(t){return u.getScale(t,h),e.maximumComponent(h)},u.multiply=function(e,t,i){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],n=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],o=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],a=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],s=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],l=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],u=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],c=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],h=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return i[0]=r,i[1]=n,i[2]=o,i[3]=a,i[4]=s,i[5]=l,i[6]=u,i[7]=c,i[8]=h,i},u.add=function(e,t,i){return i[0]=e[0]+t[0],i[1]=e[1]+t[1],i[2]=e[2]+t[2],i[3]=e[3]+t[3],i[4]=e[4]+t[4],i[5]=e[5]+t[5],i[6]=e[6]+t[6],i[7]=e[7]+t[7],i[8]=e[8]+t[8],i},u.subtract=function(e,t,i){return i[0]=e[0]-t[0],i[1]=e[1]-t[1],i[2]=e[2]-t[2],i[3]=e[3]-t[3],i[4]=e[4]-t[4],i[5]=e[5]-t[5],i[6]=e[6]-t[6],i[7]=e[7]-t[7],i[8]=e[8]-t[8],i},u.multiplyByVector=function(e,t,i){var r=t.x,n=t.y,o=t.z,a=e[0]*r+e[3]*n+e[6]*o,s=e[1]*r+e[4]*n+e[7]*o,l=e[2]*r+e[5]*n+e[8]*o;return i.x=a,i.y=s,i.z=l,i},u.multiplyByScalar=function(e,t,i){return i[0]=e[0]*t,i[1]=e[1]*t,i[2]=e[2]*t,i[3]=e[3]*t,i[4]=e[4]*t,i[5]=e[5]*t,i[6]=e[6]*t,i[7]=e[7]*t,i[8]=e[8]*t,i},u.multiplyByScale=function(e,t,i){return i[0]=e[0]*t.x,i[1]=e[1]*t.x,i[2]=e[2]*t.x,i[3]=e[3]*t.y,i[4]=e[4]*t.y,i[5]=e[5]*t.y,i[6]=e[6]*t.z,i[7]=e[7]*t.z,i[8]=e[8]*t.z,i},u.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},u.transpose=function(e,t){var i=e[0],r=e[3],n=e[6],o=e[1],a=e[4],s=e[7],l=e[2],u=e[5],c=e[8];return t[0]=i,t[1]=r,t[2]=n,t[3]=o,t[4]=a,t[5]=s,t[6]=l,t[7]=u,t[8]=c,t};var d=[1,0,0],p=[2,2,1],m=new u,f=new u;return u.computeEigenDecomposition=function(e,t){var r=o.EPSILON20,n=10,c=0,h=0;i(t)||(t={});for(var d=t.unitary=u.clone(u.IDENTITY,t.unitary),p=t.diagonal=u.clone(e,t.diagonal),v=r*a(p);n>h&&s(p)>v;)l(p,m),u.transpose(m,f),u.multiply(p,m,p),u.multiply(f,p,p),u.multiply(d,m,d),++c>2&&(++h,c=0);return t},u.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},u.determinant=function(e){var t=e[0],i=e[3],r=e[6],n=e[1],o=e[4],a=e[7],s=e[2],l=e[5],u=e[8];return t*(o*u-l*a)+n*(l*r-i*u)+s*(i*a-o*r)},u.inverse=function(e,t){var i=e[0],n=e[1],a=e[2],s=e[3],l=e[4],c=e[5],h=e[6],d=e[7],p=e[8],m=u.determinant(e);if(Math.abs(m)<=o.EPSILON15)throw new r("matrix is not invertible");t[0]=l*p-d*c,t[1]=d*a-n*p,t[2]=n*c-l*a,t[3]=h*c-s*p,t[4]=i*p-h*a,t[5]=s*a-i*c,t[6]=s*d-h*l,t[7]=h*n-i*d,t[8]=i*l-s*n;var f=1/m;return u.multiplyByScalar(t,f,t)},u.equals=function(e,t){return e===t||i(e)&&i(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},u.equalsEpsilon=function(e,t,r){return e===t||i(e)&&i(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},u.IDENTITY=n(new u(1,0,0,0,1,0,0,0,1)),u.ZERO=n(new u(0,0,0,0,0,0,0,0,0)),u.COLUMN0ROW0=0,u.COLUMN0ROW1=1,u.COLUMN0ROW2=2,u.COLUMN1ROW0=3,u.COLUMN1ROW1=4,u.COLUMN1ROW2=5,u.COLUMN2ROW0=6,u.COLUMN2ROW1=7,u.COLUMN2ROW2=8,u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u.equalsArray=function(e,t,i){return e[0]===t[i]&&e[1]===t[i+1]&&e[2]===t[i+2]&&e[3]===t[i+3]&&e[4]===t[i+4]&&e[5]===t[i+5]&&e[6]===t[i+6]&&e[7]===t[i+7]&&e[8]===t[i+8]},u.prototype.equalsEpsilon=function(e,t){return u.equalsEpsilon(this,e,t)},u.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},u}),i("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,i,r,n,o,a,s,l){"use strict";var u=function(e,t,r,n,o,a,s,l,u,c,h,d,p,m,f,v){this[0]=i(e,0),this[1]=i(o,0),this[2]=i(u,0),this[3]=i(p,0),this[4]=i(t,0),this[5]=i(a,0),this[6]=i(c,0),this[7]=i(m,0),this[8]=i(r,0),this[9]=i(s,0),this[10]=i(h,0),this[11]=i(f,0),this[12]=i(n,0),this[13]=i(l,0),this[14]=i(d,0),this[15]=i(v,0)};u.packedLength=16,u.pack=function(e,t,r){r=i(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},u.unpack=function(e,t,n){return t=i(t,0),r(n)||(n=new u),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n[9]=e[t++],n[10]=e[t++],n[11]=e[t++],n[12]=e[t++],n[13]=e[t++],n[14]=e[t++],n[15]=e[t],n},u.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new u(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},u.fromArray=u.unpack,u.fromColumnMajorArray=function(e,t){return u.clone(e,t)},u.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new u(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},u.fromRotationTranslation=function(t,n,o){return n=i(n,e.ZERO),r(o)?(o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=0,o[4]=t[3],o[5]=t[4],o[6]=t[5],o[7]=0,o[8]=t[6],o[9]=t[7],o[10]=t[8],o[11]=0,o[12]=n.x,o[13]=n.y,o[14]=n.z,o[15]=1,o):new u(t[0],t[3],t[6],n.x,t[1],t[4],t[7],n.y,t[2],t[5],t[8],n.z,0,0,0,1)},u.fromTranslationQuaternionRotationScale=function(e,t,i,n){r(n)||(n=new u);var o=i.x,a=i.y,s=i.z,l=t.x*t.x,c=t.x*t.y,h=t.x*t.z,d=t.x*t.w,p=t.y*t.y,m=t.y*t.z,f=t.y*t.w,v=t.z*t.z,g=t.z*t.w,_=t.w*t.w,y=l-p-v+_,C=2*(c-g),w=2*(h+f),S=2*(c+g),E=-l+p-v+_,b=2*(m-d),x=2*(h-f),T=2*(m+d),P=-l-p+v+_;return n[0]=y*o,n[1]=S*o,n[2]=x*o,n[3]=0,n[4]=C*a,n[5]=E*a,n[6]=T*a,n[7]=0,n[8]=w*s,n[9]=b*s,n[10]=P*s,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n},u.fromTranslation=function(e,t){return u.fromRotationTranslation(s.IDENTITY,e,t)},u.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new u(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},u.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new u(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var c=new e,h=new e,d=new e;u.fromCamera=function(t,i){var n=t.eye,o=t.target,a=t.up;e.normalize(e.subtract(o,n,c),c),e.normalize(e.cross(c,a,h),h),e.normalize(e.cross(h,c,d),d);var s=h.x,l=h.y,p=h.z,m=c.x,f=c.y,v=c.z,g=d.x,_=d.y,y=d.z,C=n.x,w=n.y,S=n.z,E=s*-C+l*-w+p*-S,b=g*-C+_*-w+y*-S,x=m*C+f*w+v*S;return r(i)?(i[0]=s,i[1]=g,i[2]=-m,i[3]=0,i[4]=l,i[5]=_,i[6]=-f,i[7]=0,i[8]=p,i[9]=y,i[10]=-v,i[11]=0,i[12]=E,i[13]=b,i[14]=x,i[15]=1,i):new u(s,l,p,E,g,_,y,b,-m,-f,-v,x,0,0,0,1)},u.computePerspectiveFieldOfView=function(e,t,i,r,n){var o=Math.tan(.5*e),a=1/o,s=a/t,l=(r+i)/(i-r),u=2*r*i/(i-r);return n[0]=s,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=a,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=l,n[11]=-1,n[12]=0,n[13]=0,n[14]=u,n[15]=0,n},u.computeOrthographicOffCenter=function(e,t,i,r,n,o,a){var s=1/(t-e),l=1/(r-i),u=1/(o-n),c=-(t+e)*s,h=-(r+i)*l,d=-(o+n)*u;return s*=2,l*=2,u*=-2,a[0]=s,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=l,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=u,a[11]=0,a[12]=c,a[13]=h,a[14]=d,a[15]=1,a},u.computePerspectiveOffCenter=function(e,t,i,r,n,o,a){var s=2*n/(t-e),l=2*n/(r-i),u=(t+e)/(t-e),c=(r+i)/(r-i),h=-(o+n)/(o-n),d=-1,p=-2*o*n/(o-n);return a[0]=s,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=l,a[6]=0,a[7]=0,a[8]=u,a[9]=c,a[10]=h,a[11]=d,a[12]=0,a[13]=0,a[14]=p,a[15]=0,a},u.computeInfinitePerspectiveOffCenter=function(e,t,i,r,n,o){var a=2*n/(t-e),s=2*n/(r-i),l=(t+e)/(t-e),u=(r+i)/(r-i),c=-1,h=-1,d=-2*n;return o[0]=a,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=l,o[9]=u,o[10]=c,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},u.computeViewportTransformation=function(e,t,r,n){e=i(e,i.EMPTY_OBJECT);var o=i(e.x,0),a=i(e.y,0),s=i(e.width,0),l=i(e.height,0);t=i(t,0),r=i(r,1);var u=.5*s,c=.5*l,h=.5*(r-t),d=u,p=c,m=h,f=o+u,v=a+c,g=t+h,_=1;return n[0]=d,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=p,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=m,n[11]=0,n[12]=f,n[13]=v,n[14]=g,n[15]=_,n},u.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},u.getElementIndex=function(e,t){return 4*e+t},u.getColumn=function(e,t,i){var r=4*t,n=e[r],o=e[r+1],a=e[r+2],s=e[r+3];return i.x=n,i.y=o,i.z=a,i.w=s,i},u.setColumn=function(e,t,i,r){r=u.clone(e,r);var n=4*t;return r[n]=i.x,r[n+1]=i.y,r[n+2]=i.z,r[n+3]=i.w,r},u.setTranslation=function(e,t,i){return i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i[4]=e[4],i[5]=e[5],i[6]=e[6],i[7]=e[7],i[8]=e[8],i[9]=e[9],i[10]=e[10],i[11]=e[11],i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=e[15],i},u.getRow=function(e,t,i){var r=e[t],n=e[t+4],o=e[t+8],a=e[t+12];return i.x=r,i.y=n,i.z=o,i.w=a,i},u.setRow=function(e,t,i,r){return r=u.clone(e,r),r[t]=i.x,r[t+4]=i.y,r[t+8]=i.z,r[t+12]=i.w,r};var p=new e;u.getScale=function(t,i){return i.x=e.magnitude(e.fromElements(t[0],t[1],t[2],p)),i.y=e.magnitude(e.fromElements(t[4],t[5],t[6],p)),i.z=e.magnitude(e.fromElements(t[8],t[9],t[10],p)),i};var m=new e;u.getMaximumScale=function(t){return u.getScale(t,m),e.maximumComponent(m)},u.multiply=function(e,t,i){var r=e[0],n=e[1],o=e[2],a=e[3],s=e[4],l=e[5],u=e[6],c=e[7],h=e[8],d=e[9],p=e[10],m=e[11],f=e[12],v=e[13],g=e[14],_=e[15],y=t[0],C=t[1],w=t[2],S=t[3],E=t[4],b=t[5],x=t[6],T=t[7],P=t[8],A=t[9],D=t[10],M=t[11],I=t[12],O=t[13],R=t[14],L=t[15],N=r*y+s*C+h*w+f*S,F=n*y+l*C+d*w+v*S,B=o*y+u*C+p*w+g*S,z=a*y+c*C+m*w+_*S,k=r*E+s*b+h*x+f*T,V=n*E+l*b+d*x+v*T,U=o*E+u*b+p*x+g*T,W=a*E+c*b+m*x+_*T,G=r*P+s*A+h*D+f*M,H=n*P+l*A+d*D+v*M,q=o*P+u*A+p*D+g*M,j=a*P+c*A+m*D+_*M,Y=r*I+s*O+h*R+f*L,X=n*I+l*O+d*R+v*L,Z=o*I+u*O+p*R+g*L,J=a*I+c*O+m*R+_*L;return i[0]=N,i[1]=F,i[2]=B,i[3]=z,i[4]=k,i[5]=V,i[6]=U,i[7]=W,i[8]=G,i[9]=H,i[10]=q,i[11]=j,i[12]=Y,i[13]=X,i[14]=Z,i[15]=J,i},u.add=function(e,t,i){return i[0]=e[0]+t[0],i[1]=e[1]+t[1],i[2]=e[2]+t[2],i[3]=e[3]+t[3],i[4]=e[4]+t[4],i[5]=e[5]+t[5],i[6]=e[6]+t[6],i[7]=e[7]+t[7],i[8]=e[8]+t[8],i[9]=e[9]+t[9],i[10]=e[10]+t[10],i[11]=e[11]+t[11],i[12]=e[12]+t[12],i[13]=e[13]+t[13],i[14]=e[14]+t[14],i[15]=e[15]+t[15],i},u.subtract=function(e,t,i){return i[0]=e[0]-t[0],i[1]=e[1]-t[1],i[2]=e[2]-t[2],i[3]=e[3]-t[3],i[4]=e[4]-t[4],i[5]=e[5]-t[5],i[6]=e[6]-t[6],i[7]=e[7]-t[7],i[8]=e[8]-t[8],i[9]=e[9]-t[9],i[10]=e[10]-t[10],i[11]=e[11]-t[11],i[12]=e[12]-t[12],i[13]=e[13]-t[13],i[14]=e[14]-t[14],i[15]=e[15]-t[15],i},u.multiplyTransformation=function(e,t,i){var r=e[0],n=e[1],o=e[2],a=e[4],s=e[5],l=e[6],u=e[8],c=e[9],h=e[10],d=e[12],p=e[13],m=e[14],f=t[0],v=t[1],g=t[2],_=t[4],y=t[5],C=t[6],w=t[8],S=t[9],E=t[10],b=t[12],x=t[13],T=t[14],P=r*f+a*v+u*g,A=n*f+s*v+c*g,D=o*f+l*v+h*g,M=r*_+a*y+u*C,I=n*_+s*y+c*C,O=o*_+l*y+h*C,R=r*w+a*S+u*E,L=n*w+s*S+c*E,N=o*w+l*S+h*E,F=r*b+a*x+u*T+d,B=n*b+s*x+c*T+p,z=o*b+l*x+h*T+m;return i[0]=P,i[1]=A,i[2]=D,i[3]=0,i[4]=M,i[5]=I,i[6]=O,i[7]=0,i[8]=R,i[9]=L,i[10]=N,i[11]=0,i[12]=F,i[13]=B,i[14]=z,i[15]=1,i},u.multiplyByMatrix3=function(e,t,i){var r=e[0],n=e[1],o=e[2],a=e[4],s=e[5],l=e[6],u=e[8],c=e[9],h=e[10],d=t[0],p=t[1],m=t[2],f=t[3],v=t[4],g=t[5],_=t[6],y=t[7],C=t[8],w=r*d+a*p+u*m,S=n*d+s*p+c*m,E=o*d+l*p+h*m,b=r*f+a*v+u*g,x=n*f+s*v+c*g,T=o*f+l*v+h*g,P=r*_+a*y+u*C,A=n*_+s*y+c*C,D=o*_+l*y+h*C;return i[0]=w,i[1]=S,i[2]=E,i[3]=0,i[4]=b,i[5]=x,i[6]=T,i[7]=0,i[8]=P,i[9]=A,i[10]=D,i[11]=0,i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15],i},u.multiplyByTranslation=function(e,t,i){var r=t.x,n=t.y,o=t.z,a=r*e[0]+n*e[4]+o*e[8]+e[12],s=r*e[1]+n*e[5]+o*e[9]+e[13],l=r*e[2]+n*e[6]+o*e[10]+e[14];return i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i[4]=e[4],i[5]=e[5],i[6]=e[6],i[7]=e[7],i[8]=e[8],i[9]=e[9],i[10]=e[10],i[11]=e[11],i[12]=a,i[13]=s,i[14]=l,i[15]=e[15],i};var f=new e;u.multiplyByUniformScale=function(e,t,i){return f.x=t,f.y=t,f.z=t,u.multiplyByScale(e,f,i)},u.multiplyByScale=function(e,t,i){var r=t.x,n=t.y,o=t.z;return 1===r&&1===n&&1===o?u.clone(e,i):(i[0]=r*e[0],i[1]=r*e[1],i[2]=r*e[2],i[3]=0,i[4]=n*e[4],i[5]=n*e[5],i[6]=n*e[6],i[7]=0,i[8]=o*e[8],i[9]=o*e[9],i[10]=o*e[10],i[11]=0,i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=1,i)},u.multiplyByVector=function(e,t,i){var r=t.x,n=t.y,o=t.z,a=t.w,s=e[0]*r+e[4]*n+e[8]*o+e[12]*a,l=e[1]*r+e[5]*n+e[9]*o+e[13]*a,u=e[2]*r+e[6]*n+e[10]*o+e[14]*a,c=e[3]*r+e[7]*n+e[11]*o+e[15]*a;return i.x=s,i.y=l,i.z=u,i.w=c,i},u.multiplyByPointAsVector=function(e,t,i){var r=t.x,n=t.y,o=t.z,a=e[0]*r+e[4]*n+e[8]*o,s=e[1]*r+e[5]*n+e[9]*o,l=e[2]*r+e[6]*n+e[10]*o;return i.x=a,i.y=s,i.z=l,i},u.multiplyByPoint=function(e,t,i){var r=t.x,n=t.y,o=t.z,a=e[0]*r+e[4]*n+e[8]*o+e[12],s=e[1]*r+e[5]*n+e[9]*o+e[13],l=e[2]*r+e[6]*n+e[10]*o+e[14];return i.x=a,i.y=s,i.z=l,i},u.multiplyByScalar=function(e,t,i){return i[0]=e[0]*t,i[1]=e[1]*t,i[2]=e[2]*t,i[3]=e[3]*t,i[4]=e[4]*t,i[5]=e[5]*t,i[6]=e[6]*t,i[7]=e[7]*t,i[8]=e[8]*t,i[9]=e[9]*t,i[10]=e[10]*t,i[11]=e[11]*t,i[12]=e[12]*t,i[13]=e[13]*t,i[14]=e[14]*t,i[15]=e[15]*t,i},u.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},u.transpose=function(e,t){var i=e[1],r=e[2],n=e[3],o=e[6],a=e[7],s=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=i,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=o,t[10]=e[10],t[11]=e[14],t[12]=n,t[13]=a,t[14]=s,t[15]=e[15],t},u.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},u.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},u.equalsEpsilon=function(e,t,i){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=i&&Math.abs(e[1]-t[1])<=i&&Math.abs(e[2]-t[2])<=i&&Math.abs(e[3]-t[3])<=i&&Math.abs(e[4]-t[4])<=i&&Math.abs(e[5]-t[5])<=i&&Math.abs(e[6]-t[6])<=i&&Math.abs(e[7]-t[7])<=i&&Math.abs(e[8]-t[8])<=i&&Math.abs(e[9]-t[9])<=i&&Math.abs(e[10]-t[10])<=i&&Math.abs(e[11]-t[11])<=i&&Math.abs(e[12]-t[12])<=i&&Math.abs(e[13]-t[13])<=i&&Math.abs(e[14]-t[14])<=i&&Math.abs(e[15]-t[15])<=i},u.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},u.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var v=new s,g=new s,_=new t,y=new t(0,0,0,1);return u.inverse=function(e,i){if(s.equalsEpsilon(u.getRotation(e,v),g,a.EPSILON7)&&t.equals(u.getRow(e,3,_),y))return i[0]=0,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=0,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=0,i[11]=0,i[12]=-e[12],i[13]=-e[13],i[14]=-e[14],i[15]=1,i;var r=e[0],n=e[4],o=e[8],c=e[12],h=e[1],d=e[5],p=e[9],m=e[13],f=e[2],C=e[6],w=e[10],S=e[14],E=e[3],b=e[7],x=e[11],T=e[15],P=w*T,A=S*x,D=C*T,M=S*b,I=C*x,O=w*b,R=f*T,L=S*E,N=f*x,F=w*E,B=f*b,z=C*E,k=P*d+M*p+I*m-(A*d+D*p+O*m),V=A*h+R*p+F*m-(P*h+L*p+N*m),U=D*h+L*d+B*m-(M*h+R*d+z*m),W=O*h+N*d+z*p-(I*h+F*d+B*p),G=A*n+D*o+O*c-(P*n+M*o+I*c),H=P*r+L*o+N*c-(A*r+R*o+F*c),q=M*r+R*n+z*c-(D*r+L*n+B*c),j=I*r+F*n+B*o-(O*r+N*n+z*o);P=o*m,A=c*p,D=n*m,M=c*d,I=n*p,O=o*d,R=r*m,L=c*h,N=r*p,F=o*h,B=r*d,z=n*h;var Y=P*b+M*x+I*T-(A*b+D*x+O*T),X=A*E+R*x+F*T-(P*E+L*x+N*T),Z=D*E+L*b+B*T-(M*E+R*b+z*T),J=O*E+N*b+z*x-(I*E+F*b+B*x),Q=D*w+O*S+A*C-(I*S+P*C+M*w),K=N*S+P*f+L*w-(R*w+F*S+A*f),$=R*C+z*S+M*f-(B*S+D*f+L*C),et=B*w+I*f+F*C-(N*C+z*w+O*f),tt=r*k+n*V+o*U+c*W;if(Math.abs(tt)d;d++){e.clone(t[d],n);var T=n.x,P=n.y,A=n.z;Tl.x&&e.clone(n,l),Pu.y&&e.clone(n,u),Ac.z&&e.clone(n,c)}var D=e.magnitudeSquared(e.subtract(l,o,w)),M=e.magnitudeSquared(e.subtract(u,a,w)),I=e.magnitudeSquared(e.subtract(c,s,w)),O=o,R=l,L=D;M>L&&(L=M,O=a,R=u),I>L&&(L=I,O=s,R=c);var N=S;N.x=.5*(O.x+R.x),N.y=.5*(O.y+R.y),N.z=.5*(O.z+R.z);var F=e.magnitudeSquared(e.subtract(R,N,w)),B=Math.sqrt(F),z=E;z.x=o.x,z.y=a.y,z.z=s.z;var k=b;k.x=l.x,k.y=u.y,k.z=c.z;var V=e.multiplyByScalar(e.add(z,k,w),.5,x),U=0;for(d=0;h>d;d++){e.clone(t[d],n);var W=e.magnitude(e.subtract(n,V,w));W>U&&(U=W);var G=e.magnitudeSquared(e.subtract(n,N,w));if(G>F){var H=Math.sqrt(G);B=.5*(B+H),F=B*B;var q=H-B;N.x=(B*N.x+q*n.x)/H,N.y=(B*N.y+q*n.y)/H,N.z=(B*N.z+q*n.z)/H}}return U>B?(e.clone(N,i.center),i.radius=B):(e.clone(V,i.center),i.radius=U),i};var T=new s,P=new e,A=new e,D=new t,M=new t;p.fromRectangle2D=function(e,t,i){return p.fromRectangleWithHeights2D(e,t,0,0,i)},p.fromRectangleWithHeights2D=function(t,n,o,a,s){if(r(s)||(s=new p),!r(t))return s.center=e.clone(e.ZERO,s.center),s.radius=0,s;n=i(n,T),d.southwest(t,D),D.height=o,d.northeast(t,M),M.height=a;var l=n.project(D,P),u=n.project(M,A),c=u.x-l.x,h=u.y-l.y,m=u.z-l.z;s.radius=.5*Math.sqrt(c*c+h*h+m*m);var f=s.center;return f.x=l.x+.5*c,f.y=l.y+.5*h,f.z=l.z+.5*m,s};var I=[];p.fromRectangle3D=function(e,t,n,o){t=i(t,a.WGS84),n=i(n,0);var s;return r(e)&&(s=d.subsample(e,t,n,I)),p.fromPoints(s,o)},p.fromVertices=function(t,n,o,a){if(r(a)||(a=new p),!r(t)||0===t.length)return a.center=e.clone(e.ZERO,a.center),a.radius=0,a;n=i(n,e.ZERO),o=i(o,3);var s=C;s.x=t[0]+n.x,s.y=t[1]+n.y,s.z=t[2]+n.z;for(var l=e.clone(s,m),u=e.clone(s,f),c=e.clone(s,v),h=e.clone(s,g),d=e.clone(s,_),T=e.clone(s,y),P=t.length,A=0;P>A;A+=o){var D=t[A]+n.x,M=t[A+1]+n.y,I=t[A+2]+n.z;s.x=D,s.y=M,s.z=I,Dh.x&&e.clone(s,h),Md.y&&e.clone(s,d),IT.z&&e.clone(s,T)}var O=e.magnitudeSquared(e.subtract(h,l,w)),R=e.magnitudeSquared(e.subtract(d,u,w)),L=e.magnitudeSquared(e.subtract(T,c,w)),N=l,F=h,B=O;R>B&&(B=R,N=u,F=d),L>B&&(B=L,N=c,F=T);var z=S;z.x=.5*(N.x+F.x),z.y=.5*(N.y+F.y),z.z=.5*(N.z+F.z);var k=e.magnitudeSquared(e.subtract(F,z,w)),V=Math.sqrt(k),U=E;U.x=l.x,U.y=u.y,U.z=c.z;var W=b;W.x=h.x,W.y=d.y,W.z=T.z;var G=e.multiplyByScalar(e.add(U,W,w),.5,x),H=0;for(A=0;P>A;A+=o){s.x=t[A]+n.x,s.y=t[A+1]+n.y,s.z=t[A+2]+n.z;var q=e.magnitude(e.subtract(s,G,w));q>H&&(H=q);var j=e.magnitudeSquared(e.subtract(s,z,w));if(j>k){var Y=Math.sqrt(j);V=.5*(V+Y),k=V*V;var X=Y-V;z.x=(V*z.x+X*s.x)/Y,z.y=(V*z.y+X*s.y)/Y,z.z=(V*z.z+X*s.z)/Y}}return H>V?(e.clone(z,a.center),a.radius=V):(e.clone(G,a.center),a.radius=H),a},p.fromCornerPoints=function(t,i,n){r(n)||(n=new p);var o=n.center;return e.add(t,i,o),e.multiplyByScalar(o,.5,o),n.radius=e.distance(o,i),n},p.fromEllipsoid=function(t,i){return r(i)||(i=new p),e.clone(e.ZERO,i.center),i.radius=t.maximumRadius,i};var O=new e;p.fromBoundingSpheres=function(t,i){if(r(i)||(i=new p),!r(t)||0===t.length)return i.center=e.clone(e.ZERO,i.center),i.radius=0,i;var n=t.length;if(1===n)return p.clone(t[0],i);if(2===n)return p.union(t[0],t[1],i);for(var o=[],a=0;n>a;a++)o.push(t[a].center);i=p.fromPoints(o,i);var s=i.center,l=i.radius;for(a=0;n>a;a++){var u=t[a];l=Math.max(l,e.distance(s,u.center,O)+u.radius)}return i.radius=l,i},p.clone=function(t,i){return r(t)?r(i)?(i.center=e.clone(t.center,i.center),i.radius=t.radius,i):new p(t.center,t.radius):void 0},p.packedLength=4,p.pack=function(e,t,r){r=i(r,0);var n=e.center;t[r++]=n.x,t[r++]=n.y,t[r++]=n.z,t[r]=e.radius},p.unpack=function(e,t,n){t=i(t,0),r(n)||(n=new p);var o=n.center;return o.x=e[t++],o.y=e[t++],o.z=e[t++],n.radius=e[t],n};var R=new e,L=new e;p.union=function(t,i,n){r(n)||(n=new p);var o=t.center,a=t.radius,s=i.center,l=i.radius,u=e.subtract(s,o,R),c=e.magnitude(u);if(a>=c+l)return t.clone(n),n;if(l>=c+a)return i.clone(n),n;var h=.5*(a+c+l),d=e.multiplyByScalar(u,(-a+h)/c,L);return e.add(d,o,d),e.clone(d,n.center),n.radius=h,n};var N=new e;p.expand=function(t,i,r){r=p.clone(t,r);var n=e.magnitude(e.subtract(i,r.center,N));return n>r.radius&&(r.radius=n),r},p.intersectPlane=function(t,i){var r=t.center,n=t.radius,o=i.normal,a=e.dot(o,r)+i.distance;return-n>a?l.OUTSIDE:n>a?l.INTERSECTING:l.INSIDE};var F=new h(new e,0);p.intersect=function(e,t){n("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var i=h.fromCartesian4(t,F);return p.intersectPlane(e,i)},p.transform=function(e,t,i){return r(i)||(i=new p),i.center=c.multiplyByPoint(t,e.center,i.center),i.radius=c.getMaximumScale(t)*e.radius,i};var B=new e;p.distanceSquaredTo=function(t,i){var r=e.subtract(t.center,i,B);return e.magnitudeSquared(r)-t.radius*t.radius},p.transformWithoutScale=function(e,t,i){return r(i)||(i=new p),i.center=c.multiplyByPoint(t,e.center,i.center),i.radius=e.radius,i};var z=new e;p.computePlaneDistances=function(t,i,n,o){r(o)||(o=new u);var a=e.subtract(t.center,i,z),s=e.multiplyByScalar(n,e.dot(n,a),z),l=e.magnitude(s);return o.start=l-t.radius,o.stop=l+t.radius,o};for(var k=new e,V=new e,U=new e,W=new e,G=new e,H=new t,q=new Array(8),j=0;8>j;++j)q[j]=new e;var Y=new s;return p.projectTo2D=function(t,r,n){r=i(r,Y);var o=r.ellipsoid,a=t.center,s=t.radius,l=o.geodeticSurfaceNormal(a,k),u=e.cross(e.UNIT_Z,l,V);e.normalize(u,u);var c=e.cross(l,u,U);e.normalize(c,c),e.multiplyByScalar(l,s,l),e.multiplyByScalar(c,s,c),e.multiplyByScalar(u,s,u);var h=e.negate(c,G),d=e.negate(u,W),m=q,f=m[0];e.add(l,c,f),e.add(f,u,f),f=m[1],e.add(l,c,f),e.add(f,d,f),f=m[2],e.add(l,h,f),e.add(f,d,f),f=m[3],e.add(l,h,f),e.add(f,u,f),e.negate(l,l),f=m[4],e.add(l,c,f),e.add(f,u,f),f=m[5],e.add(l,c,f),e.add(f,d,f),f=m[6],e.add(l,h,f),e.add(f,d,f),f=m[7],e.add(l,h,f),e.add(f,u,f);for(var v=m.length,g=0;v>g;++g){var _=m[g];e.add(a,_,_);var y=o.cartesianToCartographic(_,H);r.project(y,_)}n=p.fromPoints(m,n),a=n.center;var C=a.x,w=a.y,S=a.z;return a.x=S,a.y=C,a.z=w,n},p.equals=function(t,i){return t===i||r(t)&&r(i)&&e.equals(t.center,i.center)&&t.radius===i.radius},p.prototype.intersectPlane=function(e){return p.intersectPlane(this,e)},p.prototype.intersect=function(e){return p.intersect(this,e)},p.prototype.equals=function(e){return p.equals(this,e)},p.prototype.clone=function(e){return p.clone(this,e)},p}),i("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var i,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},n={};return t(n,{element:{get:function(){return n.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return n.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return n.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return n.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return n.supportsFullscreen()?null!==n.element:void 0}}}),n.supportsFullscreen=function(){if(e(i))return i;i=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",i=!0;for(var n,o=["webkit","moz","o","ms","khtml"],a=0,s=o.length;s>a;++a){var l=o[a];n=l+"RequestFullscreen","function"==typeof t[n]?(r.requestFullscreen=n,i=!0):(n=l+"RequestFullScreen","function"==typeof t[n]&&(r.requestFullscreen=n,i=!0)),n=l+"ExitFullscreen","function"==typeof document[n]?r.exitFullscreen=n:(n=l+"CancelFullScreen","function"==typeof document[n]&&(r.exitFullscreen=n)),n=l+"FullscreenEnabled",e(document[n])?r.fullscreenEnabled=n:(n=l+"FullScreenEnabled",e(document[n])&&(r.fullscreenEnabled=n)),n=l+"FullscreenElement",e(document[n])?r.fullscreenElement=n:(n=l+"FullScreenElement",e(document[n])&&(r.fullscreenElement=n)),n=l+"fullscreenchange",e(document["on"+n])&&("ms"===l&&(n="MSFullscreenChange"),r.fullscreenchange=n),n=l+"fullscreenerror",e(document["on"+n])&&("ms"===l&&(n="MSFullscreenError"),r.fullscreenerror=n)}return i},n.requestFullscreen=function(e){n.supportsFullscreen()&&e[r.requestFullscreen]()},n.exitFullscreen=function(){n.supportsFullscreen()&&document[r.exitFullscreen]()},n}),i("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,i){"use strict";function r(e){for(var t=e.split("."),i=0,r=t.length;r>i;++i)t[i]=parseInt(t[i],10);return t}function n(){if(!t(v)){v=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(v=!0,g=r(e[1]))}return v}function o(){return n()&&g}function a(){if(!t(_)&&(_=!1,!n()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(_=!0,y=r(e[1]))}return _}function s(){return a()&&y}function l(){if(!t(C)){C=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(C=!0,w=r(e[1]),w.isNightly=!!e[2])}return C}function u(){return l()&&w}function c(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,E=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,E=r(e[1])))}return S}function h(){return c()&&E}function d(){if(!t(b)){b=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(b=!0,x=r(e[1]))}return b}function p(){return t(T)||(T=/Windows/i.test(navigator.appVersion)),T}function m(){return d()&&x}function f(){return t(P)||(P=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),P}var v,g,_,y,C,w,S,E,b,x,T,P,A={isChrome:n,chromeVersion:o,isSafari:a,safariVersion:s,isWebkit:l,webkitVersion:u,isInternetExplorer:c,internetExplorerVersion:h,isFirefox:d,firefoxVersion:m,isWindows:p,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:f};return A.supportsFullscreen=function(){return i.supportsFullscreen()},A.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},A.supportsWebWorkers=function(){return"undefined"!=typeof Worker},A}),i("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,i,r,n){"use strict";if(!r.supportsTypedArrays())return{};var o={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return o.getSizeInBytes=function(e){switch(e){case o.BYTE:return Int8Array.BYTES_PER_ELEMENT;case o.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case o.SHORT:return Int16Array.BYTES_PER_ELEMENT;case o.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case o.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case o.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new i("componentDatatype is not a valid value.")}},o.fromTypedArray=function(e){return e instanceof Int8Array?o.BYTE:e instanceof Uint8Array?o.UNSIGNED_BYTE:e instanceof Int16Array?o.SHORT:e instanceof Uint16Array?o.UNSIGNED_SHORT:e instanceof Float32Array?o.FLOAT:e instanceof Float64Array?o.DOUBLE:void 0},o.validate=function(e){return t(e)&&(e===o.BYTE||e===o.UNSIGNED_BYTE||e===o.SHORT||e===o.UNSIGNED_SHORT||e===o.FLOAT||e===o.DOUBLE) +},o.createTypedArray=function(e,t){switch(e){case o.BYTE:return new Int8Array(t);case o.UNSIGNED_BYTE:return new Uint8Array(t);case o.SHORT:return new Int16Array(t);case o.UNSIGNED_SHORT:return new Uint16Array(t);case o.FLOAT:return new Float32Array(t);case o.DOUBLE:return new Float64Array(t);default:throw new i("componentDatatype is not a valid value.")}},o.createArrayBufferView=function(t,r,n,a){switch(n=e(n,0),a=e(a,(r.byteLength-n)/o.getSizeInBytes(t)),t){case o.BYTE:return new Int8Array(r,n,a);case o.UNSIGNED_BYTE:return new Uint8Array(r,n,a);case o.SHORT:return new Int16Array(r,n,a);case o.UNSIGNED_SHORT:return new Uint16Array(r,n,a);case o.FLOAT:return new Float32Array(r,n,a);case o.DOUBLE:return new Float64Array(r,n,a);default:throw new i("componentDatatype is not a valid value.")}},n(o)}),i("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),i("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),i("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,i,r,n){"use strict";var o=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,n.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,r.NONE),this.boundingSphereCV=void 0};return o.computeNumberOfVertices=function(e){var r=-1;for(var n in e.attributes)if(e.attributes.hasOwnProperty(n)&&t(e.attributes[n])&&t(e.attributes[n].values)){var o=e.attributes[n],a=o.values.length/o.componentsPerAttribute;if(r!==a&&-1!==r)throw new i("All attribute lists must have the same number of attributes.");r=a}return r},o}),i("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),i("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),i("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(e,t,i,r){"use strict";var n=function(t){t=e(t,e.EMPTY_OBJECT),this.position=e(t.position,!1),this.normal=e(t.normal,!1),this.st=e(t.st,!1),this.binormal=e(t.binormal,!1),this.tangent=e(t.tangent,!1),this.color=e(t.color,!1)};return n.POSITION_ONLY=r(new n({position:!0})),n.POSITION_AND_NORMAL=r(new n({position:!0,normal:!0})),n.POSITION_NORMAL_AND_ST=r(new n({position:!0,normal:!0,st:!0})),n.POSITION_AND_ST=r(new n({position:!0,st:!0})),n.POSITION_AND_COLOR=r(new n({position:!0,color:!0})),n.ALL=r(new n({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),n.DEFAULT=n.POSITION_NORMAL_AND_ST,n.packedLength=6,n.pack=function(t,i,r){r=e(r,0),i[r++]=t.position?1:0,i[r++]=t.normal?1:0,i[r++]=t.st?1:0,i[r++]=t.binormal?1:0,i[r++]=t.tangent?1:0,i[r++]=t.color?1:0},n.unpack=function(i,r,o){return r=e(r,0),t(o)||(o=new n),o.position=1===i[r++],o.normal=1===i[r++],o.st=1===i[r++],o.binormal=1===i[r++],o.tangent=1===i[r++],o.color=1===i[r++],o},n.clone=function(e,i){return t(e)?(t(i)||(i=new n),i.position=e.position,i.normal=e.normal,i.st=e.st,i.binormal=e.binormal,i.tangent=e.tangent,i.color=e.color,i):void 0},n}),i("Core/BoxGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Geometry","./GeometryAttribute","./GeometryAttributes","./PrimitiveType","./VertexFormat"],function(e,t,i,r,n,o,a,s,l,u,c){"use strict";var h=new t,d=function(e){e=r(e,r.EMPTY_OBJECT);var i=e.minimumCorner,n=e.maximumCorner,o=r(e.vertexFormat,c.DEFAULT);this._minimumCorner=t.clone(i),this._maximumCorner=t.clone(n),this._vertexFormat=o,this._workerName="createBoxGeometry"};d.fromDimensions=function(e){e=r(e,r.EMPTY_OBJECT);var i=e.dimensions,n=t.multiplyByScalar(i,.5,new t),o=t.negate(n,new t),a=n,s={minimumCorner:o,maximumCorner:a,vertexFormat:e.vertexFormat};return new d(s)},d.packedLength=2*t.packedLength+c.packedLength,d.pack=function(e,i,n){n=r(n,0),t.pack(e._minimumCorner,i,n),t.pack(e._maximumCorner,i,n+t.packedLength),c.pack(e._vertexFormat,i,n+2*t.packedLength)};var p=new t,m=new t,f=new c,v={minimumCorner:p,maximumCorner:m,vertexFormat:f};return d.unpack=function(e,i,o){i=r(i,0);var a=t.unpack(e,i,p),s=t.unpack(e,i+t.packedLength,m),l=c.unpack(e,i+2*t.packedLength,f);return n(o)?(o._minimumCorner=t.clone(a,o._minimumCorner),o._maximumCorner=t.clone(s,o._maximumCorner),o._vertexFormat=c.clone(l,o._vertexFormat),o):new d(v)},d.createGeometry=function(r){var n,o,c=r._minimumCorner,d=r._maximumCorner,p=r._vertexFormat,m=new l;if(p.position&&(p.st||p.normal||p.binormal||p.tangent)){if(p.position&&(o=new Float64Array(72),o[0]=c.x,o[1]=c.y,o[2]=d.z,o[3]=d.x,o[4]=c.y,o[5]=d.z,o[6]=d.x,o[7]=d.y,o[8]=d.z,o[9]=c.x,o[10]=d.y,o[11]=d.z,o[12]=c.x,o[13]=c.y,o[14]=c.z,o[15]=d.x,o[16]=c.y,o[17]=c.z,o[18]=d.x,o[19]=d.y,o[20]=c.z,o[21]=c.x,o[22]=d.y,o[23]=c.z,o[24]=d.x,o[25]=c.y,o[26]=c.z,o[27]=d.x,o[28]=d.y,o[29]=c.z,o[30]=d.x,o[31]=d.y,o[32]=d.z,o[33]=d.x,o[34]=c.y,o[35]=d.z,o[36]=c.x,o[37]=c.y,o[38]=c.z,o[39]=c.x,o[40]=d.y,o[41]=c.z,o[42]=c.x,o[43]=d.y,o[44]=d.z,o[45]=c.x,o[46]=c.y,o[47]=d.z,o[48]=c.x,o[49]=d.y,o[50]=c.z,o[51]=d.x,o[52]=d.y,o[53]=c.z,o[54]=d.x,o[55]=d.y,o[56]=d.z,o[57]=c.x,o[58]=d.y,o[59]=d.z,o[60]=c.x,o[61]=c.y,o[62]=c.z,o[63]=d.x,o[64]=c.y,o[65]=c.z,o[66]=d.x,o[67]=c.y,o[68]=d.z,o[69]=c.x,o[70]=c.y,o[71]=d.z,m.position=new s({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:o})),p.normal){var f=new Float32Array(72);f[0]=0,f[1]=0,f[2]=1,f[3]=0,f[4]=0,f[5]=1,f[6]=0,f[7]=0,f[8]=1,f[9]=0,f[10]=0,f[11]=1,f[12]=0,f[13]=0,f[14]=-1,f[15]=0,f[16]=0,f[17]=-1,f[18]=0,f[19]=0,f[20]=-1,f[21]=0,f[22]=0,f[23]=-1,f[24]=1,f[25]=0,f[26]=0,f[27]=1,f[28]=0,f[29]=0,f[30]=1,f[31]=0,f[32]=0,f[33]=1,f[34]=0,f[35]=0,f[36]=-1,f[37]=0,f[38]=0,f[39]=-1,f[40]=0,f[41]=0,f[42]=-1,f[43]=0,f[44]=0,f[45]=-1,f[46]=0,f[47]=0,f[48]=0,f[49]=1,f[50]=0,f[51]=0,f[52]=1,f[53]=0,f[54]=0,f[55]=1,f[56]=0,f[57]=0,f[58]=1,f[59]=0,f[60]=0,f[61]=-1,f[62]=0,f[63]=0,f[64]=-1,f[65]=0,f[66]=0,f[67]=-1,f[68]=0,f[69]=0,f[70]=-1,f[71]=0,m.normal=new s({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:f})}if(p.st){var v=new Float32Array(48);v[0]=0,v[1]=0,v[2]=1,v[3]=0,v[4]=1,v[5]=1,v[6]=0,v[7]=1,v[8]=1,v[9]=0,v[10]=0,v[11]=0,v[12]=0,v[13]=1,v[14]=1,v[15]=1,v[16]=0,v[17]=0,v[18]=1,v[19]=0,v[20]=1,v[21]=1,v[22]=0,v[23]=1,v[24]=1,v[25]=0,v[26]=0,v[27]=0,v[28]=0,v[29]=1,v[30]=1,v[31]=1,v[32]=1,v[33]=0,v[34]=0,v[35]=0,v[36]=0,v[37]=1,v[38]=1,v[39]=1,v[40]=0,v[41]=0,v[42]=1,v[43]=0,v[44]=1,v[45]=1,v[46]=0,v[47]=1,m.st=new s({componentDatatype:i.FLOAT,componentsPerAttribute:2,values:v})}if(p.tangent){var g=new Float32Array(72);g[0]=1,g[1]=0,g[2]=0,g[3]=1,g[4]=0,g[5]=0,g[6]=1,g[7]=0,g[8]=0,g[9]=1,g[10]=0,g[11]=0,g[12]=-1,g[13]=0,g[14]=0,g[15]=-1,g[16]=0,g[17]=0,g[18]=-1,g[19]=0,g[20]=0,g[21]=-1,g[22]=0,g[23]=0,g[24]=0,g[25]=1,g[26]=0,g[27]=0,g[28]=1,g[29]=0,g[30]=0,g[31]=1,g[32]=0,g[33]=0,g[34]=1,g[35]=0,g[36]=0,g[37]=-1,g[38]=0,g[39]=0,g[40]=-1,g[41]=0,g[42]=0,g[43]=-1,g[44]=0,g[45]=0,g[46]=-1,g[47]=0,g[48]=-1,g[49]=0,g[50]=0,g[51]=-1,g[52]=0,g[53]=0,g[54]=-1,g[55]=0,g[56]=0,g[57]=-1,g[58]=0,g[59]=0,g[60]=1,g[61]=0,g[62]=0,g[63]=1,g[64]=0,g[65]=0,g[66]=1,g[67]=0,g[68]=0,g[69]=1,g[70]=0,g[71]=0,m.tangent=new s({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:g})}if(p.binormal){var _=new Float32Array(72);_[0]=0,_[1]=1,_[2]=0,_[3]=0,_[4]=1,_[5]=0,_[6]=0,_[7]=1,_[8]=0,_[9]=0,_[10]=1,_[11]=0,_[12]=0,_[13]=1,_[14]=0,_[15]=0,_[16]=1,_[17]=0,_[18]=0,_[19]=1,_[20]=0,_[21]=0,_[22]=1,_[23]=0,_[24]=0,_[25]=0,_[26]=1,_[27]=0,_[28]=0,_[29]=1,_[30]=0,_[31]=0,_[32]=1,_[33]=0,_[34]=0,_[35]=1,_[36]=0,_[37]=0,_[38]=1,_[39]=0,_[40]=0,_[41]=1,_[42]=0,_[43]=0,_[44]=1,_[45]=0,_[46]=0,_[47]=1,_[48]=0,_[49]=0,_[50]=1,_[51]=0,_[52]=0,_[53]=1,_[54]=0,_[55]=0,_[56]=1,_[57]=0,_[58]=0,_[59]=1,_[60]=0,_[61]=0,_[62]=1,_[63]=0,_[64]=0,_[65]=1,_[66]=0,_[67]=0,_[68]=1,_[69]=0,_[70]=0,_[71]=1,m.binormal=new s({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:_})}n=new Uint16Array(36),n[0]=0,n[1]=1,n[2]=2,n[3]=0,n[4]=2,n[5]=3,n[6]=6,n[7]=5,n[8]=4,n[9]=7,n[10]=6,n[11]=4,n[12]=8,n[13]=9,n[14]=10,n[15]=8,n[16]=10,n[17]=11,n[18]=14,n[19]=13,n[20]=12,n[21]=15,n[22]=14,n[23]=12,n[24]=18,n[25]=17,n[26]=16,n[27]=19,n[28]=18,n[29]=16,n[30]=20,n[31]=21,n[32]=22,n[33]=20,n[34]=22,n[35]=23}else o=new Float64Array(24),o[0]=c.x,o[1]=c.y,o[2]=c.z,o[3]=d.x,o[4]=c.y,o[5]=c.z,o[6]=d.x,o[7]=d.y,o[8]=c.z,o[9]=c.x,o[10]=d.y,o[11]=c.z,o[12]=c.x,o[13]=c.y,o[14]=d.z,o[15]=d.x,o[16]=c.y,o[17]=d.z,o[18]=d.x,o[19]=d.y,o[20]=d.z,o[21]=c.x,o[22]=d.y,o[23]=d.z,m.position=new s({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:o}),n=new Uint16Array(36),n[0]=4,n[1]=5,n[2]=6,n[3]=4,n[4]=6,n[5]=7,n[6]=1,n[7]=0,n[8]=3,n[9]=1,n[10]=3,n[11]=2,n[12]=1,n[13]=6,n[14]=5,n[15]=1,n[16]=2,n[17]=6,n[18]=2,n[19]=3,n[20]=7,n[21]=2,n[22]=7,n[23]=6,n[24]=3,n[25]=0,n[26]=4,n[27]=3,n[28]=4,n[29]=7,n[30]=0,n[31]=1,n[32]=5,n[33]=0,n[34]=5,n[35]=4;var y=t.subtract(d,c,h),C=.5*t.magnitude(y);return new a({attributes:m,indices:n,primitiveType:u.TRIANGLES,boundingSphere:new e(t.ZERO,C)})},d}),i("Core/BoxOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Geometry","./GeometryAttribute","./GeometryAttributes","./PrimitiveType"],function(e,t,i,r,n,o,a,s,l,u){"use strict";var c=new t,h=function(e){e=r(e,r.EMPTY_OBJECT);var i=e.minimumCorner,n=e.maximumCorner;this._min=t.clone(i),this._max=t.clone(n),this._workerName="createBoxOutlineGeometry"};h.fromDimensions=function(e){e=r(e,r.EMPTY_OBJECT);var i=e.dimensions,n=t.multiplyByScalar(i,.5,new t),o=t.negate(n,new t),a=n,s={minimumCorner:o,maximumCorner:a};return new h(s)},h.packedLength=2*t.packedLength,h.pack=function(e,i,n){n=r(n,0),t.pack(e._min,i,n),t.pack(e._max,i,n+t.packedLength)};var d=new t,p=new t,m={minimumCorner:d,maximumCorner:p};return h.unpack=function(e,i,o){i=r(i,0);var a=t.unpack(e,i,d),s=t.unpack(e,i+t.packedLength,p);return n(o)?(o._min=t.clone(a,o._min),o._max=t.clone(s,o._max),o):new h(m)},h.createGeometry=function(r){var n=r._min,o=r._max,h=new l,d=new Uint16Array(24),p=new Float64Array(24);p[0]=n.x,p[1]=n.y,p[2]=n.z,p[3]=o.x,p[4]=n.y,p[5]=n.z,p[6]=o.x,p[7]=o.y,p[8]=n.z,p[9]=n.x,p[10]=o.y,p[11]=n.z,p[12]=n.x,p[13]=n.y,p[14]=o.z,p[15]=o.x,p[16]=n.y,p[17]=o.z,p[18]=o.x,p[19]=o.y,p[20]=o.z,p[21]=n.x,p[22]=o.y,p[23]=o.z,h.position=new s({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:p}),d[0]=4,d[1]=5,d[2]=5,d[3]=6,d[4]=6,d[5]=7,d[6]=7,d[7]=4,d[8]=0,d[9]=1,d[10]=1,d[11]=2,d[12]=2,d[13]=3,d[14]=3,d[15]=0,d[16]=0,d[17]=4,d[18]=1,d[19]=5,d[20]=2,d[21]=6,d[22]=3,d[23]=7;var m=t.subtract(o,n,c),f=.5*t.magnitude(m);return new a({attributes:h,indices:d,primitiveType:u.LINES,boundingSphere:new e(t.ZERO,f)})},h}),i("Core/Spline",["./defaultValue","./defined","./DeveloperError"],function(e,t,i){"use strict";var r=function(){this.times=void 0,this.points=void 0,i.throwInstantiationError()};return r.prototype.evaluate=i.throwInstantiationError,r.prototype.findTimeInterval=function(t,i){var r=this.times,n=r.length;if(i=e(i,0),t>=r[i]){if(n>i+1&&ti+2&&t=0&&t>=r[i-1])return i-1;var o;if(t>r[i])for(o=i;n-1>o&&!(t>=r[o]&&t=0&&!(t>=r[o]&&t=0;--o)l[o]=e.subtract(s[o],e.multiplyByScalar(l[o+1],a[o],l[o]),l[o]);return l},t}),i("Core/HermiteSpline",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./LinearSpline","./Matrix4","./Spline","./TridiagonalSystemSolver"],function(e,t,i,r,n,o,a,s,l,u){"use strict";function c(t,i,n){var o=d,a=m,s=p,l=f;o.length=a.length=t.length-1,s.length=l.length=t.length;var c;o[0]=s[0]=1,a[0]=0;var h=l[0];for(r(h)||(h=l[0]=new e),e.clone(i,h),c=1;c2&&(r(a)||(a=p,e.multiplyByScalar(n[1],2,a),e.subtract(a,n[2],a),e.subtract(a,n[0],a),e.multiplyByScalar(a,.5,a)),!r(s))){var l=n.length-1;s=m,e.multiplyByScalar(n[l-1],2,s),e.subtract(n[l],s,s),e.add(s,n[l-2],s),e.multiplyByScalar(s,.5,s)}this._times=o,this._points=n,this._firstTangent=e.clone(a),this._lastTangent=e.clone(s),this._evaluateFunction=u(this),this._lastTimeIndex=0};return n(f.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},firstTangent:{get:function(){return this._firstTangent}},lastTangent:{get:function(){return this._lastTangent}}}),f.catmullRomCoefficientMatrix=new s(-.5,1,-.5,0,1.5,-2.5,0,1,-1.5,2,.5,0,.5,-.5,0,0),f.prototype.findTimeInterval=l.prototype.findTimeInterval,f.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)},f}),i("Core/appendForwardSlash",[],function(){"use strict";var e=function(e){return(0===e.length||"/"!==e[e.length-1])&&(e+="/"),e};return e}),i("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,i,r){"use strict";var n={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return n.getSizeInBytes=function(e){switch(e){case n.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case n.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case n.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},n.validate=function(t){return e(t)&&(t===n.UNSIGNED_BYTE||t===n.UNSIGNED_SHORT||t===n.UNSIGNED_INT)},n.createTypedArray=function(e,t){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},n.createTypedArrayFromArrayBuffer=function(e,t,i,n){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,i,n):new Uint16Array(t,i,n)},i(n)}),i("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var i=e.split("\r\n"),r=0;r0){var a=n.substring(0,o),s=n.substring(o+2);t[a]=s}}return t};return e}),i("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var i=function(e,i,r){this.statusCode=e,this.response=i,this.responseHeaders=r,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return i.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},i}),i("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,i,r,n,o){"use strict";function a(e,t){var i=decodeURIComponent(t);return e?atob(i):i}function s(e,t){for(var i=a(e,t),r=new ArrayBuffer(i.length),n=new Uint8Array(r),o=0;oa&&a/ss&&s/ao)return[];var l=Math.sqrt(o);return[-l,l]}if(0===n)return o=-r/e,0>o?[o,0]:[0,o];var u=r*r,c=4*e*n,h=i(u,-c,t.EPSILON14);if(0>h)return[];var d=-.5*i(r,t.sign(r)*Math.sqrt(h),t.EPSILON14);return r>0?[d/e,n/d]:[n/d,d/e]},r}),i("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function i(e,t,i,r){var n,o,a=e,s=t/3,l=i/3,u=r,c=a*l,h=s*u,d=s*s,p=l*l,m=a*l-d,f=a*u-s*l,v=s*u-p,g=4*m*v-f*f;if(0>g){var _,y,C;d*h>=c*p?(_=a,y=m,C=-2*s*m+a*f):(_=u,y=v,C=-u*f+2*l*v);var w=0>C?-1:1,S=-w*Math.abs(_)*Math.sqrt(-g);o=-C+S;var E=o/2,b=0>E?-Math.pow(-E,1/3):Math.pow(E,1/3),x=o===S?-b:-y/b;return n=0>=y?b+x:-C/(b*b+x*x+y),d*h>=c*p?[(n-s)/a]:[-u/(n+l)]}var T=m,P=-2*s*m+a*f,A=v,D=-u*f+2*l*v,M=Math.sqrt(g),I=Math.sqrt(3)/2,O=Math.abs(Math.atan2(a*M,-P)/3);n=2*Math.sqrt(-T);var R=Math.cos(O);o=n*R;var L=n*(-R/2-I*Math.sin(O)),N=o+L>2*s?o-s:L-s,F=a,B=N/F;O=Math.abs(Math.atan2(u*M,-D)/3),n=2*Math.sqrt(-A),R=Math.cos(O),o=n*R,L=n*(-R/2-I*Math.sin(O));var z=-u,k=2*l>o+L?o+l:L+l,V=z/k,U=F*k,W=-N*k-F*z,G=N*z,H=(l*W-s*G)/(-s*W+l*U);return H>=B?V>=B?V>=H?[B,H,V]:[B,V,H]:[V,B,H]:V>=B?[H,B,V]:V>=H?[H,V,B]:[V,H,B]}var r={};return r.computeDiscriminant=function(e,t,i,r){var n=e*e,o=t*t,a=i*i,s=r*r,l=18*e*t*i*r+o*a-27*n*s-4*(e*a*i+o*t*r);return l},r.computeRealRoots=function(e,r,n,o){var a,s;if(0===e)return t.computeRealRoots(r,n,o);if(0===r){if(0===n){if(0===o)return[0,0,0];s=-o/e;var l=0>s?-Math.pow(-s,1/3):Math.pow(s,1/3);return[l,l,l]}return 0===o?(a=t.computeRealRoots(e,0,n),0===a.Length?[0]:[a[0],0,a[1]]):i(e,0,n,o)}return 0===n?0===o?(s=-r/e,0>s?[s,0,0]:[0,0,s]):i(e,r,0,o):0===o?(a=t.computeRealRoots(e,r,n),0===a.length?[0]:a[1]<=0?[a[0],a[1],0]:a[0]>=0?[0,a[0],a[1]]:[a[0],0,a[1]]):i(e,r,n,o)},r}),i("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,i,r){"use strict";function n(t,n,o,a){var s=t*t,l=n-3*s/8,u=o-n*t/2+s*t/8,c=a-o*t/4+n*s/16-3*s*s/256,h=e.computeRealRoots(1,2*l,l*l-4*c,-u*u);if(h.length>0){var d=-t/4,p=h[h.length-1];if(Math.abs(p)=0&&g>=0){var _=Math.sqrt(v),y=Math.sqrt(g);return[d-y,d-_,d+_,d+y]}if(v>=0&&0>g)return f=Math.sqrt(v),[d-f,d+f];if(0>v&&g>=0)return f=Math.sqrt(g),[d-f,d+f]}return[]}if(p>0){var C=Math.sqrt(p),w=(l+p-u/C)/2,S=(l+p+u/C)/2,E=r.computeRealRoots(1,C,w),b=r.computeRealRoots(1,-C,S);return 0!==E.length?(E[0]+=d,E[1]+=d,0!==b.length?(b[0]+=d,b[1]+=d,E[1]<=b[0]?[E[0],E[1],b[0],b[1]]:b[1]<=E[0]?[b[0],b[1],E[0],E[1]]:E[0]>=b[0]&&E[1]<=b[1]?[b[0],E[0],E[1],b[1]]:b[0]>=E[0]&&b[1]<=E[1]?[E[0],b[0],b[1],E[1]]:E[0]>b[0]&&E[0]0){var m,f,v=p[0],g=n-v,_=g*g,y=t/2,C=g/2,w=_-4*a,S=_+4*Math.abs(a),E=u-4*v,b=u+4*Math.abs(v);if(0>v||E*S>w*b){var x=Math.sqrt(E);m=x/2,f=0===x?0:(t*C-o)/x}else{var T=Math.sqrt(w);m=0===T?0:(t*C-o)/T,f=T/2}var P,A;0===y&&0===m?(P=0,A=0):i.sign(y)===i.sign(m)?(P=y+m,A=v/P):(A=y-m,P=v/A);var D,M;0===C&&0===f?(D=0,M=0):i.sign(C)===i.sign(f)?(D=C+f,M=a/D):(M=C-f,D=a/M);var I=r.computeRealRoots(1,P,D),O=r.computeRealRoots(1,A,M);if(0!==I.length)return 0!==O.length?I[1]<=O[0]?[I[0],I[1],O[0],O[1]]:O[1]<=I[0]?[O[0],O[1],I[0],I[1]]:I[0]>=O[0]&&I[1]<=O[1]?[O[0],I[0],I[1],O[1]]:O[0]>=I[0]&&O[1]<=I[1]?[I[0],O[0],O[1],I[1]]:I[0]>O[0]&&I[0]u?1:0;switch(p+=0>c?p+1:p,p+=0>h?p+1:p,p+=0>d?p+1:p){case 0:return n(u,c,h,d);case 1:return o(u,c,h,d);case 2:return o(u,c,h,d);case 3:return n(u,c,h,d);case 4:return n(u,c,h,d);case 5:return o(u,c,h,d);case 6:return n(u,c,h,d);case 7:return n(u,c,h,d);case 8:return o(u,c,h,d);case 9:return n(u,c,h,d);case 10:return n(u,c,h,d);case 11:return o(u,c,h,d);case 12:return n(u,c,h,d);case 13:return n(u,c,h,d);case 14:return n(u,c,h,d);case 15:return n(u,c,h,d);default:return void 0}},a}),i("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,i){"use strict";var r=function(i,r){r=e.clone(t(r,e.ZERO)),e.equals(r,e.ZERO)||e.normalize(r,r),this.origin=e.clone(t(i,e.ZERO)),this.direction=r};return r.getPoint=function(t,r,n){return i(n)||(n=new e),n=e.multiplyByScalar(t.direction,r,n),e.add(t.origin,n,n)},r}),i("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,i,r,n,o,a,s,l,u){"use strict";function c(t,r,n,a,s){s=i(s,!1);var l,u,c,h,d,p=t.origin,m=t.direction,f=e.subtract(n,r,v),w=e.subtract(a,r,g),S=e.cross(m,w,_),E=e.dot(f,S);if(s){if(Ec||c>E)return void 0;if(u=e.cross(l,f,C),h=e.dot(m,u),0>h||c+h>E)return void 0;d=e.dot(w,u)/E}else{if(Math.abs(E)c||c>1)return void 0;if(u=e.cross(l,f,C),h=e.dot(m,u)*b,0>h||c+h>1)return void 0;d=e.dot(w,u)*b}return d}function h(e,t,i,r){var n=t*t-4*e*i;if(0>n)return void 0;if(n>0){var o=1/(2*e),a=Math.sqrt(n),s=(-t+a)*o,l=(-t-a)*o;return l>s?(r.root0=s,r.root1=l):(r.root0=l,r.root1=s),r}var u=-t/(2*e);return 0===u?void 0:(r.root0=r.root1=u,r)}function d(t,i,n){r(n)||(n={});var o=t.origin,a=t.direction,s=i.center,l=i.radius*i.radius,u=e.subtract(o,s,_),c=e.dot(a,a),d=2*e.dot(a,u),p=e.magnitudeSquared(u)-l,m=h(c,d,p,S);return r(m)?(n.start=m.root0,n.stop=m.root1,n):void 0}function p(e,t,i){var r=e+t;return o.sign(e)!==o.sign(t)&&Math.abs(r/Math.max(Math.abs(e),Math.abs(t)))L;++L){var N,F=c[L],B=F*F,z=Math.max(1-B,0),k=Math.sqrt(z);N=o.sign(m)===o.sign(v)?p(m*B+v,f*F,o.EPSILON12):o.sign(v)===o.sign(f*F)?p(m*B,f*F+v,o.EPSILON12):p(m*B+f*F,v,o.EPSILON12);var V=p(g*F,_,o.EPSILON15),U=N*V;0>U?y.push(new e(n,u*F,u*k)):U>0?y.push(new e(n,u*F,u*-k)):0!==k?(y.push(new e(n,u*F,u*-k)),y.push(new e(n,u*F,u*k)),++L):y.push(new e(n,u*F,u*k))}return y}var f={};f.rayPlane=function(t,i,n){r(n)||(n=new e);var a=t.origin,s=t.direction,l=i.normal,u=e.dot(l,s);if(Math.abs(u)c?void 0:(n=e.multiplyByScalar(s,c,n),e.add(a,n,n))};var v=new e,g=new e,_=new e,y=new e,C=new e;f.rayTriangle=function(t,i,n,o,a,s){var l=c(t,i,n,o,a);return!r(l)||0>l?void 0:(r(s)||(s=new e),e.multiplyByScalar(t.direction,l,s),e.add(t.origin,s,s))};var w=new u;f.lineSegmentTriangle=function(t,i,n,o,a,s,l){var u=w;e.clone(t,u.origin),e.subtract(i,t,u.direction),e.normalize(u.direction,u.direction);var h=c(u,n,o,a,s);return!r(h)||0>h||h>e.distance(t,i)?void 0:(r(l)||(l=new e),e.multiplyByScalar(u.direction,h,l),e.add(u.origin,l,l))};var S={root0:0,root1:0};f.raySphere=function(e,t,i){return i=d(e,t,i),!r(i)||i.stop<0?void 0:(i.start=Math.max(i.start,0),i)};var E=new u;f.lineSegmentSphere=function(t,i,n,o){var a=E;e.clone(t,a.origin);var s=e.subtract(i,t,a.direction),l=e.magnitude(s);return e.normalize(s,s),o=d(a,n,o),!r(o)||o.stop<0||o.start>l?void 0:(o.start=Math.max(o.start,0),o.stop=Math.min(o.stop,l),o)};var b=new e,x=new e;f.rayEllipsoid=function(t,i){var r,n,o,a,s,l=i.oneOverRadii,u=e.multiplyComponents(l,t.origin,b),c=e.multiplyComponents(l,t.direction,x),h=e.magnitudeSquared(u),d=e.dot(u,c);if(h>1){if(d>=0)return void 0;var p=d*d;if(r=h-1,n=e.magnitudeSquared(c),o=n*r,o>p)return void 0;if(p>o){a=d*d-o,s=-d+Math.sqrt(a);var m=s/n,f=r/s;return f>m?{start:m,stop:f}:{start:f,stop:m}}var v=Math.sqrt(r/n);return{start:v,stop:v}}return 1>h?(r=h-1,n=e.magnitudeSquared(c),o=n*r,a=d*d-o,s=-d+Math.sqrt(a),{start:0,stop:s/n}):0>d?(n=e.magnitudeSquared(c),{start:0,stop:-d/n}):void 0};var T=new e,P=new e,A=new e,D=new e,M=new e,I=new a,O=new a,R=new a,L=new a,N=new a,F=new a,B=new a,z=new e,k=new e,V=new t;f.grazingAltitudeLocation=function(t,i){var n=t.origin,s=t.direction,l=i.geodeticSurfaceNormal(n,T); +if(e.dot(s,l)>=0)return n;var u=r(this.rayEllipsoid(t,i)),c=i.transformPositionToScaledSpace(s,T),h=e.normalize(c,c),d=e.mostOrthogonalAxis(c,D),p=e.normalize(e.cross(d,h,P),P),f=e.normalize(e.cross(h,p,A),A),v=I;v[0]=h.x,v[1]=h.y,v[2]=h.z,v[3]=p.x,v[4]=p.y,v[5]=p.z,v[6]=f.x,v[7]=f.y,v[8]=f.z;var g=a.transpose(v,O),_=a.fromScale(i.radii,R),y=a.fromScale(i.oneOverRadii,L),C=N;C[0]=0,C[1]=-s.z,C[2]=s.y,C[3]=s.z,C[4]=0,C[5]=-s.x,C[6]=-s.y,C[7]=s.x,C[8]=0;var w,S,E=a.multiply(a.multiply(g,y,F),C,F),b=a.multiply(a.multiply(E,_,B),v,B),x=a.multiplyByVector(E,n,M),U=m(b,e.negate(x,T),0,0,1),W=U.length;if(W>0){for(var G=e.clone(e.ZERO,k),H=Number.NEGATIVE_INFINITY,q=0;W>q;++q){w=a.multiplyByVector(_,a.multiplyByVector(v,U[q],z),z);var j=e.normalize(e.subtract(w,n,D),D),Y=e.dot(j,s);Y>H&&(H=Y,G=e.clone(w,G))}var X=i.cartesianToCartographic(G,V);return H=o.clamp(H,0,1),S=e.magnitude(e.subtract(G,n,D))*Math.sqrt(1-H*H),S=u?-S:S,X.height=S,i.cartographicToCartesian(X,new e)}return void 0};var U=new e;return f.lineSegmentPlane=function(t,i,n,a){r(a)||(a=new e);var s=e.subtract(i,t,U),l=n.normal,u=e.dot(l,s);if(Math.abs(u)h||h>1?void 0:(e.multiplyByScalar(s,h,a),e.add(t,a,a),a)},f.trianglePlaneIntersection=function(t,i,r,n){var o=n.normal,a=n.distance,s=e.dot(o,t)+a<0,l=e.dot(o,i)+a<0,u=e.dot(o,r)+a<0,c=0;c+=s?1:0,c+=l?1:0,c+=u?1:0;var h,d;if((1===c||2===c)&&(h=new e,d=new e),1===c){if(s)return f.lineSegmentPlane(t,i,n,h),f.lineSegmentPlane(t,r,n,d),{positions:[t,i,r,h,d],indices:[0,3,4,1,2,4,1,4,3]};if(l)return f.lineSegmentPlane(i,r,n,h),f.lineSegmentPlane(i,t,n,d),{positions:[t,i,r,h,d],indices:[1,3,4,2,0,4,2,4,3]};if(u)return f.lineSegmentPlane(r,t,n,h),f.lineSegmentPlane(r,i,n,d),{positions:[t,i,r,h,d],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===c){if(!s)return f.lineSegmentPlane(i,t,n,h),f.lineSegmentPlane(r,t,n,d),{positions:[t,i,r,h,d],indices:[1,2,4,1,4,3,0,3,4]};if(!l)return f.lineSegmentPlane(r,i,n,h),f.lineSegmentPlane(t,i,n,d),{positions:[t,i,r,h,d],indices:[2,0,4,2,4,3,1,3,4]};if(!u)return f.lineSegmentPlane(t,r,n,h),f.lineSegmentPlane(i,r,n,d),{positions:[t,i,r,h,d],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},f}),i("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,i){for(var r,n,o=0,a=e.length-1;a>=o;)if(r=~~((o+a)/2),n=i(e[r],t),0>n)o=r+1;else{if(!(n>0))return r;a=r-1}return~(a+1)};return e}),i("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,i,r,n){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=i,this.yPoleOffset=r,this.ut1MinusUtc=n};return e}),i("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,i=0,r=t[i++],n=function(e,t,i,r){i||(i=" ");var n=e.length>=t?"":Array(1+t-e.length>>>0).join(i);return r?e+n:n+e},o=function(e,t,i,r,o,a){var s=r-e.length;return s>0&&(e=i||!o?n(e,r,a,i):e.slice(0,t.length)+n("",s,"0",!0)+e.slice(t.length)),e},a=function(e,t,i,r,a,s,l){var u=e>>>0;return i=i&&u&&{2:"0b",8:"0",16:"0x"}[t]||"",e=i+n(u.toString(t),s||0,"0",!1),o(e,i,r,a,l)},s=function(e,t,i,r,n,a){return null!=r&&(e=e.slice(0,r)),o(e,"",t,i,n,a)},l=function(e,r,l,u,c,h,d){var p,m,f,v,g;if("%%"==e)return"%";for(var _=!1,y="",C=!1,w=!1,S=" ",E=l.length,b=0;l&&E>b;b++)switch(l.charAt(b)){case" ":y=" ";break;case"+":y="+";break;case"-":_=!0;break;case"'":S=l.charAt(b+1);break;case"0":C=!0;break;case"#":w=!0}if(u=u?"*"==u?+t[i++]:"*"==u.charAt(0)?+t[u.slice(1,-1)]:+u:0,0>u&&(u=-u,_=!0),!isFinite(u))throw new Error("sprintf: (minimum-)width must be finite");switch(h=h?"*"==h?+t[i++]:"*"==h.charAt(0)?+t[h.slice(1,-1)]:+h:"fFeE".indexOf(d)>-1?6:"d"==d?0:void 0,g=r?t[r.slice(0,-1)]:t[i++],d){case"s":return s(String(g),_,u,h,C,S);case"c":return s(String.fromCharCode(+g),_,u,h,C);case"b":return a(g,2,w,_,u,h,C);case"o":return a(g,8,w,_,u,h,C);case"x":return a(g,16,w,_,u,h,C);case"X":return a(g,16,w,_,u,h,C).toUpperCase();case"u":return a(g,10,w,_,u,h,C);case"i":case"d":return p=+g||0,p=Math.round(p-p%1),m=0>p?"-":y,g=m+n(String(Math.abs(p)),h,"0",!1),o(g,m,_,u,C);case"e":case"E":case"f":case"F":case"g":case"G":return p=+g,m=0>p?"-":y,f=["toExponential","toFixed","toPrecision"]["efg".indexOf(d.toLowerCase())],v=["toString","toUpperCase"]["eEfFgG".indexOf(d)%2],g=m+Math.abs(p)[f](h),o(g,m,_,u,C)[v]();default:return e}};return r.replace(e,l)}return e}),i("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,i,r,n,o,a,s){this.year=e,this.month=t,this.day=i,this.hour=r,this.minute=n,this.second=o,this.millisecond=a,this.isLeapSecond=s};return e}),i("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),i("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),i("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),i("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),i("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,i,r,n,o,a,s,l,u){"use strict";function c(e,t){return D.compare(e.julianDate,t.julianDate)}function h(e){_.julianDate=e;var i=D.leapSeconds,r=t(i,_,c);0>r&&(r=~r),r>=i.length&&(r=i.length-1);var n=i[r].offset;if(r>0){var o=D.secondsDifference(i[r].julianDate,e);o>n&&(r--,n=i[r].offset)}D.addSeconds(e,n,e)}function d(e,i){_.julianDate=e;var r=D.leapSeconds,n=t(r,_,c);if(0>n&&(n=~n),0===n)return D.addSeconds(e,-r[0].offset,i);if(n>=r.length)return D.addSeconds(e,-r[n-1].offset,i);var o=D.secondsDifference(r[n].julianDate,e);return 0===o?D.addSeconds(e,-r[n].offset,i):1>=o?void 0:D.addSeconds(e,-r[--n].offset,i)}function p(e,t,i){var r=0|t/l.SECONDS_PER_DAY;return e+=r,t-=l.SECONDS_PER_DAY*r,0>t&&(e--,t+=l.SECONDS_PER_DAY),i.dayNumber=e,i.secondsOfDay=t,i}function m(e,t,i,r,n,o,a){var s=0|(t-14)/12,u=e+4800+s,c=(0|1461*u/4)+(0|367*(t-2-12*s)/12)-(0|3*((u+100)/100)/4)+i-32075;r-=12,0>r&&(r+=24);var h=o+(r*l.SECONDS_PER_HOUR+n*l.SECONDS_PER_MINUTE+a*l.SECONDS_PER_MILLISECOND);return h>=43200&&(c-=1),[c,h]}var f=new o,v=[31,28,31,30,31,30,31,31,30,31,30,31],g=29,_=new s,y=/^(\d{4})$/,C=/^(\d{4})-(\d{2})$/,w=/^(\d{4})-?(\d{3})$/,S=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,E=/^(\d{4})-?(\d{2})-?(\d{2})$/,b=/([Z+\-])?(\d{2})?:?(\d{2})?$/,x=/^(\d{2})(\.\d+)?/.source+b.source,T=/^(\d{2}):?(\d{2})(\.\d+)?/.source+b.source,P=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+b.source,A="Invalid ISO 8601 date.",D=function(e,t,r){this.dayNumber=void 0,this.secondsOfDay=void 0,e=i(e,0),t=i(t,0),r=i(r,u.UTC);var n=0|e;t+=(e-n)*l.SECONDS_PER_DAY,p(n,t,this),r===u.UTC&&h(this)};D.fromDate=function(e,t){var i=m(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return r(t)?(p(i[0],i[1],t),h(t),t):new D(i[0],i[1],u.UTC)},D.fromIso8601=function(e,t){e=e.replace(",",".");var i,o,s,l=e.split("T"),c=1,d=1,f=0,_=0,b=0,M=0,I=l[0],O=l[1];if(!r(I))throw new n(A);var R;if(l=I.match(E),null!==l){if(R=I.split("-").length-1,R>0&&2!==R)throw new n(A);i=+l[1],c=+l[2],d=+l[3]}else if(l=I.match(C),null!==l)i=+l[1],c=+l[2];else if(l=I.match(y),null!==l)i=+l[1];else{var L;if(l=I.match(w),null!==l){if(i=+l[1],L=+l[2],s=a(i),1>L||s&&L>366||!s&&L>365)throw new n(A)}else{if(l=I.match(S),null===l)throw new n(A);i=+l[1];var N=+l[2],F=+l[3]||0;if(R=I.split("-").length-1,R>0&&(!r(l[3])&&1!==R||r(l[3])&&2!==R))throw new n(A);var B=new Date(Date.UTC(i,0,4));L=7*N+F-B.getUTCDay()-3}o=new Date(Date.UTC(i,0,1)),o.setUTCDate(L),c=o.getUTCMonth()+1,d=o.getUTCDate()}if(s=a(i),1>c||c>12||1>d||(2!==c||!s)&&d>v[c-1]||s&&2===c&&d>g)throw new n(A);var z;if(r(O)){if(l=O.match(P),null!==l){if(R=O.split(":").length-1,R>0&&2!==R&&3!==R)throw new n(A);f=+l[1],_=+l[2],b=+l[3],M=1e3*+(l[4]||0),z=5}else if(l=O.match(T),null!==l){if(R=O.split(":").length-1,R>0&&1!==R)throw new n(A);f=+l[1],_=+l[2],b=60*+(l[3]||0),z=4}else{if(l=O.match(x),null===l)throw new n(A);f=+l[1],_=60*+(l[2]||0),z=3}if(_>=60||b>=61||f>24||24===f&&(_>0||b>0||M>0))throw new n(A);var k=l[z],V=+l[z+1],U=+(l[z+2]||0);switch(k){case"+":f-=V,_-=U;break;case"-":f+=V,_+=U;break;case"Z":break;default:_+=new Date(Date.UTC(i,c-1,d,f,_)).getTimezoneOffset()}}else _+=new Date(i,c-1,d).getTimezoneOffset();var W=60===b;for(W&&b--;_>=60;)_-=60,f++;for(;f>=24;)f-=24,d++;for(o=s&&2===c?g:v[c-1];d>o;)d-=o,c++,c>12&&(c-=12,i++),o=s&&2===c?g:v[c-1];for(;0>_;)_+=60,f--;for(;0>f;)f+=24,d--;for(;1>d;)c--,1>c&&(c+=12,i--),o=s&&2===c?g:v[c-1],d+=o;var G=m(i,c,d,f,_,b,M);return r(t)?(p(G[0],G[1],t),h(t)):t=new D(G[0],G[1],u.UTC),W&&D.addSeconds(t,1,t),t},D.now=function(e){return D.fromDate(new Date,e)};var M=new D(0,0,u.TAI);return D.toGregorianDate=function(e,t){var i=!1,n=d(e,M);r(n)||(D.addSeconds(e,-1,M),n=d(M,M),i=!0);var a=n.dayNumber,s=n.secondsOfDay;s>=43200&&(a+=1);var u=0|a+68569,c=0|4*u/146097;u=0|u-(0|(146097*c+3)/4);var h=0|4e3*(u+1)/1461001;u=0|u-(0|1461*h/4)+31;var p=0|80*u/2447,m=0|u-(0|2447*p/80);u=0|p/11;var f=0|p+2-12*u,v=0|100*(c-49)+h+u,g=0|s/l.SECONDS_PER_HOUR,_=s-g*l.SECONDS_PER_HOUR,y=0|_/l.SECONDS_PER_MINUTE;_-=y*l.SECONDS_PER_MINUTE;var C=0|_,w=(_-C)/l.SECONDS_PER_MILLISECOND;return g+=12,g>23&&(g-=24),i&&(C+=1),r(t)?(t.year=v,t.month=f,t.day=m,t.hour=g,t.minute=y,t.second=C,t.millisecond=w,t.isLeapSecond=i,t):new o(v,f,m,g,y,C,w,i)},D.toDate=function(e){var t=D.toGregorianDate(e,f),i=t.second;return t.isLeapSecond&&(i-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,i,t.millisecond))},D.toIso8601=function(t,i){var n,o=D.toGregorianDate(t,o);return r(i)||0===o.millisecond?r(i)&&0!==i?(n=(.01*o.millisecond).toFixed(i).replace(".","").slice(0,i),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",o.year,o.month,o.day,o.hour,o.minute,o.second,n)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",o.year,o.month,o.day,o.hour,o.minute,o.second):(n=(.01*o.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",o.year,o.month,o.day,o.hour,o.minute,o.second,n))},D.clone=function(e,t){return r(e)?r(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new D(e.dayNumber,e.secondsOfDay,u.TAI):void 0},D.compare=function(e,t){var i=e.dayNumber-t.dayNumber;return 0!==i?i:e.secondsOfDay-t.secondsOfDay},D.equals=function(e,t){return e===t||r(e)&&r(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},D.equalsEpsilon=function(e,t,i){return e===t||r(e)&&r(t)&&Math.abs(D.secondsDifference(e,t))<=i},D.totalDays=function(e){return e.dayNumber+e.secondsOfDay/l.SECONDS_PER_DAY},D.secondsDifference=function(e,t){var i=(e.dayNumber-t.dayNumber)*l.SECONDS_PER_DAY;return i+(e.secondsOfDay-t.secondsOfDay)},D.daysDifference=function(e,t){var i=e.dayNumber-t.dayNumber,r=(e.secondsOfDay-t.secondsOfDay)/l.SECONDS_PER_DAY;return i+r},D.computeTaiMinusUtc=function(e){_.julianDate=e;var i=D.leapSeconds,r=t(i,_,c);return 0>r&&(r=~r,--r,0>r&&(r=0)),i[r].offset},D.addSeconds=function(e,t,i){return p(e.dayNumber,e.secondsOfDay+t,i)},D.addMinutes=function(e,t,i){var r=e.secondsOfDay+t*l.SECONDS_PER_MINUTE;return p(e.dayNumber,r,i)},D.addHours=function(e,t,i){var r=e.secondsOfDay+t*l.SECONDS_PER_HOUR;return p(e.dayNumber,r,i)},D.addDays=function(e,t,i){var r=e.dayNumber+t;return p(r,e.secondsOfDay,i)},D.lessThan=function(e,t){return D.compare(e,t)<0},D.lessThanOrEquals=function(e,t){return D.compare(e,t)<=0},D.greaterThan=function(e,t){return D.compare(e,t)>0},D.greaterThanOrEquals=function(e,t){return D.compare(e,t)>=0},D.prototype.clone=function(e){return D.clone(this,e)},D.prototype.equals=function(e){return D.equals(this,e)},D.prototype.equalsEpsilon=function(e,t){return D.equalsEpsilon(this,e,t)},D.prototype.toString=function(){return D.toIso8601(this)},D.leapSeconds=[new s(new D(2441317,43210,u.TAI),10),new s(new D(2441499,43211,u.TAI),11),new s(new D(2441683,43212,u.TAI),12),new s(new D(2442048,43213,u.TAI),13),new s(new D(2442413,43214,u.TAI),14),new s(new D(2442778,43215,u.TAI),15),new s(new D(2443144,43216,u.TAI),16),new s(new D(2443509,43217,u.TAI),17),new s(new D(2443874,43218,u.TAI),18),new s(new D(2444239,43219,u.TAI),19),new s(new D(2444786,43220,u.TAI),20),new s(new D(2445151,43221,u.TAI),21),new s(new D(2445516,43222,u.TAI),22),new s(new D(2446247,43223,u.TAI),23),new s(new D(2447161,43224,u.TAI),24),new s(new D(2447892,43225,u.TAI),25),new s(new D(2448257,43226,u.TAI),26),new s(new D(2448804,43227,u.TAI),27),new s(new D(2449169,43228,u.TAI),28),new s(new D(2449534,43229,u.TAI),29),new s(new D(2450083,43230,u.TAI),30),new s(new D(2450630,43231,u.TAI),31),new s(new D(2451179,43232,u.TAI),32),new s(new D(2453736,43233,u.TAI),33),new s(new D(2454832,43234,u.TAI),34),new s(new D(2456109,43235,u.TAI),35),new s(new D(2457204,43236,u.TAI),36)],D}),i("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,i,r,n,o,a,s,l,u,c,h){"use strict";function d(e,t){return a.compare(e.julianDate,t)}function p(e,i){if(!r(i.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!r(i.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var n=i.columnNames.indexOf("modifiedJulianDateUtc"),o=i.columnNames.indexOf("xPoleWanderRadians"),l=i.columnNames.indexOf("yPoleWanderRadians"),u=i.columnNames.indexOf("ut1MinusUtcSeconds"),p=i.columnNames.indexOf("xCelestialPoleOffsetRadians"),m=i.columnNames.indexOf("yCelestialPoleOffsetRadians"),f=i.columnNames.indexOf("taiMinusUtcSeconds");if(0>n||0>o||0>l||0>u||0>p||0>m||0>f)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var v=e._samples=i.samples,g=e._dates=[];e._dateColumn=n,e._xPoleWanderRadiansColumn=o,e._yPoleWanderRadiansColumn=l,e._ut1MinusUtcSecondsColumn=u,e._xCelestialPoleOffsetRadiansColumn=p,e._yCelestialPoleOffsetRadiansColumn=m,e._taiMinusUtcSecondsColumn=f,e._columnCount=i.columnNames.length,e._lastIndex=void 0;for(var _,y=e._addNewLeapSeconds,C=0,w=v.length;w>C;C+=e._columnCount){var S=v[C+n],E=v[C+f],b=S+c.MODIFIED_JULIAN_DATE_DIFFERENCE,x=new a(b,E,h.TAI);if(g.push(x),y){if(E!==_&&r(_)){var T=a.leapSeconds,P=t(T,x,d);if(0>P){var A=new s(x,E);T.splice(~P,0,A)}}_=E}}}function m(e,t,i,r,n){var o=i*r;n.xPoleWander=t[o+e._xPoleWanderRadiansColumn],n.yPoleWander=t[o+e._yPoleWanderRadiansColumn],n.xPoleOffset=t[o+e._xCelestialPoleOffsetRadiansColumn],n.yPoleOffset=t[o+e._yCelestialPoleOffsetRadiansColumn],n.ut1MinusUtc=t[o+e._ut1MinusUtcSecondsColumn]}function f(e,t,i){return t+e*(i-t)}function v(e,t,i,r,n,o,s){var l=e._columnCount;if(o>t.length-1)return s.xPoleWander=0,s.yPoleWander=0,s.xPoleOffset=0,s.yPoleOffset=0,s.ut1MinusUtc=0,s;var u=t[n],c=t[o];if(u.equals(c)||r.equals(u))return m(e,i,n,l,s),s;if(r.equals(c))return m(e,i,o,l,s),s;var h=a.secondsDifference(r,u)/a.secondsDifference(c,u),d=n*l,p=o*l,v=i[d+e._ut1MinusUtcSecondsColumn],g=i[p+e._ut1MinusUtcSecondsColumn],_=g-v;if(_>.5||-.5>_){var y=i[d+e._taiMinusUtcSecondsColumn],C=i[p+e._taiMinusUtcSecondsColumn];y!==C&&(c.equals(r)?v=g:g-=C-y)}return s.xPoleWander=f(h,i[d+e._xPoleWanderRadiansColumn],i[p+e._xPoleWanderRadiansColumn]),s.yPoleWander=f(h,i[d+e._yPoleWanderRadiansColumn],i[p+e._yPoleWanderRadiansColumn]),s.xPoleOffset=f(h,i[d+e._xCelestialPoleOffsetRadiansColumn],i[p+e._xCelestialPoleOffsetRadiansColumn]),s.yPoleOffset=f(h,i[d+e._yCelestialPoleOffsetRadiansColumn],i[p+e._yCelestialPoleOffsetRadiansColumn]),s.ut1MinusUtc=f(h,v,g),s}var g=function(t){if(t=i(t,i.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=i(t.addNewLeapSeconds,!0),r(t.data))p(this,t.data);else if(r(t.url)){var n=this;this._downloadPromise=e(l(t.url),function(e){p(n,e)},function(){n._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else p(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return g.NONE=o({getPromiseToLoad:function(){return e()},compute:function(e,t){return r(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new n(0,0,0,0,0),t}}),g.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},g.prototype.compute=function(e,i){if(!r(this._samples)){if(r(this._dataError))throw new u(this._dataError);return void 0}if(r(i)||(i=new n(0,0,0,0,0)),0===this._samples.length)return i.xPoleWander=0,i.yPoleWander=0,i.xPoleOffset=0,i.yPoleOffset=0,i.ut1MinusUtc=0,i;var o=this._dates,s=this._lastIndex,l=0,c=0;if(r(s)){var h=o[s],d=o[s+1],p=a.lessThanOrEquals(h,e),m=!r(d),f=m||a.greaterThanOrEquals(d,e);if(p&&f)return l=s,!m&&d.equals(e)&&++l,c=l+1,v(this,o,this._samples,e,l,c,i),i}var g=t(o,e,a.compare,this._dateColumn);return g>=0?(gl&&(l=0)),this._lastIndex=l,v(this,o,this._samples,e,l,c,i),i},g}),i("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,i){this.x=e,this.y=t,this.s=i};return e}),i("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,i,r,n,o,a,s){"use strict";function l(e,t,i){var r=h;return r.dayNumber=t,r.secondsOfDay=i,o.daysDifference(r,e._sampleZeroDateTT)}function u(i,n){if(i._chunkDownloadsInProgress[n])return i._chunkDownloadsInProgress[n];var o=e.defer();i._chunkDownloadsInProgress[n]=o;var s,l=i._xysFileUrlTemplate;return s=r(l)?l.replace("{0}",n):t("Assets/IAU2006_XYS/IAU2006_XYS_"+n+".json"),e(a(s),function(e){i._chunkDownloadsInProgress[n]=!1;for(var t=i._samples,r=e.samples,a=3*n*i._samplesPerXysFile,s=0,l=r.length;l>s;++s)t[a+s]=r[s];o.resolve()}),o.promise}var c=function(e){e=i(e,i.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=i(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=i(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new o(this._sampleZeroJulianEphemerisDate,0,s.TAI),this._stepSizeDays=i(e.stepSizeDays,1),this._samplesPerXysFile=i(e.samplesPerXysFile,1e3),this._totalSamples=i(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,r=this._denominators=new Array(t+1),n=this._xTable=new Array(t+1),a=Math.pow(this._stepSizeDays,t),l=0;t>=l;++l){r[l]=a,n[l]=l*this._stepSizeDays;for(var u=0;t>=u;++u)u!==l&&(r[l]*=l-u);r[l]=1/r[l]}this._work=new Array(t+1),this._coef=new Array(t+1)},h=new o(0,0,s.TAI);return c.prototype.preload=function(t,i,r,n){var o=l(this,t,i),a=l(this,r,n),s=0|o/this._stepSizeDays-this._interpolationOrder/2;0>s&&(s=0);var c=a/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;c>=this._totalSamples&&(c=this._totalSamples-1);for(var h=0|s/this._samplesPerXysFile,d=0|c/this._samplesPerXysFile,p=[],m=h;d>=m;++m)p.push(u(this,m));return e.all(p)},c.prototype.computeXysRadians=function(e,t,i){var o=l(this,e,t);if(0>o)return void 0;var a=0|o/this._stepSizeDays;if(a>=this._totalSamples)return void 0;var s=this._interpolationOrder,c=a-(0|s/2);0>c&&(c=0);var h=c+s;h>=this._totalSamples&&(h=this._totalSamples-1,c=h-s,0>c&&(c=0));var d=!1,p=this._samples;if(r(p[3*c])||(u(this,0|c/this._samplesPerXysFile),d=!0),r(p[3*h])||(u(this,0|h/this._samplesPerXysFile),d=!0),d)return void 0;r(i)?(i.x=0,i.y=0,i.s=0):i=new n(0,0,0);var m,f,v=o-c*this._stepSizeDays,g=this._work,_=this._denominators,y=this._coef,C=this._xTable;for(m=0;s>=m;++m)g[m]=v-C[m];for(m=0;s>=m;++m){for(y[m]=1,f=0;s>=f;++f)f!==m&&(y[m]*=g[f]);y[m]*=_[m];var w=3*(c+m);i.x+=y[m]*p[w++],i.y+=y[m]*p[w++],i.s+=y[m]*p[w]}return i},c}),i("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(e,i,r,n){this.x=t(e,0),this.y=t(i,0),this.z=t(r,0),this.w=t(n,0)},u=new e;l.fromAxisAngle=function(t,r,n){var o=r/2,a=Math.sin(o);u=e.normalize(t,u);var s=u.x*a,c=u.y*a,h=u.z*a,d=Math.cos(o);return i(n)?(n.x=s,n.y=c,n.z=h,n.w=d,n):new l(s,c,h,d)};var c=[1,2,0],h=new Array(3);l.fromRotationMatrix=function(e,t){var r,n,o,a,u,d=e[s.COLUMN0ROW0],p=e[s.COLUMN1ROW1],m=e[s.COLUMN2ROW2],f=d+p+m;if(f>0)r=Math.sqrt(f+1),u=.5*r,r=.5/r,n=(e[s.COLUMN1ROW2]-e[s.COLUMN2ROW1])*r,o=(e[s.COLUMN2ROW0]-e[s.COLUMN0ROW2])*r,a=(e[s.COLUMN0ROW1]-e[s.COLUMN1ROW0])*r;else{var v=c,g=0;p>d&&(g=1),m>d&&m>p&&(g=2);var _=v[g],y=v[_];r=Math.sqrt(e[s.getElementIndex(g,g)]-e[s.getElementIndex(_,_)]-e[s.getElementIndex(y,y)]+1);var C=h;C[g]=.5*r,r=.5/r,u=(e[s.getElementIndex(y,_)]-e[s.getElementIndex(_,y)])*r,C[_]=(e[s.getElementIndex(_,g)]+e[s.getElementIndex(g,_)])*r,C[y]=(e[s.getElementIndex(y,g)]+e[s.getElementIndex(g,y)])*r,n=-C[0],o=-C[1],a=-C[2]}return i(t)?(t.x=n,t.y=o,t.z=a,t.w=u,t):new l(n,o,a,u)};var d=new l;l.fromHeadingPitchRoll=function(t,i,r,n){var o=l.fromAxisAngle(e.UNIT_X,r,d),a=l.fromAxisAngle(e.UNIT_Y,-i,n);n=l.multiply(a,o,a);var s=l.fromAxisAngle(e.UNIT_Z,-t,d);return l.multiply(s,n,n)};var p=new e,m=new e,f=new l,v=new l,g=new l;l.packedLength=4,l.pack=function(e,i,r){r=t(r,0),i[r++]=e.x,i[r++]=e.y,i[r++]=e.z,i[r]=e.w},l.unpack=function(e,r,n){return r=t(r,0),i(n)||(n=new l),n.x=e[r],n.y=e[r+1],n.z=e[r+2],n.w=e[r+3],n},l.packedInterpolationLength=3,l.convertPackedArrayForInterpolation=function(e,t,i,r){l.unpack(e,4*i,g),l.conjugate(g,g);for(var n=0,o=i-t+1;o>n;n++){var a=3*n;l.unpack(e,4*(t+n),f),l.multiply(f,g,f),f.w<0&&l.negate(f,f),l.computeAxis(f,p);var s=l.computeAngle(f);r[a]=p.x*s,r[a+1]=p.y*s,r[a+2]=p.z*s}},l.unpackInterpolationResult=function(t,r,n,o,a){i(a)||(a=new l),e.fromArray(t,0,m);var s=e.magnitude(m);return l.unpack(r,4*o,v),0===s?l.clone(l.IDENTITY,f):l.fromAxisAngle(m,s,f),l.multiply(f,v,a)},l.clone=function(e,t){return i(e)?i(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new l(e.x,e.y,e.z,e.w):void 0},l.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},l.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},l.magnitude=function(e){return Math.sqrt(l.magnitudeSquared(e))},l.normalize=function(e,t){var i=1/l.magnitude(e),r=e.x*i,n=e.y*i,o=e.z*i,a=e.w*i;return t.x=r,t.y=n,t.z=o,t.w=a,t},l.inverse=function(e,t){var i=l.magnitudeSquared(e);return t=l.conjugate(e,t),l.multiplyByScalar(t,1/i,t)},l.add=function(e,t,i){return i.x=e.x+t.x,i.y=e.y+t.y,i.z=e.z+t.z,i.w=e.w+t.w,i},l.subtract=function(e,t,i){return i.x=e.x-t.x,i.y=e.y-t.y,i.z=e.z-t.z,i.w=e.w-t.w,i},l.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},l.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},l.multiply=function(e,t,i){var r=e.x,n=e.y,o=e.z,a=e.w,s=t.x,l=t.y,u=t.z,c=t.w,h=a*s+r*c+n*u-o*l,d=a*l-r*u+n*c+o*s,p=a*u+r*l-n*s+o*c,m=a*c-r*s-n*l-o*u;return i.x=h,i.y=d,i.z=p,i.w=m,i},l.multiplyByScalar=function(e,t,i){return i.x=e.x*t,i.y=e.y*t,i.z=e.z*t,i.w=e.w*t,i},l.divideByScalar=function(e,t,i){return i.x=e.x/t,i.y=e.y/t,i.z=e.z/t,i.w=e.w/t,i},l.computeAxis=function(e,t){var i=e.w;if(Math.abs(i-1)n&&(n=-n,o=y=l.negate(t,y)),1-nO;++O){var R=O+1,L=2*R+1;A[O]=1/(R*L),D[O]=R/L}return A[7]=P/136,D[7]=8*P/17,l.fastSlerp=function(e,t,i,r){var n,o=l.dot(e,t);o>=0?n=1:(n=-1,o=-o);for(var a=o-1,s=1-i,u=i*i,c=s*s,h=7;h>=0;--h)M[h]=(A[h]*u-D[h])*a,I[h]=(A[h]*c-D[h])*a;var d=n*i*(1+M[0]*(1+M[1]*(1+M[2]*(1+M[3]*(1+M[4]*(1+M[5]*(1+M[6]*(1+M[7])))))))),p=s*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),m=l.multiplyByScalar(e,p,T);return l.multiplyByScalar(t,d,r),l.add(m,r,r)},l.fastSquad=function(e,t,i,r,n,o){var a=l.fastSlerp(e,t,n,b),s=l.fastSlerp(i,r,n,x);return l.fastSlerp(a,s,2*n*(1-n),o)},l.equals=function(e,t){return e===t||i(e)&&i(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},l.equalsEpsilon=function(e,t,r){return e===t||i(e)&&i(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},l.ZERO=o(new l(0,0,0,0)),l.IDENTITY=o(new l(0,0,0,1)),l.prototype.clone=function(e){return l.clone(this,e)},l.prototype.equals=function(e){return l.equals(this,e)},l.prototype.equalsEpsilon=function(e,t){return l.equalsEpsilon(this,e,t)},l.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},l}),i("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g){"use strict";var _={},y=new i,C=new i,w=new i;_.eastNorthUpToFixedFrame=function(e,t,r){if(p.equalsEpsilon(e.x,0,p.EPSILON14)&&p.equalsEpsilon(e.y,0,p.EPSILON14)){var a=p.sign(e.z);return o(r)?(r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=-a,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=a,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new f(0,-a,0,e.x,1,0,0,e.y,0,0,a,e.z,0,0,0,1)}var s=y,l=C,c=w;return t=n(t,u.WGS84),t.geodeticSurfaceNormal(e,s),l.x=-e.y,l.y=e.x,l.z=0,i.normalize(l,l),i.cross(s,l,c),o(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=c.x,r[5]=c.y,r[6]=c.z,r[7]=0,r[8]=s.x,r[9]=s.y,r[10]=s.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new f(l.x,c.x,s.x,e.x,l.y,c.y,s.y,e.y,l.z,c.z,s.z,e.z,0,0,0,1)};var S=new i,E=new i,b=new i;_.northEastDownToFixedFrame=function(e,t,r){if(p.equalsEpsilon(e.x,0,p.EPSILON14)&&p.equalsEpsilon(e.y,0,p.EPSILON14)){var a=p.sign(e.z);return o(r)?(r[0]=-a,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=-a,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new f(-a,0,0,e.x,0,1,0,e.y,0,0,-a,e.z,0,0,0,1)}var s=S,l=E,c=b;return t=n(t,u.WGS84),t.geodeticSurfaceNormal(e,s),l.x=-e.y,l.y=e.x,l.z=0,i.normalize(l,l),i.cross(s,l,c),o(r)?(r[0]=c.x,r[1]=c.y,r[2]=c.z,r[3]=0,r[4]=l.x,r[5]=l.y,r[6]=l.z,r[7]=0,r[8]=-s.x,r[9]=-s.y,r[10]=-s.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new f(c.x,l.x,-s.x,e.x,c.y,l.y,-s.y,e.y,c.z,l.z,-s.z,e.z,0,0,0,1)},_.northUpEastToFixedFrame=function(e,t,r){if(p.equalsEpsilon(e.x,0,p.EPSILON14)&&p.equalsEpsilon(e.y,0,p.EPSILON14)){var a=p.sign(e.z);return o(r)?(r[0]=-a,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=a,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new f(-a,0,0,e.x,0,0,1,e.y,0,a,0,e.z,0,0,0,1)}var s=y,l=C,c=w;return t=n(t,u.WGS84),t.geodeticSurfaceNormal(e,s),l.x=-e.y,l.y=e.x,l.z=0,i.normalize(l,l),i.cross(s,l,c),o(r)?(r[0]=c.x,r[1]=c.y,r[2]=c.z,r[3]=0,r[4]=s.x,r[5]=s.y,r[6]=s.z,r[7]=0,r[8]=l.x,r[9]=l.y,r[10]=l.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new f(c.x,s.x,l.x,e.x,c.y,s.y,l.y,e.y,c.z,s.z,l.z,e.z,0,0,0,1)};var x=new v,T=new i(1,1,1),P=new f;_.headingPitchRollToFixedFrame=function(e,t,r,n,o,a){var s=v.fromHeadingPitchRoll(t,r,n,x),l=f.fromTranslationQuaternionRotationScale(i.ZERO,s,T,P);return a=_.eastNorthUpToFixedFrame(e,o,a),f.multiply(a,l,a)};var A=new f,D=new m;_.headingPitchRollQuaternion=function(e,t,i,r,n,o){var a=_.headingPitchRollToFixedFrame(e,t,i,r,n,A),s=f.getRotation(a,D);return v.fromRotationMatrix(s,o)};var M=24110.54841,I=8640184.812866,O=.093104,R=-62e-7,L=1.1772758384668e-19,N=72921158553e-15,F=p.TWO_PI/86400,B=new d;_.computeTemeToPseudoFixedMatrix=function(e,t){B=d.addSeconds(e,-d.computeTaiMinusUtc(e),B);var i,r=B.dayNumber,n=B.secondsOfDay,a=r-2451545;i=n>=43200?(a+.5)/g.DAYS_PER_JULIAN_CENTURY:(a-.5)/g.DAYS_PER_JULIAN_CENTURY;var s=M+i*(I+i*(O+i*R)),l=s*F%p.TWO_PI,u=N+L*(r-2451545.5),c=(n+.5*g.SECONDS_PER_DAY)%g.SECONDS_PER_DAY,h=l+u*c,f=Math.cos(h),v=Math.sin(h);return o(t)?(t[0]=f,t[1]=-v,t[2]=0,t[3]=v,t[4]=f,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new m(f,v,0,-v,f,0,0,0,1)},_.iau2006XysData=new c,_.earthOrientationParameters=s.NONE;var z=32.184,k=2451545;_.preloadIcrfFixed=function(t){var i=t.start.dayNumber,r=t.start.secondsOfDay+z,n=t.stop.dayNumber,o=t.stop.secondsOfDay+z,a=_.iau2006XysData.preload(i,r,n,o),s=_.earthOrientationParameters.getPromiseToLoad();return e.all([a,s])},_.computeIcrfToFixedMatrix=function(e,t){o(t)||(t=new m);var i=_.computeFixedToIcrfMatrix(e,t);return o(i)?m.transpose(i,t):void 0};var V=new h(0,0,0),U=new l(0,0,0,0,0,0),W=new m,G=new m;_.computeFixedToIcrfMatrix=function(e,t){o(t)||(t=new m);var i=_.earthOrientationParameters.compute(e,U);if(!o(i))return void 0;var r=e.dayNumber,n=e.secondsOfDay+z,a=_.iau2006XysData.computeXysRadians(r,n,V);if(!o(a))return void 0;var s=a.x+i.xPoleOffset,l=a.y+i.yPoleOffset,u=1/(1+Math.sqrt(1-s*s-l*l)),c=W;c[0]=1-u*s*s,c[3]=-u*s*l,c[6]=s,c[1]=-u*s*l,c[4]=1-u*l*l,c[7]=l,c[2]=-s,c[5]=-l,c[8]=1-u*(s*s+l*l);var h=m.fromRotationZ(-a.s,G),f=m.multiply(c,h,W),v=e.dayNumber,y=e.secondsOfDay-d.computeTaiMinusUtc(e)+i.ut1MinusUtc,C=v-2451545,w=y/g.SECONDS_PER_DAY,S=.779057273264+w+.00273781191135448*(C+w);S=S%1*p.TWO_PI;var E=m.fromRotationZ(S,G),b=m.multiply(f,E,W),x=Math.cos(i.xPoleWander),T=Math.cos(i.yPoleWander),P=Math.sin(i.xPoleWander),A=Math.sin(i.yPoleWander),D=r-k+n/g.SECONDS_PER_DAY;D/=36525;var M=-47e-6*D*p.RADIANS_PER_DEGREE/3600,I=Math.cos(M),O=Math.sin(M),R=G;return R[0]=x*I,R[1]=x*O,R[2]=P,R[3]=-T*O+A*P*I,R[4]=T*I+A*P*O,R[5]=-A*x,R[6]=-A*O-T*P*I,R[7]=A*I-T*P*O,R[8]=T*x,m.multiply(b,R,t)};var H=new r;_.pointToWindowCoordinates=function(e,t,i,r){return r=_.pointToGLWindowCoordinates(e,t,i,r),r.y=2*t[5]-r.y,r},_.pointToGLWindowCoordinates=function(e,i,n,a){o(a)||(a=new t); +var s=H;return f.multiplyByVector(e,r.fromElements(n.x,n.y,n.z,1,s),s),r.multiplyByScalar(s,1/s.w,s),f.multiplyByVector(i,s,s),t.fromCartesian4(s,a)};var q=new i,j=new i,Y=new i;return _.rotationMatrixFromPositionVelocity=function(e,t,r,a){var s=n(r,u.WGS84).geodeticSurfaceNormal(e,q),l=i.cross(t,s,j);i.equalsEpsilon(l,i.ZERO,p.EPSILON6)&&(l=i.clone(i.UNIT_X,l));var c=i.cross(l,t,Y);return i.cross(t,c,l),i.negate(l,l),o(a)||(a=new m),a[0]=t.x,a[1]=t.y,a[2]=t.z,a[3]=l.x,a[4]=l.y,a[5]=l.z,a[6]=c.x,a[7]=c.y,a[8]=c.z,a},_}),i("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m){"use strict";var f=new r,v=function(e,t){t=n(t,l.WGS84),e=t.scaleToGeodeticSurface(e);var r=m.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=i.fromCartesian4(h.getColumn(r,0,f)),this._yAxis=i.fromCartesian4(h.getColumn(r,1,f));var o=i.fromCartesian4(h.getColumn(r,2,f));this._plane=d.fromPointNormal(e,o)};a(v.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var g=new e;v.fromPoints=function(t,i){var r=e.fromPoints(t,g);return new v(r.center,i)};var _=new p,y=new i;v.prototype.projectPointOntoPlane=function(e,r){var n=_;n.origin=e,i.normalize(e,n.direction);var a=u.rayPlane(n,this._plane,y);if(o(a)||(i.negate(n.direction,n.direction),a=u.rayPlane(n,this._plane,y)),o(a)){var s=i.subtract(a,this._origin,a),l=i.dot(this._xAxis,s),c=i.dot(this._yAxis,s);return o(r)?(r.x=l,r.y=c,r):new t(l,c)}return void 0},v.prototype.projectPointsOntoPlane=function(e,t){o(t)||(t=[]);for(var i=0,r=e.length,n=0;r>n;n++){var a=this.projectPointOntoPlane(e[n],t[i]);o(a)&&(t[i]=a,i++)}return t.length=i,t},v.prototype.projectPointToNearestOnPlane=function(e,r){o(r)||(r=new t);var n=_;n.origin=e,i.clone(this._plane.normal,n.direction);var a=u.rayPlane(n,this._plane,y);o(a)||(i.negate(n.direction,n.direction),a=u.rayPlane(n,this._plane,y));var s=i.subtract(a,this._origin,a),l=i.dot(this._xAxis,s),c=i.dot(this._yAxis,s);return r.x=l,r.y=c,r},v.prototype.projectPointsToNearestOnPlane=function(e,t){o(t)||(t=[]);var i=e.length;t.length=i;for(var r=0;i>r;r++)t[r]=this.projectPointToNearestOnPlane(e[r],t[r]);return t};var C=new i;return v.prototype.projectPointsOntoEllipsoid=function(e,t){var r=e.length;o(t)?t.length=r:t=new Array(r);for(var n=this._ellipsoid,a=this._origin,s=this._xAxis,l=this._yAxis,u=C,c=0;r>c;++c){var h=e[c];i.multiplyByScalar(s,h.x,u),o(t[c])||(t[c]=new i);var d=i.add(a,u,t[c]);i.multiplyByScalar(l,h.y,u),i.add(d,u,d),n.scaleToGeocentricSurface(d,d)}return t},v}),i("Core/OrientedBoundingBox",["./Cartesian2","./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Intersect","./Plane","./Rectangle","./Math","./Matrix3"],function(e,t,i,r,n,o,a,s,l,u,c,h,d){"use strict";var p=function(e,i){this.center=t.clone(r(e,t.ZERO)),this.halfAxes=d.clone(r(i,d.ZERO))},m=new t,f=new t,v=function(e,i,r,o,a,s,l,u){n(u)||(u=new p);var c=u.halfAxes;d.setColumn(c,0,e.xAxis,c),d.setColumn(c,1,e.yAxis,c),d.setColumn(c,2,e.zAxis,c);var h=m;h.x=(i+r)/2,h.y=(o+a)/2,h.z=(s+l)/2;var v=f;v.x=(r-i)/2,v.y=(a-o)/2,v.z=(l-s)/2;var g=u.center;return h=d.multiplyByVector(c,h,h),t.add(e.origin,h,g),d.multiplyByScale(c,v,c),u},g=new i,_=new t,y=[new i,new i,new i,new i,new i,new i,new i,new i],C=[new t,new t,new t,new t,new t,new t,new t,new t],w=[new e,new e,new e,new e,new e,new e,new e,new e];return p.fromRectangle=function(e,t,i,n,o){t=r(t,0),i=r(i,0),n=r(n,a.WGS84);var l=c.center(e,g),h=n.cartographicToCartesian(l,_),d=new s(h,n),p=d.plane,m=y[0],f=y[1],S=y[2],E=y[3],b=y[4],x=y[5],T=y[6],P=y[7],A=l.longitude,D=e.south<0&&e.north>0?0:l.latitude;T.latitude=x.latitude=b.latitude=e.south,P.latitude=E.latitude=D,m.latitude=f.latitude=S.latitude=e.north,T.longitude=P.longitude=m.longitude=e.west,x.longitude=f.longitude=A,b.longitude=E.longitude=S.longitude=e.east,S.height=f.height=m.height=P.height=T.height=x.height=b.height=E.height=i,n.cartographicArrayToCartesianArray(y,C),d.projectPointsToNearestOnPlane(C,w);var M=Math.min(w[6].x,w[7].x,w[0].x),I=Math.max(w[2].x,w[3].x,w[4].x),O=Math.min(w[4].y,w[5].y,w[6].y),R=Math.max(w[0].y,w[1].y,w[2].y);S.height=m.height=b.height=T.height=t,n.cartographicArrayToCartesianArray(y,C);var L=Math.min(u.getPointDistance(p,C[0]),u.getPointDistance(p,C[2]),u.getPointDistance(p,C[4]),u.getPointDistance(p,C[6])),N=i;return v(d,M,I,O,R,L,N,o)},p.clone=function(e,i){return n(e)?n(i)?(t.clone(e.center,i.center),d.clone(e.halfAxes,i.halfAxes),i):new p(e.center,e.halfAxes):void 0},p.intersectPlane=function(e,i){var r=e.center,n=i.normal,o=e.halfAxes,a=n.x,s=n.y,u=n.z,c=Math.abs(a*o[d.COLUMN0ROW0]+s*o[d.COLUMN0ROW1]+u*o[d.COLUMN0ROW2])+Math.abs(a*o[d.COLUMN1ROW0]+s*o[d.COLUMN1ROW1]+u*o[d.COLUMN1ROW2])+Math.abs(a*o[d.COLUMN2ROW0]+s*o[d.COLUMN2ROW1]+u*o[d.COLUMN2ROW2]),h=t.dot(n,r)+i.distance;return-c>=h?l.OUTSIDE:h>=c?l.INSIDE:l.INTERSECTING},p.prototype.intersectPlane=function(e){return p.intersectPlane(this,e)},p.equals=function(e,i){return e===i||n(e)&&n(i)&&t.equals(e.center,i.center)&&d.equals(e.halfAxes,i.halfAxes)},p.prototype.clone=function(e){return p.clone(this,e)},p.prototype.equals=function(e){return p.equals(this,e)},p}),i("Core/Intersections2D",["./Cartesian3","./defined","./DeveloperError"],function(e,t){"use strict";var i={};return i.clipTriangleAtAxisAlignedThreshold=function(e,i,r,n,o,a){t(a)?a.length=0:a=[];var s,l,u;i?(s=e>r,l=e>n,u=e>o):(s=r>e,l=n>e,u=o>e);var c,h,d,p,m,f,v=s+l+u;return 1===v?s?(c=(e-r)/(n-r),h=(e-r)/(o-r),a.push(1),a.push(2),1!==h&&(a.push(-1),a.push(0),a.push(2),a.push(h)),1!==c&&(a.push(-1),a.push(0),a.push(1),a.push(c))):l?(d=(e-n)/(o-n),p=(e-n)/(r-n),a.push(2),a.push(0),1!==p&&(a.push(-1),a.push(1),a.push(0),a.push(p)),1!==d&&(a.push(-1),a.push(1),a.push(2),a.push(d))):u&&(m=(e-o)/(r-o),f=(e-o)/(n-o),a.push(0),a.push(1),1!==f&&(a.push(-1),a.push(2),a.push(1),a.push(f)),1!==m&&(a.push(-1),a.push(2),a.push(0),a.push(m))):2===v?s||r===e?l||n===e?u||o===e||(h=(e-r)/(o-r),d=(e-n)/(o-n),a.push(2),a.push(-1),a.push(0),a.push(2),a.push(h),a.push(-1),a.push(1),a.push(2),a.push(d)):(f=(e-o)/(n-o),c=(e-r)/(n-r),a.push(1),a.push(-1),a.push(2),a.push(1),a.push(f),a.push(-1),a.push(0),a.push(1),a.push(c)):(p=(e-n)/(r-n),m=(e-o)/(r-o),a.push(0),a.push(-1),a.push(1),a.push(0),a.push(p),a.push(-1),a.push(2),a.push(0),a.push(m)):3===v||(a.push(0),a.push(1),a.push(2)),a},i.computeBarycentricCoordinates=function(i,r,n,o,a,s,l,u,c){var h=n-l,d=l-a,p=s-u,m=o-u,f=1/(p*h+d*m),v=r-u,g=i-l,_=(p*g+d*v)*f,y=(-m*g+h*v)*f,C=1-_-y;return t(c)?(c.x=_,c.y=y,c.z=C,c):new e(_,y,C)},i}),i("Core/QuantizedMeshTerrainData",["../ThirdParty/when","./BoundingSphere","./Cartesian3","./defaultValue","./defined","./defineProperties","./DeveloperError","./IndexDatatype","./Intersections2D","./Math","./OrientedBoundingBox","./TaskProcessor","./TerrainMesh"],function(e,t,i,r,n,o,a,s,l,u,c,h,d){"use strict";function p(e,t,i){f.length=e.length;for(var r=!1,n=0,o=e.length;o>n;++n)f[n]=e[n],r=r||n>0&&t(e[n-1],e[n])>0;return r?(f.sort(t),s.createTypedArray(i,f)):e}var m=function(e){function t(e,t){return a[e]-a[t]}function i(e,t){return o[e]-o[t]}this._quantizedVertices=e.quantizedVertices,this._encodedNormals=e.encodedNormals,this._indices=e.indices,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._boundingSphere=e.boundingSphere,this._orientedBoundingBox=e.orientedBoundingBox,this._horizonOcclusionPoint=e.horizonOcclusionPoint;var n=this._quantizedVertices.length/3,o=this._uValues=this._quantizedVertices.subarray(0,n),a=this._vValues=this._quantizedVertices.subarray(n,2*n);this._heightValues=this._quantizedVertices.subarray(2*n,3*n),this._westIndices=p(e.westIndices,t,n),this._southIndices=p(e.southIndices,i,n),this._eastIndices=p(e.eastIndices,t,n),this._northIndices=p(e.northIndices,i,n),this._westSkirtHeight=e.westSkirtHeight,this._southSkirtHeight=e.southSkirtHeight,this._eastSkirtHeight=e.eastSkirtHeight,this._northSkirtHeight=e.northSkirtHeight,this._childTileMask=r(e.childTileMask,15),this._createdByUpsampling=r(e.createdByUpsampling,!1),this._waterMask=e.waterMask};o(m.prototype,{waterMask:{get:function(){return this._waterMask}}});var f=[],v=new h("createVerticesFromQuantizedTerrainMesh");m.prototype.createMesh=function(t,i,r,o){var a=t.ellipsoid,l=t.tileXYToRectangle(i,r,o),u=v.scheduleTask({minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,quantizedVertices:this._quantizedVertices,octEncodedNormals:this._encodedNormals,indices:this._indices,westIndices:this._westIndices,southIndices:this._southIndices,eastIndices:this._eastIndices,northIndices:this._northIndices,westSkirtHeight:this._westSkirtHeight,southSkirtHeight:this._southSkirtHeight,eastSkirtHeight:this._eastSkirtHeight,northSkirtHeight:this._northSkirtHeight,rectangle:l,relativeToCenter:this._boundingSphere.center,ellipsoid:a});if(!n(u))return void 0;var c=this;return e(u,function(e){var t=c._quantizedVertices.length/3;t+=c._westIndices.length+c._southIndices.length+c._eastIndices.length+c._northIndices.length;var i=s.createTypedArray(t,e.indices);return new d(c._boundingSphere.center,new Float32Array(e.vertices),i,c._minimumHeight,c._maximumHeight,c._boundingSphere,c._horizonOcclusionPoint,n(c._encodedNormals)?7:6,c._orientedBoundingBox)})};var g=new h("upsampleQuantizedTerrainMesh");m.prototype.upsample=function(r,o,a,l,u,h,d){var p=2*o!==u,f=2*a===h,v=r.ellipsoid,_=r.tileXYToRectangle(u,h,d),y=g.scheduleTask({vertices:this._quantizedVertices,indices:this._indices,encodedNormals:this._encodedNormals,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:p,isNorthChild:f,childRectangle:_,ellipsoid:v});if(!n(y))return void 0;var C=Math.min(this._westSkirtHeight,this._eastSkirtHeight);C=Math.min(C,this._southSkirtHeight),C=Math.min(C,this._northSkirtHeight);var w=p?.5*C:this._westSkirtHeight,S=f?.5*C:this._southSkirtHeight,E=p?this._eastSkirtHeight:.5*C,b=f?this._northSkirtHeight:.5*C;return e(y,function(e){var r,o=new Uint16Array(e.vertices),a=s.createTypedArray(o.length/3,e.indices);return n(e.encodedNormals)&&(r=new Uint8Array(e.encodedNormals)),new m({quantizedVertices:o,indices:a,encodedNormals:r,minimumHeight:e.minimumHeight,maximumHeight:e.maximumHeight,boundingSphere:t.clone(e.boundingSphere),orientedBoundingBox:c.clone(e.orientedBoundingBox),horizonOcclusionPoint:i.clone(e.horizonOcclusionPoint),westIndices:e.westIndices,southIndices:e.southIndices,eastIndices:e.eastIndices,northIndices:e.northIndices,westSkirtHeight:w,southSkirtHeight:S,eastSkirtHeight:E,northSkirtHeight:b,childTileMask:0,createdByUpsampling:!0})})};var _=32767,y=new i;return m.prototype.interpolateHeight=function(e,t,i){var r=u.clamp((t-e.west)/e.width,0,1);r*=_;var n=u.clamp((i-e.south)/e.height,0,1);n*=_;for(var o=this._uValues,a=this._vValues,s=this._heightValues,c=this._indices,h=0,d=c.length;d>h;h+=3){var p=c[h],m=c[h+1],f=c[h+2],v=o[p],g=o[m],C=o[f],w=a[p],S=a[m],E=a[f],b=l.computeBarycentricCoordinates(r,n,v,w,g,S,C,E,y);if(b.x>=-1e-15&&b.y>=-1e-15&&b.z>=-1e-15){var x=b.x*s[p]+b.y*s[m]+b.z*s[f];return u.lerp(this._minimumHeight,this._maximumHeight,x/_)}}return void 0},m.prototype.isChildAvailable=function(e,t,i,r){var n=2;return i!==2*e&&++n,r!==2*t&&(n-=2),0!==(this._childTileMask&1<0?o.raiseEvent(d):console.log('An error occurred in "'+n.constructor.name+'": '+i(a)),d.retry&&t(c)&&c(),d},r.handleSuccess=function(e){t(e)&&(e.timesRetried=-1)},r}),i("Core/CesiumTerrainProvider",["../ThirdParty/Uri","../ThirdParty/when","./appendForwardSlash","./BoundingSphere","./Cartesian3","./Credit","./defaultValue","./defined","./defineProperties","./DeveloperError","./Event","./GeographicTilingScheme","./HeightmapTerrainData","./IndexDatatype","./loadArrayBuffer","./loadJson","./Math","./Matrix3","./OrientedBoundingBox","./QuantizedMeshTerrainData","./RuntimeError","./TerrainProvider","./throttleRequestByServer","./TileProviderError"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E){"use strict";function b(e){if(s(e)&&0!==e.length){var t=e.join("-");return{Accept:"application/vnd.quantized-mesh;extensions="+t+",application/octet-stream;q=0.9,*/*;q=0.01"}}return{Accept:"application/vnd.quantized-mesh,application/octet-stream;q=0.9,*/*;q=0.01"}}function x(e,t){var i=new Uint16Array(t,0,e._heightmapWidth*e._heightmapWidth);return new d({buffer:i,childTileMask:new Uint8Array(t,i.byteLength,1)[0],waterMask:new Uint8Array(t,i.byteLength+1,t.byteLength-i.byteLength-1),width:e._heightmapWidth,height:e._heightmapWidth,structure:e._heightmapStructure})}function T(e,t,i,o,a,s){function l(e){return e>>1^-(1&e)}var u=0,c=3,h=c+1,d=Float64Array.BYTES_PER_ELEMENT*c,m=Float64Array.BYTES_PER_ELEMENT*h,f=3,g=Uint16Array.BYTES_PER_ELEMENT*f,C=3,w=Uint16Array.BYTES_PER_ELEMENT,S=w*C,E=new DataView(t),b=new n(E.getFloat64(u,!0),E.getFloat64(u+8,!0),E.getFloat64(u+16,!0));u+=d;var x=E.getFloat32(u,!0);u+=Float32Array.BYTES_PER_ELEMENT;var T=E.getFloat32(u,!0);u+=Float32Array.BYTES_PER_ELEMENT;var A=new r(new n(E.getFloat64(u,!0),E.getFloat64(u+8,!0),E.getFloat64(u+16,!0)),E.getFloat64(u+d,!0));u+=m;var D=new n(E.getFloat64(u,!0),E.getFloat64(u+8,!0),E.getFloat64(u+16,!0));u+=d;var I=E.getUint32(u,!0);u+=Uint32Array.BYTES_PER_ELEMENT;var O=new Uint16Array(t,u,3*I);u+=I*g,I>65536&&(w=Uint32Array.BYTES_PER_ELEMENT,S=w*C);var R,L=O.subarray(0,I),N=O.subarray(I,2*I),F=O.subarray(2*I,3*I),B=0,z=0,k=0;for(R=0;I>R;++R)B+=l(L[R]),z+=l(N[R]),k+=l(F[R]),L[R]=B,N[R]=z,F[R]=k;0!==u%w&&(u+=w-u%w);var V=E.getUint32(u,!0);u+=Uint32Array.BYTES_PER_ELEMENT;var U=p.createTypedArrayFromArrayBuffer(I,t,u,V*C);u+=V*S;var W=0;for(R=0;R=n.length)return 0;var a=n[o],s=0;return s|=A(a,2*i,2*r)?1:0,s|=A(a,2*i+1,2*r)?2:0,s|=A(a,2*i,2*r+1)?4:0,s|=A(a,2*i+1,2*r+1)?8:0}function A(e,t,i){for(var r=0,n=e.length;n>r;++r){var o=e[r];if(t>=o.startX&&t<=o.endX&&i>=o.startY&&i<=o.endY)return!0}return!1}var D=function(r){function n(t){var i;if(!t.format)return i="The tile format is not specified in the layer.json file.",m=E.handleError(m,v,v._errorEvent,i,void 0,void 0,void 0,u),void 0;if(!t.tiles||0===t.tiles.length)return i="The layer.json file does not specify any tile URL templates.",m=E.handleError(m,v,v._errorEvent,i,void 0,void 0,void 0,u),void 0;if("heightmap-1.0"===t.format)v._heightmapStructure={heightScale:.2,heightOffset:-1e3,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1},v._hasWaterMask=!0,v._requestWaterMask=!0;else if(0!==t.format.indexOf("quantized-mesh-1."))return i='The tile format "'+t.format+'" is invalid or not supported.',m=E.handleError(m,v,v._errorEvent,i,void 0,void 0,void 0,u),void 0;var r=new e(p);v._tileUrlTemplates=t.tiles;for(var n=0;n=r.length)return!1;var n=r[i],o=this._tilingScheme.getNumberOfYTilesAtLevel(i),a=o-t-1;return A(n,e,a)}return void 0},D}),i("Core/EllipseGeometryLibrary",["./Cartesian3","./Math","./Matrix3","./Quaternion"],function(e,t,i,r){"use strict";function n(t,n,o,c,h,d,p,m,f,v){var g=t+n;e.multiplyByScalar(c,Math.cos(g),a),e.multiplyByScalar(o,Math.sin(g),s),e.add(a,s,a);var _=Math.cos(t);_*=_;var y=Math.sin(t);y*=y;var C=d/Math.sqrt(p*_+h*y),w=C/m;return r.fromAxisAngle(a,w,l),i.fromQuaternion(l,u),i.multiplyByVector(u,f,v),e.normalize(v,v),e.multiplyByScalar(v,m,v),v}var o={},a=new e,s=new e,l=new r,u=new i,c=new e,h=new e,d=new e,p=new e;o.raisePositionsToHeight=function(t,i,r){for(var n=i.ellipsoid,o=i.height,a=i.extrudedHeight,s=r?2*(t.length/3):t.length/3,l=new Float64Array(3*s),u=t.length,m=r?u:0,f=0;u>f;f+=3){var v=f+1,g=f+2,_=e.fromArray(t,f,c);n.scaleToGeodeticSurface(_,_);var y=e.clone(_,h),C=n.geodeticSurfaceNormal(_,p),w=e.multiplyByScalar(C,o,d);e.add(_,w,_),r&&(e.multiplyByScalar(C,a,w),e.add(y,w,y),l[f+m]=y.x,l[v+m]=y.y,l[g+m]=y.z),l[f]=_.x,l[v]=_.y,l[g]=_.z}return l};var m=new e,f=new e,v=new e;return o.computeEllipsePositions=function(i,r,o){var a=i.semiMinorAxis,s=i.semiMajorAxis,l=i.rotation,u=i.center,p=8*i.granularity,g=a*a,_=s*s,y=s*a,C=e.magnitude(u),w=e.normalize(u,m),S=e.cross(e.UNIT_Z,u,f);S=e.normalize(S,S);var E=e.cross(w,S,v),b=1+Math.ceil(t.PI_OVER_TWO/p),x=t.PI_OVER_TWO/(b-1),T=t.PI_OVER_TWO-b*x;0>T&&(b-=Math.ceil(Math.abs(T)/x));var P,A,D,M,I,O=2*b*(b+1),R=r?new Array(3*O):void 0,L=0,N=c,F=h,B=3*(2*b+2*(b-1)),z=B-1,k=0,V=o?new Array(B):void 0;for(T=t.PI_OVER_TWO,P=0;b>P;++P){if(N=n(T,l,E,S,g,y,_,C,w,N),F=n(Math.PI-T,l,E,S,g,y,_,C,w,F),r){for(R[L++]=N.x,R[L++]=N.y,R[L++]=N.z,D=2*P+2,A=1;D-1>A;++A)M=A/(D-1),I=e.lerp(N,F,M,d),R[L++]=I.x,R[L++]=I.y,R[L++]=I.z;R[L++]=F.x,R[L++]=F.y,R[L++]=F.z}o&&(V[z--]=N.z,V[z--]=N.y,V[z--]=N.x,0!==P&&(V[k++]=F.x,V[k++]=F.y,V[k++]=F.z)),T=t.PI_OVER_TWO-(P+1)*x}for(P=b;P>0;--P){if(T=t.PI_OVER_TWO-(P-1)*x,N=n(-T,l,E,S,g,y,_,C,w,N),F=n(T+Math.PI,l,E,S,g,y,_,C,w,F),r){for(R[L++]=N.x,R[L++]=N.y,R[L++]=N.z,D=2*(P-1)+2,A=1;D-1>A;++A)M=A/(D-1),I=e.lerp(N,F,M,d),R[L++]=I.x,R[L++]=I.y,R[L++]=I.z;R[L++]=F.x,R[L++]=F.y,R[L++]=F.z}o&&(V[z--]=N.z,V[z--]=N.y,V[z--]=N.x,1!==P&&(V[k++]=F.x,V[k++]=F.y,V[k++]=F.z))}var U={};return r&&(U.positions=R,U.numPts=b),o&&(U.outerPositions=V),U},o}),i("Core/GeometryInstance",["./defaultValue","./defined","./DeveloperError","./Matrix4"],function(e,t,i,r){"use strict";var n=function(t){t=e(t,e.EMPTY_OBJECT),this.geometry=t.geometry,this.modelMatrix=r.clone(e(t.modelMatrix,r.IDENTITY)),this.id=t.id,this.pickPrimitive=t.pickPrimitive,this.attributes=e(t.attributes,{}),this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0};return n}),i("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,i){"use strict";var r=new t,n=new t,o=new t,a=function(a,s,l,u,c){i(c)||(c=new t);var h,d,p,m,f,v,g,_;i(s.z)?(h=t.subtract(l,s,r),d=t.subtract(u,s,n),p=t.subtract(a,s,o),m=t.dot(h,h),f=t.dot(h,d),v=t.dot(h,p),g=t.dot(d,d),_=t.dot(d,p)):(h=e.subtract(l,s,r),d=e.subtract(u,s,n),p=e.subtract(a,s,o),m=e.dot(h,h),f=e.dot(h,d),v=e.dot(h,p),g=e.dot(d,d),_=e.dot(d,p));var y=1/(m*g-f*f);return c.y=(g*v-f*_)*y,c.z=(m*_-f*v)*y,c.x=1-c.y-c.z,c};return a}),i("Core/EncodedCartesian3",["./Cartesian3","./defined","./DeveloperError"],function(e,t){"use strict";var i=function(){this.high=e.clone(e.ZERO),this.low=e.clone(e.ZERO)};i.encode=function(e,i){t(i)||(i={high:0,low:0});var r;return e>=0?(r=65536*Math.floor(e/65536),i.high=r,i.low=e-r):(r=65536*Math.floor(-e/65536),i.high=-r,i.low=e+r),i};var r={high:0,low:0};i.fromCartesian=function(e,n){t(n)||(n=new i);var o=n.high,a=n.low;return i.encode(e.x,r),o.x=r.high,a.x=r.low,i.encode(e.y,r),o.y=r.high,a.y=r.low,i.encode(e.z,r),o.z=r.high,a.z=r.low,n};var n=new i;return i.writeElements=function(e,t,r){i.fromCartesian(e,n);var o=n.high,a=n.low;t[r]=o.x,t[r+1]=o.y,t[r+2]=o.z,t[r+3]=a.x,t[r+4]=a.y,t[r+5]=a.z},i}),i("Core/Tipsify",["./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var i={};return i.calculateACMR=function(i){i=e(i,e.EMPTY_OBJECT);var r=i.indices,n=i.maximumIndex,o=e(i.cacheSize,24),a=r.length;if(!t(n)){n=0;for(var s=0,l=r[s];a>s;)l>n&&(n=l),++s,l=r[s]}for(var u=[],c=0;n+1>c;c++)u[c]=0;for(var h=o+1,d=0;a>d;++d)h-u[r[d]]>o&&(u[r[d]]=h,++h);return(h-o+1)/(a/3)},i.tipsify=function(i){function r(e,t,i,r){for(;t.length>=1;){var n=t[t.length-1];if(t.splice(t.length-1,1),e[n].numLiveTriangles>0)return n}for(;r>o;){if(e[o].numLiveTriangles>0)return++o,o-1;++o}return-1}function n(e,t,i,n,o,a,s){for(var l,u=-1,c=-1,h=0;hc||-1===c)&&(c=l,u=d)),++h}return-1===u?r(n,a,e,s):u}i=e(i,e.EMPTY_OBJECT);var o,a=i.indices,s=i.maximumIndex,l=e(i.cacheSize,24),u=a.length,c=0,h=0,d=a[h],p=u;if(t(s))c=s+1;else{for(;p>h;)d>c&&(c=d),++h,d=a[h];if(-1===c)return 0;++c}for(var m=[],f=0;c>f;f++)m[f]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};h=0;for(var v=0;p>h;)m[a[h]].vertexTriangles.push(v),++m[a[h]].numLiveTriangles,m[a[h+1]].vertexTriangles.push(v),++m[a[h+1]].numLiveTriangles,m[a[h+2]].vertexTriangles.push(v),++m[a[h+2]].numLiveTriangles,++v,h+=3;var g=0,_=l+1;o=1;var y,C,w=[],S=[],E=0,b=[],x=u/3,T=[];for(f=0;x>f;f++)T[f]=!1;for(var P,A;-1!==g;){w=[],C=m[g],A=C.vertexTriangles.length;for(var D=0;A>D;++D)if(v=C.vertexTriangles[D],!T[v]){T[v]=!0,h=v+v+v;for(var M=0;3>M;++M)P=a[h],w.push(P),S.push(P),b[E]=P,++E,y=m[P],--y.numLiveTriangles,_-y.timeStamp>l&&(y.timeStamp=_,++_),++h}g=n(a,l,w,m,_,S,c)}return b},i}),i("Core/GeometryPipeline",["./AttributeCompression","./barycentricCoordinates","./BoundingSphere","./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EncodedCartesian3","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryInstance","./GeometryType","./IndexDatatype","./Intersect","./IntersectionTests","./Math","./Matrix3","./Matrix4","./Plane","./PrimitiveType","./Tipsify"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x){"use strict";function T(e,t,i,r,n){e[t++]=i,e[t++]=r,e[t++]=r,e[t++]=n,e[t++]=n,e[t]=i}function P(e){for(var t=e.length,i=6*(t/3),r=g.createTypedArray(t,i),n=0,o=0;t>o;o+=3,n+=6)T(r,n,e[o],e[o+1],e[o+2]);return r}function A(e){var t=e.length;if(t>=3){var i=6*(t-2),r=g.createTypedArray(t,i);T(r,0,e[0],e[1],e[2]);for(var n=6,o=3;t>o;++o,n+=6)T(r,n,e[o-1],e[o],e[o-2]);return r}return new Uint16Array}function D(e){if(e.length>0){for(var t=e.length-1,i=6*(t-1),r=g.createTypedArray(t,i),n=e[0],o=0,a=1;t>a;++a,o+=6)T(r,o,n,e[a],e[a+1]);return r}return new Uint16Array}function M(e){var t={};for(var i in e)if(e.hasOwnProperty(i)&&u(e[i])&&u(e[i].values)){var r=e[i];t[i]=new m({componentDatatype:r.componentDatatype,componentsPerAttribute:r.componentsPerAttribute,normalize:r.normalize,values:[]})}return t}function I(e,t,i){for(var r in t)if(t.hasOwnProperty(r)&&u(t[r])&&u(t[r].values))for(var n=t[r],o=0;oo;o+=3)n.unpack(i,o,ot),S.multiplyByPoint(e,ot,ot),n.pack(ot,i,o)}function R(e,t){if(u(t))for(var i=t.values,r=i.length,o=0;r>o;o+=3)n.unpack(i,o,ot),w.multiplyByVector(e,ot,ot),ot=n.normalize(ot,ot),n.pack(ot,i,o)}function L(e,t){var i,r=e.length,n={},o=e[0][t].attributes;for(i in o)if(o.hasOwnProperty(i)&&u(o[i])&&u(o[i].values)){for(var a=o[i],l=a.values.length,c=!0,h=1;r>h;++h){var d=e[h][t].attributes[i];if(!u(d)||a.componentDatatype!==d.componentDatatype||a.componentsPerAttribute!==d.componentsPerAttribute||a.normalize!==d.normalize){c=!1;break}l+=d.values.length}c&&(n[i]=new m({componentDatatype:a.componentDatatype,componentsPerAttribute:a.componentsPerAttribute,normalize:a.normalize,values:s.createTypedArray(a.componentDatatype,l)}))}return n}function N(e,t){var r,o,a,s,l=e.length;e[0].modelMatrix;var c,h,d,m=u(e[0][t].indices),f=e[0][t].primitiveType,v=L(e,t);for(r in v)if(v.hasOwnProperty(r))for(c=v[r].values,s=0,o=0;l>o;++o)for(h=e[o][t].attributes[r].values,d=h.length,a=0;d>a;++a)c[s++]=h[a];var _;if(m){var y=0;for(o=0;l>o;++o)y+=e[o][t].indices.length;var C=p.computeNumberOfVertices(new p({attributes:v,primitiveType:b.POINTS})),w=g.createTypedArray(C,y),S=0,E=0;for(o=0;l>o;++o){var x=e[o][t].indices,T=x.length;for(s=0;T>s;++s)w[S++]=E+x[s];E+=p.computeNumberOfVertices(e[o][t])}_=w}var P,A=new n,D=0;for(o=0;l>o;++o){if(P=e[o][t].boundingSphere,!u(P)){A=void 0;break}n.add(P.center,A,A)}if(u(A))for(n.divideByScalar(A,l,A),o=0;l>o;++o){P=e[o][t].boundingSphere;var M=n.magnitude(n.subtract(P.center,A,lt))+P.radius;M>D&&(D=M)}return new p({attributes:v,indices:_,primitiveType:f,boundingSphere:u(A)?new i(A,D):void 0})}function F(e){if(u(e.indices))return e;for(var t=p.computeNumberOfVertices(e),i=g.createTypedArray(t,t),r=0;t>r;++r)i[r]=r;return e.indices=i,e}function B(e){var t=p.computeNumberOfVertices(e),i=g.createTypedArray(t,3*(t-2));i[0]=1,i[1]=0,i[2]=2;for(var r=3,n=3;t>n;++n)i[r++]=n-1,i[r++]=0,i[r++]=n;return e.indices=i,e.primitiveType=b.TRIANGLES,e}function z(e){var t=p.computeNumberOfVertices(e),i=g.createTypedArray(t,3*(t-2));i[0]=0,i[1]=1,i[2]=2,t>3&&(i[3]=0,i[4]=2,i[5]=3);for(var r=6,n=3;t-1>n;n+=2)i[r++]=n,i[r++]=n-1,i[r++]=n+1,t>n+2&&(i[r++]=n,i[r++]=n+1,i[r++]=n+2);return e.indices=i,e.primitiveType=b.TRIANGLES,e}function k(e){if(u(e.indices))return e;for(var t=p.computeNumberOfVertices(e),i=g.createTypedArray(t,t),r=0;t>r;++r)i[r]=r;return e.indices=i,e}function V(e){var t=p.computeNumberOfVertices(e),i=g.createTypedArray(t,2*(t-1));i[0]=0,i[1]=1;for(var r=2,n=2;t>n;++n)i[r++]=n-1,i[r++]=n;return e.indices=i,e.primitiveType=b.LINES,e}function U(e){var t=p.computeNumberOfVertices(e),i=g.createTypedArray(t,2*t);i[0]=0,i[1]=1;for(var r=2,n=2;t>n;++n)i[r++]=n-1,i[r++]=n;return i[r++]=t-1,i[r]=0,e.indices=i,e.primitiveType=b.LINES,e}function W(e){switch(e.primitiveType){case b.TRIANGLE_FAN:return B(e);case b.TRIANGLE_STRIP:return z(e);case b.TRIANGLES:return F(e);case b.LINE_STRIP:return V(e);case b.LINE_LOOP:return U(e);case b.LINES:return k(e)}return e}function G(e,t){Math.abs(e.y)o?n>a?C.sign(e.y):C.sign(i.y):o>a?C.sign(t.y):C.sign(i.y);var s=0>r;G(e,s),G(t,s),G(i,s)}function q(e,t,i,r){n.add(e,n.multiplyByScalar(n.subtract(t,e,Ct),e.y/(e.y-t.y),Ct),i),n.clone(i,r),G(i,!0),G(r,!1)}function j(e,t,i){if(e.x>=0||t.x>=0||i.x>=0)return void 0;H(e,t,i);var r=e.y<0,n=t.y<0,o=i.y<0,a=0;a+=r?1:0,a+=n?1:0,a+=o?1:0;var s=xt.indices;1===a?(s[1]=3,s[2]=4,s[5]=6,s[7]=6,s[8]=5,r?(q(e,t,wt,Et),q(e,i,St,bt),s[0]=0,s[3]=1,s[4]=2,s[6]=1):n?(q(t,i,wt,Et),q(t,e,St,bt),s[0]=1,s[3]=2,s[4]=0,s[6]=2):o&&(q(i,e,wt,Et),q(i,t,St,bt),s[0]=2,s[3]=0,s[4]=1,s[6]=0)):2===a&&(s[2]=4,s[4]=4,s[5]=3,s[7]=5,s[8]=6,r?n?o||(q(i,e,wt,Et),q(i,t,St,bt),s[0]=0,s[1]=1,s[3]=0,s[6]=2):(q(t,i,wt,Et),q(t,e,St,bt),s[0]=2,s[1]=0,s[3]=2,s[6]=1):(q(e,t,wt,Et),q(e,i,St,bt),s[0]=1,s[1]=2,s[3]=1,s[6]=0));var l=xt.positions;return l[0]=e,l[1]=t,l[2]=i,l.length=3,(1===a||2===a)&&(l[3]=wt,l[4]=St,l[5]=Et,l[6]=bt,l.length=7),xt}function Y(e,t){var r=e.attributes;if(0===r.position.values.length)return void 0;for(var n in r)if(r.hasOwnProperty(n)&&u(r[n])&&u(r[n].values)){var o=r[n];o.values=s.createTypedArray(o.componentDatatype,o.values) +}var a=p.computeNumberOfVertices(e);return e.indices=g.createTypedArray(a,e.indices),t&&(e.boundingSphere=i.fromVertices(r.position.values)),e}function X(e){var t=e.attributes,i={};for(var r in t)if(t.hasOwnProperty(r)&&u(t[r])&&u(t[r].values)){var n=t[r];i[r]=new m({componentDatatype:n.componentDatatype,componentsPerAttribute:n.componentsPerAttribute,normalize:n.normalize,values:[]})}return new p({attributes:i,indices:[],primitiveType:e.primitiveType})}function Z(e,t,i){var r=u(e.geometry.boundingSphere);t=Y(t,r),i=Y(i,r),u(i)&&!u(t)?e.geometry=i:!u(i)&&u(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=i,e.geometry=void 0)}function J(e,i,o,a,s,l,c,h,d,p,m){if(u(l)||u(c)||u(h)||u(d)){var f=n.fromArray(s,3*e,Tt),v=n.fromArray(s,3*i,Pt),g=n.fromArray(s,3*o,At),_=t(a,f,v,g,Dt);if(u(l)){var y=n.fromArray(l,3*e,Tt),C=n.fromArray(l,3*i,Pt),w=n.fromArray(l,3*o,At);n.multiplyByScalar(y,_.x,y),n.multiplyByScalar(C,_.y,C),n.multiplyByScalar(w,_.z,w);var S=n.add(y,C,y);n.add(S,w,S),n.normalize(S,S),n.pack(S,p.normal.values,3*m)}if(u(c)){var E=n.fromArray(c,3*e,Tt),b=n.fromArray(c,3*i,Pt),x=n.fromArray(c,3*o,At);n.multiplyByScalar(E,_.x,E),n.multiplyByScalar(b,_.y,b),n.multiplyByScalar(x,_.z,x);var T=n.add(E,b,E);n.add(T,x,T),n.normalize(T,T),n.pack(T,p.binormal.values,3*m)}if(u(h)){var P=n.fromArray(h,3*e,Tt),A=n.fromArray(h,3*i,Pt),D=n.fromArray(h,3*o,At);n.multiplyByScalar(P,_.x,P),n.multiplyByScalar(A,_.y,A),n.multiplyByScalar(D,_.z,D);var M=n.add(P,A,P);n.add(M,D,M),n.normalize(M,M),n.pack(M,p.tangent.values,3*m)}if(u(d)){var I=r.fromArray(d,2*e,Mt),O=r.fromArray(d,2*i,It),R=r.fromArray(d,2*o,Ot);r.multiplyByScalar(I,_.x,I),r.multiplyByScalar(O,_.y,O),r.multiplyByScalar(R,_.z,R);var L=r.add(I,O,I);r.add(L,R,L),r.pack(L,p.st.values,2*m)}}}function Q(e,t,i,r,n,o){var a=e.position.values.length/3;if(-1!==n){var s=r[n],l=i[s];return-1===l?(i[s]=a,e.position.values.push(o.x,o.y,o.z),t.push(a),a):(t.push(l),l)}return e.position.values.push(o.x,o.y,o.z),t.push(a),a}function K(e){var t,i,r,o,a,s=e.geometry,l=s.attributes,c=l.position.values,h=u(l.normal)?l.normal.values:void 0,d=u(l.binormal)?l.binormal.values:void 0,p=u(l.tangent)?l.tangent.values:void 0,m=u(l.st)?l.st.values:void 0,f=s.indices,v=X(s),g=X(s),_=[];_.length=c.length/3;var y=[];for(y.length=c.length/3,a=0;a<_.length;++a)_[a]=-1,y[a]=-1;var C=f.length;for(a=0;C>a;a+=3){var w=f[a],S=f[a+1],E=f[a+2],b=n.fromArray(c,3*w),x=n.fromArray(c,3*S),T=n.fromArray(c,3*E),P=j(b,x,T);if(u(P)&&P.positions.length>3)for(var A=P.positions,D=P.indices,M=D.length,I=0;M>I;++I){var O=D[I],R=A[O];R.y<0?(t=g.attributes,i=g.indices,r=_):(t=v.attributes,i=v.indices,r=y),o=Q(t,i,r,f,3>O?a+O:-1,R),J(w,S,E,R,c,h,d,p,m,t,o)}else u(P)&&(b=P.positions[0],x=P.positions[1],T=P.positions[2]),b.y<0?(t=g.attributes,i=g.indices,r=_):(t=v.attributes,i=v.indices,r=y),o=Q(t,i,r,f,a,b),J(w,S,E,b,c,h,d,p,m,t,o),o=Q(t,i,r,f,a+1,x),J(w,S,E,x,c,h,d,p,m,t,o),o=Q(t,i,r,f,a+2,T),J(w,S,E,T,c,h,d,p,m,t,o)}Z(e,g,v)}function $(e){var t,i=e.geometry,r=i.attributes,o=r.position.values,a=i.indices,s=X(i),l=X(i),c=a.length,h=[];h.length=o.length/3;var d=[];for(d.length=o.length/3,t=0;tt;t+=2){var p=a[t],m=a[t+1],f=n.fromArray(o,3*p,Tt),v=n.fromArray(o,3*m,Pt);Math.abs(f.y)h;h+=4){var w=h,S=h+1,E=h+2,b=h+3,x=n.fromArray(a,3*w,zt),T=n.fromArray(a,3*S,kt),P=n.fromArray(a,3*E,Vt),A=n.fromArray(a,3*b,Ut);Math.abs(x.y)d;++d)D.prevPosition.values.push(s[d]);for(D.prevPosition.values.push(x.x,x.y,x.z,x.x,x.y,x.z),I.prevPosition.values.push(x.x,x.y,x.z,x.x,x.y,x.z),d=3*E;3*E+6>d;++d)I.prevPosition.values.push(s[d]);for(d=3*w;3*w+6>d;++d)D.nextPosition.values.push(l[d]);for(D.nextPosition.values.push(P.x,P.y,P.z,P.x,P.y,P.z),I.nextPosition.values.push(P.x,P.y,P.z,P.x,P.y,P.z),d=3*E;3*E+6>d;++d)I.nextPosition.values.push(l[d]);var F=r.fromArray(c,2*w,Ft),B=Math.abs(F.y);D.expandAndWidth.values.push(-1,B,1,B),D.expandAndWidth.values.push(-1,-B,1,-B),I.expandAndWidth.values.push(-1,B,1,B),I.expandAndWidth.values.push(-1,-B,1,-B);var z=n.magnitudeSquared(n.subtract(R,x,Ut));if(z/=n.magnitudeSquared(n.subtract(P,x,Ut)),u(f)){var k=o.fromArray(f,4*w,qt),V=o.fromArray(f,4*E,qt),U=C.lerp(k.x,V.x,z),W=C.lerp(k.y,V.y,z),G=C.lerp(k.z,V.z,z),H=C.lerp(k.w,V.w,z);for(d=4*w;4*w+8>d;++d)D.color.values.push(f[d]);for(D.color.values.push(U,W,G,H),D.color.values.push(U,W,G,H),I.color.values.push(U,W,G,H),I.color.values.push(U,W,G,H),d=4*E;4*E+8>d;++d)I.color.values.push(f[d])}if(u(m)){var q=r.fromArray(m,2*w,Ft),j=r.fromArray(m,2*(h+3),Bt),Y=C.lerp(q.x,j.x,z);for(d=2*w;2*w+4>d;++d)D.st.values.push(m[d]);for(D.st.values.push(Y,q.y),D.st.values.push(Y,j.y),I.st.values.push(Y,q.y),I.st.values.push(Y,j.y),d=2*E;2*E+4>d;++d)I.st.values.push(m[d])}p=D.position.values.length/3-4,M.push(p,p+2,p+1),M.push(p+1,p+2,p+3),p=I.position.values.length/3-4,O.push(p,p+2,p+1),O.push(p+1,p+2,p+3)}else{var J,Q;for(x.y<0?(J=g.attributes,Q=g.indices):(J=v.attributes,Q=v.indices),J.position.values.push(x.x,x.y,x.z),J.position.values.push(T.x,T.y,T.z),J.position.values.push(P.x,P.y,P.z),J.position.values.push(A.x,A.y,A.z),d=3*h;3*h+12>d;++d)J.prevPosition.values.push(s[d]),J.nextPosition.values.push(l[d]);for(d=2*h;2*h+8>d;++d)J.expandAndWidth.values.push(c[d]),u(m)&&J.st.values.push(m[d]);if(u(f))for(d=4*h;4*h+16>d;++d)J.color.values.push(f[d]);p=J.position.values.length/3-4,Q.push(p,p+2,p+1),Q.push(p+1,p+2,p+3)}}Z(e,g,v)}var tt={};tt.toWireframe=function(e){var t=e.indices;if(u(t)){switch(e.primitiveType){case b.TRIANGLES:e.indices=P(t);break;case b.TRIANGLE_STRIP:e.indices=A(t);break;case b.TRIANGLE_FAN:e.indices=D(t);break;default:throw new c("geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.")}e.primitiveType=b.LINES}return e},tt.createLineSegmentsForVectors=function(e,t,r){t=l(t,"normal"),r=l(r,1e4);for(var n=e.attributes.position.values,o=e.attributes[t].values,a=n.length,c=new Float64Array(2*a),h=0,d=0;a>d;d+=3)c[h++]=n[d],c[h++]=n[d+1],c[h++]=n[d+2],c[h++]=n[d]+o[d]*r,c[h++]=n[d+1]+o[d+1]*r,c[h++]=n[d+2]+o[d+2]*r;var f,v=e.boundingSphere;return u(v)&&(f=new i(v.center,v.radius+r)),new p({attributes:{position:new m({componentDatatype:s.DOUBLE,componentsPerAttribute:3,values:c})},primitiveType:b.LINES,boundingSphere:f})},tt.createAttributeLocations=function(e){var t,i=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","binormal","tangent","compressedAttributes"],r=e.attributes,n={},o=0,a=i.length;for(t=0;a>t;++t){var s=i[t];u(r[s])&&(n[s]=o++)}for(var l in r)r.hasOwnProperty(l)&&!u(n[l])&&(n[l]=o++);return n},tt.reorderForPreVertexCache=function(e){var t=p.computeNumberOfVertices(e),i=e.indices;if(u(i)){for(var r=new Int32Array(t),n=0;t>n;n++)r[n]=-1;for(var o,a=i,l=a.length,c=g.createTypedArray(t,l),h=0,d=0,m=0;l>h;)o=r[a[h]],-1!==o?c[d]=o:(o=a[h],r[o]=m,c[d]=m,++m),++h,++d;e.indices=c;var f=e.attributes;for(var v in f)if(f.hasOwnProperty(v)&&u(f[v])&&u(f[v].values)){for(var _=f[v],y=_.values,C=0,w=_.componentsPerAttribute,S=s.createTypedArray(_.componentDatatype,m*w);t>C;){var E=r[C];if(-1!==E)for(n=0;w>n;n++)S[w*E+n]=y[w*C+n];++C}_.values=S}}return e},tt.reorderForPostVertexCache=function(e,t){var i=e.indices;if(e.primitiveType===b.TRIANGLES&&u(i)){for(var r=i.length,n=0,o=0;r>o;o++)i[o]>n&&(n=i[o]);e.indices=x.tipsify({indices:i,maximumIndex:n,cacheSize:t})}return e},tt.fitToUnsignedShortIndices=function(e){var t=[],i=p.computeNumberOfVertices(e);if(u(e.indices)&&i>C.SIXTY_FOUR_KILOBYTES){var r,n=[],o=[],a=0,s=M(e.attributes),l=e.indices,c=l.length;e.primitiveType===b.TRIANGLES?r=3:e.primitiveType===b.LINES?r=2:e.primitiveType===b.POINTS&&(r=1);for(var h=0;c>h;h+=r){for(var d=0;r>d;++d){var m=l[h+d],f=n[m];u(f)||(f=a++,n[m]=f,I(s,e.attributes,m)),o.push(f)}a+r>C.SIXTY_FOUR_KILOBYTES&&(t.push(new p({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),n=[],o=[],a=0,s=M(e.attributes))}0!==o.length&&t.push(new p({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var it=new n,rt=new a;tt.projectTo2D=function(e,t,i,r,o){var a=e.attributes[t];o=u(o)?o:new d;for(var l=o.ellipsoid,h=a.values,p=new Float64Array(h.length),f=0,v=0;vc;++c)h.encode(o[c],nt),l[c]=nt.high,u[c]=nt.low;var d=n.componentsPerAttribute;return e.attributes[i]=new m({componentDatatype:s.FLOAT,componentsPerAttribute:d,values:l}),e.attributes[r]=new m({componentDatatype:s.FLOAT,componentsPerAttribute:d,values:u}),delete e.attributes[t],e};var ot=new n,at=new S,st=new w;tt.transformToWorldCoordinates=function(e){var t=e.modelMatrix;if(S.equals(t,S.IDENTITY))return e;var r=e.geometry.attributes;O(t,r.position),O(t,r.prevPosition),O(t,r.nextPosition),(u(r.normal)||u(r.binormal)||u(r.tangent))&&(S.inverse(t,at),S.transpose(at,at),S.getRotation(at,st),R(st,r.normal),R(st,r.binormal),R(st,r.tangent));var n=e.geometry.boundingSphere;return u(n)&&(e.geometry.boundingSphere=i.transform(n,t,n)),e.modelMatrix=S.clone(S.IDENTITY),e};var lt=new n;tt.combineInstances=function(e){for(var t=[],i=[],r=e.length,n=0;r>n;++n){var o=e[n];u(o.geometry)?t.push(o):i.push(o)}var a=[];return t.length>0&&a.push(N(t,"geometry")),i.length>0&&(a.push(N(i,"westHemisphereGeometry")),a.push(N(i,"eastHemisphereGeometry"))),a};var ut=new n,ct=new n,ht=new n,dt=new n;tt.computeNormal=function(e){for(var t=e.indices,i=e.attributes,r=i.position.values,o=i.position.values.length/3,a=t.length,l=new Array(o),u=new Array(a/3),c=new Array(a),h=0;o>h;h++)l[h]={indexOffset:0,count:0,currentCount:0};var d=0;for(h=0;a>h;h+=3){var p=t[h],f=t[h+1],v=t[h+2],g=3*p,_=3*f,y=3*v;ct.x=r[g],ct.y=r[g+1],ct.z=r[g+2],ht.x=r[_],ht.y=r[_+1],ht.z=r[_+2],dt.x=r[y],dt.y=r[y+1],dt.z=r[y+2],l[p].count++,l[f].count++,l[v].count++,n.subtract(ht,ct,ht),n.subtract(dt,ct,dt),u[d]=n.cross(ht,dt,new n),d++}var C=0;for(h=0;o>h;h++)l[h].indexOffset+=C,C+=l[h].count;d=0;var w;for(h=0;a>h;h+=3){w=l[t[h]];var S=w.indexOffset+w.currentCount;c[S]=d,w.currentCount++,w=l[t[h+1]],S=w.indexOffset+w.currentCount,c[S]=d,w.currentCount++,w=l[t[h+2]],S=w.indexOffset+w.currentCount,c[S]=d,w.currentCount++,d++}var E=new Float32Array(3*o);for(h=0;o>h;h++){var b=3*h;if(w=l[h],w.count>0){for(n.clone(n.ZERO,ut),d=0;dc;c+=3){var f=t[c],v=t[c+1],g=t[c+2];h=3*f,d=3*v,p=3*g;var _=2*f,y=2*v,C=2*g,w=i[h],S=i[h+1],E=i[h+2],b=o[_],x=o[_+1],T=o[y+1]-x,P=o[C+1]-x,A=1/((o[y]-b)*P-(o[C]-b)*T),D=(P*(i[d]-w)-T*(i[p]-w))*A,M=(P*(i[d+1]-S)-T*(i[p+1]-S))*A,I=(P*(i[d+2]-E)-T*(i[p+2]-E))*A;u[h]+=D,u[h+1]+=M,u[h+2]+=I,u[d]+=D,u[d+1]+=M,u[d+2]+=I,u[p]+=D,u[p+1]+=M,u[p+2]+=I}var O=new Float32Array(3*a),R=new Float32Array(3*a);for(c=0;a>c;c++){h=3*c,d=h+1,p=h+2;var L=n.fromArray(r,h,pt),N=n.fromArray(u,h,ft),F=n.dot(L,N);n.multiplyByScalar(L,F,mt),n.normalize(n.subtract(N,mt,N),N),R[h]=N.x,R[d]=N.y,R[p]=N.z,n.normalize(n.cross(L,N,N),N),O[h]=N.x,O[d]=N.y,O[p]=N.z}return e.attributes.tangent=new m({componentDatatype:s.FLOAT,componentsPerAttribute:3,values:R}),e.attributes.binormal=new m({componentDatatype:s.FLOAT,componentsPerAttribute:3,values:O}),e};var vt=new r,gt=new n,_t=new n,yt=new n;tt.compressVertices=function(t){var i=t.attributes.normal,o=t.attributes.st;if(!u(i)&&!u(o))return t;var a,l,c,h,d=t.attributes.tangent,p=t.attributes.binormal;u(i)&&(a=i.values),u(o)&&(l=o.values),u(d)&&(c=d.values),p&&(h=p.values);var f=u(a)?a.length:l.length,v=u(a)?3:2,g=f/v,_=g,y=u(l)&&u(a)?2:1;y+=u(c)||u(h)?1:0,_*=y;for(var C=new Float32Array(_),w=0,S=0;g>S;++S){u(l)&&(r.fromArray(l,2*S,vt),C[w++]=e.compressTextureCoordinates(vt));var E=3*S;u(a)&&u(c)&&u(h)?(n.fromArray(a,E,gt),n.fromArray(c,E,_t),n.fromArray(h,E,yt),e.octPack(gt,_t,yt,vt),C[w++]=vt.x,C[w++]=vt.y):(u(a)&&(n.fromArray(a,E,gt),C[w++]=e.octEncodeFloat(gt)),u(c)&&(n.fromArray(c,E,gt),C[w++]=e.octEncodeFloat(gt)),u(h)&&(n.fromArray(h,E,gt),C[w++]=e.octEncodeFloat(gt)))}return t.attributes.compressedAttributes=new m({componentDatatype:s.FLOAT,componentsPerAttribute:y,values:C}),u(a)&&delete t.attributes.normal,u(l)&&delete t.attributes.st,u(c)&&delete t.attributes.tangent,u(h)&&delete t.attributes.binormal,t};var Ct=new n,wt=new n,St=new n,Et=new n,bt=new n,xt={positions:new Array(7),indices:new Array(9)},Tt=new n,Pt=new n,At=new n,Dt=new n,Mt=new r,It=new r,Ot=new r,Rt=E.fromPointNormal(n.ZERO,n.UNIT_Y),Lt=new n,Nt=new n,Ft=new r,Bt=new r,zt=new n,kt=new n,Vt=new n,Ut=new n,Wt=new n,Gt=new n,Ht=new n,qt=new o;return new o,tt.splitLongitude=function(e){var t=e.geometry,r=t.boundingSphere;if(u(r)){var n=r.center.x-r.radius;if(n>0||i.intersectPlane(r,E.ORIGIN_ZX_PLANE)!==_.INTERSECTING)return e}if(t.geometryType!==v.NONE)switch(t.geometryType){case v.POLYLINES:et(e);break;case v.TRIANGLES:K(e);break;case v.LINES:$(e)}else W(t),t.primitiveType===b.TRIANGLES?K(e):t.primitiveType===b.LINES&&$(e);return e},tt}),i("Core/EllipseGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EllipseGeometryLibrary","./Ellipsoid","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryAttributes","./GeometryInstance","./GeometryPipeline","./IndexDatatype","./Math","./Matrix3","./PrimitiveType","./Quaternion","./VertexFormat"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w){"use strict";function S(e,r,o){var a=r.vertexFormat,s=r.center,u=r.semiMajorAxis,h=r.semiMinorAxis,m=r.ellipsoid,f=r.stRotation,v=o?2*(e.length/3):e.length/3,g=a.st?new Float32Array(2*v):void 0,y=a.normal?new Float32Array(3*v):void 0,w=a.tangent?new Float32Array(3*v):void 0,S=a.binormal?new Float32Array(3*v):void 0,E=0,b=N,x=F,T=B,P=new c(m),I=P.project(m.cartesianToCartographic(s,z),k),W=m.scaleToGeodeticSurface(s,A);m.geodeticSurfaceNormal(W,W);for(var G=C.fromAxisAngle(W,f,L),H=_.fromQuaternion(G,R),q=t.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,V),j=t.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,U),Y=e.length,X=o?Y:0,Z=2*(X/3),J=0;Y>J;J+=3){var Q=J+1,K=J+2,$=i.fromArray(e,J,A);if(a.st){var et=_.multiplyByVector(H,$,D),tt=P.project(m.cartesianToCartographic(et,z),M);i.subtract(tt,I,tt),O.x=(tt.x+u)/(2*u),O.y=(tt.y+h)/(2*h),q.x=Math.min(O.x,q.x),q.y=Math.min(O.y,q.y),j.x=Math.max(O.x,j.x),j.y=Math.max(O.y,j.y),o&&(g[E+Z]=O.x,g[E+1+Z]=O.y),g[E++]=O.x,g[E++]=O.y}b=m.geodeticSurfaceNormal($,b),(a.normal||a.tangent||a.binormal)&&((a.tangent||a.binormal)&&(x=i.cross(i.UNIT_Z,b,x),_.multiplyByVector(H,x,x)),a.normal&&(y[J]=b.x,y[Q]=b.y,y[K]=b.z,o&&(y[J+X]=-b.x,y[Q+X]=-b.y,y[K+X]=-b.z)),a.tangent&&(w[J]=x.x,w[Q]=x.y,w[K]=x.z,o&&(w[J+X]=-x.x,w[Q+X]=-x.y,w[K+X]=-x.z)),a.binormal&&(T=i.cross(b,x,T),S[J]=T.x,S[Q]=T.y,S[K]=T.z,o&&(S[J+X]=T.x,S[Q+X]=T.y,S[K+X]=T.z)))}if(a.st){Y=g.length;for(var it=0;Y>it;it+=2)g[it]=(g[it]-q.x)/(j.x-q.x),g[it+1]=(g[it+1]-q.y)/(j.y-q.y)}var rt=new p;if(a.position){var nt=l.raisePositionsToHeight(e,r,o);rt.position=new d({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:nt})}return a.st&&(rt.st=new d({componentDatatype:n.FLOAT,componentsPerAttribute:2,values:g})),a.normal&&(rt.normal=new d({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:y})),a.tangent&&(rt.tangent=new d({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:w})),a.binormal&&(rt.binormal=new d({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:S})),rt}function E(e){var t,i,r,n,o,a=new Array(2*e*(e+1)),s=0;for(n=1;e>n;++n){for(r=n*(n+1),t=(n-1)*n,a[s++]=r++,a[s++]=t,a[s++]=r,i=2*n,o=0;i-1>o;++o)a[s++]=r,a[s++]=t++,a[s++]=t,a[s++]=r++,a[s++]=t,a[s++]=r;a[s++]=r++,a[s++]=t,a[s++]=r}for(i=2*e,++r,++t,n=0;i-1>n;++n)a[s++]=r,a[s++]=t++,a[s++]=t,a[s++]=r++,a[s++]=t,a[s++]=r;for(++t,++r,n=e-1;n>0;--n){for(a[s++]=t++,a[s++]=t,a[s++]=r,i=2*n,o=0;i-1>o;++o)a[s++]=r,a[s++]=t++,a[s++]=t,a[s++]=r++,a[s++]=t,a[s++]=r;a[s++]=t++,a[s++]=t++,a[s++]=r++}return a}function b(t){var r=t.center;W=i.multiplyByScalar(t.ellipsoid.geodeticSurfaceNormal(r,W),t.height,W),W=i.add(r,W,W);var n=new e(W,t.semiMajorAxis),o=l.computeEllipsePositions(t,!0,!1),a=o.positions,s=o.numPts,u=S(a,t,!1),c=E(s);return c=v.createTypedArray(a.length/3,c),{boundingSphere:n,attributes:u,indices:c}}function x(e,r){var o=r.vertexFormat,a=r.center,s=r.semiMajorAxis,l=r.semiMinorAxis,u=r.ellipsoid,h=r.height,m=r.extrudedHeight,f=r.stRotation,v=2*(e.length/3),g=new Float64Array(3*v),y=o.st?new Float32Array(2*v):void 0,w=o.normal?new Float32Array(3*v):void 0,S=o.tangent?new Float32Array(3*v):void 0,E=o.binormal?new Float32Array(3*v):void 0,b=0,x=N,T=F,P=B,W=new c(u),G=W.project(u.cartesianToCartographic(a,z),k),H=u.scaleToGeodeticSurface(a,A);u.geodeticSurfaceNormal(H,H);for(var q=C.fromAxisAngle(H,f,L),j=_.fromQuaternion(q,R),Y=t.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,V),X=t.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,U),Z=e.length,J=2*(Z/3),Q=0;Z>Q;Q+=3){var K,$=Q+1,et=Q+2,tt=i.fromArray(e,Q,A);if(o.st){var it=_.multiplyByVector(j,tt,D),rt=W.project(u.cartesianToCartographic(it,z),M);i.subtract(rt,G,rt),O.x=(rt.x+s)/(2*s),O.y=(rt.y+l)/(2*l),Y.x=Math.min(O.x,Y.x),Y.y=Math.min(O.y,Y.y),X.x=Math.max(O.x,X.x),X.y=Math.max(O.y,X.y),y[b+J]=O.x,y[b+1+J]=O.y,y[b++]=O.x,y[b++]=O.y}tt=u.scaleToGeodeticSurface(tt,tt),K=i.clone(tt,D),x=u.geodeticSurfaceNormal(tt,x);var nt=i.multiplyByScalar(x,h,I);if(tt=i.add(tt,nt,tt),nt=i.multiplyByScalar(x,m,nt),K=i.add(K,nt,K),o.position&&(g[Q+Z]=K.x,g[$+Z]=K.y,g[et+Z]=K.z,g[Q]=tt.x,g[$]=tt.y,g[et]=tt.z),o.normal||o.tangent||o.binormal){P=i.clone(x,P);var ot=i.fromArray(e,(Q+3)%Z,I);i.subtract(ot,tt,ot);var at=i.subtract(K,tt,M);x=i.normalize(i.cross(at,ot,x),x),o.normal&&(w[Q]=x.x,w[$]=x.y,w[et]=x.z,w[Q+Z]=x.x,w[$+Z]=x.y,w[et+Z]=x.z),o.tangent&&(T=i.normalize(i.cross(P,x,T),T),S[Q]=T.x,S[$]=T.y,S[et]=T.z,S[Q+Z]=T.x,S[Q+1+Z]=T.y,S[Q+2+Z]=T.z),o.binormal&&(E[Q]=P.x,E[$]=P.y,E[et]=P.z,E[Q+Z]=P.x,E[$+Z]=P.y,E[et+Z]=P.z)}}if(o.st){Z=y.length;for(var st=0;Z>st;st+=2)y[st]=(y[st]-Y.x)/(X.x-Y.x),y[st+1]=(y[st+1]-Y.y)/(X.y-Y.y)}var lt=new p;return o.position&&(lt.position=new d({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:g})),o.st&&(lt.st=new d({componentDatatype:n.FLOAT,componentsPerAttribute:2,values:y})),o.normal&&(lt.normal=new d({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:w})),o.tangent&&(lt.tangent=new d({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:S})),o.binormal&&(lt.binormal=new d({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:E})),lt}function T(e){for(var t=e.length/3,i=v.createTypedArray(t,6*t),r=0,n=0;t>n;n++){var o=n,a=n+t,s=(o+1)%t,l=s+t;i[r++]=o,i[r++]=a,i[r++]=s,i[r++]=s,i[r++]=a,i[r++]=l}return i}function P(t){var r=t.center,n=t.ellipsoid,o=t.semiMajorAxis,a=i.multiplyByScalar(n.geodeticSurfaceNormal(r,A),t.height,A);G.center=i.add(r,a,G.center),G.radius=o,a=i.multiplyByScalar(n.geodeticSurfaceNormal(r,a),t.extrudedHeight,a),H.center=i.add(r,a,H.center),H.radius=o;var s=l.computeEllipsePositions(t,!0,!0),u=s.positions,c=s.numPts,d=s.outerPositions,p=e.union(G,H),g=S(u,t,!0),_=E(c),C=_.length;_.length=2*C;for(var w=u.length/3,b=0;C>b;b+=3)_[b+C]=_[b+2]+w,_[b+1+C]=_[b+1]+w,_[b+2+C]=_[b]+w;var P=v.createTypedArray(2*w/3,_),D=new h({attributes:g,indices:P,primitiveType:y.TRIANGLES}),M=x(d,t);_=T(d);var I=v.createTypedArray(2*d.length/3,_),O=new h({attributes:M,indices:I,primitiveType:y.TRIANGLES}),R=f.combineInstances([new m({geometry:D}),new m({geometry:O})]);return{boundingSphere:p,attributes:R[0].attributes,indices:R[0].indices}}var A=new i,D=new i,M=new i,I=new i,O=new t,R=new _,L=new C,N=new i,F=new i,B=new i,z=new r,k=new i,V=new t,U=new t,W=new i,G=new e,H=new e,q=function(e){e=o(e,o.EMPTY_OBJECT);var t=e.center,r=o(e.ellipsoid,u.WGS84),n=e.semiMajorAxis,s=e.semiMinorAxis,l=o(e.granularity,g.RADIANS_PER_DEGREE),c=o(e.height,0),h=e.extrudedHeight,d=a(h)&&Math.abs(c-h)>1,p=o(e.vertexFormat,w.DEFAULT);this._center=i.clone(t),this._semiMajorAxis=n,this._semiMinorAxis=s,this._ellipsoid=u.clone(r),this._rotation=o(e.rotation,0),this._stRotation=o(e.stRotation,0),this._height=c,this._granularity=l,this._vertexFormat=w.clone(p),this._extrudedHeight=o(h,c),this._extrude=d,this._workerName="createEllipseGeometry"};q.packedLength=i.packedLength+u.packedLength+w.packedLength+8,q.pack=function(e,t,r){r=o(r,0),i.pack(e._center,t,r),r+=i.packedLength,u.pack(e._ellipsoid,t,r),r+=u.packedLength,w.pack(e._vertexFormat,t,r),r+=w.packedLength,t[r++]=e._semiMajorAxis,t[r++]=e._semiMinorAxis,t[r++]=e._rotation,t[r++]=e._stRotation,t[r++]=e._height,t[r++]=e._granularity,t[r++]=e._extrudedHeight,t[r]=e._extrude?1:0};var j=new i,Y=new u,X=new w,Z={center:j,ellipsoid:Y,vertexFormat:X,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0};return q.unpack=function(e,t,r){t=o(t,0);var n=i.unpack(e,t,j);t+=i.packedLength;var s=u.unpack(e,t,Y);t+=u.packedLength;var l=w.unpack(e,t,X);t+=w.packedLength;var c=e[t++],h=e[t++],d=e[t++],p=e[t++],m=e[t++],f=e[t++],v=e[t++],g=1===e[t];return a(r)?(r._center=i.clone(n,r._center),r._ellipsoid=u.clone(s,r._ellipsoid),r._vertexFormat=w.clone(l,r._vertexFormat),r._semiMajorAxis=c,r._semiMinorAxis=h,r._rotation=d,r._stRotation=p,r._height=m,r._granularity=f,r._extrudedHeight=v,r._extrude=g,r):(Z.height=m,Z.extrudedHeight=v,Z.granularity=f,Z.stRotation=p,Z.rotation=d,Z.semiMajorAxis=c,Z.semiMinorAxis=h,new q(Z))},q.createGeometry=function(e){e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);var t,i={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:e._height,extrudedHeight:e._extrudedHeight,granularity:e._granularity,vertexFormat:e._vertexFormat,stRotation:e._stRotation};return e._extrude?(i.extrudedHeight=Math.min(e._extrudedHeight,e._height),i.height=Math.max(e._extrudedHeight,e._height),t=P(i)):t=b(i),new h({attributes:t.attributes,indices:t.indices,primitiveType:y.TRIANGLES,boundingSphere:t.boundingSphere})},q}),i("Core/CircleGeometry",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./EllipseGeometry","./Ellipsoid","./VertexFormat"],function(e,t,i,r,n,o,a){"use strict";var s=function(e){e=t(e,t.EMPTY_OBJECT);var i=e.radius,r={center:e.center,semiMajorAxis:i,semiMinorAxis:i,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation};this._ellipseGeometry=new n(r),this._workerName="createCircleGeometry"};s.packedLength=n.packedLength,s.pack=function(e,t,i){n.pack(e._ellipseGeometry,t,i)};var l=new n({center:new e,semiMajorAxis:1,semiMinorAxis:1}),u={center:new e,radius:void 0,ellipsoid:o.clone(o.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new a,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};return s.unpack=function(t,r,c){var h=n.unpack(t,r,l);return u.center=e.clone(h._center,u.center),u.ellipsoid=o.clone(h._ellipsoid,u.ellipsoid),u.height=h._height,u.extrudedHeight=h._extrudedHeight,u.granularity=h._granularity,u.vertexFormat=a.clone(h._vertexFormat,u.vertexFormat),u.stRotation=h._stRotation,i(c)?(u.semiMajorAxis=h._semiMajorAxis,u.semiMinorAxis=h._semiMinorAxis,c._ellipseGeometry=new n(u),c):(u.radius=h._semiMajorAxis,new s(u))},s.createGeometry=function(e){return n.createGeometry(e._ellipseGeometry)},s}),i("Core/EllipseOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EllipseGeometryLibrary","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p){"use strict";function m(r){var n=r.center;g=t.multiplyByScalar(r.ellipsoid.geodeticSurfaceNormal(n,g),r.height,g),g=t.add(n,g,g);for(var o=new e(g,r.semiMajorAxis),s=a.computeEllipsePositions(r,!1,!0).outerPositions,l=new c({position:new u({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:a.raisePositionsToHeight(s,r,!1)})}),d=s.length/3,p=h.createTypedArray(d,2*d),m=0,f=0;d>f;++f)p[m++]=f,p[m++]=(f+1)%d;return{boundingSphere:o,attributes:l,indices:p}}function f(n){var o=r(n.numberOfVerticalLines,16);o=Math.max(o,0);var s=n.center,l=n.ellipsoid,d=n.semiMajorAxis,p=t.multiplyByScalar(l.geodeticSurfaceNormal(s,v),n.height,v);_.center=t.add(s,p,_.center),_.radius=d,p=t.multiplyByScalar(l.geodeticSurfaceNormal(s,p),n.extrudedHeight,p),y.center=t.add(s,p,y.center),y.radius=d;var m=a.computeEllipsePositions(n,!1,!0).outerPositions,f=new c({position:new u({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:a.raisePositionsToHeight(m,n,!0)})});m=f.position.values;var g=e.union(_,y),C=m.length/3,w=h.createTypedArray(C,2*C+2*o);C/=2;var S,E=0;for(S=0;C>S;++S)w[E++]=S,w[E++]=(S+1)%C,w[E++]=S+C,w[E++]=(S+1)%C+C;var b;if(o>0){var x=Math.min(o,C);b=Math.round(C/x)}var T=Math.min(b*o,C);if(o>0)for(S=0;T>S;S+=b)w[E++]=S,w[E++]=S+C;return{boundingSphere:g,attributes:f,indices:w}}var v=new t,g=new t,_=new e,y=new e,C=function(e){e=r(e,r.EMPTY_OBJECT);var i=e.center,o=r(e.ellipsoid,s.WGS84),a=e.semiMajorAxis,l=e.semiMinorAxis,u=r(e.granularity,d.RADIANS_PER_DEGREE),c=r(e.height,0),h=e.extrudedHeight,p=n(h)&&Math.abs(c-h)>1;this._center=t.clone(i),this._semiMajorAxis=a,this._semiMinorAxis=l,this._ellipsoid=s.clone(o),this._rotation=r(e.rotation,0),this._height=c,this._granularity=u,this._extrudedHeight=h,this._extrude=p,this._numberOfVerticalLines=Math.max(r(e.numberOfVerticalLines,16),0),this._workerName="createEllipseOutlineGeometry"};C.packedLength=t.packedLength+s.packedLength+9,C.pack=function(e,i,o){o=r(o,0),t.pack(e._center,i,o),o+=t.packedLength,s.pack(e._ellipsoid,i,o),o+=s.packedLength,i[o++]=e._semiMajorAxis,i[o++]=e._semiMinorAxis,i[o++]=e._rotation,i[o++]=e._height,i[o++]=e._granularity,i[o++]=n(e._extrudedHeight)?1:0,i[o++]=r(e._extrudedHeight,0),i[o++]=e._extrude?1:0,i[o]=e._numberOfVerticalLines};var w=new t,S=new s,E={center:w,ellipsoid:S,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0};return C.unpack=function(e,i,o){i=r(i,0);var a=t.unpack(e,i,w);i+=t.packedLength;var l=s.unpack(e,i,S);i+=s.packedLength;var u=e[i++],c=e[i++],h=e[i++],d=e[i++],p=e[i++],m=e[i++],f=e[i++],v=1===e[i++],g=e[i];return n(o)?(o._center=t.clone(a,o._center),o._ellipsoid=s.clone(l,o._ellipsoid),o._semiMajorAxis=u,o._semiMinorAxis=c,o._rotation=h,o._height=d,o._granularity=p,o._extrudedHeight=m?f:void 0,o._extrude=v,o._numberOfVerticalLines=g,o):(E.height=d,E.extrudedHeight=m?f:void 0,E.granularity=p,E.rotation=h,E.semiMajorAxis=u,E.semiMinorAxis=c,E.numberOfVerticalLines=g,new C(E))},C.createGeometry=function(e){e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);var t,i={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:e._height,extrudedHeight:e._extrudedHeight,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines};return e._extrude?(i.extrudedHeight=Math.min(e._extrudedHeight,e._height),i.height=Math.max(e._extrudedHeight,e._height),t=f(i)):t=m(i),new l({attributes:t.attributes,indices:t.indices,primitiveType:p.LINES,boundingSphere:t.boundingSphere})},C}),i("Core/CircleOutlineGeometry",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./EllipseOutlineGeometry","./Ellipsoid"],function(e,t,i,r,n,o){"use strict";var a=function(e){e=t(e,t.EMPTY_OBJECT);var i=e.radius,r={center:e.center,semiMajorAxis:i,semiMinorAxis:i,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new n(r),this._workerName="createCircleOutlineGeometry"};a.packedLength=n.packedLength,a.pack=function(e,t,i){n.pack(e._ellipseGeometry,t,i)};var s=new n({center:new e,semiMajorAxis:1,semiMinorAxis:1}),l={center:new e,radius:void 0,ellipsoid:o.clone(o.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};return a.unpack=function(t,r,u){var c=n.unpack(t,r,s);return l.center=e.clone(c._center,l.center),l.ellipsoid=o.clone(c._ellipsoid,l.ellipsoid),l.height=c._height,l.extrudedHeight=c._extrudedHeight,l.granularity=c._granularity,l.numberOfVerticalLines=c._numberOfVerticalLines,i(u)?(l.semiMajorAxis=c._semiMajorAxis,l.semiMinorAxis=c._semiMinorAxis,u._ellipseGeometry=new n(l),u):(l.radius=c._semiMajorAxis,new a(l))},a.createGeometry=function(e){return n.createGeometry(e._ellipseGeometry)},a}),i("Core/ClockRange",["./freezeObject"],function(e){"use strict";var t={UNBOUNDED:0,CLAMPED:1,LOOP_STOP:2};return e(t)}),i("Core/ClockStep",["./freezeObject"],function(e){"use strict";var t={TICK_DEPENDENT:0,SYSTEM_CLOCK_MULTIPLIER:1,SYSTEM_CLOCK:2};return e(t)}),i("Core/getTimestamp",["./defined"],function(e){"use strict";var t;return t="undefined"!=typeof performance&&e(performance.now)?function(){return performance.now()}:function(){return Date.now()}}),i("Core/Clock",["./ClockRange","./ClockStep","./defaultValue","./defined","./DeveloperError","./Event","./getTimestamp","./JulianDate"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(n){n=i(n,i.EMPTY_OBJECT);var l=n.startTime,u=!r(l),c=n.stopTime,h=!r(c),d=n.currentTime,p=!r(d); +u&&h&&p?(d=s.now(),l=s.clone(d),c=s.addDays(d,1,new s)):u&&h?(l=s.clone(d),c=s.addDays(d,1,new s)):u&&p?(l=s.addDays(c,-1,new s),d=s.clone(l)):p&&h?(d=s.clone(l),c=s.addDays(l,1,new s)):p?d=s.clone(l):h?c=s.addDays(d,1,new s):u&&(l=s.clone(d)),this.startTime=l,this.stopTime=c,this.currentTime=d,this.multiplier=i(n.multiplier,1),this.clockStep=i(n.clockStep,t.SYSTEM_CLOCK_MULTIPLIER),this.clockRange=i(n.clockRange,e.UNBOUNDED),this.canAnimate=i(n.canAnimate,!0),this.shouldAnimate=i(n.shouldAnimate,!0),this.onTick=new o,this._lastSystemTime=a()};return l.prototype.tick=function(){var i=a(),r=s.clone(this.currentTime),n=this.startTime,o=this.stopTime,l=this.multiplier;if(this.canAnimate&&this.shouldAnimate)if(this.clockStep===t.SYSTEM_CLOCK)r=s.now(r);else{if(this.clockStep===t.TICK_DEPENDENT)r=s.addSeconds(r,l,r);else{var u=i-this._lastSystemTime;r=s.addSeconds(r,l*(u/1e3),r)}if(this.clockRange===e.CLAMPED)s.lessThan(r,n)?r=s.clone(n,r):s.greaterThan(r,o)&&(r=s.clone(o,r));else if(this.clockRange===e.LOOP_STOP)for(s.lessThan(r,n)&&(r=s.clone(n,r));s.greaterThan(r,o);)r=s.addSeconds(n,s.secondsDifference(r,o),r)}return this.currentTime=r,this._lastSystemTime=i,this.onTick.raiseEvent(this),r},l}),i("Core/Color",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math"],function(e,t,i,r,n,o){"use strict";function a(e,t,i){return 0>i&&(i+=1),i>1&&(i-=1),1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var s=function(t,i,r,n){this.red=e(t,1),this.green=e(i,1),this.blue=e(r,1),this.alpha=e(n,1)};s.fromCartesian4=function(e,i){return t(i)?(i.red=e.x,i.green=e.y,i.blue=e.z,i.alpha=e.w,i):new s(e.x,e.y,e.z,e.w)},s.fromBytes=function(i,r,n,o,a){return i=s.byteToFloat(e(i,255)),r=s.byteToFloat(e(r,255)),n=s.byteToFloat(e(n,255)),o=s.byteToFloat(e(o,255)),t(a)?(a.red=i,a.green=r,a.blue=n,a.alpha=o,a):new s(i,r,n,o)},s.fromAlpha=function(e,i,r){return t(r)?(r.red=e.red,r.green=e.green,r.blue=e.blue,r.alpha=i,r):new s(e.red,e.green,e.blue,i)};var l,u,c;r.supportsTypedArrays()&&(l=new ArrayBuffer(4),u=new Uint32Array(l),c=new Uint8Array(l)),s.fromRgba=function(e){return u[0]=e,s.fromBytes(c[0],c[1],c[2],c[3])},s.fromHsl=function(t,i,r,n){t=e(t,0)%1,i=e(i,0),r=e(r,0),n=e(n,1);var o=r,l=r,u=r;if(0!==i){var c;c=.5>r?r*(1+i):r+i-r*i;var h=2*r-c;o=a(h,c,t+1/3),l=a(h,c,t),u=a(h,c,t-1/3)}return new s(o,l,u,n)},s.fromRandom=function(i,r){i=e(i,e.EMPTY_OBJECT);var n=i.red;if(!t(n)){var a=e(i.minimumRed,0),l=e(i.maximumRed,1);n=a+o.nextRandomNumber()*(l-a)}var u=i.green;if(!t(u)){var c=e(i.minimumGreen,0),h=e(i.maximumGreen,1);u=c+o.nextRandomNumber()*(h-c)}var d=i.blue;if(!t(d)){var p=e(i.minimumBlue,0),m=e(i.maximumBlue,1);d=p+o.nextRandomNumber()*(m-p)}var f=i.alpha;if(!t(f)){var v=e(i.minimumAlpha,0),g=e(i.maximumAlpha,1);f=v+o.nextRandomNumber()*(g-v)}return t(r)?(r.red=n,r.green=u,r.blue=d,r.alpha=f,r):new s(n,u,d,f)};var h=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i,d=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i,p=/^rgba?\(\s*([0-9.]+%?)\s*,\s*([0-9.]+%?)\s*,\s*([0-9.]+%?)(?:\s*,\s*([0-9.]+))?\s*\)$/i,m=/^hsla?\(\s*([0-9.]+)\s*,\s*([0-9.]+%)\s*,\s*([0-9.]+%)(?:\s*,\s*([0-9.]+))?\s*\)$/i;return s.fromCssColorString=function(i){var r=s[i.toUpperCase()];if(t(r))return s.clone(r);var n=h.exec(i);return null!==n?new s(parseInt(n[1],16)/15,parseInt(n[2],16)/15,parseInt(n[3],16)/15):(n=d.exec(i),null!==n?new s(parseInt(n[1],16)/255,parseInt(n[2],16)/255,parseInt(n[3],16)/255):(n=p.exec(i),null!==n?new s(parseFloat(n[1])/("%"===n[1].substr(-1)?100:255),parseFloat(n[2])/("%"===n[2].substr(-1)?100:255),parseFloat(n[3])/("%"===n[3].substr(-1)?100:255),parseFloat(e(n[4],"1.0"))):(n=m.exec(i),null!==n?s.fromHsl(parseFloat(n[1])/360,parseFloat(n[2])/100,parseFloat(n[3])/100,parseFloat(e(n[4],"1.0"))):void 0)))},s.packedLength=4,s.pack=function(t,i,r){r=e(r,0),i[r++]=t.red,i[r++]=t.green,i[r++]=t.blue,i[r]=t.alpha},s.unpack=function(i,r,n){return r=e(r,0),t(n)||(n=new s),n.red=i[r++],n.green=i[r++],n.blue=i[r++],n.alpha=i[r],n},s.byteToFloat=function(e){return e/255},s.floatToByte=function(e){return 1===e?255:0|256*e},s.clone=function(e,i){return t(e)?t(i)?(i.red=e.red,i.green=e.green,i.blue=e.blue,i.alpha=e.alpha,i):new s(e.red,e.green,e.blue,e.alpha):void 0},s.equals=function(e,i){return e===i||t(e)&&t(i)&&e.red===i.red&&e.green===i.green&&e.blue===i.blue&&e.alpha===i.alpha},s.equalsArray=function(e,t,i){return e.red===t[i]&&e.green===t[i+1]&&e.blue===t[i+2]&&e.alpha===t[i+3]},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,i){return this===e||t(e)&&Math.abs(this.red-e.red)<=i&&Math.abs(this.green-e.green)<=i&&Math.abs(this.blue-e.blue)<=i&&Math.abs(this.alpha-e.alpha)<=i},s.prototype.toString=function(){return"("+this.red+", "+this.green+", "+this.blue+", "+this.alpha+")"},s.prototype.toCssColorString=function(){var e=s.floatToByte(this.red),t=s.floatToByte(this.green),i=s.floatToByte(this.blue);return 1===this.alpha?"rgb("+e+","+t+","+i+")":"rgba("+e+","+t+","+i+","+this.alpha+")"},s.prototype.toBytes=function(e){var i=s.floatToByte(this.red),r=s.floatToByte(this.green),n=s.floatToByte(this.blue),o=s.floatToByte(this.alpha);return t(e)?(e[0]=i,e[1]=r,e[2]=n,e[3]=o,e):[i,r,n,o]},s.prototype.toRgba=function(){return c[0]=s.floatToByte(this.red),c[1]=s.floatToByte(this.green),c[2]=s.floatToByte(this.blue),c[3]=s.floatToByte(this.alpha),u[0]},s.prototype.brighten=function(e,t){return e=1-e,t.red=1-(1-this.red)*e,t.green=1-(1-this.green)*e,t.blue=1-(1-this.blue)*e,t.alpha=this.alpha,t},s.prototype.darken=function(e,t){return e=1-e,t.red=this.red*e,t.green=this.green*e,t.blue=this.blue*e,t.alpha=this.alpha,t},s.prototype.withAlpha=function(e,t){return s.fromAlpha(this,e,t)},s.ALICEBLUE=n(s.fromCssColorString("#F0F8FF")),s.ANTIQUEWHITE=n(s.fromCssColorString("#FAEBD7")),s.AQUA=n(s.fromCssColorString("#00FFFF")),s.AQUAMARINE=n(s.fromCssColorString("#7FFFD4")),s.AZURE=n(s.fromCssColorString("#F0FFFF")),s.BEIGE=n(s.fromCssColorString("#F5F5DC")),s.BISQUE=n(s.fromCssColorString("#FFE4C4")),s.BLACK=n(s.fromCssColorString("#000000")),s.BLANCHEDALMOND=n(s.fromCssColorString("#FFEBCD")),s.BLUE=n(s.fromCssColorString("#0000FF")),s.BLUEVIOLET=n(s.fromCssColorString("#8A2BE2")),s.BROWN=n(s.fromCssColorString("#A52A2A")),s.BURLYWOOD=n(s.fromCssColorString("#DEB887")),s.CADETBLUE=n(s.fromCssColorString("#5F9EA0")),s.CHARTREUSE=n(s.fromCssColorString("#7FFF00")),s.CHOCOLATE=n(s.fromCssColorString("#D2691E")),s.CORAL=n(s.fromCssColorString("#FF7F50")),s.CORNFLOWERBLUE=n(s.fromCssColorString("#6495ED")),s.CORNSILK=n(s.fromCssColorString("#FFF8DC")),s.CRIMSON=n(s.fromCssColorString("#DC143C")),s.CYAN=n(s.fromCssColorString("#00FFFF")),s.DARKBLUE=n(s.fromCssColorString("#00008B")),s.DARKCYAN=n(s.fromCssColorString("#008B8B")),s.DARKGOLDENROD=n(s.fromCssColorString("#B8860B")),s.DARKGRAY=n(s.fromCssColorString("#A9A9A9")),s.DARKGREEN=n(s.fromCssColorString("#006400")),s.DARKGREY=s.DARKGRAY,s.DARKKHAKI=n(s.fromCssColorString("#BDB76B")),s.DARKMAGENTA=n(s.fromCssColorString("#8B008B")),s.DARKOLIVEGREEN=n(s.fromCssColorString("#556B2F")),s.DARKORANGE=n(s.fromCssColorString("#FF8C00")),s.DARKORCHID=n(s.fromCssColorString("#9932CC")),s.DARKRED=n(s.fromCssColorString("#8B0000")),s.DARKSALMON=n(s.fromCssColorString("#E9967A")),s.DARKSEAGREEN=n(s.fromCssColorString("#8FBC8F")),s.DARKSLATEBLUE=n(s.fromCssColorString("#483D8B")),s.DARKSLATEGRAY=n(s.fromCssColorString("#2F4F4F")),s.DARKSLATEGREY=s.DARKSLATEGRAY,s.DARKTURQUOISE=n(s.fromCssColorString("#00CED1")),s.DARKVIOLET=n(s.fromCssColorString("#9400D3")),s.DEEPPINK=n(s.fromCssColorString("#FF1493")),s.DEEPSKYBLUE=n(s.fromCssColorString("#00BFFF")),s.DIMGRAY=n(s.fromCssColorString("#696969")),s.DIMGREY=s.DIMGRAY,s.DODGERBLUE=n(s.fromCssColorString("#1E90FF")),s.FIREBRICK=n(s.fromCssColorString("#B22222")),s.FLORALWHITE=n(s.fromCssColorString("#FFFAF0")),s.FORESTGREEN=n(s.fromCssColorString("#228B22")),s.FUSCHIA=n(s.fromCssColorString("#FF00FF")),s.GAINSBORO=n(s.fromCssColorString("#DCDCDC")),s.GHOSTWHITE=n(s.fromCssColorString("#F8F8FF")),s.GOLD=n(s.fromCssColorString("#FFD700")),s.GOLDENROD=n(s.fromCssColorString("#DAA520")),s.GRAY=n(s.fromCssColorString("#808080")),s.GREEN=n(s.fromCssColorString("#008000")),s.GREENYELLOW=n(s.fromCssColorString("#ADFF2F")),s.GREY=s.GRAY,s.HONEYDEW=n(s.fromCssColorString("#F0FFF0")),s.HOTPINK=n(s.fromCssColorString("#FF69B4")),s.INDIANRED=n(s.fromCssColorString("#CD5C5C")),s.INDIGO=n(s.fromCssColorString("#4B0082")),s.IVORY=n(s.fromCssColorString("#FFFFF0")),s.KHAKI=n(s.fromCssColorString("#F0E68C")),s.LAVENDER=n(s.fromCssColorString("#E6E6FA")),s.LAVENDAR_BLUSH=n(s.fromCssColorString("#FFF0F5")),s.LAWNGREEN=n(s.fromCssColorString("#7CFC00")),s.LEMONCHIFFON=n(s.fromCssColorString("#FFFACD")),s.LIGHTBLUE=n(s.fromCssColorString("#ADD8E6")),s.LIGHTCORAL=n(s.fromCssColorString("#F08080")),s.LIGHTCYAN=n(s.fromCssColorString("#E0FFFF")),s.LIGHTGOLDENRODYELLOW=n(s.fromCssColorString("#FAFAD2")),s.LIGHTGRAY=n(s.fromCssColorString("#D3D3D3")),s.LIGHTGREEN=n(s.fromCssColorString("#90EE90")),s.LIGHTGREY=s.LIGHTGRAY,s.LIGHTPINK=n(s.fromCssColorString("#FFB6C1")),s.LIGHTSEAGREEN=n(s.fromCssColorString("#20B2AA")),s.LIGHTSKYBLUE=n(s.fromCssColorString("#87CEFA")),s.LIGHTSLATEGRAY=n(s.fromCssColorString("#778899")),s.LIGHTSLATEGREY=s.LIGHTSLATEGRAY,s.LIGHTSTEELBLUE=n(s.fromCssColorString("#B0C4DE")),s.LIGHTYELLOW=n(s.fromCssColorString("#FFFFE0")),s.LIME=n(s.fromCssColorString("#00FF00")),s.LIMEGREEN=n(s.fromCssColorString("#32CD32")),s.LINEN=n(s.fromCssColorString("#FAF0E6")),s.MAGENTA=n(s.fromCssColorString("#FF00FF")),s.MAROON=n(s.fromCssColorString("#800000")),s.MEDIUMAQUAMARINE=n(s.fromCssColorString("#66CDAA")),s.MEDIUMBLUE=n(s.fromCssColorString("#0000CD")),s.MEDIUMORCHID=n(s.fromCssColorString("#BA55D3")),s.MEDIUMPURPLE=n(s.fromCssColorString("#9370DB")),s.MEDIUMSEAGREEN=n(s.fromCssColorString("#3CB371")),s.MEDIUMSLATEBLUE=n(s.fromCssColorString("#7B68EE")),s.MEDIUMSPRINGGREEN=n(s.fromCssColorString("#00FA9A")),s.MEDIUMTURQUOISE=n(s.fromCssColorString("#48D1CC")),s.MEDIUMVIOLETRED=n(s.fromCssColorString("#C71585")),s.MIDNIGHTBLUE=n(s.fromCssColorString("#191970")),s.MINTCREAM=n(s.fromCssColorString("#F5FFFA")),s.MISTYROSE=n(s.fromCssColorString("#FFE4E1")),s.MOCCASIN=n(s.fromCssColorString("#FFE4B5")),s.NAVAJOWHITE=n(s.fromCssColorString("#FFDEAD")),s.NAVY=n(s.fromCssColorString("#000080")),s.OLDLACE=n(s.fromCssColorString("#FDF5E6")),s.OLIVE=n(s.fromCssColorString("#808000")),s.OLIVEDRAB=n(s.fromCssColorString("#6B8E23")),s.ORANGE=n(s.fromCssColorString("#FFA500")),s.ORANGERED=n(s.fromCssColorString("#FF4500")),s.ORCHID=n(s.fromCssColorString("#DA70D6")),s.PALEGOLDENROD=n(s.fromCssColorString("#EEE8AA")),s.PALEGREEN=n(s.fromCssColorString("#98FB98")),s.PALETURQUOISE=n(s.fromCssColorString("#AFEEEE")),s.PALEVIOLETRED=n(s.fromCssColorString("#DB7093")),s.PAPAYAWHIP=n(s.fromCssColorString("#FFEFD5")),s.PEACHPUFF=n(s.fromCssColorString("#FFDAB9")),s.PERU=n(s.fromCssColorString("#CD853F")),s.PINK=n(s.fromCssColorString("#FFC0CB")),s.PLUM=n(s.fromCssColorString("#DDA0DD")),s.POWDERBLUE=n(s.fromCssColorString("#B0E0E6")),s.PURPLE=n(s.fromCssColorString("#800080")),s.RED=n(s.fromCssColorString("#FF0000")),s.ROSYBROWN=n(s.fromCssColorString("#BC8F8F")),s.ROYALBLUE=n(s.fromCssColorString("#4169E1")),s.SADDLEBROWN=n(s.fromCssColorString("#8B4513")),s.SALMON=n(s.fromCssColorString("#FA8072")),s.SANDYBROWN=n(s.fromCssColorString("#F4A460")),s.SEAGREEN=n(s.fromCssColorString("#2E8B57")),s.SEASHELL=n(s.fromCssColorString("#FFF5EE")),s.SIENNA=n(s.fromCssColorString("#A0522D")),s.SILVER=n(s.fromCssColorString("#C0C0C0")),s.SKYBLUE=n(s.fromCssColorString("#87CEEB")),s.SLATEBLUE=n(s.fromCssColorString("#6A5ACD")),s.SLATEGRAY=n(s.fromCssColorString("#708090")),s.SLATEGREY=s.SLATEGRAY,s.SNOW=n(s.fromCssColorString("#FFFAFA")),s.SPRINGGREEN=n(s.fromCssColorString("#00FF7F")),s.STEELBLUE=n(s.fromCssColorString("#4682B4")),s.TAN=n(s.fromCssColorString("#D2B48C")),s.TEAL=n(s.fromCssColorString("#008080")),s.THISTLE=n(s.fromCssColorString("#D8BFD8")),s.TOMATO=n(s.fromCssColorString("#FF6347")),s.TURQUOISE=n(s.fromCssColorString("#40E0D0")),s.VIOLET=n(s.fromCssColorString("#EE82EE")),s.WHEAT=n(s.fromCssColorString("#F5DEB3")),s.WHITE=n(s.fromCssColorString("#FFFFFF")),s.WHITESMOKE=n(s.fromCssColorString("#F5F5F5")),s.YELLOW=n(s.fromCssColorString("#FFFF00")),s.YELLOWGREEN=n(s.fromCssColorString("#9ACD32")),s.TRANSPARENT=n(new s(0,0,0,0)),s}),i("Core/ColorGeometryInstanceAttribute",["./Color","./ComponentDatatype","./defaultValue","./defined","./defineProperties","./DeveloperError"],function(e,t,i,r,n){"use strict";var o=function(t,r,n,o){t=i(t,1),r=i(r,1),n=i(n,1),o=i(o,1),this.value=new Uint8Array([e.floatToByte(t),e.floatToByte(r),e.floatToByte(n),e.floatToByte(o)])};return n(o.prototype,{componentDatatype:{get:function(){return t.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 4}},normalize:{get:function(){return!0}}}),o.fromColor=function(e){return new o(e.red,e.green,e.blue,e.alpha)},o.toValue=function(e,t){return r(t)?e.toBytes(t):new Uint8Array(e.toBytes())},o}),i("Core/CornerType",["./freezeObject"],function(e){"use strict";var t={ROUNDED:0,MITERED:1,BEVELED:2};return e(t)}),i("Core/isArray",["./defined"],function(e){"use strict";var t=Array.isArray;return e(t)||(t=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t}),i("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,i,r,n,o,a,s){"use strict";function l(e){var t=e._uSquared,i=e._ellipsoid.maximumRadius,r=e._ellipsoid.minimumRadius,n=(i-r)/i,o=Math.cos(e._startHeading),a=Math.sin(e._startHeading),s=(1-n)*Math.tan(e._start.latitude),l=1/Math.sqrt(1+s*s),u=l*s,c=Math.atan2(s,o),h=l*a,d=h*h,p=1-d,m=Math.sqrt(p),f=t/4,v=f*f,g=v*f,_=v*v,y=1+f-3*v/4+5*g/4-175*_/64,C=1-f+15*v/8-35*g/8,w=1-3*f+35*v/4,S=1-5*f,E=y*c-C*Math.sin(2*c)*f/2-w*Math.sin(4*c)*v/16-S*Math.sin(6*c)*g/48-5*Math.sin(8*c)*_/512,b=e._constants;b.a=i,b.b=r,b.f=n,b.cosineHeading=o,b.sineHeading=a,b.tanU=s,b.cosineU=l,b.sineU=u,b.sigma=c,b.sineAlpha=h,b.sineSquaredAlpha=d,b.cosineSquaredAlpha=p,b.cosineAlpha=m,b.u2Over4=f,b.u4Over16=v,b.u6Over64=g,b.u8Over256=_,b.a0=y,b.a1=C,b.a2=w,b.a3=S,b.distanceRatio=E}function u(e,t){return e*t*(4+e*(4-3*t))/16}function c(e,t,i,r,n,o,a){var s=u(e,i);return(1-s)*e*t*(r+s*n*(a+s*o*(2*a*a-1)))}function h(e,t,i,r,n,o,a){var l,u,h,d,p,m=(t-i)/t,f=o-r,v=Math.atan((1-m)*Math.tan(n)),g=Math.atan((1-m)*Math.tan(a)),_=Math.cos(v),y=Math.sin(v),C=Math.cos(g),w=Math.sin(g),S=_*C,E=_*w,b=y*w,x=y*C,T=f,P=s.TWO_PI,A=Math.cos(T),D=Math.sin(T);do{A=Math.cos(T),D=Math.sin(T);var M=E-x*A;h=Math.sqrt(C*C*D*D+M*M),u=b+S*A,l=Math.atan2(h,u);var I;0===h?(I=0,d=1):(I=S*D/h,d=1-I*I),P=T,p=u-2*b/d,isNaN(p)&&(p=0),T=f+c(m,I,d,l,h,u,p)}while(Math.abs(T-P)>s.EPSILON12);var O=d*(t*t-i*i)/(i*i),R=1+O*(4096+O*(O*(320-175*O)-768))/16384,L=O*(256+O*(O*(74-47*O)-128))/1024,N=p*p,F=L*h*(p+L*(u*(2*N-1)-L*p*(4*h*h-3)*(4*N-3)/6)/4),B=i*R*(l-F),z=Math.atan2(C*D,E-x*A),k=Math.atan2(_*D,E*A-x);e._distance=B,e._startHeading=z,e._endHeading=k,e._uSquared=O}function d(i,r,n,o){e.normalize(o.cartographicToCartesian(r,m),p),e.normalize(o.cartographicToCartesian(n,m),m),h(i,o.maximumRadius,o.minimumRadius,r.longitude,r.latitude,n.longitude,n.latitude),i._start=t.clone(r,i._start),i._end=t.clone(n,i._end),i._start.height=0,i._end.height=0,l(i)}var p=new e,m=new e,f=function(e,n,o){var s=i(o,a.WGS84);this._ellipsoid=s,this._start=new t,this._end=new t,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,r(e)&&r(n)&&d(this,e,n,s)};return n(f.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),f.prototype.setEndPoints=function(e,t){d(this,e,t,this._ellipsoid)},f.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)},f.prototype.interpolateUsingSurfaceDistance=function(e,i){var n=this._constants,o=n.distanceRatio+e/n.b,a=Math.cos(2*o),s=Math.cos(4*o),l=Math.cos(6*o),u=Math.sin(2*o),h=Math.sin(4*o),d=Math.sin(6*o),p=Math.sin(8*o),m=o*o,f=o*m,v=n.u8Over256,g=n.u2Over4,_=n.u6Over64,y=n.u4Over16,C=2*f*v*a/3+o*(1-g+7*y/4-15*_/4+579*v/64-(y-15*_/4+187*v/16)*a-(5*_/4-115*v/16)*s-29*v*l/16)+(g/2-y+71*_/32-85*v/16)*u+(5*y/16-5*_/4+383*v/96)*h-m*((_-11*v/2)*u+5*v*h/2)+(29*_/96-29*v/16)*d+539*v*p/1536,w=Math.asin(Math.sin(C)*n.cosineAlpha),S=Math.atan(n.a/n.b*Math.tan(w));C-=n.sigma;var E=Math.cos(2*n.sigma+C),b=Math.sin(C),x=Math.cos(C),T=n.cosineU*x,P=n.sineU*b,A=Math.atan2(b*n.sineHeading,T-P*n.cosineHeading),D=A-c(n.f,n.sineAlpha,n.cosineSquaredAlpha,C,b,x,E);return r(i)?(i.longitude=this._start.longitude+D,i.latitude=S,i.height=0,i):new t(this._start.longitude+D,S,0)},f}),i("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(e,t,i,r,n,o,a,s,l,u,c,h){"use strict";function d(e,t,i){var r=b;r.length=e;var n;if(t===i){for(n=0;e>n;n++)r[n]=t;return r}var o=i-t,a=o/e;for(n=0;e>n;n++){var s=t+n*a;r[n]=s}return r}function p(t,i,r,n,o,a,s,l){var u=n.scaleToGeodeticSurface(t,A),c=n.scaleToGeodeticSurface(i,D),h=m.numberOfPoints(t,i,r),p=n.cartesianToCartographic(u,x),f=n.cartesianToCartographic(c,T),v=d(h,o,a);M.setEndPoints(p,f);var g=M.surfaceDistance/h,_=l;p.height=o;var y=n.cartographicToCartesian(p,P);e.pack(y,s,_),_+=3;for(var C=1;h>C;C++){var w=M.interpolateUsingSurfaceDistance(C*g,T);w.height=v[C],y=n.cartographicToCartesian(w,P),e.pack(y,s,_),_+=3}return _}var m={};m.numberOfPoints=function(t,i,r){var n=e.distance(t,i);return Math.ceil(n/r)};var f=new t;m.extractHeights=function(e,t){for(var i=e.length,r=new Array(i),n=0;i>n;n++){var o=e[n];r[n]=t.cartesianToCartographic(o,f).height}return r};var v=new c,g=new e,_=new e,y=new h(e.ZERO,0),C=new e,w=new h(e.ZERO,0),S=new e,E=new e,b=[],x=new t,T=new t,P=new e,A=new e,D=new e,M=new a;m.wrapLongitude=function(t,n){var o=[],a=[];if(r(t)&&t.length>0){n=i(n,c.IDENTITY);var l=c.inverseTransformation(n,v),u=c.multiplyByPoint(l,e.ZERO,g),d=c.multiplyByPointAsVector(l,e.UNIT_Y,_),p=h.fromPointNormal(u,d,y),m=c.multiplyByPointAsVector(l,e.UNIT_X,C),f=h.fromPointNormal(u,m,w),b=1;o.push(e.clone(t[0]));for(var x=o[0],T=t.length,P=1;T>P;++P){var A=t[P];if(h.getPointDistance(f,x)<0||h.getPointDistance(f,A)<0){var D=s.lineSegmentPlane(x,A,p,S);if(r(D)){var M=e.multiplyByScalar(d,5e-9,E);h.getPointDistance(p,x)<0&&e.negate(M,M),o.push(e.add(D,M,new e)),a.push(b+1),e.negate(M,M),o.push(e.add(D,M,new e)),b=1}}o.push(e.clone(t[P])),b++,x=A}a.push(b)}return{positions:o,lengths:a}};var I=u.EPSILON7;return m.removeDuplicates=function(t){var i=t.length;if(2>i)return t;var r,n,o;for(r=1;i>r&&(n=t[r-1],o=t[r],!e.equalsEpsilon(n,o,I));++r);if(r===i)return t;for(var a=t.slice(0,r);i>r;++r)o=t[r],e.equalsEpsilon(n,o,I)||(a.push(e.clone(o)),n=o);return a},m.generateArc=function(t){r(t)||(t={});var n=t.positions,a=n.length,s=i(t.ellipsoid,o.WGS84),c=i(t.height,0);if(1>a)return[];if(1===a){var h=s.scaleToGeodeticSurface(n[0],A);if(0!==c){var d=s.geodeticSurfaceNormal(h,P);e.multiplyByScalar(d,c,d),e.add(h,d,h)}return[h.x,h.y,h.z]}var f=t.minDistance;if(!r(f)){var v=i(t.granularity,u.RADIANS_PER_DEGREE);f=u.chordLength(v,s.maximumRadius)}var g,_=0;for(g=0;a-1>g;g++)_+=m.numberOfPoints(n[g],n[g+1],f);var y=3*(_+1),C=new Array(y),w=0,S=l(c);for(g=0;a-1>g;g++){var E=n[g],T=n[g+1],D=S?c[g]:c,M=S?c[g+1]:c;w=p(E,T,f,s,D,M,C,w)}b.length=0;var I=n[a-1],O=s.cartesianToCartographic(I,x);O.height=S?c[a-1]:c;var R=s.cartographicToCartesian(O,P);return e.pack(R,C,y-3),C},m.generateCartesianArc=function(t){for(var i=m.generateArc(t),r=i.length/3,n=new Array(r),o=0;r>o;o++)n[o]=e.unpack(i,3*o);return n},m}),i("Core/PolylineVolumeGeometryLibrary",["./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./CornerType","./EllipsoidTangentPlane","./Math","./Matrix3","./Matrix4","./PolylinePipeline","./Quaternion","./Transforms"],function(e,t,i,r,n,o,a,s,l,u,c,h){"use strict";function d(e,t){for(var i=new Array(e.length),r=0;ro;o++)c[o]=i;return c.push(r),c}var h=r-i,d=h/u;for(o=1;u>o;o++){var p=i+o*d;c[o]=p}return c[0]=i,c.push(r),c}function m(i,r,n,a){var s=new o(n,a),l=s.projectPointOntoPlane(t.add(n,i,Y),Y),u=s.projectPointOntoPlane(t.add(n,r,X),X),c=e.angleBetween(l,u);return u.x*l.y-u.y*l.x>=0?-c:c}function f(e,i,r,n,o,a,u,c){var d=V,p=U;F=h.eastNorthUpToFixedFrame(e,o,F),d=l.multiplyByPointAsVector(F,N,d),d=t.normalize(d,d);var f=m(d,i,e,o);z=s.fromRotationZ(f,z),W.z=a,F=l.multiplyTransformation(F,l.fromRotationTranslation(z,W,B),F);var v=k;v[0]=u;for(var g=0;c>g;g++)for(var _=0;_l;l++){s=e[l];var u=s.x-o,c=s.y-a;r[n++]=u,r[n++]=0,r[n++]=c,r[n++]=u,r[n++]=0,r[n++]=c}return s=e[0],r[n++]=s.x-o,r[n++]=0,r[n++]=s.y-a,r}function _(e,t){for(var i=e.length,r=new Array(3*i),n=0,o=t.x+t.width/2,a=t.y+t.height/2,s=0;i>s;s++)r[n++]=e[s].x-o,r[n++]=0,r[n++]=e[s].y-a;return r}function y(e,i,r,o,l,u,h,d,p,m){var v,g=t.angleBetween(t.subtract(i,e,I),t.subtract(r,e,O)),_=o===n.BEVELED?0:Math.ceil(g/a.toRadians(5));v=l?s.fromQuaternion(c.fromAxisAngle(t.negate(e,I),g/(_+1),H),j):s.fromQuaternion(c.fromAxisAngle(e,g/(_+1),H),j);var y,C;if(i=t.clone(i,q),_>0)for(var w=m?2:1,S=0;_>S;S++)i=s.multiplyByVector(v,i,i),y=t.subtract(i,e,I),y=t.normalize(y,y),l||(y=t.negate(y,y)),C=u.scaleToGeodeticSurface(i,O),h=f(C,y,d,h,u,p,1,w);else y=t.subtract(i,e,I),y=t.normalize(y,y),l||(y=t.negate(y,y)),C=u.scaleToGeodeticSurface(i,O),h=f(C,y,d,h,u,p,1,1),r=t.clone(r,q),y=t.subtract(r,e,I),y=t.normalize(y,y),l||(y=t.negate(y,y)),C=u.scaleToGeodeticSurface(r,O),h=f(C,y,d,h,u,p,1,1);return h}function C(e,t){return a.equalsEpsilon(e.latitude,t.latitude,a.EPSILON6)&&a.equalsEpsilon(e.longitude,t.longitude,a.EPSILON6)}var w=[new t,new t],S=new t,E=new t,b=new t,x=new t,T=new t,P=new t,A=new t,D=new t,M=new t,I=new t,O=new t,R={},L=new r,N=new t(-1,0,0),F=new l,B=new l,z=new s,k=s.IDENTITY.clone(),V=new t,U=new i,W=new t,G=new t,H=new c,q=new t,j=new s;R.removeDuplicatesFromShape=function(t){for(var i=t.length,r=[],n=i-1,o=0;i>o;n=o++){var a=t[n],s=t[o];e.equals(a,s)||r.push(s)}return r};var Y=new t,X=new t;R.angleIsGreaterThanPi=function(e,i,r,n){var a=new o(r,n),s=a.projectPointOntoPlane(t.add(r,e,Y),Y),l=a.projectPointOntoPlane(t.add(r,i,X),X);return l.x*s.y-l.y*s.x>=0};var Z=new r,J=new r;R.removeDuplicatesFromPositions=function(e,t){var i=e.length;if(2>i)return e.slice(0);var r=[];r.push(e[0]);for(var n=1;i>n;++n){var o=e[n-1],a=e[n],s=t.cartesianToCartographic(o,Z),l=t.cartesianToCartographic(a,J);C(s,l)||r.push(a)}return r};var Q=new t,K=new t;return R.computePositions=function(e,i,r,o,s){var l=o._ellipsoid,c=d(e,l),h=o._granularity,m=o._cornerType,C=s?g(i,r):_(i,r),O=s?_(i,r):void 0,L=r.height/2,N=r.width/2,F=e.length,B=[],z=s?[]:void 0,k=S,V=E,U=b,W=x,G=T,H=P,q=A,j=D,Y=M,X=e[0],Z=e[1];W=l.geodeticSurfaceNormal(X,W),k=t.subtract(Z,X,k),k=t.normalize(k,k),j=t.cross(W,k,j),j=t.normalize(j,j);var J=c[0],$=c[1];s&&(z=f(X,j,O,z,l,J+L,1,1)),Y=t.clone(X,Y),X=Z,V=t.negate(k,V);for(var et,tt,it=1;F-1>it;it++){var rt=s?2:1;Z=e[it+1],k=t.subtract(Z,X,k),k=t.normalize(k,k),U=t.add(k,V,U),U=t.normalize(U,U),W=l.geodeticSurfaceNormal(X,W);var nt=t.multiplyByScalar(W,t.dot(k,W),Q);t.subtract(k,nt,nt),t.normalize(nt,nt);var ot=t.multiplyByScalar(W,t.dot(V,W),K);t.subtract(V,ot,ot),t.normalize(ot,ot);var at=!a.equalsEpsilon(Math.abs(t.dot(nt,ot)),1,a.EPSILON7);if(at){U=t.cross(U,W,U),U=t.cross(W,U,U),U=t.normalize(U,U);var st=1/Math.max(.25,t.magnitude(t.cross(U,V,I))),lt=R.angleIsGreaterThanPi(k,V,X,l);lt?(G=t.add(X,t.multiplyByScalar(U,st*N,U),G),H=t.add(G,t.multiplyByScalar(j,N,H),H),w[0]=t.clone(Y,w[0]),w[1]=t.clone(H,w[1]),et=p(w,J+L,$+L,h),tt=u.generateArc({positions:w,granularity:h,ellipsoid:l}),B=v(tt,j,C,B,l,et,1),j=t.cross(W,k,j),j=t.normalize(j,j),q=t.add(G,t.multiplyByScalar(j,N,q),q),m===n.ROUNDED||m===n.BEVELED?y(G,H,q,m,lt,l,B,C,$+L,s):(U=t.negate(U,U),B=f(X,U,C,B,l,$+L,st,rt)),Y=t.clone(q,Y)):(G=t.add(X,t.multiplyByScalar(U,st*N,U),G),H=t.add(G,t.multiplyByScalar(j,-N,H),H),w[0]=t.clone(Y,w[0]),w[1]=t.clone(H,w[1]),et=p(w,J+L,$+L,h),tt=u.generateArc({positions:w,granularity:h,ellipsoid:l}),B=v(tt,j,C,B,l,et,1),j=t.cross(W,k,j),j=t.normalize(j,j),q=t.add(G,t.multiplyByScalar(j,-N,q),q),m===n.ROUNDED||m===n.BEVELED?y(G,H,q,m,lt,l,B,C,$+L,s):B=f(X,U,C,B,l,$+L,st,rt),Y=t.clone(q,Y)),V=t.negate(k,V)}else B=f(Y,j,C,B,l,J+L,1,1),Y=X;J=$,$=c[it+1],X=Z}w[0]=t.clone(Y,w[0]),w[1]=t.clone(X,w[1]),et=p(w,J+L,$+L,h),tt=u.generateArc({positions:w,granularity:h,ellipsoid:l}),B=v(tt,j,C,B,l,et,1),s&&(z=f(X,j,O,z,l,$+L,1,1)),F=B.length;var ut=s?F+z.length:F,ct=new Float64Array(ut);return ct.set(B),s&&ct.set(z,F),ct},R}),i("Core/CorridorGeometryLibrary",["./Cartesian3","./CornerType","./defined","./isArray","./Math","./Matrix3","./PolylinePipeline","./PolylineVolumeGeometryLibrary","./Quaternion"],function(e,t,i,r,n,o,a,s,l){"use strict";function u(i,r,a,s,u){var c=e.angleBetween(e.subtract(r,i,f),e.subtract(a,i,v)),h=s===t.BEVELED?1:Math.ceil(c/n.toRadians(5))+1,d=3*h,p=new Array(d);p[d-3]=a.x,p[d-2]=a.y,p[d-1]=a.z;var m;m=u?o.fromQuaternion(l.fromAxisAngle(e.negate(i,f),c/h,M),I):o.fromQuaternion(l.fromAxisAngle(i,c/h,M),I);var g=0;r=e.clone(r,f);for(var _=0;h>_;_++)r=o.multiplyByVector(m,r,r),p[g++]=r.x,p[g++]=r.y,p[g++]=r.z;return p}function c(i){var r=C,n=w,o=S,a=i[1];n=e.fromArray(i[1],a.length-3,n),o=e.fromArray(i[0],0,o),r=e.multiplyByScalar(e.add(n,o,r),.5,r);var s=u(r,n,o,t.ROUNDED,!1),l=i.length-1,c=i[l-1];a=i[l],n=e.fromArray(c,c.length-3,n),o=e.fromArray(a,0,o),r=e.multiplyByScalar(e.add(n,o,r),.5,r);var h=u(r,n,o,t.ROUNDED,!1);return[s,h]}function h(t,i,r,n){var o=f;return n?o=e.add(t,i,o):(i=e.negate(i,i),o=e.add(t,i,o)),[o.x,o.y,o.z,r.x,r.y,r.z]}function d(t,i,r,n){for(var o=new Array(t.length),a=new Array(t.length),s=e.multiplyByScalar(i,r,f),l=e.negate(s,v),u=0,c=t.length-1,h=0;hY;Y++){_=l.geodeticSurfaceNormal(H,_),q=o[Y+1],M=e.normalize(e.subtract(q,H,M),M),N=e.normalize(e.add(M,I,N),N);var J=e.multiplyByScalar(_,e.dot(M,_),O);e.subtract(M,J,J),e.normalize(J,J);var Q=e.multiplyByScalar(_,e.dot(I,_),R);e.subtract(I,Q,Q),e.normalize(Q,Q);var K=!n.equalsEpsilon(Math.abs(e.dot(J,Q)),1,n.EPSILON7);if(K){N=e.cross(N,_,N),N=e.cross(_,N,N);var $=m/Math.max(.25,e.magnitude(e.cross(N,I,f))),et=s.angleIsGreaterThanPi(M,I,H,l);N=e.multiplyByScalar(N,$,N),et?(z=e.add(H,N,z),V=e.add(z,e.multiplyByScalar(L,m,V),V),k=e.add(z,e.multiplyByScalar(L,2*m,k),k),y[0]=e.clone(B,y[0]),y[1]=e.clone(V,y[1]),j=a.generateArc({positions:y,granularity:r,ellipsoid:l}),U=d(j,L,m,U),g&&(W.push(L.x,L.y,L.z),G.push(_.x,_.y,_.z)),F=e.clone(k,F),L=e.normalize(e.cross(_,M,L),L),k=e.add(z,e.multiplyByScalar(L,2*m,k),k),B=e.add(z,e.multiplyByScalar(L,m,B),B),v===t.ROUNDED||v===t.BEVELED?X.push({leftPositions:u(z,F,k,v,et)}):X.push({leftPositions:h(H,e.negate(N,N),k,et)})):(k=e.add(H,N,k),V=e.add(k,e.negate(e.multiplyByScalar(L,m,V),V),V),z=e.add(k,e.negate(e.multiplyByScalar(L,2*m,z),z),z),y[0]=e.clone(B,y[0]),y[1]=e.clone(V,y[1]),j=a.generateArc({positions:y,granularity:r,ellipsoid:l}),U=d(j,L,m,U),g&&(W.push(L.x,L.y,L.z),G.push(_.x,_.y,_.z)),F=e.clone(z,F),L=e.normalize(e.cross(_,M,L),L),z=e.add(k,e.negate(e.multiplyByScalar(L,2*m,z),z),z),B=e.add(k,e.negate(e.multiplyByScalar(L,m,B),B),B),v===t.ROUNDED||v===t.BEVELED?X.push({rightPositions:u(k,F,z,v,et)}):X.push({rightPositions:h(H,N,z,et)})),I=e.negate(M,I)}H=q}_=l.geodeticSurfaceNormal(H,_),y[0]=e.clone(B,y[0]),y[1]=e.clone(H,y[1]),j=a.generateArc({positions:y,granularity:r,ellipsoid:l}),U=d(j,L,m,U),g&&(W.push(L.x,L.y,L.z),G.push(_.x,_.y,_.z));var tt;return v===t.ROUNDED&&(tt=c(U)),{positions:U,corners:X,lefts:W,normals:G,endPositions:tt}};var L=new e,N=new e;return m.scaleToGeodeticHeight=function(t,i,n,o){var a=t.length,s=r(o)?o:new Array(t.length);s.length=t.length;for(var l=i,u=0;a>u;u+=3){var c=n.scaleToGeodeticSurface(e.fromArray(t,u,N),N),h=L;0!==i&&(h=n.geodeticSurfaceNormal(c,h),h=e.multiplyByScalar(h,l,h),c=e.add(c,h,c)),s[u]=c.x,s[u+1]=c.y,s[u+2]=c.z}return s},m}),i("Core/CorridorGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./CornerType","./CorridorGeometryLibrary","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PolylinePipeline","./PrimitiveType","./VertexFormat"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v){"use strict";function g(e,i,r,o,a,s){var l=e.normals,u=e.tangents,c=e.binormals,h=t.normalize(t.cross(r,i,A),A);s.normal&&n.addAttribute(l,i,o,a),s.binormal&&n.addAttribute(c,r,o,a),s.tangent&&n.addAttribute(u,h,o,a)}function _(e,r,o){var s,l,u,m=e.positions,f=e.corners,v=e.endPositions,_=e.lefts,y=e.normals,C=new h,w=0,T=0,M=0;for(l=0;ll;l++)k=t.fromArray($,3*(J-1-l),k),z=t.fromArray($,3*(J+l),z),n.addAttribute(U,z,j),n.addAttribute(U,k,void 0,Y),g(q,X,Z,j,Y,r),N=j/3,B=N+1,L=(Y-2)/3,F=L-1,Q[K++]=L,Q[K++]=N,Q[K++]=F,Q[K++]=F,Q[K++]=N,Q[K++]=B,j+=3,Y-=3}var et=0,tt=0,it=m[et++],rt=m[et++];U.set(it,j),U.set(rt,Y-rt.length+1),Z=t.fromArray(_,tt,Z);var nt,ot;for(u=rt.length-3,l=0;u>l;l+=3)nt=o.geodeticSurfaceNormal(t.fromArray(it,l,A),A),ot=o.geodeticSurfaceNormal(t.fromArray(rt,u-l,D),D),X=t.normalize(t.add(nt,ot,X),X),g(q,X,Z,j,Y,r),N=j/3,B=N+1,L=(Y-2)/3,F=L-1,Q[K++]=L,Q[K++]=N,Q[K++]=F,Q[K++]=F,Q[K++]=N,Q[K++]=B,j+=3,Y-=3; +for(nt=o.geodeticSurfaceNormal(t.fromArray(it,u,A),A),ot=o.geodeticSurfaceNormal(t.fromArray(rt,u,D),D),X=t.normalize(t.add(nt,ot,X),X),tt+=3,l=0;ll;l++)k=t.fromArray(mt,3*(O-l-1),k),z=t.fromArray(mt,3*l,z),n.addAttribute(U,k,void 0,Y),n.addAttribute(U,z,j),g(q,X,Z,j,Y,r),B=j/3,N=B-1,F=(Y-2)/3,L=F+1,Q[K++]=L,Q[K++]=N,Q[K++]=F,Q[K++]=F,Q[K++]=N,Q[K++]=B,j+=3,Y-=3}if(C.position=new c({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:U}),r.st){var ft,vt,gt=new Float32Array(2*(V/3)),_t=0;if(R){w/=3,T/=3;var yt=Math.PI/(O+1);vt=1/(w-O+1),ft=1/(T-O+1);var Ct,wt=O/2;for(l=wt+1;O+1>l;l++)Ct=p.PI_OVER_TWO+yt*l,gt[_t++]=ft*(1+Math.cos(Ct)),gt[_t++]=.5*(1+Math.sin(Ct));for(l=1;T-O+1>l;l++)gt[_t++]=l*ft,gt[_t++]=0;for(l=O;l>wt;l--)Ct=p.PI_OVER_TWO-l*yt,gt[_t++]=1-ft*(1+Math.cos(Ct)),gt[_t++]=.5*(1+Math.sin(Ct));for(l=wt;l>0;l--)Ct=p.PI_OVER_TWO-yt*l,gt[_t++]=1-vt*(1+Math.cos(Ct)),gt[_t++]=.5*(1+Math.sin(Ct));for(l=w-O;l>0;l--)gt[_t++]=l*vt,gt[_t++]=1;for(l=1;wt+1>l;l++)Ct=p.PI_OVER_TWO+yt*l,gt[_t++]=vt*(1+Math.cos(Ct)),gt[_t++]=.5*(1+Math.sin(Ct))}else{for(w/=3,T/=3,vt=1/(w-1),ft=1/(T-1),l=0;T>l;l++)gt[_t++]=l*ft,gt[_t++]=0;for(l=w;l>0;l--)gt[_t++]=(l-1)*vt,gt[_t++]=1}C.st=new c({componentDatatype:i.FLOAT,componentsPerAttribute:2,values:gt})}return r.normal&&(C.normal=new c({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:q.normals})),r.tangent&&(C.tangent=new c({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:q.tangents})),r.binormal&&(C.binormal=new c({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:q.binormals})),{attributes:C,indices:Q}}function y(e,i){if(!(i.normal||i.binormal||i.tangent||i.st))return e;var r,o,a=e.position.values;(i.normal||i.binormal)&&(r=e.normal.values,o=e.binormal.values);var s,l=e.position.values.length/18,u=3*l,c=2*l,h=2*u;if(i.normal||i.binormal||i.tangent){var d=i.normal?new Float32Array(6*u):void 0,p=i.binormal?new Float32Array(6*u):void 0,m=i.tangent?new Float32Array(6*u):void 0,f=S,v=E,g=b,_=x,y=T,C=P,w=h;for(s=0;u>s;s+=3){var A=w+h;f=t.fromArray(a,s,f),v=t.fromArray(a,s+u,v),g=t.fromArray(a,(s+3)%u,g),v=t.subtract(v,f,v),g=t.subtract(g,f,g),_=t.normalize(t.cross(v,g,_),_),i.normal&&(n.addAttribute(d,_,A),n.addAttribute(d,_,A+3),n.addAttribute(d,_,w),n.addAttribute(d,_,w+3)),(i.tangent||i.binormal)&&(C=t.fromArray(r,s,C),i.binormal&&(n.addAttribute(p,C,A),n.addAttribute(p,C,A+3),n.addAttribute(p,C,w),n.addAttribute(p,C,w+3)),i.tangent&&(y=t.normalize(t.cross(C,_,y),y),n.addAttribute(m,y,A),n.addAttribute(m,y,A+3),n.addAttribute(m,y,w),n.addAttribute(m,y,w+3))),w+=6}if(i.normal){for(d.set(r),s=0;u>s;s+=3)d[s+u]=-r[s],d[s+u+1]=-r[s+1],d[s+u+2]=-r[s+2];e.normal.values=d}else e.normal=void 0;if(i.binormal?(p.set(o),p.set(o,u),e.binormal.values=p):e.binormal=void 0,i.tangent){var D=e.tangent.values;m.set(D),m.set(D,u),e.tangent.values=m}}if(i.st){var M=e.st.values,I=new Float32Array(6*c);I.set(M),I.set(M,c);for(var O=2*c,R=0;2>R;R++){for(I[O++]=M[0],I[O++]=M[1],s=2;c>s;s+=2){var L=M[s],N=M[s+1];I[O++]=L,I[O++]=N,I[O++]=L,I[O++]=N}I[O++]=M[0],I[O++]=M[1]}e.st.values=I}return e}function C(e,t,i){i[t++]=e[0],i[t++]=e[1],i[t++]=e[2];for(var r=3;rw;w+=3){var T=c[w],P=c[w+1],A=c[w+2];b[x++]=A+p,b[x++]=P+p,b[x++]=T+p}u=y(u,t);var D,M,I,O;for(w=0;E>w;w+=2)D=w+E,M=D+E,I=D+1,O=M+1,b[x++]=D,b[x++]=M,b[x++]=I,b[x++]=I,b[x++]=M,b[x++]=O;return{attributes:u,indices:b}}var S=new t,E=new t,b=new t,x=new t,T=new t,P=new t,A=new t,D=new t,M=function(e){e=o(e,o.EMPTY_OBJECT);var i=e.positions,n=e.width;this._positions=i,this._ellipsoid=l.clone(o(e.ellipsoid,l.WGS84)),this._vertexFormat=v.clone(o(e.vertexFormat,v.DEFAULT)),this._width=n,this._height=o(e.height,0),this._extrudedHeight=o(e.extrudedHeight,this._height),this._cornerType=o(e.cornerType,r.ROUNDED),this._granularity=o(e.granularity,p.RADIANS_PER_DEGREE),this._workerName="createCorridorGeometry",this.packedLength=1+i.length*t.packedLength+l.packedLength+v.packedLength+5};M.pack=function(e,i,r){r=o(r,0);var n=e._positions,a=n.length;i[r++]=a;for(var s=0;a>s;++s,r+=t.packedLength)t.pack(n[s],i,r);l.pack(e._ellipsoid,i,r),r+=l.packedLength,v.pack(e._vertexFormat,i,r),r+=v.packedLength,i[r++]=e._width,i[r++]=e._height,i[r++]=e._extrudedHeight,i[r++]=e._cornerType,i[r]=e._granularity};var I=l.clone(l.UNIT_SPHERE),O=new v,R={positions:void 0,ellipsoid:I,vertexFormat:O,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0};return M.unpack=function(e,i,r){i=o(i,0);for(var n=e[i++],s=new Array(n),u=0;n>u;++u,i+=t.packedLength)s[u]=t.unpack(e,i);var c=l.unpack(e,i,I);i+=l.packedLength;var h=v.unpack(e,i,O);i+=v.packedLength;var d=e[i++],p=e[i++],m=e[i++],f=e[i++],g=e[i];return a(r)?(r._positions=s,r._ellipsoid=l.clone(c,r._ellipsoid),r._vertexFormat=v.clone(h,r._vertexFormat),r._width=d,r._height=p,r._extrudedHeight=m,r._cornerType=f,r._granularity=g,r):(R.positions=s,R.width=d,R.height=p,R.extrudedHeight=m,R.cornerType=f,R.granularity=g,new M(R))},M.createGeometry=function(t){var i=t._positions,r=t._height,o=t._extrudedHeight,a=r!==o,s=m.removeDuplicates(i);if(s.length<2)return void 0;var l,c=t._ellipsoid,h=t._vertexFormat,d={ellipsoid:c,positions:s,width:t._width,cornerType:t._cornerType,granularity:t._granularity,saveAttributes:!0};if(a){var p=Math.max(r,o);o=Math.min(r,o),r=p,d.height=r,d.extrudedHeight=o,l=w(d,h)}else{var v=n.computePositions(d);l=_(v,h,c),l.attributes.position.values=n.scaleToGeodeticHeight(l.attributes.position.values,r,c,l.attributes.position.values)}var g=l.attributes,y=e.fromVertices(g.position.values,void 0,3);return h.position||(l.attributes.position.values=void 0),new u({attributes:g,indices:l.indices,primitiveType:f.TRIANGLES,boundingSphere:y})},M}),i("Core/CorridorOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./CornerType","./CorridorGeometryLibrary","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PolylinePipeline","./PrimitiveType"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f){"use strict";function v(e,o){var s,l,u,p=[],m=e.positions,f=e.corners,v=e.endPositions,g=new h,w=0,S=0,E=0;for(l=0;ll;l++)O=t.fromArray(V,3*(B-1-l),O),I=t.fromArray(V,3*(B+l),I),n.addAttribute(L,I,N),n.addAttribute(L,O,void 0,F),A=N/3,M=A+1,P=(F-2)/3,D=P-1,z[k++]=P,z[k++]=D,z[k++]=A,z[k++]=M,N+=3,F-=3}var U=0,W=m[U++],G=m[U++];for(L.set(W,N),L.set(G,F-G.length+1),u=G.length-3,p.push(N/3,(F-2)/3),l=0;u>l;l+=3)A=N/3,M=A+1,P=(F-2)/3,D=P-1,z[k++]=P,z[k++]=D,z[k++]=A,z[k++]=M,N+=3,F-=3;for(l=0;ll;l++)O=t.fromArray(Z,3*(x-l-1),O),I=t.fromArray(Z,3*l,I),n.addAttribute(L,O,void 0,F),n.addAttribute(L,I,N),M=N/3,A=M-1,D=(F-2)/3,P=D+1,z[k++]=P,z[k++]=D,z[k++]=A,z[k++]=M,N+=3,F-=3;p.push(N/3)}else p.push(N/3,(F-2)/3);return z[k++]=N/3,z[k++]=(F-2)/3,g.position=new c({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:L}),{attributes:g,indices:z,wallIndices:p}}function g(e){var t=e.ellipsoid,i=n.computePositions(e),r=v(i,e.cornerType),o=r.wallIndices,a=e.height,s=e.extrudedHeight,l=r.attributes,u=r.indices,c=l.position.values,h=c.length,p=new Float64Array(h);p.set(c);var m=new Float64Array(2*h);c=n.scaleToGeodeticHeight(c,a,t,c),p=n.scaleToGeodeticHeight(p,s,t,p),m.set(c),m.set(p,h),l.position.values=m,h/=3;var f,g=u.length,_=d.createTypedArray(m.length/3,2*(g+o.length));_.set(u);var y=g;for(f=0;g>f;f+=2){var C=u[f],w=u[f+1];_[y++]=C+h,_[y++]=w+h}var S,E;for(f=0;fs;++s,r+=t.packedLength)t.pack(n[s],i,r);l.pack(e._ellipsoid,i,r),r+=l.packedLength,i[r++]=e._width,i[r++]=e._height,i[r++]=e._extrudedHeight,i[r++]=e._cornerType,i[r]=e._granularity};var S=l.clone(l.UNIT_SPHERE),E={positions:void 0,ellipsoid:S,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0};return w.unpack=function(e,i,r){i=o(i,0);for(var n=e[i++],s=new Array(n),u=0;n>u;++u,i+=t.packedLength)s[u]=t.unpack(e,i);var c=l.unpack(e,i,S);i+=l.packedLength;var h=e[i++],d=e[i++],p=e[i++],m=e[i++],f=e[i];return a(r)?(r._positions=s,r._ellipsoid=l.clone(c,r._ellipsoid),r._width=h,r._height=d,r._extrudedHeight=p,r._cornerType=m,r._granularity=f,r):(E.positions=s,E.width=h,E.height=d,E.extrudedHeight=p,E.cornerType=m,E.granularity=f,new w(E))},w.createGeometry=function(t){var i=t._positions,r=t._height,o=t._extrudedHeight,a=r!==o,s=m.removeDuplicates(i);if(s.length<2)return void 0;var l,c=t._ellipsoid,h={ellipsoid:c,positions:s,width:t._width,cornerType:t._cornerType,granularity:t._granularity,saveAttributes:!1};if(a){var d=Math.max(r,o);o=Math.min(r,o),r=d,h.height=r,h.extrudedHeight=o,l=g(h)}else{var p=n.computePositions(h);l=v(p,h.cornerType),l.attributes.position.values=n.scaleToGeodeticHeight(l.attributes.position.values,r,c,l.attributes.position.values)}var _=l.attributes,y=e.fromVertices(_.position.values,void 0,3);return new u({attributes:_,indices:l.indices,primitiveType:f.LINES,boundingSphere:y})},w}),i("Core/CylinderGeometryLibrary",["./Math"],function(e){"use strict";var t={};return t.computePositions=function(t,i,r,n,o){var a,s=.5*t,l=-s,u=n+n,c=o?2*u:u,h=new Float64Array(3*c),d=0,p=0,m=o?3*u:0,f=o?3*(u+n):3*n;for(a=0;n>a;a++){var v=a/n*e.TWO_PI,g=Math.cos(v),_=Math.sin(v),y=g*r,C=_*r,w=g*i,S=_*i;h[p+m]=y,h[p+m+1]=C,h[p+m+2]=l,h[p+f]=w,h[p+f+1]=S,h[p+f+2]=s,p+=3,o&&(h[d++]=y,h[d++]=C,h[d++]=l,h[d++]=w,h[d++]=S,h[d++]=s)}return h},t}),i("Core/CylinderGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./CylinderGeometryLibrary","./defaultValue","./defined","./DeveloperError","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType","./VertexFormat"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m){"use strict";var f=new t,v=new i,g=new i,_=new i,y=new i,C=function(e){e=o(e,o.EMPTY_OBJECT);var t=e.length,i=e.topRadius,r=e.bottomRadius,n=o(e.vertexFormat,m.DEFAULT),a=o(e.slices,128);this._length=t,this._topRadius=i,this._bottomRadius=r,this._vertexFormat=m.clone(n),this._slices=a,this._workerName="createCylinderGeometry"};C.packedLength=m.packedLength+4,C.pack=function(e,t,i){i=o(i,0),m.pack(e._vertexFormat,t,i),i+=m.packedLength,t[i++]=e._length,t[i++]=e._topRadius,t[i++]=e._bottomRadius,t[i]=e._slices};var w=new m,S={vertexFormat:w,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0};return C.unpack=function(e,t,i){t=o(t,0);var r=m.unpack(e,t,w);t+=m.packedLength;var n=e[t++],s=e[t++],l=e[t++],u=e[t];return a(i)?(i._vertexFormat=m.clone(r,i._vertexFormat),i._length=n,i._topRadius=s,i._bottomRadius=l,i._slices=u,i):(S.length=n,S.topRadius=s,S.bottomRadius=l,S.slices=u,new C(S))},C.createGeometry=function(o){var a,s=o._length,m=o._topRadius,C=o._bottomRadius,w=o._vertexFormat,S=o._slices,E=S+S,b=S+E,x=E+E,T=n.computePositions(s,m,C,S,!0),P=w.st?new Float32Array(2*x):void 0,A=w.normal?new Float32Array(3*x):void 0,D=w.tangent?new Float32Array(3*x):void 0,M=w.binormal?new Float32Array(3*x):void 0,I=w.normal||w.tangent||w.binormal;if(I){var O=w.tangent||w.binormal,R=0,L=0,N=0,F=v;F.z=0;var B=_,z=g;for(a=0;S>a;a++){var k=a/S*d.TWO_PI,V=Math.cos(k),U=Math.sin(k);I&&(F.x=V,F.y=U,O&&(B=i.normalize(i.cross(i.UNIT_Z,F,B),B)),w.normal&&(A[R++]=V,A[R++]=U,A[R++]=0,A[R++]=V,A[R++]=U,A[R++]=0),w.tangent&&(D[L++]=B.x,D[L++]=B.y,D[L++]=B.z,D[L++]=B.x,D[L++]=B.y,D[L++]=B.z),w.binormal&&(z=i.normalize(i.cross(F,B,z),z),M[N++]=z.x,M[N++]=z.y,M[N++]=z.z,M[N++]=z.x,M[N++]=z.y,M[N++]=z.z))}for(a=0;S>a;a++)w.normal&&(A[R++]=0,A[R++]=0,A[R++]=-1),w.tangent&&(D[L++]=1,D[L++]=0,D[L++]=0),w.binormal&&(M[N++]=0,M[N++]=-1,M[N++]=0);for(a=0;S>a;a++)w.normal&&(A[R++]=0,A[R++]=0,A[R++]=1),w.tangent&&(D[L++]=1,D[L++]=0,D[L++]=0),w.binormal&&(M[N++]=0,M[N++]=1,M[N++]=0)}var W=12*S-12,G=h.createTypedArray(x,W),H=0,q=0;for(a=0;S-1>a;a++)G[H++]=q,G[H++]=q+2,G[H++]=q+3,G[H++]=q,G[H++]=q+3,G[H++]=q+1,q+=2;for(G[H++]=E-2,G[H++]=0,G[H++]=1,G[H++]=E-2,G[H++]=1,G[H++]=E-1,a=1;S-1>a;a++)G[H++]=E+a+1,G[H++]=E+a,G[H++]=E;for(a=1;S-1>a;a++)G[H++]=b,G[H++]=b+a,G[H++]=b+a+1;var j=0;if(w.st){var Y=Math.max(m,C);for(a=0;x>a;a++){var X=i.fromArray(T,3*a,y);P[j++]=(X.x+Y)/(2*Y),P[j++]=(X.y+Y)/(2*Y)}}var Z=new c;w.position&&(Z.position=new u({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:T})),w.normal&&(Z.normal=new u({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:A})),w.tangent&&(Z.tangent=new u({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:D})),w.binormal&&(Z.binormal=new u({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:M})),w.st&&(Z.st=new u({componentDatatype:r.FLOAT,componentsPerAttribute:2,values:P})),f.x=.5*s,f.y=Math.max(C,m);var J=new e(i.ZERO,t.magnitude(f));return new l({attributes:Z,indices:G,primitiveType:p.TRIANGLES,boundingSphere:J})},C}),i("Core/CylinderOutlineGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./CylinderGeometryLibrary","./defaultValue","./defined","./DeveloperError","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./PrimitiveType"],function(e,t,i,r,n,o,a,s,l,u,c,h,d){"use strict";var p=new t,m=function(e){e=o(e,o.EMPTY_OBJECT);var t=e.length,i=e.topRadius,r=e.bottomRadius,n=o(e.slices,128),a=Math.max(o(e.numberOfVerticalLines,16),0);this._length=t,this._topRadius=i,this._bottomRadius=r,this._slices=n,this._numberOfVerticalLines=a,this._workerName="createCylinderOutlineGeometry"};m.packedLength=5,m.pack=function(e,t,i){i=o(i,0),t[i++]=e._length,t[i++]=e._topRadius,t[i++]=e._bottomRadius,t[i++]=e._slices,t[i]=e._numberOfVerticalLines};var f={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0};return m.unpack=function(e,t,i){t=o(t,0);var r=e[t++],n=e[t++],s=e[t++],l=e[t++],u=e[t];return a(i)?(i._length=r,i._topRadius=n,i._bottomRadius=s,i._slices=l,i._numberOfVerticalLines=u,i):(f.length=r,f.topRadius=n,f.bottomRadius=s,f.slices=l,f.numberOfVerticalLines=u,new m(f))},m.createGeometry=function(o){var a,s=o._length,m=o._topRadius,f=o._bottomRadius,v=o._slices,g=o._numberOfVerticalLines,_=2*v,y=n.computePositions(s,m,f,v,!1),C=2*v;if(g>0){var w=Math.min(g,v);a=Math.round(v/w),C+=w}for(var S=h.createTypedArray(_,2*C),E=0,b=0;v-1>b;b++)S[E++]=b,S[E++]=b+1,S[E++]=b+v,S[E++]=b+1+v;if(S[E++]=v-1,S[E++]=0,S[E++]=v+v-1,S[E++]=v,g>0)for(b=0;v>b;b+=a)S[E++]=b,S[E++]=b+v;var x=new c;x.position=new u({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:y}),p.x=.5*s,p.y=Math.max(f,m);var T=new e(i.ZERO,t.magnitude(p));return new l({attributes:x,indices:S,primitiveType:d.LINES,boundingSphere:T})},m}),i("Core/DefaultProxy",[],function(){"use strict";var e=function(e){this.proxy=e};return e.prototype.getURL=function(e){return this.proxy+"?"+encodeURIComponent(e)},e}),i("ThirdParty/Tween",[],function(){void 0===Date.now&&(Date.now=function(){return(new Date).valueOf()});var e=e||function(){var e=[];return{REVISION:"13",getAll:function(){return e},removeAll:function(){e=[]},add:function(t){e.push(t)},remove:function(t){var i=e.indexOf(t);-1!==i&&e.splice(i,1)},update:function(t){if(0===e.length)return!1;var i=0;for(t=void 0!==t?t:"undefined"!=typeof window&&void 0!==window.performance&&void 0!==window.performance.now?window.performance.now():Date.now();ie;e++)f[e].stop()},this.delay=function(e){return h=e,this},this.repeat=function(e){return s=e,this},this.yoyo=function(e){return l=e,this},this.easing=function(e){return p=e,this},this.interpolation=function(e){return m=e,this},this.chain=function(){return f=arguments,this},this.onStart=function(e){return v=e,this},this.onUpdate=function(e){return _=e,this},this.onComplete=function(e){return y=e,this},this.onStop=function(e){return C=e,this},this.update=function(e){var t;if(d>e)return!0;g===!1&&(null!==v&&v.call(i),g=!0);var u=(e-d)/a;u=u>1?1:u;var C=p(u);for(t in n){var w=r[t]||0,S=n[t];S instanceof Array?i[t]=m(S,C):("string"==typeof S&&(S=w+parseFloat(S,10)),"number"==typeof S&&(i[t]=w+(S-w)*C))}if(null!==_&&_.call(i,C),1==u){if(s>0){isFinite(s)&&s--;for(t in o){if("string"==typeof n[t]&&(o[t]=o[t]+parseFloat(n[t],10)),l){var E=o[t];o[t]=n[t],n[t]=E}r[t]=o[t]}return l&&(c=!c),d=e+h,!0}null!==y&&y.call(i);for(var b=0,x=f.length;x>b;b++)f[b].start(e);return!1}return!0}},e.Easing={Linear:{None:function(e){return e}},Quadratic:{In:function(e){return e*e},Out:function(e){return e*(2-e)},InOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)}},Cubic:{In:function(e){return e*e*e},Out:function(e){return--e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)}},Quartic:{In:function(e){return e*e*e*e},Out:function(e){return 1- --e*e*e*e},InOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)}},Quintic:{In:function(e){return e*e*e*e*e},Out:function(e){return--e*e*e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)}},Sinusoidal:{In:function(e){return 1-Math.cos(e*Math.PI/2)},Out:function(e){return Math.sin(e*Math.PI/2)},InOut:function(e){return.5*(1-Math.cos(Math.PI*e))}},Exponential:{In:function(e){return 0===e?0:Math.pow(1024,e-1)},Out:function(e){return 1===e?1:1-Math.pow(2,-10*e)},InOut:function(e){return 0===e?0:1===e?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)}},Circular:{In:function(e){return 1-Math.sqrt(1-e*e)},Out:function(e){return Math.sqrt(1- --e*e)},InOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)}},Elastic:{In:function(e){var t,i=.1,r=.4;return 0===e?0:1===e?1:(!i||1>i?(i=1,t=r/4):t=r*Math.asin(1/i)/(2*Math.PI),-(i*Math.pow(2,10*(e-=1))*Math.sin((e-t)*2*Math.PI/r)))},Out:function(e){var t,i=.1,r=.4;return 0===e?0:1===e?1:(!i||1>i?(i=1,t=r/4):t=r*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*e)*Math.sin((e-t)*2*Math.PI/r)+1)},InOut:function(e){var t,i=.1,r=.4;return 0===e?0:1===e?1:(!i||1>i?(i=1,t=r/4):t=r*Math.asin(1/i)/(2*Math.PI),(e*=2)<1?-.5*i*Math.pow(2,10*(e-=1))*Math.sin((e-t)*2*Math.PI/r):.5*i*Math.pow(2,-10*(e-=1))*Math.sin((e-t)*2*Math.PI/r)+1)}},Back:{In:function(e){var t=1.70158;return e*e*((t+1)*e-t)},Out:function(e){var t=1.70158;return--e*e*((t+1)*e+t)+1},InOut:function(e){var t=2.5949095;return(e*=2)<1?.5*e*e*((t+1)*e-t):.5*((e-=2)*e*((t+1)*e+t)+2)}},Bounce:{In:function(t){return 1-e.Easing.Bounce.Out(1-t)},Out:function(e){return 1/2.75>e?7.5625*e*e:2/2.75>e?7.5625*(e-=1.5/2.75)*e+.75:2.5/2.75>e?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},InOut:function(t){return.5>t?.5*e.Easing.Bounce.In(2*t):.5*e.Easing.Bounce.Out(2*t-1)+.5}}},e.Interpolation={Linear:function(t,i){var r=t.length-1,n=r*i,o=Math.floor(n),a=e.Interpolation.Utils.Linear;return 0>i?a(t[0],t[1],n):i>1?a(t[r],t[r-1],r-n):a(t[o],t[o+1>r?r:o+1],n-o)},Bezier:function(t,i){var r,n=0,o=t.length-1,a=Math.pow,s=e.Interpolation.Utils.Bernstein;for(r=0;o>=r;r++)n+=a(1-i,o-r)*a(i,r)*t[r]*s(o,r);return n},CatmullRom:function(t,i){var r=t.length-1,n=r*i,o=Math.floor(n),a=e.Interpolation.Utils.CatmullRom;return t[0]===t[r]?(0>i&&(o=Math.floor(n=r*(1+i))),a(t[(o-1+r)%r],t[o],t[(o+1)%r],t[(o+2)%r],n-o)):0>i?t[0]-(a(t[0],t[0],t[1],t[1],-n)-t[0]):i>1?t[r]-(a(t[r],t[r],t[r-1],t[r-1],n-r)-t[r]):a(t[o?o-1:0],t[o],t[o+1>r?r:o+1],t[o+2>r?r:o+2],n-o)},Utils:{Linear:function(e,t,i){return(t-e)*i+e},Bernstein:function(t,i){var r=e.Interpolation.Utils.Factorial;return r(t)/r(i)/r(t-i)},Factorial:function(){var e=[1];return function(t){var i,r=1;if(e[t])return e[t];for(i=t;i>1;i--)r*=i;return e[t]=r}}(),CatmullRom:function(e,t,i,r,n){var o=.5*(i-e),a=.5*(r-t),s=n*n,l=n*s;return(2*t-2*i+o+a)*l+(-3*t+3*i-2*o-a)*s+o*n+t}}},e}),i("Core/EasingFunction",["../ThirdParty/Tween","./freezeObject"],function(e,t){"use strict";var i={LINEAR_NONE:e.Easing.Linear.None,QUADRACTIC_IN:e.Easing.Quadratic.In,QUADRACTIC_OUT:e.Easing.Quadratic.Out,QUADRACTIC_IN_OUT:e.Easing.Quadratic.InOut,CUBIC_IN:e.Easing.Cubic.In,CUBIC_OUT:e.Easing.Cubic.Out,CUBIC_IN_OUT:e.Easing.Cubic.InOut,QUARTIC_IN:e.Easing.Quartic.In,QUARTIC_OUT:e.Easing.Quartic.Out,QUARTIC_IN_OUT:e.Easing.Quartic.InOut,QUINTIC_IN:e.Easing.Quintic.In,QUINTIC_OUT:e.Easing.Quintic.Out,QUINTIC_IN_OUT:e.Easing.Quintic.InOut,SINUSOIDAL_IN:e.Easing.Sinusoidal.In,SINUSOIDAL_OUT:e.Easing.Sinusoidal.Out,SINUSOIDAL_IN_OUT:e.Easing.Sinusoidal.InOut,EXPONENTIAL_IN:e.Easing.Exponential.In,EXPONENTIAL_OUT:e.Easing.Exponential.Out,EXPONENTIAL_IN_OUT:e.Easing.Exponential.InOut,CIRCULAR_IN:e.Easing.Circular.In,CIRCULAR_OUT:e.Easing.Circular.Out,CIRCULAR_IN_OUT:e.Easing.Circular.InOut,ELASTIC_IN:e.Easing.Elastic.In,ELASTIC_OUT:e.Easing.Elastic.Out,ELASTIC_IN_OUT:e.Easing.Elastic.InOut,BACK_IN:e.Easing.Back.In,BACK_OUT:e.Easing.Back.Out,BACK_IN_OUT:e.Easing.Back.InOut,BOUNCE_IN:e.Easing.Bounce.In,BOUNCE_OUT:e.Easing.Bounce.Out,BOUNCE_IN_OUT:e.Easing.Bounce.InOut};return t(i)}),i("Core/EllipsoidGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType","./VertexFormat"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m){"use strict";var f=new i,v=new i,g=new i,_=new i,y=new i,C=new i(1,1,1),w=Math.cos,S=Math.sin,E=function(e){e=n(e,n.EMPTY_OBJECT);var t=n(e.radii,C),r=n(e.stackPartitions,64),o=n(e.slicePartitions,64),a=n(e.vertexFormat,m.DEFAULT);this._radii=i.clone(t),this._stackPartitions=r,this._slicePartitions=o,this._vertexFormat=m.clone(a),this._workerName="createEllipsoidGeometry"};E.packedLength=i.packedLength+m.packedLength+2,E.pack=function(e,t,r){r=n(r,0),i.pack(e._radii,t,r),r+=i.packedLength,m.pack(e._vertexFormat,t,r),r+=m.packedLength,t[r++]=e._stackPartitions,t[r]=e._slicePartitions};var b=new i,x=new m,T={radii:b,vertexFormat:x,stackPartitions:void 0,slicePartitions:void 0};return E.unpack=function(e,t,r){t=n(t,0);var a=i.unpack(e,t,b);t+=i.packedLength;var s=m.unpack(e,t,x);t+=m.packedLength;var l=e[t++],u=e[t];return o(r)?(r._radii=i.clone(a,r._radii),r._vertexFormat=m.clone(s,r._vertexFormat),r._stackPartitions=l,r._slicePartitions=u,r):(T.stackPartitions=l,T.slicePartitions=u,new E(T))},E.createGeometry=function(n){var o,a,m=n._radii,C=s.fromCartesian3(m),E=n._vertexFormat,b=n._slicePartitions+1,x=n._stackPartitions+1,T=x*b,P=new Float64Array(3*T),A=6*(b-1)*(x-1),D=h.createTypedArray(T,A),M=E.normal?new Float32Array(3*T):void 0,I=E.tangent?new Float32Array(3*T):void 0,O=E.binormal?new Float32Array(3*T):void 0,R=E.st?new Float32Array(2*T):void 0,L=new Array(b),N=new Array(b),F=0;for(o=0;b>o;o++){var B=d.TWO_PI*o/(b-1);L[o]=w(B),N[o]=S(B),P[F++]=0,P[F++]=0,P[F++]=m.z}for(o=1;x-1>o;o++){var z=Math.PI*o/(x-1),k=S(z),V=m.x*k,U=m.y*k,W=m.z*w(z);for(a=0;b>a;a++)P[F++]=L[a]*V,P[F++]=N[a]*U,P[F++]=W}for(o=0;b>o;o++)P[F++]=0,P[F++]=0,P[F++]=-m.z;var G=new c;E.position&&(G.position=new u({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:P}));var H=0,q=0,j=0,Y=0;if(E.st||E.normal||E.tangent||E.binormal){for(o=0;T>o;o++){var X=i.fromArray(P,3*o,f),Z=C.geodeticSurfaceNormal(X,v);if(E.st){var J=t.negate(Z,y);t.magnitude(J)P.length&&(F=3*(o-b*Math.floor(.5*x))),i.fromArray(P,F,J),C.geodeticSurfaceNormal(J,J),t.negate(J,J)),R[H++]=Math.atan2(J.y,J.x)/d.TWO_PI+.5,R[H++]=Math.asin(Z.z)/Math.PI+.5}if(E.normal&&(M[q++]=Z.x,M[q++]=Z.y,M[q++]=Z.z),E.tangent||E.binormal){var Q=g;if(b>o||o>T-b-1?(i.cross(i.UNIT_X,Z,Q),i.normalize(Q,Q)):(i.cross(i.UNIT_Z,Z,Q),i.normalize(Q,Q)),E.tangent&&(I[j++]=Q.x,I[j++]=Q.y,I[j++]=Q.z),E.binormal){var K=i.cross(Z,Q,_);i.normalize(K,K),O[Y++]=K.x,O[Y++]=K.y,O[Y++]=K.z}}}E.st&&(G.st=new u({componentDatatype:r.FLOAT,componentsPerAttribute:2,values:R})),E.normal&&(G.normal=new u({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:M})),E.tangent&&(G.tangent=new u({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:I})),E.binormal&&(G.binormal=new u({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:O}))}for(F=0,o=0;x>o;o++){var $=o*b,et=(o+1)*b;for(a=0;b-1>a;a++)D[F++]=et+a,D[F++]=et+a+1,D[F++]=$+a+1,D[F++]=et+a,D[F++]=$+a+1,D[F++]=$+a}return new l({attributes:G,indices:D,primitiveType:p.TRIANGLES,boundingSphere:e.fromEllipsoid(C)})},E}),i("Core/EllipsoidOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType"],function(e,t,i,r,n,o,a,s,l,u,c,h,d){"use strict";var p=new t(1,1,1),m=Math.cos,f=Math.sin,v=function(e){e=r(e,r.EMPTY_OBJECT);var i=r(e.radii,p),n=r(e.stackPartitions,10),o=r(e.slicePartitions,8),a=r(e.subdivisions,128);this._radii=t.clone(i),this._stackPartitions=n,this._slicePartitions=o,this._subdivisions=a,this._workerName="createEllipsoidOutlineGeometry"};v.packedLength=t.packedLength+3,v.pack=function(e,i,n){n=r(n,0),t.pack(e._radii,i,n),n+=t.packedLength,i[n++]=e._stackPartitions,i[n++]=e._slicePartitions,i[n]=e._subdivisions};var g=new t,_={radii:g,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};return v.unpack=function(e,i,o){i=r(i,0);var a=t.unpack(e,i,g);i+=t.packedLength;var s=e[i++],l=e[i++],u=e[i++];return n(o)?(o._radii=t.clone(a,o._radii),o._stackPartitions=s,o._slicePartitions=l,o._subdivisions=u,o):(_.stackPartitions=s,_.slicePartitions=l,_.subdivisions=u,new v(_))},v.createGeometry=function(t){var r,n,o,p,v,g,_=t._radii,y=a.fromCartesian3(_),C=t._stackPartitions,w=t._slicePartitions,S=t._subdivisions,E=S*(C+w-1),b=E-w+2,x=new Float64Array(3*b),T=c.createTypedArray(b,2*E),P=0,A=new Array(S),D=new Array(S);for(r=0;S>r;r++)o=h.TWO_PI*r/S,A[r]=m(o),D[r]=f(o);for(r=1;C>r;r++)for(p=Math.PI*r/C,v=m(p),g=f(p),n=0;S>n;n++)x[P++]=_.x*A[n]*g,x[P++]=_.y*D[n]*g,x[P++]=_.z*v;for(A.length=w,D.length=w,r=0;w>r;r++)o=h.TWO_PI*r/w,A[r]=m(o),D[r]=f(o);for(x[P++]=0,x[P++]=0,x[P++]=_.z,r=1;S>r;r++)for(p=Math.PI*r/S,v=m(p),g=f(p),n=0;w>n;n++)x[P++]=_.x*A[n]*g,x[P++]=_.y*D[n]*g,x[P++]=_.z*v;for(x[P++]=0,x[P++]=0,x[P++]=-_.z,P=0,r=0;C-1>r;++r){var M=r*S;for(n=0;S-1>n;++n)T[P++]=M+n,T[P++]=M+n+1;T[P++]=M+S-1,T[P++]=M}var I=S*(C-1);for(n=1;w+1>n;++n)T[P++]=I,T[P++]=I+n;for(r=0;S-2>r;++r){var O=r*w+1+I,R=(r+1)*w+1+I;for(n=0;w-1>n;++n)T[P++]=R+n,T[P++]=O+n;T[P++]=R+w-1,T[P++]=O+w-1}var L=x.length/3-1;for(n=L-1;n>L-w-1;--n)T[P++]=L,T[P++]=n;var N=new u({position:new l({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:x})});return new s({attributes:N,indices:T,primitiveType:d.LINES,boundingSphere:e.fromEllipsoid(y)})},v}),i("Core/EllipsoidTerrainProvider",["./defaultValue","./defined","./defineProperties","./Ellipsoid","./Event","./GeographicTilingScheme","./HeightmapTerrainData","./TerrainProvider"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(i){i=e(i,{}),this._tilingScheme=i.tilingScheme,t(this._tilingScheme)||(this._tilingScheme=new o({ellipsoid:e(i.ellipsoid,r.WGS84)})),this._levelZeroMaximumGeometricError=s.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,64,this._tilingScheme.getNumberOfXTilesAtLevel(0));var l=16,u=16;this._terrainData=new a({buffer:new Uint8Array(l*u),width:16,height:16}),this._errorEvent=new n};return i(l.prototype,{errorEvent:{get:function(){return this._errorEvent +}},credit:{get:function(){return void 0}},tilingScheme:{get:function(){return this._tilingScheme}},ready:{get:function(){return!0}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}}}),l.prototype.requestTileGeometry=function(){return this._terrainData},l.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<=i||i===1/0||i!==i?void 0:t.multiplyByScalar(e,i,r)}function u(e,i){return e.transformPositionToScaledSpace(i,v),t.normalize(v,v)}var c=function(e,i){this._ellipsoid=e,this._cameraPosition=new t,this._cameraPositionInScaledSpace=new t,this._distanceToLimbInScaledSpaceSquared=0,r(i)&&(this.cameraPosition=i)};n(c.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(e){var i=this._ellipsoid,r=i.transformPositionToScaledSpace(e,this._cameraPositionInScaledSpace),n=t.magnitudeSquared(r)-1;t.clone(e,this._cameraPosition),this._cameraPositionInScaledSpace=r,this._distanceToLimbInScaledSpaceSquared=n}}});var h=new t;c.prototype.isPointVisible=function(e){var t=this._ellipsoid,i=t.transformPositionToScaledSpace(e,h);return this.isScaledSpacePointVisible(i)},c.prototype.isScaledSpacePointVisible=function(e){var i=this._cameraPositionInScaledSpace,r=this._distanceToLimbInScaledSpaceSquared,n=t.subtract(e,i,h),o=-t.dot(n,i),a=o>r&&o*o/t.magnitudeSquared(n)>r;return!a},c.prototype.computeHorizonCullingPoint=function(e,i,n){r(n)||(n=new t);for(var o=this._ellipsoid,a=u(o,e),c=0,h=0,d=i.length;d>h;++h){var p=i[h],m=s(o,p,a);c=Math.max(c,m)}return l(a,c,n)};var d=new t;c.prototype.computeHorizonCullingPointFromVertices=function(e,n,o,a,c){r(c)||(c=new t),a=i(a,t.ZERO);for(var h=this._ellipsoid,p=u(h,e),m=0,f=0,v=n.length;v>f;f+=o){d.x=n[f]+a.x,d.y=n[f+1]+a.y,d.z=n[f+2]+a.z;var g=s(h,d,p);m=Math.max(m,g)}return l(p,m,c)};var p=[];c.prototype.computeHorizonCullingPointFromRectangle=function(i,r,n){var o=a.subsample(i,r,0,p),s=e.fromPoints(o);return t.magnitude(s.center)<.1*r.minimumRadius?void 0:this.computeHorizonCullingPoint(s.center,o,n)};var m=new t,f=new t,v=new t;return c}),i("Core/EventHelper",["./defined","./DeveloperError"],function(){"use strict";var e=function(){this._removalFunctions=[]};return e.prototype.add=function(e,t,i){var r=e.addEventListener(t,i);this._removalFunctions.push(r);var n=this;return function(){r();var e=n._removalFunctions;e.splice(e.indexOf(r),1)}},e.prototype.removeAll=function(){for(var e=this._removalFunctions,t=0,i=e.length;i>t;++t)e[t]();e.length=0},e}),i("Core/ExtrapolationType",["./freezeObject"],function(e){"use strict";var t={NONE:0,HOLD:1,EXTRAPOLATE:2};return e(t)}),i("Core/GeometryInstanceAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.value=t.value};return t}),i("Core/HermitePolynomialApproximation",["./defaultValue","./defined","./DeveloperError","./Math"],function(e,t,i,r){"use strict";function n(e,t,i,r,o,a){var s,l,u,c=0;if(r>0){for(l=0;o>l;l++){for(s=!1,u=0;ul;l++){for(s=!1,u=0;ud;d++){var p=Math.floor(d*h);for(s=0;c>s;s++)l=t[s]*o*(a+1)+d,e[p+s]=n[l];for(var m=1;c>m;m++){var f=0,v=Math.floor(m*(1-m)/2)+c*m,g=!1;for(s=0;c-m>s;s++){var _,y,C=i[t[s]],w=i[t[s+m]];if(0>=w-C)l=t[s]*o*(a+1)+o*m+d,_=n[l],y=_/r.factorial(m),e[p+v+f]=y,f++;else{var S=Math.floor((m-1)*(2-m)/2)+c*(m-1);_=e[p+S+s+1]-e[p+S+s],y=_/(w-C),e[p+v+f]=y,f++}g=g||0!==_}g&&(u=Math.max(u,m))}}return u}var a=r.factorial,s={type:"Hermite"};s.getRequiredDataPoints=function(t,i){return i=e(i,0),Math.max(Math.floor((t+1)/(i+1)),2)},s.interpolateOrderZero=function(e,i,r,o,s){t(s)||(s=new Array(o));var l,u,c,h,d,p,m=i.length,f=new Array(o);for(l=0;o>l;l++){s[l]=0;var v=new Array(m);for(f[l]=v,u=0;m>u;u++)v[u]=[]}var g=m,_=new Array(g);for(l=0;g>l;l++)_[l]=l;var y=m-1;for(h=0;o>h;h++){for(u=0;g>u;u++)p=_[u]*o+h,f[h][0].push(r[p]);for(l=1;g>l;l++){var C=!1;for(u=0;g-l>u;u++){var w,S=i[_[u]],E=i[_[u+l]];0>=E-S?(p=_[u]*o+o*l+h,w=r[p],f[h][l].push(w/a(l))):(w=f[h][l-1][u+1]-f[h][l-1][u],f[h][l].push(w/(E-S))),C=C||0!==w}C||(y=l-1)}}for(c=0,d=0;d>=c;c++)for(l=c;y>=l;l++){var b=n(e,_,i,c,l,[]);for(h=0;o>h;h++){var x=f[h][l][0];s[h+c*o]+=x*b}}return s};var l=[];return s.interpolate=function(e,i,r,a,s,u,c){var h=a*(u+1);t(c)||(c=new Array(h));for(var d=0;h>d;d++)c[d]=0;for(var p=i.length,m=new Array(p*(s+1)),f=0;p>f;f++)for(var v=0;s+1>v;v++)m[f*(s+1)+v]=f;for(var g=m.length,_=l,y=o(_,m,i,r,a,s),C=[],w=g*(g+1)/2,S=Math.min(y,u),E=0;S>=E;E++)for(f=E;y>=f;f++){C.length=0;for(var b=n(e,m,i,E,f,C),x=Math.floor(f*(1-f)/2)+g*f,T=0;a>T;T++){var P=Math.floor(T*w),A=_[P+x];c[T+E*a]+=A*b}}return c},s}),i("Core/IauOrientationParameters",[],function(){"use strict";var e=function(e,t,i,r){this.rightAscension=e,this.declination=t,this.rotation=i,this.rotationRate=r};return e}),i("Core/Iau2000Orientation",["./defined","./IauOrientationParameters","./JulianDate","./Math","./TimeConstants"],function(e,t,i,r,n){"use strict";var o={},a=32.184,s=2451545,l=-.0529921,u=-.1059842,c=13.0120009,h=13.3407154,d=.9856003,p=26.4057084,m=13.064993,f=.3287146,v=1.7484877,g=-.1589763,_=.0036096,y=.1643573,C=12.9590088,w=new i;return o.ComputeMoon=function(o,S){e(o)||(o=i.now()),w=i.addSeconds(o,a,w);var E=i.totalDays(w)-s,b=E/n.DAYS_PER_JULIAN_CENTURY,x=(125.045+l*E)*r.RADIANS_PER_DEGREE,T=(250.089+u*E)*r.RADIANS_PER_DEGREE,P=(260.008+c*E)*r.RADIANS_PER_DEGREE,A=(176.625+h*E)*r.RADIANS_PER_DEGREE,D=(357.529+d*E)*r.RADIANS_PER_DEGREE,M=(311.589+p*E)*r.RADIANS_PER_DEGREE,I=(134.963+m*E)*r.RADIANS_PER_DEGREE,O=(276.617+f*E)*r.RADIANS_PER_DEGREE,R=(34.226+v*E)*r.RADIANS_PER_DEGREE,L=(15.134+g*E)*r.RADIANS_PER_DEGREE,N=(119.743+_*E)*r.RADIANS_PER_DEGREE,F=(239.961+y*E)*r.RADIANS_PER_DEGREE,B=(25.053+C*E)*r.RADIANS_PER_DEGREE,z=Math.sin(x),k=Math.sin(T),V=Math.sin(P),U=Math.sin(A),W=Math.sin(D),G=Math.sin(M),H=Math.sin(I),q=Math.sin(O),j=Math.sin(R),Y=Math.sin(L),X=Math.sin(N),Z=Math.sin(F),J=Math.sin(B),Q=Math.cos(x),K=Math.cos(T),$=Math.cos(P),et=Math.cos(A),tt=Math.cos(D),it=Math.cos(M),rt=Math.cos(I),nt=Math.cos(O),ot=Math.cos(R),at=Math.cos(L),st=Math.cos(N),lt=Math.cos(F),ut=Math.cos(B),ct=(269.9949+.0031*b-3.8787*z-.1204*k+.07*V-.0172*U+.0072*G-.0052*Y+.0043*J)*r.RADIANS_PER_DEGREE,ht=(66.5392+.013*b+1.5419*Q+.0239*K-.0278*$+.0068*et-.0029*it+9e-4*rt+8e-4*at-9e-4*ut)*r.RADIANS_PER_DEGREE,dt=(38.3213+13.17635815*E-1.4e-12*E*E+3.561*z+.1208*k-.0642*V+.0158*U+.0252*W-.0066*G-.0047*H-.0046*q+.0028*j+.0052*Y+.004*X+.0019*Z-.0044*J)*r.RADIANS_PER_DEGREE,pt=(13.17635815-1.4e-12*2*E+3.561*Q*l+.1208*K*u-.0642*$*c+.0158*et*h+.0252*tt*d-.0066*it*p-.0047*rt*m-.0046*nt*f+.0028*ot*v+.0052*at*g+.004*st*_+.0019*lt*y-.0044*ut*C)/86400*r.RADIANS_PER_DEGREE;return e(S)||(S=new t),S.rightAscension=ct,S.declination=ht,S.rotation=dt,S.rotationRate=pt,S},o}),i("Core/IauOrientationAxes",["./Cartesian3","./defined","./Iau2000Orientation","./JulianDate","./Math","./Matrix3","./Quaternion"],function(e,t,i,r,n,o,a){"use strict";function s(i,r,a){var s=u;s.x=Math.cos(i+n.PI_OVER_TWO),s.y=Math.sin(i+n.PI_OVER_TWO),s.z=0;var l=Math.cos(r),d=h;d.x=l*Math.cos(i),d.y=l*Math.sin(i),d.z=Math.sin(r);var p=e.cross(d,s,c);return t(a)||(a=new o),a[0]=s.x,a[1]=p.x,a[2]=d.x,a[3]=s.y,a[4]=p.y,a[5]=d.y,a[6]=s.z,a[7]=p.z,a[8]=d.z,a}var l=function(e){t(e)&&"function"==typeof e||(e=i.ComputeMoon),this._computeFunction=e},u=new e,c=new e,h=new e,d=new o,p=new a;return l.prototype.evaluate=function(i,l){t(i)||(i=r.now());var u=this._computeFunction(i),c=s(u.rightAscension,u.declination,l),h=n.zeroToTwoPi(u.rotation),m=a.fromAxisAngle(e.UNIT_Z,h,p),f=o.fromQuaternion(a.conjugate(m,m),d),v=o.multiply(f,c,c);return v},l}),i("Core/InterpolationAlgorithm",["./DeveloperError"],function(e){"use strict";var t={};return t.type=void 0,t.getRequiredDataPoints=e.throwInstantiationError,t.interpolateOrderZero=e.throwInstantiationError,t.interpolate=e.throwInstantiationError,t}),i("Core/TimeInterval",["./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./JulianDate"],function(e,t,i,r,n,o){"use strict";var a=function(i){i=e(i,e.EMPTY_OBJECT),this.start=t(i.start)?o.clone(i.start):new o,this.stop=t(i.stop)?o.clone(i.stop):new o,this.data=i.data,this.isStartIncluded=e(i.isStartIncluded,!0),this.isStopIncluded=e(i.isStopIncluded,!0)};i(a.prototype,{isEmpty:{get:function(){var e=o.compare(this.stop,this.start);return 0>e||0===e&&(!this.isStartIncluded||!this.isStopIncluded)}}});var s={start:void 0,stop:void 0,isStartIncluded:void 0,isStopIncluded:void 0,data:void 0};return a.fromIso8601=function(i,r){var n=i.iso8601.split("/"),l=o.fromIso8601(n[0]),u=o.fromIso8601(n[1]),c=e(i.isStartIncluded,!0),h=e(i.isStopIncluded,!0),d=i.data;return t(r)?(r.start=l,r.stop=u,r.isStartIncluded=c,r.isStopIncluded=h,r.data=d,r):(s.start=l,s.stop=u,s.isStartIncluded=c,s.isStopIncluded=h,s.data=d,new a(s))},a.toIso8601=function(e,t){return o.toIso8601(e.start,t)+"/"+o.toIso8601(e.stop,t)},a.clone=function(e,i){return t(e)?t(i)?(i.start=e.start,i.stop=e.stop,i.isStartIncluded=e.isStartIncluded,i.isStopIncluded=e.isStopIncluded,i.data=e.data,i):new a(e):void 0},a.equals=function(e,i,r){return e===i||t(e)&&t(i)&&(e.isEmpty&&i.isEmpty||e.isStartIncluded===i.isStartIncluded&&e.isStopIncluded===i.isStopIncluded&&o.equals(e.start,i.start)&&o.equals(e.stop,i.stop)&&(e.data===i.data||t(r)&&r(e.data,i.data)))},a.equalsEpsilon=function(e,i,r,n){return e===i||t(e)&&t(i)&&(e.isEmpty&&i.isEmpty||e.isStartIncluded===i.isStartIncluded&&e.isStopIncluded===i.isStopIncluded&&o.equalsEpsilon(e.start,i.start,r)&&o.equalsEpsilon(e.stop,i.stop,r)&&(e.data===i.data||t(n)&&n(e.data,i.data)))},a.intersect=function(e,i,r,n){if(!t(i))return a.clone(a.EMPTY,r);var s=e.start,l=e.stop,u=i.start,c=i.stop,h=o.greaterThanOrEquals(u,s)&&o.greaterThanOrEquals(l,u),d=!h&&o.lessThanOrEquals(u,s)&&o.lessThanOrEquals(s,c);if(!h&&!d)return a.clone(a.EMPTY,r);var p=e.isStartIncluded,m=e.isStopIncluded,f=i.isStartIncluded,v=i.isStopIncluded,g=o.lessThan(l,c);return r.start=h?u:s,r.isStartIncluded=p&&f||!o.equals(u,s)&&(h&&f||d&&p),r.stop=g?l:c,r.isStopIncluded=g?m:m&&v||!o.equals(c,l)&&v,r.data=t(n)?n(e.data,i.data):e.data,r},a.contains=function(e,t){if(e.isEmpty)return!1;var i=o.compare(e.start,t);if(0===i)return e.isStartIncluded;var r=o.compare(t,e.stop);return 0===r?e.isStopIncluded:0>i&&0>r},a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e,t){return a.equals(this,e,t)},a.prototype.equalsEpsilon=function(e,t,i){return a.equalsEpsilon(this,e,t,i)},a.prototype.toString=function(){return a.toIso8601(this)},a.EMPTY=n(new a({start:new o,stop:new o,isStartIncluded:!1,isStopIncluded:!1})),a}),i("Core/Iso8601",["./freezeObject","./JulianDate","./TimeInterval"],function(e,t,i){"use strict";var r=e(t.fromIso8601("0000-01-01T00:00:00Z")),n=e(t.fromIso8601("9999-12-31T24:00:00Z")),o=e(new i({start:r,stop:n})),a={MINIMUM_VALUE:r,MAXIMUM_VALUE:n,MAXIMUM_INTERVAL:o};return a}),i("Core/KeyboardEventModifier",["./freezeObject"],function(e){"use strict";var t={SHIFT:0,CTRL:1,ALT:2};return e(t)}),i("Core/LagrangePolynomialApproximation",["./defined"],function(e){"use strict";var t={type:"Lagrange"};return t.getRequiredDataPoints=function(e){return Math.max(e+1,2)},t.interpolateOrderZero=function(t,i,r,n,o){e(o)||(o=new Array(n));var a,s,l=i.length;for(a=0;n>a;a++)o[a]=0;for(a=0;l>a;a++){var u=1;for(s=0;l>s;s++)if(s!==a){var c=i[a]-i[s];u*=(t-i[s])/c}for(s=0;n>s;s++)o[s]+=u*r[a*n+s]}return o},t}),i("Core/LinearApproximation",["./defined","./DeveloperError"],function(e){"use strict";var t={type:"Linear"};return t.getRequiredDataPoints=function(){return 2},t.interpolateOrderZero=function(t,i,r,n,o){e(o)||(o=new Array(n));var a,s,l,u=i[0],c=i[1];for(a=0;n>a;a++)s=r[a],l=r[a+n],o[a]=((l-s)*t+c*s-u*l)/(c-u);return o},t}),i("Core/MapProjection",["./defineProperties","./DeveloperError"],function(e,t){"use strict";var i=function(){t.throwInstantiationError()};return e(i.prototype,{ellipsoid:{get:t.throwInstantiationError}}),i.prototype.project=t.throwInstantiationError,i.prototype.unproject=t.throwInstantiationError,i}),i("Core/Matrix2",["./Cartesian2","./defaultValue","./defined","./DeveloperError","./freezeObject"],function(e,t,i,r,n){"use strict";var o=function(e,i,r,n){this[0]=t(e,0),this[1]=t(r,0),this[2]=t(i,0),this[3]=t(n,0)};o.packedLength=4,o.pack=function(e,i,r){r=t(r,0),i[r++]=e[0],i[r++]=e[1],i[r++]=e[2],i[r++]=e[3]},o.unpack=function(e,r,n){return r=t(r,0),i(n)||(n=new o),n[0]=e[r++],n[1]=e[r++],n[2]=e[r++],n[3]=e[r++],n},o.clone=function(e,t){return i(e)?i(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):new o(e[0],e[2],e[1],e[3]):void 0},o.fromArray=function(e,r,n){return r=t(r,0),i(n)||(n=new o),n[0]=e[r],n[1]=e[r+1],n[2]=e[r+2],n[3]=e[r+3],n},o.fromColumnMajorArray=function(e,t){return o.clone(e,t)},o.fromRowMajorArray=function(e,t){return i(t)?(t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3],t):new o(e[0],e[1],e[2],e[3])},o.fromScale=function(e,t){return i(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=e.y,t):new o(e.x,0,0,e.y)},o.fromUniformScale=function(e,t){return i(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=e,t):new o(e,0,0,e)},o.fromRotation=function(e,t){var r=Math.cos(e),n=Math.sin(e);return i(t)?(t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t):new o(r,-n,n,r)},o.toArray=function(e,t){return i(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):[e[0],e[1],e[2],e[3]]},o.getElementIndex=function(e,t){return 2*e+t},o.getColumn=function(e,t,i){var r=2*t,n=e[r],o=e[r+1];return i.x=n,i.y=o,i},o.setColumn=function(e,t,i,r){r=o.clone(e,r);var n=2*t;return r[n]=i.x,r[n+1]=i.y,r},o.getRow=function(e,t,i){var r=e[t],n=e[t+2];return i.x=r,i.y=n,i},o.setRow=function(e,t,i,r){return r=o.clone(e,r),r[t]=i.x,r[t+2]=i.y,r};var a=new e;o.getScale=function(t,i){return i.x=e.magnitude(e.fromElements(t[0],t[1],a)),i.y=e.magnitude(e.fromElements(t[2],t[3],a)),i};var s=new e;return o.getMaximumScale=function(t){return o.getScale(t,s),e.maximumComponent(s)},o.multiply=function(e,t,i){var r=e[0]*t[0]+e[2]*t[1],n=e[0]*t[2]+e[2]*t[3],o=e[1]*t[0]+e[3]*t[1],a=e[1]*t[2]+e[3]*t[3];return i[0]=r,i[1]=o,i[2]=n,i[3]=a,i},o.add=function(e,t,i){return i[0]=e[0]+t[0],i[1]=e[1]+t[1],i[2]=e[2]+t[2],i[3]=e[3]+t[3],i},o.subtract=function(e,t,i){return i[0]=e[0]-t[0],i[1]=e[1]-t[1],i[2]=e[2]-t[2],i[3]=e[3]-t[3],i},o.multiplyByVector=function(e,t,i){var r=e[0]*t.x+e[2]*t.y,n=e[1]*t.x+e[3]*t.y;return i.x=r,i.y=n,i},o.multiplyByScalar=function(e,t,i){return i[0]=e[0]*t,i[1]=e[1]*t,i[2]=e[2]*t,i[3]=e[3]*t,i},o.multiplyByScale=function(e,t,i){return i[0]=e[0]*t.x,i[1]=e[1]*t.x,i[2]=e[2]*t.y,i[3]=e[3]*t.y,i},o.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t},o.transpose=function(e,t){var i=e[0],r=e[2],n=e[1],o=e[3];return t[0]=i,t[1]=r,t[2]=n,t[3]=o,t},o.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t},o.equals=function(e,t){return e===t||i(e)&&i(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]},o.equalsArray=function(e,t,i){return e[0]===t[i]&&e[1]===t[i+1]&&e[2]===t[i+2]&&e[3]===t[i+3]},o.equalsEpsilon=function(e,t,r){return e===t||i(e)&&i(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r},o.IDENTITY=n(new o(1,0,0,1)),o.ZERO=n(new o(0,0,0,0)),o.COLUMN0ROW0=0,o.COLUMN0ROW1=1,o.COLUMN1ROW0=2,o.COLUMN1ROW1=3,o.prototype.clone=function(e){return o.clone(this,e)},o.prototype.equals=function(e){return o.equals(this,e)},o.prototype.equalsEpsilon=function(e,t){return o.equalsEpsilon(this,e,t)},o.prototype.toString=function(){return"("+this[0]+", "+this[2]+")\n"+"("+this[1]+", "+this[3]+")"},o}),i("Core/NearFarScalar",["./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var i=function(t,i,r,n){this.near=e(t,0),this.nearValue=e(i,0),this.far=e(r,1),this.farValue=e(n,0)};return i.clone=function(e,r){return t(e)?t(r)?(r.near=e.near,r.nearValue=e.nearValue,r.far=e.far,r.farValue=e.farValue,r):new i(e.near,e.nearValue,e.far,e.farValue):void 0},i.packedLength=4,i.pack=function(t,i,r){r=e(r,0),i[r++]=t.near,i[r++]=t.nearValue,i[r++]=t.far,i[r]=t.farValue},i.unpack=function(r,n,o){return n=e(n,0),t(o)||(o=new i),o.near=r[n++],o.nearValue=r[n++],o.far=r[n++],o.farValue=r[n],o},i.equals=function(e,i){return e===i||t(e)&&t(i)&&e.near===i.near&&e.nearValue===i.nearValue&&e.far===i.far&&e.farValue===i.farValue},i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i}),i("Core/ObjectOrientedBoundingBox",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./deprecationWarning","./Matrix3"],function(e,t,i,r,n,o){"use strict";function a(e,t,i,r,n){var a=t[e]+i[0]*r[o.getElementIndex(0,e)]+i[1]*r[o.getElementIndex(1,e)]+i[2]*r[o.getElementIndex(2,e)];return Math.abs(n[e])>a?!0:!1}function s(e,t,i,r,n){var a=n[0]*r[o.getElementIndex(0,e)]+n[1]*r[o.getElementIndex(1,e)]+n[2]*r[o.getElementIndex(2,e)],s=i[e]+t[0]*r[o.getElementIndex(0,e)]+t[1]*r[o.getElementIndex(1,e)]+t[2]*r[o.getElementIndex(2,e)];return Math.abs(a)>s?!0:!1}function l(e,t,i,r,n,a){var s=a[(e+2)%3]*n[o.getElementIndex((e+1)%3,t)]-a[(e+1)%3]*n[o.getElementIndex((e+2)%3,t)],l=i[(e+1)%3]*n[o.getElementIndex((e+2)%3,t)]+i[(e+2)%3]*n[o.getElementIndex((e+1)%3,t)];return l+=r[(t+1)%3]*n[o.getElementIndex(e,(t+2)%3)]+r[(t+2)%3]*n[o.getElementIndex(e,(t+1)%3)],Math.abs(s)>l?!0:!1}var u=function(i,r,a){n("ObjectOrientedBoundingBox","ObjectOrientedBoundingBox was deprecated in Cesium 1.11. It will be removed in 1.12. Use OrientedBoundingBox instead."),this.rotation=o.clone(t(i,o.IDENTITY)),this.translation=e.clone(t(r,e.ZERO)),this.scale=e.clone(t(a,e.ZERO))},c=new e,h=new e,d=new e,p=new e,m=new e,f=new o,v={unitary:new o,diagonal:new o};u.fromPoints=function(t,r){if(i(r)||(r=new u),!i(t)||0===t.length)return r.tranformMatrix=o.IDENTITY,r.translation=e.ZERO,r.scale=e.ZERO,r;var n,a=t.length,s=e.clone(t[0],c);for(n=1;a>n;n++)e.add(s,t[n],s);var l=1/a;e.multiplyByScalar(s,l,s);var g,_=0,y=0,C=0,w=0,S=0,E=0;for(n=0;a>n;n++)g=e.subtract(t[n],s,h),_+=g.x*g.x,y+=g.x*g.y,C+=g.x*g.z,w+=g.y*g.y,S+=g.y*g.z,E+=g.z*g.z;_*=l,y*=l,C*=l,w*=l,S*=l,E*=l;var b=f;b[0]=_,b[1]=y,b[2]=C,b[3]=y,b[4]=w,b[5]=S,b[6]=C,b[7]=S,b[8]=E;var x=o.computeEigenDecomposition(b,v),T=o.transpose(x.unitary,r.rotation);g=e.subtract(t[0],s,h);var P=o.multiplyByVector(T,g,d),A=e.clone(P,p),D=e.clone(P,m);for(n=1;a>n;n++)g=e.subtract(t[n],s,g),o.multiplyByVector(T,g,P),e.minimumByComponent(D,P,D),e.maximumByComponent(A,P,A);var M=e.add(D,A,d);e.multiplyByScalar(M,.5,M),o.multiplyByVector(T,M,M),e.add(s,M,r.translation);var I=e.subtract(A,D,d);return e.multiplyByScalar(I,.5,r.scale),r},u.fromBoundingRectangle=function(e,t,r){i(r)||(r=new u),i(t)?o.fromRotationZ(t,r.rotation):o.clone(o.IDENTITY,r.rotation);var n=r.scale;n.x=.5*e.width,n.y=.5*e.height,n.z=0;var a=o.multiplyByVector(r.rotation,n,r.translation);return a.x+=e.x,a.y+=e.y,r},u.clone=function(t,r){return i(t)?i(r)?(o.clone(t.rotation,r.rotation),e.clone(t.translation,r.translation),e.clone(t.scale,r.scale),r):new u(t.rotation,t.translation,t.scale):void 0};var g=new o,_=new o,y=new e,C=new Array(3),w=new Array(3),S=new Array(3);return u.intersect=function(t,i){var r=o.transpose(t.rotation,g),n=o.multiply(r,i.rotation,_);o.abs(n,n);var u=C,c=w,h=S;return e.subtract(t.translation,i.translation,y),o.multiplyByVector(r,y,y),e.pack(y,u),e.pack(t.scale,c),e.pack(i.scale,h),a(0,c,h,n,u)?!1:a(1,c,h,n,u)?!1:a(2,c,h,n,u)?!1:s(0,c,h,n,u)?!1:s(1,c,h,n,u)?!1:s(2,c,h,n,u)?!1:l(0,0,c,h,n,u)?!1:l(1,0,c,h,n,u)?!1:l(2,0,c,h,n,u)?!1:l(0,1,c,h,n,u)?!1:l(1,1,c,h,n,u)?!1:l(2,1,c,h,n,u)?!1:l(0,2,c,h,n,u)?!1:l(1,2,c,h,n,u)?!1:l(2,2,c,h,n,u)?!1:!0},u.equals=function(t,r){return t===r||i(t)&&i(r)&&e.equals(t.translation,r.translation)&&o.equals(t.rotation,r.rotation)&&e.equals(t.scale,r.scale)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),i("Core/Visibility",["./freezeObject"],function(e){"use strict";var t={NONE:-1,PARTIAL:0,FULL:1};return e(t)}),i("Core/Occluder",["./BoundingSphere","./Cartesian3","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math","./Rectangle","./Visibility"],function(e,t,i,r,n,o,a,s,l,u){"use strict";var c=function(e,i){this._occluderPosition=t.clone(e.center),this._occluderRadius=e.radius,this._horizonDistance=0,this._horizonPlaneNormal=void 0,this._horizonPlanePosition=void 0,this._cameraPosition=void 0,this.cameraPosition=i},h=new t;n(c.prototype,{position:{get:function(){return this._occluderPosition}},radius:{get:function(){return this._occluderRadius}},cameraPosition:{set:function(e){e=t.clone(e,this._cameraPosition);var i,r,n,o=t.subtract(this._occluderPosition,e,h),a=t.magnitudeSquared(o),s=this._occluderRadius*this._occluderRadius;if(a>s){i=Math.sqrt(a-s),a=1/Math.sqrt(a),r=t.multiplyByScalar(o,a,h);var l=i*i*a;n=t.add(e,t.multiplyByScalar(r,l,h),h)}else i=Number.MAX_VALUE;this._horizonDistance=i,this._horizonPlaneNormal=r,this._horizonPlanePosition=n,this._cameraPosition=e}}}),c.fromBoundingSphere=function(e,i,n){if(!r(e))throw new o("occluderBoundingSphere is required.");if(!r(i))throw new o("camera position is required.");return r(n)?(t.clone(e.center,n._occluderPosition),n._occluderRadius=e.radius,n.cameraPosition=i,n):new c(e,i)};var d=new t;c.prototype.isPointVisible=function(e){if(this._horizonDistance!==Number.MAX_VALUE){var i=t.subtract(e,this._occluderPosition,d),r=this._occluderRadius;if(r=t.magnitudeSquared(i)-r*r,r>0)return r=Math.sqrt(r)+this._horizonDistance,i=t.subtract(e,this._cameraPosition,i),r*r>t.magnitudeSquared(i)}return!1};var p=new t;c.prototype.isBoundingSphereVisible=function(e){var i=t.clone(e.center,p),r=e.radius;if(this._horizonDistance!==Number.MAX_VALUE){var n=t.subtract(i,this._occluderPosition,d),o=this._occluderRadius-r;if(o=t.magnitudeSquared(n)-o*o,r0?(o=Math.sqrt(o)+this._horizonDistance,n=t.subtract(i,this._cameraPosition,n),o*o+r*r>t.magnitudeSquared(n)):!1;if(o>0){n=t.subtract(i,this._cameraPosition,n);var a=t.magnitudeSquared(n),s=this._occluderRadius*this._occluderRadius,l=r*r;return(this._horizonDistance*this._horizonDistance+s)*l>a*s?!0:(o=Math.sqrt(o)+this._horizonDistance,o*o+l>a)}return!0}return!1};var m=new t;c.prototype.computeVisibility=function(e){if(!r(e))throw new o("occludeeBS is required.");var i=t.clone(e.center),n=e.radius;if(n>this._occluderRadius)return u.FULL;if(this._horizonDistance!==Number.MAX_VALUE){var a=t.subtract(i,this._occluderPosition,m),s=this._occluderRadius-n,l=t.magnitudeSquared(a);if(s=l-s*s,s>0){s=Math.sqrt(s)+this._horizonDistance,a=t.subtract(i,this._cameraPosition,a);var c=t.magnitudeSquared(a);return c>s*s+n*n?u.NONE:(s=this._occluderRadius+n,s=l-s*s,s>0?(s=Math.sqrt(s)+this._horizonDistance,s*s+n*n>c?u.FULL:u.PARTIAL):(a=t.subtract(i,this._horizonPlanePosition,a),t.dot(a,this._horizonPlaneNormal)>-n?u.PARTIAL:u.FULL))}}return u.NONE};var f=new t;c.computeOccludeePoint=function(e,i,r){var n=t.clone(i),a=t.clone(e.center),s=e.radius,l=r.length;if(t.equals(a,i))throw new o("occludeePosition must be different than occluderBoundingSphere.center");var u=t.normalize(t.subtract(n,a,f),f),h=-t.dot(u,a),d=c._anyRotationVector(a,u,h),p=c._horizonToPlaneNormalDotProduct(e,u,h,d,r[0]);if(!p)return void 0;for(var m,v=1;l>v;++v){if(m=c._horizonToPlaneNormalDotProduct(e,u,h,d,r[v]),!m)return void 0;p>m&&(p=m)}if(.0017453283658983088>p)return void 0;var g=s/p;return t.add(a,t.multiplyByScalar(u,g,f),f)};var v=[];c.computeOccludeePointFromRectangle=function(r,n){n=i(n,a.WGS84);var o=l.subsample(r,n,0,v),s=e.fromPoints(o),u=t.ZERO;return t.equals(u,s.center)?void 0:c.computeOccludeePoint(new e(u,n.minimumRadius),s.center,o)};var g=new t;c._anyRotationVector=function(e,i,r){var n=t.abs(i,g),o=n.x>n.y?0:1;(0===o&&n.z>n.x||1===o&&n.z>n.y)&&(o=2);var a,s=new t;0===o?(n.x=e.x,n.y=e.y+1,n.z=e.z+1,a=t.UNIT_X):1===o?(n.x=e.x+1,n.y=e.y,n.z=e.z+1,a=t.UNIT_Y):(n.x=e.x+1,n.y=e.y+1,n.z=e.z,a=t.UNIT_Z);var l=(t.dot(i,n)+r)/-t.dot(i,a);return t.normalize(t.subtract(t.add(n,t.multiplyByScalar(a,l,s),n),e,n),n)};var _=new t;c._rotationVector=function(e,i,r,n,o){var a=t.subtract(n,e,_);if(a=t.normalize(a,a),t.dot(i,a)<.9999999847691291){var l=t.cross(i,a,a),u=t.magnitude(l);if(u>s.EPSILON13)return t.normalize(l,new t)}return o};var y=new t,C=new t,w=new t,S=new t;return c._horizonToPlaneNormalDotProduct=function(e,i,r,n,o){var a=t.clone(o,y),s=t.clone(e.center,C),l=e.radius,u=t.subtract(s,a,w),c=t.magnitudeSquared(u),h=l*l;if(h>c)return!1;var d=c-h,p=Math.sqrt(d),m=Math.sqrt(c),f=1/m,v=p*f,g=v*p;u=t.normalize(u,u);var _=t.add(a,t.multiplyByScalar(u,g,S),S),E=Math.sqrt(d-g*g),b=this._rotationVector(s,i,r,a,n),x=t.fromElements(b.x*b.x*u.x+(b.x*b.y-b.z)*u.y+(b.x*b.z+b.y)*u.z,(b.x*b.y+b.z)*u.x+b.y*b.y*u.y+(b.y*b.z-b.x)*u.z,(b.x*b.z-b.y)*u.x+(b.y*b.z+b.x)*u.y+b.z*b.z*u.z,y);x=t.normalize(x,x);var T=t.multiplyByScalar(x,E,y);b=t.normalize(t.subtract(t.add(_,T,w),s,w),w);var P=t.dot(i,b);b=t.normalize(t.subtract(t.subtract(_,T,b),s,b),b);var A=t.dot(i,b);return A>P?P:A},c}),i("Core/Packable",["./DeveloperError"],function(e){"use strict";var t={packedLength:void 0,pack:e.throwInstantiationError,unpack:e.throwInstantiationError};return t}),i("Core/PackableForInterpolation",["./DeveloperError"],function(e){"use strict";var t={packedInterpolationLength:void 0,convertPackedArrayForInterpolation:e.throwInstantiationError,unpackInterpolationResult:e.throwInstantiationError};return t}),i("ThirdParty/measureText",[],function(){var e=function(e,t){return document.defaultView.getComputedStyle(e,null).getPropertyValue(t)},t=function(t,i,r,n){var o=t.measureText(i),a=e(t.canvas,"font-family"),s=e(t.canvas,"font-size").replace("px",""),l=!/\S/.test(i);o.fontsize=s;var u=document.createElement("div");u.style.position="absolute",u.style.opacity=0,u.style.font=s+"px "+a,u.innerHTML=i+"
    "+i,document.body.appendChild(u),o.leading=1.2*s;var c=e(u,"height");if(c=c.replace("px",""),c>=2*s&&(o.leading=0|c/2),document.body.removeChild(u),l)o.ascent=0,o.descent=0,o.bounds={minx:0,maxx:o.width,miny:0,maxy:0},o.height=0;else{var h=document.createElement("canvas"),d=100;h.width=o.width+d,h.height=3*s,h.style.opacity=1,h.style.fontFamily=a,h.style.fontSize=s;var p=h.getContext("2d");p.font=s+"px "+a;var m=h.width,f=h.height,v=f/2;p.fillStyle="white",p.fillRect(-1,-1,m+2,f+2),r&&(p.strokeStyle="black",p.lineWidth=t.lineWidth,p.strokeText(i,d/2,v)),n&&(p.fillStyle="black",p.fillText(i,d/2,v));for(var g=p.getImageData(0,0,m,f).data,_=0,y=4*m,C=g.length;++_0&&255===g[_];);var S=0|_/y;for(_=0;C>_&&255===g[_];)_+=y,_>=C&&(_=_-C+4);var E=0|_%y/4,b=1;for(_=C-3;_>=0&&255===g[_];)_-=y,0>_&&(_=C-3-4*b++);var x=0|_%y/4+1;o.ascent=v-w,o.descent=S-v,o.bounds={minx:E-d/2,maxx:x-d/2,miny:0,maxy:S-w},o.height=1+(S-w)}return o};return t}),i("Core/writeTextToCanvas",["../ThirdParty/measureText","./Color","./defaultValue","./defined","./DeveloperError"],function(e,t,i,r){"use strict";var n,o=function(o,a){if(""===o)return void 0;a=i(a,i.EMPTY_OBJECT);var s=i(a.font,"10px sans-serif"),l=i(a.stroke,!1),u=i(a.fill,!0),c=i(a.strokeWidth,1),h=document.createElement("canvas");h.width=1,h.height=1,h.style.font=s;var d=h.getContext("2d");r(n)||(r(d.imageSmoothingEnabled)?n="imageSmoothingEnabled":r(d.mozImageSmoothingEnabled)?n="mozImageSmoothingEnabled":r(d.webkitImageSmoothingEnabled)?n="webkitImageSmoothingEnabled":r(d.msImageSmoothingEnabled)&&(n="msImageSmoothingEnabled")),d.font=s,d.lineJoin="round",d.lineWidth=c,d[n]=!1,d.textBaseline=i(a.textBaseline,"bottom"),h.style.visibility="hidden",document.body.appendChild(h);var p=e(d,o,l,u);p.computedWidth=Math.max(p.width,p.bounds.maxx-p.bounds.minx),h.dimensions=p,document.body.removeChild(h),h.style.visibility="";var m=p.height-p.ascent;h.width=p.computedWidth,h.height=p.height;var f=h.height-m;if(d.font=s,d.lineJoin="round",d.lineWidth=c,d[n]=!1,l){var v=i(a.strokeColor,t.BLACK);d.strokeStyle=v.toCssColorString(),d.strokeText(o,0,f)}if(u){var g=i(a.fillColor,t.WHITE);d.fillStyle=g.toCssColorString(),d.fillText(o,0,f)}return h};return o}),i("Core/PinBuilder",["./buildModuleUrl","./Color","./defined","./DeveloperError","./loadImage","./writeTextToCanvas"],function(e,t,i,r,n,o){"use strict";function a(e,t,i){e.save(),e.scale(i/24,i/24),e.fillStyle=t.toCssColorString(),e.strokeStyle=t.brighten(.6,c).toCssColorString(),e.lineWidth=.846,e.beginPath(),e.moveTo(6.72,.422),e.lineTo(17.28,.422),e.bezierCurveTo(18.553,.422,19.577,1.758,19.577,3.415),e.lineTo(19.577,10.973),e.bezierCurveTo(19.577,12.63,18.553,13.966,17.282,13.966),e.lineTo(14.386,14.008),e.lineTo(11.826,23.578),e.lineTo(9.614,14.008),e.lineTo(6.719,13.965),e.bezierCurveTo(5.446,13.983,4.422,12.629,4.422,10.972),e.lineTo(4.422,3.416),e.bezierCurveTo(4.423,1.76,5.447,.423,6.718,.423),e.closePath(),e.fill(),e.stroke(),e.restore()}function s(e,i,r){var n=r/2.5,o=n,a=n;i.width>i.height?a=n*(i.height/i.width):i.width0;){var o=n.pop(); +if(i(o)){r+=2;var a=o.positions,s=o.holes;if(i(a)&&(r+=a.length*e.packedLength),i(s))for(var l=s.length,u=0;l>u;++u)n.push(s[u])}}return r},o.packPolygonHierarchy=function(t,r,n){for(var o=[t];o.length>0;){var a=o.pop();if(i(a)){var s=a.positions,l=a.holes;if(r[n++]=i(s)?s.length:0,r[n++]=i(l)?l.length:0,i(s))for(var u=s.length,c=0;u>c;++c,n+=3)e.pack(s[c],r,n);if(i(l))for(var h=l.length,d=0;h>d;++d)o.push(l[d])}}return n},o.unpackPolygonHierarchy=function(t,i){for(var r=t[i++],n=t[i++],a=new Array(r),s=n>0?new Array(n):void 0,l=0;r>l;++l,i+=e.packedLength)a[l]=e.unpack(t,i);for(var u=0;n>u;++u)s[u]=o.unpackPolygonHierarchy(t,i),i=s[u].startingIndex,delete s[u].startingIndex;return{positions:a,holes:s,startingIndex:i}};var a=new e;o.subdivideLineCount=function(t,i,r){var n=e.distance(t,i),o=n/r,a=Math.max(0,Math.ceil(Math.log(o)/Math.log(2)));return Math.pow(2,a)},o.subdivideLine=function(t,r,a,s){var l=o.subdivideLineCount(t,r,a),u=e.distance(t,r),c=u/l;i(s)||(s=[]);var h=s;h.length=3*l;for(var d=0,p=0;l>p;p++){var m=n(t,r,p*c,u);h[d++]=m[0],h[d++]=m[1],h[d++]=m[2]}return h};var s=new e,l=new e,u=new e,c=new e;return o.scaleToGeodeticHeightExtruded=function(n,o,a,h,d){h=t(h,r.WGS84);var p=s,m=l,f=u,v=c;if(i(n)&&i(n.attributes)&&i(n.attributes.position))for(var g=n.attributes.position.values,_=g.length/2,y=0;_>y;y+=3)e.fromArray(g,y,f),h.geodeticSurfaceNormal(f,p),v=h.scaleToGeodeticSurface(f,v),m=e.multiplyByScalar(p,a,m),m=e.add(v,m,m),g[y+_]=m.x,g[y+1+_]=m.y,g[y+2+_]=m.z,d&&(v=e.clone(f,v)),m=e.multiplyByScalar(p,o,m),m=e.add(v,m,m),g[y]=m.x,g[y+1]=m.y,g[y+2]=m.z;return n},o}),i("Core/pointInsideTriangle",["./barycentricCoordinates","./Cartesian3"],function(e,t){"use strict";var i=new t,r=function(t,r,n,o){return e(t,r,n,o,i),i.x>0&&i.y>0&&i.z>0};return r}),i("Core/Queue",[],function(){"use strict";var e=function(){this._array=[],this._offset=0,this.length=0};return e.prototype.enqueue=function(e){this._array.push(e),this.length++},e.prototype.dequeue=function(){if(0===this.length)return void 0;var e=this._array,t=this._offset,i=e[t];return e[t]=void 0,t++,t>10&&2*t>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this.length--,i},e.prototype.contains=function(e){return-1!==this._array.indexOf(e)},e.prototype.clear=function(){this._array.length=this._offset=this.length=0},e.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)},e}),i("Core/WindingOrder",["./freezeObject"],function(e){"use strict";var t={CLOCKWISE:2304,COUNTER_CLOCKWISE:2305,validate:function(e){return e===t.CLOCKWISE||e===t.COUNTER_CLOCKWISE}};return e(t)}),i("Core/PolygonPipeline",["./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./Math","./pointInsideTriangle","./PolylinePipeline","./PrimitiveType","./Queue","./WindingOrder"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f){"use strict";function v(t,i,r){var n=e.subtract(i,t,F),o=e.subtract(r,i,B);return n.x*o.y-n.y*o.x>=0}function g(e){for(var t=e[0].x,i=0,r=0;rt&&(t=e[r].x,i=r);return i}function _(e){for(var t=e[0][0].x,i=0,r=0;rt&&(t=n,i=r)}return i}function y(e){for(var t=[],i=0;ic&&(c=n[h].x);c+=c-u;var d=new t(c,i.y,0);for(h=0;h=i.x||m.x>=i.x)&&(p.y>=i.y&&m.y<=i.y||p.y<=i.y&&m.y>=i.y)){var f=(m.y-p.y)*(d.x-i.x)-(m.x-p.x)*(d.y-i.y);if(0!==f){f=1/f;var v=((m.x-p.x)*(i.y-p.y)-(m.y-p.y)*(i.x-p.x))*f,_=((d.x-i.x)*(i.y-p.y)-(d.y-i.y)*(i.x-p.x))*f;if(v>=0&&1>=v&&_>=0&&1>=_){var y=new e(i.x+v*(d.x-i.x),i.y+v*(d.y-i.y)),C=e.subtract(y,i,z);f=e.magnitudeSquared(C),a>f&&(l=y,a=f,o[0]=h,o[1]=(h+1)%n.length)}}}}return l}function S(t,i){var r=_(i),n=i[r],o=g(n),a=n[o],s=[],l=w(a,t,s),u=C(t,l);if(-1!==u)return u;var d=e.magnitudeSquared(e.subtract(t[s[0]],a,k)),p=e.magnitudeSquared(e.subtract(t[s[1]],a,k)),m=p>d?t[s[0]]:t[s[1]],f=y(t),v=f.indexOf(m);-1!==v&&f.splice(v,1);for(var S=[],E=0;E0){var T=e.fromElements(1,0,k);for(E=0;ED&&(x=D,m=S[E])}}}return t.indexOf(m)}function E(e,i,r){for(var n=et.computeWindingOrder2D(e),o=0;of?0>p&&m>0?U:W:f>0?p>0&&0>m?W:U:void 0}function M(e,t,i){return(e>t||e>i)&&(t>e||i>e)||t===i&&t===e}function I(t,i,r,n){var o=e.subtract(r,t,Y),a=i.x*n.y-i.y*n.x,s=a*a,l=e.magnitudeSquared(i),u=e.magnitudeSquared(n);if(s>j*l*u){var c=(o.x*n.y-o.y*n.x)/a;return e.add(t,e.multiplyByScalar(i,c,Y),Y)}return void 0}function O(t,i,r){for(var o=e.subtract(i,t,X),a=r.length,s=0;a>s;s++){var l=r[s].position,u=r[c.mod(s+1,a)].position;if(!(e.equals(t,l)||e.equals(i,u)||e.equals(t,u)||e.equals(i,l))){var h=e.subtract(u,l,Z),d=I(t,o,l,h);if(n(d)&&!(e.equals(d,t)||e.equals(d,i)||e.equals(d,l)||e.equals(d,u))){var p=d.x,m=d.y,f=M(p,t.x,i.x)&&M(m,t.y,i.y)&&M(p,l.x,u.x)&&M(m,l.y,u.y);if(f)return!0}}}return!1}function R(t,i,r){var n=D(t,i,r);if(n>=0)return n;var o=D(i,t,r);return o>=0?o:n!==U||o!==U||O(r[t].position,r[i].position,r)||e.equals(r[t].position,r[i].position)?Q:J}function L(e){return 0===x(1,2,0,e)}function N(e){var t=e.length;if(3===t)return L(e)?[]:[e[0].index,e[1].index,e[2].index];if(e.length<3)throw new o("Invalid polygon: must have at least three vertices.");for(var i,r,n=0,a=10*e.length,s=Q;J>s&&n++e.length-2;)r=b(e.length);if(i>r){var l=i;i=r,r=l}s=R(i,r,e)}if(s===J){var u=e.splice(i,r-i+1,e[i],e[r]);return N(e).concat(N(u))}return s>=0?(e.splice(s,1),N(e)):[]}var F=new e,B=new e,z=new e,k=new e(1,0),V=new e,U=-1,W=-2,G=new t,H=new t,q=new t,j=c.EPSILON14,Y=new e;new e;var X=new e,Z=new e,J=-1,Q=-2,K=new t,$=new t,et={};et.removeDuplicates=function(e){var i=d.removeDuplicates(e);return t.equals(i[0],i[i.length-1])?i.slice(1):i},et.computeArea2D=function(e){for(var t=e.length,i=0,r=t-1,n=0;t>n;r=n++){var o=e[r],a=e[n];i+=o.x*a.y-a.x*o.y}return.5*i},et.computeWindingOrder2D=function(e){var t=et.computeArea2D(e);return t>0?f.COUNTER_CLOCKWISE:f.CLOCKWISE},et.triangulate=function(e){for(var t=e.length,i=[],r=0;t>r;++r)i[r]={position:e[r],index:r};return N(i)};var tt=new t,it=new t,rt=new t,nt=new t,ot=new t,at=new t,st=new t;return et.computeSubdivision=function(e,o,a,s){s=r(s,c.RADIANS_PER_DEGREE);var h,d=a.slice(0),m=o.length,f=new Array(3*m),v=0;for(h=0;m>h;h++){var g=o[h];f[v++]=g.x,f[v++]=g.y,f[v++]=g.z}for(var _=[],y={},C=e.maximumRadius,w=c.chordLength(s,C),S=w*w;d.length>0;){var E,b,x=d.pop(),T=d.pop(),P=d.pop(),A=t.fromArray(f,3*P,tt),D=t.fromArray(f,3*T,it),M=t.fromArray(f,3*x,rt),I=t.multiplyByScalar(t.normalize(A,nt),C,nt),O=t.multiplyByScalar(t.normalize(D,ot),C,ot),R=t.multiplyByScalar(t.normalize(M,at),C,at),L=t.magnitudeSquared(t.subtract(I,O,st)),N=t.magnitudeSquared(t.subtract(O,R,st)),F=t.magnitudeSquared(t.subtract(R,I,st)),B=Math.max(L,N,F);B>S?L===B?(E=Math.min(P,T)+" "+Math.max(P,T),h=y[E],n(h)||(b=t.add(A,D,st),t.multiplyByScalar(b,.5,b),f.push(b.x,b.y,b.z),h=f.length/3-1,y[E]=h),d.push(P,h,x),d.push(h,T,x)):N===B?(E=Math.min(T,x)+" "+Math.max(T,x),h=y[E],n(h)||(b=t.add(D,M,st),t.multiplyByScalar(b,.5,b),f.push(b.x,b.y,b.z),h=f.length/3-1,y[E]=h),d.push(T,h,P),d.push(h,x,P)):F===B&&(E=Math.min(x,P)+" "+Math.max(x,P),h=y[E],n(h)||(b=t.add(M,A,st),t.multiplyByScalar(b,.5,b),f.push(b.x,b.y,b.z),h=f.length/3-1,y[E]=h),d.push(x,h,T),d.push(h,P,T)):(_.push(P),_.push(T),_.push(x))}return new l({attributes:{position:new u({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:f})},indices:_,primitiveType:p.TRIANGLES})},et.scaleToGeodeticHeight=function(e,i,o,s){o=r(o,a.WGS84);var l=K,u=$;if(i=r(i,0),s=r(s,!0),n(e)&&n(e.attributes)&&n(e.attributes.position))for(var c=e.attributes.position.values,h=c.length,d=0;h>d;d+=3)t.fromArray(c,d,u),s&&(u=o.scaleToGeodeticSurface(u,u)),l=o.geodeticSurfaceNormal(u,l),t.multiplyByScalar(l,i,l),t.add(u,l,u),c[d]=u.x,c[d+1]=u.y,c[d+2]=u.z;return e},et.eliminateHoles=function(e,i,n){n=r(n,a.WGS84);for(var o=[],s=0;s0;)c=E(c,o,n);return c},et}),i("Core/PolygonGeometry",["./BoundingRectangle","./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./GeometryAttributes","./GeometryInstance","./GeometryPipeline","./IndexDatatype","./Math","./Matrix3","./PolygonGeometryLibrary","./PolygonPipeline","./PrimitiveType","./Quaternion","./Queue","./VertexFormat","./WindingOrder"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b){"use strict";function x(e,t,i,n){for(var o=w.fromAxisAngle(e._plane.normal,i,O),s=g.fromQuaternion(o,R),l=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY,c=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,d=t.length,p=0;d>p;++p){var m=r.clone(t[p],I);g.multiplyByVector(s,m,m);var f=e.projectPointOntoPlane(m,M);a(f)&&(l=Math.min(l,f.x),u=Math.max(u,f.x),c=Math.min(c,f.y),h=Math.max(h,f.y))}return n.x=l,n.y=c,n.width=u-l,n.height=h-c,n}function T(e,t,i,r){var o=u.fromPoints(t,e),a=o.projectPointsOntoPlane(t,L),s=y.computeWindingOrder2D(a);s===b.CLOCKWISE&&(a.reverse(),t.reverse());var l=y.triangulate(a);l.length<3&&(l=[0,1,2]);var d;if(r){for(var m=t.length,f=new Array(3*m),v=0,g=0;m>g;g++){var _=t[g];f[v++]=_.x,f[v++]=_.y,f[v++]=_.z}d=new c({attributes:{position:new h({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:f})},indices:l,primitiveType:C.TRIANGLES})}else d=y.computeSubdivision(e,t,l,i);return new p({geometry:d})}function P(e,t,o,a,s,l,c){if(e.st||e.normal||e.tangent||e.binormal){var d=u.fromPoints(o,a),p=x(d,o,s,N),m=W;m.x=p.x,m.y=p.y;var f=t.attributes.position.values,_=f.length,y=e.st?new Float32Array(2*(_/3)):void 0,C=e.normal?new Float32Array(_):void 0,S=e.tangent?new Float32Array(_):void 0,E=e.binormal?new Float32Array(_):void 0,b=0,T=0,P=B,A=z,D=k,M=!0,I=w.fromAxisAngle(d._plane.normal,s,q),O=g.fromQuaternion(I,j),R=_/2,L=_/3;l&&(_/=2);for(var Y=0;_>Y;Y+=3){var X=r.fromArray(f,Y,H);if(e.st){var Z=g.multiplyByVector(O,X,F),J=d.projectPointOntoPlane(Z,G);i.subtract(J,m,J),l&&(y[b+L]=J.x/p.width,y[b+1+L]=J.y/p.height),y[b]=J.x/p.width,y[b+1]=J.y/p.height,b+=2}if(e.normal||e.tangent||e.binormal){var Q=T+1,K=T+2;if(c){if(_>Y+3){var $=r.fromArray(f,Y+3,V);if(M){var et=r.fromArray(f,Y+_,U);r.subtract($,X,$),r.subtract(et,X,et),P=r.normalize(r.cross(et,$,P),P),M=!1}r.equalsEpsilon($,X,v.EPSILON10)&&(M=!0)}(e.tangent||e.binormal)&&(D=a.geodeticSurfaceNormal(X,D),e.tangent&&(A=r.normalize(r.cross(D,P,A),A)))}else P=a.geodeticSurfaceNormal(X,P),(e.tangent||e.binormal)&&(A=r.cross(r.UNIT_Z,P,A),A=r.normalize(g.multiplyByVector(O,A,A),A),e.binormal&&(D=r.normalize(r.cross(P,A,D),D)));e.normal&&(l&&!c?(C[T+R]=-P.x,C[Q+R]=-P.y,C[K+R]=-P.z):(C[T+R]=P.x,C[Q+R]=P.y,C[K+R]=P.z),C[T]=P.x,C[Q]=P.y,C[K]=P.z),e.tangent&&(l&&!c?(S[T+R]=-A.x,S[Q+R]=-A.y,S[K+R]=-A.z):(S[T+R]=A.x,S[Q+R]=A.y,S[K+R]=A.z),S[T]=A.x,S[Q]=A.y,S[K]=A.z),e.binormal&&(l&&(E[T+R]=D.x,E[Q+R]=D.y,E[K+R]=D.z),E[T]=D.x,E[Q]=D.y,E[K]=D.z),T+=3}}e.st&&(t.attributes.st=new h({componentDatatype:n.FLOAT,componentsPerAttribute:2,values:y})),e.normal&&(t.attributes.normal=new h({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:C})),e.tangent&&(t.attributes.tangent=new h({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:S})),e.binormal&&(t.attributes.binormal=new h({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:E}))}return t}function A(e,t,i,o){var a,s,l,u,p,m=e.length,g=0;if(o)for(s=2*3*m,a=new Array(2*s),l=0;m>l;l++)u=e[l],p=e[(l+1)%m],a[g]=a[g+s]=u.x,++g,a[g]=a[g+s]=u.y,++g,a[g]=a[g+s]=u.z,++g,a[g]=a[g+s]=p.x,++g,a[g]=a[g+s]=p.y,++g,a[g]=a[g+s]=p.z,++g;else{var y=v.chordLength(i,t.maximumRadius),w=0;for(l=0;m>l;l++)w+=_.subdivideLineCount(e[l],e[(l+1)%m],y);for(s=3*(w+m),a=new Array(2*s),l=0;m>l;l++){u=e[l],p=e[(l+1)%m];for(var S=_.subdivideLine(u,p,y,Y),E=S.length,b=0;E>b;++b,++g)a[g]=S[b],a[g+s]=S[b];a[g]=p.x,a[g+s]=p.x,++g,a[g]=p.y,a[g+s]=p.y,++g,a[g]=p.z,a[g+s]=p.z,++g}}m=a.length;var x=f.createTypedArray(m/3,m-6*e.length),T=0;for(m/=6,l=0;m>l;l++){var P=l,A=P+1,D=P+m,M=D+1;u=r.fromArray(a,3*P,V),p=r.fromArray(a,3*A,U),r.equalsEpsilon(u,p,v.EPSILON14)||(x[T++]=P,x[T++]=D,x[T++]=A,x[T++]=A,x[T++]=D,x[T++]=M)}return new c({attributes:new d({position:new h({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:a})}),indices:x,primitiveType:C.TRIANGLES})}function D(e,t,i,r,o){var a=T(e,t,i,o).geometry,s=a.attributes.position.values,l=a.indices,m=s.concat(s),v=m.length/3,g=f.createTypedArray(v,2*l.length);g.set(l);var _,C=l.length,w=v/2;for(_=0;C>_;_+=3){var S=g[_]+w,E=g[_+1]+w,x=g[_+2]+w;g[_+C]=x,g[_+1+C]=E,g[_+2+C]=S}var P=new c({attributes:new d({position:new h({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:m})}),indices:g,primitiveType:a.primitiveType}),D={topAndBottom:new p({geometry:P}),walls:[]},M=r.outerRing,I=u.fromPoints(M,e),O=I.projectPointsOntoPlane(M,X),R=y.computeWindingOrder2D(O);R===b.CLOCKWISE&&M.reverse();var L=A(M,e,i,o);D.walls.push(new p({geometry:L}));var N=r.holes;for(_=0;_E;E++){var O=A[E];if(O.positions=y.removeDuplicates(O.positions),!(O.positions.length<3)){I.push(O.positions);var R=0;a(O.holes)&&(R=O.holes.length);for(var L=0;R>L;L++)w.enqueue(O.holes[L])}}v.push({outerRing:x,holes:I});var N=I.length>0?y.eliminateHoles(x,I):x;C.push(N)}}if(0===C.length)return void 0;n=C[0];var F,B=[];if(p)for(E=0;Ey;y++){var b=i[y],x=i[(y+1)%C];g[E++]=b.x,g[E++]=b.y,g[E++]=b.z,g[E++]=x.x,g[E++]=x.y,g[E++]=x.z}else{var T=0;for(y=0;C>y;y++)T+=m.subdivideLineCount(i[y],i[(y+1)%C],r);for(g=new Float64Array(3*T),y=0;C>y;y++)for(var P=m.subdivideLine(i[y],i[(y+1)%C],r,S),A=P.length,D=0;A>D;++D)g[E++]=P[D]}C=g.length/3;var M=2*C,I=d.createTypedArray(C,M);for(E=0,y=0;C-1>y;y++)I[E++]=y,I[E++]=y+1;return I[E++]=C-1,I[E++]=0,new c({geometry:new s({attributes:new u({position:new l({componentDatatype:t.DOUBLE,componentsPerAttribute:3,values:g})}),indices:I,primitiveType:v.LINES})})}function C(e,i,r,n){var o=a.fromPoints(i,e),h=o.projectPointsOntoPlane(i,w),p=f.computeWindingOrder2D(h);p===_.CLOCKWISE&&(h.reverse(),i.reverse());var g,y,C=i.length,E=new Array(C),b=0;if(n)for(g=new Float64Array(2*3*2*C),y=0;C>y;++y){E[y]=b/3;var x=i[y],T=i[(y+1)%C];g[b++]=x.x,g[b++]=x.y,g[b++]=x.z,g[b++]=T.x,g[b++]=T.y,g[b++]=T.z}else{var P=0;for(y=0;C>y;y++)P+=m.subdivideLineCount(i[y],i[(y+1)%C],r);for(g=new Float64Array(2*3*P),y=0;C>y;++y){E[y]=b/3;for(var A=m.subdivideLine(i[y],i[(y+1)%C],r,S),D=A.length,M=0;D>M;++M)g[b++]=A[M]}}C=g.length/6;var I=E.length,O=2*(2*C+I),R=d.createTypedArray(C,O);for(b=0,y=0;C>y;++y)R[b++]=y,R[b++]=(y+1)%C,R[b++]=y+C,R[b++]=(y+1)%C+C;for(y=0;I>y;y++){var L=E[y];R[b++]=L,R[b++]=L+C}return new c({geometry:new s({attributes:new u({position:new l({componentDatatype:t.DOUBLE,componentsPerAttribute:3,values:g})}),indices:R,primitiveType:v.LINES})})}var w=[],S=[],E=function(e){var t=e.polygonHierarchy,n=i(e.ellipsoid,o.WGS84),a=i(e.granularity,p.RADIANS_PER_DEGREE),s=i(e.height,0),l=i(e.perPositionHeight,!1),u=e.extrudedHeight,c=r(u)&&(!p.equalsEpsilon(s,u,p.EPSILON6)||l);if(c){var h=u;u=Math.min(h,s),s=Math.max(h,s)}this._ellipsoid=o.clone(n),this._granularity=a,this._height=s,this._extrudedHeight=i(u,0),this._extrude=c,this._polygonHierarchy=t,this._perPositionHeight=l,this._workerName="createPolygonOutlineGeometry",this.packedLength=m.computeHierarchyPackedLength(t)+o.packedLength+6};E.pack=function(e,t,r){r=i(r,0),r=m.packPolygonHierarchy(e._polygonHierarchy,t,r),o.pack(e._ellipsoid,t,r),r+=o.packedLength,t[r++]=e._height,t[r++]=e._extrudedHeight,t[r++]=e._granularity,t[r++]=e._extrude?1:0,t[r++]=e._perPositionHeight?1:0,t[r++]=e.packedLength};var b=o.clone(o.UNIT_SPHERE),x={polygonHierarchy:{}};return E.unpack=function(e,t,n){t=i(t,0);var a=m.unpackPolygonHierarchy(e,t);t=a.startingIndex,delete a.startingIndex;var s=o.unpack(e,t,b);t+=o.packedLength;var l=e[t++],u=e[t++],c=e[t++],h=1===e[t++],d=1===e[t++],p=e[t++];return r(n)||(n=new E(x)),n._polygonHierarchy=a,n._ellipsoid=o.clone(s,n._ellipsoid),n._height=l,n._extrudedHeight=u,n._granularity=c,n._extrude=h,n._perPositionHeight=d,n.packedLength=p,n},E.fromPositions=function(e){e=i(e,i.EMPTY_OBJECT);var t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight};return new E(t)},E.createGeometry=function(t){var i=t._ellipsoid,n=t._granularity,o=t._height,a=t._extrudedHeight,l=t._extrude,u=t._polygonHierarchy,c=t._perPositionHeight,d=[],v=new g;v.enqueue(u);for(var _;0!==v.length;){var w=v.dequeue(),S=w.positions;if(S=f.removeDuplicates(S),!(S.length<3)){var E=w.holes?w.holes.length:0;for(_=0;E>_;_++){var b=w.holes[_];if(b.positions=f.removeDuplicates(b.positions),!(b.positions.length<3)){d.push(b.positions);var x=0;r(b.holes)&&(x=b.holes.length);for(var T=0;x>T;T++)v.enqueue(b.holes[T])}}d.push(S)}}if(0===d.length)return void 0;var P,A=[],D=p.chordLength(n,i.maximumRadius);if(l)for(_=0;_s;s++)a[s]=i.clone(r);return a}var v=(d-l)/o,g=(p-u)/o,y=(m-c)/o,C=(f-h)/o;for(s=0;o>s;s++)a[s]=new i(l+s*v,u+s*g,c+s*y,h+s*C);return a}var _=[],y=function(e){e=n(e,n.EMPTY_OBJECT);var r=e.positions,a=e.colors,l=n(e.width,1),u=n(e.colorsPerVertex,!1);this._positions=r,this._colors=a,this._width=l,this._colorsPerVertex=u,this._vertexFormat=v.clone(n(e.vertexFormat,v.DEFAULT)),this._followSurface=n(e.followSurface,!0),this._granularity=n(e.granularity,p.RADIANS_PER_DEGREE),this._ellipsoid=s.clone(n(e.ellipsoid,s.WGS84)),this._workerName="createPolylineGeometry";var c=1+r.length*t.packedLength;c+=o(a)?1+a.length*i.packedLength:1,this.packedLength=c+s.packedLength+v.packedLength+4};y.pack=function(e,r,a){a=n(a,0);var l,u=e._positions,c=u.length;for(r[a++]=c,l=0;c>l;++l,a+=t.packedLength)t.pack(u[l],r,a);var h=e._colors;for(c=o(h)?h.length:0,r[a++]=c,l=0;c>l;++l,a+=i.packedLength)i.pack(h[l],r,a);s.pack(e._ellipsoid,r,a),a+=s.packedLength,v.pack(e._vertexFormat,r,a),a+=v.packedLength,r[a++]=e._width,r[a++]=e._colorsPerVertex?1:0,r[a++]=e._followSurface?1:0,r[a]=e._granularity};var C=s.clone(s.UNIT_SPHERE),w=new v,S={positions:void 0,colors:void 0,ellipsoid:C,vertexFormat:w,width:void 0,colorsPerVertex:void 0,followSurface:void 0,granularity:void 0};y.unpack=function(e,r,a){r=n(r,0);var l,u=e[r++],c=new Array(u);for(l=0;u>l;++l,r+=t.packedLength)c[l]=t.unpack(e,r);u=e[r++];var h=u>0?new Array(u):void 0;for(l=0;u>l;++l,r+=i.packedLength)h[l]=i.unpack(e,r);var d=s.unpack(e,r,C);r+=s.packedLength;var p=v.unpack(e,r,w);r+=v.packedLength;var m=e[r++],f=1===e[r++],g=1===e[r++],_=e[r];return o(a)?(a._positions=c,a._colors=h,a._ellipsoid=s.clone(d,a._ellipsoid),a._vertexFormat=v.clone(p,a._vertexFormat),a._width=m,a._colorsPerVertex=f,a._followSurface=g,a._granularity=_,a):(S.positions=c,S.colors=h,S.width=m,S.colorsPerVertex=f,S.followSurface=g,S.granularity=_,new y(S))};var E=new t,b=new t,x=new t,T=new t;return y.createGeometry=function(n){var a,s,v,y=n._width,C=n._vertexFormat,w=n._colors,S=n._colorsPerVertex,P=n._followSurface,A=n._granularity,D=n._ellipsoid,M=p.chordLength(A,D.maximumRadius),I=m.removeDuplicates(n._positions),O=I.length;if(2>O)return void 0;if(P){var R=m.extractHeights(I,D);if(o(w)){var L=1;for(a=0;O-1>a;++a)L+=m.numberOfPoints(I[a],I[a+1],M);var N=new Array(L),F=0;for(a=0;O-1>a;++a){var B=I[a],z=I[a+1],k=w[a],V=m.numberOfPoints(B,z,M);if(S&&L>a){var U=w[a+1],W=g(B,z,k,U,V),G=W.length;for(s=0;G>s;++s)N[F++]=W[s]}else for(s=0;V>s;++s)N[F++]=i.clone(k)}N[F]=i.clone(w[w.length-1]),w=N,_.length=0}I=m.generateCartesianArc({positions:I,minDistance:M,ellipsoid:D,height:R})}O=I.length;var H,q=4*O-4,j=new Float64Array(3*q),Y=new Float64Array(3*q),X=new Float64Array(3*q),Z=new Float32Array(2*q),J=C.st?new Float32Array(2*q):void 0,Q=o(w)?new Uint8Array(4*q):void 0,K=0,$=0,et=0,tt=0;for(s=0;O>s;++s){0===s?(H=E,t.subtract(I[0],I[1],H),t.add(I[0],H,H)):H=I[s-1],t.clone(H,x),t.clone(I[s],b),s===O-1?(H=E,t.subtract(I[O-1],I[O-2],H),t.add(I[O-1],H,H)):H=I[s+1],t.clone(H,T);var it,rt;o(Q)&&(it=0===s||S?w[s]:w[s-1],s!==O-1&&(rt=w[s]));var nt=0===s?2:0,ot=s===O-1?2:4;for(v=nt;ot>v;++v){t.pack(b,j,K),t.pack(x,Y,K),t.pack(T,X,K),K+=3;var at=0>v-2?-1:1;if(Z[$++]=2*(v%2)-1,Z[$++]=at*y,C.st&&(J[et++]=s/(O-1),J[et++]=Math.max(Z[$-2],0)),o(Q)){var st=2>v?it:rt;Q[tt++]=i.floatToByte(st.red),Q[tt++]=i.floatToByte(st.green),Q[tt++]=i.floatToByte(st.blue),Q[tt++]=i.floatToByte(st.alpha)}}}var lt=new c;lt.position=new u({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:j}),lt.prevPosition=new u({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:Y}),lt.nextPosition=new u({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:X}),lt.expandAndWidth=new u({componentDatatype:r.FLOAT,componentsPerAttribute:2,values:Z}),C.st&&(lt.st=new u({componentDatatype:r.FLOAT,componentsPerAttribute:2,values:J})),o(Q)&&(lt.color=new u({componentDatatype:r.UNSIGNED_BYTE,componentsPerAttribute:4,values:Q,normalize:!0}));var ut=d.createTypedArray(q,6*O-6),ct=0,ht=0,dt=O-1;for(s=0;dt>s;++s)ut[ht++]=ct,ut[ht++]=ct+2,ut[ht++]=ct+1,ut[ht++]=ct+1,ut[ht++]=ct+2,ut[ht++]=ct+3,ct+=4;return new l({attributes:lt,indices:ut,primitiveType:f.TRIANGLES,boundingSphere:e.fromPoints(I),geometryType:h.POLYLINES})},y}),i("Core/PolylineVolumeGeometry",["./BoundingRectangle","./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./CornerType","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./GeometryPipeline","./IndexDatatype","./Math","./PolygonPipeline","./PolylineVolumeGeometryLibrary","./PrimitiveType","./VertexFormat","./WindingOrder"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C){"use strict";function w(e,i,r,o){var a=new d;o.position&&(a.position=new h({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:e}));var s,l,u,f,g,y,C=i.length,w=e.length/3,S=(w-2*C)/(2*C),E=v.triangulate(i),b=6*(S-1)*C+2*E.length,x=m.createTypedArray(w,b),T=2*C,P=0;for(s=0;S-1>s;s++){for(l=0;C-1>l;l++)u=2*l+2*s*C,y=u+T,f=u+1,g=f+T,x[P++]=f,x[P++]=u,x[P++]=g,x[P++]=g,x[P++]=u,x[P++]=y;u=2*C-2+2*s*C,f=u+1,g=f+T,y=u+T,x[P++]=f,x[P++]=u,x[P++]=g,x[P++]=g,x[P++]=u,x[P++]=y}if(o.st||o.tangent||o.binormal){var A,D,M=new Float32Array(2*w),I=1/(S-1),O=1/r.height,R=r.height/2,L=0;for(s=0;S>s;s++){for(A=s*I,D=O*(i[0].y+R),M[L++]=A,M[L++]=D,l=1;C>l;l++)D=O*(i[l].y+R),M[L++]=A,M[L++]=D,M[L++]=A,M[L++]=D;D=O*(i[0].y+R),M[L++]=A,M[L++]=D}for(l=0;C>l;l++)A=0,D=O*(i[l].y+R),M[L++]=A,M[L++]=D;for(l=0;C>l;l++)A=(S-1)*I,D=O*(i[l].y+R),M[L++]=A,M[L++]=D;a.st=new h({componentDatatype:n.FLOAT,componentsPerAttribute:2,values:new Float32Array(M)})}var N=w-2*C;for(s=0;so;++o,n+=r.packedLength)r.pack(s[o],t,n);var c=e._shape;for(l=c.length,t[n++]=l,o=0;l>o;++o,n+=i.packedLength)i.pack(c[o],t,n);u.pack(e._ellipsoid,t,n),n+=u.packedLength,y.pack(e._vertexFormat,t,n),n+=y.packedLength,t[n++]=e._cornerType,t[n]=e._granularity};var E=u.clone(u.UNIT_SPHERE),b=new y,x={polylinePositions:void 0,shapePositions:void 0,ellipsoid:E,vertexFormat:b,cornerType:void 0,granularity:void 0};S.unpack=function(e,t,n){t=a(t,0);var o,l=e[t++],c=new Array(l);for(o=0;l>o;++o,t+=r.packedLength)c[o]=r.unpack(e,t);l=e[t++];var h=new Array(l);for(o=0;l>o;++o,t+=i.packedLength)h[o]=i.unpack(e,t);var d=u.unpack(e,t,E);t+=u.packedLength;var p=y.unpack(e,t,b);t+=y.packedLength;var m=e[t++],f=e[t];return s(n)?(n._positions=c,n._shape=h,n._ellipsoid=u.clone(d,n._ellipsoid),n._vertexFormat=y.clone(p,n._vertexFormat),n._cornerType=m,n._granularity=f,n):(x.polylinePositions=c,x.shapePositions=h,x.cornerType=m,x.granularity=f,new S(x))};var T=new e;return S.createGeometry=function(t){var i=t._positions,r=g.removeDuplicatesFromPositions(i,t._ellipsoid),n=t._shape;if(n=g.removeDuplicatesFromShape(n),r.length<2||n.length<3)return void 0;v.computeWindingOrder2D(n)===C.CLOCKWISE&&n.reverse(); +var o=e.fromPoints(n,T),a=g.computePositions(r,n,o,t,!0);return w(a,n,o,t._vertexFormat)},S}),i("Core/PolylineVolumeOutlineGeometry",["./BoundingRectangle","./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./CornerType","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PolygonPipeline","./PolylineVolumeGeometryLibrary","./PrimitiveType","./WindingOrder"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_){"use strict";function y(e,i){var r=new d;r.position=new h({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:e});var o,a,s=i.length,l=r.position.values.length/3,u=e.length/3,m=u/s,f=p.createTypedArray(l,2*s*(m+1)),v=0;o=0;var _=o*s;for(a=0;s-1>a;a++)f[v++]=a+_,f[v++]=a+_+1;for(f[v++]=s-1+_,f[v++]=_,o=m-1,_=o*s,a=0;s-1>a;a++)f[v++]=a+_,f[v++]=a+_+1;for(f[v++]=s-1+_,f[v++]=_,o=0;m-1>o;o++){var y=s*o,C=y+s;for(a=0;s>a;a++)f[v++]=a+y,f[v++]=a+C}var w=new c({attributes:r,indices:p.createTypedArray(l,f),boundingSphere:t.fromVertices(e),primitiveType:g.LINES});return w}var C=function(e){e=a(e,a.EMPTY_OBJECT);var t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=u.clone(a(e.ellipsoid,u.WGS84)),this._cornerType=a(e.cornerType,o.ROUNDED),this._granularity=a(e.granularity,m.RADIANS_PER_DEGREE),this._workerName="createPolylineVolumeOutlineGeometry";var s=1+t.length*r.packedLength;s+=1+n.length*i.packedLength,this.packedLength=s+u.packedLength+2};C.pack=function(e,t,n){n=a(n,0);var o,s=e._positions,l=s.length;for(t[n++]=l,o=0;l>o;++o,n+=r.packedLength)r.pack(s[o],t,n);var c=e._shape;for(l=c.length,t[n++]=l,o=0;l>o;++o,n+=i.packedLength)i.pack(c[o],t,n);u.pack(e._ellipsoid,t,n),n+=u.packedLength,t[n++]=e._cornerType,t[n]=e._granularity};var w=u.clone(u.UNIT_SPHERE),S={polylinePositions:void 0,shapePositions:void 0,ellipsoid:w,height:void 0,cornerType:void 0,granularity:void 0};C.unpack=function(e,t,n){t=a(t,0);var o,l=e[t++],c=new Array(l);for(o=0;l>o;++o,t+=r.packedLength)c[o]=r.unpack(e,t);l=e[t++];var h=new Array(l);for(o=0;l>o;++o,t+=i.packedLength)h[o]=i.unpack(e,t);var d=u.unpack(e,t,w);t+=u.packedLength;var p=e[t++],m=e[t];return s(n)?(n._positions=c,n._shape=h,n._ellipsoid=u.clone(d,n._ellipsoid),n._cornerType=p,n._granularity=m,n):(S.polylinePositions=c,S.shapePositions=h,S.cornerType=p,S.granularity=m,new C(S))};var E=new e;return C.createGeometry=function(t){var i=t._positions,r=v.removeDuplicatesFromPositions(i,t._ellipsoid),n=t._shape;if(n=v.removeDuplicatesFromShape(n),r.length<2||n.length<3)return void 0;f.computeWindingOrder2D(n)===_.CLOCKWISE&&n.reverse();var o=e.fromPoints(n,E),a=v.computePositions(r,n,o,t,!1);return y(a,n)},C}),i("Core/QuaternionSpline",["./defaultValue","./defined","./defineProperties","./DeveloperError","./Quaternion","./Spline"],function(e,t,i,r,n,o){"use strict";function a(e,i,r){var o=e.length,a=new Array(o);a[0]=t(i)?i:e[0],a[o-1]=t(r)?r:e[o-1];for(var s=1;o-1>s;++s)a[s]=n.computeInnerQuadrangle(e[s-1],e[s],e[s+1],new n);return a}function s(e){var i=e.points,r=e.innerQuadrangles,o=e.times;if(i.length<3){var a=o[0],s=1/(o[1]-a),l=i[0],u=i[1];return function(e,i){t(i)||(i=new n);var r=(e-a)*s;return n.fastSlerp(l,u,r,i)}}return function(a,s){t(s)||(s=new n);var l=e._lastTimeIndex=e.findTimeInterval(a,e._lastTimeIndex),u=(a-o[l])/(o[l+1]-o[l]),c=i[l],h=i[l+1],d=r[l],p=r[l+1];return n.fastSquad(c,h,d,p,u,s)}}var l=function(t){t=e(t,e.EMPTY_OBJECT);var i=t.points,r=t.times,n=t.firstInnerQuadrangle,o=t.lastInnerQuadrangle,l=a(i,n,o);this._times=r,this._points=i,this._innerQuadrangles=l,this._evaluateFunction=s(this),this._lastTimeIndex=0};return i(l.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},innerQuadrangles:{get:function(){return this._innerQuadrangles}}}),l.prototype.findTimeInterval=o.prototype.findTimeInterval,l.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)},l}),i("Core/RectangleGeometryLibrary",["./Cartesian3","./Cartographic","./defined","./DeveloperError","./GeographicProjection","./Math","./Matrix2","./Rectangle"],function(e,t,i,r,n,o,a,s){"use strict";var l=Math.cos,u=Math.sin,c=Math.sqrt,h={};h.computePosition=function(e,t,r,n,o){var s=e.ellipsoid.radiiSquared,h=e.nwCorner,d=e.rectangle,p=h.latitude-e.granYCos*t+r*e.granXSin,m=l(p),f=u(p),v=s.z*f,g=h.longitude+t*e.granYSin+r*e.granXCos,_=m*l(g),y=m*u(g),C=s.x*_,w=s.y*y,S=c(C*_+w*y+v*f);n.x=C/S,n.y=w/S,n.z=v/S,i(e.vertexFormat)&&e.vertexFormat.st&&(o.x=(g-d.west)*e.lonScalar-.5,o.y=(p-d.south)*e.latScalar-.5,a.multiplyByVector(e.textureMatrix,o,o),o.x+=.5,o.y+=.5)};var d=new a,p=new e,m=new t,f=new e,v=new n;return h.computeOptions=function(t,n,l){var u,c,h,g,_,y=t._granularity,C=t._ellipsoid,w=t._surfaceHeight,S=t._rotation,E=t._extrudedHeight,b=n.east,x=n.west,T=n.north,P=n.south,A=T-P;x>b?(_=o.TWO_PI-x+b,u=Math.ceil(_/y)+1,c=Math.ceil(A/y)+1,h=_/(u-1),g=A/(c-1)):(_=b-x,u=Math.ceil(_/y)+1,c=Math.ceil(A/y)+1,h=_/(u-1),g=A/(c-1)),l=s.northwest(n,l);var D=s.center(n,m),M=g,I=h,O=0,R=0;if(i(S)){var L=Math.cos(S);M*=L,I*=L;var N=Math.sin(S);O=g*N,R=h*N,p=v.project(l,p),f=v.project(D,f),p=e.subtract(p,f,p);var F=a.fromRotation(S,d);p=a.multiplyByVector(F,p,p),p=e.add(p,f,p),l=v.unproject(p,l);var B=l.latitude,z=B+(u-1)*R,k=B-M*(c-1),V=B-M*(c-1)+(u-1)*R;T=Math.max(B,z,k,V),P=Math.min(B,z,k,V);var U=l.longitude,W=U+(u-1)*I,G=U+(c-1)*O,H=U+(c-1)*O+(u-1)*I;if(b=Math.max(U,W,G,H),x=Math.min(U,W,G,H),T<-o.PI_OVER_TWO||T>o.PI_OVER_TWO||P<-o.PI_OVER_TWO||P>o.PI_OVER_TWO)throw new r("Rotated extent is invalid.");n.north=T,n.south=P,n.east=b,n.west=x}return{granYCos:M,granYSin:O,granXCos:I,granXSin:R,ellipsoid:C,width:u,height:c,surfaceHeight:w,extrudedHeight:E,nwCorner:l,rectangle:n}},h}),i("Core/RectangleGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./GeometryInstance","./GeometryPipeline","./IndexDatatype","./Math","./Matrix2","./Matrix3","./PolygonPipeline","./PrimitiveType","./Quaternion","./Rectangle","./RectangleGeometryLibrary","./VertexFormat"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E){"use strict";function b(e,t){var i=new u({attributes:new h,primitiveType:y.TRIANGLES});return i.attributes.position=new c({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:t.positions}),e.normal&&(i.attributes.normal=new c({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:t.normals})),e.tangent&&(i.attributes.tangent=new c({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:t.tangents})),e.binormal&&(i.attributes.binormal=new c({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:t.binormals})),i}function x(e,t,r,n){for(var o=e.length,a=t.normal?new Float32Array(o):void 0,s=t.tangent?new Float32Array(o):void 0,l=t.binormal?new Float32Array(o):void 0,u=0,c=L,h=R,d=O,p=0;o>p;p+=3){var m=i.fromArray(e,p,I),f=u+1,v=u+2;(t.normal||t.tangent||t.binormal)&&(d=r.geodeticSurfaceNormal(m,d),(t.tangent||t.binormal)&&(i.cross(i.UNIT_Z,d,h),g.multiplyByVector(n,h,h),i.normalize(h,h),t.binormal&&i.normalize(i.cross(d,h,c),c)),t.normal&&(a[u]=d.x,a[f]=d.y,a[v]=d.z),t.tangent&&(s[u]=h.x,s[f]=h.y,s[v]=h.z),t.binormal&&(l[u]=c.x,l[f]=c.y,l[v]=c.z)),u+=3}return b(t,{positions:e,normals:a,tangents:s,binormals:l})}function T(e,t,r){for(var n=e.length,o=t.normal?new Float32Array(n):void 0,a=t.tangent?new Float32Array(n):void 0,s=t.binormal?new Float32Array(n):void 0,l=0,u=0,c=0,h=!0,d=L,p=R,m=O,v=0;n>v;v+=6){var g=i.fromArray(e,v,I);if(t.normal||t.tangent||t.binormal){var _=i.fromArray(e,(v+6)%n,k);if(h){var y=i.fromArray(e,(v+3)%n,V);i.subtract(_,g,_),i.subtract(y,g,y),m=i.normalize(i.cross(y,_,m),m),h=!1}i.equalsEpsilon(_,g,f.EPSILON10)&&(h=!0),(t.tangent||t.binormal)&&(d=r.geodeticSurfaceNormal(g,d),t.tangent&&(p=i.normalize(i.cross(d,m,p),p))),t.normal&&(o[l++]=m.x,o[l++]=m.y,o[l++]=m.z,o[l++]=m.x,o[l++]=m.y,o[l++]=m.z),t.tangent&&(a[u++]=p.x,a[u++]=p.y,a[u++]=p.z,a[u++]=p.x,a[u++]=p.y,a[u++]=p.z),t.binormal&&(s[c++]=d.x,s[c++]=d.y,s[c++]=d.z,s[c++]=d.x,s[c++]=d.y,s[c++]=d.z)}}return b(t,{positions:e,normals:o,tangents:a,binormals:s})}function P(e){for(var t=e.vertexFormat,i=e.ellipsoid,r=e.size,o=e.height,a=e.width,s=t.position?new Float64Array(3*r):void 0,l=t.st?new Float32Array(2*r):void 0,u=0,h=0,d=I,p=F,f=Number.MAX_VALUE,v=Number.MAX_VALUE,g=Number.MIN_VALUE,_=Number.MIN_VALUE,y=0;o>y;++y)for(var C=0;a>C;++C)S.computePosition(e,y,C,d,p),s[u++]=d.x,s[u++]=d.y,s[u++]=d.z,t.st&&(l[h++]=p.x,l[h++]=p.y,f=Math.min(f,p.x),v=Math.min(v,p.y),g=Math.max(g,p.x),_=Math.max(_,p.y));if(t.st&&(0>f||0>v||g>1||_>1))for(var w=0;wD;++D){for(var M=0;a-1>M;++M){var O=P,R=O+a,L=R+1,N=O+1;T[A++]=O,T[A++]=R,T[A++]=N,T[A++]=N,T[A++]=R,T[A++]=L,++P}++P}return E.indices=T,t.st&&(E.attributes.st=new c({componentDatatype:n.FLOAT,componentsPerAttribute:2,values:l})),E}function A(e,t,i,r,n){return e[t++]=r[i],e[t++]=r[i+1],e[t++]=r[i+2],e[t++]=n[i],e[t++]=n[i+1],e[t++]=n[i+2],e}function D(e,t,i,r){return e[t++]=r[i],e[t++]=r[i+1],e[t++]=r[i],e[t++]=r[i+1],e}function M(e){var t,r=e.vertexFormat,o=e.surfaceHeight,a=e.extrudedHeight,s=Math.min(a,o),l=Math.max(a,o),u=e.height,h=e.width,v=e.ellipsoid,g=P(e);if(f.equalsEpsilon(s,l,.1))return g;g=_.scaleToGeodeticHeight(g,l,v,!1);var y=new Float64Array(g.attributes.position.values),C=y.length,w=2*C,S=new Float64Array(w);S.set(y),g=_.scaleToGeodeticHeight(g,s,v);var E=g.attributes.position.values;S.set(E,C),g.attributes.position.values=S;var b,x=r.normal?new Float32Array(w):void 0,M=r.tangent?new Float32Array(w):void 0,I=r.binormal?new Float32Array(w):void 0,O=r.st?new Float32Array(2*(w/3)):void 0;if(r.normal){var R=g.attributes.normal.values;for(x.set(R),t=0;C>t;t++)R[t]=-R[t];x.set(R,C),g.attributes.normal.values=x}if(r.tangent){var L=g.attributes.tangent.values;for(M.set(L),t=0;C>t;t++)L[t]=-L[t];M.set(L,C),g.attributes.tangent.values=M}if(r.binormal){var N=g.attributes.binormal.values;I.set(N),I.set(N,C),g.attributes.binormal.values=I}r.st&&(b=g.attributes.st.values,O.set(b),O.set(b,2*(C/3)),g.attributes.st.values=O);var F=g.indices,B=F.length,z=C/3,U=m.createTypedArray(w/3,2*B);for(U.set(F),t=0;B>t;t+=3)U[t+B]=F[t+2]+z,U[t+1+B]=F[t+1]+z,U[t+2+B]=F[t]+z;g.indices=U;var W=2*h+2*u-4,G=2*(W+4),H=new Float64Array(3*G),q=r.st?new Float32Array(2*G):void 0,j=0,Y=0,X=h*u;for(t=0;X>t;t+=h)H=A(H,j,3*t,y,E),j+=6,r.st&&(q=D(q,Y,2*t,b),Y+=4);for(t=X-h;X>t;t++)H=A(H,j,3*t,y,E),j+=6,r.st&&(q=D(q,Y,2*t,b),Y+=4);for(t=X-1;t>0;t-=h)H=A(H,j,3*t,y,E),j+=6,r.st&&(q=D(q,Y,2*t,b),Y+=4);for(t=h-1;t>=0;t--)H=A(H,j,3*t,y,E),j+=6,r.st&&(q=D(q,Y,2*t,b),Y+=4);var Z=T(H,r,v);r.st&&(Z.attributes.st=new c({componentDatatype:n.FLOAT,componentsPerAttribute:2,values:q}));var J,Q,K,$,et=m.createTypedArray(G,6*W);C=H.length/3;var tt=0;for(t=0;C-1>t;t+=2){J=t,$=(J+2)%C;var it=i.fromArray(H,3*J,k),rt=i.fromArray(H,3*$,V);i.equalsEpsilon(it,rt,f.EPSILON10)||(Q=(J+1)%C,K=(Q+2)%C,et[tt++]=J,et[tt++]=Q,et[tt++]=$,et[tt++]=$,et[tt++]=Q,et[tt++]=K)}return Z.indices=et,Z=p.combineInstances([new d({geometry:g}),new d({geometry:Z})]),Z[0]}var I=new i,O=new i,R=new i,L=new i,N=new w,F=new t,B=new e,z=new e,k=new i,V=new i,U=function(e){e=o(e,o.EMPTY_OBJECT);var t=e.rectangle,i=o(e.granularity,f.RADIANS_PER_DEGREE),r=o(e.ellipsoid,l.WGS84),n=o(e.height,0),s=o(e.rotation,0),u=o(e.stRotation,0),c=o(e.vertexFormat,E.DEFAULT),h=e.extrudedHeight,d=a(h)&&Math.abs(n-h)>1,p=o(e.closeTop,!0),m=o(e.closeBottom,!0);this._rectangle=t,this._granularity=i,this._ellipsoid=l.clone(r),this._surfaceHeight=n,this._rotation=s,this._stRotation=u,this._vertexFormat=E.clone(c),this._extrudedHeight=o(h,0),this._extrude=d,this._closeTop=p,this._closeBottom=m,this._workerName="createRectangleGeometry"};U.packedLength=w.packedLength+l.packedLength+E.packedLength+8,U.pack=function(e,t,i){i=o(i,0),w.pack(e._rectangle,t,i),i+=w.packedLength,l.pack(e._ellipsoid,t,i),i+=l.packedLength,E.pack(e._vertexFormat,t,i),i+=E.packedLength,t[i++]=e._granularity,t[i++]=e._surfaceHeight,t[i++]=e._rotation,t[i++]=e._stRotation,t[i++]=e._extrudedHeight,t[i++]=e._extrude?1:0,t[i++]=e._closeTop?1:0,t[i]=e._closeBottom?1:0};var W=new w,G=l.clone(l.UNIT_SPHERE),H=new E,q={rectangle:W,ellipsoid:G,vertexFormat:H,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,closeTop:void 0,closeBottom:void 0};U.unpack=function(e,t,i){t=o(t,0);var r=w.unpack(e,t,W);t+=w.packedLength;var n=l.unpack(e,t,G);t+=l.packedLength;var s=E.unpack(e,t,H);t+=E.packedLength;var u=e[t++],c=e[t++],h=e[t++],d=e[t++],p=e[t++],m=1===e[t++],f=1===e[t++],v=1===e[t];return a(i)?(i._rectangle=w.clone(r,i._rectangle),i._ellipsoid=l.clone(n,i._ellipsoid),i._vertexFormat=E.clone(s,i._vertexFormat),i._granularity=u,i._surfaceHeight=c,i._rotation=h,i._stRotation=d,i._extrudedHeight=m?p:void 0,i._extrude=m,i._closeTop=f,i._closeBottom=v,i):(q.granularity=u,q.height=c,q.rotation=h,q.stRotation=d,q.extrudedHeight=m?p:void 0,q.closeTop=f,q.closeBottom=v,new U(q))};var j=new v,Y=new g,X=new r,Z=new C,J=new r;return U.createGeometry=function(t){var r=w.clone(t._rectangle,N),n=t._ellipsoid,o=t._surfaceHeight,s=t._extrude,l=t._extrudedHeight,c=t._stRotation,d=t._vertexFormat,p=S.computeOptions(t,r,X),m=j,f=Y;if(a(c)){v.fromRotation(-c,m);var y=w.center(r,J),E=n.cartographicToCartesian(y,k);i.normalize(E,E),C.fromAxisAngle(E,-c,Z),g.fromQuaternion(Z,f)}else v.clone(v.IDENTITY,m),g.clone(g.IDENTITY,f);p.lonScalar=1/r.width,p.latScalar=1/r.height,p.vertexFormat=d,p.textureMatrix=m,p.tangentRotationMatrix=f,p.size=p.width*p.height;var b,x;if(r=t._rectangle,s){b=M(p);var T=e.fromRectangle3D(r,n,o,z),A=e.fromRectangle3D(r,n,l,B);x=e.union(T,A)}else b=P(p),b=_.scaleToGeodeticHeight(b,o,n,!1),x=e.fromRectangle3D(r,n,o);return d.position||delete b.attributes.position,new u({attributes:new h(b.attributes),indices:b.indices,primitiveType:b.primitiveType,boundingSphere:x})},U}),i("Core/RectangleOutlineGeometry",["./BoundingSphere","./Cartesian3","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PolygonPipeline","./PrimitiveType","./Rectangle","./RectangleGeometryLibrary"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v){"use strict";function g(e){var t,i=e.size,n=e.height,o=e.width,a=new Float64Array(3*i),s=0,d=0,p=w;for(t=0;o>t;t++)v.computePosition(e,d,t,p),a[s++]=p.x,a[s++]=p.y,a[s++]=p.z;for(t=o-1,d=1;n>d;d++)v.computePosition(e,d,t,p),a[s++]=p.x,a[s++]=p.y,a[s++]=p.z;for(d=n-1,t=o-2;t>=0;t--)v.computePosition(e,d,t,p),a[s++]=p.x,a[s++]=p.y,a[s++]=p.z;for(t=0,d=n-2;d>0;d--)v.computePosition(e,d,t,p),a[s++]=p.x,a[s++]=p.y,a[s++]=p.z;for(var f=2*(a.length/3),g=h.createTypedArray(a.length/3,f),_=0,y=0;yC;C++)_[y++]=C,_[y++]=C+1,_[y++]=C+c,_[y++]=C+c+1;return _[y++]=c-1,_[y++]=0,_[y++]=c+c-1,_[y++]=c,_[y++]=0,_[y++]=c,_[y++]=l-1,_[y++]=c+l-1,_[y++]=l+s-2,_[y++]=l+s-2+c,_[y++]=2*l+s-3,_[y++]=2*l+s-3+c,a.indices=_,a}var y=new e,C=new e,w=new t,S=new f,E=function(e){e=n(e,n.EMPTY_OBJECT);var t=e.rectangle,i=n(e.granularity,d.RADIANS_PER_DEGREE),r=n(e.ellipsoid,s.WGS84),o=n(e.height,0),a=n(e.rotation,0),l=e.extrudedHeight;this._rectangle=t,this._granularity=i,this._ellipsoid=r,this._surfaceHeight=o,this._rotation=a,this._extrudedHeight=l,this._workerName="createRectangleOutlineGeometry"};E.packedLength=f.packedLength+s.packedLength+5,E.pack=function(e,t,i){i=n(i,0),f.pack(e._rectangle,t,i),i+=f.packedLength,s.pack(e._ellipsoid,t,i),i+=s.packedLength,t[i++]=e._granularity,t[i++]=e._surfaceHeight,t[i++]=e._rotation,t[i++]=o(e._extrudedHeight)?1:0,t[i]=n(e._extrudedHeight,0)};var b=new f,x=s.clone(s.UNIT_SPHERE),T={rectangle:b,ellipsoid:x,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0};E.unpack=function(e,t,i){t=n(t,0);var r=f.unpack(e,t,b);t+=f.packedLength;var a=s.unpack(e,t,x);t+=s.packedLength;var l=e[t++],u=e[t++],c=e[t++],h=e[t++],d=e[t];return o(i)?(i._rectangle=f.clone(r,i._rectangle),i._ellipsoid=s.clone(a,i._ellipsoid),i._surfaceHeight=u,i._rotation=c,i._extrudedHeight=h?d:void 0,i):(T.granularity=l,T.height=u,T.rotation=c,T.extrudedHeight=h?d:void 0,new E(T))};var P=new i;return E.createGeometry=function(t){var i=f.clone(t._rectangle,S),r=t._ellipsoid,n=t._surfaceHeight,a=t._extrudedHeight,s=v.computeOptions(t,i,P);s.size=2*s.width+2*s.height-4;var u,c;if(i=t._rectangle,o(a)){u=_(s);var h=e.fromRectangle3D(i,r,n,C),d=e.fromRectangle3D(i,r,a,y);c=e.union(h,d)}else u=g(s),u=p.scaleToGeodeticHeight(u,n,r,!1),c=e.fromRectangle3D(i,r,n);return new l({attributes:u.attributes,indices:u.indices,primitiveType:m.LINES,boundingSphere:c})},E}),i("Core/ReferenceFrame",["./freezeObject"],function(e){"use strict";var t={FIXED:0,INERTIAL:1};return e(t)}),i("Core/ScreenSpaceEventType",["./freezeObject"],function(e){"use strict";var t={LEFT_DOWN:0,LEFT_UP:1,LEFT_CLICK:2,LEFT_DOUBLE_CLICK:3,RIGHT_DOWN:5,RIGHT_UP:6,RIGHT_CLICK:7,RIGHT_DOUBLE_CLICK:8,MIDDLE_DOWN:10,MIDDLE_UP:11,MIDDLE_CLICK:12,MIDDLE_DOUBLE_CLICK:13,MOUSE_MOVE:15,WHEEL:16,PINCH_START:17,PINCH_END:18,PINCH_MOVE:19};return e(t)}),i("Core/ScreenSpaceEventHandler",["./AssociativeArray","./Cartesian2","./defaultValue","./defined","./destroyObject","./DeveloperError","./FeatureDetection","./KeyboardEventModifier","./ScreenSpaceEventType"],function(e,t,i,r,n,o,a,s,l){"use strict";function u(e,t,i){var r=e._element;if(r===document)return i.x=t.clientX,i.y=t.clientY,i;var n=r.getBoundingClientRect();return i.x=t.clientX-n.left,i.y=t.clientY-n.top,i}function c(e,t){var i=e;return r(t)&&(i+="+"+t),i}function h(e){return e.shiftKey?s.SHIFT:e.ctrlKey?s.CTRL:e.altKey?s.ALT:void 0}function d(e,t,i,r){var n=function(t){r(e,t)};i.addEventListener(t,n,!1),e._removalFunctions.push(function(){i.removeEventListener(t,n,!1)})}function p(e){var t=e._element,i=r(t.disableRootEvents)?t:document;a.supportsPointerEvents()?(d(e,"pointerdown",t,x),d(e,"pointerup",t,T),d(e,"pointermove",t,P)):(d(e,"mousedown",t,f),d(e,"mouseup",i,v),d(e,"mousemove",i,g),d(e,"touchstart",t,C),d(e,"touchend",i,w),d(e,"touchmove",i,E)),d(e,"dblclick",t,_);var n;n="onwheel"in t?"wheel":r(document.onmousewheel)?"mousewheel":"DOMMouseScroll",d(e,n,t,y)}function m(e){for(var t=e._removalFunctions,i=0;i0?-120*t.detail:t.wheelDelta;if(r(i)){var o=h(t),a=e.getInputAction(l.WHEEL,o);r(a)&&(a(i),t.preventDefault())}}function C(e,i){e._seenAnyTouchEvents=!0;var r,n,o,a=i.changedTouches,s=a.length,l=e._positions;for(r=0;s>r;++r)n=a[r],o=n.identifier,l.set(o,u(e,n,new t));S(e,i);var c=e._previousPositions;for(r=0;s>r;++r)n=a[r],o=n.identifier,c.set(o,t.clone(l.get(o)))}function w(e,t){e._seenAnyTouchEvents=!0;var i,r,n,o=t.changedTouches,a=o.length,s=e._positions;for(i=0;a>i;++i)r=o[i],n=r.identifier,s.remove(n);S(e,t);var l=e._previousPositions;for(i=0;a>i;++i)r=o[i],n=r.identifier,l.remove(n)}function S(e,i){var n,o,a=h(i),s=e._positions,u=e._previousPositions,c=s.length;if(1!==c&&e._buttonDown===A.LEFT&&(e._buttonDown=void 0,n=e.getInputAction(l.LEFT_UP,a),r(n)&&(t.clone(e._primaryPosition,F.position),n(F)),0===c&&(o=e.getInputAction(l.LEFT_CLICK,a),r(o)))){var d=e._primaryStartPosition,p=u.values[0],m=d.x-p.x,f=d.y-p.y,v=Math.sqrt(m*m+f*f);vn;++n){o=s[n],a=o.identifier;var h=c.get(a);r(h)&&u(e,o,h)}b(e,i);var d=e._previousPositions;for(n=0;l>n;++n)o=s[n],a=o.identifier,t.clone(c.get(a),d.get(a))}function b(e,i){var n,o=h(i),a=e._positions,s=e._previousPositions,u=a.length;if(1===u&&e._buttonDown===A.LEFT){var c=a.values[0];t.clone(c,e._primaryPosition);var d=e._primaryPreviousPosition;n=e.getInputAction(l.MOUSE_MOVE,o),r(n)&&(t.clone(d,z.startPosition),t.clone(c,z.endPosition),n(z)),t.clone(c,d),i.preventDefault()}else if(2===u&&e._isPinching&&(n=e.getInputAction(l.PINCH_MOVE,o),r(n))){var p=a.values[0],m=a.values[1],f=s.values[0],v=s.values[1],g=m.x-p.x,_=m.y-p.y,y=.25*Math.sqrt(g*g+_*_),C=v.x-f.x,w=v.y-f.y,S=.25*Math.sqrt(C*C+w*w),E=.125*(m.y+p.y),b=.125*(v.y+f.y),x=Math.atan2(_,g),T=Math.atan2(w,C);t.fromElements(0,S,k.distance.startPosition),t.fromElements(0,y,k.distance.endPosition),t.fromElements(T,b,k.angleAndHeight.startPosition),t.fromElements(x,E,k.angleAndHeight.endPosition),n(k)}}function x(e,i){if(i.target.setPointerCapture(i.pointerId),"touch"===i.pointerType){var r=e._positions,n=i.pointerId;r.set(n,u(e,i,new t)),S(e,i);var o=e._previousPositions;o.set(n,t.clone(r.get(n)))}else f(e,i)}function T(e,t){if("touch"===t.pointerType){var i=e._positions,r=t.pointerId;i.remove(r),S(e,t);var n=e._previousPositions;n.remove(r)}else v(e,t)}function P(e,i){if("touch"===i.pointerType){var r=e._positions,n=i.pointerId;u(e,i,r.get(n)),b(e,i);var o=e._previousPositions;t.clone(r.get(n),o.get(n))}else g(e,i)}var A={LEFT:0,MIDDLE:1,RIGHT:2},D={position:new t},M={position:new t},I={position:new t},O={startPosition:new t,endPosition:new t},R={position:new t},L={position:new t},N={position1:new t,position2:new t},F={position:new t},B={position:new t},z={startPosition:new t,endPosition:new t},k={distance:{startPosition:new t,endPosition:new t},angleAndHeight:{startPosition:new t,endPosition:new t}},V=function(r){this._inputEvents={},this._buttonDown=void 0,this._isPinching=!1,this._seenAnyTouchEvents=!1,this._primaryStartPosition=new t,this._primaryPosition=new t,this._primaryPreviousPosition=new t,this._positions=new e,this._previousPositions=new e,this._removalFunctions=[],this._clickPixelTolerance=5,this._element=i(r,document),p(this)};return V.prototype.setInputAction=function(e,t,i){var r=c(t,i);this._inputEvents[r]=e},V.prototype.getInputAction=function(e,t){var i=c(e,t);return this._inputEvents[i]},V.prototype.removeInputAction=function(e,t){var i=c(e,t);delete this._inputEvents[i]},V.prototype.isDestroyed=function(){return!1},V.prototype.destroy=function(){return m(this),n(this)},V}),i("Core/ShowGeometryInstanceAttribute",["./ComponentDatatype","./defaultValue","./defined","./defineProperties","./DeveloperError"],function(e,t,i,r){"use strict";var n=function(e){e=t(e,!0),this.value=n.toValue(e)};return r(n.prototype,{componentDatatype:{get:function(){return e.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 1}},normalize:{get:function(){return!0}}}),n.toValue=function(e,t){return i(t)?(t[0]=e,t):new Uint8Array([e])},n}),i("Core/Simon1994PlanetaryPositions",["./Cartesian3","./defined","./DeveloperError","./JulianDate","./Math","./Matrix3","./TimeConstants","./TimeStandard"],function(e,t,i,r,n,o,a,s){"use strict";function l(e){var t=6.239996+.0172019696544*e;return.001657*Math.sin(t+.01671*Math.sin(t))}function u(e,t){t=r.addSeconds(e,C,t);var i=r.totalDays(t)-w;return t=r.addSeconds(t,l(i),t)}function c(r,a,s,l,u,c,p,m){if(0>s&&(s=-s,u+=n.PI),0>s||s>n.PI)throw new i("The inclination is out of range. Inclination must be greater than or equal to zero and less than or equal to Pi radians.");var v=r*(1-a),g=l-u,_=u,y=d(c-l,a),C=h(a,0);if("Hyperbolic"===C&&Math.abs(n.negativePiToPi(y))>=Math.acos(-1/a))throw new i("The true anomaly of the hyperbolic orbit lies outside of the bounds of the hyperbola.");f(g,s,_,D);var w=v*(1+a),S=Math.cos(y),E=Math.sin(y),b=1+a*S;if(b<=n.Epsilon10)throw new i("elements cannot be converted to cartesian");var x=w/b;return t(m)?(m.x=x*S,m.y=x*E,m.z=0):m=new e(x*S,x*E,0),o.multiplyByVector(D,m,m)}function h(e,t){if(0>e)throw new i("eccentricity cannot be negative.");return t>=e?"Circular":1-t>e?"Elliptical":1+t>=e?"Parabolic":"Hyperbolic"}function d(e,t){if(0>t||t>=1)throw new i("eccentricity out of range.");var r=p(e,t);return m(r,t)}function p(e,t){if(0>t||t>=1)throw new i("eccentricity out of range.");var r=Math.floor(e/n.TWO_PI);e-=r*n.TWO_PI;var o,a=e+t*Math.sin(e)/(1-Math.sin(e+t)+Math.sin(e)),s=Number.MAX_VALUE;for(o=0;M>o&&Math.abs(s-a)>I;++o){s=a;var l=s-t*Math.sin(s)-e,u=1-t*Math.cos(s);a=s-l/u}if(o>=M)throw new i("Kepler equation did not converge");return s=a+r*n.TWO_PI}function m(e,t){if(0>t||t>=1)throw new i("eccentricity out of range.");var r=Math.floor(e/n.TWO_PI);e-=r*n.TWO_PI;var o=Math.cos(e)-t,a=Math.sin(e)*Math.sqrt(1-t*t),s=Math.atan2(a,o);return s=n.zeroToTwoPi(s),0>e&&(s-=n.TWO_PI),s+=r*n.TWO_PI}function f(e,r,a,s){if(0>r||r>n.PI)throw new i("inclination out of range");var l=Math.cos(e),u=Math.sin(e),c=Math.cos(r),h=Math.sin(r),d=Math.cos(a),p=Math.sin(a);return t(s)?(s[0]=d*l-p*u*c,s[1]=p*l+d*u*c,s[2]=u*h,s[3]=-d*u-p*l*c,s[4]=-p*u+d*l*c,s[5]=l*h,s[6]=p*h,s[7]=-d*h,s[8]=c):s=new o(d*l-p*u*c,-d*u-p*l*c,p*h,p*l+d*u*c,-p*u+d*l*c,-d*h,u*h,l*h,c),s}function v(e,t){u(e,Dt);var i=Dt.dayNumber-S.dayNumber+(Dt.secondsOfDay-S.secondsOfDay)/a.SECONDS_PER_DAY,r=i/(10*a.DAYS_PER_JULIAN_CENTURY),n=.3595362*r,o=O+G*Math.cos(N*n)+Q*Math.sin(N*n)+H*Math.cos(F*n)+K*Math.sin(F*n)+q*Math.cos(B*n)+$*Math.sin(B*n)+j*Math.cos(z*n)+et*Math.sin(z*n)+Y*Math.cos(k*n)+tt*Math.sin(k*n)+X*Math.cos(V*n)+it*Math.sin(V*n)+Z*Math.cos(U*n)+rt*Math.sin(U*n)+J*Math.cos(W*n)+nt*Math.sin(W*n),s=R+L*r+pt*Math.cos(ot*n)+wt*Math.sin(ot*n)+mt*Math.cos(at*n)+St*Math.sin(at*n)+ft*Math.cos(st*n)+Et*Math.sin(st*n)+vt*Math.cos(lt*n)+bt*Math.sin(lt*n)+gt*Math.cos(ut*n)+xt*Math.sin(ut*n)+_t*Math.cos(ct*n)+Tt*Math.sin(ct*n)+yt*Math.cos(ht*n)+Pt*Math.sin(ht*n)+Ct*Math.cos(dt*n)+At*Math.sin(dt*n),l=.0167086342-.0004203654*r,h=102.93734808*T+11612.3529*P*r,d=469.97289*P*r,p=174.87317577*T-8679.27034*P*r;return c(o,l,d,h,p,s,b,t)}function g(e,t){u(e,Dt);var i=Dt.dayNumber-S.dayNumber+(Dt.secondsOfDay-S.secondsOfDay)/a.SECONDS_PER_DAY,r=i/a.DAYS_PER_JULIAN_CENTURY,n=r*r,o=n*r,s=o*r,l=383397.7725+.004*r,h=.055545526-1.6e-8*r,d=5.15668983*T,p=-8e-5*r+.02966*n-42e-6*o-1.3e-7*s,m=83.35324312*T,f=14643420.2669*r-38.2702*n-.045047*o+21301e-8*s,v=125.04455501*T,g=-6967919.3631*r+6.3602*n+.007625*o-3586e-8*s,_=218.31664563*T,y=1732559343.4847*r-6.391*n+.006588*o-3169e-8*s,C=297.85019547*T+P*(1602961601.209*r-6.3706*n+.006593*o-3169e-8*s),w=93.27209062*T+P*(1739527262.8478*r-12.7512*n-.001037*o+417e-8*s),b=134.96340251*T+P*(1717915923.2178*r+31.8792*n+.051635*o-2447e-7*s),A=357.52910918*T+P*(129596581.0481*r-.5532*n+136e-6*o-1149e-8*s),D=310.17137918*T-P*(6967051.436*r+6.2068*n+.007618*o-3219e-8*s),M=2*C,I=4*C,O=6*C,R=2*b,L=3*b,N=4*b,F=2*w;l+=3400.4*Math.cos(M)-635.6*Math.cos(M-b)-235.6*Math.cos(b)+218.1*Math.cos(M-A)+181*Math.cos(M+b),h+=.014216*Math.cos(M-b)+.008551*Math.cos(M-R)-.001383*Math.cos(b)+.001356*Math.cos(M+b)-.001147*Math.cos(I-L)-914e-6*Math.cos(I-R)+869e-6*Math.cos(M-A-b)-627e-6*Math.cos(M)-394e-6*Math.cos(I-N)+282e-6*Math.cos(M-A-R)-279e-6*Math.cos(C-b)-236e-6*Math.cos(R)+231e-6*Math.cos(I)+229e-6*Math.cos(O-N)-201e-6*Math.cos(R-F),p+=486.26*Math.cos(M-F)-40.13*Math.cos(M)+37.51*Math.cos(F)+25.73*Math.cos(R-F)+19.97*Math.cos(M-A-F),f+=-55609*Math.sin(M-b)-34711*Math.sin(M-R)-9792*Math.sin(b)+9385*Math.sin(I-L)+7505*Math.sin(I-R)+5318*Math.sin(M+b)+3484*Math.sin(I-N)-3417*Math.sin(M-A-b)-2530*Math.sin(O-N)-2376*Math.sin(M)-2075*Math.sin(M-L)-1883*Math.sin(R)-1736*Math.sin(O-5*b)+1626*Math.sin(A)-1370*Math.sin(O-L),g+=-5392*Math.sin(M-F)-540*Math.sin(A)-441*Math.sin(M)+423*Math.sin(F)-288*Math.sin(R-F),y+=-3332.9*Math.sin(M)+1197.4*Math.sin(M-b)-662.5*Math.sin(A)+396.3*Math.sin(b)-218*Math.sin(M-A);var B=2*D,z=3*D;p+=46.997*Math.cos(D)*r-.614*Math.cos(M-F+D)*r+.614*Math.cos(M-F-D)*r-.0297*Math.cos(B)*n-.0335*Math.cos(D)*n+.0012*Math.cos(M-F+B)*n-16e-5*Math.cos(D)*o+4e-5*Math.cos(z)*o+4e-5*Math.cos(B)*o;var k=2.116*Math.sin(D)*r-.111*Math.sin(M-F-D)*r-.0015*Math.sin(D)*n;f+=k,y+=k,g+=-520.77*Math.sin(D)*r+13.66*Math.sin(M-F+D)*r+1.12*Math.sin(M-D)*r-1.06*Math.sin(F-D)*r+.66*Math.sin(B)*n+.371*Math.sin(D)*n-.035*Math.sin(M-F+B)*n-.015*Math.sin(M-F+D)*n+.0014*Math.sin(D)*o-.0011*Math.sin(z)*o-9e-4*Math.sin(B)*o,l*=x;var V=d+p*P,U=m+f*P,W=_+y*P,G=v+g*P;return c(l,h,V,U,G,W,E,t)}function _(t,i){return i=g(t,i),e.multiplyByScalar(i,It,i)}var y={},C=32.184,w=2451545,S=new r(2451545,0,s.TAI),E=398600435e6,b=328900.56*1.012300034*E,x=1e3,T=n.RADIANS_PER_DEGREE,P=n.RADIANS_PER_ARCSECOND,A=14959787e4,D=new o,M=50,I=n.EPSILON8,O=1.0000010178*A,R=100.46645683*T,L=1295977422.83429*P,N=16002,F=21863,B=32004,z=10931,k=14529,V=16368,U=15318,W=32794,G=64e-7*A,H=-152*1e-7*A,q=62e-7*A,j=-8e-7*A,Y=32e-7*A,X=-41*1e-7*A,Z=19e-7*A,J=-11*1e-7*A,Q=-150*1e-7*A,K=-46*1e-7*A,$=68*1e-7*A,et=54e-7*A,tt=14e-7*A,it=24e-7*A,rt=-28*1e-7*A,nt=22e-7*A,ot=10,at=16002,st=21863,lt=10931,ut=1473,ct=32004,ht=4387,dt=73,pt=-325*1e-7,mt=-322*1e-7,ft=-79*1e-7,vt=232*1e-7,gt=-52*1e-7,_t=97e-7,yt=55e-7,Ct=-41*1e-7,wt=-105*1e-7,St=-137*1e-7,Et=258e-7,bt=35e-7,xt=-116*1e-7,Tt=-88*1e-7,Pt=-112*1e-7,At=-80*1e-7,Dt=new r(0,0,s.TAI),Mt=.012300034,It=-1*(Mt/(Mt+1)),Ot=new o(1.0000000000000002,5.619723173785822e-16,4.690511510146299e-19,-5.154129427414611e-16,.9174820620691819,-.39777715593191376,-2.23970096136568e-16,.39777715593191376,.9174820620691819),Rt=new e; +return y.computeSunPositionInEarthInertialFrame=function(i,n){return t(i)||(i=r.now()),t(n)||(n=new e),Rt=v(i,Rt),n=e.negate(Rt,n),_(i,Rt),e.subtract(n,Rt,n),o.multiplyByVector(Ot,n,n),n},y.computeMoonPositionInEarthInertialFrame=function(e,i){return t(e)||(e=r.now()),i=g(e,i),o.multiplyByVector(Ot,i,i),i},y}),i("Core/SimplePolylineGeometry",["./BoundingSphere","./Cartesian3","./Color","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PolylinePipeline","./PrimitiveType"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m){"use strict";function f(e,t,r,n,o,a,s){var l,u=p.numberOfPoints(e,t,o),c=r.red,h=r.green,d=r.blue,m=r.alpha,f=n.red,v=n.green,g=n.blue,_=n.alpha;if(i.equals(r,n)){for(l=0;u>l;l++)a[s++]=i.floatToByte(c),a[s++]=i.floatToByte(h),a[s++]=i.floatToByte(d),a[s++]=i.floatToByte(m);return s}var y=(f-c)/u,C=(v-h)/u,w=(g-d)/u,S=(_-m)/u,E=s;for(l=0;u>l;l++)a[E++]=i.floatToByte(c+l*y),a[E++]=i.floatToByte(h+l*C),a[E++]=i.floatToByte(d+l*w),a[E++]=i.floatToByte(m+l*S);return E}var v=function(e){e=n(e,n.EMPTY_OBJECT);var r=e.positions,a=e.colors,l=n(e.colorsPerVertex,!1);this._positions=r,this._colors=a,this._colorsPerVertex=l,this._followSurface=n(e.followSurface,!0),this._granularity=n(e.granularity,d.RADIANS_PER_DEGREE),this._ellipsoid=n(e.ellipsoid,s.WGS84),this._workerName="createSimplePolylineGeometry";var u=1+r.length*t.packedLength;u+=o(a)?1+a.length*i.packedLength:1,this.packedLength=u+s.packedLength+3};v.pack=function(e,r,a){a=n(a,0);var l,u=e._positions,c=u.length;for(r[a++]=c,l=0;c>l;++l,a+=t.packedLength)t.pack(u[l],r,a);var h=e._colors;for(c=o(h)?h.length:0,r[a++]=c,l=0;c>l;++l,a+=i.packedLength)i.pack(h[l],r,a);s.pack(e._ellipsoid,r,a),a+=s.packedLength,r[a++]=e._colorsPerVertex?1:0,r[a++]=e._followSurface?1:0,r[a]=e._granularity},v.unpack=function(e,r,a){r=n(r,0);var l,u=e[r++],c=new Array(u);for(l=0;u>l;++l,r+=t.packedLength)c[l]=t.unpack(e,r);u=e[r++];var h=u>0?new Array(u):void 0;for(l=0;u>l;++l,r+=i.packedLength)h[l]=i.unpack(e,r);var d=s.unpack(e,r);r+=s.packedLength;var p=1===e[r++],m=1===e[r++],f=e[r];return o(a)?(a._positions=c,a._colors=h,a._ellipsoid=d,a._colorsPerVertex=p,a._followSurface=m,a._granularity=f,a):new v({positions:c,colors:h,ellipsoid:d,colorsPerVertex:p,followSurface:m,granularity:f})};var g=new Array(2),_=new Array(2),y={positions:g,height:_,ellipsoid:void 0,minDistance:void 0};return v.createGeometry=function(n){var a,s,v,C,w,S=n._positions,E=n._colors,b=n._colorsPerVertex,x=n._followSurface,T=n._granularity,P=n._ellipsoid,A=d.chordLength(T,P.maximumRadius),D=o(E)&&!b,M=S.length,I=0;if(x){var O=p.extractHeights(S,P),R=y;if(R.minDistance=A,R.ellipsoid=P,D){var L=0;for(a=0;M-1>a;a++)L+=p.numberOfPoints(S[a],S[a+1],A)+1;s=new Float64Array(3*L),C=new Uint8Array(4*L),R.positions=g,R.height=_;var N=0;for(a=0;M-1>a;++a){g[0]=S[a],g[1]=S[a+1],_[0]=O[a],_[1]=O[a+1];var F=p.generateArc(R);if(o(E)){var B=F.length/3;w=E[a];for(var z=0;B>z;++z)C[N++]=i.floatToByte(w.red),C[N++]=i.floatToByte(w.green),C[N++]=i.floatToByte(w.blue),C[N++]=i.floatToByte(w.alpha)}s.set(F,I),I+=F.length}}else if(R.positions=S,R.height=O,s=new Float64Array(p.generateArc(R)),o(E)){for(C=new Uint8Array(4*(s.length/3)),a=0;M-1>a;++a){var k=S[a],V=S[a+1],U=E[a],W=E[a+1];I=f(k,V,U,W,A,C,I)}var G=E[M-1];C[I++]=i.floatToByte(G.red),C[I++]=i.floatToByte(G.green),C[I++]=i.floatToByte(G.blue),C[I++]=i.floatToByte(G.alpha)}}else{v=D?2*M-2:M,s=new Float64Array(3*v),C=o(E)?new Uint8Array(4*v):void 0;var H=0,q=0;for(a=0;M>a;++a){var j=S[a];if(D&&a>0&&(t.pack(j,s,H),H+=3,w=E[a-1],C[q++]=i.floatToByte(w.red),C[q++]=i.floatToByte(w.green),C[q++]=i.floatToByte(w.blue),C[q++]=i.floatToByte(w.alpha)),D&&a===M-1)break;t.pack(j,s,H),H+=3,o(E)&&(w=E[a],C[q++]=i.floatToByte(w.red),C[q++]=i.floatToByte(w.green),C[q++]=i.floatToByte(w.blue),C[q++]=i.floatToByte(w.alpha))}}var Y=new c;Y.position=new u({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:s}),o(E)&&(Y.color=new u({componentDatatype:r.UNSIGNED_BYTE,componentsPerAttribute:4,values:C,normalize:!0})),v=s.length/3;var X=2*(v-1),Z=h.createTypedArray(v,X),J=0;for(a=0;v-1>a;++a)Z[J++]=a,Z[J++]=a+1;return new l({attributes:Y,indices:Z,primitiveType:m.LINES,boundingSphere:e.fromPoints(S)})},v}),i("Core/SphereGeometry",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./EllipsoidGeometry","./VertexFormat"],function(e,t,i,r,n,o){"use strict";var a=function(i){var r=t(i.radius,1),o=new e(r,r,r),a={radii:o,stackPartitions:i.stackPartitions,slicePartitions:i.slicePartitions,vertexFormat:i.vertexFormat};this._ellipsoidGeometry=new n(a),this._workerName="createSphereGeometry"};a.packedLength=n.packedLength,a.pack=function(e,t,i){n.pack(e._ellipsoidGeometry,t,i)};var s=new n,l={radius:void 0,radii:new e,vertexFormat:new o,stackPartitions:void 0,slicePartitions:void 0};return a.unpack=function(t,r,u){var c=n.unpack(t,r,s);return l.vertexFormat=o.clone(c._vertexFormat,l.vertexFormat),l.stackPartitions=c._stackPartitions,l.slicePartitions=c._slicePartitions,i(u)?(e.clone(c._radii,l.radii),u._ellipsoidGeometry=new n(l),u):(l.radius=c._radii.x,new a(l))},a.createGeometry=function(e){return n.createGeometry(e._ellipsoidGeometry)},a}),i("Core/SphereOutlineGeometry",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./EllipsoidOutlineGeometry"],function(e,t,i,r,n){"use strict";var o=function(i){var r=t(i.radius,1),o=new e(r,r,r),a={radii:o,stackPartitions:i.stackPartitions,slicePartitions:i.slicePartitions,subdivisions:i.subdivisions};this._ellipsoidGeometry=new n(a),this._workerName="createSphereOutlineGeometry"};o.packedLength=n.packedLength,o.pack=function(e,t,i){n.pack(e._ellipsoidGeometry,t,i)};var a=new n,s={radius:void 0,radii:new e,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};return o.unpack=function(t,r,l){var u=n.unpack(t,r,a);return s.stackPartitions=u._stackPartitions,s.slicePartitions=u._slicePartitions,s.subdivisions=u._subdivisions,i(l)?(e.clone(u._radii,s.radii),l._ellipsoidGeometry=new n(s),l):(s.radius=u._radii.x,new o(s))},o.createGeometry=function(e){return n.createGeometry(e._ellipsoidGeometry)},o}),i("Core/Spherical",["./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var i=function(t,i,r){this.clock=e(t,0),this.cone=e(i,0),this.magnitude=e(r,1)};return i.fromCartesian3=function(e,r){var n=e.x,o=e.y,a=e.z,s=n*n+o*o;return t(r)||(r=new i),r.clock=Math.atan2(o,n),r.cone=Math.atan2(Math.sqrt(s),a),r.magnitude=Math.sqrt(s+a*a),r},i.clone=function(e,r){return t(e)?t(r)?(r.clock=e.clock,r.cone=e.cone,r.magnitude=e.magnitude,r):new i(e.clock,e.cone,e.magnitude):void 0},i.normalize=function(e,r){return t(r)?(r.clock=e.clock,r.cone=e.cone,r.magnitude=1,r):new i(e.clock,e.cone,1)},i.equals=function(e,i){return e===i||t(e)&&t(i)&&e.clock===i.clock&&e.cone===i.cone&&e.magnitude===i.magnitude},i.equalsEpsilon=function(i,r,n){return n=e(n,0),i===r||t(i)&&t(r)&&Math.abs(i.clock-r.clock)<=n&&Math.abs(i.cone-r.cone)<=n&&Math.abs(i.magnitude-r.magnitude)<=n},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.clock+", "+this.cone+", "+this.magnitude+")"},i}),i("Core/TerrainData",["./defineProperties","./DeveloperError"],function(e,t){"use strict";var i=function(){t.throwInstantiationError()};return e(i.prototype,{waterMask:{get:t.throwInstantiationError}}),i.prototype.interpolateHeight=t.throwInstantiationError,i.prototype.isChildAvailable=t.throwInstantiationError,i.prototype.createMesh=t.throwInstantiationError,i.prototype.upsample=t.throwInstantiationError,i.prototype.wasCreatedByUpsampling=t.throwInstantiationError,i}),i("Core/TilingScheme",["./defineProperties","./DeveloperError"],function(e,t){"use strict";var i=function(){throw new t("This type should not be instantiated directly. Instead, use WebMercatorTilingScheme or GeographicTilingScheme.")};return e(i.prototype,{ellipsoid:{get:t.throwInstantiationError},rectangle:{get:t.throwInstantiationError},projection:{get:t.throwInstantiationError}}),i.prototype.getNumberOfXTilesAtLevel=t.throwInstantiationError,i.prototype.getNumberOfYTilesAtLevel=t.throwInstantiationError,i.prototype.rectangleToNativeRectangle=t.throwInstantiationError,i.prototype.tileXYToNativeRectangle=t.throwInstantiationError,i.prototype.tileXYToRectangle=t.throwInstantiationError,i.prototype.positionToTileXY=t.throwInstantiationError,i}),i("Core/TimeIntervalCollection",["./binarySearch","./defaultValue","./defined","./defineProperties","./DeveloperError","./Event","./JulianDate","./TimeInterval"],function(e,t,i,r,n,o,a,s){"use strict";function l(e,t){return a.compare(e.start,t.start)}var u=function(e){if(this._intervals=[],this._changedEvent=new o,i(e))for(var t=e.length,r=0;t>r;r++)this.addInterval(e[r])};r(u.prototype,{changedEvent:{get:function(){return this._changedEvent}},start:{get:function(){var e=this._intervals;return 0===e.length?void 0:e[0].start}},isStartIncluded:{get:function(){var e=this._intervals;return 0===e.length?!1:e[0].isStartIncluded}},stop:{get:function(){var e=this._intervals,t=e.length;return 0===t?void 0:e[t-1].stop}},isStopIncluded:{get:function(){var e=this._intervals,t=e.length;return 0===t?!1:e[t-1].isStopIncluded}},length:{get:function(){return this._intervals.length}},isEmpty:{get:function(){return 0===this._intervals.length}}}),u.prototype.equals=function(e,t){if(this===e)return!0;if(!(e instanceof u))return!1;var i=this._intervals,r=e._intervals,n=i.length;if(n!==r.length)return!1;for(var o=0;n>o;o++)if(!s.equals(i[o],r[o],t))return!1;return!0},u.prototype.get=function(e){return this._intervals[e]},u.prototype.removeAll=function(){this._intervals.length>0&&(this._intervals.length=0,this._changedEvent.raiseEvent(this))},u.prototype.findIntervalContainingDate=function(e){var t=this.indexOf(e);return t>=0?this._intervals[t]:void 0},u.prototype.findDataForIntervalContainingDate=function(e){var t=this.indexOf(e);return t>=0?this._intervals[t].data:void 0},u.prototype.contains=function(e){return this.indexOf(e)>=0};var c=new s;return u.prototype.indexOf=function(t){var i=this._intervals;c.start=t,c.stop=t;var r=e(i,c,l);return r>=0?i[r].isStartIncluded?r:r>0&&i[r-1].stop.equals(t)&&i[r-1].isStopIncluded?r-1:~r:(r=~r,r>0&&r-1l;l++){var c=s[l];if(!(i(r)&&!c.start.equals(r)||i(n)&&!c.stop.equals(n)||i(o)&&c.isStartIncluded!==o||i(a)&&c.isStopIncluded!==a))return s[l]}return void 0},u.prototype.addInterval=function(t,r){if(!t.isEmpty){var n,o,u=this._intervals;if(0===u.length||a.greaterThan(t.start,u[u.length-1].stop))return u.push(t),this._changedEvent.raiseEvent(this),void 0;for(o=e(u,t,l),0>o?o=~o:o>0&&t.isStartIncluded&&u[o-1].isStartIncluded&&u[o-1].start.equals(t.start)?--o:o0&&(n=a.compare(u[o-1].stop,t.start),(n>0||0===n&&(u[o-1].isStopIncluded||t.isStartIncluded))&&((i(r)?r(u[o-1].data,t.data):u[o-1].data===t.data)?(t=a.greaterThan(t.stop,u[o-1].stop)?new s({start:u[o-1].start,stop:t.stop,isStartIncluded:u[o-1].isStartIncluded,isStopIncluded:t.isStopIncluded,data:t.data}):new s({start:u[o-1].start,stop:u[o-1].stop,isStartIncluded:u[o-1].isStartIncluded,isStopIncluded:u[o-1].isStopIncluded||t.stop.equals(u[o-1].stop)&&t.isStopIncluded,data:t.data}),u.splice(o-1,1),--o):(n=a.compare(u[o-1].stop,t.stop),n>0||0===n&&u[o-1].isStopIncluded&&!t.isStopIncluded?u.splice(o-1,1,new s({start:u[o-1].start,stop:t.start,isStartIncluded:u[o-1].isStartIncluded,isStopIncluded:!t.isStartIncluded,data:u[o-1].data}),new s({start:t.stop,stop:u[o-1].stop,isStartIncluded:!t.isStopIncluded,isStopIncluded:u[o-1].isStopIncluded,data:u[o-1].data})):u[o-1]=new s({start:u[o-1].start,stop:t.start,isStartIncluded:u[o-1].isStartIncluded,isStopIncluded:!t.isStartIncluded,data:u[o-1].data}))));o0||0===n&&(t.isStopIncluded||u[o].isStartIncluded));)if(i(r)?r(u[o].data,t.data):u[o].data===t.data)t=new s({start:t.start,stop:a.greaterThan(u[o].stop,t.stop)?u[o].stop:t.stop,isStartIncluded:t.isStartIncluded,isStopIncluded:a.greaterThan(u[o].stop,t.stop)?u[o].isStopIncluded:t.isStopIncluded,data:t.data}),u.splice(o,1);else{if(u[o]=new s({start:t.stop,stop:u[o].stop,isStartIncluded:!t.isStopIncluded,isStopIncluded:u[o].isStopIncluded,data:u[o].data}),!u[o].isEmpty)break;u.splice(o,1)}u.splice(o,0,t),this._changedEvent.raiseEvent(this)}},u.prototype.removeInterval=function(t){if(t.isEmpty)return!1;var i=!1,r=this._intervals,n=e(r,t,l);0>n&&(n=~n);var o=t.start,u=t.stop,c=t.isStartIncluded,h=t.isStopIncluded;if(n>0){var d=r[n-1],p=d.stop;(a.greaterThan(p,o)||s.equals(p,o)&&d.isStopIncluded&&c)&&(i=!0,(a.greaterThan(p,u)||d.isStopIncluded&&!h&&s.equals(p,u))&&r.splice(n,0,new s({start:u,stop:p,isStartIncluded:!h,isStopIncluded:d.isStopIncluded,data:d.data})),r[n-1]=new s({start:d.start,stop:o,isStartIncluded:d.isStartIncluded,isStopIncluded:!c,data:d.data}))}var m=r[n];for(n0&&"/"!==this._url[this._url.length-1]&&(this._url+="/"),this._errorEvent=new s,this._ready=!1,this._proxy=n.proxy,this._terrainDataStructure={heightScale:.001,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0};var v=n.credit;"string"==typeof v&&(v=new t(v)),this._credit=v,this._tilingScheme=void 0,this._rectangles=[];var y,C=this,w=i(n.ellipsoid,a.WGS84);h()};n(w.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){if(!this.ready)throw new o("requestTileGeometry must not be called before ready returns true.");return this._tilingScheme}},ready:{get:function(){return this._ready}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}}}),w.prototype.requestTileGeometry=function(t,n,a,s){if(!this.ready)throw new o("requestTileGeometry must not be called before ready returns true.");var l=this._tilingScheme.getNumberOfYTilesAtLevel(a),d=this._url+a+"/"+t+"/"+(l-n-1)+".tif?cesium=true",p=this._proxy;r(p)&&(d=p.getURL(d));var m;if(s=i(s,!0)){if(m=v(d,h),!r(m))return void 0}else m=h(d);var f=this;return e(m,function(e){return new c({buffer:u(e),width:f._heightmapWidth,height:f._heightmapHeight,childTileMask:y(f,t,n,a),structure:f._terrainDataStructure})})},w.prototype.getLevelMaximumGeometricError=function(e){if(!this.ready)throw new o("requestTileGeometry must not be called before ready returns true.");return this._levelZeroMaximumGeometricError/(1<a)return{positions:r};var s=t(o),u=t(n),c=new Array(a),p=new Array(a),m=new Array(a),f=r[0];c[0]=f;var v=i.cartesianToCartographic(f,h);u&&(v.height=n[0]),p[0]=v.height,m[0]=s?o[0]:0;for(var g=1,_=1;a>_;++_){var y=r[_],C=i.cartesianToCartographic(y,d);u&&(C.height=n[_]),l(v,C)?v.height=3){var v=r.fromPoints(t,e),g=v.projectPointsOntoPlane(t);o.computeWindingOrder2D(g)===s.CLOCKWISE&&(t.reverse(),i.reverse(),l.reverse())}var _,y,C=t.length,w=n.chordLength(c,e.maximumRadius),S=f;if(S.minDistance=w,S.ellipsoid=e,h){var E,b=0;for(E=0;C-1>E;E++)b+=a.numberOfPoints(t[E],t[E+1],w)+1;_=new Float64Array(3*b),y=new Float64Array(3*b);var x=p,T=m;S.positions=x,S.height=T;var P=0;for(E=0;C-1>E;E++){x[0]=t[E],x[1]=t[E+1],T[0]=i[E],T[1]=i[E+1];var A=a.generateArc(S);_.set(A,P),T[0]=l[E],T[1]=l[E+1],y.set(a.generateArc(S),P),P+=A.length}}else S.positions=t,S.height=i,_=new Float64Array(a.generateArc(S)),S.height=l,y=new Float64Array(a.generateArc(S));return{bottomPositions:y,topPositions:_}},c}),i("Core/WallGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType","./VertexFormat","./WallGeometryLibrary"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m){"use strict";var f=new t,v=new t,g=new t,_=new t,y=new t,C=new t,w=new t,S=new t,E=function(e){e=r(e,r.EMPTY_OBJECT);var i=e.positions,o=e.maximumHeights,s=e.minimumHeights,l=r(e.vertexFormat,p.DEFAULT),u=r(e.granularity,h.RADIANS_PER_DEGREE),c=r(e.ellipsoid,a.WGS84);this._positions=i,this._minimumHeights=s,this._maximumHeights=o,this._vertexFormat=p.clone(l),this._granularity=u,this._ellipsoid=a.clone(c),this._workerName="createWallGeometry";var d=1+i.length*t.packedLength+2;n(s)&&(d+=s.length),n(o)&&(d+=o.length),this.packedLength=d+a.packedLength+p.packedLength+1};E.pack=function(e,i,o){o=r(o,0);var s,l=e._positions,u=l.length;for(i[o++]=u,s=0;u>s;++s,o+=t.packedLength)t.pack(l[s],i,o);var c=e._minimumHeights;if(u=n(c)?c.length:0,i[o++]=u,n(c))for(s=0;u>s;++s)i[o++]=c[s];var h=e._maximumHeights;if(u=n(h)?h.length:0,i[o++]=u,n(h))for(s=0;u>s;++s)i[o++]=h[s];a.pack(e._ellipsoid,i,o),o+=a.packedLength,p.pack(e._vertexFormat,i,o),o+=p.packedLength,i[o]=e._granularity};var b=a.clone(a.UNIT_SPHERE),x=new p,T={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:b,vertexFormat:x,granularity:void 0};return E.unpack=function(e,i,o){i=r(i,0);var s,l=e[i++],u=new Array(l);for(s=0;l>s;++s,i+=t.packedLength)u[s]=t.unpack(e,i);l=e[i++];var c;if(l>0)for(c=new Array(l),s=0;l>s;++s)c[s]=e[i++];l=e[i++];var h;if(l>0)for(h=new Array(l),s=0;l>s;++s)h[s]=e[i++];var d=a.unpack(e,i,b);i+=a.packedLength;var m=p.unpack(e,i,x);i+=p.packedLength;var f=e[i];return n(o)?(o._positions=u,o._minimumHeights=c,o._maximumHeights=h,o._ellipsoid=a.clone(d,o._ellipsoid),o._vertexFormat=p.clone(m,o._vertexFormat),o._granularity=f,o):(T.positions=u,T.minimumHeights=c,T.maximumHeights=h,T.granularity=f,new E(T))},E.fromConstantHeights=function(e){e=r(e,r.EMPTY_OBJECT);var t,i,o=e.positions,a=e.minimumHeight,s=e.maximumHeight,l=n(a),u=n(s);if(l||u){var c=o.length;t=l?new Array(c):void 0,i=u?new Array(c):void 0;for(var h=0;c>h;++h)l&&(t[h]=a),u&&(i[h]=s)}var d={positions:o,maximumHeights:i,minimumHeights:t,ellipsoid:e.ellipsoid,vertexFormat:e.vertexFormat};return new E(d)},E.createGeometry=function(r){var o=r._positions,a=r._minimumHeights,p=r._maximumHeights,E=r._vertexFormat,b=r._granularity,x=r._ellipsoid,T=m.computePositions(x,o,p,a,b,!0);if(!n(T))return void 0;var P=T.bottomPositions,A=T.topPositions,D=A.length,M=2*D,I=E.position?new Float64Array(M):void 0,O=E.normal?new Float32Array(M):void 0,R=E.tangent?new Float32Array(M):void 0,L=E.binormal?new Float32Array(M):void 0,N=E.st?new Float32Array(2*(M/3)):void 0,F=0,B=0,z=0,k=0,V=0,U=S,W=w,G=C,H=!0;D/=3;var q;for(q=0;D>q;++q){var j=3*q,Y=t.fromArray(A,j,f),X=t.fromArray(P,j,v);if(E.position&&(I[F++]=X.x,I[F++]=X.y,I[F++]=X.z,I[F++]=Y.x,I[F++]=Y.y,I[F++]=Y.z),E.normal||E.tangent||E.binormal){var Z,J=t.clone(t.ZERO,y),Q=x.scaleToGeodeticSurface(t.fromArray(A,j,v),v);if(D>q+1&&(Z=x.scaleToGeodeticSurface(t.fromArray(A,j+3,g),g),J=t.fromArray(A,j+3,y)),H){var K=t.subtract(J,Y,_),$=t.subtract(Q,Y,f);U=t.normalize(t.cross($,K,U),U),H=!1}t.equalsEpsilon(Z,Q,h.EPSILON6)?H=!0:(E.tangent&&(W=t.normalize(t.subtract(Z,Q,W),W)),E.binormal&&(G=t.normalize(t.cross(U,W,G),G))),E.normal&&(O[B++]=U.x,O[B++]=U.y,O[B++]=U.z,O[B++]=U.x,O[B++]=U.y,O[B++]=U.z),E.tangent&&(R[k++]=W.x,R[k++]=W.y,R[k++]=W.z,R[k++]=W.x,R[k++]=W.y,R[k++]=W.z),E.binormal&&(L[z++]=G.x,L[z++]=G.y,L[z++]=G.z,L[z++]=G.x,L[z++]=G.y,L[z++]=G.z)}if(E.st){var et=q/(D-1);N[V++]=et,N[V++]=0,N[V++]=et,N[V++]=1}}var tt=new u;E.position&&(tt.position=new l({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:I})),E.normal&&(tt.normal=new l({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:O})),E.tangent&&(tt.tangent=new l({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:R})),E.binormal&&(tt.binormal=new l({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:L})),E.st&&(tt.st=new l({componentDatatype:i.FLOAT,componentsPerAttribute:2,values:N}));var it=M/3;M-=6;var rt=c.createTypedArray(it,M),nt=0;for(q=0;it-2>q;q+=2){var ot=q,at=q+2,st=t.fromArray(I,3*ot,f),lt=t.fromArray(I,3*at,v);if(!t.equalsEpsilon(st,lt,h.EPSILON6)){var ut=q+1,ct=q+3;rt[nt++]=ut,rt[nt++]=ot,rt[nt++]=ct,rt[nt++]=ct,rt[nt++]=ot,rt[nt++]=at}}return new s({attributes:tt,indices:rt,primitiveType:d.TRIANGLES,boundingSphere:new e.fromVertices(I)})},E}),i("Core/WallOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType","./WallGeometryLibrary"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p){"use strict";var m=new t,f=new t,v=function(e){e=r(e,r.EMPTY_OBJECT);var i=e.positions,o=e.maximumHeights,s=e.minimumHeights,l=r(e.granularity,h.RADIANS_PER_DEGREE),u=r(e.ellipsoid,a.WGS84);this._positions=i,this._minimumHeights=s,this._maximumHeights=o,this._granularity=l,this._ellipsoid=a.clone(u),this._workerName="createWallOutlineGeometry";var c=1+i.length*t.packedLength+2;n(s)&&(c+=s.length),n(o)&&(c+=o.length),this.packedLength=c+a.packedLength+1};v.pack=function(e,i,o){o=r(o,0);var s,l=e._positions,u=l.length;for(i[o++]=u,s=0;u>s;++s,o+=t.packedLength)t.pack(l[s],i,o);var c=e._minimumHeights;if(u=n(c)?c.length:0,i[o++]=u,n(c))for(s=0;u>s;++s)i[o++]=c[s];var h=e._maximumHeights;if(u=n(h)?h.length:0,i[o++]=u,n(h))for(s=0;u>s;++s)i[o++]=h[s];a.pack(e._ellipsoid,i,o),o+=a.packedLength,i[o]=e._granularity};var g=a.clone(a.UNIT_SPHERE),_={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:g,granularity:void 0};return v.unpack=function(e,i,o){i=r(i,0);var s,l=e[i++],u=new Array(l);for(s=0;l>s;++s,i+=t.packedLength)u[s]=t.unpack(e,i);l=e[i++];var c;if(l>0)for(c=new Array(l),s=0;l>s;++s)c[s]=e[i++];l=e[i++];var h;if(l>0)for(h=new Array(l),s=0;l>s;++s)h[s]=e[i++];var d=a.unpack(e,i,g);i+=a.packedLength;var p=e[i];return n(o)?(o._positions=u,o._minimumHeights=c,o._maximumHeights=h,o._ellipsoid=a.clone(d,o._ellipsoid),o._granularity=p,o):(_.positions=u,_.minimumHeights=c,_.maximumHeights=h,_.granularity=p,new v(_))},v.fromConstantHeights=function(e){e=r(e,r.EMPTY_OBJECT);var t,i,o=e.positions,a=e.minimumHeight,s=e.maximumHeight,l=n(a),u=n(s);if(l||u){var c=o.length;t=l?new Array(c):void 0,i=u?new Array(c):void 0;for(var h=0;c>h;++h)l&&(t[h]=a),u&&(i[h]=s)}var d={positions:o,maximumHeights:i,minimumHeights:t,ellipsoid:e.ellipsoid};return new v(d)},v.createGeometry=function(r){var o=r._positions,a=r._minimumHeights,v=r._maximumHeights,g=r._granularity,_=r._ellipsoid,y=p.computePositions(_,o,v,a,g,!1);if(!n(y))return void 0;var C=y.bottomPositions,w=y.topPositions,S=w.length,E=2*S,b=new Float64Array(E),x=0;S/=3;var T;for(T=0;S>T;++T){var P=3*T,A=t.fromArray(w,P,m),D=t.fromArray(C,P,f);b[x++]=D.x,b[x++]=D.y,b[x++]=D.z,b[x++]=A.x,b[x++]=A.y,b[x++]=A.z}var M=new u({position:new l({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:b})}),I=E/3;E=2*I-4+I;var O=c.createTypedArray(I,E),R=0;for(T=0;I-2>T;T+=2){var L=T,N=T+2,F=t.fromArray(b,3*L,m),B=t.fromArray(b,3*N,f);if(!t.equalsEpsilon(F,B,h.EPSILON6)){var z=T+1,k=T+3;O[R++]=z,O[R++]=L,O[R++]=z,O[R++]=k,O[R++]=L,O[R++]=N}}return O[R++]=I-2,O[R++]=I-1,new s({attributes:M,indices:O,primitiveType:d.LINES,boundingSphere:new e.fromVertices(b)})},v}),i("Core/WebMercatorProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(e){this._ellipsoid=i(e,a.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return n(l.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),l.mercatorAngleToGeodeticLatitude=function(e){return s.PI_OVER_TWO-2*Math.atan(Math.exp(-e))},l.geodeticLatitudeToMercatorAngle=function(e){e>l.MaximumLatitude?e=l.MaximumLatitude:e<-l.MaximumLatitude&&(e=-l.MaximumLatitude);var t=Math.sin(e);return.5*Math.log((1+t)/(1-t))},l.MaximumLatitude=l.mercatorAngleToGeodeticLatitude(Math.PI),l.prototype.project=function(t,i){var n=this._semimajorAxis,o=t.longitude*n,a=l.geodeticLatitudeToMercatorAngle(t.latitude)*n,s=t.height;return r(i)?(i.x=o,i.y=a,i.z=s,i):new e(o,a,s)},l.prototype.unproject=function(e,i){var n=this._oneOverSemimajorAxis,o=e.x*n,a=l.mercatorAngleToGeodeticLatitude(e.y*n),s=e.z;return r(i)?(i.longitude=o,i.latitude=a,i.height=s,i):new t(o,a,s)},l}),i("Core/WebMercatorTilingScheme",["./Cartesian2","./defaultValue","./defined","./defineProperties","./Ellipsoid","./Rectangle","./WebMercatorProjection"],function(e,t,i,r,n,o,a){"use strict";var s=function(r){if(r=t(r,{}),this._ellipsoid=t(r.ellipsoid,n.WGS84),this._numberOfLevelZeroTilesX=t(r.numberOfLevelZeroTilesX,1),this._numberOfLevelZeroTilesY=t(r.numberOfLevelZeroTilesY,1),this._projection=new a(this._ellipsoid),i(r.rectangleSouthwestInMeters)&&i(r.rectangleNortheastInMeters))this._rectangleSouthwestInMeters=r.rectangleSouthwestInMeters,this._rectangleNortheastInMeters=r.rectangleNortheastInMeters;else{var s=this._ellipsoid.maximumRadius*Math.PI;this._rectangleSouthwestInMeters=new e(-s,-s),this._rectangleNortheastInMeters=new e(s,s)}var l=this._projection.unproject(this._rectangleSouthwestInMeters),u=this._projection.unproject(this._rectangleNortheastInMeters);this._rectangle=new o(l.longitude,l.latitude,u.longitude,u.latitude)};return r(s.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}}),s.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<=s&&(g=s-1);var _=0|v/d;return _>=l&&(_=l-1),i(n)?(n.x=g,n.y=_,n):new e(g,_)},s}),i("Core/cancelAnimationFrame",["./defined"],function(e){"use strict";var t=window.cancelAnimationFrame;!function(){if(!e(t))for(var i=["webkit","moz","ms","o"],r=0,n=i.length;n>r&&!e(t);)t=window[i[r]+"CancelAnimationFrame"],e(t)||(t=window[i[r]+"CancelRequestAnimationFrame"]),++r; +e(t)||(t=clearTimeout)}();var i=function(e){t(e)};return i}),i("Core/combine",["./defaultValue","./defined"],function(e,t){"use strict";var i=function(r,n,o){o=e(o,!1);var a,s,l,u={},c=t(r),h=t(n);if(c)for(a in r)r.hasOwnProperty(a)&&(s=r[a],h&&o&&"object"==typeof s&&n.hasOwnProperty(a)?(l=n[a],u[a]="object"==typeof l?i(s,l,o):s):u[a]=s);if(h)for(a in n)n.hasOwnProperty(a)&&!u.hasOwnProperty(a)&&(l=n[a],u[a]=l);return u};return i}),i("Core/createGuid",[],function(){"use strict";var e=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=0|16*Math.random(),i="x"===e?t:8|3&t;return i.toString(16)})};return e}),i("Core/definedNotNull",[],function(){"use strict";var e=function(e){return void 0!==e&&null!==e};return e}),i("Core/getFilenameFromUri",["../ThirdParty/Uri","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){var i=new e(t);i.normalize();var r=i.path,n=r.lastIndexOf("/");return-1!==n&&(r=r.substr(n+1)),r};return t}),i("Core/getStringFromTypedArray",["./defined","./DeveloperError"],function(){"use strict";var e=function(t){return e.decode(t)};return e.decodeWithTextDecoder=function(e){var t=new TextDecoder("utf-8");return t.decode(e)},e.decodeWithFromCharCode=function(e){for(var t="",i=e.length,r=0;i>r;++r)t+=String.fromCharCode(e[r]);return t},e.decode="undefined"!=typeof TextDecoder?e.decodeWithTextDecoder:e.decodeWithFromCharCode,e}),i("Core/objectToQuery",["./defined","./DeveloperError","./isArray"],function(e,t,i){"use strict";var r=function(e){var t="";for(var r in e)if(e.hasOwnProperty(r)){var n=e[r],o=encodeURIComponent(r)+"=";if(i(n))for(var a=0,s=n.length;s>a;++a)t+=o+encodeURIComponent(n[a])+"&";else t+=o+encodeURIComponent(n)+"&"}return t=t.slice(0,-1)};return r}),i("Core/queryToObject",["./defined","./DeveloperError","./isArray"],function(e,t,i){"use strict";var r=function(t){var r={};if(""===t)return r;for(var n=t.replace(/\+/g,"%20").split("&"),o=0,a=n.length;a>o;++o){var s=n[o].split("="),l=decodeURIComponent(s[0]),u=s[1];u=e(u)?decodeURIComponent(u):"";var c=r[l];"string"==typeof c?r[l]=[c,u]:i(c)?c.push(u):r[l]=u}return r};return r}),i("Core/jsonp",["../ThirdParty/Uri","../ThirdParty/when","./combine","./defaultValue","./defined","./DeveloperError","./objectToQuery","./queryToObject"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(o,u){u=r(u,r.EMPTY_OBJECT);var c;do c="jsonp"+Math.random().toString().substring(2,8);while(n(window[c]));var h=t.defer();window[c]=function(e){h.resolve(e);try{delete window[c]}catch(t){window[c]=void 0}};var d=new e(o),p=s(r(d.query,""));n(u.parameters)&&(p=i(u.parameters,p));var m=r(u.callbackParameterName,"callback");p[m]=c,d.query=a(p),o=d.toString();var f=u.proxy;return n(f)&&(o=f.getURL(o)),l.loadAndExecuteScript(o,c,h),h.promise};return l.loadAndExecuteScript=function(e,t,i){var r=document.createElement("script");r.async=!0,r.src=e;var n=document.getElementsByTagName("head")[0];r.onload=function(){r.onload=void 0,n.removeChild(r)},r.onerror=function(e){i.reject(e)},n.appendChild(r)},l.defaultLoadAndExecuteScript=l.loadAndExecuteScript,l}),i("Core/loadBlob",["./loadWithXhr"],function(e){"use strict";var t=function(t,i){return e({url:t,responseType:"blob",headers:i})};return t}),i("Core/loadImageFromTypedArray",["../ThirdParty/when","./defined","./DeveloperError","./loadImage"],function(e,t,i,r){"use strict";var n=function(t,i){var n=new Blob([t],{type:i}),o=window.URL.createObjectURL(n);return r(o,!1).then(function(e){return window.URL.revokeObjectURL(o),e},function(t){return window.URL.revokeObjectURL(o),e.reject(t)})};return n}),i("Core/loadImageViaBlob",["../ThirdParty/when","./loadBlob","./loadImage"],function(e,t,i){"use strict";var r=/^data:/,n=function(n){return r.test(n)?i(n):t(n).then(function(t){var r=window.URL.createObjectURL(t);return i(r,!1).then(function(e){return e.blob=t,window.URL.revokeObjectURL(r),e},function(t){return window.URL.revokeObjectURL(r),e.reject(t)})})},o=function(){try{var e=new XMLHttpRequest;return e.open("GET","#",!0),e.responseType="blob","blob"===e.responseType}catch(t){return!1}}();return o?n:i}),i("Core/mergeSort",["./defined","./DeveloperError"],function(){"use strict";function e(e,t,n,o,a,s){var l,u,c=a-o+1,h=s-a,d=i,p=r;for(l=0;c>l;++l)d[l]=e[o+l];for(u=0;h>u;++u)p[u]=e[a+u+1];l=0,u=0;for(var m=o;s>=m;++m){var f=d[l],v=p[u];c>l&&(u>=h||t(f,v,n)<=0)?(e[m]=f,++l):h>u&&(e[m]=v,++u)}}function t(i,r,n,o,a){if(!(o>=a)){var s=Math.floor(.5*(o+a));t(i,r,n,o,s),t(i,r,n,s+1,a),e(i,r,n,o,s,a)}}var i=[],r=[],n=function(e,n,o){var a=e.length,s=Math.ceil(.5*a);i.length=s,r.length=s,t(e,n,o,0,a-1),i.length=0,r.length=0};return n}),i("Core/requestAnimationFrame",["./defined","./getTimestamp"],function(e,t){"use strict";var i=window.requestAnimationFrame;!function(){if(!e(i))for(var r=["webkit","moz","ms","o"],n=0,o=r.length;o>n&&!e(i);)i=window[r[n]+"RequestAnimationFrame"],++n;if(!e(i)){var a=1e3/60,s=0;i=function(e){var i=t(),r=Math.max(a-(i-s),0);return s=i+r,setTimeout(function(){e(s)},r)}}}();var r=function(e){return i(e)};return r}),i("Core/sampleTerrain",["../ThirdParty/when","./defined","./DeveloperError"],function(e){"use strict";function t(t,n,o){var a,s=t.tilingScheme,l=[],u={};for(a=0;an;){var o=Math.ceil((r-n)/t--);i.push(e.slice(n,n+o)),n+=o}return i};return e}),i("Core/wrapFunction",["./DeveloperError"],function(){"use strict";var e=function(e,t,i){return function(){i.apply(e,arguments),t.apply(e,arguments)}};return e}),i("DataSources/ConstantProperty",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event"],function(e,t,i,r,n){"use strict";var o=function(e){this._value=void 0,this._hasClone=!1,this._hasEquals=!1,this._definitionChanged=new n,this.setValue(e)};return i(o.prototype,{isConstant:{value:!0},definitionChanged:{get:function(){return this._definitionChanged}}}),o.prototype.getValue=function(e,t){return this._hasClone?this._value.clone(t):this._value},o.prototype.setValue=function(e){var i=this._value;if(i!==e){var r=t(e),n=r&&"function"==typeof e.clone,o=r&&"function"==typeof e.equals;this._hasClone=n,this._hasEquals=o;var a=!o||!e.equals(i);a&&(this._value=n?e.clone():e,this._definitionChanged.raiseEvent(this))}},o.prototype.equals=function(e){return this===e||e instanceof o&&(!this._hasEquals&&this._value===e._value||this._hasEquals&&this._value.equals(e._value))},o}),i("DataSources/createPropertyDescriptor",["../Core/defaultValue","../Core/defined","./ConstantProperty"],function(e,t,i){"use strict";function r(e,i,r,n,o){return{configurable:n,get:function(){return this[i]},set:function(n){var a=this[i],s=this[r];t(s)&&(s(),this[r]=void 0);var l=t(n);l&&!t(n.getValue)&&t(o)&&(n=o(n)),a!==n&&(this[i]=n,this._definitionChanged.raiseEvent(this,e,n,a)),t(n)&&t(n.definitionChanged)&&(this[r]=n.definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this,e,n,n)},this))}}}function n(e){return new i(e)}function o(t,i,o){return r(t,"_"+t.toString(),"_"+t.toString()+"Subscription",e(i,!1),e(o,n))}return o}),i("DataSources/BillboardGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createPropertyDescriptor"],function(e,t,i,r,n,o){"use strict";var a=function(t){this._image=void 0,this._imageSubscription=void 0,this._imageSubRegion=void 0,this._imageSubRegionSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._alignedAxis=void 0,this._alignedAxisSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._show=void 0,this._showSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(a.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},image:o("image"),imageSubRegion:o("imageSubRegion"),scale:o("scale"),rotation:o("rotation"),alignedAxis:o("alignedAxis"),horizontalOrigin:o("horizontalOrigin"),verticalOrigin:o("verticalOrigin"),color:o("color"),eyeOffset:o("eyeOffset"),pixelOffset:o("pixelOffset"),show:o("show"),width:o("width"),height:o("height"),scaleByDistance:o("scaleByDistance"),translucencyByDistance:o("translucencyByDistance"),pixelOffsetScaleByDistance:o("pixelOffsetScaleByDistance")}),a.prototype.clone=function(e){return t(e)?(e.color=this._color,e.eyeOffset=this._eyeOffset,e.horizontalOrigin=this._horizontalOrigin,e.image=this._image,e.imageSubRegion=this._imageSubRegion,e.pixelOffset=this._pixelOffset,e.scale=this._scale,e.rotation=this._rotation,e.alignedAxis=this._alignedAxis,e.show=this._show,e.verticalOrigin=this._verticalOrigin,e.width=this._width,e.height=this._height,e.scaleByDistance=this._scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance,e):new a(this)},a.prototype.merge=function(t){this.color=e(this._color,t.color),this.eyeOffset=e(this._eyeOffset,t.eyeOffset),this.horizontalOrigin=e(this._horizontalOrigin,t.horizontalOrigin),this.image=e(this._image,t.image),this.imageSubRegion=e(this._imageSubRegion,t.imageSubRegion),this.pixelOffset=e(this._pixelOffset,t.pixelOffset),this.scale=e(this._scale,t.scale),this.rotation=e(this._rotation,t.rotation),this.alignedAxis=e(this._alignedAxis,t.alignedAxis),this.show=e(this._show,t.show),this.verticalOrigin=e(this._verticalOrigin,t.verticalOrigin),this.width=e(this._width,t.width),this.height=e(this._height,t.height),this.scaleByDistance=e(this._scaleByDistance,t.scaleByDistance),this.translucencyByDistance=e(this._translucencyByDistance,t.translucencyByDistance),this.pixelOffsetScaleByDistance=e(this._pixelOffsetScaleByDistance,t.pixelOffsetScaleByDistance)},a}),i("Renderer/BufferUsage",["../Core/freezeObject"],function(e){"use strict";var t={STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,validate:function(e){return e===t.STREAM_DRAW||e===t.STATIC_DRAW||e===t.DYNAMIC_DRAW}};return e(t)}),i("Renderer/DrawCommand",["../Core/defaultValue","../Core/PrimitiveType"],function(e,t){"use strict";var i=function(i){i=e(i,e.EMPTY_OBJECT),this.boundingVolume=i.boundingVolume,this.orientedBoundingBox=i.orientedBoundingBox,this.cull=e(i.cull,!0),this.modelMatrix=i.modelMatrix,this.primitiveType=e(i.primitiveType,t.TRIANGLES),this.vertexArray=i.vertexArray,this.count=i.count,this.offset=e(i.offset,0),this.shaderProgram=i.shaderProgram,this.uniformMap=i.uniformMap,this.renderState=i.renderState,this.framebuffer=i.framebuffer,this.pass=i.pass,this.executeInClosestFrustum=e(i.executeInClosestFrustum,!1),this.owner=i.owner,this.debugShowBoundingVolume=e(i.debugShowBoundingVolume,!1),this.debugOverlappingFrustums=0,this.oit=void 0};return i.prototype.execute=function(e,t,i,r){e.draw(this,t,i,r)},i}),i("Shaders/Builtin/Constants/degreesPerRadian",[],function(){"use strict";return"const float czm_degreesPerRadian = 57.29577951308232;\n"}),i("Shaders/Builtin/Constants/depthRange",[],function(){"use strict";return"const czm_depthRangeStruct czm_depthRange = czm_depthRangeStruct(0.0, 1.0);\n"}),i("Shaders/Builtin/Constants/epsilon1",[],function(){"use strict";return"const float czm_epsilon1 = 0.1;\n"}),i("Shaders/Builtin/Constants/epsilon2",[],function(){"use strict";return"const float czm_epsilon2 = 0.01;\n"}),i("Shaders/Builtin/Constants/epsilon3",[],function(){"use strict";return"const float czm_epsilon3 = 0.001;\n"}),i("Shaders/Builtin/Constants/epsilon4",[],function(){"use strict";return"const float czm_epsilon4 = 0.0001;\n"}),i("Shaders/Builtin/Constants/epsilon5",[],function(){"use strict";return"const float czm_epsilon5 = 0.00001;\n"}),i("Shaders/Builtin/Constants/epsilon6",[],function(){"use strict";return"const float czm_epsilon6 = 0.000001;\n"}),i("Shaders/Builtin/Constants/epsilon7",[],function(){"use strict";return"const float czm_epsilon7 = 0.0000001;\n"}),i("Shaders/Builtin/Constants/infinity",[],function(){"use strict";return"const float czm_infinity = 5906376272000.0;\n"}),i("Shaders/Builtin/Constants/oneOverPi",[],function(){"use strict";return"const float czm_oneOverPi = 0.3183098861837907;\n"}),i("Shaders/Builtin/Constants/oneOverTwoPi",[],function(){"use strict";return"const float czm_oneOverTwoPi = 0.15915494309189535;\n"}),i("Shaders/Builtin/Constants/pi",[],function(){"use strict";return"const float czm_pi = 3.141592653589793;\n"}),i("Shaders/Builtin/Constants/piOverFour",[],function(){"use strict";return"const float czm_piOverFour = 0.7853981633974483;\n"}),i("Shaders/Builtin/Constants/piOverSix",[],function(){"use strict";return"const float czm_piOverSix = 0.5235987755982988;\n"}),i("Shaders/Builtin/Constants/piOverThree",[],function(){"use strict";return"const float czm_piOverThree = 1.0471975511965976;\n"}),i("Shaders/Builtin/Constants/piOverTwo",[],function(){"use strict";return"const float czm_piOverTwo = 1.5707963267948966;\n"}),i("Shaders/Builtin/Constants/radiansPerDegree",[],function(){"use strict";return"const float czm_radiansPerDegree = 0.017453292519943295;\n"}),i("Shaders/Builtin/Constants/sceneMode2D",[],function(){"use strict";return"const float czm_sceneMode2D = 2.0;\n"}),i("Shaders/Builtin/Constants/sceneMode3D",[],function(){"use strict";return"const float czm_sceneMode3D = 3.0;\n"}),i("Shaders/Builtin/Constants/sceneModeColumbusView",[],function(){"use strict";return"const float czm_sceneModeColumbusView = 1.0;\n"}),i("Shaders/Builtin/Constants/sceneModeMorphing",[],function(){"use strict";return"const float czm_sceneModeMorphing = 0.0;\n"}),i("Shaders/Builtin/Constants/solarRadius",[],function(){"use strict";return"const float czm_solarRadius = 695500000.0;\n"}),i("Shaders/Builtin/Constants/threePiOver2",[],function(){"use strict";return"const float czm_threePiOver2 = 4.71238898038469;\n"}),i("Shaders/Builtin/Constants/twoPi",[],function(){"use strict";return"const float czm_twoPi = 6.283185307179586;\n"}),i("Shaders/Builtin/Constants/webMercatorMaxLatitude",[],function(){"use strict";return"const float czm_webMercatorMaxLatitude = 1.4844222297453324;\n"}),i("Shaders/Builtin/Structs/depthRangeStruct",[],function(){"use strict";return"struct czm_depthRangeStruct\n{\nfloat near;\nfloat far;\n};\n"}),i("Shaders/Builtin/Structs/ellipsoid",[],function(){"use strict";return"struct czm_ellipsoid\n{\nvec3 center;\nvec3 radii;\nvec3 inverseRadii;\nvec3 inverseRadiiSquared;\n};\n"}),i("Shaders/Builtin/Structs/material",[],function(){"use strict";return"struct czm_material\n{\nvec3 diffuse;\nfloat specular;\nfloat shininess;\nvec3 normal;\nvec3 emission;\nfloat alpha;\n};\n"}),i("Shaders/Builtin/Structs/materialInput",[],function(){"use strict";return"struct czm_materialInput\n{\nfloat s;\nvec2 st;\nvec3 str;\nvec3 normalEC;\nmat3 tangentToEyeMatrix;\nvec3 positionToEyeEC;\n};\n"}),i("Shaders/Builtin/Structs/ray",[],function(){"use strict";return"struct czm_ray\n{\nvec3 origin;\nvec3 direction;\n};\n"}),i("Shaders/Builtin/Structs/raySegment",[],function(){"use strict";return"struct czm_raySegment\n{\nfloat start;\nfloat stop;\n};\nconst czm_raySegment czm_emptyRaySegment = czm_raySegment(-czm_infinity, -czm_infinity);\nconst czm_raySegment czm_fullRaySegment = czm_raySegment(0.0, czm_infinity);\n"}),i("Shaders/Builtin/Functions/RGBToXYZ",[],function(){"use strict";return"vec3 czm_RGBToXYZ(vec3 rgb)\n{\nconst mat3 RGB2XYZ = mat3(0.4124, 0.2126, 0.0193,\n0.3576, 0.7152, 0.1192,\n0.1805, 0.0722, 0.9505);\nvec3 xyz = RGB2XYZ * rgb;\nvec3 Yxy;\nYxy.r = xyz.g;\nfloat temp = dot(vec3(1.0), xyz);\nYxy.gb = xyz.rg / temp;\nreturn Yxy;\n}\n"}),i("Shaders/Builtin/Functions/XYZToRGB",[],function(){"use strict";return"vec3 czm_XYZToRGB(vec3 Yxy)\n{\nconst mat3 XYZ2RGB = mat3( 3.2405, -0.9693, 0.0556,\n-1.5371, 1.8760, -0.2040,\n-0.4985, 0.0416, 1.0572);\nvec3 xyz;\nxyz.r = Yxy.r * Yxy.g / Yxy.b;\nxyz.g = Yxy.r;\nxyz.b = Yxy.r * (1.0 - Yxy.g - Yxy.b) / Yxy.b;\nreturn XYZ2RGB * xyz;\n}\n"}),i("Shaders/Builtin/Functions/alphaWeight",[],function(){"use strict";return"float czm_alphaWeight(float a)\n{\nfloat z;\nif (czm_sceneMode != czm_sceneMode2D)\n{\nfloat x = 2.0 * (gl_FragCoord.x - czm_viewport.x) / czm_viewport.z - 1.0;\nfloat y = 2.0 * (gl_FragCoord.y - czm_viewport.y) / czm_viewport.w - 1.0;\nz = (gl_FragCoord.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2];\nvec4 q = vec4(x, y, z, 0.0);\nq /= gl_FragCoord.w;\nz = (czm_inverseProjectionOIT * q).z;\n}\nelse\n{\nz = gl_FragCoord.z * (czm_currentFrustum.y - czm_currentFrustum.x) + czm_currentFrustum.x;\n}\nreturn pow(a + 0.01, 4.0) + max(1e-2, min(3.0 * 1e3, 100.0 / (1e-5 + pow(abs(z) / 10.0, 3.0) + pow(abs(z) / 200.0, 6.0))));\n}\n"}),i("Shaders/Builtin/Functions/antialias",[],function(){"use strict";return"vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor)\n{\nfloat val1 = clamp(dist / fuzzFactor, 0.0, 1.0);\nfloat val2 = clamp((dist - 0.5) / fuzzFactor, 0.0, 1.0);\nval1 = val1 * (1.0 - val2);\nval1 = val1 * val1 * (3.0 - (2.0 * val1));\nval1 = pow(val1, 0.5);\nvec4 midColor = (color1 + color2) * 0.5;\nreturn mix(midColor, currentColor, val1);\n}\nvec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist)\n{\nreturn czm_antialias(color1, color2, currentColor, dist, 0.1);\n}\n"}),i("Shaders/Builtin/Functions/columbusViewMorph",[],function(){"use strict";return"vec4 czm_columbusViewMorph(vec4 position2D, vec4 position3D, float time)\n{\nvec3 p = mix(position2D.xyz, position3D.xyz, time);\nreturn vec4(p, 1.0);\n}\n"}),i("Shaders/Builtin/Functions/computePosition",[],function(){"use strict";return"vec4 czm_computePosition();\n"}),i("Shaders/Builtin/Functions/cosineAndSine",[],function(){"use strict";return"vec2 cordic(float angle)\n{\nvec2 vector = vec2(6.0725293500888267e-1, 0.0);\nfloat sense = (angle < 0.0) ? -1.0 : 1.0;\nmat2 rotation = mat2(1.0, sense, -sense, 1.0);\nvector = rotation * vector;\nangle -= sense * 7.8539816339744828e-1;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfloat factor = sense * 5.0e-1;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 4.6364760900080609e-1;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 2.5e-1;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 2.4497866312686414e-1;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 1.25e-1;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 1.2435499454676144e-1;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 6.25e-2;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 6.2418809995957350e-2;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 3.125e-2;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 3.1239833430268277e-2;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 1.5625e-2;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 1.5623728620476831e-2;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 7.8125e-3;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 7.8123410601011111e-3;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 3.90625e-3;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 3.9062301319669718e-3;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 1.953125e-3;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 1.9531225164788188e-3;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 9.765625e-4;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 9.7656218955931946e-4;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 4.8828125e-4;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 4.8828121119489829e-4;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 2.44140625e-4;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 2.4414062014936177e-4;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 1.220703125e-4;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 1.2207031189367021e-4;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 6.103515625e-5;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 6.1035156174208773e-5;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 3.0517578125e-5;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 3.0517578115526096e-5;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 1.52587890625e-5;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 1.5258789061315762e-5;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 7.62939453125e-6;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 7.6293945311019700e-6;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 3.814697265625e-6;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 3.8146972656064961e-6;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 1.9073486328125e-6;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 1.9073486328101870e-6;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 9.5367431640625e-7;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 9.5367431640596084e-7;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 4.76837158203125e-7;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 4.7683715820308884e-7;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 2.384185791015625e-7;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nangle -= sense * 2.3841857910155797e-7;\nsense = (angle < 0.0) ? -1.0 : 1.0;\nfactor = sense * 1.1920928955078125e-7;\nrotation[0][1] = factor;\nrotation[1][0] = -factor;\nvector = rotation * vector;\nreturn vector;\n}\nvec2 czm_cosineAndSine(float angle)\n{\nif (angle < -czm_piOverTwo || angle > czm_piOverTwo)\n{\nif (angle < 0.0)\n{\nreturn -cordic(angle + czm_pi);\n}\nelse\n{\nreturn -cordic(angle - czm_pi);\n}\n}\nelse\n{\nreturn cordic(angle);\n}\n}\n"}),i("Shaders/Builtin/Functions/decompressTextureCoordinates",[],function(){"use strict";return"vec2 czm_decompressTextureCoordinates(float encoded)\n{\nfloat temp = encoded / 4096.0;\nfloat stx = floor(temp) / 4096.0;\nfloat sty = temp - floor(temp);\nreturn vec2(stx, sty);\n}\n"}),i("Shaders/Builtin/Functions/eastNorthUpToEyeCoordinates",[],function(){"use strict";return"mat3 czm_eastNorthUpToEyeCoordinates(vec3 positionMC, vec3 normalEC)\n{\nvec3 tangentMC = normalize(vec3(-positionMC.y, positionMC.x, 0.0));\nvec3 tangentEC = normalize(czm_normal3D * tangentMC);\nvec3 bitangentEC = normalize(cross(normalEC, tangentEC));\nreturn mat3(\ntangentEC.x, tangentEC.y, tangentEC.z,\nbitangentEC.x, bitangentEC.y, bitangentEC.z,\nnormalEC.x, normalEC.y, normalEC.z);\n}\n"}),i("Shaders/Builtin/Functions/ellipsoidContainsPoint",[],function(){"use strict";return"bool czm_ellipsoidContainsPoint(czm_ellipsoid ellipsoid, vec3 point)\n{\nvec3 scaled = ellipsoid.inverseRadii * (czm_inverseModelView * vec4(point, 1.0)).xyz;\nreturn (dot(scaled, scaled) <= 1.0);\n}\n"}),i("Shaders/Builtin/Functions/ellipsoidNew",[],function(){"use strict";return"czm_ellipsoid czm_ellipsoidNew(vec3 center, vec3 radii)\n{\nvec3 inverseRadii = vec3(1.0 / radii.x, 1.0 / radii.y, 1.0 / radii.z);\nvec3 inverseRadiiSquared = inverseRadii * inverseRadii;\nczm_ellipsoid temp = czm_ellipsoid(center, radii, inverseRadii, inverseRadiiSquared);\nreturn temp;\n}\n"}),i("Shaders/Builtin/Functions/ellipsoidWgs84TextureCoordinates",[],function(){"use strict";return"vec2 czm_ellipsoidWgs84TextureCoordinates(vec3 normal)\n{\nreturn vec2(atan(normal.y, normal.x) * czm_oneOverTwoPi + 0.5, asin(normal.z) * czm_oneOverPi + 0.5);\n}\n"}),i("Shaders/Builtin/Functions/equalsEpsilon",[],function(){"use strict";return"bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon) {\nreturn all(lessThanEqual(abs(left - right), vec4(epsilon)));\n}\nbool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon) {\nreturn all(lessThanEqual(abs(left - right), vec3(epsilon)));\n}\nbool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon) {\nreturn all(lessThanEqual(abs(left - right), vec2(epsilon)));\n}\nbool czm_equalsEpsilon(float left, float right, float epsilon) {\nreturn (abs(left - right) <= epsilon);\n}\n"}),i("Shaders/Builtin/Functions/eyeOffset",[],function(){"use strict";return"vec4 czm_eyeOffset(vec4 positionEC, vec3 eyeOffset)\n{\nvec4 p = positionEC;\nvec4 zEyeOffset = normalize(p) * eyeOffset.z;\np.xy += eyeOffset.xy + zEyeOffset.xy;\np.z += zEyeOffset.z;\nreturn p;\n}\n"}),i("Shaders/Builtin/Functions/eyeToWindowCoordinates",[],function(){"use strict";return"vec4 czm_eyeToWindowCoordinates(vec4 positionEC)\n{\nvec4 q = czm_projection * positionEC;\nq.xyz /= q.w;\nq.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz;\nreturn q;\n}\n"}),i("Shaders/Builtin/Functions/geodeticSurfaceNormal",[],function(){"use strict";return"vec3 czm_geodeticSurfaceNormal(vec3 positionOnEllipsoid, vec3 ellipsoidCenter, vec3 oneOverEllipsoidRadiiSquared)\n{\nreturn normalize((positionOnEllipsoid - ellipsoidCenter) * oneOverEllipsoidRadiiSquared);\n}\n"}),i("Shaders/Builtin/Functions/getDefaultMaterial",[],function(){"use strict";return"czm_material czm_getDefaultMaterial(czm_materialInput materialInput)\n{\nczm_material material;\nmaterial.diffuse = vec3(0.0);\nmaterial.specular = 0.0;\nmaterial.shininess = 1.0;\nmaterial.normal = materialInput.normalEC;\nmaterial.emission = vec3(0.0);\nmaterial.alpha = 1.0;\nreturn material;\n}\n"}),i("Shaders/Builtin/Functions/getLambertDiffuse",[],function(){"use strict";return"float czm_getLambertDiffuse(vec3 lightDirectionEC, vec3 normalEC)\n{\nreturn max(dot(lightDirectionEC, normalEC), 0.0);\n}\n"}),i("Shaders/Builtin/Functions/getSpecular",[],function(){"use strict";return"float czm_getSpecular(vec3 lightDirectionEC, vec3 toEyeEC, vec3 normalEC, float shininess)\n{\nvec3 toReflectedLight = reflect(-lightDirectionEC, normalEC);\nfloat specular = max(dot(toReflectedLight, toEyeEC), 0.0);\nreturn pow(specular, shininess);\n}\n"}),i("Shaders/Builtin/Functions/getWaterNoise",[],function(){"use strict";return"vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRadians)\n{\nfloat cosAngle = cos(angleInRadians);\nfloat sinAngle = sin(angleInRadians);\nvec2 s0 = vec2(1.0/17.0, 0.0);\nvec2 s1 = vec2(-1.0/29.0, 0.0);\nvec2 s2 = vec2(1.0/101.0, 1.0/59.0);\nvec2 s3 = vec2(-1.0/109.0, -1.0/57.0);\ns0 = vec2((cosAngle * s0.x) - (sinAngle * s0.y), (sinAngle * s0.x) + (cosAngle * s0.y));\ns1 = vec2((cosAngle * s1.x) - (sinAngle * s1.y), (sinAngle * s1.x) + (cosAngle * s1.y));\ns2 = vec2((cosAngle * s2.x) - (sinAngle * s2.y), (sinAngle * s2.x) + (cosAngle * s2.y));\ns3 = vec2((cosAngle * s3.x) - (sinAngle * s3.y), (sinAngle * s3.x) + (cosAngle * s3.y));\nvec2 uv0 = (uv/103.0) + (time * s0);\nvec2 uv1 = uv/107.0 + (time * s1) + vec2(0.23);\nvec2 uv2 = uv/vec2(897.0, 983.0) + (time * s2) + vec2(0.51);\nvec2 uv3 = uv/vec2(991.0, 877.0) + (time * s3) + vec2(0.71);\nuv0 = fract(uv0);\nuv1 = fract(uv1);\nuv2 = fract(uv2);\nuv3 = fract(uv3);\nvec4 noise = (texture2D(normalMap, uv0)) +\n(texture2D(normalMap, uv1)) +\n(texture2D(normalMap, uv2)) +\n(texture2D(normalMap, uv3));\nreturn ((noise / 4.0) - 0.5) * 2.0;\n}\n"}),i("Shaders/Builtin/Functions/getWgs84EllipsoidEC",[],function(){"use strict";return"czm_ellipsoid czm_getWgs84EllipsoidEC()\n{\nvec3 radii = vec3(6378137.0, 6378137.0, 6356752.314245);\nvec3 inverseRadii = vec3(1.0 / radii.x, 1.0 / radii.y, 1.0 / radii.z);\nvec3 inverseRadiiSquared = inverseRadii * inverseRadii;\nczm_ellipsoid temp = czm_ellipsoid(czm_view[3].xyz, radii, inverseRadii, inverseRadiiSquared);\nreturn temp;\n}\n"}),i("Shaders/Builtin/Functions/hue",[],function(){"use strict";return"vec3 czm_hue(vec3 rgb, float adjustment)\n{\nconst mat3 toYIQ = mat3(0.299, 0.587, 0.114,\n0.595716, -0.274453, -0.321263,\n0.211456, -0.522591, 0.311135);\nconst mat3 toRGB = mat3(1.0, 0.9563, 0.6210,\n1.0, -0.2721, -0.6474,\n1.0, -1.107, 1.7046);\nvec3 yiq = toYIQ * rgb;\nfloat hue = atan(yiq.z, yiq.y) + adjustment;\nfloat chroma = sqrt(yiq.z * yiq.z + yiq.y * yiq.y);\nvec3 color = vec3(yiq.x, chroma * cos(hue), chroma * sin(hue));\nreturn toRGB * color;\n}\n"}),i("Shaders/Builtin/Functions/isEmpty",[],function(){"use strict";return"bool czm_isEmpty(czm_raySegment interval)\n{\nreturn (interval.stop < 0.0);\n}\n"}),i("Shaders/Builtin/Functions/isFull",[],function(){"use strict";return"bool czm_isFull(czm_raySegment interval)\n{\nreturn (interval.start == 0.0 && interval.stop == czm_infinity);\n}\n"}),i("Shaders/Builtin/Functions/latitudeToWebMercatorFraction",[],function(){"use strict";return"float czm_latitudeToWebMercatorFraction(float latitude, float southMercatorYLow, float southMercatorYHigh, float oneOverMercatorHeight)\n{\nfloat sinLatitude = sin(latitude);\nfloat mercatorY = 0.5 * log((1.0 + sinLatitude) / (1.0 - sinLatitude));\nfloat t1 = 0.0 - southMercatorYLow;\nfloat e = t1 - 0.0;\nfloat t2 = ((-southMercatorYLow - e) + (0.0 - (t1 - e))) + mercatorY - southMercatorYHigh;\nfloat highDifference = t1 + t2;\nfloat lowDifference = t2 - (highDifference - t1);\nreturn highDifference * oneOverMercatorHeight + lowDifference * oneOverMercatorHeight;\n}\n"}),i("Shaders/Builtin/Functions/luminance",[],function(){"use strict";return"float czm_luminance(vec3 rgb)\n{\nconst vec3 W = vec3(0.2125, 0.7154, 0.0721);\nreturn dot(rgb, W);\n}\n"}),i("Shaders/Builtin/Functions/modelToWindowCoordinates",[],function(){"use strict";return"vec4 czm_modelToWindowCoordinates(vec4 position)\n{\nvec4 q = czm_modelViewProjection * position;\nq.xyz /= q.w;\nq.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz;\nreturn q;\n}\n"}),i("Shaders/Builtin/Functions/multiplyWithColorBalance",[],function(){"use strict";return"vec3 czm_multiplyWithColorBalance(vec3 left, vec3 right)\n{\nconst vec3 W = vec3(0.2125, 0.7154, 0.0721);\nvec3 target = left * right;\nfloat leftLuminance = dot(left, W);\nfloat rightLuminance = dot(right, W);\nfloat targetLuminance = dot(target, W);\nreturn ((leftLuminance + rightLuminance) / (2.0 * targetLuminance)) * target;\n}\n" +}),i("Shaders/Builtin/Functions/nearFarScalar",[],function(){"use strict";return"float czm_nearFarScalar(vec4 nearFarScalar, float cameraDistSq)\n{\nfloat valueAtMin = nearFarScalar.y;\nfloat valueAtMax = nearFarScalar.w;\nfloat nearDistanceSq = nearFarScalar.x * nearFarScalar.x;\nfloat farDistanceSq = nearFarScalar.z * nearFarScalar.z;\nfloat t = (cameraDistSq - nearDistanceSq) / (farDistanceSq - nearDistanceSq);\nt = pow(clamp(t, 0.0, 1.0), 0.2);\nreturn mix(valueAtMin, valueAtMax, t);\n}\n"}),i("Shaders/Builtin/Functions/octDecode",[],function(){"use strict";return"vec3 czm_octDecode(vec2 encoded)\n{\nencoded = encoded / 255.0 * 2.0 - 1.0;\nvec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y));\nif (v.z < 0.0)\n{\nv.xy = (1.0 - abs(v.yx)) * czm_signNotZero(v.xy);\n}\nreturn normalize(v);\n}\nvec3 czm_octDecode(float encoded)\n{\nfloat temp = encoded / 256.0;\nfloat x = floor(temp);\nfloat y = (temp - x) * 256.0;\nreturn czm_octDecode(vec2(x, y));\n}\nvoid czm_octDecode(vec2 encoded, out vec3 vector1, out vec3 vector2, out vec3 vector3)\n{\nfloat temp = encoded.x / 65536.0;\nfloat x = floor(temp);\nfloat encodedFloat1 = (temp - x) * 65536.0;\ntemp = encoded.y / 65536.0;\nfloat y = floor(temp);\nfloat encodedFloat2 = (temp - y) * 65536.0;\nvector1 = czm_octDecode(encodedFloat1);\nvector2 = czm_octDecode(encodedFloat2);\nvector3 = czm_octDecode(vec2(x, y));\n}\n"}),i("Shaders/Builtin/Functions/packDepth",[],function(){"use strict";return"vec4 czm_packDepth(float depth)\n{\nvec4 enc = vec4(1.0, 255.0, 65025.0, 160581375.0) * depth;\nenc = fract(enc);\nenc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\nreturn enc;\n}\n"}),i("Shaders/Builtin/Functions/phong",[],function(){"use strict";return"float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material)\n{\nreturn czm_getLambertDiffuse(lightDirectionEC, material.normal);\n}\nfloat czm_private_getSpecularOfMaterial(vec3 lightDirectionEC, vec3 toEyeEC, czm_material material)\n{\nreturn czm_getSpecular(lightDirectionEC, toEyeEC, material.normal, material.shininess);\n}\nvec4 czm_phong(vec3 toEye, czm_material material)\n{\nfloat diffuse = czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 0.0, 1.0), material);\nif (czm_sceneMode == czm_sceneMode3D) {\ndiffuse += czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 1.0, 0.0), material);\n}\nfloat specular = czm_private_getSpecularOfMaterial(czm_sunDirectionEC, toEye, material) + czm_private_getSpecularOfMaterial(czm_moonDirectionEC, toEye, material);\nvec3 materialDiffuse = material.diffuse * 0.5;\nvec3 ambient = materialDiffuse;\nvec3 color = ambient + material.emission;\ncolor += materialDiffuse * diffuse;\ncolor += material.specular * specular;\nreturn vec4(color, material.alpha);\n}\nvec4 czm_private_phong(vec3 toEye, czm_material material)\n{\nfloat diffuse = czm_private_getLambertDiffuseOfMaterial(czm_sunDirectionEC, material);\nfloat specular = czm_private_getSpecularOfMaterial(czm_sunDirectionEC, toEye, material);\nvec3 ambient = vec3(0.0);\nvec3 color = ambient + material.emission;\ncolor += material.diffuse * diffuse;\ncolor += material.specular * specular;\nreturn vec4(color, material.alpha);\n}\n"}),i("Shaders/Builtin/Functions/pointAlongRay",[],function(){"use strict";return"vec3 czm_pointAlongRay(czm_ray ray, float time)\n{\nreturn ray.origin + (time * ray.direction);\n}\n"}),i("Shaders/Builtin/Functions/rayEllipsoidIntersectionInterval",[],function(){"use strict";return"czm_raySegment czm_rayEllipsoidIntersectionInterval(czm_ray ray, czm_ellipsoid ellipsoid)\n{\nvec3 q = ellipsoid.inverseRadii * (czm_inverseModelView * vec4(ray.origin, 1.0)).xyz;\nvec3 w = ellipsoid.inverseRadii * (czm_inverseModelView * vec4(ray.direction, 0.0)).xyz;\nq = q - ellipsoid.inverseRadii * (czm_inverseModelView * vec4(ellipsoid.center, 1.0)).xyz;\nfloat q2 = dot(q, q);\nfloat qw = dot(q, w);\nif (q2 > 1.0)\n{\nif (qw >= 0.0)\n{\nreturn czm_emptyRaySegment;\n}\nelse\n{\nfloat qw2 = qw * qw;\nfloat difference = q2 - 1.0;\nfloat w2 = dot(w, w);\nfloat product = w2 * difference;\nif (qw2 < product)\n{\nreturn czm_emptyRaySegment;\n}\nelse if (qw2 > product)\n{\nfloat discriminant = qw * qw - product;\nfloat temp = -qw + sqrt(discriminant);\nfloat root0 = temp / w2;\nfloat root1 = difference / temp;\nif (root0 < root1)\n{\nczm_raySegment i = czm_raySegment(root0, root1);\nreturn i;\n}\nelse\n{\nczm_raySegment i = czm_raySegment(root1, root0);\nreturn i;\n}\n}\nelse\n{\nfloat root = sqrt(difference / w2);\nczm_raySegment i = czm_raySegment(root, root);\nreturn i;\n}\n}\n}\nelse if (q2 < 1.0)\n{\nfloat difference = q2 - 1.0;\nfloat w2 = dot(w, w);\nfloat product = w2 * difference;\nfloat discriminant = qw * qw - product;\nfloat temp = -qw + sqrt(discriminant);\nczm_raySegment i = czm_raySegment(0.0, temp / w2);\nreturn i;\n}\nelse\n{\nif (qw < 0.0)\n{\nfloat w2 = dot(w, w);\nczm_raySegment i = czm_raySegment(0.0, -qw / w2);\nreturn i;\n}\nelse\n{\nreturn czm_emptyRaySegment;\n}\n}\n}\n"}),i("Shaders/Builtin/Functions/saturation",[],function(){"use strict";return"vec3 czm_saturation(vec3 rgb, float adjustment)\n{\nconst vec3 W = vec3(0.2125, 0.7154, 0.0721);\nvec3 intensity = vec3(dot(rgb, W));\nreturn mix(intensity, rgb, adjustment);\n}\n"}),i("Shaders/Builtin/Functions/signNotZero",[],function(){"use strict";return"float czm_signNotZero(float value)\n{\nreturn value >= 0.0 ? 1.0 : -1.0;\n}\nvec2 czm_signNotZero(vec2 value)\n{\nreturn vec2(czm_signNotZero(value.x), czm_signNotZero(value.y));\n}\nvec3 czm_signNotZero(vec3 value)\n{\nreturn vec3(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z));\n}\nvec4 czm_signNotZero(vec4 value)\n{\nreturn vec4(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z), czm_signNotZero(value.w));\n}\n"}),i("Shaders/Builtin/Functions/tangentToEyeSpaceMatrix",[],function(){"use strict";return"mat3 czm_tangentToEyeSpaceMatrix(vec3 normalEC, vec3 tangentEC, vec3 binormalEC)\n{\nvec3 normal = normalize(normalEC);\nvec3 tangent = normalize(tangentEC);\nvec3 binormal = normalize(binormalEC);\nreturn mat3(tangent.x, tangent.y, tangent.z,\nbinormal.x, binormal.y, binormal.z,\nnormal.x, normal.y, normal.z);\n}\n"}),i("Shaders/Builtin/Functions/translateRelativeToEye",[],function(){"use strict";return"vec4 czm_translateRelativeToEye(vec3 high, vec3 low)\n{\nvec3 highDifference = high - czm_encodedCameraPositionMCHigh;\nvec3 lowDifference = low - czm_encodedCameraPositionMCLow;\nreturn vec4(highDifference + lowDifference, 1.0);\n}\n"}),i("Shaders/Builtin/Functions/translucentPhong",[],function(){"use strict";return"vec4 czm_translucentPhong(vec3 toEye, czm_material material)\n{\nfloat diffuse = czm_getLambertDiffuse(vec3(0.0, 0.0, 1.0), material.normal);\nif (czm_sceneMode == czm_sceneMode3D) {\ndiffuse += czm_getLambertDiffuse(vec3(0.0, 1.0, 0.0), material.normal);\n}\ndiffuse = clamp(diffuse, 0.0, 1.0);\nfloat specular = czm_getSpecular(czm_sunDirectionEC, toEye, material.normal, material.shininess);\nspecular += czm_getSpecular(czm_moonDirectionEC, toEye, material.normal, material.shininess);\nvec3 materialDiffuse = material.diffuse * 0.5;\nvec3 ambient = materialDiffuse;\nvec3 color = ambient + material.emission;\ncolor += materialDiffuse * diffuse;\ncolor += material.specular * specular;\nreturn vec4(color, material.alpha);\n}\n"}),i("Shaders/Builtin/Functions/transpose",[],function(){"use strict";return"mat2 czm_transpose(mat2 matrix)\n{\nreturn mat2(\nmatrix[0][0], matrix[1][0],\nmatrix[0][1], matrix[1][1]);\n}\nmat3 czm_transpose(mat3 matrix)\n{\nreturn mat3(\nmatrix[0][0], matrix[1][0], matrix[2][0],\nmatrix[0][1], matrix[1][1], matrix[2][1],\nmatrix[0][2], matrix[1][2], matrix[2][2]);\n}\nmat4 czm_transpose(mat4 matrix)\n{\nreturn mat4(\nmatrix[0][0], matrix[1][0], matrix[2][0], matrix[3][0],\nmatrix[0][1], matrix[1][1], matrix[2][1], matrix[3][1],\nmatrix[0][2], matrix[1][2], matrix[2][2], matrix[3][2],\nmatrix[0][3], matrix[1][3], matrix[2][3], matrix[3][3]);\n}\n"}),i("Shaders/Builtin/Functions/unpackDepth",[],function(){"use strict";return"float czm_unpackDepth(vec4 packedDepth)\n{\nreturn dot(packedDepth, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 160581375.0));\n}\n"}),i("Shaders/Builtin/Functions/windowToEyeCoordinates",[],function(){"use strict";return"vec4 czm_windowToEyeCoordinates(vec4 fragmentCoordinate)\n{\nfloat x = 2.0 * (fragmentCoordinate.x - czm_viewport.x) / czm_viewport.z - 1.0;\nfloat y = 2.0 * (fragmentCoordinate.y - czm_viewport.y) / czm_viewport.w - 1.0;\nfloat z = (fragmentCoordinate.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2];\nvec4 q = vec4(x, y, z, 1.0);\nq /= fragmentCoordinate.w;\nq = czm_inverseProjection * q;\nreturn q;\n}\n"}),i("Shaders/Builtin/CzmBuiltins",["./Constants/degreesPerRadian","./Constants/depthRange","./Constants/epsilon1","./Constants/epsilon2","./Constants/epsilon3","./Constants/epsilon4","./Constants/epsilon5","./Constants/epsilon6","./Constants/epsilon7","./Constants/infinity","./Constants/oneOverPi","./Constants/oneOverTwoPi","./Constants/pi","./Constants/piOverFour","./Constants/piOverSix","./Constants/piOverThree","./Constants/piOverTwo","./Constants/radiansPerDegree","./Constants/sceneMode2D","./Constants/sceneMode3D","./Constants/sceneModeColumbusView","./Constants/sceneModeMorphing","./Constants/solarRadius","./Constants/threePiOver2","./Constants/twoPi","./Constants/webMercatorMaxLatitude","./Structs/depthRangeStruct","./Structs/ellipsoid","./Structs/material","./Structs/materialInput","./Structs/ray","./Structs/raySegment","./Functions/RGBToXYZ","./Functions/XYZToRGB","./Functions/alphaWeight","./Functions/antialias","./Functions/columbusViewMorph","./Functions/computePosition","./Functions/cosineAndSine","./Functions/decompressTextureCoordinates","./Functions/eastNorthUpToEyeCoordinates","./Functions/ellipsoidContainsPoint","./Functions/ellipsoidNew","./Functions/ellipsoidWgs84TextureCoordinates","./Functions/equalsEpsilon","./Functions/eyeOffset","./Functions/eyeToWindowCoordinates","./Functions/geodeticSurfaceNormal","./Functions/getDefaultMaterial","./Functions/getLambertDiffuse","./Functions/getSpecular","./Functions/getWaterNoise","./Functions/getWgs84EllipsoidEC","./Functions/hue","./Functions/isEmpty","./Functions/isFull","./Functions/latitudeToWebMercatorFraction","./Functions/luminance","./Functions/modelToWindowCoordinates","./Functions/multiplyWithColorBalance","./Functions/nearFarScalar","./Functions/octDecode","./Functions/packDepth","./Functions/phong","./Functions/pointAlongRay","./Functions/rayEllipsoidIntersectionInterval","./Functions/saturation","./Functions/signNotZero","./Functions/tangentToEyeSpaceMatrix","./Functions/translateRelativeToEye","./Functions/translucentPhong","./Functions/transpose","./Functions/unpackDepth","./Functions/windowToEyeCoordinates"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D,M,I,O,R,L,N,F,B,z,k,V,U,W,G,H,q,j,Y,X,Z,J,Q,K,$,et,tt,it,rt,nt,ot,at,st,lt,ut,ct,ht,dt,pt,mt,ft,vt,gt,_t,yt){"use strict";return{czm_degreesPerRadian:e,czm_depthRange:t,czm_epsilon1:i,czm_epsilon2:r,czm_epsilon3:n,czm_epsilon4:o,czm_epsilon5:a,czm_epsilon6:s,czm_epsilon7:l,czm_infinity:u,czm_oneOverPi:c,czm_oneOverTwoPi:h,czm_pi:d,czm_piOverFour:p,czm_piOverSix:m,czm_piOverThree:f,czm_piOverTwo:v,czm_radiansPerDegree:g,czm_sceneMode2D:_,czm_sceneMode3D:y,czm_sceneModeColumbusView:C,czm_sceneModeMorphing:w,czm_solarRadius:S,czm_threePiOver2:E,czm_twoPi:b,czm_webMercatorMaxLatitude:x,czm_depthRangeStruct:T,czm_ellipsoid:P,czm_material:A,czm_materialInput:D,czm_ray:M,czm_raySegment:I,czm_RGBToXYZ:O,czm_XYZToRGB:R,czm_alphaWeight:L,czm_antialias:N,czm_columbusViewMorph:F,czm_computePosition:B,czm_cosineAndSine:z,czm_decompressTextureCoordinates:k,czm_eastNorthUpToEyeCoordinates:V,czm_ellipsoidContainsPoint:U,czm_ellipsoidNew:W,czm_ellipsoidWgs84TextureCoordinates:G,czm_equalsEpsilon:H,czm_eyeOffset:q,czm_eyeToWindowCoordinates:j,czm_geodeticSurfaceNormal:Y,czm_getDefaultMaterial:X,czm_getLambertDiffuse:Z,czm_getSpecular:J,czm_getWaterNoise:Q,czm_getWgs84EllipsoidEC:K,czm_hue:$,czm_isEmpty:et,czm_isFull:tt,czm_latitudeToWebMercatorFraction:it,czm_luminance:rt,czm_modelToWindowCoordinates:nt,czm_multiplyWithColorBalance:ot,czm_nearFarScalar:at,czm_octDecode:st,czm_packDepth:lt,czm_phong:ut,czm_pointAlongRay:ct,czm_rayEllipsoidIntersectionInterval:ht,czm_saturation:dt,czm_signNotZero:pt,czm_tangentToEyeSpaceMatrix:mt,czm_translateRelativeToEye:ft,czm_translucentPhong:vt,czm_transpose:gt,czm_unpackDepth:_t,czm_windowToEyeCoordinates:yt}}),i("Renderer/AutomaticUniforms",["../Core/Cartesian3","../Core/Matrix4"],function(e,t){"use strict";var i=new e,r=function(e){this._size=e.size,this._datatype=e.datatype,this.getValue=e.getValue};if("undefined"==typeof WebGLRenderingContext)return{};var n={};n[WebGLRenderingContext.FLOAT]="float",n[WebGLRenderingContext.FLOAT_VEC2]="vec2",n[WebGLRenderingContext.FLOAT_VEC3]="vec3",n[WebGLRenderingContext.FLOAT_VEC4]="vec4",n[WebGLRenderingContext.INT]="int",n[WebGLRenderingContext.INT_VEC2]="ivec2",n[WebGLRenderingContext.INT_VEC3]="ivec3",n[WebGLRenderingContext.INT_VEC4]="ivec4",n[WebGLRenderingContext.BOOL]="bool",n[WebGLRenderingContext.BOOL_VEC2]="bvec2",n[WebGLRenderingContext.BOOL_VEC3]="bvec3",n[WebGLRenderingContext.BOOL_VEC4]="bvec4",n[WebGLRenderingContext.FLOAT_MAT2]="mat2",n[WebGLRenderingContext.FLOAT_MAT3]="mat3",n[WebGLRenderingContext.FLOAT_MAT4]="mat4",n[WebGLRenderingContext.SAMPLER_2D]="sampler2D",n[WebGLRenderingContext.SAMPLER_CUBE]="samplerCube",r.prototype.getDeclaration=function(e){var t="uniform "+n[this._datatype]+" "+e,i=this._size;return t+=1===i?";":"["+i.toString()+"];"};var o={czm_viewport:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC4,getValue:function(e){return e.viewportCartesian4}}),czm_viewportOrthographic:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.viewportOrthographic}}),czm_viewportTransformation:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.viewportTransformation}}),czm_globeDepthTexture:new r({size:1,datatype:WebGLRenderingContext.SAMPLER_2D,getValue:function(e){return e.globeDepthTexture}}),czm_model:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.model}}),czm_inverseModel:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.inverseModel}}),czm_view:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.view}}),czm_view3D:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.view3D}}),czm_viewRotation:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT3,getValue:function(e){return e.viewRotation}}),czm_viewRotation3D:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT3,getValue:function(e){return e.viewRotation3D}}),czm_inverseView:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.inverseView}}),czm_inverseView3D:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.inverseView3D}}),czm_inverseViewRotation:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation}}),czm_inverseViewRotation3D:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation3D}}),czm_projection:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.projection}}),czm_inverseProjection:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.inverseProjection}}),czm_inverseProjectionOIT:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.inverseProjectionOIT}}),czm_infiniteProjection:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.infiniteProjection}}),czm_modelView:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.modelView}}),czm_modelView3D:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.modelView3D}}),czm_modelViewRelativeToEye:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.modelViewRelativeToEye}}),czm_inverseModelView:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.inverseModelView}}),czm_inverseModelView3D:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.inverseModelView3D}}),czm_viewProjection:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.viewProjection}}),czm_inverseViewProjection:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.inverseViewProjection}}),czm_modelViewProjection:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.modelViewProjection}}),czm_inverseModelViewProjection:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.inverseModelViewProjection}}),czm_modelViewProjectionRelativeToEye:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.modelViewProjectionRelativeToEye}}),czm_modelViewInfiniteProjection:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT4,getValue:function(e){return e.modelViewInfiniteProjection}}),czm_normal:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT3,getValue:function(e){return e.normal}}),czm_normal3D:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT3,getValue:function(e){return e.normal3D}}),czm_inverseNormal:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT3,getValue:function(e){return e.inverseNormal}}),czm_inverseNormal3D:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT3,getValue:function(e){return e.inverseNormal3D}}),czm_eyeHeight2D:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC2,getValue:function(e){return e.eyeHeight2D}}),czm_entireFrustum:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC2,getValue:function(e){return e.entireFrustum}}),czm_currentFrustum:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC2,getValue:function(e){return e.currentFrustum}}),czm_sunPositionWC:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC3,getValue:function(e){return e.sunPositionWC}}),czm_sunPositionColumbusView:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC3,getValue:function(e){return e.sunPositionColumbusView}}),czm_sunDirectionEC:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC3,getValue:function(e){return e.sunDirectionEC}}),czm_sunDirectionWC:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC3,getValue:function(e){return e.sunDirectionWC}}),czm_moonDirectionEC:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC3,getValue:function(e){return e.moonDirectionEC}}),czm_encodedCameraPositionMCHigh:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCHigh}}),czm_encodedCameraPositionMCLow:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCLow}}),czm_viewerPositionWC:new r({size:1,datatype:WebGLRenderingContext.FLOAT_VEC3,getValue:function(e){return t.getTranslation(e.inverseView,i)}}),czm_frameNumber:new r({size:1,datatype:WebGLRenderingContext.FLOAT,getValue:function(e){return e.frameState.frameNumber}}),czm_morphTime:new r({size:1,datatype:WebGLRenderingContext.FLOAT,getValue:function(e){return e.frameState.morphTime}}),czm_sceneMode:new r({size:1,datatype:WebGLRenderingContext.FLOAT,getValue:function(e){return e.frameState.mode}}),czm_temeToPseudoFixed:new r({size:1,datatype:WebGLRenderingContext.FLOAT_MAT3,getValue:function(e){return e.temeToPseudoFixedMatrix}}),czm_resolutionScale:new r({size:1,datatype:WebGLRenderingContext.FLOAT,getValue:function(e){return e.resolutionScale}})};return o}),i("Renderer/ShaderSource",["../Core/defaultValue","../Core/defined","../Core/DeveloperError","../Shaders/Builtin/CzmBuiltins","./AutomaticUniforms"],function(e,t,i,r,n){"use strict";function o(e){return e.replace(/\/\*\*[\s\S]*?\*\//gm,function(e){for(var t=e.match(/\n/gm).length,i="",r=0;t>r;++r)i+="\n";return i})}function a(e,i,r){for(var n,a=0;a0;){var n=e.pop();r.push(n),0===n.requiredBy.length&&t.push(n)}for(;t.length>0;){var o=t.shift();e.push(o);for(var a=0;a=0;--n)r=r+t[n].glslSource+"\n";return r.replace(i.glslSource,"")}function c(e,r){var n,a,s="",l=e.sources;if(t(l))for(n=0,a=l.length;a>n;++n)s+="\n#line 0\n"+l[n];s=o(s);var c;s=s.replace(/#version\s+(.*?)\n/gm,function(e,r){if(t(c)&&c!==r)throw new i("inconsistent versions found: "+c+" and "+r);return c=r,"\n"});var h=e.pickColorQualifier;t(h)&&(s=s.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,"void czm_old_main()"),s+="\n"+h+" vec4 czm_pickColor;\nvoid main()\n{\n czm_old_main();\n if (gl_FragColor.a == 0.0) {\n discard;\n }\n gl_FragColor = czm_pickColor;\n}");var d="";t(c)&&(d="#version "+c),r&&(d+="#ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n#else\n precision mediump float;\n#endif\n\n");var p=e.defines;if(t(p))for(n=0,a=p.length;a>n;++n){var m=p[n];0!==m.length&&(d+="#define "+m+"\n")}return e.includeBuiltIns&&(d+=u(s)),d+="\n#line 0\n",d+=s}var h=function(i){i=e(i,e.EMPTY_OBJECT);var r=i.pickColorQualifier;this.defines=t(i.defines)?i.defines.slice(0):[],this.sources=t(i.sources)?i.sources.slice(0):[],this.pickColorQualifier=r,this.includeBuiltIns=e(i.includeBuiltIns,!0)};h.prototype.clone=function(){return new h({sources:this.sources,defines:this.defines,pickColorQuantifier:this.pickColorQualifier,includeBuiltIns:this.includeBuiltIns})},h.prototype.createCombinedVertexShader=function(){return c(this,!1)},h.prototype.createCombinedFragmentShader=function(){return c(this,!0)},h._czmBuiltinsAndUniforms={};for(var d in r)r.hasOwnProperty(d)&&(h._czmBuiltinsAndUniforms[d]=r[d]);for(var p in n)if(n.hasOwnProperty(p)){var m=n[p];"function"==typeof m.getDeclaration&&(h._czmBuiltinsAndUniforms[p]=m.getDeclaration(p))}return h}),i("Renderer/VertexArrayFacade",["../Core/ComponentDatatype","../Core/defaultValue","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/Math","./BufferUsage"],function(e,t,i,r,n,o,a){"use strict";function s(e,t){if(t.needsCommit&&t.vertexSizeInBytes>0){t.needsCommit=!1;var r=t.vertexBuffer,n=e._size*t.vertexSizeInBytes,o=i(r);if(!o||r.sizeInBytes0){var r=e.vertexSizeInBytes*t,n=e.vertexSizeInBytes*i;e.vertexBuffer.copyFromArrayView(new Uint8Array(e.arrayBuffer,r,n),r)}}function u(e){var t=e.va;if(i(t)){for(var r=t.length,n=0;r>n;++n)t[n].va.destroy();e.va=void 0}}var c=function(t,r,n){function o(t,i){return e.getSizeInBytes(i.componentDatatype)-e.getSizeInBytes(t.componentDatatype)}var s=c._verifyAttributes(r);n=n||0;for(var l,u,h=[],d={},p=s.length,m=0;p>m;++m){var f=s[m];f.vertexBuffer?h.push(f):(u=f.usage,l=d[u],i(l)||(l=d[u]=[]),l.push(f))}this._buffersByUsage={},this._allBuffers=[];for(u in d)if(d.hasOwnProperty(u)){l=d[u],l.sort(o);var v,g=c._vertexSizeInBytes(l);switch(Number(u)){case a.STATIC_DRAW:v=a.STATIC_DRAW;break;case a.STREAM_DRAW:v=a.STREAM_DRAW;break;case a.DYNAMIC_DRAW:v=a.DYNAMIC_DRAW}var _={vertexSizeInBytes:g,vertexBuffer:void 0,usage:v,needsCommit:!1,arrayBuffer:void 0,arrayViews:c._createArrayViews(l,g)};this._buffersByUsage[u]=_,this._allBuffers.push(_)}this._size=0,this._precreated=h,this._context=t,this.writers=void 0,this.va=void 0,this.resize(n)};c._verifyAttributes=function(i){for(var r=[],o=0;on;++n){var o=t[n];i+=o.componentsPerAttribute*e.getSizeInBytes(o.componentDatatype)}var a=r>0?e.getSizeInBytes(t[0].componentDatatype):0,s=a>0?i%a:0,l=0===s?0:a-s;return i+=l},c._createArrayViews=function(t,i){for(var r=[],n=0,o=t.length,a=0;o>a;++a){var s=t[a],l=s.componentDatatype;r.push({index:s.index,enabled:s.enabled,componentsPerAttribute:s.componentsPerAttribute,componentDatatype:l,normalize:s.normalize,offsetInBytes:n,vertexSizeInComponentType:i/e.getSizeInBytes(l),view:void 0}),n+=s.componentsPerAttribute*e.getSizeInBytes(l)}return r},c.prototype.resize=function(e){this._size=e;var t=this._allBuffers;this.writers=[];for(var i=0,r=t.length;r>i;++i){var n=t[i];c._resize(n,this._size),c._appendWriters(this.writers,n)}u(this)},c._resize=function(t,r){if(t.vertexSizeInBytes>0){var n=new ArrayBuffer(r*t.vertexSizeInBytes);if(i(t.arrayBuffer))for(var o=new Uint8Array(n),a=new Uint8Array(t.arrayBuffer),s=a.length,l=0;s>l;++l)o[l]=a[l];for(var u=t.arrayViews,c=u.length,h=0;c>h;++h){var d=u[h];d.view=e.createArrayBufferView(d.componentDatatype,n,d.offsetInBytes)}t.arrayBuffer=n}};var h=[function(e,t,i){return function(r,n){t[r*i]=n,e.needsCommit=!0}},function(e,t,i){return function(r,n,o){var a=r*i;t[a]=n,t[a+1]=o,e.needsCommit=!0}},function(e,t,i){return function(r,n,o,a){var s=r*i;t[s]=n,t[s+1]=o,t[s+2]=a,e.needsCommit=!0}},function(e,t,i){return function(r,n,o,a,s){var l=r*i;t[l]=n,t[l+1]=o,t[l+2]=a,t[l+3]=s,e.needsCommit=!0}}];return c._appendWriters=function(e,t){for(var i=t.arrayViews,r=i.length,n=0;r>n;++n){var o=i[n];e[o.index]=h[o.componentsPerAttribute-1](t,o.view,o.vertexSizeInComponentType)}},c.prototype.commit=function(e){for(var t,r=!1,n=this._allBuffers,a=0,l=n.length;l>a;++a)t=n[a],r=s(this,t)||r;if(r||!i(this.va)){var h=this._buffersByUsage;u(this);for(var d=this.va=[],p=i(e)?Math.ceil(this._size/o.SIXTY_FOUR_KILOBYTES):1,m=0;p>m;++m){var f=[];for(var v in h)h.hasOwnProperty(v)&&(t=h[v],c._appendAttributes(f,t,m*t.vertexSizeInBytes*o.SIXTY_FOUR_KILOBYTES));f=f.concat(this._precreated),d.push({va:this._context.createVertexArray(f,e),indicesCount:1.5*(m!==p-1?o.SIXTY_FOUR_KILOBYTES:this._size%o.SIXTY_FOUR_KILOBYTES)})}}},c._appendAttributes=function(e,t,i){for(var r=t.arrayViews,n=r.length,o=0;n>o;++o){var a=r[o];e.push({index:a.index,enabled:a.enabled,componentsPerAttribute:a.componentsPerAttribute,componentDatatype:a.componentDatatype,normalize:a.normalize,vertexBuffer:t.vertexBuffer,offsetInBytes:i+a.offsetInBytes,strideInBytes:t.vertexSizeInBytes})}},c.prototype.subCommit=function(e,t){for(var i=this._allBuffers,r=0,n=i.length;n>r;++r)l(i[r],e,t)},c.prototype.endSubCommits=function(){for(var e=this._allBuffers,t=0,i=e.length;i>t;++t)e[t].needsCommit=!1},c.prototype.isDestroyed=function(){return!1},c.prototype.destroy=function(){for(var e=this._allBuffers,t=0,i=e.length;i>t;++t){var n=e[t];n.vertexBuffer=n.vertexBuffer&&n.vertexBuffer.destroy()}return u(this),r(this)},c}),i("Shaders/BillboardCollectionFS",[],function(){"use strict";return"uniform sampler2D u_atlas;\nvarying vec2 v_textureCoordinates;\n#ifdef RENDER_FOR_PICK\nvarying vec4 v_pickColor;\n#else\nvarying vec4 v_color;\n#endif\nvoid main()\n{\n#ifdef RENDER_FOR_PICK\nvec4 vertexColor = vec4(1.0, 1.0, 1.0, 1.0);\n#else\nvec4 vertexColor = v_color;\n#endif\nvec4 color = texture2D(u_atlas, v_textureCoordinates) * vertexColor;\nif (color.a == 0.0)\n{\ndiscard;\n}\n#ifdef RENDER_FOR_PICK\ngl_FragColor = v_pickColor;\n#else\ngl_FragColor = color;\n#endif\n}\n"}),i("Shaders/BillboardCollectionVS",[],function(){"use strict";return"attribute vec4 positionHighAndScale;\nattribute vec4 positionLowAndRotation;\nattribute vec4 compressedAttribute0;\nattribute vec4 compressedAttribute1;\nattribute vec4 compressedAttribute2;\nattribute vec3 eyeOffset;\nattribute vec4 scaleByDistance;\nattribute vec4 pixelOffsetScaleByDistance;\nvarying vec2 v_textureCoordinates;\n#ifdef RENDER_FOR_PICK\nvarying vec4 v_pickColor;\n#else\nvarying vec4 v_color;\n#endif\nconst float UPPER_BOUND = 32768.0;\nconst float SHIFT_LEFT16 = 65536.0;\nconst float SHIFT_LEFT8 = 256.0;\nconst float SHIFT_LEFT7 = 128.0;\nconst float SHIFT_LEFT5 = 32.0;\nconst float SHIFT_LEFT3 = 8.0;\nconst float SHIFT_LEFT2 = 4.0;\nconst float SHIFT_LEFT1 = 2.0;\nconst float SHIFT_RIGHT8 = 1.0 / 256.0;\nconst float SHIFT_RIGHT7 = 1.0 / 128.0;\nconst float SHIFT_RIGHT5 = 1.0 / 32.0;\nconst float SHIFT_RIGHT3 = 1.0 / 8.0;\nconst float SHIFT_RIGHT2 = 1.0 / 4.0;\nconst float SHIFT_RIGHT1 = 1.0 / 2.0;\nvec4 computePositionWindowCoordinates(vec4 positionEC, vec2 imageSize, float scale, vec2 direction, vec2 origin, vec2 translate, vec2 pixelOffset, vec3 alignedAxis, float rotation)\n{\nvec4 positionWC = czm_eyeToWindowCoordinates(positionEC);\nvec2 halfSize = imageSize * scale * czm_resolutionScale;\nhalfSize *= ((direction * 2.0) - 1.0);\npositionWC.xy += (origin * abs(halfSize));\n#if defined(ROTATION) || defined(ALIGNED_AXIS)\nif (!all(equal(alignedAxis, vec3(0.0))) || rotation != 0.0)\n{\nfloat angle = rotation;\nif (!all(equal(alignedAxis, vec3(0.0))))\n{\nvec3 pos = positionEC.xyz + czm_encodedCameraPositionMCHigh + czm_encodedCameraPositionMCLow;\nvec3 normal = normalize(cross(alignedAxis, pos));\nvec4 tangent = vec4(normalize(cross(pos, normal)), 0.0);\ntangent = czm_modelViewProjection * tangent;\nangle += sign(-tangent.x) * acos(tangent.y / length(tangent.xy));\n}\nfloat cosTheta = cos(angle);\nfloat sinTheta = sin(angle);\nmat2 rotationMatrix = mat2(cosTheta, sinTheta, -sinTheta, cosTheta);\nhalfSize = rotationMatrix * halfSize;\n}\n#endif\npositionWC.xy += halfSize;\npositionWC.xy += translate;\npositionWC.xy += (pixelOffset * czm_resolutionScale);\nreturn positionWC;\n}\nvoid main()\n{\nvec3 positionHigh = positionHighAndScale.xyz;\nvec3 positionLow = positionLowAndRotation.xyz;\nfloat scale = positionHighAndScale.w;\n#if defined(ROTATION) || defined(ALIGNED_AXIS)\nfloat rotation = positionLowAndRotation.w;\n#else\nfloat rotation = 0.0;\n#endif\nfloat compressed = compressedAttribute0.x;\nvec2 pixelOffset;\npixelOffset.x = floor(compressed * SHIFT_RIGHT7);\ncompressed -= pixelOffset.x * SHIFT_LEFT7;\npixelOffset.x -= UPPER_BOUND;\nvec2 origin;\norigin.x = floor(compressed * SHIFT_RIGHT5);\ncompressed -= origin.x * SHIFT_LEFT5;\norigin.y = floor(compressed * SHIFT_RIGHT3);\ncompressed -= origin.y * SHIFT_LEFT3;\norigin -= vec2(1.0);\nfloat show = floor(compressed * SHIFT_RIGHT2);\ncompressed -= show * SHIFT_LEFT2;\nvec2 direction;\ndirection.x = floor(compressed * SHIFT_RIGHT1);\ndirection.y = compressed - direction.x * SHIFT_LEFT1;\nfloat temp = compressedAttribute0.y * SHIFT_RIGHT8;\npixelOffset.y = -(floor(temp) - UPPER_BOUND);\nvec2 translate;\ntranslate.y = (temp - floor(temp)) * SHIFT_LEFT16;\ntemp = compressedAttribute0.z * SHIFT_RIGHT8;\ntranslate.x = floor(temp) - UPPER_BOUND;\ntranslate.y += (temp - floor(temp)) * SHIFT_LEFT8;\ntranslate.y -= UPPER_BOUND;\nvec2 textureCoordinates = czm_decompressTextureCoordinates(compressedAttribute0.w);\ntemp = compressedAttribute1.x * SHIFT_RIGHT8;\nvec2 imageSize = vec2(floor(temp), compressedAttribute2.w);\n#ifdef EYE_DISTANCE_TRANSLUCENCY\nvec4 translucencyByDistance;\ntranslucencyByDistance.x = compressedAttribute1.z;\ntranslucencyByDistance.z = compressedAttribute1.w;\ntranslucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;\ntemp = compressedAttribute1.y * SHIFT_RIGHT8;\ntranslucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;\n#endif\n#ifdef ALIGNED_AXIS\nvec3 alignedAxis = czm_octDecode(floor(compressedAttribute1.y * SHIFT_RIGHT8));\n#else\nvec3 alignedAxis = vec3(0.0);\n#endif\n#ifdef RENDER_FOR_PICK\ntemp = compressedAttribute2.y;\n#else\ntemp = compressedAttribute2.x;\n#endif\nvec4 color;\ntemp = temp * SHIFT_RIGHT8;\ncolor.b = (temp - floor(temp)) * SHIFT_LEFT8;\ntemp = floor(temp) * SHIFT_RIGHT8;\ncolor.g = (temp - floor(temp)) * SHIFT_LEFT8;\ncolor.r = floor(temp);\ntemp = compressedAttribute2.z * SHIFT_RIGHT8;\n#ifdef RENDER_FOR_PICK\ncolor.a = (temp - floor(temp)) * SHIFT_LEFT8;\nvec4 pickColor = color / 255.0;\n#else\ncolor.a = floor(temp);\ncolor /= 255.0;\n#endif\nvec4 p = czm_translateRelativeToEye(positionHigh, positionLow);\nvec4 positionEC = czm_modelViewRelativeToEye * p;\npositionEC = czm_eyeOffset(positionEC, eyeOffset);\npositionEC.xyz *= show;\n#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(EYE_DISTANCE_PIXEL_OFFSET)\nfloat lengthSq;\nif (czm_sceneMode == czm_sceneMode2D)\n{\nlengthSq = czm_eyeHeight2D.y;\n}\nelse\n{\nlengthSq = dot(positionEC.xyz, positionEC.xyz);\n}\n#endif\n#ifdef EYE_DISTANCE_SCALING\nscale *= czm_nearFarScalar(scaleByDistance, lengthSq);\nif (scale == 0.0)\n{\npositionEC.xyz = vec3(0.0);\n}\n#endif\nfloat translucency = 1.0;\n#ifdef EYE_DISTANCE_TRANSLUCENCY\ntranslucency = czm_nearFarScalar(translucencyByDistance, lengthSq);\nif (translucency == 0.0)\n{\npositionEC.xyz = vec3(0.0);\n}\n#endif\n#ifdef EYE_DISTANCE_PIXEL_OFFSET\nfloat pixelOffsetScale = czm_nearFarScalar(pixelOffsetScaleByDistance, lengthSq);\npixelOffset *= pixelOffsetScale;\n#endif\n#ifdef CLAMPED_TO_GROUND\npositionEC.z *= 0.995;\norigin.y = 1.0;\n#endif\nvec4 positionWC = computePositionWindowCoordinates(positionEC, imageSize, scale, direction, origin, translate, pixelOffset, alignedAxis, rotation);\ngl_Position = czm_viewportOrthographic * vec4(positionWC.xy, -positionWC.z, 1.0);\nv_textureCoordinates = textureCoordinates;\n#ifdef RENDER_FOR_PICK\nv_pickColor = pickColor;\n#else\nv_color = color;\nv_color.a *= translucency;\n#endif\n}\n" +}),i("Scene/HeightReference",["../Core/freezeObject"],function(e){"use strict";var t={NONE:0,CLAMP_TO_GROUND:1,RELATIVE_TO_GROUND:2};return e(t)}),i("Scene/HorizontalOrigin",["../Core/freezeObject"],function(e){"use strict";var t={CENTER:0,LEFT:1,RIGHT:-1};return e(t)}),i("Scene/SceneMode",["../Core/freezeObject"],function(e){"use strict";var t={MORPHING:0,COLUMBUS_VIEW:1,SCENE2D:2,SCENE3D:3};return t.getMorphTime=function(e){return e===t.SCENE3D?1:e===t.MORPHING?void 0:0},e(t)}),i("Scene/SceneTransforms",["../Core/BoundingRectangle","../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/Cartographic","../Core/defined","../Core/DeveloperError","../Core/Math","../Core/Matrix4","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u){"use strict";var c={},h=new r(0,0,0,1),d=new r,p=new l;c.wgs84ToWindowCoordinates=function(e,t,i){var n=c.computeActualWgs84Position(e.frameState,t,h);if(!o(n))return void 0;var a=e.camera,s=l.multiply(a.frustum.projectionMatrix,a.viewMatrix,p);return l.multiplyByVector(s,r.fromElements(n.x,n.y,n.z,1,d),d),d.z<0&&e.mode!==u.SCENE2D?void 0:(i=c.clipToGLWindowCoordinates(e,d,i),i.y=e.canvas.clientHeight-i.y,i)},c.wgs84ToDrawingBufferCoordinates=function(e,t,i){var n=c.computeActualWgs84Position(e.frameState,t,h);if(!o(n))return void 0;var a=e.camera,s=l.multiply(a.frustum.projectionMatrix,a.viewMatrix,p);return l.multiplyByVector(s,r.fromElements(n.x,n.y,n.z,1,d),d),d.z<0&&e.mode!==u.SCENE2D?void 0:c.clipToDrawingBufferCoordinates(e,d,i)};var m=new i,f=new n;c.computeActualWgs84Position=function(e,t,r){var n=e.mode;if(n===u.SCENE3D)return i.clone(t,r);var a=e.mapProjection,l=a.ellipsoid.cartesianToCartographic(t,f);if(!o(l))return void 0;if(a.project(l,m),n===u.COLUMBUS_VIEW)return i.fromElements(m.z,m.x,m.y,r);if(n===u.SCENE2D)return i.fromElements(0,m.x,m.y,r);var c=e.morphTime;return i.fromElements(s.lerp(m.z,t.x,c),s.lerp(m.x,t.y,c),s.lerp(m.y,t.z,c),r)};var v=new i,g=new i,_=new e,y=new l;c.clipToGLWindowCoordinates=function(e,r,n){var o=e.canvas;return i.divideByScalar(r,r.w,v),_.width=o.clientWidth,_.height=o.clientHeight,l.computeViewportTransformation(_,0,1,y),l.multiplyByPoint(y,v,g),t.fromCartesian3(g,n)},c.clipToDrawingBufferCoordinates=function(e,r,n){return i.divideByScalar(r,r.w,v),_.width=e.drawingBufferWidth,_.height=e.drawingBufferHeight,l.computeViewportTransformation(_,0,1,y),l.multiplyByPoint(y,v,g),t.fromCartesian3(g,n)},c.transformWindowToDrawingBuffer=function(e,i,r){var n=e.canvas,o=e.drawingBufferWidth/n.clientWidth,a=e.drawingBufferHeight/n.clientHeight;return t.fromElements(i.x*o,i.y*a,r)};var C=new r,w=new r;return c.drawingBufferToWgs84Coordinates=function(e,t,n,o){var a=e.context,s=a.uniformState,u=s.viewport;s.viewportTransformation;var c=r.clone(r.UNIT_W,C);c.x=2*((t.x-u.x)/u.width)-1,c.y=2*((t.y-u.y)/u.height)-1,c.z=2*n-1,c.w=1;var h=l.multiplyByVector(s.inverseViewProjection,c,w),d=1/h.w;return i.multiplyByScalar(h,d,h),i.fromCartesian4(h,o)},c}),i("Scene/VerticalOrigin",["../Core/freezeObject"],function(e){"use strict";var t={CENTER:0,BOTTOM:1,TOP:-1};return e(t)}),i("Scene/Billboard",["../Core/BoundingRectangle","../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/Cartographic","../Core/Color","../Core/createGuid","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Matrix4","../Core/NearFarScalar","./HeightReference","./HorizontalOrigin","./SceneMode","./SceneTransforms","./VerticalOrigin"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g){"use strict";function _(e,t){var i=e._billboardCollection;l(i)&&(i._updateBillboard(e,t),e._dirty=!0)}var y=function(e,r){e=s(e,s.EMPTY_OBJECT),this._show=s(e.show,!0),this._position=i.clone(s(e.position,i.ZERO)),this._actualPosition=i.clone(this._position),this._pixelOffset=t.clone(s(e.pixelOffset,t.ZERO)),this._translate=new t(0,0),this._eyeOffset=i.clone(s(e.eyeOffset,i.ZERO)),this._verticalOrigin=s(e.verticalOrigin,g.CENTER),this._horizontalOrigin=s(e.horizontalOrigin,m.CENTER),this._scale=s(e.scale,1),this._color=o.clone(s(e.color,o.WHITE)),this._rotation=s(e.rotation,0),this._alignedAxis=i.clone(s(e.alignedAxis,i.ZERO)),this._width=e.width,this._height=e.height,this._scaleByDistance=e.scaleByDistance,this._translucencyByDistance=e.translucencyByDistance,this._pixelOffsetScaleByDistance=e.pixelOffsetScaleByDistance,this._heightReference=s(e.heightReference,p.NONE),this._id=e.id,this._collection=s(e.collection,r),this._pickId=void 0,this._pickPrimitive=s(e._pickPrimitive,this),this._billboardCollection=r,this._dirty=!1,this._index=-1,this._imageIndex=-1,this._imageIndexPromise=void 0,this._imageId=void 0,this._image=void 0,this._imageSubRegion=void 0,this._imageWidth=void 0,this._imageHeight=void 0;var n=e.image,u=e.imageId;l(n)&&(l(u)||(u="string"==typeof n?n:l(n.src)?n.src:a()),this._imageId=u,this._image=n),l(e.imageSubRegion)&&(this._imageId=u,this._imageSubRegion=e.imageSubRegion),l(this._billboardCollection._textureAtlas)&&this._loadImage(),this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=f.SCENE3D,this._updateClamping()},C=y.SHOW_INDEX=0,w=y.POSITION_INDEX=1,S=y.PIXEL_OFFSET_INDEX=2,E=y.EYE_OFFSET_INDEX=3,b=y.HORIZONTAL_ORIGIN_INDEX=4,x=y.VERTICAL_ORIGIN_INDEX=5,T=y.SCALE_INDEX=6,P=y.IMAGE_INDEX_INDEX=7,A=y.COLOR_INDEX=8,D=y.ROTATION_INDEX=9,M=y.ALIGNED_AXIS_INDEX=10,I=y.SCALE_BY_DISTANCE_INDEX=11,O=y.TRANSLUCENCY_BY_DISTANCE_INDEX=12,R=y.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX=13;y.NUMBER_OF_PROPERTIES=14,u(y.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,_(this,C))}},position:{get:function(){return this._position},set:function(e){var t=this._position;i.equals(t,e)||(i.clone(e,t),i.clone(e,this._actualPosition),this._updateClamping(),_(this,w))}},heightReference:{get:function(){return this._heightReference},set:function(e){var t=this._heightReference;e!==t&&(this._heightReference=e,this._updateClamping(),_(this,w))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){var i=this._pixelOffset;t.equals(i,e)||(t.clone(e,i),_(this,S))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){var t=this._scaleByDistance;d.equals(t,e)||(this._scaleByDistance=d.clone(e,t),_(this,I))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){var t=this._translucencyByDistance;d.equals(t,e)||(this._translucencyByDistance=d.clone(e,t),_(this,O))}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){var t=this._pixelOffsetScaleByDistance;d.equals(t,e)||(this._pixelOffsetScaleByDistance=d.clone(e,t),_(this,R))}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){var t=this._eyeOffset;i.equals(t,e)||(i.clone(e,t),_(this,E))}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,_(this,b))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin!==e&&(this._verticalOrigin=e,_(this,x))}},scale:{get:function(){return this._scale},set:function(e){this._scale!==e&&(this._scale=e,_(this,T))}},color:{get:function(){return this._color},set:function(e){var t=this._color;o.equals(t,e)||(o.clone(e,t),_(this,A))}},rotation:{get:function(){return this._rotation},set:function(e){this._rotation!==e&&(this._rotation=e,_(this,D))}},alignedAxis:{get:function(){return this._alignedAxis},set:function(e){var t=this._alignedAxis;i.equals(t,e)||(i.clone(e,t),_(this,M))}},width:{get:function(){return s(this._width,this._imageWidth)},set:function(e){this._width!==e&&(this._width=e,_(this,P))}},height:{get:function(){return s(this._height,this._imageHeight)},set:function(e){this._height!==e&&(this._height=e,_(this,P))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickPrimitive:{get:function(){return this._pickPrimitive},set:function(e){this._pickPrimitive=e,l(this._pickId)&&(this._pickId.object.primitive=e)}},image:{get:function(){return this._imageId},set:function(e){l(e)?"string"==typeof e?this.setImage(e,e):l(e.src)?this.setImage(e.src,e):this.setImage(a(),e):(this._imageIndex=-1,this._imageSubRegion=void 0,this._imageId=void 0,this._image=void 0,this._imageIndexPromise=void 0,_(this,P))}},ready:{get:function(){return-1!==this._imageIndex}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=i.clone(e,this._actualClampedPosition),_(this,w)}}}),y.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this._pickPrimitive,collection:this._collection,id:this._id})),this._pickId},y.prototype._updateClamping=function(){y._updateClamping(this._billboardCollection,this)};var L=new n,N=new i;y._updateClamping=function(e,t){var r=e._scene;if(l(r)){var o=r.globe,a=o.ellipsoid,s=o._surface,u=r.frameState.mode,h=r.frameState.mapProjection,d=u!==t._mode;if(t._mode=u,(t._heightReference===p.NONE||d)&&l(t._removeCallbackFunc)&&(t._removeCallbackFunc(),t._removeCallbackFunc=void 0,t._clampedPosition=void 0),t._heightReference!==p.NONE&&l(t._position)){var m=a.cartesianToCartographic(t._position);if(l(m)){l(t._removeCallbackFunc)&&t._removeCallbackFunc();var v=function(e){if(t._heightReference===p.RELATIVE_TO_GROUND)if(t._mode===f.SCENE3D){var r=a.cartesianToCartographic(e,L);r.height+=m.height,a.cartographicToCartesian(r,e)}else e.x+=m.height;t._clampedPosition=i.clone(e,t._clampedPosition)};t._removeCallbackFunc=s.updateHeight(m,v);var g=o.getHeight(m);l(g)&&(n.clone(m,L),L.height=g,t._mode===f.SCENE3D?a.cartographicToCartesian(L,N):(h.project(L,N),i.fromElements(N.z,N.x,N.y,N)),v(N))}}}else if(t._heightReference!==p.NONE)throw new c("Height reference is not supported.")},y.prototype._loadImage=function(){var t,i=this._billboardCollection._textureAtlas,r=this._imageId,n=this._image,o=this._imageSubRegion;if(l(n)&&(t=i.addImage(r,n)),l(o)&&(t=i.addSubRegion(r,o)),this._imageIndexPromise=t,l(t)){var a=this;t.then(function(t){if(a._imageId===r&&a._image===n&&e.equals(a._imageSubRegion,o)){var s=i.textureCoordinates[t];a._imageWidth=i.texture.width*s.width,a._imageHeight=i.texture.height*s.height,a._imageIndex=t,a._ready=!0,a._image=void 0,a._imageIndexPromise=void 0,_(a,P)}}).otherwise(function(e){console.error("Error loading image for billboard: "+e),a._imageIndexPromise=void 0})}},y.prototype.setImage=function(e,t){this._imageId!==e&&(this._imageIndex=-1,this._imageSubRegion=void 0,this._imageId=e,this._image=t,l(this._billboardCollection._textureAtlas)&&this._loadImage())},y.prototype.setImageSubRegion=function(t,i){this._imageId===t&&e.equals(this._imageSubRegion,i)||(this._imageIndex=-1,this._imageId=t,this._imageSubRegion=e.clone(i),l(this._billboardCollection._textureAtlas)&&this._loadImage())},y.prototype._setTranslate=function(e){var i=this._translate;t.equals(i,e)||(t.clone(e,i),_(this,S))},y.prototype._getActualPosition=function(){return l(this._clampedPosition)?this._clampedPosition:this._actualPosition},y.prototype._setActualPosition=function(e){l(this._clampedPosition)||i.clone(e,this._actualPosition),_(this,w)};var F=new r;y._computeActualPosition=function(e,t,i,r){return l(e._clampedPosition)?(i.mode!==e._mode&&e._updateClamping(),e._clampedPosition):i.mode===f.SCENE3D?t:(h.multiplyByPoint(r,t,F),v.computeActualWgs84Position(i,F))};var B=new h,z=new r,k=new i,V=new t,U=new t;y._computeScreenSpacePosition=function(e,n,o,a,s,l){var u=s.camera,c=u.viewMatrix,d=u.frustum.projectionMatrix,p=h.multiplyTransformation(c,e,B),m=h.multiplyByVector(p,r.fromElements(n.x,n.y,n.z,1,z),z),f=i.multiplyComponents(o,i.normalize(m,k),k);m.x+=o.x+f.x,m.y+=o.y+f.y,m.z+=f.z;var g=h.multiplyByVector(d,m,z),_=v.clipToGLWindowCoordinates(s,g,l);a=t.clone(a,U),a.y=-a.y;var y=t.multiplyByScalar(a,s.context.uniformState.resolutionScale,V);return _.x+=y.x,_.y+=y.y,_};var W=new t(0,0);return y.prototype.computeScreenSpacePosition=function(e,i){var r=this._billboardCollection;l(i)||(i=new t),t.clone(this._pixelOffset,W),t.add(W,this._translate,W);var n=r.modelMatrix,o=this._getActualPosition(),a=y._computeScreenSpacePosition(n,o,this._eyeOffset,W,e,i);return a.y=e.canvas.clientHeight-a.y,a},y.prototype.equals=function(r){return this===r||l(r)&&this._id===r._id&&i.equals(this._position,r._position)&&this._imageId===r._imageId&&this._show===r._show&&this._scale===r._scale&&this._verticalOrigin===r._verticalOrigin&&this._horizontalOrigin===r._horizontalOrigin&&e.equals(this._imageSubRegion,r._imageSubRegion)&&o.equals(this._color,r._color)&&t.equals(this._pixelOffset,r._pixelOffset)&&t.equals(this._translate,r._translate)&&i.equals(this._eyeOffset,r._eyeOffset)&&d.equals(this._scaleByDistance,r._scaleByDistance)&&d.equals(this._translucencyByDistance,r._translucencyByDistance)&&d.equals(this._pixelOffsetScaleByDistance,r._pixelOffsetScaleByDistance)},y.prototype._destroy=function(){l(this._customData)&&(this._billboardCollection._scene.globe._surface.removeTileCustomData(this._customData),this._customData=void 0),this.image=void 0,this._pickId=this._pickId&&this._pickId.destroy(),this._billboardCollection=void 0},y}),i("Scene/BlendEquation",["../Core/freezeObject"],function(e){"use strict";var t={ADD:32774,SUBTRACT:32778,REVERSE_SUBTRACT:32779};return e(t)}),i("Scene/BlendFunction",["../Core/freezeObject"],function(e){"use strict";var t={ZERO:0,ONE:1,SOURCE_COLOR:768,ONE_MINUS_SOURCE_COLOR:769,DESTINATION_COLOR:774,ONE_MINUS_DESTINATION_COLOR:775,SOURCE_ALPHA:770,ONE_MINUS_SOURCE_ALPHA:771,DESTINATION_ALPHA:772,ONE_MINUS_DESTINATION_ALPHA:773,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,SOURCE_ALPHA_SATURATE:776};return e(t)}),i("Scene/BlendingState",["../Core/freezeObject","./BlendEquation","./BlendFunction"],function(e,t,i){"use strict";var r={DISABLED:e({enabled:!1}),ALPHA_BLEND:e({enabled:!0,equationRgb:t.ADD,equationAlpha:t.ADD,functionSourceRgb:i.SOURCE_ALPHA,functionSourceAlpha:i.SOURCE_ALPHA,functionDestinationRgb:i.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:i.ONE_MINUS_SOURCE_ALPHA}),PRE_MULTIPLIED_ALPHA_BLEND:e({enabled:!0,equationRgb:t.ADD,equationAlpha:t.ADD,functionSourceRgb:i.ONE,functionSourceAlpha:i.ONE,functionDestinationRgb:i.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:i.ONE_MINUS_SOURCE_ALPHA}),ADDITIVE_BLEND:e({enabled:!0,equationRgb:t.ADD,equationAlpha:t.ADD,functionSourceRgb:i.SOURCE_ALPHA,functionSourceAlpha:i.SOURCE_ALPHA,functionDestinationRgb:i.ONE,functionDestinationAlpha:i.ONE})};return e(r)}),i("Scene/Pass",["../Core/freezeObject"],function(e){"use strict";var t={GLOBE:0,OPAQUE:1,TRANSLUCENT:2,OVERLAY:3,NUMBER_OF_PASSES:4};return e(t)}),i("Scene/TextureAtlas",["../Core/BoundingRectangle","../Core/Cartesian2","../Core/createGuid","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/loadImage","../Core/PixelFormat","../Core/RuntimeError","../ThirdParty/when"],function(e,t,i,r,n,o,a,s,l,u,c,h){"use strict";function d(e,i,n,o,a){this.bottomLeft=r(e,t.ZERO),this.topRight=r(i,t.ZERO),this.childNode1=n,this.childNode2=o,this.imageIndex=a}function p(e,i){var r=e.numberOfImages,o=2;if(r>0){var a=e._texture.width,s=e._texture.height,l=o*(a+i.width+e._borderWidthInPixels),u=o*(s+i.height+e._borderWidthInPixels),c=a/l,h=s/u,p=new d(new t(a+e._borderWidthInPixels,0),new t(l,s)),m=new d(new t,new t(l,s),e._root,p),f=new d(new t(0,s+e._borderWidthInPixels),new t(l,u)),v=new d(new t,new t(l,u),m,f);e._root=v;for(var g=0;gs||0>l)return void 0;if(0===s&&0===l)return i;if(s>l){i.childNode1=new d(new t(i.bottomLeft.x,i.bottomLeft.y),new t(i.bottomLeft.x+r.width,i.topRight.y));var u=i.bottomLeft.x+r.width+e._borderWidthInPixels;ui;++i)e[i]&&e[i]._destroy()}function A(e){if(e._billboardsRemoved){e._billboardsRemoved=!1;for(var t=[],i=e._billboards,r=i.length,n=0,o=0;r>n;++n){var a=i[n];a&&(a._index=o++,t.push(a))}e._billboards=t}}function D(e){var t=16384,i=e.cache.billboardCollection_indexBuffer;if(s(i))return i;for(var r=6*t,n=new Uint16Array(r),o=0,a=0;r>o;o+=6,a+=4)n[o]=a,n[o+1]=a+1,n[o+2]=a+2,n[o+3]=a+0,n[o+4]=a+2,n[o+5]=a+3;return i=e.createIndexBuffer(n,f.STATIC_DRAW,d.UNSIGNED_SHORT),i.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBuffer=i,i}function M(e,t,i){return new _(e,[{index:rt.positionHighAndScale,componentsPerAttribute:4,componentDatatype:o.FLOAT,usage:i[G]},{index:rt.positionLowAndRotation,componentsPerAttribute:4,componentDatatype:o.FLOAT,usage:i[G]},{index:rt.compressedAttribute0,componentsPerAttribute:4,componentDatatype:o.FLOAT,usage:i[H]},{index:rt.compressedAttribute1,componentsPerAttribute:4,componentDatatype:o.FLOAT,usage:i[et]},{index:rt.compressedAttribute2,componentsPerAttribute:4,componentDatatype:o.FLOAT,usage:i[J]},{index:rt.eyeOffset,componentsPerAttribute:3,componentDatatype:o.FLOAT,usage:i[q]},{index:rt.scaleByDistance,componentsPerAttribute:4,componentDatatype:o.FLOAT,usage:i[$]},{index:rt.pixelOffsetScaleByDistance,componentsPerAttribute:4,componentDatatype:o.FLOAT,usage:i[tt]}],4*t)}function I(e,i,r,n,o){var a=4*o._index,s=o._getActualPosition();e._mode===x.SCENE3D&&(t.expand(e._baseVolume,s,e._baseVolume),e._boundingVolumeDirty=!0),h.fromCartesian(s,ot);var l=o.scale,u=o.rotation;0!==u&&(e._shaderRotation=!0),e._maxScale=Math.max(e._maxScale,l);var c=n[rt.positionHighAndScale],d=ot.high;c(a+0,d.x,d.y,d.z,l),c(a+1,d.x,d.y,d.z,l),c(a+2,d.x,d.y,d.z,l),c(a+3,d.x,d.y,d.z,l);var p=n[rt.positionLowAndRotation],m=ot.low;p(a+0,m.x,m.y,m.z,u),p(a+1,m.x,m.y,m.z,u),p(a+2,m.x,m.y,m.z,u),p(a+3,m.x,m.y,m.z,u)}function O(t,i,r,n,o){var a=4*o._index,s=o.pixelOffset,l=s.x,u=s.y,c=o._translate,h=c.x,d=c.y;t._maxPixelOffset=Math.max(t._maxPixelOffset,Math.abs(l+h),Math.abs(-u+d));var m=o.horizontalOrigin,f=o.verticalOrigin,v=o.show;0===o.color.alpha&&(v=!1),t._allHorizontalCenter=t._allHorizontalCenter&&m===E.CENTER;var g=0,_=0,y=0,C=0,w=o._imageIndex;if(-1!==w){var S=r[w];g=S.x,_=S.y,y=S.width,C=S.height}var b=g+y,x=_+C,T=Math.floor(p.clamp(l,-st,st)+st)*ct;T+=(m+1)*ht,T+=(f+1)*dt,T+=(v?1:0)*pt;var P=Math.floor(p.clamp(u,-st,st)+st)*ut,A=Math.floor(p.clamp(h,-st,st)+st)*ut,D=(p.clamp(d,-st,st)+st)*mt,M=Math.floor(D),I=Math.floor((D-M)*ut);P+=M,A+=I,at.x=g,at.y=_;var O=e.compressTextureCoordinates(at);at.x=b;var R=e.compressTextureCoordinates(at);at.y=x;var L=e.compressTextureCoordinates(at);at.x=g;var N=e.compressTextureCoordinates(at),F=n[rt.compressedAttribute0];F(a+0,T+ft,P,A,O),F(a+1,T+vt,P,A,R),F(a+2,T+gt,P,A,L),F(a+3,T+_t,P,A,N)}function R(t,i,n,o,l){var u=4*l._index,c=l.alignedAxis;r.equals(c,r.ZERO)||(t._shaderAlignedAxis=!0);var h=0,d=1,m=1,f=1,v=l.translucencyByDistance;s(v)&&(h=v.near,d=v.nearValue,m=v.far,f=v.farValue,(1!==d||1!==f)&&(t._shaderTranslucencyByDistance=!0));var g=0,_=l._imageIndex;if(-1!==_){var y=n[_];g=y.width}var C=t._textureAtlas.texture.width,w=Math.ceil(.5*a(l.width,C*g));t._maxSize=Math.max(t._maxSize,w);var S=p.clamp(w,0,lt),E=0;Math.abs(r.magnitudeSquared(c)-1)c;++c){var h=i[c],d=h.position,p=w._computeActualPosition(h,d,n,o);s(p)&&(h._setActualPosition(p),a?u.push(p):t.expand(l,p,l))}a&&t.fromPoints(u,l)}function V(e,t){var i=t.mode,r=e._billboards,n=e._billboardsToUpdate,o=e._modelMatrix;e._createVertexArray||e._mode!==i||i!==x.SCENE3D&&!m.equals(o,e.modelMatrix)?(e._mode=i,m.clone(e.modelMatrix,o),e._createVertexArray=!0,(i===x.SCENE3D||i===x.SCENE2D||i===x.COLUMBUS_VIEW)&&k(e,r,r.length,t,o,!0)):i===x.MORPHING?k(e,r,r.length,t,o,!0):(i===x.SCENE2D||i===x.COLUMBUS_VIEW)&&k(e,n,e._billboardsToUpdateIndex,t,o,!1)}function U(e,t,i,n){var o=i.camera,a=o.frustum,s=r.subtract(o.positionWC,n.center,Ct),l=r.multiplyByScalar(o.directionWC,r.dot(s,o.directionWC),wt),u=Math.max(0,r.magnitude(l)-n.radius);yt.x=t.drawingBufferWidth,yt.y=t.drawingBufferHeight;var c=a.getPixelSize(yt,u),h=Math.max(c.x,c.y),d=2*h*e._maxScale*e._maxSize;e._allHorizontalCenter&&(d*=.5);var p=h*e._maxPixelOffset+e._maxEyeOffset;n.radius+=d+p}var W=w.SHOW_INDEX,G=w.POSITION_INDEX,H=w.PIXEL_OFFSET_INDEX,q=w.EYE_OFFSET_INDEX,j=w.HORIZONTAL_ORIGIN_INDEX,Y=w.VERTICAL_ORIGIN_INDEX,X=w.SCALE_INDEX,Z=w.IMAGE_INDEX_INDEX,J=w.COLOR_INDEX,Q=w.ROTATION_INDEX,K=w.ALIGNED_AXIS_INDEX,$=w.SCALE_BY_DISTANCE_INDEX,et=w.TRANSLUCENCY_BY_DISTANCE_INDEX,tt=w.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX,it=w.NUMBER_OF_PROPERTIES,rt={positionHighAndScale:0,positionLowAndRotation:1,compressedAttribute0:2,compressedAttribute1:3,compressedAttribute2:4,eyeOffset:5,scaleByDistance:6,pixelOffsetScaleByDistance:7},nt=function(e){e=a(e,a.EMPTY_OBJECT),this._scene=e.scene,this._textureAtlas=void 0,this._textureAtlasGUID=void 0,this._destroyTextureAtlas=!0,this._sp=void 0,this._rs=void 0,this._vaf=void 0,this._spPick=void 0,this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!1,this._shaderRotation=!1,this._compiledShaderRotation=!1,this._compiledShaderRotationPick=!1,this._shaderAlignedAxis=!1,this._compiledShaderAlignedAxis=!1,this._compiledShaderAlignedAxisPick=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._compiledShaderScaleByDistancePick=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistancePick=!1,this._shaderPixelOffsetScaleByDistance=!1,this._compiledShaderPixelOffsetScaleByDistance=!1,this._compiledShaderPixelOffsetScaleByDistancePick=!1,this._propertiesChanged=new Uint32Array(it),this._maxSize=0,this._maxEyeOffset=0,this._maxScale=1,this._maxPixelOffset=0,this._allHorizontalCenter=!0,this._baseVolume=new t,this._baseVolumeWC=new t,this._baseVolume2D=new t,this._boundingVolume=new t,this._boundingVolumeDirty=!1,this._colorCommands=[],this._pickCommands=[],this.modelMatrix=m.clone(a(e.modelMatrix,m.IDENTITY)),this._modelMatrix=m.clone(m.IDENTITY),this.debugShowBoundingVolume=a(e.debugShowBoundingVolume,!1),this._mode=x.SCENE3D,this._buffersUsage=[f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW,f.STATIC_DRAW];var i=this;this._uniforms={u_atlas:function(){return i._textureAtlas.texture}}};l(nt.prototype,{length:{get:function(){return A(this),this._billboards.length}},textureAtlas:{get:function(){return this._textureAtlas},set:function(e){this._textureAtlas!==e&&(this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._textureAtlas=e,this._createVertexArray=!0)}},destroyTextureAtlas:{get:function(){return this._destroyTextureAtlas},set:function(e){this._destroyTextureAtlas=e}}}),nt.prototype.add=function(e){var t=new w(e,this);return t._index=this._billboards.length,this._billboards.push(t),this._createVertexArray=!0,t},nt.prototype.remove=function(e){return this.contains(e)?(this._billboards[e._index]=null,this._billboardsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1},nt.prototype.removeAll=function(){P(this._billboards),this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!0},nt.prototype._updateBillboard=function(e,t){e._dirty||(this._billboardsToUpdate[this._billboardsToUpdateIndex++]=e),++this._propertiesChanged[t]},nt.prototype.contains=function(e){return s(e)&&e._billboardCollection===this},nt.prototype.get=function(e){return A(this),this._billboards[e]},nt.prototype.computeNewBuffersUsage=function(){for(var e=this._buffersUsage,t=!1,i=this._propertiesChanged,r=0;it>r;++r){var n=0===i[r]?f.STATIC_DRAW:f.STREAM_DRAW;t=t||e[r]!==n,e[r]=n}return t};var ot=new h,at=new i,st=32768,lt=65536,ut=256,ct=128,ht=32,dt=8,pt=4,mt=1/256,ft=0,vt=2,gt=3,_t=1,yt=new i,Ct=new r,wt=new r,St=[];return nt.prototype.update=function(e,i,r){A(this);var n=this._billboards,o=n.length,a=this._textureAtlas;if(!s(a)){a=this._textureAtlas=new T({context:e});for(var l=0;o>l;++l)n[l]._loadImage()}var u=a.textureCoordinates;if(0!==u.length){V(this,i),n=this._billboards,o=n.length;var c=this._billboardsToUpdate,h=this._billboardsToUpdateIndex,d=this._propertiesChanged,p=a.guid,f=this._createVertexArray||this._textureAtlasGUID!==p;this._textureAtlasGUID=p;var _,w=i.passes,E=w.pick;if(f||!E&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(var P=0;it>P;++P)d[P]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),o>0){this._vaf=M(e,o,this._buffersUsage),_=this._vaf.writers;for(var k=0;o>k;++k){var nt=this._billboards[k];nt._dirty=!1,z(this,e,u,_,nt)}this._vaf.commit(D(e))}this._billboardsToUpdateIndex=0}else if(h>0){var ot=St;ot.length=0,(d[G]||d[Q]||d[X])&&ot.push(I),(d[Z]||d[H]||d[j]||d[Y]||d[W])&&ot.push(O),(d[Z]||d[K]||d[et])&&ot.push(R),(d[Z]||d[J])&&ot.push(L),d[q]&&ot.push(N),d[$]&&ot.push(F),d[tt]&&ot.push(B);var at=ot.length;if(_=this._vaf.writers,h/o>.1){for(var st=0;h>st;++st){var lt=c[st];lt._dirty=!1;for(var ut=0;at>ut;++ut)ot[ut](this,e,u,_,lt)}this._vaf.commit(D(e))}else{for(var ct=0;h>ct;++ct){var ht=c[ct];ht._dirty=!1;for(var dt=0;at>dt;++dt)ot[dt](this,e,u,_,ht);this._vaf.subCommit(4*ht._index,4)}this._vaf.endSubCommits()}this._billboardsToUpdateIndex=0}if(h>1.5*o&&(c.length=o),s(this._vaf)&&s(this._vaf.va)){this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,t.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));var pt,mt=m.IDENTITY;i.mode===x.SCENE3D?(mt=this.modelMatrix,pt=t.clone(this._baseVolumeWC,this._boundingVolume)):pt=t.clone(this._baseVolume2D,this._boundingVolume),U(this,e,i,pt);var ft,vt,gt,_t,yt,Ct;if(w.render){var wt=this._colorCommands;for(s(this._rs)||(this._rs=e.createRenderState({depthTest:{enabled:!0},blending:S.ALPHA_BLEND})),(!s(this._sp)||this._shaderRotation&&!this._compiledShaderRotation||this._shaderAlignedAxis&&!this._compiledShaderAlignedAxis||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance||this._shaderPixelOffsetScaleByDistance&&!this._compiledShaderPixelOffsetScaleByDistance)&&(_t=new g({sources:[C]}),this._shaderRotation&&_t.defines.push("ROTATION"),this._shaderAlignedAxis&&_t.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&_t.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&_t.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&_t.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),s(this._scene)&&_t.defines.push("CLAMPED_TO_GROUND"),this._sp=e.replaceShaderProgram(this._sp,_t,y,rt),this._compiledShaderRotation=this._shaderRotation,this._compiledShaderAlignedAxis=this._shaderAlignedAxis,this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistance=this._shaderPixelOffsetScaleByDistance),ft=this._vaf.va,vt=ft.length,wt.length=vt,Ct=0;vt>Ct;++Ct)gt=wt[Ct],s(gt)||(gt=wt[Ct]=new v({pass:b.OPAQUE,owner:this})),gt.boundingVolume=pt,gt.modelMatrix=mt,gt.count=ft[Ct].indicesCount,gt.shaderProgram=this._sp,gt.uniformMap=this._uniforms,gt.vertexArray=ft[Ct].va,gt.renderState=this._rs,gt.debugShowBoundingVolume=this.debugShowBoundingVolume,r.push(gt) +}if(E){var Et=this._pickCommands;for((!s(this._spPick)||this._shaderRotation&&!this._compiledShaderRotationPick||this._shaderAlignedAxis&&!this._compiledShaderAlignedAxisPick||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistancePick||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistancePick||this._shaderPixelOffsetScaleByDistance&&!this._compiledShaderPixelOffsetScaleByDistancePick)&&(_t=new g({defines:["RENDER_FOR_PICK"],sources:[C]}),this._shaderRotation&&_t.defines.push("ROTATION"),this._shaderAlignedAxis&&_t.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&_t.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&_t.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&_t.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),s(this._scene)&&_t.defines.push("CLAMPED_TO_GROUND"),yt=new g({defines:["RENDER_FOR_PICK"],sources:[y]}),this._spPick=e.replaceShaderProgram(this._spPick,_t,yt,rt),this._compiledShaderRotationPick=this._shaderRotation,this._compiledShaderAlignedAxisPick=this._shaderAlignedAxis,this._compiledShaderScaleByDistancePick=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistancePick=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistancePick=this._shaderPixelOffsetScaleByDistance),ft=this._vaf.va,vt=ft.length,Et.length=vt,Ct=0;vt>Ct;++Ct)gt=Et[Ct],s(gt)||(gt=Et[Ct]=new v({pass:b.OPAQUE,owner:this})),gt.boundingVolume=pt,gt.modelMatrix=mt,gt.count=ft[Ct].indicesCount,gt.shaderProgram=this._spPick,gt.uniformMap=this._uniforms,gt.vertexArray=ft[Ct].va,gt.renderState=this._rs,r.push(gt)}}}},nt.prototype.isDestroyed=function(){return!1},nt.prototype.destroy=function(){return this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),P(this._billboards),u(this)},nt}),i("DataSources/BoundingSphereState",["../Core/freezeObject"],function(e){"use strict";var t={DONE:0,PENDING:1,FAILED:2};return e(t)}),i("DataSources/Property",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Iso8601"],function(e,t,i,r){"use strict";var n=function(){r.throwInstantiationError()};return i(n.prototype,{isConstant:{get:r.throwInstantiationError},definitionChanged:{get:r.throwInstantiationError}}),n.prototype.getValue=r.throwInstantiationError,n.prototype.equals=r.throwInstantiationError,n.equals=function(e,i){return e===i||t(e)&&e.equals(i)},n.arrayEquals=function(e,i){if(e===i)return!0;if(!t(e)||!t(i)||e.length!==i.length)return!1;for(var r=e.length,o=0;r>o;o++)if(!n.equals(e[o],i[o]))return!1;return!0},n.isConstant=function(e){return!t(e)||e.isConstant},n.getValueOrUndefined=function(e,i,r){return t(e)?e.getValue(i,r):void 0},n.getValueOrDefault=function(i,r,n,o){return t(i)?e(i.getValue(r,o),n):n},n.getValueOrClonedDefault=function(e,i,r,n){var o;return t(e)&&(o=e.getValue(i,n)),t(o)||(o=r.clone(o)),o},n}),i("DataSources/BillboardVisualizer",["../Core/AssociativeArray","../Core/BoundingRectangle","../Core/Cartesian2","../Core/Cartesian3","../Core/Color","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/NearFarScalar","../Scene/BillboardCollection","../Scene/HorizontalOrigin","../Scene/VerticalOrigin","./BoundingSphereState","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p){"use strict";function m(e,t){if(o(e)){var i=e.billboard;o(i)&&(e.textureValue=void 0,e.billboard=void 0,i.show=!1,i.image=void 0,t.push(i._index))}}var f=n.WHITE,v=r.ZERO,g=i.ZERO,_=1,y=0,C=r.ZERO,w=c.CENTER,S=h.CENTER,E=new r,b=new n,x=new r,T=new i,P=new l,A=new l,D=new l,M=new t,I=function(e){this.entity=e,this.billboard=void 0,this.textureValue=void 0},O=function(t,i){i.collectionChanged.addEventListener(O.prototype._onCollectionChanged,this),this._scene=t,this._unusedIndexes=[],this._billboardCollection=void 0,this._entityCollection=i,this._items=new e,this._onCollectionChanged(i,i.values,[],[])};return O.prototype.update=function(e){for(var t=this._items.values,i=this._unusedIndexes,r=0,n=t.length;n>r;r++){var a,s=t[r],l=s.entity,c=l._billboard,h=s.billboard,d=l.isShowing&&l.isAvailable(e)&&p.getValueOrDefault(c._show,e,!0);if(d&&(E=p.getValueOrUndefined(l._position,e,E),a=p.getValueOrUndefined(c._image,e),d=o(E)&&o(a)),d){if(!o(h)){var I=this._billboardCollection;o(I)||(I=new u,this._billboardCollection=I,this._scene.primitives.add(I));var O=i.length;h=O>0?I.get(i.pop()):I.add(),h.id=l,h.image=void 0,s.billboard=h}h.show=d,s.textureValue!==a&&(h.image=a,s.textureValue=a),h.position=E,h.color=p.getValueOrDefault(c._color,e,f,b),h.eyeOffset=p.getValueOrDefault(c._eyeOffset,e,v,x),h.pixelOffset=p.getValueOrDefault(c._pixelOffset,e,g,T),h.scale=p.getValueOrDefault(c._scale,e,_),h.rotation=p.getValueOrDefault(c._rotation,e,y),h.alignedAxis=p.getValueOrDefault(c._alignedAxis,e,C),h.horizontalOrigin=p.getValueOrDefault(c._horizontalOrigin,e,w),h.verticalOrigin=p.getValueOrDefault(c._verticalOrigin,e,S),h.width=p.getValueOrUndefined(c._width,e),h.height=p.getValueOrUndefined(c._height,e),h.scaleByDistance=p.getValueOrUndefined(c._scaleByDistance,e,P),h.translucencyByDistance=p.getValueOrUndefined(c._translucencyByDistance,e,A),h.pixelOffsetScaleByDistance=p.getValueOrUndefined(c._pixelOffsetScaleByDistance,e,D);var R=p.getValueOrUndefined(c._imageSubRegion,e,M);o(R)&&h.setImageSubRegion(h._imageId,R)}else m(s,i)}return!0},O.prototype.getBoundingSphere=function(e,t){var i=this._items.get(e.id);return o(i)&&o(i.billboard)?(t.center=r.clone(i.billboard.position,t.center),t.radius=0,d.DONE):d.FAILED},O.prototype.isDestroyed=function(){return!1},O.prototype.destroy=function(){return this._entityCollection.collectionChanged.removeEventListener(O.prototype._onCollectionChanged,this),o(this._billboardCollection)&&this._scene.primitives.remove(this._billboardCollection),a(this)},O.prototype._onCollectionChanged=function(e,t,i,r){var n,a,s=this._unusedIndexes,l=this._items;for(n=t.length-1;n>-1;n--)a=t[n],o(a._billboard)&&o(a._position)&&l.set(a.id,new I(a));for(n=r.length-1;n>-1;n--)a=r[n],o(a._billboard)&&o(a._position)?l.contains(a.id)||l.set(a.id,new I(a)):(m(l.get(a.id),s),l.remove(a.id));for(n=i.length-1;n>-1;n--)a=i[n],m(l.get(a.id),s),l.remove(a.id)},O}),i("Shaders/Appearances/AllMaterialAppearanceFS",[],function(){"use strict";return"varying vec3 v_positionEC;\nvarying vec3 v_normalEC;\nvarying vec3 v_tangentEC;\nvarying vec3 v_binormalEC;\nvarying vec2 v_st;\nvoid main()\n{\nvec3 positionToEyeEC = -v_positionEC;\nmat3 tangentToEyeMatrix = czm_tangentToEyeSpaceMatrix(v_normalEC, v_tangentEC, v_binormalEC);\nvec3 normalEC = normalize(v_normalEC);\n#ifdef FACE_FORWARD\nnormalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);\n#endif\nczm_materialInput materialInput;\nmaterialInput.normalEC = normalEC;\nmaterialInput.tangentToEyeMatrix = tangentToEyeMatrix;\nmaterialInput.positionToEyeEC = positionToEyeEC;\nmaterialInput.st = v_st;\nczm_material material = czm_getMaterial(materialInput);\n#ifdef FLAT\ngl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n#else\ngl_FragColor = czm_phong(normalize(positionToEyeEC), material);\n#endif\n}\n"}),i("Shaders/Appearances/AllMaterialAppearanceVS",[],function(){"use strict";return"attribute vec3 position3DHigh;\nattribute vec3 position3DLow;\nattribute vec3 normal;\nattribute vec3 tangent;\nattribute vec3 binormal;\nattribute vec2 st;\nvarying vec3 v_positionEC;\nvarying vec3 v_normalEC;\nvarying vec3 v_tangentEC;\nvarying vec3 v_binormalEC;\nvarying vec2 v_st;\nvoid main()\n{\nvec4 p = czm_computePosition();\nv_positionEC = (czm_modelViewRelativeToEye * p).xyz;\nv_normalEC = czm_normal * normal;\nv_tangentEC = czm_normal * tangent;\nv_binormalEC = czm_normal * binormal;\nv_st = st;\ngl_Position = czm_modelViewProjectionRelativeToEye * p;\n}\n"}),i("Shaders/Appearances/BasicMaterialAppearanceFS",[],function(){"use strict";return"varying vec3 v_positionEC;\nvarying vec3 v_normalEC;\nvoid main()\n{\nvec3 positionToEyeEC = -v_positionEC;\nvec3 normalEC = normalize(v_normalEC);\n#ifdef FACE_FORWARD\nnormalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);\n#endif\nczm_materialInput materialInput;\nmaterialInput.normalEC = normalEC;\nmaterialInput.positionToEyeEC = positionToEyeEC;\nczm_material material = czm_getMaterial(materialInput);\n#ifdef FLAT\ngl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n#else\ngl_FragColor = czm_phong(normalize(positionToEyeEC), material);\n#endif\n}\n"}),i("Shaders/Appearances/BasicMaterialAppearanceVS",[],function(){"use strict";return"attribute vec3 position3DHigh;\nattribute vec3 position3DLow;\nattribute vec3 normal;\nvarying vec3 v_positionEC;\nvarying vec3 v_normalEC;\nvoid main()\n{\nvec4 p = czm_computePosition();\nv_positionEC = (czm_modelViewRelativeToEye * p).xyz;\nv_normalEC = czm_normal * normal;\ngl_Position = czm_modelViewProjectionRelativeToEye * p;\n}\n"}),i("Shaders/Appearances/TexturedMaterialAppearanceFS",[],function(){"use strict";return"varying vec3 v_positionEC;\nvarying vec3 v_normalEC;\nvarying vec2 v_st;\nvoid main()\n{\nvec3 positionToEyeEC = -v_positionEC;\nvec3 normalEC = normalize(v_normalEC);;\n#ifdef FACE_FORWARD\nnormalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);\n#endif\nczm_materialInput materialInput;\nmaterialInput.normalEC = normalEC;\nmaterialInput.positionToEyeEC = positionToEyeEC;\nmaterialInput.st = v_st;\nczm_material material = czm_getMaterial(materialInput);\n#ifdef FLAT\ngl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n#else\ngl_FragColor = czm_phong(normalize(positionToEyeEC), material);\n#endif\n}\n"}),i("Shaders/Appearances/TexturedMaterialAppearanceVS",[],function(){"use strict";return"attribute vec3 position3DHigh;\nattribute vec3 position3DLow;\nattribute vec3 normal;\nattribute vec2 st;\nvarying vec3 v_positionEC;\nvarying vec3 v_normalEC;\nvarying vec2 v_st;\nvoid main()\n{\nvec4 p = czm_computePosition();\nv_positionEC = (czm_modelViewRelativeToEye * p).xyz;\nv_normalEC = czm_normal * normal;\nv_st = st;\ngl_Position = czm_modelViewProjectionRelativeToEye * p;\n}\n"}),i("Scene/CullFace",["../Core/freezeObject"],function(e){"use strict";var t={FRONT:1028,BACK:1029,FRONT_AND_BACK:1032};return e(t)}),i("Scene/Appearance",["../Core/clone","../Core/combine","../Core/defaultValue","../Core/defined","../Core/defineProperties","./BlendingState","./CullFace"],function(e,t,i,r,n,o,a){"use strict";var s=function(e){e=i(e,i.EMPTY_OBJECT),this.material=e.material,this.translucent=i(e.translucent,!0),this._vertexShaderSource=e.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource,this._renderState=e.renderState,this._closed=i(e.closed,!1)};return n(s.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}}}),s.prototype.getFragmentShaderSource=function(){var e=[];return this.flat&&e.push("#define FLAT"),this.faceForward&&e.push("#define FACE_FORWARD"),r(this.material)&&e.push(this.material.shaderSource),e.push(this.fragmentShaderSource),e.join("\n")},s.prototype.isTranslucent=function(){return r(this.material)&&this.material.isTranslucent()||!r(this.material)&&this.translucent},s.prototype.getRenderState=function(){var t=this.isTranslucent(),i=e(this.renderState,!1);return t?(i.depthMask=!1,i.blending=o.ALPHA_BLEND):i.depthMask=!0,i},s.getDefaultRenderState=function(e,i,n){var s={depthTest:{enabled:!0}};return e&&(s.depthMask=!1,s.blending=o.ALPHA_BLEND),i&&(s.cull={enabled:!0,face:a.BACK}),r(n)&&(s=t(n,s,!0)),s},s}),i("Renderer/PixelDatatype",["../Core/freezeObject"],function(e){"use strict";var t={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:5126,UNSIGNED_INT_24_8_WEBGL:34042,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,validate:function(e){return e===t.UNSIGNED_BYTE||e===t.UNSIGNED_SHORT||e===t.UNSIGNED_INT||e===t.FLOAT||e===t.UNSIGNED_INT_24_8_WEBGL||e===t.UNSIGNED_SHORT_4_4_4_4||e===t.UNSIGNED_SHORT_5_5_5_1||e===t.UNSIGNED_SHORT_5_6_5}};return e(t)}),i("Renderer/CubeMapFace",["../Core/defaultValue","../Core/defineProperties","../Core/DeveloperError","./PixelDatatype"],function(e,t){"use strict";var i=function(e,t,i,r,n,o,a,s,l){this._gl=e,this._texture=t,this._textureTarget=i,this._targetFace=r,this._pixelFormat=n,this._pixelDatatype=o,this._size=a,this._preMultiplyAlpha=s,this._flipY=l};return t(i.prototype,{pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},_target:{get:function(){return this._targetFace}}}),i.prototype.copyFrom=function(t,i,r){i=e(i,0),r=e(r,0);var n=this._gl,o=this._textureTarget;n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this._preMultiplyAlpha),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,this._flipY),n.activeTexture(n.TEXTURE0),n.bindTexture(o,this._texture),t.arrayBufferView?n.texSubImage2D(this._targetFace,0,i,r,t.width,t.height,this._pixelFormat,this._pixelDatatype,t.arrayBufferView):n.texSubImage2D(this._targetFace,0,i,r,this._pixelFormat,this._pixelDatatype,t),n.bindTexture(o,null)},i.prototype.copyFromFramebuffer=function(t,i,r,n,o,a){t=e(t,0),i=e(i,0),r=e(r,0),n=e(n,0),o=e(o,this._size),a=e(a,this._size);var s=this._gl,l=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(l,this._texture),s.copyTexSubImage2D(this._targetFace,0,t,i,r,n,o,a),s.bindTexture(l,null)},i}),i("Renderer/MipmapHint",["../Core/freezeObject"],function(e){"use strict";var t={DONT_CARE:4352,FASTEST:4353,NICEST:4354,validate:function(e){return e===t.DONT_CARE||e===t.FASTEST||e===t.NICEST}};return e(t)}),i("Renderer/TextureMagnificationFilter",["../Core/freezeObject"],function(e){"use strict";var t={NEAREST:9728,LINEAR:9729,validate:function(e){return e===t.NEAREST||e===t.LINEAR}};return e(t)}),i("Renderer/TextureMinificationFilter",["../Core/freezeObject"],function(e){"use strict";var t={NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,validate:function(e){return e===t.NEAREST||e===t.LINEAR||e===t.NEAREST_MIPMAP_NEAREST||e===t.LINEAR_MIPMAP_NEAREST||e===t.NEAREST_MIPMAP_LINEAR||e===t.LINEAR_MIPMAP_LINEAR}};return e(t)}),i("Renderer/TextureWrap",["../Core/freezeObject"],function(e){"use strict";var t={CLAMP_TO_EDGE:33071,REPEAT:10497,MIRRORED_REPEAT:33648,validate:function(e){return e===t.CLAMP_TO_EDGE||e===t.REPEAT||e===t.MIRRORED_REPEAT}};return e(t)}),i("Renderer/CubeMap",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Math","./CubeMapFace","./MipmapHint","./PixelDatatype","./TextureMagnificationFilter","./TextureMinificationFilter","./TextureWrap"],function(e,t,i,r,n,o,a,s,l,u,c,h){"use strict";var d=function(e,t,i,r,n,o,s,l,u){this._gl=e,this._textureFilterAnisotropic=t,this._textureTarget=i,this._texture=r,this._pixelFormat=n,this._pixelDatatype=o,this._size=s,this._preMultiplyAlpha=l,this._flipY=u,this._sampler=void 0,this._positiveX=new a(e,r,i,e.TEXTURE_CUBE_MAP_POSITIVE_X,n,o,s,l,u),this._negativeX=new a(e,r,i,e.TEXTURE_CUBE_MAP_NEGATIVE_X,n,o,s,l,u),this._positiveY=new a(e,r,i,e.TEXTURE_CUBE_MAP_POSITIVE_Y,n,o,s,l,u),this._negativeY=new a(e,r,i,e.TEXTURE_CUBE_MAP_NEGATIVE_Y,n,o,s,l,u),this._positiveZ=new a(e,r,i,e.TEXTURE_CUBE_MAP_POSITIVE_Z,n,o,s,l,u),this._negativeZ=new a(e,r,i,e.TEXTURE_CUBE_MAP_NEGATIVE_Z,n,o,s,l,u),this.sampler=void 0};return i(d.prototype,{positiveX:{get:function(){return this._positiveX}},negativeX:{get:function(){return this._negativeX}},positiveY:{get:function(){return this._positiveY}},negativeY:{get:function(){return this._negativeY}},positiveZ:{get:function(){return this._positiveZ}},negativeZ:{get:function(){return this._negativeZ}},sampler:{get:function(){return this._sampler},set:function(e){var i=!0;if(!t(e)){i=!1;var r=c.LINEAR,o=u.LINEAR;this._pixelDatatype===l.FLOAT&&(r=c.NEAREST,o=u.NEAREST),e={wrapS:h.CLAMP_TO_EDGE,wrapT:h.CLAMP_TO_EDGE,minificationFilter:r,magnificationFilter:o,maximumAnisotropy:1}}if(this._pixelDatatype===l.FLOAT){if(e.minificationFilter!==c.NEAREST&&e.minificationFilter!==c.NEAREST_MIPMAP_NEAREST)throw new n("Only NEAREST and NEAREST_MIPMAP_NEAREST minification filters are supported for floating point textures.");if(e.magnificationFilter!==u.NEAREST)throw new n("Only the NEAREST magnification filter is supported for floating point textures.")}var a=this._gl,s=this._textureTarget;a.activeTexture(a.TEXTURE0),a.bindTexture(s,this._texture),a.texParameteri(s,a.TEXTURE_MIN_FILTER,e.minificationFilter),a.texParameteri(s,a.TEXTURE_MAG_FILTER,e.magnificationFilter),a.texParameteri(s,a.TEXTURE_WRAP_S,e.wrapS),a.texParameteri(s,a.TEXTURE_WRAP_T,e.wrapT),t(this._textureFilterAnisotropic)&&a.texParameteri(s,this._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,e.maximumAnisotropy),a.bindTexture(s,null),this._sampler=i?{wrapS:e.wrapS,wrapT:e.wrapT,minificationFilter:e.minificationFilter,magnificationFilter:e.magnificationFilter,maximumAnisotropy:e.maximumAnisotropy}:void 0}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},width:{get:function(){return this._size}},height:{get:function(){return this._size}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},_target:{get:function(){return this._textureTarget}}}),d.prototype.generateMipmap=function(t){t=e(t,s.DONT_CARE);var i=this._gl,r=this._textureTarget;i.hint(i.GENERATE_MIPMAP_HINT,t),i.activeTexture(i.TEXTURE0),i.bindTexture(r,this._texture),i.generateMipmap(r),i.bindTexture(r,null)},d.prototype.isDestroyed=function(){return!1},d.prototype.destroy=function(){return this._gl.deleteTexture(this._texture),this._positiveX=r(this._positiveX),this._negativeX=r(this._negativeX),this._positiveY=r(this._positiveY),this._negativeY=r(this._negativeY),this._positiveZ=r(this._positiveZ),this._negativeZ=r(this._negativeZ),r(this)},d}),i("Renderer/Texture",["../Core/Cartesian2","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Math","../Core/PixelFormat","./MipmapHint","./PixelDatatype","./TextureMagnificationFilter","./TextureMinificationFilter","./TextureWrap"],function(e,t,i,r,n,o,a,s,l,u,c,h,d){"use strict";var p=function(r,n){n=t(n,t.EMPTY_OBJECT);var a=n.source,l=i(a)?a.width:n.width,c=i(a)?a.height:n.height,h=t(n.pixelFormat,s.RGBA),d=t(n.pixelDatatype,u.UNSIGNED_BYTE);if(d===u.FLOAT&&!r.floatingPointTexture)throw new o("When options.pixelDatatype is FLOAT, this WebGL implementation must support the OES_texture_float extension. Check context.floatingPointTexture.");if(s.isDepthFormat(h)&&!r.depthTexture)throw new o("When options.pixelFormat is DEPTH_COMPONENT or DEPTH_STENCIL, this WebGL implementation must support WEBGL_depth_texture. Check context.depthTexture.");var p=n.preMultiplyAlpha||h===s.RGB||h===s.LUMINANCE,m=t(n.flipY,!0),f=r._gl,v=f.TEXTURE_2D,g=f.createTexture();f.activeTexture(f.TEXTURE0),f.bindTexture(v,g),i(a)?(f.pixelStorei(f.UNPACK_PREMULTIPLY_ALPHA_WEBGL,p),f.pixelStorei(f.UNPACK_FLIP_Y_WEBGL,m),i(a.arrayBufferView)?f.texImage2D(v,0,h,l,c,0,h,d,a.arrayBufferView):i(a.framebuffer)?(a.framebuffer!==r.defaultFramebuffer&&a.framebuffer._bind(),f.copyTexImage2D(v,0,h,a.xOffset,a.yOffset,l,c,0),a.framebuffer!==r.defaultFramebuffer&&a.framebuffer._unBind()):f.texImage2D(v,0,h,h,d,a)):f.texImage2D(v,0,h,l,c,0,h,d,null),f.bindTexture(v,null),this._context=r,this._textureFilterAnisotropic=r._textureFilterAnisotropic,this._textureTarget=v,this._texture=g,this._pixelFormat=h,this._pixelDatatype=d,this._width=l,this._height=c,this._dimensions=new e(l,c),this._preMultiplyAlpha=p,this._flipY=m,this._sampler=void 0,this.sampler=void 0};return r(p.prototype,{sampler:{get:function(){return this._sampler},set:function(e){var t=!0;if(!i(e)){t=!1;var r=h.LINEAR,n=c.LINEAR;this._pixelDatatype===u.FLOAT&&(r=h.NEAREST,n=c.NEAREST),e={wrapS:d.CLAMP_TO_EDGE,wrapT:d.CLAMP_TO_EDGE,minificationFilter:r,magnificationFilter:n,maximumAnisotropy:1}}if(this._pixelDatatype===u.FLOAT){if(e.minificationFilter!==h.NEAREST&&e.minificationFilter!==h.NEAREST_MIPMAP_NEAREST)throw new o("Only NEAREST and NEAREST_MIPMAP_NEAREST minification filters are supported for floating point textures.");if(e.magnificationFilter!==c.NEAREST)throw new o("Only the NEAREST magnification filter is supported for floating point textures.")}var a=this._context._gl,s=this._textureTarget;a.activeTexture(a.TEXTURE0),a.bindTexture(s,this._texture),a.texParameteri(s,a.TEXTURE_MIN_FILTER,e.minificationFilter),a.texParameteri(s,a.TEXTURE_MAG_FILTER,e.magnificationFilter),a.texParameteri(s,a.TEXTURE_WRAP_S,e.wrapS),a.texParameteri(s,a.TEXTURE_WRAP_T,e.wrapT),i(this._textureFilterAnisotropic)&&a.texParameteri(s,this._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,e.maximumAnisotropy),a.bindTexture(s,null),this._sampler=t?{wrapS:e.wrapS,wrapT:e.wrapT,minificationFilter:e.minificationFilter,magnificationFilter:e.magnificationFilter,maximumAnisotropy:e.maximumAnisotropy}:void 0}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},_target:{get:function(){return this._textureTarget}}}),p.prototype.copyFrom=function(e,i,r){i=t(i,0),r=t(r,0);var n=this._context._gl,o=this._textureTarget;n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this._preMultiplyAlpha),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,this._flipY),n.activeTexture(n.TEXTURE0),n.bindTexture(o,this._texture),e.arrayBufferView?n.texSubImage2D(o,0,i,r,e.width,e.height,this._pixelFormat,this._pixelDatatype,e.arrayBufferView):n.texSubImage2D(o,0,i,r,this._pixelFormat,this._pixelDatatype,e),n.bindTexture(o,null)},p.prototype.copyFromFramebuffer=function(e,i,r,n,o,a){e=t(e,0),i=t(i,0),r=t(r,0),n=t(n,0),o=t(o,this._width),a=t(a,this._height);var s=this._context._gl,l=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(l,this._texture),s.copyTexSubImage2D(l,0,e,i,r,n,o,a),s.bindTexture(l,null)},p.prototype.generateMipmap=function(e){e=t(e,l.DONT_CARE);var i=this._context._gl,r=this._textureTarget;i.hint(i.GENERATE_MIPMAP_HINT,e),i.activeTexture(i.TEXTURE0),i.bindTexture(r,this._texture),i.generateMipmap(r),i.bindTexture(r,null)},p.prototype.isDestroyed=function(){return!1},p.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),n(this)},p}),i("Shaders/Materials/BumpMapMaterial",[],function(){"use strict";return"uniform sampler2D image;\nuniform float strength;\nuniform vec2 repeat;\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nvec2 st = materialInput.st;\nvec2 centerPixel = fract(repeat * st);\nfloat centerBump = texture2D(image, centerPixel).channel;\nfloat imageWidth = float(imageDimensions.x);\nvec2 rightPixel = fract(repeat * (st + vec2(1.0 / imageWidth, 0.0)));\nfloat rightBump = texture2D(image, rightPixel).channel;\nfloat imageHeight = float(imageDimensions.y);\nvec2 leftPixel = fract(repeat * (st + vec2(0.0, 1.0 / imageHeight)));\nfloat topBump = texture2D(image, leftPixel).channel;\nvec3 normalTangentSpace = normalize(vec3(centerBump - rightBump, centerBump - topBump, clamp(1.0 - strength, 0.1, 1.0)));\nvec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace;\nmaterial.normal = normalEC;\nmaterial.diffuse = vec3(0.01);\nreturn material;\n}\n"}),i("Shaders/Materials/CheckerboardMaterial",[],function(){"use strict";return"uniform vec4 lightColor;\nuniform vec4 darkColor;\nuniform vec2 repeat;\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nvec2 st = materialInput.st;\nfloat b = mod(floor(repeat.s * st.s) + floor(repeat.t * st.t), 2.0);\nfloat scaledWidth = fract(repeat.s * st.s);\nscaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5));\nfloat scaledHeight = fract(repeat.t * st.t);\nscaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5));\nfloat value = min(scaledWidth, scaledHeight);\nvec4 currentColor = mix(lightColor, darkColor, b);\nvec4 color = czm_antialias(lightColor, darkColor, currentColor, value, 0.03);\nmaterial.diffuse = color.rgb;\nmaterial.alpha = color.a;\nreturn material;\n}\n"}),i("Shaders/Materials/DotMaterial",[],function(){"use strict";return"uniform vec4 lightColor;\nuniform vec4 darkColor;\nuniform vec2 repeat;\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nfloat b = smoothstep(0.3, 0.32, length(fract(repeat * materialInput.st) - 0.5));\nvec4 color = mix(lightColor, darkColor, b);\nmaterial.diffuse = color.rgb;\nmaterial.alpha = color.a;\nreturn material;\n}\n"}),i("Shaders/Materials/FadeMaterial",[],function(){"use strict";return"uniform vec4 fadeInColor;\nuniform vec4 fadeOutColor;\nuniform float maximumDistance;\nuniform bool repeat;\nuniform vec2 fadeDirection;\nuniform vec2 time;\nfloat getTime(float t, float coord)\n{\nfloat scalar = 1.0 / maximumDistance;\nfloat q = distance(t, coord) * scalar;\nif (repeat)\n{\nfloat r = distance(t, coord + 1.0) * scalar;\nfloat s = distance(t, coord - 1.0) * scalar;\nq = min(min(r, s), q);\n}\nreturn clamp(q, 0.0, 1.0);\n}\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nvec2 st = materialInput.st;\nfloat s = getTime(time.x, st.s) * fadeDirection.s;\nfloat t = getTime(time.y, st.t) * fadeDirection.t;\nfloat u = length(vec2(s, t));\nvec4 color = mix(fadeInColor, fadeOutColor, u);\nmaterial.emission = color.rgb;\nmaterial.alpha = color.a;\nreturn material;\n}\n"}),i("Shaders/Materials/GridMaterial",[],function(){"use strict";return"#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n#endif\nuniform vec4 color;\nuniform float cellAlpha;\nuniform vec2 lineCount;\nuniform vec2 lineThickness;\nuniform vec2 lineOffset;\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nvec2 st = materialInput.st;\nfloat scaledWidth = fract(lineCount.s * st.s - lineOffset.s);\nscaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5));\nfloat scaledHeight = fract(lineCount.t * st.t - lineOffset.t);\nscaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5));\nfloat value;\n#ifdef GL_OES_standard_derivatives\nconst float fuzz = 1.2;\nvec2 thickness = (lineThickness * czm_resolutionScale) - 1.0;\nvec2 dx = abs(dFdx(st));\nvec2 dy = abs(dFdy(st));\nvec2 dF = vec2(max(dx.s, dy.s), max(dx.t, dy.t)) * lineCount;\nvalue = min(\nsmoothstep(dF.s * thickness.s, dF.s * (fuzz + thickness.s), scaledWidth),\nsmoothstep(dF.t * thickness.t, dF.t * (fuzz + thickness.t), scaledHeight));\n#else\nconst float fuzz = 0.05;\nvec2 range = 0.5 - (lineThickness * 0.05);\nvalue = min(\n1.0 - smoothstep(range.s, range.s + fuzz, scaledWidth),\n1.0 - smoothstep(range.t, range.t + fuzz, scaledHeight));\n#endif\nfloat dRim = 1.0 - abs(dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC)));\nfloat sRim = smoothstep(0.8, 1.0, dRim);\nvalue *= (1.0 - sRim);\nvec3 halfColor = color.rgb * 0.5;\nmaterial.diffuse = halfColor;\nmaterial.emission = halfColor;\nmaterial.alpha = color.a * (1.0 - ((1.0 - cellAlpha) * value));\nreturn material;\n}\n"}),i("Shaders/Materials/NormalMapMaterial",[],function(){"use strict";return"uniform sampler2D image;\nuniform float strength;\nuniform vec2 repeat;\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nvec4 textureValue = texture2D(image, fract(repeat * materialInput.st));\nvec3 normalTangentSpace = textureValue.channels;\nnormalTangentSpace.xy = normalTangentSpace.xy * 2.0 - 1.0;\nnormalTangentSpace.z = clamp(1.0 - strength, 0.1, 1.0);\nnormalTangentSpace = normalize(normalTangentSpace);\nvec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace;\nmaterial.normal = normalEC;\nreturn material;\n}\n"}),i("Shaders/Materials/PolylineArrowMaterial",[],function(){"use strict";return"#extension GL_OES_standard_derivatives : enable\nuniform vec4 color;\nvarying float v_width;\nfloat getPointOnLine(vec2 p0, vec2 p1, float x)\n{\nfloat slope = (p0.y - p1.y) / (p0.x - p1.x);\nreturn slope * (x - p0.x) + p0.y;\n}\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nvec2 st = materialInput.st;\nfloat base = 1.0 - abs(fwidth(st.s)) * 10.0;\nvec2 center = vec2(1.0, 0.5);\nfloat ptOnUpperLine = getPointOnLine(vec2(base, 1.0), center, st.s);\nfloat ptOnLowerLine = getPointOnLine(vec2(base, 0.0), center, st.s);\nfloat halfWidth = 0.15;\nfloat s = step(0.5 - halfWidth, st.t);\ns *= 1.0 - step(0.5 + halfWidth, st.t);\ns *= 1.0 - step(base, st.s);\nfloat t = step(base, materialInput.st.s);\nt *= 1.0 - step(ptOnUpperLine, st.t);\nt *= step(ptOnLowerLine, st.t);\nfloat dist;\nif (st.s < base)\n{\nfloat d1 = abs(st.t - (0.5 - halfWidth));\nfloat d2 = abs(st.t - (0.5 + halfWidth));\ndist = min(d1, d2);\n}\nelse\n{\nfloat d1 = czm_infinity;\nif (st.t < 0.5 - halfWidth && st.t > 0.5 + halfWidth)\n{\nd1 = abs(st.s - base);\n}\nfloat d2 = abs(st.t - ptOnUpperLine);\nfloat d3 = abs(st.t - ptOnLowerLine);\ndist = min(min(d1, d2), d3);\n}\nvec4 outsideColor = vec4(0.0);\nvec4 currentColor = mix(outsideColor, color, clamp(s + t, 0.0, 1.0));\nvec4 outColor = czm_antialias(outsideColor, color, currentColor, dist);\nmaterial.diffuse = outColor.rgb;\nmaterial.alpha = outColor.a;\nreturn material;\n}\n"}),i("Shaders/Materials/PolylineGlowMaterial",[],function(){"use strict";return"uniform vec4 color;\nuniform float glowPower;\nvarying float v_width;\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nvec2 st = materialInput.st;\nfloat glow = glowPower / abs(st.t - 0.5) - (glowPower / 0.5);\nmaterial.emission = max(vec3(glow - 1.0 + color.rgb), color.rgb);\nmaterial.alpha = clamp(0.0, 1.0, glow) * color.a;\nreturn material;\n}\n"}),i("Shaders/Materials/PolylineOutlineMaterial",[],function(){"use strict";return"uniform vec4 color;\nuniform vec4 outlineColor;\nuniform float outlineWidth;\nvarying float v_width;\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nvec2 st = materialInput.st;\nfloat halfInteriorWidth = 0.5 * (v_width - outlineWidth) / v_width;\nfloat b = step(0.5 - halfInteriorWidth, st.t);\nb *= 1.0 - step(0.5 + halfInteriorWidth, st.t);\nfloat d1 = abs(st.t - (0.5 - halfInteriorWidth));\nfloat d2 = abs(st.t - (0.5 + halfInteriorWidth));\nfloat dist = min(d1, d2);\nvec4 currentColor = mix(outlineColor, color, b);\nvec4 outColor = czm_antialias(outlineColor, color, currentColor, dist);\nmaterial.diffuse = outColor.rgb;\nmaterial.alpha = outColor.a;\nreturn material;\n}\n"}),i("Shaders/Materials/RimLightingMaterial",[],function(){"use strict";return"uniform vec4 color;\nuniform vec4 rimColor;\nuniform float width;\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nfloat d = 1.0 - dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC));\nfloat s = smoothstep(1.0 - width, 1.0, d);\nmaterial.diffuse = color.rgb;\nmaterial.emission = rimColor.rgb * s;\nmaterial.alpha = mix(color.a, rimColor.a, s);\nreturn material;\n}\n" +}),i("Shaders/Materials/StripeMaterial",[],function(){"use strict";return"uniform vec4 evenColor;\nuniform vec4 oddColor;\nuniform float offset;\nuniform float repeat;\nuniform bool horizontal;\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nfloat coord = mix(materialInput.st.s, materialInput.st.t, float(horizontal));\nfloat value = fract((coord - offset) * (repeat * 0.5));\nfloat dist = min(value, min(abs(value - 0.5), 1.0 - value));\nvec4 currentColor = mix(evenColor, oddColor, step(0.5, value));\nvec4 color = czm_antialias(evenColor, oddColor, currentColor, dist);\nmaterial.diffuse = color.rgb;\nmaterial.alpha = color.a;\nreturn material;\n}\n"}),i("Shaders/Materials/Water",[],function(){"use strict";return"uniform sampler2D specularMap;\nuniform sampler2D normalMap;\nuniform vec4 baseWaterColor;\nuniform vec4 blendColor;\nuniform float frequency;\nuniform float animationSpeed;\nuniform float amplitude;\nuniform float specularIntensity;\nuniform float fadeFactor;\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nfloat time = czm_frameNumber * animationSpeed;\nfloat fade = max(1.0, (length(materialInput.positionToEyeEC) / 10000000000.0) * frequency * fadeFactor);\nfloat specularMapValue = texture2D(specularMap, materialInput.st).r;\nvec4 noise = czm_getWaterNoise(normalMap, materialInput.st * frequency, time, 0.0);\nvec3 normalTangentSpace = noise.xyz * vec3(1.0, 1.0, (1.0 / amplitude));\nnormalTangentSpace.xy /= fade;\nnormalTangentSpace = mix(vec3(0.0, 0.0, 50.0), normalTangentSpace, specularMapValue);\nnormalTangentSpace = normalize(normalTangentSpace);\nfloat tsPerturbationRatio = clamp(dot(normalTangentSpace, vec3(0.0, 0.0, 1.0)), 0.0, 1.0);\nmaterial.alpha = specularMapValue;\nmaterial.diffuse = mix(blendColor.rgb, baseWaterColor.rgb, specularMapValue);\nmaterial.diffuse += (0.1 * tsPerturbationRatio);\nmaterial.normal = normalize(materialInput.tangentToEyeMatrix * normalTangentSpace);\nmaterial.specular = specularIntensity;\nmaterial.shininess = 10.0;\nreturn material;\n}\n"}),i("Scene/Material",["../Core/Cartesian2","../Core/clone","../Core/Color","../Core/combine","../Core/createGuid","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/isArray","../Core/loadImage","../Core/Matrix2","../Core/Matrix3","../Core/Matrix4","../Renderer/CubeMap","../Renderer/Texture","../Shaders/Materials/BumpMapMaterial","../Shaders/Materials/CheckerboardMaterial","../Shaders/Materials/DotMaterial","../Shaders/Materials/FadeMaterial","../Shaders/Materials/GridMaterial","../Shaders/Materials/NormalMapMaterial","../Shaders/Materials/PolylineArrowMaterial","../Shaders/Materials/PolylineGlowMaterial","../Shaders/Materials/PolylineOutlineMaterial","../Shaders/Materials/RimLightingMaterial","../Shaders/Materials/StripeMaterial","../Shaders/Materials/Water","../ThirdParty/when"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D){"use strict";function M(e,i){e=o(e,o.EMPTY_OBJECT),i._strict=o(e.strict,!1),i._count=o(e.count,0),i._template=t(o(e.fabric,o.EMPTY_OBJECT)),i._template.uniforms=t(o(i._template.uniforms,o.EMPTY_OBJECT)),i._template.materials=t(o(i._template.materials,o.EMPTY_OBJECT)),i.type=a(i._template.type)?i._template.type:n(),i.shaderSource="",i.materials={},i.uniforms={},i._uniforms={},i._translucentFunctions=[];var s,l=H._materialCache.getMaterial(i.type);if(a(l)){var u=t(l.fabric,!0);i._template=r(i._template,u,!0),s=l.translucent}L(i),a(l)||H._materialCache.addMaterial(i.type,i),N(i),z(i),U(i);var c=0===i._translucentFunctions.length?!0:void 0;if(s=o(s,c),s=o(e.translucent,s),a(s))if("function"==typeof s){var h=function(){return s(i)};i._translucentFunctions.push(h)}else i._translucentFunctions.push(s)}function I(e,t,i,r){if(a(e))for(var n in e)if(e.hasOwnProperty(n)){var o=-1!==t.indexOf(n);(r&&!o||!r&&o)&&i(n,t)}}function O(e,t){for(var i="fabric: property name '"+e+"' is not valid. It should be ",r=0;r0&&(r[s]={type:"ivec3",x:1,y:1},k(e,s))}var l=new RegExp("uniform\\s+"+o+"\\s+"+t+"\\s*;");if(!l.test(e.shaderSource)){var c="uniform "+o+" "+t+";";e.shaderSource=c+e.shaderSource}var h=t+"_"+e._count++;if(1===W(e,t,h)&&i)throw new u("strict: shader source does not use uniform '"+t+"'.");if(e.uniforms[t]=n,"sampler2D"===o)e._uniforms[h]=function(){return e._textures[t]},e._updateFunctions.push(F(t));else if("samplerCube"===o)e._uniforms[h]=function(){return e._textures[t]},e._updateFunctions.push(B(t));else if(-1!==o.indexOf("mat")){var d=new Y[o];e._uniforms[h]=function(){return Y[o].fromColumnMajorArray(e.uniforms[t],d)}}else e._uniforms[h]=function(){return e.uniforms[t]}}}function V(e){var t=e.type;if(!a(t)){var i=typeof e;if("number"===i)t="float";else if("boolean"===i)t="bool";else if("string"===i||e instanceof HTMLCanvasElement)t=/^([rgba]){1,4}$/i.test(e)?"channels":e===H.DefaultCubeMapId?"samplerCube":"sampler2D";else if("object"===i)if(c(e))(4===e.length||9===e.length||16===e.length)&&(t="mat"+Math.sqrt(e.length));else{var r=0;for(var n in e)e.hasOwnProperty(n)&&(r+=1);r>=2&&4>=r?t="vec"+r:6===r&&(t="samplerCube")}}return t}function U(e){var t=e._strict,i=e._template.materials;for(var n in i)if(i.hasOwnProperty(n)){var o=new H({strict:t,fabric:i[n],count:e._count});e._count=o._count,e._uniforms=r(e._uniforms,o._uniforms,!0),e.materials[n]=o,e._translucentFunctions=e._translucentFunctions.concat(o._translucentFunctions);var a="czm_getMaterial",s=a+"_"+e._count++;W(o,a,s),e.shaderSource=o.shaderSource+e.shaderSource;var l=s+"(materialInput)";if(0===W(e,n,l)&&t)throw new u("strict: shader source does not use material '"+n+"'.")}}function W(e,t,i,r){r=o(r,!0);var n=0,a="([\\w])?",s="([\\w"+(r?".":"")+"])?",l=new RegExp(s+t+a,"g");return e.shaderSource=e.shaderSource.replace(l,function(e,t,r){return t||r?e:(n+=1,i)}),n}function G(e,t,i){return W(e,t,t,i)}var H=function(e){this.type=void 0,this.shaderSource=void 0,this.materials=void 0,this.uniforms=void 0,this._uniforms=void 0,this.translucent=void 0,this._strict=void 0,this._template=void 0,this._count=void 0,this._texturePaths={},this._loadedImages=[],this._loadedCubeMaps=[],this._textures={},this._updateFunctions=[],this._defaultTexture=void 0,M(e,this),s(this,{type:{value:this.type,writable:!1}}),a(H._uniformList[this.type])||(H._uniformList[this.type]=Object.keys(this._uniforms))};H._uniformList={},H.fromType=function(e,t){var i=new H({fabric:{type:e}});if(a(t))for(var r in t)t.hasOwnProperty(r)&&(i.uniforms[r]=t[r]);return i},H.prototype.isTranslucent=function(){if(a(this.translucent))return"function"==typeof this.translucent?this.translucent():this.translucent;for(var e=!0,t=this._translucentFunctions,i=t.length,r=0;i>r;++r){var n=t[r];if(e="function"==typeof n?e&&n():e&&n,!e)break}return e},H.prototype.update=function(e){var t,i,r=this._loadedImages,n=r.length;for(t=0;n>t;++t){var o=r[t];i=o.id;var a=o.image,s=e.createTexture2D({source:a});this._textures[i]=s;var l=i+"Dimensions";if(this.uniforms.hasOwnProperty(l)){var u=this.uniforms[l];u.x=s._width,u.y=s._height}}r.length=0;var c=this._loadedCubeMaps;for(n=c.length,t=0;n>t;++t){var h=c[t];i=h.id;var d=h.images,p=e.createCubeMap({source:{positiveX:d[0],negativeX:d[1],positiveY:d[2],negativeY:d[3],positiveZ:d[4],negativeZ:d[5]}});this._textures[i]=p}c.length=0;var m=this._updateFunctions;for(n=m.length,t=0;n>t;++t)m[t](this,e);var f=this.materials;for(var v in f)f.hasOwnProperty(v)&&f[v].update(e)},H.prototype.isDestroyed=function(){return!1},H.prototype.destroy=function(){var e=this._textures;for(var t in e)if(e.hasOwnProperty(t)){var i=e[t];i!==this._defaultTexture&&i.destroy()}var r=this.materials;for(var n in r)r.hasOwnProperty(n)&&r[n].destroy();return l(this)};var q=["type","materials","uniforms","components","source"],j=["diffuse","specular","shininess","normal","emission","alpha"],Y={mat2:d,mat3:p,mat4:m};return H._materialCache={_materials:{},addMaterial:function(e,t){this._materials[e]=t},getMaterial:function(e){return this._materials[e]}},H.DefaultImageId="czm_defaultImage",H.DefaultCubeMapId="czm_defaultCubeMap",H.ColorType="Color",H._materialCache.addMaterial(H.ColorType,{fabric:{type:H.ColorType,uniforms:{color:new i(1,0,0,.5)},components:{diffuse:"color.rgb",alpha:"color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}}),H.ImageType="Image",H._materialCache.addMaterial(H.ImageType,{fabric:{type:H.ImageType,uniforms:{image:H.DefaultImageId,repeat:new e(1,1)},components:{diffuse:"texture2D(image, fract(repeat * materialInput.st)).rgb",alpha:"texture2D(image, fract(repeat * materialInput.st)).a"}},translucent:!0}),H.DiffuseMapType="DiffuseMap",H._materialCache.addMaterial(H.DiffuseMapType,{fabric:{type:H.DiffuseMapType,uniforms:{image:H.DefaultImageId,channels:"rgb",repeat:new e(1,1)},components:{diffuse:"texture2D(image, fract(repeat * materialInput.st)).channels"}},translucent:!1}),H.AlphaMapType="AlphaMap",H._materialCache.addMaterial(H.AlphaMapType,{fabric:{type:H.AlphaMapType,uniforms:{image:H.DefaultImageId,channel:"a",repeat:new e(1,1)},components:{alpha:"texture2D(image, fract(repeat * materialInput.st)).channel"}},translucent:!0}),H.SpecularMapType="SpecularMap",H._materialCache.addMaterial(H.SpecularMapType,{fabric:{type:H.SpecularMapType,uniforms:{image:H.DefaultImageId,channel:"r",repeat:new e(1,1)},components:{specular:"texture2D(image, fract(repeat * materialInput.st)).channel"}},translucent:!1}),H.EmissionMapType="EmissionMap",H._materialCache.addMaterial(H.EmissionMapType,{fabric:{type:H.EmissionMapType,uniforms:{image:H.DefaultImageId,channels:"rgb",repeat:new e(1,1)},components:{emission:"texture2D(image, fract(repeat * materialInput.st)).channels"}},translucent:!1}),H.BumpMapType="BumpMap",H._materialCache.addMaterial(H.BumpMapType,{fabric:{type:H.BumpMapType,uniforms:{image:H.DefaultImageId,channel:"r",strength:.8,repeat:new e(1,1)},source:g},translucent:!1}),H.NormalMapType="NormalMap",H._materialCache.addMaterial(H.NormalMapType,{fabric:{type:H.NormalMapType,uniforms:{image:H.DefaultImageId,channels:"rgb",strength:.8,repeat:new e(1,1)},source:S},translucent:!1}),H.GridType="Grid",H._materialCache.addMaterial(H.GridType,{fabric:{type:H.GridType,uniforms:{color:new i(0,1,0,1),cellAlpha:.1,lineCount:new e(8,8),lineThickness:new e(1,1),lineOffset:new e(0,0)},source:w},translucent:function(e){var t=e.uniforms;return t.color.alpha<1||t.cellAlpha<1}}),H.StripeType="Stripe",H._materialCache.addMaterial(H.StripeType,{fabric:{type:H.StripeType,uniforms:{horizontal:!0,evenColor:new i(1,1,1,.5),oddColor:new i(0,0,1,.5),offset:0,repeat:5},source:P},translucent:function(e){var t=e.uniforms;return t.evenColor.alpha<1||t.oddColor.alpha<0}}),H.CheckerboardType="Checkerboard",H._materialCache.addMaterial(H.CheckerboardType,{fabric:{type:H.CheckerboardType,uniforms:{lightColor:new i(1,1,1,.5),darkColor:new i(0,0,0,.5),repeat:new e(5,5)},source:_},translucent:function(e){var t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<0}}),H.DotType="Dot",H._materialCache.addMaterial(H.DotType,{fabric:{type:H.DotType,uniforms:{lightColor:new i(1,1,0,.75),darkColor:new i(0,1,1,.75),repeat:new e(5,5)},source:y},translucent:function(e){var t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<0}}),H.WaterType="Water",H._materialCache.addMaterial(H.WaterType,{fabric:{type:H.WaterType,uniforms:{baseWaterColor:new i(.2,.3,.6,1),blendColor:new i(0,1,.699,1),specularMap:H.DefaultImageId,normalMap:H.DefaultImageId,frequency:10,animationSpeed:.01,amplitude:1,specularIntensity:.5,fadeFactor:1},source:A},translucent:function(e){var t=e.uniforms;return t.baseWaterColor.alpha<1||t.blendColor.alpha<0}}),H.RimLightingType="RimLighting",H._materialCache.addMaterial(H.RimLightingType,{fabric:{type:H.RimLightingType,uniforms:{color:new i(1,0,0,.7),rimColor:new i(1,1,1,.4),width:.3},source:T},translucent:function(e){var t=e.uniforms;return t.color.alpha<1||t.rimColor.alpha<0}}),H.FadeType="Fade",H._materialCache.addMaterial(H.FadeType,{fabric:{type:H.FadeType,uniforms:{fadeInColor:new i(1,0,0,1),fadeOutColor:new i(0,0,0,0),maximumDistance:.5,repeat:!0,fadeDirection:{x:!0,y:!0},time:new e(.5,.5)},source:C},translucent:function(e){var t=e.uniforms;return t.fadeInColor.alpha<1||t.fadeOutColor.alpha<0}}),H.PolylineArrowType="PolylineArrow",H._materialCache.addMaterial(H.PolylineArrowType,{fabric:{type:H.PolylineArrowType,uniforms:{color:new i(1,1,1,1)},source:E},translucent:!0}),H.PolylineGlowType="PolylineGlow",H._materialCache.addMaterial(H.PolylineGlowType,{fabric:{type:H.PolylineGlowType,uniforms:{color:new i(0,.5,1,1),glowPower:.25},source:b},translucent:!0}),H.PolylineOutlineType="PolylineOutline",H._materialCache.addMaterial(H.PolylineOutlineType,{fabric:{type:H.PolylineOutlineType,uniforms:{color:new i(1,1,1,1),outlineColor:new i(1,0,0,1),outlineWidth:1},source:x},translucent:function(e){var t=e.uniforms;return t.color.alpha<1||t.outlineColor.alpha<1}}),H}),i("Scene/MaterialAppearance",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/freezeObject","../Core/VertexFormat","../Shaders/Appearances/AllMaterialAppearanceFS","../Shaders/Appearances/AllMaterialAppearanceVS","../Shaders/Appearances/BasicMaterialAppearanceFS","../Shaders/Appearances/BasicMaterialAppearanceVS","../Shaders/Appearances/TexturedMaterialAppearanceFS","../Shaders/Appearances/TexturedMaterialAppearanceVS","./Appearance","./Material"],function(e,t,i,r,n,o,a,s,l,u,c,h,d){"use strict";var p=function(i){i=e(i,e.EMPTY_OBJECT);var r=e(i.translucent,!0),n=e(i.closed,!1),o=e(i.materialSupport,p.MaterialSupport.TEXTURED);this.material=t(i.material)?i.material:d.fromType(d.ColorType),this.translucent=r,this._vertexShaderSource=e(i.vertexShaderSource,o.vertexShaderSource),this._fragmentShaderSource=e(i.fragmentShaderSource,o.fragmentShaderSource),this._renderState=h.getDefaultRenderState(r,n,i.renderState),this._closed=n,this._materialSupport=o,this._vertexFormat=o.vertexFormat,this._flat=e(i.flat,!1),this._faceForward=e(i.faceForward,!n)};return i(p.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},materialSupport:{get:function(){return this._materialSupport}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}}),p.prototype.getFragmentShaderSource=h.prototype.getFragmentShaderSource,p.prototype.isTranslucent=h.prototype.isTranslucent,p.prototype.getRenderState=h.prototype.getRenderState,p.MaterialSupport={BASIC:r({vertexFormat:n.POSITION_AND_NORMAL,vertexShaderSource:l,fragmentShaderSource:s}),TEXTURED:r({vertexFormat:n.POSITION_NORMAL_AND_ST,vertexShaderSource:c,fragmentShaderSource:u}),ALL:r({vertexFormat:n.ALL,vertexShaderSource:a,fragmentShaderSource:o})},p}),i("Shaders/Appearances/PerInstanceColorAppearanceFS",[],function(){"use strict";return"varying vec3 v_positionEC;\nvarying vec3 v_normalEC;\nvarying vec4 v_color;\nvoid main()\n{\nvec3 positionToEyeEC = -v_positionEC;\nvec3 normalEC = normalize(v_normalEC);\n#ifdef FACE_FORWARD\nnormalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);\n#endif\nczm_materialInput materialInput;\nmaterialInput.normalEC = normalEC;\nmaterialInput.positionToEyeEC = positionToEyeEC;\nczm_material material = czm_getDefaultMaterial(materialInput);\nmaterial.diffuse = v_color.rgb;\nmaterial.alpha = v_color.a;\ngl_FragColor = czm_phong(normalize(positionToEyeEC), material);\n}\n"}),i("Shaders/Appearances/PerInstanceColorAppearanceVS",[],function(){"use strict";return"attribute vec3 position3DHigh;\nattribute vec3 position3DLow;\nattribute vec3 normal;\nattribute vec4 color;\nvarying vec3 v_positionEC;\nvarying vec3 v_normalEC;\nvarying vec4 v_color;\nvoid main()\n{\nvec4 p = czm_computePosition();\nv_positionEC = (czm_modelViewRelativeToEye * p).xyz;\nv_normalEC = czm_normal * normal;\nv_color = color;\ngl_Position = czm_modelViewProjectionRelativeToEye * p;\n}\n"}),i("Shaders/Appearances/PerInstanceFlatColorAppearanceFS",[],function(){"use strict";return"varying vec4 v_color;\nvoid main()\n{\ngl_FragColor = v_color;\n}\n"}),i("Shaders/Appearances/PerInstanceFlatColorAppearanceVS",[],function(){"use strict";return"attribute vec3 position3DHigh;\nattribute vec3 position3DLow;\nattribute vec4 color;\nvarying vec4 v_color;\nvoid main()\n{\nvec4 p = czm_computePosition();\nv_color = color;\ngl_Position = czm_modelViewProjectionRelativeToEye * p;\n}\n"}),i("Scene/PerInstanceColorAppearance",["../Core/defaultValue","../Core/defineProperties","../Core/VertexFormat","../Shaders/Appearances/PerInstanceColorAppearanceFS","../Shaders/Appearances/PerInstanceColorAppearanceVS","../Shaders/Appearances/PerInstanceFlatColorAppearanceFS","../Shaders/Appearances/PerInstanceFlatColorAppearanceVS","./Appearance"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(t){t=e(t,e.EMPTY_OBJECT);var i=e(t.translucent,!0),u=e(t.closed,!1),c=e(t.flat,!1),h=c?a:n,d=c?o:r,p=c?l.FLAT_VERTEX_FORMAT:l.VERTEX_FORMAT;this.material=void 0,this.translucent=i,this._vertexShaderSource=e(t.vertexShaderSource,h),this._fragmentShaderSource=e(t.fragmentShaderSource,d),this._renderState=s.getDefaultRenderState(i,u,t.renderState),this._closed=u,this._vertexFormat=p,this._flat=c,this._faceForward=e(t.faceForward,!u)};return t(l.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}}),l.VERTEX_FORMAT=i.POSITION_AND_NORMAL,l.FLAT_VERTEX_FORMAT=i.POSITION_ONLY,l.prototype.getFragmentShaderSource=s.prototype.getFragmentShaderSource,l.prototype.isTranslucent=s.prototype.isTranslucent,l.prototype.getRenderState=s.prototype.getRenderState,l}),i("Scene/PrimitivePipeline",["../Core/BoundingSphere","../Core/Color","../Core/ComponentDatatype","../Core/defaultValue","../Core/defined","../Core/DeveloperError","../Core/Ellipsoid","../Core/FeatureDetection","../Core/GeographicProjection","../Core/Geometry","../Core/GeometryAttribute","../Core/GeometryAttributes","../Core/GeometryPipeline","../Core/IndexDatatype","../Core/Matrix4","../Core/WebMercatorProjection"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f){"use strict";function v(e,t,i){var r,n=!i,o=e.length;if(!n&&o>1){var a=e[0].modelMatrix;for(r=1;o>r;++r)if(!m.equals(a,e[r].modelMatrix)){n=!0;break}}if(n)for(r=0;o>r;++r)d.transformToWorldCoordinates(e[r]);else m.multiplyTransformation(t,e[0].modelMatrix,t)}function g(e,r){var n=e.attributes,o=n.position,a=4*(o.values.length/o.componentsPerAttribute);n.pickColor=new c({componentDatatype:i.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0,values:new Uint8Array(a)});for(var s=t.floatToByte(r.red),l=t.floatToByte(r.green),u=t.floatToByte(r.blue),h=t.floatToByte(r.alpha),d=n.pickColor.values,p=0;a>p;p+=4)d[p]=s,d[p+1]=l,d[p+2]=u,d[p+3]=h}function _(e,t){for(var i=e.length,r=0;i>r;++r){var o=e[r],a=t[r];n(o.geometry)?g(o.geometry,a):(g(o.westHemisphereGeometry,a),g(o.eastHemisphereGeometry,a))}}function y(e){var t,i=e.length,r=[],o=e[0].attributes;for(t in o)if(o.hasOwnProperty(t)){for(var a=o[t],s=!0,l=1;i>l;++l){var u=e[l].attributes[t];if(!n(u)||a.componentDatatype!==u.componentDatatype||a.componentsPerAttribute!==u.componentsPerAttribute||a.normalize!==u.normalize){s=!1;break}}s&&r.push(t)}return r}function C(e,t,r){for(var n=u.computeNumberOfVertices(t),o=r.length,a=0;o>a;++a){for(var s=r[a],l=e[s],h=l.componentDatatype,d=l.value,p=d.length,m=i.createTypedArray(h,n*p),f=0;n>f;++f)m.set(d,f*p);t.attributes[s]=new c({componentDatatype:h,componentsPerAttribute:p,normalize:l.normalize,values:m})}}function w(e,t){for(var i=e.length,r=0;i>r;++r){var o=e[r],a=o.attributes;n(o.geometry)?C(a,o.geometry,t):(C(a,o.westHemisphereGeometry,t),C(a,o.eastHemisphereGeometry,t))}}function S(t){var r,o,a=t.instances,s=t.pickIds,l=t.projection,u=t.elementIndexUintSupported,c=t.scene3DOnly,h=t.allowPicking,p=t.vertexCacheOptimize,m=t.compressVertices,f=t.modelMatrix,g=a.length;if(a[0].geometry.primitiveType,v(a,f,c),!c)for(r=0;g>r;++r)d.splitLongitude(a[r]);h&&_(a,s);var C=y(a);if(w(a,C),p)for(r=0;g>r;++r){var S=a[r];n(S.geometry)?(d.reorderForPostVertexCache(S.geometry),d.reorderForPreVertexCache(S.geometry)):(d.reorderForPostVertexCache(S.westHemisphereGeometry),d.reorderForPreVertexCache(S.westHemisphereGeometry),d.reorderForPostVertexCache(S.eastHemisphereGeometry),d.reorderForPreVertexCache(S.eastHemisphereGeometry))}var E=d.combineInstances(a);for(g=E.length,r=0;g>r;++r){o=E[r];var b,x=o.attributes;if(c)for(b in x)x.hasOwnProperty(b)&&x[b].componentDatatype===i.DOUBLE&&d.encodeAttribute(o,b,b+"3DHigh",b+"3DLow");else for(b in x)if(x.hasOwnProperty(b)&&x[b].componentDatatype===i.DOUBLE){var T=b+"3D",P=b+"2D";d.projectTo2D(o,b,T,P,l),n(o.boundingSphere)&&"position"===b&&(o.boundingSphereCV=e.fromVertices(o.attributes.position2D.values)),d.encodeAttribute(o,T,T+"High",T+"Low"),d.encodeAttribute(o,P,P+"High",P+"Low")}m&&d.compressVertices(o)}if(!u){var A=[];for(g=E.length,r=0;g>r;++r)o=E[r],A=A.concat(d.fitToUnsignedShortIndices(o));E=A}return E}function E(e,t,r){for(var n=[],o=e.attributes,a=r.length,s=0;a>s;++s){var l=r[s],u=o[l],c=u.componentDatatype;c===i.DOUBLE&&(c=i.FLOAT);var h=i.createTypedArray(c,u.values);n.push({index:t[l],componentDatatype:c,componentsPerAttribute:u.componentsPerAttribute,normalize:u.normalize,values:h}),delete o[l]}return n}function b(e,t,i,o,a,s,l,c,h){var d=u.computeNumberOfVertices(t);n(l[e])||(l[e]={boundingSphere:t.boundingSphere,boundingSphereCV:t.boundingSphereCV});for(var p=o.length,m=0;p>m;++m)for(var f=o[m],v=a[f],g=d;g>0;){for(var _,y=r(h[f],0),C=s[y],w=C.length,S=0;w>S&&(_=C[S],_.index!==v);++S);n(l[e][f])||(l[e][f]={dirty:!1,valid:!0,value:i[f].value,indices:[]});var E,b=_.values.length/_.componentsPerAttribute,x=r(c[f],0);b>x+g?(E=g,l[e][f].indices.push({attribute:_,offset:x,count:E}),c[f]=x+g):(E=b-x,l[e][f].indices.push({attribute:_,offset:x,count:E}),c[f]=0,h[f]=y+1),g-=E}}function x(e,t,i,r,o){var a,s,l,u=[],c=e.length,h={},d={};for(a=0;c>a;++a)s=e[a],l=s.attributes,n(s.geometry)&&b(a,s.geometry,l,o,r,i,u,h,d);for(a=0;c>a;++a)s=e[a],l=s.attributes,n(s.westHemisphereGeometry)&&b(a,s.westHemisphereGeometry,l,o,r,i,u,h,d);for(a=0;c>a;++a)s=e[a],l=s.attributes,n(s.eastHemisphereGeometry)&&b(a,s.eastHemisphereGeometry,l,o,r,i,u,h,d);for(c=t.length,a=0;c>a;++a){s=t[a],l=s.attributes;var p={};u.push(p);for(var m=o.length,f=0;m>f;++f){var v=o[f];p[v]={dirty:!1,valid:!1,value:l[v].value,indices:[]}}}return u}function T(e,t){var i=e.attributes;for(var r in i)if(i.hasOwnProperty(r)){var o=i[r];n(o)&&n(o.values)&&t.push(o.values.buffer)}n(e.indices)&&t.push(e.indices.buffer)}function P(e,t){for(var i=e.length,r=0;i>r;++r)T(e[r],t)}function A(e,t){for(var i=e.length,r=0;i>r;++r)for(var n=e[r],o=n.length,a=0;o>a;++a)t.push(n[a].values.buffer)}function D(t){for(var i=1,r=t.length,o=0;r>o;o++){var a=t[o];if(++i,n(a)){var s=a.attributes;i+=6+2*e.packedLength+(n(a.indices)?a.indices.length:0);for(var l in s)if(s.hasOwnProperty(l)&&n(s[l])){var u=s[l];i+=5+u.values.length}}}return i}function M(e,t){for(var i=e.length,r=new Uint32Array(e.length),n=0;i>n;++n)r[n]=e[n].toRgba();return t.push(r.buffer),r}function I(e){for(var i=e.length,r=new Array(i),n=0;i>n;n++)r[n]=t.fromRgba(e[n]);return r}function O(e){for(var t=e.length,i=1+17*t,r=0;t>r;r++){var o=e[r].attributes;for(var a in o)if(o.hasOwnProperty(a)&&n(o[a])){var s=o[a];i+=5+s.value.length}}return i}function R(e,t){var i=new Float64Array(O(e)),r={},o=[],a=e.length,s=0;i[s++]=a;for(var l=0;a>l;l++){var u=e[l];m.pack(u.modelMatrix,i,s),s+=m.packedLength;var c=u.attributes,h=[];for(var d in c)c.hasOwnProperty(d)&&n(c[d])&&(h.push(d),n(r[d])||(r[d]=o.length,o.push(d)));i[s++]=h.length;for(var p=0;pc;c++){for(var h=r[t[a++]],d=t[a++],p=t[a++],f=0!==t[a++],v=t[a++],g=i.createTypedArray(d,v),_=0;v>_;_++)g[_]=t[a++];l[h]={componentDatatype:d,componentsPerAttribute:p,normalize:f,value:g}}n[o++]={attributes:l,modelMatrix:s}}return n}function N(t){for(var i=t.length,r=1+i,o=0;i>o;o++){var a=t[o];r+=2,r+=n(a.boundingSphere)?e.packedLength:0,r+=n(a.boundingSphereCV)?e.packedLength:0;for(var s in a)if(a.hasOwnProperty(s)&&n(a[s])&&"boundingSphere"!==s&&"boundingSphereCV"!==s){var l=a[s];r+=4+3*l.indices.length+l.value.length}}return r}function F(t,i){var r=new Float64Array(N(t)),o=[],a=[],s={},l=t.length,u=0;r[u++]=l;for(var c=0;l>c;c++){var h=t[c],d=h.boundingSphere,p=n(d);r[u++]=p?1:0,p&&(e.pack(d,r,u),u+=e.packedLength),d=h.boundingSphereCV,p=n(d),r[u++]=p?1:0,p&&(e.pack(d,r,u),u+=e.packedLength);var m=[];for(var f in h)h.hasOwnProperty(f)&&n(h[f])&&"boundingSphere"!==f&&"boundingSphereCV"!==f&&(m.push(f),n(s[f])||(s[f]=o.length,o.push(f)));r[u++]=m.length;for(var v=0;vw;w++){var S=y[w];r[u++]=S.count,r[u++]=S.offset;var E=a.indexOf(S.attribute);-1===E&&(E=a.length,a.push(S.attribute)),r[u++]=E}r[u++]=_.value.length,r.set(_.value,u),u+=_.value.length}}return i.push(r.buffer),{stringTable:o,packedData:r,attributeTable:a}}function B(t){for(var r=t.stringTable,n=t.attributeTable,o=t.packedData,a=new Array(o[0]),s=0,l=1,u=o.length;u>l;){var c={},h=1===o[l++];h&&(c.boundingSphere=e.unpack(o,l),l+=e.packedLength),h=1===o[l++],h&&(c.boundingSphereCV=e.unpack(o,l),l+=e.packedLength);for(var d=o[l++],p=0;d>p;p++){for(var m=r[o[l++]],f=1===o[l++],v=o[l++],g=v>0?new Array(v):void 0,_=0;v>_;_++){var y={};y.count=o[l++],y.offset=o[l++],y.attribute=n[o[l++]],g[_]=y}for(var C=o[l++],w=f?i.createTypedArray(g[0].attribute.componentDatatype,C):new Array(C),S=0;C>S;S++)w[S]=o[l++];c[m]={dirty:!1,valid:f,indices:g,value:w}}a[s++]=c}return a}if(!s.supportsTypedArrays())return{};var z={};return z.combineGeometry=function(e){var t,i,r,o,a,s=e.instances,l=e.invalidInstances;if(s.length>0){t=S(e),i=d.createAttributeLocations(t[0]),o=y(s),r=[],a=t.length;for(var u=0;a>u;++u){var c=t[u];r.push(E(c,i,o))}}o=n(o)?o:y(l);var h=x(s,l,r,i,o);return{geometries:t,modelMatrix:e.modelMatrix,attributeLocations:i,vaAttributes:r,vaAttributeLocations:h,validInstancesIndices:e.validInstancesIndices,invalidInstancesIndices:e.invalidInstancesIndices}},z.packCreateGeometryResults=function(t,i){var r=new Float64Array(D(t)),o=[],a={},s=t.length,l=0;r[l++]=s;for(var u=0;s>u;u++){var c=t[u],h=n(c);if(r[l++]=h?1:0,h){r[l++]=c.primitiveType,r[l++]=c.geometryType;var d=n(c.boundingSphere)?1:0;r[l++]=d,d&&e.pack(c.boundingSphere,r,l),l+=e.packedLength;var p=n(c.boundingSphereCV)?1:0;r[l++]=p,p&&e.pack(c.boundingSphereCV,r,l),l+=e.packedLength;var m=c.attributes,f=[];for(var v in m)m.hasOwnProperty(v)&&n(m[v])&&(f.push(v),n(a[v])||(a[v]=o.length,o.push(v)));r[l++]=f.length;for(var g=0;g0&&(r.set(c.indices,l),l+=C)}}return i.push(r.buffer),{stringTable:o,packedData:r}},z.unpackCreateGeometryResults=function(t){for(var r,n=t.stringTable,o=t.packedData,a=new Array(o[0]),s=0,l=1;lr;r++){var x=n[o[l++]],T=o[l++];S=o[l++];var P=0!==o[l++];C=o[l++],w=i.createTypedArray(T,C);for(var A=0;C>A;A++)w[A]=o[l++];E[x]=new c({componentDatatype:T,componentsPerAttribute:S,normalize:P,values:w})}var D;if(C=o[l++],C>0){var M=w.length/S;for(D=p.createTypedArray(M,C),r=0;C>r;r++)D[r]=o[l++]}a[s++]=new u({primitiveType:v,geometryType:g,boundingSphere:m,indices:D,attributes:E})}else a[s++]=void 0}return a},z.packCombineGeometryParameters=function(e,t){for(var i=e.createGeometryResults,r=i.length,n=0;r>n;n++)t.push(i[n].packedData.buffer);var o;return e.allowPicking&&(o=M(e.pickIds,t)),{createGeometryResults:e.createGeometryResults,packedInstances:R(e.instances,t),packedPickIds:o,ellipsoid:e.ellipsoid,isGeographic:e.projection instanceof l,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,allowPicking:e.allowPicking,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix}},z.unpackCombineGeometryParameters=function(e){for(var t=L(e.packedInstances),i=e.allowPicking,r=i?I(e.packedPickIds):void 0,o=e.createGeometryResults,s=o.length,u=0,c=[],h=[],d=[],p=[],v=[],g=0;s>g;g++)for(var _=z.unpackCreateGeometryResults(o[g]),y=_.length,C=0;y>C;C++){var w=_[C],S=t[u]; +n(w)?(S.geometry=w,c.push(S),d.push(u),i&&v.push(r[u])):(h.push(S),p.push(u)),++u}var E=a.clone(e.ellipsoid),b=e.isGeographic?new l(E):new f(E);return{instances:c,invalidInstances:h,validInstancesIndices:d,invalidInstancesIndices:p,pickIds:v,ellipsoid:E,projection:b,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,allowPicking:e.allowPicking,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:m.clone(e.modelMatrix)}},z.packCombineGeometryResults=function(e,t){return n(e.geometries)&&(P(e.geometries,t),A(e.vaAttributes,t)),{geometries:e.geometries,attributeLocations:e.attributeLocations,vaAttributes:e.vaAttributes,packedVaAttributeLocations:F(e.vaAttributeLocations,t),modelMatrix:e.modelMatrix,validInstancesIndices:e.validInstancesIndices,invalidInstancesIndices:e.invalidInstancesIndices}},z.unpackCombineGeometryResults=function(e){return{geometries:e.geometries,attributeLocations:e.attributeLocations,vaAttributes:e.vaAttributes,perInstanceAttributeLocations:B(e.packedVaAttributeLocations,e.vaAttributes),modelMatrix:e.modelMatrix}},z}),i("Scene/PrimitiveState",["../Core/freezeObject"],function(e){"use strict";var t={READY:0,CREATING:1,CREATED:2,COMBINING:3,COMBINED:4,COMPLETE:5,FAILED:6};return e(t)}),i("Scene/Primitive",["../Core/BoundingSphere","../Core/clone","../Core/combine","../Core/ComponentDatatype","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/FeatureDetection","../Core/Geometry","../Core/GeometryAttribute","../Core/GeometryAttributes","../Core/GeometryInstance","../Core/GeometryInstanceAttribute","../Core/isArray","../Core/Matrix4","../Core/subdivideArray","../Core/TaskProcessor","../Renderer/BufferUsage","../Renderer/DrawCommand","../Renderer/ShaderSource","../ThirdParty/when","./CullFace","./Pass","./PrimitivePipeline","./PrimitiveState","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P){"use strict";function A(e){return new h({componentDatatype:e.componentDatatype,componentsPerAttribute:e.componentsPerAttribute,normalize:e.normalize,values:new e.values.constructor(e.values)})}function D(t){var i=t.attributes,r=new d;for(var n in i)i.hasOwnProperty(n)&&o(i[n])&&(r[n]=A(i[n]));var a;if(o(t.indices)){var s=t.indices;a=new s.constructor(s)}return new c({attributes:r,indices:a,primitiveType:t.primitiveType,boundingSphere:e.clone(t.boundingSphere)})}function M(e){return new m({componentDatatype:e.componentDatatype,componentsPerAttribute:e.componentsPerAttribute,normalize:e.normalize,value:new e.value.constructor(e.value)})}function I(e,t){var i=e.attributes,r={};for(var n in i)i.hasOwnProperty(n)&&(r[n]=M(i[n]));return new p({geometry:t,modelMatrix:v.clone(e.modelMatrix),attributes:r,pickPrimitive:e.pickPrimitive,id:e.id})}function O(e,t,i){for(var r,n="",o="",a="";null!==(r=H.exec(t));){var s=r[1],l="vec4 czm_compute"+s[0].toUpperCase()+s.substr(1)+"()";"vec4 czm_computePosition()"!==l&&(n+=l+";\n"),i?a+=l+"\n"+"{\n"+" return czm_translateRelativeToEye("+s+"3DHigh, "+s+"3DLow);\n"+"}\n\n":(o+="attribute vec3 "+s+"2DHigh;\n"+"attribute vec3 "+s+"2DLow;\n",a+=l+"\n"+"{\n"+" vec4 p;\n"+" if (czm_morphTime == 1.0)\n"+" {\n"+" p = czm_translateRelativeToEye("+s+"3DHigh, "+s+"3DLow);\n"+" }\n"+" else if (czm_morphTime == 0.0)\n"+" {\n"+" p = czm_translateRelativeToEye("+s+"2DHigh.zxy, "+s+"2DLow.zxy);\n"+" }\n"+" else\n"+" {\n"+" p = czm_columbusViewMorph(\n"+" czm_translateRelativeToEye("+s+"2DHigh.zxy, "+s+"2DLow.zxy),\n"+" czm_translateRelativeToEye("+s+"3DHigh, "+s+"3DLow),\n"+" czm_morphTime);\n"+" }\n"+" return p;\n"+"}\n\n")}return[n,o,t,a].join("\n")}function R(e){var t=e.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,"void czm_old_main()"),i="attribute vec4 pickColor; \nvarying vec4 czm_pickColor; \nvoid main() \n{ \n czm_old_main(); \n czm_pickColor = pickColor; \n}";return t+"\n"+i}function L(e,t){if(!o(e._attributeLocations.show))return t;var i=t.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,"void czm_non_show_main()"),r="attribute float show;\nvoid main() \n{ \n czm_non_show_main(); \n gl_Position *= show; \n}";return i+"\n"+r}function N(e,t){if(!e.compressVertices)return t;var i=-1!==t.search(/attribute\s+vec3\s+normal;/g),r=-1!==t.search(/attribute\s+vec2\s+st;/g);if(!i&&!r)return t;var n=-1!==t.search(/attribute\s+vec3\s+tangent;/g),o=-1!==t.search(/attribute\s+vec3\s+binormal;/g),a=r&&i?2:1;a+=n||o?1:0;var s=a>1?"vec"+a:"float",l="compressedAttributes",u="attribute "+s+" "+l+";",c="",h="";if(r){c+="vec2 st;\n";var d=a>1?l+".x":l;h+=" st = czm_decompressTextureCoordinates("+d+");\n"}i&&n&&o?(c+="vec3 normal;\nvec3 tangent;\nvec3 binormal;\n",h+=" czm_octDecode("+l+"."+(r?"yz":"xy")+", normal, tangent, binormal);\n"):(i&&(c+="vec3 normal;\n",h+=" normal = czm_octDecode("+l+(a>1?"."+(r?"y":"x"):"")+");\n"),n&&(c+="vec3 tangent;\n",h+=" tangent = czm_octDecode("+l+"."+(r&&i?"z":"y")+");\n"),o&&(c+="vec3 binormal;\n",h+=" binormal = czm_octDecode("+l+"."+(r&&i?"z":"y")+");\n"));var p=t;p=p.replace(/attribute\s+vec3\s+normal;/g,""),p=p.replace(/attribute\s+vec2\s+st;/g,""),p=p.replace(/attribute\s+vec3\s+tangent;/g,""),p=p.replace(/attribute\s+vec3\s+binormal;/g,""),p=p.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,"void czm_non_compressed_main()");var m="void main() \n{ \n"+h+" czm_non_compressed_main(); \n"+"}";return[u,c,p,m].join("\n")}function F(e){e.vertexAttributes}function B(e,t,i){for(var r=[],a=i.length,s=0;a>s;++s){var l={primitive:n(i[s].pickPrimitive,t)};o(i[s].id)&&(l.id=i[s].id);var u=e.createPickId(l);t._pickIds.push(u),r.push(u.color)}return r}function z(e,t){return function(){return e[t]}}function k(e,t){var i=t[e];return function(){return o(i)&&o(i.value)?t[e].value:i}}function V(e,t,i){return function(r){var n=t[e];n.value=r,!n.dirty&&n.valid&&(i.push(n),n.dirty=!0)}}function U(e,t,i,r){e._error=r,e._state=i,t.afterRender.push(function(){e._ready=e._state===T.COMPLETE||e._state===T.FAILED,o(r)?e._readyPromise.reject(r):e._readyPromise.resolve(e)})}var W=function(e){e=n(e,n.EMPTY_OBJECT),this.geometryInstances=e.geometryInstances,this.appearance=e.appearance,this._appearance=void 0,this._material=void 0,this.modelMatrix=v.clone(n(e.modelMatrix,v.IDENTITY)),this._modelMatrix=new v,this.show=n(e.show,!0),this._vertexCacheOptimize=n(e.vertexCacheOptimize,!1),this._interleave=n(e.interleave,!1),this._releaseGeometryInstances=n(e.releaseGeometryInstances,!0),this._allowPicking=n(e.allowPicking,!0),this._asynchronous=n(e.asynchronous,!0),this._compressVertices=n(e.compressVertices,!0),this.cull=n(e.cull,!0),this.debugShowBoundingVolume=n(e.debugShowBoundingVolume,!1),this._translucent=void 0,this._state=T.READY,this._geometries=[],this._vaAttributes=void 0,this._error=void 0,this._numberOfInstances=0,this._validModelMatrix=!1,this._boundingSpheres=[],this._boundingSphereWC=[],this._boundingSphereCV=[],this._boundingSphere2D=[],this._boundingSphereMorph=[],this._perInstanceAttributeLocations=void 0,this._perInstanceAttributeCache=[],this._instanceIds=[],this._lastPerInstanceAttributeIndex=0,this._dirtyAttributes=[],this._va=[],this._attributeLocations=void 0,this._primitiveType=void 0,this._frontFaceRS=void 0,this._backFaceRS=void 0,this._sp=void 0,this._pickRS=void 0,this._pickSP=void 0,this._pickIds=[],this._colorCommands=[],this._pickCommands=[],this._createGeometryResults=void 0,this._ready=!1,this._readyPromise=S.defer()};a(W.prototype,{vertexCacheOptimize:{get:function(){return this._vertexCacheOptimize}},interleave:{get:function(){return this._interleave}},releaseGeometryInstances:{get:function(){return this._releaseGeometryInstances}},allowPicking:{get:function(){return this._allowPicking}},asynchronous:{get:function(){return this._asynchronous}},compressVertices:{get:function(){return this._compressVertices}},ready:{get:function(){return this._ready}},readyPromise:{get:function(){return this._readyPromise}}});var G,H=/attribute\s+vec(?:3|4)\s+(.*)3DHigh;/g,q=Math.max(u.hardwareConcurrency-1,1),j=new _("combineGeometry",Number.POSITIVE_INFINITY);return W.prototype.update=function(a,s,u){if(!(!o(this.geometryInstances)&&0===this._va.length||o(this.geometryInstances)&&f(this.geometryInstances)&&0===this.geometryInstances.length||!o(this.appearance)||s.mode!==P.SCENE3D&&s.scene3DOnly||!s.passes.render&&!s.passes.pick)){if(o(this._error))throw this._error;if(this._state!==T.FAILED){var c,h,d,p,m,A,M,k,V,W,H,Y,X,Z,J=s.mapProjection,Q=this.allowPicking,K=this._instanceIds,$=s.scene3DOnly,et=this;if(this._state!==T.COMPLETE&&this._state!==T.COMBINED)if(this.asynchronous){if(this._state===T.READY){Y=f(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],this._numberOfInstances=A=Y.length;var tt=[],it=[];for(M=0;A>M;++M)d=Y[M].geometry,K.push(Y[M].id),it.push({moduleName:d._workerName,geometry:d});if(!o(G))for(G=new Array(q),M=0;q>M;M++)G[M]=new _("createGeometry",Number.POSITIVE_INFINITY);var rt;for(it=g(it,q),M=0;Mk;++k)rt=ot[k],d=rt.geometry,o(d.constructor.pack)&&(rt.offset=nt,nt+=n(d.constructor.packedLength,d.packedLength));var st;if(nt>0){var lt=new Float64Array(nt);for(st=[lt.buffer],k=0;at>k;++k)rt=ot[k],d=rt.geometry,o(d.constructor.pack)&&(d.constructor.pack(d,lt,rt.offset),rt.geometry=lt)}tt.push(G[M].scheduleTask({subTasks:it[M]},st))}this._state=T.CREATING,S.all(tt,function(e){et._createGeometryResults=e,et._state=T.CREATED}).otherwise(function(e){U(et,s,T.FAILED,e)})}else if(this._state===T.CREATED){var ut=[];Y=f(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],W=j.scheduleTask(x.packCombineGeometryParameters({createGeometryResults:this._createGeometryResults,instances:Y,pickIds:Q?B(a,this,Y):void 0,ellipsoid:J.ellipsoid,projection:J,elementIndexUintSupported:a.elementIndexUint,scene3DOnly:$,allowPicking:Q,vertexCacheOptimize:this.vertexCacheOptimize,compressVertices:this.compressVertices,modelMatrix:this.modelMatrix},ut),ut),this._createGeometryResults=void 0,this._state=T.COMBINING,S(W,function(e){var t=x.unpackCombineGeometryResults(e);et._geometries=t.geometries,et._attributeLocations=t.attributeLocations,et._vaAttributes=t.vaAttributes,et._perInstanceAttributeLocations=t.perInstanceAttributeLocations,et.modelMatrix=v.clone(t.modelMatrix,et.modelMatrix),et._validModelMatrix=!v.equals(et.modelMatrix,v.IDENTITY);for(var i=e.validInstancesIndices,r=e.invalidInstancesIndices,n=et._instanceIds,a=new Array(n.length),l=i.length,u=0;l>u;++u)a[u]=n[i[u]];for(var c=r.length,h=0;c>h;++h)a[l+h]=n[r[h]];et._instanceIds=a,o(et._geometries)?et._state=T.COMBINED:U(et,s,T.FAILED,void 0)}).otherwise(function(e){U(et,s,T.FAILED,e)})}}else{Y=f(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],this._numberOfInstances=A=Y.length,Z=new Array(A),X=new Array(A);var ct=[],ht=0;for(M=0;A>M;M++){H=Y[M],d=H.geometry;var dt;dt=o(d.attributes)&&o(d.primitiveType)?D(d):d.constructor.createGeometry(d),o(dt)?(Z[ht]=dt,X[ht++]=I(H,dt),K.push(H.id)):ct.push(H)}Z.length=ht,X.length=ht;var pt=x.combineGeometry({instances:X,invalidInstances:ct,pickIds:Q?B(a,this,X):void 0,ellipsoid:J.ellipsoid,projection:J,elementIndexUintSupported:a.elementIndexUint,scene3DOnly:$,allowPicking:Q,vertexCacheOptimize:this.vertexCacheOptimize,compressVertices:this.compressVertices,modelMatrix:this.modelMatrix});for(this._geometries=pt.geometries,this._attributeLocations=pt.attributeLocations,this._vaAttributes=pt.vaAttributes,this._perInstanceAttributeLocations=pt.vaAttributeLocations,this.modelMatrix=v.clone(pt.modelMatrix,this.modelMatrix),this._validModelMatrix=!v.equals(this.modelMatrix,v.IDENTITY),M=0;MM;++M){d=Z[M],p=ft[M];var gt=p.length;for(k=0;gt>k;++k)m=p[k],m.vertexBuffer=a.createVertexBuffer(m.values,y.DYNAMIC_DRAW),delete m.values;if(vt.push(a.createVertexArrayFromGeometry({geometry:d,attributeLocations:mt,bufferUsage:y.STATIC_DRAW,interleave:this._interleave,vertexArrayAttributes:p})),this._boundingSpheres.push(e.clone(d.boundingSphere)),this._boundingSphereWC.push(new e),!$){var _t=d.boundingSphereCV.center,yt=_t.x,Ct=_t.y,wt=_t.z;_t.x=wt,_t.y=yt,_t.z=Ct,this._boundingSphereCV.push(e.clone(d.boundingSphereCV)),this._boundingSphere2D.push(new e),this._boundingSphereMorph.push(new e)}}this._va=vt,this._primitiveType=Z[0].primitiveType,this.releaseGeometryInstances&&(this.geometryInstances=void 0),this._geometries=void 0,U(this,s,T.COMPLETE,void 0)}if(this.show&&this._state===T.COMPLETE){var St=this.appearance,Et=St.material,bt=!1,xt=!1;this._appearance!==St?(this._appearance=St,this._material=Et,bt=!0,xt=!0):this._material!==Et&&(this._material=Et,xt=!0);var Tt=this._appearance.isTranslucent();this._translucent!==Tt&&(this._translucent=Tt,bt=!0),o(this._material)&&this._material.update(a);var Pt=St.closed&&Tt;if(bt){var At,Dt=St.getRenderState();Pt?(At=t(Dt,!1),At.cull={enabled:!0,face:E.BACK},this._frontFaceRS=a.createRenderState(At),At.cull.face=E.FRONT,this._backFaceRS=a.createRenderState(At)):(this._frontFaceRS=a.createRenderState(Dt),this._backFaceRS=this._frontFaceRS),Q?Pt?(At=t(Dt,!1),At.cull={enabled:!1},this._pickRS=a.createRenderState(At)):this._pickRS=this._frontFaceRS:(At=t(Dt,!1),At.colorMask={red:!1,green:!1,blue:!1,alpha:!1},Pt?(At.cull={enabled:!1},this._pickRS=a.createRenderState(At)):this._pickRS=a.createRenderState(At))}if(xt){var Mt=O(this,St.vertexShaderSource,$);Mt=L(this,Mt),Mt=N(this,Mt);var It=St.getFragmentShaderSource();if(this._sp=a.replaceShaderProgram(this._sp,Mt,It,mt),F(this._sp,mt),Q){var Ot=new w({sources:[It],pickColorQualifier:"varying"});this._pickSP=a.replaceShaderProgram(this._pickSP,R(Mt),Ot,mt)}else this._pickSP=a.createShaderProgram(Mt,It,mt);F(this._pickSP,mt)}var Rt=this._colorCommands,Lt=this._pickCommands;if(bt||xt){var Nt=o(Et)?Et._uniforms:void 0,Ft={},Bt=St.uniforms;if(o(Bt))for(var zt in Bt)if(Bt.hasOwnProperty(zt)){if(o(Nt)&&o(Nt[zt]))throw new l("Appearance and material have a uniform with the same name: "+zt);Ft[zt]=z(Bt,zt)}var kt=i(Ft,Nt),Vt=Tt?b.TRANSLUCENT:b.OPAQUE;Rt.length=this._va.length*(Pt?2:1),Lt.length=this._va.length,A=Rt.length;var Ut=0,Wt=0;for(M=0;A>M;++M)Pt&&(c=Rt[M],o(c)||(c=Rt[M]=new C({owner:this,primitiveType:this._primitiveType})),c.vertexArray=this._va[Wt],c.renderState=this._backFaceRS,c.shaderProgram=this._sp,c.uniformMap=kt,c.pass=Vt,++M),c=Rt[M],o(c)||(c=Rt[M]=new C({owner:this,primitiveType:this._primitiveType})),c.vertexArray=this._va[Wt],c.renderState=this._frontFaceRS,c.shaderProgram=this._sp,c.uniformMap=kt,c.pass=Vt,h=Lt[Ut],o(h)||(h=Lt[Ut]=new C({owner:this,primitiveType:this._primitiveType})),h.vertexArray=this._va[Wt],h.renderState=this._pickRS,h.shaderProgram=this._pickSP,h.uniformMap=kt,h.pass=Vt,++Ut,++Wt}if(this._dirtyAttributes.length>0){for(p=this._dirtyAttributes,A=p.length,M=0;A>M;++M){m=p[M];var Gt=m.value,Ht=m.indices,qt=Ht.length;for(k=0;qt>k;++k){V=Ht[k];for(var jt=V.offset,Yt=V.count,Xt=V.attribute,Zt=Xt.componentDatatype,Jt=Xt.componentsPerAttribute,Qt=r.createTypedArray(Zt,Yt*Jt),Kt=0;Yt>Kt;++Kt)Qt.set(Gt,Kt*Jt);var $t=jt*Jt*r.getSizeInBytes(Zt);Xt.vertexBuffer.copyFromArrayView(Qt,$t)}m.dirty=!1}p.length=0}var ei=this.modelMatrix;if(!v.equals(ei,this._modelMatrix))for(v.clone(ei,this._modelMatrix),A=this._boundingSpheres.length,M=0;A>M;++M){var ti=this._boundingSpheres[M];o(ti)&&(this._boundingSphereWC[M]=e.transform(ti,ei,this._boundingSphereWC[M]),$||(this._boundingSphere2D[M]=e.clone(this._boundingSphereCV[M],this._boundingSphere2D[M]),this._boundingSphere2D[M].center.x=0,this._boundingSphereMorph[M]=e.union(this._boundingSphereWC[M],this._boundingSphereCV[M])))}var ii;s.mode===P.SCENE3D?ii=this._boundingSphereWC:s.mode===P.COLUMBUS_VIEW?ii=this._boundingSphereCV:s.mode===P.SCENE2D&&o(this._boundingSphere2D)?ii=this._boundingSphere2D:o(this._boundingSphereMorph)&&(ii=this._boundingSphereMorph);var ri=s.passes;if(ri.render)for(A=Rt.length,M=0;A>M;++M){var ni=Pt?Math.floor(M/2):M;Rt[M].modelMatrix=ei,Rt[M].boundingVolume=ii[ni],Rt[M].cull=this.cull,Rt[M].debugShowBoundingVolume=this.debugShowBoundingVolume,u.push(Rt[M])}if(ri.pick)for(A=Lt.length,M=0;A>M;++M)Lt[M].modelMatrix=ei,Lt[M].boundingVolume=ii[M],Lt[M].cull=this.cull,u.push(Lt[M])}}}},W.prototype.getGeometryInstanceAttributes=function(e){for(var t=-1,i=this._lastPerInstanceAttributeIndex,r=this._instanceIds,n=r.length,s=0;n>s;++s){var l=(i+s)%n;if(e===r[l]){t=l;break}}if(-1===t)return void 0;var u=this._perInstanceAttributeCache[t];if(o(u))return u;var c=this._perInstanceAttributeLocations[t];u={};var h={},d=!1;for(var p in c)c.hasOwnProperty(p)&&(d=!0,h[p]={get:k(p,c)},"boundingSphere"!==p&&"boundingSphereCV"!==p&&(h[p].set=V(p,c,this._dirtyAttributes)));return d&&a(u,h),this._lastPerInstanceAttributeIndex=t,this._perInstanceAttributeCache[t]=u,u},W.prototype.isDestroyed=function(){return!1},W.prototype.destroy=function(){var e,t;this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy();var i=this._va;for(e=i.length,t=0;e>t;++t)i[t].destroy();this._va=void 0;var r=this._pickIds;for(e=r.length,t=0;e>t;++t)r[t].destroy();return this._pickIds=void 0,s(this)},W}),i("DataSources/ColorMaterialProperty",["../Core/Color","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./ConstantProperty","./createPropertyDescriptor","./Property"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(e){this._definitionChanged=new n,this._color=void 0,this._colorSubscription=void 0,this.color=e};return i(l.prototype,{isConstant:{get:function(){return s.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:a("color")}),l.prototype.getType=function(){return"Color"},l.prototype.getValue=function(i,r){return t(r)||(r={}),r.color=s.getValueOrClonedDefault(this._color,i,e.WHITE,r.color),r},l.prototype.equals=function(e){return this===e||e instanceof l&&s.equals(this._color,e._color)},l}),i("DataSources/dynamicGeometryGetBoundingSphere",["../Core/BoundingSphere","../Core/defined","../Core/DeveloperError","./BoundingSphereState"],function(e,t,i,r){"use strict";var n=function(i,n,o,a){var s;return t(n)&&n.show&&n.ready&&(s=n.getGeometryInstanceAttributes(i),t(s)&&t(s.boundingSphere))?(e.transform(s.boundingSphere,n.modelMatrix,a),r.DONE):t(o)&&o.show&&o.ready&&(s=o.getGeometryInstanceAttributes(i),t(s)&&t(s.boundingSphere))?(e.transform(s.boundingSphere,o.modelMatrix,a),r.DONE):t(n)&&!n.ready||t(o)&&!o.ready?r.PENDING:r.FAILED};return n}),i("DataSources/MaterialProperty",["../Core/Color","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Scene/Material"],function(e,t,i,r,n){"use strict";var o=function(){r.throwInstantiationError()};return i(o.prototype,{isConstant:{get:r.throwInstantiationError},definitionChanged:{get:r.throwInstantiationError}}),o.prototype.getType=r.throwInstantiationError,o.prototype.getValue=r.throwInstantiationError,o.prototype.equals=r.throwInstantiationError,o.getValue=function(i,r,o){var a;return t(r)&&(a=r.getType(i),t(a))?(t(o)&&o.type===a||(o=n.fromType(a)),r.getValue(i,o.uniforms),o):(t(o)&&o.type===n.ColorType||(o=n.fromType(n.ColorType)),e.clone(e.WHITE,o.uniforms.color),o)},o}),i("DataSources/BoxGeometryUpdater",["../Core/BoxGeometry","../Core/BoxOutlineGeometry","../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../Core/GeometryInstance","../Core/Iso8601","../Core/ShowGeometryInstanceAttribute","../Scene/MaterialAppearance","../Scene/PerInstanceColorAppearance","../Scene/Primitive","./ColorMaterialProperty","./ConstantProperty","./dynamicGeometryGetBoundingSphere","./MaterialProperty","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C){"use strict";var w=new v(i.WHITE),S=new g(!0),E=new g(!0),b=new g(!1),x=new g(i.BLACK),T=new i,P=function(e){this.id=e,this.vertexFormat=void 0,this.dimensions=void 0},A=function(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(A.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new u,this._showProperty=void 0,this._materialProperty=void 0,this._hasConstantOutline=!0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._options=new P(e),this._onEntityPropertyChanged(e,"box",e.box,void 0)};a(A,{perInstanceColorAppearanceType:{value:m},materialAppearanceType:{value:p}}),a(A.prototype,{entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!o(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!o(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!0},geometryChanged:{get:function(){return this._geometryChanged}}}),A.prototype.isOutlineVisible=function(e){var t=this._entity;return this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)},A.prototype.isFilled=function(e){var t=this._entity;return this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)},A.prototype.createFillGeometryInstance=function(t){var n,a,s=this._entity,l=s.isAvailable(t),u=new d(l&&s.isShowing&&this._showProperty.getValue(t)&&this._fillProperty.getValue(t));if(this._materialProperty instanceof v){var p=i.WHITE;o(this._materialProperty.color)&&(this._materialProperty.color.isConstant||l)&&(p=this._materialProperty.color.getValue(t)),a=r.fromColor(p),n={show:u,color:a}}else n={show:u};return new c({id:s,geometry:e.fromDimensions(this._options),modelMatrix:s._getModelMatrix(h.MINIMUM_VALUE),attributes:n})},A.prototype.createOutlineGeometryInstance=function(e){var n=this._entity,o=n.isAvailable(e),a=C.getValueOrDefault(this._outlineColorProperty,e,i.BLACK);return new c({id:n,geometry:t.fromDimensions(this._options),modelMatrix:n._getModelMatrix(h.MINIMUM_VALUE),attributes:{show:new d(o&&n.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:r.fromColor(a)}})},A.prototype.isDestroyed=function(){return!1},A.prototype.destroy=function(){this._entitySubscription(),s(this)},A.prototype._onEntityPropertyChanged=function(e,t){if("availability"===t||"position"===t||"orientation"===t||"box"===t){var i=this._entity.box;if(!o(i))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var r=i.fill,a=o(r)&&r.isConstant?r.getValue(h.MINIMUM_VALUE):!0,s=i.outline,l=o(s);if(l&&s.isConstant&&(l=s.getValue(h.MINIMUM_VALUE)),!a&&!l)return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var u=i.dimensions,c=e.position,d=i.show;if(!o(u)||!o(c)||o(d)&&d.isConstant&&!d.getValue(h.MINIMUM_VALUE))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var f=n(i.material,w),g=f instanceof v;this._materialProperty=f,this._fillProperty=n(r,E),this._showProperty=n(d,S),this._showOutlineProperty=n(i.outline,b),this._outlineColorProperty=l?n(i.outlineColor,x):void 0;var _=i.outlineWidth;if(this._fillEnabled=a,this._outlineEnabled=l,c.isConstant&&C.isConstant(e.orientation)&&u.isConstant&&C.isConstant(_)){var y=this._options;y.vertexFormat=g?m.VERTEX_FORMAT:p.MaterialSupport.TEXTURED.vertexFormat,y.dimensions=u.getValue(h.MINIMUM_VALUE,y.dimensions),this._outlineWidth=o(_)?_.getValue(h.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}else this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this))}},A.prototype.createDynamicUpdater=function(e){return new D(e,this)};var D=function(e,t){this._primitives=e,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=t,this._options=new P(t._entity)};return D.prototype.update=function(n){var a=this._primitives;a.removeAndDestroy(this._primitive),a.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0;var s=this._geometryUpdater,l=s._entity,u=l.box;if(l.isShowing&&l.isAvailable(n)&&C.getValueOrDefault(u.show,n,!0)){var h=this._options,d=l._getModelMatrix(n),v=C.getValueOrUndefined(u.dimensions,n,h.dimensions);if(o(d)&&o(v)){if(h.dimensions=v,C.getValueOrDefault(u.fill,n,!0)){var g=y.getValue(n,s.fillMaterialProperty,this._material);this._material=g;var _=new p({material:g,translucent:g.isTranslucent(),closed:!0});h.vertexFormat=_.vertexFormat,this._primitive=a.add(new f({geometryInstances:new c({id:l,geometry:e.fromDimensions(h),modelMatrix:d}),appearance:_,asynchronous:!1}))}if(C.getValueOrDefault(u.outline,n,!1)){h.vertexFormat=m.VERTEX_FORMAT;var w=C.getValueOrClonedDefault(u.outlineColor,n,i.BLACK,T),S=C.getValueOrDefault(u.outlineWidth,n,1),E=1!==w.alpha;this._outlinePrimitive=a.add(new f({geometryInstances:new c({id:l,geometry:t.fromDimensions(h),modelMatrix:d,attributes:{color:r.fromColor(w)}}),appearance:new m({flat:!0,translucent:E,renderState:{lineWidth:s._scene.clampLineWidth(S)}}),asynchronous:!1}))}}}},D.prototype.getBoundingSphere=function(e,t){return _(e,this._primitive,this._outlinePrimitive,t)},D.prototype.isDestroyed=function(){return!1},D.prototype.destroy=function(){var e=this._primitives;e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),s(this)},A}),i("DataSources/ImageMaterialProperty",["../Core/Cartesian2","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/Event","./createPropertyDescriptor","./Property"],function(e,t,i,r,n,o,a){"use strict";var s=new e(1,1),l=function(e){e=t(e,t.EMPTY_OBJECT),this._definitionChanged=new n,this._image=void 0,this._imageSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.image=e.image,this.repeat=e.repeat};return r(l.prototype,{isConstant:{get:function(){return a.isConstant(this._image)&&a.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},image:o("image"),repeat:o("repeat")}),l.prototype.getType=function(){return"Image"},l.prototype.getValue=function(e,t){return i(t)||(t={}),t.image=a.getValueOrUndefined(this._image,e),t.repeat=a.getValueOrClonedDefault(this._repeat,e,s,t.repeat),t},l.prototype.equals=function(e){return this===e||e instanceof l&&a.equals(this._image,e._image)&&a.equals(this._repeat,e._repeat)},l}),i("DataSources/createMaterialPropertyDescriptor",["../Core/Color","../Core/DeveloperError","./ColorMaterialProperty","./createPropertyDescriptor","./ImageMaterialProperty"],function(e,t,i,r,n){"use strict";function o(t){if(t instanceof e)return new i(t);if("string"==typeof t||t instanceof HTMLCanvasElement){var r=new n;return r.image=t,r}}function a(e,t){return r(e,t,o)}return a}),i("DataSources/BoxGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createMaterialPropertyDescriptor","./createPropertyDescriptor"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){this._dimensions=void 0,this._dimensionsSubscription=void 0,this._show=void 0,this._showSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(s.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:a("show"),dimensions:a("dimensions"),material:o("material"),fill:a("fill"),outline:a("outline"),outlineColor:a("outlineColor"),outlineWidth:a("outlineWidth")}),s.prototype.clone=function(e){return t(e)?(e.dimensions=this.dimensions,e.show=this.show,e.material=this.material,e.fill=this.fill,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e):new s(this)},s.prototype.merge=function(t){this.dimensions=e(this.dimensions,t.dimensions),this.show=e(this.show,t.show),this.material=e(this.material,t.material),this.fill=e(this.fill,t.fill),this.outline=e(this.outline,t.outline),this.outlineColor=e(this.outlineColor,t.outlineColor),this.outlineWidth=e(this.outlineWidth,t.outlineWidth)},s}),i("DataSources/CallbackProperty",["../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event"],function(e,t,i,r){"use strict";var n=function(e,t){this._callback=void 0,this._isConstant=void 0,this._definitionChanged=new r,this.setCallback(e,t)};return t(n.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}}}),n.prototype.getValue=function(e,t){return this._callback(e,t)},n.prototype.setCallback=function(e,t){var i=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,i&&this._definitionChanged.raiseEvent(this)},n.prototype.equals=function(e){return this===e||e instanceof n&&this._callback===e._callback&&this._isConstant===e._isConstant},n}),i("DataSources/CheckerboardMaterialProperty",["../Core/Cartesian2","../Core/Color","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/Event","./createPropertyDescriptor","./Property"],function(e,t,i,r,n,o,a,s){"use strict";var l=t.WHITE,u=t.BLACK,c=new e(2,2),h=function(e){e=i(e,i.EMPTY_OBJECT),this._definitionChanged=new o,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.repeat=e.repeat};return n(h.prototype,{isConstant:{get:function(){return s.isConstant(this._evenColor)&&s.isConstant(this._oddColor)&&s.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},evenColor:a("evenColor"),oddColor:a("oddColor"),repeat:a("repeat")}),h.prototype.getType=function(){return"Checkerboard"},h.prototype.getValue=function(e,t){return r(t)||(t={}),t.lightColor=s.getValueOrClonedDefault(this._evenColor,e,l,t.lightColor),t.darkColor=s.getValueOrClonedDefault(this._oddColor,e,u,t.darkColor),t.repeat=s.getValueOrDefault(this._repeat,e,c),t},h.prototype.equals=function(e){return this===e||e instanceof h&&s.equals(this._evenColor,e._evenColor)&&s.equals(this._oddColor,e._oddColor)&&s.equals(this._repeat,e._repeat)},h}),i("DataSources/PositionProperty",["../Core/Cartesian3","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Matrix3","../Core/ReferenceFrame","../Core/Transforms"],function(e,t,i,r,n,o,a){"use strict";var s=function(){r.throwInstantiationError()};i(s.prototype,{isConstant:{get:r.throwInstantiationError},definitionChanged:{get:r.throwInstantiationError},referenceFrame:{get:r.throwInstantiationError}}),s.prototype.getValue=r.throwInstantiationError,s.prototype.getValueInReferenceFrame=r.throwInstantiationError,s.prototype.equals=r.throwInstantiationError; +var l=new n;return s.convertToReferenceFrame=function(i,r,s,u,c){if(!t(r))return r;if(t(c)||(c=new e),s===u)return e.clone(r,c);var h=a.computeIcrfToFixedMatrix(i,l);return t(h)||(h=a.computeTemeToPseudoFixedMatrix(i,l)),s===o.INERTIAL?n.multiplyByVector(h,r,c):s===o.FIXED?n.multiplyByVector(n.transpose(h,l),r,c):void 0},s}),i("DataSources/ConstantPositionProperty",["../Core/Cartesian3","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/ReferenceFrame","./PositionProperty"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(i,r){this._definitionChanged=new o,this._value=e.clone(i),this._referenceFrame=t(r,a.FIXED)};return r(l.prototype,{isConstant:{get:function(){return!i(this._value)||this._referenceFrame===a.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}}),l.prototype.getValue=function(e,t){return this.getValueInReferenceFrame(e,a.FIXED,t)},l.prototype.setValue=function(t,r){var n=!1;e.equals(this._value,t)||(n=!0,this._value=e.clone(t)),i(r)&&this._referenceFrame!==r&&(n=!0,this._referenceFrame=r),n&&this._definitionChanged.raiseEvent(this)},l.prototype.getValueInReferenceFrame=function(e,t,i){return s.convertToReferenceFrame(e,this._value,this._referenceFrame,t,i)},l.prototype.equals=function(t){return this===t||t instanceof l&&e.equals(this._value,t._value)&&this._referenceFrame===t._referenceFrame},l}),i("DataSources/CorridorGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createMaterialPropertyDescriptor","./createPropertyDescriptor"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){this._show=void 0,this._showSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(s.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:a("show"),material:o("material"),positions:a("positions"),height:a("height"),extrudedHeight:a("extrudedHeight"),granularity:a("granularity"),width:a("width"),fill:a("fill"),outline:a("outline"),outlineColor:a("outlineColor"),outlineWidth:a("outlineWidth"),cornerType:a("cornerType")}),s.prototype.clone=function(e){return t(e)?(e.show=this.show,e.material=this.material,e.positions=this.positions,e.height=this.height,e.extrudedHeight=this.extrudedHeight,e.granularity=this.granularity,e.width=this.width,e.fill=this.fill,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.cornerType=this.cornerType,e):new s(this)},s.prototype.merge=function(t){this.show=e(this.show,t.show),this.material=e(this.material,t.material),this.positions=e(this.positions,t.positions),this.height=e(this.height,t.height),this.extrudedHeight=e(this.extrudedHeight,t.extrudedHeight),this.granularity=e(this.granularity,t.granularity),this.width=e(this.width,t.width),this.fill=e(this.fill,t.fill),this.outline=e(this.outline,t.outline),this.outlineColor=e(this.outlineColor,t.outlineColor),this.outlineWidth=e(this.outlineWidth,t.outlineWidth),this.cornerType=e(this.cornerType,t.cornerType)},s}),i("DataSources/createRawPropertyDescriptor",["./createPropertyDescriptor"],function(e){"use strict";function t(e){return e}function i(i,r){return e(i,r,t)}return i}),i("DataSources/CylinderGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createMaterialPropertyDescriptor","./createPropertyDescriptor"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){this._length=void 0,this._lengthSubscription=void 0,this._topRadius=void 0,this._topRadiusSubscription=void 0,this._bottomRadius=void 0,this._bottomRadiusSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._slices=void 0,this._slicesSubscription=void 0,this._show=void 0,this._showSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(s.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},length:a("length"),topRadius:a("topRadius"),bottomRadius:a("bottomRadius"),numberOfVerticalLines:a("numberOfVerticalLines"),slices:a("slices"),show:a("show"),material:o("material"),fill:a("fill"),outline:a("outline"),outlineColor:a("outlineColor"),outlineWidth:a("outlineWidth")}),s.prototype.clone=function(e){return t(e)?(e.bottomRadius=this.bottomRadius,e.length=this.length,e.topRadius=this.topRadius,e.show=this.show,e.material=this.material,e.numberOfVerticalLines=this.numberOfVerticalLines,e.slices=this.slices,e.fill=this.fill,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e):new s(this)},s.prototype.merge=function(t){this.bottomRadius=e(this.bottomRadius,t.bottomRadius),this.length=e(this.length,t.length),this.topRadius=e(this.topRadius,t.topRadius),this.show=e(this.show,t.show),this.material=e(this.material,t.material),this.numberOfVerticalLines=e(this.numberOfVerticalLines,t.numberOfVerticalLines),this.slices=e(this.slices,t.slices),this.fill=e(this.fill,t.fill),this.outline=e(this.outline,t.outline),this.outlineColor=e(this.outlineColor,t.outlineColor),this.outlineWidth=e(this.outlineWidth,t.outlineWidth)},s}),i("DataSources/EllipseGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createMaterialPropertyDescriptor","./createPropertyDescriptor"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){this._semiMajorAxis=void 0,this._semiMajorAxisSubscription=void 0,this._semiMinorAxis=void 0,this._semiMinorAxisSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._show=void 0,this._showSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(s.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},semiMajorAxis:a("semiMajorAxis"),semiMinorAxis:a("semiMinorAxis"),rotation:a("rotation"),show:a("show"),material:o("material"),height:a("height"),extrudedHeight:a("extrudedHeight"),granularity:a("granularity"),stRotation:a("stRotation"),fill:a("fill"),outline:a("outline"),outlineColor:a("outlineColor"),outlineWidth:a("outlineWidth"),numberOfVerticalLines:a("numberOfVerticalLines")}),s.prototype.clone=function(e){return t(e)?(e.rotation=this.rotation,e.semiMajorAxis=this.semiMajorAxis,e.semiMinorAxis=this.semiMinorAxis,e.show=this.show,e.material=this.material,e.height=this.height,e.extrudedHeight=this.extrudedHeight,e.granularity=this.granularity,e.stRotation=this.stRotation,e.fill=this.fill,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e):new s(this)},s.prototype.merge=function(t){this.rotation=e(this.rotation,t.rotation),this.semiMajorAxis=e(this.semiMajorAxis,t.semiMajorAxis),this.semiMinorAxis=e(this.semiMinorAxis,t.semiMinorAxis),this.show=e(this.show,t.show),this.material=e(this.material,t.material),this.height=e(this.height,t.height),this.extrudedHeight=e(this.extrudedHeight,t.extrudedHeight),this.granularity=e(this.granularity,t.granularity),this.stRotation=e(this.stRotation,t.stRotation),this.fill=e(this.fill,t.fill),this.outline=e(this.outline,t.outline),this.outlineColor=e(this.outlineColor,t.outlineColor),this.outlineWidth=e(this.outlineWidth,t.outlineWidth),this.numberOfVerticalLines=e(this.numberOfVerticalLines,t.numberOfVerticalLines)},s}),i("DataSources/EllipsoidGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createMaterialPropertyDescriptor","./createPropertyDescriptor"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){this._show=void 0,this._showSubscription=void 0,this._radii=void 0,this._radiiSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._stackPartitions=void 0,this._stackPartitionsSubscription=void 0,this._slicePartitions=void 0,this._slicePartitionsSubscription=void 0,this._subdivisions=void 0,this._subdivisionsSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(s.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:a("show"),radii:a("radii"),material:o("material"),fill:a("fill"),outline:a("outline"),outlineColor:a("outlineColor"),outlineWidth:a("outlineWidth"),stackPartitions:a("stackPartitions"),slicePartitions:a("slicePartitions"),subdivisions:a("subdivisions")}),s.prototype.clone=function(e){return t(e)?(e.show=this.show,e.radii=this.radii,e.material=this.material,e.fill=this.fill,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.stackPartitions=this.stackPartitions,e.slicePartitions=this.slicePartitions,e.subdivisions=this.subdivisions,e):new s(this)},s.prototype.merge=function(t){this.show=e(this.show,t.show),this.radii=e(this.radii,t.radii),this.material=e(this.material,t.material),this.fill=e(this.fill,t.fill),this.outline=e(this.outline,t.outline),this.outlineColor=e(this.outlineColor,t.outlineColor),this.outlineWidth=e(this.outlineWidth,t.outlineWidth),this.stackPartitions=e(this.stackPartitions,t.stackPartitions),this.slicePartitions=e(this.slicePartitions,t.slicePartitions),this.subdivisions=e(this.subdivisions,t.subdivisions)},s}),i("DataSources/LabelGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createPropertyDescriptor"],function(e,t,i,r,n,o){"use strict";var a=function(t){this._text=void 0,this._textSubscription=void 0,this._font=void 0,this._fontSubscription=void 0,this._style=void 0,this._styleSubscription=void 0,this._fillColor=void 0,this._fillColorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._show=void 0,this._showSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(a.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},text:o("text"),font:o("font"),style:o("style"),fillColor:o("fillColor"),outlineColor:o("outlineColor"),outlineWidth:o("outlineWidth"),horizontalOrigin:o("horizontalOrigin"),verticalOrigin:o("verticalOrigin"),eyeOffset:o("eyeOffset"),pixelOffset:o("pixelOffset"),scale:o("scale"),show:o("show"),translucencyByDistance:o("translucencyByDistance"),pixelOffsetScaleByDistance:o("pixelOffsetScaleByDistance")}),a.prototype.clone=function(e){return t(e)?(e.text=this.text,e.font=this.font,e.show=this.show,e.style=this.style,e.fillColor=this.fillColor,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.scale=this.scale,e.horizontalOrigin=this.horizontalOrigin,e.verticalOrigin=this.verticalOrigin,e.eyeOffset=this.eyeOffset,e.pixelOffset=this.pixelOffset,e.translucencyByDistance=this.translucencyByDistance,e.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance,e):new a(this)},a.prototype.merge=function(t){this.text=e(this.text,t.text),this.font=e(this.font,t.font),this.show=e(this.show,t.show),this.style=e(this.style,t.style),this.fillColor=e(this.fillColor,t.fillColor),this.outlineColor=e(this.outlineColor,t.outlineColor),this.outlineWidth=e(this.outlineWidth,t.outlineWidth),this.scale=e(this.scale,t.scale),this.horizontalOrigin=e(this.horizontalOrigin,t.horizontalOrigin),this.verticalOrigin=e(this.verticalOrigin,t.verticalOrigin),this.eyeOffset=e(this.eyeOffset,t.eyeOffset),this.pixelOffset=e(this.pixelOffset,t.pixelOffset),this.translucencyByDistance=e(this._translucencyByDistance,t.translucencyByDistance),this.pixelOffsetScaleByDistance=e(this._pixelOffsetScaleByDistance,t.pixelOffsetScaleByDistance)},a}),i("DataSources/ModelGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createPropertyDescriptor"],function(e,t,i,r,n,o){"use strict";var a=function(t){this._show=void 0,this._showSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._minimumPixelSize=void 0,this._minimumPixelSizeSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(a.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:o("show"),scale:o("scale"),minimumPixelSize:o("minimumPixelSize"),uri:o("uri")}),a.prototype.clone=function(e){return t(e)?(e.show=this.show,e.scale=this.scale,e.minimumPixelSize=this.minimumPixelSize,e.uri=this.uri,e):new a(this)},a.prototype.merge=function(t){this.show=e(this.show,t.show),this.scale=e(this.scale,t.scale),this.minimumPixelSize=e(this.minimumPixelSize,t.minimumPixelSize),this.uri=e(this.uri,t.uri)},a}),i("DataSources/PathGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createMaterialPropertyDescriptor","./createPropertyDescriptor"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){this._material=void 0,this._materialSubscription=void 0,this._show=void 0,this._showSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._resolution=void 0,this._resolutionSubscription=void 0,this._leadTime=void 0,this._leadTimeSubscription=void 0,this._trailTime=void 0,this._trailTimeSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(s.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:a("show"),material:o("material"),width:a("width"),resolution:a("resolution"),leadTime:a("leadTime"),trailTime:a("trailTime")}),s.prototype.clone=function(e){return t(e)?(e.material=this.material,e.width=this.width,e.resolution=this.resolution,e.show=this.show,e.leadTime=this.leadTime,e.trailTime=this.trailTime,e):new s(this)},s.prototype.merge=function(t){this.material=e(this.material,t.material),this.width=e(this.width,t.width),this.resolution=e(this.resolution,t.resolution),this.show=e(this.show,t.show),this.leadTime=e(this.leadTime,t.leadTime),this.trailTime=e(this.trailTime,t.trailTime)},s}),i("DataSources/PointGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createPropertyDescriptor"],function(e,t,i,r,n,o){"use strict";var a=function(t){this._color=void 0,this._colorSubscription=void 0,this._pixelSize=void 0,this._pixelSizeSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._show=void 0,this._showSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(a.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},color:o("color"),pixelSize:o("pixelSize"),outlineColor:o("outlineColor"),outlineWidth:o("outlineWidth"),show:o("show"),scaleByDistance:o("scaleByDistance"),translucencyByDistance:o("translucencyByDistance")}),a.prototype.clone=function(e){return t(e)?(e.color=this.color,e.pixelSize=this.pixelSize,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.show=this.show,e.scaleByDistance=this.scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e):new a(this)},a.prototype.merge=function(t){this.color=e(this.color,t.color),this.pixelSize=e(this.pixelSize,t.pixelSize),this.outlineColor=e(this.outlineColor,t.outlineColor),this.outlineWidth=e(this.outlineWidth,t.outlineWidth),this.show=e(this.show,t.show),this.scaleByDistance=e(this.scaleByDistance,t.scaleByDistance),this.translucencyByDistance=e(this._translucencyByDistance,t.translucencyByDistance)},a}),i("DataSources/PolygonGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createMaterialPropertyDescriptor","./createPropertyDescriptor"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){this._show=void 0,this._showSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._hierarchy=void 0,this._hierarchySubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._perPositionHeight=void 0,this._perPositionHeightSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._definitionChanged=new n,this._fill=void 0,this._fillSubscription=void 0,this.merge(e(t,e.EMPTY_OBJECT))};return i(s.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:a("show"),material:o("material"),hierarchy:a("hierarchy"),height:a("height"),extrudedHeight:a("extrudedHeight"),granularity:a("granularity"),stRotation:a("stRotation"),fill:a("fill"),outline:a("outline"),outlineColor:a("outlineColor"),outlineWidth:a("outlineWidth"),perPositionHeight:a("perPositionHeight")}),s.prototype.clone=function(e){return t(e)?(e.show=this.show,e.material=this.material,e.hierarchy=this.hierarchy,e.height=this.height,e.extrudedHeight=this.extrudedHeight,e.granularity=this.granularity,e.stRotation=this.stRotation,e.fill=this.fill,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.perPositionHeight=this.perPositionHeight,e):new s(this)},s.prototype.merge=function(t){this.show=e(this.show,t.show),this.material=e(this.material,t.material),this.hierarchy=e(this.hierarchy,t.hierarchy),this.height=e(this.height,t.height),this.extrudedHeight=e(this.extrudedHeight,t.extrudedHeight),this.granularity=e(this.granularity,t.granularity),this.stRotation=e(this.stRotation,t.stRotation),this.fill=e(this.fill,t.fill),this.outline=e(this.outline,t.outline),this.outlineColor=e(this.outlineColor,t.outlineColor),this.outlineWidth=e(this.outlineWidth,t.outlineWidth),this.perPositionHeight=e(this.perPositionHeight,t.perPositionHeight)},s}),i("DataSources/PolylineGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createMaterialPropertyDescriptor","./createPropertyDescriptor"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){this._show=void 0,this._showSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._followSurface=void 0,this._followSurfaceSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._widthSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(s.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:a("show"),material:o("material"),positions:a("positions"),width:a("width"),followSurface:a("followSurface"),granularity:a("granularity")}),s.prototype.clone=function(e){return t(e)?(e.show=this.show,e.material=this.material,e.positions=this.positions,e.width=this.width,e.followSurface=this.followSurface,e.granularity=this.granularity,e):new s(this)},s.prototype.merge=function(t){this.show=e(this.show,t.show),this.material=e(this.material,t.material),this.positions=e(this.positions,t.positions),this.width=e(this.width,t.width),this.followSurface=e(this.followSurface,t.followSurface),this.granularity=e(this.granularity,t.granularity)},s}),i("DataSources/PolylineVolumeGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createMaterialPropertyDescriptor","./createPropertyDescriptor"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){this._show=void 0,this._showSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._shape=void 0,this._shapeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(s.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:a("show"),material:o("material"),positions:a("positions"),shape:a("shape"),granularity:a("granularity"),fill:a("fill"),outline:a("outline"),outlineColor:a("outlineColor"),outlineWidth:a("outlineWidth"),cornerType:a("cornerType")}),s.prototype.clone=function(e){return t(e)?(e.show=this.show,e.material=this.material,e.positions=this.positions,e.shape=this.shape,e.granularity=this.granularity,e.fill=this.fill,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.cornerType=this.cornerType,e):new s(this)},s.prototype.merge=function(t){this.show=e(this.show,t.show),this.material=e(this.material,t.material),this.positions=e(this.positions,t.positions),this.shape=e(this.shape,t.shape),this.granularity=e(this.granularity,t.granularity),this.fill=e(this.fill,t.fill),this.outline=e(this.outline,t.outline),this.outlineColor=e(this.outlineColor,t.outlineColor),this.outlineWidth=e(this.outlineWidth,t.outlineWidth),this.cornerType=e(this.cornerType,t.cornerType)},s}),i("DataSources/RectangleGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createMaterialPropertyDescriptor","./createPropertyDescriptor"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){this._show=void 0,this._showSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._coordinates=void 0,this._coordinatesSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._closeTop=void 0,this._closeTopSubscription=void 0,this._closeBottom=void 0,this._closeBottomSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(s.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:a("show"),coordinates:a("coordinates"),material:o("material"),height:a("height"),extrudedHeight:a("extrudedHeight"),granularity:a("granularity"),stRotation:a("stRotation"),rotation:a("rotation"),fill:a("fill"),outline:a("outline"),outlineColor:a("outlineColor"),outlineWidth:a("outlineWidth"),closeTop:a("closeTop"),closeBottom:a("closeBottom")}),s.prototype.clone=function(e){return t(e)?(e.show=this.show,e.coordinates=this.coordinates,e.material=this.material,e.height=this.height,e.extrudedHeight=this.extrudedHeight,e.granularity=this.granularity,e.stRotation=this.stRotation,e.rotation=this.rotation,e.fill=this.fill,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.closeTop=this.closeTop,e.closeBottom=this.closeBottom,e):new s(this)},s.prototype.merge=function(t){this.show=e(this.show,t.show),this.coordinates=e(this.coordinates,t.coordinates),this.material=e(this.material,t.material),this.height=e(this.height,t.height),this.extrudedHeight=e(this.extrudedHeight,t.extrudedHeight),this.granularity=e(this.granularity,t.granularity),this.stRotation=e(this.stRotation,t.stRotation),this.rotation=e(this.rotation,t.rotation),this.fill=e(this.fill,t.fill),this.outline=e(this.outline,t.outline),this.outlineColor=e(this.outlineColor,t.outlineColor),this.outlineWidth=e(this.outlineWidth,t.outlineWidth),this.closeTop=e(this.closeTop,t.closeTop),this.closeBottom=e(this.closeBottom,t.closeBottom)},s}),i("DataSources/WallGraphics",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./createMaterialPropertyDescriptor","./createPropertyDescriptor"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){this._show=void 0,this._showSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._minimumHeights=void 0,this._minimumHeightsSubscription=void 0,this._maximumHeights=void 0,this._maximumHeightsSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._definitionChanged=new n,this.merge(e(t,e.EMPTY_OBJECT))};return i(s.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:a("show"),material:o("material"),positions:a("positions"),minimumHeights:a("minimumHeights"),maximumHeights:a("maximumHeights"),granularity:a("granularity"),fill:a("fill"),outline:a("outline"),outlineColor:a("outlineColor"),outlineWidth:a("outlineWidth")}),s.prototype.clone=function(e){return t(e)?(e.show=this.show,e.material=this.material,e.positions=this.positions,e.minimumHeights=this.minimumHeights,e.maximumHeights=this.maximumHeights,e.granularity=this.granularity,e.fill=this.fill,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e):new s(this)},s.prototype.merge=function(t){this.show=e(this.show,t.show),this.material=e(this.material,t.material),this.positions=e(this.positions,t.positions),this.minimumHeights=e(this.minimumHeights,t.minimumHeights),this.maximumHeights=e(this.maximumHeights,t.maximumHeights),this.granularity=e(this.granularity,t.granularity),this.fill=e(this.fill,t.fill),this.outline=e(this.outline,t.outline),this.outlineColor=e(this.outlineColor,t.outlineColor),this.outlineWidth=e(this.outlineWidth,t.outlineWidth)},s}),i("DataSources/Entity",["../Core/Cartesian3","../Core/createGuid","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/Matrix3","../Core/Matrix4","../Core/Quaternion","../Core/Transforms","./BillboardGraphics","./BoxGraphics","./ConstantPositionProperty","./CorridorGraphics","./createPropertyDescriptor","./createRawPropertyDescriptor","./CylinderGraphics","./EllipseGraphics","./EllipsoidGraphics","./LabelGraphics","./ModelGraphics","./PathGraphics","./PointGraphics","./PolygonGraphics","./PolylineGraphics","./PolylineVolumeGraphics","./Property","./RectangleGraphics","./WallGraphics"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D){"use strict";function M(e){return new p(e)}function I(e){return f(e,void 0,M)}function O(e,t){return f(e,void 0,function(e){return e instanceof t?e:new t(e)})}function R(e,t,i){for(var r=t.length,n=0;r>n;n++){var o=t[n],a=o._show,s=!i&&a,l=i&&a;s!==l&&R(o,o._children,i)}e._definitionChanged.raiseEvent(e,"isShowing",i,!i)}var L=function(e){e=i(e,i.EMPTY_OBJECT);var n=e.id;r(n)||(n=t()),this._availability=void 0,this._id=n,this._definitionChanged=new a,this._name=e.name,this._show=i(e.show,!0),this._parent=void 0,this._propertyNames=["billboard","box","corridor","cylinder","description","ellipse","ellipsoid","label","model","orientation","path","point","polygon","polyline","polylineVolume","position","rectangle","viewFrom","wall"],this._billboard=void 0,this._billboardSubscription=void 0,this._box=void 0,this._boxSubscription=void 0,this._corridor=void 0,this._corridorSubscription=void 0,this._cylinder=void 0,this._cylinderSubscription=void 0,this._description=void 0,this._descriptionSubscription=void 0,this._ellipse=void 0,this._ellipseSubscription=void 0,this._ellipsoid=void 0,this._ellipsoidSubscription=void 0,this._label=void 0,this._labelSubscription=void 0,this._model=void 0,this._modelSubscription=void 0,this._orientation=void 0,this._orientationSubscription=void 0,this._path=void 0,this._pathSubscription=void 0,this._point=void 0,this._pointSubscription=void 0,this._polygon=void 0,this._polygonSubscription=void 0,this._polyline=void 0,this._polylineSubscription=void 0,this._polylineVolume=void 0,this._polylineVolumeSubscription=void 0,this._position=void 0,this._positionSubscription=void 0,this._rectangle=void 0,this._rectangleSubscription=void 0,this._viewFrom=void 0,this._viewFromSubscription=void 0,this._wall=void 0,this._wallSubscription=void 0,this._children=[],this.parent=e.parent,this.merge(e)};n(L.prototype,{availability:v("availability"),id:{get:function(){return this._id}},definitionChanged:{get:function(){return this._definitionChanged}},name:v("name"),show:{get:function(){return this._show},set:function(e){if(e!==this._show){var t=this.isShowing;this._show=e;var i=this.isShowing;t!==i&&R(this,this._children,i),this._definitionChanged.raiseEvent(this,"show",e,!e)}}},isShowing:{get:function(){return this._show&&(!r(this._parent)||this._parent.isShowing)}},parent:{get:function(){return this._parent},set:function(e){var t=this._parent;if(t!==e){var i=this.isShowing;if(r(t)){var n=t._children.indexOf(this);t._children.splice(n,1)}this._parent=e,e._children.push(this); +var o=this.isShowing;i!==o&&R(this,this._children,o),this._definitionChanged.raiseEvent(this,"parent",e,t)}}},propertyNames:{get:function(){return this._propertyNames}},billboard:O("billboard",h),box:O("box",d),corridor:O("corridor",m),cylinder:O("cylinder",g),description:f("description"),ellipse:O("ellipse",_),ellipsoid:O("ellipsoid",y),label:O("label",C),model:O("model",w),orientation:f("orientation"),path:O("path",S),point:O("point",E),polygon:O("polygon",b),polyline:O("polyline",x),polylineVolume:O("polylineVolume",T),position:I("position"),rectangle:O("rectangle",A),viewFrom:f("viewFrom"),wall:O("wall",D)}),L.prototype.isAvailable=function(e){var t=this._availability;return!r(t)||t.contains(e)},L.prototype.addProperty=function(e){var t=this._propertyNames;t.push(e),Object.defineProperty(this,e,v(e,!0))},L.prototype.removeProperty=function(e){this._propertyNames,this._propertyNames.push(e),delete this[e]},L.prototype.merge=function(e){this.name=i(this.name,e.name),this.availability=i(e.availability,this.availability);for(var t=this._propertyNames,n=r(e._propertyNames)?e._propertyNames:Object.keys(e),o=n.length,a=0;o>a;a++){var s=n[a];if("parent"!==s){var l=this[s],u=e[s];r(l)||-1!==t.indexOf(s)||this.addProperty(s),r(u)&&(r(l)?r(l.merge)&&l.merge(u):this[s]=r(u.merge)&&r(u.clone)?u.clone():u)}}};var N=new s,F=new e,B=new u;return L.prototype._getModelMatrix=function(e,t){var i=P.getValueOrUndefined(this._position,e,F);if(!r(i))return void 0;var n=P.getValueOrUndefined(this._orientation,e,B);return t=r(n)?l.fromRotationTranslation(s.fromQuaternion(n,N),i,t):c.eastNorthUpToFixedFrame(i,void 0,t)},L}),i("DataSources/EntityCollection",["../Core/AssociativeArray","../Core/createGuid","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/Iso8601","../Core/JulianDate","../Core/RuntimeError","../Core/TimeInterval","./Entity"],function(e,t,i,r,n,o,a,s,l,u,c){"use strict";function h(e){if(0===e._suspendCount){var t=e._addedEntities,i=e._removedEntities,r=e._changedEntities;(0!==r.length||0!==t.length||0!==i.length)&&(e._collectionChanged.raiseEvent(e,t.values,i.values,r.values),t.removeAll(),i.removeAll(),r.removeAll())}}var d={id:void 0},p=function(){this._entities=new e,this._addedEntities=new e,this._removedEntities=new e,this._changedEntities=new e,this._suspendCount=0,this._collectionChanged=new o,this._id=t()};return p.prototype.suspendEvents=function(){this._suspendCount++},p.prototype.resumeEvents=function(){this._suspendCount--,h(this)},p.collectionChangedEventCallback=void 0,r(p.prototype,{collectionChanged:{get:function(){return this._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._entities.values}}}),p.prototype.computeAvailability=function(){for(var e=a.MAXIMUM_VALUE,t=a.MINIMUM_VALUE,r=this._entities.values,n=0,o=r.length;o>n;n++){var l=r[n],c=l.availability;if(i(c)){var h=c.start,d=c.stop;s.lessThan(h,e)&&!h.equals(a.MINIMUM_VALUE)&&(e=h),s.greaterThan(d,t)&&!d.equals(a.MAXIMUM_VALUE)&&(t=d)}}return a.MAXIMUM_VALUE.equals(e)&&(e=a.MINIMUM_VALUE),a.MINIMUM_VALUE.equals(t)&&(t=a.MAXIMUM_VALUE),new u({start:e,stop:t})},p.prototype.add=function(e){e instanceof c||(e=new c(e));var t=e.id,i=this._entities;if(i.contains(t))throw new l("An entity with id "+t+" already exists in this collection.");return i.set(t,e),this._removedEntities,this._removedEntities.remove(t)||this._addedEntities.set(t,e),e.definitionChanged.addEventListener(p.prototype._onEntityDefinitionChanged,this),h(this),e},p.prototype.remove=function(e){return i(e)?this.removeById(e.id):!1},p.prototype.contains=function(e){return this._entities.get(e.id)===e},p.prototype.removeById=function(e){if(!i(e))return!1;var t=this._entities,r=t.get(e);return this._entities.remove(e)?(this._addedEntities.remove(e)||(this._removedEntities.set(e,r),this._changedEntities.remove(e)),this._entities.remove(e),r.definitionChanged.removeEventListener(p.prototype._onEntityDefinitionChanged,this),h(this),!0):!1},p.prototype.removeAll=function(){for(var e=this._entities,t=e.length,r=e.values,n=this._addedEntities,o=this._removedEntities,a=0;t>a;a++){var s=r[a],l=s.id,u=n.get(l);i(u)||(s.definitionChanged.removeEventListener(p.prototype._onEntityDefinitionChanged,this),o.set(l,s))}e.removeAll(),n.removeAll(),this._changedEntities.removeAll(),h(this)},p.prototype.getById=function(e){return this._entities.get(e)},p.prototype.getOrCreateEntity=function(e){var t=this._entities.get(e);return i(t)||(d.id=e,t=new c(d),this.add(t)),t},p.prototype._onEntityDefinitionChanged=function(e){var t=e.id;this._addedEntities.contains(t)||this._changedEntities.set(t,e),h(this)},p}),i("DataSources/CompositeEntityCollection",["../Core/createGuid","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Math","./Entity","./EntityCollection"],function(e,t,i,r,n,o,a){"use strict";function s(e){for(var t=e.propertyNames,i=t.length,r=0;i>r;r++)e[t[r]]=void 0}function l(e,t,i,r){m[0]=i,m[1]=r.id,t[JSON.stringify(m)]=r.definitionChanged.addEventListener(f.prototype._onDefinitionChanged,e)}function u(e,t,i,r){m[0]=i,m[1]=r.id;var n=JSON.stringify(m);t[n](),t[n]=void 0}function c(e){if(e._shouldRecomposite=!0,0===e._suspendCount){var i,r,n,c,h,d,m=e._collections,v=m.length,g=e._collectionsCopy,_=g.length,y=e._composite,C=new a,w=e._eventHash;for(i=0;_>i;i++)for(h=g[i],h.collectionChanged.removeEventListener(f.prototype._onCollectionChanged,e),n=h.values,d=h.id,c=n.length-1;c>-1;c--)r=n[c],u(e,w,d,r);for(i=v-1;i>=0;i--)for(h=m[i],h.collectionChanged.addEventListener(f.prototype._onCollectionChanged,e),n=h.values,d=h.id,c=n.length-1;c>-1;c--){r=n[c],l(e,w,d,r);var S=C.getById(r.id);t(S)||(S=y.getById(r.id),t(S)?s(S):(p.id=r.id,S=new o(p)),C.add(S)),S.merge(r)}e._collectionsCopy=m.slice(0),y.suspendEvents(),y.removeAll();var E=C.values;for(i=0;ih;h++){var y=r[h];u(this,g,_,y);var C=y.id;for(d=a-1;d>=0;d--)m=n[d].getById(C),t(m)&&(t(f)||(f=c.getById(C),s(f)),f.merge(m));t(f)||c.removeById(C),f=void 0}var w=i.length;for(h=0;w>h;h++){var S=i[h];l(this,g,_,S);var E=S.id;for(d=a-1;d>=0;d--)m=n[d].getById(E),t(m)&&(t(f)||(f=c.getById(E),t(f)?s(f):(p.id=E,f=new o(p),c.add(f))),f.merge(m));f=void 0}c.resumeEvents()},f.prototype._onDefinitionChanged=function(e,i){for(var r=this._collections,n=this._composite,o=r.length,a=e.id,s=n.getById(a),l=s[i],u=!t(l),c=!0,h=o-1;h>=0;h--){var d=r[h].getById(e.id);if(t(d)){var p=d[i];if(t(p)){if(c){if(c=!1,!t(p.merge)||!t(p.clone)){l=p;break}l=p.clone(l)}l.merge(p)}}}u&&-1===s.propertyNames.indexOf(i)&&s.addProperty(i),s[i]=l},f}),i("DataSources/CompositeProperty",["../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/EventHelper","../Core/TimeIntervalCollection","./Property"],function(e,t,i,r,n,o,a){"use strict";function s(t,i,r,n){var o=function(){r.raiseEvent(t)},a=[];i.removeAll();for(var s=n.length,l=0;s>l;l++){var u=n.get(l);e(u.data)&&-1===a.indexOf(u.data)&&i.add(u.data.definitionChanged,o)}}var l=function(){this._eventHelper=new n,this._definitionChanged=new r,this._intervals=new o,this._intervals.changedEvent.addEventListener(l.prototype._intervalsChanged,this)};return t(l.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}}),l.prototype.getValue=function(t,i){var r=this._intervals.findDataForIntervalContainingDate(t);return e(r)?r.getValue(t,i):void 0},l.prototype.equals=function(e){return this===e||e instanceof l&&this._intervals.equals(e._intervals,a.equals)},l.prototype._intervalsChanged=function(){s(this,this._eventHelper,this._definitionChanged,this._intervals),this._definitionChanged.raiseEvent(this)},l}),i("DataSources/CompositeMaterialProperty",["../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","./CompositeProperty","./Property"],function(e,t,i,r,n,o){"use strict";var a=function(){this._definitionChanged=new r,this._composite=new n,this._composite.definitionChanged.addEventListener(a.prototype._raiseDefinitionChanged,this)};return t(a.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite._intervals}}}),a.prototype.getType=function(t){var i=this._composite._intervals.findDataForIntervalContainingDate(t);return e(i)?i.getType(t):void 0},a.prototype.getValue=function(t,i){var r=this._composite._intervals.findDataForIntervalContainingDate(t);return e(r)?r.getValue(t,i):void 0},a.prototype.equals=function(e){return this===e||e instanceof a&&this._composite.equals(e._composite,o.equals)},a.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)},a}),i("DataSources/CompositePositionProperty",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/ReferenceFrame","./CompositeProperty","./Property"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(t){this._referenceFrame=e(t,o.FIXED),this._definitionChanged=new n,this._composite=new a,this._composite.definitionChanged.addEventListener(l.prototype._raiseDefinitionChanged,this)};return i(l.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite.intervals}},referenceFrame:{get:function(){return this._referenceFrame},set:function(e){this._referenceFrame=e}}}),l.prototype.getValue=function(e,t){return this.getValueInReferenceFrame(e,o.FIXED,t)},l.prototype.getValueInReferenceFrame=function(e,i,r){var n=this._composite._intervals.findDataForIntervalContainingDate(e);return t(n)?n.getValueInReferenceFrame(e,i,r):void 0},l.prototype.equals=function(e){return this===e||e instanceof l&&this._referenceFrame===e._referenceFrame&&this._composite.equals(e._composite,s.equals)},l.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)},l}),i("DataSources/CorridorGeometryUpdater",["../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/CorridorGeometry","../Core/CorridorOutlineGeometry","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../Core/GeometryInstance","../Core/Iso8601","../Core/ShowGeometryInstanceAttribute","../Scene/MaterialAppearance","../Scene/PerInstanceColorAppearance","../Scene/Primitive","./ColorMaterialProperty","./ConstantProperty","./dynamicGeometryGetBoundingSphere","./MaterialProperty","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C){"use strict";var w=new v(e.WHITE),S=new g(!0),E=new g(!0),b=new g(!1),x=new g(e.BLACK),T=new e,P=function(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.cornerType=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0},A=function(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(A.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._isClosed=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new u,this._showProperty=void 0,this._materialProperty=void 0,this._hasConstantOutline=!0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._options=new P(e),this._onEntityPropertyChanged(e,"corridor",e.corridor,void 0)};a(A,{perInstanceColorAppearanceType:{value:m},materialAppearanceType:{value:p}}),a(A.prototype,{entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!o(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!o(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},isDynamic:{get:function(){return this._dynamic}},isClosed:{get:function(){return this._isClosed}},geometryChanged:{get:function(){return this._geometryChanged}}}),A.prototype.isOutlineVisible=function(e){var t=this._entity;return this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)},A.prototype.isFilled=function(e){var t=this._entity;return this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)},A.prototype.createFillGeometryInstance=function(r){var n,a,s=this._entity,l=s.isAvailable(r),u=new d(l&&s.isShowing&&this._showProperty.getValue(r)&&this._fillProperty.getValue(r));if(this._materialProperty instanceof v){var h=e.WHITE;o(this._materialProperty.color)&&(this._materialProperty.color.isConstant||l)&&(h=this._materialProperty.color.getValue(r)),a=t.fromColor(h),n={show:u,color:a}}else n={show:u};return new c({id:s,geometry:new i(this._options),attributes:n})},A.prototype.createOutlineGeometryInstance=function(i){var n=this._entity,o=n.isAvailable(i),a=C.getValueOrDefault(this._outlineColorProperty,i,e.BLACK);return new c({id:n,geometry:new r(this._options),attributes:{show:new d(o&&n.isShowing&&this._showProperty.getValue(i)&&this._showOutlineProperty.getValue(i)),color:t.fromColor(a)}})},A.prototype.isDestroyed=function(){return!1},A.prototype.destroy=function(){this._entitySubscription(),s(this)},A.prototype._onEntityPropertyChanged=function(e,t){if("availability"===t||"corridor"===t){var i=this._entity.corridor;if(!o(i))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var r=i.fill,a=o(r)&&r.isConstant?r.getValue(h.MINIMUM_VALUE):!0,s=i.outline,l=o(s);if(l&&s.isConstant&&(l=s.getValue(h.MINIMUM_VALUE)),!a&&!l)return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var u=i.positions,c=i.show;if(o(c)&&c.isConstant&&!c.getValue(h.MINIMUM_VALUE)||!o(u))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var d=n(i.material,w),f=d instanceof v;this._materialProperty=d,this._fillProperty=n(r,E),this._showProperty=n(c,S),this._showOutlineProperty=n(i.outline,b),this._outlineColorProperty=l?n(i.outlineColor,x):void 0;var g=i.height,_=i.extrudedHeight,y=i.granularity,T=i.width,P=i.outlineWidth,A=i.cornerType;if(this._isClosed=o(_),this._fillEnabled=a,this._outlineEnabled=l,u.isConstant&&C.isConstant(g)&&C.isConstant(_)&&C.isConstant(y)&&C.isConstant(T)&&C.isConstant(P)&&C.isConstant(A)){var D=this._options;D.vertexFormat=f?m.VERTEX_FORMAT:p.MaterialSupport.TEXTURED.vertexFormat,D.positions=u.getValue(h.MINIMUM_VALUE,D.positions),D.height=o(g)?g.getValue(h.MINIMUM_VALUE):void 0,D.extrudedHeight=o(_)?_.getValue(h.MINIMUM_VALUE):void 0,D.granularity=o(y)?y.getValue(h.MINIMUM_VALUE):void 0,D.width=o(T)?T.getValue(h.MINIMUM_VALUE):void 0,D.cornerType=o(A)?A.getValue(h.MINIMUM_VALUE):void 0,this._outlineWidth=o(P)?P.getValue(h.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}else this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this))}},A.prototype.createDynamicUpdater=function(e){return new D(e,this)};var D=function(e,t){this._primitives=e,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=t,this._options=new P(t._entity)};return D.prototype.update=function(n){var a=this._primitives;a.removeAndDestroy(this._primitive),a.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0;var s=this._geometryUpdater,l=s._entity,u=l.corridor;if(l.isShowing&&l.isAvailable(n)&&C.getValueOrDefault(u.show,n,!0)){var h=this._options,d=C.getValueOrUndefined(u.positions,n,h.positions),v=C.getValueOrUndefined(u.width,n);if(o(d)&&o(v)){if(h.positions=d,h.width=v,h.height=C.getValueOrUndefined(u.height,n),h.extrudedHeight=C.getValueOrUndefined(u.extrudedHeight,n),h.granularity=C.getValueOrUndefined(u.granularity,n),h.cornerType=C.getValueOrUndefined(u.cornerType,n),!o(u.fill)||u.fill.getValue(n)){var g=y.getValue(n,s.fillMaterialProperty,this._material);this._material=g;var _=new p({material:g,translucent:g.isTranslucent(),closed:o(h.extrudedHeight)});h.vertexFormat=_.vertexFormat,this._primitive=a.add(new f({geometryInstances:new c({id:l,geometry:new i(h)}),appearance:_,asynchronous:!1}))}if(o(u.outline)&&u.outline.getValue(n)){h.vertexFormat=m.VERTEX_FORMAT;var w=C.getValueOrClonedDefault(u.outlineColor,n,e.BLACK,T),S=C.getValueOrDefault(u.outlineWidth,n,1),E=1!==w.alpha;this._outlinePrimitive=a.add(new f({geometryInstances:new c({id:l,geometry:new r(h),attributes:{color:t.fromColor(w)}}),appearance:new m({flat:!0,translucent:E,renderState:{lineWidth:s._scene.clampLineWidth(S)}}),asynchronous:!1}))}}}},D.prototype.getBoundingSphere=function(e,t){return _(e,this._primitive,this._outlinePrimitive,t)},D.prototype.isDestroyed=function(){return!1},D.prototype.destroy=function(){var e=this._primitives;e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),s(this)},A}),i("DataSources/DataSource",["../Core/defineProperties","../Core/DeveloperError"],function(e,t){"use strict";var i=function(){t.throwInstantiationError()};return e(i.prototype,{name:{get:t.throwInstantiationError},clock:{get:t.throwInstantiationError},entities:{get:t.throwInstantiationError},isLoading:{get:t.throwInstantiationError},changedEvent:{get:t.throwInstantiationError},errorEvent:{get:t.throwInstantiationError},loadingEvent:{get:t.throwInstantiationError}}),i.prototype.update=t.throwInstantiationError,i.setLoading=function(e,t){e._isLoading!==t&&(t?e._entityCollection.suspendEvents():e._entityCollection.resumeEvents(),e._isLoading=t,e._loading.raiseEvent(e,t))},i}),i("DataSources/CustomDataSource",["../Core/defineProperties","../Core/Event","./DataSource","./EntityCollection"],function(e,t,i,r){"use strict";var n=function(e){this._name=e,this._clock=void 0,this._changed=new t,this._error=new t,this._isLoading=!1,this._loading=new t,this._entityCollection=new r};return e(n.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._changed.raiseEvent(this))}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading},set:function(e){i.setLoading(this,e)}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}}}),n}),i("DataSources/CylinderGeometryUpdater",["../Core/Cartesian3","../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/CylinderGeometry","../Core/CylinderOutlineGeometry","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../Core/GeometryInstance","../Core/Iso8601","../Core/ShowGeometryInstanceAttribute","../Scene/MaterialAppearance","../Scene/PerInstanceColorAppearance","../Scene/Primitive","./ColorMaterialProperty","./ConstantProperty","./dynamicGeometryGetBoundingSphere","./MaterialProperty","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w){"use strict";var S=new g(t.WHITE),E=new _(!0),b=new _(!0),x=new _(!1),T=new _(t.BLACK),P=new t,A=function(e){this.id=e,this.vertexFormat=void 0,this.length=void 0,this.topRadius=void 0,this.bottomRadius=void 0,this.slices=void 0,this.numberOfVerticalLines=void 0},D=function(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(D.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new c,this._showProperty=void 0,this._materialProperty=void 0,this._hasConstantOutline=!0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._options=new A(e),this._onEntityPropertyChanged(e,"cylinder",e.cylinder,void 0)};s(D,{perInstanceColorAppearanceType:{value:f},materialAppearanceType:{value:m}}),s(D.prototype,{entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!a(this._entity.availability)&&w.isConstant(this._showProperty)&&w.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!a(this._entity.availability)&&w.isConstant(this._showProperty)&&w.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!0},geometryChanged:{get:function(){return this._geometryChanged}}}),D.prototype.isOutlineVisible=function(e){var t=this._entity;return this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)},D.prototype.isFilled=function(e){var t=this._entity;return this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)},D.prototype.createFillGeometryInstance=function(e){var n,o,s=this._entity,l=s.isAvailable(e),u=new p(l&&s.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e));if(this._materialProperty instanceof g){var c=t.WHITE;a(this._materialProperty.color)&&(this._materialProperty.color.isConstant||l)&&(c=this._materialProperty.color.getValue(e)),o=i.fromColor(c),n={show:u,color:o}}else n={show:u};return new h({id:s,geometry:new r(this._options),modelMatrix:s._getModelMatrix(d.MINIMUM_VALUE),attributes:n})},D.prototype.createOutlineGeometryInstance=function(e){var r=this._entity,o=r.isAvailable(e),a=w.getValueOrDefault(this._outlineColorProperty,e,t.BLACK);return new h({id:r,geometry:new n(this._options),modelMatrix:r._getModelMatrix(d.MINIMUM_VALUE),attributes:{show:new p(o&&r.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:i.fromColor(a)}})},D.prototype.isDestroyed=function(){return!1},D.prototype.destroy=function(){this._entitySubscription(),l(this)},D.prototype._onEntityPropertyChanged=function(e,t){if("availability"===t||"position"===t||"orientation"===t||"cylinder"===t){var i=e.cylinder;if(!a(i))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var r=i.fill,n=a(r)&&r.isConstant?r.getValue(d.MINIMUM_VALUE):!0,s=i.outline,l=a(s);if(l&&s.isConstant&&(l=s.getValue(d.MINIMUM_VALUE)),!n&&!l)return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var u=e.position,c=i.length,h=i.topRadius,p=i.bottomRadius,v=i.show;if(a(v)&&v.isConstant&&!v.getValue(d.MINIMUM_VALUE)||!a(u)||!a(c)||!a(h)||!a(p))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var _=o(i.material,S),y=_ instanceof g;this._materialProperty=_,this._fillProperty=o(r,b),this._showProperty=o(v,E),this._showOutlineProperty=o(i.outline,x),this._outlineColorProperty=l?o(i.outlineColor,T):void 0;var C=i.slices,P=i.outlineWidth,A=i.numberOfVerticalLines;if(this._fillEnabled=n,this._outlineEnabled=l,u.isConstant&&w.isConstant(e.orientation)&&c.isConstant&&h.isConstant&&p.isConstant&&w.isConstant(C)&&w.isConstant(P)&&w.isConstant(A)){var D=this._options;D.vertexFormat=y?f.VERTEX_FORMAT:m.MaterialSupport.TEXTURED.vertexFormat,D.length=c.getValue(d.MINIMUM_VALUE),D.topRadius=h.getValue(d.MINIMUM_VALUE),D.bottomRadius=p.getValue(d.MINIMUM_VALUE),D.slices=a(C)?C.getValue(d.MINIMUM_VALUE):void 0,D.numberOfVerticalLines=a(A)?A.getValue(d.MINIMUM_VALUE):void 0,this._outlineWidth=a(P)?P.getValue(d.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}else this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this))}},D.prototype.createDynamicUpdater=function(e){return new M(e,this)};var M=function(e,t){this._primitives=e,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=t,this._options=new A(t._entity)};return M.prototype.update=function(e){var o=this._primitives;o.removeAndDestroy(this._primitive),o.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0;var s=this._geometryUpdater,l=s._entity,u=l.cylinder;if(l.isShowing&&l.isAvailable(e)&&w.getValueOrDefault(u.show,e,!0)){var c=this._options,d=l._getModelMatrix(e),p=w.getValueOrUndefined(u.length,e),g=w.getValueOrUndefined(u.topRadius,e),_=w.getValueOrUndefined(u.bottomRadius,e);if(a(d)&&a(p)&&a(g)&&a(_)){if(c.length=p,c.topRadius=g,c.bottomRadius=_,c.slices=w.getValueOrUndefined(u.slices,e),c.numberOfVerticalLines=w.getValueOrUndefined(u.numberOfVerticalLines,e),w.getValueOrDefault(u.fill,e,!0)){var y=C.getValue(e,s.fillMaterialProperty,this._material);this._material=y;var S=new m({material:y,translucent:y.isTranslucent(),closed:!0});c.vertexFormat=S.vertexFormat,this._primitive=o.add(new v({geometryInstances:new h({id:l,geometry:new r(c),modelMatrix:d}),appearance:S,asynchronous:!1}))}if(w.getValueOrDefault(u.outline,e,!1)){c.vertexFormat=f.VERTEX_FORMAT;var E=w.getValueOrClonedDefault(u.outlineColor,e,t.BLACK,P),b=w.getValueOrDefault(u.outlineWidth,e,1),x=1!==E.alpha;this._outlinePrimitive=o.add(new v({geometryInstances:new h({id:l,geometry:new n(c),modelMatrix:d,attributes:{color:i.fromColor(E)}}),appearance:new f({flat:!0,translucent:x,renderState:{lineWidth:s._scene.clampLineWidth(b)}}),asynchronous:!1}))}}}},M.prototype.getBoundingSphere=function(e,t){return y(e,this._primitive,this._outlinePrimitive,t)},M.prototype.isDestroyed=function(){return!1},M.prototype.destroy=function(){var e=this._primitives;e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),l(this)},D}),i("Scene/LabelStyle",["../Core/freezeObject"],function(e){"use strict";var t={FILL:0,OUTLINE:1,FILL_AND_OUTLINE:2};return e(t)}),i("DataSources/Rotation",["../Core/defaultValue","../Core/defined","../Core/DeveloperError","../Core/Math"],function(e,t,i,r){"use strict";var n={packedLength:1,pack:function(t,i,r){r=e(r,0),i[r]=t},unpack:function(t,i){return i=e(i,0),t[i]},convertPackedArrayForInterpolation:function(t,i,n,o){i=e(i,0),n=e(n,t.length);for(var a,s=0,l=n-i+1;l>s;s++){var u=t[i+s];o[s]=0===s||Math.abs(a-u)o?o+r.TWO_PI:o}};return n}),i("DataSources/DataSourceClock",["../Core/Clock","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/JulianDate","./createRawPropertyDescriptor"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(){this._startTime=void 0,this._stopTime=void 0,this._currentTime=void 0,this._clockRange=void 0,this._clockStep=void 0,this._multiplier=void 0,this._definitionChanged=new o};return r(l.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},startTime:s("startTime"),stopTime:s("stopTime"),currentTime:s("currentTime"),clockRange:s("clockRange"),clockStep:s("clockStep"),multiplier:s("multiplier")}),l.prototype.clone=function(e){return i(e)||(e=new l),e.startTime=this.startTime,e.stopTime=this.stopTime,e.currentTime=this.currentTime,e.clockRange=this.clockRange,e.clockStep=this.clockStep,e.multiplier=this.multiplier,e},l.prototype.equals=function(e){return this===e||i(e)&&a.equals(this.startTime,e.startTime)&&a.equals(this.stopTime,e.stopTime)&&a.equals(this.currentTime,e.currentTime)&&this.clockRange===e.clockRange&&this.clockStep===e.clockStep&&this.multiplier===e.multiplier},l.prototype.merge=function(e){this.startTime=t(this.startTime,e.startTime),this.stopTime=t(this.stopTime,e.stopTime),this.currentTime=t(this.currentTime,e.currentTime),this.clockRange=t(this.clockRange,e.clockRange),this.clockStep=t(this.clockStep,e.clockStep),this.multiplier=t(this.multiplier,e.multiplier)},l.prototype.getValue=function(t){return i(t)||(t=new e),t.startTime=this.startTime,t.stopTime=this.stopTime,t.clockRange=this.clockRange,t.clockStep=this.clockStep,t.multiplier=this.multiplier,t.currentTime=this.currentTime,t},l}),i("DataSources/GridMaterialProperty",["../Core/Cartesian2","../Core/Color","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/Event","./createPropertyDescriptor","./Property"],function(e,t,i,r,n,o,a,s){"use strict";var l=t.WHITE,u=.1,c=new e(8,8),h=new e(0,0),d=new e(1,1),p=function(e){e=i(e,i.EMPTY_OBJECT),this._definitionChanged=new o,this._color=void 0,this._colorSubscription=void 0,this._cellAlpha=void 0,this._cellAlphaSubscription=void 0,this._lineCount=void 0,this._lineCountSubscription=void 0,this._lineThickness=void 0,this._lineThicknessSubscription=void 0,this._lineOffset=void 0,this._lineOffsetSubscription=void 0,this.color=e.color,this.cellAlpha=e.cellAlpha,this.lineCount=e.lineCount,this.lineThickness=e.lineThickness,this.lineOffset=e.lineOffset +};return n(p.prototype,{isConstant:{get:function(){return s.isConstant(this._color)&&s.isConstant(this._cellAlpha)&&s.isConstant(this._lineCount)&&s.isConstant(this._lineThickness)&&s.isConstant(this._lineOffset)}},definitionChanged:{get:function(){return this._definitionChanged}},color:a("color"),cellAlpha:a("cellAlpha"),lineCount:a("lineCount"),lineThickness:a("lineThickness"),lineOffset:a("lineOffset")}),p.prototype.getType=function(){return"Grid"},p.prototype.getValue=function(e,t){return r(t)||(t={}),t.color=s.getValueOrClonedDefault(this._color,e,l,t.color),t.cellAlpha=s.getValueOrDefault(this._cellAlpha,e,u),t.lineCount=s.getValueOrClonedDefault(this._lineCount,e,c,t.lineCount),t.lineThickness=s.getValueOrClonedDefault(this._lineThickness,e,d,t.lineThickness),t.lineOffset=s.getValueOrClonedDefault(this._lineOffset,e,h,t.lineOffset),t},p.prototype.equals=function(e){return this===e||e instanceof p&&s.equals(this._color,e._color)&&s.equals(this._cellAlpha,e._cellAlpha)&&s.equals(this._lineCount,e._lineCount)&&s.equals(this._lineThickness,e._lineThickness)&&s.equals(this._lineOffset,e._lineOffset)},p}),i("DataSources/PolylineGlowMaterialProperty",["../Core/Color","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/Event","./createPropertyDescriptor","./Property"],function(e,t,i,r,n,o,a){"use strict";var s=e.WHITE,l=.25,u=function(e){e=t(e,t.EMPTY_OBJECT),this._definitionChanged=new n,this._color=void 0,this._colorSubscription=void 0,this._glowPower=void 0,this._glowPowerSubscription=void 0,this.color=e.color,this.glowPower=e.glowPower};return r(u.prototype,{isConstant:{get:function(){return a.isConstant(this._color)&&a.isConstant(this._glow)}},definitionChanged:{get:function(){return this._definitionChanged}},color:o("color"),glowPower:o("glowPower")}),u.prototype.getType=function(){return"PolylineGlow"},u.prototype.getValue=function(e,t){return i(t)||(t={}),t.color=a.getValueOrClonedDefault(this._color,e,s,t.color),t.glowPower=a.getValueOrDefault(this._glowPower,e,l,t.glowPower),t},u.prototype.equals=function(e){return this===e||e instanceof u&&a.equals(this._color,e._color)&&a.equals(this._glowPower,e._glowPower)},u}),i("DataSources/PolylineOutlineMaterialProperty",["../Core/Color","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/Event","./createPropertyDescriptor","./Property"],function(e,t,i,r,n,o,a){"use strict";var s=e.WHITE,l=e.BLACK,u=1,c=function(e){e=t(e,t.EMPTY_OBJECT),this._definitionChanged=new n,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this.color=e.color,this.outlineColor=e.outlineColor,this.outlineWidth=e.outlineWidth};return r(c.prototype,{isConstant:{get:function(){return a.isConstant(this._color)&&a.isConstant(this._outlineColor)&&a.isConstant(this._outlineWidth)}},definitionChanged:{get:function(){return this._definitionChanged}},color:o("color"),outlineColor:o("outlineColor"),outlineWidth:o("outlineWidth")}),c.prototype.getType=function(){return"PolylineOutline"},c.prototype.getValue=function(e,t){return i(t)||(t={}),t.color=a.getValueOrClonedDefault(this._color,e,s,t.color),t.outlineColor=a.getValueOrClonedDefault(this._outlineColor,e,l,t.outlineColor),t.outlineWidth=a.getValueOrDefault(this._outlineWidth,e,u),t},c.prototype.equals=function(e){return this===e||e instanceof c&&a.equals(this._color,e._color)&&a.equals(this._outlineColor,e._outlineColor)&&a.equals(this._outlineWidth,e._outlineWidth)},c}),i("DataSources/PositionPropertyArray",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/EventHelper","../Core/ReferenceFrame","./Property"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(t,i){this._value=void 0,this._definitionChanged=new n,this._eventHelper=new o,this._referenceFrame=e(i,a.FIXED),this.setValue(t)};return i(l.prototype,{isConstant:{get:function(){var e=this._value;if(!t(e))return!0;for(var i=e.length,r=0;i>r;r++)if(!s.isConstant(e[r]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}}),l.prototype.getValue=function(e,t){return this.getValueInReferenceFrame(e,a.FIXED,t)},l.prototype.getValueInReferenceFrame=function(e,i,r){var n=this._value;if(!t(n))return void 0;var o=n.length;t(r)||(r=new Array(o));for(var a=0,s=0;o>a;){var l=n[a],u=l.getValueInReferenceFrame(e,i,r[a]);t(u)&&(r[s]=u,s++),a++}return r.length=s,r},l.prototype.setValue=function(e){var i=this._eventHelper;if(i.removeAll(),t(e)){this._value=e.slice();for(var r=e.length,n=0;r>n;n++){var o=e[n];t(o)&&i.add(o.definitionChanged,l.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)},l.prototype.equals=function(e){return this===e||e instanceof l&&this._referenceFrame===e._referenceFrame&&s.arrayEquals(this._value,e._value)},l.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)},l}),i("DataSources/ReferenceProperty",["../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/RuntimeError","./Property"],function(e,t,i,r,n,o){"use strict";function a(t){var i=!0;if(t._resolveEntity){var r=t._targetCollection.getById(t._targetId);if(e(r)?(r.definitionChanged.addEventListener(l.prototype._onTargetEntityDefinitionChanged,t),t._targetEntity=r,t._resolveEntity=!1):(r=t._targetEntity,i=!1),!e(r))throw new n('target entity "'+t._targetId+'" could not be resolved.')}return i}function s(t){var i=t._targetProperty;if(t._resolveProperty){var r=a(t),o=t._targetPropertyNames;i=t._targetEntity;for(var s=o.length,l=0;s>l&&e(i);l++)i=i[o[l]];if(e(i))t._targetProperty=i,t._resolveProperty=!r;else if(!e(t._targetProperty))throw new n('targetProperty "'+t._targetId+"."+o.join(".")+'" could not be resolved.')}return i}var l=function(e,t,i){this._targetCollection=e,this._targetId=t,this._targetPropertyNames=i,this._targetProperty=void 0,this._targetEntity=void 0,this._definitionChanged=new r,this._resolveEntity=!0,this._resolveProperty=!0,e.collectionChanged.addEventListener(l.prototype._onCollectionChanged,this)};return t(l.prototype,{isConstant:{get:function(){return o.isConstant(s(this))}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return s(this).referenceFrame}},targetId:{get:function(){return this._targetId}},targetCollection:{get:function(){return this._targetCollection}},targetPropertyNames:{get:function(){return this._targetPropertyNames}},resolvedProperty:{get:function(){return s(this)}}}),l.fromString=function(e,t){for(var i,r=[],n=!0,o=!1,a="",s=0;sn;n++)if(t[n]!==i[n])return!1;return!0},l.prototype._onTargetEntityDefinitionChanged=function(e,t){this._targetPropertyNames[0]===t&&(this._resolveProperty=!0,this._definitionChanged.raiseEvent(this))},l.prototype._onCollectionChanged=function(t,i,r){var n=this._targetEntity;e(n)&&(-1!==r.indexOf(n)?(n.definitionChanged.removeEventListener(l.prototype._onTargetEntityDefinitionChanged,this),this._resolveEntity=!0,this._resolveProperty=!0):this._resolveEntity&&(s(this),this._resolveEntity||this._definitionChanged.raiseEvent(this)))},l}),i("DataSources/SampledProperty",["../Core/binarySearch","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/ExtrapolationType","../Core/JulianDate","../Core/LinearApproximation"],function(e,t,i,r,n,o,a,s,l){"use strict";function u(e,t,i){var r,n=e.length,o=i.length,a=n+o;if(e.length=a,n!==t){var s=n-1;for(r=a-1;r>=t;r--)e[r]=e[s--]}for(r=0;o>r;r++)e[t++]=i[r]}function c(e,t){return e instanceof s?e:"string"==typeof e?s.fromIso8601(e):s.addSeconds(t,e,new s)}var h={packedLength:1,pack:function(e,i,r){r=t(r,0),i[r]=e},unpack:function(e,i){return i=t(i,0),e[i]}},d=[],p=[],m=function(t,r,n,o,a){for(var l,h,m,f,v,g,_=0;_m){for(m=~m,f=m*a,h=void 0,g=r[m];_=0||i(g)&&s.compare(v,g)>=0));){for(d[y++]=v,_+=1,l=0;a>l;l++)p[C++]=o[_],_+=1;h=v}y>0&&(p.length=C,u(n,f,p),d.length=y,u(r,m,d))}else{for(l=0;a>l;l++)_++,n[m*a+l]=o[_];_++}}},f=function(e,r){var n=e;n===Number&&(n=h);var s,u=n.packedLength,c=t(n.packedInterpolationLength,u),d=0;if(i(r)){var p=r.length;s=new Array(p);for(var m=0;p>m;m++){var f=r[m];f===Number&&(f=h);var v=f.packedLength;u+=v,c+=t(f.packedInterpolationLength,v),s[m]=f}d=p}this._type=e,this._innerType=n,this._interpolationDegree=1,this._interpolationAlgorithm=l,this._numberOfPoints=0,this._times=[],this._values=[],this._xTable=[],this._yTable=[],this._packedLength=u,this._packedInterpolationLength=c,this._updateTableLength=!0,this._interpolationResult=new Array(c),this._definitionChanged=new o,this._derivativeTypes=r,this._innerDerivativeTypes=s,this._inputOrder=d,this._forwardExtrapolationType=a.NONE,this._forwardExtrapolationDuration=0,this._backwardExtrapolationType=a.NONE,this._backwardExtrapolationDuration=0};return r(f.prototype,{isConstant:{get:function(){return 0===this._values.length}},definitionChanged:{get:function(){return this._definitionChanged}},type:{get:function(){return this._type}},derivativeTypes:{get:function(){return this._derivativeTypes}},interpolationDegree:{get:function(){return this._interpolationDegree}},interpolationAlgorithm:{get:function(){return this._interpolationAlgorithm}},forwardExtrapolationType:{get:function(){return this._forwardExtrapolationType},set:function(e){this._forwardExtrapolationType!==e&&(this._forwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},forwardExtrapolationDuration:{get:function(){return this._forwardExtrapolationDuration},set:function(e){this._forwardExtrapolationDuration!==e&&(this._forwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationType:{get:function(){return this._backwardExtrapolationType},set:function(e){this._backwardExtrapolationType!==e&&(this._backwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationDuration:{get:function(){return this._backwardExtrapolationDuration},set:function(e){this._backwardExtrapolationDuration!==e&&(this._backwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}}}),f.prototype.getValue=function(t,r){var n=this._times,o=n.length;if(0===o)return void 0;var l,u=this._innerType,c=this._values,h=e(n,t,s.compare);if(0>h){if(h=~h,0===h){var d=n[h];if(l=this._backwardExtrapolationDuration,this._backwardExtrapolationType===a.NONE||0!==l&&s.secondsDifference(d,t)>l)return void 0;if(this._backwardExtrapolationType===a.HOLD)return u.unpack(c,0,r)}if(h>=o){h=o-1;var p=n[h];if(l=this._forwardExtrapolationDuration,this._forwardExtrapolationType===a.NONE||0!==l&&s.secondsDifference(t,p)>l)return void 0;if(this._forwardExtrapolationType===a.HOLD)return h=o-1,u.unpack(c,h*u.packedLength,r)}var m=this._xTable,f=this._yTable,v=this._interpolationAlgorithm,g=this._packedInterpolationLength,_=this._inputOrder;if(this._updateTableLength){this._updateTableLength=!1;var y=Math.min(v.getRequiredDataPoints(this._interpolationDegree,_),o);y!==this._numberOfPoints&&(this._numberOfPoints=y,m.length=y,f.length=y*g)}var C=this._numberOfPoints-1;if(1>C)return void 0;var w=0,S=o-1,E=S-w+1;if(C+1>E);else{var b=h-(0|C/2)-1;w>b&&(b=w);var x=b+C;x>S&&(x=S,b=x-C,w>b&&(b=w)),w=b,S=x}for(var T=S-w+1,P=0;T>P;++P)m[P]=s.secondsDifference(n[w+P],n[S]);if(i(u.convertPackedArrayForInterpolation))u.convertPackedArrayForInterpolation(c,w,S,f);else for(var A=0,D=this._packedLength,M=w*D,I=(S+1)*D;I>M;)f[A]=c[M],M++,A++;var O,R=s.secondsDifference(t,n[S]);if(0!==_&&i(v.interpolate)){var L=Math.floor(g/(_+1));O=v.interpolate(R,m,f,L,_,_,this._interpolationResult)}else O=v.interpolateOrderZero(R,m,f,g,this._interpolationResult);return i(u.unpackInterpolationResult)?u.unpackInterpolationResult(O,c,w,S,r):u.unpack(O,0,r)}return u.unpack(c,h*this._packedLength,r)},f.prototype.setInterpolationOptions=function(e){var t=!1,i=e.interpolationAlgorithm,r=e.interpolationDegree;this._interpolationAlgorithm!==i&&(this._interpolationAlgorithm=i,t=!0),this._interpolationDegree!==r&&(this._interpolationDegree=r,t=!0),t&&(this._updateTableLength=!0,this._definitionChanged.raiseEvent(this))},f.prototype.addSample=function(e,t,r){var n=this._innerDerivativeTypes,o=i(n),a=this._innerType,s=[];if(s.push(e),a.pack(t,s,s.length),o)for(var l=n.length,u=0;l>u;u++)n[u].pack(r[u],s,s.length);m(void 0,this._times,this._values,s,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)},f.prototype.addSamples=function(e,t,r){for(var n=this._innerDerivativeTypes,o=i(n),a=this._innerType,s=e.length,l=[],u=0;s>u;u++)if(l.push(e[u]),a.pack(t[u],l,l.length),o)for(var c=r[u],h=n.length,d=0;h>d;d++)n[d].pack(c[d],l,l.length);m(void 0,this._times,this._values,l,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)},f.prototype.addSamplesPackedArray=function(e,t){m(t,this._times,this._values,e,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)},f.prototype.equals=function(e){if(this===e)return!0;if(!i(e))return!1;if(this._type!==e._type||this._interpolationDegree!==e._interpolationDegree||this._interpolationAlgorithm!==e._interpolationAlgorithm)return!1;var t=this._derivativeTypes,r=i(t),n=e._derivativeTypes,o=i(n);if(r!==o)return!1;var a,l;if(r){if(l=t.length,l!==n.length)return!1;for(a=0;l>a;a++)if(t[a]!==n[a])return!1}var u=this._times,c=e._times;if(l=u.length,l!==c.length)return!1;for(a=0;l>a;a++)if(!s.equals(u[a],c[a]))return!1;var h=this._values,d=e._values;for(a=0;l>a;a++)if(h[a]!==d[a])return!1;return!0},f._mergeNewSamples=m,f}),i("DataSources/SampledPositionProperty",["../Core/Cartesian3","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/ReferenceFrame","./PositionProperty","./Property","./SampledProperty"],function(e,t,i,r,n,o,a,s,l,u){"use strict";var c=function(i,r){r=t(r,0);var n;if(r>0){n=new Array(r);for(var s=0;r>s;s++)n[s]=e}this._numberOfDerivatives=r,this._property=new u(e,n),this._definitionChanged=new o,this._referenceFrame=t(i,a.FIXED),this._property._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)};return r(c.prototype,{isConstant:{get:function(){return this._property.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}},interpolationDegree:{get:function(){return this._property.interpolationDegree}},interpolationAlgorithm:{get:function(){return this._property.interpolationAlgorithm}},numberOfDerivatives:{get:function(){return this._numberOfDerivatives}},forwardExtrapolationType:{get:function(){return this._property.forwardExtrapolationType},set:function(e){this._property.forwardExtrapolationType=e}},forwardExtrapolationDuration:{get:function(){return this._property.forwardExtrapolationDuration},set:function(e){this._property.forwardExtrapolationDuration=e}},backwardExtrapolationType:{get:function(){return this._property.backwardExtrapolationType},set:function(e){this._property.backwardExtrapolationType=e}},backwardExtrapolationDuration:{get:function(){return this._property.backwardExtrapolationDuration},set:function(e){this._property.backwardExtrapolationDuration=e}}}),c.prototype.getValue=function(e,t){return this.getValueInReferenceFrame(e,a.FIXED,t)},c.prototype.getValueInReferenceFrame=function(e,t,r){return r=this._property.getValue(e,r),i(r)?s.convertToReferenceFrame(e,r,this._referenceFrame,t,r):void 0},c.prototype.setInterpolationOptions=function(e){this._property.setInterpolationOptions(e)},c.prototype.addSample=function(e,t,i){this._numberOfDerivatives,this._property.addSample(e,t,i)},c.prototype.addSamples=function(e,t,i){this._property.addSamples(e,t,i)},c.prototype.addSamplesPackedArray=function(e,t){this._property.addSamplesPackedArray(e,t)},c.prototype.equals=function(e){return this===e||e instanceof c&&l.equals(this._property,e._property)&&this._referenceFrame===e._referenceFrame},c}),i("DataSources/StripeOrientation",["../Core/freezeObject"],function(e){"use strict";var t={HORIZONTAL:0,VERTICAL:1};return e(t)}),i("DataSources/StripeMaterialProperty",["../Core/Color","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/Event","./createPropertyDescriptor","./Property","./StripeOrientation"],function(e,t,i,r,n,o,a,s){"use strict";var l=s.HORIZONTAL,u=e.WHITE,c=e.BLACK,h=0,d=1,p=function(e){e=t(e,t.EMPTY_OBJECT),this._definitionChanged=new n,this._orientation=void 0,this._orientationSubscription=void 0,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._offset=void 0,this._offsetSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.orientation=e.orientation,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.offset=e.offset,this.repeat=e.repeat};return r(p.prototype,{isConstant:{get:function(){return a.isConstant(this._orientation)&&a.isConstant(this._evenColor)&&a.isConstant(this._oddColor)&&a.isConstant(this._offset)&&a.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},orientation:o("orientation"),evenColor:o("evenColor"),oddColor:o("oddColor"),offset:o("offset"),repeat:o("repeat")}),p.prototype.getType=function(){return"Stripe"},p.prototype.getValue=function(e,t){return i(t)||(t={}),t.horizontal=a.getValueOrDefault(this._orientation,e,l)===s.HORIZONTAL,t.evenColor=a.getValueOrClonedDefault(this._evenColor,e,u,t.evenColor),t.oddColor=a.getValueOrClonedDefault(this._oddColor,e,c,t.oddColor),t.offset=a.getValueOrDefault(this._offset,e,h),t.repeat=a.getValueOrDefault(this._repeat,e,d),t},p.prototype.equals=function(e){return this===e||e instanceof p&&a.equals(this._orientation,e._orientation)&&a.equals(this._evenColor,e._evenColor)&&a.equals(this._oddColor,e._oddColor)&&a.equals(this._offset,e._offset)&&a.equals(this._repeat,e._repeat)},p}),i("DataSources/TimeIntervalCollectionPositionProperty",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/ReferenceFrame","../Core/TimeIntervalCollection","./PositionProperty","./Property"],function(e,t,i,r,n,o,a,s,l){"use strict";var u=function(t){this._definitionChanged=new n,this._intervals=new a,this._intervals.changedEvent.addEventListener(u.prototype._intervalsChanged,this),this._referenceFrame=e(t,o.FIXED)};return i(u.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}},referenceFrame:{get:function(){return this._referenceFrame}}}),u.prototype.getValue=function(e,t){return this.getValueInReferenceFrame(e,o.FIXED,t)},u.prototype.getValueInReferenceFrame=function(e,i,r){var n=this._intervals.findDataForIntervalContainingDate(e);return t(n)?s.convertToReferenceFrame(e,n,this._referenceFrame,i,r):void 0},u.prototype.equals=function(e){return this===e||e instanceof u&&this._intervals.equals(e._intervals,l.equals)&&this._referenceFrame===e._referenceFrame},u.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)},u}),i("DataSources/TimeIntervalCollectionProperty",["../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/TimeIntervalCollection","./Property"],function(e,t,i,r,n,o){"use strict";var a=function(){this._definitionChanged=new r,this._intervals=new n,this._intervals.changedEvent.addEventListener(a.prototype._intervalsChanged,this)};return t(a.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}}),a.prototype.getValue=function(t,i){var r=this._intervals.findDataForIntervalContainingDate(t);return e(r)&&"function"==typeof r.clone?r.clone(i):r},a.prototype.equals=function(e){return this===e||e instanceof a&&this._intervals.equals(e._intervals,o.equals)},a.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)},a}),i("DataSources/CzmlDataSource",["../Core/Cartesian2","../Core/Cartesian3","../Core/Cartographic","../Core/ClockRange","../Core/ClockStep","../Core/Color","../Core/createGuid","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Ellipsoid","../Core/Event","../Core/ExtrapolationType","../Core/getFilenameFromUri","../Core/HermitePolynomialApproximation","../Core/isArray","../Core/Iso8601","../Core/JulianDate","../Core/LagrangePolynomialApproximation","../Core/LinearApproximation","../Core/loadJson","../Core/Math","../Core/Quaternion","../Core/Rectangle","../Core/ReferenceFrame","../Core/RuntimeError","../Core/Spherical","../Core/TimeInterval","../Core/TimeIntervalCollection","../Scene/HorizontalOrigin","../Scene/LabelStyle","../Scene/VerticalOrigin","../ThirdParty/Uri","../ThirdParty/when","./Rotation","./BillboardGraphics","./ColorMaterialProperty","./CompositeMaterialProperty","./CompositePositionProperty","./CompositeProperty","./ConstantPositionProperty","./ConstantProperty","./DataSource","./DataSourceClock","./EllipseGraphics","./EllipsoidGraphics","./EntityCollection","./GridMaterialProperty","./ImageMaterialProperty","./LabelGraphics","./ModelGraphics","./PathGraphics","./PointGraphics","./PolygonGraphics","./PolylineGlowMaterialProperty","./PolylineGraphics","./PolylineOutlineMaterialProperty","./PositionPropertyArray","./RectangleGraphics","./ReferenceProperty","./SampledPositionProperty","./SampledProperty","./StripeMaterialProperty","./StripeOrientation","./TimeIntervalCollectionPositionProperty","./TimeIntervalCollectionProperty","./WallGraphics"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D,M,I,O,R,L,N,F,B,z,k,V,U,W,G,H,q,j,Y,X,Z,J,Q,K,$,et,tt,it,rt,nt,ot,at,st,lt,ut,ct,ht,dt,pt){"use strict";function mt(e,t){return"#"===t[0]&&(t=$t+t),at.fromString(e,t)}function ft(e){var t=e.rgbaf;if(l(t))return t;var i=e.rgba;if(!l(i))return void 0;if(i.length===o.length)return[o.byteToFloat(i[0]),o.byteToFloat(i[1]),o.byteToFloat(i[2]),o.byteToFloat(i[3])];var r=i.length;t=new Array(r);for(var n=0;r>n;n+=5)t[n]=i[n],t[n+1]=o.byteToFloat(i[n+1]),t[n+2]=o.byteToFloat(i[n+2]),t[n+3]=o.byteToFloat(i[n+3]),t[n+4]=o.byteToFloat(i[n+4]);return t}function vt(e,t){var i=s(e.uri,e);if(l(t)){var r=new R(document.location.href);t=new R(t),i=new R(i).resolve(t.resolve(r)).toString()}return i}function gt(e){var t=e.wsenDegrees;if(l(t)){for(var i=t.length,r=0;i>r;r++)t[r]=S.toRadians(t[r]);return t}return e.wsen}function _t(e){if(l(e.cartesian))return e.cartesian;if(l(e.cartesianVelocity))return e.cartesianVelocity;if(l(e.unitCartesian))return e.unitCartesian;var i,r,n,o=e.unitSpherical;if(l(o)){if(r=o.length,2===r)ti.clock=o[0],ti.cone=o[1],t.fromSpherical(ti,ei),n=[ei.x,ei.y,ei.z];else{var a=0;for(n=new Array(4*(r/3)),i=0;r>i;i+=4)n[i]=o[a++],ti.clock=o[a++],ti.cone=o[a++],t.fromSpherical(ti,ei),n[i+1]=ei.x,n[i+2]=ei.y,n[i+3]=ei.z}return n}var s=e.cartographicRadians;if(l(s)){if(3===s.length)ii.longitude=s[0],ii.latitude=s[1],ii.height=s[2],h.WGS84.cartographicToCartesian(ii,ei),n=[ei.x,ei.y,ei.z];else for(r=s.length,n=new Array(r),i=0;r>i;i+=4)ii.longitude=s[i+1],ii.latitude=s[i+2],ii.height=s[i+3],h.WGS84.cartographicToCartesian(ii,ei),n[i]=s[i],n[i+1]=ei.x,n[i+2]=ei.y,n[i+3]=ei.z;return n}var u=e.cartographicDegrees;if(!l(u))throw new T(JSON.stringify(e)+" is not a valid CZML interval.");if(3===u.length)ii.longitude=S.toRadians(u[0]),ii.latitude=S.toRadians(u[1]),ii.height=u[2],h.WGS84.cartographicToCartesian(ii,ei),n=[ei.x,ei.y,ei.z];else for(r=u.length,n=new Array(r),i=0;r>i;i+=4)ii.longitude=S.toRadians(u[i+1]),ii.latitude=S.toRadians(u[i+2]),ii.height=u[i+3],h.WGS84.cartographicToCartesian(ii,ei),n[i]=u[i],n[i+1]=ei.x,n[i+2]=ei.y,n[i+3]=ei.z;return n}function yt(e,t){var i=e[t],r=e[t+1],n=e[t+2],o=e[t+3],a=1/Math.sqrt(i*i+r*r+n*n+o*o);e[t]=i*a,e[t+1]=r*a,e[t+2]=n*a,e[t+3]=o*a}function Ct(e){var t=e.unitQuaternion;if(l(t)){if(4===t.length)return yt(t,0),t;for(var i=1;ih);var y="function"==typeof e.unpack&&e!==N;if(!d&&!v)return t[i]=f?mt(a,r.reference):y?new W(e.unpack(p,0)):new W(p),void 0;var C,w=t[i],S=r.epoch;if(l(S)&&(C=_.fromIso8601(S)),d&&!v)return w instanceof lt||(w=new lt(e),t[i]=w),w.addSamplesPackedArray(p,C),St(r,w),void 0;var E;if(!d&&v)return u=u.clone(),u.data=f?mt(a,r.reference):y?e.unpack(p,0):p,l(w)||(w=f?new V:new dt,t[i]=w),!f&&w instanceof dt?w.intervals.addInterval(u):w instanceof V?(u.data=f?u.data:new W(u.data),w.intervals.addInterval(u)):(E=g.MAXIMUM_INTERVAL.clone(),E.data=w,w=new V,t[i]=w,w.intervals.addInterval(E),u.data=f?u.data:new W(u.data),w.intervals.addInterval(u)),void 0;l(w)||(w=new V,t[i]=w),w instanceof V||(E=g.MAXIMUM_INTERVAL.clone(),E.data=w,w=new V,t[i]=w,w.intervals.addInterval(E));var b=w.intervals;E=b.findInterval(u),l(E)&&E.data instanceof lt||(E=u.clone(),E.data=new lt(e),b.addInterval(E)),E.data.addSamplesPackedArray(p,C),St(r,E.data)}function bt(e,t,i,r,n,o,a){if(l(r))if(v(r))for(var s=0,u=r.length;u>s;s++)Et(e,t,i,r[s],n,o,a);else Et(e,t,i,r,n,o,a)}function xt(e,i,r,n,o,a){var u,c=r.interval;l(c)?(oi.iso8601=c,u=A.fromIso8601(oi),l(n)&&(u=A.intersect(u,n,ri))):l(n)&&(u=n);var h,d,p,m=!1,f=l(r.cartesianVelocity)?1:0,v=t.packedLength*(f+1),y=l(r.reference),C=l(u)&&!u.equals(g.MAXIMUM_INTERVAL);if(y||(h=s(x[r.referenceFrame],void 0),d=_t(r),p=s(d.length,1),m=p>v),!m&&!C)return e[i]=y?mt(a,r.reference):new U(t.unpack(d),h),void 0;var w,S=e[i],E=r.epoch;if(l(E)&&(w=_.fromIso8601(E)),m&&!C)return(!(S instanceof st)||l(h)&&S.referenceFrame!==h)&&(S=new st(h,f),e[i]=S),S.addSamplesPackedArray(d,w),St(r,S),void 0;var b;if(!m&&C)return u=u.clone(),u.data=y?mt(a,r.reference):t.unpack(d),l(S)||(S=y?new k(h):new ht(h),e[i]=S),!y&&S instanceof ht&&l(h)&&S.referenceFrame===h?S.intervals.addInterval(u):S instanceof k?(u.data=y?u.data:new U(u.data,h),S.intervals.addInterval(u)):(b=g.MAXIMUM_INTERVAL.clone(),b.data=S,S=new k(S.referenceFrame),e[i]=S,S.intervals.addInterval(b),u.data=y?u.data:new U(u.data,h),S.intervals.addInterval(u)),void 0;l(S)?S instanceof k||(b=g.MAXIMUM_INTERVAL.clone(),b.data=S,S=new k(S.referenceFrame),e[i]=S,S.intervals.addInterval(b)):(S=new k(h),e[i]=S);var T=S.intervals;b=T.findInterval(u),l(b)&&b.data instanceof st&&(!l(h)||b.data.referenceFrame===h)||(b=u.clone(),b.data=new st(h,f),T.addInterval(b)),b.data.addSamplesPackedArray(d,w),St(r,b.data)}function Tt(e,t,i,r,n,o){if(l(i))if(v(i))for(var a=0,s=i.length;s>a;a++)xt(e,t,i[a],r,n,o);else xt(e,t,i,r,n,o)}function Pt(t,i,r,n,a,s){var u,c=r.interval;l(c)?(oi.iso8601=c,u=A.fromIso8601(oi),l(n)&&(u=A.intersect(u,n,ri))):l(n)&&(u=n);var h,d,p=t[i];if(l(u)){p instanceof z||(p=new z,t[i]=p);var m=p.intervals;d=m.findInterval({start:u.start,stop:u.stop}),l(d)?h=d.data:(d=u.clone(),m.addInterval(d))}else h=p;var f;l(r.solidColor)?(h instanceof B||(h=new B),f=r.solidColor,bt(o,h,"color",f.color,void 0,void 0,s)):l(r.grid)?(h instanceof X||(h=new X),f=r.grid,bt(o,h,"color",f.color,void 0,a,s),bt(Number,h,"cellAlpha",f.cellAlpha,void 0,a,s),bt(e,h,"lineThickness",f.lineThickness,void 0,a,s),bt(e,h,"lineOffset",f.lineOffset,void 0,a,s),bt(e,h,"lineCount",f.lineCount,void 0,a,s)):l(r.image)?(h instanceof Z||(h=new Z),f=r.image,bt(Image,h,"image",f.image,void 0,a,s),bt(e,h,"repeat",f.repeat,void 0,a,s)):l(r.stripe)?(h instanceof ut||(h=new ut),f=r.stripe,bt(ct,h,"orientation",f.orientation,void 0,a,s),bt(o,h,"evenColor",f.evenColor,void 0,a,s),bt(o,h,"oddColor",f.oddColor,void 0,a,s),bt(Number,h,"offset",f.offset,void 0,a,s),bt(Number,h,"repeat",f.repeat,void 0,a,s)):l(r.polylineOutline)?(h instanceof rt||(h=new rt),f=r.polylineOutline,bt(o,h,"color",f.color,void 0,a,s),bt(o,h,"outlineColor",f.outlineColor,void 0,a,s),bt(Number,h,"outlineWidth",f.outlineWidth,void 0,a,s)):l(r.polylineGlow)&&(h instanceof tt||(h=new tt),f=r.polylineGlow,bt(o,h,"color",f.color,void 0,a,s),bt(Number,h,"glowPower",f.glowPower,void 0,a,s)),l(d)?d.data=h:t[i]=h}function At(e,t,i,r,n,o){if(l(i))if(v(i))for(var a=0,s=i.length;s>a;a++)Pt(e,t,i[a],r,n,o);else Pt(e,t,i,r,n,o)}function Dt(e,t){e.name=s(t.name,e.name)}function Mt(e,t,i,r){var n=t.description;l(n)&&bt(String,e,"description",n,void 0,r,i)}function It(e,t,i,r){var n=t.position;l(n)&&Tt(e,"position",n,void 0,r,i)}function Ot(e,i,r,n){var o=i.viewFrom;l(o)&&bt(t,e,"viewFrom",o,void 0,n,r)}function Rt(e,t,i,r){var n=t.orientation;l(n)&&bt(E,e,"orientation",n,void 0,r,i)}function Lt(e,i,r,n){var o,a,s=r.references;if(l(s)){var u=[];for(o=0,a=s.length;a>o;o++)u.push(mt(n,s[o]));var c=r.interval;if(l(c)){if(c=A.fromIso8601(c),!(e[i]instanceof k)){c.data=new nt(u);var d=new k;d.intervals.addInterval(c),e[i]=d}}else e[i]=new nt(u)}else{var p=[],m=r.cartesian;if(l(m)){for(o=0,a=m.length;a>o;o+=3)p.push(new t(m[o],m[o+1],m[o+2]));r.array=p}else if(m=r.cartographicRadians,l(m)){for(o=0,a=m.length;a>o;o+=3)ii.longitude=m[o],ii.latitude=m[o+1],ii.height=m[o+2],p.push(h.WGS84.cartographicToCartesian(ii));r.array=p}else if(m=r.cartographicDegrees,l(m)){for(o=0,a=m.length;a>o;o+=3)p.push(t.fromDegrees(m[o],m[o+1],m[o+2]));r.array=p}l(r.array)&&bt(Array,e,i,r,void 0,void 0,n)}}function Nt(e,t,i,r){if(l(i))if(v(i))for(var n=i.length,o=0;n>o;o++)Lt(e,t,i[o],r);else Lt(e,t,i,r)}function Ft(e,t){var i,r=t.availability;if(l(r)){var n;if(v(r))for(var o=r.length,a=0;o>a;a++)l(n)||(n=new D),oi.iso8601=r[a],i=A.fromIso8601(oi),n.addInterval(i);else oi.iso8601=r,i=A.fromIso8601(oi),n=new D,n.addInterval(i);e.availability=n}}function Bt(i,r,n,a){var s=r.billboard;if(l(s)){var u,c=s.interval; +l(c)&&(oi.iso8601=c,u=A.fromIso8601(oi));var h=i.billboard;l(h)||(i.billboard=h=new F),bt(o,h,"color",s.color,u,a,n),bt(t,h,"eyeOffset",s.eyeOffset,u,a,n),bt(M,h,"horizontalOrigin",s.horizontalOrigin,u,a,n),bt(Image,h,"image",s.image,u,a,n),bt(e,h,"pixelOffset",s.pixelOffset,u,a,n),bt(Number,h,"scale",s.scale,u,a,n),bt(N,h,"rotation",s.rotation,u,a,n),bt(t,h,"alignedAxis",s.alignedAxis,u,a,n),bt(Boolean,h,"show",s.show,u,a,n),bt(O,h,"verticalOrigin",s.verticalOrigin,u,a,n)}}function zt(e,t){var i=e.version;if(l(i)&&"string"==typeof i){var r=i.split(".");if(2===r.length){if("1"!==r[0])throw new T("Cesium only supports CZML version 1.");t._version=i}}if(!l(t._version))throw new T("CZML version information invalid. It is expected to be a property on the document object in the . version format.");var n=t._documentPacket;l(e.name)&&(n.name=e.name);var o=e.clock;if(l(o)){var a=n.clock;l(a)?(a.interval=s(o.interval,a.interval),a.currentTime=s(o.currentTime,a.currentTime),a.range=s(o.range,a.range),a.step=s(o.step,a.step),a.multiplier=s(o.multiplier,a.multiplier)):n.clock={interval:o.interval,currentTime:o.currentTime,range:o.range,step:o.step,multiplier:o.multiplier}}}function kt(e,t,i,r){var n=t.ellipse;if(l(n)){var a,s=n.interval;l(s)&&(oi.iso8601=s,a=A.fromIso8601(oi));var u=e.ellipse;l(u)||(e.ellipse=u=new q),bt(Boolean,u,"show",n.show,a,r,i),bt(N,u,"rotation",n.rotation,a,r,i),bt(Number,u,"semiMajorAxis",n.semiMajorAxis,a,r,i),bt(Number,u,"semiMinorAxis",n.semiMinorAxis,a,r,i),bt(Number,u,"height",n.height,a,r,i),bt(Number,u,"extrudedHeight",n.extrudedHeight,a,r,i),bt(Number,u,"granularity",n.granularity,a,r,i),bt(N,u,"stRotation",n.stRotation,a,r,i),At(u,"material",n.material,a,r,i),bt(Boolean,u,"fill",n.fill,a,r,i),bt(Boolean,u,"outline",n.outline,a,r,i),bt(o,u,"outlineColor",n.outlineColor,a,r,i),bt(Number,u,"outlineWidth",n.outlineWidth,a,r,i),bt(Number,u,"numberOfVerticalLines",n.numberOfVerticalLines,a,r,i)}}function Vt(e,i,r,n){var a=i.ellipsoid;if(l(a)){var s,u=a.interval;l(u)&&(oi.iso8601=u,s=A.fromIso8601(oi));var c=e.ellipsoid;l(c)||(e.ellipsoid=c=new j),bt(Boolean,c,"show",a.show,s,n,r),bt(t,c,"radii",a.radii,s,n,r),At(c,"material",a.material,s,n,r),bt(Boolean,c,"fill",a.fill,s,n,r),bt(Boolean,c,"outline",a.outline,s,n,r),bt(o,c,"outlineColor",a.outlineColor,s,n,r),bt(Number,c,"outlineWidth",a.outlineWidth,s,n,r)}}function Ut(i,r,n,a){var s=r.label;if(l(s)){var u,c=s.interval;l(c)&&(oi.iso8601=c,u=A.fromIso8601(oi));var h=i.label;l(h)||(i.label=h=new J),bt(o,h,"fillColor",s.fillColor,u,a,n),bt(o,h,"outlineColor",s.outlineColor,u,a,n),bt(Number,h,"outlineWidth",s.outlineWidth,u,a,n),bt(t,h,"eyeOffset",s.eyeOffset,u,a,n),bt(M,h,"horizontalOrigin",s.horizontalOrigin,u,a,n),bt(String,h,"text",s.text,u,a,n),bt(e,h,"pixelOffset",s.pixelOffset,u,a,n),bt(Number,h,"scale",s.scale,u,a,n),bt(Boolean,h,"show",s.show,u,a,n),bt(O,h,"verticalOrigin",s.verticalOrigin,u,a,n),bt(String,h,"font",s.font,u,a,n),bt(I,h,"style",s.style,u,a,n)}}function Wt(e,t,i,r){var n=t.model;if(l(n)){var o,a=n.interval;l(a)&&(oi.iso8601=a,o=A.fromIso8601(oi));var s=e.model;l(s)||(e.model=s=new Q),bt(Boolean,s,"show",n.show,o,r,i),bt(Number,s,"scale",n.scale,o,r,i),bt(Number,s,"minimumPixelSize",n.minimumPixelSize,o,r,i),bt(R,s,"uri",n.gltf,o,r,i)}}function Gt(e,t,i,r){var n=t.path;if(l(n)){var o,a=n.interval;l(a)&&(oi.iso8601=a,o=A.fromIso8601(oi));var s=e.path;l(s)||(e.path=s=new K),bt(Boolean,s,"show",n.show,o,r,i),bt(Number,s,"width",n.width,o,r,i),bt(Number,s,"resolution",n.resolution,o,r,i),bt(Number,s,"leadTime",n.leadTime,o,r,i),bt(Number,s,"trailTime",n.trailTime,o,r,i),At(s,"material",n.material,o,r,i)}}function Ht(e,t,i,r){var n=t.point;if(l(n)){var a,s=n.interval;l(s)&&(oi.iso8601=s,a=A.fromIso8601(oi));var u=e.point;l(u)||(e.point=u=new $),bt(o,u,"color",n.color,a,r,i),bt(Number,u,"pixelSize",n.pixelSize,a,r,i),bt(o,u,"outlineColor",n.outlineColor,a,r,i),bt(Number,u,"outlineWidth",n.outlineWidth,a,r,i),bt(Boolean,u,"show",n.show,a,r,i)}}function qt(e,t,i,r){var n=t.polygon;if(l(n)){var a,s=n.interval;l(s)&&(oi.iso8601=s,a=A.fromIso8601(oi));var u=e.polygon;l(u)||(e.polygon=u=new et),bt(Boolean,u,"show",n.show,a,r,i),At(u,"material",n.material,a,r,i),bt(Number,u,"height",n.height,a,r,i),bt(Number,u,"extrudedHeight",n.extrudedHeight,a,r,i),bt(Number,u,"granularity",n.granularity,a,r,i),bt(N,u,"stRotation",n.stRotation,a,r,i),bt(Boolean,u,"fill",n.fill,a,r,i),bt(Boolean,u,"outline",n.outline,a,r,i),bt(o,u,"outlineColor",n.outlineColor,a,r,i),bt(Number,u,"outlineWidth",n.outlineWidth,a,r,i),bt(Boolean,u,"perPositionHeight",n.perPositionHeight,a,r,i),Nt(u,"hierarchy",n.positions,i)}}function jt(e,t,i,r){var n=t.rectangle;if(l(n)){var a,s=n.interval;l(s)&&(oi.iso8601=s,a=A.fromIso8601(oi));var u=e.rectangle;l(u)||(e.rectangle=u=new ot),bt(Boolean,u,"show",n.show,a,r,i),bt(b,u,"coordinates",n.coordinates,a,r,i),At(u,"material",n.material,a,r,i),bt(Number,u,"height",n.height,a,r,i),bt(Number,u,"extrudedHeight",n.extrudedHeight,a,r,i),bt(Number,u,"granularity",n.granularity,a,r,i),bt(N,u,"rotation",n.rotation,a,r,i),bt(N,u,"stRotation",n.stRotation,a,r,i),bt(Boolean,u,"fill",n.fill,a,r,i),bt(Boolean,u,"outline",n.outline,a,r,i),bt(o,u,"outlineColor",n.outlineColor,a,r,i),bt(Number,u,"outlineWidth",n.outlineWidth,a,r,i),bt(Boolean,u,"closeBottom",n.closeBottom,a,r,i),bt(Boolean,u,"closeTop",n.closeTop,a,r,i)}}function Yt(e,t,i,r){var n=t.wall;if(l(n)){var a,s=n.interval;l(s)&&(oi.iso8601=s,a=A.fromIso8601(oi));var u=e.wall;l(u)||(e.wall=u=new pt),bt(Boolean,u,"show",n.show,a,r,i),At(u,"material",n.material,a,r,i),bt(Array,u,"minimumHeights",n.minimumHeights,a,r,i),bt(Array,u,"maximumHeights",n.maximumHeights,a,r,i),bt(Number,u,"granularity",n.granularity,a,r,i),bt(Boolean,u,"fill",n.fill,a,r,i),bt(Boolean,u,"outline",n.outline,a,r,i),bt(o,u,"outlineColor",n.outlineColor,a,r,i),bt(Number,u,"outlineWidth",n.outlineWidth,a,r,i),Nt(u,"positions",n.positions,i)}}function Xt(e,t,i,r){var n=t.polyline;if(l(n)){var o,a=n.interval;l(a)&&(oi.iso8601=a,o=A.fromIso8601(oi));var s=e.polyline;l(s)||(e.polyline=s=new it),bt(Boolean,s,"show",n.show,o,r,i),bt(Number,s,"width",n.width,o,r,i),At(s,"material",n.material,o,r,i),bt(Boolean,s,"followSurface",n.followSurface,o,r,i),bt(Number,s,"granularity",n.granularity,o,r,i),Nt(s,"positions",n.positions,i)}}function Zt(e,t,i,r,n){var o=e.id;if(l(o)||(o=a()),$t=o,!l(n._version)&&"document"!==o)throw new T("The first CZML packet is required to be the document object.");if(e["delete"]===!0)t.removeById(o);else if("document"===o)zt(e,n);else{var s=t.getOrCreateEntity(o),u=e.parent;l(u)&&(s.parent=t.getOrCreateEntity(u));for(var c=i.length-1;c>-1;c--)i[c](s,e,t,r)}$t=void 0}function Jt(e){var t,i=e._documentPacket.clock;if(!l(i)){if(!l(e._clock)){var o=e._entityCollection.computeAvailability();if(!o.start.equals(g.MINIMUM_VALUE)){var a=o.start,u=o.stop,c=_.secondsDifference(u,a),h=Math.round(c/120);return t=new H,t.startTime=_.clone(a),t.stopTime=_.clone(u),t.clockRange=r.LOOP_STOP,t.multiplier=h,t.currentTime=_.clone(a),t.clockStep=n.SYSTEM_CLOCK_MULTIPLIER,e._clock=t,!0}}return!1}if(l(e._clock)?t=e._clock.clone():(t=new H,t.startTime=g.MINIMUM_VALUE.clone(),t.stopTime=g.MAXIMUM_VALUE.clone(),t.currentTime=g.MINIMUM_VALUE.clone(),t.clockRange=r.LOOP_STOP,t.clockStep=n.SYSTEM_CLOCK_MULTIPLIER,t.multiplier=1),l(i.interval)){oi.iso8601=i.interval;var d=A.fromIso8601(oi);t.startTime=d.start,t.stopTime=d.stop}return l(i.currentTime)&&(t.currentTime=_.fromIso8601(i.currentTime)),l(i.range)&&(t.clockRange=s(r[i.range],r.LOOP_STOP)),l(i.step)&&(t.clockStep=s(n[i.step],n.SYSTEM_CLOCK_MULTIPLIER)),l(i.multiplier)&&(t.multiplier=i.multiplier),t.equals(e._clock)?!1:(e._clock=t.clone(e._clock),!0)}function Qt(e,t,i,r){i=s(i,s.EMPTY_OBJECT);var n=t,o=i.sourceUri;return"string"==typeof t&&(n=w(t),o=s(o,t)),G.setLoading(e,!0),L(n,function(t){return Kt(e,t,o,r)}).otherwise(function(t){return G.setLoading(e,!1),e._error.raiseEvent(e,t),window.console.log(t),L.reject(t)})}function Kt(e,t,i,r){G.setLoading(e,!0);var n=e._entityCollection;r&&(e._version=void 0,e._documentPacket=new ai,n.removeAll()),si._processCzml(t,n,i,void 0,e);var o=Jt(e),a=e._documentPacket;return l(a.name)&&e._name!==a.name?(e._name=a.name,o=!0):!l(e._name)&&l(i)&&(e._name=m(i),o=!0),G.setLoading(e,!1),o&&e._changed.raiseEvent(e),e}var $t,ei=new t,ti=new P,ii=new i,ri=new A,ni={HERMITE:f,LAGRANGE:y,LINEAR:C},oi={iso8601:void 0},ai=function(){this.name=void 0,this.clock=void 0},si=function(e){this._name=e,this._changed=new d,this._error=new d,this._isLoading=!1,this._loading=new d,this._clock=void 0,this._documentPacket=new ai,this._version=void 0,this._entityCollection=new Y};return si.load=function(e,t){return(new si).load(e,t)},u(si.prototype,{name:{get:function(){return this._name}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}}}),si.updaters=[Bt,kt,Vt,Ut,Wt,Dt,Mt,Gt,Ht,qt,Xt,jt,It,Ot,Yt,Rt,Ft],si.prototype.process=function(e,t){return Qt(this,e,t,!1)},si.prototype.load=function(e,t){return Qt(this,e,t,!0)},si.processPacketData=bt,si.processPositionPacketData=Tt,si.processMaterialPacketData=At,si._processCzml=function(e,t,i,r,n){if(r=l(r)?r:si.updaters,v(e))for(var o=0,a=e.length;a>o;o++)Zt(e[o],t,r,i,n);else Zt(e,t,r,i,n)},si}),i("DataSources/DataSourceCollection",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../ThirdParty/when"],function(e,t,i,r,n,o,a){"use strict";var s=function(){this._dataSources=[],this._dataSourceAdded=new o,this._dataSourceRemoved=new o};return i(s.prototype,{length:{get:function(){return this._dataSources.length}},dataSourceAdded:{get:function(){return this._dataSourceAdded}},dataSourceRemoved:{get:function(){return this._dataSourceRemoved}}}),s.prototype.add=function(e){var t=this,i=this._dataSources;return a(e,function(e){return i===t._dataSources&&(t._dataSources.push(e),t._dataSourceAdded.raiseEvent(t,e)),e})},s.prototype.remove=function(t,i){i=e(i,!1);var r=this._dataSources.indexOf(t);return-1!==r?(this._dataSources.splice(r,1),this._dataSourceRemoved.raiseEvent(this,t),i&&"function"==typeof t.destroy&&t.destroy(),!0):!1},s.prototype.removeAll=function(t){t=e(t,!1);for(var i=this._dataSources,r=0,n=i.length;n>r;++r){var o=i[r];this._dataSourceRemoved.raiseEvent(this,o),t&&"function"==typeof o.destroy&&o.destroy()}this._dataSources=[]},s.prototype.contains=function(e){return-1!==this.indexOf(e)},s.prototype.indexOf=function(e){return this._dataSources.indexOf(e)},s.prototype.get=function(e){return this._dataSources[e]},s.prototype.isDestroyed=function(){return!1},s.prototype.destroy=function(){return this.removeAll(!0),r(this)},s}),i("DataSources/EllipseGeometryUpdater",["../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/EllipseGeometry","../Core/EllipseOutlineGeometry","../Core/Event","../Core/GeometryInstance","../Core/Iso8601","../Core/ShowGeometryInstanceAttribute","../Scene/MaterialAppearance","../Scene/PerInstanceColorAppearance","../Scene/Primitive","./ColorMaterialProperty","./ConstantProperty","./dynamicGeometryGetBoundingSphere","./MaterialProperty","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C){"use strict";var w=new v(e.WHITE),S=new g(!0),E=new g(!0),b=new g(!1),x=new g(e.BLACK),T=new e,P=function(e){this.id=e,this.vertexFormat=void 0,this.center=void 0,this.semiMajorAxis=void 0,this.semiMinorAxis=void 0,this.rotation=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.numberOfVerticalLines=void 0},A=function(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(A.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._isClosed=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new u,this._showProperty=void 0,this._materialProperty=void 0,this._hasConstantOutline=!0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._options=new P(e),this._onEntityPropertyChanged(e,"ellipse",e.ellipse,void 0)};n(A,{perInstanceColorAppearanceType:{value:m},materialAppearanceType:{value:p}}),n(A.prototype,{entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!r(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!r(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},isDynamic:{get:function(){return this._dynamic}},isClosed:{get:function(){return this._isClosed}},geometryChanged:{get:function(){return this._geometryChanged}}}),A.prototype.isOutlineVisible=function(e){var t=this._entity;return this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)},A.prototype.isFilled=function(e){var t=this._entity;return this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)},A.prototype.createFillGeometryInstance=function(i){var n,o,a=this._entity,l=a.isAvailable(i),u=new d(l&&a.isShowing&&this._showProperty.getValue(i)&&this._fillProperty.getValue(i));if(this._materialProperty instanceof v){var h=e.WHITE;r(this._materialProperty.color)&&(this._materialProperty.color.isConstant||l)&&(h=this._materialProperty.color.getValue(i)),o=t.fromColor(h),n={show:u,color:o}}else n={show:u};return new c({id:a,geometry:new s(this._options),attributes:n})},A.prototype.createOutlineGeometryInstance=function(i){var r=this._entity,n=r.isAvailable(i),o=C.getValueOrDefault(this._outlineColorProperty,i,e.BLACK);return new c({id:r,geometry:new l(this._options),attributes:{show:new d(n&&r.isShowing&&this._showProperty.getValue(i)&&this._showOutlineProperty.getValue(i)),color:t.fromColor(o)}})},A.prototype.isDestroyed=function(){return!1},A.prototype.destroy=function(){this._entitySubscription(),o(this)},A.prototype._onEntityPropertyChanged=function(e,t){if("availability"===t||"position"===t||"ellipse"===t){var n=this._entity.ellipse;if(!r(n))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var o=n.fill,a=r(o)&&o.isConstant?o.getValue(h.MINIMUM_VALUE):!0,s=n.outline,l=r(s);if(l&&s.isConstant&&(l=s.getValue(h.MINIMUM_VALUE)),!a&&!l)return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var u=this._entity.position,c=n.semiMajorAxis,d=n.semiMinorAxis,f=n.show;if(r(f)&&f.isConstant&&!f.getValue(h.MINIMUM_VALUE)||!r(u)||!r(c)||!r(d))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var g=i(n.material,w),_=g instanceof v;this._materialProperty=g,this._fillProperty=i(o,E),this._showProperty=i(f,S),this._showOutlineProperty=i(n.outline,b),this._outlineColorProperty=l?i(n.outlineColor,x):void 0;var y=n.rotation,T=n.height,P=n.extrudedHeight,A=n.granularity,D=n.stRotation,M=n.outlineWidth,I=n.numberOfVerticalLines;if(this._isClosed=r(P),this._fillEnabled=a,this._outlineEnabled=l,u.isConstant&&c.isConstant&&d.isConstant&&C.isConstant(y)&&C.isConstant(T)&&C.isConstant(P)&&C.isConstant(A)&&C.isConstant(D)&&C.isConstant(M)&&C.isConstant(I)){var O=this._options;O.vertexFormat=_?m.VERTEX_FORMAT:p.MaterialSupport.TEXTURED.vertexFormat,O.center=u.getValue(h.MINIMUM_VALUE,O.center),O.semiMajorAxis=c.getValue(h.MINIMUM_VALUE,O.semiMajorAxis),O.semiMinorAxis=d.getValue(h.MINIMUM_VALUE,O.semiMinorAxis),O.rotation=r(y)?y.getValue(h.MINIMUM_VALUE):void 0,O.height=r(T)?T.getValue(h.MINIMUM_VALUE):void 0,O.extrudedHeight=r(P)?P.getValue(h.MINIMUM_VALUE):void 0,O.granularity=r(A)?A.getValue(h.MINIMUM_VALUE):void 0,O.stRotation=r(D)?D.getValue(h.MINIMUM_VALUE):void 0,O.numberOfVerticalLines=r(I)?I.getValue(h.MINIMUM_VALUE):void 0,this._outlineWidth=r(M)?M.getValue(h.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}else this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this))}},A.prototype.createDynamicUpdater=function(e){return new D(e,this)};var D=function(e,t){this._primitives=e,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=t,this._options=new P(t._entity)};return D.prototype.update=function(i){var n=this._primitives;n.removeAndDestroy(this._primitive),n.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0;var o=this._geometryUpdater,a=o._entity,u=a.ellipse;if(a.isShowing&&a.isAvailable(i)&&C.getValueOrDefault(u.show,i,!0)){var h=this._options,d=C.getValueOrUndefined(a.position,i,h.center),v=C.getValueOrUndefined(u.semiMajorAxis,i),g=C.getValueOrUndefined(u.semiMinorAxis,i);if(r(d)&&r(v)&&r(g)){if(h.center=d,h.semiMajorAxis=v,h.semiMinorAxis=g,h.rotation=C.getValueOrUndefined(u.rotation,i),h.height=C.getValueOrUndefined(u.height,i),h.extrudedHeight=C.getValueOrUndefined(u.extrudedHeight,i),h.granularity=C.getValueOrUndefined(u.granularity,i),h.stRotation=C.getValueOrUndefined(u.stRotation,i),h.numberOfVerticalLines=C.getValueOrUndefined(u.numberOfVerticalLines,i),C.getValueOrDefault(u.fill,i,!0)){var _=y.getValue(i,o.fillMaterialProperty,this._material);this._material=_;var w=new p({material:_,translucent:_.isTranslucent(),closed:r(h.extrudedHeight)});h.vertexFormat=w.vertexFormat,this._primitive=n.add(new f({geometryInstances:new c({id:a,geometry:new s(h)}),appearance:w,asynchronous:!1}))}if(C.getValueOrDefault(u.outline,i,!1)){h.vertexFormat=m.VERTEX_FORMAT;var S=C.getValueOrClonedDefault(u.outlineColor,i,e.BLACK,T),E=C.getValueOrDefault(u.outlineWidth,i,1),b=1!==S.alpha;this._outlinePrimitive=n.add(new f({geometryInstances:new c({id:a,geometry:new l(h),attributes:{color:t.fromColor(S)}}),appearance:new m({flat:!0,translucent:b,renderState:{lineWidth:o._scene.clampLineWidth(E)}}),asynchronous:!1}))}}}},D.prototype.getBoundingSphere=function(e,t){return _(e,this._primitive,this._outlinePrimitive,t)},D.prototype.isDestroyed=function(){return!1},D.prototype.destroy=function(){var e=this._primitives;e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),o(this)},A}),i("DataSources/EllipsoidGeometryUpdater",["../Core/Cartesian3","../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/EllipsoidGeometry","../Core/EllipsoidOutlineGeometry","../Core/Event","../Core/GeometryInstance","../Core/Iso8601","../Core/Matrix4","../Core/ShowGeometryInstanceAttribute","../Scene/MaterialAppearance","../Scene/PerInstanceColorAppearance","../Scene/Primitive","../Scene/SceneMode","./ColorMaterialProperty","./ConstantProperty","./dynamicGeometryGetBoundingSphere","./MaterialProperty","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E){"use strict";var b=new y(t.WHITE),x=new C(!0),T=new C(!0),P=new C(!1),A=new C(t.BLACK),D=new e,M=new t,I=new e(1,1,1),O=function(e){this.id=e,this.vertexFormat=void 0,this.radii=void 0,this.stackPartitions=void 0,this.slicePartitions=void 0,this.subdivisions=void 0},R=function(e,t){this._scene=t,this._entity=e,this._entitySubscription=e.definitionChanged.addEventListener(R.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new c,this._showProperty=void 0,this._materialProperty=void 0,this._hasConstantOutline=!0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._options=new O(e),this._onEntityPropertyChanged(e,"ellipsoid",e.ellipsoid,void 0)};o(R,{perInstanceColorAppearanceType:{value:v},materialAppearanceType:{value:f}}),o(R.prototype,{entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!n(this._entity.availability)&&E.isConstant(this._showProperty)&&E.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!n(this._entity.availability)&&E.isConstant(this._showProperty)&&E.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!0},geometryChanged:{get:function(){return this._geometryChanged}}}),R.prototype.isOutlineVisible=function(e){var t=this._entity;return this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)},R.prototype.isFilled=function(e){var t=this._entity;return this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)},R.prototype.createFillGeometryInstance=function(e){var r,o,a=this._entity,s=a.isAvailable(e),u=new m(s&&a.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e));if(this._materialProperty instanceof y){var c=t.WHITE;n(this._materialProperty.color)&&(this._materialProperty.color.isConstant||s)&&(c=this._materialProperty.color.getValue(e)),o=i.fromColor(c),r={show:u,color:o}}else r={show:u};return new h({id:a,geometry:new l(this._options),modelMatrix:a._getModelMatrix(d.MINIMUM_VALUE),attributes:r})},R.prototype.createOutlineGeometryInstance=function(e){var r=this._entity,n=r.isAvailable(e),o=E.getValueOrDefault(this._outlineColorProperty,e,t.BLACK);return new h({id:r,geometry:new u(this._options),modelMatrix:r._getModelMatrix(d.MINIMUM_VALUE),attributes:{show:new m(n&&r.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:i.fromColor(o)}})},R.prototype.isDestroyed=function(){return!1},R.prototype.destroy=function(){this._entitySubscription(),a(this)},R.prototype._onEntityPropertyChanged=function(e,t){if("availability"===t||"position"===t||"orientation"===t||"ellipsoid"===t){var i=e.ellipsoid;if(!n(i))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var o=i.fill,a=n(o)&&o.isConstant?o.getValue(d.MINIMUM_VALUE):!0,s=i.outline,l=n(s);if(l&&s.isConstant&&(l=s.getValue(d.MINIMUM_VALUE)),!a&&!l)return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var u=e.position,c=i.radii,h=i.show;if(n(h)&&h.isConstant&&!h.getValue(d.MINIMUM_VALUE)||!n(u)||!n(c))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var p=r(i.material,b),m=p instanceof y;this._materialProperty=p,this._fillProperty=r(o,T),this._showProperty=r(h,x),this._showOutlineProperty=r(i.outline,P),this._outlineColorProperty=l?r(i.outlineColor,A):void 0,this._fillEnabled=a,this._outlineEnabled=l;var g=i.stackPartitions,_=i.slicePartitions,C=i.outlineWidth,w=i.subdivisions;if(u.isConstant&&E.isConstant(e.orientation)&&c.isConstant&&E.isConstant(g)&&E.isConstant(_)&&E.isConstant(C)&&E.isConstant(w)){var S=this._options;S.vertexFormat=m?v.VERTEX_FORMAT:f.MaterialSupport.TEXTURED.vertexFormat,S.radii=c.getValue(d.MINIMUM_VALUE,S.radii),S.stackPartitions=n(g)?g.getValue(d.MINIMUM_VALUE):void 0,S.slicePartitions=n(_)?_.getValue(d.MINIMUM_VALUE):void 0,S.subdivisions=n(w)?w.getValue(d.MINIMUM_VALUE):void 0,this._outlineWidth=n(C)?C.getValue(d.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}else this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this))}},R.prototype.createDynamicUpdater=function(e){return new L(e,this)};var L=function(e,t){this._entity=t._entity,this._scene=t._scene,this._primitives=e,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=t,this._options=new O(t._entity),this._modelMatrix=new p,this._material=void 0,this._attributes=void 0,this._outlineAttributes=void 0,this._lastSceneMode=void 0,this._lastShow=void 0,this._lastOutlineShow=void 0,this._lastOutlineWidth=void 0,this._lastOutlineColor=void 0};return L.prototype.update=function(e){var o=this._entity,a=o.ellipsoid;if(!o.isShowing||!o.isAvailable(e)||!E.getValueOrDefault(a.show,e,!0))return n(this._primitive)&&(this._primitive.show=!1),n(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1),void 0;var s=E.getValueOrUndefined(a.radii,e,D),c=o._getModelMatrix(e,this._modelMatrix);if(!n(c)||!n(s))return n(this._primitive)&&(this._primitive.show=!1),n(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1),void 0;var d,y=E.getValueOrDefault(a.fill,e,!0),C=E.getValueOrDefault(a.outline,e,!1),w=E.getValueOrClonedDefault(a.outlineColor,e,t.BLACK,M),x=S.getValue(e,r(a.material,b),this._material);this._material=x;var T=E.getValueOrUndefined(a.stackPartitions,e),P=E.getValueOrUndefined(a.slicePartitions,e),A=E.getValueOrUndefined(a.subdivisions,e),O=E.getValueOrDefault(a.outlineWidth,e,1),R=this._scene.mode,L=R===_.SCENE3D,N=this._options,F=!L||this._lastSceneMode!==R||!n(this._primitive)||N.stackPartitions!==T||N.slicePartitions!==P||N.subdivisions!==A||this._lastOutlineWidth!==O;if(F){var B=this._primitives;B.removeAndDestroy(this._primitive),B.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0,this._lastSceneMode=R,this._lastOutlineWidth=O,N.stackPartitions=T,N.slicePartitions=P,N.subdivisions=A,N.radii=L?I:s,d=new f({material:x,translucent:x.isTranslucent(),closed:!0}),N.vertexFormat=d.vertexFormat,this._primitive=B.add(new g({geometryInstances:new h({id:o,geometry:new l(N),modelMatrix:L?void 0:c,attributes:{show:new m(y)}}),appearance:d,asynchronous:!1})),N.vertexFormat=v.VERTEX_FORMAT,this._outlinePrimitive=B.add(new g({geometryInstances:new h({id:o,geometry:new u(N),modelMatrix:L?void 0:c,attributes:{show:new m(C),color:i.fromColor(w)}}),appearance:new v({flat:!0,translucent:1!==w.alpha,renderState:{lineWidth:this._geometryUpdater._scene.clampLineWidth(O)}}),asynchronous:!1})),this._lastShow=y,this._lastOutlineShow=C,this._lastOutlineColor=t.clone(w,this._lastOutlineColor)}else if(this._primitive.ready){var z=this._primitive,k=this._outlinePrimitive;z.show=!0,k.show=!0,d=z.appearance,d.material=x;var V=this._attributes;n(V)||(V=z.getGeometryInstanceAttributes(o),this._attributes=V),y!==this._lastShow&&(V.show=m.toValue(y,V.show),this._lastShow=y);var U=this._outlineAttributes;n(U)||(U=k.getGeometryInstanceAttributes(o),this._outlineAttributes=U),C!==this._lastOutlineShow&&(U.show=m.toValue(C,U.show),this._lastOutlineShow=C),t.equals(w,this._lastOutlineColor)||(U.color=i.toValue(w,U.color),t.clone(w,this._lastOutlineColor))}L&&(s.x=Math.max(s.x,.001),s.y=Math.max(s.y,.001),s.z=Math.max(s.z,.001),c=p.multiplyByScale(c,s,c),this._primitive.modelMatrix=c,this._outlinePrimitive.modelMatrix=c)},L.prototype.getBoundingSphere=function(e,t){return w(e,this._primitive,this._outlinePrimitive,t)},L.prototype.isDestroyed=function(){return!1},L.prototype.destroy=function(){var e=this._primitives;e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),a(this)},R}),i("DataSources/StaticGeometryColorBatch",["../Core/AssociativeArray","../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/defined","../Core/ShowGeometryInstanceAttribute","../Scene/Primitive","./BoundingSphereState"],function(e,t,i,r,n,o,a){"use strict";var s=new t,l=function(t,i,r,n){this.translucent=i,this.appearanceType=r,this.closed=n,this.primitives=t,this.createPrimitive=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new e,this.updaters=new e,this.updatersWithAttributes=new e,this.attributes=new e,this.subscriptions=new e,this.showsUpdated=new e,this.itemsToRemove=[]};l.prototype.add=function(e,t){var i=e.entity.id;if(this.createPrimitive=!0,this.geometry.set(i,t),this.updaters.set(i,e),e.hasConstantFill&&e.fillMaterialProperty.isConstant){var r=this;this.subscriptions.set(i,e.entity.definitionChanged.addEventListener(function(t,i){"isShowing"===i&&r.showsUpdated.set(t.id,e)}))}else this.updatersWithAttributes.set(i,e)},l.prototype.remove=function(e){var t=e.entity.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);var i=this.subscriptions.get(t);r(i)&&(i(),this.subscriptions.remove(t))}},l.prototype.update=function(e){var a,l,u=!0,c=0,h=this.primitive,d=this.primitives;if(this.createPrimitive){r(h)&&(r(this.oldPrimitive)?d.remove(h):this.oldPrimitive=h);var p=this.geometry.values,m=p.length;if(m>0){for(l=0;m>l;l++){var f=p[l],v=f.attributes;a=this.attributes.get(f.id.id),r(a)&&(r(v.show)&&(v.show.value=a.show),r(v.color)&&(v.color.value=a.color))}h=new o({asynchronous:!0,geometryInstances:p,appearance:new this.appearanceType({translucent:this.translucent,closed:this.closed})}),d.add(h),u=!1}this.attributes.removeAll(),this.primitive=h,this.createPrimitive=!1}else if(r(h)&&h.ready){r(this.oldPrimitive)&&(d.remove(this.oldPrimitive),this.oldPrimitive=void 0);var g=this.updatersWithAttributes.values,_=g.length;for(l=0;_>l;l++){var y=g[l],C=this.geometry.get(y.entity.id);if(a=this.attributes.get(C.id.id),r(a)||(a=h.getGeometryInstanceAttributes(C.id),this.attributes.set(C.id.id,a)),!y.fillMaterialProperty.isConstant){var w=y.fillMaterialProperty.color;w.getValue(e,s),t.equals(a._lastColor,s)||(a._lastColor=t.clone(s,a._lastColor),a.color=i.toValue(s,a.color),(this.translucent&&255===a.color[3]||!this.translucent&&255!==a.color[3])&&(this.itemsToRemove[c++]=y))}var S=y.entity.isShowing&&(y.hasConstantFill||y.isFilled(e)),E=1===a.show[0];S!==E&&(a.show=n.toValue(S,a.show))}this.updateShows(h)}else r(h)&&!h.ready&&(u=!1);return this.itemsToRemove.length=c,u},l.prototype.updateShows=function(e){for(var t=this.showsUpdated.values,i=t.length,o=0;i>o;o++){var a=t[o],s=this.geometry.get(a.entity.id),l=this.attributes.get(s.id.id);r(l)||(l=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,l));var u=a.entity.isShowing,c=1===l.show[0];u!==c&&(l.show=n.toValue(u,l.show))}this.showsUpdated.removeAll()},l.prototype.contains=function(e){return this.updaters.contains(e.id)},l.prototype.getBoundingSphere=function(e,t){var i=this.primitive;if(!i.ready)return a.PENDING;var n=i.getGeometryInstanceAttributes(e);return!r(n)||!r(n.boundingSphere)||r(n.show)&&0===n.show[0]?a.FAILED:(n.boundingSphere.clone(t),a.DONE)},l.prototype.removeAllPrimitives=function(){var e=this.primitives,t=this.primitive;r(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());var i=this.oldPrimitive;r(i)&&(e.remove(i),this.oldPrimitive=void 0)};var u=function(e,t,i){this._solidBatch=new l(e,!1,t,i),this._translucentBatch=new l(e,!0,t,i)};return u.prototype.add=function(e,t){var i=t.createFillGeometryInstance(e);255===i.attributes.color.value[3]?this._solidBatch.add(t,i):this._translucentBatch.add(t,i)},u.prototype.remove=function(e){this._solidBatch.remove(e)||this._translucentBatch.remove(e)},u.prototype.update=function(e){var t,i,r=this._solidBatch.update(e); +r=this._translucentBatch.update(e)&&r;var n=this._solidBatch.itemsToRemove,o=n.length;if(o>0)for(t=0;o>t;t++)i=n[t],this._solidBatch.remove(i),this._translucentBatch.add(i,i.createFillGeometryInstance(e));n=this._translucentBatch.itemsToRemove;var a=n.length;if(a>0)for(t=0;a>t;t++)i=n[t],this._translucentBatch.remove(i),this._solidBatch.add(i,i.createFillGeometryInstance(e));return(o>0||a>0)&&(r=this._solidBatch.update(e)&&r,r=this._translucentBatch.update(e)&&r),r},u.prototype.getBoundingSphere=function(e,t){return this._solidBatch.contains(e)?this._solidBatch.getBoundingSphere(e,t):this._translucentBatch.contains(e)?this._translucentBatch.getBoundingSphere(e,t):a.FAILED},u.prototype.removeAllPrimitives=function(){this._solidBatch.removeAllPrimitives(),this._translucentBatch.removeAllPrimitives()},u}),i("DataSources/StaticGeometryPerMaterialBatch",["../Core/AssociativeArray","../Core/defined","../Core/ShowGeometryInstanceAttribute","../Scene/Primitive","./BoundingSphereState","./MaterialProperty"],function(e,t,i,r,n,o){"use strict";var a=function(t,i,r,n){this.primitives=t,this.appearanceType=i,this.materialProperty=r,this.closed=n,this.updaters=new e,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new e,this.material=void 0,this.updatersWithAttributes=new e,this.attributes=new e,this.invalidated=!1,this.removeMaterialSubscription=r.definitionChanged.addEventListener(a.prototype.onMaterialChanged,this),this.subscriptions=new e,this.showsUpdated=new e};a.prototype.onMaterialChanged=function(){this.invalidated=!0},a.prototype.isMaterial=function(e){var i=this.materialProperty,r=e.fillMaterialProperty;return r===i?!0:t(i)?i.equals(r):!1},a.prototype.add=function(e,t){var i=t.entity.id;if(this.updaters.set(i,t),this.geometry.set(i,t.createFillGeometryInstance(e)),t.hasConstantFill&&t.fillMaterialProperty.isConstant){var r=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(e,i){"isShowing"===i&&r.showsUpdated.set(e.id,t)}))}else this.updatersWithAttributes.set(i,t);this.createPrimitive=!0},a.prototype.remove=function(e){var i=e.entity.id,r=this.updaters.remove(i);if(r){this.geometry.remove(i),this.updatersWithAttributes.remove(i);var n=this.subscriptions.get(i);t(n)&&(n(),this.subscriptions.remove(i))}return this.createPrimitive=r,r},a.prototype.update=function(e){var n,a,s=!0,l=this.primitive,u=this.primitives,c=this.geometry.values;if(this.createPrimitive){t(l)&&(t(this.oldPrimitive)?u.remove(l):this.oldPrimitive=l);var h=c.length;if(h>0){for(a=0;h>a;a++){var d=c[a],p=d.attributes;n=this.attributes.get(d.id.id),t(n)&&(t(p.show)&&(p.show.value=n.show),t(p.color)&&(p.color.value=n.color))}this.material=o.getValue(e,this.materialProperty,this.material),l=new r({asynchronous:!0,geometryInstances:c,appearance:new this.appearanceType({material:this.material,translucent:this.material.isTranslucent(),closed:this.closed})}),u.add(l),s=!1}this.attributes.removeAll(),this.primitive=l,this.createPrimitive=!1}else if(t(l)&&l.ready){t(this.oldPrimitive)&&(u.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=o.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material;var m=this.updatersWithAttributes.values,f=m.length;for(a=0;f>a;a++){var v=m[a],g=v.entity,_=this.geometry.get(g.id);n=this.attributes.get(_.id.id),t(n)||(n=l.getGeometryInstanceAttributes(_.id),this.attributes.set(_.id.id,n));var y=g.isShowing&&(v.hasConstantFill||v.isFilled(e)),C=1===n.show[0];y!==C&&(n.show=i.toValue(y,n.show))}this.updateShows(l)}else t(l)&&!l.ready&&(s=!1);return s},a.prototype.updateShows=function(e){for(var r=this.showsUpdated.values,n=r.length,o=0;n>o;o++){var a=r[o],s=a.entity,l=this.geometry.get(s.id),u=this.attributes.get(l.id.id);t(u)||(u=e.getGeometryInstanceAttributes(l.id),this.attributes.set(l.id.id,u));var c=s.isShowing,h=1===u.show[0];c!==h&&(u.show=i.toValue(c,u.show))}this.showsUpdated.removeAll()},a.prototype.contains=function(e){return this.updaters.contains(e.id)},a.prototype.getBoundingSphere=function(e,i){var r=this.primitive;if(!r.ready)return n.PENDING;var o=r.getGeometryInstanceAttributes(e);return!t(o)||!t(o.boundingSphere)||t(o.show)&&0===o.show[0]?n.FAILED:(o.boundingSphere.clone(i),n.DONE)},a.prototype.destroy=function(){var e=this.primitive,i=this.primitives;t(e)&&i.remove(e);var r=this.oldPrimitive;t(r)&&i.remove(r),this.removeMaterialSubscription()};var s=function(e,t,i){this._items=[],this._primitives=e,this._appearanceType=t,this._closed=i};return s.prototype.add=function(e,t){for(var i=this._items,r=i.length,n=0;r>n;n++){var o=i[n];if(o.isMaterial(t))return o.add(e,t),void 0}var s=new a(this._primitives,this._appearanceType,t.fillMaterialProperty,this._closed);s.add(e,t),i.push(s)},s.prototype.remove=function(e){for(var t=this._items,i=t.length,r=i-1;r>=0;r--){var n=t[r];if(n.remove(e)){0===n.updaters.length&&(t.splice(r,1),n.destroy());break}}},s.prototype.update=function(e){var t,i=this._items,r=i.length;for(t=r-1;t>=0;t--){var n=i[t];if(n.invalidated){i.splice(t,1);for(var o=n.updaters.values,a=o.length,s=0;a>s;s++)this.add(e,o[s]);n.destroy()}}var l=!0;for(t=0;r>t;t++)l=i[t].update(e)&&l;return l},s.prototype.getBoundingSphere=function(e,t){for(var i=this._items,r=i.length,o=0;r>o;o++){var a=i[o];if(a.contains(e))return a.getBoundingSphere(e,t)}return n.FAILED},s.prototype.removeAllPrimitives=function(){for(var e=this._items,t=e.length,i=0;t>i;i++)e[i].destroy();this._items.length=0},s}),i("DataSources/StaticOutlineGeometryBatch",["../Core/AssociativeArray","../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/defined","../Core/ShowGeometryInstanceAttribute","../Scene/PerInstanceColorAppearance","../Scene/Primitive","./BoundingSphereState"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(t,i,r){this.translucent=i,this.primitives=t,this.createPrimitive=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new e,this.updaters=new e,this.updatersWithAttributes=new e,this.attributes=new e,this.itemsToRemove=[],this.width=r,this.subscriptions=new e,this.showsUpdated=new e};l.prototype.add=function(e,t){var i=e.entity.id;if(this.createPrimitive=!0,this.geometry.set(i,t),this.updaters.set(i,e),e.hasConstantOutline&&e.outlineColorProperty.isConstant){var r=this;this.subscriptions.set(i,e.entity.definitionChanged.addEventListener(function(t,i){"isShowing"===i&&r.showsUpdated.set(t.id,e)}))}else this.updatersWithAttributes.set(i,e)},l.prototype.remove=function(e){var t=e.entity.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);var i=this.subscriptions.get(t);r(i)&&(i(),this.subscriptions.remove(t))}};var u=new t;l.prototype.update=function(e){var s,l,c=!0,h=0,d=this.primitive,p=this.primitives;if(this.createPrimitive){r(d)&&(r(this.oldPrimitive)?p.remove(d):this.oldPrimitive=d);var m=this.geometry.values,f=m.length;if(f>0){for(l=0;f>l;l++){var v=m[l],g=v.attributes;s=this.attributes.get(v.id.id),r(s)&&(r(g.show)&&(g.show.value=s.show),r(g.color)&&(g.color.value=s.color))}d=new a({asynchronous:!0,geometryInstances:m,appearance:new o({flat:!0,translucent:this.translucent,renderState:{lineWidth:this.width}})}),p.add(d),c=!1}this.attributes.removeAll(),this.primitive=d,this.createPrimitive=!1}else if(r(d)&&d.ready){r(this.oldPrimitive)&&(p.remove(this.oldPrimitive),this.oldPrimitive=void 0);var _=this.updatersWithAttributes.values,y=_.length;for(l=0;y>l;l++){var C=_[l],w=this.geometry.get(C.entity.id);if(s=this.attributes.get(w.id.id),r(s)||(s=d.getGeometryInstanceAttributes(w.id),this.attributes.set(w.id.id,s)),!C.outlineColorProperty.isConstant){var S=C.outlineColorProperty;S.getValue(e,u),t.equals(s._lastColor,u)||(s._lastColor=t.clone(u,s._lastColor),s.color=i.toValue(u,s.color),(this.translucent&&255===s.color[3]||!this.translucent&&255!==s.color[3])&&(this.itemsToRemove[h++]=C))}var E=C.entity.isShowing&&(C.hasConstantOutline||C.isOutlineVisible(e)),b=1===s.show[0];E!==b&&(s.show=n.toValue(E,s.show))}this.updateShows(d)}else r(d)&&!d.ready&&(c=!1);return this.itemsToRemove.length=h,c},l.prototype.updateShows=function(e){for(var t=this.showsUpdated.values,i=t.length,o=0;i>o;o++){var a=t[o],s=this.geometry.get(a.entity.id),l=this.attributes.get(s.id.id);r(l)||(l=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,l));var u=a.entity.isShowing,c=1===l.show[0];u!==c&&(l.show=n.toValue(u,l.show))}this.showsUpdated.removeAll()},l.prototype.contains=function(e){return this.updaters.contains(e.id)},l.prototype.getBoundingSphere=function(e,t){var i=this.primitive;if(!i.ready)return s.PENDING;var n=i.getGeometryInstanceAttributes(e);return!r(n)||!r(n.boundingSphere)||r(n.show)&&0===n.show[0]?s.FAILED:(n.boundingSphere.clone(t),s.DONE)},l.prototype.removeAllPrimitives=function(){var e=this.primitives,t=this.primitive;r(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());var i=this.oldPrimitive;r(i)&&(e.remove(i),this.oldPrimitive=void 0)};var c=function(t,i){this._primitives=t,this._scene=i,this._solidBatches=new e,this._translucentBatches=new e};return c.prototype.add=function(e,t){var i,n,o=t.createOutlineGeometryInstance(e),a=this._scene.clampLineWidth(t.outlineWidth);255===o.attributes.color.value[3]?(i=this._solidBatches,n=i.get(a),r(n)||(n=new l(this._primitives,!1,a),i.set(a,n)),n.add(t,o)):(i=this._translucentBatches,n=i.get(a),r(n)||(n=new l(this._primitives,!0,a),i.set(a,n)),n.add(t,o))},c.prototype.remove=function(e){var t,i=this._solidBatches.values,r=i.length;for(t=0;r>t;t++)if(i[t].remove(e))return;var n=this._translucentBatches.values,o=n.length;for(t=0;o>t;t++)if(n[t].remove(e))return},c.prototype.update=function(e){var t,i,r,n,o,a=this._solidBatches.values,s=a.length,l=this._translucentBatches.values,u=l.length,c=!0,h=!1;do{for(h=!1,i=0;s>i;i++){n=a[i],c=n.update(e),o=n.itemsToRemove;var d=o.length;if(d>0)for(h=!0,t=0;d>t;t++)r=o[t],n.remove(r),this.add(e,r)}for(i=0;u>i;i++){n=l[i],c=n.update(e),o=n.itemsToRemove;var p=o.length;if(p>0)for(h=!0,t=0;p>t;t++)r=o[t],n.remove(r),this.add(e,r)}}while(h);return c},c.prototype.getBoundingSphere=function(e,t){var i,r=this._solidBatches.values,n=r.length;for(i=0;n>i;i++){var o=r[i];if(o.contains(e))return o.getBoundingSphere(e,t)}var a=this._translucentBatches.values,l=a.length;for(i=0;l>i;i++){var u=a[i];if(u.contains(e))return u.getBoundingSphere(e,t)}return s.FAILED},c.prototype.removeAllPrimitives=function(){var e,t=this._solidBatches.values,i=t.length;for(e=0;i>e;e++)t[e].removeAllPrimitives();var r=this._translucentBatches.values,n=r.length;for(e=0;n>e;e++)r[e].removeAllPrimitives()},c}),i("DataSources/GeometryVisualizer",["../Core/AssociativeArray","../Core/BoundingSphere","../Core/defined","../Core/destroyObject","../Core/DeveloperError","./BoundingSphereState","./ColorMaterialProperty","./StaticGeometryColorBatch","./StaticGeometryPerMaterialBatch","./StaticOutlineGeometryBatch"],function(e,t,i,r,n,o,a,s,l,u){"use strict";function c(e,t){for(var i=e._batches,r=i.length,n=0;r>n;n++)i[n].remove(t)}function h(e,t,i){return i.isDynamic?(e._dynamicBatch.add(t,i),void 0):(i.outlineEnabled&&e._outlineBatch.add(t,i),i.fillEnabled&&(i.isClosed?i.fillMaterialProperty instanceof a?e._closedColorBatch.add(t,i):e._closedMaterialBatch.add(t,i):i.fillMaterialProperty instanceof a?e._openColorBatch.add(t,i):e._openMaterialBatch.add(t,i)),void 0)}var d=[],p=function(t){this._primitives=t,this._dynamicUpdaters=new e};p.prototype.add=function(e,t){this._dynamicUpdaters.set(t.entity.id,t.createDynamicUpdater(this._primitives))},p.prototype.remove=function(e){var t=e.entity.id,r=this._dynamicUpdaters.get(t);i(r)&&(this._dynamicUpdaters.remove(t),r.destroy())},p.prototype.update=function(e){for(var t=this._dynamicUpdaters.values,i=0,r=t.length;r>i;i++)t[i].update(e);return!0},p.prototype.removeAllPrimitives=function(){for(var e=this._dynamicUpdaters.values,t=0,i=e.length;i>t;t++)e[t].destroy();this._dynamicUpdaters.removeAll()},p.prototype.getBoundingSphere=function(e,t){var r=this._dynamicUpdaters.get(e.id);return i(r)&&i(r.getBoundingSphere)?r.getBoundingSphere(e,t):o.FAILED};var m=function(t,i,r){this._type=t;var n=i.primitives;this._scene=i,this._primitives=n,this._entityCollection=void 0,this._addedObjects=new e,this._removedObjects=new e,this._changedObjects=new e,this._outlineBatch=new u(n,i),this._closedColorBatch=new s(n,t.perInstanceColorAppearanceType,!0),this._closedMaterialBatch=new l(n,t.materialAppearanceType,!0),this._openColorBatch=new s(n,t.perInstanceColorAppearanceType,!1),this._openMaterialBatch=new l(n,t.materialAppearanceType,!1),this._dynamicBatch=new p(n),this._batches=[this._closedColorBatch,this._closedMaterialBatch,this._openColorBatch,this._openMaterialBatch,this._dynamicBatch,this._outlineBatch],this._subscriptions=new e,this._updaters=new e,this._entityCollection=r,r.collectionChanged.addEventListener(m.prototype._onCollectionChanged,this),this._onCollectionChanged(r,r.values,d)};m.prototype.update=function(e){var t,i,r,n,o=this._addedObjects,a=o.values,s=this._removedObjects,l=s.values,u=this._changedObjects,d=u.values;for(t=d.length-1;t>-1;t--)i=d[t],r=i.id,n=this._updaters.get(r),n.entity===i?(c(this,n),h(this,e,n)):(l.push(i),a.push(i));for(t=l.length-1;t>-1;t--)i=l[t],r=i.id,n=this._updaters.get(r),c(this,n),n.destroy(),this._updaters.remove(r),this._subscriptions.get(r)(),this._subscriptions.remove(r);for(t=a.length-1;t>-1;t--)i=a[t],r=i.id,n=new this._type(i,this._scene),this._updaters.set(r,n),h(this,e,n),this._subscriptions.set(r,n.geometryChanged.addEventListener(m._onGeometryChanged,this));o.removeAll(),s.removeAll(),u.removeAll();var p=!0,f=this._batches,v=f.length;for(t=0;v>t;t++)p=f[t].update(e)&&p;return p};var f=[],v=new t;return m.prototype.getBoundingSphere=function(e,i){for(var r=f,n=v,a=0,s=o.DONE,l=this._batches,u=l.length,c=0;u>c;c++){if(s=l[c].getBoundingSphere(e,n),s===o.PENDING)return o.PENDING;s===o.DONE&&(r[a]=t.clone(n,r[a]),a++)}return 0===a?o.FAILED:(r.length=a,t.fromBoundingSpheres(r,i),o.DONE)},m.prototype.isDestroyed=function(){return!1},m.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(m.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();var e,t=this._batches,i=t.length;for(e=0;i>e;e++)t[e].removeAllPrimitives();var n=this._subscriptions.values;for(i=n.length,e=0;i>e;e++)n[e]();return this._subscriptions.removeAll(),r(this)},m._onGeometryChanged=function(e){var t=this._removedObjects,r=this._changedObjects,n=e.entity,o=n.id;i(t.get(o))||i(r.get(o))||r.set(o,n)},m.prototype._onCollectionChanged=function(e,t,i){var r,n,o,a=this._addedObjects,s=this._removedObjects,l=this._changedObjects;for(r=i.length-1;r>-1;r--)o=i[r],n=o.id,a.remove(n)||(s.set(n,o),l.remove(n));for(r=t.length-1;r>-1;r--)o=t[r],n=o.id,s.remove(n)?l.set(n,o):a.set(n,o)},m}),i("Scene/Label",["../Core/Cartesian2","../Core/Cartesian3","../Core/Color","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/NearFarScalar","./Billboard","./HeightReference","./HorizontalOrigin","./LabelStyle","./VerticalOrigin"],function(e,t,i,r,n,o,a,s,l,u,c,h,d){"use strict";function p(e){e._rebindAllGlyphs||e._repositionAllGlyphs||e._labelCollection._labelsToUpdate.push(e),e._rebindAllGlyphs=!0}function m(e){e._rebindAllGlyphs||e._repositionAllGlyphs||e._labelCollection._labelsToUpdate.push(e),e._repositionAllGlyphs=!0}var f=function(n,o){n=r(n,r.EMPTY_OBJECT),this._text=r(n.text,""),this._show=r(n.show,!0),this._font=r(n.font,"30px sans-serif"),this._fillColor=i.clone(r(n.fillColor,i.WHITE)),this._outlineColor=i.clone(r(n.outlineColor,i.BLACK)),this._outlineWidth=r(n.outlineWidth,1),this._style=r(n.style,h.FILL),this._verticalOrigin=r(n.verticalOrigin,d.BOTTOM),this._horizontalOrigin=r(n.horizontalOrigin,c.LEFT),this._pixelOffset=e.clone(r(n.pixelOffset,e.ZERO)),this._eyeOffset=t.clone(r(n.eyeOffset,t.ZERO)),this._position=t.clone(r(n.position,t.ZERO)),this._scale=r(n.scale,1),this._id=n.id,this._translucencyByDistance=n.translucencyByDistance,this._pixelOffsetScaleByDistance=n.pixelOffsetScaleByDistance,this._heightReference=r(n.heightReference,u.NONE),this._labelCollection=o,this._glyphs=[],this._rebindAllGlyphs=!0,this._repositionAllGlyphs=!0,this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=void 0,this._updateClamping()};return o(f.prototype,{show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;for(var t=this._glyphs,i=0,r=t.length;r>i;i++){var o=t[i];n(o.billboard)&&(o.billboard.show=e)}}}},position:{get:function(){return this._position},set:function(e){var i=this._position;if(!t.equals(i,e))if(t.clone(e,i),this._heightReference===u.NONE)for(var r=this._glyphs,o=0,a=r.length;a>o;o++){var s=r[o];n(s.billboard)&&(s.billboard.position=e)}else this._updateClamping()}},heightReference:{get:function(){return this._heightReference},set:function(e){e!==this._heightReference&&(this._heightReference=e,this._updateClamping())}},text:{get:function(){return this._text},set:function(e){this._text!==e&&(this._text=e,p(this))}},font:{get:function(){return this._font},set:function(e){this._font!==e&&(this._font=e,p(this))}},fillColor:{get:function(){return this._fillColor},set:function(e){var t=this._fillColor;i.equals(t,e)||(i.clone(e,t),p(this))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){var t=this._outlineColor;i.equals(t,e)||(i.clone(e,t),p(this))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,p(this))}},style:{get:function(){return this._style},set:function(e){this._style!==e&&(this._style=e,p(this))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(t){var i=this._pixelOffset;if(!e.equals(i,t)){e.clone(t,i);for(var r=this._glyphs,o=0,a=r.length;a>o;o++){var s=r[o];n(s.billboard)&&(s.billboard.pixelOffset=t)}}}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){var t=this._translucencyByDistance;if(!s.equals(t,e)){this._translucencyByDistance=s.clone(e,t);for(var i=this._glyphs,r=0,o=i.length;o>r;r++){var a=i[r];n(a.billboard)&&(a.billboard.translucencyByDistance=e)}}}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){var t=this._pixelOffsetScaleByDistance;if(!s.equals(t,e)){this._pixelOffsetScaleByDistance=s.clone(e,t);for(var i=this._glyphs,r=0,o=i.length;o>r;r++){var a=i[r];n(a.billboard)&&(a.billboard.pixelOffsetScaleByDistance=e)}}}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){var i=this._eyeOffset;if(!t.equals(i,e)){t.clone(e,i);for(var r=this._glyphs,o=0,a=r.length;a>o;o++){var s=r[o];n(s.billboard)&&(s.billboard.eyeOffset=e)}}}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,m(this))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){if(this._verticalOrigin!==e){this._verticalOrigin=e;for(var t=this._glyphs,i=0,r=t.length;r>i;i++){var o=t[i];n(o.billboard)&&(o.billboard.verticalOrigin=e)}m(this)}}},scale:{get:function(){return this._scale},set:function(e){if(this._scale!==e){this._scale=e;for(var t=this._glyphs,i=0,r=t.length;r>i;i++){var o=t[i];n(o.billboard)&&(o.billboard.scale=e)}m(this)}}},id:{get:function(){return this._id},set:function(e){if(this._id!==e){this._id=e;for(var t=this._glyphs,i=0,r=t.length;r>i;i++){var o=t[i];n(o.billboard)&&(o.billboard.id=e)}}}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=t.clone(e,this._actualClampedPosition);for(var i=this._glyphs,r=0,o=i.length;o>r;r++){var a=i[r];n(a.billboard)&&(a.billboard.position=e)}}}}),f.prototype._updateClamping=function(){l._updateClamping(this._labelCollection,this)},f.prototype.computeScreenSpacePosition=function(t,i){n(i)||(i=new e);var r=this._labelCollection,o=r.modelMatrix,a=l._computeActualPosition(this,this._position,t.frameState,o),s=l._computeScreenSpacePosition(o,a,this._eyeOffset,this._pixelOffset,t,i);return s.y=t.canvas.clientHeight-s.y,s},f.prototype.equals=function(r){return this===r||n(r)&&this._show===r._show&&this._scale===r._scale&&this._style===r._style&&this._verticalOrigin===r._verticalOrigin&&this._horizontalOrigin===r._horizontalOrigin&&this._text===r._text&&this._font===r._font&&t.equals(this._position,r._position)&&i.equals(this._fillColor,r._fillColor)&&i.equals(this._outlineColor,r._outlineColor)&&e.equals(this._pixelOffset,r._pixelOffset)&&t.equals(this._eyeOffset,r._eyeOffset)&&s.equals(this._translucencyByDistance,r._translucencyByDistance)&&s.equals(this._pixelOffsetScaleByDistance,r._pixelOffsetScaleByDistance)&&this._id===r._id},f.prototype.isDestroyed=function(){return!1},f}),i("Scene/LabelCollection",["../Core/Cartesian2","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Matrix4","../Core/writeTextToCanvas","./BillboardCollection","./HorizontalOrigin","./Label","./LabelStyle","./TextureAtlas","./VerticalOrigin"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p){"use strict";function m(){this.textureInfo=void 0,this.dimensions=void 0,this.billboard=void 0}function f(e,t,i){this.labelCollection=e,this.index=t,this.dimensions=i}function v(e,t,i,r,n,o,a){return S.font=t,S.fillColor=i,S.strokeColor=r,S.strokeWidth=n,S.textBaseline=a===p.BOTTOM?"bottom":a===p.TOP?"top":"middle",S.fill=o===h.FILL||o===h.FILL_AND_OUTLINE,S.stroke=o===h.OUTLINE||o===h.FILL_AND_OUTLINE,s(e,S)}function g(e,t){t.textureInfo=void 0,t.dimensions=void 0;var r=t.billboard;i(r)&&(r.show=!1,r.image=void 0,e._spareBillboards.push(r),t.billboard=void 0)}function _(e,t,i,r){e.addImage(t,i).then(function(e){r.index=e})}function y(e,t){var r,n,o,a=t._text,s=a.length,l=t._glyphs,c=l.length;if(c>s)for(n=s;c>n;++n)g(e,l[n]);l.length=s;var h=e._glyphTextureCache;for(o=0;s>o;++o){var d=a.charAt(o),p=t._font,y=t._fillColor,C=t._outlineColor,w=t._outlineWidth,S=t._style,E=t._verticalOrigin,b=JSON.stringify([d,p,y.toRgba(),C.toRgba(),w,+S,+E]),x=h[b];if(!i(x)){var T=v(d,p,y,C,w,S,E);x=new f(e,-1,T.dimensions),h[b]=x,T.width>0&&T.height>0&&_(e._textureAtlas,b,T,x)}if(r=l[o],i(r)?-1===x.index?g(e,r):i(r.textureInfo)&&(r.textureInfo=void 0):(r=new m,l[o]=r),r.textureInfo=x,r.dimensions=x.dimensions,-1!==x.index){var P=r.billboard;i(P)||(P=e._spareBillboards.length>0?e._spareBillboards.pop():e._billboardCollection.add({collection:e}),r.billboard=P),P.show=t._show,P.position=t._position,P.eyeOffset=t._eyeOffset,P.pixelOffset=t._pixelOffset,P.horizontalOrigin=u.LEFT,P.verticalOrigin=t._verticalOrigin,P.scale=t._scale,P.pickPrimitive=t,P.id=t._id,P.image=b,P.translucencyByDistance=t._translucencyByDistance,P.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance}}t._repositionAllGlyphs=!0}function C(e,t){var r,n,o=e._glyphs,a=0,s=0,l=0,c=o.length;for(l=0;c>l;++l)r=o[l],n=r.dimensions,a+=n.computedWidth,s=Math.max(s,n.height);var h=e._scale,d=e._horizontalOrigin,m=0;d===u.CENTER?m-=a/2*h:d===u.RIGHT&&(m-=a*h),E.x=m*t,E.y=0;var f=e._verticalOrigin;for(l=0;c>l;++l)r=o[l],n=r.dimensions,f===p.BOTTOM||n.height===s?E.y=-n.descent*h:f===p.TOP?E.y=-(s-n.height)*h-n.descent*h:f===p.CENTER&&(E.y=-(s-n.height)/2*h-n.descent*h),E.y*=t,i(r.billboard)&&r.billboard._setTranslate(E),E.x+=n.computedWidth*h*t}function w(e,t){for(var r=t._glyphs,o=0,a=r.length;a>o;++o)g(e,r[o]);t._labelCollection=void 0,i(t._removeCallbackFunc)&&t._removeCallbackFunc(),n(t)}var S={},E=new e,b=function(e){e=t(e,t.EMPTY_OBJECT),this._scene=e.scene,this._textureAtlas=void 0,this._billboardCollection=new l({scene:this._scene}),this._billboardCollection.destroyTextureAtlas=!1,this._spareBillboards=[],this._glyphTextureCache={},this._labels=[],this._labelsToUpdate=[],this._totalGlyphCount=0,this._resolutionScale=void 0,this.modelMatrix=a.clone(t(e.modelMatrix,a.IDENTITY)),this.debugShowBoundingVolume=t(e.debugShowBoundingVolume,!1)};return r(b.prototype,{length:{get:function(){return this._labels.length}}}),b.prototype.add=function(e){var t=new c(e,this);return this._labels.push(t),this._labelsToUpdate.push(t),t},b.prototype.remove=function(e){if(i(e)&&e._labelCollection===this){var t=this._labels.indexOf(e);if(-1!==t)return this._labels.splice(t,1),w(this,e),!0}return!1},b.prototype.removeAll=function(){for(var e=this._labels,t=0,i=e.length;i>t;++t)w(this,e[t]);e.length=0},b.prototype.contains=function(e){return i(e)&&e._labelCollection===this},b.prototype.get=function(e){return this._labels[e]},b.prototype.update=function(e,t,r){var n=this._billboardCollection;n.modelMatrix=this.modelMatrix,n.debugShowBoundingVolume=this.debugShowBoundingVolume,i(this._textureAtlas)||(this._textureAtlas=new d({context:e}),n.textureAtlas=this._textureAtlas);var o=e.uniformState,a=o.resolutionScale,s=this._resolutionScale!==a;this._resolutionScale=a;var l;l=s?this._labels:this._labelsToUpdate;for(var u=l.length,c=0;u>c;++c){var h=l[c];if(!h.isDestroyed()){var p=h._glyphs.length;h._rebindAllGlyphs&&(y(this,h),h._rebindAllGlyphs=!1),(s||h._repositionAllGlyphs)&&(C(h,a),h._repositionAllGlyphs=!1);var m=h._glyphs.length-p;this._totalGlyphCount+=m}}this._labelsToUpdate.length=0,n.update(e,t,r)},b.prototype.isDestroyed=function(){return!1},b.prototype.destroy=function(){return this.removeAll(),this._billboardCollection=this._billboardCollection.destroy(),this._textureAtlas=this._textureAtlas&&this._textureAtlas.destroy(),n(this)},b}),i("DataSources/LabelVisualizer",["../Core/AssociativeArray","../Core/Cartesian2","../Core/Cartesian3","../Core/Color","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/NearFarScalar","../Scene/HorizontalOrigin","../Scene/LabelCollection","../Scene/LabelStyle","../Scene/VerticalOrigin","./BoundingSphereState","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p){"use strict";function m(e,t){if(n(e)){var i=e.label;n(i)&&(t.push(e.index),i.show=!1,e.label=void 0,e.index=-1)}}var f=1,v="30px sans-serif",g=c.FILL,_=r.WHITE,y=r.BLACK,C=1,w=t.ZERO,S=i.ZERO,E=l.CENTER,b=h.CENTER,x=new i,T=new r,P=new r,A=new i,D=new t,M=new s,I=new s,O=function(e){this.entity=e,this.label=void 0,this.index=void 0},R=function(t,i){i.collectionChanged.addEventListener(R.prototype._onCollectionChanged,this),this._scene=t,this._unusedIndexes=[],this._labelCollection=void 0,this._entityCollection=i,this._items=new e,this._onCollectionChanged(i,i.values,[],[])};return R.prototype.update=function(e){for(var t=this._items.values,i=this._unusedIndexes,r=0,o=t.length;o>r;r++){var a,s=t[r],l=s.entity,c=l._label,h=s.label,d=l.isShowing&&l.isAvailable(e)&&p.getValueOrDefault(c._show,e,!0);if(d&&(x=p.getValueOrUndefined(l._position,e,x),a=p.getValueOrUndefined(c._text,e),d=n(x)&&n(a)),d){if(!n(h)){var O=this._labelCollection;n(O)||(O=new u,this._labelCollection=O,this._scene.primitives.add(O));var R=i.length;if(R>0){var L=i.pop();s.index=L,h=O.get(L)}else h=O.add(),s.index=O.length-1;h.id=l,s.label=h}h.show=!0,h.position=x,h.text=a,h.scale=p.getValueOrDefault(c._scale,e,f),h.font=p.getValueOrDefault(c._font,e,v),h.style=p.getValueOrDefault(c._style,e,g),h.fillColor=p.getValueOrDefault(c._fillColor,e,_,T),h.outlineColor=p.getValueOrDefault(c._outlineColor,e,y,P),h.outlineWidth=p.getValueOrDefault(c._outlineWidth,e,C),h.pixelOffset=p.getValueOrDefault(c._pixelOffset,e,w,D),h.eyeOffset=p.getValueOrDefault(c._eyeOffset,e,S,A),h.horizontalOrigin=p.getValueOrDefault(c._horizontalOrigin,e,E),h.verticalOrigin=p.getValueOrDefault(c._verticalOrigin,e,b),h.translucencyByDistance=p.getValueOrUndefined(c._translucencyByDistance,e,M),h.pixelOffsetScaleByDistance=p.getValueOrUndefined(c._pixelOffsetScaleByDistance,e,I)}else m(s,i)}return!0},R.prototype.getBoundingSphere=function(e,t){var r=this._items.get(e.id);return n(r)&&n(r.label)?(t.center=i.clone(r.label.position,t.center),t.radius=0,d.DONE):d.FAILED},R.prototype.isDestroyed=function(){return!1},R.prototype.destroy=function(){return this._entityCollection.collectionChanged.removeEventListener(R.prototype._onCollectionChanged,this),n(this._labelCollection)&&this._scene.primitives.remove(this._labelCollection),o(this)},R.prototype._onCollectionChanged=function(e,t,i,r){var o,a,s=this._unusedIndexes,l=this._items;for(o=t.length-1;o>-1;o--)a=t[o],n(a._label)&&n(a._position)&&l.set(a.id,new O(a));for(o=r.length-1;o>-1;o--)a=r[o],n(a._label)&&n(a._position)?l.contains(a.id)||l.set(a.id,new O(a)):(m(l.get(a.id),s),l.remove(a.id));for(o=i.length-1;o>-1;o--)a=i[o],m(l.get(a.id),s),l.remove(a.id)},R}),i("ThirdParty/gltfDefaults",["../Core/defaultValue","../Core/defined"],function(e,t){"use strict";function i(i){t(i.accessors)||(i.accessors={});var r=i.accessors;for(var n in r)if(r.hasOwnProperty(n)){var o=r[n];o.byteStride=e(o.byteStride,0)}}function r(i){t(i.animations)||(i.animations={});var r=i.animations;for(var n in r)if(r.hasOwnProperty(n)){var o=r[n];t(o.channels)||(o.channels=[]),t(o.parameters)||(o.parameters={}),t(o.samplers)||(o.samplers={});var a=r.samplers;for(var s in a)if(a.hasOwnProperty(s)){var l=a[s];l.interpolation=e(l.interpolation,"LINEAR")}}}function n(i){t(i.asset)||(i.asset={});var r=i.asset;t(r.profile)&&"string"!=typeof r.profile||(r.profile={});var n=r.profile;r.premultipliedAlpha=e(i.asset.premultipliedAlpha,!1),n.api=e(n.api,"WebGL"),n.version=e(n.version,"1.0.2"),r.version=e(i.version,"0.9")}function o(i){t(i.buffers)||(i.buffers={});var r=i.buffers;for(var n in r)if(r.hasOwnProperty(n)){var o=r[n];o.type=e(o.type,"arraybuffer")}}function a(e){t(e.bufferViews)||(e.bufferViews={})}function s(e){t(e.cameras)||(e.cameras={})}function l(e){t(e.images)||(e.images={})}function u(i){t(i.lights)||(i.lights={});var r=i.lights;for(var n in r)if(r.hasOwnProperty(n)){var o=r[n];if("ambient"===o.type){t(o.ambient)||(o.ambient={});var a=o.ambient;t(a.color)||(a.color=[1,1,1])}else if("directional"===o.type){t(o.directional)||(o.directional={});var s=o.directional;t(s.color)||(s.color=[1,1,1])}else if("point"===o.type){t(o.point)||(o.point={});var l=o.point;t(l.color)||(l.color=[1,1,1]),l.constantAttenuation=e(l.constantAttenuation,1),l.linearAttenuation=e(l.linearAttenuation,0),l.quadraticAttenuation=e(l.quadraticAttenuation,0)}else if("spot"===o.type){t(o.spot)||(o.spot={});var u=o.spot;t(u.color)||(u.color=[1,1,1]),u.constantAttenuation=e(u.constantAttenuation,1),u.fallOffAngle=e(u.fallOffAngle,3.14159265),u.fallOffExponent=e(u.fallOffExponent,0),u.linearAttenuation=e(u.linearAttenuation,0),u.quadraticAttenuation=e(u.quadraticAttenuation,0)}}}function c(e){t(e.materials)||(e.materials={});var i=e.materials;for(var r in i)if(i.hasOwnProperty(r)){var n=i[r].instanceTechnique;t(n.values)||(n.values={})}}function h(i){t(i.meshes)||(i.meshes={});var r=i.meshes;for(var n in r)if(r.hasOwnProperty(n)){var o=r[n];t(o.primitives)||(o.primitives=[]);for(var a=o.primitives.length,s=a.length,l=0;s>l;++l){var u=a[l];t(u.attributes)||(u.attributes={});var c=e(u.primitive,WebGLRenderingContext.TRIANGLES);u.mode=e(u.mode,c)}}}function d(e){t(e.nodes)||(e.nodes={});var i=e.nodes;for(var r in i)if(i.hasOwnProperty(r)){var n=i[r];t(n.children)||(n.children=[]),t(n.matrix)||(t(n.translation)&&t(n.rotation)&&t(n.scale)?(t(n.translation)||(n.translation=[0,0,0]),t(n.rotation)||(n.rotation=[1,0,0,0]),t(n.scale)||(n.scale=[1,1,1])):n.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}}function p(e){t(e.programs)||(e.programs={});var i=e.programs;for(var r in i)if(i.hasOwnProperty(r)){var n=i[r];t(n.attributes)||(n.attributes=[])}}function m(i){t(i.samplers)||(i.samplers={});var r=i.samplers;for(var n in r)if(r.hasOwnProperty(n)){var o=r[n];o.magFilter=e(o.magFilter,WebGLRenderingContext.LINEAR),o.minFilter=e(o.minFilter,WebGLRenderingContext.NEAREST_MIPMAP_LINEAR),o.wrapS=e(o.wrapS,WebGLRenderingContext.REPEAT),o.wrapT=e(o.wrapT,WebGLRenderingContext.REPEAT) +}}function f(e){t(e.scenes)||(e.scenes={});var i=e.scenes;for(var r in i)if(i.hasOwnProperty(r)){var n=i[r];t(n.node)||(n.node=[])}}function v(e){t(e.shaders)||(e.shaders={})}function g(e){t(e.skins)||(e.skins={});var i=e.skins;for(var r in i)if(i.hasOwnProperty(r)){var n=i[r];t(n.bindShapeMatrix)&&(n.bindShapeMatrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}}function _(e){t(e.enable)||(e.enable=[]),t(e.disable)||(e.disable=[])}function y(e){t(e.techniques)||(e.techniques={});var i=e.techniques;for(var r in i)if(i.hasOwnProperty(r)){var n=i[r];t(n.parameters)||(n.parameters={});var o=n.passes;for(var a in o)if(o.hasOwnProperty(a)){var s=o[a],l=s.instanceProgram;t(l.attributes)||(l.attributes={}),t(l.uniforms)||(l.uniforms={}),t(s.states)||(s.states={}),_(s.states)}}}function C(i){t(i.textures)||(i.textures={});var r=i.textures;for(var n in r)if(r.hasOwnProperty(n)){var o=r[n];o.format=e(o.format,WebGLRenderingContext.RGBA),o.internalFormat=e(o.internalFormat,o.format),o.target=e(o.target,WebGLRenderingContext.TEXTURE_2D),o.type=e(o.type,WebGLRenderingContext.UNSIGNED_BYTE)}}var w=function(e){return t(e)?(t(e.allExtensions)||(e.allExtensions=[]),i(e),r(e),n(e),o(e),a(e),s(e),l(e),u(e),c(e),h(e),d(e),p(e),m(e),f(e),v(e),g(e),y(e),C(e),e):void 0};return w}),i("Scene/getModelAccessor",["../Core/ComponentDatatype"],function(e){"use strict";var t={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},i=function(i){var r=i.componentType,n=t[i.type];return{componentsPerAttribute:n,createArrayBufferView:function(t,i,o){return e.createArrayBufferView(r,t,i,n*o)}}};return i}),i("Scene/ModelAnimationCache",["../Core/Cartesian3","../Core/defaultValue","../Core/defined","../Core/LinearSpline","../Core/Matrix4","../Core/Quaternion","../Core/QuaternionSpline","./getModelAccessor"],function(e,t,i,r,n,o,a,s){"use strict";function l(e,i){var r=e.gltf,n=r.buffers,o=r.bufferViews,a=o[i.bufferView],l=n[a.buffer],u=a.byteOffset+i.byteOffset,c=i.count*s(i).componentsPerAttribute;return e.cacheKey+"//"+t(l.path,"")+"/"+u+"/"+c}function u(e,t,i){return e.cacheKey+"//"+t+"/"+i}var c=function(){},h={},d=new e;c.getAnimationParameterValues=function(t,r){var n=l(t,r),a=h[n];if(!i(a)){var u,c=t._loadResources,p=t.gltf,m=p.bufferViews,f=m[r.bufferView],v=r.componentType,g=r.type,_=r.count,y=c.getBuffer(f),C=s(r).createArrayBufferView(y.buffer,y.byteOffset+r.byteOffset,_);if(v===WebGLRenderingContext.FLOAT&&"SCALAR"===g)a=C;else if(v===WebGLRenderingContext.FLOAT&&"VEC3"===g)for(a=new Array(_),u=0;_>u;++u)a[u]=e.fromArray(C,3*u);else if(v===WebGLRenderingContext.FLOAT&&"VEC4"===g)for(a=new Array(_),u=0;_>u;++u){var w=4*u;a[u]=o.fromAxisAngle(e.fromArray(C,w,d),C[w+3])}i(t.cacheKey)&&(h[n]=a)}return a};var p={},m=function(e){this._value=e};m.prototype.evaluate=function(){return this._value},c.getAnimationSpline=function(e,t,n,o,s,l){var c=u(e,t,o),h=p[c];if(!i(h)){var d=l[s.input],f=e.gltf.accessors[n.parameters[s.output]],v=l[s.output];if(1===d.length&&1===v.length)h=new m(v[0]);else{var g=f.componentType,_=f.type;"LINEAR"===s.interpolation&&(g===WebGLRenderingContext.FLOAT&&"VEC3"===_?h=new r({times:d,points:v}):g===WebGLRenderingContext.FLOAT&&"VEC4"===_&&(h=new a({times:d,points:v})))}i(e.cacheKey)&&(p[c]=h)}return h};var f={};return c.getSkinInverseBindMatrices=function(e,t){var r=l(e,t),o=f[r];if(!i(o)){var a=e._loadResources,u=e.gltf,c=u.bufferViews,h=c[t.bufferView],d=t.componentType,p=t.type,m=t.count,v=a.getBuffer(h),g=s(t).createArrayBufferView(v.buffer,v.byteOffset+t.byteOffset,m);if(o=new Array(m),d===WebGLRenderingContext.FLOAT&&"MAT4"===p)for(var _=0;m>_;++_)o[_]=n.fromArray(g,16*_);f[r]=o}return o},c}),i("Scene/ModelAnimationLoop",["../Core/freezeObject"],function(e){"use strict";var t={NONE:0,REPEAT:1,MIRRORED_REPEAT:2};return e(t)}),i("Scene/ModelAnimationState",["../Core/freezeObject"],function(e){"use strict";return e({STOPPED:0,ANIMATING:1})}),i("Scene/ModelAnimation",["../Core/defaultValue","../Core/defineProperties","../Core/Event","../Core/JulianDate","./ModelAnimationLoop","./ModelAnimationState"],function(e,t,i,r,n,o){"use strict";var a=function(t,a,s){this._name=t.name,this._startTime=r.clone(t.startTime),this._delay=e(t.delay,0),this._stopTime=t.stopTime,this.removeOnStop=e(t.removeOnStop,!1),this._speedup=e(t.speedup,1),this._reverse=e(t.reverse,!1),this._loop=e(t.loop,n.NONE),this.start=new i,this.update=new i,this.stop=new i,this._state=o.STOPPED,this._runtimeAnimation=s,this._computedStartTime=void 0,this._duration=void 0;var l=this;this._raiseStartEvent=function(){l.start.raiseEvent(a,l)},this._updateEventTime=0,this._raiseUpdateEvent=function(){l.update.raiseEvent(a,l,l._updateEventTime)},this._raiseStopEvent=function(){l.stop.raiseEvent(a,l)}};return t(a.prototype,{name:{get:function(){return this._name}},startTime:{get:function(){return this._startTime}},delay:{get:function(){return this._delay}},stopTime:{get:function(){return this._stopTime}},speedup:{get:function(){return this._speedup}},reverse:{get:function(){return this._reverse}},loop:{get:function(){return this._loop}}}),a}),i("Scene/ModelAnimationCollection",["../Core/clone","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/JulianDate","../Core/Math","./ModelAnimation","./ModelAnimationLoop","./ModelAnimationState"],function(e,t,i,r,n,o,a,s,l,u,c){"use strict";function h(e,t){for(var i=e.channelEvaluators,r=i.length,n=0;r>n;++n)i[n](t)}function d(e,t,i){return function(){e.animationRemoved.raiseEvent(t,i)}}var p=function(e){this.animationAdded=new o,this.animationRemoved=new o,this._model=e,this._scheduledAnimations=[],this._previousTime=void 0};r(p.prototype,{length:{get:function(){return this._scheduledAnimations.length}}}),p.prototype.add=function(e){e=t(e,t.EMPTY_OBJECT);var i=this._model,r=i._runtime.animations,n=r[e.name],o=new l(e,i,n);return this._scheduledAnimations.push(o),this.animationAdded.raiseEvent(i,o),o},p.prototype.addAll=function(i){i=t(i,t.EMPTY_OBJECT),i=e(i);for(var r=[],n=this._model._animationIds,o=n.length,a=0;o>a;++a)i.name=n[a],r.push(this.add(i));return r},p.prototype.remove=function(e){if(i(e)){var t=this._scheduledAnimations,r=t.indexOf(e);if(-1!==r)return t.splice(r,1),this.animationRemoved.raiseEvent(this._model,e),!0}return!1},p.prototype.removeAll=function(){var e=this._model,t=this._scheduledAnimations,i=t.length;this._scheduledAnimations=[];for(var r=0;i>r;++r)this.animationRemoved.raiseEvent(e,t[r])},p.prototype.contains=function(e){return i(e)?-1!==this._scheduledAnimations.indexOf(e):!1},p.prototype.get=function(e){return this._scheduledAnimations[e]};var m=[];return p.prototype.update=function(e){if(a.equals(e.time,this._previousTime))return!1;this._previousTime=a.clone(e.time,this._previousTime);for(var r=!1,n=e.time,o=this._model,l=this._scheduledAnimations,p=l.length,f=0;p>f;++f){var v=l[f],g=v._runtimeAnimation;i(v._computedStartTime)||(v._computedStartTime=a.addSeconds(t(v.startTime,n),v.delay,new a)),i(v._duration)||(v._duration=g.stopTime*(1/v.speedup));var _=v._computedStartTime,y=v._duration,C=v.stopTime,w=0!==y?a.secondsDifference(n,_)/y:0,S=w>=0,E=S&&(1>=w||v.loop===u.REPEAT||v.loop===u.MIRRORED_REPEAT)&&(!i(C)||a.lessThanOrEquals(n,C));if(E){if(v._state===c.STOPPED&&(v._state=c.ANIMATING,v.start.numberOfListeners>0&&e.afterRender.push(v._raiseStartEvent)),v.loop===u.REPEAT)w-=Math.floor(w);else if(v.loop===u.MIRRORED_REPEAT){var b=Math.floor(w),x=w-b;w=1===b%2?1-x:x}v.reverse&&(w=1-w);var T=w*y*v.speedup;T=s.clamp(T,g.startTime,g.stopTime),h(g,T),v.update.numberOfListeners>0&&(v._updateEventTime=T,e.afterRender.push(v._raiseUpdateEvent)),r=!0}else S&&v._state===c.ANIMATING&&(v._state=c.STOPPED,v.stop.numberOfListeners>0&&e.afterRender.push(v._raiseStopEvent),v.removeOnStop&&m.push(v))}p=m.length;for(var P=0;p>P;++P){var A=m[P];l.splice(l.indexOf(A),1),e.afterRender.push(d(this,o,A))}return m.length=0,r},p}),i("Scene/ModelMaterial",["../Core/defined","../Core/defineProperties","../Core/DeveloperError"],function(e,t){"use strict";var i=function(e,t,i){this._name=t.name,this._id=i,this._uniformMap=e._uniformMaps[i]};return t(i.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}}}),i.prototype.setValue=function(e,t){var i=this._uniformMap.values[e];i.value=i.clone(t,i.value)},i.prototype.getValue=function(t){var i=this._uniformMap.values[t];return e(i)?i.value:void 0},i}),i("Scene/ModelMesh",["../Core/defineProperties"],function(e){"use strict";var t=function(e,t,i){for(var r=[],n=e.primitives,o=n.length,a=0;o>a;++a){var s=n[a];r[a]=t[s.material]}this._name=e.name,this._materials=r,this._id=i};return e(t.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},materials:{get:function(){return this._materials}}}),t}),i("Scene/ModelNode",["../Core/defaultValue","../Core/defineProperties","../Core/Matrix4"],function(e,t,i){"use strict";var r=function(e,t,r,n,o){this._model=e,this._runtimeNode=r,this._name=t.name,this._id=n,this.useMatrix=!1,this._show=!0,this._matrix=i.clone(o)};return t(r.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,this._model._perNodeShowDirty=!0)}},matrix:{get:function(){return this._matrix},set:function(e){this._matrix=i.clone(e,this._matrix),this.useMatrix=!0;var t=this._model;t._cesiumAnimationsDirty=!0,this._runtimeNode.dirtyNumber=t._maxDirtyNumber}}}),r.prototype.setMatrix=function(e){i.clone(e,this._matrix)},r}),i("Scene/Model",["../Core/BoundingSphere","../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/clone","../Core/combine","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../Core/getStringFromTypedArray","../Core/IndexDatatype","../Core/loadArrayBuffer","../Core/loadImage","../Core/loadImageFromTypedArray","../Core/loadText","../Core/Math","../Core/Matrix2","../Core/Matrix3","../Core/Matrix4","../Core/PrimitiveType","../Core/Quaternion","../Core/Queue","../Core/RuntimeError","../Renderer/BufferUsage","../Renderer/DrawCommand","../Renderer/ShaderSource","../Renderer/TextureMinificationFilter","../Renderer/TextureWrap","../ThirdParty/gltfDefaults","../ThirdParty/Uri","../ThirdParty/when","./getModelAccessor","./ModelAnimationCache","./ModelAnimationCollection","./ModelMaterial","./ModelMesh","./ModelNode","./Pass","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D,M,I,O,R,L,N,F,B,z,k,V,U){"use strict";function W(){this.buffersToCreate=new b,this.buffers={},this.pendingBufferLoads=0,this.programsToCreate=new b,this.shaders={},this.pendingShaderLoads=0,this.texturesToCreate=new b,this.pendingTextureLoads=0,this.texturesToCreateFromBufferView=new b,this.pendingBufferViewToImage=0,this.createSamplers=!0,this.createSkins=!0,this.createRuntimeAnimations=!0,this.createVertexArrays=!0,this.createRenderStates=!0,this.createUniformMaps=!0,this.createRuntimeNodes=!0,this.skinnedNodesNames=[]}function G(e,t){e._cachedGltf=t,e._animationIds=H(t)}function H(e){var t=[];if(s(e)&&s(e.gltf)){var i=e.gltf.animations;for(var r in i)i.hasOwnProperty(r)&&t.push(r)}return t}function q(e){var t="",i=e.lastIndexOf("/");return-1!==i&&(t=e.substring(0,i+1)),t}function j(e){var t=new O(document.location.href),i=new O(e);return i.resolve(t).toString()}function Y(e,t,i){return e.subarray(t,t+i)}function X(e){return e.byteLength<4?!1:"glTF"===d(e.subarray(0,4))}function Z(e){if(!X(e))throw new c("bgltf is not a valid Binary glTF file.");var t=new DataView(e.buffer,e.byteOffset,e.byteLength),i=0;i+=hi,i+=hi,i+=hi;var r=t.getUint32(i,!0);i+=hi;var n=t.getUint32(i,!0);i+=hi;var o=d(Y(e,r,n));return JSON.parse(o)}function J(e,t,i){return e._runtime[t][i]}function Q(t){for(var r=t.nodes,n=t.meshes,o=t.accessors,l=t.scenes[t.scene].nodes,u=l.length,c=[],h=new i(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),d=new i(Number.MIN_VALUE,Number.MIN_VALUE,Number.MIN_VALUE),p=0;u>p;++p){var m=r[l[p]];for(m._transformToRoot=st(m),c.push(m);c.length>0;){m=c.pop();var f=m._transformToRoot,v=a(m.meshes,s(m.instanceSkin)?m.instanceSkin.meshes:void 0);if(s(v))for(var g=v.length,_=0;g>_;++_)for(var y=n[v[_]].primitives,C=y.length,S=0;C>S;++S){var E=y[S].attributes.POSITION;if(s(E)){var b=o[E],x=i.fromArray(b.min,0,di),T=i.fromArray(b.max,0,pi);s(h)&&s(d)&&(w.multiplyByPoint(f,x,x),w.multiplyByPoint(f,T,T),i.minimumByComponent(h,x,h),i.maximumByComponent(d,T,d))}}for(var P=m.children,A=P.length,D=0;A>D;++D){var M=r[P[D]];M._transformToRoot=st(M),w.multiplyTransformation(f,M._transformToRoot,M._transformToRoot),c.push(M)}delete m._transformToRoot}}var I=e.fromCornerPoints(h,d);return e.transformWithoutScale(I,ni,I)}function K(e,t,i){return function(){e._loadError=new x("Failed to load "+t+": "+i),e._state=ai.FAILED}}function $(e,t){return function(i){var r=e._loadResources;r.buffers[t]=new Uint8Array(i),--r.pendingBufferLoads}}function et(e){var t=e.gltf.buffers;for(var i in t)if(t.hasOwnProperty(i)){var r=t[i];if("CESIUM_binary_glTF"===i){var n=e._loadResources;n.buffers[i]=e._cachedGltf.bgltf}else if("arraybuffer"===r.type){++e._loadResources.pendingBufferLoads;var o=new O(r.uri),a=o.resolve(e._baseUri).toString();m(a).then($(e,i)).otherwise(K(e,"buffer",a))}else"text"===r.type}}function tt(e){var t=e.gltf.bufferViews;for(var i in t)t.hasOwnProperty(i)&&t[i].target===WebGLRenderingContext.ARRAY_BUFFER&&e._loadResources.buffersToCreate.enqueue(i)}function it(e,t){return function(i){var r=e._loadResources;r.shaders[t]={source:i,bufferView:void 0},--r.pendingShaderLoads}}function rt(e){var t=e.gltf.shaders;for(var i in t)if(t.hasOwnProperty(i)){var r=t[i];if(s(r.extensions)&&s(r.extensions.CESIUM_binary_glTF))e._loadResources.shaders[i]={source:void 0,bufferView:r.extensions.CESIUM_binary_glTF.bufferView};else{++e._loadResources.pendingShaderLoads;var n=new O(r.uri),o=n.resolve(e._baseUri).toString();g(o).then(it(e,i)).otherwise(K(e,"shader",o))}}}function nt(e){var t=e.gltf.programs;for(var i in t)t.hasOwnProperty(i)&&e._loadResources.programsToCreate.enqueue(i)}function ot(e,t){return function(i){var r=e._loadResources;--r.pendingTextureLoads,r.texturesToCreate.enqueue({name:t,image:i,bufferView:void 0})}}function at(e){var t=e.gltf.images,i=e.gltf.textures;for(var r in i)if(i.hasOwnProperty(r)){var n=t[i[r].source];if(s(n.extensions)&&s(n.extensions.CESIUM_binary_glTF)){var o=n.extensions.CESIUM_binary_glTF;e._loadResources.texturesToCreateFromBufferView.enqueue({name:r,image:void 0,bufferView:o.bufferView,mimeType:o.mimeType})}else{++e._loadResources.pendingTextureLoads;var a=new O(n.uri),l=a.resolve(e._baseUri).toString();f(l).then(ot(e,r)).otherwise(K(e,"image",l))}}}function st(e){if(s(e.matrix))return w.fromArray(e.matrix);var t=i.fromArray(e.rotation,0,mi);return w.fromTranslationQuaternionRotationScale(i.fromArray(e.translation,0,fi),E.fromAxisAngle(t,e.rotation[3],vi),i.fromArray(e.scale,0,gi))}function lt(e){var t={},i={},r=[],n=e._loadResources.skinnedNodesNames,o=e.gltf.nodes;for(var a in o)if(o.hasOwnProperty(a)){var l=o[a],u={matrix:void 0,translation:void 0,rotation:void 0,scale:void 0,computedShow:!0,transformToRoot:new w,computedMatrix:new w,dirtyNumber:0,commands:[],inverseBindMatrices:void 0,bindShapeMatrix:void 0,joints:[],computedJointMatrices:[],jointName:l.jointName,children:[],parents:[],publicNode:void 0};u.publicNode=new k(e,l,u,a,st(l)),t[a]=u,i[l.name]=u,s(l.instanceSkin)&&(n.push(a),r.push(u))}e._runtime.nodes=t,e._runtime.nodesByName=i,e._runtime.skinnedNodes=r}function ut(e){var t={},i={},r=e.gltf.materials,n=e._uniformMaps;for(var o in r)if(r.hasOwnProperty(o)){n[o]={uniformMap:void 0,values:void 0,jointMatrixUniformName:void 0};var a=r[o],s=new B(e,a,o);t[a.name]=s,i[o]=s}e._runtime.materialsByName=t,e._runtime.materialsById=i}function ct(e){var t={},i=e._runtime.materialsById,r=e.gltf.meshes;for(var n in r)if(r.hasOwnProperty(n)){var o=r[n];t[o.name]=new z(o,i,n)}e._runtime.meshesByName=t}function ht(e){e._loadRendererResourcesFromCache||(et(e),tt(e),rt(e),nt(e),at(e)),ut(e),ct(e),lt(e)}function dt(e,t){var i=e._loadResources;if(0===i.pendingBufferLoads){for(var r,n=e.gltf.bufferViews,o=e._rendererResources.buffers;i.buffersToCreate.length>0;){var a=i.buffersToCreate.dequeue();r=n[a];var l=t.createVertexBuffer(i.getBuffer(r),T.STATIC_DRAW);l.vertexArrayDestroyable=!1,o[a]=l}var u=e.gltf.accessors;for(var c in u)if(u.hasOwnProperty(c)){var h=u[c];if(r=n[h.bufferView],r.target===WebGLRenderingContext.ELEMENT_ARRAY_BUFFER&&!s(o[h.bufferView])){var d=t.createIndexBuffer(i.getBuffer(r),T.STATIC_DRAW,h.componentType);d.vertexArrayDestroyable=!1,o[h.bufferView]=d}}}}function pt(e){for(var t={},i=e.length,r=0;i>r;++r)t[e[r]]=r;return t}function mt(e,t){if(s(t.source))return t.source;var i=e._loadResources,r=e.gltf,n=r.bufferViews[t.bufferView];return d(i.getBuffer(n))}function ft(e,t,i){var r=t.gltf.programs,n=t._loadResources.shaders,o=r[e],a=pt(o.attributes),s=mt(t,n[o.vertexShader]),l=mt(t,n[o.fragmentShader]);if(t._rendererResources.programs[e]=i.createShaderProgram(s,l,a),t.allowPicking){var u=new A({sources:[l],pickColorQualifier:"uniform"});t._rendererResources.pickPrograms[e]=i.createShaderProgram(s,u,a)}}function vt(e,t){var i,r=e._loadResources;if(0===r.pendingShaderLoads&&0===r.pendingBufferLoads)if(e.asynchronous)r.programsToCreate.length>0&&(i=r.programsToCreate.dequeue(),ft(i,e,t));else for(;r.programsToCreate.length>0;)i=r.programsToCreate.dequeue(),ft(i,e,t)}function gt(e,t){return function(i){e.texturesToCreate.enqueue({name:t.name,image:i,bufferView:void 0}),--e.pendingBufferViewToImage}}function _t(e){var t=e._loadResources;if(0===t.pendingBufferLoads)for(;t.texturesToCreateFromBufferView.length>0;){var i=t.texturesToCreateFromBufferView.dequeue(),r=e.gltf,n=r.bufferViews[i.bufferView],o=gt(t,i),a=K(e,"image","name: "+i.name+", bufferView: "+i.bufferView);v(t.getBuffer(n),i.mimeType).then(o).otherwise(a),++t.pendingBufferViewToImage}}function yt(e,t){var i=e._loadResources;if(i.createSamplers){i.createSamplers=!1;var r=e._rendererResources.samplers,n=e.gltf.samplers;for(var o in n)if(n.hasOwnProperty(o)){var a=n[o];r[o]=t.createSampler({wrapS:a.wrapS,wrapT:a.wrapT,minificationFilter:a.minFilter,magnificationFilter:a.magFilter})}}}function Ct(e,t,i){var r=t.gltf.textures,n=r[e.name],o=t._rendererResources.samplers,a=o[n.sampler],s=a.minificationFilter===D.NEAREST_MIPMAP_NEAREST||a.minificationFilter===D.NEAREST_MIPMAP_LINEAR||a.minificationFilter===D.LINEAR_MIPMAP_NEAREST||a.minificationFilter===D.LINEAR_MIPMAP_LINEAR,l=s||a.wrapS===M.REPEAT||a.wrapS===M.MIRRORED_REPEAT||a.wrapT===M.REPEAT||a.wrapT===M.MIRRORED_REPEAT,u=e.image,c=!_.isPowerOfTwo(u.width)||!_.isPowerOfTwo(u.height);if(l&&c){var h=document.createElement("canvas");h.width=_.nextPowerOfTwo(u.width),h.height=_.nextPowerOfTwo(u.height);var d=h.getContext("2d");d.drawImage(u,0,0,u.width,u.height,0,0,h.width,h.height),u=h}var p;n.target===WebGLRenderingContext.TEXTURE_2D&&(p=i.createTexture2D({source:u,pixelFormat:n.internalFormat,pixelDatatype:n.type,flipY:!1})),s&&p.generateMipmap(),p.sampler=a,t._rendererResources.textures[e.name]=p}function wt(e,t){var i,r=e._loadResources;if(e.asynchronous)r.texturesToCreate.length>0&&(i=r.texturesToCreate.dequeue(),Ct(i,e,t));else for(;r.texturesToCreate.length>0;)i=r.texturesToCreate.dequeue(),Ct(i,e,t)}function St(e,t){var i=e.gltf;i.programs;var r=i.techniques,n=i.materials,o={},a=r[n[t.material].instanceTechnique.technique],s=a.parameters,l=a.passes[a.pass],u=l.instanceProgram,c=u.attributes,h=e._rendererResources.programs[u.program].vertexAttributes;for(var d in h)if(h.hasOwnProperty(d)){var p=s[c[d]];o[p.semantic]=h[d].index}return o}function Et(e,t){for(var i=e.length,r=0;i>r;++r)for(var n=[e[r]];n.length>0;){var o=n.pop();if(o.jointName===t)return o;for(var a=o.children,s=a.length,l=0;s>l;++l)n.push(a[l])}return void 0}function bt(e,t){for(var i=e.gltf,r=i.skins,n=i.nodes,o=e._runtime.nodes,a=e._loadResources.skinnedNodesNames,s=a.length,l=0;s>l;++l){var u=a[l],c=o[u],h=n[u].instanceSkin,d=t[h.skin];c.inverseBindMatrices=d.inverseBindMatrices,c.bindShapeMatrix=d.bindShapeMatrix;for(var p=[],m=h.skeletons,f=m.length,v=0;f>v;++v)p.push(o[m[v]]);for(var g=r[h.skin].jointNames,_=g.length,y=0;_>y;++y){var C=g[y];c.joints.push(Et(p,C))}}}function xt(e){var t=e._loadResources;if(0===t.pendingBufferLoads&&t.createSkins){t.createSkins=!1;var i=e.gltf,r=i.accessors,n=i.skins,o={};for(var a in n)if(n.hasOwnProperty(a)){var s,l=n[a],u=r[l.inverseBindMatrices];w.equals(l.bindShapeMatrix,w.IDENTITY)||(s=w.clone(l.bindShapeMatrix)),o[a]={inverseBindMatrices:N.getSkinInverseBindMatrices(e,u),bindShapeMatrix:s}}bt(e,o)}}function Tt(e,t,i,r){return function(n){t[i]=r.evaluate(n,t[i]),t.dirtyNumber=e._maxDirtyNumber}}function Pt(e){var t=e._loadResources;if(t.finishedPendingLoads()&&t.createRuntimeAnimations){t.createRuntimeAnimations=!1,e._runtime.animations={};var i,r=e._runtime.nodes,n=e.gltf.animations,o=e.gltf.accessors;for(var a in n)if(n.hasOwnProperty(a)){var s=n[a],l=s.channels,u=s.parameters,c=s.samplers,h={};for(i in u)u.hasOwnProperty(i)&&(h[i]=N.getAnimationParameterValues(e,o[u[i]]));for(var d=Number.MAX_VALUE,p=-Number.MAX_VALUE,m=l.length,f=new Array(m),v=0;m>v;++v){var g=l[v],_=g.target,y=c[g.sampler],C=h[y.input];d=Math.min(d,C[0]),p=Math.max(p,C[C.length-1]);var w=N.getAnimationSpline(e,a,s,g.sampler,y,h);f[v]=Tt(e,r[_.id],_.path,w)}e._runtime.animations[a]={startTime:d,stopTime:p,channelEvaluators:f}}}}function At(e,t){var i=e._loadResources;if(i.finishedBuffersCreation()&&i.finishedProgramCreation()&&i.createVertexArrays){i.createVertexArrays=!1;var r=e._rendererResources.buffers,n=e._rendererResources.vertexArrays,o=e.gltf,a=o.accessors,l=o.meshes;for(var u in l)if(l.hasOwnProperty(u))for(var c=l[u].primitives,h=c.length,d=0;h>d;++d){var p=c[d],m=St(e,p),f=[],v=p.attributes;for(var g in v)if(v.hasOwnProperty(g)){var _=m[g];if(s(_)){var y=a[v[g]];f.push({index:_,vertexBuffer:r[y.bufferView],componentsPerAttribute:L(y).componentsPerAttribute,componentDatatype:y.componentType,normalize:!1,offsetInBytes:y.byteOffset,strideInBytes:y.byteStride})}}var C=a[p.indices],w=r[C.bufferView];n[u+".primitive."+d]=t.createVertexArray(f,w)}}}function Dt(e){var t={};t[WebGLRenderingContext.BLEND]=!1,t[WebGLRenderingContext.CULL_FACE]=!1,t[WebGLRenderingContext.DEPTH_TEST]=!1,t[WebGLRenderingContext.POLYGON_OFFSET_FILL]=!1,t[WebGLRenderingContext.SCISSOR_TEST]=!1;var i,r=e.enable,n=r.length;for(i=0;n>i;++i)t[r[i]]=!0;return t}function Mt(e,t){var i=e._loadResources;if(i.createRenderStates){i.createRenderStates=!1;var r=e._rendererResources.renderStates,n=e.gltf.techniques;for(var o in n)if(n.hasOwnProperty(o)){var l=n[o],u=l.passes[l.pass],c=u.states,h=Dt(c),d=a(c.functions,a.EMPTY_OBJECT),p=a(d.blendColor,[0,0,0,0]),m=a(d.blendEquationSeparate,[WebGLRenderingContext.FUNC_ADD,WebGLRenderingContext.FUNC_ADD]),f=a(d.blendFuncSeparate,[WebGLRenderingContext.ONE,WebGLRenderingContext.ONE,WebGLRenderingContext.ZERO,WebGLRenderingContext.ZERO]),v=a(d.colorMask,[!0,!0,!0,!0]),g=a(d.depthRange,[0,1]),_=a(d.polygonOffset,[0,0]),y=a(d.scissor,[0,0,0,0]);r[o]=t.createRenderState({frontFace:s(d.frontFace)?d.frontFace[0]:WebGLRenderingContext.CCW,cull:{enabled:h[WebGLRenderingContext.CULL_FACE],face:s(d.cullFace)?d.cullFace[0]:WebGLRenderingContext.BACK},lineWidth:s(d.lineWidth)?d.lineWidth[0]:1,polygonOffset:{enabled:h[WebGLRenderingContext.POLYGON_OFFSET_FILL],factor:_[0],units:_[1]},scissorTest:{enabled:h[WebGLRenderingContext.SCISSOR_TEST],rectangle:{x:y[0],y:y[1],width:y[2],height:y[3]}},depthRange:{near:g[0],far:g[1]},depthTest:{enabled:h[WebGLRenderingContext.DEPTH_TEST],func:s(d.depthFunc)?d.depthFunc[0]:WebGLRenderingContext.LESS},colorMask:{red:v[0],green:v[1],blue:v[2],alpha:v[3]},depthMask:s(d.depthMask)?d.depthMask[0]:!0,blending:{enabled:h[WebGLRenderingContext.BLEND],color:{red:p[0],green:p[1],blue:p[2],alpha:p[3]},equationRgb:m[0],equationAlpha:m[1],functionSourceRgb:f[0],functionSourceAlpha:f[1],functionDestinationRgb:f[2],functionDestinationAlpha:f[3]}})}}}function It(e){var t={value:e,clone:function(e){return e},func:function(){return t.value}};return t}function Ot(e){var i={value:t.fromArray(e),clone:t.clone,func:function(){return i.value}};return i}function Rt(e){var t={value:i.fromArray(e),clone:i.clone,func:function(){return t.value}};return t}function Lt(e){var t={value:r.fromArray(e),clone:r.clone,func:function(){return t.value}};return t}function Nt(e){var t={value:y.fromColumnMajorArray(e),clone:y.clone,func:function(){return t.value}};return t}function Ft(e){var t={value:C.fromColumnMajorArray(e),clone:C.clone,func:function(){return t.value}};return t}function Bt(e){var t={value:w.fromColumnMajorArray(e),clone:w.clone,func:function(){return t.value}};return t}function zt(e,t){var i={value:t._rendererResources.textures[e],clone:function(e){return e},func:function(){return i.value}};return i}function kt(e,t){var i=t._runtime.nodes[e];return function(){return i.computedMatrix}}function Vt(e,t){var i=e._loadResources;if(i.finishedTextureCreation()&&i.finishedProgramCreation()&&i.createUniformMaps){i.createUniformMaps=!1;var r=e.gltf,n=r.materials,o=r.techniques;r.programs;var a=e._uniformMaps;for(var l in n)if(n.hasOwnProperty(l)){var u,c=n[l],h=c.instanceTechnique,d=h.values,p=o[h.technique],m=p.parameters,f=p.passes[p.pass],v=f.instanceProgram,g=v.uniforms,_={},y={};for(var C in g)if(g.hasOwnProperty(C)){var w=g[C],S=m[w];if(s(d[w])){var E=yi[S.type](d[w],e);_[C]=E.func,y[w]=E}else if(s(S.semantic))"JOINTMATRIX"!==S.semantic?_[C]=_i[S.semantic](t.uniformState,e):u=C;else if(s(S.source))_[C]=kt(S.source,e);else if(s(S.value)){var b=yi[S.type](S.value,e);_[C]=b.func,y[w]=b}}var x=a[l];x.uniformMap=_,x.values=y,x.jointMatrixUniformName=u}}}function Ut(e){return function(){return e}}function Wt(e){return function(){return e.computedJointMatrices}}function Gt(t,r,n,l){var u=t._nodeCommands,c=t._pickIds,h=t.allowPicking,d=t._runtime.meshesByName;t.debugShowBoundingVolume;for(var m=t._rendererResources,f=m.vertexArrays,v=m.programs,g=m.pickPrograms,_=m.renderStates,y=t._uniformMaps,C=t.gltf,S=C.accessors,E=C.meshes,b=C.techniques,x=C.materials,T=s(r.meshes)?r.meshes:r.instanceSkin.meshes,A=T.length,D=0;A>D;++D)for(var M=T[D],I=E[M],O=I.primitives,R=O.length,L=0;R>L;++L){var N,F=O[L],B=S[F.indices],z=x[F.material].instanceTechnique,k=b[z.technique],U=k.passes[k.pass],W=U.instanceProgram,G=F.attributes.POSITION;if(s(G)){var H=S[G];N=e.fromCornerPoints(i.fromArray(H.min),i.fromArray(H.max))}var q=f[M+".primitive."+L],j=B.count,Y=B.byteOffset/p.getSizeInBytes(B.componentType),X=y[F.material],Z=X.uniformMap;if(s(X.jointMatrixUniformName)){var J={};J[X.jointMatrixUniformName]=Wt(n),Z=o(Z,J)}var Q,K=_[z.technique],$=K.blending.enabled,et={primitive:a(t.pickPrimitive,t),id:t.id,node:n.publicNode,mesh:d[I.name]},tt=new P({boundingVolume:new e,modelMatrix:new w,primitiveType:F.mode,vertexArray:q,count:j,offset:Y,shaderProgram:v[W.program],uniformMap:Z,renderState:K,owner:et,pass:$?V.TRANSLUCENT:V.OPAQUE});if(h){var it=l.createPickId(et);c.push(it);var rt=o(Z,{czm_pickColor:Ut(it.color)});Q=new P({boundingVolume:new e,modelMatrix:new w,primitiveType:F.mode,vertexArray:q,count:j,offset:Y,shaderProgram:g[W.program],uniformMap:rt,renderState:K,owner:et,pass:$?V.TRANSLUCENT:V.OPAQUE})}var nt={show:!0,boundingSphere:N,command:tt,pickCommand:Q};n.commands.push(nt),u.push(nt)}}function Ht(e,t){var r=e._loadResources;if(r.finishedPendingLoads()&&r.finishedResourceCreation()&&r.createRuntimeNodes){r.createRuntimeNodes=!1;for(var n=[],o=e._runtime.nodes,a=e.gltf,l=a.nodes,u=a.scenes[a.scene],c=u.nodes,h=c.length,d=[],p=new i,m=0;h>m;++m)for(d.push({parentRuntimeNode:void 0,gltfNode:l[c[m]],id:c[m]});d.length>0;){var f=d.pop(),v=f.parentRuntimeNode,g=f.gltfNode,_=o[f.id];0===_.parents.length&&(s(g.matrix)?_.matrix=w.fromColumnMajorArray(g.matrix):(p=i.fromArray(g.rotation,0,p),_.translation=i.fromArray(g.translation),_.rotation=E.fromAxisAngle(p,g.rotation[3]),_.scale=i.fromArray(g.scale))),s(v)?(v.children.push(_),_.parents.push(v)):n.push(_),(s(g.meshes)||s(g.instanceSkin))&&Gt(e,g,_,t);for(var y=g.children,C=y.length,S=0;C>S;++S)d.push({parentRuntimeNode:_,gltfNode:l[y[S]],id:y[S]})}e._runtime.rootNodes=n,e._runtime.nodes=o}}function qt(e,t){if(e._loadRendererResourcesFromCache){var i=e._rendererResources,r=e._cachedRendererResources;i.buffers=r.buffers,i.vertexArrays=r.vertexArrays,i.programs=r.programs,i.pickPrograms=r.pickPrograms,i.textures=r.textures,i.samplers=r.samplers,i.renderStates=r.renderStates}else dt(e,t),vt(e,t),yt(e,t),_t(e),wt(e,t);xt(e),Pt(e),e._loadRendererResourcesFromCache||(At(e,t),Mt(e,t)),Vt(e,t),Ht(e,t)}function jt(e,t){var i=e.publicNode,r=i.matrix;i.useMatrix&&s(r)?w.clone(r,t):s(e.matrix)?w.clone(e.matrix,t):(w.fromTranslationQuaternionRotationScale(e.translation,e.rotation,e.scale,t),i.setMatrix(t))}function Yt(t,r,n){for(var o=t._maxDirtyNumber,a=t.allowPicking,l=t._runtime.rootNodes,u=l.length,c=Ci,h=t._computedModelMatrix,d=0;u>d;++d){var p=l[d];for(jt(p,p.transformToRoot),c.push(p);c.length>0;){p=c.pop();var m=p.transformToRoot,f=p.commands;if(p.dirtyNumber===o||r||n){var v=f.length;if(v>0)for(var g=0;v>g;++g){var _=f[g],y=_.command;if(w.multiplyTransformation(h,m,y.modelMatrix),e.transform(_.boundingSphere,y.modelMatrix,y.boundingVolume),s(t._rtcCenter)&&i.add(t._rtcCenter,y.boundingVolume.center,y.boundingVolume.center),a){var C=_.pickCommand;w.clone(y.modelMatrix,C.modelMatrix),e.clone(y.boundingVolume,C.boundingVolume)}}else p.computedMatrix=w.multiplyTransformation(h,m,p.computedMatrix)}for(var S=p.children,E=S.length,b=0;E>b;++b){var x=S[b];x.dirtyNumber=Math.max(x.dirtyNumber,p.dirtyNumber),(x.dirtyNumber===o||n)&&(jt(x,x.transformToRoot),w.multiplyTransformation(m,x.transformToRoot,x.transformToRoot)),c.push(x)}}}++t._maxDirtyNumber}function Xt(e){for(var t=e._runtime.skinnedNodes,i=t.length,r=0;i>r;++r){var n=t[r];wi=w.inverseTransformation(n.transformToRoot,wi);for(var o=n.computedJointMatrices,a=n.joints,l=n.bindShapeMatrix,u=n.inverseBindMatrices,c=u.length,h=0;c>h;++h)s(o[h])||(o[h]=new w),o[h]=w.multiplyTransformation(wi,a[h].transformToRoot,o[h]),o[h]=w.multiplyTransformation(o[h],u[h],o[h]),s(l)&&(o[h]=w.multiplyTransformation(o[h],l,o[h]))}}function Zt(e){for(var t=e._runtime.rootNodes,i=t.length,r=Ci,n=0;i>n;++n){var o=t[n];for(o.computedShow=o.publicNode.show,r.push(o);r.length>0;){o=r.pop();for(var a=o.computedShow,s=o.commands,l=s.length,u=0;l>u;++u)s[u].show=a;for(var c=o.children,h=c.length,d=0;h>d;++d){var p=c[d];p.computedShow=a&&p.publicNode.show,r.push(p)}}}}function Jt(e){var t=e.id;if(e._id!==t){e._id=t;for(var i=e._pickIds,r=i.length,n=0;r>n;++n)i[n].object.id=t}}function Qt(e){if(e._debugWireframe!==e.debugWireframe){e._debugWireframe=e.debugWireframe;for(var t=e.debugWireframe?S.LINES:S.TRIANGLES,i=e._nodeCommands,r=i.length,n=0;r>n;++n)i[n].command.primitiveType=t}}function Kt(e){if(e.debugShowBoundingVolume!==e._debugShowBoundingVolume){e._debugShowBoundingVolume=e.debugShowBoundingVolume;for(var t=e.debugShowBoundingVolume,i=e._nodeCommands,r=i.length,n=0;r>n;n++)i[n].command.debugShowBoundingVolume=t}}function $t(e,t,r,n){var o=n.camera,a=o.frustum,s=i.subtract(o.positionWC,e,Ei),l=i.multiplyByScalar(o.directionWC,i.dot(s,o.directionWC),bi),u=Math.max(a.near,i.magnitude(l)-t);Si.x=r.drawingBufferWidth,Si.y=r.drawingBufferHeight;var c=a.getPixelSize(Si,u),h=Math.max(c.x,c.y);return h}function ei(e,t,r){var n=e.scale;if(0!==e.minimumPixelSize){var o=Math.max(t.drawingBufferWidth,t.drawingBufferHeight),a=e.modelMatrix;xi.x=a[12],xi.y=a[13],xi.z=a[14],s(e._rtcCenter)&&i.add(e._rtcCenter,xi,xi);var l=e.boundingSphere.radius,u=$t(xi,l,t,r),c=1/u,h=Math.min(c*2*l,o);hn;++n){var o=i[n];o.isDestroyed()||G(o,this)}this.modelsToLoad=void 0,this.ready=!0};var ui={},ci=function(t){t=a(t,a.EMPTY_OBJECT);var i=t.cacheKey;this._cacheKey=i,this._cachedGltf=void 0,this._releaseGltfJson=a(t.releaseGltfJson,!1),this._animationIds=void 0;var r;if(s(i)&&s(ui[i])&&ui[i].ready)r=ui[i],++r.count;else{var n=t.gltf;s(n)&&(n instanceof ArrayBuffer&&(n=new Uint8Array(n)),r=n instanceof Uint8Array?new li({gltf:Z(n),bgltf:n,ready:!0}):new li({gltf:t.gltf,ready:!0}),r.count=1,s(i)&&(ui[i]=r))}G(this,r),this._basePath=a(t.basePath,"");var o=new O(document.location.href),l=new O(this._basePath);this._baseUri=l.resolve(o),this.show=a(t.show,!0),this.modelMatrix=w.clone(a(t.modelMatrix,w.IDENTITY)),this._modelMatrix=w.clone(this.modelMatrix),this.scale=a(t.scale,1),this._scale=this.scale,this.minimumPixelSize=a(t.minimumPixelSize,0),this._minimumPixelSize=this.minimumPixelSize,this.id=t.id,this._id=t.id,this.pickPrimitive=t.pickPrimitive,this._allowPicking=a(t.allowPicking,!0),this._ready=!1,this._readyPromise=R.defer(),this.activeAnimations=new F(this),this._asynchronous=a(t.asynchronous,!0),this.debugShowBoundingVolume=a(t.debugShowBoundingVolume,!1),this._debugShowBoudingVolume=!1,this.debugWireframe=a(t.debugWireframe,!1),this._debugWireframe=!1,this._computedModelMatrix=new w,this._initialRadius=void 0,this._boundingSphere=void 0,this._scaledBoundingSphere=new e,this._state=ai.NEEDS_LOAD,this._loadError=void 0,this._loadResources=void 0,this._perNodeShowDirty=!1,this._cesiumAnimationsDirty=!1,this._maxDirtyNumber=0,this._runtime={animations:void 0,rootNodes:void 0,nodes:void 0,nodesByName:void 0,skinnedNodes:void 0,meshesByName:void 0,materialsByName:void 0,materialsById:void 0},this._uniformMaps={},this._rendererResources={buffers:{},vertexArrays:{},programs:{},pickPrograms:{},textures:{},samplers:{},renderStates:{}},this._cachedRendererResources=void 0,this._loadRendererResourcesFromCache=!1,this._nodeCommands=[],this._pickIds=[],this._rtcCenter=void 0,this._rtcCenterEye=void 0};l(ci.prototype,{gltf:{get:function(){return s(this._cachedGltf)?this._cachedGltf.gltf:void 0}},releaseGltfJson:{get:function(){return this._releaseGltfJson}},cacheKey:{get:function(){return this._cacheKey}},basePath:{get:function(){return this._basePath}},boundingSphere:{get:function(){var e=w.getScale(this.modelMatrix,oi);i.multiplyByScalar(e,this.scale,e);var t=this._scaledBoundingSphere;return t.center=i.multiplyComponents(this._boundingSphere.center,e,t.center),t.radius=i.maximumComponent(e)*this._initialRadius,s(this._rtcCenter)&&i.add(this._rtcCenter,t.center,t.center),t}},ready:{get:function(){return this._ready}},readyPromise:{get:function(){return this._readyPromise}},asynchronous:{get:function(){return this._asynchronous}},allowPicking:{get:function(){return this._allowPicking}}});var hi=Uint32Array.BYTES_PER_ELEMENT;ci.fromGltf=function(e){var t=e.url,i=a(e.cacheKey,j(t));e=n(e),e.basePath=q(t),e.cacheKey=i;var r=new ci(e);e.headers=s(e.headers)?n(e.headers):{},s(e.headers.Accept)||(e.headers.Accept=si);var o=ui[i];return s(o)?o.ready||(++o.count,o.modelsToLoad.push(r)):(o=new li({ready:!1}),o.count=1,o.modelsToLoad.push(r),G(r,o),ui[i]=o,m(t,e.headers).then(function(e){var t=new Uint8Array(e);if(X(t))o.makeReady(Z(t),t);else{var i=d(t);o.makeReady(JSON.parse(i))}}).otherwise(K(r,"model",t))),r},ci._gltfCache=ui,ci.prototype.getNode=function(e){var t=J(this,"nodesByName",e);return s(t)?t.publicNode:void 0},ci.prototype.getMesh=function(e){return J(this,"meshesByName",e)},ci.prototype.getMaterial=function(e){return J(this,"materialsByName",e)};var di=new i,pi=new i,mi=new i,fi=new i,vi=new E,gi=new i,_i={MODEL:function(e){return function(){return e.model}},VIEW:function(e){return function(){return e.view}},PROJECTION:function(e){return function(){return e.projection}},MODELVIEW:function(e){return function(){return e.modelView}},CESIUM_RTC_MODELVIEW:function(e,t){var i=new w;return function(){return w.setTranslation(e.modelView,t._rtcCenterEye,i)}},MODELVIEWPROJECTION:function(e){return function(){return e.modelViewProjection}},MODELINVERSE:function(e){return function(){return e.inverseModel}},VIEWINVERSE:function(e){return function(){return e.inverseView}},PROJECTIONINVERSE:function(e){return function(){return e.inverseProjection}},MODELVIEWINVERSE:function(e){return function(){return e.inverseModelView}},MODELVIEWPROJECTIONINVERSE:function(e){return function(){return e.inverseModelViewProjection}},MODELINVERSETRANSPOSE:function(e){return function(){return e.inverseTranposeModel}},MODELVIEWINVERSETRANSPOSE:function(e){return function(){return e.normal}},VIEWPORT:function(e){return function(){return e.viewportCartesian4}}},yi={};"undefined"!=typeof WebGLRenderingContext&&(yi[WebGLRenderingContext.FLOAT]=It,yi[WebGLRenderingContext.FLOAT_VEC2]=Ot,yi[WebGLRenderingContext.FLOAT_VEC3]=Rt,yi[WebGLRenderingContext.FLOAT_VEC4]=Lt,yi[WebGLRenderingContext.INT]=It,yi[WebGLRenderingContext.INT_VEC2]=Ot,yi[WebGLRenderingContext.INT_VEC3]=Rt,yi[WebGLRenderingContext.INT_VEC4]=Lt,yi[WebGLRenderingContext.BOOL]=It,yi[WebGLRenderingContext.BOOL_VEC2]=Ot,yi[WebGLRenderingContext.BOOL_VEC3]=Rt,yi[WebGLRenderingContext.BOOL_VEC4]=Lt,yi[WebGLRenderingContext.FLOAT_MAT2]=Nt,yi[WebGLRenderingContext.FLOAT_MAT3]=Ft,yi[WebGLRenderingContext.FLOAT_MAT4]=Bt,yi[WebGLRenderingContext.SAMPLER_2D]=zt);var Ci=[],wi=new w,Si=new t,Ei=new i,bi=new i,xi=new i,Ti=function(e,t){this.buffers=void 0,this.vertexArrays=void 0,this.programs=void 0,this.pickPrograms=void 0,this.textures=void 0,this.samplers=void 0,this.renderStates=void 0,this.ready=!1,this.context=e,this.cacheKey=t,this.count=0};return Ti.prototype.release=function(){return 0===--this.count?(s(this.cacheKey)&&delete this.context.cache.modelRendererResourceCache[this.cacheKey],ri(this),u(this)):void 0},ci.prototype.update=function(e,t,r){if(t.mode===U.SCENE3D){if(this._state===ai.NEEDS_LOAD&&s(this.gltf)){var n,o=this.cacheKey;if(s(o)){e.cache.modelRendererResourceCache=a(e.cache.modelRendererResourceCache,{});var l=e.cache.modelRendererResourceCache;if(n=l[this.cacheKey],s(n)){if(!n.ready)return;++n.count,this._loadRendererResourcesFromCache=!0}else n=new Ti(e,o),n.count=1,l[this.cacheKey]=n;this._cachedRendererResources=n}else n=new Ti(e),n.count=1,this._cachedRendererResources=n;this._state=ai.LOADING,this._boundingSphere=Q(this.gltf),this._initialRadius=this._boundingSphere.radius;var u=this.gltf.extensions;s(u)&&s(u.CESIUM_RTC)&&(this._rtcCenter=i.fromArray(u.CESIUM_RTC.center),this._rtcCenterEye=new i),this._loadResources=new W,ht(this)}var c=!1;if(this._state===ai.FAILED)throw this._loadError;if(this._state===ai.LOADING){qt(this,e);var h=this._loadResources;if(h.finishedPendingLoads()&&h.finishedResourceCreation()){this._state=ai.LOADED,this._loadResources=void 0;var d=this._rendererResources,p=this._cachedRendererResources;p.buffers=d.buffers,p.vertexArrays=d.vertexArrays,p.programs=d.programs,p.pickPrograms=d.pickPrograms,p.textures=d.textures,p.samplers=d.samplers,p.renderStates=d.renderStates,p.ready=!0,this.releaseGltfJson&&ti(this),c=!0}}var m=this.show&&0!==this.scale;if(m&&this._state===ai.LOADED||c){var f=this.activeAnimations.update(t)||this._cesiumAnimationsDirty;this._cesiumAnimationsDirty=!1;var v=!w.equals(this._modelMatrix,this.modelMatrix)||this._scale!==this.scale||this._minimumPixelSize!==this.minimumPixelSize||0!==this.minimumPixelSize;if(v||c){w.clone(this.modelMatrix,this._modelMatrix),this._scale=this.scale,this._minimumPixelSize=this.minimumPixelSize;var g=ei(this,e,t),_=this._computedModelMatrix;w.multiplyByUniformScale(this.modelMatrix,g,_),w.multiplyTransformation(_,ni,_)}(f||v||c)&&(Yt(this,v,c),(f||c)&&Xt(this)),this._perNodeShowDirty&&(this._perNodeShowDirty=!1,Zt(this)),Jt(this,e),Qt(this),Kt(this),s(this._rtcCenter)&&w.multiplyByPoint(t.camera.viewMatrix,this._rtcCenter,this._rtcCenterEye)}if(c){var y=this;return t.afterRender.push(function(){y._ready=!0,y.readyPromise.resolve(y)}),void 0}if(m){var C,S,E=t.passes,b=this._nodeCommands,x=b.length;if(E.render)for(C=0;x>C;++C)S=b[C],S.show&&r.push(S.command);if(E.pick)for(C=0;x>C;++C)S=b[C],S.show&&r.push(S.pickCommand)}}},ci.prototype.isDestroyed=function(){return!1},ci.prototype.destroy=function(){this._rendererResources=void 0,this._cachedRendererResources=this._cachedRendererResources&&this._cachedRendererResources.release();for(var e=this._pickIds,t=e.length,i=0;t>i;++i)e[i].destroy();return ti(this),u(this)},ci}),i("DataSources/ModelVisualizer",["../Core/AssociativeArray","../Core/BoundingSphere","../Core/Cartesian3","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/Matrix4","../Scene/Model","../Scene/ModelAnimationLoop","./BoundingSphereState","./Property"],function(e,t,i,r,n,o,a,s,l,u,c){"use strict";function h(e,t,i,n){var o=i[t.id];r(o)&&(n.removeAndDestroy(o.modelPrimitive),delete i[t.id])}function d(e){e.activeAnimations.addAll({loop:l.REPEAT})}function p(e){console.error(e)}var m=1,f=0,v=function(t,i){i.collectionChanged.addEventListener(v.prototype._onCollectionChanged,this),this._scene=t,this._primitives=t.primitives,this._entityCollection=i,this._modelHash={},this._entitiesToVisualize=new e,this._modelMatrixScratch=new a,this._onCollectionChanged(i,i.values,[],[])};return v.prototype.update=function(e){this._scene.context;var t=this._entitiesToVisualize.values,i=this._modelHash,n=this._primitives;this._scene;for(var o=0,l=t.length;l>o;o++){var u,h,v=t[o],g=v._model,_=i[v.id],y=v.isShowing&&v.isAvailable(e)&&c.getValueOrDefault(g._show,e,!0);if(y&&(h=v._getModelMatrix(e,this._modelMatrixScratch),u=c.getValueOrUndefined(g._uri,e),y=r(h)&&r(u)),y){var C=r(_)?_.modelPrimitive:void 0;r(C)&&u===_.uri||(r(C)&&(n.removeAndDestroy(C),delete i[v.id]),C=s.fromGltf({url:u}),C.readyPromise.then(d).otherwise(p),C.id=v,n.add(C),_={modelPrimitive:C,uri:u},i[v.id]=_),C.show=!0,C.scale=c.getValueOrDefault(g._scale,e,m),C.minimumPixelSize=c.getValueOrDefault(g._minimumPixelSize,e,f),C.modelMatrix=a.clone(h,C.modelMatrix)}else r(_)&&(_.modelPrimitive.show=!1)}return!0},v.prototype.isDestroyed=function(){return!1},v.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(v.prototype._onCollectionChanged,this);for(var e=this._entitiesToVisualize.values,t=this._modelHash,i=this._primitives,r=e.length-1;r>-1;r--)h(this,e[r],t,i);return n(this)},v.prototype.getBoundingSphere=function(e,i){var n=this._modelHash[e.id];if(!r(n))return u.FAILED;var o=n.modelPrimitive;return r(o)&&o.show?o.ready?(t.transform(o.boundingSphere,o.modelMatrix,i),u.DONE):u.PENDING:u.FAILED},v.prototype._onCollectionChanged=function(e,t,i,n){var o,a,s=this._entitiesToVisualize,l=this._modelHash,u=this._primitives;for(o=t.length-1;o>-1;o--)a=t[o],r(a._model)&&r(a._position)&&s.set(a.id,a);for(o=n.length-1;o>-1;o--)a=n[o],r(a._model)&&r(a._position)?s.set(a.id,a):(h(this,a,l,u),s.remove(a.id));for(o=i.length-1;o>-1;o--)a=i[o],h(this,a,l,u),s.remove(a.id)},v}),i("Shaders/PolylineCommon",[],function(){"use strict";return"void clipLineSegmentToNearPlane(\nvec3 p0,\nvec3 p1,\nout vec4 positionWC,\nout bool clipped,\nout bool culledByNearPlane)\n{\nculledByNearPlane = false;\nclipped = false;\nvec3 p1ToP0 = p1 - p0;\nfloat magnitude = length(p1ToP0);\nvec3 direction = normalize(p1ToP0);\nfloat endPoint0Distance = -(czm_currentFrustum.x + p0.z);\nfloat denominator = -direction.z;\nif (endPoint0Distance < 0.0 && abs(denominator) < czm_epsilon7)\n{\nculledByNearPlane = true;\n}\nelse if (endPoint0Distance < 0.0 && abs(denominator) > czm_epsilon7)\n{\nfloat t = (czm_currentFrustum.x + p0.z) / denominator;\nif (t < 0.0 || t > magnitude)\n{\nculledByNearPlane = true;\n}\nelse\n{\np0 = p0 + t * direction;\nclipped = true;\n}\n}\npositionWC = czm_eyeToWindowCoordinates(vec4(p0, 1.0));\n}\nvec4 getPolylineWindowCoordinates(vec4 position, vec4 previous, vec4 next, float expandDirection, float width, bool usePrevious) {\nvec4 endPointWC, p0, p1;\nbool culledByNearPlane, clipped;\nvec4 positionEC = czm_modelViewRelativeToEye * position;\nvec4 prevEC = czm_modelViewRelativeToEye * previous;\nvec4 nextEC = czm_modelViewRelativeToEye * next;\nclipLineSegmentToNearPlane(prevEC.xyz, positionEC.xyz, p0, clipped, culledByNearPlane);\nclipLineSegmentToNearPlane(nextEC.xyz, positionEC.xyz, p1, clipped, culledByNearPlane);\nclipLineSegmentToNearPlane(positionEC.xyz, usePrevious ? prevEC.xyz : nextEC.xyz, endPointWC, clipped, culledByNearPlane);\nif (culledByNearPlane)\n{\nreturn vec4(0.0, 0.0, 0.0, 1.0);\n}\nvec2 prevWC = normalize(p0.xy - endPointWC.xy);\nvec2 nextWC = normalize(p1.xy - endPointWC.xy);\nfloat expandWidth = width * 0.5;\nvec2 direction;\nif (czm_equalsEpsilon(normalize(previous.xyz - position.xyz), vec3(0.0), czm_epsilon1) || czm_equalsEpsilon(prevWC, -nextWC, czm_epsilon1))\n{\ndirection = vec2(-nextWC.y, nextWC.x);\n}\nelse if (czm_equalsEpsilon(normalize(next.xyz - position.xyz), vec3(0.0), czm_epsilon1) || clipped)\n{\ndirection = vec2(prevWC.y, -prevWC.x);\n}\nelse\n{\nvec2 normal = vec2(-nextWC.y, nextWC.x);\ndirection = normalize((nextWC + prevWC) * 0.5);\nif (dot(direction, normal) < 0.0)\n{\ndirection = -direction;\n}\nfloat sinAngle = abs(direction.x * nextWC.y - direction.y * nextWC.x);\nexpandWidth = clamp(expandWidth / sinAngle, 0.0, width * 2.0);\n}\nvec2 offset = direction * expandDirection * expandWidth * czm_resolutionScale;\nreturn vec4(endPointWC.xy + offset, -endPointWC.z, 1.0);\n}\n"}),i("Shaders/PolylineFS",[],function(){"use strict";return"varying vec2 v_st;\nvoid main()\n{\nczm_materialInput materialInput;\nmaterialInput.s = v_st.s;\nmaterialInput.st = v_st;\nmaterialInput.str = vec3(v_st, 0.0);\nczm_material material = czm_getMaterial(materialInput);\ngl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n}\n"}),i("Shaders/PolylineVS",[],function(){"use strict";return"attribute vec3 position3DHigh;\nattribute vec3 position3DLow;\nattribute vec3 position2DHigh;\nattribute vec3 position2DLow;\nattribute vec3 prevPosition3DHigh;\nattribute vec3 prevPosition3DLow;\nattribute vec3 prevPosition2DHigh;\nattribute vec3 prevPosition2DLow;\nattribute vec3 nextPosition3DHigh;\nattribute vec3 nextPosition3DLow;\nattribute vec3 nextPosition2DHigh;\nattribute vec3 nextPosition2DLow;\nattribute vec4 texCoordExpandWidthAndShow;\nattribute vec4 pickColor;\nvarying vec2 v_st;\nvarying float v_width;\nvarying vec4 czm_pickColor;\nvoid main()\n{\nfloat texCoord = texCoordExpandWidthAndShow.x;\nfloat expandDir = texCoordExpandWidthAndShow.y;\nfloat width = abs(texCoordExpandWidthAndShow.z) + 0.5;\nbool usePrev = texCoordExpandWidthAndShow.z < 0.0;\nfloat show = texCoordExpandWidthAndShow.w;\nvec4 p, prev, next;\nif (czm_morphTime == 1.0)\n{\np = czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz);\nprev = czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz);\nnext = czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz);\n}\nelse if (czm_morphTime == 0.0)\n{\np = czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy);\nprev = czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy);\nnext = czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy);\n}\nelse\n{\np = czm_columbusViewMorph(\nczm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy),\nczm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz),\nczm_morphTime);\nprev = czm_columbusViewMorph(\nczm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy),\nczm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz),\nczm_morphTime);\nnext = czm_columbusViewMorph(\nczm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy),\nczm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz),\nczm_morphTime);\n}\nvec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev);\ngl_Position = czm_viewportOrthographic * positionWC * show;\nv_st = vec2(texCoord, clamp(expandDir, 0.0, 1.0));\nv_width = width;\nczm_pickColor = pickColor;\n}\n"}),i("Scene/Polyline",["../Core/BoundingSphere","../Core/Cartesian3","../Core/Color","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Matrix4","../Core/PolylinePipeline","./Material"],function(e,t,i,r,n,o,a,s,l,u){"use strict";function c(e,t){++e._propertiesChanged[t];var i=e._polylineCollection;n(i)&&(i._updatePolyline(e,t),e._dirty=!0)}var h=function(o,a){o=r(o,r.EMPTY_OBJECT),this._show=r(o.show,!0),this._width=r(o.width,1),this._loop=r(o.loop,!1),this._material=o.material,n(this._material)||(this._material=u.fromType(u.ColorType,{color:new i(1,1,1,1)}));var c=o.positions;n(c)||(c=[]),this._positions=c,this._actualPositions=l.removeDuplicates(c),this._loop&&this._actualPositions.length>2&&(this._actualPositions===this._positions&&(this._actualPositions=c.slice()),this._actualPositions.push(t.clone(this._actualPositions[0]))),this._length=this._actualPositions.length,this._id=o.id;var h;n(a)&&(h=s.clone(a.modelMatrix)),this._modelMatrix=h,this._segments=l.wrapLongitude(this._actualPositions,h),this._actualLength=void 0,this._propertiesChanged=new Uint32Array(g),this._polylineCollection=a,this._dirty=!1,this._pickId=void 0,this._boundingVolume=e.fromPoints(this._actualPositions),this._boundingVolumeWC=e.transform(this._boundingVolume,this._modelMatrix),this._boundingVolume2D=new e},d=h.SHOW_INDEX=0,p=h.WIDTH_INDEX=1,m=h.POSITION_INDEX=2,f=h.MATERIAL_INDEX=3,v=h.POSITION_SIZE_INDEX=4,g=h.NUMBER_OF_PROPERTIES=5;return o(h.prototype,{show:{get:function(){return this._show},set:function(e){e!==this._show&&(this._show=e,c(this,d))}},positions:{get:function(){return this._positions},set:function(i){var r=l.removeDuplicates(i);this._loop&&r.length>2&&(r===i&&(r=i.slice()),r.push(t.clone(r[0]))),(this._actualPositions.length!==r.length||this._actualPositions.length!==this._length)&&c(this,v),this._positions=i,this._actualPositions=r,this._length=r.length,this._boundingVolume=e.fromPoints(this._actualPositions,this._boundingVolume),this._boundingVolumeWC=e.transform(this._boundingVolume,this._modelMatrix,this._boundingVolumeWC),c(this,m),this.update()}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,c(this,f))}},width:{get:function(){return this._width},set:function(e){var t=this._width;e!==t&&(this._width=e,c(this,p))}},loop:{get:function(){return this._loop},set:function(e){if(e!==this._loop){var i=this._actualPositions;e?i.length>2&&!t.equals(i[0],i[i.length-1])&&(i.length===this._positions.length&&(this._actualPositions=i=this._positions.slice()),i.push(t.clone(i[0]))):i.length>2&&t.equals(i[0],i[i.length-1])&&(i.length-1===this._positions.length?this._actualPositions=this._positions:i.pop()),this._loop=e,c(this,v)}}},id:{get:function(){return this._id},set:function(e){this._id=e,n(this._pickId)&&(this._pickId.object.id=e)}}}),h.prototype.update=function(){var t=s.IDENTITY;n(this._polylineCollection)&&(t=this._polylineCollection.modelMatrix);var i=this._segments.positions.length,r=this._segments.lengths,o=this._propertiesChanged[m]>0||this._propertiesChanged[v]>0;if((!s.equals(t,this._modelMatrix)||o)&&(this._segments=l.wrapLongitude(this._actualPositions,t),this._boundingVolumeWC=e.transform(this._boundingVolume,t,this._boundingVolumeWC)),this._modelMatrix=t,this._segments.positions.length!==i)c(this,v);else for(var a=r.length,u=0;a>u;++u)if(r[u]!==this._segments.lengths[u]){c(this,v);break}},h.prototype.getPickId=function(e){return n(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._polylineCollection,id:this._id})),this._pickId},h.prototype._clean=function(){this._dirty=!1;for(var e=this._propertiesChanged,t=0;g-1>t;++t)e[t]=0},h.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._material=this._material&&this._material.destroy(),this._polylineCollection=void 0},h}),i("Scene/PolylineCollection",["../Core/BoundingSphere","../Core/Cartesian3","../Core/Cartesian4","../Core/Cartographic","../Core/Color","../Core/ComponentDatatype","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/EncodedCartesian3","../Core/IndexDatatype","../Core/Intersect","../Core/Math","../Core/Matrix4","../Core/Plane","../Renderer/BufferUsage","../Renderer/DrawCommand","../Renderer/ShaderSource","../Shaders/PolylineCommon","../Shaders/PolylineFS","../Shaders/PolylineVS","./BlendingState","./Material","./Pass","./Polyline","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P){"use strict";function A(t,i,r,n,o,a,l){for(var u=n.length,c=0,h=!0,d=t._vertexArrays,p=t.debugShowBoundingVolume,m=d.length,f=0;m>f;++f)for(var v=d[f],g=v.buckets,y=g.length,C=0;y>C;++C){for(var w,S,E,b=g[C],T=b.offset,A=l?b.bucket.shaderProgram:b.bucket.pickShaderProgram,D=b.bucket.polylines,M=D.length,O=0,R=0;M>R;++R){var L=D[R],N=I(L._material);if(N!==w){if(s(w)&&O>0){var F=S.isTranslucent();c>=u?(E=new _({owner:t}),n.push(E)):E=n[c],++c,E.boundingVolume=e.clone(X,E.boundingVolume),E.modelMatrix=a,E.shaderProgram=A,E.vertexArray=v.va,E.renderState=F?t._translucentRS:t._opaqueRS,E.pass=F?x.TRANSLUCENT:x.OPAQUE,E.debugShowBoundingVolume=l?p:!1,E.uniformMap=S._uniforms,E.count=O,E.offset=T,T+=O,O=0,h=!0,o.push(E)}S=L._material,S.update(i),w=N}for(var B=L._locatorBuckets,z=B.length,k=0;z>k;++k){var V=B[k];V.locator===b&&(O+=V.count)}var U;r.mode===P.SCENE3D?U=L._boundingVolumeWC:r.mode===P.COLUMBUS_VIEW?U=L._boundingVolume2D:r.mode===P.SCENE2D?s(L._boundingVolume2D)&&(U=e.clone(L._boundingVolume2D,Z),U.center.x=0):s(L._boundingVolumeWC)&&s(L._boundingVolume2D)&&(U=e.union(L._boundingVolumeWC,L._boundingVolume2D,Z)),h?(h=!1,e.clone(U,X)):e.union(U,X,X)}s(w)&&O>0&&(c>=u?(E=new _({owner:t}),n.push(E)):E=n[c],++c,E.boundingVolume=e.clone(X,E.boundingVolume),E.modelMatrix=a,E.shaderProgram=A,E.vertexArray=v.va,E.renderState=S.isTranslucent()?t._translucentRS:t._opaqueRS,E.pass=S.isTranslucent()?x.TRANSLUCENT:x.OPAQUE,E.debugShowBoundingVolume=l?p:!1,E.uniformMap=S._uniforms,E.count=O,E.offset=T,h=!0,o.push(E)),w=void 0}n.length=c}function D(e){for(var t=e._buffersUsage,i=!1,r=e._propertiesChanged,n=0;q-2>n;++n){var o=t[n];r[n]?o.bufferUsage!==g.STREAM_DRAW?(i=!0,o.bufferUsage=g.STREAM_DRAW,o.frameCount=100):o.frameCount=100:o.bufferUsage!==g.STATIC_DRAW&&(0===o.frameCount?(i=!0,o.bufferUsage=g.STATIC_DRAW):o.frameCount--)}return i}function M(e,t,i){e._createVertexArray=!1,N(e),F(e),O(e);var r,n,a=[[]],l=a[0],u=[0],c=0,h=[[]],p=0,f=e._polylineBuckets;for(r in f)f.hasOwnProperty(r)&&(n=f[r],n.updateShader(t),p+=n.lengthOfPositions);if(p>0){var v,_=e._mode,y=new Float32Array(3*6*p),C=new Uint8Array(4*p),w=new Float32Array(4*p),S=0,E=0,b=0;for(r in f)if(f.hasOwnProperty(r)){n=f[r],n.write(y,C,w,S,E,b,t,i),_===P.MORPHING&&(s(v)||(v=new Float32Array(3*6*p)),n.writeForMorph(v,S));var x=n.lengthOfPositions;S+=3*6*x,E+=4*x,b+=4*x,c=n.updateIndices(a,u,h,c)}var T=e._buffersUsage[W].bufferUsage,A=e._buffersUsage[V].bufferUsage,D=e._buffersUsage[U].bufferUsage,M=A===g.STREAM_DRAW||D===g.STREAM_DRAW?g.STREAM_DRAW:g.STATIC_DRAW;e._positionBuffer=t.createVertexBuffer(y,T);var I;s(v)&&(I=t.createVertexBuffer(v,T)),e._pickColorBuffer=t.createVertexBuffer(C,g.STATIC_DRAW),e._texCoordExpandWidthAndShowBuffer=t.createVertexBuffer(w,M);for(var R=4*Uint8Array.BYTES_PER_ELEMENT,L=3*Float32Array.BYTES_PER_ELEMENT,B=4*Float32Array.BYTES_PER_ELEMENT,z=0,k=a.length,G=0;k>G;++G)if(l=a[G],l.length>0){var H=new Uint16Array(l),q=t.createIndexBuffer(H,g.STATIC_DRAW,d.UNSIGNED_SHORT);z+=u[G];var Y,X,Z,Q,K=6*(G*L*m.SIXTY_FOUR_KILOBYTES-z*L),$=L+K,et=L+$,tt=L+et,it=L+tt,rt=L+it,nt=G*R*m.SIXTY_FOUR_KILOBYTES-z*R,ot=G*B*m.SIXTY_FOUR_KILOBYTES-z*B,at=[{index:j.position3DHigh,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:K,strideInBytes:6*L},{index:j.position3DLow,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:$,strideInBytes:6*L},{index:j.position2DHigh,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:K,strideInBytes:6*L},{index:j.position2DLow,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:$,strideInBytes:6*L},{index:j.prevPosition3DHigh,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:et,strideInBytes:6*L},{index:j.prevPosition3DLow,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:tt,strideInBytes:6*L},{index:j.prevPosition2DHigh,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:et,strideInBytes:6*L},{index:j.prevPosition2DLow,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:tt,strideInBytes:6*L},{index:j.nextPosition3DHigh,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:it,strideInBytes:6*L},{index:j.nextPosition3DLow,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:rt,strideInBytes:6*L},{index:j.nextPosition2DHigh,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:it,strideInBytes:6*L},{index:j.nextPosition2DLow,componentsPerAttribute:3,componentDatatype:o.FLOAT,offsetInBytes:rt,strideInBytes:6*L},{index:j.texCoordExpandWidthAndShow,componentsPerAttribute:4,componentDatatype:o.FLOAT,vertexBuffer:e._texCoordExpandWidthAndShowBuffer,offsetInBytes:ot},{index:j.pickColor,componentsPerAttribute:4,componentDatatype:o.UNSIGNED_BYTE,vertexBuffer:e._pickColorBuffer,offsetInBytes:nt,normalize:!0}];_===P.SCENE3D?(Y=e._positionBuffer,X="vertexBuffer",Z=J,Q="value"):_===P.SCENE2D||_===P.COLUMBUS_VIEW?(Y=J,X="value",Z=e._positionBuffer,Q="vertexBuffer"):(Y=I,X="vertexBuffer",Z=e._positionBuffer,Q="vertexBuffer"),at[0][X]=Y,at[1][X]=Y,at[2][Q]=Z,at[3][Q]=Z,at[4][X]=Y,at[5][X]=Y,at[6][Q]=Z,at[7][Q]=Z,at[8][X]=Y,at[9][X]=Y,at[10][Q]=Z,at[11][Q]=Z;var st=t.createVertexArray(at,q);e._vertexArrays.push({va:st,buckets:h[G]})}}}function I(e){var t=b._uniformList[e.type],i=t.length;Q.length=2*i;for(var r=0,n=0;i>n;++n){var o=t[n];Q[r]=o,Q[r+1]=e._uniforms[o](),r+=2}return e.type+":"+JSON.stringify(Q)}function O(e){for(var t=e._mode,i=e._modelMatrix,r=e._polylineBuckets={},n=e._polylines,o=n.length,a=0;o>a;++a){var l=n[a];if(l._actualPositions.length>1){l.update();var u=l.material,c=r[u.type];s(c)||(c=r[u.type]=new K(u,t,i)),c.addPolyline(l)}}}function R(e,t){var i=t.mode;e._mode===i&&f.equals(e._modelMatrix,e.modelMatrix)||(e._mode=i,e._modelMatrix=f.clone(e.modelMatrix),e._createVertexArray=!0)}function L(e){if(e._polylinesRemoved){e._polylinesRemoved=!1;for(var t=[],i=e._polylines.length,r=0,n=0;i>r;++r){var o=e._polylines[r];s(o)&&(o._index=n++,t.push(o))}e._polylines=t}}function N(e){for(var t=e._polylines,i=t.length,r=0;i>r;++r)if(s(t[r])){var n=t[r]._bucket;s(n)&&(n.shaderProgram=n.shaderProgram&&n.shaderProgram.destroy())}}function F(e){for(var t=e._vertexArrays.length,i=0;t>i;++i)e._vertexArrays[i].va.destroy();e._vertexArrays.length=0}function B(e){for(var t=e._polylines,i=t.length,r=0;i>r;++r)s(t[r])&&t[r]._destroy()}function z(e,t,i){this.count=e,this.offset=t,this.bucket=i}function k(e){return t.dot(t.UNIT_X,e._boundingVolume.center)<0||e._boundingVolume.intersectPlane(v.ORIGIN_ZX_PLANE)===p.INTERSECTING}var V=T.SHOW_INDEX,U=T.WIDTH_INDEX,W=T.POSITION_INDEX,G=T.MATERIAL_INDEX,H=T.POSITION_SIZE_INDEX,q=T.NUMBER_OF_PROPERTIES,j={texCoordExpandWidthAndShow:0,position3DHigh:1,position3DLow:2,position2DHigh:3,position2DLow:4,prevPosition3DHigh:5,prevPosition3DLow:6,prevPosition2DHigh:7,prevPosition2DLow:8,nextPosition3DHigh:9,nextPosition3DLow:10,nextPosition2DHigh:11,nextPosition2DLow:12,pickColor:13},Y=function(e){e=a(e,a.EMPTY_OBJECT),this.modelMatrix=f.clone(a(e.modelMatrix,f.IDENTITY)),this._modelMatrix=f.clone(f.IDENTITY),this.debugShowBoundingVolume=a(e.debugShowBoundingVolume,!1),this._opaqueRS=void 0,this._translucentRS=void 0,this._colorCommands=[],this._pickCommands=[],this._polylinesUpdated=!1,this._polylinesRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(q),this._polylines=[],this._polylineBuckets={},this._buffersUsage=[{bufferUsage:g.STATIC_DRAW,frameCount:0},{bufferUsage:g.STATIC_DRAW,frameCount:0},{bufferUsage:g.STATIC_DRAW,frameCount:0}],this._mode=void 0,this._polylinesToUpdate=[],this._vertexArrays=[],this._positionBuffer=void 0,this._pickColorBuffer=void 0,this._texCoordExpandWidthAndShowBuffer=void 0};l(Y.prototype,{length:{get:function(){return L(this),this._polylines.length}}}),Y.prototype.add=function(e){var t=new T(e,this);return t._index=this._polylines.length,this._polylines.push(t),this._createVertexArray=!0,t},Y.prototype.remove=function(e){if(this.contains(e)){if(this._polylines[e._index]=void 0,this._polylinesRemoved=!0,this._createVertexArray=!0,s(e._bucket)){var t=e._bucket;t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy(),t.pickShaderProgram=t.pickShaderProgram&&t.pickShaderProgram.destroy()}return e._destroy(),!0}return!1},Y.prototype.removeAll=function(){N(this),B(this),this._polylineBuckets={},this._polylinesRemoved=!1,this._polylines.length=0,this._polylinesToUpdate.length=0,this._createVertexArray=!0},Y.prototype.contains=function(e){return s(e)&&e._polylineCollection===this},Y.prototype.get=function(e){return L(this),this._polylines[e]},Y.prototype.update=function(e,t,i){if(L(this),0!==this._polylines.length){R(this,t);var r,n=t.mapProjection,o=this._propertiesChanged;if(this._createVertexArray||D(this))M(this,e,n);else if(this._polylinesUpdated){var a=this._polylinesToUpdate;if(this._mode!==P.SCENE3D)for(var l=a.length,u=0;l>u;++u)r=a[u],r.update();if(o[H]||o[G])M(this,e,n);else for(var c=a.length,h=this._polylineBuckets,d=0;c>d;++d){r=a[d],o=r._propertiesChanged;var p=r._bucket,m=0;for(var v in h)if(h.hasOwnProperty(v)){if(h[v]===p){(o[W]||o[V]||o[U])&&p.writeUpdate(m,r,this._positionBuffer,this._texCoordExpandWidthAndShowBuffer,n);break}m+=h[v].lengthOfPositions}r._clean()}a.length=0,this._polylinesUpdated=!1}o=this._propertiesChanged;for(var g=0;q>g;++g)o[g]=0;var _=f.IDENTITY;t.mode===P.SCENE3D&&(_=this.modelMatrix);var y=t.passes,C=0!==t.morphTime;if(s(this._opaqueRS)&&this._opaqueRS.depthTest.enabled===C||(this._opaqueRS=e.createRenderState({depthMask:C,depthTest:{enabled:C}})),s(this._translucentRS)&&this._translucentRS.depthTest.enabled===C||(this._translucentRS=e.createRenderState({blending:E.ALPHA_BLEND,depthMask:!C,depthTest:{enabled:C}})),y.render){var w=this._colorCommands; +A(this,e,t,w,i,_,!0)}if(y.pick){var S=this._pickCommands;A(this,e,t,S,i,_,!1)}}};var X=new e,Z=new e;Y.prototype.isDestroyed=function(){return!1},Y.prototype.destroy=function(){return F(this),N(this),B(this),u(this)};var J=[0,0,0],Q=[];Y.prototype._updatePolyline=function(e,t){this._polylinesUpdated=!0,this._polylinesToUpdate.push(e),++this._propertiesChanged[t]};var K=function(e,t,i){this.polylines=[],this.lengthOfPositions=0,this.material=e,this.shaderProgram=void 0,this.pickShaderProgram=void 0,this.mode=t,this.modelMatrix=i};K.prototype.addPolyline=function(e){var t=this.polylines;t.push(e),e._actualLength=this.getPolylinePositionsLength(e),this.lengthOfPositions+=e._actualLength,e._bucket=this},K.prototype.updateShader=function(e){if(!s(this.shaderProgram)){var t=new y({sources:[C,S]}),i=new y({sources:[this.material.shaderSource,w]}),r=new y({sources:i.sources,pickColorQualifier:"varying"});this.shaderProgram=e.createShaderProgram(t,i,j),this.pickShaderProgram=e.createShaderProgram(t,r,j)}},K.prototype.getPolylinePositionsLength=function(e){var t;if(this.mode===P.SCENE3D||!k(e))return t=e._actualPositions.length,4*t-4;var i=0,r=e._segments.lengths;t=r.length;for(var n=0;t>n;++n)i+=4*r[n]-4;return i};var $=new t,et=new t,tt=new t,it=new t;K.prototype.write=function(e,i,r,o,a,s,l,u){for(var c=this.mode,d=this.polylines,p=d.length,m=0;p>m;++m)for(var f,v=d[m],g=v.width,_=v.show&&g>0,y=this.getSegments(v,u),C=y.positions,w=y.lengths,S=C.length,E=v.getPickId(l).color,b=0,x=0,T=0;S>T;++T){0===T?v._loop?f=C[S-2]:(f=it,t.subtract(C[0],C[1],f),t.add(C[0],f,f)):f=C[T-1],et.x=f.x,et.y=f.y,et.z=c!==P.SCENE2D?f.z:0,f=C[T],$.x=f.x,$.y=f.y,$.z=c!==P.SCENE2D?f.z:0,T===S-1?v._loop?f=C[1]:(f=it,t.subtract(C[S-1],C[S-2],f),t.add(C[S-1],f,f)):f=C[T+1],tt.x=f.x,tt.y=f.y,tt.z=c!==P.SCENE2D?f.z:0;var A=w[b];T===x+A&&(x+=A,++b);for(var D=0===T-x,M=T===x+w[b]-1,I=D?2:0,O=M?2:4,R=I;O>R;++R){h.writeElements($,e,o),h.writeElements(et,e,o+6),h.writeElements(tt,e,o+12),i[a]=n.floatToByte(E.red),i[a+1]=n.floatToByte(E.green),i[a+2]=n.floatToByte(E.blue),i[a+3]=n.floatToByte(E.alpha);var L=0>R-2?-1:1;r[s]=T/(S-1),r[s+1]=2*(R%2)-1,r[s+2]=L*g,r[s+3]=_,o+=18,a+=4,s+=4}}};var rt=new t,nt=new t,ot=new t,at=new t;K.prototype.writeForMorph=function(e,i){for(var r=this.modelMatrix,n=this.polylines,o=n.length,a=0;o>a;++a)for(var s=n[a],l=s._segments.positions,u=s._segments.lengths,c=l.length,d=0,p=0,m=0;c>m;++m){var v;0===m?s._loop?v=l[c-2]:(v=at,t.subtract(l[0],l[1],v),t.add(l[0],v,v)):v=l[m-1],v=f.multiplyByPoint(r,v,nt);var g,_=f.multiplyByPoint(r,l[m],rt);m===c-1?s._loop?g=l[1]:(g=at,t.subtract(l[c-1],l[c-2],g),t.add(l[c-1],g,g)):g=l[m+1],g=f.multiplyByPoint(r,g,ot);var y=u[d];m===p+y&&(p+=y,++d);for(var C=0===m-p,w=m===p+u[d]-1,S=C?2:0,E=w?2:4,b=S;E>b;++b)h.writeElements(_,e,i),h.writeElements(v,e,i+6),h.writeElements(g,e,i+12),i+=18}};var st=new Array(1);K.prototype.updateIndices=function(e,t,i,r){var n=i.length-1,o=new z(0,r,this);i[n].push(o);var a=0,s=e[e.length-1],l=0;s.length>0&&(l=s[s.length-1]+1);for(var u=this.polylines,c=u.length,h=0;c>h;++h){var d=u[h];d._locatorBuckets=[];var p;if(this.mode===P.SCENE3D){p=st;var f=d._actualPositions.length;if(!(f>0))continue;p[0]=f}else p=d._segments.lengths;var v=p.length;if(v>0){for(var g=0,_=0;v>_;++_)for(var y=p[_]-1,C=0;y>C;++C)l+4>=m.SIXTY_FOUR_KILOBYTES-1&&(d._locatorBuckets.push({locator:o,count:g}),g=0,t.push(4),s=[],e.push(s),l=0,o.count=a,a=0,r=0,o=new z(0,0,this),i[++n]=[o]),s.push(l,l+2,l+1),s.push(l+1,l+2,l+3),g+=6,a+=6,r+=6,l+=4;d._locatorBuckets.push({locator:o,count:g}),l+4>=m.SIXTY_FOUR_KILOBYTES-1&&(t.push(0),s=[],e.push(s),l=0,o.count=a,r=0,a=0,o=new z(0,0,this),i[++n]=[o])}d._clean()}return o.count=a,r},K.prototype.getPolylineStartIndex=function(e){for(var t=this.polylines,i=0,r=t.length,n=0;r>n;++n){var o=t[n];if(o===e)break;i+=o._actualLength}return i};var lt={positions:void 0,lengths:void 0},ut=new Array(1),ct=new t,ht=new r;K.prototype.getSegments=function(i,r){var n=i._actualPositions;if(this.mode===P.SCENE3D)return ut[0]=n.length,lt.positions=n,lt.lengths=ut,lt;k(i)&&(n=i._segments.positions);for(var o,a=r.ellipsoid,s=[],l=this.modelMatrix,u=n.length,c=ct,h=0;u>h;++h)o=n[h],c=f.multiplyByPoint(l,o,c),s.push(r.project(a.cartesianToCartographic(c,ht)));if(s.length>0){i._boundingVolume2D=e.fromPoints(s,i._boundingVolume2D);var d=i._boundingVolume2D.center;i._boundingVolume2D.center=new t(d.z,d.x,d.y)}return lt.positions=s,lt.lengths=i._segments.lengths,lt};var dt,pt;return K.prototype.writeUpdate=function(e,i,r,n,o){var a=this.mode,l=i._actualLength;if(l){e+=this.getPolylineStartIndex(i);var u=dt,c=pt,d=3*6*l;!s(u)||u.lengthd&&(u=new Float32Array(u.buffer,0,d),c=new Float32Array(c.buffer,0,4*l));var p,m=0,f=0,v=this.getSegments(i,o),g=v.positions,_=v.lengths,y=0,C=0,w=i.width,S=i.show&&w>0;l=g.length;for(var E=0;l>E;++E){0===E?i._loop?p=g[l-2]:(p=it,t.subtract(g[0],g[1],p),t.add(g[0],p,p)):p=g[E-1],et.x=p.x,et.y=p.y,et.z=a!==P.SCENE2D?p.z:0,p=g[E],$.x=p.x,$.y=p.y,$.z=a!==P.SCENE2D?p.z:0,E===l-1?i._loop?p=g[1]:(p=it,t.subtract(g[l-1],g[l-2],p),t.add(g[l-1],p,p)):p=g[E+1],tt.x=p.x,tt.y=p.y,tt.z=a!==P.SCENE2D?p.z:0;var b=_[y];E===C+b&&(C+=b,++y);for(var x=0===E-C,T=E===C+_[y]-1,A=x?2:0,D=T?2:4,M=A;D>M;++M){h.writeElements($,u,m),h.writeElements(et,u,m+6),h.writeElements(tt,u,m+12);var I=0>M-2?-1:1;c[f]=E/(l-1),c[f+1]=2*(M%2)-1,c[f+2]=I*w,c[f+3]=S,m+=18,f+=4}}r.copyFromArrayView(u,18*Float32Array.BYTES_PER_ELEMENT*e),n.copyFromArrayView(c,4*Float32Array.BYTES_PER_ELEMENT*e)}},Y}),i("DataSources/ScaledPositionProperty",["../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Ellipsoid","../Core/Event","../Core/ReferenceFrame","./Property"],function(e,t,i,r,n,o,a){"use strict";var s=function(e){this._definitionChanged=new n,this._value=void 0,this._removeSubscription=void 0,this.setValue(e)};return t(s.prototype,{isConstant:{get:function(){return a.isConstant(this._value)}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return e(this._value)?this._value.referenceFrame:o.FIXED}}}),s.prototype.getValue=function(e,t){return this.getValueInReferenceFrame(e,o.FIXED,t)},s.prototype.setValue=function(t){this._value!==t&&(this._value=t,e(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0),e(t)&&(this._removeSubscription=t.definitionChanged.addEventListener(this._raiseDefinitionChanged,this)),this._definitionChanged.raiseEvent(this))},s.prototype.getValueInReferenceFrame=function(t,i,n){return e(this._value)?(n=this._value.getValueInReferenceFrame(t,i,n),e(n)?r.WGS84.scaleToGeodeticSurface(n,n):void 0):void 0},s.prototype.equals=function(e){return this===e||e instanceof s&&this._value===e._value},s.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)},s}),i("DataSources/PathVisualizer",["../Core/AssociativeArray","../Core/Cartesian3","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/JulianDate","../Core/Matrix3","../Core/Matrix4","../Core/ReferenceFrame","../Core/TimeInterval","../Core/Transforms","../Scene/PolylineCollection","../Scene/SceneMode","./CompositePositionProperty","./ConstantPositionProperty","./MaterialProperty","./Property","./ReferenceProperty","./SampledPositionProperty","./ScaledPositionProperty","./TimeIntervalCollectionPositionProperty"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C){"use strict";function w(e,t,r,n,a,s,l,u,c){var h,d=u;h=e.getValueInReferenceFrame(t,s,c[d]),i(h)&&(c[d++]=h);for(var p,m,f,v=!i(a)||o.lessThanOrEquals(a,t)||o.greaterThanOrEquals(a,r),g=0,_=n.length,y=n[g],C=r,w=!1;_>g;){if(!v&&o.greaterThanOrEquals(y,a)&&(h=e.getValueInReferenceFrame(a,s,c[d]),i(h)&&(c[d++]=h),v=!0),o.greaterThan(y,t)&&o.lessThan(y,C)&&!y.equals(a)&&(h=e.getValueInReferenceFrame(y,s,c[d]),i(h)&&(c[d++]=h)),_-1>g){if(l>0&&!w){var S=n[g+1],E=o.secondsDifference(S,y);w=E>l,w&&(p=Math.ceil(E/l),m=0,f=E/Math.max(p,2),p=Math.max(p-1,1))}if(w&&p>m){y=o.addSeconds(y,f,new o),m++;continue}}w=!1,g++,y=n[g]}return h=e.getValueInReferenceFrame(r,s,c[d]),i(h)&&(c[d++]=h),d}function S(e,t,r,n,a,s,l,u){for(var c,h=0,d=l,p=t,m=Math.max(s,60),f=!i(n)||o.lessThanOrEquals(n,t)||o.greaterThanOrEquals(n,r);o.lessThan(p,r);)!f&&o.greaterThanOrEquals(p,n)&&(f=!0,c=e.getValueInReferenceFrame(n,a,u[d]),i(c)&&(u[d]=c,d++)),c=e.getValueInReferenceFrame(p,a,u[d]),i(c)&&(u[d]=c,d++),h++,p=o.addSeconds(t,m*h,new o);return c=e.getValueInReferenceFrame(r,a,u[d]),i(c)&&(u[d]=c,d++),d}function E(e,t,r,n,a,s,l,c){O.start=t,O.stop=r;for(var h=l,d=e.intervals,p=0;p0){var b=S.pop();c=this._polylineCollection.get(b),t.index=b}else t.index=this._polylineCollection.length,c=this._polylineCollection.add();c.id=a,t.polyline=c}var x=v.getValueOrDefault(s._resolution,e,A);c.show=!0,c.positions=P(l,r,n,e,this._referenceFrame,x,c.positions),c.material=f.getValue(e,s._material,c.material),c.width=v.getValueOrDefault(s._width,e,D)},N.prototype.removeObject=function(e){var t=e.polyline;i(t)&&(this._unusedIndexes.push(e.index),e.polyline=void 0,t.show=!1,e.index=void 0)},N.prototype.destroy=function(){return this._scene.primitives.remove(this._polylineCollection),r(this)};var F=function(t,i){i.collectionChanged.addEventListener(F.prototype._onCollectionChanged,this),this._scene=t,this._updaters={},this._entityCollection=i,this._items=new e,this._onCollectionChanged(i,i.values,[],[])};return F.prototype.update=function(e){var t=this._updaters;for(var r in t)t.hasOwnProperty(r)&&t[r].update(e);for(var n=this._items.values,o=0,a=n.length;a>o;o++){var s=n[o],u=s.entity,c=u._position,h=s.updater,p=l.FIXED;this._scene.mode===d.SCENE3D&&(p=c.referenceFrame);var m=this._updaters[p];h===m&&i(m)?m.updateObject(e,s):(i(h)&&h.removeObject(s),i(m)||(m=new N(this._scene,p),m.update(e),this._updaters[p]=m),s.updater=m,i(m)&&m.updateObject(e,s))}return!0},F.prototype.isDestroyed=function(){return!1},F.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(F.prototype._onCollectionChanged,this);var e=this._updaters;for(var t in e)e.hasOwnProperty(t)&&e[t].destroy();return r(this)},F.prototype._onCollectionChanged=function(e,t,r,n){var o,a,s,l=this._items;for(o=t.length-1;o>-1;o--)a=t[o],i(a._path)&&i(a._position)&&l.set(a.id,new R(a));for(o=n.length-1;o>-1;o--)a=n[o],i(a._path)&&i(a._position)?l.contains(a.id)||l.set(a.id,new R(a)):(s=l.get(a.id),i(s)&&(s.updater.removeObject(s),l.remove(a.id)));for(o=r.length-1;o>-1;o--)a=r[o],s=l.get(a.id),i(s)&&(s.updater.removeObject(s),l.remove(a.id))},F._subSample=P,F}),i("Shaders/PointPrimitiveCollectionFS",[],function(){"use strict";return"varying vec4 v_color;\nvarying vec4 v_outlineColor;\nvarying float v_innerPercent;\nvarying float v_pixelDistance;\n#ifdef RENDER_FOR_PICK\nvarying vec4 v_pickColor;\n#endif\nvoid main()\n{\nfloat distanceToCenter = length(gl_PointCoord - vec2(0.5));\nfloat maxDistance = max(0.0, 0.5 - v_pixelDistance);\nfloat wholeAlpha = 1.0 - smoothstep(maxDistance, 0.5, distanceToCenter);\nfloat innerAlpha = 1.0 - smoothstep(maxDistance * v_innerPercent, 0.5 * v_innerPercent, distanceToCenter);\nvec4 color = mix(v_outlineColor, v_color, innerAlpha);\ncolor.a *= wholeAlpha;\nif (color.a < 0.005)\n{\ndiscard;\n}\n#ifdef RENDER_FOR_PICK\ngl_FragColor = v_pickColor;\n#else\ngl_FragColor = color;\n#endif\n}\n"}),i("Shaders/PointPrimitiveCollectionVS",[],function(){"use strict";return"uniform float u_maxTotalPointSize;\nattribute vec4 positionHighAndSize;\nattribute vec4 positionLowAndOutline;\nattribute vec4 compressedAttribute0;\nattribute vec4 compressedAttribute1;\nattribute vec4 scaleByDistance;\nvarying vec4 v_color;\nvarying vec4 v_outlineColor;\nvarying float v_innerPercent;\nvarying float v_pixelDistance;\n#ifdef RENDER_FOR_PICK\nvarying vec4 v_pickColor;\n#endif\nconst float SHIFT_LEFT8 = 256.0;\nconst float SHIFT_RIGHT8 = 1.0 / 256.0;\nvoid main()\n{\nvec3 positionHigh = positionHighAndSize.xyz;\nvec3 positionLow = positionLowAndOutline.xyz;\nfloat outlineWidthBothSides = 2.0 * positionLowAndOutline.w;\nfloat totalSize = positionHighAndSize.w + outlineWidthBothSides;\nfloat outlinePercent = outlineWidthBothSides / totalSize;\ntotalSize *= czm_resolutionScale;\ntotalSize += 3.0;\nfloat temp = compressedAttribute1.x * SHIFT_RIGHT8;\nfloat show = floor(temp);\n#ifdef EYE_DISTANCE_TRANSLUCENCY\nvec4 translucencyByDistance;\ntranslucencyByDistance.x = compressedAttribute1.z;\ntranslucencyByDistance.z = compressedAttribute1.w;\ntranslucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;\ntemp = compressedAttribute1.y * SHIFT_RIGHT8;\ntranslucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;\n#endif\nvec4 color;\nvec4 outlineColor;\n#ifdef RENDER_FOR_PICK\ncolor = vec4(0.0);\noutlineColor = vec4(0.0);\nvec4 pickColor;\ntemp = compressedAttribute0.z * SHIFT_RIGHT8;\npickColor.b = (temp - floor(temp)) * SHIFT_LEFT8;\ntemp = floor(temp) * SHIFT_RIGHT8;\npickColor.g = (temp - floor(temp)) * SHIFT_LEFT8;\npickColor.r = floor(temp);\n#else\ntemp = compressedAttribute0.x * SHIFT_RIGHT8;\ncolor.b = (temp - floor(temp)) * SHIFT_LEFT8;\ntemp = floor(temp) * SHIFT_RIGHT8;\ncolor.g = (temp - floor(temp)) * SHIFT_LEFT8;\ncolor.r = floor(temp);\ntemp = compressedAttribute0.y * SHIFT_RIGHT8;\noutlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8;\ntemp = floor(temp) * SHIFT_RIGHT8;\noutlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8;\noutlineColor.r = floor(temp);\n#endif\ntemp = compressedAttribute0.w * SHIFT_RIGHT8;\n#ifdef RENDER_FOR_PICK\npickColor.a = (temp - floor(temp)) * SHIFT_LEFT8;\npickColor = pickColor / 255.0;\n#endif\ntemp = floor(temp) * SHIFT_RIGHT8;\noutlineColor.a = (temp - floor(temp)) * SHIFT_LEFT8;\noutlineColor /= 255.0;\ncolor.a = floor(temp);\ncolor /= 255.0;\nvec4 p = czm_translateRelativeToEye(positionHigh, positionLow);\nvec4 positionEC = czm_modelViewRelativeToEye * p;\npositionEC.xyz *= show;\n#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY)\nfloat lengthSq;\nif (czm_sceneMode == czm_sceneMode2D)\n{\nlengthSq = czm_eyeHeight2D.y;\n}\nelse\n{\nlengthSq = dot(positionEC.xyz, positionEC.xyz);\n}\n#endif\n#ifdef EYE_DISTANCE_SCALING\ntotalSize *= czm_nearFarScalar(scaleByDistance, lengthSq);\n#endif\ntotalSize = min(totalSize, u_maxTotalPointSize);\nif (totalSize < 1.0)\n{\npositionEC.xyz = vec3(0.0);\ntotalSize = 1.0;\n}\nfloat translucency = 1.0;\n#ifdef EYE_DISTANCE_TRANSLUCENCY\ntranslucency = czm_nearFarScalar(translucencyByDistance, lengthSq);\nif (translucency < 0.004)\n{\npositionEC.xyz = vec3(0.0);\n}\n#endif\nvec4 positionWC = czm_eyeToWindowCoordinates(positionEC);\ngl_Position = czm_viewportOrthographic * vec4(positionWC.xy, -positionWC.z, 1.0);\nv_color = color;\nv_color.a *= translucency;\nv_outlineColor = outlineColor;\nv_outlineColor.a *= translucency;\nv_innerPercent = 1.0 - outlinePercent;\nv_pixelDistance = 2.0 / totalSize;\ngl_PointSize = totalSize;\n#ifdef RENDER_FOR_PICK\nv_pickColor = pickColor;\n#endif\n}\n"}),i("Scene/PointPrimitive",["../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/Color","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Matrix4","../Core/NearFarScalar","./SceneMode","./SceneTransforms"],function(e,t,i,r,n,o,a,s,l,u,c,h){"use strict";function d(e,t){var i=e._pointPrimitiveCollection;o(i)&&(i._updatePointPrimitive(e,t),e._dirty=!0)}var p=function(e,i){e=n(e,n.EMPTY_OBJECT),this._show=n(e.show,!0),this._position=t.clone(n(e.position,t.ZERO)),this._actualPosition=t.clone(this._position),this._color=r.clone(n(e.color,r.WHITE)),this._outlineColor=r.clone(n(e.outlineColor,r.TRANSPARENT)),this._outlineWidth=n(e.outlineWidth,0),this._pixelSize=n(e.pixelSize,10),this._scaleByDistance=e.scaleByDistance,this._translucencyByDistance=e.translucencyByDistance,this._id=e.id,this._collection=n(e.collection,i),this._pickId=void 0,this._pointPrimitiveCollection=i,this._dirty=!1,this._index=-1},m=p.SHOW_INDEX=0,f=p.POSITION_INDEX=1,v=p.COLOR_INDEX=2,g=p.OUTLINE_COLOR_INDEX=3,_=p.OUTLINE_WIDTH_INDEX=4,y=p.PIXEL_SIZE_INDEX=5,C=p.SCALE_BY_DISTANCE_INDEX=6,w=p.TRANSLUCENCY_BY_DISTANCE_INDEX=7;p.NUMBER_OF_PROPERTIES=8,a(p.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,d(this,m))}},position:{get:function(){return this._position},set:function(e){var i=this._position;t.equals(i,e)||(t.clone(e,i),t.clone(e,this._actualPosition),d(this,f))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){var t=this._scaleByDistance;u.equals(t,e)||(this._scaleByDistance=u.clone(e,t),d(this,C))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){var t=this._translucencyByDistance;u.equals(t,e)||(this._translucencyByDistance=u.clone(e,t),d(this,w))}},pixelSize:{get:function(){return this._pixelSize},set:function(e){this._pixelSize!==e&&(this._pixelSize=e,d(this,y))}},color:{get:function(){return this._color},set:function(e){var t=this._color;r.equals(t,e)||(r.clone(e,t),d(this,v))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){var t=this._outlineColor;r.equals(t,e)||(r.clone(e,t),d(this,g))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,d(this,_))}},id:{get:function(){return this._id},set:function(e){this._id=e,o(this._pickId)&&(this._pickId.object.id=e)}}}),p.prototype.getPickId=function(e){return o(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._collection,id:this._id})),this._pickId},p.prototype._getActualPosition=function(){return this._actualPosition},p.prototype._setActualPosition=function(e){t.clone(e,this._actualPosition),d(this,f)};var S=new i;p._computeActualPosition=function(e,t,i){return t.mode===c.SCENE3D?e:(l.multiplyByPoint(i,e,S),h.computeActualWgs84Position(t,S))};var E=new l,b=new i;return p._computeScreenSpacePosition=function(e,t,r,n){var o=r.camera,a=o.viewMatrix,s=o.frustum.projectionMatrix,u=l.multiplyTransformation(a,e,E),c=l.multiplyByVector(u,i.fromElements(t.x,t.y,t.z,1,b),b),d=l.multiplyByVector(s,c,b),p=h.clipToGLWindowCoordinates(r,d,n);return p},p.prototype.computeScreenSpacePosition=function(t,i){var r=this._pointPrimitiveCollection;o(i)||(i=new e);var n=r.modelMatrix,a=p._computeScreenSpacePosition(n,this._actualPosition,t,i);return a.y=t.canvas.clientHeight-a.y,a},p.prototype.equals=function(e){return this===e||o(e)&&this._id===e._id&&t.equals(this._position,e._position)&&r.equals(this._color,e._color)&&this._pixelSize===e._pixelSize&&this._outlineWidth===e._outlineWidth&&this._show===e._show&&r.equals(this._outlineColor,e._outlineColor)&&u.equals(this._scaleByDistance,e._scaleByDistance)&&u.equals(this._translucencyByDistance,e._translucencyByDistance)},p.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._pointPrimitiveCollection=void 0},p}),i("Scene/PointPrimitiveCollection",["../Core/BoundingSphere","../Core/Cartesian2","../Core/Cartesian3","../Core/Color","../Core/ComponentDatatype","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/EncodedCartesian3","../Core/Math","../Core/Matrix4","../Core/PrimitiveType","../Renderer/BufferUsage","../Renderer/DrawCommand","../Renderer/ShaderSource","../Renderer/VertexArrayFacade","../Shaders/PointPrimitiveCollectionFS","../Shaders/PointPrimitiveCollectionVS","./PointPrimitive","./BlendingState","./Pass","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E){"use strict";function b(e){for(var t=e.length,i=0;t>i;++i)e[i]&&e[i]._destroy()}function x(e){if(e._pointPrimitivesRemoved){e._pointPrimitivesRemoved=!1;for(var t=[],i=e._pointPrimitives,r=i.length,n=0,o=0;r>n;++n){var a=i[n];a&&(a._index=o++,t.push(a))}e._pointPrimitives=t}}function T(e,t,i){return new g(e,[{index:H.positionHighAndSize,componentsPerAttribute:4,componentDatatype:n.FLOAT,usage:i[F]},{index:H.positionLowAndShow,componentsPerAttribute:4,componentDatatype:n.FLOAT,usage:i[F]},{index:H.compressedAttribute0,componentsPerAttribute:4,componentDatatype:n.FLOAT,usage:i[B]},{index:H.compressedAttribute1,componentsPerAttribute:4,componentDatatype:n.FLOAT,usage:i[W]},{index:H.scaleByDistance,componentsPerAttribute:4,componentDatatype:n.FLOAT,usage:i[U]}],t)}function P(t,i,r,n){var o=n._index,a=n._getActualPosition();t._mode===E.SCENE3D&&(e.expand(t._baseVolume,a,t._baseVolume),t._boundingVolumeDirty=!0),c.fromCartesian(a,j);var s=n.pixelSize,l=n.outlineWidth;t._maxPixelSize=Math.max(t._maxPixelSize,s+l);var u=r[H.positionHighAndSize],h=j.high;u(o,h.x,h.y,h.z,s);var d=r[H.positionLowAndOutline],p=j.low;d(o,p.x,p.y,p.z,l)}function A(e,t,i,n){var o=n._index,a=n.color,s=n.getPickId(t).color,l=n.outlineColor,u=r.floatToByte(a.red),c=r.floatToByte(a.green),h=r.floatToByte(a.blue),d=u*Y+c*X+h;u=r.floatToByte(l.red),c=r.floatToByte(l.green),h=r.floatToByte(l.blue);var p=u*Y+c*X+h;u=r.floatToByte(s.red),c=r.floatToByte(s.green),h=r.floatToByte(s.blue);var m=u*Y+c*X+h,f=r.floatToByte(a.alpha)*Y+r.floatToByte(l.alpha)*X+r.floatToByte(s.alpha),v=i[H.compressedAttribute0];v(o,d,p,m,f)}function D(e,t,i,r){var n=r._index,o=0,s=1,l=1,u=1,c=r.translucencyByDistance;a(c)&&(o=c.near,s=c.nearValue,l=c.far,u=c.farValue,(1!==s||1!==u)&&(e._shaderTranslucencyByDistance=!0));var d=r.show;0===r.color.alpha&&0===r.outlineColor.alpha&&(d=!1),s=h.clamp(s,0,1),s=1===s?255:0|255*s;var p=(d?1:0)*X+s;u=h.clamp(u,0,1),u=1===u?255:0|255*u;var m=u,f=i[H.compressedAttribute1];f(n,p,m,o,l)}function M(e,t,i,r){var n=r._index,o=i[H.scaleByDistance],s=0,l=1,u=1,c=1,h=r.scaleByDistance;a(h)&&(s=h.near,l=h.nearValue,u=h.far,c=h.farValue,(1!==l||1!==c)&&(e._shaderScaleByDistance=!0)),o(n,s,l,u,c)}function I(e,t,i,r){P(e,t,i,r),A(e,t,i,r),D(e,t,i,r),M(e,t,i,r)}function O(t,i,r,n,o,s){var l;n.mode===E.SCENE3D?(l=t._baseVolume,t._boundingVolumeDirty=!0):l=t._baseVolume2D;for(var u=[],c=0;r>c;++c){var h=i[c],d=h.position,p=C._computeActualPosition(d,n,o);a(p)&&(h._setActualPosition(p),s?u.push(p):e.expand(l,p,l))}s&&e.fromPoints(u,l)}function R(e,t){var i=t.mode,r=e._pointPrimitives,n=e._pointPrimitivesToUpdate,o=e._modelMatrix;e._createVertexArray||e._mode!==i||i!==E.SCENE3D&&!d.equals(o,e.modelMatrix)?(e._mode=i,d.clone(e.modelMatrix,o),e._createVertexArray=!0,(i===E.SCENE3D||i===E.SCENE2D||i===E.COLUMBUS_VIEW)&&O(e,r,r.length,t,o,!0)):i===E.MORPHING?O(e,r,r.length,t,o,!0):(i===E.SCENE2D||i===E.COLUMBUS_VIEW)&&O(e,n,e._pointPrimitivesToUpdateIndex,t,o,!1)}function L(e,t,r,n){var o=r.camera,a=o.frustum,s=i.subtract(o.positionWC,n.center,J),l=i.multiplyByScalar(o.directionWC,i.dot(s,o.directionWC),Q),u=Math.max(0,i.magnitude(l)-n.radius);Z.x=t.drawingBufferWidth,Z.y=t.drawingBufferHeight;var c=a.getPixelSize(Z,u),h=Math.max(c.x,c.y),d=h*e._maxPixelSize;n.radius+=d}var N=C.SHOW_INDEX,F=C.POSITION_INDEX,B=C.COLOR_INDEX,z=C.OUTLINE_COLOR_INDEX,k=C.OUTLINE_WIDTH_INDEX,V=C.PIXEL_SIZE_INDEX,U=C.SCALE_BY_DISTANCE_INDEX,W=C.TRANSLUCENCY_BY_DISTANCE_INDEX,G=C.NUMBER_OF_PROPERTIES,H={positionHighAndSize:0,positionLowAndOutline:1,compressedAttribute0:2,compressedAttribute1:3,scaleByDistance:4},q=function(t){t=o(t,o.EMPTY_OBJECT),this._sp=void 0,this._rs=void 0,this._vaf=void 0,this._spPick=void 0,this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._compiledShaderScaleByDistancePick=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistancePick=!1,this._propertiesChanged=new Uint32Array(G),this._maxPixelSize=1,this._baseVolume=new e,this._baseVolumeWC=new e,this._baseVolume2D=new e,this._boundingVolume=new e,this._boundingVolumeDirty=!1,this._colorCommands=[],this._pickCommands=[],this.modelMatrix=d.clone(o(t.modelMatrix,d.IDENTITY)),this._modelMatrix=d.clone(d.IDENTITY),this.debugShowBoundingVolume=o(t.debugShowBoundingVolume,!1),this._mode=E.SCENE3D,this._maxTotalPointSize=1,this._buffersUsage=[m.STATIC_DRAW,m.STATIC_DRAW,m.STATIC_DRAW,m.STATIC_DRAW,m.STATIC_DRAW,m.STATIC_DRAW,m.STATIC_DRAW,m.STATIC_DRAW];var i=this;this._uniforms={u_maxTotalPointSize:function(){return i._maxTotalPointSize}}};s(q.prototype,{length:{get:function(){return x(this),this._pointPrimitives.length}}}),q.prototype.add=function(e){var t=new C(e,this);return t._index=this._pointPrimitives.length,this._pointPrimitives.push(t),this._createVertexArray=!0,t},q.prototype.remove=function(e){return this.contains(e)?(this._pointPrimitives[e._index]=null,this._pointPrimitivesRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1},q.prototype.removeAll=function(){b(this._pointPrimitives),this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!0},q.prototype._updatePointPrimitive=function(e,t){e._dirty||(this._pointPrimitivesToUpdate[this._pointPrimitivesToUpdateIndex++]=e),++this._propertiesChanged[t]},q.prototype.contains=function(e){return a(e)&&e._pointPrimitiveCollection===this},q.prototype.get=function(e){return x(this),this._pointPrimitives[e]},q.prototype.computeNewBuffersUsage=function(){for(var e=this._buffersUsage,t=!1,i=this._propertiesChanged,r=0;G>r;++r){var n=0===i[r]?m.STATIC_DRAW:m.STREAM_DRAW;t=t||e[r]!==n,e[r]=n}return t};var j=new c,Y=65536,X=256,Z=new t,J=new i,Q=new i,K=[];return q.prototype.update=function(t,i,r){x(this),this._maxTotalPointSize=t.maximumAliasedPointSize,R(this,i);var n,o=this._pointPrimitives,s=o.length,l=this._pointPrimitivesToUpdate,u=this._pointPrimitivesToUpdateIndex,c=this._propertiesChanged,h=this._createVertexArray,m=i.passes,g=m.pick;if(h||!g&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(var C=0;G>C;++C)c[C]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),s>0){this._vaf=T(t,s,this._buffersUsage),n=this._vaf.writers;for(var b=0;s>b;++b){var O=this._pointPrimitives[b];O._dirty=!1,I(this,t,n,O)}this._vaf.commit()}this._pointPrimitivesToUpdateIndex=0}else if(u>0){var q=K;q.length=0,(c[F]||c[k]||c[V])&&q.push(P),(c[B]||c[z])&&q.push(A),(c[N]||c[W])&&q.push(D),c[U]&&q.push(M);var j=q.length;if(n=this._vaf.writers,u/s>.1){for(var Y=0;u>Y;++Y){var X=l[Y];X._dirty=!1;for(var Z=0;j>Z;++Z)q[Z](this,t,n,X)}this._vaf.commit()}else{for(var J=0;u>J;++J){var Q=l[J];Q._dirty=!1;for(var $=0;j>$;++$)q[$](this,t,n,Q);this._vaf.subCommit(Q._index,1)}this._vaf.endSubCommits()}this._pointPrimitivesToUpdateIndex=0}if(u>1.5*s&&(l.length=s),a(this._vaf)&&a(this._vaf.va)){this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,e.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));var et,tt=d.IDENTITY;i.mode===E.SCENE3D?(tt=this.modelMatrix,et=e.clone(this._baseVolumeWC,this._boundingVolume)):et=e.clone(this._baseVolume2D,this._boundingVolume),L(this,t,i,et);var it,rt,nt,ot,at,st;if(m.render){var lt=this._colorCommands;for(a(this._rs)||(this._rs=t.createRenderState({depthTest:{enabled:!0},blending:w.ALPHA_BLEND})),(!a(this._sp)||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance)&&(at=new v({sources:[y]}),this._shaderScaleByDistance&&at.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&at.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._sp=t.replaceShaderProgram(this._sp,at,_,H),this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance),it=this._vaf.va,rt=it.length,lt.length=rt,ot=0;rt>ot;++ot)nt=lt[ot],a(nt)||(nt=lt[ot]=new f({primitiveType:p.POINTS,pass:S.OPAQUE,owner:this})),nt.boundingVolume=et,nt.modelMatrix=tt,nt.shaderProgram=this._sp,nt.uniformMap=this._uniforms,nt.vertexArray=it[ot].va,nt.renderState=this._rs,nt.debugShowBoundingVolume=this.debugShowBoundingVolume,r.push(nt)}if(g){var ut=this._pickCommands;for((!a(this._spPick)||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistancePick||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistancePick)&&(at=new v({defines:["RENDER_FOR_PICK"],sources:[y]}),this._shaderScaleByDistance&&at.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&at.defines.push("EYE_DISTANCE_TRANSLUCENCY"),st=new v({defines:["RENDER_FOR_PICK"],sources:[_]}),this._spPick=t.replaceShaderProgram(this._spPick,at,st,H),this._compiledShaderScaleByDistancePick=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistancePick=this._shaderTranslucencyByDistance),it=this._vaf.va,rt=it.length,ut.length=rt,ot=0;rt>ot;++ot)nt=ut[ot],a(nt)||(nt=ut[ot]=new f({primitiveType:p.POINTS,pass:S.OPAQUE,owner:this})),nt.boundingVolume=et,nt.modelMatrix=tt,nt.shaderProgram=this._spPick,nt.uniformMap=this._uniforms,nt.vertexArray=it[ot].va,nt.renderState=this._rs,r.push(nt)}}},q.prototype.isDestroyed=function(){return!1},q.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),b(this._pointPrimitives),l(this)},q}),i("DataSources/PointVisualizer",["../Core/AssociativeArray","../Core/Cartesian3","../Core/Color","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/NearFarScalar","../Scene/PointPrimitiveCollection","./BoundingSphereState","./Property"],function(e,t,i,r,n,o,a,s,l,u){"use strict";function c(e,t){if(r(e)){var i=e.pointPrimitive;r(i)&&(e.pointPrimitive=void 0,i.show=!1,t.push(i._index))}}var h=i.WHITE,d=i.BLACK,p=0,m=1,f=new i,v=new t,g=new i,_=new a,y=new a,C=function(e){this.entity=e,this.pointPrimitive=void 0,this.color=void 0,this.outlineColor=void 0,this.pixelSize=void 0,this.outlineWidth=void 0 +},w=function(t,i){i.collectionChanged.addEventListener(w.prototype._onCollectionChanged,this),this._scene=t,this._unusedIndexes=[],this._entityCollection=i,this._pointPrimitiveCollection=void 0,this._items=new e,this._onCollectionChanged(i,i.values,[],[])};return w.prototype.update=function(e){for(var t=this._items.values,i=this._unusedIndexes,n=0,o=t.length;o>n;n++){var a=t[n],l=a.entity,C=l._point,w=a.pointPrimitive,S=l.isShowing&&l.isAvailable(e)&&u.getValueOrDefault(C._show,e,!0);if(S&&(v=u.getValueOrUndefined(l._position,e,v),S=r(v)),S){if(!r(w)){var E=this._pointPrimitiveCollection;r(E)||(E=new s,this._pointPrimitiveCollection=E,this._scene.primitives.add(E));var b=i.length;w=b>0?E.get(i.pop()):E.add(),w.id=l,a.pointPrimitive=w}w.show=!0,w.position=v,w.scaleByDistance=u.getValueOrUndefined(C._scaleByDistance,e,_),w.translucencyByDistance=u.getValueOrUndefined(C._translucencyByDistance,e,y),w.color=u.getValueOrDefault(C._color,e,h,f),w.outlineColor=u.getValueOrDefault(C._outlineColor,e,d,g),w.outlineWidth=u.getValueOrDefault(C._outlineWidth,e,p),w.pixelSize=u.getValueOrDefault(C._pixelSize,e,m)}else c(a,i)}return!0},w.prototype.getBoundingSphere=function(e,i){var n=this._items.get(e.id);return r(n)&&r(n.pointPrimitive)?(i.center=t.clone(n.pointPrimitive.position,i.center),i.radius=0,l.DONE):l.FAILED},w.prototype.isDestroyed=function(){return!1},w.prototype.destroy=function(){return this._entityCollection.collectionChanged.removeEventListener(w.prototype._onCollectionChanged,this),r(this._pointPrimitiveCollection)&&this._scene.primitives.remove(this._pointPrimitiveCollection),n(this)},w.prototype._onCollectionChanged=function(e,t,i,n){var o,a,s=this._unusedIndexes,l=this._items;for(o=t.length-1;o>-1;o--)a=t[o],r(a._point)&&r(a._position)&&l.set(a.id,new C(a));for(o=n.length-1;o>-1;o--)a=n[o],r(a._point)&&r(a._position)?l.contains(a.id)||l.set(a.id,new C(a)):(c(l.get(a.id),s),l.remove(a.id));for(o=i.length-1;o>-1;o--)a=i[o],c(l.get(a.id),s),l.remove(a.id)},w}),i("DataSources/PolygonGeometryUpdater",["../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../Core/GeometryInstance","../Core/isArray","../Core/Iso8601","../Core/PolygonGeometry","../Core/PolygonHierarchy","../Core/PolygonOutlineGeometry","../Core/ShowGeometryInstanceAttribute","../Scene/MaterialAppearance","../Scene/PerInstanceColorAppearance","../Scene/Primitive","./ColorMaterialProperty","./ConstantProperty","./dynamicGeometryGetBoundingSphere","./MaterialProperty","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S){"use strict";var E=new _(e.WHITE),b=new y(!0),x=new y(!0),T=new y(!1),P=new y(e.BLACK),A=new e,D=function(e){this.id=e,this.vertexFormat=void 0,this.polygonHierarchy=void 0,this.perPositionHeight=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0},M=function(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(M.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._isClosed=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new s,this._showProperty=void 0,this._materialProperty=void 0,this._hasConstantOutline=!0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._options=new D(e),this._onEntityPropertyChanged(e,"polygon",e.polygon,void 0)};n(M,{perInstanceColorAppearanceType:{value:v},materialAppearanceType:{value:f}}),n(M.prototype,{entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!r(this._entity.availability)&&S.isConstant(this._showProperty)&&S.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!r(this._entity.availability)&&S.isConstant(this._showProperty)&&S.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},isDynamic:{get:function(){return this._dynamic}},isClosed:{get:function(){return this._isClosed}},geometryChanged:{get:function(){return this._geometryChanged}}}),M.prototype.isOutlineVisible=function(e){var t=this._entity;return this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)},M.prototype.isFilled=function(e){var t=this._entity;return this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)},M.prototype.createFillGeometryInstance=function(i){var n,o,a=this._entity,s=a.isAvailable(i),u=new m(s&&a.isShowing&&this._showProperty.getValue(i)&&this._fillProperty.getValue(i));if(this._materialProperty instanceof _){var c=e.WHITE;r(this._materialProperty.color)&&(this._materialProperty.color.isConstant||s)&&(c=this._materialProperty.color.getValue(i)),o=t.fromColor(c),n={show:u,color:o}}else n={show:u};return new l({id:a,geometry:new h(this._options),attributes:n})},M.prototype.createOutlineGeometryInstance=function(i){var r=this._entity,n=r.isAvailable(i),o=S.getValueOrDefault(this._outlineColorProperty,i,e.BLACK);return new l({id:r,geometry:new p(this._options),attributes:{show:new m(n&&r.isShowing&&this._showProperty.getValue(i)&&this._showOutlineProperty.getValue(i)),color:t.fromColor(o)}})},M.prototype.isDestroyed=function(){return!1},M.prototype.destroy=function(){this._entitySubscription(),o(this)},M.prototype._onEntityPropertyChanged=function(e,t){if("availability"===t||"polygon"===t){var n=this._entity.polygon;if(!r(n))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var o=n.fill,a=r(o)&&o.isConstant?o.getValue(c.MINIMUM_VALUE):!0,s=n.outline,l=r(s);if(l&&s.isConstant&&(l=s.getValue(c.MINIMUM_VALUE)),!a&&!l)return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var h=n.hierarchy,p=n.show;if(r(p)&&p.isConstant&&!p.getValue(c.MINIMUM_VALUE)||!r(h))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var m=i(n.material,E),g=m instanceof _;this._materialProperty=m,this._fillProperty=i(o,x),this._showProperty=i(p,b),this._showOutlineProperty=i(n.outline,T),this._outlineColorProperty=l?i(n.outlineColor,P):void 0;var y=n.height,C=n.extrudedHeight,w=n.granularity,A=n.stRotation,D=n.outlineWidth,M=n.perPositionHeight;if(this._fillEnabled=a,this._outlineEnabled=l,h.isConstant&&S.isConstant(y)&&S.isConstant(C)&&S.isConstant(w)&&S.isConstant(A)&&S.isConstant(D)&&S.isConstant(M)){var I=this._options;I.vertexFormat=g?v.VERTEX_FORMAT:f.MaterialSupport.TEXTURED.vertexFormat;var O=h.getValue(c.MINIMUM_VALUE);u(O)&&(O=new d(O));var R=r(y)?y.getValue(c.MINIMUM_VALUE):void 0,L=r(C)?C.getValue(c.MINIMUM_VALUE):void 0;I.polygonHierarchy=O,I.height=R,I.extrudedHeight=L,I.granularity=r(w)?w.getValue(c.MINIMUM_VALUE):void 0,I.stRotation=r(A)?A.getValue(c.MINIMUM_VALUE):void 0,I.perPositionHeight=r(M)?M.getValue(c.MINIMUM_VALUE):void 0,this._outlineWidth=r(D)?D.getValue(c.MINIMUM_VALUE):1,this._isClosed=r(L)&&L!==R,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}else this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this))}},M.prototype.createDynamicUpdater=function(e){return new I(e,this)};var I=function(e,t){this._primitives=e,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=t,this._options=new D(t._entity)};return I.prototype.update=function(i){var n=this._primitives;n.removeAndDestroy(this._primitive),n.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0;var o=this._geometryUpdater,a=o._entity,s=a.polygon;if(a.isShowing&&a.isAvailable(i)&&S.getValueOrDefault(s.show,i,!0)){var c=this._options,m=S.getValueOrUndefined(s.hierarchy,i);if(r(m)){if(c.polygonHierarchy=u(m)?new d(m):m,c.height=S.getValueOrUndefined(s.height,i),c.extrudedHeight=S.getValueOrUndefined(s.extrudedHeight,i),c.granularity=S.getValueOrUndefined(s.granularity,i),c.stRotation=S.getValueOrUndefined(s.stRotation,i),c.perPositionHeight=S.getValueOrUndefined(s.perPositionHeight,i),S.getValueOrDefault(s.fill,i,!0)){var _=w.getValue(i,o.fillMaterialProperty,this._material);this._material=_;var y=new f({material:_,translucent:_.isTranslucent(),closed:r(c.extrudedHeight)&&c.extrudedHeight!==c.height});c.vertexFormat=y.vertexFormat,this._primitive=n.add(new g({geometryInstances:new l({id:a,geometry:new h(c)}),appearance:y,asynchronous:!1}))}if(S.getValueOrDefault(s.outline,i,!1)){c.vertexFormat=v.VERTEX_FORMAT;var C=S.getValueOrClonedDefault(s.outlineColor,i,e.BLACK,A),E=S.getValueOrDefault(s.outlineWidth,i,1),b=1!==C.alpha;this._outlinePrimitive=n.add(new g({geometryInstances:new l({id:a,geometry:new p(c),attributes:{color:t.fromColor(C)}}),appearance:new v({flat:!0,translucent:b,renderState:{lineWidth:o._scene.clampLineWidth(E)}}),asynchronous:!1}))}}}},I.prototype.getBoundingSphere=function(e,t){return C(e,this._primitive,this._outlinePrimitive,t)},I.prototype.isDestroyed=function(){return!1},I.prototype.destroy=function(){var e=this._primitives;e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),o(this)},M}),i("Shaders/Appearances/PolylineColorAppearanceVS",[],function(){"use strict";return"attribute vec3 position3DHigh;\nattribute vec3 position3DLow;\nattribute vec3 prevPosition3DHigh;\nattribute vec3 prevPosition3DLow;\nattribute vec3 nextPosition3DHigh;\nattribute vec3 nextPosition3DLow;\nattribute vec2 expandAndWidth;\nattribute vec4 color;\nvarying vec4 v_color;\nvoid main()\n{\nfloat expandDir = expandAndWidth.x;\nfloat width = abs(expandAndWidth.y) + 0.5;\nbool usePrev = expandAndWidth.y < 0.0;\nvec4 p = czm_computePosition();\nvec4 prev = czm_computePrevPosition();\nvec4 next = czm_computeNextPosition();\nv_color = color;\nvec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev);\ngl_Position = czm_viewportOrthographic * positionWC;\n}\n"}),i("Scene/PolylineColorAppearance",["../Core/defaultValue","../Core/defineProperties","../Core/VertexFormat","../Shaders/Appearances/PerInstanceFlatColorAppearanceFS","../Shaders/Appearances/PolylineColorAppearanceVS","../Shaders/PolylineCommon","./Appearance"],function(e,t,i,r,n,o,a){"use strict";var s=o+"\n"+n,l=r,u=function(t){t=e(t,e.EMPTY_OBJECT);var i=e(t.translucent,!0),r=!1,n=u.VERTEX_FORMAT;this.material=void 0,this.translucent=i,this._vertexShaderSource=e(t.vertexShaderSource,s),this._fragmentShaderSource=e(t.fragmentShaderSource,l),this._renderState=a.getDefaultRenderState(i,r,t.renderState),this._closed=r,this._vertexFormat=n};return t(u.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}}),u.VERTEX_FORMAT=i.POSITION_ONLY,u.prototype.getFragmentShaderSource=a.prototype.getFragmentShaderSource,u.prototype.isTranslucent=a.prototype.isTranslucent,u.prototype.getRenderState=a.prototype.getRenderState,u}),i("Shaders/Appearances/PolylineMaterialAppearanceVS",[],function(){"use strict";return"attribute vec3 position3DHigh;\nattribute vec3 position3DLow;\nattribute vec3 prevPosition3DHigh;\nattribute vec3 prevPosition3DLow;\nattribute vec3 nextPosition3DHigh;\nattribute vec3 nextPosition3DLow;\nattribute vec2 expandAndWidth;\nattribute vec2 st;\nvarying float v_width;\nvarying vec2 v_st;\nvoid main()\n{\nfloat expandDir = expandAndWidth.x;\nfloat width = abs(expandAndWidth.y) + 0.5;\nbool usePrev = expandAndWidth.y < 0.0;\nvec4 p = czm_computePosition();\nvec4 prev = czm_computePrevPosition();\nvec4 next = czm_computeNextPosition();\nv_width = width;\nv_st = st;\nvec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev);\ngl_Position = czm_viewportOrthographic * positionWC;\n}\n"}),i("Scene/PolylineMaterialAppearance",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/VertexFormat","../Shaders/Appearances/PolylineMaterialAppearanceVS","../Shaders/PolylineCommon","../Shaders/PolylineFS","./Appearance","./Material"],function(e,t,i,r,n,o,a,s,l){"use strict";var u=o+"\n"+n,c=a,h=function(i){i=e(i,e.EMPTY_OBJECT);var r=e(i.translucent,!0),n=!1,o=h.VERTEX_FORMAT;this.material=t(i.material)?i.material:l.fromType(l.ColorType),this.translucent=r,this._vertexShaderSource=e(i.vertexShaderSource,u),this._fragmentShaderSource=e(i.fragmentShaderSource,c),this._renderState=s.getDefaultRenderState(r,n,i.renderState),this._closed=n,this._vertexFormat=o};return i(h.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}}),h.VERTEX_FORMAT=r.POSITION_AND_ST,h.prototype.getFragmentShaderSource=s.prototype.getFragmentShaderSource,h.prototype.isTranslucent=s.prototype.isTranslucent,h.prototype.getRenderState=s.prototype.getRenderState,h}),i("DataSources/PolylineGeometryUpdater",["../Core/BoundingSphere","../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Ellipsoid","../Core/Event","../Core/GeometryInstance","../Core/Iso8601","../Core/PolylineGeometry","../Core/PolylinePipeline","../Core/ShowGeometryInstanceAttribute","../Scene/PolylineCollection","../Scene/PolylineColorAppearance","../Scene/PolylineMaterialAppearance","./BoundingSphereState","./ColorMaterialProperty","./ConstantProperty","./MaterialProperty","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S){"use strict";var E={},b=new y(t.WHITE),x=new C(!0),T=function(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.followSurface=void 0,this.granularity=void 0},P=function(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(P.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._geometryChanged=new u,this._showProperty=void 0,this._materialProperty=void 0,this._options=new T(e),this._onEntityPropertyChanged(e,"polyline",e.polyline,void 0)};o(P,{perInstanceColorAppearanceType:{value:v},materialAppearanceType:{value:g}}),o(P.prototype,{entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!n(this._entity.availability)&&S.isConstant(this._showProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{value:!1},hasConstantOutline:{value:!0},outlineColorProperty:{value:void 0},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!1},geometryChanged:{get:function(){return this._geometryChanged}}}),P.prototype.isOutlineVisible=function(){return!1},P.prototype.isFilled=function(e){var t=this._entity;return this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)},P.prototype.createFillGeometryInstance=function(e){var r,o,a=this._entity,s=a.isAvailable(e),l=new m(s&&a.isShowing&&this._showProperty.getValue(e));if(this._materialProperty instanceof y){var u=t.WHITE;n(this._materialProperty.color)&&(this._materialProperty.color.isConstant||s)&&(u=this._materialProperty.color.getValue(e)),r=i.fromColor(u),o={show:l,color:r}}else o={show:l};return new c({id:a,geometry:new d(this._options),attributes:o})},P.prototype.createOutlineGeometryInstance=function(){},P.prototype.isDestroyed=function(){return!1},P.prototype.destroy=function(){this._entitySubscription(),a(this)},P.prototype._onEntityPropertyChanged=function(e,t){if("availability"===t||"polyline"===t){var i=this._entity.polyline;if(!n(i))return this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var o=i.positions,a=i.show;if(n(a)&&a.isConstant&&!a.getValue(h.MINIMUM_VALUE)||!n(o))return this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var s=r(i.material,b),l=s instanceof y;this._materialProperty=s,this._showProperty=r(a,x),this._fillEnabled=!0;var u=i.width,c=i.followSurface,d=i.granularity;if(o.isConstant&&S.isConstant(u)&&S.isConstant(c)&&S.isConstant(d)){var p=this._options,m=o.getValue(h.MINIMUM_VALUE,p.positions);if(!n(m)||m.length<2)return this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;p.vertexFormat=l?v.VERTEX_FORMAT:g.VERTEX_FORMAT,p.positions=m,p.width=n(u)?u.getValue(h.MINIMUM_VALUE):void 0,p.followSurface=n(c)?c.getValue(h.MINIMUM_VALUE):void 0,p.granularity=n(d)?d.getValue(h.MINIMUM_VALUE):void 0,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}else this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this))}},P.prototype.createDynamicUpdater=function(e){return new A(e,this)};var A=function(e,t){var i=t._scene.id,r=E[i];!n(r)||r.isDestroyed()?(r=new f,E[i]=r,e.add(r)):e.contains(r)||e.add(r);var o=r.add();o.id=t._entity,this._line=o,this._primitives=e,this._geometryUpdater=t,this._positions=[]},D={positions:void 0,granularity:void 0,height:void 0};return A.prototype.update=function(e){var t=this._geometryUpdater,i=t._entity,r=i.polyline,o=this._line;if(!i.isShowing||!i.isAvailable(e)||!S.getValueOrDefault(r._show,e,!0))return o.show=!1,void 0;var a=r.positions,s=S.getValueOrUndefined(a,e,this._positions);if(!n(s)||s.length<2)return o.show=!1,void 0;var l=S.getValueOrDefault(r._followSurface,e,!0);l&&(D.positions=s,D.granularity=S.getValueOrUndefined(r._granularity,e),D.height=p.extractHeights(s,this._geometryUpdater._scene.globe.ellipsoid),s=p.generateCartesianArc(D)),o.show=!0,o.positions=s,o.material=w.getValue(e,t.fillMaterialProperty,o.material),o.width=S.getValueOrDefault(r._width,e,1)},A.prototype.getBoundingSphere=function(t,i){var r=this._line;return r.show&&r.positions.length>0?(e.fromPoints(r.positions,i),_.DONE):_.FAILED},A.prototype.isDestroyed=function(){return!1},A.prototype.destroy=function(){var e=this._geometryUpdater,t=e._scene.id,i=E[t];i.remove(this._line),0===i.length&&(this._primitives.removeAndDestroy(i),delete E[t]),a(this)},P}),i("DataSources/PolylineVolumeGeometryUpdater",["../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../Core/GeometryInstance","../Core/Iso8601","../Core/PolylineVolumeGeometry","../Core/PolylineVolumeOutlineGeometry","../Core/ShowGeometryInstanceAttribute","../Scene/MaterialAppearance","../Scene/PerInstanceColorAppearance","../Scene/Primitive","./ColorMaterialProperty","./ConstantProperty","./dynamicGeometryGetBoundingSphere","./MaterialProperty","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C){"use strict";var w=new v(e.WHITE),S=new g(!0),E=new g(!0),b=new g(!1),x=new g(e.BLACK),T=new e,P=function(e){this.id=e,this.vertexFormat=void 0,this.polylinePositions=void 0,this.shapePositions=void 0,this.cornerType=void 0,this.granularity=void 0},A=function(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(A.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new s,this._showProperty=void 0,this._materialProperty=void 0,this._hasConstantOutline=!0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._options=new P(e),this._onEntityPropertyChanged(e,"polylineVolume",e.polylineVolume,void 0)};n(A,{perInstanceColorAppearanceType:{value:m},materialAppearanceType:{value:p}}),n(A.prototype,{entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!r(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!r(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!0},geometryChanged:{get:function(){return this._geometryChanged}}}),A.prototype.isOutlineVisible=function(e){var t=this._entity;return this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)},A.prototype.isFilled=function(e){var t=this._entity;return this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)},A.prototype.createFillGeometryInstance=function(i){var n,o,a=this._entity,s=a.isAvailable(i),u=new d(s&&a.isShowing&&this._showProperty.getValue(i)&&this._fillProperty.getValue(i));if(this._materialProperty instanceof v){var h=e.WHITE;r(this._materialProperty.color)&&(this._materialProperty.color.isConstant||s)&&(h=this._materialProperty.color.getValue(i)),o=t.fromColor(h),n={show:u,color:o}}else n={show:u};return new l({id:a,geometry:new c(this._options),attributes:n})},A.prototype.createOutlineGeometryInstance=function(i){var r=this._entity,n=r.isAvailable(i),o=C.getValueOrDefault(this._outlineColorProperty,i,e.BLACK);return new l({id:r,geometry:new h(this._options),attributes:{show:new d(n&&r.isShowing&&this._showProperty.getValue(i)&&this._showOutlineProperty.getValue(i)),color:t.fromColor(o)}})},A.prototype.isDestroyed=function(){return!1},A.prototype.destroy=function(){this._entitySubscription(),o(this)},A.prototype._onEntityPropertyChanged=function(e,t){if("availability"===t||"polylineVolume"===t){var n=this._entity.polylineVolume;if(!r(n))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var o=n.fill,a=r(o)&&o.isConstant?o.getValue(u.MINIMUM_VALUE):!0,s=n.outline,l=r(s);if(l&&s.isConstant&&(l=s.getValue(u.MINIMUM_VALUE)),!a&&!l)return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var c=n.positions,h=n.shape,d=n.show;if(!r(c)||!r(h)||r(d)&&d.isConstant&&!d.getValue(u.MINIMUM_VALUE))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var f=i(n.material,w),g=f instanceof v;this._materialProperty=f,this._fillProperty=i(o,E),this._showProperty=i(d,S),this._showOutlineProperty=i(n.outline,b),this._outlineColorProperty=l?i(n.outlineColor,x):void 0;var _=n.granularity,y=n.outlineWidth,T=n.cornerType;if(this._fillEnabled=a,this._outlineEnabled=l,c.isConstant&&h.isConstant&&C.isConstant(_)&&C.isConstant(y)&&C.isConstant(T)){var P=this._options;P.vertexFormat=g?m.VERTEX_FORMAT:p.MaterialSupport.TEXTURED.vertexFormat,P.polylinePositions=c.getValue(u.MINIMUM_VALUE,P.polylinePositions),P.shapePositions=h.getValue(u.MINIMUM_VALUE,P.shape),P.granularity=r(_)?_.getValue(u.MINIMUM_VALUE):void 0,P.cornerType=r(T)?T.getValue(u.MINIMUM_VALUE):void 0,this._outlineWidth=r(y)?y.getValue(u.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}else this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this))}},A.prototype.createDynamicUpdater=function(e){return new D(e,this)};var D=function(e,t){this._primitives=e,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=t,this._options=new P(t._entity)};return D.prototype.update=function(i){var n=this._primitives;n.removeAndDestroy(this._primitive),n.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0;var o=this._geometryUpdater,a=o._entity,s=a.polylineVolume;if(a.isShowing&&a.isAvailable(i)&&C.getValueOrDefault(s.show,i,!0)){var u=this._options,d=C.getValueOrUndefined(s.positions,i,u.polylinePositions),v=C.getValueOrUndefined(s.shape,i);if(r(d)&&r(v)){if(u.polylinePositions=d,u.shapePositions=v,u.granularity=C.getValueOrUndefined(s.granularity,i),u.cornerType=C.getValueOrUndefined(s.cornerType,i),!r(s.fill)||s.fill.getValue(i)){var g=y.getValue(i,o.fillMaterialProperty,this._material);this._material=g;var _=new p({material:g,translucent:g.isTranslucent(),closed:!0});u.vertexFormat=_.vertexFormat,this._primitive=n.add(new f({geometryInstances:new l({id:a,geometry:new c(u)}),appearance:_,asynchronous:!1}))}if(r(s.outline)&&s.outline.getValue(i)){u.vertexFormat=m.VERTEX_FORMAT;var w=C.getValueOrClonedDefault(s.outlineColor,i,e.BLACK,T),S=C.getValueOrDefault(s.outlineWidth,i,1),E=1!==w.alpha;this._outlinePrimitive=n.add(new f({geometryInstances:new l({id:a,geometry:new h(u),attributes:{color:t.fromColor(w)}}),appearance:new m({flat:!0,translucent:E,renderState:{lineWidth:o._scene.clampLineWidth(S)}}),asynchronous:!1}))}}}},D.prototype.getBoundingSphere=function(e,t){return _(e,this._primitive,this._outlinePrimitive,t)},D.prototype.isDestroyed=function(){return!1},D.prototype.destroy=function(){var e=this._primitives;e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),o(this)},A}),i("DataSources/RectangleGeometryUpdater",["../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../Core/GeometryInstance","../Core/Iso8601","../Core/RectangleGeometry","../Core/RectangleOutlineGeometry","../Core/ShowGeometryInstanceAttribute","../Scene/MaterialAppearance","../Scene/PerInstanceColorAppearance","../Scene/Primitive","./ColorMaterialProperty","./ConstantProperty","./dynamicGeometryGetBoundingSphere","./MaterialProperty","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C){"use strict";var w=new v(e.WHITE),S=new g(!0),E=new g(!0),b=new g(!1),x=new g(e.BLACK),T=new e,P=function(e){this.id=e,this.vertexFormat=void 0,this.rectangle=void 0,this.closeBottom=void 0,this.closeTop=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.rotation=void 0},A=function(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(A.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._isClosed=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new s,this._showProperty=void 0,this._materialProperty=void 0,this._hasConstantOutline=!0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._options=new P(e),this._onEntityPropertyChanged(e,"rectangle",e.rectangle,void 0)};n(A,{perInstanceColorAppearanceType:{value:m},materialAppearanceType:{value:p}}),n(A.prototype,{entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!r(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!r(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},isDynamic:{get:function(){return this._dynamic}},isClosed:{get:function(){return this._isClosed}},geometryChanged:{get:function(){return this._geometryChanged}}}),A.prototype.isOutlineVisible=function(e){var t=this._entity;return this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)},A.prototype.isFilled=function(e){var t=this._entity;return this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)},A.prototype.createFillGeometryInstance=function(i){var n,o,a=this._entity,s=a.isAvailable(i),u=new d(s&&a.isShowing&&this._showProperty.getValue(i)&&this._fillProperty.getValue(i));if(this._materialProperty instanceof v){var h=e.WHITE;r(this._materialProperty.color)&&(this._materialProperty.color.isConstant||s)&&(h=this._materialProperty.color.getValue(i)),o=t.fromColor(h),n={show:u,color:o}}else n={show:u};return new l({id:a,geometry:new c(this._options),attributes:n})},A.prototype.createOutlineGeometryInstance=function(i){var r=this._entity,n=r.isAvailable(i),o=C.getValueOrDefault(this._outlineColorProperty,i,e.BLACK);return new l({id:r,geometry:new h(this._options),attributes:{show:new d(n&&r.isShowing&&this._showProperty.getValue(i)&&this._showOutlineProperty.getValue(i)),color:t.fromColor(o)}})},A.prototype.isDestroyed=function(){return!1},A.prototype.destroy=function(){this._entitySubscription(),o(this)},A.prototype._onEntityPropertyChanged=function(e,t){if("availability"===t||"rectangle"===t){var n=this._entity.rectangle;if(!r(n))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var o=n.fill,a=r(o)&&o.isConstant?o.getValue(u.MINIMUM_VALUE):!0,s=n.outline,l=r(s);if(l&&s.isConstant&&(l=s.getValue(u.MINIMUM_VALUE)),!a&&!l)return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var c=n.coordinates,h=n.show;if(r(h)&&h.isConstant&&!h.getValue(u.MINIMUM_VALUE)||!r(c))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var d=i(n.material,w),f=d instanceof v;this._materialProperty=d,this._fillProperty=i(o,E),this._showProperty=i(h,S),this._showOutlineProperty=i(n.outline,b),this._outlineColorProperty=l?i(n.outlineColor,x):void 0;var g=n.height,_=n.extrudedHeight,y=n.granularity,T=n.stRotation,P=n.rotation,A=n.outlineWidth,D=n.closeBottom,M=n.closeTop;if(this._fillEnabled=a,this._outlineEnabled=l,c.isConstant&&C.isConstant(g)&&C.isConstant(_)&&C.isConstant(y)&&C.isConstant(T)&&C.isConstant(P)&&C.isConstant(A)&&C.isConstant(D)&&C.isConstant(M)){var I=this._options;I.vertexFormat=f?m.VERTEX_FORMAT:p.MaterialSupport.TEXTURED.vertexFormat,I.rectangle=c.getValue(u.MINIMUM_VALUE,I.rectangle),I.height=r(g)?g.getValue(u.MINIMUM_VALUE):void 0,I.extrudedHeight=r(_)?_.getValue(u.MINIMUM_VALUE):void 0,I.granularity=r(y)?y.getValue(u.MINIMUM_VALUE):void 0,I.stRotation=r(T)?T.getValue(u.MINIMUM_VALUE):void 0,I.rotation=r(P)?P.getValue(u.MINIMUM_VALUE):void 0,I.closeBottom=r(D)?D.getValue(u.MINIMUM_VALUE):void 0,I.closeTop=r(M)?M.getValue(u.MINIMUM_VALUE):void 0,this._isClosed=r(_)&&r(I.closeTop)&&r(I.closeBottom)&&I.closeTop&&I.closeBottom,this._outlineWidth=r(A)?A.getValue(u.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}else this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this))}},A.prototype.createDynamicUpdater=function(e){return new D(e,this)};var D=function(e,t){this._primitives=e,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=t,this._options=new P(t._entity)};return D.prototype.update=function(i){var n=this._primitives; +n.removeAndDestroy(this._primitive),n.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0;var o=this._geometryUpdater,a=o._entity,s=a.rectangle;if(a.isShowing&&a.isAvailable(i)&&C.getValueOrDefault(s.show,i,!0)){var u=this._options,d=C.getValueOrUndefined(s.coordinates,i,u.rectangle);if(r(d)){if(u.rectangle=d,u.height=C.getValueOrUndefined(s.height,i),u.extrudedHeight=C.getValueOrUndefined(s.extrudedHeight,i),u.granularity=C.getValueOrUndefined(s.granularity,i),u.stRotation=C.getValueOrUndefined(s.stRotation,i),u.rotation=C.getValueOrUndefined(s.rotation,i),u.closeBottom=C.getValueOrUndefined(s.closeBottom,i),u.closeTop=C.getValueOrUndefined(s.closeTop,i),C.getValueOrDefault(s.fill,i,!0)){var v=y.getValue(i,o.fillMaterialProperty,this._material);this._material=v;var g=new p({material:v,translucent:v.isTranslucent(),closed:r(u.extrudedHeight)});u.vertexFormat=g.vertexFormat,this._primitive=n.add(new f({geometryInstances:new l({id:a,geometry:new c(u)}),appearance:g,asynchronous:!1}))}if(C.getValueOrDefault(s.outline,i,!1)){u.vertexFormat=m.VERTEX_FORMAT;var _=C.getValueOrClonedDefault(s.outlineColor,i,e.BLACK,T),w=C.getValueOrDefault(s.outlineWidth,i,1),S=1!==_.alpha;this._outlinePrimitive=n.add(new f({geometryInstances:new l({id:a,geometry:new h(u),attributes:{color:t.fromColor(_)}}),appearance:new m({flat:!0,translucent:S,renderState:{lineWidth:o._scene.clampLineWidth(w)}}),asynchronous:!1}))}}}},D.prototype.getBoundingSphere=function(e,t){return _(e,this._primitive,this._outlinePrimitive,t)},D.prototype.isDestroyed=function(){return!1},D.prototype.destroy=function(){var e=this._primitives;e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),o(this)},A}),i("DataSources/WallGeometryUpdater",["../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../Core/GeometryInstance","../Core/Iso8601","../Core/ShowGeometryInstanceAttribute","../Core/WallGeometry","../Core/WallOutlineGeometry","../Scene/MaterialAppearance","../Scene/PerInstanceColorAppearance","../Scene/Primitive","./ColorMaterialProperty","./ConstantProperty","./dynamicGeometryGetBoundingSphere","./MaterialProperty","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C){"use strict";var w=new v(e.WHITE),S=new g(!0),E=new g(!0),b=new g(!1),x=new g(e.BLACK),T=new e,P=function(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.minimumHeights=void 0,this.maximumHeights=void 0,this.granularity=void 0},A=function(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(A.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new s,this._showProperty=void 0,this._materialProperty=void 0,this._hasConstantOutline=!0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._options=new P(e),this._onEntityPropertyChanged(e,"wall",e.wall,void 0)};n(A,{perInstanceColorAppearanceType:{value:m},materialAppearanceType:{value:p}}),n(A.prototype,{entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!r(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!r(this._entity.availability)&&C.isConstant(this._showProperty)&&C.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},isDynamic:{get:function(){return this._dynamic}},isClosed:{get:function(){return!1}},geometryChanged:{get:function(){return this._geometryChanged}}}),A.prototype.isOutlineVisible=function(e){var t=this._entity;return this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)},A.prototype.isFilled=function(e){var t=this._entity;return this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)},A.prototype.createFillGeometryInstance=function(i){var n,o,a=this._entity,s=a.isAvailable(i),u=new c(s&&a.isShowing&&this._showProperty.getValue(i)&&this._fillProperty.getValue(i));if(this._materialProperty instanceof v){var d=e.WHITE;r(this._materialProperty.color)&&(this._materialProperty.color.isConstant||s)&&(d=this._materialProperty.color.getValue(i)),o=t.fromColor(d),n={show:u,color:o}}else n={show:u};return new l({id:a,geometry:new h(this._options),attributes:n})},A.prototype.createOutlineGeometryInstance=function(i){var r=this._entity,n=r.isAvailable(i),o=C.getValueOrDefault(this._outlineColorProperty,i,e.BLACK);return new l({id:r,geometry:new d(this._options),attributes:{show:new c(n&&r.isShowing&&this._showProperty.getValue(i)&&this._showOutlineProperty.getValue(i)),color:t.fromColor(o)}})},A.prototype.isDestroyed=function(){return!1},A.prototype.destroy=function(){this._entitySubscription(),o(this)},A.prototype._onEntityPropertyChanged=function(e,t){if("availability"===t||"wall"===t){var n=this._entity.wall;if(!r(n))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var o=n.fill,a=r(o)&&o.isConstant?o.getValue(u.MINIMUM_VALUE):!0,s=n.outline,l=r(s);if(l&&s.isConstant&&(l=s.getValue(u.MINIMUM_VALUE)),!a&&!l)return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var c=n.positions,h=n.show;if(r(h)&&h.isConstant&&!h.getValue(u.MINIMUM_VALUE)||!r(c))return(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this)),void 0;var d=i(n.material,w),f=d instanceof v;this._materialProperty=d,this._fillProperty=i(o,E),this._showProperty=i(h,S),this._showOutlineProperty=i(n.outline,b),this._outlineColorProperty=l?i(n.outlineColor,x):void 0;var g=n.minimumHeights,_=n.maximumHeights,y=n.outlineWidth,T=n.granularity;if(this._fillEnabled=a,this._outlineEnabled=l,c.isConstant&&C.isConstant(g)&&C.isConstant(_)&&C.isConstant(y)&&C.isConstant(T)){var P=this._options;P.vertexFormat=f?m.VERTEX_FORMAT:p.MaterialSupport.TEXTURED.vertexFormat,P.positions=c.getValue(u.MINIMUM_VALUE,P.positions),P.minimumHeights=r(g)?g.getValue(u.MINIMUM_VALUE,P.minimumHeights):void 0,P.maximumHeights=r(_)?_.getValue(u.MINIMUM_VALUE,P.maximumHeights):void 0,P.granularity=r(T)?T.getValue(u.MINIMUM_VALUE):void 0,this._outlineWidth=r(y)?y.getValue(u.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}else this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this))}},A.prototype.createDynamicUpdater=function(e){return new D(e,this)};var D=function(e,t){this._primitives=e,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=t,this._options=new P(t._entity)};return D.prototype.update=function(i){var n=this._primitives;n.removeAndDestroy(this._primitive),n.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0;var o=this._geometryUpdater,a=o._entity,s=a.wall;if(a.isShowing&&a.isAvailable(i)&&C.getValueOrDefault(s.show,i,!0)){var u=this._options,c=C.getValueOrUndefined(s.positions,i,u.positions);if(r(c)){if(u.positions=c,u.minimumHeights=C.getValueOrUndefined(s.minimumHeights,i,u.minimumHeights),u.maximumHeights=C.getValueOrUndefined(s.maximumHeights,i,u.maximumHeights),u.granularity=C.getValueOrUndefined(s.granularity,i),C.getValueOrDefault(s.fill,i,!0)){var v=y.getValue(i,o.fillMaterialProperty,this._material);this._material=v;var g=new p({material:v,translucent:v.isTranslucent(),closed:r(u.extrudedHeight)});u.vertexFormat=g.vertexFormat,this._primitive=n.add(new f({geometryInstances:new l({id:a,geometry:new h(u)}),appearance:g,asynchronous:!1}))}if(C.getValueOrDefault(s.outline,i,!1)){u.vertexFormat=m.VERTEX_FORMAT;var _=C.getValueOrClonedDefault(s.outlineColor,i,e.BLACK,T),w=C.getValueOrDefault(s.outlineWidth,i,1),S=1!==_.alpha;this._outlinePrimitive=n.add(new f({geometryInstances:new l({id:a,geometry:new d(u),attributes:{color:t.fromColor(_)}}),appearance:new m({flat:!0,translucent:S,renderState:{lineWidth:o._scene.clampLineWidth(w)}}),asynchronous:!1}))}}}},D.prototype.getBoundingSphere=function(e,t){return _(e,this._primitive,this._outlinePrimitive,t)},D.prototype.isDestroyed=function(){return!1},D.prototype.destroy=function(){var e=this._primitives;e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),o(this)},A}),i("DataSources/DataSourceDisplay",["../Core/BoundingSphere","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/EventHelper","./BillboardVisualizer","./BoundingSphereState","./BoxGeometryUpdater","./CorridorGeometryUpdater","./CustomDataSource","./CylinderGeometryUpdater","./EllipseGeometryUpdater","./EllipsoidGeometryUpdater","./GeometryVisualizer","./LabelVisualizer","./ModelVisualizer","./PathVisualizer","./PointVisualizer","./PolygonGeometryUpdater","./PolylineGeometryUpdater","./PolylineVolumeGeometryUpdater","./RectangleGeometryUpdater","./WallGeometryUpdater"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b){"use strict";var x=function(e){var i=e.scene,r=e.dataSourceCollection;this._eventHelper=new a,this._eventHelper.add(r.dataSourceAdded,this._onDataSourceAdded,this),this._eventHelper.add(r.dataSourceRemoved,this._onDataSourceRemoved,this),this._dataSourceCollection=r,this._scene=i,this._visualizersCallback=t(e.visualizersCallback,x.defaultVisualizersCallback);for(var n=0,o=r.length;o>n;n++)this._onDataSourceAdded(r,r.get(n));var s=new h;this._onDataSourceAdded(void 0,s),this._defaultDataSource=s};x.defaultVisualizersCallback=function(e,t){var i=t.entities;return[new s(e,i),new f(u,e,i),new f(d,e,i),new f(c,e,i),new f(p,e,i),new f(m,e,i),new f(C,e,i),new f(w,e,i),new f(S,e,i),new f(E,e,i),new f(b,e,i),new v(e,i),new g(e,i),new y(e,i),new _(e,i)]},r(x.prototype,{scene:{get:function(){return this._scene}},dataSources:{get:function(){return this._dataSourceCollection}},defaultDataSource:{get:function(){return this._defaultDataSource}}}),x.prototype.isDestroyed=function(){return!1},x.prototype.destroy=function(){this._eventHelper.removeAll();for(var e=this._dataSourceCollection,t=0,i=e.length;i>t;++t)this._onDataSourceRemoved(this._dataSourceCollection,e.get(t));return this._onDataSourceRemoved(void 0,this._defaultDataSource),n(this)},x.prototype.update=function(e){var t,r,n,o,a=!0,s=this._dataSourceCollection,l=s.length;for(t=0;l>t;t++){var u=s.get(t);for(i(u.update)&&(a=u.update(e)&&a),n=u._visualizers,o=n.length,r=0;o>r;r++)a=n[r].update(e)&&a}for(n=this._defaultDataSource._visualizers,o=n.length,r=0;o>r;r++)a=n[r].update(e)&&a;return a};var T=[],P=new e;return x.prototype.getBoundingSphere=function(t,r,n){var o,a,s=this._defaultDataSource;if(!s.entities.contains(t)){s=void 0;var u=this._dataSourceCollection;for(a=u.length,o=0;a>o;o++){var c=u.get(o);if(c.entities.contains(t)){s=c;break}}}if(!i(s))return l.FAILED;var h=T,d=P,p=0,m=l.DONE,f=s._visualizers,v=f.length;for(o=0;v>o;o++){var g=f[o];if(i(g.getBoundingSphere)){if(m=f[o].getBoundingSphere(t,d),!r&&m===l.PENDING)return l.PENDING;m===l.DONE&&(h[p]=e.clone(d,h[p]),p++)}}return 0===p?l.FAILED:(h.length=p,e.fromBoundingSpheres(h,n),l.DONE)},x.prototype._onDataSourceAdded=function(e,t){var i=this._visualizersCallback(this._scene,t);t._visualizers=i},x.prototype._onDataSourceRemoved=function(e,t){for(var i=t._visualizers,r=i.length,n=0;r>n;n++)i[n].destroy(),t._visualizers=void 0},x}),i("DataSources/DynamicGeometryUpdater",["../Core/DeveloperError"],function(e){"use strict";var t=function(){e.throwInstantiationError()};return t.prototype.update=e.throwInstantiationError,t.prototype.getBoundingSphere=e.throwInstantiationError,t.prototype.isDestroyed=e.throwInstantiationError,t.prototype.destroy=e.throwInstantiationError,t}),i("Scene/HeadingPitchRange",["../Core/defaultValue","../Core/defined"],function(e,t){"use strict";var i=function(t,i,r){this.heading=e(t,0),this.pitch=e(i,0),this.range=e(r,0)};return i.clone=function(e,r){return t(e)?(t(r)||(r=new i),r.heading=e.heading,r.pitch=e.pitch,r.range=e.range,r):void 0},i}),i("DataSources/EntityView",["../Core/BoundingSphere","../Core/Cartesian3","../Core/Cartesian4","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Ellipsoid","../Core/JulianDate","../Core/Math","../Core/Matrix3","../Core/Matrix4","../Core/Transforms","../Scene/HeadingPitchRange","../Scene/SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m){"use strict";function f(e,i,r,o,a,s,h){var p=e.scene.mode,f=a.getValue(s,e._lastCartesian);if(n(f)){var A,D,M,I=!1;if(p===m.SCENE3D){T=l.addSeconds(s,.001,T);var O=a.getValue(T,C);if(n(O)){var R,L=d.computeFixedToIcrfMatrix(s,v),N=d.computeFixedToIcrfMatrix(T,g);n(L)&&n(N)?R=c.transpose(L,_):(R=d.computeTemeToPseudoFixedMatrix(s,_),L=c.transpose(R,v),N=d.computeTemeToPseudoFixedMatrix(T,g),c.transpose(N,N));var F=c.multiplyByVector(L,f,b),B=c.multiplyByVector(N,O,x);t.subtract(F,B,E);var z=1e3*t.magnitude(E),k=3986004418e5,V=-k/(z*z-2*k/t.magnitude(F));0>V||V>P*h.maximumRadius?(A=w,t.normalize(f,A),t.negate(A,A),M=t.clone(t.UNIT_Z,S),D=t.cross(M,A,C),t.magnitude(D)>u.EPSILON7&&(t.normalize(A,A),t.normalize(D,D),M=t.cross(A,D,S),t.normalize(M,M),I=!0)):t.equalsEpsilon(f,O,u.EPSILON7)||(M=w,t.normalize(F,M),t.normalize(B,B),D=t.cross(M,B,S),t.equalsEpsilon(D,t.ZERO,u.EPSILON7)||(A=t.cross(D,M,C),c.multiplyByVector(R,A,A),c.multiplyByVector(R,D,D),c.multiplyByVector(R,M,M),t.normalize(A,A),t.normalize(D,D),t.normalize(M,M),I=!0))}}n(e._boundingSphereOffset)&&t.add(e._boundingSphereOffset,f,f);var U,W,G;o&&(U=t.clone(i.position,E),W=t.clone(i.direction,b),G=t.clone(i.up,x));var H=y;I?(H[0]=A.x,H[1]=A.y,H[2]=A.z,H[3]=0,H[4]=D.x,H[5]=D.y,H[6]=D.z,H[7]=0,H[8]=M.x,H[9]=M.y,H[10]=M.z,H[11]=0,H[12]=f.x,H[13]=f.y,H[14]=f.z,H[15]=0):d.eastNorthUpToFixedFrame(f,h,H),i._setTransform(H),o&&(t.clone(U,i.position),t.clone(W,i.direction),t.clone(G,i.up),t.cross(W,G,i.right))}if(r){var q=p===m.SCENE2D||t.equals(e._offset3D,t.ZERO)?void 0:e._offset3D;i.lookAtTransform(i.transform,q)}}var v=new c,g=new c,_=new c,y=new h,C=new t,w=new t,S=new t,E=new t,b=new t,x=new t,T=new l,P=1.25,A=function(i,n,o,a){this.entity=i,this.scene=n,this.ellipsoid=r(o,s.WGS84),this.boundingSphere=e.clone(a),this._boundingSphereOffset=void 0,this._lastEntity=void 0,this._mode=void 0,this._lastCartesian=new t,this._defaultOffset3D=void 0,this._offset3D=new t};o(A,{defaultOffset3D:{get:function(){return this._defaultOffset3D},set:function(e){this._defaultOffset3D=t.clone(e,new t)}}}),A.defaultOffset3D=new t(-14e3,3500,3500);var D=new p,M=new t;return A.prototype.update=function(e){var i=this.scene,r=this.entity,o=this.ellipsoid,a=i.mode;if(a!==m.MORPHING){var s=r.position,l=r!==this._lastEntity,c=a!==this._mode,h=this._offset3D,d=i.camera,p=l||c,v=!0;if(l){var g=r.viewFrom,_=n(g),y=this.boundingSphere;if(this._boundingSphereOffset=void 0,!_&&n(y)){var C=i.screenSpaceCameraController;C.minimumZoomDistance=Math.min(C.minimumZoomDistance,.5*y.radius),D.pitch=-u.PI_OVER_FOUR,D.range=0;var w=s.getValue(e,M);if(n(w)){var S=2-1/Math.max(1,t.magnitude(w)/o.maximumRadius);D.pitch*=S}d.viewBoundingSphere(y,D),this._boundingSphereOffset=t.subtract(y.center,r.position.getValue(e),new t),p=!1,v=!1}else _&&n(g.getValue(e,h))||t.clone(A._defaultOffset3D,h)}else c||i.mode===m.MORPHING||this._mode===m.SCENE2D||t.clone(d.position,h);this._lastEntity=r,this._mode=i.mode!==m.MORPHING?i.mode:this._mode,i.mode!==m.MORPHING&&f(this,d,p,v,s,e,o)}},A}),!function(){function e(e,t){function i(t){var i,r=e.arcs[0>t?~t:t],n=r[0];return e.transform?(i=[0,0],r.forEach(function(e){i[0]+=e[0],i[1]+=e[1]})):i=r[r.length-1],0>t?[i,n]:[n,i]}function r(e,t){for(var i in e){var r=e[i];delete t[r.start],delete r.start,delete r.end,r.forEach(function(e){n[0>e?~e:e]=1}),s.push(r)}}var n={},o={},a={},s=[],l=-1;return t.forEach(function(i,r){var n,o=e.arcs[0>i?~i:i];o.length<3&&!o[1][0]&&!o[1][1]&&(n=t[++l],t[l]=i,t[r]=n)}),t.forEach(function(e){var t,r,n=i(e),s=n[0],l=n[1];if(t=a[s])if(delete a[t.end],t.push(e),t.end=l,r=o[l]){delete o[r.start];var u=r===t?t:t.concat(r);o[u.start=t.start]=a[u.end=r.end]=u}else o[t.start]=a[t.end]=t;else if(t=o[l])if(delete o[t.start],t.unshift(e),t.start=s,r=a[s]){delete a[r.end];var c=r===t?t:r.concat(t);o[c.start=r.start]=a[c.end=t.end]=c}else o[t.start]=a[t.end]=t;else t=[e],o[t.start=s]=a[t.end=l]=t}),r(a,o),r(o,a),t.forEach(function(e){n[0>e?~e:e]||s.push([e])}),s}function t(t,i,r){function n(e){var t=0>e?~e:e;(c[t]||(c[t]=[])).push({i:e,g:u})}function o(e){e.forEach(n)}function a(e){e.forEach(o)}function s(e){"GeometryCollection"===e.type?e.geometries.forEach(s):e.type in h&&(u=e,h[e.type](e.arcs))}var l=[];if(arguments.length>1){var u,c=[],h={LineString:o,MultiLineString:a,Polygon:a,MultiPolygon:function(e){e.forEach(a)}};s(i),c.forEach(arguments.length<3?function(e){l.push(e[0].i)}:function(e){r(e[0].g,e[e.length-1].g)&&l.push(e[0].i)})}else for(var d=0,p=t.arcs.length;p>d;++d)l.push(d);return{type:"MultiLineString",arcs:e(t,l)}}function r(t,i){function r(e){e.forEach(function(t){t.forEach(function(t){(a[t=0>t?~t:t]||(a[t]=[])).push(e)})}),l.push(e)}function o(e){return d(s(t,{type:"Polygon",arcs:[e]}).coordinates[0])>0}var a={},l=[],u=[];return i.forEach(function(e){"Polygon"===e.type?r(e.arcs):"MultiPolygon"===e.type&&e.arcs.forEach(r)}),l.forEach(function(e){if(!e._){var t=[],i=[e];for(e._=1,u.push(t);e=i.pop();)t.push(e),e.forEach(function(e){e.forEach(function(e){a[0>e?~e:e].forEach(function(e){e._||(e._=1,i.push(e))})})})}}),l.forEach(function(e){delete e._}),{type:"MultiPolygon",arcs:u.map(function(i){var r=[];if(i.forEach(function(e){e.forEach(function(e){e.forEach(function(e){a[0>e?~e:e].length<2&&r.push(e)})})}),r=e(t,r),(n=r.length)>1)for(var s,l=o(i[0][0]),u=0;n>u;++u)if(l===o(r[u])){s=r[0],r[0]=r[u],r[u]=s;break}return r})}}function o(e,t){return"GeometryCollection"===t.type?{type:"FeatureCollection",features:t.geometries.map(function(t){return a(e,t)})}:a(e,t)}function a(e,t){var i={type:"Feature",id:t.id,properties:t.properties||{},geometry:s(e,t)};return null==t.id&&delete i.id,i}function s(e,t){function i(e,t){t.length&&t.pop();for(var i,r=c[0>e?~e:e],n=0,o=r.length;o>n;++n)t.push(i=r[n].slice()),u(i,n);0>e&&l(t,o)}function r(e){return e=e.slice(),u(e,0),e}function n(e){for(var t=[],r=0,n=e.length;n>r;++r)i(e[r],t);return t.length<2&&t.push(t[0].slice()),t}function o(e){for(var t=n(e);t.length<4;)t.push(t[0].slice());return t}function a(e){return e.map(o)}function s(e){var t=e.type;return"GeometryCollection"===t?{type:t,geometries:e.geometries.map(s)}:t in h?{type:t,coordinates:h[t](e)}:null}var u=v(e.transform),c=e.arcs,h={Point:function(e){return r(e.coordinates)},MultiPoint:function(e){return e.coordinates.map(r)},LineString:function(e){return n(e.arcs)},MultiLineString:function(e){return e.arcs.map(n)},Polygon:function(e){return a(e.arcs)},MultiPolygon:function(e){return e.arcs.map(a)}};return s(t)}function l(e,t){for(var i,r=e.length,n=r-t;n<--r;)i=e[n],e[n++]=e[r],e[r]=i}function u(e,t){for(var i=0,r=e.length;r>i;){var n=i+r>>>1;e[n]e&&(e=~e);var i=n[e];i?i.push(t):n[e]=[t]})}function i(e,i){e.forEach(function(e){t(e,i)})}function r(e,t){"GeometryCollection"===e.type?e.geometries.forEach(function(e){r(e,t)}):e.type in a&&a[e.type](e.arcs,t)}var n={},o=e.map(function(){return[]}),a={LineString:t,MultiLineString:i,Polygon:i,MultiPolygon:function(e,t){e.forEach(function(e){i(e,t)})}};e.forEach(r);for(var s in n)for(var l=n[s],c=l.length,h=0;c>h;++h)for(var d=h+1;c>d;++d){var p,m=l[h],f=l[d];(p=o[m])[s=u(p,f)]!==f&&p.splice(s,0,f),(p=o[f])[s=u(p,m)]!==m&&p.splice(s,0,m)}return o}function h(e,t){function i(e){o.remove(e),e[1][2]=t(e),o.push(e)}var r=v(e.transform),n=g(e.transform),o=f();return t||(t=p),e.arcs.forEach(function(e){for(var a,s,l=[],u=0,c=0,h=e.length;h>c;++c)s=e[c],r(e[c]=[s[0],s[1],1/0],c);for(var c=1,h=e.length-1;h>c;++c)a=e.slice(c-1,c+2),a[1][2]=t(a),l.push(a),o.push(a);for(var c=0,h=l.length;h>c;++c)a=l[c],a.previous=l[c-1],a.next=l[c+1];for(;a=o.pop();){var d=a.previous,p=a.next;a[1][2]0;){var i=(t+1>>1)-1,n=r[i];if(m(e,n)>=0)break;r[n._=t]=n,r[e._=t=i]=e}}function t(e,t){for(;;){var i=t+1<<1,o=i-1,a=t,s=r[a];if(n>o&&m(r[o],s)<0&&(s=r[a=o]),n>i&&m(r[i],s)<0&&(s=r[a=i]),a===t)break;r[s._=t]=s,r[e._=t=a]=e}}var i={},r=[],n=0;return i.push=function(t){return e(r[t._=n]=t,n++),n},i.pop=function(){if(!(0>=n)){var e,i=r[0];return--n>0&&(e=r[n],t(r[e._=0]=e,0)),i}},i.remove=function(i){var o,a=i._;if(r[a]===i)return a!==--n&&(o=r[n],(m(o,i)<0?e:t)(r[o._=a]=o,a)),a},i}function v(e){if(!e)return _;var t,i,r=e.scale[0],n=e.scale[1],o=e.translate[0],a=e.translate[1];return function(e,s){s||(t=i=0),e[0]=(t+=e[0])*r+o,e[1]=(i+=e[1])*n+a}}function g(e){if(!e)return _;var t,i,r=e.scale[0],n=e.scale[1],o=e.translate[0],a=e.translate[1];return function(e,s){s||(t=i=0);var l=0|(e[0]-o)/r,u=0|(e[1]-a)/n;e[0]=l-t,e[1]=u-i,t=l,i=u}}function _(){}var y={version:"1.6.18",mesh:function(e){return s(e,t.apply(this,arguments))},meshArcs:t,merge:function(e){return s(e,r.apply(this,arguments))},mergeArcs:r,feature:o,neighbors:c,presimplify:h};"function"==typeof i&&i.amd?i("ThirdParty/topojson",y):"object"==typeof module&&module.exports?module.exports=y:this.topojson=y}(),i("DataSources/GeoJsonDataSource",["../Core/Cartesian3","../Core/Color","../Core/createGuid","../Core/defaultValue","../Core/defined","../Core/definedNotNull","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/getFilenameFromUri","../Core/loadJson","../Core/PinBuilder","../Core/PolygonHierarchy","../Core/RuntimeError","../Scene/VerticalOrigin","../ThirdParty/topojson","../ThirdParty/when","./BillboardGraphics","./CallbackProperty","./ColorMaterialProperty","./ConstantPositionProperty","./ConstantProperty","./DataSource","./EntityCollection","./PolygonGraphics","./PolylineGraphics"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x){"use strict";function T(t){return e.fromDegrees(t[0],t[1],t[2])}function P(e,t){var i="";for(var r in e)if(e.hasOwnProperty(r)){if(r===t||-1!==nt.indexOf(r))continue;var n=e[r];o(n)&&(i+="object"==typeof n?""+r+""+P(n)+"":""+r+""+n+"")}return i.length>0&&(i=''+i+"
    "),i}function A(e,t){var i;return function(){return n(i)||(i=P(e,t)),i}}function D(e,t){var r=e.id;if(o(r)&&"Feature"===e.type){for(var a=2,s=r;n(t.getById(s));)s=r+"_"+a,a++;r=s}else r=i();var l=t.getOrCreateEntity(r),u=e.properties;if(o(u)){l.addProperty("properties"),l.properties=u;var c,h=u.title;if(o(h))l.name=h,c="title";else{var d=Number.MAX_VALUE;for(var p in u)if(u.hasOwnProperty(p)&&u[p]){var m=p.toLowerCase();if(d>1&&"title"===m){d=1,c=p;break}d>2&&"name"===m?(d=2,c=p):d>3&&/title/i.test(p)?(d=3,c=p):d>4&&/name/i.test(p)&&(d=4,c=p)}o(c)&&(l.name=u[c])}var f=u.description;n(f)?null!==f&&(l.description=new w(f)):l.description=new _(A(u,c),!0)}return l}function M(e,t){for(var i=new Array(e.length),r=0;ra;a++)I(e,o[a],void 0,r,n)}function R(e,t,i,r,n){for(var a=i.geometries,s=0,l=a.length;l>s;s++){var u=a[s],c=u.type,h=st[c];if(!o(h))throw new p("Unknown geometry type: "+c);h(e,t,u,r,n)}}function L(e,i,a,s,l){var u=l.markerSymbol,c=l.markerColor,h=l.markerSize,d=i.properties;if(o(d)){var p=d["marker-color"];o(p)&&(c=t.fromCssColorString(p)),h=r(rt[d["marker-size"]],h);var f=d["marker-symbol"];o(f)&&(u=f)}ot[0]=u,ot[1]=c,ot[2]=h,JSON.stringify(ot);var _;_=n(u)?1===u.length?e._pinBuilder.fromText(u.toUpperCase(),c,h):e._pinBuilder.fromMakiIconId(u,c,h):e._pinBuilder.fromColor(c,h),e._promises.push(v(_,function(t){var r=new g;r.verticalOrigin=new w(m.BOTTOM),r.image=new w(t);var n=D(i,e._entityCollection);n.billboard=r,n.position=new C(a(s))}))}function N(e,t,i,r,n){L(e,t,r,i.coordinates,n)}function F(e,t,i,r,n){for(var o=i.coordinates,a=0;aE;E++)S.push(new d(M(a[E],r)));var T=a[0];C.hierarchy=new w(new d(M(T,r),S)),T[0].length>2&&(C.perPositionHeight=new w(!0));var P=D(i,e._entityCollection);P.polygon=C}}function U(e,t,i,r,n){V(e,t,r,i.coordinates,n)}function W(e,t,i,r,n){for(var o=i.coordinates,a=0;ao;o++){var s=i[o],l=s.getType(),u=s.getText();if("element"===l)"a"===s.getTagName()&&(s.isClosing()?r=Math.max(r-1,0):r++),n.push(u);else if("entity"===l||"comment"===l)n.push(u); +else if(0===r){var c=this.linkifyStr(u);n.push(c)}else n.push(u)}return n.join("")},linkifyStr:function(e){return this.getMatchParser().replace(e,this.createMatchReturnVal,this)},createMatchReturnVal:function(t){var i;if(this.replaceFn&&(i=this.replaceFn.call(this,this,t)),"string"==typeof i)return i;if(i===!1)return t.getMatchedText();if(i instanceof e.HtmlTag)return i.toAnchorString();var r=this.getTagBuilder(),n=r.build(t);return n.toAnchorString()},getHtmlParser:function(){var t=this.htmlParser;return t||(t=this.htmlParser=new e.htmlParser.HtmlParser),t},getMatchParser:function(){var t=this.matchParser;return t||(t=this.matchParser=new e.matchParser.MatchParser({urls:this.urls,email:this.email,twitter:this.twitter,phone:this.phone,hashtag:this.hashtag,stripPrefix:this.stripPrefix})),t},getTagBuilder:function(){var t=this.tagBuilder;return t||(t=this.tagBuilder=new e.AnchorTagBuilder({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),t}},e.link=function(t,i){var r=new e(i);return r.link(t)},e.match={},e.htmlParser={},e.matchParser={},e.Util={abstractMethod:function(){throw"abstract"},trimRegex:/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,assign:function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},extend:function(t,i){var r=t.prototype,n=function(){};n.prototype=r;var o;o=i.hasOwnProperty("constructor")?i.constructor:function(){r.constructor.apply(this,arguments)};var a=o.prototype=new n;return a.constructor=o,a.superclass=r,delete i.constructor,e.Util.assign(a,i),o},ellipsis:function(e,t,i){return e.length>t&&(i=null==i?"..":i,e=e.substring(0,t-i.length)+i),e},indexOf:function(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var i=0,r=e.length;r>i;i++)if(e[i]===t)return i;return-1},splitAndCapture:function(e,t){if(!t.global)throw new Error("`splitRegex` must have the 'g' flag set");for(var i,r=[],n=0;i=t.exec(e);)r.push(e.substring(n,i.index)),r.push(i[0]),n=i.index+i[0].length;return r.push(e.substring(n)),r},trim:function(e){return e.replace(this.trimRegex,"")}},e.HtmlTag=e.Util.extend(Object,{whitespaceRegex:/\s+/,constructor:function(t){e.Util.assign(this,t),this.innerHtml=this.innerHtml||this.innerHTML},setTagName:function(e){return this.tagName=e,this},getTagName:function(){return this.tagName||""},setAttr:function(e,t){var i=this.getAttrs();return i[e]=t,this},getAttr:function(e){return this.getAttrs()[e]},setAttrs:function(t){var i=this.getAttrs();return e.Util.assign(i,t),this},getAttrs:function(){return this.attrs||(this.attrs={})},setClass:function(e){return this.setAttr("class",e)},addClass:function(t){for(var i,r=this.getClass(),n=this.whitespaceRegex,o=e.Util.indexOf,a=r?r.split(n):[],s=t.split(n);i=s.shift();)-1===o(a,i)&&a.push(i);return this.getAttrs()["class"]=a.join(" "),this},removeClass:function(t){for(var i,r=this.getClass(),n=this.whitespaceRegex,o=e.Util.indexOf,a=r?r.split(n):[],s=t.split(n);a.length&&(i=s.shift());){var l=o(a,i);-1!==l&&a.splice(l,1)}return this.getAttrs()["class"]=a.join(" "),this},getClass:function(){return this.getAttrs()["class"]||""},hasClass:function(e){return-1!==(" "+this.getClass()+" ").indexOf(" "+e+" ")},setInnerHtml:function(e){return this.innerHtml=e,this},getInnerHtml:function(){return this.innerHtml||""},toAnchorString:function(){var e=this.getTagName(),t=this.buildAttrsStr();return t=t?" "+t:"",["<",e,t,">",this.getInnerHtml(),""].join("")},buildAttrsStr:function(){if(!this.attrs)return"";var e=this.getAttrs(),t=[];for(var i in e)e.hasOwnProperty(i)&&t.push(i+'="'+e[i]+'"');return t.join(" ")}}),e.AnchorTagBuilder=e.Util.extend(Object,{constructor:function(t){e.Util.assign(this,t)},build:function(t){var i=new e.HtmlTag({tagName:"a",attrs:this.createAttrs(t.getType(),t.getAnchorHref()),innerHtml:this.processAnchorText(t.getAnchorText())});return i},createAttrs:function(e,t){var i={href:t},r=this.createCssClass(e);return r&&(i["class"]=r),this.newWindow&&(i.target="_blank"),i},createCssClass:function(e){var t=this.className;return t?t+" "+t+"-"+e:""},processAnchorText:function(e){return e=this.doTruncate(e)},doTruncate:function(t){return e.Util.ellipsis(t,this.truncate||Number.POSITIVE_INFINITY)}}),e.htmlParser.HtmlParser=e.Util.extend(Object,{htmlRegex:function(){var e=/!--([\s\S]+?)--/,t=/[0-9a-zA-Z][0-9a-zA-Z:]*/,i=/[^\s\0"'>\/=\x01-\x1F\x7F]+/,r=/(?:"[^"]*?"|'[^']*?'|[^'"=<>`\s]+)/,n=i.source+"(?:\\s*=\\s*"+r.source+")?";return new RegExp(["(?:","<(!DOCTYPE)","(?:","\\s+","(?:",n,"|",r.source+")",")*",">",")","|","(?:","<(/)?","(?:",e.source,"|","(?:","("+t.source+")","(?:","\\s+",n,")*","\\s*/?",")",")",">",")"].join(""),"gi")}(),htmlCharacterEntitiesRegex:/( | |<|<|>|>|"|"|')/gi,parse:function(e){for(var t,i,r=this.htmlRegex,n=0,o=[];null!==(t=r.exec(e));){var a=t[0],s=t[3],l=t[1]||t[4],u=!!t[2],c=e.substring(n,t.index);c&&(i=this.parseTextAndEntityNodes(c),o.push.apply(o,i)),s?o.push(this.createCommentNode(a,s)):o.push(this.createElementNode(a,l,u)),n=t.index+a.length}if(nn;n+=2){var a=r[n],s=r[n+1];a&&i.push(this.createTextNode(a)),s&&i.push(this.createEntityNode(s))}return i},createCommentNode:function(t,i){return new e.htmlParser.CommentNode({text:t,comment:e.Util.trim(i)})},createElementNode:function(t,i,r){return new e.htmlParser.ElementNode({text:t,tagName:i.toLowerCase(),closing:r})},createEntityNode:function(t){return new e.htmlParser.EntityNode({text:t})},createTextNode:function(t){return new e.htmlParser.TextNode({text:t})}}),e.htmlParser.HtmlNode=e.Util.extend(Object,{text:"",constructor:function(t){e.Util.assign(this,t)},getType:e.Util.abstractMethod,getText:function(){return this.text}}),e.htmlParser.CommentNode=e.Util.extend(e.htmlParser.HtmlNode,{comment:"",getType:function(){return"comment"},getComment:function(){return this.comment}}),e.htmlParser.ElementNode=e.Util.extend(e.htmlParser.HtmlNode,{tagName:"",closing:!1,getType:function(){return"element"},getTagName:function(){return this.tagName},isClosing:function(){return this.closing}}),e.htmlParser.EntityNode=e.Util.extend(e.htmlParser.HtmlNode,{getType:function(){return"entity"}}),e.htmlParser.TextNode=e.Util.extend(e.htmlParser.HtmlNode,{getType:function(){return"text"}}),e.matchParser.MatchParser=e.Util.extend(Object,{urls:!0,email:!0,twitter:!0,phone:!0,hashtag:!1,stripPrefix:!0,matcherRegex:function(){var e=/(^|[^\w])@(\w{1,15})/,t=/(^|[^\w])#(\w{1,15})/,i=/(?:[\-;:&=\+\$,\w\.]+@)/,r=/(?:\+?\d{1,3}[-\s.])?\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}/,n=/(?:[A-Za-z][-.+A-Za-z0-9]+:(?![A-Za-z][-.+A-Za-z0-9]+:\/\/)(?!\d+\/?)(?:\/\/)?)/,o=/(?:www\.)/,a=/[A-Za-z0-9\.\-]*[A-Za-z0-9\-]/,s=/\.(?:international|construction|contractors|enterprises|photography|productions|foundation|immobilien|industries|management|properties|technology|christmas|community|directory|education|equipment|institute|marketing|solutions|vacations|bargains|boutique|builders|catering|cleaning|clothing|computer|democrat|diamonds|graphics|holdings|lighting|partners|plumbing|supplies|training|ventures|academy|careers|company|cruises|domains|exposed|flights|florist|gallery|guitars|holiday|kitchen|neustar|okinawa|recipes|rentals|reviews|shiksha|singles|support|systems|agency|berlin|camera|center|coffee|condos|dating|estate|events|expert|futbol|kaufen|luxury|maison|monash|museum|nagoya|photos|repair|report|social|supply|tattoo|tienda|travel|viajes|villas|vision|voting|voyage|actor|build|cards|cheap|codes|dance|email|glass|house|mango|ninja|parts|photo|shoes|solar|today|tokyo|tools|watch|works|aero|arpa|asia|best|bike|blue|buzz|camp|club|cool|coop|farm|fish|gift|guru|info|jobs|kiwi|kred|land|limo|link|menu|mobi|moda|name|pics|pink|post|qpon|rich|ruhr|sexy|tips|vote|voto|wang|wien|wiki|zone|bar|bid|biz|cab|cat|ceo|com|edu|gov|int|kim|mil|net|onl|org|pro|pub|red|tel|uno|wed|xxx|xyz|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)\b/,l=/[\-A-Za-z0-9+&@#\/%=~_()|'$*\[\]?!:,.;]*[\-A-Za-z0-9+&@#\/%=~_()|'$*\[\]]/;return new RegExp(["(",e.source,")","|","(",i.source,a.source,s.source,")","|","(","(?:","(",n.source,a.source,")","|","(?:","(.?//)?",o.source,a.source,")","|","(?:","(.?//)?",a.source,s.source,")",")","(?:"+l.source+")?",")","|","(",r.source,")","|","(",t.source,")"].join(""),"gi")}(),charBeforeProtocolRelMatchRegex:/^(.)?\/\//,constructor:function(t){e.Util.assign(this,t),this.matchValidator=new e.MatchValidator},replace:function(e,t,i){var r=this;return e.replace(this.matcherRegex,function(e,n,o,a,s,l,u,c,h,d,p,m,f){var v=r.processCandidateMatch(e,n,o,a,s,l,u,c,h,d,p,m,f);if(v){var g=t.call(i,v.match);return v.prefixStr+g+v.suffixStr}return e})},processCandidateMatch:function(t,i,r,n,o,a,s,l,u,c,h,d,p){var m,f=l||u,v="",g="";if(a&&!this.urls||o&&!this.email||c&&!this.phone||i&&!this.twitter||h&&!this.hashtag||!this.matchValidator.isValidMatch(a,s,f))return null;if(this.matchHasUnbalancedClosingParen(t)&&(t=t.substr(0,t.length-1),g=")"),o)m=new e.match.Email({matchedText:t,email:o});else if(i)r&&(v=r,t=t.slice(1)),m=new e.match.Twitter({matchedText:t,twitterHandle:n});else if(c){var _=t.replace(/\D/g,"");m=new e.match.Phone({matchedText:t,number:_})}else if(h)d&&(v=d,t=t.slice(1)),m=new e.match.Hashtag({matchedText:t,serviceName:this.hashtag,hashtag:p});else{if(f){var y=f.match(this.charBeforeProtocolRelMatchRegex)[1]||"";y&&(v=y,t=t.slice(1))}m=new e.match.Url({matchedText:t,url:t,protocolUrlMatch:!!s,protocolRelativeMatch:!!f,stripPrefix:this.stripPrefix})}return{prefixStr:v,suffixStr:g,match:m}},matchHasUnbalancedClosingParen:function(e){var t=e.charAt(e.length-1);if(")"===t){var i=e.match(/\(/g),r=e.match(/\)/g),n=i&&i.length||0,o=r&&r.length||0;if(o>n)return!0}return!1}}),e.MatchValidator=e.Util.extend(Object,{invalidProtocolRelMatchRegex:/^[\w]\/\//,hasFullProtocolRegex:/^[A-Za-z][-.+A-Za-z0-9]+:\/\//,uriSchemeRegex:/^[A-Za-z][-.+A-Za-z0-9]+:/,hasWordCharAfterProtocolRegex:/:[^\s]*?[A-Za-z]/,isValidMatch:function(e,t,i){return t&&!this.isValidUriScheme(t)||this.urlMatchDoesNotHaveProtocolOrDot(e,t)||this.urlMatchDoesNotHaveAtLeastOneWordChar(e,t)||this.isInvalidProtocolRelativeMatch(i)?!1:!0},isValidUriScheme:function(e){var t=e.match(this.uriSchemeRegex)[0].toLowerCase();return"javascript:"!==t&&"vbscript:"!==t},urlMatchDoesNotHaveProtocolOrDot:function(e,t){return!(!e||t&&this.hasFullProtocolRegex.test(t)||-1!==e.indexOf("."))},urlMatchDoesNotHaveAtLeastOneWordChar:function(e,t){return e&&t?!this.hasWordCharAfterProtocolRegex.test(e):!1},isInvalidProtocolRelativeMatch:function(e){return!!e&&this.invalidProtocolRelMatchRegex.test(e)}}),e.match.Match=e.Util.extend(Object,{constructor:function(t){e.Util.assign(this,t)},getType:e.Util.abstractMethod,getMatchedText:function(){return this.matchedText},getAnchorHref:e.Util.abstractMethod,getAnchorText:e.Util.abstractMethod}),e.match.Email=e.Util.extend(e.match.Match,{getType:function(){return"email"},getEmail:function(){return this.email},getAnchorHref:function(){return"mailto:"+this.email},getAnchorText:function(){return this.email}}),e.match.Hashtag=e.Util.extend(e.match.Match,{getType:function(){return"hashtag"},getHashtag:function(){return this.hashtag},getAnchorHref:function(){var e=this.serviceName,t=this.hashtag;switch(e){case"twitter":return"https://twitter.com/hashtag/"+t;case"facebook":return"https://www.facebook.com/hashtag/"+t;default:throw new Error("Unknown service name to point hashtag to: ",e)}},getAnchorText:function(){return"#"+this.hashtag}}),e.match.Phone=e.Util.extend(e.match.Match,{getType:function(){return"phone"},getNumber:function(){return this.number},getAnchorHref:function(){return"tel:"+this.number},getAnchorText:function(){return this.matchedText}}),e.match.Twitter=e.Util.extend(e.match.Match,{getType:function(){return"twitter"},getTwitterHandle:function(){return this.twitterHandle},getAnchorHref:function(){return"https://twitter.com/"+this.twitterHandle},getAnchorText:function(){return"@"+this.twitterHandle}}),e.match.Url=e.Util.extend(e.match.Match,{urlPrefixRegex:/^(https?:\/\/)?(www\.)?/i,protocolRelativeRegex:/^\/\//,protocolPrepended:!1,getType:function(){return"url"},getUrl:function(){var e=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(e=this.url="http://"+e,this.protocolPrepended=!0),e},getAnchorHref:function(){var e=this.getUrl();return e.replace(/&/g,"&")},getAnchorText:function(){var e=this.getUrl();return this.protocolRelativeMatch&&(e=this.stripProtocolRelativePrefix(e)),this.stripPrefix&&(e=this.stripUrlPrefix(e)),e=this.removeTrailingSlash(e)},stripUrlPrefix:function(e){return e.replace(this.urlPrefixRegex,"")},stripProtocolRelativePrefix:function(e){return e.replace(this.protocolRelativeRegex,"")},removeTrailingSlash:function(e){return"/"===e.charAt(e.length-1)&&(e=e.slice(0,-1)),e}}),e}),i("ThirdParty/zip",["../Core/buildModuleUrl"],function(e){var t={};return function(t){function i(){var e=-1,t=this;t.append=function(i){var r,n=t.table;for(r=0;r>>8^n[255&(e^i[r])]},t.get=function(){return~e}}function r(e,t,i){return e.slice?e.slice(t,t+i):e.webkitSlice?e.webkitSlice(t,t+i):e.mozSlice?e.mozSlice(t,t+i):e.msSlice?e.msSlice(t,t+i):void 0}function n(e,t){var i,r;return i=new ArrayBuffer(e),r=new Uint8Array(i),t&&r.set(t,0),{buffer:i,array:r,view:new DataView(i)}}function o(){}function a(e){function t(t,i){var o=new Blob([e],{type:k});r=new l(o),r.init(function(){n.size=r.size,t()},i)}function i(e,t,i,n){r.readUint8Array(e,t,i,n)}var r,n=this;n.size=0,n.init=t,n.readUint8Array=i}function s(e){function t(t){for(var i=e.length;"="==e.charAt(i-1);)i--;r=e.indexOf(",")+1,o.size=Math.floor(.75*(i-r)),t()}function i(t,i,o){var a,s=n(i),l=4*Math.floor(t/3),u=4*Math.ceil((t+i)/3),c=window.atob(e.substring(l+r,u+r)),h=t-3*Math.floor(l/4);for(a=h;h+i>a;a++)s.array[a-h]=c.charCodeAt(a);o(s.array)}var r,o=this;o.size=0,o.init=t,o.readUint8Array=i}function l(e){function t(t){this.size=e.size,t()}function i(t,i,n,o){var a=new FileReader;a.onload=function(e){n(new Uint8Array(e.target.result))},a.onerror=o,a.readAsArrayBuffer(r(e,t,i))}var n=this;n.size=0,n.init=t,n.readUint8Array=i}function u(){}function c(e){function t(e){n=new Blob([],{type:k}),e()}function i(e,t){n=new Blob([n,P?e:e.buffer],{type:k}),t()}function r(t,i){var r=new FileReader;r.onload=function(e){t(e.target.result)},r.onerror=i,r.readAsText(n,e)}var n,o=this;o.init=t,o.writeUint8Array=i,o.getData=r}function h(e){function t(t){o+="data:"+(e||"")+";base64,",t()}function i(e,t){var i,r=a.length,n=a;for(a="",i=0;i<3*Math.floor((r+e.length)/3)-r;i++)n+=String.fromCharCode(e[i]);for(;i2?o+=window.btoa(n):a=n,t()}function r(e){e(o+window.btoa(a))}var n=this,o="",a="";n.init=t,n.writeUint8Array=i,n.getData=r}function d(e){function t(t){n=new Blob([],{type:e}),t()}function i(t,i){n=new Blob([n,P?t:t.buffer],{type:e}),i()}function r(e){e(n)}var n,o=this;o.init=t,o.writeUint8Array=i,o.getData=r}function p(e,t,i,r,n,o,a,s,l,u){function c(){e.removeEventListener(V,h,!1),s(m)}function h(e){var t=e.data,r=t.data;t.onappend&&(m+=r.length,i.writeUint8Array(r,function(){o(!1,r),d()},u)),t.onflush&&(r?(m+=r.length,i.writeUint8Array(r,function(){o(!1,r),c()},u)):c()),t.progress&&a&&a(p+t.current,n)}function d(){p=f*F,n>p?t.readUint8Array(r+p,Math.min(F,n-p),function(t){e.postMessage({append:!0,data:t}),f++,a&&a(p,n),o(!0,t)},l):e.postMessage({flush:!0})}var p,m,f=0;m=0,e.addEventListener(V,h,!1),d()}function m(e,t,i,r,n,o,a,s,l,u){function c(){var m;h=d*F,n>h?t.readUint8Array(r+h,Math.min(F,n-h),function(t){var s=e.append(t,function(){a&&a(r+h,n)});p+=s.length,o(!0,t),i.writeUint8Array(s,function(){o(!1,s),d++,setTimeout(c,1)},u),a&&a(h,n)},l):(m=e.flush(),m?(p+=m.length,i.writeUint8Array(m,function(){o(!1,m),s(p)},u)):s(p))}var h,d=0,p=0;c()}function f(e,r,n,o,a,s,l,u,c){function h(e,t){a&&!e&&v.append(t)}function d(e){s(e,v.get())}var f,v=new i;return t.zip.useWebWorkers?(f=new Worker(t.zip.workerScriptsPath+B),p(f,e,r,n,o,h,l,d,u,c)):m(new t.zip.Inflater,e,r,n,o,h,l,d,u,c),f}function v(e,r,n,o,a,s,l){function u(e,t){e&&f.append(t)}function c(e){o(e,f.get())}function h(){d.removeEventListener(V,h,!1),p(d,e,r,0,e.size,u,a,c,s,l)}var d,f=new i;return t.zip.useWebWorkers?(d=new Worker(t.zip.workerScriptsPath+z),d.addEventListener(V,h,!1),d.postMessage({init:!0,level:n})):m(new t.zip.Deflater,e,r,0,e.size,u,a,c,s,l),d}function g(e,t,r,n,o,a,s,l,u){function c(){var i=h*F;n>i?e.readUint8Array(r+i,Math.min(F,n-i),function(e){o&&d.append(e),s&&s(i,n,e),t.writeUint8Array(e,function(){h++,c()},u)},l):a(n,d.get())}var h=0,d=new i;c()}function _(e){var t,i,r="",n=["Ç","ü","é","â","ä","à","å","ç","ê","ë","è","ï","î","ì","Ä","Å","É","æ","Æ","ô","ö","ò","û","ù","ÿ","Ö","Ü","ø","£","Ø","×","ƒ","á","í","ó","ú","ñ","Ñ","ª","º","¿","®","¬","½","¼","¡","«","»","_","_","_","¦","¦","Á","Â","À","©","¦","¦","+","+","¢","¥","+","+","-","-","+","-","+","ã","Ã","+","+","-","-","¦","-","+","¤","ð","Ð","Ê","Ë","È","i","Í","Î","Ï","+","+","_","_","¦","Ì","_","Ó","ß","Ô","Ò","õ","Õ","µ","þ","Þ","Ú","Û","Ù","ý","Ý","¯","´","­","±","_","¾","¶","§","÷","¸","°","¨","·","¹","³","²","_"," "];for(t=0;t127?n[i-128]:String.fromCharCode(i);return r}function y(e){return decodeURIComponent(escape(e))}function C(e){var t,i="";for(t=0;t>16,i=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&i)>>11,(2016&i)>>5,2*(31&i),0)}catch(r){}}function S(e,t,i,r,n){return e.version=t.view.getUint16(i,!0),e.bitFlag=t.view.getUint16(i+2,!0),e.compressionMethod=t.view.getUint16(i+4,!0),e.lastModDateRaw=t.view.getUint32(i+6,!0),e.lastModDate=w(e.lastModDateRaw),1===(1&e.bitFlag)?(n(D),void 0):((r||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(i+10,!0),e.compressedSize=t.view.getUint32(i+14,!0),e.uncompressedSize=t.view.getUint32(i+18,!0)),4294967295===e.compressedSize||4294967295===e.uncompressedSize?(n(M),void 0):(e.filenameLength=t.view.getUint16(i+22,!0),e.extraFieldLength=t.view.getUint16(i+24,!0),void 0))}function E(e,t){function i(){}function r(i,o){e.readUint8Array(e.size-i,i,function(e){var t=n(e.length,e).view;1347093766!=t.getUint32(0)?r(i+1,o):o(t)},function(){t(I)})}return i.prototype.getData=function(i,r,o,a){function s(e,t){d&&d.terminate(),d=null,e&&e(t)}function l(e){var t=n(4);return t.view.setUint32(0,e),p.crc32==t.view.getUint32(0)}function u(e,t){a&&!l(t)?c():i.getData(function(e){s(r,e)})}function c(){s(t,L)}function h(){s(t,R)}var d,p=this;e.readUint8Array(p.offset,30,function(r){var s,l=n(r.length,r);return 1347093252!=l.view.getUint32(0)?(t(A),void 0):(S(p,l,4,!1,t),s=p.offset+30+p.filenameLength+p.extraFieldLength,i.init(function(){0===p.compressionMethod?g(e,i,s,p.compressedSize,a,u,o,c,h):d=f(e,i,s,p.compressedSize,a,u,o,c,h)},h),void 0)},c)},{getEntries:function(o){return e.size<22?(t(A),void 0):(r(22,function(r){var a,s;a=r.getUint32(16,!0),s=r.getUint16(8,!0),e.readUint8Array(a,e.size-a,function(e){var r,a,l,u,c=0,h=[],d=n(e.length,e);for(r=0;s>r;r++){if(a=new i,1347092738!=d.view.getUint32(c))return t(A),void 0;S(a,d,c+6,!0,t),a.commentLength=d.view.getUint16(c+32,!0),a.directory=16==(16&d.view.getUint8(c+38)),a.offset=d.view.getUint32(c+42,!0),l=C(d.array.subarray(c+46,c+46+a.filenameLength)),a.filename=2048===(2048&a.bitFlag)?y(l):_(l),a.directory||"/"!=a.filename.charAt(a.filename.length-1)||(a.directory=!0),u=C(d.array.subarray(c+46+a.filenameLength+a.extraFieldLength,c+46+a.filenameLength+a.extraFieldLength+a.commentLength)),a.comment=2048===(2048&a.bitFlag)?y(u):_(u),h.push(a),c+=46+a.filenameLength+a.extraFieldLength+a.commentLength}o(h)},function(){t(I)})}),void 0)},close:function(e){e&&e()}}}function b(e){return unescape(encodeURIComponent(e))}function x(e){var t,i=[];for(t=0;te;e++){for(i=e,t=0;8>t;t++)1&i?i=3988292384^i>>>1:i>>>=1;r[e]=i}return r}(),a.prototype=new o,a.prototype.constructor=a,s.prototype=new o,s.prototype.constructor=s,l.prototype=new o,l.prototype.constructor=l,u.prototype.getData=function(e){e(this.data)},c.prototype=new u,c.prototype.constructor=c,h.prototype=new u,h.prototype.constructor=h,d.prototype=new u,d.prototype.constructor=d,t.zip={Reader:o,Writer:u,BlobReader:l,Data64URIReader:s,TextReader:a,BlobWriter:d,Data64URIWriter:h,TextWriter:c,createReader:function(e,t,i){e.init(function(){t(E(e,i))},i)},createWriter:function(e,t,i,r){e.init(function(){t(T(e,i,r))},i)},useWebWorkers:!0};var W;Object.defineProperty(t.zip,"workerScriptsPath",{get:function(){return"undefined"==typeof W&&(W=e("ThirdParty/Workers/")),W}})}(t),t.zip}),i("DataSources/KmlDataSource",["../Core/BoundingRectangle","../Core/Cartesian2","../Core/Cartesian3","../Core/ClockRange","../Core/ClockStep","../Core/Color","../Core/createGuid","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Ellipsoid","../Core/Event","../Core/getFilenameFromUri","../Core/Iso8601","../Core/JulianDate","../Core/loadBlob","../Core/loadXML","../Core/Math","../Core/NearFarScalar","../Core/PinBuilder","../Core/PolygonHierarchy","../Core/Rectangle","../Core/RuntimeError","../Core/TimeInterval","../Core/TimeIntervalCollection","../Scene/HorizontalOrigin","../Scene/LabelStyle","../ThirdParty/Autolinker","../ThirdParty/Uri","../ThirdParty/when","../ThirdParty/zip","./BillboardGraphics","./CompositePositionProperty","./ConstantPositionProperty","./DataSource","./DataSourceClock","./Entity","./EntityCollection","./LabelGraphics","./PathGraphics","./PolygonGraphics","./PolylineGraphics","./PositionPropertyArray","./RectangleGraphics","./ReferenceProperty","./SampledPositionProperty","./ScaledPositionProperty","./TimeIntervalCollectionProperty","./WallGraphics"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D,M,I,O,R,L,N,F,B,z,k,V,U,W,G,H,q,j,Y,X,Z){"use strict";function J(e){var t=e.slice(0,Math.min(4,e.size)),i=M.defer(),r=new FileReader;return r.addEventListener("load",function(){i.resolve(1347093252===new DataView(r.result).getUint32(0,!1))}),r.addEventListener("error",function(){i.reject(r.error)}),r.readAsArrayBuffer(t),i}function Q(e){var t=M.defer(),i=new FileReader;return i.addEventListener("load",function(){t.resolve(i.result)}),i.addEventListener("error",function(){t.reject(i.error)}),i.readAsText(e),t}function K(e,t,i,r){t.getData(new I.TextWriter,function(e){i.kml=Kt.parseFromString(e,"application/xml"),r.resolve()})}function $(e,t,i,r){var n=s(Qt.detectFromFilename(t.filename),"application/octet-stream");t.getData(new I.Data64URIWriter(n),function(e){i[t.filename]=e,r.resolve()})}function et(e,t,i,r){for(var n=r.keys,o=new D("."),a=e.querySelectorAll(t),s=0;so;o++)r[n++]=nt(t[o]);return r}function at(e,t){if(!l(e))return void 0;var i=e.getAttribute(t);if(null!==i){var r=parseFloat(i);return isNaN(r)?void 0:r}return void 0}function st(e,t){if(!l(e))return void 0;var i=e.getAttribute(t);return null!==i?i:void 0}function lt(e,t,i){if(!l(e))return void 0;for(var r=e.childNodes,n=r.length,o=0;n>o;o++){var a=r[o];if(a.localName===t&&-1!==i.indexOf(a.namespaceURI))return a}return void 0}function ut(e,t,i){if(!l(e))return void 0;for(var r=[],n=e.getElementsByTagName(t),o=n.length,a=0;o>a;a++){var s=n[a];s.localName===t&&-1!==i.indexOf(s.namespaceURI)&&r.push(s)}return r}function ct(e,t,i){if(!l(e))return[];for(var r=[],n=e.childNodes,o=n.length,a=0;o>a;a++){var s=n[a];s.localName===t&&-1!==i.indexOf(s.namespaceURI)&&r.push(s)}return r}function ht(e,t,i){var r=lt(e,t,i);if(l(r)){var n=parseFloat(r.textContent);return isNaN(n)?void 0:n}return void 0}function dt(e,t,i){var r=lt(e,t,i);return l(r)?r.textContent.trim():void 0}function pt(e,t,i){var r=lt(e,t,i);return l(r)?"1"===r.textContent:void 0}function mt(e,t,i,r){if(!l(e))return void 0;var n=!1;if(l(r)){var o=r[e];l(o)&&(n=!0,e=o)}if(!n&&l(i)){var a=new D(document.location.href);i=new D(i),e=new D(e).resolve(i.resolve(a)).toString(),e=tt(e,t)}return e}function ft(e,t){if(!l(e))return void 0;"#"===e[0]&&(e=e.substring(1));var i=parseInt(e.substring(0,2),16)/255,r=parseInt(e.substring(2,4),16)/255,n=parseInt(e.substring(4,6),16)/255,a=parseInt(e.substring(6,8),16)/255;return t?(a>0?oi.maximumRed=a:oi.red=0,n>0?oi.maximumGreen=n:oi.green=0,r>0?oi.maximumBlue=r:oi.blue=0,oi.alpha=i,o.fromRandom(oi)):new o(a,n,r,i)}function vt(e,t,i){var r=dt(e,t,i);return l(r)?ft(r,"random"===dt(e,"colorMode",i)):void 0}function gt(e){var t=lt(e,"TimeStamp",ni.kmlgx),i=dt(t,"when",ni.kmlgx);if(!l(t)||!l(i)||0===i.length)return void 0;var r=f.fromIso8601(i),n=new x;return n.addInterval(new b({start:r,stop:m.MAXIMUM_VALUE})),n}function _t(e){var t=lt(e,"TimeSpan",ni.kmlgx);if(!l(t))return void 0;var i,r=lt(t,"begin",ni.kmlgx),n=l(r)?f.fromIso8601(r.textContent):void 0,o=lt(t,"end",ni.kmlgx),a=l(o)?f.fromIso8601(o.textContent):void 0;if(l(n)&&l(a)){if(f.lessThan(a,n)){var s=n;n=a,a=s}i=new x,i.addInterval(new b({start:n,stop:a}))}else l(n)?(i=new x,i.addInterval(new b({start:n,stop:m.MAXIMUM_VALUE}))):l(a)&&(i=new x,i.addInterval(new b({start:m.MINIMUM_VALUE,stop:a})));return i}function yt(){var e=new O;return e.width=ei,e.height=ei,e.scaleByDistance=new y(2414016,1,16093e3,.1),e}function Ct(){var e=new U;return e.outline=!0,e.outlineColor=o.WHITE,e}function wt(){var e=new k;return e.translucencyByDistance=new y(3e6,1,5e6,0),e.pixelOffset=new t(17,0),e.horizontalOrigin=T.LEFT,e.font="16px sans-serif",e.style=P.FILL_AND_OUTLINE,e}function St(r,n,o,a,u){var c=ht(n,"scale",ni.kml),h=ht(n,"heading",ni.kml),d=vt(n,"color",ni.kml),p=lt(n,"Icon",ni.kml),m=dt(p,"href",ni.kml),f=mt(m,r._proxy,a,u),v=ht(p,"x",ni.gx),g=ht(p,"y",ni.gx),y=ht(p,"w",ni.gx),C=ht(p,"h",ni.gx),w=lt(n,"hotSpot",ni.kml),S=at(w,"x"),E=at(w,"y"),b=st(w,"xunits"),x=st(w,"yunits"),T=o.billboard;l(T)||(T=yt(r),o.billboard=T),T.image=f,T.scale=c,T.color=d,(l(v)||l(g)||l(y)||l(C))&&(T.imageSubRegion=new e(v,g,y,C)),l(h)&&0!==h&&(T.rotation=_.toRadians(-h),T.alignedAxis=i.UNIT_Z),c=s(c,1);var P,A;l(S)&&("pixels"===b?P=-S*c:"insetPixels"===b?P=(S-ei)*c:"fraction"===b&&(P=-ei*c*S),P+=.5*ei*c),l(E)&&("pixels"===x?A=E:"insetPixels"===x?A=-E:"fraction"===x&&(A=E*ei),A-=.5*ei*c),(l(P)||l(A))&&(T.pixelOffset=new t(P,A))}function Et(e,t,i,r,n){for(var a=0,u=t.childNodes.length;u>a;a++){var c=t.childNodes.item(a);if("IconStyle"===c.localName)St(e,c,i,r,n);else if("LabelStyle"===c.localName){var h=i.label;l(h)||(h=wt(),i.label=h),h.scale=s(ht(c,"scale",ni.kml),h.scale),h.fillColor=s(vt(c,"color",ni.kml),h.fillColor),h.text=i.name}else if("LineStyle"===c.localName){var d=i.polyline;l(d)||(d=new W,i.polyline=d),d.width=ht(c,"width",ni.kml),d.material=vt(c,"color",ni.kml)}else if("PolyStyle"===c.localName){var p=i.polygon;l(p)||(p=Ct(),i.polygon=p),p.material=s(vt(c,"color",ni.kml),p.material),p.fill=s(pt(c,"fill",ni.kml),p.fill),p.outline=s(pt(c,"outline",ni.kml),p.outline)}else if("BalloonStyle"===c.localName){var m=s(ft(dt(c,"bgColor",ni.kml)),o.WHITE),f=s(ft(dt(c,"textColor",ni.kml)),o.BLACK),v=dt(c,"text",ni.kml);i.addProperty("balloonStyle"),i.balloonStyle={bgColor:m,textColor:f,text:v}}}}function bt(e,t,i,r,n,o){var a=new B,s=ct(i,"Style",ni.kml),u=s.length;u>0&&Et(t,s[u-1],a,n,o);var c=dt(i,"styleUrl",ni.kml);if(l(c)){var h=c,d=r.getById(h);l(d)||(d=r.getById("#"+h)),l(d)&&a.merge(d)}return a}function xt(e,t,i){return M(g(tt(t,e._proxy)),function(r){return Tt(e,r,i,t,!0)})}function Tt(e,t,i,r,n,o){var a,s,u,c,h=ut(t,"Style",ni.kml);if(l(h)){var d=h.length;for(a=0;d>a;a++)c=h[a],s=st(c,"id"),l(s)&&(s="#"+s,n&&l(r)&&(s=r+s),l(i.getById(s))||(u=new B({id:s}),i.add(u),Et(e,c,u,r,o)))}var p=ut(t,"StyleMap",ni.kml); +if(l(p)){var m=p.length;for(a=0;m>a;a++){var f=p[a];if(s=st(f,"id"),l(s))for(var v=ct(f,"Pair",ni.kml),g=0;ga;a++){var x=E[a].textContent;if("#"!==x[0]){var T=x.split("#");if(2===T.length){var P=T[0];if(!l(w[P])){if(l(r)){var A=new D(document.location.href);r=new D(r),P=new D(P).resolve(r.resolve(A)).toString()}S.push(xt(e,P,i,r))}}}}return S}function Pt(e,t,i){var r=new q(e._entityCollection,t.id,["position"]),n=new Y(t.position);t.polyline=l(i.polyline)?i.polyline.clone():new W,t.polyline.positions=new G([r,n])}function At(e,t,i){return"relativeToSeaFloor"===i||"absolute"===t||"relativeToGround"===t?e:((l(t)&&"clampToGround"!==t||l(i)&&"clampToSeaFloor"!==i)&&window.console.log("KML - Unknown altitudeMode: "+s(t,i)),new Y(e))}function Dt(e,t,i){if(!l(e))return void 0;if("relativeToSeaFloor"===i||"absolute"===t||"relativeToGround"===t)return e;(l(t)&&"clampToGround"!==t||l(i)&&"clampToSeaFloor"!==i)&&window.console.log("KML - Unknown altitudeMode: "+s(t,i));for(var r=e.length,n=0;r>n;n++){var o=e[n];h.WGS84.scaleToGeodeticSurface(o,o)}return e}function Mt(e,i,r){var n=i.label;l(n)||(n=l(r.label)?r.label.clone():wt(),i.label=n),n.text=i.name;var a=i.billboard;if(l(a)||(a=l(r.billboard)?r.billboard.clone():yt(),i.billboard=a),l(a.image)||(a.image=e._pinBuilder.fromColor(o.YELLOW,64)),l(a.scale)){var s=a.scale.getValue();0!==s?n.pixelOffset=new t(16*s+1,0):(n.pixelOffset=void 0,n.horizontalOrigin=void 0)}}function It(e,t,i){var r=t.path;l(r)||(r=new V,r.leadTime=0,t.path=r);var n=i.polyline;l(n)&&(r.material=n.material,r.width=n.width)}function Ot(e,t,i,r){var n=dt(t,"coordinates",ni.kml),o=dt(t,"altitudeMode",ni.kml),a=dt(t,"altitudeMode",ni.gx),s=pt(t,"extrude",ni.kml),u=nt(n);l(u)&&(i.position=At(new L(u),o,a),Mt(e,i,r),s&&rt(o,a)&&Pt(e,i,r))}function Rt(e,t,i,r){var n=lt(t,"coordinates",ni.kml),a=dt(t,"altitudeMode",ni.kml),s=dt(t,"altitudeMode",ni.gx),u=pt(t,"extrude",ni.kml),c=pt(t,"tessellate",ni.kml),h=rt(a,s),d=ot(n),p=r.polyline;if(h&&u){var m=new Z;i.wall=m,m.positions=d;var f=r.polygon;l(f)&&(m.fill=f.fill,m.outline=f.outline,m.material=f.material),l(p)&&(m.outlineColor=l(p.material)?p.material.color:o.WHITE,m.outlineWidth=p.width)}else p=l(p)?p.clone():new W,i.polyline=p,p.positions=Dt(d,a,s),(!c||h)&&(p.followSurface=!1)}function Lt(e,t,i,r){var n=lt(t,"outerBoundaryIs",ni.kml),a=lt(n,"LinearRing",ni.kml),s=lt(a,"coordinates",ni.kml),u=ot(s),c=pt(t,"extrude",ni.kml),h=dt(t,"altitudeMode",ni.kml),d=dt(t,"altitudeMode",ni.gx),p=rt(h,d),m=l(r.polygon)?r.polygon.clone():Ct(),f=r.polyline;if(l(f)&&(m.outlineColor=l(f.material)?f.material.color:o.WHITE,m.outlineWidth=f.width),i.polygon=m,p&&(m.perPositionHeight=!0,m.extrudedHeight=c?0:void 0),l(u)){for(var v=new w(u),g=ct(t,"innerBoundaryIs",ni.kml),_=0;_m;m++){var v=nt(a[m].textContent);l(v)&&(d.push(v),p.push(f.fromIso8601(s[m].textContent)))}var g=new j;g.addSamples(p,d),i.position=At(g,n,o),Mt(e,i,r),It(e,i,r),i.availability=new x,s.length>0&&i.availability.addInterval(new b({start:p[0],stop:p[p.length-1]})),c&&u&&Pt(e,i,r)}function Ft(e,t,i,r,n,o,a,s,l){var u=e[0],c=e[e.length-1],h=new j;h.addSamples(e,t),i.intervals.addInterval(new b({start:u,stop:c,isStartIncluded:l,isStopIncluded:l,data:At(h,a,s)})),r.addInterval(new b({start:u,stop:c,isStartIncluded:l,isStopIncluded:l})),n.intervals.addInterval(new b({start:u,stop:c,isStartIncluded:l,isStopIncluded:l,data:o}))}function Bt(e,t,i,r){for(var n,o,a,s=pt(t,"interpolate",ni.gx),u=ct(t,"Track",ni.gx),c=!1,h=new X,d=new x,p=new R,m=0,v=u.length;v>m;m++){var g=u[m],_=ct(g,"when",ni.kml),y=ct(g,"coord",ni.gx),C=dt(g,"altitudeMode",ni.kml),w=dt(g,"altitudeMode",ni.gx),S=rt(C,w),E=pt(g,"extrude",ni.kml),b=Math.min(y.length,_.length),T=[];n=[];for(var P=0;b>P;P++){var A=nt(y[P].textContent);l(A)&&(T.push(A),n.push(f.fromIso8601(_[P].textContent)))}s&&(l(o)&&Ft([o,n[0]],[a,T[0]],p,d,h,!1,"absolute",void 0,!1),o=n[b-1],a=T[T.length-1]),Ft(n,T,p,d,h,S&&E,C,w,!0),c=c||S&&E}i.availability=d,i.position=p,Mt(e,i,r),It(e,i,r),c&&(Pt(e,i,r),i.polyline.show=h)}function zt(e,t,i,r){for(var n=t.childNodes,o=0,a=n.length;a>o;o++){var s=n.item(o),u=si[s.localName];if(l(u)){var c=it(s,e._entityCollection);c.parent=i,c.name=i.name,c.availability=i.availability,c.description=i.description,c.kml=i.kml,u(e,s,c,r)}}}function kt(e,t){var i=lt(e,"ExtendedData",ni.kml);if(!l(i))return void 0;var r={},n=ct(i,"Data",ni.kml);if(l(n))for(var o=n.length,a=0;o>a;a++){var s=n[a],u=st(s,"name");l(u)&&(r[u]={displayName:dt(s,"displayName",ni.kml),value:dt(s,"value",ni.kml)})}t.kml.extendedData=r}function Vt(e,t,i,r){var n,a,u,c=t.kml,h=c.extendedData,d=dt(e,"description",ni.kml),p=s(t.balloonStyle,i.balloonStyle),m=o.WHITE,f=o.BLACK,v=d;l(p)&&(m=s(p.bgColor,o.WHITE),f=s(p.textColor,o.BLACK),v=s(p.text,d));var g;if(l(v)){if(v=v.replace("$[name]",s(t.name,"")),v=v.replace("$[description]",s(d,"")),v=v.replace("$[address]",s(c.address,"")),v=v.replace("$[Snippet]",s(c.snippet,"")),v=v.replace("$[id]",t.id),v=v.replace("$[geDirections]",""),l(h)){var _=v.match(/\$\[.+?\]/g);if(null!==_)for(n=0;n<_.length;n++){var y=_[n],C=y.substr(2,y.length-3),w=/\/displayName$/.test(C);C=C.replace(/\/displayName$/,""),g=h[C],l(g)&&(g=w?g.displayName:g.value),l(g)&&(v=v.replace(y,s(g,"")))}}}else if(l(h)&&(u=Object.keys(h),u.length>0)){for(v='',n=0;n";v+="
    "+s(g.displayName,a)+""+s(g.value,"")+"
    "}if(l(v)){v=$t.link(v),ai.innerHTML=v;var S=ai.querySelectorAll("a");for(n=0;n1&&(et(ai,"a","href",r),et(ai,"img","src",r));var E='

    ",ai.innerHTML="",t.description=E}}function Ut(e,t,i,r,n,o,a){var u=it(i,r),c=u.kml,h=bt(u,e,i,n,o,a),d=dt(i,"name",ni.kml);u.name=d,u.parent=t;var p=_t(i);l(p)||(p=gt(i)),u.availability=p;var m=pt(i,"visibility",ni.kml);u.show=s(m,!0);var f=lt(i,"author",ni.atom),v=c.author;v.name=dt(f,"name",ni.atom),v.uri=dt(f,"uri",ni.atom),v.email=dt(f,"email",ni.atom);var g=lt(i,"link",ni.atom),_=c.link;return _.href=st(g,"href"),_.hreflang=st(g,"hreflang"),_.rel=st(g,"rel"),_.type=st(g,"type"),_.title=st(g,"title"),_.length=st(g,"length"),c.address=dt(i,"address",ni.kml),c.phoneNumber=dt(i,"phoneNumber",ni.kml),c.snippet=dt(i,"Snippet",ni.kml),kt(i,u),Vt(i,u,h,a),{entity:u,styleEntity:h}}function Wt(e,t,i,r,n,o,a){for(var s=Object.keys(li),l=s.length,u=0;l>u;u++)for(var c=s[u],h=li[c],d=i.childNodes,p=d.length,m=0;p>m;m++){var f=d[m];f.localName===c&&-1!==ni.kml.indexOf(f.namespaceURI)&&h(e,t,f,r,n,o,a)}}function Gt(e,t,i,r,n,o,a){var s=Ut(e,t,i,r,n,o,a);Wt(e,s.entity,i,r,n,o,a)}function Ht(e,t,i,r,n,o,a){for(var s=Ut(e,t,i,r,n,o,a),u=s.entity,c=s.styleEntity,h=!1,d=i.childNodes,p=0,m=d.length;m>p&&!h;p++){var f=d.item(p),v=si[f.localName];l(v)&&(v(e,f,u,c),h=!0)}h||(u.merge(c),Mt(e,u,c))}function qt(e,t,i,r,n,o,a){var s=Ut(e,t,i,r,n,o,a),u=s.entity;s.stylEntity;var c,h=!1,d=ot(lt(i,"LatLonQuad",ni.gx));if(l(d))c=Ct(),c.hierarchy=new w(d),u.polygon=c,h=!0;else{c=new H,u.rectangle=c;var p=lt(i,"LatLonBox",ni.kml);if(l(p)){var m=ht(p,"west",ni.kml),f=ht(p,"south",ni.kml),v=ht(p,"east",ni.kml),g=ht(p,"north",ni.kml);l(m)&&(m=_.negativePiToPi(_.toRadians(m))),l(f)&&(f=_.negativePiToPi(_.toRadians(f))),l(v)&&(v=_.negativePiToPi(_.toRadians(v))),l(g)&&(g=_.negativePiToPi(_.toRadians(g))),c.coordinates=new S(m,f,v,g);var y=ht(p,"rotation",ni.kml);l(y)&&(c.rotation=_.toRadians(y))}}var C=lt(i,"Icon",ni.kml),E=dt(C,"href",ni.kml);l(E)?(h&&window.console.log("KML - gx:LatLonQuad Icon does not support texture projection."),c.material=mt(E,e._proxy,o,a)):c.material=vt(i,"color",ni.kml);var b=dt(i,"altitudeMode",ni.kml);l(b)?"absolute"===b?c.height=ht(i,"altitude",ni.kml):"clampToGround"===b||window.console.log("KML - Unknown altitudeMode: "+b):(b=dt(i,"altitudeMode",ni.gx),"relativeToSeaFloor"===b?(window.console.log("KML - altitudeMode relativeToSeaFloor is currently not supported, treating as absolute."),c.height=ht(i,"altitude",ni.kml)):"clampToSeaFloor"===b?window.console.log("KML - altitudeMode clampToSeaFloor is currently not supported, treating as clampToGround."):l(b)&&window.console.log("KML - Unknown altitudeMode: "+b))}function jt(e,t,i){window.console.log("KML - Unsupported feature: "+i.localName)}function Yt(e,t,i,r,n,o,a){var s=Ut(e,t,i,r,n,o,a),u=s.entity,c=lt(i,"Link",ni.kml);if(l(c)){var h=dt(c,"href",ni.kml);if(l(h)){h=mt(h,void 0,o,a);var d=new ui(e._proxy),p=M(d.load(h),function(){for(var t=d.entities.values,i=0;ir;r++)if(!o.isConstant(t[r]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}}),a.prototype.getValue=function(t,i){var r=this._value;if(!e(r))return void 0;var n=r.length;e(i)||(i=new Array(n));for(var o=0,a=0;n>o;){var s=this._value[o],l=s.getValue(t,i[o]);e(l)&&(i[a]=l,a++),o++}return i.length=a,i},a.prototype.setValue=function(t){var i=this._eventHelper;if(i.removeAll(),e(t)){this._value=t.slice();for(var r=t.length,n=0;r>n;n++){var o=t[n];e(o)&&i.add(o.definitionChanged,a.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)},a.prototype.equals=function(e){return this===e||e instanceof a&&o.arrayEquals(this._value,e._value)},a.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)},a}),i("DataSources/VelocityOrientationProperty",["../Core/Cartesian3","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Ellipsoid","../Core/Event","../Core/JulianDate","../Core/Matrix3","../Core/Quaternion","../Core/Transforms","./Property"],function(e,t,i,r,n,o,a,s,l,u,c,h){"use strict";var d=function(e,i){this._position=void 0,this._subscription=void 0,this._ellipsoid=void 0,this._definitionChanged=new a,this.position=e,this.ellipsoid=t(i,o.WGS84)};r(d.prototype,{isConstant:{get:function(){return h.isConstant(this._position)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._position},set:function(e){var t=this._position;t!==e&&(i(t)&&this._subscription(),this._position=e,i(e)&&(this._subscription=e._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)),this._definitionChanged.raiseEvent(this))}},ellipsoid:{get:function(){return this._ellipsoid},set:function(e){var t=this._ellipsoid;t!==e&&(this._ellipsoid=e,this._definitionChanged.raiseEvent(this))}}});var p=new e,m=new e,f=new e,v=new s,g=new l,_=1/60;return d.prototype.getValue=function(t,r){var n=this._position;if(h.isConstant(n))return void 0;var o=n.getValue(t,p),a=n.getValue(s.addSeconds(t,_,v),m);if(!i(o))return void 0;if(!i(a)&&(a=o,o=n.getValue(s.addSeconds(t,-_,v),m),!i(o)))return void 0;if(e.equals(o,a))return void 0;var l=e.subtract(a,o,f);return e.normalize(l,l),c.rotationMatrixFromPositionVelocity(o,l,this._ellipsoid,g),u.fromRotationMatrix(g,r)},d.prototype.equals=function(e){return this===e||e instanceof d&&h.equals(this._position,e._position)&&(this._ellipsoid===e._ellipsoid||this._ellipsoid.equals(e._ellipsoid))},d}),i("DataSources/Visualizer",["../Core/DeveloperError"],function(e){"use strict";var t=function(){e.throwInstantiationError()};return t.prototype.update=e.throwInstantiationError,t.prototype.getBoundingSphere=e.throwInstantiationError,t.prototype.isDestroyed=e.throwInstantiationError,t.prototype.destroy=e.throwInstantiationError,t}),i("Renderer/Buffer",["../Core/defaultValue","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError"],function(e,t,i){"use strict";var r=function(e,t,i,r,n){this._gl=e,this._bufferTarget=t,this._sizeInBytes=i,this._usage=r,this._buffer=n,this.vertexArrayDestroyable=!0};return t(r.prototype,{sizeInBytes:{get:function(){return this._sizeInBytes}},usage:{get:function(){return this._usage}}}),r.prototype._getBuffer=function(){return this._buffer},r.prototype.copyFromArrayView=function(t,i){i=e(i,0);var r=this._gl,n=this._bufferTarget;r.bindBuffer(n,this._buffer),r.bufferSubData(n,i,t),r.bindBuffer(n,null)},r.prototype.isDestroyed=function(){return!1},r.prototype.destroy=function(){return this._gl.deleteBuffer(this._buffer),i(this)},r}),i("Renderer/ClearCommand",["../Core/Color","../Core/defaultValue","../Core/freezeObject"],function(e,t,i){"use strict";var r=function(e){e=t(e,t.EMPTY_OBJECT),this.color=e.color,this.depth=e.depth,this.stencil=e.stencil,this.renderState=e.renderState,this.framebuffer=e.framebuffer,this.owner=e.owner};return r.ALL=i(new r({color:new e(0,0,0,0),depth:1,stencil:0})),r.prototype.execute=function(e,t){e.clear(this,t)},r}),i("Shaders/ViewportQuadVS",[],function(){"use strict";return"attribute vec4 position;\nattribute vec2 textureCoordinates;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\ngl_Position = position;\nv_textureCoordinates = textureCoordinates;\n}\n"}),i("Renderer/Framebuffer",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/PixelFormat"],function(e,t,i,r){"use strict";function n(e,t,i){var r=e._gl;r.framebufferTexture2D(r.FRAMEBUFFER,t,i._target,i._texture,0)}function o(e,t,i){var r=e._gl;r.framebufferRenderbuffer(r.FRAMEBUFFER,t,r.RENDERBUFFER,i._getRenderbuffer())}var a=function(i,r,a){a=e(a,e.EMPTY_OBJECT),this._gl=i,this._framebuffer=i.createFramebuffer(),this._colorTextures=[],this._colorRenderbuffers=[],this._activeColorAttachments=[],this._depthTexture=void 0,this._depthRenderbuffer=void 0,this._stencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this.destroyAttachments=e(a.destroyAttachments,!0),t(a.depthTexture)||t(a.depthRenderbuffer),t(a.depthStencilTexture)||t(a.depthStencilRenderbuffer),this._bind();var s,l,u,c,h;if(t(a.colorTextures)){var d=a.colorTextures;for(c=this._colorTextures.length=this._activeColorAttachments.length=d.length,u=0;c>u;++u)s=d[u],h=this._gl.COLOR_ATTACHMENT0+u,n(this,h,s),this._activeColorAttachments[u]=h,this._colorTextures[u]=s}if(t(a.colorRenderbuffers)){var p=a.colorRenderbuffers;for(c=this._colorRenderbuffers.length=this._activeColorAttachments.length=p.length,u=0;c>u;++u)l=p[u],h=this._gl.COLOR_ATTACHMENT0+u,o(this,h,l),this._activeColorAttachments[u]=h,this._colorRenderbuffers[u]=l}t(a.depthTexture)&&(s=a.depthTexture,n(this,this._gl.DEPTH_ATTACHMENT,s),this._depthTexture=s),t(a.depthRenderbuffer)&&(l=a.depthRenderbuffer,o(this,this._gl.DEPTH_ATTACHMENT,l),this._depthRenderbuffer=l),t(a.stencilRenderbuffer)&&(l=a.stencilRenderbuffer,o(this,this._gl.STENCIL_ATTACHMENT,l),this._stencilRenderbuffer=l),t(a.depthStencilTexture)&&(s=a.depthStencilTexture,n(this,this._gl.DEPTH_STENCIL_ATTACHMENT,s),this._depthStencilTexture=s),t(a.depthStencilRenderbuffer)&&(l=a.depthStencilRenderbuffer,o(this,this._gl.DEPTH_STENCIL_ATTACHMENT,l),this._depthStencilRenderbuffer=l),this._unBind()};return i(a.prototype,{status:{get:function(){this._bind();var e=this._gl.checkFramebufferStatus(this._gl.FRAMEBUFFER);return this._unBind(),e}},numberOfColorAttachments:{get:function(){return this._activeColorAttachments.length}},depthTexture:{get:function(){return this._depthTexture}},depthRenderbuffer:{get:function(){return this._depthRenderbuffer}},stencilRenderbuffer:{get:function(){return this._stencilRenderbuffer}},depthStencilTexture:{get:function(){return this._depthStencilTexture}},depthStencilRenderbuffer:{get:function(){return this._depthStencilRenderbuffer}},hasDepthAttachment:{get:function(){return!!(this.depthTexture||this.depthRenderbuffer||this.depthStencilTexture||this.depthStencilRenderbuffer)}}}),a.prototype._bind=function(){var e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,this._framebuffer)},a.prototype._unBind=function(){var e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,null)},a.prototype._getActiveColorAttachments=function(){return this._activeColorAttachments},a.prototype.getColorTexture=function(e){return this._colorTextures[e]},a.prototype.getColorRenderbuffer=function(e){return this._colorRenderbuffers[e]},a.prototype.isDestroyed=function(){return!1},a.prototype.destroy=function(){if(this.destroyAttachments){for(var e=0,i=this._colorTextures,n=i.length;n>e;++e){var o=i[e];t(o)&&o.destroy()}var a=this._colorRenderbuffers;for(n=a.length,e=0;n>e;++e){var s=a[e];t(s)&&s.destroy()}this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy(),this._stencilRenderbuffer=this._stencilRenderbuffer&&this._stencilRenderbuffer.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()}return this._gl.deleteFramebuffer(this._framebuffer),r(this)},a}),i("Renderer/PassState",[],function(){"use strict";var e=function(e){this.context=e,this.framebuffer=void 0,this.blendingEnabled=void 0,this.scissorTest=void 0};return e}),i("Renderer/RenderbufferFormat",["../Core/freezeObject"],function(e){"use strict";var t={RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,validate:function(e){return e===t.RGBA4||e===t.RGB5_A1||e===t.RGB565||e===t.DEPTH_COMPONENT16||e===t.STENCIL_INDEX8||e===t.DEPTH_STENCIL}};return e(t)}),i("Renderer/PickFramebuffer",["../Core/BoundingRectangle","../Core/Color","../Core/defaultValue","../Core/defined","../Core/destroyObject","./PassState","./RenderbufferFormat"],function(e,t,i,r,n,o,a){"use strict";var s=function(t){var i=new o(t);i.blendingEnabled=!1,i.scissorTest={enabled:!0,rectangle:new e},this._context=t,this._fb=void 0,this._passState=i,this._width=0,this._height=0};s.prototype.begin=function(t){var i=this._context,n=i.drawingBufferWidth,o=i.drawingBufferHeight;return e.clone(t,this._passState.scissorTest.rectangle),r(this._fb)&&this._width===n&&this._height===o||(this._width=n,this._height=o,this._fb=this._fb&&this._fb.destroy(),this._fb=i.createFramebuffer({colorTextures:[i.createTexture2D({width:n,height:o})],depthRenderbuffer:i.createRenderbuffer({format:a.DEPTH_COMPONENT16})}),this._passState.framebuffer=this._fb),this._passState};var l=new t;return s.prototype.end=function(e){for(var n=i(e.width,1),o=i(e.height,1),a=this._context,s=a.readPixels({x:e.x,y:e.y,width:n,height:o,framebuffer:this._fb}),u=Math.max(n,o),c=u*u,h=Math.floor(.5*n),d=Math.floor(.5*o),p=0,m=0,f=0,v=-1,g=0;c>g;++g){if(p>=-h&&h>=p&&m>=-d&&d>=m){var _=4*((d-m)*n+p+h);l.red=t.byteToFloat(s[_]),l.green=t.byteToFloat(s[_+1]),l.blue=t.byteToFloat(s[_+2]),l.alpha=t.byteToFloat(s[_+3]);var y=a.getObjectByPickColor(l);if(r(y))return y}if(p===m||0>p&&-p===m||p>0&&p===1-m){var C=f;f=-v,v=C}p+=f,m+=v}return void 0},s.prototype.isDestroyed=function(){return!1},s.prototype.destroy=function(){return this._fb=this._fb&&this._fb.destroy(),n(this)},s}),i("Renderer/Renderbuffer",["../Core/defineProperties","../Core/destroyObject"],function(e,t){"use strict";function i(e,t,i,r){this._gl=e,this._format=t,this._width=i,this._height=r,this._renderbuffer=this._gl.createRenderbuffer(),e.bindRenderbuffer(e.RENDERBUFFER,this._renderbuffer),e.renderbufferStorage(e.RENDERBUFFER,t,i,r),e.bindRenderbuffer(e.RENDERBUFFER,null)}return e(i.prototype,{format:{get:function(){return this._format}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}}),i.prototype._getRenderbuffer=function(){return this._renderbuffer},i.prototype.isDestroyed=function(){return!1},i.prototype.destroy=function(){return this._gl.deleteRenderbuffer(this._renderbuffer),t(this)},i}),i("Renderer/RenderState",["../Core/BoundingRectangle","../Core/Color","../Core/defaultValue","../Core/defined","../Core/DeveloperError","../Core/RuntimeError","../Core/WindingOrder"],function(e,t,i,r,n,o,a){"use strict";function s(e,t,i){i?e.enable(t):e.disable(t)}function l(e,t){e.frontFace(t.frontFace)}function u(e,t){var i=t.cull,r=i.enabled;s(e,e.CULL_FACE,r),r&&e.cullFace(i.face)}function c(e,t){e.lineWidth(t.lineWidth)}function h(e,t){var i=t.polygonOffset,r=i.enabled;s(e,e.POLYGON_OFFSET_FILL,r),r&&e.polygonOffset(i.factor,i.units)}function d(e,t,i){var n=t.scissorTest,o=r(i.scissorTest)?i.scissorTest.enabled:n.enabled;if(s(e,e.SCISSOR_TEST,o),o){var a=r(i.scissorTest)?i.scissorTest.rectangle:n.rectangle;e.scissor(a.x,a.y,a.width,a.height)}}function p(e,t){var i=t.depthRange;e.depthRange(i.near,i.far)}function m(e,t){var i=t.depthTest,r=i.enabled;s(e,e.DEPTH_TEST,r),r&&e.depthFunc(i.func)}function f(e,t){var i=t.colorMask;e.colorMask(i.red,i.green,i.blue,i.alpha)}function v(e,t){e.depthMask(t.depthMask)}function g(e,t){e.stencilMask(t.stencilMask)}function _(e,t,i){var n=t.blending,o=r(i.blendingEnabled)?i.blendingEnabled:n.enabled;s(e,e.BLEND,o),o&&(E(e,n.color),e.blendEquationSeparate(n.equationRgb,n.equationAlpha),e.blendFuncSeparate(n.functionSourceRgb,n.functionDestinationRgb,n.functionSourceAlpha,n.functionDestinationAlpha))}function y(e,t){var i=t.stencilTest,r=i.enabled;if(s(e,e.STENCIL_TEST,r),r){var n=i.frontFunction,o=i.backFunction,a=i.reference,l=i.mask;e.stencilFunc(i.frontFunction,i.reference,i.mask),e.stencilFuncSeparate(e.BACK,o,a,l),e.stencilFuncSeparate(e.FRONT,n,a,l);var u=i.frontOperation,c=u.fail,h=u.zFail,d=u.zPass;e.stencilOpSeparate(e.FRONT,c,h,d);var p=i.backOperation,m=p.fail,f=p.zFail,v=p.zPass;e.stencilOpSeparate(e.BACK,m,f,v)}}function C(e,t,i){var n=t.viewport;r(n)||(n=x,n.width=i.context.drawingBufferWidth,n.height=i.context.drawingBufferHeight),i.context.uniformState.viewport=n,e.viewport(n.x,n.y,n.width,n.height)}function w(e,t){var i=[];return e.frontFace!==t.frontFace&&i.push(l),(e.cull.enabled!==t.cull.enabled||e.cull.face!==t.cull.face)&&i.push(u),e.lineWidth!==t.lineWidth&&i.push(c),(e.polygonOffset.enabled!==t.polygonOffset.enabled||e.polygonOffset.factor!==t.polygonOffset.factor||e.polygonOffset.units!==t.polygonOffset.units)&&i.push(h),(e.depthRange.near!==t.depthRange.near||e.depthRange.far!==t.depthRange.far)&&i.push(p),(e.depthTest.enabled!==t.depthTest.enabled||e.depthTest.func!==t.depthTest.func)&&i.push(m),(e.colorMask.red!==t.colorMask.red||e.colorMask.green!==t.colorMask.green||e.colorMask.blue!==t.colorMask.blue||e.colorMask.alpha!==t.colorMask.alpha)&&i.push(f),e.depthMask!==t.depthMask&&i.push(v),e.stencilMask!==t.stencilMask&&i.push(g),(e.stencilTest.enabled!==t.stencilTest.enabled||e.stencilTest.frontFunction!==t.stencilTest.frontFunction||e.stencilTest.backFunction!==t.stencilTest.backFunction||e.stencilTest.reference!==t.stencilTest.reference||e.stencilTest.mask!==t.stencilTest.mask||e.stencilTest.frontOperation.fail!==t.stencilTest.frontOperation.fail||e.stencilTest.frontOperation.zFail!==t.stencilTest.frontOperation.zFail||e.stencilTest.backOperation.fail!==t.stencilTest.backOperation.fail||e.stencilTest.backOperation.zFail!==t.stencilTest.backOperation.zFail||e.stencilTest.backOperation.zPass!==t.stencilTest.backOperation.zPass)&&i.push(y),(e.sampleCoverage.enabled!==t.sampleCoverage.enabled||e.sampleCoverage.value!==t.sampleCoverage.value||e.sampleCoverage.invert!==t.sampleCoverage.invert)&&i.push(b),i}var S=function(n,s){var l=i(s,{}),u=i(l.cull,{}),c=i(l.polygonOffset,{}),h=i(l.scissorTest,{}),d=i(h.rectangle,{}),p=i(l.depthRange,{}),m=i(l.depthTest,{}),f=i(l.colorMask,{}),v=i(l.blending,{}),g=i(v.color,{}),_=i(l.stencilTest,{}),y=i(_.frontOperation,{}),C=i(_.backOperation,{}),w=i(l.sampleCoverage,{}),S=l.viewport;if(this.frontFace=i(l.frontFace,a.COUNTER_CLOCKWISE),this.cull={enabled:i(u.enabled,!1),face:i(u.face,WebGLRenderingContext.BACK)},this.lineWidth=i(l.lineWidth,1),this.polygonOffset={enabled:i(c.enabled,!1),factor:i(c.factor,0),units:i(c.units,0)},this.scissorTest={enabled:i(h.enabled,!1),rectangle:e.clone(d)},this.depthRange={near:i(p.near,0),far:i(p.far,1)},this.depthTest={enabled:i(m.enabled,!1),func:i(m.func,WebGLRenderingContext.LESS)},this.colorMask={red:i(f.red,!0),green:i(f.green,!0),blue:i(f.blue,!0),alpha:i(f.alpha,!0)},this.depthMask=i(l.depthMask,!0),this.stencilMask=i(l.stencilMask,-1),this.blending={enabled:i(v.enabled,!1),color:new t(i(g.red,0),i(g.green,0),i(g.blue,0),i(g.alpha,0)),equationRgb:i(v.equationRgb,WebGLRenderingContext.FUNC_ADD),equationAlpha:i(v.equationAlpha,WebGLRenderingContext.FUNC_ADD),functionSourceRgb:i(v.functionSourceRgb,WebGLRenderingContext.ONE),functionSourceAlpha:i(v.functionSourceAlpha,WebGLRenderingContext.ONE),functionDestinationRgb:i(v.functionDestinationRgb,WebGLRenderingContext.ZERO),functionDestinationAlpha:i(v.functionDestinationAlpha,WebGLRenderingContext.ZERO)},this.stencilTest={enabled:i(_.enabled,!1),frontFunction:i(_.frontFunction,WebGLRenderingContext.ALWAYS),backFunction:i(_.backFunction,WebGLRenderingContext.ALWAYS),reference:i(_.reference,0),mask:i(_.mask,-1),frontOperation:{fail:i(y.fail,WebGLRenderingContext.KEEP),zFail:i(y.zFail,WebGLRenderingContext.KEEP),zPass:i(y.zPass,WebGLRenderingContext.KEEP)},backOperation:{fail:i(C.fail,WebGLRenderingContext.KEEP),zFail:i(C.zFail,WebGLRenderingContext.KEEP),zPass:i(C.zPass,WebGLRenderingContext.KEEP)}},this.sampleCoverage={enabled:i(w.enabled,!1),value:i(w.value,1),invert:i(w.invert,!1)},this.viewport=r(S)?new e(S.x,S.y,r(S.width)?S.width:n.drawingBufferWidth,r(S.height)?S.height:n.drawingBufferHeight):void 0,this.lineWidthn.maximumAliasedLineWidth)throw new o("renderState.lineWidth is out of range. Check minimumAliasedLineWidth and maximumAliasedLineWidth."); +if(r(this.viewport)){if(this.viewport.width>n.maximumViewportWidth)throw new o("renderState.viewport.width must be less than or equal to the maximum viewport width ("+this.maximumViewportWidth.toString()+"). Check maximumViewportWidth.");if(this.viewport.height>n.maximumViewportHeight)throw new o("renderState.viewport.height must be less than or equal to the maximum viewport height ("+this.maximumViewportHeight.toString()+"). Check maximumViewportHeight.")}this.id=0,this._applyFunctions=[]},E=function(e,t){e.blendColor(t.red,t.green,t.blue,t.alpha)},b=function(e,t){var i=t.sampleCoverage,r=i.enabled;s(e,e.SAMPLE_COVERAGE,r),r&&e.sampleCoverage(i.value,i.invert)},x=new e;return S.apply=function(e,t,i){l(e,t),u(e,t),c(e,t),h(e,t),p(e,t),m(e,t),f(e,t),v(e,t),g(e,t),y(e,t),b(e,t),d(e,t,i),_(e,t,i),C(e,t,i)},S.partialApply=function(e,t,i,n,o){if(t!==i){var a=i._applyFunctions[t.id];r(a)||(a=w(t,i),i._applyFunctions[t.id]=a);for(var s=a.length,l=0;s>l;++l)a[l](e,i)}var u=r(n.scissorTest)?n.scissorTest:t.scissorTest,c=r(o.scissorTest)?o.scissorTest:i.scissorTest;u!==c&&d(e,i,o);var h=r(n.blendingEnabled)?n.blendingEnabled:t.blending.enabled,p=r(o.blendingEnabled)?o.blendingEnabled:i.blending.enabled;(h!==p||p&&t.blending!==i.blending)&&_(e,i,o),(t!==i||n.context!==o.context)&&C(e,i,o)},S.clone=function(i){return{frontFace:i.frontFace,cull:{enabled:i.cull.enabled,face:i.cull.face},lineWidth:i.lineWidth,polygonOffset:{enabled:i.polygonOffset.enabled,factor:i.polygonOffset.factor,units:i.polygonOffset.units},scissorTest:{enabled:i.scissorTest.enabled,rectangle:e.clone(i.scissorTest.rectangle)},depthRange:{near:i.depthRange.near,far:i.depthRange.far},depthTest:{enabled:i.depthTest.enabled,func:i.depthTest.func},colorMask:{red:i.colorMask.red,green:i.colorMask.green,blue:i.colorMask.blue,alpha:i.colorMask.alpha},depthMask:i.depthMask,stencilMask:i.stencilMask,blending:{enabled:i.blending.enabled,color:t.clone(i.blending.color),equationRgb:i.blending.equationRgb,equationAlpha:i.blending.equationAlpha,functionSourceRgb:i.blending.functionSourceRgb,functionSourceAlpha:i.blending.functionSourceAlpha,functionDestinationRgb:i.blending.functionDestinationRgb,functionDestinationAlpha:i.blending.functionDestinationAlpha},stencilTest:{enabled:i.stencilTest.enabled,frontFunction:i.stencilTest.frontFunction,backFunction:i.stencilTest.backFunction,reference:i.stencilTest.reference,mask:i.stencilTest.mask,frontOperation:{fail:i.stencilTest.frontOperation.fail,zFail:i.stencilTest.frontOperation.zFail,zPass:i.stencilTest.frontOperation.zPass},backOperation:{fail:i.stencilTest.backOperation.fail,zFail:i.stencilTest.backOperation.zFail,zPass:i.stencilTest.backOperation.zPass}},sampleCoverage:{enabled:i.sampleCoverage.enabled,value:i.sampleCoverage.value,invert:i.sampleCoverage.invert},viewport:r(i.viewport)?e.clone(i.viewport):void 0}},S}),i("Renderer/createUniform",["../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/Color","../Core/defined","../Core/DeveloperError","../Core/Matrix2","../Core/Matrix3","../Core/Matrix4","../Core/RuntimeError"],function(e,t,i,r,n,o,a,s,l,u){"use strict";function c(e,t,i,r){this.name=i,this.value=void 0,this._value=0,this._gl=e,this._location=r}function h(t,i,r,n){this.name=r,this.value=void 0,this._value=new e,this._gl=t,this._location=n}function d(e,t,i,r){this.name=i,this.value=void 0,this._value=void 0,this._gl=e,this._location=r}function p(e,t,i,r){this.name=i,this.value=void 0,this._value=void 0,this._gl=e,this._location=r}function m(e,t,i,r){this.name=i,this.value=void 0,this._gl=e,this._location=r,this.textureUnitIndex=void 0}function f(e,t,i,r){this.name=i,this.value=void 0,this._value=0,this._gl=e,this._location=r}function v(t,i,r,n){this.name=r,this.value=void 0,this._value=new e,this._gl=t,this._location=n}function g(e,i,r,n){this.name=r,this.value=void 0,this._value=new t,this._gl=e,this._location=n}function _(e,t,r,n){this.name=r,this.value=void 0,this._value=new i,this._gl=e,this._location=n}function y(e,t,i,r){this.name=i,this.value=void 0,this._value=new Float32Array(4),this._gl=e,this._location=r}function C(e,t,i,r){this.name=i,this.value=void 0,this._value=new Float32Array(9),this._gl=e,this._location=r}function w(e,t,i,r){this.name=i,this.value=void 0,this._value=new Float32Array(16),this._gl=e,this._location=r}var S=function(e,t,i,r){switch(t.type){case e.FLOAT:return new c(e,t,i,r);case e.FLOAT_VEC2:return new h(e,t,i,r);case e.FLOAT_VEC3:return new d(e,t,i,r);case e.FLOAT_VEC4:return new p(e,t,i,r);case e.SAMPLER_2D:case e.SAMPLER_CUBE:return new m(e,t,i,r);case e.INT:case e.BOOL:return new f(e,t,i,r);case e.INT_VEC2:case e.BOOL_VEC2:return new v(e,t,i,r);case e.INT_VEC3:case e.BOOL_VEC3:return new g(e,t,i,r);case e.INT_VEC4:case e.BOOL_VEC4:return new _(e,t,i,r);case e.FLOAT_MAT2:return new y(e,t,i,r);case e.FLOAT_MAT3:return new C(e,t,i,r);case e.FLOAT_MAT4:return new w(e,t,i,r);default:throw new u("Unrecognized uniform type: "+t.type+' for uniform "'+i+'".')}};return c.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1f(this._location,this.value))},h.prototype.set=function(){var t=this.value;e.equals(t,this._value)||(e.clone(t,this._value),this._gl.uniform2f(this._location,t.x,t.y))},d.prototype.set=function(){var e=this.value;if(n(e.red))r.equals(e,this._value)||(this._value=r.clone(e,this._value),this._gl.uniform3f(this._location,e.red,e.green,e.blue));else{if(!n(e.x))throw new o('Invalid vec3 value for uniform "'+this._activethis.name+'".');t.equals(e,this._value)||(this._value=t.clone(e,this._value),this._gl.uniform3f(this._location,e.x,e.y,e.z))}},p.prototype.set=function(){var e=this.value;if(n(e.red))r.equals(e,this._value)||(this._value=r.clone(e,this._value),this._gl.uniform4f(this._location,e.red,e.green,e.blue,e.alpha));else{if(!n(e.x))throw new o('Invalid vec4 value for uniform "'+this._activethis.name+'".');i.equals(e,this._value)||(this._value=i.clone(e,this._value),this._gl.uniform4f(this._location,e.x,e.y,e.z,e.w))}},m.prototype.set=function(){var e=this._gl;e.activeTexture(e.TEXTURE0+this.textureUnitIndex);var t=this.value;e.bindTexture(t._target,t._texture)},m.prototype._setSampler=function(e){return this.textureUnitIndex=e,this._gl.uniform1i(this._location,e),e+1},f.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1i(this._location,this.value))},v.prototype.set=function(){var t=this.value;e.equals(t,this._value)||(e.clone(t,this._value),this._gl.uniform2i(this._location,t.x,t.y))},g.prototype.set=function(){var e=this.value;t.equals(e,this._value)||(t.clone(e,this._value),this._gl.uniform3i(this._location,e.x,e.y,e.z))},_.prototype.set=function(){var e=this.value;i.equals(e,this._value)||(i.clone(e,this._value),this._gl.uniform4i(this._location,e.x,e.y,e.z,e.w))},y.prototype.set=function(){a.equalsArray(this.value,this._value,0)||(a.toArray(this.value,this._value),this._gl.uniformMatrix2fv(this._location,!1,this._value))},C.prototype.set=function(){s.equalsArray(this.value,this._value,0)||(s.toArray(this.value,this._value),this._gl.uniformMatrix3fv(this._location,!1,this._value))},w.prototype.set=function(){l.equalsArray(this.value,this._value,0)||(l.toArray(this.value,this._value),this._gl.uniformMatrix4fv(this._location,!1,this._value))},S}),i("Renderer/createUniformArray",["../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/Color","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Matrix2","../Core/Matrix3","../Core/Matrix4","../Core/RuntimeError"],function(e,t,i,r,n,o,a,s,l,u,c){"use strict";function h(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Float32Array(n),this._gl=e,this._location=r[0]}function d(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Float32Array(2*n),this._gl=e,this._location=r[0]}function p(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Float32Array(3*n),this._gl=e,this._location=r[0]}function m(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Float32Array(4*n),this._gl=e,this._location=r[0]}function f(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Float32Array(n),this._gl=e,this._locations=r,this.textureUnitIndex=void 0}function v(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Int32Array(n),this._gl=e,this._location=r[0]}function g(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Int32Array(2*n),this._gl=e,this._location=r[0]}function _(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Int32Array(3*n),this._gl=e,this._location=r[0]}function y(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Int32Array(4*n),this._gl=e,this._location=r[0]}function C(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Float32Array(4*n),this._gl=e,this._location=r[0]}function w(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Float32Array(9*n),this._gl=e,this._location=r[0]}function S(e,t,i,r){var n=r.length;this.name=i,this.value=new Array(n),this._value=new Float32Array(16*n),this._gl=e,this._location=r[0]}var E=function(e,t,i,r){switch(t.type){case e.FLOAT:return new h(e,t,i,r);case e.FLOAT_VEC2:return new d(e,t,i,r);case e.FLOAT_VEC3:return new p(e,t,i,r);case e.FLOAT_VEC4:return new m(e,t,i,r);case e.SAMPLER_2D:case e.SAMPLER_CUBE:return new f(e,t,i,r);case e.INT:case e.BOOL:return new v(e,t,i,r);case e.INT_VEC2:case e.BOOL_VEC2:return new g(e,t,i,r);case e.INT_VEC3:case e.BOOL_VEC3:return new _(e,t,i,r);case e.INT_VEC4:case e.BOOL_VEC4:return new y(e,t,i,r);case e.FLOAT_MAT2:return new C(e,t,i,r);case e.FLOAT_MAT3:return new w(e,t,i,r);case e.FLOAT_MAT4:return new S(e,t,i,r);default:throw new c("Unrecognized uniform type: "+t.type+' for uniform "'+i+'".')}};return h.prototype.set=function(){for(var e=this.value,t=e.length,i=this._value,r=!1,n=0;t>n;++n){var o=e[n];o!==i[n]&&(i[n]=o,r=!0)}r&&this._gl.uniform1fv(this._location,i)},d.prototype.set=function(){for(var t=this.value,i=t.length,r=this._value,n=!1,o=0,a=0;i>a;++a){var s=t[a];e.equalsArray(s,r,o)||(e.pack(s,r,o),n=!0),o+=2}n&&this._gl.uniform2fv(this._location,r)},p.prototype.set=function(){for(var e=this.value,i=e.length,r=this._value,o=!1,s=0,l=0;i>l;++l){var u=e[l];if(n(u.red))(u.red!==r[s]||u.green!==r[s+1]||u.blue!==r[s+2])&&(r[s]=u.red,r[s+1]=u.green,r[s+2]=u.blue,o=!0);else{if(!n(u.x))throw new a("Invalid vec3 value.");t.equalsArray(u,r,s)||(t.pack(u,r,s),o=!0)}s+=3}o&&this._gl.uniform3fv(this._location,r)},m.prototype.set=function(){for(var e=this.value,t=e.length,o=this._value,s=!1,l=0,u=0;t>u;++u){var c=e[u];if(n(c.red))r.equalsArray(c,o,l)||(r.pack(c,o,l),s=!0);else{if(!n(c.x))throw new a("Invalid vec4 value.");i.equalsArray(c,o,l)||(i.pack(c,o,l),s=!0)}l+=4}s&&this._gl.uniform4fv(this._location,o)},f.prototype.set=function(){for(var e=this._gl,t=e.TEXTURE0+this.textureUnitIndex,i=this.value,r=i.length,n=0;r>n;++n){var o=i[n];e.activeTexture(t+n),e.bindTexture(o._target,o._texture)}},f.prototype._setSampler=function(e){this.textureUnitIndex=e;for(var t=this._locations,i=t.length,r=0;i>r;++r){var n=e+r;this._gl.uniform1i(t[r],n)}return e+i},v.prototype.set=function(){for(var e=this.value,t=e.length,i=this._value,r=!1,n=0;t>n;++n){var o=e[n];o!==i[n]&&(i[n]=o,r=!0)}r&&this._gl.uniform1iv(this._location,i)},g.prototype.set=function(){for(var t=this.value,i=t.length,r=this._value,n=!1,o=0,a=0;i>a;++a){var s=t[a];e.equalsArray(s,r,o)||(e.pack(s,r,o),n=!0),o+=2}n&&this._gl.uniform2iv(this._location,r)},_.prototype.set=function(){for(var e=this.value,i=e.length,r=this._value,n=!1,o=0,a=0;i>a;++a){var s=e[a];t.equalsArray(s,r,o)||(t.pack(s,r,o),n=!0),o+=3}n&&this._gl.uniform3iv(this._location,r)},y.prototype.set=function(){for(var e=this.value,t=e.length,r=this._value,n=!1,o=0,a=0;t>a;++a){var s=e[a];i.equalsArray(s,r,o)||(i.pack(s,r,o),n=!0),o+=4}n&&this._gl.uniform4iv(this._location,r)},C.prototype.set=function(){for(var e=this.value,t=e.length,i=this._value,r=!1,n=0,o=0;t>o;++o){var a=e[o];s.equalsArray(a,i,n)||(s.pack(a,i,n),r=!0),n+=4}r&&this._gl.uniformMatrix2fv(this._location,!1,i)},w.prototype.set=function(){for(var e=this.value,t=e.length,i=this._value,r=!1,n=0,o=0;t>o;++o){var a=e[o];l.equalsArray(a,i,n)||(l.pack(a,i,n),r=!0),n+=9}r&&this._gl.uniformMatrix3fv(this._location,!1,i)},S.prototype.set=function(){for(var e=this.value,t=e.length,i=this._value,r=!1,n=0,o=0;t>o;++o){var a=e[o];u.equalsArray(a,i,n)||(u.pack(a,i,n),r=!0),n+=16}r&&this._gl.uniformMatrix4fv(this._location,!1,i)},E}),i("Renderer/ShaderProgram",["../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/RuntimeError","./AutomaticUniforms","./createUniform","./createUniformArray"],function(e,t,i,r,n,o,a,s){"use strict";function l(t,i){var r=i._vertexShaderText,o=i._fragmentShaderText,a=t.createShader(t.VERTEX_SHADER);t.shaderSource(a,r),t.compileShader(a);var s=t.createShader(t.FRAGMENT_SHADER);t.shaderSource(s,o),t.compileShader(s);var l=t.createProgram();t.attachShader(l,a),t.attachShader(l,s),t.deleteShader(a),t.deleteShader(s);var u=i._attributeLocations;if(e(u))for(var c in u)u.hasOwnProperty(c)&&t.bindAttribLocation(l,u[c],c);t.linkProgram(l);var h;if(!t.getProgramParameter(l,t.LINK_STATUS)){var d=i._debugShaders;if(!t.getShaderParameter(s,t.COMPILE_STATUS)){if(h=t.getShaderInfoLog(s),console.error(v+"Fragment shader compile log: "+h),e(d)){var p=d.getTranslatedShaderSource(s);""!==p?console.error(v+"Translated fragment shader source:\n"+p):console.error(v+"Fragment shader translation failed.")}throw t.deleteProgram(l),new n("Fragment shader failed to compile. Compile log: "+h)}if(!t.getShaderParameter(a,t.COMPILE_STATUS)){if(h=t.getShaderInfoLog(a),console.error(v+"Vertex shader compile log: "+h),e(d)){var m=d.getTranslatedShaderSource(a);""!==m?console.error(v+"Translated vertex shader source:\n"+m):console.error(v+"Vertex shader translation failed.")}throw t.deleteProgram(l),new n("Vertex shader failed to compile. Compile log: "+h)}throw h=t.getProgramInfoLog(l),console.error(v+"Shader program link log: "+h),e(d)&&(console.error(v+"Translated vertex shader source:\n"+d.getTranslatedShaderSource(a)),console.error(v+"Translated fragment shader source:\n"+d.getTranslatedShaderSource(s))),t.deleteProgram(l),new n("Program failed to link. Link log: "+h)}var f=i._logShaderCompilation;return f&&(h=t.getShaderInfoLog(a),e(h)&&h.length>0&&console.log(v+"Vertex shader compile log: "+h)),f&&(h=t.getShaderInfoLog(s),e(h)&&h.length>0&&console.log(v+"Fragment shader compile log: "+h)),f&&(h=t.getProgramInfoLog(l),e(h)&&h.length>0&&console.log(v+"Shader program link log: "+h)),l}function u(e,t,i){for(var r={},n=0;i>n;++n){var o=e.getActiveAttrib(t,n),a=e.getAttribLocation(t,o.name);r[o.name]={name:o.name,type:o.type,index:a}}return r}function c(t,i){for(var r={},n=[],o=[],l=t.getProgramParameter(i,t.ACTIVE_UNIFORMS),u=0;l>u;++u){var c=t.getActiveUniform(i,u),h="[0]",d=-1!==c.name.indexOf(h,c.name.length-h.length)?c.name.slice(0,c.name.length-3):c.name;if(0!==d.indexOf("gl_"))if(c.name.indexOf("[")<0){var p=t.getUniformLocation(i,d);if(null!==p){var m=a(t,c,d,p);r[d]=m,n.push(m),m._setSampler&&o.push(m)}}else{var f,v,g,_,y=d.indexOf("[");if(y>=0){if(f=r[d.slice(0,y)],!e(f))continue;v=f._locations,v.length<=1&&(g=f.value,_=t.getUniformLocation(i,d),null!==_&&(v.push(_),g.push(t.getUniform(i,_))))}else{v=[];for(var C=0;Co;++o)r=i[o]._setSampler(r);return e.useProgram(null),r}function p(t){if(!e(t._program)){var i=t._gl,r=l(i,t,t._debugShaders),n=i.getProgramParameter(r,i.ACTIVE_ATTRIBUTES),o=c(i,r),a=h(o.uniformsByName);t._program=r,t._numberOfVertexAttributes=n,t._vertexAttributes=u(i,r,n),t._uniformsByName=o.uniformsByName,t._uniforms=o.uniforms,t._automaticUniforms=a.automaticUniforms,t._manualUniforms=a.manualUniforms,t.maximumTextureUnitIndex=d(i,r,o.samplerUniforms)}}var m=0,f=function(e){this._gl=e.gl,this._logShaderCompilation=e.logShaderCompilation,this._debugShaders=e.debugShaders,this._attributeLocations=e.attributeLocations,this._program=void 0,this._numberOfVertexAttributes=void 0,this._vertexAttributes=void 0,this._uniformsByName=void 0,this._uniforms=void 0,this._automaticUniforms=void 0,this._manualUniforms=void 0,this._cachedShader=void 0,this.maximumTextureUnitIndex=void 0,this._vertexShaderSource=e.vertexShaderSource,this._vertexShaderText=e.vertexShaderText,this._fragmentShaderSource=e.fragmentShaderSource,this._fragmentShaderText=e.fragmentShaderText,this.id=m++};t(f.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},vertexAttributes:{get:function(){return p(this),this._vertexAttributes}},numberOfVertexAttributes:{get:function(){return p(this),this._numberOfVertexAttributes}},allUniforms:{get:function(){return p(this),this._uniformsByName}}});var v="[Cesium WebGL] ";return f.prototype._bind=function(){p(this),this._gl.useProgram(this._program)},f.prototype._setUniforms=function(t,i,n){var o,a;if(e(t)){var s=this._manualUniforms;for(o=s.length,a=0;o>a;++a){var l=s[a];l.value=t[l.name]()}}var u=this._automaticUniforms;for(o=u.length,a=0;o>a;++a){var c=u[a];c.uniform.value=c.automaticUniform.getValue(i)}var h=this._uniforms;for(o=h.length,a=0;o>a;++a)h[a].set();if(n){var d=this._gl,p=this._program;if(d.validateProgram(p),!d.getProgramParameter(p,d.VALIDATE_STATUS))throw new r("Program validation failed. Program info log: "+d.getProgramInfoLog(p))}},f.prototype.isDestroyed=function(){return!1},f.prototype.destroy=function(){return this._cachedShader.cache.releaseShaderProgram(this),void 0},f.prototype.finalDestroy=function(){return this._gl.deleteProgram(this._program),i(this)},f}),i("Renderer/ShaderCache",["../Core/defined","../Core/defineProperties","../Core/destroyObject","./ShaderProgram","./ShaderSource"],function(e,t,i,r,n){"use strict";var o=function(e){this._context=e,this._shaders={},this._numberOfShaders=0,this._shadersToRelease={}};return t(o.prototype,{numberOfShaders:{get:function(){return this._numberOfShaders}}}),o.prototype.replaceShaderProgram=function(t,i,r,n){return e(t)&&t.destroy(),this.getShaderProgram(i,r,n)},o.prototype.getShaderProgram=function(e,t,i){"string"==typeof e&&(e=new n({sources:[e]})),"string"==typeof t&&(t=new n({sources:[t]}));var o,a=e.createCombinedVertexShader(),s=t.createCombinedFragmentShader(),l=a+s+JSON.stringify(i);if(this._shaders[l])o=this._shaders[l],delete this._shadersToRelease[l];else{var u=this._context,c=new r({gl:u._gl,logShaderCompilation:u.logShaderCompilation,debugShaders:u.debugShaders,vertexShaderSource:e,vertexShaderText:a,fragmentShaderSource:t,fragmentShaderText:s,attributeLocations:i});o={cache:this,shaderProgram:c,keyword:l,count:0},c._cachedShader=o,this._shaders[l]=o,++this._numberOfShaders}return++o.count,o.shaderProgram},o.prototype.destroyReleasedShaderPrograms=function(){var e=this._shadersToRelease;for(var t in e)if(e.hasOwnProperty(t)){var i=e[t];delete this._shaders[i.keyword],i.shaderProgram.finalDestroy(),--this._numberOfShaders}this._shadersToRelease={}},o.prototype.releaseShaderProgram=function(e){if(e){var t=e._cachedShader;t&&0===--t.count&&(this._shadersToRelease[t.keyword]=t)}},o.prototype.isDestroyed=function(){return!1},o.prototype.destroy=function(){var e=this._shaders;for(var t in e)e.hasOwnProperty(t)&&e[t].shaderProgram.finalDestroy();return i(this)},o}),i("Renderer/UniformState",["../Core/BoundingRectangle","../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/Cartographic","../Core/defined","../Core/defineProperties","../Core/EncodedCartesian3","../Core/Math","../Core/Matrix3","../Core/Matrix4","../Core/Simon1994PlanetaryPositions","../Core/Transforms","../Scene/SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p){"use strict";function m(e,t){c.clone(t,e._view),c.getRotation(t,e._viewRotation),e._view3DDirty=!0,e._inverseView3DDirty=!0,e._modelViewDirty=!0,e._modelView3DDirty=!0,e._modelViewRelativeToEyeDirty=!0,e._inverseModelViewDirty=!0,e._inverseModelView3DDirty=!0,e._viewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0,e._modelViewInfiniteProjectionDirty=!0,e._normalDirty=!0,e._inverseNormalDirty=!0,e._normal3DDirty=!0,e._inverseNormal3DDirty=!0}function f(e,t){c.clone(t,e._inverseView),c.getRotation(t,e._inverseViewRotation)}function v(e,t){c.clone(t,e._projection),e._inverseProjectionDirty=!0,e._inverseProjectionOITDirty=!0,e._viewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0}function g(e,t){c.clone(t,e._infiniteProjection),e._modelViewInfiniteProjectionDirty=!0}function _(e,t){i.clone(t.positionWC,e._cameraPosition),i.clone(t.directionWC,e._cameraDirection),i.clone(t.rightWC,e._cameraRight),i.clone(t.upWC,e._cameraUp),e._encodedCameraPositionMCDirty=!0}function y(e,t){o(d.computeIcrfToFixedMatrix(t.time,U))||(U=d.computeTemeToPseudoFixedMatrix(t.time,U));var r=h.computeSunPositionInEarthInertialFrame(t.time,e._sunPositionWC);u.multiplyByVector(U,r,r),i.normalize(r,e._sunDirectionWC),r=u.multiplyByVector(e.viewRotation3D,r,e._sunDirectionEC),i.normalize(r,r),r=h.computeMoonPositionInEarthInertialFrame(t.time,e._moonDirectionEC),u.multiplyByVector(U,r,r),u.multiplyByVector(e.viewRotation3D,r,r),i.normalize(r,r);var n=t.mapProjection,a=n.ellipsoid,s=a.cartesianToCartographic(e._sunPositionWC,W);n.project(s,e._sunPositionColumbusView)}function C(e){if(e._viewportDirty){var t=e._viewport;c.computeOrthographicOffCenter(t.x,t.x+t.width,t.y,t.y+t.height,0,1,e._viewportOrthographicMatrix),c.computeViewportTransformation(t,0,1,e._viewportTransformation),e._viewportDirty=!1}}function w(e){e._inverseProjectionDirty&&(e._inverseProjectionDirty=!1,c.inverse(e._projection,e._inverseProjection))}function S(e){e._inverseProjectionOITDirty&&(e._inverseProjectionOITDirty=!1,e._mode!==p.SCENE2D&&e._mode!==p.MORPHING?c.inverse(e._projection,e._inverseProjectionOIT):c.clone(c.IDENTITY,e._inverseProjectionOIT))}function E(e){e._modelViewDirty&&(e._modelViewDirty=!1,c.multiplyTransformation(e._view,e._model,e._modelView))}function b(e){e._modelView3DDirty&&(e._modelView3DDirty=!1,c.multiplyTransformation(e.view3D,e._model,e._modelView3D))}function x(e){e._inverseModelViewDirty&&(e._inverseModelViewDirty=!1,c.inverse(e.modelView,e._inverseModelView))}function T(e){e._inverseModelView3DDirty&&(e._inverseModelView3DDirty=!1,c.inverse(e.modelView3D,e._inverseModelView3D))}function P(e){e._viewProjectionDirty&&(e._viewProjectionDirty=!1,c.multiply(e._projection,e._view,e._viewProjection))}function A(e){e._inverseViewProjectionDirty&&(e._inverseViewProjectionDirty=!1,c.inverse(e.viewProjection,e._inverseViewProjection))}function D(e){e._modelViewProjectionDirty&&(e._modelViewProjectionDirty=!1,c.multiply(e._projection,e.modelView,e._modelViewProjection))}function M(e){if(e._modelViewRelativeToEyeDirty){e._modelViewRelativeToEyeDirty=!1;var t=e.modelView,i=e._modelViewRelativeToEye;i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3],i[4]=t[4],i[5]=t[5],i[6]=t[6],i[7]=t[7],i[8]=t[8],i[9]=t[9],i[10]=t[10],i[11]=t[11],i[12]=0,i[13]=0,i[14]=0,i[15]=t[15]}}function I(e){e._inverseModelViewProjectionDirty&&(e._inverseModelViewProjectionDirty=!1,c.inverse(e.modelViewProjection,e._inverseModelViewProjection))}function O(e){e._modelViewProjectionRelativeToEyeDirty&&(e._modelViewProjectionRelativeToEyeDirty=!1,c.multiply(e._projection,e.modelViewRelativeToEye,e._modelViewProjectionRelativeToEye))}function R(e){e._modelViewInfiniteProjectionDirty&&(e._modelViewInfiniteProjectionDirty=!1,c.multiply(e._infiniteProjection,e.modelView,e._modelViewInfiniteProjection))}function L(e){if(e._normalDirty){e._normalDirty=!1;var t=e._normal;c.getRotation(e.inverseModelView,t),u.transpose(t,t)}}function N(e){if(e._normal3DDirty){e._normal3DDirty=!1;var t=e._normal3D;c.getRotation(e.inverseModelView3D,t),u.transpose(t,t)}}function F(e){e._inverseNormalDirty&&(e._inverseNormalDirty=!1,c.getRotation(e.inverseModelView,e._inverseNormal))}function B(e){e._inverseNormal3DDirty&&(e._inverseNormal3DDirty=!1,c.getRotation(e.inverseModelView3D,e._inverseNormal3D))}function z(e){e._encodedCameraPositionMCDirty&&(e._encodedCameraPositionMCDirty=!1,c.multiplyByPoint(e.inverseModel,e._cameraPosition,G),s.fromCartesian(G,e._encodedCameraPositionMC))}function k(e,t,r,n,a,s,u,h){var m=H;m.x=e.y,m.y=e.z,m.z=e.x;var f=q;f.x=r.y,f.y=r.z,f.z=r.x;var v=j;v.x=n.y,v.y=n.z,v.z=n.x;var g=Y;g.x=t.y,g.y=t.z,g.z=t.x,s===p.SCENE2D&&(m.z=.5*a);var _=u.unproject(m,X);_.longitude=l.clamp(_.longitude,-Math.PI,Math.PI),_.latitude=l.clamp(_.latitude,-l.PI_OVER_TWO,l.PI_OVER_TWO);var y=u.ellipsoid,C=y.cartographicToCartesian(_,Z),w=d.eastNorthUpToFixedFrame(C,y,J);return c.multiplyByPointAsVector(w,f,f),c.multiplyByPointAsVector(w,v,v),c.multiplyByPointAsVector(w,g,g),o(h)||(h=new c),h[0]=f.x,h[1]=v.x,h[2]=-g.x,h[3]=0,h[4]=f.y,h[5]=v.y,h[6]=-g.y,h[7]=0,h[8]=f.z,h[9]=v.z,h[10]=-g.z,h[11]=0,h[12]=-i.dot(f,C),h[13]=-i.dot(v,C),h[14]=i.dot(g,C),h[15]=1,h}var V=function(){this.globeDepthTexture=void 0,this._viewport=new e,this._viewportCartesian4=new r,this._viewportDirty=!1,this._viewportOrthographicMatrix=c.clone(c.IDENTITY),this._viewportTransformation=c.clone(c.IDENTITY),this._model=c.clone(c.IDENTITY),this._view=c.clone(c.IDENTITY),this._inverseView=c.clone(c.IDENTITY),this._projection=c.clone(c.IDENTITY),this._infiniteProjection=c.clone(c.IDENTITY),this._entireFrustum=new t,this._currentFrustum=new t,this._frameState=void 0,this._temeToPseudoFixed=u.clone(c.IDENTITY),this._view3DDirty=!0,this._view3D=new c,this._inverseView3DDirty=!0,this._inverseView3D=new c,this._inverseModelDirty=!0,this._inverseModel=new c,this._inverseTransposeModelDirty=!0,this._inverseTransposeModel=new u,this._viewRotation=new u,this._inverseViewRotation=new u,this._viewRotation3D=new u,this._inverseViewRotation3D=new u,this._inverseProjectionDirty=!0,this._inverseProjection=new c,this._inverseProjectionOITDirty=!0,this._inverseProjectionOIT=new c,this._modelViewDirty=!0,this._modelView=new c,this._modelView3DDirty=!0,this._modelView3D=new c,this._modelViewRelativeToEyeDirty=!0,this._modelViewRelativeToEye=new c,this._inverseModelViewDirty=!0,this._inverseModelView=new c,this._inverseModelView3DDirty=!0,this._inverseModelView3D=new c,this._viewProjectionDirty=!0,this._viewProjection=new c,this._inverseViewProjectionDirty=!0,this._inverseViewProjection=new c,this._modelViewProjectionDirty=!0,this._modelViewProjection=new c,this._inverseModelViewProjectionDirty=!0,this._inverseModelViewProjection=new c,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewProjectionRelativeToEye=new c,this._modelViewInfiniteProjectionDirty=!0,this._modelViewInfiniteProjection=new c,this._normalDirty=!0,this._normal=new u,this._normal3DDirty=!0,this._normal3D=new u,this._inverseNormalDirty=!0,this._inverseNormal=new u,this._inverseNormal3DDirty=!0,this._inverseNormal3D=new u,this._encodedCameraPositionMCDirty=!0,this._encodedCameraPositionMC=new s,this._cameraPosition=new i,this._sunPositionWC=new i,this._sunPositionColumbusView=new i,this._sunDirectionWC=new i,this._sunDirectionEC=new i,this._moonDirectionEC=new i,this._mode=void 0,this._mapProjection=void 0,this._cameraDirection=new i,this._cameraRight=new i,this._cameraUp=new i,this._frustum2DWidth=0,this._eyeHeight2D=new t,this._resolutionScale=1};a(V.prototype,{frameState:{get:function(){return this._frameState}},viewport:{get:function(){return this._viewport},set:function(t){if(!e.equals(t,this._viewport)){e.clone(t,this._viewport);var i=this._viewport,r=this._viewportCartesian4;r.x=i.x,r.y=i.y,r.z=i.width,r.w=i.height,this._viewportDirty=!0}}},viewportCartesian4:{get:function(){return this._viewportCartesian4}},viewportOrthographic:{get:function(){return C(this),this._viewportOrthographicMatrix}},viewportTransformation:{get:function(){return C(this),this._viewportTransformation}},model:{get:function(){return this._model},set:function(e){c.clone(e,this._model),this._modelView3DDirty=!0,this._inverseModelView3DDirty=!0,this._inverseModelDirty=!0,this._inverseTransposeModelDirty=!0,this._modelViewDirty=!0,this._inverseModelViewDirty=!0,this._viewProjectionDirty=!0,this._inverseViewProjectionDirty=!0,this._modelViewRelativeToEyeDirty=!0,this._inverseModelViewDirty=!0,this._modelViewProjectionDirty=!0,this._inverseModelViewProjectionDirty=!0,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewInfiniteProjectionDirty=!0,this._normalDirty=!0,this._inverseNormalDirty=!0,this._normal3DDirty=!0,this._inverseNormal3DDirty=!0,this._encodedCameraPositionMCDirty=!0}},inverseModel:{get:function(){return this._inverseModelDirty&&(this._inverseModelDirty=!1,c.inverse(this._model,this._inverseModel)),this._inverseModel}},inverseTranposeModel:{get:function(){var e=this._inverseTransposeModel;return this._inverseTransposeModelDirty&&(this._inverseTransposeModelDirty=!1,c.getRotation(this.inverseModel,e),u.transpose(e,e)),e}},view:{get:function(){return this._view}},view3D:{get:function(){return this._view3DDirty&&(this._mode===p.SCENE3D?c.clone(this._view,this._view3D):k(this._cameraPosition,this._cameraDirection,this._cameraRight,this._cameraUp,this._frustum2DWidth,this._mode,this._mapProjection,this._view3D),c.getRotation(this._view3D,this._viewRotation3D),this._view3DDirty=!1),this._view3D}},viewRotation:{get:function(){return this._viewRotation}},viewRotation3D:{get:function(){return this.view3D,this._viewRotation3D}},inverseView:{get:function(){return this._inverseView}},inverseView3D:{get:function(){return this._inverseView3DDirty&&(c.inverseTransformation(this.view3D,this._inverseView3D),c.getRotation(this._inverseView3D,this._inverseViewRotation3D),this._inverseView3DDirty=!1),this._inverseView3D}},inverseViewRotation:{get:function(){return this._inverseViewRotation}},inverseViewRotation3D:{get:function(){return this.inverseView3D,this._inverseViewRotation3D}},projection:{get:function(){return this._projection}},inverseProjection:{get:function(){return w(this),this._inverseProjection}},inverseProjectionOIT:{get:function(){return S(this),this._inverseProjectionOIT}},infiniteProjection:{get:function(){return this._infiniteProjection}},modelView:{get:function(){return E(this),this._modelView}},modelView3D:{get:function(){return b(this),this._modelView3D}},modelViewRelativeToEye:{get:function(){return M(this),this._modelViewRelativeToEye}},inverseModelView:{get:function(){return x(this),this._inverseModelView}},inverseModelView3D:{get:function(){return T(this),this._inverseModelView3D}},viewProjection:{get:function(){return P(this),this._viewProjection}},inverseViewProjection:{get:function(){return A(this),this._inverseViewProjection}},modelViewProjection:{get:function(){return D(this),this._modelViewProjection}},inverseModelViewProjection:{get:function(){return I(this),this._inverseModelViewProjection}},modelViewProjectionRelativeToEye:{get:function(){return O(this),this._modelViewProjectionRelativeToEye}},modelViewInfiniteProjection:{get:function(){return R(this),this._modelViewInfiniteProjection}},normal:{get:function(){return L(this),this._normal}},normal3D:{get:function(){return N(this),this._normal3D}},inverseNormal:{get:function(){return F(this),this._inverseNormal}},inverseNormal3D:{get:function(){return B(this),this._inverseNormal3D}},entireFrustum:{get:function(){return this._entireFrustum +}},currentFrustum:{get:function(){return this._currentFrustum}},eyeHeight2D:{get:function(){return this._eyeHeight2D}},sunPositionWC:{get:function(){return this._sunPositionWC}},sunPositionColumbusView:{get:function(){return this._sunPositionColumbusView}},sunDirectionWC:{get:function(){return this._sunDirectionWC}},sunDirectionEC:{get:function(){return this._sunDirectionEC}},moonDirectionEC:{get:function(){return this._moonDirectionEC}},encodedCameraPositionMCHigh:{get:function(){return z(this),this._encodedCameraPositionMC.high}},encodedCameraPositionMCLow:{get:function(){return z(this),this._encodedCameraPositionMC.low}},temeToPseudoFixedMatrix:{get:function(){return this._temeToPseudoFixed}},resolutionScale:{get:function(){return this._resolutionScale}}});var U=new u,W=new n;V.prototype.updateFrustum=function(e){v(this,e.projectionMatrix),o(e.infiniteProjectionMatrix)&&g(this,e.infiniteProjectionMatrix),this._currentFrustum.x=e.near,this._currentFrustum.y=e.far},V.prototype.update=function(e,t){this._mode=t.mode,this._mapProjection=t.mapProjection;var i=e._canvas;this._resolutionScale=i.width/i.clientWidth;var r=t.camera;m(this,r.viewMatrix),f(this,r.inverseViewMatrix),_(this,r),t.mode===p.SCENE2D?(this._frustum2DWidth=r.frustum.right-r.frustum.left,this._eyeHeight2D.x=.5*this._frustum2DWidth,this._eyeHeight2D.y=this._eyeHeight2D.x*this._eyeHeight2D.x):(this._frustum2DWidth=0,this._eyeHeight2D.x=0,this._eyeHeight2D.y=0),y(this,t),this._entireFrustum.x=r.frustum.near,this._entireFrustum.y=r.frustum.far,this.updateFrustum(r.frustum),this._frameState=t,this._temeToPseudoFixed=d.computeTemeToPseudoFixedMatrix(t.time,this._temeToPseudoFixed)};var G=new i,H=new i,q=new i,j=new i,Y=new i,X=new n,Z=new i,J=new c;return V}),i("Renderer/VertexArray",["../Core/ComponentDatatype","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError"],function(e,t,i,r,n,o){"use strict";function a(r,n,o){var a=i(n.vertexBuffer),s=i(n.value),l=n.value?n.value.length:n.componentsPerAttribute,u={index:t(n.index,o),enabled:t(n.enabled,!0),vertexBuffer:n.vertexBuffer,value:s?n.value.slice(0):void 0,componentsPerAttribute:l,componentDatatype:t(n.componentDatatype,e.FLOAT),normalize:t(n.normalize,!1),offsetInBytes:t(n.offsetInBytes,0),strideInBytes:t(n.strideInBytes,0)};if(a)u.vertexAttrib=function(e){e.bindBuffer(e.ARRAY_BUFFER,this.vertexBuffer._getBuffer()),e.vertexAttribPointer(this.index,this.componentsPerAttribute,this.componentDatatype,this.normalize,this.strideInBytes,this.offsetInBytes),e.enableVertexAttribArray(this.index)},u.disableVertexAttribArray=function(e){e.disableVertexAttribArray(this.index)};else{switch(u.componentsPerAttribute){case 1:u.vertexAttrib=function(e){e.vertexAttrib1fv(this.index,this.value)};break;case 2:u.vertexAttrib=function(e){e.vertexAttrib2fv(this.index,this.value)};break;case 3:u.vertexAttrib=function(e){e.vertexAttrib3fv(this.index,this.value)};break;case 4:u.vertexAttrib=function(e){e.vertexAttrib4fv(this.index,this.value)}}u.disableVertexAttribArray=function(){}}r.push(u)}function s(e,t,r){for(var n=0;nr;++r){var n=e.getExtension(t[r]);if(n)return n}return void 0}function H(e,t,i,r){var n;"number"==typeof i?n=i:"object"==typeof i&&"number"==typeof i.byteLength&&(n=i.byteLength);var o=e.createBuffer();return e.bindBuffer(t,o),e.bufferData(t,i,r),e.bindBuffer(t,null),new y(e,t,n,r,o)}function q(e){if(e.validateFramebuffer){var t=e._gl,i=t.checkFramebufferStatus(t.FRAMEBUFFER);if(i!==t.FRAMEBUFFER_COMPLETE){var r;switch(i){case t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:r="Framebuffer is not complete. Incomplete attachment: at least one attachment point with a renderbuffer or texture attached has its attached object no longer in existence or has an attached image with a width or height of zero, or the color attachment point has a non-color-renderable image attached, or the depth attachment point has a non-depth-renderable image attached, or the stencil attachment point has a non-stencil-renderable image attached. Color-renderable formats include GL_RGBA4, GL_RGB5_A1, and GL_RGB565. GL_DEPTH_COMPONENT16 is the only depth-renderable format. GL_STENCIL_INDEX8 is the only stencil-renderable format.";break;case t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:r="Framebuffer is not complete. Incomplete dimensions: not all attached images have the same width and height.";break;case t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:r="Framebuffer is not complete. Missing attachment: no images are attached to the framebuffer.";break;case t.FRAMEBUFFER_UNSUPPORTED:r="Framebuffer is not complete. Unsupported: the combination of internal formats of the attached images violates an implementation-dependent set of restrictions."}throw new l(r)}}}function j(e,t,i){var r=e._currentRenderState,n=e._currentPassState;e._currentRenderState=t,e._currentPassState=i,M.partialApply(e._gl,r,t,n,i)}function Y(e,t){if(t!==e._currentFramebuffer){e._currentFramebuffer=t;var i=nt;if(o(t))t._bind(),q(e,t),i=t._getActiveColorAttachments();else{var r=e._gl;r.bindFramebuffer(r.FRAMEBUFFER,null)}e.drawBuffers&&e._drawBuffers.drawBuffersWEBGL(i)}}function X(e,t,i,r,o,a){var s=n(n(o,i.renderState),e._defaultRenderState);Y(e,t),j(e,s,r);var l=n(a,i.shaderProgram);l._bind(),e._maxFrameTextureUnitIndex=Math.max(e._maxFrameTextureUnitIndex,l.maximumTextureUnitIndex)}function Z(e,t,i){var r=t.primitiveType,a=t.vertexArray,s=t.offset,l=t.count;e._us.model=n(t.modelMatrix,m.IDENTITY);var u=n(i,t.shaderProgram);u._setUniforms(t.uniformMap,e._us,e.validateShaderProgram),a._bind();var c=a.indexBuffer;o(c)?(s*=c.bytesPerIndex,l=n(l,c.numberOfIndices),e._gl.drawElements(r,l,c.indexDatatype,s)):(l=n(l,a.numberOfVertices),e._gl.drawArrays(r,s,l)),a._unBind()}function J(e){return e.values.length/e.componentsPerAttribute}function Q(e){return i.getSizeInBytes(e.componentDatatype)*e.componentsPerAttribute}function K(e){var t,r,n,a=[];for(r in e)e.hasOwnProperty(r)&&o(e[r])&&o(e[r].values)&&(a.push(r),e[r].componentDatatype===i.DOUBLE&&(e[r].componentDatatype=i.FLOAT,e[r].values=i.createTypedArray(i.FLOAT,e[r].values)));var s,l=a.length;if(l>0)for(s=J(e[a[0]]),t=1;l>t;++t){var u=J(e[a[t]]);if(u!==s)throw new g("Each attribute list must have the same number of vertices. Attribute "+a[t]+" has a different number of vertices "+"("+u.toString()+")"+" than attribute "+a[0]+" ("+s.toString()+").")}a.sort(function(t,r){return i.getSizeInBytes(e[r].componentDatatype)-i.getSizeInBytes(e[t].componentDatatype)});var c=0,h={};for(t=0;l>t;++t)r=a[t],n=e[r],h[r]=c,c+=Q(n);if(c>0){var d=i.getSizeInBytes(e[a[0]].componentDatatype),p=c%d;0!==p&&(c+=d-p);var m=s*c,f=new ArrayBuffer(m),v={};for(t=0;l>t;++t){r=a[t];var _=i.getSizeInBytes(e[r].componentDatatype);v[r]={pointer:i.createTypedArray(e[r].componentDatatype,f),index:h[r]/_,strideInComponentType:c/_}}for(t=0;s>t;++t)for(var y=0;l>y;++y){r=a[y],n=e[r];for(var C=n.values,w=v[r],S=w.pointer,E=n.componentsPerAttribute,b=0;E>b;++b)S[w.index+b]=C[t*E+b];w.index+=w.strideInComponentType}return{buffer:f,offsetsInBytes:h,vertexSizeInBytes:c}}return void 0}function $(e,t,i){this._pickObjects=e,this.key=t,this.color=i}var et=function(i,a){if("undefined"==typeof WebGLRenderingContext)throw new g("The browser does not support WebGL. Visit http://get.webgl.org.");this._canvas=i,a=e(a,!0),a=n(a,{}),a.allowTextureFilterAnisotropic=n(a.allowTextureFilterAnisotropic,!0);var s=n(a.webgl,{});if(s.alpha=n(s.alpha,!1),s.failIfMajorPerformanceCaveat=n(s.failIfMajorPerformanceCaveat,!0),u.isFirefox()&&u.isWindows()){var l=u.firefoxVersion();35===l[0]&&(s.alpha=!0)}if(this._originalGLContext=i.getContext("webgl",s)||i.getContext("experimental-webgl",s)||void 0,!o(this._originalGLContext))throw new g("The browser supports WebGL, but initialization failed.");this._id=r(),this.validateFramebuffer=!1,this.validateShaderProgram=!1,this.logShaderCompilation=!1,this._throwOnWebGLError=!1,this._shaderCache=new I(this);var c=this._gl=this._originalGLContext;this._version=c.getParameter(c.VERSION),this._shadingLanguageVersion=c.getParameter(c.SHADING_LANGUAGE_VERSION),this._vendor=c.getParameter(c.VENDOR),this._renderer=c.getParameter(c.RENDERER),this._redBits=c.getParameter(c.RED_BITS),this._greenBits=c.getParameter(c.GREEN_BITS),this._blueBits=c.getParameter(c.BLUE_BITS),this._alphaBits=c.getParameter(c.ALPHA_BITS),this._depthBits=c.getParameter(c.DEPTH_BITS),this._stencilBits=c.getParameter(c.STENCIL_BITS),this._maximumCombinedTextureImageUnits=c.getParameter(c.MAX_COMBINED_TEXTURE_IMAGE_UNITS),this._maximumCubeMapSize=c.getParameter(c.MAX_CUBE_MAP_TEXTURE_SIZE),this._maximumFragmentUniformVectors=c.getParameter(c.MAX_FRAGMENT_UNIFORM_VECTORS),this._maximumTextureImageUnits=c.getParameter(c.MAX_TEXTURE_IMAGE_UNITS),this._maximumRenderbufferSize=c.getParameter(c.MAX_RENDERBUFFER_SIZE),this._maximumTextureSize=c.getParameter(c.MAX_TEXTURE_SIZE),this._maximumVaryingVectors=c.getParameter(c.MAX_VARYING_VECTORS),this._maximumVertexAttributes=c.getParameter(c.MAX_VERTEX_ATTRIBS),this._maximumVertexTextureImageUnits=c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS),this._maximumVertexUniformVectors=c.getParameter(c.MAX_VERTEX_UNIFORM_VECTORS),this._aliasedLineWidthRange=c.getParameter(c.ALIASED_LINE_WIDTH_RANGE),this._aliasedPointSizeRange=c.getParameter(c.ALIASED_POINT_SIZE_RANGE),this._maximumViewportDimensions=c.getParameter(c.MAX_VIEWPORT_DIMS),this._antialias=c.getContextAttributes().antialias,this._standardDerivatives=G(c,["OES_standard_derivatives"]),this._elementIndexUint=G(c,["OES_element_index_uint"]),this._depthTexture=G(c,["WEBGL_depth_texture","WEBKIT_WEBGL_depth_texture"]),this._textureFloat=G(c,["OES_texture_float"]);var h=a.allowTextureFilterAnisotropic?G(c,["EXT_texture_filter_anisotropic","WEBKIT_EXT_texture_filter_anisotropic"]):void 0;this._textureFilterAnisotropic=h,this._maximumTextureFilterAnisotropy=o(h)?c.getParameter(h.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1,this._vertexArrayObject=G(c,["OES_vertex_array_object"]),this._fragDepth=G(c,["EXT_frag_depth"]),this._drawBuffers=G(c,["WEBGL_draw_buffers"]),this._maximumDrawBuffers=o(this._drawBuffers)?c.getParameter(this._drawBuffers.MAX_DRAW_BUFFERS_WEBGL):1,this._maximumColorAttachments=o(this._drawBuffers)?c.getParameter(this._drawBuffers.MAX_COLOR_ATTACHMENTS_WEBGL):1,this._debugShaders=G(c,["WEBGL_debug_shaders"]);var d=c.getParameter(c.COLOR_CLEAR_VALUE);this._clearColor=new t(d[0],d[1],d[2],d[3]),this._clearDepth=c.getParameter(c.DEPTH_CLEAR_VALUE),this._clearStencil=c.getParameter(c.STENCIL_CLEAR_VALUE);var p=new F,m=new x(this),f=this.createRenderState();this._defaultPassState=m,this._defaultRenderState=f,this._defaultTexture=void 0,this._defaultCubeMap=void 0,this._us=p,this._currentRenderState=f,this._currentPassState=m,this._currentFramebuffer=void 0,this._maxFrameTextureUnitIndex=0,this._pickObjects={},this._nextPickColor=new Uint32Array(1),this.options=a,this.cache={},M.apply(c,f,m)},tt={};a(et.prototype,{id:{get:function(){return this._id}},canvas:{get:function(){return this._canvas}},shaderCache:{get:function(){return this._shaderCache}},uniformState:{get:function(){return this._us}},version:{get:function(){return this._version}},shadingLanguageVersion:{get:function(){return this._shadingLanguageVersion}},vendor:{get:function(){return this._vendor}},renderer:{get:function(){return this._renderer}},redBits:{get:function(){return this._redBits}},greenBits:{get:function(){return this._greenBits}},blueBits:{get:function(){return this._blueBits}},alphaBits:{get:function(){return this._alphaBits}},depthBits:{get:function(){return this._depthBits}},stencilBits:{get:function(){return this._stencilBits}},maximumCombinedTextureImageUnits:{get:function(){return this._maximumCombinedTextureImageUnits}},maximumCubeMapSize:{get:function(){return this._maximumCubeMapSize}},maximumFragmentUniformVectors:{get:function(){return this._maximumFragmentUniformVectors}},maximumTextureImageUnits:{get:function(){return this._maximumTextureImageUnits}},maximumRenderbufferSize:{get:function(){return this._maximumRenderbufferSize}},maximumTextureSize:{get:function(){return this._maximumTextureSize}},maximumVaryingVectors:{get:function(){return this._maximumVaryingVectors}},maximumVertexAttributes:{get:function(){return this._maximumVertexAttributes}},maximumVertexTextureImageUnits:{get:function(){return this._maximumVertexTextureImageUnits}},maximumVertexUniformVectors:{get:function(){return this._maximumVertexUniformVectors}},minimumAliasedLineWidth:{get:function(){return this._aliasedLineWidthRange[0]}},maximumAliasedLineWidth:{get:function(){return this._aliasedLineWidthRange[1]}},minimumAliasedPointSize:{get:function(){return this._aliasedPointSizeRange[0]}},maximumAliasedPointSize:{get:function(){return this._aliasedPointSizeRange[1]}},maximumViewportWidth:{get:function(){return this._maximumViewportDimensions[0]}},maximumViewportHeight:{get:function(){return this._maximumViewportDimensions[1]}},antialias:{get:function(){return this._antialias}},standardDerivatives:{get:function(){return!!this._standardDerivatives}},elementIndexUint:{get:function(){return!!this._elementIndexUint}},depthTexture:{get:function(){return!!this._depthTexture}},floatingPointTexture:{get:function(){return!!this._textureFloat}},textureFilterAnisotropic:{get:function(){return!!this._textureFilterAnisotropic}},maximumTextureFilterAnisotropy:{get:function(){return this._maximumTextureFilterAnisotropy}},vertexArrayObject:{get:function(){return!!this._vertexArrayObject}},fragmentDepth:{get:function(){return!!this._fragDepth}},drawBuffers:{get:function(){return!!this._drawBuffers}},maximumDrawBuffers:{get:function(){return this._maximumDrawBuffers}},maximumColorAttachments:{get:function(){return this._maximumColorAttachments}},debugShaders:{get:function(){return this._debugShaders}},throwOnWebGLError:{get:function(){return this._throwOnWebGLError},set:function(e){this._throwOnWebGLError=e,this._gl=W(this._originalGLContext,e?V:null)}},defaultTexture:{get:function(){return void 0===this._defaultTexture&&(this._defaultTexture=this.createTexture2D({source:{width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])}})),this._defaultTexture}},defaultCubeMap:{get:function(){if(void 0===this._defaultCubeMap){var e={width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])};this._defaultCubeMap=this.createCubeMap({source:{positiveX:e,negativeX:e,positiveY:e,negativeY:e,positiveZ:e,negativeZ:e}})}return this._defaultCubeMap}},drawingBufferHeight:{get:function(){return this._gl.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._gl.drawingBufferWidth}},defaultFramebuffer:{get:function(){return tt}}}),et.prototype.replaceShaderProgram=function(e,t,i,r){return this._shaderCache.replaceShaderProgram(e,t,i,r)},et.prototype.createShaderProgram=function(e,t,i){return this._shaderCache.getShaderProgram(e,t,i)},et.prototype.createVertexBuffer=function(e,t){return H(this._gl,this._gl.ARRAY_BUFFER,e,t)},et.prototype.createIndexBuffer=function(e,t,i){if(i===d.UNSIGNED_INT&&!this.elementIndexUint)throw new l("IndexDatatype.UNSIGNED_INT requires OES_element_index_uint, which is not supported on this system. Check context.elementIndexUint.");var r=d.getSizeInBytes(i),n=this._gl,o=H(n,n.ELEMENT_ARRAY_BUFFER,e,t),s=o.sizeInBytes/r;return a(o,{indexDatatype:{get:function(){return i}},bytesPerIndex:{get:function(){return r}},numberOfIndices:{get:function(){return s}}}),o},et.prototype.createVertexArray=function(e,t){return new B(this._gl,this._vertexArrayObject,e,t)},et.prototype.createTexture2D=function(e){return new O(this,e)},et.prototype.createTexture2DFromFramebuffer=function(e,t,i,r,a,s){var l=this._gl;e=n(e,f.RGB),t=n(t,0),i=n(i,0),r=n(r,l.drawingBufferWidth),a=n(a,l.drawingBufferHeight);var u=new O(this,{width:r,height:a,pixelFormat:e,source:{framebuffer:o(s)?s:this.defaultFramebuffer,xOffset:t,yOffset:i,width:r,height:a}});return u},et.prototype.createCubeMap=function(e){function t(e,t){t.arrayBufferView?m.texImage2D(e,0,c,u,u,0,c,h,t.arrayBufferView):m.texImage2D(e,0,c,c,h,t)}e=n(e,n.EMPTY_OBJECT);var i,r,a=e.source;if(o(a)){var s=[a.positiveX,a.negativeX,a.positiveY,a.negativeY,a.positiveZ,a.negativeZ];i=s[0].width,r=s[0].height}else i=e.width,r=e.height;var u=i,c=n(e.pixelFormat,f.RGBA),h=n(e.pixelDatatype,P.UNSIGNED_BYTE);if(h===P.FLOAT&&!this.floatingPointTexture)throw new l("When options.pixelDatatype is FLOAT, this WebGL implementation must support the OES_texture_float extension.");var d=e.preMultiplyAlpha||c===f.RGB||c===f.LUMINANCE,p=n(e.flipY,!0),m=this._gl,v=m.TEXTURE_CUBE_MAP,g=m.createTexture();return m.activeTexture(m.TEXTURE0),m.bindTexture(v,g),o(a)?(m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,d),m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,p),t(m.TEXTURE_CUBE_MAP_POSITIVE_X,a.positiveX),t(m.TEXTURE_CUBE_MAP_NEGATIVE_X,a.negativeX),t(m.TEXTURE_CUBE_MAP_POSITIVE_Y,a.positiveY),t(m.TEXTURE_CUBE_MAP_NEGATIVE_Y,a.negativeY),t(m.TEXTURE_CUBE_MAP_POSITIVE_Z,a.positiveZ),t(m.TEXTURE_CUBE_MAP_NEGATIVE_Z,a.negativeZ)):(m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X,0,c,u,u,0,c,h,null),m.texImage2D(m.TEXTURE_CUBE_MAP_NEGATIVE_X,0,c,u,u,0,c,h,null),m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_Y,0,c,u,u,0,c,h,null),m.texImage2D(m.TEXTURE_CUBE_MAP_NEGATIVE_Y,0,c,u,u,0,c,h,null),m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_Z,0,c,u,u,0,c,h,null),m.texImage2D(m.TEXTURE_CUBE_MAP_NEGATIVE_Z,0,c,u,u,0,c,h,null)),m.bindTexture(v,null),new S(m,this._textureFilterAnisotropic,v,g,c,h,u,d,p)},et.prototype.createFramebuffer=function(e){return new b(this._gl,this._maximumColorAttachments,e)},et.prototype.createRenderbuffer=function(e){var t=this._gl;e=n(e,n.EMPTY_OBJECT);var i=n(e.format,D.RGBA4),r=o(e.width)?e.width:t.drawingBufferWidth,a=o(e.height)?e.height:t.drawingBufferHeight;return new A(t,i,r,a)};var it=0,rt={};et.prototype.createRenderState=function(e){var t=JSON.stringify(e),i=rt[t];if(o(i))return i;var r=new M(this,e),n=JSON.stringify(r);return i=rt[n],o(i)||(r.id=it++,i=r,rt[n]=i),rt[t]=i,i},et.prototype.createSampler=function(e){var t={wrapS:n(e.wrapS,N.CLAMP_TO_EDGE),wrapT:n(e.wrapT,N.CLAMP_TO_EDGE),minificationFilter:n(e.minificationFilter,L.LINEAR),magnificationFilter:n(e.magnificationFilter,R.LINEAR),maximumAnisotropy:o(e.maximumAnisotropy)?e.maximumAnisotropy:1};return t};var nt;"undefined"!=typeof WebGLRenderingContext&&(nt=[WebGLRenderingContext.BACK]);var ot=new w;et.prototype.clear=function(e,i){e=n(e,ot),i=n(i,this._defaultPassState);var r=this._gl,a=0,s=e.color,l=e.depth,u=e.stencil;o(s)&&(t.equals(this._clearColor,s)||(t.clone(s,this._clearColor),r.clearColor(s.red,s.green,s.blue,s.alpha)),a|=r.COLOR_BUFFER_BIT),o(l)&&(l!==this._clearDepth&&(this._clearDepth=l,r.clearDepth(l)),a|=r.DEPTH_BUFFER_BIT),o(u)&&(u!==this._clearStencil&&(this._clearStencil=u,r.clearStencil(u)),a|=r.STENCIL_BUFFER_BIT);var c=n(e.renderState,this._defaultRenderState);j(this,c,i);var h=n(e.framebuffer,i.framebuffer);Y(this,h),r.clear(a)},et.prototype.draw=function(e,t,i,r){t=n(t,this._defaultPassState);var o=n(e.framebuffer,t.framebuffer);X(this,o,e,t,i,r),Z(this,e,r)},et.prototype.endFrame=function(){var e=this._gl;e.useProgram(null),this._currentFramebuffer=void 0,e.bindFramebuffer(e.FRAMEBUFFER,null),this.drawBuffers&&this._drawBuffers.drawBuffersWEBGL(nt);var t=this._maxFrameTextureUnitIndex;this._maxFrameTextureUnitIndex=0;for(var i=0;t>i;++i)e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_2D,null),e.bindTexture(e.TEXTURE_CUBE_MAP,null)},et.prototype.readPixels=function(e){var t=this._gl;e=e||{};var i=Math.max(e.x||0,0),r=Math.max(e.y||0,0),n=e.width||t.drawingBufferWidth,o=e.height||t.drawingBufferHeight,a=e.framebuffer,s=new Uint8Array(4*n*o);return Y(this,a),t.readPixels(i,r,n,o,t.RGBA,t.UNSIGNED_BYTE,s),s},et.prototype.createVertexArrayFromGeometry=function(e){e=n(e,n.EMPTY_OBJECT);var t,r,a,s=n(e.geometry,n.EMPTY_OBJECT),l=n(e.bufferUsage,C.DYNAMIC_DRAW),u=n(e.attributeLocations,n.EMPTY_OBJECT),h=n(e.interleave,!1),m=e.vertexArrayAttributes,f=o(m)?m:[],v=s.attributes;if(h){var g=K(v);if(o(g)){a=this.createVertexBuffer(g.buffer,l);var _=g.offsetsInBytes,y=g.vertexSizeInBytes;for(t in v)v.hasOwnProperty(t)&&o(v[t])&&(r=v[t],o(r.values)?f.push({index:u[t],vertexBuffer:a,componentDatatype:r.componentDatatype,componentsPerAttribute:r.componentsPerAttribute,normalize:r.normalize,offsetInBytes:_[t],strideInBytes:y}):f.push({index:u[t],value:r.value,componentDatatype:r.componentDatatype,normalize:r.normalize}))}}else for(t in v)if(v.hasOwnProperty(t)&&o(v[t])){r=v[t];var w=r.componentDatatype;w===i.DOUBLE&&(w=i.FLOAT),a=void 0,o(r.values)&&(a=this.createVertexBuffer(i.createTypedArray(w,r.values),l)),f.push({index:u[t],vertexBuffer:a,value:r.value,componentDatatype:w,componentsPerAttribute:r.componentsPerAttribute,normalize:r.normalize})}var S,E=s.indices;return o(E)&&(S=c.computeNumberOfVertices(s)>p.SIXTY_FOUR_KILOBYTES&&this.elementIndexUint?this.createIndexBuffer(new Uint32Array(E),l,d.UNSIGNED_INT):this.createIndexBuffer(new Uint16Array(E),l,d.UNSIGNED_SHORT)),this.createVertexArray(f,S)};var at={position:0,textureCoordinates:1};return et.prototype.createViewportQuadCommand=function(e,t){var r=this.cache.viewportQuad_vertexArray;if(!o(r)){var a=new c({attributes:{position:new h({componentDatatype:i.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1]}),textureCoordinates:new h({componentDatatype:i.FLOAT,componentsPerAttribute:2,values:[0,0,1,0,1,1,0,1]})},indices:new Uint16Array([0,1,2,0,2,3]),primitiveType:v.TRIANGLES});r=this.createVertexArrayFromGeometry({geometry:a,attributeLocations:{position:0,textureCoordinates:1},bufferUsage:C.STATIC_DRAW,interleave:!0}),this.cache.viewportQuad_vertexArray=r}return t=n(t,n.EMPTY_OBJECT),new E({vertexArray:r,primitiveType:v.TRIANGLES,renderState:t.renderState,shaderProgram:this.createShaderProgram(_,e,at),uniformMap:t.uniformMap,owner:t.owner,framebuffer:t.framebuffer})},et.prototype.createPickFramebuffer=function(){return new T(this)},et.prototype.getObjectByPickColor=function(e){return this._pickObjects[e.toRgba()]},a($.prototype,{object:{get:function(){return this._pickObjects[this.key]},set:function(e){this._pickObjects[this.key]=e}}}),$.prototype.destroy=function(){return delete this._pickObjects[this.key],void 0},et.prototype.createPickId=function(e){++this._nextPickColor[0];var i=this._nextPickColor[0];if(0===i)throw new g("Out of unique Pick IDs.");return this._pickObjects[i]=e,new $(this._pickObjects,i,t.fromRgba(i))},et.prototype.isDestroyed=function(){return!1},et.prototype.destroy=function(){var e=this.cache;for(var t in e)if(e.hasOwnProperty(t)){var i=e[t];o(i.destroy)&&i.destroy()}return this._shaderCache=this._shaderCache.destroy(),this._defaultTexture=this._defaultTexture&&this._defaultTexture.destroy(),this._defaultCubeMap=this._defaultCubeMap&&this._defaultCubeMap.destroy(),s(this)},et}),i("Renderer/loadCubeMap",["../Core/defined","../Core/DeveloperError","../Core/loadImage","../ThirdParty/when"],function(e,t,i,r){"use strict";var n=function(e,t,n){var o=[i(t.positiveX,n),i(t.negativeX,n),i(t.positiveY,n),i(t.negativeY,n),i(t.positiveZ,n),i(t.negativeZ,n)];return r.all(o,function(t){return e.createCubeMap({source:{positiveX:t[0],negativeX:t[1],positiveY:t[2],negativeY:t[3],positiveZ:t[4],negativeZ:t[5]}})})};return n}),i("Scene/DiscardMissingTileImagePolicy",["../Core/defaultValue","../Core/defined","../Core/DeveloperError","../Core/getImagePixels","../Core/loadImageViaBlob","../ThirdParty/when"],function(e,t,i,r,n,o){"use strict";var a=function(a){function s(e){t(e.blob)&&(u._missingImageByteLength=e.blob.size);var i=r(e);if(a.disableCheckIfAllPixelsAreTransparent){for(var n=!0,o=e.width,s=a.pixelsToCheck,l=0,c=s.length;n&&c>l;++l){var h=s[l],d=4*h.x+h.y*o,p=i[d+3];p>0&&(n=!1)}n&&(i=void 0)}u._missingImagePixels=i,u._isReady=!0}function l(){u._missingImagePixels=void 0,u._isReady=!0}if(a=e(a,e.EMPTY_OBJECT),!t(a.missingImageUrl))throw new i("options.missingImageUrl is required.");if(!t(a.pixelsToCheck))throw new i("options.pixelsToCheck is required.");this._pixelsToCheck=a.pixelsToCheck,this._missingImagePixels=void 0,this._missingImageByteLength=void 0,this._isReady=!1;var u=this;o(n(a.missingImageUrl),s,l)};return a.prototype.isReady=function(){return this._isReady},a.prototype.shouldDiscardImage=function(e){if(!this._isReady)throw new i("shouldDiscardImage must not be called before the discard policy is ready.");var n=this._pixelsToCheck,o=this._missingImagePixels;if(!t(o))return!1;if(t(e.blob)&&e.blob.size!==this._missingImageByteLength)return!1;for(var a=r(e),s=e.width,l=0,u=n.length;u>l;++l)for(var c=n[l],h=4*c.x+c.y*s,d=0;4>d;++d){var p=h+d;if(a[p]!==o[p])return!1}return!0},a}),i("Scene/ImageryLayerFeatureInfo",["../Core/defined"],function(e){"use strict";var t=function(){this.name=void 0,this.description=void 0,this.position=void 0,this.data=void 0};return t.prototype.configureNameFromProperties=function(t){var i,r=10;for(var n in t)if(t.hasOwnProperty(n)&&t[n]){var o=n.toLowerCase();r>1&&"name"===o?(r=1,i=n):r>2&&"title"===o?(r=2,i=n):r>3&&/name/i.test(n)?(r=3,i=n):r>4&&/title/i.test(n)&&(r=4,i=n)}e(i)&&(this.name=t[i])},t.prototype.configureDescriptionFromProperties=function(t){function i(t){var r='';for(var n in t)if(t.hasOwnProperty(n)){var o=t[n];e(o)&&(r+="object"==typeof o?"":"")}return r+="
    "+n+""+i(o)+"
    "+n+""+o+"
    "}this.description=i(t)},t}),i("Scene/ImageryProvider",["../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/loadImage","../Core/loadImageViaBlob","../Core/throttleRequestByServer"],function(e,t,i,r,n,o){"use strict";var a=function(){this.defaultAlpha=void 0,this.defaultBrightness=void 0,this.defaultContrast=void 0,this.defaultHue=void 0,this.defaultSaturation=void 0,this.defaultGamma=void 0,i.throwInstantiationError()};return t(a.prototype,{ready:{get:i.throwInstantiationError},rectangle:{get:i.throwInstantiationError},tileWidth:{get:i.throwInstantiationError},tileHeight:{get:i.throwInstantiationError},maximumLevel:{get:i.throwInstantiationError},minimumLevel:{get:i.throwInstantiationError},tilingScheme:{get:i.throwInstantiationError},tileDiscardPolicy:{get:i.throwInstantiationError},errorEvent:{get:i.throwInstantiationError},credit:{get:i.throwInstantiationError},proxy:{get:i.throwInstantiationError},hasAlphaChannel:{get:i.throwInstantiationError}}),a.prototype.getTileCredits=i.throwInstantiationError,a.prototype.requestImage=i.throwInstantiationError,a.prototype.pickFeatures=i.throwInstantiationError,a.loadImage=function(t,i){return e(t.tileDiscardPolicy)?o(i,n):o(i,r)},a}),i("Scene/ArcGisMapServerImageryProvider",["../Core/Cartesian2","../Core/Cartesian3","../Core/Cartographic","../Core/Math","../Core/Credit","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/GeographicProjection","../Core/GeographicTilingScheme","../Core/jsonp","../Core/loadJson","../Core/Rectangle","../Core/TileProviderError","../Core/WebMercatorProjection","../Core/WebMercatorTilingScheme","../ThirdParty/when","./DiscardMissingTileImagePolicy","./ImageryLayerFeatureInfo","./ImageryProvider"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w){"use strict";function S(e,t,i,r){var n;if(e._useTiles)n=e._url+"/tile/"+r+"/"+i+"/"+t;else{var o=e._tilingScheme.tileXYToNativeRectangle(t,i,r),s=o.west+"%2C"+o.south+"%2C"+o.east+"%2C"+o.north;n=e._url+"/export?",n+="bbox="+s,n+=e._tilingScheme instanceof h?"&bboxSR=4326&imageSR=4326":"&bboxSR=3857&imageSR=3857",n+="&size="+e._tileWidth+"%2C"+e._tileHeight,n+="&format=png&transparent=true&f=image",e.layers&&(n+="&layers=show:"+e.layers)}var l=e._proxy;return a(l)&&(n=l.getURL(n)),n}var E=function(t){function i(i){var r=i.tileInfo;if(a(r)){if(c._tileWidth=r.rows,c._tileHeight=r.cols,102100===r.spatialReference.wkid||102113===r.spatialReference.wkid)c._tilingScheme=new g({ellipsoid:t.ellipsoid});else{if(4326!==i.tileInfo.spatialReference.wkid){var o="Tile spatial reference WKID "+i.tileInfo.spatialReference.wkid+" is not supported.";return l=f.handleError(l,c,c._errorEvent,o,void 0,void 0,void 0,s),void 0}c._tilingScheme=new h({ellipsoid:t.ellipsoid})}if(c._maximumLevel=i.tileInfo.lods.length-1,a(i.fullExtent)){if(a(i.fullExtent.spatialReference)&&a(i.fullExtent.spatialReference.wkid))if(102100===i.fullExtent.spatialReference.wkid||102113===i.fullExtent.spatialReference.wkid){var u=new v,d=u.unproject(new e(i.fullExtent.xmin,i.fullExtent.ymin)),p=u.unproject(new e(i.fullExtent.xmax,i.fullExtent.ymax)); +c._rectangle=new m(d.longitude,d.latitude,p.longitude,p.latitude)}else{if(4326!==i.fullExtent.spatialReference.wkid){var _="fullExtent.spatialReference WKID "+i.fullExtent.spatialReference.wkid+" is not supported.";return l=f.handleError(l,c,c._errorEvent,_,void 0,void 0,void 0,s),void 0}c._rectangle=m.fromDegrees(i.fullExtent.xmin,i.fullExtent.ymin,i.fullExtent.xmax,i.fullExtent.ymax)}}else c._rectangle=c._tilingScheme.rectangle;a(c._tileDiscardPolicy)||(c._tileDiscardPolicy=new y({missingImageUrl:S(c,0,0,c._maximumLevel),pixelsToCheck:[new e(0,0),new e(200,20),new e(20,200),new e(80,110),new e(160,130)],disableCheckIfAllPixelsAreTransparent:!0})),c._useTiles=!0}else c._useTiles=!1;a(i.copyrightText)&&i.copyrightText.length>0&&(c._credit=new n(i.copyrightText)),c._ready=!0,f.handleSuccess(l)}function r(){var e="An error occurred while accessing "+c._url+".";l=f.handleError(l,c,c._errorEvent,e,void 0,void 0,void 0,s)}function s(){var e=d(c._url,{parameters:{f:"json"},proxy:c._proxy});_(e,i,r)}t=o(t,{}),this._url=t.url,this._tileDiscardPolicy=t.tileDiscardPolicy,this._proxy=t.proxy,this._tileWidth=o(t.tileWidth,256),this._tileHeight=o(t.tileHeight,256),this._maximumLevel=t.maximumLevel,this._tilingScheme=o(t.tilingScheme,new h({ellipsoid:t.ellipsoid})),this._credit=void 0,this._useTiles=o(t.usePreCachedTilesIfAvailable,!0),this._rectangle=o(t.rectangle,this._tilingScheme.rectangle),this._layers=t.layers,this._enablePickFeatures=o(t.enablePickFeatures,!0),this._errorEvent=new u,this._ready=!1;var l,c=this;this._useTiles?s():this._ready=!0};return s(E.prototype,{url:{get:function(){return this._url}},proxy:{get:function(){return this._proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},ready:{get:function(){return this._ready}},credit:{get:function(){return this._credit}},usingPrecachedTiles:{get:function(){return this._useTiles}},hasAlphaChannel:{get:function(){return!0}},layers:{get:function(){return this._layers}},enablePickFeatures:{get:function(){return this._enablePickFeatures}}}),E.prototype.getTileCredits=function(){return void 0},E.prototype.requestImage=function(e,t,i){var r=S(this,e,t,i);return w.loadImage(this,r)},E.prototype.pickFeatures=function(e,n,o,s,l){if(!this._enablePickFeatures)return void 0;var u,c,d,m=this._tilingScheme.tileXYToNativeRectangle(e,n,o);if(this._tilingScheme instanceof h)u=r.toDegrees(s),c=r.toDegrees(l),d="4326";else{var f=this._tilingScheme.projection.project(new i(s,l,0));u=f.x,c=f.y,d="3857"}var g=this._url+"/identify?f=json&tolerance=2&geometryType=esriGeometryPoint";return g+="&geometry="+u+","+c,g+="&mapExtent="+m.west+","+m.south+","+m.east+","+m.north,g+="&imageDisplay="+this._tileWidth+","+this._tileHeight+",96",g+="&sr="+d,g+="&layers=visible",a(this._layers)&&(g+=":"+this._layers),p(g).then(function(e){var r=[],n=e.results;if(!a(n))return r;for(var o=0;oo;++o){for(var s=e[o],l=s.coverageAreas,u=!1,h=0,d=s.coverageAreas.length;!u&&d>h;++h){var p=l[h];if(t>=p.zoomMin&&t<=p.zoomMax){var m=c.intersection(i,p.bbox,w);n(m)&&(u=!0)}}u&&r.push(s.credit)}return r}var y=function S(o){function a(e){var r=e.resourceSets[0].resources[0];w._tileWidth=r.imageWidth,w._tileHeight=r.imageHeight,w._maximumLevel=r.zoomMax-1,w._imageUrlSubdomains=r.imageUrlSubdomains,w._imageUrlTemplate=r.imageUrl.replace("{culture}",w._culture);var o=w._tileProtocol;if(!n(o)){var a=document.location.protocol;o=/^http/.test(a)?a:"http:"}w._imageUrlTemplate=w._imageUrlTemplate.replace(/^http:/,o),n(w._tileDiscardPolicy)||(w._tileDiscardPolicy=new f({missingImageUrl:g(w,0,0,w._maximumLevel),pixelsToCheck:[new t(0,0),new t(120,140),new t(130,160),new t(200,50),new t(200,200)],disableCheckIfAllPixelsAreTransparent:!0}));var s=w._attributionList=r.imageryProviders;s||(s=w._attributionList=[]);for(var l=0,d=s.length;d>l;++l){var p=s[l];p.credit=new i(p.attribution);for(var m=p.coverageAreas,v=0,_=p.coverageAreas.length;_>v;++v){var C=m[v],S=C.bbox;C.bbox=new c(u.toRadians(S[1]),u.toRadians(S[0]),u.toRadians(S[3]),u.toRadians(S[2]))}}w._ready=!0,h.handleSuccess(y)}function v(){var e="An error occurred while accessing "+C+".";y=h.handleError(y,w,w._errorEvent,e,void 0,void 0,void 0,_)}function _(){var e=l(C,{callbackParameterName:"jsonp",proxy:w._proxy});p(e,a,v)}o=r(o,{}),this._key=e.getKey(o.key),this._url=o.url,this._tileProtocol=o.tileProtocol,this._mapStyle=r(o.mapStyle,m.AERIAL),this._culture=r(o.culture,""),this._tileDiscardPolicy=o.tileDiscardPolicy,this._proxy=o.proxy,this._credit=new i("Bing Imagery",S._logoData,"http://www.bing.com"),this.defaultGamma=1,(this._mapStyle===m.AERIAL||this._mapStyle===m.AERIAL_WITH_LABELS)&&(this.defaultGamma=1.3),this._tilingScheme=new d({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:o.ellipsoid}),this._tileWidth=void 0,this._tileHeight=void 0,this._maximumLevel=void 0,this._imageUrlTemplate=void 0,this._imageUrlSubdomains=void 0,this._errorEvent=new s,this._ready=!1;var y,C=this._url+"/REST/v1/Imagery/Metadata/"+this._mapStyle+"?incl=ImageryProviders&key="+this._key,w=this;_()};o(y.prototype,{url:{get:function(){return this._url}},proxy:{get:function(){return this._proxy}},key:{get:function(){return this._key}},mapStyle:{get:function(){return this._mapStyle}},culture:{get:function(){return this._culture}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},ready:{get:function(){return this._ready}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!1}}});var C=new c;y.prototype.getTileCredits=function(e,t,i){if(!this._ready)throw new a("getTileCredits must not be called before the imagery provider is ready.");var r=this._tilingScheme.tileXYToRectangle(e,t,i,C);return _(this._attributionList,i,r)},y.prototype.requestImage=function(e,t,i){var r=g(this,e,t,i);return v.loadImage(this,r)},y.prototype.pickFeatures=function(){return void 0},y._logoData="data:image/png;base64,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",y.tileXYToQuadKey=function(e,t,i){for(var r="",n=i;n>=0;--n){var o=1<=0;--n){var o=1<r;++r){var l=e.intersectPlane(o.fromCartesian4(t[r],s));if(l===n.OUTSIDE)return n.OUTSIDE;l===n.INTERSECTING&&(i=!0)}return i?n.INTERSECTING:n.INSIDE},a}),i("Scene/PerspectiveOffCenterFrustum",["../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Matrix4","./CullingVolume"],function(e,t,i,r,n,o,a,s,l){"use strict";function u(e){var t=e.top,i=e.bottom,r=e.right,n=e.left,o=e.near,a=e.far;(t!==e._top||i!==e._bottom||n!==e._left||r!==e._right||o!==e._near||a!==e._far)&&(e._left=n,e._right=r,e._top=t,e._bottom=i,e._near=o,e._far=a,e._perspectiveMatrix=s.computePerspectiveOffCenter(n,r,i,t,o,a,e._perspectiveMatrix),e._infinitePerspective=s.computeInfinitePerspectiveOffCenter(n,r,i,t,o,e._infinitePerspective))}var c=function(){this.left=void 0,this._left=void 0,this.right=void 0,this._right=void 0,this.top=void 0,this._top=void 0,this.bottom=void 0,this._bottom=void 0,this.near=1,this._near=this.near,this.far=5e8,this._far=this.far,this._cullingVolume=new l,this._perspectiveMatrix=new s,this._infinitePerspective=new s};o(c.prototype,{projectionMatrix:{get:function(){return u(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return u(this),this._infinitePerspective}}});var h=new t,d=new t,p=new t,m=new t;return c.prototype.computeCullingVolume=function(e,r,o){var a=this._cullingVolume.planes,s=this.top,l=this.bottom,u=this.right,c=this.left,f=this.near,v=this.far,g=t.cross(r,o,h),_=d;t.multiplyByScalar(r,f,_),t.add(e,_,_);var y=p;t.multiplyByScalar(r,v,y),t.add(e,y,y);var C=m;t.multiplyByScalar(g,c,C),t.add(_,C,C),t.subtract(C,e,C),t.normalize(C,C),t.cross(C,o,C);var w=a[0];return n(w)||(w=a[0]=new i),w.x=C.x,w.y=C.y,w.z=C.z,w.w=-t.dot(C,e),t.multiplyByScalar(g,u,C),t.add(_,C,C),t.subtract(C,e,C),t.normalize(C,C),t.cross(o,C,C),w=a[1],n(w)||(w=a[1]=new i),w.x=C.x,w.y=C.y,w.z=C.z,w.w=-t.dot(C,e),t.multiplyByScalar(o,l,C),t.add(_,C,C),t.subtract(C,e,C),t.normalize(C,C),t.cross(g,C,C),w=a[2],n(w)||(w=a[2]=new i),w.x=C.x,w.y=C.y,w.z=C.z,w.w=-t.dot(C,e),t.multiplyByScalar(o,s,C),t.add(_,C,C),t.subtract(C,e,C),t.normalize(C,C),t.cross(C,g,C),w=a[3],n(w)||(w=a[3]=new i),w.x=C.x,w.y=C.y,w.z=C.z,w.w=-t.dot(C,e),w=a[4],n(w)||(w=a[4]=new i),w.x=r.x,w.y=r.y,w.z=r.z,w.w=-t.dot(r,_),t.negate(r,C),w=a[5],n(w)||(w=a[5]=new i),w.x=C.x,w.y=C.y,w.z=C.z,w.w=-t.dot(C,y),this._cullingVolume},c.prototype.getPixelSize=function(t,i,o){u(this);var a=t.x,s=t.y;i=r(i,this.near);var l=1/this.near,c=this.top*l,h=2*i*c/s;c=this.right*l;var d=2*i*c/a;return n(o)?(o.x=d,o.y=h,o):new e(d,h)},c.prototype.clone=function(e){return n(e)||(e=new c),e.right=this.right,e.left=this.left,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e},c.prototype.equals=function(e){return n(e)&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far},c}),i("Scene/PerspectiveFrustum",["../Core/defined","../Core/defineProperties","../Core/DeveloperError","./PerspectiveOffCenterFrustum"],function(e,t,i,r){"use strict";function n(e){var t=e._offCenterFrustum;(e.fov!==e._fov||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far)&&(e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:2*Math.atan(Math.tan(.5*e.fov)/e.aspectRatio),e._near=e.near,e._far=e.far,t.top=e.near*Math.tan(.5*e._fovy),t.bottom=-t.top,t.right=e.aspectRatio*t.top,t.left=-t.right,t.near=e.near,t.far=e.far)}var o=function(){this._offCenterFrustum=new r,this.fov=void 0,this._fov=void 0,this._fovy=void 0,this.aspectRatio=void 0,this._aspectRatio=void 0,this.near=1,this._near=this.near,this.far=5e8,this._far=this.far};return t(o.prototype,{projectionMatrix:{get:function(){return n(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return n(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return n(this),this._fovy}}}),o.prototype.computeCullingVolume=function(e,t,i){return n(this),this._offCenterFrustum.computeCullingVolume(e,t,i)},o.prototype.getPixelSize=function(e,t,i){return n(this),this._offCenterFrustum.getPixelSize(e,t,i)},o.prototype.clone=function(t){return e(t)||(t=new o),t.aspectRatio=this.aspectRatio,t.fov=this.fov,t.near=this.near,t.far=this.far,t._aspectRatio=void 0,t._fov=void 0,t._near=void 0,t._far=void 0,this._offCenterFrustum.clone(t._offCenterFrustum),t},o.prototype.equals=function(t){return e(t)?(n(this),n(t),this.fov===t.fov&&this.aspectRatio===t.aspectRatio&&this.near===t.near&&this.far===t.far&&this._offCenterFrustum.equals(t._offCenterFrustum)):!1},o}),i("Scene/CameraFlightPath",["../Core/Cartesian2","../Core/Cartesian3","../Core/Cartographic","../Core/defaultValue","../Core/defined","../Core/DeveloperError","../Core/EasingFunction","../Core/Math","./PerspectiveFrustum","./PerspectiveOffCenterFrustum","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c){"use strict";function h(e,t,i){var r,n,o;if(e instanceof l){var a=Math.tan(.5*e.fovy);return r=e.near,n=e.near*a,o=e.aspectRatio*n,Math.max(t*r/o,i*r/n)}return e instanceof u?(r=e.near,n=e.top,o=e.right,Math.max(t*r/o,i*r/n)):Math.max(t,i)}function d(e,i,r,o,a){var l,u=a;if(!n(a)){var c=e.position,d=i,p=e.up,m=e.right,f=e.frustum,v=t.subtract(c,d,C),g=t.magnitude(t.multiplyByScalar(p,t.dot(v,p),w)),_=t.magnitude(t.multiplyByScalar(m,t.dot(v,m),w));l=Math.max(r,o),u=Math.min(.2*h(f,g,_),1e9)}if(n(a)||u>l){var y=8,S=1e6,E=-Math.pow((u-r)*S,1/y),b=Math.pow((u-o)*S,1/y);return function(e){var t=e*(b-E)+E;return-Math.pow(t,y)/S+u}}return function(e){return s.lerp(r,o,e)}}function p(e,t){return s.equalsEpsilon(e,s.TWO_PI,s.EPSILON11)&&(e=0),t>e+Math.PI?e+=s.TWO_PI:ts.PI&&(_.longitude+=s.TWO_PI);var C=d(u,r,m.height,_.height,l),w=function(e){var i=e.time/t,r=x;r.longitude=s.lerp(m.longitude,_.longitude,i),r.latitude=s.lerp(m.latitude,_.latitude,i),r.height=C(i),u.setView({positionCartographic:r,heading:s.lerp(v,n,i),pitch:s.lerp(f,o,i),roll:s.lerp(g,a,i)})};return w}function v(i,r,n,o,a,l,u){var c=i.camera,h=t.clone(c.position,S),m=c.pitch,f=p(c.heading,o),v=p(c.roll,l),g=c.frustum.right-c.frustum.left,_=d(c,n,g,n.z,u),y=function(t){var i=t.time/r;c.setView({heading:s.lerp(f,o,i),pitch:s.lerp(m,a,i),roll:s.lerp(v,l,i)}),e.lerp(h,n,i,c.position);var u=_(i),d=c.frustum,p=d.top/d.right,g=.5*(u-(d.right-d.left));d.right+=g,d.left-=g,d.top=p*d.right,d.bottom=-d.top};return y}function g(e,t){return{startObject:{},stopObject:{},duration:0,complete:e,cancel:t}}function _(e,t){var i=function(){"function"==typeof t&&t(),e.enableInputs=!0};return i}var y={},C=new t,w=new t,S=new t,E=new i,b=new i,x=new i;new t,new t,new t;var T=new i,P=new t;return y.createTween=function(i,o){o=r(o,r.EMPTY_OBJECT);var l=o.destination,u=i.mapProjection,h=u.ellipsoid,d=o.maximumHeight,p=o.easingFunction;if(i.mode===c.MORPHING)return g();var y=r(o.convert,!0);y&&i.mode!==c.SCENE3D&&(h.cartesianToCartographic(l,T),l=u.project(T,P));var C=i.camera,w=o.endTransform;n(w)&&C._setTransform(w);var S=o.duration;n(S)||(S=Math.ceil(t.distance(C.position,l)/1e6)+2,S=Math.min(S,3));var E=i.mode,b=r(o.heading,0),x=i.mode!==c.SCENE2D?r(o.pitch,-s.PI_OVER_TWO):-s.PI_OVER_TWO,A=r(o.roll,0),D=i.screenSpaceCameraController;D.enableInputs=!1;var M=_(D,o.complete),I=_(D,o.cancel),O=C.frustum,R=i.mode===c.SCENE2D;if(R=R&&e.equalsEpsilon(C.position,l,s.EPSILON6),R=R&&s.equalsEpsilon(Math.max(O.right-O.left,O.top-O.bottom),l.z,s.EPSILON6),R=R||i.mode!==c.SCENE2D&&t.equalsEpsilon(l,C.position,s.EPSILON6))return g(M,I);var L=new Array(4);if(L[c.SCENE2D]=v,L[c.SCENE3D]=f,L[c.COLUMBUS_VIEW]=m,0>=S){var N=function(){var e=L[E](i,1,l,b,x,A,d);e({time:1}),"function"==typeof M&&M()};return g(N,I)}var F=L[E](i,S,l,b,x,A,d);if(!n(p)){var B=C.positionCartographic.height,z=E===c.SCENE3D?h.cartesianToCartographic(l).height:l.z;p=B>z&&B>11500?a.CUBIC_OUT:a.QUINTIC_IN_OUT}return{duration:S,easingFunction:p,startObject:{time:0},stopObject:{time:S},update:F,complete:M,cancel:I}},y}),i("Scene/Camera",["../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/Cartographic","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/EasingFunction","../Core/Ellipsoid","../Core/EllipsoidGeodesic","../Core/Event","../Core/IntersectionTests","../Core/Math","../Core/Matrix3","../Core/Matrix4","../Core/Quaternion","../Core/Ray","../Core/Rectangle","../Core/Transforms","./CameraFlightPath","./HeadingPitchRange","./PerspectiveFrustum","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E){"use strict";function b(e){var i=e._right,r=e._up,n=e._direction,o=e._position,a=e._viewMatrix;a[0]=i.x,a[1]=r.x,a[2]=-n.x,a[3]=0,a[4]=i.y,a[5]=r.y,a[6]=-n.y,a[7]=0,a[8]=i.z,a[9]=r.z,a[10]=-n.z,a[11]=0,a[12]=-t.dot(i,o),a[13]=-t.dot(r,o),a[14]=t.dot(n,o),a[15]=1,f.multiply(a,e._actualInvTransform,e._viewMatrix),f.inverseTransformation(e._viewMatrix,e._invViewMatrix)}function x(e){var r=e._projection,n=r.ellipsoid,o=f.getColumn(e._transform,3,tt),a=n.cartesianToCartographic(o,K),s=r.project(a,$),l=it;l.x=s.z,l.y=s.x,l.z=s.y,l.w=1;var u=i.add(f.getColumn(e._transform,0,et),o,et);n.cartesianToCartographic(u,a),r.project(a,s);var c=rt;c.x=s.z,c.y=s.x,c.z=s.y,c.w=0,t.subtract(c,l,c);var h=i.add(f.getColumn(e._transform,1,et),o,et);n.cartesianToCartographic(h,a),r.project(a,s);var d=nt;d.x=s.z,d.y=s.x,d.z=s.y,d.w=0,t.subtract(d,l,d);var p=ot;t.cross(c,d,p),t.normalize(p,p),t.cross(d,p,c),t.normalize(c,c),t.cross(p,c,d),t.normalize(d,d),f.setColumn(e._actualTransform,0,c,e._actualTransform),f.setColumn(e._actualTransform,1,d,e._actualTransform),f.setColumn(e._actualTransform,2,p,e._actualTransform),f.setColumn(e._actualTransform,3,l,e._actualTransform)}function T(e){var r=e._projection,n=r.ellipsoid,o=f.getColumn(e._transform,3,tt),a=n.cartesianToCartographic(o,K),s=r.project(a,$),l=it;l.x=s.z,l.y=s.x,l.z=s.y,l.w=1;var u=i.clone(i.UNIT_X,ot),c=i.add(f.getColumn(e._transform,0,et),o,et);n.cartesianToCartographic(c,a),r.project(a,s);var h=rt;h.x=s.z,h.y=s.x,h.z=s.y,h.w=0,t.subtract(h,l,h),h.x=0;var d=nt;if(t.magnitudeSquared(h)>p.EPSILON10)t.cross(u,h,d);else{var m=i.add(f.getColumn(e._transform,1,et),o,et);n.cartesianToCartographic(m,a),r.project(a,s),d.x=s.z,d.y=s.x,d.z=s.y,d.w=0,t.subtract(d,l,d),d.x=0,t.magnitudeSquared(d)p.EPSILON2){n=t.normalize(n,e._direction),t.clone(n,e.direction);var g=1/t.magnitudeSquared(a),_=t.dot(a,n)*g,y=t.multiplyByScalar(n,_,at);a=t.normalize(t.subtract(a,y,e._up),e._up),t.clone(a,e.up),l=t.cross(n,a,e._right),t.clone(l,e.right)}}(o||c)&&(e._directionWC=f.multiplyByPointAsVector(h,n,e._directionWC)),(s||c)&&(e._upWC=f.multiplyByPointAsVector(h,a,e._upWC)),(u||c)&&(e._rightWC=f.multiplyByPointAsVector(h,l,e._rightWC)),(r||o||s||u||c)&&b(e)}function A(e,t){var i;return i=p.equalsEpsilon(Math.abs(e.z),1,p.EPSILON3)?Math.atan2(t.y,t.x)-p.PI_OVER_TWO:Math.atan2(e.y,e.x)-p.PI_OVER_TWO,p.TWO_PI-p.zeroToTwoPi(i)}function D(e){return p.PI_OVER_TWO-p.acosClamped(e.z)}function M(e,t,i){var r=0;return p.equalsEpsilon(Math.abs(e.z),1,p.EPSILON3)||(r=Math.atan2(-i.z,t.z),r=p.zeroToTwoPi(r+p.TWO_PI)),r}function I(e,t){var i=e._maxCoord.x*e.maximumTranslateFactor;t.x>i&&(t.x=i),t.x<-i&&(t.x=-i);var r=e._maxCoord.y*e.maximumTranslateFactor;t.y>r&&(t.y=r),t.y<-r&&(t.y=-r)}function O(e,i){var r=e.position,n=t.normalize(r,Et);if(o(e.constrainedAxis)){var a=t.equalsEpsilon(n,e.constrainedAxis,p.EPSILON2),s=t.equalsEpsilon(n,t.negate(e.constrainedAxis,Tt),p.EPSILON2);if(a||s)(a&&0>i||s&&i>0)&&e.rotate(e.right,i);else{var l=t.normalize(e.constrainedAxis,bt),u=t.dot(n,l),c=p.acosClamped(u);i>0&&i>c&&(i=c-p.EPSILON4),u=t.dot(n,t.negate(l,Tt)),c=p.acosClamped(u),0>i&&-i>c&&(i=-c+p.EPSILON4);var h=t.cross(l,n,xt);e.rotate(h,i)}}else e.rotate(e.right,i)}function R(e,t){o(e.constrainedAxis)?e.rotate(e.constrainedAxis,t):e.rotate(e.up,t)}function L(e,t){var i=e.frustum;t=.5*t;var r=i.right-t,n=i.left+t,o=e._maxCoord.x*e.maximumZoomFactor;r>o&&(r=o,n=-o),n>=r&&(r=1,n=-1);var a=i.top/i.right;i.right=r,i.left=n,i.top=i.right*a,i.bottom=-i.top}function N(e,t){e.move(e.direction,t)}function F(e,i,r){i=p.clamp(i,-p.PI_OVER_TWO,p.PI_OVER_TWO),e=p.zeroToTwoPi(e)-p.PI_OVER_TWO;var n=v.fromAxisAngle(t.UNIT_Y,-i,Dt),o=v.fromAxisAngle(t.UNIT_Z,-e,Mt),a=v.multiply(o,n,o),s=m.fromQuaternion(a,It),l=t.clone(t.UNIT_X,At);return m.multiplyByVector(s,l,l),t.negate(l,l),t.multiplyByScalar(l,r,l),l}function B(e,i,r,n,a){function s(e,i,r,n){var o=Math.abs(t.dot(i,r));return o/n-t.dot(e,r)}o(n)||(n=new t);var l=e;a&&(l=Gt);var u=i.north,h=i.south,d=i.east,m=i.west;m>d&&(d+=p.TWO_PI);var f,v=.5*(m+d);if(h<-p.PI_OVER_TWO+p.RADIANS_PER_DEGREE&&u>p.PI_OVER_TWO-p.RADIANS_PER_DEGREE)f=0;else{var g=Rt;g.longitude=v,g.latitude=u,g.height=0;var _=Lt;_.longitude=v,_.latitude=h,_.height=0;var y=Ot;o(y)&&y.ellipsoid===r||(Ot=y=new c(void 0,void 0,r)),y.setEndPoints(g,_),f=y.interpolateUsingFraction(.5,Rt).latitude}var C=Rt;C.longitude=v,C.latitude=f,C.height=0;var w=r.cartographicToCartesian(C,Ut),S=Rt;S.longitude=d,S.latitude=u;var E=r.cartographicToCartesian(S,Nt);S.longitude=m;var b=r.cartographicToCartesian(S,Bt);S.longitude=v;var x=r.cartographicToCartesian(S,kt);S.latitude=h;var T=r.cartographicToCartesian(S,Vt);S.longitude=d;var P=r.cartographicToCartesian(S,zt);S.longitude=m;var A=r.cartographicToCartesian(S,Ft);t.subtract(b,w,b),t.subtract(P,w,P),t.subtract(E,w,E),t.subtract(A,w,A),t.subtract(x,w,x),t.subtract(T,w,T);var D=r.geodeticSurfaceNormal(w,l.direction);t.negate(D,D);var M=t.cross(D,t.UNIT_Z,l.right);t.normalize(M,M);var I=t.cross(M,D,l.up),O=Math.tan(.5*e.frustum.fovy),R=e.frustum.aspectRatio*O,L=Math.max(s(D,I,b,O),s(D,I,P,O),s(D,I,E,O),s(D,I,A,O),s(D,I,x,O),s(D,I,T,O),s(D,M,b,R),s(D,M,P,R),s(D,M,E,R),s(D,M,A,R),s(D,M,x,R),s(D,M,T,R));if(0>h&&u>0){var N=Rt;N.longitude=m,N.latitude=0,N.height=0;var F=r.cartographicToCartesian(N,Wt);t.subtract(F,w,F),L=Math.max(L,s(D,I,F,O),s(D,M,F,R)),N.longitude=d,F=r.cartographicToCartesian(N,Wt),t.subtract(F,w,F),L=Math.max(L,s(D,I,F,O),s(D,M,F,R))}return t.add(w,t.multiplyByScalar(D,-L,Wt),n)}function z(e,i,r,n,a){var s=i.north,l=i.south,u=i.east,c=i.west,h=e._actualTransform,d=e._actualInvTransform,p=Ht;p.longitude=u,p.latitude=s;var m=r.project(p,qt);f.multiplyByPoint(h,m,m),f.multiplyByPoint(d,m,m),p.longitude=c,p.latitude=l;var v=r.project(p,jt);f.multiplyByPoint(h,v,v),f.multiplyByPoint(d,v,v);var g=Math.tan(.5*e.frustum.fovy),_=e.frustum.aspectRatio*g;if(o(n)||(n=new t),n.x=.5*(m.x-v.x)+v.x,n.y=.5*(m.y-v.y)+v.y,n.z=.5*Math.max((m.x-v.x)/_,(m.y-v.y)/g),!a){var y=t.clone(t.UNIT_Z,e.direction);t.negate(y,y),t.clone(t.UNIT_X,e.right),t.clone(t.UNIT_Y,e.up)}return n}function k(e,i,r,n,a){var s=i.north,l=i.south,u=i.east,c=i.west,h=Yt;h.longitude=u,h.latitude=s;var d=r.project(h,Xt);h.longitude=c,h.latitude=l;var p,m,f=r.project(h,Zt),v=.5*Math.abs(d.x-f.x),g=.5*Math.abs(d.y-f.y),_=e.frustum.right/e.frustum.top,y=g*_;if(v>y?(p=v,m=p/_):(m=g,p=y),g=Math.max(2*p,2*m),o(n)||(n=new t),n.x=.5*(d.x-f.x)+f.x,n.y=.5*(d.y-f.y)+f.y,a)h=r.unproject(n,h),h.height=g,n=r.project(h,n);else{var C=e.frustum;C.right=p,C.left=-p,C.top=m,C.bottom=-m;var w=t.clone(t.UNIT_Z,e.direction);t.negate(w,w),t.clone(t.UNIT_X,e.right),t.clone(t.UNIT_Y,e.up)}return n}function V(e,t,i,r){i=n(i,u.WGS84);var o=e.getPickRay(t,Jt),a=d.rayEllipsoid(o,i);if(!a)return void 0;var s=a.start>0?a.start:a.stop;return g.getPoint(o,s,r)}function U(e,t,i,r){var n=e.getPickRay(t,Qt),o=n.origin;o.z=0;var a=i.unproject(o);return a.latitude<-p.PI_OVER_TWO||a.latitude>p.PI_OVER_TWO||a.longitude<-Math.PI||a.longitude>Math.PI?void 0:i.ellipsoid.cartographicToCartesian(a,r)}function W(e,i,r,n){var o=e.getPickRay(i,Kt),a=-o.origin.x/o.direction.x;g.getPoint(o,a,n);var s=r.unproject(new t(n.y,n.z,0));return s.latitude<-p.PI_OVER_TWO||s.latitude>p.PI_OVER_TWO||s.longitude<-Math.PI||s.longitude>Math.PI?void 0:r.ellipsoid.cartographicToCartesian(s,n)}function G(e,i,r){var n=e._scene.canvas,o=n.clientWidth,a=n.clientHeight,s=Math.tan(.5*e.frustum.fovy),l=e.frustum.aspectRatio*s,u=e.frustum.near,c=2/o*i.x-1,h=2/a*(a-i.y)-1,d=e.positionWC;t.clone(d,r.origin);var p=t.multiplyByScalar(e.directionWC,u,$t);t.add(d,p,p);var m=t.multiplyByScalar(e.rightWC,c*u*l,ei),f=t.multiplyByScalar(e.upWC,h*u*s,ti),v=t.add(p,m,r.direction);return t.add(v,f,v),t.subtract(v,d,v),t.normalize(v,v),r}function H(e,i,r){var n=e._scene.canvas,o=n.clientWidth,a=n.clientHeight,s=2/o*i.x-1;s*=.5*(e.frustum.right-e.frustum.left);var l=2/a*(a-i.y)-1;l*=.5*(e.frustum.top-e.frustum.bottom);var u=r.origin;return t.clone(e.position,u),t.multiplyByScalar(e.right,s,ii),t.add(ii,u,u),t.multiplyByScalar(e.up,l,ii),t.add(ii,u,u),t.clone(e.directionWC,r.direction),r}function q(e,i){var r=e.position,n=r.x<-e._maxCoord.x||r.x>e._maxCoord.x,o=r.y<-e._maxCoord.y||r.y>e._maxCoord.y,a=n||o,s=e.frustum,u=s.top,c=s.bottom,h=s.right,d=s.left,m=e._max2Dfrustum,f=h>e._max2Dfrustum.right;if(a||f){var v=t.clone(r);v.x>e._maxCoord.x?v.x=e._maxCoord.x:v.x<-e._maxCoord.x&&(v.x=-e._maxCoord.x),v.y>e._maxCoord.y?v.y=e._maxCoord.y:v.y<-e._maxCoord.y&&(v.y=-e._maxCoord.y);var g=function(i){a&&(e.position=t.lerp(r,v,i.time,e.position)),f&&(e.frustum.top=p.lerp(u,m.top,i.time),e.frustum.bottom=p.lerp(c,m.bottom,i.time),e.frustum.right=p.lerp(h,m.right,i.time),e.frustum.left=p.lerp(d,m.left,i.time)) +};return{easingFunction:l.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:i,update:g}}return void 0}function j(e,i,r,n,o,a){var s=t.clone(i);r.y>n?s.y-=r.y-n:r.y<-n&&(s.y+=-n-r.y),r.z>o?s.z-=r.z-o:r.z<-o&&(s.z+=-o-r.z);var u=function(r){var n=t.lerp(i,s,r.time,new t);e.worldToCameraCoordinatesPoint(n,e.position)};return{easingFunction:l.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:a,update:u}}function Y(e,i){var r=e.position,n=e.direction,o=e.worldToCameraCoordinatesVector(t.UNIT_X,ri),a=-t.dot(o,r)/t.dot(o,n),s=t.add(r,t.multiplyByScalar(n,a,ni),ni);e.cameraToWorldCoordinatesPoint(s,s),r=e.cameraToWorldCoordinatesPoint(e.position,oi);var l=Math.tan(.5*e.frustum.fovy),u=e.frustum.aspectRatio*l,c=t.magnitude(t.subtract(r,s,ai)),h=u*c,d=l*c,p=e._maxCoord.x,m=e._maxCoord.y,f=Math.max(h-p,p),v=Math.max(d-m,m);if(r.z<-f||r.z>f||r.y<-v||r.y>v){var g=s.y<-f||s.y>f,_=s.z<-v||s.z>v;if(g||_)return j(e,r,s,f,v,i)}return void 0}function X(e,t){var i=e.frustum,r=Math.tan(.5*i.fovy),n=i.aspectRatio*r;return Math.max(t/n,t/r)}function Z(e,t){var i,r,n=e.frustum,o=n.right/n.top,a=t*o;return t>a?(i=t,r=i/o):(r=t,i=a),1.5*Math.max(i,r)}function J(e,t,i){o(i)||(i=w.clone(di));var r=i.range;if(!o(r)||0===r){var n=t.radius;i.range=0===n?pi:e._mode===E.SCENE2D?Z(e,n):X(e,n)}return i}var Q=function(e){this._scene=e,this._transform=f.clone(f.IDENTITY),this._invTransform=f.clone(f.IDENTITY),this._actualTransform=f.clone(f.IDENTITY),this._actualInvTransform=f.clone(f.IDENTITY),this._transformChanged=!1,this.position=new t,this._position=new t,this._positionWC=new t,this._positionCartographic=new r,this.direction=new t,this._direction=new t,this._directionWC=new t,this.up=new t,this._up=new t,this._upWC=new t,this.right=new t,this._right=new t,this._rightWC=new t,this.frustum=new S,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=p.toRadians(60),this.defaultMoveAmount=1e5,this.defaultLookAmount=Math.PI/60,this.defaultRotateAmount=Math.PI/3600,this.defaultZoomAmount=1e5,this.constrainedAxis=void 0,this.maximumTranslateFactor=1.5,this.maximumZoomFactor=2.5,this._moveStart=new h,this._moveEnd=new h,this._viewMatrix=new f,this._invViewMatrix=new f,b(this),this._mode=E.SCENE3D,this._modeChanged=!0;var i=e.mapProjection;this._projection=i,this._maxCoord=i.project(new r(Math.PI,p.PI_OVER_TWO)),this._max2Dfrustum=void 0,this.viewRectangle(Q.DEFAULT_VIEW_RECTANGLE,e.mapProjection.ellipsoid);var n=t.magnitude(this.position);n+=n*Q.DEFAULT_VIEW_FACTOR,t.normalize(this.position,this.position),t.multiplyByScalar(this.position,n,this.position)};Q.TRANSFORM_2D=new f(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),Q.TRANSFORM_2D_INVERSE=f.inverseTransformation(Q.TRANSFORM_2D,new f),Q.DEFAULT_VIEW_RECTANGLE=_.fromDegrees(-95,-20,-70,90),Q.DEFAULT_VIEW_FACTOR=.5;var K=new r,$=new t,et=new t,tt=new i,it=new i,rt=new i,nt=new i,ot=new i,at=new t,st=new f,lt=new f;a(Q.prototype,{transform:{get:function(){return this._transform}},inverseTransform:{get:function(){return P(this),this._invTransform}},viewMatrix:{get:function(){return P(this),this._viewMatrix}},inverseViewMatrix:{get:function(){return P(this),this._invViewMatrix}},positionCartographic:{get:function(){return P(this),this._positionCartographic}},positionWC:{get:function(){return P(this),this._positionWC}},directionWC:{get:function(){return P(this),this._directionWC}},upWC:{get:function(){return P(this),this._upWC}},rightWC:{get:function(){return P(this),this._rightWC}},heading:{get:function(){if(this._mode!==E.MORPHING){this.positionWC;var e=this._projection.ellipsoid,t=f.clone(this._transform,st),i=y.eastNorthUpToFixedFrame(this.positionWC,e,lt);this._setTransform(i);var r=A(this.direction,this.up);return this._setTransform(t),r}return void 0}},pitch:{get:function(){if(this._mode!==E.MORPHING){this.positionWC;var e=this._projection.ellipsoid,t=f.clone(this._transform,st),i=y.eastNorthUpToFixedFrame(this.positionWC,e,lt);this._setTransform(i);var r=D(this.direction);return this._setTransform(t),r}return void 0}},roll:{get:function(){if(this._mode!==E.MORPHING){this.positionWC;var e=this._projection.ellipsoid,t=f.clone(this._transform,st),i=y.eastNorthUpToFixedFrame(this.positionWC,e,lt);this._setTransform(i);var r=M(this.direction,this.up,this.right);return this._setTransform(t),r}return void 0}},moveStart:{get:function(){return this._moveStart}},moveEnd:{get:function(){return this._moveEnd}}}),Q.prototype.update=function(e){var t=!1;if(e!==this._mode&&(this._mode=e,this._modeChanged=e!==E.MORPHING,t=this._mode===E.SCENE2D),t){var i=this._max2Dfrustum=this.frustum.clone(),r=2,n=i.top/i.right;i.right=this._maxCoord.x*r,i.left=-i.right,i.top=n*i.right,i.bottom=-i.top}};var ut=new t,ct=new t,ht=new t;Q.prototype._setTransform=function(e){var i=t.clone(this.positionWC,ut),r=t.clone(this.upWC,ct),n=t.clone(this.directionWC,ht);f.clone(e,this._transform),this._transformChanged=!0,P(this);var o=this._actualInvTransform;f.multiplyByPoint(o,i,this.position),f.multiplyByPointAsVector(o,n,this.direction),f.multiplyByPointAsVector(o,r,this.up),t.cross(this.direction,this.up,this.right)};var dt=new t,pt=new f,mt=new f,ft=new v,vt=new m,gt=new r;Q.prototype.setView=function(i){if(this._mode!==E.MORPHING){i=n(i,n.EMPTY_OBJECT);var r=this._mode===E.SCENE2D,a=n(i.heading,this.heading),s=r?-p.PI_OVER_TWO:n(i.pitch,this.pitch),l=r?0:n(i.roll,this.roll),u=i.position,c=i.positionCartographic,h=this._projection,d=h.ellipsoid;o(u)||(u=o(c)?d.cartographicToCartesian(c,dt):t.clone(this.positionWC,dt));var g=f.clone(this.transform,pt),_=y.eastNorthUpToFixedFrame(u,d,mt);if(this._setTransform(_),r){e.clone(t.ZERO,this.position);var C=d.cartesianToCartographic(u,gt),w=.5*-C.height,S=-w,b=this.frustum;if(S>w){var x=b.top/b.right;b.right=S,b.left=w,b.top=b.right*x,b.bottom=-b.top}}else t.clone(t.ZERO,this.position);var T=v.fromHeadingPitchRoll(a-p.PI_OVER_TWO,s,l,ft),P=m.fromQuaternion(T,vt);m.getColumn(P,0,this.direction),m.getColumn(P,2,this.up),t.cross(this.direction,this.up,this.right),this._setTransform(g)}},Q.prototype.worldToCameraCoordinates=function(e,t){return o(t)||(t=new i),P(this),f.multiplyByVector(this._actualInvTransform,e,t)},Q.prototype.worldToCameraCoordinatesPoint=function(e,i){return o(i)||(i=new t),P(this),f.multiplyByPoint(this._actualInvTransform,e,i)},Q.prototype.worldToCameraCoordinatesVector=function(e,i){return o(i)||(i=new t),P(this),f.multiplyByPointAsVector(this._actualInvTransform,e,i)},Q.prototype.cameraToWorldCoordinates=function(e,t){return o(t)||(t=new i),P(this),f.multiplyByVector(this._actualTransform,e,t)},Q.prototype.cameraToWorldCoordinatesPoint=function(e,i){return o(i)||(i=new t),P(this),f.multiplyByPoint(this._actualTransform,e,i)},Q.prototype.cameraToWorldCoordinatesVector=function(e,i){return o(i)||(i=new t),P(this),f.multiplyByPointAsVector(this._actualTransform,e,i)};var _t=new t;Q.prototype.move=function(e,i){var r=this.position;t.multiplyByScalar(e,i,_t),t.add(r,_t,r),this._mode===E.SCENE2D&&I(this,r)},Q.prototype.moveForward=function(e){e=n(e,this.defaultMoveAmount),this.move(this.direction,e)},Q.prototype.moveBackward=function(e){e=n(e,this.defaultMoveAmount),this.move(this.direction,-e)},Q.prototype.moveUp=function(e){e=n(e,this.defaultMoveAmount),this.move(this.up,e)},Q.prototype.moveDown=function(e){e=n(e,this.defaultMoveAmount),this.move(this.up,-e)},Q.prototype.moveRight=function(e){e=n(e,this.defaultMoveAmount),this.move(this.right,e)},Q.prototype.moveLeft=function(e){e=n(e,this.defaultMoveAmount),this.move(this.right,-e)},Q.prototype.lookLeft=function(e){e=n(e,this.defaultLookAmount),this.look(this.up,-e)},Q.prototype.lookRight=function(e){e=n(e,this.defaultLookAmount),this.look(this.up,e)},Q.prototype.lookUp=function(e){e=n(e,this.defaultLookAmount),this.look(this.right,-e)},Q.prototype.lookDown=function(e){e=n(e,this.defaultLookAmount),this.look(this.right,e)};var yt=new v,Ct=new m;Q.prototype.look=function(e,t){var i=n(t,this.defaultLookAmount),r=v.fromAxisAngle(e,-i,yt),o=m.fromQuaternion(r,Ct),a=this.direction,s=this.up,l=this.right;m.multiplyByVector(o,a,a),m.multiplyByVector(o,s,s),m.multiplyByVector(o,l,l)},Q.prototype.twistLeft=function(e){e=n(e,this.defaultLookAmount),this.look(this.direction,e)},Q.prototype.twistRight=function(e){e=n(e,this.defaultLookAmount),this.look(this.direction,-e)};var wt=new v,St=new m;Q.prototype.rotate=function(e,i){var r=n(i,this.defaultRotateAmount),o=v.fromAxisAngle(e,-r,wt),a=m.fromQuaternion(o,St);m.multiplyByVector(a,this.position,this.position),m.multiplyByVector(a,this.direction,this.direction),m.multiplyByVector(a,this.up,this.up),t.cross(this.direction,this.up,this.right),t.cross(this.right,this.direction,this.up)},Q.prototype.rotateDown=function(e){e=n(e,this.defaultRotateAmount),O(this,e)},Q.prototype.rotateUp=function(e){e=n(e,this.defaultRotateAmount),O(this,-e)};var Et=new t,bt=new t,xt=new t,Tt=new t;Q.prototype.rotateRight=function(e){e=n(e,this.defaultRotateAmount),R(this,-e)},Q.prototype.rotateLeft=function(e){e=n(e,this.defaultRotateAmount),R(this,e)},Q.prototype.zoomIn=function(e){e=n(e,this.defaultZoomAmount),this._mode===E.SCENE2D?L(this,e):N(this,e)},Q.prototype.zoomOut=function(e){e=n(e,this.defaultZoomAmount),this._mode===E.SCENE2D?L(this,-e):N(this,-e)},Q.prototype.getMagnitude=function(){return this._mode===E.SCENE3D?t.magnitude(this.position):this._mode===E.COLUMBUS_VIEW?Math.abs(this.position.z):this._mode===E.SCENE2D?Math.max(this.frustum.right-this.frustum.left,this.frustum.top-this.frustum.bottom):void 0};var Pt=new f;new f,Q.prototype.lookAt=function(e,t){var i=y.eastNorthUpToFixedFrame(e,u.WGS84,Pt);this.lookAtTransform(i,t)};var At=new t,Dt=new v,Mt=new v,It=new m;Q.prototype.lookAtTransform=function(i,r){if(this._setTransform(i),o(r)){var n;if(n=o(r.heading)?F(r.heading,r.pitch,r.range):r,this._mode===E.SCENE2D){e.clone(e.ZERO,this.position),t.negate(n,this.up),this.up.z=0,t.magnitudeSquared(this.up)i.east&&(i=_.MAX_VALUE),i=r.camera.getRectangleCameraCoordinates(i,si));var s,l,u,c=n(e.orientation,n.EMPTY_OBJECT);if(o(c.heading))s=c.heading,l=c.pitch,u=c.roll;else if(o(c.direction)){var h=t.clone(c.direction,ui),d=t.clone(c.up,ci);if(r.mode===E.SCENE3D){var p=this._projection.ellipsoid,m=y.eastNorthUpToFixedFrame(i,p,st),v=f.inverseTransformation(m,lt);f.multiplyByPointAsVector(v,h,h),f.multiplyByPointAsVector(v,d,d)}var g=t.cross(h,d,hi);s=A(h,d),l=D(h),u=M(h,d,g)}li.destination=i,li.heading=s,li.pitch=l,li.roll=u,li.duration=e.duration,li.complete=e.complete,li.cancel=e.cancel,li.endTransform=e.endTransform,li.convert=a?!1:e.convert,li.maximumHeight=e.maximumHeight,li.easingFunction=e.easingFunction,r.tweens.add(C.createTween(r,li))};var di=new w(0,-p.PI_OVER_FOUR,0),pi=100;Q.prototype.viewBoundingSphere=function(e,t){if(this._mode===E.MORPHING)throw new s("viewBoundingSphere is not supported while morphing.");t=J(this,e,t),this.lookAt(e.center,t)};var mi=new f,fi=new t,vi=new t,gi=new t,_i=new t,yi=new i,Ci=new v,wi=new m;return Q.prototype.flyToBoundingSphere=function(e,i){i=n(i,n.EMPTY_OBJECT);var r=this._mode===E.SCENE2D||this._mode===E.COLUMBUS_VIEW;this._setTransform(f.IDENTITY);var o,a=J(this,e,i.offset);o=r?t.multiplyByScalar(t.UNIT_Z,a.range,fi):F(a.heading,a.pitch,a.range);var s=y.eastNorthUpToFixedFrame(e.center,u.WGS84,mi);f.multiplyByPoint(s,o,o);var l,c;if(!r){if(l=t.subtract(e.center,o,vi),t.normalize(l,l),c=f.multiplyByPointAsVector(s,t.UNIT_Z,gi),1-Math.abs(t.dot(l,c))=r+Math.PI;)i-=l;for(;i0||e}}}),g.prototype.isMoving=function(e,t){var i=c(e,t);return!this._update[i]},g.prototype.getMovement=function(e,t){var i=c(e,t),r=this._movement[i];return r},g.prototype.getLastMovement=function(e,t){var i=c(e,t),r=this._lastMovement[i];return r.valid?r:void 0},g.prototype.isButtonDown=function(e,t){var i=c(e,t);return this._isDown[i]},g.prototype.getStartMousePosition=function(e,t){if(e===u.WHEEL||e===u.PINCH)return this._currentMousePosition;var i=c(e,t);return this._eventStartPosition[i]},g.prototype.getButtonPressTime=function(e,t){var i=c(e,t);return this._pressTime[i]},g.prototype.getButtonReleaseTime=function(e,t){var i=c(e,t);return this._releaseTime[i]},g.prototype.reset=function(){for(var e in this._update)this._update.hasOwnProperty(e)&&(this._update[e]=!0)},g.prototype.isDestroyed=function(){return!1},g.prototype.destroy=function(){return this._eventHandler=this._eventHandler&&this._eventHandler.destroy(),r(this)},g}),i("Scene/CreditDisplay",["../Core/Credit","../Core/defaultValue","../Core/defined","../Core/destroyObject","../Core/DeveloperError"],function(e,t,i,r){"use strict";function n(e,t,r){if(!i(e.element)){var n=e.text,o=e.link,a=document.createElement("span");if(e.hasLink()){var s=document.createElement("a");s.textContent=n,s.href=o,s.target="_blank",a.appendChild(s)}else a.textContent=n;a.className="cesium-credit-text",e.element=a}if(t.hasChildNodes()){var l=document.createElement("span");l.textContent=r,l.className="cesium-credit-delimiter",t.appendChild(l)}t.appendChild(e.element)}function o(e,t){if(!i(e.element)){var r=e.text,n=e.link,o=document.createElement("span"),a=document.createElement("img");if(a.src=e.imageUrl,a.style["vertical-align"]="bottom",i(r)&&(a.alt=r,a.title=r),e.hasLink()){var s=document.createElement("a");s.appendChild(a),s.href=n,s.target="_blank",o.appendChild(s)}else o.appendChild(a);o.className="cesium-credit-image",e.element=o}t.appendChild(e.element)}function a(t,i){for(var r=t.length,n=0;r>n;n++){var o=t[n];if(e.equals(o,i))return!0}return!1}function s(e){var t=e.element;if(i(t)){var r=t.parentNode;if(!e.hasImage()){var n=t.previousSibling;null===n&&(n=t.nextSibling),null!==n&&r.removeChild(n)}r.removeChild(t)}}function l(e,t){var r,o,a,l=e._displayedCredits.textCredits;for(r=0;r= 0.0) {\nt1 = (-b - sqrt(discriminant)) * 0.5;\nt2 = (-b + sqrt(discriminant)) * 0.5;\n}\nif (t1 < 0.0 && t2 < 0.0) {\ndiscard;\n}\nfloat t = min(t1, t2);\nif (t < 0.0) {\nt = 0.0;\n}\nczm_ellipsoid ellipsoid = czm_ellipsoidNew(ellipsoidCenter, u_radii);\nczm_ray ray = czm_ray(t * direction, direction);\nczm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid);\nif (czm_isEmpty(intersection))\n{\ndiscard;\n}\nvec4 outsideFaceColor = (intersection.start != 0.0) ? computeEllipsoidColor(ray, intersection.start, 1.0) : vec4(0.0);\nvec4 insideFaceColor = (outsideFaceColor.a < 1.0) ? computeEllipsoidColor(ray, intersection.stop, -1.0) : vec4(0.0);\ngl_FragColor = mix(insideFaceColor, outsideFaceColor, outsideFaceColor.a);\ngl_FragColor.a = 1.0 - (1.0 - insideFaceColor.a) * (1.0 - outsideFaceColor.a);\n#ifdef WRITE_DEPTH\n#ifdef GL_EXT_frag_depth\nt = (intersection.start != 0.0) ? intersection.start : intersection.stop;\nvec3 positionEC = czm_pointAlongRay(ray, t);\nvec4 positionCC = czm_projection * vec4(positionEC, 1.0);\nfloat z = positionCC.z / positionCC.w;\nfloat n = czm_depthRange.near;\nfloat f = czm_depthRange.far;\ngl_FragDepthEXT = (z * (f - n) + f + n) * 0.5;\n#endif\n#endif\n}\n"}),i("Shaders/EllipsoidVS",[],function(){"use strict";return"attribute vec3 position;\nuniform vec3 u_radii;\nvarying vec3 v_positionEC;\nvoid main()\n{\nvec4 p = vec4(u_radii * position, 1.0);\nv_positionEC = (czm_modelView * p).xyz;\ngl_Position = czm_modelViewProjection * p;\ngl_Position.z = clamp(gl_Position.z, czm_depthRange.near, czm_depthRange.far);\n}\n"}),i("Scene/EllipsoidPrimitive",["../Core/BoundingSphere","../Core/BoxGeometry","../Core/Cartesian3","../Core/combine","../Core/defaultValue","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/Matrix4","../Core/VertexFormat","../Renderer/BufferUsage","../Renderer/DrawCommand","../Renderer/ShaderSource","../Shaders/EllipsoidFS","../Shaders/EllipsoidVS","./BlendingState","./CullFace","./Material","./Pass","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y){"use strict";function C(e){var r=e.cache.ellipsoidPrimitive_vertexArray;if(o(r))return r;var n=t.createGeometry(t.fromDimensions({dimensions:new i(2,2,2),vertexFormat:u.POSITION_ONLY}));return r=e.createVertexArrayFromGeometry({geometry:n,attributeLocations:w,bufferUsage:c.STATIC_DRAW,interleave:!0}),e.cache.ellipsoidPrimitive_vertexArray=r,r}var w={position:0},S=function(t){t=n(t,n.EMPTY_OBJECT),this.center=i.clone(n(t.center,i.ZERO)),this._center=new i,this.radii=i.clone(t.radii),this._radii=new i,this._oneOverEllipsoidRadiiSquared=new i,this._boundingSphere=new e,this.modelMatrix=l.clone(n(t.modelMatrix,l.IDENTITY)),this._modelMatrix=new l,this._computedModelMatrix=new l,this.show=n(t.show,!0),this.material=n(t.material,g.fromType(g.ColorType)),this._material=void 0,this._translucent=void 0,this.id=t.id,this._id=void 0,this.debugShowBoundingVolume=n(t.debugShowBoundingVolume,!1),this.onlySunLighting=n(t.onlySunLighting,!1),this._onlySunLighting=!1,this._depthTestEnabled=n(t.depthTestEnabled,!0),this._sp=void 0,this._rs=void 0,this._va=void 0,this._pickSP=void 0,this._pickId=void 0,this._colorCommand=new h({owner:n(t._owner,this)}),this._pickCommand=new h({owner:n(t._owner,this)}); +var r=this;this._uniforms={u_radii:function(){return r.radii},u_oneOverEllipsoidRadiiSquared:function(){return r._oneOverEllipsoidRadiiSquared}},this._pickUniforms={czm_pickColor:function(){return r._pickId.color}}};return S.prototype.update=function(t,n,a){if(this.show&&n.mode===y.SCENE3D&&o(this.center)&&o(this.radii)){var s=this.material.isTranslucent(),u=this._translucent!==s;(!o(this._rs)||u)&&(this._translucent=s,this._rs=t.createRenderState({cull:{enabled:!0,face:v.FRONT},depthTest:{enabled:this._depthTestEnabled},depthMask:!s&&t.fragmentDepth,blending:s?f.ALPHA_BLEND:void 0})),o(this._va)||(this._va=C(t));var c=!1,h=this.radii;if(!i.equals(this._radii,h)){i.clone(h,this._radii);var g=this._oneOverEllipsoidRadiiSquared;g.x=1/(h.x*h.x),g.y=1/(h.y*h.y),g.z=1/(h.z*h.z),c=!0}l.equals(this.modelMatrix,this._modelMatrix)&&i.equals(this.center,this._center)||(l.clone(this.modelMatrix,this._modelMatrix),i.clone(this.center,this._center),l.multiplyByTranslation(this.modelMatrix,this.center,this._computedModelMatrix),c=!0),c&&(i.clone(i.ZERO,this._boundingSphere.center),this._boundingSphere.radius=i.maximumComponent(h),e.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphere));var S=this._material!==this.material;this._material=this.material,this._material.update(t);var E=this.onlySunLighting!==this._onlySunLighting;this._onlySunLighting=this.onlySunLighting;var b,x=this._colorCommand;(S||E||u)&&(b=new d({sources:[this.material.shaderSource,p]}),this.onlySunLighting&&b.defines.push("ONLY_SUN_LIGHTING"),!s&&t.fragmentDepth&&b.defines.push("WRITE_DEPTH"),this._sp=t.replaceShaderProgram(this._sp,m,b,w),x.vertexArray=this._va,x.renderState=this._rs,x.shaderProgram=this._sp,x.uniformMap=r(this._uniforms,this.material._uniforms),x.executeInClosestFrustum=s);var T=n.passes;if(T.render&&(x.boundingVolume=this._boundingSphere,x.debugShowBoundingVolume=this.debugShowBoundingVolume,x.modelMatrix=this._computedModelMatrix,x.pass=s?_.TRANSLUCENT:_.OPAQUE,a.push(x)),T.pick){var P=this._pickCommand;o(this._pickId)&&this._id===this.id||(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=t.createPickId({primitive:this,id:this.id})),(S||E||!o(this._pickSP))&&(b=new d({sources:[this.material.shaderSource,p],pickColorQualifier:"uniform"}),this.onlySunLighting&&b.defines.push("ONLY_SUN_LIGHTING"),!s&&t.fragmentDepth&&b.defines.push("WRITE_DEPTH"),this._pickSP=t.replaceShaderProgram(this._pickSP,m,b,w),P.vertexArray=this._va,P.renderState=this._rs,P.shaderProgram=this._pickSP,P.uniformMap=r(r(this._uniforms,this._pickUniforms),this.material._uniforms),P.executeInClosestFrustum=s),P.boundingVolume=this._boundingSphere,P.modelMatrix=this._computedModelMatrix,P.pass=s?_.TRANSLUCENT:_.OPAQUE,a.push(P)}}},S.prototype.isDestroyed=function(){return!1},S.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),a(this)},S}),i("Shaders/Appearances/EllipsoidSurfaceAppearanceFS",[],function(){"use strict";return"varying vec3 v_positionMC;\nvarying vec3 v_positionEC;\nvarying vec2 v_st;\nvoid main()\n{\nczm_materialInput materialInput;\nvec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)));\n#ifdef FACE_FORWARD\nnormalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);\n#endif\nmaterialInput.s = v_st.s;\nmaterialInput.st = v_st;\nmaterialInput.str = vec3(v_st, 0.0);\nmaterialInput.normalEC = normalEC;\nmaterialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC);\nvec3 positionToEyeEC = -v_positionEC;\nmaterialInput.positionToEyeEC = positionToEyeEC;\nczm_material material = czm_getMaterial(materialInput);\n#ifdef FLAT\ngl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n#else\ngl_FragColor = czm_phong(normalize(positionToEyeEC), material);\n#endif\n}\n"}),i("Shaders/Appearances/EllipsoidSurfaceAppearanceVS",[],function(){"use strict";return"attribute vec3 position3DHigh;\nattribute vec3 position3DLow;\nattribute vec2 st;\nvarying vec3 v_positionMC;\nvarying vec3 v_positionEC;\nvarying vec2 v_st;\nvoid main()\n{\nvec4 p = czm_computePosition();\nv_positionMC = position3DHigh + position3DLow;\nv_positionEC = (czm_modelViewRelativeToEye * p).xyz;\nv_st = st;\ngl_Position = czm_modelViewProjectionRelativeToEye * p;\n}\n"}),i("Scene/EllipsoidSurfaceAppearance",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/VertexFormat","../Shaders/Appearances/EllipsoidSurfaceAppearanceFS","../Shaders/Appearances/EllipsoidSurfaceAppearanceVS","./Appearance","./Material"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(i){i=e(i,e.EMPTY_OBJECT);var r=e(i.translucent,!0),l=e(i.aboveGround,!1);this.material=t(i.material)?i.material:s.fromType(s.ColorType),this.translucent=e(i.translucent,!0),this._vertexShaderSource=e(i.vertexShaderSource,o),this._fragmentShaderSource=e(i.fragmentShaderSource,n),this._renderState=a.getDefaultRenderState(r,!l,i.renderState),this._closed=!1,this._flat=e(i.flat,!1),this._faceForward=e(i.faceForward,l),this._aboveGround=l};return i(l.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return l.VERTEX_FORMAT}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}},aboveGround:{get:function(){return this._aboveGround}}}),l.VERTEX_FORMAT=r.POSITION_AND_ST,l.prototype.getFragmentShaderSource=a.prototype.getFragmentShaderSource,l.prototype.isTranslucent=a.prototype.isTranslucent,l.prototype.getRenderState=a.prototype.getRenderState,l}),i("Shaders/PostProcessFilters/FXAA",[],function(){"use strict";return"#ifndef FXAA_PRESET\n#define FXAA_PRESET 3\n#endif\n#if (FXAA_PRESET == 3)\n#define FXAA_EDGE_THRESHOLD (1.0/8.0)\n#define FXAA_EDGE_THRESHOLD_MIN (1.0/24.0)\n#define FXAA_SEARCH_STEPS 16\n#define FXAA_SEARCH_THRESHOLD (1.0/4.0)\n#define FXAA_SUBPIX_CAP (3.0/4.0)\n#define FXAA_SUBPIX_TRIM (1.0/4.0)\n#endif\n#if (FXAA_PRESET == 4)\n#define FXAA_EDGE_THRESHOLD (1.0/8.0)\n#define FXAA_EDGE_THRESHOLD_MIN (1.0/24.0)\n#define FXAA_SEARCH_STEPS 24\n#define FXAA_SEARCH_THRESHOLD (1.0/4.0)\n#define FXAA_SUBPIX_CAP (3.0/4.0)\n#define FXAA_SUBPIX_TRIM (1.0/4.0)\n#endif\n#if (FXAA_PRESET == 5)\n#define FXAA_EDGE_THRESHOLD (1.0/8.0)\n#define FXAA_EDGE_THRESHOLD_MIN (1.0/24.0)\n#define FXAA_SEARCH_STEPS 32\n#define FXAA_SEARCH_THRESHOLD (1.0/4.0)\n#define FXAA_SUBPIX_CAP (3.0/4.0)\n#define FXAA_SUBPIX_TRIM (1.0/4.0)\n#endif\n#define FXAA_SUBPIX_TRIM_SCALE (1.0/(1.0 - FXAA_SUBPIX_TRIM))\nfloat FxaaLuma(vec3 rgb) {\nreturn rgb.y * (0.587/0.299) + rgb.x;\n}\nvec3 FxaaLerp3(vec3 a, vec3 b, float amountOfA) {\nreturn (vec3(-amountOfA) * b) + ((a * vec3(amountOfA)) + b);\n}\nvec4 FxaaTexOff(sampler2D tex, vec2 pos, ivec2 off, vec2 rcpFrame) {\nfloat x = pos.x + float(off.x) * rcpFrame.x;\nfloat y = pos.y + float(off.y) * rcpFrame.y;\nreturn texture2D(tex, vec2(x, y));\n}\nvec3 FxaaPixelShader(vec2 pos, sampler2D tex, vec2 rcpFrame)\n{\nvec3 rgbN = FxaaTexOff(tex, pos.xy, ivec2( 0,-1), rcpFrame).xyz;\nvec3 rgbW = FxaaTexOff(tex, pos.xy, ivec2(-1, 0), rcpFrame).xyz;\nvec3 rgbM = FxaaTexOff(tex, pos.xy, ivec2( 0, 0), rcpFrame).xyz;\nvec3 rgbE = FxaaTexOff(tex, pos.xy, ivec2( 1, 0), rcpFrame).xyz;\nvec3 rgbS = FxaaTexOff(tex, pos.xy, ivec2( 0, 1), rcpFrame).xyz;\nfloat lumaN = FxaaLuma(rgbN);\nfloat lumaW = FxaaLuma(rgbW);\nfloat lumaM = FxaaLuma(rgbM);\nfloat lumaE = FxaaLuma(rgbE);\nfloat lumaS = FxaaLuma(rgbS);\nfloat rangeMin = min(lumaM, min(min(lumaN, lumaW), min(lumaS, lumaE)));\nfloat rangeMax = max(lumaM, max(max(lumaN, lumaW), max(lumaS, lumaE)));\nfloat range = rangeMax - rangeMin;\nif(range < max(FXAA_EDGE_THRESHOLD_MIN, rangeMax * FXAA_EDGE_THRESHOLD))\n{\nreturn rgbM;\n}\nvec3 rgbL = rgbN + rgbW + rgbM + rgbE + rgbS;\nfloat lumaL = (lumaN + lumaW + lumaE + lumaS) * 0.25;\nfloat rangeL = abs(lumaL - lumaM);\nfloat blendL = max(0.0, (rangeL / range) - FXAA_SUBPIX_TRIM) * FXAA_SUBPIX_TRIM_SCALE;\nblendL = min(FXAA_SUBPIX_CAP, blendL);\nvec3 rgbNW = FxaaTexOff(tex, pos.xy, ivec2(-1,-1), rcpFrame).xyz;\nvec3 rgbNE = FxaaTexOff(tex, pos.xy, ivec2( 1,-1), rcpFrame).xyz;\nvec3 rgbSW = FxaaTexOff(tex, pos.xy, ivec2(-1, 1), rcpFrame).xyz;\nvec3 rgbSE = FxaaTexOff(tex, pos.xy, ivec2( 1, 1), rcpFrame).xyz;\nrgbL += (rgbNW + rgbNE + rgbSW + rgbSE);\nrgbL *= vec3(1.0/9.0);\nfloat lumaNW = FxaaLuma(rgbNW);\nfloat lumaNE = FxaaLuma(rgbNE);\nfloat lumaSW = FxaaLuma(rgbSW);\nfloat lumaSE = FxaaLuma(rgbSE);\nfloat edgeVert =\nabs((0.25 * lumaNW) + (-0.5 * lumaN) + (0.25 * lumaNE)) +\nabs((0.50 * lumaW ) + (-1.0 * lumaM) + (0.50 * lumaE )) +\nabs((0.25 * lumaSW) + (-0.5 * lumaS) + (0.25 * lumaSE));\nfloat edgeHorz =\nabs((0.25 * lumaNW) + (-0.5 * lumaW) + (0.25 * lumaSW)) +\nabs((0.50 * lumaN ) + (-1.0 * lumaM) + (0.50 * lumaS )) +\nabs((0.25 * lumaNE) + (-0.5 * lumaE) + (0.25 * lumaSE));\nbool horzSpan = edgeHorz >= edgeVert;\nfloat lengthSign = horzSpan ? -rcpFrame.y : -rcpFrame.x;\nif(!horzSpan)\n{\nlumaN = lumaW;\nlumaS = lumaE;\n}\nfloat gradientN = abs(lumaN - lumaM);\nfloat gradientS = abs(lumaS - lumaM);\nlumaN = (lumaN + lumaM) * 0.5;\nlumaS = (lumaS + lumaM) * 0.5;\nif (gradientN < gradientS)\n{\nlumaN = lumaS;\nlumaN = lumaS;\ngradientN = gradientS;\nlengthSign *= -1.0;\n}\nvec2 posN;\nposN.x = pos.x + (horzSpan ? 0.0 : lengthSign * 0.5);\nposN.y = pos.y + (horzSpan ? lengthSign * 0.5 : 0.0);\ngradientN *= FXAA_SEARCH_THRESHOLD;\nvec2 posP = posN;\nvec2 offNP = horzSpan ? vec2(rcpFrame.x, 0.0) : vec2(0.0, rcpFrame.y);\nfloat lumaEndN = lumaN;\nfloat lumaEndP = lumaN;\nbool doneN = false;\nbool doneP = false;\nposN += offNP * vec2(-1.0, -1.0);\nposP += offNP * vec2( 1.0, 1.0);\nfor(int i = 0; i < FXAA_SEARCH_STEPS; i++) {\nif(!doneN)\n{\nlumaEndN = FxaaLuma(texture2D(tex, posN.xy).xyz);\n}\nif(!doneP)\n{\nlumaEndP = FxaaLuma(texture2D(tex, posP.xy).xyz);\n}\ndoneN = doneN || (abs(lumaEndN - lumaN) >= gradientN);\ndoneP = doneP || (abs(lumaEndP - lumaN) >= gradientN);\nif(doneN && doneP)\n{\nbreak;\n}\nif(!doneN)\n{\nposN -= offNP;\n}\nif(!doneP)\n{\nposP += offNP;\n}\n}\nfloat dstN = horzSpan ? pos.x - posN.x : pos.y - posN.y;\nfloat dstP = horzSpan ? posP.x - pos.x : posP.y - pos.y;\nbool directionN = dstN < dstP;\nlumaEndN = directionN ? lumaEndN : lumaEndP;\nif(((lumaM - lumaN) < 0.0) == ((lumaEndN - lumaN) < 0.0))\n{\nlengthSign = 0.0;\n}\nfloat spanLength = (dstP + dstN);\ndstN = directionN ? dstN : dstP;\nfloat subPixelOffset = (0.5 + (dstN * (-1.0/spanLength))) * lengthSign;\nvec3 rgbF = texture2D(tex, vec2(\npos.x + (horzSpan ? 0.0 : subPixelOffset),\npos.y + (horzSpan ? subPixelOffset : 0.0))).xyz;\nreturn FxaaLerp3(rgbL, rgbF, blendL);\n}\nuniform sampler2D u_texture;\nuniform vec2 u_step;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\ngl_FragColor = vec4(FxaaPixelShader(v_textureCoordinates, u_texture, u_step), 1.0);\n}\n"}),i("Scene/FXAA",["../Core/Cartesian2","../Core/Color","../Core/defined","../Core/destroyObject","../Core/PixelFormat","../Renderer/ClearCommand","../Renderer/PixelDatatype","../Renderer/RenderbufferFormat","../Shaders/PostProcessFilters/FXAA"],function(e,t,i,r,n,o,a,s,l){"use strict";function u(e,t,i,r){e._fbo=e._fbo&&e._fbo.destroy();var o,l,u=t.createTexture2D({width:i,height:r,pixelFormat:n.RGBA,pixelDatatype:a.UNSIGNED_BYTE});t.depthTexture?o=t.createTexture2D({width:i,height:r,pixelFormat:n.DEPTH_COMPONENT,pixelDatatype:a.UNSIGNED_SHORT}):l=t.createRenderbuffer({width:i,height:r,format:s.DEPTH_COMPONENT16}),e._fbo=t.createFramebuffer({colorTextures:[u],depthTexture:o,depthRenderbuffer:l})}var c=function(){this._texture=void 0,this._fbo=void 0,this._command=void 0,this._clearCommand=void 0,this._step=new e};return c.prototype.update=function(e,r){var n=e.drawingBufferWidth,a=e.drawingBufferHeight;if(i(this._fbo)||u(this,e,n,a),i(r))this._texture=r;else{var s=this._fbo.getColorTexture(0),c=s.width,h=s.height;(c!==n||h!==a)&&u(this,e,n,a),this._texture=s}if(this._step.x=1/this._texture.width,this._step.y=1/this._texture.height,i(this._clearCommand)||(this._clearCommand=new o({color:new t(0,0,0,0),depth:1,owner:this})),!i(this._command)){var d=this;this._command=e.createViewportQuadCommand(l,{renderState:e.createRenderState(),uniformMap:{u_texture:function(){return d._texture},u_step:function(){return d._step}},owner:this})}},c.prototype.execute=function(e,t){this._command.execute(e,t)},c.prototype.clear=function(e,i,r){var n=i.framebuffer;i.framebuffer=this._fbo,t.clone(r,this._clearCommand.color),this._clearCommand.execute(e,i),i.framebuffer=n},c.prototype.getColorFramebuffer=function(){return this._fbo},c.prototype.isDestroyed=function(){return!1},c.prototype.destroy=function(){return this._fbo=this._fbo&&this._fbo.destroy(),i(this._command)&&(this._command.shaderProgram=this._command.shaderProgram&&this._command.shaderProgram.destroy()),r(this)},c}),i("Scene/FrameRateMonitor",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../Core/getTimestamp","../Core/TimeConstants"],function(e,t,i,r,n,o,a,s){"use strict";function l(e){if(!(e._pauseCount>0)){var t=a();if(e._needsQuietPeriod)e._needsQuietPeriod=!1,e._frameTimes.length=0,e._quietPeriodEndTime=t+e.quietPeriod/s.SECONDS_PER_MILLISECOND,e._warmupPeriodEndTime=e._quietPeriodEndTime+(e.warmupPeriod+e.samplingWindow)/s.SECONDS_PER_MILLISECOND;else if(t>=e._quietPeriodEndTime){e._frameTimes.push(t);var i=t-e.samplingWindow/s.SECONDS_PER_MILLISECOND;if(e._frameTimes.length>=2&&e._frameTimes[0]<=i){for(;e._frameTimes.length>=2&&e._frameTimes[1]e._warmupPeriodEndTime?e.minimumFrameRateAfterWarmup:e.minimumFrameRateDuringWarmup);r>n?e._frameRateIsLow||(e._frameRateIsLow=!0,e._needsQuietPeriod=!0,e.lowFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond)):e._frameRateIsLow&&(e._frameRateIsLow=!1,e._needsQuietPeriod=!0,e.nominalFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond))}}}}function u(e){document[e._hiddenPropertyName]?e.pause():e.unpause()}var c=function(i){function r(){u(n)}this._scene=i.scene,this.samplingWindow=e(i.samplingWindow,c.defaultSettings.samplingWindow),this.quietPeriod=e(i.quietPeriod,c.defaultSettings.quietPeriod),this.warmupPeriod=e(i.warmupPeriod,c.defaultSettings.warmupPeriod),this.minimumFrameRateDuringWarmup=e(i.minimumFrameRateDuringWarmup,c.defaultSettings.minimumFrameRateDuringWarmup),this.minimumFrameRateAfterWarmup=e(i.minimumFrameRateAfterWarmup,c.defaultSettings.minimumFrameRateAfterWarmup),this._lowFrameRate=new o,this._nominalFrameRate=new o,this._frameTimes=[],this._needsQuietPeriod=!0,this._quietPeriodEndTime=0,this._warmupPeriodEndTime=0,this._frameRateIsLow=!1,this._lastFramesPerSecond=void 0,this._pauseCount=0;var n=this;this._preRenderRemoveListener=this._scene.preRender.addEventListener(function(e,t){l(n,t)}),this._hiddenPropertyName=t(document.hidden)?"hidden":t(document.mozHidden)?"mozHidden":t(document.msHidden)?"msHidden":t(document.webkitHidden)?"webkitHidden":void 0;var a=t(document.hidden)?"visibilitychange":t(document.mozHidden)?"mozvisibilitychange":t(document.msHidden)?"msvisibilitychange":t(document.webkitHidden)?"webkitvisibilitychange":void 0;this._visibilityChangeRemoveListener=void 0,t(a)&&(document.addEventListener(a,r,!1),this._visibilityChangeRemoveListener=function(){document.removeEventListener(a,r,!1)})};return c.defaultSettings={samplingWindow:5,quietPeriod:2,warmupPeriod:5,minimumFrameRateDuringWarmup:4,minimumFrameRateAfterWarmup:8},c.fromScene=function(e){return(!t(e._frameRateMonitor)||e._frameRateMonitor.isDestroyed())&&(e._frameRateMonitor=new c({scene:e})),e._frameRateMonitor},i(c.prototype,{scene:{get:function(){return this._scene}},lowFrameRate:{get:function(){return this._lowFrameRate}},nominalFrameRate:{get:function(){return this._nominalFrameRate}},lastFramesPerSecond:{get:function(){return this._lastFramesPerSecond}}}),c.prototype.pause=function(){++this._pauseCount,1===this._pauseCount&&(this._frameTimes.length=0,this._lastFramesPerSecond=void 0)},c.prototype.unpause=function(){--this._pauseCount,this._pauseCount<=0&&(this._pauseCount=0,this._needsQuietPeriod=!0)},c.prototype.isDestroyed=function(){return!1},c.prototype.destroy=function(){return this._preRenderRemoveListener(),t(this._visibilityChangeRemoveListener)&&this._visibilityChangeRemoveListener(),r(this)},c}),i("Scene/FrameState",["./SceneMode"],function(e){"use strict";var t=function(t){this.mode=e.SCENE3D,this.morphTime=e.getMorphTime(e.SCENE3D),this.frameNumber=0,this.time=void 0,this.mapProjection=void 0,this.camera=void 0,this.cullingVolume=void 0,this.occluder=void 0,this.passes={render:!1,pick:!1},this.creditDisplay=t,this.afterRender=[],this.scene3DOnly=!1};return t}),i("Scene/FrustumCommands",["../Core/defaultValue","./Pass"],function(e,t){"use strict";var i=function(i,r){this.near=e(i,0),this.far=e(r,0);for(var n=t.NUMBER_OF_PASSES,o=new Array(n),a=new Array(n),s=0;n>s;++s)o[s]=[],a[s]=0;this.commands=o,this.indices=a};return i}),i("Scene/GetFeatureInfoFormat",["../Core/Cartographic","../Core/defaultValue","../Core/defined","../Core/definedNotNull","../Core/DeveloperError","../Core/RuntimeError","./ImageryLayerFeatureInfo"],function(e,t,i,r,n,o,a){"use strict";function s(t){for(var i=[],n=t.features,o=0;o1&&(t=i[1]);var r=new a;return r.name=t,r.description=e,r.data=e,[r]}var f=function(e,t,r){this.type=e,i(t)||("json"===e?t="application/json":"xml"===e?t="text/xml":"html"===e?t="text/html":"text"===e&&(t="text/plain")),this.format=t,i(r)||("json"===e?r=s:"xml"===e?r=l:"html"===e?r=m:"text"===e&&(r=m)),this.callback=r},v="http://www.mapinfo.com/mxp",g="http://www.esri.com/wms",_="http://www.opengis.net/wfs",y="http://www.opengis.net/gml",C=/\s*<\/body>/im,w=//im,S=/([^]*)<\/title>/im;return f}),i("Shaders/GlobeFS",[],function(){"use strict";return"uniform vec4 u_initialColor;\n#if TEXTURE_UNITS > 0\nuniform sampler2D u_dayTextures[TEXTURE_UNITS];\nuniform vec4 u_dayTextureTranslationAndScale[TEXTURE_UNITS];\n#ifdef APPLY_ALPHA\nuniform float u_dayTextureAlpha[TEXTURE_UNITS];\n#endif\n#ifdef APPLY_BRIGHTNESS\nuniform float u_dayTextureBrightness[TEXTURE_UNITS];\n#endif\n#ifdef APPLY_CONTRAST\nuniform float u_dayTextureContrast[TEXTURE_UNITS];\n#endif\n#ifdef APPLY_HUE\nuniform float u_dayTextureHue[TEXTURE_UNITS];\n#endif\n#ifdef APPLY_SATURATION\nuniform float u_dayTextureSaturation[TEXTURE_UNITS];\n#endif\n#ifdef APPLY_GAMMA\nuniform float u_dayTextureOneOverGamma[TEXTURE_UNITS];\n#endif\nuniform vec4 u_dayTextureTexCoordsRectangle[TEXTURE_UNITS];\n#endif\n#ifdef SHOW_REFLECTIVE_OCEAN\nuniform sampler2D u_waterMask;\nuniform vec4 u_waterMaskTranslationAndScale;\nuniform float u_zoomedOutOceanSpecularIntensity;\n#endif\n#ifdef SHOW_OCEAN_WAVES\nuniform sampler2D u_oceanNormalMap;\n#endif\n#ifdef ENABLE_DAYNIGHT_SHADING\nuniform vec2 u_lightingFadeDistance;\n#endif\nvarying vec3 v_positionMC;\nvarying vec3 v_positionEC;\nvarying vec2 v_textureCoordinates;\nvarying vec3 v_normalMC;\nvarying vec3 v_normalEC;\nvec4 sampleAndBlend(\nvec4 previousColor,\nsampler2D texture,\nvec2 tileTextureCoordinates,\nvec4 textureCoordinateRectangle,\nvec4 textureCoordinateTranslationAndScale,\nfloat textureAlpha,\nfloat textureBrightness,\nfloat textureContrast,\nfloat textureHue,\nfloat textureSaturation,\nfloat textureOneOverGamma)\n{\nvec2 alphaMultiplier = step(textureCoordinateRectangle.st, tileTextureCoordinates);\ntextureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y;\nalphaMultiplier = step(vec2(0.0), textureCoordinateRectangle.pq - tileTextureCoordinates);\ntextureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y;\nvec2 translation = textureCoordinateTranslationAndScale.xy;\nvec2 scale = textureCoordinateTranslationAndScale.zw;\nvec2 textureCoordinates = tileTextureCoordinates * scale + translation;\nvec4 sample = texture2D(texture, textureCoordinates);\nvec3 color = sample.rgb;\nfloat alpha = sample.a;\n#ifdef APPLY_BRIGHTNESS\ncolor = mix(vec3(0.0), color, textureBrightness);\n#endif\n#ifdef APPLY_CONTRAST\ncolor = mix(vec3(0.5), color, textureContrast);\n#endif\n#ifdef APPLY_HUE\ncolor = czm_hue(color, textureHue);\n#endif\n#ifdef APPLY_SATURATION\ncolor = czm_saturation(color, textureSaturation);\n#endif\n#ifdef APPLY_GAMMA\ncolor = pow(color, vec3(textureOneOverGamma));\n#endif\nfloat sourceAlpha = alpha * textureAlpha;\nfloat outAlpha = mix(previousColor.a, 1.0, sourceAlpha);\nvec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha;\nreturn vec4(outColor, outAlpha);\n}\nvec4 computeDayColor(vec4 initialColor, vec2 textureCoordinates);\nvec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float specularMapValue);\nvoid main()\n{\nvec4 color = computeDayColor(u_initialColor, clamp(v_textureCoordinates, 0.0, 1.0));\n#ifdef SHOW_TILE_BOUNDARIES\nif (v_textureCoordinates.x < (1.0/256.0) || v_textureCoordinates.x > (255.0/256.0) ||\nv_textureCoordinates.y < (1.0/256.0) || v_textureCoordinates.y > (255.0/256.0))\n{\ncolor = vec4(1.0, 0.0, 0.0, 1.0);\n}\n#endif\n#if defined(SHOW_REFLECTIVE_OCEAN) || defined(ENABLE_DAYNIGHT_SHADING)\nvec3 normalMC = normalize(czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)));\nvec3 normalEC = normalize(czm_normal3D * normalMC);\n#endif\n#ifdef SHOW_REFLECTIVE_OCEAN\nvec2 waterMaskTranslation = u_waterMaskTranslationAndScale.xy;\nvec2 waterMaskScale = u_waterMaskTranslationAndScale.zw;\nvec2 waterMaskTextureCoordinates = v_textureCoordinates * waterMaskScale + waterMaskTranslation;\nfloat mask = texture2D(u_waterMask, waterMaskTextureCoordinates).r;\nif (mask > 0.0)\n{\nmat3 enuToEye = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalEC);\nvec2 ellipsoidTextureCoordinates = czm_ellipsoidWgs84TextureCoordinates(normalMC);\nvec2 ellipsoidFlippedTextureCoordinates = czm_ellipsoidWgs84TextureCoordinates(normalMC.zyx);\nvec2 textureCoordinates = mix(ellipsoidTextureCoordinates, ellipsoidFlippedTextureCoordinates, czm_morphTime * smoothstep(0.9, 0.95, normalMC.z));\ncolor = computeWaterColor(v_positionEC, textureCoordinates, enuToEye, color, mask);\n}\n#endif\n#ifdef ENABLE_VERTEX_LIGHTING\nfloat diffuseIntensity = clamp(czm_getLambertDiffuse(czm_sunDirectionEC, normalize(v_normalEC)) * 0.9 + 0.3, 0.0, 1.0);\ngl_FragColor = vec4(color.rgb * diffuseIntensity, color.a);\n#elif defined(ENABLE_DAYNIGHT_SHADING)\nfloat diffuseIntensity = clamp(czm_getLambertDiffuse(czm_sunDirectionEC, normalEC) * 5.0 + 0.3, 0.0, 1.0);\nfloat cameraDist = length(czm_view[3]);\nfloat fadeOutDist = u_lightingFadeDistance.x;\nfloat fadeInDist = u_lightingFadeDistance.y;\nfloat t = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.0, 1.0);\ndiffuseIntensity = mix(1.0, diffuseIntensity, t);\ngl_FragColor = vec4(color.rgb * diffuseIntensity, color.a);\n#else\ngl_FragColor = color;\n#endif\n}\n#ifdef SHOW_REFLECTIVE_OCEAN\nfloat waveFade(float edge0, float edge1, float x)\n{\nfloat y = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\nreturn pow(1.0 - y, 5.0);\n}\nfloat linearFade(float edge0, float edge1, float x)\n{\nreturn clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n}\nconst float oceanFrequencyLowAltitude = 825000.0;\nconst float oceanAnimationSpeedLowAltitude = 0.004;\nconst float oceanOneOverAmplitudeLowAltitude = 1.0 / 2.0;\nconst float oceanSpecularIntensity = 0.5;\nconst float oceanFrequencyHighAltitude = 125000.0;\nconst float oceanAnimationSpeedHighAltitude = 0.008;\nconst float oceanOneOverAmplitudeHighAltitude = 1.0 / 2.0;\nvec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float maskValue)\n{\nvec3 positionToEyeEC = -positionEyeCoordinates;\nfloat positionToEyeECLength = length(positionToEyeEC);\nvec3 normalizedpositionToEyeEC = normalize(normalize(positionToEyeEC));\nfloat waveIntensity = waveFade(70000.0, 1000000.0, positionToEyeECLength);\n#ifdef SHOW_OCEAN_WAVES\nfloat time = czm_frameNumber * oceanAnimationSpeedHighAltitude;\nvec4 noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyHighAltitude, time, 0.0);\nvec3 normalTangentSpaceHighAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeHighAltitude);\ntime = czm_frameNumber * oceanAnimationSpeedLowAltitude;\nnoise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyLowAltitude, time, 0.0);\nvec3 normalTangentSpaceLowAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeLowAltitude);\nfloat highAltitudeFade = linearFade(0.0, 60000.0, positionToEyeECLength);\nfloat lowAltitudeFade = 1.0 - linearFade(20000.0, 60000.0, positionToEyeECLength);\nvec3 normalTangentSpace =\n(highAltitudeFade * normalTangentSpaceHighAltitude) +\n(lowAltitudeFade * normalTangentSpaceLowAltitude);\nnormalTangentSpace = normalize(normalTangentSpace);\nnormalTangentSpace.xy *= waveIntensity;\nnormalTangentSpace = normalize(normalTangentSpace);\n#else\nvec3 normalTangentSpace = vec3(0.0, 0.0, 1.0);\n#endif\nvec3 normalEC = enuToEye * normalTangentSpace;\nconst vec3 waveHighlightColor = vec3(0.3, 0.45, 0.6);\nfloat diffuseIntensity = czm_getLambertDiffuse(czm_sunDirectionEC, normalEC) * maskValue;\nvec3 diffuseHighlight = waveHighlightColor * diffuseIntensity;\n#ifdef SHOW_OCEAN_WAVES\nfloat tsPerturbationRatio = normalTangentSpace.z;\nvec3 nonDiffuseHighlight = mix(waveHighlightColor * 5.0 * (1.0 - tsPerturbationRatio), vec3(0.0), diffuseIntensity);\n#else\nvec3 nonDiffuseHighlight = vec3(0.0);\n#endif\nfloat specularIntensity = czm_getSpecular(czm_sunDirectionEC, normalizedpositionToEyeEC, normalEC, 10.0) + 0.25 * czm_getSpecular(czm_moonDirectionEC, normalizedpositionToEyeEC, normalEC, 10.0);\nfloat surfaceReflectance = mix(0.0, mix(u_zoomedOutOceanSpecularIntensity, oceanSpecularIntensity, waveIntensity), maskValue);\nfloat specular = specularIntensity * surfaceReflectance;\nreturn vec4(imageryColor.rgb + diffuseHighlight + nonDiffuseHighlight + specular, imageryColor.a);\n}\n#endif\n"}),i("Shaders/GlobeFSDepth",[],function(){"use strict";return"varying vec4 positionEC;\nvoid main()\n{\nczm_ellipsoid ellipsoid = czm_getWgs84EllipsoidEC();\nvec3 direction = normalize(positionEC.xyz);\nczm_ray ray = czm_ray(vec3(0.0), direction);\nczm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid);\nif (!czm_isEmpty(intersection))\n{\ngl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);\n}\nelse\n{\ndiscard;\n}\n}\n"}),i("Shaders/GlobeFSPole",[],function(){"use strict";return"uniform vec3 u_color;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\nczm_ellipsoid ellipsoid = czm_getWgs84EllipsoidEC();\nvec3 direction = normalize(czm_windowToEyeCoordinates(gl_FragCoord).xyz);\nczm_ray ray = czm_ray(vec3(0.0), direction);\nczm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid);\nif (!czm_isEmpty(intersection))\n{\nvec3 positionEC = czm_pointAlongRay(ray, intersection.start);\nvec3 positionMC = (czm_inverseModelView * vec4(positionEC, 1.0)).xyz;\nvec3 normalMC = normalize(czm_geodeticSurfaceNormal(positionMC, vec3(0.0), vec3(1.0)));\nvec3 normalEC = normalize(czm_normal * normalMC);\nvec3 startDayColor = u_color;\ngl_FragColor = vec4(startDayColor, 1.0);\n}\nelse\n{\ndiscard;\n}\n}\n"}),i("Shaders/GlobeVS",[],function(){"use strict";return"attribute vec4 position3DAndHeight;\nattribute vec3 textureCoordAndEncodedNormals;\nuniform vec3 u_center3D;\nuniform mat4 u_modifiedModelView;\nuniform vec4 u_tileRectangle;\nuniform vec2 u_southAndNorthLatitude;\nuniform vec3 u_southMercatorYLowAndHighAndOneOverHeight;\nvarying vec3 v_positionMC;\nvarying vec3 v_positionEC;\nvarying vec2 v_textureCoordinates;\nvarying vec3 v_normalMC;\nvarying vec3 v_normalEC;\nvec4 getPosition(vec3 position3DWC);\nfloat get2DYPositionFraction();\nvec4 getPosition3DMode(vec3 position3DWC)\n{\nreturn czm_projection * (u_modifiedModelView * vec4(position3DAndHeight.xyz, 1.0));\n}\nfloat get2DMercatorYPositionFraction()\n{\nconst float maxTileWidth = 0.003068;\nfloat positionFraction = textureCoordAndEncodedNormals.y;\nfloat southLatitude = u_southAndNorthLatitude.x;\nfloat northLatitude = u_southAndNorthLatitude.y;\nif (northLatitude - southLatitude > maxTileWidth)\n{\nfloat southMercatorYLow = u_southMercatorYLowAndHighAndOneOverHeight.x;\nfloat southMercatorYHigh = u_southMercatorYLowAndHighAndOneOverHeight.y;\nfloat oneOverMercatorHeight = u_southMercatorYLowAndHighAndOneOverHeight.z;\nfloat currentLatitude = mix(southLatitude, northLatitude, textureCoordAndEncodedNormals.y);\ncurrentLatitude = clamp(currentLatitude, -czm_webMercatorMaxLatitude, czm_webMercatorMaxLatitude);\npositionFraction = czm_latitudeToWebMercatorFraction(currentLatitude, southMercatorYLow, southMercatorYHigh, oneOverMercatorHeight);\n}\nreturn positionFraction;\n}\nfloat get2DGeographicYPositionFraction()\n{\nreturn textureCoordAndEncodedNormals.y;\n}\nvec4 getPositionPlanarEarth(vec3 position3DWC, float height2D)\n{\nfloat yPositionFraction = get2DYPositionFraction();\nvec4 rtcPosition2D = vec4(height2D, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordAndEncodedNormals.x, yPositionFraction)), 1.0);\nreturn czm_projection * (u_modifiedModelView * rtcPosition2D);\n}\nvec4 getPosition2DMode(vec3 position3DWC)\n{\nreturn getPositionPlanarEarth(position3DWC, 0.0);\n}\nvec4 getPositionColumbusViewMode(vec3 position3DWC)\n{\nreturn getPositionPlanarEarth(position3DWC, position3DAndHeight.w);\n}\nvec4 getPositionMorphingMode(vec3 position3DWC)\n{\nfloat yPositionFraction = get2DYPositionFraction();\nvec4 position2DWC = vec4(0.0, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordAndEncodedNormals.x, yPositionFraction)), 1.0);\nvec4 morphPosition = czm_columbusViewMorph(position2DWC, vec4(position3DWC, 1.0), czm_morphTime);\nreturn czm_modelViewProjection * morphPosition;\n}\nvoid main()\n{\nvec3 position3DWC = position3DAndHeight.xyz + u_center3D;\ngl_Position = getPosition(position3DWC);\n#if defined(ENABLE_VERTEX_LIGHTING)\nv_positionEC = (czm_modelView3D * vec4(position3DWC, 1.0)).xyz;\nv_positionMC = position3DWC;\nfloat encodedNormal = textureCoordAndEncodedNormals.z;\nv_normalMC = czm_octDecode(encodedNormal);\nv_normalEC = czm_normal3D * v_normalMC;\n#elif defined(SHOW_REFLECTIVE_OCEAN) || defined(ENABLE_DAYNIGHT_SHADING)\nv_positionEC = (czm_modelView3D * vec4(position3DWC, 1.0)).xyz;\nv_positionMC = position3DWC;\n#endif\nv_textureCoordinates = textureCoordAndEncodedNormals.xy;\n}\n" +}),i("Shaders/GlobeVSDepth",[],function(){"use strict";return"attribute vec4 position;\nvarying vec4 positionEC;\nvoid main()\n{\npositionEC = czm_modelView * position;\ngl_Position = czm_projection * positionEC;\n}\n"}),i("Shaders/GlobeVSPole",[],function(){"use strict";return"attribute vec4 position;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\nfloat x = (position.x - czm_viewport.x) / czm_viewport.z;\nfloat y = (position.y - czm_viewport.y) / czm_viewport.w;\nv_textureCoordinates = vec2(x, y);\ngl_Position = czm_viewportOrthographic * position;\n}\n"}),i("Scene/terrainAttributeLocations",[],function(){"use strict";return{position3DAndHeight:0,textureCoordAndEncodedNormals:1}}),i("Scene/GlobeSurfaceShaderSet",["../Core/defined","../Core/destroyObject","../Scene/SceneMode","../Scene/terrainAttributeLocations"],function(e,t,i,r){"use strict";function n(e,t,i){this.numberOfDayTextures=e,this.flags=t,this.shaderProgram=i}function o(){this.baseVertexShaderSource=void 0,this.baseFragmentShaderSource=void 0,this._attributeLocations=r,this._shadersByTexturesFlags=[]}return o.prototype.getShaderProgram=function(t,r,o,a,s,l,u,c,h,d,p,m,f,v,g){var _=r|s<<2|l<<3|u<<4|c<<5|h<<6|d<<7|p<<8|m<<9|f<<10|v<<11|g<<12,y=o.surfaceShader;if(e(y)&&y.numberOfDayTextures===a&&y.flags===_)return y.shaderProgram;var C=this._shadersByTexturesFlags[a];if(e(C)||(C=this._shadersByTexturesFlags[a]=[]),y=C[_],!e(y)){var w=this.baseVertexShaderSource.clone(),S=this.baseFragmentShaderSource.clone();S.defines.push("TEXTURE_UNITS "+a),s&&S.defines.push("APPLY_BRIGHTNESS"),l&&S.defines.push("APPLY_CONTRAST"),u&&S.defines.push("APPLY_HUE"),c&&S.defines.push("APPLY_SATURATION"),h&&S.defines.push("APPLY_GAMMA"),d&&S.defines.push("APPLY_ALPHA"),p&&(S.defines.push("SHOW_REFLECTIVE_OCEAN"),w.defines.push("SHOW_REFLECTIVE_OCEAN")),m&&S.defines.push("SHOW_OCEAN_WAVES"),f&&(v?(w.defines.push("ENABLE_VERTEX_LIGHTING"),S.defines.push("ENABLE_VERTEX_LIGHTING")):(w.defines.push("ENABLE_DAYNIGHT_SHADING"),S.defines.push("ENABLE_DAYNIGHT_SHADING")));for(var E=" vec4 computeDayColor(vec4 initialColor, vec2 textureCoordinates)\n {\n vec4 color = initialColor;\n",b=0;a>b;++b)E+=" color = sampleAndBlend(\n color,\n u_dayTextures["+b+"],\n textureCoordinates,\n u_dayTextureTexCoordsRectangle["+b+"],\n u_dayTextureTranslationAndScale["+b+"],\n "+(d?"u_dayTextureAlpha["+b+"]":"1.0")+",\n "+(s?"u_dayTextureBrightness["+b+"]":"0.0")+",\n "+(l?"u_dayTextureContrast["+b+"]":"0.0")+",\n "+(u?"u_dayTextureHue["+b+"]":"0.0")+",\n "+(c?"u_dayTextureSaturation["+b+"]":"0.0")+",\n "+(h?"u_dayTextureOneOverGamma["+b+"]":"0.0")+"\n );\n";E+=" return color;\n }",S.sources.push(E);var x,T="vec4 getPosition(vec3 position3DWC) { return getPosition3DMode(position3DWC); }",P="vec4 getPosition(vec3 position3DWC) { return getPosition2DMode(position3DWC); }",A="vec4 getPosition(vec3 position3DWC) { return getPositionColumbusViewMode(position3DWC); }",D="vec4 getPosition(vec3 position3DWC) { return getPositionMorphingMode(position3DWC); }";switch(r){case i.SCENE3D:x=T;break;case i.SCENE2D:x=P;break;case i.COLUMBUS_VIEW:x=A;break;case i.MORPHING:x=D}w.sources.push(x);var M,I="float get2DYPositionFraction() { return get2DGeographicYPositionFraction(); }",O="float get2DYPositionFraction() { return get2DMercatorYPositionFraction(); }";M=g?O:I,w.sources.push(M);var R=t.createShaderProgram(w,S,this._attributeLocations);y=C[_]=new n(a,_,R)}return o.surfaceShader=y,y.shaderProgram},o.prototype.destroy=function(){var i=this._shadersByTexturesFlags;for(var r in i)if(i.hasOwnProperty(r)){var n=i[r];if(!e(n))continue;for(var o in n)if(n.hasOwnProperty(o)){var a=n[o];e(a)&&a.shaderProgram.destroy()}}return t(this)},o}),i("Scene/ImageryState",["../Core/freezeObject"],function(e){"use strict";var t={UNLOADED:0,TRANSITIONING:1,RECEIVED:2,TEXTURE_LOADED:3,READY:4,FAILED:5,INVALID:6,PLACEHOLDER:7};return e(t)}),i("Scene/QuadtreeTileLoadState",["../Core/freezeObject"],function(e){"use strict";var t={START:0,LOADING:1,DONE:2,FAILED:3};return e(t)}),i("Scene/TerrainState",["../Core/freezeObject"],function(e){"use strict";var t={FAILED:0,UNLOADED:1,RECEIVING:2,RECEIVED:3,TRANSFORMING:4,TRANSFORMED:5,READY:6};return e(t)}),i("Scene/TileTerrain",["../Core/BoundingSphere","../Core/Cartesian3","../Core/ComponentDatatype","../Core/defined","../Core/DeveloperError","../Core/IndexDatatype","../Core/OrientedBoundingBox","../Core/TileProviderError","../Renderer/BufferUsage","../ThirdParty/when","./terrainAttributeLocations","./TerrainState"],function(e,t,i,r,n,o,a,s,l,u,c,h){"use strict";function d(e,t,i,n,o){function a(t){e.data=t,e.state=h.RECEIVED}function l(){e.state=h.FAILED;var r="Failed to obtain terrain tile X: "+i+" Y: "+n+" Level: "+o+".";t._requestError=s.handleError(t._requestError,t,t.errorEvent,r,i,n,o,c)}function c(){e.data=t.requestTileGeometry(i,n,o),r(e.data)?(e.state=h.RECEIVING,u(e.data,a,l)):e.state=h.UNLOADED}c()}function p(e,t,i,n,o,a){var s=i.tilingScheme,l=e.data,c=l.createMesh(s,n,o,a);r(c)&&(e.state=h.TRANSFORMING,u(c,function(t){e.mesh=t,e.state=h.TRANSFORMED},function(){e.state=h.FAILED}))}function m(e,t,n){var a,s,u=i.FLOAT,d=e.mesh.vertices,p=t.createVertexBuffer(d,l.STATIC_DRAW);n.hasVertexNormals?(a=7*i.getSizeInBytes(u),s=3):(a=6*i.getSizeInBytes(u),s=2);var m=4,f=[{index:c.position3DAndHeight,vertexBuffer:p,componentDatatype:u,componentsPerAttribute:m,offsetInBytes:0,strideInBytes:a},{index:c.textureCoordAndEncodedNormals,vertexBuffer:p,componentDatatype:u,componentsPerAttribute:s,offsetInBytes:m*i.getSizeInBytes(u),strideInBytes:a}],v=e.mesh.indices.indexBuffers||{},g=v[t.id];if(!r(g)||g.isDestroyed()){var _=e.mesh.indices,y=2===_.BYTES_PER_ELEMENT?o.UNSIGNED_SHORT:o.UNSIGNED_INT;g=t.createIndexBuffer(_,l.STATIC_DRAW,y),g.vertexArrayDestroyable=!1,g.referenceCount=1,v[t.id]=g,e.mesh.indices.indexBuffers=v}else++g.referenceCount;e.vertexArray=t.createVertexArray(f,g),e.state=h.READY}var f=function(e){this.state=h.UNLOADED,this.data=void 0,this.mesh=void 0,this.vertexArray=void 0,this.upsampleDetails=e};return f.prototype.freeResources=function(){if(this.state=h.UNLOADED,this.data=void 0,this.mesh=void 0,r(this.vertexArray)){var e=this.vertexArray.indexBuffer;this.vertexArray.destroy(),this.vertexArray=void 0,!e.isDestroyed()&&r(e.referenceCount)&&(--e.referenceCount,0===e.referenceCount&&e.destroy())}},f.prototype.publishToTile=function(i){var r=i.data,n=this.mesh;t.clone(n.center,r.center),r.minimumHeight=n.minimumHeight,r.maximumHeight=n.maximumHeight,r.boundingSphere3D=e.clone(n.boundingSphere3D,r.boundingSphere3D),r.orientedBoundingBox=a.clone(n.orientedBoundingBox,r.orientedBoundingBox),i.data.occludeePointInScaledSpace=t.clone(n.occludeePointInScaledSpace,r.occludeePointInScaledSpace),r.freeVertexArray(),r.vertexArray=this.vertexArray,this.vertexArray=void 0},f.prototype.processLoadStateMachine=function(e,t,i,r,n){this.state===h.UNLOADED&&d(this,t,i,r,n),this.state===h.RECEIVED&&p(this,e,t,i,r,n),this.state===h.TRANSFORMED&&m(this,e,t,i,r,n)},f.prototype.processUpsampleStateMachine=function(e,t,i,n,o){if(this.state===h.UNLOADED){var a=this.upsampleDetails,s=a.data,l=a.x,c=a.y,d=a.level;if(this.data=s.upsample(t.tilingScheme,l,c,d,i,n,o),!r(this.data))return;this.state=h.RECEIVING;var f=this;u(this.data,function(e){f.data=e,f.state=h.RECEIVED},function(){f.state=h.FAILED})}this.state===h.RECEIVED&&p(this,e,t,i,n,o),this.state===h.TRANSFORMED&&m(this,e,t,i,n,o)},f}),i("Scene/GlobeSurfaceTile",["../Core/BoundingSphere","../Core/Cartesian3","../Core/Cartesian4","../Core/Cartographic","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/IntersectionTests","../Core/PixelFormat","../Core/Rectangle","../Renderer/PixelDatatype","../Renderer/TextureMagnificationFilter","../Renderer/TextureMinificationFilter","../Renderer/TextureWrap","./ImageryState","./QuadtreeTileLoadState","./SceneMode","./TerrainState","./TileTerrain"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_){"use strict";function y(e,i,r,n,a,s,l){if(t.unpack(n,s*a,l),t.add(e.center,l,l),o(i)&&i!==v.SCENE3D){var u=r.ellipsoid,c=u.cartesianToCartographic(l);r.project(c,l),t.fromElements(l.z,l.x,l.y,l)}return l}function C(e,i,r){var n=e.data,a=S(e);o(a)&&(n.upsampledTerrain=new _(a)),x(e,i)&&(n.loadedTerrain=new _);for(var s=0,l=r.length;l>s;++s){var c=r.get(s);c.show&&c._createTileImagerySkeletons(e,i)}var h=e.tilingScheme.ellipsoid,d=e.rectangle;h.cartographicToCartesian(u.southwest(d),n.southwestCornerCartesian),h.cartographicToCartesian(u.northeast(d),n.northeastCornerCartesian),z.longitude=d.west,z.latitude=.5*(d.south+d.north),z.height=0;var p=h.cartographicToCartesian(z,F),m=t.cross(p,t.UNIT_Z,L);t.normalize(m,n.westNormal),z.longitude=d.east;var f=h.cartographicToCartesian(z,B),v=t.cross(t.UNIT_Z,f,L);t.normalize(v,n.eastNormal);var g=h.geodeticSurfaceNormalCartographic(u.southeast(d),N),y=t.subtract(p,f,L),C=t.cross(g,y,N);t.normalize(C,n.southNormal);var w=h.geodeticSurfaceNormalCartographic(u.northwest(d),N),E=t.cross(y,w,N);t.normalize(E,n.northNormal)}function w(e,t,i){var r=e.data,a=r.loadedTerrain,s=r.upsampledTerrain,l=!1;o(a)&&(a.processLoadStateMachine(t,i,e.x,e.y,e.level),a.state>=g.RECEIVED&&(r.terrainData!==a.data&&(r.terrainData=a.data,P(t,r),b(e)),l=!0),a.state===g.READY?(a.publishToTile(e),r.pickTerrain=n(r.loadedTerrain,r.upsampledTerrain),r.loadedTerrain=void 0,r.upsampledTerrain=void 0):a.state===g.FAILED&&(r.loadedTerrain=void 0)),!l&&o(s)&&(s.processUpsampleStateMachine(t,i,e.x,e.y,e.level),s.state>=g.RECEIVED&&r.terrainData!==s.data&&(r.terrainData=s.data,i.hasWaterMask&&A(e),E(e)),s.state===g.READY?(s.publishToTile(e),r.pickTerrain=r.upsampledTerrain,r.upsampledTerrain=void 0):s.state===g.FAILED&&(r.upsampledTerrain=void 0))}function S(e){for(var t=e.parent;o(t)&&o(t.data)&&!o(t.data.terrainData);)t=t.parent;return o(t)&&o(t.data)?{data:t.data.terrainData,x:t.x,y:t.y,level:t.level}:void 0}function E(e){var t=e.data;if(o(e._children))for(var i=0;4>i;++i){var r=e._children[i];if(r.state!==f.START){var n=r.data;if(o(n.terrainData)&&!n.terrainData.wasCreatedByUpsampling())continue;o(n.upsampledTerrain)&&n.upsampledTerrain.freeResources(),n.upsampledTerrain=new _({data:t.terrainData,x:e.x,y:e.y,level:e.level}),r.state=f.LOADING}}}function b(e){var t=e.data;if(o(e.children))for(var i=0;4>i;++i){var r=e.children[i];if(r.state!==f.START){var n=r.data;if(o(n.terrainData)&&!n.terrainData.wasCreatedByUpsampling())continue;o(n.upsampledTerrain)&&n.upsampledTerrain.freeResources(),n.upsampledTerrain=new _({data:t.terrainData,x:e.x,y:e.y,level:e.level}),t.terrainData.isChildAvailable(e.x,e.y,r.x,r.y)&&(o(n.loadedTerrain)||(n.loadedTerrain=new _)),r.state=f.LOADING}}}function x(e,t){var i=t.getTileDataAvailable(e.x,e.y,e.level);if(o(i))return i;var r=e.parent;return o(r)?o(r.data)&&o(r.data.terrainData)?r.data.terrainData.isChildAvailable(r.x,r.y,e.x,e.y):!1:!0}function T(e){var t=e.cache.tile_waterMaskData;if(!o(t)){var i=e.createTexture2D({pixelFormat:l.LUMINANCE,pixelDatatype:c.UNSIGNED_BYTE,source:{arrayBufferView:new Uint8Array([255]),width:1,height:1}});i.referenceCount=1;var r=e.createSampler({wrapS:p.CLAMP_TO_EDGE,wrapT:p.CLAMP_TO_EDGE,minificationFilter:d.LINEAR,magnificationFilter:h.LINEAR});t={allWaterTexture:i,sampler:r,destroy:function(){this.allWaterTexture.destroy()}},e.cache.tile_waterMaskData=t}return t}function P(e,t){var r=t.waterMaskTexture;o(r)&&(--r.referenceCount,0===r.referenceCount&&r.destroy(),t.waterMaskTexture=void 0);var n=t.terrainData.waterMask;if(o(n)){var a,s=T(e),u=n.length;if(1===u){if(0===n[0])return;a=s.allWaterTexture}else{var h=Math.sqrt(u);a=e.createTexture2D({pixelFormat:l.LUMINANCE,pixelDatatype:c.UNSIGNED_BYTE,source:{width:h,height:h,arrayBufferView:n}}),a.referenceCount=0,a.sampler=s.sampler}++a.referenceCount,t.waterMaskTexture=a,i.fromElements(0,0,1,1,t.waterMaskTranslationAndScale)}}function A(e){for(var t=e.data,i=e.parent;o(i)&&!o(i.data.terrainData)||i.data.terrainData.wasCreatedByUpsampling();)i=i.parent;if(o(i)&&o(i.data.waterMaskTexture)){t.waterMaskTexture=i.data.waterMaskTexture,++t.waterMaskTexture.referenceCount;var r=i.rectangle,n=e.rectangle,a=n.width,s=n.height,l=a/r.width,u=s/r.height;t.waterMaskTranslationAndScale.x=l*(n.west-r.west)/a,t.waterMaskTranslationAndScale.y=u*(n.south-r.south)/s,t.waterMaskTranslationAndScale.z=l,t.waterMaskTranslationAndScale.w=u}}var D=function(){this.imagery=[],this.southwestCornerCartesian=new t,this.northeastCornerCartesian=new t,this.westNormal=new t,this.southNormal=new t,this.eastNormal=new t,this.northNormal=new t,this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new i(0,0,1,1),this.terrainData=void 0,this.center=new t,this.vertexArray=void 0,this.minimumHeight=0,this.maximumHeight=0,this.boundingSphere3D=new e,this.boundingSphere2D=new e,this.orientedBoundingBox=void 0,this.occludeePointInScaledSpace=new t,this.loadedTerrain=void 0,this.upsampledTerrain=void 0,this.pickBoundingSphere=new e,this.pickTerrain=void 0,this.surfaceShader=void 0};a(D.prototype,{eligibleForUnloading:{get:function(){for(var e=this.loadedTerrain,t=o(e)&&(e.state===g.RECEIVING||e.state===g.TRANSFORMING),i=this.upsampledTerrain,r=o(i)&&(i.state===g.RECEIVING||i.state===g.TRANSFORMING),n=!t&&!r,a=this.imagery,s=0,l=a.length;n&&l>s;++s){var u=a[s];n=!o(u.loadingImagery)||u.loadingImagery.state!==m.TRANSITIONING}return n}}});var M=new t,I=new t,O=new t,R=new t;D.prototype.pick=function(e,i,r,n,a){var l=this.pickTerrain;if(!o(l))return void 0;var u=l.mesh;if(!o(u))return void 0;for(var c=u.vertices,h=u.stride,d=u.indices,p=d.length,m=0;p>m;m+=3){var f=d[m],v=d[m+1],g=d[m+2],_=y(this,i,r,c,h,f,M),C=y(this,i,r,c,h,v,I),w=y(this,i,r,c,h,g,O),S=s.rayTriangle(e,_,C,w,n,R);if(o(S))return t.clone(S,a)}return void 0},D.prototype.freeResources=function(){o(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,0===this.waterMaskTexture.referenceCount&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0),this.terrainData=void 0,o(this.loadedTerrain)&&(this.loadedTerrain.freeResources(),this.loadedTerrain=void 0),o(this.upsampledTerrain)&&(this.upsampledTerrain.freeResources(),this.upsampledTerrain=void 0),o(this.pickTerrain)&&(this.pickTerrain.freeResources(),this.pickTerrain=void 0);var e,t,i=this.imagery;for(e=0,t=i.length;t>e;++e)i[e].freeResources();this.imagery.length=0,this.freeVertexArray()},D.prototype.freeVertexArray=function(){var e;o(this.vertexArray)&&(e=this.vertexArray.indexBuffer,this.vertexArray=this.vertexArray.destroy(),!e.isDestroyed()&&o(e.referenceCount)&&(--e.referenceCount,0===e.referenceCount&&e.destroy())),o(this.wireframeVertexArray)&&(e=this.wireframeVertexArray.indexBuffer,this.wireframeVertexArray=this.wireframeVertexArray.destroy(),!e.isDestroyed()&&o(e.referenceCount)&&(--e.referenceCount,0===e.referenceCount&&e.destroy()))},D.processStateMachine=function(e,t,i,r){var n=e.data;o(n)||(n=e.data=new D),e.state===f.START&&(C(e,i,r),e.state=f.LOADING),e.state===f.LOADING&&w(e,t,i);for(var a=o(n.vertexArray),s=!o(n.loadedTerrain)&&!o(n.upsampledTerrain),l=o(n.terrainData)&&n.terrainData.wasCreatedByUpsampling(),u=n.imagery,c=0,h=u.length;h>c;++c){var d=u[c];if(o(d.loadingImagery)){if(d.loadingImagery.state===m.PLACEHOLDER){var p=d.loadingImagery.imageryLayer;if(p.imageryProvider.ready){d.freeResources(),u.splice(c,1),p._createTileImagerySkeletons(e,i,c),--c,h=u.length;continue}l=!1}var v=d.processStateMachine(e,t);s=s&&v,a=a&&(v||o(d.readyImagery)),l=l&&o(d.loadingImagery)&&(d.loadingImagery.state===m.FAILED||d.loadingImagery.state===m.INVALID)}else l=!1}e.upsampledFromParent=l,c===h&&(a&&(e.renderable=!0),s&&(e.state=f.DONE))};var L=new t,N=new t,F=new t,B=new t,z=new r;return D}),i("Shaders/ReprojectWebMercatorFS",[],function(){"use strict";return"uniform sampler2D u_texture;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\ngl_FragColor = texture2D(u_texture, v_textureCoordinates);\n}\n"}),i("Shaders/ReprojectWebMercatorVS",[],function(){"use strict";return"attribute vec4 position;\nattribute float webMercatorT;\nuniform vec2 u_textureDimensions;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\nv_textureCoordinates = vec2(position.x, webMercatorT);\ngl_Position = czm_viewportOrthographic * (position * vec4(u_textureDimensions, 1.0, 1.0));\n}\n"}),i("Scene/Imagery",["../Core/defined","../Core/destroyObject","./ImageryState"],function(e,t,i){"use strict";var r=function(t,r,n,o,a){if(this.imageryLayer=t,this.x=r,this.y=n,this.level=o,0!==o){var s=0|r/2,l=0|n/2,u=o-1;this.parent=t.getImageryFromCache(s,l,u)}if(this.state=i.UNLOADED,this.imageUrl=void 0,this.image=void 0,this.texture=void 0,this.credits=void 0,this.referenceCount=0,!e(a)&&t.imageryProvider.ready){var c=t.imageryProvider.tilingScheme;a=c.tileXYToRectangle(r,n,o)}this.rectangle=a};return r.createPlaceholder=function(e){var t=new r(e,0,0,0);return t.addReference(),t.state=i.PLACEHOLDER,t},r.prototype.addReference=function(){++this.referenceCount},r.prototype.releaseReference=function(){return--this.referenceCount,0===this.referenceCount?(this.imageryLayer.removeImageryFromCache(this),e(this.parent)&&this.parent.releaseReference(),e(this.image)&&e(this.image.destroy)&&this.image.destroy(),e(this.texture)&&this.texture.destroy(),t(this),0):this.referenceCount},r.prototype.processStateMachine=function(e){this.state===i.UNLOADED&&(this.state=i.TRANSITIONING,this.imageryLayer._requestImagery(this)),this.state===i.RECEIVED&&(this.state=i.TRANSITIONING,this.imageryLayer._createTexture(e,this)),this.state===i.TEXTURE_LOADED&&(this.state=i.TRANSITIONING,this.imageryLayer._reprojectTexture(e,this))},r}),i("Scene/TileImagery",["../Core/defined","./ImageryState"],function(e,t){"use strict";var i=function(e,t){this.readyImagery=void 0,this.loadingImagery=e,this.textureCoordinateRectangle=t,this.textureTranslationAndScale=void 0};return i.prototype.freeResources=function(){e(this.readyImagery)&&this.readyImagery.releaseReference(),e(this.loadingImagery)&&this.loadingImagery.releaseReference()},i.prototype.processStateMachine=function(i,r){var n=this.loadingImagery,o=n.imageryLayer;if(n.processStateMachine(r),n.state===t.READY)return e(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=this.loadingImagery,this.loadingImagery=void 0,this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(i,this),!0;for(var a,s=n.parent;e(s)&&s.state!==t.READY;)s.state!==t.FAILED&&s.state!==t.INVALID&&(a=a||s),s=s.parent;return this.readyImagery!==s&&(e(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=s,e(s)&&(s.addReference(),this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(i,this))),n.state===t.FAILED||n.state===t.INVALID?e(a)?(a.processStateMachine(r),!1):!0:!1},i}),i("Scene/ImageryLayer",["../Core/BoundingRectangle","../Core/Cartesian2","../Core/Cartesian4","../Core/Color","../Core/ComponentDatatype","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/FeatureDetection","../Core/GeographicTilingScheme","../Core/IndexDatatype","../Core/Math","../Core/PixelFormat","../Core/PrimitiveType","../Core/Rectangle","../Core/TerrainProvider","../Core/TileProviderError","../Renderer/BufferUsage","../Renderer/ClearCommand","../Renderer/DrawCommand","../Renderer/MipmapHint","../Renderer/ShaderSource","../Renderer/TextureMagnificationFilter","../Renderer/TextureMinificationFilter","../Renderer/TextureWrap","../Shaders/ReprojectWebMercatorFS","../Shaders/ReprojectWebMercatorVS","../ThirdParty/when","./Imagery","./ImageryState","./TileImagery"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D,M,I){"use strict";function O(e,t,i){return JSON.stringify([e,t,i])}function R(t,i,n,o){var s=i.cache.imageryLayer_reproject;if(!a(s)){s=i.cache.imageryLayer_reproject={framebuffer:void 0,vertexArray:void 0,shaderProgram:void 0,renderState:void 0,sampler:void 0,destroy:function(){a(this.framebuffer)&&this.framebuffer.destroy(),a(this.vertexArray)&&this.vertexArray.destroy(),a(this.shaderProgram)&&this.shaderProgram.destroy()}};for(var l=new Float32Array(256),u=0,c=0;64>c;++c){var p=c/63;l[u++]=0,l[u++]=p,l[u++]=1,l[u++]=p}var f={position:0,webMercatorT:1},g=v.getRegularGridIndices(2,64),A=i.createIndexBuffer(g,_.STATIC_DRAW,h.UNSIGNED_SHORT);s.vertexArray=i.createVertexArray([{index:f.position,vertexBuffer:i.createVertexBuffer(l,_.STATIC_DRAW),componentsPerAttribute:2},{index:f.webMercatorT,vertexBuffer:i.createVertexBuffer(512,_.STREAM_DRAW),componentsPerAttribute:1}],A);var D=new S({sources:[P]});s.shaderProgram=i.createShaderProgram(D,T,f),s.sampler=i.createSampler({wrapS:x.CLAMP_TO_EDGE,wrapT:x.CLAMP_TO_EDGE,minificationFilter:b.LINEAR,magnificationFilter:E.LINEAR})}n.sampler=s.sampler;var M=n.width,I=n.height;k.textureDimensions.x=M,k.textureDimensions.y=I,k.texture=n;var O=Math.sin(o.south),R=.5*Math.log((1+O)/(1-O));O=Math.sin(o.north);var L=.5*Math.log((1+O)/(1-O)),N=1/(L-R),F=i.createTexture2D({width:M,height:I,pixelFormat:n.pixelFormat,pixelDatatype:n.pixelDatatype,preMultiplyAlpha:n.preMultiplyAlpha});d.isPowerOfTwo(M)&&d.isPowerOfTwo(I)&&F.generateMipmap(w.NICEST),a(s.framebuffer)&&s.framebuffer.destroy(),s.framebuffer=i.createFramebuffer({colorTextures:[F]}),s.framebuffer.destroyAttachments=!1;for(var B=o.south,z=o.north,U=V,W=0,G=0;64>G;++G){var H=G/63,q=d.lerp(B,z,H);O=Math.sin(q);var j=.5*Math.log((1+O)/(1-O)),Y=(j-R)*N;U[W++]=Y,U[W++]=Y}s.vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(U);var X=new y({color:r.BLACK,framebuffer:s.framebuffer});X.execute(i),a(s.renderState)&&s.renderState.viewport.width===M&&s.renderState.viewport.height===I||(s.renderState=i.createRenderState({viewport:new e(0,0,M,I)}));var Z=new C({framebuffer:s.framebuffer,shaderProgram:s.shaderProgram,renderState:s.renderState,primitiveType:m.TRIANGLES,vertexArray:s.vertexArray,uniformMap:k});return Z.execute(i),F}function L(e,t,i){var r=e._imageryProvider,n=r.tilingScheme,o=n.ellipsoid,a=e._imageryProvider.tilingScheme instanceof c?1:Math.cos(i),s=n.rectangle,l=o.maximumRadius*s.width*a/(r.tileWidth*n.getNumberOfXTilesAtLevel(0)),u=l/t,h=Math.log(u)/Math.log(2),d=Math.round(h);return 0|d}var N=function U(e,t){this._imageryProvider=e,t=o(t,{}),this.alpha=o(t.alpha,o(e.defaultAlpha,1)),this.brightness=o(t.brightness,o(e.defaultBrightness,U.DEFAULT_BRIGHTNESS)),this.contrast=o(t.contrast,o(e.defaultContrast,U.DEFAULT_CONTRAST)),this.hue=o(t.hue,o(e.defaultHue,U.DEFAULT_HUE)),this.saturation=o(t.saturation,o(e.defaultSaturation,U.DEFAULT_SATURATION)),this.gamma=o(t.gamma,o(e.defaultGamma,U.DEFAULT_GAMMA)),this.show=o(t.show,!0),this._minimumTerrainLevel=t.minimumTerrainLevel,this._maximumTerrainLevel=t.maximumTerrainLevel,this._rectangle=o(t.rectangle,f.MAX_VALUE),this._maximumAnisotropy=t.maximumAnisotropy,this._imageryCache={},this._skeletonPlaceholder=new I(D.createPlaceholder(this)),this._show=!0,this._layerIndex=-1,this._isBaseLayer=!1,this._requestImageError=void 0};s(N.prototype,{imageryProvider:{get:function(){return this._imageryProvider}},rectangle:{get:function(){return this._rectangle}}}),N.DEFAULT_BRIGHTNESS=1,N.DEFAULT_CONTRAST=1,N.DEFAULT_HUE=0,N.DEFAULT_SATURATION=1,N.DEFAULT_GAMMA=1,N.prototype.isBaseLayer=function(){return this._isBaseLayer},N.prototype.isDestroyed=function(){return!1},N.prototype.destroy=function(){return l(this)};var F=new f,B=new f,z=new f;N.prototype._createTileImagerySkeletons=function(e,t,r){var n=e.data;if(a(this._minimumTerrainLevel)&&e.level<this._minimumTerrainLevel)return!1;if(a(this._maximumTerrainLevel)&&e.level>this._maximumTerrainLevel)return!1;var o=this._imageryProvider;if(a(r)||(r=n.imagery.length),!o.ready)return this._skeletonPlaceholder.loadingImagery.addReference(),n.imagery.splice(r,0,this._skeletonPlaceholder),!0;var s=f.intersection(o.rectangle,this._rectangle,F),l=f.intersection(e.rectangle,s,B);if(!a(l)){if(!this.isBaseLayer())return!1;var u=s,c=e.rectangle;l=B,c.south>=u.north?l.north=l.south=u.north:c.north<=u.south?l.north=l.south=u.south:(l.south=Math.max(c.south,u.south),l.north=Math.min(c.north,u.north)),c.west>=u.east?l.west=l.east=u.east:c.east<=u.west?l.west=l.east=u.west:(l.west=Math.max(c.west,u.west),l.east=Math.min(c.east,u.east))}var h=0;l.south>0?h=l.south:l.north<0&&(h=l.north);var d=1,p=d*t.getLevelMaximumGeometricError(e.level),m=L(this,p,h);m=Math.max(0,m);var v=o.maximumLevel;if(m>v&&(m=v),a(o.minimumLevel)){var g=o.minimumLevel;g>m&&(m=g)}var _=o.tilingScheme,y=_.positionToTileXY(f.northwest(l),m),C=_.positionToTileXY(f.southeast(l),m),w=e.rectangle.height/512,S=e.rectangle.width/512,E=_.tileXYToRectangle(y.x,y.y,m);Math.abs(E.south-e.rectangle.north)<S&&y.y<C.y&&++y.y,Math.abs(E.east-e.rectangle.west)<w&&y.x<C.x&&++y.x;var b=_.tileXYToRectangle(C.x,C.y,m);Math.abs(b.north-e.rectangle.south)<S&&C.y>y.y&&--C.y,Math.abs(b.west-e.rectangle.east)<w&&C.x>y.x&&--C.x;var x,T,P=e.rectangle,A=_.tileXYToRectangle(y.x,y.y,m),D=f.intersection(A,s,z),M=0,O=1;!this.isBaseLayer()&&Math.abs(D.west-e.rectangle.west)>=w&&(M=Math.min(1,(D.west-P.west)/P.width)),!this.isBaseLayer()&&Math.abs(D.north-e.rectangle.north)>=S&&(O=Math.max(0,(D.north-P.south)/P.height));for(var R=O,N=y.x;N<=C.x;N++){x=M,A=_.tileXYToRectangle(N,y.y,m),D=f.intersection(A,s,z),M=Math.min(1,(D.east-P.west)/P.width),N===C.x&&(this.isBaseLayer()||Math.abs(D.east-e.rectangle.east)<w)&&(M=1),O=R;for(var k=y.y;k<=C.y;k++){T=O,A=_.tileXYToRectangle(N,k,m),D=f.intersection(A,s,z),O=Math.max(0,(D.south-P.south)/P.height),k===C.y&&(this.isBaseLayer()||Math.abs(D.south-e.rectangle.south)<S)&&(O=0);var V=new i(x,O,M,T),U=this.getImageryFromCache(N,k,m,A);n.imagery.splice(r,0,new I(U,V)),++r}}return!0},N.prototype._calculateTextureTranslationAndScale=function(e,t){var r=t.readyImagery.rectangle,n=e.rectangle,o=n.width,a=n.height,s=o/r.width,l=a/r.height;return new i(s*(n.west-r.west)/o,l*(n.south-r.south)/a,s,l)},N.prototype._requestImagery=function(e){function t(t){return a(t)?(e.image=t,e.state=M.RECEIVED,g.handleSuccess(o._requestImageError),void 0):i()}function i(t){e.state=M.FAILED;var i="Failed to obtain image tile X: "+e.x+" Y: "+e.y+" Level: "+e.level+".";o._requestImageError=g.handleError(o._requestImageError,n,n.errorEvent,i,e.x,e.y,e.level,r,t)}function r(){e.state=M.TRANSITIONING;var r=n.requestImage(e.x,e.y,e.level);return a(r)?(a(n.getTileCredits)&&(e.credits=n.getTileCredits(e.x,e.y,e.level)),A(r,t,i),void 0):(e.state=M.UNLOADED,void 0)}var n=this._imageryProvider,o=this;r()},N.prototype._createTexture=function(e,t){var i=this._imageryProvider;if(a(i.tileDiscardPolicy)){var r=i.tileDiscardPolicy;if(a(r)){if(!r.isReady())return t.state=M.RECEIVED,void 0;if(r.shouldDiscardImage(t.image))return t.state=M.INVALID,void 0}}var n=e.createTexture2D({source:t.image,pixelFormat:i.hasAlphaChannel?p.RGBA:p.RGB});t.texture=n,t.image=void 0,t.state=M.TEXTURE_LOADED},N.prototype._reprojectTexture=function(e,t){var i=t.texture,r=t.rectangle;if(!(this._imageryProvider.tilingScheme instanceof c)&&r.width/i.width>1e-5){var n=R(this,e,i,t.rectangle);i.destroy(),t.texture=i=n}if(d.isPowerOfTwo(i.width)&&d.isPowerOfTwo(i.height)){var s=e.cache.imageryLayer_mipmapSampler;if(!a(s)){var l=e.maximumTextureFilterAnisotropy;s=e.cache.imageryLayer_mipmapSampler=e.createSampler({wrapS:x.CLAMP_TO_EDGE,wrapT:x.CLAMP_TO_EDGE,minificationFilter:b.LINEAR_MIPMAP_LINEAR,magnificationFilter:E.LINEAR,maximumAnisotropy:Math.min(l,o(this._maximumAnisotropy,l))})}i.generateMipmap(w.NICEST),i.sampler=s}else{var u=e.cache.imageryLayer_nonMipmapSampler;a(u)||(u=e.cache.imageryLayer_nonMipmapSampler=e.createSampler({wrapS:x.CLAMP_TO_EDGE,wrapT:x.CLAMP_TO_EDGE,minificationFilter:b.LINEAR,magnificationFilter:E.LINEAR})),i.sampler=u}t.state=M.READY},N.prototype.getImageryFromCache=function(e,t,i,r){var n=O(e,t,i),o=this._imageryCache[n];return a(o)||(o=new D(this,e,t,i,r),this._imageryCache[n]=o),o.addReference(),o},N.prototype.removeImageryFromCache=function(e){var t=O(e.x,e.y,e.level);delete this._imageryCache[t]};var k={u_textureDimensions:function(){return this.textureDimensions},u_texture:function(){return this.texture},textureDimensions:new t,texture:void 0},V=u.supportsTypedArrays()?new Float32Array(128):void 0;return N}),i("Scene/GlobeSurfaceTileProvider",["../Core/BoundingSphere","../Core/BoxOutlineGeometry","../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../Core/FeatureDetection","../Core/GeometryInstance","../Core/GeometryPipeline","../Core/IndexDatatype","../Core/Intersect","../Core/Matrix4","../Core/OrientedBoundingBox","../Core/PrimitiveType","../Core/Rectangle","../Core/SphereOutlineGeometry","../Core/Visibility","../Core/WebMercatorProjection","../Renderer/BufferUsage","../Renderer/DrawCommand","../Scene/BlendingState","../Scene/DepthFunction","../Scene/Pass","../Scene/PerInstanceColorAppearance","../Scene/Primitive","../ThirdParty/when","./GlobeSurfaceTile","./ImageryLayer","./ImageryState","./QuadtreeTileLoadState","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D,M,I,O,R,L,N,F,B){"use strict";function z(e,t){var i=e.loadingImagery;l(i)||(i=e.readyImagery);var r=t.loadingImagery;return l(r)||(r=t.readyImagery),i.imageryLayer._layerIndex-r.imageryLayer._layerIndex}function k(){var e={u_initialColor:function(){return this.initialColor},u_zoomedOutOceanSpecularIntensity:function(){return this.zoomedOutOceanSpecularIntensity},u_oceanNormalMap:function(){return this.oceanNormalMap},u_lightingFadeDistance:function(){return this.lightingFadeDistance},u_center3D:function(){return this.center3D},u_tileRectangle:function(){return this.tileRectangle},u_modifiedModelView:function(){return this.modifiedModelView},u_dayTextures:function(){return this.dayTextures},u_dayTextureTranslationAndScale:function(){return this.dayTextureTranslationAndScale},u_dayTextureTexCoordsRectangle:function(){return this.dayTextureTexCoordsRectangle},u_dayTextureAlpha:function(){return this.dayTextureAlpha},u_dayTextureBrightness:function(){return this.dayTextureBrightness},u_dayTextureContrast:function(){return this.dayTextureContrast},u_dayTextureHue:function(){return this.dayTextureHue},u_dayTextureSaturation:function(){return this.dayTextureSaturation},u_dayTextureOneOverGamma:function(){return this.dayTextureOneOverGamma},u_dayIntensity:function(){return this.dayIntensity},u_southAndNorthLatitude:function(){return this.southAndNorthLatitude},u_southMercatorYLowAndHighAndOneOverHeight:function(){return this.southMercatorYLowAndHighAndOneOverHeight},u_waterMask:function(){return this.waterMask},u_waterMaskTranslationAndScale:function(){return this.waterMaskTranslationAndScale},initialColor:new n(0,0,.5,1),zoomedOutOceanSpecularIntensity:.5,oceanNormalMap:void 0,lightingFadeDistance:new i(65e5,9e6),center3D:void 0,modifiedModelView:new _,tileRectangle:new n,dayTextures:[],dayTextureTranslationAndScale:[],dayTextureTexCoordsRectangle:[],dayTextureAlpha:[],dayTextureBrightness:[],dayTextureContrast:[],dayTextureHue:[],dayTextureSaturation:[],dayTextureOneOverGamma:[],dayIntensity:0,southAndNorthLatitude:new i,southMercatorYLowAndHighAndOneOverHeight:new r,waterMask:void 0,waterMaskTranslationAndScale:new n};return e}function V(e,t,i){var r=i.data;if(!l(r.wireframeVertexArray)&&!l(r.meshForWireframePromise)&&(r.meshForWireframePromise=r.terrainData.createMesh(t._terrainProvider.tilingScheme,i.x,i.y,i.level),l(r.meshForWireframePromise))){var n=r.vertexArray;O(r.meshForWireframePromise,function(t){r.vertexArray===n&&(r.wireframeVertexArray=U(e,r.vertexArray,t)),r.meshForWireframePromise=void 0})}}function U(e,t,i){var r={indices:i.indices,primitiveType:C.TRIANGLES};f.toWireframe(r); +var n=r.indices,o=e.createIndexBuffer(n,x.STATIC_DRAW,v.UNSIGNED_SHORT);return e.createVertexArray(t._attributes,o)}function W(t,i,a,s,u){var c=i.data,h=s.camera.viewMatrix,d=a.maximumTextureImageUnits,p=c.waterMaskTexture,m=t.hasWaterMask&&l(p),f=t.oceanNormalMap,v=m&&l(f),g=t.terrainProvider.ready&&t.terrainProvider.hasVertexNormals;m&&--d,v&&--d;var S=c.center,E=Y,x=0,P=0,A=0,M=0,I=0,O=!1;if(s.mode!==B.SCENE3D){var R=s.mapProjection,F=R.project(w.southwest(i.rectangle),J),z=R.project(w.northeast(i.rectangle),Q);if(E.x=F.x,E.y=F.y,E.z=z.x,E.w=z.y,s.mode!==B.MORPHING&&(S=X,S.x=0,S.y=.5*(E.z+E.x),S.z=.5*(E.w+E.y),E.x-=S.y,E.y-=S.z,E.z-=S.y,E.w-=S.z),R instanceof b){x=i.rectangle.south,P=i.rectangle.north;var U=b.geodeticLatitudeToMercatorAngle(x),W=b.geodeticLatitudeToMercatorAngle(P);q[0]=U,A=q[0],M=U-q[0],I=1/(W-U),O=!0}}var G=_.multiplyByPoint(h,S,Z);_.setTranslation(h,G,j);var H=c.imagery,K=0,$=H.length,et=t._renderState,tt=t._blendRenderState,it=et,st=t._firstPassInitialColor;l(t._debug.boundingSphereTile)||ot();do{var lt,ut,ct=0;t._drawCommands.length<=t._usedDrawCommands?(lt=new T,lt.owner=i,lt.cull=!1,lt.boundingVolume=new e,lt.orientedBoundingBox=void 0,ut=k(),t._drawCommands.push(lt),t._uniformMaps.push(ut)):(lt=t._drawCommands[t._usedDrawCommands],ut=t._uniformMaps[t._usedDrawCommands]),lt.owner=i,++t._usedDrawCommands,i===t._debug.boundingSphereTile&&(l(c.orientedBoundingBox)?rt(c.orientedBoundingBox,o.RED).update(a,s,u):l(c.boundingSphere3D)&&nt(c.boundingSphere3D,o.RED).update(a,s,u)),n.clone(st,ut.initialColor),ut.oceanNormalMap=f,ut.lightingFadeDistance.x=t.lightingFadeOutDistance,ut.lightingFadeDistance.y=t.lightingFadeInDistance,ut.zoomedOutOceanSpecularIntensity=t.zoomedOutOceanSpecularIntensity,ut.center3D=c.center,n.clone(E,ut.tileRectangle),ut.southAndNorthLatitude.x=x,ut.southAndNorthLatitude.y=P,ut.southMercatorYLowAndHighAndOneOverHeight.x=M,ut.southMercatorYLowAndHighAndOneOverHeight.y=A,ut.southMercatorYLowAndHighAndOneOverHeight.z=I,_.clone(j,ut.modifiedModelView);for(var ht=!1,dt=!1,pt=!1,mt=!1,ft=!1,vt=!1;d>ct&&$>K;){var gt=H[K],_t=gt.readyImagery;if(++K,l(_t)&&_t.state===N.READY&&0!==_t.imageryLayer.alpha){var yt=_t.imageryLayer;if(l(gt.textureTranslationAndScale)||(gt.textureTranslationAndScale=yt._calculateTextureTranslationAndScale(i,gt)),ut.dayTextures[ct]=_t.texture,ut.dayTextureTranslationAndScale[ct]=gt.textureTranslationAndScale,ut.dayTextureTexCoordsRectangle[ct]=gt.textureCoordinateRectangle,ut.dayTextureAlpha[ct]=yt.alpha,vt=vt||1!==ut.dayTextureAlpha[ct],ut.dayTextureBrightness[ct]=yt.brightness,ht=ht||ut.dayTextureBrightness[ct]!==L.DEFAULT_BRIGHTNESS,ut.dayTextureContrast[ct]=yt.contrast,dt=dt||ut.dayTextureContrast[ct]!==L.DEFAULT_CONTRAST,ut.dayTextureHue[ct]=yt.hue,pt=pt||ut.dayTextureHue[ct]!==L.DEFAULT_HUE,ut.dayTextureSaturation[ct]=yt.saturation,mt=mt||ut.dayTextureSaturation[ct]!==L.DEFAULT_SATURATION,ut.dayTextureOneOverGamma[ct]=1/yt.gamma,ft=ft||ut.dayTextureOneOverGamma[ct]!==1/L.DEFAULT_GAMMA,l(_t.credits))for(var Ct=s.creditDisplay,wt=_t.credits,St=0,Et=wt.length;Et>St;++St)Ct.addCredit(wt[St]);++ct}}ut.dayTextures.length=ct,ut.waterMask=p,n.clone(c.waterMaskTranslationAndScale,ut.waterMaskTranslationAndScale),lt.shaderProgram=t._surfaceShaderSet.getShaderProgram(a,s.mode,c,ct,ht,dt,pt,mt,ft,vt,m,v,t.enableLighting,g,O),lt.renderState=it,lt.primitiveType=C.TRIANGLES,lt.vertexArray=c.vertexArray,lt.uniformMap=ut,lt.pass=D.GLOBE,t._debug.wireframe&&(V(a,t,i),l(c.wireframeVertexArray)&&(lt.vertexArray=c.wireframeVertexArray,lt.primitiveType=C.LINES));var bt=lt.boundingVolume,xt=lt.orientedBoundingBox;s.mode!==B.SCENE3D?(e.fromRectangleWithHeights2D(i.rectangle,s.mapProjection,c.minimumHeight,c.maximumHeight,bt),r.fromElements(bt.center.z,bt.center.x,bt.center.y,bt.center),s.mode===B.MORPHING&&(bt=e.union(c.boundingSphere3D,bt,bt))):(lt.boundingVolume=e.clone(c.boundingSphere3D,bt),lt.orientedBoundingBox=y.clone(c.orientedBoundingBox,xt)),u.push(lt),it=tt,st=at}while($>K)}var G=function st(e){this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.hasWaterMask=!1,this.oceanNormalMap=void 0,this.zoomedOutOceanSpecularIntensity=.5,this.enableLighting=!1,this._quadtree=void 0,this._terrainProvider=e.terrainProvider,this._imageryLayers=e.imageryLayers,this._surfaceShaderSet=e.surfaceShaderSet,this._renderState=void 0,this._blendRenderState=void 0,this._errorEvent=new d,this._imageryLayers.layerAdded.addEventListener(st.prototype._onLayerAdded,this),this._imageryLayers.layerRemoved.addEventListener(st.prototype._onLayerRemoved,this),this._imageryLayers.layerMoved.addEventListener(st.prototype._onLayerMoved,this),this._imageryLayers.layerShownOrHidden.addEventListener(st.prototype._onLayerShownOrHidden,this),this._layerOrderChanged=!1,this._tilesToRenderByTextureCount=[],this._drawCommands=[],this._uniformMaps=[],this._usedDrawCommands=0,this._debug={wireframe:!1,boundingSphereTile:void 0},this._baseColor=void 0,this._firstPassInitialColor=void 0,this.baseColor=new o(0,0,.5,1)};u(G.prototype,{baseColor:{get:function(){return this._baseColor},set:function(e){this._baseColor=e,this._firstPassInitialColor=n.fromColor(e,this._firstPassInitialColor)}},quadtree:{get:function(){return this._quadtree},set:function(e){this._quadtree=e}},ready:{get:function(){return this._terrainProvider.ready&&(0===this._imageryLayers.length||this._imageryLayers.get(0).imageryProvider.ready)}},tilingScheme:{get:function(){return this._terrainProvider.tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){this._terrainProvider!==e&&(this._terrainProvider=e,l(this._quadtree)&&this._quadtree.invalidateAllTiles())}}}),G.prototype.beginUpdate=function(e,t){this._imageryLayers._update(),this._layerOrderChanged&&(this._layerOrderChanged=!1,this._quadtree.forEachLoadedTile(function(e){e.data.imagery.sort(z)}));var i,r,n=this._tilesToRenderByTextureCount;for(i=0,r=n.length;r>i;++i){var o=n[i];l(o)&&(o.length=0)}this._usedDrawCommands=0;var a=t.creditDisplay;this._terrainProvider.ready&&l(this._terrainProvider.credit)&&a.addCredit(this._terrainProvider.credit);var s=this._imageryLayers;for(i=0,r=s.length;r>i;++i){var u=s.get(i).imageryProvider;u.ready&&l(u.credit)&&a.addCredit(u.credit)}},G.prototype.endUpdate=function(e,t,i){l(this._renderState)||(this._renderState=e.createRenderState({cull:{enabled:!0},depthTest:{enabled:!0}})),l(this._blendRenderState)||(this._blendRenderState=e.createRenderState({cull:{enabled:!0},depthTest:{enabled:!0,func:A.LESS_OR_EQUAL},blending:P.ALPHA_BLEND})),this._renderState.depthTest.enabled=t.mode===B.SCENE3D||t.mode===B.COLUMBUS_VIEW,this._blendRenderState.depthTest.enabled=this._renderState.depthTest.enabled;for(var r=this._tilesToRenderByTextureCount,n=0,o=r.length;o>n;++n){var a=r[n];if(l(a))for(var s=0,u=a.length;u>s;++s)W(this,a[s],e,t,i)}},G.prototype.getLevelMaximumGeometricError=function(e){return this._terrainProvider.getLevelMaximumGeometricError(e)},G.prototype.loadTile=function(e,t,i){R.processStateMachine(i,e,this._terrainProvider,this._imageryLayers)};var H=new e;G.prototype.computeTileVisibility=function(t,i,n){var o=t.data,a=i.cullingVolume,u=s(o.orientedBoundingBox,o.boundingSphere3D);i.mode!==B.SCENE3D&&(u=H,e.fromRectangleWithHeights2D(t.rectangle,i.mapProjection,o.minimumHeight,o.maximumHeight,u),r.fromElements(u.center.z,u.center.x,u.center.y,u.center),i.mode===B.MORPHING&&(u=e.union(o.boundingSphere3D,u,u)));var c=a.computeVisibility(u);if(c===g.OUTSIDE)return E.NONE;if(i.mode===B.SCENE3D){var h=o.occludeePointInScaledSpace;return l(h)?n.ellipsoid.isScaledSpacePointVisible(h)?c:E.NONE:c}return c};var q=p.supportsTypedArrays()?new Float32Array(1):void 0,j=new _,Y=new n,X=new r,Z=new r,J=new r,Q=new r;G.prototype.showTileThisFrame=function(e){for(var t=0,i=e.data.imagery,r=0,n=i.length;n>r;++r){var o=i[r];l(o.readyImagery)&&0!==o.readyImagery.imageryLayer.alpha&&++t}var a=this._tilesToRenderByTextureCount[t];l(a)||(a=[],this._tilesToRenderByTextureCount[t]=a),a.push(e);var s=this._debug;++s.tilesRendered,s.texturesRendered+=t};var K=new r,$=new r,et=new r(0,-1,0),tt=new r(0,0,-1),it=new r;G.prototype.computeDistanceToTile=function(e,t){var i=e.data,n=i.southwestCornerCartesian,o=i.northeastCornerCartesian,a=i.westNormal,s=i.southNormal,l=i.eastNormal,u=i.northNormal,c=i.maximumHeight;t.mode!==B.SCENE3D&&(n=t.mapProjection.project(w.southwest(e.rectangle),K),n.z=n.y,n.y=n.x,n.x=0,o=t.mapProjection.project(w.northeast(e.rectangle),$),o.z=o.y,o.y=o.x,o.x=0,a=et,l=r.UNIT_Y,s=tt,u=r.UNIT_Z,c=0);var h,d=t.camera.positionWC,p=t.camera.positionCartographic,m=r.subtract(d,n,it),f=r.dot(m,a),v=r.dot(m,s),g=r.subtract(d,o,it),_=r.dot(g,l),y=r.dot(g,u);h=t.mode===B.SCENE3D?p.height:d.x;var C=h-c,S=0;return f>0?S+=f*f:_>0&&(S+=_*_),v>0?S+=v*v:y>0&&(S+=y*y),C>0&&(S+=C*C),Math.sqrt(S)},G.prototype.isDestroyed=function(){return!1},G.prototype.destroy=function(){return this._tileProvider=this._tileProvider&&this._tileProvider.destroy(),c(this)},G.prototype._onLayerAdded=function(e){if(e.show){var t=this._terrainProvider;this._quadtree.forEachLoadedTile(function(i){e._createTileImagerySkeletons(i,t)&&(i.state=F.LOADING)}),this._layerOrderChanged=!0}},G.prototype._onLayerRemoved=function(e){this._quadtree.forEachLoadedTile(function(t){for(var i=t.data.imagery,r=-1,n=0,o=0,a=i.length;a>o;++o){var s=i[o],u=s.loadingImagery;if(l(u)||(u=s.readyImagery),u.imageryLayer===e)-1===r&&(r=o),s.freeResources(),++n;else if(-1!==r)break}-1!==r&&i.splice(r,n)})},G.prototype._onLayerMoved=function(){this._layerOrderChanged=!0},G.prototype._onLayerShownOrHidden=function(e,t,i){i?this._onLayerAdded(e,t):this._onLayerRemoved(e,t)};var rt,nt,ot;!function(){function e(e){return new I({geometryInstances:e,appearance:new M({translucent:!1,flat:!0}),asynchronous:!1})}var i,n,o=new m({geometry:t.fromDimensions({dimensions:new r(2,2,2)})}),s=new m({geometry:new S({radius:1})}),u=new _;rt=function(t,r){return t===i?n:(ot(),i=t,u=_.fromRotationTranslation(t.halfAxes,t.center,u),o.modelMatrix=u,o.attributes.color=a.fromColor(r),n=e(o))},nt=function(t,r){return t===i?n:(ot(),i=t,u=_.fromTranslation(t.center,u),u=_.multiplyByUniformScale(u,t.radius,u),s.modelMatrix=u,s.attributes.color=a.fromColor(r),n=e(s))},ot=function(){l(n)&&(n.destroy(),n=void 0,i=void 0)}}();var at=new n(0,0,0,0);return G}),i("Scene/ImageryLayerCollection",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Event","../Core/Math","../Core/Rectangle","../ThirdParty/when","./ImageryLayer"],function(e,t,i,r,n,o,a,s,l,u){"use strict";function c(e,t){var i=e.indexOf(t);return i}function h(e,t,i){var r=e._layers;if(t=a.clamp(t,0,r.length-1),i=a.clamp(i,0,r.length-1),t!==i){var n=r[t];r[t]=r[i],r[i]=n,e._update(),e.layerMoved.raiseEvent(n,i,t)}}var d=function(){this._layers=[],this.layerAdded=new o,this.layerRemoved=new o,this.layerMoved=new o,this.layerShownOrHidden=new o};i(d.prototype,{length:{get:function(){return this._layers.length}}}),d.prototype.add=function(e,i){var r=t(i);r?this._layers.splice(i,0,e):(i=this._layers.length,this._layers.push(e)),this._update(),this.layerAdded.raiseEvent(e,i)},d.prototype.addImageryProvider=function(e,t){var i=new u(e);return this.add(i,t),i},d.prototype.remove=function(t,i){i=e(i,!0);var r=this._layers.indexOf(t);return-1!==r?(this._layers.splice(r,1),this._update(),this.layerRemoved.raiseEvent(t,r),i&&t.destroy(),!0):!1},d.prototype.removeAll=function(t){t=e(t,!0);for(var i=this._layers,r=0,n=i.length;n>r;r++){var o=i[r];this.layerRemoved.raiseEvent(o,r),t&&o.destroy()}this._layers=[]},d.prototype.contains=function(e){return-1!==this.indexOf(e)},d.prototype.indexOf=function(e){return this._layers.indexOf(e)},d.prototype.get=function(e){return this._layers[e]},d.prototype.raise=function(e){var t=c(this._layers,e);h(this,t,t+1)},d.prototype.lower=function(e){var t=c(this._layers,e);h(this,t,t-1)},d.prototype.raiseToTop=function(e){var t=c(this._layers,e);t!==this._layers.length-1&&(this._layers.splice(t,1),this._layers.push(e),this._update(),this.layerMoved.raiseEvent(e,this._layers.length-1,t))},d.prototype.lowerToBottom=function(e){var t=c(this._layers,e);0!==t&&(this._layers.splice(t,1),this._layers.splice(0,0,e),this._update(),this.layerMoved.raiseEvent(e,0,t))};var p=new s;return d.prototype.pickImageryLayerFeatures=function(e,i){var r=i.globe.pick(e,i);if(!t(r))return void 0;var n=i.globe.ellipsoid.cartesianToCartographic(r),o=i.globe._surface._tilesToRender;o.length;for(var u,c=0;!t(u)&&c<o.length;++c){var h=o[c];s.contains(h.rectangle,n)&&(u=h)}if(!t(u))return void 0;u.rectangle;for(var d=u.data.imagery,m=[],f=d.length-1;f>=0;--f){var v=d[f],g=v.readyImagery;if(t(g)){var _=g.imageryLayer.imageryProvider;if(t(_.pickFeatures)&&s.contains(g.rectangle,n)){var y=p,C=1/1024;if(y.west=a.lerp(u.rectangle.west,u.rectangle.east,v.textureCoordinateRectangle.x-C),y.east=a.lerp(u.rectangle.west,u.rectangle.east,v.textureCoordinateRectangle.z+C),y.south=a.lerp(u.rectangle.south,u.rectangle.north,v.textureCoordinateRectangle.y-C),y.north=a.lerp(u.rectangle.south,u.rectangle.north,v.textureCoordinateRectangle.w+C),s.contains(y,n)){var w=_.pickFeatures(g.x,g.y,g.level,n.longitude,n.latitude);t(w)&&m.push(w)}}}}return 0===m.length?void 0:l.all(m,function(e){for(var i=[],r=0;r<e.length;++r){var o=e[r];if(t(o)&&o.length>0)for(var a=0;a<o.length;++a){var s=o[a];t(s.position)||(s.position=n),i.push(s)}}return i})},d.prototype.isDestroyed=function(){return!1},d.prototype.destroy=function(){return this.removeAll(!0),r(this)},d.prototype._update=function(){for(var e,i,r=!0,n=this._layers,o=0,a=n.length;a>o;++o)i=n[o],i._layerIndex=o,i.show?(i._isBaseLayer=r,r=!1):i._isBaseLayer=!1,i.show!==i._show&&(t(i._show)&&(t(e)||(e=[]),e.push(i)),i._show=i.show);if(t(e))for(o=0,a=e.length;a>o;++o)i=e[o],this.layerShownOrHidden.raiseEvent(i,i._layerIndex,i.show)},d}),i("Scene/QuadtreeOccluders",["../Core/Cartesian3","../Core/defineProperties","../Core/EllipsoidalOccluder"],function(e,t,i){"use strict";var r=function(t){this._ellipsoid=new i(t.ellipsoid,e.ZERO)};return t(r.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),r}),i("Scene/QuadtreeTile",["../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Rectangle","./QuadtreeTileLoadState"],function(e,t,i,r,n){"use strict";var o=function(e){this._tilingScheme=e.tilingScheme,this._x=e.x,this._y=e.y,this._level=e.level,this._parent=e.parent,this._rectangle=this._tilingScheme.tileXYToRectangle(this._x,this._y,this._level),this._children=void 0,this._replacementPrevious=void 0,this._replacementNext=void 0,this._distance=0,this._customData=[],this._frameUpdated=void 0,this._frameRendered=void 0,this.state=n.START,this.renderable=!1,this.upsampledFromParent=!1,this.data=void 0};return o.createLevelZeroTiles=function(t){if(!e(t))throw new i("tilingScheme is required.");for(var r=t.getNumberOfXTilesAtLevel(0),n=t.getNumberOfYTilesAtLevel(0),a=new Array(r*n),s=0,l=0;n>l;++l)for(var u=0;r>u;++u)a[s++]=new o({tilingScheme:t,x:u,y:l,level:0});return a},o.prototype._updateCustomData=function(t,i,n){var o,a,s,l=this.customData;if(e(i)&&e(n)){for(o=0;o<n.length;++o){a=n[o];for(var u=0;u<l.length;++u)if(l[u]===a){l.splice(u,1);break}}for(s=this._rectangle,o=0;o<i.length;++o)a=i[o],r.contains(s,a.positionCartographic)&&l.push(a);this._frameUpdated=t}else{var c=this._parent;if(e(c)&&this._frameUpdated!==c._frameUpdated){l.length=0,s=this._rectangle;var h=c.customData;for(o=0;o<h.length;++o)a=h[o],r.contains(s,a.positionCartographic)&&l.push(a);this._frameUpdated=c._frameUpdated}}},t(o.prototype,{tilingScheme:{get:function(){return this._tilingScheme}},x:{get:function(){return this._x}},y:{get:function(){return this._y}},level:{get:function(){return this._level}},parent:{get:function(){return this._parent}},rectangle:{get:function(){return this._rectangle}},children:{get:function(){if(!e(this._children)){var t=this.tilingScheme,i=this.level+1,r=2*this.x,n=2*this.y;this._children=[new o({tilingScheme:t,x:r,y:n,level:i,parent:this}),new o({tilingScheme:t,x:r+1,y:n,level:i,parent:this}),new o({tilingScheme:t,x:r,y:n+1,level:i,parent:this}),new o({tilingScheme:t,x:r+1,y:n+1,level:i,parent:this})]}return this._children}},customData:{get:function(){return this._customData}},needsLoading:{get:function(){return this.state<n.DONE}},eligibleForUnloading:{get:function(){var t=!0;return e(this.data)&&(t=this.data.eligibleForUnloading,e(t)||(t=!0)),t}}}),o.prototype.freeResources=function(){if(this.state=n.START,this.renderable=!1,this.upsampledFromParent=!1,e(this.data)&&e(this.data.freeResources)&&this.data.freeResources(),e(this._children)){for(var t=0,i=this._children.length;i>t;++t)this._children[t].freeResources();this._children=void 0}},o}),i("Scene/TileReplacementQueue",["../Core/defined"],function(e){"use strict";function t(e,t){var i=t.replacementPrevious,r=t.replacementNext;t===e._lastBeforeStartOfFrame&&(e._lastBeforeStartOfFrame=r),t===e.head?e.head=r:i.replacementNext=r,t===e.tail?e.tail=i:r.replacementPrevious=i,t.replacementPrevious=void 0,t.replacementNext=void 0,--e.count}var i=function(){this.head=void 0,this.tail=void 0,this.count=0,this._lastBeforeStartOfFrame=void 0};return i.prototype.markStartOfRenderFrame=function(){this._lastBeforeStartOfFrame=this.head},i.prototype.trimTiles=function(i){for(var r=this.tail,n=!0;n&&e(this._lastBeforeStartOfFrame)&&this.count>i&&e(r);){n=r!==this._lastBeforeStartOfFrame;var o=r.replacementPrevious;r.eligibleForUnloading&&(r.freeResources(),t(this,r)),r=o}},i.prototype.markTileRendered=function(i){var r=this.head;return r===i?(i===this._lastBeforeStartOfFrame&&(this._lastBeforeStartOfFrame=i.replacementNext),void 0):(++this.count,e(r)?((e(i.replacementPrevious)||e(i.replacementNext))&&t(this,i),i.replacementPrevious=void 0,i.replacementNext=r,r.replacementPrevious=i,this.head=i,void 0):(i.replacementPrevious=void 0,i.replacementNext=void 0,this.head=i,this.tail=i,void 0))},i}),i("Scene/QuadtreePrimitive",["../Core/Cartesian3","../Core/Cartographic","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/getTimestamp","../Core/Queue","../Core/Ray","../Core/Rectangle","../Core/Visibility","./QuadtreeOccluders","./QuadtreeTile","./QuadtreeTileLoadState","./SceneMode","./TileReplacementQueue"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v){"use strict";function g(e,t,i){var n=e._debug;if(!n.suspendLodUpdate){var o,a,s=e._tilesToRender;s.length=0;var l=e._tileTraversalQueue;if(l.clear(),n.maxDepth=0,n.tilesVisited=0,n.tilesCulled=0,n.tilesRendered=0,n.tilesWaitingForChildren=0,e._tileLoadQueue.length=0,e._tileReplacementQueue.markStartOfRenderFrame(),!r(e._levelZeroTiles)){if(!e._tileProvider.ready)return;var u=e._tileProvider.tilingScheme;e._levelZeroTiles=p.createLevelZeroTiles(u)}e._occluders.ellipsoid.cameraPosition=i.camera.positionWC;var c,d=e._tileProvider,m=e._occluders,f=e._levelZeroTiles,v=e._addHeightCallbacks,g=e._removeHeightCallbacks,y=i.frameNumber;if(v.length>0||g.length>0){for(o=0,a=f.length;a>o;++o)c=f[o],c._updateCustomData(y,v,g);v.length=0,g.length=0}for(o=0,a=f.length;a>o;++o)c=f[o],e._tileReplacementQueue.markTileRendered(c),c.needsLoading&&S(e,c),c.renderable&&d.computeTileVisibility(c,i,m)!==h.NONE?l.enqueue(c):(++n.tilesCulled,c.renderable||++n.tilesWaitingForChildren);for(;r(c=l.dequeue());)if(++n.tilesVisited,e._tileReplacementQueue.markTileRendered(c),c._updateCustomData(y),c.level>n.maxDepth&&(n.maxDepth=c.level),_(e,t,i,c)<e.maximumScreenSpaceError)C(e,c);else if(w(e,c)){var E=c.children;for(o=0,a=E.length;a>o;++o)d.computeTileVisibility(E[o],i,m)!==h.NONE?l.enqueue(E[o]):++n.tilesCulled}else C(e,c);n.enableDebugOutput&&(n.tilesVisited!==n.lastTilesVisited||n.tilesRendered!==n.lastTilesRendered||n.tilesCulled!==n.lastTilesCulled||n.maxDepth!==n.lastMaxDepth||n.tilesWaitingForChildren!==n.lastTilesWaitingForChildren)&&(console.log("Visited "+n.tilesVisited+", Rendered: "+n.tilesRendered+", Culled: "+n.tilesCulled+", Max Depth: "+n.maxDepth+", Waiting for children: "+n.tilesWaitingForChildren),n.lastTilesVisited=n.tilesVisited,n.lastTilesRendered=n.tilesRendered,n.lastTilesCulled=n.tilesCulled,n.lastMaxDepth=n.maxDepth,n.lastTilesWaitingForChildren=n.tilesWaitingForChildren)}}function _(e,t,i,r){if(i.mode===f.SCENE2D)return y(e,t,i,r);var n=e._tileProvider.getLevelMaximumGeometricError(r.level),o=e._tileProvider.computeDistanceToTile(r,i);r._distance=o;var a=t.drawingBufferHeight,s=i.camera,l=s.frustum,u=l.fovy;return n*a/(2*o*Math.tan(.5*u))}function y(e,t,i,r){var n=i.camera,o=n.frustum,a=t.drawingBufferWidth,s=t.drawingBufferHeight,l=e._tileProvider.getLevelMaximumGeometricError(r.level),u=Math.max(o.top-o.bottom,o.right-o.left)/Math.max(a,s);return l/u}function C(e,t){e._tilesToRender.push(t),++e._debug.tilesRendered}function w(e,t){for(var i=!0,r=!0,n=t.children,o=0,a=n.length;a>o;++o){var s=n[o];e._tileReplacementQueue.markTileRendered(s),r=r&&s.upsampledFromParent,i=i&&s.renderable,s.needsLoading&&S(e,s)}return i||++e._debug.tilesWaitingForChildren,i&&!r}function S(e,t){e._tileLoadQueue.push(t)}function E(e,t,i){var r=e._tileLoadQueue,n=e._tileProvider;if(0!==r.length){e._tileReplacementQueue.trimTiles(e.tileCacheSize);for(var o=s(),a=e._loadQueueTimeSlice,l=o+a,u=r.length-1,c=u;c>=0;--c){var h=r[c];if(e._tileReplacementQueue.markTileRendered(h),n.loadTile(t,i,h),s()>=l)break}}}function b(i,n){for(var o=i._tileToUpdateHeights,a=i._tileProvider.terrainProvider,l=s(),u=i._updateHeightsTimeSlice,h=l+u,d=n.mode,p=n.mapProjection,m=p.ellipsoid;o.length>0;){var v=o[o.length-1];v!==i._lastTileUpdated&&(i._lastTileIndex=0);for(var g=v.customData,_=g.length,y=!1,C=i._lastTileIndex;_>C;++C){var w=g[C];if(v.level>w.level){r(w.position)||(w.position=m.cartographicToCartesian(w.positionCartographic)),d===f.SCENE3D?(e.clone(e.ZERO,A.origin),e.normalize(w.position,A.direction)):(t.clone(w.positionCartographic,D),D.height=-11500,p.project(D,M),e.fromElements(M.z,M.x,M.y,M),e.clone(M,A.origin),e.clone(e.UNIT_X,A.direction));var S=v.data.pick(A,d,p,!1,M);r(S)&&w.callback(S),w.level=v.level}else if(v.level===w.level){for(var E,b=v.children,x=b.length,T=0;x>T&&(E=b[T],!c.contains(E.rectangle,w.positionCartographic));++T);var P=a.getTileDataAvailable(E.x,E.y,E.level);(r(P)&&!P||r(parent)&&r(parent.data)&&r(parent.data.terrainData)&&!parent.data.terrainData.isChildAvailable(parent.x,parent.y,E.x,E.y))&&w.removeFunc()}if(s()>=h){y=!0;break}}if(y){i._lastTileUpdated=v,i._lastTileIndex=C;break}o.pop()}}function x(e,t){return e._distance-t._distance}function T(e,t,i,r){var n=e._tileProvider,o=e._tilesToRender,a=e._tileToUpdateHeights;o.sort(x);for(var s=0,l=o.length;l>s;++s){var u=o[s];n.showTileThisFrame(u,t,i,r),u._frameRendered!==i.frameNumber-1&&a.push(u),u._frameRendered=i.frameNumber}b(e,i)}var P=function(e){this._tileProvider=e.tileProvider,this._tileProvider.quadtree=this,this._debug={enableDebugOutput:!1,maxDepth:0,tilesVisited:0,tilesCulled:0,tilesRendered:0,tilesWaitingForChildren:0,lastMaxDepth:-1,lastTilesVisited:-1,lastTilesCulled:-1,lastTilesRendered:-1,lastTilesWaitingForChildren:-1,suspendLodUpdate:!1};var t=this._tileProvider.tilingScheme,r=t.ellipsoid;this._tilesToRender=[],this._tileTraversalQueue=new l,this._tileLoadQueue=[],this._tileReplacementQueue=new v,this._levelZeroTiles=void 0,this._levelZeroTilesReady=!1,this._loadQueueTimeSlice=5,this._addHeightCallbacks=[],this._removeHeightCallbacks=[],this._tileToUpdateHeights=[],this._lastTileIndex=0,this._updateHeightsTimeSlice=2,this.maximumScreenSpaceError=i(e.maximumScreenSpaceError,2),this.tileCacheSize=i(e.tileCacheSize,100),this._occluders=new d({ellipsoid:r})};n(P.prototype,{tileProvider:{get:function(){return this._tileProvider}}}),P.prototype.invalidateAllTiles=function(){var e=this._tileReplacementQueue;e.head=void 0,e.tail=void 0,e.count=0;var t=this._levelZeroTiles;if(r(t))for(var i=0;i<t.length;++i){for(var n=t[i],o=n.customData,a=o.length,s=0;a>s;++s){var l=o[s];l.level=0,this._addHeightCallbacks.push(l)}t[i].freeResources()}this._levelZeroTiles=void 0},P.prototype.forEachLoadedTile=function(e){for(var t=this._tileReplacementQueue.head;r(t);)t.state!==m.START&&e(t),t=t.replacementNext},P.prototype.forEachRenderedTile=function(e){for(var t=this._tilesToRender,i=0,r=t.length;r>i;++i)e(t[i])},P.prototype.updateHeight=function(e,t){var i=this,r={position:void 0,positionCartographic:e,level:-1,callback:t};return r.removeFunc=function(){i._removeHeightCallbacks.push(r)},i._addHeightCallbacks.push(r),r.removeFunc},P.prototype.update=function(e,t,i){this._tileProvider.beginUpdate(e,t,i),g(this,e,t),E(this,e,t),T(this,e,t,i),this._tileProvider.endUpdate(e,t,i)},P.prototype.isDestroyed=function(){return!1},P.prototype.destroy=function(){this._tileProvider=this._tileProvider&&this._tileProvider.destroy()};var A=new u,D=new t,M=new e;return P}),i("Scene/Globe",["../Core/BoundingRectangle","../Core/BoundingSphere","../Core/buildModuleUrl","../Core/Cartesian2","../Core/Cartesian3","../Core/Cartographic","../Core/combine","../Core/ComponentDatatype","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Ellipsoid","../Core/EllipsoidTerrainProvider","../Core/FeatureDetection","../Core/GeographicProjection","../Core/Geometry","../Core/GeometryAttribute","../Core/Intersect","../Core/IntersectionTests","../Core/loadImage","../Core/Math","../Core/Matrix4","../Core/Occluder","../Core/PrimitiveType","../Core/Ray","../Core/Rectangle","../Core/Transforms","../Renderer/BufferUsage","../Renderer/ClearCommand","../Renderer/DrawCommand","../Renderer/ShaderSource","../Shaders/GlobeFS","../Shaders/GlobeFSDepth","../Shaders/GlobeFSPole","../Shaders/GlobeVS","../Shaders/GlobeVSDepth","../Shaders/GlobeVSPole","../ThirdParty/when","./DepthFunction","./GlobeSurfaceShaderSet","./GlobeSurfaceTileProvider","./ImageryLayerCollection","./Pass","./QuadtreePrimitive","./SceneMode","./terrainAttributeLocations"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D,M,I,O,R,L,N,F,B,z,k,V,U,W,G,H,q,j,Y){"use strict";function X(e){return function(i,r){var n=t.distanceSquaredTo(i.pickBoundingSphere,e),o=t.distanceSquaredTo(r.pickBoundingSphere,e);return n-o}}function Z(e,t){var i=e._ellipsoid.radii,r=t.camera.positionWC,o=n.multiplyComponents(e._ellipsoid.oneOverRadii,r,at),a=n.magnitude(o),s=n.normalize(o,st),l=n.normalize(n.cross(n.UNIT_Z,o,lt),lt),u=n.normalize(n.cross(s,l,ut),ut),c=Math.sqrt(n.magnitudeSquared(o)-1),h=n.multiplyByScalar(s,1/a,at),d=c/a,p=n.multiplyByScalar(l,d,st),m=n.multiplyByScalar(u,d,lt),f=n.add(h,m,ut);n.subtract(f,p,f),n.multiplyComponents(i,f,f),n.pack(f,ot,0);var v=n.subtract(h,m,ut);n.subtract(v,p,v),n.multiplyComponents(i,v,v),n.pack(v,ot,3);var g=n.add(h,m,ut);n.add(g,p,g),n.multiplyComponents(i,g,g),n.pack(g,ot,6);var _=n.subtract(h,m,ut);return n.add(_,p,_),n.multiplyComponents(i,_,_),n.pack(_,ot,9),ot}function J(t,i,r,o,a,s){pt.longitude=0,pt.latitude=o;var l=t._ellipsoid.cartographicToCartesian(pt,mt);pt.longitude=Math.PI;var u=t._ellipsoid.cartographicToCartesian(pt,ft),c=.5*n.magnitude(n.subtract(l,u,ct),ct);pt.longitude=0,pt.latitude=r;var h,d=t._ellipsoid.cartographicToCartesian(pt,mt),p=i.camera.direction;h=1-n.dot(dt,p)<S.EPSILON6?n.UNIT_X:n.normalize(n.cross(p,n.UNIT_Z,ct),ct);var m=n.add(d,n.multiplyByScalar(h,c,ct),ct),f=n.add(d,n.multiplyByScalar(n.normalize(n.cross(n.UNIT_Z,h,ht),ht),c,ht),ht);A.pointToGLWindowCoordinates(a,s,d,d),A.pointToGLWindowCoordinates(a,s,m,m),A.pointToGLWindowCoordinates(a,s,f,f);var v=Math.floor(Math.max(n.distance(f,d),n.distance(m,d))),g=v;return new e(Math.floor(d.x)-v,Math.floor(d.y)-g,2*v,2*g)}function Q(e,i,r){var n=e.terrainProvider;if(r.mode===j.SCENE3D&&n.ready){var o=n.tilingScheme.rectangle,l=i.uniformState.viewProjection,c=vt;c.width=i.drawingBufferWidth,c.height=i.drawingBufferHeight;var h,d,p,m,f,v,C,w=E.computeViewportTransformation(c,0,1,gt),x=.05,T=e._occluder;o.north<S.PI_OVER_TWO&&(h=new P(-Math.PI,o.north,Math.PI,S.PI_OVER_TWO),d=t.fromRectangle3D(h,e._ellipsoid),p=r.cullingVolume.computeVisibility(d)===y.OUTSIDE,m=b.computeOccludeePointFromRectangle(h,e._ellipsoid),f=m&&!T.isPointVisible(m,0)||!T.isBoundingSphereVisible(d),e._drawNorthPole=!p&&!f,e._drawNorthPole&&(C=J(e,r,h.north,h.south-x,l,w),_t[0]=C.x,_t[1]=C.y,_t[2]=C.x+C.width,_t[3]=C.y,_t[4]=C.x+C.width,_t[5]=C.y+C.height,_t[6]=C.x,_t[7]=C.y+C.height,u(e._northPoleCommand.vertexArray)?e._northPoleCommand.vertexArray.getAttribute(0).vertexBuffer.copyFromArrayView(_t):(e._northPoleCommand.boundingVolume=t.fromRectangle3D(h,e._ellipsoid),v=new g({attributes:{position:new _({componentDatatype:s.FLOAT,componentsPerAttribute:2,values:_t})}}),e._northPoleCommand.vertexArray=i.createVertexArrayFromGeometry({geometry:v,attributeLocations:{position:0},bufferUsage:D.STREAM_DRAW})))),o.south>-S.PI_OVER_TWO&&(h=new P(-Math.PI,-S.PI_OVER_TWO,Math.PI,o.south),d=t.fromRectangle3D(h,e._ellipsoid),p=r.cullingVolume.computeVisibility(d)===y.OUTSIDE,m=b.computeOccludeePointFromRectangle(h,e._ellipsoid),f=m&&!T.isPointVisible(m)||!T.isBoundingSphereVisible(d),e._drawSouthPole=!p&&!f,e._drawSouthPole&&(C=J(e,r,h.south,h.north+x,l,w),_t[0]=C.x,_t[1]=C.y,_t[2]=C.x+C.width,_t[3]=C.y,_t[4]=C.x+C.width,_t[5]=C.y+C.height,_t[6]=C.x,_t[7]=C.y+C.height,u(e._southPoleCommand.vertexArray)?e._southPoleCommand.vertexArray.getAttribute(0).vertexBuffer.copyFromArrayView(_t):(e._southPoleCommand.boundingVolume=t.fromRectangle3D(h,e._ellipsoid),v=new g({attributes:{position:new _({componentDatatype:s.FLOAT,componentsPerAttribute:2,values:_t})}}),e._southPoleCommand.vertexArray=i.createVertexArrayFromGeometry({geometry:v,attributeLocations:{position:0},bufferUsage:D.STREAM_DRAW}))));var A=0,M=e._imageryLayerCollection.length>0?e._imageryLayerCollection.get(0):void 0;u(M)&&u(M.imageryProvider)&&u(M.imageryProvider.getPoleIntensity)&&(A=M.imageryProvider.getPoleIntensity());var I={u_dayIntensity:function(){return A}};if(!u(e._northPoleCommand.uniformMap)){var O=a(I,{u_color:function(){return e.northPoleColor}});e._northPoleCommand.uniformMap=a(O,e._drawUniforms)}if(!u(e._southPoleCommand.uniformMap)){var R=a(I,{u_color:function(){return e.southPoleColor}});e._southPoleCommand.uniformMap=a(R,e._drawUniforms)}}}var K=function(e){e=l(e,p.WGS84);var o=new m({ellipsoid:e}),a=new G;this._ellipsoid=e,this._imageryLayerCollection=a,this._surfaceShaderSet=new U,this._surfaceShaderSet.baseVertexShaderSource=new O({sources:[F]}),this._surfaceShaderSet.baseFragmentShaderSource=new O({sources:[R]}),this._surface=new q({tileProvider:new W({terrainProvider:o,imageryLayers:a,surfaceShaderSet:this._surfaceShaderSet})}),this._occluder=new b(new t(n.ZERO,e.minimumRadius),n.ZERO),this._rsColor=void 0,this._rsColorWithoutDepthTest=void 0,this._clearDepthCommand=new M({depth:1,stencil:0,owner:this}),this._depthCommand=new I({boundingVolume:new t(n.ZERO,e.maximumRadius),pass:H.OPAQUE,owner:this}),this._northPoleCommand=new I({pass:H.OPAQUE,owner:this}),this._southPoleCommand=new I({pass:H.OPAQUE,owner:this}),this._drawNorthPole=!1,this._drawSouthPole=!1,this._mode=j.SCENE3D,this.terrainProvider=o,this.northPoleColor=new n(2/255,6/255,18/255),this.southPoleColor=new n(1,1,1),this.show=!0,this.oceanNormalMapUrl=i("Assets/Textures/waterNormalsSmall.jpg"),this._oceanNormalMapUrl=void 0,this.depthTestAgainstTerrain=!1,this.maximumScreenSpaceError=2,this.tileCacheSize=100,this.enableLighting=!1,this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.showWaterEffect=!0,this._oceanNormalMap=void 0,this._zoomedOutOceanSpecularIntensity=.5,this._lightingFadeDistance=new r(this.lightingFadeOutDistance,this.lightingFadeInDistance);var s=this;this._drawUniforms={u_zoomedOutOceanSpecularIntensity:function(){return s._zoomedOutOceanSpecularIntensity +},u_oceanNormalMap:function(){return s._oceanNormalMap},u_lightingFadeDistance:function(){return s._lightingFadeDistance}}};c(K.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},imageryLayers:{get:function(){return this._imageryLayerCollection}},baseColor:{get:function(){return this._surface.tileProvider.baseColor},set:function(e){this._surface.tileProvider.baseColor=e}}});var $=[],et={start:0,stop:0};K.prototype.pick=function(e,i,r){var o=i.mode,a=i.mapProjection,s=$;s.length=0;var l,c,h=this._surface._tilesToRender,d=h.length;for(c=0;d>c;++c){l=h[c];var p=l.data;if(u(p)){var m=p.pickBoundingSphere;o!==j.SCENE3D?(t.fromRectangleWithHeights2D(l.rectangle,a,p.minimumHeight,p.maximumHeight,m),n.fromElements(m.center.z,m.center.x,m.center.y,m.center)):t.clone(p.boundingSphere3D,m);var f=C.raySphere(e,m,et);u(f)&&s.push(p)}}s.sort(X(e.origin));var v;for(d=s.length,c=0;d>c&&(v=s[c].pick(e,i.mode,i.mapProjection,!0,r),!u(v));++c);return v};var tt=new n,it=new n,rt=new o,nt=new T;K.prototype.getHeight=function(e){var t=this._surface._levelZeroTiles;if(u(t)){var i,r,o=t.length;for(r=0;o>r&&(i=t[r],!P.contains(i.rectangle,e));++r);if(!u(i)||!P.contains(i.rectangle,e))return void 0;for(;i.renderable;){var a=i.children;for(o=a.length,r=0;o>r&&(i=a[r],!P.contains(i.rectangle,e));++r);}for(;u(i)&&(!u(i.data)||!u(i.data.pickTerrain));)i=i.parent;if(!u(i))return void 0;var s=this._surface._tileProvider.tilingScheme.ellipsoid,l=s.cartographicToCartesian(e,tt),c=nt;n.normalize(l,c.direction);var h=i.data.pick(c,void 0,void 0,!1,it);return u(h)?s.cartesianToCartographic(h,rt).height:void 0}};var ot=f.supportsTypedArrays()?new Float32Array(12):[],at=new n,st=new n,lt=new n,ut=new n,ct=new n,ht=new n,dt=n.negate(n.UNIT_Z,new n),pt=new o(0,0),mt=new n,ft=new n,vt=new e,gt=new E,_t=f.supportsTypedArrays()?new Float32Array(8):[];return K.prototype.update=function(e,t,i){if(this.show){var r=e.drawingBufferWidth,n=e.drawingBufferHeight;if(0!==r&&0!==n){var o=t.mode;t.mapProjection;var a=!1;this._mode===o&&u(this._rsColor)||(a=!0,o===j.SCENE3D||o===j.COLUMBUS_VIEW?(this._rsColor=e.createRenderState({cull:{enabled:!0},depthTest:{enabled:!0}}),this._rsColorWithoutDepthTest=e.createRenderState({cull:{enabled:!0}}),this._depthCommand.renderState=e.createRenderState({cull:{enabled:!0},depthTest:{enabled:!0,func:V.ALWAYS},colorMask:{red:!1,green:!1,blue:!1,alpha:!1}})):(this._rsColor=e.createRenderState({cull:{enabled:!0}}),this._rsColorWithoutDepthTest=e.createRenderState({cull:{enabled:!0}}))),this._mode=o;var l=this._northPoleCommand,c=this._southPoleCommand;l.renderState=this._rsColorWithoutDepthTest,c.renderState=this._rsColorWithoutDepthTest;var h=Z(this,t);if(this._depthCommand.vertexArray)this._depthCommand.vertexArray.getAttribute(0).vertexBuffer.copyFromArrayView(h);else{var d=new g({attributes:{position:new _({componentDatatype:s.FLOAT,componentsPerAttribute:3,values:h})},indices:[0,1,2,2,1,3],primitiveType:x.TRIANGLES});this._depthCommand.vertexArray=e.createVertexArrayFromGeometry({geometry:d,attributeLocations:{position:0},bufferUsage:D.DYNAMIC_DRAW})}u(this._depthCommand.shaderProgram)||(this._depthCommand.shaderProgram=e.createShaderProgram(B,L,{position:0}));var p=this._surface,m=p.tileProvider,f=this.terrainProvider,v=this.showWaterEffect&&f.ready&&f.hasWaterMask;if(v&&this.oceanNormalMapUrl!==this._oceanNormalMapUrl){var y=this.oceanNormalMapUrl;if(this._oceanNormalMapUrl=y,u(y)){var C=this;k(w(y),function(t){y===C.oceanNormalMapUrl&&(C._oceanNormalMap=C._oceanNormalMap&&C._oceanNormalMap.destroy(),C._oceanNormalMap=e.createTexture2D({source:t}))})}else this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy()}if(!u(l.shaderProgram)||!u(c.shaderProgram)){var S=e.replaceShaderProgram(l.shaderProgram,z,N,Y);l.shaderProgram=S,c.shaderProgram=S}this._occluder.cameraPosition=t.camera.positionWC,Q(this,e,t);var E=t.passes;E.render&&(o===j.SCENE3D&&(this._drawNorthPole&&i.push(l),this._drawSouthPole&&i.push(c)),this._zoomedOutOceanSpecularIntensity=o===j.SCENE3D?.5:0,p.maximumScreenSpaceError=this.maximumScreenSpaceError,p.tileCacheSize=this.tileCacheSize,m.terrainProvider=this.terrainProvider,m.lightingFadeOutDistance=this.lightingFadeOutDistance,m.lightingFadeInDistance=this.lightingFadeInDistance,m.zoomedOutOceanSpecularIntensity=this._zoomedOutOceanSpecularIntensity,m.hasWaterMask=v,m.oceanNormalMap=this._oceanNormalMap,m.enableLighting=this.enableLighting,p.update(e,t,i),(o===j.SCENE3D||o===j.COLUMBUS_VIEW)&&(this.depthTestAgainstTerrain||(i.push(this._clearDepthCommand),o===j.SCENE3D&&i.push(this._depthCommand)))),E.pick&&o===j.SCENE3D&&i.push(this._depthCommand)}}},K.prototype.isDestroyed=function(){return!1},K.prototype.destroy=function(){return this._northPoleCommand.vertexArray=this._northPoleCommand.vertexArray&&this._northPoleCommand.vertexArray.destroy(),this._southPoleCommand.vertexArray=this._southPoleCommand.vertexArray&&this._southPoleCommand.vertexArray.destroy(),this._surfaceShaderSet=this._surfaceShaderSet&&this._surfaceShaderSet.destroy(),this._northPoleCommand.shaderProgram=this._northPoleCommand.shaderProgram&&this._northPoleCommand.shaderProgram.destroy(),this._southPoleCommand.shaderProgram=this._northPoleCommand.shaderProgram,this._depthCommand.shaderProgram=this._depthCommand.shaderProgram&&this._depthCommand.shaderProgram.destroy(),this._depthCommand.vertexArray=this._depthCommand.vertexArray&&this._depthCommand.vertexArray.destroy(),this._surface=this._surface&&this._surface.destroy(),this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy(),h(this)},K}),i("Shaders/PostProcessFilters/PassThrough",[],function(){"use strict";return"uniform sampler2D u_texture;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\ngl_FragColor = texture2D(u_texture, v_textureCoordinates);\n}\n"}),i("Scene/GlobeDepth",["../Core/Color","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/PixelFormat","../Renderer/ClearCommand","../Renderer/PixelDatatype","../Shaders/PostProcessFilters/PassThrough"],function(e,t,i,r,n,o,a,s){"use strict";function l(e,i,r){if(!t(e._debugGlobeDepthViewportCommand)){var n="uniform sampler2D u_texture;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\n float z_window = czm_unpackDepth(texture2D(u_texture, v_textureCoordinates));\n float n_range = czm_depthRange.near;\n float f_range = czm_depthRange.far;\n float z_ndc = (2.0 * z_window - n_range - f_range) / (f_range - n_range);\n float scale = pow(z_ndc * 0.5 + 0.5, 8.0);\n gl_FragColor = vec4(mix(vec3(0.0), vec3(1.0), scale), 1.0);\n}\n";e._debugGlobeDepthViewportCommand=i.createViewportQuadCommand(n,{uniformMap:{u_texture:function(){return e._globeDepthTexture}},owner:e})}e._debugGlobeDepthViewportCommand.execute(i,r)}function u(e){e._colorTexture=e._colorTexture&&!e._colorTexture.isDestroyed()&&e._colorTexture.destroy(),e._depthStencilTexture=e._depthStencilTexture&&!e._depthStencilTexture.isDestroyed()&&e._depthStencilTexture.destroy(),e._globeDepthTexture=e._globeDepthTexture&&!e._globeDepthTexture.isDestroyed()&&e._globeDepthTexture.destroy()}function c(e){e.framebuffer=e.framebuffer&&!e.framebuffer.isDestroyed()&&e.framebuffer.destroy(),e._copyDepthFramebuffer=e._copyDepthFramebuffer&&!e._copyDepthFramebuffer.isDestroyed()&&e._copyDepthFramebuffer.destroy()}function h(e,t,i,r){e._colorTexture=t.createTexture2D({width:i,height:r,pixelFormat:n.RGBA,pixelDatatype:a.UNSIGNED_BYTE}),e._depthStencilTexture=t.createTexture2D({width:i,height:r,pixelFormat:n.DEPTH_STENCIL,pixelDatatype:a.UNSIGNED_INT_24_8_WEBGL}),e._globeDepthTexture=t.createTexture2D({width:i,height:r,pixelFormat:n.RGBA,pixelDatatype:a.UNSIGNED_BYTE})}function d(e,t,i,r){u(e),c(e),h(e,t,i,r),e.framebuffer=t.createFramebuffer({colorTextures:[e._colorTexture],depthStencilTexture:e._depthStencilTexture,destroyAttachments:!1}),e._copyDepthFramebuffer=t.createFramebuffer({colorTextures:[e._globeDepthTexture],destroyAttachments:!1})}function p(e,i){var r=i.drawingBufferWidth,n=i.drawingBufferHeight,o=e._colorTexture,a=!t(o)||o.width!==r||o.height!==n;(!t(e.framebuffer)||a)&&d(e,i,r,n)}function m(i,r){if(!t(i._copyDepthCommand)){var n="uniform sampler2D u_texture;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\n gl_FragColor = czm_packDepth(texture2D(u_texture, v_textureCoordinates).r);\n}\n";i._copyDepthCommand=r.createViewportQuadCommand(n,{renderState:r.createRenderState(),uniformMap:{u_texture:function(){return i._depthStencilTexture}},owner:i})}i._copyDepthCommand.framebuffer=i._copyDepthFramebuffer,t(i._copyColorCommand)||(i._copyColorCommand=r.createViewportQuadCommand(s,{renderState:r.createRenderState(),uniformMap:{u_texture:function(){return i._colorTexture}},owner:i})),t(i._clearColorCommand)||(i._clearColorCommand=new o({color:new e(0,0,0,0),owner:i})),i._clearColorCommand.framebuffer=i.framebuffer}var f=function(){this._colorTexture=void 0,this._depthStencilTexture=void 0,this._globeDepthTexture=void 0,this.framebuffer=void 0,this._copyDepthFramebuffer=void 0,this._clearColorCommand=void 0,this._copyColorCommand=void 0,this._copyDepthCommand=void 0,this._debugGlobeDepthViewportCommand=void 0};return f.prototype.executeDebugGlobeDepth=function(e,t){l(this,e,t)},f.prototype.update=function(e){p(this,e),m(this,e),e.uniformState.globeDepthTexture=void 0},f.prototype.executeCopyDepth=function(e,i){t(this._copyDepthCommand)&&(this._copyDepthCommand.execute(e,i),e.uniformState.globeDepthTexture=this._globeDepthTexture)},f.prototype.executeCopyColor=function(e,i){t(this._copyColorCommand)&&this._copyColorCommand.execute(e,i)},f.prototype.clear=function(i,r,n){var o=this._clearColorCommand;t(o)&&(e.clone(n,o.color),o.execute(i,r))},f.prototype.isDestroyed=function(){return!1},f.prototype.destroy=function(){u(this),c(this),t(this._copyColorCommand)&&(this._copyColorCommand.shaderProgram=this._copyColorCommand.shaderProgram.destroy()),t(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=this._copyDepthCommand.shaderProgram.destroy());var e=this._debugGlobeDepthViewportCommand;return t(e)&&(e.shaderProgram=e.shaderProgram.destroy()),r(this)},f}),i("Scene/GoogleEarthImageryProvider",["../Core/Credit","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/GeographicTilingScheme","../Core/loadText","../Core/Rectangle","../Core/RuntimeError","../Core/TileProviderError","../Core/WebMercatorTilingScheme","../ThirdParty/when","./ImageryProvider"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p){"use strict";function m(e,t,r,n){var o=e._imageUrlTemplate;o=o.replace("{x}",t),o=o.replace("{y}",r),o=o.replace("{zoom}",n+1);var a=e._proxy;return i(a)&&(o=a.getURL(o)),o}var f=function v(r){function n(e){var t;try{t=JSON.parse(e)}catch(n){t=JSON.parse(e.replace(/([\[\{,])[\n\r ]*([A-Za-z0-9]+)[\n\r ]*:/g,'$1"$2":'))}for(var o,s=0;s<t.layers.length;s++)if(t.layers[s].id===_._channel){o=t.layers[s];break}var d;if(!i(o))throw d="Could not find layer with channel (id) of "+_._channel+".",f=c.handleError(f,_,_._errorEvent,d,void 0,void 0,void 0,m),new u(d);if(!i(o.version))throw d="Could not find a version in channel (id) "+_._channel+".",f=c.handleError(f,_,_._errorEvent,d,void 0,void 0,void 0,m),new u(d);if(_._version=o.version,i(t.projection)&&"flat"===t.projection)_._tilingScheme=new a({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new l(-Math.PI,-Math.PI,Math.PI,Math.PI),ellipsoid:r.ellipsoid});else{if(i(t.projection)&&"mercator"!==t.projection)throw d="Unsupported projection "+t.projection+".",f=c.handleError(f,_,_._errorEvent,d,void 0,void 0,void 0,m),new u(d);_._tilingScheme=new h({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:r.ellipsoid})}_._imageUrlTemplate=_._imageUrlTemplate.replace("{request}",_._requestType).replace("{channel}",_._channel).replace("{version}",_._version),_._ready=!0,c.handleSuccess(f)}function p(){var e="An error occurred while accessing "+g+".";f=c.handleError(f,_,_._errorEvent,e,void 0,void 0,void 0,m)}function m(){var e=i(_._proxy)?_._proxy.getURL(g):g,t=s(e);d(t,n,p)}r=t(r,{}),this._url=r.url,this._path=t(r.path,"/default_map"),this._tileDiscardPolicy=r.tileDiscardPolicy,this._proxy=r.proxy,this._channel=r.channel,this._requestType="ImageryMaps",this._credit=new e("Google Imagery",v._logoData,"http://www.google.com/enterprise/mapsearth/products/earthenterprise.html"),this.defaultGamma=1.9,this._tilingScheme=void 0,this._version=void 0,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=r.maximumLevel,this._imageUrlTemplate=this._url+this._path+"/query?request={request}&channel={channel}&version={version}&x={x}&y={y}&z={zoom}",this._errorEvent=new o,this._ready=!1;var f,g=this._url+this._path+"/query?request=Json&vars=geeServerDefs&is2d=t",_=this;m()};return r(f.prototype,{url:{get:function(){return this._url}},path:{get:function(){return this._path}},proxy:{get:function(){return this._proxy}},channel:{get:function(){return this._channel}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},version:{get:function(){return this._version}},requestType:{get:function(){return this._requestType}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},ready:{get:function(){return this._ready}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}}),f.prototype.getTileCredits=function(){return void 0},f.prototype.requestImage=function(e,t,i){var r=m(this,e,t,i);return p.loadImage(this,r)},f.prototype.pickFeatures=function(){return void 0},f._logoData="data:image/png;base64,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",f}),i("Scene/GridImageryProvider",["../Core/Color","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/Event","../Core/GeographicTilingScheme"],function(e,t,i,r,n,o){"use strict";var a=new e(1,1,1,.4),s=new e(0,1,0,.05),l=new e(0,.5,0,.2),u=function(e){e=t(e,t.EMPTY_OBJECT),this._tilingScheme=i(e.tilingScheme)?e.tilingScheme:new o({ellipsoid:e.ellipsoid}),this._cells=t(e.cells,8),this._color=t(e.color,a),this._glowColor=t(e.glowColor,s),this._glowWidth=t(e.glowWidth,6),this._backgroundColor=t(e.backgroundColor,l),this._errorEvent=new n,this._tileWidth=t(e.tileWidth,256),this._tileHeight=t(e.tileHeight,256),this._canvasSize=t(e.canvasSize,256),this._canvas=this._createGridCanvas()};return r(u.prototype,{proxy:{get:function(){return void 0}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return void 0}},minimumLevel:{get:function(){return void 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return void 0}},errorEvent:{get:function(){return this._errorEvent}},ready:{get:function(){return!0}},credit:{get:function(){return void 0}},hasAlphaChannel:{get:function(){return!0}}}),u.prototype._drawGrid=function(e){for(var t=0,i=this._canvasSize,r=0;r<=this._cells;++r){var n=r/this._cells,o=1+n*(i-1);e.moveTo(o,t),e.lineTo(o,i),e.moveTo(t,o),e.lineTo(i,o)}e.stroke()},u.prototype._createGridCanvas=function(){var e=document.createElement("canvas");e.width=this._canvasSize,e.height=this._canvasSize;var t=0,i=this._canvasSize,r=e.getContext("2d"),n=this._backgroundColor.toCssColorString();r.fillStyle=n,r.fillRect(t,t,i,i);var o=this._glowColor.toCssColorString();r.strokeStyle=o,r.lineWidth=this._glowWidth,r.strokeRect(t,t,i,i),this._drawGrid(r),r.lineWidth=.5*this._glowWidth,r.strokeRect(t,t,i,i),this._drawGrid(r);var a=this._color.toCssColorString();return r.strokeStyle=a,r.lineWidth=2,r.strokeRect(t,t,i,i),r.lineWidth=1,this._drawGrid(r),e},u.prototype.getTileCredits=function(){return void 0},u.prototype.requestImage=function(){return this._canvas},u.prototype.pickFeatures=function(){return void 0},u}),i("Scene/Moon",["../Core/buildModuleUrl","../Core/Cartesian3","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/Ellipsoid","../Core/IauOrientationAxes","../Core/Matrix3","../Core/Matrix4","../Core/Simon1994PlanetaryPositions","../Core/Transforms","./EllipsoidPrimitive","./Material"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p){"use strict";var m=function(t){t=i(t,i.EMPTY_OBJECT);var n=t.textureUrl;r(n)||(n=e("Assets/Textures/moonSmall.jpg")),this.show=i(t.show,!0),this.textureUrl=n,this._ellipsoid=i(t.ellipsoid,a.MOON),this.onlySunLighting=i(t.onlySunLighting,!0),this._ellipsoidPrimitive=new d({radii:this.ellipsoid.radii,material:p.fromType(p.ImageType),depthTestEnabled:!1,_owner:this}),this._ellipsoidPrimitive.material.translucent=!1,this._axes=new s};n(m.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var f=new l,v=new l,g=new t,_=[];return m.prototype.update=function(e,t){if(this.show){var i=this._ellipsoidPrimitive;i.material.uniforms.image=this.textureUrl,i.onlySunLighting=this.onlySunLighting;var n=t.time;r(h.computeIcrfToFixedMatrix(n,f))||h.computeTemeToPseudoFixedMatrix(n,f);var o=this._axes.evaluate(n,v);l.transpose(o,o),l.multiply(f,o,o);var a=c.computeMoonPositionInEarthInertialFrame(n,g);return l.multiplyByVector(f,a,a),u.fromRotationTranslation(o,a,i.modelMatrix),_.length=0,i.update(e,t,_),1===_.length?_[0]:void 0}},m.prototype.isDestroyed=function(){return!1},m.prototype.destroy=function(){return this._ellipsoidPrimitive=this._ellipsoidPrimitive&&this._ellipsoidPrimitive.destroy(),o(this)},m}),i("Scene/NeverTileDiscardPolicy",[],function(){"use strict";var e=function(){};return e.prototype.isReady=function(){return!0},e.prototype.shouldDiscardImage=function(){return!1},e}),i("Shaders/AdjustTranslucentFS",[],function(){"use strict";return"#ifdef MRT\n#extension GL_EXT_draw_buffers : enable\n#endif\nuniform vec4 u_bgColor;\nuniform sampler2D u_depthTexture;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\nif (texture2D(u_depthTexture, v_textureCoordinates).r < 1.0)\n{\n#ifdef MRT\ngl_FragData[0] = u_bgColor;\ngl_FragData[1] = vec4(u_bgColor.a);\n#else\ngl_FragColor = u_bgColor;\n#endif\nreturn;\n}\ndiscard;\n}\n"}),i("Shaders/CompositeOITFS",[],function(){"use strict";return"uniform sampler2D u_opaque;\nuniform sampler2D u_accumulation;\nuniform sampler2D u_revealage;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\nvec4 opaque = texture2D(u_opaque, v_textureCoordinates);\nvec4 accum = texture2D(u_accumulation, v_textureCoordinates);\nfloat r = texture2D(u_revealage, v_textureCoordinates).r;\n#ifdef MRT\nvec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a);\n#else\nvec4 transparent = vec4(accum.rgb / clamp(accum.a, 1e-4, 5e4), r);\n#endif\ngl_FragColor = (1.0 - transparent.a) * transparent + transparent.a * opaque;\n}\n"}),i("Scene/OIT",["../Core/Color","../Core/defined","../Core/destroyObject","../Core/PixelFormat","../Renderer/ClearCommand","../Renderer/PixelDatatype","../Renderer/RenderState","../Renderer/ShaderSource","../Shaders/AdjustTranslucentFS","../Shaders/CompositeOITFS","./BlendEquation","./BlendFunction"],function(e,t,i,r,n,o,a,s,l,u,c,h){"use strict";function d(e){e._accumulationTexture=e._accumulationTexture&&!e._accumulationTexture.isDestroyed()&&e._accumulationTexture.destroy(),e._revealageTexture=e._revealageTexture&&!e._revealageTexture.isDestroyed()&&e._revealageTexture.destroy()}function p(e){e._translucentFBO=e._translucentFBO&&!e._translucentFBO.isDestroyed()&&e._translucentFBO.destroy(),e._alphaFBO=e._alphaFBO&&!e._alphaFBO.isDestroyed()&&e._alphaFBO.destroy(),e._adjustTranslucentFBO=e._adjustTranslucentFBO&&!e._adjustTranslucentFBO.isDestroyed()&&e._adjustTranslucentFBO.destroy(),e._adjustAlphaFBO=e._adjustAlphaFBO&&!e._adjustAlphaFBO.isDestroyed()&&e._adjustAlphaFBO.destroy()}function m(e){d(e),p(e)}function f(e,t,i,n){d(e),e._accumulationTexture=t.createTexture2D({width:i,height:n,pixelFormat:r.RGBA,pixelDatatype:o.FLOAT}),e._revealageTexture=t.createTexture2D({width:i,height:n,pixelFormat:r.RGBA,pixelDatatype:o.FLOAT})}function v(e,t){p(e);var i=WebGLRenderingContext.FRAMEBUFFER_COMPLETE,r=!0;if(e._translucentMRTSupport&&(e._translucentFBO=t.createFramebuffer({colorTextures:[e._accumulationTexture,e._revealageTexture],depthStencilTexture:e._depthStencilTexture,destroyAttachments:!1}),e._adjustTranslucentFBO=t.createFramebuffer({colorTextures:[e._accumulationTexture,e._revealageTexture],destroyAttachments:!1}),(e._translucentFBO.status!==i||e._adjustTranslucentFBO.status!==i)&&(p(e),e._translucentMRTSupport=!1)),!e._translucentMRTSupport){e._translucentFBO=t.createFramebuffer({colorTextures:[e._accumulationTexture],depthStencilTexture:e._depthStencilTexture,destroyAttachments:!1}),e._alphaFBO=t.createFramebuffer({colorTextures:[e._revealageTexture],depthStencilTexture:e._depthStencilTexture,destroyAttachments:!1}),e._adjustTranslucentFBO=t.createFramebuffer({colorTextures:[e._accumulationTexture],destroyAttachments:!1}),e._adjustAlphaFBO=t.createFramebuffer({colorTextures:[e._revealageTexture],destroyAttachments:!1});var n=e._translucentFBO.status===i,o=e._alphaFBO.status===i,a=e._adjustTranslucentFBO.status===i,s=e._adjustAlphaFBO.status===i;n&&o&&a&&s||(m(e),e._translucentMultipassSupport=!1,r=!1)}return r}function g(e,i,r,n){var o=r[n.id];if(!t(o)){var s=a.clone(n);s.depthMask=!1,s.blending=i,o=e.createRenderState(s),r[n.id]=o}return o}function _(e,t,i){return g(t,A,e._translucentRenderStateCache,i)}function y(e,t,i){return g(t,D,e._translucentRenderStateCache,i) +}function C(e,t,i){return g(t,M,e._alphaRenderStateCache,i)}function w(e,i,r,n){var o=i.id,a=r[o];if(!t(a)){var s=i._attributeLocations,l=i.fragmentShaderSource.clone();l.sources=l.sources.map(function(e){return e=e.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,"void czm_translucent_main()"),e=e.replace(/gl_FragColor/g,"czm_gl_FragColor"),e=e.replace(/\bdiscard\b/g,"czm_discard = true"),e=e.replace(/czm_phong/g,"czm_translucentPhong")}),l.sources.splice(0,0,(-1!==n.indexOf("gl_FragData")?"#extension GL_EXT_draw_buffers : enable \n":"")+"vec4 czm_gl_FragColor;\n"+"bool czm_discard = false;\n"),l.sources.push("void main()\n{\n czm_translucent_main();\n if (czm_discard)\n {\n discard;\n }\n"+n+"}\n"),a=e.createShaderProgram(i.vertexShaderSource,l,s),r[o]=a}return a}function S(e,t,i){return w(t,i,e._translucentShaderCache,I)}function E(e,t,i){return w(t,i,e._translucentShaderCache,O)}function b(e,t,i){return w(t,i,e._alphaShaderCache,R)}function x(e,i,r,n,o){var a,s,l,u,c=i.context,h=n.framebuffer,d=o.length;n.framebuffer=e._adjustTranslucentFBO,e._adjustTranslucentCommand.execute(c,n),n.framebuffer=e._adjustAlphaFBO,e._adjustAlphaCommand.execute(c,n);var p=e._opaqueFBO;for(n.framebuffer=e._translucentFBO,u=0;d>u;++u)a=o[u],t(a.oit)&&a.shaderProgram.id===a.oit.shaderProgramId||(a.oit={colorRenderState:y(e,c,a.renderState),alphaRenderState:C(e,c,a.renderState),colorShaderProgram:E(e,c,a.shaderProgram),alphaShaderProgram:b(e,c,a.shaderProgram),shaderProgramId:a.shaderProgram.id}),s=a.oit.colorRenderState,l=a.oit.colorShaderProgram,r(a,i,c,n,s,l,p);for(n.framebuffer=e._alphaFBO,u=0;d>u;++u)a=o[u],s=a.oit.alphaRenderState,l=a.oit.alphaShaderProgram,r(a,i,c,n,s,l,p);n.framebuffer=h}function T(e,i,r,n,o){var a=i.context,s=n.framebuffer,l=o.length;n.framebuffer=e._adjustTranslucentFBO,e._adjustTranslucentCommand.execute(a,n);var u=e._opaqueFBO;n.framebuffer=e._translucentFBO;for(var c=0;l>c;++c){var h=o[c];t(h.oit)&&h.shaderProgram.id===h.oit.shaderProgramId||(h.oit={translucentRenderState:_(e,a,h.renderState),translucentShaderProgram:S(e,a,h.shaderProgram),shaderProgramId:h.shaderProgram.id});var d=h.oit.translucentRenderState,p=h.oit.translucentShaderProgram;r(h,i,a,n,d,p,u)}n.framebuffer=s}var P=function(t){this._translucentMultipassSupport=!1,this._translucentMRTSupport=!1;var i=t.floatingPointTexture&&t.depthTexture;this._translucentMRTSupport=t.drawBuffers&&i,this._translucentMultipassSupport=!this._translucentMRTSupport&&i,this._opaqueFBO=void 0,this._opaqueTexture=void 0,this._depthStencilTexture=void 0,this._accumulationTexture=void 0,this._translucentFBO=void 0,this._alphaFBO=void 0,this._adjustTranslucentFBO=void 0,this._adjustAlphaFBO=void 0,this._opaqueClearCommand=new n({color:new e(0,0,0,0),owner:this}),this._translucentMRTClearCommand=new n({color:new e(0,0,0,1),owner:this}),this._translucentMultipassClearCommand=new n({color:new e(0,0,0,0),owner:this}),this._alphaClearCommand=new n({color:new e(1,1,1,1),owner:this}),this._translucentRenderStateCache={},this._alphaRenderStateCache={},this._translucentShaderCache={},this._alphaShaderCache={},this._compositeCommand=void 0,this._adjustTranslucentCommand=void 0,this._adjustAlphaCommand=void 0};P.prototype.update=function(e,i){if(this.isSupported()){this._opaqueFBO=i,this._opaqueTexture=i.getColorTexture(0),this._depthStencilTexture=i.depthStencilTexture;var r=this._opaqueTexture.width,n=this._opaqueTexture.height,o=this._accumulationTexture,a=!t(o)||o.width!==r||o.height!==n;if(a&&f(this,e,r,n),t(this._translucentFBO)&&!a||v(this,e)){var c,h,d=this;t(this._compositeCommand)||(c=new s({sources:[u]}),this._translucentMRTSupport&&c.defines.push("MRT"),h={u_opaque:function(){return d._opaqueTexture},u_accumulation:function(){return d._accumulationTexture},u_revealage:function(){return d._revealageTexture}},this._compositeCommand=e.createViewportQuadCommand(c,{renderState:e.createRenderState(),uniformMap:h,owner:this})),t(this._adjustTranslucentCommand)||(this._translucentMRTSupport?(c=new s({defines:["MRT"],sources:[l]}),h={u_bgColor:function(){return d._translucentMRTClearCommand.color},u_depthTexture:function(){return d._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(c,{renderState:e.createRenderState(),uniformMap:h,owner:this})):this._translucentMultipassSupport&&(c=new s({sources:[l]}),h={u_bgColor:function(){return d._translucentMultipassClearCommand.color},u_depthTexture:function(){return d._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(c,{renderState:e.createRenderState(),uniformMap:h,owner:this}),h={u_bgColor:function(){return d._alphaClearCommand.color},u_depthTexture:function(){return d._depthStencilTexture}},this._adjustAlphaCommand=e.createViewportQuadCommand(c,{renderState:e.createRenderState(),uniformMap:h,owner:this})))}}};var A={enabled:!0,color:new e(0,0,0,0),equationRgb:c.ADD,equationAlpha:c.ADD,functionSourceRgb:h.ONE,functionDestinationRgb:h.ONE,functionSourceAlpha:h.ZERO,functionDestinationAlpha:h.ONE_MINUS_SOURCE_ALPHA},D={enabled:!0,color:new e(0,0,0,0),equationRgb:c.ADD,equationAlpha:c.ADD,functionSourceRgb:h.ONE,functionDestinationRgb:h.ONE,functionSourceAlpha:h.ONE,functionDestinationAlpha:h.ONE},M={enabled:!0,color:new e(0,0,0,0),equationRgb:c.ADD,equationAlpha:c.ADD,functionSourceRgb:h.ZERO,functionDestinationRgb:h.ONE_MINUS_SOURCE_ALPHA,functionSourceAlpha:h.ZERO,functionDestinationAlpha:h.ONE_MINUS_SOURCE_ALPHA},I=" vec3 Ci = czm_gl_FragColor.rgb * czm_gl_FragColor.a;\n float ai = czm_gl_FragColor.a;\n float wzi = czm_alphaWeight(ai);\n gl_FragData[0] = vec4(Ci * wzi, ai);\n gl_FragData[1] = vec4(ai * wzi);\n",O=" vec3 Ci = czm_gl_FragColor.rgb * czm_gl_FragColor.a;\n float ai = czm_gl_FragColor.a;\n float wzi = czm_alphaWeight(ai);\n gl_FragColor = vec4(Ci, ai) * wzi;\n",R=" float ai = czm_gl_FragColor.a;\n gl_FragColor = vec4(ai);\n";return P.prototype.executeCommands=function(e,t,i,r){return this._translucentMRTSupport?(T(this,e,t,i,r),void 0):(x(this,e,t,i,r),void 0)},P.prototype.execute=function(e,t){this._compositeCommand.execute(e,t)},P.prototype.clear=function(t,i,r){var n=i.framebuffer;i.framebuffer=this._opaqueFBO,e.clone(r,this._opaqueClearCommand.color),this._opaqueClearCommand.execute(t,i),i.framebuffer=this._translucentFBO;var o=this._translucentMRTSupport?this._translucentMRTClearCommand:this._translucentMultipassClearCommand;o.execute(t,i),this._translucentMultipassSupport&&(i.framebuffer=this._alphaFBO,this._alphaClearCommand.execute(t,i)),i.framebuffer=n},P.prototype.isSupported=function(){return this._translucentMRTSupport||this._translucentMultipassSupport},P.prototype.isDestroyed=function(){return!1},P.prototype.destroy=function(){m(this),t(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),t(this._adjustTranslucentCommand)&&(this._adjustTranslucentCommand.shaderProgram=this._adjustTranslucentCommand.shaderProgram&&this._adjustTranslucentCommand.shaderProgram.destroy()),t(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.shaderProgram=this._adjustAlphaCommand.shaderProgram&&this._adjustAlphaCommand.shaderProgram.destroy());var e,r=this._translucentShaderCache;for(e in r)r.hasOwnProperty(e)&&t(r[e])&&r[e].destroy();this._translucentShaderCache={},r=this._alphaShaderCache;for(e in r)r.hasOwnProperty(e)&&t(r[e])&&r[e].destroy();return this._alphaShaderCache={},i(this)},P}),i("Scene/OpenStreetMapImageryProvider",["../Core/Credit","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/Rectangle","../Core/WebMercatorTilingScheme","./ImageryProvider"],function(e,t,i,r,n,o,a,s,l){"use strict";function u(e,t,r,n){var o=e._url+n+"/"+t+"/"+r+"."+e._fileExtension,a=e._proxy;return i(a)&&(o=a.getURL(o)),o}var c=/\/$/,h=new e("MapQuest, Open Street Map and contributors, CC-BY-SA"),d=function(i){i=t(i,{});var r=t(i.url,"//a.tile.openstreetmap.org/");c.test(r)||(r+="/"),this._url=r,this._fileExtension=t(i.fileExtension,"png"),this._proxy=i.proxy,this._tileDiscardPolicy=i.tileDiscardPolicy,this._tilingScheme=new s({ellipsoid:i.ellipsoid}),this._tileWidth=256,this._tileHeight=256,this._minimumLevel=t(i.minimumLevel,0),this._maximumLevel=i.maximumLevel,this._rectangle=t(i.rectangle,this._tilingScheme.rectangle);var l=this._tilingScheme.positionToTileXY(a.southwest(this._rectangle),this._minimumLevel),u=this._tilingScheme.positionToTileXY(a.northeast(this._rectangle),this._minimumLevel),d=(Math.abs(u.x-l.x)+1)*(Math.abs(u.y-l.y)+1);if(d>4)throw new n("The imagery provider's rectangle and minimumLevel indicate that there are "+d+" tiles at the minimum level. Imagery providers with more than four tiles at the minimum level are not supported.");this._errorEvent=new o,this._ready=!0;var p=t(i.credit,h);"string"==typeof p&&(p=new e(p)),this._credit=p};return r(d.prototype,{url:{get:function(){return this._url}},proxy:{get:function(){return this._proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},ready:{get:function(){return this._ready}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}}),d.prototype.getTileCredits=function(){return void 0},d.prototype.requestImage=function(e,t,i){var r=u(this,e,t,i);return l.loadImage(this,r)},d.prototype.pickFeatures=function(){return void 0},d}),i("Scene/OrthographicFrustum",["../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Matrix4","./CullingVolume"],function(e,t,i,r,n,o,a,s){"use strict";function l(e){(e.top!==e._top||e.bottom!==e._bottom||e.left!==e._left||e.right!==e._right||e.near!==e._near||e.far!==e._far)&&(e._left=e.left,e._right=e.right,e._top=e.top,e._bottom=e.bottom,e._near=e.near,e._far=e.far,e._orthographicMatrix=a.computeOrthographicOffCenter(e.left,e.right,e.bottom,e.top,e.near,e.far,e._orthographicMatrix))}var u=function(){this.left=void 0,this._left=void 0,this.right=void 0,this._right=void 0,this.top=void 0,this._top=void 0,this.bottom=void 0,this._bottom=void 0,this.near=1,this._near=this.near,this.far=5e8,this._far=this.far,this._cullingVolume=new s,this._orthographicMatrix=new a};n(u.prototype,{projectionMatrix:{get:function(){return l(this),this._orthographicMatrix}}});var c=new t,h=new t,d=new t,p=new t;return u.prototype.computeCullingVolume=function(e,n,o){var a=this._cullingVolume.planes,s=this.top,l=this.bottom,u=this.right,m=this.left,f=this.near,v=this.far,g=t.cross(n,o,c),_=h;t.multiplyByScalar(n,f,_),t.add(e,_,_);var y=d;t.multiplyByScalar(g,m,y),t.add(_,y,y);var C=a[0];return r(C)||(C=a[0]=new i),C.x=g.x,C.y=g.y,C.z=g.z,C.w=-t.dot(g,y),t.multiplyByScalar(g,u,y),t.add(_,y,y),C=a[1],r(C)||(C=a[1]=new i),C.x=-g.x,C.y=-g.y,C.z=-g.z,C.w=-t.dot(t.negate(g,p),y),t.multiplyByScalar(o,l,y),t.add(_,y,y),C=a[2],r(C)||(C=a[2]=new i),C.x=o.x,C.y=o.y,C.z=o.z,C.w=-t.dot(o,y),t.multiplyByScalar(o,s,y),t.add(_,y,y),C=a[3],r(C)||(C=a[3]=new i),C.x=-o.x,C.y=-o.y,C.z=-o.z,C.w=-t.dot(t.negate(o,p),y),C=a[4],r(C)||(C=a[4]=new i),C.x=n.x,C.y=n.y,C.z=n.z,C.w=-t.dot(n,_),t.multiplyByScalar(n,v,y),t.add(e,y,y),C=a[5],r(C)||(C=a[5]=new i),C.x=-n.x,C.y=-n.y,C.z=-n.z,C.w=-t.dot(t.negate(n,p),y),this._cullingVolume},u.prototype.getPixelSize=function(t,i,n){l(this);var o=this.right-this.left,a=this.top-this.bottom,s=o/t.x,u=a/t.y;return r(n)?(n.x=s,n.y=u,n):new e(s,u)},u.prototype.clone=function(e){return r(e)||(e=new u),e.left=this.left,e.right=this.right,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e},u.prototype.equals=function(e){return r(e)&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far},u}),i("Widgets/getElement",["../Core/DeveloperError"],function(){"use strict";var e=function(e){if("string"==typeof e){var t=document.getElementById(e);e=t}return e};return e}),i("Scene/PerformanceDisplay",["../Core/Color","../Core/defaultValue","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/getTimestamp","../Widgets/getElement"],function(e,t,i,r,n,o,a){"use strict";var s=function(e){e=t(e,t.EMPTY_OBJECT);var r=a(e.container);if(!i(r))throw new n("container is required");this._container=r;var o=document.createElement("div");o.className="cesium-performanceDisplay";var s=document.createElement("div");s.className="cesium-performanceDisplay-fps",this._fpsText=document.createTextNode(""),s.appendChild(this._fpsText);var l=document.createElement("div");l.className="cesium-performanceDisplay-ms",this._msText=document.createTextNode(""),l.appendChild(this._msText),o.appendChild(l),o.appendChild(s),this._container.appendChild(o),this._lastFpsSampleTime=void 0,this._frameCount=0,this._time=void 0,this._fps=0,this._frameTime=0};return s.prototype.update=function(){if(!i(this._time))return this._lastFpsSampleTime=o(),this._time=o(),void 0;var e=this._time,t=o();this._time=t;var r=t-e;this._frameCount++;var n=this._fps,a=t-this._lastFpsSampleTime;a>1e3&&(n=0|1e3*this._frameCount/a,this._lastFpsSampleTime=t,this._frameCount=0),n!==this._fps&&(this._fpsText.nodeValue=n+" FPS",this._fps=n),r!==this._frameTime&&(this._msText.nodeValue=r.toFixed(2)+" MS",this._frameTime=r)},s.prototype.destroy=function(){return r(this)},s}),i("Scene/PickDepth",["../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/PixelFormat","../Renderer/PixelDatatype","../Shaders/PostProcessFilters/PassThrough"],function(e,t,i,r,n){"use strict";function o(t,i,r){if(!e(t._debugPickDepthViewportCommand)){var n="uniform sampler2D u_texture;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\n float z_window = czm_unpackDepth(texture2D(u_texture, v_textureCoordinates));\n float n_range = czm_depthRange.near;\n float f_range = czm_depthRange.far;\n float z_ndc = (2.0 * z_window - n_range - f_range) / (f_range - n_range);\n float scale = pow(z_ndc * 0.5 + 0.5, 8.0);\n gl_FragColor = vec4(mix(vec3(0.0), vec3(1.0), scale), 1.0);\n}\n";t._debugPickDepthViewportCommand=i.createViewportQuadCommand(n,{uniformMap:{u_texture:function(){return t._depthTexture}},owner:t})}t._debugPickDepthViewportCommand.execute(i,r)}function a(e){e._depthTexture=e._depthTexture&&!e._depthTexture.isDestroyed()&&e._depthTexture.destroy()}function s(e){e.framebuffer=e.framebuffer&&!e.framebuffer.isDestroyed()&&e.framebuffer.destroy()}function l(e,t,i,o){e._depthTexture=t.createTexture2D({width:i,height:o,pixelFormat:r.RGBA,pixelDatatype:n.UNSIGNED_BYTE})}function u(e,t,i,r){a(e),s(e),l(e,t,i,r),e.framebuffer=t.createFramebuffer({colorTextures:[e._depthTexture],destroyAttachments:!1})}function c(t,i,r){var n=r.width,o=r.height,a=t._depthTexture,s=!e(a)||a.width!==n||a.height!==o;(!e(t.framebuffer)||s)&&u(t,i,n,o)}function h(t,i,r){if(!e(t._copyDepthCommand)){var n="uniform sampler2D u_texture;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\n gl_FragColor = czm_packDepth(texture2D(u_texture, v_textureCoordinates).r);\n}\n";t._copyDepthCommand=i.createViewportQuadCommand(n,{renderState:i.createRenderState(),uniformMap:{u_texture:function(){return t._textureToCopy}},owner:t})}t._textureToCopy=r,t._copyDepthCommand.framebuffer=t.framebuffer}var d=function(){this.framebuffer=void 0,this._depthTexture=void 0,this._textureToCopy=void 0,this._copyDepthCommand=void 0,this._debugPickDepthViewportCommand=void 0};return d.prototype.executeDebugPickDepth=function(e,t){o(this,e,t)},d.prototype.update=function(e,t){c(this,e,t),h(this,e,t)},d.prototype.executeCopyDepth=function(e,t){this._copyDepthCommand.execute(e,t)},d.prototype.isDestroyed=function(){return!1},d.prototype.destroy=function(){return a(this),s(this),this._copyDepthCommand.shaderProgram=e(this._copyDepthCommand.shaderProgram)&&this._copyDepthCommand.shaderProgram.destroy(),i(this)},d}),i("Scene/Polygon",["../Core/Color","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/Ellipsoid","../Core/GeometryInstance","../Core/Math","../Core/PolygonGeometry","./EllipsoidSurfaceAppearance","./Material","./Primitive"],function(e,t,i,r,n,o,a,s,l,u,c,h,d){"use strict";var p=function(r){r=t(r,t.EMPTY_OBJECT),this.ellipsoid=t(r.ellipsoid,a.WGS84),this._ellipsoid=void 0,this.granularity=t(r.granularity,l.RADIANS_PER_DEGREE),this._granularity=void 0,this.height=t(r.height,0),this._height=void 0,this.textureRotationAngle=t(r.textureRotationAngle,0),this._textureRotationAngle=void 0,this.show=t(r.show,!0);var n=h.fromType(h.ColorType,{color:new e(1,1,0,.5)});this.material=t(r.material,n),this.id=r.id,this._id=void 0,this.asynchronous=t(r.asynchronous,!0),this.debugShowBoundingVolume=t(r.debugShowBoundingVolume,!1),this._positions=void 0,this._polygonHierarchy=void 0,this._createPrimitive=!1,this._primitive=void 0,i(r.positions)?this.positions=r.positions:i(r.polygonHierarchy)&&this.configureFromPolygonHierarchy(r.polygonHierarchy)};return r(p.prototype,{positions:{get:function(){return this._positions},set:function(e){this._positions=e,this._polygonHierarchy=void 0,this._createPrimitive=!0}}}),p.prototype.configureFromPolygonHierarchy=function(e){this._positions=void 0,this._polygonHierarchy=e,this._createPrimitive=!0},p.prototype.update=function(e,t,r){if(this.show&&(this._createPrimitive||i(this._primitive))){if(this._createPrimitive||this._ellipsoid!==this.ellipsoid||this._granularity!==this.granularity||this._height!==this.height||this._textureRotationAngle!==this.textureRotationAngle||this._id!==this.id){if(this._createPrimitive=!1,this._ellipsoid=this.ellipsoid,this._granularity=this.granularity,this._height=this.height,this._textureRotationAngle=this.textureRotationAngle,this._id=this.id,this._primitive=this._primitive&&this._primitive.destroy(),!i(this._positions)&&!i(this._polygonHierarchy))return;var n;n=i(this._positions)?new s({geometry:u.fromPositions({positions:this._positions,height:this.height,vertexFormat:c.VERTEX_FORMAT,stRotation:this.textureRotationAngle,ellipsoid:this.ellipsoid,granularity:this.granularity}),id:this.id,pickPrimitive:this}):new s({geometry:new u({polygonHierarchy:this._polygonHierarchy,height:this.height,vertexFormat:c.VERTEX_FORMAT,stRotation:this.textureRotationAngle,ellipsoid:this.ellipsoid,granularity:this.granularity}),id:this.id,pickPrimitive:this}),this._primitive=new d({geometryInstances:n,appearance:new c({aboveGround:this.height>0}),asynchronous:this.asynchronous})}var o=this._primitive;o.debugShowBoundingVolume=this.debugShowBoundingVolume,o.appearance.material=this.material,o.update(e,t,r)}},p.prototype.isDestroyed=function(){return!1},p.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),n(this)},p}),i("Scene/PrimitiveCollection",["../Core/createGuid","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError"],function(e,t,i,r,n){"use strict";function o(e,t){return e._primitives.indexOf(t)}var a=function(i){i=t(i,t.EMPTY_OBJECT),this._primitives=[],this._guid=e(),this.show=t(i.show,!0),this.destroyPrimitives=t(i.destroyPrimitives,!0)};return r(a.prototype,{length:{get:function(){return this._primitives.length}}}),a.prototype.add=function(e){var t=e._external=e._external||{},i=t._composites=t._composites||{};return i[this._guid]={collection:this},this._primitives.push(e),e},a.prototype.remove=function(e){if(this.contains(e)){var t=this._primitives.indexOf(e);if(-1!==t)return this._primitives.splice(t,1),delete e._external._composites[this._guid],this.destroyPrimitives&&e.destroy(),!0}return!1},a.prototype.removeAndDestroy=function(e){var t=this.remove(e);return t&&!this.destroyPrimitives&&e.destroy(),t},a.prototype.removeAll=function(){if(this.destroyPrimitives)for(var e=this._primitives,t=e.length,i=0;t>i;++i)e[i].destroy();this._primitives=[]},a.prototype.contains=function(e){return!!(i(e)&&e._external&&e._external._composites&&e._external._composites[this._guid])},a.prototype.raise=function(e){if(i(e)){var t=o(this,e),r=this._primitives;if(t!==r.length-1){var n=r[t];r[t]=r[t+1],r[t+1]=n}}},a.prototype.raiseToTop=function(e){if(i(e)){var t=o(this,e),r=this._primitives;t!==r.length-1&&(r.splice(t,1),r.push(e))}},a.prototype.lower=function(e){if(i(e)){var t=o(this,e),r=this._primitives;if(0!==t){var n=r[t];r[t]=r[t-1],r[t-1]=n}}},a.prototype.lowerToBottom=function(e){if(i(e)){var t=o(this,e),r=this._primitives;0!==t&&(r.splice(t,1),r.unshift(e))}},a.prototype.get=function(e){return this._primitives[e]},a.prototype.update=function(e,t,i){if(this.show)for(var r=this._primitives,n=0;n<r.length;++n)r[n].update(e,t,i)},a.prototype.isDestroyed=function(){return!1},a.prototype.destroy=function(){return this.removeAll(),n(this)},a}),i("Scene/QuadtreeTileProvider",["../Core/defineProperties","../Core/DeveloperError"],function(e,t){"use strict";var i=function(){t.throwInstantiationError()};return i.computeDefaultLevelZeroMaximumGeometricError=function(e){return.25*2*e.ellipsoid.maximumRadius*Math.PI/(65*e.getNumberOfXTilesAtLevel(0))},e(i.prototype,{quadtree:{get:t.throwInstantiationError,set:t.throwInstantiationError},ready:{get:t.throwInstantiationError},tilingScheme:{get:t.throwInstantiationError},errorEvent:{get:t.throwInstantiationError}}),i.prototype.beginUpdate=t.throwInstantiationError,i.prototype.endUpdate=t.throwInstantiationError,i.prototype.getLevelMaximumGeometricError=t.throwInstantiationError,i.prototype.loadTile=t.throwInstantiationError,i.prototype.computeTileVisibility=t.throwInstantiationError,i.prototype.showTileThisFrame=t.throwInstantiationError,i.prototype.computeDistanceToTile=t.throwInstantiationError,i.prototype.isDestroyed=t.throwInstantiationError,i.prototype.destroy=t.throwInstantiationError,i}),i("Scene/RectanglePrimitive",["../Core/Color","../Core/defaultValue","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/Ellipsoid","../Core/GeometryInstance","../Core/Math","../Core/Rectangle","../Core/RectangleGeometry","./EllipsoidSurfaceAppearance","./Material","./Primitive"],function(e,t,i,r,n,o,a,s,l,u,c,h,d){"use strict";var p=function(i){i=t(i,t.EMPTY_OBJECT),this.ellipsoid=t(i.ellipsoid,o.WGS84),this._ellipsoid=void 0,this.rectangle=l.clone(i.rectangle),this._rectangle=void 0,this.granularity=t(i.granularity,s.RADIANS_PER_DEGREE),this._granularity=void 0,this.height=t(i.height,0),this._height=void 0,this.rotation=t(i.rotation,0),this._rotation=void 0,this.textureRotationAngle=t(i.textureRotationAngle,0),this._textureRotationAngle=void 0,this.show=t(i.show,!0);var r=h.fromType(h.ColorType,{color:new e(1,1,0,.5)});this.material=t(i.material,r),this.id=i.id,this._id=void 0,this.asynchronous=t(i.asynchronous,!0),this.debugShowBoundingVolume=t(i.debugShowBoundingVolume,!1),this._primitive=void 0};return p.prototype.update=function(e,t,r){if(this.show&&i(this.rectangle)){if(!l.equals(this._rectangle,this.rectangle)||this._ellipsoid!==this.ellipsoid||this._granularity!==this.granularity||this._height!==this.height||this._rotation!==this.rotation||this._textureRotationAngle!==this.textureRotationAngle||this._id!==this.id){this._rectangle=l.clone(this.rectangle,this._rectangle),this._ellipsoid=this.ellipsoid,this._granularity=this.granularity,this._height=this.height,this._rotation=this.rotation,this._textureRotationAngle=this.textureRotationAngle,this._id=this.id;var n=new a({geometry:new u({rectangle:this.rectangle,vertexFormat:c.VERTEX_FORMAT,ellipsoid:this.ellipsoid,granularity:this.granularity,height:this.height,rotation:this.rotation,stRotation:this.textureRotationAngle}),id:this.id,pickPrimitive:this});i(this._primitive)&&this._primitive.destroy(),this._primitive=new d({geometryInstances:n,appearance:new c({aboveGround:this.height>0}),asynchronous:this.asynchronous})}var o=this._primitive;o.appearance.material=this.material,o.debugShowBoundingVolume=this.debugShowBoundingVolume,o.update(e,t,r)}},p.prototype.isDestroyed=function(){return!1},p.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),r(this)},p}),i("Scene/SceneTransitioner",["../Core/Cartesian3","../Core/defaultValue","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/EasingFunction","../Core/Ellipsoid","../Core/Math","../Core/Matrix4","../Core/ScreenSpaceEventHandler","../Core/ScreenSpaceEventType","./Camera","./OrthographicFrustum","./PerspectiveFrustum","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m){"use strict";function f(e,t){if(e._scene.completeMorphOnUserInput){e._morphHandler=new u(e._scene.canvas,!1);var i=function(){e._morphCancelled=!0,t(e)};e._completeMorph=i,e._morphHandler.setInputAction(i,c.LEFT_DOWN),e._morphHandler.setInputAction(i,c.MIDDLE_DOWN),e._morphHandler.setInputAction(i,c.RIGHT_DOWN),e._morphHandler.setInputAction(i,c.WHEEL)}}function v(e){for(var t=e._currentTweens,i=0;i<t.length;++i)t[i].cancelTween();e._currentTweens.length=0,e._morphHandler=e._morphHandler&&e._morphHandler.destroy()}function g(t,i,r,n){var a=t._scene,s=a.camera;s._setTransform(l.IDENTITY);var u=s.position,c=s.direction,h=s.up,d=e.clone(t._camera2D.position),p=e.clone(t._camera2D.direction),m=e.clone(t._camera2D.up),f=function(t){s.position=y(u,d,t.time),s.direction=y(c,p,t.time),s.up=y(h,m,t.time),s.right=e.cross(s.direction,s.up,s.right),e.normalize(s.right,s.right)},v=a.tweens.add({duration:i,easingFunction:o.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f});t._currentTweens.push(v),T(t,a,0,1,i,n)}function _(e,t,i,r){t*=.5;var n=e._scene.camera;n._setTransform(l.IDENTITY),E(e,t,i,function(){n.frustum=e._cameraCV.frustum.clone(),g(e,t,i,r)})}function y(t,i,r){return e.lerp(t,i,r,new e)}function C(t,i,r){var n=t._scene,a=n.camera,l=a.position,u=a.frustum.fov,c=.5*s.RADIANS_PER_DEGREE,h=e.magnitude(l)*Math.tan(.5*u);a.frustum.far=h/Math.tan(.5*c)+1e7;var d=function(t){a.frustum.fov=s.lerp(u,c,t.time);var i=h/Math.tan(.5*a.frustum.fov),r=new e;a.position=e.multiplyByScalar(e.normalize(a.position,r),i,r)},p=n.tweens.add({duration:i,easingFunction:o.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:d,complete:function(){a.frustum=t._camera2D.frustum.clone(),r(t)}});t._currentTweens.push(p)}function w(t,i,r,n){var a=t._scene,s=a.camera;s._setTransform(l.IDENTITY);var u=r.maximumRadius,c=e.clone(s.position),h=e.clone(s.direction),d=e.clone(s.up),p=Math.tan(.5*t._cameraCV.frustum.fovy),m=t._cameraCV.frustum.aspectRatio*p,f=u*Math.PI/m,v=new e;v=e.multiplyByScalar(e.normalize(t._camera2D.position,v),f,v);var g=e.clone(t._camera2D.direction),_=e.clone(t._camera2D.up),w=function(t){s.position=y(c,v,t.time),s.direction=y(h,g,t.time),s.up=y(d,_,t.time),s.right=e.cross(s.direction,s.up,s.right),e.normalize(s.right,s.right)};i*=.5;var S=a.tweens.add({duration:i,easingFunction:o.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:w,complete:function(){C(t,i,n)}});t._currentTweens.push(S)}function S(t,i,r,n){i*=.5;var o=r.maximumRadius,a=Math.tan(.5*t._camera3D.frustum.fovy),s=t._camera3D.frustum.aspectRatio*a,l=o*Math.PI/s,u={},c=new e;u.position2D=e.multiplyByScalar(e.normalize(t._camera2D.position2D,c),l,c),u.direction2D=e.clone(t._camera2D.direction2D),u.up2D=e.clone(t._camera2D.up2D);var h=function(){C(t,i,n)};x(t,i,u,h)}function E(t,i,r,n){var a=t._scene,l=a.camera,u=r.maximumRadius,c=Math.tan(.5*t._cameraCV.frustum.fovy),h=t._cameraCV.frustum.aspectRatio*c,d=u*Math.PI/h,p=new e;p=e.multiplyByScalar(e.normalize(t._camera2D.position,p),d,p);var m=l.frustum.top,f=l.frustum.bottom,v=l.frustum.right,g=l.frustum.left,_=t._camera2D.frustum,C=t._cameraCV.frustum,w=e.clone(l.position),S=function(e){l.position=y(w,p,e.time),l.frustum.top=s.lerp(m,_.top,e.time),l.frustum.bottom=s.lerp(f,_.bottom,e.time),l.frustum.right=s.lerp(v,_.right,e.time),l.frustum.left=s.lerp(g,_.left,e.time)},E=(v-g)/(2*u*Math.PI),b=1;E>b&&(E=0);var x=(b-E)*i;if(x<s.EPSILON6){if(e.equalsEpsilon(w,p,s.EPSILON6))return l.position=p,l.frustum=C.clone(),n(t),void 0;x=i,E=0,b=1}var T=a.tweens.add({easingFunction:o.QUARTIC_OUT,duration:x,startObject:{time:E},stopObject:{time:b},update:S,complete:function(){l.frustum=C.clone(),n(t)}});t._currentTweens.push(T)}function b(t,i,r,n){var a=t._scene,s=a.camera;s._setTransform(l.IDENTITY),i*=.5;var u=function(){var r=e.clone(s.position),l=e.clone(s.direction),u=e.clone(s.up),c=e.clone(t._cameraCV.position),h=e.clone(t._cameraCV.direction),d=e.clone(t._cameraCV.up),p=function(t){s.position=y(r,c,t.time),s.direction=y(l,h,t.time),s.up=y(u,d,t.time),s.right=e.cross(s.direction,s.up,s.right),e.normalize(s.right,s.right)},m=a.tweens.add({duration:i,easingFunction:o.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:p,complete:function(){n(t)}});t._currentTweens.push(m)};E(t,i,r,u)}function x(t,i,r,n){var a=t._scene,s=a.camera;s._setTransform(l.IDENTITY);var u=e.clone(s.position),c=e.clone(s.direction),h=e.clone(s.up),d=e.clone(r.position2D),p=e.clone(r.direction2D),m=e.clone(r.up2D),f=function(t){s.position=y(u,d,t.time),s.direction=y(c,p,t.time),s.up=y(h,m,t.time),s.right=e.cross(s.direction,s.up,s.right),e.normalize(s.right,s.right)},v=a.tweens.add({duration:i,easingFunction:o.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){s.position=d,s.direction=p,s.up=m,s.right=e.cross(p,m,s.right),e.normalize(s.right,s.right)}});t._currentTweens.push(v),T(t,a,1,0,i,n)}function T(e,t,r,n,a,s){var l={object:t,property:"morphTime",startValue:r,stopValue:n,duration:a,easingFunction:o.QUARTIC_OUT};i(s)&&(l.complete=function(){s(e)});var u=t.tweens.addProperty(l);e._currentTweens.push(u)}function P(e){var t=e._scene,i=t.drawingBufferHeight/t.drawingBufferWidth,r=e._camera2D.frustum;r.top=r.right*i,r.bottom=-r.top,i=1/i,r=e._cameraCV.frustum,r.aspectRatio=i,r=e._camera3D.frustum,r.aspectRatio=i;var n=t.camera;switch(t.mode){case m.SCENE3D:n.frustum=e._camera3D.frustum.clone();break;case m.COLUMBUS_VIEW:n.frustum=e._cameraCV.frustum.clone();break;case m.SCENE2D:n.frustum=e._camera2D.frustum.clone()}}function A(t){var r=t._scene;if(r.mode=m.SCENE3D,r.morphTime=m.getMorphTime(m.SCENE3D),v(t),P(t),t._previousMode!==m.MORPHING||t._morphCancelled){t._morphCancelled=!1;var n=r.camera;n.position=e.clone(t._camera3D.position),n.direction=e.clone(t._camera3D.direction),n.up=e.clone(t._camera3D.up),n.right=e.cross(n.direction,n.up,n.right),e.normalize(n.right,n.right)}var o=i(t._completeMorph);t._completeMorph=void 0,r.camera.update(r.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,m.SCENE3D,o)}function D(t){var r=t._scene;r.mode=m.SCENE2D,r.morphTime=m.getMorphTime(m.SCENE2D),v(t),P(t);var n=r.camera;e.clone(t._camera2D.position,n.position),e.clone(t._camera2D.direction,n.direction),e.clone(t._camera2D.up,n.up),e.cross(n.direction,n.up,n.right),e.normalize(n.right,n.right);var o=i(t._completeMorph);t._completeMorph=void 0,r.camera.update(r.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,m.SCENE2D,o)}function M(t){var r=t._scene;if(r.mode=m.COLUMBUS_VIEW,r.morphTime=m.getMorphTime(m.COLUMBUS_VIEW),v(t),P(t),t._previousModeMode!==m.MORPHING||t._morphCancelled){t._morphCancelled=!1;var n=r.camera;e.clone(t._cameraCV.position,n.position),e.clone(t._cameraCV.direction,n.direction),e.clone(t._cameraCV.up,n.up),e.cross(n.direction,n.up,n.right),e.normalize(n.right,n.right)}var o=i(t._completeMorph);t._completeMorph=void 0,r.camera.update(r.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,m.COLUMBUS_VIEW,o) +}var I=function(i,r){this._scene=i,r=t(r,a.WGS84);var n=r.maximumRadius,o=new e(0,0,2*n),u=new e;u=e.normalize(e.negate(o,u),u);var c=e.clone(e.UNIT_Y),m=l.multiplyByPoint(h.TRANSFORM_2D,o,new e),f=l.multiplyByPointAsVector(h.TRANSFORM_2D,u,new e),v=l.multiplyByPointAsVector(h.TRANSFORM_2D,c,new e),g=new d;g.right=n*Math.PI,g.left=-g.right,g.top=g.right*(i.drawingBufferHeight/i.drawingBufferWidth),g.bottom=-g.top,this._camera2D={position:o,direction:u,up:c,position2D:m,direction2D:f,up2D:v,frustum:g},o=new e(0,-1,1),o=e.multiplyByScalar(e.normalize(o,o),5*n,o),u=new e,u=e.normalize(e.subtract(e.ZERO,o,u),u);var _=new e;_=e.normalize(e.cross(u,e.UNIT_Z,_),_),c=new e,c=e.normalize(e.cross(_,u,c),c),m=l.multiplyByPoint(h.TRANSFORM_2D,o,new e),f=l.multiplyByPointAsVector(h.TRANSFORM_2D,u,new e);var y=l.multiplyByPointAsVector(h.TRANSFORM_2D,_,new e);v=new e,v=e.normalize(e.cross(y,f,v),v),g=new p,g.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,g.fov=s.toRadians(60),this._cameraCV={position:o,direction:u,up:c,position2D:m,direction2D:f,up2D:v,frustum:g},o=new e,o=e.multiplyByScalar(e.normalize(new e(0,-2,1),o),2*n,o),u=new e,u=e.normalize(e.subtract(e.ZERO,o,u),u),_=new e,_=e.normalize(e.cross(u,e.UNIT_Z,_),_),c=new e,c=e.normalize(e.cross(_,u,c),c),this._camera3D={position:o,direction:u,up:c,frustum:g},this._currentTweens=[],this._morphHandler=void 0,this._morphCancelled=!1,this._completeMorph=void 0};return I.prototype.completeMorph=function(){i(this._completeMorph)&&this._completeMorph()},I.prototype.morphTo2D=function(e,t){i(this._completeMorph)&&this._completeMorph();var r=this._scene;this._previousMode=r.mode,this._previousMode!==m.SCENE2D&&this._previousMode!==m.MORPHING&&(this._scene.morphStart.raiseEvent(this,this._previousMode,m.SCENE2D,!0),P(this),r.mode=m.MORPHING,f(this,D),this._previousMode===m.COLUMBUS_VIEW?w(this,e,t,D):S(this,e,t,D),0===e&&i(this._completeMorph)&&this._completeMorph())},I.prototype.morphToColumbusView=function(e,t){i(this._completeMorph)&&this._completeMorph();var r=this._scene;this._previousMode=r.mode,this._previousMode!==m.COLUMBUS_VIEW&&this._previousMode!==m.MORPHING&&(this._scene.morphStart.raiseEvent(this,this._previousMode,m.COLUMBUS_VIEW,!0),P(this),r.mode=m.MORPHING,f(this,M),this._previousMode===m.SCENE2D?b(this,e,t,M):x(this,e,this._cameraCV,M),0===e&&i(this._completeMorph)&&this._completeMorph())},I.prototype.morphTo3D=function(e,t){i(this._completeMorph)&&this._completeMorph();var r=this._scene;this._previousMode=r.mode,this._previousMode!==m.SCENE3D&&this._previousMode!==m.MORPHING&&(this._scene.morphStart.raiseEvent(this,this._previousMode,m.SCENE3D,!0),P(this),r.mode=m.MORPHING,f(this,A),this._previousMode===m.SCENE2D?_(this,e,t,A):g(this,e,t,A),0===e&&i(this._completeMorph)&&this._completeMorph())},I.prototype.isDestroyed=function(){return!1},I.prototype.destroy=function(){return v(this),r(this)},I}),i("Scene/TweenCollection",["../Core/clone","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/EasingFunction","../Core/getTimestamp","../Core/TimeConstants","../ThirdParty/Tween"],function(e,t,i,r,n,o,a,s,l){"use strict";var u=function(t,i,r,n,o,a,s,l,u,c){this._tweens=t,this._tweenjs=i,this._startObject=e(r),this._stopObject=e(n),this._duration=o,this._delay=a,this._easingFunction=s,this._update=l,this._complete=u,this.cancel=c,this.needsStart=!0};r(u.prototype,{startObject:{get:function(){return this._startObject}},stopObject:{get:function(){return this._stopObject}},duration:{get:function(){return this._duration}},delay:{get:function(){return this._delay}},easingFunction:{get:function(){return this._easingFunction}},update:{get:function(){return this._update}},complete:{get:function(){return this._complete}},tweenjs:{get:function(){return this._tweenjs}}}),u.prototype.cancelTween=function(){this._tweens.remove(this)};var c=function(){this._tweens=[]};return r(c.prototype,{length:{get:function(){return this._tweens.length}}}),c.prototype.add=function(r){if(r=t(r,t.EMPTY_OBJECT),0===r.duration)return i(r.complete)&&r.complete(),new u(this);var n=r.duration/s.SECONDS_PER_MILLISECOND,a=t(r.delay,0),c=a/s.SECONDS_PER_MILLISECOND,h=t(r.easingFunction,o.LINEAR_NONE),d=r.startObject,p=new l.Tween(d);p.to(e(r.stopObject),n),p.delay(c),p.easing(h),i(r.update)&&p.onUpdate(function(){r.update(d)}),p.onComplete(t(r.complete,null)),p.repeat(t(r._repeat,0));var m=new u(this,p,r.startObject,r.stopObject,r.duration,a,h,r.update,r.complete,r.cancel);return this._tweens.push(m),m},c.prototype.addProperty=function(e){function i(e){r[n]=e.value}e=t(e,t.EMPTY_OBJECT);var r=e.object,n=e.property,o=e.startValue,a=e.stopValue;return this.add({startObject:{value:o},stopObject:{value:a},duration:t(e.duration,3),delay:e.delay,easingFunction:e.easingFunction,update:i,complete:e.complete,cancel:e.cancel,_repeat:e._repeat})},c.prototype.addAlpha=function(e){function r(e){for(var t=o.length,i=0;t>i;++i)n.uniforms[o[i]].alpha=e.alpha}e=t(e,t.EMPTY_OBJECT);var n=e.material,o=[];for(var a in n.uniforms)n.uniforms.hasOwnProperty(a)&&i(n.uniforms[a])&&i(n.uniforms[a].alpha)&&o.push(a);return this.add({startObject:{alpha:t(e.startValue,0)},stopObject:{alpha:t(e.stopValue,1)},duration:t(e.duration,3),delay:e.delay,easingFunction:e.easingFunction,update:r,complete:e.complete,cancel:e.cancel})},c.prototype.addOffsetIncrement=function(e){e=t(e,t.EMPTY_OBJECT);var i=e.material,r=i.uniforms;return this.addProperty({object:r,property:"offset",startValue:r.offset,stopValue:r.offset+1,duration:e.duration,delay:e.delay,easingFunction:e.easingFunction,update:e.update,cancel:e.cancel,_repeat:1/0})},c.prototype.remove=function(e){if(!i(e))return!1;var t=this._tweens.indexOf(e);return-1!==t?(e.tweenjs.stop(),i(e.cancel)&&e.cancel(),this._tweens.splice(t,1),!0):!1},c.prototype.removeAll=function(){for(var e=this._tweens,t=0;t<e.length;++t){var r=e[t];r.tweenjs.stop(),i(r.cancel)&&r.cancel()}e.length=0},c.prototype.contains=function(e){return i(e)&&-1!==this._tweens.indexOf(e)},c.prototype.get=function(e){return this._tweens[e]},c.prototype.update=function(e){var t=this._tweens,r=0;for(e=i(e)?e/s.SECONDS_PER_MILLISECOND:a();r<t.length;){var n=t[r],o=n.tweenjs;n.needsStart?(n.needsStart=!1,o.start(e)):o.update(e)?r++:(o.stop(),t.splice(r,1))}},c}),i("Scene/ScreenSpaceCameraController",["../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/Cartographic","../Core/defaultValue","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/Ellipsoid","../Core/IntersectionTests","../Core/isArray","../Core/KeyboardEventModifier","../Core/Math","../Core/Matrix3","../Core/Matrix4","../Core/Plane","../Core/Quaternion","../Core/Ray","../Core/Transforms","./CameraEventAggregator","./CameraEventType","./SceneMode","./SceneTransforms","./TweenCollection"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E){"use strict";function b(e,t){if(0>e)return 0;var i=25*(1-t);return Math.exp(-i*e)}function x(t){return e.equalsEpsilon(t.startPosition,t.endPosition,d.EPSILON14)}function T(t,i,r,n,a,s,l){var u=s[l];o(u)||(u=s[l]={startPosition:new e,endPosition:new e,motion:new e,active:!1});var c=t.getButtonPressTime(i,r),h=t.getButtonReleaseTime(i,r),d=c&&h&&(h.getTime()-c.getTime())/1e3,p=new Date,m=h&&(p.getTime()-h.getTime())/1e3;if(c&&h&&$>d){var f=b(m,n);if(u.active)u.startPosition=e.clone(u.endPosition,u.startPosition),u.endPosition=e.multiplyByScalar(u.motion,f,u.endPosition),u.endPosition=e.add(u.startPosition,u.endPosition,u.endPosition),u.motion=e.clone(e.ZERO,u.motion);else{var v=t.getLastMovement(i,r);if(!o(v)||x(v))return;u.motion.x=.5*(v.endPosition.x-v.startPosition.x),u.motion.y=.5*(v.endPosition.y-v.startPosition.y),u.startPosition=e.clone(v.startPosition,u.startPosition),u.endPosition=e.multiplyByScalar(u.motion,f,u.endPosition),u.endPosition=e.add(u.startPosition,u.endPosition,u.endPosition),u.active=!0}if(isNaN(u.endPosition.x)||isNaN(u.endPosition.y)||x(u))return u.active=!1,void 0;if(!t.isButtonDown(i,r)){var g=t.getStartMousePosition(i,r);a(s,g,u)}}else u.active=!1}function P(e,t,i,r,n,a){if(o(i)){var s=e._aggregator;c(i)||(et[0]=i,i=et);for(var l=i.length,u=0;l>u;++u){var h=i[u],d=o(h.eventType)?h.eventType:h,p=h.modifier,m=s.isMoving(d,p)&&s.getMovement(d,p),f=s.getStartMousePosition(d,p);e.enableInputs&&t&&(m?r(e,f,m):1>n&&T(s,d,p,n,r,e,a))}}}function A(i,r,n,a,s,l){var u=1;o(l)&&(u=d.clamp(Math.abs(l),.25,1));var c=i.minimumZoomDistance*u,h=i.maximumZoomDistance,p=s-c,m=a*p;m=d.clamp(m,i._minimumZoomRate,i._maximumZoomRate);var f=n.endPosition.y-n.startPosition.y,v=f/i._scene.canvas.clientHeight;v=Math.min(v,i.maximumMovementRatio);var g=m*v;if(!(g>0&&Math.abs(s-c)<1||0>g&&Math.abs(s-h)<1)){c>s-g?g=s-c-1:s-g>h&&(g=s-h);var _=i._scene,y=_.camera,C=_.mode,E=C!==w.SCENE2D?L(i,r,it):y.getPickRay(r,tt).origin;if(!o(E))return y.zoomIn(g),void 0;var b=e.equals(r,i._zoomMouseStart),x=i._zoomingOnVector,T=i._rotatingZoom;b||(i._zoomMouseStart=e.clone(r,i._zoomMouseStart),i._zoomWorldPosition=t.clone(E,i._zoomWorldPosition),x=i._zoomingOnVector=!1,T=i._rotatingZoom=!1);var P=C===w.COLUMBUS_VIEW;if(!b||T){if(C===w.SCENE2D){var A=i._zoomWorldPosition,D=y.position;if(!t.equals(A,D)){var M=t.subtract(A,D,nt);t.normalize(M,M);var I=t.distance(A,D)*g/(.5*y.getMagnitude());y.move(M,.5*I)}}else if(C===w.SCENE3D){var O=t.normalize(y.position,ct);if(y.positionCartographic.height<3e3&&Math.abs(t.dot(y.direction,O))<.6)P=!0;else{var R=_.canvas,N=ot;N.x=R.clientWidth/2,N.y=R.clientHeight/2;var F=L(i,N,at);if(o(F)){var B=t.normalize(F,st),z=t.normalize(i._zoomWorldPosition,lt),k=d.acosClamped(t.dot(z,B)),V=t.cross(z,B,ut),U=Math.abs(k)>d.toRadians(20)?.75*y.positionCartographic.height:y.positionCartographic.height-g,W=g/U;y.rotate(V,k*W)}else P=!0}}i._rotatingZoom=!P}if(!b&&P||x){var G,H=S.wgs84ToWindowCoordinates(_,i._zoomWorldPosition,rt);G=C!==w.COLUMBUS_VIEW&&e.equals(r,i._zoomMouseStart)&&o(H)?y.getPickRay(H,tt):y.getPickRay(r,tt);var q=G.direction;C===w.COLUMBUS_VIEW&&t.fromElements(q.y,q.z,q.x,q),y.move(q,g),i._zoomingOnVector=!0}else y.zoomIn(g)}}function D(e,i,r){var n=e._scene,o=n.camera,a=o.getPickRay(r.startPosition,ht).origin,s=o.getPickRay(r.endPosition,dt).origin,l=t.subtract(a,s,pt),u=t.magnitude(l);u>0&&(t.normalize(l,l),o.move(l,u))}function M(e,t,i){o(i.distance)&&(i=i.distance);var r=e._scene,n=r.camera;A(e,t,i,e._zoomFactor,n.getMagnitude())}function I(t,i,r){if(o(r.angleAndHeight))return O(t,i,r.angleAndHeight),void 0;var n=t._scene,a=n.camera,s=n.canvas,l=s.clientWidth,u=s.clientHeight,c=mt;c.x=2/l*r.startPosition.x-1,c.y=2/u*(u-r.startPosition.y)-1,c=e.normalize(c,c);var h=ft;h.x=2/l*r.endPosition.x-1,h.y=2/u*(u-r.endPosition.y)-1,h=e.normalize(h,h);var p=d.acosClamped(c.x);c.y<0&&(p=d.TWO_PI-p);var m=d.acosClamped(h.x);h.y<0&&(m=d.TWO_PI-m);var f=m-p;a.twistRight(f)}function O(e,t,i){var r=e._rotateFactor*e._rotateRateRangeAdjustment;r>e._maximumRotateRate&&(r=e._maximumRotateRate),r<e._minimumRotateRate&&(r=e._minimumRotateRate);var n=e._scene,o=n.camera,a=n.canvas,s=(i.endPosition.x-i.startPosition.x)/a.clientWidth;s=Math.min(s,e.maximumMovementRatio);var l=4*r*s*Math.PI;o.twistRight(l)}function R(e){var t=e._tweens;e._aggregator.anyButtonDown&&t.removeAll();var i=e._scene,r=i.camera;if(t.contains(e._tween)||(m.equals(m.IDENTITY,r.transform)?(P(e,e.enableTranslate,e.translateEventTypes,D,e.inertiaTranslate,"_lastInertiaTranslateMovement"),P(e,e.enableZoom,e.zoomEventTypes,M,e.inertiaZoom,"_lastInertiaZoomMovement"),P(e,e.enableRotate,e.tiltEventTypes,I,e.inertiaSpin,"_lastInertiaTiltMovement")):(P(e,e.enableRotate,e.translateEventTypes,I,e.inertiaSpin,"_lastInertiaSpinMovement"),P(e,e.enableZoom,e.zoomEventTypes,M,e.inertiaZoom,"_lastInertiaZoomMovement"))),!(e._aggregator.anyButtonDown||o(e._lastInertiaZoomMovement)&&e._lastInertiaZoomMovement.active||o(e._lastInertiaTranslateMovement)&&e._lastInertiaTranslateMovement.active||t.contains(e._tween))){var n=r.createCorrectPositionTween(e.bounceAnimationTime);o(n)&&(e._tween=t.add(n))}t.update()}function L(e,i,r){var n=e._scene,a=e._globe,s=n.camera;if(!o(a))return void 0;var l;n.pickPositionSupported&&(l=n.pickPosition(i,gt));var u=s.getPickRay(i,vt),c=a.pick(u,n,_t),h=o(l)?t.distance(l,s.positionWC):Number.POSITIVE_INFINITY,d=o(c)?t.distance(c,s.positionWC):Number.POSITIVE_INFINITY;return d>h?t.clone(l,r):t.clone(c,r)}function N(i,r,n){if(t.equals(r,i._translateMousePosition)||(i._looking=!1),t.equals(r,i._strafeMousePosition)||(i._strafing=!1),i._looking)return Z(i,r,n),void 0;if(i._strafing)return U(i,r,n),void 0;var a,s=i._scene,l=s.camera,c=e.clone(n.startPosition,Tt),h=e.clone(n.endPosition,Pt),p=l.getPickRay(c,yt),m=t.clone(t.ZERO,bt),v=t.UNIT_X;if(l.position.z<i.minimumPickingTerrainHeight&&(a=L(i,c,wt),o(a)&&(m.x=a.x)),m.x>l.position.z&&o(a))return t.clone(a,i._strafeStartPosition),i._strafing=!0,U(i,r,n),i._strafeMousePosition=e.clone(r,i._strafeMousePosition),void 0;var g=f.fromPointNormal(m,v,xt);p=l.getPickRay(c,yt);var _=u.rayPlane(p,g,wt),y=l.getPickRay(h,Ct),C=u.rayPlane(y,g,St);if(!o(_)||!o(C))return i._looking=!0,Z(i,r,n),e.clone(r,i._translateMousePosition),void 0;var w=t.subtract(_,C,Et),S=w.x;w.x=w.y,w.y=w.z,w.z=S;var E=t.magnitude(w);E>d.EPSILON6&&(t.normalize(w,w),l.move(w,E))}function F(t,i,r){if(o(r.angleAndHeight)&&(r=r.angleAndHeight),e.equals(i,t._tiltCenterMousePosition)||(t._tiltCVOffMap=!1,t._looking=!1),t._looking)return Z(t,i,r),void 0;var n=t._scene,a=n.camera,s=t._maxCoord,l=Math.abs(a.position.x)-s.x<0&&Math.abs(a.position.y)-s.y<0;t._tiltCVOffMap||!l||a.position.z>t.minimumPickingTerrainHeight?(t._tiltCVOffMap=!0,B(t,i,r)):z(t,i,r)}function B(i,r,n){var a=i._scene,s=a.camera,u=a.canvas,c=At;c.x=u.clientWidth/2,c.y=u.clientHeight/2;var h,p=s.getPickRay(c,Dt),f=t.UNIT_X,v=p.origin,g=p.direction,y=t.dot(f,g);if(Math.abs(y)>d.EPSILON6&&(h=-t.dot(f,v)/y),!o(h)||0>=h)return i._looking=!0,Z(i,r,n),e.clone(r,i._tiltCenterMousePosition),void 0;var C=t.multiplyByScalar(g,h,Mt);t.add(v,C,C);var w=a.mapProjection,S=w.ellipsoid;t.fromElements(C.y,C.z,C.x,C);var E=w.unproject(C,Bt);S.cartographicToCartesian(E,C);var b=_.eastNorthUpToFixedFrame(C,S,Ot),x=i._globe,T=i._ellipsoid;i._globe=void 0,i._ellipsoid=l.UNIT_SPHERE,i._rotateFactor=1,i._rotateRateRangeAdjustment=1;var P=m.clone(s.transform,zt);s._setTransform(b),G(i,r,n,t.UNIT_Z),s._setTransform(P),i._globe=x,i._ellipsoid=T;var A=T.maximumRadius;i._rotateFactor=1/A,i._rotateRateRangeAdjustment=A}function z(i,r,n){var a,s,c=i._ellipsoid,h=i._scene,g=h.camera,y=t.UNIT_X;if(e.equals(r,i._tiltCenterMousePosition))a=t.clone(i._tiltCenter,Mt);else{if(g.position.z<i.minimumPickingTerrainHeight&&(a=L(i,r,Mt)),!o(a)){s=g.getPickRay(r,Dt);var C,w=s.origin,S=s.direction,E=t.dot(y,S);if(Math.abs(E)>d.EPSILON6&&(C=-t.dot(y,w)/E),!o(C)||0>=C)return i._looking=!0,Z(i,r,n),e.clone(r,i._tiltCenterMousePosition),void 0;a=t.multiplyByScalar(S,C,Mt),t.add(w,a,a)}e.clone(r,i._tiltCenterMousePosition),t.clone(a,i._tiltCenter)}var b=h.canvas,x=At;x.x=b.clientWidth/2,x.y=i._tiltCenterMousePosition.y,s=g.getPickRay(x,Dt);var T=t.clone(t.ZERO,Lt);T.x=a.x;var P=f.fromPointNormal(T,y,Nt),A=u.rayPlane(s,P,It),D=g._projection;c=D.ellipsoid,t.fromElements(a.y,a.z,a.x,a);var M=D.unproject(a,Bt);c.cartographicToCartesian(M,a);var I,O=_.eastNorthUpToFixedFrame(a,c,Ot);o(A)?(t.fromElements(A.y,A.z,A.x,A),M=D.unproject(A,Bt),c.cartographicToCartesian(M,A),I=_.eastNorthUpToFixedFrame(A,c,Rt)):I=O;var R=i._globe,N=i._ellipsoid;i._globe=void 0,i._ellipsoid=l.UNIT_SPHERE,i._rotateFactor=1,i._rotateRateRangeAdjustment=1;var F=t.UNIT_Z,B=m.clone(g.transform,zt);g._setTransform(O);var z=t.cross(t.UNIT_Z,t.normalize(g.position,Ft),Ft),k=t.dot(g.right,z);if(G(i,r,n,F,!1,!0),g._setTransform(I),0>k){n.startPosition.y>n.endPosition.y&&(F=void 0);var V=g.constrainedAxis;g.constrainedAxis=void 0,G(i,r,n,F,!0,!1),g.constrainedAxis=V}else G(i,r,n,F,!0,!1);if(o(g.constrainedAxis)){var U=t.cross(g.direction,g.constrainedAxis,vi);t.equalsEpsilon(U,t.ZERO,d.EPSILON6)||(t.dot(U,g.right)<0&&t.negate(U,U),t.cross(U,g.direction,g.up),t.cross(g.direction,g.up,g.right),t.normalize(g.up,g.up),t.normalize(g.right,g.right))}g._setTransform(B),i._globe=R,i._ellipsoid=N;var W=N.maximumRadius;i._rotateFactor=1/W,i._rotateRateRangeAdjustment=W;var H=t.clone(g.positionWC,Ft);if(Q(i),!t.equals(g.positionWC,H)){g._setTransform(I),g.worldToCameraCoordinatesPoint(H,H);var q=t.magnitudeSquared(H);t.magnitudeSquared(g.position)>q&&(t.normalize(g.position,g.position),t.multiplyByScalar(g.position,Math.sqrt(q),g.position));var j=t.angleBetween(H,g.position),Y=t.cross(H,g.position,H);t.normalize(Y,Y);var X=v.fromAxisAngle(Y,j,kt),J=p.fromQuaternion(X,Vt);p.multiplyByVector(J,g.direction,g.direction),p.multiplyByVector(J,g.up,g.up),t.cross(g.direction,g.up,g.right),t.cross(g.right,g.direction,g.up),g._setTransform(B)}}function k(e,i,r){o(r.distance)&&(r=r.distance);var n=e._scene,a=n.camera,s=n.canvas,l=Ut;l.x=s.clientWidth/2,l.y=s.clientHeight/2;var u,c=a.getPickRay(l,Wt);a.position.z<e.minimumPickingTerrainHeight&&(u=L(e,l,Gt));var h;if(o(u))h=t.distance(c.origin,u);else{var d=t.UNIT_X,p=c.origin,m=c.direction;h=-t.dot(d,p)/t.dot(d,m)}A(e,i,r,e._zoomFactor,h)}function V(e){var t=e._scene,i=t.camera;if(m.equals(m.IDENTITY,i.transform)){var r=e._tweens;if(e._aggregator.anyButtonDown&&r.removeAll(),P(e,e.enableTilt,e.tiltEventTypes,F,e.inertiaSpin,"_lastInertiaTiltMovement"),P(e,e.enableTranslate,e.translateEventTypes,N,e.inertiaTranslate,"_lastInertiaTranslateMovement"),P(e,e.enableZoom,e.zoomEventTypes,k,e.inertiaZoom,"_lastInertiaZoomMovement"),P(e,e.enableLook,e.lookEventTypes,Z),!(e._aggregator.anyButtonDown||o(e._lastInertiaZoomMovement)&&e._lastInertiaZoomMovement.active||o(e._lastInertiaTranslateMovement)&&e._lastInertiaTranslateMovement.active||r.contains(e._tween))){var n=i.createCorrectPositionTween(e.bounceAnimationTime);o(n)&&(e._tween=r.add(n))}r.update()}else P(e,e.enableRotate,e.rotateEventTypes,G,e.inertiaSpin,"_lastInertiaSpinMovement"),P(e,e.enableZoom,e.zoomEventTypes,q,e.inertiaZoom,"_lastInertiaZoomMovement")}function U(e,i,r){var n=e._scene,a=n.camera,s=L(e,r.startPosition,Jt);if(o(s)){var l=r.endPosition,c=a.getPickRay(l,Ht),h=t.clone(a.direction,Yt);n.mode===w.COLUMBUS_VIEW&&t.fromElements(h.z,h.x,h.y,h);var d=f.fromPointNormal(s,h,qt),p=u.rayPlane(c,d,jt);o(p)&&(h=t.subtract(s,p,h),n.mode===w.COLUMBUS_VIEW&&t.fromElements(h.y,h.z,h.x,h),t.add(a.position,h,a.position))}}function W(i,r,n){var a=i._scene,s=a.camera;if(!m.equals(s.transform,m.IDENTITY))return G(i,r,n),void 0;var u,c,h,d,p=i._ellipsoid.geodeticSurfaceNormal(s.position,$t),f=i._ellipsoid.cartesianToCartographic(s.positionWC,Zt).height,v=i._globe,g=!1;if(o(v)&&f<i.minimumPickingTerrainHeight&&(d=L(i,n.startPosition,Jt),o(d))){var _=s.getPickRay(n.startPosition,vt),y=i._ellipsoid.geodeticSurfaceNormal(d);g=Math.abs(t.dot(_.direction,y))<.05,g&&!i._looking&&(i._rotating=!1,i._strafing=!0)}return e.equals(r,i._rotateMousePosition)?(i._looking?Z(i,r,n,p):i._rotating?G(i,r,n):i._strafing?(t.clone(d,i._strafeStartPosition),U(i,r,n)):(u=t.magnitude(i._rotateStartPosition),c=Qt,c.x=c.y=c.z=u,h=l.fromCartesian3(c,Kt),H(i,r,n,h)),void 0):(i._looking=!1,i._rotating=!1,i._strafing=!1,o(v)&&f<i.minimumPickingTerrainHeight?o(d)?t.magnitude(s.position)<t.magnitude(d)?(t.clone(d,i._strafeStartPosition),i._strafing=!0,U(i,r,n)):(u=t.magnitude(d),c=Qt,c.x=c.y=c.z=u,h=l.fromCartesian3(c,Kt),H(i,r,n,h),t.clone(d,i._rotateStartPosition)):(i._looking=!0,Z(i,r,n,p)):o(s.pickEllipsoid(n.startPosition,i._ellipsoid,Xt))?(H(i,r,n,i._ellipsoid),t.clone(Xt,i._rotateStartPosition)):f>i.minimumTrackBallHeight?(i._rotating=!0,G(i,r,n)):(i._looking=!0,Z(i,r,n,p)),e.clone(r,i._rotateMousePosition),void 0)}function G(e,i,r,a,s,l){s=n(s,!1),l=n(l,!1);var u=e._scene,c=u.camera,h=u.canvas,d=c.constrainedAxis;o(a)&&(c.constrainedAxis=a);var p=t.magnitude(c.position),m=e._rotateFactor*(p-e._rotateRateRangeAdjustment);m>e._maximumRotateRate&&(m=e._maximumRotateRate),m<e._minimumRotateRate&&(m=e._minimumRotateRate);var f=(r.startPosition.x-r.endPosition.x)/h.clientWidth,v=(r.startPosition.y-r.endPosition.y)/h.clientHeight;f=Math.min(f,e.maximumMovementRatio),v=Math.min(v,e.maximumMovementRatio);var g=2*m*f*Math.PI,_=m*v*Math.PI;s||c.rotateRight(g),l||c.rotateUp(_),c.constrainedAxis=d}function H(i,r,n,a){var s=i._scene,l=s.camera,u=e.clone(n.startPosition,ai),c=e.clone(n.endPosition,si),h=l.pickEllipsoid(u,a,ei),p=l.pickEllipsoid(c,a,ti);if(!o(h)||!o(p))return i._rotating=!0,G(i,r,n),void 0;if(h=l.worldToCameraCoordinates(h,h),p=l.worldToCameraCoordinates(p,p),o(l.constrainedAxis)){var m=l.constrainedAxis,f=t.mostOrthogonalAxis(m,ii);t.cross(f,m,f),t.normalize(f,f);var v=t.cross(m,f,ri),g=t.magnitude(h),_=t.dot(m,h),y=Math.acos(_/g),C=t.multiplyByScalar(m,_,ni);t.subtract(h,C,C),t.normalize(C,C);var w=t.magnitude(p),S=t.dot(m,p),E=Math.acos(S/w),b=t.multiplyByScalar(m,S,oi);t.subtract(p,b,b),t.normalize(b,b);var x=Math.acos(t.dot(C,f));t.dot(C,v)<0&&(x=d.TWO_PI-x);var T=Math.acos(t.dot(b,f));t.dot(b,v)<0&&(T=d.TWO_PI-T);var P,A=x-T;P=t.equalsEpsilon(m,l.position,d.EPSILON2)?l.right:t.cross(m,l.position,ii);var D,M=t.cross(m,P,ii),I=t.dot(M,t.subtract(h,m,ri)),O=t.dot(M,t.subtract(p,m,ri));D=I>0&&O>0?E-y:I>0&&0>=O?t.dot(l.position,m)>0?-y-E:y+E:y-E,l.rotateRight(A),l.rotateUp(D)}else{t.normalize(h,h),t.normalize(p,p);var R=t.dot(h,p),L=t.cross(h,p,ii);if(1>R&&!t.equalsEpsilon(L,t.ZERO,d.EPSILON14)){var N=Math.acos(R);l.rotate(L,N)}}}function q(e,i,r){o(r.distance)&&(r=r.distance);var n=e._ellipsoid,a=e._scene,s=a.camera,l=a.canvas,u=Ut;u.x=l.clientWidth/2,u.y=l.clientHeight/2;var c,h=s.getPickRay(u,Wt),d=n.cartesianToCartographic(s.position,ui).height;d<e.minimumPickingTerrainHeight&&(c=L(e,u,Gt));var p;p=o(c)?t.distance(h.origin,c):d;var m=t.normalize(s.position,li);A(e,i,r,e._zoomFactor,p,t.dot(m,s.direction))}function j(t,i,r){var n=t._scene,a=n.camera;if(m.equals(a.transform,m.IDENTITY)){if(o(r.angleAndHeight)&&(r=r.angleAndHeight),e.equals(i,t._tiltCenterMousePosition)||(t._tiltOnEllipsoid=!1,t._looking=!1),t._looking){var s=t._ellipsoid.geodeticSurfaceNormal(a.position,wi);return Z(t,i,r,s),void 0}var l=t._ellipsoid,u=l.cartesianToCartographic(a.position,Ci);t._tiltOnEllipsoid||u.height>t.minimumCollisionTerrainHeight?(t._tiltOnEllipsoid=!0,Y(t,i,r)):X(t,i,r)}}function Y(i,r,n){var a=i._ellipsoid,s=i._scene,c=s.camera,h=.25*i.minimumZoomDistance,p=a.cartesianToCartographic(c.positionWC,Si).height;if(!(p-h-1<d.EPSILON3&&n.endPosition.y-n.startPosition.y<0)){var f=s.canvas,v=ci;v.x=f.clientWidth/2,v.y=f.clientHeight/2;var y,C=c.getPickRay(v,hi),w=u.rayEllipsoid(C,a);if(o(w))y=g.getPoint(C,w.start,di);else{if(!(p>i.minimumTrackBallHeight)){i._looking=!0;var S=i._ellipsoid.geodeticSurfaceNormal(c.position,wi);return Z(i,r,n,S),e.clone(r,i._tiltCenterMousePosition),void 0}var E=u.grazingAltitudeLocation(C,a);if(!o(E))return;var b=a.cartesianToCartographic(E,Ci);b.height=0,y=a.cartographicToCartesian(b,di)}var x=_.eastNorthUpToFixedFrame(y,a,mi),T=i._globe,P=i._ellipsoid;i._globe=void 0,i._ellipsoid=l.UNIT_SPHERE,i._rotateFactor=1,i._rotateRateRangeAdjustment=1;var A=m.clone(c.transform,gi);c._setTransform(x),G(i,r,n,t.UNIT_Z),c._setTransform(A),i._globe=T,i._ellipsoid=P;var D=P.maximumRadius;i._rotateFactor=1/D,i._rotateRateRangeAdjustment=D}}function X(i,r,n){var a,s,c,h=i._ellipsoid,f=i._scene,y=f.camera;if(e.equals(r,i._tiltCenterMousePosition))a=t.clone(i._tiltCenter,di);else{if(a=L(i,r,di),!o(a)){if(s=y.getPickRay(r,hi),c=u.rayEllipsoid(s,h),!o(c)){var C=h.cartesianToCartographic(y.position,Ci);if(C.height<=i.minimumTrackBallHeight){i._looking=!0;var w=i._ellipsoid.geodeticSurfaceNormal(y.position,wi);Z(i,r,n,w),e.clone(r,i._tiltCenterMousePosition)}return}a=g.getPoint(s,c.start,di)}e.clone(r,i._tiltCenterMousePosition),t.clone(a,i._tiltCenter)}var S=f.canvas,E=ci;E.x=S.clientWidth/2,E.y=i._tiltCenterMousePosition.y,s=y.getPickRay(E,hi);var b=t.magnitude(a),x=t.fromElements(b,b,b,Qt),T=l.fromCartesian3(x,Kt);if(c=u.rayEllipsoid(s,T),o(c)){var P=t.magnitude(s.origin)>b?c.start:c.stop,A=g.getPoint(s,P,pi),D=_.eastNorthUpToFixedFrame(a,h,mi),M=_.eastNorthUpToFixedFrame(A,T,fi),I=i._globe,O=i._ellipsoid;i._globe=void 0,i._ellipsoid=l.UNIT_SPHERE,i._rotateFactor=1,i._rotateRateRangeAdjustment=1;var R=t.UNIT_Z,N=m.clone(y.transform,gi);y._setTransform(D);var F=t.cross(A,y.positionWC,vi),B=t.dot(y.rightWC,F);if(G(i,r,n,R,!1,!0),y._setTransform(M),0>B){n.startPosition.y>n.endPosition.y&&(R=void 0);var z=y.constrainedAxis;y.constrainedAxis=void 0,G(i,r,n,R,!0,!1),y.constrainedAxis=z}else G(i,r,n,R,!0,!1);if(o(y.constrainedAxis)){var k=t.cross(y.direction,y.constrainedAxis,vi);t.equalsEpsilon(k,t.ZERO,d.EPSILON6)||(t.dot(k,y.right)<0&&t.negate(k,k),t.cross(k,y.direction,y.up),t.cross(y.direction,y.up,y.right),t.normalize(y.up,y.up),t.normalize(y.right,y.right))}y._setTransform(N),i._globe=I,i._ellipsoid=O;var V=O.maximumRadius;i._rotateFactor=1/V,i._rotateRateRangeAdjustment=V;var U=t.clone(y.positionWC,vi);if(Q(i),!t.equals(y.positionWC,U)){y._setTransform(M),y.worldToCameraCoordinatesPoint(U,U);var W=t.magnitudeSquared(U);t.magnitudeSquared(y.position)>W&&(t.normalize(y.position,y.position),t.multiplyByScalar(y.position,Math.sqrt(W),y.position));var H=t.angleBetween(U,y.position),q=t.cross(U,y.position,U);t.normalize(q,q);var j=v.fromAxisAngle(q,H,_i),Y=p.fromQuaternion(j,yi);p.multiplyByVector(Y,y.direction,y.direction),p.multiplyByVector(Y,y.up,y.up),t.cross(y.direction,y.up,y.right),t.cross(y.right,y.direction,y.up),y._setTransform(N)}}}function Z(e,i,r,a){var s=e._scene,l=s.camera,u=Ei;u.x=r.startPosition.x,u.y=0;var c=bi;c.x=r.endPosition.x,c.y=0;var h=l.getPickRay(u,xi).direction,p=l.getPickRay(c,Ti).direction,m=0,f=t.dot(h,p);1>f&&(m=Math.acos(f)),m=r.startPosition.x>r.endPosition.x?-m:m;var v=e._horizontalRotationAxis;if(o(a)?l.look(a,-m):o(v)?l.look(v,-m):l.lookLeft(m),u.x=0,u.y=r.startPosition.y,c.x=0,c.y=r.endPosition.y,h=l.getPickRay(u,xi).direction,p=l.getPickRay(c,Ti).direction,m=0,f=t.dot(h,p),1>f&&(m=Math.acos(f)),m=r.startPosition.y>r.endPosition.y?-m:m,a=n(a,v),o(a)){var g=l.direction,_=t.negate(a,Pi),y=t.equalsEpsilon(g,a,d.EPSILON2),C=t.equalsEpsilon(g,_,d.EPSILON2);if(y||C)(y&&0>m||C&&m>0)&&l.look(l.right,-m);else{f=t.dot(g,a);var w=d.acosClamped(f);m>0&&m>w&&(m=w-d.EPSILON4),f=t.dot(g,_),w=d.acosClamped(f),0>m&&-m>w&&(m=-w+d.EPSILON4);var S=t.cross(a,g,Ai);l.look(S,m)}}else l.lookUp(m)}function J(e){P(e,e.enableRotate,e.rotateEventTypes,W,e.inertiaSpin,"_lastInertiaSpinMovement"),P(e,e.enableZoom,e.zoomEventTypes,q,e.inertiaZoom,"_lastInertiaZoomMovement"),P(e,e.enableTilt,e.tiltEventTypes,j,e.inertiaSpin,"_lastInertiaTiltMovement"),P(e,e.enableLook,e.lookEventTypes,Z)}function Q(e){if(e.enableCollisionDetection){var i=e._scene,r=i.mode,n=i.globe;if(o(n)&&r!==w.SCENE2D&&r!==w.MORPHING){var a,s,l=i.camera,u=n.ellipsoid,c=i.mapProjection;m.equals(l.transform,m.IDENTITY)||(a=m.clone(l.transform),s=t.magnitude(l.position),l._setTransform(m.IDENTITY));var h=Di;r===w.SCENE3D?u.cartesianToCartographic(l.position,h):c.unproject(l.position,h);var d=!1;if(h.height<e.minimumCollisionTerrainHeight){var p=n.getHeight(h);o(p)&&(p+=e.minimumZoomDistance,h.height<p&&(h.height=p,r===w.SCENE3D?u.cartographicToCartesian(h,l.position):c.project(h,l.position),d=!0))}o(a)&&(l._setTransform(a),d&&(t.normalize(l.position,l.position),t.negate(l.position,l.direction),t.multiplyByScalar(l.position,Math.max(s,e.minimumZoomDistance),l.position),t.normalize(l.direction,l.direction),t.cross(l.direction,l.up,l.right),t.cross(l.right,l.direction,l.up)))}}}var K=function(i){this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=20,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.translateEventTypes=C.LEFT_DRAG,this.zoomEventTypes=[C.RIGHT_DRAG,C.WHEEL,C.PINCH],this.rotateEventTypes=C.LEFT_DRAG,this.tiltEventTypes=[C.MIDDLE_DRAG,C.PINCH,{eventType:C.LEFT_DRAG,modifier:h.CTRL}],this.lookEventTypes={eventType:C.LEFT_DRAG,modifier:h.SHIFT},this.minimumPickingTerrainHeight=15e4,this.minimumCollisionTerrainHeight=15e3,this.minimumTrackBallHeight=75e5,this.enableCollisionDetection=!0,this._scene=i,this._globe=void 0,this._ellipsoid=void 0,this._aggregator=new y(i.canvas),this._lastInertiaSpinMovement=void 0,this._lastInertiaZoomMovement=void 0,this._lastInertiaTranslateMovement=void 0,this._lastInertiaWheelZoomMovement=void 0,this._lastInertiaTiltMovement=void 0,this._tweens=new E,this._tween=void 0,this._horizontalRotationAxis=void 0,this._tiltCenterMousePosition=new e(-1,-1),this._tiltCenter=new t,this._rotateMousePosition=new e(-1,-1),this._rotateStartPosition=new t,this._strafeStartPosition=new t,this._zoomMouseStart=new e,this._zoomWorldPosition=new t,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._rotatingZoom=!1;var n=i.mapProjection;this._maxCoord=n.project(new r(Math.PI,d.PI_OVER_TWO)),this._zoomFactor=5,this._rotateFactor=void 0,this._rotateRateRangeAdjustment=void 0,this._maximumRotateRate=1.77,this._minimumRotateRate=2e-4,this._translateFactor=1,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3},$=.4,et=[],tt=new g,it=new t,rt=new e,nt=new t,ot=new e,at=new t,st=new t,lt=new t,ut=new t,ct=new t,ht=new g,dt=new g,pt=new t,mt=new e,ft=new e,vt=new g,gt=new t,_t=new t,yt=new g,Ct=new g,wt=new t,St=new t,Et=new t,bt=new t,xt=new f(t.ZERO,0),Tt=new e,Pt=new e,At=new e,Dt=new g,Mt=new t,It=new t,Ot=new m,Rt=new m,Lt=new t,Nt=new f(t.ZERO,0),Ft=new t,Bt=new r,zt=new m,kt=new v,Vt=new p,Ut=new e,Wt=new g,Gt=new t,Ht=new g,qt=new f(t.ZERO,0),jt=new t,Yt=new t,Xt=new t;new g;var Zt=new r,Jt=new t,Qt=new t,Kt=new l,$t=new t,ei=i.clone(i.UNIT_W),ti=i.clone(i.UNIT_W),ii=new t,ri=new t,ni=new t,oi=new t,ai=new e,si=new e,li=new t,ui=new r,ci=new e,hi=new g,di=new t,pi=new t,mi=new m,fi=new m,vi=new t,gi=new m,_i=new v,yi=new p,Ci=new r,wi=new t,Si=new r,Ei=new e,bi=new e,xi=new g,Ti=new g,Pi=new t,Ai=new t,Di=new r;return K.prototype.update=function(){m.equals(this._scene.camera.transform,m.IDENTITY)?(this._globe=this._scene.globe,this._ellipsoid=o(this._globe)?this._globe.ellipsoid:this._scene.mapProjection.ellipsoid):(this._globe=void 0,this._ellipsoid=l.UNIT_SPHERE);var e=this._ellipsoid.maximumRadius;this._rotateFactor=1/e,this._rotateRateRangeAdjustment=e;var i=this._scene,r=i.mode;r===w.SCENE2D?R(this):r===w.COLUMBUS_VIEW?(this._horizontalRotationAxis=t.UNIT_Z,V(this)):r===w.SCENE3D&&(this._horizontalRotationAxis=void 0,J(this)),Q(this),this._aggregator.reset()},K.prototype.isDestroyed=function(){return!1},K.prototype.destroy=function(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),a(this)},K}),i("Shaders/PostProcessFilters/AdditiveBlend",[],function(){"use strict";return"uniform sampler2D u_texture0;\nuniform sampler2D u_texture1;\nuniform vec2 u_center;\nuniform float u_radius;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\nvec4 color0 = texture2D(u_texture0, v_textureCoordinates);\nvec4 color1 = texture2D(u_texture1, v_textureCoordinates);\nfloat x = length(gl_FragCoord.xy - u_center) / u_radius;\nfloat t = smoothstep(0.5, 0.8, x);\ngl_FragColor = mix(color0 + color1, color0, t);\n}\n"}),i("Shaders/PostProcessFilters/BrightPass",[],function(){"use strict";return"uniform sampler2D u_texture;\nuniform float u_avgLuminance;\nuniform float u_threshold;\nuniform float u_offset;\nvarying vec2 v_textureCoordinates;\nfloat key(float avg)\n{\nfloat guess = 1.5 - (1.5 / (avg * 0.1 + 1.0));\nreturn max(0.0, guess) + 0.1;\n}\nvoid main()\n{\nvec4 color = texture2D(u_texture, v_textureCoordinates);\nvec3 xyz = czm_RGBToXYZ(color.rgb);\nfloat luminance = xyz.r;\nfloat scaledLum = key(u_avgLuminance) * luminance / u_avgLuminance;\nfloat brightLum = max(scaledLum - u_threshold, 0.0);\nfloat brightness = brightLum / (u_offset + brightLum);\nxyz.r = brightness;\ngl_FragColor = vec4(czm_XYZToRGB(xyz), 1.0);\n}\n" +}),i("Shaders/PostProcessFilters/GaussianBlur1D",[],function(){"use strict";return"#define SAMPLES 8\nuniform float delta;\nuniform float sigma;\nuniform float direction;\nuniform sampler2D u_texture;\nuniform vec2 u_step;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\nvec2 st = v_textureCoordinates;\nvec2 dir = vec2(1.0 - direction, direction);\nvec3 g;\ng.x = 1.0 / (sqrt(czm_twoPi) * sigma);\ng.y = exp((-0.5 * delta * delta) / (sigma * sigma));\ng.z = g.y * g.y;\nvec4 result = texture2D(u_texture, st) * g.x;\nfor (int i = 1; i < SAMPLES; ++i)\n{\ng.xy *= g.yz;\nvec2 offset = float(i) * dir * u_step;\nresult += texture2D(u_texture, st - offset) * g.x;\nresult += texture2D(u_texture, st + offset) * g.x;\n}\ngl_FragColor = result;\n}\n"}),i("Scene/SunPostProcess",["../Core/BoundingRectangle","../Core/Cartesian2","../Core/Cartesian4","../Core/Color","../Core/defaultValue","../Core/defined","../Core/destroyObject","../Core/Math","../Core/Matrix4","../Core/PixelFormat","../Core/Transforms","../Renderer/ClearCommand","../Renderer/PassState","../Renderer/PixelDatatype","../Renderer/RenderbufferFormat","../Shaders/PostProcessFilters/AdditiveBlend","../Shaders/PostProcessFilters/BrightPass","../Shaders/PostProcessFilters/GaussianBlur1D","../Shaders/PostProcessFilters/PassThrough"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_){"use strict";var y=function(){this._fbo=void 0,this._downSampleFBO1=void 0,this._downSampleFBO2=void 0,this._clearFBO1Command=void 0,this._clearFBO2Command=void 0,this._downSampleCommand=void 0,this._brightPassCommand=void 0,this._blurXCommand=void 0,this._blurYCommand=void 0,this._blendCommand=void 0,this._fullScreenCommand=void 0,this._downSamplePassState=new d,this._downSamplePassState.scissorTest={enable:!0,rectangle:new e},this._upSamplePassState=new d,this._upSamplePassState.scissorTest={enabled:!0,rectangle:new e},this._uCenter=new t,this._uRadius=void 0,this._blurStep=new t};y.prototype.clear=function(e,t){var i=this._clearFBO1Command;r.clone(n(t,r.BLACK),i.color),i.execute(e),i=this._clearFBO2Command,r.clone(n(t,r.BLACK),i.color),i.execute(e)},y.prototype.execute=function(e,t){this._downSampleCommand.execute(e,this._downSamplePassState),this._brightPassCommand.execute(e,this._downSamplePassState),this._blurXCommand.execute(e,this._downSamplePassState),this._blurYCommand.execute(e,this._downSamplePassState),this._fullScreenCommand.framebuffer=t,this._blendCommand.framebuffer=t,this._fullScreenCommand.execute(e),this._blendCommand.execute(e,this._upSamplePassState)};var C=new e,w=new e,S=new i,E=new t,b=new t,x=new l;return y.prototype.update=function(e){var i=e.drawingBufferWidth,n=e.drawingBufferHeight,a=this;if(!o(this._downSampleCommand)){this._clearFBO1Command=new h({color:new r}),this._clearFBO2Command=new h({color:new r});var d,y={};this._downSampleCommand=e.createViewportQuadCommand(_,{renderState:d,uniformMap:y,owner:this}),y={u_avgLuminance:function(){return.5},u_threshold:function(){return.25},u_offset:function(){return.1}},this._brightPassCommand=e.createViewportQuadCommand(v,{renderState:d,uniformMap:y,owner:this});var T=1,P=2;y={delta:function(){return T},sigma:function(){return P},direction:function(){return 0}},this._blurXCommand=e.createViewportQuadCommand(g,{renderState:d,uniformMap:y,owner:this}),y={delta:function(){return T},sigma:function(){return P},direction:function(){return 1}},this._blurYCommand=e.createViewportQuadCommand(g,{renderState:d,uniformMap:y,owner:this}),y={u_center:function(){return a._uCenter},u_radius:function(){return a._uRadius}},this._blendCommand=e.createViewportQuadCommand(f,{renderState:d,uniformMap:y,owner:this}),y={},this._fullScreenCommand=e.createViewportQuadCommand(_,{renderState:d,uniformMap:y,owner:this})}var A=Math.pow(2,Math.ceil(Math.log(i)/Math.log(2))-2),D=Math.pow(2,Math.ceil(Math.log(n)/Math.log(2))-2),M=Math.max(A,D),I=C;I.width=i,I.height=n;var O=w;O.width=M,O.height=M;var R=this._fbo,L=o(R)&&R.getColorTexture(0)||void 0;if(!o(L)||L.width!==i||L.height!==n){R=R&&R.destroy(),this._downSampleFBO1=this._downSampleFBO1&&this._downSampleFBO1.destroy(),this._downSampleFBO2=this._downSampleFBO2&&this._downSampleFBO2.destroy(),this._blurStep.x=this._blurStep.y=1/M;var N=[e.createTexture2D({width:i,height:n})];R=this._fbo=e.depthTexture?e.createFramebuffer({colorTextures:N,depthTexture:e.createTexture2D({width:i,height:n,pixelFormat:u.DEPTH_COMPONENT,pixelDatatype:p.UNSIGNED_SHORT})}):e.createFramebuffer({colorTextures:N,depthRenderbuffer:e.createRenderbuffer({format:m.DEPTH_COMPONENT16})}),this._downSampleFBO1=e.createFramebuffer({colorTextures:[e.createTexture2D({width:M,height:M})]}),this._downSampleFBO2=e.createFramebuffer({colorTextures:[e.createTexture2D({width:M,height:M})]}),this._clearFBO1Command.framebuffer=this._downSampleFBO1,this._clearFBO2Command.framebuffer=this._downSampleFBO2,this._downSampleCommand.framebuffer=this._downSampleFBO1,this._brightPassCommand.framebuffer=this._downSampleFBO2,this._blurXCommand.framebuffer=this._downSampleFBO1,this._blurYCommand.framebuffer=this._downSampleFBO2;var F=e.createRenderState({viewport:O}),B=e.createRenderState();this._downSampleCommand.uniformMap.u_texture=function(){return R.getColorTexture(0)},this._downSampleCommand.renderState=F,this._brightPassCommand.uniformMap.u_texture=function(){return a._downSampleFBO1.getColorTexture(0)},this._brightPassCommand.renderState=F,this._blurXCommand.uniformMap.u_texture=function(){return a._downSampleFBO2.getColorTexture(0)},this._blurXCommand.uniformMap.u_step=function(){return a._blurStep},this._blurXCommand.renderState=F,this._blurYCommand.uniformMap.u_texture=function(){return a._downSampleFBO1.getColorTexture(0)},this._blurYCommand.uniformMap.u_step=function(){return a._blurStep},this._blurYCommand.renderState=F,this._blendCommand.uniformMap.u_texture0=function(){return R.getColorTexture(0)},this._blendCommand.uniformMap.u_texture1=function(){return a._downSampleFBO2.getColorTexture(0)},this._blendCommand.renderState=B,this._fullScreenCommand.uniformMap.u_texture=function(){return R.getColorTexture(0)},this._fullScreenCommand.renderState=B}var z=e.uniformState,k=z.sunPositionWC,V=z.view,U=z.viewProjection,W=z.projection,G=l.computeViewportTransformation(I,0,1,x),H=l.multiplyByPoint(V,k,S),q=c.pointToGLWindowCoordinates(U,G,k,E);H.x+=s.SOLAR_RADIUS;var j=c.pointToGLWindowCoordinates(W,G,H,H),Y=2*30*t.magnitude(t.subtract(j,q,j)),X=b;X.x=Y,X.y=Y;var Z=this._upSamplePassState.scissorTest.rectangle;return Z.x=Math.max(q.x-.5*X.x,0),Z.y=Math.max(q.y-.5*X.y,0),Z.width=Math.min(X.x,i),Z.height=Math.min(X.y,n),this._uCenter=t.clone(q,this._uCenter),this._uRadius=.5*Math.max(X.x,X.y),G=l.computeViewportTransformation(O,0,1,x),q=c.pointToGLWindowCoordinates(U,G,k,E),X.x*=A/i,X.y*=D/n,Z=this._downSamplePassState.scissorTest.rectangle,Z.x=Math.max(q.x-.5*X.x,0),Z.y=Math.max(q.y-.5*X.y,0),Z.width=Math.min(X.x,i),Z.height=Math.min(X.y,n),this._downSamplePassState.context=e,this._upSamplePassState.context=e,this._fbo},y.prototype.isDestroyed=function(){return!1},y.prototype.destroy=function(){return this._fbo=this._fbo&&this._fbo.destroy(),this._downSampleFBO1=this._downSampleFBO1&&this._downSampleFBO1.destroy(),this._downSampleFBO2=this._downSampleFBO2&&this._downSampleFBO2.destroy(),this._downSampleCommand=this._downSampleCommand&&this._downSampleCommand.shaderProgram&&this._downSampleCommand.shaderProgram.destroy(),this._brightPassCommand=this._brightPassCommand&&this._brightPassCommand.shaderProgram&&this._brightPassCommand.shaderProgram.destroy(),this._blurXCommand=this._blurXCommand&&this._blurXCommand.shaderProgram&&this._blurXCommand.shaderProgram.destroy(),this._blurYCommand=this._blurYCommand&&this._blurYCommand.shaderProgram&&this._blurYCommand.shaderProgram.destroy(),this._blendCommand=this._blendCommand&&this._blendCommand.shaderProgram&&this._blendCommand.shaderProgram.destroy(),this._fullScreenCommand=this._fullScreenCommand&&this._fullScreenCommand.shaderProgram&&this._fullScreenCommand.shaderProgram.destroy(),a(this)},y}),i("Scene/Scene",["../Core/BoundingRectangle","../Core/BoundingSphere","../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/Color","../Core/ColorGeometryInstanceAttribute","../Core/createGuid","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/DeveloperError","../Core/EllipsoidGeometry","../Core/Event","../Core/GeographicProjection","../Core/GeometryInstance","../Core/GeometryPipeline","../Core/getTimestamp","../Core/Intersect","../Core/Interval","../Core/JulianDate","../Core/Math","../Core/Matrix4","../Core/mergeSort","../Core/Occluder","../Core/ShowGeometryInstanceAttribute","../Renderer/ClearCommand","../Renderer/Context","../Renderer/PassState","./Camera","./CreditDisplay","./CullingVolume","./FrameState","./FrustumCommands","./FXAA","./GlobeDepth","./OIT","./OrthographicFrustum","./Pass","./PerformanceDisplay","./PerInstanceColorAppearance","./PerspectiveFrustum","./PerspectiveOffCenterFrustum","./PickDepth","./Primitive","./PrimitiveCollection","./SceneMode","./SceneTransforms","./SceneTransitioner","./ScreenSpaceCameraController","./SunPostProcess","./TweenCollection"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D,M,I,O,R,L,N,F,B,z,k,V,U,W,G,H,q,j,Y,X,Z,J,Q,K){"use strict";function $(e,t){var i=Math.max(Math.abs(e.x),Math.abs(t.x)),r=Math.max(Math.abs(e.y),Math.abs(t.y)),n=Math.max(Math.abs(e.z),Math.abs(t.z));return Math.max(Math.max(i,r),n)}function et(e,t,i){var n=1/Math.max(1,$(e.position,t.position));return r.multiplyByScalar(e.position,n,Pt),r.multiplyByScalar(t.position,n,At),r.equalsEpsilon(Pt,At,i)&&r.equalsEpsilon(e.direction,t.direction,i)&&r.equalsEpsilon(e.up,t.up,i)&&r.equalsEpsilon(e.right,t.right,i)&&E.equalsEpsilon(e.transform,t.transform,i)}function tt(e){var t=e.globe;if(e._mode===Y.SCENE3D&&u(t)){var i=t.ellipsoid;return Dt.radius=i.minimumRadius,Tt=x.fromBoundingSphere(Dt,e._camera.positionWC,Tt)}return void 0}function it(e){e.render=!1,e.pick=!1}function rt(e,t,i){var r=e._camera,n=e._frameState;n.mode=e._mode,n.morphTime=e.morphTime,n.mapProjection=e.mapProjection,n.frameNumber=t,n.time=w.clone(i,n.time),n.camera=r,n.cullingVolume=r.frustum.computeCullingVolume(r.positionWC,r.directionWC,r.upWC),n.occluder=tt(e),it(n.passes)}function nt(e,t,i,r,n){n.length=r;for(var o=0;r>o;++o){var a=Math.max(e,Math.pow(i,o)*e),s=Math.min(t,i*a),l=n[o];u(l)?(l.near=a,l.far=s):l=n[o]=new L(a,s)}}function ot(e,t,i){e.debugShowFrustums&&(t.debugOverlappingFrustums=0);for(var r=e._frustumCommandsList,n=r.length,o=0;n>o;++o){var a=r[o],s=a.near,l=a.far;if(!(i.start>l)){if(i.stop<s)break;var c=t instanceof P?k.OPAQUE:t.pass,h=a.indices[c]++;if(a.commands[c][h]=t,e.debugShowFrustums&&(t.debugOverlappingFrustums|=1<<o),t.executeInClosestFrustum)break}}if(e.debugShowFrustums){var d=e._debugFrustumStatistics.commandsInFrustums;d[t.debugOverlappingFrustums]=u(d[t.debugOverlappingFrustums])?d[t.debugOverlappingFrustums]+1:1,++e._debugFrustumStatistics.totalCommands}}function at(e){var i=e._commandList,r=e._overlayCommandList,n=e._frameState.cullingVolume,o=e._camera,a=o.directionWC,s=o.positionWC;e.debugShowFrustums&&(e._debugFrustumStatistics={totalCommands:0,commandsInFrustums:{}});for(var l=e._frustumCommandsList,c=l.length,h=k.NUMBER_OF_PASSES,d=0;c>d;++d)for(var p=0;h>p;++p)l[d].indices[p]=0;r.length=0;var m,f=Number.MAX_VALUE,v=Number.MIN_VALUE,g=!1;e._frameState.mode===Y.SCENE3D&&(m=e._frameState.occluder);for(var _=Mt.planes,C=0;5>C;++C)_[C]=n.planes[C];n=Mt;for(var w=i.length,S=0;w>S;++S){var E=i[S],b=E.pass;if(b===k.OVERLAY)r.push(E);else{var x=E.boundingVolume;if(u(x)){if(E.cull&&(n.computeVisibility(x)===y.OUTSIDE||u(m)&&!m.isBoundingSphereVisible(x)))continue;It=t.computePlaneDistances(x,s,a,It),f=Math.min(f,It.start),v=Math.max(v,It.stop)}else It.start=o.frustum.near,It.stop=o.frustum.far,g=!(E instanceof P);ot(e,E,It)}}g?(f=o.frustum.near,v=o.frustum.far):(f=Math.min(Math.max(f,o.frustum.near),o.frustum.far),v=Math.max(Math.min(v,o.frustum.far),f));var T=e.farToNearRatio,A=Math.ceil(Math.log(v/f)/Math.log(T));f!==Number.MAX_VALUE&&(A!==c||0!==l.length&&(f<l[0].near||v>l[c-1].far))&&(nt(f,v,T,A,l),at(e))}function st(e){var t={},i=e.vertexAttributes;for(var r in i)i.hasOwnProperty(r)&&(t[r]=i[r].index);return t}function lt(e,t,i){var r=t.context,n=l(i,e.shaderProgram),a=n.fragmentShaderSource.clone();a.sources=a.sources.map(function(e){return e=e.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,"void czm_Debug_main()")});var s="void main() \n{ \n czm_Debug_main(); \n";if(t.debugShowCommands){u(e._debugColor)||(e._debugColor=o.fromRandom());var c=e._debugColor;s+=" gl_FragColor.rgb *= vec3("+c.red+", "+c.green+", "+c.blue+"); \n"}if(t.debugShowFrustums){var h=1&e.debugOverlappingFrustums?"1.0":"0.0",d=2&e.debugOverlappingFrustums?"1.0":"0.0",p=4&e.debugOverlappingFrustums?"1.0":"0.0";s+=" gl_FragColor.rgb *= vec3("+h+", "+d+", "+p+"); \n"}s+="}",a.sources.push(s);var m=st(n);return r.createShaderProgram(n.vertexShaderSource,a,m)}function ut(e,t,i,r,n){if(u(e.shaderProgram)||u(n)){var o=lt(e,t,n);e.execute(t.context,i,r,o),o.destroy()}}function ct(e,t,i,n,o,s,l){if((!u(t.debugCommandFilter)||t.debugCommandFilter(e))&&(t.debugShowCommands||t.debugShowFrustums?ut(e,t,n,o,s):e.execute(i,n,o,s),e.debugShowBoundingVolume&&u(e.boundingVolume))){u(t._debugSphere)&&t._debugSphere.destroy();var c=t._frameState,h=e.boundingVolume,d=h.radius,m=h.center,f=g.toWireframe(p.createGeometry(new p({radii:new r(d,d,d),vertexFormat:U.FLAT_VERTEX_FORMAT})));if(c.mode!==Y.SCENE3D){m=E.multiplyByPoint(Ot,m,m);var _=c.mapProjection,y=_.unproject(m);m=_.ellipsoid.cartographicToCartesian(y)}t._debugSphere=new q({geometryInstances:new v({geometry:f,modelMatrix:E.multiplyByTranslation(E.IDENTITY,m,new E),attributes:{color:new a(1,0,0,1)}}),appearance:new U({flat:!0,translucent:!1}),asynchronous:!1});var C=[];t._debugSphere.update(i,c,C);var w;u(l)&&(w=n.framebuffer,n.framebuffer=l),C[0].execute(i,n),u(w)&&(n.framebuffer=w)}}function ht(e,t){if(u(e)){for(var i=t.mode===Y.SCENE3D?t.occluder:void 0,r=t.cullingVolume,n=Mt.planes,o=0;5>o;++o)n[o]=r.planes[o];r=Mt;var a=e.boundingVolume;return u(e)&&(!u(e.boundingVolume)||!e.cull||r.computeVisibility(a)!==y.OUTSIDE&&(!u(i)||i.isBoundingSphereVisible(a)))}}function dt(e,i,r){return t.distanceSquaredTo(i.boundingVolume,r)-t.distanceSquaredTo(e.boundingVolume,r)}function pt(e,t,i,r){var n=e.context;b(r,dt,e._camera.positionWC);for(var o=r.length,a=0;o>a;++a)t(r[a],e,n,i)}function mt(e,t){var i=e._debugGlobeDepths[t];return!u(i)&&e.context.depthTexture&&(i=new F,e._debugGlobeDepths[t]=i),i}function ft(e,t){var i=e._pickDepths[t];return u(i)||(i=new H,e._pickDepths[t]=i),i}function vt(e,t,i,r){var n,a,s=e._frameState,l=e._camera,c=e.context,h=c.uniformState;u(e.sun)&&e.sunBloom!==e._sunBloom?(e.sunBloom?e._sunPostProcess=new Q:u(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy()),e._sunBloom=e.sunBloom):!u(e.sun)&&u(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy(),e._sunBloom=!1);var d,p=s.passes.render,m=p&&u(e.skyBox)?e.skyBox.update(c,s):void 0,f=p&&u(e.skyAtmosphere)?e.skyAtmosphere.update(c,s):void 0,v=p&&u(e.sun)?e.sun.update(e):void 0,g=ht(v,s),_=p&&u(e.moon)?e.moon.update(c,s):void 0,y=ht(_,s),C=t.framebuffer;d=u(l.frustum.fov)?l.frustum.clone(Rt):u(l.frustum.infiniteProjectionMatrix)?l.frustum.clone(Lt):l.frustum.clone(Nt);var w=e._clearColorCommand;o.clone(i,w.color),w.execute(c,t),u(e._globeDepth)&&(e._globeDepth.update(c),e._globeDepth.clear(c,t,i));var S=!1,E=e._frustumCommandsList,b=E.length;for(n=0;b>n;++n)if(E[n].indices[k.TRANSLUCENT]>0){S=!0;break}var x=!r&&S&&u(e._oit)&&e._oit.isSupported();x&&(e._oit.update(c,e._globeDepth.framebuffer),e._oit.clear(c,t,i),x=x&&e._oit.isSupported());var T=!r&&e.fxaa;if(T){var P=!x&&u(e._globeDepth)?e._globeDepth._colorTexture:void 0;e._fxaa.update(c,P),e._fxaa.clear(c,t,i)}if(g&&e.sunBloom?t.framebuffer=e._sunPostProcess.update(c):u(e._globeDepth)?t.framebuffer=e._globeDepth.framebuffer:T&&(t.framebuffer=e._fxaa.getColorFramebuffer()),u(t.framebuffer)&&w.execute(c,t),d.near=l.frustum.near,d.far=l.frustum.far,h.updateFrustum(d),u(m)&&ct(m,e,c,t),u(f)&&ct(f,e,c,t),g&&(v.execute(c,t),e.sunBloom)){var A;A=u(e._globeDepth)?e._globeDepth.framebuffer:e.fxaa?e._fxaa.getColorFramebuffer():C,e._sunPostProcess.execute(c,A),t.framebuffer=A}y&&_.execute(c,t);var D;x?(u(e._executeOITFunction)||(e._executeOITFunction=function(e,t,i,r){e._oit.executeCommands(e,t,i,r)}),D=e._executeOITFunction):D=pt;var M=e._depthClearCommand;for(n=0;b>n;++n){var I=b-n-1,O=E[I];d.near=O.near,d.far=O.far,0!==I&&(d.near*=xt);var R,L=e.debugShowGlobeDepth?mt(e,I):e._globeDepth;e.debugShowGlobeDepth&&u(L)&&(R=t.framebuffer,t.framebuffer=L.framebuffer),h.updateFrustum(d),M.execute(c,t);var N=O.commands[k.GLOBE],F=O.indices[k.GLOBE];for(a=0;F>a;++a)ct(N[a],e,c,t);u(L)&&(e.copyGlobeDepth||e.debugShowGlobeDepth)&&(L.update(c),L.executeCopyDepth(c,t)),e.debugShowGlobeDepth&&u(L)&&(t.framebuffer=R);for(var B=k.GLOBE+1,z=k.TRANSLUCENT,V=B;z>V;++V)for(N=O.commands[V],F=O.indices[V],a=0;F>a;++a)ct(N[a],e,c,t);if(0!==I&&(d.near=O.near,h.updateFrustum(d)),N=O.commands[k.TRANSLUCENT],N.length=O.indices[k.TRANSLUCENT],D(e,ct,t,N),u(L)){var U=ft(e,I);U.update(c,L.framebuffer.depthStencilTexture),U.executeCopyDepth(c,t)}}if(e.debugShowGlobeDepth&&u(e._globeDepth)){var W=mt(e,e.debugShowDepthFrustum-1);W.executeDebugGlobeDepth(c,t)}if(e.debugShowPickDepth&&u(e._globeDepth)){var G=ft(e,e.debugShowDepthFrustum-1);G.executeDebugPickDepth(c,t)}x&&(t.framebuffer=T?e._fxaa.getColorFramebuffer():void 0,e._oit.execute(c,t)),T&&(t.framebuffer=C,e._fxaa.execute(c,t)),x||T||!u(e._globeDepth)||(t.framebuffer=C,e._globeDepth.executeCopyColor(c,t))}function gt(e,t){for(var i=e.context,r=e._overlayCommandList,n=r.length,o=0;n>o;++o)r[o].execute(i,t)}function _t(e){var t=e.context,i=e._frameState,r=e._commandList;e._globe&&e._globe.update(t,i,r),e._primitives.update(t,i,r)}function yt(e){for(var t=e.afterRender,i=0,r=t.length;r>i;++i)t[i]();t.length=0}function Ct(e,t){u(t)||(t=w.now());var i=e._camera;et(i,e._cameraClone,S.EPSILON6)?e._cameraStartFired&&_()-e._cameraMovedTime>e.cameraEventWaitTime&&(i.moveEnd.raiseEvent(),e._cameraStartFired=!1):(e._cameraStartFired||(i.moveStart.raiseEvent(),e._cameraStartFired=!0),e._cameraMovedTime=_(),M.clone(i,e._cameraClone)),e._preRender.raiseEvent(e,t);var r=e.context.uniformState,n=e._frameState,a=S.incrementWrap(n.frameNumber,15e6,1);rt(e,a,t),n.passes.render=!0,n.creditDisplay.beginFrame();var s=e.context;r.update(s,n),e._commandList.length=0,e._overlayCommandList.length=0,_t(e),at(e);var c=e._passState;if(c.framebuffer=void 0,c.blendingEnabled=void 0,c.scissorTest=void 0,vt(e,c,l(e.backgroundColor,o.BLACK)),gt(e,c),n.creditDisplay.endFrame(),e.debugShowFramesPerSecond){if(!u(e._performanceDisplay)){var h=document.createElement("div");h.className="cesium-performanceDisplay-defaultContainer";var d=e._canvas.parentNode;d.appendChild(h);var p=new V({container:h});e._performanceDisplay=p,e._performanceContainer=h}e._performanceDisplay.update()}else u(e._performanceDisplay)&&(e._performanceDisplay=e._performanceDisplay&&e._performanceDisplay.destroy(),e._performanceContainer.parentNode.removeChild(e._performanceContainer));s.endFrame(),yt(n),e._postRender.raiseEvent(e,t)}function wt(e,t){var i=e._camera,n=i.frustum,o=e.drawingBufferWidth,a=e.drawingBufferHeight,s=2/o*t.x-1;s*=.5*(n.right-n.left);var l=2/a*(a-t.y)-1;l*=.5*(n.top-n.bottom);var u=E.clone(i.transform,Ut);i._setTransform(E.IDENTITY);var c=r.clone(i.position,Bt);r.multiplyByScalar(i.right,s,zt),r.add(zt,c,c),r.multiplyByScalar(i.up,l,zt),r.add(zt,c,c),i._setTransform(u),r.fromElements(c.z,c.x,c.y,c),kt.x=o,kt.y=a;var h=n.getPixelSize(kt,void 0,Vt),d=Ft;return d.right=.5*h.x,d.left=-d.right,d.top=.5*h.y,d.bottom=-d.top,d.near=n.near,d.far=n.far,d.computeCullingVolume(c,i.directionWC,i.upWC)}function St(e,t,i,r){var n=e._camera,o=n.frustum,a=o.near,s=e.drawingBufferWidth,l=e.drawingBufferHeight,u=Math.tan(.5*o.fovy),c=o.aspectRatio*u,h=2/s*t.x-1,d=2/l*(l-t.y)-1,p=h*a*c,m=d*a*u;kt.x=s,kt.y=l;var f=o.getPixelSize(kt,void 0,Vt),v=.5*f.x*i,g=.5*f.y*r,_=Wt;return _.top=m+g,_.bottom=m-g,_.right=p+v,_.left=p-v,_.near=a,_.far=o.far,_.computeCullingVolume(n.positionWC,n.directionWC,n.upWC)}function Et(e,t,i,r){return e._mode===Y.SCENE2D?wt(e,t,i,r):St(e,t,i,r)}var bt=function(e){e=l(e,l.EMPTY_OBJECT);var t=e.canvas,i=e.contextOptions,r=e.creditContainer,n=new A(t,i);u(r)||(r=document.createElement("div"),r.style.position="absolute",r.style.bottom="0",r.style["text-shadow"]="0px 0px 2px #000000",r.style.color="#ffffff",r.style["font-size"]="10px",r.style["padding-right"]="5px",t.parentNode.appendChild(r)),this._id=s(),this._frameState=new R(new I(r)),this._frameState.scene3DOnly=l(e.scene3DOnly,!1),this._passState=new D(n),this._canvas=t,this._context=n,this._globe=void 0,this._primitives=new j,this._tweens=new K,this._shaderFrameCount=0,this._sunPostProcess=void 0,this._commandList=[],this._frustumCommandsList=[],this._overlayCommandList=[],this._pickFramebuffer=void 0,this._useOIT=l(e.orderIndependentTranslucency,!0),this._executeOITFunction=void 0;var a;n.depthTexture&&(a=new F);var c;this._useOIT&&u(a)&&(c=new B(n)),this._globeDepth=a,this._oit=c,this._fxaa=new N,this._clearColorCommand=new P({color:new o,owner:this}),this._depthClearCommand=new P({depth:1,owner:this}),this._pickDepths=[],this._debugGlobeDepths=[],this._transitioner=new Z(this),this._renderError=new m,this._preRender=new m,this._postRender=new m,this._cameraStartFired=!1,this._cameraMovedTime=void 0,this.rethrowRenderErrors=!1,this.completeMorphOnUserInput=!0,this.morphStart=new m,this.morphComplete=new m,this.skyBox=void 0,this.skyAtmosphere=void 0,this.sun=void 0,this.sunBloom=!0,this._sunBloom=void 0,this.moon=void 0,this.backgroundColor=o.clone(o.BLACK),this._mode=Y.SCENE3D,this._mapProjection=u(e.mapProjection)?e.mapProjection:new f,this._transitioner=new Z(this,this._mapProjection.ellipsoid),this.morphTime=1,this.farToNearRatio=1e3,this.debugCommandFilter=void 0,this.debugShowCommands=!1,this.debugShowFrustums=!1,this._debugFrustumStatistics=void 0,this.debugShowFramesPerSecond=!1,this.debugShowGlobeDepth=!1,this.debugShowDepthFrustum=1,this.fxaa=!0,this.cameraEventWaitTime=500,this.copyGlobeDepth=!1,this._performanceDisplay=void 0,this._debugSphere=void 0;var h=new M(this);this._camera=h,this._cameraClone=M.clone(h),this._screenSpaceCameraController=new J(this);var d=h.frustum.near,p=h.frustum.far,v=Math.ceil(Math.log(p/d)/Math.log(this.farToNearRatio));nt(d,p,this.farToNearRatio,v,this._frustumCommandsList),rt(this,0,w.now()),this.initializeFrame()},xt=.99;c(bt.prototype,{canvas:{get:function(){return this._canvas}},drawingBufferHeight:{get:function(){return this._context.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._context.drawingBufferWidth}},maximumAliasedLineWidth:{get:function(){return this._context.maximumAliasedLineWidth}},maximumCubeMapSize:{get:function(){return this._context.maximumCubeMapSize}},pickPositionSupported:{get:function(){return this._context.depthTexture}},globe:{get:function(){return this._globe},set:function(e){this._globe=this._globe&&this._globe.destroy(),this._globe=e}},primitives:{get:function(){return this._primitives}},camera:{get:function(){return this._camera}},screenSpaceCameraController:{get:function(){return this._screenSpaceCameraController}},mapProjection:{get:function(){return this._mapProjection}},frameState:{get:function(){return this._frameState}},tweens:{get:function(){return this._tweens}},imageryLayers:{get:function(){return this.globe.imageryLayers}},terrainProvider:{get:function(){return this.globe.terrainProvider},set:function(e){this.globe.terrainProvider=e}},renderError:{get:function(){return this._renderError}},preRender:{get:function(){return this._preRender}},postRender:{get:function(){return this._postRender}},context:{get:function(){return this._context}},debugFrustumStatistics:{get:function(){return this._debugFrustumStatistics}},scene3DOnly:{get:function(){return this._frameState.scene3DOnly}},orderIndependentTranslucency:{get:function(){return u(this._oit)}},id:{get:function(){return this._id}},mode:{get:function(){return this._mode},set:function(e){if(this.scene3DOnly&&e!==Y.SCENE3D)throw new d("Only SceneMode.SCENE3D is valid when scene3DOnly is true.");this._mode=e}},numberOfFrustums:{get:function(){return this._frustumCommandsList.length}}});var Tt,Pt=new r,At=new r,Dt=new t,Mt=new O,It=new C,Ot=new E(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);Ot=E.inverseTransformation(Ot,Ot);var Rt=new W,Lt=new G,Nt=new z;bt.prototype.initializeFrame=function(){120===this._shaderFrameCount++&&(this._shaderFrameCount=0,this._context.shaderCache.destroyReleasedShaderPrograms()),this._tweens.update(),this._camera.update(this._mode),this._screenSpaceCameraController.update()},bt.prototype.render=function(e){try{Ct(this,e)}catch(t){if(this._renderError.raiseEvent(this,t),this.rethrowRenderErrors)throw t}},bt.prototype.clampLineWidth=function(e){var t=this._context;return Math.max(t.minimumAliasedLineWidth,Math.min(e,t.maximumAliasedLineWidth))};var Ft=new z,Bt=new r,zt=new r,kt=new i,Vt=new i,Ut=new E,Wt=new G,Gt=3,Ht=3,qt=new e(0,0,Gt,Ht),jt=new o(0,0,0,0),Yt=new i;bt.prototype.pick=function(e){var t=this._context,i=t.uniformState,r=this._frameState,n=X.transformWindowToDrawingBuffer(this,e,Yt);u(this._pickFramebuffer)||(this._pickFramebuffer=t.createPickFramebuffer()),rt(this,r.frameNumber,r.time),r.cullingVolume=Et(this,n,Gt,Ht),r.passes.pick=!0,i.update(t,r),this._commandList.length=0,_t(this),at(this),qt.x=n.x-.5*(Gt-1),qt.y=this.drawingBufferHeight-n.y-.5*(Ht-1),vt(this,this._pickFramebuffer.begin(qt),jt,!0);var o=this._pickFramebuffer.end(qt);return t.endFrame(),yt(r),o},new r,new r;var Xt=new n,Zt=new n(1,1/255,1/65025,1/160581375);return bt.prototype.pickPosition=function(e,t){var i=this._context,r=i.uniformState,o=X.transformWindowToDrawingBuffer(this,e,Yt);o.y=this.drawingBufferHeight-o.y;var a,s=this._camera;u(s.frustum.fov)?a=s.frustum.clone(Rt):u(s.frustum.infiniteProjectionMatrix)&&(a=s.frustum.clone(Lt));for(var l=this.numberOfFrustums,c=0;l>c;++c){var h=ft(this,c),d=i.readPixels({x:o.x,y:o.y,width:1,height:1,framebuffer:h.framebuffer}),p=n.unpack(d,0,Xt);n.divideByScalar(p,255,p);var m=n.dot(p,Zt);if(m>0&&1>m){var f=this._frustumCommandsList[c];return a.near=f.near*(0!==c?xt:1),a.far=f.far,r.updateFrustum(a),X.drawingBufferToWgs84Coordinates(this,o,m,t)}}return void 0},bt.prototype.drillPick=function(e,t){var i,r,n=[],o=[],a=[];u(t)||(t=Number.MAX_VALUE);for(var s=this.pick(e);u(s)&&u(s.primitive)&&(n.push(s),!(0>=--t));){var l=s.primitive,c=!1;"function"==typeof l.getGeometryInstanceAttributes&&u(s.id)&&(r=l.getGeometryInstanceAttributes(s.id),u(r)&&u(r.show)&&(c=!0,r.show=T.toValue(!1,r.show),a.push(r))),c||(l.show=!1,o.push(l)),s=this.pick(e)}for(i=0;i<o.length;++i)o[i].show=!0;for(i=0;i<a.length;++i)r=a[i],r.show=T.toValue(!0,r.show);return n},bt.prototype.completeMorph=function(){this._transitioner.completeMorph()},bt.prototype.morphTo2D=function(e){var t,i=this.globe;t=u(i)?i.ellipsoid:this.mapProjection.ellipsoid,e=l(e,2),this._transitioner.morphTo2D(e,t)},bt.prototype.morphToColumbusView=function(e){var t,i=this.globe;t=u(i)?i.ellipsoid:this.mapProjection.ellipsoid,e=l(e,2),this._transitioner.morphToColumbusView(e,t)},bt.prototype.morphTo3D=function(e){var t,i=this.globe;t=u(i)?i.ellipsoid:this.mapProjection.ellipsoid,e=l(e,2),this._transitioner.morphTo3D(e,t)},bt.prototype.isDestroyed=function(){return!1},bt.prototype.destroy=function(){return this._tweens.removeAll(),this._screenSpaceCameraController=this._screenSpaceCameraController&&this._screenSpaceCameraController.destroy(),this._pickFramebuffer=this._pickFramebuffer&&this._pickFramebuffer.destroy(),this._primitives=this._primitives&&this._primitives.destroy(),this._globe=this._globe&&this._globe.destroy(),this.skyBox=this.skyBox&&this.skyBox.destroy(),this.skyAtmosphere=this.skyAtmosphere&&this.skyAtmosphere.destroy(),this._debugSphere=this._debugSphere&&this._debugSphere.destroy(),this.sun=this.sun&&this.sun.destroy(),this._sunPostProcess=this._sunPostProcess&&this._sunPostProcess.destroy(),this._transitioner.destroy(),this._globeDepth.destroy(),u(this._oit)&&this._oit.destroy(),this._fxaa.destroy(),this._context=this._context&&this._context.destroy(),this._frameState.creditDisplay.destroy(),u(this._performanceDisplay)&&(this._performanceDisplay=this._performanceDisplay&&this._performanceDisplay.destroy(),this._performanceContainer.parentNode.removeChild(this._performanceContainer)),h(this)},bt}),i("Scene/SingleTileImageryProvider",["../Core/Credit","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/GeographicTilingScheme","../Core/loadImage","../Core/Rectangle","../Core/TileProviderError","../ThirdParty/when"],function(e,t,i,r,n,o,a,s,l,u,c){"use strict";var h=function(r){function n(e){C._image=e,C._tileWidth=e.width,C._tileHeight=e.height,C._ready=!0,u.handleSuccess(C._errorEvent)}function h(e){var t="Failed to load image "+g+".";y=u.handleError(y,C,C._errorEvent,t,0,0,0,d,e)}function d(){c(s(g),n,h)}r=t(r,{});var p=r.url;this._url=p;var m=r.proxy;this._proxy=m;var f=t(r.rectangle,l.MAX_VALUE),v=new a({rectangle:f,numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:r.ellipsoid});this._tilingScheme=v,this._image=void 0,this._texture=void 0,this._tileWidth=0,this._tileHeight=0,this._errorEvent=new o,this._ready=!1;var g=p;i(m)&&(g=m.getURL(g));var _=r.credit;"string"==typeof _&&(_=new e(_)),this._credit=_;var y,C=this;d()};return r(h.prototype,{url:{get:function(){return this._url}},proxy:{get:function(){return this._proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return 0}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return void 0}},errorEvent:{get:function(){return this._errorEvent}},ready:{get:function(){return this._ready}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}}),h.prototype.getTileCredits=function(){return void 0},h.prototype.requestImage=function(){return this._image},h.prototype.pickFeatures=function(){return void 0},h}),i("Shaders/SkyAtmosphereFS",[],function(){"use strict";return"const float g = -0.95;\nconst float g2 = g * g;\nvarying vec3 v_rayleighColor;\nvarying vec3 v_mieColor;\nvarying vec3 v_toCamera;\nvarying vec3 v_positionEC;\nvoid main (void)\n{\nczm_ellipsoid ellipsoid = czm_getWgs84EllipsoidEC();\nvec3 direction = normalize(v_positionEC);\nczm_ray ray = czm_ray(vec3(0.0), direction);\nczm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid);\nif (!czm_isEmpty(intersection)) {\ndiscard;\n}\nfloat fCos = dot(czm_sunDirectionWC, normalize(v_toCamera)) / length(v_toCamera);\nfloat fRayleighPhase = 0.75 * (1.0 + fCos*fCos);\nfloat fMiePhase = 1.5 * ((1.0 - g2) / (2.0 + g2)) * (1.0 + fCos*fCos) / pow(1.0 + g2 - 2.0*g*fCos, 1.5);\nconst float fExposure = 2.0;\nvec3 rgb = fRayleighPhase * v_rayleighColor + fMiePhase * v_mieColor;\nrgb = vec3(1.0) - exp(-fExposure * rgb);\nfloat l = czm_luminance(rgb);\ngl_FragColor = vec4(rgb, min(smoothstep(0.0, 0.1, l), 1.0) * smoothstep(0.0, 1.0, czm_morphTime));\n}\n"}),i("Shaders/SkyAtmosphereVS",[],function(){"use strict";return"attribute vec4 position;\nuniform float fCameraHeight;\nuniform float fCameraHeight2;\nuniform float fOuterRadius;\nuniform float fOuterRadius2;\nuniform float fInnerRadius;\nuniform float fScale;\nuniform float fScaleDepth;\nuniform float fScaleOverScaleDepth;\nconst float Kr = 0.0025;\nconst float fKr4PI = Kr * 4.0 * czm_pi;\nconst float Km = 0.0015;\nconst float fKm4PI = Km * 4.0 * czm_pi;\nconst float ESun = 15.0;\nconst float fKmESun = Km * ESun;\nconst float fKrESun = Kr * ESun;\nconst vec3 v3InvWavelength = vec3(\n5.60204474633241,\n9.473284437923038,\n19.643802610477206);\nconst float rayleighScaleDepth = 0.25;\nconst int nSamples = 2;\nconst float fSamples = 2.0;\nvarying vec3 v_rayleighColor;\nvarying vec3 v_mieColor;\nvarying vec3 v_toCamera;\nvarying vec3 v_positionEC;\nfloat scale(float fCos)\n{\nfloat x = 1.0 - fCos;\nreturn fScaleDepth * exp(-0.00287 + x*(0.459 + x*(3.83 + x*(-6.80 + x*5.25))));\n}\nvoid main(void)\n{\nvec3 v3Pos = position.xyz;\nvec3 v3Ray = v3Pos - czm_viewerPositionWC;\nfloat fFar = length(v3Ray);\nv3Ray /= fFar;\n#ifdef SKY_FROM_SPACE\nfloat B = 2.0 * dot(czm_viewerPositionWC, v3Ray);\nfloat C = fCameraHeight2 - fOuterRadius2;\nfloat fDet = max(0.0, B*B - 4.0 * C);\nfloat fNear = 0.5 * (-B - sqrt(fDet));\nvec3 v3Start = czm_viewerPositionWC + v3Ray * fNear;\nfFar -= fNear;\nfloat fStartAngle = dot(v3Ray, v3Start) / fOuterRadius;\nfloat fStartDepth = exp(-1.0 / fScaleDepth);\nfloat fStartOffset = fStartDepth*scale(fStartAngle);\n#else\nvec3 v3Start = czm_viewerPositionWC;\nfloat fHeight = length(v3Start);\nfloat fDepth = exp(fScaleOverScaleDepth * (fInnerRadius - fCameraHeight));\nfloat fStartAngle = dot(v3Ray, v3Start) / fHeight;\nfloat fStartOffset = fDepth*scale(fStartAngle);\n#endif\nfloat fSampleLength = fFar / fSamples;\nfloat fScaledLength = fSampleLength * fScale;\nvec3 v3SampleRay = v3Ray * fSampleLength;\nvec3 v3SamplePoint = v3Start + v3SampleRay * 0.5;\nvec3 v3FrontColor = vec3(0.0, 0.0, 0.0);\nfor(int i=0; i<nSamples; i++)\n{\nfloat fHeight = length(v3SamplePoint);\nfloat fDepth = exp(fScaleOverScaleDepth * (fInnerRadius - fHeight));\nvec3 lightPosition = normalize(czm_viewerPositionWC);\nfloat fLightAngle = dot(lightPosition, v3SamplePoint) / fHeight;\nfloat fCameraAngle = dot(v3Ray, v3SamplePoint) / fHeight;\nfloat fScatter = (fStartOffset + fDepth*(scale(fLightAngle) - scale(fCameraAngle)));\nvec3 v3Attenuate = exp(-fScatter * (v3InvWavelength * fKr4PI + fKm4PI));\nv3FrontColor += v3Attenuate * (fDepth * fScaledLength);\nv3SamplePoint += v3SampleRay;\n}\nv_mieColor = v3FrontColor * fKmESun;\nv_rayleighColor = v3FrontColor * (v3InvWavelength * fKrESun);\nv_toCamera = czm_viewerPositionWC - v3Pos;\nv_positionEC = (czm_modelView * position).xyz;\ngl_Position = czm_modelViewProjection * position;\n}\n" +}),i("Scene/SkyAtmosphere",["../Core/Cartesian3","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/Ellipsoid","../Core/EllipsoidGeometry","../Core/GeometryPipeline","../Core/VertexFormat","../Renderer/BufferUsage","../Renderer/DrawCommand","../Renderer/ShaderSource","../Shaders/SkyAtmosphereFS","../Shaders/SkyAtmosphereVS","./BlendingState","./CullFace","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v){"use strict";var g=function(i){i=t(i,o.WGS84),this.show=!0,this._ellipsoid=i,this._command=new c({owner:this}),this._spSkyFromSpace=void 0,this._spSkyFromAtmosphere=void 0,this._fCameraHeight=void 0,this._fCameraHeight2=void 0,this._outerRadius=e.maximumComponent(e.multiplyByScalar(i.radii,1.025,new e));var r=i.maximumRadius,n=.25,a=this;this._command.uniformMap={fCameraHeight:function(){return a._fCameraHeight},fCameraHeight2:function(){return a._fCameraHeight2},fOuterRadius:function(){return a._outerRadius},fOuterRadius2:function(){return a._outerRadius*a._outerRadius},fInnerRadius:function(){return r},fScale:function(){return 1/(a._outerRadius-r)},fScaleDepth:function(){return n},fScaleOverScaleDepth:function(){return 1/(a._outerRadius-r)/n}}};return r(g.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),g.prototype.update=function(t,r){if(!this.show)return void 0;if(r.mode!==v.SCENE3D&&r.mode!==v.MORPHING)return void 0;if(!r.passes.render)return void 0;var n=this._command;if(!i(n.vertexArray)){var o=a.createGeometry(new a({radii:e.multiplyByScalar(this._ellipsoid.radii,1.025,new e),slicePartitions:256,stackPartitions:256,vertexFormat:l.POSITION_ONLY}));n.vertexArray=t.createVertexArrayFromGeometry({geometry:o,attributeLocations:s.createAttributeLocations(o),bufferUsage:u.STATIC_DRAW}),n.renderState=t.createRenderState({cull:{enabled:!0,face:f.FRONT},blending:m.ALPHA_BLEND});var c=new h({defines:["SKY_FROM_SPACE"],sources:[p]});this._spSkyFromSpace=t.createShaderProgram(c,d),c=new h({defines:["SKY_FROM_ATMOSPHERE"],sources:[p]}),this._spSkyFromAtmosphere=t.createShaderProgram(c,d)}var g=r.camera.positionWC;return this._fCameraHeight2=e.magnitudeSquared(g),this._fCameraHeight=Math.sqrt(this._fCameraHeight2),n.shaderProgram=this._fCameraHeight>this._outerRadius?this._spSkyFromSpace:this._spSkyFromAtmosphere,n},g.prototype.isDestroyed=function(){return!1},g.prototype.destroy=function(){var e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),this._spSkyFromSpace=this._spSkyFromSpace&&this._spSkyFromSpace.destroy(),this._spSkyFromAtmosphere=this._spSkyFromAtmosphere&&this._spSkyFromAtmosphere.destroy(),n(this)},g}),i("Shaders/SkyBoxFS",[],function(){"use strict";return"uniform samplerCube u_cubeMap;\nvarying vec3 v_texCoord;\nvoid main()\n{\nvec3 rgb = textureCube(u_cubeMap, normalize(v_texCoord)).rgb;\ngl_FragColor = vec4(rgb, czm_morphTime);\n}\n"}),i("Shaders/SkyBoxVS",[],function(){"use strict";return"attribute vec3 position;\nvarying vec3 v_texCoord;\nvoid main()\n{\nvec3 p = czm_viewRotation * (czm_temeToPseudoFixed * (czm_entireFrustum.y * position));\ngl_Position = czm_projection * vec4(p, 1.0);\nv_texCoord = position.xyz;\n}\n"}),i("Scene/SkyBox",["../Core/BoxGeometry","../Core/Cartesian3","../Core/defaultValue","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Core/GeometryPipeline","../Core/Matrix4","../Core/VertexFormat","../Renderer/BufferUsage","../Renderer/DrawCommand","../Renderer/loadCubeMap","../Shaders/SkyBoxFS","../Shaders/SkyBoxVS","./BlendingState","./SceneMode"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f){"use strict";var v=function(e){this.sources=e.sources,this._sources=void 0,this.show=i(e.show,!0),this._command=new c({modelMatrix:s.clone(s.IDENTITY),owner:this}),this._cubeMap=void 0};return v.prototype.update=function(i,n){if(!this.show)return void 0;if(n.mode!==f.SCENE3D&&n.mode!==f.MORPHING)return void 0;if(!n.passes.render)return void 0;if(this._sources!==this.sources){this._sources=this.sources;var o=this.sources;"string"==typeof o.positiveX?h(i,this._sources).then(function(e){c._cubeMap=c._cubeMap&&c._cubeMap.destroy(),c._cubeMap=e}):(this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),this._cubeMap=i.createCubeMap({source:o}))}var s=this._command;if(!r(s.vertexArray)){var c=this;s.uniformMap={u_cubeMap:function(){return c._cubeMap}};var v=e.createGeometry(e.fromDimensions({dimensions:new t(2,2,2),vertexFormat:l.POSITION_ONLY})),g=a.createAttributeLocations(v);s.vertexArray=i.createVertexArrayFromGeometry({geometry:v,attributeLocations:g,bufferUsage:u.STATIC_DRAW}),s.shaderProgram=i.createShaderProgram(p,d,g),s.renderState=i.createRenderState({blending:m.ALPHA_BLEND})}return r(this._cubeMap)?s:void 0},v.prototype.isDestroyed=function(){return!1},v.prototype.destroy=function(){var e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),n(this)},v}),i("Scene/StencilFunction",["../Core/freezeObject"],function(e){"use strict";var t={NEVER:512,LESS:513,EQUAL:514,LESS_OR_EQUAL:515,GREATER:516,NOT_EQUAL:517,GREATER_OR_EQUAL:518,ALWAYS:519};return e(t)}),i("Scene/StencilOperation",["../Core/freezeObject"],function(e){"use strict";var t={ZERO:0,KEEP:7680,REPLACE:7681,INCREMENT:7682,DECREMENT:7683,INVERT:5386,INCREMENT_WRAP:34055,DECREMENT_WRAP:34056};return e(t)}),i("Shaders/SunFS",[],function(){"use strict";return"uniform sampler2D u_texture;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\ngl_FragColor = texture2D(u_texture, v_textureCoordinates);\n}\n"}),i("Shaders/SunTextureFS",[],function(){"use strict";return"uniform float u_glowLengthTS;\nuniform float u_radiusTS;\nvarying vec2 v_textureCoordinates;\nvec2 rotate(vec2 p, vec2 direction)\n{\nreturn vec2(p.x * direction.x - p.y * direction.y, p.x * direction.y + p.y * direction.x);\n}\nvec4 addBurst(vec2 position, vec2 direction)\n{\nvec2 rotatedPosition = rotate(position, direction) * vec2(25.0, 0.75);\nfloat radius = length(rotatedPosition);\nfloat burst = 1.0 - smoothstep(0.0, 0.55, radius);\nreturn vec4(burst);\n}\nvoid main()\n{\nvec2 position = v_textureCoordinates - vec2(0.5);\nfloat radius = length(position);\nfloat surface = step(radius, u_radiusTS);\nvec4 color = vec4(1.0, 1.0, surface + 0.2, surface);\nfloat glow = 1.0 - smoothstep(0.0, 0.55, radius);\ncolor.ba += mix(vec2(0.0), vec2(1.0), glow) * 0.75;\nvec4 burst = vec4(0.0);\nburst += 0.4 * addBurst(position, vec2(0.38942, 0.92106));\nburst += 0.4 * addBurst(position, vec2(0.99235, 0.12348));\nburst += 0.4 * addBurst(position, vec2(0.60327, -0.79754));\nburst += 0.3 * addBurst(position, vec2(0.31457, 0.94924));\nburst += 0.3 * addBurst(position, vec2(0.97931, 0.20239));\nburst += 0.3 * addBurst(position, vec2(0.66507, -0.74678));\ncolor += clamp(burst, vec4(0.0), vec4(1.0)) * 0.15;\ngl_FragColor = clamp(color, vec4(0.0), vec4(1.0));\n}\n"}),i("Shaders/SunVS",[],function(){"use strict";return"attribute vec2 direction;\nuniform float u_size;\nvarying vec2 v_textureCoordinates;\nvoid main()\n{\nvec4 position;\nif (czm_morphTime == 1.0)\n{\nposition = vec4(czm_sunPositionWC, 1.0);\n}\nelse\n{\nposition = vec4(czm_sunPositionColumbusView.zxy, 1.0);\n}\nvec4 positionEC = czm_view * position;\nvec4 positionWC = czm_eyeToWindowCoordinates(positionEC);\nvec2 halfSize = vec2(u_size * 0.5);\nhalfSize *= ((direction * 2.0) - 1.0);\ngl_Position = czm_viewportOrthographic * vec4(positionWC.xy + halfSize, -positionWC.z, 1.0);\nv_textureCoordinates = direction;\n}\n"}),i("Scene/Sun",["../Core/BoundingRectangle","../Core/BoundingSphere","../Core/Cartesian2","../Core/Cartesian3","../Core/Cartesian4","../Core/Color","../Core/ComponentDatatype","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/IndexDatatype","../Core/Math","../Core/Matrix4","../Core/PixelFormat","../Core/PrimitiveType","../Renderer/BufferUsage","../Renderer/ClearCommand","../Renderer/DrawCommand","../Shaders/SunFS","../Shaders/SunTextureFS","../Shaders/SunVS","./BlendingState","./SceneMode","./SceneTransforms"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E){"use strict";var b=function(){this.show=!0,this._command=new g({primitiveType:m.TRIANGLES,boundingVolume:new t,owner:this}),this._boundingVolume=new t,this._boundingVolume2D=new t,this._texture=void 0,this._drawingBufferWidth=void 0,this._drawingBufferHeight=void 0,this._radiusTS=void 0,this._size=void 0,this.glowFactor=1,this._glowFactorDirty=!1;var e=this;this._uniformMap={u_texture:function(){return e._texture},u_size:function(){return e._size}}};l(b.prototype,{glowFactor:{get:function(){return this._glowFactor},set:function(e){e=Math.max(e,0),this._glowFactor=e,this._glowFactorDirty=!0}}});var x=new i,T=new i,P=new n,A=new n;return b.prototype.update=function(n){var l=n.frameState,u=n.context;if(!this.show)return void 0;var m=l.mode;if(m===S.SCENE2D||m===S.MORPHING)return void 0;if(!l.passes.render)return void 0;var g=n.drawingBufferWidth,b=n.drawingBufferHeight;if(!s(this._texture)||g!==this._drawingBufferWidth||b!==this._drawingBufferHeight||this._glowFactorDirty){this._texture=this._texture&&this._texture.destroy(),this._drawingBufferWidth=g,this._drawingBufferHeight=b,this._glowFactorDirty=!1;var D=Math.max(g,b);D=Math.pow(2,Math.ceil(Math.log(D)/Math.log(2))-2),this._texture=u.createTexture2D({width:D,height:D,pixelFormat:p.RGBA});var M=u.createFramebuffer({colorTextures:[this._texture]});M.destroyAttachments=!1;var I=new v({color:new o(0,0,0,0),framebuffer:M}),O=u.createRenderState({viewport:new e(0,0,D,D)});this._glowLengthTS=5*this._glowFactor,this._radiusTS=.5*(1/(1+2*this._glowLengthTS));var R=this,L={u_glowLengthTS:function(){return R._glowLengthTS},u_radiusTS:function(){return R._radiusTS}},N=u.createViewportQuadCommand(y,{renderState:O,uniformMap:L,framebuffer:M,owner:this});I.execute(u),N.execute(u),N.shaderProgram.destroy(),M.destroy()}var F=this._command;if(!s(F.vertexArray)){var B={direction:0},z=new Uint8Array(8);z[0]=0,z[1]=0,z[2]=255,z[3]=0,z[4]=255,z[5]=255,z[6]=0,z[7]=255;var k=u.createVertexBuffer(z,f.STATIC_DRAW),V=[{index:B.direction,vertexBuffer:k,componentsPerAttribute:2,normalize:!0,componentDatatype:a.UNSIGNED_BYTE}],U=u.createIndexBuffer(new Uint16Array([0,1,2,0,2,3]),f.STATIC_DRAW,c.UNSIGNED_SHORT);F.vertexArray=u.createVertexArray(V,U),F.shaderProgram=u.createShaderProgram(C,_,B),F.renderState=u.createRenderState({blending:w.ALPHA_BLEND}),F.uniformMap=this._uniformMap}var W=u.uniformState.sunPositionWC,G=u.uniformState.sunPositionColumbusView,H=this._boundingVolume,q=this._boundingVolume2D;r.clone(W,H.center),q.center.x=G.z,q.center.y=G.x,q.center.z=G.y,H.radius=h.SOLAR_RADIUS+h.SOLAR_RADIUS*this._glowLengthTS,q.radius=H.radius,m===S.SCENE3D?t.clone(H,F.boundingVolume):m===S.COLUMBUS_VIEW&&t.clone(q,F.boundingVolume);var j=E.computeActualWgs84Position(l,W,A),Y=r.magnitude(r.subtract(j,n.camera.position,A)),X=u.uniformState.projection,Z=P;Z.x=0,Z.y=0,Z.z=-Y,Z.w=1;var J=d.multiplyByVector(X,Z,A),Q=E.clipToDrawingBufferCoordinates(n,J,x);Z.x=h.SOLAR_RADIUS;var K=d.multiplyByVector(X,Z,A),$=E.clipToDrawingBufferCoordinates(n,K,T);return this._size=Math.ceil(i.magnitude(i.subtract($,Q,A))),this._size=2*this._size*(1+2*this._glowLengthTS),F},b.prototype.isDestroyed=function(){return!1},b.prototype.destroy=function(){var e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._texture=this._texture&&this._texture.destroy(),u(this)},b}),i("Scene/TileCoordinatesImageryProvider",["../Core/Color","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/Event","../Core/GeographicTilingScheme"],function(e,t,i,r,n,o){"use strict";var a=function(r){r=t(r,t.EMPTY_OBJECT),this._tilingScheme=i(r.tilingScheme)?r.tilingScheme:new o({ellipsoid:r.ellipsoid}),this._color=t(r.color,e.YELLOW),this._errorEvent=new n,this._tileWidth=t(r.tileWidth,256),this._tileHeight=t(r.tileHeight,256)};return r(a.prototype,{proxy:{get:function(){return void 0}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return void 0}},minimumLevel:{get:function(){return void 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return void 0}},errorEvent:{get:function(){return this._errorEvent}},ready:{get:function(){return!0}},credit:{get:function(){return void 0}},hasAlphaChannel:{get:function(){return!0}}}),a.prototype.getTileCredits=function(){return void 0},a.prototype.requestImage=function(e,t,i){var r=document.createElement("canvas");r.width=256,r.height=256;var n=r.getContext("2d"),o=this._color.toCssColorString();n.strokeStyle=o,n.lineWidth=2,n.strokeRect(1,1,255,255);var a="L"+i+"X"+e+"Y"+t;return n.font="bold 25px Arial",n.textAlign="center",n.fillStyle="black",n.fillText(a,127,127),n.fillStyle=o,n.fillText(a,124,124),r},a.prototype.pickFeatures=function(){return void 0},a}),i("Scene/TileDiscardPolicy",["../Core/DeveloperError"],function(e){"use strict";var t=function(){e.throwInstantiationError()};return t.prototype.isReady=e.throwInstantiationError,t.prototype.shouldDiscardImage=e.throwInstantiationError,t}),i("Scene/TileMapServiceImageryProvider",["../Core/appendForwardSlash","../Core/Cartesian2","../Core/Cartographic","../Core/Credit","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/GeographicTilingScheme","../Core/loadXML","../Core/Rectangle","../Core/TileProviderError","../Core/WebMercatorTilingScheme","../ThirdParty/when","./ImageryProvider"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f){"use strict";function v(e,t,i,r){var n=e._tilingScheme.getNumberOfYTilesAtLevel(r),a=e._url+r+"/"+t+"/"+(n-i-1)+"."+e._fileExtension,s=e._proxy;return o(s)&&(a=s.getURL(a)),a}var g=function(a){function s(e){for(var r,s,l,c,m=/tileformat/i,f=/tileset/i,_=/tilesets/i,w=/boundingbox/i,S=/srs/i,E=[],b=e.childNodes[0].childNodes,x=0;x<b.length;x++)if(m.test(b.item(x).nodeName))r=b.item(x);else if(_.test(b.item(x).nodeName)){l=b.item(x);for(var T=b.item(x).childNodes,P=0;P<T.length;P++)f.test(T.item(P).nodeName)&&E.push(T.item(P))}else w.test(b.item(x).nodeName)?s=b.item(x):S.test(b.item(x).nodeName)&&(c=b.item(x).textContent);C._fileExtension=n(C._fileExtension,r.getAttribute("extension")),C._tileWidth=n(C._tileWidth,parseInt(r.getAttribute("width"),10)),C._tileHeight=n(C._tileHeight,parseInt(r.getAttribute("height"),10)),C._minimumLevel=n(C._minimumLevel,parseInt(E[0].getAttribute("order"),10)),C._maximumLevel=n(C._maximumLevel,parseInt(E[E.length-1].getAttribute("order"),10));var A=l.getAttribute("profile"),D=!1;if(("geodetic"===A||"mercator"===A)&&(D=!0),!o(C._tilingScheme))if("geodetic"===A||"global-geodetic"===A)C._tilingScheme=new u({ellipsoid:a.ellipsoid});else{if("mercator"!==A&&"global-mercator"!==A){var M=g+"tilemapresource.xml specifies an unsupported profile attribute, "+A+".";return y=d.handleError(y,C,C._errorEvent,M,void 0,void 0,void 0,v),void 0}C._tilingScheme=new p({ellipsoid:a.ellipsoid})}var I=C._tilingScheme;if(!o(C._rectangle)){var O,R,L,N;if(D)O=new t(parseFloat(s.getAttribute("miny")),parseFloat(s.getAttribute("minx"))),R=new t(parseFloat(s.getAttribute("maxy")),parseFloat(s.getAttribute("maxx"))),L=i.fromDegrees(O.x,O.y),N=i.fromDegrees(R.x,R.y);else if(O=new t(parseFloat(s.getAttribute("minx")),parseFloat(s.getAttribute("miny"))),R=new t(parseFloat(s.getAttribute("maxx")),parseFloat(s.getAttribute("maxy"))),C._tilingScheme instanceof u)L=i.fromDegrees(O.x,O.y),N=i.fromDegrees(R.x,R.y);else{var F=C._tilingScheme.projection;L=F.unproject(O),N=F.unproject(R)}C._rectangle=new h(L.longitude,L.latitude,N.longitude,N.latitude)}C._rectangle.west<I.rectangle.west&&(C._rectangle.west=I.rectangle.west),C._rectangle.east>I.rectangle.east&&(C._rectangle.east=I.rectangle.east),C._rectangle.south<I.rectangle.south&&(C._rectangle.south=I.rectangle.south),C._rectangle.north>I.rectangle.north&&(C._rectangle.north=I.rectangle.north);var B=I.positionToTileXY(h.southwest(C._rectangle),C._minimumLevel),z=I.positionToTileXY(h.northeast(C._rectangle),C._minimumLevel),k=(Math.abs(z.x-B.x)+1)*(Math.abs(z.y-B.y)+1);k>4&&(C._minimumLevel=0),C._tilingScheme=I,C._ready=!0}function f(){C._fileExtension=n(a.fileExtension,"png"),C._tileWidth=n(a.tileWidth,256),C._tileHeight=n(a.tileHeight,256),C._minimumLevel=n(a.minimumLevel,0),C._maximumLevel=a.maximumLevel,C._tilingScheme=o(a.tilingScheme)?a.tilingScheme:new p({ellipsoid:a.ellipsoid}),C._rectangle=n(a.rectangle,C._tilingScheme.rectangle),C._ready=!0}function v(){var e=g+"tilemapresource.xml",t=C._proxy;o(t)&&(e=t.getURL(e)),m(c(e),s,f)}a=n(a,{});var g=e(a.url);this._url=g,this._ready=!1,this._proxy=a.proxy,this._tileDiscardPolicy=a.tileDiscardPolicy,this._errorEvent=new l,this._fileExtension=a.fileExtension,this._tileWidth=a.tileWidth,this._tileHeight=a.tileHeight,this._minimumLevel=a.minimumLevel,this._maximumLevel=a.maximumLevel,this._rectangle=h.clone(a.rectangle),this._tilingScheme=a.tilingScheme;var _=a.credit;"string"==typeof _&&(_=new r(_)),this._credit=_;var y,C=this;v()};return a(g.prototype,{url:{get:function(){return this._url}},proxy:{get:function(){return this._proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},ready:{get:function(){return this._ready}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}}),g.prototype.getTileCredits=function(){return void 0},g.prototype.requestImage=function(e,t,i){var r=v(this,e,t,i);return f.loadImage(this,r)},g.prototype.pickFeatures=function(){return void 0},g}),i("Scene/TileState",["../Core/freezeObject"],function(e){"use strict";var t={START:0,LOADING:1,READY:2,UPSAMPLED_ONLY:3};return e(t)}),i("Scene/UrlTemplateImageryProvider",["../Core/Cartesian2","../Core/Cartographic","../Core/Math","../Core/Credit","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/GeographicTilingScheme","../Core/loadXML","../Core/Rectangle","../Core/TileProviderError","../Core/WebMercatorTilingScheme","../ThirdParty/when","./ImageryProvider"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f){"use strict";function v(e,t,i,r){L=!1,F=!1;for(var n="",a=e._urlParts,s=0;s<a.length;++s){var l=a[s];n+="string"==typeof l?l:encodeURIComponent(l(e,t,i,r))}var u=e._proxy;return o(u)&&(n=u.getURL(n)),n}function g(e,t){return t}function _(e,t,i,r){return e.tilingScheme.getNumberOfXTilesAtLevel(r)-t-1}function y(e,t,i){return i}function C(e,t,i,r){return e.tilingScheme.getNumberOfYTilesAtLevel(r)-i-1}function w(e,t,i,r){return r}function S(e,t,i,r){var n=(t+i+r)%e._subdomains.length;return e._subdomains[n]}function E(e,t,r,n){L||(e.tilingScheme.tileXYToRectangle(t,r,n,N),N.west=i.toDegrees(N.west),N.south=i.toDegrees(N.south),N.east=i.toDegrees(N.east),N.north=i.toDegrees(N.north),L=!0)}function b(e,t,i,r){return E(e,t,i,r),N.west}function x(e,t,i,r){return E(e,t,i,r),N.south}function T(e,t,i,r){return E(e,t,i,r),N.east}function P(e,t,i,r){return E(e,t,i,r),N.north}function A(e,t,i,r){F||(e.tilingScheme.tileXYToNativeRectangle(t,i,r,B),F=!0)}function D(e,t,i,r){return A(e,t,i,r),B.west}function M(e,t,i,r){return A(e,t,i,r),B.south}function I(e,t,i,r){return A(e,t,i,r),B.east}function O(e,t,i,r){return A(e,t,i,r),B.north}var R=function(e){this._url=e.url,this._proxy=e.proxy,this._tileDiscardPolicy=e.tileDiscardPolicy,this._errorEvent=new l,this._subdomains=e.subdomains,this._subdomains=Array.isArray(this._subdomains)?this._subdomains.slice():o(this._subdomains)&&this._subdomains.length>0?this._subdomains.split(""):["a","b","c"],this._tileWidth=n(e.tileWidth,256),this._tileHeight=n(e.tileHeight,256),this._minimumLevel=n(e.minimumLevel,0),this._maximumLevel=e.maximumLevel,this._tilingScheme=n(e.tilingScheme,new p({ellipsoid:e.ellipsoid})),this._rectangle=n(e.rectangle,this._tilingScheme.rectangle),this._hasAlphaChannel=n(e.hasAlphaChannel,!0);var t=e.credit;"string"==typeof t&&(t=new r(t)),this._credit=t;for(var i,a,s=this._url,u=[],c=0,h=Object.keys(z);c<s.length;){i=Number.MAX_VALUE,a=void 0;for(var d=0;d<h.length;++d){var m=s.indexOf(h[d],c);m>=0&&i>m&&(i=m,a=h[d])}o(a)?(i>c&&u.push(s.substring(c,i)),u.push(z[a]),c=i+a.length):(u.push(s.substring(c)),c=s.length)}this._urlParts=u};a(R.prototype,{url:{get:function(){return this._url}},proxy:{get:function(){return this._proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},ready:{get:function(){return!0}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return this._hasAlphaChannel}}}),R.prototype.getTileCredits=function(){return void 0},R.prototype.requestImage=function(e,t,i){var r=v(this,e,t,i);return f.loadImage(this,r)},R.prototype.pickFeatures=function(){return void 0};var L=!1,N=new h,F=!1,B=new h,z={"{x}":g,"{y}":y,"{z}":w,"{s}":S,"{reverseX}":_,"{reverseY}":C,"{westDegrees}":b,"{southDegrees}":x,"{eastDegrees}":T,"{northDegrees}":P,"{westProjected}":D,"{southProjected}":M,"{eastProjected}":I,"{northProjected}":O};return R}),i("Shaders/ViewportQuadFS",[],function(){"use strict";return"varying vec2 v_textureCoordinates;\nvoid main()\n{\nczm_materialInput materialInput;\nmaterialInput.s = v_textureCoordinates.s;\nmaterialInput.st = v_textureCoordinates;\nmaterialInput.str = vec3(v_textureCoordinates, 0.0);\nmaterialInput.normalEC = vec3(0.0, 0.0, -1.0);\nczm_material material = czm_getMaterial(materialInput);\ngl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n}\n"}),i("Scene/ViewportQuad",["../Core/BoundingRectangle","../Core/Color","../Core/defined","../Core/destroyObject","../Core/DeveloperError","../Renderer/ShaderSource","../Shaders/ViewportQuadFS","./BlendingState","./Material","./Pass"],function(e,t,i,r,n,o,a,s,l,u){"use strict";var c=function(r,n){this.show=!0,i(r)||(r=new e),this.rectangle=e.clone(r),i(n)||(n=l.fromType(l.ColorType,{color:new t(1,1,1,1)})),this.material=n,this._material=void 0,this._overlayCommand=void 0,this._rs=void 0};return c.prototype.update=function(t,r,n){if(this.show){var l=this._rs;i(l)&&e.equals(l.viewport,this.rectangle)||(this._rs=t.createRenderState({blending:s.ALPHA_BLEND,viewport:this.rectangle}));var c=r.passes;if(c.render){if(this._material!==this.material||!i(this._overlayCommand)){this._material=this.material,i(this._overlayCommand)&&this._overlayCommand.shaderProgram.destroy();var h=new o({sources:[this._material.shaderSource,a]});this._overlayCommand=t.createViewportQuadCommand(h,{renderState:this._rs,uniformMap:this._material._uniforms,owner:this}),this._overlayCommand.pass=u.OVERLAY}this._material.update(t),this._overlayCommand.uniformMap=this._material._uniforms,n.push(this._overlayCommand)}}},c.prototype.isDestroyed=function(){return!1},c.prototype.destroy=function(){return i(this._overlayCommand)&&(this._overlayCommand.shaderProgram=this._overlayCommand.shaderProgram&&this._overlayCommand.shaderProgram.destroy()),r(this)},c}),i("Scene/WebMapServiceImageryProvider",["../Core/Cartesian3","../Core/Cartographic","../Core/combine","../Core/Credit","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/deprecationWarning","../Core/DeveloperError","../Core/Event","../Core/freezeObject","../Core/GeographicTilingScheme","../Core/loadJson","../Core/loadText","../Core/loadWithXhr","../Core/loadXML","../Core/Math","../Core/objectToQuery","../Core/queryToObject","../Core/Rectangle","../Core/WebMercatorTilingScheme","../ThirdParty/Uri","../ThirdParty/when","./GetFeatureInfoFormat","./ImageryLayerFeatureInfo","./ImageryProvider"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x){"use strict";function T(e){var t={};for(var i in e)e.hasOwnProperty(i)&&(t[i.toLowerCase()]=e[i]);return t}function P(e,t,r,a){var s=new w(e._url),l=_(n(s.query,""));if(l=i(e._parameters,l),o(l.layers)||(l.layers=e._layers),o(l.srs)||(l.srs=e._tilingScheme instanceof C?"EPSG:3857":"EPSG:4326"),!o(l.bbox)){var u=e._tilingScheme.tileXYToNativeRectangle(t,r,a);l.bbox=u.west+","+u.south+","+u.east+","+u.north}o(l.width)||(l.width=e._tileWidth),o(l.height)||(l.height=e._tileHeight),s.query=g(l);var c=s.toString(),h=e._proxy;return o(h)&&(c=h.getURL(c)),c}function A(e,t,r,a,s,l,u){var c=new w(e._url),h=_(n(c.query,""));if(h=i(e._getFeatureInfoParameters,h),o(h.layers)||(h.layers=e._layers),o(h.query_layers)||(h.query_layers=e._layers),o(h.srs)||(h.srs=e._tilingScheme instanceof C?"EPSG:3857":"EPSG:4326"),!o(h.bbox)){var d=e._tilingScheme.tileXYToNativeRectangle(r,a,s);h.bbox=d.west+","+d.south+","+d.east+","+d.north}o(h.x)||(h.x=l),o(h.y)||(h.y=u),o(h.width)||(h.width=e._tileWidth),o(h.height)||(h.height=e._tileHeight),o(h.info_format)||(h.info_format=t),c.query=g(h);var p=c.toString(),m=e._proxy;return o(m)&&(p=m.getURL(p)),p}var D=function O(e){e=n(e,n.EMPTY_OBJECT),this._url=e.url,this._tileDiscardPolicy=e.tileDiscardPolicy,this._proxy=e.proxy,this._layers=e.layers,this._enablePickFeatures=n(e.enablePickFeatures,!0),this._getFeatureInfoFormats=n(e.getFeatureInfoFormats,O.DefaultGetFeatureInfoFormats),(o(e.getFeatureInfoAsGeoJson)||o(e.getFeatureInfoAsXml))&&(s("WebMapServiceImageryProvider.getFeatureInfo","The options.getFeatureInfoAsGeoJson and getFeatureInfoAsXml parameters to WebMapServiceImageryProvider were deprecated in Cesium 1.10 and will be removed in 1.13. Use options.getFeatureInfoFormats instead."),this._getFeatureInfoFormats=[],n(e.getFeatureInfoAsGeoJson,!0)&&this._getFeatureInfoFormats.push(new E("json","application/json")),n(e.getFeatureInfoAsXml,!0)&&this._getFeatureInfoFormats.push(new E("xml","text/xml"))),this._parameters=i(T(n(e.parameters,n.EMPTY_OBJECT)),O.DefaultParameters),this._getFeatureInfoParameters=i(T(n(e.getFeatureInfoParameters,n.EMPTY_OBJECT)),O.GetFeatureInfoDefaultParameters),this._tileWidth=n(e.tileWidth,256),this._tileHeight=n(e.tileHeight,256),this._minimumLevel=n(e.minimumLevel,0),this._maximumLevel=e.maximumLevel,this._rectangle=n(e.rectangle,y.MAX_VALUE),this._tilingScheme=o(e.tilingScheme)?e.tilingScheme:new h({ellipsoid:e.ellipsoid}),this._rectangle=y.intersection(this._rectangle,this._tilingScheme.rectangle);var t=e.credit;"string"==typeof t&&(t=new r(t)),this._credit=t,this._errorEvent=new u,this._ready=!0};a(D.prototype,{url:{get:function(){return this._url}},proxy:{get:function(){return this._proxy}},layers:{get:function(){return this._layers}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},ready:{get:function(){return this._ready}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}}),D.prototype.getTileCredits=function(){return void 0},D.prototype.requestImage=function(e,t,i){var r=P(this,e,t,i);return x.loadImage(this,r)};var M=new t,I=new e;return D.prototype.pickFeatures=function(e,t,i,r,n){function o(e,t){return e.callback(t)}function a(){if(_>=y._getFeatureInfoFormats.length)return S([]);var r=y._getFeatureInfoFormats[_],n=A(y,r.format,e,t,i,c,g);return++_,"json"===r.type?d(n).then(r.callback).otherwise(a):"xml"===r.type?f(n).then(r.callback).otherwise(a):"text"===r.type||"html"===r.type?p(n).then(r.callback).otherwise(a):m({url:n,responseType:r.format}).then(o.bind(void 0,r)).otherwise(a)}if(!this._enablePickFeatures||0===this._getFeatureInfoFormats.length)return void 0;var s,l=this._tilingScheme.tileXYToNativeRectangle(e,t,i);if(this._tilingScheme instanceof h)s=I,s.x=v.toDegrees(r),s.y=v.toDegrees(n);else{var u=M;u.longitude=r,u.latitude=n,s=this._tilingScheme.projection.project(u,I)}var c=0|this._tileWidth*(s.x-l.west)/l.width,g=0|this._tileHeight*(l.north-s.y)/l.height,_=0,y=this;return a()},D.DefaultParameters=c({service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"}),D.GetFeatureInfoDefaultParameters=c({service:"WMS",version:"1.1.1",request:"GetFeatureInfo"}),D.DefaultGetFeatureInfoFormats=c([c(new E("json","application/json")),c(new E("xml","text/xml")),c(new E("text","text/html"))]),D}),i("Scene/WebMapTileServiceImageryProvider",["../Core/combine","../Core/Credit","../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../Core/freezeObject","../Core/objectToQuery","../Core/queryToObject","../Core/Rectangle","../Core/WebMercatorTilingScheme","../ThirdParty/Uri","./ImageryProvider"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p){"use strict";function m(t,n,o,a){var s,c=t._tileMatrixLabels,h=r(c)?c[a]:a.toString();if(t._url.indexOf("{")>=0)s=t._url.replace("{style}",t._style).replace("{Style}",t._style).replace("{TileMatrixSet}",t._tileMatrixSetID).replace("{TileMatrix}",h).replace("{TileRow}",o.toString()).replace("{TileCol}",n.toString());else{var p=new d(t._url),m=u(i(p.query,""));m=e(v,m),m.tilematrix=h,m.layer=t._layer,m.style=t._style,m.tilerow=o,m.tilecol=n,m.tilematrixset=t._tileMatrixSetID,m.format=t._format,p.query=l(m),s=p.toString()}var f=t._proxy;return r(f)&&(s=f.getURL(s)),s}var f=function(e){if(e=i(e,i.EMPTY_OBJECT),!r(e.url))throw new o("options.url is required.");if(!r(e.layer))throw new o("options.layer is required.");if(!r(e.style))throw new o("options.style is required.");if(!r(e.tileMatrixSetID))throw new o("options.tileMatrixSetID is required.");this._url=e.url,this._layer=e.layer,this._style=e.style,this._tileMatrixSetID=e.tileMatrixSetID,this._tileMatrixLabels=e.tileMatrixLabels,this._format=i(e.format,"image/jpeg"),this._proxy=e.proxy,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=r(e.tilingScheme)?e.tilingScheme:new h({ellipsoid:e.ellipsoid}),this._tileWidth=i(e.tileWidth,256),this._tileHeight=i(e.tileHeight,256),this._minimumLevel=i(e.minimumLevel,0),this._maximumLevel=e.maximumLevel,this._rectangle=i(e.rectangle,this._tilingScheme.rectangle);var n=this._tilingScheme.positionToTileXY(c.southwest(this._rectangle),this._minimumLevel),s=this._tilingScheme.positionToTileXY(c.northeast(this._rectangle),this._minimumLevel),l=(Math.abs(s.x-n.x)+1)*(Math.abs(s.y-n.y)+1);if(l>4)throw new o("The imagery provider's rectangle and minimumLevel indicate that there are "+l+" tiles at the minimum level. Imagery providers with more than four tiles at the minimum level are not supported.");this._errorEvent=new a;var u=e.credit;this._credit="string"==typeof u?new t(u):u},v=s({service:"WMTS",version:"1.0.0",request:"GetTile"});return n(f.prototype,{url:{get:function(){return this._url}},proxy:{get:function(){return this._proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme +}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},ready:{value:!0},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}}),f.prototype.getTileCredits=function(){return void 0},f.prototype.requestImage=function(e,t,i){var r=m(this,e,t,i);return p.loadImage(this,r)},f.prototype.pickFeatures=function(){return void 0},f}),i("Scene/createTangentSpaceDebugPrimitive",["../Core/ColorGeometryInstanceAttribute","../Core/defaultValue","../Core/defined","../Core/DeveloperError","../Core/GeometryInstance","../Core/GeometryPipeline","../Core/Matrix4","./PerInstanceColorAppearance","./Primitive"],function(e,t,i,r,n,o,a,s,l){"use strict";var u=function(r){r=t(r,t.EMPTY_OBJECT);var u=[],c=r.geometry;i(c.attributes)&&i(c.primitiveType)||(c=c.constructor.createGeometry(c));var h=c.attributes,d=a.clone(t(r.modelMatrix,a.IDENTITY)),p=t(r.length,1e4);return i(h.normal)&&u.push(new n({geometry:o.createLineSegmentsForVectors(c,"normal",p),attributes:{color:new e(1,0,0,1)},modelMatrix:d})),i(h.binormal)&&u.push(new n({geometry:o.createLineSegmentsForVectors(c,"binormal",p),attributes:{color:new e(0,1,0,1)},modelMatrix:d})),i(h.tangent)&&u.push(new n({geometry:o.createLineSegmentsForVectors(c,"tangent",p),attributes:{color:new e(0,0,1,1)},modelMatrix:d})),u.length>0?new l({asynchronous:!1,geometryInstances:u,appearance:new s({flat:!0,translucent:!1})}):void 0};return u}),function(){!function(e){var r=this||(0,eval)("this"),n=r.document,o=r.navigator,a=r.jQuery,s=r.JSON;!function(e){"function"==typeof t&&"object"==typeof exports&&"object"==typeof module?e(module.exports||exports,t):"function"==typeof i&&i.amd?i("ThirdParty/knockout-3.2.0",["exports","require"],e):e(r.ko={})}(function(t,i){function l(e,t){return null===e||typeof e in p?e===t:!1}function u(t,i){var r;return function(){r||(r=setTimeout(function(){r=e,t()},i))}}function c(e,t){var i;return function(){clearTimeout(i),i=setTimeout(e,t)}}function h(e,t,i,r){d.d[e]={init:function(e,n,o,a,s){var l,u;return d.s(function(){var o=d.a.c(n()),a=!i!=!o,c=!u;(c||t||a!==l)&&(c&&d.Y.la()&&(u=d.a.ia(d.f.childNodes(e),!0)),a?(c||d.f.T(e,d.a.ia(u)),d.Ca(r?r(s,o):s,e)):d.f.ja(e),l=a)},null,{o:e}),{controlsDescendantBindings:!0}}},d.h.ha[e]=!1,d.f.Q[e]=!0}var d="undefined"!=typeof t?t:{};d.b=function(e,t){for(var i=e.split("."),r=d,n=0;n<i.length-1;n++)r=r[i[n]];r[i[i.length-1]]=t},d.A=function(e,t,i){e[t]=i},d.version="3.2.0",d.b("version",d.version),d.a=function(){function t(e,t){for(var i in e)e.hasOwnProperty(i)&&t(i,e[i])}function i(e,t){if(t)for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e}function l(e,t){return e.__proto__=t,e}var u={__proto__:[]}instanceof Array,c={},h={};c[o&&/Firefox\/2/i.test(o.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],c.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),t(c,function(e,t){if(t.length)for(var i=0,r=t.length;r>i;i++)h[t[i]]=e});var p={propertychange:!0},m=n&&function(){for(var t=3,i=n.createElement("div"),r=i.getElementsByTagName("i");i.innerHTML="<!--[if gt IE "+ ++t+"]><i></i><![endif]-->",r[0];);return t>4?t:e}();return{vb:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],u:function(e,t){for(var i=0,r=e.length;r>i;i++)t(e[i],i)},m:function(e,t){if("function"==typeof Array.prototype.indexOf)return Array.prototype.indexOf.call(e,t);for(var i=0,r=e.length;r>i;i++)if(e[i]===t)return i;return-1},qb:function(e,t,i){for(var r=0,n=e.length;n>r;r++)if(t.call(i,e[r],r))return e[r];return null},ua:function(e,t){var i=d.a.m(e,t);i>0?e.splice(i,1):0===i&&e.shift()},rb:function(e){e=e||[];for(var t=[],i=0,r=e.length;r>i;i++)0>d.a.m(t,e[i])&&t.push(e[i]);return t},Da:function(e,t){e=e||[];for(var i=[],r=0,n=e.length;n>r;r++)i.push(t(e[r],r));return i},ta:function(e,t){e=e||[];for(var i=[],r=0,n=e.length;n>r;r++)t(e[r],r)&&i.push(e[r]);return i},ga:function(e,t){if(t instanceof Array)e.push.apply(e,t);else for(var i=0,r=t.length;r>i;i++)e.push(t[i]);return e},ea:function(e,t,i){var r=d.a.m(d.a.Xa(e),t);0>r?i&&e.push(t):i||e.splice(r,1)},xa:u,extend:i,za:l,Aa:u?l:i,G:t,na:function(e,t){if(!e)return e;var i,r={};for(i in e)e.hasOwnProperty(i)&&(r[i]=t(e[i],i,e));return r},Ka:function(e){for(;e.firstChild;)d.removeNode(e.firstChild)},oc:function(e){e=d.a.S(e);for(var t=n.createElement("div"),i=0,r=e.length;r>i;i++)t.appendChild(d.R(e[i]));return t},ia:function(e,t){for(var i=0,r=e.length,n=[];r>i;i++){var o=e[i].cloneNode(!0);n.push(t?d.R(o):o)}return n},T:function(e,t){if(d.a.Ka(e),t)for(var i=0,r=t.length;r>i;i++)e.appendChild(t[i])},Lb:function(e,t){var i=e.nodeType?[e]:e;if(0<i.length){for(var r=i[0],n=r.parentNode,o=0,a=t.length;a>o;o++)n.insertBefore(t[o],r);for(o=0,a=i.length;a>o;o++)d.removeNode(i[o])}},ka:function(e,t){if(e.length){for(t=8===t.nodeType&&t.parentNode||t;e.length&&e[0].parentNode!==t;)e.shift();if(1<e.length){var i=e[0],r=e[e.length-1];for(e.length=0;i!==r;)if(e.push(i),i=i.nextSibling,!i)return;e.push(r)}}return e},Nb:function(e,t){7>m?e.setAttribute("selected",t):e.selected=t},cb:function(t){return null===t||t===e?"":t.trim?t.trim():t.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},vc:function(e,t){return e=e||"",t.length>e.length?!1:e.substring(0,t.length)===t},cc:function(e,t){if(e===t)return!0;if(11===e.nodeType)return!1;if(t.contains)return t.contains(3===e.nodeType?e.parentNode:e);if(t.compareDocumentPosition)return 16==(16&t.compareDocumentPosition(e));for(;e&&e!=t;)e=e.parentNode;return!!e},Ja:function(e){return d.a.cc(e,e.ownerDocument.documentElement)},ob:function(e){return!!d.a.qb(e,d.a.Ja)},t:function(e){return e&&e.tagName&&e.tagName.toLowerCase()},n:function(e,t,i){var r=m&&p[t];if(!r&&a)a(e).bind(t,i);else if(r||"function"!=typeof e.addEventListener){if("undefined"==typeof e.attachEvent)throw Error("Browser doesn't support addEventListener or attachEvent");var n=function(t){i.call(e,t)},o="on"+t;e.attachEvent(o,n),d.a.w.da(e,function(){e.detachEvent(o,n)})}else e.addEventListener(t,i,!1)},oa:function(e,t){if(!e||!e.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var i;if("input"===d.a.t(e)&&e.type&&"click"==t.toLowerCase()?(i=e.type,i="checkbox"==i||"radio"==i):i=!1,a&&!i)a(e).trigger(t);else if("function"==typeof n.createEvent){if("function"!=typeof e.dispatchEvent)throw Error("The supplied element doesn't support dispatchEvent");i=n.createEvent(h[t]||"HTMLEvents"),i.initEvent(t,!0,!0,r,0,0,0,0,0,!1,!1,!1,!1,0,e),e.dispatchEvent(i)}else if(i&&e.click)e.click();else{if("undefined"==typeof e.fireEvent)throw Error("Browser doesn't support triggering events");e.fireEvent("on"+t)}},c:function(e){return d.C(e)?e():e},Xa:function(e){return d.C(e)?e.v():e},Ba:function(e,t,i){if(t){var r=/\S+/g,n=e.className.match(r)||[];d.a.u(t.match(r),function(e){d.a.ea(n,e,i)}),e.className=n.join(" ")}},bb:function(t,i){var r=d.a.c(i);(null===r||r===e)&&(r="");var n=d.f.firstChild(t);!n||3!=n.nodeType||d.f.nextSibling(n)?d.f.T(t,[t.ownerDocument.createTextNode(r)]):n.data=r,d.a.fc(t)},Mb:function(e,t){if(e.name=t,7>=m)try{e.mergeAttributes(n.createElement("<input name='"+e.name+"'/>"),!1)}catch(i){}},fc:function(e){m>=9&&(e=1==e.nodeType?e:e.parentNode,e.style&&(e.style.zoom=e.style.zoom))},dc:function(e){if(m){var t=e.style.width;e.style.width=0,e.style.width=t}},sc:function(e,t){e=d.a.c(e),t=d.a.c(t);for(var i=[],r=e;t>=r;r++)i.push(r);return i},S:function(e){for(var t=[],i=0,r=e.length;r>i;i++)t.push(e[i]);return t},yc:6===m,zc:7===m,L:m,xb:function(e,t){for(var i=d.a.S(e.getElementsByTagName("input")).concat(d.a.S(e.getElementsByTagName("textarea"))),r="string"==typeof t?function(e){return e.name===t}:function(e){return t.test(e.name)},n=[],o=i.length-1;o>=0;o--)r(i[o])&&n.push(i[o]);return n},pc:function(e){return"string"==typeof e&&(e=d.a.cb(e))?s&&s.parse?s.parse(e):new Function("return "+e)():null},eb:function(e,t,i){if(!s||!s.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return s.stringify(d.a.c(e),t,i)},qc:function(e,i,r){r=r||{};var o=r.params||{},a=r.includeFields||this.vb,s=e;if("object"==typeof e&&"form"===d.a.t(e))for(var s=e.action,l=a.length-1;l>=0;l--)for(var u=d.a.xb(e,a[l]),c=u.length-1;c>=0;c--)o[u[c].name]=u[c].value;i=d.a.c(i);var h=n.createElement("form");h.style.display="none",h.action=s,h.method="post";for(var p in i)e=n.createElement("input"),e.type="hidden",e.name=p,e.value=d.a.eb(d.a.c(i[p])),h.appendChild(e);t(o,function(e,t){var i=n.createElement("input");i.type="hidden",i.name=e,i.value=t,h.appendChild(i)}),n.body.appendChild(h),r.submitter?r.submitter(h):h.submit(),setTimeout(function(){h.parentNode.removeChild(h)},0)}}}(),d.b("utils",d.a),d.b("utils.arrayForEach",d.a.u),d.b("utils.arrayFirst",d.a.qb),d.b("utils.arrayFilter",d.a.ta),d.b("utils.arrayGetDistinctValues",d.a.rb),d.b("utils.arrayIndexOf",d.a.m),d.b("utils.arrayMap",d.a.Da),d.b("utils.arrayPushAll",d.a.ga),d.b("utils.arrayRemoveItem",d.a.ua),d.b("utils.extend",d.a.extend),d.b("utils.fieldsIncludedWithJsonPost",d.a.vb),d.b("utils.getFormFields",d.a.xb),d.b("utils.peekObservable",d.a.Xa),d.b("utils.postJson",d.a.qc),d.b("utils.parseJson",d.a.pc),d.b("utils.registerEventHandler",d.a.n),d.b("utils.stringifyJson",d.a.eb),d.b("utils.range",d.a.sc),d.b("utils.toggleDomNodeCssClass",d.a.Ba),d.b("utils.triggerEvent",d.a.oa),d.b("utils.unwrapObservable",d.a.c),d.b("utils.objectForEach",d.a.G),d.b("utils.addOrRemoveItem",d.a.ea),d.b("unwrap",d.a.c),Function.prototype.bind||(Function.prototype.bind=function(e){var t=this,i=Array.prototype.slice.call(arguments);return e=i.shift(),function(){return t.apply(e,i.concat(Array.prototype.slice.call(arguments)))}}),d.a.e=new function(){function t(t,o){var a=t[r];if(!a||"null"===a||!n[a]){if(!o)return e;a=t[r]="ko"+i++,n[a]={}}return n[a]}var i=0,r="__ko__"+(new Date).getTime(),n={};return{get:function(i,r){var n=t(i,!1);return n===e?e:n[r]},set:function(i,r,n){(n!==e||t(i,!1)!==e)&&(t(i,!0)[r]=n)},clear:function(e){var t=e[r];return t?(delete n[t],e[r]=null,!0):!1},F:function(){return i++ +r}}},d.b("utils.domData",d.a.e),d.b("utils.domData.clear",d.a.e.clear),d.a.w=new function(){function t(t,i){var n=d.a.e.get(t,r);return n===e&&i&&(n=[],d.a.e.set(t,r,n)),n}function i(e){var r=t(e,!1);if(r)for(var r=r.slice(0),n=0;n<r.length;n++)r[n](e);if(d.a.e.clear(e),d.a.w.cleanExternalData(e),o[e.nodeType])for(r=e.firstChild;e=r;)r=e.nextSibling,8===e.nodeType&&i(e)}var r=d.a.e.F(),n={1:!0,8:!0,9:!0},o={1:!0,9:!0};return{da:function(e,i){if("function"!=typeof i)throw Error("Callback must be a function");t(e,!0).push(i)},Kb:function(i,n){var o=t(i,!1);o&&(d.a.ua(o,n),0==o.length&&d.a.e.set(i,r,e))},R:function(e){if(n[e.nodeType]&&(i(e),o[e.nodeType])){var t=[];d.a.ga(t,e.getElementsByTagName("*"));for(var r=0,a=t.length;a>r;r++)i(t[r])}return e},removeNode:function(e){d.R(e),e.parentNode&&e.parentNode.removeChild(e)},cleanExternalData:function(e){a&&"function"==typeof a.cleanData&&a.cleanData([e])}}},d.R=d.a.w.R,d.removeNode=d.a.w.removeNode,d.b("cleanNode",d.R),d.b("removeNode",d.removeNode),d.b("utils.domNodeDisposal",d.a.w),d.b("utils.domNodeDisposal.addDisposeCallback",d.a.w.da),d.b("utils.domNodeDisposal.removeDisposeCallback",d.a.w.Kb),function(){d.a.ba=function(e){var t;if(a){if(a.parseHTML)t=a.parseHTML(e)||[];else if((t=a.clean([e]))&&t[0]){for(e=t[0];e.parentNode&&11!==e.parentNode.nodeType;)e=e.parentNode;e.parentNode&&e.parentNode.removeChild(e)}}else{var i=d.a.cb(e).toLowerCase();for(t=n.createElement("div"),i=i.match(/^<(thead|tbody|tfoot)/)&&[1,"<table>","</table>"]||!i.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!i.indexOf("<td")||!i.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||[0,"",""],e="ignored<div>"+i[1]+e+i[2]+"</div>","function"==typeof r.innerShiv?t.appendChild(r.innerShiv(e)):t.innerHTML=e;i[0]--;)t=t.lastChild;t=d.a.S(t.lastChild.childNodes)}return t},d.a.$a=function(t,i){if(d.a.Ka(t),i=d.a.c(i),null!==i&&i!==e)if("string"!=typeof i&&(i=i.toString()),a)a(t).html(i);else for(var r=d.a.ba(i),n=0;n<r.length;n++)t.appendChild(r[n])}}(),d.b("utils.parseHtmlFragment",d.a.ba),d.b("utils.setHtml",d.a.$a),d.D=function(){function t(e,i){if(e)if(8==e.nodeType){var r=d.D.Gb(e.nodeValue);null!=r&&i.push({bc:e,mc:r})}else if(1==e.nodeType)for(var r=0,n=e.childNodes,o=n.length;o>r;r++)t(n[r],i)}var i={};return{Ua:function(e){if("function"!=typeof e)throw Error("You can only pass a function to ko.memoization.memoize()");var t=(0|4294967296*(1+Math.random())).toString(16).substring(1)+(0|4294967296*(1+Math.random())).toString(16).substring(1);return i[t]=e,"<!--[ko_memo:"+t+"]-->"},Rb:function(t,r){var n=i[t];if(n===e)throw Error("Couldn't find any memo with ID "+t+". Perhaps it's already been unmemoized.");try{return n.apply(null,r||[]),!0}finally{delete i[t]}},Sb:function(e,i){var r=[];t(e,r);for(var n=0,o=r.length;o>n;n++){var a=r[n].bc,s=[a];i&&d.a.ga(s,i),d.D.Rb(r[n].mc,s),a.nodeValue="",a.parentNode&&a.parentNode.removeChild(a)}},Gb:function(e){return(e=e.match(/^\[ko_memo\:(.*?)\]$/))?e[1]:null}}}(),d.b("memoization",d.D),d.b("memoization.memoize",d.D.Ua),d.b("memoization.unmemoize",d.D.Rb),d.b("memoization.parseMemoText",d.D.Gb),d.b("memoization.unmemoizeDomNodeAndDescendants",d.D.Sb),d.La={throttle:function(e,t){e.throttleEvaluation=t;var i=null;return d.j({read:e,write:function(r){clearTimeout(i),i=setTimeout(function(){e(r)},t)}})},rateLimit:function(e,t){var i,r,n;"number"==typeof t?i=t:(i=t.timeout,r=t.method),n="notifyWhenChangesStop"==r?c:u,e.Ta(function(e){return n(e,i)})},notify:function(e,t){e.equalityComparer="always"==t?null:l}};var p={undefined:1,"boolean":1,number:1,string:1};d.b("extenders",d.La),d.Pb=function(e,t,i){this.target=e,this.wa=t,this.ac=i,this.Cb=!1,d.A(this,"dispose",this.K)},d.Pb.prototype.K=function(){this.Cb=!0,this.ac()},d.P=function(){d.a.Aa(this,d.P.fn),this.M={}};var m="change",f={U:function(e,t,i){var r=this;i=i||m;var n=new d.Pb(r,t?e.bind(t):e,function(){d.a.ua(r.M[i],n),r.nb&&r.nb()});return r.va&&r.va(i),r.M[i]||(r.M[i]=[]),r.M[i].push(n),n},notifySubscribers:function(e,t){if(t=t||m,this.Ab(t))try{d.k.Ea();for(var i,r=this.M[t].slice(0),n=0;i=r[n];++n)i.Cb||i.wa(e)}finally{d.k.end()}},Ta:function(e){var t,i,r,n=this,o=d.C(n);n.qa||(n.qa=n.notifySubscribers,n.notifySubscribers=function(e,t){t&&t!==m?"beforeChange"===t?n.kb(e):n.qa(e,t):n.lb(e)});var a=e(function(){o&&r===n&&(r=n()),t=!1,n.Pa(i,r)&&n.qa(i=r)});n.lb=function(e){t=!0,r=e,a()},n.kb=function(e){t||(i=e,n.qa(e,"beforeChange"))}},Ab:function(e){return this.M[e]&&this.M[e].length},yb:function(){var e=0;return d.a.G(this.M,function(t,i){e+=i.length}),e},Pa:function(e,t){return!this.equalityComparer||!this.equalityComparer(e,t)},extend:function(e){var t=this;return e&&d.a.G(e,function(e,i){var r=d.La[e];"function"==typeof r&&(t=r(t,i)||t)}),t}};d.A(f,"subscribe",f.U),d.A(f,"extend",f.extend),d.A(f,"getSubscriptionsCount",f.yb),d.a.xa&&d.a.za(f,Function.prototype),d.P.fn=f,d.Db=function(e){return null!=e&&"function"==typeof e.U&&"function"==typeof e.notifySubscribers},d.b("subscribable",d.P),d.b("isSubscribable",d.Db),d.Y=d.k=function(){function e(e){r.push(i),i=e}function t(){i=r.pop()}var i,r=[],n=0;return{Ea:e,end:t,Jb:function(e){if(i){if(!d.Db(e))throw Error("Only subscribable things can act as dependencies");i.wa(e,e.Vb||(e.Vb=++n))}},B:function(i,r,n){try{return e(),i.apply(r,n||[])}finally{t()}},la:function(){return i?i.s.la():void 0},ma:function(){return i?i.ma:void 0}}}(),d.b("computedContext",d.Y),d.b("computedContext.getDependenciesCount",d.Y.la),d.b("computedContext.isInitial",d.Y.ma),d.b("computedContext.isSleeping",d.Y.Ac),d.p=function(e){function t(){return 0<arguments.length?(t.Pa(i,arguments[0])&&(t.X(),i=arguments[0],t.W()),this):(d.k.Jb(t),i)}var i=e;return d.P.call(t),d.a.Aa(t,d.p.fn),t.v=function(){return i},t.W=function(){t.notifySubscribers(i)},t.X=function(){t.notifySubscribers(i,"beforeChange")},d.A(t,"peek",t.v),d.A(t,"valueHasMutated",t.W),d.A(t,"valueWillMutate",t.X),t},d.p.fn={equalityComparer:l};var v=d.p.rc="__ko_proto__";d.p.fn[v]=d.p,d.a.xa&&d.a.za(d.p.fn,d.P.fn),d.Ma=function(t,i){return null===t||t===e||t[v]===e?!1:t[v]===i?!0:d.Ma(t[v],i)},d.C=function(e){return d.Ma(e,d.p)},d.Ra=function(e){return"function"==typeof e&&e[v]===d.p||"function"==typeof e&&e[v]===d.j&&e.hc?!0:!1},d.b("observable",d.p),d.b("isObservable",d.C),d.b("isWriteableObservable",d.Ra),d.b("isWritableObservable",d.Ra),d.aa=function(e){if(e=e||[],"object"!=typeof e||!("length"in e))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return e=d.p(e),d.a.Aa(e,d.aa.fn),e.extend({trackArrayChanges:!0})},d.aa.fn={remove:function(e){for(var t=this.v(),i=[],r="function"!=typeof e||d.C(e)?function(t){return t===e}:e,n=0;n<t.length;n++){var o=t[n];r(o)&&(0===i.length&&this.X(),i.push(o),t.splice(n,1),n--)}return i.length&&this.W(),i},removeAll:function(t){if(t===e){var i=this.v(),r=i.slice(0);return this.X(),i.splice(0,i.length),this.W(),r}return t?this.remove(function(e){return 0<=d.a.m(t,e)}):[]},destroy:function(e){var t=this.v(),i="function"!=typeof e||d.C(e)?function(t){return t===e}:e;this.X();for(var r=t.length-1;r>=0;r--)i(t[r])&&(t[r]._destroy=!0);this.W()},destroyAll:function(t){return t===e?this.destroy(function(){return!0}):t?this.destroy(function(e){return 0<=d.a.m(t,e)}):[]},indexOf:function(e){var t=this();return d.a.m(t,e)},replace:function(e,t){var i=this.indexOf(e);i>=0&&(this.X(),this.v()[i]=t,this.W())}},d.a.u("pop push reverse shift sort splice unshift".split(" "),function(e){d.aa.fn[e]=function(){var t=this.v();return this.X(),this.sb(t,e,arguments),t=t[e].apply(t,arguments),this.W(),t}}),d.a.u(["slice"],function(e){d.aa.fn[e]=function(){var t=this();return t[e].apply(t,arguments)}}),d.a.xa&&d.a.za(d.aa.fn,d.p.fn),d.b("observableArray",d.aa);var g="arrayChange";d.La.trackArrayChanges=function(e){function t(){if(!i){i=!0;var t=e.notifySubscribers;e.notifySubscribers=function(e,i){return i&&i!==m||++n,t.apply(this,arguments)};var o=[].concat(e.v()||[]);r=null,e.U(function(t){if(t=[].concat(t||[]),e.Ab(g)){var i;(!r||n>1)&&(r=d.a.Fa(o,t,{sparse:!0})),i=r,i.length&&e.notifySubscribers(i,g)}o=t,r=null,n=0})}}if(!e.sb){var i=!1,r=null,n=0,o=e.U;e.U=e.subscribe=function(e,i,r){return r===g&&t(),o.apply(this,arguments)},e.sb=function(e,t,o){function a(e,t,i){return s[s.length]={status:e,value:t,index:i}}if(i&&!n){var s=[],l=e.length,u=o.length,c=0;switch(t){case"push":c=l;case"unshift":for(t=0;u>t;t++)a("added",o[t],c+t);break;case"pop":c=l-1;case"shift":l&&a("deleted",e[c],c);break;case"splice":t=Math.min(Math.max(0,0>o[0]?l+o[0]:o[0]),l);for(var l=1===u?l:Math.min(t+(o[1]||0),l),u=t+u-2,c=Math.max(l,u),h=[],p=[],m=2;c>t;++t,++m)l>t&&p.push(a("deleted",e[t],t)),u>t&&h.push(a("added",o[m],t));d.a.wb(p,h);break;default:return}r=s}}}},d.s=d.j=function(t,i,r){function n(){d.a.G(x,function(e,t){t.K()}),x={}}function o(){n(),T=0,v=!0,p=!1}function a(){var e=l.throttleEvaluation;e&&e>=0?(clearTimeout(P),P=setTimeout(s,e)):l.ib?l.ib():s()}function s(t){if(m){if(_)throw Error("A 'pure' computed must not be called recursively")}else if(!v){if(E&&E()){if(!f)return b(),void 0}else f=!1;if(m=!0,y)try{var r={};d.k.Ea({wa:function(e,t){r[t]||(r[t]=1,++T)},s:l,ma:e}),T=0,h=g.call(i)}finally{d.k.end(),m=!1}else try{var n=x,o=T;d.k.Ea({wa:function(e,t){v||(o&&n[t]?(x[t]=n[t],++T,delete n[t],--o):x[t]||(x[t]=e.U(a),++T))},s:l,ma:_?e:!T}),x={},T=0;try{var s=i?g.call(i):g()}finally{d.k.end(),o&&d.a.G(n,function(e,t){t.K()}),p=!1}l.Pa(h,s)&&(l.notifySubscribers(h,"beforeChange"),h=s,!0!==t&&l.notifySubscribers(h))}finally{m=!1}T||b()}}function l(){if(0<arguments.length){if("function"!=typeof C)throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return C.apply(i,arguments),this}return d.k.Jb(l),p&&s(!0),h}function u(){return p&&!T&&s(!0),h}function c(){return p||T>0}var h,p=!0,m=!1,f=!1,v=!1,g=t,_=!1,y=!1;if(g&&"object"==typeof g?(r=g,g=r.read):(r=r||{},g||(g=r.read)),"function"!=typeof g)throw Error("Pass a function that returns the value of the ko.computed");var C=r.write,w=r.disposeWhenNodeIsRemoved||r.o||null,S=r.disposeWhen||r.Ia,E=S,b=o,x={},T=0,P=null;i||(i=r.owner),d.P.call(l),d.a.Aa(l,d.j.fn),l.v=u,l.la=function(){return T},l.hc="function"==typeof r.write,l.K=function(){b()},l.Z=c;var A=l.Ta;return l.Ta=function(e){A.call(l,e),l.ib=function(){l.kb(h),p=!0,l.lb(l)}},r.pure?(y=_=!0,l.va=function(){y&&(y=!1,s(!0))},l.nb=function(){l.yb()||(n(),y=p=!0)}):r.deferEvaluation&&(l.va=function(){u(),delete l.va}),d.A(l,"peek",l.v),d.A(l,"dispose",l.K),d.A(l,"isActive",l.Z),d.A(l,"getDependenciesCount",l.la),w&&(f=!0,w.nodeType&&(E=function(){return!d.a.Ja(w)||S&&S()})),y||r.deferEvaluation||s(),w&&c()&&w.nodeType&&(b=function(){d.a.w.Kb(w,b),o()},d.a.w.da(w,b)),l},d.jc=function(e){return d.Ma(e,d.j)},f=d.p.rc,d.j[f]=d.p,d.j.fn={equalityComparer:l},d.j.fn[f]=d.j,d.a.xa&&d.a.za(d.j.fn,d.P.fn),d.b("dependentObservable",d.j),d.b("computed",d.j),d.b("isComputed",d.jc),d.Ib=function(e,t){return"function"==typeof e?d.s(e,t,{pure:!0}):(e=d.a.extend({},e),e.pure=!0,d.s(e,t))},d.b("pureComputed",d.Ib),function(){function t(n,o,a){if(a=a||new r,n=o(n),"object"!=typeof n||null===n||n===e||n instanceof Date||n instanceof String||n instanceof Number||n instanceof Boolean)return n;var s=n instanceof Array?[]:{};return a.save(n,s),i(n,function(i){var r=o(n[i]);switch(typeof r){case"boolean":case"number":case"string":case"function":s[i]=r;break;case"object":case"undefined":var l=a.get(r);s[i]=l!==e?l:t(r,o,a)}}),s}function i(e,t){if(e instanceof Array){for(var i=0;i<e.length;i++)t(i);"function"==typeof e.toJSON&&t("toJSON")}else for(i in e)t(i)}function r(){this.keys=[],this.hb=[]}d.Qb=function(e){if(0==arguments.length)throw Error("When calling ko.toJS, pass the object you want to convert.");return t(e,function(e){for(var t=0;d.C(e)&&10>t;t++)e=e();return e})},d.toJSON=function(e,t,i){return e=d.Qb(e),d.a.eb(e,t,i)},r.prototype={save:function(e,t){var i=d.a.m(this.keys,e);i>=0?this.hb[i]=t:(this.keys.push(e),this.hb.push(t))},get:function(t){return t=d.a.m(this.keys,t),t>=0?this.hb[t]:e}}}(),d.b("toJS",d.Qb),d.b("toJSON",d.toJSON),function(){d.i={q:function(t){switch(d.a.t(t)){case"option":return!0===t.__ko__hasDomDataOptionValue__?d.a.e.get(t,d.d.options.Va):7>=d.a.L?t.getAttributeNode("value")&&t.getAttributeNode("value").specified?t.value:t.text:t.value;case"select":return 0<=t.selectedIndex?d.i.q(t.options[t.selectedIndex]):e;default:return t.value}},ca:function(t,i,r){switch(d.a.t(t)){case"option":switch(typeof i){case"string":d.a.e.set(t,d.d.options.Va,e),"__ko__hasDomDataOptionValue__"in t&&delete t.__ko__hasDomDataOptionValue__,t.value=i;break;default:d.a.e.set(t,d.d.options.Va,i),t.__ko__hasDomDataOptionValue__=!0,t.value="number"==typeof i?i:""}break;case"select":(""===i||null===i)&&(i=e);for(var n,o=-1,a=0,s=t.options.length;s>a;++a)if(n=d.i.q(t.options[a]),n==i||""==n&&i===e){o=a;break}(r||o>=0||i===e&&1<t.size)&&(t.selectedIndex=o);break;default:(null===i||i===e)&&(i=""),t.value=i}}}}(),d.b("selectExtensions",d.i),d.b("selectExtensions.readValue",d.i.q),d.b("selectExtensions.writeValue",d.i.ca),d.h=function(){function e(e){e=d.a.cb(e),123===e.charCodeAt(0)&&(e=e.slice(1,-1));var t,i,a=[],s=e.match(r),l=0;if(s){s.push(",");for(var u,c=0;u=s[c];++c){var h=u.charCodeAt(0);if(44===h){if(0>=l){t&&a.push(i?{key:t,value:i.join("")}:{unknown:t}),t=i=l=0;continue}}else if(58===h){if(!i)continue}else if(47===h&&c&&1<u.length)(h=s[c-1].match(n))&&!o[h[0]]&&(e=e.substr(e.indexOf(u)+1),s=e.match(r),s.push(","),c=-1,u="/");else if(40===h||123===h||91===h)++l;else if(41===h||125===h||93===h)--l;else if(!t&&!i){t=34===h||39===h?u.slice(1,-1):u;continue}i?i.push(u):i=[u]}}return a}var t=["true","false","null","undefined"],i=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,r=RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]","g"),n=/[\])"'A-Za-z0-9_$]+$/,o={"in":1,"return":1,"typeof":1},a={};return{ha:[],V:a,Wa:e,ya:function(r,n){function o(e,r){var n;if(!c){var h=d.getBindingHandler(e);if(h&&h.preprocess&&!(r=h.preprocess(r,e,o)))return;(h=a[e])&&(n=r,0<=d.a.m(t,n)?n=!1:(h=n.match(i),n=null===h?!1:h[1]?"Object("+h[1]+")"+h[2]:n),h=n),h&&l.push("'"+e+"':function(_z){"+n+"=_z}")}u&&(r="function(){return "+r+" }"),s.push("'"+e+"':"+r)}n=n||{};var s=[],l=[],u=n.valueAccessors,c=n.bindingParams,h="string"==typeof r?e(r):r;return d.a.u(h,function(e){o(e.key||e.unknown,e.value)}),l.length&&o("_ko_property_writers","{"+l.join(",")+" }"),s.join(",")},lc:function(e,t){for(var i=0;i<e.length;i++)if(e[i].key==t)return!0;return!1},pa:function(e,t,i,r,n){e&&d.C(e)?!d.Ra(e)||n&&e.v()===r||e(r):(e=t.get("_ko_property_writers"))&&e[i]&&e[i](r)}}}(),d.b("expressionRewriting",d.h),d.b("expressionRewriting.bindingRewriteValidators",d.h.ha),d.b("expressionRewriting.parseObjectLiteral",d.h.Wa),d.b("expressionRewriting.preProcessBindings",d.h.ya),d.b("expressionRewriting._twoWayBindings",d.h.V),d.b("jsonExpressionRewriting",d.h),d.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",d.h.ya),function(){function e(e){return 8==e.nodeType&&a.test(o?e.text:e.nodeValue)}function t(e){return 8==e.nodeType&&s.test(o?e.text:e.nodeValue)}function i(i,r){for(var n=i,o=1,a=[];n=n.nextSibling;){if(t(n)&&(o--,0===o))return a;a.push(n),e(n)&&o++}if(!r)throw Error("Cannot find closing comment tag to match: "+i.nodeValue);return null}function r(e,t){var r=i(e,t);return r?0<r.length?r[r.length-1].nextSibling:e.nextSibling:null}var o=n&&"<!--test-->"===n.createComment("test").text,a=o?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,s=o?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,l={ul:!0,ol:!0};d.f={Q:{},childNodes:function(t){return e(t)?i(t):t.childNodes},ja:function(t){if(e(t)){t=d.f.childNodes(t);for(var i=0,r=t.length;r>i;i++)d.removeNode(t[i])}else d.a.Ka(t)},T:function(t,i){if(e(t)){d.f.ja(t);for(var r=t.nextSibling,n=0,o=i.length;o>n;n++)r.parentNode.insertBefore(i[n],r)}else d.a.T(t,i)},Hb:function(t,i){e(t)?t.parentNode.insertBefore(i,t.nextSibling):t.firstChild?t.insertBefore(i,t.firstChild):t.appendChild(i)},Bb:function(t,i,r){r?e(t)?t.parentNode.insertBefore(i,r.nextSibling):r.nextSibling?t.insertBefore(i,r.nextSibling):t.appendChild(i):d.f.Hb(t,i)},firstChild:function(i){return e(i)?!i.nextSibling||t(i.nextSibling)?null:i.nextSibling:i.firstChild},nextSibling:function(i){return e(i)&&(i=r(i)),i.nextSibling&&t(i.nextSibling)?null:i.nextSibling},gc:e,xc:function(e){return(e=(o?e.text:e.nodeValue).match(a))?e[1]:null},Fb:function(i){if(l[d.a.t(i)]){var n=i.firstChild;if(n)do if(1===n.nodeType){var o;o=n.firstChild;var a=null;if(o)do if(a)a.push(o);else if(e(o)){var s=r(o,!0);s?o=s:a=[o]}else t(o)&&(a=[o]);while(o=o.nextSibling);if(o=a)for(a=n.nextSibling,s=0;s<o.length;s++)a?i.insertBefore(o[s],a):i.appendChild(o[s])}while(n=n.nextSibling)}}}}(),d.b("virtualElements",d.f),d.b("virtualElements.allowedBindings",d.f.Q),d.b("virtualElements.emptyNode",d.f.ja),d.b("virtualElements.insertAfter",d.f.Bb),d.b("virtualElements.prepend",d.f.Hb),d.b("virtualElements.setDomNodeChildren",d.f.T),function(){d.J=function(){this.Yb={}},d.a.extend(d.J.prototype,{nodeHasBindings:function(e){switch(e.nodeType){case 1:return null!=e.getAttribute("data-bind")||d.g.getComponentNameForNode(e);case 8:return d.f.gc(e);default:return!1}},getBindings:function(e,t){var i=this.getBindingsString(e,t),i=i?this.parseBindingsString(i,t,e):null;return d.g.mb(i,e,t,!1)},getBindingAccessors:function(e,t){var i=this.getBindingsString(e,t),i=i?this.parseBindingsString(i,t,e,{valueAccessors:!0}):null;return d.g.mb(i,e,t,!0)},getBindingsString:function(e){switch(e.nodeType){case 1:return e.getAttribute("data-bind");case 8:return d.f.xc(e);default:return null}},parseBindingsString:function(e,t,i,r){try{var n,o=this.Yb,a=e+(r&&r.valueAccessors||"");if(!(n=o[a])){var s,l="with($context){with($data||{}){return{"+d.h.ya(e,r)+"}}}";s=new Function("$context","$element",l),n=o[a]=s}return n(t,i)}catch(u){throw u.message="Unable to parse bindings.\nBindings value: "+e+"\nMessage: "+u.message,u}}}),d.J.instance=new d.J}(),d.b("bindingProvider",d.J),function(){function t(e){return function(){return e}}function i(e){return e()}function n(e){return d.a.na(d.k.B(e),function(t,i){return function(){return e()[i]}})}function o(e,t){return n(this.getBindings.bind(this,e,t))}function s(e,t,i){var r,n=d.f.firstChild(t),o=d.J.instance,a=o.preprocessNode;if(a){for(;r=n;)n=d.f.nextSibling(r),a.call(o,r);n=d.f.firstChild(t)}for(;r=n;)n=d.f.nextSibling(r),l(e,r,i)}function l(e,t,i){var r=!0,n=1===t.nodeType;n&&d.f.Fb(t),(n&&i||d.J.instance.nodeHasBindings(t))&&(r=c(t,null,e,i).shouldBindDescendants),r&&!p[d.a.t(t)]&&s(e,t,!n)}function u(e){var t=[],i={},r=[];return d.a.G(e,function n(o){if(!i[o]){var a=d.getBindingHandler(o);a&&(a.after&&(r.push(o),d.a.u(a.after,function(t){if(e[t]){if(-1!==d.a.m(r,t))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+r.join(", "));n(t)}}),r.length--),t.push({key:o,zb:a})),i[o]=!0}}),t}function c(t,r,n,a){var s=d.a.e.get(t,m);if(!r){if(s)throw Error("You cannot apply bindings multiple times to the same element.");d.a.e.set(t,m,!0)}!s&&a&&d.Ob(t,n);var l;if(r&&"function"!=typeof r)l=r;else{var c=d.J.instance,h=c.getBindingAccessors||o,p=d.j(function(){return(l=r?r(n,t):h.call(c,t,n))&&n.I&&n.I(),l},null,{o:t});l&&p.Z()||(p=null)}var f;if(l){var v=p?function(e){return function(){return i(p()[e])}}:function(e){return l[e]},g=function(){return d.a.na(p?p():l,i)};g.get=function(e){return l[e]&&i(v(e))},g.has=function(e){return e in l},a=u(l),d.a.u(a,function(i){var r=i.zb.init,o=i.zb.update,a=i.key;if(8===t.nodeType&&!d.f.Q[a])throw Error("The binding '"+a+"' cannot be used with virtual elements");try{"function"==typeof r&&d.k.B(function(){var i=r(t,v(a),g,n.$data,n);if(i&&i.controlsDescendantBindings){if(f!==e)throw Error("Multiple bindings ("+f+" and "+a+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");f=a}}),"function"==typeof o&&d.j(function(){o(t,v(a),g,n.$data,n)},null,{o:t})}catch(s){throw s.message='Unable to process binding "'+a+": "+l[a]+'"\nMessage: '+s.message,s}})}return{shouldBindDescendants:f===e}}function h(e){return e&&e instanceof d.N?e:new d.N(e)}d.d={};var p={script:!0};d.getBindingHandler=function(e){return d.d[e]},d.N=function(t,i,r,n){var o,a=this,s="function"==typeof t&&!d.C(t),l=d.j(function(){var e=s?t():t,o=d.a.c(e);return i?(i.I&&i.I(),d.a.extend(a,i),l&&(a.I=l)):(a.$parents=[],a.$root=o,a.ko=d),a.$rawData=e,a.$data=o,r&&(a[r]=o),n&&n(a,i,o),a.$data},null,{Ia:function(){return o&&!d.a.ob(o)},o:!0});l.Z()&&(a.I=l,l.equalityComparer=null,o=[],l.Tb=function(t){o.push(t),d.a.w.da(t,function(t){d.a.ua(o,t),o.length||(l.K(),a.I=l=e)})})},d.N.prototype.createChildContext=function(e,t,i){return new d.N(e,this,t,function(e,t){e.$parentContext=t,e.$parent=t.$data,e.$parents=(t.$parents||[]).slice(0),e.$parents.unshift(e.$parent),i&&i(e)})},d.N.prototype.extend=function(e){return new d.N(this.I||this.$data,this,null,function(t,i){t.$rawData=i.$rawData,d.a.extend(t,"function"==typeof e?e():e)})};var m=d.a.e.F(),f=d.a.e.F();d.Ob=function(e,t){return 2!=arguments.length?d.a.e.get(e,f):(d.a.e.set(e,f,t),t.I&&t.I.Tb(e),void 0)},d.ra=function(e,t,i){return 1===e.nodeType&&d.f.Fb(e),c(e,t,h(i),!0)},d.Wb=function(e,i,r){return r=h(r),d.ra(e,"function"==typeof i?n(i.bind(null,r,e)):d.a.na(i,t),r) +},d.Ca=function(e,t){1!==t.nodeType&&8!==t.nodeType||s(h(e),t,!0)},d.pb=function(e,t){if(!a&&r.jQuery&&(a=r.jQuery),t&&1!==t.nodeType&&8!==t.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");t=t||r.document.body,l(h(e),t,!0)},d.Ha=function(t){switch(t.nodeType){case 1:case 8:var i=d.Ob(t);if(i)return i;if(t.parentNode)return d.Ha(t.parentNode)}return e},d.$b=function(t){return(t=d.Ha(t))?t.$data:e},d.b("bindingHandlers",d.d),d.b("applyBindings",d.pb),d.b("applyBindingsToDescendants",d.Ca),d.b("applyBindingAccessorsToNode",d.ra),d.b("applyBindingsToNode",d.Wb),d.b("contextFor",d.Ha),d.b("dataFor",d.$b)}(),function(e){function t(t,r){var a,s=n.hasOwnProperty(t)?n[t]:e;s||(s=n[t]=new d.P,i(t,function(e){o[t]=e,delete n[t],a?s.notifySubscribers(e):setTimeout(function(){s.notifySubscribers(e)},0)}),a=!0),s.U(r)}function i(e,t){r("getConfig",[e],function(i){i?r("loadComponent",[e,i],function(e){t(e)}):t(null)})}function r(t,i,n,o){o||(o=d.g.loaders.slice(0));var a=o.shift();if(a){var s=a[t];if(s){var l=!1;if(s.apply(a,i.concat(function(e){l?n(null):null!==e?n(e):r(t,i,n,o)}))!==e&&(l=!0,!a.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")}else r(t,i,n,o)}else n(null)}var n={},o={};d.g={get:function(i,r){var n=o.hasOwnProperty(i)?o[i]:e;n?setTimeout(function(){r(n)},0):t(i,r)},tb:function(e){delete o[e]},jb:r},d.g.loaders=[],d.b("components",d.g),d.b("components.get",d.g.get),d.b("components.clearCachedDefinition",d.g.tb)}(),function(){function e(e,t,i,r){function n(){0===--a&&r(o)}var o={},a=2,l=i.template;i=i.viewModel,l?s(t,l,function(t){d.g.jb("loadTemplate",[e,t],function(e){o.template=e,n()})}):n(),i?s(t,i,function(t){d.g.jb("loadViewModel",[e,t],function(e){o[c]=e,n()})}):n()}function t(e,i,r){if("function"==typeof i)r(function(e){return new i(e)});else if("function"==typeof i[c])r(i[c]);else if("instance"in i){var n=i.instance;r(function(){return n})}else"viewModel"in i?t(e,i.viewModel,r):e("Unknown viewModel value: "+i)}function o(e){switch(d.a.t(e)){case"script":return d.a.ba(e.text);case"textarea":return d.a.ba(e.value);case"template":if(a(e.content))return d.a.ia(e.content.childNodes)}return d.a.ia(e.childNodes)}function a(e){return r.DocumentFragment?e instanceof DocumentFragment:e&&11===e.nodeType}function s(e,t,n){"string"==typeof t.require?i||r.require?(i||r.require)([t.require],n):e("Uses require, but no AMD loader is present"):n(t)}function l(e){return function(t){throw Error("Component '"+e+"': "+t)}}var u={};d.g.tc=function(e,t){if(!t)throw Error("Invalid configuration for "+e);if(d.g.Qa(e))throw Error("Component "+e+" is already registered");u[e]=t},d.g.Qa=function(e){return e in u},d.g.wc=function(e){delete u[e],d.g.tb(e)},d.g.ub={getConfig:function(e,t){t(u.hasOwnProperty(e)?u[e]:null)},loadComponent:function(t,i,r){var n=l(t);s(n,i,function(i){e(t,n,i,r)})},loadTemplate:function(e,t,i){if(e=l(e),"string"==typeof t)i(d.a.ba(t));else if(t instanceof Array)i(t);else if(a(t))i(d.a.S(t.childNodes));else if(t.element)if(t=t.element,r.HTMLElement?t instanceof HTMLElement:t&&t.tagName&&1===t.nodeType)i(o(t));else if("string"==typeof t){var s=n.getElementById(t);s?i(o(s)):e("Cannot find element with ID "+t)}else e("Unknown element type: "+t);else e("Unknown template value: "+t)},loadViewModel:function(e,i,r){t(l(e),i,r)}};var c="createViewModel";d.b("components.register",d.g.tc),d.b("components.isRegistered",d.g.Qa),d.b("components.unregister",d.g.wc),d.b("components.defaultLoader",d.g.ub),d.g.loaders.push(d.g.ub),d.g.Ub=u}(),function(){function e(e,i){var r=e.getAttribute("params");if(r){var r=t.parseBindingsString(r,i,e,{valueAccessors:!0,bindingParams:!0}),r=d.a.na(r,function(t){return d.s(t,null,{o:e})}),n=d.a.na(r,function(t){return t.Z()?d.s(function(){return d.a.c(t())},null,{o:e}):t.v()});return n.hasOwnProperty("$raw")||(n.$raw=r),n}return{$raw:{}}}d.g.getComponentNameForNode=function(e){return e=d.a.t(e),d.g.Qa(e)&&e},d.g.mb=function(t,i,r,n){if(1===i.nodeType){var o=d.g.getComponentNameForNode(i);if(o){if(t=t||{},t.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var a={name:o,params:e(i,r)};t.component=n?function(){return a}:a}}return t};var t=new d.J;9>d.a.L&&(d.g.register=function(e){return function(t){return n.createElement(t),e.apply(this,arguments)}}(d.g.register),n.createDocumentFragment=function(e){return function(){var t,i=e(),r=d.g.Ub;for(t in r)r.hasOwnProperty(t)&&i.createElement(t);return i}}(n.createDocumentFragment))}(),function(){var e=0;d.d.component={init:function(t,i,r,n,o){function a(){var e=s&&s.dispose;"function"==typeof e&&e.call(s),l=null}var s,l;return d.a.w.da(t,a),d.s(function(){var r,n,u=d.a.c(i());if("string"==typeof u?r=u:(r=d.a.c(u.name),n=d.a.c(u.params)),!r)throw Error("No component name specified");var c=l=++e;d.g.get(r,function(e){if(l===c){if(a(),!e)throw Error("Unknown component '"+r+"'");var i=e.template;if(!i)throw Error("Component '"+r+"' has no template");i=d.a.ia(i),d.f.T(t,i);var i=n,u=e.createViewModel;e=u?u.call(e,i,{element:t}):i,i=o.createChildContext(e),s=e,d.Ca(i,t)}})},null,{o:t}),{controlsDescendantBindings:!0}}},d.f.Q.component=!0}();var _={"class":"className","for":"htmlFor"};d.d.attr={update:function(t,i){var r=d.a.c(i())||{};d.a.G(r,function(i,r){r=d.a.c(r);var n=!1===r||null===r||r===e;n&&t.removeAttribute(i),8>=d.a.L&&i in _?(i=_[i],n?t.removeAttribute(i):t[i]=r):n||t.setAttribute(i,r.toString()),"name"===i&&d.a.Mb(t,n?"":r.toString())})}},function(){d.d.checked={after:["value","attr"],init:function(t,i,r){function n(){var e=t.checked,n=h?a():e;if(!d.Y.ma()&&(!l||e)){var o=d.k.B(i);u?c!==n?(e&&(d.a.ea(o,n,!0),d.a.ea(o,c,!1)),c=n):d.a.ea(o,n,e):d.h.pa(o,r,"checked",n,!0)}}function o(){var e=d.a.c(i());t.checked=u?0<=d.a.m(e,a()):s?e:a()===e}var a=d.Ib(function(){return r.has("checkedValue")?d.a.c(r.get("checkedValue")):r.has("value")?d.a.c(r.get("value")):t.value}),s="checkbox"==t.type,l="radio"==t.type;if(s||l){var u=s&&d.a.c(i())instanceof Array,c=u?a():e,h=l||u;l&&!t.name&&d.d.uniqueName.init(t,function(){return!0}),d.s(n,null,{o:t}),d.a.n(t,"click",n),d.s(o,null,{o:t})}}},d.h.V.checked=!0,d.d.checkedValue={update:function(e,t){e.value=d.a.c(t())}}}(),d.d.css={update:function(e,t){var i=d.a.c(t());"object"==typeof i?d.a.G(i,function(t,i){i=d.a.c(i),d.a.Ba(e,t,i)}):(i=String(i||""),d.a.Ba(e,e.__ko__cssValue,!1),e.__ko__cssValue=i,d.a.Ba(e,i,!0))}},d.d.enable={update:function(e,t){var i=d.a.c(t());i&&e.disabled?e.removeAttribute("disabled"):i||e.disabled||(e.disabled=!0)}},d.d.disable={update:function(e,t){d.d.enable.update(e,function(){return!d.a.c(t())})}},d.d.event={init:function(e,t,i,r,n){var o=t()||{};d.a.G(o,function(o){"string"==typeof o&&d.a.n(e,o,function(e){var a,s=t()[o];if(s){try{var l=d.a.S(arguments);r=n.$data,l.unshift(r),a=s.apply(r,l)}finally{!0!==a&&(e.preventDefault?e.preventDefault():e.returnValue=!1)}!1===i.get(o+"Bubble")&&(e.cancelBubble=!0,e.stopPropagation&&e.stopPropagation())}})})}},d.d.foreach={Eb:function(e){return function(){var t=e(),i=d.a.Xa(t);return i&&"number"!=typeof i.length?(d.a.c(t),{foreach:i.data,as:i.as,includeDestroyed:i.includeDestroyed,afterAdd:i.afterAdd,beforeRemove:i.beforeRemove,afterRender:i.afterRender,beforeMove:i.beforeMove,afterMove:i.afterMove,templateEngine:d.O.Oa}):{foreach:t,templateEngine:d.O.Oa}}},init:function(e,t){return d.d.template.init(e,d.d.foreach.Eb(t))},update:function(e,t,i,r,n){return d.d.template.update(e,d.d.foreach.Eb(t),i,r,n)}},d.h.ha.foreach=!1,d.f.Q.foreach=!0,d.d.hasfocus={init:function(e,t,i){function r(r){e.__ko_hasfocusUpdating=!0;var n=e.ownerDocument;if("activeElement"in n){var o;try{o=n.activeElement}catch(a){o=n.body}r=o===e}n=t(),d.h.pa(n,i,"hasfocus",r,!0),e.__ko_hasfocusLastValue=r,e.__ko_hasfocusUpdating=!1}var n=r.bind(null,!0),o=r.bind(null,!1);d.a.n(e,"focus",n),d.a.n(e,"focusin",n),d.a.n(e,"blur",o),d.a.n(e,"focusout",o)},update:function(e,t){var i=!!d.a.c(t());e.__ko_hasfocusUpdating||e.__ko_hasfocusLastValue===i||(i?e.focus():e.blur(),d.k.B(d.a.oa,null,[e,i?"focusin":"focusout"]))}},d.h.V.hasfocus=!0,d.d.hasFocus=d.d.hasfocus,d.h.V.hasFocus=!0,d.d.html={init:function(){return{controlsDescendantBindings:!0}},update:function(e,t){d.a.$a(e,t())}},h("if"),h("ifnot",!1,!0),h("with",!0,!1,function(e,t){return e.createChildContext(t)});var y={};d.d.options={init:function(e){if("select"!==d.a.t(e))throw Error("options binding applies only to SELECT elements");for(;0<e.length;)e.remove(0);return{controlsDescendantBindings:!0}},update:function(t,i,r){function n(){return d.a.ta(t.options,function(e){return e.selected})}function o(e,t,i){var r=typeof t;return"function"==r?t(e):"string"==r?e[t]:i}function a(e,i){if(h.length){var r=0<=d.a.m(h,d.i.q(i[0]));d.a.Nb(i[0],r),p&&!r&&d.k.B(d.a.oa,null,[t,"change"])}}var s=0!=t.length&&t.multiple?t.scrollTop:null,l=d.a.c(i()),u=r.get("optionsIncludeDestroyed");i={};var c,h;h=t.multiple?d.a.Da(n(),d.i.q):0<=t.selectedIndex?[d.i.q(t.options[t.selectedIndex])]:[],l&&("undefined"==typeof l.length&&(l=[l]),c=d.a.ta(l,function(t){return u||t===e||null===t||!d.a.c(t._destroy)}),r.has("optionsCaption")&&(l=d.a.c(r.get("optionsCaption")),null!==l&&l!==e&&c.unshift(y)));var p=!1;i.beforeRemove=function(e){t.removeChild(e)},l=a,r.has("optionsAfterRender")&&(l=function(t,i){a(0,i),d.k.B(r.get("optionsAfterRender"),null,[i[0],t!==y?t:e])}),d.a.Za(t,c,function(i,n,a){return a.length&&(h=a[0].selected?[d.i.q(a[0])]:[],p=!0),n=t.ownerDocument.createElement("option"),i===y?(d.a.bb(n,r.get("optionsCaption")),d.i.ca(n,e)):(a=o(i,r.get("optionsValue"),i),d.i.ca(n,d.a.c(a)),i=o(i,r.get("optionsText"),a),d.a.bb(n,i)),[n]},i,l),d.k.B(function(){r.get("valueAllowUnset")&&r.has("value")?d.i.ca(t,d.a.c(r.get("value")),!0):(t.multiple?h.length&&n().length<h.length:h.length&&0<=t.selectedIndex?d.i.q(t.options[t.selectedIndex])!==h[0]:h.length||0<=t.selectedIndex)&&d.a.oa(t,"change")}),d.a.dc(t),s&&20<Math.abs(s-t.scrollTop)&&(t.scrollTop=s)}},d.d.options.Va=d.a.e.F(),d.d.selectedOptions={after:["options","foreach"],init:function(e,t,i){d.a.n(e,"change",function(){var r=t(),n=[];d.a.u(e.getElementsByTagName("option"),function(e){e.selected&&n.push(d.i.q(e))}),d.h.pa(r,i,"selectedOptions",n)})},update:function(e,t){if("select"!=d.a.t(e))throw Error("values binding applies only to SELECT elements");var i=d.a.c(t());i&&"number"==typeof i.length&&d.a.u(e.getElementsByTagName("option"),function(e){var t=0<=d.a.m(i,d.i.q(e));d.a.Nb(e,t)})}},d.h.V.selectedOptions=!0,d.d.style={update:function(t,i){var r=d.a.c(i()||{});d.a.G(r,function(i,r){r=d.a.c(r),(null===r||r===e||!1===r)&&(r=""),t.style[i]=r})}},d.d.submit={init:function(e,t,i,r,n){if("function"!=typeof t())throw Error("The value for a submit binding must be a function");d.a.n(e,"submit",function(i){var r,o=t();try{r=o.call(n.$data,e)}finally{!0!==r&&(i.preventDefault?i.preventDefault():i.returnValue=!1)}})}},d.d.text={init:function(){return{controlsDescendantBindings:!0}},update:function(e,t){d.a.bb(e,t())}},d.f.Q.text=!0,function(){if(r&&r.navigator)var t=function(e){return e?parseFloat(e[1]):void 0},i=r.opera&&r.opera.version&&parseInt(r.opera.version()),n=r.navigator.userAgent,o=t(n.match(/^(?:(?!chrome).)*version\/([^ ]*) safari/i)),a=t(n.match(/Firefox\/([^ ]*)/));if(10>d.a.L)var s=d.a.e.F(),l=d.a.e.F(),u=function(e){var t=this.activeElement;(t=t&&d.a.e.get(t,l))&&t(e)},c=function(e,t){var i=e.ownerDocument;d.a.e.get(i,s)||(d.a.e.set(i,s,!0),d.a.n(i,"selectionchange",u)),d.a.e.set(e,l,t)};d.d.textInput={init:function(t,r,n){function s(e,i){d.a.n(t,e,i)}function l(){var i=d.a.c(r());(null===i||i===e)&&(i=""),m!==e&&i===m?setTimeout(l,4):t.value!==i&&(f=i,t.value=i)}function u(){p||(m=t.value,p=setTimeout(h,4))}function h(){clearTimeout(p),m=p=e;var i=t.value;f!==i&&(f=i,d.h.pa(r(),n,"textInput",i))}var p,m,f=t.value;10>d.a.L?(s("propertychange",function(e){"value"===e.propertyName&&h()}),8==d.a.L&&(s("keyup",h),s("keydown",h)),8<=d.a.L&&(c(t,h),s("dragend",u))):(s("input",h),5>o&&"textarea"===d.a.t(t)?(s("keydown",u),s("paste",u),s("cut",u)):11>i?s("keydown",u):4>a&&(s("DOMAutoComplete",h),s("dragdrop",h),s("drop",h))),s("change",h),d.s(l,null,{o:t})}},d.h.V.textInput=!0,d.d.textinput={preprocess:function(e,t,i){i("textInput",e)}}}(),d.d.uniqueName={init:function(e,t){if(t()){var i="ko_unique_"+ ++d.d.uniqueName.Zb;d.a.Mb(e,i)}}},d.d.uniqueName.Zb=0,d.d.value={after:["options","foreach"],init:function(e,t,i){if("input"!=e.tagName.toLowerCase()||"checkbox"!=e.type&&"radio"!=e.type){var r=["change"],n=i.get("valueUpdate"),o=!1,a=null;n&&("string"==typeof n&&(n=[n]),d.a.ga(r,n),r=d.a.rb(r));var s=function(){a=null,o=!1;var r=t(),n=d.i.q(e);d.h.pa(r,i,"value",n)};!d.a.L||"input"!=e.tagName.toLowerCase()||"text"!=e.type||"off"==e.autocomplete||e.form&&"off"==e.form.autocomplete||-1!=d.a.m(r,"propertychange")||(d.a.n(e,"propertychange",function(){o=!0}),d.a.n(e,"focus",function(){o=!1}),d.a.n(e,"blur",function(){o&&s()})),d.a.u(r,function(t){var i=s;d.a.vc(t,"after")&&(i=function(){a=d.i.q(e),setTimeout(s,0)},t=t.substring(5)),d.a.n(e,t,i)});var l=function(){var r=d.a.c(t()),n=d.i.q(e);if(null!==a&&r===a)setTimeout(l,0);else if(r!==n)if("select"===d.a.t(e)){var o=i.get("valueAllowUnset"),n=function(){d.i.ca(e,r,o)};n(),o||r===d.i.q(e)?setTimeout(n,0):d.k.B(d.a.oa,null,[e,"change"])}else d.i.ca(e,r)};d.s(l,null,{o:e})}else d.ra(e,{checkedValue:t})},update:function(){}},d.h.V.value=!0,d.d.visible={update:function(e,t){var i=d.a.c(t()),r="none"!=e.style.display;i&&!r?e.style.display="":!i&&r&&(e.style.display="none")}},function(e){d.d[e]={init:function(t,i,r,n,o){return d.d.event.init.call(this,t,function(){var t={};return t[e]=i(),t},r,n,o)}}}("click"),d.H=function(){},d.H.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},d.H.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},d.H.prototype.makeTemplateSource=function(e,t){if("string"==typeof e){t=t||n;var i=t.getElementById(e);if(!i)throw Error("Cannot find template with ID "+e);return new d.r.l(i)}if(1==e.nodeType||8==e.nodeType)return new d.r.fa(e);throw Error("Unknown template type: "+e)},d.H.prototype.renderTemplate=function(e,t,i,r){return e=this.makeTemplateSource(e,r),this.renderTemplateSource(e,t,i)},d.H.prototype.isTemplateRewritten=function(e,t){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(e,t).data("isRewritten")},d.H.prototype.rewriteTemplate=function(e,t,i){e=this.makeTemplateSource(e,i),t=t(e.text()),e.text(t),e.data("isRewritten",!0)},d.b("templateEngine",d.H),d.fb=function(){function e(e,t,i,r){e=d.h.Wa(e);for(var n=d.h.ha,o=0;o<e.length;o++){var a=e[o].key;if(n.hasOwnProperty(a)){var s=n[a];if("function"==typeof s){if(a=s(e[o].value))throw Error(a)}else if(!s)throw Error("This template engine does not support the '"+a+"' binding within its templates")}}return i="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+d.h.ya(e,{valueAccessors:!0})+" } })()},'"+i.toLowerCase()+"')",r.createJavaScriptEvaluatorBlock(i)+t}var t=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,i=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{ec:function(e,t,i){t.isTemplateRewritten(e,i)||t.rewriteTemplate(e,function(e){return d.fb.nc(e,t)},i)},nc:function(r,n){return r.replace(t,function(t,i,r,o,a){return e(a,i,r,n)}).replace(i,function(t,i){return e(i,"<!-- ko -->","#comment",n)})},Xb:function(e,t){return d.D.Ua(function(i,r){var n=i.nextSibling;n&&n.nodeName.toLowerCase()===t&&d.ra(n,e,r)})}}}(),d.b("__tr_ambtns",d.fb.Xb),function(){d.r={},d.r.l=function(e){this.l=e},d.r.l.prototype.text=function(){var e=d.a.t(this.l),e="script"===e?"text":"textarea"===e?"value":"innerHTML";if(0==arguments.length)return this.l[e];var t=arguments[0];"innerHTML"===e?d.a.$a(this.l,t):this.l[e]=t};var t=d.a.e.F()+"_";d.r.l.prototype.data=function(e){return 1===arguments.length?d.a.e.get(this.l,t+e):(d.a.e.set(this.l,t+e,arguments[1]),void 0)};var i=d.a.e.F();d.r.fa=function(e){this.l=e},d.r.fa.prototype=new d.r.l,d.r.fa.prototype.text=function(){if(0==arguments.length){var t=d.a.e.get(this.l,i)||{};return t.gb===e&&t.Ga&&(t.gb=t.Ga.innerHTML),t.gb}d.a.e.set(this.l,i,{gb:arguments[0]})},d.r.l.prototype.nodes=function(){return 0==arguments.length?(d.a.e.get(this.l,i)||{}).Ga:(d.a.e.set(this.l,i,{Ga:arguments[0]}),void 0)},d.b("templateSources",d.r),d.b("templateSources.domElement",d.r.l),d.b("templateSources.anonymousTemplate",d.r.fa)}(),function(){function t(e,t,i){var r;for(t=d.f.nextSibling(t);e&&(r=e)!==t;)e=d.f.nextSibling(r),i(r,e)}function i(e,i){if(e.length){var r=e[0],n=e[e.length-1],o=r.parentNode,a=d.J.instance,s=a.preprocessNode;if(s){if(t(r,n,function(e,t){var i=e.previousSibling,o=s.call(a,e);o&&(e===r&&(r=o[0]||t),e===n&&(n=o[o.length-1]||i))}),e.length=0,!r)return;r===n?e.push(r):(e.push(r,n),d.a.ka(e,o))}t(r,n,function(e){1!==e.nodeType&&8!==e.nodeType||d.pb(i,e)}),t(r,n,function(e){1!==e.nodeType&&8!==e.nodeType||d.D.Sb(e,[i])}),d.a.ka(e,o)}}function r(e){return e.nodeType?e:0<e.length?e[0]:null}function n(e,t,n,a,s){s=s||{};var l=e&&r(e),l=l&&l.ownerDocument,u=s.templateEngine||o;if(d.fb.ec(n,u,l),n=u.renderTemplate(n,a,s,l),"number"!=typeof n.length||0<n.length&&"number"!=typeof n[0].nodeType)throw Error("Template engine must return an array of DOM nodes");switch(l=!1,t){case"replaceChildren":d.f.T(e,n),l=!0;break;case"replaceNode":d.a.Lb(e,n),l=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+t)}return l&&(i(n,a),s.afterRender&&d.k.B(s.afterRender,null,[n,a.$data])),n}var o;d.ab=function(t){if(t!=e&&!(t instanceof d.H))throw Error("templateEngine must inherit from ko.templateEngine");o=t},d.Ya=function(t,i,a,s,l){if(a=a||{},(a.templateEngine||o)==e)throw Error("Set a template engine before calling renderTemplate");if(l=l||"replaceChildren",s){var u=r(s);return d.j(function(){var e=i&&i instanceof d.N?i:new d.N(d.a.c(i)),o=d.C(t)?t():"function"==typeof t?t(e.$data,e):t,e=n(s,l,o,e,a);"replaceNode"==l&&(s=e,u=r(s))},null,{Ia:function(){return!u||!d.a.Ja(u)},o:u&&"replaceNode"==l?u.parentNode:u})}return d.D.Ua(function(e){d.Ya(t,i,a,e,"replaceNode")})},d.uc=function(t,r,o,a,s){function l(e,t){i(t,c),o.afterRender&&o.afterRender(t,e)}function u(e,i){c=s.createChildContext(e,o.as,function(e){e.$index=i});var r=d.C(t)?t():"function"==typeof t?t(e,c):t;return n(null,"ignoreTargetNode",r,c,o)}var c;return d.j(function(){var t=d.a.c(r)||[];"undefined"==typeof t.length&&(t=[t]),t=d.a.ta(t,function(t){return o.includeDestroyed||t===e||null===t||!d.a.c(t._destroy)}),d.k.B(d.a.Za,null,[a,t,u,o,l])},null,{o:a})};var a=d.a.e.F();d.d.template={init:function(e,t){var i=d.a.c(t());return"string"==typeof i||i.name?d.f.ja(e):(i=d.f.childNodes(e),i=d.a.oc(i),new d.r.fa(e).nodes(i)),{controlsDescendantBindings:!0}},update:function(t,i,r,n,o){var s,l=i();i=d.a.c(l),r=!0,n=null,"string"==typeof i?i={}:(l=i.name,"if"in i&&(r=d.a.c(i["if"])),r&&"ifnot"in i&&(r=!d.a.c(i.ifnot)),s=d.a.c(i.data)),"foreach"in i?n=d.uc(l||t,r&&i.foreach||[],i,t,o):r?(o="data"in i?o.createChildContext(s,i.as):o,n=d.Ya(l||t,o,i,t)):d.f.ja(t),o=n,(s=d.a.e.get(t,a))&&"function"==typeof s.K&&s.K(),d.a.e.set(t,a,o&&o.Z()?o:e)}},d.h.ha.template=function(e){return e=d.h.Wa(e),1==e.length&&e[0].unknown||d.h.lc(e,"name")?null:"This template engine does not support anonymous templates nested within its templates"},d.f.Q.template=!0}(),d.b("setTemplateEngine",d.ab),d.b("renderTemplate",d.Ya),d.a.wb=function(e,t,i){if(e.length&&t.length){var r,n,o,a,s;for(r=n=0;(!i||i>r)&&(a=e[n]);++n){for(o=0;s=t[o];++o)if(a.value===s.value){a.moved=s.index,s.moved=a.index,t.splice(o,1),r=o=0;break}r+=o}}},d.a.Fa=function(){function e(e,t,i,r,n){var o,a,s,l,u,c=Math.min,h=Math.max,p=[],m=e.length,f=t.length,v=f-m||1,g=m+f+1;for(o=0;m>=o;o++)for(l=s,p.push(s=[]),u=c(f,o+v),a=h(0,o-1);u>=a;a++)s[a]=a?o?e[o-1]===t[a-1]?l[a-1]:c(l[a]||g,s[a-1]||g)+1:a+1:o+1;for(c=[],h=[],v=[],o=m,a=f;o||a;)f=p[o][a]-1,a&&f===p[o][a-1]?h.push(c[c.length]={status:i,value:t[--a],index:a}):o&&f===p[o-1][a]?v.push(c[c.length]={status:r,value:e[--o],index:o}):(--a,--o,n.sparse||c.push({status:"retained",value:t[a]}));return d.a.wb(h,v,10*m),c.reverse()}return function(t,i,r){return r="boolean"==typeof r?{dontLimitMoves:r}:r||{},t=t||[],i=i||[],t.length<=i.length?e(t,i,"added","deleted",r):e(i,t,"deleted","added",r)}}(),d.b("utils.compareArrays",d.a.Fa),function(){function t(t,i,r,n,o){var a=[],s=d.j(function(){var e=i(r,o,d.a.ka(a,t))||[];0<a.length&&(d.a.Lb(a,e),n&&d.k.B(n,null,[r,e,o])),a.length=0,d.a.ga(a,e)},null,{o:t,Ia:function(){return!d.a.ob(a)}});return{$:a,j:s.Z()?s:e}}var i=d.a.e.F();d.a.Za=function(r,n,o,a,s){function l(e,t){C=h[t],g!==t&&(E[e]=C),C.Na(g++),d.a.ka(C.$,r),f.push(C),y.push(C)}function u(e,t){if(e)for(var i=0,r=t.length;r>i;i++)t[i]&&d.a.u(t[i].$,function(r){e(r,i,t[i].sa)})}n=n||[],a=a||{};var c=d.a.e.get(r,i)===e,h=d.a.e.get(r,i)||[],p=d.a.Da(h,function(e){return e.sa}),m=d.a.Fa(p,n,a.dontLimitMoves),f=[],v=0,g=0,_=[],y=[];n=[];for(var C,w,S,E=[],p=[],b=0;w=m[b];b++)switch(S=w.moved,w.status){case"deleted":S===e&&(C=h[v],C.j&&C.j.K(),_.push.apply(_,d.a.ka(C.$,r)),a.beforeRemove&&(n[b]=C,y.push(C))),v++;break;case"retained":l(b,v++);break;case"added":S!==e?l(b,S):(C={sa:w.value,Na:d.p(g++)},f.push(C),y.push(C),c||(p[b]=C))}u(a.beforeMove,E),d.a.u(_,a.beforeRemove?d.R:d.removeNode);for(var x,b=0,c=d.f.firstChild(r);C=y[b];b++){for(C.$||d.a.extend(C,t(r,o,C.sa,s,C.Na)),v=0;m=C.$[v];c=m.nextSibling,x=m,v++)m!==c&&d.f.Bb(r,m,x);!C.ic&&s&&(s(C.sa,C.$,C.Na),C.ic=!0)}u(a.beforeRemove,n),u(a.afterMove,E),u(a.afterAdd,p),d.a.e.set(r,i,f)}}(),d.b("utils.setDomNodeChildrenFromArrayMapping",d.a.Za),d.O=function(){this.allowTemplateRewriting=!1},d.O.prototype=new d.H,d.O.prototype.renderTemplateSource=function(e){var t=(9>d.a.L?0:e.nodes)?e.nodes():null;return t?d.a.S(t.cloneNode(!0).childNodes):(e=e.text(),d.a.ba(e))},d.O.Oa=new d.O,d.ab(d.O.Oa),d.b("nativeTemplateEngine",d.O),function(){d.Sa=function(){var e=this.kc=function(){if(!a||!a.tmpl)return 0;try{if(0<=a.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(e){}return 1}();this.renderTemplateSource=function(t,i,r){if(r=r||{},2>e)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var o=t.data("precompiled");return o||(o=t.text()||"",o=a.template(null,"{{ko_with $item.koBindingContext}}"+o+"{{/ko_with}}"),t.data("precompiled",o)),t=[i.$data],i=a.extend({koBindingContext:i},r.templateOptions),i=a.tmpl(o,t,i),i.appendTo(n.createElement("div")),a.fragments={},i},this.createJavaScriptEvaluatorBlock=function(e){return"{{ko_code ((function() { return "+e+" })()) }}"},this.addTemplate=function(e,t){n.write("<script type='text/html' id='"+e+"'>"+t+"</script>")},e>0&&(a.tmpl.tag.ko_code={open:"__.push($1 || '');"},a.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},d.Sa.prototype=new d.H;var e=new d.Sa;0<e.kc&&d.ab(e),d.b("jqueryTmplTemplateEngine",d.Sa)}()})}()}(),i("ThirdParty/knockout-es5",[],function(){"use strict";function e(e,i){if(!e)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var n=this,o=t(e,!0);return i=i||Object.getOwnPropertyNames(e),i.forEach(function(t){if(t!==h&&t!==d&&!(t in o)){var i=e[t],a=i instanceof Array,s=n.isObservable(i)?i:a?n.observableArray(i):n.observable(i);Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:s,set:n.isWriteableObservable(s)?s:void 0}),o[t]=s,a&&r(n,s)}}),e}function t(e,t){var i=e[h];return!i&&t&&(i={},Object.defineProperty(e,h,{value:i})),i}function i(t,i,r){var n=this,o={owner:t,deferEvaluation:!0};if("function"==typeof r)o.read=r;else{if("value"in r)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if("function"!=typeof r.get)throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');o.read=r.get,o.write=r.set}return t[i]=n.computed(o),e.call(n,t,[i]),t}function r(e,t){var i=null;e.computed(function(){i&&(i.dispose(),i=null);var r=t();r instanceof Array&&(i=n(e,t,r))})}function n(e,t,i){var r=o(e,i);return r.subscribe(t)}function o(e,t){var i=t[d];if(!i){i=new e.subscribable,Object.defineProperty(t,d,{value:i});var r={};a(t,i,r),s(e,t,i,r)}return i}function a(e,t,i){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(r){var n=e[r];e[r]=function(){var e=n.apply(this,arguments);return i.pause!==!0&&t.notifySubscribers(this),e}})}function s(e,t,i,r){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(n){Object.defineProperty(t,n,{enumerable:!1,value:function(){var o;r.pause=!0;try{o=e.observableArray.fn[n].apply(e.observableArray(t),arguments)}finally{r.pause=!1}return i.notifySubscribers(t),o}})})}function l(e,i){if(!e)return null;var r=t(e,!1);return r&&r[i]||null}function u(e,t){var i=l(e,t);i&&i.valueHasMutated()}function c(t){t.track=e,t.getObservable=l,t.valueHasMutated=u,t.defineProperty=i}var h="__knockoutObservables",d="__knockoutSubscribable";return{attachToKo:c}}),i("Widgets/SvgPathBindingHandler",[],function(){"use strict";var e="http://www.w3.org/2000/svg",t="cesium-svgPath-svg",i={register:function(i){i.bindingHandlers.cesiumSvgPath={init:function(r,n){var o=document.createElementNS(e,"svg:svg");o.setAttribute("class",t);var a=document.createElementNS(e,"path");return o.appendChild(a),i.virtualElements.setDomNodeChildren(r,[o]),i.computed({read:function(){var e=i.unwrap(n());a.setAttribute("d",i.unwrap(e.path));var r=i.unwrap(e.width),s=i.unwrap(e.height);o.setAttribute("width",r),o.setAttribute("height",s),o.setAttribute("viewBox","0 0 "+r+" "+s),e.css&&o.setAttribute("class",t+" "+i.unwrap(e.css))},disposeWhenNodeIsRemoved:r}),{controlsDescendantBindings:!0}}},i.virtualElements.allowedBindings.cesiumSvgPath=!0}};return i}),i("ThirdParty/knockout",["./knockout-3.2.0","./knockout-es5","../Widgets/SvgPathBindingHandler"],function(e,t,i){"use strict";return t.attachToKo(e),i.register(e),e}),i("Widgets/subscribeAndEvaluate",["../ThirdParty/knockout"],function(e){"use strict";var t=function(t,i,r,n,o){return r.call(n,t[i]),e.getObservable(t,i).subscribe(r,n,o)};return t}),i("Widgets/Animation/Animation",["../../Core/Color","../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../getElement","../subscribeAndEvaluate"],function(e,t,i,r,n,o,a){"use strict";function s(t){return e.fromCssColorString(window.getComputedStyle(t).getPropertyValue("color"))}function l(e){var t=document.createElementNS(v,e.tagName);for(var i in e)if(e.hasOwnProperty(i)&&"tagName"!==i)if("children"===i){var r,n=e.children.length;for(r=0;n>r;++r)t.appendChild(l(e.children[r]))}else 0===i.indexOf("xlink:")?t.setAttributeNS(g,i.substring(6),e[i]):"textContent"===i?t.textContent=e[i]:t.setAttribute(i,e[i]);return t}function u(e,t,i){var r=document.createElementNS(v,"text");r.setAttribute("x",e),r.setAttribute("y",t),r.setAttribute("class","cesium-animation-svgText");var n=document.createElementNS(v,"tspan");return n.textContent=i,r.appendChild(n),r}function c(e,t,i){e.setAttribute("transform","translate(100,100) rotate("+i+")"),t.setAttribute("transform","rotate("+i+")")}function h(e,t){var i=t.alpha,r=1-i;return T.red=e.red*r+t.red*i,T.green=e.green*r+t.green*i,T.blue=e.blue*r+t.blue*i,T.toCssColorString()}function d(e,t,i){var r={tagName:"g","class":"cesium-animation-rectButton",transform:"translate("+e+","+t+")",children:[{tagName:"rect","class":"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect","class":"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{tagName:"use","class":"cesium-animation-buttonPath","xlink:href":i},{tagName:"title",textContent:""}]};return l(r)}function p(e,t,i){var r={tagName:"g","class":"cesium-animation-rectButton",transform:"translate("+e+","+t+")",children:[{tagName:"use","class":"cesium-animation-buttonGlow","xlink:href":"#animation_pathWingButton"},{tagName:"use","class":"cesium-animation-buttonMain","xlink:href":"#animation_pathWingButton"},{tagName:"use","class":"cesium-animation-buttonPath","xlink:href":i},{tagName:"title",textContent:""}]};return l(r)}function m(e,t){var i=e._viewModel,r=i.shuttleRingDragging;if(!r||f===e)if("mousedown"===t.type||r&&"mousemove"===t.type||"touchstart"===t.type&&1===t.touches.length||r&&"touchmove"===t.type&&1===t.touches.length){var n,o,a=e._centerX,s=e._centerY,l=e._svgNode,u=l.getBoundingClientRect();if("touchstart"===t.type||"touchmove"===t.type?(n=t.touches[0].clientX,o=t.touches[0].clientY):(n=t.clientX,o=t.clientY),!r&&(n>u.right||n<u.left||o<u.top||o>u.bottom))return;var c=e._shuttleRingPointer.getBoundingClientRect(),h=n-a-u.left,d=o-s-u.top,p=180*Math.atan2(d,h)/Math.PI+90;p>180&&(p-=360);var m=i.shuttleRingAngle;r||n<c.right&&n>c.left&&o>c.top&&o<c.bottom?(f=e,i.shuttleRingDragging=!0,i.shuttleRingAngle=p):m>p?i.slower():p>m&&i.faster(),t.preventDefault()}else e===f&&(f=void 0),i.shuttleRingDragging=!1}var f,v="http://www.w3.org/2000/svg",g="http://www.w3.org/1999/xlink",_=e.fromCssColorString("rgba(247,250,255,0.384)"),y=e.fromCssColorString("rgba(143,191,255,0.216)"),C=e.fromCssColorString("rgba(153,197,255,0.098)"),w=e.fromCssColorString("rgba(255,255,255,0.086)"),S=e.fromCssColorString("rgba(255,255,255,0.267)"),E=e.fromCssColorString("rgba(255,255,255,0)"),b=e.fromCssColorString("rgba(66,67,68,0.3)"),x=e.fromCssColorString("rgba(0,0,0,0.5)"),T=new e,P=function(e,t){this._viewModel=t,this.svgElement=e,this._enabled=void 0,this._toggled=void 0;var i=this;this._clickFunction=function(){var e=i._viewModel.command;e.canExecute&&e()},e.addEventListener("click",this._clickFunction,!0),this._subscriptions=[a(t,"toggled",this.setToggled,this),a(t,"tooltip",this.setTooltip,this),a(t.command,"canExecute",this.setEnabled,this)]};P.prototype.destroy=function(){this.svgElement.removeEventListener("click",this._clickFunction,!0);for(var e=this._subscriptions,t=0,i=e.length;i>t;t++)e[t].dispose();r(this)},P.prototype.isDestroyed=function(){return!1},P.prototype.setEnabled=function(e){if(this._enabled!==e){if(this._enabled=e,!e)return this.svgElement.setAttribute("class","cesium-animation-buttonDisabled"),void 0;if(this._toggled)return this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"),void 0;this.svgElement.setAttribute("class","cesium-animation-rectButton")}},P.prototype.setToggled=function(e){this._toggled!==e&&(this._toggled=e,this._enabled&&(e?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))},P.prototype.setTooltip=function(e){this.svgElement.getElementsByTagName("title")[0].textContent=e};var A=function(e,t){e=o(e),this._viewModel=t,this._container=e,this._centerX=0,this._centerY=0,this._defsElement=void 0,this._svgNode=void 0,this._topG=void 0,this._lastHeight=void 0,this._lastWidth=void 0;var i=document.createElement("style");i.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",document.head.insertBefore(i,document.head.childNodes[0]); +var r=document.createElement("div");r.className="cesium-animation-theme",r.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=r,this._themeNormal=r.childNodes[0],this._themeHover=r.childNodes[1],this._themeSelect=r.childNodes[2],this._themeDisabled=r.childNodes[3],this._themeKnob=r.childNodes[4],this._themePointer=r.childNodes[5],this._themeSwoosh=r.childNodes[6],this._themeSwooshHover=r.childNodes[7];var n=document.createElementNS(v,"svg:svg");this._svgNode=n,n.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",g);var s=document.createElementNS(v,"g");this._topG=s,this._realtimeSVG=new P(p(3,4,"#animation_pathClock"),t.playRealtimeViewModel),this._playReverseSVG=new P(d(44,99,"#animation_pathPlayReverse"),t.playReverseViewModel),this._playForwardSVG=new P(d(124,99,"#animation_pathPlay"),t.playForwardViewModel),this._pauseSVG=new P(d(84,99,"#animation_pathPause"),t.pauseViewModel);var h=document.createElementNS(v,"g");h.appendChild(this._realtimeSVG.svgElement),h.appendChild(this._playReverseSVG.svgElement),h.appendChild(this._playForwardSVG.svgElement),h.appendChild(this._pauseSVG.svgElement);var f=l({tagName:"circle","class":"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=f;var _=l({tagName:"g","class":"cesium-animation-shuttleRingSwoosh",children:[{tagName:"use",transform:"translate(100,97) scale(-1,1)","xlink:href":"#animation_pathSwooshFX"},{tagName:"use",transform:"translate(100,97)","xlink:href":"#animation_pathSwooshFX"},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=_,this._shuttleRingPointer=l({tagName:"use","class":"cesium-animation-shuttleRingPointer","xlink:href":"#animation_pathPointer"});var y=l({tagName:"g",transform:"translate(100,100)"});this._knobOuter=l({tagName:"circle","class":"cesium-animation-knobOuter",cx:0,cy:0,r:71});var C=61,w=l({tagName:"circle","class":"cesium-animation-knobInner",cx:0,cy:0,r:C});this._knobDate=u(0,-24,""),this._knobTime=u(0,-7,""),this._knobStatus=u(0,-41,"");var S=l({tagName:"circle","class":"cesium-animation-blank",cx:0,cy:0,r:C}),E=document.createElementNS(v,"g");E.setAttribute("class","cesium-animation-shuttleRingG"),e.appendChild(r),s.appendChild(E),s.appendChild(y),s.appendChild(h),E.appendChild(f),E.appendChild(_),E.appendChild(this._shuttleRingPointer),y.appendChild(this._knobOuter),y.appendChild(w),y.appendChild(this._knobDate),y.appendChild(this._knobTime),y.appendChild(this._knobStatus),y.appendChild(S),n.appendChild(s),e.appendChild(n);var b=this,x=function(e){m(b,e)};this._mouseCallback=x,f.addEventListener("mousedown",x,!0),f.addEventListener("touchstart",x,!0),_.addEventListener("mousedown",x,!0),_.addEventListener("touchstart",x,!0),document.addEventListener("mousemove",x,!0),document.addEventListener("touchmove",x,!0),document.addEventListener("mouseup",x,!0),document.addEventListener("touchend",x,!0),this._shuttleRingPointer.addEventListener("mousedown",x,!0),this._shuttleRingPointer.addEventListener("touchstart",x,!0),this._knobOuter.addEventListener("mousedown",x,!0),this._knobOuter.addEventListener("touchstart",x,!0);var T,A=this._knobTime.childNodes[0],D=this._knobDate.childNodes[0],M=this._knobStatus.childNodes[0];this._subscriptions=[a(t.pauseViewModel,"toggled",function(e){T!==e&&(T=e,T?b._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):b._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),a(t,"shuttleRingAngle",function(e){c(b._shuttleRingPointer,b._knobOuter,e)}),a(t,"dateLabel",function(e){D.textContent!==e&&(D.textContent=e)}),a(t,"timeLabel",function(e){A.textContent!==e&&(A.textContent=e)}),a(t,"multiplierLabel",function(e){M.textContent!==e&&(M.textContent=e)})],this.applyThemeChanges(),this.resize()};return i(A.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}}),A.prototype.isDestroyed=function(){return!1},A.prototype.destroy=function(){var e=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",e,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",e,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",e,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",e,!0),document.removeEventListener("mousemove",e,!0),document.removeEventListener("touchmove",e,!0),document.removeEventListener("mouseup",e,!0),document.removeEventListener("touchend",e,!0),this._shuttleRingPointer.removeEventListener("mousedown",e,!0),this._shuttleRingPointer.removeEventListener("touchstart",e,!0),this._knobOuter.removeEventListener("mousedown",e,!0),this._knobOuter.removeEventListener("touchstart",e,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();for(var t=this._subscriptions,i=0,n=t.length;n>i;i++)t[i].dispose();return r(this)},A.prototype.resize=function(){var e=this._container.clientWidth,t=this._container.clientHeight;if(e!==this._lastWidth||t!==this._lastHeight){var i=this._svgNode,r=200,n=132,o=e,a=t;0===e&&0===t?(o=r,a=n):0===e?(a=t,o=r*(t/n)):0===t&&(o=e,a=n*(e/r));var s=o/r,l=a/n;i.style.cssText="width: "+o+"px; height: "+a+"px; position: absolute; bottom: 0; left: 0; overflow: hidden;",i.setAttribute("width",o),i.setAttribute("height",a),i.setAttribute("viewBox","0 0 "+o+" "+a),this._topG.setAttribute("transform","scale("+s+","+l+")"),this._centerX=Math.max(1,100*s),this._centerY=Math.max(1,100*l),this._lastHeight=e,this._lastWidth=t}},A.prototype.applyThemeChanges=function(){var e=s(this._themeNormal),i=s(this._themeHover),r=s(this._themeSelect),n=s(this._themeDisabled),o=s(this._themeKnob),a=s(this._themePointer),u=s(this._themeSwoosh),c=s(this._themeSwooshHover),d=l({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":h(e,_)},{tagName:"stop",offset:"12%","stop-color":h(e,y)},{tagName:"stop",offset:"46%","stop-color":h(e,C)},{tagName:"stop",offset:"81%","stop-color":h(e,w)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":h(i,_)},{tagName:"stop",offset:"12%","stop-color":h(i,y)},{tagName:"stop",offset:"46%","stop-color":h(i,C)},{tagName:"stop",offset:"81%","stop-color":h(i,w)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":h(r,_)},{tagName:"stop",offset:"12%","stop-color":h(r,y)},{tagName:"stop",offset:"46%","stop-color":h(r,C)},{tagName:"stop",offset:"81%","stop-color":h(r,w)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":h(n,S)},{tagName:"stop",offset:"75%","stop-color":h(n,E)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,"in":"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":u.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":u.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":u.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":c.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":a.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":a.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":h(a,x)},{tagName:"stop",offset:"100%","stop-color":h(a,x)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":h(o,_)},{tagName:"stop",offset:"60%","stop-color":h(o,b)},{tagName:"stop",offset:"85%","stop-color":h(o,y)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":h(o,b)},{tagName:"stop",offset:"60%","stop-color":h(o,_)},{tagName:"stop",offset:"85%","stop-color":h(o,w)}]},{id:"animation_pathReset",tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},{id:"animation_pathPause",tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},{id:"animation_pathPlay",tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},{id:"animation_pathPlayReverse",tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},{id:"animation_pathLoop",tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},{id:"animation_pathClock",tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},{id:"animation_pathWingButton",tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},{id:"animation_pathPointer",tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},{id:"animation_pathSwooshFX",tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}]});t(this._defsElement)?this._svgNode.replaceChild(d,this._defsElement):this._svgNode.appendChild(d),this._defsElement=d},A}),i("Widgets/createCommand",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../Core/Event","../ThirdParty/knockout"],function(e,t,i,r,n,o){"use strict";var a=function(t,r){function a(){var e,i={args:arguments,cancel:!1};return s.raiseEvent(i),i.cancel||(e=t.apply(null,arguments),l.raiseEvent(e)),e}r=e(r,!0);var s=new n,l=new n;return a.canExecute=r,o.track(a,["canExecute"]),i(a,{beforeExecute:{value:s},afterExecute:{value:l}}),a};return a}),i("Widgets/ToggleButtonViewModel",["../Core/defaultValue","../Core/defined","../Core/defineProperties","../Core/DeveloperError","../ThirdParty/knockout"],function(e,t,i,r,n){"use strict";var o=function(t,i){this._command=t,i=e(i,e.EMPTY_OBJECT),this.toggled=e(i.toggled,!1),this.tooltip=e(i.tooltip,""),n.track(this,["toggled","tooltip"])};return i(o.prototype,{command:{get:function(){return this._command}}}),o}),i("Widgets/Animation/AnimationViewModel",["../../Core/binarySearch","../../Core/ClockRange","../../Core/ClockStep","../../Core/defined","../../Core/defineProperties","../../Core/DeveloperError","../../Core/JulianDate","../../ThirdParty/knockout","../../ThirdParty/sprintf","../createCommand","../ToggleButtonViewModel"],function(e,t,i,r,n,o,a,s,l,u,c){"use strict";function h(e){e.clockStep===i.SYSTEM_CLOCK&&(e.clockStep=i.SYSTEM_CLOCK_MULTIPLIER,e.multiplier=1)}function d(e){h(e),e.shouldAnimate=!0}function p(e,t){return e-t}function m(t,i){var r=e(i,t,p);return 0>r?~r:r}function f(e,t){if(Math.abs(e)<=_)return e/_;var i,r,n=_,o=y,a=0;return e>0?(i=Math.log(t[t.length-1]),r=(i-a)/(o-n),Math.exp(a+r*(e-n))):(i=Math.log(-t[0]),r=(i-a)/(o-n),-Math.exp(a+r*(Math.abs(e)-n)))}function v(e,t,r){if(r.clockStep===i.SYSTEM_CLOCK)return _;if(Math.abs(e)<=1)return e*_;var n,o,a=_,s=y,l=0;return e>0?(n=Math.log(t[t.length-1]),o=(n-l)/(s-a),(Math.log(e)-l)/o+a):(n=Math.log(-t[0]),o=(n-l)/(s-a),-((Math.log(Math.abs(e))-l)/o+a))}var g=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],_=15,y=105,C=function(e){var r=this;this._clockViewModel=e,this._allShuttleRingTicks=[],this._dateFormatter=C.defaultDateFormatter,this._timeFormatter=C.defaultTimeFormatter,this.shuttleRingDragging=!1,this.snapToTicks=!1,s.track(this,["_allShuttleRingTicks","_dateFormatter","_timeFormatter","shuttleRingDragging","snapToTicks"]),this._sortedFilteredPositiveTicks=[],this.setShuttleRingTicks(C.defaultTicks),this.timeLabel=void 0,s.defineProperty(this,"timeLabel",function(){return r._timeFormatter(r._clockViewModel.currentTime,r)}),this.dateLabel=void 0,s.defineProperty(this,"dateLabel",function(){return r._dateFormatter(r._clockViewModel.currentTime,r)}),this.multiplierLabel=void 0,s.defineProperty(this,"multiplierLabel",function(){var e=r._clockViewModel;if(e.clockStep===i.SYSTEM_CLOCK)return"Today";var t=e.multiplier;return 0===t%1?t.toFixed(0)+"x":t.toFixed(3).replace(/0{0,3}$/,"")+"x"}),this.shuttleRingAngle=void 0,s.defineProperty(this,"shuttleRingAngle",{get:function(){return v(e.multiplier,r._allShuttleRingTicks,e)},set:function(e){e=Math.max(Math.min(e,y),-y);var t=r._allShuttleRingTicks,n=r._clockViewModel;if(n.clockStep=i.SYSTEM_CLOCK_MULTIPLIER,Math.abs(e)===y)return n.multiplier=e>0?t[t.length-1]:t[0],void 0;var o=f(e,t);if(r.snapToTicks)o=t[m(o,t)];else if(0!==o){var a=Math.abs(o);if(a>100){var s=a.toFixed(0).length-2,l=Math.pow(10,s);o=0|Math.round(o/l)*l}else a>_?o=Math.round(o):a>1?o=+o.toFixed(1):a>0&&(o=+o.toFixed(2))}n.multiplier=o}}),this._canAnimate=void 0,s.defineProperty(this,"_canAnimate",function(){var e=r._clockViewModel,i=e.clockRange;if(r.shuttleRingDragging||i===t.UNBOUNDED)return!0;var n=e.multiplier,o=e.currentTime,s=e.startTime,l=!1;if(i===t.LOOP_STOP)l=a.greaterThan(o,s)||o.equals(s)&&n>0;else{var u=e.stopTime;l=a.greaterThan(o,s)&&a.lessThan(o,u)||o.equals(s)&&n>0||o.equals(u)&&0>n}return l||(e.shouldAnimate=!1),l}),this._isSystemTimeAvailable=void 0,s.defineProperty(this,"_isSystemTimeAvailable",function(){var e=r._clockViewModel,i=e.clockRange;if(i===t.UNBOUNDED)return!0;var n=e.systemTime;return a.greaterThanOrEquals(n,e.startTime)&&a.lessThanOrEquals(n,e.stopTime)}),this._isAnimating=void 0,s.defineProperty(this,"_isAnimating",function(){return r._clockViewModel.shouldAnimate&&(r._canAnimate||r.shuttleRingDragging)});var n=u(function(){var e=r._clockViewModel;e.shouldAnimate?(h(e),e.shouldAnimate=!1):r._canAnimate&&d(e)});this._pauseViewModel=new c(n,{toggled:s.computed(function(){return!r._isAnimating}),tooltip:"Pause"});var o=u(function(){var e=r._clockViewModel;h(e);var t=e.multiplier;t>0&&(e.multiplier=-t),e.shouldAnimate=!0});this._playReverseViewModel=new c(o,{toggled:s.computed(function(){return r._isAnimating&&e.multiplier<0}),tooltip:"Play Reverse"});var l=u(function(){var e=r._clockViewModel;h(e);var t=e.multiplier;0>t&&(e.multiplier=-t),e.shouldAnimate=!0});this._playForwardViewModel=new c(l,{toggled:s.computed(function(){return r._isAnimating&&e.multiplier>0&&e.clockStep!==i.SYSTEM_CLOCK}),tooltip:"Play Forward"});var p=u(function(){var e=r._clockViewModel;e.clockStep=i.SYSTEM_CLOCK,e.multiplier=1,e.shouldAnimate=!0},s.getObservable(this,"_isSystemTimeAvailable"));this._playRealtimeViewModel=new c(p,{toggled:s.computed(function(){return e.shouldAnimate&&e.clockStep===i.SYSTEM_CLOCK}),tooltip:s.computed(function(){return r._isSystemTimeAvailable?"Today (real-time)":"Current time not in range"})}),this._slower=u(function(){var e=r._clockViewModel;h(e);var t=r._allShuttleRingTicks,i=e.multiplier,n=m(i,t)-1;n>=0&&(e.multiplier=t[n])}),this._faster=u(function(){var e=r._clockViewModel;h(e);var t=r._allShuttleRingTicks,i=e.multiplier,n=m(i,t)+1;n<t.length&&(e.multiplier=t[n])})};return C.defaultDateFormatter=function(e){var t=a.toGregorianDate(e);return g[t.month-1]+" "+t.day+" "+t.year},C.defaultTicks=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800],C.defaultTimeFormatter=function(e,t){var i=a.toGregorianDate(e),r=Math.round(i.millisecond);return Math.abs(t._clockViewModel.multiplier)<1?l("%02d:%02d:%02d.%03d",i.hour,i.minute,i.second,r):l("%02d:%02d:%02d UTC",i.hour,i.minute,i.second)},C.prototype.getShuttleRingTicks=function(){return this._sortedFilteredPositiveTicks.slice(0)},C.prototype.setShuttleRingTicks=function(e){var t,i,r,n={},o=this._sortedFilteredPositiveTicks;for(o.length=0,t=0,i=e.length;i>t;++t)r=e[t],n.hasOwnProperty(r)||(n[r]=!0,o.push(r));o.sort(p);var a=[];for(i=o.length,t=i-1;t>=0;--t)r=o[t],0!==r&&a.push(-r);Array.prototype.push.apply(a,o),this._allShuttleRingTicks=a},n(C.prototype,{slower:{get:function(){return this._slower}},faster:{get:function(){return this._faster}},clockViewModel:{get:function(){return this._clockViewModel}},pauseViewModel:{get:function(){return this._pauseViewModel}},playReverseViewModel:{get:function(){return this._playReverseViewModel}},playForwardViewModel:{get:function(){return this._playForwardViewModel}},playRealtimeViewModel:{get:function(){return this._playRealtimeViewModel}},dateFormatter:{get:function(){return this._dateFormatter},set:function(e){this._dateFormatter=e}},timeFormatter:{get:function(){return this._timeFormatter},set:function(e){this._timeFormatter=e}}}),C._maxShuttleRingAngle=y,C._realtimeShuttleRingAngle=_,C}),i("Widgets/BaseLayerPicker/BaseLayerPickerViewModel",["../../Core/defaultValue","../../Core/defined","../../Core/defineProperties","../../Core/DeveloperError","../../Core/EllipsoidTerrainProvider","../../Core/isArray","../../ThirdParty/knockout","../createCommand"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(i){i=e(i,e.EMPTY_OBJECT);var r=i.globe,l=e(i.imageryProviderViewModels,[]),u=e(i.terrainProviderViewModels,[]);this._globe=r,this.imageryProviderViewModels=l.slice(0),this.terrainProviderViewModels=u.slice(0),this.dropDownVisible=!1,a.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]),this.buttonTooltip=void 0,a.defineProperty(this,"buttonTooltip",function(){var e=this.selectedImagery,i=this.selectedTerrain,r=t(e)?e.name:void 0,n=t(i)?i.name:void 0;return t(r)&&t(n)?r+"\n"+n:t(r)?r:n}),this.buttonImageUrl=void 0,a.defineProperty(this,"buttonImageUrl",function(){var e=this.selectedImagery;return t(e)?e.iconUrl:void 0}),this.selectedImagery=void 0;var c=a.observable();this._currentImageryProviders=[],a.defineProperty(this,"selectedImagery",{get:function(){return c()},set:function(e){if(c()===e)return this.dropDownVisible=!1,void 0;var i,r=this._currentImageryProviders,n=r.length,a=this._globe.imageryLayers;for(i=0;n>i;i++)for(var s=a.length,l=0;s>l;l++){var u=a.get(l);if(u.imageryProvider===r[i]){a.remove(u);break}}if(t(e)){var h=e.creationCommand();if(o(h)){var d=h.length;for(i=d-1;i>=0;i--)a.addImageryProvider(h[i],0);this._currentImageryProviders=h.slice(0)}else this._currentImageryProviders=[h],a.addImageryProvider(h,0)}c(e),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;var h=a.observable();a.defineProperty(this,"selectedTerrain",{get:function(){return h()},set:function(e){if(h()===e)return this.dropDownVisible=!1,void 0;var i;t(e)&&(i=e.creationCommand()),this._globe.depthTestAgainstTerrain=!(i instanceof n),this._globe.terrainProvider=i,h(e),this.dropDownVisible=!1}});var d=this;this._toggleDropDown=s(function(){d.dropDownVisible=!d.dropDownVisible}),this.selectedImagery=e(i.selectedImageryProviderViewModel,l[0]),this.selectedTerrain=e(i.selectedTerrainProviderViewModel,u[0])};return i(l.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}}),l}),i("Widgets/BaseLayerPicker/BaseLayerPicker",["../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../Core/FeatureDetection","../../ThirdParty/knockout","../getElement","./BaseLayerPickerViewModel"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(e,t){e=a(e);var i=new s(t),r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button",r.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),e.appendChild(r);var l=document.createElement("img");l.setAttribute("draggable","false"),l.className="cesium-baseLayerPicker-selected",l.setAttribute("data-bind","attr: { src: buttonImageUrl }"),r.appendChild(l);var u=document.createElement("div");u.className="cesium-baseLayerPicker-dropDown",u.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),e.appendChild(u);var c=document.createElement("div");c.className="cesium-baseLayerPicker-sectionTitle",c.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),c.innerHTML="Imagery",u.appendChild(c);var h=document.createElement("div");h.className="cesium-baseLayerPicker-choices",h.setAttribute("data-bind","foreach: imageryProviderViewModels"),u.appendChild(h);var d=document.createElement("div");d.className="cesium-baseLayerPicker-item",d.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parent.selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parent.selectedImagery = $data; }'),h.appendChild(d);var p=document.createElement("img");p.className="cesium-baseLayerPicker-itemIcon",p.setAttribute("data-bind","attr: { src: iconUrl }"),p.setAttribute("draggable","false"),d.appendChild(p);var m=document.createElement("div");m.className="cesium-baseLayerPicker-itemLabel",m.setAttribute("data-bind","text: name"),d.appendChild(m);var f=document.createElement("div");f.className="cesium-baseLayerPicker-sectionTitle",f.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),f.innerHTML="Terrain",u.appendChild(f);var v=document.createElement("div");v.className="cesium-baseLayerPicker-choices",v.setAttribute("data-bind","foreach: terrainProviderViewModels"),u.appendChild(v);var g=document.createElement("div");g.className="cesium-baseLayerPicker-item",g.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parent.selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parent.selectedTerrain = $data; }'),v.appendChild(g);var _=document.createElement("img");_.className="cesium-baseLayerPicker-itemIcon",_.setAttribute("data-bind","attr: { src: iconUrl }"),_.setAttribute("draggable","false"),g.appendChild(_);var y=document.createElement("div");y.className="cesium-baseLayerPicker-itemLabel",y.setAttribute("data-bind","text: name"),g.appendChild(y),o.applyBindings(i,r),o.applyBindings(i,u),this._viewModel=i,this._container=e,this._element=r,this._dropPanel=u,this._closeDropDown=function(e){r.contains(e.target)||u.contains(e.target)||(i.dropDownVisible=!1)},n.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))};return t(l.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}}),l.prototype.isDestroyed=function(){return!1},l.prototype.destroy=function(){return n.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),o.cleanNode(this._element),o.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),i(this)},l}),i("Widgets/BaseLayerPicker/ProviderViewModel",["../../Core/defined","../../Core/defineProperties","../../Core/DeveloperError","../../ThirdParty/knockout","../createCommand"],function(e,t,i,r,n){"use strict";var o=function(t){var i=t.creationFunction;e(i.canExecute)||(i=n(i)),this._creationCommand=i,this.name=t.name,this.tooltip=t.tooltip,this.iconUrl=t.iconUrl,r.track(this,["name","tooltip","iconUrl"])};return t(o.prototype,{creationCommand:{get:function(){return this._creationCommand}}}),o}),i("Widgets/BaseLayerPicker/createDefaultImageryProviderViewModels",["../../Core/buildModuleUrl","../../Scene/ArcGisMapServerImageryProvider","../../Scene/BingMapsImageryProvider","../../Scene/BingMapsStyle","../../Scene/OpenStreetMapImageryProvider","../../Scene/TileMapServiceImageryProvider","../BaseLayerPicker/ProviderViewModel"],function(e,t,i,r,n,o,a){"use strict";function s(){var s=[];return s.push(new a({name:"Bing Maps Aerial",iconUrl:e("Widgets/Images/ImageryProviders/bingAerial.png"),tooltip:"Bing Maps aerial imagery \nhttp://www.bing.com/maps",creationFunction:function(){return new i({url:"//dev.virtualearth.net",mapStyle:r.AERIAL})}})),s.push(new a({name:"Bing Maps Aerial with Labels",iconUrl:e("Widgets/Images/ImageryProviders/bingAerialLabels.png"),tooltip:"Bing Maps aerial imagery with label overlays \nhttp://www.bing.com/maps",creationFunction:function(){return new i({url:"//dev.virtualearth.net",mapStyle:r.AERIAL_WITH_LABELS})}})),s.push(new a({name:"Bing Maps Roads",iconUrl:e("Widgets/Images/ImageryProviders/bingRoads.png"),tooltip:"Bing Maps standard road maps\nhttp://www.bing.com/maps",creationFunction:function(){return new i({url:"//dev.virtualearth.net",mapStyle:r.ROAD})}})),s.push(new a({name:"ESRI World Imagery",iconUrl:e("Widgets/Images/ImageryProviders/esriWorldImagery.png"),tooltip:"World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. The map includes NASA Blue Marble: Next Generation 500m resolution imagery at small scales (above 1:1,000,000), i-cubed 15m eSAT imagery at medium-to-large scales (down to 1:70,000) for the world, and USGS 15m Landsat imagery for Antarctica. The map features 0.3m resolution imagery in the continental United States and 0.6m resolution imagery in parts of Western Europe from DigitalGlobe. In other parts of the world, 1 meter resolution imagery is available from GeoEye IKONOS, i-cubed Nationwide Prime, Getmapping, AeroGRID, IGN Spain, and IGP Portugal. Additionally, imagery at different resolutions has been contributed by the GIS User Community.\nhttp://www.esri.com",creationFunction:function(){return new t({url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"})}})),s.push(new a({name:"ESRI World Street Map",iconUrl:e("Widgets/Images/ImageryProviders/esriWorldStreetMap.png"),tooltip:"This worldwide street map presents highway-level data for the world. Street-level data includes the United States; much of Canada; Japan; most countries in Europe; Australia and New Zealand; India; parts of South America including Argentina, Brazil, Chile, Colombia, and Venezuela; Ghana; and parts of southern Africa including Botswana, Lesotho, Namibia, South Africa, and Swaziland.\nhttp://www.esri.com",creationFunction:function(){return new t({url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"})}})),s.push(new a({name:"ESRI National Geographic",iconUrl:e("Widgets/Images/ImageryProviders/esriNationalGeographic.png"),tooltip:"This web map contains the National Geographic World Map service. This map service is designed to be used as a general reference map for informational and educational purposes as well as a basemap by GIS professionals and other users for creating web maps and web mapping applications.\nhttp://www.esri.com",creationFunction:function(){return new t({url:"//services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/"})}})),s.push(new a({name:"Open­Street­Map",iconUrl:e("Widgets/Images/ImageryProviders/openStreetMap.png"),tooltip:"OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world.\nhttp://www.openstreetmap.org",creationFunction:function(){return new n({url:"//a.tile.openstreetmap.org/"})}})),s.push(new a({name:"Stamen Watercolor",iconUrl:e("Widgets/Images/ImageryProviders/stamenWatercolor.png"),tooltip:"Reminiscent of hand drawn maps, Stamen watercolor maps apply raster effect area washes and organic edges over a paper texture to add warm pop to any map.\nhttp://maps.stamen.com",creationFunction:function(){return new n({url:"//stamen-tiles.a.ssl.fastly.net/watercolor/",credit:"Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under CC BY SA."}) +}})),s.push(new a({name:"Stamen Toner",iconUrl:e("Widgets/Images/ImageryProviders/stamenToner.png"),tooltip:"A high contrast black and white map.\nhttp://maps.stamen.com",creationFunction:function(){return new n({url:"//stamen-tiles.a.ssl.fastly.net/toner/",credit:"Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under CC BY SA."})}})),s.push(new a({name:"MapQuest Open­Street­Map",iconUrl:e("Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png"),tooltip:"OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world.\nhttp://www.openstreetmap.org",creationFunction:function(){return new n({url:"//otile1-s.mqcdn.com/tiles/1.0.0/osm/"})}})),s.push(new a({name:"The Black Marble",iconUrl:e("Widgets/Images/ImageryProviders/blackMarble.png"),tooltip:"The lights of cities and villages trace the outlines of civilization in this global view of the Earth at night as seen by NASA/NOAA's Suomi NPP satellite.",creationFunction:function(){return new o({url:"//cesiumjs.org/blackmarble",maximumLevel:8,credit:"Black Marble imagery courtesy NASA Earth Observatory"})}})),s.push(new a({name:"Natural Earth II",iconUrl:e("Widgets/Images/ImageryProviders/naturalEarthII.png"),tooltip:"Natural Earth II, darkened for contrast.\nhttp://www.naturalearthdata.com/",creationFunction:function(){return new o({url:e("Assets/Textures/NaturalEarthII")})}})),s}return s}),i("Widgets/BaseLayerPicker/createDefaultTerrainProviderViewModels",["../../Core/buildModuleUrl","../../Core/CesiumTerrainProvider","../../Core/EllipsoidTerrainProvider","../BaseLayerPicker/ProviderViewModel"],function(e,t,i,r){"use strict";function n(){var n=[];return n.push(new r({name:"WGS84 Ellipsoid",iconUrl:e("Widgets/Images/TerrainProviders/Ellipsoid.png"),tooltip:"WGS84 standard ellipsoid, also known as EPSG:4326",creationFunction:function(){return new i}})),n.push(new r({name:"STK World Terrain meshes",iconUrl:e("Widgets/Images/TerrainProviders/STK.png"),tooltip:"High-resolution, mesh-based terrain for the entire globe. Free for use on the Internet. Closed-network options are available.\nhttp://www.agi.com",creationFunction:function(){return new t({url:"//assets.agi.com/stk-terrain/world",requestWaterMask:!0,requestVertexNormals:!0})}})),n}return n}),i("Widgets/CesiumInspector/CesiumInspectorViewModel",["../../Core/Color","../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../Core/Rectangle","../../Core/ScreenSpaceEventHandler","../../Core/ScreenSpaceEventType","../../Scene/DebugModelMatrixPrimitive","../../Scene/PerformanceDisplay","../../Scene/TileCoordinatesImageryProvider","../../ThirdParty/knockout","../createCommand"],function(e,t,i,r,n,o,a,s,l,u,c,h,d){"use strict";function p(e){var i;if(t(e)){i="Command Statistics";var r=e.commandsInFrustums;for(var n in r)if(r.hasOwnProperty(n)){var o,a=parseInt(n,10);if(7===a)o="1, 2 and 3";else{for(var s=[],l=2;l>=0;l--){var u=Math.pow(2,l);a>=u&&(s.push(l+1),a-=u)}o=s.reverse().join(" and ")}i+="<br>    "+r[n]+" in frustum "+o}i+="<br>Total: "+e.totalCommands}return i}function m(e,t,i){var r=Math.min(i,t);return r=Math.max(r,e)}var f=function(e,i){var r=this,n=e.canvas,p=new a(n);this._eventHandler=p,this._scene=e,this._canvas=n,this._primitive=void 0,this._tile=void 0,this._modelMatrixPrimitive=void 0,this._performanceDisplay=void 0,this._performanceContainer=i;var f=this._scene.globe;f.depthTestAgainstTerrain=!0,this.frustums=!1,this.performance=!1,this.shaderCacheText="",this.primitiveBoundingSphere=!1,this.primitiveReferenceFrame=!1,this.filterPrimitive=!1,this.tileBoundingSphere=!1,this.filterTile=!1,this.wireframe=!1,this.globeDepth=!1,this.pickDepth=!1,this.depthFrustum=1,this._numberOfFrustums=1,this.depthFrustumText="1 of 1",this.suspendUpdates=!1,this.tileCoordinates=!1,this.frustumStatisticText="",this.tileText="",this.hasPickedPrimitive=!1,this.hasPickedTile=!1,this.pickPimitiveActive=!1,this.pickTileActive=!1,this.dropDownVisible=!0,this.generalVisible=!0,this.primitivesVisible=!1,this.terrainVisible=!1,this.generalSwitchText="-",this.primitivesSwitchText="+",this.terrainSwitchText="+",h.track(this,["filterTile","suspendUpdates","dropDownVisible","shaderCacheText","frustums","frustumStatisticText","pickTileActive","pickPrimitiveActive","hasPickedPrimitive","hasPickedTile","tileText","generalVisible","generalSwitchText","primitivesVisible","primitivesSwitchText","terrainVisible","terrainSwitchText","depthFrustumText"]),this._toggleDropDown=d(function(){r.dropDownVisible=!r.dropDownVisible}),this._toggleGeneral=d(function(){r.generalVisible=!r.generalVisible,r.generalSwitchText=r.generalVisible?"-":"+"}),this._togglePrimitives=d(function(){r.primitivesVisible=!r.primitivesVisible,r.primitivesSwitchText=r.primitivesVisible?"-":"+"}),this._toggleTerrain=d(function(){r.terrainVisible=!r.terrainVisible,r.terrainSwitchText=r.terrainVisible?"-":"+"}),this._showFrustums=d(function(){return r._scene.debugShowFrustums=r.frustums?!0:!1,!0}),this._showPerformance=d(function(){return r.performance?r._performanceDisplay=new u({container:r._performanceContainer}):r._performanceContainer.innerHTML="",!0}),this._showPrimitiveBoundingSphere=d(function(){return r._primitive.debugShowBoundingVolume=r.primitiveBoundingSphere,!0}),this._showPrimitiveReferenceFrame=d(function(){if(r.primitiveReferenceFrame){var e=r._primitive.modelMatrix;r._modelMatrixPrimitive=new l({modelMatrix:e}),r._scene.primitives.add(r._modelMatrixPrimitive)}else t(r._modelMatrixPrimitive)&&(r._scene.primitives.remove(r._modelMatrixPrimitive),r._modelMatrixPrimitive=void 0);return!0}),this._doFilterPrimitive=d(function(){return r._scene.debugCommandFilter=r.filterPrimitive?function(e){return t(r._modelMatrixPrimitive)&&e.owner===r._modelMatrixPrimitive._primitive?!0:t(r._primitive)?e.owner===r._primitive||e.owner===r._primitive._billboardCollection||e.owner.primitive===r._primitive:!1}:void 0,!0}),this._showWireframe=d(function(){return f._surface.tileProvider._debug.wireframe=r.wireframe,!0}),this._showGlobeDepth=d(function(){return r._scene.debugShowGlobeDepth=r.globeDepth,!0}),this._showPickDepth=d(function(){return r._scene.debugShowPickDepth=r.pickDepth,!0}),this._incrementDepthFrustum=d(function(){var e=r.depthFrustum+1;return r.depthFrustum=m(1,r._numberOfFrustums,e),r.scene.debugShowDepthFrustum=r.depthFrustum,!0}),this._decrementDepthFrustum=d(function(){var e=r.depthFrustum-1;return r.depthFrustum=m(1,r._numberOfFrustums,e),r.scene.debugShowDepthFrustum=r.depthFrustum,!0}),this._doSuspendUpdates=d(function(){return f._surface._debug.suspendLodUpdate=r.suspendUpdates,r.suspendUpdates||(r.filterTile=!1),!0});var v;this._showTileCoordinates=d(function(){return r.tileCoordinates&&!t(v)?v=e.imageryLayers.addImageryProvider(new c({tilingScheme:e.terrainProvider.tilingScheme})):!r.tileCoordinates&&t(v)&&(e.imageryLayers.remove(v),v=void 0),!0}),this._showTileBoundingSphere=d(function(){return f._surface.tileProvider._debug.boundingSphereTile=r.tileBoundingSphere?r._tile:void 0,!0}),this._doFilterTile=d(function(){return r.filterTile?(r.suspendUpdates=!0,r.doSuspendUpdates(),f._surface._tilesToRender=[],t(r._tile)&&f._surface._tilesToRender.push(r._tile)):(r.suspendUpdates=!1,r.doSuspendUpdates()),!0});var g=function(e){p.removeInputAction(s.LEFT_CLICK),r.pickPrimitiveActive=!1;var i=r._scene.pick({x:e.position.x,y:e.position.y});t(i)&&(r.primitive=t(i.collection)?i.collection:i.primitive)};this._pickPrimitive=d(function(){r.pickPrimitiveActive=!r.pickPrimitiveActive,r.pickPrimitiveActive?p.setInputAction(g,s.LEFT_CLICK):p.removeInputAction(s.LEFT_CLICK)});var _=function(e){var i,n=f.ellipsoid,a=r._scene.camera.pickEllipsoid({x:e.position.x,y:e.position.y},n);if(t(a))for(var l=n.cartesianToCartographic(a),u=f._surface.tileProvider._tilesToRenderByTextureCount,c=0;!i&&c<u.length;++c){var h=u[c];if(t(h))for(var d=0;!i&&d<h.length;++d){var m=h[d];o.contains(m.rectangle,l)&&(i=m)}}r.tile=i,p.removeInputAction(s.LEFT_CLICK),r.pickTileActive=!1};this._pickTile=d(function(){r.pickTileActive=!r.pickTileActive,r.pickTileActive?p.setInputAction(_,s.LEFT_CLICK):p.removeInputAction(s.LEFT_CLICK)})};return i(f.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},toggleDropDown:{get:function(){return this._toggleDropDown}},showFrustums:{get:function(){return this._showFrustums}},showPerformance:{get:function(){return this._showPerformance}},showPrimitiveBoundingSphere:{get:function(){return this._showPrimitiveBoundingSphere}},showPrimitiveReferenceFrame:{get:function(){return this._showPrimitiveReferenceFrame}},doFilterPrimitive:{get:function(){return this._doFilterPrimitive}},showWireframe:{get:function(){return this._showWireframe}},showGlobeDepth:{get:function(){return this._showGlobeDepth}},showPickDepth:{get:function(){return this._showPickDepth}},incrementDepthFrustum:{get:function(){return this._incrementDepthFrustum}},decrementDepthFrustum:{get:function(){return this._decrementDepthFrustum}},doSuspendUpdates:{get:function(){return this._doSuspendUpdates}},showTileCoordinates:{get:function(){return this._showTileCoordinates}},showTileBoundingSphere:{get:function(){return this._showTileBoundingSphere}},doFilterTile:{get:function(){return this._doFilterTile}},toggleGeneral:{get:function(){return this._toggleGeneral}},togglePrimitives:{get:function(){return this._togglePrimitives}},toggleTerrain:{get:function(){return this._toggleTerrain}},pickPrimitive:{get:function(){return this._pickPrimitive}},pickTile:{get:function(){return this._pickTile}},selectParent:{get:function(){var e=this;return d(function(){e.tile=e.tile.parent})}},selectNW:{get:function(){var e=this;return d(function(){e.tile=e.tile.children[0]})}},selectNE:{get:function(){var e=this;return d(function(){e.tile=e.tile.children[1]})}},selectSW:{get:function(){var e=this;return d(function(){e.tile=e.tile.children[2]})}},selectSE:{get:function(){var e=this;return d(function(){e.tile=e.tile.children[3]})}},primitive:{set:function(e){var i=this._primitive;e!==i&&(this.hasPickedPrimitive=!0,t(i)&&(i.debugShowBoundingVolume=!1),this._scene.debugCommandFilter=void 0,t(this._modelMatrixPrimitive)&&(this._scene.primitives.remove(this._modelMatrixPrimitive),this._modelMatrixPrimitive=void 0),this._primitive=e,e.show=!1,setTimeout(function(){e.show=!0},50),this.showPrimitiveBoundingSphere(),this.showPrimitiveReferenceFrame(),this.doFilterPrimitive())},get:function(){return this._primitive}},tile:{set:function(e){if(t(e)){this.hasPickedTile=!0;var i=this._tile;e!==i&&(this.tileText="L: "+e.level+" X: "+e.x+" Y: "+e.y,this.tileText+="<br>SW corner: "+e.rectangle.west+", "+e.rectangle.south,this.tileText+="<br>NE corner: "+e.rectangle.east+", "+e.rectangle.north,this.tileText+="<br>Min: "+e.data.minimumHeight+" Max: "+e.data.maximumHeight),this._tile=e,this.showTileBoundingSphere(),this.doFilterTile()}else this.hasPickedTile=!1,this._tile=void 0},get:function(){return this._tile}},update:{get:function(){var e=this;return function(){e.frustums&&(e.frustumStatisticText=p(e._scene.debugFrustumStatistics));var t=e._scene.numberOfFrustums;e._numberOfFrustums=t;var i=m(1,t,e.depthFrustum);e.depthFrustum=i,e.scene.debugShowDepthFrustum=i,e.depthFrustumText=i+" of "+t,e.performance&&e._performanceDisplay.update(),e.primitiveReferenceFrame&&(e._modelMatrixPrimitive.modelMatrix=e._primitive.modelMatrix),e.shaderCacheText="Cached shaders: "+e._scene.context.shaderCache.numberOfShaders}}}}),f.prototype.isDestroyed=function(){return!1},f.prototype.destroy=function(){return this._eventHandler.destroy(),r(this)},f}),i("Widgets/CesiumInspector/CesiumInspector",["../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../ThirdParty/knockout","../getElement","./CesiumInspectorViewModel"],function(e,t,i,r,n,o,a){"use strict";var s=function(t,i){if(!e(t))throw new r("container is required.");if(!e(i))throw new r("scene is required.");t=o(t);var s=document.createElement("div"),l=new a(i,s);this._viewModel=l,this._container=t;var u=document.createElement("div");this._element=u;var c=document.createElement("div");c.textContent="Cesium Inspector",c.className="cesium-cesiumInspector-button",c.setAttribute("data-bind","click: toggleDropDown"),u.appendChild(c),u.className="cesium-cesiumInspector",u.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : dropDownVisible, "cesium-cesiumInspector-hidden" : !dropDownVisible }'),t.appendChild(this._element);var h=document.createElement("div");this._panel=h,h.className="cesium-cesiumInspector-dropDown",u.appendChild(h);var d=document.createElement("div");d.className="cesium-cesiumInspector-sectionHeader";var p=document.createElement("span");p.className="cesium-cesiumInspector-toggleSwitch",p.setAttribute("data-bind","click: toggleGeneral, text: generalSwitchText"),d.appendChild(p),d.appendChild(document.createTextNode("General")),h.appendChild(d);var m=document.createElement("div");m.className="cesium-cesiumInspector-section",m.setAttribute("data-bind",'css: {"cesium-cesiumInspector-show" : generalVisible, "cesium-cesiumInspector-hide" : !generalVisible}'),h.appendChild(m);var f=document.createElement("div");m.appendChild(f);var v=document.createElement("div");v.className="cesium-cesiumInspector-frustumStats",v.setAttribute("data-bind",'css: {"cesium-cesiumInspector-show" : frustums, "cesium-cesiumInspector-hide" : !frustums}, html: frustumStatisticText');var g=document.createElement("input");g.type="checkbox",g.setAttribute("data-bind","checked: frustums, click: showFrustums"),f.appendChild(g),f.appendChild(document.createTextNode("Show Frustums")),f.appendChild(v);var _=document.createElement("div");m.appendChild(_);var y=document.createElement("input");y.type="checkbox",y.setAttribute("data-bind","checked: performance, click: showPerformance"),_.appendChild(y),_.appendChild(document.createTextNode("Performance Display")),s.className="cesium-cesiumInspector-performanceDisplay",m.appendChild(s);var C=document.createElement("div");C.className="cesium-cesiumInspector-shaderCache",C.setAttribute("data-bind","html: shaderCacheText"),m.appendChild(C);var w=document.createElement("div");m.appendChild(w);var S=document.createElement("input");S.type="checkbox",S.setAttribute("data-bind","checked: globeDepth, click: showGlobeDepth"),w.appendChild(S),w.appendChild(document.createTextNode("Show globe depth"));var E=document.createElement("div");w.appendChild(E);var b=document.createElement("div");m.appendChild(b);var x=document.createElement("input");x.type="checkbox",x.setAttribute("data-bind","checked: pickDepth, click: showPickDepth"),b.appendChild(x),b.appendChild(document.createTextNode("Show pick depth"));var T=document.createElement("div");m.appendChild(T);var P=document.createElement("span");P.setAttribute("data-bind",'html: "     Frustum:"'),T.appendChild(P);var A=document.createElement("span");A.setAttribute("data-bind","text: depthFrustumText"),T.appendChild(A);var D=document.createElement("input");D.type="button",D.value="-",D.className="cesium-cesiumInspector-pickButton",D.setAttribute("data-bind","click: decrementDepthFrustum"),T.appendChild(D);var M=document.createElement("input");M.type="button",M.value="+",M.className="cesium-cesiumInspector-pickButton",M.setAttribute("data-bind","click: incrementDepthFrustum"),T.appendChild(M);var I=document.createElement("div");I.className="cesium-cesiumInspector-sectionHeader",p=document.createElement("span"),p.className="cesium-cesiumInspector-toggleSwitch",p.setAttribute("data-bind","click: togglePrimitives, text: primitivesSwitchText"),I.appendChild(p),I.appendChild(document.createTextNode("Primitives")),h.appendChild(I);var O=document.createElement("div");O.className="cesium-cesiumInspector-section",O.setAttribute("data-bind",'css: {"cesium-cesiumInspector-show" : primitivesVisible, "cesium-cesiumInspector-hide" : !primitivesVisible}'),h.appendChild(O);var R=document.createElement("div");R.className="cesium-cesiumInspector-pickSection",O.appendChild(R);var L=document.createElement("input");L.type="button",L.value="Pick a primitive",L.className="cesium-cesiumInspector-pickButton",L.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickPrimitiveActive}, click: pickPrimitive');var N=document.createElement("div");N.className="cesium-cesiumInspector-center",N.appendChild(L),R.appendChild(N);var F=document.createElement("div");R.appendChild(F);var B=document.createElement("input");B.type="checkbox",B.setAttribute("data-bind","checked: primitiveBoundingSphere, click: showPrimitiveBoundingSphere, enable: hasPickedPrimitive"),F.appendChild(B),F.appendChild(document.createTextNode("Show bounding sphere"));var z=document.createElement("div");R.appendChild(z);var k=document.createElement("input");k.type="checkbox",k.setAttribute("data-bind","checked: primitiveReferenceFrame, click: showPrimitiveReferenceFrame, enable: hasPickedPrimitive"),z.appendChild(k),z.appendChild(document.createTextNode("Show reference frame"));var V=document.createElement("div");this._primitiveOnly=V,R.appendChild(V);var U=document.createElement("input");U.type="checkbox",U.setAttribute("data-bind","checked: filterPrimitive, click: doFilterPrimitive, enable: hasPickedPrimitive"),V.appendChild(U),V.appendChild(document.createTextNode("Show only selected"));var W=document.createElement("div");W.className="cesium-cesiumInspector-sectionHeader",p=document.createElement("span"),p.className="cesium-cesiumInspector-toggleSwitch",p.setAttribute("data-bind","click: toggleTerrain, text: terrainSwitchText"),W.appendChild(p),W.appendChild(document.createTextNode("Terrain")),h.appendChild(W);var G=document.createElement("div");G.className="cesium-cesiumInspector-section",G.setAttribute("data-bind",'css: {"cesium-cesiumInspector-show" : terrainVisible, "cesium-cesiumInspector-hide" : !terrainVisible}'),h.appendChild(G);var H=document.createElement("div");H.className="cesium-cesiumInspector-pickSection",G.appendChild(H);var q=document.createElement("input");q.type="button",q.value="Pick a tile",q.className="cesium-cesiumInspector-pickButton",q.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickTileActive}, click: pickTile'),N=document.createElement("div"),N.appendChild(q),N.className="cesium-cesiumInspector-center",H.appendChild(N);var j=document.createElement("div");H.appendChild(j);var Y=document.createElement("input");Y.type="button",Y.value="Parent",Y.className="cesium-cesiumInspector-pickButton",Y.setAttribute("data-bind","click: selectParent");var X=document.createElement("input");X.type="button",X.value="NW",X.className="cesium-cesiumInspector-pickButton",X.setAttribute("data-bind","click: selectNW");var Z=document.createElement("input");Z.type="button",Z.value="NE",Z.className="cesium-cesiumInspector-pickButton",Z.setAttribute("data-bind","click: selectNE");var J=document.createElement("input");J.type="button",J.value="SW",J.className="cesium-cesiumInspector-pickButton",J.setAttribute("data-bind","click: selectSW");var Q=document.createElement("input");Q.type="button",Q.value="SE",Q.className="cesium-cesiumInspector-pickButton",Q.setAttribute("data-bind","click: selectSE");var K=document.createElement("div");K.className="cesium-cesiumInspector-tileText",j.className="cesium-cesiumInspector-frustumStats",j.appendChild(K),j.setAttribute("data-bind",'css: {"cesium-cesiumInspector-show" : hasPickedTile, "cesium-cesiumInspector-hide" : !hasPickedTile}'),K.setAttribute("data-bind","html: tileText");var $=document.createElement("div");$.className="cesium-cesiumInspector-relativeText",$.textContent="Select relative:",j.appendChild($);var et=document.createElement("table"),tt=document.createElement("tr"),it=document.createElement("tr"),rt=document.createElement("td");rt.appendChild(Y);var nt=document.createElement("td");nt.appendChild(X);var ot=document.createElement("td");ot.appendChild(Z),tt.appendChild(rt),tt.appendChild(nt),tt.appendChild(ot);var at=document.createElement("td"),st=document.createElement("td");st.appendChild(J);var lt=document.createElement("td");lt.appendChild(Q),it.appendChild(at),it.appendChild(st),it.appendChild(lt),et.appendChild(tt),et.appendChild(it),j.appendChild(et);var ut=document.createElement("div");H.appendChild(ut);var ct=document.createElement("input");ct.type="checkbox",ct.setAttribute("data-bind","checked: tileBoundingSphere, enable: hasPickedTile, click: showTileBoundingSphere"),ut.appendChild(ct),ut.appendChild(document.createTextNode("Show bounding volume"));var ht=document.createElement("div");H.appendChild(ht);var dt=document.createElement("input");dt.type="checkbox",dt.setAttribute("data-bind","checked: filterTile, enable: hasPickedTile, click: doFilterTile"),ht.appendChild(dt),ht.appendChild(document.createTextNode("Show only selected"));var pt=document.createElement("div");G.appendChild(pt);var mt=document.createElement("input");mt.type="checkbox",mt.setAttribute("data-bind","checked: wireframe, click: showWireframe"),pt.appendChild(mt),pt.appendChild(document.createTextNode("Wireframe"));var ft=document.createElement("div");G.appendChild(ft);var vt=document.createElement("input");vt.type="checkbox",vt.setAttribute("data-bind","checked: suspendUpdates, click: doSuspendUpdates"),ft.appendChild(vt),ft.appendChild(document.createTextNode("Suspend LOD update"));var gt=document.createElement("div");G.appendChild(gt);var _t=document.createElement("input");_t.type="checkbox",_t.setAttribute("data-bind","checked: tileCoordinates, click: showTileCoordinates"),gt.appendChild(_t),gt.appendChild(document.createTextNode("Show tile coordinates")),n.applyBindings(l,this._element)};return t(s.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}}),s.prototype.isDestroyed=function(){return!1},s.prototype.destroy=function(){return n.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),i(this)},s}),i("Widgets/CesiumWidget/CesiumWidget",["../../Core/buildModuleUrl","../../Core/Cartesian3","../../Core/Clock","../../Core/Credit","../../Core/defaultValue","../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../Core/Ellipsoid","../../Core/formatError","../../Core/requestAnimationFrame","../../Core/ScreenSpaceEventHandler","../../Scene/BingMapsImageryProvider","../../Scene/Globe","../../Scene/Moon","../../Scene/Scene","../../Scene/SceneMode","../../Scene/SkyAtmosphere","../../Scene/SkyBox","../../Scene/Sun","../getElement"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w){"use strict";function S(t){return e("Assets/Textures/SkyBox/tycho2t3_80_"+t+".jpg")}function E(e){function t(r){if(!e.isDestroyed())if(e._useDefaultRenderLoop)try{var n=e._targetFrameRate;if(o(n)){var a=1e3/n,s=r-i;s>a&&(e.resize(),e.render(),i=r-s%a),h(t)}else e.resize(),e.render(),h(t)}catch(l){if(e._useDefaultRenderLoop=!1,e._renderLoopRunning=!1,e._showRenderLoopErrors){var u="An error occurred while rendering. Rendering has stopped.";e.showErrorPanel(u,void 0,l)}}else e._renderLoopRunning=!1}e._renderLoopRunning=!0;var i=0;h(t)}function b(e){var t=e._canvas,i=t.clientWidth,r=t.clientHeight,o=n(window.devicePixelRatio,1)*e._resolutionScale;e._canvasWidth=i,e._canvasHeight=r,i*=o,r*=o,t.width=i,t.height=r,e._canRender=0!==i&&0!==r}function x(e){var t=e._canvas,i=t.width,r=t.height;if(0!==i&&0!==r){var n=e._scene.camera.frustum;o(n.aspectRatio)?n.aspectRatio=i/r:(n.top=n.right*(r/i),n.bottom=-n.top)}}var T="data:image/png;base64,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",P=function(e,a){e=w(e),a=n(a,{});var s=document.createElement("div");s.className="cesium-widget",e.appendChild(s);var l=document.createElement("canvas");l.oncontextmenu=function(){return!1},l.onselectstart=function(){return!1},s.appendChild(l);var c=document.createElement("div");c.className="cesium-widget-credits";var h=o(a.creditContainer)?w(a.creditContainer):s;h.appendChild(c);var E=n(a.showRenderLoopErrors,!0);this._element=s,this._container=e,this._canvas=l,this._canvasWidth=0,this._canvasHeight=0,this._creditContainer=c,this._canRender=!1,this._renderLoopRunning=!1,this._showRenderLoopErrors=E,this._resolutionScale=1,this._forceResize=!1,this._clock=o(a.clock)?a.clock:new i,b(this);try{var P=new v({canvas:l,contextOptions:a.contextOptions,creditContainer:c,mapProjection:a.mapProjection,orderIndependentTranslucency:a.orderIndependentTranslucency,scene3DOnly:n(a.scene3DOnly,!1)});this._scene=P,P.camera.constrainedAxis=t.UNIT_Z,x(this);var A=n(P.mapProjection.ellipsoid,u.WGS84),D=P.frameState.creditDisplay,M=new r("Cesium",T,"http://cesiumjs.org/");D.addDefaultCredit(M);var I=a.globe;o(I)||(I=new m(A)),I!==!1&&(P.globe=I);var O=a.skyBox;o(O)||(O=new y({sources:{positiveX:S("px"),negativeX:S("mx"),positiveY:S("py"),negativeY:S("my"),positiveZ:S("pz"),negativeZ:S("mz")}})),O!==!1&&(P.skyBox=O,P.sun=new C,P.moon=new f);var R=a.skyAtmosphere;o(R)||(R=new _(A)),R!==!1&&(P.skyAtmosphere=R); +var L=a.globe===!1?!1:a.imageryProvider;o(L)||(L=new p({url:"//dev.virtualearth.net"})),L!==!1&&P.imageryLayers.addImageryProvider(L),o(a.terrainProvider)&&a.globe!==!1&&(P.terrainProvider=a.terrainProvider),this._screenSpaceEventHandler=new d(l,!1),o(a.sceneMode)&&(a.sceneMode===g.SCENE2D&&this._scene.morphTo2D(0),a.sceneMode===g.COLUMBUS_VIEW&&this._scene.morphToColumbusView(0)),this._useDefaultRenderLoop=void 0,this.useDefaultRenderLoop=n(a.useDefaultRenderLoop,!0),this._targetFrameRate=void 0,this.targetFrameRate=a.targetFrameRate;var N=this;P.renderError.addEventListener(function(e,t){if(N._useDefaultRenderLoop=!1,N._renderLoopRunning=!1,N._showRenderLoopErrors){var i="An error occurred while rendering. Rendering has stopped.";N.showErrorPanel(i,void 0,t)}})}catch(F){if(E){var B="Error constructing CesiumWidget.",z='Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:';this.showErrorPanel(B,z,F)}throw F}};return a(P.prototype,{container:{get:function(){return this._container}},canvas:{get:function(){return this._canvas}},creditContainer:{get:function(){return this._creditContainer}},scene:{get:function(){return this._scene}},imageryLayers:{get:function(){return this._scene.imageryLayers}},terrainProvider:{get:function(){return this._scene.terrainProvider},set:function(e){this._scene.terrainProvider=e}},camera:{get:function(){return this._scene.camera}},clock:{get:function(){return this._clock}},screenSpaceEventHandler:{get:function(){return this._screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._targetFrameRate},set:function(e){if(0>=e)throw new l("targetFrameRate must be greater than 0.");this._targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._useDefaultRenderLoop},set:function(e){this._useDefaultRenderLoop!==e&&(this._useDefaultRenderLoop=e,e&&!this._renderLoopRunning&&E(this))}},resolutionScale:{get:function(){return this._resolutionScale},set:function(e){if(0>=e)throw new l("resolutionScale must be greater than 0.");this._resolutionScale=e,this._forceResize=!0}}}),P.prototype.showErrorPanel=function(e,t,i){var r=this._element,n=document.createElement("div");n.className="cesium-widget-errorPanel";var a=document.createElement("div");a.className="cesium-widget-errorPanel-content",n.appendChild(a);var s=document.createElement("div");s.className="cesium-widget-errorPanel-header",s.appendChild(document.createTextNode(e)),a.appendChild(s);var l=document.createElement("div");l.className="cesium-widget-errorPanel-scroll",a.appendChild(l);var u=function(){l.style.maxHeight=Math.max(Math.round(.9*r.clientHeight-100),30)+"px"};if(u(),o(window.addEventListener)&&window.addEventListener("resize",u,!1),o(t)){var h=document.createElement("div");h.className="cesium-widget-errorPanel-message",h.innerHTML="<p>"+t+"</p>",l.appendChild(h)}var d="(no error details available)";o(i)&&(d=c(i));var p=document.createElement("div");p.className="cesium-widget-errorPanel-message",p.appendChild(document.createTextNode(d)),l.appendChild(p);var m=document.createElement("div");m.className="cesium-widget-errorPanel-buttonPanel",a.appendChild(m);var f=document.createElement("button");f.setAttribute("type","button"),f.className="cesium-button",f.appendChild(document.createTextNode("OK")),f.onclick=function(){o(u)&&o(window.removeEventListener)&&window.removeEventListener("resize",u,!1),r.removeChild(n)},m.appendChild(f),r.appendChild(n),console.error(e+"\n"+t+"\n"+d)},P.prototype.isDestroyed=function(){return!1},P.prototype.destroy=function(){this._scene=this._scene&&this._scene.destroy(),this._container.removeChild(this._element),s(this)},P.prototype.resize=function(){var e=this._canvas,t=e.clientWidth,i=e.clientHeight;(this._forceResize||this._canvasWidth!==t||this._canvasHeight!==i)&&(this._forceResize=!1,b(this),x(this))},P.prototype.render=function(){if(this._canRender){this._scene.initializeFrame();var e=this._clock.tick();this._scene.render(e)}else this._clock.tick()},P}),i("Widgets/ClockViewModel",["../Core/Clock","../Core/defined","../Core/defineProperties","../Core/destroyObject","../Core/EventHelper","../Core/JulianDate","../ThirdParty/knockout"],function(e,t,i,r,n,o,a){"use strict";var s=function(i){t(i)||(i=new e),this._clock=i,this._eventHelper=new n,this._eventHelper.add(i.onTick,this.synchronize,this);var r=a.observable(i.startTime);r.equalityComparer=o.equals,this.systemTime=a.observable(o.now()),this.systemTime.equalityComparer=o.equals,a.track(this,["systemTime"]),this.startTime=void 0,a.defineProperty(this,"startTime",{get:r,set:function(e){r(e),i.startTime=e}});var s=a.observable(i.stopTime);s.equalityComparer=o.equals,this.stopTime=void 0,a.defineProperty(this,"stopTime",{get:s,set:function(e){i.stopTime=e,s(e)}});var l=a.observable(i.currentTime);l.equalityComparer=o.equals,this.currentTime=void 0,a.defineProperty(this,"currentTime",{get:l,set:function(e){i.currentTime=e,l(e)}});var u=a.observable(i.multiplier);this.multiplier=void 0,a.defineProperty(this,"multiplier",{get:u,set:function(e){i.multiplier=e,u(e)}});var c=a.observable(i.clockStep);c.equalityComparer=function(e,t){return e===t},this.clockStep=void 0,a.defineProperty(this,"clockStep",{get:c,set:function(e){c(e),i.clockStep=e}});var h=a.observable(i.clockRange);h.equalityComparer=function(e,t){return e===t},this.clockRange=void 0,a.defineProperty(this,"clockRange",{get:h,set:function(e){h(e),i.clockRange=e}});var d=a.observable(i.canAnimate);this.canAnimate=void 0,a.defineProperty(this,"canAnimate",{get:d,set:function(e){d(e),i.canAnimate=e}});var p=a.observable(i.shouldAnimate);this.shouldAnimate=void 0,a.defineProperty(this,"shouldAnimate",{get:p,set:function(e){p(e),i.shouldAnimate=e}})};return i(s.prototype,{clock:{get:function(){return this._clock}}}),s.prototype.synchronize=function(){var e=this._clock,t=e.startTime,i=e.stopTime,r=e.currentTime,n=e.multiplier,a=e.clockStep,s=e.clockRange,l=e.canAnimate,u=e.shouldAnimate;this.systemTime=o.now(),this.startTime=t,this.stopTime=i,this.currentTime=r,this.multiplier=n,this.clockStep=a,this.clockRange=s,this.canAnimate=l,this.shouldAnimate=u},s.prototype.isDestroyed=function(){return!1},s.prototype.destroy=function(){this._eventHelper.removeAll(),r(this)},s}),i("Widgets/Command",["../Core/DeveloperError"],function(e){"use strict";var t=function(){this.canExecute=void 0,this.beforeExecute=void 0,this.afterExecute=void 0,e.throwInstantiationError()};return t}),i("Widgets/FullscreenButton/FullscreenButtonViewModel",["../../Core/defaultValue","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../Core/Fullscreen","../../ThirdParty/knockout","../createCommand","../getElement"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(t){var i=this,r=o.observable(n.fullscreen),l=o.observable(n.enabled);this.isFullscreen=void 0,o.defineProperty(this,"isFullscreen",{get:function(){return r()}}),this.isFullscreenEnabled=void 0,o.defineProperty(this,"isFullscreenEnabled",{get:function(){return l()},set:function(e){l(e&&n.enabled)}}),this.tooltip=void 0,o.defineProperty(this,"tooltip",function(){return this.isFullscreenEnabled?r()?"Exit full screen":"Full screen":"Full screen unavailable"}),this._command=a(function(){n.fullscreen?n.exitFullscreen():n.requestFullscreen(i._fullscreenElement)},o.getObservable(this,"isFullscreenEnabled")),this._fullscreenElement=e(s(t),document.body),this._callback=function(){r(n.fullscreen)},document.addEventListener(n.changeEventName,this._callback)};return t(l.prototype,{fullscreenElement:{get:function(){return this._fullscreenElement},set:function(e){this._fullscreenElement=e}},command:{get:function(){return this._command}}}),l.prototype.isDestroyed=function(){return!1},l.prototype.destroy=function(){document.removeEventListener(n.changeEventName,this._callback),i(this)},l}),i("Widgets/FullscreenButton/FullscreenButton",["../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../ThirdParty/knockout","../getElement","./FullscreenButtonViewModel"],function(e,t,i,r,n,o,a){"use strict";var s="M 83.96875 17.5625 L 83.96875 17.59375 L 76.65625 24.875 L 97.09375 24.96875 L 76.09375 45.96875 L 81.9375 51.8125 L 102.78125 30.9375 L 102.875 51.15625 L 110.15625 43.875 L 110.1875 17.59375 L 83.96875 17.5625 z M 44.125 17.59375 L 17.90625 17.625 L 17.9375 43.90625 L 25.21875 51.1875 L 25.3125 30.96875 L 46.15625 51.8125 L 52 45.96875 L 31 25 L 51.4375 24.90625 L 44.125 17.59375 z M 46.0625 76.03125 L 25.1875 96.875 L 25.09375 76.65625 L 17.8125 83.9375 L 17.8125 110.21875 L 44 110.25 L 51.3125 102.9375 L 30.90625 102.84375 L 51.875 81.875 L 46.0625 76.03125 z M 82 76.15625 L 76.15625 82 L 97.15625 103 L 76.71875 103.0625 L 84.03125 110.375 L 110.25 110.34375 L 110.21875 84.0625 L 102.9375 76.8125 L 102.84375 97 L 82 76.15625 z",l="M 104.34375 17.5625 L 83.5 38.4375 L 83.40625 18.21875 L 76.125 25.5 L 76.09375 51.78125 L 102.3125 51.8125 L 102.3125 51.78125 L 109.625 44.5 L 89.1875 44.40625 L 110.1875 23.40625 L 104.34375 17.5625 z M 23.75 17.59375 L 17.90625 23.4375 L 38.90625 44.4375 L 18.5 44.53125 L 25.78125 51.8125 L 52 51.78125 L 51.96875 25.53125 L 44.6875 18.25 L 44.625 38.46875 L 23.75 17.59375 z M 25.6875 76.03125 L 18.375 83.3125 L 38.78125 83.40625 L 17.8125 104.40625 L 23.625 110.25 L 44.5 89.375 L 44.59375 109.59375 L 51.875 102.3125 L 51.875 76.0625 L 25.6875 76.03125 z M 102.375 76.15625 L 76.15625 76.1875 L 76.1875 102.4375 L 83.46875 109.71875 L 83.5625 89.53125 L 104.40625 110.375 L 110.25 104.53125 L 89.25 83.53125 L 109.6875 83.46875 L 102.375 76.15625 z",u=function(e,t){e=o(e);var i=new a(t);i._exitFullScreenPath=l,i._enterFullScreenPath=s;var r=document.createElement("button");r.type="button",r.className="cesium-button cesium-fullscreenButton",r.setAttribute("data-bind","attr: { title: tooltip },click: command,enable: isFullscreenEnabled,cesiumSvgPath: { path: isFullscreen ? _exitFullScreenPath : _enterFullScreenPath, width: 128, height: 128 }"),e.appendChild(r),n.applyBindings(i,r),this._container=e,this._viewModel=i,this._element=r};return t(u.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}}),u.prototype.isDestroyed=function(){return!1},u.prototype.destroy=function(){return this._viewModel.destroy(),n.cleanNode(this._element),this._container.removeChild(this._element),i(this)},u}),i("Widgets/Geocoder/GeocoderViewModel",["../../Core/BingMapsApi","../../Core/Cartesian3","../../Core/defaultValue","../../Core/defined","../../Core/defineProperties","../../Core/DeveloperError","../../Core/Event","../../Core/jsonp","../../Core/Matrix4","../../Core/Rectangle","../../ThirdParty/knockout","../../ThirdParty/when","../createCommand"],function(e,t,i,r,n,o,a,s,l,u,c,h,d){"use strict";function p(e,t){0===e._flightDuration?(e._scene.camera.setView({position:t}),e._complete.raiseEvent()):e._scene.camera.flyTo({destination:t,complete:function(){e._complete.raiseEvent()},duration:e._flightDuration,endTransform:l.IDENTITY,convert:!1})}function m(e){var i=e.searchText;if(!/^\s*$/.test(i)){var n=i.match(/[^\s,\n]+/g);if(2===n.length||3===n.length){var o=+n[0],a=+n[1],l=3===n.length?+n[2]:300;if(!isNaN(o)&&!isNaN(a)&&!isNaN(l))return p(e,t.fromDegrees(o,a,l)),void 0}e._isSearchInProgress=!0;var c=s(e._url+"REST/v1/Locations",{parameters:{query:i,key:e._key},callbackParameterName:"jsonp"}),d=e._geocodeInProgress=h(c,function(t){if(!d.cancel){if(e._isSearchInProgress=!1,0===t.resourceSets.length)return e.searchText=e._searchText+" (not found)",void 0;var i=t.resourceSets[0];if(0===i.resources.length)return e.searchText=e._searchText+" (not found)",void 0;var n=i.resources[0];e._searchText=n.name;var o=n.bbox,a=o[0],s=o[1],l=o[2],c=o[3],h=u.fromDegrees(s,a,c,l),m=e._scene.camera,f=m.getRectangleCameraCoordinates(h);r(f)&&p(e,f)}},function(){d.cancel||(e._isSearchInProgress=!1,e.searchText=e._searchText+" (error)")})}}function f(e){e._isSearchInProgress=!1,r(e._geocodeInProgress)&&(e._geocodeInProgress.cancel=!0,e._geocodeInProgress=void 0)}var v=function(t){this._url=i(t.url,"//dev.virtualearth.net/"),this._url.length>0&&"/"!==this._url[this._url.length-1]&&(this._url+="/"),this._key=e.getKey(t.key),this._scene=t.scene,this._flightDuration=t.flightDuration,this._searchText="",this._isSearchInProgress=!1,this._geocodeInProgress=void 0,this._complete=new a;var r=this;this._searchCommand=d(function(){r.isSearchInProgress?f(r):m(r)}),c.track(this,["_searchText","_isSearchInProgress"]),this.isSearchInProgress=void 0,c.defineProperty(this,"isSearchInProgress",{get:function(){return this._isSearchInProgress}}),this.searchText=void 0,c.defineProperty(this,"searchText",{get:function(){return this.isSearchInProgress?"Searching...":this._searchText},set:function(e){this._searchText=e}}),this.flightDuration=void 0,c.defineProperty(this,"flightDuration",{get:function(){return this._flightDuration},set:function(e){this._flightDuration=e}})};return n(v.prototype,{url:{get:function(){return this._url}},key:{get:function(){return this._key}},complete:{get:function(){return this._complete}},scene:{get:function(){return this._scene}},search:{get:function(){return this._searchCommand}}}),v}),i("Widgets/Geocoder/Geocoder",["../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../Core/FeatureDetection","../../ThirdParty/knockout","../getElement","./GeocoderViewModel"],function(e,t,i,r,n,o,a,s){"use strict";var l="M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",u="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z",c=function(e){var t=a(e.container),i=new s(e);i._startSearchPath=l,i._stopSearchPath=u;var r=document.createElement("form");r.setAttribute("data-bind","submit: search");var c=document.createElement("input");c.type="search",c.className="cesium-geocoder-input",c.setAttribute("placeholder","Enter an address or landmark..."),c.setAttribute("data-bind",'value: searchText,valueUpdate: "afterkeydown",disable: isSearchInProgress,css: { "cesium-geocoder-input-wide" : searchText.length > 0 }'),r.appendChild(c);var h=document.createElement("span");h.className="cesium-geocoder-searchButton",h.setAttribute("data-bind","click: search,cesiumSvgPath: { path: isSearchInProgress ? _stopSearchPath : _startSearchPath, width: 32, height: 32 }"),r.appendChild(h),t.appendChild(r),o.applyBindings(i,r),this._container=t,this._viewModel=i,this._form=r,this._onInputBegin=function(e){t.contains(e.target)||c.blur()},this._onInputEnd=function(e){t.contains(e.target)&&c.focus()},n.supportsPointerEvents()?(document.addEventListener("pointerdown",this._onInputBegin,!0),document.addEventListener("pointerup",this._onInputEnd,!0)):(document.addEventListener("mousedown",this._onInputBegin,!0),document.addEventListener("mouseup",this._onInputEnd,!0),document.addEventListener("touchstart",this._onInputBegin,!0),document.addEventListener("touchend",this._onInputEnd,!0))};return t(c.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}}),c.prototype.isDestroyed=function(){return!1},c.prototype.destroy=function(){return n.supportsPointerEvents()?(document.removeEventListener("pointerdown",this._onInputBegin,!0),document.removeEventListener("pointerup",this._onInputEnd,!0)):(document.removeEventListener("mousedown",this._onInputBegin,!0),document.removeEventListener("mouseup",this._onInputEnd,!0),document.removeEventListener("touchstart",this._onInputBegin,!0),document.removeEventListener("touchend",this._onInputEnd,!0)),o.cleanNode(this._form),this._container.removeChild(this._form),i(this)},c}),i("Widgets/HomeButton/HomeButtonViewModel",["../../Core/Cartesian3","../../Core/defaultValue","../../Core/defined","../../Core/defineProperties","../../Core/DeveloperError","../../Core/Matrix4","../../Core/Rectangle","../../Scene/Camera","../../Scene/SceneMode","../../ThirdParty/knockout","../createCommand"],function(e,t,i,r,n,o,a,s,l,u,c){"use strict";function h(t,r){var n=t.mode;if(i(t)&&n===l.MORPHING&&t.completeMorph(),n===l.SCENE2D)t.camera.flyTo({destination:a.MAX_VALUE,duration:r,endTransform:o.IDENTITY});else if(n===l.SCENE3D){var u=t.camera.getRectangleCameraCoordinates(s.DEFAULT_VIEW_RECTANGLE),c=e.magnitude(u);c+=c*s.DEFAULT_VIEW_FACTOR,e.normalize(u,u),e.multiplyByScalar(u,c,u),t.camera.flyTo({destination:u,orientation:{heading:0,pitch:.5*-Math.PI,roll:0},duration:r,endTransform:o.IDENTITY})}else if(n===l.COLUMBUS_VIEW){var h=t.globe.ellipsoid.maximumRadius,d=new e(0,-1,1);d=e.multiplyByScalar(e.normalize(d,d),5*h,d);var p=-Math.acos(e.normalize(d,new e).z);t.camera.flyTo({destination:d,duration:r,orientation:{heading:0,pitch:p,roll:0},endTransform:o.IDENTITY,convert:!1})}}var d=function(e,t){this._scene=e,this._duration=t;var i=this;this._command=c(function(){h(i._scene,i._duration)}),this.tooltip="View Home",u.track(this,["tooltip"])};return r(d.prototype,{scene:{get:function(){return this._scene}},command:{get:function(){return this._command}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}}}),d}),i("Widgets/HomeButton/HomeButton",["../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../ThirdParty/knockout","../getElement","./HomeButtonViewModel"],function(e,t,i,r,n,o,a){"use strict";var s=function(e,t,i){e=o(e);var r=new a(t,i);r._svgPath="M14,4l-10,8.75h20l-4.25-3.7188v-4.6562h-2.812v2.1875l-2.938-2.5625zm-7.0938,9.906v10.094h14.094v-10.094h-14.094zm2.1876,2.313h3.3122v4.25h-3.3122v-4.25zm5.8442,1.281h3.406v6.438h-3.406v-6.438z";var s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-home-button",s.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 28, height: 28 }"),e.appendChild(s),n.applyBindings(r,s),this._container=e,this._viewModel=r,this._element=s};return t(s.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}}),s.prototype.isDestroyed=function(){return!1},s.prototype.destroy=function(){return n.cleanNode(this._element),this._container.removeChild(this._element),i(this)},s}),i("Widgets/InfoBox/InfoBoxViewModel",["../../Core/defined","../../Core/defineProperties","../../Core/Event","../../ThirdParty/knockout"],function(e,t,i,r){"use strict";var n="M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4853444 22.104033 11.423165 24.0625 13.84375 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 8.975298 28.305952 7.03125 25.875 7.03125 L 13.84375 7.03125 z",o="M 27.34375 1.65625 L 5.28125 27.9375 L 8.09375 30.3125 L 30.15625 4.03125 L 27.34375 1.65625 z M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4724893 20.232036 9.5676108 20.7379 9.75 21.21875 L 21.65625 7.03125 L 13.84375 7.03125 z M 28.21875 7.71875 L 14.53125 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 9.8371439 29.456025 8.4902779 28.21875 7.71875 z",a=function(){this._cameraClicked=new i,this._closeClicked=new i,this.maxHeight=500,this.enableCamera=!1,this.isCameraTracking=!1,this.showInfo=!1,this.titleText="",this.description="",r.track(this,["showInfo","titleText","description","maxHeight","enableCamera","isCameraTracking"]),this._loadingIndicatorHtml='<div class="cesium-infoBox-loadingContainer"><span class="cesium-infoBox-loading"></span></div>',this.cameraIconPath=void 0,r.defineProperty(this,"cameraIconPath",{get:function(){return!this.enableCamera||this.isCameraTracking?o:n}}),r.defineProperty(this,"_bodyless",{get:function(){return!e(this.description)||0===this.description.length}})};return a.prototype.maxHeightOffset=function(e){return this.maxHeight-e+"px"},t(a.prototype,{cameraClicked:{get:function(){return this._cameraClicked}},closeClicked:{get:function(){return this._closeClicked}}}),a}),i("Widgets/InfoBox/InfoBox",["../../Core/buildModuleUrl","../../Core/Color","../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../ThirdParty/knockout","../getElement","../subscribeAndEvaluate","./InfoBoxViewModel"],function(e,t,i,r,n,o,a,s,l,u){"use strict";var c=function(r){r=s(r);var n=document.createElement("div");n.className="cesium-infoBox",n.setAttribute("data-bind",'css: { "cesium-infoBox-visible" : showInfo, "cesium-infoBox-bodyless" : _bodyless }'),r.appendChild(n);var o=document.createElement("div");o.className="cesium-infoBox-title",o.setAttribute("data-bind","text: titleText"),n.appendChild(o);var c=document.createElement("button");c.type="button",c.className="cesium-button cesium-infoBox-camera",c.setAttribute("data-bind",'attr: { title: "Focus camera on object" },click: function () { cameraClicked.raiseEvent(this); },enable: enableCamera,cesiumSvgPath: { path: cameraIconPath, width: 32, height: 32 }'),n.appendChild(c);var h=document.createElement("button");h.type="button",h.className="cesium-infoBox-close",h.setAttribute("data-bind","click: function () { closeClicked.raiseEvent(this); }"),h.innerHTML="×",n.appendChild(h);var d=document.createElement("iframe");d.className="cesium-infoBox-iframe",d.setAttribute("sandbox","allow-same-origin allow-popups allow-forms"),d.setAttribute("data-bind","style : { maxHeight : maxHeightOffset(40) }"),d.setAttribute("allowfullscreen",!0),n.appendChild(d);var p=new u;a.applyBindings(p,n),this._container=r,this._element=n,this._frame=d,this._viewModel=p,this._descriptionSubscription=void 0;var m=this;d.addEventListener("load",function(){var r=d.contentDocument,o=r.createElement("link");o.href=e("Widgets/InfoBox/InfoBoxDescription.css"),o.rel="stylesheet",o.type="text/css";var a=r.createElement("div");a.className="cesium-infoBox-description",r.head.appendChild(o),r.body.appendChild(a),m._descriptionSubscription=l(p,"description",function(e){d.style.height="5px",a.innerHTML=e;var r=null,o=a.firstElementChild;if(null!==o&&1===a.childNodes.length){var s=window.getComputedStyle(o);if(null!==s){var l=s["background-color"],u=t.fromCssColorString(l);i(u)&&0!==u.alpha&&(r=s["background-color"])}}n.style["background-color"]=r;var c=a.getBoundingClientRect().height;d.style.height=c+"px"})}),d.setAttribute("src","about:blank")};return r(c.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}},frame:{get:function(){return this._frame}}}),c.prototype.isDestroyed=function(){return!1},c.prototype.destroy=function(){var e=this._container;return a.cleanNode(this._element),e.removeChild(this._element),i(this._descriptionSubscription)&&this._descriptionSubscription.dispose(),n(this)},c}),i("Widgets/NavigationHelpButton/NavigationHelpButtonViewModel",["../../Core/defineProperties","../../ThirdParty/knockout","../createCommand"],function(e,t,i){"use strict";var r=function(){this.showInstructions=!1;var e=this;this._command=i(function(){e.showInstructions=!e.showInstructions}),this._showClick=i(function(){e._touch=!1}),this._showTouch=i(function(){e._touch=!0}),this._touch=!1,this.tooltip="Navigation Instructions",t.track(this,["tooltip","showInstructions","_touch"])};return e(r.prototype,{command:{get:function(){return this._command}},showClick:{get:function(){return this._showClick}},showTouch:{get:function(){return this._showTouch}}}),r}),i("Widgets/NavigationHelpButton/NavigationHelpButton",["../../Core/buildModuleUrl","../../Core/defaultValue","../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../Core/FeatureDetection","../../ThirdParty/knockout","../getElement","./NavigationHelpButtonViewModel"],function(e,t,i,r,n,o,a,s,l,u){"use strict";var c=function(i){var r=l(i.container),n=new u,o=t(i.instructionsInitiallyVisible,!1);n.showInstructions=o,n._svgPath="M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z";var c=document.createElement("span");c.className="cesium-navigationHelpButton-wrapper",r.appendChild(c);var h=document.createElement("button");h.type="button",h.className="cesium-button cesium-toolbar-button cesium-navigation-help-button",h.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 32, height: 32 }"),c.appendChild(h);var d=document.createElement("div");d.className="cesium-navigation-help",d.setAttribute("data-bind",'css: { "cesium-navigation-help-visible" : showInstructions}'),c.appendChild(d);var p=document.createElement("button");p.className="cesium-navigation-button cesium-navigation-button-left",p.setAttribute("data-bind",'click: showClick, css: {"cesium-navigation-button-selected": !_touch, "cesium-navigation-button-unselected": _touch}');var m=document.createElement("img");m.src=e("Widgets/Images/NavigationHelp/Mouse.svg"),m.className="cesium-navigation-button-icon",m.style.width="25px",m.style.height="25px",p.appendChild(m),p.appendChild(document.createTextNode("Mouse"));var f=document.createElement("button");f.className="cesium-navigation-button cesium-navigation-button-right",f.setAttribute("data-bind",'click: showTouch, css: {"cesium-navigation-button-selected": _touch, "cesium-navigation-button-unselected": !_touch}');var v=document.createElement("img");v.src=e("Widgets/Images/NavigationHelp/Touch.svg"),v.className="cesium-navigation-button-icon",v.style.width="25px",v.style.height="25px",f.appendChild(v),f.appendChild(document.createTextNode("Touch")),d.appendChild(p),d.appendChild(f);var g=document.createElement("div");g.className="cesium-click-navigation-help cesium-navigation-help-instructions",g.setAttribute("data-bind",'css: { "cesium-click-navigation-help-visible" : !_touch}'),g.innerHTML=' <table> <tr> <td><img src="'+e("Widgets/Images/NavigationHelp/MouseLeft.svg")+'" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">Left click + drag</div> </td> </tr> <tr> <td><img src="'+e("Widgets/Images/NavigationHelp/MouseRight.svg")+'" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Right click + drag, or</div> <div class="cesium-navigation-help-details">Mouse wheel scroll</div> </td> </tr> <tr> <td><img src="'+e("Widgets/Images/NavigationHelp/MouseMiddle.svg")+'" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Rotate view</div> <div class="cesium-navigation-help-details">Middle click + drag, or</div> <div class="cesium-navigation-help-details">CTRL + Left click + drag</div> </td> </tr> </table>',d.appendChild(g);var _=document.createElement("div");_.className="cesium-touch-navigation-help cesium-navigation-help-instructions",_.setAttribute("data-bind",'css: { "cesium-touch-navigation-help-visible" : _touch}'),_.innerHTML=' <table> <tr> <td><img src="'+e("Widgets/Images/NavigationHelp/TouchDrag.svg")+'" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">One finger drag</div> </td> </tr> <tr> <td><img src="'+e("Widgets/Images/NavigationHelp/TouchZoom.svg")+'" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Two finger pinch</div> </td> </tr> <tr> <td><img src="'+e("Widgets/Images/NavigationHelp/TouchTilt.svg")+'" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Tilt view</div> <div class="cesium-navigation-help-details">Two finger drag, same direction</div> </td> </tr> <tr> <td><img src="'+e("Widgets/Images/NavigationHelp/TouchRotate.svg")+'" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-tilt">Rotate view</div> <div class="cesium-navigation-help-details">Two finger drag, opposite direction</div> </td> </tr> </table>',d.appendChild(_),s.applyBindings(n,c),this._container=r,this._viewModel=n,this._wrapper=c,this._closeInstructions=function(e){c.contains(e.target)||(n.showInstructions=!1)},a.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeInstructions,!0):(document.addEventListener("mousedown",this._closeInstructions,!0),document.addEventListener("touchstart",this._closeInstructions,!0))};return r(c.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}}),c.prototype.isDestroyed=function(){return!1},c.prototype.destroy=function(){return a.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeInstructions,!0):(document.removeEventListener("mousedown",this._closeInstructions,!0),document.removeEventListener("touchstart",this._closeInstructions,!0)),s.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),n(this)},c}),i("Widgets/PerformanceWatchdog/PerformanceWatchdogViewModel",["../../Core/defaultValue","../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../Scene/FrameRateMonitor","../../ThirdParty/knockout","../createCommand"],function(e,t,i,r,n,o,a,s){"use strict";var l=function(t){this._scene=t.scene,this.lowFrameRateMessage=e(t.lowFrameRateMessage,"This application appears to be performing poorly on your system. Please try using a different web browser or updating your video drivers."),this.lowFrameRateMessageDismissed=!1,this.showingLowFrameRateMessage=!1,a.track(this,["lowFrameRateMessage","lowFrameRateMessageDismissed","showingLowFrameRateMessage"]);var i=this;this._dismissMessage=s(function(){i.showingLowFrameRateMessage=!1,i.lowFrameRateMessageDismissed=!0});var r=o.fromScene(t.scene); +this._unsubscribeLowFrameRate=r.lowFrameRate.addEventListener(function(){i.lowFrameRateMessageDismissed||(i.showingLowFrameRateMessage=!0)}),this._unsubscribeNominalFrameRate=r.nominalFrameRate.addEventListener(function(){i.showingLowFrameRateMessage=!1})};return i(l.prototype,{scene:{get:function(){return this._scene}},dismissMessage:{get:function(){return this._dismissMessage}}}),l.prototype.destroy=function(){return this._unsubscribeLowFrameRate(),this._unsubscribeNominalFrameRate(),r(this)},l}),i("Widgets/PerformanceWatchdog/PerformanceWatchdog",["../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../ThirdParty/knockout","../getElement","./PerformanceWatchdogViewModel"],function(e,t,i,r,n,o,a){"use strict";var s=function(e){var t=o(e.container),i=new a(e),r=document.createElement("div");r.className="cesium-performance-watchdog-message-area",r.setAttribute("data-bind","visible: showingLowFrameRateMessage");var s=document.createElement("button");s.setAttribute("type","button"),s.className="cesium-performance-watchdog-message-dismiss",s.innerHTML="×",s.setAttribute("data-bind","click: dismissMessage"),r.appendChild(s);var l=document.createElement("div");l.className="cesium-performance-watchdog-message",l.setAttribute("data-bind","html: lowFrameRateMessage"),r.appendChild(l),t.appendChild(r),n.applyBindings(i,r),this._container=t,this._viewModel=i,this._element=r};return t(s.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}}),s.prototype.isDestroyed=function(){return!1},s.prototype.destroy=function(){return this._viewModel.destroy(),n.cleanNode(this._element),this._container.removeChild(this._element),i(this)},s}),i("Widgets/SceneModePicker/SceneModePickerViewModel",["../../Core/defaultValue","../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../Core/EventHelper","../../Scene/SceneMode","../../ThirdParty/knockout","../createCommand"],function(e,t,i,r,n,o,a,s,l){"use strict";var u=function(t,i){this._scene=t;var r=this,n=function(e,t,i){r.sceneMode=i,r.dropDownVisible=!1};this._eventHelper=new o,this._eventHelper.add(t.morphStart,n),this._duration=e(i,2),this.sceneMode=t.mode,this.dropDownVisible=!1,this.tooltip2D="2D",this.tooltip3D="3D",this.tooltipColumbusView="Columbus View",s.track(this,["sceneMode","dropDownVisible","tooltip2D","tooltip3D","tooltipColumbusView"]),this.selectedTooltip=void 0,s.defineProperty(this,"selectedTooltip",function(){var e=r.sceneMode;return e===a.SCENE2D?r.tooltip2D:e===a.SCENE3D?r.tooltip3D:r.tooltipColumbusView}),this._toggleDropDown=l(function(){r.dropDownVisible=!r.dropDownVisible}),this._morphTo2D=l(function(){t.morphTo2D(r._duration)}),this._morphTo3D=l(function(){t.morphTo3D(r._duration)}),this._morphToColumbusView=l(function(){t.morphToColumbusView(r._duration)}),this._sceneMode=a};return i(u.prototype,{scene:{get:function(){return this._scene}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}},toggleDropDown:{get:function(){return this._toggleDropDown}},morphTo2D:{get:function(){return this._morphTo2D}},morphTo3D:{get:function(){return this._morphTo3D}},morphToColumbusView:{get:function(){return this._morphToColumbusView}}}),u.prototype.isDestroyed=function(){return!1},u.prototype.destroy=function(){this._eventHelper.removeAll(),r(this)},u}),i("Widgets/SceneModePicker/SceneModePicker",["../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../Core/FeatureDetection","../../ThirdParty/knockout","../getElement","./SceneModePickerViewModel"],function(e,t,i,r,n,o,a,s){"use strict";var l="m 32.401392,4.9330437 c -7.087603,0 -14.096095,2.884602 -19.10793,7.8946843 -5.0118352,5.010083 -7.9296167,11.987468 -7.9296167,19.072999 0,7.085531 2.9177815,14.097848 7.9296167,19.107931 4.837653,4.835961 11.541408,7.631372 18.374354,7.82482 0.05712,0.01231 0.454119,0.139729 0.454119,0.139729 l 0.03493,-0.104797 c 0.08246,7.84e-4 0.162033,0.03493 0.244525,0.03493 0.08304,0 0.161515,-0.03414 0.244526,-0.03493 l 0.03493,0.104797 c 0,0 0.309474,-0.129487 0.349323,-0.139729 6.867765,-0.168094 13.582903,-2.965206 18.444218,-7.82482 2.558195,-2.5573 4.551081,-5.638134 5.903547,-8.977584 1.297191,-3.202966 2.02607,-6.661489 2.02607,-10.130347 0,-6.237309 -2.366261,-12.31219 -6.322734,-17.116794 -0.0034,-0.02316 0.0049,-0.04488 0,-0.06986 -0.01733,-0.08745 -0.104529,-0.278855 -0.104797,-0.279458 -5.31e-4,-0.0012 -0.522988,-0.628147 -0.523984,-0.62878 -3.47e-4,-2.2e-4 -0.133444,-0.03532 -0.244525,-0.06987 C 51.944299,13.447603 51.751076,13.104317 51.474391,12.827728 46.462556,7.8176457 39.488996,4.9330437 32.401392,4.9330437 z m -2.130866,3.5281554 0.104797,9.6762289 c -4.111695,-0.08361 -7.109829,-0.423664 -9.257041,-0.943171 1.198093,-2.269271 2.524531,-4.124404 3.91241,-5.414496 2.167498,-2.0147811 3.950145,-2.8540169 5.239834,-3.3185619 z m 2.794579,0 c 1.280302,0.4754953 3.022186,1.3285948 5.065173,3.2486979 1.424667,1.338973 2.788862,3.303645 3.982275,5.728886 -2.29082,0.403367 -5.381258,0.621049 -8.942651,0.698645 L 33.065105,8.4611991 z m 5.728886,0.2445256 c 4.004072,1.1230822 7.793098,3.1481363 10.724195,6.0782083 0.03468,0.03466 0.07033,0.06991 0.104797,0.104797 -0.45375,0.313891 -0.923054,0.663002 -1.956205,1.082899 -0.647388,0.263114 -1.906242,0.477396 -2.829511,0.733577 -1.382296,-2.988132 -3.027146,-5.368585 -4.785716,-7.0213781 -0.422866,-0.397432 -0.835818,-0.6453247 -1.25756,-0.9781032 z m -15.33525,0.7685092 c -0.106753,0.09503 -0.207753,0.145402 -0.31439,0.244526 -1.684973,1.5662541 -3.298068,3.8232211 -4.680919,6.5672591 -0.343797,-0.14942 -1.035052,-0.273198 -1.292493,-0.419186 -0.956528,-0.542427 -1.362964,-1.022024 -1.537018,-1.292493 -0.0241,-0.03745 -0.01868,-0.0401 -0.03493,-0.06986 2.250095,-2.163342 4.948824,-3.869984 7.859752,-5.0302421 z m -9.641296,7.0912431 c 0.464973,0.571618 0.937729,1.169056 1.956205,1.746612 0.349907,0.198425 1.107143,0.335404 1.537018,0.523983 -1.20166,3.172984 -1.998037,7.051901 -2.165798,11.772162 C 14.256557,30.361384 12.934823,30.161483 12.280427,29.90959 10.644437,29.279855 9.6888882,28.674891 9.1714586,28.267775 8.6540289,27.860658 8.6474751,27.778724 8.6474751,27.778724 l -0.069864,0.03493 C 9.3100294,23.691285 11.163248,19.798527 13.817445,16.565477 z m 37.552149,0.523984 c 2.548924,3.289983 4.265057,7.202594 4.890513,11.318043 -0.650428,0.410896 -1.756876,1.001936 -3.563088,1.606882 -1.171552,0.392383 -3.163859,0.759153 -4.960377,1.117832 -0.04367,-4.752703 -0.784809,-8.591423 -1.88634,-11.807094 0.917574,-0.263678 2.170552,-0.486495 2.864443,-0.76851 1.274693,-0.518066 2.003942,-1.001558 2.654849,-1.467153 z m -31.439008,2.619917 c 2.487341,0.672766 5.775813,1.137775 10.479669,1.222628 l 0.104797,10.689263 0,0.03493 0,0.733577 c -5.435005,-0.09059 -9.512219,-0.519044 -12.610536,-1.117831 0.106127,-4.776683 0.879334,-8.55791 2.02607,-11.562569 z m 23.264866,0.31439 c 1.073459,3.067541 1.833795,6.821314 1.816476,11.702298 -3.054474,0.423245 -7.062018,0.648559 -11.702298,0.698644 l 0,-0.838373 -0.104796,-10.654331 c 4.082416,-0.0864 7.404468,-0.403886 9.990618,-0.908238 z M 8.2632205,30.922625 c 0.7558676,0.510548 1.5529563,1.013339 3.0041715,1.57195 0.937518,0.360875 2.612202,0.647642 3.91241,0.978102 0.112814,3.85566 0.703989,7.107756 1.606883,9.920754 -1.147172,-0.324262 -2.644553,-0.640648 -3.423359,-0.978102 -1.516688,-0.657177 -2.386627,-1.287332 -2.864443,-1.71168 -0.477816,-0.424347 -0.489051,-0.489051 -0.489051,-0.489051 L 9.8002387,40.319395 C 8.791691,37.621767 8.1584238,34.769583 8.1584238,31.900727 c 0,-0.330153 0.090589,-0.648169 0.1047967,-0.978102 z m 48.2763445,0.419186 c 0.0047,0.188973 0.06986,0.36991 0.06986,0.558916 0,2.938869 -0.620228,5.873558 -1.676747,8.628261 -0.07435,0.07583 -0.06552,0.07411 -0.454119,0.349323 -0.606965,0.429857 -1.631665,1.042044 -3.318562,1.676747 -1.208528,0.454713 -3.204964,0.850894 -5.135038,1.25756 0.84593,-2.765726 1.41808,-6.005357 1.606883,-9.815957 2.232369,-0.413371 4.483758,-0.840201 5.938479,-1.327425 1.410632,-0.472457 2.153108,-0.89469 2.96924,-1.327425 z m -38.530252,2.864443 c 3.208141,0.56697 7.372279,0.898588 12.575603,0.978103 l 0.174662,9.885821 c -4.392517,-0.06139 -8.106722,-0.320566 -10.863925,-0.803441 -1.051954,-2.664695 -1.692909,-6.043794 -1.88634,-10.060483 z m 26.793022,0.31439 c -0.246298,3.923551 -0.877762,7.263679 -1.816476,9.885822 -2.561957,0.361954 -5.766249,0.560708 -9.431703,0.62878 l -0.174661,-9.815957 c 4.491734,-0.04969 8.334769,-0.293032 11.42284,-0.698645 z M 12.035901,44.860585 c 0.09977,0.04523 0.105535,0.09465 0.209594,0.139729 1.337656,0.579602 3.441099,1.058072 5.589157,1.537018 1.545042,3.399208 3.548524,5.969402 5.589157,7.789888 -3.034411,-1.215537 -5.871615,-3.007978 -8.174142,-5.309699 -1.245911,-1.245475 -2.271794,-2.662961 -3.213766,-4.156936 z m 40.69605,0 c -0.941972,1.493975 -1.967855,2.911461 -3.213765,4.156936 -2.74253,2.741571 -6.244106,4.696717 -9.955686,5.868615 0.261347,-0.241079 0.507495,-0.394491 0.768509,-0.663713 1.674841,-1.727516 3.320792,-4.181056 4.645987,-7.265904 2.962447,-0.503021 5.408965,-1.122293 7.161107,-1.781544 0.284034,-0.106865 0.337297,-0.207323 0.593848,-0.31439 z m -31.404076,2.305527 c 2.645807,0.376448 5.701178,0.649995 9.466635,0.698645 l 0.139729,7.789888 c -1.38739,-0.480844 -3.316218,-1.29837 -5.659022,-3.388427 -1.388822,-1.238993 -2.743668,-3.0113 -3.947342,-5.100106 z m 20.365491,0.104797 c -1.04872,2.041937 -2.174337,3.779068 -3.353494,4.995309 -1.853177,1.911459 -3.425515,2.82679 -4.611055,3.353494 l -0.139729,-7.789887 c 3.13091,-0.05714 5.728238,-0.278725 8.104278,-0.558916 z",u="m 2.9825053,17.550598 0,1.368113 0,26.267766 0,1.368113 1.36811,0 54.9981397,0 1.36811,0 0,-1.368113 0,-26.267766 0,-1.368113 -1.36811,0 -54.9981397,0 -1.36811,0 z m 2.73623,2.736226 10.3292497,0 0,10.466063 -10.3292497,0 0,-10.466063 z m 13.0654697,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 10.32926,0 0,10.466063 -10.32926,0 0,-10.466063 z m -41.9326497,13.202288 10.3292497,0 0,10.329252 -10.3292497,0 0,-10.329252 z m 13.0654697,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 10.32926,0 0,10.329252 -10.32926,0 0,-10.329252 z",c="m 14.723969,17.675598 -0.340489,0.817175 -11.1680536,26.183638 -0.817175,1.872692 2.076986,0 54.7506996,0 2.07698,0 -0.81717,-1.872692 -11.16805,-26.183638 -0.34049,-0.817175 -0.91933,0 -32.414586,0 -0.919322,0 z m 1.838643,2.723916 6.196908,0 -2.928209,10.418977 -7.729111,0 4.460412,-10.418977 z m 9.02297,0 4.903049,0 0,10.418977 -7.831258,0 2.928209,-10.418977 z m 7.626964,0 5.584031,0 2.62176,10.418977 -8.205791,0 0,-10.418977 z m 8.410081,0 5.51593,0 4.46042,10.418977 -7.38863,0 -2.58772,-10.418977 z m -30.678091,13.142892 8.103649,0 -2.89416,10.282782 -9.6018026,0 4.3923136,-10.282782 z m 10.929711,0 8.614384,0 0,10.282782 -11.508544,0 2.89416,-10.282782 z m 11.338299,0 8.852721,0 2.58772,10.282782 -11.440441,0 0,-10.282782 z m 11.678781,0 7.86531,0 4.39231,10.282782 -9.6699,0 -2.58772,-10.282782 z",h=function(e,t,i){e=a(e);var r=new s(t,i);r._globePath=l,r._flatMapPath=u,r._columbusViewPath=c;var h=document.createElement("span");h.className="cesium-sceneModePicker-wrapper cesium-toolbar-button",e.appendChild(h);var d=document.createElement("button");d.type="button",d.className="cesium-button cesium-toolbar-button",d.setAttribute("data-bind",'css: { "cesium-sceneModePicker-button2D": sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-button3D": sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-buttonColumbusView": sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),d.innerHTML='<!-- ko cesiumSvgPath: { path: _globePath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon3D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon2D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-iconColumbusView" } --><!-- /ko -->',h.appendChild(d);var p=document.createElement("button");p.type="button",p.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",p.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE3D)) || (!dropDownVisible && (sceneMode === _sceneMode.SCENE3D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip3D },click: morphTo3D,cesiumSvgPath: { path: _globePath, width: 64, height: 64 }'),h.appendChild(p);var m=document.createElement("button");m.type="button",m.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",m.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE2D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip2D },click: morphTo2D,cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64 }'),h.appendChild(m);var f=document.createElement("button");f.type="button",f.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",f.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.COLUMBUS_VIEW)) || (!dropDownVisible && (sceneMode === _sceneMode.COLUMBUS_VIEW)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-hidden" : !dropDownVisible},attr: { title: tooltipColumbusView },click: morphToColumbusView,cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64 }'),h.appendChild(f),o.applyBindings(r,h),this._viewModel=r,this._container=e,this._wrapper=h,this._closeDropDown=function(e){h.contains(e.target)||(r.dropDownVisible=!1)},n.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))};return t(h.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}}),h.prototype.isDestroyed=function(){return!1},h.prototype.destroy=function(){return this._viewModel.destroy(),n.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),o.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),i(this)},h}),i("Widgets/SelectionIndicator/SelectionIndicatorViewModel",["../../Core/Cartesian2","../../Core/defaultValue","../../Core/defined","../../Core/defineProperties","../../Core/DeveloperError","../../Core/EasingFunction","../../Scene/SceneTransforms","../../ThirdParty/knockout"],function(e,t,i,r,n,o,a,s){"use strict";var l=new e,u="-1000px",c=function(e,r,n){this._scene=e,this._screenPositionX=u,this._screenPositionY=u,this._tweens=e.tweens,this._container=t(n,document.body),this._selectionIndicatorElement=r,this._scale=1,this.position=void 0,this.showSelection=!1,s.track(this,["position","_screenPositionX","_screenPositionY","_scale","showSelection"]),this.isVisible=void 0,s.defineProperty(this,"isVisible",{get:function(){return this.showSelection&&i(this.position)}}),s.defineProperty(this,"_transform",{get:function(){return"scale("+this._scale+")"}}),this.computeScreenSpacePosition=function(t,i){return a.wgs84ToWindowCoordinates(e,t,i)}};return c.prototype.update=function(){if(this.showSelection&&i(this.position)){var e=this.computeScreenSpacePosition(this.position,l);if(i(e)){var t=this._container,r=t.parentNode.clientWidth,n=t.parentNode.clientHeight,o=this._selectionIndicatorElement.clientWidth,a=.5*o;e.x=Math.min(Math.max(e.x,-o),r+o)-a,e.y=Math.min(Math.max(e.y,-o),n+o)-a,this._screenPositionX=Math.floor(e.x+.25)+"px",this._screenPositionY=Math.floor(e.y+.25)+"px"}else this._screenPositionX=u,this._screenPositionY=u}},c.prototype.animateAppear=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:2,stopValue:1,duration:.8,easingFunction:o.EXPONENTIAL_OUT})},c.prototype.animateDepart=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:this._scale,stopValue:1.5,duration:.8,easingFunction:o.EXPONENTIAL_OUT})},r(c.prototype,{container:{get:function(){return this._container}},selectionIndicatorElement:{get:function(){return this._selectionIndicatorElement}},scene:{get:function(){return this._scene}}}),c}),i("Widgets/SelectionIndicator/SelectionIndicator",["../../Core/defined","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../ThirdParty/knockout","../getElement","./SelectionIndicatorViewModel"],function(e,t,i,r,n,o,a){"use strict";var s=function(e,t){e=o(e),this._container=e;var i=document.createElement("div");i.className="cesium-selection-wrapper",i.setAttribute("data-bind",'style: { "top" : _screenPositionY, "left" : _screenPositionX },css: { "cesium-selection-wrapper-visible" : isVisible }'),e.appendChild(i),this._element=i;var r="http://www.w3.org/2000/svg",s="M -34 -34 L -34 -11.25 L -30 -15.25 L -30 -30 L -15.25 -30 L -11.25 -34 L -34 -34 z M 11.25 -34 L 15.25 -30 L 30 -30 L 30 -15.25 L 34 -11.25 L 34 -34 L 11.25 -34 z M -34 11.25 L -34 34 L -11.25 34 L -15.25 30 L -30 30 L -30 15.25 L -34 11.25 z M 34 11.25 L 30 15.25 L 30 30 L 15.25 30 L 11.25 34 L 34 34 L 34 11.25 z",l=document.createElementNS(r,"svg:svg");l.setAttribute("width",160),l.setAttribute("height",160),l.setAttribute("viewBox","0 0 160 160");var u=document.createElementNS(r,"g");u.setAttribute("transform","translate(80,80)"),l.appendChild(u);var c=document.createElementNS(r,"path");c.setAttribute("data-bind","attr: { transform: _transform }"),c.setAttribute("d",s),u.appendChild(c),i.appendChild(l);var h=new a(t,this._element,this._container);this._viewModel=h,n.applyBindings(this._viewModel,this._element)};return t(s.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}}),s.prototype.isDestroyed=function(){return!1},s.prototype.destroy=function(){var e=this._container;return n.cleanNode(this._element),e.removeChild(this._element),i(this)},s}),i("Widgets/Timeline/TimelineHighlightRange",["../../Core/defaultValue","../../Core/JulianDate"],function(e,t){"use strict";function i(t,i,r){this._color=t,this._height=i,this._base=e(r,0)}return i.prototype.getHeight=function(){return this._height},i.prototype.getBase=function(){return this._base},i.prototype.getStartTime=function(){return this._start},i.prototype.getStopTime=function(){return this._stop},i.prototype.setRange=function(e,t){this._start=e,this._stop=t},i.prototype.render=function(e){var i="";if(this._start&&this._stop&&this._color){var r=t.secondsDifference(this._start,e.epochJulian),n=Math.round(e.timeBarWidth*e.getAlpha(r)),o=t.secondsDifference(this._stop,e.epochJulian),a=Math.round(e.timeBarWidth*e.getAlpha(o))-n;0>n&&(a+=n,n=0),n+a>e.timeBarWidth&&(a=e.timeBarWidth-n),a>0&&(i='<span class="cesium-timeline-highlight" style="left: '+n.toString()+"px; width: "+a.toString()+"px; bottom: "+this._base.toString()+"px; height: "+this._height+"px; background-color: "+this._color+';"></span>')}return i},i}),i("Widgets/Timeline/TimelineTrack",["../../Core/Color","../../Core/defined","../../Core/JulianDate"],function(e,t,i){"use strict";function r(t,i,r,n){this.interval=t,this.height=i,this.color=r||new e(.5,.5,.5,1),this.backgroundColor=n||new e(0,0,0,0)}return r.prototype.render=function(e,r){var n=this.interval.start,o=this.interval.stop,a=r.startJulian,s=i.addSeconds(r.startJulian,r.duration,new i);if(i.lessThan(n,a)&&i.greaterThan(o,s))e.fillStyle=this.color.toCssColorString(),e.fillRect(0,r.y,r.timeBarWidth,this.height);else if(i.lessThanOrEquals(n,s)&&i.greaterThanOrEquals(o,a)){var l,u,c;for(l=0;l<r.timeBarWidth;++l){var h=i.addSeconds(r.startJulian,l/r.timeBarWidth*r.duration,new i);!t(u)&&i.greaterThanOrEquals(h,n)?u=l:!t(c)&&i.greaterThanOrEquals(h,o)&&(c=l)}e.fillStyle=this.backgroundColor.toCssColorString(),e.fillRect(0,r.y,r.timeBarWidth,this.height),t(u)&&(t(c)||(c=r.timeBarWidth),e.fillStyle=this.color.toCssColorString(),e.fillRect(u,r.y,Math.max(c-u,1),this.height))}},r}),i("Widgets/Timeline/Timeline",["../../Core/ClockRange","../../Core/defined","../../Core/destroyObject","../../Core/DeveloperError","../../Core/JulianDate","../getElement","./TimelineHighlightRange","./TimelineTrack"],function(e,t,i,r,n,o,a,s){"use strict";function l(e){return 10>e?"0"+e.toString():e.toString()}function u(e){return function(t){e._mouseMode!==g.touchOnly&&(0===t.button?(e._mouseMode=g.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition="-16px 0"),e._onMouseMove(t)):(e._mouseX=t.clientX,e._mouseMode=2===t.button?g.zoom:g.slide)),t.preventDefault()}}function c(e){return function(){e._mouseMode=g.none,e._scrubElement&&(e._scrubElement.style.backgroundPosition="0px 0px"),e._timelineDrag=0,e._timelineDragLocation=void 0}}function h(e){return function(t){var i;if(e._mouseMode===g.scrub){t.preventDefault();var r=t.clientX-e._topDiv.getBoundingClientRect().left;0>r?(e._timelineDragLocation=0,e._timelineDrag=-.01*e._timeBarSecondsSpan):r>e._topDiv.clientWidth?(e._timelineDragLocation=e._topDiv.clientWidth,e._timelineDrag=.01*e._timeBarSecondsSpan):(e._timelineDragLocation=void 0,e._setTimeBarTime(r,r*e._timeBarSecondsSpan/e._topDiv.clientWidth))}else if(e._mouseMode===g.slide){if(i=e._mouseX-t.clientX,e._mouseX=t.clientX,0!==i){var o=i*e._timeBarSecondsSpan/e._topDiv.clientWidth;e.zoomTo(n.addSeconds(e._startJulian,o,new n),n.addSeconds(e._endJulian,o,new n))}}else e._mouseMode===g.zoom&&(i=e._mouseX-t.clientX,e._mouseX=t.clientX,0!==i&&e.zoomFrom(Math.pow(1.01,i)))}}function d(e){return function(t){var i=t.wheelDeltaY||t.wheelDelta||-t.detail;v=Math.max(Math.min(Math.abs(i),v),1),i/=v,e.zoomFrom(Math.pow(1.05,-i))}}function p(e){return function(t){var i,r,o=t.touches.length,a=e._topDiv.getBoundingClientRect().left;t.preventDefault(),e._mouseMode=g.touchOnly,1===o?(i=n.secondsDifference(e._scrubJulian,e._startJulian),r=Math.round(i*e._topDiv.clientWidth/e._timeBarSecondsSpan+a),Math.abs(t.touches[0].clientX-r)<50?(e._touchMode=_.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition=1===o?"-16px 0":"0 0")):(e._touchMode=_.singleTap,e._touchState.centerX=t.touches[0].clientX-a)):2===o?(e._touchMode=_.slideZoom,e._touchState.centerX=.5*(t.touches[0].clientX+t.touches[1].clientX)-a,e._touchState.spanX=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):e._touchMode=_.ignore}}function m(e){return function(t){var i=t.touches.length,r=e._topDiv.getBoundingClientRect().left;e._touchMode===_.singleTap?(e._touchMode=_.scrub,e._handleTouchMove(t)):e._touchMode===_.scrub&&e._handleTouchMove(t),e._mouseMode=g.touchOnly,1!==i?e._touchMode=i>0?_.ignore:_.none:e._touchMode===_.slideZoom&&(e._touchState.centerX=t.touches[0].clientX-r),e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0")}}function f(e){return function(i){var r,o,a,s,l,u,c=1,h=e._topDiv.getBoundingClientRect().left;e._touchMode===_.singleTap&&(e._touchMode=_.slideZoom),e._mouseMode=g.touchOnly,e._touchMode===_.scrub?(i.preventDefault(),1===i.changedTouches.length&&(o=i.changedTouches[0].clientX-h,o>=0&&o<=e._topDiv.clientWidth&&e._setTimeBarTime(o,o*e._timeBarSecondsSpan/e._topDiv.clientWidth))):e._touchMode===_.slideZoom&&(a=i.touches.length,2===a?(s=.5*(i.touches[0].clientX+i.touches[1].clientX)-h,l=Math.abs(i.touches[0].clientX-i.touches[1].clientX)):1===a&&(s=i.touches[0].clientX-h,l=0),t(s)&&(l>0&&e._touchState.spanX>0?(c=e._touchState.spanX/l,u=n.addSeconds(e._startJulian,(e._touchState.centerX*e._timeBarSecondsSpan-s*e._timeBarSecondsSpan*c)/e._topDiv.clientWidth,new n)):(r=e._touchState.centerX-s,u=n.addSeconds(e._startJulian,r*e._timeBarSecondsSpan/e._topDiv.clientWidth,new n)),e.zoomTo(u,n.addSeconds(u,e._timeBarSecondsSpan*c,new n)),e._touchState.centerX=s,e._touchState.spanX=l))}}var v=1e12,g={none:0,scrub:1,slide:2,zoom:3,touchOnly:4},_={none:0,scrub:1,slideZoom:2,singleTap:3,ignore:4},y=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],C=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],w=function(e,t){e=o(e),this.container=e;var i=document.createElement("div");i.className="cesium-timeline-main",e.appendChild(i),this._topDiv=i,this._endJulian=void 0,this._epochJulian=void 0,this._lastXPos=void 0,this._scrubElement=void 0,this._startJulian=void 0,this._timeBarSecondsSpan=void 0,this._clock=t,this._scrubJulian=t.currentTime,this._mainTicSpan=-1,this._mouseMode=g.none,this._touchMode=_.none,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._timelineDragLocation=void 0,this._lastHeight=void 0,this._lastWidth=void 0,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this._trackList=[],this._highlightRanges=[],this.zoomTo(t.startTime,t.stopTime),this._onMouseDown=u(this),this._onMouseUp=c(this),this._onMouseMove=h(this),this._onMouseWheel=d(this),this._onTouchStart=p(this),this._onTouchMove=f(this),this._onTouchEnd=m(this);var r=this._timeBarEle;document.addEventListener("mouseup",this._onMouseUp,!1),document.addEventListener("mousemove",this._onMouseMove,!1),r.addEventListener("mousedown",this._onMouseDown,!1),r.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),r.addEventListener("mousewheel",this._onMouseWheel,!1),r.addEventListener("touchstart",this._onTouchStart,!1),r.addEventListener("touchmove",this._onTouchMove,!1),r.addEventListener("touchend",this._onTouchEnd,!1),this._topDiv.oncontextmenu=function(){return!1},t.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()};return w.prototype.addEventListener=function(e,t,i){this._topDiv.addEventListener(e,t,i)},w.prototype.removeEventListener=function(e,t,i){this._topDiv.removeEventListener(e,t,i)},w.prototype.isDestroyed=function(){return!1},w.prototype.destroy=function(){this._clock.onTick.removeEventListener(this.updateFromClock,this),document.removeEventListener("mouseup",this._onMouseUp,!1),document.removeEventListener("mousemove",this._onMouseMove,!1);var e=this._timeBarEle;e.removeEventListener("mousedown",this._onMouseDown,!1),e.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),e.removeEventListener("mousewheel",this._onMouseWheel,!1),e.removeEventListener("touchstart",this._onTouchStart,!1),e.removeEventListener("touchmove",this._onTouchMove,!1),e.removeEventListener("touchend",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),i(this)},w.prototype.addHighlightRange=function(e,t,i){var r=new a(e,t,i);return this._highlightRanges.push(r),this.resize(),r},w.prototype.addTrack=function(e,t,i,r){var n=new s(e,t,i,r);return this._trackList.push(n),this._lastHeight=void 0,this.resize(),n},w.prototype.zoomTo=function(t,i){if(this._startJulian=t,this._endJulian=i,this._timeBarSecondsSpan=n.secondsDifference(i,t),this._clock&&this._clock.clockRange!==e.UNBOUNDED){var r=this._clock.startTime,o=this._clock.stopTime,a=n.secondsDifference(o,r),s=n.secondsDifference(r,this._startJulian),l=n.secondsDifference(o,this._endJulian);this._timeBarSecondsSpan>=a?(this._timeBarSecondsSpan=a,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):s>0?(this._endJulian=n.addSeconds(this._endJulian,s,new n),this._startJulian=r,this._timeBarSecondsSpan=n.secondsDifference(this._endJulian,this._startJulian)):0>l&&(this._startJulian=n.addSeconds(this._startJulian,l,new n),this._endJulian=o,this._timeBarSecondsSpan=n.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();var u=document.createEvent("Event");u.initEvent("setzoom",!0,!0),u.startJulian=this._startJulian,u.endJulian=this._endJulian,u.epochJulian=this._epochJulian,u.totalSpan=this._timeBarSecondsSpan,u.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(u)},w.prototype.zoomFrom=function(e){var t=n.secondsDifference(this._scrubJulian,this._startJulian);e>1||0>t||t>this._timeBarSecondsSpan?t=.5*this._timeBarSecondsSpan:t+=t-.5*this._timeBarSecondsSpan;var i=this._timeBarSecondsSpan-t;this.zoomTo(n.addSeconds(this._startJulian,t-t*e,new n),n.addSeconds(this._endJulian,i*e-i,new n))},w.prototype.makeLabel=function(e){var t=n.toGregorianDate(e),i=t.millisecond,r=" UTC";if(i>0&&this._timeBarSecondsSpan<3600){for(r=Math.floor(i).toString();r.length<3;)r="0"+r;r="."+r}return C[t.month-1]+" "+t.day+" "+t.year+" "+l(t.hour)+":"+l(t.minute)+":"+l(t.second)+r},w.prototype.smallestTicInPixels=7,w.prototype._makeTics=function(){function e(e){return Math.floor(S/e)*e}function t(e,t){return Math.ceil(e/t+.5)*t}function i(e){return(e-S)/v}function r(e,t){return e-t*Math.round(e/t)}var o,a=this._timeBarEle,s=n.secondsDifference(this._scrubJulian,this._startJulian),l=Math.round(s*this._topDiv.clientWidth/this._timeBarSecondsSpan),u=l-8,c=this;this._needleEle.style.left=l.toString()+"px";var h="",d=.01,p=31536e6,m=1e-10,f=0,v=this._timeBarSecondsSpan;d>v?(v=d,this._timeBarSecondsSpan=d,this._endJulian=n.addSeconds(this._startJulian,d,new n)):v>p&&(v=p,this._timeBarSecondsSpan=p,this._endJulian=n.addSeconds(this._startJulian,p,new n));var g=this._timeBarEle.clientWidth;10>g&&(g=10);var _,C=this._startJulian,w=Math.min(1e-5*(v/g),.4);_=v>31536e4?n.fromIso8601(n.toDate(C).toISOString().substring(0,2)+"00-01-01T00:00:00Z"):v>31536e3?n.fromIso8601(n.toDate(C).toISOString().substring(0,3)+"0-01-01T00:00:00Z"):v>86400?n.fromIso8601(n.toDate(C).toISOString().substring(0,4)+"-01-01T00:00:00Z"):n.fromIso8601(n.toDate(C).toISOString().substring(0,10)+"T00:00:00Z");var S=n.secondsDifference(this._startJulian,n.addSeconds(_,w,new n)),E=S+v;this._epochJulian=_,this._rulerEle.innerHTML=this.makeLabel(n.addSeconds(this._endJulian,-d,new n));var b=this._rulerEle.offsetWidth+20;30>b&&(b=180);var x=f;f-=m;var T={startTime:S,startJulian:C,epochJulian:_,duration:v,timeBarWidth:g,getAlpha:i};this._highlightRanges.forEach(function(e){h+=e.render(T)});var P=0,A=0,D=0,M=b/g;M>1&&(M=1),M*=this._timeBarSecondsSpan;var I,O=-1,R=-1,L=y.length;for(I=0;L>I;++I){var N=y[I];if(++O,P=N,N>M&&N>f)break;0>R&&g*(N/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(R=O)}if(O>0){for(;O>0;)if(--O,Math.abs(r(P,y[O]))<1e-5){y[O]>=f&&(A=y[O]);break}if(R>=0)for(;O>R;){if(Math.abs(r(A,y[R]))<1e-5&&y[R]>=f){D=y[R];break}++R}}f=x,f>m&&1e-5>D&&Math.abs(f-P)>m&&(D=f,P+m>=f&&(A=0));var F,B=-999999;if(g*(D/this._timeBarSecondsSpan)>=3)for(o=e(D);E>=o;o=t(o,D))h+='<span class="cesium-timeline-ticTiny" style="left: '+Math.round(g*i(o)).toString()+'px;"></span>';if(g*(A/this._timeBarSecondsSpan)>=3)for(o=e(A);E>=o;o=t(o,A))h+='<span class="cesium-timeline-ticSub" style="left: '+Math.round(g*i(o)).toString()+'px;"></span>'; +if(g*(P/this._timeBarSecondsSpan)>=2){this._mainTicSpan=P,E+=P,o=e(P);for(var z=n.computeTaiMinusUtc(_);E>=o;){var k=n.addSeconds(C,o-S,new n);if(P>2.1){var V=n.computeTaiMinusUtc(k);Math.abs(V-z)>.1&&(o+=V-z,k=n.addSeconds(C,o-S,new n))}var U=Math.round(g*i(o)),W=this.makeLabel(k);this._rulerEle.innerHTML=W,F=this._rulerEle.offsetWidth,10>F&&(F=b);var G=U-(F/2-1);G>B?(B=G+F+5,h+='<span class="cesium-timeline-ticMain" style="left: '+U.toString()+'px;"></span>'+'<span class="cesium-timeline-ticLabel" style="left: '+G.toString()+'px;">'+W+"</span>"):h+='<span class="cesium-timeline-ticSub" style="left: '+U.toString()+'px;"></span>',o=t(o,P)}}else this._mainTicSpan=-1;h+='<span class="cesium-timeline-icon16" style="left:'+u+'px;bottom:0;background-position: 0px 0px;"></span>',a.innerHTML=h,this._scrubElement=a.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),T.y=0,this._trackList.forEach(function(e){e.render(c._context,T),T.y+=e.height})},w.prototype.updateFromClock=function(){this._scrubJulian=this._clock.currentTime;var e=this._scrubElement;if(t(this._scrubElement)){var i=n.secondsDifference(this._scrubJulian,this._startJulian),r=Math.round(i*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==r&&(this._lastXPos=r,e.style.left=r-8+"px",this._needleEle.style.left=r+"px")}t(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo(n.addSeconds(this._startJulian,this._timelineDrag,new n),n.addSeconds(this._endJulian,this._timelineDrag,new n)))},w.prototype._setTimeBarTime=function(e,t){if(e=Math.round(e),this._scrubJulian=n.addSeconds(this._startJulian,t,new n),this._scrubElement){var i=e-8;this._scrubElement.style.left=i.toString()+"px",this._needleEle.style.left=e.toString()+"px"}var r=document.createEvent("Event");r.initEvent("settime",!0,!0),r.clientX=e,r.timeSeconds=t,r.timeJulian=this._scrubJulian,r.clock=this._clock,this._topDiv.dispatchEvent(r)},w.prototype.resize=function(){var e=this.container.clientWidth,t=this.container.clientHeight;if(e!==this._lastWidth||t!==this._lastHeight){this._trackContainer.style.height=t+"px";var i=1;this._trackList.forEach(function(e){i+=e.height}),this._trackListEle.style.height=i.toString()+"px",this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=i,this._makeTics(),this._lastWidth=e,this._lastHeight=t}},w}),i("Widgets/Viewer/Viewer",["../../Core/BoundingSphere","../../Core/Cartesian3","../../Core/defaultValue","../../Core/defined","../../Core/definedNotNull","../../Core/defineProperties","../../Core/destroyObject","../../Core/DeveloperError","../../Core/EventHelper","../../Core/isArray","../../Core/Matrix4","../../Core/ScreenSpaceEventType","../../DataSources/BoundingSphereState","../../DataSources/ConstantPositionProperty","../../DataSources/DataSourceCollection","../../DataSources/DataSourceDisplay","../../DataSources/Entity","../../DataSources/EntityView","../../DataSources/Property","../../Scene/SceneMode","../../ThirdParty/knockout","../../ThirdParty/when","../Animation/Animation","../Animation/AnimationViewModel","../BaseLayerPicker/BaseLayerPicker","../BaseLayerPicker/createDefaultImageryProviderViewModels","../BaseLayerPicker/createDefaultTerrainProviderViewModels","../CesiumWidget/CesiumWidget","../ClockViewModel","../FullscreenButton/FullscreenButton","../Geocoder/Geocoder","../getElement","../HomeButton/HomeButton","../InfoBox/InfoBox","../NavigationHelpButton/NavigationHelpButton","../SceneModePicker/SceneModePicker","../SelectionIndicator/SelectionIndicator","../subscribeAndEvaluate","../Timeline/Timeline"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D,M,I,O,R,L,N,F,B,z){"use strict";function k(e){var t=e.clock;t.currentTime=e.timeJulian,t.shouldAnimate=!1}function V(e,t){var n=e.scene.pick(t.position);if(r(n)){var o=i(n.id,n.primitive.id);if(o instanceof v)return o}return r(e.scene.globe)?W(e,t.position):void 0}function U(e,t,i){if(r(i)){var n=i.clock;r(n)&&(n.getValue(t),r(e)&&(e.updateFromClock(),e.zoomTo(n.startTime,n.stopTime)))}}function W(e,t){var i=e.scene,n=i.camera.getPickRay(t),o=i.imageryLayers.pickImageryLayerFeatures(n,i);if(r(o)){var a=new v({id:"Loading...",description:"Loading feature information..."});return w(o,function(t){if(e.selectedEntity===a){if(!r(t)||0===t.length)return e.selectedEntity=G(),void 0;var i=t[0],n=new v({id:i.name,description:i.description});if(r(i.position)){var o=e.scene.globe.ellipsoid.cartographicToCartesian(i.position,J);n.position=new p(o)}e.selectedEntity=n}},function(){e.selectedEntity===a&&(e.selectedEntity=G())}),a}}function G(){return new v({id:"None",description:"No features found."})}function H(e,t,n,o){j(e);var a=w.defer();return e._zoomPromise=a,e._zoomIsFlight=o,e._zoomOptions=n,w(t,function(t){if(e._zoomPromise===a)if(t.isLoading&&r(t.loadingEvent))var n=t.loadingEvent.addEventListener(function(){n(),e._zoomPromise===a&&(e._zoomTarget=t.entities.values.slice(0))});else t=i(t.values,t),r(t.entities)&&(t=t.entities.values),e._zoomTarget=u(t)?t.slice(0):[t]}),a}function q(e){e._zoomPromise=void 0,e._zoomTarget=void 0,e._zoomOptions=void 0}function j(e){var t=e._zoomPromise;r(t)&&(q(e),t.resolve(!1))}function Y(t){var n=t._zoomTarget;if(r(n)&&t.scene.mode!==y.MORPHING){for(var o=t._zoomPromise,a=[],s=0,l=n.length;l>s;s++){var u=t._dataSourceDisplay.getBoundingSphere(n[s],!1,Z);if(u===d.PENDING)return;u!==d.FAILED&&a.push(e.clone(Z))}if(0===a.length)return j(t),void 0;t.trackedEntity=void 0;var h=t.scene,p=h.camera,m=e.fromBoundingSpheres(a),f=h.screenSpaceCameraController;if(f.minimumZoomDistance=Math.min(f.minimumZoomDistance,.5*m.radius),t._zoomIsFlight){var v=i(t._zoomOptions,{}),g={duration:v.duration,complete:function(){o.resolve(!0)},cancel:function(){o.resolve(!1)},offset:v.offset};q(t),p.flyToBoundingSphere(m,g)}else p.viewBoundingSphere(m,t._zoomOptions),p.lookAtTransform(c.IDENTITY),q(t),o.resolve(!0)}}function X(e){if(e._needTrackedEntityUpdate){var t=e._trackedEntity,i=e.clock.currentTime,n=_.getValueOrUndefined(t.position,i);if(r(n)){var o=e.scene,a=e._dataSourceDisplay.getBoundingSphere(t,!1,Z);if(a!==d.PENDING){var s=o.mode;(s===y.COLUMBUS_VIEW||s===y.SCENE2D)&&(o.screenSpaceCameraController.enableTranslate=!1),(s===y.COLUMBUS_VIEW||s===y.SCENE3D)&&(o.screenSpaceCameraController.enableTilt=!1);var l=a!==d.FAILED?Z:void 0;e._entityView=new g(t,o,o.mapProjection.ellipsoid,l),e._entityView.update(i),e._needTrackedEntityUpdate=!1}}}}var Z=new e,J=new t,Q=function(e,t){function o(e){var t=V(Ct,e);r(t)&&(_.getValueOrUndefined(t.position,Ct.clock.currentTime)?Ct.trackedEntity=t:Ct.zoomTo(t))}function a(e){Ct.selectedEntity=V(Ct,e)}e=I(e),t=i(t,i.EMPTY_OBJECT);var u=!(r(t.globe)&&t.globe===!1||r(t.baseLayerPicker)&&t.baseLayerPicker===!1),c=document.createElement("div");c.className="cesium-viewer",e.appendChild(c);var d=document.createElement("div");d.className="cesium-viewer-cesiumWidgetContainer",c.appendChild(d);var p=document.createElement("div");p.className="cesium-viewer-bottom",c.appendChild(p);var v=i(t.scene3DOnly,!1),g=new P(d,{terrainProvider:t.terrainProvider,imageryProvider:u?!1:t.imageryProvider,clock:t.clock,skyBox:t.skyBox,skyAtmosphere:t.skyAtmosphere,sceneMode:t.sceneMode,mapProjection:t.mapProjection,globe:t.globe,orderIndependentTranslucency:t.orderIndependentTranslucency,contextOptions:t.contextOptions,useDefaultRenderLoop:t.useDefaultRenderLoop,targetFrameRate:t.targetFrameRate,showRenderLoopErrors:t.showRenderLoopErrors,creditContainer:r(t.creditContainer)?t.creditContainer:p,scene3DOnly:v}),y=t.dataSources,w=!1;r(y)||(y=new m,w=!0);var U=new f({scene:g.scene,dataSourceCollection:y}),W=g.clock,G=new A(W),H=new l;H.add(W.onTick,Q.prototype._onTick,this);var q;if(!r(t.selectionIndicator)||t.selectionIndicator!==!1){var j=document.createElement("div");j.className="cesium-viewer-selectionIndicatorContainer",c.appendChild(j),q=new F(j,g.scene)}var Y;if(!r(t.infoBox)||t.infoBox!==!1){var X=document.createElement("div");X.className="cesium-viewer-infoBoxContainer",c.appendChild(X),Y=new R(X);var Z=Y.viewModel;H.add(Z.cameraClicked,Q.prototype._onInfoBoxCameraClicked,this),H.add(Z.closeClicked,Q.prototype._onInfoBoxClockClicked,this)}var J=document.createElement("div");J.className="cesium-viewer-toolbar",c.appendChild(J);var K;if(!r(t.geocoder)||t.geocoder!==!1){var $=document.createElement("div");$.className="cesium-viewer-geocoderContainer",J.appendChild($),K=new M({container:$,scene:g.scene}),H.add(K.viewModel.search.beforeExecute,Q.prototype._clearObjects,this)}var et;if(r(t.homeButton)&&t.homeButton===!1||(et=new O(J,g.scene),r(K)&&H.add(et.viewModel.command.afterExecute,function(){var e=K.viewModel;e.searchText="",e.isSearchInProgress&&e.search()}),H.add(et.viewModel.command.beforeExecute,Q.prototype._clearTrackedObject,this)),t.sceneModePicker===!0&&v)throw new s("options.sceneModePicker is not available when options.scene3DOnly is set to true.");var tt;v||r(t.sceneModePicker)&&t.sceneModePicker===!1||(tt=new N(J,g.scene));var it,rt;if(u){var nt=i(t.imageryProviderViewModels,x()),ot=i(t.terrainProviderViewModels,T());it=new b(J,{globe:g.scene.globe,imageryProviderViewModels:nt,selectedImageryProviderViewModel:t.selectedImageryProviderViewModel,terrainProviderViewModels:ot,selectedTerrainProviderViewModel:t.selectedTerrainProviderViewModel});var at=J.getElementsByClassName("cesium-baseLayerPicker-dropDown");rt=at[0]}var st;if(!r(t.navigationHelpButton)||t.navigationHelpButton!==!1){var lt=!0;try{if(n(window.localStorage)){var ut=window.localStorage.getItem("cesium-hasSeenNavHelp");r(ut)&&Boolean(ut)?lt=!1:window.localStorage.setItem("cesium-hasSeenNavHelp","true")}}catch(ct){}st=new L({container:J,instructionsInitiallyVisible:i(t.navigationInstructionsInitiallyVisible,lt)})}var ht;if(!r(t.animation)||t.animation!==!1){var dt=document.createElement("div");dt.className="cesium-viewer-animationContainer",c.appendChild(dt),ht=new S(dt,new E(G))}var pt;if(!r(t.timeline)||t.timeline!==!1){var mt=document.createElement("div");mt.className="cesium-viewer-timelineContainer",c.appendChild(mt),pt=new z(mt,W),pt.addEventListener("settime",k,!1),pt.zoomTo(W.startTime,W.stopTime)}var ft,vt;if(r(t.fullscreenButton)&&t.fullscreenButton===!1)r(pt)&&(pt.container.style.right=0);else{var gt=document.createElement("div");gt.className="cesium-viewer-fullscreenContainer",c.appendChild(gt),ft=new D(gt,t.fullscreenElement),vt=B(ft.viewModel,"isFullscreenEnabled",function(e){gt.style.display=e?"block":"none",r(pt)&&(pt.container.style.right=gt.clientWidth+"px",pt.resize())})}this._baseLayerPickerDropDown=rt,this._fullscreenSubscription=vt,this._dataSourceChangedListeners={},this._automaticallyTrackDataSourceClocks=i(t.automaticallyTrackDataSourceClocks,!0),this._container=e,this._bottomContainer=p,this._element=c,this._cesiumWidget=g,this._selectionIndicator=q,this._infoBox=Y,this._dataSourceCollection=y,this._destroyDataSourceCollection=w,this._dataSourceDisplay=U,this._clockViewModel=G,this._toolbar=J,this._homeButton=et,this._sceneModePicker=tt,this._baseLayerPicker=it,this._animation=ht,this._timeline=pt,this._fullscreenButton=ft,this._geocoder=K,this._eventHelper=H,this._lastWidth=0,this._lastHeight=0,this._allowDataSourcesToSuspendAnimation=!0,this._entityView=void 0,this._enableInfoOrSelection=r(Y)||r(q),this._clockTrackedDataSource=void 0,this._trackedEntity=void 0,this._needTrackedEntityUpdate=!1,this._selectedEntity=void 0,this._clockTrackedDataSource=void 0,this._forceResize=!1,this._zoomIsFlight=!1,this._zoomTarget=void 0,this._zoomPromise=void 0,this._zoomOptions=void 0,C.track(this,["_trackedEntity","_selectedEntity","_clockTrackedDataSource"]),H.add(y.dataSourceAdded,Q.prototype._onDataSourceAdded,this),H.add(y.dataSourceRemoved,Q.prototype._onDataSourceRemoved,this),H.add(g.scene.preRender,Q.prototype.resize,this),H.add(g.scene.postRender,Q.prototype._postRender,this);for(var _t=y.length,yt=0;_t>yt;yt++)this._dataSourceAdded(y,y.get(yt));this._dataSourceAdded(void 0,U.defaultDataSource),H.add(y.dataSourceAdded,Q.prototype._dataSourceAdded,this),H.add(y.dataSourceRemoved,Q.prototype._dataSourceRemoved,this);var Ct=this;g.screenSpaceEventHandler.setInputAction(a,h.LEFT_CLICK),g.screenSpaceEventHandler.setInputAction(o,h.LEFT_DOUBLE_CLICK)};return o(Q.prototype,{container:{get:function(){return this._container}},bottomContainer:{get:function(){return this._bottomContainer}},cesiumWidget:{get:function(){return this._cesiumWidget}},selectionIndicator:{get:function(){return this._selectionIndicator}},infoBox:{get:function(){return this._infoBox}},geocoder:{get:function(){return this._geocoder}},homeButton:{get:function(){return this._homeButton}},sceneModePicker:{get:function(){return this._sceneModePicker}},baseLayerPicker:{get:function(){return this._baseLayerPicker}},animation:{get:function(){return this._animation}},timeline:{get:function(){return this._timeline}},fullscreenButton:{get:function(){return this._fullscreenButton}},dataSourceDisplay:{get:function(){return this._dataSourceDisplay}},entities:{get:function(){return this._dataSourceDisplay.defaultDataSource.entities}},dataSources:{get:function(){return this._dataSourceCollection}},canvas:{get:function(){return this._cesiumWidget.canvas}},cesiumLogo:{get:function(){return this._cesiumWidget.cesiumLogo}},scene:{get:function(){return this._cesiumWidget.scene}},imageryLayers:{get:function(){return this.scene.imageryLayers}},terrainProvider:{get:function(){return this.scene.terrainProvider},set:function(e){this.scene.terrainProvider=e}},camera:{get:function(){return this.scene.camera}},clock:{get:function(){return this._cesiumWidget.clock}},screenSpaceEventHandler:{get:function(){return this._cesiumWidget.screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._cesiumWidget.targetFrameRate},set:function(e){this._cesiumWidget.targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._cesiumWidget.useDefaultRenderLoop},set:function(e){this._cesiumWidget.useDefaultRenderLoop=e}},resolutionScale:{get:function(){return this._cesiumWidget.resolutionScale},set:function(e){this._cesiumWidget.resolutionScale=e,this._forceResize=!0}},allowDataSourcesToSuspendAnimation:{get:function(){return this._allowDataSourcesToSuspendAnimation},set:function(e){this._allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._trackedEntity},set:function(e){if(this._trackedEntity!==e){this._trackedEntity=e,j(this);var t=this.scene,i=t.mode;if(!r(e)||!r(e.position))return this._needTrackedEntityUpdate=!1,(i===y.COLUMBUS_VIEW||i===y.SCENE2D)&&(t.screenSpaceCameraController.enableTranslate=!0),(i===y.COLUMBUS_VIEW||i===y.SCENE3D)&&(t.screenSpaceCameraController.enableTilt=!0),this._entityView=void 0,this.camera.lookAtTransform(c.IDENTITY),void 0;this._needTrackedEntityUpdate=!0}}},selectedEntity:{get:function(){return this._selectedEntity},set:function(e){if(this._selectedEntity!==e){this._selectedEntity=e;var t=r(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;r(e)?r(t)&&t.animateAppear():r(t)&&t.animateDepart()}}},clockTrackedDataSource:{get:function(){return this._clockTrackedDataSource},set:function(e){this._clockTrackedDataSource!==e&&(this._clockTrackedDataSource=e,U(this._timeline,this.clock,e))}}}),Q.prototype.extend=function(e,t){e(this,t)},Q.prototype.resize=function(){var e=this._cesiumWidget,t=this._container,i=t.clientWidth,n=t.clientHeight,o=r(this._animation),a=r(this._timeline);if(this._forceResize||i!==this._lastWidth||n!==this._lastHeight){e.resize(),this._forceResize=!1;var s=n-125,l=this._baseLayerPickerDropDown;r(l)&&(l.style.maxHeight=s+"px"),r(this._infoBox)&&(this._infoBox.viewModel.maxHeight=s);var u,c=this._timeline,h=0,d=0,p=0;if(o&&"hidden"!==window.getComputedStyle(this._animation.container).visibility){var m=this._lastWidth;u=this._animation.container,i>900?(h=169,900>=m&&(u.style.width="169px",u.style.height="112px",this._animation.resize())):i>=600?(h=136,(600>m||m>900)&&(u.style.width="136px",u.style.height="90px",this._animation.resize())):(h=106,(m>600||0===m)&&(u.style.width="106px",u.style.height="70px",this._animation.resize())),d=h+5}if(a&&"hidden"!==window.getComputedStyle(this._timeline.container).visibility){var f=this._fullscreenButton,v=c.container,g=v.style;p=v.clientHeight+3,g.left=h+"px",r(f)&&(g.right=f.container.clientWidth+"px"),c.resize()}this._bottomContainer.style.left=d+"px",this._bottomContainer.style.bottom=p+"px",this._lastWidth=i,this._lastHeight=n}},Q.prototype.forceResize=function(){this._lastWidth=0,this.resize()},Q.prototype.render=function(){this._cesiumWidget.render()},Q.prototype.isDestroyed=function(){return!1},Q.prototype.destroy=function(){var e;this.screenSpaceEventHandler.removeInputAction(h.LEFT_CLICK),this.screenSpaceEventHandler.removeInputAction(h.LEFT_DOUBLE_CLICK);var t=this.dataSources,i=t.length;for(e=0;i>e;e++)this._dataSourceRemoved(t,t.get(e));return this._dataSourceRemoved(void 0,this._dataSourceDisplay.defaultDataSource),this._container.removeChild(this._element),this._element.removeChild(this._toolbar),this._eventHelper.removeAll(),r(this._geocoder)&&(this._geocoder=this._geocoder.destroy()),r(this._homeButton)&&(this._homeButton=this._homeButton.destroy()),r(this._sceneModePicker)&&(this._sceneModePicker=this._sceneModePicker.destroy()),r(this._baseLayerPicker)&&(this._baseLayerPicker=this._baseLayerPicker.destroy()),r(this._animation)&&(this._element.removeChild(this._animation.container),this._animation=this._animation.destroy()),r(this._timeline)&&(this._timeline.removeEventListener("settime",k,!1),this._element.removeChild(this._timeline.container),this._timeline=this._timeline.destroy()),r(this._fullscreenButton)&&(this._fullscreenSubscription.dispose(),this._element.removeChild(this._fullscreenButton.container),this._fullscreenButton=this._fullscreenButton.destroy()),r(this._infoBox)&&(this._element.removeChild(this._infoBox.container),this._infoBox=this._infoBox.destroy()),r(this._selectionIndicator)&&(this._element.removeChild(this._selectionIndicator.container),this._selectionIndicator=this._selectionIndicator.destroy()),this._clockViewModel=this._clockViewModel.destroy(),this._dataSourceDisplay=this._dataSourceDisplay.destroy(),this._cesiumWidget=this._cesiumWidget.destroy(),this._destroyDataSourceCollection&&(this._dataSourceCollection=this._dataSourceCollection.destroy()),a(this)},Q.prototype._dataSourceAdded=function(e,t){var i=t.entities;i.collectionChanged.addEventListener(Q.prototype._onEntityCollectionChanged,this)},Q.prototype._dataSourceRemoved=function(e,t){var i=t.entities;i.collectionChanged.removeEventListener(Q.prototype._onEntityCollectionChanged,this),r(this.trackedEntity)&&i.getById(this.trackedEntity.id)===this.trackedEntity&&(this.trackedEntity=void 0),r(this.selectedEntity)&&i.getById(this.selectedEntity.id)===this.selectedEntity&&(this.selectedEntity=void 0)},Q.prototype._onTick=function(e){var n=e.currentTime,o=this._dataSourceDisplay.update(n);this._allowDataSourcesToSuspendAnimation&&(this._clockViewModel.canAnimate=o);var a=this._entityView;r(a)&&a.update(n);var s,l=!1,u=this.selectedEntity,c=r(u)&&this._enableInfoOrSelection;if(c&&u.isShowing&&u.isAvailable(n)){var h=this._dataSourceDisplay.getBoundingSphere(u,!0,Z);h!==d.FAILED?s=Z.center:r(u.position)&&(s=u.position.getValue(n,s)),l=r(s)}var p=r(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;r(p)&&(p.position=t.clone(s,p.position),p.showSelection=c&&l,p.update());var m=r(this._infoBox)?this._infoBox.viewModel:void 0;r(m)&&(m.showInfo=c,m.enableCamera=l,m.isCameraTracking=this.trackedEntity===this.selectedEntity,c?(m.titleText=i(u.name,u.id),m.description=_.getValueOrDefault(u.description,n,"")):(m.titleText="",m.description=""))},Q.prototype._onEntityCollectionChanged=function(e,t,i){for(var r=i.length,n=0;r>n;n++){var o=i[n];this.trackedEntity===o&&(this.trackedEntity=void 0),this.selectedEntity===o&&(this.selectedEntity=void 0)}},Q.prototype._onInfoBoxCameraClicked=function(e){if(e.isCameraTracking&&this.trackedEntity===this.selectedEntity)this.trackedEntity=void 0;else{var t=this.selectedEntity,i=t.position;r(i)?this.trackedEntity=this.selectedEntity:this.zoomTo(this.selectedEntity)}},Q.prototype._clearTrackedObject=function(){this.trackedEntity=void 0},Q.prototype._onInfoBoxClockClicked=function(){this.selectedEntity=void 0},Q.prototype._clearObjects=function(){this.trackedEntity=void 0,this.selectedEntity=void 0},Q.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&U(this.timeline,this.clock,e)},Q.prototype._onDataSourceAdded=function(e,t){this._automaticallyTrackDataSourceClocks&&(this.clockTrackedDataSource=t);var i=t.entities.id,r=this._eventHelper.add(t.changedEvent,Q.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[i]=r},Q.prototype._onDataSourceRemoved=function(e,t){var i=this.clockTrackedDataSource===t,r=t.entities.id;if(this._dataSourceChangedListeners[r](),this._dataSourceChangedListeners[r]=void 0,i){var n=e.length;this.clockTrackedDataSource=this._automaticallyTrackDataSourceClocks&&n>0?e.get(n-1):void 0}},Q.prototype.zoomTo=function(e,t){return H(this,e,t,!1)},Q.prototype.flyTo=function(e,t){return H(this,e,t,!0)},Q.prototype._postRender=function(){Y(this),X(this)},Q}),i("Widgets/Viewer/viewerCesiumInspectorMixin",["../../Core/defined","../../Core/defineProperties","../../Core/DeveloperError","../CesiumInspector/CesiumInspector"],function(e,t,i,r){"use strict";var n=function(n){if(!e(n))throw new i("viewer is required.");var o=document.createElement("div");o.className="cesium-viewer-cesiumInspectorContainer",n.container.appendChild(o);var a=new r(o,n.scene);t(n,{cesiumInspector:{get:function(){return a}}}),n.scene.postRender.addEventListener(function(){n.cesiumInspector.viewModel.update()})};return n}),i("Widgets/Viewer/viewerDragDropMixin",["../../Core/defaultValue","../../Core/defined","../../Core/defineProperties","../../Core/DeveloperError","../../Core/Event","../../Core/wrapFunction","../../DataSources/CzmlDataSource","../../DataSources/GeoJsonDataSource","../../DataSources/KmlDataSource","../getElement"],function(e,t,i,r,n,o,a,s,l,u){"use strict";function c(e){e.stopPropagation(),e.preventDefault()}function h(e,i){var r=e;t(r)&&(r.removeEventListener("drop",i,!1),r.removeEventListener("dragenter",c,!1),r.removeEventListener("dragover",c,!1),r.removeEventListener("dragexit",c,!1))}function d(e,t){e.addEventListener("drop",t,!1),e.addEventListener("dragenter",c,!1),e.addEventListener("dragover",c,!1),e.addEventListener("dragexit",c,!1)}function p(e,i,r){return function(n){var o=i.name;try{var u;if(/\.czml$/i.test(o))u=a.load(JSON.parse(n.target.result),{sourceUri:o});else if(/\.geojson$/i.test(o)||/\.json$/i.test(o)||/\.topojson$/i.test(o))u=s.load(JSON.parse(n.target.result),{sourceUri:o});else{if(!/\.(kml|kmz)$/i.test(o))return e.dropError.raiseEvent(e,o,"Unrecognized file: "+o),void 0;u=l.load(i,{sourceUri:o,proxy:r})}t(u)&&e.dataSources.add(u).then(function(t){e.flyToOnDrop&&e.flyTo(t)}).otherwise(function(t){e.dropError.raiseEvent(e,o,t)})}catch(c){e.dropError.raiseEvent(e,o,c)}}}function m(e,t){return function(i){e.dropError.raiseEvent(e,t.name,i.target.error)}}var f=function(t,r){function a(e){c(e),v&&(t.entities.removeAll(),t.dataSources.removeAll());for(var i=e.dataTransfer.files,r=i.length,n=0;r>n;n++){var o=i[n],a=new FileReader;a.onload=p(t,o,_),a.onerror=m(t,o),a.readAsText(o)}}r=e(r,e.EMPTY_OBJECT);var s=!0,l=!0,f=new n,v=e(r.clearOnDrop,!0),g=e(r.dropTarget,t.container),_=r.proxy;g=u(g),i(t,{dropTarget:{get:function(){return g},set:function(e){h(g,a),g=e,d(g,a)}},dropEnabled:{get:function(){return s},set:function(e){e!==s&&(e?d(g,a):h(g,a),s=e)}},dropError:{get:function(){return f}},clearOnDrop:{get:function(){return v},set:function(e){v=e}},flyToOnDrop:{get:function(){return l},set:function(e){l=e}},proxy:{get:function(){return _},set:function(e){_=e}}}),d(g,a),t.destroy=o(t,t.destroy,function(){t.dropEnabled=!1}),t._handleDrop=a};return f}),i("Widgets/Viewer/viewerPerformanceWatchdogMixin",["../../Core/defaultValue","../../Core/defined","../../Core/defineProperties","../../Core/DeveloperError","../PerformanceWatchdog/PerformanceWatchdog"],function(e,t,i,r,n){"use strict";var o=function(o,a){if(!t(o))throw new r("viewer is required.");a=e(a,e.EMPTY_OBJECT);var s=new n({scene:o.scene,container:o.bottomContainer,lowFrameRateMessage:a.lowFrameRateMessage});i(o,{performanceWatchdog:{get:function(){return s}}})};return o}),i("Workers/createTaskProcessorWorker",["../Core/defaultValue","../Core/defined","../Core/formatError"],function(e,t,i){"use strict";var r=function(r){var n,o=[],a={id:void 0,result:void 0,error:void 0};return function(s){var l=s.data;o.length=0,a.id=l.id,a.error=void 0,a.result=void 0;try{a.result=r(l.parameters,o)}catch(u){a.error=u instanceof Error?{name:u.name,message:u.message,stack:u.stack}:u}t(n)||(n=e(self.webkitPostMessage,self.postMessage)),l.canTransferArrayBuffer||(o.length=0);try{n(a,o)}catch(u){a.result=void 0,a.error="postMessage failed with error: "+i(u)+"\n with responseMessage: "+JSON.stringify(a),n(a)}}};return r}),i("Cesium",["./Core/ArcGisImageServerTerrainProvider","./Core/AssociativeArray","./Core/AttributeCompression","./Core/AxisAlignedBoundingBox","./Core/BingMapsApi","./Core/BoundingRectangle","./Core/BoundingSphere","./Core/BoxGeometry","./Core/BoxOutlineGeometry","./Core/Cartesian2","./Core/Cartesian3","./Core/Cartesian4","./Core/Cartographic","./Core/CatmullRomSpline","./Core/CesiumTerrainProvider","./Core/CircleGeometry","./Core/CircleOutlineGeometry","./Core/Clock","./Core/ClockRange","./Core/ClockStep","./Core/Color","./Core/ColorGeometryInstanceAttribute","./Core/ComponentDatatype","./Core/CornerType","./Core/CorridorGeometry","./Core/CorridorGeometryLibrary","./Core/CorridorOutlineGeometry","./Core/Credit","./Core/CubicRealPolynomial","./Core/CylinderGeometry","./Core/CylinderGeometryLibrary","./Core/CylinderOutlineGeometry","./Core/DefaultProxy","./Core/DeveloperError","./Core/EarthOrientationParameters","./Core/EarthOrientationParametersSample","./Core/EasingFunction","./Core/EllipseGeometry","./Core/EllipseGeometryLibrary","./Core/EllipseOutlineGeometry","./Core/Ellipsoid","./Core/EllipsoidGeodesic","./Core/EllipsoidGeometry","./Core/EllipsoidOutlineGeometry","./Core/EllipsoidTangentPlane","./Core/EllipsoidTerrainProvider","./Core/EllipsoidalOccluder","./Core/EncodedCartesian3","./Core/Event","./Core/EventHelper","./Core/ExtrapolationType","./Core/FeatureDetection","./Core/Fullscreen","./Core/GeographicProjection","./Core/GeographicTilingScheme","./Core/Geometry","./Core/GeometryAttribute","./Core/GeometryAttributes","./Core/GeometryInstance","./Core/GeometryInstanceAttribute","./Core/GeometryPipeline","./Core/GeometryType","./Core/GregorianDate","./Core/HeightmapTerrainData","./Core/HeightmapTessellator","./Core/HermitePolynomialApproximation","./Core/HermiteSpline","./Core/Iau2000Orientation","./Core/Iau2006XysData","./Core/Iau2006XysSample","./Core/IauOrientationAxes","./Core/IauOrientationParameters","./Core/IndexDatatype","./Core/InterpolationAlgorithm","./Core/Intersect","./Core/IntersectionTests","./Core/Intersections2D","./Core/Interval","./Core/Iso8601","./Core/JulianDate","./Core/KeyboardEventModifier","./Core/LagrangePolynomialApproximation","./Core/LeapSecond","./Core/LinearApproximation","./Core/LinearSpline","./Core/MapProjection","./Core/Math","./Core/Matrix2","./Core/Matrix3","./Core/Matrix4","./Core/NearFarScalar","./Core/ObjectOrientedBoundingBox","./Core/Occluder","./Core/OrientedBoundingBox","./Core/Packable","./Core/PackableForInterpolation","./Core/PinBuilder","./Core/PixelFormat","./Core/Plane","./Core/PolygonGeometry","./Core/PolygonGeometryLibrary","./Core/PolygonHierarchy","./Core/PolygonOutlineGeometry","./Core/PolygonPipeline","./Core/PolylineGeometry","./Core/PolylinePipeline","./Core/PolylineVolumeGeometry","./Core/PolylineVolumeGeometryLibrary","./Core/PolylineVolumeOutlineGeometry","./Core/PrimitiveType","./Core/QuadraticRealPolynomial","./Core/QuantizedMeshTerrainData","./Core/QuarticRealPolynomial","./Core/Quaternion","./Core/QuaternionSpline","./Core/Queue","./Core/Ray","./Core/Rectangle","./Core/RectangleGeometry","./Core/RectangleGeometryLibrary","./Core/RectangleOutlineGeometry","./Core/ReferenceFrame","./Core/RequestErrorEvent","./Core/RuntimeError","./Core/ScreenSpaceEventHandler","./Core/ScreenSpaceEventType","./Core/ShowGeometryInstanceAttribute","./Core/Simon1994PlanetaryPositions","./Core/SimplePolylineGeometry","./Core/SphereGeometry","./Core/SphereOutlineGeometry","./Core/Spherical","./Core/Spline","./Core/TaskProcessor","./Core/TerrainData","./Core/TerrainMesh","./Core/TerrainProvider","./Core/TileProviderError","./Core/TilingScheme","./Core/TimeConstants","./Core/TimeInterval","./Core/TimeIntervalCollection","./Core/TimeStandard","./Core/Tipsify","./Core/Transforms","./Core/TridiagonalSystemSolver","./Core/VRTheWorldTerrainProvider","./Core/VertexFormat","./Core/Visibility","./Core/WallGeometry","./Core/WallGeometryLibrary","./Core/WallOutlineGeometry","./Core/WebMercatorProjection","./Core/WebMercatorTilingScheme","./Core/WindingOrder","./Core/appendForwardSlash","./Core/barycentricCoordinates","./Core/binarySearch","./Core/buildModuleUrl","./Core/cancelAnimationFrame","./Core/clone","./Core/combine","./Core/createGuid","./Core/defaultValue","./Core/defineProperties","./Core/defined","./Core/definedNotNull","./Core/deprecationWarning","./Core/destroyObject","./Core/formatError","./Core/freezeObject","./Core/getFilenameFromUri","./Core/getImagePixels","./Core/getStringFromTypedArray","./Core/getTimestamp","./Core/isArray","./Core/isCrossOriginUrl","./Core/isLeapYear","./Core/jsonp","./Core/loadArrayBuffer","./Core/loadBlob","./Core/loadImage","./Core/loadImageFromTypedArray","./Core/loadImageViaBlob","./Core/loadJson","./Core/loadText","./Core/loadWithXhr","./Core/loadXML","./Core/mergeSort","./Core/objectToQuery","./Core/parseResponseHeaders","./Core/pointInsideTriangle","./Core/queryToObject","./Core/requestAnimationFrame","./Core/sampleTerrain","./Core/subdivideArray","./Core/throttleRequestByServer","./Core/wrapFunction","./Core/writeTextToCanvas","./DataSources/BillboardGraphics","./DataSources/BillboardVisualizer","./DataSources/BoundingSphereState","./DataSources/BoxGeometryUpdater","./DataSources/BoxGraphics","./DataSources/CallbackProperty","./DataSources/CheckerboardMaterialProperty","./DataSources/ColorMaterialProperty","./DataSources/CompositeEntityCollection","./DataSources/CompositeMaterialProperty","./DataSources/CompositePositionProperty","./DataSources/CompositeProperty","./DataSources/ConstantPositionProperty","./DataSources/ConstantProperty","./DataSources/CorridorGeometryUpdater","./DataSources/CorridorGraphics","./DataSources/CustomDataSource","./DataSources/CylinderGeometryUpdater","./DataSources/CylinderGraphics","./DataSources/CzmlDataSource","./DataSources/DataSource","./DataSources/DataSourceClock","./DataSources/DataSourceCollection","./DataSources/DataSourceDisplay","./DataSources/DynamicGeometryUpdater","./DataSources/EllipseGeometryUpdater","./DataSources/EllipseGraphics","./DataSources/EllipsoidGeometryUpdater","./DataSources/EllipsoidGraphics","./DataSources/Entity","./DataSources/EntityCollection","./DataSources/EntityView","./DataSources/GeoJsonDataSource","./DataSources/GeometryUpdater","./DataSources/GeometryVisualizer","./DataSources/GridMaterialProperty","./DataSources/ImageMaterialProperty","./DataSources/KmlDataSource","./DataSources/LabelGraphics","./DataSources/LabelVisualizer","./DataSources/MaterialProperty","./DataSources/ModelGraphics","./DataSources/ModelVisualizer","./DataSources/PathGraphics","./DataSources/PathVisualizer","./DataSources/PointGraphics","./DataSources/PointVisualizer","./DataSources/PolygonGeometryUpdater","./DataSources/PolygonGraphics","./DataSources/PolylineArrowMaterialProperty","./DataSources/PolylineGeometryUpdater","./DataSources/PolylineGlowMaterialProperty","./DataSources/PolylineGraphics","./DataSources/PolylineOutlineMaterialProperty","./DataSources/PolylineVolumeGeometryUpdater","./DataSources/PolylineVolumeGraphics","./DataSources/PositionProperty","./DataSources/PositionPropertyArray","./DataSources/Property","./DataSources/PropertyArray","./DataSources/RectangleGeometryUpdater","./DataSources/RectangleGraphics","./DataSources/ReferenceProperty","./DataSources/Rotation","./DataSources/SampledPositionProperty","./DataSources/SampledProperty","./DataSources/ScaledPositionProperty","./DataSources/StaticGeometryColorBatch","./DataSources/StaticGeometryPerMaterialBatch","./DataSources/StaticOutlineGeometryBatch","./DataSources/StripeMaterialProperty","./DataSources/StripeOrientation","./DataSources/TimeIntervalCollectionPositionProperty","./DataSources/TimeIntervalCollectionProperty","./DataSources/VelocityOrientationProperty","./DataSources/Visualizer","./DataSources/WallGeometryUpdater","./DataSources/WallGraphics","./DataSources/createMaterialPropertyDescriptor","./DataSources/createPropertyDescriptor","./DataSources/createRawPropertyDescriptor","./DataSources/dynamicGeometryGetBoundingSphere","./Renderer/AutomaticUniforms","./Renderer/Buffer","./Renderer/BufferUsage","./Renderer/ClearCommand","./Renderer/Context","./Renderer/CubeMap","./Renderer/CubeMapFace","./Renderer/DrawCommand","./Renderer/Framebuffer","./Renderer/MipmapHint","./Renderer/PassState","./Renderer/PickFramebuffer","./Renderer/PixelDatatype","./Renderer/RenderState","./Renderer/Renderbuffer","./Renderer/RenderbufferFormat","./Renderer/ShaderCache","./Renderer/ShaderProgram","./Renderer/ShaderSource","./Renderer/Texture","./Renderer/TextureMagnificationFilter","./Renderer/TextureMinificationFilter","./Renderer/TextureWrap","./Renderer/UniformState","./Renderer/VertexArray","./Renderer/VertexArrayFacade","./Renderer/createUniform","./Renderer/createUniformArray","./Renderer/loadCubeMap","./Scene/Appearance","./Scene/ArcGisMapServerImageryProvider","./Scene/Billboard","./Scene/BillboardCollection","./Scene/BingMapsImageryProvider","./Scene/BingMapsStyle","./Scene/BlendEquation","./Scene/BlendFunction","./Scene/BlendingState","./Scene/Camera","./Scene/CameraEventAggregator","./Scene/CameraEventType","./Scene/CameraFlightPath","./Scene/CreditDisplay","./Scene/CullFace","./Scene/CullingVolume","./Scene/DebugAppearance","./Scene/DebugModelMatrixPrimitive","./Scene/DepthFunction","./Scene/DiscardMissingTileImagePolicy","./Scene/EllipsoidPrimitive","./Scene/EllipsoidSurfaceAppearance","./Scene/FXAA","./Scene/FrameRateMonitor","./Scene/FrameState","./Scene/FrustumCommands","./Scene/GetFeatureInfoFormat","./Scene/Globe","./Scene/GlobeDepth","./Scene/GlobeSurfaceShaderSet","./Scene/GlobeSurfaceTile","./Scene/GlobeSurfaceTileProvider","./Scene/GoogleEarthImageryProvider","./Scene/GridImageryProvider","./Scene/HeadingPitchRange","./Scene/HeightReference","./Scene/HorizontalOrigin","./Scene/Imagery","./Scene/ImageryLayer","./Scene/ImageryLayerCollection","./Scene/ImageryLayerFeatureInfo","./Scene/ImageryProvider","./Scene/ImageryState","./Scene/Label","./Scene/LabelCollection","./Scene/LabelStyle","./Scene/Material","./Scene/MaterialAppearance","./Scene/Model","./Scene/ModelAnimation","./Scene/ModelAnimationCache","./Scene/ModelAnimationCollection","./Scene/ModelAnimationLoop","./Scene/ModelAnimationState","./Scene/ModelMaterial","./Scene/ModelMesh","./Scene/ModelNode","./Scene/Moon","./Scene/NeverTileDiscardPolicy","./Scene/OIT","./Scene/OpenStreetMapImageryProvider","./Scene/OrthographicFrustum","./Scene/Pass","./Scene/PerInstanceColorAppearance","./Scene/PerformanceDisplay","./Scene/PerspectiveFrustum","./Scene/PerspectiveOffCenterFrustum","./Scene/PickDepth","./Scene/PointPrimitive","./Scene/PointPrimitiveCollection","./Scene/Polygon","./Scene/Polyline","./Scene/PolylineCollection","./Scene/PolylineColorAppearance","./Scene/PolylineMaterialAppearance","./Scene/Primitive","./Scene/PrimitiveCollection","./Scene/PrimitivePipeline","./Scene/PrimitiveState","./Scene/QuadtreeOccluders","./Scene/QuadtreePrimitive","./Scene/QuadtreeTile","./Scene/QuadtreeTileLoadState","./Scene/QuadtreeTileProvider","./Scene/RectanglePrimitive","./Scene/Scene","./Scene/SceneMode","./Scene/SceneTransforms","./Scene/SceneTransitioner","./Scene/ScreenSpaceCameraController","./Scene/SingleTileImageryProvider","./Scene/SkyAtmosphere","./Scene/SkyBox","./Scene/StencilFunction","./Scene/StencilOperation","./Scene/Sun","./Scene/SunPostProcess","./Scene/TerrainState","./Scene/TextureAtlas","./Scene/TileCoordinatesImageryProvider","./Scene/TileDiscardPolicy","./Scene/TileImagery","./Scene/TileMapServiceImageryProvider","./Scene/TileReplacementQueue","./Scene/TileState","./Scene/TileTerrain","./Scene/TweenCollection","./Scene/UrlTemplateImageryProvider","./Scene/VerticalOrigin","./Scene/ViewportQuad","./Scene/WebMapServiceImageryProvider","./Scene/WebMapTileServiceImageryProvider","./Scene/createTangentSpaceDebugPrimitive","./Scene/getModelAccessor","./Scene/terrainAttributeLocations","./Shaders/AdjustTranslucentFS","./Shaders/Appearances/AllMaterialAppearanceFS","./Shaders/Appearances/AllMaterialAppearanceVS","./Shaders/Appearances/BasicMaterialAppearanceFS","./Shaders/Appearances/BasicMaterialAppearanceVS","./Shaders/Appearances/EllipsoidSurfaceAppearanceFS","./Shaders/Appearances/EllipsoidSurfaceAppearanceVS","./Shaders/Appearances/PerInstanceColorAppearanceFS","./Shaders/Appearances/PerInstanceColorAppearanceVS","./Shaders/Appearances/PerInstanceFlatColorAppearanceFS","./Shaders/Appearances/PerInstanceFlatColorAppearanceVS","./Shaders/Appearances/PolylineColorAppearanceVS","./Shaders/Appearances/PolylineMaterialAppearanceVS","./Shaders/Appearances/TexturedMaterialAppearanceFS","./Shaders/Appearances/TexturedMaterialAppearanceVS","./Shaders/BillboardCollectionFS","./Shaders/BillboardCollectionVS","./Shaders/Builtin/Constants/degreesPerRadian","./Shaders/Builtin/Constants/depthRange","./Shaders/Builtin/Constants/epsilon1","./Shaders/Builtin/Constants/epsilon2","./Shaders/Builtin/Constants/epsilon3","./Shaders/Builtin/Constants/epsilon4","./Shaders/Builtin/Constants/epsilon5","./Shaders/Builtin/Constants/epsilon6","./Shaders/Builtin/Constants/epsilon7","./Shaders/Builtin/Constants/infinity","./Shaders/Builtin/Constants/oneOverPi","./Shaders/Builtin/Constants/oneOverTwoPi","./Shaders/Builtin/Constants/pi","./Shaders/Builtin/Constants/piOverFour","./Shaders/Builtin/Constants/piOverSix","./Shaders/Builtin/Constants/piOverThree","./Shaders/Builtin/Constants/piOverTwo","./Shaders/Builtin/Constants/radiansPerDegree","./Shaders/Builtin/Constants/sceneMode2D","./Shaders/Builtin/Constants/sceneMode3D","./Shaders/Builtin/Constants/sceneModeColumbusView","./Shaders/Builtin/Constants/sceneModeMorphing","./Shaders/Builtin/Constants/solarRadius","./Shaders/Builtin/Constants/threePiOver2","./Shaders/Builtin/Constants/twoPi","./Shaders/Builtin/Constants/webMercatorMaxLatitude","./Shaders/Builtin/CzmBuiltins","./Shaders/Builtin/Functions/RGBToXYZ","./Shaders/Builtin/Functions/XYZToRGB","./Shaders/Builtin/Functions/alphaWeight","./Shaders/Builtin/Functions/antialias","./Shaders/Builtin/Functions/columbusViewMorph","./Shaders/Builtin/Functions/computePosition","./Shaders/Builtin/Functions/cosineAndSine","./Shaders/Builtin/Functions/decompressTextureCoordinates","./Shaders/Builtin/Functions/eastNorthUpToEyeCoordinates","./Shaders/Builtin/Functions/ellipsoidContainsPoint","./Shaders/Builtin/Functions/ellipsoidNew","./Shaders/Builtin/Functions/ellipsoidWgs84TextureCoordinates","./Shaders/Builtin/Functions/equalsEpsilon","./Shaders/Builtin/Functions/eyeOffset","./Shaders/Builtin/Functions/eyeToWindowCoordinates","./Shaders/Builtin/Functions/geodeticSurfaceNormal","./Shaders/Builtin/Functions/getDefaultMaterial","./Shaders/Builtin/Functions/getLambertDiffuse","./Shaders/Builtin/Functions/getSpecular","./Shaders/Builtin/Functions/getWaterNoise","./Shaders/Builtin/Functions/getWgs84EllipsoidEC","./Shaders/Builtin/Functions/hue","./Shaders/Builtin/Functions/isEmpty","./Shaders/Builtin/Functions/isFull","./Shaders/Builtin/Functions/latitudeToWebMercatorFraction","./Shaders/Builtin/Functions/luminance","./Shaders/Builtin/Functions/modelToWindowCoordinates","./Shaders/Builtin/Functions/multiplyWithColorBalance","./Shaders/Builtin/Functions/nearFarScalar","./Shaders/Builtin/Functions/octDecode","./Shaders/Builtin/Functions/packDepth","./Shaders/Builtin/Functions/phong","./Shaders/Builtin/Functions/pointAlongRay","./Shaders/Builtin/Functions/rayEllipsoidIntersectionInterval","./Shaders/Builtin/Functions/saturation","./Shaders/Builtin/Functions/signNotZero","./Shaders/Builtin/Functions/tangentToEyeSpaceMatrix","./Shaders/Builtin/Functions/translateRelativeToEye","./Shaders/Builtin/Functions/translucentPhong","./Shaders/Builtin/Functions/transpose","./Shaders/Builtin/Functions/unpackDepth","./Shaders/Builtin/Functions/windowToEyeCoordinates","./Shaders/Builtin/Structs/depthRangeStruct","./Shaders/Builtin/Structs/ellipsoid","./Shaders/Builtin/Structs/material","./Shaders/Builtin/Structs/materialInput","./Shaders/Builtin/Structs/ray","./Shaders/Builtin/Structs/raySegment","./Shaders/CompositeOITFS","./Shaders/EllipsoidFS","./Shaders/EllipsoidVS","./Shaders/GlobeFS","./Shaders/GlobeFSDepth","./Shaders/GlobeFSPole","./Shaders/GlobeVS","./Shaders/GlobeVSDepth","./Shaders/GlobeVSPole","./Shaders/Materials/BumpMapMaterial","./Shaders/Materials/CheckerboardMaterial","./Shaders/Materials/DotMaterial","./Shaders/Materials/FadeMaterial","./Shaders/Materials/GridMaterial","./Shaders/Materials/NormalMapMaterial","./Shaders/Materials/PolylineArrowMaterial","./Shaders/Materials/PolylineGlowMaterial","./Shaders/Materials/PolylineOutlineMaterial","./Shaders/Materials/RimLightingMaterial","./Shaders/Materials/StripeMaterial","./Shaders/Materials/Water","./Shaders/PointPrimitiveCollectionFS","./Shaders/PointPrimitiveCollectionVS","./Shaders/PolylineCommon","./Shaders/PolylineFS","./Shaders/PolylineVS","./Shaders/PostProcessFilters/AdditiveBlend","./Shaders/PostProcessFilters/BrightPass","./Shaders/PostProcessFilters/FXAA","./Shaders/PostProcessFilters/GaussianBlur1D","./Shaders/PostProcessFilters/PassThrough","./Shaders/ReprojectWebMercatorFS","./Shaders/ReprojectWebMercatorVS","./Shaders/SkyAtmosphereFS","./Shaders/SkyAtmosphereVS","./Shaders/SkyBoxFS","./Shaders/SkyBoxVS","./Shaders/SunFS","./Shaders/SunTextureFS","./Shaders/SunVS","./Shaders/ViewportQuadFS","./Shaders/ViewportQuadVS","./ThirdParty/Autolinker","./ThirdParty/Tween","./ThirdParty/Uri","./ThirdParty/gltfDefaults","./ThirdParty/knockout-3.2.0","./ThirdParty/knockout-es5","./ThirdParty/knockout","./ThirdParty/measureText","./ThirdParty/mersenne-twister","./ThirdParty/sprintf","./ThirdParty/topojson","./ThirdParty/when","./ThirdParty/zip","./Widgets/Animation/Animation","./Widgets/Animation/AnimationViewModel","./Widgets/BaseLayerPicker/BaseLayerPicker","./Widgets/BaseLayerPicker/BaseLayerPickerViewModel","./Widgets/BaseLayerPicker/ProviderViewModel","./Widgets/BaseLayerPicker/createDefaultImageryProviderViewModels","./Widgets/BaseLayerPicker/createDefaultTerrainProviderViewModels","./Widgets/CesiumInspector/CesiumInspector","./Widgets/CesiumInspector/CesiumInspectorViewModel","./Widgets/CesiumWidget/CesiumWidget","./Widgets/ClockViewModel","./Widgets/Command","./Widgets/FullscreenButton/FullscreenButton","./Widgets/FullscreenButton/FullscreenButtonViewModel","./Widgets/Geocoder/Geocoder","./Widgets/Geocoder/GeocoderViewModel","./Widgets/HomeButton/HomeButton","./Widgets/HomeButton/HomeButtonViewModel","./Widgets/InfoBox/InfoBox","./Widgets/InfoBox/InfoBoxViewModel","./Widgets/NavigationHelpButton/NavigationHelpButton","./Widgets/NavigationHelpButton/NavigationHelpButtonViewModel","./Widgets/PerformanceWatchdog/PerformanceWatchdog","./Widgets/PerformanceWatchdog/PerformanceWatchdogViewModel","./Widgets/SceneModePicker/SceneModePicker","./Widgets/SceneModePicker/SceneModePickerViewModel","./Widgets/SelectionIndicator/SelectionIndicator","./Widgets/SelectionIndicator/SelectionIndicatorViewModel","./Widgets/SvgPathBindingHandler","./Widgets/Timeline/Timeline","./Widgets/Timeline/TimelineHighlightRange","./Widgets/Timeline/TimelineTrack","./Widgets/ToggleButtonViewModel","./Widgets/Viewer/Viewer","./Widgets/Viewer/viewerCesiumInspectorMixin","./Widgets/Viewer/viewerDragDropMixin","./Widgets/Viewer/viewerPerformanceWatchdogMixin","./Widgets/createCommand","./Widgets/getElement","./Widgets/subscribeAndEvaluate","./Workers/createTaskProcessorWorker"],function(e,t,i,r,n,o,a,s,l,u,c,h,d,p,m,f,v,g,_,y,C,w,S,E,b,x,T,P,A,D,M,I,O,R,L,N,F,B,z,k,V,U,W,G,H,q,j,Y,X,Z,J,Q,K,$,et,tt,it,rt,nt,ot,at,st,lt,ut,ct,ht,dt,pt,mt,ft,vt,gt,_t,yt,Ct,wt,St,Et,bt,xt,Tt,Pt,At,Dt,Mt,It,Ot,Rt,Lt,Nt,Ft,Bt,zt,kt,Vt,Ut,Wt,Gt,Ht,qt,jt,Yt,Xt,Zt,Jt,Qt,Kt,$t,ei,ti,ii,ri,ni,oi,ai,si,li,ui,ci,hi,di,pi,mi,fi,vi,gi,_i,yi,Ci,wi,Si,Ei,bi,xi,Ti,Pi,Ai,Di,Mi,Ii,Oi,Ri,Li,Ni,Fi,Bi,zi,ki,Vi,Ui,Wi,Gi,Hi,qi,ji,Yi,Xi,Zi,Ji,Qi,Ki,$i,er,tr,ir,rr,nr,or,ar,sr,lr,ur,cr,hr,dr,pr,mr,fr,vr,gr,_r,yr,Cr,wr,Sr,Er,br,xr,Tr,Pr,Ar,Dr,Mr,Ir,Or,Rr,Lr,Nr,Fr,Br,zr,kr,Vr,Ur,Wr,Gr,Hr,qr,jr,Yr,Xr,Zr,Jr,Qr,Kr,$r,en,tn,rn,nn,on,an,sn,ln,un,cn,hn,dn,pn,mn,fn,vn,gn,_n,yn,Cn,wn,Sn,En,bn,xn,Tn,Pn,An,Dn,Mn,In,On,Rn,Ln,Nn,Fn,Bn,zn,kn,Vn,Un,Wn,Gn,Hn,qn,jn,Yn,Xn,Zn,Jn,Qn,Kn,$n,eo,to,io,ro,no,oo,ao,so,lo,uo,co,ho,po,mo,fo,vo,go,_o,yo,Co,wo,So,Eo,bo,xo,To,Po,Ao,Do,Mo,Io,Oo,Ro,Lo,No,Fo,Bo,zo,ko,Vo,Uo,Wo,Go,Ho,qo,jo,Yo,Xo,Zo,Jo,Qo,Ko,$o,ea,ta,ia,ra,na,oa,aa,sa,la,ua,ca,ha,da,pa,ma,fa,va,ga,_a,ya,Ca,wa,Sa,Ea,ba,xa,Ta,Pa,Aa,Da,Ma,Ia,Oa,Ra,La,Na,Fa,Ba,za,ka,Va,Ua,Wa,Ga,Ha,qa,ja,Ya,Xa,Za,Ja,Qa,Ka,$a,es,ts,is,rs,ns,os,as,ss,ls,us,cs,hs,ds,ps,ms,fs,vs,gs,_s,ys,Cs,ws,Ss,Es,bs,xs,Ts,Ps,As,Ds,Ms,Is,Os,Rs,Ls,Ns,Fs,Bs,zs,ks,Vs,Us,Ws,Gs,Hs,qs,js,Ys,Xs,Zs,Js,Qs,Ks,$s,el,tl,il,rl,nl,ol,al,sl,ll,ul,cl,hl,dl,pl,ml,fl,vl,gl,_l,yl,Cl,wl,Sl,El,bl,xl,Tl,Pl,Al,Dl,Ml,Il,Ol,Rl,Ll,Nl,Fl,Bl,zl,kl,Vl,Ul,Wl,Gl,Hl,ql,jl,Yl,Xl,Zl,Jl,Ql,Kl,$l,eu,tu,iu,ru,nu,ou,au,su,lu,uu,cu,hu,du,pu,mu,fu,vu,gu,_u,yu,Cu,wu,Su,Eu,bu,xu,Tu,Pu,Au,Du,Mu,Iu,Ou,Ru,Lu,Nu,Fu,Bu,zu,ku,Vu,Uu,Wu,Gu,Hu,qu,ju,Yu,Xu,Zu,Ju,Qu,Ku,$u,ec,tc,ic,rc,nc,oc,ac,sc,lc,uc,cc,hc,dc,pc,mc,fc,vc,gc,_c,yc,Cc,wc,Sc,Ec,bc,xc,Tc,Pc,Ac,Dc,Mc,Ic,Oc,Rc,Lc,Nc,Fc,Bc,zc,kc,Vc,Uc,Wc,Gc,Hc,qc,jc,Yc,Xc,Zc,Jc,Qc,Kc,$c,eh,th,ih,rh,nh,oh,ah,sh,lh,uh,ch,hh,dh,ph,mh,fh,vh,gh,_h,yh,Ch){"use strict"; +var wh={VERSION:"1.11",_shaders:{}};return wh.ArcGisImageServerTerrainProvider=e,wh.AssociativeArray=t,wh.AttributeCompression=i,wh.AxisAlignedBoundingBox=r,wh.BingMapsApi=n,wh.BoundingRectangle=o,wh.BoundingSphere=a,wh.BoxGeometry=s,wh.BoxOutlineGeometry=l,wh.Cartesian2=u,wh.Cartesian3=c,wh.Cartesian4=h,wh.Cartographic=d,wh.CatmullRomSpline=p,wh.CesiumTerrainProvider=m,wh.CircleGeometry=f,wh.CircleOutlineGeometry=v,wh.Clock=g,wh.ClockRange=_,wh.ClockStep=y,wh.Color=C,wh.ColorGeometryInstanceAttribute=w,wh.ComponentDatatype=S,wh.CornerType=E,wh.CorridorGeometry=b,wh.CorridorGeometryLibrary=x,wh.CorridorOutlineGeometry=T,wh.Credit=P,wh.CubicRealPolynomial=A,wh.CylinderGeometry=D,wh.CylinderGeometryLibrary=M,wh.CylinderOutlineGeometry=I,wh.DefaultProxy=O,wh.DeveloperError=R,wh.EarthOrientationParameters=L,wh.EarthOrientationParametersSample=N,wh.EasingFunction=F,wh.EllipseGeometry=B,wh.EllipseGeometryLibrary=z,wh.EllipseOutlineGeometry=k,wh.Ellipsoid=V,wh.EllipsoidGeodesic=U,wh.EllipsoidGeometry=W,wh.EllipsoidOutlineGeometry=G,wh.EllipsoidTangentPlane=H,wh.EllipsoidTerrainProvider=q,wh.EllipsoidalOccluder=j,wh.EncodedCartesian3=Y,wh.Event=X,wh.EventHelper=Z,wh.ExtrapolationType=J,wh.FeatureDetection=Q,wh.Fullscreen=K,wh.GeographicProjection=$,wh.GeographicTilingScheme=et,wh.Geometry=tt,wh.GeometryAttribute=it,wh.GeometryAttributes=rt,wh.GeometryInstance=nt,wh.GeometryInstanceAttribute=ot,wh.GeometryPipeline=at,wh.GeometryType=st,wh.GregorianDate=lt,wh.HeightmapTerrainData=ut,wh.HeightmapTessellator=ct,wh.HermitePolynomialApproximation=ht,wh.HermiteSpline=dt,wh.Iau2000Orientation=pt,wh.Iau2006XysData=mt,wh.Iau2006XysSample=ft,wh.IauOrientationAxes=vt,wh.IauOrientationParameters=gt,wh.IndexDatatype=_t,wh.InterpolationAlgorithm=yt,wh.Intersect=Ct,wh.IntersectionTests=wt,wh.Intersections2D=St,wh.Interval=Et,wh.Iso8601=bt,wh.JulianDate=xt,wh.KeyboardEventModifier=Tt,wh.LagrangePolynomialApproximation=Pt,wh.LeapSecond=At,wh.LinearApproximation=Dt,wh.LinearSpline=Mt,wh.MapProjection=It,wh.Math=Ot,wh.Matrix2=Rt,wh.Matrix3=Lt,wh.Matrix4=Nt,wh.NearFarScalar=Ft,wh.ObjectOrientedBoundingBox=Bt,wh.Occluder=zt,wh.OrientedBoundingBox=kt,wh.Packable=Vt,wh.PackableForInterpolation=Ut,wh.PinBuilder=Wt,wh.PixelFormat=Gt,wh.Plane=Ht,wh.PolygonGeometry=qt,wh.PolygonGeometryLibrary=jt,wh.PolygonHierarchy=Yt,wh.PolygonOutlineGeometry=Xt,wh.PolygonPipeline=Zt,wh.PolylineGeometry=Jt,wh.PolylinePipeline=Qt,wh.PolylineVolumeGeometry=Kt,wh.PolylineVolumeGeometryLibrary=$t,wh.PolylineVolumeOutlineGeometry=ei,wh.PrimitiveType=ti,wh.QuadraticRealPolynomial=ii,wh.QuantizedMeshTerrainData=ri,wh.QuarticRealPolynomial=ni,wh.Quaternion=oi,wh.QuaternionSpline=ai,wh.Queue=si,wh.Ray=li,wh.Rectangle=ui,wh.RectangleGeometry=ci,wh.RectangleGeometryLibrary=hi,wh.RectangleOutlineGeometry=di,wh.ReferenceFrame=pi,wh.RequestErrorEvent=mi,wh.RuntimeError=fi,wh.ScreenSpaceEventHandler=vi,wh.ScreenSpaceEventType=gi,wh.ShowGeometryInstanceAttribute=_i,wh.Simon1994PlanetaryPositions=yi,wh.SimplePolylineGeometry=Ci,wh.SphereGeometry=wi,wh.SphereOutlineGeometry=Si,wh.Spherical=Ei,wh.Spline=bi,wh.TaskProcessor=xi,wh.TerrainData=Ti,wh.TerrainMesh=Pi,wh.TerrainProvider=Ai,wh.TileProviderError=Di,wh.TilingScheme=Mi,wh.TimeConstants=Ii,wh.TimeInterval=Oi,wh.TimeIntervalCollection=Ri,wh.TimeStandard=Li,wh.Tipsify=Ni,wh.Transforms=Fi,wh.TridiagonalSystemSolver=Bi,wh.VRTheWorldTerrainProvider=zi,wh.VertexFormat=ki,wh.Visibility=Vi,wh.WallGeometry=Ui,wh.WallGeometryLibrary=Wi,wh.WallOutlineGeometry=Gi,wh.WebMercatorProjection=Hi,wh.WebMercatorTilingScheme=qi,wh.WindingOrder=ji,wh.appendForwardSlash=Yi,wh.barycentricCoordinates=Xi,wh.binarySearch=Zi,wh.buildModuleUrl=Ji,wh.cancelAnimationFrame=Qi,wh.clone=Ki,wh.combine=$i,wh.createGuid=er,wh.defaultValue=tr,wh.defineProperties=ir,wh.defined=rr,wh.definedNotNull=nr,wh.deprecationWarning=or,wh.destroyObject=ar,wh.formatError=sr,wh.freezeObject=lr,wh.getFilenameFromUri=ur,wh.getImagePixels=cr,wh.getStringFromTypedArray=hr,wh.getTimestamp=dr,wh.isArray=pr,wh.isCrossOriginUrl=mr,wh.isLeapYear=fr,wh.jsonp=vr,wh.loadArrayBuffer=gr,wh.loadBlob=_r,wh.loadImage=yr,wh.loadImageFromTypedArray=Cr,wh.loadImageViaBlob=wr,wh.loadJson=Sr,wh.loadText=Er,wh.loadWithXhr=br,wh.loadXML=xr,wh.mergeSort=Tr,wh.objectToQuery=Pr,wh.parseResponseHeaders=Ar,wh.pointInsideTriangle=Dr,wh.queryToObject=Mr,wh.requestAnimationFrame=Ir,wh.sampleTerrain=Or,wh.subdivideArray=Rr,wh.throttleRequestByServer=Lr,wh.wrapFunction=Nr,wh.writeTextToCanvas=Fr,wh.BillboardGraphics=Br,wh.BillboardVisualizer=zr,wh.BoundingSphereState=kr,wh.BoxGeometryUpdater=Vr,wh.BoxGraphics=Ur,wh.CallbackProperty=Wr,wh.CheckerboardMaterialProperty=Gr,wh.ColorMaterialProperty=Hr,wh.CompositeEntityCollection=qr,wh.CompositeMaterialProperty=jr,wh.CompositePositionProperty=Yr,wh.CompositeProperty=Xr,wh.ConstantPositionProperty=Zr,wh.ConstantProperty=Jr,wh.CorridorGeometryUpdater=Qr,wh.CorridorGraphics=Kr,wh.CustomDataSource=$r,wh.CylinderGeometryUpdater=en,wh.CylinderGraphics=tn,wh.CzmlDataSource=rn,wh.DataSource=nn,wh.DataSourceClock=on,wh.DataSourceCollection=an,wh.DataSourceDisplay=sn,wh.DynamicGeometryUpdater=ln,wh.EllipseGeometryUpdater=un,wh.EllipseGraphics=cn,wh.EllipsoidGeometryUpdater=hn,wh.EllipsoidGraphics=dn,wh.Entity=pn,wh.EntityCollection=mn,wh.EntityView=fn,wh.GeoJsonDataSource=vn,wh.GeometryUpdater=gn,wh.GeometryVisualizer=_n,wh.GridMaterialProperty=yn,wh.ImageMaterialProperty=Cn,wh.KmlDataSource=wn,wh.LabelGraphics=Sn,wh.LabelVisualizer=En,wh.MaterialProperty=bn,wh.ModelGraphics=xn,wh.ModelVisualizer=Tn,wh.PathGraphics=Pn,wh.PathVisualizer=An,wh.PointGraphics=Dn,wh.PointVisualizer=Mn,wh.PolygonGeometryUpdater=In,wh.PolygonGraphics=On,wh.PolylineArrowMaterialProperty=Rn,wh.PolylineGeometryUpdater=Ln,wh.PolylineGlowMaterialProperty=Nn,wh.PolylineGraphics=Fn,wh.PolylineOutlineMaterialProperty=Bn,wh.PolylineVolumeGeometryUpdater=zn,wh.PolylineVolumeGraphics=kn,wh.PositionProperty=Vn,wh.PositionPropertyArray=Un,wh.Property=Wn,wh.PropertyArray=Gn,wh.RectangleGeometryUpdater=Hn,wh.RectangleGraphics=qn,wh.ReferenceProperty=jn,wh.Rotation=Yn,wh.SampledPositionProperty=Xn,wh.SampledProperty=Zn,wh.ScaledPositionProperty=Jn,wh.StaticGeometryColorBatch=Qn,wh.StaticGeometryPerMaterialBatch=Kn,wh.StaticOutlineGeometryBatch=$n,wh.StripeMaterialProperty=eo,wh.StripeOrientation=to,wh.TimeIntervalCollectionPositionProperty=io,wh.TimeIntervalCollectionProperty=ro,wh.VelocityOrientationProperty=no,wh.Visualizer=oo,wh.WallGeometryUpdater=ao,wh.WallGraphics=so,wh.createMaterialPropertyDescriptor=lo,wh.createPropertyDescriptor=uo,wh.createRawPropertyDescriptor=co,wh.dynamicGeometryGetBoundingSphere=ho,wh.AutomaticUniforms=po,wh.Buffer=mo,wh.BufferUsage=fo,wh.ClearCommand=vo,wh.Context=go,wh.CubeMap=_o,wh.CubeMapFace=yo,wh.DrawCommand=Co,wh.Framebuffer=wo,wh.MipmapHint=So,wh.PassState=Eo,wh.PickFramebuffer=bo,wh.PixelDatatype=xo,wh.RenderState=To,wh.Renderbuffer=Po,wh.RenderbufferFormat=Ao,wh.ShaderCache=Do,wh.ShaderProgram=Mo,wh.ShaderSource=Io,wh.Texture=Oo,wh.TextureMagnificationFilter=Ro,wh.TextureMinificationFilter=Lo,wh.TextureWrap=No,wh.UniformState=Fo,wh.VertexArray=Bo,wh.VertexArrayFacade=zo,wh.createUniform=ko,wh.createUniformArray=Vo,wh.loadCubeMap=Uo,wh.Appearance=Wo,wh.ArcGisMapServerImageryProvider=Go,wh.Billboard=Ho,wh.BillboardCollection=qo,wh.BingMapsImageryProvider=jo,wh.BingMapsStyle=Yo,wh.BlendEquation=Xo,wh.BlendFunction=Zo,wh.BlendingState=Jo,wh.Camera=Qo,wh.CameraEventAggregator=Ko,wh.CameraEventType=$o,wh.CameraFlightPath=ea,wh.CreditDisplay=ta,wh.CullFace=ia,wh.CullingVolume=ra,wh.DebugAppearance=na,wh.DebugModelMatrixPrimitive=oa,wh.DepthFunction=aa,wh.DiscardMissingTileImagePolicy=sa,wh.EllipsoidPrimitive=la,wh.EllipsoidSurfaceAppearance=ua,wh.FXAA=ca,wh.FrameRateMonitor=ha,wh.FrameState=da,wh.FrustumCommands=pa,wh.GetFeatureInfoFormat=ma,wh.Globe=fa,wh.GlobeDepth=va,wh.GlobeSurfaceShaderSet=ga,wh.GlobeSurfaceTile=_a,wh.GlobeSurfaceTileProvider=ya,wh.GoogleEarthImageryProvider=Ca,wh.GridImageryProvider=wa,wh.HeadingPitchRange=Sa,wh.HeightReference=Ea,wh.HorizontalOrigin=ba,wh.Imagery=xa,wh.ImageryLayer=Ta,wh.ImageryLayerCollection=Pa,wh.ImageryLayerFeatureInfo=Aa,wh.ImageryProvider=Da,wh.ImageryState=Ma,wh.Label=Ia,wh.LabelCollection=Oa,wh.LabelStyle=Ra,wh.Material=La,wh.MaterialAppearance=Na,wh.Model=Fa,wh.ModelAnimation=Ba,wh.ModelAnimationCache=za,wh.ModelAnimationCollection=ka,wh.ModelAnimationLoop=Va,wh.ModelAnimationState=Ua,wh.ModelMaterial=Wa,wh.ModelMesh=Ga,wh.ModelNode=Ha,wh.Moon=qa,wh.NeverTileDiscardPolicy=ja,wh.OIT=Ya,wh.OpenStreetMapImageryProvider=Xa,wh.OrthographicFrustum=Za,wh.Pass=Ja,wh.PerInstanceColorAppearance=Qa,wh.PerformanceDisplay=Ka,wh.PerspectiveFrustum=$a,wh.PerspectiveOffCenterFrustum=es,wh.PickDepth=ts,wh.PointPrimitive=is,wh.PointPrimitiveCollection=rs,wh.Polygon=ns,wh.Polyline=os,wh.PolylineCollection=as,wh.PolylineColorAppearance=ss,wh.PolylineMaterialAppearance=ls,wh.Primitive=us,wh.PrimitiveCollection=cs,wh.PrimitivePipeline=hs,wh.PrimitiveState=ds,wh.QuadtreeOccluders=ps,wh.QuadtreePrimitive=ms,wh.QuadtreeTile=fs,wh.QuadtreeTileLoadState=vs,wh.QuadtreeTileProvider=gs,wh.RectanglePrimitive=_s,wh.Scene=ys,wh.SceneMode=Cs,wh.SceneTransforms=ws,wh.SceneTransitioner=Ss,wh.ScreenSpaceCameraController=Es,wh.SingleTileImageryProvider=bs,wh.SkyAtmosphere=xs,wh.SkyBox=Ts,wh.StencilFunction=Ps,wh.StencilOperation=As,wh.Sun=Ds,wh.SunPostProcess=Ms,wh.TerrainState=Is,wh.TextureAtlas=Os,wh.TileCoordinatesImageryProvider=Rs,wh.TileDiscardPolicy=Ls,wh.TileImagery=Ns,wh.TileMapServiceImageryProvider=Fs,wh.TileReplacementQueue=Bs,wh.TileState=zs,wh.TileTerrain=ks,wh.TweenCollection=Vs,wh.UrlTemplateImageryProvider=Us,wh.VerticalOrigin=Ws,wh.ViewportQuad=Gs,wh.WebMapServiceImageryProvider=Hs,wh.WebMapTileServiceImageryProvider=qs,wh.createTangentSpaceDebugPrimitive=js,wh.getModelAccessor=Ys,wh.terrainAttributeLocations=Xs,wh._shaders.AdjustTranslucentFS=Zs,wh._shaders.AllMaterialAppearanceFS=Js,wh._shaders.AllMaterialAppearanceVS=Qs,wh._shaders.BasicMaterialAppearanceFS=Ks,wh._shaders.BasicMaterialAppearanceVS=$s,wh._shaders.EllipsoidSurfaceAppearanceFS=el,wh._shaders.EllipsoidSurfaceAppearanceVS=tl,wh._shaders.PerInstanceColorAppearanceFS=il,wh._shaders.PerInstanceColorAppearanceVS=rl,wh._shaders.PerInstanceFlatColorAppearanceFS=nl,wh._shaders.PerInstanceFlatColorAppearanceVS=ol,wh._shaders.PolylineColorAppearanceVS=al,wh._shaders.PolylineMaterialAppearanceVS=sl,wh._shaders.TexturedMaterialAppearanceFS=ll,wh._shaders.TexturedMaterialAppearanceVS=ul,wh._shaders.BillboardCollectionFS=cl,wh._shaders.BillboardCollectionVS=hl,wh._shaders.degreesPerRadian=dl,wh._shaders.depthRange=pl,wh._shaders.epsilon1=ml,wh._shaders.epsilon2=fl,wh._shaders.epsilon3=vl,wh._shaders.epsilon4=gl,wh._shaders.epsilon5=_l,wh._shaders.epsilon6=yl,wh._shaders.epsilon7=Cl,wh._shaders.infinity=wl,wh._shaders.oneOverPi=Sl,wh._shaders.oneOverTwoPi=El,wh._shaders.pi=bl,wh._shaders.piOverFour=xl,wh._shaders.piOverSix=Tl,wh._shaders.piOverThree=Pl,wh._shaders.piOverTwo=Al,wh._shaders.radiansPerDegree=Dl,wh._shaders.sceneMode2D=Ml,wh._shaders.sceneMode3D=Il,wh._shaders.sceneModeColumbusView=Ol,wh._shaders.sceneModeMorphing=Rl,wh._shaders.solarRadius=Ll,wh._shaders.threePiOver2=Nl,wh._shaders.twoPi=Fl,wh._shaders.webMercatorMaxLatitude=Bl,wh._shaders.CzmBuiltins=zl,wh._shaders.RGBToXYZ=kl,wh._shaders.XYZToRGB=Vl,wh._shaders.alphaWeight=Ul,wh._shaders.antialias=Wl,wh._shaders.columbusViewMorph=Gl,wh._shaders.computePosition=Hl,wh._shaders.cosineAndSine=ql,wh._shaders.decompressTextureCoordinates=jl,wh._shaders.eastNorthUpToEyeCoordinates=Yl,wh._shaders.ellipsoidContainsPoint=Xl,wh._shaders.ellipsoidNew=Zl,wh._shaders.ellipsoidWgs84TextureCoordinates=Jl,wh._shaders.equalsEpsilon=Ql,wh._shaders.eyeOffset=Kl,wh._shaders.eyeToWindowCoordinates=$l,wh._shaders.geodeticSurfaceNormal=eu,wh._shaders.getDefaultMaterial=tu,wh._shaders.getLambertDiffuse=iu,wh._shaders.getSpecular=ru,wh._shaders.getWaterNoise=nu,wh._shaders.getWgs84EllipsoidEC=ou,wh._shaders.hue=au,wh._shaders.isEmpty=su,wh._shaders.isFull=lu,wh._shaders.latitudeToWebMercatorFraction=uu,wh._shaders.luminance=cu,wh._shaders.modelToWindowCoordinates=hu,wh._shaders.multiplyWithColorBalance=du,wh._shaders.nearFarScalar=pu,wh._shaders.octDecode=mu,wh._shaders.packDepth=fu,wh._shaders.phong=vu,wh._shaders.pointAlongRay=gu,wh._shaders.rayEllipsoidIntersectionInterval=_u,wh._shaders.saturation=yu,wh._shaders.signNotZero=Cu,wh._shaders.tangentToEyeSpaceMatrix=wu,wh._shaders.translateRelativeToEye=Su,wh._shaders.translucentPhong=Eu,wh._shaders.transpose=bu,wh._shaders.unpackDepth=xu,wh._shaders.windowToEyeCoordinates=Tu,wh._shaders.depthRangeStruct=Pu,wh._shaders.ellipsoid=Au,wh._shaders.material=Du,wh._shaders.materialInput=Mu,wh._shaders.ray=Iu,wh._shaders.raySegment=Ou,wh._shaders.CompositeOITFS=Ru,wh._shaders.EllipsoidFS=Lu,wh._shaders.EllipsoidVS=Nu,wh._shaders.GlobeFS=Fu,wh._shaders.GlobeFSDepth=Bu,wh._shaders.GlobeFSPole=zu,wh._shaders.GlobeVS=ku,wh._shaders.GlobeVSDepth=Vu,wh._shaders.GlobeVSPole=Uu,wh._shaders.BumpMapMaterial=Wu,wh._shaders.CheckerboardMaterial=Gu,wh._shaders.DotMaterial=Hu,wh._shaders.FadeMaterial=qu,wh._shaders.GridMaterial=ju,wh._shaders.NormalMapMaterial=Yu,wh._shaders.PolylineArrowMaterial=Xu,wh._shaders.PolylineGlowMaterial=Zu,wh._shaders.PolylineOutlineMaterial=Ju,wh._shaders.RimLightingMaterial=Qu,wh._shaders.StripeMaterial=Ku,wh._shaders.Water=$u,wh._shaders.PointPrimitiveCollectionFS=ec,wh._shaders.PointPrimitiveCollectionVS=tc,wh._shaders.PolylineCommon=ic,wh._shaders.PolylineFS=rc,wh._shaders.PolylineVS=nc,wh._shaders.AdditiveBlend=oc,wh._shaders.BrightPass=ac,wh._shaders.FXAA=sc,wh._shaders.GaussianBlur1D=lc,wh._shaders.PassThrough=uc,wh._shaders.ReprojectWebMercatorFS=cc,wh._shaders.ReprojectWebMercatorVS=hc,wh._shaders.SkyAtmosphereFS=dc,wh._shaders.SkyAtmosphereVS=pc,wh._shaders.SkyBoxFS=mc,wh._shaders.SkyBoxVS=fc,wh._shaders.SunFS=vc,wh._shaders.SunTextureFS=gc,wh._shaders.SunVS=_c,wh._shaders.ViewportQuadFS=yc,wh._shaders.ViewportQuadVS=Cc,wh.Autolinker=wc,wh.Tween=Sc,wh.Uri=Ec,wh.gltfDefaults=bc,wh["knockout-3.2.0"]=xc,wh["knockout-es5"]=Tc,wh.knockout=Pc,wh.measureText=Ac,wh["mersenne-twister"]=Dc,wh.sprintf=Mc,wh.topojson=Ic,wh.when=Oc,wh.zip=Rc,wh.Animation=Lc,wh.AnimationViewModel=Nc,wh.BaseLayerPicker=Fc,wh.BaseLayerPickerViewModel=Bc,wh.ProviderViewModel=zc,wh.createDefaultImageryProviderViewModels=kc,wh.createDefaultTerrainProviderViewModels=Vc,wh.CesiumInspector=Uc,wh.CesiumInspectorViewModel=Wc,wh.CesiumWidget=Gc,wh.ClockViewModel=Hc,wh.Command=qc,wh.FullscreenButton=jc,wh.FullscreenButtonViewModel=Yc,wh.Geocoder=Xc,wh.GeocoderViewModel=Zc,wh.HomeButton=Jc,wh.HomeButtonViewModel=Qc,wh.InfoBox=Kc,wh.InfoBoxViewModel=$c,wh.NavigationHelpButton=eh,wh.NavigationHelpButtonViewModel=th,wh.PerformanceWatchdog=ih,wh.PerformanceWatchdogViewModel=rh,wh.SceneModePicker=nh,wh.SceneModePickerViewModel=oh,wh.SelectionIndicator=ah,wh.SelectionIndicatorViewModel=sh,wh.SvgPathBindingHandler=lh,wh.Timeline=uh,wh.TimelineHighlightRange=ch,wh.TimelineTrack=hh,wh.ToggleButtonViewModel=dh,wh.Viewer=ph,wh.viewerCesiumInspectorMixin=mh,wh.viewerDragDropMixin=fh,wh.viewerPerformanceWatchdogMixin=vh,wh.createCommand=gh,wh.getElement=_h,wh.subscribeAndEvaluate=yh,wh.createTaskProcessorWorker=Ch,wh}),t(["Cesium"],function(e){"use strict";var t="undefined"!=typeof window?window:"undefined"!=typeof self?self:{};t.Cesium=e},void 0,!0)}(); \ No newline at end of file diff --git a/libs/Cesium/ThirdParty/Workers/deflate.js b/libs/Cesium/ThirdParty/Workers/deflate.js new file mode 100644 index 0000000000..b3df40a125 --- /dev/null +++ b/libs/Cesium/ThirdParty/Workers/deflate.js @@ -0,0 +1,51 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/* + Copyright (c) 2013 Gildas Lormeau. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the distribution. + + 3. The names of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, + INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +!function(e){function t(){function e(e){var t,n,i,r,_,o,d=a.dyn_tree,f=a.stat_desc.static_tree,l=a.stat_desc.extra_bits,s=a.stat_desc.extra_base,c=a.stat_desc.max_length,p=0;for(r=0;u>=r;r++)e.bl_count[r]=0;for(d[2*e.heap[e.heap_max]+1]=0,t=e.heap_max+1;h>t;t++)n=e.heap[t],r=d[2*d[2*n+1]+1]+1,r>c&&(r=c,p++),d[2*n+1]=r,n>a.max_code||(e.bl_count[r]++,_=0,n>=s&&(_=l[n-s]),o=d[2*n],e.opt_len+=o*(r+_),f&&(e.static_len+=o*(f[2*n+1]+_)));if(0!==p){do{for(r=c-1;0===e.bl_count[r];)r--;e.bl_count[r]--,e.bl_count[r+1]+=2,e.bl_count[c]--,p-=2}while(p>0);for(r=c;0!==r;r--)for(n=e.bl_count[r];0!==n;)i=e.heap[--t],i>a.max_code||(d[2*i+1]!=r&&(e.opt_len+=(r-d[2*i+1])*d[2*i],d[2*i+1]=r),n--)}}function t(e,t){var n=0;do n|=1&e,e>>>=1,n<<=1;while(--t>0);return n>>>1}function n(e,n,a){var i,r,_,o=[],d=0;for(i=1;u>=i;i++)o[i]=d=d+a[i-1]<<1;for(r=0;n>=r;r++)_=e[2*r+1],0!==_&&(e[2*r]=t(o[_]++,_))}var a=this;a.build_tree=function(t){var i,r,_,o=a.dyn_tree,u=a.stat_desc.static_tree,d=a.stat_desc.elems,f=-1;for(t.heap_len=0,t.heap_max=h,i=0;d>i;i++)0!==o[2*i]?(t.heap[++t.heap_len]=f=i,t.depth[i]=0):o[2*i+1]=0;for(;t.heap_len<2;)_=t.heap[++t.heap_len]=2>f?++f:0,o[2*_]=1,t.depth[_]=0,t.opt_len--,u&&(t.static_len-=u[2*_+1]);for(a.max_code=f,i=Math.floor(t.heap_len/2);i>=1;i--)t.pqdownheap(o,i);_=d;do i=t.heap[1],t.heap[1]=t.heap[t.heap_len--],t.pqdownheap(o,1),r=t.heap[1],t.heap[--t.heap_max]=i,t.heap[--t.heap_max]=r,o[2*_]=o[2*i]+o[2*r],t.depth[_]=Math.max(t.depth[i],t.depth[r])+1,o[2*i+1]=o[2*r+1]=_,t.heap[1]=_++,t.pqdownheap(o,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],e(t),n(o,a.max_code,t.bl_count)}}function n(e,t,n,a,i){var r=this;r.static_tree=e,r.extra_bits=t,r.extra_base=n,r.elems=a,r.max_length=i}function a(e,t,n,a,i){var r=this;r.good_length=e,r.max_lazy=t,r.nice_length=n,r.max_chain=a,r.func=i}function i(e,t,n,a){var i=e[2*t],r=e[2*n];return r>i||i==r&&a[t]<=a[n]}function r(){function e(){var e;for(Dt=2*Et,Pt[Lt-1]=0,e=0;Lt-1>e;e++)Pt[e]=0;Tt=J[Vt].max_lazy,Xt=J[Vt].good_length,Yt=J[Vt].nice_length,Rt=J[Vt].max_chain,Kt=0,Ft=0,Ot=0,Gt=Qt=tt-1,Jt=0,St=0}function a(){var e;for(e=0;c>e;e++)Zt[2*e]=0;for(e=0;d>e;e++)$t[2*e]=0;for(e=0;f>e;e++)en[2*e]=0;Zt[2*p]=1,tn.opt_len=tn.static_len=0,un=fn=0}function r(){nn.dyn_tree=Zt,nn.stat_desc=n.static_l_desc,an.dyn_tree=$t,an.stat_desc=n.static_d_desc,rn.dyn_tree=en,rn.stat_desc=n.static_bl_desc,sn=0,cn=0,ln=8,a()}function _(e,t){var n,a,i=-1,r=e[1],_=0,o=7,u=4;for(0===r&&(o=138,u=3),e[2*(t+1)+1]=65535,n=0;t>=n;n++)a=r,r=e[2*(n+1)+1],++_<o&&a==r||(u>_?en[2*a]+=_:0!==a?(a!=i&&en[2*a]++,en[2*v]++):10>=_?en[2*b]++:en[2*g]++,_=0,i=a,0===r?(o=138,u=3):a==r?(o=6,u=3):(o=7,u=4))}function o(){var e;for(_(Zt,nn.max_code),_($t,an.max_code),rn.build_tree(tn),e=f-1;e>=3&&0===en[2*t.bl_order[e]+1];e--);return tn.opt_len+=3*(e+1)+5+5+4,e}function u(e){tn.pending_buf[tn.pending++]=e}function l(e){u(255&e),u(255&e>>>8)}function h(e){u(255&e>>8),u(255&(255&e))}function x(e,t){var n,a=t;cn>w-a?(n=e,sn|=65535&n<<cn,l(sn),sn=n>>>w-cn,cn+=a-w):(sn|=65535&e<<cn,cn+=a)}function j(e,t){var n=2*e;x(65535&t[n],65535&t[n+1])}function it(e,t){var n,a,i=-1,r=e[1],_=0,o=7,u=4;for(0===r&&(o=138,u=3),n=0;t>=n;n++)if(a=r,r=e[2*(n+1)+1],!(++_<o&&a==r)){if(u>_){do j(a,en);while(0!==--_)}else 0!==a?(a!=i&&(j(a,en),_--),j(v,en),x(_-3,2)):10>=_?(j(b,en),x(_-3,3)):(j(g,en),x(_-11,7));_=0,i=a,0===r?(o=138,u=3):a==r?(o=6,u=3):(o=7,u=4)}}function rt(e,n,a){var i;for(x(e-257,5),x(n-1,5),x(a-4,4),i=0;a>i;i++)x(en[2*t.bl_order[i]+1],3);it(Zt,e-1),it($t,n-1)}function _t(){16==cn?(l(sn),sn=0,cn=0):cn>=8&&(u(255&sn),sn>>>=8,cn-=8)}function ot(){x($<<1,3),j(p,n.static_ltree),_t(),9>1+ln+10-cn&&(x($<<1,3),j(p,n.static_ltree),_t()),ln=7}function ut(e,n){var a,i,r;if(tn.pending_buf[dn+2*un]=255&e>>>8,tn.pending_buf[dn+2*un+1]=255&e,tn.pending_buf[_n+un]=255&n,un++,0===e?Zt[2*n]++:(fn++,e--,Zt[2*(t._length_code[n]+s+1)]++,$t[2*t.d_code(e)]++),0===(8191&un)&&Vt>2){for(a=8*un,i=Kt-Ft,r=0;d>r;r++)a+=$t[2*r]*(5+t.extra_dbits[r]);if(a>>>=3,fn<Math.floor(un/2)&&a<Math.floor(i/2))return!0}return un==on-1}function dt(e,n){var a,i,r,_,o=0;if(0!==un)do a=65280&tn.pending_buf[dn+2*o]<<8|255&tn.pending_buf[dn+2*o+1],i=255&tn.pending_buf[_n+o],o++,0===a?j(i,e):(r=t._length_code[i],j(r+s+1,e),_=t.extra_lbits[r],0!==_&&(i-=t.base_length[r],x(i,_)),a--,r=t.d_code(a),j(r,n),_=t.extra_dbits[r],0!==_&&(a-=t.base_dist[r],x(a,_)));while(un>o);j(p,e),ln=e[2*p+1]}function ft(){cn>8?l(sn):cn>0&&u(255&sn),sn=0,cn=0}function lt(e,t,n){ft(),ln=8,n&&(l(t),l(~t)),tn.pending_buf.set(qt.subarray(e,e+t),tn.pending),tn.pending+=t}function st(e,t,n){x((Z<<1)+(n?1:0),3),lt(e,t,!0)}function ct(e,t,i){var r,_,u=0;Vt>0?(nn.build_tree(tn),an.build_tree(tn),u=o(),r=tn.opt_len+3+7>>>3,_=tn.static_len+3+7>>>3,r>=_&&(r=_)):r=_=t+5,r>=t+4&&-1!=e?st(e,t,i):_==r?(x(($<<1)+(i?1:0),3),dt(n.static_ltree,n.static_dtree)):(x((et<<1)+(i?1:0),3),rt(nn.max_code+1,an.max_code+1,u+1),dt(Zt,$t)),a(),i&&ft()}function ht(e){ct(Ft>=0?Ft:-1,Kt-Ft,e),Ft=Kt,mt.flush_pending()}function pt(){var e,t,n,a;do{if(a=Dt-Ot-Kt,0===a&&0===Kt&&0===Ot)a=Et;else if(-1==a)a--;else if(Kt>=Et+Et-at){qt.set(qt.subarray(Et,Et+Et),0),Nt-=Et,Kt-=Et,Ft-=Et,e=Lt,n=e;do t=65535&Pt[--n],Pt[n]=t>=Et?t-Et:0;while(0!==--e);e=Et,n=e;do t=65535&It[--n],It[n]=t>=Et?t-Et:0;while(0!==--e);a+=Et}if(0===mt.avail_in)return;e=mt.read_buf(qt,Kt+Ot,a),Ot+=e,Ot>=tt&&(St=255&qt[Kt],St=(St<<Ct^255&qt[Kt+1])&Bt)}while(at>Ot&&0!==mt.avail_in)}function xt(e){var t,n=65535;for(n>Mt-5&&(n=Mt-5);;){if(1>=Ot){if(pt(),0===Ot&&e==U)return N;if(0===Ot)break}if(Kt+=Ot,Ot=0,t=Ft+n,(0===Kt||Kt>=t)&&(Ot=Kt-t,Kt=t,ht(!1),0===mt.avail_out))return N;if(Kt-Ft>=Et-at&&(ht(!1),0===mt.avail_out))return N}return ht(e==z),0===mt.avail_out?e==z?Q:N:e==z?R:O}function vt(e){var t,n,a=Rt,i=Kt,r=Qt,_=Kt>Et-at?Kt-(Et-at):0,o=Yt,u=zt,d=Kt+nt,f=qt[i+r-1],l=qt[i+r];Qt>=Xt&&(a>>=2),o>Ot&&(o=Ot);do if(t=e,qt[t+r]==l&&qt[t+r-1]==f&&qt[t]==qt[i]&&qt[++t]==qt[i+1]){i+=2,t++;do;while(qt[++i]==qt[++t]&&qt[++i]==qt[++t]&&qt[++i]==qt[++t]&&qt[++i]==qt[++t]&&qt[++i]==qt[++t]&&qt[++i]==qt[++t]&&qt[++i]==qt[++t]&&qt[++i]==qt[++t]&&d>i);if(n=nt-(d-i),i=d-nt,n>r){if(Nt=e,r=n,n>=o)break;f=qt[i+r-1],l=qt[i+r]}}while((e=65535&It[e&u])>_&&0!==--a);return Ot>=r?r:Ot}function bt(e){for(var t,n=0;;){if(at>Ot){if(pt(),at>Ot&&e==U)return N;if(0===Ot)break}if(Ot>=tt&&(St=(St<<Ct^255&qt[Kt+(tt-1)])&Bt,n=65535&Pt[St],It[Kt&zt]=Pt[St],Pt[St]=Kt),0!==n&&Et-at>=(65535&Kt-n)&&Wt!=M&&(Gt=vt(n)),Gt>=tt)if(t=ut(Kt-Nt,Gt-tt),Ot-=Gt,Tt>=Gt&&Ot>=tt){Gt--;do Kt++,St=(St<<Ct^255&qt[Kt+(tt-1)])&Bt,n=65535&Pt[St],It[Kt&zt]=Pt[St],Pt[St]=Kt;while(0!==--Gt);Kt++}else Kt+=Gt,Gt=0,St=255&qt[Kt],St=(St<<Ct^255&qt[Kt+1])&Bt;else t=ut(0,255&qt[Kt]),Ot--,Kt++;if(t&&(ht(!1),0===mt.avail_out))return N}return ht(e==z),0===mt.avail_out?e==z?Q:N:e==z?R:O}function gt(e){for(var t,n,a=0;;){if(at>Ot){if(pt(),at>Ot&&e==U)return N;if(0===Ot)break}if(Ot>=tt&&(St=(St<<Ct^255&qt[Kt+(tt-1)])&Bt,a=65535&Pt[St],It[Kt&zt]=Pt[St],Pt[St]=Kt),Qt=Gt,Ht=Nt,Gt=tt-1,0!==a&&Tt>Qt&&Et-at>=(65535&Kt-a)&&(Wt!=M&&(Gt=vt(a)),5>=Gt&&(Wt==y||Gt==tt&&Kt-Nt>4096)&&(Gt=tt-1)),Qt>=tt&&Qt>=Gt){n=Kt+Ot-tt,t=ut(Kt-1-Ht,Qt-tt),Ot-=Qt-1,Qt-=2;do++Kt<=n&&(St=(St<<Ct^255&qt[Kt+(tt-1)])&Bt,a=65535&Pt[St],It[Kt&zt]=Pt[St],Pt[St]=Kt);while(0!==--Qt);if(Jt=0,Gt=tt-1,Kt++,t&&(ht(!1),0===mt.avail_out))return N}else if(0!==Jt){if(t=ut(0,255&qt[Kt-1]),t&&ht(!1),Kt++,Ot--,0===mt.avail_out)return N}else Jt=1,Kt++,Ot--}return 0!==Jt&&(t=ut(0,255&qt[Kt-1]),Jt=0),ht(e==z),0===mt.avail_out?e==z?Q:N:e==z?R:O}function wt(t){return t.total_in=t.total_out=0,t.msg=null,tn.pending=0,tn.pending_out=0,yt=W,Ut=U,r(),e(),q}var mt,yt,Mt,At,Ut,Et,kt,zt,qt,Dt,It,Pt,St,Lt,jt,Bt,Ct,Ft,Gt,Ht,Jt,Kt,Nt,Ot,Qt,Rt,Tt,Vt,Wt,Xt,Yt,Zt,$t,en,tn=this,nn=new t,an=new t,rn=new t;tn.depth=[];var _n,on,un,dn,fn,ln,sn,cn;tn.bl_count=[],tn.heap=[],Zt=[],$t=[],en=[],tn.pqdownheap=function(e,t){for(var n=tn.heap,a=n[t],r=t<<1;r<=tn.heap_len&&(r<tn.heap_len&&i(e,n[r+1],n[r],tn.depth)&&r++,!i(e,a,n[r],tn.depth));)n[t]=n[r],t=r,r<<=1;n[t]=a},tn.deflateInit=function(e,t,n,a,i,r){return a||(a=Y),i||(i=C),r||(r=A),e.msg=null,t==m&&(t=6),1>i||i>B||a!=Y||9>n||n>15||0>t||t>9||0>r||r>M?P:(e.dstate=tn,kt=n,Et=1<<kt,zt=Et-1,jt=i+7,Lt=1<<jt,Bt=Lt-1,Ct=Math.floor((jt+tt-1)/tt),qt=new Uint8Array(2*Et),It=[],Pt=[],on=1<<i+6,tn.pending_buf=new Uint8Array(4*on),Mt=4*on,dn=Math.floor(on/2),_n=3*on,Vt=t,Wt=r,At=255&a,wt(e))},tn.deflateEnd=function(){return yt!=V&&yt!=W&&yt!=X?P:(tn.pending_buf=null,Pt=null,It=null,qt=null,tn.dstate=null,yt==W?S:q)},tn.deflateParams=function(e,t,n){var a=q;return t==m&&(t=6),0>t||t>9||0>n||n>M?P:(J[Vt].func!=J[t].func&&0!==e.total_in&&(a=e.deflate(E)),Vt!=t&&(Vt=t,Tt=J[Vt].max_lazy,Xt=J[Vt].good_length,Yt=J[Vt].nice_length,Rt=J[Vt].max_chain),Wt=n,a)},tn.deflateSetDictionary=function(e,t,n){var a,i=n,r=0;if(!t||yt!=V)return P;if(tt>i)return q;for(i>Et-at&&(i=Et-at,r=n-i),qt.set(t.subarray(r,r+i),0),Kt=i,Ft=i,St=255&qt[0],St=(St<<Ct^255&qt[1])&Bt,a=0;i-tt>=a;a++)St=(St<<Ct^255&qt[a+(tt-1)])&Bt,It[a&zt]=Pt[St],Pt[St]=a;return q},tn.deflate=function(e,t){var n,a,i,r,_;if(t>z||0>t)return P;if(!e.next_out||!e.next_in&&0!==e.avail_in||yt==X&&t!=z)return e.msg=K[I-P],P;if(0===e.avail_out)return e.msg=K[I-L],L;if(mt=e,r=Ut,Ut=t,yt==V&&(a=Y+(kt-8<<4)<<8,i=(255&Vt-1)>>1,i>3&&(i=3),a|=i<<6,0!==Kt&&(a|=T),a+=31-a%31,yt=W,h(a)),0!==tn.pending){if(mt.flush_pending(),0===mt.avail_out)return Ut=-1,q}else if(0===mt.avail_in&&r>=t&&t!=z)return mt.msg=K[I-L],L;if(yt==X&&0!==mt.avail_in)return e.msg=K[I-L],L;if(0!==mt.avail_in||0!==Ot||t!=U&&yt!=X){switch(_=-1,J[Vt].func){case F:_=xt(t);break;case G:_=bt(t);break;case H:_=gt(t)}if((_==Q||_==R)&&(yt=X),_==N||_==Q)return 0===mt.avail_out&&(Ut=-1),q;if(_==O){if(t==E)ot();else if(st(0,0,!1),t==k)for(n=0;Lt>n;n++)Pt[n]=0;if(mt.flush_pending(),0===mt.avail_out)return Ut=-1,q}}return t!=z?q:D}}function _(){var e=this;e.next_in_index=0,e.next_out_index=0,e.avail_in=0,e.total_in=0,e.avail_out=0,e.total_out=0}function o(e){var t=this,n=new _,a=512,i=U,r=new Uint8Array(a);"undefined"==typeof e&&(e=m),n.deflateInit(e),n.next_out=r,t.append=function(e,t){var _,o,u=[],d=0,f=0,l=0;if(e.length){n.next_in_index=0,n.next_in=e,n.avail_in=e.length;do{if(n.next_out_index=0,n.avail_out=a,_=n.deflate(i),_!=q)throw"deflating: "+n.msg;n.next_out_index&&(n.next_out_index==a?u.push(new Uint8Array(r)):u.push(new Uint8Array(r.subarray(0,n.next_out_index)))),l+=n.next_out_index,t&&n.next_in_index>0&&n.next_in_index!=d&&(t(n.next_in_index),d=n.next_in_index)}while(n.avail_in>0||0===n.avail_out);return o=new Uint8Array(l),u.forEach(function(e){o.set(e,f),f+=e.length}),o}},t.flush=function(){var e,t,i=[],_=0,o=0;do{if(n.next_out_index=0,n.avail_out=a,e=n.deflate(z),e!=D&&e!=q)throw"deflating: "+n.msg;a-n.avail_out>0&&i.push(new Uint8Array(r.subarray(0,n.next_out_index))),o+=n.next_out_index}while(n.avail_in>0||0===n.avail_out);return n.deflateEnd(),t=new Uint8Array(o),i.forEach(function(e){t.set(e,_),_+=e.length}),t}}var u=15,d=30,f=19,l=29,s=256,c=s+1+l,h=2*c+1,p=256,x=7,v=16,b=17,g=18,w=16,m=-1,y=1,M=2,A=0,U=0,E=1,k=3,z=4,q=0,D=1,I=2,P=-2,S=-3,L=-5,j=[0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29];t._length_code=[0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28],t.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],t.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],t.d_code=function(e){return 256>e?j[e]:j[256+(e>>>7)]},t.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],t.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],t.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],t.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],n.static_ltree=[12,8,140,8,76,8,204,8,44,8,172,8,108,8,236,8,28,8,156,8,92,8,220,8,60,8,188,8,124,8,252,8,2,8,130,8,66,8,194,8,34,8,162,8,98,8,226,8,18,8,146,8,82,8,210,8,50,8,178,8,114,8,242,8,10,8,138,8,74,8,202,8,42,8,170,8,106,8,234,8,26,8,154,8,90,8,218,8,58,8,186,8,122,8,250,8,6,8,134,8,70,8,198,8,38,8,166,8,102,8,230,8,22,8,150,8,86,8,214,8,54,8,182,8,118,8,246,8,14,8,142,8,78,8,206,8,46,8,174,8,110,8,238,8,30,8,158,8,94,8,222,8,62,8,190,8,126,8,254,8,1,8,129,8,65,8,193,8,33,8,161,8,97,8,225,8,17,8,145,8,81,8,209,8,49,8,177,8,113,8,241,8,9,8,137,8,73,8,201,8,41,8,169,8,105,8,233,8,25,8,153,8,89,8,217,8,57,8,185,8,121,8,249,8,5,8,133,8,69,8,197,8,37,8,165,8,101,8,229,8,21,8,149,8,85,8,213,8,53,8,181,8,117,8,245,8,13,8,141,8,77,8,205,8,45,8,173,8,109,8,237,8,29,8,157,8,93,8,221,8,61,8,189,8,125,8,253,8,19,9,275,9,147,9,403,9,83,9,339,9,211,9,467,9,51,9,307,9,179,9,435,9,115,9,371,9,243,9,499,9,11,9,267,9,139,9,395,9,75,9,331,9,203,9,459,9,43,9,299,9,171,9,427,9,107,9,363,9,235,9,491,9,27,9,283,9,155,9,411,9,91,9,347,9,219,9,475,9,59,9,315,9,187,9,443,9,123,9,379,9,251,9,507,9,7,9,263,9,135,9,391,9,71,9,327,9,199,9,455,9,39,9,295,9,167,9,423,9,103,9,359,9,231,9,487,9,23,9,279,9,151,9,407,9,87,9,343,9,215,9,471,9,55,9,311,9,183,9,439,9,119,9,375,9,247,9,503,9,15,9,271,9,143,9,399,9,79,9,335,9,207,9,463,9,47,9,303,9,175,9,431,9,111,9,367,9,239,9,495,9,31,9,287,9,159,9,415,9,95,9,351,9,223,9,479,9,63,9,319,9,191,9,447,9,127,9,383,9,255,9,511,9,0,7,64,7,32,7,96,7,16,7,80,7,48,7,112,7,8,7,72,7,40,7,104,7,24,7,88,7,56,7,120,7,4,7,68,7,36,7,100,7,20,7,84,7,52,7,116,7,3,8,131,8,67,8,195,8,35,8,163,8,99,8,227,8],n.static_dtree=[0,5,16,5,8,5,24,5,4,5,20,5,12,5,28,5,2,5,18,5,10,5,26,5,6,5,22,5,14,5,30,5,1,5,17,5,9,5,25,5,5,5,21,5,13,5,29,5,3,5,19,5,11,5,27,5,7,5,23,5],n.static_l_desc=new n(n.static_ltree,t.extra_lbits,s+1,c,u),n.static_d_desc=new n(n.static_dtree,t.extra_dbits,0,d,u),n.static_bl_desc=new n(null,t.extra_blbits,0,f,x);var B=9,C=8,F=0,G=1,H=2,J=[new a(0,0,0,0,F),new a(4,4,8,4,G),new a(4,5,16,8,G),new a(4,6,32,32,G),new a(4,4,16,16,H),new a(8,16,32,32,H),new a(8,16,128,128,H),new a(8,32,128,256,H),new a(32,128,258,1024,H),new a(32,258,258,4096,H)],K=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],N=0,O=1,Q=2,R=3,T=32,V=42,W=113,X=666,Y=8,Z=0,$=1,et=2,tt=3,nt=258,at=nt+tt+1;_.prototype={deflateInit:function(e,t){var n=this;return n.dstate=new r,t||(t=u),n.dstate.deflateInit(n,e,t)},deflate:function(e){var t=this;return t.dstate?t.dstate.deflate(t,e):P},deflateEnd:function(){var e=this;if(!e.dstate)return P;var t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams:function(e,t){var n=this;return n.dstate?n.dstate.deflateParams(n,e,t):P},deflateSetDictionary:function(e,t){var n=this;return n.dstate?n.dstate.deflateSetDictionary(n,e,t):P},read_buf:function(e,t,n){var a=this,i=a.avail_in;return i>n&&(i=n),0===i?0:(a.avail_in-=i,e.set(a.next_in.subarray(a.next_in_index,a.next_in_index+i),t),a.next_in_index+=i,a.total_in+=i,i)},flush_pending:function(){var e=this,t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),0!==t&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,0===e.dstate.pending&&(e.dstate.pending_out=0))}};var it;e.zip?e.zip.Deflater=o:(it=new o,e.addEventListener("message",function(t){var n=t.data;n.init&&(it=new o(n.level),e.postMessage({oninit:!0})),n.append&&e.postMessage({onappend:!0,data:it.append(n.data,function(t){e.postMessage({progress:!0,current:t})})}),n.flush&&e.postMessage({onflush:!0,data:it.flush()})},!1))}(this); \ No newline at end of file diff --git a/libs/Cesium/ThirdParty/Workers/inflate.js b/libs/Cesium/ThirdParty/Workers/inflate.js new file mode 100644 index 0000000000..7c84e91164 --- /dev/null +++ b/libs/Cesium/ThirdParty/Workers/inflate.js @@ -0,0 +1,51 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/* + Copyright (c) 2013 Gildas Lormeau. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the distribution. + + 3. The names of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, + INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +!function(i){function e(){function i(i,e,t,n,s,o,f,u,w,v,h){var k,m,y,g,p,A,I,E,U,z,D,M,L,P,j;z=0,p=t;do a[i[e+z]]++,z++,p--;while(0!==p);if(a[0]==t)return f[0]=-1,u[0]=0,d;for(E=u[0],A=1;S>=A&&0===a[A];A++);for(I=A,A>E&&(E=A),p=S;0!==p&&0===a[p];p--);for(y=p,E>p&&(E=p),u[0]=E,P=1<<A;p>A;A++,P<<=1)if((P-=a[A])<0)return b;if((P-=a[p])<0)return b;for(a[p]+=P,l[1]=A=0,z=1,L=2;0!==--p;)l[L]=A+=a[z],L++,z++;p=0,z=0;do 0!==(A=i[e+z])&&(h[l[A]++]=p),z++;while(++p<t);for(t=l[y],l[0]=p=0,z=0,g=-1,M=-E,_[0]=0,D=0,j=0;y>=I;I++)for(k=a[I];0!==k--;){for(;I>M+E;){if(g++,M+=E,j=y-M,j=j>E?E:j,(m=1<<(A=I-M))>k+1&&(m-=k+1,L=I,j>A))for(;++A<j&&!((m<<=1)<=a[++L]);)m-=a[L];if(j=1<<A,v[0]+j>c)return b;_[g]=D=v[0],v[0]+=j,0!==g?(l[g]=p,r[0]=A,r[1]=E,A=p>>>M-E,r[2]=D-_[g-1]-A,w.set(r,3*(_[g-1]+A))):f[0]=D}for(r[1]=I-M,z>=t?r[0]=192:h[z]<n?(r[0]=h[z]<256?0:96,r[2]=h[z++]):(r[0]=o[h[z]-n]+16+64,r[2]=s[h[z++]-n]),m=1<<I-M,A=p>>>M;j>A;A+=m)w.set(r,3*(D+A));for(A=1<<I-1;0!==(p&A);A>>>=1)p^=A;for(p^=A,U=(1<<M)-1;(p&U)!=l[g];)g--,M-=E,U=(1<<M)-1}return 0!==P&&1!=y?x:d}function e(i){var e;for(t||(t=[],n=[],a=new Int32Array(S+1),r=[],_=new Int32Array(S),l=new Int32Array(S+1)),n.length<i&&(n=[]),e=0;i>e;e++)n[e]=0;for(e=0;S+1>e;e++)a[e]=0;for(e=0;3>e;e++)r[e]=0;_.set(a.subarray(0,S),0),l.set(a.subarray(0,S+1),0)}var t,n,a,r,_,l,s=this;s.inflate_trees_bits=function(a,r,_,l,d){var s;return e(19),t[0]=0,s=i(a,0,19,19,null,null,_,r,l,t,n),s==b?d.msg="oversubscribed dynamic bit lengths tree":(s==x||0===r[0])&&(d.msg="incomplete dynamic bit lengths tree",s=b),s},s.inflate_trees_dynamic=function(a,r,_,l,s,o,f,w,c){var v;return e(288),t[0]=0,v=i(_,0,a,257,p,A,o,l,w,t,n),v!=d||0===l[0]?(v==b?c.msg="oversubscribed literal/length tree":v!=u&&(c.msg="incomplete literal/length tree",v=b),v):(e(288),v=i(_,a,r,0,I,E,f,s,w,t,n),v!=d||0===s[0]&&a>257?(v==b?c.msg="oversubscribed distance tree":v==x?(c.msg="incomplete distance tree",v=b):v!=u&&(c.msg="empty distance tree with lengths",v=b),v):d)}}function t(){function i(i,e,t,n,a,r,_,l){var o,f,u,x,c,v,h,k,m,y,g,p,A,I,E,S;h=l.next_in_index,k=l.avail_in,c=_.bitb,v=_.bitk,m=_.write,y=m<_.read?_.read-m-1:_.end-m,g=w[i],p=w[e];do{for(;20>v;)k--,c|=(255&l.read_byte(h++))<<v,v+=8;if(o=c&g,f=t,u=n,S=3*(u+o),0!==(x=f[S]))for(;;){if(c>>=f[S+1],v-=f[S+1],0!==(16&x)){for(x&=15,A=f[S+2]+(c&w[x]),c>>=x,v-=x;15>v;)k--,c|=(255&l.read_byte(h++))<<v,v+=8;for(o=c&p,f=a,u=r,S=3*(u+o),x=f[S];;){if(c>>=f[S+1],v-=f[S+1],0!==(16&x)){for(x&=15;x>v;)k--,c|=(255&l.read_byte(h++))<<v,v+=8;if(I=f[S+2]+(c&w[x]),c>>=x,v-=x,y-=A,m>=I)E=m-I,m-E>0&&2>m-E?(_.window[m++]=_.window[E++],_.window[m++]=_.window[E++],A-=2):(_.window.set(_.window.subarray(E,E+2),m),m+=2,E+=2,A-=2);else{E=m-I;do E+=_.end;while(0>E);if(x=_.end-E,A>x){if(A-=x,m-E>0&&x>m-E){do _.window[m++]=_.window[E++];while(0!==--x)}else _.window.set(_.window.subarray(E,E+x),m),m+=x,E+=x,x=0;E=0}}if(m-E>0&&A>m-E){do _.window[m++]=_.window[E++];while(0!==--A)}else _.window.set(_.window.subarray(E,E+A),m),m+=A,E+=A,A=0;break}if(0!==(64&x))return l.msg="invalid distance code",A=l.avail_in-k,A=A>v>>3?v>>3:A,k+=A,h-=A,v-=A<<3,_.bitb=c,_.bitk=v,l.avail_in=k,l.total_in+=h-l.next_in_index,l.next_in_index=h,_.write=m,b;o+=f[S+2],o+=c&w[x],S=3*(u+o),x=f[S]}break}if(0!==(64&x))return 0!==(32&x)?(A=l.avail_in-k,A=A>v>>3?v>>3:A,k+=A,h-=A,v-=A<<3,_.bitb=c,_.bitk=v,l.avail_in=k,l.total_in+=h-l.next_in_index,l.next_in_index=h,_.write=m,s):(l.msg="invalid literal/length code",A=l.avail_in-k,A=A>v>>3?v>>3:A,k+=A,h-=A,v-=A<<3,_.bitb=c,_.bitk=v,l.avail_in=k,l.total_in+=h-l.next_in_index,l.next_in_index=h,_.write=m,b);if(o+=f[S+2],o+=c&w[x],S=3*(u+o),0===(x=f[S])){c>>=f[S+1],v-=f[S+1],_.window[m++]=f[S+2],y--;break}}else c>>=f[S+1],v-=f[S+1],_.window[m++]=f[S+2],y--}while(y>=258&&k>=10);return A=l.avail_in-k,A=A>v>>3?v>>3:A,k+=A,h-=A,v-=A<<3,_.bitb=c,_.bitk=v,l.avail_in=k,l.total_in+=h-l.next_in_index,l.next_in_index=h,_.write=m,d}var e,t,n,a,r=this,_=0,l=0,o=0,u=0,x=0,c=0,v=0,h=0,k=0,m=0;r.init=function(i,r,_,l,d,s){e=U,v=i,h=r,n=_,k=l,a=d,m=s,t=null},r.proc=function(r,y,g){var p,A,I,E,S,F,G,H=0,J=0,K=0;for(K=y.next_in_index,E=y.avail_in,H=r.bitb,J=r.bitk,S=r.write,F=S<r.read?r.read-S-1:r.end-S;;)switch(e){case U:if(F>=258&&E>=10&&(r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,g=i(v,h,n,k,a,m,r,y),K=y.next_in_index,E=y.avail_in,H=r.bitb,J=r.bitk,S=r.write,F=S<r.read?r.read-S-1:r.end-S,g!=d)){e=g==s?q:C;break}o=v,t=n,l=k,e=z;case z:for(p=o;p>J;){if(0===E)return r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g);g=d,E--,H|=(255&y.read_byte(K++))<<J,J+=8}if(A=3*(l+(H&w[p])),H>>>=t[A+1],J-=t[A+1],I=t[A],0===I){u=t[A+2],e=j;break}if(0!==(16&I)){x=15&I,_=t[A+2],e=D;break}if(0===(64&I)){o=I,l=A/3+t[A+2];break}if(0!==(32&I)){e=q;break}return e=C,y.msg="invalid literal/length code",g=b,r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g);case D:for(p=x;p>J;){if(0===E)return r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g);g=d,E--,H|=(255&y.read_byte(K++))<<J,J+=8}_+=H&w[p],H>>=p,J-=p,o=h,t=a,l=m,e=M;case M:for(p=o;p>J;){if(0===E)return r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g);g=d,E--,H|=(255&y.read_byte(K++))<<J,J+=8}if(A=3*(l+(H&w[p])),H>>=t[A+1],J-=t[A+1],I=t[A],0!==(16&I)){x=15&I,c=t[A+2],e=L;break}if(0===(64&I)){o=I,l=A/3+t[A+2];break}return e=C,y.msg="invalid distance code",g=b,r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g);case L:for(p=x;p>J;){if(0===E)return r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g);g=d,E--,H|=(255&y.read_byte(K++))<<J,J+=8}c+=H&w[p],H>>=p,J-=p,e=P;case P:for(G=S-c;0>G;)G+=r.end;for(;0!==_;){if(0===F&&(S==r.end&&0!==r.read&&(S=0,F=S<r.read?r.read-S-1:r.end-S),0===F&&(r.write=S,g=r.inflate_flush(y,g),S=r.write,F=S<r.read?r.read-S-1:r.end-S,S==r.end&&0!==r.read&&(S=0,F=S<r.read?r.read-S-1:r.end-S),0===F)))return r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g);r.window[S++]=r.window[G++],F--,G==r.end&&(G=0),_--}e=U;break;case j:if(0===F&&(S==r.end&&0!==r.read&&(S=0,F=S<r.read?r.read-S-1:r.end-S),0===F&&(r.write=S,g=r.inflate_flush(y,g),S=r.write,F=S<r.read?r.read-S-1:r.end-S,S==r.end&&0!==r.read&&(S=0,F=S<r.read?r.read-S-1:r.end-S),0===F)))return r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g);g=d,r.window[S++]=u,F--,e=U;break;case q:if(J>7&&(J-=8,E++,K--),r.write=S,g=r.inflate_flush(y,g),S=r.write,F=S<r.read?r.read-S-1:r.end-S,r.read!=r.write)return r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g);e=B;case B:return g=s,r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g);case C:return g=b,r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g);default:return g=f,r.bitb=H,r.bitk=J,y.avail_in=E,y.total_in+=K-y.next_in_index,y.next_in_index=K,r.write=S,r.inflate_flush(y,g)}},r.free=function(){}}function n(i,n){var a,r=this,_=G,l=0,o=0,u=0,v=[0],h=[0],k=new t,m=0,y=new Int32Array(3*c),g=0,p=new e;r.bitk=0,r.bitb=0,r.window=new Uint8Array(n),r.end=n,r.read=0,r.write=0,r.reset=function(i,e){e&&(e[0]=g),_==Q&&k.free(i),_=G,r.bitk=0,r.bitb=0,r.read=r.write=0},r.reset(i,null),r.inflate_flush=function(i,e){var t,n,a;return n=i.next_out_index,a=r.read,t=(a<=r.write?r.write:r.end)-a,t>i.avail_out&&(t=i.avail_out),0!==t&&e==x&&(e=d),i.avail_out-=t,i.total_out+=t,i.next_out.set(r.window.subarray(a,a+t),n),n+=t,a+=t,a==r.end&&(a=0,r.write==r.end&&(r.write=0),t=r.write-a,t>i.avail_out&&(t=i.avail_out),0!==t&&e==x&&(e=d),i.avail_out-=t,i.total_out+=t,i.next_out.set(r.window.subarray(a,a+t),n),n+=t,a+=t),i.next_out_index=n,r.read=a,e},r.proc=function(i,t){var n,x,c,g,A,I,E,S;for(g=i.next_in_index,A=i.avail_in,x=r.bitb,c=r.bitk,I=r.write,E=I<r.read?r.read-I-1:r.end-I;;)switch(_){case G:for(;3>c;){if(0===A)return r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);t=d,A--,x|=(255&i.read_byte(g++))<<c,c+=8}switch(n=7&x,m=1&n,n>>>1){case 0:x>>>=3,c-=3,n=7&c,x>>>=n,c-=n,_=H;break;case 1:var U=[],z=[],D=[[]],M=[[]];e.inflate_trees_fixed(U,z,D,M),k.init(U[0],z[0],D[0],0,M[0],0),x>>>=3,c-=3,_=Q;break;case 2:x>>>=3,c-=3,_=K;break;case 3:return x>>>=3,c-=3,_=V,i.msg="invalid block type",t=b,r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t)}break;case H:for(;32>c;){if(0===A)return r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);t=d,A--,x|=(255&i.read_byte(g++))<<c,c+=8}if((65535&~x>>>16)!=(65535&x))return _=V,i.msg="invalid stored block lengths",t=b,r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);l=65535&x,x=c=0,_=0!==l?J:0!==m?R:G;break;case J:if(0===A)return r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);if(0===E&&(I==r.end&&0!==r.read&&(I=0,E=I<r.read?r.read-I-1:r.end-I),0===E&&(r.write=I,t=r.inflate_flush(i,t),I=r.write,E=I<r.read?r.read-I-1:r.end-I,I==r.end&&0!==r.read&&(I=0,E=I<r.read?r.read-I-1:r.end-I),0===E)))return r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);if(t=d,n=l,n>A&&(n=A),n>E&&(n=E),r.window.set(i.read_buf(g,n),I),g+=n,A-=n,I+=n,E-=n,0!==(l-=n))break;_=0!==m?R:G;break;case K:for(;14>c;){if(0===A)return r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);t=d,A--,x|=(255&i.read_byte(g++))<<c,c+=8}if(o=n=16383&x,(31&n)>29||(31&n>>5)>29)return _=V,i.msg="too many length or distance symbols",t=b,r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);if(n=258+(31&n)+(31&n>>5),!a||a.length<n)a=[];else for(S=0;n>S;S++)a[S]=0;x>>>=14,c-=14,u=0,_=N;case N:for(;4+(o>>>10)>u;){for(;3>c;){if(0===A)return r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);t=d,A--,x|=(255&i.read_byte(g++))<<c,c+=8}a[F[u++]]=7&x,x>>>=3,c-=3}for(;19>u;)a[F[u++]]=0;if(v[0]=7,n=p.inflate_trees_bits(a,v,h,y,i),n!=d)return t=n,t==b&&(a=null,_=V),r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);u=0,_=O;case O:for(;;){if(n=o,!(258+(31&n)+(31&n>>5)>u))break;var L,P;for(n=v[0];n>c;){if(0===A)return r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);t=d,A--,x|=(255&i.read_byte(g++))<<c,c+=8}if(n=y[3*(h[0]+(x&w[n]))+1],P=y[3*(h[0]+(x&w[n]))+2],16>P)x>>>=n,c-=n,a[u++]=P;else{for(S=18==P?7:P-14,L=18==P?11:3;n+S>c;){if(0===A)return r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);t=d,A--,x|=(255&i.read_byte(g++))<<c,c+=8}if(x>>>=n,c-=n,L+=x&w[S],x>>>=S,c-=S,S=u,n=o,S+L>258+(31&n)+(31&n>>5)||16==P&&1>S)return a=null,_=V,i.msg="invalid bit length repeat",t=b,r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);P=16==P?a[S-1]:0;do a[S++]=P;while(0!==--L);u=S}}h[0]=-1;var j=[],q=[],B=[],C=[];if(j[0]=9,q[0]=6,n=o,n=p.inflate_trees_dynamic(257+(31&n),1+(31&n>>5),a,j,q,B,C,y,i),n!=d)return n==b&&(a=null,_=V),t=n,r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);k.init(j[0],q[0],y,B[0],y,C[0]),_=Q;case Q:if(r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,(t=k.proc(r,i,t))!=s)return r.inflate_flush(i,t);if(t=d,k.free(i),g=i.next_in_index,A=i.avail_in,x=r.bitb,c=r.bitk,I=r.write,E=I<r.read?r.read-I-1:r.end-I,0===m){_=G;break}_=R;case R:if(r.write=I,t=r.inflate_flush(i,t),I=r.write,E=I<r.read?r.read-I-1:r.end-I,r.read!=r.write)return r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);_=T;case T:return t=s,r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);case V:return t=b,r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t);default:return t=f,r.bitb=x,r.bitk=c,i.avail_in=A,i.total_in+=g-i.next_in_index,i.next_in_index=g,r.write=I,r.inflate_flush(i,t)}},r.free=function(i){r.reset(i,null),r.window=null,y=null},r.set_dictionary=function(i,e,t){r.window.set(i.subarray(e,e+t),0),r.read=r.write=t},r.sync_point=function(){return _==H?1:0}}function a(){function i(i){return i&&i.istate?(i.total_in=i.total_out=0,i.msg=null,i.istate.mode=ae,i.istate.blocks.reset(i,null),d):f}var e=this;e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0,e.inflateEnd=function(i){return e.blocks&&e.blocks.free(i),e.blocks=null,d},e.inflateInit=function(t,a){return t.msg=null,e.blocks=null,8>a||a>15?(e.inflateEnd(t),f):(e.wbits=a,t.istate.blocks=new n(t,1<<a),i(t),d)},e.inflate=function(i,e){var t,n;if(!i||!i.istate||!i.next_in)return f;for(e=e==h?x:d,t=x;;)switch(i.istate.mode){case Y:if(0===i.avail_in)return t;if(t=e,i.avail_in--,i.total_in++,(15&(i.istate.method=i.read_byte(i.next_in_index++)))!=X){i.istate.mode=_e,i.msg="unknown compression method",i.istate.marker=5;break}if((i.istate.method>>4)+8>i.istate.wbits){i.istate.mode=_e,i.msg="invalid window size",i.istate.marker=5;break}i.istate.mode=Z;case Z:if(0===i.avail_in)return t;if(t=e,i.avail_in--,i.total_in++,n=255&i.read_byte(i.next_in_index++),0!==((i.istate.method<<8)+n)%31){i.istate.mode=_e,i.msg="incorrect header check",i.istate.marker=5;break}if(0===(n&W)){i.istate.mode=ae;break}i.istate.mode=$;case $:if(0===i.avail_in)return t;t=e,i.avail_in--,i.total_in++,i.istate.need=4278190080&(255&i.read_byte(i.next_in_index++))<<24,i.istate.mode=ie;case ie:if(0===i.avail_in)return t;t=e,i.avail_in--,i.total_in++,i.istate.need+=16711680&(255&i.read_byte(i.next_in_index++))<<16,i.istate.mode=ee;case ee:if(0===i.avail_in)return t;t=e,i.avail_in--,i.total_in++,i.istate.need+=65280&(255&i.read_byte(i.next_in_index++))<<8,i.istate.mode=te;case te:return 0===i.avail_in?t:(t=e,i.avail_in--,i.total_in++,i.istate.need+=255&i.read_byte(i.next_in_index++),i.istate.mode=ne,o);case ne:return i.istate.mode=_e,i.msg="need dictionary",i.istate.marker=0,f;case ae:if(t=i.istate.blocks.proc(i,t),t==b){i.istate.mode=_e,i.istate.marker=0;break}if(t==d&&(t=e),t!=s)return t;t=e,i.istate.blocks.reset(i,i.istate.was),i.istate.mode=re;case re:return s;case _e:return b;default:return f}},e.inflateSetDictionary=function(i,e,t){var n=0,a=t;return i&&i.istate&&i.istate.mode==ne?(a>=1<<i.istate.wbits&&(a=(1<<i.istate.wbits)-1,n=t-a),i.istate.blocks.set_dictionary(e,n,a),i.istate.mode=ae,d):f},e.inflateSync=function(e){var t,n,a,r,_;if(!e||!e.istate)return f;if(e.istate.mode!=_e&&(e.istate.mode=_e,e.istate.marker=0),0===(t=e.avail_in))return x;for(n=e.next_in_index,a=e.istate.marker;0!==t&&4>a;)e.read_byte(n)==le[a]?a++:a=0!==e.read_byte(n)?0:4-a,n++,t--;return e.total_in+=n-e.next_in_index,e.next_in_index=n,e.avail_in=t,e.istate.marker=a,4!=a?b:(r=e.total_in,_=e.total_out,i(e),e.total_in=r,e.total_out=_,e.istate.mode=ae,d)},e.inflateSyncPoint=function(i){return i&&i.istate&&i.istate.blocks?i.istate.blocks.sync_point():f}}function r(){}function _(){var i=this,e=new r,t=512,n=v,a=new Uint8Array(t),_=!1;e.inflateInit(),e.next_out=a,i.append=function(i,r){var l,o,f=[],b=0,u=0,w=0;if(0!==i.length){e.next_in_index=0,e.next_in=i,e.avail_in=i.length;do{if(e.next_out_index=0,e.avail_out=t,0!==e.avail_in||_||(e.next_in_index=0,_=!0),l=e.inflate(n),_&&l==x)return-1;if(l!=d&&l!=s)throw"inflating: "+e.msg;if((_||l==s)&&e.avail_in==i.length)return-1;e.next_out_index&&(e.next_out_index==t?f.push(new Uint8Array(a)):f.push(new Uint8Array(a.subarray(0,e.next_out_index)))),w+=e.next_out_index,r&&e.next_in_index>0&&e.next_in_index!=b&&(r(e.next_in_index),b=e.next_in_index)}while(e.avail_in>0||0===e.avail_out);return o=new Uint8Array(w),f.forEach(function(i){o.set(i,u),u+=i.length}),o}},i.flush=function(){e.inflateEnd()}}var l=15,d=0,s=1,o=2,f=-2,b=-3,u=-4,x=-5,w=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],c=1440,v=0,h=4,k=9,m=5,y=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],g=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],p=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],A=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],I=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],E=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],S=15;e.inflate_trees_fixed=function(i,e,t,n){return i[0]=k,e[0]=m,t[0]=y,n[0]=g,d};var U=0,z=1,D=2,M=3,L=4,P=5,j=6,q=7,B=8,C=9,F=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],G=0,H=1,J=2,K=3,N=4,O=5,Q=6,R=7,T=8,V=9,W=32,X=8,Y=0,Z=1,$=2,ie=3,ee=4,te=5,ne=6,ae=7,re=12,_e=13,le=[0,0,255,255];r.prototype={inflateInit:function(i){var e=this;return e.istate=new a,i||(i=l),e.istate.inflateInit(e,i)},inflate:function(i){var e=this;return e.istate?e.istate.inflate(e,i):f},inflateEnd:function(){var i=this;if(!i.istate)return f;var e=i.istate.inflateEnd(i);return i.istate=null,e},inflateSync:function(){var i=this;return i.istate?i.istate.inflateSync(i):f},inflateSetDictionary:function(i,e){var t=this;return t.istate?t.istate.inflateSetDictionary(t,i,e):f},read_byte:function(i){var e=this;return e.next_in.subarray(i,i+1)[0]},read_buf:function(i,e){var t=this;return t.next_in.subarray(i,i+e)}};var de;i.zip?i.zip.Inflater=_:(de=new _,i.addEventListener("message",function(e){var t=e.data;t.append&&i.postMessage({onappend:!0,data:de.append(t.data,function(e){i.postMessage({progress:!0,current:e})})}),t.flush&&(de.flush(),i.postMessage({onflush:!0}))},!1))}(this); \ No newline at end of file diff --git a/libs/Cesium/Widgets/Animation/Animation.css b/libs/Cesium/Widgets/Animation/Animation.css new file mode 100644 index 0000000000..e8487a2b10 --- /dev/null +++ b/libs/Cesium/Widgets/Animation/Animation.css @@ -0,0 +1 @@ +.cesium-animation-theme {visibility: hidden; display: block; position: absolute; z-index: -100;} .cesium-animation-themeNormal {color: #222;} .cesium-animation-themeHover {color: #4488B0;} .cesium-animation-themeSelect {color: #242;} .cesium-animation-themeDisabled {color: #333;} .cesium-animation-themeKnob {color: #222;} .cesium-animation-themePointer {color: #2E2;} .cesium-animation-themeSwoosh {color: #8AC;} .cesium-animation-themeSwooshHover {color: #AEF;} .cesium-animation-svgText {fill: #edffff; font-family: Sans-Serif; font-size: 15px; text-anchor: middle;} .cesium-animation-blank {fill: #000; fill-opacity: 0.01; stroke: none;} .cesium-animation-rectButton {cursor: pointer; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;} .cesium-animation-rectButton .cesium-animation-buttonGlow {fill: #fff; stroke: none; display: none;} .cesium-animation-rectButton:hover .cesium-animation-buttonGlow {display: block;} .cesium-animation-rectButton .cesium-animation-buttonPath {fill: #edffff;} .cesium-animation-rectButton .cesium-animation-buttonMain {stroke: #444; stroke-width: 1.2;} .cesium-animation-rectButton:hover .cesium-animation-buttonMain {stroke: #AEF;} .cesium-animation-rectButton:active .cesium-animation-buttonMain {fill: #ABD6FF;} .cesium-animation-buttonDisabled {-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;} .cesium-animation-buttonDisabled .cesium-animation-buttonMain {stroke: #555;} .cesium-animation-buttonDisabled .cesium-animation-buttonPath {fill: #818181;} .cesium-animation-buttonDisabled .cesium-animation-buttonGlow {display: none;} .cesium-animation-buttonToggled .cesium-animation-buttonGlow {display: block; fill: #2E2;} .cesium-animation-buttonToggled .cesium-animation-buttonMain {stroke: #2E2;} .cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow {fill: #fff;} .cesium-animation-buttonToggled:hover .cesium-animation-buttonMain {stroke: #2E2;} .cesium-animation-shuttleRingG {cursor: pointer;} .cesium-animation-shuttleRingPointer {cursor: pointer;} .cesium-animation-shuttleRingPausePointer {cursor: pointer;} .cesium-animation-shuttleRingBack {fill: #181818; fill-opacity: 0.8; stroke: #333; stroke-width: 1.2;} .cesium-animation-shuttleRingSwoosh line {stroke: #8AC; stroke-width: 3; stroke-opacity: 0.2; stroke-linecap: round;} .cesium-animation-knobOuter {cursor: pointer; stroke: #444; stroke-width: 1.2;} .cesium-animation-knobInner {cursor: pointer;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/Animation/lighter.css b/libs/Cesium/Widgets/Animation/lighter.css new file mode 100644 index 0000000000..f044698463 --- /dev/null +++ b/libs/Cesium/Widgets/Animation/lighter.css @@ -0,0 +1 @@ +.cesium-lighter .cesium-animation-themeNormal {color: #E5F2FE;} .cesium-lighter .cesium-animation-themeHover {color: #ABD6FF;} .cesium-lighter .cesium-animation-themeSelect {color: #E5F2FE;} .cesium-lighter .cesium-animation-themeDisabled {color: #EFEFEF;} .cesium-lighter .cesium-animation-themeKnob {color: #E1E2E3;} .cesium-lighter .cesium-animation-themePointer {color: #FA5;} .cesium-lighter .cesium-animation-themeSwoosh {color: #ACE;} .cesium-lighter .cesium-animation-themeSwooshHover {color: #BDF;} .cesium-lighter .cesium-animation-svgText {fill: #111;} .cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonPath {fill: #111;} .cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonMain {stroke: #759DC0;} .cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonGlow {fill: #FFAA2A;} .cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonMain {stroke: #EA0;} .cesium-lighter .cesium-animation-rectButton:hover .cesium-animation-buttonMain {stroke: #759DC0;} .cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow {fill: #fff;} .cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonMain {stroke: #EA0;} .cesium-lighter .cesium-animation-rectButton:active .cesium-animation-buttonMain {fill: #ABD6FF;} .cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonMain {stroke: #D3D3D3;} .cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonPath {fill: #818181;} .cesium-lighter .cesium-animation-shuttleRingBack {fill: #FAFAFA; fill-opacity: 1; stroke: #AEAEAE; stroke-width: 1.2;} .cesium-lighter .cesium-animation-shuttleRingSwoosh line {stroke: #8AC;} .cesium-lighter .cesium-animation-knobOuter {stroke: #A5A5A5;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css b/libs/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css new file mode 100644 index 0000000000..b411b9cb5b --- /dev/null +++ b/libs/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css @@ -0,0 +1 @@ +.cesium-baseLayerPicker-selected {position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none;} .cesium-baseLayerPicker-dropDown {display: block; position: absolute; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; top: auto; right: 0; width: 320px; max-height: 500px; margin-top: 5px; background-color: rgba(38, 38, 38, 0.75); border: 1px solid #444; padding: 6px; overflow: auto; border-radius: 10px; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; -webkit-transform: translate(0, -20%); -moz-transform: translate(0, -20%); transform: translate(0, -20%); visibility: hidden; opacity: 0; -webkit-transition: visibility 0s 0.2s, opacity 0.2s ease-in, -webkit-transform 0.2s ease-in; -moz-transition: visibility 0s 0.2s, opacity 0.2s ease-in, -moz-transform 0.2s ease-in; transition: visibility 0s 0.2s, opacity 0.2s ease-in, transform 0.2s ease-in;} .cesium-baseLayerPicker-dropDown-visible {-webkit-transform: translate(0, 0); -moz-transform: translate(0, 0); transform: translate(0, 0); visibility: visible; opacity: 1; -webkit-transition: opacity 0.2s ease-out, -webkit-transform 0.2s ease-out; -moz-transition: opacity 0.2s ease-out, -moz-transform 0.2s ease-out; transition: opacity 0.2s ease-out, transform 0.2s ease-out;} .cesium-baseLayerPicker-sectionTitle {display: block; font-family: sans-serif; font-size: 16pt; text-align: left; color: #edffff; border-bottom: 1px solid #888; margin-bottom: 4px;} .cesium-baseLayerPicker-choices {display: block; position: relative; top: auto; right: 0;} .cesium-baseLayerPicker-item {display: inline-block; vertical-align: top; margin: 2px 5px; width: 64px; text-align: center; cursor: pointer;} .cesium-baseLayerPicker-itemLabel {display: block; font-family: sans-serif; font-size: 8pt; text-align: center; vertical-align: middle; color: #edffff; cursor: pointer; word-wrap: break-word;} .cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel, .cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel {text-decoration: underline;} .cesium-baseLayerPicker-itemIcon {display: inline-block; position: relative; width: inherit; height: auto; background-size: 100% 100%; border: solid 1px #444; border-radius: 9px; color: #edffff; margin: 0; padding: 0; cursor: pointer; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;} .cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon {border-color: #fff; box-shadow: 0 0 8px #fff, 0 0 8px #fff;} .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel {color: rgb(189, 236, 248);} .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon {border: double 4px rgb(189, 236, 248);} \ No newline at end of file diff --git a/libs/Cesium/Widgets/BaseLayerPicker/lighter.css b/libs/Cesium/Widgets/BaseLayerPicker/lighter.css new file mode 100644 index 0000000000..2b39fc02ca --- /dev/null +++ b/libs/Cesium/Widgets/BaseLayerPicker/lighter.css @@ -0,0 +1 @@ +.cesium-lighter .cesium-baseLayerPicker-itemIcon {border-color: #759dc0;} .cesium-lighter .cesium-baseLayerPicker-dropDown {background-color: rgba(240, 240, 240, 0.75);} .cesium-lighter .cesium-baseLayerPicker-sectionTitle {color: black;} .cesium-lighter .cesium-baseLayerPicker-itemLabel {color: black;} .cesium-lighter .cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon {border-color: #000;} .cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel {color: rgb(0, 61, 168);} .cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon {border: double 4px rgb(0, 61, 168);} \ No newline at end of file diff --git a/libs/Cesium/Widgets/CesiumInspector/CesiumInspector.css b/libs/Cesium/Widgets/CesiumInspector/CesiumInspector.css new file mode 100644 index 0000000000..8c65249dcc --- /dev/null +++ b/libs/Cesium/Widgets/CesiumInspector/CesiumInspector.css @@ -0,0 +1 @@ +.cesium-cesiumInspector {border-radius: 5px; -webkit-transition: width ease-in-out 0.25s; -moz-transition: width ease-in-out 0.25s; transition: width ease-in-out 0.25s; background: rgba(48, 51, 54, 0.8); border: 1px solid #444; color: #edffff; display: inline-block; position: relative; padding: 4px 12px; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden;} .cesium-cesiumInspector-button {text-align: center; font-size: 11pt;} .cesium-cesiumInspector-visible .cesium-cesiumInspector-button {border-bottom: 1px solid #aaa; padding-bottom: 3px;} .cesium-cesiumInspector input:enabled, .cesium-cesiumInspector-button {cursor: pointer;} .cesium-cesiumInspector-visible {width: 185px; height: auto;} .cesium-cesiumInspector-hidden {width: 122px; height: 17px;} .cesium-cesiumInspector-show {max-height: 500px;} .cesium-cesiumInspector-hide {max-height: 0; padding: 0 !important; overflow: hidden;} .cesium-cesiumInspector-dropDown {margin: 5px 0; font-family: sans-serif; font-size: 10pt; width: 185px;} .cesium-cesiumInspector-frustumStats {padding-left: 10px; padding: 5px; background-color: rgba(80, 80, 80, 0.75);} .cesium-cesiumInspector-pickButton {background-color: rgba(0, 0, 0, 0.3); border: 1px solid #444; color: #edffff; border-radius: 5px; padding: 3px 7px; cursor: pointer; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; margin: 0 auto;} .cesium-cesiumInspector-pickButton:focus {outline: none;} .cesium-cesiumInspector-pickButton:active, .cesium-cesiumInspector-pickButtonHighlight {color: #000; background: #adf; border-color: #fff; box-shadow: 0 0 8px #fff;} .cesium-cesiumInspector-center {text-align: center;} .cesium-cesiumInspector-sectionHeader {font-weight: bold;} .cesium-cesiumInspector-pickSection {border: 1px solid #aaa; border-radius: 5px; padding: 3px; margin-bottom: 5px;} .cesium-cesiumInspector-section {margin-bottom: 10px; -webkit-transition: max-height 0.25s; -moz-transition: max-height 0.25s; transition: max-height 0.25s;} .cesium-cesiumInspector-toggleSwitch {padding: 3px; cursor: pointer;} .cesium-cesiumInspector-tileText {padding-bottom: 10px; border-bottom: 1px solid #aaa;} .cesium-cesiumInspector-relativeText {padding-top: 10px;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/CesiumWidget/CesiumWidget.css b/libs/Cesium/Widgets/CesiumWidget/CesiumWidget.css new file mode 100644 index 0000000000..ed344d246d --- /dev/null +++ b/libs/Cesium/Widgets/CesiumWidget/CesiumWidget.css @@ -0,0 +1 @@ +.cesium-widget {position: relative;} .cesium-widget, .cesium-widget canvas {width: 100%; height: 100%; touch-action: none;} .cesium-widget-credits {display: block; position: absolute; bottom: 0; left: 0; color: #fff; font-size: 10px; text-shadow: 0px 0px 2px #000000; padding-right: 5px;} .cesium-widget-credits a, .cesium-widget-credits a:visited {color: #fff;} .cesium-widget-errorPanel {position: absolute; top: 0; right: 0; bottom: 0; left: 0; text-align: center; background: rgba(0, 0, 0, 0.7); z-index: 99999;} .cesium-widget-errorPanel:before {display: inline-block; vertical-align: middle; height: 100%; content: "";} .cesium-widget-errorPanel-content {width: 75%; display: inline-block; text-align: left; vertical-align: middle; border: 1px solid #526F82; border-radius: 7px; background-color: black; color: white; font-size: 10pt; padding: 1em;} .cesium-widget-errorPanel-header {font-size: 120%; color: #fe4;} .cesium-widget-errorPanel-scroll {overflow: auto; font-family: monospace; white-space: pre-wrap; padding: 0; margin: 10px 0;} .cesium-widget-errorPanel-buttonPanel {text-align: center;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/CesiumWidget/lighter.css b/libs/Cesium/Widgets/CesiumWidget/lighter.css new file mode 100644 index 0000000000..5b06a90043 --- /dev/null +++ b/libs/Cesium/Widgets/CesiumWidget/lighter.css @@ -0,0 +1 @@ +.cesium-lighter .cesium-widget-errorPanel {background: rgba(255, 255, 255, 0.7);} .cesium-lighter .cesium-widget-errorPanel-content {border: 1px solid #526F82; border-radius: 7px; background-color: white; color: black;} .cesium-lighter .cesium-widget-errorPanel-header {color: #B87D00;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/FullscreenButton/FullscreenButton.css b/libs/Cesium/Widgets/FullscreenButton/FullscreenButton.css new file mode 100644 index 0000000000..8ac41b3e54 --- /dev/null +++ b/libs/Cesium/Widgets/FullscreenButton/FullscreenButton.css @@ -0,0 +1 @@ +.cesium-button.cesium-fullscreenButton {display: block; width: 100%; height: 100%; margin: 0; border-radius: 0;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/Geocoder/Geocoder.css b/libs/Cesium/Widgets/Geocoder/Geocoder.css new file mode 100644 index 0000000000..21b5618f90 --- /dev/null +++ b/libs/Cesium/Widgets/Geocoder/Geocoder.css @@ -0,0 +1 @@ +.cesium-viewer-geocoderContainer .cesium-geocoder-input {border: solid 1px #444; background-color: rgba(40, 40, 40, 0.7); color: white; display: inline-block; vertical-align: middle; width: 0; height: 32px; margin: 0; padding: 0 32px 0 0; border-radius: 0; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; -webkit-transition: width ease-in-out 0.25s, background-color 0.2s ease-in-out; -moz-transition: width ease-in-out 0.25s, background-color 0.2s ease-in-out; transition: width ease-in-out 0.25s, background-color 0.2s ease-in-out; -webkit-appearance: none;} .cesium-viewer-geocoderContainer:hover .cesium-geocoder-input {border-color: #aef; box-shadow: 0 0 8px #fff;} .cesium-viewer-geocoderContainer .cesium-geocoder-input:focus {border-color: #ea4; background-color: rgba(15, 15, 15, 0.9); box-shadow: none; outline: none;} .cesium-viewer-geocoderContainer:hover .cesium-geocoder-input, .cesium-viewer-geocoderContainer .cesium-geocoder-input:focus, .cesium-viewer-geocoderContainer .cesium-geocoder-input-wide {padding-left: 4px; width: 250px;} .cesium-geocoder-searchButton {background-color: #303336; display: inline-block; position: absolute; cursor: pointer; width: 32px; top: 1px; right: 1px; height: 30px; vertical-align: middle; fill: #edffff;} .cesium-geocoder-searchButton:hover {background-color: #48b;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/Geocoder/lighter.css b/libs/Cesium/Widgets/Geocoder/lighter.css new file mode 100644 index 0000000000..a906d8fa98 --- /dev/null +++ b/libs/Cesium/Widgets/Geocoder/lighter.css @@ -0,0 +1 @@ +.cesium-lighter .cesium-geocoder-input {border: solid 1px #759dc0; background-color: rgba(240, 240, 240, 0.9); color: black;} .cesium-lighter .cesium-viewer-geocoderContainer:hover .cesium-geocoder-input {border-color: #aef; box-shadow: 0 0 8px #fff;} .cesium-lighter .cesium-geocoder-searchButton {background-color: #e2f0ff; fill: #111;} .cesium-lighter .cesium-geocoder-searchButton:hover {background-color: #a6d2ff;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/Images/Cesium_Logo_overlay.png b/libs/Cesium/Widgets/Images/Cesium_Logo_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..fb156163effa0300d3431522e3fa18a7ac542b7c GIT binary patch literal 5109 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 XVhj4-Gu$7|00000NkvXXu0mjf@`uk> literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/bingAerial.png b/libs/Cesium/Widgets/Images/ImageryProviders/bingAerial.png new file mode 100644 index 0000000000000000000000000000000000000000..a78a154b11be8f5fba30dc547d5d3d5a6f14cfa0 GIT binary patch literal 9943 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 t0k--R*rwS!{)Fk9B8x8qUaoX!)KOVwj0Cv$cs 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 VS2|d4-sS)R002ovPDHLkV1k<_RD=Kk literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png b/libs/Cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png new file mode 100644 index 0000000000000000000000000000000000000000..4cafd40f94f048f4a55f98ccf29a6c1e0dea261a GIT binary patch literal 10374 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/bingRoads.png b/libs/Cesium/Widgets/Images/ImageryProviders/bingRoads.png new file mode 100644 index 0000000000000000000000000000000000000000..282d6ada85a58ca9c63ebfb646c32281bc151e89 GIT binary patch literal 8076 zcmV;7A9LV|P)<h;3K|Lk000e1NJLTq002Ay002A)0ssI2wVqBT00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0018QNkl<ZXhU6kXON`FdEOidQ%<sEnsSx@ zh@#4pT_youfJ}-24mf0hG^HP^va9G4L70@}DoG_vBt?J(4u=cG<-=aixQxBHdG~fU z@80I!$zdnwnJ?!&GoPQH4?45F_11Si{q=M|{r2;wp7U8uC><O%#WGJ9b%ob8@z=%B zCDV`%UDh>8Q$+|GhOU~1W?M$nv06>rGIa=gbWPDz8KNo@#A~1vBk>hU<P}*&`|(?R z%dt&N(r!7f+rmeTktM;KP2gDwmew>*lIpVDFbq!DS&l3F94=gp`PpjNZ40)+D++@b zs!Bt2owqE>wp7bhfL>JuAi#`G+i5w?meX$9EyuF49t7wC2yY*61`VtYxWES}0E9O1 zVT`wJ53V;DGhhRlUlcfwrLjGX!M7UqGSAmarDQ4<grw6Uh|j36J7PE;^V?=wmCLeN zDOci<N+n6tIcyOdRb);SXy_R0VHLOSLfTCiYgq<>H?gWGK;S_KCOm-yPapskXcw<M z(B6UIBL)B*1Ybly-l7u<<~au6V(3ODohTMEm2!@zD!>3F5MOqE7@#ZJsg2lZxwsmS z&6X?CTt1M_tQU$A;D*XATecmIXtdRKtS0CHtY{Dwx1pkDvxC@iEP!|n+Jk}~4>Yuh zHUyn`_4p$ih9Wmjt!*0+w*{>`vc%<csf}c`kWWh@>)5*6hDHqA(x5G0eBH0o0gDf2 z;zPOYbhRERRm0)vJT^(yQ<ZA0)=0HnLo+3SZZ}(P%WWDhXpkH$KDdOAPRrJHRn-** zd{t%a0iA}SX<)ggpa;9emfGzmh8f@{$I*1dQ?02gwkEes)z%~+(?nY0>+#4cMHRsZ zr>SBId=Y~oZi}3=FPC19tqnP1)DeTJ*kEeIPcg9?l`Q6ikWw{B@u^}xtvjj>q=sp! zwjrB9q8qRz)pmeXGAzAAnU<o-rfmQ;5ThShff5@4Zb9I%0ghwpRAX^@iJ~Z+hAIkB zZ5#Tt)utwhOtn_ps8`aZd>qUaq?+rR=*7tpI^txZHQVtun=)5V6cZB;zix0#<@E4I zY=mW_<!Yc*3skvSwi+zcDOKa#rqec?0Iew|+=Q;{gdvX0Fr01MGF*kCSe8Z9t0*)L zQ&xL=dd{9b-DuQgS>$;Z+n$=5+OuchFMjd<Kwm%X3~ClxDjr$Cdil)R6Gx(<#Y!=y zD=e_OuC3{!C^4WGhP7=AYR1Wchd!`d;!092nqKQ?vtt&!Tul2rxPufIEi;ik70TD5 zf>i0~<8vN&^a@(IEwc@8VVa-^mT>_W1eYX<=lS{h`Hw&TcyV$5lTVKB+qdWZ`Ln<L z<$G7ITrQO=VB7Vp*WUl-dxsAlc=zW&Iq}J%wbg}_T?a>pdrVCP|3F_jE4UGyhQzTl z&nW`0%f#D4eBizzuohc!O(wlOQi+cdyG)OzlMiV+SfL^nHjyr`*O^q?k%7BuTEr#T z1_TO*1;P_(iVoZmO*2GM2KqoCaQygjK@dE8K+_WR3Q~6b<6{9P(8g=SC+^$3d)z+; z%YjNvRclnLhN9ZKL1@`=l#0wl%f6;*n6hjMoWa&y9ZXqZva<%ep5J(wNsdc$q0VF& zC0A)A6opbHvT3*^PGDIaoGi$)41N>4v>j0tu?;9Y9*^(cyBDv39%#S{SdxbrTzA_J zkq%JLIy=M2A8fSi*zxdM2t1S+L8vh<UJ}mhGB1cMql%oR$v#Ytp^_ltKx~Ck8<|pg zrk<R3)s5InpUmbojZt)l6RQoXEbug91#!krOE!R-u2VJa!PYfR5{cKd&1$8z`=bx* zwTcJpv2?(Z2Gr!XTb@fsXA7R&F=506b=w8F_y6%-s!)Zsh-KO}+AbUw{HG{eqS8_g zSF?O@PVifr?W&qZ6ktm&p_Ewcca?Z4I$BK!44Kt*UeN`oN!*qf4&fi{CgO??;kgFS z)ErZ3*_xpWs=}W;dt!K~&+~?!K+VASId0D&5VtJ@h|z$@d<=SdZt>Fb^WjH<<&pV? zzF9g}QOcad8?M^2X{`{<&h$+ADqM3eP@GyyCDL{9)otmPSj>j}4!_D5r<1D_ZH-4K zLb{iPbYcj6g{W$R<4BIhQMD|h0a6#&1p!Q|mS38mJaTX!&ee0V9&U*DM>;yVy;p6F zA=~Thu;m`zd*sN6pA3IGI(lVt`R@AZ_s-rreDmJPJ3Xf!+&pyaZr6k9>$AS8wZeQ{ z7+)<Xi?X6xwhreal{3rb<cP(t=EF0NNW+Q3s8yAfL<V^c*25F3b=wN;N0+f%u3k>o zN{L1#T`nXN(Y2rb!(Y4q6nY4<4!+JGB7Y|l0PJ=fI&Qf{Fp?w)P50>TPZoz(latx( zWOeOsqBO%q2NR2TmZz>vM+V}_k!+|p>03_F6T!yA<x04y=j$>iz=RTC&BXjB9Y`#U zv?a!c4S~c0jng+pUaZxHYDH)1rUK5fx=`io*;HgD8eAx(W3^&>YJ8;Y=z$JmFo{G* z&;Wu!OeUA$&he^)oA_P_mP!WTrR82Y`sv^`|58sdI+Tg@Wm69;vB6BJKM@~FL!v{e z_(;aL5Gg;3)8ip}HK*s8=6o=-QE1fb)#%!&Nrf{jel8!^c}5XfP3A0_bu9%VRC4Ly za%_1nx-y6TRkDd{E}2h;*-Ft=gz2%7nF&8E<cDwn&#hZGKl9Aiciwp$(2<n<{JnQK zZ{ECZ+qV7t_ruksG8=Dx=Z(#qpWd?N8)r_Pg{Fh^q4S3?O?);vbZKPb%GA=GwWa%k zg}ZByZZA#Wd^FQN-+zA4hmhc3N&5r!nWQ+jUK^ZCY!ncOw8*l*$;I_rAid&mYpg0z zuB$c*k$hw}7n;ITp|X}pWul?*;zA{rHhIA{t(K<XOpYHp$kP;D#K{v~8yktPu47L> z{q?c2(f+}{Xa4K9$;t7PCy#&assEBM=EBj?ja%1aiRj<{?O*TM@d7qx%Ib$deRt$; z&&0j{vF-<#51zXA$(38DK6`NK{=oI#zN`1vr<Z*=lShH{=u&QUwKNl|&8`>HMPxH< za(ylz95)-G%-V=+Gz_U6UGo=`kF-XtC1$xwBpX{yMgqBHvYILo2c+6<1<4eAy|{n( zUXRIy`nGxZ?rrFMX=&l$;R9Q?ZHCjBnVI^=mZxvu?e?6VZfYOx+4aU-uM<YKos-87 zmD5SCk{2oklVgMu<*H2**I^8R+iLkN9jE5bEGFmIvVll$acP}yFfvEGnw(voX$u+n zY$~@{-k36&5c0utaxT6$k&UnBGqH3kSxD!LvAiq0ZRB>M-IVP+SGq5qxzGVkINST6 z=lN%!`{<(&@%hi+{{H5zPXXD~^cc{eJbeOLf#Wt$ojd!~md!VBcZ1(B*{fGBF3->M zRJBpgvz1a?Gl`Q%z9`AW4Y)1e+{k=i_h>H8Y=kQ-)2pk~3z3DD%v!L`NE?q9T&`A+ zEwQOpv!0NP0mL0D9hB=uu3DBDPUX~Ux>k+Ws5tGvJ$C8X<#R{QUFbT0Z2vJ2@q>H! zpV_+Y)TvXjGg#!_y}O@!>T5`7=N?V{@gIM)x4#E^+qvt5=U>=9I6MR!MK%OX$W_Xv z9H}`p8Dt~j2#E+o${CanNFIH&w-?5)O?|rm#*HJlhb|5EoW1wp^o?sDpT4x~<Yxyj z4xG6@c<x&7smu3|U$}nY<io3XC%Suvu5~}S^x4FHfB)5i+sE&nd;h|{BlpKHk1zEu zt&a!Rrq_1=at~6XL?QtO|Kw-?05VKYPI3%;>&DG(Tei;5Om%&7^pBp|nn=WM-MX=D z+m@?WKgF1diLuV<w0`=NzeiX_rGqpOffEEnA%oll5fq@2uK3^u6C<hk@W$%Bz|!s2 z=wLM5w;UZ<i4O$AJu9oXXP0hGuHBgn_pXKqf^)ZK{g;O(Zj4TKj}KlPT<BR|y1%y8 z9SGlzB!?2|>0Ep^F+Z}<b@2G|^6L2H#Miex1%m?<;2b6<CZPKt{^0FxTQ@_xKf4Kh zM~@uZvia$6ee;htf8(iVwrxQo5Do>9`T-)<r~x9<XgrZB;T5TII#nhC9qy087bZuL zBb7ED7E&V{*|Ck>cqa8Q8Sjrm&{LSmhx)?Np(JGaK`=R)kB?`={$y}4n)T<>!|BX; zHZ&X_zCHqy9Nu?i*Upa`jRsC1i9yGFhy{6y#PXj0ypIIgKfQu#v5itOkE9f!k=4*t z9V$n*gRelxcw(5(e`Rd?*4*Uv*+;im*8AhDz0p8lDA2ba><<Kb*A}}MXRgi6e>R79 zWH6K%NrVTI+39+4Fc}z#gh#^*_vWKR;f3x;(>Er1&fLF!`gS&yg%4R?Tsd&yK($_h zsR6WXC_qp4KuW;RAwr$l00eEoLb8AU+?l!A>CVjovQQBX0L3r}*<>fIVx+JC%Dr1B zuU+rD+H<jI@ao{5Gj|6r_1`#p{qlkHw~ycGzi_|z?5*yu3*AT0T;Bc3y<=BrZ%i-2 z&tLNoU$}SSqr>-4TpYZ3r{`?<@YP;AStIdS$BB{)hDap#!G}8^^!M?KfYmzaVQQa) z20^_Bgk`AyzMfqley}h<2TYy-u19OMu?KHFG>wL@n$Bo6uhF7L%NDPz4VgGyWIm|A zaezwOtaD;6Bc|g{IbUB}U+<fkxZ1ODcQ7$F%||1-rFmCUNdl=lc-n&IS|slQeNk&8 zw+6F!?f&TC;X^|sgNP=NNdjrqtK(y%7cZQ9@7;gAclS0_>%js_4<bkm&}e%CWrIu5 zx(_89$w-l`klLx)C{s<X)zVy4!7Y#t&^1f0W{aWeHXFB5FRo3-r}~pK!@<!9RAf;q zBvGon$U03MY9vV;Awj!S7Qw-yuq8=prBWIk>iu~Co|C6Osg#R&cjePdhYs!s)@UT; z(ZJh@cliWC51a-`);qT)=<yVfhL5HyG*tzkh!-R^h=b~+iD9Ozi3T=+0$8E)(WOB) zH*HeOrO>de7hJU>7ox7iBLG^ur0J5_xzR%63ecXKu>o?&)VUCY(<RZ)wKtNHU+vrT z?$3YL*ZaUjiKRU#(5u%2jiODs-fjXn6c5m7bml>=$odqK(G?zUT$crjqfyczYABq5 z@I!7SbggBot|hp3BeB+JOW}Ovp{tczV#7sI4mD_!Zb&E*6iqZO)k{G=++G<5G*E|a zX^ss?i+a({W>Wsq5ie4}MPNMIa2MDf1nLAhyaIIS7_Wd5Jy1M)umSY=0M}F{6n_#= ziChDFK*@-@SCe=}=AfY_R%(LdN-QueGl61iLZYB!#nCjnR>zEntyoRTX{x5BC@Q(L zgXRDgprL7xi^PB&9kUUYx0{|Ky;lH@2E<eIV?hs~V-F17fSS<&T<i*8^hpe3tH4Yt zJOia#s)!U6d9!7z%@!$0$u*K=qYlu8Y%V#$)|WEzu~KFo!(jEueo%~=His(4vIJct zH>;Q$<^pBIqEuBy!OQc!qRC!y<q0(B@!{9Kp0^Er#0(x|(TN7oLof!VC(sknY@@D= zqM?YUA|lqK)N^bNXpn-TfJG8RmTB9z+K2~7H9jmd>&eKJrIBkw0gRMsNhtG7iDxP} zD{u^(!MVc_Wl=)ajQR|DoR`oc-+xR4h{so8MFZypd^jldV?Siuo$aCDy8yuxLO^5B zlGwQokwsl5cge_4nk@rxO_ZLf<vW)>#Q&Ls!RNE#38fKE1jZbVf*Cl5iG7m$5JQ2q zkThE4j>6L-Rx+Sb1K?2|OE@%;1iJL-K@{Av0WwTi0m!2-ko<pafr7CgZ=Ya`PnK9< zLdA-&feRfLYAC!(mPpJAMIB~`2bSO{T%{UY95k3%K04*LB{0fVHITb)>6inEVYo0o z&uFkrXC=Zk%!%Z><3Jp!7C4|<j};IMhM)&e(7?loVGyA5276RNB86S~GU+(aH83Nl zfQCA|hnpiMw@LnN%OdxrFmYQdF}am`de-Kn>ENi_=3xnNcQ9obD}?wyi5CU<CRUMo ztl?oIp|DAAM?po7YQQ6S;5<N3Hr9QtS~NV3{<^YpGN2+hg9gM`t>jZ1(OMM_p9C8a z2w|dS*==&aftnM>)FhY31}9ZxrTCOV1uQO-TpyH~G&Jo%xv~JGgrH(?I#`LQ6E^TU zDLaVqucH}KgAr*KYd~!{4Npf9kIi^`^zfVp<o|8EqioMrqu*zX5>qS`<H16Fl_`Y` zHtC9KS4q42hARi%#+Z=2nOi&>7~8Y4bV{v`x?0>}1FjIFVm;}(Gs)@0k%#-D{=Kn@ z1M$g&$(duh#Z#r#i}lb|vpnJ|i>?zP(oDK)(B+m~G34qsL#T+2tW4)kvD#EAN2V;X z4!txr#*%4`uPJN=q6>9hrff%P!=l<y9=u$Qspot)I1RGu4U0`TGV_`Bf&6-3a`t*; z^nA>JDmQbkzIstgeP&hrY-&6kxE*<PJ0BWWE6WzO=(00yYP8*W=rW_N`iM)Br<U)L zQuiC78|nG;8*^t@hYmxMk1i(WE`%pfr<ZPsh54qKa_x$%WR-eIEC*3{+CsLi6m2<g z3ONX<2r-3%%4KbnvTU~9L}r4c({W@zw@JB9$(55@WxgEjNz8t_F?E^^-E?w8&CH-2 zzEfYmnw>ry9y_@)e^V&VyH?HB%9+r3XyI;T{#t1ELTK{*(qLC`>~v`SOknIp;9(a~ zZp@ym1#a+(J4Ru^t_(ISLvCZFSs75$cS<Xl6H_NbqsNldr*n&!(~rnz*2hj|S8i2f zy-Iny$*#2cK$BZ{_;p(dxkjpGWL>kSa77$~t#H0dVlX;?B|LR5z4$4Y=(Eb;!~N|1 zg~-DbnVBnmWXJ(fF63$%lZu*bMx_g;P-ChInM)Z`0#Vtu@_J*vk(zRanCs-)LfGYl zZGO$D%yQ}B)clp`)cKA1OR>pQA%9nHfiTC&_qz0$+Ze@W$PqQhS`EKm9AXo9u?;eE zf=F=u<oei&waGJ?@O_;LwB-y=!_}%jHh#k>_nPGad?7V=etG0XZR4R%2VJY|T9m8N zu1dK|-Q+8-!MAi#71*X}kdm`)pe9npqM=qBr6^U7vDKI^<XxL4UvxR0%UELGb!fNA zwA8X|R3U03Or^$?i?`NB&jrW9nQJ)P$mF@m_?h_B+2YD|aihm7jWo-nL@Fb#+Ne<* zjV_#9_IJhSF5x@_{xiPH`sL*8nfUDaV(6aPSa7YZ>(Xt9HC4DX2L1uLD?9_do@1gU zZtyIJqLpU_1dNWa=)|42MpbgzjbOEq(q!bihAJU6Ry3($YP_Wjszh^iSrPF{apa=w zG~5>UR&iCFd){r8-BuCCt(RwOk-pUYwaDa!@Yw0#=*gAguIQr+HZx_^{90+)l^?m> zw2#Y8yW$3P&^GE#wQj1&nd*qlvcjvXOz!%dHqxL5RYn-HOog}}mTNR<o)_W9i9;nh zkO>dVR`Z2q4Cn>A1~Yd|NfsJpDw$^4imI}vC9!PDHTjlCLtKq&tBs~ybB%`E=3KMx zS`FAtODh;cN~5DH6~U9rK8ig0Y+>Z|>iDUZ(W6U4hkRl^Db{m_NF!Tn+Xh@RTr8YF z5*@&zupH0nCSo!)>IwNh&c*Sw65b-U5Sa#ik)w!QwUmyBAv{&}VhzXE8M?}_HHxml zwIU5POhh8NWh-q<ahr<UGH^;wQ-EvZsDi+hWWKD+M0XHPs%k>nb%eHDYRRau)=h5B zHIqJ7K!8xl?|TfZ!?#m)3+IjmM?_)?MU%J)pa_{D1F~&}m)ppxOeF6l{bV>+6lf@w zL>3E#uW!Udsd%JP&Lb`gJdFm@QN#`}WFYrYH9?RW?1AHJrE-?#s+z{N+q#Ls&sMP? zmMUo?jngv~4h@y7qirjUDb-cJ&@$>iQd}TgS9RC2kp&o-ofTkj8q#_N$(Slhg53GZ z6{}h#`Oy)fkXCTK=(L(7;x`T8#vuqi)u@*lx(0R^^66qBm(OL8?jiV*%$s2qK|~Z3 zM244WN#$gXZ?(<N?`~|hQb3|c>__4uGDkx!RU#L3Z3kHmP7M|X)wCVe=lw(n0UH#K zlUW`n2UCN{vWkGK87joGwPYgp!TY}$8W<FLq4Rr|rWvx;)OPRLdHK`x6kUZGAQa=9 z0E)~3nPdNh``>-zO%y>YFJfktI08e<5{Hq<8oY7_`|PMgCHHiW!`18LBv_tr(5~GC zR*Zo<kaz(!iY$SyAh>jXYl1*!CYI8<220gxMbUuR`vq2%IaL!;BW?2e{_sEk0dhZN z+fV}f?>)G^=?UMfufB}50XFL8WuO6)1hfWwdv-kk9P)Ki_F7iUfWT}F<nCY^1bK+} zL~<c<yedi<i3}MqR6#)khQmR2L>R@>K+jT@Y%=WgGC*W4ogY)0uHA;dfLrDT<nqW- zkOwP@1k)Vs9{}jz``xeh-0y|`$+C=8^4aIV{rg}2$}2CwU_%LXoug_QIFLq#a840M zhWqh~W$MW6RFT6raIh#%VL~WF!Rkt(n2g4d--0~0ZjfKEWu@gbi9fX+e8eG4P5V)X zVsn@_os49YQ6EYmR38jOX_|&|9~39~9r%p|m84fB_a(`$?SL3hKJkSQKiK)F-}@6N z8$Ki+kN^8G|IUGZd*6KZCBRyGH1mhQ|CKjh+3{Qd>Ywk~y%Pb*KRWcSXSQTB$uIre z-@M&@16ivguv?z`diRa%x+wqj|NQ;e{?mW{>Q{d6%~xN;x{4%k+O+A&p~HBNjg7tj z<{NwV?0M#yt^eX*KDl+<Q#4gA6|?zFqERjQ4EQET#}fqAObK8}QP^&h;u(1-N@CQW z<cFTt#Hjy^Pkf=2%YX5SP2u%5obq4(uXld6`=f(<_rCe^%g8+A!C*QTlUX*ry7~p5 z&$aE|dv{;n{w#9WAAJ9R{P>4|jtV*+4&YU}l>79;`DefVEm$g|!3*1;yLj<Dxx?M$ z>+0$vWsI&p_u>n0e&;RlGo49%@t<vaIM`RnY#_};gz`a`Ffv6Gftz?Dg@tv45}+*k z9|tJu3=N<$Xl&#m)`KPe?;ro@Cx7=hwNn0H|HhM<czo~9U4QcCcgQ`X<(xlx@-N<g z`@65d@*7Y1P;rh854`d6i>MVQ{Ucxg?cW524)5Rhmw)jN$OE9;pMQ4WzCF8k?R@dY z?RdgX0rbks3hD?^mR@=7)xLp#_yDNy_1AVx_=jZpD3l|v?E`5*0PGEh4{wDNgzcm4 zRTJokfF9ueqq!My8im8m^duU`jvoHe+dlv+4(~tk>Wi;{k$?50AAj$yH%A6~i@A*_ zH~HYRM+SRddg0sfS75~-eD!yG?sk83+vcIceiQ-U`|f{x=j|Vk`^WqbM`xy{qu~gs z?DP3R5>)SsqP+InYXbuVFla>L@4T^NYJ7;Q6@eSaMO+??7quNcl;?La4gzlgD+ENq zg%?9PIWjy5tZ)(d`06V!p^XJG;Ml>VukCmh#`Mzm=dWD6055y|*g>2LV)*RT!#7^t z4$y`w?E7fv_y7B!{fFQAlECpOc6aUk@TC`bl#3;NtW~PXcmi;r@NELQAy^-8rzfWf z28Dg$xosnZ_dyIeY#5{u(MlCjRO{aVO&~s~Q&&RMzz44aHA68pRev}#1fVz>Z0Y*7 zE8lqf>p+i>AMgIv%iCXqZ@P8u>XSa-Td%$RcYpI&0FA}`BfYQecn*<L;;GR35;~6^ z+Rrg8faWsU9WT82+yCabwm<j$m%sGy60tZ!CFTbY8Hz@F^WydwrY0sazoBw(y}rHY z-c6pV$ekYtiKe|u7UF>hN>BoT02<$cj=>gC2%AAC+Mo^gfTKVU+#=hcWKKe`#OPY7 zm`+4N44{<wdaaz{nHrKrMP#6CtVe#2R8%MuIRG>YO+&}t1zP9-MraVcB^M@|4&6gv zP;j-hQOYNgFya_1g{%+dF}MLulS;I6c?Zw{1T?^h@8E#YfXeH&3Z7sKHURWk0SCgd zG(5V4Gu3o#o2l0%j)rPMKH!G$E*H|Zat>Ax=uEu=PXZ{N{1$Fm2T*uV94813+<1j^ zKqrm@f*ycDVpGb;sahWSE!(JqAwF{D1!=dSV=x59*x^2b3pGQj_!@|dZFqKxw|E5| zdwWA0aTK9JWI0#`CV?{CCVVsp&@Ed7=xQm;(N%I?$kF6(#4_NHpj}`k7b~CNN1K3% zHg*E{iYGQkVvUBBz7mft<B7Z+lM{Mi8E6+u0=YeUU;?NUGXXll0jLKTd+><vk%X|V zbK~YhNpSR<3bo@i@Pc{B6L21=8xVMN>3F4>f!5m&&XZ^XlYAbtIu|q^YE16Me|!X1 zPdf;!;lLtC7m?74963hBU1Ep;?PUTG!jleS4-ift^gshBF%ddFDtoU!Z%~9G_%5b` zU<Sv47t$f%38)NZL(?P|Z(HyraMGTA1Gh&ud<0@NJi!vs2%ZpRSJ4pETtWr}&~P1= aCjVbng3ne9rkY#;0000<MNUMnLSTYXJ&n}> literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/blackMarble.png b/libs/Cesium/Widgets/Images/ImageryProviders/blackMarble.png new file mode 100644 index 0000000000000000000000000000000000000000..45e0fc7b833f80d2fc68f1d3c9f5b82a5d52e74d GIT binary patch literal 5836 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 WE1@9ze`f*!0000<MNUMnLSTYEa2QSi literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/esriNationalGeographic.png b/libs/Cesium/Widgets/Images/ImageryProviders/esriNationalGeographic.png new file mode 100644 index 0000000000000000000000000000000000000000..bcfdd0b28d3ebd7fd4df1e8fe632d6ce2c8c38be GIT binary patch literal 11555 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 Vu;WKwORfL_002ovPDHLkV1hsqiJAZa literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/esriWorldImagery.png b/libs/Cesium/Widgets/Images/ImageryProviders/esriWorldImagery.png new file mode 100644 index 0000000000000000000000000000000000000000..a9429daf31d7ddbef690cca8388521bd04294713 GIT binary patch literal 11575 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≥%k22x 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/esriWorldStreetMap.png b/libs/Cesium/Widgets/Images/ImageryProviders/esriWorldStreetMap.png new file mode 100644 index 0000000000000000000000000000000000000000..dfbc1f42d3add0290b2a1a85ff54aa58e305af31 GIT binary patch literal 8501 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png b/libs/Cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png new file mode 100644 index 0000000000000000000000000000000000000000..f2eba41069b5387b697843e0fc2338915644b573 GIT binary patch literal 11342 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 Q2><{907*qoM6N<$g1%1>RR910 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/naturalEarthII.png b/libs/Cesium/Widgets/Images/ImageryProviders/naturalEarthII.png new file mode 100644 index 0000000000000000000000000000000000000000..50271c79a07e623796179e9feacab21f69ff8859 GIT binary patch literal 7491 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 N002ovPDHLkV1oIR%-;Y2 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/openStreetMap.png b/libs/Cesium/Widgets/Images/ImageryProviders/openStreetMap.png new file mode 100644 index 0000000000000000000000000000000000000000..84acdb8095f8efa82d7d9ff5a8c4411741f7b488 GIT binary patch literal 2663 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/stamenToner.png b/libs/Cesium/Widgets/Images/ImageryProviders/stamenToner.png new file mode 100644 index 0000000000000000000000000000000000000000..af894096c891f908ea13939d7b41574a5d9228a9 GIT binary patch literal 4119 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 Tbyfe%DgZgKvUIJaaq#~EEV0_J literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png b/libs/Cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png new file mode 100644 index 0000000000000000000000000000000000000000..552130eb52c29237b125b2febfbecab41bd41c07 GIT binary patch literal 10806 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 A{Qv*} literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/NavigationHelp/Mouse.svg b/libs/Cesium/Widgets/Images/NavigationHelp/Mouse.svg new file mode 100644 index 0000000000..7fae028c06 --- /dev/null +++ b/libs/Cesium/Widgets/Images/NavigationHelp/Mouse.svg @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="29.6875" + height="40.625095" + viewBox="0 0 29.6875 40.625095" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="Mouse.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="747" + inkscape:window-height="596" + id="namedview17" + showgrid="false" + inkscape:zoom="1.84375" + inkscape:cx="-37.919388" + inkscape:cy="92.305679" + inkscape:window-x="266" + inkscape:window-y="72" + inkscape:window-maximized="0" + inkscape:current-layer="Layer_1" + inkscape:snap-center="false" + inkscape:snap-page="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3" + transform="translate(-17.15625,-19.531154)"> + <g + id="g5" + style="fill:#4d4d4d;stroke:#4d4d4d"> + <path + d="M 31.9335,20.041 C 24.639,20.034 17.653,20.318 17.653,44.617 c 0,10.951 8.799,15.032 14.347,15.032 5.545,0 14.347,-4.081 14.347,-15.032 0,-24.27 -7.119,-24.569 -14.4135,-24.576 z m 0.7515,1.358 c 5.643,0.012 10.927,0.236 12.063,16.153 -3.86,1.805 -7.916,2.765 -12.063,2.86 l 0,-2.966 c 0.845,-0.162 1.481,-0.909 1.481,-1.782 l 0,-8.956 c 0,-0.876 -0.637,-1.621 -1.481,-1.784 z m -1.027,4.855 0.685,0 c 0.249,0 0.453,0.205 0.453,0.454 l 0,8.956 c 0,0.249 -0.204,0.449 -0.453,0.449 l -0.685,0 c -0.249,0 -0.452,-0.2 -0.452,-0.449 l 0,-8.956 c 0,-0.249 0.203,-0.454 0.452,-0.454 z m -0.345,-4.855 0,3.525 c -0.845,0.163 -1.479,0.91 -1.479,1.784 l 0,8.956 c 0,0.873 0.634,1.62 1.479,1.782 l 0,2.966 C 25.002,40.264 20.408,38.16 19.25,37.573 20.381,21.633 25.668,21.411 31.313,21.399 z M 32,58.274 c -5.016,0 -12.976,-3.707 -12.976,-13.658 0,-1.983 0.045,-3.853 0.134,-5.563 2.003,0.929 6.696,2.74 12.868,2.74 4.394,0 8.704,-0.934 12.813,-2.771 0.089,1.718 0.135,3.6 0.135,5.595 0,9.95 -7.958,13.657 -12.974,13.657 z" + id="path7" + style="fill:#4d4d4d;stroke:#4d4d4d" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cssscccccssccsssssssssccssccccsscscss" /> + </g> + + +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 31.485081,35.842143 c -0.104591,-0.104591 -0.190166,-2.231347 -0.190166,-4.726123 0,-3.983994 0.05502,-4.557071 0.452127,-4.709456 0.24867,-0.09542 0.556802,-0.06882 0.684738,0.05912 0.127937,0.127936 0.199056,2.296481 0.158043,4.818988 -0.06319,3.886405 -0.13867,4.598683 -0.494572,4.667009 -0.231003,0.04435 -0.505579,-0.0049 -0.61017,-0.109533 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /></g> +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644;stroke-opacity:1" + d="M 11.584306,20.532528 C 9.1265112,20.247533 6.2927846,19.555647 4.1047676,18.706316 c -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.5226316 4.304477,-8.0618496 9.1542404,-8.0618496 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.5275241 -0.422157,5.7217066 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3766" + inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/libs/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg b/libs/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg new file mode 100644 index 0000000000..0c49c15fb9 --- /dev/null +++ b/libs/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="64px" + height="64px" + viewBox="0 0 64 64" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="MouseLeft.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1282" + inkscape:window-height="886" + id="namedview17" + showgrid="false" + inkscape:zoom="3.6875" + inkscape:cx="-10.305085" + inkscape:cy="32" + inkscape:window-x="104" + inkscape:window-y="136" + inkscape:window-maximized="0" + inkscape:current-layer="g3" /> +<g + id="g3"> + <g + id="g5" + style="fill:#4d4d4d;stroke:#4d4d4d"> + <path + fill="#020202" + d="M32.854,20.028c-0.015-1.274,0.576-2.269,1.151-3.236c0.758-1.278,1.543-2.6,0.997-4.417 c-0.555-1.667-1.607-2.485-2.539-3.212c-1.254-0.973-2.159-1.676-1.687-4.343l0.041-0.229l-1.35-0.238L29.427,4.58 c-0.615,3.484,0.878,4.643,2.195,5.666c0.85,0.663,1.653,1.288,2.072,2.542c0.366,1.224-0.18,2.143-0.869,3.306 c-0.641,1.081-1.366,2.3-1.349,3.933c-6.837,0.007-13.823,0.291-13.823,24.59c0,10.951,8.799,15.032,14.347,15.032 c5.545,0,14.347-4.081,14.347-15.032C46.347,20.347,39.228,20.048,32.854,20.028z M32.685,21.399 c5.643,0.012,10.927,0.236,12.063,16.153c-3.86,1.805-7.916,2.765-12.063,2.86v-2.966c0.845-0.162,1.481-0.909,1.481-1.782v-8.956 c0-0.876-0.637-1.621-1.481-1.784V21.399z M31.658,26.254h0.685c0.249,0,0.453,0.205,0.453,0.454v8.956 c0,0.249-0.204,0.449-0.453,0.449h-0.685c-0.249,0-0.452-0.2-0.452-0.449v-8.956C31.206,26.459,31.409,26.254,31.658,26.254z M31.313,21.399v3.525c-0.845,0.163-1.479,0.91-1.479,1.784v8.956c0,0.873,0.634,1.62,1.479,1.782v2.966 c-6.311-0.148-10.905-2.252-12.063-2.839C20.381,21.633,25.668,21.411,31.313,21.399z M32,58.274 c-5.016,0-12.976-3.707-12.976-13.658c0-1.983,0.045-3.853,0.134-5.563c2.003,0.929,6.696,2.74,12.868,2.74 c4.394,0,8.704-0.934,12.813-2.771c0.089,1.718,0.135,3.6,0.135,5.595C44.974,54.567,37.016,58.274,32,58.274z" + id="path7" + style="fill:#4d4d4d;stroke:#4d4d4d" /> + </g> + + +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 31.485081,35.842143 c -0.104591,-0.104591 -0.190166,-2.231347 -0.190166,-4.726123 0,-3.983994 0.05502,-4.557071 0.452127,-4.709456 0.24867,-0.09542 0.556802,-0.06882 0.684738,0.05912 0.127937,0.127936 0.199056,2.296481 0.158043,4.818988 -0.06319,3.886405 -0.13867,4.598683 -0.494572,4.667009 -0.231003,0.04435 -0.505579,-0.0049 -0.61017,-0.109533 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /></g> +<path + style="fill:#66CCFF;stroke:#66CCFF;stroke-width:0.27118643999999997" + d="m 28.740556,40.063682 c -2.457795,-0.284995 -5.291522,-0.976881 -7.479539,-1.826212 -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.522631 4.304477,-8.061849 9.154241,-8.061849 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.527524 -0.422157,5.721706 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3766" + inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/libs/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg b/libs/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg new file mode 100644 index 0000000000..9dd533d58f --- /dev/null +++ b/libs/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="64px" + height="64px" + viewBox="0 0 64 64" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="MouseMiddle.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1282" + inkscape:window-height="886" + id="namedview17" + showgrid="false" + inkscape:zoom="3.6875" + inkscape:cx="-10.305085" + inkscape:cy="32" + inkscape:window-x="31" + inkscape:window-y="15" + inkscape:window-maximized="0" + inkscape:current-layer="g3" /> +<g + id="g3"> + <g + id="g5" + style="stroke:#4d4d4d;fill:#4d4d4d"> + <path + fill="#020202" + d="M32.854,20.028c-0.015-1.274,0.576-2.269,1.151-3.236c0.758-1.278,1.543-2.6,0.997-4.417 c-0.555-1.667-1.607-2.485-2.539-3.212c-1.254-0.973-2.159-1.676-1.687-4.343l0.041-0.229l-1.35-0.238L29.427,4.58 c-0.615,3.484,0.878,4.643,2.195,5.666c0.85,0.663,1.653,1.288,2.072,2.542c0.366,1.224-0.18,2.143-0.869,3.306 c-0.641,1.081-1.366,2.3-1.349,3.933c-6.837,0.007-13.823,0.291-13.823,24.59c0,10.951,8.799,15.032,14.347,15.032 c5.545,0,14.347-4.081,14.347-15.032C46.347,20.347,39.228,20.048,32.854,20.028z M32.685,21.399 c5.643,0.012,10.927,0.236,12.063,16.153c-3.86,1.805-7.916,2.765-12.063,2.86v-2.966c0.845-0.162,1.481-0.909,1.481-1.782v-8.956 c0-0.876-0.637-1.621-1.481-1.784V21.399z M31.658,26.254h0.685c0.249,0,0.453,0.205,0.453,0.454v8.956 c0,0.249-0.204,0.449-0.453,0.449h-0.685c-0.249,0-0.452-0.2-0.452-0.449v-8.956C31.206,26.459,31.409,26.254,31.658,26.254z M31.313,21.399v3.525c-0.845,0.163-1.479,0.91-1.479,1.784v8.956c0,0.873,0.634,1.62,1.479,1.782v2.966 c-6.311-0.148-10.905-2.252-12.063-2.839C20.381,21.633,25.668,21.411,31.313,21.399z M32,58.274 c-5.016,0-12.976-3.707-12.976-13.658c0-1.983,0.045-3.853,0.134-5.563c2.003,0.929,6.696,2.74,12.868,2.74 c4.394,0,8.704-0.934,12.813-2.771c0.089,1.718,0.135,3.6,0.135,5.595C44.974,54.567,37.016,58.274,32,58.274z" + id="path7" + style="stroke:#4d4d4d;fill:#4d4d4d" /> + </g> + + +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118643999999997" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 28.740556,40.063682 c -2.457795,-0.284995 -5.291522,-0.976881 -7.479539,-1.826212 -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.522631 4.304477,-8.061849 9.154241,-8.061849 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.527524 -0.422157,5.721706 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3778" + inkscape:connector-curvature="0" /><path + style="fill:#ffd800;stroke:#ffd800;stroke-width:0.33870965" + d="m 31.356243,35.809264 c -0.164314,-0.103856 -0.298753,-2.215682 -0.298753,-4.692945 0,-3.956026 0.08644,-4.52508 0.710296,-4.676395 0.390663,-0.09475 0.87474,-0.06834 1.075729,0.0587 0.200991,0.127038 0.312719,2.28036 0.248288,4.785159 -0.09927,3.859122 -0.217853,4.566401 -0.776977,4.634247 -0.362909,0.04404 -0.79427,-0.0049 -0.958583,-0.108765 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /></g> +</svg> \ No newline at end of file diff --git a/libs/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg b/libs/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg new file mode 100644 index 0000000000..2662ad18d0 --- /dev/null +++ b/libs/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="64px" + height="64px" + viewBox="0 0 64 64" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="MouseRight.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1282" + inkscape:window-height="886" + id="namedview17" + showgrid="false" + inkscape:zoom="3.6875" + inkscape:cx="32" + inkscape:cy="32" + inkscape:window-x="31" + inkscape:window-y="15" + inkscape:window-maximized="0" + inkscape:current-layer="g3" /> +<g + id="g3"> + <g + id="g5" + style="stroke:#4d4d4d;fill:#4d4d4d"> + <path + fill="#020202" + d="M32.854,20.028c-0.015-1.274,0.576-2.269,1.151-3.236c0.758-1.278,1.543-2.6,0.997-4.417 c-0.555-1.667-1.607-2.485-2.539-3.212c-1.254-0.973-2.159-1.676-1.687-4.343l0.041-0.229l-1.35-0.238L29.427,4.58 c-0.615,3.484,0.878,4.643,2.195,5.666c0.85,0.663,1.653,1.288,2.072,2.542c0.366,1.224-0.18,2.143-0.869,3.306 c-0.641,1.081-1.366,2.3-1.349,3.933c-6.837,0.007-13.823,0.291-13.823,24.59c0,10.951,8.799,15.032,14.347,15.032 c5.545,0,14.347-4.081,14.347-15.032C46.347,20.347,39.228,20.048,32.854,20.028z M32.685,21.399 c5.643,0.012,10.927,0.236,12.063,16.153c-3.86,1.805-7.916,2.765-12.063,2.86v-2.966c0.845-0.162,1.481-0.909,1.481-1.782v-8.956 c0-0.876-0.637-1.621-1.481-1.784V21.399z M31.658,26.254h0.685c0.249,0,0.453,0.205,0.453,0.454v8.956 c0,0.249-0.204,0.449-0.453,0.449h-0.685c-0.249,0-0.452-0.2-0.452-0.449v-8.956C31.206,26.459,31.409,26.254,31.658,26.254z M31.313,21.399v3.525c-0.845,0.163-1.479,0.91-1.479,1.784v8.956c0,0.873,0.634,1.62,1.479,1.782v2.966 c-6.311-0.148-10.905-2.252-12.063-2.839C20.381,21.633,25.668,21.411,31.313,21.399z M32,58.274 c-5.016,0-12.976-3.707-12.976-13.658c0-1.983,0.045-3.853,0.134-5.563c2.003,0.929,6.696,2.74,12.868,2.74 c4.394,0,8.704-0.934,12.813-2.771c0.089,1.718,0.135,3.6,0.135,5.595C44.974,54.567,37.016,58.274,32,58.274z" + id="path7" + style="stroke:#4d4d4d;fill:#4d4d4d" /> + </g> + + +<path + style="fill:#65FD00;stroke:#65FD00;stroke-width:0.27118643999999997" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 31.485081,35.842143 c -0.104591,-0.104591 -0.190166,-2.231347 -0.190166,-4.726123 0,-3.983994 0.05502,-4.557071 0.452127,-4.709456 0.24867,-0.09542 0.556802,-0.06882 0.684738,0.05912 0.127937,0.127936 0.199056,2.296481 0.158043,4.818988 -0.06319,3.886405 -0.13867,4.598683 -0.494572,4.667009 -0.231003,0.04435 -0.505579,-0.0049 -0.61017,-0.109533 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 28.740556,40.063682 c -2.457795,-0.284995 -5.291522,-0.976881 -7.479539,-1.826212 -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.522631 4.304477,-8.061849 9.154241,-8.061849 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.527524 -0.422157,5.721706 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3778" + inkscape:connector-curvature="0" /></g> +</svg> \ No newline at end of file diff --git a/libs/Cesium/Widgets/Images/NavigationHelp/Touch.svg b/libs/Cesium/Widgets/Images/NavigationHelp/Touch.svg new file mode 100644 index 0000000000..e682b30191 --- /dev/null +++ b/libs/Cesium/Widgets/Images/NavigationHelp/Touch.svg @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="76.664284" + height="128.25087" + viewBox="0 0 76.664283 128.25086" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="Touch.svg"><metadata + id="metadata3468"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3466" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="920" + inkscape:window-height="780" + id="namedview3464" + showgrid="false" + inkscape:zoom="1.7688899" + inkscape:cx="-0.07794217" + inkscape:cy="94.239301" + inkscape:window-x="1529" + inkscape:window-y="186" + inkscape:window-maximized="0" + inkscape:current-layer="g3428" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3428" + transform="translate(-7.9878665e-4,-5.1661327)"> + + <path + d="M 76.151,80.896 C 77.465,66.89 62.145,65.577 62.145,65.577 57.771,52.885 46.39,59.45 46.39,59.45 40.701,46.758 29.322,55.511 29.322,55.511 27.912,55.092 25.613,11.796 24.414,11.604 23.44,7.068 14.011,-1.728 12.511,14.772 c 0,36.5 -1.135,47.304 -1.135,47.304 C 9.188,67.328 5.31,80.458 5.31,80.458 -3.006,89.649 0.933,96.214 0.933,96.214 c 7.002,12.255 21.385,28.449 21.385,28.449 6.129,5.252 2.627,8.316 2.627,8.316 l 42.455,0.438 2.334,-7.878 c 9.628,-18.382 6.417,-44.643 6.417,-44.643 z" + id="path3432" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccc" + style="fill:#ffffff;fill-opacity:1" /> +</g> +<g + id="g3434" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3436" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3438" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3440" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3442" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3444" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3446" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3448" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3450" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3452" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3454" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3456" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3458" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3460" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3462" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +</svg> \ No newline at end of file diff --git a/libs/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg b/libs/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg new file mode 100644 index 0000000000..f0509e8559 --- /dev/null +++ b/libs/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="76.664284" + height="133.41701" + viewBox="0 0 76.664283 133.417" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchDrag.svg"><metadata + id="metadata3468"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3466" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="920" + inkscape:window-height="780" + id="namedview3464" + showgrid="false" + inkscape:zoom="1.7688899" + inkscape:cx="-0.077942171" + inkscape:cy="94.239298" + inkscape:window-x="161" + inkscape:window-y="225" + inkscape:window-maximized="0" + inkscape:current-layer="g3428" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3428" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="M 18.653,0 C 12.359,0 7.258,5.102 7.258,11.395 c 0,6.293 5.102,11.395 11.396,11.395 6.293,0 11.395,-5.102 11.395,-11.395 C 30.048,5.102 24.946,0 18.653,0 z m 0,20.43 c -4.989,0 -9.036,-4.046 -9.036,-9.036 0,-4.989 4.047,-9.035 9.036,-9.035 4.989,0 9.035,4.046 9.035,9.035 0,4.99 -4.045,9.036 -9.035,9.036 z" + id="path3430" + inkscape:connector-curvature="0" /> + <path + d="M 76.151,80.896 C 77.465,66.89 62.145,65.577 62.145,65.577 57.771,52.885 46.39,59.45 46.39,59.45 40.701,46.758 29.322,55.511 29.322,55.511 27.912,55.092 25.613,11.796 24.414,11.604 23.44,7.068 14.011,-1.728 12.511,14.772 c 0,36.5 -1.135,47.304 -1.135,47.304 C 9.188,67.328 5.31,80.458 5.31,80.458 -3.006,89.649 0.933,96.214 0.933,96.214 c 7.002,12.255 21.385,28.449 21.385,28.449 6.129,5.252 2.627,8.316 2.627,8.316 l 42.455,0.438 2.334,-7.878 c 9.628,-18.382 6.417,-44.643 6.417,-44.643 z" + id="path3432" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccc" + style="fill:#ffffff;fill-opacity:1" /> +<path + d="m 65.247258,98.823749 c -0.681067,0.71969 -7.149935,7.376421 -7.149935,7.376421 0,0 -0.86404,0.92222 -0.86404,-0.29705 0.0013,-1.22468 0.0013,-3.17039 0.0013,-3.17039 0,0 -0.498094,0.003 -1.261753,0.002 -2.35324,0.002 -6.936466,0.002 -8.692502,0.002 0,0 -0.07751,-0.007 -0.162642,-0.0472 0,0.0378 0,0.0972 0,0.13232 0.01652,0.0891 0.0013,0.16068 0,0.16608 0,0.0149 0,0.0419 0,0.0554 0,0 0.01779,0.077 0,0.17013 0,2.02673 0,6.49066 0,8.99672 0.0013,0.90332 0,1.49203 0,1.49203 0,0 2.283354,0.002 3.229986,0 0.942821,0 0.07751,0.87225 0.07751,0.87225 l -7.121981,7.36157 c 0,0 -0.470139,0.5833 -0.963151,0.0607 -0.677255,-0.72374 -6.941548,-7.59515 -6.941548,-7.59515 0,0 -0.867853,-0.91952 0.280812,-0.91952 1.151207,0.002 2.983481,0.002 2.983481,0.002 0,0 -0.0026,-0.52929 -0.0013,-1.34079 -0.0013,-2.50067 -0.0013,-7.37102 -0.0013,-9.23572 l 0,-0.004 c 0,-0.0567 0,-0.14582 0,-0.21333 -0.08259,0.0392 -0.15883,0.0459 -0.15883,0.0459 -1.756036,0 -6.339262,0 -8.696314,-0.002 -0.759847,0.002 -1.260482,0 -1.260482,0 0,0 0.0026,1.94706 0.0026,3.17039 -0.0013,1.21793 -0.864041,0.29975 -0.864041,0.29975 0,0 -6.467597,-6.655381 -7.147393,-7.377761 -0.493012,-0.52525 0.05464,-1.02484 0.05464,-1.02484 l 6.927571,-7.566801 c 0,0 0.82338,-0.92357 0.82211,0.08236 0.0026,1.004586 0.0026,3.432334 0.0026,3.432334 0,0 0.552732,-0.0014 1.402796,-0.0041 2.439643,0.0041 6.872933,0.0027 8.678524,0.0014 0,0 0.116899,-0.03106 0.23634,0.027 0,-4.084505 0,-8.204115 0.0013,-9.436893 -0.0013,-0.807449 0,-1.339448 0,-1.339448 0,0 -1.832274,0.0027 -2.983481,0.0027 -1.146124,-0.0014 -0.280813,-0.918169 -0.280813,-0.918169 0,0 6.261752,-6.872771 6.942819,-7.596505 0.494283,-0.522547 0.964422,0.05806 0.964422,0.05806 l 7.12071,7.361561 c 0,0 0.869123,0.874963 -0.07624,0.872261 -0.945362,0.0027 -3.229987,0.0027 -3.229987,0.0027 0,0 0.0013,0.587358 0.0038,1.492025 -0.0013,1.284087 -0.0026,5.419901 -0.0026,9.503056 0.120712,-0.06211 0.240153,-0.02835 0.240153,-0.02835 1.804319,0 6.237609,0 8.675982,0 0.851334,-0.0014 1.404066,0 1.404066,0 0,0 0.0013,-2.426399 0,-3.430985 0,-1.003235 0.820838,-0.08236 0.820838,-0.08236 l 6.927572,7.566803 c 0,0.001 0.546378,0.50094 0.05845,1.02484 z" + id="path3238" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccccccsscccccccccccccccccccccccccccccccc" + style="fill:#66ccff;fill-opacity:1" /></g> +<g + id="g3434" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3436" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3438" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3440" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3442" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3444" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3446" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3448" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3450" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3452" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3454" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3456" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3458" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3460" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3462" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +</svg> \ No newline at end of file diff --git a/libs/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg b/libs/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg new file mode 100644 index 0000000000..fe968ff45a --- /dev/null +++ b/libs/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="99.001816" + height="101.57817" + viewBox="0 0 99.001814 101.57817" + enable-background="new 0 0 100.775 118.638" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchRotate.svg"><metadata + id="metadata3382"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3380" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1105" + inkscape:window-height="739" + id="namedview3378" + showgrid="false" + inkscape:zoom="1.9873603" + inkscape:cx="11.856691" + inkscape:cy="15.112094" + inkscape:window-x="67" + inkscape:window-y="152" + inkscape:window-maximized="0" + inkscape:current-layer="Capa_1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> + +<path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 48.832974,0 c -5.85006,0 -10.591269,4.862311 -10.591269,10.85967 0,5.997358 4.742138,10.859669 10.592198,10.859669 5.849132,0 10.59127,-4.862311 10.59127,-10.859669 C 59.42425,4.862311 54.682106,0 48.832974,0 z m 0,19.47021 c -4.637107,0 -8.398657,-3.855921 -8.398657,-8.611493 0,-4.754621 3.76155,-8.610543 8.398657,-8.610543 4.637107,0 8.397729,3.855922 8.397729,8.610543 0,4.755572 -3.759691,8.611493 -8.397729,8.611493 z" + id="path3430" /><path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 27.154761,39.321738 c -5.457398,0 -9.88037,4.703155 -9.88037,10.504205 0,5.801049 4.423839,10.504204 9.881237,10.504204 5.456532,0 9.880371,-4.703155 9.880371,-10.504204 -8.67e-4,-5.80105 -4.424707,-10.504205 -9.881238,-10.504205 z m 0,18.8329 c -4.325859,0 -7.834929,-3.729707 -7.834929,-8.329617 0,-4.598989 3.50907,-8.328696 7.834929,-8.328696 4.32586,0 7.834063,3.729707 7.834063,8.328696 0,4.59991 -3.507336,8.329617 -7.834063,8.329617 z" + id="path3430-5" /><path + d="M 93.394891,94.930552 91.5074,101.57817 52.728925,101.21032 c 8.08e-4,-8.5e-4 2.829619,-2.585988 -2.124439,-7.016318 0,0 -10.822746,-5.22596 -18.506953,-18.0968 0,0 -6.310236,-6.742109 -6.091889,-9.206596 -0.583067,-4.408398 -1.209805,-6.954724 -1.715239,-8.534999 -1.063849,-4.039774 -1.553525,-2.844172 -1.553525,-7.228104 2.452812,-14.333817 10.869455,1.810623 12.764445,5.488368 0,0 6.305384,7.578229 9.063029,9.283373 8.851152,-2.291524 3.039071,-22.109494 3.660956,-23.668675 0,0 -1.25024,-10.043558 -2.822341,-23.064577 -3.9949,-15.561935 8.286796,-19.626706 11.636292,-3.093053 1.545414,7.344522 3.686834,19.52689 4.483397,19.774098 0,0 8.395048,-7.385018 12.995707,3.323385 0,0 9.202125,-5.538975 12.741777,5.170273 0,0 12.387573,1.10695 11.326563,12.923992 0,0 2.595085,22.156743 -5.191814,37.665865 z" + id="path3376" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccc" + style="fill:#ffffff" /><path + d="m 36.857901,10.534807 -5.731265,12.511815 c 0,0 -0.666487,1.516584 -1.19043,0.316343 -0.52908,-1.19559 -1.800413,-4.092683 -1.800413,-4.092683 0,0 -0.774356,0.279126 -1.962218,0.711771 -3.412049,1.225827 -9.61846,3.462323 -12.145716,4.370646 0,0 -0.609983,0.412873 -1.019633,-0.532666 -0.419926,-0.944375 -3.7806092,-8.602891 -4.0798222,-9.279772 -0.294076,-0.674552 0.288938,-0.867615 0.288938,-0.867615 2.4553422,-0.886224 8.8659382,-3.19599 12.1688342,-4.381112 1.05816,-0.382636 1.763171,-0.631523 1.763171,-0.631523 0,0 -1.02734,-2.324887 -1.664289,-3.782156 -0.636951,-1.454944 1.049169,-0.79202 1.049169,-0.79202 0,0 12.534822,4.676522 13.866509,5.195231 0.963131,0.382636 0.457165,1.253741 0.457165,1.253741 z" + id="path9" + style="fill:#d800d8;fill-opacity:1" + inkscape:connector-curvature="0" /><g + id="g2997" + transform="matrix(0,-1,1,0,-0.01316643,45.882166)" + inkscape:transform-center-x="-4.9812271" + inkscape:transform-center-y="-4.2696251"><path + id="path2999" + d="M 6.6614176,0.14173229 19.48819,5.5984253 c 0,0 1.559055,0.6377953 0.354331,1.1338583 -1.240158,0.5314961 -4.181103,1.7716536 -4.181103,1.7716536 0,0 0.283465,0.7440945 0.744095,1.9133858 1.27559,3.259843 3.57874,9.248032 4.535433,11.692914 0,0 0.425197,0.566929 -0.566929,0.992126 -0.956693,0.389764 -8.751969,3.685039 -9.460631,4.003937 -0.673228,0.283464 -0.885827,-0.283465 -0.885827,-0.283465 C 9.1062996,24.448819 6.6968507,18.283465 5.4921262,15.094489 5.0669294,14.066929 4.8188979,13.393701 4.8188979,13.393701 c 0,0 -2.3740159,0.992126 -3.86220494,1.629921 -1.48818905,0.637796 -0.81496067,-0.992126 -0.81496067,-0.992126 0,0 4.71259861,-12.1535432 5.24409471,-13.42913378 0.3897638,-0.95669294 1.2755906,-0.46062993 1.2755906,-0.46062993 z" + style="fill:#d800d8;fill-opacity:1;fill-rule:nonzero;stroke:none" + inkscape:connector-curvature="0" /></g></svg> \ No newline at end of file diff --git a/libs/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg b/libs/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg new file mode 100644 index 0000000000..e1206c5d62 --- /dev/null +++ b/libs/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="76.663582" + height="140.44" + viewBox="0 0 76.663581 140.44" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchTilt.svg"><metadata + id="metadata3364"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3362" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="766" + inkscape:window-height="480" + id="namedview3360" + showgrid="false" + inkscape:zoom="1.6804329" + inkscape:cx="6.1930652" + inkscape:cy="74.717535" + inkscape:window-x="343" + inkscape:window-y="203" + inkscape:window-maximized="0" + inkscape:current-layer="Capa_1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3322" + style="fill:#ffffff" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 12.622,5.815 c -6.294,0 -11.396,5.102 -11.396,11.395 0,6.293 5.102,11.395 11.396,11.395 6.293,0 11.395,-5.102 11.395,-11.395 0,-6.293 -5.102,-11.395 -11.395,-11.395 z m 0,20.431 c -4.99,0 -9.036,-4.046 -9.036,-9.036 0,-4.989 4.046,-9.035 9.036,-9.035 4.988,0 9.035,4.046 9.035,9.035 0,4.99 -4.047,9.036 -9.035,9.036 z" + id="path3324" + inkscape:connector-curvature="0" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 43.793,0 c -6.294,0 -11.396,5.102 -11.396,11.395 0,6.293 5.102,11.395 11.396,11.395 6.293,0 11.395,-5.102 11.395,-11.395 C 55.188,5.102 50.086,0 43.793,0 z m 0,20.43 c -4.99,0 -9.036,-4.046 -9.036,-9.036 0,-4.989 4.046,-9.035 9.036,-9.035 4.988,0 9.035,4.046 9.035,9.035 0,4.99 -4.047,9.036 -9.035,9.036 z" + id="path3326" + inkscape:connector-curvature="0" /> + <path + d="M 76.151,87.918 C 77.464,73.913 62.146,72.6 62.146,72.6 57.769,59.907 47.556,66.472 47.556,66.472 c 0,0 2.262,-49.025 1.395,-54.713 -0.51,-3.331 -6.383,-10.562 -9.998,-1.684 -2.137,6.166 -5.59,60.75 -9.465,56.874 C 24.984,62.447 20.611,18.817 19.414,18.626 18.438,14.09 9.011,5.294 7.511,21.794 c 3,39.5 3.865,47.304 3.865,47.304 C 9.187,74.35 5.31,87.481 5.31,87.481 c -8.316,9.191 -4.377,15.756 -4.377,15.756 7.002,12.255 21.385,28.449 21.385,28.449 6.127,5.252 2.625,8.316 2.625,8.316 l 42.455,0.438 2.334,-7.879 c 9.628,-18.382 6.419,-44.643 6.419,-44.643 z" + id="path3328" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccc" + style="fill:#ffffff" /> +</g> +<g + id="g3330" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3332" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3334" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3336" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3338" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3340" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3342" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3344" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3346" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3348" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3350" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3352" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3354" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3356" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3358" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<path + inkscape:connector-curvature="0" + d="m 52.342987,124.78465 -8.980622,9.44613 c 0,0 -0.592129,0.74692 -1.214412,0.0786 -0.853927,-0.92772 -8.753091,-9.74549 -8.753091,-9.74549 0,0 -1.096535,-1.17966 0.352262,-1.17818 1.454279,10e-4 3.762485,10e-4 3.762485,10e-4 0,0 -0.0027,-0.67875 -0.0014,-1.72058 -0.0014,-3.20848 -0.0014,-9.4565 -0.0027,-11.8499 0,0 -0.01233,-0.56315 0.655179,-0.56019 0.672999,0 8.298029,0 9.238308,-0.003 0.937537,0.003 0.774428,0.66985 0.774428,0.66985 0,2.45861 0,8.50359 -0.0027,11.82767 0.0041,1.16039 0.0027,1.91472 0.0027,1.91472 0,0 2.879775,0.003 4.070886,0 1.192483,-10e-4 0.09869,1.11889 0.09869,1.11889 z m -0.09869,-37.828986 c -1.191111,0.003 -4.073627,0.003 -4.073627,0.003 0,0 0.0027,0.752845 0.0041,1.914716 -0.0041,3.327041 -0.0041,9.370556 -0.0014,11.83064 0,0 0.16174,0.66393 -0.774427,0.66096 -0.943021,0.006 -8.563939,0.003 -9.235567,0.004 -0.670257,-0.003 -0.65655,-0.56167 -0.65655,-0.56167 -0.0014,-2.393393 -0.0014,-8.642902 0.0014,-11.855831 -0.0014,-1.034421 0,-1.717613 0,-1.717613 0,0 -2.312318,0.003 -3.762486,0.0044 -1.444685,-0.003 -0.355003,-1.178173 -0.355003,-1.178173 0,0 7.896422,-8.81777 8.755832,-9.745488 0.622284,-0.671338 1.215783,0.07558 1.215783,0.07558 l 8.979252,9.444648 c 0,0 1.096534,1.121857 -0.09732,1.120375 z" + id="path3432" + sodipodi:nodetypes="ccccsccccccccccccccccccccccccc" + style="fill:#ffd800;fill-opacity:1" /></svg> \ No newline at end of file diff --git a/libs/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg b/libs/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg new file mode 100644 index 0000000000..74e55d7cb5 --- /dev/null +++ b/libs/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="95.087433" + height="118.43173" + viewBox="0 0 95.087431 118.43173" + enable-background="new 0 0 100.775 118.638" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchZoom.svg"><metadata + id="metadata3382"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3380" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1105" + inkscape:window-height="739" + id="namedview3378" + showgrid="false" + inkscape:zoom="2.8132167" + inkscape:cx="10.565593" + inkscape:cy="72.192791" + inkscape:window-x="67" + inkscape:window-y="152" + inkscape:window-maximized="0" + inkscape:current-layer="Capa_1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> + +<path + d="m 0.0436199,84.941029 c 0,0 -0.2799964,-1.323641 0.578786,-0.720397 0.8621957,0.601498 2.9536375,2.059778 2.9536375,2.059778 0,0 0.3431801,-0.517567 0.8707286,-1.316651 1.521209,-2.28009 4.281925,-6.427623 5.405325,-8.116707 0,0 0.187721,-0.53855 0.863902,-0.06295 0.682926,0.472104 6.206065,4.329377 6.692655,4.668591 0.483157,0.340966 0.220227,0.718649 0.220227,0.718649 -1.094368,1.641877 -3.948985,5.929292 -5.418977,8.132449 -0.469526,0.711655 -0.783654,1.178514 -0.783654,1.178514 0,0 1.678274,1.168023 2.728271,1.900661 1.043172,0.732637 -0.28341,0.987925 -0.28341,0.987925 0,0 -9.7470195,2.05628 -10.7936043,2.25911 -0.756328,0.145111 -0.8468168,-0.666198 -0.8468168,-0.666198 z" + id="path3376-4" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccc" + style="fill:#65ff00;fill-opacity:1" /><path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 44.918594,16.853557 c -5.85006,0 -10.591269,4.862311 -10.591269,10.85967 0,5.997358 4.742138,10.859669 10.592198,10.859669 5.849132,0 10.59127,-4.862311 10.59127,-10.859669 -9.23e-4,-5.997359 -4.743067,-10.85967 -10.592199,-10.85967 z m 0,19.47021 c -4.637107,0 -8.398657,-3.855921 -8.398657,-8.611493 0,-4.754621 3.76155,-8.610543 8.398657,-8.610543 4.637107,0 8.397729,3.855922 8.397729,8.610543 0,4.755572 -3.759691,8.611493 -8.397729,8.611493 z" + id="path3430" /><path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 23.240381,56.175295 c -5.457398,0 -9.88037,4.703155 -9.88037,10.504205 0,5.801049 4.423839,10.504204 9.881237,10.504204 5.456532,0 9.880371,-4.703155 9.880371,-10.504204 -8.67e-4,-5.80105 -4.424707,-10.504205 -9.881238,-10.504205 z m 0,18.8329 c -4.325859,0 -7.834929,-3.729707 -7.834929,-8.329617 0,-4.598989 3.50907,-8.328696 7.834929,-8.328696 4.32586,0 7.834063,3.729707 7.834063,8.328696 0,4.59991 -3.507336,8.329617 -7.834063,8.329617 z" + id="path3430-5" /><path + d="m 89.480511,111.78411 -1.887491,6.64762 -38.778475,-0.36785 c 8.08e-4,-8.5e-4 2.829619,-2.58599 -2.124439,-7.01632 0,0 -10.822746,-5.22596 -18.506953,-18.096801 0,0 -6.310236,-6.742109 -6.091889,-9.206596 C 21.508197,79.335765 20.881459,76.789439 20.376025,75.209164 19.312176,71.16939 18.8225,72.364992 18.8225,67.98106 c 2.452812,-14.333817 10.869455,1.810623 12.764445,5.488368 0,0 6.305384,7.578229 9.063029,9.283373 8.851152,-2.291524 3.039071,-22.109494 3.660956,-23.668675 0,0 -1.25024,-10.043558 -2.822341,-23.064577 -3.9949,-15.561935 8.286796,-19.626706 11.636292,-3.093053 1.545414,7.344522 3.686834,19.52689 4.483397,19.774098 0,0 8.395048,-7.385018 12.995707,3.323385 0,0 9.202125,-5.538975 12.741777,5.170273 0,0 12.387573,1.10695 11.326563,12.923992 0,0 2.59509,22.156743 -5.191814,37.665866 z" + id="path3376" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccc" + style="fill:#ffffff" /><path + d="m 49.854025,14.903508 c 0.696314,0.466948 6.359531,4.268019 6.858144,4.604015 0.491619,0.334273 0.748797,-0.05343 0.748797,-0.05343 1.121449,-1.617954 4.044902,-5.844621 5.545997,-8.013953 0.488115,-0.703007 0.803031,-1.164787 0.803031,-1.164787 0,0 1.714536,1.152726 2.792243,1.876411 1.07596,0.721961 0.813533,-0.620302 0.813533,-0.620302 0,0 -1.732034,-9.8989818 -1.933227,-10.95349441 -0.150463,-0.7615853 -0.939496,-0.5513731 -0.939496,-0.5513731 L 53.458049,1.9374693 c 0,0 -1.336636,0.2136595 -0.454876,0.8046693 0.88876,0.5927325 3.02493,2.0297666 3.02493,2.0297666 0,0 -0.355152,0.5083037 -0.895757,1.2940169 -1.558825,2.2468717 -4.387811,6.3339699 -5.538999,7.9984459 -0.0018,0.0017 -0.433883,0.370456 0.260678,0.83914 z" + id="path3376-7-4" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccc" + style="fill:#65ff00;fill-opacity:1" /></svg> \ No newline at end of file diff --git a/libs/Cesium/Widgets/Images/TerrainProviders/Ellipsoid.png b/libs/Cesium/Widgets/Images/TerrainProviders/Ellipsoid.png new file mode 100644 index 0000000000000000000000000000000000000000..a36259bbecd3db15252723fbeb9d202907306d6a GIT binary patch literal 6173 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 literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/TerrainProviders/STK.png b/libs/Cesium/Widgets/Images/TerrainProviders/STK.png new file mode 100644 index 0000000000000000000000000000000000000000..1eadbf9dd052712030a673b7b5b48ccdfe0e4756 GIT binary patch literal 4482 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 U@j`&~uK)l507*qoM6N<$f?{utc>n+a literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/TimelineIcons.png b/libs/Cesium/Widgets/Images/TimelineIcons.png new file mode 100644 index 0000000000000000000000000000000000000000..e3a04556a8555469578401d47e8dd07ad3bbf228 GIT binary patch literal 781 zcmV+o1M>WdP)<h;3K|Lk000e1NJLTq001BW000mO1^@s6cL04^00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iph? z5)&web1Xvu00NCkL_t(Y$HmpnOB7)o2k`Ga>#7^5Seeq2xT&Q@QV^>LBhXV(hd?9` z(V>G85nZ~h2WRTgA5a8h*QijcLxDjU6cK?|5G~HZ%*>6}UH4^Xb!X;z>0nMXyQ{bx z(Ol-4ndkGH?>zI&Gr)h|q}&r@&!*(rC>>r}<q!ZU7hnLG!BJZYG}U>P!Tv6Jqk_eH zR{&-7tzbScqzVrh0jS_$TtG+?I0XztARf;Gx`_wFJ$d0v@njvJzwuJcTO4XyN5|d< z%tX_ei)!d<_Ty_z$3kiaJ%{`dJ_@6TqP}lTIB)Lsk0!#lpLnj?{?%(W&)WeO4d!|p zb?UpTP59dN@bn@KQ=n#B%GE#D4+QtQ+Uvf*bHB^m0pbZ0TF#KNO(u_#F<i%`dON`J zW}jkdCK&PBoj9X*+v0!9@#PqTjn#^?V5#0Ukq%#aDjM6WP+lgWPA?+RUJVF=xfu;D z9Xr7p#h1@XFg=d&!z+1{(CLrVRpH%y1P}t9O@2&8V&IG-xTgX4#^2bUI13yL_>^?Q z0HX}M{1y17Mxnlspsb8TPpp6%SyYy1(A!?G6dG2ipZqju`|%fH+dr9{c6nETTi1H! z*g_J<iV42T@Nx8lq~5<MeHb|>(NzmZCX39Hh6e9!!S`B<C%HvhJrN}lH^DpvO(*UM z00^ACD>xxYEa~Vuuv-}#3T?O$73=c?JRZ3!)1(235VW^$2LQCS)PPe9B4y(C^#OUa zrL|a33KcnXbceG1GYe+%wa>}25dV=vUw1&+%KBc6FBl*+*emn23G?^jVrET1GZDIc zO5RF<Vm#TX$l2~%C6&wq0JMaT)4@8Wn7`cLdH{gu;7#G&{|o;MAwTPJv`aW700000 LNkvXXu0mjf4a8Z% literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/Images/info-loading.gif b/libs/Cesium/Widgets/Images/info-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..8df10dd5103204269c65a5127154ae9d3ed8e95f GIT binary patch literal 723 zcmZ?wbhEHb6ky<H_`(1Jk1kJFkQLQXlNJ=<zH@Fekh^nDbzZt>Pjjq|g~s7+O$(-G zrzf~{)<;{IsvX$eaPRz-Ig>I(h4~ca#W*-vH!LZYlM&(KWOuOE3idPC)0X4o<pdiH zA{75~`?-b$J39ur8tEA@GlGQvNjVp#CYGe8D3oWGWGEzNC069*C#L9S=B4E`DE?&O z<OZtJ0qF)gl7UrML7^`tbKa5#T#rsMt#c4)wm4&2aJl;4?H%*^*q;ctZ+YZ!f=91- z-8C-PwbPuinV^!8D8ZUAZ$+j|`^0?*ZXH_r=F;-s=Wq7D-W{Q@F^9F$TCh`s37bYU zpw-=pI*&V4IF+P$l9wbc(l{x7eoOCbBdG(^nGZDWjsAGTTd?u$#mhT{{bn8t<<=6J z=66T{n^C4fqn2>E3WhNCJ~l~G@x1uTreFAcY2|b4S-i`cPqf%2ZE*i3+J9zZu_cRC z<?3tQyR_y8DPl9p2ofIGHbp#h37ovc<5E&ksO!lsv5&0c-cGyCn07cm@P#sC?}=w8 zSd-^@t-ShG3aj7DA;zc_#<r~3l(a1KW^3Z~jK_<%<<5%bQ+V^YX?vpJ17^MHzAF7Q zOqk+z8O+R1FWC1Why$CG^dV+F0lH_!rgy7~WK@H;@IEkI|9iVk!F29#T}NgWw#xj9 X(`7JWbB<iU1Zx11Y=$)`iGTqBF97aE literal 0 HcmV?d00001 diff --git a/libs/Cesium/Widgets/InfoBox/InfoBox.css b/libs/Cesium/Widgets/InfoBox/InfoBox.css new file mode 100644 index 0000000000..b505db22e8 --- /dev/null +++ b/libs/Cesium/Widgets/InfoBox/InfoBox.css @@ -0,0 +1 @@ +.cesium-infoBox {display: block; position: absolute; top: 50px; right: 0; width: 40%; max-width: 480px; background: rgba(38, 38, 38, 0.95); color: #edffff; border: 1px solid #444; border-right: none; border-top-left-radius: 7px; border-bottom-left-radius: 7px; box-shadow: 0 0 10px 1px #000; -webkit-transform: translate(100%, 0); -moz-transform: translate(100%, 0); transform: translate(100%, 0); visibility: hidden; opacity: 0; -webkit-transition: visibility 0s 0.2s, opacity 0.2s ease-in, -webkit-transform 0.2s ease-in; -moz-transition: visibility 0s 0.2s, opacity 0.2s ease-in, -moz-transform 0.2s ease-in; transition: visibility 0s 0.2s, opacity 0.2s ease-in, transform 0.2s ease-in;} .cesium-infoBox-visible {-webkit-transform: translate(0, 0); -moz-transform: translate(0, 0); transform: translate(0, 0); visibility: visible; opacity: 1; -webkit-transition: opacity 0.2s ease-out, -webkit-transform 0.2s ease-out; -moz-transition: opacity 0.2s ease-out, -moz-transform 0.2s ease-out; transition: opacity 0.2s ease-out, transform 0.2s ease-out;} .cesium-infoBox-title {display: block; height: 20px; padding: 5px 30px 5px 25px; background: rgba(84, 84, 84, 1.0); border-top-left-radius: 7px; text-align: center; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box;} .cesium-infoBox-bodyless .cesium-infoBox-title {border-bottom-left-radius: 7px;} button.cesium-infoBox-camera {display: block; position: absolute; top: 4px; left: 4px; width: 22px; height: 22px; background: transparent; border-color: transparent; border-radius: 3px; padding: 0 5px; margin: 0;} button.cesium-infoBox-close {display: block; position: absolute; top: 5px; right: 5px; height: 20px; background: transparent; border: none; border-radius: 2px; font-weight: bold; font-size: 16px; padding: 0 5px; margin: 0; color: #edffff;} button.cesium-infoBox-close:focus {background: rgba(238, 136, 0, 0.44); outline: none;} button.cesium-infoBox-close:hover {background: #888; color: #000;} button.cesium-infoBox-close:active {background: #a00; color: #000;} .cesium-infoBox-bodyless .cesium-infoBox-iframe {display: none;} .cesium-infoBox-loadingContainer {margin: 5px; text-align: center;} .cesium-infoBox-loading {display: inline-block; background-image: url(../Images/info-loading.gif); width: 16px; height: 11px;} .cesium-infoBox-iframe {border: none; width: 100%; width: calc(100% - 2px);} \ No newline at end of file diff --git a/libs/Cesium/Widgets/InfoBox/InfoBoxDescription.css b/libs/Cesium/Widgets/InfoBox/InfoBoxDescription.css new file mode 100644 index 0000000000..70b4940022 --- /dev/null +++ b/libs/Cesium/Widgets/InfoBox/InfoBoxDescription.css @@ -0,0 +1 @@ +.cesium-svgPath-svg {position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden;} .cesium-button {display: inline-block; position: relative; background: #303336; border: 1px solid #444; color: #edffff; fill: #edffff; border-radius: 4px; padding: 5px 12px; margin: 2px 3px; cursor: pointer; overflow: hidden; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;} .cesium-button:focus {color: #fff; fill: #fff; border-color: #ea4; outline: none;} .cesium-button:hover {color: #fff; fill: #fff; background: #48b; border-color: #aef; box-shadow: 0 0 8px #fff;} .cesium-button:active {color: #000; fill: #000; background: #adf; border-color: #fff; box-shadow: 0 0 8px #fff;} .cesium-button:disabled, .cesium-button-disabled, .cesium-button-disabled:focus, .cesium-button-disabled:hover, .cesium-button-disabled:active {background: #303336; border-color: #444; color: #646464; fill: #646464; box-shadow: none; cursor: default;} .cesium-button option {background-color: #000; color: #eee;} .cesium-button option:disabled {color: #777;} .cesium-toolbar-button {-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; width: 32px; height: 32px; border-radius: 14%; padding: 0; vertical-align: middle; z-index: 0;} .cesium-performanceDisplay-defaultContainer {position: absolute; top: 50px; right: 10px; text-align: right;} .cesium-performanceDisplay {background-color: rgba(40, 40, 40, 0.7); padding: 7px; border-radius: 5px; border: 1px solid #444; font: bold 12px sans-serif;} .cesium-performanceDisplay-fps {color: #e52;} .cesium-performanceDisplay-ms {color: #de3;} body {margin: 0; padding: 0;} .cesium-infoBox-description {font-family: sans-serif; font-size: 13px; padding: 4px 10px; margin-right: 4px; color: #edffff;} .cesium-infoBox-description a:link, .cesium-infoBox-description a:visited, .cesium-infoBox-description a:hover, .cesium-infoBox-description a:active {color: #edffff;} .cesium-infoBox-description table {color: #edffff;} .cesium-infoBox-defaultTable {width: 100%; color: #edffff;} .cesium-infoBox-defaultTable tr:nth-child(odd) {background-color: rgba(84, 84, 84, 0.8);} .cesium-infoBox-defaultTable tr:nth-child(even) {background-color: rgba(84, 84, 84, 0.25);} .cesium-infoBox-defaultTable th {font-weight: normal; padding: 3px; vertical-align: middle; text-align: center;} .cesium-infoBox-defaultTable td {padding: 3px; vertical-align: middle; text-align: left;} .cesium-infoBox-description-lighter {color: #000000;} .cesium-infoBox-description-lighter a:link, .cesium-infoBox-description-lighter a:visited, .cesium-infoBox-description-lighter a:hover, .cesium-infoBox-description-lighter a:active {color: #000000;} .cesium-infoBox-description-lighter table {color: #000000;} .cesium-infoBox-defaultTable-lighter {width: 100%; color: #000000;} .cesium-infoBox-defaultTable-lighter tr:nth-child(odd) {background-color: rgba(179, 179, 179, 0.8);} .cesium-infoBox-defaultTable-lighter tr:nth-child(even) {background-color: rgba(179, 179, 179, 0.25);} \ No newline at end of file diff --git a/libs/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css b/libs/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css new file mode 100644 index 0000000000..7ce39a61d2 --- /dev/null +++ b/libs/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css @@ -0,0 +1 @@ +.cesium-navigationHelpButton-wrapper {position: relative; display: inline-block;} .cesium-navigation-help {visibility: hidden; position: absolute; top: 38px; right: 2px; width: 250px; border-radius: 10px; -webkit-transform: scale(0.01); -moz-transform: scale(0.01); transform: scale(0.01); -webkit-transform-origin: 234px -10px; -moz-transform-origin: 234px -10px; transform-origin: 234px -10px; -webkit-transition: visibility 0s 0.25s, -webkit-transform 0.25s ease-in; -moz-transition: visibility 0s 0.25s, -moz-transform 0.25s ease-in; transition: visibility 0s 0.25s, transform 0.25s ease-in;} .cesium-navigation-help-visible {visibility: visible; -webkit-transform: scale(1); -moz-transform: scale(1); transform: scale(1); -webkit-transition: -webkit-transform 0.25s ease-out; -moz-transition: -moz-transform 0.25s ease-out; transition: transform 0.25s ease-out;} .cesium-navigation-help-instructions {border: 1px solid #444; background-color: rgba(38, 38, 38, 0.75); padding-bottom: 5px; border-radius: 0 0 10px 10px;} .cesium-click-navigation-help {display: none;} .cesium-touch-navigation-help {display: none; padding-top: 5px;} .cesium-click-navigation-help-visible {display: block;} .cesium-touch-navigation-help-visible {display: block;} .cesium-navigation-help-pan {color: #66ccff; font-weight: bold;} .cesium-navigation-help-zoom {color: #65fd00; font-weight: bold;} .cesium-navigation-help-rotate {color: #ffd800; font-weight: bold;} .cesium-navigation-help-tilt {color: #d800d8; font-weight: bold;} .cesium-navigation-help-details {color: #ffffff;} .cesium-navigation-button {color: #fff; background-color: transparent; border-bottom: none; border-top: 1px solid #444; border-right: 1px solid #444; margin: 0; width: 50%; cursor: pointer;} .cesium-navigation-button-icon {vertical-align: middle; padding: 5px 1px;} .cesium-navigation-button:focus {outline: none;} .cesium-navigation-button-left {border-radius: 10px 0 0 0; border-left: 1px solid #444;} .cesium-navigation-button-right {border-radius: 0 10px 0 0; border-left: none;} .cesium-navigation-button-selected {background-color: rgba(38, 38, 38, 0.75);} .cesium-navigation-button-unselected {background-color: rgba(0, 0, 0, 0.75);} .cesium-navigation-button-unselected:hover {background-color: rgba(76, 76, 76, 0.75);} \ No newline at end of file diff --git a/libs/Cesium/Widgets/NavigationHelpButton/lighter.css b/libs/Cesium/Widgets/NavigationHelpButton/lighter.css new file mode 100644 index 0000000000..b4be27220e --- /dev/null +++ b/libs/Cesium/Widgets/NavigationHelpButton/lighter.css @@ -0,0 +1 @@ +.cesium-lighter .cesium-navigation-help-instructions {border: 1px solid #759dc0; background-color: rgba(255, 255, 255, 0.9);} .cesium-lighter .cesium-navigation-help-pan {color: #66ccee; font-weight: bold;} .cesium-lighter .cesium-navigation-help-zoom {color: #65ec00; font-weight: bold;} .cesium-lighter .cesium-navigation-help-rotate {color: #eec722; font-weight: bold;} .cesium-lighter .cesium-navigation-help-tilt {color: #d800d8; font-weight: bold;} .cesium-lighter .cesium-navigation-help-details {color: #222222;} .cesium-lighter .cesium-navigation-button {color: #222222; border-top: 1px solid #759dc0; border-right: 1px solid #759dc0;} .cesium-lighter .cesium-navigation-button-selected {background-color: rgba(196, 225, 255, 0.9);} .cesium-lighter .cesium-navigation-button-unselected {background-color: rgba(226, 240, 255, 0.9);} .cesium-lighter .cesium-navigation-button-unselected:hover {background-color: rgba(166, 210, 255, 0.9);} \ No newline at end of file diff --git a/libs/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css b/libs/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css new file mode 100644 index 0000000000..d93b06339c --- /dev/null +++ b/libs/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css @@ -0,0 +1 @@ +.cesium-performance-watchdog-message-area {position: relative; background-color: yellow; color: black; padding: 10px;} .cesium-performance-watchdog-message {margin-right: 30px;} .cesium-performance-watchdog-message-dismiss {position: absolute; right: 0; margin: 0 10px 0 0;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/SceneModePicker/SceneModePicker.css b/libs/Cesium/Widgets/SceneModePicker/SceneModePicker.css new file mode 100644 index 0000000000..edcb25fcc0 --- /dev/null +++ b/libs/Cesium/Widgets/SceneModePicker/SceneModePicker.css @@ -0,0 +1 @@ +span.cesium-sceneModePicker-wrapper {display: inline-block; position: relative; margin: 0 3px;} .cesium-sceneModePicker-visible {visibility: visible; opacity: 1; transition: opacity 0.25s linear; -webkit-transition: opacity 0.25s linear; -moz-transition: opacity 0.25s linear;} .cesium-sceneModePicker-hidden {visibility: hidden; opacity: 0; transition: visibility 0s 0.25s, opacity 0.25s linear; -webkit-transition: visibility 0s 0.25s, opacity 0.25s linear; -moz-transition: visibility 0s 0.25s, opacity 0.25s linear;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none {display: none;} .cesium-sceneModePicker-slide-svg {-webkit-transition: left 2s; -moz-transition: left 2s; transition: left 2s; top: 0; left: 0;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon {-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0; margin: 3px 0;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D, .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView, .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D {margin: 0 0 3px 0;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D {left: 100%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView {left: 200%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D {left: -200%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D {left: -100%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D {left: -100%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView {left: 100%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected {border-color: #2e2; box-shadow: 0 0 8px #fff, 0 0 8px #fff;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css b/libs/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css new file mode 100644 index 0000000000..ed160c9b71 --- /dev/null +++ b/libs/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css @@ -0,0 +1 @@ +.cesium-selection-wrapper {position: absolute; width: 160px; height: 160px; pointer-events: none; visibility: hidden; opacity: 0; -webkit-transition: visibility 0s 0.2s, opacity 0.2s ease-in; -moz-transition: visibility 0s 0.2s, opacity 0.2s ease-in; transition: visibility 0s 0.2s, opacity 0.2s ease-in;} .cesium-selection-wrapper-visible {visibility: visible; opacity: 1; -webkit-transition: opacity 0.2s ease-out; -moz-transition: opacity 0.2s ease-out; transition: opacity 0.2s ease-out;} .cesium-selection-wrapper svg {fill: #2e2; stroke: #000; stroke-width: 1.1px;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/Timeline/Timeline.css b/libs/Cesium/Widgets/Timeline/Timeline.css new file mode 100644 index 0000000000..d2d8d0107f --- /dev/null +++ b/libs/Cesium/Widgets/Timeline/Timeline.css @@ -0,0 +1 @@ +.cesium-timeline-main {position: relative; left: 0; bottom: 0; overflow: hidden; border: solid 1px #888;} .cesium-timeline-trackContainer {width: 100%; overflow: auto; border-top: solid 1px #888; position: relative; top: 0; left: 0;} .cesium-timeline-tracks {position: absolute; top: 0; left: 0; width: 100%;} .cesium-timeline-needle {position: absolute; left: 0; top: 1.7em; bottom: 0; width: 1px; background: #F00;} .cesium-timeline-bar {position: relative; left: 0; top: 0; overflow: hidden; cursor: pointer; width: 100%; height: 1.7em; background-color: #fafafa; background: rgba(32, 32, 32, 0.8); background: -moz-linear-gradient(top, rgba(116,117,119,0.8) 0%, rgba(58,68,82,0.8) 11%, rgba(46,50,56,0.8) 46%, rgba(53,53,53,0.8) 81%, rgba(53,53,53,0.8) 100%); background: -webkit-linear-gradient(top, rgba(116,117,119,0.8) 0%,rgba(58,68,82,0.8) 11%,rgba(46,50,56,0.8) 46%,rgba(53,53,53,0.8) 81%,rgba(53,53,53,0.8) 100%); background: linear-gradient(to bottom, rgba(116,117,119,0.8) 0%,rgba(58,68,82,0.8) 11%,rgba(46,50,56,0.8) 46%,rgba(53,53,53,0.8) 81%,rgba(53,53,53,0.8) 100%);} .cesium-timeline-ruler {visibility: hidden; white-space: nowrap; font-size: 80%; z-index: -200;} .cesium-timeline-highlight {position: absolute; bottom: 0; left: 0; background: #08F;} .cesium-timeline-ticLabel {position: absolute; top: 0; left: 0; white-space: nowrap; font-size: 80%; color: #eee;} .cesium-timeline-ticMain {position: absolute; bottom: 0; left: 0; width: 1px; height: 50%; background: #eee;} .cesium-timeline-ticSub {position: absolute; bottom: 0; left: 0; width: 1px; height: 33%; background: #aaa;} .cesium-timeline-ticTiny {position: absolute; bottom: 0; left: 0; width: 1px; height: 25%; background: #888;} .cesium-timeline-icon16 {display: block; position: absolute; width: 16px; height: 16px; background-image: url("../Images/TimelineIcons.png"); background-repeat: no-repeat;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/Timeline/lighter.css b/libs/Cesium/Widgets/Timeline/lighter.css new file mode 100644 index 0000000000..03843b9a2c --- /dev/null +++ b/libs/Cesium/Widgets/Timeline/lighter.css @@ -0,0 +1 @@ +.cesium-lighter .cesium-timeline-bar {background: -moz-linear-gradient(top, #eeeeee 0%, #ffffff 50%, #fafafa 100%); background: -webkit-linear-gradient(top, #eeeeee 0%,#ffffff 50%,#fafafa 100%); background: linear-gradient(to bottom, #eeeeee 0%,#ffffff 50%,#fafafa 100%);} .cesium-lighter .cesium-timeline-ticLabel {color: #000;} .cesium-lighter .cesium-timeline-ticMain {position: absolute; bottom: 0; left: 0; width: 1px; height: 50%; background: #000;} .cesium-lighter .cesium-timeline-ticSub {background: #444;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/Viewer/Viewer.css b/libs/Cesium/Widgets/Viewer/Viewer.css new file mode 100644 index 0000000000..4cf5f0ede6 --- /dev/null +++ b/libs/Cesium/Widgets/Viewer/Viewer.css @@ -0,0 +1 @@ +.cesium-viewer {font-family: sans-serif; font-size: 16px; overflow: hidden; display: block; position: relative; top: 0; left: 0; width: 100%; height: 100%;} .cesium-viewer-cesiumWidgetContainer {width: 100%; height: 100%;} .cesium-viewer-bottom {display: block; position: absolute; bottom: 0; left: 0; right: 0; padding-right: 5px;} .cesium-viewer .cesium-widget-credits {display: inline; position: static; bottom: auto; left: auto; padding-right: 0; color: #ffffff; font-size: 10px; text-shadow: 0 0 2px #000000;} .cesium-viewer-timelineContainer {position: absolute; bottom: 0; left: 169px; right: 29px; height: 27px; padding: 0; margin: 0; overflow: hidden; font-size: 14px;} .cesium-viewer-animationContainer {position: absolute; bottom: 0; left: 0; padding: 0; width: 169px; height: 112px;} .cesium-viewer-fullscreenContainer {position: absolute; bottom: 0; right: 0; padding: 0; width: 29px; height: 29px; overflow: hidden;} .cesium-viewer-toolbar {display: block; position: absolute; top: 5px; right: 5px;} .cesium-viewer-cesiumInspectorContainer {display: block; position: absolute; top: 50px; right: 10px;} .cesium-viewer-geocoderContainer {position: relative; display: inline-block; margin: 0 3px;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/lighter.css b/libs/Cesium/Widgets/lighter.css new file mode 100644 index 0000000000..0d6cc66ebf --- /dev/null +++ b/libs/Cesium/Widgets/lighter.css @@ -0,0 +1 @@ +.cesium-lighter .cesium-button {color: #111; fill: #111; background: #e2f0ff; border: 1px solid #759dc0;} .cesium-lighter .cesium-button:focus {color: #000; fill: #000; border-color: #ea4;} .cesium-lighter .cesium-button:hover {color: #000; fill: #000; background: #a6d2ff; border-color: #aef; box-shadow: 0 0 8px #777;} .cesium-lighter .cesium-button:active {color: #fff; fill: #fff; background: #48b; border-color: #ea0;} .cesium-lighter .cesium-button:disabled, .cesium-lighter .cesium-button-disabled, .cesium-lighter .cesium-button-disabled:focus, .cesium-lighter .cesium-button-disabled:hover, .cesium-lighter .cesium-button-disabled:active {background: #ccc; border-color: #999; color: #999; fill: #999; box-shadow: none;} .cesium-lighter .cesium-performanceDisplay {background-color: #e2f0ff; border-color: #759dc0;} .cesium-lighter .cesium-performanceDisplay-fps {color: #e52;} .cesium-lighter .cesium-performanceDisplay-ms {color: #ea4;} .cesium-lighter .cesium-animation-themeNormal {color: #E5F2FE;} .cesium-lighter .cesium-animation-themeHover {color: #ABD6FF;} .cesium-lighter .cesium-animation-themeSelect {color: #E5F2FE;} .cesium-lighter .cesium-animation-themeDisabled {color: #EFEFEF;} .cesium-lighter .cesium-animation-themeKnob {color: #E1E2E3;} .cesium-lighter .cesium-animation-themePointer {color: #FA5;} .cesium-lighter .cesium-animation-themeSwoosh {color: #ACE;} .cesium-lighter .cesium-animation-themeSwooshHover {color: #BDF;} .cesium-lighter .cesium-animation-svgText {fill: #111;} .cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonPath {fill: #111;} .cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonMain {stroke: #759DC0;} .cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonGlow {fill: #FFAA2A;} .cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonMain {stroke: #EA0;} .cesium-lighter .cesium-animation-rectButton:hover .cesium-animation-buttonMain {stroke: #759DC0;} .cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow {fill: #fff;} .cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonMain {stroke: #EA0;} .cesium-lighter .cesium-animation-rectButton:active .cesium-animation-buttonMain {fill: #ABD6FF;} .cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonMain {stroke: #D3D3D3;} .cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonPath {fill: #818181;} .cesium-lighter .cesium-animation-shuttleRingBack {fill: #FAFAFA; fill-opacity: 1; stroke: #AEAEAE; stroke-width: 1.2;} .cesium-lighter .cesium-animation-shuttleRingSwoosh line {stroke: #8AC;} .cesium-lighter .cesium-animation-knobOuter {stroke: #A5A5A5;} .cesium-lighter .cesium-baseLayerPicker-itemIcon {border-color: #759dc0;} .cesium-lighter .cesium-baseLayerPicker-dropDown {background-color: rgba(240, 240, 240, 0.75);} .cesium-lighter .cesium-baseLayerPicker-sectionTitle {color: black;} .cesium-lighter .cesium-baseLayerPicker-itemLabel {color: black;} .cesium-lighter .cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon {border-color: #000;} .cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel {color: rgb(0, 61, 168);} .cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon {border: double 4px rgb(0, 61, 168);} .cesium-lighter .cesium-widget-errorPanel {background: rgba(255, 255, 255, 0.7);} .cesium-lighter .cesium-widget-errorPanel-content {border: 1px solid #526F82; border-radius: 7px; background-color: white; color: black;} .cesium-lighter .cesium-widget-errorPanel-header {color: #B87D00;} .cesium-lighter .cesium-geocoder-input {border: solid 1px #759dc0; background-color: rgba(240, 240, 240, 0.9); color: black;} .cesium-lighter .cesium-viewer-geocoderContainer:hover .cesium-geocoder-input {border-color: #aef; box-shadow: 0 0 8px #fff;} .cesium-lighter .cesium-geocoder-searchButton {background-color: #e2f0ff; fill: #111;} .cesium-lighter .cesium-geocoder-searchButton:hover {background-color: #a6d2ff;} .cesium-lighter .cesium-timeline-bar {background: -moz-linear-gradient(top, #eeeeee 0%, #ffffff 50%, #fafafa 100%); background: -webkit-linear-gradient(top, #eeeeee 0%,#ffffff 50%,#fafafa 100%); background: linear-gradient(to bottom, #eeeeee 0%,#ffffff 50%,#fafafa 100%);} .cesium-lighter .cesium-timeline-ticLabel {color: #000;} .cesium-lighter .cesium-timeline-ticMain {position: absolute; bottom: 0; left: 0; width: 1px; height: 50%; background: #000;} .cesium-lighter .cesium-timeline-ticSub {background: #444;} .cesium-lighter .cesium-navigation-help-instructions {border: 1px solid #759dc0; background-color: rgba(255, 255, 255, 0.9);} .cesium-lighter .cesium-navigation-help-pan {color: #66ccee; font-weight: bold;} .cesium-lighter .cesium-navigation-help-zoom {color: #65ec00; font-weight: bold;} .cesium-lighter .cesium-navigation-help-rotate {color: #eec722; font-weight: bold;} .cesium-lighter .cesium-navigation-help-tilt {color: #d800d8; font-weight: bold;} .cesium-lighter .cesium-navigation-help-details {color: #222222;} .cesium-lighter .cesium-navigation-button {color: #222222; border-top: 1px solid #759dc0; border-right: 1px solid #759dc0;} .cesium-lighter .cesium-navigation-button-selected {background-color: rgba(196, 225, 255, 0.9);} .cesium-lighter .cesium-navigation-button-unselected {background-color: rgba(226, 240, 255, 0.9);} .cesium-lighter .cesium-navigation-button-unselected:hover {background-color: rgba(166, 210, 255, 0.9);} \ No newline at end of file diff --git a/libs/Cesium/Widgets/lighterShared.css b/libs/Cesium/Widgets/lighterShared.css new file mode 100644 index 0000000000..5c59f75659 --- /dev/null +++ b/libs/Cesium/Widgets/lighterShared.css @@ -0,0 +1 @@ +.cesium-lighter .cesium-button {color: #111; fill: #111; background: #e2f0ff; border: 1px solid #759dc0;} .cesium-lighter .cesium-button:focus {color: #000; fill: #000; border-color: #ea4;} .cesium-lighter .cesium-button:hover {color: #000; fill: #000; background: #a6d2ff; border-color: #aef; box-shadow: 0 0 8px #777;} .cesium-lighter .cesium-button:active {color: #fff; fill: #fff; background: #48b; border-color: #ea0;} .cesium-lighter .cesium-button:disabled, .cesium-lighter .cesium-button-disabled, .cesium-lighter .cesium-button-disabled:focus, .cesium-lighter .cesium-button-disabled:hover, .cesium-lighter .cesium-button-disabled:active {background: #ccc; border-color: #999; color: #999; fill: #999; box-shadow: none;} .cesium-lighter .cesium-performanceDisplay {background-color: #e2f0ff; border-color: #759dc0;} .cesium-lighter .cesium-performanceDisplay-fps {color: #e52;} .cesium-lighter .cesium-performanceDisplay-ms {color: #ea4;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/shared.css b/libs/Cesium/Widgets/shared.css new file mode 100644 index 0000000000..7d60ce4d9b --- /dev/null +++ b/libs/Cesium/Widgets/shared.css @@ -0,0 +1 @@ +.cesium-svgPath-svg {position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden;} .cesium-button {display: inline-block; position: relative; background: #303336; border: 1px solid #444; color: #edffff; fill: #edffff; border-radius: 4px; padding: 5px 12px; margin: 2px 3px; cursor: pointer; overflow: hidden; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;} .cesium-button:focus {color: #fff; fill: #fff; border-color: #ea4; outline: none;} .cesium-button:hover {color: #fff; fill: #fff; background: #48b; border-color: #aef; box-shadow: 0 0 8px #fff;} .cesium-button:active {color: #000; fill: #000; background: #adf; border-color: #fff; box-shadow: 0 0 8px #fff;} .cesium-button:disabled, .cesium-button-disabled, .cesium-button-disabled:focus, .cesium-button-disabled:hover, .cesium-button-disabled:active {background: #303336; border-color: #444; color: #646464; fill: #646464; box-shadow: none; cursor: default;} .cesium-button option {background-color: #000; color: #eee;} .cesium-button option:disabled {color: #777;} .cesium-toolbar-button {-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; width: 32px; height: 32px; border-radius: 14%; padding: 0; vertical-align: middle; z-index: 0;} .cesium-performanceDisplay-defaultContainer {position: absolute; top: 50px; right: 10px; text-align: right;} .cesium-performanceDisplay {background-color: rgba(40, 40, 40, 0.7); padding: 7px; border-radius: 5px; border: 1px solid #444; font: bold 12px sans-serif;} .cesium-performanceDisplay-fps {color: #e52;} .cesium-performanceDisplay-ms {color: #de3;} \ No newline at end of file diff --git a/libs/Cesium/Widgets/widgets.css b/libs/Cesium/Widgets/widgets.css new file mode 100644 index 0000000000..28b50b86ac --- /dev/null +++ b/libs/Cesium/Widgets/widgets.css @@ -0,0 +1 @@ +.cesium-svgPath-svg {position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden;} .cesium-button {display: inline-block; position: relative; background: #303336; border: 1px solid #444; color: #edffff; fill: #edffff; border-radius: 4px; padding: 5px 12px; margin: 2px 3px; cursor: pointer; overflow: hidden; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;} .cesium-button:focus {color: #fff; fill: #fff; border-color: #ea4; outline: none;} .cesium-button:hover {color: #fff; fill: #fff; background: #48b; border-color: #aef; box-shadow: 0 0 8px #fff;} .cesium-button:active {color: #000; fill: #000; background: #adf; border-color: #fff; box-shadow: 0 0 8px #fff;} .cesium-button:disabled, .cesium-button-disabled, .cesium-button-disabled:focus, .cesium-button-disabled:hover, .cesium-button-disabled:active {background: #303336; border-color: #444; color: #646464; fill: #646464; box-shadow: none; cursor: default;} .cesium-button option {background-color: #000; color: #eee;} .cesium-button option:disabled {color: #777;} .cesium-toolbar-button {-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; width: 32px; height: 32px; border-radius: 14%; padding: 0; vertical-align: middle; z-index: 0;} .cesium-performanceDisplay-defaultContainer {position: absolute; top: 50px; right: 10px; text-align: right;} .cesium-performanceDisplay {background-color: rgba(40, 40, 40, 0.7); padding: 7px; border-radius: 5px; border: 1px solid #444; font: bold 12px sans-serif;} .cesium-performanceDisplay-fps {color: #e52;} .cesium-performanceDisplay-ms {color: #de3;} .cesium-animation-theme {visibility: hidden; display: block; position: absolute; z-index: -100;} .cesium-animation-themeNormal {color: #222;} .cesium-animation-themeHover {color: #4488B0;} .cesium-animation-themeSelect {color: #242;} .cesium-animation-themeDisabled {color: #333;} .cesium-animation-themeKnob {color: #222;} .cesium-animation-themePointer {color: #2E2;} .cesium-animation-themeSwoosh {color: #8AC;} .cesium-animation-themeSwooshHover {color: #AEF;} .cesium-animation-svgText {fill: #edffff; font-family: Sans-Serif; font-size: 15px; text-anchor: middle;} .cesium-animation-blank {fill: #000; fill-opacity: 0.01; stroke: none;} .cesium-animation-rectButton {cursor: pointer; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;} .cesium-animation-rectButton .cesium-animation-buttonGlow {fill: #fff; stroke: none; display: none;} .cesium-animation-rectButton:hover .cesium-animation-buttonGlow {display: block;} .cesium-animation-rectButton .cesium-animation-buttonPath {fill: #edffff;} .cesium-animation-rectButton .cesium-animation-buttonMain {stroke: #444; stroke-width: 1.2;} .cesium-animation-rectButton:hover .cesium-animation-buttonMain {stroke: #AEF;} .cesium-animation-rectButton:active .cesium-animation-buttonMain {fill: #ABD6FF;} .cesium-animation-buttonDisabled {-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;} .cesium-animation-buttonDisabled .cesium-animation-buttonMain {stroke: #555;} .cesium-animation-buttonDisabled .cesium-animation-buttonPath {fill: #818181;} .cesium-animation-buttonDisabled .cesium-animation-buttonGlow {display: none;} .cesium-animation-buttonToggled .cesium-animation-buttonGlow {display: block; fill: #2E2;} .cesium-animation-buttonToggled .cesium-animation-buttonMain {stroke: #2E2;} .cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow {fill: #fff;} .cesium-animation-buttonToggled:hover .cesium-animation-buttonMain {stroke: #2E2;} .cesium-animation-shuttleRingG {cursor: pointer;} .cesium-animation-shuttleRingPointer {cursor: pointer;} .cesium-animation-shuttleRingPausePointer {cursor: pointer;} .cesium-animation-shuttleRingBack {fill: #181818; fill-opacity: 0.8; stroke: #333; stroke-width: 1.2;} .cesium-animation-shuttleRingSwoosh line {stroke: #8AC; stroke-width: 3; stroke-opacity: 0.2; stroke-linecap: round;} .cesium-animation-knobOuter {cursor: pointer; stroke: #444; stroke-width: 1.2;} .cesium-animation-knobInner {cursor: pointer;} .cesium-baseLayerPicker-selected {position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none;} .cesium-baseLayerPicker-dropDown {display: block; position: absolute; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; top: auto; right: 0; width: 320px; max-height: 500px; margin-top: 5px; background-color: rgba(38, 38, 38, 0.75); border: 1px solid #444; padding: 6px; overflow: auto; border-radius: 10px; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; -webkit-transform: translate(0, -20%); -moz-transform: translate(0, -20%); transform: translate(0, -20%); visibility: hidden; opacity: 0; -webkit-transition: visibility 0s 0.2s, opacity 0.2s ease-in, -webkit-transform 0.2s ease-in; -moz-transition: visibility 0s 0.2s, opacity 0.2s ease-in, -moz-transform 0.2s ease-in; transition: visibility 0s 0.2s, opacity 0.2s ease-in, transform 0.2s ease-in;} .cesium-baseLayerPicker-dropDown-visible {-webkit-transform: translate(0, 0); -moz-transform: translate(0, 0); transform: translate(0, 0); visibility: visible; opacity: 1; -webkit-transition: opacity 0.2s ease-out, -webkit-transform 0.2s ease-out; -moz-transition: opacity 0.2s ease-out, -moz-transform 0.2s ease-out; transition: opacity 0.2s ease-out, transform 0.2s ease-out;} .cesium-baseLayerPicker-sectionTitle {display: block; font-family: sans-serif; font-size: 16pt; text-align: left; color: #edffff; border-bottom: 1px solid #888; margin-bottom: 4px;} .cesium-baseLayerPicker-choices {display: block; position: relative; top: auto; right: 0;} .cesium-baseLayerPicker-item {display: inline-block; vertical-align: top; margin: 2px 5px; width: 64px; text-align: center; cursor: pointer;} .cesium-baseLayerPicker-itemLabel {display: block; font-family: sans-serif; font-size: 8pt; text-align: center; vertical-align: middle; color: #edffff; cursor: pointer; word-wrap: break-word;} .cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel, .cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel {text-decoration: underline;} .cesium-baseLayerPicker-itemIcon {display: inline-block; position: relative; width: inherit; height: auto; background-size: 100% 100%; border: solid 1px #444; border-radius: 9px; color: #edffff; margin: 0; padding: 0; cursor: pointer; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;} .cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon {border-color: #fff; box-shadow: 0 0 8px #fff, 0 0 8px #fff;} .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel {color: rgb(189, 236, 248);} .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon {border: double 4px rgb(189, 236, 248);} .cesium-widget {position: relative;} .cesium-widget, .cesium-widget canvas {width: 100%; height: 100%; touch-action: none;} .cesium-widget-credits {display: block; position: absolute; bottom: 0; left: 0; color: #fff; font-size: 10px; text-shadow: 0px 0px 2px #000000; padding-right: 5px;} .cesium-widget-credits a, .cesium-widget-credits a:visited {color: #fff;} .cesium-widget-errorPanel {position: absolute; top: 0; right: 0; bottom: 0; left: 0; text-align: center; background: rgba(0, 0, 0, 0.7); z-index: 99999;} .cesium-widget-errorPanel:before {display: inline-block; vertical-align: middle; height: 100%; content: "";} .cesium-widget-errorPanel-content {width: 75%; display: inline-block; text-align: left; vertical-align: middle; border: 1px solid #526F82; border-radius: 7px; background-color: black; color: white; font-size: 10pt; padding: 1em;} .cesium-widget-errorPanel-header {font-size: 120%; color: #fe4;} .cesium-widget-errorPanel-scroll {overflow: auto; font-family: monospace; white-space: pre-wrap; padding: 0; margin: 10px 0;} .cesium-widget-errorPanel-buttonPanel {text-align: center;} .cesium-cesiumInspector {border-radius: 5px; -webkit-transition: width ease-in-out 0.25s; -moz-transition: width ease-in-out 0.25s; transition: width ease-in-out 0.25s; background: rgba(48, 51, 54, 0.8); border: 1px solid #444; color: #edffff; display: inline-block; position: relative; padding: 4px 12px; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden;} .cesium-cesiumInspector-button {text-align: center; font-size: 11pt;} .cesium-cesiumInspector-visible .cesium-cesiumInspector-button {border-bottom: 1px solid #aaa; padding-bottom: 3px;} .cesium-cesiumInspector input:enabled, .cesium-cesiumInspector-button {cursor: pointer;} .cesium-cesiumInspector-visible {width: 185px; height: auto;} .cesium-cesiumInspector-hidden {width: 122px; height: 17px;} .cesium-cesiumInspector-show {max-height: 500px;} .cesium-cesiumInspector-hide {max-height: 0; padding: 0 !important; overflow: hidden;} .cesium-cesiumInspector-dropDown {margin: 5px 0; font-family: sans-serif; font-size: 10pt; width: 185px;} .cesium-cesiumInspector-frustumStats {padding-left: 10px; padding: 5px; background-color: rgba(80, 80, 80, 0.75);} .cesium-cesiumInspector-pickButton {background-color: rgba(0, 0, 0, 0.3); border: 1px solid #444; color: #edffff; border-radius: 5px; padding: 3px 7px; cursor: pointer; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; margin: 0 auto;} .cesium-cesiumInspector-pickButton:focus {outline: none;} .cesium-cesiumInspector-pickButton:active, .cesium-cesiumInspector-pickButtonHighlight {color: #000; background: #adf; border-color: #fff; box-shadow: 0 0 8px #fff;} .cesium-cesiumInspector-center {text-align: center;} .cesium-cesiumInspector-sectionHeader {font-weight: bold;} .cesium-cesiumInspector-pickSection {border: 1px solid #aaa; border-radius: 5px; padding: 3px; margin-bottom: 5px;} .cesium-cesiumInspector-section {margin-bottom: 10px; -webkit-transition: max-height 0.25s; -moz-transition: max-height 0.25s; transition: max-height 0.25s;} .cesium-cesiumInspector-toggleSwitch {padding: 3px; cursor: pointer;} .cesium-cesiumInspector-tileText {padding-bottom: 10px; border-bottom: 1px solid #aaa;} .cesium-cesiumInspector-relativeText {padding-top: 10px;} .cesium-button.cesium-fullscreenButton {display: block; width: 100%; height: 100%; margin: 0; border-radius: 0;} .cesium-viewer-geocoderContainer .cesium-geocoder-input {border: solid 1px #444; background-color: rgba(40, 40, 40, 0.7); color: white; display: inline-block; vertical-align: middle; width: 0; height: 32px; margin: 0; padding: 0 32px 0 0; border-radius: 0; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; -webkit-transition: width ease-in-out 0.25s, background-color 0.2s ease-in-out; -moz-transition: width ease-in-out 0.25s, background-color 0.2s ease-in-out; transition: width ease-in-out 0.25s, background-color 0.2s ease-in-out; -webkit-appearance: none;} .cesium-viewer-geocoderContainer:hover .cesium-geocoder-input {border-color: #aef; box-shadow: 0 0 8px #fff;} .cesium-viewer-geocoderContainer .cesium-geocoder-input:focus {border-color: #ea4; background-color: rgba(15, 15, 15, 0.9); box-shadow: none; outline: none;} .cesium-viewer-geocoderContainer:hover .cesium-geocoder-input, .cesium-viewer-geocoderContainer .cesium-geocoder-input:focus, .cesium-viewer-geocoderContainer .cesium-geocoder-input-wide {padding-left: 4px; width: 250px;} .cesium-geocoder-searchButton {background-color: #303336; display: inline-block; position: absolute; cursor: pointer; width: 32px; top: 1px; right: 1px; height: 30px; vertical-align: middle; fill: #edffff;} .cesium-geocoder-searchButton:hover {background-color: #48b;} .cesium-infoBox {display: block; position: absolute; top: 50px; right: 0; width: 40%; max-width: 480px; background: rgba(38, 38, 38, 0.95); color: #edffff; border: 1px solid #444; border-right: none; border-top-left-radius: 7px; border-bottom-left-radius: 7px; box-shadow: 0 0 10px 1px #000; -webkit-transform: translate(100%, 0); -moz-transform: translate(100%, 0); transform: translate(100%, 0); visibility: hidden; opacity: 0; -webkit-transition: visibility 0s 0.2s, opacity 0.2s ease-in, -webkit-transform 0.2s ease-in; -moz-transition: visibility 0s 0.2s, opacity 0.2s ease-in, -moz-transform 0.2s ease-in; transition: visibility 0s 0.2s, opacity 0.2s ease-in, transform 0.2s ease-in;} .cesium-infoBox-visible {-webkit-transform: translate(0, 0); -moz-transform: translate(0, 0); transform: translate(0, 0); visibility: visible; opacity: 1; -webkit-transition: opacity 0.2s ease-out, -webkit-transform 0.2s ease-out; -moz-transition: opacity 0.2s ease-out, -moz-transform 0.2s ease-out; transition: opacity 0.2s ease-out, transform 0.2s ease-out;} .cesium-infoBox-title {display: block; height: 20px; padding: 5px 30px 5px 25px; background: rgba(84, 84, 84, 1.0); border-top-left-radius: 7px; text-align: center; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box;} .cesium-infoBox-bodyless .cesium-infoBox-title {border-bottom-left-radius: 7px;} button.cesium-infoBox-camera {display: block; position: absolute; top: 4px; left: 4px; width: 22px; height: 22px; background: transparent; border-color: transparent; border-radius: 3px; padding: 0 5px; margin: 0;} button.cesium-infoBox-close {display: block; position: absolute; top: 5px; right: 5px; height: 20px; background: transparent; border: none; border-radius: 2px; font-weight: bold; font-size: 16px; padding: 0 5px; margin: 0; color: #edffff;} button.cesium-infoBox-close:focus {background: rgba(238, 136, 0, 0.44); outline: none;} button.cesium-infoBox-close:hover {background: #888; color: #000;} button.cesium-infoBox-close:active {background: #a00; color: #000;} .cesium-infoBox-bodyless .cesium-infoBox-iframe {display: none;} .cesium-infoBox-loadingContainer {margin: 5px; text-align: center;} .cesium-infoBox-loading {display: inline-block; background-image: url(Images/info-loading.gif); width: 16px; height: 11px;} .cesium-infoBox-iframe {border: none; width: 100%; width: calc(100% - 2px);} span.cesium-sceneModePicker-wrapper {display: inline-block; position: relative; margin: 0 3px;} .cesium-sceneModePicker-visible {visibility: visible; opacity: 1; transition: opacity 0.25s linear; -webkit-transition: opacity 0.25s linear; -moz-transition: opacity 0.25s linear;} .cesium-sceneModePicker-hidden {visibility: hidden; opacity: 0; transition: visibility 0s 0.25s, opacity 0.25s linear; -webkit-transition: visibility 0s 0.25s, opacity 0.25s linear; -moz-transition: visibility 0s 0.25s, opacity 0.25s linear;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none {display: none;} .cesium-sceneModePicker-slide-svg {-webkit-transition: left 2s; -moz-transition: left 2s; transition: left 2s; top: 0; left: 0;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon {-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0; margin: 3px 0;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D, .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView, .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D {margin: 0 0 3px 0;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D {left: 100%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView {left: 200%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D {left: -200%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D {left: -100%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D {left: -100%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView {left: 100%;} .cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected {border-color: #2e2; box-shadow: 0 0 8px #fff, 0 0 8px #fff;} .cesium-performance-watchdog-message-area {position: relative; background-color: yellow; color: black; padding: 10px;} .cesium-performance-watchdog-message {margin-right: 30px;} .cesium-performance-watchdog-message-dismiss {position: absolute; right: 0; margin: 0 10px 0 0;} .cesium-navigationHelpButton-wrapper {position: relative; display: inline-block;} .cesium-navigation-help {visibility: hidden; position: absolute; top: 38px; right: 2px; width: 250px; border-radius: 10px; -webkit-transform: scale(0.01); -moz-transform: scale(0.01); transform: scale(0.01); -webkit-transform-origin: 234px -10px; -moz-transform-origin: 234px -10px; transform-origin: 234px -10px; -webkit-transition: visibility 0s 0.25s, -webkit-transform 0.25s ease-in; -moz-transition: visibility 0s 0.25s, -moz-transform 0.25s ease-in; transition: visibility 0s 0.25s, transform 0.25s ease-in;} .cesium-navigation-help-visible {visibility: visible; -webkit-transform: scale(1); -moz-transform: scale(1); transform: scale(1); -webkit-transition: -webkit-transform 0.25s ease-out; -moz-transition: -moz-transform 0.25s ease-out; transition: transform 0.25s ease-out;} .cesium-navigation-help-instructions {border: 1px solid #444; background-color: rgba(38, 38, 38, 0.75); padding-bottom: 5px; border-radius: 0 0 10px 10px;} .cesium-click-navigation-help {display: none;} .cesium-touch-navigation-help {display: none; padding-top: 5px;} .cesium-click-navigation-help-visible {display: block;} .cesium-touch-navigation-help-visible {display: block;} .cesium-navigation-help-pan {color: #66ccff; font-weight: bold;} .cesium-navigation-help-zoom {color: #65fd00; font-weight: bold;} .cesium-navigation-help-rotate {color: #ffd800; font-weight: bold;} .cesium-navigation-help-tilt {color: #d800d8; font-weight: bold;} .cesium-navigation-help-details {color: #ffffff;} .cesium-navigation-button {color: #fff; background-color: transparent; border-bottom: none; border-top: 1px solid #444; border-right: 1px solid #444; margin: 0; width: 50%; cursor: pointer;} .cesium-navigation-button-icon {vertical-align: middle; padding: 5px 1px;} .cesium-navigation-button:focus {outline: none;} .cesium-navigation-button-left {border-radius: 10px 0 0 0; border-left: 1px solid #444;} .cesium-navigation-button-right {border-radius: 0 10px 0 0; border-left: none;} .cesium-navigation-button-selected {background-color: rgba(38, 38, 38, 0.75);} .cesium-navigation-button-unselected {background-color: rgba(0, 0, 0, 0.75);} .cesium-navigation-button-unselected:hover {background-color: rgba(76, 76, 76, 0.75);} .cesium-selection-wrapper {position: absolute; width: 160px; height: 160px; pointer-events: none; visibility: hidden; opacity: 0; -webkit-transition: visibility 0s 0.2s, opacity 0.2s ease-in; -moz-transition: visibility 0s 0.2s, opacity 0.2s ease-in; transition: visibility 0s 0.2s, opacity 0.2s ease-in;} .cesium-selection-wrapper-visible {visibility: visible; opacity: 1; -webkit-transition: opacity 0.2s ease-out; -moz-transition: opacity 0.2s ease-out; transition: opacity 0.2s ease-out;} .cesium-selection-wrapper svg {fill: #2e2; stroke: #000; stroke-width: 1.1px;} .cesium-timeline-main {position: relative; left: 0; bottom: 0; overflow: hidden; border: solid 1px #888;} .cesium-timeline-trackContainer {width: 100%; overflow: auto; border-top: solid 1px #888; position: relative; top: 0; left: 0;} .cesium-timeline-tracks {position: absolute; top: 0; left: 0; width: 100%;} .cesium-timeline-needle {position: absolute; left: 0; top: 1.7em; bottom: 0; width: 1px; background: #F00;} .cesium-timeline-bar {position: relative; left: 0; top: 0; overflow: hidden; cursor: pointer; width: 100%; height: 1.7em; background-color: #fafafa; background: rgba(32, 32, 32, 0.8); background: -moz-linear-gradient(top, rgba(116,117,119,0.8) 0%, rgba(58,68,82,0.8) 11%, rgba(46,50,56,0.8) 46%, rgba(53,53,53,0.8) 81%, rgba(53,53,53,0.8) 100%); background: -webkit-linear-gradient(top, rgba(116,117,119,0.8) 0%,rgba(58,68,82,0.8) 11%,rgba(46,50,56,0.8) 46%,rgba(53,53,53,0.8) 81%,rgba(53,53,53,0.8) 100%); background: linear-gradient(to bottom, rgba(116,117,119,0.8) 0%,rgba(58,68,82,0.8) 11%,rgba(46,50,56,0.8) 46%,rgba(53,53,53,0.8) 81%,rgba(53,53,53,0.8) 100%);} .cesium-timeline-ruler {visibility: hidden; white-space: nowrap; font-size: 80%; z-index: -200;} .cesium-timeline-highlight {position: absolute; bottom: 0; left: 0; background: #08F;} .cesium-timeline-ticLabel {position: absolute; top: 0; left: 0; white-space: nowrap; font-size: 80%; color: #eee;} .cesium-timeline-ticMain {position: absolute; bottom: 0; left: 0; width: 1px; height: 50%; background: #eee;} .cesium-timeline-ticSub {position: absolute; bottom: 0; left: 0; width: 1px; height: 33%; background: #aaa;} .cesium-timeline-ticTiny {position: absolute; bottom: 0; left: 0; width: 1px; height: 25%; background: #888;} .cesium-timeline-icon16 {display: block; position: absolute; width: 16px; height: 16px; background-image: url(Images/TimelineIcons.png); background-repeat: no-repeat;} .cesium-viewer {font-family: sans-serif; font-size: 16px; overflow: hidden; display: block; position: relative; top: 0; left: 0; width: 100%; height: 100%;} .cesium-viewer-cesiumWidgetContainer {width: 100%; height: 100%;} .cesium-viewer-bottom {display: block; position: absolute; bottom: 0; left: 0; right: 0; padding-right: 5px;} .cesium-viewer .cesium-widget-credits {display: inline; position: static; bottom: auto; left: auto; padding-right: 0; color: #ffffff; font-size: 10px; text-shadow: 0 0 2px #000000;} .cesium-viewer-timelineContainer {position: absolute; bottom: 0; left: 169px; right: 29px; height: 27px; padding: 0; margin: 0; overflow: hidden; font-size: 14px;} .cesium-viewer-animationContainer {position: absolute; bottom: 0; left: 0; padding: 0; width: 169px; height: 112px;} .cesium-viewer-fullscreenContainer {position: absolute; bottom: 0; right: 0; padding: 0; width: 29px; height: 29px; overflow: hidden;} .cesium-viewer-toolbar {display: block; position: absolute; top: 5px; right: 5px;} .cesium-viewer-cesiumInspectorContainer {display: block; position: absolute; top: 50px; right: 10px;} .cesium-viewer-geocoderContainer {position: relative; display: inline-block; margin: 0 3px;} \ No newline at end of file diff --git a/libs/Cesium/Workers/cesiumWorkerBootstrapper.js b/libs/Cesium/Workers/cesiumWorkerBootstrapper.js new file mode 100644 index 0000000000..db6c77fc52 --- /dev/null +++ b/libs/Cesium/Workers/cesiumWorkerBootstrapper.js @@ -0,0 +1,29 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.1.9 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ + +function setTimeout(e){e()}"undefined"==typeof self&&(self={}),self.onmessage=function(e){var t=e.data;require(t.loaderConfig,[t.workerModule],function(e){self.onmessage=e})};var requirejs,require,define;!function(global){function isFunction(e){return"[object Function]"===ostring.call(e)}function isArray(e){return"[object Array]"===ostring.call(e)}function each(e,t){if(e){var i;for(i=0;i<e.length&&(!e[i]||!t(e[i],i,e));i+=1);}}function eachReverse(e,t){if(e){var i;for(i=e.length-1;i>-1&&(!e[i]||!t(e[i],i,e));i-=1);}}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var i;for(i in e)if(hasProp(e,i)&&t(e[i],i))break}function mixin(e,t,i,r){return t&&eachProp(t,function(t,n){(i||!hasProp(e,n))&&(r&&"string"!=typeof t?(e[n]||(e[n]={}),mixin(e[n],t,i,r)):e[n]=t)}),e}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(e){throw e}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,i,r){var n=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e);return n.requireType=e,n.requireModules=r,i&&(n.originalError=i),n}function newContext(e){function t(e){var t,i;for(t=0;e[t];t+=1)if(i=e[t],"."===i)e.splice(t,1),t-=1;else if(".."===i){if(1===t&&(".."===e[2]||".."===e[0]))break;t>0&&(e.splice(t-1,2),t-=2)}}function i(e,i,r){var n,a,o,s,c,u,p,d,f,l,h,m=i&&i.split("/"),g=m,v=y.map,x=v&&v["*"];if(e&&"."===e.charAt(0)&&(i?(g=getOwn(y.pkgs,i)?m=[i]:m.slice(0,m.length-1),e=g.concat(e.split("/")),t(e),a=getOwn(y.pkgs,n=e[0]),e=e.join("/"),a&&e===n+"/"+a.main&&(e=n)):0===e.indexOf("./")&&(e=e.substring(2))),r&&v&&(m||x)){for(s=e.split("/"),c=s.length;c>0;c-=1){if(p=s.slice(0,c).join("/"),m)for(u=m.length;u>0;u-=1)if(o=getOwn(v,m.slice(0,u).join("/")),o&&(o=getOwn(o,p))){d=o,f=c;break}if(d)break;!l&&x&&getOwn(x,p)&&(l=getOwn(x,p),h=c)}!d&&l&&(d=l,f=h),d&&(s.splice(0,f,d),e=s.join("/"))}return e}function r(e){isBrowser&&each(scripts(),function(t){return t.getAttribute("data-requiremodule")===e&&t.getAttribute("data-requirecontext")===q.contextName?(t.parentNode.removeChild(t),!0):void 0})}function n(e){var t=getOwn(y.paths,e);return t&&isArray(t)&&t.length>1?(t.shift(),q.require.undef(e),q.require([e]),!0):void 0}function a(e){var t,i=e?e.indexOf("!"):-1;return i>-1&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function o(e,t,r,n){var o,s,c,u,p=null,d=t?t.name:null,f=e,l=!0,h="";return e||(l=!1,e="_@r"+(A+=1)),u=a(e),p=u[0],e=u[1],p&&(p=i(p,d,n),s=getOwn(j,p)),e&&(p?h=s&&s.normalize?s.normalize(e,function(e){return i(e,d,n)}):i(e,d,n):(h=i(e,d,n),u=a(h),p=u[0],h=u[1],r=!0,o=q.nameToUrl(h))),c=!p||s||r?"":"_unnormalized"+(T+=1),{prefix:p,name:h,parentMap:t,unnormalized:!!c,url:o,originalName:f,isDefine:l,id:(p?p+"!"+h:h)+c}}function s(e){var t=e.id,i=getOwn(k,t);return i||(i=k[t]=new q.Module(e)),i}function c(e,t,i){var r=e.id,n=getOwn(k,r);!hasProp(j,r)||n&&!n.defineEmitComplete?(n=s(e),n.error&&"error"===t?i(n.error):n.on(t,i)):"defined"===t&&i(j[r])}function u(e,t){var i=e.requireModules,r=!1;t?t(e):(each(i,function(t){var i=getOwn(k,t);i&&(i.error=e,i.events.error&&(r=!0,i.emit("error",e)))}),r||req.onError(e))}function p(){globalDefQueue.length&&(apsp.apply(M,[M.length-1,0].concat(globalDefQueue)),globalDefQueue=[])}function d(e){delete k[e],delete S[e]}function f(e,t,i){var r=e.map.id;e.error?e.emit("error",e.error):(t[r]=!0,each(e.depMaps,function(r,n){var a=r.id,o=getOwn(k,a);!o||e.depMatched[n]||i[a]||(getOwn(t,a)?(e.defineDep(n,j[a]),e.check()):f(o,t,i))}),i[r]=!0)}function l(){var e,t,i,a,o=1e3*y.waitSeconds,s=o&&q.startTime+o<(new Date).getTime(),c=[],p=[],d=!1,h=!0;if(!x){if(x=!0,eachProp(S,function(i){if(e=i.map,t=e.id,i.enabled&&(e.isDefine||p.push(i),!i.error))if(!i.inited&&s)n(t)?(a=!0,d=!0):(c.push(t),r(t));else if(!i.inited&&i.fetched&&e.isDefine&&(d=!0,!e.prefix))return h=!1}),s&&c.length)return i=makeError("timeout","Load timeout for modules: "+c,null,c),i.contextName=q.contextName,u(i);h&&each(p,function(e){f(e,{},{})}),s&&!a||!d||!isBrowser&&!isWebWorker||w||(w=setTimeout(function(){w=0,l()},50)),x=!1}}function h(e){hasProp(j,e[0])||s(o(e[0],null,!0)).init(e[1],e[2])}function m(e,t,i,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(i,t,!1)}function g(e){var t=e.currentTarget||e.srcElement;return m(t,q.onScriptLoad,"load","onreadystatechange"),m(t,q.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function v(){var e;for(p();M.length;){if(e=M.shift(),null===e[0])return u(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));h(e)}}var x,b,q,E,w,y={waitSeconds:7,baseUrl:"./",paths:{},pkgs:{},shim:{},config:{}},k={},S={},O={},M=[],j={},P={},A=1,T=1;return E={require:function(e){return e.require?e.require:e.require=q.makeRequire(e.map)},exports:function(e){return e.usingExports=!0,e.map.isDefine?e.exports?e.exports:e.exports=j[e.map.id]={}:void 0},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){var t,i=getOwn(y.pkgs,e.map.id);return t=i?getOwn(y.config,e.map.id+"/"+i.main):getOwn(y.config,e.map.id),t||{}},exports:j[e.map.id]}}},b=function(e){this.events=getOwn(O,e.id)||{},this.map=e,this.shim=getOwn(y.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},b.prototype={init:function(e,t,i,r){r=r||{},this.inited||(this.factory=t,i?this.on("error",i):this.events.error&&(i=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check())},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,q.startTime=(new Date).getTime();var e=this.map;return this.shim?(q.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()})),void 0):e.prefix?this.callPlugin():this.load()}},load:function(){var e=this.map.url;P[e]||(P[e]=!0,q.load(this.map.id,e))},check:function(){if(this.enabled&&!this.enabling){var e,t,i=this.map.id,r=this.depExports,n=this.exports,a=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(a)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{n=q.execCb(i,a,r,n)}catch(o){e=o}else n=q.execCb(i,a,r,n);if(this.map.isDefine&&(t=this.module,t&&void 0!==t.exports&&t.exports!==this.exports?n=t.exports:void 0===n&&this.usingExports&&(n=this.exports)),e)return e.requireMap=this.map,e.requireModules=this.map.isDefine?[this.map.id]:null,e.requireType=this.map.isDefine?"define":"require",u(this.error=e)}else n=a;this.exports=n,this.map.isDefine&&!this.ignore&&(j[i]=n,req.onResourceLoad&&req.onResourceLoad(q,this.map,this.depMaps)),d(i),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else this.fetch()}},callPlugin:function(){var e=this.map,t=e.id,r=o(e.prefix);this.depMaps.push(r),c(r,"defined",bind(this,function(r){var n,a,p,f=this.map.name,l=this.map.parentMap?this.map.parentMap.name:null,h=q.makeRequire(e.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(r.normalize&&(f=r.normalize(f,function(e){return i(e,l,!0)})||""),a=o(e.prefix+"!"+f,this.map.parentMap),c(a,"defined",bind(this,function(e){this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),p=getOwn(k,a.id),p&&(this.depMaps.push(a),this.events.error&&p.on("error",bind(this,function(e){this.emit("error",e)})),p.enable()),void 0):(n=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})}),n.error=bind(this,function(e){this.inited=!0,this.error=e,e.requireModules=[t],eachProp(k,function(e){0===e.map.id.indexOf(t+"_unnormalized")&&d(e.map.id)}),u(e)}),n.fromText=bind(this,function(i,r){var a=e.name,c=o(a),p=useInteractive;r&&(i=r),p&&(useInteractive=!1),s(c),hasProp(y.config,t)&&(y.config[a]=y.config[t]);try{req.exec(i)}catch(d){return u(makeError("fromtexteval","fromText eval for "+t+" failed: "+d,d,[t]))}p&&(useInteractive=!0),this.depMaps.push(c),q.completeLoad(a),h([a],n)}),r.load(e.name,h,n,y),void 0)})),q.enable(r,this),this.pluginMaps[r.id]=r},enable:function(){S[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var i,r,n;if("string"==typeof e){if(e=o(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,n=getOwn(E,e.id))return this.depExports[t]=n(this),void 0;this.depCount+=1,c(e,"defined",bind(this,function(e){this.defineDep(t,e),this.check()})),this.errback&&c(e,"error",bind(this,this.errback))}i=e.id,r=k[i],hasProp(E,i)||!r||r.enabled||q.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(k,e.id);t&&!t.enabled&&q.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var i=this.events[e];i||(i=this.events[e]=[]),i.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),"error"===e&&delete this.events[e]}},q={config:y,contextName:e,registry:k,defined:j,urlFetched:P,defQueue:M,Module:b,makeModuleMap:o,nextTick:req.nextTick,onError:u,configure:function(e){e.baseUrl&&"/"!==e.baseUrl.charAt(e.baseUrl.length-1)&&(e.baseUrl+="/");var t=y.pkgs,i=y.shim,r={paths:!0,config:!0,map:!0};eachProp(e,function(e,t){r[t]?"map"===t?(y.map||(y.map={}),mixin(y[t],e,!0,!0)):mixin(y[t],e,!0):y[t]=e}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),!e.exports&&!e.init||e.exportsFn||(e.exportsFn=q.makeShimExports(e)),i[t]=e}),y.shim=i),e.packages&&(each(e.packages,function(e){var i;e="string"==typeof e?{name:e}:e,i=e.location,t[e.name]={name:e.name,location:i||e.name,main:(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}}),y.pkgs=t),eachProp(k,function(e,t){e.inited||e.map.unnormalized||(e.map=o(t))}),(e.deps||e.callback)&&q.require(e.deps||[],e.callback)},makeShimExports:function(e){function t(){var t;return e.init&&(t=e.init.apply(global,arguments)),t||e.exports&&getGlobal(e.exports)}return t},makeRequire:function(t,n){function a(i,r,c){var p,d,f;return n.enableBuildCallback&&r&&isFunction(r)&&(r.__requireJsBuild=!0),"string"==typeof i?isFunction(r)?u(makeError("requireargs","Invalid require call"),c):t&&hasProp(E,i)?E[i](k[t.id]):req.get?req.get(q,i,t,a):(d=o(i,t,!1,!0),p=d.id,hasProp(j,p)?j[p]:u(makeError("notloaded",'Module name "'+p+'" has not been loaded yet for context: '+e+(t?"":". Use require([])")))):(v(),q.nextTick(function(){v(),f=s(o(null,t)),f.skipMap=n.skipMap,f.init(i,r,c,{enabled:!0}),l()}),a)}return n=n||{},mixin(a,{isBrowser:isBrowser,toUrl:function(e){var r,n=e.lastIndexOf("."),a=e.split("/")[0],o="."===a||".."===a;return-1!==n&&(!o||n>1)&&(r=e.substring(n,e.length),e=e.substring(0,n)),q.nameToUrl(i(e,t&&t.id,!0),r,!0)},defined:function(e){return hasProp(j,o(e,t,!1,!0).id)},specified:function(e){return e=o(e,t,!1,!0).id,hasProp(j,e)||hasProp(k,e)}}),t||(a.undef=function(e){p();var i=o(e,t,!0),n=getOwn(k,e);r(e),delete j[e],delete P[i.url],delete O[e],n&&(n.events.defined&&(O[e]=n.events),d(e))}),a},enable:function(e){var t=getOwn(k,e.id);t&&s(e).enable()},completeLoad:function(e){var t,i,r,a=getOwn(y.shim,e)||{},o=a.exports;for(p();M.length;){if(i=M.shift(),null===i[0]){if(i[0]=e,t)break;t=!0}else i[0]===e&&(t=!0);h(i)}if(r=getOwn(k,e),!t&&!hasProp(j,e)&&r&&!r.inited){if(!(!y.enforceDefine||o&&getGlobal(o)))return n(e)?void 0:u(makeError("nodefine","No define call for "+e,null,[e]));h([e,a.deps||[],a.exportsFn])}l()},nameToUrl:function(e,t,i){var r,n,a,o,s,c,u,p,d;if(req.jsExtRegExp.test(e))p=e+(t||"");else{for(r=y.paths,n=y.pkgs,s=e.split("/"),c=s.length;c>0;c-=1){if(u=s.slice(0,c).join("/"),a=getOwn(n,u),d=getOwn(r,u)){isArray(d)&&(d=d[0]),s.splice(0,c,d);break}if(a){o=e===a.name?a.location+"/"+a.main:a.location,s.splice(0,c,o);break}}p=s.join("/"),p+=t||(/^data\:|\?/.test(p)||i?"":".js"),p=("/"===p.charAt(0)||p.match(/^[\w\+\.\-]+:/)?"":y.baseUrl)+p}return y.urlArgs?p+((-1===p.indexOf("?")?"?":"&")+y.urlArgs):p},load:function(e,t){req.load(q,e,t)},execCb:function(e,t,i,r){return t.apply(r,i)},onScriptLoad:function(e){if("load"===e.type||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=g(e);q.completeLoad(t.id)}},onScriptError:function(e){var t=g(e);return n(t.id)?void 0:u(makeError("scripterror","Script error for: "+t.id,e,[t.id]))}},q.require=q.makeRequire(),q}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(e){return"interactive"===e.readyState?interactiveScript=e:void 0}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.1.9",commentRegExp=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,ap=Array.prototype,apsp=ap.splice,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if("undefined"==typeof define){if("undefined"!=typeof requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}"undefined"==typeof require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(e,t,i,r){var n,a,o=defContextName;return isArray(e)||"string"==typeof e||(a=e,isArray(t)?(e=t,t=i,i=r):e=[]),a&&a.context&&(o=a.context),n=getOwn(contexts,o),n||(n=contexts[o]=req.s.newContext(o)),a&&n.configure(a),n.require(e,t,i)},req.config=function(e){return req(e)},req.nextTick="undefined"!=typeof setTimeout?function(e){setTimeout(e,4)}:function(e){e()},require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(e){req[e]=function(){var t=contexts[defContextName];return t.require[e].apply(t,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],baseElement=document.getElementsByTagName("base")[0],baseElement&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(e){var t=e.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return t.type=e.scriptType||"text/javascript",t.charset="utf-8",t.async=!0,t},req.load=function(e,t,i){var r,n=e&&e.config||{};if(isBrowser)return r=req.createNode(n,t,i),r.setAttribute("data-requirecontext",e.contextName),r.setAttribute("data-requiremodule",t),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||isOpera?(r.addEventListener("load",e.onScriptLoad,!1),r.addEventListener("error",e.onScriptError,!1)):(useInteractive=!0,r.attachEvent("onreadystatechange",e.onScriptLoad)),r.src=i,currentlyAddingScript=r,baseElement?head.insertBefore(r,baseElement):head.appendChild(r),currentlyAddingScript=null,r;if(isWebWorker)try{importScripts(i),e.completeLoad(t)}catch(a){e.onError(makeError("importscripts","importScripts failed for "+t+" at "+i,a,[t]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(e){return head||(head=e.parentNode),dataMain=e.getAttribute("data-main"),dataMain?(mainScript=dataMain,cfg.baseUrl||(src=mainScript.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0):void 0}),define=function(e,t,i){var r,n;"string"!=typeof e&&(i=t,t=e,e=null),isArray(t)||(i=t,t=null),!t&&isFunction(i)&&(t=[],i.length&&(i.toString().replace(commentRegExp,"").replace(cjsRequireRegExp,function(e,i){t.push(i)}),t=(1===i.length?["require"]:["require","exports","module"]).concat(t))),useInteractive&&(r=currentlyAddingScript||getInteractiveScript(),r&&(e||(e=r.getAttribute("data-requiremodule")),n=contexts[r.getAttribute("data-requirecontext")])),(n?n.defQueue:globalDefQueue).push([e,t,i])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this); \ No newline at end of file diff --git a/libs/Cesium/Workers/combineGeometry.js b/libs/Cesium/Workers/combineGeometry.js new file mode 100644 index 0000000000..77455de3c6 --- /dev/null +++ b/libs/Cesium/Workers/combineGeometry.js @@ -0,0 +1,61 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var r;for(this.mti==this.N+1&&this.init_genrand(5489),r=0;r<this.N-this.M;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+this.M]^e>>>1^t[1&e];for(;r<this.N-1;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};r.EPSILON1=.1,r.EPSILON2=.01,r.EPSILON3=.001,r.EPSILON4=1e-4,r.EPSILON5=1e-5,r.EPSILON6=1e-6,r.EPSILON7=1e-7,r.EPSILON8=1e-8,r.EPSILON9=1e-9,r.EPSILON10=1e-10,r.EPSILON11=1e-11,r.EPSILON12=1e-12,r.EPSILON13=1e-13,r.EPSILON14=1e-14,r.EPSILON15=1e-15,r.EPSILON16=1e-16,r.EPSILON17=1e-17,r.EPSILON18=1e-18,r.EPSILON19=1e-19,r.EPSILON20=1e-20,r.GRAVITATIONALPARAMETER=3986004418e5,r.SOLAR_RADIUS=6955e5,r.LUNAR_RADIUS=1737400,r.SIXTY_FOUR_KILOBYTES=65536,r.sign=function(e){return e>0?1:0>e?-1:0},r.signNotZero=function(e){return 0>e?-1:1},r.toSNorm=function(e){return Math.round(255*(.5*r.clamp(e,-1,1)+.5))},r.fromSNorm=function(e){return 2*(r.clamp(e,0,255)/255)-1},r.sinh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t-r)},r.cosh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t+r)},r.lerp=function(e,t,r){return(1-r)*e+r*t},r.PI=Math.PI,r.ONE_OVER_PI=1/Math.PI,r.PI_OVER_TWO=.5*Math.PI,r.PI_OVER_THREE=Math.PI/3,r.PI_OVER_FOUR=Math.PI/4,r.PI_OVER_SIX=Math.PI/6,r.THREE_PI_OVER_TWO=.5*3*Math.PI,r.TWO_PI=2*Math.PI,r.ONE_OVER_TWO_PI=1/(2*Math.PI),r.RADIANS_PER_DEGREE=Math.PI/180,r.DEGREES_PER_RADIAN=180/Math.PI,r.RADIANS_PER_ARCSECOND=r.RADIANS_PER_DEGREE/3600,r.toRadians=function(e){return e*r.RADIANS_PER_DEGREE},r.toDegrees=function(e){return e*r.DEGREES_PER_RADIAN},r.convertLongitudeRange=function(e){var t=r.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n},r.negativePiToPi=function(e){return r.zeroToTwoPi(e+r.PI)-r.PI},r.zeroToTwoPi=function(e){var t=r.mod(e,r.TWO_PI);return Math.abs(t)<r.EPSILON14&&Math.abs(e)>r.EPSILON14?r.TWO_PI:t},r.mod=function(e,t){return(e%t+t)%t},r.equalsEpsilon=function(e,r,n,o){o=t(o,n);var i=Math.abs(e-r);return o>=i||i<=n*Math.max(Math.abs(e),Math.abs(r))};var n=[1];r.factorial=function(e){var t=n.length;if(e>=t)for(var r=n[t-1],o=t;e>=o;o++)n.push(r*o);return n[e]},r.incrementWrap=function(e,r,n){return n=t(n,0),++e,e>r&&(e=n),e},r.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},r.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},r.clamp=function(e,t,r){return t>e?t:e>r?r:e};var o=new e;return r.setRandomNumberSeed=function(t){o=new e(t)},r.nextRandomNumber=function(){return o.random()},r.acosClamped=function(e){return Math.acos(r.clamp(e,-1,1))},r.asinClamped=function(e){return Math.asin(r.clamp(e,-1,1))},r.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},r}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o){"use strict";var i=function(t,r,n){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0)};i.fromSpherical=function(r,n){t(n)||(n=new i);var o=r.clock,a=r.cone,s=e(r.magnitude,1),u=s*Math.sin(a);return n.x=u*Math.cos(o),n.y=u*Math.sin(o),n.z=s*Math.cos(a),n},i.fromElements=function(e,r,n,o){return t(o)?(o.x=e,o.y=r,o.z=n,o):new i(e,r,n)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r):new i(e.x,e.y,e.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n]=t.z},i.unpack=function(r,n,o){return n=e(n,0),t(o)||(o=new i),o.x=r[n++],o.y=r[n++],o.z=r[n],o},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var a=new i;i.distance=function(e,t){return i.subtract(e,t,a),i.magnitude(a)},i.distanceSquared=function(e,t){return i.subtract(e,t,a),i.magnitudeSquared(a)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var s=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,s),n=i.multiplyByScalar(e,1-r,n),i.add(s,n,n)};var u=new i,c=new i;i.angleBetween=function(e,t){i.normalize(e,u),i.normalize(t,c);var r=i.dot(u,c),n=i.magnitude(i.cross(u,c,u));return Math.atan2(n,r)};var l=new i;i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,l);return i.abs(r,r),t=r.x<=r.y?r.x<=r.z?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Z,t):r.y<=r.z?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_Z,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&o.equalsEpsilon(e.x,r.x,n,i)&&o.equalsEpsilon(e.y,r.y,n,i)&&o.equalsEpsilon(e.z,r.z,n,i)},i.cross=function(e,t,r){var n=e.x,o=e.y,i=e.z,a=t.x,s=t.y,u=t.z,c=o*u-i*s,l=i*a-n*u,f=n*s-o*a;return r.x=c,r.y=l,r.z=f,r},i.fromDegrees=function(e,t,r,n,a){var s=o.toRadians(e),u=o.toRadians(t);return i.fromRadians(s,u,r,n,a)};var f=new i,m=new i,h=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(r,n,o,a,s){o=e(o,0);var u=t(a)?a.radiiSquared:h,c=Math.cos(n);f.x=c*Math.cos(r),f.y=c*Math.sin(r),f.z=Math.sin(n),f=i.normalize(f,f),i.multiplyComponents(u,f,m);var l=Math.sqrt(i.dot(f,m));return m=i.divideByScalar(m,l,m),f=i.multiplyByScalar(f,o,f),t(s)||(s=new i),i.add(m,f,s)},i.fromDegreesArray=function(e,t,r){for(var n=new Array(e.length),a=0;a<e.length;a++)n[a]=o.toRadians(e[a]);return i.fromRadiansArray(n,t,r)},i.fromRadiansArray=function(e,r,n){var o=e.length;t(n)?n.length=o/2:n=new Array(o/2);for(var a=0;o>a;a+=2){var s=e[a],u=e[a+1];n[a/2]=i.fromRadians(s,u,0,r,n[a/2])}return n},i.fromDegreesArrayHeights=function(e,t,r){for(var n=new Array(e.length),a=0;a<e.length;a+=3)n[a]=o.toRadians(e[a]),n[a+1]=o.toRadians(e[a+1]),n[a+2]=e[a+2];return i.fromRadiansArrayHeights(n,t,r)},i.fromRadiansArrayHeights=function(e,r,n){var o=e.length;t(n)?n.length=o/3:n=new Array(o/3);for(var a=0;o>a;a+=3){var s=e[a],u=e[a+1],c=e[a+2];n[a/3]=i.fromRadians(s,u,c,r,n[a/3])}return n},i.ZERO=n(new i(0,0,0)),i.UNIT_X=n(new i(1,0,0)),i.UNIT_Y=n(new i(0,1,0)),i.UNIT_Z=n(new i(0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o){"use strict";var i=function(t,r,n){this.longitude=e(t,0),this.latitude=e(r,0),this.height=e(n,0)};return i.fromRadians=function(r,n,o,a){return o=e(o,0),t(a)?(a.longitude=r,a.latitude=n,a.height=o,a):new i(r,n,o)},i.fromDegrees=function(e,t,r,n){return e=o.toRadians(e),t=o.toRadians(t),i.fromRadians(e,t,r,n)},i.clone=function(e,r){return t(e)?t(r)?(r.longitude=e.longitude,r.latitude=e.latitude,r.height=e.height,r):new i(e.longitude,e.latitude,e.height):void 0},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.longitude===r.longitude&&e.latitude===r.latitude&&e.height===r.height},i.equalsEpsilon=function(e,r,n){return e===r||t(e)&&t(r)&&Math.abs(e.longitude-r.longitude)<=n&&Math.abs(e.latitude-r.latitude)<=n&&Math.abs(e.height-r.height)<=n},i.ZERO=n(new i(0,0,0)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},r=function(r,n){e(t[r])||(t[r]=!0,console.log(n))};return r}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),r=Object.defineProperties;return t&&e(r)||(r=function(e){return e}),r}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o,i,a,s){"use strict";function u(t,n,o,i){n=r(n,0),o=r(o,0),i=r(i,0),t._radii=new e(n,o,i),t._radiiSquared=new e(n*n,o*o,i*i),t._radiiToTheFourth=new e(n*n*n*n,o*o*o*o,i*i*i*i),t._oneOverRadii=new e(0===n?0:1/n,0===o?0:1/o,0===i?0:1/i),t._oneOverRadiiSquared=new e(0===n?0:1/(n*n),0===o?0:1/(o*o),0===i?0:1/(i*i)),t._minimumRadius=Math.min(n,o,i),t._maximumRadius=Math.max(n,o,i),t._centerToleranceSquared=s.EPSILON1}var c=function(e,t,r){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,u(this,e,t,r)};o(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,r){if(!n(t))return void 0;var o=t._radii;return n(r)?(e.clone(o,r._radii),e.clone(t._radiiSquared,r._radiiSquared),e.clone(t._radiiToTheFourth,r._radiiToTheFourth),e.clone(t._oneOverRadii,r._oneOverRadii),e.clone(t._oneOverRadiiSquared,r._oneOverRadiiSquared),r._minimumRadius=t._minimumRadius,r._maximumRadius=t._maximumRadius,r._centerToleranceSquared=t._centerToleranceSquared,r):new c(o.x,o.y,o.z)},c.fromCartesian3=function(e,t){return n(t)||(t=new c),n(e)?(u(t,e.x,e.y,e.z),t):t},c.WGS84=a(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=a(new c(1,1,1)),c.MOON=a(new c(s.LUNAR_RADIUS,s.LUNAR_RADIUS,s.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,n,o){o=r(o,0),e.pack(t._radii,n,o)},c.unpack=function(t,n,o){n=r(n,0);var i=e.unpack(t,n);return c.fromCartesian3(i,o)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,r){var o=t.longitude,i=t.latitude,a=Math.cos(i),s=a*Math.cos(o),u=a*Math.sin(o),c=Math.sin(i);return n(r)||(r=new e),r.x=s,r.y=u,r.z=c,e.normalize(r,r)},c.prototype.geodeticSurfaceNormal=function(t,r){return n(r)||(r=new e),r=e.multiplyComponents(t,this._oneOverRadiiSquared,r),e.normalize(r,r)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,r){var o=l,i=f;this.geodeticSurfaceNormalCartographic(t,o),e.multiplyComponents(this._radiiSquared,o,i);var a=Math.sqrt(e.dot(o,i));return e.divideByScalar(i,a,i),e.multiplyByScalar(o,t.height,o),n(r)||(r=new e),e.add(i,o,r)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var o=0;r>o;o++)t[o]=this.cartographicToCartesian(e[o],t[o]);return t};var m=new e,h=new e,d=new e;c.prototype.cartesianToCartographic=function(r,o){var i=this.scaleToGeodeticSurface(r,h);if(!n(i))return void 0;var a=this.geodeticSurfaceNormal(i,m),u=e.subtract(r,i,d),c=Math.atan2(a.y,a.x),l=Math.asin(a.z),f=s.sign(e.dot(u,r))*e.magnitude(u);return n(o)?(o.longitude=c,o.latitude=l,o.height=f,o):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var o=0;r>o;++o)t[o]=this.cartesianToCartographic(e[o],t[o]);return t};var p=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,r){var o=t.x,i=t.y,a=t.z,u=this._oneOverRadii,c=u.x,l=u.y,f=u.z,m=o*o*c*c,h=i*i*l*l,d=a*a*f*f,v=m+h+d,g=Math.sqrt(1/v),E=e.multiplyByScalar(t,g,p);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(E,r):void 0;var S=this._oneOverRadiiSquared,C=S.x,w=S.y,b=S.z,A=y;A.x=2*E.x*C,A.y=2*E.y*w,A.z=2*E.z*b;var x,T,M,I,O,R,N,L,P,z,D,F=(1-g)*e.magnitude(t)/(.5*e.magnitude(A)),_=0;do{F-=_,M=1/(1+F*C),I=1/(1+F*w),O=1/(1+F*b),R=M*M,N=I*I,L=O*O,P=R*M,z=N*I,D=L*O,x=m*R+h*N+d*L-1,T=m*P*C+h*z*w+d*D*b;var B=-2*T;_=x/B}while(Math.abs(x)>s.EPSILON12);return n(r)?(r.x=o*M,r.y=i*I,r.z=a*O,r):new e(o*M,i*I,a*O)},c.prototype.scaleToGeocentricSurface=function(t,r){n(r)||(r=new e);var o=t.x,i=t.y,a=t.z,s=this._oneOverRadiiSquared,u=1/Math.sqrt(o*o*s.x+i*i*s.y+a*a*s.z);return e.multiplyByScalar(t,u,r)},c.prototype.transformPositionToScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._oneOverRadii,r)},c.prototype.transformPositionFromScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._radii,r)},c.prototype.equals=function(t){return this===t||n(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,r,n,o,i,a){"use strict";var s=function(e){this._ellipsoid=r(e,a.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return o(s.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),s.prototype.project=function(t,r){var o=this._semimajorAxis,i=t.longitude*o,a=t.latitude*o,s=t.height;return n(r)?(r.x=i,r.y=a,r.z=s,r):new e(i,a,s)},s.prototype.unproject=function(e,r){var o=this._oneOverSemimajorAxis,i=e.x*o,a=e.y*o,s=e.z;return n(r)?(r.longitude=i,r.latitude=a,r.height=s,r):new t(i,a,s)},s}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,r){this.start=e(t,0),this.stop=e(r,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o){"use strict";var i=function(t,r,n,o){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0),this.w=e(o,0)};i.fromElements=function(e,r,n,o,a){return t(a)?(a.x=e,a.y=r,a.z=n,a.w=o,a):new i(e,r,n,o)},i.fromColor=function(e,r){return t(r)?(r.x=e.red,r.y=e.green,r.z=e.blue,r.w=e.alpha,r):new i(e.red,e.green,e.blue,e.alpha)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r.w=e.w,r):new i(e.x,e.y,e.z,e.w):void 0},i.packedLength=4,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n++]=t.z,r[n]=t.w},i.unpack=function(r,n,o){return n=e(n,0),t(o)||(o=new i),o.x=r[n++],o.y=r[n++],o.z=r[n++],o.w=r[n],o},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r.w=Math.min(e.w,t.w),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r.w=Math.max(e.w,t.w),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var a=new i;i.distance=function(e,t){return i.subtract(e,t,a),i.magnitude(a)},i.distanceSquared=function(e,t){return i.subtract(e,t,a),i.magnitudeSquared(a)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t.w=e.w/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r.w=e.w*t.w,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var s=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,s),n=i.multiplyByScalar(e,1-r,n),i.add(s,n,n)};var u=new i;return i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,u);return i.abs(r,r),t=r.x<=r.y?r.x<=r.z?r.x<=r.w?i.clone(i.UNIT_X,t):i.clone(i.UNIT_W,t):r.z<=r.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t):r.y<=r.z?r.y<=r.w?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_W,t):r.z<=r.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z&&e.w===r.w},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]&&e.w===t[r+3]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&o.equalsEpsilon(e.x,r.x,n,i)&&o.equalsEpsilon(e.y,r.y,n,i)&&o.equalsEpsilon(e.z,r.z,n,i)&&o.equalsEpsilon(e.w,r.w,n,i)},i.ZERO=n(new i(0,0,0,0)),i.UNIT_X=n(new i(1,0,0,0)),i.UNIT_Y=n(new i(0,1,0,0)),i.UNIT_Z=n(new i(0,0,1,0)),i.UNIT_W=n(new i(0,0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o,i){"use strict";function a(e){for(var t=0,r=0;9>r;++r){var n=e[r];t+=n*n}return Math.sqrt(t)}function s(e){for(var t=0,r=0;3>r;++r){var n=e[c.getElementIndex(h[r],m[r])];t+=2*n*n}return Math.sqrt(t)}function u(e,t){for(var r=i.EPSILON15,n=0,o=1,a=0;3>a;++a){var s=Math.abs(e[c.getElementIndex(h[a],m[a])]);s>n&&(o=a,n=s)}var u=1,l=0,f=m[o],d=h[o];if(Math.abs(e[c.getElementIndex(d,f)])>r){var p,y=e[c.getElementIndex(d,d)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(d,f)],E=(y-v)/2/g;p=0>E?-1/(-E+Math.sqrt(1+E*E)):1/(E+Math.sqrt(1+E*E)),u=1/Math.sqrt(1+p*p),l=p*u}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(d,d)]=u,t[c.getElementIndex(d,f)]=l,t[c.getElementIndex(f,d)]=-l,t}var c=function(e,r,n,o,i,a,s,u,c){this[0]=t(e,0),this[1]=t(o,0),this[2]=t(s,0),this[3]=t(r,0),this[4]=t(i,0),this[5]=t(u,0),this[6]=t(n,0),this[7]=t(a,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,r,n){n=t(n,0),r[n++]=e[0],r[n++]=e[1],r[n++]=e[2],r[n++]=e[3],r[n++]=e[4],r[n++]=e[5],r[n++]=e[6],r[n++]=e[7],r[n++]=e[8]},c.unpack=function(e,n,o){return n=t(n,0),r(o)||(o=new c),o[0]=e[n++],o[1]=e[n++],o[2]=e[n++],o[3]=e[n++],o[4]=e[n++],o[5]=e[n++],o[6]=e[n++],o[7]=e[n++],o[8]=e[n++],o},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,n,o){return n=t(n,0),r(o)||(o=new c),o[0]=e[n],o[1]=e[n+1],o[2]=e[n+2],o[3]=e[n+3],o[4]=e[n+4],o[5]=e[n+5],o[6]=e[n+6],o[7]=e[n+7],o[8]=e[n+8],o},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var n=e.x*e.x,o=e.x*e.y,i=e.x*e.z,a=e.x*e.w,s=e.y*e.y,u=e.y*e.z,l=e.y*e.w,f=e.z*e.z,m=e.z*e.w,h=e.w*e.w,d=n-s-f+h,p=2*(o-m),y=2*(i+l),v=2*(o+m),g=-n+s-f+h,E=2*(u-a),S=2*(i-l),C=2*(u+a),w=-n-s+f+h;return r(t)?(t[0]=d,t[1]=v,t[2]=S,t[3]=p,t[4]=g,t[5]=C,t[6]=y,t[7]=E,t[8]=w,t):new c(d,p,y,v,g,E,S,C,w)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return r(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var n=Math.cos(e),o=Math.sin(e);return r(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=o,t[6]=0,t[7]=-o,t[8]=n,t):new c(1,0,0,0,n,-o,0,o,n)},c.fromRotationY=function(e,t){var n=Math.cos(e),o=Math.sin(e);return r(t)?(t[0]=n,t[1]=0,t[2]=-o,t[3]=0,t[4]=1,t[5]=0,t[6]=o,t[7]=0,t[8]=n,t):new c(n,0,o,0,1,0,-o,0,n)},c.fromRotationZ=function(e,t){var n=Math.cos(e),o=Math.sin(e);return r(t)?(t[0]=n,t[1]=o,t[2]=0,t[3]=-o,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(n,-o,0,o,n,0,0,0,1)},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,r){var n=3*t,o=e[n],i=e[n+1],a=e[n+2];return r.x=o,r.y=i,r.z=a,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var o=3*t;return n[o]=r.x,n[o+1]=r.y,n[o+2]=r.z,n},c.getRow=function(e,t,r){var n=e[t],o=e[t+3],i=e[t+6];return r.x=n,r.y=o,r.z=i,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+3]=r.y,n[t+6]=r.z,n};var l=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),r.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),r.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),r};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,r){var n=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],o=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],i=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],a=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],s=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],u=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return r[0]=n,r[1]=o,r[2]=i,r[3]=a,r[4]=s,r[5]=u,r[6]=c,r[7]=l,r[8]=f,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r},c.multiplyByVector=function(e,t,r){var n=t.x,o=t.y,i=t.z,a=e[0]*n+e[3]*o+e[6]*i,s=e[1]*n+e[4]*o+e[7]*i,u=e[2]*n+e[5]*o+e[8]*i;return r.x=a,r.y=s,r.z=u,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r},c.multiplyByScale=function(e,t,r){return r[0]=e[0]*t.x,r[1]=e[1]*t.x,r[2]=e[2]*t.x,r[3]=e[3]*t.y,r[4]=e[4]*t.y,r[5]=e[5]*t.y,r[6]=e[6]*t.z,r[7]=e[7]*t.z,r[8]=e[8]*t.z,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var r=e[0],n=e[3],o=e[6],i=e[1],a=e[4],s=e[7],u=e[2],c=e[5],l=e[8];return t[0]=r,t[1]=n,t[2]=o,t[3]=i,t[4]=a,t[5]=s,t[6]=u,t[7]=c,t[8]=l,t};var m=[1,0,0],h=[2,2,1],d=new c,p=new c;return c.computeEigenDecomposition=function(e,t){var n=i.EPSILON20,o=10,l=0,f=0;r(t)||(t={});for(var m=t.unitary=c.clone(c.IDENTITY,t.unitary),h=t.diagonal=c.clone(e,t.diagonal),y=n*a(h);o>f&&s(h)>y;)u(h,d),c.transpose(d,p),c.multiply(h,d,h),c.multiply(p,h,h),c.multiply(m,d,m),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],r=e[3],n=e[6],o=e[1],i=e[4],a=e[7],s=e[2],u=e[5],c=e[8];return t*(i*c-u*a)+o*(u*n-r*c)+s*(r*a-i*n)},c.inverse=function(e,t){var r=e[0],o=e[1],a=e[2],s=e[3],u=e[4],l=e[5],f=e[6],m=e[7],h=e[8],d=c.determinant(e);if(Math.abs(d)<=i.EPSILON15)throw new n("matrix is not invertible");t[0]=u*h-m*l,t[1]=m*a-o*h,t[2]=o*l-u*a,t[3]=f*l-s*h,t[4]=r*h-f*a,t[5]=s*a-r*l,t[6]=s*m-f*u,t[7]=f*o-r*m,t[8]=r*u-s*o;var p=1/d;return c.multiplyByScalar(t,p,t)},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n},c.IDENTITY=o(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=o(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,r,n,o,i,a,s,u){"use strict";var c=function(e,t,n,o,i,a,s,u,c,l,f,m,h,d,p,y){this[0]=r(e,0),this[1]=r(i,0),this[2]=r(c,0),this[3]=r(h,0),this[4]=r(t,0),this[5]=r(a,0),this[6]=r(l,0),this[7]=r(d,0),this[8]=r(n,0),this[9]=r(s,0),this[10]=r(f,0),this[11]=r(p,0),this[12]=r(o,0),this[13]=r(u,0),this[14]=r(m,0),this[15]=r(y,0)};c.packedLength=16,c.pack=function(e,t,n){n=r(n,0),t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15]},c.unpack=function(e,t,o){return t=r(t,0),n(o)||(o=new c),o[0]=e[t++],o[1]=e[t++],o[2]=e[t++],o[3]=e[t++],o[4]=e[t++],o[5]=e[t++],o[6]=e[t++],o[7]=e[t++],o[8]=e[t++],o[9]=e[t++],o[10]=e[t++],o[11]=e[t++],o[12]=e[t++],o[13]=e[t++],o[14]=e[t++],o[15]=e[t],o},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,o,i){return o=r(o,e.ZERO),n(i)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=0,i[4]=t[3],i[5]=t[4],i[6]=t[5],i[7]=0,i[8]=t[6],i[9]=t[7],i[10]=t[8],i[11]=0,i[12]=o.x,i[13]=o.y,i[14]=o.z,i[15]=1,i):new c(t[0],t[3],t[6],o.x,t[1],t[4],t[7],o.y,t[2],t[5],t[8],o.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,r,o){n(o)||(o=new c);var i=r.x,a=r.y,s=r.z,u=t.x*t.x,l=t.x*t.y,f=t.x*t.z,m=t.x*t.w,h=t.y*t.y,d=t.y*t.z,p=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,E=u-h-y+g,S=2*(l-v),C=2*(f+p),w=2*(l+v),b=-u+h-y+g,A=2*(d-m),x=2*(f-p),T=2*(d+m),M=-u-h+y+g;return o[0]=E*i,o[1]=w*i,o[2]=x*i,o[3]=0,o[4]=S*a,o[5]=b*a,o[6]=T*a,o[7]=0,o[8]=C*s,o[9]=A*s,o[10]=M*s,o[11]=0,o[12]=e.x,o[13]=e.y,o[14]=e.z,o[15]=1,o},c.fromTranslation=function(e,t){return c.fromRotationTranslation(s.IDENTITY,e,t)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,m=new e;c.fromCamera=function(t,r){var o=t.eye,i=t.target,a=t.up;e.normalize(e.subtract(i,o,l),l),e.normalize(e.cross(l,a,f),f),e.normalize(e.cross(f,l,m),m);var s=f.x,u=f.y,h=f.z,d=l.x,p=l.y,y=l.z,v=m.x,g=m.y,E=m.z,S=o.x,C=o.y,w=o.z,b=s*-S+u*-C+h*-w,A=v*-S+g*-C+E*-w,x=d*S+p*C+y*w;return n(r)?(r[0]=s,r[1]=v,r[2]=-d,r[3]=0,r[4]=u,r[5]=g,r[6]=-p,r[7]=0,r[8]=h,r[9]=E,r[10]=-y,r[11]=0,r[12]=b,r[13]=A,r[14]=x,r[15]=1,r):new c(s,u,h,b,v,g,E,A,-d,-p,-y,x,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,r,n,o){var i=Math.tan(.5*e),a=1/i,s=a/t,u=(n+r)/(r-n),c=2*n*r/(r-n);return o[0]=s,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=a,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=u,o[11]=-1,o[12]=0,o[13]=0,o[14]=c,o[15]=0,o},c.computeOrthographicOffCenter=function(e,t,r,n,o,i,a){var s=1/(t-e),u=1/(n-r),c=1/(i-o),l=-(t+e)*s,f=-(n+r)*u,m=-(i+o)*c;return s*=2,u*=2,c*=-2,a[0]=s,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=c,a[11]=0,a[12]=l,a[13]=f,a[14]=m,a[15]=1,a +},c.computePerspectiveOffCenter=function(e,t,r,n,o,i,a){var s=2*o/(t-e),u=2*o/(n-r),c=(t+e)/(t-e),l=(n+r)/(n-r),f=-(i+o)/(i-o),m=-1,h=-2*i*o/(i-o);return a[0]=s,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=c,a[9]=l,a[10]=f,a[11]=m,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeInfinitePerspectiveOffCenter=function(e,t,r,n,o,i){var a=2*o/(t-e),s=2*o/(n-r),u=(t+e)/(t-e),c=(n+r)/(n-r),l=-1,f=-1,m=-2*o;return i[0]=a,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=s,i[6]=0,i[7]=0,i[8]=u,i[9]=c,i[10]=l,i[11]=f,i[12]=0,i[13]=0,i[14]=m,i[15]=0,i},c.computeViewportTransformation=function(e,t,n,o){e=r(e,r.EMPTY_OBJECT);var i=r(e.x,0),a=r(e.y,0),s=r(e.width,0),u=r(e.height,0);t=r(t,0),n=r(n,1);var c=.5*s,l=.5*u,f=.5*(n-t),m=c,h=l,d=f,p=i+c,y=a+l,v=t+f,g=1;return o[0]=m,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=h,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=d,o[11]=0,o[12]=p,o[13]=y,o[14]=v,o[15]=g,o},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,r){var n=4*t,o=e[n],i=e[n+1],a=e[n+2],s=e[n+3];return r.x=o,r.y=i,r.z=a,r.w=s,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var o=4*t;return n[o]=r.x,n[o+1]=r.y,n[o+2]=r.z,n[o+3]=r.w,n},c.setTranslation=function(e,t,r){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=t.x,r[13]=t.y,r[14]=t.z,r[15]=e[15],r},c.getRow=function(e,t,r){var n=e[t],o=e[t+4],i=e[t+8],a=e[t+12];return r.x=n,r.y=o,r.z=i,r.w=a,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+4]=r.y,n[t+8]=r.z,n[t+12]=r.w,n};var h=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],h)),r.y=e.magnitude(e.fromElements(t[4],t[5],t[6],h)),r.z=e.magnitude(e.fromElements(t[8],t[9],t[10],h)),r};var d=new e;c.getMaximumScale=function(t){return c.getScale(t,d),e.maximumComponent(d)},c.multiply=function(e,t,r){var n=e[0],o=e[1],i=e[2],a=e[3],s=e[4],u=e[5],c=e[6],l=e[7],f=e[8],m=e[9],h=e[10],d=e[11],p=e[12],y=e[13],v=e[14],g=e[15],E=t[0],S=t[1],C=t[2],w=t[3],b=t[4],A=t[5],x=t[6],T=t[7],M=t[8],I=t[9],O=t[10],R=t[11],N=t[12],L=t[13],P=t[14],z=t[15],D=n*E+s*S+f*C+p*w,F=o*E+u*S+m*C+y*w,_=i*E+c*S+h*C+v*w,B=a*E+l*S+d*C+g*w,U=n*b+s*A+f*x+p*T,G=o*b+u*A+m*x+y*T,q=i*b+c*A+h*x+v*T,k=a*b+l*A+d*x+g*T,V=n*M+s*I+f*O+p*R,W=o*M+u*I+m*O+y*R,Y=i*M+c*I+h*O+v*R,H=a*M+l*I+d*O+g*R,j=n*N+s*L+f*P+p*z,K=o*N+u*L+m*P+y*z,Z=i*N+c*L+h*P+v*z,X=a*N+l*L+d*P+g*z;return r[0]=D,r[1]=F,r[2]=_,r[3]=B,r[4]=U,r[5]=G,r[6]=q,r[7]=k,r[8]=V,r[9]=W,r[10]=Y,r[11]=H,r[12]=j,r[13]=K,r[14]=Z,r[15]=X,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r[9]=e[9]+t[9],r[10]=e[10]+t[10],r[11]=e[11]+t[11],r[12]=e[12]+t[12],r[13]=e[13]+t[13],r[14]=e[14]+t[14],r[15]=e[15]+t[15],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r[9]=e[9]-t[9],r[10]=e[10]-t[10],r[11]=e[11]-t[11],r[12]=e[12]-t[12],r[13]=e[13]-t[13],r[14]=e[14]-t[14],r[15]=e[15]-t[15],r},c.multiplyTransformation=function(e,t,r){var n=e[0],o=e[1],i=e[2],a=e[4],s=e[5],u=e[6],c=e[8],l=e[9],f=e[10],m=e[12],h=e[13],d=e[14],p=t[0],y=t[1],v=t[2],g=t[4],E=t[5],S=t[6],C=t[8],w=t[9],b=t[10],A=t[12],x=t[13],T=t[14],M=n*p+a*y+c*v,I=o*p+s*y+l*v,O=i*p+u*y+f*v,R=n*g+a*E+c*S,N=o*g+s*E+l*S,L=i*g+u*E+f*S,P=n*C+a*w+c*b,z=o*C+s*w+l*b,D=i*C+u*w+f*b,F=n*A+a*x+c*T+m,_=o*A+s*x+l*T+h,B=i*A+u*x+f*T+d;return r[0]=M,r[1]=I,r[2]=O,r[3]=0,r[4]=R,r[5]=N,r[6]=L,r[7]=0,r[8]=P,r[9]=z,r[10]=D,r[11]=0,r[12]=F,r[13]=_,r[14]=B,r[15]=1,r},c.multiplyByMatrix3=function(e,t,r){var n=e[0],o=e[1],i=e[2],a=e[4],s=e[5],u=e[6],c=e[8],l=e[9],f=e[10],m=t[0],h=t[1],d=t[2],p=t[3],y=t[4],v=t[5],g=t[6],E=t[7],S=t[8],C=n*m+a*h+c*d,w=o*m+s*h+l*d,b=i*m+u*h+f*d,A=n*p+a*y+c*v,x=o*p+s*y+l*v,T=i*p+u*y+f*v,M=n*g+a*E+c*S,I=o*g+s*E+l*S,O=i*g+u*E+f*S;return r[0]=C,r[1]=w,r[2]=b,r[3]=0,r[4]=A,r[5]=x,r[6]=T,r[7]=0,r[8]=M,r[9]=I,r[10]=O,r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r},c.multiplyByTranslation=function(e,t,r){var n=t.x,o=t.y,i=t.z,a=n*e[0]+o*e[4]+i*e[8]+e[12],s=n*e[1]+o*e[5]+i*e[9]+e[13],u=n*e[2]+o*e[6]+i*e[10]+e[14];return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=a,r[13]=s,r[14]=u,r[15]=e[15],r};var p=new e;c.multiplyByUniformScale=function(e,t,r){return p.x=t,p.y=t,p.z=t,c.multiplyByScale(e,p,r)},c.multiplyByScale=function(e,t,r){var n=t.x,o=t.y,i=t.z;return 1===n&&1===o&&1===i?c.clone(e,r):(r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=0,r[4]=o*e[4],r[5]=o*e[5],r[6]=o*e[6],r[7]=0,r[8]=i*e[8],r[9]=i*e[9],r[10]=i*e[10],r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=1,r)},c.multiplyByVector=function(e,t,r){var n=t.x,o=t.y,i=t.z,a=t.w,s=e[0]*n+e[4]*o+e[8]*i+e[12]*a,u=e[1]*n+e[5]*o+e[9]*i+e[13]*a,c=e[2]*n+e[6]*o+e[10]*i+e[14]*a,l=e[3]*n+e[7]*o+e[11]*i+e[15]*a;return r.x=s,r.y=u,r.z=c,r.w=l,r},c.multiplyByPointAsVector=function(e,t,r){var n=t.x,o=t.y,i=t.z,a=e[0]*n+e[4]*o+e[8]*i,s=e[1]*n+e[5]*o+e[9]*i,u=e[2]*n+e[6]*o+e[10]*i;return r.x=a,r.y=s,r.z=u,r},c.multiplyByPoint=function(e,t,r){var n=t.x,o=t.y,i=t.z,a=e[0]*n+e[4]*o+e[8]*i+e[12],s=e[1]*n+e[5]*o+e[9]*i+e[13],u=e[2]*n+e[6]*o+e[10]*i+e[14];return r.x=a,r.y=s,r.z=u,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r[9]=e[9]*t,r[10]=e[10]*t,r[11]=e[11]*t,r[12]=e[12]*t,r[13]=e[13]*t,r[14]=e[14]*t,r[15]=e[15]*t,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var r=e[1],n=e[2],o=e[3],i=e[6],a=e[7],s=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=i,t[10]=e[10],t[11]=e[14],t[12]=o,t[13]=a,t[14]=s,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r&&Math.abs(e[9]-t[9])<=r&&Math.abs(e[10]-t[10])<=r&&Math.abs(e[11]-t[11])<=r&&Math.abs(e[12]-t[12])<=r&&Math.abs(e[13]-t[13])<=r&&Math.abs(e[14]-t[14])<=r&&Math.abs(e[15]-t[15])<=r},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new s,v=new s,g=new t,E=new t(0,0,0,1);return c.inverse=function(e,r){if(s.equalsEpsilon(c.getRotation(e,y),v,a.EPSILON7)&&t.equals(c.getRow(e,3,g),E))return r[0]=0,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=0,r[11]=0,r[12]=-e[12],r[13]=-e[13],r[14]=-e[14],r[15]=1,r;var n=e[0],o=e[4],i=e[8],l=e[12],f=e[1],m=e[5],h=e[9],d=e[13],p=e[2],S=e[6],C=e[10],w=e[14],b=e[3],A=e[7],x=e[11],T=e[15],M=C*T,I=w*x,O=S*T,R=w*A,N=S*x,L=C*A,P=p*T,z=w*b,D=p*x,F=C*b,_=p*A,B=S*b,U=M*m+R*h+N*d-(I*m+O*h+L*d),G=I*f+P*h+F*d-(M*f+z*h+D*d),q=O*f+z*m+_*d-(R*f+P*m+B*d),k=L*f+D*m+B*h-(N*f+F*m+_*h),V=I*o+O*i+L*l-(M*o+R*i+N*l),W=M*n+z*i+D*l-(I*n+P*i+F*l),Y=R*n+P*o+B*l-(O*n+z*o+_*l),H=N*n+F*o+_*i-(L*n+D*o+B*i);M=i*d,I=l*h,O=o*d,R=l*m,N=o*h,L=i*m,P=n*d,z=l*f,D=n*h,F=i*f,_=n*m,B=o*f;var j=M*A+R*x+N*T-(I*A+O*x+L*T),K=I*b+P*x+F*T-(M*b+z*x+D*T),Z=O*b+z*A+_*T-(R*b+P*A+B*T),X=L*b+D*A+B*x-(N*b+F*A+_*x),Q=O*C+L*w+I*S-(N*w+M*S+R*C),J=D*w+M*p+z*C-(P*C+F*w+I*p),$=P*S+B*w+R*p-(_*w+O*p+z*S),et=_*C+N*p+F*S-(D*S+B*C+L*p),tt=n*U+o*G+i*q+l*k;if(Math.abs(tt)<a.EPSILON20)throw new u("matrix is not invertible because its determinate is zero.");return tt=1/tt,r[0]=U*tt,r[1]=G*tt,r[2]=q*tt,r[3]=k*tt,r[4]=V*tt,r[5]=W*tt,r[6]=Y*tt,r[7]=H*tt,r[8]=j*tt,r[9]=K*tt,r[10]=Z*tt,r[11]=X*tt,r[12]=Q*tt,r[13]=J*tt,r[14]=$*tt,r[15]=et*tt,r},c.inverseTransformation=function(e,t){var r=e[0],n=e[1],o=e[2],i=e[4],a=e[5],s=e[6],u=e[8],c=e[9],l=e[10],f=e[12],m=e[13],h=e[14],d=-r*f-n*m-o*h,p=-i*f-a*m-s*h,y=-u*f-c*m-l*h;return t[0]=r,t[1]=i,t[2]=u,t[3]=0,t[4]=n,t[5]=a,t[6]=c,t[7]=0,t[8]=o,t[9]=s,t[10]=l,t[11]=0,t[12]=d,t[13]=p,t[14]=y,t[15]=1,t},c.IDENTITY=i(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]&&e[9]===t[r+9]&&e[10]===t[r+10]&&e[11]===t[r+11]&&e[12]===t[r+12]&&e[13]===t[r+13]&&e[14]===t[r+14]&&e[15]===t[r+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n){"use strict";var o=function(t,r){this.normal=e.clone(t),this.distance=r};o.fromPointNormal=function(r,n,i){var a=-e.dot(n,r);return t(i)?(e.clone(n,i.normal),i.distance=a,i):new o(n,a)};var i=new e;return o.fromCartesian4=function(r,n){var a=e.fromCartesian4(r,i),s=r.w;return t(n)?(e.clone(a,n.normal),n.distance=s,n):new o(a,s)},o.getPointDistance=function(t,r){return e.dot(t.normal,r)+t.distance},o.ORIGIN_XY_PLANE=n(new o(e.UNIT_Z,0)),o.ORIGIN_YZ_PLANE=n(new o(e.UNIT_X,0)),o.ORIGIN_ZX_PLANE=n(new o(e.UNIT_Y,0)),o}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,r,n,o,i,a,s){"use strict";var u=function(e,r,n,o){this.west=t(e,0),this.south=t(r,0),this.east=t(n,0),this.north=t(o,0)};n(u.prototype,{width:{get:function(){return u.computeWidth(this)}},height:{get:function(){return u.computeHeight(this)}}}),u.packedLength=4,u.pack=function(e,r,n){n=t(n,0),r[n++]=e.west,r[n++]=e.south,r[n++]=e.east,r[n]=e.north},u.unpack=function(e,n,o){return n=t(n,0),r(o)||(o=new u),o.west=e[n++],o.south=e[n++],o.east=e[n++],o.north=e[n],o},u.computeWidth=function(e){var t=e.east,r=e.west;return r>t&&(t+=s.TWO_PI),t-r},u.computeHeight=function(e){return e.north-e.south},u.fromDegrees=function(e,n,o,i,a){return e=s.toRadians(t(e,0)),n=s.toRadians(t(n,0)),o=s.toRadians(t(o,0)),i=s.toRadians(t(i,0)),r(a)?(a.west=e,a.south=n,a.east=o,a.north=i,a):new u(e,n,o,i)},u.fromCartographicArray=function(e,t){for(var n=Number.MAX_VALUE,o=-Number.MAX_VALUE,i=Number.MAX_VALUE,a=-Number.MAX_VALUE,s=0,c=e.length;c>s;s++){var l=e[s];n=Math.min(n,l.longitude),o=Math.max(o,l.longitude),i=Math.min(i,l.latitude),a=Math.max(a,l.latitude)}return r(t)?(t.west=n,t.south=i,t.east=o,t.north=a,t):new u(n,i,o,a)},u.clone=function(e,t){return r(e)?r(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new u(e.west,e.south,e.east,e.north):void 0},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u.equals=function(e,t){return e===t||r(e)&&r(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},u.prototype.equalsEpsilon=function(e,t){return r(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},u.validate=function(){},u.southwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.south,n.height=0,n):new e(t.west,t.south)},u.northwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.north,n.height=0,n):new e(t.west,t.north)},u.northeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.north,n.height=0,n):new e(t.east,t.north)},u.southeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.south,n.height=0,n):new e(t.east,t.south)},u.center=function(t,n){var o=t.east,i=t.west;i>o&&(o+=s.TWO_PI);var a=s.negativePiToPi(.5*(i+o)),u=.5*(t.south+t.north);return r(n)?(n.longitude=a,n.latitude=u,n.height=0,n):new e(a,u)},u.intersection=function(e,t,n){var o=e.east,i=e.west,a=t.east,c=t.west;i>o&&a>0?o+=s.TWO_PI:c>a&&o>0&&(a+=s.TWO_PI),i>o&&0>c?c+=s.TWO_PI:c>a&&0>i&&(i+=s.TWO_PI);var l=s.negativePiToPi(Math.max(i,c)),f=s.negativePiToPi(Math.min(o,a));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var m=Math.max(e.south,t.south),h=Math.min(e.north,t.north);return m>=h?void 0:r(n)?(n.west=l,n.south=m,n.east=f,n.north=h,n):new u(l,m,f,h)},u.contains=function(e,t){var r=t.longitude,n=t.latitude,o=e.west,i=e.east;return o>i&&(i+=s.TWO_PI,0>r&&(r+=s.TWO_PI)),(r>o||s.equalsEpsilon(r,o,s.EPSILON14))&&(i>r||s.equalsEpsilon(r,i,s.EPSILON14))&&n>=e.south&&n<=e.north};var c=new e;return u.subsample=function(e,n,o,a){n=t(n,i.WGS84),o=t(o,0),r(a)||(a=[]);var l=0,f=e.north,m=e.south,h=e.east,d=e.west,p=c;p.height=o,p.longitude=d,p.latitude=f,a[l]=n.cartographicToCartesian(p,a[l]),l++,p.longitude=h,a[l]=n.cartographicToCartesian(p,a[l]),l++,p.latitude=m,a[l]=n.cartographicToCartesian(p,a[l]),l++,p.longitude=d,a[l]=n.cartographicToCartesian(p,a[l]),l++,p.latitude=0>f?f:m>0?m:0;for(var y=1;8>y;++y)p.longitude=-Math.PI+y*s.PI_OVER_TWO,u.contains(e,p)&&(a[l]=n.cartographicToCartesian(p,a[l]),l++);return 0===p.latitude&&(p.longitude=d,a[l]=n.cartographicToCartesian(p,a[l]),l++,p.longitude=h,a[l]=n.cartographicToCartesian(p,a[l]),l++),a.length=l,a},u.MAX_VALUE=a(new u(-Math.PI,-s.PI_OVER_TWO,Math.PI,s.PI_OVER_TWO)),u}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,r,n,o,i,a,s,u,c,l,f,m){"use strict";var h=function(t,n){this.center=e.clone(r(t,e.ZERO)),this.radius=r(n,0)},d=new e,p=new e,y=new e,v=new e,g=new e,E=new e,S=new e,C=new e,w=new e,b=new e,A=new e,x=new e;h.fromPoints=function(t,r){if(n(r)||(r=new h),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;for(var o=e.clone(t[0],S),i=e.clone(o,d),a=e.clone(o,p),s=e.clone(o,y),u=e.clone(o,v),c=e.clone(o,g),l=e.clone(o,E),f=t.length,m=1;f>m;m++){e.clone(t[m],o);var T=o.x,M=o.y,I=o.z;T<i.x&&e.clone(o,i),T>u.x&&e.clone(o,u),M<a.y&&e.clone(o,a),M>c.y&&e.clone(o,c),I<s.z&&e.clone(o,s),I>l.z&&e.clone(o,l)}var O=e.magnitudeSquared(e.subtract(u,i,C)),R=e.magnitudeSquared(e.subtract(c,a,C)),N=e.magnitudeSquared(e.subtract(l,s,C)),L=i,P=u,z=O;R>z&&(z=R,L=a,P=c),N>z&&(z=N,L=s,P=l);var D=w;D.x=.5*(L.x+P.x),D.y=.5*(L.y+P.y),D.z=.5*(L.z+P.z);var F=e.magnitudeSquared(e.subtract(P,D,C)),_=Math.sqrt(F),B=b;B.x=i.x,B.y=a.y,B.z=s.z;var U=A;U.x=u.x,U.y=c.y,U.z=l.z;var G=e.multiplyByScalar(e.add(B,U,C),.5,x),q=0;for(m=0;f>m;m++){e.clone(t[m],o);var k=e.magnitude(e.subtract(o,G,C));k>q&&(q=k);var V=e.magnitudeSquared(e.subtract(o,D,C));if(V>F){var W=Math.sqrt(V);_=.5*(_+W),F=_*_;var Y=W-_;D.x=(_*D.x+Y*o.x)/W,D.y=(_*D.y+Y*o.y)/W,D.z=(_*D.z+Y*o.z)/W}}return q>_?(e.clone(D,r.center),r.radius=_):(e.clone(G,r.center),r.radius=q),r};var T=new s,M=new e,I=new e,O=new t,R=new t;h.fromRectangle2D=function(e,t,r){return h.fromRectangleWithHeights2D(e,t,0,0,r)},h.fromRectangleWithHeights2D=function(t,o,i,a,s){if(n(s)||(s=new h),!n(t))return s.center=e.clone(e.ZERO,s.center),s.radius=0,s;o=r(o,T),m.southwest(t,O),O.height=i,m.northeast(t,R),R.height=a;var u=o.project(O,M),c=o.project(R,I),l=c.x-u.x,f=c.y-u.y,d=c.z-u.z;s.radius=.5*Math.sqrt(l*l+f*f+d*d);var p=s.center;return p.x=u.x+.5*l,p.y=u.y+.5*f,p.z=u.z+.5*d,s};var N=[];h.fromRectangle3D=function(e,t,o,i){t=r(t,a.WGS84),o=r(o,0);var s;return n(e)&&(s=m.subsample(e,t,o,N)),h.fromPoints(s,i)},h.fromVertices=function(t,o,i,a){if(n(a)||(a=new h),!n(t)||0===t.length)return a.center=e.clone(e.ZERO,a.center),a.radius=0,a;o=r(o,e.ZERO),i=r(i,3);var s=S;s.x=t[0]+o.x,s.y=t[1]+o.y,s.z=t[2]+o.z;for(var u=e.clone(s,d),c=e.clone(s,p),l=e.clone(s,y),f=e.clone(s,v),m=e.clone(s,g),T=e.clone(s,E),M=t.length,I=0;M>I;I+=i){var O=t[I]+o.x,R=t[I+1]+o.y,N=t[I+2]+o.z;s.x=O,s.y=R,s.z=N,O<u.x&&e.clone(s,u),O>f.x&&e.clone(s,f),R<c.y&&e.clone(s,c),R>m.y&&e.clone(s,m),N<l.z&&e.clone(s,l),N>T.z&&e.clone(s,T)}var L=e.magnitudeSquared(e.subtract(f,u,C)),P=e.magnitudeSquared(e.subtract(m,c,C)),z=e.magnitudeSquared(e.subtract(T,l,C)),D=u,F=f,_=L;P>_&&(_=P,D=c,F=m),z>_&&(_=z,D=l,F=T);var B=w;B.x=.5*(D.x+F.x),B.y=.5*(D.y+F.y),B.z=.5*(D.z+F.z);var U=e.magnitudeSquared(e.subtract(F,B,C)),G=Math.sqrt(U),q=b;q.x=u.x,q.y=c.y,q.z=l.z;var k=A;k.x=f.x,k.y=m.y,k.z=T.z;var V=e.multiplyByScalar(e.add(q,k,C),.5,x),W=0;for(I=0;M>I;I+=i){s.x=t[I]+o.x,s.y=t[I+1]+o.y,s.z=t[I+2]+o.z;var Y=e.magnitude(e.subtract(s,V,C));Y>W&&(W=Y);var H=e.magnitudeSquared(e.subtract(s,B,C));if(H>U){var j=Math.sqrt(H);G=.5*(G+j),U=G*G;var K=j-G;B.x=(G*B.x+K*s.x)/j,B.y=(G*B.y+K*s.y)/j,B.z=(G*B.z+K*s.z)/j}}return W>G?(e.clone(B,a.center),a.radius=G):(e.clone(V,a.center),a.radius=W),a},h.fromCornerPoints=function(t,r,o){n(o)||(o=new h);var i=o.center;return e.add(t,r,i),e.multiplyByScalar(i,.5,i),o.radius=e.distance(i,r),o},h.fromEllipsoid=function(t,r){return n(r)||(r=new h),e.clone(e.ZERO,r.center),r.radius=t.maximumRadius,r};var L=new e;h.fromBoundingSpheres=function(t,r){if(n(r)||(r=new h),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;var o=t.length;if(1===o)return h.clone(t[0],r);if(2===o)return h.union(t[0],t[1],r);for(var i=[],a=0;o>a;a++)i.push(t[a].center);r=h.fromPoints(i,r);var s=r.center,u=r.radius;for(a=0;o>a;a++){var c=t[a];u=Math.max(u,e.distance(s,c.center,L)+c.radius)}return r.radius=u,r},h.clone=function(t,r){return n(t)?n(r)?(r.center=e.clone(t.center,r.center),r.radius=t.radius,r):new h(t.center,t.radius):void 0},h.packedLength=4,h.pack=function(e,t,n){n=r(n,0);var o=e.center;t[n++]=o.x,t[n++]=o.y,t[n++]=o.z,t[n]=e.radius},h.unpack=function(e,t,o){t=r(t,0),n(o)||(o=new h);var i=o.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],o.radius=e[t],o};var P=new e,z=new e;h.union=function(t,r,o){n(o)||(o=new h);var i=t.center,a=t.radius,s=r.center,u=r.radius,c=e.subtract(s,i,P),l=e.magnitude(c);if(a>=l+u)return t.clone(o),o;if(u>=l+a)return r.clone(o),o;var f=.5*(a+l+u),m=e.multiplyByScalar(c,(-a+f)/l,z);return e.add(m,i,m),e.clone(m,o.center),o.radius=f,o};var D=new e;h.expand=function(t,r,n){n=h.clone(t,n);var o=e.magnitude(e.subtract(r,n.center,D));return o>n.radius&&(n.radius=o),n},h.intersectPlane=function(t,r){var n=t.center,o=t.radius,i=r.normal,a=e.dot(i,n)+r.distance;return-o>a?u.OUTSIDE:o>a?u.INTERSECTING:u.INSIDE};var F=new f(new e,0);h.intersect=function(e,t){o("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var r=f.fromCartesian4(t,F);return h.intersectPlane(e,r)},h.transform=function(e,t,r){return n(r)||(r=new h),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=l.getMaximumScale(t)*e.radius,r};var _=new e;h.distanceSquaredTo=function(t,r){var n=e.subtract(t.center,r,_);return e.magnitudeSquared(n)-t.radius*t.radius},h.transformWithoutScale=function(e,t,r){return n(r)||(r=new h),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=e.radius,r};var B=new e;h.computePlaneDistances=function(t,r,o,i){n(i)||(i=new c);var a=e.subtract(t.center,r,B),s=e.multiplyByScalar(o,e.dot(o,a),B),u=e.magnitude(s);return i.start=u-t.radius,i.stop=u+t.radius,i};for(var U=new e,G=new e,q=new e,k=new e,V=new e,W=new t,Y=new Array(8),H=0;8>H;++H)Y[H]=new e;var j=new s;return h.projectTo2D=function(t,n,o){n=r(n,j);var i=n.ellipsoid,a=t.center,s=t.radius,u=i.geodeticSurfaceNormal(a,U),c=e.cross(e.UNIT_Z,u,G);e.normalize(c,c);var l=e.cross(u,c,q);e.normalize(l,l),e.multiplyByScalar(u,s,u),e.multiplyByScalar(l,s,l),e.multiplyByScalar(c,s,c);var f=e.negate(l,V),m=e.negate(c,k),d=Y,p=d[0];e.add(u,l,p),e.add(p,c,p),p=d[1],e.add(u,l,p),e.add(p,m,p),p=d[2],e.add(u,f,p),e.add(p,m,p),p=d[3],e.add(u,f,p),e.add(p,c,p),e.negate(u,u),p=d[4],e.add(u,l,p),e.add(p,c,p),p=d[5],e.add(u,l,p),e.add(p,m,p),p=d[6],e.add(u,f,p),e.add(p,m,p),p=d[7],e.add(u,f,p),e.add(p,c,p);for(var y=d.length,v=0;y>v;++v){var g=d[v];e.add(a,g,g);var E=i.cartesianToCartographic(g,W);n.project(E,g)}o=h.fromPoints(d,o),a=o.center;var S=a.x,C=a.y,w=a.z;return a.x=w,a.y=S,a.z=C,o},h.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&t.radius===r.radius},h.prototype.intersectPlane=function(e){return h.intersectPlane(this,e)},h.prototype.intersect=function(e){return h.intersect(this,e)},h.prototype.equals=function(e){return h.equals(this,e)},h.prototype.clone=function(e){return h.clone(this,e)},h}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var r,n={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},o={};return t(o,{element:{get:function(){return o.supportsFullscreen()?document[n.fullscreenElement]:void 0}},changeEventName:{get:function(){return o.supportsFullscreen()?n.fullscreenchange:void 0}},errorEventName:{get:function(){return o.supportsFullscreen()?n.fullscreenerror:void 0}},enabled:{get:function(){return o.supportsFullscreen()?document[n.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return o.supportsFullscreen()?null!==o.element:void 0}}}),o.supportsFullscreen=function(){if(e(r))return r;r=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return n.requestFullscreen="requestFullscreen",n.exitFullscreen="exitFullscreen",n.fullscreenEnabled="fullscreenEnabled",n.fullscreenElement="fullscreenElement",n.fullscreenchange="fullscreenchange",n.fullscreenerror="fullscreenerror",r=!0;for(var o,i=["webkit","moz","o","ms","khtml"],a=0,s=i.length;s>a;++a){var u=i[a];o=u+"RequestFullscreen","function"==typeof t[o]?(n.requestFullscreen=o,r=!0):(o=u+"RequestFullScreen","function"==typeof t[o]&&(n.requestFullscreen=o,r=!0)),o=u+"ExitFullscreen","function"==typeof document[o]?n.exitFullscreen=o:(o=u+"CancelFullScreen","function"==typeof document[o]&&(n.exitFullscreen=o)),o=u+"FullscreenEnabled",e(document[o])?n.fullscreenEnabled=o:(o=u+"FullScreenEnabled",e(document[o])&&(n.fullscreenEnabled=o)),o=u+"FullscreenElement",e(document[o])?n.fullscreenElement=o:(o=u+"FullScreenElement",e(document[o])&&(n.fullscreenElement=o)),o=u+"fullscreenchange",e(document["on"+o])&&("ms"===u&&(o="MSFullscreenChange"),n.fullscreenchange=o),o=u+"fullscreenerror",e(document["on"+o])&&("ms"===u&&(o="MSFullscreenError"),n.fullscreenerror=o)}return r},o.requestFullscreen=function(e){o.supportsFullscreen()&&e[n.requestFullscreen]()},o.exitFullscreen=function(){o.supportsFullscreen()&&document[n.exitFullscreen]()},o}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,r){"use strict";function n(e){for(var t=e.split("."),r=0,n=t.length;n>r;++r)t[r]=parseInt(t[r],10);return t}function o(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=n(e[1]))}return y}function i(){return o()&&v}function a(){if(!t(g)&&(g=!1,!o()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,E=n(e[1]))}return g}function s(){return a()&&E}function u(){if(!t(S)){S=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(S=!0,C=n(e[1]),C.isNightly=!!e[2])}return S}function c(){return u()&&C}function l(){if(!t(w)){w=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(w=!0,b=n(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(w=!0,b=n(e[1])))}return w}function f(){return l()&&b}function m(){if(!t(A)){A=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(A=!0,x=n(e[1]))}return A}function h(){return t(T)||(T=/Windows/i.test(navigator.appVersion)),T}function d(){return m()&&x}function p(){return t(M)||(M=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),M}var y,v,g,E,S,C,w,b,A,x,T,M,I={isChrome:o,chromeVersion:i,isSafari:a,safariVersion:s,isWebkit:u,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:m,firefoxVersion:d,isWindows:h,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return I.supportsFullscreen=function(){return r.supportsFullscreen()},I.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},I.supportsWebWorkers=function(){return"undefined"!=typeof Worker},I}),define("Core/Color",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math"],function(e,t,r,n,o,i){"use strict";function a(e,t,r){return 0>r&&(r+=1),r>1&&(r-=1),1>6*r?e+6*(t-e)*r:1>2*r?t:2>3*r?e+6*(t-e)*(2/3-r):e}var s=function(t,r,n,o){this.red=e(t,1),this.green=e(r,1),this.blue=e(n,1),this.alpha=e(o,1)};s.fromCartesian4=function(e,r){return t(r)?(r.red=e.x,r.green=e.y,r.blue=e.z,r.alpha=e.w,r):new s(e.x,e.y,e.z,e.w)},s.fromBytes=function(r,n,o,i,a){return r=s.byteToFloat(e(r,255)),n=s.byteToFloat(e(n,255)),o=s.byteToFloat(e(o,255)),i=s.byteToFloat(e(i,255)),t(a)?(a.red=r,a.green=n,a.blue=o,a.alpha=i,a):new s(r,n,o,i)},s.fromAlpha=function(e,r,n){return t(n)?(n.red=e.red,n.green=e.green,n.blue=e.blue,n.alpha=r,n):new s(e.red,e.green,e.blue,r)};var u,c,l;n.supportsTypedArrays()&&(u=new ArrayBuffer(4),c=new Uint32Array(u),l=new Uint8Array(u)),s.fromRgba=function(e){return c[0]=e,s.fromBytes(l[0],l[1],l[2],l[3])},s.fromHsl=function(t,r,n,o){t=e(t,0)%1,r=e(r,0),n=e(n,0),o=e(o,1);var i=n,u=n,c=n;if(0!==r){var l;l=.5>n?n*(1+r):n+r-n*r;var f=2*n-l;i=a(f,l,t+1/3),u=a(f,l,t),c=a(f,l,t-1/3)}return new s(i,u,c,o)},s.fromRandom=function(r,n){r=e(r,e.EMPTY_OBJECT);var o=r.red;if(!t(o)){var a=e(r.minimumRed,0),u=e(r.maximumRed,1);o=a+i.nextRandomNumber()*(u-a)}var c=r.green;if(!t(c)){var l=e(r.minimumGreen,0),f=e(r.maximumGreen,1);c=l+i.nextRandomNumber()*(f-l)}var m=r.blue;if(!t(m)){var h=e(r.minimumBlue,0),d=e(r.maximumBlue,1);m=h+i.nextRandomNumber()*(d-h)}var p=r.alpha;if(!t(p)){var y=e(r.minimumAlpha,0),v=e(r.maximumAlpha,1);p=y+i.nextRandomNumber()*(v-y)}return t(n)?(n.red=o,n.green=c,n.blue=m,n.alpha=p,n):new s(o,c,m,p)};var f=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i,m=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i,h=/^rgba?\(\s*([0-9.]+%?)\s*,\s*([0-9.]+%?)\s*,\s*([0-9.]+%?)(?:\s*,\s*([0-9.]+))?\s*\)$/i,d=/^hsla?\(\s*([0-9.]+)\s*,\s*([0-9.]+%)\s*,\s*([0-9.]+%)(?:\s*,\s*([0-9.]+))?\s*\)$/i;return s.fromCssColorString=function(r){var n=s[r.toUpperCase()];if(t(n))return s.clone(n);var o=f.exec(r);return null!==o?new s(parseInt(o[1],16)/15,parseInt(o[2],16)/15,parseInt(o[3],16)/15):(o=m.exec(r),null!==o?new s(parseInt(o[1],16)/255,parseInt(o[2],16)/255,parseInt(o[3],16)/255):(o=h.exec(r),null!==o?new s(parseFloat(o[1])/("%"===o[1].substr(-1)?100:255),parseFloat(o[2])/("%"===o[2].substr(-1)?100:255),parseFloat(o[3])/("%"===o[3].substr(-1)?100:255),parseFloat(e(o[4],"1.0"))):(o=d.exec(r),null!==o?s.fromHsl(parseFloat(o[1])/360,parseFloat(o[2])/100,parseFloat(o[3])/100,parseFloat(e(o[4],"1.0"))):void 0)))},s.packedLength=4,s.pack=function(t,r,n){n=e(n,0),r[n++]=t.red,r[n++]=t.green,r[n++]=t.blue,r[n]=t.alpha},s.unpack=function(r,n,o){return n=e(n,0),t(o)||(o=new s),o.red=r[n++],o.green=r[n++],o.blue=r[n++],o.alpha=r[n],o},s.byteToFloat=function(e){return e/255},s.floatToByte=function(e){return 1===e?255:0|256*e},s.clone=function(e,r){return t(e)?t(r)?(r.red=e.red,r.green=e.green,r.blue=e.blue,r.alpha=e.alpha,r):new s(e.red,e.green,e.blue,e.alpha):void 0},s.equals=function(e,r){return e===r||t(e)&&t(r)&&e.red===r.red&&e.green===r.green&&e.blue===r.blue&&e.alpha===r.alpha},s.equalsArray=function(e,t,r){return e.red===t[r]&&e.green===t[r+1]&&e.blue===t[r+2]&&e.alpha===t[r+3]},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,r){return this===e||t(e)&&Math.abs(this.red-e.red)<=r&&Math.abs(this.green-e.green)<=r&&Math.abs(this.blue-e.blue)<=r&&Math.abs(this.alpha-e.alpha)<=r},s.prototype.toString=function(){return"("+this.red+", "+this.green+", "+this.blue+", "+this.alpha+")"},s.prototype.toCssColorString=function(){var e=s.floatToByte(this.red),t=s.floatToByte(this.green),r=s.floatToByte(this.blue);return 1===this.alpha?"rgb("+e+","+t+","+r+")":"rgba("+e+","+t+","+r+","+this.alpha+")"},s.prototype.toBytes=function(e){var r=s.floatToByte(this.red),n=s.floatToByte(this.green),o=s.floatToByte(this.blue),i=s.floatToByte(this.alpha);return t(e)?(e[0]=r,e[1]=n,e[2]=o,e[3]=i,e):[r,n,o,i]},s.prototype.toRgba=function(){return l[0]=s.floatToByte(this.red),l[1]=s.floatToByte(this.green),l[2]=s.floatToByte(this.blue),l[3]=s.floatToByte(this.alpha),c[0]},s.prototype.brighten=function(e,t){return e=1-e,t.red=1-(1-this.red)*e,t.green=1-(1-this.green)*e,t.blue=1-(1-this.blue)*e,t.alpha=this.alpha,t},s.prototype.darken=function(e,t){return e=1-e,t.red=this.red*e,t.green=this.green*e,t.blue=this.blue*e,t.alpha=this.alpha,t},s.prototype.withAlpha=function(e,t){return s.fromAlpha(this,e,t)},s.ALICEBLUE=o(s.fromCssColorString("#F0F8FF")),s.ANTIQUEWHITE=o(s.fromCssColorString("#FAEBD7")),s.AQUA=o(s.fromCssColorString("#00FFFF")),s.AQUAMARINE=o(s.fromCssColorString("#7FFFD4")),s.AZURE=o(s.fromCssColorString("#F0FFFF")),s.BEIGE=o(s.fromCssColorString("#F5F5DC")),s.BISQUE=o(s.fromCssColorString("#FFE4C4")),s.BLACK=o(s.fromCssColorString("#000000")),s.BLANCHEDALMOND=o(s.fromCssColorString("#FFEBCD")),s.BLUE=o(s.fromCssColorString("#0000FF")),s.BLUEVIOLET=o(s.fromCssColorString("#8A2BE2")),s.BROWN=o(s.fromCssColorString("#A52A2A")),s.BURLYWOOD=o(s.fromCssColorString("#DEB887")),s.CADETBLUE=o(s.fromCssColorString("#5F9EA0")),s.CHARTREUSE=o(s.fromCssColorString("#7FFF00")),s.CHOCOLATE=o(s.fromCssColorString("#D2691E")),s.CORAL=o(s.fromCssColorString("#FF7F50")),s.CORNFLOWERBLUE=o(s.fromCssColorString("#6495ED")),s.CORNSILK=o(s.fromCssColorString("#FFF8DC")),s.CRIMSON=o(s.fromCssColorString("#DC143C")),s.CYAN=o(s.fromCssColorString("#00FFFF")),s.DARKBLUE=o(s.fromCssColorString("#00008B")),s.DARKCYAN=o(s.fromCssColorString("#008B8B")),s.DARKGOLDENROD=o(s.fromCssColorString("#B8860B")),s.DARKGRAY=o(s.fromCssColorString("#A9A9A9")),s.DARKGREEN=o(s.fromCssColorString("#006400")),s.DARKGREY=s.DARKGRAY,s.DARKKHAKI=o(s.fromCssColorString("#BDB76B")),s.DARKMAGENTA=o(s.fromCssColorString("#8B008B")),s.DARKOLIVEGREEN=o(s.fromCssColorString("#556B2F")),s.DARKORANGE=o(s.fromCssColorString("#FF8C00")),s.DARKORCHID=o(s.fromCssColorString("#9932CC")),s.DARKRED=o(s.fromCssColorString("#8B0000")),s.DARKSALMON=o(s.fromCssColorString("#E9967A")),s.DARKSEAGREEN=o(s.fromCssColorString("#8FBC8F")),s.DARKSLATEBLUE=o(s.fromCssColorString("#483D8B")),s.DARKSLATEGRAY=o(s.fromCssColorString("#2F4F4F")),s.DARKSLATEGREY=s.DARKSLATEGRAY,s.DARKTURQUOISE=o(s.fromCssColorString("#00CED1")),s.DARKVIOLET=o(s.fromCssColorString("#9400D3")),s.DEEPPINK=o(s.fromCssColorString("#FF1493")),s.DEEPSKYBLUE=o(s.fromCssColorString("#00BFFF")),s.DIMGRAY=o(s.fromCssColorString("#696969")),s.DIMGREY=s.DIMGRAY,s.DODGERBLUE=o(s.fromCssColorString("#1E90FF")),s.FIREBRICK=o(s.fromCssColorString("#B22222")),s.FLORALWHITE=o(s.fromCssColorString("#FFFAF0")),s.FORESTGREEN=o(s.fromCssColorString("#228B22")),s.FUSCHIA=o(s.fromCssColorString("#FF00FF")),s.GAINSBORO=o(s.fromCssColorString("#DCDCDC")),s.GHOSTWHITE=o(s.fromCssColorString("#F8F8FF")),s.GOLD=o(s.fromCssColorString("#FFD700")),s.GOLDENROD=o(s.fromCssColorString("#DAA520")),s.GRAY=o(s.fromCssColorString("#808080")),s.GREEN=o(s.fromCssColorString("#008000")),s.GREENYELLOW=o(s.fromCssColorString("#ADFF2F")),s.GREY=s.GRAY,s.HONEYDEW=o(s.fromCssColorString("#F0FFF0")),s.HOTPINK=o(s.fromCssColorString("#FF69B4")),s.INDIANRED=o(s.fromCssColorString("#CD5C5C")),s.INDIGO=o(s.fromCssColorString("#4B0082")),s.IVORY=o(s.fromCssColorString("#FFFFF0")),s.KHAKI=o(s.fromCssColorString("#F0E68C")),s.LAVENDER=o(s.fromCssColorString("#E6E6FA")),s.LAVENDAR_BLUSH=o(s.fromCssColorString("#FFF0F5")),s.LAWNGREEN=o(s.fromCssColorString("#7CFC00")),s.LEMONCHIFFON=o(s.fromCssColorString("#FFFACD")),s.LIGHTBLUE=o(s.fromCssColorString("#ADD8E6")),s.LIGHTCORAL=o(s.fromCssColorString("#F08080")),s.LIGHTCYAN=o(s.fromCssColorString("#E0FFFF")),s.LIGHTGOLDENRODYELLOW=o(s.fromCssColorString("#FAFAD2")),s.LIGHTGRAY=o(s.fromCssColorString("#D3D3D3")),s.LIGHTGREEN=o(s.fromCssColorString("#90EE90")),s.LIGHTGREY=s.LIGHTGRAY,s.LIGHTPINK=o(s.fromCssColorString("#FFB6C1")),s.LIGHTSEAGREEN=o(s.fromCssColorString("#20B2AA")),s.LIGHTSKYBLUE=o(s.fromCssColorString("#87CEFA")),s.LIGHTSLATEGRAY=o(s.fromCssColorString("#778899")),s.LIGHTSLATEGREY=s.LIGHTSLATEGRAY,s.LIGHTSTEELBLUE=o(s.fromCssColorString("#B0C4DE")),s.LIGHTYELLOW=o(s.fromCssColorString("#FFFFE0")),s.LIME=o(s.fromCssColorString("#00FF00")),s.LIMEGREEN=o(s.fromCssColorString("#32CD32")),s.LINEN=o(s.fromCssColorString("#FAF0E6")),s.MAGENTA=o(s.fromCssColorString("#FF00FF")),s.MAROON=o(s.fromCssColorString("#800000")),s.MEDIUMAQUAMARINE=o(s.fromCssColorString("#66CDAA")),s.MEDIUMBLUE=o(s.fromCssColorString("#0000CD")),s.MEDIUMORCHID=o(s.fromCssColorString("#BA55D3")),s.MEDIUMPURPLE=o(s.fromCssColorString("#9370DB")),s.MEDIUMSEAGREEN=o(s.fromCssColorString("#3CB371")),s.MEDIUMSLATEBLUE=o(s.fromCssColorString("#7B68EE")),s.MEDIUMSPRINGGREEN=o(s.fromCssColorString("#00FA9A")),s.MEDIUMTURQUOISE=o(s.fromCssColorString("#48D1CC")),s.MEDIUMVIOLETRED=o(s.fromCssColorString("#C71585")),s.MIDNIGHTBLUE=o(s.fromCssColorString("#191970")),s.MINTCREAM=o(s.fromCssColorString("#F5FFFA")),s.MISTYROSE=o(s.fromCssColorString("#FFE4E1")),s.MOCCASIN=o(s.fromCssColorString("#FFE4B5")),s.NAVAJOWHITE=o(s.fromCssColorString("#FFDEAD")),s.NAVY=o(s.fromCssColorString("#000080")),s.OLDLACE=o(s.fromCssColorString("#FDF5E6")),s.OLIVE=o(s.fromCssColorString("#808000")),s.OLIVEDRAB=o(s.fromCssColorString("#6B8E23")),s.ORANGE=o(s.fromCssColorString("#FFA500")),s.ORANGERED=o(s.fromCssColorString("#FF4500")),s.ORCHID=o(s.fromCssColorString("#DA70D6")),s.PALEGOLDENROD=o(s.fromCssColorString("#EEE8AA")),s.PALEGREEN=o(s.fromCssColorString("#98FB98")),s.PALETURQUOISE=o(s.fromCssColorString("#AFEEEE")),s.PALEVIOLETRED=o(s.fromCssColorString("#DB7093")),s.PAPAYAWHIP=o(s.fromCssColorString("#FFEFD5")),s.PEACHPUFF=o(s.fromCssColorString("#FFDAB9")),s.PERU=o(s.fromCssColorString("#CD853F")),s.PINK=o(s.fromCssColorString("#FFC0CB")),s.PLUM=o(s.fromCssColorString("#DDA0DD")),s.POWDERBLUE=o(s.fromCssColorString("#B0E0E6")),s.PURPLE=o(s.fromCssColorString("#800080")),s.RED=o(s.fromCssColorString("#FF0000")),s.ROSYBROWN=o(s.fromCssColorString("#BC8F8F")),s.ROYALBLUE=o(s.fromCssColorString("#4169E1")),s.SADDLEBROWN=o(s.fromCssColorString("#8B4513")),s.SALMON=o(s.fromCssColorString("#FA8072")),s.SANDYBROWN=o(s.fromCssColorString("#F4A460")),s.SEAGREEN=o(s.fromCssColorString("#2E8B57")),s.SEASHELL=o(s.fromCssColorString("#FFF5EE")),s.SIENNA=o(s.fromCssColorString("#A0522D")),s.SILVER=o(s.fromCssColorString("#C0C0C0")),s.SKYBLUE=o(s.fromCssColorString("#87CEEB")),s.SLATEBLUE=o(s.fromCssColorString("#6A5ACD")),s.SLATEGRAY=o(s.fromCssColorString("#708090")),s.SLATEGREY=s.SLATEGRAY,s.SNOW=o(s.fromCssColorString("#FFFAFA")),s.SPRINGGREEN=o(s.fromCssColorString("#00FF7F")),s.STEELBLUE=o(s.fromCssColorString("#4682B4")),s.TAN=o(s.fromCssColorString("#D2B48C")),s.TEAL=o(s.fromCssColorString("#008080")),s.THISTLE=o(s.fromCssColorString("#D8BFD8")),s.TOMATO=o(s.fromCssColorString("#FF6347")),s.TURQUOISE=o(s.fromCssColorString("#40E0D0")),s.VIOLET=o(s.fromCssColorString("#EE82EE")),s.WHEAT=o(s.fromCssColorString("#F5DEB3")),s.WHITE=o(s.fromCssColorString("#FFFFFF")),s.WHITESMOKE=o(s.fromCssColorString("#F5F5F5")),s.YELLOW=o(s.fromCssColorString("#FFFF00")),s.YELLOWGREEN=o(s.fromCssColorString("#9ACD32")),s.TRANSPARENT=o(new s(0,0,0,0)),s +}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,r,n,o){"use strict";if(!n.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(e){switch(e){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new r("componentDatatype is not a valid value.")}},i.fromTypedArray=function(e){return e instanceof Int8Array?i.BYTE:e instanceof Uint8Array?i.UNSIGNED_BYTE:e instanceof Int16Array?i.SHORT:e instanceof Uint16Array?i.UNSIGNED_SHORT:e instanceof Float32Array?i.FLOAT:e instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(e){return t(e)&&(e===i.BYTE||e===i.UNSIGNED_BYTE||e===i.SHORT||e===i.UNSIGNED_SHORT||e===i.FLOAT||e===i.DOUBLE)},i.createTypedArray=function(e,t){switch(e){case i.BYTE:return new Int8Array(t);case i.UNSIGNED_BYTE:return new Uint8Array(t);case i.SHORT:return new Int16Array(t);case i.UNSIGNED_SHORT:return new Uint16Array(t);case i.FLOAT:return new Float32Array(t);case i.DOUBLE:return new Float64Array(t);default:throw new r("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(t,n,o,a){switch(o=e(o,0),a=e(a,(n.byteLength-o)/i.getSizeInBytes(t)),t){case i.BYTE:return new Int8Array(n,o,a);case i.UNSIGNED_BYTE:return new Uint8Array(n,o,a);case i.SHORT:return new Int16Array(n,o,a);case i.UNSIGNED_SHORT:return new Uint16Array(n,o,a);case i.FLOAT:return new Float32Array(n,o,a);case i.DOUBLE:return new Float64Array(n,o,a);default:throw new r("componentDatatype is not a valid value.")}},o(i)}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,r,n,o){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,o.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,n.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(e){var n=-1;for(var o in e.attributes)if(e.attributes.hasOwnProperty(o)&&t(e.attributes[o])&&t(e.attributes[o].values)){var i=e.attributes[o],a=i.values.length/i.componentsPerAttribute;if(n!==a&&-1!==n)throw new r("All attribute lists must have the same number of attributes.");n=a}return n},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o){"use strict";var i=function(t,r){this.x=e(t,0),this.y=e(r,0)};i.fromElements=function(e,r,n){return t(n)?(n.x=e,n.y=r,n):new i(e,r)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r):new i(e.x,e.y):void 0},i.fromCartesian3=i.clone,i.fromCartesian4=i.clone,i.packedLength=2,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n]=t.y},i.unpack=function(r,n,o){return n=e(n,0),t(o)||(o=new i),o.x=r[n++],o.y=r[n],o},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y)},i.minimumComponent=function(e){return Math.min(e.x,e.y)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var a=new i;i.distance=function(e,t){return i.subtract(e,t,a),i.magnitude(a)},i.distanceSquared=function(e,t){return i.subtract(e,t,a),i.magnitudeSquared(a)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var s=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,s),n=i.multiplyByScalar(e,1-r,n),i.add(s,n,n)};var u=new i,c=new i;i.angleBetween=function(e,t){return i.normalize(e,u),i.normalize(t,c),o.acosClamped(i.dot(u,c))};var l=new i;return i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,l);return i.abs(r,r),t=r.x<=r.y?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Y,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&o.equalsEpsilon(e.x,r.x,n,i)&&o.equalsEpsilon(e.y,r.y,n,i)},i.ZERO=n(new i(0,0)),i.UNIT_X=n(new i(1,0)),i.UNIT_Y=n(new i(0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+")"},i}),define("Core/AttributeCompression",["./Cartesian2","./Cartesian3","./defined","./DeveloperError","./Math"],function(e,t,r,n,o){"use strict";var i={};i.octEncode=function(e,t){if(t.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),t.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){var r=t.x,n=t.y;t.x=(1-Math.abs(n))*o.signNotZero(r),t.y=(1-Math.abs(r))*o.signNotZero(n)}return t.x=o.toSNorm(t.x),t.y=o.toSNorm(t.y),t},i.octDecode=function(e,r,n){if(n.x=o.fromSNorm(e),n.y=o.fromSNorm(r),n.z=1-(Math.abs(n.x)+Math.abs(n.y)),n.z<0){var i=n.x;n.x=(1-Math.abs(n.y))*o.signNotZero(i),n.y=(1-Math.abs(i))*o.signNotZero(n.y)}return t.normalize(n,n)},i.octPackFloat=function(e){return 256*e.x+e.y};var a=new e;return i.octEncodeFloat=function(e){return i.octEncode(e,a),i.octPackFloat(a)},i.octDecodeFloat=function(e,t){var r=e/256,n=Math.floor(r),o=256*(r-n);return i.octDecode(n,o,t)},i.octPack=function(e,t,r,n){var o=i.octEncodeFloat(e),s=i.octEncodeFloat(t),u=i.octEncode(r,a);return n.x=65536*u.x+o,n.y=65536*u.y+s,n},i.octUnpack=function(e,t,r,n){var o=e.x/65536,a=Math.floor(o),s=65536*(o-a);o=e.y/65536;var u=Math.floor(o),c=65536*(o-u);i.octDecodeFloat(s,t),i.octDecodeFloat(c,r),i.octDecode(a,u,n)},i.compressTextureCoordinates=function(e){var t=1===e.x?4095:0|4096*e.x,r=1===e.y?4095:0|4096*e.y;return 4096*t+r},i.decompressTextureCoordinates=function(e,t){var r=e/4096;return t.x=Math.floor(r)/4096,t.y=r-Math.floor(r),t},i}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=new t,o=new t,i=new t,a=function(a,s,u,c,l){r(l)||(l=new t);var f,m,h,d,p,y,v,g;r(s.z)?(f=t.subtract(u,s,n),m=t.subtract(c,s,o),h=t.subtract(a,s,i),d=t.dot(f,f),p=t.dot(f,m),y=t.dot(f,h),v=t.dot(m,m),g=t.dot(m,h)):(f=e.subtract(u,s,n),m=e.subtract(c,s,o),h=e.subtract(a,s,i),d=e.dot(f,f),p=e.dot(f,m),y=e.dot(f,h),v=e.dot(m,m),g=e.dot(m,h));var E=1/(d*v-p*p);return l.y=(v*y-p*g)*E,l.z=(d*g-p*y)*E,l.x=1-l.y-l.z,l};return a}),define("Core/EncodedCartesian3",["./Cartesian3","./defined","./DeveloperError"],function(e,t){"use strict";var r=function(){this.high=e.clone(e.ZERO),this.low=e.clone(e.ZERO)};r.encode=function(e,r){t(r)||(r={high:0,low:0});var n;return e>=0?(n=65536*Math.floor(e/65536),r.high=n,r.low=e-n):(n=65536*Math.floor(-e/65536),r.high=-n,r.low=e+n),r};var n={high:0,low:0};r.fromCartesian=function(e,o){t(o)||(o=new r);var i=o.high,a=o.low;return r.encode(e.x,n),i.x=n.high,a.x=n.low,r.encode(e.y,n),i.y=n.high,a.y=n.low,r.encode(e.z,n),i.z=n.high,a.z=n.low,o};var o=new r;return r.writeElements=function(e,t,n){r.fromCartesian(e,o);var i=o.high,a=o.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=a.x,t[n+4]=a.y,t[n+5]=a.z},r}),define("Core/GeometryInstance",["./defaultValue","./defined","./DeveloperError","./Matrix4"],function(e,t,r,n){"use strict";var o=function(t){t=e(t,e.EMPTY_OBJECT),this.geometry=t.geometry,this.modelMatrix=n.clone(e(t.modelMatrix,n.IDENTITY)),this.id=t.id,this.pickPrimitive=t.pickPrimitive,this.attributes=e(t.attributes,{}),this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0};return o}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n){"use strict";var o={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return o.getSizeInBytes=function(e){switch(e){case o.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case o.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case o.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},o.validate=function(t){return e(t)&&(t===o.UNSIGNED_BYTE||t===o.UNSIGNED_SHORT||t===o.UNSIGNED_INT)},o.createTypedArray=function(e,t){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},o.createTypedArrayFromArrayBuffer=function(e,t,r,o){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,r,o):new Uint16Array(t,r,o)},r(o)}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function r(e,r,n){var o=e+r;return t.sign(e)!==t.sign(r)&&Math.abs(o/Math.max(Math.abs(e),Math.abs(r)))<n?0:o}var n={};return n.computeDiscriminant=function(e,t,r){var n=t*t-4*e*r;return n},n.computeRealRoots=function(e,n,o){var i;if(0===e)return 0===n?[]:[-o/n];if(0===n){if(0===o)return[0,0];var a=Math.abs(o),s=Math.abs(e);if(s>a&&a/s<t.EPSILON14)return[0,0];if(a>s&&s/a<t.EPSILON14)return[];if(i=-o/e,0>i)return[];var u=Math.sqrt(i);return[-u,u]}if(0===o)return i=-n/e,0>i?[i,0]:[0,i];var c=n*n,l=4*e*o,f=r(c,-l,t.EPSILON14);if(0>f)return[];var m=-.5*r(n,t.sign(n)*Math.sqrt(f),t.EPSILON14);return n>0?[m/e,o/m]:[o/m,m/e]},n}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function r(e,t,r,n){var o,i,a=e,s=t/3,u=r/3,c=n,l=a*u,f=s*c,m=s*s,h=u*u,d=a*u-m,p=a*c-s*u,y=s*c-h,v=4*d*y-p*p;if(0>v){var g,E,S;m*f>=l*h?(g=a,E=d,S=-2*s*d+a*p):(g=c,E=y,S=-c*p+2*u*y);var C=0>S?-1:1,w=-C*Math.abs(g)*Math.sqrt(-v);i=-S+w;var b=i/2,A=0>b?-Math.pow(-b,1/3):Math.pow(b,1/3),x=i===w?-A:-E/A;return o=0>=E?A+x:-S/(A*A+x*x+E),m*f>=l*h?[(o-s)/a]:[-c/(o+u)]}var T=d,M=-2*s*d+a*p,I=y,O=-c*p+2*u*y,R=Math.sqrt(v),N=Math.sqrt(3)/2,L=Math.abs(Math.atan2(a*R,-M)/3);o=2*Math.sqrt(-T);var P=Math.cos(L);i=o*P;var z=o*(-P/2-N*Math.sin(L)),D=i+z>2*s?i-s:z-s,F=a,_=D/F;L=Math.abs(Math.atan2(c*R,-O)/3),o=2*Math.sqrt(-I),P=Math.cos(L),i=o*P,z=o*(-P/2-N*Math.sin(L));var B=-c,U=2*u>i+z?i+u:z+u,G=B/U,q=F*U,k=-D*U-F*B,V=D*B,W=(u*k-s*V)/(-s*k+u*q);return W>=_?G>=_?G>=W?[_,W,G]:[_,G,W]:[G,_,W]:G>=_?[W,_,G]:G>=W?[W,G,_]:[G,W,_]}var n={};return n.computeDiscriminant=function(e,t,r,n){var o=e*e,i=t*t,a=r*r,s=n*n,u=18*e*t*r*n+i*a-27*o*s-4*(e*a*r+i*t*n);return u},n.computeRealRoots=function(e,n,o,i){var a,s;if(0===e)return t.computeRealRoots(n,o,i);if(0===n){if(0===o){if(0===i)return[0,0,0];s=-i/e;var u=0>s?-Math.pow(-s,1/3):Math.pow(s,1/3);return[u,u,u]}return 0===i?(a=t.computeRealRoots(e,0,o),0===a.Length?[0]:[a[0],0,a[1]]):r(e,0,o,i)}return 0===o?0===i?(s=-n/e,0>s?[s,0,0]:[0,0,s]):r(e,n,0,i):0===i?(a=t.computeRealRoots(e,n,o),0===a.length?[0]:a[1]<=0?[a[0],a[1],0]:a[0]>=0?[0,a[0],a[1]]:[a[0],0,a[1]]):r(e,n,o,i)},n}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,r,n){"use strict";function o(t,o,i,a){var s=t*t,u=o-3*s/8,c=i-o*t/2+s*t/8,l=a-i*t/4+o*s/16-3*s*s/256,f=e.computeRealRoots(1,2*u,u*u-4*l,-c*c);if(f.length>0){var m=-t/4,h=f[f.length-1];if(Math.abs(h)<r.EPSILON14){var d=n.computeRealRoots(1,u,l);if(2===d.length){var p,y=d[0],v=d[1];if(y>=0&&v>=0){var g=Math.sqrt(y),E=Math.sqrt(v);return[m-E,m-g,m+g,m+E]}if(y>=0&&0>v)return p=Math.sqrt(y),[m-p,m+p];if(0>y&&v>=0)return p=Math.sqrt(v),[m-p,m+p]}return[]}if(h>0){var S=Math.sqrt(h),C=(u+h-c/S)/2,w=(u+h+c/S)/2,b=n.computeRealRoots(1,S,C),A=n.computeRealRoots(1,-S,w);return 0!==b.length?(b[0]+=m,b[1]+=m,0!==A.length?(A[0]+=m,A[1]+=m,b[1]<=A[0]?[b[0],b[1],A[0],A[1]]:A[1]<=b[0]?[A[0],A[1],b[0],b[1]]:b[0]>=A[0]&&b[1]<=A[1]?[A[0],b[0],b[1],A[1]]:A[0]>=b[0]&&A[1]<=b[1]?[b[0],A[0],A[1],b[1]]:b[0]>A[0]&&b[0]<A[1]?[A[0],b[0],A[1],b[1]]:[b[0],A[0],b[1],A[1]]):b):0!==A.length?(A[0]+=m,A[1]+=m,A):[]}}return[]}function i(t,o,i,a){var s=i*i,u=o*o,c=t*t,l=-2*o,f=i*t+u-4*a,m=c*a-i*o*t+s,h=e.computeRealRoots(1,l,f,m);if(h.length>0){var d,p,y=h[0],v=o-y,g=v*v,E=t/2,S=v/2,C=g-4*a,w=g+4*Math.abs(a),b=c-4*y,A=c+4*Math.abs(y);if(0>y||b*w>C*A){var x=Math.sqrt(b);d=x/2,p=0===x?0:(t*S-i)/x}else{var T=Math.sqrt(C);d=0===T?0:(t*S-i)/T,p=T/2}var M,I;0===E&&0===d?(M=0,I=0):r.sign(E)===r.sign(d)?(M=E+d,I=y/M):(I=E-d,M=y/I);var O,R;0===S&&0===p?(O=0,R=0):r.sign(S)===r.sign(p)?(O=S+p,R=a/O):(R=S-p,O=a/R);var N=n.computeRealRoots(1,M,O),L=n.computeRealRoots(1,I,R);if(0!==N.length)return 0!==L.length?N[1]<=L[0]?[N[0],N[1],L[0],L[1]]:L[1]<=N[0]?[L[0],L[1],N[0],N[1]]:N[0]>=L[0]&&N[1]<=L[1]?[L[0],N[0],N[1],L[1]]:L[0]>=N[0]&&L[1]<=N[1]?[N[0],L[0],L[1],N[1]]:N[0]>L[0]&&N[0]<L[1]?[L[0],N[0],L[1],N[1]]:[N[0],L[0],N[1],L[1]]:N;if(0!==L.length)return L}return[]}var a={};return a.computeDiscriminant=function(e,t,r,n,o){var i=e*e,a=i*e,s=t*t,u=s*t,c=r*r,l=c*r,f=n*n,m=f*n,h=o*o,d=h*o,p=s*c*f-4*u*m-4*e*l*f+18*e*t*r*m-27*i*f*f+256*a*d+o*(18*u*r*n-4*s*l+16*e*c*c-80*e*t*c*n-6*e*s*f+144*i*r*f)+h*(144*e*s*r-27*s*s-128*i*c-192*i*t*n);return p},a.computeRealRoots=function(t,n,a,s,u){if(Math.abs(t)<r.EPSILON15)return e.computeRealRoots(n,a,s,u);var c=n/t,l=a/t,f=s/t,m=u/t,h=0>c?1:0;switch(h+=0>l?h+1:h,h+=0>f?h+1:h,h+=0>m?h+1:h){case 0:return o(c,l,f,m);case 1:return i(c,l,f,m);case 2:return i(c,l,f,m);case 3:return o(c,l,f,m);case 4:return o(c,l,f,m);case 5:return i(c,l,f,m);case 6:return o(c,l,f,m);case 7:return o(c,l,f,m);case 8:return i(c,l,f,m);case 9:return o(c,l,f,m);case 10:return o(c,l,f,m);case 11:return i(c,l,f,m);case 12:return o(c,l,f,m);case 13:return o(c,l,f,m);case 14:return o(c,l,f,m);case 15:return o(c,l,f,m);default:return void 0}},a}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=function(r,n){n=e.clone(t(n,e.ZERO)),e.equals(n,e.ZERO)||e.normalize(n,n),this.origin=e.clone(t(r,e.ZERO)),this.direction=n};return n.getPoint=function(t,n,o){return r(o)||(o=new e),o=e.multiplyByScalar(t.direction,n,o),e.add(t.origin,o,o)},n}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,r,n,o,i,a,s,u,c){"use strict";function l(t,n,o,a,s){s=r(s,!1);var u,c,l,f,m,h=t.origin,d=t.direction,p=e.subtract(o,n,y),C=e.subtract(a,n,v),w=e.cross(d,C,g),b=e.dot(p,w);if(s){if(b<i.EPSILON6)return void 0;if(u=e.subtract(h,n,E),l=e.dot(u,w),0>l||l>b)return void 0;if(c=e.cross(u,p,S),f=e.dot(d,c),0>f||l+f>b)return void 0;m=e.dot(C,c)/b}else{if(Math.abs(b)<i.EPSILON6)return void 0;var A=1/b;if(u=e.subtract(h,n,E),l=e.dot(u,w)*A,0>l||l>1)return void 0;if(c=e.cross(u,p,S),f=e.dot(d,c)*A,0>f||l+f>1)return void 0;m=e.dot(C,c)*A}return m}function f(e,t,r,n){var o=t*t-4*e*r;if(0>o)return void 0;if(o>0){var i=1/(2*e),a=Math.sqrt(o),s=(-t+a)*i,u=(-t-a)*i;return u>s?(n.root0=s,n.root1=u):(n.root0=u,n.root1=s),n}var c=-t/(2*e);return 0===c?void 0:(n.root0=n.root1=c,n)}function m(t,r,o){n(o)||(o={});var i=t.origin,a=t.direction,s=r.center,u=r.radius*r.radius,c=e.subtract(i,s,g),l=e.dot(a,a),m=2*e.dot(a,c),h=e.magnitudeSquared(c)-u,d=f(l,m,h,w);return n(d)?(o.start=d.root0,o.stop=d.root1,o):void 0}function h(e,t,r){var n=e+t;return i.sign(e)!==i.sign(t)&&Math.abs(n/Math.max(Math.abs(e),Math.abs(t)))<r?0:n}function d(t,r,n,o,c){var l,f=o*o,m=c*c,d=(t[a.COLUMN1ROW1]-t[a.COLUMN2ROW2])*m,p=c*(o*h(t[a.COLUMN1ROW0],t[a.COLUMN0ROW1],i.EPSILON15)+r.y),y=t[a.COLUMN0ROW0]*f+t[a.COLUMN2ROW2]*m+o*r.x+n,v=m*h(t[a.COLUMN2ROW1],t[a.COLUMN1ROW2],i.EPSILON15),g=c*(o*h(t[a.COLUMN2ROW0],t[a.COLUMN0ROW2])+r.z),E=[];if(0===g&&0===v){if(l=s.computeRealRoots(d,p,y),0===l.length)return E;var S=l[0],C=Math.sqrt(Math.max(1-S*S,0));if(E.push(new e(o,c*S,c*-C)),E.push(new e(o,c*S,c*C)),2===l.length){var w=l[1],b=Math.sqrt(Math.max(1-w*w,0));E.push(new e(o,c*w,c*-b)),E.push(new e(o,c*w,c*b))}return E}var A=g*g,x=v*v,T=d*d,M=g*v,I=T+x,O=2*(p*d+M),R=2*y*d+p*p-x+A,N=2*(y*p-M),L=y*y-A;if(0===I&&0===O&&0===R&&0===N)return E;l=u.computeRealRoots(I,O,R,N,L);var P=l.length;if(0===P)return E;for(var z=0;P>z;++z){var D,F=l[z],_=F*F,B=Math.max(1-_,0),U=Math.sqrt(B);D=i.sign(d)===i.sign(y)?h(d*_+y,p*F,i.EPSILON12):i.sign(y)===i.sign(p*F)?h(d*_,p*F+y,i.EPSILON12):h(d*_+p*F,y,i.EPSILON12);var G=h(v*F,g,i.EPSILON15),q=D*G;0>q?E.push(new e(o,c*F,c*U)):q>0?E.push(new e(o,c*F,c*-U)):0!==U?(E.push(new e(o,c*F,c*-U)),E.push(new e(o,c*F,c*U)),++z):E.push(new e(o,c*F,c*U))}return E}var p={};p.rayPlane=function(t,r,o){n(o)||(o=new e);var a=t.origin,s=t.direction,u=r.normal,c=e.dot(u,s);if(Math.abs(c)<i.EPSILON15)return void 0;var l=(-r.distance-e.dot(u,a))/c;return 0>l?void 0:(o=e.multiplyByScalar(s,l,o),e.add(a,o,o))};var y=new e,v=new e,g=new e,E=new e,S=new e;p.rayTriangle=function(t,r,o,i,a,s){var u=l(t,r,o,i,a);return!n(u)||0>u?void 0:(n(s)||(s=new e),e.multiplyByScalar(t.direction,u,s),e.add(t.origin,s,s))};var C=new c;p.lineSegmentTriangle=function(t,r,o,i,a,s,u){var c=C;e.clone(t,c.origin),e.subtract(r,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,o,i,a,s);return!n(f)||0>f||f>e.distance(t,r)?void 0:(n(u)||(u=new e),e.multiplyByScalar(c.direction,f,u),e.add(c.origin,u,u))};var w={root0:0,root1:0};p.raySphere=function(e,t,r){return r=m(e,t,r),!n(r)||r.stop<0?void 0:(r.start=Math.max(r.start,0),r)};var b=new c;p.lineSegmentSphere=function(t,r,o,i){var a=b;e.clone(t,a.origin);var s=e.subtract(r,t,a.direction),u=e.magnitude(s);return e.normalize(s,s),i=m(a,o,i),!n(i)||i.stop<0||i.start>u?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,u),i)};var A=new e,x=new e;p.rayEllipsoid=function(t,r){var n,o,i,a,s,u=r.oneOverRadii,c=e.multiplyComponents(u,t.origin,A),l=e.multiplyComponents(u,t.direction,x),f=e.magnitudeSquared(c),m=e.dot(c,l);if(f>1){if(m>=0)return void 0;var h=m*m;if(n=f-1,o=e.magnitudeSquared(l),i=o*n,i>h)return void 0;if(h>i){a=m*m-i,s=-m+Math.sqrt(a);var d=s/o,p=n/s;return p>d?{start:d,stop:p}:{start:p,stop:d}}var y=Math.sqrt(n/o);return{start:y,stop:y}}return 1>f?(n=f-1,o=e.magnitudeSquared(l),i=o*n,a=m*m-i,s=-m+Math.sqrt(a),{start:0,stop:s/o}):0>m?(o=e.magnitudeSquared(l),{start:0,stop:-m/o}):void 0};var T=new e,M=new e,I=new e,O=new e,R=new e,N=new a,L=new a,P=new a,z=new a,D=new a,F=new a,_=new a,B=new e,U=new e,G=new t;p.grazingAltitudeLocation=function(t,r){var o=t.origin,s=t.direction,u=r.geodeticSurfaceNormal(o,T);if(e.dot(s,u)>=0)return o;var c=n(this.rayEllipsoid(t,r)),l=r.transformPositionToScaledSpace(s,T),f=e.normalize(l,l),m=e.mostOrthogonalAxis(l,O),h=e.normalize(e.cross(m,f,M),M),p=e.normalize(e.cross(f,h,I),I),y=N;y[0]=f.x,y[1]=f.y,y[2]=f.z,y[3]=h.x,y[4]=h.y,y[5]=h.z,y[6]=p.x,y[7]=p.y,y[8]=p.z;var v=a.transpose(y,L),g=a.fromScale(r.radii,P),E=a.fromScale(r.oneOverRadii,z),S=D;S[0]=0,S[1]=-s.z,S[2]=s.y,S[3]=s.z,S[4]=0,S[5]=-s.x,S[6]=-s.y,S[7]=s.x,S[8]=0;var C,w,b=a.multiply(a.multiply(v,E,F),S,F),A=a.multiply(a.multiply(b,g,_),y,_),x=a.multiplyByVector(b,o,R),q=d(A,e.negate(x,T),0,0,1),k=q.length;if(k>0){for(var V=e.clone(e.ZERO,U),W=Number.NEGATIVE_INFINITY,Y=0;k>Y;++Y){C=a.multiplyByVector(g,a.multiplyByVector(y,q[Y],B),B);var H=e.normalize(e.subtract(C,o,O),O),j=e.dot(H,s);j>W&&(W=j,V=e.clone(C,V))}var K=r.cartesianToCartographic(V,G);return W=i.clamp(W,0,1),w=e.magnitude(e.subtract(V,o,O))*Math.sqrt(1-W*W),w=c?-w:w,K.height=w,r.cartographicToCartesian(K,new e)}return void 0};var q=new e;return p.lineSegmentPlane=function(t,r,o,a){n(a)||(a=new e);var s=e.subtract(r,t,q),u=o.normal,c=e.dot(u,s);if(Math.abs(c)<i.EPSILON6)return void 0;var l=e.dot(u,t),f=-(o.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(s,f,a),e.add(t,a,a),a)},p.trianglePlaneIntersection=function(t,r,n,o){var i=o.normal,a=o.distance,s=e.dot(i,t)+a<0,u=e.dot(i,r)+a<0,c=e.dot(i,n)+a<0,l=0;l+=s?1:0,l+=u?1:0,l+=c?1:0;var f,m;if((1===l||2===l)&&(f=new e,m=new e),1===l){if(s)return p.lineSegmentPlane(t,r,o,f),p.lineSegmentPlane(t,n,o,m),{positions:[t,r,n,f,m],indices:[0,3,4,1,2,4,1,4,3]};if(u)return p.lineSegmentPlane(r,n,o,f),p.lineSegmentPlane(r,t,o,m),{positions:[t,r,n,f,m],indices:[1,3,4,2,0,4,2,4,3]};if(c)return p.lineSegmentPlane(n,t,o,f),p.lineSegmentPlane(n,r,o,m),{positions:[t,r,n,f,m],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!s)return p.lineSegmentPlane(r,t,o,f),p.lineSegmentPlane(n,t,o,m),{positions:[t,r,n,f,m],indices:[1,2,4,1,4,3,0,3,4]};if(!u)return p.lineSegmentPlane(n,r,o,f),p.lineSegmentPlane(t,r,o,m),{positions:[t,r,n,f,m],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return p.lineSegmentPlane(t,n,o,f),p.lineSegmentPlane(r,n,o,m),{positions:[t,r,n,f,m],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),define("Core/Tipsify",["./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};return r.calculateACMR=function(r){r=e(r,e.EMPTY_OBJECT);var n=r.indices,o=r.maximumIndex,i=e(r.cacheSize,24),a=n.length;if(!t(o)){o=0;for(var s=0,u=n[s];a>s;)u>o&&(o=u),++s,u=n[s]}for(var c=[],l=0;o+1>l;l++)c[l]=0;for(var f=i+1,m=0;a>m;++m)f-c[n[m]]>i&&(c[n[m]]=f,++f);return(f-i+1)/(a/3)},r.tipsify=function(r){function n(e,t,r,n){for(;t.length>=1;){var o=t[t.length-1];if(t.splice(t.length-1,1),e[o].numLiveTriangles>0)return o}for(;n>i;){if(e[i].numLiveTriangles>0)return++i,i-1;++i}return-1}function o(e,t,r,o,i,a,s){for(var u,c=-1,l=-1,f=0;f<r.length;){var m=r[f];o[m].numLiveTriangles&&(u=0,i-o[m].timeStamp+2*o[m].numLiveTriangles<=t&&(u=i-o[m].timeStamp),(u>l||-1===l)&&(l=u,c=m)),++f}return-1===c?n(o,a,e,s):c}r=e(r,e.EMPTY_OBJECT);var i,a=r.indices,s=r.maximumIndex,u=e(r.cacheSize,24),c=a.length,l=0,f=0,m=a[f],h=c;if(t(s))l=s+1;else{for(;h>f;)m>l&&(l=m),++f,m=a[f];if(-1===l)return 0;++l}for(var d=[],p=0;l>p;p++)d[p]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};f=0;for(var y=0;h>f;)d[a[f]].vertexTriangles.push(y),++d[a[f]].numLiveTriangles,d[a[f+1]].vertexTriangles.push(y),++d[a[f+1]].numLiveTriangles,d[a[f+2]].vertexTriangles.push(y),++d[a[f+2]].numLiveTriangles,++y,f+=3;var v=0,g=u+1;i=1;var E,S,C=[],w=[],b=0,A=[],x=c/3,T=[];for(p=0;x>p;p++)T[p]=!1;for(var M,I;-1!==v;){C=[],S=d[v],I=S.vertexTriangles.length;for(var O=0;I>O;++O)if(y=S.vertexTriangles[O],!T[y]){T[y]=!0,f=y+y+y;for(var R=0;3>R;++R)M=a[f],C.push(M),w.push(M),A[b]=M,++b,E=d[M],--E.numLiveTriangles,g-E.timeStamp>u&&(E.timeStamp=g,++g),++f}v=o(a,u,C,d,g,w,l)}return A},r}),define("Core/GeometryPipeline",["./AttributeCompression","./barycentricCoordinates","./BoundingSphere","./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EncodedCartesian3","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryInstance","./GeometryType","./IndexDatatype","./Intersect","./IntersectionTests","./Math","./Matrix3","./Matrix4","./Plane","./PrimitiveType","./Tipsify"],function(e,t,r,n,o,i,a,s,u,c,l,f,m,h,d,p,y,v,g,E,S,C,w,b,A,x){"use strict";function T(e,t,r,n,o){e[t++]=r,e[t++]=n,e[t++]=n,e[t++]=o,e[t++]=o,e[t]=r}function M(e){for(var t=e.length,r=6*(t/3),n=v.createTypedArray(t,r),o=0,i=0;t>i;i+=3,o+=6)T(n,o,e[i],e[i+1],e[i+2]);return n}function I(e){var t=e.length;if(t>=3){var r=6*(t-2),n=v.createTypedArray(t,r);T(n,0,e[0],e[1],e[2]);for(var o=6,i=3;t>i;++i,o+=6)T(n,o,e[i-1],e[i],e[i-2]);return n}return new Uint16Array}function O(e){if(e.length>0){for(var t=e.length-1,r=6*(t-1),n=v.createTypedArray(t,r),o=e[0],i=0,a=1;t>a;++a,i+=6)T(n,i,o,e[a],e[a+1]);return n}return new Uint16Array}function R(e){var t={};for(var r in e)if(e.hasOwnProperty(r)&&c(e[r])&&c(e[r].values)){var n=e[r];t[r]=new d({componentDatatype:n.componentDatatype,componentsPerAttribute:n.componentsPerAttribute,normalize:n.normalize,values:[]})}return t}function N(e,t,r){for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values))for(var o=t[n],i=0;i<o.componentsPerAttribute;++i)e[n].values.push(o.values[r*o.componentsPerAttribute+i])}function L(e,t){if(c(t))for(var r=t.values,n=r.length,i=0;n>i;i+=3)o.unpack(r,i,it),w.multiplyByPoint(e,it,it),o.pack(it,r,i)}function P(e,t){if(c(t))for(var r=t.values,n=r.length,i=0;n>i;i+=3)o.unpack(r,i,it),C.multiplyByVector(e,it,it),it=o.normalize(it,it),o.pack(it,r,i)}function z(e,t){var r,n=e.length,o={},i=e[0][t].attributes;for(r in i)if(i.hasOwnProperty(r)&&c(i[r])&&c(i[r].values)){for(var a=i[r],u=a.values.length,l=!0,f=1;n>f;++f){var m=e[f][t].attributes[r];if(!c(m)||a.componentDatatype!==m.componentDatatype||a.componentsPerAttribute!==m.componentsPerAttribute||a.normalize!==m.normalize){l=!1;break}u+=m.values.length}l&&(o[r]=new d({componentDatatype:a.componentDatatype,componentsPerAttribute:a.componentsPerAttribute,normalize:a.normalize,values:s.createTypedArray(a.componentDatatype,u)}))}return o}function D(e,t){var n,i,a,s,u=e.length;e[0].modelMatrix;var l,f,m,d=c(e[0][t].indices),p=e[0][t].primitiveType,y=z(e,t);for(n in y)if(y.hasOwnProperty(n))for(l=y[n].values,s=0,i=0;u>i;++i)for(f=e[i][t].attributes[n].values,m=f.length,a=0;m>a;++a)l[s++]=f[a];var g;if(d){var E=0;for(i=0;u>i;++i)E+=e[i][t].indices.length;var S=h.computeNumberOfVertices(new h({attributes:y,primitiveType:A.POINTS})),C=v.createTypedArray(S,E),w=0,b=0;for(i=0;u>i;++i){var x=e[i][t].indices,T=x.length;for(s=0;T>s;++s)C[w++]=b+x[s];b+=h.computeNumberOfVertices(e[i][t])}g=C}var M,I=new o,O=0;for(i=0;u>i;++i){if(M=e[i][t].boundingSphere,!c(M)){I=void 0;break}o.add(M.center,I,I)}if(c(I))for(o.divideByScalar(I,u,I),i=0;u>i;++i){M=e[i][t].boundingSphere;var R=o.magnitude(o.subtract(M.center,I,ut))+M.radius;R>O&&(O=R)}return new h({attributes:y,indices:g,primitiveType:p,boundingSphere:c(I)?new r(I,O):void 0})}function F(e){if(c(e.indices))return e;for(var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function _(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=1,r[1]=0,r[2]=2;for(var n=3,o=3;t>o;++o)r[n++]=o-1,r[n++]=0,r[n++]=o;return e.indices=r,e.primitiveType=A.TRIANGLES,e}function B(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=0,r[1]=1,r[2]=2,t>3&&(r[3]=0,r[4]=2,r[5]=3);for(var n=6,o=3;t-1>o;o+=2)r[n++]=o,r[n++]=o-1,r[n++]=o+1,t>o+2&&(r[n++]=o,r[n++]=o+1,r[n++]=o+2);return e.indices=r,e.primitiveType=A.TRIANGLES,e}function U(e){if(c(e.indices))return e;for(var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function G(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,2*(t-1));r[0]=0,r[1]=1;for(var n=2,o=2;t>o;++o)r[n++]=o-1,r[n++]=o;return e.indices=r,e.primitiveType=A.LINES,e}function q(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,2*t);r[0]=0,r[1]=1;for(var n=2,o=2;t>o;++o)r[n++]=o-1,r[n++]=o;return r[n++]=t-1,r[n]=0,e.indices=r,e.primitiveType=A.LINES,e}function k(e){switch(e.primitiveType){case A.TRIANGLE_FAN:return _(e);case A.TRIANGLE_STRIP:return B(e);case A.TRIANGLES:return F(e);case A.LINE_STRIP:return G(e);case A.LINE_LOOP:return q(e);case A.LINES:return U(e)}return e}function V(e,t){Math.abs(e.y)<S.EPSILON6&&(e.y=t?-S.EPSILON6:S.EPSILON6)}function W(e,t,r){if(0!==e.y&&0!==t.y&&0!==r.y)return V(e,e.y<0),V(t,t.y<0),V(r,r.y<0),void 0;var n,o=Math.abs(e.y),i=Math.abs(t.y),a=Math.abs(r.y);n=o>i?o>a?S.sign(e.y):S.sign(r.y):i>a?S.sign(t.y):S.sign(r.y);var s=0>n;V(e,s),V(t,s),V(r,s)}function Y(e,t,r,n){o.add(e,o.multiplyByScalar(o.subtract(t,e,St),e.y/(e.y-t.y),St),r),o.clone(r,n),V(r,!0),V(n,!1)}function H(e,t,r){if(e.x>=0||t.x>=0||r.x>=0)return void 0;W(e,t,r);var n=e.y<0,o=t.y<0,i=r.y<0,a=0;a+=n?1:0,a+=o?1:0,a+=i?1:0;var s=xt.indices;1===a?(s[1]=3,s[2]=4,s[5]=6,s[7]=6,s[8]=5,n?(Y(e,t,Ct,bt),Y(e,r,wt,At),s[0]=0,s[3]=1,s[4]=2,s[6]=1):o?(Y(t,r,Ct,bt),Y(t,e,wt,At),s[0]=1,s[3]=2,s[4]=0,s[6]=2):i&&(Y(r,e,Ct,bt),Y(r,t,wt,At),s[0]=2,s[3]=0,s[4]=1,s[6]=0)):2===a&&(s[2]=4,s[4]=4,s[5]=3,s[7]=5,s[8]=6,n?o?i||(Y(r,e,Ct,bt),Y(r,t,wt,At),s[0]=0,s[1]=1,s[3]=0,s[6]=2):(Y(t,r,Ct,bt),Y(t,e,wt,At),s[0]=2,s[1]=0,s[3]=2,s[6]=1):(Y(e,t,Ct,bt),Y(e,r,wt,At),s[0]=1,s[1]=2,s[3]=1,s[6]=0));var u=xt.positions;return u[0]=e,u[1]=t,u[2]=r,u.length=3,(1===a||2===a)&&(u[3]=Ct,u[4]=wt,u[5]=bt,u[6]=At,u.length=7),xt}function j(e,t){var n=e.attributes;if(0===n.position.values.length)return void 0;for(var o in n)if(n.hasOwnProperty(o)&&c(n[o])&&c(n[o].values)){var i=n[o];i.values=s.createTypedArray(i.componentDatatype,i.values)}var a=h.computeNumberOfVertices(e);return e.indices=v.createTypedArray(a,e.indices),t&&(e.boundingSphere=r.fromVertices(n.position.values)),e}function K(e){var t=e.attributes,r={};for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values)){var o=t[n];r[n]=new d({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new h({attributes:r,indices:[],primitiveType:e.primitiveType})}function Z(e,t,r){var n=c(e.geometry.boundingSphere);t=j(t,n),r=j(r,n),c(r)&&!c(t)?e.geometry=r:!c(r)&&c(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=r,e.geometry=void 0)}function X(e,r,i,a,s,u,l,f,m,h,d){if(c(u)||c(l)||c(f)||c(m)){var p=o.fromArray(s,3*e,Tt),y=o.fromArray(s,3*r,Mt),v=o.fromArray(s,3*i,It),g=t(a,p,y,v,Ot);if(c(u)){var E=o.fromArray(u,3*e,Tt),S=o.fromArray(u,3*r,Mt),C=o.fromArray(u,3*i,It);o.multiplyByScalar(E,g.x,E),o.multiplyByScalar(S,g.y,S),o.multiplyByScalar(C,g.z,C);var w=o.add(E,S,E);o.add(w,C,w),o.normalize(w,w),o.pack(w,h.normal.values,3*d)}if(c(l)){var b=o.fromArray(l,3*e,Tt),A=o.fromArray(l,3*r,Mt),x=o.fromArray(l,3*i,It);o.multiplyByScalar(b,g.x,b),o.multiplyByScalar(A,g.y,A),o.multiplyByScalar(x,g.z,x);var T=o.add(b,A,b);o.add(T,x,T),o.normalize(T,T),o.pack(T,h.binormal.values,3*d)}if(c(f)){var M=o.fromArray(f,3*e,Tt),I=o.fromArray(f,3*r,Mt),O=o.fromArray(f,3*i,It);o.multiplyByScalar(M,g.x,M),o.multiplyByScalar(I,g.y,I),o.multiplyByScalar(O,g.z,O);var R=o.add(M,I,M);o.add(R,O,R),o.normalize(R,R),o.pack(R,h.tangent.values,3*d)}if(c(m)){var N=n.fromArray(m,2*e,Rt),L=n.fromArray(m,2*r,Nt),P=n.fromArray(m,2*i,Lt);n.multiplyByScalar(N,g.x,N),n.multiplyByScalar(L,g.y,L),n.multiplyByScalar(P,g.z,P);var z=n.add(N,L,N);n.add(z,P,z),n.pack(z,h.st.values,2*d)}}}function Q(e,t,r,n,o,i){var a=e.position.values.length/3;if(-1!==o){var s=n[o],u=r[s];return-1===u?(r[s]=a,e.position.values.push(i.x,i.y,i.z),t.push(a),a):(t.push(u),u)}return e.position.values.push(i.x,i.y,i.z),t.push(a),a}function J(e){var t,r,n,i,a,s=e.geometry,u=s.attributes,l=u.position.values,f=c(u.normal)?u.normal.values:void 0,m=c(u.binormal)?u.binormal.values:void 0,h=c(u.tangent)?u.tangent.values:void 0,d=c(u.st)?u.st.values:void 0,p=s.indices,y=K(s),v=K(s),g=[]; +g.length=l.length/3;var E=[];for(E.length=l.length/3,a=0;a<g.length;++a)g[a]=-1,E[a]=-1;var S=p.length;for(a=0;S>a;a+=3){var C=p[a],w=p[a+1],b=p[a+2],A=o.fromArray(l,3*C),x=o.fromArray(l,3*w),T=o.fromArray(l,3*b),M=H(A,x,T);if(c(M)&&M.positions.length>3)for(var I=M.positions,O=M.indices,R=O.length,N=0;R>N;++N){var L=O[N],P=I[L];P.y<0?(t=v.attributes,r=v.indices,n=g):(t=y.attributes,r=y.indices,n=E),i=Q(t,r,n,p,3>L?a+L:-1,P),X(C,w,b,P,l,f,m,h,d,t,i)}else c(M)&&(A=M.positions[0],x=M.positions[1],T=M.positions[2]),A.y<0?(t=v.attributes,r=v.indices,n=g):(t=y.attributes,r=y.indices,n=E),i=Q(t,r,n,p,a,A),X(C,w,b,A,l,f,m,h,d,t,i),i=Q(t,r,n,p,a+1,x),X(C,w,b,x,l,f,m,h,d,t,i),i=Q(t,r,n,p,a+2,T),X(C,w,b,T,l,f,m,h,d,t,i)}Z(e,v,y)}function $(e){var t,r=e.geometry,n=r.attributes,i=n.position.values,a=r.indices,s=K(r),u=K(r),l=a.length,f=[];f.length=i.length/3;var m=[];for(m.length=i.length/3,t=0;t<f.length;++t)f[t]=-1,m[t]=-1;for(t=0;l>t;t+=2){var h=a[t],d=a[t+1],p=o.fromArray(i,3*h,Tt),y=o.fromArray(i,3*d,Mt);Math.abs(p.y)<S.EPSILON6&&(p.y=p.y<0?-S.EPSILON6:S.EPSILON6),Math.abs(y.y)<S.EPSILON6&&(y.y=y.y<0?-S.EPSILON6:S.EPSILON6);var v=s.attributes,g=s.indices,C=m,w=u.attributes,b=u.indices,A=f,x=E.lineSegmentPlane(p,y,Pt,It);if(c(x)){var T=o.multiplyByScalar(o.UNIT_Y,5*S.EPSILON9,zt);p.y<0&&(o.negate(T,T),v=u.attributes,g=u.indices,C=f,w=s.attributes,b=s.indices,A=m);var M=o.add(x,T,Dt);Q(v,g,C,a,t,p),Q(v,g,C,a,-1,M),o.negate(T,T),o.add(x,T,M),Q(w,b,A,a,-1,M),Q(w,b,A,a,t+1,y)}else{var I,O,R;p.y<0?(I=u.attributes,O=u.indices,R=f):(I=s.attributes,O=s.indices,R=m),Q(I,O,R,a,t,p),Q(I,O,R,a,t+1,y)}}Z(e,u,s)}function et(e){var t=e.geometry,r=t.attributes,a=r.position.values,s=r.prevPosition.values,u=r.nextPosition.values,l=r.expandAndWidth.values;t.indices;var f,m,h,d=c(r.st)?r.st.values:void 0,p=c(r.color)?r.color.values:void 0,y=K(t),v=K(t),g=a.length/3;for(f=0;g>f;f+=4){var C=f,w=f+1,b=f+2,A=f+3,x=o.fromArray(a,3*C,Bt),T=o.fromArray(a,3*w,Ut),M=o.fromArray(a,3*b,Gt),I=o.fromArray(a,3*A,qt);Math.abs(x.y)<S.EPSILON6&&(x.y=S.EPSILON6*(M.y<0?-1:1),T.y=x.y),Math.abs(M.y)<S.EPSILON6&&(M.y=S.EPSILON6*(x.y<0?-1:1),I.y=M.y);var O=y.attributes,R=y.indices,N=v.attributes,L=v.indices,P=E.lineSegmentPlane(x,M,Pt,kt);if(c(P)){var z=o.multiplyByScalar(o.UNIT_Y,5*S.EPSILON9,Vt);x.y<0&&(o.negate(z,z),O=v.attributes,R=v.indices,N=y.attributes,L=y.indices);var D=o.add(P,z,Wt);for(O.position.values.push(x.x,x.y,x.z,T.x,T.y,T.z),O.position.values.push(D.x,D.y,D.z),O.position.values.push(D.x,D.y,D.z),o.negate(z,z),o.add(P,z,D),N.position.values.push(D.x,D.y,D.z),N.position.values.push(D.x,D.y,D.z),N.position.values.push(M.x,M.y,M.z,I.x,I.y,I.z),m=3*C;3*C+6>m;++m)O.prevPosition.values.push(s[m]);for(O.prevPosition.values.push(x.x,x.y,x.z,x.x,x.y,x.z),N.prevPosition.values.push(x.x,x.y,x.z,x.x,x.y,x.z),m=3*b;3*b+6>m;++m)N.prevPosition.values.push(s[m]);for(m=3*C;3*C+6>m;++m)O.nextPosition.values.push(u[m]);for(O.nextPosition.values.push(M.x,M.y,M.z,M.x,M.y,M.z),N.nextPosition.values.push(M.x,M.y,M.z,M.x,M.y,M.z),m=3*b;3*b+6>m;++m)N.nextPosition.values.push(u[m]);var F=n.fromArray(l,2*C,Ft),_=Math.abs(F.y);O.expandAndWidth.values.push(-1,_,1,_),O.expandAndWidth.values.push(-1,-_,1,-_),N.expandAndWidth.values.push(-1,_,1,_),N.expandAndWidth.values.push(-1,-_,1,-_);var B=o.magnitudeSquared(o.subtract(P,x,qt));if(B/=o.magnitudeSquared(o.subtract(M,x,qt)),c(p)){var U=i.fromArray(p,4*C,Yt),G=i.fromArray(p,4*b,Yt),q=S.lerp(U.x,G.x,B),k=S.lerp(U.y,G.y,B),V=S.lerp(U.z,G.z,B),W=S.lerp(U.w,G.w,B);for(m=4*C;4*C+8>m;++m)O.color.values.push(p[m]);for(O.color.values.push(q,k,V,W),O.color.values.push(q,k,V,W),N.color.values.push(q,k,V,W),N.color.values.push(q,k,V,W),m=4*b;4*b+8>m;++m)N.color.values.push(p[m])}if(c(d)){var Y=n.fromArray(d,2*C,Ft),H=n.fromArray(d,2*(f+3),_t),j=S.lerp(Y.x,H.x,B);for(m=2*C;2*C+4>m;++m)O.st.values.push(d[m]);for(O.st.values.push(j,Y.y),O.st.values.push(j,H.y),N.st.values.push(j,Y.y),N.st.values.push(j,H.y),m=2*b;2*b+4>m;++m)N.st.values.push(d[m])}h=O.position.values.length/3-4,R.push(h,h+2,h+1),R.push(h+1,h+2,h+3),h=N.position.values.length/3-4,L.push(h,h+2,h+1),L.push(h+1,h+2,h+3)}else{var X,Q;for(x.y<0?(X=v.attributes,Q=v.indices):(X=y.attributes,Q=y.indices),X.position.values.push(x.x,x.y,x.z),X.position.values.push(T.x,T.y,T.z),X.position.values.push(M.x,M.y,M.z),X.position.values.push(I.x,I.y,I.z),m=3*f;3*f+12>m;++m)X.prevPosition.values.push(s[m]),X.nextPosition.values.push(u[m]);for(m=2*f;2*f+8>m;++m)X.expandAndWidth.values.push(l[m]),c(d)&&X.st.values.push(d[m]);if(c(p))for(m=4*f;4*f+16>m;++m)X.color.values.push(p[m]);h=X.position.values.length/3-4,Q.push(h,h+2,h+1),Q.push(h+1,h+2,h+3)}}Z(e,v,y)}var tt={};tt.toWireframe=function(e){var t=e.indices;if(c(t)){switch(e.primitiveType){case A.TRIANGLES:e.indices=M(t);break;case A.TRIANGLE_STRIP:e.indices=I(t);break;case A.TRIANGLE_FAN:e.indices=O(t);break;default:throw new l("geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.")}e.primitiveType=A.LINES}return e},tt.createLineSegmentsForVectors=function(e,t,n){t=u(t,"normal"),n=u(n,1e4);for(var o=e.attributes.position.values,i=e.attributes[t].values,a=o.length,l=new Float64Array(2*a),f=0,m=0;a>m;m+=3)l[f++]=o[m],l[f++]=o[m+1],l[f++]=o[m+2],l[f++]=o[m]+i[m]*n,l[f++]=o[m+1]+i[m+1]*n,l[f++]=o[m+2]+i[m+2]*n;var p,y=e.boundingSphere;return c(y)&&(p=new r(y.center,y.radius+n)),new h({attributes:{position:new d({componentDatatype:s.DOUBLE,componentsPerAttribute:3,values:l})},primitiveType:A.LINES,boundingSphere:p})},tt.createAttributeLocations=function(e){var t,r=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","binormal","tangent","compressedAttributes"],n=e.attributes,o={},i=0,a=r.length;for(t=0;a>t;++t){var s=r[t];c(n[s])&&(o[s]=i++)}for(var u in n)n.hasOwnProperty(u)&&!c(o[u])&&(o[u]=i++);return o},tt.reorderForPreVertexCache=function(e){var t=h.computeNumberOfVertices(e),r=e.indices;if(c(r)){for(var n=new Int32Array(t),o=0;t>o;o++)n[o]=-1;for(var i,a=r,u=a.length,l=v.createTypedArray(t,u),f=0,m=0,d=0;u>f;)i=n[a[f]],-1!==i?l[m]=i:(i=a[f],n[i]=d,l[m]=d,++d),++f,++m;e.indices=l;var p=e.attributes;for(var y in p)if(p.hasOwnProperty(y)&&c(p[y])&&c(p[y].values)){for(var g=p[y],E=g.values,S=0,C=g.componentsPerAttribute,w=s.createTypedArray(g.componentDatatype,d*C);t>S;){var b=n[S];if(-1!==b)for(o=0;C>o;o++)w[C*b+o]=E[C*S+o];++S}g.values=w}}return e},tt.reorderForPostVertexCache=function(e,t){var r=e.indices;if(e.primitiveType===A.TRIANGLES&&c(r)){for(var n=r.length,o=0,i=0;n>i;i++)r[i]>o&&(o=r[i]);e.indices=x.tipsify({indices:r,maximumIndex:o,cacheSize:t})}return e},tt.fitToUnsignedShortIndices=function(e){var t=[],r=h.computeNumberOfVertices(e);if(c(e.indices)&&r>S.SIXTY_FOUR_KILOBYTES){var n,o=[],i=[],a=0,s=R(e.attributes),u=e.indices,l=u.length;e.primitiveType===A.TRIANGLES?n=3:e.primitiveType===A.LINES?n=2:e.primitiveType===A.POINTS&&(n=1);for(var f=0;l>f;f+=n){for(var m=0;n>m;++m){var d=u[f+m],p=o[d];c(p)||(p=a++,o[d]=p,N(s,e.attributes,d)),i.push(p)}a+n>S.SIXTY_FOUR_KILOBYTES&&(t.push(new h({attributes:s,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),o=[],i=[],a=0,s=R(e.attributes))}0!==i.length&&t.push(new h({attributes:s,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var rt=new o,nt=new a;tt.projectTo2D=function(e,t,r,n,i){var a=e.attributes[t];i=c(i)?i:new m;for(var u=i.ellipsoid,f=a.values,h=new Float64Array(f.length),p=0,y=0;y<f.length;y+=3){var v=o.fromArray(f,y,rt),g=u.cartesianToCartographic(v,nt);if(!c(g))throw new l("Could not project point ("+v.x+", "+v.y+", "+v.z+") to 2D.");var E=i.project(g,rt);h[p++]=E.x,h[p++]=E.y,h[p++]=E.z}return e.attributes[r]=a,e.attributes[n]=new d({componentDatatype:s.DOUBLE,componentsPerAttribute:3,values:h}),delete e.attributes[t],e};var ot={high:0,low:0};tt.encodeAttribute=function(e,t,r,n){for(var o=e.attributes[t],i=o.values,a=i.length,u=new Float32Array(a),c=new Float32Array(a),l=0;a>l;++l)f.encode(i[l],ot),u[l]=ot.high,c[l]=ot.low;var m=o.componentsPerAttribute;return e.attributes[r]=new d({componentDatatype:s.FLOAT,componentsPerAttribute:m,values:u}),e.attributes[n]=new d({componentDatatype:s.FLOAT,componentsPerAttribute:m,values:c}),delete e.attributes[t],e};var it=new o,at=new w,st=new C;tt.transformToWorldCoordinates=function(e){var t=e.modelMatrix;if(w.equals(t,w.IDENTITY))return e;var n=e.geometry.attributes;L(t,n.position),L(t,n.prevPosition),L(t,n.nextPosition),(c(n.normal)||c(n.binormal)||c(n.tangent))&&(w.inverse(t,at),w.transpose(at,at),w.getRotation(at,st),P(st,n.normal),P(st,n.binormal),P(st,n.tangent));var o=e.geometry.boundingSphere;return c(o)&&(e.geometry.boundingSphere=r.transform(o,t,o)),e.modelMatrix=w.clone(w.IDENTITY),e};var ut=new o;tt.combineInstances=function(e){for(var t=[],r=[],n=e.length,o=0;n>o;++o){var i=e[o];c(i.geometry)?t.push(i):r.push(i)}var a=[];return t.length>0&&a.push(D(t,"geometry")),r.length>0&&(a.push(D(r,"westHemisphereGeometry")),a.push(D(r,"eastHemisphereGeometry"))),a};var ct=new o,lt=new o,ft=new o,mt=new o;tt.computeNormal=function(e){for(var t=e.indices,r=e.attributes,n=r.position.values,i=r.position.values.length/3,a=t.length,u=new Array(i),c=new Array(a/3),l=new Array(a),f=0;i>f;f++)u[f]={indexOffset:0,count:0,currentCount:0};var m=0;for(f=0;a>f;f+=3){var h=t[f],p=t[f+1],y=t[f+2],v=3*h,g=3*p,E=3*y;lt.x=n[v],lt.y=n[v+1],lt.z=n[v+2],ft.x=n[g],ft.y=n[g+1],ft.z=n[g+2],mt.x=n[E],mt.y=n[E+1],mt.z=n[E+2],u[h].count++,u[p].count++,u[y].count++,o.subtract(ft,lt,ft),o.subtract(mt,lt,mt),c[m]=o.cross(ft,mt,new o),m++}var S=0;for(f=0;i>f;f++)u[f].indexOffset+=S,S+=u[f].count;m=0;var C;for(f=0;a>f;f+=3){C=u[t[f]];var w=C.indexOffset+C.currentCount;l[w]=m,C.currentCount++,C=u[t[f+1]],w=C.indexOffset+C.currentCount,l[w]=m,C.currentCount++,C=u[t[f+2]],w=C.indexOffset+C.currentCount,l[w]=m,C.currentCount++,m++}var b=new Float32Array(3*i);for(f=0;i>f;f++){var A=3*f;if(C=u[f],C.count>0){for(o.clone(o.ZERO,ct),m=0;m<C.count;m++)o.add(ct,c[l[C.indexOffset+m]],ct);o.normalize(ct,ct),b[A]=ct.x,b[A+1]=ct.y,b[A+2]=ct.z}else b[A]=0,b[A+1]=0,b[A+2]=1}return e.attributes.normal=new d({componentDatatype:s.FLOAT,componentsPerAttribute:3,values:b}),e};var ht=new o,dt=new o,pt=new o;tt.computeBinormalAndTangent=function(e){e.attributes;for(var t=e.indices,r=e.attributes.position.values,n=e.attributes.normal.values,i=e.attributes.st.values,a=e.attributes.position.values.length/3,u=t.length,c=new Array(3*a),l=0;l<c.length;l++)c[l]=0;var f,m,h;for(l=0;u>l;l+=3){var p=t[l],y=t[l+1],v=t[l+2];f=3*p,m=3*y,h=3*v;var g=2*p,E=2*y,S=2*v,C=r[f],w=r[f+1],b=r[f+2],A=i[g],x=i[g+1],T=i[E+1]-x,M=i[S+1]-x,I=1/((i[E]-A)*M-(i[S]-A)*T),O=(M*(r[m]-C)-T*(r[h]-C))*I,R=(M*(r[m+1]-w)-T*(r[h+1]-w))*I,N=(M*(r[m+2]-b)-T*(r[h+2]-b))*I;c[f]+=O,c[f+1]+=R,c[f+2]+=N,c[m]+=O,c[m+1]+=R,c[m+2]+=N,c[h]+=O,c[h+1]+=R,c[h+2]+=N}var L=new Float32Array(3*a),P=new Float32Array(3*a);for(l=0;a>l;l++){f=3*l,m=f+1,h=f+2;var z=o.fromArray(n,f,ht),D=o.fromArray(c,f,pt),F=o.dot(z,D);o.multiplyByScalar(z,F,dt),o.normalize(o.subtract(D,dt,D),D),P[f]=D.x,P[m]=D.y,P[h]=D.z,o.normalize(o.cross(z,D,D),D),L[f]=D.x,L[m]=D.y,L[h]=D.z}return e.attributes.tangent=new d({componentDatatype:s.FLOAT,componentsPerAttribute:3,values:P}),e.attributes.binormal=new d({componentDatatype:s.FLOAT,componentsPerAttribute:3,values:L}),e};var yt=new n,vt=new o,gt=new o,Et=new o;tt.compressVertices=function(t){var r=t.attributes.normal,i=t.attributes.st;if(!c(r)&&!c(i))return t;var a,u,l,f,m=t.attributes.tangent,h=t.attributes.binormal;c(r)&&(a=r.values),c(i)&&(u=i.values),c(m)&&(l=m.values),h&&(f=h.values);var p=c(a)?a.length:u.length,y=c(a)?3:2,v=p/y,g=v,E=c(u)&&c(a)?2:1;E+=c(l)||c(f)?1:0,g*=E;for(var S=new Float32Array(g),C=0,w=0;v>w;++w){c(u)&&(n.fromArray(u,2*w,yt),S[C++]=e.compressTextureCoordinates(yt));var b=3*w;c(a)&&c(l)&&c(f)?(o.fromArray(a,b,vt),o.fromArray(l,b,gt),o.fromArray(f,b,Et),e.octPack(vt,gt,Et,yt),S[C++]=yt.x,S[C++]=yt.y):(c(a)&&(o.fromArray(a,b,vt),S[C++]=e.octEncodeFloat(vt)),c(l)&&(o.fromArray(l,b,vt),S[C++]=e.octEncodeFloat(vt)),c(f)&&(o.fromArray(f,b,vt),S[C++]=e.octEncodeFloat(vt)))}return t.attributes.compressedAttributes=new d({componentDatatype:s.FLOAT,componentsPerAttribute:E,values:S}),c(a)&&delete t.attributes.normal,c(u)&&delete t.attributes.st,c(l)&&delete t.attributes.tangent,c(f)&&delete t.attributes.binormal,t};var St=new o,Ct=new o,wt=new o,bt=new o,At=new o,xt={positions:new Array(7),indices:new Array(9)},Tt=new o,Mt=new o,It=new o,Ot=new o,Rt=new n,Nt=new n,Lt=new n,Pt=b.fromPointNormal(o.ZERO,o.UNIT_Y),zt=new o,Dt=new o,Ft=new n,_t=new n,Bt=new o,Ut=new o,Gt=new o,qt=new o,kt=new o,Vt=new o,Wt=new o,Yt=new i;return new i,tt.splitLongitude=function(e){var t=e.geometry,n=t.boundingSphere;if(c(n)){var o=n.center.x-n.radius;if(o>0||r.intersectPlane(n,b.ORIGIN_ZX_PLANE)!==g.INTERSECTING)return e}if(t.geometryType!==y.NONE)switch(t.geometryType){case y.POLYLINES:et(e);break;case y.TRIANGLES:J(e);break;case y.LINES:$(e)}else k(t),t.primitiveType===A.TRIANGLES?J(e):t.primitiveType===A.LINES&&$(e);return e},tt}),define("Core/WebMercatorProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,r,n,o,i,a,s){"use strict";var u=function(e){this._ellipsoid=r(e,a.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return o(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.mercatorAngleToGeodeticLatitude=function(e){return s.PI_OVER_TWO-2*Math.atan(Math.exp(-e))},u.geodeticLatitudeToMercatorAngle=function(e){e>u.MaximumLatitude?e=u.MaximumLatitude:e<-u.MaximumLatitude&&(e=-u.MaximumLatitude);var t=Math.sin(e);return.5*Math.log((1+t)/(1-t))},u.MaximumLatitude=u.mercatorAngleToGeodeticLatitude(Math.PI),u.prototype.project=function(t,r){var o=this._semimajorAxis,i=t.longitude*o,a=u.geodeticLatitudeToMercatorAngle(t.latitude)*o,s=t.height;return n(r)?(r.x=i,r.y=a,r.z=s,r):new e(i,a,s)},u.prototype.unproject=function(e,r){var o=this._oneOverSemimajorAxis,i=e.x*o,a=u.mercatorAngleToGeodeticLatitude(e.y*o),s=e.z;return n(r)?(r.longitude=i,r.latitude=a,r.height=s,r):new t(i,a,s)},u}),define("Scene/PrimitivePipeline",["../Core/BoundingSphere","../Core/Color","../Core/ComponentDatatype","../Core/defaultValue","../Core/defined","../Core/DeveloperError","../Core/Ellipsoid","../Core/FeatureDetection","../Core/GeographicProjection","../Core/Geometry","../Core/GeometryAttribute","../Core/GeometryAttributes","../Core/GeometryPipeline","../Core/IndexDatatype","../Core/Matrix4","../Core/WebMercatorProjection"],function(e,t,r,n,o,i,a,s,u,c,l,f,m,h,d,p){"use strict";function y(e,t,r){var n,o=!r,i=e.length;if(!o&&i>1){var a=e[0].modelMatrix;for(n=1;i>n;++n)if(!d.equals(a,e[n].modelMatrix)){o=!0;break}}if(o)for(n=0;i>n;++n)m.transformToWorldCoordinates(e[n]);else d.multiplyTransformation(t,e[0].modelMatrix,t)}function v(e,n){var o=e.attributes,i=o.position,a=4*(i.values.length/i.componentsPerAttribute);o.pickColor=new l({componentDatatype:r.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0,values:new Uint8Array(a)});for(var s=t.floatToByte(n.red),u=t.floatToByte(n.green),c=t.floatToByte(n.blue),f=t.floatToByte(n.alpha),m=o.pickColor.values,h=0;a>h;h+=4)m[h]=s,m[h+1]=u,m[h+2]=c,m[h+3]=f}function g(e,t){for(var r=e.length,n=0;r>n;++n){var i=e[n],a=t[n];o(i.geometry)?v(i.geometry,a):(v(i.westHemisphereGeometry,a),v(i.eastHemisphereGeometry,a))}}function E(e){var t,r=e.length,n=[],i=e[0].attributes;for(t in i)if(i.hasOwnProperty(t)){for(var a=i[t],s=!0,u=1;r>u;++u){var c=e[u].attributes[t];if(!o(c)||a.componentDatatype!==c.componentDatatype||a.componentsPerAttribute!==c.componentsPerAttribute||a.normalize!==c.normalize){s=!1;break}}s&&n.push(t)}return n}function S(e,t,n){for(var o=c.computeNumberOfVertices(t),i=n.length,a=0;i>a;++a){for(var s=n[a],u=e[s],f=u.componentDatatype,m=u.value,h=m.length,d=r.createTypedArray(f,o*h),p=0;o>p;++p)d.set(m,p*h);t.attributes[s]=new l({componentDatatype:f,componentsPerAttribute:h,normalize:u.normalize,values:d})}}function C(e,t){for(var r=e.length,n=0;r>n;++n){var i=e[n],a=i.attributes;o(i.geometry)?S(a,i.geometry,t):(S(a,i.westHemisphereGeometry,t),S(a,i.eastHemisphereGeometry,t))}}function w(t){var n,i,a=t.instances,s=t.pickIds,u=t.projection,c=t.elementIndexUintSupported,l=t.scene3DOnly,f=t.allowPicking,h=t.vertexCacheOptimize,d=t.compressVertices,p=t.modelMatrix,v=a.length;if(a[0].geometry.primitiveType,y(a,p,l),!l)for(n=0;v>n;++n)m.splitLongitude(a[n]);f&&g(a,s);var S=E(a);if(C(a,S),h)for(n=0;v>n;++n){var w=a[n];o(w.geometry)?(m.reorderForPostVertexCache(w.geometry),m.reorderForPreVertexCache(w.geometry)):(m.reorderForPostVertexCache(w.westHemisphereGeometry),m.reorderForPreVertexCache(w.westHemisphereGeometry),m.reorderForPostVertexCache(w.eastHemisphereGeometry),m.reorderForPreVertexCache(w.eastHemisphereGeometry))}var b=m.combineInstances(a);for(v=b.length,n=0;v>n;++n){i=b[n];var A,x=i.attributes;if(l)for(A in x)x.hasOwnProperty(A)&&x[A].componentDatatype===r.DOUBLE&&m.encodeAttribute(i,A,A+"3DHigh",A+"3DLow");else for(A in x)if(x.hasOwnProperty(A)&&x[A].componentDatatype===r.DOUBLE){var T=A+"3D",M=A+"2D";m.projectTo2D(i,A,T,M,u),o(i.boundingSphere)&&"position"===A&&(i.boundingSphereCV=e.fromVertices(i.attributes.position2D.values)),m.encodeAttribute(i,T,T+"High",T+"Low"),m.encodeAttribute(i,M,M+"High",M+"Low")}d&&m.compressVertices(i)}if(!c){var I=[];for(v=b.length,n=0;v>n;++n)i=b[n],I=I.concat(m.fitToUnsignedShortIndices(i));b=I}return b}function b(e,t,n){for(var o=[],i=e.attributes,a=n.length,s=0;a>s;++s){var u=n[s],c=i[u],l=c.componentDatatype;l===r.DOUBLE&&(l=r.FLOAT);var f=r.createTypedArray(l,c.values);o.push({index:t[u],componentDatatype:l,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize,values:f}),delete i[u]}return o}function A(e,t,r,i,a,s,u,l,f){var m=c.computeNumberOfVertices(t);o(u[e])||(u[e]={boundingSphere:t.boundingSphere,boundingSphereCV:t.boundingSphereCV});for(var h=i.length,d=0;h>d;++d)for(var p=i[d],y=a[p],v=m;v>0;){for(var g,E=n(f[p],0),S=s[E],C=S.length,w=0;C>w&&(g=S[w],g.index!==y);++w);o(u[e][p])||(u[e][p]={dirty:!1,valid:!0,value:r[p].value,indices:[]});var b,A=g.values.length/g.componentsPerAttribute,x=n(l[p],0);A>x+v?(b=v,u[e][p].indices.push({attribute:g,offset:x,count:b}),l[p]=x+v):(b=A-x,u[e][p].indices.push({attribute:g,offset:x,count:b}),l[p]=0,f[p]=E+1),v-=b}}function x(e,t,r,n,i){var a,s,u,c=[],l=e.length,f={},m={};for(a=0;l>a;++a)s=e[a],u=s.attributes,o(s.geometry)&&A(a,s.geometry,u,i,n,r,c,f,m);for(a=0;l>a;++a)s=e[a],u=s.attributes,o(s.westHemisphereGeometry)&&A(a,s.westHemisphereGeometry,u,i,n,r,c,f,m);for(a=0;l>a;++a)s=e[a],u=s.attributes,o(s.eastHemisphereGeometry)&&A(a,s.eastHemisphereGeometry,u,i,n,r,c,f,m);for(l=t.length,a=0;l>a;++a){s=t[a],u=s.attributes;var h={};c.push(h);for(var d=i.length,p=0;d>p;++p){var y=i[p];h[y]={dirty:!1,valid:!1,value:u[y].value,indices:[]}}}return c}function T(e,t){var r=e.attributes;for(var n in r)if(r.hasOwnProperty(n)){var i=r[n];o(i)&&o(i.values)&&t.push(i.values.buffer)}o(e.indices)&&t.push(e.indices.buffer)}function M(e,t){for(var r=e.length,n=0;r>n;++n)T(e[n],t)}function I(e,t){for(var r=e.length,n=0;r>n;++n)for(var o=e[n],i=o.length,a=0;i>a;++a)t.push(o[a].values.buffer)}function O(t){for(var r=1,n=t.length,i=0;n>i;i++){var a=t[i];if(++r,o(a)){var s=a.attributes;r+=6+2*e.packedLength+(o(a.indices)?a.indices.length:0);for(var u in s)if(s.hasOwnProperty(u)&&o(s[u])){var c=s[u];r+=5+c.values.length}}}return r}function R(e,t){for(var r=e.length,n=new Uint32Array(e.length),o=0;r>o;++o)n[o]=e[o].toRgba();return t.push(n.buffer),n}function N(e){for(var r=e.length,n=new Array(r),o=0;r>o;o++)n[o]=t.fromRgba(e[o]);return n}function L(e){for(var t=e.length,r=1+17*t,n=0;t>n;n++){var i=e[n].attributes;for(var a in i)if(i.hasOwnProperty(a)&&o(i[a])){var s=i[a];r+=5+s.value.length}}return r}function P(e,t){var r=new Float64Array(L(e)),n={},i=[],a=e.length,s=0;r[s++]=a;for(var u=0;a>u;u++){var c=e[u];d.pack(c.modelMatrix,r,s),s+=d.packedLength;var l=c.attributes,f=[];for(var m in l)l.hasOwnProperty(m)&&o(l[m])&&(f.push(m),o(n[m])||(n[m]=i.length,i.push(m)));r[s++]=f.length;for(var h=0;h<f.length;h++){var p=f[h],y=l[p];r[s++]=n[p],r[s++]=y.componentDatatype,r[s++]=y.componentsPerAttribute,r[s++]=y.normalize,r[s++]=y.value.length,r.set(y.value,s),s+=y.value.length}}return t.push(r.buffer),{stringTable:i,packedData:r}}function z(e){for(var t=e.packedData,n=e.stringTable,o=new Array(t[0]),i=0,a=1;a<t.length;){var s=d.unpack(t,a);a+=d.packedLength;for(var u={},c=t[a++],l=0;c>l;l++){for(var f=n[t[a++]],m=t[a++],h=t[a++],p=0!==t[a++],y=t[a++],v=r.createTypedArray(m,y),g=0;y>g;g++)v[g]=t[a++];u[f]={componentDatatype:m,componentsPerAttribute:h,normalize:p,value:v}}o[i++]={attributes:u,modelMatrix:s}}return o}function D(t){for(var r=t.length,n=1+r,i=0;r>i;i++){var a=t[i];n+=2,n+=o(a.boundingSphere)?e.packedLength:0,n+=o(a.boundingSphereCV)?e.packedLength:0;for(var s in a)if(a.hasOwnProperty(s)&&o(a[s])&&"boundingSphere"!==s&&"boundingSphereCV"!==s){var u=a[s];n+=4+3*u.indices.length+u.value.length}}return n}function F(t,r){var n=new Float64Array(D(t)),i=[],a=[],s={},u=t.length,c=0;n[c++]=u;for(var l=0;u>l;l++){var f=t[l],m=f.boundingSphere,h=o(m);n[c++]=h?1:0,h&&(e.pack(m,n,c),c+=e.packedLength),m=f.boundingSphereCV,h=o(m),n[c++]=h?1:0,h&&(e.pack(m,n,c),c+=e.packedLength);var d=[];for(var p in f)f.hasOwnProperty(p)&&o(f[p])&&"boundingSphere"!==p&&"boundingSphereCV"!==p&&(d.push(p),o(s[p])||(s[p]=i.length,i.push(p)));n[c++]=d.length;for(var y=0;y<d.length;y++){var v=d[y],g=f[v];n[c++]=s[v],n[c++]=g.valid?1:0;var E=g.indices,S=E.length;n[c++]=S;for(var C=0;S>C;C++){var w=E[C];n[c++]=w.count,n[c++]=w.offset;var b=a.indexOf(w.attribute);-1===b&&(b=a.length,a.push(w.attribute)),n[c++]=b}n[c++]=g.value.length,n.set(g.value,c),c+=g.value.length}}return r.push(n.buffer),{stringTable:i,packedData:n,attributeTable:a}}function _(t){for(var n=t.stringTable,o=t.attributeTable,i=t.packedData,a=new Array(i[0]),s=0,u=1,c=i.length;c>u;){var l={},f=1===i[u++];f&&(l.boundingSphere=e.unpack(i,u),u+=e.packedLength),f=1===i[u++],f&&(l.boundingSphereCV=e.unpack(i,u),u+=e.packedLength);for(var m=i[u++],h=0;m>h;h++){for(var d=n[i[u++]],p=1===i[u++],y=i[u++],v=y>0?new Array(y):void 0,g=0;y>g;g++){var E={};E.count=i[u++],E.offset=i[u++],E.attribute=o[i[u++]],v[g]=E}for(var S=i[u++],C=p?r.createTypedArray(v[0].attribute.componentDatatype,S):new Array(S),w=0;S>w;w++)C[w]=i[u++];l[d]={dirty:!1,valid:p,indices:v,value:C}}a[s++]=l}return a}if(!s.supportsTypedArrays())return{};var B={};return B.combineGeometry=function(e){var t,r,n,i,a,s=e.instances,u=e.invalidInstances;if(s.length>0){t=w(e),r=m.createAttributeLocations(t[0]),i=E(s),n=[],a=t.length;for(var c=0;a>c;++c){var l=t[c];n.push(b(l,r,i))}}i=o(i)?i:E(u);var f=x(s,u,n,r,i);return{geometries:t,modelMatrix:e.modelMatrix,attributeLocations:r,vaAttributes:n,vaAttributeLocations:f,validInstancesIndices:e.validInstancesIndices,invalidInstancesIndices:e.invalidInstancesIndices}},B.packCreateGeometryResults=function(t,r){var n=new Float64Array(O(t)),i=[],a={},s=t.length,u=0;n[u++]=s;for(var c=0;s>c;c++){var l=t[c],f=o(l);if(n[u++]=f?1:0,f){n[u++]=l.primitiveType,n[u++]=l.geometryType;var m=o(l.boundingSphere)?1:0;n[u++]=m,m&&e.pack(l.boundingSphere,n,u),u+=e.packedLength;var h=o(l.boundingSphereCV)?1:0;n[u++]=h,h&&e.pack(l.boundingSphereCV,n,u),u+=e.packedLength;var d=l.attributes,p=[];for(var y in d)d.hasOwnProperty(y)&&o(d[y])&&(p.push(y),o(a[y])||(a[y]=i.length,i.push(y)));n[u++]=p.length;for(var v=0;v<p.length;v++){var g=p[v],E=d[g];n[u++]=a[g],n[u++]=E.componentDatatype,n[u++]=E.componentsPerAttribute,n[u++]=E.normalize?1:0,n[u++]=E.values.length,n.set(E.values,u),u+=E.values.length}var S=o(l.indices)?l.indices.length:0;n[u++]=S,S>0&&(n.set(l.indices,u),u+=S)}}return r.push(n.buffer),{stringTable:i,packedData:n}},B.unpackCreateGeometryResults=function(t){for(var n,o=t.stringTable,i=t.packedData,a=new Array(i[0]),s=0,u=1;u<i.length;){var m=1===i[u++];if(m){var d,p,y=i[u++],v=i[u++],g=1===i[u++];g&&(d=e.unpack(i,u)),u+=e.packedLength;var E=1===i[u++];E&&(p=e.unpack(i,u)),u+=e.packedLength;var S,C,w,b=new f,A=i[u++];for(n=0;A>n;n++){var x=o[i[u++]],T=i[u++];w=i[u++];var M=0!==i[u++];S=i[u++],C=r.createTypedArray(T,S);for(var I=0;S>I;I++)C[I]=i[u++];b[x]=new l({componentDatatype:T,componentsPerAttribute:w,normalize:M,values:C})}var O;if(S=i[u++],S>0){var R=C.length/w;for(O=h.createTypedArray(R,S),n=0;S>n;n++)O[n]=i[u++]}a[s++]=new c({primitiveType:y,geometryType:v,boundingSphere:d,indices:O,attributes:b})}else a[s++]=void 0}return a},B.packCombineGeometryParameters=function(e,t){for(var r=e.createGeometryResults,n=r.length,o=0;n>o;o++)t.push(r[o].packedData.buffer);var i;return e.allowPicking&&(i=R(e.pickIds,t)),{createGeometryResults:e.createGeometryResults,packedInstances:P(e.instances,t),packedPickIds:i,ellipsoid:e.ellipsoid,isGeographic:e.projection instanceof u,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,allowPicking:e.allowPicking,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix}},B.unpackCombineGeometryParameters=function(e){for(var t=z(e.packedInstances),r=e.allowPicking,n=r?N(e.packedPickIds):void 0,i=e.createGeometryResults,s=i.length,c=0,l=[],f=[],m=[],h=[],y=[],v=0;s>v;v++)for(var g=B.unpackCreateGeometryResults(i[v]),E=g.length,S=0;E>S;S++){var C=g[S],w=t[c];o(C)?(w.geometry=C,l.push(w),m.push(c),r&&y.push(n[c])):(f.push(w),h.push(c)),++c}var b=a.clone(e.ellipsoid),A=e.isGeographic?new u(b):new p(b);return{instances:l,invalidInstances:f,validInstancesIndices:m,invalidInstancesIndices:h,pickIds:y,ellipsoid:b,projection:A,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,allowPicking:e.allowPicking,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:d.clone(e.modelMatrix)}},B.packCombineGeometryResults=function(e,t){return o(e.geometries)&&(M(e.geometries,t),I(e.vaAttributes,t)),{geometries:e.geometries,attributeLocations:e.attributeLocations,vaAttributes:e.vaAttributes,packedVaAttributeLocations:F(e.vaAttributeLocations,t),modelMatrix:e.modelMatrix,validInstancesIndices:e.validInstancesIndices,invalidInstancesIndices:e.invalidInstancesIndices}},B.unpackCombineGeometryResults=function(e){return{geometries:e.geometries,attributeLocations:e.attributeLocations,vaAttributes:e.vaAttributes,perInstanceAttributeLocations:_(e.packedVaAttributeLocations,e.vaAttributes),modelMatrix:e.modelMatrix}},B}),define("Core/formatError",["./defined"],function(e){"use strict";var t=function(t){var r,n=t.name,o=t.message;r=e(n)&&e(o)?n+": "+o:t.toString();var i=t.stack;return e(i)&&(r+="\n"+i),r};return t}),define("Workers/createTaskProcessorWorker",["../Core/defaultValue","../Core/defined","../Core/formatError"],function(e,t,r){"use strict";var n=function(n){var o,i=[],a={id:void 0,result:void 0,error:void 0};return function(s){var u=s.data;i.length=0,a.id=u.id,a.error=void 0,a.result=void 0;try{a.result=n(u.parameters,i)}catch(c){a.error=c instanceof Error?{name:c.name,message:c.message,stack:c.stack}:c}t(o)||(o=e(self.webkitPostMessage,self.postMessage)),u.canTransferArrayBuffer||(i.length=0);try{o(a,i)}catch(c){a.result=void 0,a.error="postMessage failed with error: "+r(c)+"\n with responseMessage: "+JSON.stringify(a),o(a)}}};return n}),define("Workers/combineGeometry",["../Scene/PrimitivePipeline","./createTaskProcessorWorker"],function(e,t){"use strict";function r(t,r){var n=e.unpackCombineGeometryParameters(t),o=e.combineGeometry(n);return e.packCombineGeometryResults(o,r)}return t(r)})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createBoxGeometry.js b/libs/Cesium/Workers/createBoxGeometry.js new file mode 100644 index 0000000000..fd9943c8f3 --- /dev/null +++ b/libs/Cesium/Workers/createBoxGeometry.js @@ -0,0 +1,60 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var t=function(t){return void 0!==t};return t}),define("Core/freezeObject",["./defined"],function(t){"use strict";var e=Object.freeze;return t(e)||(e=function(t){return t}),e}),define("Core/defaultValue",["./freezeObject"],function(t){"use strict";var e=function(t,e){return void 0!==t?t:e};return e.EMPTY_OBJECT=t({}),e}),define("Core/DeveloperError",["./defined"],function(t){"use strict";var e=function(t){this.name="DeveloperError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e.throwInstantiationError=function(){throw new e("This function defines an interface and should not be called directly.")},e}),define("ThirdParty/mersenne-twister",[],function(){var t=function(t){void 0==t&&(t=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(t)};return t.prototype.init_genrand=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&t)>>>16)<<16)+1812433253*(65535&t)+this.mti,this.mt[this.mti]>>>=0}},t.prototype.genrand_int32=function(){var t,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^t>>>1^e[1&t];for(;n<this.N-1;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^t>>>1^e[1&t];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^e[1&t],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=2636928640&t<<7,t^=4022730752&t<<15,t^=t>>>18,t>>>0},t.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},t}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(t,e){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(t){return t>0?1:0>t?-1:0},n.signNotZero=function(t){return 0>t?-1:1},n.toSNorm=function(t){return Math.round(255*(.5*n.clamp(t,-1,1)+.5))},n.fromSNorm=function(t){return 2*(n.clamp(t,0,255)/255)-1},n.sinh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e-n)},n.cosh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e+n)},n.lerp=function(t,e,n){return(1-n)*t+n*e},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(t){return t*n.RADIANS_PER_DEGREE},n.toDegrees=function(t){return t*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(t){var e=n.TWO_PI,r=t-Math.floor(t/e)*e;return r<-Math.PI?r+e:r>=Math.PI?r-e:r},n.negativePiToPi=function(t){return n.zeroToTwoPi(t+n.PI)-n.PI},n.zeroToTwoPi=function(t){var e=n.mod(t,n.TWO_PI);return Math.abs(e)<n.EPSILON14&&Math.abs(t)>n.EPSILON14?n.TWO_PI:e},n.mod=function(t,e){return(t%e+e)%e},n.equalsEpsilon=function(t,n,r,i){i=e(i,r);var a=Math.abs(t-n);return i>=a||a<=r*Math.max(Math.abs(t),Math.abs(n))};var r=[1];n.factorial=function(t){var e=r.length;if(t>=e)for(var n=r[e-1],i=e;t>=i;i++)r.push(n*i);return r[t]},n.incrementWrap=function(t,n,r){return r=e(r,0),++t,t>n&&(t=r),t},n.isPowerOfTwo=function(t){return 0!==t&&0===(t&t-1)},n.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t},n.clamp=function(t,e,n){return e>t?e:t>n?n:t};var i=new t;return n.setRandomNumberSeed=function(e){i=new t(e)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(t){return Math.acos(n.clamp(t,-1,1))},n.asinClamped=function(t){return Math.asin(n.clamp(t,-1,1))},n.chordLength=function(t,e){return 2*e*Math.sin(.5*t)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0)};a.fromSpherical=function(n,r){e(r)||(r=new a);var i=n.clock,o=n.cone,u=t(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(t,n,r,i){return e(i)?(i.x=t,i.y=n,i.z=r,i):new a(t,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n):new a(t.x,t.y,t.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r]=e.z},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){a.normalize(t,s),a.normalize(e,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Z,e):n.y<=n.z?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_Z,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)},a.cross=function(t,e,n){var r=t.x,i=t.y,a=t.z,o=e.x,u=e.y,s=e.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(t,e,n,r,o){var u=i.toRadians(t),s=i.toRadians(e);return a.fromRadians(u,s,n,r,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=t(i,0);var s=e(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),e(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o++)r[o]=i.toRadians(t[o]);return a.fromRadiansArray(r,e,n)},a.fromRadiansArray=function(t,n,r){var i=t.length;e(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=t[o],s=t[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o+=3)r[o]=i.toRadians(t[o]),r[o+1]=i.toRadians(t[o+1]),r[o+2]=t[o+2];return a.fromRadiansArrayHeights(r,e,n)},a.fromRadiansArrayHeights=function(t,n,r){var i=t.length;e(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=t[o],s=t[o+1],c=t[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.longitude=t(e,0),this.latitude=t(n,0),this.height=t(r,0)};return a.fromRadians=function(n,r,i,o){return i=t(i,0),e(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(t,e,n,r){return t=i.toRadians(t),e=i.toRadians(e),a.fromRadians(t,e,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.longitude=t.longitude,n.latitude=t.latitude,n.height=t.height,n):new a(t.longitude,t.latitude,t.height):void 0},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.longitude===n.longitude&&t.latitude===n.latitude&&t.height===n.height},a.equalsEpsilon=function(t,n,r){return t===n||e(t)&&e(n)&&Math.abs(t.longitude-n.longitude)<=r&&Math.abs(t.latitude-n.latitude)<=r&&Math.abs(t.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e){return a.equalsEpsilon(this,t,e)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(t){"use strict";var e={},n=function(n,r){t(e[n])||(e[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(t){"use strict";var e=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(t){return!1}}(),n=Object.defineProperties;return e&&t(n)||(n=function(t){return t}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";function s(e,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),e._radii=new t(r,i,a),e._radiiSquared=new t(r*r,i*i,a*a),e._radiiToTheFourth=new t(r*r*r*r,i*i*i*i,a*a*a*a),e._oneOverRadii=new t(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),e._oneOverRadiiSquared=new t(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),e._minimumRadius=Math.min(r,i,a),e._maximumRadius=Math.max(r,i,a),e._centerToleranceSquared=u.EPSILON1}var c=function(t,e,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,t,e,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(e,n){if(!r(e))return void 0;var i=e._radii;return r(n)?(t.clone(i,n._radii),t.clone(e._radiiSquared,n._radiiSquared),t.clone(e._radiiToTheFourth,n._radiiToTheFourth),t.clone(e._oneOverRadii,n._oneOverRadii),t.clone(e._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=e._minimumRadius,n._maximumRadius=e._maximumRadius,n._centerToleranceSquared=e._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(t,e){return r(e)||(e=new c),r(t)?(s(e,t.x,t.y,t.z),e):e},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(t){return c.clone(this,t)},c.packedLength=t.packedLength,c.pack=function(e,r,i){i=n(i,0),t.pack(e._radii,r,i)},c.unpack=function(e,r,i){r=n(r,0);var a=t.unpack(e,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=t.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(e,n){var i=e.longitude,a=e.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new t),n.x=u,n.y=s,n.z=c,t.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(e,n){return r(n)||(n=new t),n=t.multiplyComponents(e,this._oneOverRadiiSquared,n),t.normalize(n,n)};var l=new t,f=new t;c.prototype.cartographicToCartesian=function(e,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(e,i),t.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(t.dot(i,a));return t.divideByScalar(a,o,a),t.multiplyByScalar(i,e.height,i),r(n)||(n=new t),t.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;i++)e[i]=this.cartographicToCartesian(t[i],e[i]);return e};var h=new t,d=new t,m=new t;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,d);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=t.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(t.dot(s,n))*t.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new e(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;++i)e[i]=this.cartesianToCartographic(t[i],e[i]);return e};var y=new t,p=new t;return c.prototype.scaleToGeodeticSurface=function(e,n){var i=e.x,a=e.y,o=e.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,m=o*o*f*f,v=h+d+m,w=Math.sqrt(1/v),x=t.multiplyByScalar(e,w,y);if(v<this._centerToleranceSquared)return isFinite(w)?t.clone(x,n):void 0;var g=this._oneOverRadiiSquared,E=g.x,z=g.y,M=g.z,S=p;S.x=2*x.x*E,S.y=2*x.y*z,S.z=2*x.z*M;var O,T,_,I,N,R,b,A,P,C,L,q=(1-w)*t.magnitude(e)/(.5*t.magnitude(S)),U=0;do{q-=U,_=1/(1+q*E),I=1/(1+q*z),N=1/(1+q*M),R=_*_,b=I*I,A=N*N,P=R*_,C=b*I,L=A*N,O=h*R+d*b+m*A-1,T=h*P*E+d*C*z+m*L*M;var D=-2*T;U=O/D}while(Math.abs(O)>u.EPSILON12);return r(n)?(n.x=i*_,n.y=a*I,n.z=o*N,n):new t(i*_,a*I,o*N)},c.prototype.scaleToGeocentricSurface=function(e,n){r(n)||(n=new t);var i=e.x,a=e.y,o=e.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return t.multiplyByScalar(e,s,n)},c.prototype.transformPositionToScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._radii,n)},c.prototype.equals=function(e){return this===e||r(e)&&t.equals(this._radii,e._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(t,e,n,r,i,a,o){"use strict";var u=function(t){this._ellipsoid=n(t,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(e,n){var i=this._semimajorAxis,a=e.longitude*i,o=e.latitude*i,u=e.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new t(a,o,u)},u.prototype.unproject=function(t,n){var i=this._oneOverSemimajorAxis,a=t.x*i,o=t.y*i,u=t.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new e(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(t){"use strict";var e={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return t(e)}),define("Core/Interval",["./defaultValue"],function(t){"use strict";var e=function(e,n){this.start=t(e,0),this.stop=t(n,0)};return e}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)};a.fromElements=function(t,n,r,i,o){return e(o)?(o.x=t,o.y=n,o.z=r,o.w=i,o):new a(t,n,r,i)},a.fromColor=function(t,n){return e(n)?(n.x=t.red,n.y=t.green,n.z=t.blue,n.w=t.alpha,n):new a(t.red,t.green,t.blue,t.alpha)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n.w=t.w,n):new a(t.x,t.y,t.z,t.w):void 0},a.packedLength=4,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z,t.w)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z,t.w)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n.w=Math.min(t.w,e.w),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n.w=Math.max(t.w,e.w),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e.w=t.w/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z+t.w*e.w},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n.w=t.w*e.w,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n.w=t.w+e.w,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n.w=t.w-e.w,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n.w=t.w*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n.w=t.w/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e.w=-t.w,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e.w=Math.abs(t.w),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,s);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z&&t.w===n.w},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]&&t.w===e[n+3]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)&&i.equalsEpsilon(t.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a){"use strict";function o(t){for(var e=0,n=0;9>n;++n){var r=t[n];e+=r*r}return Math.sqrt(e)}function u(t){for(var e=0,n=0;3>n;++n){var r=t[c.getElementIndex(d[n],h[n])];e+=2*r*r}return Math.sqrt(e)}function s(t,e){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(t[c.getElementIndex(d[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=h[i],m=d[i];if(Math.abs(t[c.getElementIndex(m,f)])>n){var y,p=t[c.getElementIndex(m,m)],v=t[c.getElementIndex(f,f)],w=t[c.getElementIndex(m,f)],x=(p-v)/2/w;y=0>x?-1/(-x+Math.sqrt(1+x*x)):1/(x+Math.sqrt(1+x*x)),s=1/Math.sqrt(1+y*y),l=y*s}return e=c.clone(c.IDENTITY,e),e[c.getElementIndex(f,f)]=e[c.getElementIndex(m,m)]=s,e[c.getElementIndex(m,f)]=l,e[c.getElementIndex(f,m)]=-l,e}var c=function(t,n,r,i,a,o,u,s,c){this[0]=e(t,0),this[1]=e(i,0),this[2]=e(u,0),this[3]=e(n,0),this[4]=e(a,0),this[5]=e(s,0),this[6]=e(r,0),this[7]=e(o,0),this[8]=e(c,0)};c.packedLength=9,c.pack=function(t,n,r){r=e(r,0),n[r++]=t[0],n[r++]=t[1],n[r++]=t[2],n[r++]=t[3],n[r++]=t[4],n[r++]=t[5],n[r++]=t[6],n[r++]=t[7],n[r++]=t[8]},c.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r++],i[1]=t[r++],i[2]=t[r++],i[3]=t[r++],i[4]=t[r++],i[5]=t[r++],i[6]=t[r++],i[7]=t[r++],i[8]=t[r++],i},c.clone=function(t,e){return n(t)?n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):new c(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]):void 0},c.fromArray=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r],i[1]=t[r+1],i[2]=t[r+2],i[3]=t[r+3],i[4]=t[r+4],i[5]=t[r+5],i[6]=t[r+6],i[7]=t[r+7],i[8]=t[r+8],i},c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},c.fromQuaternion=function(t,e){var r=t.x*t.x,i=t.x*t.y,a=t.x*t.z,o=t.x*t.w,u=t.y*t.y,s=t.y*t.z,l=t.y*t.w,f=t.z*t.z,h=t.z*t.w,d=t.w*t.w,m=r-u-f+d,y=2*(i-h),p=2*(a+l),v=2*(i+h),w=-r+u-f+d,x=2*(s-o),g=2*(a-l),E=2*(s+o),z=-r-u+f+d;return n(e)?(e[0]=m,e[1]=v,e[2]=g,e[3]=y,e[4]=w,e[5]=E,e[6]=p,e[7]=x,e[8]=z,e):new c(m,y,p,v,w,x,g,E,z)},c.fromScale=function(t,e){return n(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=t.y,e[5]=0,e[6]=0,e[7]=0,e[8]=t.z,e):new c(t.x,0,0,0,t.y,0,0,0,t.z)},c.fromUniformScale=function(t,e){return n(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=t,e[5]=0,e[6]=0,e[7]=0,e[8]=t,e):new c(t,0,0,0,t,0,0,0,t)},c.fromCrossProduct=function(t,e){return n(e)?(e[0]=0,e[1]=t.z,e[2]=-t.y,e[3]=-t.z,e[4]=0,e[5]=t.x,e[6]=t.y,e[7]=-t.x,e[8]=0,e):new c(0,-t.z,t.y,t.z,0,-t.x,-t.y,t.x,0)},c.fromRotationX=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=r,e[5]=i,e[6]=0,e[7]=-i,e[8]=r,e):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=0,e[2]=-i,e[3]=0,e[4]=1,e[5]=0,e[6]=i,e[7]=0,e[8]=r,e):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=i,e[2]=0,e[3]=-i,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8]]},c.getElementIndex=function(t,e){return 3*t+e},c.getColumn=function(t,e,n){var r=3*e,i=t[r],a=t[r+1],o=t[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=3*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(t,e,n){var r=t[e],i=t[e+3],a=t[e+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+3]=n.y,r[e+6]=n.z,r};var l=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],l)),n.y=t.magnitude(t.fromElements(e[3],e[4],e[5],l)),n.z=t.magnitude(t.fromElements(e[6],e[7],e[8],l)),n};var f=new t;c.getMaximumScale=function(e){return c.getScale(e,f),t.maximumComponent(f)},c.multiply=function(t,e,n){var r=t[0]*e[0]+t[3]*e[1]+t[6]*e[2],i=t[1]*e[0]+t[4]*e[1]+t[7]*e[2],a=t[2]*e[0]+t[5]*e[1]+t[8]*e[2],o=t[0]*e[3]+t[3]*e[4]+t[6]*e[5],u=t[1]*e[3]+t[4]*e[4]+t[7]*e[5],s=t[2]*e[3]+t[5]*e[4]+t[8]*e[5],c=t[0]*e[6]+t[3]*e[7]+t[6]*e[8],l=t[1]*e[6]+t[4]*e[7]+t[7]*e[8],f=t[2]*e[6]+t[5]*e[7]+t[8]*e[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[3]*i+t[6]*a,u=t[1]*r+t[4]*i+t[7]*a,s=t[2]*r+t[5]*i+t[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n},c.multiplyByScale=function(t,e,n){return n[0]=t[0]*e.x,n[1]=t[1]*e.x,n[2]=t[2]*e.x,n[3]=t[3]*e.y,n[4]=t[4]*e.y,n[5]=t[5]*e.y,n[6]=t[6]*e.z,n[7]=t[7]*e.z,n[8]=t[8]*e.z,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e},c.transpose=function(t,e){var n=t[0],r=t[3],i=t[6],a=t[1],o=t[4],u=t[7],s=t[2],c=t[5],l=t[8];return e[0]=n,e[1]=r,e[2]=i,e[3]=a,e[4]=o,e[5]=u,e[6]=s,e[7]=c,e[8]=l,e};var h=[1,0,0],d=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(t,e){var r=a.EPSILON20,i=10,l=0,f=0;n(e)||(e={});for(var h=e.unitary=c.clone(c.IDENTITY,e.unitary),d=e.diagonal=c.clone(t,e.diagonal),p=r*o(d);i>f&&u(d)>p;)s(d,m),c.transpose(m,y),c.multiply(d,m,d),c.multiply(y,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e},c.determinant=function(t){var e=t[0],n=t[3],r=t[6],i=t[1],a=t[4],o=t[7],u=t[2],s=t[5],c=t[8];return e*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(t,e){var n=t[0],i=t[1],o=t[2],u=t[3],s=t[4],l=t[5],f=t[6],h=t[7],d=t[8],m=c.determinant(t);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");e[0]=s*d-h*l,e[1]=h*o-i*d,e[2]=i*l-s*o,e[3]=f*l-u*d,e[4]=n*d-f*o,e[5]=u*o-n*l,e[6]=u*h-f*s,e[7]=f*i-n*h,e[8]=n*s-u*i;var y=1/m;return c.multiplyByScalar(e,y,e)},c.equals=function(t,e){return t===e||n(t)&&n(e)&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]},c.equalsEpsilon=function(t,e,r){return t===e||n(t)&&n(e)&&Math.abs(t[0]-e[0])<=r&&Math.abs(t[1]-e[1])<=r&&Math.abs(t[2]-e[2])<=r&&Math.abs(t[3]-e[3])<=r&&Math.abs(t[4]-e[4])<=r&&Math.abs(t[5]-e[5])<=r&&Math.abs(t[6]-e[6])<=r&&Math.abs(t[7]-e[7])<=r&&Math.abs(t[8]-e[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(t){"use strict";var e=function(t){this.name="RuntimeError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(t,e,n,r,i,a,o,u,s){"use strict";var c=function(t,e,r,i,a,o,u,s,c,l,f,h,d,m,y,p){this[0]=n(t,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(e,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(y,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(p,0)};c.packedLength=16,c.pack=function(t,e,r){r=n(r,0),e[r++]=t[0],e[r++]=t[1],e[r++]=t[2],e[r++]=t[3],e[r++]=t[4],e[r++]=t[5],e[r++]=t[6],e[r++]=t[7],e[r++]=t[8],e[r++]=t[9],e[r++]=t[10],e[r++]=t[11],e[r++]=t[12],e[r++]=t[13],e[r++]=t[14],e[r]=t[15]},c.unpack=function(t,e,i){return e=n(e,0),r(i)||(i=new c),i[0]=t[e++],i[1]=t[e++],i[2]=t[e++],i[3]=t[e++],i[4]=t[e++],i[5]=t[e++],i[6]=t[e++],i[7]=t[e++],i[8]=t[e++],i[9]=t[e++],i[10]=t[e++],i[11]=t[e++],i[12]=t[e++],i[13]=t[e++],i[14]=t[e++],i[15]=t[e],i},c.clone=function(t,e){return r(t)?r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):new c(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},c.fromRotationTranslation=function(e,i,a){return i=n(i,t.ZERO),r(a)?(a[0]=e[0],a[1]=e[1],a[2]=e[2],a[3]=0,a[4]=e[3],a[5]=e[4],a[6]=e[5],a[7]=0,a[8]=e[6],a[9]=e[7],a[10]=e[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(e[0],e[3],e[6],i.x,e[1],e[4],e[7],i.y,e[2],e[5],e[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(t,e,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=e.x*e.x,l=e.x*e.y,f=e.x*e.z,h=e.x*e.w,d=e.y*e.y,m=e.y*e.z,y=e.y*e.w,p=e.z*e.z,v=e.z*e.w,w=e.w*e.w,x=s-d-p+w,g=2*(l-v),E=2*(f+y),z=2*(l+v),M=-s+d-p+w,S=2*(m-h),O=2*(f-y),T=2*(m+h),_=-s-d+p+w;return i[0]=x*a,i[1]=z*a,i[2]=O*a,i[3]=0,i[4]=g*o,i[5]=M*o,i[6]=T*o,i[7]=0,i[8]=E*u,i[9]=S*u,i[10]=_*u,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,i},c.fromTranslation=function(t,e){return c.fromRotationTranslation(u.IDENTITY,t,e)},c.fromScale=function(t,e){return r(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t.y,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t.z,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t.x,0,0,0,0,t.y,0,0,0,0,t.z,0,0,0,0,1)},c.fromUniformScale=function(t,e){return r(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t,0,0,0,0,t,0,0,0,0,t,0,0,0,0,1)};var l=new t,f=new t,h=new t;c.fromCamera=function(e,n){var i=e.eye,a=e.target,o=e.up;t.normalize(t.subtract(a,i,l),l),t.normalize(t.cross(l,o,f),f),t.normalize(t.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,y=l.y,p=l.z,v=h.x,w=h.y,x=h.z,g=i.x,E=i.y,z=i.z,M=u*-g+s*-E+d*-z,S=v*-g+w*-E+x*-z,O=m*g+y*E+p*z;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=w,n[6]=-y,n[7]=0,n[8]=d,n[9]=x,n[10]=-p,n[11]=0,n[12]=M,n[13]=S,n[14]=O,n[15]=1,n):new c(u,s,d,M,v,w,x,S,-m,-y,-p,O,0,0,0,1)},c.computePerspectiveFieldOfView=function(t,e,n,r,i){var a=Math.tan(.5*t),o=1/a,u=o/e,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(t,e,n,r,i,a,o){var u=1/(e-t),s=1/(r-n),c=1/(a-i),l=-(e+t)*u,f=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o +},c.computePerspectiveOffCenter=function(t,e,n,r,i,a,o){var u=2*i/(e-t),s=2*i/(r-n),c=(e+t)/(e-t),l=(r+n)/(r-n),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(t,e,n,r,i,a){var o=2*i/(e-t),u=2*i/(r-n),s=(e+t)/(e-t),c=(r+n)/(r-n),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(t,e,r,i){t=n(t,n.EMPTY_OBJECT);var a=n(t.x,0),o=n(t.y,0),u=n(t.width,0),s=n(t.height,0);e=n(e,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-e),h=c,d=l,m=f,y=a+c,p=o+l,v=e+f,w=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=y,i[13]=p,i[14]=v,i[15]=w,i},c.toArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},c.getElementIndex=function(t,e){return 4*t+e},c.getColumn=function(t,e,n){var r=4*e,i=t[r],a=t[r+1],o=t[r+2],u=t[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=4*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(t,e,n){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=t[15],n},c.getRow=function(t,e,n){var r=t[e],i=t[e+4],a=t[e+8],o=t[e+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+4]=n.y,r[e+8]=n.z,r[e+12]=n.w,r};var d=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],d)),n.y=t.magnitude(t.fromElements(e[4],e[5],e[6],d)),n.z=t.magnitude(t.fromElements(e[8],e[9],e[10],d)),n};var m=new t;c.getMaximumScale=function(e){return c.getScale(e,m),t.maximumComponent(m)},c.multiply=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[3],u=t[4],s=t[5],c=t[6],l=t[7],f=t[8],h=t[9],d=t[10],m=t[11],y=t[12],p=t[13],v=t[14],w=t[15],x=e[0],g=e[1],E=e[2],z=e[3],M=e[4],S=e[5],O=e[6],T=e[7],_=e[8],I=e[9],N=e[10],R=e[11],b=e[12],A=e[13],P=e[14],C=e[15],L=r*x+u*g+f*E+y*z,q=i*x+s*g+h*E+p*z,U=a*x+c*g+d*E+v*z,D=o*x+l*g+m*E+w*z,B=r*M+u*S+f*O+y*T,F=i*M+s*S+h*O+p*T,W=a*M+c*S+d*O+v*T,k=o*M+l*S+m*O+w*T,G=r*_+u*I+f*N+y*R,V=i*_+s*I+h*N+p*R,Y=a*_+c*I+d*N+v*R,j=o*_+l*I+m*N+w*R,Z=r*b+u*A+f*P+y*C,H=i*b+s*A+h*P+p*C,X=a*b+c*A+d*P+v*C,K=o*b+l*A+m*P+w*C;return n[0]=L,n[1]=q,n[2]=U,n[3]=D,n[4]=B,n[5]=F,n[6]=W,n[7]=k,n[8]=G,n[9]=V,n[10]=Y,n[11]=j,n[12]=Z,n[13]=H,n[14]=X,n[15]=K,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n[9]=t[9]+e[9],n[10]=t[10]+e[10],n[11]=t[11]+e[11],n[12]=t[12]+e[12],n[13]=t[13]+e[13],n[14]=t[14]+e[14],n[15]=t[15]+e[15],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n[9]=t[9]-e[9],n[10]=t[10]-e[10],n[11]=t[11]-e[11],n[12]=t[12]-e[12],n[13]=t[13]-e[13],n[14]=t[14]-e[14],n[15]=t[15]-e[15],n},c.multiplyTransformation=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=t[12],d=t[13],m=t[14],y=e[0],p=e[1],v=e[2],w=e[4],x=e[5],g=e[6],E=e[8],z=e[9],M=e[10],S=e[12],O=e[13],T=e[14],_=r*y+o*p+c*v,I=i*y+u*p+l*v,N=a*y+s*p+f*v,R=r*w+o*x+c*g,b=i*w+u*x+l*g,A=a*w+s*x+f*g,P=r*E+o*z+c*M,C=i*E+u*z+l*M,L=a*E+s*z+f*M,q=r*S+o*O+c*T+h,U=i*S+u*O+l*T+d,D=a*S+s*O+f*T+m;return n[0]=_,n[1]=I,n[2]=N,n[3]=0,n[4]=R,n[5]=b,n[6]=A,n[7]=0,n[8]=P,n[9]=C,n[10]=L,n[11]=0,n[12]=q,n[13]=U,n[14]=D,n[15]=1,n},c.multiplyByMatrix3=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=e[0],d=e[1],m=e[2],y=e[3],p=e[4],v=e[5],w=e[6],x=e[7],g=e[8],E=r*h+o*d+c*m,z=i*h+u*d+l*m,M=a*h+s*d+f*m,S=r*y+o*p+c*v,O=i*y+u*p+l*v,T=a*y+s*p+f*v,_=r*w+o*x+c*g,I=i*w+u*x+l*g,N=a*w+s*x+f*g;return n[0]=E,n[1]=z,n[2]=M,n[3]=0,n[4]=S,n[5]=O,n[6]=T,n[7]=0,n[8]=_,n[9]=I,n[10]=N,n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n},c.multiplyByTranslation=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=r*t[0]+i*t[4]+a*t[8]+t[12],u=r*t[1]+i*t[5]+a*t[9]+t[13],s=r*t[2]+i*t[6]+a*t[10]+t[14];return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=o,n[13]=u,n[14]=s,n[15]=t[15],n};var y=new t;c.multiplyByUniformScale=function(t,e,n){return y.x=e,y.y=e,y.z=e,c.multiplyByScale(t,y,n)},c.multiplyByScale=function(t,e,n){var r=e.x,i=e.y,a=e.z;return 1===r&&1===i&&1===a?c.clone(t,n):(n[0]=r*t[0],n[1]=r*t[1],n[2]=r*t[2],n[3]=0,n[4]=i*t[4],n[5]=i*t[5],n[6]=i*t[6],n[7]=0,n[8]=a*t[8],n[9]=a*t[9],n[10]=a*t[10],n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=1,n)},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t[0]*r+t[4]*i+t[8]*a+t[12]*o,s=t[1]*r+t[5]*i+t[9]*a+t[13]*o,c=t[2]*r+t[6]*i+t[10]*a+t[14]*o,l=t[3]*r+t[7]*i+t[11]*a+t[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a,u=t[1]*r+t[5]*i+t[9]*a,s=t[2]*r+t[6]*i+t[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a+t[12],u=t[1]*r+t[5]*i+t[9]*a+t[13],s=t[2]*r+t[6]*i+t[10]*a+t[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n[9]=t[9]*e,n[10]=t[10]*e,n[11]=t[11]*e,n[12]=t[12]*e,n[13]=t[13]*e,n[14]=t[14]*e,n[15]=t[15]*e,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e[11]=-t[11],e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=-t[15],e},c.transpose=function(t,e){var n=t[1],r=t[2],i=t[3],a=t[6],o=t[7],u=t[11];return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[10]=t[10],e[11]=t[14],e[12]=i,e[13]=o,e[14]=u,e[15]=t[15],e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e[9]=Math.abs(t[9]),e[10]=Math.abs(t[10]),e[11]=Math.abs(t[11]),e[12]=Math.abs(t[12]),e[13]=Math.abs(t[13]),e[14]=Math.abs(t[14]),e[15]=Math.abs(t[15]),e},c.equals=function(t,e){return t===e||r(t)&&r(e)&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[3]===e[3]&&t[7]===e[7]&&t[11]===e[11]&&t[15]===e[15]},c.equalsEpsilon=function(t,e,n){return t===e||r(t)&&r(e)&&Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n&&Math.abs(t[4]-e[4])<=n&&Math.abs(t[5]-e[5])<=n&&Math.abs(t[6]-e[6])<=n&&Math.abs(t[7]-e[7])<=n&&Math.abs(t[8]-e[8])<=n&&Math.abs(t[9]-e[9])<=n&&Math.abs(t[10]-e[10])<=n&&Math.abs(t[11]-e[11])<=n&&Math.abs(t[12]-e[12])<=n&&Math.abs(t[13]-e[13])<=n&&Math.abs(t[14]-e[14])<=n&&Math.abs(t[15]-e[15])<=n},c.getTranslation=function(t,e){return e.x=t[12],e.y=t[13],e.z=t[14],e},c.getRotation=function(t,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e};var p=new u,v=new u,w=new e,x=new e(0,0,0,1);return c.inverse=function(t,n){if(u.equalsEpsilon(c.getRotation(t,p),v,o.EPSILON7)&&e.equals(c.getRow(t,3,w),x))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-t[12],n[13]=-t[13],n[14]=-t[14],n[15]=1,n;var r=t[0],i=t[4],a=t[8],l=t[12],f=t[1],h=t[5],d=t[9],m=t[13],y=t[2],g=t[6],E=t[10],z=t[14],M=t[3],S=t[7],O=t[11],T=t[15],_=E*T,I=z*O,N=g*T,R=z*S,b=g*O,A=E*S,P=y*T,C=z*M,L=y*O,q=E*M,U=y*S,D=g*M,B=_*h+R*d+b*m-(I*h+N*d+A*m),F=I*f+P*d+q*m-(_*f+C*d+L*m),W=N*f+C*h+U*m-(R*f+P*h+D*m),k=A*f+L*h+D*d-(b*f+q*h+U*d),G=I*i+N*a+A*l-(_*i+R*a+b*l),V=_*r+C*a+L*l-(I*r+P*a+q*l),Y=R*r+P*i+D*l-(N*r+C*i+U*l),j=b*r+q*i+U*a-(A*r+L*i+D*a);_=a*m,I=l*d,N=i*m,R=l*h,b=i*d,A=a*h,P=r*m,C=l*f,L=r*d,q=a*f,U=r*h,D=i*f;var Z=_*S+R*O+b*T-(I*S+N*O+A*T),H=I*M+P*O+q*T-(_*M+C*O+L*T),X=N*M+C*S+U*T-(R*M+P*S+D*T),K=A*M+L*S+D*O-(b*M+q*S+U*O),J=N*E+A*z+I*g-(b*z+_*g+R*E),Q=L*z+_*y+C*E-(P*E+q*z+I*y),$=P*g+D*z+R*y-(U*z+N*y+C*g),te=U*E+b*y+q*g-(L*g+D*E+A*y),ee=r*B+i*F+a*W+l*k;if(Math.abs(ee)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return ee=1/ee,n[0]=B*ee,n[1]=F*ee,n[2]=W*ee,n[3]=k*ee,n[4]=G*ee,n[5]=V*ee,n[6]=Y*ee,n[7]=j*ee,n[8]=Z*ee,n[9]=H*ee,n[10]=X*ee,n[11]=K*ee,n[12]=J*ee,n[13]=Q*ee,n[14]=$*ee,n[15]=te*ee,n},c.inverseTransformation=function(t,e){var n=t[0],r=t[1],i=t[2],a=t[4],o=t[5],u=t[6],s=t[8],c=t[9],l=t[10],f=t[12],h=t[13],d=t[14],m=-n*f-r*h-i*d,y=-a*f-o*h-u*d,p=-s*f-c*h-l*d;return e[0]=n,e[1]=a,e[2]=s,e[3]=0,e[4]=r,e[5]=o,e[6]=c,e[7]=0,e[8]=i,e[9]=u,e[10]=l,e[11]=0,e[12]=m,e[13]=y,e[14]=p,e[15]=1,e},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]&&t[9]===e[n+9]&&t[10]===e[n+10]&&t[11]===e[n+11]&&t[12]===e[n+12]&&t[13]===e[n+13]&&t[14]===e[n+14]&&t[15]===e[n+15]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e,n){this.normal=t.clone(e),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-t.dot(r,n);return e(a)?(t.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new t;return i.fromCartesian4=function(n,r){var o=t.fromCartesian4(n,a),u=n.w;return e(r)?(t.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(e,n){return t.dot(e.normal,n)+e.distance},i.ORIGIN_XY_PLANE=r(new i(t.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(t.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(t.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";var s=function(t,n,r,i){this.west=e(t,0),this.south=e(n,0),this.east=e(r,0),this.north=e(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(t,n,r){r=e(r,0),n[r++]=t.west,n[r++]=t.south,n[r++]=t.east,n[r]=t.north},s.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new s),i.west=t[r++],i.south=t[r++],i.east=t[r++],i.north=t[r],i},s.computeWidth=function(t){var e=t.east,n=t.west;return n>e&&(e+=u.TWO_PI),e-n},s.computeHeight=function(t){return t.north-t.south},s.fromDegrees=function(t,r,i,a,o){return t=u.toRadians(e(t,0)),r=u.toRadians(e(r,0)),i=u.toRadians(e(i,0)),a=u.toRadians(e(a,0)),n(o)?(o.west=t,o.south=r,o.east=i,o.north=a,o):new s(t,r,i,a)},s.fromCartographicArray=function(t,e){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=t.length;c>u;u++){var l=t[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(e)?(e.west=r,e.south=a,e.east=i,e.north=o,e):new s(r,a,i,o)},s.clone=function(t,e){return n(t)?n(e)?(e.west=t.west,e.south=t.south,e.east=t.east,e.north=t.north,e):new s(t.west,t.south,t.east,t.north):void 0},s.prototype.clone=function(t){return s.clone(this,t)},s.prototype.equals=function(t){return s.equals(this,t)},s.equals=function(t,e){return t===e||n(t)&&n(e)&&t.west===e.west&&t.south===e.south&&t.east===e.east&&t.north===e.north},s.prototype.equalsEpsilon=function(t,e){return n(t)&&Math.abs(this.west-t.west)<=e&&Math.abs(this.south-t.south)<=e&&Math.abs(this.east-t.east)<=e&&Math.abs(this.north-t.north)<=e},s.validate=function(){},s.southwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.south,r.height=0,r):new t(e.west,e.south)},s.northwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.north,r.height=0,r):new t(e.west,e.north)},s.northeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.north,r.height=0,r):new t(e.east,e.north)},s.southeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.south,r.height=0,r):new t(e.east,e.south)},s.center=function(e,r){var i=e.east,a=e.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(e.south+e.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new t(o,s)},s.intersection=function(t,e,r){var i=t.east,a=t.west,o=e.east,c=e.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((t.west<t.east||e.west<e.east)&&l>=f)return void 0;var h=Math.max(t.south,e.south),d=Math.min(t.north,e.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(t,e){var n=e.longitude,r=e.latitude,i=t.west,a=t.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=t.south&&r<=t.north};var c=new t;return s.subsample=function(t,r,i,o){r=e(r,a.WGS84),i=e(i,0),n(o)||(o=[]);var l=0,f=t.north,h=t.south,d=t.east,m=t.west,y=c;y.height=i,y.longitude=m,y.latitude=f,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=h,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=0>f?f:h>0?h:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(t,y)&&(o[l]=r.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(t,e,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(e,r){this.center=t.clone(n(e,t.ZERO)),this.radius=n(r,0)},m=new t,y=new t,p=new t,v=new t,w=new t,x=new t,g=new t,E=new t,z=new t,M=new t,S=new t,O=new t;d.fromPoints=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;for(var i=t.clone(e[0],g),a=t.clone(i,m),o=t.clone(i,y),u=t.clone(i,p),s=t.clone(i,v),c=t.clone(i,w),l=t.clone(i,x),f=e.length,h=1;f>h;h++){t.clone(e[h],i);var T=i.x,_=i.y,I=i.z;T<a.x&&t.clone(i,a),T>s.x&&t.clone(i,s),_<o.y&&t.clone(i,o),_>c.y&&t.clone(i,c),I<u.z&&t.clone(i,u),I>l.z&&t.clone(i,l)}var N=t.magnitudeSquared(t.subtract(s,a,E)),R=t.magnitudeSquared(t.subtract(c,o,E)),b=t.magnitudeSquared(t.subtract(l,u,E)),A=a,P=s,C=N;R>C&&(C=R,A=o,P=c),b>C&&(C=b,A=u,P=l);var L=z;L.x=.5*(A.x+P.x),L.y=.5*(A.y+P.y),L.z=.5*(A.z+P.z);var q=t.magnitudeSquared(t.subtract(P,L,E)),U=Math.sqrt(q),D=M;D.x=a.x,D.y=o.y,D.z=u.z;var B=S;B.x=s.x,B.y=c.y,B.z=l.z;var F=t.multiplyByScalar(t.add(D,B,E),.5,O),W=0;for(h=0;f>h;h++){t.clone(e[h],i);var k=t.magnitude(t.subtract(i,F,E));k>W&&(W=k);var G=t.magnitudeSquared(t.subtract(i,L,E));if(G>q){var V=Math.sqrt(G);U=.5*(U+V),q=U*U;var Y=V-U;L.x=(U*L.x+Y*i.x)/V,L.y=(U*L.y+Y*i.y)/V,L.z=(U*L.z+Y*i.z)/V}}return W>U?(t.clone(L,n.center),n.radius=U):(t.clone(F,n.center),n.radius=W),n};var T=new u,_=new t,I=new t,N=new e,R=new e;d.fromRectangle2D=function(t,e,n){return d.fromRectangleWithHeights2D(t,e,0,0,n)},d.fromRectangleWithHeights2D=function(e,i,a,o,u){if(r(u)||(u=new d),!r(e))return u.center=t.clone(t.ZERO,u.center),u.radius=0,u;i=n(i,T),h.southwest(e,N),N.height=a,h.northeast(e,R),R.height=o;var s=i.project(N,_),c=i.project(R,I),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*f,y.z=s.z+.5*m,u};var b=[];d.fromRectangle3D=function(t,e,i,a){e=n(e,o.WGS84),i=n(i,0);var u;return r(t)&&(u=h.subsample(t,e,i,b)),d.fromPoints(u,a)},d.fromVertices=function(e,i,a,o){if(r(o)||(o=new d),!r(e)||0===e.length)return o.center=t.clone(t.ZERO,o.center),o.radius=0,o;i=n(i,t.ZERO),a=n(a,3);var u=g;u.x=e[0]+i.x,u.y=e[1]+i.y,u.z=e[2]+i.z;for(var s=t.clone(u,m),c=t.clone(u,y),l=t.clone(u,p),f=t.clone(u,v),h=t.clone(u,w),T=t.clone(u,x),_=e.length,I=0;_>I;I+=a){var N=e[I]+i.x,R=e[I+1]+i.y,b=e[I+2]+i.z;u.x=N,u.y=R,u.z=b,N<s.x&&t.clone(u,s),N>f.x&&t.clone(u,f),R<c.y&&t.clone(u,c),R>h.y&&t.clone(u,h),b<l.z&&t.clone(u,l),b>T.z&&t.clone(u,T)}var A=t.magnitudeSquared(t.subtract(f,s,E)),P=t.magnitudeSquared(t.subtract(h,c,E)),C=t.magnitudeSquared(t.subtract(T,l,E)),L=s,q=f,U=A;P>U&&(U=P,L=c,q=h),C>U&&(U=C,L=l,q=T);var D=z;D.x=.5*(L.x+q.x),D.y=.5*(L.y+q.y),D.z=.5*(L.z+q.z);var B=t.magnitudeSquared(t.subtract(q,D,E)),F=Math.sqrt(B),W=M;W.x=s.x,W.y=c.y,W.z=l.z;var k=S;k.x=f.x,k.y=h.y,k.z=T.z;var G=t.multiplyByScalar(t.add(W,k,E),.5,O),V=0;for(I=0;_>I;I+=a){u.x=e[I]+i.x,u.y=e[I+1]+i.y,u.z=e[I+2]+i.z;var Y=t.magnitude(t.subtract(u,G,E));Y>V&&(V=Y);var j=t.magnitudeSquared(t.subtract(u,D,E));if(j>B){var Z=Math.sqrt(j);F=.5*(F+Z),B=F*F;var H=Z-F;D.x=(F*D.x+H*u.x)/Z,D.y=(F*D.y+H*u.y)/Z,D.z=(F*D.z+H*u.z)/Z}}return V>F?(t.clone(D,o.center),o.radius=F):(t.clone(G,o.center),o.radius=V),o},d.fromCornerPoints=function(e,n,i){r(i)||(i=new d);var a=i.center;return t.add(e,n,a),t.multiplyByScalar(a,.5,a),i.radius=t.distance(a,n),i},d.fromEllipsoid=function(e,n){return r(n)||(n=new d),t.clone(t.ZERO,n.center),n.radius=e.maximumRadius,n};var A=new t;d.fromBoundingSpheres=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;var i=e.length;if(1===i)return d.clone(e[0],n);if(2===i)return d.union(e[0],e[1],n);for(var a=[],o=0;i>o;o++)a.push(e[o].center);n=d.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=e[o];s=Math.max(s,t.distance(u,c.center,A)+c.radius)}return n.radius=s,n},d.clone=function(e,n){return r(e)?r(n)?(n.center=t.clone(e.center,n.center),n.radius=e.radius,n):new d(e.center,e.radius):void 0},d.packedLength=4,d.pack=function(t,e,r){r=n(r,0);var i=t.center;e[r++]=i.x,e[r++]=i.y,e[r++]=i.z,e[r]=t.radius},d.unpack=function(t,e,i){e=n(e,0),r(i)||(i=new d);var a=i.center;return a.x=t[e++],a.y=t[e++],a.z=t[e++],i.radius=t[e],i};var P=new t,C=new t;d.union=function(e,n,i){r(i)||(i=new d);var a=e.center,o=e.radius,u=n.center,s=n.radius,c=t.subtract(u,a,P),l=t.magnitude(c);if(o>=l+s)return e.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),h=t.multiplyByScalar(c,(-o+f)/l,C);return t.add(h,a,h),t.clone(h,i.center),i.radius=f,i};var L=new t;d.expand=function(e,n,r){r=d.clone(e,r);var i=t.magnitude(t.subtract(n,r.center,L));return i>r.radius&&(r.radius=i),r},d.intersectPlane=function(e,n){var r=e.center,i=e.radius,a=n.normal,o=t.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new t,0);d.intersect=function(t,e){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(e,q);return d.intersectPlane(t,n)},d.transform=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=l.getMaximumScale(e)*t.radius,n};var U=new t;d.distanceSquaredTo=function(e,n){var r=t.subtract(e.center,n,U);return t.magnitudeSquared(r)-e.radius*e.radius},d.transformWithoutScale=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=t.radius,n};var D=new t;d.computePlaneDistances=function(e,n,i,a){r(a)||(a=new c);var o=t.subtract(e.center,n,D),u=t.multiplyByScalar(i,t.dot(i,o),D),s=t.magnitude(u);return a.start=s-e.radius,a.stop=s+e.radius,a};for(var B=new t,F=new t,W=new t,k=new t,G=new t,V=new e,Y=new Array(8),j=0;8>j;++j)Y[j]=new t;var Z=new u;return d.projectTo2D=function(e,r,i){r=n(r,Z);var a=r.ellipsoid,o=e.center,u=e.radius,s=a.geodeticSurfaceNormal(o,B),c=t.cross(t.UNIT_Z,s,F);t.normalize(c,c);var l=t.cross(s,c,W);t.normalize(l,l),t.multiplyByScalar(s,u,s),t.multiplyByScalar(l,u,l),t.multiplyByScalar(c,u,c);var f=t.negate(l,G),h=t.negate(c,k),m=Y,y=m[0];t.add(s,l,y),t.add(y,c,y),y=m[1],t.add(s,l,y),t.add(y,h,y),y=m[2],t.add(s,f,y),t.add(y,h,y),y=m[3],t.add(s,f,y),t.add(y,c,y),t.negate(s,s),y=m[4],t.add(s,l,y),t.add(y,c,y),y=m[5],t.add(s,l,y),t.add(y,h,y),y=m[6],t.add(s,f,y),t.add(y,h,y),y=m[7],t.add(s,f,y),t.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var w=m[v];t.add(o,w,w);var x=a.cartesianToCartographic(w,V);r.project(x,w)}i=d.fromPoints(m,i),o=i.center;var g=o.x,E=o.y,z=o.z;return o.x=z,o.y=g,o.z=E,i},d.equals=function(e,n){return e===n||r(e)&&r(n)&&t.equals(e.center,n.center)&&e.radius===n.radius},d.prototype.intersectPlane=function(t){return d.intersectPlane(this,t)},d.prototype.intersect=function(t){return d.intersect(this,t)},d.prototype.equals=function(t){return d.equals(this,t)},d.prototype.clone=function(t){return d.clone(this,t)},d}),define("Core/Fullscreen",["./defined","./defineProperties"],function(t,e){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return e(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(t(n))return n;n=!1;var e=document.body;if("function"==typeof e.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof e[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof e[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",t(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",t(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",t(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",t(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(t){i.supportsFullscreen()&&t[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(t,e,n){"use strict";function r(t){for(var e=t.split("."),n=0,r=e.length;r>n;++n)e[n]=parseInt(e[n],10);return e}function i(){if(!e(p)){p=!1;var t=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(p=!0,v=r(t[1]))}return p}function a(){return i()&&v}function o(){if(!e(w)&&(w=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var t=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(w=!0,x=r(t[1]))}return w}function u(){return o()&&x}function s(){if(!e(g)){g=!1;var t=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==t&&(g=!0,E=r(t[1]),E.isNightly=!!t[2])}return g}function c(){return s()&&E}function l(){if(!e(z)){z=!1;var t;"Microsoft Internet Explorer"===navigator.appName?(t=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(z=!0,M=r(t[1]))):"Netscape"===navigator.appName&&(t=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(z=!0,M=r(t[1])))}return z}function f(){return l()&&M}function h(){if(!e(S)){S=!1;var t=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(S=!0,O=r(t[1]))}return S}function d(){return e(T)||(T=/Windows/i.test(navigator.appVersion)),T}function m(){return h()&&O}function y(){return e(_)||(_=e(window.PointerEvent)&&(!e(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),_}var p,v,w,x,g,E,z,M,S,O,T,_,I={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:t(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return I.supportsFullscreen=function(){return n.supportsFullscreen()},I.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},I.supportsWebWorkers=function(){return"undefined"!=typeof Worker},I}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(t,e,n,r,i){"use strict";if(!r.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(t){switch(t){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},a.fromTypedArray=function(t){return t instanceof Int8Array?a.BYTE:t instanceof Uint8Array?a.UNSIGNED_BYTE:t instanceof Int16Array?a.SHORT:t instanceof Uint16Array?a.UNSIGNED_SHORT:t instanceof Float32Array?a.FLOAT:t instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(t){return e(t)&&(t===a.BYTE||t===a.UNSIGNED_BYTE||t===a.SHORT||t===a.UNSIGNED_SHORT||t===a.FLOAT||t===a.DOUBLE)},a.createTypedArray=function(t,e){switch(t){case a.BYTE:return new Int8Array(e);case a.UNSIGNED_BYTE:return new Uint8Array(e);case a.SHORT:return new Int16Array(e);case a.UNSIGNED_SHORT:return new Uint16Array(e);case a.FLOAT:return new Float32Array(e);case a.DOUBLE:return new Float64Array(e);default:throw new n("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(e,r,i,o){switch(i=t(i,0),o=t(o,(r.byteLength-i)/a.getSizeInBytes(e)),e){case a.BYTE:return new Int8Array(r,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(r,i,o);case a.SHORT:return new Int16Array(r,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(r,i,o);case a.FLOAT:return new Float32Array(r,i,o);case a.DOUBLE:return new Float64Array(r,i,o);default:throw new n("componentDatatype is not a valid value.")}},i(a)}),define("Core/GeometryType",["./freezeObject"],function(t){"use strict";var e={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return t(e)}),define("Core/PrimitiveType",["./freezeObject"],function(t){"use strict";var e={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(t){return t===e.POINTS||t===e.LINES||t===e.LINE_LOOP||t===e.LINE_STRIP||t===e.TRIANGLES||t===e.TRIANGLE_STRIP||t===e.TRIANGLE_FAN}};return t(e)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(t,e,n,r,i){"use strict";var a=function(e){e=t(e,t.EMPTY_OBJECT),this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=t(e.primitiveType,i.TRIANGLES),this.boundingSphere=e.boundingSphere,this.geometryType=t(e.geometryType,r.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(t){var r=-1;for(var i in t.attributes)if(t.attributes.hasOwnProperty(i)&&e(t.attributes[i])&&e(t.attributes[i].values)){var a=t.attributes[i],o=a.values.length/a.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=t(e.normalize,!1),this.values=e.values};return e}),define("Core/GeometryAttributes",["./defaultValue"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.position=e.position,this.normal=e.normal,this.st=e.st,this.binormal=e.binormal,this.tangent=e.tangent,this.color=e.color};return e}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e){e=t(e,t.EMPTY_OBJECT),this.position=t(e.position,!1),this.normal=t(e.normal,!1),this.st=t(e.st,!1),this.binormal=t(e.binormal,!1),this.tangent=t(e.tangent,!1),this.color=t(e.color,!1)};return i.POSITION_ONLY=r(new i({position:!0})),i.POSITION_AND_NORMAL=r(new i({position:!0,normal:!0})),i.POSITION_NORMAL_AND_ST=r(new i({position:!0,normal:!0,st:!0})),i.POSITION_AND_ST=r(new i({position:!0,st:!0})),i.POSITION_AND_COLOR=r(new i({position:!0,color:!0})),i.ALL=r(new i({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),i.DEFAULT=i.POSITION_NORMAL_AND_ST,i.packedLength=6,i.pack=function(e,n,r){r=t(r,0),n[r++]=e.position?1:0,n[r++]=e.normal?1:0,n[r++]=e.st?1:0,n[r++]=e.binormal?1:0,n[r++]=e.tangent?1:0,n[r++]=e.color?1:0},i.unpack=function(n,r,a){return r=t(r,0),e(a)||(a=new i),a.position=1===n[r++],a.normal=1===n[r++],a.st=1===n[r++],a.binormal=1===n[r++],a.tangent=1===n[r++],a.color=1===n[r++],a},i.clone=function(t,n){return e(t)?(e(n)||(n=new i),n.position=t.position,n.normal=t.normal,n.st=t.st,n.binormal=t.binormal,n.tangent=t.tangent,n.color=t.color,n):void 0},i}),define("Core/BoxGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Geometry","./GeometryAttribute","./GeometryAttributes","./PrimitiveType","./VertexFormat"],function(t,e,n,r,i,a,o,u,s,c,l){"use strict";var f=new e,h=function(t){t=r(t,r.EMPTY_OBJECT);var n=t.minimumCorner,i=t.maximumCorner,a=r(t.vertexFormat,l.DEFAULT);this._minimumCorner=e.clone(n),this._maximumCorner=e.clone(i),this._vertexFormat=a,this._workerName="createBoxGeometry"};h.fromDimensions=function(t){t=r(t,r.EMPTY_OBJECT);var n=t.dimensions,i=e.multiplyByScalar(n,.5,new e),a=e.negate(i,new e),o=i,u={minimumCorner:a,maximumCorner:o,vertexFormat:t.vertexFormat};return new h(u)},h.packedLength=2*e.packedLength+l.packedLength,h.pack=function(t,n,i){i=r(i,0),e.pack(t._minimumCorner,n,i),e.pack(t._maximumCorner,n,i+e.packedLength),l.pack(t._vertexFormat,n,i+2*e.packedLength)};var d=new e,m=new e,y=new l,p={minimumCorner:d,maximumCorner:m,vertexFormat:y};return h.unpack=function(t,n,a){n=r(n,0);var o=e.unpack(t,n,d),u=e.unpack(t,n+e.packedLength,m),s=l.unpack(t,n+2*e.packedLength,y); +return i(a)?(a._minimumCorner=e.clone(o,a._minimumCorner),a._maximumCorner=e.clone(u,a._maximumCorner),a._vertexFormat=l.clone(s,a._vertexFormat),a):new h(p)},h.createGeometry=function(r){var i,a,l=r._minimumCorner,h=r._maximumCorner,d=r._vertexFormat,m=new s;if(d.position&&(d.st||d.normal||d.binormal||d.tangent)){if(d.position&&(a=new Float64Array(72),a[0]=l.x,a[1]=l.y,a[2]=h.z,a[3]=h.x,a[4]=l.y,a[5]=h.z,a[6]=h.x,a[7]=h.y,a[8]=h.z,a[9]=l.x,a[10]=h.y,a[11]=h.z,a[12]=l.x,a[13]=l.y,a[14]=l.z,a[15]=h.x,a[16]=l.y,a[17]=l.z,a[18]=h.x,a[19]=h.y,a[20]=l.z,a[21]=l.x,a[22]=h.y,a[23]=l.z,a[24]=h.x,a[25]=l.y,a[26]=l.z,a[27]=h.x,a[28]=h.y,a[29]=l.z,a[30]=h.x,a[31]=h.y,a[32]=h.z,a[33]=h.x,a[34]=l.y,a[35]=h.z,a[36]=l.x,a[37]=l.y,a[38]=l.z,a[39]=l.x,a[40]=h.y,a[41]=l.z,a[42]=l.x,a[43]=h.y,a[44]=h.z,a[45]=l.x,a[46]=l.y,a[47]=h.z,a[48]=l.x,a[49]=h.y,a[50]=l.z,a[51]=h.x,a[52]=h.y,a[53]=l.z,a[54]=h.x,a[55]=h.y,a[56]=h.z,a[57]=l.x,a[58]=h.y,a[59]=h.z,a[60]=l.x,a[61]=l.y,a[62]=l.z,a[63]=h.x,a[64]=l.y,a[65]=l.z,a[66]=h.x,a[67]=l.y,a[68]=h.z,a[69]=l.x,a[70]=l.y,a[71]=h.z,m.position=new u({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:a})),d.normal){var y=new Float32Array(72);y[0]=0,y[1]=0,y[2]=1,y[3]=0,y[4]=0,y[5]=1,y[6]=0,y[7]=0,y[8]=1,y[9]=0,y[10]=0,y[11]=1,y[12]=0,y[13]=0,y[14]=-1,y[15]=0,y[16]=0,y[17]=-1,y[18]=0,y[19]=0,y[20]=-1,y[21]=0,y[22]=0,y[23]=-1,y[24]=1,y[25]=0,y[26]=0,y[27]=1,y[28]=0,y[29]=0,y[30]=1,y[31]=0,y[32]=0,y[33]=1,y[34]=0,y[35]=0,y[36]=-1,y[37]=0,y[38]=0,y[39]=-1,y[40]=0,y[41]=0,y[42]=-1,y[43]=0,y[44]=0,y[45]=-1,y[46]=0,y[47]=0,y[48]=0,y[49]=1,y[50]=0,y[51]=0,y[52]=1,y[53]=0,y[54]=0,y[55]=1,y[56]=0,y[57]=0,y[58]=1,y[59]=0,y[60]=0,y[61]=-1,y[62]=0,y[63]=0,y[64]=-1,y[65]=0,y[66]=0,y[67]=-1,y[68]=0,y[69]=0,y[70]=-1,y[71]=0,m.normal=new u({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:y})}if(d.st){var p=new Float32Array(48);p[0]=0,p[1]=0,p[2]=1,p[3]=0,p[4]=1,p[5]=1,p[6]=0,p[7]=1,p[8]=1,p[9]=0,p[10]=0,p[11]=0,p[12]=0,p[13]=1,p[14]=1,p[15]=1,p[16]=0,p[17]=0,p[18]=1,p[19]=0,p[20]=1,p[21]=1,p[22]=0,p[23]=1,p[24]=1,p[25]=0,p[26]=0,p[27]=0,p[28]=0,p[29]=1,p[30]=1,p[31]=1,p[32]=1,p[33]=0,p[34]=0,p[35]=0,p[36]=0,p[37]=1,p[38]=1,p[39]=1,p[40]=0,p[41]=0,p[42]=1,p[43]=0,p[44]=1,p[45]=1,p[46]=0,p[47]=1,m.st=new u({componentDatatype:n.FLOAT,componentsPerAttribute:2,values:p})}if(d.tangent){var v=new Float32Array(72);v[0]=1,v[1]=0,v[2]=0,v[3]=1,v[4]=0,v[5]=0,v[6]=1,v[7]=0,v[8]=0,v[9]=1,v[10]=0,v[11]=0,v[12]=-1,v[13]=0,v[14]=0,v[15]=-1,v[16]=0,v[17]=0,v[18]=-1,v[19]=0,v[20]=0,v[21]=-1,v[22]=0,v[23]=0,v[24]=0,v[25]=1,v[26]=0,v[27]=0,v[28]=1,v[29]=0,v[30]=0,v[31]=1,v[32]=0,v[33]=0,v[34]=1,v[35]=0,v[36]=0,v[37]=-1,v[38]=0,v[39]=0,v[40]=-1,v[41]=0,v[42]=0,v[43]=-1,v[44]=0,v[45]=0,v[46]=-1,v[47]=0,v[48]=-1,v[49]=0,v[50]=0,v[51]=-1,v[52]=0,v[53]=0,v[54]=-1,v[55]=0,v[56]=0,v[57]=-1,v[58]=0,v[59]=0,v[60]=1,v[61]=0,v[62]=0,v[63]=1,v[64]=0,v[65]=0,v[66]=1,v[67]=0,v[68]=0,v[69]=1,v[70]=0,v[71]=0,m.tangent=new u({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:v})}if(d.binormal){var w=new Float32Array(72);w[0]=0,w[1]=1,w[2]=0,w[3]=0,w[4]=1,w[5]=0,w[6]=0,w[7]=1,w[8]=0,w[9]=0,w[10]=1,w[11]=0,w[12]=0,w[13]=1,w[14]=0,w[15]=0,w[16]=1,w[17]=0,w[18]=0,w[19]=1,w[20]=0,w[21]=0,w[22]=1,w[23]=0,w[24]=0,w[25]=0,w[26]=1,w[27]=0,w[28]=0,w[29]=1,w[30]=0,w[31]=0,w[32]=1,w[33]=0,w[34]=0,w[35]=1,w[36]=0,w[37]=0,w[38]=1,w[39]=0,w[40]=0,w[41]=1,w[42]=0,w[43]=0,w[44]=1,w[45]=0,w[46]=0,w[47]=1,w[48]=0,w[49]=0,w[50]=1,w[51]=0,w[52]=0,w[53]=1,w[54]=0,w[55]=0,w[56]=1,w[57]=0,w[58]=0,w[59]=1,w[60]=0,w[61]=0,w[62]=1,w[63]=0,w[64]=0,w[65]=1,w[66]=0,w[67]=0,w[68]=1,w[69]=0,w[70]=0,w[71]=1,m.binormal=new u({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:w})}i=new Uint16Array(36),i[0]=0,i[1]=1,i[2]=2,i[3]=0,i[4]=2,i[5]=3,i[6]=6,i[7]=5,i[8]=4,i[9]=7,i[10]=6,i[11]=4,i[12]=8,i[13]=9,i[14]=10,i[15]=8,i[16]=10,i[17]=11,i[18]=14,i[19]=13,i[20]=12,i[21]=15,i[22]=14,i[23]=12,i[24]=18,i[25]=17,i[26]=16,i[27]=19,i[28]=18,i[29]=16,i[30]=20,i[31]=21,i[32]=22,i[33]=20,i[34]=22,i[35]=23}else a=new Float64Array(24),a[0]=l.x,a[1]=l.y,a[2]=l.z,a[3]=h.x,a[4]=l.y,a[5]=l.z,a[6]=h.x,a[7]=h.y,a[8]=l.z,a[9]=l.x,a[10]=h.y,a[11]=l.z,a[12]=l.x,a[13]=l.y,a[14]=h.z,a[15]=h.x,a[16]=l.y,a[17]=h.z,a[18]=h.x,a[19]=h.y,a[20]=h.z,a[21]=l.x,a[22]=h.y,a[23]=h.z,m.position=new u({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:a}),i=new Uint16Array(36),i[0]=4,i[1]=5,i[2]=6,i[3]=4,i[4]=6,i[5]=7,i[6]=1,i[7]=0,i[8]=3,i[9]=1,i[10]=3,i[11]=2,i[12]=1,i[13]=6,i[14]=5,i[15]=1,i[16]=2,i[17]=6,i[18]=2,i[19]=3,i[20]=7,i[21]=2,i[22]=7,i[23]=6,i[24]=3,i[25]=0,i[26]=4,i[27]=3,i[28]=4,i[29]=7,i[30]=0,i[31]=1,i[32]=5,i[33]=0,i[34]=5,i[35]=4;var x=e.subtract(h,l,f),g=.5*e.magnitude(x);return new o({attributes:m,indices:i,primitiveType:c.TRIANGLES,boundingSphere:new t(e.ZERO,g)})},h}),define("Workers/createBoxGeometry",["../Core/BoxGeometry","../Core/defined"],function(t,e){"use strict";return function(n,r){return e(r)&&(n=t.unpack(n,r)),t.createGeometry(n)}})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createBoxOutlineGeometry.js b/libs/Cesium/Workers/createBoxOutlineGeometry.js new file mode 100644 index 0000000000..aadff4dd0d --- /dev/null +++ b/libs/Cesium/Workers/createBoxOutlineGeometry.js @@ -0,0 +1,59 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var t=function(t){return void 0!==t};return t}),define("Core/freezeObject",["./defined"],function(t){"use strict";var e=Object.freeze;return t(e)||(e=function(t){return t}),e}),define("Core/defaultValue",["./freezeObject"],function(t){"use strict";var e=function(t,e){return void 0!==t?t:e};return e.EMPTY_OBJECT=t({}),e}),define("Core/DeveloperError",["./defined"],function(t){"use strict";var e=function(t){this.name="DeveloperError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e.throwInstantiationError=function(){throw new e("This function defines an interface and should not be called directly.")},e}),define("ThirdParty/mersenne-twister",[],function(){var t=function(t){void 0==t&&(t=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(t)};return t.prototype.init_genrand=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&t)>>>16)<<16)+1812433253*(65535&t)+this.mti,this.mt[this.mti]>>>=0}},t.prototype.genrand_int32=function(){var t,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^t>>>1^e[1&t];for(;n<this.N-1;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^t>>>1^e[1&t];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^e[1&t],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=2636928640&t<<7,t^=4022730752&t<<15,t^=t>>>18,t>>>0},t.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},t}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(t,e){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(t){return t>0?1:0>t?-1:0},n.signNotZero=function(t){return 0>t?-1:1},n.toSNorm=function(t){return Math.round(255*(.5*n.clamp(t,-1,1)+.5))},n.fromSNorm=function(t){return 2*(n.clamp(t,0,255)/255)-1},n.sinh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e-n)},n.cosh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e+n)},n.lerp=function(t,e,n){return(1-n)*t+n*e},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(t){return t*n.RADIANS_PER_DEGREE},n.toDegrees=function(t){return t*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(t){var e=n.TWO_PI,r=t-Math.floor(t/e)*e;return r<-Math.PI?r+e:r>=Math.PI?r-e:r},n.negativePiToPi=function(t){return n.zeroToTwoPi(t+n.PI)-n.PI},n.zeroToTwoPi=function(t){var e=n.mod(t,n.TWO_PI);return Math.abs(e)<n.EPSILON14&&Math.abs(t)>n.EPSILON14?n.TWO_PI:e},n.mod=function(t,e){return(t%e+e)%e},n.equalsEpsilon=function(t,n,r,i){i=e(i,r);var a=Math.abs(t-n);return i>=a||a<=r*Math.max(Math.abs(t),Math.abs(n))};var r=[1];n.factorial=function(t){var e=r.length;if(t>=e)for(var n=r[e-1],i=e;t>=i;i++)r.push(n*i);return r[t]},n.incrementWrap=function(t,n,r){return r=e(r,0),++t,t>n&&(t=r),t},n.isPowerOfTwo=function(t){return 0!==t&&0===(t&t-1)},n.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t},n.clamp=function(t,e,n){return e>t?e:t>n?n:t};var i=new t;return n.setRandomNumberSeed=function(e){i=new t(e)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(t){return Math.acos(n.clamp(t,-1,1))},n.asinClamped=function(t){return Math.asin(n.clamp(t,-1,1))},n.chordLength=function(t,e){return 2*e*Math.sin(.5*t)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0)};a.fromSpherical=function(n,r){e(r)||(r=new a);var i=n.clock,o=n.cone,u=t(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(t,n,r,i){return e(i)?(i.x=t,i.y=n,i.z=r,i):new a(t,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n):new a(t.x,t.y,t.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r]=e.z},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){a.normalize(t,s),a.normalize(e,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Z,e):n.y<=n.z?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_Z,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)},a.cross=function(t,e,n){var r=t.x,i=t.y,a=t.z,o=e.x,u=e.y,s=e.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(t,e,n,r,o){var u=i.toRadians(t),s=i.toRadians(e);return a.fromRadians(u,s,n,r,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=t(i,0);var s=e(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),e(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o++)r[o]=i.toRadians(t[o]);return a.fromRadiansArray(r,e,n)},a.fromRadiansArray=function(t,n,r){var i=t.length;e(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=t[o],s=t[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o+=3)r[o]=i.toRadians(t[o]),r[o+1]=i.toRadians(t[o+1]),r[o+2]=t[o+2];return a.fromRadiansArrayHeights(r,e,n)},a.fromRadiansArrayHeights=function(t,n,r){var i=t.length;e(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=t[o],s=t[o+1],c=t[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.longitude=t(e,0),this.latitude=t(n,0),this.height=t(r,0)};return a.fromRadians=function(n,r,i,o){return i=t(i,0),e(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(t,e,n,r){return t=i.toRadians(t),e=i.toRadians(e),a.fromRadians(t,e,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.longitude=t.longitude,n.latitude=t.latitude,n.height=t.height,n):new a(t.longitude,t.latitude,t.height):void 0},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.longitude===n.longitude&&t.latitude===n.latitude&&t.height===n.height},a.equalsEpsilon=function(t,n,r){return t===n||e(t)&&e(n)&&Math.abs(t.longitude-n.longitude)<=r&&Math.abs(t.latitude-n.latitude)<=r&&Math.abs(t.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e){return a.equalsEpsilon(this,t,e)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(t){"use strict";var e={},n=function(n,r){t(e[n])||(e[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(t){"use strict";var e=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(t){return!1}}(),n=Object.defineProperties;return e&&t(n)||(n=function(t){return t}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";function s(e,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),e._radii=new t(r,i,a),e._radiiSquared=new t(r*r,i*i,a*a),e._radiiToTheFourth=new t(r*r*r*r,i*i*i*i,a*a*a*a),e._oneOverRadii=new t(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),e._oneOverRadiiSquared=new t(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),e._minimumRadius=Math.min(r,i,a),e._maximumRadius=Math.max(r,i,a),e._centerToleranceSquared=u.EPSILON1}var c=function(t,e,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,t,e,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(e,n){if(!r(e))return void 0;var i=e._radii;return r(n)?(t.clone(i,n._radii),t.clone(e._radiiSquared,n._radiiSquared),t.clone(e._radiiToTheFourth,n._radiiToTheFourth),t.clone(e._oneOverRadii,n._oneOverRadii),t.clone(e._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=e._minimumRadius,n._maximumRadius=e._maximumRadius,n._centerToleranceSquared=e._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(t,e){return r(e)||(e=new c),r(t)?(s(e,t.x,t.y,t.z),e):e},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(t){return c.clone(this,t)},c.packedLength=t.packedLength,c.pack=function(e,r,i){i=n(i,0),t.pack(e._radii,r,i)},c.unpack=function(e,r,i){r=n(r,0);var a=t.unpack(e,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=t.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(e,n){var i=e.longitude,a=e.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new t),n.x=u,n.y=s,n.z=c,t.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(e,n){return r(n)||(n=new t),n=t.multiplyComponents(e,this._oneOverRadiiSquared,n),t.normalize(n,n)};var l=new t,f=new t;c.prototype.cartographicToCartesian=function(e,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(e,i),t.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(t.dot(i,a));return t.divideByScalar(a,o,a),t.multiplyByScalar(i,e.height,i),r(n)||(n=new t),t.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;i++)e[i]=this.cartographicToCartesian(t[i],e[i]);return e};var h=new t,d=new t,m=new t;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,d);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=t.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(t.dot(s,n))*t.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new e(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;++i)e[i]=this.cartesianToCartographic(t[i],e[i]);return e};var y=new t,p=new t;return c.prototype.scaleToGeodeticSurface=function(e,n){var i=e.x,a=e.y,o=e.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,m=o*o*f*f,v=h+d+m,w=Math.sqrt(1/v),E=t.multiplyByScalar(e,w,y);if(v<this._centerToleranceSquared)return isFinite(w)?t.clone(E,n):void 0;var g=this._oneOverRadiiSquared,x=g.x,M=g.y,z=g.z,S=p;S.x=2*E.x*x,S.y=2*E.y*M,S.z=2*E.z*z;var O,T,R,_,I,N,b,P,A,C,L,q=(1-w)*t.magnitude(e)/(.5*t.magnitude(S)),U=0;do{q-=U,R=1/(1+q*x),_=1/(1+q*M),I=1/(1+q*z),N=R*R,b=_*_,P=I*I,A=N*R,C=b*_,L=P*I,O=h*N+d*b+m*P-1,T=h*A*x+d*C*M+m*L*z;var B=-2*T;U=O/B}while(Math.abs(O)>u.EPSILON12);return r(n)?(n.x=i*R,n.y=a*_,n.z=o*I,n):new t(i*R,a*_,o*I)},c.prototype.scaleToGeocentricSurface=function(e,n){r(n)||(n=new t);var i=e.x,a=e.y,o=e.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return t.multiplyByScalar(e,s,n)},c.prototype.transformPositionToScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._radii,n)},c.prototype.equals=function(e){return this===e||r(e)&&t.equals(this._radii,e._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(t,e,n,r,i,a,o){"use strict";var u=function(t){this._ellipsoid=n(t,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(e,n){var i=this._semimajorAxis,a=e.longitude*i,o=e.latitude*i,u=e.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new t(a,o,u)},u.prototype.unproject=function(t,n){var i=this._oneOverSemimajorAxis,a=t.x*i,o=t.y*i,u=t.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new e(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(t){"use strict";var e={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return t(e)}),define("Core/Interval",["./defaultValue"],function(t){"use strict";var e=function(e,n){this.start=t(e,0),this.stop=t(n,0)};return e}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)};a.fromElements=function(t,n,r,i,o){return e(o)?(o.x=t,o.y=n,o.z=r,o.w=i,o):new a(t,n,r,i)},a.fromColor=function(t,n){return e(n)?(n.x=t.red,n.y=t.green,n.z=t.blue,n.w=t.alpha,n):new a(t.red,t.green,t.blue,t.alpha)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n.w=t.w,n):new a(t.x,t.y,t.z,t.w):void 0},a.packedLength=4,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z,t.w)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z,t.w)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n.w=Math.min(t.w,e.w),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n.w=Math.max(t.w,e.w),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e.w=t.w/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z+t.w*e.w},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n.w=t.w*e.w,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n.w=t.w+e.w,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n.w=t.w-e.w,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n.w=t.w*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n.w=t.w/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e.w=-t.w,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e.w=Math.abs(t.w),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,s);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z&&t.w===n.w},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]&&t.w===e[n+3]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)&&i.equalsEpsilon(t.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a){"use strict";function o(t){for(var e=0,n=0;9>n;++n){var r=t[n];e+=r*r}return Math.sqrt(e)}function u(t){for(var e=0,n=0;3>n;++n){var r=t[c.getElementIndex(d[n],h[n])];e+=2*r*r}return Math.sqrt(e)}function s(t,e){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(t[c.getElementIndex(d[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=h[i],m=d[i];if(Math.abs(t[c.getElementIndex(m,f)])>n){var y,p=t[c.getElementIndex(m,m)],v=t[c.getElementIndex(f,f)],w=t[c.getElementIndex(m,f)],E=(p-v)/2/w;y=0>E?-1/(-E+Math.sqrt(1+E*E)):1/(E+Math.sqrt(1+E*E)),s=1/Math.sqrt(1+y*y),l=y*s}return e=c.clone(c.IDENTITY,e),e[c.getElementIndex(f,f)]=e[c.getElementIndex(m,m)]=s,e[c.getElementIndex(m,f)]=l,e[c.getElementIndex(f,m)]=-l,e}var c=function(t,n,r,i,a,o,u,s,c){this[0]=e(t,0),this[1]=e(i,0),this[2]=e(u,0),this[3]=e(n,0),this[4]=e(a,0),this[5]=e(s,0),this[6]=e(r,0),this[7]=e(o,0),this[8]=e(c,0)};c.packedLength=9,c.pack=function(t,n,r){r=e(r,0),n[r++]=t[0],n[r++]=t[1],n[r++]=t[2],n[r++]=t[3],n[r++]=t[4],n[r++]=t[5],n[r++]=t[6],n[r++]=t[7],n[r++]=t[8]},c.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r++],i[1]=t[r++],i[2]=t[r++],i[3]=t[r++],i[4]=t[r++],i[5]=t[r++],i[6]=t[r++],i[7]=t[r++],i[8]=t[r++],i},c.clone=function(t,e){return n(t)?n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):new c(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]):void 0},c.fromArray=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r],i[1]=t[r+1],i[2]=t[r+2],i[3]=t[r+3],i[4]=t[r+4],i[5]=t[r+5],i[6]=t[r+6],i[7]=t[r+7],i[8]=t[r+8],i},c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},c.fromQuaternion=function(t,e){var r=t.x*t.x,i=t.x*t.y,a=t.x*t.z,o=t.x*t.w,u=t.y*t.y,s=t.y*t.z,l=t.y*t.w,f=t.z*t.z,h=t.z*t.w,d=t.w*t.w,m=r-u-f+d,y=2*(i-h),p=2*(a+l),v=2*(i+h),w=-r+u-f+d,E=2*(s-o),g=2*(a-l),x=2*(s+o),M=-r-u+f+d;return n(e)?(e[0]=m,e[1]=v,e[2]=g,e[3]=y,e[4]=w,e[5]=x,e[6]=p,e[7]=E,e[8]=M,e):new c(m,y,p,v,w,E,g,x,M)},c.fromScale=function(t,e){return n(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=t.y,e[5]=0,e[6]=0,e[7]=0,e[8]=t.z,e):new c(t.x,0,0,0,t.y,0,0,0,t.z)},c.fromUniformScale=function(t,e){return n(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=t,e[5]=0,e[6]=0,e[7]=0,e[8]=t,e):new c(t,0,0,0,t,0,0,0,t)},c.fromCrossProduct=function(t,e){return n(e)?(e[0]=0,e[1]=t.z,e[2]=-t.y,e[3]=-t.z,e[4]=0,e[5]=t.x,e[6]=t.y,e[7]=-t.x,e[8]=0,e):new c(0,-t.z,t.y,t.z,0,-t.x,-t.y,t.x,0)},c.fromRotationX=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=r,e[5]=i,e[6]=0,e[7]=-i,e[8]=r,e):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=0,e[2]=-i,e[3]=0,e[4]=1,e[5]=0,e[6]=i,e[7]=0,e[8]=r,e):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=i,e[2]=0,e[3]=-i,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8]]},c.getElementIndex=function(t,e){return 3*t+e},c.getColumn=function(t,e,n){var r=3*e,i=t[r],a=t[r+1],o=t[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=3*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(t,e,n){var r=t[e],i=t[e+3],a=t[e+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+3]=n.y,r[e+6]=n.z,r};var l=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],l)),n.y=t.magnitude(t.fromElements(e[3],e[4],e[5],l)),n.z=t.magnitude(t.fromElements(e[6],e[7],e[8],l)),n};var f=new t;c.getMaximumScale=function(e){return c.getScale(e,f),t.maximumComponent(f)},c.multiply=function(t,e,n){var r=t[0]*e[0]+t[3]*e[1]+t[6]*e[2],i=t[1]*e[0]+t[4]*e[1]+t[7]*e[2],a=t[2]*e[0]+t[5]*e[1]+t[8]*e[2],o=t[0]*e[3]+t[3]*e[4]+t[6]*e[5],u=t[1]*e[3]+t[4]*e[4]+t[7]*e[5],s=t[2]*e[3]+t[5]*e[4]+t[8]*e[5],c=t[0]*e[6]+t[3]*e[7]+t[6]*e[8],l=t[1]*e[6]+t[4]*e[7]+t[7]*e[8],f=t[2]*e[6]+t[5]*e[7]+t[8]*e[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[3]*i+t[6]*a,u=t[1]*r+t[4]*i+t[7]*a,s=t[2]*r+t[5]*i+t[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n},c.multiplyByScale=function(t,e,n){return n[0]=t[0]*e.x,n[1]=t[1]*e.x,n[2]=t[2]*e.x,n[3]=t[3]*e.y,n[4]=t[4]*e.y,n[5]=t[5]*e.y,n[6]=t[6]*e.z,n[7]=t[7]*e.z,n[8]=t[8]*e.z,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e},c.transpose=function(t,e){var n=t[0],r=t[3],i=t[6],a=t[1],o=t[4],u=t[7],s=t[2],c=t[5],l=t[8];return e[0]=n,e[1]=r,e[2]=i,e[3]=a,e[4]=o,e[5]=u,e[6]=s,e[7]=c,e[8]=l,e};var h=[1,0,0],d=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(t,e){var r=a.EPSILON20,i=10,l=0,f=0;n(e)||(e={});for(var h=e.unitary=c.clone(c.IDENTITY,e.unitary),d=e.diagonal=c.clone(t,e.diagonal),p=r*o(d);i>f&&u(d)>p;)s(d,m),c.transpose(m,y),c.multiply(d,m,d),c.multiply(y,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e},c.determinant=function(t){var e=t[0],n=t[3],r=t[6],i=t[1],a=t[4],o=t[7],u=t[2],s=t[5],c=t[8];return e*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(t,e){var n=t[0],i=t[1],o=t[2],u=t[3],s=t[4],l=t[5],f=t[6],h=t[7],d=t[8],m=c.determinant(t);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");e[0]=s*d-h*l,e[1]=h*o-i*d,e[2]=i*l-s*o,e[3]=f*l-u*d,e[4]=n*d-f*o,e[5]=u*o-n*l,e[6]=u*h-f*s,e[7]=f*i-n*h,e[8]=n*s-u*i;var y=1/m;return c.multiplyByScalar(e,y,e)},c.equals=function(t,e){return t===e||n(t)&&n(e)&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]},c.equalsEpsilon=function(t,e,r){return t===e||n(t)&&n(e)&&Math.abs(t[0]-e[0])<=r&&Math.abs(t[1]-e[1])<=r&&Math.abs(t[2]-e[2])<=r&&Math.abs(t[3]-e[3])<=r&&Math.abs(t[4]-e[4])<=r&&Math.abs(t[5]-e[5])<=r&&Math.abs(t[6]-e[6])<=r&&Math.abs(t[7]-e[7])<=r&&Math.abs(t[8]-e[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(t){"use strict";var e=function(t){this.name="RuntimeError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(t,e,n,r,i,a,o,u,s){"use strict";var c=function(t,e,r,i,a,o,u,s,c,l,f,h,d,m,y,p){this[0]=n(t,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(e,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(y,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(p,0)};c.packedLength=16,c.pack=function(t,e,r){r=n(r,0),e[r++]=t[0],e[r++]=t[1],e[r++]=t[2],e[r++]=t[3],e[r++]=t[4],e[r++]=t[5],e[r++]=t[6],e[r++]=t[7],e[r++]=t[8],e[r++]=t[9],e[r++]=t[10],e[r++]=t[11],e[r++]=t[12],e[r++]=t[13],e[r++]=t[14],e[r]=t[15]},c.unpack=function(t,e,i){return e=n(e,0),r(i)||(i=new c),i[0]=t[e++],i[1]=t[e++],i[2]=t[e++],i[3]=t[e++],i[4]=t[e++],i[5]=t[e++],i[6]=t[e++],i[7]=t[e++],i[8]=t[e++],i[9]=t[e++],i[10]=t[e++],i[11]=t[e++],i[12]=t[e++],i[13]=t[e++],i[14]=t[e++],i[15]=t[e],i},c.clone=function(t,e){return r(t)?r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):new c(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},c.fromRotationTranslation=function(e,i,a){return i=n(i,t.ZERO),r(a)?(a[0]=e[0],a[1]=e[1],a[2]=e[2],a[3]=0,a[4]=e[3],a[5]=e[4],a[6]=e[5],a[7]=0,a[8]=e[6],a[9]=e[7],a[10]=e[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(e[0],e[3],e[6],i.x,e[1],e[4],e[7],i.y,e[2],e[5],e[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(t,e,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=e.x*e.x,l=e.x*e.y,f=e.x*e.z,h=e.x*e.w,d=e.y*e.y,m=e.y*e.z,y=e.y*e.w,p=e.z*e.z,v=e.z*e.w,w=e.w*e.w,E=s-d-p+w,g=2*(l-v),x=2*(f+y),M=2*(l+v),z=-s+d-p+w,S=2*(m-h),O=2*(f-y),T=2*(m+h),R=-s-d+p+w;return i[0]=E*a,i[1]=M*a,i[2]=O*a,i[3]=0,i[4]=g*o,i[5]=z*o,i[6]=T*o,i[7]=0,i[8]=x*u,i[9]=S*u,i[10]=R*u,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,i},c.fromTranslation=function(t,e){return c.fromRotationTranslation(u.IDENTITY,t,e)},c.fromScale=function(t,e){return r(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t.y,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t.z,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t.x,0,0,0,0,t.y,0,0,0,0,t.z,0,0,0,0,1)},c.fromUniformScale=function(t,e){return r(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t,0,0,0,0,t,0,0,0,0,t,0,0,0,0,1)};var l=new t,f=new t,h=new t;c.fromCamera=function(e,n){var i=e.eye,a=e.target,o=e.up;t.normalize(t.subtract(a,i,l),l),t.normalize(t.cross(l,o,f),f),t.normalize(t.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,y=l.y,p=l.z,v=h.x,w=h.y,E=h.z,g=i.x,x=i.y,M=i.z,z=u*-g+s*-x+d*-M,S=v*-g+w*-x+E*-M,O=m*g+y*x+p*M;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=w,n[6]=-y,n[7]=0,n[8]=d,n[9]=E,n[10]=-p,n[11]=0,n[12]=z,n[13]=S,n[14]=O,n[15]=1,n):new c(u,s,d,z,v,w,E,S,-m,-y,-p,O,0,0,0,1)},c.computePerspectiveFieldOfView=function(t,e,n,r,i){var a=Math.tan(.5*t),o=1/a,u=o/e,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(t,e,n,r,i,a,o){var u=1/(e-t),s=1/(r-n),c=1/(a-i),l=-(e+t)*u,f=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o +},c.computePerspectiveOffCenter=function(t,e,n,r,i,a,o){var u=2*i/(e-t),s=2*i/(r-n),c=(e+t)/(e-t),l=(r+n)/(r-n),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(t,e,n,r,i,a){var o=2*i/(e-t),u=2*i/(r-n),s=(e+t)/(e-t),c=(r+n)/(r-n),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(t,e,r,i){t=n(t,n.EMPTY_OBJECT);var a=n(t.x,0),o=n(t.y,0),u=n(t.width,0),s=n(t.height,0);e=n(e,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-e),h=c,d=l,m=f,y=a+c,p=o+l,v=e+f,w=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=y,i[13]=p,i[14]=v,i[15]=w,i},c.toArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},c.getElementIndex=function(t,e){return 4*t+e},c.getColumn=function(t,e,n){var r=4*e,i=t[r],a=t[r+1],o=t[r+2],u=t[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=4*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(t,e,n){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=t[15],n},c.getRow=function(t,e,n){var r=t[e],i=t[e+4],a=t[e+8],o=t[e+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+4]=n.y,r[e+8]=n.z,r[e+12]=n.w,r};var d=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],d)),n.y=t.magnitude(t.fromElements(e[4],e[5],e[6],d)),n.z=t.magnitude(t.fromElements(e[8],e[9],e[10],d)),n};var m=new t;c.getMaximumScale=function(e){return c.getScale(e,m),t.maximumComponent(m)},c.multiply=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[3],u=t[4],s=t[5],c=t[6],l=t[7],f=t[8],h=t[9],d=t[10],m=t[11],y=t[12],p=t[13],v=t[14],w=t[15],E=e[0],g=e[1],x=e[2],M=e[3],z=e[4],S=e[5],O=e[6],T=e[7],R=e[8],_=e[9],I=e[10],N=e[11],b=e[12],P=e[13],A=e[14],C=e[15],L=r*E+u*g+f*x+y*M,q=i*E+s*g+h*x+p*M,U=a*E+c*g+d*x+v*M,B=o*E+l*g+m*x+w*M,D=r*z+u*S+f*O+y*T,W=i*z+s*S+h*O+p*T,F=a*z+c*S+d*O+v*T,k=o*z+l*S+m*O+w*T,G=r*R+u*_+f*I+y*N,V=i*R+s*_+h*I+p*N,Y=a*R+c*_+d*I+v*N,j=o*R+l*_+m*I+w*N,Z=r*b+u*P+f*A+y*C,H=i*b+s*P+h*A+p*C,X=a*b+c*P+d*A+v*C,K=o*b+l*P+m*A+w*C;return n[0]=L,n[1]=q,n[2]=U,n[3]=B,n[4]=D,n[5]=W,n[6]=F,n[7]=k,n[8]=G,n[9]=V,n[10]=Y,n[11]=j,n[12]=Z,n[13]=H,n[14]=X,n[15]=K,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n[9]=t[9]+e[9],n[10]=t[10]+e[10],n[11]=t[11]+e[11],n[12]=t[12]+e[12],n[13]=t[13]+e[13],n[14]=t[14]+e[14],n[15]=t[15]+e[15],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n[9]=t[9]-e[9],n[10]=t[10]-e[10],n[11]=t[11]-e[11],n[12]=t[12]-e[12],n[13]=t[13]-e[13],n[14]=t[14]-e[14],n[15]=t[15]-e[15],n},c.multiplyTransformation=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=t[12],d=t[13],m=t[14],y=e[0],p=e[1],v=e[2],w=e[4],E=e[5],g=e[6],x=e[8],M=e[9],z=e[10],S=e[12],O=e[13],T=e[14],R=r*y+o*p+c*v,_=i*y+u*p+l*v,I=a*y+s*p+f*v,N=r*w+o*E+c*g,b=i*w+u*E+l*g,P=a*w+s*E+f*g,A=r*x+o*M+c*z,C=i*x+u*M+l*z,L=a*x+s*M+f*z,q=r*S+o*O+c*T+h,U=i*S+u*O+l*T+d,B=a*S+s*O+f*T+m;return n[0]=R,n[1]=_,n[2]=I,n[3]=0,n[4]=N,n[5]=b,n[6]=P,n[7]=0,n[8]=A,n[9]=C,n[10]=L,n[11]=0,n[12]=q,n[13]=U,n[14]=B,n[15]=1,n},c.multiplyByMatrix3=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=e[0],d=e[1],m=e[2],y=e[3],p=e[4],v=e[5],w=e[6],E=e[7],g=e[8],x=r*h+o*d+c*m,M=i*h+u*d+l*m,z=a*h+s*d+f*m,S=r*y+o*p+c*v,O=i*y+u*p+l*v,T=a*y+s*p+f*v,R=r*w+o*E+c*g,_=i*w+u*E+l*g,I=a*w+s*E+f*g;return n[0]=x,n[1]=M,n[2]=z,n[3]=0,n[4]=S,n[5]=O,n[6]=T,n[7]=0,n[8]=R,n[9]=_,n[10]=I,n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n},c.multiplyByTranslation=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=r*t[0]+i*t[4]+a*t[8]+t[12],u=r*t[1]+i*t[5]+a*t[9]+t[13],s=r*t[2]+i*t[6]+a*t[10]+t[14];return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=o,n[13]=u,n[14]=s,n[15]=t[15],n};var y=new t;c.multiplyByUniformScale=function(t,e,n){return y.x=e,y.y=e,y.z=e,c.multiplyByScale(t,y,n)},c.multiplyByScale=function(t,e,n){var r=e.x,i=e.y,a=e.z;return 1===r&&1===i&&1===a?c.clone(t,n):(n[0]=r*t[0],n[1]=r*t[1],n[2]=r*t[2],n[3]=0,n[4]=i*t[4],n[5]=i*t[5],n[6]=i*t[6],n[7]=0,n[8]=a*t[8],n[9]=a*t[9],n[10]=a*t[10],n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=1,n)},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t[0]*r+t[4]*i+t[8]*a+t[12]*o,s=t[1]*r+t[5]*i+t[9]*a+t[13]*o,c=t[2]*r+t[6]*i+t[10]*a+t[14]*o,l=t[3]*r+t[7]*i+t[11]*a+t[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a,u=t[1]*r+t[5]*i+t[9]*a,s=t[2]*r+t[6]*i+t[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a+t[12],u=t[1]*r+t[5]*i+t[9]*a+t[13],s=t[2]*r+t[6]*i+t[10]*a+t[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n[9]=t[9]*e,n[10]=t[10]*e,n[11]=t[11]*e,n[12]=t[12]*e,n[13]=t[13]*e,n[14]=t[14]*e,n[15]=t[15]*e,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e[11]=-t[11],e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=-t[15],e},c.transpose=function(t,e){var n=t[1],r=t[2],i=t[3],a=t[6],o=t[7],u=t[11];return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[10]=t[10],e[11]=t[14],e[12]=i,e[13]=o,e[14]=u,e[15]=t[15],e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e[9]=Math.abs(t[9]),e[10]=Math.abs(t[10]),e[11]=Math.abs(t[11]),e[12]=Math.abs(t[12]),e[13]=Math.abs(t[13]),e[14]=Math.abs(t[14]),e[15]=Math.abs(t[15]),e},c.equals=function(t,e){return t===e||r(t)&&r(e)&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[3]===e[3]&&t[7]===e[7]&&t[11]===e[11]&&t[15]===e[15]},c.equalsEpsilon=function(t,e,n){return t===e||r(t)&&r(e)&&Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n&&Math.abs(t[4]-e[4])<=n&&Math.abs(t[5]-e[5])<=n&&Math.abs(t[6]-e[6])<=n&&Math.abs(t[7]-e[7])<=n&&Math.abs(t[8]-e[8])<=n&&Math.abs(t[9]-e[9])<=n&&Math.abs(t[10]-e[10])<=n&&Math.abs(t[11]-e[11])<=n&&Math.abs(t[12]-e[12])<=n&&Math.abs(t[13]-e[13])<=n&&Math.abs(t[14]-e[14])<=n&&Math.abs(t[15]-e[15])<=n},c.getTranslation=function(t,e){return e.x=t[12],e.y=t[13],e.z=t[14],e},c.getRotation=function(t,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e};var p=new u,v=new u,w=new e,E=new e(0,0,0,1);return c.inverse=function(t,n){if(u.equalsEpsilon(c.getRotation(t,p),v,o.EPSILON7)&&e.equals(c.getRow(t,3,w),E))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-t[12],n[13]=-t[13],n[14]=-t[14],n[15]=1,n;var r=t[0],i=t[4],a=t[8],l=t[12],f=t[1],h=t[5],d=t[9],m=t[13],y=t[2],g=t[6],x=t[10],M=t[14],z=t[3],S=t[7],O=t[11],T=t[15],R=x*T,_=M*O,I=g*T,N=M*S,b=g*O,P=x*S,A=y*T,C=M*z,L=y*O,q=x*z,U=y*S,B=g*z,D=R*h+N*d+b*m-(_*h+I*d+P*m),W=_*f+A*d+q*m-(R*f+C*d+L*m),F=I*f+C*h+U*m-(N*f+A*h+B*m),k=P*f+L*h+B*d-(b*f+q*h+U*d),G=_*i+I*a+P*l-(R*i+N*a+b*l),V=R*r+C*a+L*l-(_*r+A*a+q*l),Y=N*r+A*i+B*l-(I*r+C*i+U*l),j=b*r+q*i+U*a-(P*r+L*i+B*a);R=a*m,_=l*d,I=i*m,N=l*h,b=i*d,P=a*h,A=r*m,C=l*f,L=r*d,q=a*f,U=r*h,B=i*f;var Z=R*S+N*O+b*T-(_*S+I*O+P*T),H=_*z+A*O+q*T-(R*z+C*O+L*T),X=I*z+C*S+U*T-(N*z+A*S+B*T),K=P*z+L*S+B*O-(b*z+q*S+U*O),J=I*x+P*M+_*g-(b*M+R*g+N*x),Q=L*M+R*y+C*x-(A*x+q*M+_*y),$=A*g+B*M+N*y-(U*M+I*y+C*g),te=U*x+b*y+q*g-(L*g+B*x+P*y),ee=r*D+i*W+a*F+l*k;if(Math.abs(ee)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return ee=1/ee,n[0]=D*ee,n[1]=W*ee,n[2]=F*ee,n[3]=k*ee,n[4]=G*ee,n[5]=V*ee,n[6]=Y*ee,n[7]=j*ee,n[8]=Z*ee,n[9]=H*ee,n[10]=X*ee,n[11]=K*ee,n[12]=J*ee,n[13]=Q*ee,n[14]=$*ee,n[15]=te*ee,n},c.inverseTransformation=function(t,e){var n=t[0],r=t[1],i=t[2],a=t[4],o=t[5],u=t[6],s=t[8],c=t[9],l=t[10],f=t[12],h=t[13],d=t[14],m=-n*f-r*h-i*d,y=-a*f-o*h-u*d,p=-s*f-c*h-l*d;return e[0]=n,e[1]=a,e[2]=s,e[3]=0,e[4]=r,e[5]=o,e[6]=c,e[7]=0,e[8]=i,e[9]=u,e[10]=l,e[11]=0,e[12]=m,e[13]=y,e[14]=p,e[15]=1,e},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]&&t[9]===e[n+9]&&t[10]===e[n+10]&&t[11]===e[n+11]&&t[12]===e[n+12]&&t[13]===e[n+13]&&t[14]===e[n+14]&&t[15]===e[n+15]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e,n){this.normal=t.clone(e),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-t.dot(r,n);return e(a)?(t.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new t;return i.fromCartesian4=function(n,r){var o=t.fromCartesian4(n,a),u=n.w;return e(r)?(t.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(e,n){return t.dot(e.normal,n)+e.distance},i.ORIGIN_XY_PLANE=r(new i(t.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(t.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(t.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";var s=function(t,n,r,i){this.west=e(t,0),this.south=e(n,0),this.east=e(r,0),this.north=e(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(t,n,r){r=e(r,0),n[r++]=t.west,n[r++]=t.south,n[r++]=t.east,n[r]=t.north},s.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new s),i.west=t[r++],i.south=t[r++],i.east=t[r++],i.north=t[r],i},s.computeWidth=function(t){var e=t.east,n=t.west;return n>e&&(e+=u.TWO_PI),e-n},s.computeHeight=function(t){return t.north-t.south},s.fromDegrees=function(t,r,i,a,o){return t=u.toRadians(e(t,0)),r=u.toRadians(e(r,0)),i=u.toRadians(e(i,0)),a=u.toRadians(e(a,0)),n(o)?(o.west=t,o.south=r,o.east=i,o.north=a,o):new s(t,r,i,a)},s.fromCartographicArray=function(t,e){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=t.length;c>u;u++){var l=t[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(e)?(e.west=r,e.south=a,e.east=i,e.north=o,e):new s(r,a,i,o)},s.clone=function(t,e){return n(t)?n(e)?(e.west=t.west,e.south=t.south,e.east=t.east,e.north=t.north,e):new s(t.west,t.south,t.east,t.north):void 0},s.prototype.clone=function(t){return s.clone(this,t)},s.prototype.equals=function(t){return s.equals(this,t)},s.equals=function(t,e){return t===e||n(t)&&n(e)&&t.west===e.west&&t.south===e.south&&t.east===e.east&&t.north===e.north},s.prototype.equalsEpsilon=function(t,e){return n(t)&&Math.abs(this.west-t.west)<=e&&Math.abs(this.south-t.south)<=e&&Math.abs(this.east-t.east)<=e&&Math.abs(this.north-t.north)<=e},s.validate=function(){},s.southwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.south,r.height=0,r):new t(e.west,e.south)},s.northwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.north,r.height=0,r):new t(e.west,e.north)},s.northeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.north,r.height=0,r):new t(e.east,e.north)},s.southeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.south,r.height=0,r):new t(e.east,e.south)},s.center=function(e,r){var i=e.east,a=e.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(e.south+e.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new t(o,s)},s.intersection=function(t,e,r){var i=t.east,a=t.west,o=e.east,c=e.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((t.west<t.east||e.west<e.east)&&l>=f)return void 0;var h=Math.max(t.south,e.south),d=Math.min(t.north,e.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(t,e){var n=e.longitude,r=e.latitude,i=t.west,a=t.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=t.south&&r<=t.north};var c=new t;return s.subsample=function(t,r,i,o){r=e(r,a.WGS84),i=e(i,0),n(o)||(o=[]);var l=0,f=t.north,h=t.south,d=t.east,m=t.west,y=c;y.height=i,y.longitude=m,y.latitude=f,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=h,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=0>f?f:h>0?h:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(t,y)&&(o[l]=r.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(t,e,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(e,r){this.center=t.clone(n(e,t.ZERO)),this.radius=n(r,0)},m=new t,y=new t,p=new t,v=new t,w=new t,E=new t,g=new t,x=new t,M=new t,z=new t,S=new t,O=new t;d.fromPoints=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;for(var i=t.clone(e[0],g),a=t.clone(i,m),o=t.clone(i,y),u=t.clone(i,p),s=t.clone(i,v),c=t.clone(i,w),l=t.clone(i,E),f=e.length,h=1;f>h;h++){t.clone(e[h],i);var T=i.x,R=i.y,_=i.z;T<a.x&&t.clone(i,a),T>s.x&&t.clone(i,s),R<o.y&&t.clone(i,o),R>c.y&&t.clone(i,c),_<u.z&&t.clone(i,u),_>l.z&&t.clone(i,l)}var I=t.magnitudeSquared(t.subtract(s,a,x)),N=t.magnitudeSquared(t.subtract(c,o,x)),b=t.magnitudeSquared(t.subtract(l,u,x)),P=a,A=s,C=I;N>C&&(C=N,P=o,A=c),b>C&&(C=b,P=u,A=l);var L=M;L.x=.5*(P.x+A.x),L.y=.5*(P.y+A.y),L.z=.5*(P.z+A.z);var q=t.magnitudeSquared(t.subtract(A,L,x)),U=Math.sqrt(q),B=z;B.x=a.x,B.y=o.y,B.z=u.z;var D=S;D.x=s.x,D.y=c.y,D.z=l.z;var W=t.multiplyByScalar(t.add(B,D,x),.5,O),F=0;for(h=0;f>h;h++){t.clone(e[h],i);var k=t.magnitude(t.subtract(i,W,x));k>F&&(F=k);var G=t.magnitudeSquared(t.subtract(i,L,x));if(G>q){var V=Math.sqrt(G);U=.5*(U+V),q=U*U;var Y=V-U;L.x=(U*L.x+Y*i.x)/V,L.y=(U*L.y+Y*i.y)/V,L.z=(U*L.z+Y*i.z)/V}}return F>U?(t.clone(L,n.center),n.radius=U):(t.clone(W,n.center),n.radius=F),n};var T=new u,R=new t,_=new t,I=new e,N=new e;d.fromRectangle2D=function(t,e,n){return d.fromRectangleWithHeights2D(t,e,0,0,n)},d.fromRectangleWithHeights2D=function(e,i,a,o,u){if(r(u)||(u=new d),!r(e))return u.center=t.clone(t.ZERO,u.center),u.radius=0,u;i=n(i,T),h.southwest(e,I),I.height=a,h.northeast(e,N),N.height=o;var s=i.project(I,R),c=i.project(N,_),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*f,y.z=s.z+.5*m,u};var b=[];d.fromRectangle3D=function(t,e,i,a){e=n(e,o.WGS84),i=n(i,0);var u;return r(t)&&(u=h.subsample(t,e,i,b)),d.fromPoints(u,a)},d.fromVertices=function(e,i,a,o){if(r(o)||(o=new d),!r(e)||0===e.length)return o.center=t.clone(t.ZERO,o.center),o.radius=0,o;i=n(i,t.ZERO),a=n(a,3);var u=g;u.x=e[0]+i.x,u.y=e[1]+i.y,u.z=e[2]+i.z;for(var s=t.clone(u,m),c=t.clone(u,y),l=t.clone(u,p),f=t.clone(u,v),h=t.clone(u,w),T=t.clone(u,E),R=e.length,_=0;R>_;_+=a){var I=e[_]+i.x,N=e[_+1]+i.y,b=e[_+2]+i.z;u.x=I,u.y=N,u.z=b,I<s.x&&t.clone(u,s),I>f.x&&t.clone(u,f),N<c.y&&t.clone(u,c),N>h.y&&t.clone(u,h),b<l.z&&t.clone(u,l),b>T.z&&t.clone(u,T)}var P=t.magnitudeSquared(t.subtract(f,s,x)),A=t.magnitudeSquared(t.subtract(h,c,x)),C=t.magnitudeSquared(t.subtract(T,l,x)),L=s,q=f,U=P;A>U&&(U=A,L=c,q=h),C>U&&(U=C,L=l,q=T);var B=M;B.x=.5*(L.x+q.x),B.y=.5*(L.y+q.y),B.z=.5*(L.z+q.z);var D=t.magnitudeSquared(t.subtract(q,B,x)),W=Math.sqrt(D),F=z;F.x=s.x,F.y=c.y,F.z=l.z;var k=S;k.x=f.x,k.y=h.y,k.z=T.z;var G=t.multiplyByScalar(t.add(F,k,x),.5,O),V=0;for(_=0;R>_;_+=a){u.x=e[_]+i.x,u.y=e[_+1]+i.y,u.z=e[_+2]+i.z;var Y=t.magnitude(t.subtract(u,G,x));Y>V&&(V=Y);var j=t.magnitudeSquared(t.subtract(u,B,x));if(j>D){var Z=Math.sqrt(j);W=.5*(W+Z),D=W*W;var H=Z-W;B.x=(W*B.x+H*u.x)/Z,B.y=(W*B.y+H*u.y)/Z,B.z=(W*B.z+H*u.z)/Z}}return V>W?(t.clone(B,o.center),o.radius=W):(t.clone(G,o.center),o.radius=V),o},d.fromCornerPoints=function(e,n,i){r(i)||(i=new d);var a=i.center;return t.add(e,n,a),t.multiplyByScalar(a,.5,a),i.radius=t.distance(a,n),i},d.fromEllipsoid=function(e,n){return r(n)||(n=new d),t.clone(t.ZERO,n.center),n.radius=e.maximumRadius,n};var P=new t;d.fromBoundingSpheres=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;var i=e.length;if(1===i)return d.clone(e[0],n);if(2===i)return d.union(e[0],e[1],n);for(var a=[],o=0;i>o;o++)a.push(e[o].center);n=d.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=e[o];s=Math.max(s,t.distance(u,c.center,P)+c.radius)}return n.radius=s,n},d.clone=function(e,n){return r(e)?r(n)?(n.center=t.clone(e.center,n.center),n.radius=e.radius,n):new d(e.center,e.radius):void 0},d.packedLength=4,d.pack=function(t,e,r){r=n(r,0);var i=t.center;e[r++]=i.x,e[r++]=i.y,e[r++]=i.z,e[r]=t.radius},d.unpack=function(t,e,i){e=n(e,0),r(i)||(i=new d);var a=i.center;return a.x=t[e++],a.y=t[e++],a.z=t[e++],i.radius=t[e],i};var A=new t,C=new t;d.union=function(e,n,i){r(i)||(i=new d);var a=e.center,o=e.radius,u=n.center,s=n.radius,c=t.subtract(u,a,A),l=t.magnitude(c);if(o>=l+s)return e.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),h=t.multiplyByScalar(c,(-o+f)/l,C);return t.add(h,a,h),t.clone(h,i.center),i.radius=f,i};var L=new t;d.expand=function(e,n,r){r=d.clone(e,r);var i=t.magnitude(t.subtract(n,r.center,L));return i>r.radius&&(r.radius=i),r},d.intersectPlane=function(e,n){var r=e.center,i=e.radius,a=n.normal,o=t.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new t,0);d.intersect=function(t,e){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(e,q);return d.intersectPlane(t,n)},d.transform=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=l.getMaximumScale(e)*t.radius,n};var U=new t;d.distanceSquaredTo=function(e,n){var r=t.subtract(e.center,n,U);return t.magnitudeSquared(r)-e.radius*e.radius},d.transformWithoutScale=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=t.radius,n};var B=new t;d.computePlaneDistances=function(e,n,i,a){r(a)||(a=new c);var o=t.subtract(e.center,n,B),u=t.multiplyByScalar(i,t.dot(i,o),B),s=t.magnitude(u);return a.start=s-e.radius,a.stop=s+e.radius,a};for(var D=new t,W=new t,F=new t,k=new t,G=new t,V=new e,Y=new Array(8),j=0;8>j;++j)Y[j]=new t;var Z=new u;return d.projectTo2D=function(e,r,i){r=n(r,Z);var a=r.ellipsoid,o=e.center,u=e.radius,s=a.geodeticSurfaceNormal(o,D),c=t.cross(t.UNIT_Z,s,W);t.normalize(c,c);var l=t.cross(s,c,F);t.normalize(l,l),t.multiplyByScalar(s,u,s),t.multiplyByScalar(l,u,l),t.multiplyByScalar(c,u,c);var f=t.negate(l,G),h=t.negate(c,k),m=Y,y=m[0];t.add(s,l,y),t.add(y,c,y),y=m[1],t.add(s,l,y),t.add(y,h,y),y=m[2],t.add(s,f,y),t.add(y,h,y),y=m[3],t.add(s,f,y),t.add(y,c,y),t.negate(s,s),y=m[4],t.add(s,l,y),t.add(y,c,y),y=m[5],t.add(s,l,y),t.add(y,h,y),y=m[6],t.add(s,f,y),t.add(y,h,y),y=m[7],t.add(s,f,y),t.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var w=m[v];t.add(o,w,w);var E=a.cartesianToCartographic(w,V);r.project(E,w)}i=d.fromPoints(m,i),o=i.center;var g=o.x,x=o.y,M=o.z;return o.x=M,o.y=g,o.z=x,i},d.equals=function(e,n){return e===n||r(e)&&r(n)&&t.equals(e.center,n.center)&&e.radius===n.radius},d.prototype.intersectPlane=function(t){return d.intersectPlane(this,t)},d.prototype.intersect=function(t){return d.intersect(this,t)},d.prototype.equals=function(t){return d.equals(this,t)},d.prototype.clone=function(t){return d.clone(this,t)},d}),define("Core/Fullscreen",["./defined","./defineProperties"],function(t,e){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return e(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(t(n))return n;n=!1;var e=document.body;if("function"==typeof e.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof e[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof e[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",t(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",t(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",t(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",t(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(t){i.supportsFullscreen()&&t[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(t,e,n){"use strict";function r(t){for(var e=t.split("."),n=0,r=e.length;r>n;++n)e[n]=parseInt(e[n],10);return e}function i(){if(!e(p)){p=!1;var t=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(p=!0,v=r(t[1]))}return p}function a(){return i()&&v}function o(){if(!e(w)&&(w=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var t=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(w=!0,E=r(t[1]))}return w}function u(){return o()&&E}function s(){if(!e(g)){g=!1;var t=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==t&&(g=!0,x=r(t[1]),x.isNightly=!!t[2])}return g}function c(){return s()&&x}function l(){if(!e(M)){M=!1;var t;"Microsoft Internet Explorer"===navigator.appName?(t=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(M=!0,z=r(t[1]))):"Netscape"===navigator.appName&&(t=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(M=!0,z=r(t[1])))}return M}function f(){return l()&&z}function h(){if(!e(S)){S=!1;var t=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(S=!0,O=r(t[1]))}return S}function d(){return e(T)||(T=/Windows/i.test(navigator.appVersion)),T}function m(){return h()&&O}function y(){return e(R)||(R=e(window.PointerEvent)&&(!e(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),R}var p,v,w,E,g,x,M,z,S,O,T,R,_={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:t(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return _.supportsFullscreen=function(){return n.supportsFullscreen()},_.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},_.supportsWebWorkers=function(){return"undefined"!=typeof Worker},_}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(t,e,n,r,i){"use strict";if(!r.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(t){switch(t){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},a.fromTypedArray=function(t){return t instanceof Int8Array?a.BYTE:t instanceof Uint8Array?a.UNSIGNED_BYTE:t instanceof Int16Array?a.SHORT:t instanceof Uint16Array?a.UNSIGNED_SHORT:t instanceof Float32Array?a.FLOAT:t instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(t){return e(t)&&(t===a.BYTE||t===a.UNSIGNED_BYTE||t===a.SHORT||t===a.UNSIGNED_SHORT||t===a.FLOAT||t===a.DOUBLE)},a.createTypedArray=function(t,e){switch(t){case a.BYTE:return new Int8Array(e);case a.UNSIGNED_BYTE:return new Uint8Array(e);case a.SHORT:return new Int16Array(e);case a.UNSIGNED_SHORT:return new Uint16Array(e);case a.FLOAT:return new Float32Array(e);case a.DOUBLE:return new Float64Array(e);default:throw new n("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(e,r,i,o){switch(i=t(i,0),o=t(o,(r.byteLength-i)/a.getSizeInBytes(e)),e){case a.BYTE:return new Int8Array(r,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(r,i,o);case a.SHORT:return new Int16Array(r,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(r,i,o);case a.FLOAT:return new Float32Array(r,i,o);case a.DOUBLE:return new Float64Array(r,i,o);default:throw new n("componentDatatype is not a valid value.")}},i(a)}),define("Core/GeometryType",["./freezeObject"],function(t){"use strict";var e={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return t(e)}),define("Core/PrimitiveType",["./freezeObject"],function(t){"use strict";var e={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(t){return t===e.POINTS||t===e.LINES||t===e.LINE_LOOP||t===e.LINE_STRIP||t===e.TRIANGLES||t===e.TRIANGLE_STRIP||t===e.TRIANGLE_FAN}};return t(e)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(t,e,n,r,i){"use strict";var a=function(e){e=t(e,t.EMPTY_OBJECT),this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=t(e.primitiveType,i.TRIANGLES),this.boundingSphere=e.boundingSphere,this.geometryType=t(e.geometryType,r.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(t){var r=-1;for(var i in t.attributes)if(t.attributes.hasOwnProperty(i)&&e(t.attributes[i])&&e(t.attributes[i].values)){var a=t.attributes[i],o=a.values.length/a.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=t(e.normalize,!1),this.values=e.values};return e}),define("Core/GeometryAttributes",["./defaultValue"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.position=e.position,this.normal=e.normal,this.st=e.st,this.binormal=e.binormal,this.tangent=e.tangent,this.color=e.color};return e}),define("Core/BoxOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Geometry","./GeometryAttribute","./GeometryAttributes","./PrimitiveType"],function(t,e,n,r,i,a,o,u,s,c){"use strict";var l=new e,f=function(t){t=r(t,r.EMPTY_OBJECT);var n=t.minimumCorner,i=t.maximumCorner;this._min=e.clone(n),this._max=e.clone(i),this._workerName="createBoxOutlineGeometry"};f.fromDimensions=function(t){t=r(t,r.EMPTY_OBJECT);var n=t.dimensions,i=e.multiplyByScalar(n,.5,new e),a=e.negate(i,new e),o=i,u={minimumCorner:a,maximumCorner:o};return new f(u)},f.packedLength=2*e.packedLength,f.pack=function(t,n,i){i=r(i,0),e.pack(t._min,n,i),e.pack(t._max,n,i+e.packedLength)};var h=new e,d=new e,m={minimumCorner:h,maximumCorner:d};return f.unpack=function(t,n,a){n=r(n,0);var o=e.unpack(t,n,h),u=e.unpack(t,n+e.packedLength,d);return i(a)?(a._min=e.clone(o,a._min),a._max=e.clone(u,a._max),a):new f(m)},f.createGeometry=function(r){var i=r._min,a=r._max,f=new s,h=new Uint16Array(24),d=new Float64Array(24);d[0]=i.x,d[1]=i.y,d[2]=i.z,d[3]=a.x,d[4]=i.y,d[5]=i.z,d[6]=a.x,d[7]=a.y,d[8]=i.z,d[9]=i.x,d[10]=a.y,d[11]=i.z,d[12]=i.x,d[13]=i.y,d[14]=a.z,d[15]=a.x,d[16]=i.y,d[17]=a.z,d[18]=a.x,d[19]=a.y,d[20]=a.z,d[21]=i.x,d[22]=a.y,d[23]=a.z,f.position=new u({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:d}),h[0]=4,h[1]=5,h[2]=5,h[3]=6,h[4]=6,h[5]=7,h[6]=7,h[7]=4,h[8]=0,h[9]=1,h[10]=1,h[11]=2,h[12]=2,h[13]=3,h[14]=3,h[15]=0,h[16]=0,h[17]=4,h[18]=1,h[19]=5,h[20]=2,h[21]=6,h[22]=3,h[23]=7;var m=e.subtract(a,i,l),y=.5*e.magnitude(m);return new o({attributes:f,indices:h,primitiveType:c.LINES,boundingSphere:new t(e.ZERO,y)})},f}),define("Workers/createBoxOutlineGeometry",["../Core/BoxOutlineGeometry","../Core/defined"],function(t,e){"use strict";return function(n,r){return e(r)&&(n=t.unpack(n,r)),t.createGeometry(n)}})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createCircleGeometry.js b/libs/Cesium/Workers/createCircleGeometry.js new file mode 100644 index 0000000000..999d2f9d95 --- /dev/null +++ b/libs/Cesium/Workers/createCircleGeometry.js @@ -0,0 +1,61 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var r;for(this.mti==this.N+1&&this.init_genrand(5489),r=0;r<this.N-this.M;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+this.M]^e>>>1^t[1&e];for(;r<this.N-1;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};r.EPSILON1=.1,r.EPSILON2=.01,r.EPSILON3=.001,r.EPSILON4=1e-4,r.EPSILON5=1e-5,r.EPSILON6=1e-6,r.EPSILON7=1e-7,r.EPSILON8=1e-8,r.EPSILON9=1e-9,r.EPSILON10=1e-10,r.EPSILON11=1e-11,r.EPSILON12=1e-12,r.EPSILON13=1e-13,r.EPSILON14=1e-14,r.EPSILON15=1e-15,r.EPSILON16=1e-16,r.EPSILON17=1e-17,r.EPSILON18=1e-18,r.EPSILON19=1e-19,r.EPSILON20=1e-20,r.GRAVITATIONALPARAMETER=3986004418e5,r.SOLAR_RADIUS=6955e5,r.LUNAR_RADIUS=1737400,r.SIXTY_FOUR_KILOBYTES=65536,r.sign=function(e){return e>0?1:0>e?-1:0},r.signNotZero=function(e){return 0>e?-1:1},r.toSNorm=function(e){return Math.round(255*(.5*r.clamp(e,-1,1)+.5))},r.fromSNorm=function(e){return 2*(r.clamp(e,0,255)/255)-1},r.sinh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t-r)},r.cosh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t+r)},r.lerp=function(e,t,r){return(1-r)*e+r*t},r.PI=Math.PI,r.ONE_OVER_PI=1/Math.PI,r.PI_OVER_TWO=.5*Math.PI,r.PI_OVER_THREE=Math.PI/3,r.PI_OVER_FOUR=Math.PI/4,r.PI_OVER_SIX=Math.PI/6,r.THREE_PI_OVER_TWO=.5*3*Math.PI,r.TWO_PI=2*Math.PI,r.ONE_OVER_TWO_PI=1/(2*Math.PI),r.RADIANS_PER_DEGREE=Math.PI/180,r.DEGREES_PER_RADIAN=180/Math.PI,r.RADIANS_PER_ARCSECOND=r.RADIANS_PER_DEGREE/3600,r.toRadians=function(e){return e*r.RADIANS_PER_DEGREE},r.toDegrees=function(e){return e*r.DEGREES_PER_RADIAN},r.convertLongitudeRange=function(e){var t=r.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n},r.negativePiToPi=function(e){return r.zeroToTwoPi(e+r.PI)-r.PI},r.zeroToTwoPi=function(e){var t=r.mod(e,r.TWO_PI);return Math.abs(t)<r.EPSILON14&&Math.abs(e)>r.EPSILON14?r.TWO_PI:t},r.mod=function(e,t){return(e%t+t)%t},r.equalsEpsilon=function(e,r,n,i){i=t(i,n);var a=Math.abs(e-r);return i>=a||a<=n*Math.max(Math.abs(e),Math.abs(r))};var n=[1];r.factorial=function(e){var t=n.length;if(e>=t)for(var r=n[t-1],i=t;e>=i;i++)n.push(r*i);return n[e]},r.incrementWrap=function(e,r,n){return n=t(n,0),++e,e>r&&(e=n),e},r.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},r.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},r.clamp=function(e,t,r){return t>e?t:e>r?r:e};var i=new e;return r.setRandomNumberSeed=function(t){i=new e(t)},r.nextRandomNumber=function(){return i.random()},r.acosClamped=function(e){return Math.acos(r.clamp(e,-1,1))},r.asinClamped=function(e){return Math.asin(r.clamp(e,-1,1))},r.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},r}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i){"use strict";var a=function(t,r,n){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0)};a.fromSpherical=function(r,n){t(n)||(n=new a);var i=r.clock,o=r.cone,u=e(r.magnitude,1),s=u*Math.sin(o);return n.x=s*Math.cos(i),n.y=s*Math.sin(i),n.z=u*Math.cos(o),n},a.fromElements=function(e,r,n,i){return t(i)?(i.x=e,i.y=r,i.z=n,i):new a(e,r,n)},a.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r):new a(e.x,e.y,e.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n]=t.z},a.unpack=function(r,n,i){return n=e(n,0),t(i)||(i=new a),i.x=r[n++],i.y=r[n++],i.z=r[n],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},a.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r},a.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var r=a.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},a.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r},a.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r},a.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r},a.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r},a.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new a;a.lerp=function(e,t,r,n){return a.multiplyByScalar(t,r,u),n=a.multiplyByScalar(e,1-r,n),a.add(u,n,n)};var s=new a,c=new a;a.angleBetween=function(e,t){a.normalize(e,s),a.normalize(t,c);var r=a.dot(s,c),n=a.magnitude(a.cross(s,c,s));return Math.atan2(n,r)};var l=new a;a.mostOrthogonalAxis=function(e,t){var r=a.normalize(e,l);return a.abs(r,r),t=r.x<=r.y?r.x<=r.z?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Z,t):r.y<=r.z?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_Z,t)},a.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z},a.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]},a.equalsEpsilon=function(e,r,n,a){return e===r||t(e)&&t(r)&&i.equalsEpsilon(e.x,r.x,n,a)&&i.equalsEpsilon(e.y,r.y,n,a)&&i.equalsEpsilon(e.z,r.z,n,a)},a.cross=function(e,t,r){var n=e.x,i=e.y,a=e.z,o=t.x,u=t.y,s=t.z,c=i*s-a*u,l=a*o-n*s,f=n*u-i*o;return r.x=c,r.y=l,r.z=f,r},a.fromDegrees=function(e,t,r,n,o){var u=i.toRadians(e),s=i.toRadians(t);return a.fromRadians(u,s,r,n,o)};var f=new a,d=new a,h=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(r,n,i,o,u){i=e(i,0);var s=t(o)?o.radiiSquared:h,c=Math.cos(n);f.x=c*Math.cos(r),f.y=c*Math.sin(r),f.z=Math.sin(n),f=a.normalize(f,f),a.multiplyComponents(s,f,d);var l=Math.sqrt(a.dot(f,d));return d=a.divideByScalar(d,l,d),f=a.multiplyByScalar(f,i,f),t(u)||(u=new a),a.add(d,f,u)},a.fromDegreesArray=function(e,t,r){for(var n=new Array(e.length),o=0;o<e.length;o++)n[o]=i.toRadians(e[o]);return a.fromRadiansArray(n,t,r)},a.fromRadiansArray=function(e,r,n){var i=e.length;t(n)?n.length=i/2:n=new Array(i/2);for(var o=0;i>o;o+=2){var u=e[o],s=e[o+1];n[o/2]=a.fromRadians(u,s,0,r,n[o/2])}return n},a.fromDegreesArrayHeights=function(e,t,r){for(var n=new Array(e.length),o=0;o<e.length;o+=3)n[o]=i.toRadians(e[o]),n[o+1]=i.toRadians(e[o+1]),n[o+2]=e[o+2];return a.fromRadiansArrayHeights(n,t,r)},a.fromRadiansArrayHeights=function(e,r,n){var i=e.length;t(n)?n.length=i/3:n=new Array(i/3);for(var o=0;i>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];n[o/3]=a.fromRadians(u,s,c,r,n[o/3])}return n},a.ZERO=n(new a(0,0,0)),a.UNIT_X=n(new a(1,0,0)),a.UNIT_Y=n(new a(0,1,0)),a.UNIT_Z=n(new a(0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,r){return a.equalsEpsilon(this,e,t,r)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i){"use strict";var a=function(t,r,n){this.longitude=e(t,0),this.latitude=e(r,0),this.height=e(n,0)};return a.fromRadians=function(r,n,i,o){return i=e(i,0),t(o)?(o.longitude=r,o.latitude=n,o.height=i,o):new a(r,n,i)},a.fromDegrees=function(e,t,r,n){return e=i.toRadians(e),t=i.toRadians(t),a.fromRadians(e,t,r,n)},a.clone=function(e,r){return t(e)?t(r)?(r.longitude=e.longitude,r.latitude=e.latitude,r.height=e.height,r):new a(e.longitude,e.latitude,e.height):void 0},a.equals=function(e,r){return e===r||t(e)&&t(r)&&e.longitude===r.longitude&&e.latitude===r.latitude&&e.height===r.height},a.equalsEpsilon=function(e,r,n){return e===r||t(e)&&t(r)&&Math.abs(e.longitude-r.longitude)<=n&&Math.abs(e.latitude-r.latitude)<=n&&Math.abs(e.height-r.height)<=n},a.ZERO=n(new a(0,0,0)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t){return a.equalsEpsilon(this,e,t)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},r=function(r,n){e(t[r])||(t[r]=!0,console.log(n))};return r}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),r=Object.defineProperties;return t&&e(r)||(r=function(e){return e}),r}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i,a,o,u){"use strict";function s(t,n,i,a){n=r(n,0),i=r(i,0),a=r(a,0),t._radii=new e(n,i,a),t._radiiSquared=new e(n*n,i*i,a*a),t._radiiToTheFourth=new e(n*n*n*n,i*i*i*i,a*a*a*a),t._oneOverRadii=new e(0===n?0:1/n,0===i?0:1/i,0===a?0:1/a),t._oneOverRadiiSquared=new e(0===n?0:1/(n*n),0===i?0:1/(i*i),0===a?0:1/(a*a)),t._minimumRadius=Math.min(n,i,a),t._maximumRadius=Math.max(n,i,a),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,r){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,r)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,r){if(!n(t))return void 0;var i=t._radii;return n(r)?(e.clone(i,r._radii),e.clone(t._radiiSquared,r._radiiSquared),e.clone(t._radiiToTheFourth,r._radiiToTheFourth),e.clone(t._oneOverRadii,r._oneOverRadii),e.clone(t._oneOverRadiiSquared,r._oneOverRadiiSquared),r._minimumRadius=t._minimumRadius,r._maximumRadius=t._maximumRadius,r._centerToleranceSquared=t._centerToleranceSquared,r):new c(i.x,i.y,i.z)},c.fromCartesian3=function(e,t){return n(t)||(t=new c),n(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,n,i){i=r(i,0),e.pack(t._radii,n,i)},c.unpack=function(t,n,i){n=r(n,0);var a=e.unpack(t,n);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,r){var i=t.longitude,a=t.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return n(r)||(r=new e),r.x=u,r.y=s,r.z=c,e.normalize(r,r)},c.prototype.geodeticSurfaceNormal=function(t,r){return n(r)||(r=new e),r=e.multiplyComponents(t,this._oneOverRadiiSquared,r),e.normalize(r,r)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,r){var i=l,a=f;this.geodeticSurfaceNormalCartographic(t,i),e.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(e.dot(i,a));return e.divideByScalar(a,o,a),e.multiplyByScalar(i,t.height,i),n(r)||(r=new e),e.add(a,i,r)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var i=0;r>i;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var d=new e,h=new e,m=new e;c.prototype.cartesianToCartographic=function(r,i){var a=this.scaleToGeodeticSurface(r,h);if(!n(a))return void 0;var o=this.geodeticSurfaceNormal(a,d),s=e.subtract(r,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,r))*e.magnitude(s);return n(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var i=0;r>i;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};var y=new e,p=new e;return c.prototype.scaleToGeodeticSurface=function(t,r){var i=t.x,a=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,d=i*i*c*c,h=a*a*l*l,m=o*o*f*f,v=d+h+m,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,y);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,r):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,M=x.z,b=p;b.x=2*w.x*E,b.y=2*w.y*S,b.z=2*w.z*M;var T,A,O,I,N,z,_,R,P,L,C,q=(1-g)*e.magnitude(t)/(.5*e.magnitude(b)),D=0;do{q-=D,O=1/(1+q*E),I=1/(1+q*S),N=1/(1+q*M),z=O*O,_=I*I,R=N*N,P=z*O,L=_*I,C=R*N,T=d*z+h*_+m*R-1,A=d*P*E+h*L*S+m*C*M;var B=-2*A;D=T/B}while(Math.abs(T)>u.EPSILON12);return n(r)?(r.x=i*O,r.y=a*I,r.z=o*N,r):new e(i*O,a*I,o*N)},c.prototype.scaleToGeocentricSurface=function(t,r){n(r)||(r=new e);var i=t.x,a=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return e.multiplyByScalar(t,s,r)},c.prototype.transformPositionToScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._oneOverRadii,r)},c.prototype.transformPositionFromScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._radii,r)},c.prototype.equals=function(t){return this===t||n(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,r,n,i,a,o){"use strict";var u=function(e){this._ellipsoid=r(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,r){var i=this._semimajorAxis,a=t.longitude*i,o=t.latitude*i,u=t.height;return n(r)?(r.x=a,r.y=o,r.z=u,r):new e(a,o,u)},u.prototype.unproject=function(e,r){var i=this._oneOverSemimajorAxis,a=e.x*i,o=e.y*i,u=e.z;return n(r)?(r.longitude=a,r.latitude=o,r.height=u,r):new t(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,r){this.start=e(t,0),this.stop=e(r,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i){"use strict";var a=function(t,r,n,i){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0),this.w=e(i,0)};a.fromElements=function(e,r,n,i,o){return t(o)?(o.x=e,o.y=r,o.z=n,o.w=i,o):new a(e,r,n,i)},a.fromColor=function(e,r){return t(r)?(r.x=e.red,r.y=e.green,r.z=e.blue,r.w=e.alpha,r):new a(e.red,e.green,e.blue,e.alpha)},a.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r.w=e.w,r):new a(e.x,e.y,e.z,e.w):void 0},a.packedLength=4,a.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n++]=t.z,r[n]=t.w},a.unpack=function(r,n,i){return n=e(n,0),t(i)||(i=new a),i.x=r[n++],i.y=r[n++],i.z=r[n++],i.w=r[n],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},a.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r.w=Math.min(e.w,t.w),r},a.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r.w=Math.max(e.w,t.w),r},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var r=a.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t.w=e.w/r,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},a.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r.w=e.w*t.w,r},a.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},a.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},a.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},a.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new a;a.lerp=function(e,t,r,n){return a.multiplyByScalar(t,r,u),n=a.multiplyByScalar(e,1-r,n),a.add(u,n,n)};var s=new a;return a.mostOrthogonalAxis=function(e,t){var r=a.normalize(e,s);return a.abs(r,r),t=r.x<=r.y?r.x<=r.z?r.x<=r.w?a.clone(a.UNIT_X,t):a.clone(a.UNIT_W,t):r.z<=r.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t):r.y<=r.z?r.y<=r.w?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_W,t):r.z<=r.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t)},a.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z&&e.w===r.w},a.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]&&e.w===t[r+3]},a.equalsEpsilon=function(e,r,n,a){return e===r||t(e)&&t(r)&&i.equalsEpsilon(e.x,r.x,n,a)&&i.equalsEpsilon(e.y,r.y,n,a)&&i.equalsEpsilon(e.z,r.z,n,a)&&i.equalsEpsilon(e.w,r.w,n,a)},a.ZERO=n(new a(0,0,0,0)),a.UNIT_X=n(new a(1,0,0,0)),a.UNIT_Y=n(new a(0,1,0,0)),a.UNIT_Z=n(new a(0,0,1,0)),a.UNIT_W=n(new a(0,0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,r){return a.equalsEpsilon(this,e,t,r)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i,a){"use strict";function o(e){for(var t=0,r=0;9>r;++r){var n=e[r];t+=n*n}return Math.sqrt(t)}function u(e){for(var t=0,r=0;3>r;++r){var n=e[c.getElementIndex(h[r],d[r])];t+=2*n*n}return Math.sqrt(t)}function s(e,t){for(var r=a.EPSILON15,n=0,i=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(h[o],d[o])]);u>n&&(i=o,n=u)}var s=1,l=0,f=d[i],m=h[i];if(Math.abs(e[c.getElementIndex(m,f)])>r){var y,p=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(m,f)],w=(p-v)/2/g;y=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+y*y),l=y*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,f)]=l,t[c.getElementIndex(f,m)]=-l,t}var c=function(e,r,n,i,a,o,u,s,c){this[0]=t(e,0),this[1]=t(i,0),this[2]=t(u,0),this[3]=t(r,0),this[4]=t(a,0),this[5]=t(s,0),this[6]=t(n,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,r,n){n=t(n,0),r[n++]=e[0],r[n++]=e[1],r[n++]=e[2],r[n++]=e[3],r[n++]=e[4],r[n++]=e[5],r[n++]=e[6],r[n++]=e[7],r[n++]=e[8]},c.unpack=function(e,n,i){return n=t(n,0),r(i)||(i=new c),i[0]=e[n++],i[1]=e[n++],i[2]=e[n++],i[3]=e[n++],i[4]=e[n++],i[5]=e[n++],i[6]=e[n++],i[7]=e[n++],i[8]=e[n++],i},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,n,i){return n=t(n,0),r(i)||(i=new c),i[0]=e[n],i[1]=e[n+1],i[2]=e[n+2],i[3]=e[n+3],i[4]=e[n+4],i[5]=e[n+5],i[6]=e[n+6],i[7]=e[n+7],i[8]=e[n+8],i},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var n=e.x*e.x,i=e.x*e.y,a=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,d=e.z*e.w,h=e.w*e.w,m=n-u-f+h,y=2*(i-d),p=2*(a+l),v=2*(i+d),g=-n+u-f+h,w=2*(s-o),x=2*(a-l),E=2*(s+o),S=-n-u+f+h;return r(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=y,t[4]=g,t[5]=E,t[6]=p,t[7]=w,t[8]=S,t):new c(m,y,p,v,g,w,x,E,S)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return r(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var n=Math.cos(e),i=Math.sin(e);return r(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=i,t[6]=0,t[7]=-i,t[8]=n,t):new c(1,0,0,0,n,-i,0,i,n)},c.fromRotationY=function(e,t){var n=Math.cos(e),i=Math.sin(e);return r(t)?(t[0]=n,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=n,t):new c(n,0,i,0,1,0,-i,0,n)},c.fromRotationZ=function(e,t){var n=Math.cos(e),i=Math.sin(e);return r(t)?(t[0]=n,t[1]=i,t[2]=0,t[3]=-i,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(n,-i,0,i,n,0,0,0,1)},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,r){var n=3*t,i=e[n],a=e[n+1],o=e[n+2];return r.x=i,r.y=a,r.z=o,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var i=3*t;return n[i]=r.x,n[i+1]=r.y,n[i+2]=r.z,n},c.getRow=function(e,t,r){var n=e[t],i=e[t+3],a=e[t+6];return r.x=n,r.y=i,r.z=a,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+3]=r.y,n[t+6]=r.z,n};var l=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),r.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),r.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),r};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,r){var n=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],i=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],a=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return r[0]=n,r[1]=i,r[2]=a,r[3]=o,r[4]=u,r[5]=s,r[6]=c,r[7]=l,r[8]=f,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r},c.multiplyByVector=function(e,t,r){var n=t.x,i=t.y,a=t.z,o=e[0]*n+e[3]*i+e[6]*a,u=e[1]*n+e[4]*i+e[7]*a,s=e[2]*n+e[5]*i+e[8]*a;return r.x=o,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r},c.multiplyByScale=function(e,t,r){return r[0]=e[0]*t.x,r[1]=e[1]*t.x,r[2]=e[2]*t.x,r[3]=e[3]*t.y,r[4]=e[4]*t.y,r[5]=e[5]*t.y,r[6]=e[6]*t.z,r[7]=e[7]*t.z,r[8]=e[8]*t.z,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var r=e[0],n=e[3],i=e[6],a=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=r,t[1]=n,t[2]=i,t[3]=a,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var d=[1,0,0],h=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(e,t){var n=a.EPSILON20,i=10,l=0,f=0;r(t)||(t={});for(var d=t.unitary=c.clone(c.IDENTITY,t.unitary),h=t.diagonal=c.clone(e,t.diagonal),p=n*o(h);i>f&&u(h)>p;)s(h,m),c.transpose(m,y),c.multiply(h,m,h),c.multiply(y,h,h),c.multiply(d,m,d),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],r=e[3],n=e[6],i=e[1],a=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(a*c-s*o)+i*(s*n-r*c)+u*(r*o-a*n)},c.inverse=function(e,t){var r=e[0],i=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],d=e[7],h=e[8],m=c.determinant(e);if(Math.abs(m)<=a.EPSILON15)throw new n("matrix is not invertible");t[0]=s*h-d*l,t[1]=d*o-i*h,t[2]=i*l-s*o,t[3]=f*l-u*h,t[4]=r*h-f*o,t[5]=u*o-r*l,t[6]=u*d-f*s,t[7]=f*i-r*d,t[8]=r*s-u*i;var y=1/m;return c.multiplyByScalar(t,y,t)},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,r,n,i,a,o,u,s){"use strict";var c=function(e,t,n,i,a,o,u,s,c,l,f,d,h,m,y,p){this[0]=r(e,0),this[1]=r(a,0),this[2]=r(c,0),this[3]=r(h,0),this[4]=r(t,0),this[5]=r(o,0),this[6]=r(l,0),this[7]=r(m,0),this[8]=r(n,0),this[9]=r(u,0),this[10]=r(f,0),this[11]=r(y,0),this[12]=r(i,0),this[13]=r(s,0),this[14]=r(d,0),this[15]=r(p,0)};c.packedLength=16,c.pack=function(e,t,n){n=r(n,0),t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15]},c.unpack=function(e,t,i){return t=r(t,0),n(i)||(i=new c),i[0]=e[t++],i[1]=e[t++],i[2]=e[t++],i[3]=e[t++],i[4]=e[t++],i[5]=e[t++],i[6]=e[t++],i[7]=e[t++],i[8]=e[t++],i[9]=e[t++],i[10]=e[t++],i[11]=e[t++],i[12]=e[t++],i[13]=e[t++],i[14]=e[t++],i[15]=e[t],i},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,i,a){return i=r(i,e.ZERO),n(a)?(a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=0,a[4]=t[3],a[5]=t[4],a[6]=t[5],a[7]=0,a[8]=t[6],a[9]=t[7],a[10]=t[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(t[0],t[3],t[6],i.x,t[1],t[4],t[7],i.y,t[2],t[5],t[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,r,i){n(i)||(i=new c);var a=r.x,o=r.y,u=r.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,d=t.x*t.w,h=t.y*t.y,m=t.y*t.z,y=t.y*t.w,p=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-h-p+g,x=2*(l-v),E=2*(f+y),S=2*(l+v),M=-s+h-p+g,b=2*(m-d),T=2*(f-y),A=2*(m+d),O=-s-h+p+g;return i[0]=w*a,i[1]=S*a,i[2]=T*a,i[3]=0,i[4]=x*o,i[5]=M*o,i[6]=A*o,i[7]=0,i[8]=E*u,i[9]=b*u,i[10]=O*u,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,d=new e;c.fromCamera=function(t,r){var i=t.eye,a=t.target,o=t.up;e.normalize(e.subtract(a,i,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,d),d);var u=f.x,s=f.y,h=f.z,m=l.x,y=l.y,p=l.z,v=d.x,g=d.y,w=d.z,x=i.x,E=i.y,S=i.z,M=u*-x+s*-E+h*-S,b=v*-x+g*-E+w*-S,T=m*x+y*E+p*S;return n(r)?(r[0]=u,r[1]=v,r[2]=-m,r[3]=0,r[4]=s,r[5]=g,r[6]=-y,r[7]=0,r[8]=h,r[9]=w,r[10]=-p,r[11]=0,r[12]=M,r[13]=b,r[14]=T,r[15]=1,r):new c(u,s,h,M,v,g,w,b,-m,-y,-p,T,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,r,n,i){var a=Math.tan(.5*e),o=1/a,u=o/t,s=(n+r)/(r-n),c=2*n*r/(r-n);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(e,t,r,n,i,a,o){var u=1/(t-e),s=1/(n-r),c=1/(a-i),l=-(t+e)*u,f=-(n+r)*s,d=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=d,o[15]=1,o +},c.computePerspectiveOffCenter=function(e,t,r,n,i,a,o){var u=2*i/(t-e),s=2*i/(n-r),c=(t+e)/(t-e),l=(n+r)/(n-r),f=-(a+i)/(a-i),d=-1,h=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=d,o[12]=0,o[13]=0,o[14]=h,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,r,n,i,a){var o=2*i/(t-e),u=2*i/(n-r),s=(t+e)/(t-e),c=(n+r)/(n-r),l=-1,f=-1,d=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=d,a[15]=0,a},c.computeViewportTransformation=function(e,t,n,i){e=r(e,r.EMPTY_OBJECT);var a=r(e.x,0),o=r(e.y,0),u=r(e.width,0),s=r(e.height,0);t=r(t,0),n=r(n,1);var c=.5*u,l=.5*s,f=.5*(n-t),d=c,h=l,m=f,y=a+c,p=o+l,v=t+f,g=1;return i[0]=d,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=h,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=y,i[13]=p,i[14]=v,i[15]=g,i},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,r){var n=4*t,i=e[n],a=e[n+1],o=e[n+2],u=e[n+3];return r.x=i,r.y=a,r.z=o,r.w=u,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var i=4*t;return n[i]=r.x,n[i+1]=r.y,n[i+2]=r.z,n[i+3]=r.w,n},c.setTranslation=function(e,t,r){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=t.x,r[13]=t.y,r[14]=t.z,r[15]=e[15],r},c.getRow=function(e,t,r){var n=e[t],i=e[t+4],a=e[t+8],o=e[t+12];return r.x=n,r.y=i,r.z=a,r.w=o,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+4]=r.y,n[t+8]=r.z,n[t+12]=r.w,n};var h=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],h)),r.y=e.magnitude(e.fromElements(t[4],t[5],t[6],h)),r.z=e.magnitude(e.fromElements(t[8],t[9],t[10],h)),r};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,r){var n=e[0],i=e[1],a=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],d=e[9],h=e[10],m=e[11],y=e[12],p=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],M=t[4],b=t[5],T=t[6],A=t[7],O=t[8],I=t[9],N=t[10],z=t[11],_=t[12],R=t[13],P=t[14],L=t[15],C=n*w+u*x+f*E+y*S,q=i*w+s*x+d*E+p*S,D=a*w+c*x+h*E+v*S,B=o*w+l*x+m*E+g*S,U=n*M+u*b+f*T+y*A,F=i*M+s*b+d*T+p*A,G=a*M+c*b+h*T+v*A,k=o*M+l*b+m*T+g*A,W=n*O+u*I+f*N+y*z,V=i*O+s*I+d*N+p*z,Y=a*O+c*I+h*N+v*z,j=o*O+l*I+m*N+g*z,H=n*_+u*R+f*P+y*L,Z=i*_+s*R+d*P+p*L,X=a*_+c*R+h*P+v*L,Q=o*_+l*R+m*P+g*L;return r[0]=C,r[1]=q,r[2]=D,r[3]=B,r[4]=U,r[5]=F,r[6]=G,r[7]=k,r[8]=W,r[9]=V,r[10]=Y,r[11]=j,r[12]=H,r[13]=Z,r[14]=X,r[15]=Q,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r[9]=e[9]+t[9],r[10]=e[10]+t[10],r[11]=e[11]+t[11],r[12]=e[12]+t[12],r[13]=e[13]+t[13],r[14]=e[14]+t[14],r[15]=e[15]+t[15],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r[9]=e[9]-t[9],r[10]=e[10]-t[10],r[11]=e[11]-t[11],r[12]=e[12]-t[12],r[13]=e[13]-t[13],r[14]=e[14]-t[14],r[15]=e[15]-t[15],r},c.multiplyTransformation=function(e,t,r){var n=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=e[12],h=e[13],m=e[14],y=t[0],p=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],M=t[10],b=t[12],T=t[13],A=t[14],O=n*y+o*p+c*v,I=i*y+u*p+l*v,N=a*y+s*p+f*v,z=n*g+o*w+c*x,_=i*g+u*w+l*x,R=a*g+s*w+f*x,P=n*E+o*S+c*M,L=i*E+u*S+l*M,C=a*E+s*S+f*M,q=n*b+o*T+c*A+d,D=i*b+u*T+l*A+h,B=a*b+s*T+f*A+m;return r[0]=O,r[1]=I,r[2]=N,r[3]=0,r[4]=z,r[5]=_,r[6]=R,r[7]=0,r[8]=P,r[9]=L,r[10]=C,r[11]=0,r[12]=q,r[13]=D,r[14]=B,r[15]=1,r},c.multiplyByMatrix3=function(e,t,r){var n=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=t[0],h=t[1],m=t[2],y=t[3],p=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=n*d+o*h+c*m,S=i*d+u*h+l*m,M=a*d+s*h+f*m,b=n*y+o*p+c*v,T=i*y+u*p+l*v,A=a*y+s*p+f*v,O=n*g+o*w+c*x,I=i*g+u*w+l*x,N=a*g+s*w+f*x;return r[0]=E,r[1]=S,r[2]=M,r[3]=0,r[4]=b,r[5]=T,r[6]=A,r[7]=0,r[8]=O,r[9]=I,r[10]=N,r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r},c.multiplyByTranslation=function(e,t,r){var n=t.x,i=t.y,a=t.z,o=n*e[0]+i*e[4]+a*e[8]+e[12],u=n*e[1]+i*e[5]+a*e[9]+e[13],s=n*e[2]+i*e[6]+a*e[10]+e[14];return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=o,r[13]=u,r[14]=s,r[15]=e[15],r};var y=new e;c.multiplyByUniformScale=function(e,t,r){return y.x=t,y.y=t,y.z=t,c.multiplyByScale(e,y,r)},c.multiplyByScale=function(e,t,r){var n=t.x,i=t.y,a=t.z;return 1===n&&1===i&&1===a?c.clone(e,r):(r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=0,r[4]=i*e[4],r[5]=i*e[5],r[6]=i*e[6],r[7]=0,r[8]=a*e[8],r[9]=a*e[9],r[10]=a*e[10],r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=1,r)},c.multiplyByVector=function(e,t,r){var n=t.x,i=t.y,a=t.z,o=t.w,u=e[0]*n+e[4]*i+e[8]*a+e[12]*o,s=e[1]*n+e[5]*i+e[9]*a+e[13]*o,c=e[2]*n+e[6]*i+e[10]*a+e[14]*o,l=e[3]*n+e[7]*i+e[11]*a+e[15]*o;return r.x=u,r.y=s,r.z=c,r.w=l,r},c.multiplyByPointAsVector=function(e,t,r){var n=t.x,i=t.y,a=t.z,o=e[0]*n+e[4]*i+e[8]*a,u=e[1]*n+e[5]*i+e[9]*a,s=e[2]*n+e[6]*i+e[10]*a;return r.x=o,r.y=u,r.z=s,r},c.multiplyByPoint=function(e,t,r){var n=t.x,i=t.y,a=t.z,o=e[0]*n+e[4]*i+e[8]*a+e[12],u=e[1]*n+e[5]*i+e[9]*a+e[13],s=e[2]*n+e[6]*i+e[10]*a+e[14];return r.x=o,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r[9]=e[9]*t,r[10]=e[10]*t,r[11]=e[11]*t,r[12]=e[12]*t,r[13]=e[13]*t,r[14]=e[14]*t,r[15]=e[15]*t,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var r=e[1],n=e[2],i=e[3],a=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=a,t[10]=e[10],t[11]=e[14],t[12]=i,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r&&Math.abs(e[9]-t[9])<=r&&Math.abs(e[10]-t[10])<=r&&Math.abs(e[11]-t[11])<=r&&Math.abs(e[12]-t[12])<=r&&Math.abs(e[13]-t[13])<=r&&Math.abs(e[14]-t[14])<=r&&Math.abs(e[15]-t[15])<=r},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var p=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,r){if(u.equalsEpsilon(c.getRotation(e,p),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return r[0]=0,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=0,r[11]=0,r[12]=-e[12],r[13]=-e[13],r[14]=-e[14],r[15]=1,r;var n=e[0],i=e[4],a=e[8],l=e[12],f=e[1],d=e[5],h=e[9],m=e[13],y=e[2],x=e[6],E=e[10],S=e[14],M=e[3],b=e[7],T=e[11],A=e[15],O=E*A,I=S*T,N=x*A,z=S*b,_=x*T,R=E*b,P=y*A,L=S*M,C=y*T,q=E*M,D=y*b,B=x*M,U=O*d+z*h+_*m-(I*d+N*h+R*m),F=I*f+P*h+q*m-(O*f+L*h+C*m),G=N*f+L*d+D*m-(z*f+P*d+B*m),k=R*f+C*d+B*h-(_*f+q*d+D*h),W=I*i+N*a+R*l-(O*i+z*a+_*l),V=O*n+L*a+C*l-(I*n+P*a+q*l),Y=z*n+P*i+B*l-(N*n+L*i+D*l),j=_*n+q*i+D*a-(R*n+C*i+B*a);O=a*m,I=l*h,N=i*m,z=l*d,_=i*h,R=a*d,P=n*m,L=l*f,C=n*h,q=a*f,D=n*d,B=i*f;var H=O*b+z*T+_*A-(I*b+N*T+R*A),Z=I*M+P*T+q*A-(O*M+L*T+C*A),X=N*M+L*b+D*A-(z*M+P*b+B*A),Q=R*M+C*b+B*T-(_*M+q*b+D*T),K=N*E+R*S+I*x-(_*S+O*x+z*E),J=C*S+O*y+L*E-(P*E+q*S+I*y),$=P*x+B*S+z*y-(D*S+N*y+L*x),et=D*E+_*y+q*x-(C*x+B*E+R*y),tt=n*U+i*F+a*G+l*k;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,r[0]=U*tt,r[1]=F*tt,r[2]=G*tt,r[3]=k*tt,r[4]=W*tt,r[5]=V*tt,r[6]=Y*tt,r[7]=j*tt,r[8]=H*tt,r[9]=Z*tt,r[10]=X*tt,r[11]=Q*tt,r[12]=K*tt,r[13]=J*tt,r[14]=$*tt,r[15]=et*tt,r},c.inverseTransformation=function(e,t){var r=e[0],n=e[1],i=e[2],a=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],d=e[13],h=e[14],m=-r*f-n*d-i*h,y=-a*f-o*d-u*h,p=-s*f-c*d-l*h;return t[0]=r,t[1]=a,t[2]=s,t[3]=0,t[4]=n,t[5]=o,t[6]=c,t[7]=0,t[8]=i,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=y,t[14]=p,t[15]=1,t},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]&&e[9]===t[r+9]&&e[10]===t[r+10]&&e[11]===t[r+11]&&e[12]===t[r+12]&&e[13]===t[r+13]&&e[14]===t[r+14]&&e[15]===t[r+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n){"use strict";var i=function(t,r){this.normal=e.clone(t),this.distance=r};i.fromPointNormal=function(r,n,a){var o=-e.dot(n,r);return t(a)?(e.clone(n,a.normal),a.distance=o,a):new i(n,o)};var a=new e;return i.fromCartesian4=function(r,n){var o=e.fromCartesian4(r,a),u=r.w;return t(n)?(e.clone(o,n.normal),n.distance=u,n):new i(o,u)},i.getPointDistance=function(t,r){return e.dot(t.normal,r)+t.distance},i.ORIGIN_XY_PLANE=n(new i(e.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=n(new i(e.UNIT_X,0)),i.ORIGIN_ZX_PLANE=n(new i(e.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,r,n,i,a,o,u){"use strict";var s=function(e,r,n,i){this.west=t(e,0),this.south=t(r,0),this.east=t(n,0),this.north=t(i,0)};n(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,r,n){n=t(n,0),r[n++]=e.west,r[n++]=e.south,r[n++]=e.east,r[n]=e.north},s.unpack=function(e,n,i){return n=t(n,0),r(i)||(i=new s),i.west=e[n++],i.south=e[n++],i.east=e[n++],i.north=e[n],i},s.computeWidth=function(e){var t=e.east,r=e.west;return r>t&&(t+=u.TWO_PI),t-r},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,n,i,a,o){return e=u.toRadians(t(e,0)),n=u.toRadians(t(n,0)),i=u.toRadians(t(i,0)),a=u.toRadians(t(a,0)),r(o)?(o.west=e,o.south=n,o.east=i,o.north=a,o):new s(e,n,i,a)},s.fromCartographicArray=function(e,t){for(var n=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];n=Math.min(n,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return r(t)?(t.west=n,t.south=a,t.east=i,t.north=o,t):new s(n,a,i,o)},s.clone=function(e,t){return r(e)?r(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return r(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.south,n.height=0,n):new e(t.west,t.south)},s.northwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.north,n.height=0,n):new e(t.west,t.north)},s.northeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.north,n.height=0,n):new e(t.east,t.north)},s.southeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.south,n.height=0,n):new e(t.east,t.south)},s.center=function(t,n){var i=t.east,a=t.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(t.south+t.north);return r(n)?(n.longitude=o,n.latitude=s,n.height=0,n):new e(o,s)},s.intersection=function(e,t,n){var i=e.east,a=e.west,o=t.east,c=t.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var d=Math.max(e.south,t.south),h=Math.min(e.north,t.north);return d>=h?void 0:r(n)?(n.west=l,n.south=d,n.east=f,n.north=h,n):new s(l,d,f,h)},s.contains=function(e,t){var r=t.longitude,n=t.latitude,i=e.west,a=e.east;return i>a&&(a+=u.TWO_PI,0>r&&(r+=u.TWO_PI)),(r>i||u.equalsEpsilon(r,i,u.EPSILON14))&&(a>r||u.equalsEpsilon(r,a,u.EPSILON14))&&n>=e.south&&n<=e.north};var c=new e;return s.subsample=function(e,n,i,o){n=t(n,a.WGS84),i=t(i,0),r(o)||(o=[]);var l=0,f=e.north,d=e.south,h=e.east,m=e.west,y=c;y.height=i,y.longitude=m,y.latitude=f,o[l]=n.cartographicToCartesian(y,o[l]),l++,y.longitude=h,o[l]=n.cartographicToCartesian(y,o[l]),l++,y.latitude=d,o[l]=n.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=n.cartographicToCartesian(y,o[l]),l++,y.latitude=0>f?f:d>0?d:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(e,y)&&(o[l]=n.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=n.cartographicToCartesian(y,o[l]),l++,y.longitude=h,o[l]=n.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,r,n,i,a,o,u,s,c,l,f,d){"use strict";var h=function(t,n){this.center=e.clone(r(t,e.ZERO)),this.radius=r(n,0)},m=new e,y=new e,p=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,M=new e,b=new e,T=new e;h.fromPoints=function(t,r){if(n(r)||(r=new h),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;for(var i=e.clone(t[0],x),a=e.clone(i,m),o=e.clone(i,y),u=e.clone(i,p),s=e.clone(i,v),c=e.clone(i,g),l=e.clone(i,w),f=t.length,d=1;f>d;d++){e.clone(t[d],i);var A=i.x,O=i.y,I=i.z;A<a.x&&e.clone(i,a),A>s.x&&e.clone(i,s),O<o.y&&e.clone(i,o),O>c.y&&e.clone(i,c),I<u.z&&e.clone(i,u),I>l.z&&e.clone(i,l)}var N=e.magnitudeSquared(e.subtract(s,a,E)),z=e.magnitudeSquared(e.subtract(c,o,E)),_=e.magnitudeSquared(e.subtract(l,u,E)),R=a,P=s,L=N;z>L&&(L=z,R=o,P=c),_>L&&(L=_,R=u,P=l);var C=S;C.x=.5*(R.x+P.x),C.y=.5*(R.y+P.y),C.z=.5*(R.z+P.z);var q=e.magnitudeSquared(e.subtract(P,C,E)),D=Math.sqrt(q),B=M;B.x=a.x,B.y=o.y,B.z=u.z;var U=b;U.x=s.x,U.y=c.y,U.z=l.z;var F=e.multiplyByScalar(e.add(B,U,E),.5,T),G=0;for(d=0;f>d;d++){e.clone(t[d],i);var k=e.magnitude(e.subtract(i,F,E));k>G&&(G=k);var W=e.magnitudeSquared(e.subtract(i,C,E));if(W>q){var V=Math.sqrt(W);D=.5*(D+V),q=D*D;var Y=V-D;C.x=(D*C.x+Y*i.x)/V,C.y=(D*C.y+Y*i.y)/V,C.z=(D*C.z+Y*i.z)/V}}return G>D?(e.clone(C,r.center),r.radius=D):(e.clone(F,r.center),r.radius=G),r};var A=new u,O=new e,I=new e,N=new t,z=new t;h.fromRectangle2D=function(e,t,r){return h.fromRectangleWithHeights2D(e,t,0,0,r)},h.fromRectangleWithHeights2D=function(t,i,a,o,u){if(n(u)||(u=new h),!n(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;i=r(i,A),d.southwest(t,N),N.height=a,d.northeast(t,z),z.height=o;var s=i.project(N,O),c=i.project(z,I),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*f,y.z=s.z+.5*m,u};var _=[];h.fromRectangle3D=function(e,t,i,a){t=r(t,o.WGS84),i=r(i,0);var u;return n(e)&&(u=d.subsample(e,t,i,_)),h.fromPoints(u,a)},h.fromVertices=function(t,i,a,o){if(n(o)||(o=new h),!n(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;i=r(i,e.ZERO),a=r(a,3);var u=x;u.x=t[0]+i.x,u.y=t[1]+i.y,u.z=t[2]+i.z;for(var s=e.clone(u,m),c=e.clone(u,y),l=e.clone(u,p),f=e.clone(u,v),d=e.clone(u,g),A=e.clone(u,w),O=t.length,I=0;O>I;I+=a){var N=t[I]+i.x,z=t[I+1]+i.y,_=t[I+2]+i.z;u.x=N,u.y=z,u.z=_,N<s.x&&e.clone(u,s),N>f.x&&e.clone(u,f),z<c.y&&e.clone(u,c),z>d.y&&e.clone(u,d),_<l.z&&e.clone(u,l),_>A.z&&e.clone(u,A)}var R=e.magnitudeSquared(e.subtract(f,s,E)),P=e.magnitudeSquared(e.subtract(d,c,E)),L=e.magnitudeSquared(e.subtract(A,l,E)),C=s,q=f,D=R;P>D&&(D=P,C=c,q=d),L>D&&(D=L,C=l,q=A);var B=S;B.x=.5*(C.x+q.x),B.y=.5*(C.y+q.y),B.z=.5*(C.z+q.z);var U=e.magnitudeSquared(e.subtract(q,B,E)),F=Math.sqrt(U),G=M;G.x=s.x,G.y=c.y,G.z=l.z;var k=b;k.x=f.x,k.y=d.y,k.z=A.z;var W=e.multiplyByScalar(e.add(G,k,E),.5,T),V=0;for(I=0;O>I;I+=a){u.x=t[I]+i.x,u.y=t[I+1]+i.y,u.z=t[I+2]+i.z;var Y=e.magnitude(e.subtract(u,W,E));Y>V&&(V=Y);var j=e.magnitudeSquared(e.subtract(u,B,E));if(j>U){var H=Math.sqrt(j);F=.5*(F+H),U=F*F;var Z=H-F;B.x=(F*B.x+Z*u.x)/H,B.y=(F*B.y+Z*u.y)/H,B.z=(F*B.z+Z*u.z)/H}}return V>F?(e.clone(B,o.center),o.radius=F):(e.clone(W,o.center),o.radius=V),o},h.fromCornerPoints=function(t,r,i){n(i)||(i=new h);var a=i.center;return e.add(t,r,a),e.multiplyByScalar(a,.5,a),i.radius=e.distance(a,r),i},h.fromEllipsoid=function(t,r){return n(r)||(r=new h),e.clone(e.ZERO,r.center),r.radius=t.maximumRadius,r};var R=new e;h.fromBoundingSpheres=function(t,r){if(n(r)||(r=new h),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;var i=t.length;if(1===i)return h.clone(t[0],r);if(2===i)return h.union(t[0],t[1],r);for(var a=[],o=0;i>o;o++)a.push(t[o].center);r=h.fromPoints(a,r);var u=r.center,s=r.radius;for(o=0;i>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,R)+c.radius)}return r.radius=s,r},h.clone=function(t,r){return n(t)?n(r)?(r.center=e.clone(t.center,r.center),r.radius=t.radius,r):new h(t.center,t.radius):void 0},h.packedLength=4,h.pack=function(e,t,n){n=r(n,0);var i=e.center;t[n++]=i.x,t[n++]=i.y,t[n++]=i.z,t[n]=e.radius},h.unpack=function(e,t,i){t=r(t,0),n(i)||(i=new h);var a=i.center;return a.x=e[t++],a.y=e[t++],a.z=e[t++],i.radius=e[t],i};var P=new e,L=new e;h.union=function(t,r,i){n(i)||(i=new h);var a=t.center,o=t.radius,u=r.center,s=r.radius,c=e.subtract(u,a,P),l=e.magnitude(c);if(o>=l+s)return t.clone(i),i;if(s>=l+o)return r.clone(i),i;var f=.5*(o+l+s),d=e.multiplyByScalar(c,(-o+f)/l,L);return e.add(d,a,d),e.clone(d,i.center),i.radius=f,i};var C=new e;h.expand=function(t,r,n){n=h.clone(t,n);var i=e.magnitude(e.subtract(r,n.center,C));return i>n.radius&&(n.radius=i),n},h.intersectPlane=function(t,r){var n=t.center,i=t.radius,a=r.normal,o=e.dot(a,n)+r.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new e,0);h.intersect=function(e,t){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var r=f.fromCartesian4(t,q);return h.intersectPlane(e,r)},h.transform=function(e,t,r){return n(r)||(r=new h),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=l.getMaximumScale(t)*e.radius,r};var D=new e;h.distanceSquaredTo=function(t,r){var n=e.subtract(t.center,r,D);return e.magnitudeSquared(n)-t.radius*t.radius},h.transformWithoutScale=function(e,t,r){return n(r)||(r=new h),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=e.radius,r};var B=new e;h.computePlaneDistances=function(t,r,i,a){n(a)||(a=new c);var o=e.subtract(t.center,r,B),u=e.multiplyByScalar(i,e.dot(i,o),B),s=e.magnitude(u);return a.start=s-t.radius,a.stop=s+t.radius,a};for(var U=new e,F=new e,G=new e,k=new e,W=new e,V=new t,Y=new Array(8),j=0;8>j;++j)Y[j]=new e;var H=new u;return h.projectTo2D=function(t,n,i){n=r(n,H);var a=n.ellipsoid,o=t.center,u=t.radius,s=a.geodeticSurfaceNormal(o,U),c=e.cross(e.UNIT_Z,s,F);e.normalize(c,c);var l=e.cross(s,c,G);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,W),d=e.negate(c,k),m=Y,y=m[0];e.add(s,l,y),e.add(y,c,y),y=m[1],e.add(s,l,y),e.add(y,d,y),y=m[2],e.add(s,f,y),e.add(y,d,y),y=m[3],e.add(s,f,y),e.add(y,c,y),e.negate(s,s),y=m[4],e.add(s,l,y),e.add(y,c,y),y=m[5],e.add(s,l,y),e.add(y,d,y),y=m[6],e.add(s,f,y),e.add(y,d,y),y=m[7],e.add(s,f,y),e.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var g=m[v];e.add(o,g,g);var w=a.cartesianToCartographic(g,V);n.project(w,g)}i=h.fromPoints(m,i),o=i.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,i},h.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&t.radius===r.radius},h.prototype.intersectPlane=function(e){return h.intersectPlane(this,e)},h.prototype.intersect=function(e){return h.intersect(this,e)},h.prototype.equals=function(e){return h.equals(this,e)},h.prototype.clone=function(e){return h.clone(this,e)},h}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i){"use strict";var a=function(t,r){this.x=e(t,0),this.y=e(r,0)};a.fromElements=function(e,r,n){return t(n)?(n.x=e,n.y=r,n):new a(e,r)},a.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r):new a(e.x,e.y):void 0},a.fromCartesian3=a.clone,a.fromCartesian4=a.clone,a.packedLength=2,a.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n]=t.y},a.unpack=function(r,n,i){return n=e(n,0),t(i)||(i=new a),i.x=r[n++],i.y=r[n],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y)},a.minimumComponent=function(e){return Math.min(e.x,e.y)},a.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r},a.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var r=a.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y},a.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r},a.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r},a.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r},a.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r},a.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new a;a.lerp=function(e,t,r,n){return a.multiplyByScalar(t,r,u),n=a.multiplyByScalar(e,1-r,n),a.add(u,n,n)};var s=new a,c=new a;a.angleBetween=function(e,t){return a.normalize(e,s),a.normalize(t,c),i.acosClamped(a.dot(s,c))};var l=new a;return a.mostOrthogonalAxis=function(e,t){var r=a.normalize(e,l);return a.abs(r,r),t=r.x<=r.y?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Y,t)},a.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y},a.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]},a.equalsEpsilon=function(e,r,n,a){return e===r||t(e)&&t(r)&&i.equalsEpsilon(e.x,r.x,n,a)&&i.equalsEpsilon(e.y,r.y,n,a)},a.ZERO=n(new a(0,0)),a.UNIT_X=n(new a(1,0)),a.UNIT_Y=n(new a(0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,r){return a.equalsEpsilon(this,e,t,r)},a.prototype.toString=function(){return"("+this.x+", "+this.y+")"},a}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var r,n={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return t(i,{element:{get:function(){return i.supportsFullscreen()?document[n.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?n.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?n.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[n.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(e(r))return r;r=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return n.requestFullscreen="requestFullscreen",n.exitFullscreen="exitFullscreen",n.fullscreenEnabled="fullscreenEnabled",n.fullscreenElement="fullscreenElement",n.fullscreenchange="fullscreenchange",n.fullscreenerror="fullscreenerror",r=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof t[i]?(n.requestFullscreen=i,r=!0):(i=s+"RequestFullScreen","function"==typeof t[i]&&(n.requestFullscreen=i,r=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?n.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(n.exitFullscreen=i)),i=s+"FullscreenEnabled",e(document[i])?n.fullscreenEnabled=i:(i=s+"FullScreenEnabled",e(document[i])&&(n.fullscreenEnabled=i)),i=s+"FullscreenElement",e(document[i])?n.fullscreenElement=i:(i=s+"FullScreenElement",e(document[i])&&(n.fullscreenElement=i)),i=s+"fullscreenchange",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),n.fullscreenchange=i),i=s+"fullscreenerror",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),n.fullscreenerror=i)}return r},i.requestFullscreen=function(e){i.supportsFullscreen()&&e[n.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[n.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,r){"use strict";function n(e){for(var t=e.split("."),r=0,n=t.length;n>r;++r)t[r]=parseInt(t[r],10);return t}function i(){if(!t(p)){p=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(p=!0,v=n(e[1]))}return p}function a(){return i()&&v}function o(){if(!t(g)&&(g=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=n(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=n(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,M=n(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,M=n(e[1])))}return S}function f(){return l()&&M}function d(){if(!t(b)){b=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(b=!0,T=n(e[1]))}return b}function h(){return t(A)||(A=/Windows/i.test(navigator.appVersion)),A}function m(){return d()&&T}function y(){return t(O)||(O=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),O}var p,v,g,w,x,E,S,M,b,T,A,O,I={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:d,firefoxVersion:m,isWindows:h,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return I.supportsFullscreen=function(){return r.supportsFullscreen()},I.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},I.supportsWebWorkers=function(){return"undefined"!=typeof Worker},I}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,r,n,i){"use strict";if(!n.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(e){switch(e){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new r("componentDatatype is not a valid value.")}},a.fromTypedArray=function(e){return e instanceof Int8Array?a.BYTE:e instanceof Uint8Array?a.UNSIGNED_BYTE:e instanceof Int16Array?a.SHORT:e instanceof Uint16Array?a.UNSIGNED_SHORT:e instanceof Float32Array?a.FLOAT:e instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(e){return t(e)&&(e===a.BYTE||e===a.UNSIGNED_BYTE||e===a.SHORT||e===a.UNSIGNED_SHORT||e===a.FLOAT||e===a.DOUBLE)},a.createTypedArray=function(e,t){switch(e){case a.BYTE:return new Int8Array(t);case a.UNSIGNED_BYTE:return new Uint8Array(t);case a.SHORT:return new Int16Array(t);case a.UNSIGNED_SHORT:return new Uint16Array(t);case a.FLOAT:return new Float32Array(t);case a.DOUBLE:return new Float64Array(t);default:throw new r("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(t,n,i,o){switch(i=e(i,0),o=e(o,(n.byteLength-i)/a.getSizeInBytes(t)),t){case a.BYTE:return new Int8Array(n,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(n,i,o);case a.SHORT:return new Int16Array(n,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(n,i,o);case a.FLOAT:return new Float32Array(n,i,o);case a.DOUBLE:return new Float64Array(n,i,o);default:throw new r("componentDatatype is not a valid value.")}},i(a)}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,r,n,i,a,o,u){"use strict";var s=function(e,r,n,i){this.x=t(e,0),this.y=t(r,0),this.z=t(n,0),this.w=t(i,0)},c=new e;s.fromAxisAngle=function(t,n,i){var a=n/2,o=Math.sin(a);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,d=Math.cos(a);return r(i)?(i.x=u,i.y=l,i.z=f,i.w=d,i):new s(u,l,f,d)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var n,i,a,o,c,d=e[u.COLUMN0ROW0],h=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],y=d+h+m;if(y>0)n=Math.sqrt(y+1),c=.5*n,n=.5/n,i=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*n,a=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*n,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*n;else{var p=l,v=0;h>d&&(v=1),m>d&&m>h&&(v=2);var g=p[v],w=p[g];n=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=f;x[v]=.5*n,n=.5/n,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*n,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*n,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*n,i=-x[0],a=-x[1],o=-x[2]}return r(t)?(t.x=i,t.y=a,t.z=o,t.w=c,t):new s(i,a,o,c)};var d=new s;s.fromHeadingPitchRoll=function(t,r,n,i){var a=s.fromAxisAngle(e.UNIT_X,n,d),o=s.fromAxisAngle(e.UNIT_Y,-r,i);i=s.multiply(o,a,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,d);return s.multiply(u,i,i)};var h=new e,m=new e,y=new s,p=new s,v=new s; +s.packedLength=4,s.pack=function(e,r,n){n=t(n,0),r[n++]=e.x,r[n++]=e.y,r[n++]=e.z,r[n]=e.w},s.unpack=function(e,n,i){return n=t(n,0),r(i)||(i=new s),i.x=e[n],i.y=e[n+1],i.z=e[n+2],i.w=e[n+3],i},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,r,n){s.unpack(e,4*r,v),s.conjugate(v,v);for(var i=0,a=r-t+1;a>i;i++){var o=3*i;s.unpack(e,4*(t+i),y),s.multiply(y,v,y),y.w<0&&s.negate(y,y),s.computeAxis(y,h);var u=s.computeAngle(y);n[o]=h.x*u,n[o+1]=h.y*u,n[o+2]=h.z*u}},s.unpackInterpolationResult=function(t,n,i,a,o){r(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(n,4*a,p),0===u?s.clone(s.IDENTITY,y):s.fromAxisAngle(m,u,y),s.multiply(y,p,o)},s.clone=function(e,t){return r(e)?r(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var r=1/s.magnitude(e),n=e.x*r,i=e.y*r,a=e.z*r,o=e.w*r;return t.x=n,t.y=i,t.z=a,t.w=o,t},s.inverse=function(e,t){var r=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/r,t)},s.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},s.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,r){var n=e.x,i=e.y,a=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+n*l+i*c-a*s,d=o*s-n*c+i*l+a*u,h=o*c+n*s-i*u+a*l,m=o*l-n*u-i*s-a*c;return r.x=f,r.y=d,r.z=h,r.w=m,r},s.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},s.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},s.computeAxis=function(e,t){var r=e.w;if(Math.abs(r-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var n=1/Math.sqrt(1-r*r);return t.x=e.x*n,t.y=e.y*n,t.z=e.z*n,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,r,n){return g=s.multiplyByScalar(t,r,g),n=s.multiplyByScalar(e,1-r,n),s.add(g,n,n)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,r,n){var i=s.dot(e,t),a=t;if(0>i&&(i=-i,a=w=s.negate(t,w)),1-i<o.EPSILON6)return s.lerp(e,a,r,n);var u=Math.acos(i);return x=s.multiplyByScalar(e,Math.sin((1-r)*u),x),E=s.multiplyByScalar(a,Math.sin(r*u),E),n=s.add(x,E,n),s.multiplyByScalar(n,1/Math.sin(u),n)},s.log=function(t,r){var n=o.acosClamped(t.w),i=0;return 0!==n&&(i=n/Math.sin(n)),e.multiplyByScalar(t,i,r)},s.exp=function(t,r){var n=e.magnitude(t),i=0;return 0!==n&&(i=Math.sin(n)/n),r.x=t.x*i,r.y=t.y*i,r.z=t.z*i,r.w=Math.cos(n),r};var S=new e,M=new e,b=new s,T=new s;s.computeInnerQuadrangle=function(t,r,n,i){var a=s.conjugate(r,b);s.multiply(a,n,T);var o=s.log(T,S);s.multiply(a,t,T);var u=s.log(T,M);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,b),s.multiply(r,b,i)},s.squad=function(e,t,r,n,i,a){var o=s.slerp(e,t,i,b),u=s.slerp(r,n,i,T);return s.slerp(o,u,2*i*(1-i),a)};for(var A=new s,O=1.9011074535173003,I=i.supportsTypedArrays()?new Float32Array(8):[],N=i.supportsTypedArrays()?new Float32Array(8):[],z=i.supportsTypedArrays()?new Float32Array(8):[],_=i.supportsTypedArrays()?new Float32Array(8):[],R=0;7>R;++R){var P=R+1,L=2*P+1;I[R]=1/(P*L),N[R]=P/L}return I[7]=O/136,N[7]=8*O/17,s.fastSlerp=function(e,t,r,n){var i,a=s.dot(e,t);a>=0?i=1:(i=-1,a=-a);for(var o=a-1,u=1-r,c=r*r,l=u*u,f=7;f>=0;--f)z[f]=(I[f]*c-N[f])*o,_[f]=(I[f]*l-N[f])*o;var d=i*r*(1+z[0]*(1+z[1]*(1+z[2]*(1+z[3]*(1+z[4]*(1+z[5]*(1+z[6]*(1+z[7])))))))),h=u*(1+_[0]*(1+_[1]*(1+_[2]*(1+_[3]*(1+_[4]*(1+_[5]*(1+_[6]*(1+_[7])))))))),m=s.multiplyByScalar(e,h,A);return s.multiplyByScalar(t,d,n),s.add(m,n,n)},s.fastSquad=function(e,t,r,n,i,a){var o=s.fastSlerp(e,t,i,b),u=s.fastSlerp(r,n,i,T);return s.fastSlerp(o,u,2*i*(1-i),a)},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n},s.ZERO=a(new s(0,0,0,0)),s.IDENTITY=a(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/EllipseGeometryLibrary",["./Cartesian3","./Math","./Matrix3","./Quaternion"],function(e,t,r,n){"use strict";function i(t,i,a,l,f,d,h,m,y,p){var v=t+i;e.multiplyByScalar(l,Math.cos(v),o),e.multiplyByScalar(a,Math.sin(v),u),e.add(o,u,o);var g=Math.cos(t);g*=g;var w=Math.sin(t);w*=w;var x=d/Math.sqrt(h*g+f*w),E=x/m;return n.fromAxisAngle(o,E,s),r.fromQuaternion(s,c),r.multiplyByVector(c,y,p),e.normalize(p,p),e.multiplyByScalar(p,m,p),p}var a={},o=new e,u=new e,s=new n,c=new r,l=new e,f=new e,d=new e,h=new e;a.raisePositionsToHeight=function(t,r,n){for(var i=r.ellipsoid,a=r.height,o=r.extrudedHeight,u=n?2*(t.length/3):t.length/3,s=new Float64Array(3*u),c=t.length,m=n?c:0,y=0;c>y;y+=3){var p=y+1,v=y+2,g=e.fromArray(t,y,l);i.scaleToGeodeticSurface(g,g);var w=e.clone(g,f),x=i.geodeticSurfaceNormal(g,h),E=e.multiplyByScalar(x,a,d);e.add(g,E,g),n&&(e.multiplyByScalar(x,o,E),e.add(w,E,w),s[y+m]=w.x,s[p+m]=w.y,s[v+m]=w.z),s[y]=g.x,s[p]=g.y,s[v]=g.z}return s};var m=new e,y=new e,p=new e;return a.computeEllipsePositions=function(r,n,a){var o=r.semiMinorAxis,u=r.semiMajorAxis,s=r.rotation,c=r.center,h=8*r.granularity,v=o*o,g=u*u,w=u*o,x=e.magnitude(c),E=e.normalize(c,m),S=e.cross(e.UNIT_Z,c,y);S=e.normalize(S,S);var M=e.cross(E,S,p),b=1+Math.ceil(t.PI_OVER_TWO/h),T=t.PI_OVER_TWO/(b-1),A=t.PI_OVER_TWO-b*T;0>A&&(b-=Math.ceil(Math.abs(A)/T));var O,I,N,z,_,R=2*b*(b+1),P=n?new Array(3*R):void 0,L=0,C=l,q=f,D=3*(2*b+2*(b-1)),B=D-1,U=0,F=a?new Array(D):void 0;for(A=t.PI_OVER_TWO,O=0;b>O;++O){if(C=i(A,s,M,S,v,w,g,x,E,C),q=i(Math.PI-A,s,M,S,v,w,g,x,E,q),n){for(P[L++]=C.x,P[L++]=C.y,P[L++]=C.z,N=2*O+2,I=1;N-1>I;++I)z=I/(N-1),_=e.lerp(C,q,z,d),P[L++]=_.x,P[L++]=_.y,P[L++]=_.z;P[L++]=q.x,P[L++]=q.y,P[L++]=q.z}a&&(F[B--]=C.z,F[B--]=C.y,F[B--]=C.x,0!==O&&(F[U++]=q.x,F[U++]=q.y,F[U++]=q.z)),A=t.PI_OVER_TWO-(O+1)*T}for(O=b;O>0;--O){if(A=t.PI_OVER_TWO-(O-1)*T,C=i(-A,s,M,S,v,w,g,x,E,C),q=i(A+Math.PI,s,M,S,v,w,g,x,E,q),n){for(P[L++]=C.x,P[L++]=C.y,P[L++]=C.z,N=2*(O-1)+2,I=1;N-1>I;++I)z=I/(N-1),_=e.lerp(C,q,z,d),P[L++]=_.x,P[L++]=_.y,P[L++]=_.z;P[L++]=q.x,P[L++]=q.y,P[L++]=q.z}a&&(F[B--]=C.z,F[B--]=C.y,F[B--]=C.x,1!==O&&(F[U++]=q.x,F[U++]=q.y,F[U++]=q.z))}var G={};return n&&(G.positions=P,G.numPts=b),a&&(G.outerPositions=F),G},a}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,r,n,i){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,i.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,n.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(e){var n=-1;for(var i in e.attributes)if(e.attributes.hasOwnProperty(i)&&t(e.attributes[i])&&t(e.attributes[i].values)){var a=e.attributes[i],o=a.values.length/a.componentsPerAttribute;if(n!==o&&-1!==n)throw new r("All attribute lists must have the same number of attributes.");n=o}return n},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/GeometryInstance",["./defaultValue","./defined","./DeveloperError","./Matrix4"],function(e,t,r,n){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.geometry=t.geometry,this.modelMatrix=n.clone(e(t.modelMatrix,n.IDENTITY)),this.id=t.id,this.pickPrimitive=t.pickPrimitive,this.attributes=e(t.attributes,{}),this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0};return i}),define("Core/AttributeCompression",["./Cartesian2","./Cartesian3","./defined","./DeveloperError","./Math"],function(e,t,r,n,i){"use strict";var a={};a.octEncode=function(e,t){if(t.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),t.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){var r=t.x,n=t.y;t.x=(1-Math.abs(n))*i.signNotZero(r),t.y=(1-Math.abs(r))*i.signNotZero(n)}return t.x=i.toSNorm(t.x),t.y=i.toSNorm(t.y),t},a.octDecode=function(e,r,n){if(n.x=i.fromSNorm(e),n.y=i.fromSNorm(r),n.z=1-(Math.abs(n.x)+Math.abs(n.y)),n.z<0){var a=n.x;n.x=(1-Math.abs(n.y))*i.signNotZero(a),n.y=(1-Math.abs(a))*i.signNotZero(n.y)}return t.normalize(n,n)},a.octPackFloat=function(e){return 256*e.x+e.y};var o=new e;return a.octEncodeFloat=function(e){return a.octEncode(e,o),a.octPackFloat(o)},a.octDecodeFloat=function(e,t){var r=e/256,n=Math.floor(r),i=256*(r-n);return a.octDecode(n,i,t)},a.octPack=function(e,t,r,n){var i=a.octEncodeFloat(e),u=a.octEncodeFloat(t),s=a.octEncode(r,o);return n.x=65536*s.x+i,n.y=65536*s.y+u,n},a.octUnpack=function(e,t,r,n){var i=e.x/65536,o=Math.floor(i),u=65536*(i-o);i=e.y/65536;var s=Math.floor(i),c=65536*(i-s);a.octDecodeFloat(u,t),a.octDecodeFloat(c,r),a.octDecode(o,s,n)},a.compressTextureCoordinates=function(e){var t=1===e.x?4095:0|4096*e.x,r=1===e.y?4095:0|4096*e.y;return 4096*t+r},a.decompressTextureCoordinates=function(e,t){var r=e/4096;return t.x=Math.floor(r)/4096,t.y=r-Math.floor(r),t},a}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=new t,i=new t,a=new t,o=function(o,u,s,c,l){r(l)||(l=new t);var f,d,h,m,y,p,v,g;r(u.z)?(f=t.subtract(s,u,n),d=t.subtract(c,u,i),h=t.subtract(o,u,a),m=t.dot(f,f),y=t.dot(f,d),p=t.dot(f,h),v=t.dot(d,d),g=t.dot(d,h)):(f=e.subtract(s,u,n),d=e.subtract(c,u,i),h=e.subtract(o,u,a),m=e.dot(f,f),y=e.dot(f,d),p=e.dot(f,h),v=e.dot(d,d),g=e.dot(d,h));var w=1/(m*v-y*y);return l.y=(v*p-y*g)*w,l.z=(m*g-y*p)*w,l.x=1-l.y-l.z,l};return o}),define("Core/EncodedCartesian3",["./Cartesian3","./defined","./DeveloperError"],function(e,t){"use strict";var r=function(){this.high=e.clone(e.ZERO),this.low=e.clone(e.ZERO)};r.encode=function(e,r){t(r)||(r={high:0,low:0});var n;return e>=0?(n=65536*Math.floor(e/65536),r.high=n,r.low=e-n):(n=65536*Math.floor(-e/65536),r.high=-n,r.low=e+n),r};var n={high:0,low:0};r.fromCartesian=function(e,i){t(i)||(i=new r);var a=i.high,o=i.low;return r.encode(e.x,n),a.x=n.high,o.x=n.low,r.encode(e.y,n),a.y=n.high,o.y=n.low,r.encode(e.z,n),a.z=n.high,o.z=n.low,i};var i=new r;return r.writeElements=function(e,t,n){r.fromCartesian(e,i);var a=i.high,o=i.low;t[n]=a.x,t[n+1]=a.y,t[n+2]=a.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z},r}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(e){switch(e){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(t){return e(t)&&(t===i.UNSIGNED_BYTE||t===i.UNSIGNED_SHORT||t===i.UNSIGNED_INT)},i.createTypedArray=function(e,t){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},i.createTypedArrayFromArrayBuffer=function(e,t,r,i){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,r,i):new Uint16Array(t,r,i)},r(i)}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function r(e,r,n){var i=e+r;return t.sign(e)!==t.sign(r)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(r)))<n?0:i}var n={};return n.computeDiscriminant=function(e,t,r){var n=t*t-4*e*r;return n},n.computeRealRoots=function(e,n,i){var a;if(0===e)return 0===n?[]:[-i/n];if(0===n){if(0===i)return[0,0];var o=Math.abs(i),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(a=-i/e,0>a)return[];var s=Math.sqrt(a);return[-s,s]}if(0===i)return a=-n/e,0>a?[a,0]:[0,a];var c=n*n,l=4*e*i,f=r(c,-l,t.EPSILON14);if(0>f)return[];var d=-.5*r(n,t.sign(n)*Math.sqrt(f),t.EPSILON14);return n>0?[d/e,i/d]:[i/d,d/e]},n}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function r(e,t,r,n){var i,a,o=e,u=t/3,s=r/3,c=n,l=o*s,f=u*c,d=u*u,h=s*s,m=o*s-d,y=o*c-u*s,p=u*c-h,v=4*m*p-y*y;if(0>v){var g,w,x;d*f>=l*h?(g=o,w=m,x=-2*u*m+o*y):(g=c,w=p,x=-c*y+2*s*p);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);a=-x+S;var M=a/2,b=0>M?-Math.pow(-M,1/3):Math.pow(M,1/3),T=a===S?-b:-w/b;return i=0>=w?b+T:-x/(b*b+T*T+w),d*f>=l*h?[(i-u)/o]:[-c/(i+s)]}var A=m,O=-2*u*m+o*y,I=p,N=-c*y+2*s*p,z=Math.sqrt(v),_=Math.sqrt(3)/2,R=Math.abs(Math.atan2(o*z,-O)/3);i=2*Math.sqrt(-A);var P=Math.cos(R);a=i*P;var L=i*(-P/2-_*Math.sin(R)),C=a+L>2*u?a-u:L-u,q=o,D=C/q;R=Math.abs(Math.atan2(c*z,-N)/3),i=2*Math.sqrt(-I),P=Math.cos(R),a=i*P,L=i*(-P/2-_*Math.sin(R));var B=-c,U=2*s>a+L?a+s:L+s,F=B/U,G=q*U,k=-C*U-q*B,W=C*B,V=(s*k-u*W)/(-u*k+s*G);return V>=D?F>=D?F>=V?[D,V,F]:[D,F,V]:[F,D,V]:F>=D?[V,D,F]:F>=V?[V,F,D]:[F,V,D]}var n={};return n.computeDiscriminant=function(e,t,r,n){var i=e*e,a=t*t,o=r*r,u=n*n,s=18*e*t*r*n+a*o-27*i*u-4*(e*o*r+a*t*n);return s},n.computeRealRoots=function(e,n,i,a){var o,u;if(0===e)return t.computeRealRoots(n,i,a);if(0===n){if(0===i){if(0===a)return[0,0,0];u=-a/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===a?(o=t.computeRealRoots(e,0,i),0===o.Length?[0]:[o[0],0,o[1]]):r(e,0,i,a)}return 0===i?0===a?(u=-n/e,0>u?[u,0,0]:[0,0,u]):r(e,n,0,a):0===a?(o=t.computeRealRoots(e,n,i),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):r(e,n,i,a)},n}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,r,n){"use strict";function i(t,i,a,o){var u=t*t,s=i-3*u/8,c=a-i*t/2+u*t/8,l=o-a*t/4+i*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var d=-t/4,h=f[f.length-1];if(Math.abs(h)<r.EPSILON14){var m=n.computeRealRoots(1,s,l);if(2===m.length){var y,p=m[0],v=m[1];if(p>=0&&v>=0){var g=Math.sqrt(p),w=Math.sqrt(v);return[d-w,d-g,d+g,d+w]}if(p>=0&&0>v)return y=Math.sqrt(p),[d-y,d+y];if(0>p&&v>=0)return y=Math.sqrt(v),[d-y,d+y]}return[]}if(h>0){var x=Math.sqrt(h),E=(s+h-c/x)/2,S=(s+h+c/x)/2,M=n.computeRealRoots(1,x,E),b=n.computeRealRoots(1,-x,S);return 0!==M.length?(M[0]+=d,M[1]+=d,0!==b.length?(b[0]+=d,b[1]+=d,M[1]<=b[0]?[M[0],M[1],b[0],b[1]]:b[1]<=M[0]?[b[0],b[1],M[0],M[1]]:M[0]>=b[0]&&M[1]<=b[1]?[b[0],M[0],M[1],b[1]]:b[0]>=M[0]&&b[1]<=M[1]?[M[0],b[0],b[1],M[1]]:M[0]>b[0]&&M[0]<b[1]?[b[0],M[0],b[1],M[1]]:[M[0],b[0],M[1],b[1]]):M):0!==b.length?(b[0]+=d,b[1]+=d,b):[]}}return[]}function a(t,i,a,o){var u=a*a,s=i*i,c=t*t,l=-2*i,f=a*t+s-4*o,d=c*o-a*i*t+u,h=e.computeRealRoots(1,l,f,d);if(h.length>0){var m,y,p=h[0],v=i-p,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),M=c-4*p,b=c+4*Math.abs(p);if(0>p||M*S>E*b){var T=Math.sqrt(M);m=T/2,y=0===T?0:(t*x-a)/T}else{var A=Math.sqrt(E);m=0===A?0:(t*x-a)/A,y=A/2}var O,I;0===w&&0===m?(O=0,I=0):r.sign(w)===r.sign(m)?(O=w+m,I=p/O):(I=w-m,O=p/I);var N,z;0===x&&0===y?(N=0,z=0):r.sign(x)===r.sign(y)?(N=x+y,z=o/N):(z=x-y,N=o/z);var _=n.computeRealRoots(1,O,N),R=n.computeRealRoots(1,I,z);if(0!==_.length)return 0!==R.length?_[1]<=R[0]?[_[0],_[1],R[0],R[1]]:R[1]<=_[0]?[R[0],R[1],_[0],_[1]]:_[0]>=R[0]&&_[1]<=R[1]?[R[0],_[0],_[1],R[1]]:R[0]>=_[0]&&R[1]<=_[1]?[_[0],R[0],R[1],_[1]]:_[0]>R[0]&&_[0]<R[1]?[R[0],_[0],R[1],_[1]]:[_[0],R[0],_[1],R[1]]:_;if(0!==R.length)return R}return[]}var o={};return o.computeDiscriminant=function(e,t,r,n,i){var a=e*e,o=a*e,u=t*t,s=u*t,c=r*r,l=c*r,f=n*n,d=f*n,h=i*i,m=h*i,y=u*c*f-4*s*d-4*e*l*f+18*e*t*r*d-27*a*f*f+256*o*m+i*(18*s*r*n-4*u*l+16*e*c*c-80*e*t*c*n-6*e*u*f+144*a*r*f)+h*(144*e*u*r-27*u*u-128*a*c-192*a*t*n);return y},o.computeRealRoots=function(t,n,o,u,s){if(Math.abs(t)<r.EPSILON15)return e.computeRealRoots(n,o,u,s);var c=n/t,l=o/t,f=u/t,d=s/t,h=0>c?1:0;switch(h+=0>l?h+1:h,h+=0>f?h+1:h,h+=0>d?h+1:h){case 0:return i(c,l,f,d);case 1:return a(c,l,f,d);case 2:return a(c,l,f,d);case 3:return i(c,l,f,d);case 4:return i(c,l,f,d);case 5:return a(c,l,f,d);case 6:return i(c,l,f,d);case 7:return i(c,l,f,d);case 8:return a(c,l,f,d);case 9:return i(c,l,f,d);case 10:return i(c,l,f,d);case 11:return a(c,l,f,d);case 12:return i(c,l,f,d);case 13:return i(c,l,f,d);case 14:return i(c,l,f,d);case 15:return i(c,l,f,d);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=function(r,n){n=e.clone(t(n,e.ZERO)),e.equals(n,e.ZERO)||e.normalize(n,n),this.origin=e.clone(t(r,e.ZERO)),this.direction=n};return n.getPoint=function(t,n,i){return r(i)||(i=new e),i=e.multiplyByScalar(t.direction,n,i),e.add(t.origin,i,i)},n}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,r,n,i,a,o,u,s,c){"use strict";function l(t,n,i,o,u){u=r(u,!1);var s,c,l,f,d,h=t.origin,m=t.direction,y=e.subtract(i,n,p),E=e.subtract(o,n,v),S=e.cross(m,E,g),M=e.dot(y,S);if(u){if(M<a.EPSILON6)return void 0;if(s=e.subtract(h,n,w),l=e.dot(s,S),0>l||l>M)return void 0;if(c=e.cross(s,y,x),f=e.dot(m,c),0>f||l+f>M)return void 0;d=e.dot(E,c)/M}else{if(Math.abs(M)<a.EPSILON6)return void 0;var b=1/M;if(s=e.subtract(h,n,w),l=e.dot(s,S)*b,0>l||l>1)return void 0;if(c=e.cross(s,y,x),f=e.dot(m,c)*b,0>f||l+f>1)return void 0;d=e.dot(E,c)*b}return d}function f(e,t,r,n){var i=t*t-4*e*r;if(0>i)return void 0;if(i>0){var a=1/(2*e),o=Math.sqrt(i),u=(-t+o)*a,s=(-t-o)*a;return s>u?(n.root0=u,n.root1=s):(n.root0=s,n.root1=u),n}var c=-t/(2*e);return 0===c?void 0:(n.root0=n.root1=c,n)}function d(t,r,i){n(i)||(i={});var a=t.origin,o=t.direction,u=r.center,s=r.radius*r.radius,c=e.subtract(a,u,g),l=e.dot(o,o),d=2*e.dot(o,c),h=e.magnitudeSquared(c)-s,m=f(l,d,h,S);return n(m)?(i.start=m.root0,i.stop=m.root1,i):void 0}function h(e,t,r){var n=e+t;return a.sign(e)!==a.sign(t)&&Math.abs(n/Math.max(Math.abs(e),Math.abs(t)))<r?0:n}function m(t,r,n,i,c){var l,f=i*i,d=c*c,m=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*d,y=c*(i*h(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],a.EPSILON15)+r.y),p=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*d+i*r.x+n,v=d*h(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],a.EPSILON15),g=c*(i*h(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+r.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(m,y,p),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(i,c*x,c*-E)),w.push(new e(i,c*x,c*E)),2===l.length){var S=l[1],M=Math.sqrt(Math.max(1-S*S,0));w.push(new e(i,c*S,c*-M)),w.push(new e(i,c*S,c*M))}return w}var b=g*g,T=v*v,A=m*m,O=g*v,I=A+T,N=2*(y*m+O),z=2*p*m+y*y-T+b,_=2*(p*y-O),R=p*p-b;if(0===I&&0===N&&0===z&&0===_)return w;l=s.computeRealRoots(I,N,z,_,R);var P=l.length;if(0===P)return w;for(var L=0;P>L;++L){var C,q=l[L],D=q*q,B=Math.max(1-D,0),U=Math.sqrt(B);C=a.sign(m)===a.sign(p)?h(m*D+p,y*q,a.EPSILON12):a.sign(p)===a.sign(y*q)?h(m*D,y*q+p,a.EPSILON12):h(m*D+y*q,p,a.EPSILON12);var F=h(v*q,g,a.EPSILON15),G=C*F;0>G?w.push(new e(i,c*q,c*U)):G>0?w.push(new e(i,c*q,c*-U)):0!==U?(w.push(new e(i,c*q,c*-U)),w.push(new e(i,c*q,c*U)),++L):w.push(new e(i,c*q,c*U))}return w}var y={};y.rayPlane=function(t,r,i){n(i)||(i=new e);var o=t.origin,u=t.direction,s=r.normal,c=e.dot(s,u);if(Math.abs(c)<a.EPSILON15)return void 0;var l=(-r.distance-e.dot(s,o))/c;return 0>l?void 0:(i=e.multiplyByScalar(u,l,i),e.add(o,i,i))};var p=new e,v=new e,g=new e,w=new e,x=new e;y.rayTriangle=function(t,r,i,a,o,u){var s=l(t,r,i,a,o);return!n(s)||0>s?void 0:(n(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;y.lineSegmentTriangle=function(t,r,i,a,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(r,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,i,a,o,u);return!n(f)||0>f||f>e.distance(t,r)?void 0:(n(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};y.raySphere=function(e,t,r){return r=d(e,t,r),!n(r)||r.stop<0?void 0:(r.start=Math.max(r.start,0),r)};var M=new c;y.lineSegmentSphere=function(t,r,i,a){var o=M;e.clone(t,o.origin);var u=e.subtract(r,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),a=d(o,i,a),!n(a)||a.stop<0||a.start>s?void 0:(a.start=Math.max(a.start,0),a.stop=Math.min(a.stop,s),a)};var b=new e,T=new e;y.rayEllipsoid=function(t,r){var n,i,a,o,u,s=r.oneOverRadii,c=e.multiplyComponents(s,t.origin,b),l=e.multiplyComponents(s,t.direction,T),f=e.magnitudeSquared(c),d=e.dot(c,l);if(f>1){if(d>=0)return void 0;var h=d*d;if(n=f-1,i=e.magnitudeSquared(l),a=i*n,a>h)return void 0;if(h>a){o=d*d-a,u=-d+Math.sqrt(o);var m=u/i,y=n/u;return y>m?{start:m,stop:y}:{start:y,stop:m}}var p=Math.sqrt(n/i);return{start:p,stop:p}}return 1>f?(n=f-1,i=e.magnitudeSquared(l),a=i*n,o=d*d-a,u=-d+Math.sqrt(o),{start:0,stop:u/i}):0>d?(i=e.magnitudeSquared(l),{start:0,stop:-d/i}):void 0};var A=new e,O=new e,I=new e,N=new e,z=new e,_=new o,R=new o,P=new o,L=new o,C=new o,q=new o,D=new o,B=new e,U=new e,F=new t;y.grazingAltitudeLocation=function(t,r){var i=t.origin,u=t.direction,s=r.geodeticSurfaceNormal(i,A);if(e.dot(u,s)>=0)return i;var c=n(this.rayEllipsoid(t,r)),l=r.transformPositionToScaledSpace(u,A),f=e.normalize(l,l),d=e.mostOrthogonalAxis(l,N),h=e.normalize(e.cross(d,f,O),O),y=e.normalize(e.cross(f,h,I),I),p=_;p[0]=f.x,p[1]=f.y,p[2]=f.z,p[3]=h.x,p[4]=h.y,p[5]=h.z,p[6]=y.x,p[7]=y.y,p[8]=y.z;var v=o.transpose(p,R),g=o.fromScale(r.radii,P),w=o.fromScale(r.oneOverRadii,L),x=C;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,M=o.multiply(o.multiply(v,w,q),x,q),b=o.multiply(o.multiply(M,g,D),p,D),T=o.multiplyByVector(M,i,z),G=m(b,e.negate(T,A),0,0,1),k=G.length;if(k>0){for(var W=e.clone(e.ZERO,U),V=Number.NEGATIVE_INFINITY,Y=0;k>Y;++Y){E=o.multiplyByVector(g,o.multiplyByVector(p,G[Y],B),B);var j=e.normalize(e.subtract(E,i,N),N),H=e.dot(j,u);H>V&&(V=H,W=e.clone(E,W))}var Z=r.cartesianToCartographic(W,F);return V=a.clamp(V,0,1),S=e.magnitude(e.subtract(W,i,N))*Math.sqrt(1-V*V),S=c?-S:S,Z.height=S,r.cartographicToCartesian(Z,new e)}return void 0};var G=new e;return y.lineSegmentPlane=function(t,r,i,o){n(o)||(o=new e);var u=e.subtract(r,t,G),s=i.normal,c=e.dot(s,u);if(Math.abs(c)<a.EPSILON6)return void 0;var l=e.dot(s,t),f=-(i.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},y.trianglePlaneIntersection=function(t,r,n,i){var a=i.normal,o=i.distance,u=e.dot(a,t)+o<0,s=e.dot(a,r)+o<0,c=e.dot(a,n)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,d;if((1===l||2===l)&&(f=new e,d=new e),1===l){if(u)return y.lineSegmentPlane(t,r,i,f),y.lineSegmentPlane(t,n,i,d),{positions:[t,r,n,f,d],indices:[0,3,4,1,2,4,1,4,3]};if(s)return y.lineSegmentPlane(r,n,i,f),y.lineSegmentPlane(r,t,i,d),{positions:[t,r,n,f,d],indices:[1,3,4,2,0,4,2,4,3]};if(c)return y.lineSegmentPlane(n,t,i,f),y.lineSegmentPlane(n,r,i,d),{positions:[t,r,n,f,d],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return y.lineSegmentPlane(r,t,i,f),y.lineSegmentPlane(n,t,i,d),{positions:[t,r,n,f,d],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return y.lineSegmentPlane(n,r,i,f),y.lineSegmentPlane(t,r,i,d),{positions:[t,r,n,f,d],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return y.lineSegmentPlane(t,n,i,f),y.lineSegmentPlane(r,n,i,d),{positions:[t,r,n,f,d],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},y}),define("Core/Tipsify",["./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};return r.calculateACMR=function(r){r=e(r,e.EMPTY_OBJECT);var n=r.indices,i=r.maximumIndex,a=e(r.cacheSize,24),o=n.length;if(!t(i)){i=0;for(var u=0,s=n[u];o>u;)s>i&&(i=s),++u,s=n[u]}for(var c=[],l=0;i+1>l;l++)c[l]=0;for(var f=a+1,d=0;o>d;++d)f-c[n[d]]>a&&(c[n[d]]=f,++f);return(f-a+1)/(o/3)},r.tipsify=function(r){function n(e,t,r,n){for(;t.length>=1;){var i=t[t.length-1];if(t.splice(t.length-1,1),e[i].numLiveTriangles>0)return i}for(;n>a;){if(e[a].numLiveTriangles>0)return++a,a-1;++a}return-1}function i(e,t,r,i,a,o,u){for(var s,c=-1,l=-1,f=0;f<r.length;){var d=r[f];i[d].numLiveTriangles&&(s=0,a-i[d].timeStamp+2*i[d].numLiveTriangles<=t&&(s=a-i[d].timeStamp),(s>l||-1===l)&&(l=s,c=d)),++f}return-1===c?n(i,o,e,u):c}r=e(r,e.EMPTY_OBJECT);var a,o=r.indices,u=r.maximumIndex,s=e(r.cacheSize,24),c=o.length,l=0,f=0,d=o[f],h=c;if(t(u))l=u+1;else{for(;h>f;)d>l&&(l=d),++f,d=o[f];if(-1===l)return 0;++l}for(var m=[],y=0;l>y;y++)m[y]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};f=0;for(var p=0;h>f;)m[o[f]].vertexTriangles.push(p),++m[o[f]].numLiveTriangles,m[o[f+1]].vertexTriangles.push(p),++m[o[f+1]].numLiveTriangles,m[o[f+2]].vertexTriangles.push(p),++m[o[f+2]].numLiveTriangles,++p,f+=3;var v=0,g=s+1;a=1;var w,x,E=[],S=[],M=0,b=[],T=c/3,A=[];for(y=0;T>y;y++)A[y]=!1;for(var O,I;-1!==v;){E=[],x=m[v],I=x.vertexTriangles.length;for(var N=0;I>N;++N)if(p=x.vertexTriangles[N],!A[p]){A[p]=!0,f=p+p+p;for(var z=0;3>z;++z)O=o[f],E.push(O),S.push(O),b[M]=O,++M,w=m[O],--w.numLiveTriangles,g-w.timeStamp>s&&(w.timeStamp=g,++g),++f}v=i(o,s,E,m,g,S,l)}return b},r}),define("Core/GeometryPipeline",["./AttributeCompression","./barycentricCoordinates","./BoundingSphere","./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EncodedCartesian3","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryInstance","./GeometryType","./IndexDatatype","./Intersect","./IntersectionTests","./Math","./Matrix3","./Matrix4","./Plane","./PrimitiveType","./Tipsify"],function(e,t,r,n,i,a,o,u,s,c,l,f,d,h,m,y,p,v,g,w,x,E,S,M,b,T){"use strict";function A(e,t,r,n,i){e[t++]=r,e[t++]=n,e[t++]=n,e[t++]=i,e[t++]=i,e[t]=r}function O(e){for(var t=e.length,r=6*(t/3),n=v.createTypedArray(t,r),i=0,a=0;t>a;a+=3,i+=6)A(n,i,e[a],e[a+1],e[a+2]);return n}function I(e){var t=e.length;if(t>=3){var r=6*(t-2),n=v.createTypedArray(t,r);A(n,0,e[0],e[1],e[2]);for(var i=6,a=3;t>a;++a,i+=6)A(n,i,e[a-1],e[a],e[a-2]);return n}return new Uint16Array}function N(e){if(e.length>0){for(var t=e.length-1,r=6*(t-1),n=v.createTypedArray(t,r),i=e[0],a=0,o=1;t>o;++o,a+=6)A(n,a,i,e[o],e[o+1]);return n}return new Uint16Array}function z(e){var t={};for(var r in e)if(e.hasOwnProperty(r)&&c(e[r])&&c(e[r].values)){var n=e[r];t[r]=new m({componentDatatype:n.componentDatatype,componentsPerAttribute:n.componentsPerAttribute,normalize:n.normalize,values:[]})}return t}function _(e,t,r){for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values))for(var i=t[n],a=0;a<i.componentsPerAttribute;++a)e[n].values.push(i.values[r*i.componentsPerAttribute+a])}function R(e,t){if(c(t))for(var r=t.values,n=r.length,a=0;n>a;a+=3)i.unpack(r,a,at),S.multiplyByPoint(e,at,at),i.pack(at,r,a)}function P(e,t){if(c(t))for(var r=t.values,n=r.length,a=0;n>a;a+=3)i.unpack(r,a,at),E.multiplyByVector(e,at,at),at=i.normalize(at,at),i.pack(at,r,a)}function L(e,t){var r,n=e.length,i={},a=e[0][t].attributes;for(r in a)if(a.hasOwnProperty(r)&&c(a[r])&&c(a[r].values)){for(var o=a[r],s=o.values.length,l=!0,f=1;n>f;++f){var d=e[f][t].attributes[r];if(!c(d)||o.componentDatatype!==d.componentDatatype||o.componentsPerAttribute!==d.componentsPerAttribute||o.normalize!==d.normalize){l=!1;break}s+=d.values.length}l&&(i[r]=new m({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:u.createTypedArray(o.componentDatatype,s)}))}return i}function C(e,t){var n,a,o,u,s=e.length;e[0].modelMatrix;var l,f,d,m=c(e[0][t].indices),y=e[0][t].primitiveType,p=L(e,t);for(n in p)if(p.hasOwnProperty(n))for(l=p[n].values,u=0,a=0;s>a;++a)for(f=e[a][t].attributes[n].values,d=f.length,o=0;d>o;++o)l[u++]=f[o];var g;if(m){var w=0;for(a=0;s>a;++a)w+=e[a][t].indices.length;var x=h.computeNumberOfVertices(new h({attributes:p,primitiveType:b.POINTS})),E=v.createTypedArray(x,w),S=0,M=0;for(a=0;s>a;++a){var T=e[a][t].indices,A=T.length;for(u=0;A>u;++u)E[S++]=M+T[u];M+=h.computeNumberOfVertices(e[a][t])}g=E}var O,I=new i,N=0;for(a=0;s>a;++a){if(O=e[a][t].boundingSphere,!c(O)){I=void 0;break}i.add(O.center,I,I)}if(c(I))for(i.divideByScalar(I,s,I),a=0;s>a;++a){O=e[a][t].boundingSphere;var z=i.magnitude(i.subtract(O.center,I,st))+O.radius;z>N&&(N=z)}return new h({attributes:p,indices:g,primitiveType:y,boundingSphere:c(I)?new r(I,N):void 0})}function q(e){if(c(e.indices))return e;for(var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function D(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=1,r[1]=0,r[2]=2;for(var n=3,i=3;t>i;++i)r[n++]=i-1,r[n++]=0,r[n++]=i;return e.indices=r,e.primitiveType=b.TRIANGLES,e}function B(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=0,r[1]=1,r[2]=2,t>3&&(r[3]=0,r[4]=2,r[5]=3);for(var n=6,i=3;t-1>i;i+=2)r[n++]=i,r[n++]=i-1,r[n++]=i+1,t>i+2&&(r[n++]=i,r[n++]=i+1,r[n++]=i+2);return e.indices=r,e.primitiveType=b.TRIANGLES,e}function U(e){if(c(e.indices))return e;for(var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function F(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,2*(t-1));r[0]=0,r[1]=1;for(var n=2,i=2;t>i;++i)r[n++]=i-1,r[n++]=i;return e.indices=r,e.primitiveType=b.LINES,e}function G(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,2*t);r[0]=0,r[1]=1;for(var n=2,i=2;t>i;++i)r[n++]=i-1,r[n++]=i;return r[n++]=t-1,r[n]=0,e.indices=r,e.primitiveType=b.LINES,e}function k(e){switch(e.primitiveType){case b.TRIANGLE_FAN:return D(e);case b.TRIANGLE_STRIP:return B(e);case b.TRIANGLES:return q(e);case b.LINE_STRIP:return F(e);case b.LINE_LOOP:return G(e);case b.LINES:return U(e)}return e}function W(e,t){Math.abs(e.y)<x.EPSILON6&&(e.y=t?-x.EPSILON6:x.EPSILON6)}function V(e,t,r){if(0!==e.y&&0!==t.y&&0!==r.y)return W(e,e.y<0),W(t,t.y<0),W(r,r.y<0),void 0;var n,i=Math.abs(e.y),a=Math.abs(t.y),o=Math.abs(r.y);n=i>a?i>o?x.sign(e.y):x.sign(r.y):a>o?x.sign(t.y):x.sign(r.y);var u=0>n;W(e,u),W(t,u),W(r,u)}function Y(e,t,r,n){i.add(e,i.multiplyByScalar(i.subtract(t,e,xt),e.y/(e.y-t.y),xt),r),i.clone(r,n),W(r,!0),W(n,!1)}function j(e,t,r){if(e.x>=0||t.x>=0||r.x>=0)return void 0;V(e,t,r);var n=e.y<0,i=t.y<0,a=r.y<0,o=0;o+=n?1:0,o+=i?1:0,o+=a?1:0;var u=Tt.indices;1===o?(u[1]=3,u[2]=4,u[5]=6,u[7]=6,u[8]=5,n?(Y(e,t,Et,Mt),Y(e,r,St,bt),u[0]=0,u[3]=1,u[4]=2,u[6]=1):i?(Y(t,r,Et,Mt),Y(t,e,St,bt),u[0]=1,u[3]=2,u[4]=0,u[6]=2):a&&(Y(r,e,Et,Mt),Y(r,t,St,bt),u[0]=2,u[3]=0,u[4]=1,u[6]=0)):2===o&&(u[2]=4,u[4]=4,u[5]=3,u[7]=5,u[8]=6,n?i?a||(Y(r,e,Et,Mt),Y(r,t,St,bt),u[0]=0,u[1]=1,u[3]=0,u[6]=2):(Y(t,r,Et,Mt),Y(t,e,St,bt),u[0]=2,u[1]=0,u[3]=2,u[6]=1):(Y(e,t,Et,Mt),Y(e,r,St,bt),u[0]=1,u[1]=2,u[3]=1,u[6]=0));var s=Tt.positions;return s[0]=e,s[1]=t,s[2]=r,s.length=3,(1===o||2===o)&&(s[3]=Et,s[4]=St,s[5]=Mt,s[6]=bt,s.length=7),Tt}function H(e,t){var n=e.attributes;if(0===n.position.values.length)return void 0;for(var i in n)if(n.hasOwnProperty(i)&&c(n[i])&&c(n[i].values)){var a=n[i]; +a.values=u.createTypedArray(a.componentDatatype,a.values)}var o=h.computeNumberOfVertices(e);return e.indices=v.createTypedArray(o,e.indices),t&&(e.boundingSphere=r.fromVertices(n.position.values)),e}function Z(e){var t=e.attributes,r={};for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values)){var i=t[n];r[n]=new m({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return new h({attributes:r,indices:[],primitiveType:e.primitiveType})}function X(e,t,r){var n=c(e.geometry.boundingSphere);t=H(t,n),r=H(r,n),c(r)&&!c(t)?e.geometry=r:!c(r)&&c(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=r,e.geometry=void 0)}function Q(e,r,a,o,u,s,l,f,d,h,m){if(c(s)||c(l)||c(f)||c(d)){var y=i.fromArray(u,3*e,At),p=i.fromArray(u,3*r,Ot),v=i.fromArray(u,3*a,It),g=t(o,y,p,v,Nt);if(c(s)){var w=i.fromArray(s,3*e,At),x=i.fromArray(s,3*r,Ot),E=i.fromArray(s,3*a,It);i.multiplyByScalar(w,g.x,w),i.multiplyByScalar(x,g.y,x),i.multiplyByScalar(E,g.z,E);var S=i.add(w,x,w);i.add(S,E,S),i.normalize(S,S),i.pack(S,h.normal.values,3*m)}if(c(l)){var M=i.fromArray(l,3*e,At),b=i.fromArray(l,3*r,Ot),T=i.fromArray(l,3*a,It);i.multiplyByScalar(M,g.x,M),i.multiplyByScalar(b,g.y,b),i.multiplyByScalar(T,g.z,T);var A=i.add(M,b,M);i.add(A,T,A),i.normalize(A,A),i.pack(A,h.binormal.values,3*m)}if(c(f)){var O=i.fromArray(f,3*e,At),I=i.fromArray(f,3*r,Ot),N=i.fromArray(f,3*a,It);i.multiplyByScalar(O,g.x,O),i.multiplyByScalar(I,g.y,I),i.multiplyByScalar(N,g.z,N);var z=i.add(O,I,O);i.add(z,N,z),i.normalize(z,z),i.pack(z,h.tangent.values,3*m)}if(c(d)){var _=n.fromArray(d,2*e,zt),R=n.fromArray(d,2*r,_t),P=n.fromArray(d,2*a,Rt);n.multiplyByScalar(_,g.x,_),n.multiplyByScalar(R,g.y,R),n.multiplyByScalar(P,g.z,P);var L=n.add(_,R,_);n.add(L,P,L),n.pack(L,h.st.values,2*m)}}}function K(e,t,r,n,i,a){var o=e.position.values.length/3;if(-1!==i){var u=n[i],s=r[u];return-1===s?(r[u]=o,e.position.values.push(a.x,a.y,a.z),t.push(o),o):(t.push(s),s)}return e.position.values.push(a.x,a.y,a.z),t.push(o),o}function J(e){var t,r,n,a,o,u=e.geometry,s=u.attributes,l=s.position.values,f=c(s.normal)?s.normal.values:void 0,d=c(s.binormal)?s.binormal.values:void 0,h=c(s.tangent)?s.tangent.values:void 0,m=c(s.st)?s.st.values:void 0,y=u.indices,p=Z(u),v=Z(u),g=[];g.length=l.length/3;var w=[];for(w.length=l.length/3,o=0;o<g.length;++o)g[o]=-1,w[o]=-1;var x=y.length;for(o=0;x>o;o+=3){var E=y[o],S=y[o+1],M=y[o+2],b=i.fromArray(l,3*E),T=i.fromArray(l,3*S),A=i.fromArray(l,3*M),O=j(b,T,A);if(c(O)&&O.positions.length>3)for(var I=O.positions,N=O.indices,z=N.length,_=0;z>_;++_){var R=N[_],P=I[R];P.y<0?(t=v.attributes,r=v.indices,n=g):(t=p.attributes,r=p.indices,n=w),a=K(t,r,n,y,3>R?o+R:-1,P),Q(E,S,M,P,l,f,d,h,m,t,a)}else c(O)&&(b=O.positions[0],T=O.positions[1],A=O.positions[2]),b.y<0?(t=v.attributes,r=v.indices,n=g):(t=p.attributes,r=p.indices,n=w),a=K(t,r,n,y,o,b),Q(E,S,M,b,l,f,d,h,m,t,a),a=K(t,r,n,y,o+1,T),Q(E,S,M,T,l,f,d,h,m,t,a),a=K(t,r,n,y,o+2,A),Q(E,S,M,A,l,f,d,h,m,t,a)}X(e,v,p)}function $(e){var t,r=e.geometry,n=r.attributes,a=n.position.values,o=r.indices,u=Z(r),s=Z(r),l=o.length,f=[];f.length=a.length/3;var d=[];for(d.length=a.length/3,t=0;t<f.length;++t)f[t]=-1,d[t]=-1;for(t=0;l>t;t+=2){var h=o[t],m=o[t+1],y=i.fromArray(a,3*h,At),p=i.fromArray(a,3*m,Ot);Math.abs(y.y)<x.EPSILON6&&(y.y=y.y<0?-x.EPSILON6:x.EPSILON6),Math.abs(p.y)<x.EPSILON6&&(p.y=p.y<0?-x.EPSILON6:x.EPSILON6);var v=u.attributes,g=u.indices,E=d,S=s.attributes,M=s.indices,b=f,T=w.lineSegmentPlane(y,p,Pt,It);if(c(T)){var A=i.multiplyByScalar(i.UNIT_Y,5*x.EPSILON9,Lt);y.y<0&&(i.negate(A,A),v=s.attributes,g=s.indices,E=f,S=u.attributes,M=u.indices,b=d);var O=i.add(T,A,Ct);K(v,g,E,o,t,y),K(v,g,E,o,-1,O),i.negate(A,A),i.add(T,A,O),K(S,M,b,o,-1,O),K(S,M,b,o,t+1,p)}else{var I,N,z;y.y<0?(I=s.attributes,N=s.indices,z=f):(I=u.attributes,N=u.indices,z=d),K(I,N,z,o,t,y),K(I,N,z,o,t+1,p)}}X(e,s,u)}function et(e){var t=e.geometry,r=t.attributes,o=r.position.values,u=r.prevPosition.values,s=r.nextPosition.values,l=r.expandAndWidth.values;t.indices;var f,d,h,m=c(r.st)?r.st.values:void 0,y=c(r.color)?r.color.values:void 0,p=Z(t),v=Z(t),g=o.length/3;for(f=0;g>f;f+=4){var E=f,S=f+1,M=f+2,b=f+3,T=i.fromArray(o,3*E,Bt),A=i.fromArray(o,3*S,Ut),O=i.fromArray(o,3*M,Ft),I=i.fromArray(o,3*b,Gt);Math.abs(T.y)<x.EPSILON6&&(T.y=x.EPSILON6*(O.y<0?-1:1),A.y=T.y),Math.abs(O.y)<x.EPSILON6&&(O.y=x.EPSILON6*(T.y<0?-1:1),I.y=O.y);var N=p.attributes,z=p.indices,_=v.attributes,R=v.indices,P=w.lineSegmentPlane(T,O,Pt,kt);if(c(P)){var L=i.multiplyByScalar(i.UNIT_Y,5*x.EPSILON9,Wt);T.y<0&&(i.negate(L,L),N=v.attributes,z=v.indices,_=p.attributes,R=p.indices);var C=i.add(P,L,Vt);for(N.position.values.push(T.x,T.y,T.z,A.x,A.y,A.z),N.position.values.push(C.x,C.y,C.z),N.position.values.push(C.x,C.y,C.z),i.negate(L,L),i.add(P,L,C),_.position.values.push(C.x,C.y,C.z),_.position.values.push(C.x,C.y,C.z),_.position.values.push(O.x,O.y,O.z,I.x,I.y,I.z),d=3*E;3*E+6>d;++d)N.prevPosition.values.push(u[d]);for(N.prevPosition.values.push(T.x,T.y,T.z,T.x,T.y,T.z),_.prevPosition.values.push(T.x,T.y,T.z,T.x,T.y,T.z),d=3*M;3*M+6>d;++d)_.prevPosition.values.push(u[d]);for(d=3*E;3*E+6>d;++d)N.nextPosition.values.push(s[d]);for(N.nextPosition.values.push(O.x,O.y,O.z,O.x,O.y,O.z),_.nextPosition.values.push(O.x,O.y,O.z,O.x,O.y,O.z),d=3*M;3*M+6>d;++d)_.nextPosition.values.push(s[d]);var q=n.fromArray(l,2*E,qt),D=Math.abs(q.y);N.expandAndWidth.values.push(-1,D,1,D),N.expandAndWidth.values.push(-1,-D,1,-D),_.expandAndWidth.values.push(-1,D,1,D),_.expandAndWidth.values.push(-1,-D,1,-D);var B=i.magnitudeSquared(i.subtract(P,T,Gt));if(B/=i.magnitudeSquared(i.subtract(O,T,Gt)),c(y)){var U=a.fromArray(y,4*E,Yt),F=a.fromArray(y,4*M,Yt),G=x.lerp(U.x,F.x,B),k=x.lerp(U.y,F.y,B),W=x.lerp(U.z,F.z,B),V=x.lerp(U.w,F.w,B);for(d=4*E;4*E+8>d;++d)N.color.values.push(y[d]);for(N.color.values.push(G,k,W,V),N.color.values.push(G,k,W,V),_.color.values.push(G,k,W,V),_.color.values.push(G,k,W,V),d=4*M;4*M+8>d;++d)_.color.values.push(y[d])}if(c(m)){var Y=n.fromArray(m,2*E,qt),j=n.fromArray(m,2*(f+3),Dt),H=x.lerp(Y.x,j.x,B);for(d=2*E;2*E+4>d;++d)N.st.values.push(m[d]);for(N.st.values.push(H,Y.y),N.st.values.push(H,j.y),_.st.values.push(H,Y.y),_.st.values.push(H,j.y),d=2*M;2*M+4>d;++d)_.st.values.push(m[d])}h=N.position.values.length/3-4,z.push(h,h+2,h+1),z.push(h+1,h+2,h+3),h=_.position.values.length/3-4,R.push(h,h+2,h+1),R.push(h+1,h+2,h+3)}else{var Q,K;for(T.y<0?(Q=v.attributes,K=v.indices):(Q=p.attributes,K=p.indices),Q.position.values.push(T.x,T.y,T.z),Q.position.values.push(A.x,A.y,A.z),Q.position.values.push(O.x,O.y,O.z),Q.position.values.push(I.x,I.y,I.z),d=3*f;3*f+12>d;++d)Q.prevPosition.values.push(u[d]),Q.nextPosition.values.push(s[d]);for(d=2*f;2*f+8>d;++d)Q.expandAndWidth.values.push(l[d]),c(m)&&Q.st.values.push(m[d]);if(c(y))for(d=4*f;4*f+16>d;++d)Q.color.values.push(y[d]);h=Q.position.values.length/3-4,K.push(h,h+2,h+1),K.push(h+1,h+2,h+3)}}X(e,v,p)}var tt={};tt.toWireframe=function(e){var t=e.indices;if(c(t)){switch(e.primitiveType){case b.TRIANGLES:e.indices=O(t);break;case b.TRIANGLE_STRIP:e.indices=I(t);break;case b.TRIANGLE_FAN:e.indices=N(t);break;default:throw new l("geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.")}e.primitiveType=b.LINES}return e},tt.createLineSegmentsForVectors=function(e,t,n){t=s(t,"normal"),n=s(n,1e4);for(var i=e.attributes.position.values,a=e.attributes[t].values,o=i.length,l=new Float64Array(2*o),f=0,d=0;o>d;d+=3)l[f++]=i[d],l[f++]=i[d+1],l[f++]=i[d+2],l[f++]=i[d]+a[d]*n,l[f++]=i[d+1]+a[d+1]*n,l[f++]=i[d+2]+a[d+2]*n;var y,p=e.boundingSphere;return c(p)&&(y=new r(p.center,p.radius+n)),new h({attributes:{position:new m({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:l})},primitiveType:b.LINES,boundingSphere:y})},tt.createAttributeLocations=function(e){var t,r=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","binormal","tangent","compressedAttributes"],n=e.attributes,i={},a=0,o=r.length;for(t=0;o>t;++t){var u=r[t];c(n[u])&&(i[u]=a++)}for(var s in n)n.hasOwnProperty(s)&&!c(i[s])&&(i[s]=a++);return i},tt.reorderForPreVertexCache=function(e){var t=h.computeNumberOfVertices(e),r=e.indices;if(c(r)){for(var n=new Int32Array(t),i=0;t>i;i++)n[i]=-1;for(var a,o=r,s=o.length,l=v.createTypedArray(t,s),f=0,d=0,m=0;s>f;)a=n[o[f]],-1!==a?l[d]=a:(a=o[f],n[a]=m,l[d]=m,++m),++f,++d;e.indices=l;var y=e.attributes;for(var p in y)if(y.hasOwnProperty(p)&&c(y[p])&&c(y[p].values)){for(var g=y[p],w=g.values,x=0,E=g.componentsPerAttribute,S=u.createTypedArray(g.componentDatatype,m*E);t>x;){var M=n[x];if(-1!==M)for(i=0;E>i;i++)S[E*M+i]=w[E*x+i];++x}g.values=S}}return e},tt.reorderForPostVertexCache=function(e,t){var r=e.indices;if(e.primitiveType===b.TRIANGLES&&c(r)){for(var n=r.length,i=0,a=0;n>a;a++)r[a]>i&&(i=r[a]);e.indices=T.tipsify({indices:r,maximumIndex:i,cacheSize:t})}return e},tt.fitToUnsignedShortIndices=function(e){var t=[],r=h.computeNumberOfVertices(e);if(c(e.indices)&&r>x.SIXTY_FOUR_KILOBYTES){var n,i=[],a=[],o=0,u=z(e.attributes),s=e.indices,l=s.length;e.primitiveType===b.TRIANGLES?n=3:e.primitiveType===b.LINES?n=2:e.primitiveType===b.POINTS&&(n=1);for(var f=0;l>f;f+=n){for(var d=0;n>d;++d){var m=s[f+d],y=i[m];c(y)||(y=o++,i[m]=y,_(u,e.attributes,m)),a.push(y)}o+n>x.SIXTY_FOUR_KILOBYTES&&(t.push(new h({attributes:u,indices:a,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),i=[],a=[],o=0,u=z(e.attributes))}0!==a.length&&t.push(new h({attributes:u,indices:a,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var rt=new i,nt=new o;tt.projectTo2D=function(e,t,r,n,a){var o=e.attributes[t];a=c(a)?a:new d;for(var s=a.ellipsoid,f=o.values,h=new Float64Array(f.length),y=0,p=0;p<f.length;p+=3){var v=i.fromArray(f,p,rt),g=s.cartesianToCartographic(v,nt);if(!c(g))throw new l("Could not project point ("+v.x+", "+v.y+", "+v.z+") to 2D.");var w=a.project(g,rt);h[y++]=w.x,h[y++]=w.y,h[y++]=w.z}return e.attributes[r]=o,e.attributes[n]=new m({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:h}),delete e.attributes[t],e};var it={high:0,low:0};tt.encodeAttribute=function(e,t,r,n){for(var i=e.attributes[t],a=i.values,o=a.length,s=new Float32Array(o),c=new Float32Array(o),l=0;o>l;++l)f.encode(a[l],it),s[l]=it.high,c[l]=it.low;var d=i.componentsPerAttribute;return e.attributes[r]=new m({componentDatatype:u.FLOAT,componentsPerAttribute:d,values:s}),e.attributes[n]=new m({componentDatatype:u.FLOAT,componentsPerAttribute:d,values:c}),delete e.attributes[t],e};var at=new i,ot=new S,ut=new E;tt.transformToWorldCoordinates=function(e){var t=e.modelMatrix;if(S.equals(t,S.IDENTITY))return e;var n=e.geometry.attributes;R(t,n.position),R(t,n.prevPosition),R(t,n.nextPosition),(c(n.normal)||c(n.binormal)||c(n.tangent))&&(S.inverse(t,ot),S.transpose(ot,ot),S.getRotation(ot,ut),P(ut,n.normal),P(ut,n.binormal),P(ut,n.tangent));var i=e.geometry.boundingSphere;return c(i)&&(e.geometry.boundingSphere=r.transform(i,t,i)),e.modelMatrix=S.clone(S.IDENTITY),e};var st=new i;tt.combineInstances=function(e){for(var t=[],r=[],n=e.length,i=0;n>i;++i){var a=e[i];c(a.geometry)?t.push(a):r.push(a)}var o=[];return t.length>0&&o.push(C(t,"geometry")),r.length>0&&(o.push(C(r,"westHemisphereGeometry")),o.push(C(r,"eastHemisphereGeometry"))),o};var ct=new i,lt=new i,ft=new i,dt=new i;tt.computeNormal=function(e){for(var t=e.indices,r=e.attributes,n=r.position.values,a=r.position.values.length/3,o=t.length,s=new Array(a),c=new Array(o/3),l=new Array(o),f=0;a>f;f++)s[f]={indexOffset:0,count:0,currentCount:0};var d=0;for(f=0;o>f;f+=3){var h=t[f],y=t[f+1],p=t[f+2],v=3*h,g=3*y,w=3*p;lt.x=n[v],lt.y=n[v+1],lt.z=n[v+2],ft.x=n[g],ft.y=n[g+1],ft.z=n[g+2],dt.x=n[w],dt.y=n[w+1],dt.z=n[w+2],s[h].count++,s[y].count++,s[p].count++,i.subtract(ft,lt,ft),i.subtract(dt,lt,dt),c[d]=i.cross(ft,dt,new i),d++}var x=0;for(f=0;a>f;f++)s[f].indexOffset+=x,x+=s[f].count;d=0;var E;for(f=0;o>f;f+=3){E=s[t[f]];var S=E.indexOffset+E.currentCount;l[S]=d,E.currentCount++,E=s[t[f+1]],S=E.indexOffset+E.currentCount,l[S]=d,E.currentCount++,E=s[t[f+2]],S=E.indexOffset+E.currentCount,l[S]=d,E.currentCount++,d++}var M=new Float32Array(3*a);for(f=0;a>f;f++){var b=3*f;if(E=s[f],E.count>0){for(i.clone(i.ZERO,ct),d=0;d<E.count;d++)i.add(ct,c[l[E.indexOffset+d]],ct);i.normalize(ct,ct),M[b]=ct.x,M[b+1]=ct.y,M[b+2]=ct.z}else M[b]=0,M[b+1]=0,M[b+2]=1}return e.attributes.normal=new m({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:M}),e};var ht=new i,mt=new i,yt=new i;tt.computeBinormalAndTangent=function(e){e.attributes;for(var t=e.indices,r=e.attributes.position.values,n=e.attributes.normal.values,a=e.attributes.st.values,o=e.attributes.position.values.length/3,s=t.length,c=new Array(3*o),l=0;l<c.length;l++)c[l]=0;var f,d,h;for(l=0;s>l;l+=3){var y=t[l],p=t[l+1],v=t[l+2];f=3*y,d=3*p,h=3*v;var g=2*y,w=2*p,x=2*v,E=r[f],S=r[f+1],M=r[f+2],b=a[g],T=a[g+1],A=a[w+1]-T,O=a[x+1]-T,I=1/((a[w]-b)*O-(a[x]-b)*A),N=(O*(r[d]-E)-A*(r[h]-E))*I,z=(O*(r[d+1]-S)-A*(r[h+1]-S))*I,_=(O*(r[d+2]-M)-A*(r[h+2]-M))*I;c[f]+=N,c[f+1]+=z,c[f+2]+=_,c[d]+=N,c[d+1]+=z,c[d+2]+=_,c[h]+=N,c[h+1]+=z,c[h+2]+=_}var R=new Float32Array(3*o),P=new Float32Array(3*o);for(l=0;o>l;l++){f=3*l,d=f+1,h=f+2;var L=i.fromArray(n,f,ht),C=i.fromArray(c,f,yt),q=i.dot(L,C);i.multiplyByScalar(L,q,mt),i.normalize(i.subtract(C,mt,C),C),P[f]=C.x,P[d]=C.y,P[h]=C.z,i.normalize(i.cross(L,C,C),C),R[f]=C.x,R[d]=C.y,R[h]=C.z}return e.attributes.tangent=new m({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:P}),e.attributes.binormal=new m({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:R}),e};var pt=new n,vt=new i,gt=new i,wt=new i;tt.compressVertices=function(t){var r=t.attributes.normal,a=t.attributes.st;if(!c(r)&&!c(a))return t;var o,s,l,f,d=t.attributes.tangent,h=t.attributes.binormal;c(r)&&(o=r.values),c(a)&&(s=a.values),c(d)&&(l=d.values),h&&(f=h.values);var y=c(o)?o.length:s.length,p=c(o)?3:2,v=y/p,g=v,w=c(s)&&c(o)?2:1;w+=c(l)||c(f)?1:0,g*=w;for(var x=new Float32Array(g),E=0,S=0;v>S;++S){c(s)&&(n.fromArray(s,2*S,pt),x[E++]=e.compressTextureCoordinates(pt));var M=3*S;c(o)&&c(l)&&c(f)?(i.fromArray(o,M,vt),i.fromArray(l,M,gt),i.fromArray(f,M,wt),e.octPack(vt,gt,wt,pt),x[E++]=pt.x,x[E++]=pt.y):(c(o)&&(i.fromArray(o,M,vt),x[E++]=e.octEncodeFloat(vt)),c(l)&&(i.fromArray(l,M,vt),x[E++]=e.octEncodeFloat(vt)),c(f)&&(i.fromArray(f,M,vt),x[E++]=e.octEncodeFloat(vt)))}return t.attributes.compressedAttributes=new m({componentDatatype:u.FLOAT,componentsPerAttribute:w,values:x}),c(o)&&delete t.attributes.normal,c(s)&&delete t.attributes.st,c(l)&&delete t.attributes.tangent,c(f)&&delete t.attributes.binormal,t};var xt=new i,Et=new i,St=new i,Mt=new i,bt=new i,Tt={positions:new Array(7),indices:new Array(9)},At=new i,Ot=new i,It=new i,Nt=new i,zt=new n,_t=new n,Rt=new n,Pt=M.fromPointNormal(i.ZERO,i.UNIT_Y),Lt=new i,Ct=new i,qt=new n,Dt=new n,Bt=new i,Ut=new i,Ft=new i,Gt=new i,kt=new i,Wt=new i,Vt=new i,Yt=new a;return new a,tt.splitLongitude=function(e){var t=e.geometry,n=t.boundingSphere;if(c(n)){var i=n.center.x-n.radius;if(i>0||r.intersectPlane(n,M.ORIGIN_ZX_PLANE)!==g.INTERSECTING)return e}if(t.geometryType!==p.NONE)switch(t.geometryType){case p.POLYLINES:et(e);break;case p.TRIANGLES:J(e);break;case p.LINES:$(e)}else k(t),t.primitiveType===b.TRIANGLES?J(e):t.primitiveType===b.LINES&&$(e);return e},tt}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.position=e(t.position,!1),this.normal=e(t.normal,!1),this.st=e(t.st,!1),this.binormal=e(t.binormal,!1),this.tangent=e(t.tangent,!1),this.color=e(t.color,!1)};return i.POSITION_ONLY=n(new i({position:!0})),i.POSITION_AND_NORMAL=n(new i({position:!0,normal:!0})),i.POSITION_NORMAL_AND_ST=n(new i({position:!0,normal:!0,st:!0})),i.POSITION_AND_ST=n(new i({position:!0,st:!0})),i.POSITION_AND_COLOR=n(new i({position:!0,color:!0})),i.ALL=n(new i({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),i.DEFAULT=i.POSITION_NORMAL_AND_ST,i.packedLength=6,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.position?1:0,r[n++]=t.normal?1:0,r[n++]=t.st?1:0,r[n++]=t.binormal?1:0,r[n++]=t.tangent?1:0,r[n++]=t.color?1:0},i.unpack=function(r,n,a){return n=e(n,0),t(a)||(a=new i),a.position=1===r[n++],a.normal=1===r[n++],a.st=1===r[n++],a.binormal=1===r[n++],a.tangent=1===r[n++],a.color=1===r[n++],a},i.clone=function(e,r){return t(e)?(t(r)||(r=new i),r.position=e.position,r.normal=e.normal,r.st=e.st,r.binormal=e.binormal,r.tangent=e.tangent,r.color=e.color,r):void 0},i}),define("Core/EllipseGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EllipseGeometryLibrary","./Ellipsoid","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryAttributes","./GeometryInstance","./GeometryPipeline","./IndexDatatype","./Math","./Matrix3","./PrimitiveType","./Quaternion","./VertexFormat"],function(e,t,r,n,i,a,o,u,s,c,l,f,d,h,m,y,p,v,g,w,x,E){"use strict";function S(e,n,a){var o=n.vertexFormat,u=n.center,c=n.semiMajorAxis,f=n.semiMinorAxis,m=n.ellipsoid,y=n.stRotation,p=a?2*(e.length/3):e.length/3,v=o.st?new Float32Array(2*p):void 0,w=o.normal?new Float32Array(3*p):void 0,E=o.tangent?new Float32Array(3*p):void 0,S=o.binormal?new Float32Array(3*p):void 0,M=0,b=C,T=q,A=D,O=new l(m),_=O.project(m.cartesianToCartographic(u,B),U),k=m.scaleToGeodeticSurface(u,I);m.geodeticSurfaceNormal(k,k);for(var W=x.fromAxisAngle(k,y,L),V=g.fromQuaternion(W,P),Y=t.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,F),j=t.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,G),H=e.length,Z=a?H:0,X=2*(Z/3),Q=0;H>Q;Q+=3){var K=Q+1,J=Q+2,$=r.fromArray(e,Q,I);if(o.st){var et=g.multiplyByVector(V,$,N),tt=O.project(m.cartesianToCartographic(et,B),z);r.subtract(tt,_,tt),R.x=(tt.x+c)/(2*c),R.y=(tt.y+f)/(2*f),Y.x=Math.min(R.x,Y.x),Y.y=Math.min(R.y,Y.y),j.x=Math.max(R.x,j.x),j.y=Math.max(R.y,j.y),a&&(v[M+X]=R.x,v[M+1+X]=R.y),v[M++]=R.x,v[M++]=R.y}b=m.geodeticSurfaceNormal($,b),(o.normal||o.tangent||o.binormal)&&((o.tangent||o.binormal)&&(T=r.cross(r.UNIT_Z,b,T),g.multiplyByVector(V,T,T)),o.normal&&(w[Q]=b.x,w[K]=b.y,w[J]=b.z,a&&(w[Q+Z]=-b.x,w[K+Z]=-b.y,w[J+Z]=-b.z)),o.tangent&&(E[Q]=T.x,E[K]=T.y,E[J]=T.z,a&&(E[Q+Z]=-T.x,E[K+Z]=-T.y,E[J+Z]=-T.z)),o.binormal&&(A=r.cross(b,T,A),S[Q]=A.x,S[K]=A.y,S[J]=A.z,a&&(S[Q+Z]=A.x,S[K+Z]=A.y,S[J+Z]=A.z)))}if(o.st){H=v.length;for(var rt=0;H>rt;rt+=2)v[rt]=(v[rt]-Y.x)/(j.x-Y.x),v[rt+1]=(v[rt+1]-Y.y)/(j.y-Y.y)}var nt=new h;if(o.position){var it=s.raisePositionsToHeight(e,n,a);nt.position=new d({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:it})}return o.st&&(nt.st=new d({componentDatatype:i.FLOAT,componentsPerAttribute:2,values:v})),o.normal&&(nt.normal=new d({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:w})),o.tangent&&(nt.tangent=new d({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:E})),o.binormal&&(nt.binormal=new d({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:S})),nt}function M(e){var t,r,n,i,a,o=new Array(2*e*(e+1)),u=0;for(i=1;e>i;++i){for(n=i*(i+1),t=(i-1)*i,o[u++]=n++,o[u++]=t,o[u++]=n,r=2*i,a=0;r-1>a;++a)o[u++]=n,o[u++]=t++,o[u++]=t,o[u++]=n++,o[u++]=t,o[u++]=n;o[u++]=n++,o[u++]=t,o[u++]=n}for(r=2*e,++n,++t,i=0;r-1>i;++i)o[u++]=n,o[u++]=t++,o[u++]=t,o[u++]=n++,o[u++]=t,o[u++]=n;for(++t,++n,i=e-1;i>0;--i){for(o[u++]=t++,o[u++]=t,o[u++]=n,r=2*i,a=0;r-1>a;++a)o[u++]=n,o[u++]=t++,o[u++]=t,o[u++]=n++,o[u++]=t,o[u++]=n;o[u++]=t++,o[u++]=t++,o[u++]=n++}return o}function b(t){var n=t.center;k=r.multiplyByScalar(t.ellipsoid.geodeticSurfaceNormal(n,k),t.height,k),k=r.add(n,k,k);var i=new e(k,t.semiMajorAxis),a=s.computeEllipsePositions(t,!0,!1),o=a.positions,u=a.numPts,c=S(o,t,!1),l=M(u);return l=p.createTypedArray(o.length/3,l),{boundingSphere:i,attributes:c,indices:l}}function T(e,n){var a=n.vertexFormat,o=n.center,u=n.semiMajorAxis,s=n.semiMinorAxis,c=n.ellipsoid,f=n.height,m=n.extrudedHeight,y=n.stRotation,p=2*(e.length/3),v=new Float64Array(3*p),w=a.st?new Float32Array(2*p):void 0,E=a.normal?new Float32Array(3*p):void 0,S=a.tangent?new Float32Array(3*p):void 0,M=a.binormal?new Float32Array(3*p):void 0,b=0,T=C,A=q,O=D,k=new l(c),W=k.project(c.cartesianToCartographic(o,B),U),V=c.scaleToGeodeticSurface(o,I);c.geodeticSurfaceNormal(V,V);for(var Y=x.fromAxisAngle(V,y,L),j=g.fromQuaternion(Y,P),H=t.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,F),Z=t.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,G),X=e.length,Q=2*(X/3),K=0;X>K;K+=3){var J,$=K+1,et=K+2,tt=r.fromArray(e,K,I);if(a.st){var rt=g.multiplyByVector(j,tt,N),nt=k.project(c.cartesianToCartographic(rt,B),z);r.subtract(nt,W,nt),R.x=(nt.x+u)/(2*u),R.y=(nt.y+s)/(2*s),H.x=Math.min(R.x,H.x),H.y=Math.min(R.y,H.y),Z.x=Math.max(R.x,Z.x),Z.y=Math.max(R.y,Z.y),w[b+Q]=R.x,w[b+1+Q]=R.y,w[b++]=R.x,w[b++]=R.y}tt=c.scaleToGeodeticSurface(tt,tt),J=r.clone(tt,N),T=c.geodeticSurfaceNormal(tt,T);var it=r.multiplyByScalar(T,f,_);if(tt=r.add(tt,it,tt),it=r.multiplyByScalar(T,m,it),J=r.add(J,it,J),a.position&&(v[K+X]=J.x,v[$+X]=J.y,v[et+X]=J.z,v[K]=tt.x,v[$]=tt.y,v[et]=tt.z),a.normal||a.tangent||a.binormal){O=r.clone(T,O);var at=r.fromArray(e,(K+3)%X,_);r.subtract(at,tt,at);var ot=r.subtract(J,tt,z);T=r.normalize(r.cross(ot,at,T),T),a.normal&&(E[K]=T.x,E[$]=T.y,E[et]=T.z,E[K+X]=T.x,E[$+X]=T.y,E[et+X]=T.z),a.tangent&&(A=r.normalize(r.cross(O,T,A),A),S[K]=A.x,S[$]=A.y,S[et]=A.z,S[K+X]=A.x,S[K+1+X]=A.y,S[K+2+X]=A.z),a.binormal&&(M[K]=O.x,M[$]=O.y,M[et]=O.z,M[K+X]=O.x,M[$+X]=O.y,M[et+X]=O.z)}}if(a.st){X=w.length;for(var ut=0;X>ut;ut+=2)w[ut]=(w[ut]-H.x)/(Z.x-H.x),w[ut+1]=(w[ut+1]-H.y)/(Z.y-H.y)}var st=new h;return a.position&&(st.position=new d({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:v})),a.st&&(st.st=new d({componentDatatype:i.FLOAT,componentsPerAttribute:2,values:w})),a.normal&&(st.normal=new d({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:E})),a.tangent&&(st.tangent=new d({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:S})),a.binormal&&(st.binormal=new d({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:M})),st}function A(e){for(var t=e.length/3,r=p.createTypedArray(t,6*t),n=0,i=0;t>i;i++){var a=i,o=i+t,u=(a+1)%t,s=u+t;r[n++]=a,r[n++]=o,r[n++]=u,r[n++]=u,r[n++]=o,r[n++]=s}return r}function O(t){var n=t.center,i=t.ellipsoid,a=t.semiMajorAxis,o=r.multiplyByScalar(i.geodeticSurfaceNormal(n,I),t.height,I);W.center=r.add(n,o,W.center),W.radius=a,o=r.multiplyByScalar(i.geodeticSurfaceNormal(n,o),t.extrudedHeight,o),V.center=r.add(n,o,V.center),V.radius=a;var u=s.computeEllipsePositions(t,!0,!0),c=u.positions,l=u.numPts,d=u.outerPositions,h=e.union(W,V),v=S(c,t,!0),g=M(l),x=g.length;g.length=2*x;for(var E=c.length/3,b=0;x>b;b+=3)g[b+x]=g[b+2]+E,g[b+1+x]=g[b+1]+E,g[b+2+x]=g[b]+E;var O=p.createTypedArray(2*E/3,g),N=new f({attributes:v,indices:O,primitiveType:w.TRIANGLES}),z=T(d,t);g=A(d);var _=p.createTypedArray(2*d.length/3,g),R=new f({attributes:z,indices:_,primitiveType:w.TRIANGLES}),P=y.combineInstances([new m({geometry:N}),new m({geometry:R})]);return{boundingSphere:h,attributes:P[0].attributes,indices:P[0].indices}}var I=new r,N=new r,z=new r,_=new r,R=new t,P=new g,L=new x,C=new r,q=new r,D=new r,B=new n,U=new r,F=new t,G=new t,k=new r,W=new e,V=new e,Y=function(e){e=a(e,a.EMPTY_OBJECT);var t=e.center,n=a(e.ellipsoid,c.WGS84),i=e.semiMajorAxis,u=e.semiMinorAxis,s=a(e.granularity,v.RADIANS_PER_DEGREE),l=a(e.height,0),f=e.extrudedHeight,d=o(f)&&Math.abs(l-f)>1,h=a(e.vertexFormat,E.DEFAULT);this._center=r.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=u,this._ellipsoid=c.clone(n),this._rotation=a(e.rotation,0),this._stRotation=a(e.stRotation,0),this._height=l,this._granularity=s,this._vertexFormat=E.clone(h),this._extrudedHeight=a(f,l),this._extrude=d,this._workerName="createEllipseGeometry"};Y.packedLength=r.packedLength+c.packedLength+E.packedLength+8,Y.pack=function(e,t,n){n=a(n,0),r.pack(e._center,t,n),n+=r.packedLength,c.pack(e._ellipsoid,t,n),n+=c.packedLength,E.pack(e._vertexFormat,t,n),n+=E.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n]=e._extrude?1:0};var j=new r,H=new c,Z=new E,X={center:j,ellipsoid:H,vertexFormat:Z,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0};return Y.unpack=function(e,t,n){t=a(t,0);var i=r.unpack(e,t,j);t+=r.packedLength;var u=c.unpack(e,t,H);t+=c.packedLength;var s=E.unpack(e,t,Z);t+=E.packedLength;var l=e[t++],f=e[t++],d=e[t++],h=e[t++],m=e[t++],y=e[t++],p=e[t++],v=1===e[t];return o(n)?(n._center=r.clone(i,n._center),n._ellipsoid=c.clone(u,n._ellipsoid),n._vertexFormat=E.clone(s,n._vertexFormat),n._semiMajorAxis=l,n._semiMinorAxis=f,n._rotation=d,n._stRotation=h,n._height=m,n._granularity=y,n._extrudedHeight=p,n._extrude=v,n):(X.height=m,X.extrudedHeight=p,X.granularity=y,X.stRotation=h,X.rotation=d,X.semiMajorAxis=l,X.semiMinorAxis=f,new Y(X))},Y.createGeometry=function(e){e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);var t,r={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:e._height,extrudedHeight:e._extrudedHeight,granularity:e._granularity,vertexFormat:e._vertexFormat,stRotation:e._stRotation};return e._extrude?(r.extrudedHeight=Math.min(e._extrudedHeight,e._height),r.height=Math.max(e._extrudedHeight,e._height),t=O(r)):t=b(r),new f({attributes:t.attributes,indices:t.indices,primitiveType:w.TRIANGLES,boundingSphere:t.boundingSphere})},Y}),define("Core/CircleGeometry",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./EllipseGeometry","./Ellipsoid","./VertexFormat"],function(e,t,r,n,i,a,o){"use strict";var u=function(e){e=t(e,t.EMPTY_OBJECT);var r=e.radius,n={center:e.center,semiMajorAxis:r,semiMinorAxis:r,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation};this._ellipseGeometry=new i(n),this._workerName="createCircleGeometry"};u.packedLength=i.packedLength,u.pack=function(e,t,r){i.pack(e._ellipseGeometry,t,r)};var s=new i({center:new e,semiMajorAxis:1,semiMinorAxis:1}),c={center:new e,radius:void 0,ellipsoid:a.clone(a.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new o,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};return u.unpack=function(t,n,l){var f=i.unpack(t,n,s);return c.center=e.clone(f._center,c.center),c.ellipsoid=a.clone(f._ellipsoid,c.ellipsoid),c.height=f._height,c.extrudedHeight=f._extrudedHeight,c.granularity=f._granularity,c.vertexFormat=o.clone(f._vertexFormat,c.vertexFormat),c.stRotation=f._stRotation,r(l)?(c.semiMajorAxis=f._semiMajorAxis,c.semiMinorAxis=f._semiMinorAxis,l._ellipseGeometry=new i(c),l):(c.radius=f._semiMajorAxis,new u(c))},u.createGeometry=function(e){return i.createGeometry(e._ellipseGeometry)},u}),define("Workers/createCircleGeometry",["../Core/Cartesian3","../Core/CircleGeometry","../Core/defined","../Core/Ellipsoid"],function(e,t,r,n){"use strict";function i(i,a){return r(a)&&(i=t.unpack(i,a)),i._ellipseGeometry._center=e.clone(i._ellipseGeometry._center),i._ellipseGeometry._ellipsoid=n.clone(i._ellipseGeometry._ellipsoid),t.createGeometry(i)}return i})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createCircleOutlineGeometry.js b/libs/Cesium/Workers/createCircleOutlineGeometry.js new file mode 100644 index 0000000000..35726d341f --- /dev/null +++ b/libs/Cesium/Workers/createCircleOutlineGeometry.js @@ -0,0 +1,60 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[1&e];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(e){return e>0?1:0>e?-1:0},n.signNotZero=function(e){return 0>e?-1:1},n.toSNorm=function(e){return Math.round(255*(.5*n.clamp(e,-1,1)+.5))},n.fromSNorm=function(e){return 2*(n.clamp(e,0,255)/255)-1},n.sinh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t-n)},n.cosh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t+n)},n.lerp=function(e,t,n){return(1-n)*e+n*t},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(e){return e*n.RADIANS_PER_DEGREE},n.toDegrees=function(e){return e*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(e){var t=n.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},n.negativePiToPi=function(e){return n.zeroToTwoPi(e+n.PI)-n.PI},n.zeroToTwoPi=function(e){var t=n.mod(e,n.TWO_PI);return Math.abs(t)<n.EPSILON14&&Math.abs(e)>n.EPSILON14?n.TWO_PI:t},n.mod=function(e,t){return(e%t+t)%t},n.equalsEpsilon=function(e,n,r,i){i=t(i,r);var a=Math.abs(e-n);return i>=a||a<=r*Math.max(Math.abs(e),Math.abs(n))};var r=[1];n.factorial=function(e){var t=r.length;if(e>=t)for(var n=r[t-1],i=t;e>=i;i++)r.push(n*i);return r[e]},n.incrementWrap=function(e,n,r){return r=t(r,0),++e,e>n&&(e=r),e},n.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},n.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},n.clamp=function(e,t,n){return t>e?t:e>n?n:e};var i=new e;return n.setRandomNumberSeed=function(t){i=new e(t)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(e){return Math.acos(n.clamp(e,-1,1))},n.asinClamped=function(e){return Math.asin(n.clamp(e,-1,1))},n.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0)};a.fromSpherical=function(n,r){t(r)||(r=new a);var i=n.clock,o=n.cone,u=e(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(e,n,r,i){return t(i)?(i.x=e,i.y=n,i.z=r,i):new a(e,n,r)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n):new a(e.x,e.y,e.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r]=t.z},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(e,t){a.normalize(e,s),a.normalize(t,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,l);return a.abs(n,n),t=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Z,t):n.y<=n.z?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_Z,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)&&i.equalsEpsilon(e.z,n.z,r,a)},a.cross=function(e,t,n){var r=e.x,i=e.y,a=e.z,o=t.x,u=t.y,s=t.z,c=i*s-a*u,l=a*o-r*s,d=r*u-i*o;return n.x=c,n.y=l,n.z=d,n},a.fromDegrees=function(e,t,n,r,o){var u=i.toRadians(e),s=i.toRadians(t);return a.fromRadians(u,s,n,r,o)};var d=new a,h=new a,f=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=e(i,0);var s=t(o)?o.radiiSquared:f,c=Math.cos(r);d.x=c*Math.cos(n),d.y=c*Math.sin(n),d.z=Math.sin(r),d=a.normalize(d,d),a.multiplyComponents(s,d,h);var l=Math.sqrt(a.dot(d,h));return h=a.divideByScalar(h,l,h),d=a.multiplyByScalar(d,i,d),t(u)||(u=new a),a.add(h,d,u)},a.fromDegreesArray=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=i.toRadians(e[o]);return a.fromRadiansArray(r,t,n)},a.fromRadiansArray=function(e,n,r){var i=e.length;t(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=e[o],s=e[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o+=3)r[o]=i.toRadians(e[o]),r[o+1]=i.toRadians(e[o+1]),r[o+2]=e[o+2];return a.fromRadiansArrayHeights(r,t,n)},a.fromRadiansArrayHeights=function(e,n,r){var i=e.length;t(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r){this.longitude=e(t,0),this.latitude=e(n,0),this.height=e(r,0)};return a.fromRadians=function(n,r,i,o){return i=e(i,0),t(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(e,t,n,r){return e=i.toRadians(e),t=i.toRadians(t),a.fromRadians(e,t,n,r)},a.clone=function(e,n){return t(e)?t(n)?(n.longitude=e.longitude,n.latitude=e.latitude,n.height=e.height,n):new a(e.longitude,e.latitude,e.height):void 0},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.longitude===n.longitude&&e.latitude===n.latitude&&e.height===n.height},a.equalsEpsilon=function(e,n,r){return e===n||t(e)&&t(n)&&Math.abs(e.longitude-n.longitude)<=r&&Math.abs(e.latitude-n.latitude)<=r&&Math.abs(e.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t){return a.equalsEpsilon(this,e,t)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},n=function(n,r){e(t[n])||(t[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),n=Object.defineProperties;return t&&e(n)||(n=function(e){return e}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i,a,o,u){"use strict";function s(t,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),t._radii=new e(r,i,a),t._radiiSquared=new e(r*r,i*i,a*a),t._radiiToTheFourth=new e(r*r*r*r,i*i*i*i,a*a*a*a),t._oneOverRadii=new e(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),t._minimumRadius=Math.min(r,i,a),t._maximumRadius=Math.max(r,i,a),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,n){if(!r(t))return void 0;var i=t._radii;return r(n)?(e.clone(i,n._radii),e.clone(t._radiiSquared,n._radiiSquared),e.clone(t._radiiToTheFourth,n._radiiToTheFourth),e.clone(t._oneOverRadii,n._oneOverRadii),e.clone(t._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=t._minimumRadius,n._maximumRadius=t._maximumRadius,n._centerToleranceSquared=t._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(e,t){return r(t)||(t=new c),r(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,r,i){i=n(i,0),e.pack(t._radii,r,i)},c.unpack=function(t,r,i){r=n(r,0);var a=e.unpack(t,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,n){var i=t.longitude,a=t.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new e),n.x=u,n.y=s,n.z=c,e.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(t,n){return r(n)||(n=new e),n=e.multiplyComponents(t,this._oneOverRadiiSquared,n),e.normalize(n,n)};var l=new e,d=new e;c.prototype.cartographicToCartesian=function(t,n){var i=l,a=d;this.geodeticSurfaceNormalCartographic(t,i),e.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(e.dot(i,a));return e.divideByScalar(a,o,a),e.multiplyByScalar(i,t.height,i),r(n)||(n=new e),e.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var i=0;n>i;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var h=new e,f=new e,m=new e;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,f);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=e.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),d=u.sign(e.dot(s,n))*e.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=d,i):new t(c,l,d)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var i=0;n>i;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};var y=new e,p=new e;return c.prototype.scaleToGeodeticSurface=function(t,n){var i=t.x,a=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,d=s.z,h=i*i*c*c,f=a*a*l*l,m=o*o*d*d,v=h+f+m,w=Math.sqrt(1/v),g=e.multiplyByScalar(t,w,y);if(v<this._centerToleranceSquared)return isFinite(w)?e.clone(g,n):void 0;var x=this._oneOverRadiiSquared,E=x.x,M=x.y,_=x.z,S=p;S.x=2*g.x*E,S.y=2*g.y*M,S.z=2*g.z*_;var z,O,I,T,N,R,A,b,P,C,L,q=(1-w)*e.magnitude(t)/(.5*e.magnitude(S)),U=0;do{q-=U,I=1/(1+q*E),T=1/(1+q*M),N=1/(1+q*_),R=I*I,A=T*T,b=N*N,P=R*I,C=A*T,L=b*N,z=h*R+f*A+m*b-1,O=h*P*E+f*C*M+m*L*_;var B=-2*O;U=z/B}while(Math.abs(z)>u.EPSILON12);return r(n)?(n.x=i*I,n.y=a*T,n.z=o*N,n):new e(i*I,a*T,o*N)},c.prototype.scaleToGeocentricSurface=function(t,n){r(n)||(n=new e);var i=t.x,a=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return e.multiplyByScalar(t,s,n)},c.prototype.transformPositionToScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._radii,n)},c.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,n,r,i,a,o){"use strict";var u=function(e){this._ellipsoid=n(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,n){var i=this._semimajorAxis,a=t.longitude*i,o=t.latitude*i,u=t.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new e(a,o,u)},u.prototype.unproject=function(e,n){var i=this._oneOverSemimajorAxis,a=e.x*i,o=e.y*i,u=e.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new t(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,n){this.start=e(t,0),this.stop=e(n,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r,i){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0),this.w=e(i,0)};a.fromElements=function(e,n,r,i,o){return t(o)?(o.x=e,o.y=n,o.z=r,o.w=i,o):new a(e,n,r,i)},a.fromColor=function(e,n){return t(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new a(e.red,e.green,e.blue,e.alpha)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new a(e.x,e.y,e.z,e.w):void 0},a.packedLength=4,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r++]=t.z,n[r]=t.w},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,s);return a.abs(n,n),t=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,t):a.clone(a.UNIT_W,t):n.z<=n.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_W,t):n.z<=n.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)&&i.equalsEpsilon(e.z,n.z,r,a)&&i.equalsEpsilon(e.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i,a){"use strict";function o(e){for(var t=0,n=0;9>n;++n){var r=e[n];t+=r*r}return Math.sqrt(t)}function u(e){for(var t=0,n=0;3>n;++n){var r=e[c.getElementIndex(f[n],h[n])];t+=2*r*r}return Math.sqrt(t)}function s(e,t){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(f[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,d=h[i],m=f[i];if(Math.abs(e[c.getElementIndex(m,d)])>n){var y,p=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(d,d)],w=e[c.getElementIndex(m,d)],g=(p-v)/2/w;y=0>g?-1/(-g+Math.sqrt(1+g*g)):1/(g+Math.sqrt(1+g*g)),s=1/Math.sqrt(1+y*y),l=y*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(d,d)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,d)]=l,t[c.getElementIndex(d,m)]=-l,t}var c=function(e,n,r,i,a,o,u,s,c){this[0]=t(e,0),this[1]=t(i,0),this[2]=t(u,0),this[3]=t(n,0),this[4]=t(a,0),this[5]=t(s,0),this[6]=t(r,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r++]=e[7],n[r++]=e[8]},c.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new c),i[0]=e[r++],i[1]=e[r++],i[2]=e[r++],i[3]=e[r++],i[4]=e[r++],i[5]=e[r++],i[6]=e[r++],i[7]=e[r++],i[8]=e[r++],i},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,r,i){return r=t(r,0),n(i)||(i=new c),i[0]=e[r],i[1]=e[r+1],i[2]=e[r+2],i[3]=e[r+3],i[4]=e[r+4],i[5]=e[r+5],i[6]=e[r+6],i[7]=e[r+7],i[8]=e[r+8],i},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var r=e.x*e.x,i=e.x*e.y,a=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,d=e.z*e.z,h=e.z*e.w,f=e.w*e.w,m=r-u-d+f,y=2*(i-h),p=2*(a+l),v=2*(i+h),w=-r+u-d+f,g=2*(s-o),x=2*(a-l),E=2*(s+o),M=-r-u+d+f;return n(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=y,t[4]=w,t[5]=E,t[6]=p,t[7]=g,t[8]=M,t):new c(m,y,p,v,w,g,x,E,M)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return n(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=i,t[6]=0,t[7]=-i,t[8]=r,t):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=r,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=r,t):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=r,t[1]=i,t[2]=0,t[3]=-i,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,n){var r=3*t,i=e[r],a=e[r+1],o=e[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var i=3*t;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(e,t,n){var r=e[t],i=e[t+3],a=e[t+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+3]=n.y,r[t+6]=n.z,r};var l=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),n};var d=new e;c.getMaximumScale=function(t){return c.getScale(t,d),e.maximumComponent(d)},c.multiply=function(e,t,n){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],i=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],a=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],d=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=d,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n},c.multiplyByVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[3]*i+e[6]*a,u=e[1]*r+e[4]*i+e[7]*a,s=e[2]*r+e[5]*i+e[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n},c.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var n=e[0],r=e[3],i=e[6],a=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=n,t[1]=r,t[2]=i,t[3]=a,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var h=[1,0,0],f=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(e,t){var r=a.EPSILON20,i=10,l=0,d=0;n(t)||(t={});for(var h=t.unitary=c.clone(c.IDENTITY,t.unitary),f=t.diagonal=c.clone(e,t.diagonal),p=r*o(f);i>d&&u(f)>p;)s(f,m),c.transpose(m,y),c.multiply(f,m,f),c.multiply(y,f,f),c.multiply(h,m,h),++l>2&&(++d,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],n=e[3],r=e[6],i=e[1],a=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(e,t){var n=e[0],i=e[1],o=e[2],u=e[3],s=e[4],l=e[5],d=e[6],h=e[7],f=e[8],m=c.determinant(e);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");t[0]=s*f-h*l,t[1]=h*o-i*f,t[2]=i*l-s*o,t[3]=d*l-u*f,t[4]=n*f-d*o,t[5]=u*o-n*l,t[6]=u*h-d*s,t[7]=d*i-n*h,t[8]=n*s-u*i;var y=1/m;return c.multiplyByScalar(t,y,t)},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,n,r,i,a,o,u,s){"use strict";var c=function(e,t,r,i,a,o,u,s,c,l,d,h,f,m,y,p){this[0]=n(e,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(f,0),this[4]=n(t,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(d,0),this[11]=n(y,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(p,0)};c.packedLength=16,c.pack=function(e,t,r){r=n(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},c.unpack=function(e,t,i){return t=n(t,0),r(i)||(i=new c),i[0]=e[t++],i[1]=e[t++],i[2]=e[t++],i[3]=e[t++],i[4]=e[t++],i[5]=e[t++],i[6]=e[t++],i[7]=e[t++],i[8]=e[t++],i[9]=e[t++],i[10]=e[t++],i[11]=e[t++],i[12]=e[t++],i[13]=e[t++],i[14]=e[t++],i[15]=e[t],i},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,i,a){return i=n(i,e.ZERO),r(a)?(a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=0,a[4]=t[3],a[5]=t[4],a[6]=t[5],a[7]=0,a[8]=t[6],a[9]=t[7],a[10]=t[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(t[0],t[3],t[6],i.x,t[1],t[4],t[7],i.y,t[2],t[5],t[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=t.x*t.x,l=t.x*t.y,d=t.x*t.z,h=t.x*t.w,f=t.y*t.y,m=t.y*t.z,y=t.y*t.w,p=t.z*t.z,v=t.z*t.w,w=t.w*t.w,g=s-f-p+w,x=2*(l-v),E=2*(d+y),M=2*(l+v),_=-s+f-p+w,S=2*(m-h),z=2*(d-y),O=2*(m+h),I=-s-f+p+w;return i[0]=g*a,i[1]=M*a,i[2]=z*a,i[3]=0,i[4]=x*o,i[5]=_*o,i[6]=O*o,i[7]=0,i[8]=E*u,i[9]=S*u,i[10]=I*u,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,d=new e,h=new e;c.fromCamera=function(t,n){var i=t.eye,a=t.target,o=t.up;e.normalize(e.subtract(a,i,l),l),e.normalize(e.cross(l,o,d),d),e.normalize(e.cross(d,l,h),h);var u=d.x,s=d.y,f=d.z,m=l.x,y=l.y,p=l.z,v=h.x,w=h.y,g=h.z,x=i.x,E=i.y,M=i.z,_=u*-x+s*-E+f*-M,S=v*-x+w*-E+g*-M,z=m*x+y*E+p*M;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=w,n[6]=-y,n[7]=0,n[8]=f,n[9]=g,n[10]=-p,n[11]=0,n[12]=_,n[13]=S,n[14]=z,n[15]=1,n):new c(u,s,f,_,v,w,g,S,-m,-y,-p,z,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,n,r,i){var a=Math.tan(.5*e),o=1/a,u=o/t,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(e,t,n,r,i,a,o){var u=1/(t-e),s=1/(r-n),c=1/(a-i),l=-(t+e)*u,d=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=d,o[14]=h,o[15]=1,o +},c.computePerspectiveOffCenter=function(e,t,n,r,i,a,o){var u=2*i/(t-e),s=2*i/(r-n),c=(t+e)/(t-e),l=(r+n)/(r-n),d=-(a+i)/(a-i),h=-1,f=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=d,o[11]=h,o[12]=0,o[13]=0,o[14]=f,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,n,r,i,a){var o=2*i/(t-e),u=2*i/(r-n),s=(t+e)/(t-e),c=(r+n)/(r-n),l=-1,d=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=d,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(e,t,r,i){e=n(e,n.EMPTY_OBJECT);var a=n(e.x,0),o=n(e.y,0),u=n(e.width,0),s=n(e.height,0);t=n(t,0),r=n(r,1);var c=.5*u,l=.5*s,d=.5*(r-t),h=c,f=l,m=d,y=a+c,p=o+l,v=t+d,w=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=f,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=y,i[13]=p,i[14]=v,i[15]=w,i},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,n){var r=4*t,i=e[r],a=e[r+1],o=e[r+2],u=e[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var i=4*t;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n},c.getRow=function(e,t,n){var r=e[t],i=e[t+4],a=e[t+8],o=e[t+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+4]=n.y,r[t+8]=n.z,r[t+12]=n.w,r};var f=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],f)),n.y=e.magnitude(e.fromElements(t[4],t[5],t[6],f)),n.z=e.magnitude(e.fromElements(t[8],t[9],t[10],f)),n};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],d=e[8],h=e[9],f=e[10],m=e[11],y=e[12],p=e[13],v=e[14],w=e[15],g=t[0],x=t[1],E=t[2],M=t[3],_=t[4],S=t[5],z=t[6],O=t[7],I=t[8],T=t[9],N=t[10],R=t[11],A=t[12],b=t[13],P=t[14],C=t[15],L=r*g+u*x+d*E+y*M,q=i*g+s*x+h*E+p*M,U=a*g+c*x+f*E+v*M,B=o*g+l*x+m*E+w*M,D=r*_+u*S+d*z+y*O,W=i*_+s*S+h*z+p*O,G=a*_+c*S+f*z+v*O,F=o*_+l*S+m*z+w*O,k=r*I+u*T+d*N+y*R,V=i*I+s*T+h*N+p*R,j=a*I+c*T+f*N+v*R,Y=o*I+l*T+m*N+w*R,H=r*A+u*b+d*P+y*C,Z=i*A+s*b+h*P+p*C,X=a*A+c*b+f*P+v*C,K=o*A+l*b+m*P+w*C;return n[0]=L,n[1]=q,n[2]=U,n[3]=B,n[4]=D,n[5]=W,n[6]=G,n[7]=F,n[8]=k,n[9]=V,n[10]=j,n[11]=Y,n[12]=H,n[13]=Z,n[14]=X,n[15]=K,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},c.multiplyTransformation=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],d=e[10],h=e[12],f=e[13],m=e[14],y=t[0],p=t[1],v=t[2],w=t[4],g=t[5],x=t[6],E=t[8],M=t[9],_=t[10],S=t[12],z=t[13],O=t[14],I=r*y+o*p+c*v,T=i*y+u*p+l*v,N=a*y+s*p+d*v,R=r*w+o*g+c*x,A=i*w+u*g+l*x,b=a*w+s*g+d*x,P=r*E+o*M+c*_,C=i*E+u*M+l*_,L=a*E+s*M+d*_,q=r*S+o*z+c*O+h,U=i*S+u*z+l*O+f,B=a*S+s*z+d*O+m;return n[0]=I,n[1]=T,n[2]=N,n[3]=0,n[4]=R,n[5]=A,n[6]=b,n[7]=0,n[8]=P,n[9]=C,n[10]=L,n[11]=0,n[12]=q,n[13]=U,n[14]=B,n[15]=1,n},c.multiplyByMatrix3=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],d=e[10],h=t[0],f=t[1],m=t[2],y=t[3],p=t[4],v=t[5],w=t[6],g=t[7],x=t[8],E=r*h+o*f+c*m,M=i*h+u*f+l*m,_=a*h+s*f+d*m,S=r*y+o*p+c*v,z=i*y+u*p+l*v,O=a*y+s*p+d*v,I=r*w+o*g+c*x,T=i*w+u*g+l*x,N=a*w+s*g+d*x;return n[0]=E,n[1]=M,n[2]=_,n[3]=0,n[4]=S,n[5]=z,n[6]=O,n[7]=0,n[8]=I,n[9]=T,n[10]=N,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n},c.multiplyByTranslation=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=r*e[0]+i*e[4]+a*e[8]+e[12],u=r*e[1]+i*e[5]+a*e[9]+e[13],s=r*e[2]+i*e[6]+a*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=o,n[13]=u,n[14]=s,n[15]=e[15],n};var y=new e;c.multiplyByUniformScale=function(e,t,n){return y.x=t,y.y=t,y.z=t,c.multiplyByScale(e,y,n)},c.multiplyByScale=function(e,t,n){var r=t.x,i=t.y,a=t.z;return 1===r&&1===i&&1===a?c.clone(e,n):(n[0]=r*e[0],n[1]=r*e[1],n[2]=r*e[2],n[3]=0,n[4]=i*e[4],n[5]=i*e[5],n[6]=i*e[6],n[7]=0,n[8]=a*e[8],n[9]=a*e[9],n[10]=a*e[10],n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=1,n)},c.multiplyByVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=t.w,u=e[0]*r+e[4]*i+e[8]*a+e[12]*o,s=e[1]*r+e[5]*i+e[9]*a+e[13]*o,c=e[2]*r+e[6]*i+e[10]*a+e[14]*o,l=e[3]*r+e[7]*i+e[11]*a+e[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[4]*i+e[8]*a,u=e[1]*r+e[5]*i+e[9]*a,s=e[2]*r+e[6]*i+e[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[4]*i+e[8]*a+e[12],u=e[1]*r+e[5]*i+e[9]*a+e[13],s=e[2]*r+e[6]*i+e[10]*a+e[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var n=e[1],r=e[2],i=e[3],a=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=a,t[10]=e[10],t[11]=e[14],t[12]=i,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var p=new u,v=new u,w=new t,g=new t(0,0,0,1);return c.inverse=function(e,n){if(u.equalsEpsilon(c.getRotation(e,p),v,o.EPSILON7)&&t.equals(c.getRow(e,3,w),g))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;var r=e[0],i=e[4],a=e[8],l=e[12],d=e[1],h=e[5],f=e[9],m=e[13],y=e[2],x=e[6],E=e[10],M=e[14],_=e[3],S=e[7],z=e[11],O=e[15],I=E*O,T=M*z,N=x*O,R=M*S,A=x*z,b=E*S,P=y*O,C=M*_,L=y*z,q=E*_,U=y*S,B=x*_,D=I*h+R*f+A*m-(T*h+N*f+b*m),W=T*d+P*f+q*m-(I*d+C*f+L*m),G=N*d+C*h+U*m-(R*d+P*h+B*m),F=b*d+L*h+B*f-(A*d+q*h+U*f),k=T*i+N*a+b*l-(I*i+R*a+A*l),V=I*r+C*a+L*l-(T*r+P*a+q*l),j=R*r+P*i+B*l-(N*r+C*i+U*l),Y=A*r+q*i+U*a-(b*r+L*i+B*a);I=a*m,T=l*f,N=i*m,R=l*h,A=i*f,b=a*h,P=r*m,C=l*d,L=r*f,q=a*d,U=r*h,B=i*d;var H=I*S+R*z+A*O-(T*S+N*z+b*O),Z=T*_+P*z+q*O-(I*_+C*z+L*O),X=N*_+C*S+U*O-(R*_+P*S+B*O),K=b*_+L*S+B*z-(A*_+q*S+U*z),J=N*E+b*M+T*x-(A*M+I*x+R*E),Q=L*M+I*y+C*E-(P*E+q*M+T*y),$=P*x+B*M+R*y-(U*M+N*y+C*x),et=U*E+A*y+q*x-(L*x+B*E+b*y),tt=r*D+i*W+a*G+l*F;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,n[0]=D*tt,n[1]=W*tt,n[2]=G*tt,n[3]=F*tt,n[4]=k*tt,n[5]=V*tt,n[6]=j*tt,n[7]=Y*tt,n[8]=H*tt,n[9]=Z*tt,n[10]=X*tt,n[11]=K*tt,n[12]=J*tt,n[13]=Q*tt,n[14]=$*tt,n[15]=et*tt,n},c.inverseTransformation=function(e,t){var n=e[0],r=e[1],i=e[2],a=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],d=e[12],h=e[13],f=e[14],m=-n*d-r*h-i*f,y=-a*d-o*h-u*f,p=-s*d-c*h-l*f;return t[0]=n,t[1]=a,t[2]=s,t[3]=0,t[4]=r,t[5]=o,t[6]=c,t[7]=0,t[8]=i,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=y,t[14]=p,t[15]=1,t},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var i=function(t,n){this.normal=e.clone(t),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-e.dot(r,n);return t(a)?(e.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new e;return i.fromCartesian4=function(n,r){var o=e.fromCartesian4(n,a),u=n.w;return t(r)?(e.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(t,n){return e.dot(t.normal,n)+t.distance},i.ORIGIN_XY_PLANE=r(new i(e.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(e.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(e.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,n,r,i,a,o,u){"use strict";var s=function(e,n,r,i){this.west=t(e,0),this.south=t(n,0),this.east=t(r,0),this.north=t(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.west,n[r++]=e.south,n[r++]=e.east,n[r]=e.north},s.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new s),i.west=e[r++],i.south=e[r++],i.east=e[r++],i.north=e[r],i},s.computeWidth=function(e){var t=e.east,n=e.west;return n>t&&(t+=u.TWO_PI),t-n},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,r,i,a,o){return e=u.toRadians(t(e,0)),r=u.toRadians(t(r,0)),i=u.toRadians(t(i,0)),a=u.toRadians(t(a,0)),n(o)?(o.west=e,o.south=r,o.east=i,o.north=a,o):new s(e,r,i,a)},s.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(t)?(t.west=r,t.south=a,t.east=i,t.north=o,t):new s(r,a,i,o)},s.clone=function(e,t){return n(e)?n(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return n(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},s.northwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},s.northeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},s.southeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},s.center=function(t,r){var i=t.east,a=t.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(t.south+t.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new e(o,s)},s.intersection=function(e,t,r){var i=e.east,a=e.west,o=t.east,c=t.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),d=u.negativePiToPi(Math.min(i,o));if((e.west<e.east||t.west<t.east)&&l>=d)return void 0;var h=Math.max(e.south,t.south),f=Math.min(e.north,t.north);return h>=f?void 0:n(r)?(r.west=l,r.south=h,r.east=d,r.north=f,r):new s(l,h,d,f)},s.contains=function(e,t){var n=t.longitude,r=t.latitude,i=e.west,a=e.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=e.south&&r<=e.north};var c=new e;return s.subsample=function(e,r,i,o){r=t(r,a.WGS84),i=t(i,0),n(o)||(o=[]);var l=0,d=e.north,h=e.south,f=e.east,m=e.west,y=c;y.height=i,y.longitude=m,y.latitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=f,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=h,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=0>d?d:h>0?h:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(e,y)&&(o[l]=r.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=f,o[l]=r.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,n,r,i,a,o,u,s,c,l,d,h){"use strict";var f=function(t,r){this.center=e.clone(n(t,e.ZERO)),this.radius=n(r,0)},m=new e,y=new e,p=new e,v=new e,w=new e,g=new e,x=new e,E=new e,M=new e,_=new e,S=new e,z=new e;f.fromPoints=function(t,n){if(r(n)||(n=new f),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;for(var i=e.clone(t[0],x),a=e.clone(i,m),o=e.clone(i,y),u=e.clone(i,p),s=e.clone(i,v),c=e.clone(i,w),l=e.clone(i,g),d=t.length,h=1;d>h;h++){e.clone(t[h],i);var O=i.x,I=i.y,T=i.z;O<a.x&&e.clone(i,a),O>s.x&&e.clone(i,s),I<o.y&&e.clone(i,o),I>c.y&&e.clone(i,c),T<u.z&&e.clone(i,u),T>l.z&&e.clone(i,l)}var N=e.magnitudeSquared(e.subtract(s,a,E)),R=e.magnitudeSquared(e.subtract(c,o,E)),A=e.magnitudeSquared(e.subtract(l,u,E)),b=a,P=s,C=N;R>C&&(C=R,b=o,P=c),A>C&&(C=A,b=u,P=l);var L=M;L.x=.5*(b.x+P.x),L.y=.5*(b.y+P.y),L.z=.5*(b.z+P.z);var q=e.magnitudeSquared(e.subtract(P,L,E)),U=Math.sqrt(q),B=_;B.x=a.x,B.y=o.y,B.z=u.z;var D=S;D.x=s.x,D.y=c.y,D.z=l.z;var W=e.multiplyByScalar(e.add(B,D,E),.5,z),G=0;for(h=0;d>h;h++){e.clone(t[h],i);var F=e.magnitude(e.subtract(i,W,E));F>G&&(G=F);var k=e.magnitudeSquared(e.subtract(i,L,E));if(k>q){var V=Math.sqrt(k);U=.5*(U+V),q=U*U;var j=V-U;L.x=(U*L.x+j*i.x)/V,L.y=(U*L.y+j*i.y)/V,L.z=(U*L.z+j*i.z)/V}}return G>U?(e.clone(L,n.center),n.radius=U):(e.clone(W,n.center),n.radius=G),n};var O=new u,I=new e,T=new e,N=new t,R=new t;f.fromRectangle2D=function(e,t,n){return f.fromRectangleWithHeights2D(e,t,0,0,n)},f.fromRectangleWithHeights2D=function(t,i,a,o,u){if(r(u)||(u=new f),!r(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;i=n(i,O),h.southwest(t,N),N.height=a,h.northeast(t,R),R.height=o;var s=i.project(N,I),c=i.project(R,T),l=c.x-s.x,d=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+d*d+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*d,y.z=s.z+.5*m,u};var A=[];f.fromRectangle3D=function(e,t,i,a){t=n(t,o.WGS84),i=n(i,0);var u;return r(e)&&(u=h.subsample(e,t,i,A)),f.fromPoints(u,a)},f.fromVertices=function(t,i,a,o){if(r(o)||(o=new f),!r(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;i=n(i,e.ZERO),a=n(a,3);var u=x;u.x=t[0]+i.x,u.y=t[1]+i.y,u.z=t[2]+i.z;for(var s=e.clone(u,m),c=e.clone(u,y),l=e.clone(u,p),d=e.clone(u,v),h=e.clone(u,w),O=e.clone(u,g),I=t.length,T=0;I>T;T+=a){var N=t[T]+i.x,R=t[T+1]+i.y,A=t[T+2]+i.z;u.x=N,u.y=R,u.z=A,N<s.x&&e.clone(u,s),N>d.x&&e.clone(u,d),R<c.y&&e.clone(u,c),R>h.y&&e.clone(u,h),A<l.z&&e.clone(u,l),A>O.z&&e.clone(u,O)}var b=e.magnitudeSquared(e.subtract(d,s,E)),P=e.magnitudeSquared(e.subtract(h,c,E)),C=e.magnitudeSquared(e.subtract(O,l,E)),L=s,q=d,U=b;P>U&&(U=P,L=c,q=h),C>U&&(U=C,L=l,q=O);var B=M;B.x=.5*(L.x+q.x),B.y=.5*(L.y+q.y),B.z=.5*(L.z+q.z);var D=e.magnitudeSquared(e.subtract(q,B,E)),W=Math.sqrt(D),G=_;G.x=s.x,G.y=c.y,G.z=l.z;var F=S;F.x=d.x,F.y=h.y,F.z=O.z;var k=e.multiplyByScalar(e.add(G,F,E),.5,z),V=0;for(T=0;I>T;T+=a){u.x=t[T]+i.x,u.y=t[T+1]+i.y,u.z=t[T+2]+i.z;var j=e.magnitude(e.subtract(u,k,E));j>V&&(V=j);var Y=e.magnitudeSquared(e.subtract(u,B,E));if(Y>D){var H=Math.sqrt(Y);W=.5*(W+H),D=W*W;var Z=H-W;B.x=(W*B.x+Z*u.x)/H,B.y=(W*B.y+Z*u.y)/H,B.z=(W*B.z+Z*u.z)/H}}return V>W?(e.clone(B,o.center),o.radius=W):(e.clone(k,o.center),o.radius=V),o},f.fromCornerPoints=function(t,n,i){r(i)||(i=new f);var a=i.center;return e.add(t,n,a),e.multiplyByScalar(a,.5,a),i.radius=e.distance(a,n),i},f.fromEllipsoid=function(t,n){return r(n)||(n=new f),e.clone(e.ZERO,n.center),n.radius=t.maximumRadius,n};var b=new e;f.fromBoundingSpheres=function(t,n){if(r(n)||(n=new f),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;var i=t.length;if(1===i)return f.clone(t[0],n);if(2===i)return f.union(t[0],t[1],n);for(var a=[],o=0;i>o;o++)a.push(t[o].center);n=f.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,b)+c.radius)}return n.radius=s,n},f.clone=function(t,n){return r(t)?r(n)?(n.center=e.clone(t.center,n.center),n.radius=t.radius,n):new f(t.center,t.radius):void 0},f.packedLength=4,f.pack=function(e,t,r){r=n(r,0);var i=e.center;t[r++]=i.x,t[r++]=i.y,t[r++]=i.z,t[r]=e.radius},f.unpack=function(e,t,i){t=n(t,0),r(i)||(i=new f);var a=i.center;return a.x=e[t++],a.y=e[t++],a.z=e[t++],i.radius=e[t],i};var P=new e,C=new e;f.union=function(t,n,i){r(i)||(i=new f);var a=t.center,o=t.radius,u=n.center,s=n.radius,c=e.subtract(u,a,P),l=e.magnitude(c);if(o>=l+s)return t.clone(i),i;if(s>=l+o)return n.clone(i),i;var d=.5*(o+l+s),h=e.multiplyByScalar(c,(-o+d)/l,C);return e.add(h,a,h),e.clone(h,i.center),i.radius=d,i};var L=new e;f.expand=function(t,n,r){r=f.clone(t,r);var i=e.magnitude(e.subtract(n,r.center,L));return i>r.radius&&(r.radius=i),r},f.intersectPlane=function(t,n){var r=t.center,i=t.radius,a=n.normal,o=e.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new d(new e,0);f.intersect=function(e,t){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=d.fromCartesian4(t,q);return f.intersectPlane(e,n)},f.transform=function(e,t,n){return r(n)||(n=new f),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=l.getMaximumScale(t)*e.radius,n};var U=new e;f.distanceSquaredTo=function(t,n){var r=e.subtract(t.center,n,U);return e.magnitudeSquared(r)-t.radius*t.radius},f.transformWithoutScale=function(e,t,n){return r(n)||(n=new f),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var B=new e;f.computePlaneDistances=function(t,n,i,a){r(a)||(a=new c);var o=e.subtract(t.center,n,B),u=e.multiplyByScalar(i,e.dot(i,o),B),s=e.magnitude(u);return a.start=s-t.radius,a.stop=s+t.radius,a};for(var D=new e,W=new e,G=new e,F=new e,k=new e,V=new t,j=new Array(8),Y=0;8>Y;++Y)j[Y]=new e;var H=new u;return f.projectTo2D=function(t,r,i){r=n(r,H);var a=r.ellipsoid,o=t.center,u=t.radius,s=a.geodeticSurfaceNormal(o,D),c=e.cross(e.UNIT_Z,s,W);e.normalize(c,c);var l=e.cross(s,c,G);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var d=e.negate(l,k),h=e.negate(c,F),m=j,y=m[0];e.add(s,l,y),e.add(y,c,y),y=m[1],e.add(s,l,y),e.add(y,h,y),y=m[2],e.add(s,d,y),e.add(y,h,y),y=m[3],e.add(s,d,y),e.add(y,c,y),e.negate(s,s),y=m[4],e.add(s,l,y),e.add(y,c,y),y=m[5],e.add(s,l,y),e.add(y,h,y),y=m[6],e.add(s,d,y),e.add(y,h,y),y=m[7],e.add(s,d,y),e.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var w=m[v];e.add(o,w,w);var g=a.cartesianToCartographic(w,V);r.project(g,w)}i=f.fromPoints(m,i),o=i.center;var x=o.x,E=o.y,M=o.z;return o.x=M,o.y=x,o.z=E,i},f.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&t.radius===n.radius},f.prototype.intersectPlane=function(e){return f.intersectPlane(this,e)},f.prototype.intersect=function(e){return f.intersect(this,e)},f.prototype.equals=function(e){return f.equals(this,e)},f.prototype.clone=function(e){return f.clone(this,e)},f}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return t(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(e(n))return n;n=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof t[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof t[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",e(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",e(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",e(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",e(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(e){i.supportsFullscreen()&&e[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,n){"use strict";function r(e){for(var t=e.split("."),n=0,r=t.length;r>n;++n)t[n]=parseInt(t[n],10);return t}function i(){if(!t(p)){p=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(p=!0,v=r(e[1]))}return p}function a(){return i()&&v}function o(){if(!t(w)&&(w=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(w=!0,g=r(e[1]))}return w}function u(){return o()&&g}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=r(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(M)){M=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(M=!0,_=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(M=!0,_=r(e[1])))}return M}function d(){return l()&&_}function h(){if(!t(S)){S=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(S=!0,z=r(e[1]))}return S}function f(){return t(O)||(O=/Windows/i.test(navigator.appVersion)),O}function m(){return h()&&z}function y(){return t(I)||(I=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),I}var p,v,w,g,x,E,M,_,S,z,O,I,T={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:d,isFirefox:h,firefoxVersion:m,isWindows:f,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return T.supportsFullscreen=function(){return n.supportsFullscreen()},T.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},T.supportsWebWorkers=function(){return"undefined"!=typeof Worker},T}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,n,r,i){"use strict";if(!r.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(e){switch(e){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},a.fromTypedArray=function(e){return e instanceof Int8Array?a.BYTE:e instanceof Uint8Array?a.UNSIGNED_BYTE:e instanceof Int16Array?a.SHORT:e instanceof Uint16Array?a.UNSIGNED_SHORT:e instanceof Float32Array?a.FLOAT:e instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(e){return t(e)&&(e===a.BYTE||e===a.UNSIGNED_BYTE||e===a.SHORT||e===a.UNSIGNED_SHORT||e===a.FLOAT||e===a.DOUBLE)},a.createTypedArray=function(e,t){switch(e){case a.BYTE:return new Int8Array(t);case a.UNSIGNED_BYTE:return new Uint8Array(t);case a.SHORT:return new Int16Array(t);case a.UNSIGNED_SHORT:return new Uint16Array(t);case a.FLOAT:return new Float32Array(t);case a.DOUBLE:return new Float64Array(t);default:throw new n("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(t,r,i,o){switch(i=e(i,0),o=e(o,(r.byteLength-i)/a.getSizeInBytes(t)),t){case a.BYTE:return new Int8Array(r,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(r,i,o);case a.SHORT:return new Int16Array(r,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(r,i,o);case a.FLOAT:return new Float32Array(r,i,o);case a.DOUBLE:return new Float64Array(r,i,o);default:throw new n("componentDatatype is not a valid value.")}},i(a)}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,n,r,i,a,o,u){"use strict";var s=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)},c=new e;s.fromAxisAngle=function(t,r,i){var a=r/2,o=Math.sin(a);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,d=c.z*o,h=Math.cos(a);return n(i)?(i.x=u,i.y=l,i.z=d,i.w=h,i):new s(u,l,d,h)};var l=[1,2,0],d=new Array(3);s.fromRotationMatrix=function(e,t){var r,i,a,o,c,h=e[u.COLUMN0ROW0],f=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],y=h+f+m;if(y>0)r=Math.sqrt(y+1),c=.5*r,r=.5/r,i=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*r,a=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*r,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*r;else{var p=l,v=0;f>h&&(v=1),m>h&&m>f&&(v=2);var w=p[v],g=p[w];r=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(w,w)]-e[u.getElementIndex(g,g)]+1);var x=d;x[v]=.5*r,r=.5/r,c=(e[u.getElementIndex(g,w)]-e[u.getElementIndex(w,g)])*r,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*r,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*r,i=-x[0],a=-x[1],o=-x[2]}return n(t)?(t.x=i,t.y=a,t.z=o,t.w=c,t):new s(i,a,o,c)};var h=new s;s.fromHeadingPitchRoll=function(t,n,r,i){var a=s.fromAxisAngle(e.UNIT_X,r,h),o=s.fromAxisAngle(e.UNIT_Y,-n,i);i=s.multiply(o,a,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,h);return s.multiply(u,i,i)};var f=new e,m=new e,y=new s,p=new s,v=new s;s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},s.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new s),i.x=e[r],i.y=e[r+1],i.z=e[r+2],i.w=e[r+3],i},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,n,r){s.unpack(e,4*n,v),s.conjugate(v,v);for(var i=0,a=n-t+1;a>i;i++){var o=3*i;s.unpack(e,4*(t+i),y),s.multiply(y,v,y),y.w<0&&s.negate(y,y),s.computeAxis(y,f);var u=s.computeAngle(y);r[o]=f.x*u,r[o+1]=f.y*u,r[o+2]=f.z*u}},s.unpackInterpolationResult=function(t,r,i,a,o){n(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(r,4*a,p),0===u?s.clone(s.IDENTITY,y):s.fromAxisAngle(m,u,y),s.multiply(y,p,o)},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var n=1/s.magnitude(e),r=e.x*n,i=e.y*n,a=e.z*n,o=e.w*n;return t.x=r,t.y=i,t.z=a,t.w=o,t},s.inverse=function(e,t){var n=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/n,t)},s.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},s.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,d=o*u+r*l+i*c-a*s,h=o*s-r*c+i*l+a*u,f=o*c+r*s-i*u+a*l,m=o*l-r*u-i*s-a*c;return n.x=d,n.y=h,n.z=f,n.w=m,n},s.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},s.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},s.computeAxis=function(e,t){var n=e.w;if(Math.abs(n-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var r=1/Math.sqrt(1-n*n);return t.x=e.x*r,t.y=e.y*r,t.z=e.z*r,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var w=new s;s.lerp=function(e,t,n,r){return w=s.multiplyByScalar(t,n,w),r=s.multiplyByScalar(e,1-n,r),s.add(w,r,r)};var g=new s,x=new s,E=new s;s.slerp=function(e,t,n,r){var i=s.dot(e,t),a=t;if(0>i&&(i=-i,a=g=s.negate(t,g)),1-i<o.EPSILON6)return s.lerp(e,a,n,r);var u=Math.acos(i);return x=s.multiplyByScalar(e,Math.sin((1-n)*u),x),E=s.multiplyByScalar(a,Math.sin(n*u),E),r=s.add(x,E,r),s.multiplyByScalar(r,1/Math.sin(u),r)},s.log=function(t,n){var r=o.acosClamped(t.w),i=0;return 0!==r&&(i=r/Math.sin(r)),e.multiplyByScalar(t,i,n) +},s.exp=function(t,n){var r=e.magnitude(t),i=0;return 0!==r&&(i=Math.sin(r)/r),n.x=t.x*i,n.y=t.y*i,n.z=t.z*i,n.w=Math.cos(r),n};var M=new e,_=new e,S=new s,z=new s;s.computeInnerQuadrangle=function(t,n,r,i){var a=s.conjugate(n,S);s.multiply(a,r,z);var o=s.log(z,M);s.multiply(a,t,z);var u=s.log(z,_);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,S),s.multiply(n,S,i)},s.squad=function(e,t,n,r,i,a){var o=s.slerp(e,t,i,S),u=s.slerp(n,r,i,z);return s.slerp(o,u,2*i*(1-i),a)};for(var O=new s,I=1.9011074535173003,T=i.supportsTypedArrays()?new Float32Array(8):[],N=i.supportsTypedArrays()?new Float32Array(8):[],R=i.supportsTypedArrays()?new Float32Array(8):[],A=i.supportsTypedArrays()?new Float32Array(8):[],b=0;7>b;++b){var P=b+1,C=2*P+1;T[b]=1/(P*C),N[b]=P/C}return T[7]=I/136,N[7]=8*I/17,s.fastSlerp=function(e,t,n,r){var i,a=s.dot(e,t);a>=0?i=1:(i=-1,a=-a);for(var o=a-1,u=1-n,c=n*n,l=u*u,d=7;d>=0;--d)R[d]=(T[d]*c-N[d])*o,A[d]=(T[d]*l-N[d])*o;var h=i*n*(1+R[0]*(1+R[1]*(1+R[2]*(1+R[3]*(1+R[4]*(1+R[5]*(1+R[6]*(1+R[7])))))))),f=u*(1+A[0]*(1+A[1]*(1+A[2]*(1+A[3]*(1+A[4]*(1+A[5]*(1+A[6]*(1+A[7])))))))),m=s.multiplyByScalar(e,f,O);return s.multiplyByScalar(t,h,r),s.add(m,r,r)},s.fastSquad=function(e,t,n,r,i,a){var o=s.fastSlerp(e,t,i,S),u=s.fastSlerp(n,r,i,z);return s.fastSlerp(o,u,2*i*(1-i),a)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},s.ZERO=a(new s(0,0,0,0)),s.IDENTITY=a(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/EllipseGeometryLibrary",["./Cartesian3","./Math","./Matrix3","./Quaternion"],function(e,t,n,r){"use strict";function i(t,i,a,l,d,h,f,m,y,p){var v=t+i;e.multiplyByScalar(l,Math.cos(v),o),e.multiplyByScalar(a,Math.sin(v),u),e.add(o,u,o);var w=Math.cos(t);w*=w;var g=Math.sin(t);g*=g;var x=h/Math.sqrt(f*w+d*g),E=x/m;return r.fromAxisAngle(o,E,s),n.fromQuaternion(s,c),n.multiplyByVector(c,y,p),e.normalize(p,p),e.multiplyByScalar(p,m,p),p}var a={},o=new e,u=new e,s=new r,c=new n,l=new e,d=new e,h=new e,f=new e;a.raisePositionsToHeight=function(t,n,r){for(var i=n.ellipsoid,a=n.height,o=n.extrudedHeight,u=r?2*(t.length/3):t.length/3,s=new Float64Array(3*u),c=t.length,m=r?c:0,y=0;c>y;y+=3){var p=y+1,v=y+2,w=e.fromArray(t,y,l);i.scaleToGeodeticSurface(w,w);var g=e.clone(w,d),x=i.geodeticSurfaceNormal(w,f),E=e.multiplyByScalar(x,a,h);e.add(w,E,w),r&&(e.multiplyByScalar(x,o,E),e.add(g,E,g),s[y+m]=g.x,s[p+m]=g.y,s[v+m]=g.z),s[y]=w.x,s[p]=w.y,s[v]=w.z}return s};var m=new e,y=new e,p=new e;return a.computeEllipsePositions=function(n,r,a){var o=n.semiMinorAxis,u=n.semiMajorAxis,s=n.rotation,c=n.center,f=8*n.granularity,v=o*o,w=u*u,g=u*o,x=e.magnitude(c),E=e.normalize(c,m),M=e.cross(e.UNIT_Z,c,y);M=e.normalize(M,M);var _=e.cross(E,M,p),S=1+Math.ceil(t.PI_OVER_TWO/f),z=t.PI_OVER_TWO/(S-1),O=t.PI_OVER_TWO-S*z;0>O&&(S-=Math.ceil(Math.abs(O)/z));var I,T,N,R,A,b=2*S*(S+1),P=r?new Array(3*b):void 0,C=0,L=l,q=d,U=3*(2*S+2*(S-1)),B=U-1,D=0,W=a?new Array(U):void 0;for(O=t.PI_OVER_TWO,I=0;S>I;++I){if(L=i(O,s,_,M,v,g,w,x,E,L),q=i(Math.PI-O,s,_,M,v,g,w,x,E,q),r){for(P[C++]=L.x,P[C++]=L.y,P[C++]=L.z,N=2*I+2,T=1;N-1>T;++T)R=T/(N-1),A=e.lerp(L,q,R,h),P[C++]=A.x,P[C++]=A.y,P[C++]=A.z;P[C++]=q.x,P[C++]=q.y,P[C++]=q.z}a&&(W[B--]=L.z,W[B--]=L.y,W[B--]=L.x,0!==I&&(W[D++]=q.x,W[D++]=q.y,W[D++]=q.z)),O=t.PI_OVER_TWO-(I+1)*z}for(I=S;I>0;--I){if(O=t.PI_OVER_TWO-(I-1)*z,L=i(-O,s,_,M,v,g,w,x,E,L),q=i(O+Math.PI,s,_,M,v,g,w,x,E,q),r){for(P[C++]=L.x,P[C++]=L.y,P[C++]=L.z,N=2*(I-1)+2,T=1;N-1>T;++T)R=T/(N-1),A=e.lerp(L,q,R,h),P[C++]=A.x,P[C++]=A.y,P[C++]=A.z;P[C++]=q.x,P[C++]=q.y,P[C++]=q.z}a&&(W[B--]=L.z,W[B--]=L.y,W[B--]=L.x,1!==I&&(W[D++]=q.x,W[D++]=q.y,W[D++]=q.z))}var G={};return r&&(G.positions=P,G.numPts=S),a&&(G.outerPositions=W),G},a}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,n,r,i){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,i.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,r.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(e){var r=-1;for(var i in e.attributes)if(e.attributes.hasOwnProperty(i)&&t(e.attributes[i])&&t(e.attributes[i].values)){var a=e.attributes[i],o=a.values.length/a.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(e){switch(e){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(t){return e(t)&&(t===i.UNSIGNED_BYTE||t===i.UNSIGNED_SHORT||t===i.UNSIGNED_INT)},i.createTypedArray=function(e,t){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},i.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)},n(i)}),define("Core/EllipseOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EllipseGeometryLibrary","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType"],function(e,t,n,r,i,a,o,u,s,c,l,d,h,f){"use strict";function m(r){var i=r.center;v=t.multiplyByScalar(r.ellipsoid.geodeticSurfaceNormal(i,v),r.height,v),v=t.add(i,v,v);for(var a=new e(v,r.semiMajorAxis),u=o.computeEllipsePositions(r,!1,!0).outerPositions,s=new l({position:new c({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:o.raisePositionsToHeight(u,r,!1)})}),h=u.length/3,f=d.createTypedArray(h,2*h),m=0,y=0;h>y;++y)f[m++]=y,f[m++]=(y+1)%h;return{boundingSphere:a,attributes:s,indices:f}}function y(i){var a=r(i.numberOfVerticalLines,16);a=Math.max(a,0);var u=i.center,s=i.ellipsoid,h=i.semiMajorAxis,f=t.multiplyByScalar(s.geodeticSurfaceNormal(u,p),i.height,p);w.center=t.add(u,f,w.center),w.radius=h,f=t.multiplyByScalar(s.geodeticSurfaceNormal(u,f),i.extrudedHeight,f),g.center=t.add(u,f,g.center),g.radius=h;var m=o.computeEllipsePositions(i,!1,!0).outerPositions,y=new l({position:new c({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:o.raisePositionsToHeight(m,i,!0)})});m=y.position.values;var v=e.union(w,g),x=m.length/3,E=d.createTypedArray(x,2*x+2*a);x/=2;var M,_=0;for(M=0;x>M;++M)E[_++]=M,E[_++]=(M+1)%x,E[_++]=M+x,E[_++]=(M+1)%x+x;var S;if(a>0){var z=Math.min(a,x);S=Math.round(x/z)}var O=Math.min(S*a,x);if(a>0)for(M=0;O>M;M+=S)E[_++]=M,E[_++]=M+x;return{boundingSphere:v,attributes:y,indices:E}}var p=new t,v=new t,w=new e,g=new e,x=function(e){e=r(e,r.EMPTY_OBJECT);var n=e.center,a=r(e.ellipsoid,u.WGS84),o=e.semiMajorAxis,s=e.semiMinorAxis,c=r(e.granularity,h.RADIANS_PER_DEGREE),l=r(e.height,0),d=e.extrudedHeight,f=i(d)&&Math.abs(l-d)>1;this._center=t.clone(n),this._semiMajorAxis=o,this._semiMinorAxis=s,this._ellipsoid=u.clone(a),this._rotation=r(e.rotation,0),this._height=l,this._granularity=c,this._extrudedHeight=d,this._extrude=f,this._numberOfVerticalLines=Math.max(r(e.numberOfVerticalLines,16),0),this._workerName="createEllipseOutlineGeometry"};x.packedLength=t.packedLength+u.packedLength+9,x.pack=function(e,n,a){a=r(a,0),t.pack(e._center,n,a),a+=t.packedLength,u.pack(e._ellipsoid,n,a),a+=u.packedLength,n[a++]=e._semiMajorAxis,n[a++]=e._semiMinorAxis,n[a++]=e._rotation,n[a++]=e._height,n[a++]=e._granularity,n[a++]=i(e._extrudedHeight)?1:0,n[a++]=r(e._extrudedHeight,0),n[a++]=e._extrude?1:0,n[a]=e._numberOfVerticalLines};var E=new t,M=new u,_={center:E,ellipsoid:M,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0};return x.unpack=function(e,n,a){n=r(n,0);var o=t.unpack(e,n,E);n+=t.packedLength;var s=u.unpack(e,n,M);n+=u.packedLength;var c=e[n++],l=e[n++],d=e[n++],h=e[n++],f=e[n++],m=e[n++],y=e[n++],p=1===e[n++],v=e[n];return i(a)?(a._center=t.clone(o,a._center),a._ellipsoid=u.clone(s,a._ellipsoid),a._semiMajorAxis=c,a._semiMinorAxis=l,a._rotation=d,a._height=h,a._granularity=f,a._extrudedHeight=m?y:void 0,a._extrude=p,a._numberOfVerticalLines=v,a):(_.height=h,_.extrudedHeight=m?y:void 0,_.granularity=f,_.rotation=d,_.semiMajorAxis=c,_.semiMinorAxis=l,_.numberOfVerticalLines=v,new x(_))},x.createGeometry=function(e){e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);var t,n={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:e._height,extrudedHeight:e._extrudedHeight,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines};return e._extrude?(n.extrudedHeight=Math.min(e._extrudedHeight,e._height),n.height=Math.max(e._extrudedHeight,e._height),t=y(n)):t=m(n),new s({attributes:t.attributes,indices:t.indices,primitiveType:f.LINES,boundingSphere:t.boundingSphere})},x}),define("Core/CircleOutlineGeometry",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./EllipseOutlineGeometry","./Ellipsoid"],function(e,t,n,r,i,a){"use strict";var o=function(e){e=t(e,t.EMPTY_OBJECT);var n=e.radius,r={center:e.center,semiMajorAxis:n,semiMinorAxis:n,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new i(r),this._workerName="createCircleOutlineGeometry"};o.packedLength=i.packedLength,o.pack=function(e,t,n){i.pack(e._ellipseGeometry,t,n)};var u=new i({center:new e,semiMajorAxis:1,semiMinorAxis:1}),s={center:new e,radius:void 0,ellipsoid:a.clone(a.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};return o.unpack=function(t,r,c){var l=i.unpack(t,r,u);return s.center=e.clone(l._center,s.center),s.ellipsoid=a.clone(l._ellipsoid,s.ellipsoid),s.height=l._height,s.extrudedHeight=l._extrudedHeight,s.granularity=l._granularity,s.numberOfVerticalLines=l._numberOfVerticalLines,n(c)?(s.semiMajorAxis=l._semiMajorAxis,s.semiMinorAxis=l._semiMinorAxis,c._ellipseGeometry=new i(s),c):(s.radius=l._semiMajorAxis,new o(s))},o.createGeometry=function(e){return i.createGeometry(e._ellipseGeometry)},o}),define("Workers/createCircleOutlineGeometry",["../Core/Cartesian3","../Core/CircleOutlineGeometry","../Core/defined","../Core/Ellipsoid"],function(e,t,n,r){"use strict";function i(i,a){return n(a)&&(i=t.unpack(i,a)),i._ellipseGeometry._center=e.clone(i._ellipseGeometry._center),i._ellipseGeometry._ellipsoid=r.clone(i._ellipseGeometry._ellipsoid),t.createGeometry(i)}return i})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createCorridorGeometry.js b/libs/Cesium/Workers/createCorridorGeometry.js new file mode 100644 index 0000000000..a62f7d89ac --- /dev/null +++ b/libs/Cesium/Workers/createCorridorGeometry.js @@ -0,0 +1,229 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[1&e];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(e){return e>0?1:0>e?-1:0},n.signNotZero=function(e){return 0>e?-1:1},n.toSNorm=function(e){return Math.round(255*(.5*n.clamp(e,-1,1)+.5))},n.fromSNorm=function(e){return 2*(n.clamp(e,0,255)/255)-1},n.sinh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t-n)},n.cosh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t+n)},n.lerp=function(e,t,n){return(1-n)*e+n*t},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(e){return e*n.RADIANS_PER_DEGREE},n.toDegrees=function(e){return e*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(e){var t=n.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},n.negativePiToPi=function(e){return n.zeroToTwoPi(e+n.PI)-n.PI},n.zeroToTwoPi=function(e){var t=n.mod(e,n.TWO_PI);return Math.abs(t)<n.EPSILON14&&Math.abs(e)>n.EPSILON14?n.TWO_PI:t},n.mod=function(e,t){return(e%t+t)%t},n.equalsEpsilon=function(e,n,r,a){a=t(a,r);var i=Math.abs(e-n);return a>=i||i<=r*Math.max(Math.abs(e),Math.abs(n))};var r=[1];n.factorial=function(e){var t=r.length;if(e>=t)for(var n=r[t-1],a=t;e>=a;a++)r.push(n*a);return r[e]},n.incrementWrap=function(e,n,r){return r=t(r,0),++e,e>n&&(e=r),e},n.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},n.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},n.clamp=function(e,t,n){return t>e?t:e>n?n:e};var a=new e;return n.setRandomNumberSeed=function(t){a=new e(t)},n.nextRandomNumber=function(){return a.random()},n.acosClamped=function(e){return Math.acos(n.clamp(e,-1,1))},n.asinClamped=function(e){return Math.asin(n.clamp(e,-1,1))},n.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0)};i.fromSpherical=function(n,r){t(r)||(r=new i);var a=n.clock,o=n.cone,u=e(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(a),r.y=s*Math.sin(a),r.z=u*Math.cos(o),r},i.fromElements=function(e,n,r,a){return t(a)?(a.x=e,a.y=n,a.z=r,a):new i(e,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n):new i(e.x,e.y,e.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r]=t.z},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i,c=new i;i.angleBetween=function(e,t){i.normalize(e,s),i.normalize(t,c);var n=i.dot(s,c),r=i.magnitude(i.cross(s,c,s));return Math.atan2(r,n)};var l=new i;i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Z,t):n.y<=n.z?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_Z,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)},i.cross=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=t.x,u=t.y,s=t.z,c=a*s-i*u,l=i*o-r*s,d=r*u-a*o;return n.x=c,n.y=l,n.z=d,n},i.fromDegrees=function(e,t,n,r,o){var u=a.toRadians(e),s=a.toRadians(t);return i.fromRadians(u,s,n,r,o)};var d=new i,f=new i,h=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(n,r,a,o,u){a=e(a,0);var s=t(o)?o.radiiSquared:h,c=Math.cos(r);d.x=c*Math.cos(n),d.y=c*Math.sin(n),d.z=Math.sin(r),d=i.normalize(d,d),i.multiplyComponents(s,d,f);var l=Math.sqrt(i.dot(d,f));return f=i.divideByScalar(f,l,f),d=i.multiplyByScalar(d,a,d),t(u)||(u=new i),i.add(f,d,u)},i.fromDegreesArray=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=a.toRadians(e[o]);return i.fromRadiansArray(r,t,n)},i.fromRadiansArray=function(e,n,r){var a=e.length;t(r)?r.length=a/2:r=new Array(a/2);for(var o=0;a>o;o+=2){var u=e[o],s=e[o+1];r[o/2]=i.fromRadians(u,s,0,n,r[o/2])}return r},i.fromDegreesArrayHeights=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o+=3)r[o]=a.toRadians(e[o]),r[o+1]=a.toRadians(e[o+1]),r[o+2]=e[o+2];return i.fromRadiansArrayHeights(r,t,n)},i.fromRadiansArrayHeights=function(e,n,r){var a=e.length;t(r)?r.length=a/3:r=new Array(a/3);for(var o=0;a>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];r[o/3]=i.fromRadians(u,s,c,n,r[o/3])}return r},i.ZERO=r(new i(0,0,0)),i.UNIT_X=r(new i(1,0,0)),i.UNIT_Y=r(new i(0,1,0)),i.UNIT_Z=r(new i(0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.longitude=e(t,0),this.latitude=e(n,0),this.height=e(r,0)};return i.fromRadians=function(n,r,a,o){return a=e(a,0),t(o)?(o.longitude=n,o.latitude=r,o.height=a,o):new i(n,r,a)},i.fromDegrees=function(e,t,n,r){return e=a.toRadians(e),t=a.toRadians(t),i.fromRadians(e,t,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.longitude=e.longitude,n.latitude=e.latitude,n.height=e.height,n):new i(e.longitude,e.latitude,e.height):void 0},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.longitude===n.longitude&&e.latitude===n.latitude&&e.height===n.height},i.equalsEpsilon=function(e,n,r){return e===n||t(e)&&t(n)&&Math.abs(e.longitude-n.longitude)<=r&&Math.abs(e.latitude-n.latitude)<=r&&Math.abs(e.height-n.height)<=r},i.ZERO=r(new i(0,0,0)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},n=function(n,r){e(t[n])||(t[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),n=Object.defineProperties;return t&&e(n)||(n=function(e){return e}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(t,r,a,i){r=n(r,0),a=n(a,0),i=n(i,0),t._radii=new e(r,a,i),t._radiiSquared=new e(r*r,a*a,i*i),t._radiiToTheFourth=new e(r*r*r*r,a*a*a*a,i*i*i*i),t._oneOverRadii=new e(0===r?0:1/r,0===a?0:1/a,0===i?0:1/i),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===a?0:1/(a*a),0===i?0:1/(i*i)),t._minimumRadius=Math.min(r,a,i),t._maximumRadius=Math.max(r,a,i),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,n)};a(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,n){if(!r(t))return void 0;var a=t._radii;return r(n)?(e.clone(a,n._radii),e.clone(t._radiiSquared,n._radiiSquared),e.clone(t._radiiToTheFourth,n._radiiToTheFourth),e.clone(t._oneOverRadii,n._oneOverRadii),e.clone(t._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=t._minimumRadius,n._maximumRadius=t._maximumRadius,n._centerToleranceSquared=t._centerToleranceSquared,n):new c(a.x,a.y,a.z)},c.fromCartesian3=function(e,t){return r(t)||(t=new c),r(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,r,a){a=n(a,0),e.pack(t._radii,r,a)},c.unpack=function(t,r,a){r=n(r,0);var i=e.unpack(t,r);return c.fromCartesian3(i,a)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,n){var a=t.longitude,i=t.latitude,o=Math.cos(i),u=o*Math.cos(a),s=o*Math.sin(a),c=Math.sin(i);return r(n)||(n=new e),n.x=u,n.y=s,n.z=c,e.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(t,n){return r(n)||(n=new e),n=e.multiplyComponents(t,this._oneOverRadiiSquared,n),e.normalize(n,n)};var l=new e,d=new e;c.prototype.cartographicToCartesian=function(t,n){var a=l,i=d;this.geodeticSurfaceNormalCartographic(t,a),e.multiplyComponents(this._radiiSquared,a,i);var o=Math.sqrt(e.dot(a,i));return e.divideByScalar(i,o,i),e.multiplyByScalar(a,t.height,a),r(n)||(n=new e),e.add(i,a,n)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;a++)t[a]=this.cartographicToCartesian(e[a],t[a]);return t};var f=new e,h=new e,m=new e;c.prototype.cartesianToCartographic=function(n,a){var i=this.scaleToGeodeticSurface(n,h);if(!r(i))return void 0;var o=this.geodeticSurfaceNormal(i,f),s=e.subtract(n,i,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),d=u.sign(e.dot(s,n))*e.magnitude(s);return r(a)?(a.longitude=c,a.latitude=l,a.height=d,a):new t(c,l,d)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;++a)t[a]=this.cartesianToCartographic(e[a],t[a]);return t};var p=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,n){var a=t.x,i=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,d=s.z,f=a*a*c*c,h=i*i*l*l,m=o*o*d*d,v=f+h+m,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,p);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,n):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,_=x.z,O=y;O.x=2*w.x*E,O.y=2*w.y*S,O.z=2*w.z*_;var M,T,P,A,N,R,z,I,b,C,D,U=(1-g)*e.magnitude(t)/(.5*e.magnitude(O)),L=0;do{U-=L,P=1/(1+U*E),A=1/(1+U*S),N=1/(1+U*_),R=P*P,z=A*A,I=N*N,b=R*P,C=z*A,D=I*N,M=f*R+h*z+m*I-1,T=f*b*E+h*C*S+m*D*_;var q=-2*T;L=M/q}while(Math.abs(M)>u.EPSILON12);return r(n)?(n.x=a*P,n.y=i*A,n.z=o*N,n):new e(a*P,i*A,o*N)},c.prototype.scaleToGeocentricSurface=function(t,n){r(n)||(n=new e);var a=t.x,i=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(a*a*u.x+i*i*u.y+o*o*u.z);return e.multiplyByScalar(t,s,n)},c.prototype.transformPositionToScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._radii,n)},c.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,n,r,a,i,o){"use strict";var u=function(e){this._ellipsoid=n(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return a(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,n){var a=this._semimajorAxis,i=t.longitude*a,o=t.latitude*a,u=t.height;return r(n)?(n.x=i,n.y=o,n.z=u,n):new e(i,o,u)},u.prototype.unproject=function(e,n){var a=this._oneOverSemimajorAxis,i=e.x*a,o=e.y*a,u=e.z;return r(n)?(n.longitude=i,n.latitude=o,n.height=u,n):new t(i,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,n){this.start=e(t,0),this.stop=e(n,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r,a){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0),this.w=e(a,0)};i.fromElements=function(e,n,r,a,o){return t(o)?(o.x=e,o.y=n,o.z=r,o.w=a,o):new i(e,n,r,a)},i.fromColor=function(e,n){return t(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new i(e.red,e.green,e.blue,e.alpha)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new i(e.x,e.y,e.z,e.w):void 0},i.packedLength=4,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r++]=t.z,n[r]=t.w},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r++],a.w=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,s);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?n.x<=n.w?i.clone(i.UNIT_X,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t):n.y<=n.z?n.y<=n.w?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)&&a.equalsEpsilon(e.w,n.w,r,i)},i.ZERO=r(new i(0,0,0,0)),i.UNIT_X=r(new i(1,0,0,0)),i.UNIT_Y=r(new i(0,1,0,0)),i.UNIT_Z=r(new i(0,0,1,0)),i.UNIT_W=r(new i(0,0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i){"use strict";function o(e){for(var t=0,n=0;9>n;++n){var r=e[n];t+=r*r}return Math.sqrt(t)}function u(e){for(var t=0,n=0;3>n;++n){var r=e[c.getElementIndex(h[n],f[n])];t+=2*r*r}return Math.sqrt(t)}function s(e,t){for(var n=i.EPSILON15,r=0,a=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(h[o],f[o])]);u>r&&(a=o,r=u)}var s=1,l=0,d=f[a],m=h[a];if(Math.abs(e[c.getElementIndex(m,d)])>n){var p,y=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(d,d)],g=e[c.getElementIndex(m,d)],w=(y-v)/2/g;p=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+p*p),l=p*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(d,d)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,d)]=l,t[c.getElementIndex(d,m)]=-l,t}var c=function(e,n,r,a,i,o,u,s,c){this[0]=t(e,0),this[1]=t(a,0),this[2]=t(u,0),this[3]=t(n,0),this[4]=t(i,0),this[5]=t(s,0),this[6]=t(r,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r++]=e[7],n[r++]=e[8]},c.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r++],a[1]=e[r++],a[2]=e[r++],a[3]=e[r++],a[4]=e[r++],a[5]=e[r++],a[6]=e[r++],a[7]=e[r++],a[8]=e[r++],a},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r],a[1]=e[r+1],a[2]=e[r+2],a[3]=e[r+3],a[4]=e[r+4],a[5]=e[r+5],a[6]=e[r+6],a[7]=e[r+7],a[8]=e[r+8],a},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var r=e.x*e.x,a=e.x*e.y,i=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,d=e.z*e.z,f=e.z*e.w,h=e.w*e.w,m=r-u-d+h,p=2*(a-f),y=2*(i+l),v=2*(a+f),g=-r+u-d+h,w=2*(s-o),x=2*(i-l),E=2*(s+o),S=-r-u+d+h;return n(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=p,t[4]=g,t[5]=E,t[6]=y,t[7]=w,t[8]=S,t):new c(m,p,y,v,g,w,x,E,S)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return n(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=a,t[6]=0,t[7]=-a,t[8]=r,t):new c(1,0,0,0,r,-a,0,a,r)},c.fromRotationY=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=0,t[2]=-a,t[3]=0,t[4]=1,t[5]=0,t[6]=a,t[7]=0,t[8]=r,t):new c(r,0,a,0,1,0,-a,0,r)},c.fromRotationZ=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=a,t[2]=0,t[3]=-a,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(r,-a,0,a,r,0,0,0,1)},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,n){var r=3*t,a=e[r],i=e[r+1],o=e[r+2];return n.x=a,n.y=i,n.z=o,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=3*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r},c.getRow=function(e,t,n){var r=e[t],a=e[t+3],i=e[t+6];return n.x=r,n.y=a,n.z=i,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+3]=n.y,r[t+6]=n.z,r};var l=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),n};var d=new e;c.getMaximumScale=function(t){return c.getScale(t,d),e.maximumComponent(d)},c.multiply=function(e,t,n){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],a=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],i=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],d=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=r,n[1]=a,n[2]=i,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=d,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[3]*a+e[6]*i,u=e[1]*r+e[4]*a+e[7]*i,s=e[2]*r+e[5]*a+e[8]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n},c.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var n=e[0],r=e[3],a=e[6],i=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=n,t[1]=r,t[2]=a,t[3]=i,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var f=[1,0,0],h=[2,2,1],m=new c,p=new c;return c.computeEigenDecomposition=function(e,t){var r=i.EPSILON20,a=10,l=0,d=0;n(t)||(t={});for(var f=t.unitary=c.clone(c.IDENTITY,t.unitary),h=t.diagonal=c.clone(e,t.diagonal),y=r*o(h);a>d&&u(h)>y;)s(h,m),c.transpose(m,p),c.multiply(h,m,h),c.multiply(p,h,h),c.multiply(f,m,f),++l>2&&(++d,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],n=e[3],r=e[6],a=e[1],i=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(i*c-s*o)+a*(s*r-n*c)+u*(n*o-i*r)},c.inverse=function(e,t){var n=e[0],a=e[1],o=e[2],u=e[3],s=e[4],l=e[5],d=e[6],f=e[7],h=e[8],m=c.determinant(e);if(Math.abs(m)<=i.EPSILON15)throw new r("matrix is not invertible");t[0]=s*h-f*l,t[1]=f*o-a*h,t[2]=a*l-s*o,t[3]=d*l-u*h,t[4]=n*h-d*o,t[5]=u*o-n*l,t[6]=u*f-d*s,t[7]=d*a-n*f,t[8]=n*s-u*a;var p=1/m;return c.multiplyByScalar(t,p,t)},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},c.IDENTITY=a(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,n,r,a,i,o,u,s){"use strict";var c=function(e,t,r,a,i,o,u,s,c,l,d,f,h,m,p,y){this[0]=n(e,0),this[1]=n(i,0),this[2]=n(c,0),this[3]=n(h,0),this[4]=n(t,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(d,0),this[11]=n(p,0),this[12]=n(a,0),this[13]=n(s,0),this[14]=n(f,0),this[15]=n(y,0)};c.packedLength=16,c.pack=function(e,t,r){r=n(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},c.unpack=function(e,t,a){return t=n(t,0),r(a)||(a=new c),a[0]=e[t++],a[1]=e[t++],a[2]=e[t++],a[3]=e[t++],a[4]=e[t++],a[5]=e[t++],a[6]=e[t++],a[7]=e[t++],a[8]=e[t++],a[9]=e[t++],a[10]=e[t++],a[11]=e[t++],a[12]=e[t++],a[13]=e[t++],a[14]=e[t++],a[15]=e[t],a},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,a,i){return a=n(a,e.ZERO),r(i)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=0,i[4]=t[3],i[5]=t[4],i[6]=t[5],i[7]=0,i[8]=t[6],i[9]=t[7],i[10]=t[8],i[11]=0,i[12]=a.x,i[13]=a.y,i[14]=a.z,i[15]=1,i):new c(t[0],t[3],t[6],a.x,t[1],t[4],t[7],a.y,t[2],t[5],t[8],a.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,n,a){r(a)||(a=new c);var i=n.x,o=n.y,u=n.z,s=t.x*t.x,l=t.x*t.y,d=t.x*t.z,f=t.x*t.w,h=t.y*t.y,m=t.y*t.z,p=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-h-y+g,x=2*(l-v),E=2*(d+p),S=2*(l+v),_=-s+h-y+g,O=2*(m-f),M=2*(d-p),T=2*(m+f),P=-s-h+y+g;return a[0]=w*i,a[1]=S*i,a[2]=M*i,a[3]=0,a[4]=x*o,a[5]=_*o,a[6]=T*o,a[7]=0,a[8]=E*u,a[9]=O*u,a[10]=P*u,a[11]=0,a[12]=e.x,a[13]=e.y,a[14]=e.z,a[15]=1,a},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,d=new e,f=new e;c.fromCamera=function(t,n){var a=t.eye,i=t.target,o=t.up;e.normalize(e.subtract(i,a,l),l),e.normalize(e.cross(l,o,d),d),e.normalize(e.cross(d,l,f),f);var u=d.x,s=d.y,h=d.z,m=l.x,p=l.y,y=l.z,v=f.x,g=f.y,w=f.z,x=a.x,E=a.y,S=a.z,_=u*-x+s*-E+h*-S,O=v*-x+g*-E+w*-S,M=m*x+p*E+y*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=g,n[6]=-p,n[7]=0,n[8]=h,n[9]=w,n[10]=-y,n[11]=0,n[12]=_,n[13]=O,n[14]=M,n[15]=1,n):new c(u,s,h,_,v,g,w,O,-m,-p,-y,M,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,n,r,a){var i=Math.tan(.5*e),o=1/i,u=o/t,s=(r+n)/(n-r),c=2*r*n/(n-r);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=o,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=s,a[11]=-1,a[12]=0,a[13]=0,a[14]=c,a[15]=0,a},c.computeOrthographicOffCenter=function(e,t,n,r,a,i,o){var u=1/(t-e),s=1/(r-n),c=1/(i-a),l=-(t+e)*u,d=-(r+n)*s,f=-(i+a)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=d,o[14]=f,o[15]=1,o +},c.computePerspectiveOffCenter=function(e,t,n,r,a,i,o){var u=2*a/(t-e),s=2*a/(r-n),c=(t+e)/(t-e),l=(r+n)/(r-n),d=-(i+a)/(i-a),f=-1,h=-2*i*a/(i-a);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=d,o[11]=f,o[12]=0,o[13]=0,o[14]=h,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,n,r,a,i){var o=2*a/(t-e),u=2*a/(r-n),s=(t+e)/(t-e),c=(r+n)/(r-n),l=-1,d=-1,f=-2*a;return i[0]=o,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=u,i[6]=0,i[7]=0,i[8]=s,i[9]=c,i[10]=l,i[11]=d,i[12]=0,i[13]=0,i[14]=f,i[15]=0,i},c.computeViewportTransformation=function(e,t,r,a){e=n(e,n.EMPTY_OBJECT);var i=n(e.x,0),o=n(e.y,0),u=n(e.width,0),s=n(e.height,0);t=n(t,0),r=n(r,1);var c=.5*u,l=.5*s,d=.5*(r-t),f=c,h=l,m=d,p=i+c,y=o+l,v=t+d,g=1;return a[0]=f,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=h,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=m,a[11]=0,a[12]=p,a[13]=y,a[14]=v,a[15]=g,a},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,n){var r=4*t,a=e[r],i=e[r+1],o=e[r+2],u=e[r+3];return n.x=a,n.y=i,n.z=o,n.w=u,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=4*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r[a+3]=n.w,r},c.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n},c.getRow=function(e,t,n){var r=e[t],a=e[t+4],i=e[t+8],o=e[t+12];return n.x=r,n.y=a,n.z=i,n.w=o,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+4]=n.y,r[t+8]=n.z,r[t+12]=n.w,r};var h=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],h)),n.y=e.magnitude(e.fromElements(t[4],t[5],t[6],h)),n.z=e.magnitude(e.fromElements(t[8],t[9],t[10],h)),n};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],d=e[8],f=e[9],h=e[10],m=e[11],p=e[12],y=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],_=t[4],O=t[5],M=t[6],T=t[7],P=t[8],A=t[9],N=t[10],R=t[11],z=t[12],I=t[13],b=t[14],C=t[15],D=r*w+u*x+d*E+p*S,U=a*w+s*x+f*E+y*S,L=i*w+c*x+h*E+v*S,q=o*w+l*x+m*E+g*S,B=r*_+u*O+d*M+p*T,F=a*_+s*O+f*M+y*T,W=i*_+c*O+h*M+v*T,G=o*_+l*O+m*M+g*T,k=r*P+u*A+d*N+p*R,V=a*P+s*A+f*N+y*R,j=i*P+c*A+h*N+v*R,Y=o*P+l*A+m*N+g*R,H=r*z+u*I+d*b+p*C,Z=a*z+s*I+f*b+y*C,X=i*z+c*I+h*b+v*C,J=o*z+l*I+m*b+g*C;return n[0]=D,n[1]=U,n[2]=L,n[3]=q,n[4]=B,n[5]=F,n[6]=W,n[7]=G,n[8]=k,n[9]=V,n[10]=j,n[11]=Y,n[12]=H,n[13]=Z,n[14]=X,n[15]=J,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},c.multiplyTransformation=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],d=e[10],f=e[12],h=e[13],m=e[14],p=t[0],y=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],_=t[10],O=t[12],M=t[13],T=t[14],P=r*p+o*y+c*v,A=a*p+u*y+l*v,N=i*p+s*y+d*v,R=r*g+o*w+c*x,z=a*g+u*w+l*x,I=i*g+s*w+d*x,b=r*E+o*S+c*_,C=a*E+u*S+l*_,D=i*E+s*S+d*_,U=r*O+o*M+c*T+f,L=a*O+u*M+l*T+h,q=i*O+s*M+d*T+m;return n[0]=P,n[1]=A,n[2]=N,n[3]=0,n[4]=R,n[5]=z,n[6]=I,n[7]=0,n[8]=b,n[9]=C,n[10]=D,n[11]=0,n[12]=U,n[13]=L,n[14]=q,n[15]=1,n},c.multiplyByMatrix3=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],d=e[10],f=t[0],h=t[1],m=t[2],p=t[3],y=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=r*f+o*h+c*m,S=a*f+u*h+l*m,_=i*f+s*h+d*m,O=r*p+o*y+c*v,M=a*p+u*y+l*v,T=i*p+s*y+d*v,P=r*g+o*w+c*x,A=a*g+u*w+l*x,N=i*g+s*w+d*x;return n[0]=E,n[1]=S,n[2]=_,n[3]=0,n[4]=O,n[5]=M,n[6]=T,n[7]=0,n[8]=P,n[9]=A,n[10]=N,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n},c.multiplyByTranslation=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=r*e[0]+a*e[4]+i*e[8]+e[12],u=r*e[1]+a*e[5]+i*e[9]+e[13],s=r*e[2]+a*e[6]+i*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=o,n[13]=u,n[14]=s,n[15]=e[15],n};var p=new e;c.multiplyByUniformScale=function(e,t,n){return p.x=t,p.y=t,p.z=t,c.multiplyByScale(e,p,n)},c.multiplyByScale=function(e,t,n){var r=t.x,a=t.y,i=t.z;return 1===r&&1===a&&1===i?c.clone(e,n):(n[0]=r*e[0],n[1]=r*e[1],n[2]=r*e[2],n[3]=0,n[4]=a*e[4],n[5]=a*e[5],n[6]=a*e[6],n[7]=0,n[8]=i*e[8],n[9]=i*e[9],n[10]=i*e[10],n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=1,n)},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=t.w,u=e[0]*r+e[4]*a+e[8]*i+e[12]*o,s=e[1]*r+e[5]*a+e[9]*i+e[13]*o,c=e[2]*r+e[6]*a+e[10]*i+e[14]*o,l=e[3]*r+e[7]*a+e[11]*i+e[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i,u=e[1]*r+e[5]*a+e[9]*i,s=e[2]*r+e[6]*a+e[10]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i+e[12],u=e[1]*r+e[5]*a+e[9]*i+e[13],s=e[2]*r+e[6]*a+e[10]*i+e[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var n=e[1],r=e[2],a=e[3],i=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=i,t[10]=e[10],t[11]=e[14],t[12]=a,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,n){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;var r=e[0],a=e[4],i=e[8],l=e[12],d=e[1],f=e[5],h=e[9],m=e[13],p=e[2],x=e[6],E=e[10],S=e[14],_=e[3],O=e[7],M=e[11],T=e[15],P=E*T,A=S*M,N=x*T,R=S*O,z=x*M,I=E*O,b=p*T,C=S*_,D=p*M,U=E*_,L=p*O,q=x*_,B=P*f+R*h+z*m-(A*f+N*h+I*m),F=A*d+b*h+U*m-(P*d+C*h+D*m),W=N*d+C*f+L*m-(R*d+b*f+q*m),G=I*d+D*f+q*h-(z*d+U*f+L*h),k=A*a+N*i+I*l-(P*a+R*i+z*l),V=P*r+C*i+D*l-(A*r+b*i+U*l),j=R*r+b*a+q*l-(N*r+C*a+L*l),Y=z*r+U*a+L*i-(I*r+D*a+q*i);P=i*m,A=l*h,N=a*m,R=l*f,z=a*h,I=i*f,b=r*m,C=l*d,D=r*h,U=i*d,L=r*f,q=a*d;var H=P*O+R*M+z*T-(A*O+N*M+I*T),Z=A*_+b*M+U*T-(P*_+C*M+D*T),X=N*_+C*O+L*T-(R*_+b*O+q*T),J=I*_+D*O+q*M-(z*_+U*O+L*M),Q=N*E+I*S+A*x-(z*S+P*x+R*E),K=D*S+P*p+C*E-(b*E+U*S+A*p),$=b*x+q*S+R*p-(L*S+N*p+C*x),et=L*E+z*p+U*x-(D*x+q*E+I*p),tt=r*B+a*F+i*W+l*G;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,n[0]=B*tt,n[1]=F*tt,n[2]=W*tt,n[3]=G*tt,n[4]=k*tt,n[5]=V*tt,n[6]=j*tt,n[7]=Y*tt,n[8]=H*tt,n[9]=Z*tt,n[10]=X*tt,n[11]=J*tt,n[12]=Q*tt,n[13]=K*tt,n[14]=$*tt,n[15]=et*tt,n},c.inverseTransformation=function(e,t){var n=e[0],r=e[1],a=e[2],i=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],d=e[12],f=e[13],h=e[14],m=-n*d-r*f-a*h,p=-i*d-o*f-u*h,y=-s*d-c*f-l*h;return t[0]=n,t[1]=i,t[2]=s,t[3]=0,t[4]=r,t[5]=o,t[6]=c,t[7]=0,t[8]=a,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=p,t[14]=y,t[15]=1,t},c.IDENTITY=i(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var a=function(t,n){this.normal=e.clone(t),this.distance=n};a.fromPointNormal=function(n,r,i){var o=-e.dot(r,n);return t(i)?(e.clone(r,i.normal),i.distance=o,i):new a(r,o)};var i=new e;return a.fromCartesian4=function(n,r){var o=e.fromCartesian4(n,i),u=n.w;return t(r)?(e.clone(o,r.normal),r.distance=u,r):new a(o,u)},a.getPointDistance=function(t,n){return e.dot(t.normal,n)+t.distance},a.ORIGIN_XY_PLANE=r(new a(e.UNIT_Z,0)),a.ORIGIN_YZ_PLANE=r(new a(e.UNIT_X,0)),a.ORIGIN_ZX_PLANE=r(new a(e.UNIT_Y,0)),a}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.west=t(e,0),this.south=t(n,0),this.east=t(r,0),this.north=t(a,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.west,n[r++]=e.south,n[r++]=e.east,n[r]=e.north},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.west=e[r++],a.south=e[r++],a.east=e[r++],a.north=e[r],a},s.computeWidth=function(e){var t=e.east,n=e.west;return n>t&&(t+=u.TWO_PI),t-n},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,r,a,i,o){return e=u.toRadians(t(e,0)),r=u.toRadians(t(r,0)),a=u.toRadians(t(a,0)),i=u.toRadians(t(i,0)),n(o)?(o.west=e,o.south=r,o.east=a,o.north=i,o):new s(e,r,a,i)},s.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,a=-Number.MAX_VALUE,i=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];r=Math.min(r,l.longitude),a=Math.max(a,l.longitude),i=Math.min(i,l.latitude),o=Math.max(o,l.latitude)}return n(t)?(t.west=r,t.south=i,t.east=a,t.north=o,t):new s(r,i,a,o)},s.clone=function(e,t){return n(e)?n(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return n(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},s.northwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},s.northeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},s.southeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},s.center=function(t,r){var a=t.east,i=t.west;i>a&&(a+=u.TWO_PI);var o=u.negativePiToPi(.5*(i+a)),s=.5*(t.south+t.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new e(o,s)},s.intersection=function(e,t,r){var a=e.east,i=e.west,o=t.east,c=t.west;i>a&&o>0?a+=u.TWO_PI:c>o&&a>0&&(o+=u.TWO_PI),i>a&&0>c?c+=u.TWO_PI:c>o&&0>i&&(i+=u.TWO_PI);var l=u.negativePiToPi(Math.max(i,c)),d=u.negativePiToPi(Math.min(a,o));if((e.west<e.east||t.west<t.east)&&l>=d)return void 0;var f=Math.max(e.south,t.south),h=Math.min(e.north,t.north);return f>=h?void 0:n(r)?(r.west=l,r.south=f,r.east=d,r.north=h,r):new s(l,f,d,h)},s.contains=function(e,t){var n=t.longitude,r=t.latitude,a=e.west,i=e.east;return a>i&&(i+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>a||u.equalsEpsilon(n,a,u.EPSILON14))&&(i>n||u.equalsEpsilon(n,i,u.EPSILON14))&&r>=e.south&&r<=e.north};var c=new e;return s.subsample=function(e,r,a,o){r=t(r,i.WGS84),a=t(a,0),n(o)||(o=[]);var l=0,d=e.north,f=e.south,h=e.east,m=e.west,p=c;p.height=a,p.longitude=m,p.latitude=d,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=f,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=0>d?d:f>0?f:0;for(var y=1;8>y;++y)p.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,p)&&(o[l]=r.cartographicToCartesian(p,o[l]),l++);return 0===p.latitude&&(p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,n,r,a,i,o,u,s,c,l,d,f){"use strict";var h=function(t,r){this.center=e.clone(n(t,e.ZERO)),this.radius=n(r,0)},m=new e,p=new e,y=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,_=new e,O=new e,M=new e;h.fromPoints=function(t,n){if(r(n)||(n=new h),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;for(var a=e.clone(t[0],x),i=e.clone(a,m),o=e.clone(a,p),u=e.clone(a,y),s=e.clone(a,v),c=e.clone(a,g),l=e.clone(a,w),d=t.length,f=1;d>f;f++){e.clone(t[f],a);var T=a.x,P=a.y,A=a.z;T<i.x&&e.clone(a,i),T>s.x&&e.clone(a,s),P<o.y&&e.clone(a,o),P>c.y&&e.clone(a,c),A<u.z&&e.clone(a,u),A>l.z&&e.clone(a,l)}var N=e.magnitudeSquared(e.subtract(s,i,E)),R=e.magnitudeSquared(e.subtract(c,o,E)),z=e.magnitudeSquared(e.subtract(l,u,E)),I=i,b=s,C=N;R>C&&(C=R,I=o,b=c),z>C&&(C=z,I=u,b=l);var D=S;D.x=.5*(I.x+b.x),D.y=.5*(I.y+b.y),D.z=.5*(I.z+b.z);var U=e.magnitudeSquared(e.subtract(b,D,E)),L=Math.sqrt(U),q=_;q.x=i.x,q.y=o.y,q.z=u.z;var B=O;B.x=s.x,B.y=c.y,B.z=l.z;var F=e.multiplyByScalar(e.add(q,B,E),.5,M),W=0;for(f=0;d>f;f++){e.clone(t[f],a);var G=e.magnitude(e.subtract(a,F,E));G>W&&(W=G);var k=e.magnitudeSquared(e.subtract(a,D,E));if(k>U){var V=Math.sqrt(k);L=.5*(L+V),U=L*L;var j=V-L;D.x=(L*D.x+j*a.x)/V,D.y=(L*D.y+j*a.y)/V,D.z=(L*D.z+j*a.z)/V}}return W>L?(e.clone(D,n.center),n.radius=L):(e.clone(F,n.center),n.radius=W),n};var T=new u,P=new e,A=new e,N=new t,R=new t;h.fromRectangle2D=function(e,t,n){return h.fromRectangleWithHeights2D(e,t,0,0,n)},h.fromRectangleWithHeights2D=function(t,a,i,o,u){if(r(u)||(u=new h),!r(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;a=n(a,T),f.southwest(t,N),N.height=i,f.northeast(t,R),R.height=o;var s=a.project(N,P),c=a.project(R,A),l=c.x-s.x,d=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+d*d+m*m);var p=u.center;return p.x=s.x+.5*l,p.y=s.y+.5*d,p.z=s.z+.5*m,u};var z=[];h.fromRectangle3D=function(e,t,a,i){t=n(t,o.WGS84),a=n(a,0);var u;return r(e)&&(u=f.subsample(e,t,a,z)),h.fromPoints(u,i)},h.fromVertices=function(t,a,i,o){if(r(o)||(o=new h),!r(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;a=n(a,e.ZERO),i=n(i,3);var u=x;u.x=t[0]+a.x,u.y=t[1]+a.y,u.z=t[2]+a.z;for(var s=e.clone(u,m),c=e.clone(u,p),l=e.clone(u,y),d=e.clone(u,v),f=e.clone(u,g),T=e.clone(u,w),P=t.length,A=0;P>A;A+=i){var N=t[A]+a.x,R=t[A+1]+a.y,z=t[A+2]+a.z;u.x=N,u.y=R,u.z=z,N<s.x&&e.clone(u,s),N>d.x&&e.clone(u,d),R<c.y&&e.clone(u,c),R>f.y&&e.clone(u,f),z<l.z&&e.clone(u,l),z>T.z&&e.clone(u,T)}var I=e.magnitudeSquared(e.subtract(d,s,E)),b=e.magnitudeSquared(e.subtract(f,c,E)),C=e.magnitudeSquared(e.subtract(T,l,E)),D=s,U=d,L=I;b>L&&(L=b,D=c,U=f),C>L&&(L=C,D=l,U=T);var q=S;q.x=.5*(D.x+U.x),q.y=.5*(D.y+U.y),q.z=.5*(D.z+U.z);var B=e.magnitudeSquared(e.subtract(U,q,E)),F=Math.sqrt(B),W=_;W.x=s.x,W.y=c.y,W.z=l.z;var G=O;G.x=d.x,G.y=f.y,G.z=T.z;var k=e.multiplyByScalar(e.add(W,G,E),.5,M),V=0;for(A=0;P>A;A+=i){u.x=t[A]+a.x,u.y=t[A+1]+a.y,u.z=t[A+2]+a.z;var j=e.magnitude(e.subtract(u,k,E));j>V&&(V=j);var Y=e.magnitudeSquared(e.subtract(u,q,E));if(Y>B){var H=Math.sqrt(Y);F=.5*(F+H),B=F*F;var Z=H-F;q.x=(F*q.x+Z*u.x)/H,q.y=(F*q.y+Z*u.y)/H,q.z=(F*q.z+Z*u.z)/H}}return V>F?(e.clone(q,o.center),o.radius=F):(e.clone(k,o.center),o.radius=V),o},h.fromCornerPoints=function(t,n,a){r(a)||(a=new h);var i=a.center;return e.add(t,n,i),e.multiplyByScalar(i,.5,i),a.radius=e.distance(i,n),a},h.fromEllipsoid=function(t,n){return r(n)||(n=new h),e.clone(e.ZERO,n.center),n.radius=t.maximumRadius,n};var I=new e;h.fromBoundingSpheres=function(t,n){if(r(n)||(n=new h),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;var a=t.length;if(1===a)return h.clone(t[0],n);if(2===a)return h.union(t[0],t[1],n);for(var i=[],o=0;a>o;o++)i.push(t[o].center);n=h.fromPoints(i,n);var u=n.center,s=n.radius;for(o=0;a>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,I)+c.radius)}return n.radius=s,n},h.clone=function(t,n){return r(t)?r(n)?(n.center=e.clone(t.center,n.center),n.radius=t.radius,n):new h(t.center,t.radius):void 0},h.packedLength=4,h.pack=function(e,t,r){r=n(r,0);var a=e.center;t[r++]=a.x,t[r++]=a.y,t[r++]=a.z,t[r]=e.radius},h.unpack=function(e,t,a){t=n(t,0),r(a)||(a=new h);var i=a.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],a.radius=e[t],a};var b=new e,C=new e;h.union=function(t,n,a){r(a)||(a=new h);var i=t.center,o=t.radius,u=n.center,s=n.radius,c=e.subtract(u,i,b),l=e.magnitude(c);if(o>=l+s)return t.clone(a),a;if(s>=l+o)return n.clone(a),a;var d=.5*(o+l+s),f=e.multiplyByScalar(c,(-o+d)/l,C);return e.add(f,i,f),e.clone(f,a.center),a.radius=d,a};var D=new e;h.expand=function(t,n,r){r=h.clone(t,r);var a=e.magnitude(e.subtract(n,r.center,D));return a>r.radius&&(r.radius=a),r},h.intersectPlane=function(t,n){var r=t.center,a=t.radius,i=n.normal,o=e.dot(i,r)+n.distance;return-a>o?s.OUTSIDE:a>o?s.INTERSECTING:s.INSIDE};var U=new d(new e,0);h.intersect=function(e,t){a("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=d.fromCartesian4(t,U);return h.intersectPlane(e,n)},h.transform=function(e,t,n){return r(n)||(n=new h),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=l.getMaximumScale(t)*e.radius,n};var L=new e;h.distanceSquaredTo=function(t,n){var r=e.subtract(t.center,n,L);return e.magnitudeSquared(r)-t.radius*t.radius},h.transformWithoutScale=function(e,t,n){return r(n)||(n=new h),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var q=new e;h.computePlaneDistances=function(t,n,a,i){r(i)||(i=new c);var o=e.subtract(t.center,n,q),u=e.multiplyByScalar(a,e.dot(a,o),q),s=e.magnitude(u);return i.start=s-t.radius,i.stop=s+t.radius,i};for(var B=new e,F=new e,W=new e,G=new e,k=new e,V=new t,j=new Array(8),Y=0;8>Y;++Y)j[Y]=new e;var H=new u;return h.projectTo2D=function(t,r,a){r=n(r,H);var i=r.ellipsoid,o=t.center,u=t.radius,s=i.geodeticSurfaceNormal(o,B),c=e.cross(e.UNIT_Z,s,F);e.normalize(c,c);var l=e.cross(s,c,W);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var d=e.negate(l,k),f=e.negate(c,G),m=j,p=m[0];e.add(s,l,p),e.add(p,c,p),p=m[1],e.add(s,l,p),e.add(p,f,p),p=m[2],e.add(s,d,p),e.add(p,f,p),p=m[3],e.add(s,d,p),e.add(p,c,p),e.negate(s,s),p=m[4],e.add(s,l,p),e.add(p,c,p),p=m[5],e.add(s,l,p),e.add(p,f,p),p=m[6],e.add(s,d,p),e.add(p,f,p),p=m[7],e.add(s,d,p),e.add(p,c,p);for(var y=m.length,v=0;y>v;++v){var g=m[v];e.add(o,g,g);var w=i.cartesianToCartographic(g,V);r.project(w,g)}a=h.fromPoints(m,a),o=a.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,a},h.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&t.radius===n.radius},h.prototype.intersectPlane=function(e){return h.intersectPlane(this,e)},h.prototype.intersect=function(e){return h.intersect(this,e)},h.prototype.equals=function(e){return h.equals(this,e)},h.prototype.clone=function(e){return h.clone(this,e)},h}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},a={};return t(a,{element:{get:function(){return a.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return a.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return a.supportsFullscreen()?null!==a.element:void 0}}}),a.supportsFullscreen=function(){if(e(n))return n;n=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var a,i=["webkit","moz","o","ms","khtml"],o=0,u=i.length;u>o;++o){var s=i[o];a=s+"RequestFullscreen","function"==typeof t[a]?(r.requestFullscreen=a,n=!0):(a=s+"RequestFullScreen","function"==typeof t[a]&&(r.requestFullscreen=a,n=!0)),a=s+"ExitFullscreen","function"==typeof document[a]?r.exitFullscreen=a:(a=s+"CancelFullScreen","function"==typeof document[a]&&(r.exitFullscreen=a)),a=s+"FullscreenEnabled",e(document[a])?r.fullscreenEnabled=a:(a=s+"FullScreenEnabled",e(document[a])&&(r.fullscreenEnabled=a)),a=s+"FullscreenElement",e(document[a])?r.fullscreenElement=a:(a=s+"FullScreenElement",e(document[a])&&(r.fullscreenElement=a)),a=s+"fullscreenchange",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenChange"),r.fullscreenchange=a),a=s+"fullscreenerror",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenError"),r.fullscreenerror=a)}return n},a.requestFullscreen=function(e){a.supportsFullscreen()&&e[r.requestFullscreen]()},a.exitFullscreen=function(){a.supportsFullscreen()&&document[r.exitFullscreen]()},a}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,n){"use strict";function r(e){for(var t=e.split("."),n=0,r=t.length;r>n;++n)t[n]=parseInt(t[n],10);return t}function a(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=r(e[1]))}return y}function i(){return a()&&v}function o(){if(!t(g)&&(g=!1,!a()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=r(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=r(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,_=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,_=r(e[1])))}return S}function d(){return l()&&_}function f(){if(!t(O)){O=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(O=!0,M=r(e[1]))}return O}function h(){return t(T)||(T=/Windows/i.test(navigator.appVersion)),T}function m(){return f()&&M}function p(){return t(P)||(P=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),P}var y,v,g,w,x,E,S,_,O,M,T,P,A={isChrome:a,chromeVersion:i,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:d,isFirefox:f,firefoxVersion:m,isWindows:h,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return A.supportsFullscreen=function(){return n.supportsFullscreen()},A.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},A.supportsWebWorkers=function(){return"undefined"!=typeof Worker},A}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,n,r,a){"use strict";if(!r.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(e){switch(e){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},i.fromTypedArray=function(e){return e instanceof Int8Array?i.BYTE:e instanceof Uint8Array?i.UNSIGNED_BYTE:e instanceof Int16Array?i.SHORT:e instanceof Uint16Array?i.UNSIGNED_SHORT:e instanceof Float32Array?i.FLOAT:e instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(e){return t(e)&&(e===i.BYTE||e===i.UNSIGNED_BYTE||e===i.SHORT||e===i.UNSIGNED_SHORT||e===i.FLOAT||e===i.DOUBLE)},i.createTypedArray=function(e,t){switch(e){case i.BYTE:return new Int8Array(t);case i.UNSIGNED_BYTE:return new Uint8Array(t);case i.SHORT:return new Int16Array(t);case i.UNSIGNED_SHORT:return new Uint16Array(t);case i.FLOAT:return new Float32Array(t);case i.DOUBLE:return new Float64Array(t);default:throw new n("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(t,r,a,o){switch(a=e(a,0),o=e(o,(r.byteLength-a)/i.getSizeInBytes(t)),t){case i.BYTE:return new Int8Array(r,a,o);case i.UNSIGNED_BYTE:return new Uint8Array(r,a,o);case i.SHORT:return new Int16Array(r,a,o);case i.UNSIGNED_SHORT:return new Uint16Array(r,a,o);case i.FLOAT:return new Float32Array(r,a,o);case i.DOUBLE:return new Float64Array(r,a,o);default:throw new n("componentDatatype is not a valid value.")}},a(i)}),define("Core/CornerType",["./freezeObject"],function(e){"use strict";var t={ROUNDED:0,MITERED:1,BEVELED:2};return e(t)}),define("Core/isArray",["./defined"],function(e){"use strict";var t=Array.isArray;return e(t)||(t=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(e){var t=e._uSquared,n=e._ellipsoid.maximumRadius,r=e._ellipsoid.minimumRadius,a=(n-r)/n,i=Math.cos(e._startHeading),o=Math.sin(e._startHeading),u=(1-a)*Math.tan(e._start.latitude),s=1/Math.sqrt(1+u*u),c=s*u,l=Math.atan2(u,i),d=s*o,f=d*d,h=1-f,m=Math.sqrt(h),p=t/4,y=p*p,v=y*p,g=y*y,w=1+p-3*y/4+5*v/4-175*g/64,x=1-p+15*y/8-35*v/8,E=1-3*p+35*y/4,S=1-5*p,_=w*l-x*Math.sin(2*l)*p/2-E*Math.sin(4*l)*y/16-S*Math.sin(6*l)*v/48-5*Math.sin(8*l)*g/512,O=e._constants;O.a=n,O.b=r,O.f=a,O.cosineHeading=i,O.sineHeading=o,O.tanU=u,O.cosineU=s,O.sineU=c,O.sigma=l,O.sineAlpha=d,O.sineSquaredAlpha=f,O.cosineSquaredAlpha=h,O.cosineAlpha=m,O.u2Over4=p,O.u4Over16=y,O.u6Over64=v,O.u8Over256=g,O.a0=w,O.a1=x,O.a2=E,O.a3=S,O.distanceRatio=_}function c(e,t){return e*t*(4+e*(4-3*t))/16}function l(e,t,n,r,a,i,o){var u=c(e,n);return(1-u)*e*t*(r+u*a*(o+u*i*(2*o*o-1)))}function d(e,t,n,r,a,i,o){var s,c,d,f,h,m=(t-n)/t,p=i-r,y=Math.atan((1-m)*Math.tan(a)),v=Math.atan((1-m)*Math.tan(o)),g=Math.cos(y),w=Math.sin(y),x=Math.cos(v),E=Math.sin(v),S=g*x,_=g*E,O=w*E,M=w*x,T=p,P=u.TWO_PI,A=Math.cos(T),N=Math.sin(T);do{A=Math.cos(T),N=Math.sin(T);var R=_-M*A;d=Math.sqrt(x*x*N*N+R*R),c=O+S*A,s=Math.atan2(d,c);var z;0===d?(z=0,f=1):(z=S*N/d,f=1-z*z),P=T,h=c-2*O/f,isNaN(h)&&(h=0),T=p+l(m,z,f,s,d,c,h)}while(Math.abs(T-P)>u.EPSILON12);var I=f*(t*t-n*n)/(n*n),b=1+I*(4096+I*(I*(320-175*I)-768))/16384,C=I*(256+I*(I*(74-47*I)-128))/1024,D=h*h,U=C*d*(h+C*(c*(2*D-1)-C*h*(4*d*d-3)*(4*D-3)/6)/4),L=n*b*(s-U),q=Math.atan2(x*N,_-M*A),B=Math.atan2(g*N,_*A-M);e._distance=L,e._startHeading=q,e._endHeading=B,e._uSquared=I}function f(n,r,a,i){e.normalize(i.cartographicToCartesian(r,m),h),e.normalize(i.cartographicToCartesian(a,m),m),d(n,i.maximumRadius,i.minimumRadius,r.longitude,r.latitude,a.longitude,a.latitude),n._start=t.clone(r,n._start),n._end=t.clone(a,n._end),n._start.height=0,n._end.height=0,s(n)}var h=new e,m=new e,p=function(e,a,i){var u=n(i,o.WGS84);this._ellipsoid=u,this._start=new t,this._end=new t,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,r(e)&&r(a)&&f(this,e,a,u)};return a(p.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),p.prototype.setEndPoints=function(e,t){f(this,e,t,this._ellipsoid)},p.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)},p.prototype.interpolateUsingSurfaceDistance=function(e,n){var a=this._constants,i=a.distanceRatio+e/a.b,o=Math.cos(2*i),u=Math.cos(4*i),s=Math.cos(6*i),c=Math.sin(2*i),d=Math.sin(4*i),f=Math.sin(6*i),h=Math.sin(8*i),m=i*i,p=i*m,y=a.u8Over256,v=a.u2Over4,g=a.u6Over64,w=a.u4Over16,x=2*p*y*o/3+i*(1-v+7*w/4-15*g/4+579*y/64-(w-15*g/4+187*y/16)*o-(5*g/4-115*y/16)*u-29*y*s/16)+(v/2-w+71*g/32-85*y/16)*c+(5*w/16-5*g/4+383*y/96)*d-m*((g-11*y/2)*c+5*y*d/2)+(29*g/96-29*y/16)*f+539*y*h/1536,E=Math.asin(Math.sin(x)*a.cosineAlpha),S=Math.atan(a.a/a.b*Math.tan(E));x-=a.sigma;var _=Math.cos(2*a.sigma+x),O=Math.sin(x),M=Math.cos(x),T=a.cosineU*M,P=a.sineU*O,A=Math.atan2(O*a.sineHeading,T-P*a.cosineHeading),N=A-l(a.f,a.sineAlpha,a.cosineSquaredAlpha,x,O,M,_);return r(n)?(n.longitude=this._start.longitude+N,n.latitude=S,n.height=0,n):new t(this._start.longitude+N,S,0)},p}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict"; +function n(e,n,r){var a=e+n;return t.sign(e)!==t.sign(n)&&Math.abs(a/Math.max(Math.abs(e),Math.abs(n)))<r?0:a}var r={};return r.computeDiscriminant=function(e,t,n){var r=t*t-4*e*n;return r},r.computeRealRoots=function(e,r,a){var i;if(0===e)return 0===r?[]:[-a/r];if(0===r){if(0===a)return[0,0];var o=Math.abs(a),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(i=-a/e,0>i)return[];var s=Math.sqrt(i);return[-s,s]}if(0===a)return i=-r/e,0>i?[i,0]:[0,i];var c=r*r,l=4*e*a,d=n(c,-l,t.EPSILON14);if(0>d)return[];var f=-.5*n(r,t.sign(r)*Math.sqrt(d),t.EPSILON14);return r>0?[f/e,a/f]:[a/f,f/e]},r}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function n(e,t,n,r){var a,i,o=e,u=t/3,s=n/3,c=r,l=o*s,d=u*c,f=u*u,h=s*s,m=o*s-f,p=o*c-u*s,y=u*c-h,v=4*m*y-p*p;if(0>v){var g,w,x;f*d>=l*h?(g=o,w=m,x=-2*u*m+o*p):(g=c,w=y,x=-c*p+2*s*y);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);i=-x+S;var _=i/2,O=0>_?-Math.pow(-_,1/3):Math.pow(_,1/3),M=i===S?-O:-w/O;return a=0>=w?O+M:-x/(O*O+M*M+w),f*d>=l*h?[(a-u)/o]:[-c/(a+s)]}var T=m,P=-2*u*m+o*p,A=y,N=-c*p+2*s*y,R=Math.sqrt(v),z=Math.sqrt(3)/2,I=Math.abs(Math.atan2(o*R,-P)/3);a=2*Math.sqrt(-T);var b=Math.cos(I);i=a*b;var C=a*(-b/2-z*Math.sin(I)),D=i+C>2*u?i-u:C-u,U=o,L=D/U;I=Math.abs(Math.atan2(c*R,-N)/3),a=2*Math.sqrt(-A),b=Math.cos(I),i=a*b,C=a*(-b/2-z*Math.sin(I));var q=-c,B=2*s>i+C?i+s:C+s,F=q/B,W=U*B,G=-D*B-U*q,k=D*q,V=(s*G-u*k)/(-u*G+s*W);return V>=L?F>=L?F>=V?[L,V,F]:[L,F,V]:[F,L,V]:F>=L?[V,L,F]:F>=V?[V,F,L]:[F,V,L]}var r={};return r.computeDiscriminant=function(e,t,n,r){var a=e*e,i=t*t,o=n*n,u=r*r,s=18*e*t*n*r+i*o-27*a*u-4*(e*o*n+i*t*r);return s},r.computeRealRoots=function(e,r,a,i){var o,u;if(0===e)return t.computeRealRoots(r,a,i);if(0===r){if(0===a){if(0===i)return[0,0,0];u=-i/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===i?(o=t.computeRealRoots(e,0,a),0===o.Length?[0]:[o[0],0,o[1]]):n(e,0,a,i)}return 0===a?0===i?(u=-r/e,0>u?[u,0,0]:[0,0,u]):n(e,r,0,i):0===i?(o=t.computeRealRoots(e,r,a),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):n(e,r,a,i)},r}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,n,r){"use strict";function a(t,a,i,o){var u=t*t,s=a-3*u/8,c=i-a*t/2+u*t/8,l=o-i*t/4+a*u/16-3*u*u/256,d=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(d.length>0){var f=-t/4,h=d[d.length-1];if(Math.abs(h)<n.EPSILON14){var m=r.computeRealRoots(1,s,l);if(2===m.length){var p,y=m[0],v=m[1];if(y>=0&&v>=0){var g=Math.sqrt(y),w=Math.sqrt(v);return[f-w,f-g,f+g,f+w]}if(y>=0&&0>v)return p=Math.sqrt(y),[f-p,f+p];if(0>y&&v>=0)return p=Math.sqrt(v),[f-p,f+p]}return[]}if(h>0){var x=Math.sqrt(h),E=(s+h-c/x)/2,S=(s+h+c/x)/2,_=r.computeRealRoots(1,x,E),O=r.computeRealRoots(1,-x,S);return 0!==_.length?(_[0]+=f,_[1]+=f,0!==O.length?(O[0]+=f,O[1]+=f,_[1]<=O[0]?[_[0],_[1],O[0],O[1]]:O[1]<=_[0]?[O[0],O[1],_[0],_[1]]:_[0]>=O[0]&&_[1]<=O[1]?[O[0],_[0],_[1],O[1]]:O[0]>=_[0]&&O[1]<=_[1]?[_[0],O[0],O[1],_[1]]:_[0]>O[0]&&_[0]<O[1]?[O[0],_[0],O[1],_[1]]:[_[0],O[0],_[1],O[1]]):_):0!==O.length?(O[0]+=f,O[1]+=f,O):[]}}return[]}function i(t,a,i,o){var u=i*i,s=a*a,c=t*t,l=-2*a,d=i*t+s-4*o,f=c*o-i*a*t+u,h=e.computeRealRoots(1,l,d,f);if(h.length>0){var m,p,y=h[0],v=a-y,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),_=c-4*y,O=c+4*Math.abs(y);if(0>y||_*S>E*O){var M=Math.sqrt(_);m=M/2,p=0===M?0:(t*x-i)/M}else{var T=Math.sqrt(E);m=0===T?0:(t*x-i)/T,p=T/2}var P,A;0===w&&0===m?(P=0,A=0):n.sign(w)===n.sign(m)?(P=w+m,A=y/P):(A=w-m,P=y/A);var N,R;0===x&&0===p?(N=0,R=0):n.sign(x)===n.sign(p)?(N=x+p,R=o/N):(R=x-p,N=o/R);var z=r.computeRealRoots(1,P,N),I=r.computeRealRoots(1,A,R);if(0!==z.length)return 0!==I.length?z[1]<=I[0]?[z[0],z[1],I[0],I[1]]:I[1]<=z[0]?[I[0],I[1],z[0],z[1]]:z[0]>=I[0]&&z[1]<=I[1]?[I[0],z[0],z[1],I[1]]:I[0]>=z[0]&&I[1]<=z[1]?[z[0],I[0],I[1],z[1]]:z[0]>I[0]&&z[0]<I[1]?[I[0],z[0],I[1],z[1]]:[z[0],I[0],z[1],I[1]]:z;if(0!==I.length)return I}return[]}var o={};return o.computeDiscriminant=function(e,t,n,r,a){var i=e*e,o=i*e,u=t*t,s=u*t,c=n*n,l=c*n,d=r*r,f=d*r,h=a*a,m=h*a,p=u*c*d-4*s*f-4*e*l*d+18*e*t*n*f-27*i*d*d+256*o*m+a*(18*s*n*r-4*u*l+16*e*c*c-80*e*t*c*r-6*e*u*d+144*i*n*d)+h*(144*e*u*n-27*u*u-128*i*c-192*i*t*r);return p},o.computeRealRoots=function(t,r,o,u,s){if(Math.abs(t)<n.EPSILON15)return e.computeRealRoots(r,o,u,s);var c=r/t,l=o/t,d=u/t,f=s/t,h=0>c?1:0;switch(h+=0>l?h+1:h,h+=0>d?h+1:h,h+=0>f?h+1:h){case 0:return a(c,l,d,f);case 1:return i(c,l,d,f);case 2:return i(c,l,d,f);case 3:return a(c,l,d,f);case 4:return a(c,l,d,f);case 5:return i(c,l,d,f);case 6:return a(c,l,d,f);case 7:return a(c,l,d,f);case 8:return i(c,l,d,f);case 9:return a(c,l,d,f);case 10:return a(c,l,d,f);case 11:return i(c,l,d,f);case 12:return a(c,l,d,f);case 13:return a(c,l,d,f);case 14:return a(c,l,d,f);case 15:return a(c,l,d,f);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=function(n,r){r=e.clone(t(r,e.ZERO)),e.equals(r,e.ZERO)||e.normalize(r,r),this.origin=e.clone(t(n,e.ZERO)),this.direction=r};return r.getPoint=function(t,r,a){return n(a)||(a=new e),a=e.multiplyByScalar(t.direction,r,a),e.add(t.origin,a,a)},r}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(t,r,a,o,u){u=n(u,!1);var s,c,l,d,f,h=t.origin,m=t.direction,p=e.subtract(a,r,y),E=e.subtract(o,r,v),S=e.cross(m,E,g),_=e.dot(p,S);if(u){if(_<i.EPSILON6)return void 0;if(s=e.subtract(h,r,w),l=e.dot(s,S),0>l||l>_)return void 0;if(c=e.cross(s,p,x),d=e.dot(m,c),0>d||l+d>_)return void 0;f=e.dot(E,c)/_}else{if(Math.abs(_)<i.EPSILON6)return void 0;var O=1/_;if(s=e.subtract(h,r,w),l=e.dot(s,S)*O,0>l||l>1)return void 0;if(c=e.cross(s,p,x),d=e.dot(m,c)*O,0>d||l+d>1)return void 0;f=e.dot(E,c)*O}return f}function d(e,t,n,r){var a=t*t-4*e*n;if(0>a)return void 0;if(a>0){var i=1/(2*e),o=Math.sqrt(a),u=(-t+o)*i,s=(-t-o)*i;return s>u?(r.root0=u,r.root1=s):(r.root0=s,r.root1=u),r}var c=-t/(2*e);return 0===c?void 0:(r.root0=r.root1=c,r)}function f(t,n,a){r(a)||(a={});var i=t.origin,o=t.direction,u=n.center,s=n.radius*n.radius,c=e.subtract(i,u,g),l=e.dot(o,o),f=2*e.dot(o,c),h=e.magnitudeSquared(c)-s,m=d(l,f,h,S);return r(m)?(a.start=m.root0,a.stop=m.root1,a):void 0}function h(e,t,n){var r=e+t;return i.sign(e)!==i.sign(t)&&Math.abs(r/Math.max(Math.abs(e),Math.abs(t)))<n?0:r}function m(t,n,r,a,c){var l,d=a*a,f=c*c,m=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*f,p=c*(a*h(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],i.EPSILON15)+n.y),y=t[o.COLUMN0ROW0]*d+t[o.COLUMN2ROW2]*f+a*n.x+r,v=f*h(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],i.EPSILON15),g=c*(a*h(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+n.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(m,p,y),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(a,c*x,c*-E)),w.push(new e(a,c*x,c*E)),2===l.length){var S=l[1],_=Math.sqrt(Math.max(1-S*S,0));w.push(new e(a,c*S,c*-_)),w.push(new e(a,c*S,c*_))}return w}var O=g*g,M=v*v,T=m*m,P=g*v,A=T+M,N=2*(p*m+P),R=2*y*m+p*p-M+O,z=2*(y*p-P),I=y*y-O;if(0===A&&0===N&&0===R&&0===z)return w;l=s.computeRealRoots(A,N,R,z,I);var b=l.length;if(0===b)return w;for(var C=0;b>C;++C){var D,U=l[C],L=U*U,q=Math.max(1-L,0),B=Math.sqrt(q);D=i.sign(m)===i.sign(y)?h(m*L+y,p*U,i.EPSILON12):i.sign(y)===i.sign(p*U)?h(m*L,p*U+y,i.EPSILON12):h(m*L+p*U,y,i.EPSILON12);var F=h(v*U,g,i.EPSILON15),W=D*F;0>W?w.push(new e(a,c*U,c*B)):W>0?w.push(new e(a,c*U,c*-B)):0!==B?(w.push(new e(a,c*U,c*-B)),w.push(new e(a,c*U,c*B)),++C):w.push(new e(a,c*U,c*B))}return w}var p={};p.rayPlane=function(t,n,a){r(a)||(a=new e);var o=t.origin,u=t.direction,s=n.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON15)return void 0;var l=(-n.distance-e.dot(s,o))/c;return 0>l?void 0:(a=e.multiplyByScalar(u,l,a),e.add(o,a,a))};var y=new e,v=new e,g=new e,w=new e,x=new e;p.rayTriangle=function(t,n,a,i,o,u){var s=l(t,n,a,i,o);return!r(s)||0>s?void 0:(r(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;p.lineSegmentTriangle=function(t,n,a,i,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(n,t,c.direction),e.normalize(c.direction,c.direction);var d=l(c,a,i,o,u);return!r(d)||0>d||d>e.distance(t,n)?void 0:(r(s)||(s=new e),e.multiplyByScalar(c.direction,d,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};p.raySphere=function(e,t,n){return n=f(e,t,n),!r(n)||n.stop<0?void 0:(n.start=Math.max(n.start,0),n)};var _=new c;p.lineSegmentSphere=function(t,n,a,i){var o=_;e.clone(t,o.origin);var u=e.subtract(n,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),i=f(o,a,i),!r(i)||i.stop<0||i.start>s?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i)};var O=new e,M=new e;p.rayEllipsoid=function(t,n){var r,a,i,o,u,s=n.oneOverRadii,c=e.multiplyComponents(s,t.origin,O),l=e.multiplyComponents(s,t.direction,M),d=e.magnitudeSquared(c),f=e.dot(c,l);if(d>1){if(f>=0)return void 0;var h=f*f;if(r=d-1,a=e.magnitudeSquared(l),i=a*r,i>h)return void 0;if(h>i){o=f*f-i,u=-f+Math.sqrt(o);var m=u/a,p=r/u;return p>m?{start:m,stop:p}:{start:p,stop:m}}var y=Math.sqrt(r/a);return{start:y,stop:y}}return 1>d?(r=d-1,a=e.magnitudeSquared(l),i=a*r,o=f*f-i,u=-f+Math.sqrt(o),{start:0,stop:u/a}):0>f?(a=e.magnitudeSquared(l),{start:0,stop:-f/a}):void 0};var T=new e,P=new e,A=new e,N=new e,R=new e,z=new o,I=new o,b=new o,C=new o,D=new o,U=new o,L=new o,q=new e,B=new e,F=new t;p.grazingAltitudeLocation=function(t,n){var a=t.origin,u=t.direction,s=n.geodeticSurfaceNormal(a,T);if(e.dot(u,s)>=0)return a;var c=r(this.rayEllipsoid(t,n)),l=n.transformPositionToScaledSpace(u,T),d=e.normalize(l,l),f=e.mostOrthogonalAxis(l,N),h=e.normalize(e.cross(f,d,P),P),p=e.normalize(e.cross(d,h,A),A),y=z;y[0]=d.x,y[1]=d.y,y[2]=d.z,y[3]=h.x,y[4]=h.y,y[5]=h.z,y[6]=p.x,y[7]=p.y,y[8]=p.z;var v=o.transpose(y,I),g=o.fromScale(n.radii,b),w=o.fromScale(n.oneOverRadii,C),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,_=o.multiply(o.multiply(v,w,U),x,U),O=o.multiply(o.multiply(_,g,L),y,L),M=o.multiplyByVector(_,a,R),W=m(O,e.negate(M,T),0,0,1),G=W.length;if(G>0){for(var k=e.clone(e.ZERO,B),V=Number.NEGATIVE_INFINITY,j=0;G>j;++j){E=o.multiplyByVector(g,o.multiplyByVector(y,W[j],q),q);var Y=e.normalize(e.subtract(E,a,N),N),H=e.dot(Y,u);H>V&&(V=H,k=e.clone(E,k))}var Z=n.cartesianToCartographic(k,F);return V=i.clamp(V,0,1),S=e.magnitude(e.subtract(k,a,N))*Math.sqrt(1-V*V),S=c?-S:S,Z.height=S,n.cartographicToCartesian(Z,new e)}return void 0};var W=new e;return p.lineSegmentPlane=function(t,n,a,o){r(o)||(o=new e);var u=e.subtract(n,t,W),s=a.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON6)return void 0;var l=e.dot(s,t),d=-(a.distance+l)/c;return 0>d||d>1?void 0:(e.multiplyByScalar(u,d,o),e.add(t,o,o),o)},p.trianglePlaneIntersection=function(t,n,r,a){var i=a.normal,o=a.distance,u=e.dot(i,t)+o<0,s=e.dot(i,n)+o<0,c=e.dot(i,r)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var d,f;if((1===l||2===l)&&(d=new e,f=new e),1===l){if(u)return p.lineSegmentPlane(t,n,a,d),p.lineSegmentPlane(t,r,a,f),{positions:[t,n,r,d,f],indices:[0,3,4,1,2,4,1,4,3]};if(s)return p.lineSegmentPlane(n,r,a,d),p.lineSegmentPlane(n,t,a,f),{positions:[t,n,r,d,f],indices:[1,3,4,2,0,4,2,4,3]};if(c)return p.lineSegmentPlane(r,t,a,d),p.lineSegmentPlane(r,n,a,f),{positions:[t,n,r,d,f],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return p.lineSegmentPlane(n,t,a,d),p.lineSegmentPlane(r,t,a,f),{positions:[t,n,r,d,f],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return p.lineSegmentPlane(r,n,a,d),p.lineSegmentPlane(t,n,a,f),{positions:[t,n,r,d,f],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return p.lineSegmentPlane(t,r,a,d),p.lineSegmentPlane(n,r,a,f),{positions:[t,n,r,d,f],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(e,t,n,r,a,i,o,u,s,c,l,d){"use strict";function f(e,t,n){var r=O;r.length=e;var a;if(t===n){for(a=0;e>a;a++)r[a]=t;return r}var i=n-t,o=i/e;for(a=0;e>a;a++){var u=t+a*o;r[a]=u}return r}function h(t,n,r,a,i,o,u,s){var c=a.scaleToGeodeticSurface(t,A),l=a.scaleToGeodeticSurface(n,N),d=m.numberOfPoints(t,n,r),h=a.cartesianToCartographic(c,M),p=a.cartesianToCartographic(l,T),y=f(d,i,o);R.setEndPoints(h,p);var v=R.surfaceDistance/d,g=s;h.height=i;var w=a.cartographicToCartesian(h,P);e.pack(w,u,g),g+=3;for(var x=1;d>x;x++){var E=R.interpolateUsingSurfaceDistance(x*v,T);E.height=y[x],w=a.cartographicToCartesian(E,P),e.pack(w,u,g),g+=3}return g}var m={};m.numberOfPoints=function(t,n,r){var a=e.distance(t,n);return Math.ceil(a/r)};var p=new t;m.extractHeights=function(e,t){for(var n=e.length,r=new Array(n),a=0;n>a;a++){var i=e[a];r[a]=t.cartesianToCartographic(i,p).height}return r};var y=new l,v=new e,g=new e,w=new d(e.ZERO,0),x=new e,E=new d(e.ZERO,0),S=new e,_=new e,O=[],M=new t,T=new t,P=new e,A=new e,N=new e,R=new o;m.wrapLongitude=function(t,a){var i=[],o=[];if(r(t)&&t.length>0){a=n(a,l.IDENTITY);var s=l.inverseTransformation(a,y),c=l.multiplyByPoint(s,e.ZERO,v),f=l.multiplyByPointAsVector(s,e.UNIT_Y,g),h=d.fromPointNormal(c,f,w),m=l.multiplyByPointAsVector(s,e.UNIT_X,x),p=d.fromPointNormal(c,m,E),O=1;i.push(e.clone(t[0]));for(var M=i[0],T=t.length,P=1;T>P;++P){var A=t[P];if(d.getPointDistance(p,M)<0||d.getPointDistance(p,A)<0){var N=u.lineSegmentPlane(M,A,h,S);if(r(N)){var R=e.multiplyByScalar(f,5e-9,_);d.getPointDistance(h,M)<0&&e.negate(R,R),i.push(e.add(N,R,new e)),o.push(O+1),e.negate(R,R),i.push(e.add(N,R,new e)),O=1}}i.push(e.clone(t[P])),O++,M=A}o.push(O)}return{positions:i,lengths:o}};var z=c.EPSILON7;return m.removeDuplicates=function(t){var n=t.length;if(2>n)return t;var r,a,i;for(r=1;n>r&&(a=t[r-1],i=t[r],!e.equalsEpsilon(a,i,z));++r);if(r===n)return t;for(var o=t.slice(0,r);n>r;++r)i=t[r],e.equalsEpsilon(a,i,z)||(o.push(e.clone(i)),a=i);return o},m.generateArc=function(t){r(t)||(t={});var a=t.positions,o=a.length,u=n(t.ellipsoid,i.WGS84),l=n(t.height,0);if(1>o)return[];if(1===o){var d=u.scaleToGeodeticSurface(a[0],A);if(0!==l){var f=u.geodeticSurfaceNormal(d,P);e.multiplyByScalar(f,l,f),e.add(d,f,d)}return[d.x,d.y,d.z]}var p=t.minDistance;if(!r(p)){var y=n(t.granularity,c.RADIANS_PER_DEGREE);p=c.chordLength(y,u.maximumRadius)}var v,g=0;for(v=0;o-1>v;v++)g+=m.numberOfPoints(a[v],a[v+1],p);var w=3*(g+1),x=new Array(w),E=0,S=s(l);for(v=0;o-1>v;v++){var _=a[v],T=a[v+1],N=S?l[v]:l,R=S?l[v+1]:l;E=h(_,T,p,u,N,R,x,E)}O.length=0;var z=a[o-1],I=u.cartesianToCartographic(z,M);I.height=S?l[o-1]:l;var b=u.cartographicToCartesian(I,P);return e.pack(b,x,w-3),x},m.generateCartesianArc=function(t){for(var n=m.generateArc(t),r=n.length/3,a=new Array(r),i=0;r>i;i++)a[i]=e.unpack(n,3*i);return a},m}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n){this.x=e(t,0),this.y=e(n,0)};i.fromElements=function(e,n,r){return t(r)?(r.x=e,r.y=n,r):new i(e,n)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n):new i(e.x,e.y):void 0},i.fromCartesian3=i.clone,i.fromCartesian4=i.clone,i.packedLength=2,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r]=t.y},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y)},i.minimumComponent=function(e){return Math.min(e.x,e.y)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i,c=new i;i.angleBetween=function(e,t){return i.normalize(e,s),i.normalize(t,c),a.acosClamped(i.dot(s,c))};var l=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Y,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)},i.ZERO=r(new i(0,0)),i.UNIT_X=r(new i(1,0)),i.UNIT_Y=r(new i(0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+")"},i}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,n,r,a,i,o){"use strict";var u=function(r,a,i){this.minimum=e.clone(t(r,e.ZERO)),this.maximum=e.clone(t(a,e.ZERO)),n(i)?i=e.clone(i):(i=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(i,.5,i)),this.center=i};u.fromPoints=function(t,r){if(n(r)||(r=new u),!n(t)||0===t.length)return r.minimum=e.clone(e.ZERO,r.minimum),r.maximum=e.clone(e.ZERO,r.maximum),r.center=e.clone(e.ZERO,r.center),r;for(var a=t[0].x,i=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,d=t.length,f=1;d>f;f++){var h=t[f],m=h.x,p=h.y,y=h.z;a=Math.min(m,a),s=Math.max(m,s),i=Math.min(p,i),c=Math.max(p,c),o=Math.min(y,o),l=Math.max(y,l)}var v=r.minimum;v.x=a,v.y=i,v.z=o;var g=r.maximum;g.x=s,g.y=c,g.z=l;var w=e.add(v,g,r.center);return e.multiplyByScalar(w,.5,w),r},u.clone=function(t,r){return n(t)?n(r)?(r.minimum=e.clone(t.minimum,r.minimum),r.maximum=e.clone(t.maximum,r.maximum),r.center=e.clone(t.center,r.center),r):new u(t.minimum,t.maximum):void 0},u.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&e.equals(t.minimum,r.minimum)&&e.equals(t.maximum,r.maximum)};var s=new e;u.intersectPlane=function(t,n){s=e.subtract(t.maximum,t.minimum,s);var r=e.multiplyByScalar(s,.5,s),a=n.normal,o=r.x*Math.abs(a.x)+r.y*Math.abs(a.y)+r.z*Math.abs(a.z),u=e.dot(t.center,a)+n.distance;return u-o>0?i.INSIDE:0>u+o?i.OUTSIDE:i.INTERSECTING};var c=new o(new e,0);return u.intersect=function(e,t){r("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var n=o.fromCartesian4(t,c);return u.intersectPlane(e,n)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,n,r,a){return t(e).then(n,r,a)}function t(e){var t,n;return e instanceof r?t=e:u(e)?(n=o(),e.then(function(e){n.resolve(e)},function(e){n.reject(e)},function(e){n.progress(e)}),t=n.promise):t=a(e),t}function n(t){return e(t,i)}function r(e){this.then=e}function a(e){var n=new r(function(n){try{return t(n?n(e):e)}catch(r){return i(r)}});return n}function i(e){var n=new r(function(n,r){try{return r?t(r(e)):i(e)}catch(a){return i(a)}});return n}function o(){function e(e,t,n){return f(e,t,n)}function n(e){return m(e)}function a(e){return m(i(e))}function u(e){return h(e)}var s,c,l,d,f,h,m;return c=new r(e),s={then:e,resolve:n,reject:a,progress:u,promise:c,resolver:{resolve:n,reject:a,progress:u}},l=[],d=[],f=function(e,t,n){var r,a;return r=o(),a="function"==typeof n?function(e){try{r.progress(n(e))}catch(t){r.progress(t)}}:function(e){r.progress(e)},l.push(function(n){n.then(e,t).then(r.resolve,r.reject,a)}),d.push(a),r.promise},h=function(e){return p(d,e),e},m=function(e){return e=t(e),f=e.then,m=t,h=v,p(l,e),d=l=E,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,n,r,a,i){return y(2,arguments),e(t,function(t){function u(e){p(e)}function s(e){m(e)}var c,l,d,f,h,m,p,y,g,w;if(g=t.length>>>0,c=Math.max(0,Math.min(n,g)),d=[],l=g-c+1,f=[],h=o(),c)for(y=h.progress,p=function(e){f.push(e),--l||(m=p=v,h.reject(f))},m=function(e){d.push(e),--c||(m=p=v,h.resolve(d))},w=0;g>w;++w)w in t&&e(t[w],s,u,y);else h.resolve(d);return h.then(r,a,i)})}function c(e,t,n,r){function a(e){return t?t(e[0]):e[0]}return s(e,1,a,n,r)}function l(e,t,n,r){return y(1,arguments),f(e,g).then(t,n,r)}function d(){return f(arguments,g)}function f(t,n){return e(t,function(t){var r,a,i,u,s,c;if(i=a=t.length>>>0,r=[],c=o(),i)for(u=function(t,a){e(t,n).then(function(e){r[a]=e,--i||c.resolve(r)},c.reject)},s=0;a>s;s++)s in t?u(t[s],s):--i;else c.resolve(r);return c.promise})}function h(t,n){var r=x.call(arguments,1);return e(t,function(t){var a;return a=t.length,r[0]=function(t,r,i){return e(t,function(t){return e(r,function(e){return n(t,e,i,a)})})},w.apply(t,r)})}function m(t,n,r){var a=arguments.length>2;return e(t,function(e){return e=a?r:e,n.resolve(e),e},function(e){return n.reject(e),i(e)},n.progress)}function p(e,t){for(var n,r=0;n=e[r++];)n(t)}function y(e,t){for(var n,r=t.length;r>e;)if(n=t[--r],null!=n&&"function"!=typeof n)throw new Error("arg "+r+" must be a function")}function v(){}function g(e){return e}var w,x,E;return e.defer=o,e.resolve=t,e.reject=n,e.join=d,e.all=l,e.map=f,e.reduce=h,e.any=c,e.some=s,e.chain=m,e.isPromise=u,r.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(E,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(E,t)})})}},x=[].slice,w=[].reduce||function(e){var t,n,r,a,i;if(i=0,t=Object(this),a=t.length>>>0,n=arguments,n.length<=1)for(;;){if(i in t){r=t[i++];break}if(++i>=a)throw new TypeError}else r=n[1];for(;a>i;++i)i in t&&(r=e(r,t[i],i,t));return r},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,n){for(var r,a,i=0,o=e.length-1;o>=i;)if(r=~~((i+o)/2),a=n(e[r],t),0>a)i=r+1;else{if(!(a>0))return r;o=r-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,n,r,a){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=r,this.ut1MinusUtc=a};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,n=0,r=t[n++],a=function(e,t,n,r){n||(n=" ");var a=e.length>=t?"":Array(1+t-e.length>>>0).join(n);return r?e+a:a+e},i=function(e,t,n,r,i,o){var u=r-e.length;return u>0&&(e=n||!i?a(e,r,o,n):e.slice(0,t.length)+a("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,n,r,o,u,s){var c=e>>>0;return n=n&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=n+a(c.toString(t),u||0,"0",!1),i(e,n,r,o,s)},u=function(e,t,n,r,a,o){return null!=r&&(e=e.slice(0,r)),i(e,"",t,n,a,o)},s=function(e,r,s,c,l,d,f){var h,m,p,y,v;if("%%"==e)return"%";for(var g=!1,w="",x=!1,E=!1,S=" ",_=s.length,O=0;s&&_>O;O++)switch(s.charAt(O)){case" ":w=" ";break;case"+":w="+";break;case"-":g=!0;break;case"'":S=s.charAt(O+1);break;case"0":x=!0;break;case"#":E=!0}if(c=c?"*"==c?+t[n++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,g=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(d=d?"*"==d?+t[n++]:"*"==d.charAt(0)?+t[d.slice(1,-1)]:+d:"fFeE".indexOf(f)>-1?6:"d"==f?0:void 0,v=r?t[r.slice(0,-1)]:t[n++],f){case"s":return u(String(v),g,c,d,x,S);case"c":return u(String.fromCharCode(+v),g,c,d,x);case"b":return o(v,2,E,g,c,d,x);case"o":return o(v,8,E,g,c,d,x);case"x":return o(v,16,E,g,c,d,x);case"X":return o(v,16,E,g,c,d,x).toUpperCase();case"u":return o(v,10,E,g,c,d,x);case"i":case"d":return h=+v||0,h=Math.round(h-h%1),m=0>h?"-":w,v=m+a(String(Math.abs(h)),d,"0",!1),i(v,m,g,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return h=+v,m=0>h?"-":w,p=["toExponential","toFixed","toPrecision"]["efg".indexOf(f.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(f)%2],v=m+Math.abs(h)[p](d),i(v,m,g,c,x)[y]();default:return e}};return r.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,n,r,a,i,o,u){this.year=e,this.month=t,this.day=n,this.hour=r,this.minute=a,this.second=i,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(e,t){return N.compare(e.julianDate,t.julianDate)}function d(e){g.julianDate=e;var n=N.leapSeconds,r=t(n,g,l);0>r&&(r=~r),r>=n.length&&(r=n.length-1);var a=n[r].offset;if(r>0){var i=N.secondsDifference(n[r].julianDate,e);i>a&&(r--,a=n[r].offset)}N.addSeconds(e,a,e)}function f(e,n){g.julianDate=e;var r=N.leapSeconds,a=t(r,g,l);if(0>a&&(a=~a),0===a)return N.addSeconds(e,-r[0].offset,n);if(a>=r.length)return N.addSeconds(e,-r[a-1].offset,n);var i=N.secondsDifference(r[a].julianDate,e);return 0===i?N.addSeconds(e,-r[a].offset,n):1>=i?void 0:N.addSeconds(e,-r[--a].offset,n)}function h(e,t,n){var r=0|t/s.SECONDS_PER_DAY;return e+=r,t-=s.SECONDS_PER_DAY*r,0>t&&(e--,t+=s.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function m(e,t,n,r,a,i,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+n-32075;r-=12,0>r&&(r+=24);var d=i+(r*s.SECONDS_PER_HOUR+a*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return d>=43200&&(l-=1),[l,d]}var p=new i,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,g=new u,w=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,E=/^(\d{4})-?(\d{3})$/,S=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,_=/^(\d{4})-?(\d{2})-?(\d{2})$/,O=/([Z+\-])?(\d{2})?:?(\d{2})?$/,M=/^(\d{2})(\.\d+)?/.source+O.source,T=/^(\d{2}):?(\d{2})(\.\d+)?/.source+O.source,P=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+O.source,A="Invalid ISO 8601 date.",N=function(e,t,r){this.dayNumber=void 0,this.secondsOfDay=void 0,e=n(e,0),t=n(t,0),r=n(r,c.UTC);var a=0|e;t+=(e-a)*s.SECONDS_PER_DAY,h(a,t,this),r===c.UTC&&d(this)};N.fromDate=function(e,t){var n=m(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return r(t)?(h(n[0],n[1],t),d(t),t):new N(n[0],n[1],c.UTC)},N.fromIso8601=function(e,t){e=e.replace(",",".");var n,i,u,s=e.split("T"),l=1,f=1,p=0,g=0,O=0,R=0,z=s[0],I=s[1];if(!r(z))throw new a(A);var b;if(s=z.match(_),null!==s){if(b=z.split("-").length-1,b>0&&2!==b)throw new a(A);n=+s[1],l=+s[2],f=+s[3]}else if(s=z.match(x),null!==s)n=+s[1],l=+s[2];else if(s=z.match(w),null!==s)n=+s[1];else{var C;if(s=z.match(E),null!==s){if(n=+s[1],C=+s[2],u=o(n),1>C||u&&C>366||!u&&C>365)throw new a(A)}else{if(s=z.match(S),null===s)throw new a(A);n=+s[1];var D=+s[2],U=+s[3]||0;if(b=z.split("-").length-1,b>0&&(!r(s[3])&&1!==b||r(s[3])&&2!==b))throw new a(A);var L=new Date(Date.UTC(n,0,4));C=7*D+U-L.getUTCDay()-3}i=new Date(Date.UTC(n,0,1)),i.setUTCDate(C),l=i.getUTCMonth()+1,f=i.getUTCDate()}if(u=o(n),1>l||l>12||1>f||(2!==l||!u)&&f>y[l-1]||u&&2===l&&f>v)throw new a(A);var q;if(r(I)){if(s=I.match(P),null!==s){if(b=I.split(":").length-1,b>0&&2!==b&&3!==b)throw new a(A);p=+s[1],g=+s[2],O=+s[3],R=1e3*+(s[4]||0),q=5}else if(s=I.match(T),null!==s){if(b=I.split(":").length-1,b>0&&1!==b)throw new a(A);p=+s[1],g=+s[2],O=60*+(s[3]||0),q=4}else{if(s=I.match(M),null===s)throw new a(A);p=+s[1],g=60*+(s[2]||0),q=3}if(g>=60||O>=61||p>24||24===p&&(g>0||O>0||R>0))throw new a(A);var B=s[q],F=+s[q+1],W=+(s[q+2]||0);switch(B){case"+":p-=F,g-=W;break;case"-":p+=F,g+=W;break;case"Z":break;default:g+=new Date(Date.UTC(n,l-1,f,p,g)).getTimezoneOffset()}}else g+=new Date(n,l-1,f).getTimezoneOffset();var G=60===O;for(G&&O--;g>=60;)g-=60,p++;for(;p>=24;)p-=24,f++;for(i=u&&2===l?v:y[l-1];f>i;)f-=i,l++,l>12&&(l-=12,n++),i=u&&2===l?v:y[l-1];for(;0>g;)g+=60,p--;for(;0>p;)p+=24,f--;for(;1>f;)l--,1>l&&(l+=12,n--),i=u&&2===l?v:y[l-1],f+=i;var k=m(n,l,f,p,g,O,R);return r(t)?(h(k[0],k[1],t),d(t)):t=new N(k[0],k[1],c.UTC),G&&N.addSeconds(t,1,t),t},N.now=function(e){return N.fromDate(new Date,e)};var R=new N(0,0,c.TAI);return N.toGregorianDate=function(e,t){var n=!1,a=f(e,R);r(a)||(N.addSeconds(e,-1,R),a=f(R,R),n=!0);var o=a.dayNumber,u=a.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var d=0|4e3*(c+1)/1461001;c=0|c-(0|1461*d/4)+31;var h=0|80*c/2447,m=0|c-(0|2447*h/80);c=0|h/11;var p=0|h+2-12*c,y=0|100*(l-49)+d+c,v=0|u/s.SECONDS_PER_HOUR,g=u-v*s.SECONDS_PER_HOUR,w=0|g/s.SECONDS_PER_MINUTE;g-=w*s.SECONDS_PER_MINUTE;var x=0|g,E=(g-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),n&&(x+=1),r(t)?(t.year=y,t.month=p,t.day=m,t.hour=v,t.minute=w,t.second=x,t.millisecond=E,t.isLeapSecond=n,t):new i(y,p,m,v,w,x,E,n)},N.toDate=function(e){var t=N.toGregorianDate(e,p),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))},N.toIso8601=function(t,n){var a,i=N.toGregorianDate(t,i);return r(n)||0===i.millisecond?r(n)&&0!==n?(a=(.01*i.millisecond).toFixed(n).replace(".","").slice(0,n),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",i.year,i.month,i.day,i.hour,i.minute,i.second):(a=(.01*i.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a))},N.clone=function(e,t){return r(e)?r(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new N(e.dayNumber,e.secondsOfDay,c.TAI):void 0},N.compare=function(e,t){var n=e.dayNumber-t.dayNumber;return 0!==n?n:e.secondsOfDay-t.secondsOfDay},N.equals=function(e,t){return e===t||r(e)&&r(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},N.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(N.secondsDifference(e,t))<=n},N.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},N.secondsDifference=function(e,t){var n=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return n+(e.secondsOfDay-t.secondsOfDay)},N.daysDifference=function(e,t){var n=e.dayNumber-t.dayNumber,r=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return n+r},N.computeTaiMinusUtc=function(e){g.julianDate=e; +var n=N.leapSeconds,r=t(n,g,l);return 0>r&&(r=~r,--r,0>r&&(r=0)),n[r].offset},N.addSeconds=function(e,t,n){return h(e.dayNumber,e.secondsOfDay+t,n)},N.addMinutes=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return h(e.dayNumber,r,n)},N.addHours=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return h(e.dayNumber,r,n)},N.addDays=function(e,t,n){var r=e.dayNumber+t;return h(r,e.secondsOfDay,n)},N.lessThan=function(e,t){return N.compare(e,t)<0},N.lessThanOrEquals=function(e,t){return N.compare(e,t)<=0},N.greaterThan=function(e,t){return N.compare(e,t)>0},N.greaterThanOrEquals=function(e,t){return N.compare(e,t)>=0},N.prototype.clone=function(e){return N.clone(this,e)},N.prototype.equals=function(e){return N.equals(this,e)},N.prototype.equalsEpsilon=function(e,t){return N.equalsEpsilon(this,e,t)},N.prototype.toString=function(){return N.toIso8601(this)},N.leapSeconds=[new u(new N(2441317,43210,c.TAI),10),new u(new N(2441499,43211,c.TAI),11),new u(new N(2441683,43212,c.TAI),12),new u(new N(2442048,43213,c.TAI),13),new u(new N(2442413,43214,c.TAI),14),new u(new N(2442778,43215,c.TAI),15),new u(new N(2443144,43216,c.TAI),16),new u(new N(2443509,43217,c.TAI),17),new u(new N(2443874,43218,c.TAI),18),new u(new N(2444239,43219,c.TAI),19),new u(new N(2444786,43220,c.TAI),20),new u(new N(2445151,43221,c.TAI),21),new u(new N(2445516,43222,c.TAI),22),new u(new N(2446247,43223,c.TAI),23),new u(new N(2447161,43224,c.TAI),24),new u(new N(2447892,43225,c.TAI),25),new u(new N(2448257,43226,c.TAI),26),new u(new N(2448804,43227,c.TAI),27),new u(new N(2449169,43228,c.TAI),28),new u(new N(2449534,43229,c.TAI),29),new u(new N(2450083,43230,c.TAI),30),new u(new N(2450630,43231,c.TAI),31),new u(new N(2451179,43232,c.TAI),32),new u(new N(2453736,43233,c.TAI),33),new u(new N(2454832,43234,c.TAI),34),new u(new N(2456109,43235,c.TAI),35),new u(new N(2457204,43236,c.TAI),36)],N}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(n,r){if(null===n||"object"!=typeof n)return n;r=e(r,!1);var a=new n.constructor;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i];r&&(o=t(o,r)),a[i]=o}return a};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var n=e.split("\r\n"),r=0;r<n.length;++r){var a=n[r],i=a.indexOf(": ");if(i>0){var o=a.substring(0,i),u=a.substring(i+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var n=function(e,n,r){this.statusCode=e,this.response=n,this.responseHeaders=r,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return n.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},n}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,n,r,a,i){"use strict";function o(e,t){var n=decodeURIComponent(t);return e?atob(n):n}function u(e,t){for(var n=o(e,t),r=new ArrayBuffer(n.length),a=new Uint8Array(r),i=0;i<n.length;i++)a[i]=n.charCodeAt(i);return r}function s(e,n){n=t(n,"");var a=e[1],i=!!e[2],s=e[3];switch(n){case"":case"text":return o(i,s);case"arraybuffer":return u(i,s);case"blob":var c=u(i,s);return new Blob([c],{type:a});case"document":var l=new DOMParser;return l.parseFromString(o(i,s),a);case"json":return JSON.parse(o(i,s));default:throw new r("Unhandled responseType: "+n)}}var c=function(n){n=t(n,t.EMPTY_OBJECT);var r=n.responseType,a=t(n.method,"GET"),i=n.data,o=n.headers,u=n.overrideMimeType;return e(n.url,function(t){var n=e.defer();return c.load(t,r,a,i,o,n,u),n.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,r,o,u,c,d){var f=l.exec(e);if(null!==f)return c.resolve(s(f,t)),void 0;var h=new XMLHttpRequest;if(n(d)&&n(h.overrideMimeType)&&h.overrideMimeType(d),h.open(r,e,!0),n(u))for(var m in u)u.hasOwnProperty(m)&&h.setRequestHeader(m,u[m]);n(t)&&(h.responseType=t),h.onload=function(){200===h.status?n(h.response)?c.resolve(h.response):n(h.responseXML)&&h.responseXML.hasChildNodes()?c.resolve(h.responseXML):n(h.responseText)?c.resolve(h.responseText):c.reject(new i("unknown XMLHttpRequest response type.")):c.reject(new a(h.status,h.response,h.getAllResponseHeaders()))},h.onerror=function(){c.reject(new a)},h.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,n){return e({url:t,headers:n})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,n,r){"use strict";var a={Accept:"application/json,*/*;q=0.01"},i=function(n,i){return t(i)?t(i.Accept)||(i=e(i),i.Accept=a.Accept):i=a,r(n,i).then(function(e){return JSON.parse(e)})};return i}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c,l,d){"use strict";function f(e,t){return o.compare(e.julianDate,t)}function h(e,n){if(!r(n.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!r(n.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var a=n.columnNames.indexOf("modifiedJulianDateUtc"),i=n.columnNames.indexOf("xPoleWanderRadians"),s=n.columnNames.indexOf("yPoleWanderRadians"),c=n.columnNames.indexOf("ut1MinusUtcSeconds"),h=n.columnNames.indexOf("xCelestialPoleOffsetRadians"),m=n.columnNames.indexOf("yCelestialPoleOffsetRadians"),p=n.columnNames.indexOf("taiMinusUtcSeconds");if(0>a||0>i||0>s||0>c||0>h||0>m||0>p)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=n.samples,v=e._dates=[];e._dateColumn=a,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=h,e._yCelestialPoleOffsetRadiansColumn=m,e._taiMinusUtcSecondsColumn=p,e._columnCount=n.columnNames.length,e._lastIndex=void 0;for(var g,w=e._addNewLeapSeconds,x=0,E=y.length;E>x;x+=e._columnCount){var S=y[x+a],_=y[x+p],O=S+l.MODIFIED_JULIAN_DATE_DIFFERENCE,M=new o(O,_,d.TAI);if(v.push(M),w){if(_!==g&&r(g)){var T=o.leapSeconds,P=t(T,M,f);if(0>P){var A=new u(M,_);T.splice(~P,0,A)}}g=_}}}function m(e,t,n,r,a){var i=n*r;a.xPoleWander=t[i+e._xPoleWanderRadiansColumn],a.yPoleWander=t[i+e._yPoleWanderRadiansColumn],a.xPoleOffset=t[i+e._xCelestialPoleOffsetRadiansColumn],a.yPoleOffset=t[i+e._yCelestialPoleOffsetRadiansColumn],a.ut1MinusUtc=t[i+e._ut1MinusUtcSecondsColumn]}function p(e,t,n){return t+e*(n-t)}function y(e,t,n,r,a,i,u){var s=e._columnCount;if(i>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u;var c=t[a],l=t[i];if(c.equals(l)||r.equals(c))return m(e,n,a,s,u),u;if(r.equals(l))return m(e,n,i,s,u),u;var d=o.secondsDifference(r,c)/o.secondsDifference(l,c),f=a*s,h=i*s,y=n[f+e._ut1MinusUtcSecondsColumn],v=n[h+e._ut1MinusUtcSecondsColumn],g=v-y;if(g>.5||-.5>g){var w=n[f+e._taiMinusUtcSecondsColumn],x=n[h+e._taiMinusUtcSecondsColumn];w!==x&&(l.equals(r)?y=v:v-=x-w)}return u.xPoleWander=p(d,n[f+e._xPoleWanderRadiansColumn],n[h+e._xPoleWanderRadiansColumn]),u.yPoleWander=p(d,n[f+e._yPoleWanderRadiansColumn],n[h+e._yPoleWanderRadiansColumn]),u.xPoleOffset=p(d,n[f+e._xCelestialPoleOffsetRadiansColumn],n[h+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=p(d,n[f+e._yCelestialPoleOffsetRadiansColumn],n[h+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=p(d,y,v),u}var v=function(t){if(t=n(t,n.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=n(t.addNewLeapSeconds,!0),r(t.data))h(this,t.data);else if(r(t.url)){var a=this;this._downloadPromise=e(s(t.url),function(e){h(a,e)},function(){a._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else h(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return v.NONE=i({getPromiseToLoad:function(){return e()},compute:function(e,t){return r(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new a(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,n){if(!r(this._samples)){if(r(this._dataError))throw new c(this._dataError);return void 0}if(r(n)||(n=new a(0,0,0,0,0)),0===this._samples.length)return n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0,n;var i=this._dates,u=this._lastIndex,s=0,l=0;if(r(u)){var d=i[u],f=i[u+1],h=o.lessThanOrEquals(d,e),m=!r(f),p=m||o.greaterThanOrEquals(f,e);if(h&&p)return s=u,!m&&f.equals(e)&&++s,l=s+1,y(this,i,this._samples,e,s,l,n),n}var v=t(i,e,o.compare,this._dateColumn);return v>=0?(v<i.length-1&&i[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,i,this._samples,e,s,l,n),n},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var n=r.exec(t);this.scheme=n[1],this.authority=n[2],this.path=n[3],this.query=n[4],this.fragment=n[5]}}function t(e){var t=unescape(e);return i.test(t)?t:e.toUpperCase()}function n(e,t,n,r){return(t||"")+n.toLowerCase()+(r||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var r=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,n).replace(a,t)),this.path&&(this.path=this.path.replace(a,t)),this.query&&(this.query=this.query.replace(a,t)),this.fragment&&(this.fragment=this.fragment.replace(a,t))};var a=/%[0-9a-z]{2}/gi,i=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var n=new e;return this.scheme?(n.scheme=this.scheme,n.authority=this.authority,n.path=this.path,n.query=this.query):(n.scheme=t.scheme,this.authority?(n.authority=this.authority,n.path=this.path,n.query=this.query):(n.authority=t.authority,""==this.path?(n.path=t.path,n.query=this.query||t.query):("/"==this.path.charAt(0)?(n.path=this.path,n.removeDotSegments()):(n.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,n.removeDotSegments()),n.query=this.query))),n.fragment=this.fragment,n},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),n=[],r=""==t[0];for(r&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?n.pop():"."!=e&&n.push(e);("."==e||".."==e)&&n.push(""),r&&n.unshift(""),this.path=n.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,n,r){"use strict";function a(){for(var e=document.getElementsByTagName("script"),t=0,n=e.length;n>t;++t){var r=e[t].getAttribute("src"),a=d.exec(r);if(null!==a)return a[1]}return void 0}function i(){if(t(s))return s;var r;if(r="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:a(),!t(r))throw new n("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(r).resolve(new e(document.location.href))}function o(e){return r.toUrl("../"+e)}function u(t){return new e(t).resolve(i()).toString()}var s,c,l,d=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,f=function(e){t(c)||(c=t(r.toUrl)?o:u),t(l)||(l=document.createElement("a"));var n=c(e);return l.href=n,l.href=l.href,l.href};return f._cesiumScriptRegex=d,f.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},f}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,n){this.x=e,this.y=t,this.s=n};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,n,r,a,i,o,u){"use strict";function s(e,t,n){var r=d;return r.dayNumber=t,r.secondsOfDay=n,i.daysDifference(r,e._sampleZeroDateTT)}function c(n,a){if(n._chunkDownloadsInProgress[a])return n._chunkDownloadsInProgress[a];var i=e.defer();n._chunkDownloadsInProgress[a]=i;var u,s=n._xysFileUrlTemplate;return u=r(s)?s.replace("{0}",a):t("Assets/IAU2006_XYS/IAU2006_XYS_"+a+".json"),e(o(u),function(e){n._chunkDownloadsInProgress[a]=!1;for(var t=n._samples,r=e.samples,o=3*a*n._samplesPerXysFile,u=0,s=r.length;s>u;++u)t[o+u]=r[u];i.resolve()}),i.promise}var l=function(e){e=n(e,n.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=n(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=n(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new i(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=n(e.stepSizeDays,1),this._samplesPerXysFile=n(e.samplesPerXysFile,1e3),this._totalSamples=n(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,r=this._denominators=new Array(t+1),a=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){r[s]=o,a[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(r[s]*=s-c);r[s]=1/r[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},d=new i(0,0,u.TAI);return l.prototype.preload=function(t,n,r,a){var i=s(this,t,n),o=s(this,r,a),u=0|i/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var d=0|u/this._samplesPerXysFile,f=0|l/this._samplesPerXysFile,h=[],m=d;f>=m;++m)h.push(c(this,m));return e.all(h)},l.prototype.computeXysRadians=function(e,t,n){var i=s(this,e,t);if(0>i)return void 0;var o=0|i/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var d=l+u;d>=this._totalSamples&&(d=this._totalSamples-1,l=d-u,0>l&&(l=0));var f=!1,h=this._samples;if(r(h[3*l])||(c(this,0|l/this._samplesPerXysFile),f=!0),r(h[3*d])||(c(this,0|d/this._samplesPerXysFile),f=!0),f)return void 0;r(n)?(n.x=0,n.y=0,n.s=0):n=new a(0,0,0);var m,p,y=i-l*this._stepSizeDays,v=this._work,g=this._denominators,w=this._coef,x=this._xTable;for(m=0;u>=m;++m)v[m]=y-x[m];for(m=0;u>=m;++m){for(w[m]=1,p=0;u>=p;++p)p!==m&&(w[m]*=v[p]);w[m]*=g[m];var E=3*(l+m);n.x+=w[m]*h[E++],n.y+=w[m]*h[E++],n.s+=w[m]*h[E]}return n},l}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(a,0)},c=new e;s.fromAxisAngle=function(t,r,a){var i=r/2,o=Math.sin(i);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,d=c.z*o,f=Math.cos(i);return n(a)?(a.x=u,a.y=l,a.z=d,a.w=f,a):new s(u,l,d,f)};var l=[1,2,0],d=new Array(3);s.fromRotationMatrix=function(e,t){var r,a,i,o,c,f=e[u.COLUMN0ROW0],h=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],p=f+h+m;if(p>0)r=Math.sqrt(p+1),c=.5*r,r=.5/r,a=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*r,i=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*r,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*r;else{var y=l,v=0;h>f&&(v=1),m>f&&m>h&&(v=2);var g=y[v],w=y[g];r=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=d;x[v]=.5*r,r=.5/r,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*r,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*r,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*r,a=-x[0],i=-x[1],o=-x[2]}return n(t)?(t.x=a,t.y=i,t.z=o,t.w=c,t):new s(a,i,o,c)};var f=new s;s.fromHeadingPitchRoll=function(t,n,r,a){var i=s.fromAxisAngle(e.UNIT_X,r,f),o=s.fromAxisAngle(e.UNIT_Y,-n,a);a=s.multiply(o,i,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,f);return s.multiply(u,a,a)};var h=new e,m=new e,p=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.x=e[r],a.y=e[r+1],a.z=e[r+2],a.w=e[r+3],a},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,n,r){s.unpack(e,4*n,v),s.conjugate(v,v);for(var a=0,i=n-t+1;i>a;a++){var o=3*a;s.unpack(e,4*(t+a),p),s.multiply(p,v,p),p.w<0&&s.negate(p,p),s.computeAxis(p,h);var u=s.computeAngle(p);r[o]=h.x*u,r[o+1]=h.y*u,r[o+2]=h.z*u}},s.unpackInterpolationResult=function(t,r,a,i,o){n(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(r,4*i,y),0===u?s.clone(s.IDENTITY,p):s.fromAxisAngle(m,u,p),s.multiply(p,y,o)},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var n=1/s.magnitude(e),r=e.x*n,a=e.y*n,i=e.z*n,o=e.w*n;return t.x=r,t.y=a,t.z=i,t.w=o,t},s.inverse=function(e,t){var n=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/n,t)},s.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},s.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,d=o*u+r*l+a*c-i*s,f=o*s-r*c+a*l+i*u,h=o*c+r*s-a*u+i*l,m=o*l-r*u-a*s-i*c;return n.x=d,n.y=f,n.z=h,n.w=m,n},s.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},s.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},s.computeAxis=function(e,t){var n=e.w;if(Math.abs(n-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var r=1/Math.sqrt(1-n*n);return t.x=e.x*r,t.y=e.y*r,t.z=e.z*r,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,n,r){return g=s.multiplyByScalar(t,n,g),r=s.multiplyByScalar(e,1-n,r),s.add(g,r,r)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,n,r){var a=s.dot(e,t),i=t;if(0>a&&(a=-a,i=w=s.negate(t,w)),1-a<o.EPSILON6)return s.lerp(e,i,n,r);var u=Math.acos(a);return x=s.multiplyByScalar(e,Math.sin((1-n)*u),x),E=s.multiplyByScalar(i,Math.sin(n*u),E),r=s.add(x,E,r),s.multiplyByScalar(r,1/Math.sin(u),r)},s.log=function(t,n){var r=o.acosClamped(t.w),a=0;return 0!==r&&(a=r/Math.sin(r)),e.multiplyByScalar(t,a,n)},s.exp=function(t,n){var r=e.magnitude(t),a=0;return 0!==r&&(a=Math.sin(r)/r),n.x=t.x*a,n.y=t.y*a,n.z=t.z*a,n.w=Math.cos(r),n};var S=new e,_=new e,O=new s,M=new s;s.computeInnerQuadrangle=function(t,n,r,a){var i=s.conjugate(n,O);s.multiply(i,r,M);var o=s.log(M,S);s.multiply(i,t,M);var u=s.log(M,_);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,O),s.multiply(n,O,a)},s.squad=function(e,t,n,r,a,i){var o=s.slerp(e,t,a,O),u=s.slerp(n,r,a,M);return s.slerp(o,u,2*a*(1-a),i)};for(var T=new s,P=1.9011074535173003,A=a.supportsTypedArrays()?new Float32Array(8):[],N=a.supportsTypedArrays()?new Float32Array(8):[],R=a.supportsTypedArrays()?new Float32Array(8):[],z=a.supportsTypedArrays()?new Float32Array(8):[],I=0;7>I;++I){var b=I+1,C=2*b+1;A[I]=1/(b*C),N[I]=b/C}return A[7]=P/136,N[7]=8*P/17,s.fastSlerp=function(e,t,n,r){var a,i=s.dot(e,t);i>=0?a=1:(a=-1,i=-i);for(var o=i-1,u=1-n,c=n*n,l=u*u,d=7;d>=0;--d)R[d]=(A[d]*c-N[d])*o,z[d]=(A[d]*l-N[d])*o;var f=a*n*(1+R[0]*(1+R[1]*(1+R[2]*(1+R[3]*(1+R[4]*(1+R[5]*(1+R[6]*(1+R[7])))))))),h=u*(1+z[0]*(1+z[1]*(1+z[2]*(1+z[3]*(1+z[4]*(1+z[5]*(1+z[6]*(1+z[7])))))))),m=s.multiplyByScalar(e,h,T);return s.multiplyByScalar(t,f,r),s.add(m,r,r)},s.fastSquad=function(e,t,n,r,a,i){var o=s.fastSlerp(e,t,a,O),u=s.fastSlerp(n,r,a,M);return s.fastSlerp(o,u,2*a*(1-a),i)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},s.ZERO=i(new s(0,0,0,0)),s.IDENTITY=i(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,n,r,a,i,o,u,s,c,l,d,f,h,m,p,y,v){"use strict";var g={},w=new n,x=new n,E=new n;g.eastNorthUpToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=-o,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=s.x,r[1]=s.y,r[2]=s.z,r[3]=0,r[4]=l.x,r[5]=l.y,r[6]=l.z,r[7]=0,r[8]=u.x,r[9]=u.y,r[10]=u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var S=new n,_=new n,O=new n;g.northEastDownToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=-o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=S,s=_,l=O;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=s.x,r[5]=s.y,r[6]=s.z,r[7]=0,r[8]=-u.x,r[9]=-u.y,r[10]=-u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},g.northUpEastToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=o,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=u.x,r[5]=u.y,r[6]=u.z,r[7]=0,r[8]=s.x,r[9]=s.y,r[10]=s.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var M=new y,T=new n(1,1,1),P=new p;g.headingPitchRollToFixedFrame=function(e,t,r,a,i,o){var u=y.fromHeadingPitchRoll(t,r,a,M),s=p.fromTranslationQuaternionRotationScale(n.ZERO,u,T,P);return o=g.eastNorthUpToFixedFrame(e,i,o),p.multiply(o,s,o)};var A=new p,N=new m;g.headingPitchRollQuaternion=function(e,t,n,r,a,i){var o=g.headingPitchRollToFixedFrame(e,t,n,r,a,A),u=p.getRotation(o,N);return y.fromRotationMatrix(u,i)};var R=24110.54841,z=8640184.812866,I=.093104,b=-62e-7,C=1.1772758384668e-19,D=72921158553e-15,U=h.TWO_PI/86400,L=new f;g.computeTemeToPseudoFixedMatrix=function(e,t){L=f.addSeconds(e,-f.computeTaiMinusUtc(e),L);var n,r=L.dayNumber,a=L.secondsOfDay,o=r-2451545;n=a>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=R+n*(z+n*(I+n*b)),s=u*U%h.TWO_PI,c=D+C*(r-2451545.5),l=(a+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,d=s+c*l,p=Math.cos(d),y=Math.sin(d);return i(t)?(t[0]=p,t[1]=-y,t[2]=0,t[3]=y,t[4]=p,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new m(p,y,0,-y,p,0,0,0,1)},g.iau2006XysData=new l,g.earthOrientationParameters=u.NONE;var q=32.184,B=2451545;g.preloadIcrfFixed=function(t){var n=t.start.dayNumber,r=t.start.secondsOfDay+q,a=t.stop.dayNumber,i=t.stop.secondsOfDay+q,o=g.iau2006XysData.preload(n,r,a,i),u=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},g.computeIcrfToFixedMatrix=function(e,t){i(t)||(t=new m);var n=g.computeFixedToIcrfMatrix(e,t);return i(n)?m.transpose(n,t):void 0};var F=new d(0,0,0),W=new s(0,0,0,0,0,0),G=new m,k=new m;g.computeFixedToIcrfMatrix=function(e,t){i(t)||(t=new m);var n=g.earthOrientationParameters.compute(e,W);if(!i(n))return void 0;var r=e.dayNumber,a=e.secondsOfDay+q,o=g.iau2006XysData.computeXysRadians(r,a,F);if(!i(o))return void 0;var u=o.x+n.xPoleOffset,s=o.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=G;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var d=m.fromRotationZ(-o.s,k),p=m.multiply(l,d,G),y=e.dayNumber,w=e.secondsOfDay-f.computeTaiMinusUtc(e)+n.ut1MinusUtc,x=y-2451545,E=w/v.SECONDS_PER_DAY,S=.779057273264+E+.00273781191135448*(x+E);S=S%1*h.TWO_PI;var _=m.fromRotationZ(S,k),O=m.multiply(p,_,G),M=Math.cos(n.xPoleWander),T=Math.cos(n.yPoleWander),P=Math.sin(n.xPoleWander),A=Math.sin(n.yPoleWander),N=r-B+a/v.SECONDS_PER_DAY;N/=36525;var R=-47e-6*N*h.RADIANS_PER_DEGREE/3600,z=Math.cos(R),I=Math.sin(R),b=k;return b[0]=M*z,b[1]=M*I,b[2]=P,b[3]=-T*I+A*P*z,b[4]=T*z+A*P*I,b[5]=-A*M,b[6]=-A*I-T*P*z,b[7]=A*z-T*P*I,b[8]=T*M,m.multiply(O,b,t)};var V=new r;g.pointToWindowCoordinates=function(e,t,n,r){return r=g.pointToGLWindowCoordinates(e,t,n,r),r.y=2*t[5]-r.y,r},g.pointToGLWindowCoordinates=function(e,n,a,o){i(o)||(o=new t);var u=V;return p.multiplyByVector(e,r.fromElements(a.x,a.y,a.z,1,u),u),r.multiplyByScalar(u,1/u.w,u),p.multiplyByVector(n,u,u),t.fromCartesian4(u,o)};var j=new n,Y=new n,H=new n;return g.rotationMatrixFromPositionVelocity=function(e,t,r,o){var u=a(r,c.WGS84).geodeticSurfaceNormal(e,j),s=n.cross(t,u,Y);n.equalsEpsilon(s,n.ZERO,h.EPSILON6)&&(s=n.clone(n.UNIT_X,s));var l=n.cross(s,t,H);return n.cross(t,l,s),n.negate(s,s),i(o)||(o=new m),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},g}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,n,r,a,i,o,u,s,c,l,d,f,h,m){"use strict";var p=new r,y=function(e,t){t=a(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var r=m.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=n.fromCartesian4(d.getColumn(r,0,p)),this._yAxis=n.fromCartesian4(d.getColumn(r,1,p));var i=n.fromCartesian4(d.getColumn(r,2,p));this._plane=f.fromPointNormal(e,i)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,n){var r=e.fromPoints(t,v);return new y(r.center,n)};var g=new h,w=new n;y.prototype.projectPointOntoPlane=function(e,r){var a=g;a.origin=e,n.normalize(e,a.direction);var o=c.rayPlane(a,this._plane,w);if(i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w)),i(o)){var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return i(r)?(r.x=s,r.y=l,r):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){i(t)||(t=[]);for(var n=0,r=e.length,a=0;r>a;a++){var o=this.projectPointOntoPlane(e[a],t[n]);i(o)&&(t[n]=o,n++)}return t.length=n,t},y.prototype.projectPointToNearestOnPlane=function(e,r){i(r)||(r=new t);var a=g;a.origin=e,n.clone(this._plane.normal,a.direction);var o=c.rayPlane(a,this._plane,w);i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w));var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return r.x=s,r.y=l,r},y.prototype.projectPointsToNearestOnPlane=function(e,t){i(t)||(t=[]);var n=e.length;t.length=n;for(var r=0;n>r;r++)t[r]=this.projectPointToNearestOnPlane(e[r],t[r]);return t};var x=new n;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var r=e.length;i(t)?t.length=r:t=new Array(r);for(var a=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;r>l;++l){var d=e[l];n.multiplyByScalar(u,d.x,c),i(t[l])||(t[l]=new n);var f=n.add(o,c,t[l]);n.multiplyByScalar(s,d.y,c),n.add(f,c,f),a.scaleToGeocentricSurface(f,f)}return t},y}),define("Core/PolylineVolumeGeometryLibrary",["./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./CornerType","./EllipsoidTangentPlane","./Math","./Matrix3","./Matrix4","./PolylinePipeline","./Quaternion","./Transforms"],function(e,t,n,r,a,i,o,u,s,c,l,d){"use strict";function f(e,t){for(var n=new Array(e.length),r=0;r<e.length;r++){var a=e[r];C=t.cartesianToCartographic(a,C),n[r]=C.height,e[r]=t.scaleToGeodeticSurface(a,a)}return n}function h(e,n,r,a){var i,o=e[0],u=e[1],s=t.angleBetween(o,u),c=Math.ceil(s/a),l=new Array(c);if(n===r){for(i=0;c>i;i++)l[i]=n;return l.push(r),l}var d=r-n,f=d/c;for(i=1;c>i;i++){var h=n+i*f;l[i]=h}return l[0]=n,l.push(r),l}function m(n,r,a,o){var u=new i(a,o),s=u.projectPointOntoPlane(t.add(a,n,H),H),c=u.projectPointOntoPlane(t.add(a,r,Z),Z),l=e.angleBetween(s,c);return c.x*s.y-c.y*s.x>=0?-l:l}function p(e,n,r,a,i,o,c,l){var f=F,h=W;U=d.eastNorthUpToFixedFrame(e,i,U),f=s.multiplyByPointAsVector(U,D,f),f=t.normalize(f,f);var p=m(f,n,e,i);q=u.fromRotationZ(p,q),G.z=o,U=s.multiplyTransformation(U,s.fromRotationTranslation(q,G,L),U);var y=B;y[0]=c;for(var v=0;l>v;v++)for(var g=0;g<r.length;g+=3)h=t.fromArray(r,g,h),h=u.multiplyByVector(y,h,h),h=s.multiplyByPoint(U,h,h),a.push(h.x,h.y,h.z);return a}function y(e,n,r,a,i,o,u){for(var s=0;s<e.length;s+=3){var c=t.fromArray(e,s,k);a=p(c,n,r,a,i,o[s/3],u,1)}return a}function v(e,t){var n=e.length,r=new Array(6*n),a=0,i=t.x+t.width/2,o=t.y+t.height/2,u=e[0];r[a++]=u.x-i,r[a++]=0,r[a++]=u.y-o;for(var s=1;n>s;s++){u=e[s];var c=u.x-i,l=u.y-o;r[a++]=c,r[a++]=0,r[a++]=l,r[a++]=c,r[a++]=0,r[a++]=l}return u=e[0],r[a++]=u.x-i,r[a++]=0,r[a++]=u.y-o,r}function g(e,t){for(var n=e.length,r=new Array(3*n),a=0,i=t.x+t.width/2,o=t.y+t.height/2,u=0;n>u;u++)r[a++]=e[u].x-i,r[a++]=0,r[a++]=e[u].y-o; +return r}function w(e,n,r,i,s,c,d,f,h,m){var y,v=t.angleBetween(t.subtract(n,e,z),t.subtract(r,e,I)),g=i===a.BEVELED?0:Math.ceil(v/o.toRadians(5));y=s?u.fromQuaternion(l.fromAxisAngle(t.negate(e,z),v/(g+1),V),Y):u.fromQuaternion(l.fromAxisAngle(e,v/(g+1),V),Y);var w,x;if(n=t.clone(n,j),g>0)for(var E=m?2:1,S=0;g>S;S++)n=u.multiplyByVector(y,n,n),w=t.subtract(n,e,z),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(n,I),d=p(x,w,f,d,c,h,1,E);else w=t.subtract(n,e,z),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(n,I),d=p(x,w,f,d,c,h,1,1),r=t.clone(r,j),w=t.subtract(r,e,z),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(r,I),d=p(x,w,f,d,c,h,1,1);return d}function x(e,t){return o.equalsEpsilon(e.latitude,t.latitude,o.EPSILON6)&&o.equalsEpsilon(e.longitude,t.longitude,o.EPSILON6)}var E=[new t,new t],S=new t,_=new t,O=new t,M=new t,T=new t,P=new t,A=new t,N=new t,R=new t,z=new t,I=new t,b={},C=new r,D=new t(-1,0,0),U=new s,L=new s,q=new u,B=u.IDENTITY.clone(),F=new t,W=new n,G=new t,k=new t,V=new l,j=new t,Y=new u;b.removeDuplicatesFromShape=function(t){for(var n=t.length,r=[],a=n-1,i=0;n>i;a=i++){var o=t[a],u=t[i];e.equals(o,u)||r.push(u)}return r};var H=new t,Z=new t;b.angleIsGreaterThanPi=function(e,n,r,a){var o=new i(r,a),u=o.projectPointOntoPlane(t.add(r,e,H),H),s=o.projectPointOntoPlane(t.add(r,n,Z),Z);return s.x*u.y-s.y*u.x>=0};var X=new r,J=new r;b.removeDuplicatesFromPositions=function(e,t){var n=e.length;if(2>n)return e.slice(0);var r=[];r.push(e[0]);for(var a=1;n>a;++a){var i=e[a-1],o=e[a],u=t.cartesianToCartographic(i,X),s=t.cartesianToCartographic(o,J);x(u,s)||r.push(o)}return r};var Q=new t,K=new t;return b.computePositions=function(e,n,r,i,u){var s=i._ellipsoid,l=f(e,s),d=i._granularity,m=i._cornerType,x=u?v(n,r):g(n,r),I=u?g(n,r):void 0,C=r.height/2,D=r.width/2,U=e.length,L=[],q=u?[]:void 0,B=S,F=_,W=O,G=M,k=T,V=P,j=A,Y=N,H=R,Z=e[0],X=e[1];G=s.geodeticSurfaceNormal(Z,G),B=t.subtract(X,Z,B),B=t.normalize(B,B),Y=t.cross(G,B,Y),Y=t.normalize(Y,Y);var J=l[0],$=l[1];u&&(q=p(Z,Y,I,q,s,J+C,1,1)),H=t.clone(Z,H),Z=X,F=t.negate(B,F);for(var et,tt,nt=1;U-1>nt;nt++){var rt=u?2:1;X=e[nt+1],B=t.subtract(X,Z,B),B=t.normalize(B,B),W=t.add(B,F,W),W=t.normalize(W,W),G=s.geodeticSurfaceNormal(Z,G);var at=t.multiplyByScalar(G,t.dot(B,G),Q);t.subtract(B,at,at),t.normalize(at,at);var it=t.multiplyByScalar(G,t.dot(F,G),K);t.subtract(F,it,it),t.normalize(it,it);var ot=!o.equalsEpsilon(Math.abs(t.dot(at,it)),1,o.EPSILON7);if(ot){W=t.cross(W,G,W),W=t.cross(G,W,W),W=t.normalize(W,W);var ut=1/Math.max(.25,t.magnitude(t.cross(W,F,z))),st=b.angleIsGreaterThanPi(B,F,Z,s);st?(k=t.add(Z,t.multiplyByScalar(W,ut*D,W),k),V=t.add(k,t.multiplyByScalar(Y,D,V),V),E[0]=t.clone(H,E[0]),E[1]=t.clone(V,E[1]),et=h(E,J+C,$+C,d),tt=c.generateArc({positions:E,granularity:d,ellipsoid:s}),L=y(tt,Y,x,L,s,et,1),Y=t.cross(G,B,Y),Y=t.normalize(Y,Y),j=t.add(k,t.multiplyByScalar(Y,D,j),j),m===a.ROUNDED||m===a.BEVELED?w(k,V,j,m,st,s,L,x,$+C,u):(W=t.negate(W,W),L=p(Z,W,x,L,s,$+C,ut,rt)),H=t.clone(j,H)):(k=t.add(Z,t.multiplyByScalar(W,ut*D,W),k),V=t.add(k,t.multiplyByScalar(Y,-D,V),V),E[0]=t.clone(H,E[0]),E[1]=t.clone(V,E[1]),et=h(E,J+C,$+C,d),tt=c.generateArc({positions:E,granularity:d,ellipsoid:s}),L=y(tt,Y,x,L,s,et,1),Y=t.cross(G,B,Y),Y=t.normalize(Y,Y),j=t.add(k,t.multiplyByScalar(Y,-D,j),j),m===a.ROUNDED||m===a.BEVELED?w(k,V,j,m,st,s,L,x,$+C,u):L=p(Z,W,x,L,s,$+C,ut,rt),H=t.clone(j,H)),F=t.negate(B,F)}else L=p(H,Y,x,L,s,J+C,1,1),H=Z;J=$,$=l[nt+1],Z=X}E[0]=t.clone(H,E[0]),E[1]=t.clone(Z,E[1]),et=h(E,J+C,$+C,d),tt=c.generateArc({positions:E,granularity:d,ellipsoid:s}),L=y(tt,Y,x,L,s,et,1),u&&(q=p(Z,Y,I,q,s,$+C,1,1)),U=L.length;var ct=u?U+q.length:U,lt=new Float64Array(ct);return lt.set(L),u&<.set(q,U),lt},b}),define("Core/CorridorGeometryLibrary",["./Cartesian3","./CornerType","./defined","./isArray","./Math","./Matrix3","./PolylinePipeline","./PolylineVolumeGeometryLibrary","./Quaternion"],function(e,t,n,r,a,i,o,u,s){"use strict";function c(n,r,o,u,c){var l=e.angleBetween(e.subtract(r,n,p),e.subtract(o,n,y)),d=u===t.BEVELED?1:Math.ceil(l/a.toRadians(5))+1,f=3*d,h=new Array(f);h[f-3]=o.x,h[f-2]=o.y,h[f-1]=o.z;var m;m=c?i.fromQuaternion(s.fromAxisAngle(e.negate(n,p),l/d,R),z):i.fromQuaternion(s.fromAxisAngle(n,l/d,R),z);var v=0;r=e.clone(r,p);for(var g=0;d>g;g++)r=i.multiplyByVector(m,r,r),h[v++]=r.x,h[v++]=r.y,h[v++]=r.z;return h}function l(n){var r=x,a=E,i=S,o=n[1];a=e.fromArray(n[1],o.length-3,a),i=e.fromArray(n[0],0,i),r=e.multiplyByScalar(e.add(a,i,r),.5,r);var u=c(r,a,i,t.ROUNDED,!1),s=n.length-1,l=n[s-1];o=n[s],a=e.fromArray(l,l.length-3,a),i=e.fromArray(o,0,i),r=e.multiplyByScalar(e.add(a,i,r),.5,r);var d=c(r,a,i,t.ROUNDED,!1);return[u,d]}function d(t,n,r,a){var i=p;return a?i=e.add(t,n,i):(n=e.negate(n,n),i=e.add(t,n,i)),[i.x,i.y,i.z,r.x,r.y,r.z]}function f(t,n,r,a){for(var i=new Array(t.length),o=new Array(t.length),u=e.multiplyByScalar(n,r,p),s=e.negate(u,y),c=0,l=t.length-1,d=0;d<t.length;d+=3){var f=e.fromArray(t,d,v),h=e.add(f,s,g);i[c++]=h.x,i[c++]=h.y,i[c++]=h.z;var m=e.add(f,u,g);o[l--]=m.z,o[l--]=m.y,o[l--]=m.x}return a.push(i,o),a}function h(e,t){for(var n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}var m={},p=new e,y=new e,v=new e,g=new e,w=[new e,new e],x=new e,E=new e,S=new e,_=new e,O=new e,M=new e,T=new e,P=new e,A=new e,N=new e,R=new s,z=new i;m.addAttribute=function(e,t,r,a){var i=t.x,o=t.y,u=t.z;n(r)&&(e[r]=i,e[r+1]=o,e[r+2]=u),n(a)&&(e[a]=u,e[a-1]=o,e[a-2]=i)};var I=new e,b=new e;m.computePositions=function(n){var r=n.granularity,i=n.positions,s=n.ellipsoid;i=h(i,s);var m=n.width/2,y=n.cornerType,v=n.saveAttributes,g=x,R=E,z=S,C=_,D=O,U=M,L=T,q=P,B=A,F=N,W=[],G=v?[]:void 0,k=v?[]:void 0,V=i[0],j=i[1];R=e.normalize(e.subtract(j,V,R),R),g=s.geodeticSurfaceNormal(V,g),C=e.normalize(e.cross(g,R,C),C),v&&(G.push(C.x,C.y,C.z),k.push(g.x,g.y,g.z)),L=e.clone(V,L),V=j,z=e.negate(R,z);var Y,H,Z=[],X=i.length;for(H=1;X-1>H;H++){g=s.geodeticSurfaceNormal(V,g),j=i[H+1],R=e.normalize(e.subtract(j,V,R),R),D=e.normalize(e.add(R,z,D),D);var J=e.multiplyByScalar(g,e.dot(R,g),I);e.subtract(R,J,J),e.normalize(J,J);var Q=e.multiplyByScalar(g,e.dot(z,g),b);e.subtract(z,Q,Q),e.normalize(Q,Q);var K=!a.equalsEpsilon(Math.abs(e.dot(J,Q)),1,a.EPSILON7);if(K){D=e.cross(D,g,D),D=e.cross(g,D,D);var $=m/Math.max(.25,e.magnitude(e.cross(D,z,p))),et=u.angleIsGreaterThanPi(R,z,V,s);D=e.multiplyByScalar(D,$,D),et?(q=e.add(V,D,q),F=e.add(q,e.multiplyByScalar(C,m,F),F),B=e.add(q,e.multiplyByScalar(C,2*m,B),B),w[0]=e.clone(L,w[0]),w[1]=e.clone(F,w[1]),Y=o.generateArc({positions:w,granularity:r,ellipsoid:s}),W=f(Y,C,m,W),v&&(G.push(C.x,C.y,C.z),k.push(g.x,g.y,g.z)),U=e.clone(B,U),C=e.normalize(e.cross(g,R,C),C),B=e.add(q,e.multiplyByScalar(C,2*m,B),B),L=e.add(q,e.multiplyByScalar(C,m,L),L),y===t.ROUNDED||y===t.BEVELED?Z.push({leftPositions:c(q,U,B,y,et)}):Z.push({leftPositions:d(V,e.negate(D,D),B,et)})):(B=e.add(V,D,B),F=e.add(B,e.negate(e.multiplyByScalar(C,m,F),F),F),q=e.add(B,e.negate(e.multiplyByScalar(C,2*m,q),q),q),w[0]=e.clone(L,w[0]),w[1]=e.clone(F,w[1]),Y=o.generateArc({positions:w,granularity:r,ellipsoid:s}),W=f(Y,C,m,W),v&&(G.push(C.x,C.y,C.z),k.push(g.x,g.y,g.z)),U=e.clone(q,U),C=e.normalize(e.cross(g,R,C),C),q=e.add(B,e.negate(e.multiplyByScalar(C,2*m,q),q),q),L=e.add(B,e.negate(e.multiplyByScalar(C,m,L),L),L),y===t.ROUNDED||y===t.BEVELED?Z.push({rightPositions:c(B,U,q,y,et)}):Z.push({rightPositions:d(V,D,q,et)})),z=e.negate(R,z)}V=j}g=s.geodeticSurfaceNormal(V,g),w[0]=e.clone(L,w[0]),w[1]=e.clone(V,w[1]),Y=o.generateArc({positions:w,granularity:r,ellipsoid:s}),W=f(Y,C,m,W),v&&(G.push(C.x,C.y,C.z),k.push(g.x,g.y,g.z));var tt;return y===t.ROUNDED&&(tt=l(W)),{positions:W,corners:Z,lefts:G,normals:k,endPositions:tt}};var C=new e,D=new e;return m.scaleToGeodeticHeight=function(t,n,a,i){var o=t.length,u=r(i)?i:new Array(t.length);u.length=t.length;for(var s=n,c=0;o>c;c+=3){var l=a.scaleToGeodeticSurface(e.fromArray(t,c,D),D),d=C;0!==n&&(d=a.geodeticSurfaceNormal(l,d),d=e.multiplyByScalar(d,s,d),l=e.add(l,d,l)),u[c]=l.x,u[c+1]=l.y,u[c+2]=l.z}return u},m}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,n,r,a){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,a.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,r.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(e){var r=-1;for(var a in e.attributes)if(e.attributes.hasOwnProperty(a)&&t(e.attributes[a])&&t(e.attributes[a].values)){var i=e.attributes[a],o=i.values.length/i.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r){"use strict";var a={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return a.getSizeInBytes=function(e){switch(e){case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},a.validate=function(t){return e(t)&&(t===a.UNSIGNED_BYTE||t===a.UNSIGNED_SHORT||t===a.UNSIGNED_INT)},a.createTypedArray=function(e,t){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},a.createTypedArrayFromArrayBuffer=function(e,t,n,a){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,a):new Uint16Array(t,n,a)},n(a)}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.position=e(t.position,!1),this.normal=e(t.normal,!1),this.st=e(t.st,!1),this.binormal=e(t.binormal,!1),this.tangent=e(t.tangent,!1),this.color=e(t.color,!1)};return a.POSITION_ONLY=r(new a({position:!0})),a.POSITION_AND_NORMAL=r(new a({position:!0,normal:!0})),a.POSITION_NORMAL_AND_ST=r(new a({position:!0,normal:!0,st:!0})),a.POSITION_AND_ST=r(new a({position:!0,st:!0})),a.POSITION_AND_COLOR=r(new a({position:!0,color:!0})),a.ALL=r(new a({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),a.DEFAULT=a.POSITION_NORMAL_AND_ST,a.packedLength=6,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.position?1:0,n[r++]=t.normal?1:0,n[r++]=t.st?1:0,n[r++]=t.binormal?1:0,n[r++]=t.tangent?1:0,n[r++]=t.color?1:0},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.position=1===n[r++],i.normal=1===n[r++],i.st=1===n[r++],i.binormal=1===n[r++],i.tangent=1===n[r++],i.color=1===n[r++],i},a.clone=function(e,n){return t(e)?(t(n)||(n=new a),n.position=e.position,n.normal=e.normal,n.st=e.st,n.binormal=e.binormal,n.tangent=e.tangent,n.color=e.color,n):void 0},a}),define("Core/CorridorGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./CornerType","./CorridorGeometryLibrary","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PolylinePipeline","./PrimitiveType","./VertexFormat"],function(e,t,n,r,a,i,o,u,s,c,l,d,f,h,m,p,y){"use strict";function v(e,n,r,i,o,u){var s=e.normals,c=e.tangents,l=e.binormals,d=t.normalize(t.cross(r,n,A),A);u.normal&&a.addAttribute(s,n,i,o),u.binormal&&a.addAttribute(l,r,i,o),u.tangent&&a.addAttribute(c,d,i,o)}function g(e,r,i){var u,s,c,m=e.positions,p=e.corners,y=e.endPositions,g=e.lefts,w=e.normals,x=new d,E=0,T=0,R=0;for(s=0;s<m.length;s+=2)c=m[s].length-3,E+=c,R+=2*c,T+=m[s+1].length-3;for(E+=3,T+=3,s=0;s<p.length;s++){u=p[s];var z=p[s].leftPositions;o(z)?(c=z.length,E+=c,R+=c):(c=p[s].rightPositions.length,T+=c,R+=c)}var I,b=o(y);b&&(I=y[0].length-3,E+=I,T+=I,I/=3,R+=6*I);var C,D,U,L,q,B,F=E+T,W=new Float64Array(F),G=r.normal?new Float32Array(F):void 0,k=r.tangent?new Float32Array(F):void 0,V=r.binormal?new Float32Array(F):void 0,j={normals:G,tangents:k,binormals:V},Y=0,H=F-1,Z=S,X=_,J=I/2,Q=f.createTypedArray(F/3,R),K=0;if(b){B=O,q=M;var $=y[0];for(Z=t.fromArray(w,0,Z),X=t.fromArray(g,0,X),s=0;J>s;s++)B=t.fromArray($,3*(J-1-s),B),q=t.fromArray($,3*(J+s),q),a.addAttribute(W,q,Y),a.addAttribute(W,B,void 0,H),v(j,Z,X,Y,H,r),D=Y/3,L=D+1,C=(H-2)/3,U=C-1,Q[K++]=C,Q[K++]=D,Q[K++]=U,Q[K++]=U,Q[K++]=D,Q[K++]=L,Y+=3,H-=3}var et=0,tt=0,nt=m[et++],rt=m[et++];W.set(nt,Y),W.set(rt,H-rt.length+1),X=t.fromArray(g,tt,X);var at,it;for(c=rt.length-3,s=0;c>s;s+=3)at=i.geodeticSurfaceNormal(t.fromArray(nt,s,A),A),it=i.geodeticSurfaceNormal(t.fromArray(rt,c-s,N),N),Z=t.normalize(t.add(at,it,Z),Z),v(j,Z,X,Y,H,r),D=Y/3,L=D+1,C=(H-2)/3,U=C-1,Q[K++]=C,Q[K++]=D,Q[K++]=U,Q[K++]=U,Q[K++]=D,Q[K++]=L,Y+=3,H-=3;for(at=i.geodeticSurfaceNormal(t.fromArray(nt,c,A),A),it=i.geodeticSurfaceNormal(t.fromArray(rt,c,N),N),Z=t.normalize(t.add(at,it,Z),Z),tt+=3,s=0;s<p.length;s++){var ot;u=p[s];var ut,st,ct=u.leftPositions,lt=u.rightPositions,dt=P,ft=O,ht=M;if(Z=t.fromArray(w,tt,Z),o(ct)){for(v(j,Z,X,void 0,H,r),H-=3,ut=L,st=U,ot=0;ot<ct.length/3;ot++)dt=t.fromArray(ct,3*ot,dt),Q[K++]=ut,Q[K++]=st-ot-1,Q[K++]=st-ot,a.addAttribute(W,dt,void 0,H),ft=t.fromArray(W,3*(st-ot-1),ft),ht=t.fromArray(W,3*ut,ht),X=t.normalize(t.subtract(ft,ht,X),X),v(j,Z,X,void 0,H,r),H-=3;dt=t.fromArray(W,3*ut,dt),ft=t.subtract(t.fromArray(W,3*st,ft),dt,ft),ht=t.subtract(t.fromArray(W,3*(st-ot),ht),dt,ht),X=t.normalize(t.add(ft,ht,X),X),v(j,Z,X,Y,void 0,r),Y+=3}else{for(v(j,Z,X,Y,void 0,r),Y+=3,ut=U,st=L,ot=0;ot<lt.length/3;ot++)dt=t.fromArray(lt,3*ot,dt),Q[K++]=ut,Q[K++]=st+ot,Q[K++]=st+ot+1,a.addAttribute(W,dt,Y),ft=t.fromArray(W,3*ut,ft),ht=t.fromArray(W,3*(st+ot),ht),X=t.normalize(t.subtract(ft,ht,X),X),v(j,Z,X,Y,void 0,r),Y+=3;dt=t.fromArray(W,3*ut,dt),ft=t.subtract(t.fromArray(W,3*(st+ot),ft),dt,ft),ht=t.subtract(t.fromArray(W,3*st,ht),dt,ht),X=t.normalize(t.negate(t.add(ht,ft,X),X),X),v(j,Z,X,void 0,H,r),H-=3}for(nt=m[et++],rt=m[et++],nt.splice(0,3),rt.splice(rt.length-3,3),W.set(nt,Y),W.set(rt,H-rt.length+1),c=rt.length-3,tt+=3,X=t.fromArray(g,tt,X),ot=0;ot<rt.length;ot+=3)at=i.geodeticSurfaceNormal(t.fromArray(nt,ot,A),A),it=i.geodeticSurfaceNormal(t.fromArray(rt,c-ot,N),N),Z=t.normalize(t.add(at,it,Z),Z),v(j,Z,X,Y,H,r),L=Y/3,D=L-1,U=(H-2)/3,C=U+1,Q[K++]=C,Q[K++]=D,Q[K++]=U,Q[K++]=U,Q[K++]=D,Q[K++]=L,Y+=3,H-=3;Y-=3,H+=3}if(Z=t.fromArray(w,w.length-3,Z),v(j,Z,X,Y,H,r),b){Y+=3,H-=3,B=O,q=M;var mt=y[1];for(s=0;J>s;s++)B=t.fromArray(mt,3*(I-s-1),B),q=t.fromArray(mt,3*s,q),a.addAttribute(W,B,void 0,H),a.addAttribute(W,q,Y),v(j,Z,X,Y,H,r),L=Y/3,D=L-1,U=(H-2)/3,C=U+1,Q[K++]=C,Q[K++]=D,Q[K++]=U,Q[K++]=U,Q[K++]=D,Q[K++]=L,Y+=3,H-=3}if(x.position=new l({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:W}),r.st){var pt,yt,vt=new Float32Array(2*(F/3)),gt=0;if(b){E/=3,T/=3;var wt=Math.PI/(I+1);yt=1/(E-I+1),pt=1/(T-I+1);var xt,Et=I/2;for(s=Et+1;I+1>s;s++)xt=h.PI_OVER_TWO+wt*s,vt[gt++]=pt*(1+Math.cos(xt)),vt[gt++]=.5*(1+Math.sin(xt));for(s=1;T-I+1>s;s++)vt[gt++]=s*pt,vt[gt++]=0;for(s=I;s>Et;s--)xt=h.PI_OVER_TWO-s*wt,vt[gt++]=1-pt*(1+Math.cos(xt)),vt[gt++]=.5*(1+Math.sin(xt));for(s=Et;s>0;s--)xt=h.PI_OVER_TWO-wt*s,vt[gt++]=1-yt*(1+Math.cos(xt)),vt[gt++]=.5*(1+Math.sin(xt));for(s=E-I;s>0;s--)vt[gt++]=s*yt,vt[gt++]=1;for(s=1;Et+1>s;s++)xt=h.PI_OVER_TWO+wt*s,vt[gt++]=yt*(1+Math.cos(xt)),vt[gt++]=.5*(1+Math.sin(xt))}else{for(E/=3,T/=3,yt=1/(E-1),pt=1/(T-1),s=0;T>s;s++)vt[gt++]=s*pt,vt[gt++]=0;for(s=E;s>0;s--)vt[gt++]=(s-1)*yt,vt[gt++]=1}x.st=new l({componentDatatype:n.FLOAT,componentsPerAttribute:2,values:vt})}return r.normal&&(x.normal=new l({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:j.normals})),r.tangent&&(x.tangent=new l({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:j.tangents})),r.binormal&&(x.binormal=new l({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:j.binormals})),{attributes:x,indices:Q}}function w(e,n){if(!(n.normal||n.binormal||n.tangent||n.st))return e;var r,i,o=e.position.values;(n.normal||n.binormal)&&(r=e.normal.values,i=e.binormal.values);var u,s=e.position.values.length/18,c=3*s,l=2*s,d=2*c;if(n.normal||n.binormal||n.tangent){var f=n.normal?new Float32Array(6*c):void 0,h=n.binormal?new Float32Array(6*c):void 0,m=n.tangent?new Float32Array(6*c):void 0,p=S,y=_,v=O,g=M,w=T,x=P,E=d;for(u=0;c>u;u+=3){var A=E+d;p=t.fromArray(o,u,p),y=t.fromArray(o,u+c,y),v=t.fromArray(o,(u+3)%c,v),y=t.subtract(y,p,y),v=t.subtract(v,p,v),g=t.normalize(t.cross(y,v,g),g),n.normal&&(a.addAttribute(f,g,A),a.addAttribute(f,g,A+3),a.addAttribute(f,g,E),a.addAttribute(f,g,E+3)),(n.tangent||n.binormal)&&(x=t.fromArray(r,u,x),n.binormal&&(a.addAttribute(h,x,A),a.addAttribute(h,x,A+3),a.addAttribute(h,x,E),a.addAttribute(h,x,E+3)),n.tangent&&(w=t.normalize(t.cross(x,g,w),w),a.addAttribute(m,w,A),a.addAttribute(m,w,A+3),a.addAttribute(m,w,E),a.addAttribute(m,w,E+3))),E+=6}if(n.normal){for(f.set(r),u=0;c>u;u+=3)f[u+c]=-r[u],f[u+c+1]=-r[u+1],f[u+c+2]=-r[u+2];e.normal.values=f}else e.normal=void 0;if(n.binormal?(h.set(i),h.set(i,c),e.binormal.values=h):e.binormal=void 0,n.tangent){var N=e.tangent.values;m.set(N),m.set(N,c),e.tangent.values=m}}if(n.st){var R=e.st.values,z=new Float32Array(6*l);z.set(R),z.set(R,l);for(var I=2*l,b=0;2>b;b++){for(z[I++]=R[0],z[I++]=R[1],u=2;l>u;u+=2){var C=R[u],D=R[u+1];z[I++]=C,z[I++]=D,z[I++]=C,z[I++]=D}z[I++]=R[0],z[I++]=R[1]}e.st.values=z}return e}function x(e,t,n){n[t++]=e[0],n[t++]=e[1],n[t++]=e[2];for(var r=3;r<e.length;r+=3){var a=e[r],i=e[r+1],o=e[r+2];n[t++]=a,n[t++]=i,n[t++]=o,n[t++]=a,n[t++]=i,n[t++]=o}return n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n}function E(e,t){var n=new y({position:t.positon,normal:t.normal||t.binormal,tangent:t.tangent,binormal:t.normal||t.binormal,st:t.st}),r=e.ellipsoid,i=a.computePositions(e),o=g(i,n,r),u=e.height,s=e.extrudedHeight,c=o.attributes,l=o.indices,d=c.position.values,h=d.length,m=new Float64Array(6*h),p=new Float64Array(h);p.set(d);var v=new Float64Array(4*h);d=a.scaleToGeodeticHeight(d,u,r,d),v=x(d,0,v),p=a.scaleToGeodeticHeight(p,s,r,p),v=x(p,2*h,v),m.set(d),m.set(p,h),m.set(v,2*h),c.position.values=m,h/=3;var E,S=l.length,_=h+h,O=f.createTypedArray(m.length/3,2*S+3*_);O.set(l);var M=S;for(E=0;S>E;E+=3){var T=l[E],P=l[E+1],A=l[E+2];O[M++]=A+h,O[M++]=P+h,O[M++]=T+h}c=w(c,t);var N,R,z,I;for(E=0;_>E;E+=2)N=E+_,R=N+_,z=N+1,I=R+1,O[M++]=N,O[M++]=R,O[M++]=z,O[M++]=z,O[M++]=R,O[M++]=I;return{attributes:c,indices:O}}var S=new t,_=new t,O=new t,M=new t,T=new t,P=new t,A=new t,N=new t,R=function(e){e=i(e,i.EMPTY_OBJECT);var n=e.positions,a=e.width;this._positions=n,this._ellipsoid=s.clone(i(e.ellipsoid,s.WGS84)),this._vertexFormat=y.clone(i(e.vertexFormat,y.DEFAULT)),this._width=a,this._height=i(e.height,0),this._extrudedHeight=i(e.extrudedHeight,this._height),this._cornerType=i(e.cornerType,r.ROUNDED),this._granularity=i(e.granularity,h.RADIANS_PER_DEGREE),this._workerName="createCorridorGeometry",this.packedLength=1+n.length*t.packedLength+s.packedLength+y.packedLength+5};R.pack=function(e,n,r){r=i(r,0);var a=e._positions,o=a.length;n[r++]=o;for(var u=0;o>u;++u,r+=t.packedLength)t.pack(a[u],n,r);s.pack(e._ellipsoid,n,r),r+=s.packedLength,y.pack(e._vertexFormat,n,r),r+=y.packedLength,n[r++]=e._width,n[r++]=e._height,n[r++]=e._extrudedHeight,n[r++]=e._cornerType,n[r]=e._granularity};var z=s.clone(s.UNIT_SPHERE),I=new y,b={positions:void 0,ellipsoid:z,vertexFormat:I,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0};return R.unpack=function(e,n,r){n=i(n,0);for(var a=e[n++],u=new Array(a),c=0;a>c;++c,n+=t.packedLength)u[c]=t.unpack(e,n);var l=s.unpack(e,n,z);n+=s.packedLength;var d=y.unpack(e,n,I);n+=y.packedLength;var f=e[n++],h=e[n++],m=e[n++],p=e[n++],v=e[n];return o(r)?(r._positions=u,r._ellipsoid=s.clone(l,r._ellipsoid),r._vertexFormat=y.clone(d,r._vertexFormat),r._width=f,r._height=h,r._extrudedHeight=m,r._cornerType=p,r._granularity=v,r):(b.positions=u,b.width=f,b.height=h,b.extrudedHeight=m,b.cornerType=p,b.granularity=v,new R(b))},R.createGeometry=function(t){var n=t._positions,r=t._height,i=t._extrudedHeight,o=r!==i,u=m.removeDuplicates(n);if(u.length<2)return void 0;var s,l=t._ellipsoid,d=t._vertexFormat,f={ellipsoid:l,positions:u,width:t._width,cornerType:t._cornerType,granularity:t._granularity,saveAttributes:!0};if(o){var h=Math.max(r,i);i=Math.min(r,i),r=h,f.height=r,f.extrudedHeight=i,s=E(f,d)}else{var y=a.computePositions(f);s=g(y,d,l),s.attributes.position.values=a.scaleToGeodeticHeight(s.attributes.position.values,r,l,s.attributes.position.values)}var v=s.attributes,w=e.fromVertices(v.position.values,void 0,3);return d.position||(s.attributes.position.values=void 0),new c({attributes:v,indices:s.indices,primitiveType:p.TRIANGLES,boundingSphere:w})},R}),define("Workers/createCorridorGeometry",["../Core/CorridorGeometry","../Core/defined","../Core/Ellipsoid"],function(e,t,n){"use strict";function r(r,a){return t(a)&&(r=e.unpack(r,a)),r._ellipsoid=n.clone(r._ellipsoid),e.createGeometry(r)}return r})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createCorridorOutlineGeometry.js b/libs/Cesium/Workers/createCorridorOutlineGeometry.js new file mode 100644 index 0000000000..06a3b35439 --- /dev/null +++ b/libs/Cesium/Workers/createCorridorOutlineGeometry.js @@ -0,0 +1,229 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[1&e];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(e){return e>0?1:0>e?-1:0},n.signNotZero=function(e){return 0>e?-1:1},n.toSNorm=function(e){return Math.round(255*(.5*n.clamp(e,-1,1)+.5))},n.fromSNorm=function(e){return 2*(n.clamp(e,0,255)/255)-1},n.sinh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t-n)},n.cosh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t+n)},n.lerp=function(e,t,n){return(1-n)*e+n*t},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(e){return e*n.RADIANS_PER_DEGREE},n.toDegrees=function(e){return e*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(e){var t=n.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},n.negativePiToPi=function(e){return n.zeroToTwoPi(e+n.PI)-n.PI},n.zeroToTwoPi=function(e){var t=n.mod(e,n.TWO_PI);return Math.abs(t)<n.EPSILON14&&Math.abs(e)>n.EPSILON14?n.TWO_PI:t},n.mod=function(e,t){return(e%t+t)%t},n.equalsEpsilon=function(e,n,r,a){a=t(a,r);var i=Math.abs(e-n);return a>=i||i<=r*Math.max(Math.abs(e),Math.abs(n))};var r=[1];n.factorial=function(e){var t=r.length;if(e>=t)for(var n=r[t-1],a=t;e>=a;a++)r.push(n*a);return r[e]},n.incrementWrap=function(e,n,r){return r=t(r,0),++e,e>n&&(e=r),e},n.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},n.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},n.clamp=function(e,t,n){return t>e?t:e>n?n:e};var a=new e;return n.setRandomNumberSeed=function(t){a=new e(t)},n.nextRandomNumber=function(){return a.random()},n.acosClamped=function(e){return Math.acos(n.clamp(e,-1,1))},n.asinClamped=function(e){return Math.asin(n.clamp(e,-1,1))},n.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0)};i.fromSpherical=function(n,r){t(r)||(r=new i);var a=n.clock,o=n.cone,u=e(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(a),r.y=s*Math.sin(a),r.z=u*Math.cos(o),r},i.fromElements=function(e,n,r,a){return t(a)?(a.x=e,a.y=n,a.z=r,a):new i(e,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n):new i(e.x,e.y,e.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r]=t.z},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i,c=new i;i.angleBetween=function(e,t){i.normalize(e,s),i.normalize(t,c);var n=i.dot(s,c),r=i.magnitude(i.cross(s,c,s));return Math.atan2(r,n)};var l=new i;i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Z,t):n.y<=n.z?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_Z,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)},i.cross=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=t.x,u=t.y,s=t.z,c=a*s-i*u,l=i*o-r*s,d=r*u-a*o;return n.x=c,n.y=l,n.z=d,n},i.fromDegrees=function(e,t,n,r,o){var u=a.toRadians(e),s=a.toRadians(t);return i.fromRadians(u,s,n,r,o)};var d=new i,f=new i,h=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(n,r,a,o,u){a=e(a,0);var s=t(o)?o.radiiSquared:h,c=Math.cos(r);d.x=c*Math.cos(n),d.y=c*Math.sin(n),d.z=Math.sin(r),d=i.normalize(d,d),i.multiplyComponents(s,d,f);var l=Math.sqrt(i.dot(d,f));return f=i.divideByScalar(f,l,f),d=i.multiplyByScalar(d,a,d),t(u)||(u=new i),i.add(f,d,u)},i.fromDegreesArray=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=a.toRadians(e[o]);return i.fromRadiansArray(r,t,n)},i.fromRadiansArray=function(e,n,r){var a=e.length;t(r)?r.length=a/2:r=new Array(a/2);for(var o=0;a>o;o+=2){var u=e[o],s=e[o+1];r[o/2]=i.fromRadians(u,s,0,n,r[o/2])}return r},i.fromDegreesArrayHeights=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o+=3)r[o]=a.toRadians(e[o]),r[o+1]=a.toRadians(e[o+1]),r[o+2]=e[o+2];return i.fromRadiansArrayHeights(r,t,n)},i.fromRadiansArrayHeights=function(e,n,r){var a=e.length;t(r)?r.length=a/3:r=new Array(a/3);for(var o=0;a>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];r[o/3]=i.fromRadians(u,s,c,n,r[o/3])}return r},i.ZERO=r(new i(0,0,0)),i.UNIT_X=r(new i(1,0,0)),i.UNIT_Y=r(new i(0,1,0)),i.UNIT_Z=r(new i(0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.longitude=e(t,0),this.latitude=e(n,0),this.height=e(r,0)};return i.fromRadians=function(n,r,a,o){return a=e(a,0),t(o)?(o.longitude=n,o.latitude=r,o.height=a,o):new i(n,r,a)},i.fromDegrees=function(e,t,n,r){return e=a.toRadians(e),t=a.toRadians(t),i.fromRadians(e,t,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.longitude=e.longitude,n.latitude=e.latitude,n.height=e.height,n):new i(e.longitude,e.latitude,e.height):void 0},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.longitude===n.longitude&&e.latitude===n.latitude&&e.height===n.height},i.equalsEpsilon=function(e,n,r){return e===n||t(e)&&t(n)&&Math.abs(e.longitude-n.longitude)<=r&&Math.abs(e.latitude-n.latitude)<=r&&Math.abs(e.height-n.height)<=r},i.ZERO=r(new i(0,0,0)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},n=function(n,r){e(t[n])||(t[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),n=Object.defineProperties;return t&&e(n)||(n=function(e){return e}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(t,r,a,i){r=n(r,0),a=n(a,0),i=n(i,0),t._radii=new e(r,a,i),t._radiiSquared=new e(r*r,a*a,i*i),t._radiiToTheFourth=new e(r*r*r*r,a*a*a*a,i*i*i*i),t._oneOverRadii=new e(0===r?0:1/r,0===a?0:1/a,0===i?0:1/i),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===a?0:1/(a*a),0===i?0:1/(i*i)),t._minimumRadius=Math.min(r,a,i),t._maximumRadius=Math.max(r,a,i),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,n)};a(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,n){if(!r(t))return void 0;var a=t._radii;return r(n)?(e.clone(a,n._radii),e.clone(t._radiiSquared,n._radiiSquared),e.clone(t._radiiToTheFourth,n._radiiToTheFourth),e.clone(t._oneOverRadii,n._oneOverRadii),e.clone(t._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=t._minimumRadius,n._maximumRadius=t._maximumRadius,n._centerToleranceSquared=t._centerToleranceSquared,n):new c(a.x,a.y,a.z)},c.fromCartesian3=function(e,t){return r(t)||(t=new c),r(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,r,a){a=n(a,0),e.pack(t._radii,r,a)},c.unpack=function(t,r,a){r=n(r,0);var i=e.unpack(t,r);return c.fromCartesian3(i,a)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,n){var a=t.longitude,i=t.latitude,o=Math.cos(i),u=o*Math.cos(a),s=o*Math.sin(a),c=Math.sin(i);return r(n)||(n=new e),n.x=u,n.y=s,n.z=c,e.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(t,n){return r(n)||(n=new e),n=e.multiplyComponents(t,this._oneOverRadiiSquared,n),e.normalize(n,n)};var l=new e,d=new e;c.prototype.cartographicToCartesian=function(t,n){var a=l,i=d;this.geodeticSurfaceNormalCartographic(t,a),e.multiplyComponents(this._radiiSquared,a,i);var o=Math.sqrt(e.dot(a,i));return e.divideByScalar(i,o,i),e.multiplyByScalar(a,t.height,a),r(n)||(n=new e),e.add(i,a,n)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;a++)t[a]=this.cartographicToCartesian(e[a],t[a]);return t};var f=new e,h=new e,m=new e;c.prototype.cartesianToCartographic=function(n,a){var i=this.scaleToGeodeticSurface(n,h);if(!r(i))return void 0;var o=this.geodeticSurfaceNormal(i,f),s=e.subtract(n,i,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),d=u.sign(e.dot(s,n))*e.magnitude(s);return r(a)?(a.longitude=c,a.latitude=l,a.height=d,a):new t(c,l,d)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;++a)t[a]=this.cartesianToCartographic(e[a],t[a]);return t};var p=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,n){var a=t.x,i=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,d=s.z,f=a*a*c*c,h=i*i*l*l,m=o*o*d*d,v=f+h+m,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,p);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,n):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,_=x.z,M=y;M.x=2*w.x*E,M.y=2*w.y*S,M.z=2*w.z*_;var O,T,P,R,N,z,I,C,A,b,D,U=(1-g)*e.magnitude(t)/(.5*e.magnitude(M)),q=0;do{U-=q,P=1/(1+U*E),R=1/(1+U*S),N=1/(1+U*_),z=P*P,I=R*R,C=N*N,A=z*P,b=I*R,D=C*N,O=f*z+h*I+m*C-1,T=f*A*E+h*b*S+m*D*_;var L=-2*T;q=O/L}while(Math.abs(O)>u.EPSILON12);return r(n)?(n.x=a*P,n.y=i*R,n.z=o*N,n):new e(a*P,i*R,o*N)},c.prototype.scaleToGeocentricSurface=function(t,n){r(n)||(n=new e);var a=t.x,i=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(a*a*u.x+i*i*u.y+o*o*u.z);return e.multiplyByScalar(t,s,n)},c.prototype.transformPositionToScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._radii,n)},c.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,n,r,a,i,o){"use strict";var u=function(e){this._ellipsoid=n(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return a(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,n){var a=this._semimajorAxis,i=t.longitude*a,o=t.latitude*a,u=t.height;return r(n)?(n.x=i,n.y=o,n.z=u,n):new e(i,o,u)},u.prototype.unproject=function(e,n){var a=this._oneOverSemimajorAxis,i=e.x*a,o=e.y*a,u=e.z;return r(n)?(n.longitude=i,n.latitude=o,n.height=u,n):new t(i,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,n){this.start=e(t,0),this.stop=e(n,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r,a){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0),this.w=e(a,0)};i.fromElements=function(e,n,r,a,o){return t(o)?(o.x=e,o.y=n,o.z=r,o.w=a,o):new i(e,n,r,a)},i.fromColor=function(e,n){return t(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new i(e.red,e.green,e.blue,e.alpha)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new i(e.x,e.y,e.z,e.w):void 0},i.packedLength=4,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r++]=t.z,n[r]=t.w},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r++],a.w=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,s);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?n.x<=n.w?i.clone(i.UNIT_X,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t):n.y<=n.z?n.y<=n.w?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)&&a.equalsEpsilon(e.w,n.w,r,i)},i.ZERO=r(new i(0,0,0,0)),i.UNIT_X=r(new i(1,0,0,0)),i.UNIT_Y=r(new i(0,1,0,0)),i.UNIT_Z=r(new i(0,0,1,0)),i.UNIT_W=r(new i(0,0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i){"use strict";function o(e){for(var t=0,n=0;9>n;++n){var r=e[n];t+=r*r}return Math.sqrt(t)}function u(e){for(var t=0,n=0;3>n;++n){var r=e[c.getElementIndex(h[n],f[n])];t+=2*r*r}return Math.sqrt(t)}function s(e,t){for(var n=i.EPSILON15,r=0,a=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(h[o],f[o])]);u>r&&(a=o,r=u)}var s=1,l=0,d=f[a],m=h[a];if(Math.abs(e[c.getElementIndex(m,d)])>n){var p,y=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(d,d)],g=e[c.getElementIndex(m,d)],w=(y-v)/2/g;p=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+p*p),l=p*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(d,d)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,d)]=l,t[c.getElementIndex(d,m)]=-l,t}var c=function(e,n,r,a,i,o,u,s,c){this[0]=t(e,0),this[1]=t(a,0),this[2]=t(u,0),this[3]=t(n,0),this[4]=t(i,0),this[5]=t(s,0),this[6]=t(r,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r++]=e[7],n[r++]=e[8]},c.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r++],a[1]=e[r++],a[2]=e[r++],a[3]=e[r++],a[4]=e[r++],a[5]=e[r++],a[6]=e[r++],a[7]=e[r++],a[8]=e[r++],a},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r],a[1]=e[r+1],a[2]=e[r+2],a[3]=e[r+3],a[4]=e[r+4],a[5]=e[r+5],a[6]=e[r+6],a[7]=e[r+7],a[8]=e[r+8],a},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var r=e.x*e.x,a=e.x*e.y,i=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,d=e.z*e.z,f=e.z*e.w,h=e.w*e.w,m=r-u-d+h,p=2*(a-f),y=2*(i+l),v=2*(a+f),g=-r+u-d+h,w=2*(s-o),x=2*(i-l),E=2*(s+o),S=-r-u+d+h;return n(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=p,t[4]=g,t[5]=E,t[6]=y,t[7]=w,t[8]=S,t):new c(m,p,y,v,g,w,x,E,S)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return n(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=a,t[6]=0,t[7]=-a,t[8]=r,t):new c(1,0,0,0,r,-a,0,a,r)},c.fromRotationY=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=0,t[2]=-a,t[3]=0,t[4]=1,t[5]=0,t[6]=a,t[7]=0,t[8]=r,t):new c(r,0,a,0,1,0,-a,0,r)},c.fromRotationZ=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=a,t[2]=0,t[3]=-a,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(r,-a,0,a,r,0,0,0,1)},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,n){var r=3*t,a=e[r],i=e[r+1],o=e[r+2];return n.x=a,n.y=i,n.z=o,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=3*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r},c.getRow=function(e,t,n){var r=e[t],a=e[t+3],i=e[t+6];return n.x=r,n.y=a,n.z=i,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+3]=n.y,r[t+6]=n.z,r};var l=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),n};var d=new e;c.getMaximumScale=function(t){return c.getScale(t,d),e.maximumComponent(d)},c.multiply=function(e,t,n){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],a=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],i=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],d=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=r,n[1]=a,n[2]=i,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=d,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[3]*a+e[6]*i,u=e[1]*r+e[4]*a+e[7]*i,s=e[2]*r+e[5]*a+e[8]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n},c.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var n=e[0],r=e[3],a=e[6],i=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=n,t[1]=r,t[2]=a,t[3]=i,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var f=[1,0,0],h=[2,2,1],m=new c,p=new c;return c.computeEigenDecomposition=function(e,t){var r=i.EPSILON20,a=10,l=0,d=0;n(t)||(t={});for(var f=t.unitary=c.clone(c.IDENTITY,t.unitary),h=t.diagonal=c.clone(e,t.diagonal),y=r*o(h);a>d&&u(h)>y;)s(h,m),c.transpose(m,p),c.multiply(h,m,h),c.multiply(p,h,h),c.multiply(f,m,f),++l>2&&(++d,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],n=e[3],r=e[6],a=e[1],i=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(i*c-s*o)+a*(s*r-n*c)+u*(n*o-i*r)},c.inverse=function(e,t){var n=e[0],a=e[1],o=e[2],u=e[3],s=e[4],l=e[5],d=e[6],f=e[7],h=e[8],m=c.determinant(e);if(Math.abs(m)<=i.EPSILON15)throw new r("matrix is not invertible");t[0]=s*h-f*l,t[1]=f*o-a*h,t[2]=a*l-s*o,t[3]=d*l-u*h,t[4]=n*h-d*o,t[5]=u*o-n*l,t[6]=u*f-d*s,t[7]=d*a-n*f,t[8]=n*s-u*a;var p=1/m;return c.multiplyByScalar(t,p,t)},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},c.IDENTITY=a(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,n,r,a,i,o,u,s){"use strict";var c=function(e,t,r,a,i,o,u,s,c,l,d,f,h,m,p,y){this[0]=n(e,0),this[1]=n(i,0),this[2]=n(c,0),this[3]=n(h,0),this[4]=n(t,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(d,0),this[11]=n(p,0),this[12]=n(a,0),this[13]=n(s,0),this[14]=n(f,0),this[15]=n(y,0)};c.packedLength=16,c.pack=function(e,t,r){r=n(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},c.unpack=function(e,t,a){return t=n(t,0),r(a)||(a=new c),a[0]=e[t++],a[1]=e[t++],a[2]=e[t++],a[3]=e[t++],a[4]=e[t++],a[5]=e[t++],a[6]=e[t++],a[7]=e[t++],a[8]=e[t++],a[9]=e[t++],a[10]=e[t++],a[11]=e[t++],a[12]=e[t++],a[13]=e[t++],a[14]=e[t++],a[15]=e[t],a},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,a,i){return a=n(a,e.ZERO),r(i)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=0,i[4]=t[3],i[5]=t[4],i[6]=t[5],i[7]=0,i[8]=t[6],i[9]=t[7],i[10]=t[8],i[11]=0,i[12]=a.x,i[13]=a.y,i[14]=a.z,i[15]=1,i):new c(t[0],t[3],t[6],a.x,t[1],t[4],t[7],a.y,t[2],t[5],t[8],a.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,n,a){r(a)||(a=new c);var i=n.x,o=n.y,u=n.z,s=t.x*t.x,l=t.x*t.y,d=t.x*t.z,f=t.x*t.w,h=t.y*t.y,m=t.y*t.z,p=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-h-y+g,x=2*(l-v),E=2*(d+p),S=2*(l+v),_=-s+h-y+g,M=2*(m-f),O=2*(d-p),T=2*(m+f),P=-s-h+y+g;return a[0]=w*i,a[1]=S*i,a[2]=O*i,a[3]=0,a[4]=x*o,a[5]=_*o,a[6]=T*o,a[7]=0,a[8]=E*u,a[9]=M*u,a[10]=P*u,a[11]=0,a[12]=e.x,a[13]=e.y,a[14]=e.z,a[15]=1,a},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,d=new e,f=new e;c.fromCamera=function(t,n){var a=t.eye,i=t.target,o=t.up;e.normalize(e.subtract(i,a,l),l),e.normalize(e.cross(l,o,d),d),e.normalize(e.cross(d,l,f),f);var u=d.x,s=d.y,h=d.z,m=l.x,p=l.y,y=l.z,v=f.x,g=f.y,w=f.z,x=a.x,E=a.y,S=a.z,_=u*-x+s*-E+h*-S,M=v*-x+g*-E+w*-S,O=m*x+p*E+y*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=g,n[6]=-p,n[7]=0,n[8]=h,n[9]=w,n[10]=-y,n[11]=0,n[12]=_,n[13]=M,n[14]=O,n[15]=1,n):new c(u,s,h,_,v,g,w,M,-m,-p,-y,O,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,n,r,a){var i=Math.tan(.5*e),o=1/i,u=o/t,s=(r+n)/(n-r),c=2*r*n/(n-r);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=o,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=s,a[11]=-1,a[12]=0,a[13]=0,a[14]=c,a[15]=0,a},c.computeOrthographicOffCenter=function(e,t,n,r,a,i,o){var u=1/(t-e),s=1/(r-n),c=1/(i-a),l=-(t+e)*u,d=-(r+n)*s,f=-(i+a)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=d,o[14]=f,o[15]=1,o +},c.computePerspectiveOffCenter=function(e,t,n,r,a,i,o){var u=2*a/(t-e),s=2*a/(r-n),c=(t+e)/(t-e),l=(r+n)/(r-n),d=-(i+a)/(i-a),f=-1,h=-2*i*a/(i-a);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=d,o[11]=f,o[12]=0,o[13]=0,o[14]=h,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,n,r,a,i){var o=2*a/(t-e),u=2*a/(r-n),s=(t+e)/(t-e),c=(r+n)/(r-n),l=-1,d=-1,f=-2*a;return i[0]=o,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=u,i[6]=0,i[7]=0,i[8]=s,i[9]=c,i[10]=l,i[11]=d,i[12]=0,i[13]=0,i[14]=f,i[15]=0,i},c.computeViewportTransformation=function(e,t,r,a){e=n(e,n.EMPTY_OBJECT);var i=n(e.x,0),o=n(e.y,0),u=n(e.width,0),s=n(e.height,0);t=n(t,0),r=n(r,1);var c=.5*u,l=.5*s,d=.5*(r-t),f=c,h=l,m=d,p=i+c,y=o+l,v=t+d,g=1;return a[0]=f,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=h,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=m,a[11]=0,a[12]=p,a[13]=y,a[14]=v,a[15]=g,a},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,n){var r=4*t,a=e[r],i=e[r+1],o=e[r+2],u=e[r+3];return n.x=a,n.y=i,n.z=o,n.w=u,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=4*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r[a+3]=n.w,r},c.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n},c.getRow=function(e,t,n){var r=e[t],a=e[t+4],i=e[t+8],o=e[t+12];return n.x=r,n.y=a,n.z=i,n.w=o,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+4]=n.y,r[t+8]=n.z,r[t+12]=n.w,r};var h=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],h)),n.y=e.magnitude(e.fromElements(t[4],t[5],t[6],h)),n.z=e.magnitude(e.fromElements(t[8],t[9],t[10],h)),n};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],d=e[8],f=e[9],h=e[10],m=e[11],p=e[12],y=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],_=t[4],M=t[5],O=t[6],T=t[7],P=t[8],R=t[9],N=t[10],z=t[11],I=t[12],C=t[13],A=t[14],b=t[15],D=r*w+u*x+d*E+p*S,U=a*w+s*x+f*E+y*S,q=i*w+c*x+h*E+v*S,L=o*w+l*x+m*E+g*S,B=r*_+u*M+d*O+p*T,W=a*_+s*M+f*O+y*T,F=i*_+c*M+h*O+v*T,G=o*_+l*M+m*O+g*T,k=r*P+u*R+d*N+p*z,V=a*P+s*R+f*N+y*z,j=i*P+c*R+h*N+v*z,Y=o*P+l*R+m*N+g*z,H=r*I+u*C+d*A+p*b,Z=a*I+s*C+f*A+y*b,X=i*I+c*C+h*A+v*b,J=o*I+l*C+m*A+g*b;return n[0]=D,n[1]=U,n[2]=q,n[3]=L,n[4]=B,n[5]=W,n[6]=F,n[7]=G,n[8]=k,n[9]=V,n[10]=j,n[11]=Y,n[12]=H,n[13]=Z,n[14]=X,n[15]=J,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},c.multiplyTransformation=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],d=e[10],f=e[12],h=e[13],m=e[14],p=t[0],y=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],_=t[10],M=t[12],O=t[13],T=t[14],P=r*p+o*y+c*v,R=a*p+u*y+l*v,N=i*p+s*y+d*v,z=r*g+o*w+c*x,I=a*g+u*w+l*x,C=i*g+s*w+d*x,A=r*E+o*S+c*_,b=a*E+u*S+l*_,D=i*E+s*S+d*_,U=r*M+o*O+c*T+f,q=a*M+u*O+l*T+h,L=i*M+s*O+d*T+m;return n[0]=P,n[1]=R,n[2]=N,n[3]=0,n[4]=z,n[5]=I,n[6]=C,n[7]=0,n[8]=A,n[9]=b,n[10]=D,n[11]=0,n[12]=U,n[13]=q,n[14]=L,n[15]=1,n},c.multiplyByMatrix3=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],d=e[10],f=t[0],h=t[1],m=t[2],p=t[3],y=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=r*f+o*h+c*m,S=a*f+u*h+l*m,_=i*f+s*h+d*m,M=r*p+o*y+c*v,O=a*p+u*y+l*v,T=i*p+s*y+d*v,P=r*g+o*w+c*x,R=a*g+u*w+l*x,N=i*g+s*w+d*x;return n[0]=E,n[1]=S,n[2]=_,n[3]=0,n[4]=M,n[5]=O,n[6]=T,n[7]=0,n[8]=P,n[9]=R,n[10]=N,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n},c.multiplyByTranslation=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=r*e[0]+a*e[4]+i*e[8]+e[12],u=r*e[1]+a*e[5]+i*e[9]+e[13],s=r*e[2]+a*e[6]+i*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=o,n[13]=u,n[14]=s,n[15]=e[15],n};var p=new e;c.multiplyByUniformScale=function(e,t,n){return p.x=t,p.y=t,p.z=t,c.multiplyByScale(e,p,n)},c.multiplyByScale=function(e,t,n){var r=t.x,a=t.y,i=t.z;return 1===r&&1===a&&1===i?c.clone(e,n):(n[0]=r*e[0],n[1]=r*e[1],n[2]=r*e[2],n[3]=0,n[4]=a*e[4],n[5]=a*e[5],n[6]=a*e[6],n[7]=0,n[8]=i*e[8],n[9]=i*e[9],n[10]=i*e[10],n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=1,n)},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=t.w,u=e[0]*r+e[4]*a+e[8]*i+e[12]*o,s=e[1]*r+e[5]*a+e[9]*i+e[13]*o,c=e[2]*r+e[6]*a+e[10]*i+e[14]*o,l=e[3]*r+e[7]*a+e[11]*i+e[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i,u=e[1]*r+e[5]*a+e[9]*i,s=e[2]*r+e[6]*a+e[10]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i+e[12],u=e[1]*r+e[5]*a+e[9]*i+e[13],s=e[2]*r+e[6]*a+e[10]*i+e[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var n=e[1],r=e[2],a=e[3],i=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=i,t[10]=e[10],t[11]=e[14],t[12]=a,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,n){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;var r=e[0],a=e[4],i=e[8],l=e[12],d=e[1],f=e[5],h=e[9],m=e[13],p=e[2],x=e[6],E=e[10],S=e[14],_=e[3],M=e[7],O=e[11],T=e[15],P=E*T,R=S*O,N=x*T,z=S*M,I=x*O,C=E*M,A=p*T,b=S*_,D=p*O,U=E*_,q=p*M,L=x*_,B=P*f+z*h+I*m-(R*f+N*h+C*m),W=R*d+A*h+U*m-(P*d+b*h+D*m),F=N*d+b*f+q*m-(z*d+A*f+L*m),G=C*d+D*f+L*h-(I*d+U*f+q*h),k=R*a+N*i+C*l-(P*a+z*i+I*l),V=P*r+b*i+D*l-(R*r+A*i+U*l),j=z*r+A*a+L*l-(N*r+b*a+q*l),Y=I*r+U*a+q*i-(C*r+D*a+L*i);P=i*m,R=l*h,N=a*m,z=l*f,I=a*h,C=i*f,A=r*m,b=l*d,D=r*h,U=i*d,q=r*f,L=a*d;var H=P*M+z*O+I*T-(R*M+N*O+C*T),Z=R*_+A*O+U*T-(P*_+b*O+D*T),X=N*_+b*M+q*T-(z*_+A*M+L*T),J=C*_+D*M+L*O-(I*_+U*M+q*O),Q=N*E+C*S+R*x-(I*S+P*x+z*E),K=D*S+P*p+b*E-(A*E+U*S+R*p),$=A*x+L*S+z*p-(q*S+N*p+b*x),et=q*E+I*p+U*x-(D*x+L*E+C*p),tt=r*B+a*W+i*F+l*G;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,n[0]=B*tt,n[1]=W*tt,n[2]=F*tt,n[3]=G*tt,n[4]=k*tt,n[5]=V*tt,n[6]=j*tt,n[7]=Y*tt,n[8]=H*tt,n[9]=Z*tt,n[10]=X*tt,n[11]=J*tt,n[12]=Q*tt,n[13]=K*tt,n[14]=$*tt,n[15]=et*tt,n},c.inverseTransformation=function(e,t){var n=e[0],r=e[1],a=e[2],i=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],d=e[12],f=e[13],h=e[14],m=-n*d-r*f-a*h,p=-i*d-o*f-u*h,y=-s*d-c*f-l*h;return t[0]=n,t[1]=i,t[2]=s,t[3]=0,t[4]=r,t[5]=o,t[6]=c,t[7]=0,t[8]=a,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=p,t[14]=y,t[15]=1,t},c.IDENTITY=i(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var a=function(t,n){this.normal=e.clone(t),this.distance=n};a.fromPointNormal=function(n,r,i){var o=-e.dot(r,n);return t(i)?(e.clone(r,i.normal),i.distance=o,i):new a(r,o)};var i=new e;return a.fromCartesian4=function(n,r){var o=e.fromCartesian4(n,i),u=n.w;return t(r)?(e.clone(o,r.normal),r.distance=u,r):new a(o,u)},a.getPointDistance=function(t,n){return e.dot(t.normal,n)+t.distance},a.ORIGIN_XY_PLANE=r(new a(e.UNIT_Z,0)),a.ORIGIN_YZ_PLANE=r(new a(e.UNIT_X,0)),a.ORIGIN_ZX_PLANE=r(new a(e.UNIT_Y,0)),a}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.west=t(e,0),this.south=t(n,0),this.east=t(r,0),this.north=t(a,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.west,n[r++]=e.south,n[r++]=e.east,n[r]=e.north},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.west=e[r++],a.south=e[r++],a.east=e[r++],a.north=e[r],a},s.computeWidth=function(e){var t=e.east,n=e.west;return n>t&&(t+=u.TWO_PI),t-n},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,r,a,i,o){return e=u.toRadians(t(e,0)),r=u.toRadians(t(r,0)),a=u.toRadians(t(a,0)),i=u.toRadians(t(i,0)),n(o)?(o.west=e,o.south=r,o.east=a,o.north=i,o):new s(e,r,a,i)},s.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,a=-Number.MAX_VALUE,i=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];r=Math.min(r,l.longitude),a=Math.max(a,l.longitude),i=Math.min(i,l.latitude),o=Math.max(o,l.latitude)}return n(t)?(t.west=r,t.south=i,t.east=a,t.north=o,t):new s(r,i,a,o)},s.clone=function(e,t){return n(e)?n(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return n(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},s.northwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},s.northeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},s.southeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},s.center=function(t,r){var a=t.east,i=t.west;i>a&&(a+=u.TWO_PI);var o=u.negativePiToPi(.5*(i+a)),s=.5*(t.south+t.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new e(o,s)},s.intersection=function(e,t,r){var a=e.east,i=e.west,o=t.east,c=t.west;i>a&&o>0?a+=u.TWO_PI:c>o&&a>0&&(o+=u.TWO_PI),i>a&&0>c?c+=u.TWO_PI:c>o&&0>i&&(i+=u.TWO_PI);var l=u.negativePiToPi(Math.max(i,c)),d=u.negativePiToPi(Math.min(a,o));if((e.west<e.east||t.west<t.east)&&l>=d)return void 0;var f=Math.max(e.south,t.south),h=Math.min(e.north,t.north);return f>=h?void 0:n(r)?(r.west=l,r.south=f,r.east=d,r.north=h,r):new s(l,f,d,h)},s.contains=function(e,t){var n=t.longitude,r=t.latitude,a=e.west,i=e.east;return a>i&&(i+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>a||u.equalsEpsilon(n,a,u.EPSILON14))&&(i>n||u.equalsEpsilon(n,i,u.EPSILON14))&&r>=e.south&&r<=e.north};var c=new e;return s.subsample=function(e,r,a,o){r=t(r,i.WGS84),a=t(a,0),n(o)||(o=[]);var l=0,d=e.north,f=e.south,h=e.east,m=e.west,p=c;p.height=a,p.longitude=m,p.latitude=d,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=f,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=0>d?d:f>0?f:0;for(var y=1;8>y;++y)p.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,p)&&(o[l]=r.cartographicToCartesian(p,o[l]),l++);return 0===p.latitude&&(p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,n,r,a,i,o,u,s,c,l,d,f){"use strict";var h=function(t,r){this.center=e.clone(n(t,e.ZERO)),this.radius=n(r,0)},m=new e,p=new e,y=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,_=new e,M=new e,O=new e;h.fromPoints=function(t,n){if(r(n)||(n=new h),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;for(var a=e.clone(t[0],x),i=e.clone(a,m),o=e.clone(a,p),u=e.clone(a,y),s=e.clone(a,v),c=e.clone(a,g),l=e.clone(a,w),d=t.length,f=1;d>f;f++){e.clone(t[f],a);var T=a.x,P=a.y,R=a.z;T<i.x&&e.clone(a,i),T>s.x&&e.clone(a,s),P<o.y&&e.clone(a,o),P>c.y&&e.clone(a,c),R<u.z&&e.clone(a,u),R>l.z&&e.clone(a,l)}var N=e.magnitudeSquared(e.subtract(s,i,E)),z=e.magnitudeSquared(e.subtract(c,o,E)),I=e.magnitudeSquared(e.subtract(l,u,E)),C=i,A=s,b=N;z>b&&(b=z,C=o,A=c),I>b&&(b=I,C=u,A=l);var D=S;D.x=.5*(C.x+A.x),D.y=.5*(C.y+A.y),D.z=.5*(C.z+A.z);var U=e.magnitudeSquared(e.subtract(A,D,E)),q=Math.sqrt(U),L=_;L.x=i.x,L.y=o.y,L.z=u.z;var B=M;B.x=s.x,B.y=c.y,B.z=l.z;var W=e.multiplyByScalar(e.add(L,B,E),.5,O),F=0;for(f=0;d>f;f++){e.clone(t[f],a);var G=e.magnitude(e.subtract(a,W,E));G>F&&(F=G);var k=e.magnitudeSquared(e.subtract(a,D,E));if(k>U){var V=Math.sqrt(k);q=.5*(q+V),U=q*q;var j=V-q;D.x=(q*D.x+j*a.x)/V,D.y=(q*D.y+j*a.y)/V,D.z=(q*D.z+j*a.z)/V}}return F>q?(e.clone(D,n.center),n.radius=q):(e.clone(W,n.center),n.radius=F),n};var T=new u,P=new e,R=new e,N=new t,z=new t;h.fromRectangle2D=function(e,t,n){return h.fromRectangleWithHeights2D(e,t,0,0,n)},h.fromRectangleWithHeights2D=function(t,a,i,o,u){if(r(u)||(u=new h),!r(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;a=n(a,T),f.southwest(t,N),N.height=i,f.northeast(t,z),z.height=o;var s=a.project(N,P),c=a.project(z,R),l=c.x-s.x,d=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+d*d+m*m);var p=u.center;return p.x=s.x+.5*l,p.y=s.y+.5*d,p.z=s.z+.5*m,u};var I=[];h.fromRectangle3D=function(e,t,a,i){t=n(t,o.WGS84),a=n(a,0);var u;return r(e)&&(u=f.subsample(e,t,a,I)),h.fromPoints(u,i)},h.fromVertices=function(t,a,i,o){if(r(o)||(o=new h),!r(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;a=n(a,e.ZERO),i=n(i,3);var u=x;u.x=t[0]+a.x,u.y=t[1]+a.y,u.z=t[2]+a.z;for(var s=e.clone(u,m),c=e.clone(u,p),l=e.clone(u,y),d=e.clone(u,v),f=e.clone(u,g),T=e.clone(u,w),P=t.length,R=0;P>R;R+=i){var N=t[R]+a.x,z=t[R+1]+a.y,I=t[R+2]+a.z;u.x=N,u.y=z,u.z=I,N<s.x&&e.clone(u,s),N>d.x&&e.clone(u,d),z<c.y&&e.clone(u,c),z>f.y&&e.clone(u,f),I<l.z&&e.clone(u,l),I>T.z&&e.clone(u,T)}var C=e.magnitudeSquared(e.subtract(d,s,E)),A=e.magnitudeSquared(e.subtract(f,c,E)),b=e.magnitudeSquared(e.subtract(T,l,E)),D=s,U=d,q=C;A>q&&(q=A,D=c,U=f),b>q&&(q=b,D=l,U=T);var L=S;L.x=.5*(D.x+U.x),L.y=.5*(D.y+U.y),L.z=.5*(D.z+U.z);var B=e.magnitudeSquared(e.subtract(U,L,E)),W=Math.sqrt(B),F=_;F.x=s.x,F.y=c.y,F.z=l.z;var G=M;G.x=d.x,G.y=f.y,G.z=T.z;var k=e.multiplyByScalar(e.add(F,G,E),.5,O),V=0;for(R=0;P>R;R+=i){u.x=t[R]+a.x,u.y=t[R+1]+a.y,u.z=t[R+2]+a.z;var j=e.magnitude(e.subtract(u,k,E));j>V&&(V=j);var Y=e.magnitudeSquared(e.subtract(u,L,E));if(Y>B){var H=Math.sqrt(Y);W=.5*(W+H),B=W*W;var Z=H-W;L.x=(W*L.x+Z*u.x)/H,L.y=(W*L.y+Z*u.y)/H,L.z=(W*L.z+Z*u.z)/H}}return V>W?(e.clone(L,o.center),o.radius=W):(e.clone(k,o.center),o.radius=V),o},h.fromCornerPoints=function(t,n,a){r(a)||(a=new h);var i=a.center;return e.add(t,n,i),e.multiplyByScalar(i,.5,i),a.radius=e.distance(i,n),a},h.fromEllipsoid=function(t,n){return r(n)||(n=new h),e.clone(e.ZERO,n.center),n.radius=t.maximumRadius,n};var C=new e;h.fromBoundingSpheres=function(t,n){if(r(n)||(n=new h),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;var a=t.length;if(1===a)return h.clone(t[0],n);if(2===a)return h.union(t[0],t[1],n);for(var i=[],o=0;a>o;o++)i.push(t[o].center);n=h.fromPoints(i,n);var u=n.center,s=n.radius;for(o=0;a>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,C)+c.radius)}return n.radius=s,n},h.clone=function(t,n){return r(t)?r(n)?(n.center=e.clone(t.center,n.center),n.radius=t.radius,n):new h(t.center,t.radius):void 0},h.packedLength=4,h.pack=function(e,t,r){r=n(r,0);var a=e.center;t[r++]=a.x,t[r++]=a.y,t[r++]=a.z,t[r]=e.radius},h.unpack=function(e,t,a){t=n(t,0),r(a)||(a=new h);var i=a.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],a.radius=e[t],a};var A=new e,b=new e;h.union=function(t,n,a){r(a)||(a=new h);var i=t.center,o=t.radius,u=n.center,s=n.radius,c=e.subtract(u,i,A),l=e.magnitude(c);if(o>=l+s)return t.clone(a),a;if(s>=l+o)return n.clone(a),a;var d=.5*(o+l+s),f=e.multiplyByScalar(c,(-o+d)/l,b);return e.add(f,i,f),e.clone(f,a.center),a.radius=d,a};var D=new e;h.expand=function(t,n,r){r=h.clone(t,r);var a=e.magnitude(e.subtract(n,r.center,D));return a>r.radius&&(r.radius=a),r},h.intersectPlane=function(t,n){var r=t.center,a=t.radius,i=n.normal,o=e.dot(i,r)+n.distance;return-a>o?s.OUTSIDE:a>o?s.INTERSECTING:s.INSIDE};var U=new d(new e,0);h.intersect=function(e,t){a("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=d.fromCartesian4(t,U);return h.intersectPlane(e,n)},h.transform=function(e,t,n){return r(n)||(n=new h),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=l.getMaximumScale(t)*e.radius,n};var q=new e;h.distanceSquaredTo=function(t,n){var r=e.subtract(t.center,n,q);return e.magnitudeSquared(r)-t.radius*t.radius},h.transformWithoutScale=function(e,t,n){return r(n)||(n=new h),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var L=new e;h.computePlaneDistances=function(t,n,a,i){r(i)||(i=new c);var o=e.subtract(t.center,n,L),u=e.multiplyByScalar(a,e.dot(a,o),L),s=e.magnitude(u);return i.start=s-t.radius,i.stop=s+t.radius,i};for(var B=new e,W=new e,F=new e,G=new e,k=new e,V=new t,j=new Array(8),Y=0;8>Y;++Y)j[Y]=new e;var H=new u;return h.projectTo2D=function(t,r,a){r=n(r,H);var i=r.ellipsoid,o=t.center,u=t.radius,s=i.geodeticSurfaceNormal(o,B),c=e.cross(e.UNIT_Z,s,W);e.normalize(c,c);var l=e.cross(s,c,F);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var d=e.negate(l,k),f=e.negate(c,G),m=j,p=m[0];e.add(s,l,p),e.add(p,c,p),p=m[1],e.add(s,l,p),e.add(p,f,p),p=m[2],e.add(s,d,p),e.add(p,f,p),p=m[3],e.add(s,d,p),e.add(p,c,p),e.negate(s,s),p=m[4],e.add(s,l,p),e.add(p,c,p),p=m[5],e.add(s,l,p),e.add(p,f,p),p=m[6],e.add(s,d,p),e.add(p,f,p),p=m[7],e.add(s,d,p),e.add(p,c,p);for(var y=m.length,v=0;y>v;++v){var g=m[v];e.add(o,g,g);var w=i.cartesianToCartographic(g,V);r.project(w,g)}a=h.fromPoints(m,a),o=a.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,a},h.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&t.radius===n.radius},h.prototype.intersectPlane=function(e){return h.intersectPlane(this,e)},h.prototype.intersect=function(e){return h.intersect(this,e)},h.prototype.equals=function(e){return h.equals(this,e)},h.prototype.clone=function(e){return h.clone(this,e)},h}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},a={};return t(a,{element:{get:function(){return a.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return a.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return a.supportsFullscreen()?null!==a.element:void 0}}}),a.supportsFullscreen=function(){if(e(n))return n;n=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var a,i=["webkit","moz","o","ms","khtml"],o=0,u=i.length;u>o;++o){var s=i[o];a=s+"RequestFullscreen","function"==typeof t[a]?(r.requestFullscreen=a,n=!0):(a=s+"RequestFullScreen","function"==typeof t[a]&&(r.requestFullscreen=a,n=!0)),a=s+"ExitFullscreen","function"==typeof document[a]?r.exitFullscreen=a:(a=s+"CancelFullScreen","function"==typeof document[a]&&(r.exitFullscreen=a)),a=s+"FullscreenEnabled",e(document[a])?r.fullscreenEnabled=a:(a=s+"FullScreenEnabled",e(document[a])&&(r.fullscreenEnabled=a)),a=s+"FullscreenElement",e(document[a])?r.fullscreenElement=a:(a=s+"FullScreenElement",e(document[a])&&(r.fullscreenElement=a)),a=s+"fullscreenchange",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenChange"),r.fullscreenchange=a),a=s+"fullscreenerror",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenError"),r.fullscreenerror=a)}return n},a.requestFullscreen=function(e){a.supportsFullscreen()&&e[r.requestFullscreen]()},a.exitFullscreen=function(){a.supportsFullscreen()&&document[r.exitFullscreen]()},a}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,n){"use strict";function r(e){for(var t=e.split("."),n=0,r=t.length;r>n;++n)t[n]=parseInt(t[n],10);return t}function a(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=r(e[1]))}return y}function i(){return a()&&v}function o(){if(!t(g)&&(g=!1,!a()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=r(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=r(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,_=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,_=r(e[1])))}return S}function d(){return l()&&_}function f(){if(!t(M)){M=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(M=!0,O=r(e[1]))}return M}function h(){return t(T)||(T=/Windows/i.test(navigator.appVersion)),T}function m(){return f()&&O}function p(){return t(P)||(P=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),P}var y,v,g,w,x,E,S,_,M,O,T,P,R={isChrome:a,chromeVersion:i,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:d,isFirefox:f,firefoxVersion:m,isWindows:h,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return R.supportsFullscreen=function(){return n.supportsFullscreen()},R.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},R.supportsWebWorkers=function(){return"undefined"!=typeof Worker},R}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,n,r,a){"use strict";if(!r.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(e){switch(e){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},i.fromTypedArray=function(e){return e instanceof Int8Array?i.BYTE:e instanceof Uint8Array?i.UNSIGNED_BYTE:e instanceof Int16Array?i.SHORT:e instanceof Uint16Array?i.UNSIGNED_SHORT:e instanceof Float32Array?i.FLOAT:e instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(e){return t(e)&&(e===i.BYTE||e===i.UNSIGNED_BYTE||e===i.SHORT||e===i.UNSIGNED_SHORT||e===i.FLOAT||e===i.DOUBLE)},i.createTypedArray=function(e,t){switch(e){case i.BYTE:return new Int8Array(t);case i.UNSIGNED_BYTE:return new Uint8Array(t);case i.SHORT:return new Int16Array(t);case i.UNSIGNED_SHORT:return new Uint16Array(t);case i.FLOAT:return new Float32Array(t);case i.DOUBLE:return new Float64Array(t);default:throw new n("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(t,r,a,o){switch(a=e(a,0),o=e(o,(r.byteLength-a)/i.getSizeInBytes(t)),t){case i.BYTE:return new Int8Array(r,a,o);case i.UNSIGNED_BYTE:return new Uint8Array(r,a,o);case i.SHORT:return new Int16Array(r,a,o);case i.UNSIGNED_SHORT:return new Uint16Array(r,a,o);case i.FLOAT:return new Float32Array(r,a,o);case i.DOUBLE:return new Float64Array(r,a,o);default:throw new n("componentDatatype is not a valid value.")}},a(i)}),define("Core/CornerType",["./freezeObject"],function(e){"use strict";var t={ROUNDED:0,MITERED:1,BEVELED:2};return e(t)}),define("Core/isArray",["./defined"],function(e){"use strict";var t=Array.isArray;return e(t)||(t=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(e){var t=e._uSquared,n=e._ellipsoid.maximumRadius,r=e._ellipsoid.minimumRadius,a=(n-r)/n,i=Math.cos(e._startHeading),o=Math.sin(e._startHeading),u=(1-a)*Math.tan(e._start.latitude),s=1/Math.sqrt(1+u*u),c=s*u,l=Math.atan2(u,i),d=s*o,f=d*d,h=1-f,m=Math.sqrt(h),p=t/4,y=p*p,v=y*p,g=y*y,w=1+p-3*y/4+5*v/4-175*g/64,x=1-p+15*y/8-35*v/8,E=1-3*p+35*y/4,S=1-5*p,_=w*l-x*Math.sin(2*l)*p/2-E*Math.sin(4*l)*y/16-S*Math.sin(6*l)*v/48-5*Math.sin(8*l)*g/512,M=e._constants;M.a=n,M.b=r,M.f=a,M.cosineHeading=i,M.sineHeading=o,M.tanU=u,M.cosineU=s,M.sineU=c,M.sigma=l,M.sineAlpha=d,M.sineSquaredAlpha=f,M.cosineSquaredAlpha=h,M.cosineAlpha=m,M.u2Over4=p,M.u4Over16=y,M.u6Over64=v,M.u8Over256=g,M.a0=w,M.a1=x,M.a2=E,M.a3=S,M.distanceRatio=_}function c(e,t){return e*t*(4+e*(4-3*t))/16}function l(e,t,n,r,a,i,o){var u=c(e,n);return(1-u)*e*t*(r+u*a*(o+u*i*(2*o*o-1)))}function d(e,t,n,r,a,i,o){var s,c,d,f,h,m=(t-n)/t,p=i-r,y=Math.atan((1-m)*Math.tan(a)),v=Math.atan((1-m)*Math.tan(o)),g=Math.cos(y),w=Math.sin(y),x=Math.cos(v),E=Math.sin(v),S=g*x,_=g*E,M=w*E,O=w*x,T=p,P=u.TWO_PI,R=Math.cos(T),N=Math.sin(T);do{R=Math.cos(T),N=Math.sin(T);var z=_-O*R;d=Math.sqrt(x*x*N*N+z*z),c=M+S*R,s=Math.atan2(d,c);var I;0===d?(I=0,f=1):(I=S*N/d,f=1-I*I),P=T,h=c-2*M/f,isNaN(h)&&(h=0),T=p+l(m,I,f,s,d,c,h)}while(Math.abs(T-P)>u.EPSILON12);var C=f*(t*t-n*n)/(n*n),A=1+C*(4096+C*(C*(320-175*C)-768))/16384,b=C*(256+C*(C*(74-47*C)-128))/1024,D=h*h,U=b*d*(h+b*(c*(2*D-1)-b*h*(4*d*d-3)*(4*D-3)/6)/4),q=n*A*(s-U),L=Math.atan2(x*N,_-O*R),B=Math.atan2(g*N,_*R-O);e._distance=q,e._startHeading=L,e._endHeading=B,e._uSquared=C}function f(n,r,a,i){e.normalize(i.cartographicToCartesian(r,m),h),e.normalize(i.cartographicToCartesian(a,m),m),d(n,i.maximumRadius,i.minimumRadius,r.longitude,r.latitude,a.longitude,a.latitude),n._start=t.clone(r,n._start),n._end=t.clone(a,n._end),n._start.height=0,n._end.height=0,s(n)}var h=new e,m=new e,p=function(e,a,i){var u=n(i,o.WGS84);this._ellipsoid=u,this._start=new t,this._end=new t,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,r(e)&&r(a)&&f(this,e,a,u)};return a(p.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),p.prototype.setEndPoints=function(e,t){f(this,e,t,this._ellipsoid)},p.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)},p.prototype.interpolateUsingSurfaceDistance=function(e,n){var a=this._constants,i=a.distanceRatio+e/a.b,o=Math.cos(2*i),u=Math.cos(4*i),s=Math.cos(6*i),c=Math.sin(2*i),d=Math.sin(4*i),f=Math.sin(6*i),h=Math.sin(8*i),m=i*i,p=i*m,y=a.u8Over256,v=a.u2Over4,g=a.u6Over64,w=a.u4Over16,x=2*p*y*o/3+i*(1-v+7*w/4-15*g/4+579*y/64-(w-15*g/4+187*y/16)*o-(5*g/4-115*y/16)*u-29*y*s/16)+(v/2-w+71*g/32-85*y/16)*c+(5*w/16-5*g/4+383*y/96)*d-m*((g-11*y/2)*c+5*y*d/2)+(29*g/96-29*y/16)*f+539*y*h/1536,E=Math.asin(Math.sin(x)*a.cosineAlpha),S=Math.atan(a.a/a.b*Math.tan(E));x-=a.sigma;var _=Math.cos(2*a.sigma+x),M=Math.sin(x),O=Math.cos(x),T=a.cosineU*O,P=a.sineU*M,R=Math.atan2(M*a.sineHeading,T-P*a.cosineHeading),N=R-l(a.f,a.sineAlpha,a.cosineSquaredAlpha,x,M,O,_);return r(n)?(n.longitude=this._start.longitude+N,n.latitude=S,n.height=0,n):new t(this._start.longitude+N,S,0)},p}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict"; +function n(e,n,r){var a=e+n;return t.sign(e)!==t.sign(n)&&Math.abs(a/Math.max(Math.abs(e),Math.abs(n)))<r?0:a}var r={};return r.computeDiscriminant=function(e,t,n){var r=t*t-4*e*n;return r},r.computeRealRoots=function(e,r,a){var i;if(0===e)return 0===r?[]:[-a/r];if(0===r){if(0===a)return[0,0];var o=Math.abs(a),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(i=-a/e,0>i)return[];var s=Math.sqrt(i);return[-s,s]}if(0===a)return i=-r/e,0>i?[i,0]:[0,i];var c=r*r,l=4*e*a,d=n(c,-l,t.EPSILON14);if(0>d)return[];var f=-.5*n(r,t.sign(r)*Math.sqrt(d),t.EPSILON14);return r>0?[f/e,a/f]:[a/f,f/e]},r}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function n(e,t,n,r){var a,i,o=e,u=t/3,s=n/3,c=r,l=o*s,d=u*c,f=u*u,h=s*s,m=o*s-f,p=o*c-u*s,y=u*c-h,v=4*m*y-p*p;if(0>v){var g,w,x;f*d>=l*h?(g=o,w=m,x=-2*u*m+o*p):(g=c,w=y,x=-c*p+2*s*y);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);i=-x+S;var _=i/2,M=0>_?-Math.pow(-_,1/3):Math.pow(_,1/3),O=i===S?-M:-w/M;return a=0>=w?M+O:-x/(M*M+O*O+w),f*d>=l*h?[(a-u)/o]:[-c/(a+s)]}var T=m,P=-2*u*m+o*p,R=y,N=-c*p+2*s*y,z=Math.sqrt(v),I=Math.sqrt(3)/2,C=Math.abs(Math.atan2(o*z,-P)/3);a=2*Math.sqrt(-T);var A=Math.cos(C);i=a*A;var b=a*(-A/2-I*Math.sin(C)),D=i+b>2*u?i-u:b-u,U=o,q=D/U;C=Math.abs(Math.atan2(c*z,-N)/3),a=2*Math.sqrt(-R),A=Math.cos(C),i=a*A,b=a*(-A/2-I*Math.sin(C));var L=-c,B=2*s>i+b?i+s:b+s,W=L/B,F=U*B,G=-D*B-U*L,k=D*L,V=(s*G-u*k)/(-u*G+s*F);return V>=q?W>=q?W>=V?[q,V,W]:[q,W,V]:[W,q,V]:W>=q?[V,q,W]:W>=V?[V,W,q]:[W,V,q]}var r={};return r.computeDiscriminant=function(e,t,n,r){var a=e*e,i=t*t,o=n*n,u=r*r,s=18*e*t*n*r+i*o-27*a*u-4*(e*o*n+i*t*r);return s},r.computeRealRoots=function(e,r,a,i){var o,u;if(0===e)return t.computeRealRoots(r,a,i);if(0===r){if(0===a){if(0===i)return[0,0,0];u=-i/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===i?(o=t.computeRealRoots(e,0,a),0===o.Length?[0]:[o[0],0,o[1]]):n(e,0,a,i)}return 0===a?0===i?(u=-r/e,0>u?[u,0,0]:[0,0,u]):n(e,r,0,i):0===i?(o=t.computeRealRoots(e,r,a),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):n(e,r,a,i)},r}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,n,r){"use strict";function a(t,a,i,o){var u=t*t,s=a-3*u/8,c=i-a*t/2+u*t/8,l=o-i*t/4+a*u/16-3*u*u/256,d=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(d.length>0){var f=-t/4,h=d[d.length-1];if(Math.abs(h)<n.EPSILON14){var m=r.computeRealRoots(1,s,l);if(2===m.length){var p,y=m[0],v=m[1];if(y>=0&&v>=0){var g=Math.sqrt(y),w=Math.sqrt(v);return[f-w,f-g,f+g,f+w]}if(y>=0&&0>v)return p=Math.sqrt(y),[f-p,f+p];if(0>y&&v>=0)return p=Math.sqrt(v),[f-p,f+p]}return[]}if(h>0){var x=Math.sqrt(h),E=(s+h-c/x)/2,S=(s+h+c/x)/2,_=r.computeRealRoots(1,x,E),M=r.computeRealRoots(1,-x,S);return 0!==_.length?(_[0]+=f,_[1]+=f,0!==M.length?(M[0]+=f,M[1]+=f,_[1]<=M[0]?[_[0],_[1],M[0],M[1]]:M[1]<=_[0]?[M[0],M[1],_[0],_[1]]:_[0]>=M[0]&&_[1]<=M[1]?[M[0],_[0],_[1],M[1]]:M[0]>=_[0]&&M[1]<=_[1]?[_[0],M[0],M[1],_[1]]:_[0]>M[0]&&_[0]<M[1]?[M[0],_[0],M[1],_[1]]:[_[0],M[0],_[1],M[1]]):_):0!==M.length?(M[0]+=f,M[1]+=f,M):[]}}return[]}function i(t,a,i,o){var u=i*i,s=a*a,c=t*t,l=-2*a,d=i*t+s-4*o,f=c*o-i*a*t+u,h=e.computeRealRoots(1,l,d,f);if(h.length>0){var m,p,y=h[0],v=a-y,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),_=c-4*y,M=c+4*Math.abs(y);if(0>y||_*S>E*M){var O=Math.sqrt(_);m=O/2,p=0===O?0:(t*x-i)/O}else{var T=Math.sqrt(E);m=0===T?0:(t*x-i)/T,p=T/2}var P,R;0===w&&0===m?(P=0,R=0):n.sign(w)===n.sign(m)?(P=w+m,R=y/P):(R=w-m,P=y/R);var N,z;0===x&&0===p?(N=0,z=0):n.sign(x)===n.sign(p)?(N=x+p,z=o/N):(z=x-p,N=o/z);var I=r.computeRealRoots(1,P,N),C=r.computeRealRoots(1,R,z);if(0!==I.length)return 0!==C.length?I[1]<=C[0]?[I[0],I[1],C[0],C[1]]:C[1]<=I[0]?[C[0],C[1],I[0],I[1]]:I[0]>=C[0]&&I[1]<=C[1]?[C[0],I[0],I[1],C[1]]:C[0]>=I[0]&&C[1]<=I[1]?[I[0],C[0],C[1],I[1]]:I[0]>C[0]&&I[0]<C[1]?[C[0],I[0],C[1],I[1]]:[I[0],C[0],I[1],C[1]]:I;if(0!==C.length)return C}return[]}var o={};return o.computeDiscriminant=function(e,t,n,r,a){var i=e*e,o=i*e,u=t*t,s=u*t,c=n*n,l=c*n,d=r*r,f=d*r,h=a*a,m=h*a,p=u*c*d-4*s*f-4*e*l*d+18*e*t*n*f-27*i*d*d+256*o*m+a*(18*s*n*r-4*u*l+16*e*c*c-80*e*t*c*r-6*e*u*d+144*i*n*d)+h*(144*e*u*n-27*u*u-128*i*c-192*i*t*r);return p},o.computeRealRoots=function(t,r,o,u,s){if(Math.abs(t)<n.EPSILON15)return e.computeRealRoots(r,o,u,s);var c=r/t,l=o/t,d=u/t,f=s/t,h=0>c?1:0;switch(h+=0>l?h+1:h,h+=0>d?h+1:h,h+=0>f?h+1:h){case 0:return a(c,l,d,f);case 1:return i(c,l,d,f);case 2:return i(c,l,d,f);case 3:return a(c,l,d,f);case 4:return a(c,l,d,f);case 5:return i(c,l,d,f);case 6:return a(c,l,d,f);case 7:return a(c,l,d,f);case 8:return i(c,l,d,f);case 9:return a(c,l,d,f);case 10:return a(c,l,d,f);case 11:return i(c,l,d,f);case 12:return a(c,l,d,f);case 13:return a(c,l,d,f);case 14:return a(c,l,d,f);case 15:return a(c,l,d,f);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=function(n,r){r=e.clone(t(r,e.ZERO)),e.equals(r,e.ZERO)||e.normalize(r,r),this.origin=e.clone(t(n,e.ZERO)),this.direction=r};return r.getPoint=function(t,r,a){return n(a)||(a=new e),a=e.multiplyByScalar(t.direction,r,a),e.add(t.origin,a,a)},r}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(t,r,a,o,u){u=n(u,!1);var s,c,l,d,f,h=t.origin,m=t.direction,p=e.subtract(a,r,y),E=e.subtract(o,r,v),S=e.cross(m,E,g),_=e.dot(p,S);if(u){if(_<i.EPSILON6)return void 0;if(s=e.subtract(h,r,w),l=e.dot(s,S),0>l||l>_)return void 0;if(c=e.cross(s,p,x),d=e.dot(m,c),0>d||l+d>_)return void 0;f=e.dot(E,c)/_}else{if(Math.abs(_)<i.EPSILON6)return void 0;var M=1/_;if(s=e.subtract(h,r,w),l=e.dot(s,S)*M,0>l||l>1)return void 0;if(c=e.cross(s,p,x),d=e.dot(m,c)*M,0>d||l+d>1)return void 0;f=e.dot(E,c)*M}return f}function d(e,t,n,r){var a=t*t-4*e*n;if(0>a)return void 0;if(a>0){var i=1/(2*e),o=Math.sqrt(a),u=(-t+o)*i,s=(-t-o)*i;return s>u?(r.root0=u,r.root1=s):(r.root0=s,r.root1=u),r}var c=-t/(2*e);return 0===c?void 0:(r.root0=r.root1=c,r)}function f(t,n,a){r(a)||(a={});var i=t.origin,o=t.direction,u=n.center,s=n.radius*n.radius,c=e.subtract(i,u,g),l=e.dot(o,o),f=2*e.dot(o,c),h=e.magnitudeSquared(c)-s,m=d(l,f,h,S);return r(m)?(a.start=m.root0,a.stop=m.root1,a):void 0}function h(e,t,n){var r=e+t;return i.sign(e)!==i.sign(t)&&Math.abs(r/Math.max(Math.abs(e),Math.abs(t)))<n?0:r}function m(t,n,r,a,c){var l,d=a*a,f=c*c,m=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*f,p=c*(a*h(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],i.EPSILON15)+n.y),y=t[o.COLUMN0ROW0]*d+t[o.COLUMN2ROW2]*f+a*n.x+r,v=f*h(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],i.EPSILON15),g=c*(a*h(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+n.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(m,p,y),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(a,c*x,c*-E)),w.push(new e(a,c*x,c*E)),2===l.length){var S=l[1],_=Math.sqrt(Math.max(1-S*S,0));w.push(new e(a,c*S,c*-_)),w.push(new e(a,c*S,c*_))}return w}var M=g*g,O=v*v,T=m*m,P=g*v,R=T+O,N=2*(p*m+P),z=2*y*m+p*p-O+M,I=2*(y*p-P),C=y*y-M;if(0===R&&0===N&&0===z&&0===I)return w;l=s.computeRealRoots(R,N,z,I,C);var A=l.length;if(0===A)return w;for(var b=0;A>b;++b){var D,U=l[b],q=U*U,L=Math.max(1-q,0),B=Math.sqrt(L);D=i.sign(m)===i.sign(y)?h(m*q+y,p*U,i.EPSILON12):i.sign(y)===i.sign(p*U)?h(m*q,p*U+y,i.EPSILON12):h(m*q+p*U,y,i.EPSILON12);var W=h(v*U,g,i.EPSILON15),F=D*W;0>F?w.push(new e(a,c*U,c*B)):F>0?w.push(new e(a,c*U,c*-B)):0!==B?(w.push(new e(a,c*U,c*-B)),w.push(new e(a,c*U,c*B)),++b):w.push(new e(a,c*U,c*B))}return w}var p={};p.rayPlane=function(t,n,a){r(a)||(a=new e);var o=t.origin,u=t.direction,s=n.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON15)return void 0;var l=(-n.distance-e.dot(s,o))/c;return 0>l?void 0:(a=e.multiplyByScalar(u,l,a),e.add(o,a,a))};var y=new e,v=new e,g=new e,w=new e,x=new e;p.rayTriangle=function(t,n,a,i,o,u){var s=l(t,n,a,i,o);return!r(s)||0>s?void 0:(r(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;p.lineSegmentTriangle=function(t,n,a,i,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(n,t,c.direction),e.normalize(c.direction,c.direction);var d=l(c,a,i,o,u);return!r(d)||0>d||d>e.distance(t,n)?void 0:(r(s)||(s=new e),e.multiplyByScalar(c.direction,d,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};p.raySphere=function(e,t,n){return n=f(e,t,n),!r(n)||n.stop<0?void 0:(n.start=Math.max(n.start,0),n)};var _=new c;p.lineSegmentSphere=function(t,n,a,i){var o=_;e.clone(t,o.origin);var u=e.subtract(n,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),i=f(o,a,i),!r(i)||i.stop<0||i.start>s?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i)};var M=new e,O=new e;p.rayEllipsoid=function(t,n){var r,a,i,o,u,s=n.oneOverRadii,c=e.multiplyComponents(s,t.origin,M),l=e.multiplyComponents(s,t.direction,O),d=e.magnitudeSquared(c),f=e.dot(c,l);if(d>1){if(f>=0)return void 0;var h=f*f;if(r=d-1,a=e.magnitudeSquared(l),i=a*r,i>h)return void 0;if(h>i){o=f*f-i,u=-f+Math.sqrt(o);var m=u/a,p=r/u;return p>m?{start:m,stop:p}:{start:p,stop:m}}var y=Math.sqrt(r/a);return{start:y,stop:y}}return 1>d?(r=d-1,a=e.magnitudeSquared(l),i=a*r,o=f*f-i,u=-f+Math.sqrt(o),{start:0,stop:u/a}):0>f?(a=e.magnitudeSquared(l),{start:0,stop:-f/a}):void 0};var T=new e,P=new e,R=new e,N=new e,z=new e,I=new o,C=new o,A=new o,b=new o,D=new o,U=new o,q=new o,L=new e,B=new e,W=new t;p.grazingAltitudeLocation=function(t,n){var a=t.origin,u=t.direction,s=n.geodeticSurfaceNormal(a,T);if(e.dot(u,s)>=0)return a;var c=r(this.rayEllipsoid(t,n)),l=n.transformPositionToScaledSpace(u,T),d=e.normalize(l,l),f=e.mostOrthogonalAxis(l,N),h=e.normalize(e.cross(f,d,P),P),p=e.normalize(e.cross(d,h,R),R),y=I;y[0]=d.x,y[1]=d.y,y[2]=d.z,y[3]=h.x,y[4]=h.y,y[5]=h.z,y[6]=p.x,y[7]=p.y,y[8]=p.z;var v=o.transpose(y,C),g=o.fromScale(n.radii,A),w=o.fromScale(n.oneOverRadii,b),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,_=o.multiply(o.multiply(v,w,U),x,U),M=o.multiply(o.multiply(_,g,q),y,q),O=o.multiplyByVector(_,a,z),F=m(M,e.negate(O,T),0,0,1),G=F.length;if(G>0){for(var k=e.clone(e.ZERO,B),V=Number.NEGATIVE_INFINITY,j=0;G>j;++j){E=o.multiplyByVector(g,o.multiplyByVector(y,F[j],L),L);var Y=e.normalize(e.subtract(E,a,N),N),H=e.dot(Y,u);H>V&&(V=H,k=e.clone(E,k))}var Z=n.cartesianToCartographic(k,W);return V=i.clamp(V,0,1),S=e.magnitude(e.subtract(k,a,N))*Math.sqrt(1-V*V),S=c?-S:S,Z.height=S,n.cartographicToCartesian(Z,new e)}return void 0};var F=new e;return p.lineSegmentPlane=function(t,n,a,o){r(o)||(o=new e);var u=e.subtract(n,t,F),s=a.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON6)return void 0;var l=e.dot(s,t),d=-(a.distance+l)/c;return 0>d||d>1?void 0:(e.multiplyByScalar(u,d,o),e.add(t,o,o),o)},p.trianglePlaneIntersection=function(t,n,r,a){var i=a.normal,o=a.distance,u=e.dot(i,t)+o<0,s=e.dot(i,n)+o<0,c=e.dot(i,r)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var d,f;if((1===l||2===l)&&(d=new e,f=new e),1===l){if(u)return p.lineSegmentPlane(t,n,a,d),p.lineSegmentPlane(t,r,a,f),{positions:[t,n,r,d,f],indices:[0,3,4,1,2,4,1,4,3]};if(s)return p.lineSegmentPlane(n,r,a,d),p.lineSegmentPlane(n,t,a,f),{positions:[t,n,r,d,f],indices:[1,3,4,2,0,4,2,4,3]};if(c)return p.lineSegmentPlane(r,t,a,d),p.lineSegmentPlane(r,n,a,f),{positions:[t,n,r,d,f],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return p.lineSegmentPlane(n,t,a,d),p.lineSegmentPlane(r,t,a,f),{positions:[t,n,r,d,f],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return p.lineSegmentPlane(r,n,a,d),p.lineSegmentPlane(t,n,a,f),{positions:[t,n,r,d,f],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return p.lineSegmentPlane(t,r,a,d),p.lineSegmentPlane(n,r,a,f),{positions:[t,n,r,d,f],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(e,t,n,r,a,i,o,u,s,c,l,d){"use strict";function f(e,t,n){var r=M;r.length=e;var a;if(t===n){for(a=0;e>a;a++)r[a]=t;return r}var i=n-t,o=i/e;for(a=0;e>a;a++){var u=t+a*o;r[a]=u}return r}function h(t,n,r,a,i,o,u,s){var c=a.scaleToGeodeticSurface(t,R),l=a.scaleToGeodeticSurface(n,N),d=m.numberOfPoints(t,n,r),h=a.cartesianToCartographic(c,O),p=a.cartesianToCartographic(l,T),y=f(d,i,o);z.setEndPoints(h,p);var v=z.surfaceDistance/d,g=s;h.height=i;var w=a.cartographicToCartesian(h,P);e.pack(w,u,g),g+=3;for(var x=1;d>x;x++){var E=z.interpolateUsingSurfaceDistance(x*v,T);E.height=y[x],w=a.cartographicToCartesian(E,P),e.pack(w,u,g),g+=3}return g}var m={};m.numberOfPoints=function(t,n,r){var a=e.distance(t,n);return Math.ceil(a/r)};var p=new t;m.extractHeights=function(e,t){for(var n=e.length,r=new Array(n),a=0;n>a;a++){var i=e[a];r[a]=t.cartesianToCartographic(i,p).height}return r};var y=new l,v=new e,g=new e,w=new d(e.ZERO,0),x=new e,E=new d(e.ZERO,0),S=new e,_=new e,M=[],O=new t,T=new t,P=new e,R=new e,N=new e,z=new o;m.wrapLongitude=function(t,a){var i=[],o=[];if(r(t)&&t.length>0){a=n(a,l.IDENTITY);var s=l.inverseTransformation(a,y),c=l.multiplyByPoint(s,e.ZERO,v),f=l.multiplyByPointAsVector(s,e.UNIT_Y,g),h=d.fromPointNormal(c,f,w),m=l.multiplyByPointAsVector(s,e.UNIT_X,x),p=d.fromPointNormal(c,m,E),M=1;i.push(e.clone(t[0]));for(var O=i[0],T=t.length,P=1;T>P;++P){var R=t[P];if(d.getPointDistance(p,O)<0||d.getPointDistance(p,R)<0){var N=u.lineSegmentPlane(O,R,h,S);if(r(N)){var z=e.multiplyByScalar(f,5e-9,_);d.getPointDistance(h,O)<0&&e.negate(z,z),i.push(e.add(N,z,new e)),o.push(M+1),e.negate(z,z),i.push(e.add(N,z,new e)),M=1}}i.push(e.clone(t[P])),M++,O=R}o.push(M)}return{positions:i,lengths:o}};var I=c.EPSILON7;return m.removeDuplicates=function(t){var n=t.length;if(2>n)return t;var r,a,i;for(r=1;n>r&&(a=t[r-1],i=t[r],!e.equalsEpsilon(a,i,I));++r);if(r===n)return t;for(var o=t.slice(0,r);n>r;++r)i=t[r],e.equalsEpsilon(a,i,I)||(o.push(e.clone(i)),a=i);return o},m.generateArc=function(t){r(t)||(t={});var a=t.positions,o=a.length,u=n(t.ellipsoid,i.WGS84),l=n(t.height,0);if(1>o)return[];if(1===o){var d=u.scaleToGeodeticSurface(a[0],R);if(0!==l){var f=u.geodeticSurfaceNormal(d,P);e.multiplyByScalar(f,l,f),e.add(d,f,d)}return[d.x,d.y,d.z]}var p=t.minDistance;if(!r(p)){var y=n(t.granularity,c.RADIANS_PER_DEGREE);p=c.chordLength(y,u.maximumRadius)}var v,g=0;for(v=0;o-1>v;v++)g+=m.numberOfPoints(a[v],a[v+1],p);var w=3*(g+1),x=new Array(w),E=0,S=s(l);for(v=0;o-1>v;v++){var _=a[v],T=a[v+1],N=S?l[v]:l,z=S?l[v+1]:l;E=h(_,T,p,u,N,z,x,E)}M.length=0;var I=a[o-1],C=u.cartesianToCartographic(I,O);C.height=S?l[o-1]:l;var A=u.cartographicToCartesian(C,P);return e.pack(A,x,w-3),x},m.generateCartesianArc=function(t){for(var n=m.generateArc(t),r=n.length/3,a=new Array(r),i=0;r>i;i++)a[i]=e.unpack(n,3*i);return a},m}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n){this.x=e(t,0),this.y=e(n,0)};i.fromElements=function(e,n,r){return t(r)?(r.x=e,r.y=n,r):new i(e,n)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n):new i(e.x,e.y):void 0},i.fromCartesian3=i.clone,i.fromCartesian4=i.clone,i.packedLength=2,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r]=t.y},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y)},i.minimumComponent=function(e){return Math.min(e.x,e.y)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i,c=new i;i.angleBetween=function(e,t){return i.normalize(e,s),i.normalize(t,c),a.acosClamped(i.dot(s,c))};var l=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Y,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)},i.ZERO=r(new i(0,0)),i.UNIT_X=r(new i(1,0)),i.UNIT_Y=r(new i(0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+")"},i}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,n,r,a,i,o){"use strict";var u=function(r,a,i){this.minimum=e.clone(t(r,e.ZERO)),this.maximum=e.clone(t(a,e.ZERO)),n(i)?i=e.clone(i):(i=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(i,.5,i)),this.center=i};u.fromPoints=function(t,r){if(n(r)||(r=new u),!n(t)||0===t.length)return r.minimum=e.clone(e.ZERO,r.minimum),r.maximum=e.clone(e.ZERO,r.maximum),r.center=e.clone(e.ZERO,r.center),r;for(var a=t[0].x,i=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,d=t.length,f=1;d>f;f++){var h=t[f],m=h.x,p=h.y,y=h.z;a=Math.min(m,a),s=Math.max(m,s),i=Math.min(p,i),c=Math.max(p,c),o=Math.min(y,o),l=Math.max(y,l)}var v=r.minimum;v.x=a,v.y=i,v.z=o;var g=r.maximum;g.x=s,g.y=c,g.z=l;var w=e.add(v,g,r.center);return e.multiplyByScalar(w,.5,w),r},u.clone=function(t,r){return n(t)?n(r)?(r.minimum=e.clone(t.minimum,r.minimum),r.maximum=e.clone(t.maximum,r.maximum),r.center=e.clone(t.center,r.center),r):new u(t.minimum,t.maximum):void 0},u.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&e.equals(t.minimum,r.minimum)&&e.equals(t.maximum,r.maximum)};var s=new e;u.intersectPlane=function(t,n){s=e.subtract(t.maximum,t.minimum,s);var r=e.multiplyByScalar(s,.5,s),a=n.normal,o=r.x*Math.abs(a.x)+r.y*Math.abs(a.y)+r.z*Math.abs(a.z),u=e.dot(t.center,a)+n.distance;return u-o>0?i.INSIDE:0>u+o?i.OUTSIDE:i.INTERSECTING};var c=new o(new e,0);return u.intersect=function(e,t){r("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var n=o.fromCartesian4(t,c);return u.intersectPlane(e,n)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,n,r,a){return t(e).then(n,r,a)}function t(e){var t,n;return e instanceof r?t=e:u(e)?(n=o(),e.then(function(e){n.resolve(e)},function(e){n.reject(e)},function(e){n.progress(e)}),t=n.promise):t=a(e),t}function n(t){return e(t,i)}function r(e){this.then=e}function a(e){var n=new r(function(n){try{return t(n?n(e):e)}catch(r){return i(r)}});return n}function i(e){var n=new r(function(n,r){try{return r?t(r(e)):i(e)}catch(a){return i(a)}});return n}function o(){function e(e,t,n){return f(e,t,n)}function n(e){return m(e)}function a(e){return m(i(e))}function u(e){return h(e)}var s,c,l,d,f,h,m;return c=new r(e),s={then:e,resolve:n,reject:a,progress:u,promise:c,resolver:{resolve:n,reject:a,progress:u}},l=[],d=[],f=function(e,t,n){var r,a;return r=o(),a="function"==typeof n?function(e){try{r.progress(n(e))}catch(t){r.progress(t)}}:function(e){r.progress(e)},l.push(function(n){n.then(e,t).then(r.resolve,r.reject,a)}),d.push(a),r.promise},h=function(e){return p(d,e),e},m=function(e){return e=t(e),f=e.then,m=t,h=v,p(l,e),d=l=E,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,n,r,a,i){return y(2,arguments),e(t,function(t){function u(e){p(e)}function s(e){m(e)}var c,l,d,f,h,m,p,y,g,w;if(g=t.length>>>0,c=Math.max(0,Math.min(n,g)),d=[],l=g-c+1,f=[],h=o(),c)for(y=h.progress,p=function(e){f.push(e),--l||(m=p=v,h.reject(f))},m=function(e){d.push(e),--c||(m=p=v,h.resolve(d))},w=0;g>w;++w)w in t&&e(t[w],s,u,y);else h.resolve(d);return h.then(r,a,i)})}function c(e,t,n,r){function a(e){return t?t(e[0]):e[0]}return s(e,1,a,n,r)}function l(e,t,n,r){return y(1,arguments),f(e,g).then(t,n,r)}function d(){return f(arguments,g)}function f(t,n){return e(t,function(t){var r,a,i,u,s,c;if(i=a=t.length>>>0,r=[],c=o(),i)for(u=function(t,a){e(t,n).then(function(e){r[a]=e,--i||c.resolve(r)},c.reject)},s=0;a>s;s++)s in t?u(t[s],s):--i;else c.resolve(r);return c.promise})}function h(t,n){var r=x.call(arguments,1);return e(t,function(t){var a;return a=t.length,r[0]=function(t,r,i){return e(t,function(t){return e(r,function(e){return n(t,e,i,a)})})},w.apply(t,r)})}function m(t,n,r){var a=arguments.length>2;return e(t,function(e){return e=a?r:e,n.resolve(e),e},function(e){return n.reject(e),i(e)},n.progress)}function p(e,t){for(var n,r=0;n=e[r++];)n(t)}function y(e,t){for(var n,r=t.length;r>e;)if(n=t[--r],null!=n&&"function"!=typeof n)throw new Error("arg "+r+" must be a function")}function v(){}function g(e){return e}var w,x,E;return e.defer=o,e.resolve=t,e.reject=n,e.join=d,e.all=l,e.map=f,e.reduce=h,e.any=c,e.some=s,e.chain=m,e.isPromise=u,r.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(E,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(E,t)})})}},x=[].slice,w=[].reduce||function(e){var t,n,r,a,i;if(i=0,t=Object(this),a=t.length>>>0,n=arguments,n.length<=1)for(;;){if(i in t){r=t[i++];break}if(++i>=a)throw new TypeError}else r=n[1];for(;a>i;++i)i in t&&(r=e(r,t[i],i,t));return r},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,n){for(var r,a,i=0,o=e.length-1;o>=i;)if(r=~~((i+o)/2),a=n(e[r],t),0>a)i=r+1;else{if(!(a>0))return r;o=r-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,n,r,a){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=r,this.ut1MinusUtc=a};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,n=0,r=t[n++],a=function(e,t,n,r){n||(n=" ");var a=e.length>=t?"":Array(1+t-e.length>>>0).join(n);return r?e+a:a+e},i=function(e,t,n,r,i,o){var u=r-e.length;return u>0&&(e=n||!i?a(e,r,o,n):e.slice(0,t.length)+a("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,n,r,o,u,s){var c=e>>>0;return n=n&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=n+a(c.toString(t),u||0,"0",!1),i(e,n,r,o,s)},u=function(e,t,n,r,a,o){return null!=r&&(e=e.slice(0,r)),i(e,"",t,n,a,o)},s=function(e,r,s,c,l,d,f){var h,m,p,y,v;if("%%"==e)return"%";for(var g=!1,w="",x=!1,E=!1,S=" ",_=s.length,M=0;s&&_>M;M++)switch(s.charAt(M)){case" ":w=" ";break;case"+":w="+";break;case"-":g=!0;break;case"'":S=s.charAt(M+1);break;case"0":x=!0;break;case"#":E=!0}if(c=c?"*"==c?+t[n++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,g=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(d=d?"*"==d?+t[n++]:"*"==d.charAt(0)?+t[d.slice(1,-1)]:+d:"fFeE".indexOf(f)>-1?6:"d"==f?0:void 0,v=r?t[r.slice(0,-1)]:t[n++],f){case"s":return u(String(v),g,c,d,x,S);case"c":return u(String.fromCharCode(+v),g,c,d,x);case"b":return o(v,2,E,g,c,d,x);case"o":return o(v,8,E,g,c,d,x);case"x":return o(v,16,E,g,c,d,x);case"X":return o(v,16,E,g,c,d,x).toUpperCase();case"u":return o(v,10,E,g,c,d,x);case"i":case"d":return h=+v||0,h=Math.round(h-h%1),m=0>h?"-":w,v=m+a(String(Math.abs(h)),d,"0",!1),i(v,m,g,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return h=+v,m=0>h?"-":w,p=["toExponential","toFixed","toPrecision"]["efg".indexOf(f.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(f)%2],v=m+Math.abs(h)[p](d),i(v,m,g,c,x)[y]();default:return e}};return r.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,n,r,a,i,o,u){this.year=e,this.month=t,this.day=n,this.hour=r,this.minute=a,this.second=i,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(e,t){return N.compare(e.julianDate,t.julianDate)}function d(e){g.julianDate=e;var n=N.leapSeconds,r=t(n,g,l);0>r&&(r=~r),r>=n.length&&(r=n.length-1);var a=n[r].offset;if(r>0){var i=N.secondsDifference(n[r].julianDate,e);i>a&&(r--,a=n[r].offset)}N.addSeconds(e,a,e)}function f(e,n){g.julianDate=e;var r=N.leapSeconds,a=t(r,g,l);if(0>a&&(a=~a),0===a)return N.addSeconds(e,-r[0].offset,n);if(a>=r.length)return N.addSeconds(e,-r[a-1].offset,n);var i=N.secondsDifference(r[a].julianDate,e);return 0===i?N.addSeconds(e,-r[a].offset,n):1>=i?void 0:N.addSeconds(e,-r[--a].offset,n)}function h(e,t,n){var r=0|t/s.SECONDS_PER_DAY;return e+=r,t-=s.SECONDS_PER_DAY*r,0>t&&(e--,t+=s.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function m(e,t,n,r,a,i,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+n-32075;r-=12,0>r&&(r+=24);var d=i+(r*s.SECONDS_PER_HOUR+a*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return d>=43200&&(l-=1),[l,d]}var p=new i,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,g=new u,w=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,E=/^(\d{4})-?(\d{3})$/,S=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,_=/^(\d{4})-?(\d{2})-?(\d{2})$/,M=/([Z+\-])?(\d{2})?:?(\d{2})?$/,O=/^(\d{2})(\.\d+)?/.source+M.source,T=/^(\d{2}):?(\d{2})(\.\d+)?/.source+M.source,P=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+M.source,R="Invalid ISO 8601 date.",N=function(e,t,r){this.dayNumber=void 0,this.secondsOfDay=void 0,e=n(e,0),t=n(t,0),r=n(r,c.UTC);var a=0|e;t+=(e-a)*s.SECONDS_PER_DAY,h(a,t,this),r===c.UTC&&d(this)};N.fromDate=function(e,t){var n=m(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return r(t)?(h(n[0],n[1],t),d(t),t):new N(n[0],n[1],c.UTC)},N.fromIso8601=function(e,t){e=e.replace(",",".");var n,i,u,s=e.split("T"),l=1,f=1,p=0,g=0,M=0,z=0,I=s[0],C=s[1];if(!r(I))throw new a(R);var A;if(s=I.match(_),null!==s){if(A=I.split("-").length-1,A>0&&2!==A)throw new a(R);n=+s[1],l=+s[2],f=+s[3]}else if(s=I.match(x),null!==s)n=+s[1],l=+s[2];else if(s=I.match(w),null!==s)n=+s[1];else{var b;if(s=I.match(E),null!==s){if(n=+s[1],b=+s[2],u=o(n),1>b||u&&b>366||!u&&b>365)throw new a(R)}else{if(s=I.match(S),null===s)throw new a(R);n=+s[1];var D=+s[2],U=+s[3]||0;if(A=I.split("-").length-1,A>0&&(!r(s[3])&&1!==A||r(s[3])&&2!==A))throw new a(R);var q=new Date(Date.UTC(n,0,4));b=7*D+U-q.getUTCDay()-3}i=new Date(Date.UTC(n,0,1)),i.setUTCDate(b),l=i.getUTCMonth()+1,f=i.getUTCDate()}if(u=o(n),1>l||l>12||1>f||(2!==l||!u)&&f>y[l-1]||u&&2===l&&f>v)throw new a(R);var L;if(r(C)){if(s=C.match(P),null!==s){if(A=C.split(":").length-1,A>0&&2!==A&&3!==A)throw new a(R);p=+s[1],g=+s[2],M=+s[3],z=1e3*+(s[4]||0),L=5}else if(s=C.match(T),null!==s){if(A=C.split(":").length-1,A>0&&1!==A)throw new a(R);p=+s[1],g=+s[2],M=60*+(s[3]||0),L=4}else{if(s=C.match(O),null===s)throw new a(R);p=+s[1],g=60*+(s[2]||0),L=3}if(g>=60||M>=61||p>24||24===p&&(g>0||M>0||z>0))throw new a(R);var B=s[L],W=+s[L+1],F=+(s[L+2]||0);switch(B){case"+":p-=W,g-=F;break;case"-":p+=W,g+=F;break;case"Z":break;default:g+=new Date(Date.UTC(n,l-1,f,p,g)).getTimezoneOffset()}}else g+=new Date(n,l-1,f).getTimezoneOffset();var G=60===M;for(G&&M--;g>=60;)g-=60,p++;for(;p>=24;)p-=24,f++;for(i=u&&2===l?v:y[l-1];f>i;)f-=i,l++,l>12&&(l-=12,n++),i=u&&2===l?v:y[l-1];for(;0>g;)g+=60,p--;for(;0>p;)p+=24,f--;for(;1>f;)l--,1>l&&(l+=12,n--),i=u&&2===l?v:y[l-1],f+=i;var k=m(n,l,f,p,g,M,z);return r(t)?(h(k[0],k[1],t),d(t)):t=new N(k[0],k[1],c.UTC),G&&N.addSeconds(t,1,t),t},N.now=function(e){return N.fromDate(new Date,e)};var z=new N(0,0,c.TAI);return N.toGregorianDate=function(e,t){var n=!1,a=f(e,z);r(a)||(N.addSeconds(e,-1,z),a=f(z,z),n=!0);var o=a.dayNumber,u=a.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var d=0|4e3*(c+1)/1461001;c=0|c-(0|1461*d/4)+31;var h=0|80*c/2447,m=0|c-(0|2447*h/80);c=0|h/11;var p=0|h+2-12*c,y=0|100*(l-49)+d+c,v=0|u/s.SECONDS_PER_HOUR,g=u-v*s.SECONDS_PER_HOUR,w=0|g/s.SECONDS_PER_MINUTE;g-=w*s.SECONDS_PER_MINUTE;var x=0|g,E=(g-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),n&&(x+=1),r(t)?(t.year=y,t.month=p,t.day=m,t.hour=v,t.minute=w,t.second=x,t.millisecond=E,t.isLeapSecond=n,t):new i(y,p,m,v,w,x,E,n)},N.toDate=function(e){var t=N.toGregorianDate(e,p),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))},N.toIso8601=function(t,n){var a,i=N.toGregorianDate(t,i);return r(n)||0===i.millisecond?r(n)&&0!==n?(a=(.01*i.millisecond).toFixed(n).replace(".","").slice(0,n),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",i.year,i.month,i.day,i.hour,i.minute,i.second):(a=(.01*i.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a))},N.clone=function(e,t){return r(e)?r(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new N(e.dayNumber,e.secondsOfDay,c.TAI):void 0},N.compare=function(e,t){var n=e.dayNumber-t.dayNumber;return 0!==n?n:e.secondsOfDay-t.secondsOfDay},N.equals=function(e,t){return e===t||r(e)&&r(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},N.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(N.secondsDifference(e,t))<=n},N.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},N.secondsDifference=function(e,t){var n=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return n+(e.secondsOfDay-t.secondsOfDay)},N.daysDifference=function(e,t){var n=e.dayNumber-t.dayNumber,r=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return n+r},N.computeTaiMinusUtc=function(e){g.julianDate=e; +var n=N.leapSeconds,r=t(n,g,l);return 0>r&&(r=~r,--r,0>r&&(r=0)),n[r].offset},N.addSeconds=function(e,t,n){return h(e.dayNumber,e.secondsOfDay+t,n)},N.addMinutes=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return h(e.dayNumber,r,n)},N.addHours=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return h(e.dayNumber,r,n)},N.addDays=function(e,t,n){var r=e.dayNumber+t;return h(r,e.secondsOfDay,n)},N.lessThan=function(e,t){return N.compare(e,t)<0},N.lessThanOrEquals=function(e,t){return N.compare(e,t)<=0},N.greaterThan=function(e,t){return N.compare(e,t)>0},N.greaterThanOrEquals=function(e,t){return N.compare(e,t)>=0},N.prototype.clone=function(e){return N.clone(this,e)},N.prototype.equals=function(e){return N.equals(this,e)},N.prototype.equalsEpsilon=function(e,t){return N.equalsEpsilon(this,e,t)},N.prototype.toString=function(){return N.toIso8601(this)},N.leapSeconds=[new u(new N(2441317,43210,c.TAI),10),new u(new N(2441499,43211,c.TAI),11),new u(new N(2441683,43212,c.TAI),12),new u(new N(2442048,43213,c.TAI),13),new u(new N(2442413,43214,c.TAI),14),new u(new N(2442778,43215,c.TAI),15),new u(new N(2443144,43216,c.TAI),16),new u(new N(2443509,43217,c.TAI),17),new u(new N(2443874,43218,c.TAI),18),new u(new N(2444239,43219,c.TAI),19),new u(new N(2444786,43220,c.TAI),20),new u(new N(2445151,43221,c.TAI),21),new u(new N(2445516,43222,c.TAI),22),new u(new N(2446247,43223,c.TAI),23),new u(new N(2447161,43224,c.TAI),24),new u(new N(2447892,43225,c.TAI),25),new u(new N(2448257,43226,c.TAI),26),new u(new N(2448804,43227,c.TAI),27),new u(new N(2449169,43228,c.TAI),28),new u(new N(2449534,43229,c.TAI),29),new u(new N(2450083,43230,c.TAI),30),new u(new N(2450630,43231,c.TAI),31),new u(new N(2451179,43232,c.TAI),32),new u(new N(2453736,43233,c.TAI),33),new u(new N(2454832,43234,c.TAI),34),new u(new N(2456109,43235,c.TAI),35),new u(new N(2457204,43236,c.TAI),36)],N}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(n,r){if(null===n||"object"!=typeof n)return n;r=e(r,!1);var a=new n.constructor;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i];r&&(o=t(o,r)),a[i]=o}return a};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var n=e.split("\r\n"),r=0;r<n.length;++r){var a=n[r],i=a.indexOf(": ");if(i>0){var o=a.substring(0,i),u=a.substring(i+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var n=function(e,n,r){this.statusCode=e,this.response=n,this.responseHeaders=r,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return n.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},n}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,n,r,a,i){"use strict";function o(e,t){var n=decodeURIComponent(t);return e?atob(n):n}function u(e,t){for(var n=o(e,t),r=new ArrayBuffer(n.length),a=new Uint8Array(r),i=0;i<n.length;i++)a[i]=n.charCodeAt(i);return r}function s(e,n){n=t(n,"");var a=e[1],i=!!e[2],s=e[3];switch(n){case"":case"text":return o(i,s);case"arraybuffer":return u(i,s);case"blob":var c=u(i,s);return new Blob([c],{type:a});case"document":var l=new DOMParser;return l.parseFromString(o(i,s),a);case"json":return JSON.parse(o(i,s));default:throw new r("Unhandled responseType: "+n)}}var c=function(n){n=t(n,t.EMPTY_OBJECT);var r=n.responseType,a=t(n.method,"GET"),i=n.data,o=n.headers,u=n.overrideMimeType;return e(n.url,function(t){var n=e.defer();return c.load(t,r,a,i,o,n,u),n.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,r,o,u,c,d){var f=l.exec(e);if(null!==f)return c.resolve(s(f,t)),void 0;var h=new XMLHttpRequest;if(n(d)&&n(h.overrideMimeType)&&h.overrideMimeType(d),h.open(r,e,!0),n(u))for(var m in u)u.hasOwnProperty(m)&&h.setRequestHeader(m,u[m]);n(t)&&(h.responseType=t),h.onload=function(){200===h.status?n(h.response)?c.resolve(h.response):n(h.responseXML)&&h.responseXML.hasChildNodes()?c.resolve(h.responseXML):n(h.responseText)?c.resolve(h.responseText):c.reject(new i("unknown XMLHttpRequest response type.")):c.reject(new a(h.status,h.response,h.getAllResponseHeaders()))},h.onerror=function(){c.reject(new a)},h.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,n){return e({url:t,headers:n})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,n,r){"use strict";var a={Accept:"application/json,*/*;q=0.01"},i=function(n,i){return t(i)?t(i.Accept)||(i=e(i),i.Accept=a.Accept):i=a,r(n,i).then(function(e){return JSON.parse(e)})};return i}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c,l,d){"use strict";function f(e,t){return o.compare(e.julianDate,t)}function h(e,n){if(!r(n.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!r(n.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var a=n.columnNames.indexOf("modifiedJulianDateUtc"),i=n.columnNames.indexOf("xPoleWanderRadians"),s=n.columnNames.indexOf("yPoleWanderRadians"),c=n.columnNames.indexOf("ut1MinusUtcSeconds"),h=n.columnNames.indexOf("xCelestialPoleOffsetRadians"),m=n.columnNames.indexOf("yCelestialPoleOffsetRadians"),p=n.columnNames.indexOf("taiMinusUtcSeconds");if(0>a||0>i||0>s||0>c||0>h||0>m||0>p)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=n.samples,v=e._dates=[];e._dateColumn=a,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=h,e._yCelestialPoleOffsetRadiansColumn=m,e._taiMinusUtcSecondsColumn=p,e._columnCount=n.columnNames.length,e._lastIndex=void 0;for(var g,w=e._addNewLeapSeconds,x=0,E=y.length;E>x;x+=e._columnCount){var S=y[x+a],_=y[x+p],M=S+l.MODIFIED_JULIAN_DATE_DIFFERENCE,O=new o(M,_,d.TAI);if(v.push(O),w){if(_!==g&&r(g)){var T=o.leapSeconds,P=t(T,O,f);if(0>P){var R=new u(O,_);T.splice(~P,0,R)}}g=_}}}function m(e,t,n,r,a){var i=n*r;a.xPoleWander=t[i+e._xPoleWanderRadiansColumn],a.yPoleWander=t[i+e._yPoleWanderRadiansColumn],a.xPoleOffset=t[i+e._xCelestialPoleOffsetRadiansColumn],a.yPoleOffset=t[i+e._yCelestialPoleOffsetRadiansColumn],a.ut1MinusUtc=t[i+e._ut1MinusUtcSecondsColumn]}function p(e,t,n){return t+e*(n-t)}function y(e,t,n,r,a,i,u){var s=e._columnCount;if(i>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u;var c=t[a],l=t[i];if(c.equals(l)||r.equals(c))return m(e,n,a,s,u),u;if(r.equals(l))return m(e,n,i,s,u),u;var d=o.secondsDifference(r,c)/o.secondsDifference(l,c),f=a*s,h=i*s,y=n[f+e._ut1MinusUtcSecondsColumn],v=n[h+e._ut1MinusUtcSecondsColumn],g=v-y;if(g>.5||-.5>g){var w=n[f+e._taiMinusUtcSecondsColumn],x=n[h+e._taiMinusUtcSecondsColumn];w!==x&&(l.equals(r)?y=v:v-=x-w)}return u.xPoleWander=p(d,n[f+e._xPoleWanderRadiansColumn],n[h+e._xPoleWanderRadiansColumn]),u.yPoleWander=p(d,n[f+e._yPoleWanderRadiansColumn],n[h+e._yPoleWanderRadiansColumn]),u.xPoleOffset=p(d,n[f+e._xCelestialPoleOffsetRadiansColumn],n[h+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=p(d,n[f+e._yCelestialPoleOffsetRadiansColumn],n[h+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=p(d,y,v),u}var v=function(t){if(t=n(t,n.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=n(t.addNewLeapSeconds,!0),r(t.data))h(this,t.data);else if(r(t.url)){var a=this;this._downloadPromise=e(s(t.url),function(e){h(a,e)},function(){a._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else h(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return v.NONE=i({getPromiseToLoad:function(){return e()},compute:function(e,t){return r(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new a(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,n){if(!r(this._samples)){if(r(this._dataError))throw new c(this._dataError);return void 0}if(r(n)||(n=new a(0,0,0,0,0)),0===this._samples.length)return n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0,n;var i=this._dates,u=this._lastIndex,s=0,l=0;if(r(u)){var d=i[u],f=i[u+1],h=o.lessThanOrEquals(d,e),m=!r(f),p=m||o.greaterThanOrEquals(f,e);if(h&&p)return s=u,!m&&f.equals(e)&&++s,l=s+1,y(this,i,this._samples,e,s,l,n),n}var v=t(i,e,o.compare,this._dateColumn);return v>=0?(v<i.length-1&&i[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,i,this._samples,e,s,l,n),n},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var n=r.exec(t);this.scheme=n[1],this.authority=n[2],this.path=n[3],this.query=n[4],this.fragment=n[5]}}function t(e){var t=unescape(e);return i.test(t)?t:e.toUpperCase()}function n(e,t,n,r){return(t||"")+n.toLowerCase()+(r||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var r=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,n).replace(a,t)),this.path&&(this.path=this.path.replace(a,t)),this.query&&(this.query=this.query.replace(a,t)),this.fragment&&(this.fragment=this.fragment.replace(a,t))};var a=/%[0-9a-z]{2}/gi,i=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var n=new e;return this.scheme?(n.scheme=this.scheme,n.authority=this.authority,n.path=this.path,n.query=this.query):(n.scheme=t.scheme,this.authority?(n.authority=this.authority,n.path=this.path,n.query=this.query):(n.authority=t.authority,""==this.path?(n.path=t.path,n.query=this.query||t.query):("/"==this.path.charAt(0)?(n.path=this.path,n.removeDotSegments()):(n.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,n.removeDotSegments()),n.query=this.query))),n.fragment=this.fragment,n},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),n=[],r=""==t[0];for(r&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?n.pop():"."!=e&&n.push(e);("."==e||".."==e)&&n.push(""),r&&n.unshift(""),this.path=n.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,n,r){"use strict";function a(){for(var e=document.getElementsByTagName("script"),t=0,n=e.length;n>t;++t){var r=e[t].getAttribute("src"),a=d.exec(r);if(null!==a)return a[1]}return void 0}function i(){if(t(s))return s;var r;if(r="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:a(),!t(r))throw new n("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(r).resolve(new e(document.location.href))}function o(e){return r.toUrl("../"+e)}function u(t){return new e(t).resolve(i()).toString()}var s,c,l,d=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,f=function(e){t(c)||(c=t(r.toUrl)?o:u),t(l)||(l=document.createElement("a"));var n=c(e);return l.href=n,l.href=l.href,l.href};return f._cesiumScriptRegex=d,f.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},f}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,n){this.x=e,this.y=t,this.s=n};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,n,r,a,i,o,u){"use strict";function s(e,t,n){var r=d;return r.dayNumber=t,r.secondsOfDay=n,i.daysDifference(r,e._sampleZeroDateTT)}function c(n,a){if(n._chunkDownloadsInProgress[a])return n._chunkDownloadsInProgress[a];var i=e.defer();n._chunkDownloadsInProgress[a]=i;var u,s=n._xysFileUrlTemplate;return u=r(s)?s.replace("{0}",a):t("Assets/IAU2006_XYS/IAU2006_XYS_"+a+".json"),e(o(u),function(e){n._chunkDownloadsInProgress[a]=!1;for(var t=n._samples,r=e.samples,o=3*a*n._samplesPerXysFile,u=0,s=r.length;s>u;++u)t[o+u]=r[u];i.resolve()}),i.promise}var l=function(e){e=n(e,n.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=n(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=n(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new i(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=n(e.stepSizeDays,1),this._samplesPerXysFile=n(e.samplesPerXysFile,1e3),this._totalSamples=n(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,r=this._denominators=new Array(t+1),a=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){r[s]=o,a[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(r[s]*=s-c);r[s]=1/r[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},d=new i(0,0,u.TAI);return l.prototype.preload=function(t,n,r,a){var i=s(this,t,n),o=s(this,r,a),u=0|i/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var d=0|u/this._samplesPerXysFile,f=0|l/this._samplesPerXysFile,h=[],m=d;f>=m;++m)h.push(c(this,m));return e.all(h)},l.prototype.computeXysRadians=function(e,t,n){var i=s(this,e,t);if(0>i)return void 0;var o=0|i/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var d=l+u;d>=this._totalSamples&&(d=this._totalSamples-1,l=d-u,0>l&&(l=0));var f=!1,h=this._samples;if(r(h[3*l])||(c(this,0|l/this._samplesPerXysFile),f=!0),r(h[3*d])||(c(this,0|d/this._samplesPerXysFile),f=!0),f)return void 0;r(n)?(n.x=0,n.y=0,n.s=0):n=new a(0,0,0);var m,p,y=i-l*this._stepSizeDays,v=this._work,g=this._denominators,w=this._coef,x=this._xTable;for(m=0;u>=m;++m)v[m]=y-x[m];for(m=0;u>=m;++m){for(w[m]=1,p=0;u>=p;++p)p!==m&&(w[m]*=v[p]);w[m]*=g[m];var E=3*(l+m);n.x+=w[m]*h[E++],n.y+=w[m]*h[E++],n.s+=w[m]*h[E]}return n},l}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(a,0)},c=new e;s.fromAxisAngle=function(t,r,a){var i=r/2,o=Math.sin(i);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,d=c.z*o,f=Math.cos(i);return n(a)?(a.x=u,a.y=l,a.z=d,a.w=f,a):new s(u,l,d,f)};var l=[1,2,0],d=new Array(3);s.fromRotationMatrix=function(e,t){var r,a,i,o,c,f=e[u.COLUMN0ROW0],h=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],p=f+h+m;if(p>0)r=Math.sqrt(p+1),c=.5*r,r=.5/r,a=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*r,i=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*r,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*r;else{var y=l,v=0;h>f&&(v=1),m>f&&m>h&&(v=2);var g=y[v],w=y[g];r=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=d;x[v]=.5*r,r=.5/r,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*r,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*r,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*r,a=-x[0],i=-x[1],o=-x[2]}return n(t)?(t.x=a,t.y=i,t.z=o,t.w=c,t):new s(a,i,o,c)};var f=new s;s.fromHeadingPitchRoll=function(t,n,r,a){var i=s.fromAxisAngle(e.UNIT_X,r,f),o=s.fromAxisAngle(e.UNIT_Y,-n,a);a=s.multiply(o,i,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,f);return s.multiply(u,a,a)};var h=new e,m=new e,p=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.x=e[r],a.y=e[r+1],a.z=e[r+2],a.w=e[r+3],a},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,n,r){s.unpack(e,4*n,v),s.conjugate(v,v);for(var a=0,i=n-t+1;i>a;a++){var o=3*a;s.unpack(e,4*(t+a),p),s.multiply(p,v,p),p.w<0&&s.negate(p,p),s.computeAxis(p,h);var u=s.computeAngle(p);r[o]=h.x*u,r[o+1]=h.y*u,r[o+2]=h.z*u}},s.unpackInterpolationResult=function(t,r,a,i,o){n(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(r,4*i,y),0===u?s.clone(s.IDENTITY,p):s.fromAxisAngle(m,u,p),s.multiply(p,y,o)},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var n=1/s.magnitude(e),r=e.x*n,a=e.y*n,i=e.z*n,o=e.w*n;return t.x=r,t.y=a,t.z=i,t.w=o,t},s.inverse=function(e,t){var n=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/n,t)},s.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},s.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,d=o*u+r*l+a*c-i*s,f=o*s-r*c+a*l+i*u,h=o*c+r*s-a*u+i*l,m=o*l-r*u-a*s-i*c;return n.x=d,n.y=f,n.z=h,n.w=m,n},s.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},s.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},s.computeAxis=function(e,t){var n=e.w;if(Math.abs(n-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var r=1/Math.sqrt(1-n*n);return t.x=e.x*r,t.y=e.y*r,t.z=e.z*r,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,n,r){return g=s.multiplyByScalar(t,n,g),r=s.multiplyByScalar(e,1-n,r),s.add(g,r,r)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,n,r){var a=s.dot(e,t),i=t;if(0>a&&(a=-a,i=w=s.negate(t,w)),1-a<o.EPSILON6)return s.lerp(e,i,n,r);var u=Math.acos(a);return x=s.multiplyByScalar(e,Math.sin((1-n)*u),x),E=s.multiplyByScalar(i,Math.sin(n*u),E),r=s.add(x,E,r),s.multiplyByScalar(r,1/Math.sin(u),r)},s.log=function(t,n){var r=o.acosClamped(t.w),a=0;return 0!==r&&(a=r/Math.sin(r)),e.multiplyByScalar(t,a,n)},s.exp=function(t,n){var r=e.magnitude(t),a=0;return 0!==r&&(a=Math.sin(r)/r),n.x=t.x*a,n.y=t.y*a,n.z=t.z*a,n.w=Math.cos(r),n};var S=new e,_=new e,M=new s,O=new s;s.computeInnerQuadrangle=function(t,n,r,a){var i=s.conjugate(n,M);s.multiply(i,r,O);var o=s.log(O,S);s.multiply(i,t,O);var u=s.log(O,_);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,M),s.multiply(n,M,a)},s.squad=function(e,t,n,r,a,i){var o=s.slerp(e,t,a,M),u=s.slerp(n,r,a,O);return s.slerp(o,u,2*a*(1-a),i)};for(var T=new s,P=1.9011074535173003,R=a.supportsTypedArrays()?new Float32Array(8):[],N=a.supportsTypedArrays()?new Float32Array(8):[],z=a.supportsTypedArrays()?new Float32Array(8):[],I=a.supportsTypedArrays()?new Float32Array(8):[],C=0;7>C;++C){var A=C+1,b=2*A+1;R[C]=1/(A*b),N[C]=A/b}return R[7]=P/136,N[7]=8*P/17,s.fastSlerp=function(e,t,n,r){var a,i=s.dot(e,t);i>=0?a=1:(a=-1,i=-i);for(var o=i-1,u=1-n,c=n*n,l=u*u,d=7;d>=0;--d)z[d]=(R[d]*c-N[d])*o,I[d]=(R[d]*l-N[d])*o;var f=a*n*(1+z[0]*(1+z[1]*(1+z[2]*(1+z[3]*(1+z[4]*(1+z[5]*(1+z[6]*(1+z[7])))))))),h=u*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),m=s.multiplyByScalar(e,h,T);return s.multiplyByScalar(t,f,r),s.add(m,r,r)},s.fastSquad=function(e,t,n,r,a,i){var o=s.fastSlerp(e,t,a,M),u=s.fastSlerp(n,r,a,O);return s.fastSlerp(o,u,2*a*(1-a),i)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},s.ZERO=i(new s(0,0,0,0)),s.IDENTITY=i(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,n,r,a,i,o,u,s,c,l,d,f,h,m,p,y,v){"use strict";var g={},w=new n,x=new n,E=new n;g.eastNorthUpToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=-o,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=s.x,r[1]=s.y,r[2]=s.z,r[3]=0,r[4]=l.x,r[5]=l.y,r[6]=l.z,r[7]=0,r[8]=u.x,r[9]=u.y,r[10]=u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var S=new n,_=new n,M=new n;g.northEastDownToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=-o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=S,s=_,l=M;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=s.x,r[5]=s.y,r[6]=s.z,r[7]=0,r[8]=-u.x,r[9]=-u.y,r[10]=-u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},g.northUpEastToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=o,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=u.x,r[5]=u.y,r[6]=u.z,r[7]=0,r[8]=s.x,r[9]=s.y,r[10]=s.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var O=new y,T=new n(1,1,1),P=new p;g.headingPitchRollToFixedFrame=function(e,t,r,a,i,o){var u=y.fromHeadingPitchRoll(t,r,a,O),s=p.fromTranslationQuaternionRotationScale(n.ZERO,u,T,P);return o=g.eastNorthUpToFixedFrame(e,i,o),p.multiply(o,s,o)};var R=new p,N=new m;g.headingPitchRollQuaternion=function(e,t,n,r,a,i){var o=g.headingPitchRollToFixedFrame(e,t,n,r,a,R),u=p.getRotation(o,N);return y.fromRotationMatrix(u,i)};var z=24110.54841,I=8640184.812866,C=.093104,A=-62e-7,b=1.1772758384668e-19,D=72921158553e-15,U=h.TWO_PI/86400,q=new f;g.computeTemeToPseudoFixedMatrix=function(e,t){q=f.addSeconds(e,-f.computeTaiMinusUtc(e),q);var n,r=q.dayNumber,a=q.secondsOfDay,o=r-2451545;n=a>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=z+n*(I+n*(C+n*A)),s=u*U%h.TWO_PI,c=D+b*(r-2451545.5),l=(a+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,d=s+c*l,p=Math.cos(d),y=Math.sin(d);return i(t)?(t[0]=p,t[1]=-y,t[2]=0,t[3]=y,t[4]=p,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new m(p,y,0,-y,p,0,0,0,1)},g.iau2006XysData=new l,g.earthOrientationParameters=u.NONE;var L=32.184,B=2451545;g.preloadIcrfFixed=function(t){var n=t.start.dayNumber,r=t.start.secondsOfDay+L,a=t.stop.dayNumber,i=t.stop.secondsOfDay+L,o=g.iau2006XysData.preload(n,r,a,i),u=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},g.computeIcrfToFixedMatrix=function(e,t){i(t)||(t=new m);var n=g.computeFixedToIcrfMatrix(e,t);return i(n)?m.transpose(n,t):void 0};var W=new d(0,0,0),F=new s(0,0,0,0,0,0),G=new m,k=new m;g.computeFixedToIcrfMatrix=function(e,t){i(t)||(t=new m);var n=g.earthOrientationParameters.compute(e,F);if(!i(n))return void 0;var r=e.dayNumber,a=e.secondsOfDay+L,o=g.iau2006XysData.computeXysRadians(r,a,W);if(!i(o))return void 0;var u=o.x+n.xPoleOffset,s=o.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=G;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var d=m.fromRotationZ(-o.s,k),p=m.multiply(l,d,G),y=e.dayNumber,w=e.secondsOfDay-f.computeTaiMinusUtc(e)+n.ut1MinusUtc,x=y-2451545,E=w/v.SECONDS_PER_DAY,S=.779057273264+E+.00273781191135448*(x+E);S=S%1*h.TWO_PI;var _=m.fromRotationZ(S,k),M=m.multiply(p,_,G),O=Math.cos(n.xPoleWander),T=Math.cos(n.yPoleWander),P=Math.sin(n.xPoleWander),R=Math.sin(n.yPoleWander),N=r-B+a/v.SECONDS_PER_DAY;N/=36525;var z=-47e-6*N*h.RADIANS_PER_DEGREE/3600,I=Math.cos(z),C=Math.sin(z),A=k;return A[0]=O*I,A[1]=O*C,A[2]=P,A[3]=-T*C+R*P*I,A[4]=T*I+R*P*C,A[5]=-R*O,A[6]=-R*C-T*P*I,A[7]=R*I-T*P*C,A[8]=T*O,m.multiply(M,A,t)};var V=new r;g.pointToWindowCoordinates=function(e,t,n,r){return r=g.pointToGLWindowCoordinates(e,t,n,r),r.y=2*t[5]-r.y,r},g.pointToGLWindowCoordinates=function(e,n,a,o){i(o)||(o=new t);var u=V;return p.multiplyByVector(e,r.fromElements(a.x,a.y,a.z,1,u),u),r.multiplyByScalar(u,1/u.w,u),p.multiplyByVector(n,u,u),t.fromCartesian4(u,o)};var j=new n,Y=new n,H=new n;return g.rotationMatrixFromPositionVelocity=function(e,t,r,o){var u=a(r,c.WGS84).geodeticSurfaceNormal(e,j),s=n.cross(t,u,Y);n.equalsEpsilon(s,n.ZERO,h.EPSILON6)&&(s=n.clone(n.UNIT_X,s));var l=n.cross(s,t,H);return n.cross(t,l,s),n.negate(s,s),i(o)||(o=new m),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},g}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,n,r,a,i,o,u,s,c,l,d,f,h,m){"use strict";var p=new r,y=function(e,t){t=a(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var r=m.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=n.fromCartesian4(d.getColumn(r,0,p)),this._yAxis=n.fromCartesian4(d.getColumn(r,1,p));var i=n.fromCartesian4(d.getColumn(r,2,p));this._plane=f.fromPointNormal(e,i)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,n){var r=e.fromPoints(t,v);return new y(r.center,n)};var g=new h,w=new n;y.prototype.projectPointOntoPlane=function(e,r){var a=g;a.origin=e,n.normalize(e,a.direction);var o=c.rayPlane(a,this._plane,w);if(i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w)),i(o)){var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return i(r)?(r.x=s,r.y=l,r):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){i(t)||(t=[]);for(var n=0,r=e.length,a=0;r>a;a++){var o=this.projectPointOntoPlane(e[a],t[n]);i(o)&&(t[n]=o,n++)}return t.length=n,t},y.prototype.projectPointToNearestOnPlane=function(e,r){i(r)||(r=new t);var a=g;a.origin=e,n.clone(this._plane.normal,a.direction);var o=c.rayPlane(a,this._plane,w);i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w));var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return r.x=s,r.y=l,r},y.prototype.projectPointsToNearestOnPlane=function(e,t){i(t)||(t=[]);var n=e.length;t.length=n;for(var r=0;n>r;r++)t[r]=this.projectPointToNearestOnPlane(e[r],t[r]);return t};var x=new n;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var r=e.length;i(t)?t.length=r:t=new Array(r);for(var a=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;r>l;++l){var d=e[l];n.multiplyByScalar(u,d.x,c),i(t[l])||(t[l]=new n);var f=n.add(o,c,t[l]);n.multiplyByScalar(s,d.y,c),n.add(f,c,f),a.scaleToGeocentricSurface(f,f)}return t},y}),define("Core/PolylineVolumeGeometryLibrary",["./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./CornerType","./EllipsoidTangentPlane","./Math","./Matrix3","./Matrix4","./PolylinePipeline","./Quaternion","./Transforms"],function(e,t,n,r,a,i,o,u,s,c,l,d){"use strict";function f(e,t){for(var n=new Array(e.length),r=0;r<e.length;r++){var a=e[r];b=t.cartesianToCartographic(a,b),n[r]=b.height,e[r]=t.scaleToGeodeticSurface(a,a)}return n}function h(e,n,r,a){var i,o=e[0],u=e[1],s=t.angleBetween(o,u),c=Math.ceil(s/a),l=new Array(c);if(n===r){for(i=0;c>i;i++)l[i]=n;return l.push(r),l}var d=r-n,f=d/c;for(i=1;c>i;i++){var h=n+i*f;l[i]=h}return l[0]=n,l.push(r),l}function m(n,r,a,o){var u=new i(a,o),s=u.projectPointOntoPlane(t.add(a,n,H),H),c=u.projectPointOntoPlane(t.add(a,r,Z),Z),l=e.angleBetween(s,c);return c.x*s.y-c.y*s.x>=0?-l:l}function p(e,n,r,a,i,o,c,l){var f=W,h=F;U=d.eastNorthUpToFixedFrame(e,i,U),f=s.multiplyByPointAsVector(U,D,f),f=t.normalize(f,f);var p=m(f,n,e,i);L=u.fromRotationZ(p,L),G.z=o,U=s.multiplyTransformation(U,s.fromRotationTranslation(L,G,q),U);var y=B;y[0]=c;for(var v=0;l>v;v++)for(var g=0;g<r.length;g+=3)h=t.fromArray(r,g,h),h=u.multiplyByVector(y,h,h),h=s.multiplyByPoint(U,h,h),a.push(h.x,h.y,h.z);return a}function y(e,n,r,a,i,o,u){for(var s=0;s<e.length;s+=3){var c=t.fromArray(e,s,k);a=p(c,n,r,a,i,o[s/3],u,1)}return a}function v(e,t){var n=e.length,r=new Array(6*n),a=0,i=t.x+t.width/2,o=t.y+t.height/2,u=e[0];r[a++]=u.x-i,r[a++]=0,r[a++]=u.y-o;for(var s=1;n>s;s++){u=e[s];var c=u.x-i,l=u.y-o;r[a++]=c,r[a++]=0,r[a++]=l,r[a++]=c,r[a++]=0,r[a++]=l}return u=e[0],r[a++]=u.x-i,r[a++]=0,r[a++]=u.y-o,r}function g(e,t){for(var n=e.length,r=new Array(3*n),a=0,i=t.x+t.width/2,o=t.y+t.height/2,u=0;n>u;u++)r[a++]=e[u].x-i,r[a++]=0,r[a++]=e[u].y-o; +return r}function w(e,n,r,i,s,c,d,f,h,m){var y,v=t.angleBetween(t.subtract(n,e,I),t.subtract(r,e,C)),g=i===a.BEVELED?0:Math.ceil(v/o.toRadians(5));y=s?u.fromQuaternion(l.fromAxisAngle(t.negate(e,I),v/(g+1),V),Y):u.fromQuaternion(l.fromAxisAngle(e,v/(g+1),V),Y);var w,x;if(n=t.clone(n,j),g>0)for(var E=m?2:1,S=0;g>S;S++)n=u.multiplyByVector(y,n,n),w=t.subtract(n,e,I),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(n,C),d=p(x,w,f,d,c,h,1,E);else w=t.subtract(n,e,I),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(n,C),d=p(x,w,f,d,c,h,1,1),r=t.clone(r,j),w=t.subtract(r,e,I),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(r,C),d=p(x,w,f,d,c,h,1,1);return d}function x(e,t){return o.equalsEpsilon(e.latitude,t.latitude,o.EPSILON6)&&o.equalsEpsilon(e.longitude,t.longitude,o.EPSILON6)}var E=[new t,new t],S=new t,_=new t,M=new t,O=new t,T=new t,P=new t,R=new t,N=new t,z=new t,I=new t,C=new t,A={},b=new r,D=new t(-1,0,0),U=new s,q=new s,L=new u,B=u.IDENTITY.clone(),W=new t,F=new n,G=new t,k=new t,V=new l,j=new t,Y=new u;A.removeDuplicatesFromShape=function(t){for(var n=t.length,r=[],a=n-1,i=0;n>i;a=i++){var o=t[a],u=t[i];e.equals(o,u)||r.push(u)}return r};var H=new t,Z=new t;A.angleIsGreaterThanPi=function(e,n,r,a){var o=new i(r,a),u=o.projectPointOntoPlane(t.add(r,e,H),H),s=o.projectPointOntoPlane(t.add(r,n,Z),Z);return s.x*u.y-s.y*u.x>=0};var X=new r,J=new r;A.removeDuplicatesFromPositions=function(e,t){var n=e.length;if(2>n)return e.slice(0);var r=[];r.push(e[0]);for(var a=1;n>a;++a){var i=e[a-1],o=e[a],u=t.cartesianToCartographic(i,X),s=t.cartesianToCartographic(o,J);x(u,s)||r.push(o)}return r};var Q=new t,K=new t;return A.computePositions=function(e,n,r,i,u){var s=i._ellipsoid,l=f(e,s),d=i._granularity,m=i._cornerType,x=u?v(n,r):g(n,r),C=u?g(n,r):void 0,b=r.height/2,D=r.width/2,U=e.length,q=[],L=u?[]:void 0,B=S,W=_,F=M,G=O,k=T,V=P,j=R,Y=N,H=z,Z=e[0],X=e[1];G=s.geodeticSurfaceNormal(Z,G),B=t.subtract(X,Z,B),B=t.normalize(B,B),Y=t.cross(G,B,Y),Y=t.normalize(Y,Y);var J=l[0],$=l[1];u&&(L=p(Z,Y,C,L,s,J+b,1,1)),H=t.clone(Z,H),Z=X,W=t.negate(B,W);for(var et,tt,nt=1;U-1>nt;nt++){var rt=u?2:1;X=e[nt+1],B=t.subtract(X,Z,B),B=t.normalize(B,B),F=t.add(B,W,F),F=t.normalize(F,F),G=s.geodeticSurfaceNormal(Z,G);var at=t.multiplyByScalar(G,t.dot(B,G),Q);t.subtract(B,at,at),t.normalize(at,at);var it=t.multiplyByScalar(G,t.dot(W,G),K);t.subtract(W,it,it),t.normalize(it,it);var ot=!o.equalsEpsilon(Math.abs(t.dot(at,it)),1,o.EPSILON7);if(ot){F=t.cross(F,G,F),F=t.cross(G,F,F),F=t.normalize(F,F);var ut=1/Math.max(.25,t.magnitude(t.cross(F,W,I))),st=A.angleIsGreaterThanPi(B,W,Z,s);st?(k=t.add(Z,t.multiplyByScalar(F,ut*D,F),k),V=t.add(k,t.multiplyByScalar(Y,D,V),V),E[0]=t.clone(H,E[0]),E[1]=t.clone(V,E[1]),et=h(E,J+b,$+b,d),tt=c.generateArc({positions:E,granularity:d,ellipsoid:s}),q=y(tt,Y,x,q,s,et,1),Y=t.cross(G,B,Y),Y=t.normalize(Y,Y),j=t.add(k,t.multiplyByScalar(Y,D,j),j),m===a.ROUNDED||m===a.BEVELED?w(k,V,j,m,st,s,q,x,$+b,u):(F=t.negate(F,F),q=p(Z,F,x,q,s,$+b,ut,rt)),H=t.clone(j,H)):(k=t.add(Z,t.multiplyByScalar(F,ut*D,F),k),V=t.add(k,t.multiplyByScalar(Y,-D,V),V),E[0]=t.clone(H,E[0]),E[1]=t.clone(V,E[1]),et=h(E,J+b,$+b,d),tt=c.generateArc({positions:E,granularity:d,ellipsoid:s}),q=y(tt,Y,x,q,s,et,1),Y=t.cross(G,B,Y),Y=t.normalize(Y,Y),j=t.add(k,t.multiplyByScalar(Y,-D,j),j),m===a.ROUNDED||m===a.BEVELED?w(k,V,j,m,st,s,q,x,$+b,u):q=p(Z,F,x,q,s,$+b,ut,rt),H=t.clone(j,H)),W=t.negate(B,W)}else q=p(H,Y,x,q,s,J+b,1,1),H=Z;J=$,$=l[nt+1],Z=X}E[0]=t.clone(H,E[0]),E[1]=t.clone(Z,E[1]),et=h(E,J+b,$+b,d),tt=c.generateArc({positions:E,granularity:d,ellipsoid:s}),q=y(tt,Y,x,q,s,et,1),u&&(L=p(Z,Y,C,L,s,$+b,1,1)),U=q.length;var ct=u?U+L.length:U,lt=new Float64Array(ct);return lt.set(q),u&<.set(L,U),lt},A}),define("Core/CorridorGeometryLibrary",["./Cartesian3","./CornerType","./defined","./isArray","./Math","./Matrix3","./PolylinePipeline","./PolylineVolumeGeometryLibrary","./Quaternion"],function(e,t,n,r,a,i,o,u,s){"use strict";function c(n,r,o,u,c){var l=e.angleBetween(e.subtract(r,n,p),e.subtract(o,n,y)),d=u===t.BEVELED?1:Math.ceil(l/a.toRadians(5))+1,f=3*d,h=new Array(f);h[f-3]=o.x,h[f-2]=o.y,h[f-1]=o.z;var m;m=c?i.fromQuaternion(s.fromAxisAngle(e.negate(n,p),l/d,z),I):i.fromQuaternion(s.fromAxisAngle(n,l/d,z),I);var v=0;r=e.clone(r,p);for(var g=0;d>g;g++)r=i.multiplyByVector(m,r,r),h[v++]=r.x,h[v++]=r.y,h[v++]=r.z;return h}function l(n){var r=x,a=E,i=S,o=n[1];a=e.fromArray(n[1],o.length-3,a),i=e.fromArray(n[0],0,i),r=e.multiplyByScalar(e.add(a,i,r),.5,r);var u=c(r,a,i,t.ROUNDED,!1),s=n.length-1,l=n[s-1];o=n[s],a=e.fromArray(l,l.length-3,a),i=e.fromArray(o,0,i),r=e.multiplyByScalar(e.add(a,i,r),.5,r);var d=c(r,a,i,t.ROUNDED,!1);return[u,d]}function d(t,n,r,a){var i=p;return a?i=e.add(t,n,i):(n=e.negate(n,n),i=e.add(t,n,i)),[i.x,i.y,i.z,r.x,r.y,r.z]}function f(t,n,r,a){for(var i=new Array(t.length),o=new Array(t.length),u=e.multiplyByScalar(n,r,p),s=e.negate(u,y),c=0,l=t.length-1,d=0;d<t.length;d+=3){var f=e.fromArray(t,d,v),h=e.add(f,s,g);i[c++]=h.x,i[c++]=h.y,i[c++]=h.z;var m=e.add(f,u,g);o[l--]=m.z,o[l--]=m.y,o[l--]=m.x}return a.push(i,o),a}function h(e,t){for(var n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}var m={},p=new e,y=new e,v=new e,g=new e,w=[new e,new e],x=new e,E=new e,S=new e,_=new e,M=new e,O=new e,T=new e,P=new e,R=new e,N=new e,z=new s,I=new i;m.addAttribute=function(e,t,r,a){var i=t.x,o=t.y,u=t.z;n(r)&&(e[r]=i,e[r+1]=o,e[r+2]=u),n(a)&&(e[a]=u,e[a-1]=o,e[a-2]=i)};var C=new e,A=new e;m.computePositions=function(n){var r=n.granularity,i=n.positions,s=n.ellipsoid;i=h(i,s);var m=n.width/2,y=n.cornerType,v=n.saveAttributes,g=x,z=E,I=S,b=_,D=M,U=O,q=T,L=P,B=R,W=N,F=[],G=v?[]:void 0,k=v?[]:void 0,V=i[0],j=i[1];z=e.normalize(e.subtract(j,V,z),z),g=s.geodeticSurfaceNormal(V,g),b=e.normalize(e.cross(g,z,b),b),v&&(G.push(b.x,b.y,b.z),k.push(g.x,g.y,g.z)),q=e.clone(V,q),V=j,I=e.negate(z,I);var Y,H,Z=[],X=i.length;for(H=1;X-1>H;H++){g=s.geodeticSurfaceNormal(V,g),j=i[H+1],z=e.normalize(e.subtract(j,V,z),z),D=e.normalize(e.add(z,I,D),D);var J=e.multiplyByScalar(g,e.dot(z,g),C);e.subtract(z,J,J),e.normalize(J,J);var Q=e.multiplyByScalar(g,e.dot(I,g),A);e.subtract(I,Q,Q),e.normalize(Q,Q);var K=!a.equalsEpsilon(Math.abs(e.dot(J,Q)),1,a.EPSILON7);if(K){D=e.cross(D,g,D),D=e.cross(g,D,D);var $=m/Math.max(.25,e.magnitude(e.cross(D,I,p))),et=u.angleIsGreaterThanPi(z,I,V,s);D=e.multiplyByScalar(D,$,D),et?(L=e.add(V,D,L),W=e.add(L,e.multiplyByScalar(b,m,W),W),B=e.add(L,e.multiplyByScalar(b,2*m,B),B),w[0]=e.clone(q,w[0]),w[1]=e.clone(W,w[1]),Y=o.generateArc({positions:w,granularity:r,ellipsoid:s}),F=f(Y,b,m,F),v&&(G.push(b.x,b.y,b.z),k.push(g.x,g.y,g.z)),U=e.clone(B,U),b=e.normalize(e.cross(g,z,b),b),B=e.add(L,e.multiplyByScalar(b,2*m,B),B),q=e.add(L,e.multiplyByScalar(b,m,q),q),y===t.ROUNDED||y===t.BEVELED?Z.push({leftPositions:c(L,U,B,y,et)}):Z.push({leftPositions:d(V,e.negate(D,D),B,et)})):(B=e.add(V,D,B),W=e.add(B,e.negate(e.multiplyByScalar(b,m,W),W),W),L=e.add(B,e.negate(e.multiplyByScalar(b,2*m,L),L),L),w[0]=e.clone(q,w[0]),w[1]=e.clone(W,w[1]),Y=o.generateArc({positions:w,granularity:r,ellipsoid:s}),F=f(Y,b,m,F),v&&(G.push(b.x,b.y,b.z),k.push(g.x,g.y,g.z)),U=e.clone(L,U),b=e.normalize(e.cross(g,z,b),b),L=e.add(B,e.negate(e.multiplyByScalar(b,2*m,L),L),L),q=e.add(B,e.negate(e.multiplyByScalar(b,m,q),q),q),y===t.ROUNDED||y===t.BEVELED?Z.push({rightPositions:c(B,U,L,y,et)}):Z.push({rightPositions:d(V,D,L,et)})),I=e.negate(z,I)}V=j}g=s.geodeticSurfaceNormal(V,g),w[0]=e.clone(q,w[0]),w[1]=e.clone(V,w[1]),Y=o.generateArc({positions:w,granularity:r,ellipsoid:s}),F=f(Y,b,m,F),v&&(G.push(b.x,b.y,b.z),k.push(g.x,g.y,g.z));var tt;return y===t.ROUNDED&&(tt=l(F)),{positions:F,corners:Z,lefts:G,normals:k,endPositions:tt}};var b=new e,D=new e;return m.scaleToGeodeticHeight=function(t,n,a,i){var o=t.length,u=r(i)?i:new Array(t.length);u.length=t.length;for(var s=n,c=0;o>c;c+=3){var l=a.scaleToGeodeticSurface(e.fromArray(t,c,D),D),d=b;0!==n&&(d=a.geodeticSurfaceNormal(l,d),d=e.multiplyByScalar(d,s,d),l=e.add(l,d,l)),u[c]=l.x,u[c+1]=l.y,u[c+2]=l.z}return u},m}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,n,r,a){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,a.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,r.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(e){var r=-1;for(var a in e.attributes)if(e.attributes.hasOwnProperty(a)&&t(e.attributes[a])&&t(e.attributes[a].values)){var i=e.attributes[a],o=i.values.length/i.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r){"use strict";var a={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return a.getSizeInBytes=function(e){switch(e){case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},a.validate=function(t){return e(t)&&(t===a.UNSIGNED_BYTE||t===a.UNSIGNED_SHORT||t===a.UNSIGNED_INT)},a.createTypedArray=function(e,t){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},a.createTypedArrayFromArrayBuffer=function(e,t,n,a){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,a):new Uint16Array(t,n,a)},n(a)}),define("Core/CorridorOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./CornerType","./CorridorGeometryLibrary","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PolylinePipeline","./PrimitiveType"],function(e,t,n,r,a,i,o,u,s,c,l,d,f,h,m,p){"use strict";function y(e,i){var u,s,c,h=[],m=e.positions,p=e.corners,y=e.endPositions,v=new d,E=0,S=0,_=0;for(s=0;s<m.length;s+=2)c=m[s].length-3,E+=c,_+=4*(c/3),S+=m[s+1].length-3;for(E+=3,S+=3,s=0;s<p.length;s++){u=p[s];var M=p[s].leftPositions;o(M)?(c=M.length,E+=c,_+=2*(c/3)):(c=p[s].rightPositions.length,S+=c,_+=2*(c/3))}var O,T=o(y);T&&(O=y[0].length-3,E+=O,S+=O,O/=3,_+=4*O);var P,R,N,z,I,C,A=E+S,b=new Float64Array(A),D=0,U=A-1,q=O/2,L=f.createTypedArray(A/3,_+4),B=0;if(L[B++]=D/3,L[B++]=(U-2)/3,T){h.push(D/3),C=g,I=w;var W=y[0];for(s=0;q>s;s++)C=t.fromArray(W,3*(q-1-s),C),I=t.fromArray(W,3*(q+s),I),a.addAttribute(b,I,D),a.addAttribute(b,C,void 0,U),R=D/3,z=R+1,P=(U-2)/3,N=P-1,L[B++]=P,L[B++]=N,L[B++]=R,L[B++]=z,D+=3,U-=3}var F=0,G=m[F++],k=m[F++];for(b.set(G,D),b.set(k,U-k.length+1),c=k.length-3,h.push(D/3,(U-2)/3),s=0;c>s;s+=3)R=D/3,z=R+1,P=(U-2)/3,N=P-1,L[B++]=P,L[B++]=N,L[B++]=R,L[B++]=z,D+=3,U-=3;for(s=0;s<p.length;s++){var V;u=p[s];var j,Y=u.leftPositions,H=u.rightPositions,Z=x;if(o(Y)){for(U-=3,j=N,h.push(z),V=0;V<Y.length/3;V++)Z=t.fromArray(Y,3*V,Z),L[B++]=j-V-1,L[B++]=j-V,a.addAttribute(b,Z,void 0,U),U-=3;h.push(j-Math.floor(Y.length/6)),i===r.BEVELED&&h.push((U-2)/3+1),D+=3}else{for(D+=3,j=z,h.push(N),V=0;V<H.length/3;V++)Z=t.fromArray(H,3*V,Z),L[B++]=j+V,L[B++]=j+V+1,a.addAttribute(b,Z,D),D+=3;h.push(j+Math.floor(H.length/6)),i===r.BEVELED&&h.push(D/3-1),U-=3}for(G=m[F++],k=m[F++],G.splice(0,3),k.splice(k.length-3,3),b.set(G,D),b.set(k,U-k.length+1),c=k.length-3,V=0;V<k.length;V+=3)z=D/3,R=z-1,N=(U-2)/3,P=N+1,L[B++]=P,L[B++]=N,L[B++]=R,L[B++]=z,D+=3,U-=3;D-=3,U+=3,h.push(D/3,(U-2)/3)}if(T){D+=3,U-=3,C=g,I=w;var X=y[1];for(s=0;q>s;s++)C=t.fromArray(X,3*(O-s-1),C),I=t.fromArray(X,3*s,I),a.addAttribute(b,C,void 0,U),a.addAttribute(b,I,D),z=D/3,R=z-1,N=(U-2)/3,P=N+1,L[B++]=P,L[B++]=N,L[B++]=R,L[B++]=z,D+=3,U-=3;h.push(D/3)}else h.push(D/3,(U-2)/3);return L[B++]=D/3,L[B++]=(U-2)/3,v.position=new l({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:b}),{attributes:v,indices:L,wallIndices:h}}function v(e){var t=e.ellipsoid,n=a.computePositions(e),r=y(n,e.cornerType),i=r.wallIndices,o=e.height,u=e.extrudedHeight,s=r.attributes,c=r.indices,l=s.position.values,d=l.length,h=new Float64Array(d);h.set(l);var m=new Float64Array(2*d);l=a.scaleToGeodeticHeight(l,o,t,l),h=a.scaleToGeodeticHeight(h,u,t,h),m.set(l),m.set(h,d),s.position.values=m,d/=3;var p,v=c.length,g=f.createTypedArray(m.length/3,2*(v+i.length));g.set(c);var w=v;for(p=0;v>p;p+=2){var x=c[p],E=c[p+1];g[w++]=x+d,g[w++]=E+d}var S,_;for(p=0;p<i.length;p++)S=i[p],_=S+d,g[w++]=S,g[w++]=_;return{attributes:s,indices:g}}var g=new t,w=new t,x=new t,E=function(e){e=i(e,i.EMPTY_OBJECT);var n=e.positions,a=e.width;this._positions=n,this._ellipsoid=s.clone(i(e.ellipsoid,s.WGS84)),this._width=a,this._height=i(e.height,0),this._extrudedHeight=i(e.extrudedHeight,this._height),this._cornerType=i(e.cornerType,r.ROUNDED),this._granularity=i(e.granularity,h.RADIANS_PER_DEGREE),this._workerName="createCorridorOutlineGeometry",this.packedLength=1+n.length*t.packedLength+s.packedLength+5};E.pack=function(e,n,r){r=i(r,0);var a=e._positions,o=a.length;n[r++]=o;for(var u=0;o>u;++u,r+=t.packedLength)t.pack(a[u],n,r);s.pack(e._ellipsoid,n,r),r+=s.packedLength,n[r++]=e._width,n[r++]=e._height,n[r++]=e._extrudedHeight,n[r++]=e._cornerType,n[r]=e._granularity};var S=s.clone(s.UNIT_SPHERE),_={positions:void 0,ellipsoid:S,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0};return E.unpack=function(e,n,r){n=i(n,0);for(var a=e[n++],u=new Array(a),c=0;a>c;++c,n+=t.packedLength)u[c]=t.unpack(e,n);var l=s.unpack(e,n,S);n+=s.packedLength;var d=e[n++],f=e[n++],h=e[n++],m=e[n++],p=e[n];return o(r)?(r._positions=u,r._ellipsoid=s.clone(l,r._ellipsoid),r._width=d,r._height=f,r._extrudedHeight=h,r._cornerType=m,r._granularity=p,r):(_.positions=u,_.width=d,_.height=f,_.extrudedHeight=h,_.cornerType=m,_.granularity=p,new E(_))},E.createGeometry=function(t){var n=t._positions,r=t._height,i=t._extrudedHeight,o=r!==i,u=m.removeDuplicates(n);if(u.length<2)return void 0;var s,l=t._ellipsoid,d={ellipsoid:l,positions:u,width:t._width,cornerType:t._cornerType,granularity:t._granularity,saveAttributes:!1};if(o){var f=Math.max(r,i);i=Math.min(r,i),r=f,d.height=r,d.extrudedHeight=i,s=v(d)}else{var h=a.computePositions(d);s=y(h,d.cornerType),s.attributes.position.values=a.scaleToGeodeticHeight(s.attributes.position.values,r,l,s.attributes.position.values)}var g=s.attributes,w=e.fromVertices(g.position.values,void 0,3);return new c({attributes:g,indices:s.indices,primitiveType:p.LINES,boundingSphere:w})},E}),define("Workers/createCorridorOutlineGeometry",["../Core/CorridorOutlineGeometry","../Core/defined","../Core/Ellipsoid"],function(e,t,n){"use strict";function r(r,a){return t(a)&&(r=e.unpack(r,a)),r._ellipsoid=n.clone(r._ellipsoid),e.createGeometry(r)}return r})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createCylinderGeometry.js b/libs/Cesium/Workers/createCylinderGeometry.js new file mode 100644 index 0000000000..3c12536a00 --- /dev/null +++ b/libs/Cesium/Workers/createCylinderGeometry.js @@ -0,0 +1,60 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var t=function(t){return void 0!==t};return t}),define("Core/freezeObject",["./defined"],function(t){"use strict";var e=Object.freeze;return t(e)||(e=function(t){return t}),e}),define("Core/defaultValue",["./freezeObject"],function(t){"use strict";var e=function(t,e){return void 0!==t?t:e};return e.EMPTY_OBJECT=t({}),e}),define("Core/DeveloperError",["./defined"],function(t){"use strict";var e=function(t){this.name="DeveloperError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e.throwInstantiationError=function(){throw new e("This function defines an interface and should not be called directly.")},e}),define("ThirdParty/mersenne-twister",[],function(){var t=function(t){void 0==t&&(t=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(t)};return t.prototype.init_genrand=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&t)>>>16)<<16)+1812433253*(65535&t)+this.mti,this.mt[this.mti]>>>=0}},t.prototype.genrand_int32=function(){var t,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^t>>>1^e[1&t];for(;n<this.N-1;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^t>>>1^e[1&t];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^e[1&t],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=2636928640&t<<7,t^=4022730752&t<<15,t^=t>>>18,t>>>0},t.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},t}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(t,e){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(t){return t>0?1:0>t?-1:0},n.signNotZero=function(t){return 0>t?-1:1},n.toSNorm=function(t){return Math.round(255*(.5*n.clamp(t,-1,1)+.5))},n.fromSNorm=function(t){return 2*(n.clamp(t,0,255)/255)-1},n.sinh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e-n)},n.cosh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e+n)},n.lerp=function(t,e,n){return(1-n)*t+n*e},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(t){return t*n.RADIANS_PER_DEGREE},n.toDegrees=function(t){return t*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(t){var e=n.TWO_PI,r=t-Math.floor(t/e)*e;return r<-Math.PI?r+e:r>=Math.PI?r-e:r},n.negativePiToPi=function(t){return n.zeroToTwoPi(t+n.PI)-n.PI},n.zeroToTwoPi=function(t){var e=n.mod(t,n.TWO_PI);return Math.abs(e)<n.EPSILON14&&Math.abs(t)>n.EPSILON14?n.TWO_PI:e},n.mod=function(t,e){return(t%e+e)%e},n.equalsEpsilon=function(t,n,r,i){i=e(i,r);var a=Math.abs(t-n);return i>=a||a<=r*Math.max(Math.abs(t),Math.abs(n))};var r=[1];n.factorial=function(t){var e=r.length;if(t>=e)for(var n=r[e-1],i=e;t>=i;i++)r.push(n*i);return r[t]},n.incrementWrap=function(t,n,r){return r=e(r,0),++t,t>n&&(t=r),t},n.isPowerOfTwo=function(t){return 0!==t&&0===(t&t-1)},n.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t},n.clamp=function(t,e,n){return e>t?e:t>n?n:t};var i=new t;return n.setRandomNumberSeed=function(e){i=new t(e)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(t){return Math.acos(n.clamp(t,-1,1))},n.asinClamped=function(t){return Math.asin(n.clamp(t,-1,1))},n.chordLength=function(t,e){return 2*e*Math.sin(.5*t)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0)};a.fromSpherical=function(n,r){e(r)||(r=new a);var i=n.clock,o=n.cone,u=t(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(t,n,r,i){return e(i)?(i.x=t,i.y=n,i.z=r,i):new a(t,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n):new a(t.x,t.y,t.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r]=e.z},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){a.normalize(t,s),a.normalize(e,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Z,e):n.y<=n.z?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_Z,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)},a.cross=function(t,e,n){var r=t.x,i=t.y,a=t.z,o=e.x,u=e.y,s=e.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(t,e,n,r,o){var u=i.toRadians(t),s=i.toRadians(e);return a.fromRadians(u,s,n,r,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=t(i,0);var s=e(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),e(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o++)r[o]=i.toRadians(t[o]);return a.fromRadiansArray(r,e,n)},a.fromRadiansArray=function(t,n,r){var i=t.length;e(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=t[o],s=t[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o+=3)r[o]=i.toRadians(t[o]),r[o+1]=i.toRadians(t[o+1]),r[o+2]=t[o+2];return a.fromRadiansArrayHeights(r,e,n)},a.fromRadiansArrayHeights=function(t,n,r){var i=t.length;e(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=t[o],s=t[o+1],c=t[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.longitude=t(e,0),this.latitude=t(n,0),this.height=t(r,0)};return a.fromRadians=function(n,r,i,o){return i=t(i,0),e(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(t,e,n,r){return t=i.toRadians(t),e=i.toRadians(e),a.fromRadians(t,e,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.longitude=t.longitude,n.latitude=t.latitude,n.height=t.height,n):new a(t.longitude,t.latitude,t.height):void 0},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.longitude===n.longitude&&t.latitude===n.latitude&&t.height===n.height},a.equalsEpsilon=function(t,n,r){return t===n||e(t)&&e(n)&&Math.abs(t.longitude-n.longitude)<=r&&Math.abs(t.latitude-n.latitude)<=r&&Math.abs(t.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e){return a.equalsEpsilon(this,t,e)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(t){"use strict";var e={},n=function(n,r){t(e[n])||(e[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(t){"use strict";var e=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(t){return!1}}(),n=Object.defineProperties;return e&&t(n)||(n=function(t){return t}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";function s(e,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),e._radii=new t(r,i,a),e._radiiSquared=new t(r*r,i*i,a*a),e._radiiToTheFourth=new t(r*r*r*r,i*i*i*i,a*a*a*a),e._oneOverRadii=new t(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),e._oneOverRadiiSquared=new t(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),e._minimumRadius=Math.min(r,i,a),e._maximumRadius=Math.max(r,i,a),e._centerToleranceSquared=u.EPSILON1}var c=function(t,e,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,t,e,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(e,n){if(!r(e))return void 0;var i=e._radii;return r(n)?(t.clone(i,n._radii),t.clone(e._radiiSquared,n._radiiSquared),t.clone(e._radiiToTheFourth,n._radiiToTheFourth),t.clone(e._oneOverRadii,n._oneOverRadii),t.clone(e._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=e._minimumRadius,n._maximumRadius=e._maximumRadius,n._centerToleranceSquared=e._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(t,e){return r(e)||(e=new c),r(t)?(s(e,t.x,t.y,t.z),e):e},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(t){return c.clone(this,t)},c.packedLength=t.packedLength,c.pack=function(e,r,i){i=n(i,0),t.pack(e._radii,r,i)},c.unpack=function(e,r,i){r=n(r,0);var a=t.unpack(e,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=t.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(e,n){var i=e.longitude,a=e.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new t),n.x=u,n.y=s,n.z=c,t.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(e,n){return r(n)||(n=new t),n=t.multiplyComponents(e,this._oneOverRadiiSquared,n),t.normalize(n,n)};var l=new t,f=new t;c.prototype.cartographicToCartesian=function(e,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(e,i),t.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(t.dot(i,a));return t.divideByScalar(a,o,a),t.multiplyByScalar(i,e.height,i),r(n)||(n=new t),t.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;i++)e[i]=this.cartographicToCartesian(t[i],e[i]);return e};var h=new t,d=new t,m=new t;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,d);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=t.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(t.dot(s,n))*t.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new e(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;++i)e[i]=this.cartesianToCartographic(t[i],e[i]);return e};var y=new t,p=new t;return c.prototype.scaleToGeodeticSurface=function(e,n){var i=e.x,a=e.y,o=e.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,m=o*o*f*f,v=h+d+m,w=Math.sqrt(1/v),E=t.multiplyByScalar(e,w,y);if(v<this._centerToleranceSquared)return isFinite(w)?t.clone(E,n):void 0;var x=this._oneOverRadiiSquared,g=x.x,S=x.y,M=x.z,O=p;O.x=2*E.x*g,O.y=2*E.y*S,O.z=2*E.z*M;var _,z,T,I,N,R,b,A,P,C,L,q=(1-w)*t.magnitude(e)/(.5*t.magnitude(O)),U=0;do{q-=U,T=1/(1+q*g),I=1/(1+q*S),N=1/(1+q*M),R=T*T,b=I*I,A=N*N,P=R*T,C=b*I,L=A*N,_=h*R+d*b+m*A-1,z=h*P*g+d*C*S+m*L*M;var D=-2*z;U=_/D}while(Math.abs(_)>u.EPSILON12);return r(n)?(n.x=i*T,n.y=a*I,n.z=o*N,n):new t(i*T,a*I,o*N)},c.prototype.scaleToGeocentricSurface=function(e,n){r(n)||(n=new t);var i=e.x,a=e.y,o=e.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return t.multiplyByScalar(e,s,n)},c.prototype.transformPositionToScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._radii,n)},c.prototype.equals=function(e){return this===e||r(e)&&t.equals(this._radii,e._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(t,e,n,r,i,a,o){"use strict";var u=function(t){this._ellipsoid=n(t,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(e,n){var i=this._semimajorAxis,a=e.longitude*i,o=e.latitude*i,u=e.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new t(a,o,u)},u.prototype.unproject=function(t,n){var i=this._oneOverSemimajorAxis,a=t.x*i,o=t.y*i,u=t.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new e(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(t){"use strict";var e={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return t(e)}),define("Core/Interval",["./defaultValue"],function(t){"use strict";var e=function(e,n){this.start=t(e,0),this.stop=t(n,0)};return e}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)};a.fromElements=function(t,n,r,i,o){return e(o)?(o.x=t,o.y=n,o.z=r,o.w=i,o):new a(t,n,r,i)},a.fromColor=function(t,n){return e(n)?(n.x=t.red,n.y=t.green,n.z=t.blue,n.w=t.alpha,n):new a(t.red,t.green,t.blue,t.alpha)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n.w=t.w,n):new a(t.x,t.y,t.z,t.w):void 0},a.packedLength=4,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z,t.w)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z,t.w)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n.w=Math.min(t.w,e.w),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n.w=Math.max(t.w,e.w),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e.w=t.w/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z+t.w*e.w},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n.w=t.w*e.w,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n.w=t.w+e.w,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n.w=t.w-e.w,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n.w=t.w*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n.w=t.w/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e.w=-t.w,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e.w=Math.abs(t.w),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,s);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z&&t.w===n.w},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]&&t.w===e[n+3]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)&&i.equalsEpsilon(t.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a){"use strict";function o(t){for(var e=0,n=0;9>n;++n){var r=t[n];e+=r*r}return Math.sqrt(e)}function u(t){for(var e=0,n=0;3>n;++n){var r=t[c.getElementIndex(d[n],h[n])];e+=2*r*r}return Math.sqrt(e)}function s(t,e){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(t[c.getElementIndex(d[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=h[i],m=d[i];if(Math.abs(t[c.getElementIndex(m,f)])>n){var y,p=t[c.getElementIndex(m,m)],v=t[c.getElementIndex(f,f)],w=t[c.getElementIndex(m,f)],E=(p-v)/2/w;y=0>E?-1/(-E+Math.sqrt(1+E*E)):1/(E+Math.sqrt(1+E*E)),s=1/Math.sqrt(1+y*y),l=y*s}return e=c.clone(c.IDENTITY,e),e[c.getElementIndex(f,f)]=e[c.getElementIndex(m,m)]=s,e[c.getElementIndex(m,f)]=l,e[c.getElementIndex(f,m)]=-l,e}var c=function(t,n,r,i,a,o,u,s,c){this[0]=e(t,0),this[1]=e(i,0),this[2]=e(u,0),this[3]=e(n,0),this[4]=e(a,0),this[5]=e(s,0),this[6]=e(r,0),this[7]=e(o,0),this[8]=e(c,0)};c.packedLength=9,c.pack=function(t,n,r){r=e(r,0),n[r++]=t[0],n[r++]=t[1],n[r++]=t[2],n[r++]=t[3],n[r++]=t[4],n[r++]=t[5],n[r++]=t[6],n[r++]=t[7],n[r++]=t[8]},c.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r++],i[1]=t[r++],i[2]=t[r++],i[3]=t[r++],i[4]=t[r++],i[5]=t[r++],i[6]=t[r++],i[7]=t[r++],i[8]=t[r++],i},c.clone=function(t,e){return n(t)?n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):new c(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]):void 0},c.fromArray=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r],i[1]=t[r+1],i[2]=t[r+2],i[3]=t[r+3],i[4]=t[r+4],i[5]=t[r+5],i[6]=t[r+6],i[7]=t[r+7],i[8]=t[r+8],i},c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},c.fromQuaternion=function(t,e){var r=t.x*t.x,i=t.x*t.y,a=t.x*t.z,o=t.x*t.w,u=t.y*t.y,s=t.y*t.z,l=t.y*t.w,f=t.z*t.z,h=t.z*t.w,d=t.w*t.w,m=r-u-f+d,y=2*(i-h),p=2*(a+l),v=2*(i+h),w=-r+u-f+d,E=2*(s-o),x=2*(a-l),g=2*(s+o),S=-r-u+f+d;return n(e)?(e[0]=m,e[1]=v,e[2]=x,e[3]=y,e[4]=w,e[5]=g,e[6]=p,e[7]=E,e[8]=S,e):new c(m,y,p,v,w,E,x,g,S)},c.fromScale=function(t,e){return n(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=t.y,e[5]=0,e[6]=0,e[7]=0,e[8]=t.z,e):new c(t.x,0,0,0,t.y,0,0,0,t.z)},c.fromUniformScale=function(t,e){return n(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=t,e[5]=0,e[6]=0,e[7]=0,e[8]=t,e):new c(t,0,0,0,t,0,0,0,t)},c.fromCrossProduct=function(t,e){return n(e)?(e[0]=0,e[1]=t.z,e[2]=-t.y,e[3]=-t.z,e[4]=0,e[5]=t.x,e[6]=t.y,e[7]=-t.x,e[8]=0,e):new c(0,-t.z,t.y,t.z,0,-t.x,-t.y,t.x,0)},c.fromRotationX=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=r,e[5]=i,e[6]=0,e[7]=-i,e[8]=r,e):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=0,e[2]=-i,e[3]=0,e[4]=1,e[5]=0,e[6]=i,e[7]=0,e[8]=r,e):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=i,e[2]=0,e[3]=-i,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8]]},c.getElementIndex=function(t,e){return 3*t+e},c.getColumn=function(t,e,n){var r=3*e,i=t[r],a=t[r+1],o=t[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=3*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(t,e,n){var r=t[e],i=t[e+3],a=t[e+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+3]=n.y,r[e+6]=n.z,r};var l=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],l)),n.y=t.magnitude(t.fromElements(e[3],e[4],e[5],l)),n.z=t.magnitude(t.fromElements(e[6],e[7],e[8],l)),n};var f=new t;c.getMaximumScale=function(e){return c.getScale(e,f),t.maximumComponent(f)},c.multiply=function(t,e,n){var r=t[0]*e[0]+t[3]*e[1]+t[6]*e[2],i=t[1]*e[0]+t[4]*e[1]+t[7]*e[2],a=t[2]*e[0]+t[5]*e[1]+t[8]*e[2],o=t[0]*e[3]+t[3]*e[4]+t[6]*e[5],u=t[1]*e[3]+t[4]*e[4]+t[7]*e[5],s=t[2]*e[3]+t[5]*e[4]+t[8]*e[5],c=t[0]*e[6]+t[3]*e[7]+t[6]*e[8],l=t[1]*e[6]+t[4]*e[7]+t[7]*e[8],f=t[2]*e[6]+t[5]*e[7]+t[8]*e[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[3]*i+t[6]*a,u=t[1]*r+t[4]*i+t[7]*a,s=t[2]*r+t[5]*i+t[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n},c.multiplyByScale=function(t,e,n){return n[0]=t[0]*e.x,n[1]=t[1]*e.x,n[2]=t[2]*e.x,n[3]=t[3]*e.y,n[4]=t[4]*e.y,n[5]=t[5]*e.y,n[6]=t[6]*e.z,n[7]=t[7]*e.z,n[8]=t[8]*e.z,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e},c.transpose=function(t,e){var n=t[0],r=t[3],i=t[6],a=t[1],o=t[4],u=t[7],s=t[2],c=t[5],l=t[8];return e[0]=n,e[1]=r,e[2]=i,e[3]=a,e[4]=o,e[5]=u,e[6]=s,e[7]=c,e[8]=l,e};var h=[1,0,0],d=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(t,e){var r=a.EPSILON20,i=10,l=0,f=0;n(e)||(e={});for(var h=e.unitary=c.clone(c.IDENTITY,e.unitary),d=e.diagonal=c.clone(t,e.diagonal),p=r*o(d);i>f&&u(d)>p;)s(d,m),c.transpose(m,y),c.multiply(d,m,d),c.multiply(y,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e},c.determinant=function(t){var e=t[0],n=t[3],r=t[6],i=t[1],a=t[4],o=t[7],u=t[2],s=t[5],c=t[8];return e*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(t,e){var n=t[0],i=t[1],o=t[2],u=t[3],s=t[4],l=t[5],f=t[6],h=t[7],d=t[8],m=c.determinant(t);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");e[0]=s*d-h*l,e[1]=h*o-i*d,e[2]=i*l-s*o,e[3]=f*l-u*d,e[4]=n*d-f*o,e[5]=u*o-n*l,e[6]=u*h-f*s,e[7]=f*i-n*h,e[8]=n*s-u*i;var y=1/m;return c.multiplyByScalar(e,y,e)},c.equals=function(t,e){return t===e||n(t)&&n(e)&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]},c.equalsEpsilon=function(t,e,r){return t===e||n(t)&&n(e)&&Math.abs(t[0]-e[0])<=r&&Math.abs(t[1]-e[1])<=r&&Math.abs(t[2]-e[2])<=r&&Math.abs(t[3]-e[3])<=r&&Math.abs(t[4]-e[4])<=r&&Math.abs(t[5]-e[5])<=r&&Math.abs(t[6]-e[6])<=r&&Math.abs(t[7]-e[7])<=r&&Math.abs(t[8]-e[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(t){"use strict";var e=function(t){this.name="RuntimeError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(t,e,n,r,i,a,o,u,s){"use strict";var c=function(t,e,r,i,a,o,u,s,c,l,f,h,d,m,y,p){this[0]=n(t,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(e,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(y,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(p,0)};c.packedLength=16,c.pack=function(t,e,r){r=n(r,0),e[r++]=t[0],e[r++]=t[1],e[r++]=t[2],e[r++]=t[3],e[r++]=t[4],e[r++]=t[5],e[r++]=t[6],e[r++]=t[7],e[r++]=t[8],e[r++]=t[9],e[r++]=t[10],e[r++]=t[11],e[r++]=t[12],e[r++]=t[13],e[r++]=t[14],e[r]=t[15]},c.unpack=function(t,e,i){return e=n(e,0),r(i)||(i=new c),i[0]=t[e++],i[1]=t[e++],i[2]=t[e++],i[3]=t[e++],i[4]=t[e++],i[5]=t[e++],i[6]=t[e++],i[7]=t[e++],i[8]=t[e++],i[9]=t[e++],i[10]=t[e++],i[11]=t[e++],i[12]=t[e++],i[13]=t[e++],i[14]=t[e++],i[15]=t[e],i},c.clone=function(t,e){return r(t)?r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):new c(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},c.fromRotationTranslation=function(e,i,a){return i=n(i,t.ZERO),r(a)?(a[0]=e[0],a[1]=e[1],a[2]=e[2],a[3]=0,a[4]=e[3],a[5]=e[4],a[6]=e[5],a[7]=0,a[8]=e[6],a[9]=e[7],a[10]=e[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(e[0],e[3],e[6],i.x,e[1],e[4],e[7],i.y,e[2],e[5],e[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(t,e,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=e.x*e.x,l=e.x*e.y,f=e.x*e.z,h=e.x*e.w,d=e.y*e.y,m=e.y*e.z,y=e.y*e.w,p=e.z*e.z,v=e.z*e.w,w=e.w*e.w,E=s-d-p+w,x=2*(l-v),g=2*(f+y),S=2*(l+v),M=-s+d-p+w,O=2*(m-h),_=2*(f-y),z=2*(m+h),T=-s-d+p+w;return i[0]=E*a,i[1]=S*a,i[2]=_*a,i[3]=0,i[4]=x*o,i[5]=M*o,i[6]=z*o,i[7]=0,i[8]=g*u,i[9]=O*u,i[10]=T*u,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,i},c.fromTranslation=function(t,e){return c.fromRotationTranslation(u.IDENTITY,t,e)},c.fromScale=function(t,e){return r(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t.y,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t.z,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t.x,0,0,0,0,t.y,0,0,0,0,t.z,0,0,0,0,1)},c.fromUniformScale=function(t,e){return r(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t,0,0,0,0,t,0,0,0,0,t,0,0,0,0,1)};var l=new t,f=new t,h=new t;c.fromCamera=function(e,n){var i=e.eye,a=e.target,o=e.up;t.normalize(t.subtract(a,i,l),l),t.normalize(t.cross(l,o,f),f),t.normalize(t.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,y=l.y,p=l.z,v=h.x,w=h.y,E=h.z,x=i.x,g=i.y,S=i.z,M=u*-x+s*-g+d*-S,O=v*-x+w*-g+E*-S,_=m*x+y*g+p*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=w,n[6]=-y,n[7]=0,n[8]=d,n[9]=E,n[10]=-p,n[11]=0,n[12]=M,n[13]=O,n[14]=_,n[15]=1,n):new c(u,s,d,M,v,w,E,O,-m,-y,-p,_,0,0,0,1)},c.computePerspectiveFieldOfView=function(t,e,n,r,i){var a=Math.tan(.5*t),o=1/a,u=o/e,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(t,e,n,r,i,a,o){var u=1/(e-t),s=1/(r-n),c=1/(a-i),l=-(e+t)*u,f=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o +},c.computePerspectiveOffCenter=function(t,e,n,r,i,a,o){var u=2*i/(e-t),s=2*i/(r-n),c=(e+t)/(e-t),l=(r+n)/(r-n),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(t,e,n,r,i,a){var o=2*i/(e-t),u=2*i/(r-n),s=(e+t)/(e-t),c=(r+n)/(r-n),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(t,e,r,i){t=n(t,n.EMPTY_OBJECT);var a=n(t.x,0),o=n(t.y,0),u=n(t.width,0),s=n(t.height,0);e=n(e,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-e),h=c,d=l,m=f,y=a+c,p=o+l,v=e+f,w=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=y,i[13]=p,i[14]=v,i[15]=w,i},c.toArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},c.getElementIndex=function(t,e){return 4*t+e},c.getColumn=function(t,e,n){var r=4*e,i=t[r],a=t[r+1],o=t[r+2],u=t[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=4*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(t,e,n){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=t[15],n},c.getRow=function(t,e,n){var r=t[e],i=t[e+4],a=t[e+8],o=t[e+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+4]=n.y,r[e+8]=n.z,r[e+12]=n.w,r};var d=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],d)),n.y=t.magnitude(t.fromElements(e[4],e[5],e[6],d)),n.z=t.magnitude(t.fromElements(e[8],e[9],e[10],d)),n};var m=new t;c.getMaximumScale=function(e){return c.getScale(e,m),t.maximumComponent(m)},c.multiply=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[3],u=t[4],s=t[5],c=t[6],l=t[7],f=t[8],h=t[9],d=t[10],m=t[11],y=t[12],p=t[13],v=t[14],w=t[15],E=e[0],x=e[1],g=e[2],S=e[3],M=e[4],O=e[5],_=e[6],z=e[7],T=e[8],I=e[9],N=e[10],R=e[11],b=e[12],A=e[13],P=e[14],C=e[15],L=r*E+u*x+f*g+y*S,q=i*E+s*x+h*g+p*S,U=a*E+c*x+d*g+v*S,D=o*E+l*x+m*g+w*S,B=r*M+u*O+f*_+y*z,F=i*M+s*O+h*_+p*z,W=a*M+c*O+d*_+v*z,G=o*M+l*O+m*_+w*z,k=r*T+u*I+f*N+y*R,V=i*T+s*I+h*N+p*R,Y=a*T+c*I+d*N+v*R,j=o*T+l*I+m*N+w*R,Z=r*b+u*A+f*P+y*C,H=i*b+s*A+h*P+p*C,X=a*b+c*A+d*P+v*C,K=o*b+l*A+m*P+w*C;return n[0]=L,n[1]=q,n[2]=U,n[3]=D,n[4]=B,n[5]=F,n[6]=W,n[7]=G,n[8]=k,n[9]=V,n[10]=Y,n[11]=j,n[12]=Z,n[13]=H,n[14]=X,n[15]=K,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n[9]=t[9]+e[9],n[10]=t[10]+e[10],n[11]=t[11]+e[11],n[12]=t[12]+e[12],n[13]=t[13]+e[13],n[14]=t[14]+e[14],n[15]=t[15]+e[15],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n[9]=t[9]-e[9],n[10]=t[10]-e[10],n[11]=t[11]-e[11],n[12]=t[12]-e[12],n[13]=t[13]-e[13],n[14]=t[14]-e[14],n[15]=t[15]-e[15],n},c.multiplyTransformation=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=t[12],d=t[13],m=t[14],y=e[0],p=e[1],v=e[2],w=e[4],E=e[5],x=e[6],g=e[8],S=e[9],M=e[10],O=e[12],_=e[13],z=e[14],T=r*y+o*p+c*v,I=i*y+u*p+l*v,N=a*y+s*p+f*v,R=r*w+o*E+c*x,b=i*w+u*E+l*x,A=a*w+s*E+f*x,P=r*g+o*S+c*M,C=i*g+u*S+l*M,L=a*g+s*S+f*M,q=r*O+o*_+c*z+h,U=i*O+u*_+l*z+d,D=a*O+s*_+f*z+m;return n[0]=T,n[1]=I,n[2]=N,n[3]=0,n[4]=R,n[5]=b,n[6]=A,n[7]=0,n[8]=P,n[9]=C,n[10]=L,n[11]=0,n[12]=q,n[13]=U,n[14]=D,n[15]=1,n},c.multiplyByMatrix3=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=e[0],d=e[1],m=e[2],y=e[3],p=e[4],v=e[5],w=e[6],E=e[7],x=e[8],g=r*h+o*d+c*m,S=i*h+u*d+l*m,M=a*h+s*d+f*m,O=r*y+o*p+c*v,_=i*y+u*p+l*v,z=a*y+s*p+f*v,T=r*w+o*E+c*x,I=i*w+u*E+l*x,N=a*w+s*E+f*x;return n[0]=g,n[1]=S,n[2]=M,n[3]=0,n[4]=O,n[5]=_,n[6]=z,n[7]=0,n[8]=T,n[9]=I,n[10]=N,n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n},c.multiplyByTranslation=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=r*t[0]+i*t[4]+a*t[8]+t[12],u=r*t[1]+i*t[5]+a*t[9]+t[13],s=r*t[2]+i*t[6]+a*t[10]+t[14];return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=o,n[13]=u,n[14]=s,n[15]=t[15],n};var y=new t;c.multiplyByUniformScale=function(t,e,n){return y.x=e,y.y=e,y.z=e,c.multiplyByScale(t,y,n)},c.multiplyByScale=function(t,e,n){var r=e.x,i=e.y,a=e.z;return 1===r&&1===i&&1===a?c.clone(t,n):(n[0]=r*t[0],n[1]=r*t[1],n[2]=r*t[2],n[3]=0,n[4]=i*t[4],n[5]=i*t[5],n[6]=i*t[6],n[7]=0,n[8]=a*t[8],n[9]=a*t[9],n[10]=a*t[10],n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=1,n)},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t[0]*r+t[4]*i+t[8]*a+t[12]*o,s=t[1]*r+t[5]*i+t[9]*a+t[13]*o,c=t[2]*r+t[6]*i+t[10]*a+t[14]*o,l=t[3]*r+t[7]*i+t[11]*a+t[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a,u=t[1]*r+t[5]*i+t[9]*a,s=t[2]*r+t[6]*i+t[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a+t[12],u=t[1]*r+t[5]*i+t[9]*a+t[13],s=t[2]*r+t[6]*i+t[10]*a+t[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n[9]=t[9]*e,n[10]=t[10]*e,n[11]=t[11]*e,n[12]=t[12]*e,n[13]=t[13]*e,n[14]=t[14]*e,n[15]=t[15]*e,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e[11]=-t[11],e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=-t[15],e},c.transpose=function(t,e){var n=t[1],r=t[2],i=t[3],a=t[6],o=t[7],u=t[11];return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[10]=t[10],e[11]=t[14],e[12]=i,e[13]=o,e[14]=u,e[15]=t[15],e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e[9]=Math.abs(t[9]),e[10]=Math.abs(t[10]),e[11]=Math.abs(t[11]),e[12]=Math.abs(t[12]),e[13]=Math.abs(t[13]),e[14]=Math.abs(t[14]),e[15]=Math.abs(t[15]),e},c.equals=function(t,e){return t===e||r(t)&&r(e)&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[3]===e[3]&&t[7]===e[7]&&t[11]===e[11]&&t[15]===e[15]},c.equalsEpsilon=function(t,e,n){return t===e||r(t)&&r(e)&&Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n&&Math.abs(t[4]-e[4])<=n&&Math.abs(t[5]-e[5])<=n&&Math.abs(t[6]-e[6])<=n&&Math.abs(t[7]-e[7])<=n&&Math.abs(t[8]-e[8])<=n&&Math.abs(t[9]-e[9])<=n&&Math.abs(t[10]-e[10])<=n&&Math.abs(t[11]-e[11])<=n&&Math.abs(t[12]-e[12])<=n&&Math.abs(t[13]-e[13])<=n&&Math.abs(t[14]-e[14])<=n&&Math.abs(t[15]-e[15])<=n},c.getTranslation=function(t,e){return e.x=t[12],e.y=t[13],e.z=t[14],e},c.getRotation=function(t,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e};var p=new u,v=new u,w=new e,E=new e(0,0,0,1);return c.inverse=function(t,n){if(u.equalsEpsilon(c.getRotation(t,p),v,o.EPSILON7)&&e.equals(c.getRow(t,3,w),E))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-t[12],n[13]=-t[13],n[14]=-t[14],n[15]=1,n;var r=t[0],i=t[4],a=t[8],l=t[12],f=t[1],h=t[5],d=t[9],m=t[13],y=t[2],x=t[6],g=t[10],S=t[14],M=t[3],O=t[7],_=t[11],z=t[15],T=g*z,I=S*_,N=x*z,R=S*O,b=x*_,A=g*O,P=y*z,C=S*M,L=y*_,q=g*M,U=y*O,D=x*M,B=T*h+R*d+b*m-(I*h+N*d+A*m),F=I*f+P*d+q*m-(T*f+C*d+L*m),W=N*f+C*h+U*m-(R*f+P*h+D*m),G=A*f+L*h+D*d-(b*f+q*h+U*d),k=I*i+N*a+A*l-(T*i+R*a+b*l),V=T*r+C*a+L*l-(I*r+P*a+q*l),Y=R*r+P*i+D*l-(N*r+C*i+U*l),j=b*r+q*i+U*a-(A*r+L*i+D*a);T=a*m,I=l*d,N=i*m,R=l*h,b=i*d,A=a*h,P=r*m,C=l*f,L=r*d,q=a*f,U=r*h,D=i*f;var Z=T*O+R*_+b*z-(I*O+N*_+A*z),H=I*M+P*_+q*z-(T*M+C*_+L*z),X=N*M+C*O+U*z-(R*M+P*O+D*z),K=A*M+L*O+D*_-(b*M+q*O+U*_),J=N*g+A*S+I*x-(b*S+T*x+R*g),Q=L*S+T*y+C*g-(P*g+q*S+I*y),$=P*x+D*S+R*y-(U*S+N*y+C*x),te=U*g+b*y+q*x-(L*x+D*g+A*y),ee=r*B+i*F+a*W+l*G;if(Math.abs(ee)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return ee=1/ee,n[0]=B*ee,n[1]=F*ee,n[2]=W*ee,n[3]=G*ee,n[4]=k*ee,n[5]=V*ee,n[6]=Y*ee,n[7]=j*ee,n[8]=Z*ee,n[9]=H*ee,n[10]=X*ee,n[11]=K*ee,n[12]=J*ee,n[13]=Q*ee,n[14]=$*ee,n[15]=te*ee,n},c.inverseTransformation=function(t,e){var n=t[0],r=t[1],i=t[2],a=t[4],o=t[5],u=t[6],s=t[8],c=t[9],l=t[10],f=t[12],h=t[13],d=t[14],m=-n*f-r*h-i*d,y=-a*f-o*h-u*d,p=-s*f-c*h-l*d;return e[0]=n,e[1]=a,e[2]=s,e[3]=0,e[4]=r,e[5]=o,e[6]=c,e[7]=0,e[8]=i,e[9]=u,e[10]=l,e[11]=0,e[12]=m,e[13]=y,e[14]=p,e[15]=1,e},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]&&t[9]===e[n+9]&&t[10]===e[n+10]&&t[11]===e[n+11]&&t[12]===e[n+12]&&t[13]===e[n+13]&&t[14]===e[n+14]&&t[15]===e[n+15]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e,n){this.normal=t.clone(e),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-t.dot(r,n);return e(a)?(t.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new t;return i.fromCartesian4=function(n,r){var o=t.fromCartesian4(n,a),u=n.w;return e(r)?(t.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(e,n){return t.dot(e.normal,n)+e.distance},i.ORIGIN_XY_PLANE=r(new i(t.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(t.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(t.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";var s=function(t,n,r,i){this.west=e(t,0),this.south=e(n,0),this.east=e(r,0),this.north=e(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(t,n,r){r=e(r,0),n[r++]=t.west,n[r++]=t.south,n[r++]=t.east,n[r]=t.north},s.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new s),i.west=t[r++],i.south=t[r++],i.east=t[r++],i.north=t[r],i},s.computeWidth=function(t){var e=t.east,n=t.west;return n>e&&(e+=u.TWO_PI),e-n},s.computeHeight=function(t){return t.north-t.south},s.fromDegrees=function(t,r,i,a,o){return t=u.toRadians(e(t,0)),r=u.toRadians(e(r,0)),i=u.toRadians(e(i,0)),a=u.toRadians(e(a,0)),n(o)?(o.west=t,o.south=r,o.east=i,o.north=a,o):new s(t,r,i,a)},s.fromCartographicArray=function(t,e){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=t.length;c>u;u++){var l=t[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(e)?(e.west=r,e.south=a,e.east=i,e.north=o,e):new s(r,a,i,o)},s.clone=function(t,e){return n(t)?n(e)?(e.west=t.west,e.south=t.south,e.east=t.east,e.north=t.north,e):new s(t.west,t.south,t.east,t.north):void 0},s.prototype.clone=function(t){return s.clone(this,t)},s.prototype.equals=function(t){return s.equals(this,t)},s.equals=function(t,e){return t===e||n(t)&&n(e)&&t.west===e.west&&t.south===e.south&&t.east===e.east&&t.north===e.north},s.prototype.equalsEpsilon=function(t,e){return n(t)&&Math.abs(this.west-t.west)<=e&&Math.abs(this.south-t.south)<=e&&Math.abs(this.east-t.east)<=e&&Math.abs(this.north-t.north)<=e},s.validate=function(){},s.southwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.south,r.height=0,r):new t(e.west,e.south)},s.northwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.north,r.height=0,r):new t(e.west,e.north)},s.northeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.north,r.height=0,r):new t(e.east,e.north)},s.southeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.south,r.height=0,r):new t(e.east,e.south)},s.center=function(e,r){var i=e.east,a=e.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(e.south+e.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new t(o,s)},s.intersection=function(t,e,r){var i=t.east,a=t.west,o=e.east,c=e.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((t.west<t.east||e.west<e.east)&&l>=f)return void 0;var h=Math.max(t.south,e.south),d=Math.min(t.north,e.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(t,e){var n=e.longitude,r=e.latitude,i=t.west,a=t.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=t.south&&r<=t.north};var c=new t;return s.subsample=function(t,r,i,o){r=e(r,a.WGS84),i=e(i,0),n(o)||(o=[]);var l=0,f=t.north,h=t.south,d=t.east,m=t.west,y=c;y.height=i,y.longitude=m,y.latitude=f,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=h,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=0>f?f:h>0?h:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(t,y)&&(o[l]=r.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(t,e,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(e,r){this.center=t.clone(n(e,t.ZERO)),this.radius=n(r,0)},m=new t,y=new t,p=new t,v=new t,w=new t,E=new t,x=new t,g=new t,S=new t,M=new t,O=new t,_=new t;d.fromPoints=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;for(var i=t.clone(e[0],x),a=t.clone(i,m),o=t.clone(i,y),u=t.clone(i,p),s=t.clone(i,v),c=t.clone(i,w),l=t.clone(i,E),f=e.length,h=1;f>h;h++){t.clone(e[h],i);var z=i.x,T=i.y,I=i.z;z<a.x&&t.clone(i,a),z>s.x&&t.clone(i,s),T<o.y&&t.clone(i,o),T>c.y&&t.clone(i,c),I<u.z&&t.clone(i,u),I>l.z&&t.clone(i,l)}var N=t.magnitudeSquared(t.subtract(s,a,g)),R=t.magnitudeSquared(t.subtract(c,o,g)),b=t.magnitudeSquared(t.subtract(l,u,g)),A=a,P=s,C=N;R>C&&(C=R,A=o,P=c),b>C&&(C=b,A=u,P=l);var L=S;L.x=.5*(A.x+P.x),L.y=.5*(A.y+P.y),L.z=.5*(A.z+P.z);var q=t.magnitudeSquared(t.subtract(P,L,g)),U=Math.sqrt(q),D=M;D.x=a.x,D.y=o.y,D.z=u.z;var B=O;B.x=s.x,B.y=c.y,B.z=l.z;var F=t.multiplyByScalar(t.add(D,B,g),.5,_),W=0;for(h=0;f>h;h++){t.clone(e[h],i);var G=t.magnitude(t.subtract(i,F,g));G>W&&(W=G);var k=t.magnitudeSquared(t.subtract(i,L,g));if(k>q){var V=Math.sqrt(k);U=.5*(U+V),q=U*U;var Y=V-U;L.x=(U*L.x+Y*i.x)/V,L.y=(U*L.y+Y*i.y)/V,L.z=(U*L.z+Y*i.z)/V}}return W>U?(t.clone(L,n.center),n.radius=U):(t.clone(F,n.center),n.radius=W),n};var z=new u,T=new t,I=new t,N=new e,R=new e;d.fromRectangle2D=function(t,e,n){return d.fromRectangleWithHeights2D(t,e,0,0,n)},d.fromRectangleWithHeights2D=function(e,i,a,o,u){if(r(u)||(u=new d),!r(e))return u.center=t.clone(t.ZERO,u.center),u.radius=0,u;i=n(i,z),h.southwest(e,N),N.height=a,h.northeast(e,R),R.height=o;var s=i.project(N,T),c=i.project(R,I),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*f,y.z=s.z+.5*m,u};var b=[];d.fromRectangle3D=function(t,e,i,a){e=n(e,o.WGS84),i=n(i,0);var u;return r(t)&&(u=h.subsample(t,e,i,b)),d.fromPoints(u,a)},d.fromVertices=function(e,i,a,o){if(r(o)||(o=new d),!r(e)||0===e.length)return o.center=t.clone(t.ZERO,o.center),o.radius=0,o;i=n(i,t.ZERO),a=n(a,3);var u=x;u.x=e[0]+i.x,u.y=e[1]+i.y,u.z=e[2]+i.z;for(var s=t.clone(u,m),c=t.clone(u,y),l=t.clone(u,p),f=t.clone(u,v),h=t.clone(u,w),z=t.clone(u,E),T=e.length,I=0;T>I;I+=a){var N=e[I]+i.x,R=e[I+1]+i.y,b=e[I+2]+i.z;u.x=N,u.y=R,u.z=b,N<s.x&&t.clone(u,s),N>f.x&&t.clone(u,f),R<c.y&&t.clone(u,c),R>h.y&&t.clone(u,h),b<l.z&&t.clone(u,l),b>z.z&&t.clone(u,z)}var A=t.magnitudeSquared(t.subtract(f,s,g)),P=t.magnitudeSquared(t.subtract(h,c,g)),C=t.magnitudeSquared(t.subtract(z,l,g)),L=s,q=f,U=A;P>U&&(U=P,L=c,q=h),C>U&&(U=C,L=l,q=z);var D=S;D.x=.5*(L.x+q.x),D.y=.5*(L.y+q.y),D.z=.5*(L.z+q.z);var B=t.magnitudeSquared(t.subtract(q,D,g)),F=Math.sqrt(B),W=M;W.x=s.x,W.y=c.y,W.z=l.z;var G=O;G.x=f.x,G.y=h.y,G.z=z.z;var k=t.multiplyByScalar(t.add(W,G,g),.5,_),V=0;for(I=0;T>I;I+=a){u.x=e[I]+i.x,u.y=e[I+1]+i.y,u.z=e[I+2]+i.z;var Y=t.magnitude(t.subtract(u,k,g));Y>V&&(V=Y);var j=t.magnitudeSquared(t.subtract(u,D,g));if(j>B){var Z=Math.sqrt(j);F=.5*(F+Z),B=F*F;var H=Z-F;D.x=(F*D.x+H*u.x)/Z,D.y=(F*D.y+H*u.y)/Z,D.z=(F*D.z+H*u.z)/Z}}return V>F?(t.clone(D,o.center),o.radius=F):(t.clone(k,o.center),o.radius=V),o},d.fromCornerPoints=function(e,n,i){r(i)||(i=new d);var a=i.center;return t.add(e,n,a),t.multiplyByScalar(a,.5,a),i.radius=t.distance(a,n),i},d.fromEllipsoid=function(e,n){return r(n)||(n=new d),t.clone(t.ZERO,n.center),n.radius=e.maximumRadius,n};var A=new t;d.fromBoundingSpheres=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;var i=e.length;if(1===i)return d.clone(e[0],n);if(2===i)return d.union(e[0],e[1],n);for(var a=[],o=0;i>o;o++)a.push(e[o].center);n=d.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=e[o];s=Math.max(s,t.distance(u,c.center,A)+c.radius)}return n.radius=s,n},d.clone=function(e,n){return r(e)?r(n)?(n.center=t.clone(e.center,n.center),n.radius=e.radius,n):new d(e.center,e.radius):void 0},d.packedLength=4,d.pack=function(t,e,r){r=n(r,0);var i=t.center;e[r++]=i.x,e[r++]=i.y,e[r++]=i.z,e[r]=t.radius},d.unpack=function(t,e,i){e=n(e,0),r(i)||(i=new d);var a=i.center;return a.x=t[e++],a.y=t[e++],a.z=t[e++],i.radius=t[e],i};var P=new t,C=new t;d.union=function(e,n,i){r(i)||(i=new d);var a=e.center,o=e.radius,u=n.center,s=n.radius,c=t.subtract(u,a,P),l=t.magnitude(c);if(o>=l+s)return e.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),h=t.multiplyByScalar(c,(-o+f)/l,C);return t.add(h,a,h),t.clone(h,i.center),i.radius=f,i};var L=new t;d.expand=function(e,n,r){r=d.clone(e,r);var i=t.magnitude(t.subtract(n,r.center,L));return i>r.radius&&(r.radius=i),r},d.intersectPlane=function(e,n){var r=e.center,i=e.radius,a=n.normal,o=t.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new t,0);d.intersect=function(t,e){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(e,q);return d.intersectPlane(t,n)},d.transform=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=l.getMaximumScale(e)*t.radius,n};var U=new t;d.distanceSquaredTo=function(e,n){var r=t.subtract(e.center,n,U);return t.magnitudeSquared(r)-e.radius*e.radius},d.transformWithoutScale=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=t.radius,n};var D=new t;d.computePlaneDistances=function(e,n,i,a){r(a)||(a=new c);var o=t.subtract(e.center,n,D),u=t.multiplyByScalar(i,t.dot(i,o),D),s=t.magnitude(u);return a.start=s-e.radius,a.stop=s+e.radius,a};for(var B=new t,F=new t,W=new t,G=new t,k=new t,V=new e,Y=new Array(8),j=0;8>j;++j)Y[j]=new t;var Z=new u;return d.projectTo2D=function(e,r,i){r=n(r,Z);var a=r.ellipsoid,o=e.center,u=e.radius,s=a.geodeticSurfaceNormal(o,B),c=t.cross(t.UNIT_Z,s,F);t.normalize(c,c);var l=t.cross(s,c,W);t.normalize(l,l),t.multiplyByScalar(s,u,s),t.multiplyByScalar(l,u,l),t.multiplyByScalar(c,u,c);var f=t.negate(l,k),h=t.negate(c,G),m=Y,y=m[0];t.add(s,l,y),t.add(y,c,y),y=m[1],t.add(s,l,y),t.add(y,h,y),y=m[2],t.add(s,f,y),t.add(y,h,y),y=m[3],t.add(s,f,y),t.add(y,c,y),t.negate(s,s),y=m[4],t.add(s,l,y),t.add(y,c,y),y=m[5],t.add(s,l,y),t.add(y,h,y),y=m[6],t.add(s,f,y),t.add(y,h,y),y=m[7],t.add(s,f,y),t.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var w=m[v];t.add(o,w,w);var E=a.cartesianToCartographic(w,V);r.project(E,w)}i=d.fromPoints(m,i),o=i.center;var x=o.x,g=o.y,S=o.z;return o.x=S,o.y=x,o.z=g,i},d.equals=function(e,n){return e===n||r(e)&&r(n)&&t.equals(e.center,n.center)&&e.radius===n.radius},d.prototype.intersectPlane=function(t){return d.intersectPlane(this,t)},d.prototype.intersect=function(t){return d.intersect(this,t)},d.prototype.equals=function(t){return d.equals(this,t)},d.prototype.clone=function(t){return d.clone(this,t)},d}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n){this.x=t(e,0),this.y=t(n,0)};a.fromElements=function(t,n,r){return e(r)?(r.x=t,r.y=n,r):new a(t,n)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n):new a(t.x,t.y):void 0},a.fromCartesian3=a.clone,a.fromCartesian4=a.clone,a.packedLength=2,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r]=e.y},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y)},a.minimumComponent=function(t){return Math.min(t.x,t.y)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){return a.normalize(t,s),a.normalize(e,c),i.acosClamped(a.dot(s,c))};var l=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Y,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)},a.ZERO=r(new a(0,0)),a.UNIT_X=r(new a(1,0)),a.UNIT_Y=r(new a(0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+")"},a}),define("Core/Fullscreen",["./defined","./defineProperties"],function(t,e){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return e(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(t(n))return n;n=!1;var e=document.body;if("function"==typeof e.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof e[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof e[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",t(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",t(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",t(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",t(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(t){i.supportsFullscreen()&&t[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(t,e,n){"use strict";function r(t){for(var e=t.split("."),n=0,r=e.length;r>n;++n)e[n]=parseInt(e[n],10);return e}function i(){if(!e(p)){p=!1;var t=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(p=!0,v=r(t[1]))}return p}function a(){return i()&&v}function o(){if(!e(w)&&(w=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var t=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(w=!0,E=r(t[1]))}return w}function u(){return o()&&E}function s(){if(!e(x)){x=!1;var t=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==t&&(x=!0,g=r(t[1]),g.isNightly=!!t[2])}return x}function c(){return s()&&g}function l(){if(!e(S)){S=!1;var t;"Microsoft Internet Explorer"===navigator.appName?(t=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(S=!0,M=r(t[1]))):"Netscape"===navigator.appName&&(t=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(S=!0,M=r(t[1])))}return S}function f(){return l()&&M}function h(){if(!e(O)){O=!1;var t=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(O=!0,_=r(t[1]))}return O}function d(){return e(z)||(z=/Windows/i.test(navigator.appVersion)),z}function m(){return h()&&_}function y(){return e(T)||(T=e(window.PointerEvent)&&(!e(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),T}var p,v,w,E,x,g,S,M,O,_,z,T,I={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:t(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return I.supportsFullscreen=function(){return n.supportsFullscreen()},I.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},I.supportsWebWorkers=function(){return"undefined"!=typeof Worker},I}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(t,e,n,r,i){"use strict";if(!r.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(t){switch(t){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},a.fromTypedArray=function(t){return t instanceof Int8Array?a.BYTE:t instanceof Uint8Array?a.UNSIGNED_BYTE:t instanceof Int16Array?a.SHORT:t instanceof Uint16Array?a.UNSIGNED_SHORT:t instanceof Float32Array?a.FLOAT:t instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(t){return e(t)&&(t===a.BYTE||t===a.UNSIGNED_BYTE||t===a.SHORT||t===a.UNSIGNED_SHORT||t===a.FLOAT||t===a.DOUBLE)},a.createTypedArray=function(t,e){switch(t){case a.BYTE:return new Int8Array(e);case a.UNSIGNED_BYTE:return new Uint8Array(e);case a.SHORT:return new Int16Array(e);case a.UNSIGNED_SHORT:return new Uint16Array(e);case a.FLOAT:return new Float32Array(e);case a.DOUBLE:return new Float64Array(e);default:throw new n("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(e,r,i,o){switch(i=t(i,0),o=t(o,(r.byteLength-i)/a.getSizeInBytes(e)),e){case a.BYTE:return new Int8Array(r,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(r,i,o);case a.SHORT:return new Int16Array(r,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(r,i,o);case a.FLOAT:return new Float32Array(r,i,o);case a.DOUBLE:return new Float64Array(r,i,o);default:throw new n("componentDatatype is not a valid value.")}},i(a)}),define("Core/CylinderGeometryLibrary",["./Math"],function(t){"use strict";var e={};return e.computePositions=function(e,n,r,i,a){var o,u=.5*e,s=-u,c=i+i,l=a?2*c:c,f=new Float64Array(3*l),h=0,d=0,m=a?3*c:0,y=a?3*(c+i):3*i;for(o=0;i>o;o++){var p=o/i*t.TWO_PI,v=Math.cos(p),w=Math.sin(p),E=v*r,x=w*r,g=v*n,S=w*n;f[d+m]=E,f[d+m+1]=x,f[d+m+2]=s,f[d+y]=g,f[d+y+1]=S,f[d+y+2]=u,d+=3,a&&(f[h++]=E,f[h++]=x,f[h++]=s,f[h++]=g,f[h++]=S,f[h++]=u)}return f},e}),define("Core/GeometryType",["./freezeObject"],function(t){"use strict";var e={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return t(e)}),define("Core/PrimitiveType",["./freezeObject"],function(t){"use strict";var e={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(t){return t===e.POINTS||t===e.LINES||t===e.LINE_LOOP||t===e.LINE_STRIP||t===e.TRIANGLES||t===e.TRIANGLE_STRIP||t===e.TRIANGLE_FAN}};return t(e)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(t,e,n,r,i){"use strict";var a=function(e){e=t(e,t.EMPTY_OBJECT),this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=t(e.primitiveType,i.TRIANGLES),this.boundingSphere=e.boundingSphere,this.geometryType=t(e.geometryType,r.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(t){var r=-1;for(var i in t.attributes)if(t.attributes.hasOwnProperty(i)&&e(t.attributes[i])&&e(t.attributes[i].values)){var a=t.attributes[i],o=a.values.length/a.componentsPerAttribute; +if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=t(e.normalize,!1),this.values=e.values};return e}),define("Core/GeometryAttributes",["./defaultValue"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.position=e.position,this.normal=e.normal,this.st=e.st,this.binormal=e.binormal,this.tangent=e.tangent,this.color=e.color};return e}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(t){switch(t){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(e){return t(e)&&(e===i.UNSIGNED_BYTE||e===i.UNSIGNED_SHORT||e===i.UNSIGNED_INT)},i.createTypedArray=function(t,e){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e):new Uint16Array(e)},i.createTypedArrayFromArrayBuffer=function(t,e,n,i){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e,n,i):new Uint16Array(e,n,i)},n(i)}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e){e=t(e,t.EMPTY_OBJECT),this.position=t(e.position,!1),this.normal=t(e.normal,!1),this.st=t(e.st,!1),this.binormal=t(e.binormal,!1),this.tangent=t(e.tangent,!1),this.color=t(e.color,!1)};return i.POSITION_ONLY=r(new i({position:!0})),i.POSITION_AND_NORMAL=r(new i({position:!0,normal:!0})),i.POSITION_NORMAL_AND_ST=r(new i({position:!0,normal:!0,st:!0})),i.POSITION_AND_ST=r(new i({position:!0,st:!0})),i.POSITION_AND_COLOR=r(new i({position:!0,color:!0})),i.ALL=r(new i({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),i.DEFAULT=i.POSITION_NORMAL_AND_ST,i.packedLength=6,i.pack=function(e,n,r){r=t(r,0),n[r++]=e.position?1:0,n[r++]=e.normal?1:0,n[r++]=e.st?1:0,n[r++]=e.binormal?1:0,n[r++]=e.tangent?1:0,n[r++]=e.color?1:0},i.unpack=function(n,r,a){return r=t(r,0),e(a)||(a=new i),a.position=1===n[r++],a.normal=1===n[r++],a.st=1===n[r++],a.binormal=1===n[r++],a.tangent=1===n[r++],a.color=1===n[r++],a},i.clone=function(t,n){return e(t)?(e(n)||(n=new i),n.position=t.position,n.normal=t.normal,n.st=t.st,n.binormal=t.binormal,n.tangent=t.tangent,n.color=t.color,n):void 0},i}),define("Core/CylinderGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./CylinderGeometryLibrary","./defaultValue","./defined","./DeveloperError","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType","./VertexFormat"],function(t,e,n,r,i,a,o,u,s,c,l,f,h,d,m){"use strict";var y=new e,p=new n,v=new n,w=new n,E=new n,x=function(t){t=a(t,a.EMPTY_OBJECT);var e=t.length,n=t.topRadius,r=t.bottomRadius,i=a(t.vertexFormat,m.DEFAULT),o=a(t.slices,128);this._length=e,this._topRadius=n,this._bottomRadius=r,this._vertexFormat=m.clone(i),this._slices=o,this._workerName="createCylinderGeometry"};x.packedLength=m.packedLength+4,x.pack=function(t,e,n){n=a(n,0),m.pack(t._vertexFormat,e,n),n+=m.packedLength,e[n++]=t._length,e[n++]=t._topRadius,e[n++]=t._bottomRadius,e[n]=t._slices};var g=new m,S={vertexFormat:g,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0};return x.unpack=function(t,e,n){e=a(e,0);var r=m.unpack(t,e,g);e+=m.packedLength;var i=t[e++],u=t[e++],s=t[e++],c=t[e];return o(n)?(n._vertexFormat=m.clone(r,n._vertexFormat),n._length=i,n._topRadius=u,n._bottomRadius=s,n._slices=c,n):(S.length=i,S.topRadius=u,S.bottomRadius=s,S.slices=c,new x(S))},x.createGeometry=function(a){var o,u=a._length,m=a._topRadius,x=a._bottomRadius,g=a._vertexFormat,S=a._slices,M=S+S,O=S+M,_=M+M,z=i.computePositions(u,m,x,S,!0),T=g.st?new Float32Array(2*_):void 0,I=g.normal?new Float32Array(3*_):void 0,N=g.tangent?new Float32Array(3*_):void 0,R=g.binormal?new Float32Array(3*_):void 0,b=g.normal||g.tangent||g.binormal;if(b){var A=g.tangent||g.binormal,P=0,C=0,L=0,q=p;q.z=0;var U=w,D=v;for(o=0;S>o;o++){var B=o/S*h.TWO_PI,F=Math.cos(B),W=Math.sin(B);b&&(q.x=F,q.y=W,A&&(U=n.normalize(n.cross(n.UNIT_Z,q,U),U)),g.normal&&(I[P++]=F,I[P++]=W,I[P++]=0,I[P++]=F,I[P++]=W,I[P++]=0),g.tangent&&(N[C++]=U.x,N[C++]=U.y,N[C++]=U.z,N[C++]=U.x,N[C++]=U.y,N[C++]=U.z),g.binormal&&(D=n.normalize(n.cross(q,U,D),D),R[L++]=D.x,R[L++]=D.y,R[L++]=D.z,R[L++]=D.x,R[L++]=D.y,R[L++]=D.z))}for(o=0;S>o;o++)g.normal&&(I[P++]=0,I[P++]=0,I[P++]=-1),g.tangent&&(N[C++]=1,N[C++]=0,N[C++]=0),g.binormal&&(R[L++]=0,R[L++]=-1,R[L++]=0);for(o=0;S>o;o++)g.normal&&(I[P++]=0,I[P++]=0,I[P++]=1),g.tangent&&(N[C++]=1,N[C++]=0,N[C++]=0),g.binormal&&(R[L++]=0,R[L++]=1,R[L++]=0)}var G=12*S-12,k=f.createTypedArray(_,G),V=0,Y=0;for(o=0;S-1>o;o++)k[V++]=Y,k[V++]=Y+2,k[V++]=Y+3,k[V++]=Y,k[V++]=Y+3,k[V++]=Y+1,Y+=2;for(k[V++]=M-2,k[V++]=0,k[V++]=1,k[V++]=M-2,k[V++]=1,k[V++]=M-1,o=1;S-1>o;o++)k[V++]=M+o+1,k[V++]=M+o,k[V++]=M;for(o=1;S-1>o;o++)k[V++]=O,k[V++]=O+o,k[V++]=O+o+1;var j=0;if(g.st){var Z=Math.max(m,x);for(o=0;_>o;o++){var H=n.fromArray(z,3*o,E);T[j++]=(H.x+Z)/(2*Z),T[j++]=(H.y+Z)/(2*Z)}}var X=new l;g.position&&(X.position=new c({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:z})),g.normal&&(X.normal=new c({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:I})),g.tangent&&(X.tangent=new c({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:N})),g.binormal&&(X.binormal=new c({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:R})),g.st&&(X.st=new c({componentDatatype:r.FLOAT,componentsPerAttribute:2,values:T})),y.x=.5*u,y.y=Math.max(x,m);var K=new t(n.ZERO,e.magnitude(y));return new s({attributes:X,indices:k,primitiveType:d.TRIANGLES,boundingSphere:K})},x}),define("Workers/createCylinderGeometry",["../Core/CylinderGeometry","../Core/defined"],function(t,e){"use strict";return function(n,r){return e(r)&&(n=t.unpack(n,r)),t.createGeometry(n)}})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createCylinderOutlineGeometry.js b/libs/Cesium/Workers/createCylinderOutlineGeometry.js new file mode 100644 index 0000000000..4fade9548a --- /dev/null +++ b/libs/Cesium/Workers/createCylinderOutlineGeometry.js @@ -0,0 +1,60 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var t=function(t){return void 0!==t};return t}),define("Core/freezeObject",["./defined"],function(t){"use strict";var e=Object.freeze;return t(e)||(e=function(t){return t}),e}),define("Core/defaultValue",["./freezeObject"],function(t){"use strict";var e=function(t,e){return void 0!==t?t:e};return e.EMPTY_OBJECT=t({}),e}),define("Core/DeveloperError",["./defined"],function(t){"use strict";var e=function(t){this.name="DeveloperError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e.throwInstantiationError=function(){throw new e("This function defines an interface and should not be called directly.")},e}),define("ThirdParty/mersenne-twister",[],function(){var t=function(t){void 0==t&&(t=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(t)};return t.prototype.init_genrand=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&t)>>>16)<<16)+1812433253*(65535&t)+this.mti,this.mt[this.mti]>>>=0}},t.prototype.genrand_int32=function(){var t,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^t>>>1^e[1&t];for(;n<this.N-1;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^t>>>1^e[1&t];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^e[1&t],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=2636928640&t<<7,t^=4022730752&t<<15,t^=t>>>18,t>>>0},t.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},t}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(t,e){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(t){return t>0?1:0>t?-1:0},n.signNotZero=function(t){return 0>t?-1:1},n.toSNorm=function(t){return Math.round(255*(.5*n.clamp(t,-1,1)+.5))},n.fromSNorm=function(t){return 2*(n.clamp(t,0,255)/255)-1},n.sinh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e-n)},n.cosh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e+n)},n.lerp=function(t,e,n){return(1-n)*t+n*e},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(t){return t*n.RADIANS_PER_DEGREE},n.toDegrees=function(t){return t*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(t){var e=n.TWO_PI,r=t-Math.floor(t/e)*e;return r<-Math.PI?r+e:r>=Math.PI?r-e:r},n.negativePiToPi=function(t){return n.zeroToTwoPi(t+n.PI)-n.PI},n.zeroToTwoPi=function(t){var e=n.mod(t,n.TWO_PI);return Math.abs(e)<n.EPSILON14&&Math.abs(t)>n.EPSILON14?n.TWO_PI:e},n.mod=function(t,e){return(t%e+e)%e},n.equalsEpsilon=function(t,n,r,i){i=e(i,r);var a=Math.abs(t-n);return i>=a||a<=r*Math.max(Math.abs(t),Math.abs(n))};var r=[1];n.factorial=function(t){var e=r.length;if(t>=e)for(var n=r[e-1],i=e;t>=i;i++)r.push(n*i);return r[t]},n.incrementWrap=function(t,n,r){return r=e(r,0),++t,t>n&&(t=r),t},n.isPowerOfTwo=function(t){return 0!==t&&0===(t&t-1)},n.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t},n.clamp=function(t,e,n){return e>t?e:t>n?n:t};var i=new t;return n.setRandomNumberSeed=function(e){i=new t(e)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(t){return Math.acos(n.clamp(t,-1,1))},n.asinClamped=function(t){return Math.asin(n.clamp(t,-1,1))},n.chordLength=function(t,e){return 2*e*Math.sin(.5*t)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0)};a.fromSpherical=function(n,r){e(r)||(r=new a);var i=n.clock,o=n.cone,u=t(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(t,n,r,i){return e(i)?(i.x=t,i.y=n,i.z=r,i):new a(t,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n):new a(t.x,t.y,t.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r]=e.z},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){a.normalize(t,s),a.normalize(e,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Z,e):n.y<=n.z?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_Z,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)},a.cross=function(t,e,n){var r=t.x,i=t.y,a=t.z,o=e.x,u=e.y,s=e.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(t,e,n,r,o){var u=i.toRadians(t),s=i.toRadians(e);return a.fromRadians(u,s,n,r,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=t(i,0);var s=e(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),e(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o++)r[o]=i.toRadians(t[o]);return a.fromRadiansArray(r,e,n)},a.fromRadiansArray=function(t,n,r){var i=t.length;e(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=t[o],s=t[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o+=3)r[o]=i.toRadians(t[o]),r[o+1]=i.toRadians(t[o+1]),r[o+2]=t[o+2];return a.fromRadiansArrayHeights(r,e,n)},a.fromRadiansArrayHeights=function(t,n,r){var i=t.length;e(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=t[o],s=t[o+1],c=t[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.longitude=t(e,0),this.latitude=t(n,0),this.height=t(r,0)};return a.fromRadians=function(n,r,i,o){return i=t(i,0),e(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(t,e,n,r){return t=i.toRadians(t),e=i.toRadians(e),a.fromRadians(t,e,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.longitude=t.longitude,n.latitude=t.latitude,n.height=t.height,n):new a(t.longitude,t.latitude,t.height):void 0},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.longitude===n.longitude&&t.latitude===n.latitude&&t.height===n.height},a.equalsEpsilon=function(t,n,r){return t===n||e(t)&&e(n)&&Math.abs(t.longitude-n.longitude)<=r&&Math.abs(t.latitude-n.latitude)<=r&&Math.abs(t.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e){return a.equalsEpsilon(this,t,e)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(t){"use strict";var e={},n=function(n,r){t(e[n])||(e[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(t){"use strict";var e=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(t){return!1}}(),n=Object.defineProperties;return e&&t(n)||(n=function(t){return t}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";function s(e,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),e._radii=new t(r,i,a),e._radiiSquared=new t(r*r,i*i,a*a),e._radiiToTheFourth=new t(r*r*r*r,i*i*i*i,a*a*a*a),e._oneOverRadii=new t(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),e._oneOverRadiiSquared=new t(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),e._minimumRadius=Math.min(r,i,a),e._maximumRadius=Math.max(r,i,a),e._centerToleranceSquared=u.EPSILON1}var c=function(t,e,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,t,e,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(e,n){if(!r(e))return void 0;var i=e._radii;return r(n)?(t.clone(i,n._radii),t.clone(e._radiiSquared,n._radiiSquared),t.clone(e._radiiToTheFourth,n._radiiToTheFourth),t.clone(e._oneOverRadii,n._oneOverRadii),t.clone(e._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=e._minimumRadius,n._maximumRadius=e._maximumRadius,n._centerToleranceSquared=e._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(t,e){return r(e)||(e=new c),r(t)?(s(e,t.x,t.y,t.z),e):e},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(t){return c.clone(this,t)},c.packedLength=t.packedLength,c.pack=function(e,r,i){i=n(i,0),t.pack(e._radii,r,i)},c.unpack=function(e,r,i){r=n(r,0);var a=t.unpack(e,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=t.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(e,n){var i=e.longitude,a=e.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new t),n.x=u,n.y=s,n.z=c,t.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(e,n){return r(n)||(n=new t),n=t.multiplyComponents(e,this._oneOverRadiiSquared,n),t.normalize(n,n)};var l=new t,f=new t;c.prototype.cartographicToCartesian=function(e,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(e,i),t.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(t.dot(i,a));return t.divideByScalar(a,o,a),t.multiplyByScalar(i,e.height,i),r(n)||(n=new t),t.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;i++)e[i]=this.cartographicToCartesian(t[i],e[i]);return e};var h=new t,d=new t,m=new t;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,d);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=t.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(t.dot(s,n))*t.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new e(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;++i)e[i]=this.cartesianToCartographic(t[i],e[i]);return e};var y=new t,p=new t;return c.prototype.scaleToGeodeticSurface=function(e,n){var i=e.x,a=e.y,o=e.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,m=o*o*f*f,v=h+d+m,w=Math.sqrt(1/v),E=t.multiplyByScalar(e,w,y);if(v<this._centerToleranceSquared)return isFinite(w)?t.clone(E,n):void 0;var x=this._oneOverRadiiSquared,g=x.x,M=x.y,S=x.z,O=p;O.x=2*E.x*g,O.y=2*E.y*M,O.z=2*E.z*S;var z,_,T,R,I,N,b,P,A,C,L,q=(1-w)*t.magnitude(e)/(.5*t.magnitude(O)),U=0;do{q-=U,T=1/(1+q*g),R=1/(1+q*M),I=1/(1+q*S),N=T*T,b=R*R,P=I*I,A=N*T,C=b*R,L=P*I,z=h*N+d*b+m*P-1,_=h*A*g+d*C*M+m*L*S;var B=-2*_;U=z/B}while(Math.abs(z)>u.EPSILON12);return r(n)?(n.x=i*T,n.y=a*R,n.z=o*I,n):new t(i*T,a*R,o*I)},c.prototype.scaleToGeocentricSurface=function(e,n){r(n)||(n=new t);var i=e.x,a=e.y,o=e.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return t.multiplyByScalar(e,s,n)},c.prototype.transformPositionToScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._radii,n)},c.prototype.equals=function(e){return this===e||r(e)&&t.equals(this._radii,e._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(t,e,n,r,i,a,o){"use strict";var u=function(t){this._ellipsoid=n(t,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(e,n){var i=this._semimajorAxis,a=e.longitude*i,o=e.latitude*i,u=e.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new t(a,o,u)},u.prototype.unproject=function(t,n){var i=this._oneOverSemimajorAxis,a=t.x*i,o=t.y*i,u=t.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new e(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(t){"use strict";var e={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return t(e)}),define("Core/Interval",["./defaultValue"],function(t){"use strict";var e=function(e,n){this.start=t(e,0),this.stop=t(n,0)};return e}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)};a.fromElements=function(t,n,r,i,o){return e(o)?(o.x=t,o.y=n,o.z=r,o.w=i,o):new a(t,n,r,i)},a.fromColor=function(t,n){return e(n)?(n.x=t.red,n.y=t.green,n.z=t.blue,n.w=t.alpha,n):new a(t.red,t.green,t.blue,t.alpha)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n.w=t.w,n):new a(t.x,t.y,t.z,t.w):void 0},a.packedLength=4,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z,t.w)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z,t.w)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n.w=Math.min(t.w,e.w),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n.w=Math.max(t.w,e.w),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e.w=t.w/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z+t.w*e.w},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n.w=t.w*e.w,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n.w=t.w+e.w,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n.w=t.w-e.w,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n.w=t.w*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n.w=t.w/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e.w=-t.w,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e.w=Math.abs(t.w),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,s);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z&&t.w===n.w},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]&&t.w===e[n+3]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)&&i.equalsEpsilon(t.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a){"use strict";function o(t){for(var e=0,n=0;9>n;++n){var r=t[n];e+=r*r}return Math.sqrt(e)}function u(t){for(var e=0,n=0;3>n;++n){var r=t[c.getElementIndex(d[n],h[n])];e+=2*r*r}return Math.sqrt(e)}function s(t,e){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(t[c.getElementIndex(d[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=h[i],m=d[i];if(Math.abs(t[c.getElementIndex(m,f)])>n){var y,p=t[c.getElementIndex(m,m)],v=t[c.getElementIndex(f,f)],w=t[c.getElementIndex(m,f)],E=(p-v)/2/w;y=0>E?-1/(-E+Math.sqrt(1+E*E)):1/(E+Math.sqrt(1+E*E)),s=1/Math.sqrt(1+y*y),l=y*s}return e=c.clone(c.IDENTITY,e),e[c.getElementIndex(f,f)]=e[c.getElementIndex(m,m)]=s,e[c.getElementIndex(m,f)]=l,e[c.getElementIndex(f,m)]=-l,e}var c=function(t,n,r,i,a,o,u,s,c){this[0]=e(t,0),this[1]=e(i,0),this[2]=e(u,0),this[3]=e(n,0),this[4]=e(a,0),this[5]=e(s,0),this[6]=e(r,0),this[7]=e(o,0),this[8]=e(c,0)};c.packedLength=9,c.pack=function(t,n,r){r=e(r,0),n[r++]=t[0],n[r++]=t[1],n[r++]=t[2],n[r++]=t[3],n[r++]=t[4],n[r++]=t[5],n[r++]=t[6],n[r++]=t[7],n[r++]=t[8]},c.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r++],i[1]=t[r++],i[2]=t[r++],i[3]=t[r++],i[4]=t[r++],i[5]=t[r++],i[6]=t[r++],i[7]=t[r++],i[8]=t[r++],i},c.clone=function(t,e){return n(t)?n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):new c(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]):void 0},c.fromArray=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r],i[1]=t[r+1],i[2]=t[r+2],i[3]=t[r+3],i[4]=t[r+4],i[5]=t[r+5],i[6]=t[r+6],i[7]=t[r+7],i[8]=t[r+8],i},c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},c.fromQuaternion=function(t,e){var r=t.x*t.x,i=t.x*t.y,a=t.x*t.z,o=t.x*t.w,u=t.y*t.y,s=t.y*t.z,l=t.y*t.w,f=t.z*t.z,h=t.z*t.w,d=t.w*t.w,m=r-u-f+d,y=2*(i-h),p=2*(a+l),v=2*(i+h),w=-r+u-f+d,E=2*(s-o),x=2*(a-l),g=2*(s+o),M=-r-u+f+d;return n(e)?(e[0]=m,e[1]=v,e[2]=x,e[3]=y,e[4]=w,e[5]=g,e[6]=p,e[7]=E,e[8]=M,e):new c(m,y,p,v,w,E,x,g,M)},c.fromScale=function(t,e){return n(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=t.y,e[5]=0,e[6]=0,e[7]=0,e[8]=t.z,e):new c(t.x,0,0,0,t.y,0,0,0,t.z)},c.fromUniformScale=function(t,e){return n(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=t,e[5]=0,e[6]=0,e[7]=0,e[8]=t,e):new c(t,0,0,0,t,0,0,0,t)},c.fromCrossProduct=function(t,e){return n(e)?(e[0]=0,e[1]=t.z,e[2]=-t.y,e[3]=-t.z,e[4]=0,e[5]=t.x,e[6]=t.y,e[7]=-t.x,e[8]=0,e):new c(0,-t.z,t.y,t.z,0,-t.x,-t.y,t.x,0)},c.fromRotationX=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=r,e[5]=i,e[6]=0,e[7]=-i,e[8]=r,e):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=0,e[2]=-i,e[3]=0,e[4]=1,e[5]=0,e[6]=i,e[7]=0,e[8]=r,e):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=i,e[2]=0,e[3]=-i,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8]]},c.getElementIndex=function(t,e){return 3*t+e},c.getColumn=function(t,e,n){var r=3*e,i=t[r],a=t[r+1],o=t[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=3*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(t,e,n){var r=t[e],i=t[e+3],a=t[e+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+3]=n.y,r[e+6]=n.z,r};var l=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],l)),n.y=t.magnitude(t.fromElements(e[3],e[4],e[5],l)),n.z=t.magnitude(t.fromElements(e[6],e[7],e[8],l)),n};var f=new t;c.getMaximumScale=function(e){return c.getScale(e,f),t.maximumComponent(f)},c.multiply=function(t,e,n){var r=t[0]*e[0]+t[3]*e[1]+t[6]*e[2],i=t[1]*e[0]+t[4]*e[1]+t[7]*e[2],a=t[2]*e[0]+t[5]*e[1]+t[8]*e[2],o=t[0]*e[3]+t[3]*e[4]+t[6]*e[5],u=t[1]*e[3]+t[4]*e[4]+t[7]*e[5],s=t[2]*e[3]+t[5]*e[4]+t[8]*e[5],c=t[0]*e[6]+t[3]*e[7]+t[6]*e[8],l=t[1]*e[6]+t[4]*e[7]+t[7]*e[8],f=t[2]*e[6]+t[5]*e[7]+t[8]*e[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[3]*i+t[6]*a,u=t[1]*r+t[4]*i+t[7]*a,s=t[2]*r+t[5]*i+t[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n},c.multiplyByScale=function(t,e,n){return n[0]=t[0]*e.x,n[1]=t[1]*e.x,n[2]=t[2]*e.x,n[3]=t[3]*e.y,n[4]=t[4]*e.y,n[5]=t[5]*e.y,n[6]=t[6]*e.z,n[7]=t[7]*e.z,n[8]=t[8]*e.z,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e},c.transpose=function(t,e){var n=t[0],r=t[3],i=t[6],a=t[1],o=t[4],u=t[7],s=t[2],c=t[5],l=t[8];return e[0]=n,e[1]=r,e[2]=i,e[3]=a,e[4]=o,e[5]=u,e[6]=s,e[7]=c,e[8]=l,e};var h=[1,0,0],d=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(t,e){var r=a.EPSILON20,i=10,l=0,f=0;n(e)||(e={});for(var h=e.unitary=c.clone(c.IDENTITY,e.unitary),d=e.diagonal=c.clone(t,e.diagonal),p=r*o(d);i>f&&u(d)>p;)s(d,m),c.transpose(m,y),c.multiply(d,m,d),c.multiply(y,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e},c.determinant=function(t){var e=t[0],n=t[3],r=t[6],i=t[1],a=t[4],o=t[7],u=t[2],s=t[5],c=t[8];return e*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(t,e){var n=t[0],i=t[1],o=t[2],u=t[3],s=t[4],l=t[5],f=t[6],h=t[7],d=t[8],m=c.determinant(t);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");e[0]=s*d-h*l,e[1]=h*o-i*d,e[2]=i*l-s*o,e[3]=f*l-u*d,e[4]=n*d-f*o,e[5]=u*o-n*l,e[6]=u*h-f*s,e[7]=f*i-n*h,e[8]=n*s-u*i;var y=1/m;return c.multiplyByScalar(e,y,e)},c.equals=function(t,e){return t===e||n(t)&&n(e)&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]},c.equalsEpsilon=function(t,e,r){return t===e||n(t)&&n(e)&&Math.abs(t[0]-e[0])<=r&&Math.abs(t[1]-e[1])<=r&&Math.abs(t[2]-e[2])<=r&&Math.abs(t[3]-e[3])<=r&&Math.abs(t[4]-e[4])<=r&&Math.abs(t[5]-e[5])<=r&&Math.abs(t[6]-e[6])<=r&&Math.abs(t[7]-e[7])<=r&&Math.abs(t[8]-e[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(t){"use strict";var e=function(t){this.name="RuntimeError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(t,e,n,r,i,a,o,u,s){"use strict";var c=function(t,e,r,i,a,o,u,s,c,l,f,h,d,m,y,p){this[0]=n(t,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(e,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(y,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(p,0)};c.packedLength=16,c.pack=function(t,e,r){r=n(r,0),e[r++]=t[0],e[r++]=t[1],e[r++]=t[2],e[r++]=t[3],e[r++]=t[4],e[r++]=t[5],e[r++]=t[6],e[r++]=t[7],e[r++]=t[8],e[r++]=t[9],e[r++]=t[10],e[r++]=t[11],e[r++]=t[12],e[r++]=t[13],e[r++]=t[14],e[r]=t[15]},c.unpack=function(t,e,i){return e=n(e,0),r(i)||(i=new c),i[0]=t[e++],i[1]=t[e++],i[2]=t[e++],i[3]=t[e++],i[4]=t[e++],i[5]=t[e++],i[6]=t[e++],i[7]=t[e++],i[8]=t[e++],i[9]=t[e++],i[10]=t[e++],i[11]=t[e++],i[12]=t[e++],i[13]=t[e++],i[14]=t[e++],i[15]=t[e],i},c.clone=function(t,e){return r(t)?r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):new c(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},c.fromRotationTranslation=function(e,i,a){return i=n(i,t.ZERO),r(a)?(a[0]=e[0],a[1]=e[1],a[2]=e[2],a[3]=0,a[4]=e[3],a[5]=e[4],a[6]=e[5],a[7]=0,a[8]=e[6],a[9]=e[7],a[10]=e[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(e[0],e[3],e[6],i.x,e[1],e[4],e[7],i.y,e[2],e[5],e[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(t,e,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=e.x*e.x,l=e.x*e.y,f=e.x*e.z,h=e.x*e.w,d=e.y*e.y,m=e.y*e.z,y=e.y*e.w,p=e.z*e.z,v=e.z*e.w,w=e.w*e.w,E=s-d-p+w,x=2*(l-v),g=2*(f+y),M=2*(l+v),S=-s+d-p+w,O=2*(m-h),z=2*(f-y),_=2*(m+h),T=-s-d+p+w;return i[0]=E*a,i[1]=M*a,i[2]=z*a,i[3]=0,i[4]=x*o,i[5]=S*o,i[6]=_*o,i[7]=0,i[8]=g*u,i[9]=O*u,i[10]=T*u,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,i},c.fromTranslation=function(t,e){return c.fromRotationTranslation(u.IDENTITY,t,e)},c.fromScale=function(t,e){return r(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t.y,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t.z,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t.x,0,0,0,0,t.y,0,0,0,0,t.z,0,0,0,0,1)},c.fromUniformScale=function(t,e){return r(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t,0,0,0,0,t,0,0,0,0,t,0,0,0,0,1)};var l=new t,f=new t,h=new t;c.fromCamera=function(e,n){var i=e.eye,a=e.target,o=e.up;t.normalize(t.subtract(a,i,l),l),t.normalize(t.cross(l,o,f),f),t.normalize(t.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,y=l.y,p=l.z,v=h.x,w=h.y,E=h.z,x=i.x,g=i.y,M=i.z,S=u*-x+s*-g+d*-M,O=v*-x+w*-g+E*-M,z=m*x+y*g+p*M;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=w,n[6]=-y,n[7]=0,n[8]=d,n[9]=E,n[10]=-p,n[11]=0,n[12]=S,n[13]=O,n[14]=z,n[15]=1,n):new c(u,s,d,S,v,w,E,O,-m,-y,-p,z,0,0,0,1)},c.computePerspectiveFieldOfView=function(t,e,n,r,i){var a=Math.tan(.5*t),o=1/a,u=o/e,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(t,e,n,r,i,a,o){var u=1/(e-t),s=1/(r-n),c=1/(a-i),l=-(e+t)*u,f=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o +},c.computePerspectiveOffCenter=function(t,e,n,r,i,a,o){var u=2*i/(e-t),s=2*i/(r-n),c=(e+t)/(e-t),l=(r+n)/(r-n),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(t,e,n,r,i,a){var o=2*i/(e-t),u=2*i/(r-n),s=(e+t)/(e-t),c=(r+n)/(r-n),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(t,e,r,i){t=n(t,n.EMPTY_OBJECT);var a=n(t.x,0),o=n(t.y,0),u=n(t.width,0),s=n(t.height,0);e=n(e,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-e),h=c,d=l,m=f,y=a+c,p=o+l,v=e+f,w=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=y,i[13]=p,i[14]=v,i[15]=w,i},c.toArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},c.getElementIndex=function(t,e){return 4*t+e},c.getColumn=function(t,e,n){var r=4*e,i=t[r],a=t[r+1],o=t[r+2],u=t[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=4*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(t,e,n){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=t[15],n},c.getRow=function(t,e,n){var r=t[e],i=t[e+4],a=t[e+8],o=t[e+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+4]=n.y,r[e+8]=n.z,r[e+12]=n.w,r};var d=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],d)),n.y=t.magnitude(t.fromElements(e[4],e[5],e[6],d)),n.z=t.magnitude(t.fromElements(e[8],e[9],e[10],d)),n};var m=new t;c.getMaximumScale=function(e){return c.getScale(e,m),t.maximumComponent(m)},c.multiply=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[3],u=t[4],s=t[5],c=t[6],l=t[7],f=t[8],h=t[9],d=t[10],m=t[11],y=t[12],p=t[13],v=t[14],w=t[15],E=e[0],x=e[1],g=e[2],M=e[3],S=e[4],O=e[5],z=e[6],_=e[7],T=e[8],R=e[9],I=e[10],N=e[11],b=e[12],P=e[13],A=e[14],C=e[15],L=r*E+u*x+f*g+y*M,q=i*E+s*x+h*g+p*M,U=a*E+c*x+d*g+v*M,B=o*E+l*x+m*g+w*M,D=r*S+u*O+f*z+y*_,W=i*S+s*O+h*z+p*_,F=a*S+c*O+d*z+v*_,G=o*S+l*O+m*z+w*_,V=r*T+u*R+f*I+y*N,k=i*T+s*R+h*I+p*N,Y=a*T+c*R+d*I+v*N,j=o*T+l*R+m*I+w*N,Z=r*b+u*P+f*A+y*C,H=i*b+s*P+h*A+p*C,X=a*b+c*P+d*A+v*C,K=o*b+l*P+m*A+w*C;return n[0]=L,n[1]=q,n[2]=U,n[3]=B,n[4]=D,n[5]=W,n[6]=F,n[7]=G,n[8]=V,n[9]=k,n[10]=Y,n[11]=j,n[12]=Z,n[13]=H,n[14]=X,n[15]=K,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n[9]=t[9]+e[9],n[10]=t[10]+e[10],n[11]=t[11]+e[11],n[12]=t[12]+e[12],n[13]=t[13]+e[13],n[14]=t[14]+e[14],n[15]=t[15]+e[15],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n[9]=t[9]-e[9],n[10]=t[10]-e[10],n[11]=t[11]-e[11],n[12]=t[12]-e[12],n[13]=t[13]-e[13],n[14]=t[14]-e[14],n[15]=t[15]-e[15],n},c.multiplyTransformation=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=t[12],d=t[13],m=t[14],y=e[0],p=e[1],v=e[2],w=e[4],E=e[5],x=e[6],g=e[8],M=e[9],S=e[10],O=e[12],z=e[13],_=e[14],T=r*y+o*p+c*v,R=i*y+u*p+l*v,I=a*y+s*p+f*v,N=r*w+o*E+c*x,b=i*w+u*E+l*x,P=a*w+s*E+f*x,A=r*g+o*M+c*S,C=i*g+u*M+l*S,L=a*g+s*M+f*S,q=r*O+o*z+c*_+h,U=i*O+u*z+l*_+d,B=a*O+s*z+f*_+m;return n[0]=T,n[1]=R,n[2]=I,n[3]=0,n[4]=N,n[5]=b,n[6]=P,n[7]=0,n[8]=A,n[9]=C,n[10]=L,n[11]=0,n[12]=q,n[13]=U,n[14]=B,n[15]=1,n},c.multiplyByMatrix3=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=e[0],d=e[1],m=e[2],y=e[3],p=e[4],v=e[5],w=e[6],E=e[7],x=e[8],g=r*h+o*d+c*m,M=i*h+u*d+l*m,S=a*h+s*d+f*m,O=r*y+o*p+c*v,z=i*y+u*p+l*v,_=a*y+s*p+f*v,T=r*w+o*E+c*x,R=i*w+u*E+l*x,I=a*w+s*E+f*x;return n[0]=g,n[1]=M,n[2]=S,n[3]=0,n[4]=O,n[5]=z,n[6]=_,n[7]=0,n[8]=T,n[9]=R,n[10]=I,n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n},c.multiplyByTranslation=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=r*t[0]+i*t[4]+a*t[8]+t[12],u=r*t[1]+i*t[5]+a*t[9]+t[13],s=r*t[2]+i*t[6]+a*t[10]+t[14];return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=o,n[13]=u,n[14]=s,n[15]=t[15],n};var y=new t;c.multiplyByUniformScale=function(t,e,n){return y.x=e,y.y=e,y.z=e,c.multiplyByScale(t,y,n)},c.multiplyByScale=function(t,e,n){var r=e.x,i=e.y,a=e.z;return 1===r&&1===i&&1===a?c.clone(t,n):(n[0]=r*t[0],n[1]=r*t[1],n[2]=r*t[2],n[3]=0,n[4]=i*t[4],n[5]=i*t[5],n[6]=i*t[6],n[7]=0,n[8]=a*t[8],n[9]=a*t[9],n[10]=a*t[10],n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=1,n)},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t[0]*r+t[4]*i+t[8]*a+t[12]*o,s=t[1]*r+t[5]*i+t[9]*a+t[13]*o,c=t[2]*r+t[6]*i+t[10]*a+t[14]*o,l=t[3]*r+t[7]*i+t[11]*a+t[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a,u=t[1]*r+t[5]*i+t[9]*a,s=t[2]*r+t[6]*i+t[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a+t[12],u=t[1]*r+t[5]*i+t[9]*a+t[13],s=t[2]*r+t[6]*i+t[10]*a+t[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n[9]=t[9]*e,n[10]=t[10]*e,n[11]=t[11]*e,n[12]=t[12]*e,n[13]=t[13]*e,n[14]=t[14]*e,n[15]=t[15]*e,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e[11]=-t[11],e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=-t[15],e},c.transpose=function(t,e){var n=t[1],r=t[2],i=t[3],a=t[6],o=t[7],u=t[11];return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[10]=t[10],e[11]=t[14],e[12]=i,e[13]=o,e[14]=u,e[15]=t[15],e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e[9]=Math.abs(t[9]),e[10]=Math.abs(t[10]),e[11]=Math.abs(t[11]),e[12]=Math.abs(t[12]),e[13]=Math.abs(t[13]),e[14]=Math.abs(t[14]),e[15]=Math.abs(t[15]),e},c.equals=function(t,e){return t===e||r(t)&&r(e)&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[3]===e[3]&&t[7]===e[7]&&t[11]===e[11]&&t[15]===e[15]},c.equalsEpsilon=function(t,e,n){return t===e||r(t)&&r(e)&&Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n&&Math.abs(t[4]-e[4])<=n&&Math.abs(t[5]-e[5])<=n&&Math.abs(t[6]-e[6])<=n&&Math.abs(t[7]-e[7])<=n&&Math.abs(t[8]-e[8])<=n&&Math.abs(t[9]-e[9])<=n&&Math.abs(t[10]-e[10])<=n&&Math.abs(t[11]-e[11])<=n&&Math.abs(t[12]-e[12])<=n&&Math.abs(t[13]-e[13])<=n&&Math.abs(t[14]-e[14])<=n&&Math.abs(t[15]-e[15])<=n},c.getTranslation=function(t,e){return e.x=t[12],e.y=t[13],e.z=t[14],e},c.getRotation=function(t,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e};var p=new u,v=new u,w=new e,E=new e(0,0,0,1);return c.inverse=function(t,n){if(u.equalsEpsilon(c.getRotation(t,p),v,o.EPSILON7)&&e.equals(c.getRow(t,3,w),E))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-t[12],n[13]=-t[13],n[14]=-t[14],n[15]=1,n;var r=t[0],i=t[4],a=t[8],l=t[12],f=t[1],h=t[5],d=t[9],m=t[13],y=t[2],x=t[6],g=t[10],M=t[14],S=t[3],O=t[7],z=t[11],_=t[15],T=g*_,R=M*z,I=x*_,N=M*O,b=x*z,P=g*O,A=y*_,C=M*S,L=y*z,q=g*S,U=y*O,B=x*S,D=T*h+N*d+b*m-(R*h+I*d+P*m),W=R*f+A*d+q*m-(T*f+C*d+L*m),F=I*f+C*h+U*m-(N*f+A*h+B*m),G=P*f+L*h+B*d-(b*f+q*h+U*d),V=R*i+I*a+P*l-(T*i+N*a+b*l),k=T*r+C*a+L*l-(R*r+A*a+q*l),Y=N*r+A*i+B*l-(I*r+C*i+U*l),j=b*r+q*i+U*a-(P*r+L*i+B*a);T=a*m,R=l*d,I=i*m,N=l*h,b=i*d,P=a*h,A=r*m,C=l*f,L=r*d,q=a*f,U=r*h,B=i*f;var Z=T*O+N*z+b*_-(R*O+I*z+P*_),H=R*S+A*z+q*_-(T*S+C*z+L*_),X=I*S+C*O+U*_-(N*S+A*O+B*_),K=P*S+L*O+B*z-(b*S+q*O+U*z),J=I*g+P*M+R*x-(b*M+T*x+N*g),Q=L*M+T*y+C*g-(A*g+q*M+R*y),$=A*x+B*M+N*y-(U*M+I*y+C*x),te=U*g+b*y+q*x-(L*x+B*g+P*y),ee=r*D+i*W+a*F+l*G;if(Math.abs(ee)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return ee=1/ee,n[0]=D*ee,n[1]=W*ee,n[2]=F*ee,n[3]=G*ee,n[4]=V*ee,n[5]=k*ee,n[6]=Y*ee,n[7]=j*ee,n[8]=Z*ee,n[9]=H*ee,n[10]=X*ee,n[11]=K*ee,n[12]=J*ee,n[13]=Q*ee,n[14]=$*ee,n[15]=te*ee,n},c.inverseTransformation=function(t,e){var n=t[0],r=t[1],i=t[2],a=t[4],o=t[5],u=t[6],s=t[8],c=t[9],l=t[10],f=t[12],h=t[13],d=t[14],m=-n*f-r*h-i*d,y=-a*f-o*h-u*d,p=-s*f-c*h-l*d;return e[0]=n,e[1]=a,e[2]=s,e[3]=0,e[4]=r,e[5]=o,e[6]=c,e[7]=0,e[8]=i,e[9]=u,e[10]=l,e[11]=0,e[12]=m,e[13]=y,e[14]=p,e[15]=1,e},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]&&t[9]===e[n+9]&&t[10]===e[n+10]&&t[11]===e[n+11]&&t[12]===e[n+12]&&t[13]===e[n+13]&&t[14]===e[n+14]&&t[15]===e[n+15]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e,n){this.normal=t.clone(e),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-t.dot(r,n);return e(a)?(t.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new t;return i.fromCartesian4=function(n,r){var o=t.fromCartesian4(n,a),u=n.w;return e(r)?(t.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(e,n){return t.dot(e.normal,n)+e.distance},i.ORIGIN_XY_PLANE=r(new i(t.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(t.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(t.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";var s=function(t,n,r,i){this.west=e(t,0),this.south=e(n,0),this.east=e(r,0),this.north=e(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(t,n,r){r=e(r,0),n[r++]=t.west,n[r++]=t.south,n[r++]=t.east,n[r]=t.north},s.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new s),i.west=t[r++],i.south=t[r++],i.east=t[r++],i.north=t[r],i},s.computeWidth=function(t){var e=t.east,n=t.west;return n>e&&(e+=u.TWO_PI),e-n},s.computeHeight=function(t){return t.north-t.south},s.fromDegrees=function(t,r,i,a,o){return t=u.toRadians(e(t,0)),r=u.toRadians(e(r,0)),i=u.toRadians(e(i,0)),a=u.toRadians(e(a,0)),n(o)?(o.west=t,o.south=r,o.east=i,o.north=a,o):new s(t,r,i,a)},s.fromCartographicArray=function(t,e){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=t.length;c>u;u++){var l=t[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(e)?(e.west=r,e.south=a,e.east=i,e.north=o,e):new s(r,a,i,o)},s.clone=function(t,e){return n(t)?n(e)?(e.west=t.west,e.south=t.south,e.east=t.east,e.north=t.north,e):new s(t.west,t.south,t.east,t.north):void 0},s.prototype.clone=function(t){return s.clone(this,t)},s.prototype.equals=function(t){return s.equals(this,t)},s.equals=function(t,e){return t===e||n(t)&&n(e)&&t.west===e.west&&t.south===e.south&&t.east===e.east&&t.north===e.north},s.prototype.equalsEpsilon=function(t,e){return n(t)&&Math.abs(this.west-t.west)<=e&&Math.abs(this.south-t.south)<=e&&Math.abs(this.east-t.east)<=e&&Math.abs(this.north-t.north)<=e},s.validate=function(){},s.southwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.south,r.height=0,r):new t(e.west,e.south)},s.northwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.north,r.height=0,r):new t(e.west,e.north)},s.northeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.north,r.height=0,r):new t(e.east,e.north)},s.southeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.south,r.height=0,r):new t(e.east,e.south)},s.center=function(e,r){var i=e.east,a=e.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(e.south+e.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new t(o,s)},s.intersection=function(t,e,r){var i=t.east,a=t.west,o=e.east,c=e.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((t.west<t.east||e.west<e.east)&&l>=f)return void 0;var h=Math.max(t.south,e.south),d=Math.min(t.north,e.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(t,e){var n=e.longitude,r=e.latitude,i=t.west,a=t.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=t.south&&r<=t.north};var c=new t;return s.subsample=function(t,r,i,o){r=e(r,a.WGS84),i=e(i,0),n(o)||(o=[]);var l=0,f=t.north,h=t.south,d=t.east,m=t.west,y=c;y.height=i,y.longitude=m,y.latitude=f,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=h,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=0>f?f:h>0?h:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(t,y)&&(o[l]=r.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(t,e,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(e,r){this.center=t.clone(n(e,t.ZERO)),this.radius=n(r,0)},m=new t,y=new t,p=new t,v=new t,w=new t,E=new t,x=new t,g=new t,M=new t,S=new t,O=new t,z=new t;d.fromPoints=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;for(var i=t.clone(e[0],x),a=t.clone(i,m),o=t.clone(i,y),u=t.clone(i,p),s=t.clone(i,v),c=t.clone(i,w),l=t.clone(i,E),f=e.length,h=1;f>h;h++){t.clone(e[h],i);var _=i.x,T=i.y,R=i.z;_<a.x&&t.clone(i,a),_>s.x&&t.clone(i,s),T<o.y&&t.clone(i,o),T>c.y&&t.clone(i,c),R<u.z&&t.clone(i,u),R>l.z&&t.clone(i,l)}var I=t.magnitudeSquared(t.subtract(s,a,g)),N=t.magnitudeSquared(t.subtract(c,o,g)),b=t.magnitudeSquared(t.subtract(l,u,g)),P=a,A=s,C=I;N>C&&(C=N,P=o,A=c),b>C&&(C=b,P=u,A=l);var L=M;L.x=.5*(P.x+A.x),L.y=.5*(P.y+A.y),L.z=.5*(P.z+A.z);var q=t.magnitudeSquared(t.subtract(A,L,g)),U=Math.sqrt(q),B=S;B.x=a.x,B.y=o.y,B.z=u.z;var D=O;D.x=s.x,D.y=c.y,D.z=l.z;var W=t.multiplyByScalar(t.add(B,D,g),.5,z),F=0;for(h=0;f>h;h++){t.clone(e[h],i);var G=t.magnitude(t.subtract(i,W,g));G>F&&(F=G);var V=t.magnitudeSquared(t.subtract(i,L,g));if(V>q){var k=Math.sqrt(V);U=.5*(U+k),q=U*U;var Y=k-U;L.x=(U*L.x+Y*i.x)/k,L.y=(U*L.y+Y*i.y)/k,L.z=(U*L.z+Y*i.z)/k}}return F>U?(t.clone(L,n.center),n.radius=U):(t.clone(W,n.center),n.radius=F),n};var _=new u,T=new t,R=new t,I=new e,N=new e;d.fromRectangle2D=function(t,e,n){return d.fromRectangleWithHeights2D(t,e,0,0,n)},d.fromRectangleWithHeights2D=function(e,i,a,o,u){if(r(u)||(u=new d),!r(e))return u.center=t.clone(t.ZERO,u.center),u.radius=0,u;i=n(i,_),h.southwest(e,I),I.height=a,h.northeast(e,N),N.height=o;var s=i.project(I,T),c=i.project(N,R),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*f,y.z=s.z+.5*m,u};var b=[];d.fromRectangle3D=function(t,e,i,a){e=n(e,o.WGS84),i=n(i,0);var u;return r(t)&&(u=h.subsample(t,e,i,b)),d.fromPoints(u,a)},d.fromVertices=function(e,i,a,o){if(r(o)||(o=new d),!r(e)||0===e.length)return o.center=t.clone(t.ZERO,o.center),o.radius=0,o;i=n(i,t.ZERO),a=n(a,3);var u=x;u.x=e[0]+i.x,u.y=e[1]+i.y,u.z=e[2]+i.z;for(var s=t.clone(u,m),c=t.clone(u,y),l=t.clone(u,p),f=t.clone(u,v),h=t.clone(u,w),_=t.clone(u,E),T=e.length,R=0;T>R;R+=a){var I=e[R]+i.x,N=e[R+1]+i.y,b=e[R+2]+i.z;u.x=I,u.y=N,u.z=b,I<s.x&&t.clone(u,s),I>f.x&&t.clone(u,f),N<c.y&&t.clone(u,c),N>h.y&&t.clone(u,h),b<l.z&&t.clone(u,l),b>_.z&&t.clone(u,_)}var P=t.magnitudeSquared(t.subtract(f,s,g)),A=t.magnitudeSquared(t.subtract(h,c,g)),C=t.magnitudeSquared(t.subtract(_,l,g)),L=s,q=f,U=P;A>U&&(U=A,L=c,q=h),C>U&&(U=C,L=l,q=_);var B=M;B.x=.5*(L.x+q.x),B.y=.5*(L.y+q.y),B.z=.5*(L.z+q.z);var D=t.magnitudeSquared(t.subtract(q,B,g)),W=Math.sqrt(D),F=S;F.x=s.x,F.y=c.y,F.z=l.z;var G=O;G.x=f.x,G.y=h.y,G.z=_.z;var V=t.multiplyByScalar(t.add(F,G,g),.5,z),k=0;for(R=0;T>R;R+=a){u.x=e[R]+i.x,u.y=e[R+1]+i.y,u.z=e[R+2]+i.z;var Y=t.magnitude(t.subtract(u,V,g));Y>k&&(k=Y);var j=t.magnitudeSquared(t.subtract(u,B,g));if(j>D){var Z=Math.sqrt(j);W=.5*(W+Z),D=W*W;var H=Z-W;B.x=(W*B.x+H*u.x)/Z,B.y=(W*B.y+H*u.y)/Z,B.z=(W*B.z+H*u.z)/Z}}return k>W?(t.clone(B,o.center),o.radius=W):(t.clone(V,o.center),o.radius=k),o},d.fromCornerPoints=function(e,n,i){r(i)||(i=new d);var a=i.center;return t.add(e,n,a),t.multiplyByScalar(a,.5,a),i.radius=t.distance(a,n),i},d.fromEllipsoid=function(e,n){return r(n)||(n=new d),t.clone(t.ZERO,n.center),n.radius=e.maximumRadius,n};var P=new t;d.fromBoundingSpheres=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;var i=e.length;if(1===i)return d.clone(e[0],n);if(2===i)return d.union(e[0],e[1],n);for(var a=[],o=0;i>o;o++)a.push(e[o].center);n=d.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=e[o];s=Math.max(s,t.distance(u,c.center,P)+c.radius)}return n.radius=s,n},d.clone=function(e,n){return r(e)?r(n)?(n.center=t.clone(e.center,n.center),n.radius=e.radius,n):new d(e.center,e.radius):void 0},d.packedLength=4,d.pack=function(t,e,r){r=n(r,0);var i=t.center;e[r++]=i.x,e[r++]=i.y,e[r++]=i.z,e[r]=t.radius},d.unpack=function(t,e,i){e=n(e,0),r(i)||(i=new d);var a=i.center;return a.x=t[e++],a.y=t[e++],a.z=t[e++],i.radius=t[e],i};var A=new t,C=new t;d.union=function(e,n,i){r(i)||(i=new d);var a=e.center,o=e.radius,u=n.center,s=n.radius,c=t.subtract(u,a,A),l=t.magnitude(c);if(o>=l+s)return e.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),h=t.multiplyByScalar(c,(-o+f)/l,C);return t.add(h,a,h),t.clone(h,i.center),i.radius=f,i};var L=new t;d.expand=function(e,n,r){r=d.clone(e,r);var i=t.magnitude(t.subtract(n,r.center,L));return i>r.radius&&(r.radius=i),r},d.intersectPlane=function(e,n){var r=e.center,i=e.radius,a=n.normal,o=t.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new t,0);d.intersect=function(t,e){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(e,q);return d.intersectPlane(t,n)},d.transform=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=l.getMaximumScale(e)*t.radius,n};var U=new t;d.distanceSquaredTo=function(e,n){var r=t.subtract(e.center,n,U);return t.magnitudeSquared(r)-e.radius*e.radius},d.transformWithoutScale=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=t.radius,n};var B=new t;d.computePlaneDistances=function(e,n,i,a){r(a)||(a=new c);var o=t.subtract(e.center,n,B),u=t.multiplyByScalar(i,t.dot(i,o),B),s=t.magnitude(u);return a.start=s-e.radius,a.stop=s+e.radius,a};for(var D=new t,W=new t,F=new t,G=new t,V=new t,k=new e,Y=new Array(8),j=0;8>j;++j)Y[j]=new t;var Z=new u;return d.projectTo2D=function(e,r,i){r=n(r,Z);var a=r.ellipsoid,o=e.center,u=e.radius,s=a.geodeticSurfaceNormal(o,D),c=t.cross(t.UNIT_Z,s,W);t.normalize(c,c);var l=t.cross(s,c,F);t.normalize(l,l),t.multiplyByScalar(s,u,s),t.multiplyByScalar(l,u,l),t.multiplyByScalar(c,u,c);var f=t.negate(l,V),h=t.negate(c,G),m=Y,y=m[0];t.add(s,l,y),t.add(y,c,y),y=m[1],t.add(s,l,y),t.add(y,h,y),y=m[2],t.add(s,f,y),t.add(y,h,y),y=m[3],t.add(s,f,y),t.add(y,c,y),t.negate(s,s),y=m[4],t.add(s,l,y),t.add(y,c,y),y=m[5],t.add(s,l,y),t.add(y,h,y),y=m[6],t.add(s,f,y),t.add(y,h,y),y=m[7],t.add(s,f,y),t.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var w=m[v];t.add(o,w,w);var E=a.cartesianToCartographic(w,k);r.project(E,w)}i=d.fromPoints(m,i),o=i.center;var x=o.x,g=o.y,M=o.z;return o.x=M,o.y=x,o.z=g,i},d.equals=function(e,n){return e===n||r(e)&&r(n)&&t.equals(e.center,n.center)&&e.radius===n.radius},d.prototype.intersectPlane=function(t){return d.intersectPlane(this,t)},d.prototype.intersect=function(t){return d.intersect(this,t)},d.prototype.equals=function(t){return d.equals(this,t)},d.prototype.clone=function(t){return d.clone(this,t)},d}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n){this.x=t(e,0),this.y=t(n,0)};a.fromElements=function(t,n,r){return e(r)?(r.x=t,r.y=n,r):new a(t,n)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n):new a(t.x,t.y):void 0},a.fromCartesian3=a.clone,a.fromCartesian4=a.clone,a.packedLength=2,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r]=e.y},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y)},a.minimumComponent=function(t){return Math.min(t.x,t.y)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){return a.normalize(t,s),a.normalize(e,c),i.acosClamped(a.dot(s,c))};var l=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Y,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)},a.ZERO=r(new a(0,0)),a.UNIT_X=r(new a(1,0)),a.UNIT_Y=r(new a(0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+")"},a}),define("Core/Fullscreen",["./defined","./defineProperties"],function(t,e){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return e(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(t(n))return n;n=!1;var e=document.body;if("function"==typeof e.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof e[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof e[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",t(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",t(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",t(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",t(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(t){i.supportsFullscreen()&&t[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(t,e,n){"use strict";function r(t){for(var e=t.split("."),n=0,r=e.length;r>n;++n)e[n]=parseInt(e[n],10);return e}function i(){if(!e(p)){p=!1;var t=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(p=!0,v=r(t[1]))}return p}function a(){return i()&&v}function o(){if(!e(w)&&(w=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var t=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(w=!0,E=r(t[1]))}return w}function u(){return o()&&E}function s(){if(!e(x)){x=!1;var t=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==t&&(x=!0,g=r(t[1]),g.isNightly=!!t[2])}return x}function c(){return s()&&g}function l(){if(!e(M)){M=!1;var t;"Microsoft Internet Explorer"===navigator.appName?(t=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(M=!0,S=r(t[1]))):"Netscape"===navigator.appName&&(t=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(M=!0,S=r(t[1])))}return M}function f(){return l()&&S}function h(){if(!e(O)){O=!1;var t=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(O=!0,z=r(t[1]))}return O}function d(){return e(_)||(_=/Windows/i.test(navigator.appVersion)),_}function m(){return h()&&z}function y(){return e(T)||(T=e(window.PointerEvent)&&(!e(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),T}var p,v,w,E,x,g,M,S,O,z,_,T,R={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:t(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return R.supportsFullscreen=function(){return n.supportsFullscreen()},R.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},R.supportsWebWorkers=function(){return"undefined"!=typeof Worker},R}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(t,e,n,r,i){"use strict";if(!r.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(t){switch(t){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},a.fromTypedArray=function(t){return t instanceof Int8Array?a.BYTE:t instanceof Uint8Array?a.UNSIGNED_BYTE:t instanceof Int16Array?a.SHORT:t instanceof Uint16Array?a.UNSIGNED_SHORT:t instanceof Float32Array?a.FLOAT:t instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(t){return e(t)&&(t===a.BYTE||t===a.UNSIGNED_BYTE||t===a.SHORT||t===a.UNSIGNED_SHORT||t===a.FLOAT||t===a.DOUBLE)},a.createTypedArray=function(t,e){switch(t){case a.BYTE:return new Int8Array(e);case a.UNSIGNED_BYTE:return new Uint8Array(e);case a.SHORT:return new Int16Array(e);case a.UNSIGNED_SHORT:return new Uint16Array(e);case a.FLOAT:return new Float32Array(e);case a.DOUBLE:return new Float64Array(e);default:throw new n("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(e,r,i,o){switch(i=t(i,0),o=t(o,(r.byteLength-i)/a.getSizeInBytes(e)),e){case a.BYTE:return new Int8Array(r,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(r,i,o);case a.SHORT:return new Int16Array(r,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(r,i,o);case a.FLOAT:return new Float32Array(r,i,o);case a.DOUBLE:return new Float64Array(r,i,o);default:throw new n("componentDatatype is not a valid value.")}},i(a)}),define("Core/CylinderGeometryLibrary",["./Math"],function(t){"use strict";var e={};return e.computePositions=function(e,n,r,i,a){var o,u=.5*e,s=-u,c=i+i,l=a?2*c:c,f=new Float64Array(3*l),h=0,d=0,m=a?3*c:0,y=a?3*(c+i):3*i;for(o=0;i>o;o++){var p=o/i*t.TWO_PI,v=Math.cos(p),w=Math.sin(p),E=v*r,x=w*r,g=v*n,M=w*n;f[d+m]=E,f[d+m+1]=x,f[d+m+2]=s,f[d+y]=g,f[d+y+1]=M,f[d+y+2]=u,d+=3,a&&(f[h++]=E,f[h++]=x,f[h++]=s,f[h++]=g,f[h++]=M,f[h++]=u)}return f},e}),define("Core/GeometryType",["./freezeObject"],function(t){"use strict";var e={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return t(e)}),define("Core/PrimitiveType",["./freezeObject"],function(t){"use strict";var e={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(t){return t===e.POINTS||t===e.LINES||t===e.LINE_LOOP||t===e.LINE_STRIP||t===e.TRIANGLES||t===e.TRIANGLE_STRIP||t===e.TRIANGLE_FAN}};return t(e)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(t,e,n,r,i){"use strict";var a=function(e){e=t(e,t.EMPTY_OBJECT),this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=t(e.primitiveType,i.TRIANGLES),this.boundingSphere=e.boundingSphere,this.geometryType=t(e.geometryType,r.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(t){var r=-1;for(var i in t.attributes)if(t.attributes.hasOwnProperty(i)&&e(t.attributes[i])&&e(t.attributes[i].values)){var a=t.attributes[i],o=a.values.length/a.componentsPerAttribute; +if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=t(e.normalize,!1),this.values=e.values};return e}),define("Core/GeometryAttributes",["./defaultValue"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.position=e.position,this.normal=e.normal,this.st=e.st,this.binormal=e.binormal,this.tangent=e.tangent,this.color=e.color};return e}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(t){switch(t){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(e){return t(e)&&(e===i.UNSIGNED_BYTE||e===i.UNSIGNED_SHORT||e===i.UNSIGNED_INT)},i.createTypedArray=function(t,e){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e):new Uint16Array(e)},i.createTypedArrayFromArrayBuffer=function(t,e,n,i){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e,n,i):new Uint16Array(e,n,i)},n(i)}),define("Core/CylinderOutlineGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./CylinderGeometryLibrary","./defaultValue","./defined","./DeveloperError","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./PrimitiveType"],function(t,e,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=new e,m=function(t){t=a(t,a.EMPTY_OBJECT);var e=t.length,n=t.topRadius,r=t.bottomRadius,i=a(t.slices,128),o=Math.max(a(t.numberOfVerticalLines,16),0);this._length=e,this._topRadius=n,this._bottomRadius=r,this._slices=i,this._numberOfVerticalLines=o,this._workerName="createCylinderOutlineGeometry"};m.packedLength=5,m.pack=function(t,e,n){n=a(n,0),e[n++]=t._length,e[n++]=t._topRadius,e[n++]=t._bottomRadius,e[n++]=t._slices,e[n]=t._numberOfVerticalLines};var y={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0};return m.unpack=function(t,e,n){e=a(e,0);var r=t[e++],i=t[e++],u=t[e++],s=t[e++],c=t[e];return o(n)?(n._length=r,n._topRadius=i,n._bottomRadius=u,n._slices=s,n._numberOfVerticalLines=c,n):(y.length=r,y.topRadius=i,y.bottomRadius=u,y.slices=s,y.numberOfVerticalLines=c,new m(y))},m.createGeometry=function(a){var o,u=a._length,m=a._topRadius,y=a._bottomRadius,p=a._slices,v=a._numberOfVerticalLines,w=2*p,E=i.computePositions(u,m,y,p,!1),x=2*p;if(v>0){var g=Math.min(v,p);o=Math.round(p/g),x+=g}for(var M=f.createTypedArray(w,2*x),S=0,O=0;p-1>O;O++)M[S++]=O,M[S++]=O+1,M[S++]=O+p,M[S++]=O+1+p;if(M[S++]=p-1,M[S++]=0,M[S++]=p+p-1,M[S++]=p,v>0)for(O=0;p>O;O+=o)M[S++]=O,M[S++]=O+p;var z=new l;z.position=new c({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:E}),d.x=.5*u,d.y=Math.max(y,m);var _=new t(n.ZERO,e.magnitude(d));return new s({attributes:z,indices:M,primitiveType:h.LINES,boundingSphere:_})},m}),define("Workers/createCylinderOutlineGeometry",["../Core/CylinderOutlineGeometry","../Core/defined"],function(t,e){"use strict";return function(n,r){return e(r)&&(n=t.unpack(n,r)),t.createGeometry(n)}})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createEllipseGeometry.js b/libs/Cesium/Workers/createEllipseGeometry.js new file mode 100644 index 0000000000..f5e6e211b0 --- /dev/null +++ b/libs/Cesium/Workers/createEllipseGeometry.js @@ -0,0 +1,61 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var r;for(this.mti==this.N+1&&this.init_genrand(5489),r=0;r<this.N-this.M;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+this.M]^e>>>1^t[1&e];for(;r<this.N-1;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};r.EPSILON1=.1,r.EPSILON2=.01,r.EPSILON3=.001,r.EPSILON4=1e-4,r.EPSILON5=1e-5,r.EPSILON6=1e-6,r.EPSILON7=1e-7,r.EPSILON8=1e-8,r.EPSILON9=1e-9,r.EPSILON10=1e-10,r.EPSILON11=1e-11,r.EPSILON12=1e-12,r.EPSILON13=1e-13,r.EPSILON14=1e-14,r.EPSILON15=1e-15,r.EPSILON16=1e-16,r.EPSILON17=1e-17,r.EPSILON18=1e-18,r.EPSILON19=1e-19,r.EPSILON20=1e-20,r.GRAVITATIONALPARAMETER=3986004418e5,r.SOLAR_RADIUS=6955e5,r.LUNAR_RADIUS=1737400,r.SIXTY_FOUR_KILOBYTES=65536,r.sign=function(e){return e>0?1:0>e?-1:0},r.signNotZero=function(e){return 0>e?-1:1},r.toSNorm=function(e){return Math.round(255*(.5*r.clamp(e,-1,1)+.5))},r.fromSNorm=function(e){return 2*(r.clamp(e,0,255)/255)-1},r.sinh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t-r)},r.cosh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t+r)},r.lerp=function(e,t,r){return(1-r)*e+r*t},r.PI=Math.PI,r.ONE_OVER_PI=1/Math.PI,r.PI_OVER_TWO=.5*Math.PI,r.PI_OVER_THREE=Math.PI/3,r.PI_OVER_FOUR=Math.PI/4,r.PI_OVER_SIX=Math.PI/6,r.THREE_PI_OVER_TWO=.5*3*Math.PI,r.TWO_PI=2*Math.PI,r.ONE_OVER_TWO_PI=1/(2*Math.PI),r.RADIANS_PER_DEGREE=Math.PI/180,r.DEGREES_PER_RADIAN=180/Math.PI,r.RADIANS_PER_ARCSECOND=r.RADIANS_PER_DEGREE/3600,r.toRadians=function(e){return e*r.RADIANS_PER_DEGREE},r.toDegrees=function(e){return e*r.DEGREES_PER_RADIAN},r.convertLongitudeRange=function(e){var t=r.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n},r.negativePiToPi=function(e){return r.zeroToTwoPi(e+r.PI)-r.PI},r.zeroToTwoPi=function(e){var t=r.mod(e,r.TWO_PI);return Math.abs(t)<r.EPSILON14&&Math.abs(e)>r.EPSILON14?r.TWO_PI:t},r.mod=function(e,t){return(e%t+t)%t},r.equalsEpsilon=function(e,r,n,a){a=t(a,n);var i=Math.abs(e-r);return a>=i||i<=n*Math.max(Math.abs(e),Math.abs(r))};var n=[1];r.factorial=function(e){var t=n.length;if(e>=t)for(var r=n[t-1],a=t;e>=a;a++)n.push(r*a);return n[e]},r.incrementWrap=function(e,r,n){return n=t(n,0),++e,e>r&&(e=n),e},r.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},r.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},r.clamp=function(e,t,r){return t>e?t:e>r?r:e};var a=new e;return r.setRandomNumberSeed=function(t){a=new e(t)},r.nextRandomNumber=function(){return a.random()},r.acosClamped=function(e){return Math.acos(r.clamp(e,-1,1))},r.asinClamped=function(e){return Math.asin(r.clamp(e,-1,1))},r.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},r}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r,n){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0)};i.fromSpherical=function(r,n){t(n)||(n=new i);var a=r.clock,o=r.cone,u=e(r.magnitude,1),s=u*Math.sin(o);return n.x=s*Math.cos(a),n.y=s*Math.sin(a),n.z=u*Math.cos(o),n},i.fromElements=function(e,r,n,a){return t(a)?(a.x=e,a.y=r,a.z=n,a):new i(e,r,n)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r):new i(e.x,e.y,e.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n]=t.z},i.unpack=function(r,n,a){return n=e(n,0),t(a)||(a=new i),a.x=r[n++],a.y=r[n++],a.z=r[n],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i,c=new i;i.angleBetween=function(e,t){i.normalize(e,s),i.normalize(t,c);var r=i.dot(s,c),n=i.magnitude(i.cross(s,c,s));return Math.atan2(n,r)};var l=new i;i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,l);return i.abs(r,r),t=r.x<=r.y?r.x<=r.z?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Z,t):r.y<=r.z?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_Z,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&a.equalsEpsilon(e.x,r.x,n,i)&&a.equalsEpsilon(e.y,r.y,n,i)&&a.equalsEpsilon(e.z,r.z,n,i)},i.cross=function(e,t,r){var n=e.x,a=e.y,i=e.z,o=t.x,u=t.y,s=t.z,c=a*s-i*u,l=i*o-n*s,f=n*u-a*o;return r.x=c,r.y=l,r.z=f,r},i.fromDegrees=function(e,t,r,n,o){var u=a.toRadians(e),s=a.toRadians(t);return i.fromRadians(u,s,r,n,o)};var f=new i,d=new i,h=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(r,n,a,o,u){a=e(a,0);var s=t(o)?o.radiiSquared:h,c=Math.cos(n);f.x=c*Math.cos(r),f.y=c*Math.sin(r),f.z=Math.sin(n),f=i.normalize(f,f),i.multiplyComponents(s,f,d);var l=Math.sqrt(i.dot(f,d));return d=i.divideByScalar(d,l,d),f=i.multiplyByScalar(f,a,f),t(u)||(u=new i),i.add(d,f,u)},i.fromDegreesArray=function(e,t,r){for(var n=new Array(e.length),o=0;o<e.length;o++)n[o]=a.toRadians(e[o]);return i.fromRadiansArray(n,t,r)},i.fromRadiansArray=function(e,r,n){var a=e.length;t(n)?n.length=a/2:n=new Array(a/2);for(var o=0;a>o;o+=2){var u=e[o],s=e[o+1];n[o/2]=i.fromRadians(u,s,0,r,n[o/2])}return n},i.fromDegreesArrayHeights=function(e,t,r){for(var n=new Array(e.length),o=0;o<e.length;o+=3)n[o]=a.toRadians(e[o]),n[o+1]=a.toRadians(e[o+1]),n[o+2]=e[o+2];return i.fromRadiansArrayHeights(n,t,r)},i.fromRadiansArrayHeights=function(e,r,n){var a=e.length;t(n)?n.length=a/3:n=new Array(a/3);for(var o=0;a>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];n[o/3]=i.fromRadians(u,s,c,r,n[o/3])}return n},i.ZERO=n(new i(0,0,0)),i.UNIT_X=n(new i(1,0,0)),i.UNIT_Y=n(new i(0,1,0)),i.UNIT_Z=n(new i(0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r,n){this.longitude=e(t,0),this.latitude=e(r,0),this.height=e(n,0)};return i.fromRadians=function(r,n,a,o){return a=e(a,0),t(o)?(o.longitude=r,o.latitude=n,o.height=a,o):new i(r,n,a)},i.fromDegrees=function(e,t,r,n){return e=a.toRadians(e),t=a.toRadians(t),i.fromRadians(e,t,r,n)},i.clone=function(e,r){return t(e)?t(r)?(r.longitude=e.longitude,r.latitude=e.latitude,r.height=e.height,r):new i(e.longitude,e.latitude,e.height):void 0},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.longitude===r.longitude&&e.latitude===r.latitude&&e.height===r.height},i.equalsEpsilon=function(e,r,n){return e===r||t(e)&&t(r)&&Math.abs(e.longitude-r.longitude)<=n&&Math.abs(e.latitude-r.latitude)<=n&&Math.abs(e.height-r.height)<=n},i.ZERO=n(new i(0,0,0)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},r=function(r,n){e(t[r])||(t[r]=!0,console.log(n))};return r}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),r=Object.defineProperties;return t&&e(r)||(r=function(e){return e}),r}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a,i,o,u){"use strict";function s(t,n,a,i){n=r(n,0),a=r(a,0),i=r(i,0),t._radii=new e(n,a,i),t._radiiSquared=new e(n*n,a*a,i*i),t._radiiToTheFourth=new e(n*n*n*n,a*a*a*a,i*i*i*i),t._oneOverRadii=new e(0===n?0:1/n,0===a?0:1/a,0===i?0:1/i),t._oneOverRadiiSquared=new e(0===n?0:1/(n*n),0===a?0:1/(a*a),0===i?0:1/(i*i)),t._minimumRadius=Math.min(n,a,i),t._maximumRadius=Math.max(n,a,i),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,r){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,r)};a(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,r){if(!n(t))return void 0;var a=t._radii;return n(r)?(e.clone(a,r._radii),e.clone(t._radiiSquared,r._radiiSquared),e.clone(t._radiiToTheFourth,r._radiiToTheFourth),e.clone(t._oneOverRadii,r._oneOverRadii),e.clone(t._oneOverRadiiSquared,r._oneOverRadiiSquared),r._minimumRadius=t._minimumRadius,r._maximumRadius=t._maximumRadius,r._centerToleranceSquared=t._centerToleranceSquared,r):new c(a.x,a.y,a.z)},c.fromCartesian3=function(e,t){return n(t)||(t=new c),n(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,n,a){a=r(a,0),e.pack(t._radii,n,a)},c.unpack=function(t,n,a){n=r(n,0);var i=e.unpack(t,n);return c.fromCartesian3(i,a)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,r){var a=t.longitude,i=t.latitude,o=Math.cos(i),u=o*Math.cos(a),s=o*Math.sin(a),c=Math.sin(i);return n(r)||(r=new e),r.x=u,r.y=s,r.z=c,e.normalize(r,r)},c.prototype.geodeticSurfaceNormal=function(t,r){return n(r)||(r=new e),r=e.multiplyComponents(t,this._oneOverRadiiSquared,r),e.normalize(r,r)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,r){var a=l,i=f;this.geodeticSurfaceNormalCartographic(t,a),e.multiplyComponents(this._radiiSquared,a,i);var o=Math.sqrt(e.dot(a,i));return e.divideByScalar(i,o,i),e.multiplyByScalar(a,t.height,a),n(r)||(r=new e),e.add(i,a,r)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var a=0;r>a;a++)t[a]=this.cartographicToCartesian(e[a],t[a]);return t};var d=new e,h=new e,m=new e;c.prototype.cartesianToCartographic=function(r,a){var i=this.scaleToGeodeticSurface(r,h);if(!n(i))return void 0;var o=this.geodeticSurfaceNormal(i,d),s=e.subtract(r,i,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,r))*e.magnitude(s);return n(a)?(a.longitude=c,a.latitude=l,a.height=f,a):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var a=0;r>a;++a)t[a]=this.cartesianToCartographic(e[a],t[a]);return t};var y=new e,p=new e;return c.prototype.scaleToGeodeticSurface=function(t,r){var a=t.x,i=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,d=a*a*c*c,h=i*i*l*l,m=o*o*f*f,v=d+h+m,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,y);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,r):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,M=x.z,b=p;b.x=2*w.x*E,b.y=2*w.y*S,b.z=2*w.z*M;var T,A,O,I,N,z,P,R,_,L,C,q=(1-g)*e.magnitude(t)/(.5*e.magnitude(b)),D=0;do{q-=D,O=1/(1+q*E),I=1/(1+q*S),N=1/(1+q*M),z=O*O,P=I*I,R=N*N,_=z*O,L=P*I,C=R*N,T=d*z+h*P+m*R-1,A=d*_*E+h*L*S+m*C*M;var B=-2*A;D=T/B}while(Math.abs(T)>u.EPSILON12);return n(r)?(r.x=a*O,r.y=i*I,r.z=o*N,r):new e(a*O,i*I,o*N)},c.prototype.scaleToGeocentricSurface=function(t,r){n(r)||(r=new e);var a=t.x,i=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(a*a*u.x+i*i*u.y+o*o*u.z);return e.multiplyByScalar(t,s,r)},c.prototype.transformPositionToScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._oneOverRadii,r)},c.prototype.transformPositionFromScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._radii,r)},c.prototype.equals=function(t){return this===t||n(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,r,n,a,i,o){"use strict";var u=function(e){this._ellipsoid=r(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return a(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,r){var a=this._semimajorAxis,i=t.longitude*a,o=t.latitude*a,u=t.height;return n(r)?(r.x=i,r.y=o,r.z=u,r):new e(i,o,u)},u.prototype.unproject=function(e,r){var a=this._oneOverSemimajorAxis,i=e.x*a,o=e.y*a,u=e.z;return n(r)?(r.longitude=i,r.latitude=o,r.height=u,r):new t(i,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,r){this.start=e(t,0),this.stop=e(r,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r,n,a){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0),this.w=e(a,0)};i.fromElements=function(e,r,n,a,o){return t(o)?(o.x=e,o.y=r,o.z=n,o.w=a,o):new i(e,r,n,a)},i.fromColor=function(e,r){return t(r)?(r.x=e.red,r.y=e.green,r.z=e.blue,r.w=e.alpha,r):new i(e.red,e.green,e.blue,e.alpha)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r.w=e.w,r):new i(e.x,e.y,e.z,e.w):void 0},i.packedLength=4,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n++]=t.z,r[n]=t.w},i.unpack=function(r,n,a){return n=e(n,0),t(a)||(a=new i),a.x=r[n++],a.y=r[n++],a.z=r[n++],a.w=r[n],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r.w=Math.min(e.w,t.w),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r.w=Math.max(e.w,t.w),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t.w=e.w/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r.w=e.w*t.w,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i;return i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,s);return i.abs(r,r),t=r.x<=r.y?r.x<=r.z?r.x<=r.w?i.clone(i.UNIT_X,t):i.clone(i.UNIT_W,t):r.z<=r.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t):r.y<=r.z?r.y<=r.w?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_W,t):r.z<=r.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z&&e.w===r.w},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]&&e.w===t[r+3]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&a.equalsEpsilon(e.x,r.x,n,i)&&a.equalsEpsilon(e.y,r.y,n,i)&&a.equalsEpsilon(e.z,r.z,n,i)&&a.equalsEpsilon(e.w,r.w,n,i)},i.ZERO=n(new i(0,0,0,0)),i.UNIT_X=n(new i(1,0,0,0)),i.UNIT_Y=n(new i(0,1,0,0)),i.UNIT_Z=n(new i(0,0,1,0)),i.UNIT_W=n(new i(0,0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a,i){"use strict";function o(e){for(var t=0,r=0;9>r;++r){var n=e[r];t+=n*n}return Math.sqrt(t)}function u(e){for(var t=0,r=0;3>r;++r){var n=e[c.getElementIndex(h[r],d[r])];t+=2*n*n}return Math.sqrt(t)}function s(e,t){for(var r=i.EPSILON15,n=0,a=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(h[o],d[o])]);u>n&&(a=o,n=u)}var s=1,l=0,f=d[a],m=h[a];if(Math.abs(e[c.getElementIndex(m,f)])>r){var y,p=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(m,f)],w=(p-v)/2/g;y=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+y*y),l=y*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,f)]=l,t[c.getElementIndex(f,m)]=-l,t}var c=function(e,r,n,a,i,o,u,s,c){this[0]=t(e,0),this[1]=t(a,0),this[2]=t(u,0),this[3]=t(r,0),this[4]=t(i,0),this[5]=t(s,0),this[6]=t(n,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,r,n){n=t(n,0),r[n++]=e[0],r[n++]=e[1],r[n++]=e[2],r[n++]=e[3],r[n++]=e[4],r[n++]=e[5],r[n++]=e[6],r[n++]=e[7],r[n++]=e[8]},c.unpack=function(e,n,a){return n=t(n,0),r(a)||(a=new c),a[0]=e[n++],a[1]=e[n++],a[2]=e[n++],a[3]=e[n++],a[4]=e[n++],a[5]=e[n++],a[6]=e[n++],a[7]=e[n++],a[8]=e[n++],a},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,n,a){return n=t(n,0),r(a)||(a=new c),a[0]=e[n],a[1]=e[n+1],a[2]=e[n+2],a[3]=e[n+3],a[4]=e[n+4],a[5]=e[n+5],a[6]=e[n+6],a[7]=e[n+7],a[8]=e[n+8],a},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var n=e.x*e.x,a=e.x*e.y,i=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,d=e.z*e.w,h=e.w*e.w,m=n-u-f+h,y=2*(a-d),p=2*(i+l),v=2*(a+d),g=-n+u-f+h,w=2*(s-o),x=2*(i-l),E=2*(s+o),S=-n-u+f+h;return r(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=y,t[4]=g,t[5]=E,t[6]=p,t[7]=w,t[8]=S,t):new c(m,y,p,v,g,w,x,E,S)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return r(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var n=Math.cos(e),a=Math.sin(e);return r(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=a,t[6]=0,t[7]=-a,t[8]=n,t):new c(1,0,0,0,n,-a,0,a,n)},c.fromRotationY=function(e,t){var n=Math.cos(e),a=Math.sin(e);return r(t)?(t[0]=n,t[1]=0,t[2]=-a,t[3]=0,t[4]=1,t[5]=0,t[6]=a,t[7]=0,t[8]=n,t):new c(n,0,a,0,1,0,-a,0,n)},c.fromRotationZ=function(e,t){var n=Math.cos(e),a=Math.sin(e);return r(t)?(t[0]=n,t[1]=a,t[2]=0,t[3]=-a,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(n,-a,0,a,n,0,0,0,1)},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,r){var n=3*t,a=e[n],i=e[n+1],o=e[n+2];return r.x=a,r.y=i,r.z=o,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var a=3*t;return n[a]=r.x,n[a+1]=r.y,n[a+2]=r.z,n},c.getRow=function(e,t,r){var n=e[t],a=e[t+3],i=e[t+6];return r.x=n,r.y=a,r.z=i,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+3]=r.y,n[t+6]=r.z,n};var l=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),r.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),r.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),r};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,r){var n=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],a=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],i=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return r[0]=n,r[1]=a,r[2]=i,r[3]=o,r[4]=u,r[5]=s,r[6]=c,r[7]=l,r[8]=f,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r},c.multiplyByVector=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=e[0]*n+e[3]*a+e[6]*i,u=e[1]*n+e[4]*a+e[7]*i,s=e[2]*n+e[5]*a+e[8]*i;return r.x=o,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r},c.multiplyByScale=function(e,t,r){return r[0]=e[0]*t.x,r[1]=e[1]*t.x,r[2]=e[2]*t.x,r[3]=e[3]*t.y,r[4]=e[4]*t.y,r[5]=e[5]*t.y,r[6]=e[6]*t.z,r[7]=e[7]*t.z,r[8]=e[8]*t.z,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var r=e[0],n=e[3],a=e[6],i=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=r,t[1]=n,t[2]=a,t[3]=i,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var d=[1,0,0],h=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(e,t){var n=i.EPSILON20,a=10,l=0,f=0;r(t)||(t={});for(var d=t.unitary=c.clone(c.IDENTITY,t.unitary),h=t.diagonal=c.clone(e,t.diagonal),p=n*o(h);a>f&&u(h)>p;)s(h,m),c.transpose(m,y),c.multiply(h,m,h),c.multiply(y,h,h),c.multiply(d,m,d),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],r=e[3],n=e[6],a=e[1],i=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(i*c-s*o)+a*(s*n-r*c)+u*(r*o-i*n)},c.inverse=function(e,t){var r=e[0],a=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],d=e[7],h=e[8],m=c.determinant(e);if(Math.abs(m)<=i.EPSILON15)throw new n("matrix is not invertible");t[0]=s*h-d*l,t[1]=d*o-a*h,t[2]=a*l-s*o,t[3]=f*l-u*h,t[4]=r*h-f*o,t[5]=u*o-r*l,t[6]=u*d-f*s,t[7]=f*a-r*d,t[8]=r*s-u*a;var y=1/m;return c.multiplyByScalar(t,y,t)},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n},c.IDENTITY=a(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,r,n,a,i,o,u,s){"use strict";var c=function(e,t,n,a,i,o,u,s,c,l,f,d,h,m,y,p){this[0]=r(e,0),this[1]=r(i,0),this[2]=r(c,0),this[3]=r(h,0),this[4]=r(t,0),this[5]=r(o,0),this[6]=r(l,0),this[7]=r(m,0),this[8]=r(n,0),this[9]=r(u,0),this[10]=r(f,0),this[11]=r(y,0),this[12]=r(a,0),this[13]=r(s,0),this[14]=r(d,0),this[15]=r(p,0)};c.packedLength=16,c.pack=function(e,t,n){n=r(n,0),t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15]},c.unpack=function(e,t,a){return t=r(t,0),n(a)||(a=new c),a[0]=e[t++],a[1]=e[t++],a[2]=e[t++],a[3]=e[t++],a[4]=e[t++],a[5]=e[t++],a[6]=e[t++],a[7]=e[t++],a[8]=e[t++],a[9]=e[t++],a[10]=e[t++],a[11]=e[t++],a[12]=e[t++],a[13]=e[t++],a[14]=e[t++],a[15]=e[t],a},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,a,i){return a=r(a,e.ZERO),n(i)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=0,i[4]=t[3],i[5]=t[4],i[6]=t[5],i[7]=0,i[8]=t[6],i[9]=t[7],i[10]=t[8],i[11]=0,i[12]=a.x,i[13]=a.y,i[14]=a.z,i[15]=1,i):new c(t[0],t[3],t[6],a.x,t[1],t[4],t[7],a.y,t[2],t[5],t[8],a.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,r,a){n(a)||(a=new c);var i=r.x,o=r.y,u=r.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,d=t.x*t.w,h=t.y*t.y,m=t.y*t.z,y=t.y*t.w,p=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-h-p+g,x=2*(l-v),E=2*(f+y),S=2*(l+v),M=-s+h-p+g,b=2*(m-d),T=2*(f-y),A=2*(m+d),O=-s-h+p+g;return a[0]=w*i,a[1]=S*i,a[2]=T*i,a[3]=0,a[4]=x*o,a[5]=M*o,a[6]=A*o,a[7]=0,a[8]=E*u,a[9]=b*u,a[10]=O*u,a[11]=0,a[12]=e.x,a[13]=e.y,a[14]=e.z,a[15]=1,a},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,d=new e;c.fromCamera=function(t,r){var a=t.eye,i=t.target,o=t.up;e.normalize(e.subtract(i,a,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,d),d);var u=f.x,s=f.y,h=f.z,m=l.x,y=l.y,p=l.z,v=d.x,g=d.y,w=d.z,x=a.x,E=a.y,S=a.z,M=u*-x+s*-E+h*-S,b=v*-x+g*-E+w*-S,T=m*x+y*E+p*S;return n(r)?(r[0]=u,r[1]=v,r[2]=-m,r[3]=0,r[4]=s,r[5]=g,r[6]=-y,r[7]=0,r[8]=h,r[9]=w,r[10]=-p,r[11]=0,r[12]=M,r[13]=b,r[14]=T,r[15]=1,r):new c(u,s,h,M,v,g,w,b,-m,-y,-p,T,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,r,n,a){var i=Math.tan(.5*e),o=1/i,u=o/t,s=(n+r)/(r-n),c=2*n*r/(r-n);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=o,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=s,a[11]=-1,a[12]=0,a[13]=0,a[14]=c,a[15]=0,a},c.computeOrthographicOffCenter=function(e,t,r,n,a,i,o){var u=1/(t-e),s=1/(n-r),c=1/(i-a),l=-(t+e)*u,f=-(n+r)*s,d=-(i+a)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=d,o[15]=1,o +},c.computePerspectiveOffCenter=function(e,t,r,n,a,i,o){var u=2*a/(t-e),s=2*a/(n-r),c=(t+e)/(t-e),l=(n+r)/(n-r),f=-(i+a)/(i-a),d=-1,h=-2*i*a/(i-a);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=d,o[12]=0,o[13]=0,o[14]=h,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,r,n,a,i){var o=2*a/(t-e),u=2*a/(n-r),s=(t+e)/(t-e),c=(n+r)/(n-r),l=-1,f=-1,d=-2*a;return i[0]=o,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=u,i[6]=0,i[7]=0,i[8]=s,i[9]=c,i[10]=l,i[11]=f,i[12]=0,i[13]=0,i[14]=d,i[15]=0,i},c.computeViewportTransformation=function(e,t,n,a){e=r(e,r.EMPTY_OBJECT);var i=r(e.x,0),o=r(e.y,0),u=r(e.width,0),s=r(e.height,0);t=r(t,0),n=r(n,1);var c=.5*u,l=.5*s,f=.5*(n-t),d=c,h=l,m=f,y=i+c,p=o+l,v=t+f,g=1;return a[0]=d,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=h,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=m,a[11]=0,a[12]=y,a[13]=p,a[14]=v,a[15]=g,a},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,r){var n=4*t,a=e[n],i=e[n+1],o=e[n+2],u=e[n+3];return r.x=a,r.y=i,r.z=o,r.w=u,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var a=4*t;return n[a]=r.x,n[a+1]=r.y,n[a+2]=r.z,n[a+3]=r.w,n},c.setTranslation=function(e,t,r){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=t.x,r[13]=t.y,r[14]=t.z,r[15]=e[15],r},c.getRow=function(e,t,r){var n=e[t],a=e[t+4],i=e[t+8],o=e[t+12];return r.x=n,r.y=a,r.z=i,r.w=o,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+4]=r.y,n[t+8]=r.z,n[t+12]=r.w,n};var h=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],h)),r.y=e.magnitude(e.fromElements(t[4],t[5],t[6],h)),r.z=e.magnitude(e.fromElements(t[8],t[9],t[10],h)),r};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,r){var n=e[0],a=e[1],i=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],d=e[9],h=e[10],m=e[11],y=e[12],p=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],M=t[4],b=t[5],T=t[6],A=t[7],O=t[8],I=t[9],N=t[10],z=t[11],P=t[12],R=t[13],_=t[14],L=t[15],C=n*w+u*x+f*E+y*S,q=a*w+s*x+d*E+p*S,D=i*w+c*x+h*E+v*S,B=o*w+l*x+m*E+g*S,U=n*M+u*b+f*T+y*A,F=a*M+s*b+d*T+p*A,G=i*M+c*b+h*T+v*A,W=o*M+l*b+m*T+g*A,V=n*O+u*I+f*N+y*z,k=a*O+s*I+d*N+p*z,Y=i*O+c*I+h*N+v*z,j=o*O+l*I+m*N+g*z,H=n*P+u*R+f*_+y*L,Z=a*P+s*R+d*_+p*L,X=i*P+c*R+h*_+v*L,Q=o*P+l*R+m*_+g*L;return r[0]=C,r[1]=q,r[2]=D,r[3]=B,r[4]=U,r[5]=F,r[6]=G,r[7]=W,r[8]=V,r[9]=k,r[10]=Y,r[11]=j,r[12]=H,r[13]=Z,r[14]=X,r[15]=Q,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r[9]=e[9]+t[9],r[10]=e[10]+t[10],r[11]=e[11]+t[11],r[12]=e[12]+t[12],r[13]=e[13]+t[13],r[14]=e[14]+t[14],r[15]=e[15]+t[15],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r[9]=e[9]-t[9],r[10]=e[10]-t[10],r[11]=e[11]-t[11],r[12]=e[12]-t[12],r[13]=e[13]-t[13],r[14]=e[14]-t[14],r[15]=e[15]-t[15],r},c.multiplyTransformation=function(e,t,r){var n=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=e[12],h=e[13],m=e[14],y=t[0],p=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],M=t[10],b=t[12],T=t[13],A=t[14],O=n*y+o*p+c*v,I=a*y+u*p+l*v,N=i*y+s*p+f*v,z=n*g+o*w+c*x,P=a*g+u*w+l*x,R=i*g+s*w+f*x,_=n*E+o*S+c*M,L=a*E+u*S+l*M,C=i*E+s*S+f*M,q=n*b+o*T+c*A+d,D=a*b+u*T+l*A+h,B=i*b+s*T+f*A+m;return r[0]=O,r[1]=I,r[2]=N,r[3]=0,r[4]=z,r[5]=P,r[6]=R,r[7]=0,r[8]=_,r[9]=L,r[10]=C,r[11]=0,r[12]=q,r[13]=D,r[14]=B,r[15]=1,r},c.multiplyByMatrix3=function(e,t,r){var n=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=t[0],h=t[1],m=t[2],y=t[3],p=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=n*d+o*h+c*m,S=a*d+u*h+l*m,M=i*d+s*h+f*m,b=n*y+o*p+c*v,T=a*y+u*p+l*v,A=i*y+s*p+f*v,O=n*g+o*w+c*x,I=a*g+u*w+l*x,N=i*g+s*w+f*x;return r[0]=E,r[1]=S,r[2]=M,r[3]=0,r[4]=b,r[5]=T,r[6]=A,r[7]=0,r[8]=O,r[9]=I,r[10]=N,r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r},c.multiplyByTranslation=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=n*e[0]+a*e[4]+i*e[8]+e[12],u=n*e[1]+a*e[5]+i*e[9]+e[13],s=n*e[2]+a*e[6]+i*e[10]+e[14];return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=o,r[13]=u,r[14]=s,r[15]=e[15],r};var y=new e;c.multiplyByUniformScale=function(e,t,r){return y.x=t,y.y=t,y.z=t,c.multiplyByScale(e,y,r)},c.multiplyByScale=function(e,t,r){var n=t.x,a=t.y,i=t.z;return 1===n&&1===a&&1===i?c.clone(e,r):(r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=0,r[4]=a*e[4],r[5]=a*e[5],r[6]=a*e[6],r[7]=0,r[8]=i*e[8],r[9]=i*e[9],r[10]=i*e[10],r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=1,r)},c.multiplyByVector=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=t.w,u=e[0]*n+e[4]*a+e[8]*i+e[12]*o,s=e[1]*n+e[5]*a+e[9]*i+e[13]*o,c=e[2]*n+e[6]*a+e[10]*i+e[14]*o,l=e[3]*n+e[7]*a+e[11]*i+e[15]*o;return r.x=u,r.y=s,r.z=c,r.w=l,r},c.multiplyByPointAsVector=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=e[0]*n+e[4]*a+e[8]*i,u=e[1]*n+e[5]*a+e[9]*i,s=e[2]*n+e[6]*a+e[10]*i;return r.x=o,r.y=u,r.z=s,r},c.multiplyByPoint=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=e[0]*n+e[4]*a+e[8]*i+e[12],u=e[1]*n+e[5]*a+e[9]*i+e[13],s=e[2]*n+e[6]*a+e[10]*i+e[14];return r.x=o,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r[9]=e[9]*t,r[10]=e[10]*t,r[11]=e[11]*t,r[12]=e[12]*t,r[13]=e[13]*t,r[14]=e[14]*t,r[15]=e[15]*t,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var r=e[1],n=e[2],a=e[3],i=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=i,t[10]=e[10],t[11]=e[14],t[12]=a,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r&&Math.abs(e[9]-t[9])<=r&&Math.abs(e[10]-t[10])<=r&&Math.abs(e[11]-t[11])<=r&&Math.abs(e[12]-t[12])<=r&&Math.abs(e[13]-t[13])<=r&&Math.abs(e[14]-t[14])<=r&&Math.abs(e[15]-t[15])<=r},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var p=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,r){if(u.equalsEpsilon(c.getRotation(e,p),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return r[0]=0,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=0,r[11]=0,r[12]=-e[12],r[13]=-e[13],r[14]=-e[14],r[15]=1,r;var n=e[0],a=e[4],i=e[8],l=e[12],f=e[1],d=e[5],h=e[9],m=e[13],y=e[2],x=e[6],E=e[10],S=e[14],M=e[3],b=e[7],T=e[11],A=e[15],O=E*A,I=S*T,N=x*A,z=S*b,P=x*T,R=E*b,_=y*A,L=S*M,C=y*T,q=E*M,D=y*b,B=x*M,U=O*d+z*h+P*m-(I*d+N*h+R*m),F=I*f+_*h+q*m-(O*f+L*h+C*m),G=N*f+L*d+D*m-(z*f+_*d+B*m),W=R*f+C*d+B*h-(P*f+q*d+D*h),V=I*a+N*i+R*l-(O*a+z*i+P*l),k=O*n+L*i+C*l-(I*n+_*i+q*l),Y=z*n+_*a+B*l-(N*n+L*a+D*l),j=P*n+q*a+D*i-(R*n+C*a+B*i);O=i*m,I=l*h,N=a*m,z=l*d,P=a*h,R=i*d,_=n*m,L=l*f,C=n*h,q=i*f,D=n*d,B=a*f;var H=O*b+z*T+P*A-(I*b+N*T+R*A),Z=I*M+_*T+q*A-(O*M+L*T+C*A),X=N*M+L*b+D*A-(z*M+_*b+B*A),Q=R*M+C*b+B*T-(P*M+q*b+D*T),K=N*E+R*S+I*x-(P*S+O*x+z*E),J=C*S+O*y+L*E-(_*E+q*S+I*y),$=_*x+B*S+z*y-(D*S+N*y+L*x),et=D*E+P*y+q*x-(C*x+B*E+R*y),tt=n*U+a*F+i*G+l*W;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,r[0]=U*tt,r[1]=F*tt,r[2]=G*tt,r[3]=W*tt,r[4]=V*tt,r[5]=k*tt,r[6]=Y*tt,r[7]=j*tt,r[8]=H*tt,r[9]=Z*tt,r[10]=X*tt,r[11]=Q*tt,r[12]=K*tt,r[13]=J*tt,r[14]=$*tt,r[15]=et*tt,r},c.inverseTransformation=function(e,t){var r=e[0],n=e[1],a=e[2],i=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],d=e[13],h=e[14],m=-r*f-n*d-a*h,y=-i*f-o*d-u*h,p=-s*f-c*d-l*h;return t[0]=r,t[1]=i,t[2]=s,t[3]=0,t[4]=n,t[5]=o,t[6]=c,t[7]=0,t[8]=a,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=y,t[14]=p,t[15]=1,t},c.IDENTITY=i(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]&&e[9]===t[r+9]&&e[10]===t[r+10]&&e[11]===t[r+11]&&e[12]===t[r+12]&&e[13]===t[r+13]&&e[14]===t[r+14]&&e[15]===t[r+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n){"use strict";var a=function(t,r){this.normal=e.clone(t),this.distance=r};a.fromPointNormal=function(r,n,i){var o=-e.dot(n,r);return t(i)?(e.clone(n,i.normal),i.distance=o,i):new a(n,o)};var i=new e;return a.fromCartesian4=function(r,n){var o=e.fromCartesian4(r,i),u=r.w;return t(n)?(e.clone(o,n.normal),n.distance=u,n):new a(o,u)},a.getPointDistance=function(t,r){return e.dot(t.normal,r)+t.distance},a.ORIGIN_XY_PLANE=n(new a(e.UNIT_Z,0)),a.ORIGIN_YZ_PLANE=n(new a(e.UNIT_X,0)),a.ORIGIN_ZX_PLANE=n(new a(e.UNIT_Y,0)),a}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,r,n,a,i,o,u){"use strict";var s=function(e,r,n,a){this.west=t(e,0),this.south=t(r,0),this.east=t(n,0),this.north=t(a,0)};n(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,r,n){n=t(n,0),r[n++]=e.west,r[n++]=e.south,r[n++]=e.east,r[n]=e.north},s.unpack=function(e,n,a){return n=t(n,0),r(a)||(a=new s),a.west=e[n++],a.south=e[n++],a.east=e[n++],a.north=e[n],a},s.computeWidth=function(e){var t=e.east,r=e.west;return r>t&&(t+=u.TWO_PI),t-r},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,n,a,i,o){return e=u.toRadians(t(e,0)),n=u.toRadians(t(n,0)),a=u.toRadians(t(a,0)),i=u.toRadians(t(i,0)),r(o)?(o.west=e,o.south=n,o.east=a,o.north=i,o):new s(e,n,a,i)},s.fromCartographicArray=function(e,t){for(var n=Number.MAX_VALUE,a=-Number.MAX_VALUE,i=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];n=Math.min(n,l.longitude),a=Math.max(a,l.longitude),i=Math.min(i,l.latitude),o=Math.max(o,l.latitude)}return r(t)?(t.west=n,t.south=i,t.east=a,t.north=o,t):new s(n,i,a,o)},s.clone=function(e,t){return r(e)?r(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return r(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.south,n.height=0,n):new e(t.west,t.south)},s.northwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.north,n.height=0,n):new e(t.west,t.north)},s.northeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.north,n.height=0,n):new e(t.east,t.north)},s.southeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.south,n.height=0,n):new e(t.east,t.south)},s.center=function(t,n){var a=t.east,i=t.west;i>a&&(a+=u.TWO_PI);var o=u.negativePiToPi(.5*(i+a)),s=.5*(t.south+t.north);return r(n)?(n.longitude=o,n.latitude=s,n.height=0,n):new e(o,s)},s.intersection=function(e,t,n){var a=e.east,i=e.west,o=t.east,c=t.west;i>a&&o>0?a+=u.TWO_PI:c>o&&a>0&&(o+=u.TWO_PI),i>a&&0>c?c+=u.TWO_PI:c>o&&0>i&&(i+=u.TWO_PI);var l=u.negativePiToPi(Math.max(i,c)),f=u.negativePiToPi(Math.min(a,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var d=Math.max(e.south,t.south),h=Math.min(e.north,t.north);return d>=h?void 0:r(n)?(n.west=l,n.south=d,n.east=f,n.north=h,n):new s(l,d,f,h)},s.contains=function(e,t){var r=t.longitude,n=t.latitude,a=e.west,i=e.east;return a>i&&(i+=u.TWO_PI,0>r&&(r+=u.TWO_PI)),(r>a||u.equalsEpsilon(r,a,u.EPSILON14))&&(i>r||u.equalsEpsilon(r,i,u.EPSILON14))&&n>=e.south&&n<=e.north};var c=new e;return s.subsample=function(e,n,a,o){n=t(n,i.WGS84),a=t(a,0),r(o)||(o=[]);var l=0,f=e.north,d=e.south,h=e.east,m=e.west,y=c;y.height=a,y.longitude=m,y.latitude=f,o[l]=n.cartographicToCartesian(y,o[l]),l++,y.longitude=h,o[l]=n.cartographicToCartesian(y,o[l]),l++,y.latitude=d,o[l]=n.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=n.cartographicToCartesian(y,o[l]),l++,y.latitude=0>f?f:d>0?d:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(e,y)&&(o[l]=n.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=n.cartographicToCartesian(y,o[l]),l++,y.longitude=h,o[l]=n.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,r,n,a,i,o,u,s,c,l,f,d){"use strict";var h=function(t,n){this.center=e.clone(r(t,e.ZERO)),this.radius=r(n,0)},m=new e,y=new e,p=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,M=new e,b=new e,T=new e;h.fromPoints=function(t,r){if(n(r)||(r=new h),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;for(var a=e.clone(t[0],x),i=e.clone(a,m),o=e.clone(a,y),u=e.clone(a,p),s=e.clone(a,v),c=e.clone(a,g),l=e.clone(a,w),f=t.length,d=1;f>d;d++){e.clone(t[d],a);var A=a.x,O=a.y,I=a.z;A<i.x&&e.clone(a,i),A>s.x&&e.clone(a,s),O<o.y&&e.clone(a,o),O>c.y&&e.clone(a,c),I<u.z&&e.clone(a,u),I>l.z&&e.clone(a,l)}var N=e.magnitudeSquared(e.subtract(s,i,E)),z=e.magnitudeSquared(e.subtract(c,o,E)),P=e.magnitudeSquared(e.subtract(l,u,E)),R=i,_=s,L=N;z>L&&(L=z,R=o,_=c),P>L&&(L=P,R=u,_=l);var C=S;C.x=.5*(R.x+_.x),C.y=.5*(R.y+_.y),C.z=.5*(R.z+_.z);var q=e.magnitudeSquared(e.subtract(_,C,E)),D=Math.sqrt(q),B=M;B.x=i.x,B.y=o.y,B.z=u.z;var U=b;U.x=s.x,U.y=c.y,U.z=l.z;var F=e.multiplyByScalar(e.add(B,U,E),.5,T),G=0;for(d=0;f>d;d++){e.clone(t[d],a);var W=e.magnitude(e.subtract(a,F,E));W>G&&(G=W);var V=e.magnitudeSquared(e.subtract(a,C,E));if(V>q){var k=Math.sqrt(V);D=.5*(D+k),q=D*D;var Y=k-D;C.x=(D*C.x+Y*a.x)/k,C.y=(D*C.y+Y*a.y)/k,C.z=(D*C.z+Y*a.z)/k}}return G>D?(e.clone(C,r.center),r.radius=D):(e.clone(F,r.center),r.radius=G),r};var A=new u,O=new e,I=new e,N=new t,z=new t;h.fromRectangle2D=function(e,t,r){return h.fromRectangleWithHeights2D(e,t,0,0,r)},h.fromRectangleWithHeights2D=function(t,a,i,o,u){if(n(u)||(u=new h),!n(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;a=r(a,A),d.southwest(t,N),N.height=i,d.northeast(t,z),z.height=o;var s=a.project(N,O),c=a.project(z,I),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*f,y.z=s.z+.5*m,u};var P=[];h.fromRectangle3D=function(e,t,a,i){t=r(t,o.WGS84),a=r(a,0);var u;return n(e)&&(u=d.subsample(e,t,a,P)),h.fromPoints(u,i)},h.fromVertices=function(t,a,i,o){if(n(o)||(o=new h),!n(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;a=r(a,e.ZERO),i=r(i,3);var u=x;u.x=t[0]+a.x,u.y=t[1]+a.y,u.z=t[2]+a.z;for(var s=e.clone(u,m),c=e.clone(u,y),l=e.clone(u,p),f=e.clone(u,v),d=e.clone(u,g),A=e.clone(u,w),O=t.length,I=0;O>I;I+=i){var N=t[I]+a.x,z=t[I+1]+a.y,P=t[I+2]+a.z;u.x=N,u.y=z,u.z=P,N<s.x&&e.clone(u,s),N>f.x&&e.clone(u,f),z<c.y&&e.clone(u,c),z>d.y&&e.clone(u,d),P<l.z&&e.clone(u,l),P>A.z&&e.clone(u,A)}var R=e.magnitudeSquared(e.subtract(f,s,E)),_=e.magnitudeSquared(e.subtract(d,c,E)),L=e.magnitudeSquared(e.subtract(A,l,E)),C=s,q=f,D=R;_>D&&(D=_,C=c,q=d),L>D&&(D=L,C=l,q=A);var B=S;B.x=.5*(C.x+q.x),B.y=.5*(C.y+q.y),B.z=.5*(C.z+q.z);var U=e.magnitudeSquared(e.subtract(q,B,E)),F=Math.sqrt(U),G=M;G.x=s.x,G.y=c.y,G.z=l.z;var W=b;W.x=f.x,W.y=d.y,W.z=A.z;var V=e.multiplyByScalar(e.add(G,W,E),.5,T),k=0;for(I=0;O>I;I+=i){u.x=t[I]+a.x,u.y=t[I+1]+a.y,u.z=t[I+2]+a.z;var Y=e.magnitude(e.subtract(u,V,E));Y>k&&(k=Y);var j=e.magnitudeSquared(e.subtract(u,B,E));if(j>U){var H=Math.sqrt(j);F=.5*(F+H),U=F*F;var Z=H-F;B.x=(F*B.x+Z*u.x)/H,B.y=(F*B.y+Z*u.y)/H,B.z=(F*B.z+Z*u.z)/H}}return k>F?(e.clone(B,o.center),o.radius=F):(e.clone(V,o.center),o.radius=k),o},h.fromCornerPoints=function(t,r,a){n(a)||(a=new h);var i=a.center;return e.add(t,r,i),e.multiplyByScalar(i,.5,i),a.radius=e.distance(i,r),a},h.fromEllipsoid=function(t,r){return n(r)||(r=new h),e.clone(e.ZERO,r.center),r.radius=t.maximumRadius,r};var R=new e;h.fromBoundingSpheres=function(t,r){if(n(r)||(r=new h),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;var a=t.length;if(1===a)return h.clone(t[0],r);if(2===a)return h.union(t[0],t[1],r);for(var i=[],o=0;a>o;o++)i.push(t[o].center);r=h.fromPoints(i,r);var u=r.center,s=r.radius;for(o=0;a>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,R)+c.radius)}return r.radius=s,r},h.clone=function(t,r){return n(t)?n(r)?(r.center=e.clone(t.center,r.center),r.radius=t.radius,r):new h(t.center,t.radius):void 0},h.packedLength=4,h.pack=function(e,t,n){n=r(n,0);var a=e.center;t[n++]=a.x,t[n++]=a.y,t[n++]=a.z,t[n]=e.radius},h.unpack=function(e,t,a){t=r(t,0),n(a)||(a=new h);var i=a.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],a.radius=e[t],a};var _=new e,L=new e;h.union=function(t,r,a){n(a)||(a=new h);var i=t.center,o=t.radius,u=r.center,s=r.radius,c=e.subtract(u,i,_),l=e.magnitude(c);if(o>=l+s)return t.clone(a),a;if(s>=l+o)return r.clone(a),a;var f=.5*(o+l+s),d=e.multiplyByScalar(c,(-o+f)/l,L);return e.add(d,i,d),e.clone(d,a.center),a.radius=f,a};var C=new e;h.expand=function(t,r,n){n=h.clone(t,n);var a=e.magnitude(e.subtract(r,n.center,C));return a>n.radius&&(n.radius=a),n},h.intersectPlane=function(t,r){var n=t.center,a=t.radius,i=r.normal,o=e.dot(i,n)+r.distance;return-a>o?s.OUTSIDE:a>o?s.INTERSECTING:s.INSIDE};var q=new f(new e,0);h.intersect=function(e,t){a("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var r=f.fromCartesian4(t,q);return h.intersectPlane(e,r)},h.transform=function(e,t,r){return n(r)||(r=new h),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=l.getMaximumScale(t)*e.radius,r};var D=new e;h.distanceSquaredTo=function(t,r){var n=e.subtract(t.center,r,D);return e.magnitudeSquared(n)-t.radius*t.radius},h.transformWithoutScale=function(e,t,r){return n(r)||(r=new h),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=e.radius,r};var B=new e;h.computePlaneDistances=function(t,r,a,i){n(i)||(i=new c);var o=e.subtract(t.center,r,B),u=e.multiplyByScalar(a,e.dot(a,o),B),s=e.magnitude(u);return i.start=s-t.radius,i.stop=s+t.radius,i};for(var U=new e,F=new e,G=new e,W=new e,V=new e,k=new t,Y=new Array(8),j=0;8>j;++j)Y[j]=new e;var H=new u;return h.projectTo2D=function(t,n,a){n=r(n,H);var i=n.ellipsoid,o=t.center,u=t.radius,s=i.geodeticSurfaceNormal(o,U),c=e.cross(e.UNIT_Z,s,F);e.normalize(c,c);var l=e.cross(s,c,G);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,V),d=e.negate(c,W),m=Y,y=m[0];e.add(s,l,y),e.add(y,c,y),y=m[1],e.add(s,l,y),e.add(y,d,y),y=m[2],e.add(s,f,y),e.add(y,d,y),y=m[3],e.add(s,f,y),e.add(y,c,y),e.negate(s,s),y=m[4],e.add(s,l,y),e.add(y,c,y),y=m[5],e.add(s,l,y),e.add(y,d,y),y=m[6],e.add(s,f,y),e.add(y,d,y),y=m[7],e.add(s,f,y),e.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var g=m[v];e.add(o,g,g);var w=i.cartesianToCartographic(g,k);n.project(w,g)}a=h.fromPoints(m,a),o=a.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,a},h.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&t.radius===r.radius},h.prototype.intersectPlane=function(e){return h.intersectPlane(this,e)},h.prototype.intersect=function(e){return h.intersect(this,e)},h.prototype.equals=function(e){return h.equals(this,e)},h.prototype.clone=function(e){return h.clone(this,e)},h}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r){this.x=e(t,0),this.y=e(r,0)};i.fromElements=function(e,r,n){return t(n)?(n.x=e,n.y=r,n):new i(e,r)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r):new i(e.x,e.y):void 0},i.fromCartesian3=i.clone,i.fromCartesian4=i.clone,i.packedLength=2,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n]=t.y},i.unpack=function(r,n,a){return n=e(n,0),t(a)||(a=new i),a.x=r[n++],a.y=r[n],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y)},i.minimumComponent=function(e){return Math.min(e.x,e.y)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i,c=new i;i.angleBetween=function(e,t){return i.normalize(e,s),i.normalize(t,c),a.acosClamped(i.dot(s,c))};var l=new i;return i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,l);return i.abs(r,r),t=r.x<=r.y?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Y,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&a.equalsEpsilon(e.x,r.x,n,i)&&a.equalsEpsilon(e.y,r.y,n,i)},i.ZERO=n(new i(0,0)),i.UNIT_X=n(new i(1,0)),i.UNIT_Y=n(new i(0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+")"},i}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var r,n={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},a={};return t(a,{element:{get:function(){return a.supportsFullscreen()?document[n.fullscreenElement]:void 0}},changeEventName:{get:function(){return a.supportsFullscreen()?n.fullscreenchange:void 0}},errorEventName:{get:function(){return a.supportsFullscreen()?n.fullscreenerror:void 0}},enabled:{get:function(){return a.supportsFullscreen()?document[n.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return a.supportsFullscreen()?null!==a.element:void 0}}}),a.supportsFullscreen=function(){if(e(r))return r;r=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return n.requestFullscreen="requestFullscreen",n.exitFullscreen="exitFullscreen",n.fullscreenEnabled="fullscreenEnabled",n.fullscreenElement="fullscreenElement",n.fullscreenchange="fullscreenchange",n.fullscreenerror="fullscreenerror",r=!0;for(var a,i=["webkit","moz","o","ms","khtml"],o=0,u=i.length;u>o;++o){var s=i[o];a=s+"RequestFullscreen","function"==typeof t[a]?(n.requestFullscreen=a,r=!0):(a=s+"RequestFullScreen","function"==typeof t[a]&&(n.requestFullscreen=a,r=!0)),a=s+"ExitFullscreen","function"==typeof document[a]?n.exitFullscreen=a:(a=s+"CancelFullScreen","function"==typeof document[a]&&(n.exitFullscreen=a)),a=s+"FullscreenEnabled",e(document[a])?n.fullscreenEnabled=a:(a=s+"FullScreenEnabled",e(document[a])&&(n.fullscreenEnabled=a)),a=s+"FullscreenElement",e(document[a])?n.fullscreenElement=a:(a=s+"FullScreenElement",e(document[a])&&(n.fullscreenElement=a)),a=s+"fullscreenchange",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenChange"),n.fullscreenchange=a),a=s+"fullscreenerror",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenError"),n.fullscreenerror=a)}return r},a.requestFullscreen=function(e){a.supportsFullscreen()&&e[n.requestFullscreen]()},a.exitFullscreen=function(){a.supportsFullscreen()&&document[n.exitFullscreen]()},a}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,r){"use strict";function n(e){for(var t=e.split("."),r=0,n=t.length;n>r;++r)t[r]=parseInt(t[r],10);return t}function a(){if(!t(p)){p=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(p=!0,v=n(e[1]))}return p}function i(){return a()&&v}function o(){if(!t(g)&&(g=!1,!a()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=n(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=n(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,M=n(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,M=n(e[1])))}return S}function f(){return l()&&M}function d(){if(!t(b)){b=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(b=!0,T=n(e[1]))}return b}function h(){return t(A)||(A=/Windows/i.test(navigator.appVersion)),A}function m(){return d()&&T}function y(){return t(O)||(O=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),O}var p,v,g,w,x,E,S,M,b,T,A,O,I={isChrome:a,chromeVersion:i,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:d,firefoxVersion:m,isWindows:h,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return I.supportsFullscreen=function(){return r.supportsFullscreen()},I.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},I.supportsWebWorkers=function(){return"undefined"!=typeof Worker},I}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,r,n,a){"use strict";if(!n.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(e){switch(e){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new r("componentDatatype is not a valid value.")}},i.fromTypedArray=function(e){return e instanceof Int8Array?i.BYTE:e instanceof Uint8Array?i.UNSIGNED_BYTE:e instanceof Int16Array?i.SHORT:e instanceof Uint16Array?i.UNSIGNED_SHORT:e instanceof Float32Array?i.FLOAT:e instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(e){return t(e)&&(e===i.BYTE||e===i.UNSIGNED_BYTE||e===i.SHORT||e===i.UNSIGNED_SHORT||e===i.FLOAT||e===i.DOUBLE)},i.createTypedArray=function(e,t){switch(e){case i.BYTE:return new Int8Array(t);case i.UNSIGNED_BYTE:return new Uint8Array(t);case i.SHORT:return new Int16Array(t);case i.UNSIGNED_SHORT:return new Uint16Array(t);case i.FLOAT:return new Float32Array(t);case i.DOUBLE:return new Float64Array(t);default:throw new r("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(t,n,a,o){switch(a=e(a,0),o=e(o,(n.byteLength-a)/i.getSizeInBytes(t)),t){case i.BYTE:return new Int8Array(n,a,o);case i.UNSIGNED_BYTE:return new Uint8Array(n,a,o);case i.SHORT:return new Int16Array(n,a,o);case i.UNSIGNED_SHORT:return new Uint16Array(n,a,o);case i.FLOAT:return new Float32Array(n,a,o);case i.DOUBLE:return new Float64Array(n,a,o);default:throw new r("componentDatatype is not a valid value.")}},a(i)}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,r,n,a,i,o,u){"use strict";var s=function(e,r,n,a){this.x=t(e,0),this.y=t(r,0),this.z=t(n,0),this.w=t(a,0)},c=new e;s.fromAxisAngle=function(t,n,a){var i=n/2,o=Math.sin(i);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,d=Math.cos(i);return r(a)?(a.x=u,a.y=l,a.z=f,a.w=d,a):new s(u,l,f,d)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var n,a,i,o,c,d=e[u.COLUMN0ROW0],h=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],y=d+h+m;if(y>0)n=Math.sqrt(y+1),c=.5*n,n=.5/n,a=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*n,i=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*n,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*n;else{var p=l,v=0;h>d&&(v=1),m>d&&m>h&&(v=2);var g=p[v],w=p[g];n=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=f;x[v]=.5*n,n=.5/n,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*n,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*n,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*n,a=-x[0],i=-x[1],o=-x[2]}return r(t)?(t.x=a,t.y=i,t.z=o,t.w=c,t):new s(a,i,o,c)};var d=new s;s.fromHeadingPitchRoll=function(t,r,n,a){var i=s.fromAxisAngle(e.UNIT_X,n,d),o=s.fromAxisAngle(e.UNIT_Y,-r,a);a=s.multiply(o,i,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,d);return s.multiply(u,a,a)};var h=new e,m=new e,y=new s,p=new s,v=new s; +s.packedLength=4,s.pack=function(e,r,n){n=t(n,0),r[n++]=e.x,r[n++]=e.y,r[n++]=e.z,r[n]=e.w},s.unpack=function(e,n,a){return n=t(n,0),r(a)||(a=new s),a.x=e[n],a.y=e[n+1],a.z=e[n+2],a.w=e[n+3],a},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,r,n){s.unpack(e,4*r,v),s.conjugate(v,v);for(var a=0,i=r-t+1;i>a;a++){var o=3*a;s.unpack(e,4*(t+a),y),s.multiply(y,v,y),y.w<0&&s.negate(y,y),s.computeAxis(y,h);var u=s.computeAngle(y);n[o]=h.x*u,n[o+1]=h.y*u,n[o+2]=h.z*u}},s.unpackInterpolationResult=function(t,n,a,i,o){r(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(n,4*i,p),0===u?s.clone(s.IDENTITY,y):s.fromAxisAngle(m,u,y),s.multiply(y,p,o)},s.clone=function(e,t){return r(e)?r(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var r=1/s.magnitude(e),n=e.x*r,a=e.y*r,i=e.z*r,o=e.w*r;return t.x=n,t.y=a,t.z=i,t.w=o,t},s.inverse=function(e,t){var r=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/r,t)},s.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},s.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,r){var n=e.x,a=e.y,i=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+n*l+a*c-i*s,d=o*s-n*c+a*l+i*u,h=o*c+n*s-a*u+i*l,m=o*l-n*u-a*s-i*c;return r.x=f,r.y=d,r.z=h,r.w=m,r},s.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},s.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},s.computeAxis=function(e,t){var r=e.w;if(Math.abs(r-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var n=1/Math.sqrt(1-r*r);return t.x=e.x*n,t.y=e.y*n,t.z=e.z*n,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,r,n){return g=s.multiplyByScalar(t,r,g),n=s.multiplyByScalar(e,1-r,n),s.add(g,n,n)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,r,n){var a=s.dot(e,t),i=t;if(0>a&&(a=-a,i=w=s.negate(t,w)),1-a<o.EPSILON6)return s.lerp(e,i,r,n);var u=Math.acos(a);return x=s.multiplyByScalar(e,Math.sin((1-r)*u),x),E=s.multiplyByScalar(i,Math.sin(r*u),E),n=s.add(x,E,n),s.multiplyByScalar(n,1/Math.sin(u),n)},s.log=function(t,r){var n=o.acosClamped(t.w),a=0;return 0!==n&&(a=n/Math.sin(n)),e.multiplyByScalar(t,a,r)},s.exp=function(t,r){var n=e.magnitude(t),a=0;return 0!==n&&(a=Math.sin(n)/n),r.x=t.x*a,r.y=t.y*a,r.z=t.z*a,r.w=Math.cos(n),r};var S=new e,M=new e,b=new s,T=new s;s.computeInnerQuadrangle=function(t,r,n,a){var i=s.conjugate(r,b);s.multiply(i,n,T);var o=s.log(T,S);s.multiply(i,t,T);var u=s.log(T,M);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,b),s.multiply(r,b,a)},s.squad=function(e,t,r,n,a,i){var o=s.slerp(e,t,a,b),u=s.slerp(r,n,a,T);return s.slerp(o,u,2*a*(1-a),i)};for(var A=new s,O=1.9011074535173003,I=a.supportsTypedArrays()?new Float32Array(8):[],N=a.supportsTypedArrays()?new Float32Array(8):[],z=a.supportsTypedArrays()?new Float32Array(8):[],P=a.supportsTypedArrays()?new Float32Array(8):[],R=0;7>R;++R){var _=R+1,L=2*_+1;I[R]=1/(_*L),N[R]=_/L}return I[7]=O/136,N[7]=8*O/17,s.fastSlerp=function(e,t,r,n){var a,i=s.dot(e,t);i>=0?a=1:(a=-1,i=-i);for(var o=i-1,u=1-r,c=r*r,l=u*u,f=7;f>=0;--f)z[f]=(I[f]*c-N[f])*o,P[f]=(I[f]*l-N[f])*o;var d=a*r*(1+z[0]*(1+z[1]*(1+z[2]*(1+z[3]*(1+z[4]*(1+z[5]*(1+z[6]*(1+z[7])))))))),h=u*(1+P[0]*(1+P[1]*(1+P[2]*(1+P[3]*(1+P[4]*(1+P[5]*(1+P[6]*(1+P[7])))))))),m=s.multiplyByScalar(e,h,A);return s.multiplyByScalar(t,d,n),s.add(m,n,n)},s.fastSquad=function(e,t,r,n,a,i){var o=s.fastSlerp(e,t,a,b),u=s.fastSlerp(r,n,a,T);return s.fastSlerp(o,u,2*a*(1-a),i)},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n},s.ZERO=i(new s(0,0,0,0)),s.IDENTITY=i(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/EllipseGeometryLibrary",["./Cartesian3","./Math","./Matrix3","./Quaternion"],function(e,t,r,n){"use strict";function a(t,a,i,l,f,d,h,m,y,p){var v=t+a;e.multiplyByScalar(l,Math.cos(v),o),e.multiplyByScalar(i,Math.sin(v),u),e.add(o,u,o);var g=Math.cos(t);g*=g;var w=Math.sin(t);w*=w;var x=d/Math.sqrt(h*g+f*w),E=x/m;return n.fromAxisAngle(o,E,s),r.fromQuaternion(s,c),r.multiplyByVector(c,y,p),e.normalize(p,p),e.multiplyByScalar(p,m,p),p}var i={},o=new e,u=new e,s=new n,c=new r,l=new e,f=new e,d=new e,h=new e;i.raisePositionsToHeight=function(t,r,n){for(var a=r.ellipsoid,i=r.height,o=r.extrudedHeight,u=n?2*(t.length/3):t.length/3,s=new Float64Array(3*u),c=t.length,m=n?c:0,y=0;c>y;y+=3){var p=y+1,v=y+2,g=e.fromArray(t,y,l);a.scaleToGeodeticSurface(g,g);var w=e.clone(g,f),x=a.geodeticSurfaceNormal(g,h),E=e.multiplyByScalar(x,i,d);e.add(g,E,g),n&&(e.multiplyByScalar(x,o,E),e.add(w,E,w),s[y+m]=w.x,s[p+m]=w.y,s[v+m]=w.z),s[y]=g.x,s[p]=g.y,s[v]=g.z}return s};var m=new e,y=new e,p=new e;return i.computeEllipsePositions=function(r,n,i){var o=r.semiMinorAxis,u=r.semiMajorAxis,s=r.rotation,c=r.center,h=8*r.granularity,v=o*o,g=u*u,w=u*o,x=e.magnitude(c),E=e.normalize(c,m),S=e.cross(e.UNIT_Z,c,y);S=e.normalize(S,S);var M=e.cross(E,S,p),b=1+Math.ceil(t.PI_OVER_TWO/h),T=t.PI_OVER_TWO/(b-1),A=t.PI_OVER_TWO-b*T;0>A&&(b-=Math.ceil(Math.abs(A)/T));var O,I,N,z,P,R=2*b*(b+1),_=n?new Array(3*R):void 0,L=0,C=l,q=f,D=3*(2*b+2*(b-1)),B=D-1,U=0,F=i?new Array(D):void 0;for(A=t.PI_OVER_TWO,O=0;b>O;++O){if(C=a(A,s,M,S,v,w,g,x,E,C),q=a(Math.PI-A,s,M,S,v,w,g,x,E,q),n){for(_[L++]=C.x,_[L++]=C.y,_[L++]=C.z,N=2*O+2,I=1;N-1>I;++I)z=I/(N-1),P=e.lerp(C,q,z,d),_[L++]=P.x,_[L++]=P.y,_[L++]=P.z;_[L++]=q.x,_[L++]=q.y,_[L++]=q.z}i&&(F[B--]=C.z,F[B--]=C.y,F[B--]=C.x,0!==O&&(F[U++]=q.x,F[U++]=q.y,F[U++]=q.z)),A=t.PI_OVER_TWO-(O+1)*T}for(O=b;O>0;--O){if(A=t.PI_OVER_TWO-(O-1)*T,C=a(-A,s,M,S,v,w,g,x,E,C),q=a(A+Math.PI,s,M,S,v,w,g,x,E,q),n){for(_[L++]=C.x,_[L++]=C.y,_[L++]=C.z,N=2*(O-1)+2,I=1;N-1>I;++I)z=I/(N-1),P=e.lerp(C,q,z,d),_[L++]=P.x,_[L++]=P.y,_[L++]=P.z;_[L++]=q.x,_[L++]=q.y,_[L++]=q.z}i&&(F[B--]=C.z,F[B--]=C.y,F[B--]=C.x,1!==O&&(F[U++]=q.x,F[U++]=q.y,F[U++]=q.z))}var G={};return n&&(G.positions=_,G.numPts=b),i&&(G.outerPositions=F),G},i}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,r,n,a){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,a.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,n.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(e){var n=-1;for(var a in e.attributes)if(e.attributes.hasOwnProperty(a)&&t(e.attributes[a])&&t(e.attributes[a].values)){var i=e.attributes[a],o=i.values.length/i.componentsPerAttribute;if(n!==o&&-1!==n)throw new r("All attribute lists must have the same number of attributes.");n=o}return n},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/GeometryInstance",["./defaultValue","./defined","./DeveloperError","./Matrix4"],function(e,t,r,n){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.geometry=t.geometry,this.modelMatrix=n.clone(e(t.modelMatrix,n.IDENTITY)),this.id=t.id,this.pickPrimitive=t.pickPrimitive,this.attributes=e(t.attributes,{}),this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0};return a}),define("Core/AttributeCompression",["./Cartesian2","./Cartesian3","./defined","./DeveloperError","./Math"],function(e,t,r,n,a){"use strict";var i={};i.octEncode=function(e,t){if(t.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),t.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){var r=t.x,n=t.y;t.x=(1-Math.abs(n))*a.signNotZero(r),t.y=(1-Math.abs(r))*a.signNotZero(n)}return t.x=a.toSNorm(t.x),t.y=a.toSNorm(t.y),t},i.octDecode=function(e,r,n){if(n.x=a.fromSNorm(e),n.y=a.fromSNorm(r),n.z=1-(Math.abs(n.x)+Math.abs(n.y)),n.z<0){var i=n.x;n.x=(1-Math.abs(n.y))*a.signNotZero(i),n.y=(1-Math.abs(i))*a.signNotZero(n.y)}return t.normalize(n,n)},i.octPackFloat=function(e){return 256*e.x+e.y};var o=new e;return i.octEncodeFloat=function(e){return i.octEncode(e,o),i.octPackFloat(o)},i.octDecodeFloat=function(e,t){var r=e/256,n=Math.floor(r),a=256*(r-n);return i.octDecode(n,a,t)},i.octPack=function(e,t,r,n){var a=i.octEncodeFloat(e),u=i.octEncodeFloat(t),s=i.octEncode(r,o);return n.x=65536*s.x+a,n.y=65536*s.y+u,n},i.octUnpack=function(e,t,r,n){var a=e.x/65536,o=Math.floor(a),u=65536*(a-o);a=e.y/65536;var s=Math.floor(a),c=65536*(a-s);i.octDecodeFloat(u,t),i.octDecodeFloat(c,r),i.octDecode(o,s,n)},i.compressTextureCoordinates=function(e){var t=1===e.x?4095:0|4096*e.x,r=1===e.y?4095:0|4096*e.y;return 4096*t+r},i.decompressTextureCoordinates=function(e,t){var r=e/4096;return t.x=Math.floor(r)/4096,t.y=r-Math.floor(r),t},i}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=new t,a=new t,i=new t,o=function(o,u,s,c,l){r(l)||(l=new t);var f,d,h,m,y,p,v,g;r(u.z)?(f=t.subtract(s,u,n),d=t.subtract(c,u,a),h=t.subtract(o,u,i),m=t.dot(f,f),y=t.dot(f,d),p=t.dot(f,h),v=t.dot(d,d),g=t.dot(d,h)):(f=e.subtract(s,u,n),d=e.subtract(c,u,a),h=e.subtract(o,u,i),m=e.dot(f,f),y=e.dot(f,d),p=e.dot(f,h),v=e.dot(d,d),g=e.dot(d,h));var w=1/(m*v-y*y);return l.y=(v*p-y*g)*w,l.z=(m*g-y*p)*w,l.x=1-l.y-l.z,l};return o}),define("Core/EncodedCartesian3",["./Cartesian3","./defined","./DeveloperError"],function(e,t){"use strict";var r=function(){this.high=e.clone(e.ZERO),this.low=e.clone(e.ZERO)};r.encode=function(e,r){t(r)||(r={high:0,low:0});var n;return e>=0?(n=65536*Math.floor(e/65536),r.high=n,r.low=e-n):(n=65536*Math.floor(-e/65536),r.high=-n,r.low=e+n),r};var n={high:0,low:0};r.fromCartesian=function(e,a){t(a)||(a=new r);var i=a.high,o=a.low;return r.encode(e.x,n),i.x=n.high,o.x=n.low,r.encode(e.y,n),i.y=n.high,o.y=n.low,r.encode(e.z,n),i.z=n.high,o.z=n.low,a};var a=new r;return r.writeElements=function(e,t,n){r.fromCartesian(e,a);var i=a.high,o=a.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z},r}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n){"use strict";var a={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return a.getSizeInBytes=function(e){switch(e){case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},a.validate=function(t){return e(t)&&(t===a.UNSIGNED_BYTE||t===a.UNSIGNED_SHORT||t===a.UNSIGNED_INT)},a.createTypedArray=function(e,t){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},a.createTypedArrayFromArrayBuffer=function(e,t,r,a){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,r,a):new Uint16Array(t,r,a)},r(a)}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function r(e,r,n){var a=e+r;return t.sign(e)!==t.sign(r)&&Math.abs(a/Math.max(Math.abs(e),Math.abs(r)))<n?0:a}var n={};return n.computeDiscriminant=function(e,t,r){var n=t*t-4*e*r;return n},n.computeRealRoots=function(e,n,a){var i;if(0===e)return 0===n?[]:[-a/n];if(0===n){if(0===a)return[0,0];var o=Math.abs(a),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(i=-a/e,0>i)return[];var s=Math.sqrt(i);return[-s,s]}if(0===a)return i=-n/e,0>i?[i,0]:[0,i];var c=n*n,l=4*e*a,f=r(c,-l,t.EPSILON14);if(0>f)return[];var d=-.5*r(n,t.sign(n)*Math.sqrt(f),t.EPSILON14);return n>0?[d/e,a/d]:[a/d,d/e]},n}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function r(e,t,r,n){var a,i,o=e,u=t/3,s=r/3,c=n,l=o*s,f=u*c,d=u*u,h=s*s,m=o*s-d,y=o*c-u*s,p=u*c-h,v=4*m*p-y*y;if(0>v){var g,w,x;d*f>=l*h?(g=o,w=m,x=-2*u*m+o*y):(g=c,w=p,x=-c*y+2*s*p);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);i=-x+S;var M=i/2,b=0>M?-Math.pow(-M,1/3):Math.pow(M,1/3),T=i===S?-b:-w/b;return a=0>=w?b+T:-x/(b*b+T*T+w),d*f>=l*h?[(a-u)/o]:[-c/(a+s)]}var A=m,O=-2*u*m+o*y,I=p,N=-c*y+2*s*p,z=Math.sqrt(v),P=Math.sqrt(3)/2,R=Math.abs(Math.atan2(o*z,-O)/3);a=2*Math.sqrt(-A);var _=Math.cos(R);i=a*_;var L=a*(-_/2-P*Math.sin(R)),C=i+L>2*u?i-u:L-u,q=o,D=C/q;R=Math.abs(Math.atan2(c*z,-N)/3),a=2*Math.sqrt(-I),_=Math.cos(R),i=a*_,L=a*(-_/2-P*Math.sin(R));var B=-c,U=2*s>i+L?i+s:L+s,F=B/U,G=q*U,W=-C*U-q*B,V=C*B,k=(s*W-u*V)/(-u*W+s*G);return k>=D?F>=D?F>=k?[D,k,F]:[D,F,k]:[F,D,k]:F>=D?[k,D,F]:F>=k?[k,F,D]:[F,k,D]}var n={};return n.computeDiscriminant=function(e,t,r,n){var a=e*e,i=t*t,o=r*r,u=n*n,s=18*e*t*r*n+i*o-27*a*u-4*(e*o*r+i*t*n);return s},n.computeRealRoots=function(e,n,a,i){var o,u;if(0===e)return t.computeRealRoots(n,a,i);if(0===n){if(0===a){if(0===i)return[0,0,0];u=-i/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===i?(o=t.computeRealRoots(e,0,a),0===o.Length?[0]:[o[0],0,o[1]]):r(e,0,a,i)}return 0===a?0===i?(u=-n/e,0>u?[u,0,0]:[0,0,u]):r(e,n,0,i):0===i?(o=t.computeRealRoots(e,n,a),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):r(e,n,a,i)},n}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,r,n){"use strict";function a(t,a,i,o){var u=t*t,s=a-3*u/8,c=i-a*t/2+u*t/8,l=o-i*t/4+a*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var d=-t/4,h=f[f.length-1];if(Math.abs(h)<r.EPSILON14){var m=n.computeRealRoots(1,s,l);if(2===m.length){var y,p=m[0],v=m[1];if(p>=0&&v>=0){var g=Math.sqrt(p),w=Math.sqrt(v);return[d-w,d-g,d+g,d+w]}if(p>=0&&0>v)return y=Math.sqrt(p),[d-y,d+y];if(0>p&&v>=0)return y=Math.sqrt(v),[d-y,d+y]}return[]}if(h>0){var x=Math.sqrt(h),E=(s+h-c/x)/2,S=(s+h+c/x)/2,M=n.computeRealRoots(1,x,E),b=n.computeRealRoots(1,-x,S);return 0!==M.length?(M[0]+=d,M[1]+=d,0!==b.length?(b[0]+=d,b[1]+=d,M[1]<=b[0]?[M[0],M[1],b[0],b[1]]:b[1]<=M[0]?[b[0],b[1],M[0],M[1]]:M[0]>=b[0]&&M[1]<=b[1]?[b[0],M[0],M[1],b[1]]:b[0]>=M[0]&&b[1]<=M[1]?[M[0],b[0],b[1],M[1]]:M[0]>b[0]&&M[0]<b[1]?[b[0],M[0],b[1],M[1]]:[M[0],b[0],M[1],b[1]]):M):0!==b.length?(b[0]+=d,b[1]+=d,b):[]}}return[]}function i(t,a,i,o){var u=i*i,s=a*a,c=t*t,l=-2*a,f=i*t+s-4*o,d=c*o-i*a*t+u,h=e.computeRealRoots(1,l,f,d);if(h.length>0){var m,y,p=h[0],v=a-p,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),M=c-4*p,b=c+4*Math.abs(p);if(0>p||M*S>E*b){var T=Math.sqrt(M);m=T/2,y=0===T?0:(t*x-i)/T}else{var A=Math.sqrt(E);m=0===A?0:(t*x-i)/A,y=A/2}var O,I;0===w&&0===m?(O=0,I=0):r.sign(w)===r.sign(m)?(O=w+m,I=p/O):(I=w-m,O=p/I);var N,z;0===x&&0===y?(N=0,z=0):r.sign(x)===r.sign(y)?(N=x+y,z=o/N):(z=x-y,N=o/z);var P=n.computeRealRoots(1,O,N),R=n.computeRealRoots(1,I,z);if(0!==P.length)return 0!==R.length?P[1]<=R[0]?[P[0],P[1],R[0],R[1]]:R[1]<=P[0]?[R[0],R[1],P[0],P[1]]:P[0]>=R[0]&&P[1]<=R[1]?[R[0],P[0],P[1],R[1]]:R[0]>=P[0]&&R[1]<=P[1]?[P[0],R[0],R[1],P[1]]:P[0]>R[0]&&P[0]<R[1]?[R[0],P[0],R[1],P[1]]:[P[0],R[0],P[1],R[1]]:P;if(0!==R.length)return R}return[]}var o={};return o.computeDiscriminant=function(e,t,r,n,a){var i=e*e,o=i*e,u=t*t,s=u*t,c=r*r,l=c*r,f=n*n,d=f*n,h=a*a,m=h*a,y=u*c*f-4*s*d-4*e*l*f+18*e*t*r*d-27*i*f*f+256*o*m+a*(18*s*r*n-4*u*l+16*e*c*c-80*e*t*c*n-6*e*u*f+144*i*r*f)+h*(144*e*u*r-27*u*u-128*i*c-192*i*t*n);return y},o.computeRealRoots=function(t,n,o,u,s){if(Math.abs(t)<r.EPSILON15)return e.computeRealRoots(n,o,u,s);var c=n/t,l=o/t,f=u/t,d=s/t,h=0>c?1:0;switch(h+=0>l?h+1:h,h+=0>f?h+1:h,h+=0>d?h+1:h){case 0:return a(c,l,f,d);case 1:return i(c,l,f,d);case 2:return i(c,l,f,d);case 3:return a(c,l,f,d);case 4:return a(c,l,f,d);case 5:return i(c,l,f,d);case 6:return a(c,l,f,d);case 7:return a(c,l,f,d);case 8:return i(c,l,f,d);case 9:return a(c,l,f,d);case 10:return a(c,l,f,d);case 11:return i(c,l,f,d);case 12:return a(c,l,f,d);case 13:return a(c,l,f,d);case 14:return a(c,l,f,d);case 15:return a(c,l,f,d);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=function(r,n){n=e.clone(t(n,e.ZERO)),e.equals(n,e.ZERO)||e.normalize(n,n),this.origin=e.clone(t(r,e.ZERO)),this.direction=n};return n.getPoint=function(t,n,a){return r(a)||(a=new e),a=e.multiplyByScalar(t.direction,n,a),e.add(t.origin,a,a)},n}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,r,n,a,i,o,u,s,c){"use strict";function l(t,n,a,o,u){u=r(u,!1);var s,c,l,f,d,h=t.origin,m=t.direction,y=e.subtract(a,n,p),E=e.subtract(o,n,v),S=e.cross(m,E,g),M=e.dot(y,S);if(u){if(M<i.EPSILON6)return void 0;if(s=e.subtract(h,n,w),l=e.dot(s,S),0>l||l>M)return void 0;if(c=e.cross(s,y,x),f=e.dot(m,c),0>f||l+f>M)return void 0;d=e.dot(E,c)/M}else{if(Math.abs(M)<i.EPSILON6)return void 0;var b=1/M;if(s=e.subtract(h,n,w),l=e.dot(s,S)*b,0>l||l>1)return void 0;if(c=e.cross(s,y,x),f=e.dot(m,c)*b,0>f||l+f>1)return void 0;d=e.dot(E,c)*b}return d}function f(e,t,r,n){var a=t*t-4*e*r;if(0>a)return void 0;if(a>0){var i=1/(2*e),o=Math.sqrt(a),u=(-t+o)*i,s=(-t-o)*i;return s>u?(n.root0=u,n.root1=s):(n.root0=s,n.root1=u),n}var c=-t/(2*e);return 0===c?void 0:(n.root0=n.root1=c,n)}function d(t,r,a){n(a)||(a={});var i=t.origin,o=t.direction,u=r.center,s=r.radius*r.radius,c=e.subtract(i,u,g),l=e.dot(o,o),d=2*e.dot(o,c),h=e.magnitudeSquared(c)-s,m=f(l,d,h,S);return n(m)?(a.start=m.root0,a.stop=m.root1,a):void 0}function h(e,t,r){var n=e+t;return i.sign(e)!==i.sign(t)&&Math.abs(n/Math.max(Math.abs(e),Math.abs(t)))<r?0:n}function m(t,r,n,a,c){var l,f=a*a,d=c*c,m=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*d,y=c*(a*h(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],i.EPSILON15)+r.y),p=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*d+a*r.x+n,v=d*h(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],i.EPSILON15),g=c*(a*h(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+r.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(m,y,p),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(a,c*x,c*-E)),w.push(new e(a,c*x,c*E)),2===l.length){var S=l[1],M=Math.sqrt(Math.max(1-S*S,0));w.push(new e(a,c*S,c*-M)),w.push(new e(a,c*S,c*M))}return w}var b=g*g,T=v*v,A=m*m,O=g*v,I=A+T,N=2*(y*m+O),z=2*p*m+y*y-T+b,P=2*(p*y-O),R=p*p-b;if(0===I&&0===N&&0===z&&0===P)return w;l=s.computeRealRoots(I,N,z,P,R);var _=l.length;if(0===_)return w;for(var L=0;_>L;++L){var C,q=l[L],D=q*q,B=Math.max(1-D,0),U=Math.sqrt(B);C=i.sign(m)===i.sign(p)?h(m*D+p,y*q,i.EPSILON12):i.sign(p)===i.sign(y*q)?h(m*D,y*q+p,i.EPSILON12):h(m*D+y*q,p,i.EPSILON12);var F=h(v*q,g,i.EPSILON15),G=C*F;0>G?w.push(new e(a,c*q,c*U)):G>0?w.push(new e(a,c*q,c*-U)):0!==U?(w.push(new e(a,c*q,c*-U)),w.push(new e(a,c*q,c*U)),++L):w.push(new e(a,c*q,c*U))}return w}var y={};y.rayPlane=function(t,r,a){n(a)||(a=new e);var o=t.origin,u=t.direction,s=r.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON15)return void 0;var l=(-r.distance-e.dot(s,o))/c;return 0>l?void 0:(a=e.multiplyByScalar(u,l,a),e.add(o,a,a))};var p=new e,v=new e,g=new e,w=new e,x=new e;y.rayTriangle=function(t,r,a,i,o,u){var s=l(t,r,a,i,o);return!n(s)||0>s?void 0:(n(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;y.lineSegmentTriangle=function(t,r,a,i,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(r,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,a,i,o,u);return!n(f)||0>f||f>e.distance(t,r)?void 0:(n(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};y.raySphere=function(e,t,r){return r=d(e,t,r),!n(r)||r.stop<0?void 0:(r.start=Math.max(r.start,0),r)};var M=new c;y.lineSegmentSphere=function(t,r,a,i){var o=M;e.clone(t,o.origin);var u=e.subtract(r,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),i=d(o,a,i),!n(i)||i.stop<0||i.start>s?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i)};var b=new e,T=new e;y.rayEllipsoid=function(t,r){var n,a,i,o,u,s=r.oneOverRadii,c=e.multiplyComponents(s,t.origin,b),l=e.multiplyComponents(s,t.direction,T),f=e.magnitudeSquared(c),d=e.dot(c,l);if(f>1){if(d>=0)return void 0;var h=d*d;if(n=f-1,a=e.magnitudeSquared(l),i=a*n,i>h)return void 0;if(h>i){o=d*d-i,u=-d+Math.sqrt(o);var m=u/a,y=n/u;return y>m?{start:m,stop:y}:{start:y,stop:m}}var p=Math.sqrt(n/a);return{start:p,stop:p}}return 1>f?(n=f-1,a=e.magnitudeSquared(l),i=a*n,o=d*d-i,u=-d+Math.sqrt(o),{start:0,stop:u/a}):0>d?(a=e.magnitudeSquared(l),{start:0,stop:-d/a}):void 0};var A=new e,O=new e,I=new e,N=new e,z=new e,P=new o,R=new o,_=new o,L=new o,C=new o,q=new o,D=new o,B=new e,U=new e,F=new t;y.grazingAltitudeLocation=function(t,r){var a=t.origin,u=t.direction,s=r.geodeticSurfaceNormal(a,A);if(e.dot(u,s)>=0)return a;var c=n(this.rayEllipsoid(t,r)),l=r.transformPositionToScaledSpace(u,A),f=e.normalize(l,l),d=e.mostOrthogonalAxis(l,N),h=e.normalize(e.cross(d,f,O),O),y=e.normalize(e.cross(f,h,I),I),p=P;p[0]=f.x,p[1]=f.y,p[2]=f.z,p[3]=h.x,p[4]=h.y,p[5]=h.z,p[6]=y.x,p[7]=y.y,p[8]=y.z;var v=o.transpose(p,R),g=o.fromScale(r.radii,_),w=o.fromScale(r.oneOverRadii,L),x=C;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,M=o.multiply(o.multiply(v,w,q),x,q),b=o.multiply(o.multiply(M,g,D),p,D),T=o.multiplyByVector(M,a,z),G=m(b,e.negate(T,A),0,0,1),W=G.length;if(W>0){for(var V=e.clone(e.ZERO,U),k=Number.NEGATIVE_INFINITY,Y=0;W>Y;++Y){E=o.multiplyByVector(g,o.multiplyByVector(p,G[Y],B),B);var j=e.normalize(e.subtract(E,a,N),N),H=e.dot(j,u);H>k&&(k=H,V=e.clone(E,V))}var Z=r.cartesianToCartographic(V,F);return k=i.clamp(k,0,1),S=e.magnitude(e.subtract(V,a,N))*Math.sqrt(1-k*k),S=c?-S:S,Z.height=S,r.cartographicToCartesian(Z,new e)}return void 0};var G=new e;return y.lineSegmentPlane=function(t,r,a,o){n(o)||(o=new e);var u=e.subtract(r,t,G),s=a.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON6)return void 0;var l=e.dot(s,t),f=-(a.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},y.trianglePlaneIntersection=function(t,r,n,a){var i=a.normal,o=a.distance,u=e.dot(i,t)+o<0,s=e.dot(i,r)+o<0,c=e.dot(i,n)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,d;if((1===l||2===l)&&(f=new e,d=new e),1===l){if(u)return y.lineSegmentPlane(t,r,a,f),y.lineSegmentPlane(t,n,a,d),{positions:[t,r,n,f,d],indices:[0,3,4,1,2,4,1,4,3]};if(s)return y.lineSegmentPlane(r,n,a,f),y.lineSegmentPlane(r,t,a,d),{positions:[t,r,n,f,d],indices:[1,3,4,2,0,4,2,4,3]};if(c)return y.lineSegmentPlane(n,t,a,f),y.lineSegmentPlane(n,r,a,d),{positions:[t,r,n,f,d],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return y.lineSegmentPlane(r,t,a,f),y.lineSegmentPlane(n,t,a,d),{positions:[t,r,n,f,d],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return y.lineSegmentPlane(n,r,a,f),y.lineSegmentPlane(t,r,a,d),{positions:[t,r,n,f,d],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return y.lineSegmentPlane(t,n,a,f),y.lineSegmentPlane(r,n,a,d),{positions:[t,r,n,f,d],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},y}),define("Core/Tipsify",["./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};return r.calculateACMR=function(r){r=e(r,e.EMPTY_OBJECT);var n=r.indices,a=r.maximumIndex,i=e(r.cacheSize,24),o=n.length;if(!t(a)){a=0;for(var u=0,s=n[u];o>u;)s>a&&(a=s),++u,s=n[u]}for(var c=[],l=0;a+1>l;l++)c[l]=0;for(var f=i+1,d=0;o>d;++d)f-c[n[d]]>i&&(c[n[d]]=f,++f);return(f-i+1)/(o/3)},r.tipsify=function(r){function n(e,t,r,n){for(;t.length>=1;){var a=t[t.length-1];if(t.splice(t.length-1,1),e[a].numLiveTriangles>0)return a}for(;n>i;){if(e[i].numLiveTriangles>0)return++i,i-1;++i}return-1}function a(e,t,r,a,i,o,u){for(var s,c=-1,l=-1,f=0;f<r.length;){var d=r[f];a[d].numLiveTriangles&&(s=0,i-a[d].timeStamp+2*a[d].numLiveTriangles<=t&&(s=i-a[d].timeStamp),(s>l||-1===l)&&(l=s,c=d)),++f}return-1===c?n(a,o,e,u):c}r=e(r,e.EMPTY_OBJECT);var i,o=r.indices,u=r.maximumIndex,s=e(r.cacheSize,24),c=o.length,l=0,f=0,d=o[f],h=c;if(t(u))l=u+1;else{for(;h>f;)d>l&&(l=d),++f,d=o[f];if(-1===l)return 0;++l}for(var m=[],y=0;l>y;y++)m[y]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};f=0;for(var p=0;h>f;)m[o[f]].vertexTriangles.push(p),++m[o[f]].numLiveTriangles,m[o[f+1]].vertexTriangles.push(p),++m[o[f+1]].numLiveTriangles,m[o[f+2]].vertexTriangles.push(p),++m[o[f+2]].numLiveTriangles,++p,f+=3;var v=0,g=s+1;i=1;var w,x,E=[],S=[],M=0,b=[],T=c/3,A=[];for(y=0;T>y;y++)A[y]=!1;for(var O,I;-1!==v;){E=[],x=m[v],I=x.vertexTriangles.length;for(var N=0;I>N;++N)if(p=x.vertexTriangles[N],!A[p]){A[p]=!0,f=p+p+p;for(var z=0;3>z;++z)O=o[f],E.push(O),S.push(O),b[M]=O,++M,w=m[O],--w.numLiveTriangles,g-w.timeStamp>s&&(w.timeStamp=g,++g),++f}v=a(o,s,E,m,g,S,l)}return b},r}),define("Core/GeometryPipeline",["./AttributeCompression","./barycentricCoordinates","./BoundingSphere","./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EncodedCartesian3","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryInstance","./GeometryType","./IndexDatatype","./Intersect","./IntersectionTests","./Math","./Matrix3","./Matrix4","./Plane","./PrimitiveType","./Tipsify"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,m,y,p,v,g,w,x,E,S,M,b,T){"use strict";function A(e,t,r,n,a){e[t++]=r,e[t++]=n,e[t++]=n,e[t++]=a,e[t++]=a,e[t]=r}function O(e){for(var t=e.length,r=6*(t/3),n=v.createTypedArray(t,r),a=0,i=0;t>i;i+=3,a+=6)A(n,a,e[i],e[i+1],e[i+2]);return n}function I(e){var t=e.length;if(t>=3){var r=6*(t-2),n=v.createTypedArray(t,r);A(n,0,e[0],e[1],e[2]);for(var a=6,i=3;t>i;++i,a+=6)A(n,a,e[i-1],e[i],e[i-2]);return n}return new Uint16Array}function N(e){if(e.length>0){for(var t=e.length-1,r=6*(t-1),n=v.createTypedArray(t,r),a=e[0],i=0,o=1;t>o;++o,i+=6)A(n,i,a,e[o],e[o+1]);return n}return new Uint16Array}function z(e){var t={};for(var r in e)if(e.hasOwnProperty(r)&&c(e[r])&&c(e[r].values)){var n=e[r];t[r]=new m({componentDatatype:n.componentDatatype,componentsPerAttribute:n.componentsPerAttribute,normalize:n.normalize,values:[]})}return t}function P(e,t,r){for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values))for(var a=t[n],i=0;i<a.componentsPerAttribute;++i)e[n].values.push(a.values[r*a.componentsPerAttribute+i])}function R(e,t){if(c(t))for(var r=t.values,n=r.length,i=0;n>i;i+=3)a.unpack(r,i,it),S.multiplyByPoint(e,it,it),a.pack(it,r,i)}function _(e,t){if(c(t))for(var r=t.values,n=r.length,i=0;n>i;i+=3)a.unpack(r,i,it),E.multiplyByVector(e,it,it),it=a.normalize(it,it),a.pack(it,r,i)}function L(e,t){var r,n=e.length,a={},i=e[0][t].attributes;for(r in i)if(i.hasOwnProperty(r)&&c(i[r])&&c(i[r].values)){for(var o=i[r],s=o.values.length,l=!0,f=1;n>f;++f){var d=e[f][t].attributes[r];if(!c(d)||o.componentDatatype!==d.componentDatatype||o.componentsPerAttribute!==d.componentsPerAttribute||o.normalize!==d.normalize){l=!1;break}s+=d.values.length}l&&(a[r]=new m({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:u.createTypedArray(o.componentDatatype,s)}))}return a}function C(e,t){var n,i,o,u,s=e.length;e[0].modelMatrix;var l,f,d,m=c(e[0][t].indices),y=e[0][t].primitiveType,p=L(e,t);for(n in p)if(p.hasOwnProperty(n))for(l=p[n].values,u=0,i=0;s>i;++i)for(f=e[i][t].attributes[n].values,d=f.length,o=0;d>o;++o)l[u++]=f[o];var g;if(m){var w=0;for(i=0;s>i;++i)w+=e[i][t].indices.length;var x=h.computeNumberOfVertices(new h({attributes:p,primitiveType:b.POINTS})),E=v.createTypedArray(x,w),S=0,M=0;for(i=0;s>i;++i){var T=e[i][t].indices,A=T.length;for(u=0;A>u;++u)E[S++]=M+T[u];M+=h.computeNumberOfVertices(e[i][t])}g=E}var O,I=new a,N=0;for(i=0;s>i;++i){if(O=e[i][t].boundingSphere,!c(O)){I=void 0;break}a.add(O.center,I,I)}if(c(I))for(a.divideByScalar(I,s,I),i=0;s>i;++i){O=e[i][t].boundingSphere;var z=a.magnitude(a.subtract(O.center,I,st))+O.radius;z>N&&(N=z)}return new h({attributes:p,indices:g,primitiveType:y,boundingSphere:c(I)?new r(I,N):void 0})}function q(e){if(c(e.indices))return e;for(var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function D(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=1,r[1]=0,r[2]=2;for(var n=3,a=3;t>a;++a)r[n++]=a-1,r[n++]=0,r[n++]=a;return e.indices=r,e.primitiveType=b.TRIANGLES,e}function B(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=0,r[1]=1,r[2]=2,t>3&&(r[3]=0,r[4]=2,r[5]=3);for(var n=6,a=3;t-1>a;a+=2)r[n++]=a,r[n++]=a-1,r[n++]=a+1,t>a+2&&(r[n++]=a,r[n++]=a+1,r[n++]=a+2);return e.indices=r,e.primitiveType=b.TRIANGLES,e}function U(e){if(c(e.indices))return e;for(var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function F(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,2*(t-1));r[0]=0,r[1]=1;for(var n=2,a=2;t>a;++a)r[n++]=a-1,r[n++]=a;return e.indices=r,e.primitiveType=b.LINES,e}function G(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,2*t);r[0]=0,r[1]=1;for(var n=2,a=2;t>a;++a)r[n++]=a-1,r[n++]=a;return r[n++]=t-1,r[n]=0,e.indices=r,e.primitiveType=b.LINES,e}function W(e){switch(e.primitiveType){case b.TRIANGLE_FAN:return D(e);case b.TRIANGLE_STRIP:return B(e);case b.TRIANGLES:return q(e);case b.LINE_STRIP:return F(e);case b.LINE_LOOP:return G(e);case b.LINES:return U(e)}return e}function V(e,t){Math.abs(e.y)<x.EPSILON6&&(e.y=t?-x.EPSILON6:x.EPSILON6)}function k(e,t,r){if(0!==e.y&&0!==t.y&&0!==r.y)return V(e,e.y<0),V(t,t.y<0),V(r,r.y<0),void 0;var n,a=Math.abs(e.y),i=Math.abs(t.y),o=Math.abs(r.y);n=a>i?a>o?x.sign(e.y):x.sign(r.y):i>o?x.sign(t.y):x.sign(r.y);var u=0>n;V(e,u),V(t,u),V(r,u)}function Y(e,t,r,n){a.add(e,a.multiplyByScalar(a.subtract(t,e,xt),e.y/(e.y-t.y),xt),r),a.clone(r,n),V(r,!0),V(n,!1)}function j(e,t,r){if(e.x>=0||t.x>=0||r.x>=0)return void 0;k(e,t,r);var n=e.y<0,a=t.y<0,i=r.y<0,o=0;o+=n?1:0,o+=a?1:0,o+=i?1:0;var u=Tt.indices;1===o?(u[1]=3,u[2]=4,u[5]=6,u[7]=6,u[8]=5,n?(Y(e,t,Et,Mt),Y(e,r,St,bt),u[0]=0,u[3]=1,u[4]=2,u[6]=1):a?(Y(t,r,Et,Mt),Y(t,e,St,bt),u[0]=1,u[3]=2,u[4]=0,u[6]=2):i&&(Y(r,e,Et,Mt),Y(r,t,St,bt),u[0]=2,u[3]=0,u[4]=1,u[6]=0)):2===o&&(u[2]=4,u[4]=4,u[5]=3,u[7]=5,u[8]=6,n?a?i||(Y(r,e,Et,Mt),Y(r,t,St,bt),u[0]=0,u[1]=1,u[3]=0,u[6]=2):(Y(t,r,Et,Mt),Y(t,e,St,bt),u[0]=2,u[1]=0,u[3]=2,u[6]=1):(Y(e,t,Et,Mt),Y(e,r,St,bt),u[0]=1,u[1]=2,u[3]=1,u[6]=0));var s=Tt.positions;return s[0]=e,s[1]=t,s[2]=r,s.length=3,(1===o||2===o)&&(s[3]=Et,s[4]=St,s[5]=Mt,s[6]=bt,s.length=7),Tt}function H(e,t){var n=e.attributes;if(0===n.position.values.length)return void 0;for(var a in n)if(n.hasOwnProperty(a)&&c(n[a])&&c(n[a].values)){var i=n[a]; +i.values=u.createTypedArray(i.componentDatatype,i.values)}var o=h.computeNumberOfVertices(e);return e.indices=v.createTypedArray(o,e.indices),t&&(e.boundingSphere=r.fromVertices(n.position.values)),e}function Z(e){var t=e.attributes,r={};for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values)){var a=t[n];r[n]=new m({componentDatatype:a.componentDatatype,componentsPerAttribute:a.componentsPerAttribute,normalize:a.normalize,values:[]})}return new h({attributes:r,indices:[],primitiveType:e.primitiveType})}function X(e,t,r){var n=c(e.geometry.boundingSphere);t=H(t,n),r=H(r,n),c(r)&&!c(t)?e.geometry=r:!c(r)&&c(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=r,e.geometry=void 0)}function Q(e,r,i,o,u,s,l,f,d,h,m){if(c(s)||c(l)||c(f)||c(d)){var y=a.fromArray(u,3*e,At),p=a.fromArray(u,3*r,Ot),v=a.fromArray(u,3*i,It),g=t(o,y,p,v,Nt);if(c(s)){var w=a.fromArray(s,3*e,At),x=a.fromArray(s,3*r,Ot),E=a.fromArray(s,3*i,It);a.multiplyByScalar(w,g.x,w),a.multiplyByScalar(x,g.y,x),a.multiplyByScalar(E,g.z,E);var S=a.add(w,x,w);a.add(S,E,S),a.normalize(S,S),a.pack(S,h.normal.values,3*m)}if(c(l)){var M=a.fromArray(l,3*e,At),b=a.fromArray(l,3*r,Ot),T=a.fromArray(l,3*i,It);a.multiplyByScalar(M,g.x,M),a.multiplyByScalar(b,g.y,b),a.multiplyByScalar(T,g.z,T);var A=a.add(M,b,M);a.add(A,T,A),a.normalize(A,A),a.pack(A,h.binormal.values,3*m)}if(c(f)){var O=a.fromArray(f,3*e,At),I=a.fromArray(f,3*r,Ot),N=a.fromArray(f,3*i,It);a.multiplyByScalar(O,g.x,O),a.multiplyByScalar(I,g.y,I),a.multiplyByScalar(N,g.z,N);var z=a.add(O,I,O);a.add(z,N,z),a.normalize(z,z),a.pack(z,h.tangent.values,3*m)}if(c(d)){var P=n.fromArray(d,2*e,zt),R=n.fromArray(d,2*r,Pt),_=n.fromArray(d,2*i,Rt);n.multiplyByScalar(P,g.x,P),n.multiplyByScalar(R,g.y,R),n.multiplyByScalar(_,g.z,_);var L=n.add(P,R,P);n.add(L,_,L),n.pack(L,h.st.values,2*m)}}}function K(e,t,r,n,a,i){var o=e.position.values.length/3;if(-1!==a){var u=n[a],s=r[u];return-1===s?(r[u]=o,e.position.values.push(i.x,i.y,i.z),t.push(o),o):(t.push(s),s)}return e.position.values.push(i.x,i.y,i.z),t.push(o),o}function J(e){var t,r,n,i,o,u=e.geometry,s=u.attributes,l=s.position.values,f=c(s.normal)?s.normal.values:void 0,d=c(s.binormal)?s.binormal.values:void 0,h=c(s.tangent)?s.tangent.values:void 0,m=c(s.st)?s.st.values:void 0,y=u.indices,p=Z(u),v=Z(u),g=[];g.length=l.length/3;var w=[];for(w.length=l.length/3,o=0;o<g.length;++o)g[o]=-1,w[o]=-1;var x=y.length;for(o=0;x>o;o+=3){var E=y[o],S=y[o+1],M=y[o+2],b=a.fromArray(l,3*E),T=a.fromArray(l,3*S),A=a.fromArray(l,3*M),O=j(b,T,A);if(c(O)&&O.positions.length>3)for(var I=O.positions,N=O.indices,z=N.length,P=0;z>P;++P){var R=N[P],_=I[R];_.y<0?(t=v.attributes,r=v.indices,n=g):(t=p.attributes,r=p.indices,n=w),i=K(t,r,n,y,3>R?o+R:-1,_),Q(E,S,M,_,l,f,d,h,m,t,i)}else c(O)&&(b=O.positions[0],T=O.positions[1],A=O.positions[2]),b.y<0?(t=v.attributes,r=v.indices,n=g):(t=p.attributes,r=p.indices,n=w),i=K(t,r,n,y,o,b),Q(E,S,M,b,l,f,d,h,m,t,i),i=K(t,r,n,y,o+1,T),Q(E,S,M,T,l,f,d,h,m,t,i),i=K(t,r,n,y,o+2,A),Q(E,S,M,A,l,f,d,h,m,t,i)}X(e,v,p)}function $(e){var t,r=e.geometry,n=r.attributes,i=n.position.values,o=r.indices,u=Z(r),s=Z(r),l=o.length,f=[];f.length=i.length/3;var d=[];for(d.length=i.length/3,t=0;t<f.length;++t)f[t]=-1,d[t]=-1;for(t=0;l>t;t+=2){var h=o[t],m=o[t+1],y=a.fromArray(i,3*h,At),p=a.fromArray(i,3*m,Ot);Math.abs(y.y)<x.EPSILON6&&(y.y=y.y<0?-x.EPSILON6:x.EPSILON6),Math.abs(p.y)<x.EPSILON6&&(p.y=p.y<0?-x.EPSILON6:x.EPSILON6);var v=u.attributes,g=u.indices,E=d,S=s.attributes,M=s.indices,b=f,T=w.lineSegmentPlane(y,p,_t,It);if(c(T)){var A=a.multiplyByScalar(a.UNIT_Y,5*x.EPSILON9,Lt);y.y<0&&(a.negate(A,A),v=s.attributes,g=s.indices,E=f,S=u.attributes,M=u.indices,b=d);var O=a.add(T,A,Ct);K(v,g,E,o,t,y),K(v,g,E,o,-1,O),a.negate(A,A),a.add(T,A,O),K(S,M,b,o,-1,O),K(S,M,b,o,t+1,p)}else{var I,N,z;y.y<0?(I=s.attributes,N=s.indices,z=f):(I=u.attributes,N=u.indices,z=d),K(I,N,z,o,t,y),K(I,N,z,o,t+1,p)}}X(e,s,u)}function et(e){var t=e.geometry,r=t.attributes,o=r.position.values,u=r.prevPosition.values,s=r.nextPosition.values,l=r.expandAndWidth.values;t.indices;var f,d,h,m=c(r.st)?r.st.values:void 0,y=c(r.color)?r.color.values:void 0,p=Z(t),v=Z(t),g=o.length/3;for(f=0;g>f;f+=4){var E=f,S=f+1,M=f+2,b=f+3,T=a.fromArray(o,3*E,Bt),A=a.fromArray(o,3*S,Ut),O=a.fromArray(o,3*M,Ft),I=a.fromArray(o,3*b,Gt);Math.abs(T.y)<x.EPSILON6&&(T.y=x.EPSILON6*(O.y<0?-1:1),A.y=T.y),Math.abs(O.y)<x.EPSILON6&&(O.y=x.EPSILON6*(T.y<0?-1:1),I.y=O.y);var N=p.attributes,z=p.indices,P=v.attributes,R=v.indices,_=w.lineSegmentPlane(T,O,_t,Wt);if(c(_)){var L=a.multiplyByScalar(a.UNIT_Y,5*x.EPSILON9,Vt);T.y<0&&(a.negate(L,L),N=v.attributes,z=v.indices,P=p.attributes,R=p.indices);var C=a.add(_,L,kt);for(N.position.values.push(T.x,T.y,T.z,A.x,A.y,A.z),N.position.values.push(C.x,C.y,C.z),N.position.values.push(C.x,C.y,C.z),a.negate(L,L),a.add(_,L,C),P.position.values.push(C.x,C.y,C.z),P.position.values.push(C.x,C.y,C.z),P.position.values.push(O.x,O.y,O.z,I.x,I.y,I.z),d=3*E;3*E+6>d;++d)N.prevPosition.values.push(u[d]);for(N.prevPosition.values.push(T.x,T.y,T.z,T.x,T.y,T.z),P.prevPosition.values.push(T.x,T.y,T.z,T.x,T.y,T.z),d=3*M;3*M+6>d;++d)P.prevPosition.values.push(u[d]);for(d=3*E;3*E+6>d;++d)N.nextPosition.values.push(s[d]);for(N.nextPosition.values.push(O.x,O.y,O.z,O.x,O.y,O.z),P.nextPosition.values.push(O.x,O.y,O.z,O.x,O.y,O.z),d=3*M;3*M+6>d;++d)P.nextPosition.values.push(s[d]);var q=n.fromArray(l,2*E,qt),D=Math.abs(q.y);N.expandAndWidth.values.push(-1,D,1,D),N.expandAndWidth.values.push(-1,-D,1,-D),P.expandAndWidth.values.push(-1,D,1,D),P.expandAndWidth.values.push(-1,-D,1,-D);var B=a.magnitudeSquared(a.subtract(_,T,Gt));if(B/=a.magnitudeSquared(a.subtract(O,T,Gt)),c(y)){var U=i.fromArray(y,4*E,Yt),F=i.fromArray(y,4*M,Yt),G=x.lerp(U.x,F.x,B),W=x.lerp(U.y,F.y,B),V=x.lerp(U.z,F.z,B),k=x.lerp(U.w,F.w,B);for(d=4*E;4*E+8>d;++d)N.color.values.push(y[d]);for(N.color.values.push(G,W,V,k),N.color.values.push(G,W,V,k),P.color.values.push(G,W,V,k),P.color.values.push(G,W,V,k),d=4*M;4*M+8>d;++d)P.color.values.push(y[d])}if(c(m)){var Y=n.fromArray(m,2*E,qt),j=n.fromArray(m,2*(f+3),Dt),H=x.lerp(Y.x,j.x,B);for(d=2*E;2*E+4>d;++d)N.st.values.push(m[d]);for(N.st.values.push(H,Y.y),N.st.values.push(H,j.y),P.st.values.push(H,Y.y),P.st.values.push(H,j.y),d=2*M;2*M+4>d;++d)P.st.values.push(m[d])}h=N.position.values.length/3-4,z.push(h,h+2,h+1),z.push(h+1,h+2,h+3),h=P.position.values.length/3-4,R.push(h,h+2,h+1),R.push(h+1,h+2,h+3)}else{var Q,K;for(T.y<0?(Q=v.attributes,K=v.indices):(Q=p.attributes,K=p.indices),Q.position.values.push(T.x,T.y,T.z),Q.position.values.push(A.x,A.y,A.z),Q.position.values.push(O.x,O.y,O.z),Q.position.values.push(I.x,I.y,I.z),d=3*f;3*f+12>d;++d)Q.prevPosition.values.push(u[d]),Q.nextPosition.values.push(s[d]);for(d=2*f;2*f+8>d;++d)Q.expandAndWidth.values.push(l[d]),c(m)&&Q.st.values.push(m[d]);if(c(y))for(d=4*f;4*f+16>d;++d)Q.color.values.push(y[d]);h=Q.position.values.length/3-4,K.push(h,h+2,h+1),K.push(h+1,h+2,h+3)}}X(e,v,p)}var tt={};tt.toWireframe=function(e){var t=e.indices;if(c(t)){switch(e.primitiveType){case b.TRIANGLES:e.indices=O(t);break;case b.TRIANGLE_STRIP:e.indices=I(t);break;case b.TRIANGLE_FAN:e.indices=N(t);break;default:throw new l("geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.")}e.primitiveType=b.LINES}return e},tt.createLineSegmentsForVectors=function(e,t,n){t=s(t,"normal"),n=s(n,1e4);for(var a=e.attributes.position.values,i=e.attributes[t].values,o=a.length,l=new Float64Array(2*o),f=0,d=0;o>d;d+=3)l[f++]=a[d],l[f++]=a[d+1],l[f++]=a[d+2],l[f++]=a[d]+i[d]*n,l[f++]=a[d+1]+i[d+1]*n,l[f++]=a[d+2]+i[d+2]*n;var y,p=e.boundingSphere;return c(p)&&(y=new r(p.center,p.radius+n)),new h({attributes:{position:new m({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:l})},primitiveType:b.LINES,boundingSphere:y})},tt.createAttributeLocations=function(e){var t,r=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","binormal","tangent","compressedAttributes"],n=e.attributes,a={},i=0,o=r.length;for(t=0;o>t;++t){var u=r[t];c(n[u])&&(a[u]=i++)}for(var s in n)n.hasOwnProperty(s)&&!c(a[s])&&(a[s]=i++);return a},tt.reorderForPreVertexCache=function(e){var t=h.computeNumberOfVertices(e),r=e.indices;if(c(r)){for(var n=new Int32Array(t),a=0;t>a;a++)n[a]=-1;for(var i,o=r,s=o.length,l=v.createTypedArray(t,s),f=0,d=0,m=0;s>f;)i=n[o[f]],-1!==i?l[d]=i:(i=o[f],n[i]=m,l[d]=m,++m),++f,++d;e.indices=l;var y=e.attributes;for(var p in y)if(y.hasOwnProperty(p)&&c(y[p])&&c(y[p].values)){for(var g=y[p],w=g.values,x=0,E=g.componentsPerAttribute,S=u.createTypedArray(g.componentDatatype,m*E);t>x;){var M=n[x];if(-1!==M)for(a=0;E>a;a++)S[E*M+a]=w[E*x+a];++x}g.values=S}}return e},tt.reorderForPostVertexCache=function(e,t){var r=e.indices;if(e.primitiveType===b.TRIANGLES&&c(r)){for(var n=r.length,a=0,i=0;n>i;i++)r[i]>a&&(a=r[i]);e.indices=T.tipsify({indices:r,maximumIndex:a,cacheSize:t})}return e},tt.fitToUnsignedShortIndices=function(e){var t=[],r=h.computeNumberOfVertices(e);if(c(e.indices)&&r>x.SIXTY_FOUR_KILOBYTES){var n,a=[],i=[],o=0,u=z(e.attributes),s=e.indices,l=s.length;e.primitiveType===b.TRIANGLES?n=3:e.primitiveType===b.LINES?n=2:e.primitiveType===b.POINTS&&(n=1);for(var f=0;l>f;f+=n){for(var d=0;n>d;++d){var m=s[f+d],y=a[m];c(y)||(y=o++,a[m]=y,P(u,e.attributes,m)),i.push(y)}o+n>x.SIXTY_FOUR_KILOBYTES&&(t.push(new h({attributes:u,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),a=[],i=[],o=0,u=z(e.attributes))}0!==i.length&&t.push(new h({attributes:u,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var rt=new a,nt=new o;tt.projectTo2D=function(e,t,r,n,i){var o=e.attributes[t];i=c(i)?i:new d;for(var s=i.ellipsoid,f=o.values,h=new Float64Array(f.length),y=0,p=0;p<f.length;p+=3){var v=a.fromArray(f,p,rt),g=s.cartesianToCartographic(v,nt);if(!c(g))throw new l("Could not project point ("+v.x+", "+v.y+", "+v.z+") to 2D.");var w=i.project(g,rt);h[y++]=w.x,h[y++]=w.y,h[y++]=w.z}return e.attributes[r]=o,e.attributes[n]=new m({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:h}),delete e.attributes[t],e};var at={high:0,low:0};tt.encodeAttribute=function(e,t,r,n){for(var a=e.attributes[t],i=a.values,o=i.length,s=new Float32Array(o),c=new Float32Array(o),l=0;o>l;++l)f.encode(i[l],at),s[l]=at.high,c[l]=at.low;var d=a.componentsPerAttribute;return e.attributes[r]=new m({componentDatatype:u.FLOAT,componentsPerAttribute:d,values:s}),e.attributes[n]=new m({componentDatatype:u.FLOAT,componentsPerAttribute:d,values:c}),delete e.attributes[t],e};var it=new a,ot=new S,ut=new E;tt.transformToWorldCoordinates=function(e){var t=e.modelMatrix;if(S.equals(t,S.IDENTITY))return e;var n=e.geometry.attributes;R(t,n.position),R(t,n.prevPosition),R(t,n.nextPosition),(c(n.normal)||c(n.binormal)||c(n.tangent))&&(S.inverse(t,ot),S.transpose(ot,ot),S.getRotation(ot,ut),_(ut,n.normal),_(ut,n.binormal),_(ut,n.tangent));var a=e.geometry.boundingSphere;return c(a)&&(e.geometry.boundingSphere=r.transform(a,t,a)),e.modelMatrix=S.clone(S.IDENTITY),e};var st=new a;tt.combineInstances=function(e){for(var t=[],r=[],n=e.length,a=0;n>a;++a){var i=e[a];c(i.geometry)?t.push(i):r.push(i)}var o=[];return t.length>0&&o.push(C(t,"geometry")),r.length>0&&(o.push(C(r,"westHemisphereGeometry")),o.push(C(r,"eastHemisphereGeometry"))),o};var ct=new a,lt=new a,ft=new a,dt=new a;tt.computeNormal=function(e){for(var t=e.indices,r=e.attributes,n=r.position.values,i=r.position.values.length/3,o=t.length,s=new Array(i),c=new Array(o/3),l=new Array(o),f=0;i>f;f++)s[f]={indexOffset:0,count:0,currentCount:0};var d=0;for(f=0;o>f;f+=3){var h=t[f],y=t[f+1],p=t[f+2],v=3*h,g=3*y,w=3*p;lt.x=n[v],lt.y=n[v+1],lt.z=n[v+2],ft.x=n[g],ft.y=n[g+1],ft.z=n[g+2],dt.x=n[w],dt.y=n[w+1],dt.z=n[w+2],s[h].count++,s[y].count++,s[p].count++,a.subtract(ft,lt,ft),a.subtract(dt,lt,dt),c[d]=a.cross(ft,dt,new a),d++}var x=0;for(f=0;i>f;f++)s[f].indexOffset+=x,x+=s[f].count;d=0;var E;for(f=0;o>f;f+=3){E=s[t[f]];var S=E.indexOffset+E.currentCount;l[S]=d,E.currentCount++,E=s[t[f+1]],S=E.indexOffset+E.currentCount,l[S]=d,E.currentCount++,E=s[t[f+2]],S=E.indexOffset+E.currentCount,l[S]=d,E.currentCount++,d++}var M=new Float32Array(3*i);for(f=0;i>f;f++){var b=3*f;if(E=s[f],E.count>0){for(a.clone(a.ZERO,ct),d=0;d<E.count;d++)a.add(ct,c[l[E.indexOffset+d]],ct);a.normalize(ct,ct),M[b]=ct.x,M[b+1]=ct.y,M[b+2]=ct.z}else M[b]=0,M[b+1]=0,M[b+2]=1}return e.attributes.normal=new m({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:M}),e};var ht=new a,mt=new a,yt=new a;tt.computeBinormalAndTangent=function(e){e.attributes;for(var t=e.indices,r=e.attributes.position.values,n=e.attributes.normal.values,i=e.attributes.st.values,o=e.attributes.position.values.length/3,s=t.length,c=new Array(3*o),l=0;l<c.length;l++)c[l]=0;var f,d,h;for(l=0;s>l;l+=3){var y=t[l],p=t[l+1],v=t[l+2];f=3*y,d=3*p,h=3*v;var g=2*y,w=2*p,x=2*v,E=r[f],S=r[f+1],M=r[f+2],b=i[g],T=i[g+1],A=i[w+1]-T,O=i[x+1]-T,I=1/((i[w]-b)*O-(i[x]-b)*A),N=(O*(r[d]-E)-A*(r[h]-E))*I,z=(O*(r[d+1]-S)-A*(r[h+1]-S))*I,P=(O*(r[d+2]-M)-A*(r[h+2]-M))*I;c[f]+=N,c[f+1]+=z,c[f+2]+=P,c[d]+=N,c[d+1]+=z,c[d+2]+=P,c[h]+=N,c[h+1]+=z,c[h+2]+=P}var R=new Float32Array(3*o),_=new Float32Array(3*o);for(l=0;o>l;l++){f=3*l,d=f+1,h=f+2;var L=a.fromArray(n,f,ht),C=a.fromArray(c,f,yt),q=a.dot(L,C);a.multiplyByScalar(L,q,mt),a.normalize(a.subtract(C,mt,C),C),_[f]=C.x,_[d]=C.y,_[h]=C.z,a.normalize(a.cross(L,C,C),C),R[f]=C.x,R[d]=C.y,R[h]=C.z}return e.attributes.tangent=new m({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:_}),e.attributes.binormal=new m({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:R}),e};var pt=new n,vt=new a,gt=new a,wt=new a;tt.compressVertices=function(t){var r=t.attributes.normal,i=t.attributes.st;if(!c(r)&&!c(i))return t;var o,s,l,f,d=t.attributes.tangent,h=t.attributes.binormal;c(r)&&(o=r.values),c(i)&&(s=i.values),c(d)&&(l=d.values),h&&(f=h.values);var y=c(o)?o.length:s.length,p=c(o)?3:2,v=y/p,g=v,w=c(s)&&c(o)?2:1;w+=c(l)||c(f)?1:0,g*=w;for(var x=new Float32Array(g),E=0,S=0;v>S;++S){c(s)&&(n.fromArray(s,2*S,pt),x[E++]=e.compressTextureCoordinates(pt));var M=3*S;c(o)&&c(l)&&c(f)?(a.fromArray(o,M,vt),a.fromArray(l,M,gt),a.fromArray(f,M,wt),e.octPack(vt,gt,wt,pt),x[E++]=pt.x,x[E++]=pt.y):(c(o)&&(a.fromArray(o,M,vt),x[E++]=e.octEncodeFloat(vt)),c(l)&&(a.fromArray(l,M,vt),x[E++]=e.octEncodeFloat(vt)),c(f)&&(a.fromArray(f,M,vt),x[E++]=e.octEncodeFloat(vt)))}return t.attributes.compressedAttributes=new m({componentDatatype:u.FLOAT,componentsPerAttribute:w,values:x}),c(o)&&delete t.attributes.normal,c(s)&&delete t.attributes.st,c(l)&&delete t.attributes.tangent,c(f)&&delete t.attributes.binormal,t};var xt=new a,Et=new a,St=new a,Mt=new a,bt=new a,Tt={positions:new Array(7),indices:new Array(9)},At=new a,Ot=new a,It=new a,Nt=new a,zt=new n,Pt=new n,Rt=new n,_t=M.fromPointNormal(a.ZERO,a.UNIT_Y),Lt=new a,Ct=new a,qt=new n,Dt=new n,Bt=new a,Ut=new a,Ft=new a,Gt=new a,Wt=new a,Vt=new a,kt=new a,Yt=new i;return new i,tt.splitLongitude=function(e){var t=e.geometry,n=t.boundingSphere;if(c(n)){var a=n.center.x-n.radius;if(a>0||r.intersectPlane(n,M.ORIGIN_ZX_PLANE)!==g.INTERSECTING)return e}if(t.geometryType!==p.NONE)switch(t.geometryType){case p.POLYLINES:et(e);break;case p.TRIANGLES:J(e);break;case p.LINES:$(e)}else W(t),t.primitiveType===b.TRIANGLES?J(e):t.primitiveType===b.LINES&&$(e);return e},tt}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.position=e(t.position,!1),this.normal=e(t.normal,!1),this.st=e(t.st,!1),this.binormal=e(t.binormal,!1),this.tangent=e(t.tangent,!1),this.color=e(t.color,!1)};return a.POSITION_ONLY=n(new a({position:!0})),a.POSITION_AND_NORMAL=n(new a({position:!0,normal:!0})),a.POSITION_NORMAL_AND_ST=n(new a({position:!0,normal:!0,st:!0})),a.POSITION_AND_ST=n(new a({position:!0,st:!0})),a.POSITION_AND_COLOR=n(new a({position:!0,color:!0})),a.ALL=n(new a({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),a.DEFAULT=a.POSITION_NORMAL_AND_ST,a.packedLength=6,a.pack=function(t,r,n){n=e(n,0),r[n++]=t.position?1:0,r[n++]=t.normal?1:0,r[n++]=t.st?1:0,r[n++]=t.binormal?1:0,r[n++]=t.tangent?1:0,r[n++]=t.color?1:0},a.unpack=function(r,n,i){return n=e(n,0),t(i)||(i=new a),i.position=1===r[n++],i.normal=1===r[n++],i.st=1===r[n++],i.binormal=1===r[n++],i.tangent=1===r[n++],i.color=1===r[n++],i},a.clone=function(e,r){return t(e)?(t(r)||(r=new a),r.position=e.position,r.normal=e.normal,r.st=e.st,r.binormal=e.binormal,r.tangent=e.tangent,r.color=e.color,r):void 0},a}),define("Core/EllipseGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EllipseGeometryLibrary","./Ellipsoid","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryAttributes","./GeometryInstance","./GeometryPipeline","./IndexDatatype","./Math","./Matrix3","./PrimitiveType","./Quaternion","./VertexFormat"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,m,y,p,v,g,w,x,E){"use strict";function S(e,n,i){var o=n.vertexFormat,u=n.center,c=n.semiMajorAxis,f=n.semiMinorAxis,m=n.ellipsoid,y=n.stRotation,p=i?2*(e.length/3):e.length/3,v=o.st?new Float32Array(2*p):void 0,w=o.normal?new Float32Array(3*p):void 0,E=o.tangent?new Float32Array(3*p):void 0,S=o.binormal?new Float32Array(3*p):void 0,M=0,b=C,T=q,A=D,O=new l(m),P=O.project(m.cartesianToCartographic(u,B),U),W=m.scaleToGeodeticSurface(u,I);m.geodeticSurfaceNormal(W,W);for(var V=x.fromAxisAngle(W,y,L),k=g.fromQuaternion(V,_),Y=t.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,F),j=t.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,G),H=e.length,Z=i?H:0,X=2*(Z/3),Q=0;H>Q;Q+=3){var K=Q+1,J=Q+2,$=r.fromArray(e,Q,I);if(o.st){var et=g.multiplyByVector(k,$,N),tt=O.project(m.cartesianToCartographic(et,B),z);r.subtract(tt,P,tt),R.x=(tt.x+c)/(2*c),R.y=(tt.y+f)/(2*f),Y.x=Math.min(R.x,Y.x),Y.y=Math.min(R.y,Y.y),j.x=Math.max(R.x,j.x),j.y=Math.max(R.y,j.y),i&&(v[M+X]=R.x,v[M+1+X]=R.y),v[M++]=R.x,v[M++]=R.y}b=m.geodeticSurfaceNormal($,b),(o.normal||o.tangent||o.binormal)&&((o.tangent||o.binormal)&&(T=r.cross(r.UNIT_Z,b,T),g.multiplyByVector(k,T,T)),o.normal&&(w[Q]=b.x,w[K]=b.y,w[J]=b.z,i&&(w[Q+Z]=-b.x,w[K+Z]=-b.y,w[J+Z]=-b.z)),o.tangent&&(E[Q]=T.x,E[K]=T.y,E[J]=T.z,i&&(E[Q+Z]=-T.x,E[K+Z]=-T.y,E[J+Z]=-T.z)),o.binormal&&(A=r.cross(b,T,A),S[Q]=A.x,S[K]=A.y,S[J]=A.z,i&&(S[Q+Z]=A.x,S[K+Z]=A.y,S[J+Z]=A.z)))}if(o.st){H=v.length;for(var rt=0;H>rt;rt+=2)v[rt]=(v[rt]-Y.x)/(j.x-Y.x),v[rt+1]=(v[rt+1]-Y.y)/(j.y-Y.y)}var nt=new h;if(o.position){var at=s.raisePositionsToHeight(e,n,i);nt.position=new d({componentDatatype:a.DOUBLE,componentsPerAttribute:3,values:at})}return o.st&&(nt.st=new d({componentDatatype:a.FLOAT,componentsPerAttribute:2,values:v})),o.normal&&(nt.normal=new d({componentDatatype:a.FLOAT,componentsPerAttribute:3,values:w})),o.tangent&&(nt.tangent=new d({componentDatatype:a.FLOAT,componentsPerAttribute:3,values:E})),o.binormal&&(nt.binormal=new d({componentDatatype:a.FLOAT,componentsPerAttribute:3,values:S})),nt}function M(e){var t,r,n,a,i,o=new Array(2*e*(e+1)),u=0;for(a=1;e>a;++a){for(n=a*(a+1),t=(a-1)*a,o[u++]=n++,o[u++]=t,o[u++]=n,r=2*a,i=0;r-1>i;++i)o[u++]=n,o[u++]=t++,o[u++]=t,o[u++]=n++,o[u++]=t,o[u++]=n;o[u++]=n++,o[u++]=t,o[u++]=n}for(r=2*e,++n,++t,a=0;r-1>a;++a)o[u++]=n,o[u++]=t++,o[u++]=t,o[u++]=n++,o[u++]=t,o[u++]=n;for(++t,++n,a=e-1;a>0;--a){for(o[u++]=t++,o[u++]=t,o[u++]=n,r=2*a,i=0;r-1>i;++i)o[u++]=n,o[u++]=t++,o[u++]=t,o[u++]=n++,o[u++]=t,o[u++]=n;o[u++]=t++,o[u++]=t++,o[u++]=n++}return o}function b(t){var n=t.center;W=r.multiplyByScalar(t.ellipsoid.geodeticSurfaceNormal(n,W),t.height,W),W=r.add(n,W,W);var a=new e(W,t.semiMajorAxis),i=s.computeEllipsePositions(t,!0,!1),o=i.positions,u=i.numPts,c=S(o,t,!1),l=M(u);return l=p.createTypedArray(o.length/3,l),{boundingSphere:a,attributes:c,indices:l}}function T(e,n){var i=n.vertexFormat,o=n.center,u=n.semiMajorAxis,s=n.semiMinorAxis,c=n.ellipsoid,f=n.height,m=n.extrudedHeight,y=n.stRotation,p=2*(e.length/3),v=new Float64Array(3*p),w=i.st?new Float32Array(2*p):void 0,E=i.normal?new Float32Array(3*p):void 0,S=i.tangent?new Float32Array(3*p):void 0,M=i.binormal?new Float32Array(3*p):void 0,b=0,T=C,A=q,O=D,W=new l(c),V=W.project(c.cartesianToCartographic(o,B),U),k=c.scaleToGeodeticSurface(o,I);c.geodeticSurfaceNormal(k,k);for(var Y=x.fromAxisAngle(k,y,L),j=g.fromQuaternion(Y,_),H=t.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,F),Z=t.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,G),X=e.length,Q=2*(X/3),K=0;X>K;K+=3){var J,$=K+1,et=K+2,tt=r.fromArray(e,K,I);if(i.st){var rt=g.multiplyByVector(j,tt,N),nt=W.project(c.cartesianToCartographic(rt,B),z);r.subtract(nt,V,nt),R.x=(nt.x+u)/(2*u),R.y=(nt.y+s)/(2*s),H.x=Math.min(R.x,H.x),H.y=Math.min(R.y,H.y),Z.x=Math.max(R.x,Z.x),Z.y=Math.max(R.y,Z.y),w[b+Q]=R.x,w[b+1+Q]=R.y,w[b++]=R.x,w[b++]=R.y}tt=c.scaleToGeodeticSurface(tt,tt),J=r.clone(tt,N),T=c.geodeticSurfaceNormal(tt,T);var at=r.multiplyByScalar(T,f,P);if(tt=r.add(tt,at,tt),at=r.multiplyByScalar(T,m,at),J=r.add(J,at,J),i.position&&(v[K+X]=J.x,v[$+X]=J.y,v[et+X]=J.z,v[K]=tt.x,v[$]=tt.y,v[et]=tt.z),i.normal||i.tangent||i.binormal){O=r.clone(T,O);var it=r.fromArray(e,(K+3)%X,P);r.subtract(it,tt,it);var ot=r.subtract(J,tt,z);T=r.normalize(r.cross(ot,it,T),T),i.normal&&(E[K]=T.x,E[$]=T.y,E[et]=T.z,E[K+X]=T.x,E[$+X]=T.y,E[et+X]=T.z),i.tangent&&(A=r.normalize(r.cross(O,T,A),A),S[K]=A.x,S[$]=A.y,S[et]=A.z,S[K+X]=A.x,S[K+1+X]=A.y,S[K+2+X]=A.z),i.binormal&&(M[K]=O.x,M[$]=O.y,M[et]=O.z,M[K+X]=O.x,M[$+X]=O.y,M[et+X]=O.z)}}if(i.st){X=w.length;for(var ut=0;X>ut;ut+=2)w[ut]=(w[ut]-H.x)/(Z.x-H.x),w[ut+1]=(w[ut+1]-H.y)/(Z.y-H.y)}var st=new h;return i.position&&(st.position=new d({componentDatatype:a.DOUBLE,componentsPerAttribute:3,values:v})),i.st&&(st.st=new d({componentDatatype:a.FLOAT,componentsPerAttribute:2,values:w})),i.normal&&(st.normal=new d({componentDatatype:a.FLOAT,componentsPerAttribute:3,values:E})),i.tangent&&(st.tangent=new d({componentDatatype:a.FLOAT,componentsPerAttribute:3,values:S})),i.binormal&&(st.binormal=new d({componentDatatype:a.FLOAT,componentsPerAttribute:3,values:M})),st}function A(e){for(var t=e.length/3,r=p.createTypedArray(t,6*t),n=0,a=0;t>a;a++){var i=a,o=a+t,u=(i+1)%t,s=u+t;r[n++]=i,r[n++]=o,r[n++]=u,r[n++]=u,r[n++]=o,r[n++]=s}return r}function O(t){var n=t.center,a=t.ellipsoid,i=t.semiMajorAxis,o=r.multiplyByScalar(a.geodeticSurfaceNormal(n,I),t.height,I);V.center=r.add(n,o,V.center),V.radius=i,o=r.multiplyByScalar(a.geodeticSurfaceNormal(n,o),t.extrudedHeight,o),k.center=r.add(n,o,k.center),k.radius=i;var u=s.computeEllipsePositions(t,!0,!0),c=u.positions,l=u.numPts,d=u.outerPositions,h=e.union(V,k),v=S(c,t,!0),g=M(l),x=g.length;g.length=2*x;for(var E=c.length/3,b=0;x>b;b+=3)g[b+x]=g[b+2]+E,g[b+1+x]=g[b+1]+E,g[b+2+x]=g[b]+E;var O=p.createTypedArray(2*E/3,g),N=new f({attributes:v,indices:O,primitiveType:w.TRIANGLES}),z=T(d,t);g=A(d);var P=p.createTypedArray(2*d.length/3,g),R=new f({attributes:z,indices:P,primitiveType:w.TRIANGLES}),_=y.combineInstances([new m({geometry:N}),new m({geometry:R})]);return{boundingSphere:h,attributes:_[0].attributes,indices:_[0].indices}}var I=new r,N=new r,z=new r,P=new r,R=new t,_=new g,L=new x,C=new r,q=new r,D=new r,B=new n,U=new r,F=new t,G=new t,W=new r,V=new e,k=new e,Y=function(e){e=i(e,i.EMPTY_OBJECT);var t=e.center,n=i(e.ellipsoid,c.WGS84),a=e.semiMajorAxis,u=e.semiMinorAxis,s=i(e.granularity,v.RADIANS_PER_DEGREE),l=i(e.height,0),f=e.extrudedHeight,d=o(f)&&Math.abs(l-f)>1,h=i(e.vertexFormat,E.DEFAULT);this._center=r.clone(t),this._semiMajorAxis=a,this._semiMinorAxis=u,this._ellipsoid=c.clone(n),this._rotation=i(e.rotation,0),this._stRotation=i(e.stRotation,0),this._height=l,this._granularity=s,this._vertexFormat=E.clone(h),this._extrudedHeight=i(f,l),this._extrude=d,this._workerName="createEllipseGeometry"};Y.packedLength=r.packedLength+c.packedLength+E.packedLength+8,Y.pack=function(e,t,n){n=i(n,0),r.pack(e._center,t,n),n+=r.packedLength,c.pack(e._ellipsoid,t,n),n+=c.packedLength,E.pack(e._vertexFormat,t,n),n+=E.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n]=e._extrude?1:0};var j=new r,H=new c,Z=new E,X={center:j,ellipsoid:H,vertexFormat:Z,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0};return Y.unpack=function(e,t,n){t=i(t,0);var a=r.unpack(e,t,j);t+=r.packedLength;var u=c.unpack(e,t,H);t+=c.packedLength;var s=E.unpack(e,t,Z);t+=E.packedLength;var l=e[t++],f=e[t++],d=e[t++],h=e[t++],m=e[t++],y=e[t++],p=e[t++],v=1===e[t];return o(n)?(n._center=r.clone(a,n._center),n._ellipsoid=c.clone(u,n._ellipsoid),n._vertexFormat=E.clone(s,n._vertexFormat),n._semiMajorAxis=l,n._semiMinorAxis=f,n._rotation=d,n._stRotation=h,n._height=m,n._granularity=y,n._extrudedHeight=p,n._extrude=v,n):(X.height=m,X.extrudedHeight=p,X.granularity=y,X.stRotation=h,X.rotation=d,X.semiMajorAxis=l,X.semiMinorAxis=f,new Y(X))},Y.createGeometry=function(e){e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);var t,r={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:e._height,extrudedHeight:e._extrudedHeight,granularity:e._granularity,vertexFormat:e._vertexFormat,stRotation:e._stRotation};return e._extrude?(r.extrudedHeight=Math.min(e._extrudedHeight,e._height),r.height=Math.max(e._extrudedHeight,e._height),t=O(r)):t=b(r),new f({attributes:t.attributes,indices:t.indices,primitiveType:w.TRIANGLES,boundingSphere:t.boundingSphere})},Y}),define("Workers/createEllipseGeometry",["../Core/Cartesian3","../Core/defined","../Core/EllipseGeometry","../Core/Ellipsoid"],function(e,t,r,n){"use strict";function a(a,i){return t(i)&&(a=r.unpack(a,i)),a._center=e.clone(a._center),a._ellipsoid=n.clone(a._ellipsoid),r.createGeometry(a)}return a})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createEllipseOutlineGeometry.js b/libs/Cesium/Workers/createEllipseOutlineGeometry.js new file mode 100644 index 0000000000..969702b85c --- /dev/null +++ b/libs/Cesium/Workers/createEllipseOutlineGeometry.js @@ -0,0 +1,60 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[1&e];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(e){return e>0?1:0>e?-1:0},n.signNotZero=function(e){return 0>e?-1:1},n.toSNorm=function(e){return Math.round(255*(.5*n.clamp(e,-1,1)+.5))},n.fromSNorm=function(e){return 2*(n.clamp(e,0,255)/255)-1},n.sinh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t-n)},n.cosh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t+n)},n.lerp=function(e,t,n){return(1-n)*e+n*t},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(e){return e*n.RADIANS_PER_DEGREE},n.toDegrees=function(e){return e*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(e){var t=n.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},n.negativePiToPi=function(e){return n.zeroToTwoPi(e+n.PI)-n.PI},n.zeroToTwoPi=function(e){var t=n.mod(e,n.TWO_PI);return Math.abs(t)<n.EPSILON14&&Math.abs(e)>n.EPSILON14?n.TWO_PI:t},n.mod=function(e,t){return(e%t+t)%t},n.equalsEpsilon=function(e,n,r,i){i=t(i,r);var a=Math.abs(e-n);return i>=a||a<=r*Math.max(Math.abs(e),Math.abs(n))};var r=[1];n.factorial=function(e){var t=r.length;if(e>=t)for(var n=r[t-1],i=t;e>=i;i++)r.push(n*i);return r[e]},n.incrementWrap=function(e,n,r){return r=t(r,0),++e,e>n&&(e=r),e},n.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},n.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},n.clamp=function(e,t,n){return t>e?t:e>n?n:e};var i=new e;return n.setRandomNumberSeed=function(t){i=new e(t)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(e){return Math.acos(n.clamp(e,-1,1))},n.asinClamped=function(e){return Math.asin(n.clamp(e,-1,1))},n.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0)};a.fromSpherical=function(n,r){t(r)||(r=new a);var i=n.clock,o=n.cone,u=e(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(e,n,r,i){return t(i)?(i.x=e,i.y=n,i.z=r,i):new a(e,n,r)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n):new a(e.x,e.y,e.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r]=t.z},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(e,t){a.normalize(e,s),a.normalize(t,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,l);return a.abs(n,n),t=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Z,t):n.y<=n.z?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_Z,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)&&i.equalsEpsilon(e.z,n.z,r,a)},a.cross=function(e,t,n){var r=e.x,i=e.y,a=e.z,o=t.x,u=t.y,s=t.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(e,t,n,r,o){var u=i.toRadians(e),s=i.toRadians(t);return a.fromRadians(u,s,n,r,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=e(i,0);var s=t(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),t(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=i.toRadians(e[o]);return a.fromRadiansArray(r,t,n)},a.fromRadiansArray=function(e,n,r){var i=e.length;t(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=e[o],s=e[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o+=3)r[o]=i.toRadians(e[o]),r[o+1]=i.toRadians(e[o+1]),r[o+2]=e[o+2];return a.fromRadiansArrayHeights(r,t,n)},a.fromRadiansArrayHeights=function(e,n,r){var i=e.length;t(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r){this.longitude=e(t,0),this.latitude=e(n,0),this.height=e(r,0)};return a.fromRadians=function(n,r,i,o){return i=e(i,0),t(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(e,t,n,r){return e=i.toRadians(e),t=i.toRadians(t),a.fromRadians(e,t,n,r)},a.clone=function(e,n){return t(e)?t(n)?(n.longitude=e.longitude,n.latitude=e.latitude,n.height=e.height,n):new a(e.longitude,e.latitude,e.height):void 0},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.longitude===n.longitude&&e.latitude===n.latitude&&e.height===n.height},a.equalsEpsilon=function(e,n,r){return e===n||t(e)&&t(n)&&Math.abs(e.longitude-n.longitude)<=r&&Math.abs(e.latitude-n.latitude)<=r&&Math.abs(e.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t){return a.equalsEpsilon(this,e,t)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},n=function(n,r){e(t[n])||(t[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),n=Object.defineProperties;return t&&e(n)||(n=function(e){return e}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i,a,o,u){"use strict";function s(t,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),t._radii=new e(r,i,a),t._radiiSquared=new e(r*r,i*i,a*a),t._radiiToTheFourth=new e(r*r*r*r,i*i*i*i,a*a*a*a),t._oneOverRadii=new e(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),t._minimumRadius=Math.min(r,i,a),t._maximumRadius=Math.max(r,i,a),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,n){if(!r(t))return void 0;var i=t._radii;return r(n)?(e.clone(i,n._radii),e.clone(t._radiiSquared,n._radiiSquared),e.clone(t._radiiToTheFourth,n._radiiToTheFourth),e.clone(t._oneOverRadii,n._oneOverRadii),e.clone(t._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=t._minimumRadius,n._maximumRadius=t._maximumRadius,n._centerToleranceSquared=t._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(e,t){return r(t)||(t=new c),r(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,r,i){i=n(i,0),e.pack(t._radii,r,i)},c.unpack=function(t,r,i){r=n(r,0);var a=e.unpack(t,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,n){var i=t.longitude,a=t.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new e),n.x=u,n.y=s,n.z=c,e.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(t,n){return r(n)||(n=new e),n=e.multiplyComponents(t,this._oneOverRadiiSquared,n),e.normalize(n,n)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(t,i),e.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(e.dot(i,a));return e.divideByScalar(a,o,a),e.multiplyByScalar(i,t.height,i),r(n)||(n=new e),e.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var i=0;n>i;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var h=new e,d=new e,m=new e;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,d);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=e.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,n))*e.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var i=0;n>i;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};var y=new e,p=new e;return c.prototype.scaleToGeodeticSurface=function(t,n){var i=t.x,a=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,m=o*o*f*f,v=h+d+m,w=Math.sqrt(1/v),g=e.multiplyByScalar(t,w,y);if(v<this._centerToleranceSquared)return isFinite(w)?e.clone(g,n):void 0;var x=this._oneOverRadiiSquared,E=x.x,M=x.y,S=x.z,z=p;z.x=2*g.x*E,z.y=2*g.y*M,z.z=2*g.z*S;var _,O,I,T,N,R,A,b,P,C,L,q=(1-w)*e.magnitude(t)/(.5*e.magnitude(z)),U=0;do{q-=U,I=1/(1+q*E),T=1/(1+q*M),N=1/(1+q*S),R=I*I,A=T*T,b=N*N,P=R*I,C=A*T,L=b*N,_=h*R+d*A+m*b-1,O=h*P*E+d*C*M+m*L*S;var B=-2*O;U=_/B}while(Math.abs(_)>u.EPSILON12);return r(n)?(n.x=i*I,n.y=a*T,n.z=o*N,n):new e(i*I,a*T,o*N)},c.prototype.scaleToGeocentricSurface=function(t,n){r(n)||(n=new e);var i=t.x,a=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return e.multiplyByScalar(t,s,n)},c.prototype.transformPositionToScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._radii,n)},c.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,n,r,i,a,o){"use strict";var u=function(e){this._ellipsoid=n(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,n){var i=this._semimajorAxis,a=t.longitude*i,o=t.latitude*i,u=t.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new e(a,o,u)},u.prototype.unproject=function(e,n){var i=this._oneOverSemimajorAxis,a=e.x*i,o=e.y*i,u=e.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new t(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,n){this.start=e(t,0),this.stop=e(n,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r,i){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0),this.w=e(i,0)};a.fromElements=function(e,n,r,i,o){return t(o)?(o.x=e,o.y=n,o.z=r,o.w=i,o):new a(e,n,r,i)},a.fromColor=function(e,n){return t(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new a(e.red,e.green,e.blue,e.alpha)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new a(e.x,e.y,e.z,e.w):void 0},a.packedLength=4,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r++]=t.z,n[r]=t.w},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,s);return a.abs(n,n),t=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,t):a.clone(a.UNIT_W,t):n.z<=n.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_W,t):n.z<=n.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)&&i.equalsEpsilon(e.z,n.z,r,a)&&i.equalsEpsilon(e.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i,a){"use strict";function o(e){for(var t=0,n=0;9>n;++n){var r=e[n];t+=r*r}return Math.sqrt(t)}function u(e){for(var t=0,n=0;3>n;++n){var r=e[c.getElementIndex(d[n],h[n])];t+=2*r*r}return Math.sqrt(t)}function s(e,t){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(d[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=h[i],m=d[i];if(Math.abs(e[c.getElementIndex(m,f)])>n){var y,p=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(f,f)],w=e[c.getElementIndex(m,f)],g=(p-v)/2/w;y=0>g?-1/(-g+Math.sqrt(1+g*g)):1/(g+Math.sqrt(1+g*g)),s=1/Math.sqrt(1+y*y),l=y*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,f)]=l,t[c.getElementIndex(f,m)]=-l,t}var c=function(e,n,r,i,a,o,u,s,c){this[0]=t(e,0),this[1]=t(i,0),this[2]=t(u,0),this[3]=t(n,0),this[4]=t(a,0),this[5]=t(s,0),this[6]=t(r,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r++]=e[7],n[r++]=e[8]},c.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new c),i[0]=e[r++],i[1]=e[r++],i[2]=e[r++],i[3]=e[r++],i[4]=e[r++],i[5]=e[r++],i[6]=e[r++],i[7]=e[r++],i[8]=e[r++],i},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,r,i){return r=t(r,0),n(i)||(i=new c),i[0]=e[r],i[1]=e[r+1],i[2]=e[r+2],i[3]=e[r+3],i[4]=e[r+4],i[5]=e[r+5],i[6]=e[r+6],i[7]=e[r+7],i[8]=e[r+8],i},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var r=e.x*e.x,i=e.x*e.y,a=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,h=e.z*e.w,d=e.w*e.w,m=r-u-f+d,y=2*(i-h),p=2*(a+l),v=2*(i+h),w=-r+u-f+d,g=2*(s-o),x=2*(a-l),E=2*(s+o),M=-r-u+f+d;return n(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=y,t[4]=w,t[5]=E,t[6]=p,t[7]=g,t[8]=M,t):new c(m,y,p,v,w,g,x,E,M)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return n(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=i,t[6]=0,t[7]=-i,t[8]=r,t):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=r,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=r,t):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=r,t[1]=i,t[2]=0,t[3]=-i,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,n){var r=3*t,i=e[r],a=e[r+1],o=e[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var i=3*t;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(e,t,n){var r=e[t],i=e[t+3],a=e[t+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+3]=n.y,r[t+6]=n.z,r};var l=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),n};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,n){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],i=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],a=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n},c.multiplyByVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[3]*i+e[6]*a,u=e[1]*r+e[4]*i+e[7]*a,s=e[2]*r+e[5]*i+e[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n},c.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var n=e[0],r=e[3],i=e[6],a=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=n,t[1]=r,t[2]=i,t[3]=a,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var h=[1,0,0],d=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(e,t){var r=a.EPSILON20,i=10,l=0,f=0;n(t)||(t={});for(var h=t.unitary=c.clone(c.IDENTITY,t.unitary),d=t.diagonal=c.clone(e,t.diagonal),p=r*o(d);i>f&&u(d)>p;)s(d,m),c.transpose(m,y),c.multiply(d,m,d),c.multiply(y,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],n=e[3],r=e[6],i=e[1],a=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(e,t){var n=e[0],i=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],h=e[7],d=e[8],m=c.determinant(e);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");t[0]=s*d-h*l,t[1]=h*o-i*d,t[2]=i*l-s*o,t[3]=f*l-u*d,t[4]=n*d-f*o,t[5]=u*o-n*l,t[6]=u*h-f*s,t[7]=f*i-n*h,t[8]=n*s-u*i;var y=1/m;return c.multiplyByScalar(t,y,t)},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,n,r,i,a,o,u,s){"use strict";var c=function(e,t,r,i,a,o,u,s,c,l,f,h,d,m,y,p){this[0]=n(e,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(t,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(y,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(p,0)};c.packedLength=16,c.pack=function(e,t,r){r=n(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},c.unpack=function(e,t,i){return t=n(t,0),r(i)||(i=new c),i[0]=e[t++],i[1]=e[t++],i[2]=e[t++],i[3]=e[t++],i[4]=e[t++],i[5]=e[t++],i[6]=e[t++],i[7]=e[t++],i[8]=e[t++],i[9]=e[t++],i[10]=e[t++],i[11]=e[t++],i[12]=e[t++],i[13]=e[t++],i[14]=e[t++],i[15]=e[t],i},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,i,a){return i=n(i,e.ZERO),r(a)?(a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=0,a[4]=t[3],a[5]=t[4],a[6]=t[5],a[7]=0,a[8]=t[6],a[9]=t[7],a[10]=t[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(t[0],t[3],t[6],i.x,t[1],t[4],t[7],i.y,t[2],t[5],t[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,h=t.x*t.w,d=t.y*t.y,m=t.y*t.z,y=t.y*t.w,p=t.z*t.z,v=t.z*t.w,w=t.w*t.w,g=s-d-p+w,x=2*(l-v),E=2*(f+y),M=2*(l+v),S=-s+d-p+w,z=2*(m-h),_=2*(f-y),O=2*(m+h),I=-s-d+p+w;return i[0]=g*a,i[1]=M*a,i[2]=_*a,i[3]=0,i[4]=x*o,i[5]=S*o,i[6]=O*o,i[7]=0,i[8]=E*u,i[9]=z*u,i[10]=I*u,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,h=new e;c.fromCamera=function(t,n){var i=t.eye,a=t.target,o=t.up;e.normalize(e.subtract(a,i,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,y=l.y,p=l.z,v=h.x,w=h.y,g=h.z,x=i.x,E=i.y,M=i.z,S=u*-x+s*-E+d*-M,z=v*-x+w*-E+g*-M,_=m*x+y*E+p*M;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=w,n[6]=-y,n[7]=0,n[8]=d,n[9]=g,n[10]=-p,n[11]=0,n[12]=S,n[13]=z,n[14]=_,n[15]=1,n):new c(u,s,d,S,v,w,g,z,-m,-y,-p,_,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,n,r,i){var a=Math.tan(.5*e),o=1/a,u=o/t,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(e,t,n,r,i,a,o){var u=1/(t-e),s=1/(r-n),c=1/(a-i),l=-(t+e)*u,f=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o +},c.computePerspectiveOffCenter=function(e,t,n,r,i,a,o){var u=2*i/(t-e),s=2*i/(r-n),c=(t+e)/(t-e),l=(r+n)/(r-n),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,n,r,i,a){var o=2*i/(t-e),u=2*i/(r-n),s=(t+e)/(t-e),c=(r+n)/(r-n),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(e,t,r,i){e=n(e,n.EMPTY_OBJECT);var a=n(e.x,0),o=n(e.y,0),u=n(e.width,0),s=n(e.height,0);t=n(t,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-t),h=c,d=l,m=f,y=a+c,p=o+l,v=t+f,w=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=y,i[13]=p,i[14]=v,i[15]=w,i},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,n){var r=4*t,i=e[r],a=e[r+1],o=e[r+2],u=e[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var i=4*t;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n},c.getRow=function(e,t,n){var r=e[t],i=e[t+4],a=e[t+8],o=e[t+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+4]=n.y,r[t+8]=n.z,r[t+12]=n.w,r};var d=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],d)),n.y=e.magnitude(e.fromElements(t[4],t[5],t[6],d)),n.z=e.magnitude(e.fromElements(t[8],t[9],t[10],d)),n};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],h=e[9],d=e[10],m=e[11],y=e[12],p=e[13],v=e[14],w=e[15],g=t[0],x=t[1],E=t[2],M=t[3],S=t[4],z=t[5],_=t[6],O=t[7],I=t[8],T=t[9],N=t[10],R=t[11],A=t[12],b=t[13],P=t[14],C=t[15],L=r*g+u*x+f*E+y*M,q=i*g+s*x+h*E+p*M,U=a*g+c*x+d*E+v*M,B=o*g+l*x+m*E+w*M,D=r*S+u*z+f*_+y*O,W=i*S+s*z+h*_+p*O,F=a*S+c*z+d*_+v*O,G=o*S+l*z+m*_+w*O,k=r*I+u*T+f*N+y*R,V=i*I+s*T+h*N+p*R,Y=a*I+c*T+d*N+v*R,j=o*I+l*T+m*N+w*R,H=r*A+u*b+f*P+y*C,Z=i*A+s*b+h*P+p*C,X=a*A+c*b+d*P+v*C,K=o*A+l*b+m*P+w*C;return n[0]=L,n[1]=q,n[2]=U,n[3]=B,n[4]=D,n[5]=W,n[6]=F,n[7]=G,n[8]=k,n[9]=V,n[10]=Y,n[11]=j,n[12]=H,n[13]=Z,n[14]=X,n[15]=K,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},c.multiplyTransformation=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=e[12],d=e[13],m=e[14],y=t[0],p=t[1],v=t[2],w=t[4],g=t[5],x=t[6],E=t[8],M=t[9],S=t[10],z=t[12],_=t[13],O=t[14],I=r*y+o*p+c*v,T=i*y+u*p+l*v,N=a*y+s*p+f*v,R=r*w+o*g+c*x,A=i*w+u*g+l*x,b=a*w+s*g+f*x,P=r*E+o*M+c*S,C=i*E+u*M+l*S,L=a*E+s*M+f*S,q=r*z+o*_+c*O+h,U=i*z+u*_+l*O+d,B=a*z+s*_+f*O+m;return n[0]=I,n[1]=T,n[2]=N,n[3]=0,n[4]=R,n[5]=A,n[6]=b,n[7]=0,n[8]=P,n[9]=C,n[10]=L,n[11]=0,n[12]=q,n[13]=U,n[14]=B,n[15]=1,n},c.multiplyByMatrix3=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=t[0],d=t[1],m=t[2],y=t[3],p=t[4],v=t[5],w=t[6],g=t[7],x=t[8],E=r*h+o*d+c*m,M=i*h+u*d+l*m,S=a*h+s*d+f*m,z=r*y+o*p+c*v,_=i*y+u*p+l*v,O=a*y+s*p+f*v,I=r*w+o*g+c*x,T=i*w+u*g+l*x,N=a*w+s*g+f*x;return n[0]=E,n[1]=M,n[2]=S,n[3]=0,n[4]=z,n[5]=_,n[6]=O,n[7]=0,n[8]=I,n[9]=T,n[10]=N,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n},c.multiplyByTranslation=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=r*e[0]+i*e[4]+a*e[8]+e[12],u=r*e[1]+i*e[5]+a*e[9]+e[13],s=r*e[2]+i*e[6]+a*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=o,n[13]=u,n[14]=s,n[15]=e[15],n};var y=new e;c.multiplyByUniformScale=function(e,t,n){return y.x=t,y.y=t,y.z=t,c.multiplyByScale(e,y,n)},c.multiplyByScale=function(e,t,n){var r=t.x,i=t.y,a=t.z;return 1===r&&1===i&&1===a?c.clone(e,n):(n[0]=r*e[0],n[1]=r*e[1],n[2]=r*e[2],n[3]=0,n[4]=i*e[4],n[5]=i*e[5],n[6]=i*e[6],n[7]=0,n[8]=a*e[8],n[9]=a*e[9],n[10]=a*e[10],n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=1,n)},c.multiplyByVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=t.w,u=e[0]*r+e[4]*i+e[8]*a+e[12]*o,s=e[1]*r+e[5]*i+e[9]*a+e[13]*o,c=e[2]*r+e[6]*i+e[10]*a+e[14]*o,l=e[3]*r+e[7]*i+e[11]*a+e[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[4]*i+e[8]*a,u=e[1]*r+e[5]*i+e[9]*a,s=e[2]*r+e[6]*i+e[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[4]*i+e[8]*a+e[12],u=e[1]*r+e[5]*i+e[9]*a+e[13],s=e[2]*r+e[6]*i+e[10]*a+e[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var n=e[1],r=e[2],i=e[3],a=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=a,t[10]=e[10],t[11]=e[14],t[12]=i,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var p=new u,v=new u,w=new t,g=new t(0,0,0,1);return c.inverse=function(e,n){if(u.equalsEpsilon(c.getRotation(e,p),v,o.EPSILON7)&&t.equals(c.getRow(e,3,w),g))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;var r=e[0],i=e[4],a=e[8],l=e[12],f=e[1],h=e[5],d=e[9],m=e[13],y=e[2],x=e[6],E=e[10],M=e[14],S=e[3],z=e[7],_=e[11],O=e[15],I=E*O,T=M*_,N=x*O,R=M*z,A=x*_,b=E*z,P=y*O,C=M*S,L=y*_,q=E*S,U=y*z,B=x*S,D=I*h+R*d+A*m-(T*h+N*d+b*m),W=T*f+P*d+q*m-(I*f+C*d+L*m),F=N*f+C*h+U*m-(R*f+P*h+B*m),G=b*f+L*h+B*d-(A*f+q*h+U*d),k=T*i+N*a+b*l-(I*i+R*a+A*l),V=I*r+C*a+L*l-(T*r+P*a+q*l),Y=R*r+P*i+B*l-(N*r+C*i+U*l),j=A*r+q*i+U*a-(b*r+L*i+B*a);I=a*m,T=l*d,N=i*m,R=l*h,A=i*d,b=a*h,P=r*m,C=l*f,L=r*d,q=a*f,U=r*h,B=i*f;var H=I*z+R*_+A*O-(T*z+N*_+b*O),Z=T*S+P*_+q*O-(I*S+C*_+L*O),X=N*S+C*z+U*O-(R*S+P*z+B*O),K=b*S+L*z+B*_-(A*S+q*z+U*_),J=N*E+b*M+T*x-(A*M+I*x+R*E),Q=L*M+I*y+C*E-(P*E+q*M+T*y),$=P*x+B*M+R*y-(U*M+N*y+C*x),et=U*E+A*y+q*x-(L*x+B*E+b*y),tt=r*D+i*W+a*F+l*G;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,n[0]=D*tt,n[1]=W*tt,n[2]=F*tt,n[3]=G*tt,n[4]=k*tt,n[5]=V*tt,n[6]=Y*tt,n[7]=j*tt,n[8]=H*tt,n[9]=Z*tt,n[10]=X*tt,n[11]=K*tt,n[12]=J*tt,n[13]=Q*tt,n[14]=$*tt,n[15]=et*tt,n},c.inverseTransformation=function(e,t){var n=e[0],r=e[1],i=e[2],a=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],h=e[13],d=e[14],m=-n*f-r*h-i*d,y=-a*f-o*h-u*d,p=-s*f-c*h-l*d;return t[0]=n,t[1]=a,t[2]=s,t[3]=0,t[4]=r,t[5]=o,t[6]=c,t[7]=0,t[8]=i,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=y,t[14]=p,t[15]=1,t},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var i=function(t,n){this.normal=e.clone(t),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-e.dot(r,n);return t(a)?(e.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new e;return i.fromCartesian4=function(n,r){var o=e.fromCartesian4(n,a),u=n.w;return t(r)?(e.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(t,n){return e.dot(t.normal,n)+t.distance},i.ORIGIN_XY_PLANE=r(new i(e.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(e.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(e.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,n,r,i,a,o,u){"use strict";var s=function(e,n,r,i){this.west=t(e,0),this.south=t(n,0),this.east=t(r,0),this.north=t(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.west,n[r++]=e.south,n[r++]=e.east,n[r]=e.north},s.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new s),i.west=e[r++],i.south=e[r++],i.east=e[r++],i.north=e[r],i},s.computeWidth=function(e){var t=e.east,n=e.west;return n>t&&(t+=u.TWO_PI),t-n},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,r,i,a,o){return e=u.toRadians(t(e,0)),r=u.toRadians(t(r,0)),i=u.toRadians(t(i,0)),a=u.toRadians(t(a,0)),n(o)?(o.west=e,o.south=r,o.east=i,o.north=a,o):new s(e,r,i,a)},s.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(t)?(t.west=r,t.south=a,t.east=i,t.north=o,t):new s(r,a,i,o)},s.clone=function(e,t){return n(e)?n(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return n(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},s.northwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},s.northeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},s.southeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},s.center=function(t,r){var i=t.east,a=t.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(t.south+t.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new e(o,s)},s.intersection=function(e,t,r){var i=e.east,a=e.west,o=t.east,c=t.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var h=Math.max(e.south,t.south),d=Math.min(e.north,t.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(e,t){var n=t.longitude,r=t.latitude,i=e.west,a=e.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=e.south&&r<=e.north};var c=new e;return s.subsample=function(e,r,i,o){r=t(r,a.WGS84),i=t(i,0),n(o)||(o=[]);var l=0,f=e.north,h=e.south,d=e.east,m=e.west,y=c;y.height=i,y.longitude=m,y.latitude=f,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=h,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=0>f?f:h>0?h:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(e,y)&&(o[l]=r.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(t,r){this.center=e.clone(n(t,e.ZERO)),this.radius=n(r,0)},m=new e,y=new e,p=new e,v=new e,w=new e,g=new e,x=new e,E=new e,M=new e,S=new e,z=new e,_=new e;d.fromPoints=function(t,n){if(r(n)||(n=new d),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;for(var i=e.clone(t[0],x),a=e.clone(i,m),o=e.clone(i,y),u=e.clone(i,p),s=e.clone(i,v),c=e.clone(i,w),l=e.clone(i,g),f=t.length,h=1;f>h;h++){e.clone(t[h],i);var O=i.x,I=i.y,T=i.z;O<a.x&&e.clone(i,a),O>s.x&&e.clone(i,s),I<o.y&&e.clone(i,o),I>c.y&&e.clone(i,c),T<u.z&&e.clone(i,u),T>l.z&&e.clone(i,l)}var N=e.magnitudeSquared(e.subtract(s,a,E)),R=e.magnitudeSquared(e.subtract(c,o,E)),A=e.magnitudeSquared(e.subtract(l,u,E)),b=a,P=s,C=N;R>C&&(C=R,b=o,P=c),A>C&&(C=A,b=u,P=l);var L=M;L.x=.5*(b.x+P.x),L.y=.5*(b.y+P.y),L.z=.5*(b.z+P.z);var q=e.magnitudeSquared(e.subtract(P,L,E)),U=Math.sqrt(q),B=S;B.x=a.x,B.y=o.y,B.z=u.z;var D=z;D.x=s.x,D.y=c.y,D.z=l.z;var W=e.multiplyByScalar(e.add(B,D,E),.5,_),F=0;for(h=0;f>h;h++){e.clone(t[h],i);var G=e.magnitude(e.subtract(i,W,E));G>F&&(F=G);var k=e.magnitudeSquared(e.subtract(i,L,E));if(k>q){var V=Math.sqrt(k);U=.5*(U+V),q=U*U;var Y=V-U;L.x=(U*L.x+Y*i.x)/V,L.y=(U*L.y+Y*i.y)/V,L.z=(U*L.z+Y*i.z)/V}}return F>U?(e.clone(L,n.center),n.radius=U):(e.clone(W,n.center),n.radius=F),n};var O=new u,I=new e,T=new e,N=new t,R=new t;d.fromRectangle2D=function(e,t,n){return d.fromRectangleWithHeights2D(e,t,0,0,n)},d.fromRectangleWithHeights2D=function(t,i,a,o,u){if(r(u)||(u=new d),!r(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;i=n(i,O),h.southwest(t,N),N.height=a,h.northeast(t,R),R.height=o;var s=i.project(N,I),c=i.project(R,T),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*f,y.z=s.z+.5*m,u};var A=[];d.fromRectangle3D=function(e,t,i,a){t=n(t,o.WGS84),i=n(i,0);var u;return r(e)&&(u=h.subsample(e,t,i,A)),d.fromPoints(u,a)},d.fromVertices=function(t,i,a,o){if(r(o)||(o=new d),!r(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;i=n(i,e.ZERO),a=n(a,3);var u=x;u.x=t[0]+i.x,u.y=t[1]+i.y,u.z=t[2]+i.z;for(var s=e.clone(u,m),c=e.clone(u,y),l=e.clone(u,p),f=e.clone(u,v),h=e.clone(u,w),O=e.clone(u,g),I=t.length,T=0;I>T;T+=a){var N=t[T]+i.x,R=t[T+1]+i.y,A=t[T+2]+i.z;u.x=N,u.y=R,u.z=A,N<s.x&&e.clone(u,s),N>f.x&&e.clone(u,f),R<c.y&&e.clone(u,c),R>h.y&&e.clone(u,h),A<l.z&&e.clone(u,l),A>O.z&&e.clone(u,O)}var b=e.magnitudeSquared(e.subtract(f,s,E)),P=e.magnitudeSquared(e.subtract(h,c,E)),C=e.magnitudeSquared(e.subtract(O,l,E)),L=s,q=f,U=b;P>U&&(U=P,L=c,q=h),C>U&&(U=C,L=l,q=O);var B=M;B.x=.5*(L.x+q.x),B.y=.5*(L.y+q.y),B.z=.5*(L.z+q.z);var D=e.magnitudeSquared(e.subtract(q,B,E)),W=Math.sqrt(D),F=S;F.x=s.x,F.y=c.y,F.z=l.z;var G=z;G.x=f.x,G.y=h.y,G.z=O.z;var k=e.multiplyByScalar(e.add(F,G,E),.5,_),V=0;for(T=0;I>T;T+=a){u.x=t[T]+i.x,u.y=t[T+1]+i.y,u.z=t[T+2]+i.z;var Y=e.magnitude(e.subtract(u,k,E));Y>V&&(V=Y);var j=e.magnitudeSquared(e.subtract(u,B,E));if(j>D){var H=Math.sqrt(j);W=.5*(W+H),D=W*W;var Z=H-W;B.x=(W*B.x+Z*u.x)/H,B.y=(W*B.y+Z*u.y)/H,B.z=(W*B.z+Z*u.z)/H}}return V>W?(e.clone(B,o.center),o.radius=W):(e.clone(k,o.center),o.radius=V),o},d.fromCornerPoints=function(t,n,i){r(i)||(i=new d);var a=i.center;return e.add(t,n,a),e.multiplyByScalar(a,.5,a),i.radius=e.distance(a,n),i},d.fromEllipsoid=function(t,n){return r(n)||(n=new d),e.clone(e.ZERO,n.center),n.radius=t.maximumRadius,n};var b=new e;d.fromBoundingSpheres=function(t,n){if(r(n)||(n=new d),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;var i=t.length;if(1===i)return d.clone(t[0],n);if(2===i)return d.union(t[0],t[1],n);for(var a=[],o=0;i>o;o++)a.push(t[o].center);n=d.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,b)+c.radius)}return n.radius=s,n},d.clone=function(t,n){return r(t)?r(n)?(n.center=e.clone(t.center,n.center),n.radius=t.radius,n):new d(t.center,t.radius):void 0},d.packedLength=4,d.pack=function(e,t,r){r=n(r,0);var i=e.center;t[r++]=i.x,t[r++]=i.y,t[r++]=i.z,t[r]=e.radius},d.unpack=function(e,t,i){t=n(t,0),r(i)||(i=new d);var a=i.center;return a.x=e[t++],a.y=e[t++],a.z=e[t++],i.radius=e[t],i};var P=new e,C=new e;d.union=function(t,n,i){r(i)||(i=new d);var a=t.center,o=t.radius,u=n.center,s=n.radius,c=e.subtract(u,a,P),l=e.magnitude(c);if(o>=l+s)return t.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),h=e.multiplyByScalar(c,(-o+f)/l,C);return e.add(h,a,h),e.clone(h,i.center),i.radius=f,i};var L=new e;d.expand=function(t,n,r){r=d.clone(t,r);var i=e.magnitude(e.subtract(n,r.center,L));return i>r.radius&&(r.radius=i),r},d.intersectPlane=function(t,n){var r=t.center,i=t.radius,a=n.normal,o=e.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new e,0);d.intersect=function(e,t){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(t,q);return d.intersectPlane(e,n)},d.transform=function(e,t,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=l.getMaximumScale(t)*e.radius,n};var U=new e;d.distanceSquaredTo=function(t,n){var r=e.subtract(t.center,n,U);return e.magnitudeSquared(r)-t.radius*t.radius},d.transformWithoutScale=function(e,t,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var B=new e;d.computePlaneDistances=function(t,n,i,a){r(a)||(a=new c);var o=e.subtract(t.center,n,B),u=e.multiplyByScalar(i,e.dot(i,o),B),s=e.magnitude(u);return a.start=s-t.radius,a.stop=s+t.radius,a};for(var D=new e,W=new e,F=new e,G=new e,k=new e,V=new t,Y=new Array(8),j=0;8>j;++j)Y[j]=new e;var H=new u;return d.projectTo2D=function(t,r,i){r=n(r,H);var a=r.ellipsoid,o=t.center,u=t.radius,s=a.geodeticSurfaceNormal(o,D),c=e.cross(e.UNIT_Z,s,W);e.normalize(c,c);var l=e.cross(s,c,F);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,k),h=e.negate(c,G),m=Y,y=m[0];e.add(s,l,y),e.add(y,c,y),y=m[1],e.add(s,l,y),e.add(y,h,y),y=m[2],e.add(s,f,y),e.add(y,h,y),y=m[3],e.add(s,f,y),e.add(y,c,y),e.negate(s,s),y=m[4],e.add(s,l,y),e.add(y,c,y),y=m[5],e.add(s,l,y),e.add(y,h,y),y=m[6],e.add(s,f,y),e.add(y,h,y),y=m[7],e.add(s,f,y),e.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var w=m[v];e.add(o,w,w);var g=a.cartesianToCartographic(w,V);r.project(g,w)}i=d.fromPoints(m,i),o=i.center;var x=o.x,E=o.y,M=o.z;return o.x=M,o.y=x,o.z=E,i},d.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&t.radius===n.radius},d.prototype.intersectPlane=function(e){return d.intersectPlane(this,e)},d.prototype.intersect=function(e){return d.intersect(this,e)},d.prototype.equals=function(e){return d.equals(this,e)},d.prototype.clone=function(e){return d.clone(this,e)},d}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return t(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(e(n))return n;n=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof t[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof t[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",e(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",e(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",e(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",e(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(e){i.supportsFullscreen()&&e[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,n){"use strict";function r(e){for(var t=e.split("."),n=0,r=t.length;r>n;++n)t[n]=parseInt(t[n],10);return t}function i(){if(!t(p)){p=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(p=!0,v=r(e[1]))}return p}function a(){return i()&&v}function o(){if(!t(w)&&(w=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(w=!0,g=r(e[1]))}return w}function u(){return o()&&g}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=r(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(M)){M=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(M=!0,S=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(M=!0,S=r(e[1])))}return M}function f(){return l()&&S}function h(){if(!t(z)){z=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(z=!0,_=r(e[1]))}return z}function d(){return t(O)||(O=/Windows/i.test(navigator.appVersion)),O}function m(){return h()&&_}function y(){return t(I)||(I=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),I}var p,v,w,g,x,E,M,S,z,_,O,I,T={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return T.supportsFullscreen=function(){return n.supportsFullscreen()},T.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},T.supportsWebWorkers=function(){return"undefined"!=typeof Worker},T}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,n,r,i){"use strict";if(!r.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(e){switch(e){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},a.fromTypedArray=function(e){return e instanceof Int8Array?a.BYTE:e instanceof Uint8Array?a.UNSIGNED_BYTE:e instanceof Int16Array?a.SHORT:e instanceof Uint16Array?a.UNSIGNED_SHORT:e instanceof Float32Array?a.FLOAT:e instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(e){return t(e)&&(e===a.BYTE||e===a.UNSIGNED_BYTE||e===a.SHORT||e===a.UNSIGNED_SHORT||e===a.FLOAT||e===a.DOUBLE)},a.createTypedArray=function(e,t){switch(e){case a.BYTE:return new Int8Array(t);case a.UNSIGNED_BYTE:return new Uint8Array(t);case a.SHORT:return new Int16Array(t);case a.UNSIGNED_SHORT:return new Uint16Array(t);case a.FLOAT:return new Float32Array(t);case a.DOUBLE:return new Float64Array(t);default:throw new n("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(t,r,i,o){switch(i=e(i,0),o=e(o,(r.byteLength-i)/a.getSizeInBytes(t)),t){case a.BYTE:return new Int8Array(r,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(r,i,o);case a.SHORT:return new Int16Array(r,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(r,i,o);case a.FLOAT:return new Float32Array(r,i,o);case a.DOUBLE:return new Float64Array(r,i,o);default:throw new n("componentDatatype is not a valid value.")}},i(a)}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,n,r,i,a,o,u){"use strict";var s=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)},c=new e;s.fromAxisAngle=function(t,r,i){var a=r/2,o=Math.sin(a);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,h=Math.cos(a);return n(i)?(i.x=u,i.y=l,i.z=f,i.w=h,i):new s(u,l,f,h)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var r,i,a,o,c,h=e[u.COLUMN0ROW0],d=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],y=h+d+m;if(y>0)r=Math.sqrt(y+1),c=.5*r,r=.5/r,i=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*r,a=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*r,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*r;else{var p=l,v=0;d>h&&(v=1),m>h&&m>d&&(v=2);var w=p[v],g=p[w];r=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(w,w)]-e[u.getElementIndex(g,g)]+1);var x=f;x[v]=.5*r,r=.5/r,c=(e[u.getElementIndex(g,w)]-e[u.getElementIndex(w,g)])*r,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*r,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*r,i=-x[0],a=-x[1],o=-x[2]}return n(t)?(t.x=i,t.y=a,t.z=o,t.w=c,t):new s(i,a,o,c)};var h=new s;s.fromHeadingPitchRoll=function(t,n,r,i){var a=s.fromAxisAngle(e.UNIT_X,r,h),o=s.fromAxisAngle(e.UNIT_Y,-n,i);i=s.multiply(o,a,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,h);return s.multiply(u,i,i)};var d=new e,m=new e,y=new s,p=new s,v=new s;s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},s.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new s),i.x=e[r],i.y=e[r+1],i.z=e[r+2],i.w=e[r+3],i},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,n,r){s.unpack(e,4*n,v),s.conjugate(v,v);for(var i=0,a=n-t+1;a>i;i++){var o=3*i;s.unpack(e,4*(t+i),y),s.multiply(y,v,y),y.w<0&&s.negate(y,y),s.computeAxis(y,d);var u=s.computeAngle(y);r[o]=d.x*u,r[o+1]=d.y*u,r[o+2]=d.z*u}},s.unpackInterpolationResult=function(t,r,i,a,o){n(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(r,4*a,p),0===u?s.clone(s.IDENTITY,y):s.fromAxisAngle(m,u,y),s.multiply(y,p,o)},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var n=1/s.magnitude(e),r=e.x*n,i=e.y*n,a=e.z*n,o=e.w*n;return t.x=r,t.y=i,t.z=a,t.w=o,t},s.inverse=function(e,t){var n=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/n,t)},s.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},s.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+r*l+i*c-a*s,h=o*s-r*c+i*l+a*u,d=o*c+r*s-i*u+a*l,m=o*l-r*u-i*s-a*c;return n.x=f,n.y=h,n.z=d,n.w=m,n},s.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},s.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},s.computeAxis=function(e,t){var n=e.w;if(Math.abs(n-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var r=1/Math.sqrt(1-n*n);return t.x=e.x*r,t.y=e.y*r,t.z=e.z*r,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var w=new s;s.lerp=function(e,t,n,r){return w=s.multiplyByScalar(t,n,w),r=s.multiplyByScalar(e,1-n,r),s.add(w,r,r)};var g=new s,x=new s,E=new s;s.slerp=function(e,t,n,r){var i=s.dot(e,t),a=t;if(0>i&&(i=-i,a=g=s.negate(t,g)),1-i<o.EPSILON6)return s.lerp(e,a,n,r);var u=Math.acos(i);return x=s.multiplyByScalar(e,Math.sin((1-n)*u),x),E=s.multiplyByScalar(a,Math.sin(n*u),E),r=s.add(x,E,r),s.multiplyByScalar(r,1/Math.sin(u),r)},s.log=function(t,n){var r=o.acosClamped(t.w),i=0;return 0!==r&&(i=r/Math.sin(r)),e.multiplyByScalar(t,i,n) +},s.exp=function(t,n){var r=e.magnitude(t),i=0;return 0!==r&&(i=Math.sin(r)/r),n.x=t.x*i,n.y=t.y*i,n.z=t.z*i,n.w=Math.cos(r),n};var M=new e,S=new e,z=new s,_=new s;s.computeInnerQuadrangle=function(t,n,r,i){var a=s.conjugate(n,z);s.multiply(a,r,_);var o=s.log(_,M);s.multiply(a,t,_);var u=s.log(_,S);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,z),s.multiply(n,z,i)},s.squad=function(e,t,n,r,i,a){var o=s.slerp(e,t,i,z),u=s.slerp(n,r,i,_);return s.slerp(o,u,2*i*(1-i),a)};for(var O=new s,I=1.9011074535173003,T=i.supportsTypedArrays()?new Float32Array(8):[],N=i.supportsTypedArrays()?new Float32Array(8):[],R=i.supportsTypedArrays()?new Float32Array(8):[],A=i.supportsTypedArrays()?new Float32Array(8):[],b=0;7>b;++b){var P=b+1,C=2*P+1;T[b]=1/(P*C),N[b]=P/C}return T[7]=I/136,N[7]=8*I/17,s.fastSlerp=function(e,t,n,r){var i,a=s.dot(e,t);a>=0?i=1:(i=-1,a=-a);for(var o=a-1,u=1-n,c=n*n,l=u*u,f=7;f>=0;--f)R[f]=(T[f]*c-N[f])*o,A[f]=(T[f]*l-N[f])*o;var h=i*n*(1+R[0]*(1+R[1]*(1+R[2]*(1+R[3]*(1+R[4]*(1+R[5]*(1+R[6]*(1+R[7])))))))),d=u*(1+A[0]*(1+A[1]*(1+A[2]*(1+A[3]*(1+A[4]*(1+A[5]*(1+A[6]*(1+A[7])))))))),m=s.multiplyByScalar(e,d,O);return s.multiplyByScalar(t,h,r),s.add(m,r,r)},s.fastSquad=function(e,t,n,r,i,a){var o=s.fastSlerp(e,t,i,z),u=s.fastSlerp(n,r,i,_);return s.fastSlerp(o,u,2*i*(1-i),a)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},s.ZERO=a(new s(0,0,0,0)),s.IDENTITY=a(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/EllipseGeometryLibrary",["./Cartesian3","./Math","./Matrix3","./Quaternion"],function(e,t,n,r){"use strict";function i(t,i,a,l,f,h,d,m,y,p){var v=t+i;e.multiplyByScalar(l,Math.cos(v),o),e.multiplyByScalar(a,Math.sin(v),u),e.add(o,u,o);var w=Math.cos(t);w*=w;var g=Math.sin(t);g*=g;var x=h/Math.sqrt(d*w+f*g),E=x/m;return r.fromAxisAngle(o,E,s),n.fromQuaternion(s,c),n.multiplyByVector(c,y,p),e.normalize(p,p),e.multiplyByScalar(p,m,p),p}var a={},o=new e,u=new e,s=new r,c=new n,l=new e,f=new e,h=new e,d=new e;a.raisePositionsToHeight=function(t,n,r){for(var i=n.ellipsoid,a=n.height,o=n.extrudedHeight,u=r?2*(t.length/3):t.length/3,s=new Float64Array(3*u),c=t.length,m=r?c:0,y=0;c>y;y+=3){var p=y+1,v=y+2,w=e.fromArray(t,y,l);i.scaleToGeodeticSurface(w,w);var g=e.clone(w,f),x=i.geodeticSurfaceNormal(w,d),E=e.multiplyByScalar(x,a,h);e.add(w,E,w),r&&(e.multiplyByScalar(x,o,E),e.add(g,E,g),s[y+m]=g.x,s[p+m]=g.y,s[v+m]=g.z),s[y]=w.x,s[p]=w.y,s[v]=w.z}return s};var m=new e,y=new e,p=new e;return a.computeEllipsePositions=function(n,r,a){var o=n.semiMinorAxis,u=n.semiMajorAxis,s=n.rotation,c=n.center,d=8*n.granularity,v=o*o,w=u*u,g=u*o,x=e.magnitude(c),E=e.normalize(c,m),M=e.cross(e.UNIT_Z,c,y);M=e.normalize(M,M);var S=e.cross(E,M,p),z=1+Math.ceil(t.PI_OVER_TWO/d),_=t.PI_OVER_TWO/(z-1),O=t.PI_OVER_TWO-z*_;0>O&&(z-=Math.ceil(Math.abs(O)/_));var I,T,N,R,A,b=2*z*(z+1),P=r?new Array(3*b):void 0,C=0,L=l,q=f,U=3*(2*z+2*(z-1)),B=U-1,D=0,W=a?new Array(U):void 0;for(O=t.PI_OVER_TWO,I=0;z>I;++I){if(L=i(O,s,S,M,v,g,w,x,E,L),q=i(Math.PI-O,s,S,M,v,g,w,x,E,q),r){for(P[C++]=L.x,P[C++]=L.y,P[C++]=L.z,N=2*I+2,T=1;N-1>T;++T)R=T/(N-1),A=e.lerp(L,q,R,h),P[C++]=A.x,P[C++]=A.y,P[C++]=A.z;P[C++]=q.x,P[C++]=q.y,P[C++]=q.z}a&&(W[B--]=L.z,W[B--]=L.y,W[B--]=L.x,0!==I&&(W[D++]=q.x,W[D++]=q.y,W[D++]=q.z)),O=t.PI_OVER_TWO-(I+1)*_}for(I=z;I>0;--I){if(O=t.PI_OVER_TWO-(I-1)*_,L=i(-O,s,S,M,v,g,w,x,E,L),q=i(O+Math.PI,s,S,M,v,g,w,x,E,q),r){for(P[C++]=L.x,P[C++]=L.y,P[C++]=L.z,N=2*(I-1)+2,T=1;N-1>T;++T)R=T/(N-1),A=e.lerp(L,q,R,h),P[C++]=A.x,P[C++]=A.y,P[C++]=A.z;P[C++]=q.x,P[C++]=q.y,P[C++]=q.z}a&&(W[B--]=L.z,W[B--]=L.y,W[B--]=L.x,1!==I&&(W[D++]=q.x,W[D++]=q.y,W[D++]=q.z))}var F={};return r&&(F.positions=P,F.numPts=z),a&&(F.outerPositions=W),F},a}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,n,r,i){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,i.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,r.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(e){var r=-1;for(var i in e.attributes)if(e.attributes.hasOwnProperty(i)&&t(e.attributes[i])&&t(e.attributes[i].values)){var a=e.attributes[i],o=a.values.length/a.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(e){switch(e){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(t){return e(t)&&(t===i.UNSIGNED_BYTE||t===i.UNSIGNED_SHORT||t===i.UNSIGNED_INT)},i.createTypedArray=function(e,t){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},i.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)},n(i)}),define("Core/EllipseOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EllipseGeometryLibrary","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType"],function(e,t,n,r,i,a,o,u,s,c,l,f,h,d){"use strict";function m(r){var i=r.center;v=t.multiplyByScalar(r.ellipsoid.geodeticSurfaceNormal(i,v),r.height,v),v=t.add(i,v,v);for(var a=new e(v,r.semiMajorAxis),u=o.computeEllipsePositions(r,!1,!0).outerPositions,s=new l({position:new c({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:o.raisePositionsToHeight(u,r,!1)})}),h=u.length/3,d=f.createTypedArray(h,2*h),m=0,y=0;h>y;++y)d[m++]=y,d[m++]=(y+1)%h;return{boundingSphere:a,attributes:s,indices:d}}function y(i){var a=r(i.numberOfVerticalLines,16);a=Math.max(a,0);var u=i.center,s=i.ellipsoid,h=i.semiMajorAxis,d=t.multiplyByScalar(s.geodeticSurfaceNormal(u,p),i.height,p);w.center=t.add(u,d,w.center),w.radius=h,d=t.multiplyByScalar(s.geodeticSurfaceNormal(u,d),i.extrudedHeight,d),g.center=t.add(u,d,g.center),g.radius=h;var m=o.computeEllipsePositions(i,!1,!0).outerPositions,y=new l({position:new c({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:o.raisePositionsToHeight(m,i,!0)})});m=y.position.values;var v=e.union(w,g),x=m.length/3,E=f.createTypedArray(x,2*x+2*a);x/=2;var M,S=0;for(M=0;x>M;++M)E[S++]=M,E[S++]=(M+1)%x,E[S++]=M+x,E[S++]=(M+1)%x+x;var z;if(a>0){var _=Math.min(a,x);z=Math.round(x/_)}var O=Math.min(z*a,x);if(a>0)for(M=0;O>M;M+=z)E[S++]=M,E[S++]=M+x;return{boundingSphere:v,attributes:y,indices:E}}var p=new t,v=new t,w=new e,g=new e,x=function(e){e=r(e,r.EMPTY_OBJECT);var n=e.center,a=r(e.ellipsoid,u.WGS84),o=e.semiMajorAxis,s=e.semiMinorAxis,c=r(e.granularity,h.RADIANS_PER_DEGREE),l=r(e.height,0),f=e.extrudedHeight,d=i(f)&&Math.abs(l-f)>1;this._center=t.clone(n),this._semiMajorAxis=o,this._semiMinorAxis=s,this._ellipsoid=u.clone(a),this._rotation=r(e.rotation,0),this._height=l,this._granularity=c,this._extrudedHeight=f,this._extrude=d,this._numberOfVerticalLines=Math.max(r(e.numberOfVerticalLines,16),0),this._workerName="createEllipseOutlineGeometry"};x.packedLength=t.packedLength+u.packedLength+9,x.pack=function(e,n,a){a=r(a,0),t.pack(e._center,n,a),a+=t.packedLength,u.pack(e._ellipsoid,n,a),a+=u.packedLength,n[a++]=e._semiMajorAxis,n[a++]=e._semiMinorAxis,n[a++]=e._rotation,n[a++]=e._height,n[a++]=e._granularity,n[a++]=i(e._extrudedHeight)?1:0,n[a++]=r(e._extrudedHeight,0),n[a++]=e._extrude?1:0,n[a]=e._numberOfVerticalLines};var E=new t,M=new u,S={center:E,ellipsoid:M,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0};return x.unpack=function(e,n,a){n=r(n,0);var o=t.unpack(e,n,E);n+=t.packedLength;var s=u.unpack(e,n,M);n+=u.packedLength;var c=e[n++],l=e[n++],f=e[n++],h=e[n++],d=e[n++],m=e[n++],y=e[n++],p=1===e[n++],v=e[n];return i(a)?(a._center=t.clone(o,a._center),a._ellipsoid=u.clone(s,a._ellipsoid),a._semiMajorAxis=c,a._semiMinorAxis=l,a._rotation=f,a._height=h,a._granularity=d,a._extrudedHeight=m?y:void 0,a._extrude=p,a._numberOfVerticalLines=v,a):(S.height=h,S.extrudedHeight=m?y:void 0,S.granularity=d,S.rotation=f,S.semiMajorAxis=c,S.semiMinorAxis=l,S.numberOfVerticalLines=v,new x(S))},x.createGeometry=function(e){e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);var t,n={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:e._height,extrudedHeight:e._extrudedHeight,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines};return e._extrude?(n.extrudedHeight=Math.min(e._extrudedHeight,e._height),n.height=Math.max(e._extrudedHeight,e._height),t=y(n)):t=m(n),new s({attributes:t.attributes,indices:t.indices,primitiveType:d.LINES,boundingSphere:t.boundingSphere})},x}),define("Workers/createEllipseOutlineGeometry",["../Core/Cartesian3","../Core/defined","../Core/EllipseOutlineGeometry","../Core/Ellipsoid"],function(e,t,n,r){"use strict";function i(i,a){return t(a)&&(i=n.unpack(i,a)),i._center=e.clone(i._center),i._ellipsoid=r.clone(i._ellipsoid),n.createGeometry(i)}return i})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createEllipsoidGeometry.js b/libs/Cesium/Workers/createEllipsoidGeometry.js new file mode 100644 index 0000000000..ae3819bae8 --- /dev/null +++ b/libs/Cesium/Workers/createEllipsoidGeometry.js @@ -0,0 +1,60 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var t=function(t){return void 0!==t};return t}),define("Core/freezeObject",["./defined"],function(t){"use strict";var e=Object.freeze;return t(e)||(e=function(t){return t}),e}),define("Core/defaultValue",["./freezeObject"],function(t){"use strict";var e=function(t,e){return void 0!==t?t:e};return e.EMPTY_OBJECT=t({}),e}),define("Core/DeveloperError",["./defined"],function(t){"use strict";var e=function(t){this.name="DeveloperError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e.throwInstantiationError=function(){throw new e("This function defines an interface and should not be called directly.")},e}),define("ThirdParty/mersenne-twister",[],function(){var t=function(t){void 0==t&&(t=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(t)};return t.prototype.init_genrand=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&t)>>>16)<<16)+1812433253*(65535&t)+this.mti,this.mt[this.mti]>>>=0}},t.prototype.genrand_int32=function(){var t,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^t>>>1^e[1&t];for(;n<this.N-1;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^t>>>1^e[1&t];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^e[1&t],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=2636928640&t<<7,t^=4022730752&t<<15,t^=t>>>18,t>>>0},t.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},t}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(t,e){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(t){return t>0?1:0>t?-1:0},n.signNotZero=function(t){return 0>t?-1:1},n.toSNorm=function(t){return Math.round(255*(.5*n.clamp(t,-1,1)+.5))},n.fromSNorm=function(t){return 2*(n.clamp(t,0,255)/255)-1},n.sinh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e-n)},n.cosh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e+n)},n.lerp=function(t,e,n){return(1-n)*t+n*e},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(t){return t*n.RADIANS_PER_DEGREE},n.toDegrees=function(t){return t*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(t){var e=n.TWO_PI,r=t-Math.floor(t/e)*e;return r<-Math.PI?r+e:r>=Math.PI?r-e:r},n.negativePiToPi=function(t){return n.zeroToTwoPi(t+n.PI)-n.PI},n.zeroToTwoPi=function(t){var e=n.mod(t,n.TWO_PI);return Math.abs(e)<n.EPSILON14&&Math.abs(t)>n.EPSILON14?n.TWO_PI:e},n.mod=function(t,e){return(t%e+e)%e},n.equalsEpsilon=function(t,n,r,i){i=e(i,r);var a=Math.abs(t-n);return i>=a||a<=r*Math.max(Math.abs(t),Math.abs(n))};var r=[1];n.factorial=function(t){var e=r.length;if(t>=e)for(var n=r[e-1],i=e;t>=i;i++)r.push(n*i);return r[t]},n.incrementWrap=function(t,n,r){return r=e(r,0),++t,t>n&&(t=r),t},n.isPowerOfTwo=function(t){return 0!==t&&0===(t&t-1)},n.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t},n.clamp=function(t,e,n){return e>t?e:t>n?n:t};var i=new t;return n.setRandomNumberSeed=function(e){i=new t(e)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(t){return Math.acos(n.clamp(t,-1,1))},n.asinClamped=function(t){return Math.asin(n.clamp(t,-1,1))},n.chordLength=function(t,e){return 2*e*Math.sin(.5*t)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0)};a.fromSpherical=function(n,r){e(r)||(r=new a);var i=n.clock,o=n.cone,u=t(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(t,n,r,i){return e(i)?(i.x=t,i.y=n,i.z=r,i):new a(t,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n):new a(t.x,t.y,t.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r]=e.z},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){a.normalize(t,s),a.normalize(e,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Z,e):n.y<=n.z?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_Z,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)},a.cross=function(t,e,n){var r=t.x,i=t.y,a=t.z,o=e.x,u=e.y,s=e.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(t,e,n,r,o){var u=i.toRadians(t),s=i.toRadians(e);return a.fromRadians(u,s,n,r,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=t(i,0);var s=e(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),e(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o++)r[o]=i.toRadians(t[o]);return a.fromRadiansArray(r,e,n)},a.fromRadiansArray=function(t,n,r){var i=t.length;e(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=t[o],s=t[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o+=3)r[o]=i.toRadians(t[o]),r[o+1]=i.toRadians(t[o+1]),r[o+2]=t[o+2];return a.fromRadiansArrayHeights(r,e,n)},a.fromRadiansArrayHeights=function(t,n,r){var i=t.length;e(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=t[o],s=t[o+1],c=t[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.longitude=t(e,0),this.latitude=t(n,0),this.height=t(r,0)};return a.fromRadians=function(n,r,i,o){return i=t(i,0),e(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(t,e,n,r){return t=i.toRadians(t),e=i.toRadians(e),a.fromRadians(t,e,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.longitude=t.longitude,n.latitude=t.latitude,n.height=t.height,n):new a(t.longitude,t.latitude,t.height):void 0},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.longitude===n.longitude&&t.latitude===n.latitude&&t.height===n.height},a.equalsEpsilon=function(t,n,r){return t===n||e(t)&&e(n)&&Math.abs(t.longitude-n.longitude)<=r&&Math.abs(t.latitude-n.latitude)<=r&&Math.abs(t.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e){return a.equalsEpsilon(this,t,e)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(t){"use strict";var e={},n=function(n,r){t(e[n])||(e[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(t){"use strict";var e=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(t){return!1}}(),n=Object.defineProperties;return e&&t(n)||(n=function(t){return t}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";function s(e,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),e._radii=new t(r,i,a),e._radiiSquared=new t(r*r,i*i,a*a),e._radiiToTheFourth=new t(r*r*r*r,i*i*i*i,a*a*a*a),e._oneOverRadii=new t(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),e._oneOverRadiiSquared=new t(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),e._minimumRadius=Math.min(r,i,a),e._maximumRadius=Math.max(r,i,a),e._centerToleranceSquared=u.EPSILON1}var c=function(t,e,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,t,e,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(e,n){if(!r(e))return void 0;var i=e._radii;return r(n)?(t.clone(i,n._radii),t.clone(e._radiiSquared,n._radiiSquared),t.clone(e._radiiToTheFourth,n._radiiToTheFourth),t.clone(e._oneOverRadii,n._oneOverRadii),t.clone(e._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=e._minimumRadius,n._maximumRadius=e._maximumRadius,n._centerToleranceSquared=e._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(t,e){return r(e)||(e=new c),r(t)?(s(e,t.x,t.y,t.z),e):e},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(t){return c.clone(this,t)},c.packedLength=t.packedLength,c.pack=function(e,r,i){i=n(i,0),t.pack(e._radii,r,i)},c.unpack=function(e,r,i){r=n(r,0);var a=t.unpack(e,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=t.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(e,n){var i=e.longitude,a=e.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new t),n.x=u,n.y=s,n.z=c,t.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(e,n){return r(n)||(n=new t),n=t.multiplyComponents(e,this._oneOverRadiiSquared,n),t.normalize(n,n)};var l=new t,f=new t;c.prototype.cartographicToCartesian=function(e,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(e,i),t.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(t.dot(i,a));return t.divideByScalar(a,o,a),t.multiplyByScalar(i,e.height,i),r(n)||(n=new t),t.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;i++)e[i]=this.cartographicToCartesian(t[i],e[i]);return e};var h=new t,d=new t,m=new t;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,d);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=t.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(t.dot(s,n))*t.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new e(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;++i)e[i]=this.cartesianToCartographic(t[i],e[i]);return e};var y=new t,p=new t;return c.prototype.scaleToGeodeticSurface=function(e,n){var i=e.x,a=e.y,o=e.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,m=o*o*f*f,v=h+d+m,w=Math.sqrt(1/v),E=t.multiplyByScalar(e,w,y);if(v<this._centerToleranceSquared)return isFinite(w)?t.clone(E,n):void 0;var x=this._oneOverRadiiSquared,g=x.x,S=x.y,M=x.z,O=p;O.x=2*E.x*g,O.y=2*E.y*S,O.z=2*E.z*M;var z,_,T,I,N,R,b,P,A,C,L,q=(1-w)*t.magnitude(e)/(.5*t.magnitude(O)),U=0;do{q-=U,T=1/(1+q*g),I=1/(1+q*S),N=1/(1+q*M),R=T*T,b=I*I,P=N*N,A=R*T,C=b*I,L=P*N,z=h*R+d*b+m*P-1,_=h*A*g+d*C*S+m*L*M;var D=-2*_;U=z/D}while(Math.abs(z)>u.EPSILON12);return r(n)?(n.x=i*T,n.y=a*I,n.z=o*N,n):new t(i*T,a*I,o*N)},c.prototype.scaleToGeocentricSurface=function(e,n){r(n)||(n=new t);var i=e.x,a=e.y,o=e.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return t.multiplyByScalar(e,s,n)},c.prototype.transformPositionToScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._radii,n)},c.prototype.equals=function(e){return this===e||r(e)&&t.equals(this._radii,e._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(t,e,n,r,i,a,o){"use strict";var u=function(t){this._ellipsoid=n(t,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(e,n){var i=this._semimajorAxis,a=e.longitude*i,o=e.latitude*i,u=e.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new t(a,o,u)},u.prototype.unproject=function(t,n){var i=this._oneOverSemimajorAxis,a=t.x*i,o=t.y*i,u=t.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new e(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(t){"use strict";var e={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return t(e)}),define("Core/Interval",["./defaultValue"],function(t){"use strict";var e=function(e,n){this.start=t(e,0),this.stop=t(n,0)};return e}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)};a.fromElements=function(t,n,r,i,o){return e(o)?(o.x=t,o.y=n,o.z=r,o.w=i,o):new a(t,n,r,i)},a.fromColor=function(t,n){return e(n)?(n.x=t.red,n.y=t.green,n.z=t.blue,n.w=t.alpha,n):new a(t.red,t.green,t.blue,t.alpha)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n.w=t.w,n):new a(t.x,t.y,t.z,t.w):void 0},a.packedLength=4,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z,t.w)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z,t.w)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n.w=Math.min(t.w,e.w),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n.w=Math.max(t.w,e.w),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e.w=t.w/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z+t.w*e.w},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n.w=t.w*e.w,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n.w=t.w+e.w,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n.w=t.w-e.w,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n.w=t.w*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n.w=t.w/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e.w=-t.w,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e.w=Math.abs(t.w),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,s);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z&&t.w===n.w},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]&&t.w===e[n+3]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)&&i.equalsEpsilon(t.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a){"use strict";function o(t){for(var e=0,n=0;9>n;++n){var r=t[n];e+=r*r}return Math.sqrt(e)}function u(t){for(var e=0,n=0;3>n;++n){var r=t[c.getElementIndex(d[n],h[n])];e+=2*r*r}return Math.sqrt(e)}function s(t,e){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(t[c.getElementIndex(d[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=h[i],m=d[i];if(Math.abs(t[c.getElementIndex(m,f)])>n){var y,p=t[c.getElementIndex(m,m)],v=t[c.getElementIndex(f,f)],w=t[c.getElementIndex(m,f)],E=(p-v)/2/w;y=0>E?-1/(-E+Math.sqrt(1+E*E)):1/(E+Math.sqrt(1+E*E)),s=1/Math.sqrt(1+y*y),l=y*s}return e=c.clone(c.IDENTITY,e),e[c.getElementIndex(f,f)]=e[c.getElementIndex(m,m)]=s,e[c.getElementIndex(m,f)]=l,e[c.getElementIndex(f,m)]=-l,e}var c=function(t,n,r,i,a,o,u,s,c){this[0]=e(t,0),this[1]=e(i,0),this[2]=e(u,0),this[3]=e(n,0),this[4]=e(a,0),this[5]=e(s,0),this[6]=e(r,0),this[7]=e(o,0),this[8]=e(c,0)};c.packedLength=9,c.pack=function(t,n,r){r=e(r,0),n[r++]=t[0],n[r++]=t[1],n[r++]=t[2],n[r++]=t[3],n[r++]=t[4],n[r++]=t[5],n[r++]=t[6],n[r++]=t[7],n[r++]=t[8]},c.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r++],i[1]=t[r++],i[2]=t[r++],i[3]=t[r++],i[4]=t[r++],i[5]=t[r++],i[6]=t[r++],i[7]=t[r++],i[8]=t[r++],i},c.clone=function(t,e){return n(t)?n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):new c(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]):void 0},c.fromArray=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r],i[1]=t[r+1],i[2]=t[r+2],i[3]=t[r+3],i[4]=t[r+4],i[5]=t[r+5],i[6]=t[r+6],i[7]=t[r+7],i[8]=t[r+8],i},c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},c.fromQuaternion=function(t,e){var r=t.x*t.x,i=t.x*t.y,a=t.x*t.z,o=t.x*t.w,u=t.y*t.y,s=t.y*t.z,l=t.y*t.w,f=t.z*t.z,h=t.z*t.w,d=t.w*t.w,m=r-u-f+d,y=2*(i-h),p=2*(a+l),v=2*(i+h),w=-r+u-f+d,E=2*(s-o),x=2*(a-l),g=2*(s+o),S=-r-u+f+d;return n(e)?(e[0]=m,e[1]=v,e[2]=x,e[3]=y,e[4]=w,e[5]=g,e[6]=p,e[7]=E,e[8]=S,e):new c(m,y,p,v,w,E,x,g,S)},c.fromScale=function(t,e){return n(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=t.y,e[5]=0,e[6]=0,e[7]=0,e[8]=t.z,e):new c(t.x,0,0,0,t.y,0,0,0,t.z)},c.fromUniformScale=function(t,e){return n(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=t,e[5]=0,e[6]=0,e[7]=0,e[8]=t,e):new c(t,0,0,0,t,0,0,0,t)},c.fromCrossProduct=function(t,e){return n(e)?(e[0]=0,e[1]=t.z,e[2]=-t.y,e[3]=-t.z,e[4]=0,e[5]=t.x,e[6]=t.y,e[7]=-t.x,e[8]=0,e):new c(0,-t.z,t.y,t.z,0,-t.x,-t.y,t.x,0)},c.fromRotationX=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=r,e[5]=i,e[6]=0,e[7]=-i,e[8]=r,e):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=0,e[2]=-i,e[3]=0,e[4]=1,e[5]=0,e[6]=i,e[7]=0,e[8]=r,e):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=i,e[2]=0,e[3]=-i,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8]]},c.getElementIndex=function(t,e){return 3*t+e},c.getColumn=function(t,e,n){var r=3*e,i=t[r],a=t[r+1],o=t[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=3*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(t,e,n){var r=t[e],i=t[e+3],a=t[e+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+3]=n.y,r[e+6]=n.z,r};var l=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],l)),n.y=t.magnitude(t.fromElements(e[3],e[4],e[5],l)),n.z=t.magnitude(t.fromElements(e[6],e[7],e[8],l)),n};var f=new t;c.getMaximumScale=function(e){return c.getScale(e,f),t.maximumComponent(f)},c.multiply=function(t,e,n){var r=t[0]*e[0]+t[3]*e[1]+t[6]*e[2],i=t[1]*e[0]+t[4]*e[1]+t[7]*e[2],a=t[2]*e[0]+t[5]*e[1]+t[8]*e[2],o=t[0]*e[3]+t[3]*e[4]+t[6]*e[5],u=t[1]*e[3]+t[4]*e[4]+t[7]*e[5],s=t[2]*e[3]+t[5]*e[4]+t[8]*e[5],c=t[0]*e[6]+t[3]*e[7]+t[6]*e[8],l=t[1]*e[6]+t[4]*e[7]+t[7]*e[8],f=t[2]*e[6]+t[5]*e[7]+t[8]*e[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[3]*i+t[6]*a,u=t[1]*r+t[4]*i+t[7]*a,s=t[2]*r+t[5]*i+t[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n},c.multiplyByScale=function(t,e,n){return n[0]=t[0]*e.x,n[1]=t[1]*e.x,n[2]=t[2]*e.x,n[3]=t[3]*e.y,n[4]=t[4]*e.y,n[5]=t[5]*e.y,n[6]=t[6]*e.z,n[7]=t[7]*e.z,n[8]=t[8]*e.z,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e},c.transpose=function(t,e){var n=t[0],r=t[3],i=t[6],a=t[1],o=t[4],u=t[7],s=t[2],c=t[5],l=t[8];return e[0]=n,e[1]=r,e[2]=i,e[3]=a,e[4]=o,e[5]=u,e[6]=s,e[7]=c,e[8]=l,e};var h=[1,0,0],d=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(t,e){var r=a.EPSILON20,i=10,l=0,f=0;n(e)||(e={});for(var h=e.unitary=c.clone(c.IDENTITY,e.unitary),d=e.diagonal=c.clone(t,e.diagonal),p=r*o(d);i>f&&u(d)>p;)s(d,m),c.transpose(m,y),c.multiply(d,m,d),c.multiply(y,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e},c.determinant=function(t){var e=t[0],n=t[3],r=t[6],i=t[1],a=t[4],o=t[7],u=t[2],s=t[5],c=t[8];return e*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(t,e){var n=t[0],i=t[1],o=t[2],u=t[3],s=t[4],l=t[5],f=t[6],h=t[7],d=t[8],m=c.determinant(t);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");e[0]=s*d-h*l,e[1]=h*o-i*d,e[2]=i*l-s*o,e[3]=f*l-u*d,e[4]=n*d-f*o,e[5]=u*o-n*l,e[6]=u*h-f*s,e[7]=f*i-n*h,e[8]=n*s-u*i;var y=1/m;return c.multiplyByScalar(e,y,e)},c.equals=function(t,e){return t===e||n(t)&&n(e)&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]},c.equalsEpsilon=function(t,e,r){return t===e||n(t)&&n(e)&&Math.abs(t[0]-e[0])<=r&&Math.abs(t[1]-e[1])<=r&&Math.abs(t[2]-e[2])<=r&&Math.abs(t[3]-e[3])<=r&&Math.abs(t[4]-e[4])<=r&&Math.abs(t[5]-e[5])<=r&&Math.abs(t[6]-e[6])<=r&&Math.abs(t[7]-e[7])<=r&&Math.abs(t[8]-e[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(t){"use strict";var e=function(t){this.name="RuntimeError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(t,e,n,r,i,a,o,u,s){"use strict";var c=function(t,e,r,i,a,o,u,s,c,l,f,h,d,m,y,p){this[0]=n(t,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(e,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(y,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(p,0)};c.packedLength=16,c.pack=function(t,e,r){r=n(r,0),e[r++]=t[0],e[r++]=t[1],e[r++]=t[2],e[r++]=t[3],e[r++]=t[4],e[r++]=t[5],e[r++]=t[6],e[r++]=t[7],e[r++]=t[8],e[r++]=t[9],e[r++]=t[10],e[r++]=t[11],e[r++]=t[12],e[r++]=t[13],e[r++]=t[14],e[r]=t[15]},c.unpack=function(t,e,i){return e=n(e,0),r(i)||(i=new c),i[0]=t[e++],i[1]=t[e++],i[2]=t[e++],i[3]=t[e++],i[4]=t[e++],i[5]=t[e++],i[6]=t[e++],i[7]=t[e++],i[8]=t[e++],i[9]=t[e++],i[10]=t[e++],i[11]=t[e++],i[12]=t[e++],i[13]=t[e++],i[14]=t[e++],i[15]=t[e],i},c.clone=function(t,e){return r(t)?r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):new c(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},c.fromRotationTranslation=function(e,i,a){return i=n(i,t.ZERO),r(a)?(a[0]=e[0],a[1]=e[1],a[2]=e[2],a[3]=0,a[4]=e[3],a[5]=e[4],a[6]=e[5],a[7]=0,a[8]=e[6],a[9]=e[7],a[10]=e[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(e[0],e[3],e[6],i.x,e[1],e[4],e[7],i.y,e[2],e[5],e[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(t,e,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=e.x*e.x,l=e.x*e.y,f=e.x*e.z,h=e.x*e.w,d=e.y*e.y,m=e.y*e.z,y=e.y*e.w,p=e.z*e.z,v=e.z*e.w,w=e.w*e.w,E=s-d-p+w,x=2*(l-v),g=2*(f+y),S=2*(l+v),M=-s+d-p+w,O=2*(m-h),z=2*(f-y),_=2*(m+h),T=-s-d+p+w;return i[0]=E*a,i[1]=S*a,i[2]=z*a,i[3]=0,i[4]=x*o,i[5]=M*o,i[6]=_*o,i[7]=0,i[8]=g*u,i[9]=O*u,i[10]=T*u,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,i},c.fromTranslation=function(t,e){return c.fromRotationTranslation(u.IDENTITY,t,e)},c.fromScale=function(t,e){return r(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t.y,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t.z,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t.x,0,0,0,0,t.y,0,0,0,0,t.z,0,0,0,0,1)},c.fromUniformScale=function(t,e){return r(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t,0,0,0,0,t,0,0,0,0,t,0,0,0,0,1)};var l=new t,f=new t,h=new t;c.fromCamera=function(e,n){var i=e.eye,a=e.target,o=e.up;t.normalize(t.subtract(a,i,l),l),t.normalize(t.cross(l,o,f),f),t.normalize(t.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,y=l.y,p=l.z,v=h.x,w=h.y,E=h.z,x=i.x,g=i.y,S=i.z,M=u*-x+s*-g+d*-S,O=v*-x+w*-g+E*-S,z=m*x+y*g+p*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=w,n[6]=-y,n[7]=0,n[8]=d,n[9]=E,n[10]=-p,n[11]=0,n[12]=M,n[13]=O,n[14]=z,n[15]=1,n):new c(u,s,d,M,v,w,E,O,-m,-y,-p,z,0,0,0,1)},c.computePerspectiveFieldOfView=function(t,e,n,r,i){var a=Math.tan(.5*t),o=1/a,u=o/e,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(t,e,n,r,i,a,o){var u=1/(e-t),s=1/(r-n),c=1/(a-i),l=-(e+t)*u,f=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o +},c.computePerspectiveOffCenter=function(t,e,n,r,i,a,o){var u=2*i/(e-t),s=2*i/(r-n),c=(e+t)/(e-t),l=(r+n)/(r-n),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(t,e,n,r,i,a){var o=2*i/(e-t),u=2*i/(r-n),s=(e+t)/(e-t),c=(r+n)/(r-n),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(t,e,r,i){t=n(t,n.EMPTY_OBJECT);var a=n(t.x,0),o=n(t.y,0),u=n(t.width,0),s=n(t.height,0);e=n(e,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-e),h=c,d=l,m=f,y=a+c,p=o+l,v=e+f,w=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=y,i[13]=p,i[14]=v,i[15]=w,i},c.toArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},c.getElementIndex=function(t,e){return 4*t+e},c.getColumn=function(t,e,n){var r=4*e,i=t[r],a=t[r+1],o=t[r+2],u=t[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=4*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(t,e,n){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=t[15],n},c.getRow=function(t,e,n){var r=t[e],i=t[e+4],a=t[e+8],o=t[e+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+4]=n.y,r[e+8]=n.z,r[e+12]=n.w,r};var d=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],d)),n.y=t.magnitude(t.fromElements(e[4],e[5],e[6],d)),n.z=t.magnitude(t.fromElements(e[8],e[9],e[10],d)),n};var m=new t;c.getMaximumScale=function(e){return c.getScale(e,m),t.maximumComponent(m)},c.multiply=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[3],u=t[4],s=t[5],c=t[6],l=t[7],f=t[8],h=t[9],d=t[10],m=t[11],y=t[12],p=t[13],v=t[14],w=t[15],E=e[0],x=e[1],g=e[2],S=e[3],M=e[4],O=e[5],z=e[6],_=e[7],T=e[8],I=e[9],N=e[10],R=e[11],b=e[12],P=e[13],A=e[14],C=e[15],L=r*E+u*x+f*g+y*S,q=i*E+s*x+h*g+p*S,U=a*E+c*x+d*g+v*S,D=o*E+l*x+m*g+w*S,B=r*M+u*O+f*z+y*_,F=i*M+s*O+h*z+p*_,W=a*M+c*O+d*z+v*_,k=o*M+l*O+m*z+w*_,G=r*T+u*I+f*N+y*R,V=i*T+s*I+h*N+p*R,Y=a*T+c*I+d*N+v*R,j=o*T+l*I+m*N+w*R,Z=r*b+u*P+f*A+y*C,H=i*b+s*P+h*A+p*C,X=a*b+c*P+d*A+v*C,K=o*b+l*P+m*A+w*C;return n[0]=L,n[1]=q,n[2]=U,n[3]=D,n[4]=B,n[5]=F,n[6]=W,n[7]=k,n[8]=G,n[9]=V,n[10]=Y,n[11]=j,n[12]=Z,n[13]=H,n[14]=X,n[15]=K,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n[9]=t[9]+e[9],n[10]=t[10]+e[10],n[11]=t[11]+e[11],n[12]=t[12]+e[12],n[13]=t[13]+e[13],n[14]=t[14]+e[14],n[15]=t[15]+e[15],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n[9]=t[9]-e[9],n[10]=t[10]-e[10],n[11]=t[11]-e[11],n[12]=t[12]-e[12],n[13]=t[13]-e[13],n[14]=t[14]-e[14],n[15]=t[15]-e[15],n},c.multiplyTransformation=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=t[12],d=t[13],m=t[14],y=e[0],p=e[1],v=e[2],w=e[4],E=e[5],x=e[6],g=e[8],S=e[9],M=e[10],O=e[12],z=e[13],_=e[14],T=r*y+o*p+c*v,I=i*y+u*p+l*v,N=a*y+s*p+f*v,R=r*w+o*E+c*x,b=i*w+u*E+l*x,P=a*w+s*E+f*x,A=r*g+o*S+c*M,C=i*g+u*S+l*M,L=a*g+s*S+f*M,q=r*O+o*z+c*_+h,U=i*O+u*z+l*_+d,D=a*O+s*z+f*_+m;return n[0]=T,n[1]=I,n[2]=N,n[3]=0,n[4]=R,n[5]=b,n[6]=P,n[7]=0,n[8]=A,n[9]=C,n[10]=L,n[11]=0,n[12]=q,n[13]=U,n[14]=D,n[15]=1,n},c.multiplyByMatrix3=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=e[0],d=e[1],m=e[2],y=e[3],p=e[4],v=e[5],w=e[6],E=e[7],x=e[8],g=r*h+o*d+c*m,S=i*h+u*d+l*m,M=a*h+s*d+f*m,O=r*y+o*p+c*v,z=i*y+u*p+l*v,_=a*y+s*p+f*v,T=r*w+o*E+c*x,I=i*w+u*E+l*x,N=a*w+s*E+f*x;return n[0]=g,n[1]=S,n[2]=M,n[3]=0,n[4]=O,n[5]=z,n[6]=_,n[7]=0,n[8]=T,n[9]=I,n[10]=N,n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n},c.multiplyByTranslation=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=r*t[0]+i*t[4]+a*t[8]+t[12],u=r*t[1]+i*t[5]+a*t[9]+t[13],s=r*t[2]+i*t[6]+a*t[10]+t[14];return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=o,n[13]=u,n[14]=s,n[15]=t[15],n};var y=new t;c.multiplyByUniformScale=function(t,e,n){return y.x=e,y.y=e,y.z=e,c.multiplyByScale(t,y,n)},c.multiplyByScale=function(t,e,n){var r=e.x,i=e.y,a=e.z;return 1===r&&1===i&&1===a?c.clone(t,n):(n[0]=r*t[0],n[1]=r*t[1],n[2]=r*t[2],n[3]=0,n[4]=i*t[4],n[5]=i*t[5],n[6]=i*t[6],n[7]=0,n[8]=a*t[8],n[9]=a*t[9],n[10]=a*t[10],n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=1,n)},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t[0]*r+t[4]*i+t[8]*a+t[12]*o,s=t[1]*r+t[5]*i+t[9]*a+t[13]*o,c=t[2]*r+t[6]*i+t[10]*a+t[14]*o,l=t[3]*r+t[7]*i+t[11]*a+t[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a,u=t[1]*r+t[5]*i+t[9]*a,s=t[2]*r+t[6]*i+t[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a+t[12],u=t[1]*r+t[5]*i+t[9]*a+t[13],s=t[2]*r+t[6]*i+t[10]*a+t[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n[9]=t[9]*e,n[10]=t[10]*e,n[11]=t[11]*e,n[12]=t[12]*e,n[13]=t[13]*e,n[14]=t[14]*e,n[15]=t[15]*e,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e[11]=-t[11],e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=-t[15],e},c.transpose=function(t,e){var n=t[1],r=t[2],i=t[3],a=t[6],o=t[7],u=t[11];return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[10]=t[10],e[11]=t[14],e[12]=i,e[13]=o,e[14]=u,e[15]=t[15],e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e[9]=Math.abs(t[9]),e[10]=Math.abs(t[10]),e[11]=Math.abs(t[11]),e[12]=Math.abs(t[12]),e[13]=Math.abs(t[13]),e[14]=Math.abs(t[14]),e[15]=Math.abs(t[15]),e},c.equals=function(t,e){return t===e||r(t)&&r(e)&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[3]===e[3]&&t[7]===e[7]&&t[11]===e[11]&&t[15]===e[15]},c.equalsEpsilon=function(t,e,n){return t===e||r(t)&&r(e)&&Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n&&Math.abs(t[4]-e[4])<=n&&Math.abs(t[5]-e[5])<=n&&Math.abs(t[6]-e[6])<=n&&Math.abs(t[7]-e[7])<=n&&Math.abs(t[8]-e[8])<=n&&Math.abs(t[9]-e[9])<=n&&Math.abs(t[10]-e[10])<=n&&Math.abs(t[11]-e[11])<=n&&Math.abs(t[12]-e[12])<=n&&Math.abs(t[13]-e[13])<=n&&Math.abs(t[14]-e[14])<=n&&Math.abs(t[15]-e[15])<=n},c.getTranslation=function(t,e){return e.x=t[12],e.y=t[13],e.z=t[14],e},c.getRotation=function(t,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e};var p=new u,v=new u,w=new e,E=new e(0,0,0,1);return c.inverse=function(t,n){if(u.equalsEpsilon(c.getRotation(t,p),v,o.EPSILON7)&&e.equals(c.getRow(t,3,w),E))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-t[12],n[13]=-t[13],n[14]=-t[14],n[15]=1,n;var r=t[0],i=t[4],a=t[8],l=t[12],f=t[1],h=t[5],d=t[9],m=t[13],y=t[2],x=t[6],g=t[10],S=t[14],M=t[3],O=t[7],z=t[11],_=t[15],T=g*_,I=S*z,N=x*_,R=S*O,b=x*z,P=g*O,A=y*_,C=S*M,L=y*z,q=g*M,U=y*O,D=x*M,B=T*h+R*d+b*m-(I*h+N*d+P*m),F=I*f+A*d+q*m-(T*f+C*d+L*m),W=N*f+C*h+U*m-(R*f+A*h+D*m),k=P*f+L*h+D*d-(b*f+q*h+U*d),G=I*i+N*a+P*l-(T*i+R*a+b*l),V=T*r+C*a+L*l-(I*r+A*a+q*l),Y=R*r+A*i+D*l-(N*r+C*i+U*l),j=b*r+q*i+U*a-(P*r+L*i+D*a);T=a*m,I=l*d,N=i*m,R=l*h,b=i*d,P=a*h,A=r*m,C=l*f,L=r*d,q=a*f,U=r*h,D=i*f;var Z=T*O+R*z+b*_-(I*O+N*z+P*_),H=I*M+A*z+q*_-(T*M+C*z+L*_),X=N*M+C*O+U*_-(R*M+A*O+D*_),K=P*M+L*O+D*z-(b*M+q*O+U*z),J=N*g+P*S+I*x-(b*S+T*x+R*g),Q=L*S+T*y+C*g-(A*g+q*S+I*y),$=A*x+D*S+R*y-(U*S+N*y+C*x),te=U*g+b*y+q*x-(L*x+D*g+P*y),ee=r*B+i*F+a*W+l*k;if(Math.abs(ee)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return ee=1/ee,n[0]=B*ee,n[1]=F*ee,n[2]=W*ee,n[3]=k*ee,n[4]=G*ee,n[5]=V*ee,n[6]=Y*ee,n[7]=j*ee,n[8]=Z*ee,n[9]=H*ee,n[10]=X*ee,n[11]=K*ee,n[12]=J*ee,n[13]=Q*ee,n[14]=$*ee,n[15]=te*ee,n},c.inverseTransformation=function(t,e){var n=t[0],r=t[1],i=t[2],a=t[4],o=t[5],u=t[6],s=t[8],c=t[9],l=t[10],f=t[12],h=t[13],d=t[14],m=-n*f-r*h-i*d,y=-a*f-o*h-u*d,p=-s*f-c*h-l*d;return e[0]=n,e[1]=a,e[2]=s,e[3]=0,e[4]=r,e[5]=o,e[6]=c,e[7]=0,e[8]=i,e[9]=u,e[10]=l,e[11]=0,e[12]=m,e[13]=y,e[14]=p,e[15]=1,e},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]&&t[9]===e[n+9]&&t[10]===e[n+10]&&t[11]===e[n+11]&&t[12]===e[n+12]&&t[13]===e[n+13]&&t[14]===e[n+14]&&t[15]===e[n+15]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e,n){this.normal=t.clone(e),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-t.dot(r,n);return e(a)?(t.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new t;return i.fromCartesian4=function(n,r){var o=t.fromCartesian4(n,a),u=n.w;return e(r)?(t.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(e,n){return t.dot(e.normal,n)+e.distance},i.ORIGIN_XY_PLANE=r(new i(t.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(t.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(t.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";var s=function(t,n,r,i){this.west=e(t,0),this.south=e(n,0),this.east=e(r,0),this.north=e(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(t,n,r){r=e(r,0),n[r++]=t.west,n[r++]=t.south,n[r++]=t.east,n[r]=t.north},s.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new s),i.west=t[r++],i.south=t[r++],i.east=t[r++],i.north=t[r],i},s.computeWidth=function(t){var e=t.east,n=t.west;return n>e&&(e+=u.TWO_PI),e-n},s.computeHeight=function(t){return t.north-t.south},s.fromDegrees=function(t,r,i,a,o){return t=u.toRadians(e(t,0)),r=u.toRadians(e(r,0)),i=u.toRadians(e(i,0)),a=u.toRadians(e(a,0)),n(o)?(o.west=t,o.south=r,o.east=i,o.north=a,o):new s(t,r,i,a)},s.fromCartographicArray=function(t,e){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=t.length;c>u;u++){var l=t[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(e)?(e.west=r,e.south=a,e.east=i,e.north=o,e):new s(r,a,i,o)},s.clone=function(t,e){return n(t)?n(e)?(e.west=t.west,e.south=t.south,e.east=t.east,e.north=t.north,e):new s(t.west,t.south,t.east,t.north):void 0},s.prototype.clone=function(t){return s.clone(this,t)},s.prototype.equals=function(t){return s.equals(this,t)},s.equals=function(t,e){return t===e||n(t)&&n(e)&&t.west===e.west&&t.south===e.south&&t.east===e.east&&t.north===e.north},s.prototype.equalsEpsilon=function(t,e){return n(t)&&Math.abs(this.west-t.west)<=e&&Math.abs(this.south-t.south)<=e&&Math.abs(this.east-t.east)<=e&&Math.abs(this.north-t.north)<=e},s.validate=function(){},s.southwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.south,r.height=0,r):new t(e.west,e.south)},s.northwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.north,r.height=0,r):new t(e.west,e.north)},s.northeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.north,r.height=0,r):new t(e.east,e.north)},s.southeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.south,r.height=0,r):new t(e.east,e.south)},s.center=function(e,r){var i=e.east,a=e.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(e.south+e.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new t(o,s)},s.intersection=function(t,e,r){var i=t.east,a=t.west,o=e.east,c=e.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((t.west<t.east||e.west<e.east)&&l>=f)return void 0;var h=Math.max(t.south,e.south),d=Math.min(t.north,e.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(t,e){var n=e.longitude,r=e.latitude,i=t.west,a=t.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=t.south&&r<=t.north};var c=new t;return s.subsample=function(t,r,i,o){r=e(r,a.WGS84),i=e(i,0),n(o)||(o=[]);var l=0,f=t.north,h=t.south,d=t.east,m=t.west,y=c;y.height=i,y.longitude=m,y.latitude=f,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=h,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=0>f?f:h>0?h:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(t,y)&&(o[l]=r.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(t,e,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(e,r){this.center=t.clone(n(e,t.ZERO)),this.radius=n(r,0)},m=new t,y=new t,p=new t,v=new t,w=new t,E=new t,x=new t,g=new t,S=new t,M=new t,O=new t,z=new t;d.fromPoints=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;for(var i=t.clone(e[0],x),a=t.clone(i,m),o=t.clone(i,y),u=t.clone(i,p),s=t.clone(i,v),c=t.clone(i,w),l=t.clone(i,E),f=e.length,h=1;f>h;h++){t.clone(e[h],i);var _=i.x,T=i.y,I=i.z;_<a.x&&t.clone(i,a),_>s.x&&t.clone(i,s),T<o.y&&t.clone(i,o),T>c.y&&t.clone(i,c),I<u.z&&t.clone(i,u),I>l.z&&t.clone(i,l)}var N=t.magnitudeSquared(t.subtract(s,a,g)),R=t.magnitudeSquared(t.subtract(c,o,g)),b=t.magnitudeSquared(t.subtract(l,u,g)),P=a,A=s,C=N;R>C&&(C=R,P=o,A=c),b>C&&(C=b,P=u,A=l);var L=S;L.x=.5*(P.x+A.x),L.y=.5*(P.y+A.y),L.z=.5*(P.z+A.z);var q=t.magnitudeSquared(t.subtract(A,L,g)),U=Math.sqrt(q),D=M;D.x=a.x,D.y=o.y,D.z=u.z;var B=O;B.x=s.x,B.y=c.y,B.z=l.z;var F=t.multiplyByScalar(t.add(D,B,g),.5,z),W=0;for(h=0;f>h;h++){t.clone(e[h],i);var k=t.magnitude(t.subtract(i,F,g));k>W&&(W=k);var G=t.magnitudeSquared(t.subtract(i,L,g));if(G>q){var V=Math.sqrt(G);U=.5*(U+V),q=U*U;var Y=V-U;L.x=(U*L.x+Y*i.x)/V,L.y=(U*L.y+Y*i.y)/V,L.z=(U*L.z+Y*i.z)/V}}return W>U?(t.clone(L,n.center),n.radius=U):(t.clone(F,n.center),n.radius=W),n};var _=new u,T=new t,I=new t,N=new e,R=new e;d.fromRectangle2D=function(t,e,n){return d.fromRectangleWithHeights2D(t,e,0,0,n)},d.fromRectangleWithHeights2D=function(e,i,a,o,u){if(r(u)||(u=new d),!r(e))return u.center=t.clone(t.ZERO,u.center),u.radius=0,u;i=n(i,_),h.southwest(e,N),N.height=a,h.northeast(e,R),R.height=o;var s=i.project(N,T),c=i.project(R,I),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*f,y.z=s.z+.5*m,u};var b=[];d.fromRectangle3D=function(t,e,i,a){e=n(e,o.WGS84),i=n(i,0);var u;return r(t)&&(u=h.subsample(t,e,i,b)),d.fromPoints(u,a)},d.fromVertices=function(e,i,a,o){if(r(o)||(o=new d),!r(e)||0===e.length)return o.center=t.clone(t.ZERO,o.center),o.radius=0,o;i=n(i,t.ZERO),a=n(a,3);var u=x;u.x=e[0]+i.x,u.y=e[1]+i.y,u.z=e[2]+i.z;for(var s=t.clone(u,m),c=t.clone(u,y),l=t.clone(u,p),f=t.clone(u,v),h=t.clone(u,w),_=t.clone(u,E),T=e.length,I=0;T>I;I+=a){var N=e[I]+i.x,R=e[I+1]+i.y,b=e[I+2]+i.z;u.x=N,u.y=R,u.z=b,N<s.x&&t.clone(u,s),N>f.x&&t.clone(u,f),R<c.y&&t.clone(u,c),R>h.y&&t.clone(u,h),b<l.z&&t.clone(u,l),b>_.z&&t.clone(u,_)}var P=t.magnitudeSquared(t.subtract(f,s,g)),A=t.magnitudeSquared(t.subtract(h,c,g)),C=t.magnitudeSquared(t.subtract(_,l,g)),L=s,q=f,U=P;A>U&&(U=A,L=c,q=h),C>U&&(U=C,L=l,q=_);var D=S;D.x=.5*(L.x+q.x),D.y=.5*(L.y+q.y),D.z=.5*(L.z+q.z);var B=t.magnitudeSquared(t.subtract(q,D,g)),F=Math.sqrt(B),W=M;W.x=s.x,W.y=c.y,W.z=l.z;var k=O;k.x=f.x,k.y=h.y,k.z=_.z;var G=t.multiplyByScalar(t.add(W,k,g),.5,z),V=0;for(I=0;T>I;I+=a){u.x=e[I]+i.x,u.y=e[I+1]+i.y,u.z=e[I+2]+i.z;var Y=t.magnitude(t.subtract(u,G,g));Y>V&&(V=Y);var j=t.magnitudeSquared(t.subtract(u,D,g));if(j>B){var Z=Math.sqrt(j);F=.5*(F+Z),B=F*F;var H=Z-F;D.x=(F*D.x+H*u.x)/Z,D.y=(F*D.y+H*u.y)/Z,D.z=(F*D.z+H*u.z)/Z}}return V>F?(t.clone(D,o.center),o.radius=F):(t.clone(G,o.center),o.radius=V),o},d.fromCornerPoints=function(e,n,i){r(i)||(i=new d);var a=i.center;return t.add(e,n,a),t.multiplyByScalar(a,.5,a),i.radius=t.distance(a,n),i},d.fromEllipsoid=function(e,n){return r(n)||(n=new d),t.clone(t.ZERO,n.center),n.radius=e.maximumRadius,n};var P=new t;d.fromBoundingSpheres=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;var i=e.length;if(1===i)return d.clone(e[0],n);if(2===i)return d.union(e[0],e[1],n);for(var a=[],o=0;i>o;o++)a.push(e[o].center);n=d.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=e[o];s=Math.max(s,t.distance(u,c.center,P)+c.radius)}return n.radius=s,n},d.clone=function(e,n){return r(e)?r(n)?(n.center=t.clone(e.center,n.center),n.radius=e.radius,n):new d(e.center,e.radius):void 0},d.packedLength=4,d.pack=function(t,e,r){r=n(r,0);var i=t.center;e[r++]=i.x,e[r++]=i.y,e[r++]=i.z,e[r]=t.radius},d.unpack=function(t,e,i){e=n(e,0),r(i)||(i=new d);var a=i.center;return a.x=t[e++],a.y=t[e++],a.z=t[e++],i.radius=t[e],i};var A=new t,C=new t;d.union=function(e,n,i){r(i)||(i=new d);var a=e.center,o=e.radius,u=n.center,s=n.radius,c=t.subtract(u,a,A),l=t.magnitude(c);if(o>=l+s)return e.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),h=t.multiplyByScalar(c,(-o+f)/l,C);return t.add(h,a,h),t.clone(h,i.center),i.radius=f,i};var L=new t;d.expand=function(e,n,r){r=d.clone(e,r);var i=t.magnitude(t.subtract(n,r.center,L));return i>r.radius&&(r.radius=i),r},d.intersectPlane=function(e,n){var r=e.center,i=e.radius,a=n.normal,o=t.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new t,0);d.intersect=function(t,e){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(e,q);return d.intersectPlane(t,n)},d.transform=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=l.getMaximumScale(e)*t.radius,n};var U=new t;d.distanceSquaredTo=function(e,n){var r=t.subtract(e.center,n,U);return t.magnitudeSquared(r)-e.radius*e.radius},d.transformWithoutScale=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=t.radius,n};var D=new t;d.computePlaneDistances=function(e,n,i,a){r(a)||(a=new c);var o=t.subtract(e.center,n,D),u=t.multiplyByScalar(i,t.dot(i,o),D),s=t.magnitude(u);return a.start=s-e.radius,a.stop=s+e.radius,a};for(var B=new t,F=new t,W=new t,k=new t,G=new t,V=new e,Y=new Array(8),j=0;8>j;++j)Y[j]=new t;var Z=new u;return d.projectTo2D=function(e,r,i){r=n(r,Z);var a=r.ellipsoid,o=e.center,u=e.radius,s=a.geodeticSurfaceNormal(o,B),c=t.cross(t.UNIT_Z,s,F);t.normalize(c,c);var l=t.cross(s,c,W);t.normalize(l,l),t.multiplyByScalar(s,u,s),t.multiplyByScalar(l,u,l),t.multiplyByScalar(c,u,c);var f=t.negate(l,G),h=t.negate(c,k),m=Y,y=m[0];t.add(s,l,y),t.add(y,c,y),y=m[1],t.add(s,l,y),t.add(y,h,y),y=m[2],t.add(s,f,y),t.add(y,h,y),y=m[3],t.add(s,f,y),t.add(y,c,y),t.negate(s,s),y=m[4],t.add(s,l,y),t.add(y,c,y),y=m[5],t.add(s,l,y),t.add(y,h,y),y=m[6],t.add(s,f,y),t.add(y,h,y),y=m[7],t.add(s,f,y),t.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var w=m[v];t.add(o,w,w);var E=a.cartesianToCartographic(w,V);r.project(E,w)}i=d.fromPoints(m,i),o=i.center;var x=o.x,g=o.y,S=o.z;return o.x=S,o.y=x,o.z=g,i},d.equals=function(e,n){return e===n||r(e)&&r(n)&&t.equals(e.center,n.center)&&e.radius===n.radius},d.prototype.intersectPlane=function(t){return d.intersectPlane(this,t)},d.prototype.intersect=function(t){return d.intersect(this,t)},d.prototype.equals=function(t){return d.equals(this,t)},d.prototype.clone=function(t){return d.clone(this,t)},d}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n){this.x=t(e,0),this.y=t(n,0)};a.fromElements=function(t,n,r){return e(r)?(r.x=t,r.y=n,r):new a(t,n)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n):new a(t.x,t.y):void 0},a.fromCartesian3=a.clone,a.fromCartesian4=a.clone,a.packedLength=2,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r]=e.y},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y)},a.minimumComponent=function(t){return Math.min(t.x,t.y)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){return a.normalize(t,s),a.normalize(e,c),i.acosClamped(a.dot(s,c))};var l=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Y,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)},a.ZERO=r(new a(0,0)),a.UNIT_X=r(new a(1,0)),a.UNIT_Y=r(new a(0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+")"},a}),define("Core/Fullscreen",["./defined","./defineProperties"],function(t,e){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return e(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(t(n))return n;n=!1;var e=document.body;if("function"==typeof e.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof e[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof e[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",t(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",t(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",t(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",t(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(t){i.supportsFullscreen()&&t[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(t,e,n){"use strict";function r(t){for(var e=t.split("."),n=0,r=e.length;r>n;++n)e[n]=parseInt(e[n],10);return e}function i(){if(!e(p)){p=!1;var t=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(p=!0,v=r(t[1]))}return p}function a(){return i()&&v}function o(){if(!e(w)&&(w=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var t=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(w=!0,E=r(t[1]))}return w}function u(){return o()&&E}function s(){if(!e(x)){x=!1;var t=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==t&&(x=!0,g=r(t[1]),g.isNightly=!!t[2])}return x}function c(){return s()&&g}function l(){if(!e(S)){S=!1;var t;"Microsoft Internet Explorer"===navigator.appName?(t=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(S=!0,M=r(t[1]))):"Netscape"===navigator.appName&&(t=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(S=!0,M=r(t[1])))}return S}function f(){return l()&&M}function h(){if(!e(O)){O=!1;var t=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(O=!0,z=r(t[1]))}return O}function d(){return e(_)||(_=/Windows/i.test(navigator.appVersion)),_}function m(){return h()&&z}function y(){return e(T)||(T=e(window.PointerEvent)&&(!e(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),T}var p,v,w,E,x,g,S,M,O,z,_,T,I={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:t(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return I.supportsFullscreen=function(){return n.supportsFullscreen()},I.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},I.supportsWebWorkers=function(){return"undefined"!=typeof Worker},I}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(t,e,n,r,i){"use strict";if(!r.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(t){switch(t){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},a.fromTypedArray=function(t){return t instanceof Int8Array?a.BYTE:t instanceof Uint8Array?a.UNSIGNED_BYTE:t instanceof Int16Array?a.SHORT:t instanceof Uint16Array?a.UNSIGNED_SHORT:t instanceof Float32Array?a.FLOAT:t instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(t){return e(t)&&(t===a.BYTE||t===a.UNSIGNED_BYTE||t===a.SHORT||t===a.UNSIGNED_SHORT||t===a.FLOAT||t===a.DOUBLE)},a.createTypedArray=function(t,e){switch(t){case a.BYTE:return new Int8Array(e);case a.UNSIGNED_BYTE:return new Uint8Array(e);case a.SHORT:return new Int16Array(e);case a.UNSIGNED_SHORT:return new Uint16Array(e);case a.FLOAT:return new Float32Array(e);case a.DOUBLE:return new Float64Array(e);default:throw new n("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(e,r,i,o){switch(i=t(i,0),o=t(o,(r.byteLength-i)/a.getSizeInBytes(e)),e){case a.BYTE:return new Int8Array(r,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(r,i,o);case a.SHORT:return new Int16Array(r,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(r,i,o);case a.FLOAT:return new Float32Array(r,i,o);case a.DOUBLE:return new Float64Array(r,i,o);default:throw new n("componentDatatype is not a valid value.")}},i(a)}),define("Core/GeometryType",["./freezeObject"],function(t){"use strict";var e={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return t(e)}),define("Core/PrimitiveType",["./freezeObject"],function(t){"use strict";var e={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(t){return t===e.POINTS||t===e.LINES||t===e.LINE_LOOP||t===e.LINE_STRIP||t===e.TRIANGLES||t===e.TRIANGLE_STRIP||t===e.TRIANGLE_FAN}};return t(e)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(t,e,n,r,i){"use strict";var a=function(e){e=t(e,t.EMPTY_OBJECT),this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=t(e.primitiveType,i.TRIANGLES),this.boundingSphere=e.boundingSphere,this.geometryType=t(e.geometryType,r.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(t){var r=-1;for(var i in t.attributes)if(t.attributes.hasOwnProperty(i)&&e(t.attributes[i])&&e(t.attributes[i].values)){var a=t.attributes[i],o=a.values.length/a.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=t(e.normalize,!1),this.values=e.values +};return e}),define("Core/GeometryAttributes",["./defaultValue"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.position=e.position,this.normal=e.normal,this.st=e.st,this.binormal=e.binormal,this.tangent=e.tangent,this.color=e.color};return e}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(t){switch(t){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(e){return t(e)&&(e===i.UNSIGNED_BYTE||e===i.UNSIGNED_SHORT||e===i.UNSIGNED_INT)},i.createTypedArray=function(t,e){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e):new Uint16Array(e)},i.createTypedArrayFromArrayBuffer=function(t,e,n,i){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e,n,i):new Uint16Array(e,n,i)},n(i)}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e){e=t(e,t.EMPTY_OBJECT),this.position=t(e.position,!1),this.normal=t(e.normal,!1),this.st=t(e.st,!1),this.binormal=t(e.binormal,!1),this.tangent=t(e.tangent,!1),this.color=t(e.color,!1)};return i.POSITION_ONLY=r(new i({position:!0})),i.POSITION_AND_NORMAL=r(new i({position:!0,normal:!0})),i.POSITION_NORMAL_AND_ST=r(new i({position:!0,normal:!0,st:!0})),i.POSITION_AND_ST=r(new i({position:!0,st:!0})),i.POSITION_AND_COLOR=r(new i({position:!0,color:!0})),i.ALL=r(new i({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),i.DEFAULT=i.POSITION_NORMAL_AND_ST,i.packedLength=6,i.pack=function(e,n,r){r=t(r,0),n[r++]=e.position?1:0,n[r++]=e.normal?1:0,n[r++]=e.st?1:0,n[r++]=e.binormal?1:0,n[r++]=e.tangent?1:0,n[r++]=e.color?1:0},i.unpack=function(n,r,a){return r=t(r,0),e(a)||(a=new i),a.position=1===n[r++],a.normal=1===n[r++],a.st=1===n[r++],a.binormal=1===n[r++],a.tangent=1===n[r++],a.color=1===n[r++],a},i.clone=function(t,n){return e(t)?(e(n)||(n=new i),n.position=t.position,n.normal=t.normal,n.st=t.st,n.binormal=t.binormal,n.tangent=t.tangent,n.color=t.color,n):void 0},i}),define("Core/EllipsoidGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType","./VertexFormat"],function(t,e,n,r,i,a,o,u,s,c,l,f,h,d,m){"use strict";var y=new n,p=new n,v=new n,w=new n,E=new n,x=new n(1,1,1),g=Math.cos,S=Math.sin,M=function(t){t=i(t,i.EMPTY_OBJECT);var e=i(t.radii,x),r=i(t.stackPartitions,64),a=i(t.slicePartitions,64),o=i(t.vertexFormat,m.DEFAULT);this._radii=n.clone(e),this._stackPartitions=r,this._slicePartitions=a,this._vertexFormat=m.clone(o),this._workerName="createEllipsoidGeometry"};M.packedLength=n.packedLength+m.packedLength+2,M.pack=function(t,e,r){r=i(r,0),n.pack(t._radii,e,r),r+=n.packedLength,m.pack(t._vertexFormat,e,r),r+=m.packedLength,e[r++]=t._stackPartitions,e[r]=t._slicePartitions};var O=new n,z=new m,_={radii:O,vertexFormat:z,stackPartitions:void 0,slicePartitions:void 0};return M.unpack=function(t,e,r){e=i(e,0);var o=n.unpack(t,e,O);e+=n.packedLength;var u=m.unpack(t,e,z);e+=m.packedLength;var s=t[e++],c=t[e];return a(r)?(r._radii=n.clone(o,r._radii),r._vertexFormat=m.clone(u,r._vertexFormat),r._stackPartitions=s,r._slicePartitions=c,r):(_.stackPartitions=s,_.slicePartitions=c,new M(_))},M.createGeometry=function(i){var a,o,m=i._radii,x=u.fromCartesian3(m),M=i._vertexFormat,O=i._slicePartitions+1,z=i._stackPartitions+1,_=z*O,T=new Float64Array(3*_),I=6*(O-1)*(z-1),N=f.createTypedArray(_,I),R=M.normal?new Float32Array(3*_):void 0,b=M.tangent?new Float32Array(3*_):void 0,P=M.binormal?new Float32Array(3*_):void 0,A=M.st?new Float32Array(2*_):void 0,C=new Array(O),L=new Array(O),q=0;for(a=0;O>a;a++){var U=h.TWO_PI*a/(O-1);C[a]=g(U),L[a]=S(U),T[q++]=0,T[q++]=0,T[q++]=m.z}for(a=1;z-1>a;a++){var D=Math.PI*a/(z-1),B=S(D),F=m.x*B,W=m.y*B,k=m.z*g(D);for(o=0;O>o;o++)T[q++]=C[o]*F,T[q++]=L[o]*W,T[q++]=k}for(a=0;O>a;a++)T[q++]=0,T[q++]=0,T[q++]=-m.z;var G=new l;M.position&&(G.position=new c({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:T}));var V=0,Y=0,j=0,Z=0;if(M.st||M.normal||M.tangent||M.binormal){for(a=0;_>a;a++){var H=n.fromArray(T,3*a,y),X=x.geodeticSurfaceNormal(H,p);if(M.st){var K=e.negate(X,E);e.magnitude(K)<h.EPSILON6&&(q=3*(a+O*Math.floor(.5*z)),q>T.length&&(q=3*(a-O*Math.floor(.5*z))),n.fromArray(T,q,K),x.geodeticSurfaceNormal(K,K),e.negate(K,K)),A[V++]=Math.atan2(K.y,K.x)/h.TWO_PI+.5,A[V++]=Math.asin(X.z)/Math.PI+.5}if(M.normal&&(R[Y++]=X.x,R[Y++]=X.y,R[Y++]=X.z),M.tangent||M.binormal){var J=v;if(O>a||a>_-O-1?(n.cross(n.UNIT_X,X,J),n.normalize(J,J)):(n.cross(n.UNIT_Z,X,J),n.normalize(J,J)),M.tangent&&(b[j++]=J.x,b[j++]=J.y,b[j++]=J.z),M.binormal){var Q=n.cross(X,J,w);n.normalize(Q,Q),P[Z++]=Q.x,P[Z++]=Q.y,P[Z++]=Q.z}}}M.st&&(G.st=new c({componentDatatype:r.FLOAT,componentsPerAttribute:2,values:A})),M.normal&&(G.normal=new c({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:R})),M.tangent&&(G.tangent=new c({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:b})),M.binormal&&(G.binormal=new c({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:P}))}for(q=0,a=0;z>a;a++){var $=a*O,te=(a+1)*O;for(o=0;O-1>o;o++)N[q++]=te+o,N[q++]=te+o+1,N[q++]=$+o+1,N[q++]=te+o,N[q++]=$+o+1,N[q++]=$+o}return new s({attributes:G,indices:N,primitiveType:d.TRIANGLES,boundingSphere:t.fromEllipsoid(x)})},M}),define("Workers/createEllipsoidGeometry",["../Core/defined","../Core/EllipsoidGeometry"],function(t,e){"use strict";return function(n,r){return t(r)&&(n=e.unpack(n,r)),e.createGeometry(n)}})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createEllipsoidOutlineGeometry.js b/libs/Cesium/Workers/createEllipsoidOutlineGeometry.js new file mode 100644 index 0000000000..867ef4fff1 --- /dev/null +++ b/libs/Cesium/Workers/createEllipsoidOutlineGeometry.js @@ -0,0 +1,60 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var t=function(t){return void 0!==t};return t}),define("Core/freezeObject",["./defined"],function(t){"use strict";var e=Object.freeze;return t(e)||(e=function(t){return t}),e}),define("Core/defaultValue",["./freezeObject"],function(t){"use strict";var e=function(t,e){return void 0!==t?t:e};return e.EMPTY_OBJECT=t({}),e}),define("Core/DeveloperError",["./defined"],function(t){"use strict";var e=function(t){this.name="DeveloperError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e.throwInstantiationError=function(){throw new e("This function defines an interface and should not be called directly.")},e}),define("ThirdParty/mersenne-twister",[],function(){var t=function(t){void 0==t&&(t=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(t)};return t.prototype.init_genrand=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&t)>>>16)<<16)+1812433253*(65535&t)+this.mti,this.mt[this.mti]>>>=0}},t.prototype.genrand_int32=function(){var t,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^t>>>1^e[1&t];for(;n<this.N-1;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^t>>>1^e[1&t];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^e[1&t],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=2636928640&t<<7,t^=4022730752&t<<15,t^=t>>>18,t>>>0},t.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},t}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(t,e){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(t){return t>0?1:0>t?-1:0},n.signNotZero=function(t){return 0>t?-1:1},n.toSNorm=function(t){return Math.round(255*(.5*n.clamp(t,-1,1)+.5))},n.fromSNorm=function(t){return 2*(n.clamp(t,0,255)/255)-1},n.sinh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e-n)},n.cosh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e+n)},n.lerp=function(t,e,n){return(1-n)*t+n*e},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(t){return t*n.RADIANS_PER_DEGREE},n.toDegrees=function(t){return t*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(t){var e=n.TWO_PI,r=t-Math.floor(t/e)*e;return r<-Math.PI?r+e:r>=Math.PI?r-e:r},n.negativePiToPi=function(t){return n.zeroToTwoPi(t+n.PI)-n.PI},n.zeroToTwoPi=function(t){var e=n.mod(t,n.TWO_PI);return Math.abs(e)<n.EPSILON14&&Math.abs(t)>n.EPSILON14?n.TWO_PI:e},n.mod=function(t,e){return(t%e+e)%e},n.equalsEpsilon=function(t,n,r,i){i=e(i,r);var a=Math.abs(t-n);return i>=a||a<=r*Math.max(Math.abs(t),Math.abs(n))};var r=[1];n.factorial=function(t){var e=r.length;if(t>=e)for(var n=r[e-1],i=e;t>=i;i++)r.push(n*i);return r[t]},n.incrementWrap=function(t,n,r){return r=e(r,0),++t,t>n&&(t=r),t},n.isPowerOfTwo=function(t){return 0!==t&&0===(t&t-1)},n.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t},n.clamp=function(t,e,n){return e>t?e:t>n?n:t};var i=new t;return n.setRandomNumberSeed=function(e){i=new t(e)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(t){return Math.acos(n.clamp(t,-1,1))},n.asinClamped=function(t){return Math.asin(n.clamp(t,-1,1))},n.chordLength=function(t,e){return 2*e*Math.sin(.5*t)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0)};a.fromSpherical=function(n,r){e(r)||(r=new a);var i=n.clock,o=n.cone,u=t(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(t,n,r,i){return e(i)?(i.x=t,i.y=n,i.z=r,i):new a(t,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n):new a(t.x,t.y,t.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r]=e.z},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){a.normalize(t,s),a.normalize(e,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Z,e):n.y<=n.z?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_Z,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)},a.cross=function(t,e,n){var r=t.x,i=t.y,a=t.z,o=e.x,u=e.y,s=e.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(t,e,n,r,o){var u=i.toRadians(t),s=i.toRadians(e);return a.fromRadians(u,s,n,r,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=t(i,0);var s=e(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),e(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o++)r[o]=i.toRadians(t[o]);return a.fromRadiansArray(r,e,n)},a.fromRadiansArray=function(t,n,r){var i=t.length;e(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=t[o],s=t[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o+=3)r[o]=i.toRadians(t[o]),r[o+1]=i.toRadians(t[o+1]),r[o+2]=t[o+2];return a.fromRadiansArrayHeights(r,e,n)},a.fromRadiansArrayHeights=function(t,n,r){var i=t.length;e(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=t[o],s=t[o+1],c=t[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.longitude=t(e,0),this.latitude=t(n,0),this.height=t(r,0)};return a.fromRadians=function(n,r,i,o){return i=t(i,0),e(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(t,e,n,r){return t=i.toRadians(t),e=i.toRadians(e),a.fromRadians(t,e,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.longitude=t.longitude,n.latitude=t.latitude,n.height=t.height,n):new a(t.longitude,t.latitude,t.height):void 0},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.longitude===n.longitude&&t.latitude===n.latitude&&t.height===n.height},a.equalsEpsilon=function(t,n,r){return t===n||e(t)&&e(n)&&Math.abs(t.longitude-n.longitude)<=r&&Math.abs(t.latitude-n.latitude)<=r&&Math.abs(t.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e){return a.equalsEpsilon(this,t,e)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(t){"use strict";var e={},n=function(n,r){t(e[n])||(e[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(t){"use strict";var e=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(t){return!1}}(),n=Object.defineProperties;return e&&t(n)||(n=function(t){return t}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";function s(e,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),e._radii=new t(r,i,a),e._radiiSquared=new t(r*r,i*i,a*a),e._radiiToTheFourth=new t(r*r*r*r,i*i*i*i,a*a*a*a),e._oneOverRadii=new t(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),e._oneOverRadiiSquared=new t(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),e._minimumRadius=Math.min(r,i,a),e._maximumRadius=Math.max(r,i,a),e._centerToleranceSquared=u.EPSILON1}var c=function(t,e,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,t,e,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(e,n){if(!r(e))return void 0;var i=e._radii;return r(n)?(t.clone(i,n._radii),t.clone(e._radiiSquared,n._radiiSquared),t.clone(e._radiiToTheFourth,n._radiiToTheFourth),t.clone(e._oneOverRadii,n._oneOverRadii),t.clone(e._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=e._minimumRadius,n._maximumRadius=e._maximumRadius,n._centerToleranceSquared=e._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(t,e){return r(e)||(e=new c),r(t)?(s(e,t.x,t.y,t.z),e):e},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(t){return c.clone(this,t)},c.packedLength=t.packedLength,c.pack=function(e,r,i){i=n(i,0),t.pack(e._radii,r,i)},c.unpack=function(e,r,i){r=n(r,0);var a=t.unpack(e,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=t.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(e,n){var i=e.longitude,a=e.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new t),n.x=u,n.y=s,n.z=c,t.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(e,n){return r(n)||(n=new t),n=t.multiplyComponents(e,this._oneOverRadiiSquared,n),t.normalize(n,n)};var l=new t,f=new t;c.prototype.cartographicToCartesian=function(e,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(e,i),t.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(t.dot(i,a));return t.divideByScalar(a,o,a),t.multiplyByScalar(i,e.height,i),r(n)||(n=new t),t.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;i++)e[i]=this.cartographicToCartesian(t[i],e[i]);return e};var h=new t,d=new t,m=new t;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,d);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=t.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(t.dot(s,n))*t.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new e(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;++i)e[i]=this.cartesianToCartographic(t[i],e[i]);return e};var y=new t,p=new t;return c.prototype.scaleToGeodeticSurface=function(e,n){var i=e.x,a=e.y,o=e.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,m=o*o*f*f,v=h+d+m,w=Math.sqrt(1/v),E=t.multiplyByScalar(e,w,y);if(v<this._centerToleranceSquared)return isFinite(w)?t.clone(E,n):void 0;var g=this._oneOverRadiiSquared,x=g.x,S=g.y,M=g.z,z=p;z.x=2*E.x*x,z.y=2*E.y*S,z.z=2*E.z*M;var O,_,T,I,N,R,b,P,A,C,L,q=(1-w)*t.magnitude(e)/(.5*t.magnitude(z)),U=0;do{q-=U,T=1/(1+q*x),I=1/(1+q*S),N=1/(1+q*M),R=T*T,b=I*I,P=N*N,A=R*T,C=b*I,L=P*N,O=h*R+d*b+m*P-1,_=h*A*x+d*C*S+m*L*M;var D=-2*_;U=O/D}while(Math.abs(O)>u.EPSILON12);return r(n)?(n.x=i*T,n.y=a*I,n.z=o*N,n):new t(i*T,a*I,o*N)},c.prototype.scaleToGeocentricSurface=function(e,n){r(n)||(n=new t);var i=e.x,a=e.y,o=e.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return t.multiplyByScalar(e,s,n)},c.prototype.transformPositionToScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._radii,n)},c.prototype.equals=function(e){return this===e||r(e)&&t.equals(this._radii,e._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(t,e,n,r,i,a,o){"use strict";var u=function(t){this._ellipsoid=n(t,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(e,n){var i=this._semimajorAxis,a=e.longitude*i,o=e.latitude*i,u=e.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new t(a,o,u)},u.prototype.unproject=function(t,n){var i=this._oneOverSemimajorAxis,a=t.x*i,o=t.y*i,u=t.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new e(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(t){"use strict";var e={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return t(e)}),define("Core/Interval",["./defaultValue"],function(t){"use strict";var e=function(e,n){this.start=t(e,0),this.stop=t(n,0)};return e}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)};a.fromElements=function(t,n,r,i,o){return e(o)?(o.x=t,o.y=n,o.z=r,o.w=i,o):new a(t,n,r,i)},a.fromColor=function(t,n){return e(n)?(n.x=t.red,n.y=t.green,n.z=t.blue,n.w=t.alpha,n):new a(t.red,t.green,t.blue,t.alpha)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n.w=t.w,n):new a(t.x,t.y,t.z,t.w):void 0},a.packedLength=4,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z,t.w)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z,t.w)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n.w=Math.min(t.w,e.w),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n.w=Math.max(t.w,e.w),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e.w=t.w/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z+t.w*e.w},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n.w=t.w*e.w,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n.w=t.w+e.w,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n.w=t.w-e.w,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n.w=t.w*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n.w=t.w/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e.w=-t.w,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e.w=Math.abs(t.w),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,s);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z&&t.w===n.w},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]&&t.w===e[n+3]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)&&i.equalsEpsilon(t.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a){"use strict";function o(t){for(var e=0,n=0;9>n;++n){var r=t[n];e+=r*r}return Math.sqrt(e)}function u(t){for(var e=0,n=0;3>n;++n){var r=t[c.getElementIndex(d[n],h[n])];e+=2*r*r}return Math.sqrt(e)}function s(t,e){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(t[c.getElementIndex(d[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=h[i],m=d[i];if(Math.abs(t[c.getElementIndex(m,f)])>n){var y,p=t[c.getElementIndex(m,m)],v=t[c.getElementIndex(f,f)],w=t[c.getElementIndex(m,f)],E=(p-v)/2/w;y=0>E?-1/(-E+Math.sqrt(1+E*E)):1/(E+Math.sqrt(1+E*E)),s=1/Math.sqrt(1+y*y),l=y*s}return e=c.clone(c.IDENTITY,e),e[c.getElementIndex(f,f)]=e[c.getElementIndex(m,m)]=s,e[c.getElementIndex(m,f)]=l,e[c.getElementIndex(f,m)]=-l,e}var c=function(t,n,r,i,a,o,u,s,c){this[0]=e(t,0),this[1]=e(i,0),this[2]=e(u,0),this[3]=e(n,0),this[4]=e(a,0),this[5]=e(s,0),this[6]=e(r,0),this[7]=e(o,0),this[8]=e(c,0)};c.packedLength=9,c.pack=function(t,n,r){r=e(r,0),n[r++]=t[0],n[r++]=t[1],n[r++]=t[2],n[r++]=t[3],n[r++]=t[4],n[r++]=t[5],n[r++]=t[6],n[r++]=t[7],n[r++]=t[8]},c.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r++],i[1]=t[r++],i[2]=t[r++],i[3]=t[r++],i[4]=t[r++],i[5]=t[r++],i[6]=t[r++],i[7]=t[r++],i[8]=t[r++],i},c.clone=function(t,e){return n(t)?n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):new c(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]):void 0},c.fromArray=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r],i[1]=t[r+1],i[2]=t[r+2],i[3]=t[r+3],i[4]=t[r+4],i[5]=t[r+5],i[6]=t[r+6],i[7]=t[r+7],i[8]=t[r+8],i},c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},c.fromQuaternion=function(t,e){var r=t.x*t.x,i=t.x*t.y,a=t.x*t.z,o=t.x*t.w,u=t.y*t.y,s=t.y*t.z,l=t.y*t.w,f=t.z*t.z,h=t.z*t.w,d=t.w*t.w,m=r-u-f+d,y=2*(i-h),p=2*(a+l),v=2*(i+h),w=-r+u-f+d,E=2*(s-o),g=2*(a-l),x=2*(s+o),S=-r-u+f+d;return n(e)?(e[0]=m,e[1]=v,e[2]=g,e[3]=y,e[4]=w,e[5]=x,e[6]=p,e[7]=E,e[8]=S,e):new c(m,y,p,v,w,E,g,x,S)},c.fromScale=function(t,e){return n(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=t.y,e[5]=0,e[6]=0,e[7]=0,e[8]=t.z,e):new c(t.x,0,0,0,t.y,0,0,0,t.z)},c.fromUniformScale=function(t,e){return n(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=t,e[5]=0,e[6]=0,e[7]=0,e[8]=t,e):new c(t,0,0,0,t,0,0,0,t)},c.fromCrossProduct=function(t,e){return n(e)?(e[0]=0,e[1]=t.z,e[2]=-t.y,e[3]=-t.z,e[4]=0,e[5]=t.x,e[6]=t.y,e[7]=-t.x,e[8]=0,e):new c(0,-t.z,t.y,t.z,0,-t.x,-t.y,t.x,0)},c.fromRotationX=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=r,e[5]=i,e[6]=0,e[7]=-i,e[8]=r,e):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=0,e[2]=-i,e[3]=0,e[4]=1,e[5]=0,e[6]=i,e[7]=0,e[8]=r,e):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=i,e[2]=0,e[3]=-i,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8]]},c.getElementIndex=function(t,e){return 3*t+e},c.getColumn=function(t,e,n){var r=3*e,i=t[r],a=t[r+1],o=t[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=3*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(t,e,n){var r=t[e],i=t[e+3],a=t[e+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+3]=n.y,r[e+6]=n.z,r};var l=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],l)),n.y=t.magnitude(t.fromElements(e[3],e[4],e[5],l)),n.z=t.magnitude(t.fromElements(e[6],e[7],e[8],l)),n};var f=new t;c.getMaximumScale=function(e){return c.getScale(e,f),t.maximumComponent(f)},c.multiply=function(t,e,n){var r=t[0]*e[0]+t[3]*e[1]+t[6]*e[2],i=t[1]*e[0]+t[4]*e[1]+t[7]*e[2],a=t[2]*e[0]+t[5]*e[1]+t[8]*e[2],o=t[0]*e[3]+t[3]*e[4]+t[6]*e[5],u=t[1]*e[3]+t[4]*e[4]+t[7]*e[5],s=t[2]*e[3]+t[5]*e[4]+t[8]*e[5],c=t[0]*e[6]+t[3]*e[7]+t[6]*e[8],l=t[1]*e[6]+t[4]*e[7]+t[7]*e[8],f=t[2]*e[6]+t[5]*e[7]+t[8]*e[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[3]*i+t[6]*a,u=t[1]*r+t[4]*i+t[7]*a,s=t[2]*r+t[5]*i+t[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n},c.multiplyByScale=function(t,e,n){return n[0]=t[0]*e.x,n[1]=t[1]*e.x,n[2]=t[2]*e.x,n[3]=t[3]*e.y,n[4]=t[4]*e.y,n[5]=t[5]*e.y,n[6]=t[6]*e.z,n[7]=t[7]*e.z,n[8]=t[8]*e.z,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e},c.transpose=function(t,e){var n=t[0],r=t[3],i=t[6],a=t[1],o=t[4],u=t[7],s=t[2],c=t[5],l=t[8];return e[0]=n,e[1]=r,e[2]=i,e[3]=a,e[4]=o,e[5]=u,e[6]=s,e[7]=c,e[8]=l,e};var h=[1,0,0],d=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(t,e){var r=a.EPSILON20,i=10,l=0,f=0;n(e)||(e={});for(var h=e.unitary=c.clone(c.IDENTITY,e.unitary),d=e.diagonal=c.clone(t,e.diagonal),p=r*o(d);i>f&&u(d)>p;)s(d,m),c.transpose(m,y),c.multiply(d,m,d),c.multiply(y,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e},c.determinant=function(t){var e=t[0],n=t[3],r=t[6],i=t[1],a=t[4],o=t[7],u=t[2],s=t[5],c=t[8];return e*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(t,e){var n=t[0],i=t[1],o=t[2],u=t[3],s=t[4],l=t[5],f=t[6],h=t[7],d=t[8],m=c.determinant(t);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");e[0]=s*d-h*l,e[1]=h*o-i*d,e[2]=i*l-s*o,e[3]=f*l-u*d,e[4]=n*d-f*o,e[5]=u*o-n*l,e[6]=u*h-f*s,e[7]=f*i-n*h,e[8]=n*s-u*i;var y=1/m;return c.multiplyByScalar(e,y,e)},c.equals=function(t,e){return t===e||n(t)&&n(e)&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]},c.equalsEpsilon=function(t,e,r){return t===e||n(t)&&n(e)&&Math.abs(t[0]-e[0])<=r&&Math.abs(t[1]-e[1])<=r&&Math.abs(t[2]-e[2])<=r&&Math.abs(t[3]-e[3])<=r&&Math.abs(t[4]-e[4])<=r&&Math.abs(t[5]-e[5])<=r&&Math.abs(t[6]-e[6])<=r&&Math.abs(t[7]-e[7])<=r&&Math.abs(t[8]-e[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(t){"use strict";var e=function(t){this.name="RuntimeError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(t,e,n,r,i,a,o,u,s){"use strict";var c=function(t,e,r,i,a,o,u,s,c,l,f,h,d,m,y,p){this[0]=n(t,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(e,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(y,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(p,0)};c.packedLength=16,c.pack=function(t,e,r){r=n(r,0),e[r++]=t[0],e[r++]=t[1],e[r++]=t[2],e[r++]=t[3],e[r++]=t[4],e[r++]=t[5],e[r++]=t[6],e[r++]=t[7],e[r++]=t[8],e[r++]=t[9],e[r++]=t[10],e[r++]=t[11],e[r++]=t[12],e[r++]=t[13],e[r++]=t[14],e[r]=t[15]},c.unpack=function(t,e,i){return e=n(e,0),r(i)||(i=new c),i[0]=t[e++],i[1]=t[e++],i[2]=t[e++],i[3]=t[e++],i[4]=t[e++],i[5]=t[e++],i[6]=t[e++],i[7]=t[e++],i[8]=t[e++],i[9]=t[e++],i[10]=t[e++],i[11]=t[e++],i[12]=t[e++],i[13]=t[e++],i[14]=t[e++],i[15]=t[e],i},c.clone=function(t,e){return r(t)?r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):new c(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},c.fromRotationTranslation=function(e,i,a){return i=n(i,t.ZERO),r(a)?(a[0]=e[0],a[1]=e[1],a[2]=e[2],a[3]=0,a[4]=e[3],a[5]=e[4],a[6]=e[5],a[7]=0,a[8]=e[6],a[9]=e[7],a[10]=e[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(e[0],e[3],e[6],i.x,e[1],e[4],e[7],i.y,e[2],e[5],e[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(t,e,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=e.x*e.x,l=e.x*e.y,f=e.x*e.z,h=e.x*e.w,d=e.y*e.y,m=e.y*e.z,y=e.y*e.w,p=e.z*e.z,v=e.z*e.w,w=e.w*e.w,E=s-d-p+w,g=2*(l-v),x=2*(f+y),S=2*(l+v),M=-s+d-p+w,z=2*(m-h),O=2*(f-y),_=2*(m+h),T=-s-d+p+w;return i[0]=E*a,i[1]=S*a,i[2]=O*a,i[3]=0,i[4]=g*o,i[5]=M*o,i[6]=_*o,i[7]=0,i[8]=x*u,i[9]=z*u,i[10]=T*u,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,i},c.fromTranslation=function(t,e){return c.fromRotationTranslation(u.IDENTITY,t,e)},c.fromScale=function(t,e){return r(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t.y,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t.z,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t.x,0,0,0,0,t.y,0,0,0,0,t.z,0,0,0,0,1)},c.fromUniformScale=function(t,e){return r(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t,0,0,0,0,t,0,0,0,0,t,0,0,0,0,1)};var l=new t,f=new t,h=new t;c.fromCamera=function(e,n){var i=e.eye,a=e.target,o=e.up;t.normalize(t.subtract(a,i,l),l),t.normalize(t.cross(l,o,f),f),t.normalize(t.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,y=l.y,p=l.z,v=h.x,w=h.y,E=h.z,g=i.x,x=i.y,S=i.z,M=u*-g+s*-x+d*-S,z=v*-g+w*-x+E*-S,O=m*g+y*x+p*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=w,n[6]=-y,n[7]=0,n[8]=d,n[9]=E,n[10]=-p,n[11]=0,n[12]=M,n[13]=z,n[14]=O,n[15]=1,n):new c(u,s,d,M,v,w,E,z,-m,-y,-p,O,0,0,0,1)},c.computePerspectiveFieldOfView=function(t,e,n,r,i){var a=Math.tan(.5*t),o=1/a,u=o/e,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(t,e,n,r,i,a,o){var u=1/(e-t),s=1/(r-n),c=1/(a-i),l=-(e+t)*u,f=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o +},c.computePerspectiveOffCenter=function(t,e,n,r,i,a,o){var u=2*i/(e-t),s=2*i/(r-n),c=(e+t)/(e-t),l=(r+n)/(r-n),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(t,e,n,r,i,a){var o=2*i/(e-t),u=2*i/(r-n),s=(e+t)/(e-t),c=(r+n)/(r-n),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(t,e,r,i){t=n(t,n.EMPTY_OBJECT);var a=n(t.x,0),o=n(t.y,0),u=n(t.width,0),s=n(t.height,0);e=n(e,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-e),h=c,d=l,m=f,y=a+c,p=o+l,v=e+f,w=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=y,i[13]=p,i[14]=v,i[15]=w,i},c.toArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},c.getElementIndex=function(t,e){return 4*t+e},c.getColumn=function(t,e,n){var r=4*e,i=t[r],a=t[r+1],o=t[r+2],u=t[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=4*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(t,e,n){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=t[15],n},c.getRow=function(t,e,n){var r=t[e],i=t[e+4],a=t[e+8],o=t[e+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+4]=n.y,r[e+8]=n.z,r[e+12]=n.w,r};var d=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],d)),n.y=t.magnitude(t.fromElements(e[4],e[5],e[6],d)),n.z=t.magnitude(t.fromElements(e[8],e[9],e[10],d)),n};var m=new t;c.getMaximumScale=function(e){return c.getScale(e,m),t.maximumComponent(m)},c.multiply=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[3],u=t[4],s=t[5],c=t[6],l=t[7],f=t[8],h=t[9],d=t[10],m=t[11],y=t[12],p=t[13],v=t[14],w=t[15],E=e[0],g=e[1],x=e[2],S=e[3],M=e[4],z=e[5],O=e[6],_=e[7],T=e[8],I=e[9],N=e[10],R=e[11],b=e[12],P=e[13],A=e[14],C=e[15],L=r*E+u*g+f*x+y*S,q=i*E+s*g+h*x+p*S,U=a*E+c*g+d*x+v*S,D=o*E+l*g+m*x+w*S,B=r*M+u*z+f*O+y*_,W=i*M+s*z+h*O+p*_,F=a*M+c*z+d*O+v*_,G=o*M+l*z+m*O+w*_,k=r*T+u*I+f*N+y*R,V=i*T+s*I+h*N+p*R,Y=a*T+c*I+d*N+v*R,j=o*T+l*I+m*N+w*R,H=r*b+u*P+f*A+y*C,Z=i*b+s*P+h*A+p*C,X=a*b+c*P+d*A+v*C,K=o*b+l*P+m*A+w*C;return n[0]=L,n[1]=q,n[2]=U,n[3]=D,n[4]=B,n[5]=W,n[6]=F,n[7]=G,n[8]=k,n[9]=V,n[10]=Y,n[11]=j,n[12]=H,n[13]=Z,n[14]=X,n[15]=K,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n[9]=t[9]+e[9],n[10]=t[10]+e[10],n[11]=t[11]+e[11],n[12]=t[12]+e[12],n[13]=t[13]+e[13],n[14]=t[14]+e[14],n[15]=t[15]+e[15],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n[9]=t[9]-e[9],n[10]=t[10]-e[10],n[11]=t[11]-e[11],n[12]=t[12]-e[12],n[13]=t[13]-e[13],n[14]=t[14]-e[14],n[15]=t[15]-e[15],n},c.multiplyTransformation=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=t[12],d=t[13],m=t[14],y=e[0],p=e[1],v=e[2],w=e[4],E=e[5],g=e[6],x=e[8],S=e[9],M=e[10],z=e[12],O=e[13],_=e[14],T=r*y+o*p+c*v,I=i*y+u*p+l*v,N=a*y+s*p+f*v,R=r*w+o*E+c*g,b=i*w+u*E+l*g,P=a*w+s*E+f*g,A=r*x+o*S+c*M,C=i*x+u*S+l*M,L=a*x+s*S+f*M,q=r*z+o*O+c*_+h,U=i*z+u*O+l*_+d,D=a*z+s*O+f*_+m;return n[0]=T,n[1]=I,n[2]=N,n[3]=0,n[4]=R,n[5]=b,n[6]=P,n[7]=0,n[8]=A,n[9]=C,n[10]=L,n[11]=0,n[12]=q,n[13]=U,n[14]=D,n[15]=1,n},c.multiplyByMatrix3=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=e[0],d=e[1],m=e[2],y=e[3],p=e[4],v=e[5],w=e[6],E=e[7],g=e[8],x=r*h+o*d+c*m,S=i*h+u*d+l*m,M=a*h+s*d+f*m,z=r*y+o*p+c*v,O=i*y+u*p+l*v,_=a*y+s*p+f*v,T=r*w+o*E+c*g,I=i*w+u*E+l*g,N=a*w+s*E+f*g;return n[0]=x,n[1]=S,n[2]=M,n[3]=0,n[4]=z,n[5]=O,n[6]=_,n[7]=0,n[8]=T,n[9]=I,n[10]=N,n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n},c.multiplyByTranslation=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=r*t[0]+i*t[4]+a*t[8]+t[12],u=r*t[1]+i*t[5]+a*t[9]+t[13],s=r*t[2]+i*t[6]+a*t[10]+t[14];return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=o,n[13]=u,n[14]=s,n[15]=t[15],n};var y=new t;c.multiplyByUniformScale=function(t,e,n){return y.x=e,y.y=e,y.z=e,c.multiplyByScale(t,y,n)},c.multiplyByScale=function(t,e,n){var r=e.x,i=e.y,a=e.z;return 1===r&&1===i&&1===a?c.clone(t,n):(n[0]=r*t[0],n[1]=r*t[1],n[2]=r*t[2],n[3]=0,n[4]=i*t[4],n[5]=i*t[5],n[6]=i*t[6],n[7]=0,n[8]=a*t[8],n[9]=a*t[9],n[10]=a*t[10],n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=1,n)},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t[0]*r+t[4]*i+t[8]*a+t[12]*o,s=t[1]*r+t[5]*i+t[9]*a+t[13]*o,c=t[2]*r+t[6]*i+t[10]*a+t[14]*o,l=t[3]*r+t[7]*i+t[11]*a+t[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a,u=t[1]*r+t[5]*i+t[9]*a,s=t[2]*r+t[6]*i+t[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a+t[12],u=t[1]*r+t[5]*i+t[9]*a+t[13],s=t[2]*r+t[6]*i+t[10]*a+t[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n[9]=t[9]*e,n[10]=t[10]*e,n[11]=t[11]*e,n[12]=t[12]*e,n[13]=t[13]*e,n[14]=t[14]*e,n[15]=t[15]*e,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e[11]=-t[11],e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=-t[15],e},c.transpose=function(t,e){var n=t[1],r=t[2],i=t[3],a=t[6],o=t[7],u=t[11];return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[10]=t[10],e[11]=t[14],e[12]=i,e[13]=o,e[14]=u,e[15]=t[15],e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e[9]=Math.abs(t[9]),e[10]=Math.abs(t[10]),e[11]=Math.abs(t[11]),e[12]=Math.abs(t[12]),e[13]=Math.abs(t[13]),e[14]=Math.abs(t[14]),e[15]=Math.abs(t[15]),e},c.equals=function(t,e){return t===e||r(t)&&r(e)&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[3]===e[3]&&t[7]===e[7]&&t[11]===e[11]&&t[15]===e[15]},c.equalsEpsilon=function(t,e,n){return t===e||r(t)&&r(e)&&Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n&&Math.abs(t[4]-e[4])<=n&&Math.abs(t[5]-e[5])<=n&&Math.abs(t[6]-e[6])<=n&&Math.abs(t[7]-e[7])<=n&&Math.abs(t[8]-e[8])<=n&&Math.abs(t[9]-e[9])<=n&&Math.abs(t[10]-e[10])<=n&&Math.abs(t[11]-e[11])<=n&&Math.abs(t[12]-e[12])<=n&&Math.abs(t[13]-e[13])<=n&&Math.abs(t[14]-e[14])<=n&&Math.abs(t[15]-e[15])<=n},c.getTranslation=function(t,e){return e.x=t[12],e.y=t[13],e.z=t[14],e},c.getRotation=function(t,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e};var p=new u,v=new u,w=new e,E=new e(0,0,0,1);return c.inverse=function(t,n){if(u.equalsEpsilon(c.getRotation(t,p),v,o.EPSILON7)&&e.equals(c.getRow(t,3,w),E))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-t[12],n[13]=-t[13],n[14]=-t[14],n[15]=1,n;var r=t[0],i=t[4],a=t[8],l=t[12],f=t[1],h=t[5],d=t[9],m=t[13],y=t[2],g=t[6],x=t[10],S=t[14],M=t[3],z=t[7],O=t[11],_=t[15],T=x*_,I=S*O,N=g*_,R=S*z,b=g*O,P=x*z,A=y*_,C=S*M,L=y*O,q=x*M,U=y*z,D=g*M,B=T*h+R*d+b*m-(I*h+N*d+P*m),W=I*f+A*d+q*m-(T*f+C*d+L*m),F=N*f+C*h+U*m-(R*f+A*h+D*m),G=P*f+L*h+D*d-(b*f+q*h+U*d),k=I*i+N*a+P*l-(T*i+R*a+b*l),V=T*r+C*a+L*l-(I*r+A*a+q*l),Y=R*r+A*i+D*l-(N*r+C*i+U*l),j=b*r+q*i+U*a-(P*r+L*i+D*a);T=a*m,I=l*d,N=i*m,R=l*h,b=i*d,P=a*h,A=r*m,C=l*f,L=r*d,q=a*f,U=r*h,D=i*f;var H=T*z+R*O+b*_-(I*z+N*O+P*_),Z=I*M+A*O+q*_-(T*M+C*O+L*_),X=N*M+C*z+U*_-(R*M+A*z+D*_),K=P*M+L*z+D*O-(b*M+q*z+U*O),J=N*x+P*S+I*g-(b*S+T*g+R*x),Q=L*S+T*y+C*x-(A*x+q*S+I*y),$=A*g+D*S+R*y-(U*S+N*y+C*g),te=U*x+b*y+q*g-(L*g+D*x+P*y),ee=r*B+i*W+a*F+l*G;if(Math.abs(ee)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return ee=1/ee,n[0]=B*ee,n[1]=W*ee,n[2]=F*ee,n[3]=G*ee,n[4]=k*ee,n[5]=V*ee,n[6]=Y*ee,n[7]=j*ee,n[8]=H*ee,n[9]=Z*ee,n[10]=X*ee,n[11]=K*ee,n[12]=J*ee,n[13]=Q*ee,n[14]=$*ee,n[15]=te*ee,n},c.inverseTransformation=function(t,e){var n=t[0],r=t[1],i=t[2],a=t[4],o=t[5],u=t[6],s=t[8],c=t[9],l=t[10],f=t[12],h=t[13],d=t[14],m=-n*f-r*h-i*d,y=-a*f-o*h-u*d,p=-s*f-c*h-l*d;return e[0]=n,e[1]=a,e[2]=s,e[3]=0,e[4]=r,e[5]=o,e[6]=c,e[7]=0,e[8]=i,e[9]=u,e[10]=l,e[11]=0,e[12]=m,e[13]=y,e[14]=p,e[15]=1,e},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]&&t[9]===e[n+9]&&t[10]===e[n+10]&&t[11]===e[n+11]&&t[12]===e[n+12]&&t[13]===e[n+13]&&t[14]===e[n+14]&&t[15]===e[n+15]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e,n){this.normal=t.clone(e),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-t.dot(r,n);return e(a)?(t.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new t;return i.fromCartesian4=function(n,r){var o=t.fromCartesian4(n,a),u=n.w;return e(r)?(t.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(e,n){return t.dot(e.normal,n)+e.distance},i.ORIGIN_XY_PLANE=r(new i(t.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(t.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(t.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";var s=function(t,n,r,i){this.west=e(t,0),this.south=e(n,0),this.east=e(r,0),this.north=e(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(t,n,r){r=e(r,0),n[r++]=t.west,n[r++]=t.south,n[r++]=t.east,n[r]=t.north},s.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new s),i.west=t[r++],i.south=t[r++],i.east=t[r++],i.north=t[r],i},s.computeWidth=function(t){var e=t.east,n=t.west;return n>e&&(e+=u.TWO_PI),e-n},s.computeHeight=function(t){return t.north-t.south},s.fromDegrees=function(t,r,i,a,o){return t=u.toRadians(e(t,0)),r=u.toRadians(e(r,0)),i=u.toRadians(e(i,0)),a=u.toRadians(e(a,0)),n(o)?(o.west=t,o.south=r,o.east=i,o.north=a,o):new s(t,r,i,a)},s.fromCartographicArray=function(t,e){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=t.length;c>u;u++){var l=t[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(e)?(e.west=r,e.south=a,e.east=i,e.north=o,e):new s(r,a,i,o)},s.clone=function(t,e){return n(t)?n(e)?(e.west=t.west,e.south=t.south,e.east=t.east,e.north=t.north,e):new s(t.west,t.south,t.east,t.north):void 0},s.prototype.clone=function(t){return s.clone(this,t)},s.prototype.equals=function(t){return s.equals(this,t)},s.equals=function(t,e){return t===e||n(t)&&n(e)&&t.west===e.west&&t.south===e.south&&t.east===e.east&&t.north===e.north},s.prototype.equalsEpsilon=function(t,e){return n(t)&&Math.abs(this.west-t.west)<=e&&Math.abs(this.south-t.south)<=e&&Math.abs(this.east-t.east)<=e&&Math.abs(this.north-t.north)<=e},s.validate=function(){},s.southwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.south,r.height=0,r):new t(e.west,e.south)},s.northwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.north,r.height=0,r):new t(e.west,e.north)},s.northeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.north,r.height=0,r):new t(e.east,e.north)},s.southeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.south,r.height=0,r):new t(e.east,e.south)},s.center=function(e,r){var i=e.east,a=e.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(e.south+e.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new t(o,s)},s.intersection=function(t,e,r){var i=t.east,a=t.west,o=e.east,c=e.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((t.west<t.east||e.west<e.east)&&l>=f)return void 0;var h=Math.max(t.south,e.south),d=Math.min(t.north,e.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(t,e){var n=e.longitude,r=e.latitude,i=t.west,a=t.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=t.south&&r<=t.north};var c=new t;return s.subsample=function(t,r,i,o){r=e(r,a.WGS84),i=e(i,0),n(o)||(o=[]);var l=0,f=t.north,h=t.south,d=t.east,m=t.west,y=c;y.height=i,y.longitude=m,y.latitude=f,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=h,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=0>f?f:h>0?h:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(t,y)&&(o[l]=r.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(t,e,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(e,r){this.center=t.clone(n(e,t.ZERO)),this.radius=n(r,0)},m=new t,y=new t,p=new t,v=new t,w=new t,E=new t,g=new t,x=new t,S=new t,M=new t,z=new t,O=new t;d.fromPoints=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;for(var i=t.clone(e[0],g),a=t.clone(i,m),o=t.clone(i,y),u=t.clone(i,p),s=t.clone(i,v),c=t.clone(i,w),l=t.clone(i,E),f=e.length,h=1;f>h;h++){t.clone(e[h],i);var _=i.x,T=i.y,I=i.z;_<a.x&&t.clone(i,a),_>s.x&&t.clone(i,s),T<o.y&&t.clone(i,o),T>c.y&&t.clone(i,c),I<u.z&&t.clone(i,u),I>l.z&&t.clone(i,l)}var N=t.magnitudeSquared(t.subtract(s,a,x)),R=t.magnitudeSquared(t.subtract(c,o,x)),b=t.magnitudeSquared(t.subtract(l,u,x)),P=a,A=s,C=N;R>C&&(C=R,P=o,A=c),b>C&&(C=b,P=u,A=l);var L=S;L.x=.5*(P.x+A.x),L.y=.5*(P.y+A.y),L.z=.5*(P.z+A.z);var q=t.magnitudeSquared(t.subtract(A,L,x)),U=Math.sqrt(q),D=M;D.x=a.x,D.y=o.y,D.z=u.z;var B=z;B.x=s.x,B.y=c.y,B.z=l.z;var W=t.multiplyByScalar(t.add(D,B,x),.5,O),F=0;for(h=0;f>h;h++){t.clone(e[h],i);var G=t.magnitude(t.subtract(i,W,x));G>F&&(F=G);var k=t.magnitudeSquared(t.subtract(i,L,x));if(k>q){var V=Math.sqrt(k);U=.5*(U+V),q=U*U;var Y=V-U;L.x=(U*L.x+Y*i.x)/V,L.y=(U*L.y+Y*i.y)/V,L.z=(U*L.z+Y*i.z)/V}}return F>U?(t.clone(L,n.center),n.radius=U):(t.clone(W,n.center),n.radius=F),n};var _=new u,T=new t,I=new t,N=new e,R=new e;d.fromRectangle2D=function(t,e,n){return d.fromRectangleWithHeights2D(t,e,0,0,n)},d.fromRectangleWithHeights2D=function(e,i,a,o,u){if(r(u)||(u=new d),!r(e))return u.center=t.clone(t.ZERO,u.center),u.radius=0,u;i=n(i,_),h.southwest(e,N),N.height=a,h.northeast(e,R),R.height=o;var s=i.project(N,T),c=i.project(R,I),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*f,y.z=s.z+.5*m,u};var b=[];d.fromRectangle3D=function(t,e,i,a){e=n(e,o.WGS84),i=n(i,0);var u;return r(t)&&(u=h.subsample(t,e,i,b)),d.fromPoints(u,a)},d.fromVertices=function(e,i,a,o){if(r(o)||(o=new d),!r(e)||0===e.length)return o.center=t.clone(t.ZERO,o.center),o.radius=0,o;i=n(i,t.ZERO),a=n(a,3);var u=g;u.x=e[0]+i.x,u.y=e[1]+i.y,u.z=e[2]+i.z;for(var s=t.clone(u,m),c=t.clone(u,y),l=t.clone(u,p),f=t.clone(u,v),h=t.clone(u,w),_=t.clone(u,E),T=e.length,I=0;T>I;I+=a){var N=e[I]+i.x,R=e[I+1]+i.y,b=e[I+2]+i.z;u.x=N,u.y=R,u.z=b,N<s.x&&t.clone(u,s),N>f.x&&t.clone(u,f),R<c.y&&t.clone(u,c),R>h.y&&t.clone(u,h),b<l.z&&t.clone(u,l),b>_.z&&t.clone(u,_)}var P=t.magnitudeSquared(t.subtract(f,s,x)),A=t.magnitudeSquared(t.subtract(h,c,x)),C=t.magnitudeSquared(t.subtract(_,l,x)),L=s,q=f,U=P;A>U&&(U=A,L=c,q=h),C>U&&(U=C,L=l,q=_);var D=S;D.x=.5*(L.x+q.x),D.y=.5*(L.y+q.y),D.z=.5*(L.z+q.z);var B=t.magnitudeSquared(t.subtract(q,D,x)),W=Math.sqrt(B),F=M;F.x=s.x,F.y=c.y,F.z=l.z;var G=z;G.x=f.x,G.y=h.y,G.z=_.z;var k=t.multiplyByScalar(t.add(F,G,x),.5,O),V=0;for(I=0;T>I;I+=a){u.x=e[I]+i.x,u.y=e[I+1]+i.y,u.z=e[I+2]+i.z;var Y=t.magnitude(t.subtract(u,k,x));Y>V&&(V=Y);var j=t.magnitudeSquared(t.subtract(u,D,x));if(j>B){var H=Math.sqrt(j);W=.5*(W+H),B=W*W;var Z=H-W;D.x=(W*D.x+Z*u.x)/H,D.y=(W*D.y+Z*u.y)/H,D.z=(W*D.z+Z*u.z)/H}}return V>W?(t.clone(D,o.center),o.radius=W):(t.clone(k,o.center),o.radius=V),o},d.fromCornerPoints=function(e,n,i){r(i)||(i=new d);var a=i.center;return t.add(e,n,a),t.multiplyByScalar(a,.5,a),i.radius=t.distance(a,n),i},d.fromEllipsoid=function(e,n){return r(n)||(n=new d),t.clone(t.ZERO,n.center),n.radius=e.maximumRadius,n};var P=new t;d.fromBoundingSpheres=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;var i=e.length;if(1===i)return d.clone(e[0],n);if(2===i)return d.union(e[0],e[1],n);for(var a=[],o=0;i>o;o++)a.push(e[o].center);n=d.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=e[o];s=Math.max(s,t.distance(u,c.center,P)+c.radius)}return n.radius=s,n},d.clone=function(e,n){return r(e)?r(n)?(n.center=t.clone(e.center,n.center),n.radius=e.radius,n):new d(e.center,e.radius):void 0},d.packedLength=4,d.pack=function(t,e,r){r=n(r,0);var i=t.center;e[r++]=i.x,e[r++]=i.y,e[r++]=i.z,e[r]=t.radius},d.unpack=function(t,e,i){e=n(e,0),r(i)||(i=new d);var a=i.center;return a.x=t[e++],a.y=t[e++],a.z=t[e++],i.radius=t[e],i};var A=new t,C=new t;d.union=function(e,n,i){r(i)||(i=new d);var a=e.center,o=e.radius,u=n.center,s=n.radius,c=t.subtract(u,a,A),l=t.magnitude(c);if(o>=l+s)return e.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),h=t.multiplyByScalar(c,(-o+f)/l,C);return t.add(h,a,h),t.clone(h,i.center),i.radius=f,i};var L=new t;d.expand=function(e,n,r){r=d.clone(e,r);var i=t.magnitude(t.subtract(n,r.center,L));return i>r.radius&&(r.radius=i),r},d.intersectPlane=function(e,n){var r=e.center,i=e.radius,a=n.normal,o=t.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new t,0);d.intersect=function(t,e){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(e,q);return d.intersectPlane(t,n)},d.transform=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=l.getMaximumScale(e)*t.radius,n};var U=new t;d.distanceSquaredTo=function(e,n){var r=t.subtract(e.center,n,U);return t.magnitudeSquared(r)-e.radius*e.radius},d.transformWithoutScale=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=t.radius,n};var D=new t;d.computePlaneDistances=function(e,n,i,a){r(a)||(a=new c);var o=t.subtract(e.center,n,D),u=t.multiplyByScalar(i,t.dot(i,o),D),s=t.magnitude(u);return a.start=s-e.radius,a.stop=s+e.radius,a};for(var B=new t,W=new t,F=new t,G=new t,k=new t,V=new e,Y=new Array(8),j=0;8>j;++j)Y[j]=new t;var H=new u;return d.projectTo2D=function(e,r,i){r=n(r,H);var a=r.ellipsoid,o=e.center,u=e.radius,s=a.geodeticSurfaceNormal(o,B),c=t.cross(t.UNIT_Z,s,W);t.normalize(c,c);var l=t.cross(s,c,F);t.normalize(l,l),t.multiplyByScalar(s,u,s),t.multiplyByScalar(l,u,l),t.multiplyByScalar(c,u,c);var f=t.negate(l,k),h=t.negate(c,G),m=Y,y=m[0];t.add(s,l,y),t.add(y,c,y),y=m[1],t.add(s,l,y),t.add(y,h,y),y=m[2],t.add(s,f,y),t.add(y,h,y),y=m[3],t.add(s,f,y),t.add(y,c,y),t.negate(s,s),y=m[4],t.add(s,l,y),t.add(y,c,y),y=m[5],t.add(s,l,y),t.add(y,h,y),y=m[6],t.add(s,f,y),t.add(y,h,y),y=m[7],t.add(s,f,y),t.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var w=m[v];t.add(o,w,w);var E=a.cartesianToCartographic(w,V);r.project(E,w)}i=d.fromPoints(m,i),o=i.center;var g=o.x,x=o.y,S=o.z;return o.x=S,o.y=g,o.z=x,i},d.equals=function(e,n){return e===n||r(e)&&r(n)&&t.equals(e.center,n.center)&&e.radius===n.radius},d.prototype.intersectPlane=function(t){return d.intersectPlane(this,t)},d.prototype.intersect=function(t){return d.intersect(this,t)},d.prototype.equals=function(t){return d.equals(this,t)},d.prototype.clone=function(t){return d.clone(this,t)},d}),define("Core/Fullscreen",["./defined","./defineProperties"],function(t,e){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return e(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(t(n))return n;n=!1;var e=document.body;if("function"==typeof e.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof e[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof e[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",t(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",t(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",t(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",t(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(t){i.supportsFullscreen()&&t[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(t,e,n){"use strict";function r(t){for(var e=t.split("."),n=0,r=e.length;r>n;++n)e[n]=parseInt(e[n],10);return e}function i(){if(!e(p)){p=!1;var t=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(p=!0,v=r(t[1]))}return p}function a(){return i()&&v}function o(){if(!e(w)&&(w=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var t=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(w=!0,E=r(t[1]))}return w}function u(){return o()&&E}function s(){if(!e(g)){g=!1;var t=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==t&&(g=!0,x=r(t[1]),x.isNightly=!!t[2])}return g}function c(){return s()&&x}function l(){if(!e(S)){S=!1;var t;"Microsoft Internet Explorer"===navigator.appName?(t=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(S=!0,M=r(t[1]))):"Netscape"===navigator.appName&&(t=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(S=!0,M=r(t[1])))}return S}function f(){return l()&&M}function h(){if(!e(z)){z=!1;var t=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(z=!0,O=r(t[1]))}return z}function d(){return e(_)||(_=/Windows/i.test(navigator.appVersion)),_}function m(){return h()&&O}function y(){return e(T)||(T=e(window.PointerEvent)&&(!e(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),T}var p,v,w,E,g,x,S,M,z,O,_,T,I={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:t(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return I.supportsFullscreen=function(){return n.supportsFullscreen()},I.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},I.supportsWebWorkers=function(){return"undefined"!=typeof Worker},I}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(t,e,n,r,i){"use strict";if(!r.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(t){switch(t){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},a.fromTypedArray=function(t){return t instanceof Int8Array?a.BYTE:t instanceof Uint8Array?a.UNSIGNED_BYTE:t instanceof Int16Array?a.SHORT:t instanceof Uint16Array?a.UNSIGNED_SHORT:t instanceof Float32Array?a.FLOAT:t instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(t){return e(t)&&(t===a.BYTE||t===a.UNSIGNED_BYTE||t===a.SHORT||t===a.UNSIGNED_SHORT||t===a.FLOAT||t===a.DOUBLE)},a.createTypedArray=function(t,e){switch(t){case a.BYTE:return new Int8Array(e);case a.UNSIGNED_BYTE:return new Uint8Array(e);case a.SHORT:return new Int16Array(e);case a.UNSIGNED_SHORT:return new Uint16Array(e);case a.FLOAT:return new Float32Array(e);case a.DOUBLE:return new Float64Array(e);default:throw new n("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(e,r,i,o){switch(i=t(i,0),o=t(o,(r.byteLength-i)/a.getSizeInBytes(e)),e){case a.BYTE:return new Int8Array(r,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(r,i,o);case a.SHORT:return new Int16Array(r,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(r,i,o);case a.FLOAT:return new Float32Array(r,i,o);case a.DOUBLE:return new Float64Array(r,i,o);default:throw new n("componentDatatype is not a valid value.")}},i(a)}),define("Core/GeometryType",["./freezeObject"],function(t){"use strict";var e={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return t(e)}),define("Core/PrimitiveType",["./freezeObject"],function(t){"use strict";var e={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(t){return t===e.POINTS||t===e.LINES||t===e.LINE_LOOP||t===e.LINE_STRIP||t===e.TRIANGLES||t===e.TRIANGLE_STRIP||t===e.TRIANGLE_FAN}};return t(e)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(t,e,n,r,i){"use strict";var a=function(e){e=t(e,t.EMPTY_OBJECT),this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=t(e.primitiveType,i.TRIANGLES),this.boundingSphere=e.boundingSphere,this.geometryType=t(e.geometryType,r.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(t){var r=-1;for(var i in t.attributes)if(t.attributes.hasOwnProperty(i)&&e(t.attributes[i])&&e(t.attributes[i].values)){var a=t.attributes[i],o=a.values.length/a.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=t(e.normalize,!1),this.values=e.values};return e}),define("Core/GeometryAttributes",["./defaultValue"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.position=e.position,this.normal=e.normal,this.st=e.st,this.binormal=e.binormal,this.tangent=e.tangent,this.color=e.color};return e}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(t){switch(t){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(e){return t(e)&&(e===i.UNSIGNED_BYTE||e===i.UNSIGNED_SHORT||e===i.UNSIGNED_INT)},i.createTypedArray=function(t,e){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e):new Uint16Array(e)},i.createTypedArrayFromArrayBuffer=function(t,e,n,i){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e,n,i):new Uint16Array(e,n,i)},n(i)}),define("Core/EllipsoidOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType"],function(t,e,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=new e(1,1,1),m=Math.cos,y=Math.sin,p=function(t){t=r(t,r.EMPTY_OBJECT);var n=r(t.radii,d),i=r(t.stackPartitions,10),a=r(t.slicePartitions,8),o=r(t.subdivisions,128);this._radii=e.clone(n),this._stackPartitions=i,this._slicePartitions=a,this._subdivisions=o,this._workerName="createEllipsoidOutlineGeometry"};p.packedLength=e.packedLength+3,p.pack=function(t,n,i){i=r(i,0),e.pack(t._radii,n,i),i+=e.packedLength,n[i++]=t._stackPartitions,n[i++]=t._slicePartitions,n[i]=t._subdivisions};var v=new e,w={radii:v,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};return p.unpack=function(t,n,a){n=r(n,0);var o=e.unpack(t,n,v);n+=e.packedLength;var u=t[n++],s=t[n++],c=t[n++];return i(a)?(a._radii=e.clone(o,a._radii),a._stackPartitions=u,a._slicePartitions=s,a._subdivisions=c,a):(w.stackPartitions=u,w.slicePartitions=s,w.subdivisions=c,new p(w))},p.createGeometry=function(e){var r,i,a,d,p,v,w=e._radii,E=o.fromCartesian3(w),g=e._stackPartitions,x=e._slicePartitions,S=e._subdivisions,M=S*(g+x-1),z=M-x+2,O=new Float64Array(3*z),_=l.createTypedArray(z,2*M),T=0,I=new Array(S),N=new Array(S);for(r=0;S>r;r++)a=f.TWO_PI*r/S,I[r]=m(a),N[r]=y(a);for(r=1;g>r;r++)for(d=Math.PI*r/g,p=m(d),v=y(d),i=0;S>i;i++)O[T++]=w.x*I[i]*v,O[T++]=w.y*N[i]*v,O[T++]=w.z*p; +for(I.length=x,N.length=x,r=0;x>r;r++)a=f.TWO_PI*r/x,I[r]=m(a),N[r]=y(a);for(O[T++]=0,O[T++]=0,O[T++]=w.z,r=1;S>r;r++)for(d=Math.PI*r/S,p=m(d),v=y(d),i=0;x>i;i++)O[T++]=w.x*I[i]*v,O[T++]=w.y*N[i]*v,O[T++]=w.z*p;for(O[T++]=0,O[T++]=0,O[T++]=-w.z,T=0,r=0;g-1>r;++r){var R=r*S;for(i=0;S-1>i;++i)_[T++]=R+i,_[T++]=R+i+1;_[T++]=R+S-1,_[T++]=R}var b=S*(g-1);for(i=1;x+1>i;++i)_[T++]=b,_[T++]=b+i;for(r=0;S-2>r;++r){var P=r*x+1+b,A=(r+1)*x+1+b;for(i=0;x-1>i;++i)_[T++]=A+i,_[T++]=P+i;_[T++]=A+x-1,_[T++]=P+x-1}var C=O.length/3-1;for(i=C-1;i>C-x-1;--i)_[T++]=C,_[T++]=i;var L=new c({position:new s({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:O})});return new u({attributes:L,indices:_,primitiveType:h.LINES,boundingSphere:t.fromEllipsoid(E)})},p}),define("Workers/createEllipsoidOutlineGeometry",["../Core/defined","../Core/EllipsoidOutlineGeometry"],function(t,e){"use strict";return function(n,r){return t(n.buffer,r)&&(n=e.unpack(n,r)),e.createGeometry(n)}})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createGeometry.js b/libs/Cesium/Workers/createGeometry.js new file mode 100644 index 0000000000..fff88dd846 --- /dev/null +++ b/libs/Cesium/Workers/createGeometry.js @@ -0,0 +1,76 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var r;for(this.mti==this.N+1&&this.init_genrand(5489),r=0;r<this.N-this.M;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+this.M]^e>>>1^t[1&e];for(;r<this.N-1;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};r.EPSILON1=.1,r.EPSILON2=.01,r.EPSILON3=.001,r.EPSILON4=1e-4,r.EPSILON5=1e-5,r.EPSILON6=1e-6,r.EPSILON7=1e-7,r.EPSILON8=1e-8,r.EPSILON9=1e-9,r.EPSILON10=1e-10,r.EPSILON11=1e-11,r.EPSILON12=1e-12,r.EPSILON13=1e-13,r.EPSILON14=1e-14,r.EPSILON15=1e-15,r.EPSILON16=1e-16,r.EPSILON17=1e-17,r.EPSILON18=1e-18,r.EPSILON19=1e-19,r.EPSILON20=1e-20,r.GRAVITATIONALPARAMETER=3986004418e5,r.SOLAR_RADIUS=6955e5,r.LUNAR_RADIUS=1737400,r.SIXTY_FOUR_KILOBYTES=65536,r.sign=function(e){return e>0?1:0>e?-1:0},r.signNotZero=function(e){return 0>e?-1:1},r.toSNorm=function(e){return Math.round(255*(.5*r.clamp(e,-1,1)+.5))},r.fromSNorm=function(e){return 2*(r.clamp(e,0,255)/255)-1},r.sinh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t-r)},r.cosh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t+r)},r.lerp=function(e,t,r){return(1-r)*e+r*t},r.PI=Math.PI,r.ONE_OVER_PI=1/Math.PI,r.PI_OVER_TWO=.5*Math.PI,r.PI_OVER_THREE=Math.PI/3,r.PI_OVER_FOUR=Math.PI/4,r.PI_OVER_SIX=Math.PI/6,r.THREE_PI_OVER_TWO=.5*3*Math.PI,r.TWO_PI=2*Math.PI,r.ONE_OVER_TWO_PI=1/(2*Math.PI),r.RADIANS_PER_DEGREE=Math.PI/180,r.DEGREES_PER_RADIAN=180/Math.PI,r.RADIANS_PER_ARCSECOND=r.RADIANS_PER_DEGREE/3600,r.toRadians=function(e){return e*r.RADIANS_PER_DEGREE},r.toDegrees=function(e){return e*r.DEGREES_PER_RADIAN},r.convertLongitudeRange=function(e){var t=r.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n},r.negativePiToPi=function(e){return r.zeroToTwoPi(e+r.PI)-r.PI},r.zeroToTwoPi=function(e){var t=r.mod(e,r.TWO_PI);return Math.abs(t)<r.EPSILON14&&Math.abs(e)>r.EPSILON14?r.TWO_PI:t},r.mod=function(e,t){return(e%t+t)%t},r.equalsEpsilon=function(e,r,n,o){o=t(o,n);var i=Math.abs(e-r);return o>=i||i<=n*Math.max(Math.abs(e),Math.abs(r))};var n=[1];r.factorial=function(e){var t=n.length;if(e>=t)for(var r=n[t-1],o=t;e>=o;o++)n.push(r*o);return n[e]},r.incrementWrap=function(e,r,n){return n=t(n,0),++e,e>r&&(e=n),e},r.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},r.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},r.clamp=function(e,t,r){return t>e?t:e>r?r:e};var o=new e;return r.setRandomNumberSeed=function(t){o=new e(t)},r.nextRandomNumber=function(){return o.random()},r.acosClamped=function(e){return Math.acos(r.clamp(e,-1,1))},r.asinClamped=function(e){return Math.asin(r.clamp(e,-1,1))},r.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},r}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o){"use strict";var i=function(t,r,n){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0)};i.fromSpherical=function(r,n){t(n)||(n=new i);var o=r.clock,a=r.cone,u=e(r.magnitude,1),s=u*Math.sin(a);return n.x=s*Math.cos(o),n.y=s*Math.sin(o),n.z=u*Math.cos(a),n},i.fromElements=function(e,r,n,o){return t(o)?(o.x=e,o.y=r,o.z=n,o):new i(e,r,n)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r):new i(e.x,e.y,e.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n]=t.z},i.unpack=function(r,n,o){return n=e(n,0),t(o)||(o=new i),o.x=r[n++],o.y=r[n++],o.z=r[n],o},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var a=new i;i.distance=function(e,t){return i.subtract(e,t,a),i.magnitude(a)},i.distanceSquared=function(e,t){return i.subtract(e,t,a),i.magnitudeSquared(a)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i,c=new i;i.angleBetween=function(e,t){i.normalize(e,s),i.normalize(t,c);var r=i.dot(s,c),n=i.magnitude(i.cross(s,c,s));return Math.atan2(n,r)};var l=new i;i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,l);return i.abs(r,r),t=r.x<=r.y?r.x<=r.z?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Z,t):r.y<=r.z?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_Z,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&o.equalsEpsilon(e.x,r.x,n,i)&&o.equalsEpsilon(e.y,r.y,n,i)&&o.equalsEpsilon(e.z,r.z,n,i)},i.cross=function(e,t,r){var n=e.x,o=e.y,i=e.z,a=t.x,u=t.y,s=t.z,c=o*s-i*u,l=i*a-n*s,f=n*u-o*a;return r.x=c,r.y=l,r.z=f,r},i.fromDegrees=function(e,t,r,n,a){var u=o.toRadians(e),s=o.toRadians(t);return i.fromRadians(u,s,r,n,a)};var f=new i,h=new i,m=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(r,n,o,a,u){o=e(o,0);var s=t(a)?a.radiiSquared:m,c=Math.cos(n);f.x=c*Math.cos(r),f.y=c*Math.sin(r),f.z=Math.sin(n),f=i.normalize(f,f),i.multiplyComponents(s,f,h);var l=Math.sqrt(i.dot(f,h));return h=i.divideByScalar(h,l,h),f=i.multiplyByScalar(f,o,f),t(u)||(u=new i),i.add(h,f,u)},i.fromDegreesArray=function(e,t,r){for(var n=new Array(e.length),a=0;a<e.length;a++)n[a]=o.toRadians(e[a]);return i.fromRadiansArray(n,t,r)},i.fromRadiansArray=function(e,r,n){var o=e.length;t(n)?n.length=o/2:n=new Array(o/2);for(var a=0;o>a;a+=2){var u=e[a],s=e[a+1];n[a/2]=i.fromRadians(u,s,0,r,n[a/2])}return n},i.fromDegreesArrayHeights=function(e,t,r){for(var n=new Array(e.length),a=0;a<e.length;a+=3)n[a]=o.toRadians(e[a]),n[a+1]=o.toRadians(e[a+1]),n[a+2]=e[a+2];return i.fromRadiansArrayHeights(n,t,r)},i.fromRadiansArrayHeights=function(e,r,n){var o=e.length;t(n)?n.length=o/3:n=new Array(o/3);for(var a=0;o>a;a+=3){var u=e[a],s=e[a+1],c=e[a+2];n[a/3]=i.fromRadians(u,s,c,r,n[a/3])}return n},i.ZERO=n(new i(0,0,0)),i.UNIT_X=n(new i(1,0,0)),i.UNIT_Y=n(new i(0,1,0)),i.UNIT_Z=n(new i(0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o){"use strict";var i=function(t,r,n){this.longitude=e(t,0),this.latitude=e(r,0),this.height=e(n,0)};return i.fromRadians=function(r,n,o,a){return o=e(o,0),t(a)?(a.longitude=r,a.latitude=n,a.height=o,a):new i(r,n,o)},i.fromDegrees=function(e,t,r,n){return e=o.toRadians(e),t=o.toRadians(t),i.fromRadians(e,t,r,n)},i.clone=function(e,r){return t(e)?t(r)?(r.longitude=e.longitude,r.latitude=e.latitude,r.height=e.height,r):new i(e.longitude,e.latitude,e.height):void 0},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.longitude===r.longitude&&e.latitude===r.latitude&&e.height===r.height},i.equalsEpsilon=function(e,r,n){return e===r||t(e)&&t(r)&&Math.abs(e.longitude-r.longitude)<=n&&Math.abs(e.latitude-r.latitude)<=n&&Math.abs(e.height-r.height)<=n},i.ZERO=n(new i(0,0,0)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},r=function(r,n){e(t[r])||(t[r]=!0,console.log(n))};return r}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),r=Object.defineProperties;return t&&e(r)||(r=function(e){return e}),r}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o,i,a,u){"use strict";function s(t,n,o,i){n=r(n,0),o=r(o,0),i=r(i,0),t._radii=new e(n,o,i),t._radiiSquared=new e(n*n,o*o,i*i),t._radiiToTheFourth=new e(n*n*n*n,o*o*o*o,i*i*i*i),t._oneOverRadii=new e(0===n?0:1/n,0===o?0:1/o,0===i?0:1/i),t._oneOverRadiiSquared=new e(0===n?0:1/(n*n),0===o?0:1/(o*o),0===i?0:1/(i*i)),t._minimumRadius=Math.min(n,o,i),t._maximumRadius=Math.max(n,o,i),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,r){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,r)};o(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,r){if(!n(t))return void 0;var o=t._radii;return n(r)?(e.clone(o,r._radii),e.clone(t._radiiSquared,r._radiiSquared),e.clone(t._radiiToTheFourth,r._radiiToTheFourth),e.clone(t._oneOverRadii,r._oneOverRadii),e.clone(t._oneOverRadiiSquared,r._oneOverRadiiSquared),r._minimumRadius=t._minimumRadius,r._maximumRadius=t._maximumRadius,r._centerToleranceSquared=t._centerToleranceSquared,r):new c(o.x,o.y,o.z)},c.fromCartesian3=function(e,t){return n(t)||(t=new c),n(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=a(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=a(new c(1,1,1)),c.MOON=a(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,n,o){o=r(o,0),e.pack(t._radii,n,o)},c.unpack=function(t,n,o){n=r(n,0);var i=e.unpack(t,n);return c.fromCartesian3(i,o)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,r){var o=t.longitude,i=t.latitude,a=Math.cos(i),u=a*Math.cos(o),s=a*Math.sin(o),c=Math.sin(i);return n(r)||(r=new e),r.x=u,r.y=s,r.z=c,e.normalize(r,r)},c.prototype.geodeticSurfaceNormal=function(t,r){return n(r)||(r=new e),r=e.multiplyComponents(t,this._oneOverRadiiSquared,r),e.normalize(r,r)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,r){var o=l,i=f;this.geodeticSurfaceNormalCartographic(t,o),e.multiplyComponents(this._radiiSquared,o,i);var a=Math.sqrt(e.dot(o,i));return e.divideByScalar(i,a,i),e.multiplyByScalar(o,t.height,o),n(r)||(r=new e),e.add(i,o,r)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var o=0;r>o;o++)t[o]=this.cartographicToCartesian(e[o],t[o]);return t};var h=new e,m=new e,d=new e;c.prototype.cartesianToCartographic=function(r,o){var i=this.scaleToGeodeticSurface(r,m);if(!n(i))return void 0;var a=this.geodeticSurfaceNormal(i,h),s=e.subtract(r,i,d),c=Math.atan2(a.y,a.x),l=Math.asin(a.z),f=u.sign(e.dot(s,r))*e.magnitude(s);return n(o)?(o.longitude=c,o.latitude=l,o.height=f,o):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var o=0;r>o;++o)t[o]=this.cartesianToCartographic(e[o],t[o]);return t};var p=new e,v=new e;return c.prototype.scaleToGeodeticSurface=function(t,r){var o=t.x,i=t.y,a=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=o*o*c*c,m=i*i*l*l,d=a*a*f*f,y=h+m+d,g=Math.sqrt(1/y),E=e.multiplyByScalar(t,g,p);if(y<this._centerToleranceSquared)return isFinite(g)?e.clone(E,r):void 0;var S=this._oneOverRadiiSquared,C=S.x,w=S.y,b=S.z,x=v;x.x=2*E.x*C,x.y=2*E.y*w,x.z=2*E.z*b;var A,T,M,I,O,R,N,L,P,z,D,F=(1-g)*e.magnitude(t)/(.5*e.magnitude(x)),_=0;do{F-=_,M=1/(1+F*C),I=1/(1+F*w),O=1/(1+F*b),R=M*M,N=I*I,L=O*O,P=R*M,z=N*I,D=L*O,A=h*R+m*N+d*L-1,T=h*P*C+m*z*w+d*D*b;var B=-2*T;_=A/B}while(Math.abs(A)>u.EPSILON12);return n(r)?(r.x=o*M,r.y=i*I,r.z=a*O,r):new e(o*M,i*I,a*O)},c.prototype.scaleToGeocentricSurface=function(t,r){n(r)||(r=new e);var o=t.x,i=t.y,a=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(o*o*u.x+i*i*u.y+a*a*u.z);return e.multiplyByScalar(t,s,r)},c.prototype.transformPositionToScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._oneOverRadii,r)},c.prototype.transformPositionFromScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._radii,r)},c.prototype.equals=function(t){return this===t||n(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,r,n,o,i,a){"use strict";var u=function(e){this._ellipsoid=r(e,a.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return o(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,r){var o=this._semimajorAxis,i=t.longitude*o,a=t.latitude*o,u=t.height;return n(r)?(r.x=i,r.y=a,r.z=u,r):new e(i,a,u)},u.prototype.unproject=function(e,r){var o=this._oneOverSemimajorAxis,i=e.x*o,a=e.y*o,u=e.z;return n(r)?(r.longitude=i,r.latitude=a,r.height=u,r):new t(i,a,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,r){this.start=e(t,0),this.stop=e(r,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o){"use strict";var i=function(t,r,n,o){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0),this.w=e(o,0)};i.fromElements=function(e,r,n,o,a){return t(a)?(a.x=e,a.y=r,a.z=n,a.w=o,a):new i(e,r,n,o)},i.fromColor=function(e,r){return t(r)?(r.x=e.red,r.y=e.green,r.z=e.blue,r.w=e.alpha,r):new i(e.red,e.green,e.blue,e.alpha)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r.w=e.w,r):new i(e.x,e.y,e.z,e.w):void 0},i.packedLength=4,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n++]=t.z,r[n]=t.w},i.unpack=function(r,n,o){return n=e(n,0),t(o)||(o=new i),o.x=r[n++],o.y=r[n++],o.z=r[n++],o.w=r[n],o},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r.w=Math.min(e.w,t.w),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r.w=Math.max(e.w,t.w),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var a=new i;i.distance=function(e,t){return i.subtract(e,t,a),i.magnitude(a)},i.distanceSquared=function(e,t){return i.subtract(e,t,a),i.magnitudeSquared(a)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t.w=e.w/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r.w=e.w*t.w,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i;return i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,s);return i.abs(r,r),t=r.x<=r.y?r.x<=r.z?r.x<=r.w?i.clone(i.UNIT_X,t):i.clone(i.UNIT_W,t):r.z<=r.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t):r.y<=r.z?r.y<=r.w?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_W,t):r.z<=r.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z&&e.w===r.w},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]&&e.w===t[r+3]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&o.equalsEpsilon(e.x,r.x,n,i)&&o.equalsEpsilon(e.y,r.y,n,i)&&o.equalsEpsilon(e.z,r.z,n,i)&&o.equalsEpsilon(e.w,r.w,n,i)},i.ZERO=n(new i(0,0,0,0)),i.UNIT_X=n(new i(1,0,0,0)),i.UNIT_Y=n(new i(0,1,0,0)),i.UNIT_Z=n(new i(0,0,1,0)),i.UNIT_W=n(new i(0,0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o,i){"use strict";function a(e){for(var t=0,r=0;9>r;++r){var n=e[r];t+=n*n}return Math.sqrt(t)}function u(e){for(var t=0,r=0;3>r;++r){var n=e[c.getElementIndex(m[r],h[r])];t+=2*n*n}return Math.sqrt(t)}function s(e,t){for(var r=i.EPSILON15,n=0,o=1,a=0;3>a;++a){var u=Math.abs(e[c.getElementIndex(m[a],h[a])]);u>n&&(o=a,n=u)}var s=1,l=0,f=h[o],d=m[o];if(Math.abs(e[c.getElementIndex(d,f)])>r){var p,v=e[c.getElementIndex(d,d)],y=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(d,f)],E=(v-y)/2/g;p=0>E?-1/(-E+Math.sqrt(1+E*E)):1/(E+Math.sqrt(1+E*E)),s=1/Math.sqrt(1+p*p),l=p*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(d,d)]=s,t[c.getElementIndex(d,f)]=l,t[c.getElementIndex(f,d)]=-l,t}var c=function(e,r,n,o,i,a,u,s,c){this[0]=t(e,0),this[1]=t(o,0),this[2]=t(u,0),this[3]=t(r,0),this[4]=t(i,0),this[5]=t(s,0),this[6]=t(n,0),this[7]=t(a,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,r,n){n=t(n,0),r[n++]=e[0],r[n++]=e[1],r[n++]=e[2],r[n++]=e[3],r[n++]=e[4],r[n++]=e[5],r[n++]=e[6],r[n++]=e[7],r[n++]=e[8]},c.unpack=function(e,n,o){return n=t(n,0),r(o)||(o=new c),o[0]=e[n++],o[1]=e[n++],o[2]=e[n++],o[3]=e[n++],o[4]=e[n++],o[5]=e[n++],o[6]=e[n++],o[7]=e[n++],o[8]=e[n++],o},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,n,o){return n=t(n,0),r(o)||(o=new c),o[0]=e[n],o[1]=e[n+1],o[2]=e[n+2],o[3]=e[n+3],o[4]=e[n+4],o[5]=e[n+5],o[6]=e[n+6],o[7]=e[n+7],o[8]=e[n+8],o},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var n=e.x*e.x,o=e.x*e.y,i=e.x*e.z,a=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,h=e.z*e.w,m=e.w*e.w,d=n-u-f+m,p=2*(o-h),v=2*(i+l),y=2*(o+h),g=-n+u-f+m,E=2*(s-a),S=2*(i-l),C=2*(s+a),w=-n-u+f+m;return r(t)?(t[0]=d,t[1]=y,t[2]=S,t[3]=p,t[4]=g,t[5]=C,t[6]=v,t[7]=E,t[8]=w,t):new c(d,p,v,y,g,E,S,C,w)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return r(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var n=Math.cos(e),o=Math.sin(e);return r(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=o,t[6]=0,t[7]=-o,t[8]=n,t):new c(1,0,0,0,n,-o,0,o,n)},c.fromRotationY=function(e,t){var n=Math.cos(e),o=Math.sin(e);return r(t)?(t[0]=n,t[1]=0,t[2]=-o,t[3]=0,t[4]=1,t[5]=0,t[6]=o,t[7]=0,t[8]=n,t):new c(n,0,o,0,1,0,-o,0,n)},c.fromRotationZ=function(e,t){var n=Math.cos(e),o=Math.sin(e);return r(t)?(t[0]=n,t[1]=o,t[2]=0,t[3]=-o,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(n,-o,0,o,n,0,0,0,1)},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,r){var n=3*t,o=e[n],i=e[n+1],a=e[n+2];return r.x=o,r.y=i,r.z=a,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var o=3*t;return n[o]=r.x,n[o+1]=r.y,n[o+2]=r.z,n},c.getRow=function(e,t,r){var n=e[t],o=e[t+3],i=e[t+6];return r.x=n,r.y=o,r.z=i,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+3]=r.y,n[t+6]=r.z,n};var l=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),r.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),r.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),r};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,r){var n=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],o=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],i=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],a=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return r[0]=n,r[1]=o,r[2]=i,r[3]=a,r[4]=u,r[5]=s,r[6]=c,r[7]=l,r[8]=f,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r},c.multiplyByVector=function(e,t,r){var n=t.x,o=t.y,i=t.z,a=e[0]*n+e[3]*o+e[6]*i,u=e[1]*n+e[4]*o+e[7]*i,s=e[2]*n+e[5]*o+e[8]*i;return r.x=a,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r},c.multiplyByScale=function(e,t,r){return r[0]=e[0]*t.x,r[1]=e[1]*t.x,r[2]=e[2]*t.x,r[3]=e[3]*t.y,r[4]=e[4]*t.y,r[5]=e[5]*t.y,r[6]=e[6]*t.z,r[7]=e[7]*t.z,r[8]=e[8]*t.z,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var r=e[0],n=e[3],o=e[6],i=e[1],a=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=r,t[1]=n,t[2]=o,t[3]=i,t[4]=a,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var h=[1,0,0],m=[2,2,1],d=new c,p=new c;return c.computeEigenDecomposition=function(e,t){var n=i.EPSILON20,o=10,l=0,f=0;r(t)||(t={});for(var h=t.unitary=c.clone(c.IDENTITY,t.unitary),m=t.diagonal=c.clone(e,t.diagonal),v=n*a(m);o>f&&u(m)>v;)s(m,d),c.transpose(d,p),c.multiply(m,d,m),c.multiply(p,m,m),c.multiply(h,d,h),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],r=e[3],n=e[6],o=e[1],i=e[4],a=e[7],u=e[2],s=e[5],c=e[8];return t*(i*c-s*a)+o*(s*n-r*c)+u*(r*a-i*n)},c.inverse=function(e,t){var r=e[0],o=e[1],a=e[2],u=e[3],s=e[4],l=e[5],f=e[6],h=e[7],m=e[8],d=c.determinant(e);if(Math.abs(d)<=i.EPSILON15)throw new n("matrix is not invertible");t[0]=s*m-h*l,t[1]=h*a-o*m,t[2]=o*l-s*a,t[3]=f*l-u*m,t[4]=r*m-f*a,t[5]=u*a-r*l,t[6]=u*h-f*s,t[7]=f*o-r*h,t[8]=r*s-u*o;var p=1/d;return c.multiplyByScalar(t,p,t)},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n},c.IDENTITY=o(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=o(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,r,n,o,i,a,u,s){"use strict";var c=function(e,t,n,o,i,a,u,s,c,l,f,h,m,d,p,v){this[0]=r(e,0),this[1]=r(i,0),this[2]=r(c,0),this[3]=r(m,0),this[4]=r(t,0),this[5]=r(a,0),this[6]=r(l,0),this[7]=r(d,0),this[8]=r(n,0),this[9]=r(u,0),this[10]=r(f,0),this[11]=r(p,0),this[12]=r(o,0),this[13]=r(s,0),this[14]=r(h,0),this[15]=r(v,0)};c.packedLength=16,c.pack=function(e,t,n){n=r(n,0),t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15]},c.unpack=function(e,t,o){return t=r(t,0),n(o)||(o=new c),o[0]=e[t++],o[1]=e[t++],o[2]=e[t++],o[3]=e[t++],o[4]=e[t++],o[5]=e[t++],o[6]=e[t++],o[7]=e[t++],o[8]=e[t++],o[9]=e[t++],o[10]=e[t++],o[11]=e[t++],o[12]=e[t++],o[13]=e[t++],o[14]=e[t++],o[15]=e[t],o},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,o,i){return o=r(o,e.ZERO),n(i)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=0,i[4]=t[3],i[5]=t[4],i[6]=t[5],i[7]=0,i[8]=t[6],i[9]=t[7],i[10]=t[8],i[11]=0,i[12]=o.x,i[13]=o.y,i[14]=o.z,i[15]=1,i):new c(t[0],t[3],t[6],o.x,t[1],t[4],t[7],o.y,t[2],t[5],t[8],o.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,r,o){n(o)||(o=new c);var i=r.x,a=r.y,u=r.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,h=t.x*t.w,m=t.y*t.y,d=t.y*t.z,p=t.y*t.w,v=t.z*t.z,y=t.z*t.w,g=t.w*t.w,E=s-m-v+g,S=2*(l-y),C=2*(f+p),w=2*(l+y),b=-s+m-v+g,x=2*(d-h),A=2*(f-p),T=2*(d+h),M=-s-m+v+g;return o[0]=E*i,o[1]=w*i,o[2]=A*i,o[3]=0,o[4]=S*a,o[5]=b*a,o[6]=T*a,o[7]=0,o[8]=C*u,o[9]=x*u,o[10]=M*u,o[11]=0,o[12]=e.x,o[13]=e.y,o[14]=e.z,o[15]=1,o},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,h=new e;c.fromCamera=function(t,r){var o=t.eye,i=t.target,a=t.up;e.normalize(e.subtract(i,o,l),l),e.normalize(e.cross(l,a,f),f),e.normalize(e.cross(f,l,h),h);var u=f.x,s=f.y,m=f.z,d=l.x,p=l.y,v=l.z,y=h.x,g=h.y,E=h.z,S=o.x,C=o.y,w=o.z,b=u*-S+s*-C+m*-w,x=y*-S+g*-C+E*-w,A=d*S+p*C+v*w;return n(r)?(r[0]=u,r[1]=y,r[2]=-d,r[3]=0,r[4]=s,r[5]=g,r[6]=-p,r[7]=0,r[8]=m,r[9]=E,r[10]=-v,r[11]=0,r[12]=b,r[13]=x,r[14]=A,r[15]=1,r):new c(u,s,m,b,y,g,E,x,-d,-p,-v,A,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,r,n,o){var i=Math.tan(.5*e),a=1/i,u=a/t,s=(n+r)/(r-n),c=2*n*r/(r-n);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=a,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=s,o[11]=-1,o[12]=0,o[13]=0,o[14]=c,o[15]=0,o},c.computeOrthographicOffCenter=function(e,t,r,n,o,i,a){var u=1/(t-e),s=1/(n-r),c=1/(i-o),l=-(t+e)*u,f=-(n+r)*s,h=-(i+o)*c;return u*=2,s*=2,c*=-2,a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=s,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=c,a[11]=0,a[12]=l,a[13]=f,a[14]=h,a[15]=1,a +},c.computePerspectiveOffCenter=function(e,t,r,n,o,i,a){var u=2*o/(t-e),s=2*o/(n-r),c=(t+e)/(t-e),l=(n+r)/(n-r),f=-(i+o)/(i-o),h=-1,m=-2*i*o/(i-o);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=s,a[6]=0,a[7]=0,a[8]=c,a[9]=l,a[10]=f,a[11]=h,a[12]=0,a[13]=0,a[14]=m,a[15]=0,a},c.computeInfinitePerspectiveOffCenter=function(e,t,r,n,o,i){var a=2*o/(t-e),u=2*o/(n-r),s=(t+e)/(t-e),c=(n+r)/(n-r),l=-1,f=-1,h=-2*o;return i[0]=a,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=u,i[6]=0,i[7]=0,i[8]=s,i[9]=c,i[10]=l,i[11]=f,i[12]=0,i[13]=0,i[14]=h,i[15]=0,i},c.computeViewportTransformation=function(e,t,n,o){e=r(e,r.EMPTY_OBJECT);var i=r(e.x,0),a=r(e.y,0),u=r(e.width,0),s=r(e.height,0);t=r(t,0),n=r(n,1);var c=.5*u,l=.5*s,f=.5*(n-t),h=c,m=l,d=f,p=i+c,v=a+l,y=t+f,g=1;return o[0]=h,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=m,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=d,o[11]=0,o[12]=p,o[13]=v,o[14]=y,o[15]=g,o},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,r){var n=4*t,o=e[n],i=e[n+1],a=e[n+2],u=e[n+3];return r.x=o,r.y=i,r.z=a,r.w=u,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var o=4*t;return n[o]=r.x,n[o+1]=r.y,n[o+2]=r.z,n[o+3]=r.w,n},c.setTranslation=function(e,t,r){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=t.x,r[13]=t.y,r[14]=t.z,r[15]=e[15],r},c.getRow=function(e,t,r){var n=e[t],o=e[t+4],i=e[t+8],a=e[t+12];return r.x=n,r.y=o,r.z=i,r.w=a,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+4]=r.y,n[t+8]=r.z,n[t+12]=r.w,n};var m=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],m)),r.y=e.magnitude(e.fromElements(t[4],t[5],t[6],m)),r.z=e.magnitude(e.fromElements(t[8],t[9],t[10],m)),r};var d=new e;c.getMaximumScale=function(t){return c.getScale(t,d),e.maximumComponent(d)},c.multiply=function(e,t,r){var n=e[0],o=e[1],i=e[2],a=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],h=e[9],m=e[10],d=e[11],p=e[12],v=e[13],y=e[14],g=e[15],E=t[0],S=t[1],C=t[2],w=t[3],b=t[4],x=t[5],A=t[6],T=t[7],M=t[8],I=t[9],O=t[10],R=t[11],N=t[12],L=t[13],P=t[14],z=t[15],D=n*E+u*S+f*C+p*w,F=o*E+s*S+h*C+v*w,_=i*E+c*S+m*C+y*w,B=a*E+l*S+d*C+g*w,U=n*b+u*x+f*A+p*T,G=o*b+s*x+h*A+v*T,q=i*b+c*x+m*A+y*T,k=a*b+l*x+d*A+g*T,V=n*M+u*I+f*O+p*R,W=o*M+s*I+h*O+v*R,Y=i*M+c*I+m*O+y*R,H=a*M+l*I+d*O+g*R,j=n*N+u*L+f*P+p*z,K=o*N+s*L+h*P+v*z,Z=i*N+c*L+m*P+y*z,X=a*N+l*L+d*P+g*z;return r[0]=D,r[1]=F,r[2]=_,r[3]=B,r[4]=U,r[5]=G,r[6]=q,r[7]=k,r[8]=V,r[9]=W,r[10]=Y,r[11]=H,r[12]=j,r[13]=K,r[14]=Z,r[15]=X,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r[9]=e[9]+t[9],r[10]=e[10]+t[10],r[11]=e[11]+t[11],r[12]=e[12]+t[12],r[13]=e[13]+t[13],r[14]=e[14]+t[14],r[15]=e[15]+t[15],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r[9]=e[9]-t[9],r[10]=e[10]-t[10],r[11]=e[11]-t[11],r[12]=e[12]-t[12],r[13]=e[13]-t[13],r[14]=e[14]-t[14],r[15]=e[15]-t[15],r},c.multiplyTransformation=function(e,t,r){var n=e[0],o=e[1],i=e[2],a=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=e[12],m=e[13],d=e[14],p=t[0],v=t[1],y=t[2],g=t[4],E=t[5],S=t[6],C=t[8],w=t[9],b=t[10],x=t[12],A=t[13],T=t[14],M=n*p+a*v+c*y,I=o*p+u*v+l*y,O=i*p+s*v+f*y,R=n*g+a*E+c*S,N=o*g+u*E+l*S,L=i*g+s*E+f*S,P=n*C+a*w+c*b,z=o*C+u*w+l*b,D=i*C+s*w+f*b,F=n*x+a*A+c*T+h,_=o*x+u*A+l*T+m,B=i*x+s*A+f*T+d;return r[0]=M,r[1]=I,r[2]=O,r[3]=0,r[4]=R,r[5]=N,r[6]=L,r[7]=0,r[8]=P,r[9]=z,r[10]=D,r[11]=0,r[12]=F,r[13]=_,r[14]=B,r[15]=1,r},c.multiplyByMatrix3=function(e,t,r){var n=e[0],o=e[1],i=e[2],a=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=t[0],m=t[1],d=t[2],p=t[3],v=t[4],y=t[5],g=t[6],E=t[7],S=t[8],C=n*h+a*m+c*d,w=o*h+u*m+l*d,b=i*h+s*m+f*d,x=n*p+a*v+c*y,A=o*p+u*v+l*y,T=i*p+s*v+f*y,M=n*g+a*E+c*S,I=o*g+u*E+l*S,O=i*g+s*E+f*S;return r[0]=C,r[1]=w,r[2]=b,r[3]=0,r[4]=x,r[5]=A,r[6]=T,r[7]=0,r[8]=M,r[9]=I,r[10]=O,r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r},c.multiplyByTranslation=function(e,t,r){var n=t.x,o=t.y,i=t.z,a=n*e[0]+o*e[4]+i*e[8]+e[12],u=n*e[1]+o*e[5]+i*e[9]+e[13],s=n*e[2]+o*e[6]+i*e[10]+e[14];return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=a,r[13]=u,r[14]=s,r[15]=e[15],r};var p=new e;c.multiplyByUniformScale=function(e,t,r){return p.x=t,p.y=t,p.z=t,c.multiplyByScale(e,p,r)},c.multiplyByScale=function(e,t,r){var n=t.x,o=t.y,i=t.z;return 1===n&&1===o&&1===i?c.clone(e,r):(r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=0,r[4]=o*e[4],r[5]=o*e[5],r[6]=o*e[6],r[7]=0,r[8]=i*e[8],r[9]=i*e[9],r[10]=i*e[10],r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=1,r)},c.multiplyByVector=function(e,t,r){var n=t.x,o=t.y,i=t.z,a=t.w,u=e[0]*n+e[4]*o+e[8]*i+e[12]*a,s=e[1]*n+e[5]*o+e[9]*i+e[13]*a,c=e[2]*n+e[6]*o+e[10]*i+e[14]*a,l=e[3]*n+e[7]*o+e[11]*i+e[15]*a;return r.x=u,r.y=s,r.z=c,r.w=l,r},c.multiplyByPointAsVector=function(e,t,r){var n=t.x,o=t.y,i=t.z,a=e[0]*n+e[4]*o+e[8]*i,u=e[1]*n+e[5]*o+e[9]*i,s=e[2]*n+e[6]*o+e[10]*i;return r.x=a,r.y=u,r.z=s,r},c.multiplyByPoint=function(e,t,r){var n=t.x,o=t.y,i=t.z,a=e[0]*n+e[4]*o+e[8]*i+e[12],u=e[1]*n+e[5]*o+e[9]*i+e[13],s=e[2]*n+e[6]*o+e[10]*i+e[14];return r.x=a,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r[9]=e[9]*t,r[10]=e[10]*t,r[11]=e[11]*t,r[12]=e[12]*t,r[13]=e[13]*t,r[14]=e[14]*t,r[15]=e[15]*t,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var r=e[1],n=e[2],o=e[3],i=e[6],a=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=i,t[10]=e[10],t[11]=e[14],t[12]=o,t[13]=a,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r&&Math.abs(e[9]-t[9])<=r&&Math.abs(e[10]-t[10])<=r&&Math.abs(e[11]-t[11])<=r&&Math.abs(e[12]-t[12])<=r&&Math.abs(e[13]-t[13])<=r&&Math.abs(e[14]-t[14])<=r&&Math.abs(e[15]-t[15])<=r},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var v=new u,y=new u,g=new t,E=new t(0,0,0,1);return c.inverse=function(e,r){if(u.equalsEpsilon(c.getRotation(e,v),y,a.EPSILON7)&&t.equals(c.getRow(e,3,g),E))return r[0]=0,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=0,r[11]=0,r[12]=-e[12],r[13]=-e[13],r[14]=-e[14],r[15]=1,r;var n=e[0],o=e[4],i=e[8],l=e[12],f=e[1],h=e[5],m=e[9],d=e[13],p=e[2],S=e[6],C=e[10],w=e[14],b=e[3],x=e[7],A=e[11],T=e[15],M=C*T,I=w*A,O=S*T,R=w*x,N=S*A,L=C*x,P=p*T,z=w*b,D=p*A,F=C*b,_=p*x,B=S*b,U=M*h+R*m+N*d-(I*h+O*m+L*d),G=I*f+P*m+F*d-(M*f+z*m+D*d),q=O*f+z*h+_*d-(R*f+P*h+B*d),k=L*f+D*h+B*m-(N*f+F*h+_*m),V=I*o+O*i+L*l-(M*o+R*i+N*l),W=M*n+z*i+D*l-(I*n+P*i+F*l),Y=R*n+P*o+B*l-(O*n+z*o+_*l),H=N*n+F*o+_*i-(L*n+D*o+B*i);M=i*d,I=l*m,O=o*d,R=l*h,N=o*m,L=i*h,P=n*d,z=l*f,D=n*m,F=i*f,_=n*h,B=o*f;var j=M*x+R*A+N*T-(I*x+O*A+L*T),K=I*b+P*A+F*T-(M*b+z*A+D*T),Z=O*b+z*x+_*T-(R*b+P*x+B*T),X=L*b+D*x+B*A-(N*b+F*x+_*A),Q=O*C+L*w+I*S-(N*w+M*S+R*C),J=D*w+M*p+z*C-(P*C+F*w+I*p),$=P*S+B*w+R*p-(_*w+O*p+z*S),et=_*C+N*p+F*S-(D*S+B*C+L*p),tt=n*U+o*G+i*q+l*k;if(Math.abs(tt)<a.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,r[0]=U*tt,r[1]=G*tt,r[2]=q*tt,r[3]=k*tt,r[4]=V*tt,r[5]=W*tt,r[6]=Y*tt,r[7]=H*tt,r[8]=j*tt,r[9]=K*tt,r[10]=Z*tt,r[11]=X*tt,r[12]=Q*tt,r[13]=J*tt,r[14]=$*tt,r[15]=et*tt,r},c.inverseTransformation=function(e,t){var r=e[0],n=e[1],o=e[2],i=e[4],a=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],h=e[13],m=e[14],d=-r*f-n*h-o*m,p=-i*f-a*h-u*m,v=-s*f-c*h-l*m;return t[0]=r,t[1]=i,t[2]=s,t[3]=0,t[4]=n,t[5]=a,t[6]=c,t[7]=0,t[8]=o,t[9]=u,t[10]=l,t[11]=0,t[12]=d,t[13]=p,t[14]=v,t[15]=1,t},c.IDENTITY=i(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]&&e[9]===t[r+9]&&e[10]===t[r+10]&&e[11]===t[r+11]&&e[12]===t[r+12]&&e[13]===t[r+13]&&e[14]===t[r+14]&&e[15]===t[r+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n){"use strict";var o=function(t,r){this.normal=e.clone(t),this.distance=r};o.fromPointNormal=function(r,n,i){var a=-e.dot(n,r);return t(i)?(e.clone(n,i.normal),i.distance=a,i):new o(n,a)};var i=new e;return o.fromCartesian4=function(r,n){var a=e.fromCartesian4(r,i),u=r.w;return t(n)?(e.clone(a,n.normal),n.distance=u,n):new o(a,u)},o.getPointDistance=function(t,r){return e.dot(t.normal,r)+t.distance},o.ORIGIN_XY_PLANE=n(new o(e.UNIT_Z,0)),o.ORIGIN_YZ_PLANE=n(new o(e.UNIT_X,0)),o.ORIGIN_ZX_PLANE=n(new o(e.UNIT_Y,0)),o}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,r,n,o,i,a,u){"use strict";var s=function(e,r,n,o){this.west=t(e,0),this.south=t(r,0),this.east=t(n,0),this.north=t(o,0)};n(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,r,n){n=t(n,0),r[n++]=e.west,r[n++]=e.south,r[n++]=e.east,r[n]=e.north},s.unpack=function(e,n,o){return n=t(n,0),r(o)||(o=new s),o.west=e[n++],o.south=e[n++],o.east=e[n++],o.north=e[n],o},s.computeWidth=function(e){var t=e.east,r=e.west;return r>t&&(t+=u.TWO_PI),t-r},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,n,o,i,a){return e=u.toRadians(t(e,0)),n=u.toRadians(t(n,0)),o=u.toRadians(t(o,0)),i=u.toRadians(t(i,0)),r(a)?(a.west=e,a.south=n,a.east=o,a.north=i,a):new s(e,n,o,i)},s.fromCartographicArray=function(e,t){for(var n=Number.MAX_VALUE,o=-Number.MAX_VALUE,i=Number.MAX_VALUE,a=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];n=Math.min(n,l.longitude),o=Math.max(o,l.longitude),i=Math.min(i,l.latitude),a=Math.max(a,l.latitude)}return r(t)?(t.west=n,t.south=i,t.east=o,t.north=a,t):new s(n,i,o,a)},s.clone=function(e,t){return r(e)?r(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return r(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.south,n.height=0,n):new e(t.west,t.south)},s.northwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.north,n.height=0,n):new e(t.west,t.north)},s.northeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.north,n.height=0,n):new e(t.east,t.north)},s.southeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.south,n.height=0,n):new e(t.east,t.south)},s.center=function(t,n){var o=t.east,i=t.west;i>o&&(o+=u.TWO_PI);var a=u.negativePiToPi(.5*(i+o)),s=.5*(t.south+t.north);return r(n)?(n.longitude=a,n.latitude=s,n.height=0,n):new e(a,s)},s.intersection=function(e,t,n){var o=e.east,i=e.west,a=t.east,c=t.west;i>o&&a>0?o+=u.TWO_PI:c>a&&o>0&&(a+=u.TWO_PI),i>o&&0>c?c+=u.TWO_PI:c>a&&0>i&&(i+=u.TWO_PI);var l=u.negativePiToPi(Math.max(i,c)),f=u.negativePiToPi(Math.min(o,a));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var h=Math.max(e.south,t.south),m=Math.min(e.north,t.north);return h>=m?void 0:r(n)?(n.west=l,n.south=h,n.east=f,n.north=m,n):new s(l,h,f,m)},s.contains=function(e,t){var r=t.longitude,n=t.latitude,o=e.west,i=e.east;return o>i&&(i+=u.TWO_PI,0>r&&(r+=u.TWO_PI)),(r>o||u.equalsEpsilon(r,o,u.EPSILON14))&&(i>r||u.equalsEpsilon(r,i,u.EPSILON14))&&n>=e.south&&n<=e.north};var c=new e;return s.subsample=function(e,n,o,a){n=t(n,i.WGS84),o=t(o,0),r(a)||(a=[]);var l=0,f=e.north,h=e.south,m=e.east,d=e.west,p=c;p.height=o,p.longitude=d,p.latitude=f,a[l]=n.cartographicToCartesian(p,a[l]),l++,p.longitude=m,a[l]=n.cartographicToCartesian(p,a[l]),l++,p.latitude=h,a[l]=n.cartographicToCartesian(p,a[l]),l++,p.longitude=d,a[l]=n.cartographicToCartesian(p,a[l]),l++,p.latitude=0>f?f:h>0?h:0;for(var v=1;8>v;++v)p.longitude=-Math.PI+v*u.PI_OVER_TWO,s.contains(e,p)&&(a[l]=n.cartographicToCartesian(p,a[l]),l++);return 0===p.latitude&&(p.longitude=d,a[l]=n.cartographicToCartesian(p,a[l]),l++,p.longitude=m,a[l]=n.cartographicToCartesian(p,a[l]),l++),a.length=l,a},s.MAX_VALUE=a(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,r,n,o,i,a,u,s,c,l,f,h){"use strict";var m=function(t,n){this.center=e.clone(r(t,e.ZERO)),this.radius=r(n,0)},d=new e,p=new e,v=new e,y=new e,g=new e,E=new e,S=new e,C=new e,w=new e,b=new e,x=new e,A=new e;m.fromPoints=function(t,r){if(n(r)||(r=new m),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;for(var o=e.clone(t[0],S),i=e.clone(o,d),a=e.clone(o,p),u=e.clone(o,v),s=e.clone(o,y),c=e.clone(o,g),l=e.clone(o,E),f=t.length,h=1;f>h;h++){e.clone(t[h],o);var T=o.x,M=o.y,I=o.z;T<i.x&&e.clone(o,i),T>s.x&&e.clone(o,s),M<a.y&&e.clone(o,a),M>c.y&&e.clone(o,c),I<u.z&&e.clone(o,u),I>l.z&&e.clone(o,l)}var O=e.magnitudeSquared(e.subtract(s,i,C)),R=e.magnitudeSquared(e.subtract(c,a,C)),N=e.magnitudeSquared(e.subtract(l,u,C)),L=i,P=s,z=O;R>z&&(z=R,L=a,P=c),N>z&&(z=N,L=u,P=l);var D=w;D.x=.5*(L.x+P.x),D.y=.5*(L.y+P.y),D.z=.5*(L.z+P.z);var F=e.magnitudeSquared(e.subtract(P,D,C)),_=Math.sqrt(F),B=b;B.x=i.x,B.y=a.y,B.z=u.z;var U=x;U.x=s.x,U.y=c.y,U.z=l.z;var G=e.multiplyByScalar(e.add(B,U,C),.5,A),q=0;for(h=0;f>h;h++){e.clone(t[h],o);var k=e.magnitude(e.subtract(o,G,C));k>q&&(q=k);var V=e.magnitudeSquared(e.subtract(o,D,C));if(V>F){var W=Math.sqrt(V);_=.5*(_+W),F=_*_;var Y=W-_;D.x=(_*D.x+Y*o.x)/W,D.y=(_*D.y+Y*o.y)/W,D.z=(_*D.z+Y*o.z)/W}}return q>_?(e.clone(D,r.center),r.radius=_):(e.clone(G,r.center),r.radius=q),r};var T=new u,M=new e,I=new e,O=new t,R=new t;m.fromRectangle2D=function(e,t,r){return m.fromRectangleWithHeights2D(e,t,0,0,r)},m.fromRectangleWithHeights2D=function(t,o,i,a,u){if(n(u)||(u=new m),!n(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;o=r(o,T),h.southwest(t,O),O.height=i,h.northeast(t,R),R.height=a;var s=o.project(O,M),c=o.project(R,I),l=c.x-s.x,f=c.y-s.y,d=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+d*d);var p=u.center;return p.x=s.x+.5*l,p.y=s.y+.5*f,p.z=s.z+.5*d,u};var N=[];m.fromRectangle3D=function(e,t,o,i){t=r(t,a.WGS84),o=r(o,0);var u;return n(e)&&(u=h.subsample(e,t,o,N)),m.fromPoints(u,i)},m.fromVertices=function(t,o,i,a){if(n(a)||(a=new m),!n(t)||0===t.length)return a.center=e.clone(e.ZERO,a.center),a.radius=0,a;o=r(o,e.ZERO),i=r(i,3);var u=S;u.x=t[0]+o.x,u.y=t[1]+o.y,u.z=t[2]+o.z;for(var s=e.clone(u,d),c=e.clone(u,p),l=e.clone(u,v),f=e.clone(u,y),h=e.clone(u,g),T=e.clone(u,E),M=t.length,I=0;M>I;I+=i){var O=t[I]+o.x,R=t[I+1]+o.y,N=t[I+2]+o.z;u.x=O,u.y=R,u.z=N,O<s.x&&e.clone(u,s),O>f.x&&e.clone(u,f),R<c.y&&e.clone(u,c),R>h.y&&e.clone(u,h),N<l.z&&e.clone(u,l),N>T.z&&e.clone(u,T)}var L=e.magnitudeSquared(e.subtract(f,s,C)),P=e.magnitudeSquared(e.subtract(h,c,C)),z=e.magnitudeSquared(e.subtract(T,l,C)),D=s,F=f,_=L;P>_&&(_=P,D=c,F=h),z>_&&(_=z,D=l,F=T);var B=w;B.x=.5*(D.x+F.x),B.y=.5*(D.y+F.y),B.z=.5*(D.z+F.z);var U=e.magnitudeSquared(e.subtract(F,B,C)),G=Math.sqrt(U),q=b;q.x=s.x,q.y=c.y,q.z=l.z;var k=x;k.x=f.x,k.y=h.y,k.z=T.z;var V=e.multiplyByScalar(e.add(q,k,C),.5,A),W=0;for(I=0;M>I;I+=i){u.x=t[I]+o.x,u.y=t[I+1]+o.y,u.z=t[I+2]+o.z;var Y=e.magnitude(e.subtract(u,V,C));Y>W&&(W=Y);var H=e.magnitudeSquared(e.subtract(u,B,C));if(H>U){var j=Math.sqrt(H);G=.5*(G+j),U=G*G;var K=j-G;B.x=(G*B.x+K*u.x)/j,B.y=(G*B.y+K*u.y)/j,B.z=(G*B.z+K*u.z)/j}}return W>G?(e.clone(B,a.center),a.radius=G):(e.clone(V,a.center),a.radius=W),a},m.fromCornerPoints=function(t,r,o){n(o)||(o=new m);var i=o.center;return e.add(t,r,i),e.multiplyByScalar(i,.5,i),o.radius=e.distance(i,r),o},m.fromEllipsoid=function(t,r){return n(r)||(r=new m),e.clone(e.ZERO,r.center),r.radius=t.maximumRadius,r};var L=new e;m.fromBoundingSpheres=function(t,r){if(n(r)||(r=new m),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;var o=t.length;if(1===o)return m.clone(t[0],r);if(2===o)return m.union(t[0],t[1],r);for(var i=[],a=0;o>a;a++)i.push(t[a].center);r=m.fromPoints(i,r);var u=r.center,s=r.radius;for(a=0;o>a;a++){var c=t[a];s=Math.max(s,e.distance(u,c.center,L)+c.radius)}return r.radius=s,r},m.clone=function(t,r){return n(t)?n(r)?(r.center=e.clone(t.center,r.center),r.radius=t.radius,r):new m(t.center,t.radius):void 0},m.packedLength=4,m.pack=function(e,t,n){n=r(n,0);var o=e.center;t[n++]=o.x,t[n++]=o.y,t[n++]=o.z,t[n]=e.radius},m.unpack=function(e,t,o){t=r(t,0),n(o)||(o=new m);var i=o.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],o.radius=e[t],o};var P=new e,z=new e;m.union=function(t,r,o){n(o)||(o=new m);var i=t.center,a=t.radius,u=r.center,s=r.radius,c=e.subtract(u,i,P),l=e.magnitude(c);if(a>=l+s)return t.clone(o),o;if(s>=l+a)return r.clone(o),o;var f=.5*(a+l+s),h=e.multiplyByScalar(c,(-a+f)/l,z);return e.add(h,i,h),e.clone(h,o.center),o.radius=f,o};var D=new e;m.expand=function(t,r,n){n=m.clone(t,n);var o=e.magnitude(e.subtract(r,n.center,D));return o>n.radius&&(n.radius=o),n},m.intersectPlane=function(t,r){var n=t.center,o=t.radius,i=r.normal,a=e.dot(i,n)+r.distance;return-o>a?s.OUTSIDE:o>a?s.INTERSECTING:s.INSIDE};var F=new f(new e,0);m.intersect=function(e,t){o("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var r=f.fromCartesian4(t,F);return m.intersectPlane(e,r)},m.transform=function(e,t,r){return n(r)||(r=new m),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=l.getMaximumScale(t)*e.radius,r};var _=new e;m.distanceSquaredTo=function(t,r){var n=e.subtract(t.center,r,_);return e.magnitudeSquared(n)-t.radius*t.radius},m.transformWithoutScale=function(e,t,r){return n(r)||(r=new m),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=e.radius,r};var B=new e;m.computePlaneDistances=function(t,r,o,i){n(i)||(i=new c);var a=e.subtract(t.center,r,B),u=e.multiplyByScalar(o,e.dot(o,a),B),s=e.magnitude(u);return i.start=s-t.radius,i.stop=s+t.radius,i};for(var U=new e,G=new e,q=new e,k=new e,V=new e,W=new t,Y=new Array(8),H=0;8>H;++H)Y[H]=new e;var j=new u;return m.projectTo2D=function(t,n,o){n=r(n,j);var i=n.ellipsoid,a=t.center,u=t.radius,s=i.geodeticSurfaceNormal(a,U),c=e.cross(e.UNIT_Z,s,G);e.normalize(c,c);var l=e.cross(s,c,q);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,V),h=e.negate(c,k),d=Y,p=d[0];e.add(s,l,p),e.add(p,c,p),p=d[1],e.add(s,l,p),e.add(p,h,p),p=d[2],e.add(s,f,p),e.add(p,h,p),p=d[3],e.add(s,f,p),e.add(p,c,p),e.negate(s,s),p=d[4],e.add(s,l,p),e.add(p,c,p),p=d[5],e.add(s,l,p),e.add(p,h,p),p=d[6],e.add(s,f,p),e.add(p,h,p),p=d[7],e.add(s,f,p),e.add(p,c,p);for(var v=d.length,y=0;v>y;++y){var g=d[y];e.add(a,g,g);var E=i.cartesianToCartographic(g,W);n.project(E,g)}o=m.fromPoints(d,o),a=o.center;var S=a.x,C=a.y,w=a.z;return a.x=w,a.y=S,a.z=C,o},m.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&t.radius===r.radius},m.prototype.intersectPlane=function(e){return m.intersectPlane(this,e)},m.prototype.intersect=function(e){return m.intersect(this,e)},m.prototype.equals=function(e){return m.equals(this,e)},m.prototype.clone=function(e){return m.clone(this,e)},m}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var r,n={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},o={};return t(o,{element:{get:function(){return o.supportsFullscreen()?document[n.fullscreenElement]:void 0}},changeEventName:{get:function(){return o.supportsFullscreen()?n.fullscreenchange:void 0}},errorEventName:{get:function(){return o.supportsFullscreen()?n.fullscreenerror:void 0}},enabled:{get:function(){return o.supportsFullscreen()?document[n.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return o.supportsFullscreen()?null!==o.element:void 0}}}),o.supportsFullscreen=function(){if(e(r))return r;r=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return n.requestFullscreen="requestFullscreen",n.exitFullscreen="exitFullscreen",n.fullscreenEnabled="fullscreenEnabled",n.fullscreenElement="fullscreenElement",n.fullscreenchange="fullscreenchange",n.fullscreenerror="fullscreenerror",r=!0;for(var o,i=["webkit","moz","o","ms","khtml"],a=0,u=i.length;u>a;++a){var s=i[a];o=s+"RequestFullscreen","function"==typeof t[o]?(n.requestFullscreen=o,r=!0):(o=s+"RequestFullScreen","function"==typeof t[o]&&(n.requestFullscreen=o,r=!0)),o=s+"ExitFullscreen","function"==typeof document[o]?n.exitFullscreen=o:(o=s+"CancelFullScreen","function"==typeof document[o]&&(n.exitFullscreen=o)),o=s+"FullscreenEnabled",e(document[o])?n.fullscreenEnabled=o:(o=s+"FullScreenEnabled",e(document[o])&&(n.fullscreenEnabled=o)),o=s+"FullscreenElement",e(document[o])?n.fullscreenElement=o:(o=s+"FullScreenElement",e(document[o])&&(n.fullscreenElement=o)),o=s+"fullscreenchange",e(document["on"+o])&&("ms"===s&&(o="MSFullscreenChange"),n.fullscreenchange=o),o=s+"fullscreenerror",e(document["on"+o])&&("ms"===s&&(o="MSFullscreenError"),n.fullscreenerror=o)}return r},o.requestFullscreen=function(e){o.supportsFullscreen()&&e[n.requestFullscreen]()},o.exitFullscreen=function(){o.supportsFullscreen()&&document[n.exitFullscreen]()},o}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,r){"use strict";function n(e){for(var t=e.split("."),r=0,n=t.length;n>r;++r)t[r]=parseInt(t[r],10);return t}function o(){if(!t(v)){v=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(v=!0,y=n(e[1]))}return v}function i(){return o()&&y}function a(){if(!t(g)&&(g=!1,!o()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,E=n(e[1]))}return g}function u(){return a()&&E}function s(){if(!t(S)){S=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(S=!0,C=n(e[1]),C.isNightly=!!e[2])}return S}function c(){return s()&&C}function l(){if(!t(w)){w=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(w=!0,b=n(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(w=!0,b=n(e[1])))}return w}function f(){return l()&&b}function h(){if(!t(x)){x=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(x=!0,A=n(e[1]))}return x}function m(){return t(T)||(T=/Windows/i.test(navigator.appVersion)),T}function d(){return h()&&A}function p(){return t(M)||(M=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),M}var v,y,g,E,S,C,w,b,x,A,T,M,I={isChrome:o,chromeVersion:i,isSafari:a,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:d,isWindows:m,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return I.supportsFullscreen=function(){return r.supportsFullscreen()},I.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},I.supportsWebWorkers=function(){return"undefined"!=typeof Worker},I}),define("Core/Color",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math"],function(e,t,r,n,o,i){"use strict";function a(e,t,r){return 0>r&&(r+=1),r>1&&(r-=1),1>6*r?e+6*(t-e)*r:1>2*r?t:2>3*r?e+6*(t-e)*(2/3-r):e}var u=function(t,r,n,o){this.red=e(t,1),this.green=e(r,1),this.blue=e(n,1),this.alpha=e(o,1)};u.fromCartesian4=function(e,r){return t(r)?(r.red=e.x,r.green=e.y,r.blue=e.z,r.alpha=e.w,r):new u(e.x,e.y,e.z,e.w)},u.fromBytes=function(r,n,o,i,a){return r=u.byteToFloat(e(r,255)),n=u.byteToFloat(e(n,255)),o=u.byteToFloat(e(o,255)),i=u.byteToFloat(e(i,255)),t(a)?(a.red=r,a.green=n,a.blue=o,a.alpha=i,a):new u(r,n,o,i)},u.fromAlpha=function(e,r,n){return t(n)?(n.red=e.red,n.green=e.green,n.blue=e.blue,n.alpha=r,n):new u(e.red,e.green,e.blue,r)};var s,c,l;n.supportsTypedArrays()&&(s=new ArrayBuffer(4),c=new Uint32Array(s),l=new Uint8Array(s)),u.fromRgba=function(e){return c[0]=e,u.fromBytes(l[0],l[1],l[2],l[3])},u.fromHsl=function(t,r,n,o){t=e(t,0)%1,r=e(r,0),n=e(n,0),o=e(o,1);var i=n,s=n,c=n;if(0!==r){var l;l=.5>n?n*(1+r):n+r-n*r;var f=2*n-l;i=a(f,l,t+1/3),s=a(f,l,t),c=a(f,l,t-1/3)}return new u(i,s,c,o)},u.fromRandom=function(r,n){r=e(r,e.EMPTY_OBJECT);var o=r.red;if(!t(o)){var a=e(r.minimumRed,0),s=e(r.maximumRed,1);o=a+i.nextRandomNumber()*(s-a)}var c=r.green;if(!t(c)){var l=e(r.minimumGreen,0),f=e(r.maximumGreen,1);c=l+i.nextRandomNumber()*(f-l)}var h=r.blue;if(!t(h)){var m=e(r.minimumBlue,0),d=e(r.maximumBlue,1);h=m+i.nextRandomNumber()*(d-m)}var p=r.alpha;if(!t(p)){var v=e(r.minimumAlpha,0),y=e(r.maximumAlpha,1);p=v+i.nextRandomNumber()*(y-v)}return t(n)?(n.red=o,n.green=c,n.blue=h,n.alpha=p,n):new u(o,c,h,p)};var f=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i,h=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i,m=/^rgba?\(\s*([0-9.]+%?)\s*,\s*([0-9.]+%?)\s*,\s*([0-9.]+%?)(?:\s*,\s*([0-9.]+))?\s*\)$/i,d=/^hsla?\(\s*([0-9.]+)\s*,\s*([0-9.]+%)\s*,\s*([0-9.]+%)(?:\s*,\s*([0-9.]+))?\s*\)$/i;return u.fromCssColorString=function(r){var n=u[r.toUpperCase()];if(t(n))return u.clone(n);var o=f.exec(r);return null!==o?new u(parseInt(o[1],16)/15,parseInt(o[2],16)/15,parseInt(o[3],16)/15):(o=h.exec(r),null!==o?new u(parseInt(o[1],16)/255,parseInt(o[2],16)/255,parseInt(o[3],16)/255):(o=m.exec(r),null!==o?new u(parseFloat(o[1])/("%"===o[1].substr(-1)?100:255),parseFloat(o[2])/("%"===o[2].substr(-1)?100:255),parseFloat(o[3])/("%"===o[3].substr(-1)?100:255),parseFloat(e(o[4],"1.0"))):(o=d.exec(r),null!==o?u.fromHsl(parseFloat(o[1])/360,parseFloat(o[2])/100,parseFloat(o[3])/100,parseFloat(e(o[4],"1.0"))):void 0)))},u.packedLength=4,u.pack=function(t,r,n){n=e(n,0),r[n++]=t.red,r[n++]=t.green,r[n++]=t.blue,r[n]=t.alpha},u.unpack=function(r,n,o){return n=e(n,0),t(o)||(o=new u),o.red=r[n++],o.green=r[n++],o.blue=r[n++],o.alpha=r[n],o},u.byteToFloat=function(e){return e/255},u.floatToByte=function(e){return 1===e?255:0|256*e},u.clone=function(e,r){return t(e)?t(r)?(r.red=e.red,r.green=e.green,r.blue=e.blue,r.alpha=e.alpha,r):new u(e.red,e.green,e.blue,e.alpha):void 0},u.equals=function(e,r){return e===r||t(e)&&t(r)&&e.red===r.red&&e.green===r.green&&e.blue===r.blue&&e.alpha===r.alpha},u.equalsArray=function(e,t,r){return e.red===t[r]&&e.green===t[r+1]&&e.blue===t[r+2]&&e.alpha===t[r+3]},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u.prototype.equalsEpsilon=function(e,r){return this===e||t(e)&&Math.abs(this.red-e.red)<=r&&Math.abs(this.green-e.green)<=r&&Math.abs(this.blue-e.blue)<=r&&Math.abs(this.alpha-e.alpha)<=r},u.prototype.toString=function(){return"("+this.red+", "+this.green+", "+this.blue+", "+this.alpha+")"},u.prototype.toCssColorString=function(){var e=u.floatToByte(this.red),t=u.floatToByte(this.green),r=u.floatToByte(this.blue);return 1===this.alpha?"rgb("+e+","+t+","+r+")":"rgba("+e+","+t+","+r+","+this.alpha+")"},u.prototype.toBytes=function(e){var r=u.floatToByte(this.red),n=u.floatToByte(this.green),o=u.floatToByte(this.blue),i=u.floatToByte(this.alpha);return t(e)?(e[0]=r,e[1]=n,e[2]=o,e[3]=i,e):[r,n,o,i]},u.prototype.toRgba=function(){return l[0]=u.floatToByte(this.red),l[1]=u.floatToByte(this.green),l[2]=u.floatToByte(this.blue),l[3]=u.floatToByte(this.alpha),c[0]},u.prototype.brighten=function(e,t){return e=1-e,t.red=1-(1-this.red)*e,t.green=1-(1-this.green)*e,t.blue=1-(1-this.blue)*e,t.alpha=this.alpha,t},u.prototype.darken=function(e,t){return e=1-e,t.red=this.red*e,t.green=this.green*e,t.blue=this.blue*e,t.alpha=this.alpha,t},u.prototype.withAlpha=function(e,t){return u.fromAlpha(this,e,t)},u.ALICEBLUE=o(u.fromCssColorString("#F0F8FF")),u.ANTIQUEWHITE=o(u.fromCssColorString("#FAEBD7")),u.AQUA=o(u.fromCssColorString("#00FFFF")),u.AQUAMARINE=o(u.fromCssColorString("#7FFFD4")),u.AZURE=o(u.fromCssColorString("#F0FFFF")),u.BEIGE=o(u.fromCssColorString("#F5F5DC")),u.BISQUE=o(u.fromCssColorString("#FFE4C4")),u.BLACK=o(u.fromCssColorString("#000000")),u.BLANCHEDALMOND=o(u.fromCssColorString("#FFEBCD")),u.BLUE=o(u.fromCssColorString("#0000FF")),u.BLUEVIOLET=o(u.fromCssColorString("#8A2BE2")),u.BROWN=o(u.fromCssColorString("#A52A2A")),u.BURLYWOOD=o(u.fromCssColorString("#DEB887")),u.CADETBLUE=o(u.fromCssColorString("#5F9EA0")),u.CHARTREUSE=o(u.fromCssColorString("#7FFF00")),u.CHOCOLATE=o(u.fromCssColorString("#D2691E")),u.CORAL=o(u.fromCssColorString("#FF7F50")),u.CORNFLOWERBLUE=o(u.fromCssColorString("#6495ED")),u.CORNSILK=o(u.fromCssColorString("#FFF8DC")),u.CRIMSON=o(u.fromCssColorString("#DC143C")),u.CYAN=o(u.fromCssColorString("#00FFFF")),u.DARKBLUE=o(u.fromCssColorString("#00008B")),u.DARKCYAN=o(u.fromCssColorString("#008B8B")),u.DARKGOLDENROD=o(u.fromCssColorString("#B8860B")),u.DARKGRAY=o(u.fromCssColorString("#A9A9A9")),u.DARKGREEN=o(u.fromCssColorString("#006400")),u.DARKGREY=u.DARKGRAY,u.DARKKHAKI=o(u.fromCssColorString("#BDB76B")),u.DARKMAGENTA=o(u.fromCssColorString("#8B008B")),u.DARKOLIVEGREEN=o(u.fromCssColorString("#556B2F")),u.DARKORANGE=o(u.fromCssColorString("#FF8C00")),u.DARKORCHID=o(u.fromCssColorString("#9932CC")),u.DARKRED=o(u.fromCssColorString("#8B0000")),u.DARKSALMON=o(u.fromCssColorString("#E9967A")),u.DARKSEAGREEN=o(u.fromCssColorString("#8FBC8F")),u.DARKSLATEBLUE=o(u.fromCssColorString("#483D8B")),u.DARKSLATEGRAY=o(u.fromCssColorString("#2F4F4F")),u.DARKSLATEGREY=u.DARKSLATEGRAY,u.DARKTURQUOISE=o(u.fromCssColorString("#00CED1")),u.DARKVIOLET=o(u.fromCssColorString("#9400D3")),u.DEEPPINK=o(u.fromCssColorString("#FF1493")),u.DEEPSKYBLUE=o(u.fromCssColorString("#00BFFF")),u.DIMGRAY=o(u.fromCssColorString("#696969")),u.DIMGREY=u.DIMGRAY,u.DODGERBLUE=o(u.fromCssColorString("#1E90FF")),u.FIREBRICK=o(u.fromCssColorString("#B22222")),u.FLORALWHITE=o(u.fromCssColorString("#FFFAF0")),u.FORESTGREEN=o(u.fromCssColorString("#228B22")),u.FUSCHIA=o(u.fromCssColorString("#FF00FF")),u.GAINSBORO=o(u.fromCssColorString("#DCDCDC")),u.GHOSTWHITE=o(u.fromCssColorString("#F8F8FF")),u.GOLD=o(u.fromCssColorString("#FFD700")),u.GOLDENROD=o(u.fromCssColorString("#DAA520")),u.GRAY=o(u.fromCssColorString("#808080")),u.GREEN=o(u.fromCssColorString("#008000")),u.GREENYELLOW=o(u.fromCssColorString("#ADFF2F")),u.GREY=u.GRAY,u.HONEYDEW=o(u.fromCssColorString("#F0FFF0")),u.HOTPINK=o(u.fromCssColorString("#FF69B4")),u.INDIANRED=o(u.fromCssColorString("#CD5C5C")),u.INDIGO=o(u.fromCssColorString("#4B0082")),u.IVORY=o(u.fromCssColorString("#FFFFF0")),u.KHAKI=o(u.fromCssColorString("#F0E68C")),u.LAVENDER=o(u.fromCssColorString("#E6E6FA")),u.LAVENDAR_BLUSH=o(u.fromCssColorString("#FFF0F5")),u.LAWNGREEN=o(u.fromCssColorString("#7CFC00")),u.LEMONCHIFFON=o(u.fromCssColorString("#FFFACD")),u.LIGHTBLUE=o(u.fromCssColorString("#ADD8E6")),u.LIGHTCORAL=o(u.fromCssColorString("#F08080")),u.LIGHTCYAN=o(u.fromCssColorString("#E0FFFF")),u.LIGHTGOLDENRODYELLOW=o(u.fromCssColorString("#FAFAD2")),u.LIGHTGRAY=o(u.fromCssColorString("#D3D3D3")),u.LIGHTGREEN=o(u.fromCssColorString("#90EE90")),u.LIGHTGREY=u.LIGHTGRAY,u.LIGHTPINK=o(u.fromCssColorString("#FFB6C1")),u.LIGHTSEAGREEN=o(u.fromCssColorString("#20B2AA")),u.LIGHTSKYBLUE=o(u.fromCssColorString("#87CEFA")),u.LIGHTSLATEGRAY=o(u.fromCssColorString("#778899")),u.LIGHTSLATEGREY=u.LIGHTSLATEGRAY,u.LIGHTSTEELBLUE=o(u.fromCssColorString("#B0C4DE")),u.LIGHTYELLOW=o(u.fromCssColorString("#FFFFE0")),u.LIME=o(u.fromCssColorString("#00FF00")),u.LIMEGREEN=o(u.fromCssColorString("#32CD32")),u.LINEN=o(u.fromCssColorString("#FAF0E6")),u.MAGENTA=o(u.fromCssColorString("#FF00FF")),u.MAROON=o(u.fromCssColorString("#800000")),u.MEDIUMAQUAMARINE=o(u.fromCssColorString("#66CDAA")),u.MEDIUMBLUE=o(u.fromCssColorString("#0000CD")),u.MEDIUMORCHID=o(u.fromCssColorString("#BA55D3")),u.MEDIUMPURPLE=o(u.fromCssColorString("#9370DB")),u.MEDIUMSEAGREEN=o(u.fromCssColorString("#3CB371")),u.MEDIUMSLATEBLUE=o(u.fromCssColorString("#7B68EE")),u.MEDIUMSPRINGGREEN=o(u.fromCssColorString("#00FA9A")),u.MEDIUMTURQUOISE=o(u.fromCssColorString("#48D1CC")),u.MEDIUMVIOLETRED=o(u.fromCssColorString("#C71585")),u.MIDNIGHTBLUE=o(u.fromCssColorString("#191970")),u.MINTCREAM=o(u.fromCssColorString("#F5FFFA")),u.MISTYROSE=o(u.fromCssColorString("#FFE4E1")),u.MOCCASIN=o(u.fromCssColorString("#FFE4B5")),u.NAVAJOWHITE=o(u.fromCssColorString("#FFDEAD")),u.NAVY=o(u.fromCssColorString("#000080")),u.OLDLACE=o(u.fromCssColorString("#FDF5E6")),u.OLIVE=o(u.fromCssColorString("#808000")),u.OLIVEDRAB=o(u.fromCssColorString("#6B8E23")),u.ORANGE=o(u.fromCssColorString("#FFA500")),u.ORANGERED=o(u.fromCssColorString("#FF4500")),u.ORCHID=o(u.fromCssColorString("#DA70D6")),u.PALEGOLDENROD=o(u.fromCssColorString("#EEE8AA")),u.PALEGREEN=o(u.fromCssColorString("#98FB98")),u.PALETURQUOISE=o(u.fromCssColorString("#AFEEEE")),u.PALEVIOLETRED=o(u.fromCssColorString("#DB7093")),u.PAPAYAWHIP=o(u.fromCssColorString("#FFEFD5")),u.PEACHPUFF=o(u.fromCssColorString("#FFDAB9")),u.PERU=o(u.fromCssColorString("#CD853F")),u.PINK=o(u.fromCssColorString("#FFC0CB")),u.PLUM=o(u.fromCssColorString("#DDA0DD")),u.POWDERBLUE=o(u.fromCssColorString("#B0E0E6")),u.PURPLE=o(u.fromCssColorString("#800080")),u.RED=o(u.fromCssColorString("#FF0000")),u.ROSYBROWN=o(u.fromCssColorString("#BC8F8F")),u.ROYALBLUE=o(u.fromCssColorString("#4169E1")),u.SADDLEBROWN=o(u.fromCssColorString("#8B4513")),u.SALMON=o(u.fromCssColorString("#FA8072")),u.SANDYBROWN=o(u.fromCssColorString("#F4A460")),u.SEAGREEN=o(u.fromCssColorString("#2E8B57")),u.SEASHELL=o(u.fromCssColorString("#FFF5EE")),u.SIENNA=o(u.fromCssColorString("#A0522D")),u.SILVER=o(u.fromCssColorString("#C0C0C0")),u.SKYBLUE=o(u.fromCssColorString("#87CEEB")),u.SLATEBLUE=o(u.fromCssColorString("#6A5ACD")),u.SLATEGRAY=o(u.fromCssColorString("#708090")),u.SLATEGREY=u.SLATEGRAY,u.SNOW=o(u.fromCssColorString("#FFFAFA")),u.SPRINGGREEN=o(u.fromCssColorString("#00FF7F")),u.STEELBLUE=o(u.fromCssColorString("#4682B4")),u.TAN=o(u.fromCssColorString("#D2B48C")),u.TEAL=o(u.fromCssColorString("#008080")),u.THISTLE=o(u.fromCssColorString("#D8BFD8")),u.TOMATO=o(u.fromCssColorString("#FF6347")),u.TURQUOISE=o(u.fromCssColorString("#40E0D0")),u.VIOLET=o(u.fromCssColorString("#EE82EE")),u.WHEAT=o(u.fromCssColorString("#F5DEB3")),u.WHITE=o(u.fromCssColorString("#FFFFFF")),u.WHITESMOKE=o(u.fromCssColorString("#F5F5F5")),u.YELLOW=o(u.fromCssColorString("#FFFF00")),u.YELLOWGREEN=o(u.fromCssColorString("#9ACD32")),u.TRANSPARENT=o(new u(0,0,0,0)),u +}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,r,n,o){"use strict";if(!n.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(e){switch(e){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new r("componentDatatype is not a valid value.")}},i.fromTypedArray=function(e){return e instanceof Int8Array?i.BYTE:e instanceof Uint8Array?i.UNSIGNED_BYTE:e instanceof Int16Array?i.SHORT:e instanceof Uint16Array?i.UNSIGNED_SHORT:e instanceof Float32Array?i.FLOAT:e instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(e){return t(e)&&(e===i.BYTE||e===i.UNSIGNED_BYTE||e===i.SHORT||e===i.UNSIGNED_SHORT||e===i.FLOAT||e===i.DOUBLE)},i.createTypedArray=function(e,t){switch(e){case i.BYTE:return new Int8Array(t);case i.UNSIGNED_BYTE:return new Uint8Array(t);case i.SHORT:return new Int16Array(t);case i.UNSIGNED_SHORT:return new Uint16Array(t);case i.FLOAT:return new Float32Array(t);case i.DOUBLE:return new Float64Array(t);default:throw new r("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(t,n,o,a){switch(o=e(o,0),a=e(a,(n.byteLength-o)/i.getSizeInBytes(t)),t){case i.BYTE:return new Int8Array(n,o,a);case i.UNSIGNED_BYTE:return new Uint8Array(n,o,a);case i.SHORT:return new Int16Array(n,o,a);case i.UNSIGNED_SHORT:return new Uint16Array(n,o,a);case i.FLOAT:return new Float32Array(n,o,a);case i.DOUBLE:return new Float64Array(n,o,a);default:throw new r("componentDatatype is not a valid value.")}},o(i)}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,r,n,o){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,o.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,n.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(e){var n=-1;for(var o in e.attributes)if(e.attributes.hasOwnProperty(o)&&t(e.attributes[o])&&t(e.attributes[o].values)){var i=e.attributes[o],a=i.values.length/i.componentsPerAttribute;if(n!==a&&-1!==n)throw new r("All attribute lists must have the same number of attributes.");n=a}return n},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,o){"use strict";var i=function(t,r){this.x=e(t,0),this.y=e(r,0)};i.fromElements=function(e,r,n){return t(n)?(n.x=e,n.y=r,n):new i(e,r)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r):new i(e.x,e.y):void 0},i.fromCartesian3=i.clone,i.fromCartesian4=i.clone,i.packedLength=2,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n]=t.y},i.unpack=function(r,n,o){return n=e(n,0),t(o)||(o=new i),o.x=r[n++],o.y=r[n],o},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y)},i.minimumComponent=function(e){return Math.min(e.x,e.y)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var a=new i;i.distance=function(e,t){return i.subtract(e,t,a),i.magnitude(a)},i.distanceSquared=function(e,t){return i.subtract(e,t,a),i.magnitudeSquared(a)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i,c=new i;i.angleBetween=function(e,t){return i.normalize(e,s),i.normalize(t,c),o.acosClamped(i.dot(s,c))};var l=new i;return i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,l);return i.abs(r,r),t=r.x<=r.y?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Y,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&o.equalsEpsilon(e.x,r.x,n,i)&&o.equalsEpsilon(e.y,r.y,n,i)},i.ZERO=n(new i(0,0)),i.UNIT_X=n(new i(1,0)),i.UNIT_Y=n(new i(0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+")"},i}),define("Core/AttributeCompression",["./Cartesian2","./Cartesian3","./defined","./DeveloperError","./Math"],function(e,t,r,n,o){"use strict";var i={};i.octEncode=function(e,t){if(t.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),t.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){var r=t.x,n=t.y;t.x=(1-Math.abs(n))*o.signNotZero(r),t.y=(1-Math.abs(r))*o.signNotZero(n)}return t.x=o.toSNorm(t.x),t.y=o.toSNorm(t.y),t},i.octDecode=function(e,r,n){if(n.x=o.fromSNorm(e),n.y=o.fromSNorm(r),n.z=1-(Math.abs(n.x)+Math.abs(n.y)),n.z<0){var i=n.x;n.x=(1-Math.abs(n.y))*o.signNotZero(i),n.y=(1-Math.abs(i))*o.signNotZero(n.y)}return t.normalize(n,n)},i.octPackFloat=function(e){return 256*e.x+e.y};var a=new e;return i.octEncodeFloat=function(e){return i.octEncode(e,a),i.octPackFloat(a)},i.octDecodeFloat=function(e,t){var r=e/256,n=Math.floor(r),o=256*(r-n);return i.octDecode(n,o,t)},i.octPack=function(e,t,r,n){var o=i.octEncodeFloat(e),u=i.octEncodeFloat(t),s=i.octEncode(r,a);return n.x=65536*s.x+o,n.y=65536*s.y+u,n},i.octUnpack=function(e,t,r,n){var o=e.x/65536,a=Math.floor(o),u=65536*(o-a);o=e.y/65536;var s=Math.floor(o),c=65536*(o-s);i.octDecodeFloat(u,t),i.octDecodeFloat(c,r),i.octDecode(a,s,n)},i.compressTextureCoordinates=function(e){var t=1===e.x?4095:0|4096*e.x,r=1===e.y?4095:0|4096*e.y;return 4096*t+r},i.decompressTextureCoordinates=function(e,t){var r=e/4096;return t.x=Math.floor(r)/4096,t.y=r-Math.floor(r),t},i}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=new t,o=new t,i=new t,a=function(a,u,s,c,l){r(l)||(l=new t);var f,h,m,d,p,v,y,g;r(u.z)?(f=t.subtract(s,u,n),h=t.subtract(c,u,o),m=t.subtract(a,u,i),d=t.dot(f,f),p=t.dot(f,h),v=t.dot(f,m),y=t.dot(h,h),g=t.dot(h,m)):(f=e.subtract(s,u,n),h=e.subtract(c,u,o),m=e.subtract(a,u,i),d=e.dot(f,f),p=e.dot(f,h),v=e.dot(f,m),y=e.dot(h,h),g=e.dot(h,m));var E=1/(d*y-p*p);return l.y=(y*v-p*g)*E,l.z=(d*g-p*v)*E,l.x=1-l.y-l.z,l};return a}),define("Core/EncodedCartesian3",["./Cartesian3","./defined","./DeveloperError"],function(e,t){"use strict";var r=function(){this.high=e.clone(e.ZERO),this.low=e.clone(e.ZERO)};r.encode=function(e,r){t(r)||(r={high:0,low:0});var n;return e>=0?(n=65536*Math.floor(e/65536),r.high=n,r.low=e-n):(n=65536*Math.floor(-e/65536),r.high=-n,r.low=e+n),r};var n={high:0,low:0};r.fromCartesian=function(e,o){t(o)||(o=new r);var i=o.high,a=o.low;return r.encode(e.x,n),i.x=n.high,a.x=n.low,r.encode(e.y,n),i.y=n.high,a.y=n.low,r.encode(e.z,n),i.z=n.high,a.z=n.low,o};var o=new r;return r.writeElements=function(e,t,n){r.fromCartesian(e,o);var i=o.high,a=o.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=a.x,t[n+4]=a.y,t[n+5]=a.z},r}),define("Core/GeometryInstance",["./defaultValue","./defined","./DeveloperError","./Matrix4"],function(e,t,r,n){"use strict";var o=function(t){t=e(t,e.EMPTY_OBJECT),this.geometry=t.geometry,this.modelMatrix=n.clone(e(t.modelMatrix,n.IDENTITY)),this.id=t.id,this.pickPrimitive=t.pickPrimitive,this.attributes=e(t.attributes,{}),this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0};return o}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n){"use strict";var o={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return o.getSizeInBytes=function(e){switch(e){case o.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case o.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case o.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},o.validate=function(t){return e(t)&&(t===o.UNSIGNED_BYTE||t===o.UNSIGNED_SHORT||t===o.UNSIGNED_INT)},o.createTypedArray=function(e,t){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},o.createTypedArrayFromArrayBuffer=function(e,t,r,o){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,r,o):new Uint16Array(t,r,o)},r(o)}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function r(e,r,n){var o=e+r;return t.sign(e)!==t.sign(r)&&Math.abs(o/Math.max(Math.abs(e),Math.abs(r)))<n?0:o}var n={};return n.computeDiscriminant=function(e,t,r){var n=t*t-4*e*r;return n},n.computeRealRoots=function(e,n,o){var i;if(0===e)return 0===n?[]:[-o/n];if(0===n){if(0===o)return[0,0];var a=Math.abs(o),u=Math.abs(e);if(u>a&&a/u<t.EPSILON14)return[0,0];if(a>u&&u/a<t.EPSILON14)return[];if(i=-o/e,0>i)return[];var s=Math.sqrt(i);return[-s,s]}if(0===o)return i=-n/e,0>i?[i,0]:[0,i];var c=n*n,l=4*e*o,f=r(c,-l,t.EPSILON14);if(0>f)return[];var h=-.5*r(n,t.sign(n)*Math.sqrt(f),t.EPSILON14);return n>0?[h/e,o/h]:[o/h,h/e]},n}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function r(e,t,r,n){var o,i,a=e,u=t/3,s=r/3,c=n,l=a*s,f=u*c,h=u*u,m=s*s,d=a*s-h,p=a*c-u*s,v=u*c-m,y=4*d*v-p*p;if(0>y){var g,E,S;h*f>=l*m?(g=a,E=d,S=-2*u*d+a*p):(g=c,E=v,S=-c*p+2*s*v);var C=0>S?-1:1,w=-C*Math.abs(g)*Math.sqrt(-y);i=-S+w;var b=i/2,x=0>b?-Math.pow(-b,1/3):Math.pow(b,1/3),A=i===w?-x:-E/x;return o=0>=E?x+A:-S/(x*x+A*A+E),h*f>=l*m?[(o-u)/a]:[-c/(o+s)]}var T=d,M=-2*u*d+a*p,I=v,O=-c*p+2*s*v,R=Math.sqrt(y),N=Math.sqrt(3)/2,L=Math.abs(Math.atan2(a*R,-M)/3);o=2*Math.sqrt(-T);var P=Math.cos(L);i=o*P;var z=o*(-P/2-N*Math.sin(L)),D=i+z>2*u?i-u:z-u,F=a,_=D/F;L=Math.abs(Math.atan2(c*R,-O)/3),o=2*Math.sqrt(-I),P=Math.cos(L),i=o*P,z=o*(-P/2-N*Math.sin(L));var B=-c,U=2*s>i+z?i+s:z+s,G=B/U,q=F*U,k=-D*U-F*B,V=D*B,W=(s*k-u*V)/(-u*k+s*q);return W>=_?G>=_?G>=W?[_,W,G]:[_,G,W]:[G,_,W]:G>=_?[W,_,G]:G>=W?[W,G,_]:[G,W,_]}var n={};return n.computeDiscriminant=function(e,t,r,n){var o=e*e,i=t*t,a=r*r,u=n*n,s=18*e*t*r*n+i*a-27*o*u-4*(e*a*r+i*t*n);return s},n.computeRealRoots=function(e,n,o,i){var a,u;if(0===e)return t.computeRealRoots(n,o,i);if(0===n){if(0===o){if(0===i)return[0,0,0];u=-i/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===i?(a=t.computeRealRoots(e,0,o),0===a.Length?[0]:[a[0],0,a[1]]):r(e,0,o,i)}return 0===o?0===i?(u=-n/e,0>u?[u,0,0]:[0,0,u]):r(e,n,0,i):0===i?(a=t.computeRealRoots(e,n,o),0===a.length?[0]:a[1]<=0?[a[0],a[1],0]:a[0]>=0?[0,a[0],a[1]]:[a[0],0,a[1]]):r(e,n,o,i)},n}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,r,n){"use strict";function o(t,o,i,a){var u=t*t,s=o-3*u/8,c=i-o*t/2+u*t/8,l=a-i*t/4+o*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var h=-t/4,m=f[f.length-1];if(Math.abs(m)<r.EPSILON14){var d=n.computeRealRoots(1,s,l);if(2===d.length){var p,v=d[0],y=d[1];if(v>=0&&y>=0){var g=Math.sqrt(v),E=Math.sqrt(y);return[h-E,h-g,h+g,h+E]}if(v>=0&&0>y)return p=Math.sqrt(v),[h-p,h+p];if(0>v&&y>=0)return p=Math.sqrt(y),[h-p,h+p]}return[]}if(m>0){var S=Math.sqrt(m),C=(s+m-c/S)/2,w=(s+m+c/S)/2,b=n.computeRealRoots(1,S,C),x=n.computeRealRoots(1,-S,w);return 0!==b.length?(b[0]+=h,b[1]+=h,0!==x.length?(x[0]+=h,x[1]+=h,b[1]<=x[0]?[b[0],b[1],x[0],x[1]]:x[1]<=b[0]?[x[0],x[1],b[0],b[1]]:b[0]>=x[0]&&b[1]<=x[1]?[x[0],b[0],b[1],x[1]]:x[0]>=b[0]&&x[1]<=b[1]?[b[0],x[0],x[1],b[1]]:b[0]>x[0]&&b[0]<x[1]?[x[0],b[0],x[1],b[1]]:[b[0],x[0],b[1],x[1]]):b):0!==x.length?(x[0]+=h,x[1]+=h,x):[]}}return[]}function i(t,o,i,a){var u=i*i,s=o*o,c=t*t,l=-2*o,f=i*t+s-4*a,h=c*a-i*o*t+u,m=e.computeRealRoots(1,l,f,h);if(m.length>0){var d,p,v=m[0],y=o-v,g=y*y,E=t/2,S=y/2,C=g-4*a,w=g+4*Math.abs(a),b=c-4*v,x=c+4*Math.abs(v);if(0>v||b*w>C*x){var A=Math.sqrt(b);d=A/2,p=0===A?0:(t*S-i)/A}else{var T=Math.sqrt(C);d=0===T?0:(t*S-i)/T,p=T/2}var M,I;0===E&&0===d?(M=0,I=0):r.sign(E)===r.sign(d)?(M=E+d,I=v/M):(I=E-d,M=v/I);var O,R;0===S&&0===p?(O=0,R=0):r.sign(S)===r.sign(p)?(O=S+p,R=a/O):(R=S-p,O=a/R);var N=n.computeRealRoots(1,M,O),L=n.computeRealRoots(1,I,R);if(0!==N.length)return 0!==L.length?N[1]<=L[0]?[N[0],N[1],L[0],L[1]]:L[1]<=N[0]?[L[0],L[1],N[0],N[1]]:N[0]>=L[0]&&N[1]<=L[1]?[L[0],N[0],N[1],L[1]]:L[0]>=N[0]&&L[1]<=N[1]?[N[0],L[0],L[1],N[1]]:N[0]>L[0]&&N[0]<L[1]?[L[0],N[0],L[1],N[1]]:[N[0],L[0],N[1],L[1]]:N;if(0!==L.length)return L}return[]}var a={};return a.computeDiscriminant=function(e,t,r,n,o){var i=e*e,a=i*e,u=t*t,s=u*t,c=r*r,l=c*r,f=n*n,h=f*n,m=o*o,d=m*o,p=u*c*f-4*s*h-4*e*l*f+18*e*t*r*h-27*i*f*f+256*a*d+o*(18*s*r*n-4*u*l+16*e*c*c-80*e*t*c*n-6*e*u*f+144*i*r*f)+m*(144*e*u*r-27*u*u-128*i*c-192*i*t*n);return p},a.computeRealRoots=function(t,n,a,u,s){if(Math.abs(t)<r.EPSILON15)return e.computeRealRoots(n,a,u,s);var c=n/t,l=a/t,f=u/t,h=s/t,m=0>c?1:0;switch(m+=0>l?m+1:m,m+=0>f?m+1:m,m+=0>h?m+1:m){case 0:return o(c,l,f,h);case 1:return i(c,l,f,h);case 2:return i(c,l,f,h);case 3:return o(c,l,f,h);case 4:return o(c,l,f,h);case 5:return i(c,l,f,h);case 6:return o(c,l,f,h);case 7:return o(c,l,f,h);case 8:return i(c,l,f,h);case 9:return o(c,l,f,h);case 10:return o(c,l,f,h);case 11:return i(c,l,f,h);case 12:return o(c,l,f,h);case 13:return o(c,l,f,h);case 14:return o(c,l,f,h);case 15:return o(c,l,f,h);default:return void 0}},a}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=function(r,n){n=e.clone(t(n,e.ZERO)),e.equals(n,e.ZERO)||e.normalize(n,n),this.origin=e.clone(t(r,e.ZERO)),this.direction=n};return n.getPoint=function(t,n,o){return r(o)||(o=new e),o=e.multiplyByScalar(t.direction,n,o),e.add(t.origin,o,o)},n}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,r,n,o,i,a,u,s,c){"use strict";function l(t,n,o,a,u){u=r(u,!1);var s,c,l,f,h,m=t.origin,d=t.direction,p=e.subtract(o,n,v),C=e.subtract(a,n,y),w=e.cross(d,C,g),b=e.dot(p,w);if(u){if(b<i.EPSILON6)return void 0;if(s=e.subtract(m,n,E),l=e.dot(s,w),0>l||l>b)return void 0;if(c=e.cross(s,p,S),f=e.dot(d,c),0>f||l+f>b)return void 0;h=e.dot(C,c)/b}else{if(Math.abs(b)<i.EPSILON6)return void 0;var x=1/b;if(s=e.subtract(m,n,E),l=e.dot(s,w)*x,0>l||l>1)return void 0;if(c=e.cross(s,p,S),f=e.dot(d,c)*x,0>f||l+f>1)return void 0;h=e.dot(C,c)*x}return h}function f(e,t,r,n){var o=t*t-4*e*r;if(0>o)return void 0;if(o>0){var i=1/(2*e),a=Math.sqrt(o),u=(-t+a)*i,s=(-t-a)*i;return s>u?(n.root0=u,n.root1=s):(n.root0=s,n.root1=u),n}var c=-t/(2*e);return 0===c?void 0:(n.root0=n.root1=c,n)}function h(t,r,o){n(o)||(o={});var i=t.origin,a=t.direction,u=r.center,s=r.radius*r.radius,c=e.subtract(i,u,g),l=e.dot(a,a),h=2*e.dot(a,c),m=e.magnitudeSquared(c)-s,d=f(l,h,m,w);return n(d)?(o.start=d.root0,o.stop=d.root1,o):void 0}function m(e,t,r){var n=e+t;return i.sign(e)!==i.sign(t)&&Math.abs(n/Math.max(Math.abs(e),Math.abs(t)))<r?0:n}function d(t,r,n,o,c){var l,f=o*o,h=c*c,d=(t[a.COLUMN1ROW1]-t[a.COLUMN2ROW2])*h,p=c*(o*m(t[a.COLUMN1ROW0],t[a.COLUMN0ROW1],i.EPSILON15)+r.y),v=t[a.COLUMN0ROW0]*f+t[a.COLUMN2ROW2]*h+o*r.x+n,y=h*m(t[a.COLUMN2ROW1],t[a.COLUMN1ROW2],i.EPSILON15),g=c*(o*m(t[a.COLUMN2ROW0],t[a.COLUMN0ROW2])+r.z),E=[];if(0===g&&0===y){if(l=u.computeRealRoots(d,p,v),0===l.length)return E;var S=l[0],C=Math.sqrt(Math.max(1-S*S,0));if(E.push(new e(o,c*S,c*-C)),E.push(new e(o,c*S,c*C)),2===l.length){var w=l[1],b=Math.sqrt(Math.max(1-w*w,0));E.push(new e(o,c*w,c*-b)),E.push(new e(o,c*w,c*b))}return E}var x=g*g,A=y*y,T=d*d,M=g*y,I=T+A,O=2*(p*d+M),R=2*v*d+p*p-A+x,N=2*(v*p-M),L=v*v-x;if(0===I&&0===O&&0===R&&0===N)return E;l=s.computeRealRoots(I,O,R,N,L);var P=l.length;if(0===P)return E;for(var z=0;P>z;++z){var D,F=l[z],_=F*F,B=Math.max(1-_,0),U=Math.sqrt(B);D=i.sign(d)===i.sign(v)?m(d*_+v,p*F,i.EPSILON12):i.sign(v)===i.sign(p*F)?m(d*_,p*F+v,i.EPSILON12):m(d*_+p*F,v,i.EPSILON12);var G=m(y*F,g,i.EPSILON15),q=D*G;0>q?E.push(new e(o,c*F,c*U)):q>0?E.push(new e(o,c*F,c*-U)):0!==U?(E.push(new e(o,c*F,c*-U)),E.push(new e(o,c*F,c*U)),++z):E.push(new e(o,c*F,c*U))}return E}var p={};p.rayPlane=function(t,r,o){n(o)||(o=new e);var a=t.origin,u=t.direction,s=r.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON15)return void 0;var l=(-r.distance-e.dot(s,a))/c;return 0>l?void 0:(o=e.multiplyByScalar(u,l,o),e.add(a,o,o))};var v=new e,y=new e,g=new e,E=new e,S=new e;p.rayTriangle=function(t,r,o,i,a,u){var s=l(t,r,o,i,a);return!n(s)||0>s?void 0:(n(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var C=new c;p.lineSegmentTriangle=function(t,r,o,i,a,u,s){var c=C;e.clone(t,c.origin),e.subtract(r,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,o,i,a,u);return!n(f)||0>f||f>e.distance(t,r)?void 0:(n(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var w={root0:0,root1:0};p.raySphere=function(e,t,r){return r=h(e,t,r),!n(r)||r.stop<0?void 0:(r.start=Math.max(r.start,0),r)};var b=new c;p.lineSegmentSphere=function(t,r,o,i){var a=b;e.clone(t,a.origin);var u=e.subtract(r,t,a.direction),s=e.magnitude(u);return e.normalize(u,u),i=h(a,o,i),!n(i)||i.stop<0||i.start>s?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i)};var x=new e,A=new e;p.rayEllipsoid=function(t,r){var n,o,i,a,u,s=r.oneOverRadii,c=e.multiplyComponents(s,t.origin,x),l=e.multiplyComponents(s,t.direction,A),f=e.magnitudeSquared(c),h=e.dot(c,l);if(f>1){if(h>=0)return void 0;var m=h*h;if(n=f-1,o=e.magnitudeSquared(l),i=o*n,i>m)return void 0;if(m>i){a=h*h-i,u=-h+Math.sqrt(a);var d=u/o,p=n/u;return p>d?{start:d,stop:p}:{start:p,stop:d}}var v=Math.sqrt(n/o);return{start:v,stop:v}}return 1>f?(n=f-1,o=e.magnitudeSquared(l),i=o*n,a=h*h-i,u=-h+Math.sqrt(a),{start:0,stop:u/o}):0>h?(o=e.magnitudeSquared(l),{start:0,stop:-h/o}):void 0};var T=new e,M=new e,I=new e,O=new e,R=new e,N=new a,L=new a,P=new a,z=new a,D=new a,F=new a,_=new a,B=new e,U=new e,G=new t;p.grazingAltitudeLocation=function(t,r){var o=t.origin,u=t.direction,s=r.geodeticSurfaceNormal(o,T);if(e.dot(u,s)>=0)return o;var c=n(this.rayEllipsoid(t,r)),l=r.transformPositionToScaledSpace(u,T),f=e.normalize(l,l),h=e.mostOrthogonalAxis(l,O),m=e.normalize(e.cross(h,f,M),M),p=e.normalize(e.cross(f,m,I),I),v=N;v[0]=f.x,v[1]=f.y,v[2]=f.z,v[3]=m.x,v[4]=m.y,v[5]=m.z,v[6]=p.x,v[7]=p.y,v[8]=p.z;var y=a.transpose(v,L),g=a.fromScale(r.radii,P),E=a.fromScale(r.oneOverRadii,z),S=D;S[0]=0,S[1]=-u.z,S[2]=u.y,S[3]=u.z,S[4]=0,S[5]=-u.x,S[6]=-u.y,S[7]=u.x,S[8]=0;var C,w,b=a.multiply(a.multiply(y,E,F),S,F),x=a.multiply(a.multiply(b,g,_),v,_),A=a.multiplyByVector(b,o,R),q=d(x,e.negate(A,T),0,0,1),k=q.length;if(k>0){for(var V=e.clone(e.ZERO,U),W=Number.NEGATIVE_INFINITY,Y=0;k>Y;++Y){C=a.multiplyByVector(g,a.multiplyByVector(v,q[Y],B),B);var H=e.normalize(e.subtract(C,o,O),O),j=e.dot(H,u);j>W&&(W=j,V=e.clone(C,V))}var K=r.cartesianToCartographic(V,G);return W=i.clamp(W,0,1),w=e.magnitude(e.subtract(V,o,O))*Math.sqrt(1-W*W),w=c?-w:w,K.height=w,r.cartographicToCartesian(K,new e)}return void 0};var q=new e;return p.lineSegmentPlane=function(t,r,o,a){n(a)||(a=new e);var u=e.subtract(r,t,q),s=o.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON6)return void 0;var l=e.dot(s,t),f=-(o.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,a),e.add(t,a,a),a)},p.trianglePlaneIntersection=function(t,r,n,o){var i=o.normal,a=o.distance,u=e.dot(i,t)+a<0,s=e.dot(i,r)+a<0,c=e.dot(i,n)+a<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,h;if((1===l||2===l)&&(f=new e,h=new e),1===l){if(u)return p.lineSegmentPlane(t,r,o,f),p.lineSegmentPlane(t,n,o,h),{positions:[t,r,n,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(s)return p.lineSegmentPlane(r,n,o,f),p.lineSegmentPlane(r,t,o,h),{positions:[t,r,n,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return p.lineSegmentPlane(n,t,o,f),p.lineSegmentPlane(n,r,o,h),{positions:[t,r,n,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return p.lineSegmentPlane(r,t,o,f),p.lineSegmentPlane(n,t,o,h),{positions:[t,r,n,f,h],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return p.lineSegmentPlane(n,r,o,f),p.lineSegmentPlane(t,r,o,h),{positions:[t,r,n,f,h],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return p.lineSegmentPlane(t,n,o,f),p.lineSegmentPlane(r,n,o,h),{positions:[t,r,n,f,h],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),define("Core/Tipsify",["./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};return r.calculateACMR=function(r){r=e(r,e.EMPTY_OBJECT);var n=r.indices,o=r.maximumIndex,i=e(r.cacheSize,24),a=n.length;if(!t(o)){o=0;for(var u=0,s=n[u];a>u;)s>o&&(o=s),++u,s=n[u]}for(var c=[],l=0;o+1>l;l++)c[l]=0;for(var f=i+1,h=0;a>h;++h)f-c[n[h]]>i&&(c[n[h]]=f,++f);return(f-i+1)/(a/3)},r.tipsify=function(r){function n(e,t,r,n){for(;t.length>=1;){var o=t[t.length-1];if(t.splice(t.length-1,1),e[o].numLiveTriangles>0)return o}for(;n>i;){if(e[i].numLiveTriangles>0)return++i,i-1;++i}return-1}function o(e,t,r,o,i,a,u){for(var s,c=-1,l=-1,f=0;f<r.length;){var h=r[f];o[h].numLiveTriangles&&(s=0,i-o[h].timeStamp+2*o[h].numLiveTriangles<=t&&(s=i-o[h].timeStamp),(s>l||-1===l)&&(l=s,c=h)),++f}return-1===c?n(o,a,e,u):c}r=e(r,e.EMPTY_OBJECT);var i,a=r.indices,u=r.maximumIndex,s=e(r.cacheSize,24),c=a.length,l=0,f=0,h=a[f],m=c;if(t(u))l=u+1;else{for(;m>f;)h>l&&(l=h),++f,h=a[f];if(-1===l)return 0;++l}for(var d=[],p=0;l>p;p++)d[p]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};f=0;for(var v=0;m>f;)d[a[f]].vertexTriangles.push(v),++d[a[f]].numLiveTriangles,d[a[f+1]].vertexTriangles.push(v),++d[a[f+1]].numLiveTriangles,d[a[f+2]].vertexTriangles.push(v),++d[a[f+2]].numLiveTriangles,++v,f+=3;var y=0,g=s+1;i=1;var E,S,C=[],w=[],b=0,x=[],A=c/3,T=[];for(p=0;A>p;p++)T[p]=!1;for(var M,I;-1!==y;){C=[],S=d[y],I=S.vertexTriangles.length;for(var O=0;I>O;++O)if(v=S.vertexTriangles[O],!T[v]){T[v]=!0,f=v+v+v;for(var R=0;3>R;++R)M=a[f],C.push(M),w.push(M),x[b]=M,++b,E=d[M],--E.numLiveTriangles,g-E.timeStamp>s&&(E.timeStamp=g,++g),++f}y=o(a,s,C,d,g,w,l)}return x},r}),define("Core/GeometryPipeline",["./AttributeCompression","./barycentricCoordinates","./BoundingSphere","./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EncodedCartesian3","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryInstance","./GeometryType","./IndexDatatype","./Intersect","./IntersectionTests","./Math","./Matrix3","./Matrix4","./Plane","./PrimitiveType","./Tipsify"],function(e,t,r,n,o,i,a,u,s,c,l,f,h,m,d,p,v,y,g,E,S,C,w,b,x,A){"use strict";function T(e,t,r,n,o){e[t++]=r,e[t++]=n,e[t++]=n,e[t++]=o,e[t++]=o,e[t]=r}function M(e){for(var t=e.length,r=6*(t/3),n=y.createTypedArray(t,r),o=0,i=0;t>i;i+=3,o+=6)T(n,o,e[i],e[i+1],e[i+2]);return n}function I(e){var t=e.length;if(t>=3){var r=6*(t-2),n=y.createTypedArray(t,r);T(n,0,e[0],e[1],e[2]);for(var o=6,i=3;t>i;++i,o+=6)T(n,o,e[i-1],e[i],e[i-2]);return n}return new Uint16Array}function O(e){if(e.length>0){for(var t=e.length-1,r=6*(t-1),n=y.createTypedArray(t,r),o=e[0],i=0,a=1;t>a;++a,i+=6)T(n,i,o,e[a],e[a+1]);return n}return new Uint16Array}function R(e){var t={};for(var r in e)if(e.hasOwnProperty(r)&&c(e[r])&&c(e[r].values)){var n=e[r];t[r]=new d({componentDatatype:n.componentDatatype,componentsPerAttribute:n.componentsPerAttribute,normalize:n.normalize,values:[]})}return t}function N(e,t,r){for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values))for(var o=t[n],i=0;i<o.componentsPerAttribute;++i)e[n].values.push(o.values[r*o.componentsPerAttribute+i])}function L(e,t){if(c(t))for(var r=t.values,n=r.length,i=0;n>i;i+=3)o.unpack(r,i,it),w.multiplyByPoint(e,it,it),o.pack(it,r,i)}function P(e,t){if(c(t))for(var r=t.values,n=r.length,i=0;n>i;i+=3)o.unpack(r,i,it),C.multiplyByVector(e,it,it),it=o.normalize(it,it),o.pack(it,r,i)}function z(e,t){var r,n=e.length,o={},i=e[0][t].attributes;for(r in i)if(i.hasOwnProperty(r)&&c(i[r])&&c(i[r].values)){for(var a=i[r],s=a.values.length,l=!0,f=1;n>f;++f){var h=e[f][t].attributes[r];if(!c(h)||a.componentDatatype!==h.componentDatatype||a.componentsPerAttribute!==h.componentsPerAttribute||a.normalize!==h.normalize){l=!1;break}s+=h.values.length}l&&(o[r]=new d({componentDatatype:a.componentDatatype,componentsPerAttribute:a.componentsPerAttribute,normalize:a.normalize,values:u.createTypedArray(a.componentDatatype,s)}))}return o}function D(e,t){var n,i,a,u,s=e.length;e[0].modelMatrix;var l,f,h,d=c(e[0][t].indices),p=e[0][t].primitiveType,v=z(e,t);for(n in v)if(v.hasOwnProperty(n))for(l=v[n].values,u=0,i=0;s>i;++i)for(f=e[i][t].attributes[n].values,h=f.length,a=0;h>a;++a)l[u++]=f[a];var g;if(d){var E=0;for(i=0;s>i;++i)E+=e[i][t].indices.length;var S=m.computeNumberOfVertices(new m({attributes:v,primitiveType:x.POINTS})),C=y.createTypedArray(S,E),w=0,b=0;for(i=0;s>i;++i){var A=e[i][t].indices,T=A.length;for(u=0;T>u;++u)C[w++]=b+A[u];b+=m.computeNumberOfVertices(e[i][t])}g=C}var M,I=new o,O=0;for(i=0;s>i;++i){if(M=e[i][t].boundingSphere,!c(M)){I=void 0;break}o.add(M.center,I,I)}if(c(I))for(o.divideByScalar(I,s,I),i=0;s>i;++i){M=e[i][t].boundingSphere;var R=o.magnitude(o.subtract(M.center,I,st))+M.radius;R>O&&(O=R)}return new m({attributes:v,indices:g,primitiveType:p,boundingSphere:c(I)?new r(I,O):void 0})}function F(e){if(c(e.indices))return e;for(var t=m.computeNumberOfVertices(e),r=y.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function _(e){var t=m.computeNumberOfVertices(e),r=y.createTypedArray(t,3*(t-2));r[0]=1,r[1]=0,r[2]=2;for(var n=3,o=3;t>o;++o)r[n++]=o-1,r[n++]=0,r[n++]=o;return e.indices=r,e.primitiveType=x.TRIANGLES,e}function B(e){var t=m.computeNumberOfVertices(e),r=y.createTypedArray(t,3*(t-2));r[0]=0,r[1]=1,r[2]=2,t>3&&(r[3]=0,r[4]=2,r[5]=3);for(var n=6,o=3;t-1>o;o+=2)r[n++]=o,r[n++]=o-1,r[n++]=o+1,t>o+2&&(r[n++]=o,r[n++]=o+1,r[n++]=o+2);return e.indices=r,e.primitiveType=x.TRIANGLES,e}function U(e){if(c(e.indices))return e;for(var t=m.computeNumberOfVertices(e),r=y.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function G(e){var t=m.computeNumberOfVertices(e),r=y.createTypedArray(t,2*(t-1));r[0]=0,r[1]=1;for(var n=2,o=2;t>o;++o)r[n++]=o-1,r[n++]=o;return e.indices=r,e.primitiveType=x.LINES,e}function q(e){var t=m.computeNumberOfVertices(e),r=y.createTypedArray(t,2*t);r[0]=0,r[1]=1;for(var n=2,o=2;t>o;++o)r[n++]=o-1,r[n++]=o;return r[n++]=t-1,r[n]=0,e.indices=r,e.primitiveType=x.LINES,e}function k(e){switch(e.primitiveType){case x.TRIANGLE_FAN:return _(e);case x.TRIANGLE_STRIP:return B(e);case x.TRIANGLES:return F(e);case x.LINE_STRIP:return G(e);case x.LINE_LOOP:return q(e);case x.LINES:return U(e)}return e}function V(e,t){Math.abs(e.y)<S.EPSILON6&&(e.y=t?-S.EPSILON6:S.EPSILON6)}function W(e,t,r){if(0!==e.y&&0!==t.y&&0!==r.y)return V(e,e.y<0),V(t,t.y<0),V(r,r.y<0),void 0;var n,o=Math.abs(e.y),i=Math.abs(t.y),a=Math.abs(r.y);n=o>i?o>a?S.sign(e.y):S.sign(r.y):i>a?S.sign(t.y):S.sign(r.y);var u=0>n;V(e,u),V(t,u),V(r,u)}function Y(e,t,r,n){o.add(e,o.multiplyByScalar(o.subtract(t,e,St),e.y/(e.y-t.y),St),r),o.clone(r,n),V(r,!0),V(n,!1)}function H(e,t,r){if(e.x>=0||t.x>=0||r.x>=0)return void 0;W(e,t,r);var n=e.y<0,o=t.y<0,i=r.y<0,a=0;a+=n?1:0,a+=o?1:0,a+=i?1:0;var u=At.indices;1===a?(u[1]=3,u[2]=4,u[5]=6,u[7]=6,u[8]=5,n?(Y(e,t,Ct,bt),Y(e,r,wt,xt),u[0]=0,u[3]=1,u[4]=2,u[6]=1):o?(Y(t,r,Ct,bt),Y(t,e,wt,xt),u[0]=1,u[3]=2,u[4]=0,u[6]=2):i&&(Y(r,e,Ct,bt),Y(r,t,wt,xt),u[0]=2,u[3]=0,u[4]=1,u[6]=0)):2===a&&(u[2]=4,u[4]=4,u[5]=3,u[7]=5,u[8]=6,n?o?i||(Y(r,e,Ct,bt),Y(r,t,wt,xt),u[0]=0,u[1]=1,u[3]=0,u[6]=2):(Y(t,r,Ct,bt),Y(t,e,wt,xt),u[0]=2,u[1]=0,u[3]=2,u[6]=1):(Y(e,t,Ct,bt),Y(e,r,wt,xt),u[0]=1,u[1]=2,u[3]=1,u[6]=0));var s=At.positions;return s[0]=e,s[1]=t,s[2]=r,s.length=3,(1===a||2===a)&&(s[3]=Ct,s[4]=wt,s[5]=bt,s[6]=xt,s.length=7),At}function j(e,t){var n=e.attributes;if(0===n.position.values.length)return void 0;for(var o in n)if(n.hasOwnProperty(o)&&c(n[o])&&c(n[o].values)){var i=n[o];i.values=u.createTypedArray(i.componentDatatype,i.values)}var a=m.computeNumberOfVertices(e);return e.indices=y.createTypedArray(a,e.indices),t&&(e.boundingSphere=r.fromVertices(n.position.values)),e}function K(e){var t=e.attributes,r={};for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values)){var o=t[n];r[n]=new d({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new m({attributes:r,indices:[],primitiveType:e.primitiveType})}function Z(e,t,r){var n=c(e.geometry.boundingSphere);t=j(t,n),r=j(r,n),c(r)&&!c(t)?e.geometry=r:!c(r)&&c(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=r,e.geometry=void 0)}function X(e,r,i,a,u,s,l,f,h,m,d){if(c(s)||c(l)||c(f)||c(h)){var p=o.fromArray(u,3*e,Tt),v=o.fromArray(u,3*r,Mt),y=o.fromArray(u,3*i,It),g=t(a,p,v,y,Ot);if(c(s)){var E=o.fromArray(s,3*e,Tt),S=o.fromArray(s,3*r,Mt),C=o.fromArray(s,3*i,It);o.multiplyByScalar(E,g.x,E),o.multiplyByScalar(S,g.y,S),o.multiplyByScalar(C,g.z,C);var w=o.add(E,S,E);o.add(w,C,w),o.normalize(w,w),o.pack(w,m.normal.values,3*d)}if(c(l)){var b=o.fromArray(l,3*e,Tt),x=o.fromArray(l,3*r,Mt),A=o.fromArray(l,3*i,It);o.multiplyByScalar(b,g.x,b),o.multiplyByScalar(x,g.y,x),o.multiplyByScalar(A,g.z,A);var T=o.add(b,x,b);o.add(T,A,T),o.normalize(T,T),o.pack(T,m.binormal.values,3*d)}if(c(f)){var M=o.fromArray(f,3*e,Tt),I=o.fromArray(f,3*r,Mt),O=o.fromArray(f,3*i,It);o.multiplyByScalar(M,g.x,M),o.multiplyByScalar(I,g.y,I),o.multiplyByScalar(O,g.z,O);var R=o.add(M,I,M);o.add(R,O,R),o.normalize(R,R),o.pack(R,m.tangent.values,3*d)}if(c(h)){var N=n.fromArray(h,2*e,Rt),L=n.fromArray(h,2*r,Nt),P=n.fromArray(h,2*i,Lt);n.multiplyByScalar(N,g.x,N),n.multiplyByScalar(L,g.y,L),n.multiplyByScalar(P,g.z,P);var z=n.add(N,L,N);n.add(z,P,z),n.pack(z,m.st.values,2*d)}}}function Q(e,t,r,n,o,i){var a=e.position.values.length/3;if(-1!==o){var u=n[o],s=r[u];return-1===s?(r[u]=a,e.position.values.push(i.x,i.y,i.z),t.push(a),a):(t.push(s),s)}return e.position.values.push(i.x,i.y,i.z),t.push(a),a}function J(e){var t,r,n,i,a,u=e.geometry,s=u.attributes,l=s.position.values,f=c(s.normal)?s.normal.values:void 0,h=c(s.binormal)?s.binormal.values:void 0,m=c(s.tangent)?s.tangent.values:void 0,d=c(s.st)?s.st.values:void 0,p=u.indices,v=K(u),y=K(u),g=[]; +g.length=l.length/3;var E=[];for(E.length=l.length/3,a=0;a<g.length;++a)g[a]=-1,E[a]=-1;var S=p.length;for(a=0;S>a;a+=3){var C=p[a],w=p[a+1],b=p[a+2],x=o.fromArray(l,3*C),A=o.fromArray(l,3*w),T=o.fromArray(l,3*b),M=H(x,A,T);if(c(M)&&M.positions.length>3)for(var I=M.positions,O=M.indices,R=O.length,N=0;R>N;++N){var L=O[N],P=I[L];P.y<0?(t=y.attributes,r=y.indices,n=g):(t=v.attributes,r=v.indices,n=E),i=Q(t,r,n,p,3>L?a+L:-1,P),X(C,w,b,P,l,f,h,m,d,t,i)}else c(M)&&(x=M.positions[0],A=M.positions[1],T=M.positions[2]),x.y<0?(t=y.attributes,r=y.indices,n=g):(t=v.attributes,r=v.indices,n=E),i=Q(t,r,n,p,a,x),X(C,w,b,x,l,f,h,m,d,t,i),i=Q(t,r,n,p,a+1,A),X(C,w,b,A,l,f,h,m,d,t,i),i=Q(t,r,n,p,a+2,T),X(C,w,b,T,l,f,h,m,d,t,i)}Z(e,y,v)}function $(e){var t,r=e.geometry,n=r.attributes,i=n.position.values,a=r.indices,u=K(r),s=K(r),l=a.length,f=[];f.length=i.length/3;var h=[];for(h.length=i.length/3,t=0;t<f.length;++t)f[t]=-1,h[t]=-1;for(t=0;l>t;t+=2){var m=a[t],d=a[t+1],p=o.fromArray(i,3*m,Tt),v=o.fromArray(i,3*d,Mt);Math.abs(p.y)<S.EPSILON6&&(p.y=p.y<0?-S.EPSILON6:S.EPSILON6),Math.abs(v.y)<S.EPSILON6&&(v.y=v.y<0?-S.EPSILON6:S.EPSILON6);var y=u.attributes,g=u.indices,C=h,w=s.attributes,b=s.indices,x=f,A=E.lineSegmentPlane(p,v,Pt,It);if(c(A)){var T=o.multiplyByScalar(o.UNIT_Y,5*S.EPSILON9,zt);p.y<0&&(o.negate(T,T),y=s.attributes,g=s.indices,C=f,w=u.attributes,b=u.indices,x=h);var M=o.add(A,T,Dt);Q(y,g,C,a,t,p),Q(y,g,C,a,-1,M),o.negate(T,T),o.add(A,T,M),Q(w,b,x,a,-1,M),Q(w,b,x,a,t+1,v)}else{var I,O,R;p.y<0?(I=s.attributes,O=s.indices,R=f):(I=u.attributes,O=u.indices,R=h),Q(I,O,R,a,t,p),Q(I,O,R,a,t+1,v)}}Z(e,s,u)}function et(e){var t=e.geometry,r=t.attributes,a=r.position.values,u=r.prevPosition.values,s=r.nextPosition.values,l=r.expandAndWidth.values;t.indices;var f,h,m,d=c(r.st)?r.st.values:void 0,p=c(r.color)?r.color.values:void 0,v=K(t),y=K(t),g=a.length/3;for(f=0;g>f;f+=4){var C=f,w=f+1,b=f+2,x=f+3,A=o.fromArray(a,3*C,Bt),T=o.fromArray(a,3*w,Ut),M=o.fromArray(a,3*b,Gt),I=o.fromArray(a,3*x,qt);Math.abs(A.y)<S.EPSILON6&&(A.y=S.EPSILON6*(M.y<0?-1:1),T.y=A.y),Math.abs(M.y)<S.EPSILON6&&(M.y=S.EPSILON6*(A.y<0?-1:1),I.y=M.y);var O=v.attributes,R=v.indices,N=y.attributes,L=y.indices,P=E.lineSegmentPlane(A,M,Pt,kt);if(c(P)){var z=o.multiplyByScalar(o.UNIT_Y,5*S.EPSILON9,Vt);A.y<0&&(o.negate(z,z),O=y.attributes,R=y.indices,N=v.attributes,L=v.indices);var D=o.add(P,z,Wt);for(O.position.values.push(A.x,A.y,A.z,T.x,T.y,T.z),O.position.values.push(D.x,D.y,D.z),O.position.values.push(D.x,D.y,D.z),o.negate(z,z),o.add(P,z,D),N.position.values.push(D.x,D.y,D.z),N.position.values.push(D.x,D.y,D.z),N.position.values.push(M.x,M.y,M.z,I.x,I.y,I.z),h=3*C;3*C+6>h;++h)O.prevPosition.values.push(u[h]);for(O.prevPosition.values.push(A.x,A.y,A.z,A.x,A.y,A.z),N.prevPosition.values.push(A.x,A.y,A.z,A.x,A.y,A.z),h=3*b;3*b+6>h;++h)N.prevPosition.values.push(u[h]);for(h=3*C;3*C+6>h;++h)O.nextPosition.values.push(s[h]);for(O.nextPosition.values.push(M.x,M.y,M.z,M.x,M.y,M.z),N.nextPosition.values.push(M.x,M.y,M.z,M.x,M.y,M.z),h=3*b;3*b+6>h;++h)N.nextPosition.values.push(s[h]);var F=n.fromArray(l,2*C,Ft),_=Math.abs(F.y);O.expandAndWidth.values.push(-1,_,1,_),O.expandAndWidth.values.push(-1,-_,1,-_),N.expandAndWidth.values.push(-1,_,1,_),N.expandAndWidth.values.push(-1,-_,1,-_);var B=o.magnitudeSquared(o.subtract(P,A,qt));if(B/=o.magnitudeSquared(o.subtract(M,A,qt)),c(p)){var U=i.fromArray(p,4*C,Yt),G=i.fromArray(p,4*b,Yt),q=S.lerp(U.x,G.x,B),k=S.lerp(U.y,G.y,B),V=S.lerp(U.z,G.z,B),W=S.lerp(U.w,G.w,B);for(h=4*C;4*C+8>h;++h)O.color.values.push(p[h]);for(O.color.values.push(q,k,V,W),O.color.values.push(q,k,V,W),N.color.values.push(q,k,V,W),N.color.values.push(q,k,V,W),h=4*b;4*b+8>h;++h)N.color.values.push(p[h])}if(c(d)){var Y=n.fromArray(d,2*C,Ft),H=n.fromArray(d,2*(f+3),_t),j=S.lerp(Y.x,H.x,B);for(h=2*C;2*C+4>h;++h)O.st.values.push(d[h]);for(O.st.values.push(j,Y.y),O.st.values.push(j,H.y),N.st.values.push(j,Y.y),N.st.values.push(j,H.y),h=2*b;2*b+4>h;++h)N.st.values.push(d[h])}m=O.position.values.length/3-4,R.push(m,m+2,m+1),R.push(m+1,m+2,m+3),m=N.position.values.length/3-4,L.push(m,m+2,m+1),L.push(m+1,m+2,m+3)}else{var X,Q;for(A.y<0?(X=y.attributes,Q=y.indices):(X=v.attributes,Q=v.indices),X.position.values.push(A.x,A.y,A.z),X.position.values.push(T.x,T.y,T.z),X.position.values.push(M.x,M.y,M.z),X.position.values.push(I.x,I.y,I.z),h=3*f;3*f+12>h;++h)X.prevPosition.values.push(u[h]),X.nextPosition.values.push(s[h]);for(h=2*f;2*f+8>h;++h)X.expandAndWidth.values.push(l[h]),c(d)&&X.st.values.push(d[h]);if(c(p))for(h=4*f;4*f+16>h;++h)X.color.values.push(p[h]);m=X.position.values.length/3-4,Q.push(m,m+2,m+1),Q.push(m+1,m+2,m+3)}}Z(e,y,v)}var tt={};tt.toWireframe=function(e){var t=e.indices;if(c(t)){switch(e.primitiveType){case x.TRIANGLES:e.indices=M(t);break;case x.TRIANGLE_STRIP:e.indices=I(t);break;case x.TRIANGLE_FAN:e.indices=O(t);break;default:throw new l("geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.")}e.primitiveType=x.LINES}return e},tt.createLineSegmentsForVectors=function(e,t,n){t=s(t,"normal"),n=s(n,1e4);for(var o=e.attributes.position.values,i=e.attributes[t].values,a=o.length,l=new Float64Array(2*a),f=0,h=0;a>h;h+=3)l[f++]=o[h],l[f++]=o[h+1],l[f++]=o[h+2],l[f++]=o[h]+i[h]*n,l[f++]=o[h+1]+i[h+1]*n,l[f++]=o[h+2]+i[h+2]*n;var p,v=e.boundingSphere;return c(v)&&(p=new r(v.center,v.radius+n)),new m({attributes:{position:new d({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:l})},primitiveType:x.LINES,boundingSphere:p})},tt.createAttributeLocations=function(e){var t,r=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","binormal","tangent","compressedAttributes"],n=e.attributes,o={},i=0,a=r.length;for(t=0;a>t;++t){var u=r[t];c(n[u])&&(o[u]=i++)}for(var s in n)n.hasOwnProperty(s)&&!c(o[s])&&(o[s]=i++);return o},tt.reorderForPreVertexCache=function(e){var t=m.computeNumberOfVertices(e),r=e.indices;if(c(r)){for(var n=new Int32Array(t),o=0;t>o;o++)n[o]=-1;for(var i,a=r,s=a.length,l=y.createTypedArray(t,s),f=0,h=0,d=0;s>f;)i=n[a[f]],-1!==i?l[h]=i:(i=a[f],n[i]=d,l[h]=d,++d),++f,++h;e.indices=l;var p=e.attributes;for(var v in p)if(p.hasOwnProperty(v)&&c(p[v])&&c(p[v].values)){for(var g=p[v],E=g.values,S=0,C=g.componentsPerAttribute,w=u.createTypedArray(g.componentDatatype,d*C);t>S;){var b=n[S];if(-1!==b)for(o=0;C>o;o++)w[C*b+o]=E[C*S+o];++S}g.values=w}}return e},tt.reorderForPostVertexCache=function(e,t){var r=e.indices;if(e.primitiveType===x.TRIANGLES&&c(r)){for(var n=r.length,o=0,i=0;n>i;i++)r[i]>o&&(o=r[i]);e.indices=A.tipsify({indices:r,maximumIndex:o,cacheSize:t})}return e},tt.fitToUnsignedShortIndices=function(e){var t=[],r=m.computeNumberOfVertices(e);if(c(e.indices)&&r>S.SIXTY_FOUR_KILOBYTES){var n,o=[],i=[],a=0,u=R(e.attributes),s=e.indices,l=s.length;e.primitiveType===x.TRIANGLES?n=3:e.primitiveType===x.LINES?n=2:e.primitiveType===x.POINTS&&(n=1);for(var f=0;l>f;f+=n){for(var h=0;n>h;++h){var d=s[f+h],p=o[d];c(p)||(p=a++,o[d]=p,N(u,e.attributes,d)),i.push(p)}a+n>S.SIXTY_FOUR_KILOBYTES&&(t.push(new m({attributes:u,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),o=[],i=[],a=0,u=R(e.attributes))}0!==i.length&&t.push(new m({attributes:u,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var rt=new o,nt=new a;tt.projectTo2D=function(e,t,r,n,i){var a=e.attributes[t];i=c(i)?i:new h;for(var s=i.ellipsoid,f=a.values,m=new Float64Array(f.length),p=0,v=0;v<f.length;v+=3){var y=o.fromArray(f,v,rt),g=s.cartesianToCartographic(y,nt);if(!c(g))throw new l("Could not project point ("+y.x+", "+y.y+", "+y.z+") to 2D.");var E=i.project(g,rt);m[p++]=E.x,m[p++]=E.y,m[p++]=E.z}return e.attributes[r]=a,e.attributes[n]=new d({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:m}),delete e.attributes[t],e};var ot={high:0,low:0};tt.encodeAttribute=function(e,t,r,n){for(var o=e.attributes[t],i=o.values,a=i.length,s=new Float32Array(a),c=new Float32Array(a),l=0;a>l;++l)f.encode(i[l],ot),s[l]=ot.high,c[l]=ot.low;var h=o.componentsPerAttribute;return e.attributes[r]=new d({componentDatatype:u.FLOAT,componentsPerAttribute:h,values:s}),e.attributes[n]=new d({componentDatatype:u.FLOAT,componentsPerAttribute:h,values:c}),delete e.attributes[t],e};var it=new o,at=new w,ut=new C;tt.transformToWorldCoordinates=function(e){var t=e.modelMatrix;if(w.equals(t,w.IDENTITY))return e;var n=e.geometry.attributes;L(t,n.position),L(t,n.prevPosition),L(t,n.nextPosition),(c(n.normal)||c(n.binormal)||c(n.tangent))&&(w.inverse(t,at),w.transpose(at,at),w.getRotation(at,ut),P(ut,n.normal),P(ut,n.binormal),P(ut,n.tangent));var o=e.geometry.boundingSphere;return c(o)&&(e.geometry.boundingSphere=r.transform(o,t,o)),e.modelMatrix=w.clone(w.IDENTITY),e};var st=new o;tt.combineInstances=function(e){for(var t=[],r=[],n=e.length,o=0;n>o;++o){var i=e[o];c(i.geometry)?t.push(i):r.push(i)}var a=[];return t.length>0&&a.push(D(t,"geometry")),r.length>0&&(a.push(D(r,"westHemisphereGeometry")),a.push(D(r,"eastHemisphereGeometry"))),a};var ct=new o,lt=new o,ft=new o,ht=new o;tt.computeNormal=function(e){for(var t=e.indices,r=e.attributes,n=r.position.values,i=r.position.values.length/3,a=t.length,s=new Array(i),c=new Array(a/3),l=new Array(a),f=0;i>f;f++)s[f]={indexOffset:0,count:0,currentCount:0};var h=0;for(f=0;a>f;f+=3){var m=t[f],p=t[f+1],v=t[f+2],y=3*m,g=3*p,E=3*v;lt.x=n[y],lt.y=n[y+1],lt.z=n[y+2],ft.x=n[g],ft.y=n[g+1],ft.z=n[g+2],ht.x=n[E],ht.y=n[E+1],ht.z=n[E+2],s[m].count++,s[p].count++,s[v].count++,o.subtract(ft,lt,ft),o.subtract(ht,lt,ht),c[h]=o.cross(ft,ht,new o),h++}var S=0;for(f=0;i>f;f++)s[f].indexOffset+=S,S+=s[f].count;h=0;var C;for(f=0;a>f;f+=3){C=s[t[f]];var w=C.indexOffset+C.currentCount;l[w]=h,C.currentCount++,C=s[t[f+1]],w=C.indexOffset+C.currentCount,l[w]=h,C.currentCount++,C=s[t[f+2]],w=C.indexOffset+C.currentCount,l[w]=h,C.currentCount++,h++}var b=new Float32Array(3*i);for(f=0;i>f;f++){var x=3*f;if(C=s[f],C.count>0){for(o.clone(o.ZERO,ct),h=0;h<C.count;h++)o.add(ct,c[l[C.indexOffset+h]],ct);o.normalize(ct,ct),b[x]=ct.x,b[x+1]=ct.y,b[x+2]=ct.z}else b[x]=0,b[x+1]=0,b[x+2]=1}return e.attributes.normal=new d({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:b}),e};var mt=new o,dt=new o,pt=new o;tt.computeBinormalAndTangent=function(e){e.attributes;for(var t=e.indices,r=e.attributes.position.values,n=e.attributes.normal.values,i=e.attributes.st.values,a=e.attributes.position.values.length/3,s=t.length,c=new Array(3*a),l=0;l<c.length;l++)c[l]=0;var f,h,m;for(l=0;s>l;l+=3){var p=t[l],v=t[l+1],y=t[l+2];f=3*p,h=3*v,m=3*y;var g=2*p,E=2*v,S=2*y,C=r[f],w=r[f+1],b=r[f+2],x=i[g],A=i[g+1],T=i[E+1]-A,M=i[S+1]-A,I=1/((i[E]-x)*M-(i[S]-x)*T),O=(M*(r[h]-C)-T*(r[m]-C))*I,R=(M*(r[h+1]-w)-T*(r[m+1]-w))*I,N=(M*(r[h+2]-b)-T*(r[m+2]-b))*I;c[f]+=O,c[f+1]+=R,c[f+2]+=N,c[h]+=O,c[h+1]+=R,c[h+2]+=N,c[m]+=O,c[m+1]+=R,c[m+2]+=N}var L=new Float32Array(3*a),P=new Float32Array(3*a);for(l=0;a>l;l++){f=3*l,h=f+1,m=f+2;var z=o.fromArray(n,f,mt),D=o.fromArray(c,f,pt),F=o.dot(z,D);o.multiplyByScalar(z,F,dt),o.normalize(o.subtract(D,dt,D),D),P[f]=D.x,P[h]=D.y,P[m]=D.z,o.normalize(o.cross(z,D,D),D),L[f]=D.x,L[h]=D.y,L[m]=D.z}return e.attributes.tangent=new d({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:P}),e.attributes.binormal=new d({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:L}),e};var vt=new n,yt=new o,gt=new o,Et=new o;tt.compressVertices=function(t){var r=t.attributes.normal,i=t.attributes.st;if(!c(r)&&!c(i))return t;var a,s,l,f,h=t.attributes.tangent,m=t.attributes.binormal;c(r)&&(a=r.values),c(i)&&(s=i.values),c(h)&&(l=h.values),m&&(f=m.values);var p=c(a)?a.length:s.length,v=c(a)?3:2,y=p/v,g=y,E=c(s)&&c(a)?2:1;E+=c(l)||c(f)?1:0,g*=E;for(var S=new Float32Array(g),C=0,w=0;y>w;++w){c(s)&&(n.fromArray(s,2*w,vt),S[C++]=e.compressTextureCoordinates(vt));var b=3*w;c(a)&&c(l)&&c(f)?(o.fromArray(a,b,yt),o.fromArray(l,b,gt),o.fromArray(f,b,Et),e.octPack(yt,gt,Et,vt),S[C++]=vt.x,S[C++]=vt.y):(c(a)&&(o.fromArray(a,b,yt),S[C++]=e.octEncodeFloat(yt)),c(l)&&(o.fromArray(l,b,yt),S[C++]=e.octEncodeFloat(yt)),c(f)&&(o.fromArray(f,b,yt),S[C++]=e.octEncodeFloat(yt)))}return t.attributes.compressedAttributes=new d({componentDatatype:u.FLOAT,componentsPerAttribute:E,values:S}),c(a)&&delete t.attributes.normal,c(s)&&delete t.attributes.st,c(l)&&delete t.attributes.tangent,c(f)&&delete t.attributes.binormal,t};var St=new o,Ct=new o,wt=new o,bt=new o,xt=new o,At={positions:new Array(7),indices:new Array(9)},Tt=new o,Mt=new o,It=new o,Ot=new o,Rt=new n,Nt=new n,Lt=new n,Pt=b.fromPointNormal(o.ZERO,o.UNIT_Y),zt=new o,Dt=new o,Ft=new n,_t=new n,Bt=new o,Ut=new o,Gt=new o,qt=new o,kt=new o,Vt=new o,Wt=new o,Yt=new i;return new i,tt.splitLongitude=function(e){var t=e.geometry,n=t.boundingSphere;if(c(n)){var o=n.center.x-n.radius;if(o>0||r.intersectPlane(n,b.ORIGIN_ZX_PLANE)!==g.INTERSECTING)return e}if(t.geometryType!==v.NONE)switch(t.geometryType){case v.POLYLINES:et(e);break;case v.TRIANGLES:J(e);break;case v.LINES:$(e)}else k(t),t.primitiveType===x.TRIANGLES?J(e):t.primitiveType===x.LINES&&$(e);return e},tt}),define("Core/WebMercatorProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,r,n,o,i,a,u){"use strict";var s=function(e){this._ellipsoid=r(e,a.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return o(s.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),s.mercatorAngleToGeodeticLatitude=function(e){return u.PI_OVER_TWO-2*Math.atan(Math.exp(-e))},s.geodeticLatitudeToMercatorAngle=function(e){e>s.MaximumLatitude?e=s.MaximumLatitude:e<-s.MaximumLatitude&&(e=-s.MaximumLatitude);var t=Math.sin(e);return.5*Math.log((1+t)/(1-t))},s.MaximumLatitude=s.mercatorAngleToGeodeticLatitude(Math.PI),s.prototype.project=function(t,r){var o=this._semimajorAxis,i=t.longitude*o,a=s.geodeticLatitudeToMercatorAngle(t.latitude)*o,u=t.height;return n(r)?(r.x=i,r.y=a,r.z=u,r):new e(i,a,u)},s.prototype.unproject=function(e,r){var o=this._oneOverSemimajorAxis,i=e.x*o,a=s.mercatorAngleToGeodeticLatitude(e.y*o),u=e.z;return n(r)?(r.longitude=i,r.latitude=a,r.height=u,r):new t(i,a,u)},s}),define("Scene/PrimitivePipeline",["../Core/BoundingSphere","../Core/Color","../Core/ComponentDatatype","../Core/defaultValue","../Core/defined","../Core/DeveloperError","../Core/Ellipsoid","../Core/FeatureDetection","../Core/GeographicProjection","../Core/Geometry","../Core/GeometryAttribute","../Core/GeometryAttributes","../Core/GeometryPipeline","../Core/IndexDatatype","../Core/Matrix4","../Core/WebMercatorProjection"],function(e,t,r,n,o,i,a,u,s,c,l,f,h,m,d,p){"use strict";function v(e,t,r){var n,o=!r,i=e.length;if(!o&&i>1){var a=e[0].modelMatrix;for(n=1;i>n;++n)if(!d.equals(a,e[n].modelMatrix)){o=!0;break}}if(o)for(n=0;i>n;++n)h.transformToWorldCoordinates(e[n]);else d.multiplyTransformation(t,e[0].modelMatrix,t)}function y(e,n){var o=e.attributes,i=o.position,a=4*(i.values.length/i.componentsPerAttribute);o.pickColor=new l({componentDatatype:r.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0,values:new Uint8Array(a)});for(var u=t.floatToByte(n.red),s=t.floatToByte(n.green),c=t.floatToByte(n.blue),f=t.floatToByte(n.alpha),h=o.pickColor.values,m=0;a>m;m+=4)h[m]=u,h[m+1]=s,h[m+2]=c,h[m+3]=f}function g(e,t){for(var r=e.length,n=0;r>n;++n){var i=e[n],a=t[n];o(i.geometry)?y(i.geometry,a):(y(i.westHemisphereGeometry,a),y(i.eastHemisphereGeometry,a))}}function E(e){var t,r=e.length,n=[],i=e[0].attributes;for(t in i)if(i.hasOwnProperty(t)){for(var a=i[t],u=!0,s=1;r>s;++s){var c=e[s].attributes[t];if(!o(c)||a.componentDatatype!==c.componentDatatype||a.componentsPerAttribute!==c.componentsPerAttribute||a.normalize!==c.normalize){u=!1;break}}u&&n.push(t)}return n}function S(e,t,n){for(var o=c.computeNumberOfVertices(t),i=n.length,a=0;i>a;++a){for(var u=n[a],s=e[u],f=s.componentDatatype,h=s.value,m=h.length,d=r.createTypedArray(f,o*m),p=0;o>p;++p)d.set(h,p*m);t.attributes[u]=new l({componentDatatype:f,componentsPerAttribute:m,normalize:s.normalize,values:d})}}function C(e,t){for(var r=e.length,n=0;r>n;++n){var i=e[n],a=i.attributes;o(i.geometry)?S(a,i.geometry,t):(S(a,i.westHemisphereGeometry,t),S(a,i.eastHemisphereGeometry,t))}}function w(t){var n,i,a=t.instances,u=t.pickIds,s=t.projection,c=t.elementIndexUintSupported,l=t.scene3DOnly,f=t.allowPicking,m=t.vertexCacheOptimize,d=t.compressVertices,p=t.modelMatrix,y=a.length;if(a[0].geometry.primitiveType,v(a,p,l),!l)for(n=0;y>n;++n)h.splitLongitude(a[n]);f&&g(a,u);var S=E(a);if(C(a,S),m)for(n=0;y>n;++n){var w=a[n];o(w.geometry)?(h.reorderForPostVertexCache(w.geometry),h.reorderForPreVertexCache(w.geometry)):(h.reorderForPostVertexCache(w.westHemisphereGeometry),h.reorderForPreVertexCache(w.westHemisphereGeometry),h.reorderForPostVertexCache(w.eastHemisphereGeometry),h.reorderForPreVertexCache(w.eastHemisphereGeometry))}var b=h.combineInstances(a);for(y=b.length,n=0;y>n;++n){i=b[n];var x,A=i.attributes;if(l)for(x in A)A.hasOwnProperty(x)&&A[x].componentDatatype===r.DOUBLE&&h.encodeAttribute(i,x,x+"3DHigh",x+"3DLow");else for(x in A)if(A.hasOwnProperty(x)&&A[x].componentDatatype===r.DOUBLE){var T=x+"3D",M=x+"2D";h.projectTo2D(i,x,T,M,s),o(i.boundingSphere)&&"position"===x&&(i.boundingSphereCV=e.fromVertices(i.attributes.position2D.values)),h.encodeAttribute(i,T,T+"High",T+"Low"),h.encodeAttribute(i,M,M+"High",M+"Low")}d&&h.compressVertices(i)}if(!c){var I=[];for(y=b.length,n=0;y>n;++n)i=b[n],I=I.concat(h.fitToUnsignedShortIndices(i));b=I}return b}function b(e,t,n){for(var o=[],i=e.attributes,a=n.length,u=0;a>u;++u){var s=n[u],c=i[s],l=c.componentDatatype;l===r.DOUBLE&&(l=r.FLOAT);var f=r.createTypedArray(l,c.values);o.push({index:t[s],componentDatatype:l,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize,values:f}),delete i[s]}return o}function x(e,t,r,i,a,u,s,l,f){var h=c.computeNumberOfVertices(t);o(s[e])||(s[e]={boundingSphere:t.boundingSphere,boundingSphereCV:t.boundingSphereCV});for(var m=i.length,d=0;m>d;++d)for(var p=i[d],v=a[p],y=h;y>0;){for(var g,E=n(f[p],0),S=u[E],C=S.length,w=0;C>w&&(g=S[w],g.index!==v);++w);o(s[e][p])||(s[e][p]={dirty:!1,valid:!0,value:r[p].value,indices:[]});var b,x=g.values.length/g.componentsPerAttribute,A=n(l[p],0);x>A+y?(b=y,s[e][p].indices.push({attribute:g,offset:A,count:b}),l[p]=A+y):(b=x-A,s[e][p].indices.push({attribute:g,offset:A,count:b}),l[p]=0,f[p]=E+1),y-=b}}function A(e,t,r,n,i){var a,u,s,c=[],l=e.length,f={},h={};for(a=0;l>a;++a)u=e[a],s=u.attributes,o(u.geometry)&&x(a,u.geometry,s,i,n,r,c,f,h);for(a=0;l>a;++a)u=e[a],s=u.attributes,o(u.westHemisphereGeometry)&&x(a,u.westHemisphereGeometry,s,i,n,r,c,f,h);for(a=0;l>a;++a)u=e[a],s=u.attributes,o(u.eastHemisphereGeometry)&&x(a,u.eastHemisphereGeometry,s,i,n,r,c,f,h);for(l=t.length,a=0;l>a;++a){u=t[a],s=u.attributes;var m={};c.push(m);for(var d=i.length,p=0;d>p;++p){var v=i[p];m[v]={dirty:!1,valid:!1,value:s[v].value,indices:[]}}}return c}function T(e,t){var r=e.attributes;for(var n in r)if(r.hasOwnProperty(n)){var i=r[n];o(i)&&o(i.values)&&t.push(i.values.buffer)}o(e.indices)&&t.push(e.indices.buffer)}function M(e,t){for(var r=e.length,n=0;r>n;++n)T(e[n],t)}function I(e,t){for(var r=e.length,n=0;r>n;++n)for(var o=e[n],i=o.length,a=0;i>a;++a)t.push(o[a].values.buffer)}function O(t){for(var r=1,n=t.length,i=0;n>i;i++){var a=t[i];if(++r,o(a)){var u=a.attributes;r+=6+2*e.packedLength+(o(a.indices)?a.indices.length:0);for(var s in u)if(u.hasOwnProperty(s)&&o(u[s])){var c=u[s];r+=5+c.values.length}}}return r}function R(e,t){for(var r=e.length,n=new Uint32Array(e.length),o=0;r>o;++o)n[o]=e[o].toRgba();return t.push(n.buffer),n}function N(e){for(var r=e.length,n=new Array(r),o=0;r>o;o++)n[o]=t.fromRgba(e[o]);return n}function L(e){for(var t=e.length,r=1+17*t,n=0;t>n;n++){var i=e[n].attributes;for(var a in i)if(i.hasOwnProperty(a)&&o(i[a])){var u=i[a];r+=5+u.value.length}}return r}function P(e,t){var r=new Float64Array(L(e)),n={},i=[],a=e.length,u=0;r[u++]=a;for(var s=0;a>s;s++){var c=e[s];d.pack(c.modelMatrix,r,u),u+=d.packedLength;var l=c.attributes,f=[];for(var h in l)l.hasOwnProperty(h)&&o(l[h])&&(f.push(h),o(n[h])||(n[h]=i.length,i.push(h)));r[u++]=f.length;for(var m=0;m<f.length;m++){var p=f[m],v=l[p];r[u++]=n[p],r[u++]=v.componentDatatype,r[u++]=v.componentsPerAttribute,r[u++]=v.normalize,r[u++]=v.value.length,r.set(v.value,u),u+=v.value.length}}return t.push(r.buffer),{stringTable:i,packedData:r}}function z(e){for(var t=e.packedData,n=e.stringTable,o=new Array(t[0]),i=0,a=1;a<t.length;){var u=d.unpack(t,a);a+=d.packedLength;for(var s={},c=t[a++],l=0;c>l;l++){for(var f=n[t[a++]],h=t[a++],m=t[a++],p=0!==t[a++],v=t[a++],y=r.createTypedArray(h,v),g=0;v>g;g++)y[g]=t[a++];s[f]={componentDatatype:h,componentsPerAttribute:m,normalize:p,value:y}}o[i++]={attributes:s,modelMatrix:u}}return o}function D(t){for(var r=t.length,n=1+r,i=0;r>i;i++){var a=t[i];n+=2,n+=o(a.boundingSphere)?e.packedLength:0,n+=o(a.boundingSphereCV)?e.packedLength:0;for(var u in a)if(a.hasOwnProperty(u)&&o(a[u])&&"boundingSphere"!==u&&"boundingSphereCV"!==u){var s=a[u];n+=4+3*s.indices.length+s.value.length}}return n}function F(t,r){var n=new Float64Array(D(t)),i=[],a=[],u={},s=t.length,c=0;n[c++]=s;for(var l=0;s>l;l++){var f=t[l],h=f.boundingSphere,m=o(h);n[c++]=m?1:0,m&&(e.pack(h,n,c),c+=e.packedLength),h=f.boundingSphereCV,m=o(h),n[c++]=m?1:0,m&&(e.pack(h,n,c),c+=e.packedLength);var d=[];for(var p in f)f.hasOwnProperty(p)&&o(f[p])&&"boundingSphere"!==p&&"boundingSphereCV"!==p&&(d.push(p),o(u[p])||(u[p]=i.length,i.push(p)));n[c++]=d.length;for(var v=0;v<d.length;v++){var y=d[v],g=f[y];n[c++]=u[y],n[c++]=g.valid?1:0;var E=g.indices,S=E.length;n[c++]=S;for(var C=0;S>C;C++){var w=E[C];n[c++]=w.count,n[c++]=w.offset;var b=a.indexOf(w.attribute);-1===b&&(b=a.length,a.push(w.attribute)),n[c++]=b}n[c++]=g.value.length,n.set(g.value,c),c+=g.value.length}}return r.push(n.buffer),{stringTable:i,packedData:n,attributeTable:a}}function _(t){for(var n=t.stringTable,o=t.attributeTable,i=t.packedData,a=new Array(i[0]),u=0,s=1,c=i.length;c>s;){var l={},f=1===i[s++];f&&(l.boundingSphere=e.unpack(i,s),s+=e.packedLength),f=1===i[s++],f&&(l.boundingSphereCV=e.unpack(i,s),s+=e.packedLength);for(var h=i[s++],m=0;h>m;m++){for(var d=n[i[s++]],p=1===i[s++],v=i[s++],y=v>0?new Array(v):void 0,g=0;v>g;g++){var E={};E.count=i[s++],E.offset=i[s++],E.attribute=o[i[s++]],y[g]=E}for(var S=i[s++],C=p?r.createTypedArray(y[0].attribute.componentDatatype,S):new Array(S),w=0;S>w;w++)C[w]=i[s++];l[d]={dirty:!1,valid:p,indices:y,value:C}}a[u++]=l}return a}if(!u.supportsTypedArrays())return{};var B={};return B.combineGeometry=function(e){var t,r,n,i,a,u=e.instances,s=e.invalidInstances;if(u.length>0){t=w(e),r=h.createAttributeLocations(t[0]),i=E(u),n=[],a=t.length;for(var c=0;a>c;++c){var l=t[c];n.push(b(l,r,i))}}i=o(i)?i:E(s);var f=A(u,s,n,r,i);return{geometries:t,modelMatrix:e.modelMatrix,attributeLocations:r,vaAttributes:n,vaAttributeLocations:f,validInstancesIndices:e.validInstancesIndices,invalidInstancesIndices:e.invalidInstancesIndices}},B.packCreateGeometryResults=function(t,r){var n=new Float64Array(O(t)),i=[],a={},u=t.length,s=0;n[s++]=u;for(var c=0;u>c;c++){var l=t[c],f=o(l);if(n[s++]=f?1:0,f){n[s++]=l.primitiveType,n[s++]=l.geometryType;var h=o(l.boundingSphere)?1:0;n[s++]=h,h&&e.pack(l.boundingSphere,n,s),s+=e.packedLength;var m=o(l.boundingSphereCV)?1:0;n[s++]=m,m&&e.pack(l.boundingSphereCV,n,s),s+=e.packedLength;var d=l.attributes,p=[];for(var v in d)d.hasOwnProperty(v)&&o(d[v])&&(p.push(v),o(a[v])||(a[v]=i.length,i.push(v)));n[s++]=p.length;for(var y=0;y<p.length;y++){var g=p[y],E=d[g];n[s++]=a[g],n[s++]=E.componentDatatype,n[s++]=E.componentsPerAttribute,n[s++]=E.normalize?1:0,n[s++]=E.values.length,n.set(E.values,s),s+=E.values.length}var S=o(l.indices)?l.indices.length:0;n[s++]=S,S>0&&(n.set(l.indices,s),s+=S)}}return r.push(n.buffer),{stringTable:i,packedData:n}},B.unpackCreateGeometryResults=function(t){for(var n,o=t.stringTable,i=t.packedData,a=new Array(i[0]),u=0,s=1;s<i.length;){var h=1===i[s++];if(h){var d,p,v=i[s++],y=i[s++],g=1===i[s++];g&&(d=e.unpack(i,s)),s+=e.packedLength;var E=1===i[s++];E&&(p=e.unpack(i,s)),s+=e.packedLength;var S,C,w,b=new f,x=i[s++];for(n=0;x>n;n++){var A=o[i[s++]],T=i[s++];w=i[s++];var M=0!==i[s++];S=i[s++],C=r.createTypedArray(T,S);for(var I=0;S>I;I++)C[I]=i[s++];b[A]=new l({componentDatatype:T,componentsPerAttribute:w,normalize:M,values:C})}var O;if(S=i[s++],S>0){var R=C.length/w;for(O=m.createTypedArray(R,S),n=0;S>n;n++)O[n]=i[s++]}a[u++]=new c({primitiveType:v,geometryType:y,boundingSphere:d,indices:O,attributes:b})}else a[u++]=void 0}return a},B.packCombineGeometryParameters=function(e,t){for(var r=e.createGeometryResults,n=r.length,o=0;n>o;o++)t.push(r[o].packedData.buffer);var i;return e.allowPicking&&(i=R(e.pickIds,t)),{createGeometryResults:e.createGeometryResults,packedInstances:P(e.instances,t),packedPickIds:i,ellipsoid:e.ellipsoid,isGeographic:e.projection instanceof s,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,allowPicking:e.allowPicking,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix}},B.unpackCombineGeometryParameters=function(e){for(var t=z(e.packedInstances),r=e.allowPicking,n=r?N(e.packedPickIds):void 0,i=e.createGeometryResults,u=i.length,c=0,l=[],f=[],h=[],m=[],v=[],y=0;u>y;y++)for(var g=B.unpackCreateGeometryResults(i[y]),E=g.length,S=0;E>S;S++){var C=g[S],w=t[c];o(C)?(w.geometry=C,l.push(w),h.push(c),r&&v.push(n[c])):(f.push(w),m.push(c)),++c}var b=a.clone(e.ellipsoid),x=e.isGeographic?new s(b):new p(b);return{instances:l,invalidInstances:f,validInstancesIndices:h,invalidInstancesIndices:m,pickIds:v,ellipsoid:b,projection:x,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,allowPicking:e.allowPicking,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:d.clone(e.modelMatrix)}},B.packCombineGeometryResults=function(e,t){return o(e.geometries)&&(M(e.geometries,t),I(e.vaAttributes,t)),{geometries:e.geometries,attributeLocations:e.attributeLocations,vaAttributes:e.vaAttributes,packedVaAttributeLocations:F(e.vaAttributeLocations,t),modelMatrix:e.modelMatrix,validInstancesIndices:e.validInstancesIndices,invalidInstancesIndices:e.invalidInstancesIndices}},B.unpackCombineGeometryResults=function(e){return{geometries:e.geometries,attributeLocations:e.attributeLocations,vaAttributes:e.vaAttributes,perInstanceAttributeLocations:_(e.packedVaAttributeLocations,e.vaAttributes),modelMatrix:e.modelMatrix}},B}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,r,n,o){return t(e).then(r,n,o)}function t(e){var t,r;return e instanceof n?t=e:u(e)?(r=a(),e.then(function(e){r.resolve(e)},function(e){r.reject(e)},function(e){r.progress(e)}),t=r.promise):t=o(e),t}function r(t){return e(t,i)}function n(e){this.then=e}function o(e){var r=new n(function(r){try{return t(r?r(e):e)}catch(n){return i(n)}});return r}function i(e){var r=new n(function(r,n){try{return n?t(n(e)):i(e)}catch(o){return i(o)}});return r}function a(){function e(e,t,r){return h(e,t,r)}function r(e){return d(e)}function o(e){return d(i(e))}function u(e){return m(e)}var s,c,l,f,h,m,d;return c=new n(e),s={then:e,resolve:r,reject:o,progress:u,promise:c,resolver:{resolve:r,reject:o,progress:u}},l=[],f=[],h=function(e,t,r){var n,o;return n=a(),o="function"==typeof r?function(e){try{n.progress(r(e))}catch(t){n.progress(t)}}:function(e){n.progress(e)},l.push(function(r){r.then(e,t).then(n.resolve,n.reject,o)}),f.push(o),n.promise},m=function(e){return p(f,e),e},d=function(e){return e=t(e),h=e.then,d=t,m=y,p(l,e),f=l=C,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,r,n,o,i){return v(2,arguments),e(t,function(t){function u(e){p(e)}function s(e){d(e)}var c,l,f,h,m,d,p,v,g,E;if(g=t.length>>>0,c=Math.max(0,Math.min(r,g)),f=[],l=g-c+1,h=[],m=a(),c)for(v=m.progress,p=function(e){h.push(e),--l||(d=p=y,m.reject(h))},d=function(e){f.push(e),--c||(d=p=y,m.resolve(f))},E=0;g>E;++E)E in t&&e(t[E],s,u,v);else m.resolve(f);return m.then(n,o,i)})}function c(e,t,r,n){function o(e){return t?t(e[0]):e[0]}return s(e,1,o,r,n)}function l(e,t,r,n){return v(1,arguments),h(e,g).then(t,r,n)}function f(){return h(arguments,g)}function h(t,r){return e(t,function(t){var n,o,i,u,s,c;if(i=o=t.length>>>0,n=[],c=a(),i)for(u=function(t,o){e(t,r).then(function(e){n[o]=e,--i||c.resolve(n)},c.reject)},s=0;o>s;s++)s in t?u(t[s],s):--i;else c.resolve(n);return c.promise})}function m(t,r){var n=S.call(arguments,1);return e(t,function(t){var o;return o=t.length,n[0]=function(t,n,i){return e(t,function(t){return e(n,function(e){return r(t,e,i,o)})})},E.apply(t,n)})}function d(t,r,n){var o=arguments.length>2;return e(t,function(e){return e=o?n:e,r.resolve(e),e},function(e){return r.reject(e),i(e)},r.progress)}function p(e,t){for(var r,n=0;r=e[n++];)r(t)}function v(e,t){for(var r,n=t.length;n>e;)if(r=t[--n],null!=r&&"function"!=typeof r)throw new Error("arg "+n+" must be a function")}function y(){}function g(e){return e}var E,S,C;return e.defer=a,e.resolve=t,e.reject=r,e.join=f,e.all=l,e.map=h,e.reduce=m,e.any=c,e.some=s,e.chain=d,e.isPromise=u,n.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(C,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(C,t)})})}},S=[].slice,E=[].reduce||function(e){var t,r,n,o,i;if(i=0,t=Object(this),o=t.length>>>0,r=arguments,r.length<=1)for(;;){if(i in t){n=t[i++];break}if(++i>=o)throw new TypeError}else n=r[1];for(;o>i;++i)i in t&&(n=e(n,t[i],i,t));return n},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/formatError",["./defined"],function(e){"use strict";var t=function(t){var r,n=t.name,o=t.message;r=e(n)&&e(o)?n+": "+o:t.toString();var i=t.stack;return e(i)&&(r+="\n"+i),r};return t}),define("Workers/createTaskProcessorWorker",["../Core/defaultValue","../Core/defined","../Core/formatError"],function(e,t,r){"use strict";var n=function(n){var o,i=[],a={id:void 0,result:void 0,error:void 0};return function(u){var s=u.data;i.length=0,a.id=s.id,a.error=void 0,a.result=void 0;try{a.result=n(s.parameters,i)}catch(c){a.error=c instanceof Error?{name:c.name,message:c.message,stack:c.stack}:c}t(o)||(o=e(self.webkitPostMessage,self.postMessage)),s.canTransferArrayBuffer||(i.length=0);try{o(a,i)}catch(c){a.result=void 0,a.error="postMessage failed with error: "+r(c)+"\n with responseMessage: "+JSON.stringify(a),o(a)}}};return n}),define("Workers/createGeometry",["../Core/defined","../Scene/PrimitivePipeline","../ThirdParty/when","./createTaskProcessorWorker","require"],function(e,t,r,n,o){"use strict";function i(t){var r=u[t];return e(r)||("object"==typeof exports?u[r]=r=o("Workers/"+t):o(["./"+t],function(e){r=e,u[r]=e})),r}function a(r,n){for(var o=r.subTasks,a=o.length,u=new Array(a),s=0;a>s;s++){var c=o[s],l=c.geometry,f=c.moduleName;if(e(f)){var h=i(f);u[s]=h(l,c.offset)}else u[s]=l}return t.packCreateGeometryResults(u,n)}var u={};return n(a)})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createPolygonGeometry.js b/libs/Cesium/Workers/createPolygonGeometry.js new file mode 100644 index 0000000000..a0ad5f050e --- /dev/null +++ b/libs/Cesium/Workers/createPolygonGeometry.js @@ -0,0 +1,230 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var r;for(this.mti==this.N+1&&this.init_genrand(5489),r=0;r<this.N-this.M;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+this.M]^e>>>1^t[1&e];for(;r<this.N-1;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};r.EPSILON1=.1,r.EPSILON2=.01,r.EPSILON3=.001,r.EPSILON4=1e-4,r.EPSILON5=1e-5,r.EPSILON6=1e-6,r.EPSILON7=1e-7,r.EPSILON8=1e-8,r.EPSILON9=1e-9,r.EPSILON10=1e-10,r.EPSILON11=1e-11,r.EPSILON12=1e-12,r.EPSILON13=1e-13,r.EPSILON14=1e-14,r.EPSILON15=1e-15,r.EPSILON16=1e-16,r.EPSILON17=1e-17,r.EPSILON18=1e-18,r.EPSILON19=1e-19,r.EPSILON20=1e-20,r.GRAVITATIONALPARAMETER=3986004418e5,r.SOLAR_RADIUS=6955e5,r.LUNAR_RADIUS=1737400,r.SIXTY_FOUR_KILOBYTES=65536,r.sign=function(e){return e>0?1:0>e?-1:0},r.signNotZero=function(e){return 0>e?-1:1},r.toSNorm=function(e){return Math.round(255*(.5*r.clamp(e,-1,1)+.5))},r.fromSNorm=function(e){return 2*(r.clamp(e,0,255)/255)-1},r.sinh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t-r)},r.cosh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t+r)},r.lerp=function(e,t,r){return(1-r)*e+r*t},r.PI=Math.PI,r.ONE_OVER_PI=1/Math.PI,r.PI_OVER_TWO=.5*Math.PI,r.PI_OVER_THREE=Math.PI/3,r.PI_OVER_FOUR=Math.PI/4,r.PI_OVER_SIX=Math.PI/6,r.THREE_PI_OVER_TWO=.5*3*Math.PI,r.TWO_PI=2*Math.PI,r.ONE_OVER_TWO_PI=1/(2*Math.PI),r.RADIANS_PER_DEGREE=Math.PI/180,r.DEGREES_PER_RADIAN=180/Math.PI,r.RADIANS_PER_ARCSECOND=r.RADIANS_PER_DEGREE/3600,r.toRadians=function(e){return e*r.RADIANS_PER_DEGREE},r.toDegrees=function(e){return e*r.DEGREES_PER_RADIAN},r.convertLongitudeRange=function(e){var t=r.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n},r.negativePiToPi=function(e){return r.zeroToTwoPi(e+r.PI)-r.PI},r.zeroToTwoPi=function(e){var t=r.mod(e,r.TWO_PI);return Math.abs(t)<r.EPSILON14&&Math.abs(e)>r.EPSILON14?r.TWO_PI:t},r.mod=function(e,t){return(e%t+t)%t},r.equalsEpsilon=function(e,r,n,i){i=t(i,n);var a=Math.abs(e-r);return i>=a||a<=n*Math.max(Math.abs(e),Math.abs(r))};var n=[1];r.factorial=function(e){var t=n.length;if(e>=t)for(var r=n[t-1],i=t;e>=i;i++)n.push(r*i);return n[e]},r.incrementWrap=function(e,r,n){return n=t(n,0),++e,e>r&&(e=n),e},r.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},r.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},r.clamp=function(e,t,r){return t>e?t:e>r?r:e};var i=new e;return r.setRandomNumberSeed=function(t){i=new e(t)},r.nextRandomNumber=function(){return i.random()},r.acosClamped=function(e){return Math.acos(r.clamp(e,-1,1))},r.asinClamped=function(e){return Math.asin(r.clamp(e,-1,1))},r.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},r}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i){"use strict";var a=function(t,r,n){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0)};a.fromSpherical=function(r,n){t(n)||(n=new a);var i=r.clock,o=r.cone,u=e(r.magnitude,1),s=u*Math.sin(o);return n.x=s*Math.cos(i),n.y=s*Math.sin(i),n.z=u*Math.cos(o),n},a.fromElements=function(e,r,n,i){return t(i)?(i.x=e,i.y=r,i.z=n,i):new a(e,r,n)},a.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r):new a(e.x,e.y,e.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n]=t.z},a.unpack=function(r,n,i){return n=e(n,0),t(i)||(i=new a),i.x=r[n++],i.y=r[n++],i.z=r[n],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},a.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r},a.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var r=a.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},a.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r},a.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r},a.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r},a.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r},a.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new a;a.lerp=function(e,t,r,n){return a.multiplyByScalar(t,r,u),n=a.multiplyByScalar(e,1-r,n),a.add(u,n,n)};var s=new a,c=new a;a.angleBetween=function(e,t){a.normalize(e,s),a.normalize(t,c);var r=a.dot(s,c),n=a.magnitude(a.cross(s,c,s));return Math.atan2(n,r)};var l=new a;a.mostOrthogonalAxis=function(e,t){var r=a.normalize(e,l);return a.abs(r,r),t=r.x<=r.y?r.x<=r.z?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Z,t):r.y<=r.z?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_Z,t)},a.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z},a.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]},a.equalsEpsilon=function(e,r,n,a){return e===r||t(e)&&t(r)&&i.equalsEpsilon(e.x,r.x,n,a)&&i.equalsEpsilon(e.y,r.y,n,a)&&i.equalsEpsilon(e.z,r.z,n,a)},a.cross=function(e,t,r){var n=e.x,i=e.y,a=e.z,o=t.x,u=t.y,s=t.z,c=i*s-a*u,l=a*o-n*s,f=n*u-i*o;return r.x=c,r.y=l,r.z=f,r},a.fromDegrees=function(e,t,r,n,o){var u=i.toRadians(e),s=i.toRadians(t);return a.fromRadians(u,s,r,n,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(r,n,i,o,u){i=e(i,0);var s=t(o)?o.radiiSquared:d,c=Math.cos(n);f.x=c*Math.cos(r),f.y=c*Math.sin(r),f.z=Math.sin(n),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),t(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(e,t,r){for(var n=new Array(e.length),o=0;o<e.length;o++)n[o]=i.toRadians(e[o]);return a.fromRadiansArray(n,t,r)},a.fromRadiansArray=function(e,r,n){var i=e.length;t(n)?n.length=i/2:n=new Array(i/2);for(var o=0;i>o;o+=2){var u=e[o],s=e[o+1];n[o/2]=a.fromRadians(u,s,0,r,n[o/2])}return n},a.fromDegreesArrayHeights=function(e,t,r){for(var n=new Array(e.length),o=0;o<e.length;o+=3)n[o]=i.toRadians(e[o]),n[o+1]=i.toRadians(e[o+1]),n[o+2]=e[o+2];return a.fromRadiansArrayHeights(n,t,r)},a.fromRadiansArrayHeights=function(e,r,n){var i=e.length;t(n)?n.length=i/3:n=new Array(i/3);for(var o=0;i>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];n[o/3]=a.fromRadians(u,s,c,r,n[o/3])}return n},a.ZERO=n(new a(0,0,0)),a.UNIT_X=n(new a(1,0,0)),a.UNIT_Y=n(new a(0,1,0)),a.UNIT_Z=n(new a(0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,r){return a.equalsEpsilon(this,e,t,r)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i){"use strict";var a=function(t,r,n){this.longitude=e(t,0),this.latitude=e(r,0),this.height=e(n,0)};return a.fromRadians=function(r,n,i,o){return i=e(i,0),t(o)?(o.longitude=r,o.latitude=n,o.height=i,o):new a(r,n,i)},a.fromDegrees=function(e,t,r,n){return e=i.toRadians(e),t=i.toRadians(t),a.fromRadians(e,t,r,n)},a.clone=function(e,r){return t(e)?t(r)?(r.longitude=e.longitude,r.latitude=e.latitude,r.height=e.height,r):new a(e.longitude,e.latitude,e.height):void 0},a.equals=function(e,r){return e===r||t(e)&&t(r)&&e.longitude===r.longitude&&e.latitude===r.latitude&&e.height===r.height},a.equalsEpsilon=function(e,r,n){return e===r||t(e)&&t(r)&&Math.abs(e.longitude-r.longitude)<=n&&Math.abs(e.latitude-r.latitude)<=n&&Math.abs(e.height-r.height)<=n},a.ZERO=n(new a(0,0,0)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t){return a.equalsEpsilon(this,e,t)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),r=Object.defineProperties;return t&&e(r)||(r=function(e){return e}),r}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i,a,o,u){"use strict";function s(t,n,i,a){n=r(n,0),i=r(i,0),a=r(a,0),t._radii=new e(n,i,a),t._radiiSquared=new e(n*n,i*i,a*a),t._radiiToTheFourth=new e(n*n*n*n,i*i*i*i,a*a*a*a),t._oneOverRadii=new e(0===n?0:1/n,0===i?0:1/i,0===a?0:1/a),t._oneOverRadiiSquared=new e(0===n?0:1/(n*n),0===i?0:1/(i*i),0===a?0:1/(a*a)),t._minimumRadius=Math.min(n,i,a),t._maximumRadius=Math.max(n,i,a),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,r){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,r)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,r){if(!n(t))return void 0;var i=t._radii;return n(r)?(e.clone(i,r._radii),e.clone(t._radiiSquared,r._radiiSquared),e.clone(t._radiiToTheFourth,r._radiiToTheFourth),e.clone(t._oneOverRadii,r._oneOverRadii),e.clone(t._oneOverRadiiSquared,r._oneOverRadiiSquared),r._minimumRadius=t._minimumRadius,r._maximumRadius=t._maximumRadius,r._centerToleranceSquared=t._centerToleranceSquared,r):new c(i.x,i.y,i.z)},c.fromCartesian3=function(e,t){return n(t)||(t=new c),n(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,n,i){i=r(i,0),e.pack(t._radii,n,i)},c.unpack=function(t,n,i){n=r(n,0);var a=e.unpack(t,n);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,r){var i=t.longitude,a=t.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return n(r)||(r=new e),r.x=u,r.y=s,r.z=c,e.normalize(r,r)},c.prototype.geodeticSurfaceNormal=function(t,r){return n(r)||(r=new e),r=e.multiplyComponents(t,this._oneOverRadiiSquared,r),e.normalize(r,r)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,r){var i=l,a=f;this.geodeticSurfaceNormalCartographic(t,i),e.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(e.dot(i,a));return e.divideByScalar(a,o,a),e.multiplyByScalar(i,t.height,i),n(r)||(r=new e),e.add(a,i,r)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var i=0;r>i;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var h=new e,d=new e,p=new e;c.prototype.cartesianToCartographic=function(r,i){var a=this.scaleToGeodeticSurface(r,d);if(!n(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=e.subtract(r,a,p),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,r))*e.magnitude(s);return n(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var i=0;r>i;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};var m=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,r){var i=t.x,a=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,p=o*o*f*f,v=h+d+p,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,m);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,r):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,O=x.z,T=y;T.x=2*w.x*E,T.y=2*w.y*S,T.z=2*w.z*O;var _,M,P,b,N,A,I,R,z,C,D,L=(1-g)*e.magnitude(t)/(.5*e.magnitude(T)),q=0;do{L-=q,P=1/(1+L*E),b=1/(1+L*S),N=1/(1+L*O),A=P*P,I=b*b,R=N*N,z=A*P,C=I*b,D=R*N,_=h*A+d*I+p*R-1,M=h*z*E+d*C*S+p*D*O;var U=-2*M;q=_/U}while(Math.abs(_)>u.EPSILON12);return n(r)?(r.x=i*P,r.y=a*b,r.z=o*N,r):new e(i*P,a*b,o*N)},c.prototype.scaleToGeocentricSurface=function(t,r){n(r)||(r=new e);var i=t.x,a=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return e.multiplyByScalar(t,s,r)},c.prototype.transformPositionToScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._oneOverRadii,r)},c.prototype.transformPositionFromScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._radii,r)},c.prototype.equals=function(t){return this===t||n(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i){"use strict";var a=function(t,r){this.x=e(t,0),this.y=e(r,0)};a.fromElements=function(e,r,n){return t(n)?(n.x=e,n.y=r,n):new a(e,r)},a.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r):new a(e.x,e.y):void 0},a.fromCartesian3=a.clone,a.fromCartesian4=a.clone,a.packedLength=2,a.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n]=t.y},a.unpack=function(r,n,i){return n=e(n,0),t(i)||(i=new a),i.x=r[n++],i.y=r[n],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y)},a.minimumComponent=function(e){return Math.min(e.x,e.y)},a.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r},a.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var r=a.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y},a.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r},a.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r},a.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r},a.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r},a.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new a;a.lerp=function(e,t,r,n){return a.multiplyByScalar(t,r,u),n=a.multiplyByScalar(e,1-r,n),a.add(u,n,n)};var s=new a,c=new a;a.angleBetween=function(e,t){return a.normalize(e,s),a.normalize(t,c),i.acosClamped(a.dot(s,c))};var l=new a;return a.mostOrthogonalAxis=function(e,t){var r=a.normalize(e,l);return a.abs(r,r),t=r.x<=r.y?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Y,t)},a.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y},a.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]},a.equalsEpsilon=function(e,r,n,a){return e===r||t(e)&&t(r)&&i.equalsEpsilon(e.x,r.x,n,a)&&i.equalsEpsilon(e.y,r.y,n,a)},a.ZERO=n(new a(0,0)),a.UNIT_X=n(new a(1,0)),a.UNIT_Y=n(new a(0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,r){return a.equalsEpsilon(this,e,t,r)},a.prototype.toString=function(){return"("+this.x+", "+this.y+")"},a}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,r,n,i,a,o){"use strict";var u=function(e){this._ellipsoid=r(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,r){var i=this._semimajorAxis,a=t.longitude*i,o=t.latitude*i,u=t.height;return n(r)?(r.x=a,r.y=o,r.z=u,r):new e(a,o,u)},u.prototype.unproject=function(e,r){var i=this._oneOverSemimajorAxis,a=e.x*i,o=e.y*i,u=e.z;return n(r)?(r.longitude=a,r.latitude=o,r.height=u,r):new t(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,r,n,i,a,o,u){"use strict";var s=function(e,r,n,i){this.west=t(e,0),this.south=t(r,0),this.east=t(n,0),this.north=t(i,0)};n(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,r,n){n=t(n,0),r[n++]=e.west,r[n++]=e.south,r[n++]=e.east,r[n]=e.north},s.unpack=function(e,n,i){return n=t(n,0),r(i)||(i=new s),i.west=e[n++],i.south=e[n++],i.east=e[n++],i.north=e[n],i},s.computeWidth=function(e){var t=e.east,r=e.west;return r>t&&(t+=u.TWO_PI),t-r},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,n,i,a,o){return e=u.toRadians(t(e,0)),n=u.toRadians(t(n,0)),i=u.toRadians(t(i,0)),a=u.toRadians(t(a,0)),r(o)?(o.west=e,o.south=n,o.east=i,o.north=a,o):new s(e,n,i,a)},s.fromCartographicArray=function(e,t){for(var n=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];n=Math.min(n,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return r(t)?(t.west=n,t.south=a,t.east=i,t.north=o,t):new s(n,a,i,o)},s.clone=function(e,t){return r(e)?r(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return r(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.south,n.height=0,n):new e(t.west,t.south)},s.northwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.north,n.height=0,n):new e(t.west,t.north)},s.northeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.north,n.height=0,n):new e(t.east,t.north)},s.southeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.south,n.height=0,n):new e(t.east,t.south)},s.center=function(t,n){var i=t.east,a=t.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(t.south+t.north);return r(n)?(n.longitude=o,n.latitude=s,n.height=0,n):new e(o,s)},s.intersection=function(e,t,n){var i=e.east,a=e.west,o=t.east,c=t.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var h=Math.max(e.south,t.south),d=Math.min(e.north,t.north);return h>=d?void 0:r(n)?(n.west=l,n.south=h,n.east=f,n.north=d,n):new s(l,h,f,d)},s.contains=function(e,t){var r=t.longitude,n=t.latitude,i=e.west,a=e.east;return i>a&&(a+=u.TWO_PI,0>r&&(r+=u.TWO_PI)),(r>i||u.equalsEpsilon(r,i,u.EPSILON14))&&(a>r||u.equalsEpsilon(r,a,u.EPSILON14))&&n>=e.south&&n<=e.north};var c=new e;return s.subsample=function(e,n,i,o){n=t(n,a.WGS84),i=t(i,0),r(o)||(o=[]);var l=0,f=e.north,h=e.south,d=e.east,p=e.west,m=c;m.height=i,m.longitude=p,m.latitude=f,o[l]=n.cartographicToCartesian(m,o[l]),l++,m.longitude=d,o[l]=n.cartographicToCartesian(m,o[l]),l++,m.latitude=h,o[l]=n.cartographicToCartesian(m,o[l]),l++,m.longitude=p,o[l]=n.cartographicToCartesian(m,o[l]),l++,m.latitude=0>f?f:h>0?h:0;for(var y=1;8>y;++y)m.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,m)&&(o[l]=n.cartographicToCartesian(m,o[l]),l++);return 0===m.latitude&&(m.longitude=p,o[l]=n.cartographicToCartesian(m,o[l]),l++,m.longitude=d,o[l]=n.cartographicToCartesian(m,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingRectangle",["./Cartesian2","./Cartographic","./defaultValue","./defined","./DeveloperError","./GeographicProjection","./Intersect","./Rectangle"],function(e,t,r,n,i,a,o,u){"use strict";var s=function(e,t,n,i){this.x=r(e,0),this.y=r(t,0),this.width=r(n,0),this.height=r(i,0)};s.fromPoints=function(e,t){if(n(t)||(t=new s),!n(e)||0===e.length)return t.x=0,t.y=0,t.width=0,t.height=0,t;for(var r=e.length,i=e[0].x,a=e[0].y,o=e[0].x,u=e[0].y,c=1;r>c;c++){var l=e[c],f=l.x,h=l.y;i=Math.min(f,i),o=Math.max(f,o),a=Math.min(h,a),u=Math.max(h,u)}return t.x=i,t.y=a,t.width=o-i,t.height=u-a,t};var c=new a,l=new t,f=new t;return s.fromRectangle=function(t,i,a){if(n(a)||(a=new s),!n(t))return a.x=0,a.y=0,a.width=0,a.height=0,a;i=r(i,c);var o=i.project(u.southwest(t,l)),h=i.project(u.northeast(t,f));return e.subtract(h,o,h),a.x=o.x,a.y=o.y,a.width=h.x,a.height=h.y,a},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height,t):new s(e.x,e.y,e.width,e.height):void 0},s.union=function(e,t,r){n(r)||(r=new s);var i=Math.min(e.x,t.x),a=Math.min(e.y,t.y),o=Math.max(e.x+e.width,t.x+t.width),u=Math.max(e.y+e.height,t.y+t.height);return r.x=i,r.y=a,r.width=o-i,r.height=u-a,r},s.expand=function(e,t,r){r=s.clone(e,r);var n=t.x-r.x,i=t.y-r.y;return n>r.width?r.width=n:0>n&&(r.width-=n,r.x=t.x),i>r.height?r.height=i:0>i&&(r.height-=i,r.y=t.y),r},s.intersect=function(e,t){var r=e.x,n=e.y,i=t.x,a=t.y;return r>i+t.width||r+e.width<i||n+e.height<a||n>a+t.height?o.OUTSIDE:o.INTERSECTING},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.intersect=function(e){return s.intersect(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},r=function(r,n){e(t[r])||(t[r]=!0,console.log(n))};return r}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,r){this.start=e(t,0),this.stop=e(r,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i){"use strict";var a=function(t,r,n,i){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0),this.w=e(i,0)};a.fromElements=function(e,r,n,i,o){return t(o)?(o.x=e,o.y=r,o.z=n,o.w=i,o):new a(e,r,n,i)},a.fromColor=function(e,r){return t(r)?(r.x=e.red,r.y=e.green,r.z=e.blue,r.w=e.alpha,r):new a(e.red,e.green,e.blue,e.alpha)},a.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r.w=e.w,r):new a(e.x,e.y,e.z,e.w):void 0},a.packedLength=4,a.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n++]=t.z,r[n]=t.w},a.unpack=function(r,n,i){return n=e(n,0),t(i)||(i=new a),i.x=r[n++],i.y=r[n++],i.z=r[n++],i.w=r[n],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},a.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r.w=Math.min(e.w,t.w),r},a.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r.w=Math.max(e.w,t.w),r},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var r=a.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t.w=e.w/r,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},a.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r.w=e.w*t.w,r},a.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},a.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},a.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},a.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new a;a.lerp=function(e,t,r,n){return a.multiplyByScalar(t,r,u),n=a.multiplyByScalar(e,1-r,n),a.add(u,n,n)};var s=new a;return a.mostOrthogonalAxis=function(e,t){var r=a.normalize(e,s);return a.abs(r,r),t=r.x<=r.y?r.x<=r.z?r.x<=r.w?a.clone(a.UNIT_X,t):a.clone(a.UNIT_W,t):r.z<=r.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t):r.y<=r.z?r.y<=r.w?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_W,t):r.z<=r.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t)},a.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z&&e.w===r.w},a.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]&&e.w===t[r+3]},a.equalsEpsilon=function(e,r,n,a){return e===r||t(e)&&t(r)&&i.equalsEpsilon(e.x,r.x,n,a)&&i.equalsEpsilon(e.y,r.y,n,a)&&i.equalsEpsilon(e.z,r.z,n,a)&&i.equalsEpsilon(e.w,r.w,n,a)},a.ZERO=n(new a(0,0,0,0)),a.UNIT_X=n(new a(1,0,0,0)),a.UNIT_Y=n(new a(0,1,0,0)),a.UNIT_Z=n(new a(0,0,1,0)),a.UNIT_W=n(new a(0,0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,r){return a.equalsEpsilon(this,e,t,r)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,i,a){"use strict";function o(e){for(var t=0,r=0;9>r;++r){var n=e[r];t+=n*n}return Math.sqrt(t)}function u(e){for(var t=0,r=0;3>r;++r){var n=e[c.getElementIndex(d[r],h[r])];t+=2*n*n}return Math.sqrt(t)}function s(e,t){for(var r=a.EPSILON15,n=0,i=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(d[o],h[o])]);u>n&&(i=o,n=u)}var s=1,l=0,f=h[i],p=d[i];if(Math.abs(e[c.getElementIndex(p,f)])>r){var m,y=e[c.getElementIndex(p,p)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(p,f)],w=(y-v)/2/g;m=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+m*m),l=m*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(p,p)]=s,t[c.getElementIndex(p,f)]=l,t[c.getElementIndex(f,p)]=-l,t}var c=function(e,r,n,i,a,o,u,s,c){this[0]=t(e,0),this[1]=t(i,0),this[2]=t(u,0),this[3]=t(r,0),this[4]=t(a,0),this[5]=t(s,0),this[6]=t(n,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,r,n){n=t(n,0),r[n++]=e[0],r[n++]=e[1],r[n++]=e[2],r[n++]=e[3],r[n++]=e[4],r[n++]=e[5],r[n++]=e[6],r[n++]=e[7],r[n++]=e[8]},c.unpack=function(e,n,i){return n=t(n,0),r(i)||(i=new c),i[0]=e[n++],i[1]=e[n++],i[2]=e[n++],i[3]=e[n++],i[4]=e[n++],i[5]=e[n++],i[6]=e[n++],i[7]=e[n++],i[8]=e[n++],i},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,n,i){return n=t(n,0),r(i)||(i=new c),i[0]=e[n],i[1]=e[n+1],i[2]=e[n+2],i[3]=e[n+3],i[4]=e[n+4],i[5]=e[n+5],i[6]=e[n+6],i[7]=e[n+7],i[8]=e[n+8],i},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var n=e.x*e.x,i=e.x*e.y,a=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,h=e.z*e.w,d=e.w*e.w,p=n-u-f+d,m=2*(i-h),y=2*(a+l),v=2*(i+h),g=-n+u-f+d,w=2*(s-o),x=2*(a-l),E=2*(s+o),S=-n-u+f+d;return r(t)?(t[0]=p,t[1]=v,t[2]=x,t[3]=m,t[4]=g,t[5]=E,t[6]=y,t[7]=w,t[8]=S,t):new c(p,m,y,v,g,w,x,E,S)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return r(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var n=Math.cos(e),i=Math.sin(e);return r(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=i,t[6]=0,t[7]=-i,t[8]=n,t):new c(1,0,0,0,n,-i,0,i,n)},c.fromRotationY=function(e,t){var n=Math.cos(e),i=Math.sin(e);return r(t)?(t[0]=n,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=n,t):new c(n,0,i,0,1,0,-i,0,n)},c.fromRotationZ=function(e,t){var n=Math.cos(e),i=Math.sin(e);return r(t)?(t[0]=n,t[1]=i,t[2]=0,t[3]=-i,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(n,-i,0,i,n,0,0,0,1)},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,r){var n=3*t,i=e[n],a=e[n+1],o=e[n+2];return r.x=i,r.y=a,r.z=o,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var i=3*t;return n[i]=r.x,n[i+1]=r.y,n[i+2]=r.z,n},c.getRow=function(e,t,r){var n=e[t],i=e[t+3],a=e[t+6]; +return r.x=n,r.y=i,r.z=a,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+3]=r.y,n[t+6]=r.z,n};var l=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),r.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),r.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),r};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,r){var n=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],i=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],a=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return r[0]=n,r[1]=i,r[2]=a,r[3]=o,r[4]=u,r[5]=s,r[6]=c,r[7]=l,r[8]=f,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r},c.multiplyByVector=function(e,t,r){var n=t.x,i=t.y,a=t.z,o=e[0]*n+e[3]*i+e[6]*a,u=e[1]*n+e[4]*i+e[7]*a,s=e[2]*n+e[5]*i+e[8]*a;return r.x=o,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r},c.multiplyByScale=function(e,t,r){return r[0]=e[0]*t.x,r[1]=e[1]*t.x,r[2]=e[2]*t.x,r[3]=e[3]*t.y,r[4]=e[4]*t.y,r[5]=e[5]*t.y,r[6]=e[6]*t.z,r[7]=e[7]*t.z,r[8]=e[8]*t.z,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var r=e[0],n=e[3],i=e[6],a=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=r,t[1]=n,t[2]=i,t[3]=a,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var h=[1,0,0],d=[2,2,1],p=new c,m=new c;return c.computeEigenDecomposition=function(e,t){var n=a.EPSILON20,i=10,l=0,f=0;r(t)||(t={});for(var h=t.unitary=c.clone(c.IDENTITY,t.unitary),d=t.diagonal=c.clone(e,t.diagonal),y=n*o(d);i>f&&u(d)>y;)s(d,p),c.transpose(p,m),c.multiply(d,p,d),c.multiply(m,d,d),c.multiply(h,p,h),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],r=e[3],n=e[6],i=e[1],a=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(a*c-s*o)+i*(s*n-r*c)+u*(r*o-a*n)},c.inverse=function(e,t){var r=e[0],i=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],h=e[7],d=e[8],p=c.determinant(e);if(Math.abs(p)<=a.EPSILON15)throw new n("matrix is not invertible");t[0]=s*d-h*l,t[1]=h*o-i*d,t[2]=i*l-s*o,t[3]=f*l-u*d,t[4]=r*d-f*o,t[5]=u*o-r*l,t[6]=u*h-f*s,t[7]=f*i-r*h,t[8]=r*s-u*i;var m=1/p;return c.multiplyByScalar(t,m,t)},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,r,n,i,a,o,u,s){"use strict";var c=function(e,t,n,i,a,o,u,s,c,l,f,h,d,p,m,y){this[0]=r(e,0),this[1]=r(a,0),this[2]=r(c,0),this[3]=r(d,0),this[4]=r(t,0),this[5]=r(o,0),this[6]=r(l,0),this[7]=r(p,0),this[8]=r(n,0),this[9]=r(u,0),this[10]=r(f,0),this[11]=r(m,0),this[12]=r(i,0),this[13]=r(s,0),this[14]=r(h,0),this[15]=r(y,0)};c.packedLength=16,c.pack=function(e,t,n){n=r(n,0),t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15]},c.unpack=function(e,t,i){return t=r(t,0),n(i)||(i=new c),i[0]=e[t++],i[1]=e[t++],i[2]=e[t++],i[3]=e[t++],i[4]=e[t++],i[5]=e[t++],i[6]=e[t++],i[7]=e[t++],i[8]=e[t++],i[9]=e[t++],i[10]=e[t++],i[11]=e[t++],i[12]=e[t++],i[13]=e[t++],i[14]=e[t++],i[15]=e[t],i},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,i,a){return i=r(i,e.ZERO),n(a)?(a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=0,a[4]=t[3],a[5]=t[4],a[6]=t[5],a[7]=0,a[8]=t[6],a[9]=t[7],a[10]=t[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(t[0],t[3],t[6],i.x,t[1],t[4],t[7],i.y,t[2],t[5],t[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,r,i){n(i)||(i=new c);var a=r.x,o=r.y,u=r.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,h=t.x*t.w,d=t.y*t.y,p=t.y*t.z,m=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-d-y+g,x=2*(l-v),E=2*(f+m),S=2*(l+v),O=-s+d-y+g,T=2*(p-h),_=2*(f-m),M=2*(p+h),P=-s-d+y+g;return i[0]=w*a,i[1]=S*a,i[2]=_*a,i[3]=0,i[4]=x*o,i[5]=O*o,i[6]=M*o,i[7]=0,i[8]=E*u,i[9]=T*u,i[10]=P*u,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,h=new e;c.fromCamera=function(t,r){var i=t.eye,a=t.target,o=t.up;e.normalize(e.subtract(a,i,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,p=l.x,m=l.y,y=l.z,v=h.x,g=h.y,w=h.z,x=i.x,E=i.y,S=i.z,O=u*-x+s*-E+d*-S,T=v*-x+g*-E+w*-S,_=p*x+m*E+y*S;return n(r)?(r[0]=u,r[1]=v,r[2]=-p,r[3]=0,r[4]=s,r[5]=g,r[6]=-m,r[7]=0,r[8]=d,r[9]=w,r[10]=-y,r[11]=0,r[12]=O,r[13]=T,r[14]=_,r[15]=1,r):new c(u,s,d,O,v,g,w,T,-p,-m,-y,_,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,r,n,i){var a=Math.tan(.5*e),o=1/a,u=o/t,s=(n+r)/(r-n),c=2*n*r/(r-n);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(e,t,r,n,i,a,o){var u=1/(t-e),s=1/(n-r),c=1/(a-i),l=-(t+e)*u,f=-(n+r)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o},c.computePerspectiveOffCenter=function(e,t,r,n,i,a,o){var u=2*i/(t-e),s=2*i/(n-r),c=(t+e)/(t-e),l=(n+r)/(n-r),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,r,n,i,a){var o=2*i/(t-e),u=2*i/(n-r),s=(t+e)/(t-e),c=(n+r)/(n-r),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(e,t,n,i){e=r(e,r.EMPTY_OBJECT);var a=r(e.x,0),o=r(e.y,0),u=r(e.width,0),s=r(e.height,0);t=r(t,0),n=r(n,1);var c=.5*u,l=.5*s,f=.5*(n-t),h=c,d=l,p=f,m=a+c,y=o+l,v=t+f,g=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=p,i[11]=0,i[12]=m,i[13]=y,i[14]=v,i[15]=g,i},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,r){var n=4*t,i=e[n],a=e[n+1],o=e[n+2],u=e[n+3];return r.x=i,r.y=a,r.z=o,r.w=u,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var i=4*t;return n[i]=r.x,n[i+1]=r.y,n[i+2]=r.z,n[i+3]=r.w,n},c.setTranslation=function(e,t,r){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=t.x,r[13]=t.y,r[14]=t.z,r[15]=e[15],r},c.getRow=function(e,t,r){var n=e[t],i=e[t+4],a=e[t+8],o=e[t+12];return r.x=n,r.y=i,r.z=a,r.w=o,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+4]=r.y,n[t+8]=r.z,n[t+12]=r.w,n};var d=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],d)),r.y=e.magnitude(e.fromElements(t[4],t[5],t[6],d)),r.z=e.magnitude(e.fromElements(t[8],t[9],t[10],d)),r};var p=new e;c.getMaximumScale=function(t){return c.getScale(t,p),e.maximumComponent(p)},c.multiply=function(e,t,r){var n=e[0],i=e[1],a=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],h=e[9],d=e[10],p=e[11],m=e[12],y=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],O=t[4],T=t[5],_=t[6],M=t[7],P=t[8],b=t[9],N=t[10],A=t[11],I=t[12],R=t[13],z=t[14],C=t[15],D=n*w+u*x+f*E+m*S,L=i*w+s*x+h*E+y*S,q=a*w+c*x+d*E+v*S,U=o*w+l*x+p*E+g*S,B=n*O+u*T+f*_+m*M,F=i*O+s*T+h*_+y*M,W=a*O+c*T+d*_+v*M,G=o*O+l*T+p*_+g*M,k=n*P+u*b+f*N+m*A,V=i*P+s*b+h*N+y*A,H=a*P+c*b+d*N+v*A,Y=o*P+l*b+p*N+g*A,j=n*I+u*R+f*z+m*C,Z=i*I+s*R+h*z+y*C,X=a*I+c*R+d*z+v*C,J=o*I+l*R+p*z+g*C;return r[0]=D,r[1]=L,r[2]=q,r[3]=U,r[4]=B,r[5]=F,r[6]=W,r[7]=G,r[8]=k,r[9]=V,r[10]=H,r[11]=Y,r[12]=j,r[13]=Z,r[14]=X,r[15]=J,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r[9]=e[9]+t[9],r[10]=e[10]+t[10],r[11]=e[11]+t[11],r[12]=e[12]+t[12],r[13]=e[13]+t[13],r[14]=e[14]+t[14],r[15]=e[15]+t[15],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r[9]=e[9]-t[9],r[10]=e[10]-t[10],r[11]=e[11]-t[11],r[12]=e[12]-t[12],r[13]=e[13]-t[13],r[14]=e[14]-t[14],r[15]=e[15]-t[15],r},c.multiplyTransformation=function(e,t,r){var n=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=e[12],d=e[13],p=e[14],m=t[0],y=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],O=t[10],T=t[12],_=t[13],M=t[14],P=n*m+o*y+c*v,b=i*m+u*y+l*v,N=a*m+s*y+f*v,A=n*g+o*w+c*x,I=i*g+u*w+l*x,R=a*g+s*w+f*x,z=n*E+o*S+c*O,C=i*E+u*S+l*O,D=a*E+s*S+f*O,L=n*T+o*_+c*M+h,q=i*T+u*_+l*M+d,U=a*T+s*_+f*M+p;return r[0]=P,r[1]=b,r[2]=N,r[3]=0,r[4]=A,r[5]=I,r[6]=R,r[7]=0,r[8]=z,r[9]=C,r[10]=D,r[11]=0,r[12]=L,r[13]=q,r[14]=U,r[15]=1,r},c.multiplyByMatrix3=function(e,t,r){var n=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=t[0],d=t[1],p=t[2],m=t[3],y=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=n*h+o*d+c*p,S=i*h+u*d+l*p,O=a*h+s*d+f*p,T=n*m+o*y+c*v,_=i*m+u*y+l*v,M=a*m+s*y+f*v,P=n*g+o*w+c*x,b=i*g+u*w+l*x,N=a*g+s*w+f*x;return r[0]=E,r[1]=S,r[2]=O,r[3]=0,r[4]=T,r[5]=_,r[6]=M,r[7]=0,r[8]=P,r[9]=b,r[10]=N,r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r},c.multiplyByTranslation=function(e,t,r){var n=t.x,i=t.y,a=t.z,o=n*e[0]+i*e[4]+a*e[8]+e[12],u=n*e[1]+i*e[5]+a*e[9]+e[13],s=n*e[2]+i*e[6]+a*e[10]+e[14];return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=o,r[13]=u,r[14]=s,r[15]=e[15],r};var m=new e;c.multiplyByUniformScale=function(e,t,r){return m.x=t,m.y=t,m.z=t,c.multiplyByScale(e,m,r)},c.multiplyByScale=function(e,t,r){var n=t.x,i=t.y,a=t.z;return 1===n&&1===i&&1===a?c.clone(e,r):(r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=0,r[4]=i*e[4],r[5]=i*e[5],r[6]=i*e[6],r[7]=0,r[8]=a*e[8],r[9]=a*e[9],r[10]=a*e[10],r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=1,r)},c.multiplyByVector=function(e,t,r){var n=t.x,i=t.y,a=t.z,o=t.w,u=e[0]*n+e[4]*i+e[8]*a+e[12]*o,s=e[1]*n+e[5]*i+e[9]*a+e[13]*o,c=e[2]*n+e[6]*i+e[10]*a+e[14]*o,l=e[3]*n+e[7]*i+e[11]*a+e[15]*o;return r.x=u,r.y=s,r.z=c,r.w=l,r},c.multiplyByPointAsVector=function(e,t,r){var n=t.x,i=t.y,a=t.z,o=e[0]*n+e[4]*i+e[8]*a,u=e[1]*n+e[5]*i+e[9]*a,s=e[2]*n+e[6]*i+e[10]*a;return r.x=o,r.y=u,r.z=s,r},c.multiplyByPoint=function(e,t,r){var n=t.x,i=t.y,a=t.z,o=e[0]*n+e[4]*i+e[8]*a+e[12],u=e[1]*n+e[5]*i+e[9]*a+e[13],s=e[2]*n+e[6]*i+e[10]*a+e[14];return r.x=o,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r[9]=e[9]*t,r[10]=e[10]*t,r[11]=e[11]*t,r[12]=e[12]*t,r[13]=e[13]*t,r[14]=e[14]*t,r[15]=e[15]*t,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var r=e[1],n=e[2],i=e[3],a=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=a,t[10]=e[10],t[11]=e[14],t[12]=i,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r&&Math.abs(e[9]-t[9])<=r&&Math.abs(e[10]-t[10])<=r&&Math.abs(e[11]-t[11])<=r&&Math.abs(e[12]-t[12])<=r&&Math.abs(e[13]-t[13])<=r&&Math.abs(e[14]-t[14])<=r&&Math.abs(e[15]-t[15])<=r},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,r){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return r[0]=0,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=0,r[11]=0,r[12]=-e[12],r[13]=-e[13],r[14]=-e[14],r[15]=1,r;var n=e[0],i=e[4],a=e[8],l=e[12],f=e[1],h=e[5],d=e[9],p=e[13],m=e[2],x=e[6],E=e[10],S=e[14],O=e[3],T=e[7],_=e[11],M=e[15],P=E*M,b=S*_,N=x*M,A=S*T,I=x*_,R=E*T,z=m*M,C=S*O,D=m*_,L=E*O,q=m*T,U=x*O,B=P*h+A*d+I*p-(b*h+N*d+R*p),F=b*f+z*d+L*p-(P*f+C*d+D*p),W=N*f+C*h+q*p-(A*f+z*h+U*p),G=R*f+D*h+U*d-(I*f+L*h+q*d),k=b*i+N*a+R*l-(P*i+A*a+I*l),V=P*n+C*a+D*l-(b*n+z*a+L*l),H=A*n+z*i+U*l-(N*n+C*i+q*l),Y=I*n+L*i+q*a-(R*n+D*i+U*a);P=a*p,b=l*d,N=i*p,A=l*h,I=i*d,R=a*h,z=n*p,C=l*f,D=n*d,L=a*f,q=n*h,U=i*f;var j=P*T+A*_+I*M-(b*T+N*_+R*M),Z=b*O+z*_+L*M-(P*O+C*_+D*M),X=N*O+C*T+q*M-(A*O+z*T+U*M),J=R*O+D*T+U*_-(I*O+L*T+q*_),K=N*E+R*S+b*x-(I*S+P*x+A*E),Q=D*S+P*m+C*E-(z*E+L*S+b*m),$=z*x+U*S+A*m-(q*S+N*m+C*x),et=q*E+I*m+L*x-(D*x+U*E+R*m),tt=n*B+i*F+a*W+l*G;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,r[0]=B*tt,r[1]=F*tt,r[2]=W*tt,r[3]=G*tt,r[4]=k*tt,r[5]=V*tt,r[6]=H*tt,r[7]=Y*tt,r[8]=j*tt,r[9]=Z*tt,r[10]=X*tt,r[11]=J*tt,r[12]=K*tt,r[13]=Q*tt,r[14]=$*tt,r[15]=et*tt,r},c.inverseTransformation=function(e,t){var r=e[0],n=e[1],i=e[2],a=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],h=e[13],d=e[14],p=-r*f-n*h-i*d,m=-a*f-o*h-u*d,y=-s*f-c*h-l*d;return t[0]=r,t[1]=a,t[2]=s,t[3]=0,t[4]=n,t[5]=o,t[6]=c,t[7]=0,t[8]=i,t[9]=u,t[10]=l,t[11]=0,t[12]=p,t[13]=m,t[14]=y,t[15]=1,t},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]&&e[9]===t[r+9]&&e[10]===t[r+10]&&e[11]===t[r+11]&&e[12]===t[r+12]&&e[13]===t[r+13]&&e[14]===t[r+14]&&e[15]===t[r+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n){"use strict";var i=function(t,r){this.normal=e.clone(t),this.distance=r};i.fromPointNormal=function(r,n,a){var o=-e.dot(n,r);return t(a)?(e.clone(n,a.normal),a.distance=o,a):new i(n,o)};var a=new e;return i.fromCartesian4=function(r,n){var o=e.fromCartesian4(r,a),u=r.w;return t(n)?(e.clone(o,n.normal),n.distance=u,n):new i(o,u)},i.getPointDistance=function(t,r){return e.dot(t.normal,r)+t.distance},i.ORIGIN_XY_PLANE=n(new i(e.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=n(new i(e.UNIT_X,0)),i.ORIGIN_ZX_PLANE=n(new i(e.UNIT_Y,0)),i}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,r,n,i,a,o,u,s,c,l,f,h){"use strict";var d=function(t,n){this.center=e.clone(r(t,e.ZERO)),this.radius=r(n,0)},p=new e,m=new e,y=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,O=new e,T=new e,_=new e;d.fromPoints=function(t,r){if(n(r)||(r=new d),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;for(var i=e.clone(t[0],x),a=e.clone(i,p),o=e.clone(i,m),u=e.clone(i,y),s=e.clone(i,v),c=e.clone(i,g),l=e.clone(i,w),f=t.length,h=1;f>h;h++){e.clone(t[h],i);var M=i.x,P=i.y,b=i.z;M<a.x&&e.clone(i,a),M>s.x&&e.clone(i,s),P<o.y&&e.clone(i,o),P>c.y&&e.clone(i,c),b<u.z&&e.clone(i,u),b>l.z&&e.clone(i,l)}var N=e.magnitudeSquared(e.subtract(s,a,E)),A=e.magnitudeSquared(e.subtract(c,o,E)),I=e.magnitudeSquared(e.subtract(l,u,E)),R=a,z=s,C=N;A>C&&(C=A,R=o,z=c),I>C&&(C=I,R=u,z=l);var D=S;D.x=.5*(R.x+z.x),D.y=.5*(R.y+z.y),D.z=.5*(R.z+z.z);var L=e.magnitudeSquared(e.subtract(z,D,E)),q=Math.sqrt(L),U=O;U.x=a.x,U.y=o.y,U.z=u.z;var B=T;B.x=s.x,B.y=c.y,B.z=l.z;var F=e.multiplyByScalar(e.add(U,B,E),.5,_),W=0;for(h=0;f>h;h++){e.clone(t[h],i);var G=e.magnitude(e.subtract(i,F,E));G>W&&(W=G);var k=e.magnitudeSquared(e.subtract(i,D,E));if(k>L){var V=Math.sqrt(k);q=.5*(q+V),L=q*q;var H=V-q;D.x=(q*D.x+H*i.x)/V,D.y=(q*D.y+H*i.y)/V,D.z=(q*D.z+H*i.z)/V}}return W>q?(e.clone(D,r.center),r.radius=q):(e.clone(F,r.center),r.radius=W),r};var M=new u,P=new e,b=new e,N=new t,A=new t;d.fromRectangle2D=function(e,t,r){return d.fromRectangleWithHeights2D(e,t,0,0,r)},d.fromRectangleWithHeights2D=function(t,i,a,o,u){if(n(u)||(u=new d),!n(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;i=r(i,M),h.southwest(t,N),N.height=a,h.northeast(t,A),A.height=o;var s=i.project(N,P),c=i.project(A,b),l=c.x-s.x,f=c.y-s.y,p=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+p*p);var m=u.center;return m.x=s.x+.5*l,m.y=s.y+.5*f,m.z=s.z+.5*p,u};var I=[];d.fromRectangle3D=function(e,t,i,a){t=r(t,o.WGS84),i=r(i,0);var u;return n(e)&&(u=h.subsample(e,t,i,I)),d.fromPoints(u,a)},d.fromVertices=function(t,i,a,o){if(n(o)||(o=new d),!n(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;i=r(i,e.ZERO),a=r(a,3);var u=x;u.x=t[0]+i.x,u.y=t[1]+i.y,u.z=t[2]+i.z;for(var s=e.clone(u,p),c=e.clone(u,m),l=e.clone(u,y),f=e.clone(u,v),h=e.clone(u,g),M=e.clone(u,w),P=t.length,b=0;P>b;b+=a){var N=t[b]+i.x,A=t[b+1]+i.y,I=t[b+2]+i.z;u.x=N,u.y=A,u.z=I,N<s.x&&e.clone(u,s),N>f.x&&e.clone(u,f),A<c.y&&e.clone(u,c),A>h.y&&e.clone(u,h),I<l.z&&e.clone(u,l),I>M.z&&e.clone(u,M)}var R=e.magnitudeSquared(e.subtract(f,s,E)),z=e.magnitudeSquared(e.subtract(h,c,E)),C=e.magnitudeSquared(e.subtract(M,l,E)),D=s,L=f,q=R;z>q&&(q=z,D=c,L=h),C>q&&(q=C,D=l,L=M);var U=S;U.x=.5*(D.x+L.x),U.y=.5*(D.y+L.y),U.z=.5*(D.z+L.z);var B=e.magnitudeSquared(e.subtract(L,U,E)),F=Math.sqrt(B),W=O;W.x=s.x,W.y=c.y,W.z=l.z;var G=T;G.x=f.x,G.y=h.y,G.z=M.z;var k=e.multiplyByScalar(e.add(W,G,E),.5,_),V=0;for(b=0;P>b;b+=a){u.x=t[b]+i.x,u.y=t[b+1]+i.y,u.z=t[b+2]+i.z;var H=e.magnitude(e.subtract(u,k,E));H>V&&(V=H);var Y=e.magnitudeSquared(e.subtract(u,U,E));if(Y>B){var j=Math.sqrt(Y);F=.5*(F+j),B=F*F;var Z=j-F;U.x=(F*U.x+Z*u.x)/j,U.y=(F*U.y+Z*u.y)/j,U.z=(F*U.z+Z*u.z)/j}}return V>F?(e.clone(U,o.center),o.radius=F):(e.clone(k,o.center),o.radius=V),o},d.fromCornerPoints=function(t,r,i){n(i)||(i=new d);var a=i.center;return e.add(t,r,a),e.multiplyByScalar(a,.5,a),i.radius=e.distance(a,r),i},d.fromEllipsoid=function(t,r){return n(r)||(r=new d),e.clone(e.ZERO,r.center),r.radius=t.maximumRadius,r};var R=new e;d.fromBoundingSpheres=function(t,r){if(n(r)||(r=new d),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;var i=t.length;if(1===i)return d.clone(t[0],r);if(2===i)return d.union(t[0],t[1],r);for(var a=[],o=0;i>o;o++)a.push(t[o].center);r=d.fromPoints(a,r);var u=r.center,s=r.radius;for(o=0;i>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,R)+c.radius)}return r.radius=s,r},d.clone=function(t,r){return n(t)?n(r)?(r.center=e.clone(t.center,r.center),r.radius=t.radius,r):new d(t.center,t.radius):void 0},d.packedLength=4,d.pack=function(e,t,n){n=r(n,0);var i=e.center;t[n++]=i.x,t[n++]=i.y,t[n++]=i.z,t[n]=e.radius},d.unpack=function(e,t,i){t=r(t,0),n(i)||(i=new d);var a=i.center;return a.x=e[t++],a.y=e[t++],a.z=e[t++],i.radius=e[t],i};var z=new e,C=new e;d.union=function(t,r,i){n(i)||(i=new d);var a=t.center,o=t.radius,u=r.center,s=r.radius,c=e.subtract(u,a,z),l=e.magnitude(c);if(o>=l+s)return t.clone(i),i;if(s>=l+o)return r.clone(i),i;var f=.5*(o+l+s),h=e.multiplyByScalar(c,(-o+f)/l,C);return e.add(h,a,h),e.clone(h,i.center),i.radius=f,i};var D=new e;d.expand=function(t,r,n){n=d.clone(t,n);var i=e.magnitude(e.subtract(r,n.center,D));return i>n.radius&&(n.radius=i),n},d.intersectPlane=function(t,r){var n=t.center,i=t.radius,a=r.normal,o=e.dot(a,n)+r.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var L=new f(new e,0);d.intersect=function(e,t){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var r=f.fromCartesian4(t,L);return d.intersectPlane(e,r)},d.transform=function(e,t,r){return n(r)||(r=new d),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=l.getMaximumScale(t)*e.radius,r};var q=new e;d.distanceSquaredTo=function(t,r){var n=e.subtract(t.center,r,q);return e.magnitudeSquared(n)-t.radius*t.radius},d.transformWithoutScale=function(e,t,r){return n(r)||(r=new d),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=e.radius,r};var U=new e;d.computePlaneDistances=function(t,r,i,a){n(a)||(a=new c);var o=e.subtract(t.center,r,U),u=e.multiplyByScalar(i,e.dot(i,o),U),s=e.magnitude(u);return a.start=s-t.radius,a.stop=s+t.radius,a};for(var B=new e,F=new e,W=new e,G=new e,k=new e,V=new t,H=new Array(8),Y=0;8>Y;++Y)H[Y]=new e;var j=new u;return d.projectTo2D=function(t,n,i){n=r(n,j);var a=n.ellipsoid,o=t.center,u=t.radius,s=a.geodeticSurfaceNormal(o,B),c=e.cross(e.UNIT_Z,s,F);e.normalize(c,c);var l=e.cross(s,c,W);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,k),h=e.negate(c,G),p=H,m=p[0];e.add(s,l,m),e.add(m,c,m),m=p[1],e.add(s,l,m),e.add(m,h,m),m=p[2],e.add(s,f,m),e.add(m,h,m),m=p[3],e.add(s,f,m),e.add(m,c,m),e.negate(s,s),m=p[4],e.add(s,l,m),e.add(m,c,m),m=p[5],e.add(s,l,m),e.add(m,h,m),m=p[6],e.add(s,f,m),e.add(m,h,m),m=p[7],e.add(s,f,m),e.add(m,c,m);for(var y=p.length,v=0;y>v;++v){var g=p[v];e.add(o,g,g);var w=a.cartesianToCartographic(g,V);n.project(w,g)}i=d.fromPoints(p,i),o=i.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,i},d.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&t.radius===r.radius},d.prototype.intersectPlane=function(e){return d.intersectPlane(this,e)},d.prototype.intersect=function(e){return d.intersect(this,e)},d.prototype.equals=function(e){return d.equals(this,e)},d.prototype.clone=function(e){return d.clone(this,e)},d}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var r,n={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return t(i,{element:{get:function(){return i.supportsFullscreen()?document[n.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?n.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?n.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[n.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(e(r))return r;r=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return n.requestFullscreen="requestFullscreen",n.exitFullscreen="exitFullscreen",n.fullscreenEnabled="fullscreenEnabled",n.fullscreenElement="fullscreenElement",n.fullscreenchange="fullscreenchange",n.fullscreenerror="fullscreenerror",r=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof t[i]?(n.requestFullscreen=i,r=!0):(i=s+"RequestFullScreen","function"==typeof t[i]&&(n.requestFullscreen=i,r=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?n.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(n.exitFullscreen=i)),i=s+"FullscreenEnabled",e(document[i])?n.fullscreenEnabled=i:(i=s+"FullScreenEnabled",e(document[i])&&(n.fullscreenEnabled=i)),i=s+"FullscreenElement",e(document[i])?n.fullscreenElement=i:(i=s+"FullScreenElement",e(document[i])&&(n.fullscreenElement=i)),i=s+"fullscreenchange",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),n.fullscreenchange=i),i=s+"fullscreenerror",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),n.fullscreenerror=i)}return r},i.requestFullscreen=function(e){i.supportsFullscreen()&&e[n.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[n.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,r){"use strict";function n(e){for(var t=e.split("."),r=0,n=t.length;n>r;++r)t[r]=parseInt(t[r],10);return t}function i(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=n(e[1]))}return y}function a(){return i()&&v}function o(){if(!t(g)&&(g=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=n(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=n(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,O=n(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,O=n(e[1])))}return S}function f(){return l()&&O}function h(){if(!t(T)){T=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(T=!0,_=n(e[1]))}return T}function d(){return t(M)||(M=/Windows/i.test(navigator.appVersion)),M}function p(){return h()&&_}function m(){return t(P)||(P=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),P}var y,v,g,w,x,E,S,O,T,_,M,P,b={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:p,isWindows:d,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:m};return b.supportsFullscreen=function(){return r.supportsFullscreen()},b.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},b.supportsWebWorkers=function(){return"undefined"!=typeof Worker},b}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,r,n,i){"use strict";if(!n.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(e){switch(e){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new r("componentDatatype is not a valid value.")}},a.fromTypedArray=function(e){return e instanceof Int8Array?a.BYTE:e instanceof Uint8Array?a.UNSIGNED_BYTE:e instanceof Int16Array?a.SHORT:e instanceof Uint16Array?a.UNSIGNED_SHORT:e instanceof Float32Array?a.FLOAT:e instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(e){return t(e)&&(e===a.BYTE||e===a.UNSIGNED_BYTE||e===a.SHORT||e===a.UNSIGNED_SHORT||e===a.FLOAT||e===a.DOUBLE)},a.createTypedArray=function(e,t){switch(e){case a.BYTE:return new Int8Array(t);case a.UNSIGNED_BYTE:return new Uint8Array(t);case a.SHORT:return new Int16Array(t);case a.UNSIGNED_SHORT:return new Uint16Array(t);case a.FLOAT:return new Float32Array(t);case a.DOUBLE:return new Float64Array(t);default:throw new r("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(t,n,i,o){switch(i=e(i,0),o=e(o,(n.byteLength-i)/a.getSizeInBytes(t)),t){case a.BYTE:return new Int8Array(n,i,o); +case a.UNSIGNED_BYTE:return new Uint8Array(n,i,o);case a.SHORT:return new Int16Array(n,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(n,i,o);case a.FLOAT:return new Float32Array(n,i,o);case a.DOUBLE:return new Float64Array(n,i,o);default:throw new r("componentDatatype is not a valid value.")}},i(a)}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,r,n,i,a,o){"use strict";var u=function(n,i,a){this.minimum=e.clone(t(n,e.ZERO)),this.maximum=e.clone(t(i,e.ZERO)),r(a)?a=e.clone(a):(a=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(a,.5,a)),this.center=a};u.fromPoints=function(t,n){if(r(n)||(n=new u),!r(t)||0===t.length)return n.minimum=e.clone(e.ZERO,n.minimum),n.maximum=e.clone(e.ZERO,n.maximum),n.center=e.clone(e.ZERO,n.center),n;for(var i=t[0].x,a=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,f=t.length,h=1;f>h;h++){var d=t[h],p=d.x,m=d.y,y=d.z;i=Math.min(p,i),s=Math.max(p,s),a=Math.min(m,a),c=Math.max(m,c),o=Math.min(y,o),l=Math.max(y,l)}var v=n.minimum;v.x=i,v.y=a,v.z=o;var g=n.maximum;g.x=s,g.y=c,g.z=l;var w=e.add(v,g,n.center);return e.multiplyByScalar(w,.5,w),n},u.clone=function(t,n){return r(t)?r(n)?(n.minimum=e.clone(t.minimum,n.minimum),n.maximum=e.clone(t.maximum,n.maximum),n.center=e.clone(t.center,n.center),n):new u(t.minimum,t.maximum):void 0},u.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&e.equals(t.minimum,n.minimum)&&e.equals(t.maximum,n.maximum)};var s=new e;u.intersectPlane=function(t,r){s=e.subtract(t.maximum,t.minimum,s);var n=e.multiplyByScalar(s,.5,s),i=r.normal,o=n.x*Math.abs(i.x)+n.y*Math.abs(i.y)+n.z*Math.abs(i.z),u=e.dot(t.center,i)+r.distance;return u-o>0?a.INSIDE:0>u+o?a.OUTSIDE:a.INTERSECTING};var c=new o(new e,0);return u.intersect=function(e,t){n("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var r=o.fromCartesian4(t,c);return u.intersectPlane(e,r)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function r(e,r,n){var i=e+r;return t.sign(e)!==t.sign(r)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(r)))<n?0:i}var n={};return n.computeDiscriminant=function(e,t,r){var n=t*t-4*e*r;return n},n.computeRealRoots=function(e,n,i){var a;if(0===e)return 0===n?[]:[-i/n];if(0===n){if(0===i)return[0,0];var o=Math.abs(i),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(a=-i/e,0>a)return[];var s=Math.sqrt(a);return[-s,s]}if(0===i)return a=-n/e,0>a?[a,0]:[0,a];var c=n*n,l=4*e*i,f=r(c,-l,t.EPSILON14);if(0>f)return[];var h=-.5*r(n,t.sign(n)*Math.sqrt(f),t.EPSILON14);return n>0?[h/e,i/h]:[i/h,h/e]},n}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function r(e,t,r,n){var i,a,o=e,u=t/3,s=r/3,c=n,l=o*s,f=u*c,h=u*u,d=s*s,p=o*s-h,m=o*c-u*s,y=u*c-d,v=4*p*y-m*m;if(0>v){var g,w,x;h*f>=l*d?(g=o,w=p,x=-2*u*p+o*m):(g=c,w=y,x=-c*m+2*s*y);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);a=-x+S;var O=a/2,T=0>O?-Math.pow(-O,1/3):Math.pow(O,1/3),_=a===S?-T:-w/T;return i=0>=w?T+_:-x/(T*T+_*_+w),h*f>=l*d?[(i-u)/o]:[-c/(i+s)]}var M=p,P=-2*u*p+o*m,b=y,N=-c*m+2*s*y,A=Math.sqrt(v),I=Math.sqrt(3)/2,R=Math.abs(Math.atan2(o*A,-P)/3);i=2*Math.sqrt(-M);var z=Math.cos(R);a=i*z;var C=i*(-z/2-I*Math.sin(R)),D=a+C>2*u?a-u:C-u,L=o,q=D/L;R=Math.abs(Math.atan2(c*A,-N)/3),i=2*Math.sqrt(-b),z=Math.cos(R),a=i*z,C=i*(-z/2-I*Math.sin(R));var U=-c,B=2*s>a+C?a+s:C+s,F=U/B,W=L*B,G=-D*B-L*U,k=D*U,V=(s*G-u*k)/(-u*G+s*W);return V>=q?F>=q?F>=V?[q,V,F]:[q,F,V]:[F,q,V]:F>=q?[V,q,F]:F>=V?[V,F,q]:[F,V,q]}var n={};return n.computeDiscriminant=function(e,t,r,n){var i=e*e,a=t*t,o=r*r,u=n*n,s=18*e*t*r*n+a*o-27*i*u-4*(e*o*r+a*t*n);return s},n.computeRealRoots=function(e,n,i,a){var o,u;if(0===e)return t.computeRealRoots(n,i,a);if(0===n){if(0===i){if(0===a)return[0,0,0];u=-a/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===a?(o=t.computeRealRoots(e,0,i),0===o.Length?[0]:[o[0],0,o[1]]):r(e,0,i,a)}return 0===i?0===a?(u=-n/e,0>u?[u,0,0]:[0,0,u]):r(e,n,0,a):0===a?(o=t.computeRealRoots(e,n,i),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):r(e,n,i,a)},n}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,r,n){"use strict";function i(t,i,a,o){var u=t*t,s=i-3*u/8,c=a-i*t/2+u*t/8,l=o-a*t/4+i*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var h=-t/4,d=f[f.length-1];if(Math.abs(d)<r.EPSILON14){var p=n.computeRealRoots(1,s,l);if(2===p.length){var m,y=p[0],v=p[1];if(y>=0&&v>=0){var g=Math.sqrt(y),w=Math.sqrt(v);return[h-w,h-g,h+g,h+w]}if(y>=0&&0>v)return m=Math.sqrt(y),[h-m,h+m];if(0>y&&v>=0)return m=Math.sqrt(v),[h-m,h+m]}return[]}if(d>0){var x=Math.sqrt(d),E=(s+d-c/x)/2,S=(s+d+c/x)/2,O=n.computeRealRoots(1,x,E),T=n.computeRealRoots(1,-x,S);return 0!==O.length?(O[0]+=h,O[1]+=h,0!==T.length?(T[0]+=h,T[1]+=h,O[1]<=T[0]?[O[0],O[1],T[0],T[1]]:T[1]<=O[0]?[T[0],T[1],O[0],O[1]]:O[0]>=T[0]&&O[1]<=T[1]?[T[0],O[0],O[1],T[1]]:T[0]>=O[0]&&T[1]<=O[1]?[O[0],T[0],T[1],O[1]]:O[0]>T[0]&&O[0]<T[1]?[T[0],O[0],T[1],O[1]]:[O[0],T[0],O[1],T[1]]):O):0!==T.length?(T[0]+=h,T[1]+=h,T):[]}}return[]}function a(t,i,a,o){var u=a*a,s=i*i,c=t*t,l=-2*i,f=a*t+s-4*o,h=c*o-a*i*t+u,d=e.computeRealRoots(1,l,f,h);if(d.length>0){var p,m,y=d[0],v=i-y,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),O=c-4*y,T=c+4*Math.abs(y);if(0>y||O*S>E*T){var _=Math.sqrt(O);p=_/2,m=0===_?0:(t*x-a)/_}else{var M=Math.sqrt(E);p=0===M?0:(t*x-a)/M,m=M/2}var P,b;0===w&&0===p?(P=0,b=0):r.sign(w)===r.sign(p)?(P=w+p,b=y/P):(b=w-p,P=y/b);var N,A;0===x&&0===m?(N=0,A=0):r.sign(x)===r.sign(m)?(N=x+m,A=o/N):(A=x-m,N=o/A);var I=n.computeRealRoots(1,P,N),R=n.computeRealRoots(1,b,A);if(0!==I.length)return 0!==R.length?I[1]<=R[0]?[I[0],I[1],R[0],R[1]]:R[1]<=I[0]?[R[0],R[1],I[0],I[1]]:I[0]>=R[0]&&I[1]<=R[1]?[R[0],I[0],I[1],R[1]]:R[0]>=I[0]&&R[1]<=I[1]?[I[0],R[0],R[1],I[1]]:I[0]>R[0]&&I[0]<R[1]?[R[0],I[0],R[1],I[1]]:[I[0],R[0],I[1],R[1]]:I;if(0!==R.length)return R}return[]}var o={};return o.computeDiscriminant=function(e,t,r,n,i){var a=e*e,o=a*e,u=t*t,s=u*t,c=r*r,l=c*r,f=n*n,h=f*n,d=i*i,p=d*i,m=u*c*f-4*s*h-4*e*l*f+18*e*t*r*h-27*a*f*f+256*o*p+i*(18*s*r*n-4*u*l+16*e*c*c-80*e*t*c*n-6*e*u*f+144*a*r*f)+d*(144*e*u*r-27*u*u-128*a*c-192*a*t*n);return m},o.computeRealRoots=function(t,n,o,u,s){if(Math.abs(t)<r.EPSILON15)return e.computeRealRoots(n,o,u,s);var c=n/t,l=o/t,f=u/t,h=s/t,d=0>c?1:0;switch(d+=0>l?d+1:d,d+=0>f?d+1:d,d+=0>h?d+1:d){case 0:return i(c,l,f,h);case 1:return a(c,l,f,h);case 2:return a(c,l,f,h);case 3:return i(c,l,f,h);case 4:return i(c,l,f,h);case 5:return a(c,l,f,h);case 6:return i(c,l,f,h);case 7:return i(c,l,f,h);case 8:return a(c,l,f,h);case 9:return i(c,l,f,h);case 10:return i(c,l,f,h);case 11:return a(c,l,f,h);case 12:return i(c,l,f,h);case 13:return i(c,l,f,h);case 14:return i(c,l,f,h);case 15:return i(c,l,f,h);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=function(r,n){n=e.clone(t(n,e.ZERO)),e.equals(n,e.ZERO)||e.normalize(n,n),this.origin=e.clone(t(r,e.ZERO)),this.direction=n};return n.getPoint=function(t,n,i){return r(i)||(i=new e),i=e.multiplyByScalar(t.direction,n,i),e.add(t.origin,i,i)},n}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,r,n,i,a,o,u,s,c){"use strict";function l(t,n,i,o,u){u=r(u,!1);var s,c,l,f,h,d=t.origin,p=t.direction,m=e.subtract(i,n,y),E=e.subtract(o,n,v),S=e.cross(p,E,g),O=e.dot(m,S);if(u){if(O<a.EPSILON6)return void 0;if(s=e.subtract(d,n,w),l=e.dot(s,S),0>l||l>O)return void 0;if(c=e.cross(s,m,x),f=e.dot(p,c),0>f||l+f>O)return void 0;h=e.dot(E,c)/O}else{if(Math.abs(O)<a.EPSILON6)return void 0;var T=1/O;if(s=e.subtract(d,n,w),l=e.dot(s,S)*T,0>l||l>1)return void 0;if(c=e.cross(s,m,x),f=e.dot(p,c)*T,0>f||l+f>1)return void 0;h=e.dot(E,c)*T}return h}function f(e,t,r,n){var i=t*t-4*e*r;if(0>i)return void 0;if(i>0){var a=1/(2*e),o=Math.sqrt(i),u=(-t+o)*a,s=(-t-o)*a;return s>u?(n.root0=u,n.root1=s):(n.root0=s,n.root1=u),n}var c=-t/(2*e);return 0===c?void 0:(n.root0=n.root1=c,n)}function h(t,r,i){n(i)||(i={});var a=t.origin,o=t.direction,u=r.center,s=r.radius*r.radius,c=e.subtract(a,u,g),l=e.dot(o,o),h=2*e.dot(o,c),d=e.magnitudeSquared(c)-s,p=f(l,h,d,S);return n(p)?(i.start=p.root0,i.stop=p.root1,i):void 0}function d(e,t,r){var n=e+t;return a.sign(e)!==a.sign(t)&&Math.abs(n/Math.max(Math.abs(e),Math.abs(t)))<r?0:n}function p(t,r,n,i,c){var l,f=i*i,h=c*c,p=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*h,m=c*(i*d(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],a.EPSILON15)+r.y),y=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*h+i*r.x+n,v=h*d(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],a.EPSILON15),g=c*(i*d(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+r.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(p,m,y),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(i,c*x,c*-E)),w.push(new e(i,c*x,c*E)),2===l.length){var S=l[1],O=Math.sqrt(Math.max(1-S*S,0));w.push(new e(i,c*S,c*-O)),w.push(new e(i,c*S,c*O))}return w}var T=g*g,_=v*v,M=p*p,P=g*v,b=M+_,N=2*(m*p+P),A=2*y*p+m*m-_+T,I=2*(y*m-P),R=y*y-T;if(0===b&&0===N&&0===A&&0===I)return w;l=s.computeRealRoots(b,N,A,I,R);var z=l.length;if(0===z)return w;for(var C=0;z>C;++C){var D,L=l[C],q=L*L,U=Math.max(1-q,0),B=Math.sqrt(U);D=a.sign(p)===a.sign(y)?d(p*q+y,m*L,a.EPSILON12):a.sign(y)===a.sign(m*L)?d(p*q,m*L+y,a.EPSILON12):d(p*q+m*L,y,a.EPSILON12);var F=d(v*L,g,a.EPSILON15),W=D*F;0>W?w.push(new e(i,c*L,c*B)):W>0?w.push(new e(i,c*L,c*-B)):0!==B?(w.push(new e(i,c*L,c*-B)),w.push(new e(i,c*L,c*B)),++C):w.push(new e(i,c*L,c*B))}return w}var m={};m.rayPlane=function(t,r,i){n(i)||(i=new e);var o=t.origin,u=t.direction,s=r.normal,c=e.dot(s,u);if(Math.abs(c)<a.EPSILON15)return void 0;var l=(-r.distance-e.dot(s,o))/c;return 0>l?void 0:(i=e.multiplyByScalar(u,l,i),e.add(o,i,i))};var y=new e,v=new e,g=new e,w=new e,x=new e;m.rayTriangle=function(t,r,i,a,o,u){var s=l(t,r,i,a,o);return!n(s)||0>s?void 0:(n(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;m.lineSegmentTriangle=function(t,r,i,a,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(r,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,i,a,o,u);return!n(f)||0>f||f>e.distance(t,r)?void 0:(n(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};m.raySphere=function(e,t,r){return r=h(e,t,r),!n(r)||r.stop<0?void 0:(r.start=Math.max(r.start,0),r)};var O=new c;m.lineSegmentSphere=function(t,r,i,a){var o=O;e.clone(t,o.origin);var u=e.subtract(r,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),a=h(o,i,a),!n(a)||a.stop<0||a.start>s?void 0:(a.start=Math.max(a.start,0),a.stop=Math.min(a.stop,s),a)};var T=new e,_=new e;m.rayEllipsoid=function(t,r){var n,i,a,o,u,s=r.oneOverRadii,c=e.multiplyComponents(s,t.origin,T),l=e.multiplyComponents(s,t.direction,_),f=e.magnitudeSquared(c),h=e.dot(c,l);if(f>1){if(h>=0)return void 0;var d=h*h;if(n=f-1,i=e.magnitudeSquared(l),a=i*n,a>d)return void 0;if(d>a){o=h*h-a,u=-h+Math.sqrt(o);var p=u/i,m=n/u;return m>p?{start:p,stop:m}:{start:m,stop:p}}var y=Math.sqrt(n/i);return{start:y,stop:y}}return 1>f?(n=f-1,i=e.magnitudeSquared(l),a=i*n,o=h*h-a,u=-h+Math.sqrt(o),{start:0,stop:u/i}):0>h?(i=e.magnitudeSquared(l),{start:0,stop:-h/i}):void 0};var M=new e,P=new e,b=new e,N=new e,A=new e,I=new o,R=new o,z=new o,C=new o,D=new o,L=new o,q=new o,U=new e,B=new e,F=new t;m.grazingAltitudeLocation=function(t,r){var i=t.origin,u=t.direction,s=r.geodeticSurfaceNormal(i,M);if(e.dot(u,s)>=0)return i;var c=n(this.rayEllipsoid(t,r)),l=r.transformPositionToScaledSpace(u,M),f=e.normalize(l,l),h=e.mostOrthogonalAxis(l,N),d=e.normalize(e.cross(h,f,P),P),m=e.normalize(e.cross(f,d,b),b),y=I;y[0]=f.x,y[1]=f.y,y[2]=f.z,y[3]=d.x,y[4]=d.y,y[5]=d.z,y[6]=m.x,y[7]=m.y,y[8]=m.z;var v=o.transpose(y,R),g=o.fromScale(r.radii,z),w=o.fromScale(r.oneOverRadii,C),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,O=o.multiply(o.multiply(v,w,L),x,L),T=o.multiply(o.multiply(O,g,q),y,q),_=o.multiplyByVector(O,i,A),W=p(T,e.negate(_,M),0,0,1),G=W.length;if(G>0){for(var k=e.clone(e.ZERO,B),V=Number.NEGATIVE_INFINITY,H=0;G>H;++H){E=o.multiplyByVector(g,o.multiplyByVector(y,W[H],U),U);var Y=e.normalize(e.subtract(E,i,N),N),j=e.dot(Y,u);j>V&&(V=j,k=e.clone(E,k))}var Z=r.cartesianToCartographic(k,F);return V=a.clamp(V,0,1),S=e.magnitude(e.subtract(k,i,N))*Math.sqrt(1-V*V),S=c?-S:S,Z.height=S,r.cartographicToCartesian(Z,new e)}return void 0};var W=new e;return m.lineSegmentPlane=function(t,r,i,o){n(o)||(o=new e);var u=e.subtract(r,t,W),s=i.normal,c=e.dot(s,u);if(Math.abs(c)<a.EPSILON6)return void 0;var l=e.dot(s,t),f=-(i.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},m.trianglePlaneIntersection=function(t,r,n,i){var a=i.normal,o=i.distance,u=e.dot(a,t)+o<0,s=e.dot(a,r)+o<0,c=e.dot(a,n)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,h;if((1===l||2===l)&&(f=new e,h=new e),1===l){if(u)return m.lineSegmentPlane(t,r,i,f),m.lineSegmentPlane(t,n,i,h),{positions:[t,r,n,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(s)return m.lineSegmentPlane(r,n,i,f),m.lineSegmentPlane(r,t,i,h),{positions:[t,r,n,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return m.lineSegmentPlane(n,t,i,f),m.lineSegmentPlane(n,r,i,h),{positions:[t,r,n,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return m.lineSegmentPlane(r,t,i,f),m.lineSegmentPlane(n,t,i,h),{positions:[t,r,n,f,h],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return m.lineSegmentPlane(n,r,i,f),m.lineSegmentPlane(t,r,i,h),{positions:[t,r,n,f,h],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return m.lineSegmentPlane(t,n,i,f),m.lineSegmentPlane(r,n,i,h),{positions:[t,r,n,f,h],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},m}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,r,n,i){return t(e).then(r,n,i)}function t(e){var t,r;return e instanceof n?t=e:u(e)?(r=o(),e.then(function(e){r.resolve(e)},function(e){r.reject(e)},function(e){r.progress(e)}),t=r.promise):t=i(e),t}function r(t){return e(t,a)}function n(e){this.then=e}function i(e){var r=new n(function(r){try{return t(r?r(e):e)}catch(n){return a(n)}});return r}function a(e){var r=new n(function(r,n){try{return n?t(n(e)):a(e)}catch(i){return a(i)}});return r}function o(){function e(e,t,r){return h(e,t,r)}function r(e){return p(e)}function i(e){return p(a(e))}function u(e){return d(e)}var s,c,l,f,h,d,p;return c=new n(e),s={then:e,resolve:r,reject:i,progress:u,promise:c,resolver:{resolve:r,reject:i,progress:u}},l=[],f=[],h=function(e,t,r){var n,i;return n=o(),i="function"==typeof r?function(e){try{n.progress(r(e))}catch(t){n.progress(t)}}:function(e){n.progress(e)},l.push(function(r){r.then(e,t).then(n.resolve,n.reject,i)}),f.push(i),n.promise},d=function(e){return m(f,e),e},p=function(e){return e=t(e),h=e.then,p=t,d=v,m(l,e),f=l=E,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,r,n,i,a){return y(2,arguments),e(t,function(t){function u(e){m(e)}function s(e){p(e)}var c,l,f,h,d,p,m,y,g,w;if(g=t.length>>>0,c=Math.max(0,Math.min(r,g)),f=[],l=g-c+1,h=[],d=o(),c)for(y=d.progress,m=function(e){h.push(e),--l||(p=m=v,d.reject(h))},p=function(e){f.push(e),--c||(p=m=v,d.resolve(f))},w=0;g>w;++w)w in t&&e(t[w],s,u,y);else d.resolve(f);return d.then(n,i,a)})}function c(e,t,r,n){function i(e){return t?t(e[0]):e[0]}return s(e,1,i,r,n)}function l(e,t,r,n){return y(1,arguments),h(e,g).then(t,r,n)}function f(){return h(arguments,g)}function h(t,r){return e(t,function(t){var n,i,a,u,s,c;if(a=i=t.length>>>0,n=[],c=o(),a)for(u=function(t,i){e(t,r).then(function(e){n[i]=e,--a||c.resolve(n)},c.reject)},s=0;i>s;s++)s in t?u(t[s],s):--a;else c.resolve(n);return c.promise})}function d(t,r){var n=x.call(arguments,1);return e(t,function(t){var i;return i=t.length,n[0]=function(t,n,a){return e(t,function(t){return e(n,function(e){return r(t,e,a,i)})})},w.apply(t,n)})}function p(t,r,n){var i=arguments.length>2;return e(t,function(e){return e=i?n:e,r.resolve(e),e},function(e){return r.reject(e),a(e)},r.progress)}function m(e,t){for(var r,n=0;r=e[n++];)r(t)}function y(e,t){for(var r,n=t.length;n>e;)if(r=t[--n],null!=r&&"function"!=typeof r)throw new Error("arg "+n+" must be a function")}function v(){}function g(e){return e}var w,x,E;return e.defer=o,e.resolve=t,e.reject=r,e.join=f,e.all=l,e.map=h,e.reduce=d,e.any=c,e.some=s,e.chain=p,e.isPromise=u,n.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(E,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(E,t)})})}},x=[].slice,w=[].reduce||function(e){var t,r,n,i,a;if(a=0,t=Object(this),i=t.length>>>0,r=arguments,r.length<=1)for(;;){if(a in t){n=t[a++];break}if(++a>=i)throw new TypeError}else n=r[1];for(;i>a;++a)a in t&&(n=e(n,t[a],a,t));return n},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,r){for(var n,i,a=0,o=e.length-1;o>=a;)if(n=~~((a+o)/2),i=r(e[n],t),0>i)a=n+1;else{if(!(i>0))return n;o=n-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,r,n,i){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=r,this.yPoleOffset=n,this.ut1MinusUtc=i};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,r=0,n=t[r++],i=function(e,t,r,n){r||(r=" ");var i=e.length>=t?"":Array(1+t-e.length>>>0).join(r);return n?e+i:i+e},a=function(e,t,r,n,a,o){var u=n-e.length;return u>0&&(e=r||!a?i(e,n,o,r):e.slice(0,t.length)+i("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,r,n,o,u,s){var c=e>>>0;return r=r&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=r+i(c.toString(t),u||0,"0",!1),a(e,r,n,o,s)},u=function(e,t,r,n,i,o){return null!=n&&(e=e.slice(0,n)),a(e,"",t,r,i,o)},s=function(e,n,s,c,l,f,h){var d,p,m,y,v;if("%%"==e)return"%";for(var g=!1,w="",x=!1,E=!1,S=" ",O=s.length,T=0;s&&O>T;T++)switch(s.charAt(T)){case" ":w=" ";break;case"+":w="+";break;case"-":g=!0;break;case"'":S=s.charAt(T+1);break;case"0":x=!0;break;case"#":E=!0}if(c=c?"*"==c?+t[r++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,g=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(f=f?"*"==f?+t[r++]:"*"==f.charAt(0)?+t[f.slice(1,-1)]:+f:"fFeE".indexOf(h)>-1?6:"d"==h?0:void 0,v=n?t[n.slice(0,-1)]:t[r++],h){case"s":return u(String(v),g,c,f,x,S);case"c":return u(String.fromCharCode(+v),g,c,f,x);case"b":return o(v,2,E,g,c,f,x);case"o":return o(v,8,E,g,c,f,x);case"x":return o(v,16,E,g,c,f,x);case"X":return o(v,16,E,g,c,f,x).toUpperCase();case"u":return o(v,10,E,g,c,f,x);case"i":case"d":return d=+v||0,d=Math.round(d-d%1),p=0>d?"-":w,v=p+i(String(Math.abs(d)),f,"0",!1),a(v,p,g,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return d=+v,p=0>d?"-":w,m=["toExponential","toFixed","toPrecision"]["efg".indexOf(h.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(h)%2],v=p+Math.abs(d)[m](f),a(v,p,g,c,x)[y]();default:return e}};return n.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,r,n,i,a,o,u){this.year=e,this.month=t,this.day=r,this.hour=n,this.minute=i,this.second=a,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,r,n,i,a,o,u,s,c){"use strict";function l(e,t){return N.compare(e.julianDate,t.julianDate)}function f(e){g.julianDate=e;var r=N.leapSeconds,n=t(r,g,l);0>n&&(n=~n),n>=r.length&&(n=r.length-1);var i=r[n].offset;if(n>0){var a=N.secondsDifference(r[n].julianDate,e);a>i&&(n--,i=r[n].offset)}N.addSeconds(e,i,e)}function h(e,r){g.julianDate=e;var n=N.leapSeconds,i=t(n,g,l);if(0>i&&(i=~i),0===i)return N.addSeconds(e,-n[0].offset,r);if(i>=n.length)return N.addSeconds(e,-n[i-1].offset,r);var a=N.secondsDifference(n[i].julianDate,e);return 0===a?N.addSeconds(e,-n[i].offset,r):1>=a?void 0:N.addSeconds(e,-n[--i].offset,r)}function d(e,t,r){var n=0|t/s.SECONDS_PER_DAY;return e+=n,t-=s.SECONDS_PER_DAY*n,0>t&&(e--,t+=s.SECONDS_PER_DAY),r.dayNumber=e,r.secondsOfDay=t,r}function p(e,t,r,n,i,a,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+r-32075;n-=12,0>n&&(n+=24);var f=a+(n*s.SECONDS_PER_HOUR+i*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return f>=43200&&(l-=1),[l,f]}var m=new a,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,g=new u,w=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,E=/^(\d{4})-?(\d{3})$/,S=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,O=/^(\d{4})-?(\d{2})-?(\d{2})$/,T=/([Z+\-])?(\d{2})?:?(\d{2})?$/,_=/^(\d{2})(\.\d+)?/.source+T.source,M=/^(\d{2}):?(\d{2})(\.\d+)?/.source+T.source,P=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+T.source,b="Invalid ISO 8601 date.",N=function(e,t,n){this.dayNumber=void 0,this.secondsOfDay=void 0,e=r(e,0),t=r(t,0),n=r(n,c.UTC);var i=0|e;t+=(e-i)*s.SECONDS_PER_DAY,d(i,t,this),n===c.UTC&&f(this)};N.fromDate=function(e,t){var r=p(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return n(t)?(d(r[0],r[1],t),f(t),t):new N(r[0],r[1],c.UTC)},N.fromIso8601=function(e,t){e=e.replace(",",".");var r,a,u,s=e.split("T"),l=1,h=1,m=0,g=0,T=0,A=0,I=s[0],R=s[1];if(!n(I))throw new i(b);var z;if(s=I.match(O),null!==s){if(z=I.split("-").length-1,z>0&&2!==z)throw new i(b);r=+s[1],l=+s[2],h=+s[3]}else if(s=I.match(x),null!==s)r=+s[1],l=+s[2];else if(s=I.match(w),null!==s)r=+s[1];else{var C;if(s=I.match(E),null!==s){if(r=+s[1],C=+s[2],u=o(r),1>C||u&&C>366||!u&&C>365)throw new i(b)}else{if(s=I.match(S),null===s)throw new i(b);r=+s[1];var D=+s[2],L=+s[3]||0;if(z=I.split("-").length-1,z>0&&(!n(s[3])&&1!==z||n(s[3])&&2!==z))throw new i(b);var q=new Date(Date.UTC(r,0,4));C=7*D+L-q.getUTCDay()-3}a=new Date(Date.UTC(r,0,1)),a.setUTCDate(C),l=a.getUTCMonth()+1,h=a.getUTCDate()}if(u=o(r),1>l||l>12||1>h||(2!==l||!u)&&h>y[l-1]||u&&2===l&&h>v)throw new i(b);var U;if(n(R)){if(s=R.match(P),null!==s){if(z=R.split(":").length-1,z>0&&2!==z&&3!==z)throw new i(b);m=+s[1],g=+s[2],T=+s[3],A=1e3*+(s[4]||0),U=5}else if(s=R.match(M),null!==s){if(z=R.split(":").length-1,z>0&&1!==z)throw new i(b);m=+s[1],g=+s[2],T=60*+(s[3]||0),U=4}else{if(s=R.match(_),null===s)throw new i(b);m=+s[1],g=60*+(s[2]||0),U=3}if(g>=60||T>=61||m>24||24===m&&(g>0||T>0||A>0))throw new i(b);var B=s[U],F=+s[U+1],W=+(s[U+2]||0);switch(B){case"+":m-=F,g-=W;break;case"-":m+=F,g+=W;break;case"Z":break;default:g+=new Date(Date.UTC(r,l-1,h,m,g)).getTimezoneOffset()}}else g+=new Date(r,l-1,h).getTimezoneOffset();var G=60===T;for(G&&T--;g>=60;)g-=60,m++;for(;m>=24;)m-=24,h++;for(a=u&&2===l?v:y[l-1];h>a;)h-=a,l++,l>12&&(l-=12,r++),a=u&&2===l?v:y[l-1];for(;0>g;)g+=60,m--;for(;0>m;)m+=24,h--;for(;1>h;)l--,1>l&&(l+=12,r--),a=u&&2===l?v:y[l-1],h+=a;var k=p(r,l,h,m,g,T,A);return n(t)?(d(k[0],k[1],t),f(t)):t=new N(k[0],k[1],c.UTC),G&&N.addSeconds(t,1,t),t},N.now=function(e){return N.fromDate(new Date,e)};var A=new N(0,0,c.TAI);return N.toGregorianDate=function(e,t){var r=!1,i=h(e,A);n(i)||(N.addSeconds(e,-1,A),i=h(A,A),r=!0);var o=i.dayNumber,u=i.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var f=0|4e3*(c+1)/1461001;c=0|c-(0|1461*f/4)+31;var d=0|80*c/2447,p=0|c-(0|2447*d/80);c=0|d/11;var m=0|d+2-12*c,y=0|100*(l-49)+f+c,v=0|u/s.SECONDS_PER_HOUR,g=u-v*s.SECONDS_PER_HOUR,w=0|g/s.SECONDS_PER_MINUTE;g-=w*s.SECONDS_PER_MINUTE;var x=0|g,E=(g-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),r&&(x+=1),n(t)?(t.year=y,t.month=m,t.day=p,t.hour=v,t.minute=w,t.second=x,t.millisecond=E,t.isLeapSecond=r,t):new a(y,m,p,v,w,x,E,r)},N.toDate=function(e){var t=N.toGregorianDate(e,m),r=t.second;return t.isLeapSecond&&(r-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,r,t.millisecond))},N.toIso8601=function(t,r){var i,a=N.toGregorianDate(t,a);return n(r)||0===a.millisecond?n(r)&&0!==r?(i=(.01*a.millisecond).toFixed(r).replace(".","").slice(0,r),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,i)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",a.year,a.month,a.day,a.hour,a.minute,a.second):(i=(.01*a.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,i))},N.clone=function(e,t){return n(e)?n(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new N(e.dayNumber,e.secondsOfDay,c.TAI):void 0},N.compare=function(e,t){var r=e.dayNumber-t.dayNumber;return 0!==r?r:e.secondsOfDay-t.secondsOfDay},N.equals=function(e,t){return e===t||n(e)&&n(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},N.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(N.secondsDifference(e,t))<=r},N.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},N.secondsDifference=function(e,t){var r=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return r+(e.secondsOfDay-t.secondsOfDay)},N.daysDifference=function(e,t){var r=e.dayNumber-t.dayNumber,n=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return r+n},N.computeTaiMinusUtc=function(e){g.julianDate=e;var r=N.leapSeconds,n=t(r,g,l);return 0>n&&(n=~n,--n,0>n&&(n=0)),r[n].offset},N.addSeconds=function(e,t,r){return d(e.dayNumber,e.secondsOfDay+t,r)},N.addMinutes=function(e,t,r){var n=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return d(e.dayNumber,n,r)},N.addHours=function(e,t,r){var n=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return d(e.dayNumber,n,r)},N.addDays=function(e,t,r){var n=e.dayNumber+t;return d(n,e.secondsOfDay,r)},N.lessThan=function(e,t){return N.compare(e,t)<0},N.lessThanOrEquals=function(e,t){return N.compare(e,t)<=0},N.greaterThan=function(e,t){return N.compare(e,t)>0},N.greaterThanOrEquals=function(e,t){return N.compare(e,t)>=0},N.prototype.clone=function(e){return N.clone(this,e)},N.prototype.equals=function(e){return N.equals(this,e)},N.prototype.equalsEpsilon=function(e,t){return N.equalsEpsilon(this,e,t)},N.prototype.toString=function(){return N.toIso8601(this)},N.leapSeconds=[new u(new N(2441317,43210,c.TAI),10),new u(new N(2441499,43211,c.TAI),11),new u(new N(2441683,43212,c.TAI),12),new u(new N(2442048,43213,c.TAI),13),new u(new N(2442413,43214,c.TAI),14),new u(new N(2442778,43215,c.TAI),15),new u(new N(2443144,43216,c.TAI),16),new u(new N(2443509,43217,c.TAI),17),new u(new N(2443874,43218,c.TAI),18),new u(new N(2444239,43219,c.TAI),19),new u(new N(2444786,43220,c.TAI),20),new u(new N(2445151,43221,c.TAI),21),new u(new N(2445516,43222,c.TAI),22),new u(new N(2446247,43223,c.TAI),23),new u(new N(2447161,43224,c.TAI),24),new u(new N(2447892,43225,c.TAI),25),new u(new N(2448257,43226,c.TAI),26),new u(new N(2448804,43227,c.TAI),27),new u(new N(2449169,43228,c.TAI),28),new u(new N(2449534,43229,c.TAI),29),new u(new N(2450083,43230,c.TAI),30),new u(new N(2450630,43231,c.TAI),31),new u(new N(2451179,43232,c.TAI),32),new u(new N(2453736,43233,c.TAI),33),new u(new N(2454832,43234,c.TAI),34),new u(new N(2456109,43235,c.TAI),35),new u(new N(2457204,43236,c.TAI),36)],N}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(r,n){if(null===r||"object"!=typeof r)return r;n=e(n,!1);var i=new r.constructor;for(var a in r)if(r.hasOwnProperty(a)){var o=r[a];n&&(o=t(o,n)),i[a]=o}return i};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var r=e.split("\r\n"),n=0;n<r.length;++n){var i=r[n],a=i.indexOf(": ");if(a>0){var o=i.substring(0,a),u=i.substring(a+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var r=function(e,r,n){this.statusCode=e,this.response=r,this.responseHeaders=n,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return r.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},r}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,r,n,i,a){"use strict";function o(e,t){var r=decodeURIComponent(t);return e?atob(r):r}function u(e,t){for(var r=o(e,t),n=new ArrayBuffer(r.length),i=new Uint8Array(n),a=0;a<r.length;a++)i[a]=r.charCodeAt(a);return n}function s(e,r){r=t(r,"");var i=e[1],a=!!e[2],s=e[3];switch(r){case"":case"text":return o(a,s);case"arraybuffer":return u(a,s);case"blob":var c=u(a,s);return new Blob([c],{type:i});case"document":var l=new DOMParser;return l.parseFromString(o(a,s),i);case"json":return JSON.parse(o(a,s));default:throw new n("Unhandled responseType: "+r)}}var c=function(r){r=t(r,t.EMPTY_OBJECT);var n=r.responseType,i=t(r.method,"GET"),a=r.data,o=r.headers,u=r.overrideMimeType;return e(r.url,function(t){var r=e.defer();return c.load(t,n,i,a,o,r,u),r.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,n,o,u,c,f){var h=l.exec(e);if(null!==h)return c.resolve(s(h,t)),void 0;var d=new XMLHttpRequest;if(r(f)&&r(d.overrideMimeType)&&d.overrideMimeType(f),d.open(n,e,!0),r(u))for(var p in u)u.hasOwnProperty(p)&&d.setRequestHeader(p,u[p]);r(t)&&(d.responseType=t),d.onload=function(){200===d.status?r(d.response)?c.resolve(d.response):r(d.responseXML)&&d.responseXML.hasChildNodes()?c.resolve(d.responseXML):r(d.responseText)?c.resolve(d.responseText):c.reject(new a("unknown XMLHttpRequest response type.")):c.reject(new i(d.status,d.response,d.getAllResponseHeaders()))},d.onerror=function(){c.reject(new i)},d.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,r){return e({url:t,headers:r})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,r,n){"use strict";var i={Accept:"application/json,*/*;q=0.01"},a=function(r,a){return t(a)?t(a.Accept)||(a=e(a),a.Accept=i.Accept):a=i,n(r,a).then(function(e){return JSON.parse(e)})};return a}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,r,n,i,a,o,u,s,c,l,f){"use strict";function h(e,t){return o.compare(e.julianDate,t)}function d(e,r){if(!n(r.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0; +if(!n(r.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var i=r.columnNames.indexOf("modifiedJulianDateUtc"),a=r.columnNames.indexOf("xPoleWanderRadians"),s=r.columnNames.indexOf("yPoleWanderRadians"),c=r.columnNames.indexOf("ut1MinusUtcSeconds"),d=r.columnNames.indexOf("xCelestialPoleOffsetRadians"),p=r.columnNames.indexOf("yCelestialPoleOffsetRadians"),m=r.columnNames.indexOf("taiMinusUtcSeconds");if(0>i||0>a||0>s||0>c||0>d||0>p||0>m)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=r.samples,v=e._dates=[];e._dateColumn=i,e._xPoleWanderRadiansColumn=a,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=d,e._yCelestialPoleOffsetRadiansColumn=p,e._taiMinusUtcSecondsColumn=m,e._columnCount=r.columnNames.length,e._lastIndex=void 0;for(var g,w=e._addNewLeapSeconds,x=0,E=y.length;E>x;x+=e._columnCount){var S=y[x+i],O=y[x+m],T=S+l.MODIFIED_JULIAN_DATE_DIFFERENCE,_=new o(T,O,f.TAI);if(v.push(_),w){if(O!==g&&n(g)){var M=o.leapSeconds,P=t(M,_,h);if(0>P){var b=new u(_,O);M.splice(~P,0,b)}}g=O}}}function p(e,t,r,n,i){var a=r*n;i.xPoleWander=t[a+e._xPoleWanderRadiansColumn],i.yPoleWander=t[a+e._yPoleWanderRadiansColumn],i.xPoleOffset=t[a+e._xCelestialPoleOffsetRadiansColumn],i.yPoleOffset=t[a+e._yCelestialPoleOffsetRadiansColumn],i.ut1MinusUtc=t[a+e._ut1MinusUtcSecondsColumn]}function m(e,t,r){return t+e*(r-t)}function y(e,t,r,n,i,a,u){var s=e._columnCount;if(a>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u;var c=t[i],l=t[a];if(c.equals(l)||n.equals(c))return p(e,r,i,s,u),u;if(n.equals(l))return p(e,r,a,s,u),u;var f=o.secondsDifference(n,c)/o.secondsDifference(l,c),h=i*s,d=a*s,y=r[h+e._ut1MinusUtcSecondsColumn],v=r[d+e._ut1MinusUtcSecondsColumn],g=v-y;if(g>.5||-.5>g){var w=r[h+e._taiMinusUtcSecondsColumn],x=r[d+e._taiMinusUtcSecondsColumn];w!==x&&(l.equals(n)?y=v:v-=x-w)}return u.xPoleWander=m(f,r[h+e._xPoleWanderRadiansColumn],r[d+e._xPoleWanderRadiansColumn]),u.yPoleWander=m(f,r[h+e._yPoleWanderRadiansColumn],r[d+e._yPoleWanderRadiansColumn]),u.xPoleOffset=m(f,r[h+e._xCelestialPoleOffsetRadiansColumn],r[d+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=m(f,r[h+e._yCelestialPoleOffsetRadiansColumn],r[d+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=m(f,y,v),u}var v=function(t){if(t=r(t,r.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=r(t.addNewLeapSeconds,!0),n(t.data))d(this,t.data);else if(n(t.url)){var i=this;this._downloadPromise=e(s(t.url),function(e){d(i,e)},function(){i._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else d(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return v.NONE=a({getPromiseToLoad:function(){return e()},compute:function(e,t){return n(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new i(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,r){if(!n(this._samples)){if(n(this._dataError))throw new c(this._dataError);return void 0}if(n(r)||(r=new i(0,0,0,0,0)),0===this._samples.length)return r.xPoleWander=0,r.yPoleWander=0,r.xPoleOffset=0,r.yPoleOffset=0,r.ut1MinusUtc=0,r;var a=this._dates,u=this._lastIndex,s=0,l=0;if(n(u)){var f=a[u],h=a[u+1],d=o.lessThanOrEquals(f,e),p=!n(h),m=p||o.greaterThanOrEquals(h,e);if(d&&m)return s=u,!p&&h.equals(e)&&++s,l=s+1,y(this,a,this._samples,e,s,l,r),r}var v=t(a,e,o.compare,this._dateColumn);return v>=0?(v<a.length-1&&a[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,a,this._samples,e,s,l,r),r},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var r=n.exec(t);this.scheme=r[1],this.authority=r[2],this.path=r[3],this.query=r[4],this.fragment=r[5]}}function t(e){var t=unescape(e);return a.test(t)?t:e.toUpperCase()}function r(e,t,r,n){return(t||"")+r.toLowerCase()+(n||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var n=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,r).replace(i,t)),this.path&&(this.path=this.path.replace(i,t)),this.query&&(this.query=this.query.replace(i,t)),this.fragment&&(this.fragment=this.fragment.replace(i,t))};var i=/%[0-9a-z]{2}/gi,a=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var r=new e;return this.scheme?(r.scheme=this.scheme,r.authority=this.authority,r.path=this.path,r.query=this.query):(r.scheme=t.scheme,this.authority?(r.authority=this.authority,r.path=this.path,r.query=this.query):(r.authority=t.authority,""==this.path?(r.path=t.path,r.query=this.query||t.query):("/"==this.path.charAt(0)?(r.path=this.path,r.removeDotSegments()):(r.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,r.removeDotSegments()),r.query=this.query))),r.fragment=this.fragment,r},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),r=[],n=""==t[0];for(n&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?r.pop():"."!=e&&r.push(e);("."==e||".."==e)&&r.push(""),n&&r.unshift(""),this.path=r.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,r,n){"use strict";function i(){for(var e=document.getElementsByTagName("script"),t=0,r=e.length;r>t;++t){var n=e[t].getAttribute("src"),i=f.exec(n);if(null!==i)return i[1]}return void 0}function a(){if(t(s))return s;var n;if(n="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:i(),!t(n))throw new r("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(n).resolve(new e(document.location.href))}function o(e){return n.toUrl("../"+e)}function u(t){return new e(t).resolve(a()).toString()}var s,c,l,f=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,h=function(e){t(c)||(c=t(n.toUrl)?o:u),t(l)||(l=document.createElement("a"));var r=c(e);return l.href=r,l.href=l.href,l.href};return h._cesiumScriptRegex=f,h.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},h}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,r){this.x=e,this.y=t,this.s=r};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,r,n,i,a,o,u){"use strict";function s(e,t,r){var n=f;return n.dayNumber=t,n.secondsOfDay=r,a.daysDifference(n,e._sampleZeroDateTT)}function c(r,i){if(r._chunkDownloadsInProgress[i])return r._chunkDownloadsInProgress[i];var a=e.defer();r._chunkDownloadsInProgress[i]=a;var u,s=r._xysFileUrlTemplate;return u=n(s)?s.replace("{0}",i):t("Assets/IAU2006_XYS/IAU2006_XYS_"+i+".json"),e(o(u),function(e){r._chunkDownloadsInProgress[i]=!1;for(var t=r._samples,n=e.samples,o=3*i*r._samplesPerXysFile,u=0,s=n.length;s>u;++u)t[o+u]=n[u];a.resolve()}),a.promise}var l=function(e){e=r(e,r.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=r(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=r(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new a(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=r(e.stepSizeDays,1),this._samplesPerXysFile=r(e.samplesPerXysFile,1e3),this._totalSamples=r(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,n=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){n[s]=o,i[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(n[s]*=s-c);n[s]=1/n[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},f=new a(0,0,u.TAI);return l.prototype.preload=function(t,r,n,i){var a=s(this,t,r),o=s(this,n,i),u=0|a/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var f=0|u/this._samplesPerXysFile,h=0|l/this._samplesPerXysFile,d=[],p=f;h>=p;++p)d.push(c(this,p));return e.all(d)},l.prototype.computeXysRadians=function(e,t,r){var a=s(this,e,t);if(0>a)return void 0;var o=0|a/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var f=l+u;f>=this._totalSamples&&(f=this._totalSamples-1,l=f-u,0>l&&(l=0));var h=!1,d=this._samples;if(n(d[3*l])||(c(this,0|l/this._samplesPerXysFile),h=!0),n(d[3*f])||(c(this,0|f/this._samplesPerXysFile),h=!0),h)return void 0;n(r)?(r.x=0,r.y=0,r.s=0):r=new i(0,0,0);var p,m,y=a-l*this._stepSizeDays,v=this._work,g=this._denominators,w=this._coef,x=this._xTable;for(p=0;u>=p;++p)v[p]=y-x[p];for(p=0;u>=p;++p){for(w[p]=1,m=0;u>=m;++m)m!==p&&(w[p]*=v[m]);w[p]*=g[p];var E=3*(l+p);r.x+=w[p]*d[E++],r.y+=w[p]*d[E++],r.s+=w[p]*d[E]}return r},l}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,r,n,i,a,o,u){"use strict";var s=function(e,r,n,i){this.x=t(e,0),this.y=t(r,0),this.z=t(n,0),this.w=t(i,0)},c=new e;s.fromAxisAngle=function(t,n,i){var a=n/2,o=Math.sin(a);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,h=Math.cos(a);return r(i)?(i.x=u,i.y=l,i.z=f,i.w=h,i):new s(u,l,f,h)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var n,i,a,o,c,h=e[u.COLUMN0ROW0],d=e[u.COLUMN1ROW1],p=e[u.COLUMN2ROW2],m=h+d+p;if(m>0)n=Math.sqrt(m+1),c=.5*n,n=.5/n,i=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*n,a=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*n,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*n;else{var y=l,v=0;d>h&&(v=1),p>h&&p>d&&(v=2);var g=y[v],w=y[g];n=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=f;x[v]=.5*n,n=.5/n,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*n,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*n,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*n,i=-x[0],a=-x[1],o=-x[2]}return r(t)?(t.x=i,t.y=a,t.z=o,t.w=c,t):new s(i,a,o,c)};var h=new s;s.fromHeadingPitchRoll=function(t,r,n,i){var a=s.fromAxisAngle(e.UNIT_X,n,h),o=s.fromAxisAngle(e.UNIT_Y,-r,i);i=s.multiply(o,a,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,h);return s.multiply(u,i,i)};var d=new e,p=new e,m=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,r,n){n=t(n,0),r[n++]=e.x,r[n++]=e.y,r[n++]=e.z,r[n]=e.w},s.unpack=function(e,n,i){return n=t(n,0),r(i)||(i=new s),i.x=e[n],i.y=e[n+1],i.z=e[n+2],i.w=e[n+3],i},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,r,n){s.unpack(e,4*r,v),s.conjugate(v,v);for(var i=0,a=r-t+1;a>i;i++){var o=3*i;s.unpack(e,4*(t+i),m),s.multiply(m,v,m),m.w<0&&s.negate(m,m),s.computeAxis(m,d);var u=s.computeAngle(m);n[o]=d.x*u,n[o+1]=d.y*u,n[o+2]=d.z*u}},s.unpackInterpolationResult=function(t,n,i,a,o){r(o)||(o=new s),e.fromArray(t,0,p);var u=e.magnitude(p);return s.unpack(n,4*a,y),0===u?s.clone(s.IDENTITY,m):s.fromAxisAngle(p,u,m),s.multiply(m,y,o)},s.clone=function(e,t){return r(e)?r(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var r=1/s.magnitude(e),n=e.x*r,i=e.y*r,a=e.z*r,o=e.w*r;return t.x=n,t.y=i,t.z=a,t.w=o,t},s.inverse=function(e,t){var r=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/r,t)},s.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},s.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,r){var n=e.x,i=e.y,a=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+n*l+i*c-a*s,h=o*s-n*c+i*l+a*u,d=o*c+n*s-i*u+a*l,p=o*l-n*u-i*s-a*c;return r.x=f,r.y=h,r.z=d,r.w=p,r},s.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},s.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},s.computeAxis=function(e,t){var r=e.w;if(Math.abs(r-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var n=1/Math.sqrt(1-r*r);return t.x=e.x*n,t.y=e.y*n,t.z=e.z*n,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,r,n){return g=s.multiplyByScalar(t,r,g),n=s.multiplyByScalar(e,1-r,n),s.add(g,n,n)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,r,n){var i=s.dot(e,t),a=t;if(0>i&&(i=-i,a=w=s.negate(t,w)),1-i<o.EPSILON6)return s.lerp(e,a,r,n);var u=Math.acos(i);return x=s.multiplyByScalar(e,Math.sin((1-r)*u),x),E=s.multiplyByScalar(a,Math.sin(r*u),E),n=s.add(x,E,n),s.multiplyByScalar(n,1/Math.sin(u),n)},s.log=function(t,r){var n=o.acosClamped(t.w),i=0;return 0!==n&&(i=n/Math.sin(n)),e.multiplyByScalar(t,i,r)},s.exp=function(t,r){var n=e.magnitude(t),i=0;return 0!==n&&(i=Math.sin(n)/n),r.x=t.x*i,r.y=t.y*i,r.z=t.z*i,r.w=Math.cos(n),r};var S=new e,O=new e,T=new s,_=new s;s.computeInnerQuadrangle=function(t,r,n,i){var a=s.conjugate(r,T);s.multiply(a,n,_);var o=s.log(_,S);s.multiply(a,t,_);var u=s.log(_,O);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,T),s.multiply(r,T,i)},s.squad=function(e,t,r,n,i,a){var o=s.slerp(e,t,i,T),u=s.slerp(r,n,i,_);return s.slerp(o,u,2*i*(1-i),a)};for(var M=new s,P=1.9011074535173003,b=i.supportsTypedArrays()?new Float32Array(8):[],N=i.supportsTypedArrays()?new Float32Array(8):[],A=i.supportsTypedArrays()?new Float32Array(8):[],I=i.supportsTypedArrays()?new Float32Array(8):[],R=0;7>R;++R){var z=R+1,C=2*z+1;b[R]=1/(z*C),N[R]=z/C}return b[7]=P/136,N[7]=8*P/17,s.fastSlerp=function(e,t,r,n){var i,a=s.dot(e,t);a>=0?i=1:(i=-1,a=-a);for(var o=a-1,u=1-r,c=r*r,l=u*u,f=7;f>=0;--f)A[f]=(b[f]*c-N[f])*o,I[f]=(b[f]*l-N[f])*o;var h=i*r*(1+A[0]*(1+A[1]*(1+A[2]*(1+A[3]*(1+A[4]*(1+A[5]*(1+A[6]*(1+A[7])))))))),d=u*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),p=s.multiplyByScalar(e,d,M);return s.multiplyByScalar(t,h,n),s.add(p,n,n)},s.fastSquad=function(e,t,r,n,i,a){var o=s.fastSlerp(e,t,i,T),u=s.fastSlerp(r,n,i,_);return s.fastSlerp(o,u,2*i*(1-i),a)},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n},s.ZERO=a(new s(0,0,0,0)),s.IDENTITY=a(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,r,n,i,a,o,u,s,c,l,f,h,d,p,m,y,v){"use strict";var g={},w=new r,x=new r,E=new r;g.eastNorthUpToFixedFrame=function(e,t,n){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return a(n)?(n[0]=0,n[1]=1,n[2]=0,n[3]=0,n[4]=-o,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=o,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,r.normalize(s,s),r.cross(u,s,l),a(n)?(n[0]=s.x,n[1]=s.y,n[2]=s.z,n[3]=0,n[4]=l.x,n[5]=l.y,n[6]=l.z,n[7]=0,n[8]=u.x,n[9]=u.y,n[10]=u.z,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var S=new r,O=new r,T=new r;g.northEastDownToFixedFrame=function(e,t,n){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return a(n)?(n[0]=-o,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=-o,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=S,s=O,l=T;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,r.normalize(s,s),r.cross(u,s,l),a(n)?(n[0]=l.x,n[1]=l.y,n[2]=l.z,n[3]=0,n[4]=s.x,n[5]=s.y,n[6]=s.z,n[7]=0,n[8]=-u.x,n[9]=-u.y,n[10]=-u.z,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},g.northUpEastToFixedFrame=function(e,t,n){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return a(n)?(n[0]=-o,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=o,n[7]=0,n[8]=0,n[9]=1,n[10]=0,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,r.normalize(s,s),r.cross(u,s,l),a(n)?(n[0]=l.x,n[1]=l.y,n[2]=l.z,n[3]=0,n[4]=u.x,n[5]=u.y,n[6]=u.z,n[7]=0,n[8]=s.x,n[9]=s.y,n[10]=s.z,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var _=new y,M=new r(1,1,1),P=new m;g.headingPitchRollToFixedFrame=function(e,t,n,i,a,o){var u=y.fromHeadingPitchRoll(t,n,i,_),s=m.fromTranslationQuaternionRotationScale(r.ZERO,u,M,P);return o=g.eastNorthUpToFixedFrame(e,a,o),m.multiply(o,s,o)};var b=new m,N=new p;g.headingPitchRollQuaternion=function(e,t,r,n,i,a){var o=g.headingPitchRollToFixedFrame(e,t,r,n,i,b),u=m.getRotation(o,N);return y.fromRotationMatrix(u,a)};var A=24110.54841,I=8640184.812866,R=.093104,z=-62e-7,C=1.1772758384668e-19,D=72921158553e-15,L=d.TWO_PI/86400,q=new h;g.computeTemeToPseudoFixedMatrix=function(e,t){q=h.addSeconds(e,-h.computeTaiMinusUtc(e),q);var r,n=q.dayNumber,i=q.secondsOfDay,o=n-2451545;r=i>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=A+r*(I+r*(R+r*z)),s=u*L%d.TWO_PI,c=D+C*(n-2451545.5),l=(i+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,f=s+c*l,m=Math.cos(f),y=Math.sin(f);return a(t)?(t[0]=m,t[1]=-y,t[2]=0,t[3]=y,t[4]=m,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new p(m,y,0,-y,m,0,0,0,1)},g.iau2006XysData=new l,g.earthOrientationParameters=u.NONE;var U=32.184,B=2451545;g.preloadIcrfFixed=function(t){var r=t.start.dayNumber,n=t.start.secondsOfDay+U,i=t.stop.dayNumber,a=t.stop.secondsOfDay+U,o=g.iau2006XysData.preload(r,n,i,a),u=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},g.computeIcrfToFixedMatrix=function(e,t){a(t)||(t=new p);var r=g.computeFixedToIcrfMatrix(e,t);return a(r)?p.transpose(r,t):void 0};var F=new f(0,0,0),W=new s(0,0,0,0,0,0),G=new p,k=new p;g.computeFixedToIcrfMatrix=function(e,t){a(t)||(t=new p);var r=g.earthOrientationParameters.compute(e,W);if(!a(r))return void 0;var n=e.dayNumber,i=e.secondsOfDay+U,o=g.iau2006XysData.computeXysRadians(n,i,F);if(!a(o))return void 0;var u=o.x+r.xPoleOffset,s=o.y+r.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=G;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var f=p.fromRotationZ(-o.s,k),m=p.multiply(l,f,G),y=e.dayNumber,w=e.secondsOfDay-h.computeTaiMinusUtc(e)+r.ut1MinusUtc,x=y-2451545,E=w/v.SECONDS_PER_DAY,S=.779057273264+E+.00273781191135448*(x+E);S=S%1*d.TWO_PI;var O=p.fromRotationZ(S,k),T=p.multiply(m,O,G),_=Math.cos(r.xPoleWander),M=Math.cos(r.yPoleWander),P=Math.sin(r.xPoleWander),b=Math.sin(r.yPoleWander),N=n-B+i/v.SECONDS_PER_DAY;N/=36525;var A=-47e-6*N*d.RADIANS_PER_DEGREE/3600,I=Math.cos(A),R=Math.sin(A),z=k;return z[0]=_*I,z[1]=_*R,z[2]=P,z[3]=-M*R+b*P*I,z[4]=M*I+b*P*R,z[5]=-b*_,z[6]=-b*R-M*P*I,z[7]=b*I-M*P*R,z[8]=M*_,p.multiply(T,z,t)};var V=new n;g.pointToWindowCoordinates=function(e,t,r,n){return n=g.pointToGLWindowCoordinates(e,t,r,n),n.y=2*t[5]-n.y,n},g.pointToGLWindowCoordinates=function(e,r,i,o){a(o)||(o=new t);var u=V;return m.multiplyByVector(e,n.fromElements(i.x,i.y,i.z,1,u),u),n.multiplyByScalar(u,1/u.w,u),m.multiplyByVector(r,u,u),t.fromCartesian4(u,o)};var H=new r,Y=new r,j=new r;return g.rotationMatrixFromPositionVelocity=function(e,t,n,o){var u=i(n,c.WGS84).geodeticSurfaceNormal(e,H),s=r.cross(t,u,Y);r.equalsEpsilon(s,r.ZERO,d.EPSILON6)&&(s=r.clone(r.UNIT_X,s));var l=r.cross(s,t,j);return r.cross(t,l,s),r.negate(s,s),a(o)||(o=new p),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},g}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,r,n,i,a,o,u,s,c,l,f,h,d,p){"use strict";var m=new n,y=function(e,t){t=i(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var n=p.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=r.fromCartesian4(f.getColumn(n,0,m)),this._yAxis=r.fromCartesian4(f.getColumn(n,1,m));var a=r.fromCartesian4(f.getColumn(n,2,m));this._plane=h.fromPointNormal(e,a)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,r){var n=e.fromPoints(t,v);return new y(n.center,r)};var g=new d,w=new r;y.prototype.projectPointOntoPlane=function(e,n){var i=g;i.origin=e,r.normalize(e,i.direction);var o=c.rayPlane(i,this._plane,w);if(a(o)||(r.negate(i.direction,i.direction),o=c.rayPlane(i,this._plane,w)),a(o)){var u=r.subtract(o,this._origin,o),s=r.dot(this._xAxis,u),l=r.dot(this._yAxis,u);return a(n)?(n.x=s,n.y=l,n):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){a(t)||(t=[]);for(var r=0,n=e.length,i=0;n>i;i++){var o=this.projectPointOntoPlane(e[i],t[r]);a(o)&&(t[r]=o,r++)}return t.length=r,t},y.prototype.projectPointToNearestOnPlane=function(e,n){a(n)||(n=new t);var i=g;i.origin=e,r.clone(this._plane.normal,i.direction);var o=c.rayPlane(i,this._plane,w);a(o)||(r.negate(i.direction,i.direction),o=c.rayPlane(i,this._plane,w));var u=r.subtract(o,this._origin,o),s=r.dot(this._xAxis,u),l=r.dot(this._yAxis,u);return n.x=s,n.y=l,n},y.prototype.projectPointsToNearestOnPlane=function(e,t){a(t)||(t=[]);var r=e.length;t.length=r;for(var n=0;r>n;n++)t[n]=this.projectPointToNearestOnPlane(e[n],t[n]);return t};var x=new r;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var n=e.length;a(t)?t.length=n:t=new Array(n);for(var i=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;n>l;++l){var f=e[l];r.multiplyByScalar(u,f.x,c),a(t[l])||(t[l]=new r);var h=r.add(o,c,t[l]);r.multiplyByScalar(s,f.y,c),r.add(h,c,h),i.scaleToGeocentricSurface(h,h)}return t},y}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,r,n,i){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,i.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,n.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(e){var n=-1;for(var i in e.attributes)if(e.attributes.hasOwnProperty(i)&&t(e.attributes[i])&&t(e.attributes[i].values)){var a=e.attributes[i],o=a.values.length/a.componentsPerAttribute;if(n!==o&&-1!==n)throw new r("All attribute lists must have the same number of attributes.");n=o}return n},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/GeometryInstance",["./defaultValue","./defined","./DeveloperError","./Matrix4"],function(e,t,r,n){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.geometry=t.geometry,this.modelMatrix=n.clone(e(t.modelMatrix,n.IDENTITY)),this.id=t.id,this.pickPrimitive=t.pickPrimitive,this.attributes=e(t.attributes,{}),this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0};return i}),define("Core/AttributeCompression",["./Cartesian2","./Cartesian3","./defined","./DeveloperError","./Math"],function(e,t,r,n,i){"use strict";var a={};a.octEncode=function(e,t){if(t.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),t.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){var r=t.x,n=t.y;t.x=(1-Math.abs(n))*i.signNotZero(r),t.y=(1-Math.abs(r))*i.signNotZero(n)}return t.x=i.toSNorm(t.x),t.y=i.toSNorm(t.y),t},a.octDecode=function(e,r,n){if(n.x=i.fromSNorm(e),n.y=i.fromSNorm(r),n.z=1-(Math.abs(n.x)+Math.abs(n.y)),n.z<0){var a=n.x;n.x=(1-Math.abs(n.y))*i.signNotZero(a),n.y=(1-Math.abs(a))*i.signNotZero(n.y)}return t.normalize(n,n)},a.octPackFloat=function(e){return 256*e.x+e.y};var o=new e;return a.octEncodeFloat=function(e){return a.octEncode(e,o),a.octPackFloat(o)},a.octDecodeFloat=function(e,t){var r=e/256,n=Math.floor(r),i=256*(r-n);return a.octDecode(n,i,t)},a.octPack=function(e,t,r,n){var i=a.octEncodeFloat(e),u=a.octEncodeFloat(t),s=a.octEncode(r,o);return n.x=65536*s.x+i,n.y=65536*s.y+u,n},a.octUnpack=function(e,t,r,n){var i=e.x/65536,o=Math.floor(i),u=65536*(i-o);i=e.y/65536;var s=Math.floor(i),c=65536*(i-s);a.octDecodeFloat(u,t),a.octDecodeFloat(c,r),a.octDecode(o,s,n)},a.compressTextureCoordinates=function(e){var t=1===e.x?4095:0|4096*e.x,r=1===e.y?4095:0|4096*e.y;return 4096*t+r},a.decompressTextureCoordinates=function(e,t){var r=e/4096;return t.x=Math.floor(r)/4096,t.y=r-Math.floor(r),t},a}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=new t,i=new t,a=new t,o=function(o,u,s,c,l){r(l)||(l=new t);var f,h,d,p,m,y,v,g;r(u.z)?(f=t.subtract(s,u,n),h=t.subtract(c,u,i),d=t.subtract(o,u,a),p=t.dot(f,f),m=t.dot(f,h),y=t.dot(f,d),v=t.dot(h,h),g=t.dot(h,d)):(f=e.subtract(s,u,n),h=e.subtract(c,u,i),d=e.subtract(o,u,a),p=e.dot(f,f),m=e.dot(f,h),y=e.dot(f,d),v=e.dot(h,h),g=e.dot(h,d));var w=1/(p*v-m*m);return l.y=(v*y-m*g)*w,l.z=(p*g-m*y)*w,l.x=1-l.y-l.z,l};return o}),define("Core/EncodedCartesian3",["./Cartesian3","./defined","./DeveloperError"],function(e,t){"use strict";var r=function(){this.high=e.clone(e.ZERO),this.low=e.clone(e.ZERO)};r.encode=function(e,r){t(r)||(r={high:0,low:0});var n;return e>=0?(n=65536*Math.floor(e/65536),r.high=n,r.low=e-n):(n=65536*Math.floor(-e/65536),r.high=-n,r.low=e+n),r};var n={high:0,low:0};r.fromCartesian=function(e,i){t(i)||(i=new r);var a=i.high,o=i.low;return r.encode(e.x,n),a.x=n.high,o.x=n.low,r.encode(e.y,n),a.y=n.high,o.y=n.low,r.encode(e.z,n),a.z=n.high,o.z=n.low,i};var i=new r;return r.writeElements=function(e,t,n){r.fromCartesian(e,i);var a=i.high,o=i.low;t[n]=a.x,t[n+1]=a.y,t[n+2]=a.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z},r}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(e){switch(e){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(t){return e(t)&&(t===i.UNSIGNED_BYTE||t===i.UNSIGNED_SHORT||t===i.UNSIGNED_INT)},i.createTypedArray=function(e,t){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},i.createTypedArrayFromArrayBuffer=function(e,t,r,i){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,r,i):new Uint16Array(t,r,i)},r(i)}),define("Core/Tipsify",["./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};return r.calculateACMR=function(r){r=e(r,e.EMPTY_OBJECT);var n=r.indices,i=r.maximumIndex,a=e(r.cacheSize,24),o=n.length;if(!t(i)){i=0;for(var u=0,s=n[u];o>u;)s>i&&(i=s),++u,s=n[u]}for(var c=[],l=0;i+1>l;l++)c[l]=0;for(var f=a+1,h=0;o>h;++h)f-c[n[h]]>a&&(c[n[h]]=f,++f);return(f-a+1)/(o/3)},r.tipsify=function(r){function n(e,t,r,n){for(;t.length>=1;){var i=t[t.length-1];if(t.splice(t.length-1,1),e[i].numLiveTriangles>0)return i}for(;n>a;){if(e[a].numLiveTriangles>0)return++a,a-1;++a}return-1}function i(e,t,r,i,a,o,u){for(var s,c=-1,l=-1,f=0;f<r.length;){var h=r[f];i[h].numLiveTriangles&&(s=0,a-i[h].timeStamp+2*i[h].numLiveTriangles<=t&&(s=a-i[h].timeStamp),(s>l||-1===l)&&(l=s,c=h)),++f}return-1===c?n(i,o,e,u):c}r=e(r,e.EMPTY_OBJECT);var a,o=r.indices,u=r.maximumIndex,s=e(r.cacheSize,24),c=o.length,l=0,f=0,h=o[f],d=c;if(t(u))l=u+1;else{for(;d>f;)h>l&&(l=h),++f,h=o[f];if(-1===l)return 0;++l}for(var p=[],m=0;l>m;m++)p[m]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};f=0;for(var y=0;d>f;)p[o[f]].vertexTriangles.push(y),++p[o[f]].numLiveTriangles,p[o[f+1]].vertexTriangles.push(y),++p[o[f+1]].numLiveTriangles,p[o[f+2]].vertexTriangles.push(y),++p[o[f+2]].numLiveTriangles,++y,f+=3;var v=0,g=s+1;a=1;var w,x,E=[],S=[],O=0,T=[],_=c/3,M=[];for(m=0;_>m;m++)M[m]=!1;for(var P,b;-1!==v;){E=[],x=p[v],b=x.vertexTriangles.length; +for(var N=0;b>N;++N)if(y=x.vertexTriangles[N],!M[y]){M[y]=!0,f=y+y+y;for(var A=0;3>A;++A)P=o[f],E.push(P),S.push(P),T[O]=P,++O,w=p[P],--w.numLiveTriangles,g-w.timeStamp>s&&(w.timeStamp=g,++g),++f}v=i(o,s,E,p,g,S,l)}return T},r}),define("Core/GeometryPipeline",["./AttributeCompression","./barycentricCoordinates","./BoundingSphere","./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EncodedCartesian3","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryInstance","./GeometryType","./IndexDatatype","./Intersect","./IntersectionTests","./Math","./Matrix3","./Matrix4","./Plane","./PrimitiveType","./Tipsify"],function(e,t,r,n,i,a,o,u,s,c,l,f,h,d,p,m,y,v,g,w,x,E,S,O,T,_){"use strict";function M(e,t,r,n,i){e[t++]=r,e[t++]=n,e[t++]=n,e[t++]=i,e[t++]=i,e[t]=r}function P(e){for(var t=e.length,r=6*(t/3),n=v.createTypedArray(t,r),i=0,a=0;t>a;a+=3,i+=6)M(n,i,e[a],e[a+1],e[a+2]);return n}function b(e){var t=e.length;if(t>=3){var r=6*(t-2),n=v.createTypedArray(t,r);M(n,0,e[0],e[1],e[2]);for(var i=6,a=3;t>a;++a,i+=6)M(n,i,e[a-1],e[a],e[a-2]);return n}return new Uint16Array}function N(e){if(e.length>0){for(var t=e.length-1,r=6*(t-1),n=v.createTypedArray(t,r),i=e[0],a=0,o=1;t>o;++o,a+=6)M(n,a,i,e[o],e[o+1]);return n}return new Uint16Array}function A(e){var t={};for(var r in e)if(e.hasOwnProperty(r)&&c(e[r])&&c(e[r].values)){var n=e[r];t[r]=new p({componentDatatype:n.componentDatatype,componentsPerAttribute:n.componentsPerAttribute,normalize:n.normalize,values:[]})}return t}function I(e,t,r){for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values))for(var i=t[n],a=0;a<i.componentsPerAttribute;++a)e[n].values.push(i.values[r*i.componentsPerAttribute+a])}function R(e,t){if(c(t))for(var r=t.values,n=r.length,a=0;n>a;a+=3)i.unpack(r,a,at),S.multiplyByPoint(e,at,at),i.pack(at,r,a)}function z(e,t){if(c(t))for(var r=t.values,n=r.length,a=0;n>a;a+=3)i.unpack(r,a,at),E.multiplyByVector(e,at,at),at=i.normalize(at,at),i.pack(at,r,a)}function C(e,t){var r,n=e.length,i={},a=e[0][t].attributes;for(r in a)if(a.hasOwnProperty(r)&&c(a[r])&&c(a[r].values)){for(var o=a[r],s=o.values.length,l=!0,f=1;n>f;++f){var h=e[f][t].attributes[r];if(!c(h)||o.componentDatatype!==h.componentDatatype||o.componentsPerAttribute!==h.componentsPerAttribute||o.normalize!==h.normalize){l=!1;break}s+=h.values.length}l&&(i[r]=new p({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:u.createTypedArray(o.componentDatatype,s)}))}return i}function D(e,t){var n,a,o,u,s=e.length;e[0].modelMatrix;var l,f,h,p=c(e[0][t].indices),m=e[0][t].primitiveType,y=C(e,t);for(n in y)if(y.hasOwnProperty(n))for(l=y[n].values,u=0,a=0;s>a;++a)for(f=e[a][t].attributes[n].values,h=f.length,o=0;h>o;++o)l[u++]=f[o];var g;if(p){var w=0;for(a=0;s>a;++a)w+=e[a][t].indices.length;var x=d.computeNumberOfVertices(new d({attributes:y,primitiveType:T.POINTS})),E=v.createTypedArray(x,w),S=0,O=0;for(a=0;s>a;++a){var _=e[a][t].indices,M=_.length;for(u=0;M>u;++u)E[S++]=O+_[u];O+=d.computeNumberOfVertices(e[a][t])}g=E}var P,b=new i,N=0;for(a=0;s>a;++a){if(P=e[a][t].boundingSphere,!c(P)){b=void 0;break}i.add(P.center,b,b)}if(c(b))for(i.divideByScalar(b,s,b),a=0;s>a;++a){P=e[a][t].boundingSphere;var A=i.magnitude(i.subtract(P.center,b,st))+P.radius;A>N&&(N=A)}return new d({attributes:y,indices:g,primitiveType:m,boundingSphere:c(b)?new r(b,N):void 0})}function L(e){if(c(e.indices))return e;for(var t=d.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function q(e){var t=d.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=1,r[1]=0,r[2]=2;for(var n=3,i=3;t>i;++i)r[n++]=i-1,r[n++]=0,r[n++]=i;return e.indices=r,e.primitiveType=T.TRIANGLES,e}function U(e){var t=d.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=0,r[1]=1,r[2]=2,t>3&&(r[3]=0,r[4]=2,r[5]=3);for(var n=6,i=3;t-1>i;i+=2)r[n++]=i,r[n++]=i-1,r[n++]=i+1,t>i+2&&(r[n++]=i,r[n++]=i+1,r[n++]=i+2);return e.indices=r,e.primitiveType=T.TRIANGLES,e}function B(e){if(c(e.indices))return e;for(var t=d.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function F(e){var t=d.computeNumberOfVertices(e),r=v.createTypedArray(t,2*(t-1));r[0]=0,r[1]=1;for(var n=2,i=2;t>i;++i)r[n++]=i-1,r[n++]=i;return e.indices=r,e.primitiveType=T.LINES,e}function W(e){var t=d.computeNumberOfVertices(e),r=v.createTypedArray(t,2*t);r[0]=0,r[1]=1;for(var n=2,i=2;t>i;++i)r[n++]=i-1,r[n++]=i;return r[n++]=t-1,r[n]=0,e.indices=r,e.primitiveType=T.LINES,e}function G(e){switch(e.primitiveType){case T.TRIANGLE_FAN:return q(e);case T.TRIANGLE_STRIP:return U(e);case T.TRIANGLES:return L(e);case T.LINE_STRIP:return F(e);case T.LINE_LOOP:return W(e);case T.LINES:return B(e)}return e}function k(e,t){Math.abs(e.y)<x.EPSILON6&&(e.y=t?-x.EPSILON6:x.EPSILON6)}function V(e,t,r){if(0!==e.y&&0!==t.y&&0!==r.y)return k(e,e.y<0),k(t,t.y<0),k(r,r.y<0),void 0;var n,i=Math.abs(e.y),a=Math.abs(t.y),o=Math.abs(r.y);n=i>a?i>o?x.sign(e.y):x.sign(r.y):a>o?x.sign(t.y):x.sign(r.y);var u=0>n;k(e,u),k(t,u),k(r,u)}function H(e,t,r,n){i.add(e,i.multiplyByScalar(i.subtract(t,e,xt),e.y/(e.y-t.y),xt),r),i.clone(r,n),k(r,!0),k(n,!1)}function Y(e,t,r){if(e.x>=0||t.x>=0||r.x>=0)return void 0;V(e,t,r);var n=e.y<0,i=t.y<0,a=r.y<0,o=0;o+=n?1:0,o+=i?1:0,o+=a?1:0;var u=_t.indices;1===o?(u[1]=3,u[2]=4,u[5]=6,u[7]=6,u[8]=5,n?(H(e,t,Et,Ot),H(e,r,St,Tt),u[0]=0,u[3]=1,u[4]=2,u[6]=1):i?(H(t,r,Et,Ot),H(t,e,St,Tt),u[0]=1,u[3]=2,u[4]=0,u[6]=2):a&&(H(r,e,Et,Ot),H(r,t,St,Tt),u[0]=2,u[3]=0,u[4]=1,u[6]=0)):2===o&&(u[2]=4,u[4]=4,u[5]=3,u[7]=5,u[8]=6,n?i?a||(H(r,e,Et,Ot),H(r,t,St,Tt),u[0]=0,u[1]=1,u[3]=0,u[6]=2):(H(t,r,Et,Ot),H(t,e,St,Tt),u[0]=2,u[1]=0,u[3]=2,u[6]=1):(H(e,t,Et,Ot),H(e,r,St,Tt),u[0]=1,u[1]=2,u[3]=1,u[6]=0));var s=_t.positions;return s[0]=e,s[1]=t,s[2]=r,s.length=3,(1===o||2===o)&&(s[3]=Et,s[4]=St,s[5]=Ot,s[6]=Tt,s.length=7),_t}function j(e,t){var n=e.attributes;if(0===n.position.values.length)return void 0;for(var i in n)if(n.hasOwnProperty(i)&&c(n[i])&&c(n[i].values)){var a=n[i];a.values=u.createTypedArray(a.componentDatatype,a.values)}var o=d.computeNumberOfVertices(e);return e.indices=v.createTypedArray(o,e.indices),t&&(e.boundingSphere=r.fromVertices(n.position.values)),e}function Z(e){var t=e.attributes,r={};for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values)){var i=t[n];r[n]=new p({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return new d({attributes:r,indices:[],primitiveType:e.primitiveType})}function X(e,t,r){var n=c(e.geometry.boundingSphere);t=j(t,n),r=j(r,n),c(r)&&!c(t)?e.geometry=r:!c(r)&&c(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=r,e.geometry=void 0)}function J(e,r,a,o,u,s,l,f,h,d,p){if(c(s)||c(l)||c(f)||c(h)){var m=i.fromArray(u,3*e,Mt),y=i.fromArray(u,3*r,Pt),v=i.fromArray(u,3*a,bt),g=t(o,m,y,v,Nt);if(c(s)){var w=i.fromArray(s,3*e,Mt),x=i.fromArray(s,3*r,Pt),E=i.fromArray(s,3*a,bt);i.multiplyByScalar(w,g.x,w),i.multiplyByScalar(x,g.y,x),i.multiplyByScalar(E,g.z,E);var S=i.add(w,x,w);i.add(S,E,S),i.normalize(S,S),i.pack(S,d.normal.values,3*p)}if(c(l)){var O=i.fromArray(l,3*e,Mt),T=i.fromArray(l,3*r,Pt),_=i.fromArray(l,3*a,bt);i.multiplyByScalar(O,g.x,O),i.multiplyByScalar(T,g.y,T),i.multiplyByScalar(_,g.z,_);var M=i.add(O,T,O);i.add(M,_,M),i.normalize(M,M),i.pack(M,d.binormal.values,3*p)}if(c(f)){var P=i.fromArray(f,3*e,Mt),b=i.fromArray(f,3*r,Pt),N=i.fromArray(f,3*a,bt);i.multiplyByScalar(P,g.x,P),i.multiplyByScalar(b,g.y,b),i.multiplyByScalar(N,g.z,N);var A=i.add(P,b,P);i.add(A,N,A),i.normalize(A,A),i.pack(A,d.tangent.values,3*p)}if(c(h)){var I=n.fromArray(h,2*e,At),R=n.fromArray(h,2*r,It),z=n.fromArray(h,2*a,Rt);n.multiplyByScalar(I,g.x,I),n.multiplyByScalar(R,g.y,R),n.multiplyByScalar(z,g.z,z);var C=n.add(I,R,I);n.add(C,z,C),n.pack(C,d.st.values,2*p)}}}function K(e,t,r,n,i,a){var o=e.position.values.length/3;if(-1!==i){var u=n[i],s=r[u];return-1===s?(r[u]=o,e.position.values.push(a.x,a.y,a.z),t.push(o),o):(t.push(s),s)}return e.position.values.push(a.x,a.y,a.z),t.push(o),o}function Q(e){var t,r,n,a,o,u=e.geometry,s=u.attributes,l=s.position.values,f=c(s.normal)?s.normal.values:void 0,h=c(s.binormal)?s.binormal.values:void 0,d=c(s.tangent)?s.tangent.values:void 0,p=c(s.st)?s.st.values:void 0,m=u.indices,y=Z(u),v=Z(u),g=[];g.length=l.length/3;var w=[];for(w.length=l.length/3,o=0;o<g.length;++o)g[o]=-1,w[o]=-1;var x=m.length;for(o=0;x>o;o+=3){var E=m[o],S=m[o+1],O=m[o+2],T=i.fromArray(l,3*E),_=i.fromArray(l,3*S),M=i.fromArray(l,3*O),P=Y(T,_,M);if(c(P)&&P.positions.length>3)for(var b=P.positions,N=P.indices,A=N.length,I=0;A>I;++I){var R=N[I],z=b[R];z.y<0?(t=v.attributes,r=v.indices,n=g):(t=y.attributes,r=y.indices,n=w),a=K(t,r,n,m,3>R?o+R:-1,z),J(E,S,O,z,l,f,h,d,p,t,a)}else c(P)&&(T=P.positions[0],_=P.positions[1],M=P.positions[2]),T.y<0?(t=v.attributes,r=v.indices,n=g):(t=y.attributes,r=y.indices,n=w),a=K(t,r,n,m,o,T),J(E,S,O,T,l,f,h,d,p,t,a),a=K(t,r,n,m,o+1,_),J(E,S,O,_,l,f,h,d,p,t,a),a=K(t,r,n,m,o+2,M),J(E,S,O,M,l,f,h,d,p,t,a)}X(e,v,y)}function $(e){var t,r=e.geometry,n=r.attributes,a=n.position.values,o=r.indices,u=Z(r),s=Z(r),l=o.length,f=[];f.length=a.length/3;var h=[];for(h.length=a.length/3,t=0;t<f.length;++t)f[t]=-1,h[t]=-1;for(t=0;l>t;t+=2){var d=o[t],p=o[t+1],m=i.fromArray(a,3*d,Mt),y=i.fromArray(a,3*p,Pt);Math.abs(m.y)<x.EPSILON6&&(m.y=m.y<0?-x.EPSILON6:x.EPSILON6),Math.abs(y.y)<x.EPSILON6&&(y.y=y.y<0?-x.EPSILON6:x.EPSILON6);var v=u.attributes,g=u.indices,E=h,S=s.attributes,O=s.indices,T=f,_=w.lineSegmentPlane(m,y,zt,bt);if(c(_)){var M=i.multiplyByScalar(i.UNIT_Y,5*x.EPSILON9,Ct);m.y<0&&(i.negate(M,M),v=s.attributes,g=s.indices,E=f,S=u.attributes,O=u.indices,T=h);var P=i.add(_,M,Dt);K(v,g,E,o,t,m),K(v,g,E,o,-1,P),i.negate(M,M),i.add(_,M,P),K(S,O,T,o,-1,P),K(S,O,T,o,t+1,y)}else{var b,N,A;m.y<0?(b=s.attributes,N=s.indices,A=f):(b=u.attributes,N=u.indices,A=h),K(b,N,A,o,t,m),K(b,N,A,o,t+1,y)}}X(e,s,u)}function et(e){var t=e.geometry,r=t.attributes,o=r.position.values,u=r.prevPosition.values,s=r.nextPosition.values,l=r.expandAndWidth.values;t.indices;var f,h,d,p=c(r.st)?r.st.values:void 0,m=c(r.color)?r.color.values:void 0,y=Z(t),v=Z(t),g=o.length/3;for(f=0;g>f;f+=4){var E=f,S=f+1,O=f+2,T=f+3,_=i.fromArray(o,3*E,Ut),M=i.fromArray(o,3*S,Bt),P=i.fromArray(o,3*O,Ft),b=i.fromArray(o,3*T,Wt);Math.abs(_.y)<x.EPSILON6&&(_.y=x.EPSILON6*(P.y<0?-1:1),M.y=_.y),Math.abs(P.y)<x.EPSILON6&&(P.y=x.EPSILON6*(_.y<0?-1:1),b.y=P.y);var N=y.attributes,A=y.indices,I=v.attributes,R=v.indices,z=w.lineSegmentPlane(_,P,zt,Gt);if(c(z)){var C=i.multiplyByScalar(i.UNIT_Y,5*x.EPSILON9,kt);_.y<0&&(i.negate(C,C),N=v.attributes,A=v.indices,I=y.attributes,R=y.indices);var D=i.add(z,C,Vt);for(N.position.values.push(_.x,_.y,_.z,M.x,M.y,M.z),N.position.values.push(D.x,D.y,D.z),N.position.values.push(D.x,D.y,D.z),i.negate(C,C),i.add(z,C,D),I.position.values.push(D.x,D.y,D.z),I.position.values.push(D.x,D.y,D.z),I.position.values.push(P.x,P.y,P.z,b.x,b.y,b.z),h=3*E;3*E+6>h;++h)N.prevPosition.values.push(u[h]);for(N.prevPosition.values.push(_.x,_.y,_.z,_.x,_.y,_.z),I.prevPosition.values.push(_.x,_.y,_.z,_.x,_.y,_.z),h=3*O;3*O+6>h;++h)I.prevPosition.values.push(u[h]);for(h=3*E;3*E+6>h;++h)N.nextPosition.values.push(s[h]);for(N.nextPosition.values.push(P.x,P.y,P.z,P.x,P.y,P.z),I.nextPosition.values.push(P.x,P.y,P.z,P.x,P.y,P.z),h=3*O;3*O+6>h;++h)I.nextPosition.values.push(s[h]);var L=n.fromArray(l,2*E,Lt),q=Math.abs(L.y);N.expandAndWidth.values.push(-1,q,1,q),N.expandAndWidth.values.push(-1,-q,1,-q),I.expandAndWidth.values.push(-1,q,1,q),I.expandAndWidth.values.push(-1,-q,1,-q);var U=i.magnitudeSquared(i.subtract(z,_,Wt));if(U/=i.magnitudeSquared(i.subtract(P,_,Wt)),c(m)){var B=a.fromArray(m,4*E,Ht),F=a.fromArray(m,4*O,Ht),W=x.lerp(B.x,F.x,U),G=x.lerp(B.y,F.y,U),k=x.lerp(B.z,F.z,U),V=x.lerp(B.w,F.w,U);for(h=4*E;4*E+8>h;++h)N.color.values.push(m[h]);for(N.color.values.push(W,G,k,V),N.color.values.push(W,G,k,V),I.color.values.push(W,G,k,V),I.color.values.push(W,G,k,V),h=4*O;4*O+8>h;++h)I.color.values.push(m[h])}if(c(p)){var H=n.fromArray(p,2*E,Lt),Y=n.fromArray(p,2*(f+3),qt),j=x.lerp(H.x,Y.x,U);for(h=2*E;2*E+4>h;++h)N.st.values.push(p[h]);for(N.st.values.push(j,H.y),N.st.values.push(j,Y.y),I.st.values.push(j,H.y),I.st.values.push(j,Y.y),h=2*O;2*O+4>h;++h)I.st.values.push(p[h])}d=N.position.values.length/3-4,A.push(d,d+2,d+1),A.push(d+1,d+2,d+3),d=I.position.values.length/3-4,R.push(d,d+2,d+1),R.push(d+1,d+2,d+3)}else{var J,K;for(_.y<0?(J=v.attributes,K=v.indices):(J=y.attributes,K=y.indices),J.position.values.push(_.x,_.y,_.z),J.position.values.push(M.x,M.y,M.z),J.position.values.push(P.x,P.y,P.z),J.position.values.push(b.x,b.y,b.z),h=3*f;3*f+12>h;++h)J.prevPosition.values.push(u[h]),J.nextPosition.values.push(s[h]);for(h=2*f;2*f+8>h;++h)J.expandAndWidth.values.push(l[h]),c(p)&&J.st.values.push(p[h]);if(c(m))for(h=4*f;4*f+16>h;++h)J.color.values.push(m[h]);d=J.position.values.length/3-4,K.push(d,d+2,d+1),K.push(d+1,d+2,d+3)}}X(e,v,y)}var tt={};tt.toWireframe=function(e){var t=e.indices;if(c(t)){switch(e.primitiveType){case T.TRIANGLES:e.indices=P(t);break;case T.TRIANGLE_STRIP:e.indices=b(t);break;case T.TRIANGLE_FAN:e.indices=N(t);break;default:throw new l("geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.")}e.primitiveType=T.LINES}return e},tt.createLineSegmentsForVectors=function(e,t,n){t=s(t,"normal"),n=s(n,1e4);for(var i=e.attributes.position.values,a=e.attributes[t].values,o=i.length,l=new Float64Array(2*o),f=0,h=0;o>h;h+=3)l[f++]=i[h],l[f++]=i[h+1],l[f++]=i[h+2],l[f++]=i[h]+a[h]*n,l[f++]=i[h+1]+a[h+1]*n,l[f++]=i[h+2]+a[h+2]*n;var m,y=e.boundingSphere;return c(y)&&(m=new r(y.center,y.radius+n)),new d({attributes:{position:new p({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:l})},primitiveType:T.LINES,boundingSphere:m})},tt.createAttributeLocations=function(e){var t,r=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","binormal","tangent","compressedAttributes"],n=e.attributes,i={},a=0,o=r.length;for(t=0;o>t;++t){var u=r[t];c(n[u])&&(i[u]=a++)}for(var s in n)n.hasOwnProperty(s)&&!c(i[s])&&(i[s]=a++);return i},tt.reorderForPreVertexCache=function(e){var t=d.computeNumberOfVertices(e),r=e.indices;if(c(r)){for(var n=new Int32Array(t),i=0;t>i;i++)n[i]=-1;for(var a,o=r,s=o.length,l=v.createTypedArray(t,s),f=0,h=0,p=0;s>f;)a=n[o[f]],-1!==a?l[h]=a:(a=o[f],n[a]=p,l[h]=p,++p),++f,++h;e.indices=l;var m=e.attributes;for(var y in m)if(m.hasOwnProperty(y)&&c(m[y])&&c(m[y].values)){for(var g=m[y],w=g.values,x=0,E=g.componentsPerAttribute,S=u.createTypedArray(g.componentDatatype,p*E);t>x;){var O=n[x];if(-1!==O)for(i=0;E>i;i++)S[E*O+i]=w[E*x+i];++x}g.values=S}}return e},tt.reorderForPostVertexCache=function(e,t){var r=e.indices;if(e.primitiveType===T.TRIANGLES&&c(r)){for(var n=r.length,i=0,a=0;n>a;a++)r[a]>i&&(i=r[a]);e.indices=_.tipsify({indices:r,maximumIndex:i,cacheSize:t})}return e},tt.fitToUnsignedShortIndices=function(e){var t=[],r=d.computeNumberOfVertices(e);if(c(e.indices)&&r>x.SIXTY_FOUR_KILOBYTES){var n,i=[],a=[],o=0,u=A(e.attributes),s=e.indices,l=s.length;e.primitiveType===T.TRIANGLES?n=3:e.primitiveType===T.LINES?n=2:e.primitiveType===T.POINTS&&(n=1);for(var f=0;l>f;f+=n){for(var h=0;n>h;++h){var p=s[f+h],m=i[p];c(m)||(m=o++,i[p]=m,I(u,e.attributes,p)),a.push(m)}o+n>x.SIXTY_FOUR_KILOBYTES&&(t.push(new d({attributes:u,indices:a,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),i=[],a=[],o=0,u=A(e.attributes))}0!==a.length&&t.push(new d({attributes:u,indices:a,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var rt=new i,nt=new o;tt.projectTo2D=function(e,t,r,n,a){var o=e.attributes[t];a=c(a)?a:new h;for(var s=a.ellipsoid,f=o.values,d=new Float64Array(f.length),m=0,y=0;y<f.length;y+=3){var v=i.fromArray(f,y,rt),g=s.cartesianToCartographic(v,nt);if(!c(g))throw new l("Could not project point ("+v.x+", "+v.y+", "+v.z+") to 2D.");var w=a.project(g,rt);d[m++]=w.x,d[m++]=w.y,d[m++]=w.z}return e.attributes[r]=o,e.attributes[n]=new p({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:d}),delete e.attributes[t],e};var it={high:0,low:0};tt.encodeAttribute=function(e,t,r,n){for(var i=e.attributes[t],a=i.values,o=a.length,s=new Float32Array(o),c=new Float32Array(o),l=0;o>l;++l)f.encode(a[l],it),s[l]=it.high,c[l]=it.low;var h=i.componentsPerAttribute;return e.attributes[r]=new p({componentDatatype:u.FLOAT,componentsPerAttribute:h,values:s}),e.attributes[n]=new p({componentDatatype:u.FLOAT,componentsPerAttribute:h,values:c}),delete e.attributes[t],e};var at=new i,ot=new S,ut=new E;tt.transformToWorldCoordinates=function(e){var t=e.modelMatrix;if(S.equals(t,S.IDENTITY))return e;var n=e.geometry.attributes;R(t,n.position),R(t,n.prevPosition),R(t,n.nextPosition),(c(n.normal)||c(n.binormal)||c(n.tangent))&&(S.inverse(t,ot),S.transpose(ot,ot),S.getRotation(ot,ut),z(ut,n.normal),z(ut,n.binormal),z(ut,n.tangent));var i=e.geometry.boundingSphere;return c(i)&&(e.geometry.boundingSphere=r.transform(i,t,i)),e.modelMatrix=S.clone(S.IDENTITY),e};var st=new i;tt.combineInstances=function(e){for(var t=[],r=[],n=e.length,i=0;n>i;++i){var a=e[i];c(a.geometry)?t.push(a):r.push(a)}var o=[];return t.length>0&&o.push(D(t,"geometry")),r.length>0&&(o.push(D(r,"westHemisphereGeometry")),o.push(D(r,"eastHemisphereGeometry"))),o};var ct=new i,lt=new i,ft=new i,ht=new i;tt.computeNormal=function(e){for(var t=e.indices,r=e.attributes,n=r.position.values,a=r.position.values.length/3,o=t.length,s=new Array(a),c=new Array(o/3),l=new Array(o),f=0;a>f;f++)s[f]={indexOffset:0,count:0,currentCount:0};var h=0;for(f=0;o>f;f+=3){var d=t[f],m=t[f+1],y=t[f+2],v=3*d,g=3*m,w=3*y;lt.x=n[v],lt.y=n[v+1],lt.z=n[v+2],ft.x=n[g],ft.y=n[g+1],ft.z=n[g+2],ht.x=n[w],ht.y=n[w+1],ht.z=n[w+2],s[d].count++,s[m].count++,s[y].count++,i.subtract(ft,lt,ft),i.subtract(ht,lt,ht),c[h]=i.cross(ft,ht,new i),h++}var x=0;for(f=0;a>f;f++)s[f].indexOffset+=x,x+=s[f].count;h=0;var E;for(f=0;o>f;f+=3){E=s[t[f]];var S=E.indexOffset+E.currentCount;l[S]=h,E.currentCount++,E=s[t[f+1]],S=E.indexOffset+E.currentCount,l[S]=h,E.currentCount++,E=s[t[f+2]],S=E.indexOffset+E.currentCount,l[S]=h,E.currentCount++,h++}var O=new Float32Array(3*a);for(f=0;a>f;f++){var T=3*f;if(E=s[f],E.count>0){for(i.clone(i.ZERO,ct),h=0;h<E.count;h++)i.add(ct,c[l[E.indexOffset+h]],ct);i.normalize(ct,ct),O[T]=ct.x,O[T+1]=ct.y,O[T+2]=ct.z}else O[T]=0,O[T+1]=0,O[T+2]=1}return e.attributes.normal=new p({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:O}),e};var dt=new i,pt=new i,mt=new i;tt.computeBinormalAndTangent=function(e){e.attributes;for(var t=e.indices,r=e.attributes.position.values,n=e.attributes.normal.values,a=e.attributes.st.values,o=e.attributes.position.values.length/3,s=t.length,c=new Array(3*o),l=0;l<c.length;l++)c[l]=0;var f,h,d;for(l=0;s>l;l+=3){var m=t[l],y=t[l+1],v=t[l+2];f=3*m,h=3*y,d=3*v;var g=2*m,w=2*y,x=2*v,E=r[f],S=r[f+1],O=r[f+2],T=a[g],_=a[g+1],M=a[w+1]-_,P=a[x+1]-_,b=1/((a[w]-T)*P-(a[x]-T)*M),N=(P*(r[h]-E)-M*(r[d]-E))*b,A=(P*(r[h+1]-S)-M*(r[d+1]-S))*b,I=(P*(r[h+2]-O)-M*(r[d+2]-O))*b;c[f]+=N,c[f+1]+=A,c[f+2]+=I,c[h]+=N,c[h+1]+=A,c[h+2]+=I,c[d]+=N,c[d+1]+=A,c[d+2]+=I}var R=new Float32Array(3*o),z=new Float32Array(3*o);for(l=0;o>l;l++){f=3*l,h=f+1,d=f+2;var C=i.fromArray(n,f,dt),D=i.fromArray(c,f,mt),L=i.dot(C,D);i.multiplyByScalar(C,L,pt),i.normalize(i.subtract(D,pt,D),D),z[f]=D.x,z[h]=D.y,z[d]=D.z,i.normalize(i.cross(C,D,D),D),R[f]=D.x,R[h]=D.y,R[d]=D.z}return e.attributes.tangent=new p({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:z}),e.attributes.binormal=new p({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:R}),e};var yt=new n,vt=new i,gt=new i,wt=new i;tt.compressVertices=function(t){var r=t.attributes.normal,a=t.attributes.st;if(!c(r)&&!c(a))return t;var o,s,l,f,h=t.attributes.tangent,d=t.attributes.binormal;c(r)&&(o=r.values),c(a)&&(s=a.values),c(h)&&(l=h.values),d&&(f=d.values);var m=c(o)?o.length:s.length,y=c(o)?3:2,v=m/y,g=v,w=c(s)&&c(o)?2:1;w+=c(l)||c(f)?1:0,g*=w;for(var x=new Float32Array(g),E=0,S=0;v>S;++S){c(s)&&(n.fromArray(s,2*S,yt),x[E++]=e.compressTextureCoordinates(yt));var O=3*S;c(o)&&c(l)&&c(f)?(i.fromArray(o,O,vt),i.fromArray(l,O,gt),i.fromArray(f,O,wt),e.octPack(vt,gt,wt,yt),x[E++]=yt.x,x[E++]=yt.y):(c(o)&&(i.fromArray(o,O,vt),x[E++]=e.octEncodeFloat(vt)),c(l)&&(i.fromArray(l,O,vt),x[E++]=e.octEncodeFloat(vt)),c(f)&&(i.fromArray(f,O,vt),x[E++]=e.octEncodeFloat(vt)))}return t.attributes.compressedAttributes=new p({componentDatatype:u.FLOAT,componentsPerAttribute:w,values:x}),c(o)&&delete t.attributes.normal,c(s)&&delete t.attributes.st,c(l)&&delete t.attributes.tangent,c(f)&&delete t.attributes.binormal,t};var xt=new i,Et=new i,St=new i,Ot=new i,Tt=new i,_t={positions:new Array(7),indices:new Array(9)},Mt=new i,Pt=new i,bt=new i,Nt=new i,At=new n,It=new n,Rt=new n,zt=O.fromPointNormal(i.ZERO,i.UNIT_Y),Ct=new i,Dt=new i,Lt=new n,qt=new n,Ut=new i,Bt=new i,Ft=new i,Wt=new i,Gt=new i,kt=new i,Vt=new i,Ht=new a;return new a,tt.splitLongitude=function(e){var t=e.geometry,n=t.boundingSphere;if(c(n)){var i=n.center.x-n.radius;if(i>0||r.intersectPlane(n,O.ORIGIN_ZX_PLANE)!==g.INTERSECTING)return e}if(t.geometryType!==y.NONE)switch(t.geometryType){case y.POLYLINES:et(e);break;case y.TRIANGLES:Q(e);break;case y.LINES:$(e)}else G(t),t.primitiveType===T.TRIANGLES?Q(e):t.primitiveType===T.LINES&&$(e);return e},tt}),define("Core/PolygonGeometryLibrary",["./Cartesian3","./defaultValue","./defined","./Ellipsoid"],function(e,t,r,n){"use strict";function i(t,r,n,i){return e.subtract(r,t,o),e.multiplyByScalar(o,n/i,o),e.add(t,o,o),[o.x,o.y,o.z]}var a={};a.computeHierarchyPackedLength=function(t){for(var n=0,i=[t];i.length>0;){var a=i.pop();if(r(a)){n+=2;var o=a.positions,u=a.holes;if(r(o)&&(n+=o.length*e.packedLength),r(u))for(var s=u.length,c=0;s>c;++c)i.push(u[c])}}return n},a.packPolygonHierarchy=function(t,n,i){for(var a=[t];a.length>0;){var o=a.pop();if(r(o)){var u=o.positions,s=o.holes;if(n[i++]=r(u)?u.length:0,n[i++]=r(s)?s.length:0,r(u))for(var c=u.length,l=0;c>l;++l,i+=3)e.pack(u[l],n,i);if(r(s))for(var f=s.length,h=0;f>h;++h)a.push(s[h])}}return i},a.unpackPolygonHierarchy=function(t,r){for(var n=t[r++],i=t[r++],o=new Array(n),u=i>0?new Array(i):void 0,s=0;n>s;++s,r+=e.packedLength)o[s]=e.unpack(t,r);for(var c=0;i>c;++c)u[c]=a.unpackPolygonHierarchy(t,r),r=u[c].startingIndex,delete u[c].startingIndex;return{positions:o,holes:u,startingIndex:r}};var o=new e;a.subdivideLineCount=function(t,r,n){var i=e.distance(t,r),a=i/n,o=Math.max(0,Math.ceil(Math.log(a)/Math.log(2)));return Math.pow(2,o)},a.subdivideLine=function(t,n,o,u){var s=a.subdivideLineCount(t,n,o),c=e.distance(t,n),l=c/s;r(u)||(u=[]);var f=u;f.length=3*s;for(var h=0,d=0;s>d;d++){var p=i(t,n,d*l,c);f[h++]=p[0],f[h++]=p[1],f[h++]=p[2]}return f};var u=new e,s=new e,c=new e,l=new e;return a.scaleToGeodeticHeightExtruded=function(i,a,o,f,h){f=t(f,n.WGS84);var d=u,p=s,m=c,y=l;if(r(i)&&r(i.attributes)&&r(i.attributes.position))for(var v=i.attributes.position.values,g=v.length/2,w=0;g>w;w+=3)e.fromArray(v,w,m),f.geodeticSurfaceNormal(m,d),y=f.scaleToGeodeticSurface(m,y),p=e.multiplyByScalar(d,o,p),p=e.add(y,p,p),v[w+g]=p.x,v[w+1+g]=p.y,v[w+2+g]=p.z,h&&(y=e.clone(m,y)),p=e.multiplyByScalar(d,a,p),p=e.add(y,p,p),v[w]=p.x,v[w+1]=p.y,v[w+2]=p.z;return i},a}),define("Core/pointInsideTriangle",["./barycentricCoordinates","./Cartesian3"],function(e,t){"use strict";var r=new t,n=function(t,n,i,a){return e(t,n,i,a,r),r.x>0&&r.y>0&&r.z>0};return n}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,r,n,i,a,o,u){"use strict";function s(e){var t=e._uSquared,r=e._ellipsoid.maximumRadius,n=e._ellipsoid.minimumRadius,i=(r-n)/r,a=Math.cos(e._startHeading),o=Math.sin(e._startHeading),u=(1-i)*Math.tan(e._start.latitude),s=1/Math.sqrt(1+u*u),c=s*u,l=Math.atan2(u,a),f=s*o,h=f*f,d=1-h,p=Math.sqrt(d),m=t/4,y=m*m,v=y*m,g=y*y,w=1+m-3*y/4+5*v/4-175*g/64,x=1-m+15*y/8-35*v/8,E=1-3*m+35*y/4,S=1-5*m,O=w*l-x*Math.sin(2*l)*m/2-E*Math.sin(4*l)*y/16-S*Math.sin(6*l)*v/48-5*Math.sin(8*l)*g/512,T=e._constants;T.a=r,T.b=n,T.f=i,T.cosineHeading=a,T.sineHeading=o,T.tanU=u,T.cosineU=s,T.sineU=c,T.sigma=l,T.sineAlpha=f,T.sineSquaredAlpha=h,T.cosineSquaredAlpha=d,T.cosineAlpha=p,T.u2Over4=m,T.u4Over16=y,T.u6Over64=v,T.u8Over256=g,T.a0=w,T.a1=x,T.a2=E,T.a3=S,T.distanceRatio=O}function c(e,t){return e*t*(4+e*(4-3*t))/16}function l(e,t,r,n,i,a,o){var u=c(e,r);return(1-u)*e*t*(n+u*i*(o+u*a*(2*o*o-1)))}function f(e,t,r,n,i,a,o){var s,c,f,h,d,p=(t-r)/t,m=a-n,y=Math.atan((1-p)*Math.tan(i)),v=Math.atan((1-p)*Math.tan(o)),g=Math.cos(y),w=Math.sin(y),x=Math.cos(v),E=Math.sin(v),S=g*x,O=g*E,T=w*E,_=w*x,M=m,P=u.TWO_PI,b=Math.cos(M),N=Math.sin(M);do{b=Math.cos(M),N=Math.sin(M);var A=O-_*b;f=Math.sqrt(x*x*N*N+A*A),c=T+S*b,s=Math.atan2(f,c);var I;0===f?(I=0,h=1):(I=S*N/f,h=1-I*I),P=M,d=c-2*T/h,isNaN(d)&&(d=0),M=m+l(p,I,h,s,f,c,d)}while(Math.abs(M-P)>u.EPSILON12);var R=h*(t*t-r*r)/(r*r),z=1+R*(4096+R*(R*(320-175*R)-768))/16384,C=R*(256+R*(R*(74-47*R)-128))/1024,D=d*d,L=C*f*(d+C*(c*(2*D-1)-C*d*(4*f*f-3)*(4*D-3)/6)/4),q=r*z*(s-L),U=Math.atan2(x*N,O-_*b),B=Math.atan2(g*N,O*b-_);e._distance=q,e._startHeading=U,e._endHeading=B,e._uSquared=R}function h(r,n,i,a){e.normalize(a.cartographicToCartesian(n,p),d),e.normalize(a.cartographicToCartesian(i,p),p),f(r,a.maximumRadius,a.minimumRadius,n.longitude,n.latitude,i.longitude,i.latitude),r._start=t.clone(n,r._start),r._end=t.clone(i,r._end),r._start.height=0,r._end.height=0,s(r)}var d=new e,p=new e,m=function(e,i,a){var u=r(a,o.WGS84);this._ellipsoid=u,this._start=new t,this._end=new t,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,n(e)&&n(i)&&h(this,e,i,u)};return i(m.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),m.prototype.setEndPoints=function(e,t){h(this,e,t,this._ellipsoid)},m.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)},m.prototype.interpolateUsingSurfaceDistance=function(e,r){var i=this._constants,a=i.distanceRatio+e/i.b,o=Math.cos(2*a),u=Math.cos(4*a),s=Math.cos(6*a),c=Math.sin(2*a),f=Math.sin(4*a),h=Math.sin(6*a),d=Math.sin(8*a),p=a*a,m=a*p,y=i.u8Over256,v=i.u2Over4,g=i.u6Over64,w=i.u4Over16,x=2*m*y*o/3+a*(1-v+7*w/4-15*g/4+579*y/64-(w-15*g/4+187*y/16)*o-(5*g/4-115*y/16)*u-29*y*s/16)+(v/2-w+71*g/32-85*y/16)*c+(5*w/16-5*g/4+383*y/96)*f-p*((g-11*y/2)*c+5*y*f/2)+(29*g/96-29*y/16)*h+539*y*d/1536,E=Math.asin(Math.sin(x)*i.cosineAlpha),S=Math.atan(i.a/i.b*Math.tan(E));x-=i.sigma;var O=Math.cos(2*i.sigma+x),T=Math.sin(x),_=Math.cos(x),M=i.cosineU*_,P=i.sineU*T,b=Math.atan2(T*i.sineHeading,M-P*i.cosineHeading),N=b-l(i.f,i.sineAlpha,i.cosineSquaredAlpha,x,T,_,O);return n(r)?(r.longitude=this._start.longitude+N,r.latitude=S,r.height=0,r):new t(this._start.longitude+N,S,0)},m}),define("Core/isArray",["./defined"],function(e){"use strict";var t=Array.isArray;return e(t)||(t=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(e,t,r,n,i,a,o,u,s,c,l,f){"use strict";function h(e,t,r){var n=T;n.length=e;var i;if(t===r){for(i=0;e>i;i++)n[i]=t;return n}var a=r-t,o=a/e;for(i=0;e>i;i++){var u=t+i*o;n[i]=u}return n}function d(t,r,n,i,a,o,u,s){var c=i.scaleToGeodeticSurface(t,b),l=i.scaleToGeodeticSurface(r,N),f=p.numberOfPoints(t,r,n),d=i.cartesianToCartographic(c,_),m=i.cartesianToCartographic(l,M),y=h(f,a,o);A.setEndPoints(d,m);var v=A.surfaceDistance/f,g=s;d.height=a;var w=i.cartographicToCartesian(d,P);e.pack(w,u,g),g+=3;for(var x=1;f>x;x++){var E=A.interpolateUsingSurfaceDistance(x*v,M);E.height=y[x],w=i.cartographicToCartesian(E,P),e.pack(w,u,g),g+=3}return g}var p={};p.numberOfPoints=function(t,r,n){var i=e.distance(t,r);return Math.ceil(i/n)};var m=new t;p.extractHeights=function(e,t){for(var r=e.length,n=new Array(r),i=0;r>i;i++){var a=e[i];n[i]=t.cartesianToCartographic(a,m).height}return n};var y=new l,v=new e,g=new e,w=new f(e.ZERO,0),x=new e,E=new f(e.ZERO,0),S=new e,O=new e,T=[],_=new t,M=new t,P=new e,b=new e,N=new e,A=new o;p.wrapLongitude=function(t,i){var a=[],o=[];if(n(t)&&t.length>0){i=r(i,l.IDENTITY);var s=l.inverseTransformation(i,y),c=l.multiplyByPoint(s,e.ZERO,v),h=l.multiplyByPointAsVector(s,e.UNIT_Y,g),d=f.fromPointNormal(c,h,w),p=l.multiplyByPointAsVector(s,e.UNIT_X,x),m=f.fromPointNormal(c,p,E),T=1;a.push(e.clone(t[0]));for(var _=a[0],M=t.length,P=1;M>P;++P){var b=t[P];if(f.getPointDistance(m,_)<0||f.getPointDistance(m,b)<0){var N=u.lineSegmentPlane(_,b,d,S);if(n(N)){var A=e.multiplyByScalar(h,5e-9,O);f.getPointDistance(d,_)<0&&e.negate(A,A),a.push(e.add(N,A,new e)),o.push(T+1),e.negate(A,A),a.push(e.add(N,A,new e)),T=1}}a.push(e.clone(t[P])),T++,_=b}o.push(T)}return{positions:a,lengths:o}};var I=c.EPSILON7;return p.removeDuplicates=function(t){var r=t.length;if(2>r)return t;var n,i,a;for(n=1;r>n&&(i=t[n-1],a=t[n],!e.equalsEpsilon(i,a,I));++n);if(n===r)return t;for(var o=t.slice(0,n);r>n;++n)a=t[n],e.equalsEpsilon(i,a,I)||(o.push(e.clone(a)),i=a);return o},p.generateArc=function(t){n(t)||(t={});var i=t.positions,o=i.length,u=r(t.ellipsoid,a.WGS84),l=r(t.height,0);if(1>o)return[];if(1===o){var f=u.scaleToGeodeticSurface(i[0],b);if(0!==l){var h=u.geodeticSurfaceNormal(f,P);e.multiplyByScalar(h,l,h),e.add(f,h,f)}return[f.x,f.y,f.z]}var m=t.minDistance;if(!n(m)){var y=r(t.granularity,c.RADIANS_PER_DEGREE);m=c.chordLength(y,u.maximumRadius)}var v,g=0;for(v=0;o-1>v;v++)g+=p.numberOfPoints(i[v],i[v+1],m);var w=3*(g+1),x=new Array(w),E=0,S=s(l);for(v=0;o-1>v;v++){var O=i[v],M=i[v+1],N=S?l[v]:l,A=S?l[v+1]:l;E=d(O,M,m,u,N,A,x,E)}T.length=0;var I=i[o-1],R=u.cartesianToCartographic(I,_);R.height=S?l[o-1]:l;var z=u.cartographicToCartesian(R,P);return e.pack(z,x,w-3),x},p.generateCartesianArc=function(t){for(var r=p.generateArc(t),n=r.length/3,i=new Array(n),a=0;n>a;a++)i[a]=e.unpack(r,3*a);return i},p}),define("Core/Queue",[],function(){"use strict";var e=function(){this._array=[],this._offset=0,this.length=0};return e.prototype.enqueue=function(e){this._array.push(e),this.length++},e.prototype.dequeue=function(){if(0===this.length)return void 0;var e=this._array,t=this._offset,r=e[t];return e[t]=void 0,t++,t>10&&2*t>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this.length--,r},e.prototype.contains=function(e){return-1!==this._array.indexOf(e)},e.prototype.clear=function(){this._array.length=this._offset=this.length=0},e.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)},e}),define("Core/WindingOrder",["./freezeObject"],function(e){"use strict";var t={CLOCKWISE:2304,COUNTER_CLOCKWISE:2305,validate:function(e){return e===t.CLOCKWISE||e===t.COUNTER_CLOCKWISE}};return e(t)}),define("Core/PolygonPipeline",["./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./Math","./pointInsideTriangle","./PolylinePipeline","./PrimitiveType","./Queue","./WindingOrder"],function(e,t,r,n,i,a,o,u,s,c,l,f,h,d,p,m){"use strict";function y(t,r,n){var i=e.subtract(r,t,L),a=e.subtract(n,r,q); +return i.x*a.y-i.y*a.x>=0}function v(e){for(var t=e[0].x,r=0,n=0;n<e.length;n++)e[n].x>t&&(t=e[n].x,r=n);return r}function g(e){for(var t=e[0][0].x,r=0,n=0;n<e.length;n++){var i=e[n][v(e[n])].x;i>t&&(t=i,r=n)}return r}function w(e){for(var t=[],r=0;r<e.length;r++){var n=e[(r-1+e.length)%e.length],i=e[r],a=e[(r+1)%e.length];y(n,i,a)||t.push(i)}return t}function x(t,r){for(var n=0;n<t.length;n++)if(e.equals(r,t[n]))return n;return-1}function E(r,i,a){a=n(a,[]);var o=Number.MAX_VALUE,u=v(i),s=new e(i[u].x,r.y);a.push(u),a.push((u+1)%i.length);for(var c=i[0].x,l=c,f=1;f<i.length;++f)i[f].x<c?c=i[f].x:i[f].x>l&&(l=i[f].x);l+=l-c;var h=new t(l,r.y,0);for(f=0;f<i.length;f++){var d=i[f],p=i[(f+1)%i.length];if((d.x>=r.x||p.x>=r.x)&&(d.y>=r.y&&p.y<=r.y||d.y<=r.y&&p.y>=r.y)){var m=(p.y-d.y)*(h.x-r.x)-(p.x-d.x)*(h.y-r.y);if(0!==m){m=1/m;var y=((p.x-d.x)*(r.y-d.y)-(p.y-d.y)*(r.x-d.x))*m,g=((h.x-r.x)*(r.y-d.y)-(h.y-r.y)*(r.x-d.x))*m;if(y>=0&&1>=y&&g>=0&&1>=g){var w=new e(r.x+y*(h.x-r.x),r.y+y*(h.y-r.y)),x=e.subtract(w,r,U);m=e.magnitudeSquared(x),o>m&&(s=w,o=m,a[0]=f,a[1]=(f+1)%i.length)}}}}return s}function S(t,r){var n=g(r),i=r[n],a=v(i),o=i[a],u=[],s=E(o,t,u),c=x(t,s);if(-1!==c)return c;var h=e.magnitudeSquared(e.subtract(t[u[0]],o,B)),d=e.magnitudeSquared(e.subtract(t[u[1]],o,B)),p=d>h?t[u[0]]:t[u[1]],m=w(t),y=m.indexOf(p);-1!==y&&m.splice(y,1);for(var S=[],O=0;O<m.length;O++){var T=m[O];f(T,o,s,p)&&S.push(T)}var _=Number.MAX_VALUE;if(S.length>0){var M=e.fromElements(1,0,B);for(O=0;O<S.length;O++){var P=e.subtract(S[O],o,F),b=e.magnitude(M)*e.magnitudeSquared(P);if(0!==b){var N=Math.abs(l.acosClamped(e.dot(M,P)/b));_>N&&(_=N,p=S[O])}}}return t.indexOf(p)}function O(e,r,n){for(var i=et.computeWindingOrder2D(e),a=0;a<r.length;a++){var o=r[a];t.equals(o[0],o[o.length-1])||o.push(o[0]);var s=et.computeWindingOrder2D(o);s===i&&o.reverse()}var c=u.fromPoints(e,n),l=c.projectPointsOntoPlane(e),f=[];for(a=0;a<r.length;a++)f.push(c.projectPointsOntoPlane(r[a]));var h=S(l,f),d=g(f),p=v(f[d]),m=r[d],y=[];for(a=0;a<e.length;a++)y.push(e[a]);var w,x=[];if(0!==p)for(w=0;w<=m.length;w++){var E=(w+p)%m.length;0!==E&&x.push(m[E])}else for(w=0;w<m.length;w++)x.push(m[(w+p)%m.length]);var O=y.lastIndexOf(e[h]);x.push(e[O]);var T=y.slice(0,O+1),_=y.slice(O+1);return y=T.concat(x,_),r.splice(d,1),y}function T(e){var t=l.nextRandomNumber(),r=Math.floor(t*e);return r===e&&r--,r}function _(e,t,r,n){var i=n[e].position,a=n[t].position,o=n[r].position,u=o.x,s=o.y,c=i.x-u,l=i.y-s,f=a.x-u,h=a.y-s;return c*h-l*f}function M(e,t){return e.x*t.y-e.y*t.x}function P(e,t){var r=t.length,n=l.mod(e-1,r),i=l.mod(e+1,r);return 0===_(n,i,e,t)?!1:!0}function b(t,r){return e.magnitudeSquared(r)<e.magnitudeSquared(t)}function N(t,r,n){if(!P(t,n))return t;var i=n[t].position,a=n[r].position,o=n.length,u=l.mod(t-1,o);if(!P(u,n))return u;var s=l.mod(t+1,o);if(!P(s,n))return s;var c=e.subtract(n[u].position,i,k),f=e.subtract(n[s].position,i,V),h=e.subtract(a,i,H),d=M(c,h),p=M(f,h);if(0===d)return b(c,h)?W:G;if(0===p)return b(f,h)?W:G;var m=M(c,f);return 0>m?0>d&&p>0?W:G:m>0?d>0&&0>p?G:W:void 0}function A(e,t,r){return(e>t||e>r)&&(t>e||r>e)||t===r&&t===e}function I(t,r,n,i){var a=e.subtract(n,t,j),o=r.x*i.y-r.y*i.x,u=o*o,s=e.magnitudeSquared(r),c=e.magnitudeSquared(i);if(u>Y*s*c){var l=(a.x*i.y-a.y*i.x)/o;return e.add(t,e.multiplyByScalar(r,l,j),j)}return void 0}function R(t,r,n){for(var a=e.subtract(r,t,Z),o=n.length,u=0;o>u;u++){var s=n[u].position,c=n[l.mod(u+1,o)].position;if(!(e.equals(t,s)||e.equals(r,c)||e.equals(t,c)||e.equals(r,s))){var f=e.subtract(c,s,X),h=I(t,a,s,f);if(i(h)&&!(e.equals(h,t)||e.equals(h,r)||e.equals(h,s)||e.equals(h,c))){var d=h.x,p=h.y,m=A(d,t.x,r.x)&&A(p,t.y,r.y)&&A(d,s.x,c.x)&&A(p,s.y,c.y);if(m)return!0}}}return!1}function z(t,r,n){var i=N(t,r,n);if(i>=0)return i;var a=N(r,t,n);return a>=0?a:i!==W||a!==W||R(n[t].position,n[r].position,n)||e.equals(n[t].position,n[r].position)?K:J}function C(e){return 0===_(1,2,0,e)}function D(e){var t=e.length;if(3===t)return C(e)?[]:[e[0].index,e[1].index,e[2].index];if(e.length<3)throw new a("Invalid polygon: must have at least three vertices.");for(var r,n,i=0,o=10*e.length,u=K;J>u&&i++<o;){for(r=T(e.length),n=r+1;Math.abs(r-n)<2||Math.abs(r-n)>e.length-2;)n=T(e.length);if(r>n){var s=r;r=n,n=s}u=z(r,n,e)}if(u===J){var c=e.splice(r,n-r+1,e[r],e[n]);return D(e).concat(D(c))}return u>=0?(e.splice(u,1),D(e)):[]}var L=new e,q=new e,U=new e,B=new e(1,0),F=new e,W=-1,G=-2,k=new t,V=new t,H=new t,Y=l.EPSILON14,j=new e;new e;var Z=new e,X=new e,J=-1,K=-2,Q=new t,$=new t,et={};et.removeDuplicates=function(e){var r=h.removeDuplicates(e);return t.equals(r[0],r[r.length-1])?r.slice(1):r},et.computeArea2D=function(e){for(var t=e.length,r=0,n=t-1,i=0;t>i;n=i++){var a=e[n],o=e[i];r+=a.x*o.y-o.x*a.y}return.5*r},et.computeWindingOrder2D=function(e){var t=et.computeArea2D(e);return t>0?m.COUNTER_CLOCKWISE:m.CLOCKWISE},et.triangulate=function(e){for(var t=e.length,r=[],n=0;t>n;++n)r[n]={position:e[n],index:n};return D(r)};var tt=new t,rt=new t,nt=new t,it=new t,at=new t,ot=new t,ut=new t;return et.computeSubdivision=function(e,a,o,u){u=n(u,l.RADIANS_PER_DEGREE);var f,h=o.slice(0),p=a.length,m=new Array(3*p),y=0;for(f=0;p>f;f++){var v=a[f];m[y++]=v.x,m[y++]=v.y,m[y++]=v.z}for(var g=[],w={},x=e.maximumRadius,E=l.chordLength(u,x),S=E*E;h.length>0;){var O,T,_=h.pop(),M=h.pop(),P=h.pop(),b=t.fromArray(m,3*P,tt),N=t.fromArray(m,3*M,rt),A=t.fromArray(m,3*_,nt),I=t.multiplyByScalar(t.normalize(b,it),x,it),R=t.multiplyByScalar(t.normalize(N,at),x,at),z=t.multiplyByScalar(t.normalize(A,ot),x,ot),C=t.magnitudeSquared(t.subtract(I,R,ut)),D=t.magnitudeSquared(t.subtract(R,z,ut)),L=t.magnitudeSquared(t.subtract(z,I,ut)),q=Math.max(C,D,L);q>S?C===q?(O=Math.min(P,M)+" "+Math.max(P,M),f=w[O],i(f)||(T=t.add(b,N,ut),t.multiplyByScalar(T,.5,T),m.push(T.x,T.y,T.z),f=m.length/3-1,w[O]=f),h.push(P,f,_),h.push(f,M,_)):D===q?(O=Math.min(M,_)+" "+Math.max(M,_),f=w[O],i(f)||(T=t.add(N,A,ut),t.multiplyByScalar(T,.5,T),m.push(T.x,T.y,T.z),f=m.length/3-1,w[O]=f),h.push(M,f,P),h.push(f,_,P)):L===q&&(O=Math.min(_,P)+" "+Math.max(_,P),f=w[O],i(f)||(T=t.add(A,b,ut),t.multiplyByScalar(T,.5,T),m.push(T.x,T.y,T.z),f=m.length/3-1,w[O]=f),h.push(_,f,M),h.push(f,P,M)):(g.push(P),g.push(M),g.push(_))}return new s({attributes:{position:new c({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:m})},indices:g,primitiveType:d.TRIANGLES})},et.scaleToGeodeticHeight=function(e,r,a,u){a=n(a,o.WGS84);var s=Q,c=$;if(r=n(r,0),u=n(u,!0),i(e)&&i(e.attributes)&&i(e.attributes.position))for(var l=e.attributes.position.values,f=l.length,h=0;f>h;h+=3)t.fromArray(l,h,c),u&&(c=a.scaleToGeodeticSurface(c,c)),s=a.geodeticSurfaceNormal(c,s),t.multiplyByScalar(s,r,s),t.add(c,s,c),l[h]=c.x,l[h+1]=c.y,l[h+2]=c.z;return e},et.eliminateHoles=function(e,r,i){i=n(i,o.WGS84);for(var a=[],u=0;u<r.length;u++){for(var s=[],c=0;c<r[u].length;c++)s.push(t.clone(r[u][c]));a.push(s)}for(var l=e;a.length>0;)l=O(l,a,i);return l},et}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.position=e(t.position,!1),this.normal=e(t.normal,!1),this.st=e(t.st,!1),this.binormal=e(t.binormal,!1),this.tangent=e(t.tangent,!1),this.color=e(t.color,!1)};return i.POSITION_ONLY=n(new i({position:!0})),i.POSITION_AND_NORMAL=n(new i({position:!0,normal:!0})),i.POSITION_NORMAL_AND_ST=n(new i({position:!0,normal:!0,st:!0})),i.POSITION_AND_ST=n(new i({position:!0,st:!0})),i.POSITION_AND_COLOR=n(new i({position:!0,color:!0})),i.ALL=n(new i({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),i.DEFAULT=i.POSITION_NORMAL_AND_ST,i.packedLength=6,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.position?1:0,r[n++]=t.normal?1:0,r[n++]=t.st?1:0,r[n++]=t.binormal?1:0,r[n++]=t.tangent?1:0,r[n++]=t.color?1:0},i.unpack=function(r,n,a){return n=e(n,0),t(a)||(a=new i),a.position=1===r[n++],a.normal=1===r[n++],a.st=1===r[n++],a.binormal=1===r[n++],a.tangent=1===r[n++],a.color=1===r[n++],a},i.clone=function(e,r){return t(e)?(t(r)||(r=new i),r.position=e.position,r.normal=e.normal,r.st=e.st,r.binormal=e.binormal,r.tangent=e.tangent,r.color=e.color,r):void 0},i}),define("Core/PolygonGeometry",["./BoundingRectangle","./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./GeometryAttributes","./GeometryInstance","./GeometryPipeline","./IndexDatatype","./Math","./Matrix3","./PolygonGeometryLibrary","./PolygonPipeline","./PrimitiveType","./Quaternion","./Queue","./VertexFormat","./WindingOrder"],function(e,t,r,n,i,a,o,u,s,c,l,f,h,d,p,m,y,v,g,w,x,E,S,O,T){"use strict";function _(e,t,r,i){for(var a=E.fromAxisAngle(e._plane.normal,r,R),u=v.fromQuaternion(a,z),s=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,l=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY,h=t.length,d=0;h>d;++d){var p=n.clone(t[d],I);v.multiplyByVector(u,p,p);var m=e.projectPointOntoPlane(p,A);o(m)&&(s=Math.min(s,m.x),c=Math.max(c,m.x),l=Math.min(l,m.y),f=Math.max(f,m.y))}return i.x=s,i.y=l,i.width=c-s,i.height=f-l,i}function M(e,t,r,n){var a=c.fromPoints(t,e),o=a.projectPointsOntoPlane(t,C),u=w.computeWindingOrder2D(o);u===T.CLOCKWISE&&(o.reverse(),t.reverse());var s=w.triangulate(o);s.length<3&&(s=[0,1,2]);var h;if(n){for(var p=t.length,m=new Array(3*p),y=0,v=0;p>v;v++){var g=t[v];m[y++]=g.x,m[y++]=g.y,m[y++]=g.z}h=new l({attributes:{position:new f({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:m})},indices:s,primitiveType:x.TRIANGLES})}else h=w.computeSubdivision(e,t,s,r);return new d({geometry:h})}function P(e,t,a,o,u,s,l){if(e.st||e.normal||e.tangent||e.binormal){var h=c.fromPoints(a,o),d=_(h,a,u,D),p=G;p.x=d.x,p.y=d.y;var m=t.attributes.position.values,g=m.length,w=e.st?new Float32Array(2*(g/3)):void 0,x=e.normal?new Float32Array(g):void 0,S=e.tangent?new Float32Array(g):void 0,O=e.binormal?new Float32Array(g):void 0,T=0,M=0,P=q,b=U,N=B,A=!0,I=E.fromAxisAngle(h._plane.normal,u,H),R=v.fromQuaternion(I,Y),z=g/2,C=g/3;s&&(g/=2);for(var j=0;g>j;j+=3){var Z=n.fromArray(m,j,V);if(e.st){var X=v.multiplyByVector(R,Z,L),J=h.projectPointOntoPlane(X,k);r.subtract(J,p,J),s&&(w[T+C]=J.x/d.width,w[T+1+C]=J.y/d.height),w[T]=J.x/d.width,w[T+1]=J.y/d.height,T+=2}if(e.normal||e.tangent||e.binormal){var K=M+1,Q=M+2;if(l){if(g>j+3){var $=n.fromArray(m,j+3,F);if(A){var et=n.fromArray(m,j+g,W);n.subtract($,Z,$),n.subtract(et,Z,et),P=n.normalize(n.cross(et,$,P),P),A=!1}n.equalsEpsilon($,Z,y.EPSILON10)&&(A=!0)}(e.tangent||e.binormal)&&(N=o.geodeticSurfaceNormal(Z,N),e.tangent&&(b=n.normalize(n.cross(N,P,b),b)))}else P=o.geodeticSurfaceNormal(Z,P),(e.tangent||e.binormal)&&(b=n.cross(n.UNIT_Z,P,b),b=n.normalize(v.multiplyByVector(R,b,b),b),e.binormal&&(N=n.normalize(n.cross(P,b,N),N)));e.normal&&(s&&!l?(x[M+z]=-P.x,x[K+z]=-P.y,x[Q+z]=-P.z):(x[M+z]=P.x,x[K+z]=P.y,x[Q+z]=P.z),x[M]=P.x,x[K]=P.y,x[Q]=P.z),e.tangent&&(s&&!l?(S[M+z]=-b.x,S[K+z]=-b.y,S[Q+z]=-b.z):(S[M+z]=b.x,S[K+z]=b.y,S[Q+z]=b.z),S[M]=b.x,S[K]=b.y,S[Q]=b.z),e.binormal&&(s&&(O[M+z]=N.x,O[K+z]=N.y,O[Q+z]=N.z),O[M]=N.x,O[K]=N.y,O[Q]=N.z),M+=3}}e.st&&(t.attributes.st=new f({componentDatatype:i.FLOAT,componentsPerAttribute:2,values:w})),e.normal&&(t.attributes.normal=new f({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:x})),e.tangent&&(t.attributes.tangent=new f({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:S})),e.binormal&&(t.attributes.binormal=new f({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:O}))}return t}function b(e,t,r,a){var o,u,s,c,d,p=e.length,v=0;if(a)for(u=2*3*p,o=new Array(2*u),s=0;p>s;s++)c=e[s],d=e[(s+1)%p],o[v]=o[v+u]=c.x,++v,o[v]=o[v+u]=c.y,++v,o[v]=o[v+u]=c.z,++v,o[v]=o[v+u]=d.x,++v,o[v]=o[v+u]=d.y,++v,o[v]=o[v+u]=d.z,++v;else{var w=y.chordLength(r,t.maximumRadius),E=0;for(s=0;p>s;s++)E+=g.subdivideLineCount(e[s],e[(s+1)%p],w);for(u=3*(E+p),o=new Array(2*u),s=0;p>s;s++){c=e[s],d=e[(s+1)%p];for(var S=g.subdivideLine(c,d,w,j),O=S.length,T=0;O>T;++T,++v)o[v]=S[T],o[v+u]=S[T];o[v]=d.x,o[v+u]=d.x,++v,o[v]=d.y,o[v+u]=d.y,++v,o[v]=d.z,o[v+u]=d.z,++v}}p=o.length;var _=m.createTypedArray(p/3,p-6*e.length),M=0;for(p/=6,s=0;p>s;s++){var P=s,b=P+1,N=P+p,A=N+1;c=n.fromArray(o,3*P,F),d=n.fromArray(o,3*b,W),n.equalsEpsilon(c,d,y.EPSILON14)||(_[M++]=P,_[M++]=N,_[M++]=b,_[M++]=b,_[M++]=N,_[M++]=A)}return new l({attributes:new h({position:new f({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:o})}),indices:_,primitiveType:x.TRIANGLES})}function N(e,t,r,n,a){var o=M(e,t,r,a).geometry,u=o.attributes.position.values,s=o.indices,p=u.concat(u),y=p.length/3,v=m.createTypedArray(y,2*s.length);v.set(s);var g,x=s.length,E=y/2;for(g=0;x>g;g+=3){var S=v[g]+E,O=v[g+1]+E,_=v[g+2]+E;v[g+x]=_,v[g+1+x]=O,v[g+2+x]=S}var P=new l({attributes:new h({position:new f({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:p})}),indices:v,primitiveType:o.primitiveType}),N={topAndBottom:new d({geometry:P}),walls:[]},A=n.outerRing,I=c.fromPoints(A,e),R=I.projectPointsOntoPlane(A,Z),z=w.computeWindingOrder2D(R);z===T.CLOCKWISE&&A.reverse();var C=b(A,e,r,a);N.walls.push(new d({geometry:C}));var D=n.holes;for(g=0;g<D.length;g++){var L=D[g];I=c.fromPoints(L,e),R=I.projectPointsOntoPlane(L,Z),z=w.computeWindingOrder2D(R),z===T.COUNTER_CLOCKWISE&&L.reverse(),C=b(L,e,r),N.walls.push(new d({geometry:C}))}return N}var A=new r,I=new n,R=new E,z=new v,C=[],D=new e,L=new n,q=new n,U=new n,B=new n,F=new n,W=new n,G=new r,k=new r,V=new n,H=new E,Y=new v,j=[],Z=[],X=function(e){var t=e.polygonHierarchy,r=a(e.vertexFormat,O.DEFAULT),n=a(e.ellipsoid,s.WGS84),i=a(e.granularity,y.RADIANS_PER_DEGREE),u=a(e.stRotation,0),c=a(e.height,0),l=a(e.perPositionHeight,!1),f=e.extrudedHeight,h=o(f)&&(!y.equalsEpsilon(c,f,y.EPSILON6)||l);if(h){var d=f;f=Math.min(d,c),c=Math.max(d,c)}this._vertexFormat=O.clone(r),this._ellipsoid=s.clone(n),this._granularity=i,this._stRotation=u,this._height=c,this._extrudedHeight=a(f,0),this._extrude=h,this._polygonHierarchy=t,this._perPositionHeight=l,this._workerName="createPolygonGeometry",this.packedLength=g.computeHierarchyPackedLength(t)+s.packedLength+O.packedLength+7};X.fromPositions=function(e){e=a(e,a.EMPTY_OBJECT);var t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight};return new X(t)},X.pack=function(e,t,r){r=a(r,0),r=g.packPolygonHierarchy(e._polygonHierarchy,t,r),s.pack(e._ellipsoid,t,r),r+=s.packedLength,O.pack(e._vertexFormat,t,r),r+=O.packedLength,t[r++]=e._height,t[r++]=e._extrudedHeight,t[r++]=e._granularity,t[r++]=e._stRotation,t[r++]=e._extrude?1:0,t[r++]=e._perPositionHeight?1:0,t[r]=e.packedLength};var J=s.clone(s.UNIT_SPHERE),K=new O,Q={polygonHierarchy:{}};return X.unpack=function(e,t,r){t=a(t,0);var n=g.unpackPolygonHierarchy(e,t);t=n.startingIndex,delete n.startingIndex;var i=s.unpack(e,t,J);t+=s.packedLength;var u=O.unpack(e,t,K);t+=O.packedLength;var c=e[t++],l=e[t++],f=e[t++],h=e[t++],d=1===e[t++],p=1===e[t++],m=e[t];return o(r)||(r=new X(Q)),r._polygonHierarchy=n,r._ellipsoid=s.clone(i,r._ellipsoid),r._vertexFormat=O.clone(u,r._vertexFormat),r._height=c,r._extrudedHeight=l,r._granularity=f,r._stRotation=h,r._extrude=d,r._perPositionHeight=p,r.packedLength=m,r},X.createGeometry=function(e){var r,n,i,a=e._vertexFormat,u=e._ellipsoid,s=e._granularity,c=e._stRotation,f=e._height,h=e._extrudedHeight,d=e._extrude,y=e._polygonHierarchy,v=e._perPositionHeight,x=[],E=new S;E.enqueue(y),y=[];for(var O;0!==E.length;){var T=E.dequeue(),_=T.positions,b=T.holes;if(_=w.removeDuplicates(_),!(_.length<3)){var A=o(b)?b.length:0,I=[];for(O=0;A>O;O++){var R=b[O];if(R.positions=w.removeDuplicates(R.positions),!(R.positions.length<3)){I.push(R.positions);var z=0;o(R.holes)&&(z=R.holes.length);for(var C=0;z>C;C++)E.enqueue(R.holes[C])}}y.push({outerRing:_,holes:I});var D=I.length>0?w.eliminateHoles(_,I):_;x.push(D)}}if(0===x.length)return void 0;i=x[0];var L,q=[];if(d)for(O=0;O<x.length;O++){L=N(u,x[O],s,y[O],v),n=L.topAndBottom,n.geometry=g.scaleToGeodeticHeightExtruded(n.geometry,f,h,u,v),n.geometry=P(a,n.geometry,i,u,c,!0,!1),q.push(n),r=L.walls;for(var U=0;U<r.length;U++){var B=r[U];B.geometry=g.scaleToGeodeticHeightExtruded(B.geometry,f,h,u,v),B.geometry=P(a,B.geometry,i,u,c,!0,!0),q.push(B)}}else for(O=0;O<x.length;O++)L=M(u,x[O],s,v),L.geometry=w.scaleToGeodeticHeight(L.geometry,f,u,!v),L.geometry=P(a,L.geometry,i,u,c,!1,!1),q.push(L);L=p.combineInstances(q)[0],L.attributes.position.values=new Float64Array(L.attributes.position.values),L.indices=m.createTypedArray(L.attributes.position.values.length/3,L.indices);var F=L.attributes,W=t.fromVertices(F.position.values);return a.position||delete F.position,new l({attributes:F,indices:L.indices,primitiveType:L.primitiveType,boundingSphere:W})},X}),define("Workers/createPolygonGeometry",["../Core/defined","../Core/Ellipsoid","../Core/PolygonGeometry"],function(e,t,r){"use strict";function n(n,i){return e(i)&&(n=r.unpack(n,i)),n._ellipsoid=t.clone(n._ellipsoid),r.createGeometry(n)}return n})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createPolygonOutlineGeometry.js b/libs/Cesium/Workers/createPolygonOutlineGeometry.js new file mode 100644 index 0000000000..11c23e3c71 --- /dev/null +++ b/libs/Cesium/Workers/createPolygonOutlineGeometry.js @@ -0,0 +1,230 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var r;for(this.mti==this.N+1&&this.init_genrand(5489),r=0;r<this.N-this.M;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+this.M]^e>>>1^t[1&e];for(;r<this.N-1;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};r.EPSILON1=.1,r.EPSILON2=.01,r.EPSILON3=.001,r.EPSILON4=1e-4,r.EPSILON5=1e-5,r.EPSILON6=1e-6,r.EPSILON7=1e-7,r.EPSILON8=1e-8,r.EPSILON9=1e-9,r.EPSILON10=1e-10,r.EPSILON11=1e-11,r.EPSILON12=1e-12,r.EPSILON13=1e-13,r.EPSILON14=1e-14,r.EPSILON15=1e-15,r.EPSILON16=1e-16,r.EPSILON17=1e-17,r.EPSILON18=1e-18,r.EPSILON19=1e-19,r.EPSILON20=1e-20,r.GRAVITATIONALPARAMETER=3986004418e5,r.SOLAR_RADIUS=6955e5,r.LUNAR_RADIUS=1737400,r.SIXTY_FOUR_KILOBYTES=65536,r.sign=function(e){return e>0?1:0>e?-1:0},r.signNotZero=function(e){return 0>e?-1:1},r.toSNorm=function(e){return Math.round(255*(.5*r.clamp(e,-1,1)+.5))},r.fromSNorm=function(e){return 2*(r.clamp(e,0,255)/255)-1},r.sinh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t-r)},r.cosh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t+r)},r.lerp=function(e,t,r){return(1-r)*e+r*t},r.PI=Math.PI,r.ONE_OVER_PI=1/Math.PI,r.PI_OVER_TWO=.5*Math.PI,r.PI_OVER_THREE=Math.PI/3,r.PI_OVER_FOUR=Math.PI/4,r.PI_OVER_SIX=Math.PI/6,r.THREE_PI_OVER_TWO=.5*3*Math.PI,r.TWO_PI=2*Math.PI,r.ONE_OVER_TWO_PI=1/(2*Math.PI),r.RADIANS_PER_DEGREE=Math.PI/180,r.DEGREES_PER_RADIAN=180/Math.PI,r.RADIANS_PER_ARCSECOND=r.RADIANS_PER_DEGREE/3600,r.toRadians=function(e){return e*r.RADIANS_PER_DEGREE},r.toDegrees=function(e){return e*r.DEGREES_PER_RADIAN},r.convertLongitudeRange=function(e){var t=r.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n},r.negativePiToPi=function(e){return r.zeroToTwoPi(e+r.PI)-r.PI},r.zeroToTwoPi=function(e){var t=r.mod(e,r.TWO_PI);return Math.abs(t)<r.EPSILON14&&Math.abs(e)>r.EPSILON14?r.TWO_PI:t},r.mod=function(e,t){return(e%t+t)%t},r.equalsEpsilon=function(e,r,n,a){a=t(a,n);var i=Math.abs(e-r);return a>=i||i<=n*Math.max(Math.abs(e),Math.abs(r))};var n=[1];r.factorial=function(e){var t=n.length;if(e>=t)for(var r=n[t-1],a=t;e>=a;a++)n.push(r*a);return n[e]},r.incrementWrap=function(e,r,n){return n=t(n,0),++e,e>r&&(e=n),e},r.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},r.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},r.clamp=function(e,t,r){return t>e?t:e>r?r:e};var a=new e;return r.setRandomNumberSeed=function(t){a=new e(t)},r.nextRandomNumber=function(){return a.random()},r.acosClamped=function(e){return Math.acos(r.clamp(e,-1,1))},r.asinClamped=function(e){return Math.asin(r.clamp(e,-1,1))},r.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},r}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r,n){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0)};i.fromSpherical=function(r,n){t(n)||(n=new i);var a=r.clock,o=r.cone,u=e(r.magnitude,1),s=u*Math.sin(o);return n.x=s*Math.cos(a),n.y=s*Math.sin(a),n.z=u*Math.cos(o),n},i.fromElements=function(e,r,n,a){return t(a)?(a.x=e,a.y=r,a.z=n,a):new i(e,r,n)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r):new i(e.x,e.y,e.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n]=t.z},i.unpack=function(r,n,a){return n=e(n,0),t(a)||(a=new i),a.x=r[n++],a.y=r[n++],a.z=r[n],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i,c=new i;i.angleBetween=function(e,t){i.normalize(e,s),i.normalize(t,c);var r=i.dot(s,c),n=i.magnitude(i.cross(s,c,s));return Math.atan2(n,r)};var l=new i;i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,l);return i.abs(r,r),t=r.x<=r.y?r.x<=r.z?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Z,t):r.y<=r.z?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_Z,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&a.equalsEpsilon(e.x,r.x,n,i)&&a.equalsEpsilon(e.y,r.y,n,i)&&a.equalsEpsilon(e.z,r.z,n,i)},i.cross=function(e,t,r){var n=e.x,a=e.y,i=e.z,o=t.x,u=t.y,s=t.z,c=a*s-i*u,l=i*o-n*s,f=n*u-a*o;return r.x=c,r.y=l,r.z=f,r},i.fromDegrees=function(e,t,r,n,o){var u=a.toRadians(e),s=a.toRadians(t);return i.fromRadians(u,s,r,n,o)};var f=new i,d=new i,h=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(r,n,a,o,u){a=e(a,0);var s=t(o)?o.radiiSquared:h,c=Math.cos(n);f.x=c*Math.cos(r),f.y=c*Math.sin(r),f.z=Math.sin(n),f=i.normalize(f,f),i.multiplyComponents(s,f,d);var l=Math.sqrt(i.dot(f,d));return d=i.divideByScalar(d,l,d),f=i.multiplyByScalar(f,a,f),t(u)||(u=new i),i.add(d,f,u)},i.fromDegreesArray=function(e,t,r){for(var n=new Array(e.length),o=0;o<e.length;o++)n[o]=a.toRadians(e[o]);return i.fromRadiansArray(n,t,r)},i.fromRadiansArray=function(e,r,n){var a=e.length;t(n)?n.length=a/2:n=new Array(a/2);for(var o=0;a>o;o+=2){var u=e[o],s=e[o+1];n[o/2]=i.fromRadians(u,s,0,r,n[o/2])}return n},i.fromDegreesArrayHeights=function(e,t,r){for(var n=new Array(e.length),o=0;o<e.length;o+=3)n[o]=a.toRadians(e[o]),n[o+1]=a.toRadians(e[o+1]),n[o+2]=e[o+2];return i.fromRadiansArrayHeights(n,t,r)},i.fromRadiansArrayHeights=function(e,r,n){var a=e.length;t(n)?n.length=a/3:n=new Array(a/3);for(var o=0;a>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];n[o/3]=i.fromRadians(u,s,c,r,n[o/3])}return n},i.ZERO=n(new i(0,0,0)),i.UNIT_X=n(new i(1,0,0)),i.UNIT_Y=n(new i(0,1,0)),i.UNIT_Z=n(new i(0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r,n){this.longitude=e(t,0),this.latitude=e(r,0),this.height=e(n,0)};return i.fromRadians=function(r,n,a,o){return a=e(a,0),t(o)?(o.longitude=r,o.latitude=n,o.height=a,o):new i(r,n,a)},i.fromDegrees=function(e,t,r,n){return e=a.toRadians(e),t=a.toRadians(t),i.fromRadians(e,t,r,n)},i.clone=function(e,r){return t(e)?t(r)?(r.longitude=e.longitude,r.latitude=e.latitude,r.height=e.height,r):new i(e.longitude,e.latitude,e.height):void 0},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.longitude===r.longitude&&e.latitude===r.latitude&&e.height===r.height},i.equalsEpsilon=function(e,r,n){return e===r||t(e)&&t(r)&&Math.abs(e.longitude-r.longitude)<=n&&Math.abs(e.latitude-r.latitude)<=n&&Math.abs(e.height-r.height)<=n},i.ZERO=n(new i(0,0,0)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),r=Object.defineProperties;return t&&e(r)||(r=function(e){return e}),r}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a,i,o,u){"use strict";function s(t,n,a,i){n=r(n,0),a=r(a,0),i=r(i,0),t._radii=new e(n,a,i),t._radiiSquared=new e(n*n,a*a,i*i),t._radiiToTheFourth=new e(n*n*n*n,a*a*a*a,i*i*i*i),t._oneOverRadii=new e(0===n?0:1/n,0===a?0:1/a,0===i?0:1/i),t._oneOverRadiiSquared=new e(0===n?0:1/(n*n),0===a?0:1/(a*a),0===i?0:1/(i*i)),t._minimumRadius=Math.min(n,a,i),t._maximumRadius=Math.max(n,a,i),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,r){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,r)};a(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,r){if(!n(t))return void 0;var a=t._radii;return n(r)?(e.clone(a,r._radii),e.clone(t._radiiSquared,r._radiiSquared),e.clone(t._radiiToTheFourth,r._radiiToTheFourth),e.clone(t._oneOverRadii,r._oneOverRadii),e.clone(t._oneOverRadiiSquared,r._oneOverRadiiSquared),r._minimumRadius=t._minimumRadius,r._maximumRadius=t._maximumRadius,r._centerToleranceSquared=t._centerToleranceSquared,r):new c(a.x,a.y,a.z)},c.fromCartesian3=function(e,t){return n(t)||(t=new c),n(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,n,a){a=r(a,0),e.pack(t._radii,n,a)},c.unpack=function(t,n,a){n=r(n,0);var i=e.unpack(t,n);return c.fromCartesian3(i,a)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,r){var a=t.longitude,i=t.latitude,o=Math.cos(i),u=o*Math.cos(a),s=o*Math.sin(a),c=Math.sin(i);return n(r)||(r=new e),r.x=u,r.y=s,r.z=c,e.normalize(r,r)},c.prototype.geodeticSurfaceNormal=function(t,r){return n(r)||(r=new e),r=e.multiplyComponents(t,this._oneOverRadiiSquared,r),e.normalize(r,r)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,r){var a=l,i=f;this.geodeticSurfaceNormalCartographic(t,a),e.multiplyComponents(this._radiiSquared,a,i);var o=Math.sqrt(e.dot(a,i));return e.divideByScalar(i,o,i),e.multiplyByScalar(a,t.height,a),n(r)||(r=new e),e.add(i,a,r)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var a=0;r>a;a++)t[a]=this.cartographicToCartesian(e[a],t[a]);return t};var d=new e,h=new e,p=new e;c.prototype.cartesianToCartographic=function(r,a){var i=this.scaleToGeodeticSurface(r,h);if(!n(i))return void 0;var o=this.geodeticSurfaceNormal(i,d),s=e.subtract(r,i,p),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,r))*e.magnitude(s);return n(a)?(a.longitude=c,a.latitude=l,a.height=f,a):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var a=0;r>a;++a)t[a]=this.cartesianToCartographic(e[a],t[a]);return t};var m=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,r){var a=t.x,i=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,d=a*a*c*c,h=i*i*l*l,p=o*o*f*f,v=d+h+p,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,m);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,r):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,O=x.z,M=y;M.x=2*w.x*E,M.y=2*w.y*S,M.z=2*w.z*O;var T,_,P,b,N,A,I,C,z,R,D,L=(1-g)*e.magnitude(t)/(.5*e.magnitude(M)),q=0;do{L-=q,P=1/(1+L*E),b=1/(1+L*S),N=1/(1+L*O),A=P*P,I=b*b,C=N*N,z=A*P,R=I*b,D=C*N,T=d*A+h*I+p*C-1,_=d*z*E+h*R*S+p*D*O;var U=-2*_;q=T/U}while(Math.abs(T)>u.EPSILON12);return n(r)?(r.x=a*P,r.y=i*b,r.z=o*N,r):new e(a*P,i*b,o*N)},c.prototype.scaleToGeocentricSurface=function(t,r){n(r)||(r=new e);var a=t.x,i=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(a*a*u.x+i*i*u.y+o*o*u.z);return e.multiplyByScalar(t,s,r)},c.prototype.transformPositionToScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._oneOverRadii,r)},c.prototype.transformPositionFromScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._radii,r)},c.prototype.equals=function(t){return this===t||n(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},r=function(r,n){e(t[r])||(t[r]=!0,console.log(n))};return r}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,r,n,a,i,o){"use strict";var u=function(e){this._ellipsoid=r(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return a(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,r){var a=this._semimajorAxis,i=t.longitude*a,o=t.latitude*a,u=t.height;return n(r)?(r.x=i,r.y=o,r.z=u,r):new e(i,o,u)},u.prototype.unproject=function(e,r){var a=this._oneOverSemimajorAxis,i=e.x*a,o=e.y*a,u=e.z;return n(r)?(r.longitude=i,r.latitude=o,r.height=u,r):new t(i,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,r){this.start=e(t,0),this.stop=e(r,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r,n,a){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0),this.w=e(a,0)};i.fromElements=function(e,r,n,a,o){return t(o)?(o.x=e,o.y=r,o.z=n,o.w=a,o):new i(e,r,n,a)},i.fromColor=function(e,r){return t(r)?(r.x=e.red,r.y=e.green,r.z=e.blue,r.w=e.alpha,r):new i(e.red,e.green,e.blue,e.alpha)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r.w=e.w,r):new i(e.x,e.y,e.z,e.w):void 0},i.packedLength=4,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n++]=t.z,r[n]=t.w},i.unpack=function(r,n,a){return n=e(n,0),t(a)||(a=new i),a.x=r[n++],a.y=r[n++],a.z=r[n++],a.w=r[n],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r.w=Math.min(e.w,t.w),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r.w=Math.max(e.w,t.w),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t.w=e.w/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r.w=e.w*t.w,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i;return i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,s);return i.abs(r,r),t=r.x<=r.y?r.x<=r.z?r.x<=r.w?i.clone(i.UNIT_X,t):i.clone(i.UNIT_W,t):r.z<=r.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t):r.y<=r.z?r.y<=r.w?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_W,t):r.z<=r.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z&&e.w===r.w},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]&&e.w===t[r+3]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&a.equalsEpsilon(e.x,r.x,n,i)&&a.equalsEpsilon(e.y,r.y,n,i)&&a.equalsEpsilon(e.z,r.z,n,i)&&a.equalsEpsilon(e.w,r.w,n,i)},i.ZERO=n(new i(0,0,0,0)),i.UNIT_X=n(new i(1,0,0,0)),i.UNIT_Y=n(new i(0,1,0,0)),i.UNIT_Z=n(new i(0,0,1,0)),i.UNIT_W=n(new i(0,0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a,i){"use strict";function o(e){for(var t=0,r=0;9>r;++r){var n=e[r];t+=n*n}return Math.sqrt(t)}function u(e){for(var t=0,r=0;3>r;++r){var n=e[c.getElementIndex(h[r],d[r])];t+=2*n*n}return Math.sqrt(t)}function s(e,t){for(var r=i.EPSILON15,n=0,a=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(h[o],d[o])]);u>n&&(a=o,n=u)}var s=1,l=0,f=d[a],p=h[a];if(Math.abs(e[c.getElementIndex(p,f)])>r){var m,y=e[c.getElementIndex(p,p)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(p,f)],w=(y-v)/2/g;m=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+m*m),l=m*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(p,p)]=s,t[c.getElementIndex(p,f)]=l,t[c.getElementIndex(f,p)]=-l,t}var c=function(e,r,n,a,i,o,u,s,c){this[0]=t(e,0),this[1]=t(a,0),this[2]=t(u,0),this[3]=t(r,0),this[4]=t(i,0),this[5]=t(s,0),this[6]=t(n,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,r,n){n=t(n,0),r[n++]=e[0],r[n++]=e[1],r[n++]=e[2],r[n++]=e[3],r[n++]=e[4],r[n++]=e[5],r[n++]=e[6],r[n++]=e[7],r[n++]=e[8]},c.unpack=function(e,n,a){return n=t(n,0),r(a)||(a=new c),a[0]=e[n++],a[1]=e[n++],a[2]=e[n++],a[3]=e[n++],a[4]=e[n++],a[5]=e[n++],a[6]=e[n++],a[7]=e[n++],a[8]=e[n++],a},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,n,a){return n=t(n,0),r(a)||(a=new c),a[0]=e[n],a[1]=e[n+1],a[2]=e[n+2],a[3]=e[n+3],a[4]=e[n+4],a[5]=e[n+5],a[6]=e[n+6],a[7]=e[n+7],a[8]=e[n+8],a},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var n=e.x*e.x,a=e.x*e.y,i=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,d=e.z*e.w,h=e.w*e.w,p=n-u-f+h,m=2*(a-d),y=2*(i+l),v=2*(a+d),g=-n+u-f+h,w=2*(s-o),x=2*(i-l),E=2*(s+o),S=-n-u+f+h;return r(t)?(t[0]=p,t[1]=v,t[2]=x,t[3]=m,t[4]=g,t[5]=E,t[6]=y,t[7]=w,t[8]=S,t):new c(p,m,y,v,g,w,x,E,S)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return r(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var n=Math.cos(e),a=Math.sin(e);return r(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=a,t[6]=0,t[7]=-a,t[8]=n,t):new c(1,0,0,0,n,-a,0,a,n)},c.fromRotationY=function(e,t){var n=Math.cos(e),a=Math.sin(e);return r(t)?(t[0]=n,t[1]=0,t[2]=-a,t[3]=0,t[4]=1,t[5]=0,t[6]=a,t[7]=0,t[8]=n,t):new c(n,0,a,0,1,0,-a,0,n)},c.fromRotationZ=function(e,t){var n=Math.cos(e),a=Math.sin(e);return r(t)?(t[0]=n,t[1]=a,t[2]=0,t[3]=-a,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(n,-a,0,a,n,0,0,0,1)},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,r){var n=3*t,a=e[n],i=e[n+1],o=e[n+2];return r.x=a,r.y=i,r.z=o,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var a=3*t;return n[a]=r.x,n[a+1]=r.y,n[a+2]=r.z,n},c.getRow=function(e,t,r){var n=e[t],a=e[t+3],i=e[t+6];return r.x=n,r.y=a,r.z=i,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+3]=r.y,n[t+6]=r.z,n};var l=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),r.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),r.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),r};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,r){var n=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],a=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],i=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return r[0]=n,r[1]=a,r[2]=i,r[3]=o,r[4]=u,r[5]=s,r[6]=c,r[7]=l,r[8]=f,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r},c.multiplyByVector=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=e[0]*n+e[3]*a+e[6]*i,u=e[1]*n+e[4]*a+e[7]*i,s=e[2]*n+e[5]*a+e[8]*i;return r.x=o,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r},c.multiplyByScale=function(e,t,r){return r[0]=e[0]*t.x,r[1]=e[1]*t.x,r[2]=e[2]*t.x,r[3]=e[3]*t.y,r[4]=e[4]*t.y,r[5]=e[5]*t.y,r[6]=e[6]*t.z,r[7]=e[7]*t.z,r[8]=e[8]*t.z,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var r=e[0],n=e[3],a=e[6],i=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=r,t[1]=n,t[2]=a,t[3]=i,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var d=[1,0,0],h=[2,2,1],p=new c,m=new c;return c.computeEigenDecomposition=function(e,t){var n=i.EPSILON20,a=10,l=0,f=0;r(t)||(t={});for(var d=t.unitary=c.clone(c.IDENTITY,t.unitary),h=t.diagonal=c.clone(e,t.diagonal),y=n*o(h);a>f&&u(h)>y;)s(h,p),c.transpose(p,m),c.multiply(h,p,h),c.multiply(m,h,h),c.multiply(d,p,d),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],r=e[3],n=e[6],a=e[1],i=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(i*c-s*o)+a*(s*n-r*c)+u*(r*o-i*n)},c.inverse=function(e,t){var r=e[0],a=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],d=e[7],h=e[8],p=c.determinant(e);if(Math.abs(p)<=i.EPSILON15)throw new n("matrix is not invertible");t[0]=s*h-d*l,t[1]=d*o-a*h,t[2]=a*l-s*o,t[3]=f*l-u*h,t[4]=r*h-f*o,t[5]=u*o-r*l,t[6]=u*d-f*s,t[7]=f*a-r*d,t[8]=r*s-u*a;var m=1/p;return c.multiplyByScalar(t,m,t)},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n},c.IDENTITY=a(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,r,n,a,i,o,u,s){"use strict";var c=function(e,t,n,a,i,o,u,s,c,l,f,d,h,p,m,y){this[0]=r(e,0),this[1]=r(i,0),this[2]=r(c,0),this[3]=r(h,0),this[4]=r(t,0),this[5]=r(o,0),this[6]=r(l,0),this[7]=r(p,0),this[8]=r(n,0),this[9]=r(u,0),this[10]=r(f,0),this[11]=r(m,0),this[12]=r(a,0),this[13]=r(s,0),this[14]=r(d,0),this[15]=r(y,0)};c.packedLength=16,c.pack=function(e,t,n){n=r(n,0),t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15]},c.unpack=function(e,t,a){return t=r(t,0),n(a)||(a=new c),a[0]=e[t++],a[1]=e[t++],a[2]=e[t++],a[3]=e[t++],a[4]=e[t++],a[5]=e[t++],a[6]=e[t++],a[7]=e[t++],a[8]=e[t++],a[9]=e[t++],a[10]=e[t++],a[11]=e[t++],a[12]=e[t++],a[13]=e[t++],a[14]=e[t++],a[15]=e[t],a},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,a,i){return a=r(a,e.ZERO),n(i)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=0,i[4]=t[3],i[5]=t[4],i[6]=t[5],i[7]=0,i[8]=t[6],i[9]=t[7],i[10]=t[8],i[11]=0,i[12]=a.x,i[13]=a.y,i[14]=a.z,i[15]=1,i):new c(t[0],t[3],t[6],a.x,t[1],t[4],t[7],a.y,t[2],t[5],t[8],a.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,r,a){n(a)||(a=new c);var i=r.x,o=r.y,u=r.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,d=t.x*t.w,h=t.y*t.y,p=t.y*t.z,m=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-h-y+g,x=2*(l-v),E=2*(f+m),S=2*(l+v),O=-s+h-y+g,M=2*(p-d),T=2*(f-m),_=2*(p+d),P=-s-h+y+g;return a[0]=w*i,a[1]=S*i,a[2]=T*i,a[3]=0,a[4]=x*o,a[5]=O*o,a[6]=_*o,a[7]=0,a[8]=E*u,a[9]=M*u,a[10]=P*u,a[11]=0,a[12]=e.x,a[13]=e.y,a[14]=e.z,a[15]=1,a},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,d=new e;c.fromCamera=function(t,r){var a=t.eye,i=t.target,o=t.up;e.normalize(e.subtract(i,a,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,d),d);var u=f.x,s=f.y,h=f.z,p=l.x,m=l.y,y=l.z,v=d.x,g=d.y,w=d.z,x=a.x,E=a.y,S=a.z,O=u*-x+s*-E+h*-S,M=v*-x+g*-E+w*-S,T=p*x+m*E+y*S;return n(r)?(r[0]=u,r[1]=v,r[2]=-p,r[3]=0,r[4]=s,r[5]=g,r[6]=-m,r[7]=0,r[8]=h,r[9]=w,r[10]=-y,r[11]=0,r[12]=O,r[13]=M,r[14]=T,r[15]=1,r):new c(u,s,h,O,v,g,w,M,-p,-m,-y,T,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,r,n,a){var i=Math.tan(.5*e),o=1/i,u=o/t,s=(n+r)/(r-n),c=2*n*r/(r-n);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=o,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=s,a[11]=-1,a[12]=0,a[13]=0,a[14]=c,a[15]=0,a},c.computeOrthographicOffCenter=function(e,t,r,n,a,i,o){var u=1/(t-e),s=1/(n-r),c=1/(i-a),l=-(t+e)*u,f=-(n+r)*s,d=-(i+a)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=d,o[15]=1,o +},c.computePerspectiveOffCenter=function(e,t,r,n,a,i,o){var u=2*a/(t-e),s=2*a/(n-r),c=(t+e)/(t-e),l=(n+r)/(n-r),f=-(i+a)/(i-a),d=-1,h=-2*i*a/(i-a);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=d,o[12]=0,o[13]=0,o[14]=h,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,r,n,a,i){var o=2*a/(t-e),u=2*a/(n-r),s=(t+e)/(t-e),c=(n+r)/(n-r),l=-1,f=-1,d=-2*a;return i[0]=o,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=u,i[6]=0,i[7]=0,i[8]=s,i[9]=c,i[10]=l,i[11]=f,i[12]=0,i[13]=0,i[14]=d,i[15]=0,i},c.computeViewportTransformation=function(e,t,n,a){e=r(e,r.EMPTY_OBJECT);var i=r(e.x,0),o=r(e.y,0),u=r(e.width,0),s=r(e.height,0);t=r(t,0),n=r(n,1);var c=.5*u,l=.5*s,f=.5*(n-t),d=c,h=l,p=f,m=i+c,y=o+l,v=t+f,g=1;return a[0]=d,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=h,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=p,a[11]=0,a[12]=m,a[13]=y,a[14]=v,a[15]=g,a},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,r){var n=4*t,a=e[n],i=e[n+1],o=e[n+2],u=e[n+3];return r.x=a,r.y=i,r.z=o,r.w=u,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var a=4*t;return n[a]=r.x,n[a+1]=r.y,n[a+2]=r.z,n[a+3]=r.w,n},c.setTranslation=function(e,t,r){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=t.x,r[13]=t.y,r[14]=t.z,r[15]=e[15],r},c.getRow=function(e,t,r){var n=e[t],a=e[t+4],i=e[t+8],o=e[t+12];return r.x=n,r.y=a,r.z=i,r.w=o,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+4]=r.y,n[t+8]=r.z,n[t+12]=r.w,n};var h=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],h)),r.y=e.magnitude(e.fromElements(t[4],t[5],t[6],h)),r.z=e.magnitude(e.fromElements(t[8],t[9],t[10],h)),r};var p=new e;c.getMaximumScale=function(t){return c.getScale(t,p),e.maximumComponent(p)},c.multiply=function(e,t,r){var n=e[0],a=e[1],i=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],d=e[9],h=e[10],p=e[11],m=e[12],y=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],O=t[4],M=t[5],T=t[6],_=t[7],P=t[8],b=t[9],N=t[10],A=t[11],I=t[12],C=t[13],z=t[14],R=t[15],D=n*w+u*x+f*E+m*S,L=a*w+s*x+d*E+y*S,q=i*w+c*x+h*E+v*S,U=o*w+l*x+p*E+g*S,B=n*O+u*M+f*T+m*_,W=a*O+s*M+d*T+y*_,F=i*O+c*M+h*T+v*_,G=o*O+l*M+p*T+g*_,k=n*P+u*b+f*N+m*A,H=a*P+s*b+d*N+y*A,V=i*P+c*b+h*N+v*A,Y=o*P+l*b+p*N+g*A,j=n*I+u*C+f*z+m*R,Z=a*I+s*C+d*z+y*R,X=i*I+c*C+h*z+v*R,J=o*I+l*C+p*z+g*R;return r[0]=D,r[1]=L,r[2]=q,r[3]=U,r[4]=B,r[5]=W,r[6]=F,r[7]=G,r[8]=k,r[9]=H,r[10]=V,r[11]=Y,r[12]=j,r[13]=Z,r[14]=X,r[15]=J,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r[9]=e[9]+t[9],r[10]=e[10]+t[10],r[11]=e[11]+t[11],r[12]=e[12]+t[12],r[13]=e[13]+t[13],r[14]=e[14]+t[14],r[15]=e[15]+t[15],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r[9]=e[9]-t[9],r[10]=e[10]-t[10],r[11]=e[11]-t[11],r[12]=e[12]-t[12],r[13]=e[13]-t[13],r[14]=e[14]-t[14],r[15]=e[15]-t[15],r},c.multiplyTransformation=function(e,t,r){var n=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=e[12],h=e[13],p=e[14],m=t[0],y=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],O=t[10],M=t[12],T=t[13],_=t[14],P=n*m+o*y+c*v,b=a*m+u*y+l*v,N=i*m+s*y+f*v,A=n*g+o*w+c*x,I=a*g+u*w+l*x,C=i*g+s*w+f*x,z=n*E+o*S+c*O,R=a*E+u*S+l*O,D=i*E+s*S+f*O,L=n*M+o*T+c*_+d,q=a*M+u*T+l*_+h,U=i*M+s*T+f*_+p;return r[0]=P,r[1]=b,r[2]=N,r[3]=0,r[4]=A,r[5]=I,r[6]=C,r[7]=0,r[8]=z,r[9]=R,r[10]=D,r[11]=0,r[12]=L,r[13]=q,r[14]=U,r[15]=1,r},c.multiplyByMatrix3=function(e,t,r){var n=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=t[0],h=t[1],p=t[2],m=t[3],y=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=n*d+o*h+c*p,S=a*d+u*h+l*p,O=i*d+s*h+f*p,M=n*m+o*y+c*v,T=a*m+u*y+l*v,_=i*m+s*y+f*v,P=n*g+o*w+c*x,b=a*g+u*w+l*x,N=i*g+s*w+f*x;return r[0]=E,r[1]=S,r[2]=O,r[3]=0,r[4]=M,r[5]=T,r[6]=_,r[7]=0,r[8]=P,r[9]=b,r[10]=N,r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r},c.multiplyByTranslation=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=n*e[0]+a*e[4]+i*e[8]+e[12],u=n*e[1]+a*e[5]+i*e[9]+e[13],s=n*e[2]+a*e[6]+i*e[10]+e[14];return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=o,r[13]=u,r[14]=s,r[15]=e[15],r};var m=new e;c.multiplyByUniformScale=function(e,t,r){return m.x=t,m.y=t,m.z=t,c.multiplyByScale(e,m,r)},c.multiplyByScale=function(e,t,r){var n=t.x,a=t.y,i=t.z;return 1===n&&1===a&&1===i?c.clone(e,r):(r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=0,r[4]=a*e[4],r[5]=a*e[5],r[6]=a*e[6],r[7]=0,r[8]=i*e[8],r[9]=i*e[9],r[10]=i*e[10],r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=1,r)},c.multiplyByVector=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=t.w,u=e[0]*n+e[4]*a+e[8]*i+e[12]*o,s=e[1]*n+e[5]*a+e[9]*i+e[13]*o,c=e[2]*n+e[6]*a+e[10]*i+e[14]*o,l=e[3]*n+e[7]*a+e[11]*i+e[15]*o;return r.x=u,r.y=s,r.z=c,r.w=l,r},c.multiplyByPointAsVector=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=e[0]*n+e[4]*a+e[8]*i,u=e[1]*n+e[5]*a+e[9]*i,s=e[2]*n+e[6]*a+e[10]*i;return r.x=o,r.y=u,r.z=s,r},c.multiplyByPoint=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=e[0]*n+e[4]*a+e[8]*i+e[12],u=e[1]*n+e[5]*a+e[9]*i+e[13],s=e[2]*n+e[6]*a+e[10]*i+e[14];return r.x=o,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r[9]=e[9]*t,r[10]=e[10]*t,r[11]=e[11]*t,r[12]=e[12]*t,r[13]=e[13]*t,r[14]=e[14]*t,r[15]=e[15]*t,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var r=e[1],n=e[2],a=e[3],i=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=i,t[10]=e[10],t[11]=e[14],t[12]=a,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r&&Math.abs(e[9]-t[9])<=r&&Math.abs(e[10]-t[10])<=r&&Math.abs(e[11]-t[11])<=r&&Math.abs(e[12]-t[12])<=r&&Math.abs(e[13]-t[13])<=r&&Math.abs(e[14]-t[14])<=r&&Math.abs(e[15]-t[15])<=r},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,r){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return r[0]=0,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=0,r[11]=0,r[12]=-e[12],r[13]=-e[13],r[14]=-e[14],r[15]=1,r;var n=e[0],a=e[4],i=e[8],l=e[12],f=e[1],d=e[5],h=e[9],p=e[13],m=e[2],x=e[6],E=e[10],S=e[14],O=e[3],M=e[7],T=e[11],_=e[15],P=E*_,b=S*T,N=x*_,A=S*M,I=x*T,C=E*M,z=m*_,R=S*O,D=m*T,L=E*O,q=m*M,U=x*O,B=P*d+A*h+I*p-(b*d+N*h+C*p),W=b*f+z*h+L*p-(P*f+R*h+D*p),F=N*f+R*d+q*p-(A*f+z*d+U*p),G=C*f+D*d+U*h-(I*f+L*d+q*h),k=b*a+N*i+C*l-(P*a+A*i+I*l),H=P*n+R*i+D*l-(b*n+z*i+L*l),V=A*n+z*a+U*l-(N*n+R*a+q*l),Y=I*n+L*a+q*i-(C*n+D*a+U*i);P=i*p,b=l*h,N=a*p,A=l*d,I=a*h,C=i*d,z=n*p,R=l*f,D=n*h,L=i*f,q=n*d,U=a*f;var j=P*M+A*T+I*_-(b*M+N*T+C*_),Z=b*O+z*T+L*_-(P*O+R*T+D*_),X=N*O+R*M+q*_-(A*O+z*M+U*_),J=C*O+D*M+U*T-(I*O+L*M+q*T),K=N*E+C*S+b*x-(I*S+P*x+A*E),Q=D*S+P*m+R*E-(z*E+L*S+b*m),$=z*x+U*S+A*m-(q*S+N*m+R*x),et=q*E+I*m+L*x-(D*x+U*E+C*m),tt=n*B+a*W+i*F+l*G;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,r[0]=B*tt,r[1]=W*tt,r[2]=F*tt,r[3]=G*tt,r[4]=k*tt,r[5]=H*tt,r[6]=V*tt,r[7]=Y*tt,r[8]=j*tt,r[9]=Z*tt,r[10]=X*tt,r[11]=J*tt,r[12]=K*tt,r[13]=Q*tt,r[14]=$*tt,r[15]=et*tt,r},c.inverseTransformation=function(e,t){var r=e[0],n=e[1],a=e[2],i=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],d=e[13],h=e[14],p=-r*f-n*d-a*h,m=-i*f-o*d-u*h,y=-s*f-c*d-l*h;return t[0]=r,t[1]=i,t[2]=s,t[3]=0,t[4]=n,t[5]=o,t[6]=c,t[7]=0,t[8]=a,t[9]=u,t[10]=l,t[11]=0,t[12]=p,t[13]=m,t[14]=y,t[15]=1,t},c.IDENTITY=i(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]&&e[9]===t[r+9]&&e[10]===t[r+10]&&e[11]===t[r+11]&&e[12]===t[r+12]&&e[13]===t[r+13]&&e[14]===t[r+14]&&e[15]===t[r+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n){"use strict";var a=function(t,r){this.normal=e.clone(t),this.distance=r};a.fromPointNormal=function(r,n,i){var o=-e.dot(n,r);return t(i)?(e.clone(n,i.normal),i.distance=o,i):new a(n,o)};var i=new e;return a.fromCartesian4=function(r,n){var o=e.fromCartesian4(r,i),u=r.w;return t(n)?(e.clone(o,n.normal),n.distance=u,n):new a(o,u)},a.getPointDistance=function(t,r){return e.dot(t.normal,r)+t.distance},a.ORIGIN_XY_PLANE=n(new a(e.UNIT_Z,0)),a.ORIGIN_YZ_PLANE=n(new a(e.UNIT_X,0)),a.ORIGIN_ZX_PLANE=n(new a(e.UNIT_Y,0)),a}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,r,n,a,i,o,u){"use strict";var s=function(e,r,n,a){this.west=t(e,0),this.south=t(r,0),this.east=t(n,0),this.north=t(a,0)};n(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,r,n){n=t(n,0),r[n++]=e.west,r[n++]=e.south,r[n++]=e.east,r[n]=e.north},s.unpack=function(e,n,a){return n=t(n,0),r(a)||(a=new s),a.west=e[n++],a.south=e[n++],a.east=e[n++],a.north=e[n],a},s.computeWidth=function(e){var t=e.east,r=e.west;return r>t&&(t+=u.TWO_PI),t-r},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,n,a,i,o){return e=u.toRadians(t(e,0)),n=u.toRadians(t(n,0)),a=u.toRadians(t(a,0)),i=u.toRadians(t(i,0)),r(o)?(o.west=e,o.south=n,o.east=a,o.north=i,o):new s(e,n,a,i)},s.fromCartographicArray=function(e,t){for(var n=Number.MAX_VALUE,a=-Number.MAX_VALUE,i=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];n=Math.min(n,l.longitude),a=Math.max(a,l.longitude),i=Math.min(i,l.latitude),o=Math.max(o,l.latitude)}return r(t)?(t.west=n,t.south=i,t.east=a,t.north=o,t):new s(n,i,a,o)},s.clone=function(e,t){return r(e)?r(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return r(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.south,n.height=0,n):new e(t.west,t.south)},s.northwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.north,n.height=0,n):new e(t.west,t.north)},s.northeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.north,n.height=0,n):new e(t.east,t.north)},s.southeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.south,n.height=0,n):new e(t.east,t.south)},s.center=function(t,n){var a=t.east,i=t.west;i>a&&(a+=u.TWO_PI);var o=u.negativePiToPi(.5*(i+a)),s=.5*(t.south+t.north);return r(n)?(n.longitude=o,n.latitude=s,n.height=0,n):new e(o,s)},s.intersection=function(e,t,n){var a=e.east,i=e.west,o=t.east,c=t.west;i>a&&o>0?a+=u.TWO_PI:c>o&&a>0&&(o+=u.TWO_PI),i>a&&0>c?c+=u.TWO_PI:c>o&&0>i&&(i+=u.TWO_PI);var l=u.negativePiToPi(Math.max(i,c)),f=u.negativePiToPi(Math.min(a,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var d=Math.max(e.south,t.south),h=Math.min(e.north,t.north);return d>=h?void 0:r(n)?(n.west=l,n.south=d,n.east=f,n.north=h,n):new s(l,d,f,h)},s.contains=function(e,t){var r=t.longitude,n=t.latitude,a=e.west,i=e.east;return a>i&&(i+=u.TWO_PI,0>r&&(r+=u.TWO_PI)),(r>a||u.equalsEpsilon(r,a,u.EPSILON14))&&(i>r||u.equalsEpsilon(r,i,u.EPSILON14))&&n>=e.south&&n<=e.north};var c=new e;return s.subsample=function(e,n,a,o){n=t(n,i.WGS84),a=t(a,0),r(o)||(o=[]);var l=0,f=e.north,d=e.south,h=e.east,p=e.west,m=c;m.height=a,m.longitude=p,m.latitude=f,o[l]=n.cartographicToCartesian(m,o[l]),l++,m.longitude=h,o[l]=n.cartographicToCartesian(m,o[l]),l++,m.latitude=d,o[l]=n.cartographicToCartesian(m,o[l]),l++,m.longitude=p,o[l]=n.cartographicToCartesian(m,o[l]),l++,m.latitude=0>f?f:d>0?d:0;for(var y=1;8>y;++y)m.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,m)&&(o[l]=n.cartographicToCartesian(m,o[l]),l++);return 0===m.latitude&&(m.longitude=p,o[l]=n.cartographicToCartesian(m,o[l]),l++,m.longitude=h,o[l]=n.cartographicToCartesian(m,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,r,n,a,i,o,u,s,c,l,f,d){"use strict";var h=function(t,n){this.center=e.clone(r(t,e.ZERO)),this.radius=r(n,0)},p=new e,m=new e,y=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,O=new e,M=new e,T=new e;h.fromPoints=function(t,r){if(n(r)||(r=new h),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;for(var a=e.clone(t[0],x),i=e.clone(a,p),o=e.clone(a,m),u=e.clone(a,y),s=e.clone(a,v),c=e.clone(a,g),l=e.clone(a,w),f=t.length,d=1;f>d;d++){e.clone(t[d],a);var _=a.x,P=a.y,b=a.z;_<i.x&&e.clone(a,i),_>s.x&&e.clone(a,s),P<o.y&&e.clone(a,o),P>c.y&&e.clone(a,c),b<u.z&&e.clone(a,u),b>l.z&&e.clone(a,l)}var N=e.magnitudeSquared(e.subtract(s,i,E)),A=e.magnitudeSquared(e.subtract(c,o,E)),I=e.magnitudeSquared(e.subtract(l,u,E)),C=i,z=s,R=N;A>R&&(R=A,C=o,z=c),I>R&&(R=I,C=u,z=l);var D=S;D.x=.5*(C.x+z.x),D.y=.5*(C.y+z.y),D.z=.5*(C.z+z.z);var L=e.magnitudeSquared(e.subtract(z,D,E)),q=Math.sqrt(L),U=O;U.x=i.x,U.y=o.y,U.z=u.z;var B=M;B.x=s.x,B.y=c.y,B.z=l.z;var W=e.multiplyByScalar(e.add(U,B,E),.5,T),F=0;for(d=0;f>d;d++){e.clone(t[d],a);var G=e.magnitude(e.subtract(a,W,E));G>F&&(F=G);var k=e.magnitudeSquared(e.subtract(a,D,E));if(k>L){var H=Math.sqrt(k);q=.5*(q+H),L=q*q;var V=H-q;D.x=(q*D.x+V*a.x)/H,D.y=(q*D.y+V*a.y)/H,D.z=(q*D.z+V*a.z)/H}}return F>q?(e.clone(D,r.center),r.radius=q):(e.clone(W,r.center),r.radius=F),r};var _=new u,P=new e,b=new e,N=new t,A=new t;h.fromRectangle2D=function(e,t,r){return h.fromRectangleWithHeights2D(e,t,0,0,r)},h.fromRectangleWithHeights2D=function(t,a,i,o,u){if(n(u)||(u=new h),!n(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;a=r(a,_),d.southwest(t,N),N.height=i,d.northeast(t,A),A.height=o;var s=a.project(N,P),c=a.project(A,b),l=c.x-s.x,f=c.y-s.y,p=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+p*p);var m=u.center;return m.x=s.x+.5*l,m.y=s.y+.5*f,m.z=s.z+.5*p,u};var I=[];h.fromRectangle3D=function(e,t,a,i){t=r(t,o.WGS84),a=r(a,0);var u;return n(e)&&(u=d.subsample(e,t,a,I)),h.fromPoints(u,i)},h.fromVertices=function(t,a,i,o){if(n(o)||(o=new h),!n(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;a=r(a,e.ZERO),i=r(i,3);var u=x;u.x=t[0]+a.x,u.y=t[1]+a.y,u.z=t[2]+a.z;for(var s=e.clone(u,p),c=e.clone(u,m),l=e.clone(u,y),f=e.clone(u,v),d=e.clone(u,g),_=e.clone(u,w),P=t.length,b=0;P>b;b+=i){var N=t[b]+a.x,A=t[b+1]+a.y,I=t[b+2]+a.z;u.x=N,u.y=A,u.z=I,N<s.x&&e.clone(u,s),N>f.x&&e.clone(u,f),A<c.y&&e.clone(u,c),A>d.y&&e.clone(u,d),I<l.z&&e.clone(u,l),I>_.z&&e.clone(u,_)}var C=e.magnitudeSquared(e.subtract(f,s,E)),z=e.magnitudeSquared(e.subtract(d,c,E)),R=e.magnitudeSquared(e.subtract(_,l,E)),D=s,L=f,q=C;z>q&&(q=z,D=c,L=d),R>q&&(q=R,D=l,L=_);var U=S;U.x=.5*(D.x+L.x),U.y=.5*(D.y+L.y),U.z=.5*(D.z+L.z);var B=e.magnitudeSquared(e.subtract(L,U,E)),W=Math.sqrt(B),F=O;F.x=s.x,F.y=c.y,F.z=l.z;var G=M;G.x=f.x,G.y=d.y,G.z=_.z;var k=e.multiplyByScalar(e.add(F,G,E),.5,T),H=0;for(b=0;P>b;b+=i){u.x=t[b]+a.x,u.y=t[b+1]+a.y,u.z=t[b+2]+a.z;var V=e.magnitude(e.subtract(u,k,E));V>H&&(H=V);var Y=e.magnitudeSquared(e.subtract(u,U,E));if(Y>B){var j=Math.sqrt(Y);W=.5*(W+j),B=W*W;var Z=j-W;U.x=(W*U.x+Z*u.x)/j,U.y=(W*U.y+Z*u.y)/j,U.z=(W*U.z+Z*u.z)/j}}return H>W?(e.clone(U,o.center),o.radius=W):(e.clone(k,o.center),o.radius=H),o},h.fromCornerPoints=function(t,r,a){n(a)||(a=new h);var i=a.center;return e.add(t,r,i),e.multiplyByScalar(i,.5,i),a.radius=e.distance(i,r),a},h.fromEllipsoid=function(t,r){return n(r)||(r=new h),e.clone(e.ZERO,r.center),r.radius=t.maximumRadius,r};var C=new e;h.fromBoundingSpheres=function(t,r){if(n(r)||(r=new h),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;var a=t.length;if(1===a)return h.clone(t[0],r);if(2===a)return h.union(t[0],t[1],r);for(var i=[],o=0;a>o;o++)i.push(t[o].center);r=h.fromPoints(i,r);var u=r.center,s=r.radius;for(o=0;a>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,C)+c.radius)}return r.radius=s,r},h.clone=function(t,r){return n(t)?n(r)?(r.center=e.clone(t.center,r.center),r.radius=t.radius,r):new h(t.center,t.radius):void 0},h.packedLength=4,h.pack=function(e,t,n){n=r(n,0);var a=e.center;t[n++]=a.x,t[n++]=a.y,t[n++]=a.z,t[n]=e.radius},h.unpack=function(e,t,a){t=r(t,0),n(a)||(a=new h);var i=a.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],a.radius=e[t],a};var z=new e,R=new e;h.union=function(t,r,a){n(a)||(a=new h);var i=t.center,o=t.radius,u=r.center,s=r.radius,c=e.subtract(u,i,z),l=e.magnitude(c);if(o>=l+s)return t.clone(a),a;if(s>=l+o)return r.clone(a),a;var f=.5*(o+l+s),d=e.multiplyByScalar(c,(-o+f)/l,R);return e.add(d,i,d),e.clone(d,a.center),a.radius=f,a};var D=new e;h.expand=function(t,r,n){n=h.clone(t,n);var a=e.magnitude(e.subtract(r,n.center,D));return a>n.radius&&(n.radius=a),n},h.intersectPlane=function(t,r){var n=t.center,a=t.radius,i=r.normal,o=e.dot(i,n)+r.distance;return-a>o?s.OUTSIDE:a>o?s.INTERSECTING:s.INSIDE};var L=new f(new e,0);h.intersect=function(e,t){a("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var r=f.fromCartesian4(t,L);return h.intersectPlane(e,r)},h.transform=function(e,t,r){return n(r)||(r=new h),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=l.getMaximumScale(t)*e.radius,r};var q=new e;h.distanceSquaredTo=function(t,r){var n=e.subtract(t.center,r,q);return e.magnitudeSquared(n)-t.radius*t.radius},h.transformWithoutScale=function(e,t,r){return n(r)||(r=new h),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=e.radius,r};var U=new e;h.computePlaneDistances=function(t,r,a,i){n(i)||(i=new c);var o=e.subtract(t.center,r,U),u=e.multiplyByScalar(a,e.dot(a,o),U),s=e.magnitude(u);return i.start=s-t.radius,i.stop=s+t.radius,i};for(var B=new e,W=new e,F=new e,G=new e,k=new e,H=new t,V=new Array(8),Y=0;8>Y;++Y)V[Y]=new e;var j=new u;return h.projectTo2D=function(t,n,a){n=r(n,j);var i=n.ellipsoid,o=t.center,u=t.radius,s=i.geodeticSurfaceNormal(o,B),c=e.cross(e.UNIT_Z,s,W);e.normalize(c,c);var l=e.cross(s,c,F);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,k),d=e.negate(c,G),p=V,m=p[0];e.add(s,l,m),e.add(m,c,m),m=p[1],e.add(s,l,m),e.add(m,d,m),m=p[2],e.add(s,f,m),e.add(m,d,m),m=p[3],e.add(s,f,m),e.add(m,c,m),e.negate(s,s),m=p[4],e.add(s,l,m),e.add(m,c,m),m=p[5],e.add(s,l,m),e.add(m,d,m),m=p[6],e.add(s,f,m),e.add(m,d,m),m=p[7],e.add(s,f,m),e.add(m,c,m);for(var y=p.length,v=0;y>v;++v){var g=p[v];e.add(o,g,g);var w=i.cartesianToCartographic(g,H);n.project(w,g)}a=h.fromPoints(p,a),o=a.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,a},h.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&t.radius===r.radius},h.prototype.intersectPlane=function(e){return h.intersectPlane(this,e)},h.prototype.intersect=function(e){return h.intersect(this,e)},h.prototype.equals=function(e){return h.equals(this,e)},h.prototype.clone=function(e){return h.clone(this,e)},h}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var r,n={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},a={};return t(a,{element:{get:function(){return a.supportsFullscreen()?document[n.fullscreenElement]:void 0}},changeEventName:{get:function(){return a.supportsFullscreen()?n.fullscreenchange:void 0}},errorEventName:{get:function(){return a.supportsFullscreen()?n.fullscreenerror:void 0}},enabled:{get:function(){return a.supportsFullscreen()?document[n.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return a.supportsFullscreen()?null!==a.element:void 0}}}),a.supportsFullscreen=function(){if(e(r))return r;r=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return n.requestFullscreen="requestFullscreen",n.exitFullscreen="exitFullscreen",n.fullscreenEnabled="fullscreenEnabled",n.fullscreenElement="fullscreenElement",n.fullscreenchange="fullscreenchange",n.fullscreenerror="fullscreenerror",r=!0;for(var a,i=["webkit","moz","o","ms","khtml"],o=0,u=i.length;u>o;++o){var s=i[o];a=s+"RequestFullscreen","function"==typeof t[a]?(n.requestFullscreen=a,r=!0):(a=s+"RequestFullScreen","function"==typeof t[a]&&(n.requestFullscreen=a,r=!0)),a=s+"ExitFullscreen","function"==typeof document[a]?n.exitFullscreen=a:(a=s+"CancelFullScreen","function"==typeof document[a]&&(n.exitFullscreen=a)),a=s+"FullscreenEnabled",e(document[a])?n.fullscreenEnabled=a:(a=s+"FullScreenEnabled",e(document[a])&&(n.fullscreenEnabled=a)),a=s+"FullscreenElement",e(document[a])?n.fullscreenElement=a:(a=s+"FullScreenElement",e(document[a])&&(n.fullscreenElement=a)),a=s+"fullscreenchange",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenChange"),n.fullscreenchange=a),a=s+"fullscreenerror",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenError"),n.fullscreenerror=a)}return r},a.requestFullscreen=function(e){a.supportsFullscreen()&&e[n.requestFullscreen]()},a.exitFullscreen=function(){a.supportsFullscreen()&&document[n.exitFullscreen]()},a}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,r){"use strict";function n(e){for(var t=e.split("."),r=0,n=t.length;n>r;++r)t[r]=parseInt(t[r],10);return t}function a(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=n(e[1]))}return y}function i(){return a()&&v}function o(){if(!t(g)&&(g=!1,!a()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=n(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=n(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,O=n(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,O=n(e[1])))}return S}function f(){return l()&&O}function d(){if(!t(M)){M=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(M=!0,T=n(e[1]))}return M}function h(){return t(_)||(_=/Windows/i.test(navigator.appVersion)),_}function p(){return d()&&T}function m(){return t(P)||(P=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),P}var y,v,g,w,x,E,S,O,M,T,_,P,b={isChrome:a,chromeVersion:i,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:d,firefoxVersion:p,isWindows:h,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:m};return b.supportsFullscreen=function(){return r.supportsFullscreen()},b.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},b.supportsWebWorkers=function(){return"undefined"!=typeof Worker},b}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,r,n,a){"use strict";if(!n.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(e){switch(e){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new r("componentDatatype is not a valid value.")}},i.fromTypedArray=function(e){return e instanceof Int8Array?i.BYTE:e instanceof Uint8Array?i.UNSIGNED_BYTE:e instanceof Int16Array?i.SHORT:e instanceof Uint16Array?i.UNSIGNED_SHORT:e instanceof Float32Array?i.FLOAT:e instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(e){return t(e)&&(e===i.BYTE||e===i.UNSIGNED_BYTE||e===i.SHORT||e===i.UNSIGNED_SHORT||e===i.FLOAT||e===i.DOUBLE)},i.createTypedArray=function(e,t){switch(e){case i.BYTE:return new Int8Array(t);case i.UNSIGNED_BYTE:return new Uint8Array(t);case i.SHORT:return new Int16Array(t);case i.UNSIGNED_SHORT:return new Uint16Array(t);case i.FLOAT:return new Float32Array(t);case i.DOUBLE:return new Float64Array(t);default:throw new r("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(t,n,a,o){switch(a=e(a,0),o=e(o,(n.byteLength-a)/i.getSizeInBytes(t)),t){case i.BYTE:return new Int8Array(n,a,o);case i.UNSIGNED_BYTE:return new Uint8Array(n,a,o);case i.SHORT:return new Int16Array(n,a,o);case i.UNSIGNED_SHORT:return new Uint16Array(n,a,o);case i.FLOAT:return new Float32Array(n,a,o);case i.DOUBLE:return new Float64Array(n,a,o);default:throw new r("componentDatatype is not a valid value.")}},a(i)}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,r,n,a,i,o){"use strict";var u=function(n,a,i){this.minimum=e.clone(t(n,e.ZERO)),this.maximum=e.clone(t(a,e.ZERO)),r(i)?i=e.clone(i):(i=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(i,.5,i)),this.center=i};u.fromPoints=function(t,n){if(r(n)||(n=new u),!r(t)||0===t.length)return n.minimum=e.clone(e.ZERO,n.minimum),n.maximum=e.clone(e.ZERO,n.maximum),n.center=e.clone(e.ZERO,n.center),n;for(var a=t[0].x,i=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,f=t.length,d=1;f>d;d++){var h=t[d],p=h.x,m=h.y,y=h.z;a=Math.min(p,a),s=Math.max(p,s),i=Math.min(m,i),c=Math.max(m,c),o=Math.min(y,o),l=Math.max(y,l)}var v=n.minimum;v.x=a,v.y=i,v.z=o;var g=n.maximum;g.x=s,g.y=c,g.z=l;var w=e.add(v,g,n.center);return e.multiplyByScalar(w,.5,w),n},u.clone=function(t,n){return r(t)?r(n)?(n.minimum=e.clone(t.minimum,n.minimum),n.maximum=e.clone(t.maximum,n.maximum),n.center=e.clone(t.center,n.center),n):new u(t.minimum,t.maximum):void 0},u.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&e.equals(t.minimum,n.minimum)&&e.equals(t.maximum,n.maximum)};var s=new e;u.intersectPlane=function(t,r){s=e.subtract(t.maximum,t.minimum,s);var n=e.multiplyByScalar(s,.5,s),a=r.normal,o=n.x*Math.abs(a.x)+n.y*Math.abs(a.y)+n.z*Math.abs(a.z),u=e.dot(t.center,a)+r.distance;return u-o>0?i.INSIDE:0>u+o?i.OUTSIDE:i.INTERSECTING};var c=new o(new e,0);return u.intersect=function(e,t){n("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var r=o.fromCartesian4(t,c);return u.intersectPlane(e,r)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r){this.x=e(t,0),this.y=e(r,0)};i.fromElements=function(e,r,n){return t(n)?(n.x=e,n.y=r,n):new i(e,r)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r):new i(e.x,e.y):void 0},i.fromCartesian3=i.clone,i.fromCartesian4=i.clone,i.packedLength=2,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n]=t.y},i.unpack=function(r,n,a){return n=e(n,0),t(a)||(a=new i),a.x=r[n++],a.y=r[n],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y)},i.minimumComponent=function(e){return Math.min(e.x,e.y)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i,c=new i;i.angleBetween=function(e,t){return i.normalize(e,s),i.normalize(t,c),a.acosClamped(i.dot(s,c))};var l=new i;return i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,l);return i.abs(r,r),t=r.x<=r.y?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Y,t) +},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&a.equalsEpsilon(e.x,r.x,n,i)&&a.equalsEpsilon(e.y,r.y,n,i)},i.ZERO=n(new i(0,0)),i.UNIT_X=n(new i(1,0)),i.UNIT_Y=n(new i(0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+")"},i}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function r(e,r,n){var a=e+r;return t.sign(e)!==t.sign(r)&&Math.abs(a/Math.max(Math.abs(e),Math.abs(r)))<n?0:a}var n={};return n.computeDiscriminant=function(e,t,r){var n=t*t-4*e*r;return n},n.computeRealRoots=function(e,n,a){var i;if(0===e)return 0===n?[]:[-a/n];if(0===n){if(0===a)return[0,0];var o=Math.abs(a),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(i=-a/e,0>i)return[];var s=Math.sqrt(i);return[-s,s]}if(0===a)return i=-n/e,0>i?[i,0]:[0,i];var c=n*n,l=4*e*a,f=r(c,-l,t.EPSILON14);if(0>f)return[];var d=-.5*r(n,t.sign(n)*Math.sqrt(f),t.EPSILON14);return n>0?[d/e,a/d]:[a/d,d/e]},n}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function r(e,t,r,n){var a,i,o=e,u=t/3,s=r/3,c=n,l=o*s,f=u*c,d=u*u,h=s*s,p=o*s-d,m=o*c-u*s,y=u*c-h,v=4*p*y-m*m;if(0>v){var g,w,x;d*f>=l*h?(g=o,w=p,x=-2*u*p+o*m):(g=c,w=y,x=-c*m+2*s*y);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);i=-x+S;var O=i/2,M=0>O?-Math.pow(-O,1/3):Math.pow(O,1/3),T=i===S?-M:-w/M;return a=0>=w?M+T:-x/(M*M+T*T+w),d*f>=l*h?[(a-u)/o]:[-c/(a+s)]}var _=p,P=-2*u*p+o*m,b=y,N=-c*m+2*s*y,A=Math.sqrt(v),I=Math.sqrt(3)/2,C=Math.abs(Math.atan2(o*A,-P)/3);a=2*Math.sqrt(-_);var z=Math.cos(C);i=a*z;var R=a*(-z/2-I*Math.sin(C)),D=i+R>2*u?i-u:R-u,L=o,q=D/L;C=Math.abs(Math.atan2(c*A,-N)/3),a=2*Math.sqrt(-b),z=Math.cos(C),i=a*z,R=a*(-z/2-I*Math.sin(C));var U=-c,B=2*s>i+R?i+s:R+s,W=U/B,F=L*B,G=-D*B-L*U,k=D*U,H=(s*G-u*k)/(-u*G+s*F);return H>=q?W>=q?W>=H?[q,H,W]:[q,W,H]:[W,q,H]:W>=q?[H,q,W]:W>=H?[H,W,q]:[W,H,q]}var n={};return n.computeDiscriminant=function(e,t,r,n){var a=e*e,i=t*t,o=r*r,u=n*n,s=18*e*t*r*n+i*o-27*a*u-4*(e*o*r+i*t*n);return s},n.computeRealRoots=function(e,n,a,i){var o,u;if(0===e)return t.computeRealRoots(n,a,i);if(0===n){if(0===a){if(0===i)return[0,0,0];u=-i/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===i?(o=t.computeRealRoots(e,0,a),0===o.Length?[0]:[o[0],0,o[1]]):r(e,0,a,i)}return 0===a?0===i?(u=-n/e,0>u?[u,0,0]:[0,0,u]):r(e,n,0,i):0===i?(o=t.computeRealRoots(e,n,a),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):r(e,n,a,i)},n}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,r,n){"use strict";function a(t,a,i,o){var u=t*t,s=a-3*u/8,c=i-a*t/2+u*t/8,l=o-i*t/4+a*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var d=-t/4,h=f[f.length-1];if(Math.abs(h)<r.EPSILON14){var p=n.computeRealRoots(1,s,l);if(2===p.length){var m,y=p[0],v=p[1];if(y>=0&&v>=0){var g=Math.sqrt(y),w=Math.sqrt(v);return[d-w,d-g,d+g,d+w]}if(y>=0&&0>v)return m=Math.sqrt(y),[d-m,d+m];if(0>y&&v>=0)return m=Math.sqrt(v),[d-m,d+m]}return[]}if(h>0){var x=Math.sqrt(h),E=(s+h-c/x)/2,S=(s+h+c/x)/2,O=n.computeRealRoots(1,x,E),M=n.computeRealRoots(1,-x,S);return 0!==O.length?(O[0]+=d,O[1]+=d,0!==M.length?(M[0]+=d,M[1]+=d,O[1]<=M[0]?[O[0],O[1],M[0],M[1]]:M[1]<=O[0]?[M[0],M[1],O[0],O[1]]:O[0]>=M[0]&&O[1]<=M[1]?[M[0],O[0],O[1],M[1]]:M[0]>=O[0]&&M[1]<=O[1]?[O[0],M[0],M[1],O[1]]:O[0]>M[0]&&O[0]<M[1]?[M[0],O[0],M[1],O[1]]:[O[0],M[0],O[1],M[1]]):O):0!==M.length?(M[0]+=d,M[1]+=d,M):[]}}return[]}function i(t,a,i,o){var u=i*i,s=a*a,c=t*t,l=-2*a,f=i*t+s-4*o,d=c*o-i*a*t+u,h=e.computeRealRoots(1,l,f,d);if(h.length>0){var p,m,y=h[0],v=a-y,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),O=c-4*y,M=c+4*Math.abs(y);if(0>y||O*S>E*M){var T=Math.sqrt(O);p=T/2,m=0===T?0:(t*x-i)/T}else{var _=Math.sqrt(E);p=0===_?0:(t*x-i)/_,m=_/2}var P,b;0===w&&0===p?(P=0,b=0):r.sign(w)===r.sign(p)?(P=w+p,b=y/P):(b=w-p,P=y/b);var N,A;0===x&&0===m?(N=0,A=0):r.sign(x)===r.sign(m)?(N=x+m,A=o/N):(A=x-m,N=o/A);var I=n.computeRealRoots(1,P,N),C=n.computeRealRoots(1,b,A);if(0!==I.length)return 0!==C.length?I[1]<=C[0]?[I[0],I[1],C[0],C[1]]:C[1]<=I[0]?[C[0],C[1],I[0],I[1]]:I[0]>=C[0]&&I[1]<=C[1]?[C[0],I[0],I[1],C[1]]:C[0]>=I[0]&&C[1]<=I[1]?[I[0],C[0],C[1],I[1]]:I[0]>C[0]&&I[0]<C[1]?[C[0],I[0],C[1],I[1]]:[I[0],C[0],I[1],C[1]]:I;if(0!==C.length)return C}return[]}var o={};return o.computeDiscriminant=function(e,t,r,n,a){var i=e*e,o=i*e,u=t*t,s=u*t,c=r*r,l=c*r,f=n*n,d=f*n,h=a*a,p=h*a,m=u*c*f-4*s*d-4*e*l*f+18*e*t*r*d-27*i*f*f+256*o*p+a*(18*s*r*n-4*u*l+16*e*c*c-80*e*t*c*n-6*e*u*f+144*i*r*f)+h*(144*e*u*r-27*u*u-128*i*c-192*i*t*n);return m},o.computeRealRoots=function(t,n,o,u,s){if(Math.abs(t)<r.EPSILON15)return e.computeRealRoots(n,o,u,s);var c=n/t,l=o/t,f=u/t,d=s/t,h=0>c?1:0;switch(h+=0>l?h+1:h,h+=0>f?h+1:h,h+=0>d?h+1:h){case 0:return a(c,l,f,d);case 1:return i(c,l,f,d);case 2:return i(c,l,f,d);case 3:return a(c,l,f,d);case 4:return a(c,l,f,d);case 5:return i(c,l,f,d);case 6:return a(c,l,f,d);case 7:return a(c,l,f,d);case 8:return i(c,l,f,d);case 9:return a(c,l,f,d);case 10:return a(c,l,f,d);case 11:return i(c,l,f,d);case 12:return a(c,l,f,d);case 13:return a(c,l,f,d);case 14:return a(c,l,f,d);case 15:return a(c,l,f,d);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=function(r,n){n=e.clone(t(n,e.ZERO)),e.equals(n,e.ZERO)||e.normalize(n,n),this.origin=e.clone(t(r,e.ZERO)),this.direction=n};return n.getPoint=function(t,n,a){return r(a)||(a=new e),a=e.multiplyByScalar(t.direction,n,a),e.add(t.origin,a,a)},n}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,r,n,a,i,o,u,s,c){"use strict";function l(t,n,a,o,u){u=r(u,!1);var s,c,l,f,d,h=t.origin,p=t.direction,m=e.subtract(a,n,y),E=e.subtract(o,n,v),S=e.cross(p,E,g),O=e.dot(m,S);if(u){if(O<i.EPSILON6)return void 0;if(s=e.subtract(h,n,w),l=e.dot(s,S),0>l||l>O)return void 0;if(c=e.cross(s,m,x),f=e.dot(p,c),0>f||l+f>O)return void 0;d=e.dot(E,c)/O}else{if(Math.abs(O)<i.EPSILON6)return void 0;var M=1/O;if(s=e.subtract(h,n,w),l=e.dot(s,S)*M,0>l||l>1)return void 0;if(c=e.cross(s,m,x),f=e.dot(p,c)*M,0>f||l+f>1)return void 0;d=e.dot(E,c)*M}return d}function f(e,t,r,n){var a=t*t-4*e*r;if(0>a)return void 0;if(a>0){var i=1/(2*e),o=Math.sqrt(a),u=(-t+o)*i,s=(-t-o)*i;return s>u?(n.root0=u,n.root1=s):(n.root0=s,n.root1=u),n}var c=-t/(2*e);return 0===c?void 0:(n.root0=n.root1=c,n)}function d(t,r,a){n(a)||(a={});var i=t.origin,o=t.direction,u=r.center,s=r.radius*r.radius,c=e.subtract(i,u,g),l=e.dot(o,o),d=2*e.dot(o,c),h=e.magnitudeSquared(c)-s,p=f(l,d,h,S);return n(p)?(a.start=p.root0,a.stop=p.root1,a):void 0}function h(e,t,r){var n=e+t;return i.sign(e)!==i.sign(t)&&Math.abs(n/Math.max(Math.abs(e),Math.abs(t)))<r?0:n}function p(t,r,n,a,c){var l,f=a*a,d=c*c,p=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*d,m=c*(a*h(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],i.EPSILON15)+r.y),y=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*d+a*r.x+n,v=d*h(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],i.EPSILON15),g=c*(a*h(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+r.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(p,m,y),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(a,c*x,c*-E)),w.push(new e(a,c*x,c*E)),2===l.length){var S=l[1],O=Math.sqrt(Math.max(1-S*S,0));w.push(new e(a,c*S,c*-O)),w.push(new e(a,c*S,c*O))}return w}var M=g*g,T=v*v,_=p*p,P=g*v,b=_+T,N=2*(m*p+P),A=2*y*p+m*m-T+M,I=2*(y*m-P),C=y*y-M;if(0===b&&0===N&&0===A&&0===I)return w;l=s.computeRealRoots(b,N,A,I,C);var z=l.length;if(0===z)return w;for(var R=0;z>R;++R){var D,L=l[R],q=L*L,U=Math.max(1-q,0),B=Math.sqrt(U);D=i.sign(p)===i.sign(y)?h(p*q+y,m*L,i.EPSILON12):i.sign(y)===i.sign(m*L)?h(p*q,m*L+y,i.EPSILON12):h(p*q+m*L,y,i.EPSILON12);var W=h(v*L,g,i.EPSILON15),F=D*W;0>F?w.push(new e(a,c*L,c*B)):F>0?w.push(new e(a,c*L,c*-B)):0!==B?(w.push(new e(a,c*L,c*-B)),w.push(new e(a,c*L,c*B)),++R):w.push(new e(a,c*L,c*B))}return w}var m={};m.rayPlane=function(t,r,a){n(a)||(a=new e);var o=t.origin,u=t.direction,s=r.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON15)return void 0;var l=(-r.distance-e.dot(s,o))/c;return 0>l?void 0:(a=e.multiplyByScalar(u,l,a),e.add(o,a,a))};var y=new e,v=new e,g=new e,w=new e,x=new e;m.rayTriangle=function(t,r,a,i,o,u){var s=l(t,r,a,i,o);return!n(s)||0>s?void 0:(n(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;m.lineSegmentTriangle=function(t,r,a,i,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(r,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,a,i,o,u);return!n(f)||0>f||f>e.distance(t,r)?void 0:(n(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};m.raySphere=function(e,t,r){return r=d(e,t,r),!n(r)||r.stop<0?void 0:(r.start=Math.max(r.start,0),r)};var O=new c;m.lineSegmentSphere=function(t,r,a,i){var o=O;e.clone(t,o.origin);var u=e.subtract(r,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),i=d(o,a,i),!n(i)||i.stop<0||i.start>s?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i)};var M=new e,T=new e;m.rayEllipsoid=function(t,r){var n,a,i,o,u,s=r.oneOverRadii,c=e.multiplyComponents(s,t.origin,M),l=e.multiplyComponents(s,t.direction,T),f=e.magnitudeSquared(c),d=e.dot(c,l);if(f>1){if(d>=0)return void 0;var h=d*d;if(n=f-1,a=e.magnitudeSquared(l),i=a*n,i>h)return void 0;if(h>i){o=d*d-i,u=-d+Math.sqrt(o);var p=u/a,m=n/u;return m>p?{start:p,stop:m}:{start:m,stop:p}}var y=Math.sqrt(n/a);return{start:y,stop:y}}return 1>f?(n=f-1,a=e.magnitudeSquared(l),i=a*n,o=d*d-i,u=-d+Math.sqrt(o),{start:0,stop:u/a}):0>d?(a=e.magnitudeSquared(l),{start:0,stop:-d/a}):void 0};var _=new e,P=new e,b=new e,N=new e,A=new e,I=new o,C=new o,z=new o,R=new o,D=new o,L=new o,q=new o,U=new e,B=new e,W=new t;m.grazingAltitudeLocation=function(t,r){var a=t.origin,u=t.direction,s=r.geodeticSurfaceNormal(a,_);if(e.dot(u,s)>=0)return a;var c=n(this.rayEllipsoid(t,r)),l=r.transformPositionToScaledSpace(u,_),f=e.normalize(l,l),d=e.mostOrthogonalAxis(l,N),h=e.normalize(e.cross(d,f,P),P),m=e.normalize(e.cross(f,h,b),b),y=I;y[0]=f.x,y[1]=f.y,y[2]=f.z,y[3]=h.x,y[4]=h.y,y[5]=h.z,y[6]=m.x,y[7]=m.y,y[8]=m.z;var v=o.transpose(y,C),g=o.fromScale(r.radii,z),w=o.fromScale(r.oneOverRadii,R),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,O=o.multiply(o.multiply(v,w,L),x,L),M=o.multiply(o.multiply(O,g,q),y,q),T=o.multiplyByVector(O,a,A),F=p(M,e.negate(T,_),0,0,1),G=F.length;if(G>0){for(var k=e.clone(e.ZERO,B),H=Number.NEGATIVE_INFINITY,V=0;G>V;++V){E=o.multiplyByVector(g,o.multiplyByVector(y,F[V],U),U);var Y=e.normalize(e.subtract(E,a,N),N),j=e.dot(Y,u);j>H&&(H=j,k=e.clone(E,k))}var Z=r.cartesianToCartographic(k,W);return H=i.clamp(H,0,1),S=e.magnitude(e.subtract(k,a,N))*Math.sqrt(1-H*H),S=c?-S:S,Z.height=S,r.cartographicToCartesian(Z,new e)}return void 0};var F=new e;return m.lineSegmentPlane=function(t,r,a,o){n(o)||(o=new e);var u=e.subtract(r,t,F),s=a.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON6)return void 0;var l=e.dot(s,t),f=-(a.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},m.trianglePlaneIntersection=function(t,r,n,a){var i=a.normal,o=a.distance,u=e.dot(i,t)+o<0,s=e.dot(i,r)+o<0,c=e.dot(i,n)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,d;if((1===l||2===l)&&(f=new e,d=new e),1===l){if(u)return m.lineSegmentPlane(t,r,a,f),m.lineSegmentPlane(t,n,a,d),{positions:[t,r,n,f,d],indices:[0,3,4,1,2,4,1,4,3]};if(s)return m.lineSegmentPlane(r,n,a,f),m.lineSegmentPlane(r,t,a,d),{positions:[t,r,n,f,d],indices:[1,3,4,2,0,4,2,4,3]};if(c)return m.lineSegmentPlane(n,t,a,f),m.lineSegmentPlane(n,r,a,d),{positions:[t,r,n,f,d],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return m.lineSegmentPlane(r,t,a,f),m.lineSegmentPlane(n,t,a,d),{positions:[t,r,n,f,d],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return m.lineSegmentPlane(n,r,a,f),m.lineSegmentPlane(t,r,a,d),{positions:[t,r,n,f,d],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return m.lineSegmentPlane(t,n,a,f),m.lineSegmentPlane(r,n,a,d),{positions:[t,r,n,f,d],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},m}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,r,n,a){return t(e).then(r,n,a)}function t(e){var t,r;return e instanceof n?t=e:u(e)?(r=o(),e.then(function(e){r.resolve(e)},function(e){r.reject(e)},function(e){r.progress(e)}),t=r.promise):t=a(e),t}function r(t){return e(t,i)}function n(e){this.then=e}function a(e){var r=new n(function(r){try{return t(r?r(e):e)}catch(n){return i(n)}});return r}function i(e){var r=new n(function(r,n){try{return n?t(n(e)):i(e)}catch(a){return i(a)}});return r}function o(){function e(e,t,r){return d(e,t,r)}function r(e){return p(e)}function a(e){return p(i(e))}function u(e){return h(e)}var s,c,l,f,d,h,p;return c=new n(e),s={then:e,resolve:r,reject:a,progress:u,promise:c,resolver:{resolve:r,reject:a,progress:u}},l=[],f=[],d=function(e,t,r){var n,a;return n=o(),a="function"==typeof r?function(e){try{n.progress(r(e))}catch(t){n.progress(t)}}:function(e){n.progress(e)},l.push(function(r){r.then(e,t).then(n.resolve,n.reject,a)}),f.push(a),n.promise},h=function(e){return m(f,e),e},p=function(e){return e=t(e),d=e.then,p=t,h=v,m(l,e),f=l=E,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,r,n,a,i){return y(2,arguments),e(t,function(t){function u(e){m(e)}function s(e){p(e)}var c,l,f,d,h,p,m,y,g,w;if(g=t.length>>>0,c=Math.max(0,Math.min(r,g)),f=[],l=g-c+1,d=[],h=o(),c)for(y=h.progress,m=function(e){d.push(e),--l||(p=m=v,h.reject(d))},p=function(e){f.push(e),--c||(p=m=v,h.resolve(f))},w=0;g>w;++w)w in t&&e(t[w],s,u,y);else h.resolve(f);return h.then(n,a,i)})}function c(e,t,r,n){function a(e){return t?t(e[0]):e[0]}return s(e,1,a,r,n)}function l(e,t,r,n){return y(1,arguments),d(e,g).then(t,r,n)}function f(){return d(arguments,g)}function d(t,r){return e(t,function(t){var n,a,i,u,s,c;if(i=a=t.length>>>0,n=[],c=o(),i)for(u=function(t,a){e(t,r).then(function(e){n[a]=e,--i||c.resolve(n)},c.reject)},s=0;a>s;s++)s in t?u(t[s],s):--i;else c.resolve(n);return c.promise})}function h(t,r){var n=x.call(arguments,1);return e(t,function(t){var a;return a=t.length,n[0]=function(t,n,i){return e(t,function(t){return e(n,function(e){return r(t,e,i,a)})})},w.apply(t,n)})}function p(t,r,n){var a=arguments.length>2;return e(t,function(e){return e=a?n:e,r.resolve(e),e},function(e){return r.reject(e),i(e)},r.progress)}function m(e,t){for(var r,n=0;r=e[n++];)r(t)}function y(e,t){for(var r,n=t.length;n>e;)if(r=t[--n],null!=r&&"function"!=typeof r)throw new Error("arg "+n+" must be a function")}function v(){}function g(e){return e}var w,x,E;return e.defer=o,e.resolve=t,e.reject=r,e.join=f,e.all=l,e.map=d,e.reduce=h,e.any=c,e.some=s,e.chain=p,e.isPromise=u,n.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(E,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(E,t)})})}},x=[].slice,w=[].reduce||function(e){var t,r,n,a,i;if(i=0,t=Object(this),a=t.length>>>0,r=arguments,r.length<=1)for(;;){if(i in t){n=t[i++];break}if(++i>=a)throw new TypeError}else n=r[1];for(;a>i;++i)i in t&&(n=e(n,t[i],i,t));return n},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,r){for(var n,a,i=0,o=e.length-1;o>=i;)if(n=~~((i+o)/2),a=r(e[n],t),0>a)i=n+1;else{if(!(a>0))return n;o=n-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,r,n,a){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=r,this.yPoleOffset=n,this.ut1MinusUtc=a};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,r=0,n=t[r++],a=function(e,t,r,n){r||(r=" ");var a=e.length>=t?"":Array(1+t-e.length>>>0).join(r);return n?e+a:a+e},i=function(e,t,r,n,i,o){var u=n-e.length;return u>0&&(e=r||!i?a(e,n,o,r):e.slice(0,t.length)+a("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,r,n,o,u,s){var c=e>>>0;return r=r&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=r+a(c.toString(t),u||0,"0",!1),i(e,r,n,o,s)},u=function(e,t,r,n,a,o){return null!=n&&(e=e.slice(0,n)),i(e,"",t,r,a,o)},s=function(e,n,s,c,l,f,d){var h,p,m,y,v;if("%%"==e)return"%";for(var g=!1,w="",x=!1,E=!1,S=" ",O=s.length,M=0;s&&O>M;M++)switch(s.charAt(M)){case" ":w=" ";break;case"+":w="+";break;case"-":g=!0;break;case"'":S=s.charAt(M+1);break;case"0":x=!0;break;case"#":E=!0}if(c=c?"*"==c?+t[r++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,g=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(f=f?"*"==f?+t[r++]:"*"==f.charAt(0)?+t[f.slice(1,-1)]:+f:"fFeE".indexOf(d)>-1?6:"d"==d?0:void 0,v=n?t[n.slice(0,-1)]:t[r++],d){case"s":return u(String(v),g,c,f,x,S);case"c":return u(String.fromCharCode(+v),g,c,f,x);case"b":return o(v,2,E,g,c,f,x);case"o":return o(v,8,E,g,c,f,x);case"x":return o(v,16,E,g,c,f,x);case"X":return o(v,16,E,g,c,f,x).toUpperCase();case"u":return o(v,10,E,g,c,f,x);case"i":case"d":return h=+v||0,h=Math.round(h-h%1),p=0>h?"-":w,v=p+a(String(Math.abs(h)),f,"0",!1),i(v,p,g,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return h=+v,p=0>h?"-":w,m=["toExponential","toFixed","toPrecision"]["efg".indexOf(d.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(d)%2],v=p+Math.abs(h)[m](f),i(v,p,g,c,x)[y]();default:return e}};return n.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,r,n,a,i,o,u){this.year=e,this.month=t,this.day=r,this.hour=n,this.minute=a,this.second=i,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,r,n,a,i,o,u,s,c){"use strict";function l(e,t){return N.compare(e.julianDate,t.julianDate)}function f(e){g.julianDate=e;var r=N.leapSeconds,n=t(r,g,l);0>n&&(n=~n),n>=r.length&&(n=r.length-1);var a=r[n].offset;if(n>0){var i=N.secondsDifference(r[n].julianDate,e);i>a&&(n--,a=r[n].offset)}N.addSeconds(e,a,e)}function d(e,r){g.julianDate=e;var n=N.leapSeconds,a=t(n,g,l);if(0>a&&(a=~a),0===a)return N.addSeconds(e,-n[0].offset,r);if(a>=n.length)return N.addSeconds(e,-n[a-1].offset,r);var i=N.secondsDifference(n[a].julianDate,e);return 0===i?N.addSeconds(e,-n[a].offset,r):1>=i?void 0:N.addSeconds(e,-n[--a].offset,r)}function h(e,t,r){var n=0|t/s.SECONDS_PER_DAY;return e+=n,t-=s.SECONDS_PER_DAY*n,0>t&&(e--,t+=s.SECONDS_PER_DAY),r.dayNumber=e,r.secondsOfDay=t,r}function p(e,t,r,n,a,i,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+r-32075;n-=12,0>n&&(n+=24);var f=i+(n*s.SECONDS_PER_HOUR+a*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return f>=43200&&(l-=1),[l,f]}var m=new i,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,g=new u,w=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,E=/^(\d{4})-?(\d{3})$/,S=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,O=/^(\d{4})-?(\d{2})-?(\d{2})$/,M=/([Z+\-])?(\d{2})?:?(\d{2})?$/,T=/^(\d{2})(\.\d+)?/.source+M.source,_=/^(\d{2}):?(\d{2})(\.\d+)?/.source+M.source,P=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+M.source,b="Invalid ISO 8601 date.",N=function(e,t,n){this.dayNumber=void 0,this.secondsOfDay=void 0,e=r(e,0),t=r(t,0),n=r(n,c.UTC);var a=0|e;t+=(e-a)*s.SECONDS_PER_DAY,h(a,t,this),n===c.UTC&&f(this)};N.fromDate=function(e,t){var r=p(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return n(t)?(h(r[0],r[1],t),f(t),t):new N(r[0],r[1],c.UTC)},N.fromIso8601=function(e,t){e=e.replace(",",".");var r,i,u,s=e.split("T"),l=1,d=1,m=0,g=0,M=0,A=0,I=s[0],C=s[1];if(!n(I))throw new a(b);var z;if(s=I.match(O),null!==s){if(z=I.split("-").length-1,z>0&&2!==z)throw new a(b);r=+s[1],l=+s[2],d=+s[3]}else if(s=I.match(x),null!==s)r=+s[1],l=+s[2];else if(s=I.match(w),null!==s)r=+s[1];else{var R;if(s=I.match(E),null!==s){if(r=+s[1],R=+s[2],u=o(r),1>R||u&&R>366||!u&&R>365)throw new a(b)}else{if(s=I.match(S),null===s)throw new a(b);r=+s[1];var D=+s[2],L=+s[3]||0;if(z=I.split("-").length-1,z>0&&(!n(s[3])&&1!==z||n(s[3])&&2!==z))throw new a(b);var q=new Date(Date.UTC(r,0,4));R=7*D+L-q.getUTCDay()-3}i=new Date(Date.UTC(r,0,1)),i.setUTCDate(R),l=i.getUTCMonth()+1,d=i.getUTCDate()}if(u=o(r),1>l||l>12||1>d||(2!==l||!u)&&d>y[l-1]||u&&2===l&&d>v)throw new a(b);var U;if(n(C)){if(s=C.match(P),null!==s){if(z=C.split(":").length-1,z>0&&2!==z&&3!==z)throw new a(b);m=+s[1],g=+s[2],M=+s[3],A=1e3*+(s[4]||0),U=5}else if(s=C.match(_),null!==s){if(z=C.split(":").length-1,z>0&&1!==z)throw new a(b);m=+s[1],g=+s[2],M=60*+(s[3]||0),U=4}else{if(s=C.match(T),null===s)throw new a(b);m=+s[1],g=60*+(s[2]||0),U=3}if(g>=60||M>=61||m>24||24===m&&(g>0||M>0||A>0))throw new a(b);var B=s[U],W=+s[U+1],F=+(s[U+2]||0);switch(B){case"+":m-=W,g-=F;break;case"-":m+=W,g+=F;break;case"Z":break;default:g+=new Date(Date.UTC(r,l-1,d,m,g)).getTimezoneOffset()}}else g+=new Date(r,l-1,d).getTimezoneOffset();var G=60===M;for(G&&M--;g>=60;)g-=60,m++;for(;m>=24;)m-=24,d++;for(i=u&&2===l?v:y[l-1];d>i;)d-=i,l++,l>12&&(l-=12,r++),i=u&&2===l?v:y[l-1];for(;0>g;)g+=60,m--;for(;0>m;)m+=24,d--;for(;1>d;)l--,1>l&&(l+=12,r--),i=u&&2===l?v:y[l-1],d+=i;var k=p(r,l,d,m,g,M,A);return n(t)?(h(k[0],k[1],t),f(t)):t=new N(k[0],k[1],c.UTC),G&&N.addSeconds(t,1,t),t},N.now=function(e){return N.fromDate(new Date,e)};var A=new N(0,0,c.TAI);return N.toGregorianDate=function(e,t){var r=!1,a=d(e,A);n(a)||(N.addSeconds(e,-1,A),a=d(A,A),r=!0);var o=a.dayNumber,u=a.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var f=0|4e3*(c+1)/1461001;c=0|c-(0|1461*f/4)+31;var h=0|80*c/2447,p=0|c-(0|2447*h/80);c=0|h/11;var m=0|h+2-12*c,y=0|100*(l-49)+f+c,v=0|u/s.SECONDS_PER_HOUR,g=u-v*s.SECONDS_PER_HOUR,w=0|g/s.SECONDS_PER_MINUTE;g-=w*s.SECONDS_PER_MINUTE;var x=0|g,E=(g-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),r&&(x+=1),n(t)?(t.year=y,t.month=m,t.day=p,t.hour=v,t.minute=w,t.second=x,t.millisecond=E,t.isLeapSecond=r,t):new i(y,m,p,v,w,x,E,r)},N.toDate=function(e){var t=N.toGregorianDate(e,m),r=t.second;return t.isLeapSecond&&(r-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,r,t.millisecond))},N.toIso8601=function(t,r){var a,i=N.toGregorianDate(t,i);return n(r)||0===i.millisecond?n(r)&&0!==r?(a=(.01*i.millisecond).toFixed(r).replace(".","").slice(0,r),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",i.year,i.month,i.day,i.hour,i.minute,i.second):(a=(.01*i.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a))},N.clone=function(e,t){return n(e)?n(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new N(e.dayNumber,e.secondsOfDay,c.TAI):void 0},N.compare=function(e,t){var r=e.dayNumber-t.dayNumber;return 0!==r?r:e.secondsOfDay-t.secondsOfDay},N.equals=function(e,t){return e===t||n(e)&&n(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},N.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(N.secondsDifference(e,t))<=r},N.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},N.secondsDifference=function(e,t){var r=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return r+(e.secondsOfDay-t.secondsOfDay)},N.daysDifference=function(e,t){var r=e.dayNumber-t.dayNumber,n=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return r+n},N.computeTaiMinusUtc=function(e){g.julianDate=e;var r=N.leapSeconds,n=t(r,g,l);return 0>n&&(n=~n,--n,0>n&&(n=0)),r[n].offset},N.addSeconds=function(e,t,r){return h(e.dayNumber,e.secondsOfDay+t,r)},N.addMinutes=function(e,t,r){var n=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return h(e.dayNumber,n,r)},N.addHours=function(e,t,r){var n=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return h(e.dayNumber,n,r)},N.addDays=function(e,t,r){var n=e.dayNumber+t;return h(n,e.secondsOfDay,r)},N.lessThan=function(e,t){return N.compare(e,t)<0},N.lessThanOrEquals=function(e,t){return N.compare(e,t)<=0},N.greaterThan=function(e,t){return N.compare(e,t)>0},N.greaterThanOrEquals=function(e,t){return N.compare(e,t)>=0},N.prototype.clone=function(e){return N.clone(this,e)},N.prototype.equals=function(e){return N.equals(this,e)},N.prototype.equalsEpsilon=function(e,t){return N.equalsEpsilon(this,e,t)},N.prototype.toString=function(){return N.toIso8601(this)},N.leapSeconds=[new u(new N(2441317,43210,c.TAI),10),new u(new N(2441499,43211,c.TAI),11),new u(new N(2441683,43212,c.TAI),12),new u(new N(2442048,43213,c.TAI),13),new u(new N(2442413,43214,c.TAI),14),new u(new N(2442778,43215,c.TAI),15),new u(new N(2443144,43216,c.TAI),16),new u(new N(2443509,43217,c.TAI),17),new u(new N(2443874,43218,c.TAI),18),new u(new N(2444239,43219,c.TAI),19),new u(new N(2444786,43220,c.TAI),20),new u(new N(2445151,43221,c.TAI),21),new u(new N(2445516,43222,c.TAI),22),new u(new N(2446247,43223,c.TAI),23),new u(new N(2447161,43224,c.TAI),24),new u(new N(2447892,43225,c.TAI),25),new u(new N(2448257,43226,c.TAI),26),new u(new N(2448804,43227,c.TAI),27),new u(new N(2449169,43228,c.TAI),28),new u(new N(2449534,43229,c.TAI),29),new u(new N(2450083,43230,c.TAI),30),new u(new N(2450630,43231,c.TAI),31),new u(new N(2451179,43232,c.TAI),32),new u(new N(2453736,43233,c.TAI),33),new u(new N(2454832,43234,c.TAI),34),new u(new N(2456109,43235,c.TAI),35),new u(new N(2457204,43236,c.TAI),36)],N}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(r,n){if(null===r||"object"!=typeof r)return r;n=e(n,!1);var a=new r.constructor;for(var i in r)if(r.hasOwnProperty(i)){var o=r[i];n&&(o=t(o,n)),a[i]=o}return a};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var r=e.split("\r\n"),n=0;n<r.length;++n){var a=r[n],i=a.indexOf(": ");if(i>0){var o=a.substring(0,i),u=a.substring(i+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var r=function(e,r,n){this.statusCode=e,this.response=r,this.responseHeaders=n,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return r.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},r}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,r,n,a,i){"use strict";function o(e,t){var r=decodeURIComponent(t);return e?atob(r):r}function u(e,t){for(var r=o(e,t),n=new ArrayBuffer(r.length),a=new Uint8Array(n),i=0;i<r.length;i++)a[i]=r.charCodeAt(i);return n}function s(e,r){r=t(r,"");var a=e[1],i=!!e[2],s=e[3];switch(r){case"":case"text":return o(i,s);case"arraybuffer":return u(i,s);case"blob":var c=u(i,s);return new Blob([c],{type:a});case"document":var l=new DOMParser;return l.parseFromString(o(i,s),a);case"json":return JSON.parse(o(i,s));default:throw new n("Unhandled responseType: "+r)}}var c=function(r){r=t(r,t.EMPTY_OBJECT);var n=r.responseType,a=t(r.method,"GET"),i=r.data,o=r.headers,u=r.overrideMimeType;return e(r.url,function(t){var r=e.defer();return c.load(t,n,a,i,o,r,u),r.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,n,o,u,c,f){var d=l.exec(e);if(null!==d)return c.resolve(s(d,t)),void 0;var h=new XMLHttpRequest;if(r(f)&&r(h.overrideMimeType)&&h.overrideMimeType(f),h.open(n,e,!0),r(u))for(var p in u)u.hasOwnProperty(p)&&h.setRequestHeader(p,u[p]);r(t)&&(h.responseType=t),h.onload=function(){200===h.status?r(h.response)?c.resolve(h.response):r(h.responseXML)&&h.responseXML.hasChildNodes()?c.resolve(h.responseXML):r(h.responseText)?c.resolve(h.responseText):c.reject(new i("unknown XMLHttpRequest response type.")):c.reject(new a(h.status,h.response,h.getAllResponseHeaders()))},h.onerror=function(){c.reject(new a)},h.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,r){return e({url:t,headers:r})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,r,n){"use strict";var a={Accept:"application/json,*/*;q=0.01"},i=function(r,i){return t(i)?t(i.Accept)||(i=e(i),i.Accept=a.Accept):i=a,n(r,i).then(function(e){return JSON.parse(e)})};return i}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,r,n,a,i,o,u,s,c,l,f){"use strict";function d(e,t){return o.compare(e.julianDate,t)}function h(e,r){if(!n(r.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!n(r.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var a=r.columnNames.indexOf("modifiedJulianDateUtc"),i=r.columnNames.indexOf("xPoleWanderRadians"),s=r.columnNames.indexOf("yPoleWanderRadians"),c=r.columnNames.indexOf("ut1MinusUtcSeconds"),h=r.columnNames.indexOf("xCelestialPoleOffsetRadians"),p=r.columnNames.indexOf("yCelestialPoleOffsetRadians"),m=r.columnNames.indexOf("taiMinusUtcSeconds");if(0>a||0>i||0>s||0>c||0>h||0>p||0>m)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=r.samples,v=e._dates=[];e._dateColumn=a,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=h,e._yCelestialPoleOffsetRadiansColumn=p,e._taiMinusUtcSecondsColumn=m,e._columnCount=r.columnNames.length,e._lastIndex=void 0;for(var g,w=e._addNewLeapSeconds,x=0,E=y.length;E>x;x+=e._columnCount){var S=y[x+a],O=y[x+m],M=S+l.MODIFIED_JULIAN_DATE_DIFFERENCE,T=new o(M,O,f.TAI);if(v.push(T),w){if(O!==g&&n(g)){var _=o.leapSeconds,P=t(_,T,d);if(0>P){var b=new u(T,O);_.splice(~P,0,b)}}g=O}}}function p(e,t,r,n,a){var i=r*n;a.xPoleWander=t[i+e._xPoleWanderRadiansColumn],a.yPoleWander=t[i+e._yPoleWanderRadiansColumn],a.xPoleOffset=t[i+e._xCelestialPoleOffsetRadiansColumn],a.yPoleOffset=t[i+e._yCelestialPoleOffsetRadiansColumn],a.ut1MinusUtc=t[i+e._ut1MinusUtcSecondsColumn]}function m(e,t,r){return t+e*(r-t)}function y(e,t,r,n,a,i,u){var s=e._columnCount;if(i>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u; +var c=t[a],l=t[i];if(c.equals(l)||n.equals(c))return p(e,r,a,s,u),u;if(n.equals(l))return p(e,r,i,s,u),u;var f=o.secondsDifference(n,c)/o.secondsDifference(l,c),d=a*s,h=i*s,y=r[d+e._ut1MinusUtcSecondsColumn],v=r[h+e._ut1MinusUtcSecondsColumn],g=v-y;if(g>.5||-.5>g){var w=r[d+e._taiMinusUtcSecondsColumn],x=r[h+e._taiMinusUtcSecondsColumn];w!==x&&(l.equals(n)?y=v:v-=x-w)}return u.xPoleWander=m(f,r[d+e._xPoleWanderRadiansColumn],r[h+e._xPoleWanderRadiansColumn]),u.yPoleWander=m(f,r[d+e._yPoleWanderRadiansColumn],r[h+e._yPoleWanderRadiansColumn]),u.xPoleOffset=m(f,r[d+e._xCelestialPoleOffsetRadiansColumn],r[h+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=m(f,r[d+e._yCelestialPoleOffsetRadiansColumn],r[h+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=m(f,y,v),u}var v=function(t){if(t=r(t,r.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=r(t.addNewLeapSeconds,!0),n(t.data))h(this,t.data);else if(n(t.url)){var a=this;this._downloadPromise=e(s(t.url),function(e){h(a,e)},function(){a._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else h(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return v.NONE=i({getPromiseToLoad:function(){return e()},compute:function(e,t){return n(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new a(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,r){if(!n(this._samples)){if(n(this._dataError))throw new c(this._dataError);return void 0}if(n(r)||(r=new a(0,0,0,0,0)),0===this._samples.length)return r.xPoleWander=0,r.yPoleWander=0,r.xPoleOffset=0,r.yPoleOffset=0,r.ut1MinusUtc=0,r;var i=this._dates,u=this._lastIndex,s=0,l=0;if(n(u)){var f=i[u],d=i[u+1],h=o.lessThanOrEquals(f,e),p=!n(d),m=p||o.greaterThanOrEquals(d,e);if(h&&m)return s=u,!p&&d.equals(e)&&++s,l=s+1,y(this,i,this._samples,e,s,l,r),r}var v=t(i,e,o.compare,this._dateColumn);return v>=0?(v<i.length-1&&i[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,i,this._samples,e,s,l,r),r},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var r=n.exec(t);this.scheme=r[1],this.authority=r[2],this.path=r[3],this.query=r[4],this.fragment=r[5]}}function t(e){var t=unescape(e);return i.test(t)?t:e.toUpperCase()}function r(e,t,r,n){return(t||"")+r.toLowerCase()+(n||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var n=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,r).replace(a,t)),this.path&&(this.path=this.path.replace(a,t)),this.query&&(this.query=this.query.replace(a,t)),this.fragment&&(this.fragment=this.fragment.replace(a,t))};var a=/%[0-9a-z]{2}/gi,i=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var r=new e;return this.scheme?(r.scheme=this.scheme,r.authority=this.authority,r.path=this.path,r.query=this.query):(r.scheme=t.scheme,this.authority?(r.authority=this.authority,r.path=this.path,r.query=this.query):(r.authority=t.authority,""==this.path?(r.path=t.path,r.query=this.query||t.query):("/"==this.path.charAt(0)?(r.path=this.path,r.removeDotSegments()):(r.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,r.removeDotSegments()),r.query=this.query))),r.fragment=this.fragment,r},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),r=[],n=""==t[0];for(n&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?r.pop():"."!=e&&r.push(e);("."==e||".."==e)&&r.push(""),n&&r.unshift(""),this.path=r.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,r,n){"use strict";function a(){for(var e=document.getElementsByTagName("script"),t=0,r=e.length;r>t;++t){var n=e[t].getAttribute("src"),a=f.exec(n);if(null!==a)return a[1]}return void 0}function i(){if(t(s))return s;var n;if(n="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:a(),!t(n))throw new r("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(n).resolve(new e(document.location.href))}function o(e){return n.toUrl("../"+e)}function u(t){return new e(t).resolve(i()).toString()}var s,c,l,f=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,d=function(e){t(c)||(c=t(n.toUrl)?o:u),t(l)||(l=document.createElement("a"));var r=c(e);return l.href=r,l.href=l.href,l.href};return d._cesiumScriptRegex=f,d.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},d}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,r){this.x=e,this.y=t,this.s=r};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,r,n,a,i,o,u){"use strict";function s(e,t,r){var n=f;return n.dayNumber=t,n.secondsOfDay=r,i.daysDifference(n,e._sampleZeroDateTT)}function c(r,a){if(r._chunkDownloadsInProgress[a])return r._chunkDownloadsInProgress[a];var i=e.defer();r._chunkDownloadsInProgress[a]=i;var u,s=r._xysFileUrlTemplate;return u=n(s)?s.replace("{0}",a):t("Assets/IAU2006_XYS/IAU2006_XYS_"+a+".json"),e(o(u),function(e){r._chunkDownloadsInProgress[a]=!1;for(var t=r._samples,n=e.samples,o=3*a*r._samplesPerXysFile,u=0,s=n.length;s>u;++u)t[o+u]=n[u];i.resolve()}),i.promise}var l=function(e){e=r(e,r.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=r(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=r(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new i(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=r(e.stepSizeDays,1),this._samplesPerXysFile=r(e.samplesPerXysFile,1e3),this._totalSamples=r(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,n=this._denominators=new Array(t+1),a=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){n[s]=o,a[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(n[s]*=s-c);n[s]=1/n[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},f=new i(0,0,u.TAI);return l.prototype.preload=function(t,r,n,a){var i=s(this,t,r),o=s(this,n,a),u=0|i/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var f=0|u/this._samplesPerXysFile,d=0|l/this._samplesPerXysFile,h=[],p=f;d>=p;++p)h.push(c(this,p));return e.all(h)},l.prototype.computeXysRadians=function(e,t,r){var i=s(this,e,t);if(0>i)return void 0;var o=0|i/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var f=l+u;f>=this._totalSamples&&(f=this._totalSamples-1,l=f-u,0>l&&(l=0));var d=!1,h=this._samples;if(n(h[3*l])||(c(this,0|l/this._samplesPerXysFile),d=!0),n(h[3*f])||(c(this,0|f/this._samplesPerXysFile),d=!0),d)return void 0;n(r)?(r.x=0,r.y=0,r.s=0):r=new a(0,0,0);var p,m,y=i-l*this._stepSizeDays,v=this._work,g=this._denominators,w=this._coef,x=this._xTable;for(p=0;u>=p;++p)v[p]=y-x[p];for(p=0;u>=p;++p){for(w[p]=1,m=0;u>=m;++m)m!==p&&(w[p]*=v[m]);w[p]*=g[p];var E=3*(l+p);r.x+=w[p]*h[E++],r.y+=w[p]*h[E++],r.s+=w[p]*h[E]}return r},l}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,r,n,a,i,o,u){"use strict";var s=function(e,r,n,a){this.x=t(e,0),this.y=t(r,0),this.z=t(n,0),this.w=t(a,0)},c=new e;s.fromAxisAngle=function(t,n,a){var i=n/2,o=Math.sin(i);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,d=Math.cos(i);return r(a)?(a.x=u,a.y=l,a.z=f,a.w=d,a):new s(u,l,f,d)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var n,a,i,o,c,d=e[u.COLUMN0ROW0],h=e[u.COLUMN1ROW1],p=e[u.COLUMN2ROW2],m=d+h+p;if(m>0)n=Math.sqrt(m+1),c=.5*n,n=.5/n,a=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*n,i=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*n,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*n;else{var y=l,v=0;h>d&&(v=1),p>d&&p>h&&(v=2);var g=y[v],w=y[g];n=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=f;x[v]=.5*n,n=.5/n,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*n,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*n,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*n,a=-x[0],i=-x[1],o=-x[2]}return r(t)?(t.x=a,t.y=i,t.z=o,t.w=c,t):new s(a,i,o,c)};var d=new s;s.fromHeadingPitchRoll=function(t,r,n,a){var i=s.fromAxisAngle(e.UNIT_X,n,d),o=s.fromAxisAngle(e.UNIT_Y,-r,a);a=s.multiply(o,i,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,d);return s.multiply(u,a,a)};var h=new e,p=new e,m=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,r,n){n=t(n,0),r[n++]=e.x,r[n++]=e.y,r[n++]=e.z,r[n]=e.w},s.unpack=function(e,n,a){return n=t(n,0),r(a)||(a=new s),a.x=e[n],a.y=e[n+1],a.z=e[n+2],a.w=e[n+3],a},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,r,n){s.unpack(e,4*r,v),s.conjugate(v,v);for(var a=0,i=r-t+1;i>a;a++){var o=3*a;s.unpack(e,4*(t+a),m),s.multiply(m,v,m),m.w<0&&s.negate(m,m),s.computeAxis(m,h);var u=s.computeAngle(m);n[o]=h.x*u,n[o+1]=h.y*u,n[o+2]=h.z*u}},s.unpackInterpolationResult=function(t,n,a,i,o){r(o)||(o=new s),e.fromArray(t,0,p);var u=e.magnitude(p);return s.unpack(n,4*i,y),0===u?s.clone(s.IDENTITY,m):s.fromAxisAngle(p,u,m),s.multiply(m,y,o)},s.clone=function(e,t){return r(e)?r(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var r=1/s.magnitude(e),n=e.x*r,a=e.y*r,i=e.z*r,o=e.w*r;return t.x=n,t.y=a,t.z=i,t.w=o,t},s.inverse=function(e,t){var r=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/r,t)},s.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},s.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,r){var n=e.x,a=e.y,i=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+n*l+a*c-i*s,d=o*s-n*c+a*l+i*u,h=o*c+n*s-a*u+i*l,p=o*l-n*u-a*s-i*c;return r.x=f,r.y=d,r.z=h,r.w=p,r},s.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},s.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},s.computeAxis=function(e,t){var r=e.w;if(Math.abs(r-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var n=1/Math.sqrt(1-r*r);return t.x=e.x*n,t.y=e.y*n,t.z=e.z*n,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,r,n){return g=s.multiplyByScalar(t,r,g),n=s.multiplyByScalar(e,1-r,n),s.add(g,n,n)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,r,n){var a=s.dot(e,t),i=t;if(0>a&&(a=-a,i=w=s.negate(t,w)),1-a<o.EPSILON6)return s.lerp(e,i,r,n);var u=Math.acos(a);return x=s.multiplyByScalar(e,Math.sin((1-r)*u),x),E=s.multiplyByScalar(i,Math.sin(r*u),E),n=s.add(x,E,n),s.multiplyByScalar(n,1/Math.sin(u),n)},s.log=function(t,r){var n=o.acosClamped(t.w),a=0;return 0!==n&&(a=n/Math.sin(n)),e.multiplyByScalar(t,a,r)},s.exp=function(t,r){var n=e.magnitude(t),a=0;return 0!==n&&(a=Math.sin(n)/n),r.x=t.x*a,r.y=t.y*a,r.z=t.z*a,r.w=Math.cos(n),r};var S=new e,O=new e,M=new s,T=new s;s.computeInnerQuadrangle=function(t,r,n,a){var i=s.conjugate(r,M);s.multiply(i,n,T);var o=s.log(T,S);s.multiply(i,t,T);var u=s.log(T,O);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,M),s.multiply(r,M,a)},s.squad=function(e,t,r,n,a,i){var o=s.slerp(e,t,a,M),u=s.slerp(r,n,a,T);return s.slerp(o,u,2*a*(1-a),i)};for(var _=new s,P=1.9011074535173003,b=a.supportsTypedArrays()?new Float32Array(8):[],N=a.supportsTypedArrays()?new Float32Array(8):[],A=a.supportsTypedArrays()?new Float32Array(8):[],I=a.supportsTypedArrays()?new Float32Array(8):[],C=0;7>C;++C){var z=C+1,R=2*z+1;b[C]=1/(z*R),N[C]=z/R}return b[7]=P/136,N[7]=8*P/17,s.fastSlerp=function(e,t,r,n){var a,i=s.dot(e,t);i>=0?a=1:(a=-1,i=-i);for(var o=i-1,u=1-r,c=r*r,l=u*u,f=7;f>=0;--f)A[f]=(b[f]*c-N[f])*o,I[f]=(b[f]*l-N[f])*o;var d=a*r*(1+A[0]*(1+A[1]*(1+A[2]*(1+A[3]*(1+A[4]*(1+A[5]*(1+A[6]*(1+A[7])))))))),h=u*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),p=s.multiplyByScalar(e,h,_);return s.multiplyByScalar(t,d,n),s.add(p,n,n)},s.fastSquad=function(e,t,r,n,a,i){var o=s.fastSlerp(e,t,a,M),u=s.fastSlerp(r,n,a,T);return s.fastSlerp(o,u,2*a*(1-a),i)},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n},s.ZERO=i(new s(0,0,0,0)),s.IDENTITY=i(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,p,m,y,v){"use strict";var g={},w=new r,x=new r,E=new r;g.eastNorthUpToFixedFrame=function(e,t,n){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(n)?(n[0]=0,n[1]=1,n[2]=0,n[3]=0,n[4]=-o,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=o,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,r.normalize(s,s),r.cross(u,s,l),i(n)?(n[0]=s.x,n[1]=s.y,n[2]=s.z,n[3]=0,n[4]=l.x,n[5]=l.y,n[6]=l.z,n[7]=0,n[8]=u.x,n[9]=u.y,n[10]=u.z,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var S=new r,O=new r,M=new r;g.northEastDownToFixedFrame=function(e,t,n){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(n)?(n[0]=-o,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=-o,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=S,s=O,l=M;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,r.normalize(s,s),r.cross(u,s,l),i(n)?(n[0]=l.x,n[1]=l.y,n[2]=l.z,n[3]=0,n[4]=s.x,n[5]=s.y,n[6]=s.z,n[7]=0,n[8]=-u.x,n[9]=-u.y,n[10]=-u.z,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},g.northUpEastToFixedFrame=function(e,t,n){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(n)?(n[0]=-o,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=o,n[7]=0,n[8]=0,n[9]=1,n[10]=0,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,r.normalize(s,s),r.cross(u,s,l),i(n)?(n[0]=l.x,n[1]=l.y,n[2]=l.z,n[3]=0,n[4]=u.x,n[5]=u.y,n[6]=u.z,n[7]=0,n[8]=s.x,n[9]=s.y,n[10]=s.z,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new m(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var T=new y,_=new r(1,1,1),P=new m;g.headingPitchRollToFixedFrame=function(e,t,n,a,i,o){var u=y.fromHeadingPitchRoll(t,n,a,T),s=m.fromTranslationQuaternionRotationScale(r.ZERO,u,_,P);return o=g.eastNorthUpToFixedFrame(e,i,o),m.multiply(o,s,o)};var b=new m,N=new p;g.headingPitchRollQuaternion=function(e,t,r,n,a,i){var o=g.headingPitchRollToFixedFrame(e,t,r,n,a,b),u=m.getRotation(o,N);return y.fromRotationMatrix(u,i)};var A=24110.54841,I=8640184.812866,C=.093104,z=-62e-7,R=1.1772758384668e-19,D=72921158553e-15,L=h.TWO_PI/86400,q=new d;g.computeTemeToPseudoFixedMatrix=function(e,t){q=d.addSeconds(e,-d.computeTaiMinusUtc(e),q);var r,n=q.dayNumber,a=q.secondsOfDay,o=n-2451545;r=a>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=A+r*(I+r*(C+r*z)),s=u*L%h.TWO_PI,c=D+R*(n-2451545.5),l=(a+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,f=s+c*l,m=Math.cos(f),y=Math.sin(f);return i(t)?(t[0]=m,t[1]=-y,t[2]=0,t[3]=y,t[4]=m,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new p(m,y,0,-y,m,0,0,0,1)},g.iau2006XysData=new l,g.earthOrientationParameters=u.NONE;var U=32.184,B=2451545;g.preloadIcrfFixed=function(t){var r=t.start.dayNumber,n=t.start.secondsOfDay+U,a=t.stop.dayNumber,i=t.stop.secondsOfDay+U,o=g.iau2006XysData.preload(r,n,a,i),u=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},g.computeIcrfToFixedMatrix=function(e,t){i(t)||(t=new p);var r=g.computeFixedToIcrfMatrix(e,t);return i(r)?p.transpose(r,t):void 0};var W=new f(0,0,0),F=new s(0,0,0,0,0,0),G=new p,k=new p;g.computeFixedToIcrfMatrix=function(e,t){i(t)||(t=new p);var r=g.earthOrientationParameters.compute(e,F);if(!i(r))return void 0;var n=e.dayNumber,a=e.secondsOfDay+U,o=g.iau2006XysData.computeXysRadians(n,a,W);if(!i(o))return void 0;var u=o.x+r.xPoleOffset,s=o.y+r.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=G;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var f=p.fromRotationZ(-o.s,k),m=p.multiply(l,f,G),y=e.dayNumber,w=e.secondsOfDay-d.computeTaiMinusUtc(e)+r.ut1MinusUtc,x=y-2451545,E=w/v.SECONDS_PER_DAY,S=.779057273264+E+.00273781191135448*(x+E);S=S%1*h.TWO_PI;var O=p.fromRotationZ(S,k),M=p.multiply(m,O,G),T=Math.cos(r.xPoleWander),_=Math.cos(r.yPoleWander),P=Math.sin(r.xPoleWander),b=Math.sin(r.yPoleWander),N=n-B+a/v.SECONDS_PER_DAY;N/=36525;var A=-47e-6*N*h.RADIANS_PER_DEGREE/3600,I=Math.cos(A),C=Math.sin(A),z=k;return z[0]=T*I,z[1]=T*C,z[2]=P,z[3]=-_*C+b*P*I,z[4]=_*I+b*P*C,z[5]=-b*T,z[6]=-b*C-_*P*I,z[7]=b*I-_*P*C,z[8]=_*T,p.multiply(M,z,t)};var H=new n;g.pointToWindowCoordinates=function(e,t,r,n){return n=g.pointToGLWindowCoordinates(e,t,r,n),n.y=2*t[5]-n.y,n},g.pointToGLWindowCoordinates=function(e,r,a,o){i(o)||(o=new t);var u=H;return m.multiplyByVector(e,n.fromElements(a.x,a.y,a.z,1,u),u),n.multiplyByScalar(u,1/u.w,u),m.multiplyByVector(r,u,u),t.fromCartesian4(u,o)};var V=new r,Y=new r,j=new r;return g.rotationMatrixFromPositionVelocity=function(e,t,n,o){var u=a(n,c.WGS84).geodeticSurfaceNormal(e,V),s=r.cross(t,u,Y);r.equalsEpsilon(s,r.ZERO,h.EPSILON6)&&(s=r.clone(r.UNIT_X,s));var l=r.cross(s,t,j);return r.cross(t,l,s),r.negate(s,s),i(o)||(o=new p),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},g}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,p){"use strict";var m=new n,y=function(e,t){t=a(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var n=p.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=r.fromCartesian4(f.getColumn(n,0,m)),this._yAxis=r.fromCartesian4(f.getColumn(n,1,m));var i=r.fromCartesian4(f.getColumn(n,2,m));this._plane=d.fromPointNormal(e,i)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,r){var n=e.fromPoints(t,v);return new y(n.center,r)};var g=new h,w=new r;y.prototype.projectPointOntoPlane=function(e,n){var a=g;a.origin=e,r.normalize(e,a.direction);var o=c.rayPlane(a,this._plane,w);if(i(o)||(r.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w)),i(o)){var u=r.subtract(o,this._origin,o),s=r.dot(this._xAxis,u),l=r.dot(this._yAxis,u);return i(n)?(n.x=s,n.y=l,n):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){i(t)||(t=[]);for(var r=0,n=e.length,a=0;n>a;a++){var o=this.projectPointOntoPlane(e[a],t[r]);i(o)&&(t[r]=o,r++)}return t.length=r,t},y.prototype.projectPointToNearestOnPlane=function(e,n){i(n)||(n=new t);var a=g;a.origin=e,r.clone(this._plane.normal,a.direction);var o=c.rayPlane(a,this._plane,w);i(o)||(r.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w));var u=r.subtract(o,this._origin,o),s=r.dot(this._xAxis,u),l=r.dot(this._yAxis,u);return n.x=s,n.y=l,n},y.prototype.projectPointsToNearestOnPlane=function(e,t){i(t)||(t=[]);var r=e.length;t.length=r;for(var n=0;r>n;n++)t[n]=this.projectPointToNearestOnPlane(e[n],t[n]);return t};var x=new r;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var n=e.length;i(t)?t.length=n:t=new Array(n);for(var a=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;n>l;++l){var f=e[l];r.multiplyByScalar(u,f.x,c),i(t[l])||(t[l]=new r);var d=r.add(o,c,t[l]);r.multiplyByScalar(s,f.y,c),r.add(d,c,d),a.scaleToGeocentricSurface(d,d)}return t},y}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,r,n,a){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,a.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,n.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(e){var n=-1;for(var a in e.attributes)if(e.attributes.hasOwnProperty(a)&&t(e.attributes[a])&&t(e.attributes[a].values)){var i=e.attributes[a],o=i.values.length/i.componentsPerAttribute;if(n!==o&&-1!==n)throw new r("All attribute lists must have the same number of attributes.");n=o}return n},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/GeometryInstance",["./defaultValue","./defined","./DeveloperError","./Matrix4"],function(e,t,r,n){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.geometry=t.geometry,this.modelMatrix=n.clone(e(t.modelMatrix,n.IDENTITY)),this.id=t.id,this.pickPrimitive=t.pickPrimitive,this.attributes=e(t.attributes,{}),this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0};return a}),define("Core/AttributeCompression",["./Cartesian2","./Cartesian3","./defined","./DeveloperError","./Math"],function(e,t,r,n,a){"use strict";var i={};i.octEncode=function(e,t){if(t.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),t.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){var r=t.x,n=t.y;t.x=(1-Math.abs(n))*a.signNotZero(r),t.y=(1-Math.abs(r))*a.signNotZero(n)}return t.x=a.toSNorm(t.x),t.y=a.toSNorm(t.y),t},i.octDecode=function(e,r,n){if(n.x=a.fromSNorm(e),n.y=a.fromSNorm(r),n.z=1-(Math.abs(n.x)+Math.abs(n.y)),n.z<0){var i=n.x;n.x=(1-Math.abs(n.y))*a.signNotZero(i),n.y=(1-Math.abs(i))*a.signNotZero(n.y)}return t.normalize(n,n)},i.octPackFloat=function(e){return 256*e.x+e.y};var o=new e;return i.octEncodeFloat=function(e){return i.octEncode(e,o),i.octPackFloat(o)},i.octDecodeFloat=function(e,t){var r=e/256,n=Math.floor(r),a=256*(r-n);return i.octDecode(n,a,t)},i.octPack=function(e,t,r,n){var a=i.octEncodeFloat(e),u=i.octEncodeFloat(t),s=i.octEncode(r,o);return n.x=65536*s.x+a,n.y=65536*s.y+u,n},i.octUnpack=function(e,t,r,n){var a=e.x/65536,o=Math.floor(a),u=65536*(a-o);a=e.y/65536;var s=Math.floor(a),c=65536*(a-s);i.octDecodeFloat(u,t),i.octDecodeFloat(c,r),i.octDecode(o,s,n)},i.compressTextureCoordinates=function(e){var t=1===e.x?4095:0|4096*e.x,r=1===e.y?4095:0|4096*e.y;return 4096*t+r},i.decompressTextureCoordinates=function(e,t){var r=e/4096;return t.x=Math.floor(r)/4096,t.y=r-Math.floor(r),t},i}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=new t,a=new t,i=new t,o=function(o,u,s,c,l){r(l)||(l=new t);var f,d,h,p,m,y,v,g;r(u.z)?(f=t.subtract(s,u,n),d=t.subtract(c,u,a),h=t.subtract(o,u,i),p=t.dot(f,f),m=t.dot(f,d),y=t.dot(f,h),v=t.dot(d,d),g=t.dot(d,h)):(f=e.subtract(s,u,n),d=e.subtract(c,u,a),h=e.subtract(o,u,i),p=e.dot(f,f),m=e.dot(f,d),y=e.dot(f,h),v=e.dot(d,d),g=e.dot(d,h));var w=1/(p*v-m*m);return l.y=(v*y-m*g)*w,l.z=(p*g-m*y)*w,l.x=1-l.y-l.z,l};return o}),define("Core/EncodedCartesian3",["./Cartesian3","./defined","./DeveloperError"],function(e,t){"use strict";var r=function(){this.high=e.clone(e.ZERO),this.low=e.clone(e.ZERO)};r.encode=function(e,r){t(r)||(r={high:0,low:0});var n;return e>=0?(n=65536*Math.floor(e/65536),r.high=n,r.low=e-n):(n=65536*Math.floor(-e/65536),r.high=-n,r.low=e+n),r};var n={high:0,low:0};r.fromCartesian=function(e,a){t(a)||(a=new r);var i=a.high,o=a.low;return r.encode(e.x,n),i.x=n.high,o.x=n.low,r.encode(e.y,n),i.y=n.high,o.y=n.low,r.encode(e.z,n),i.z=n.high,o.z=n.low,a};var a=new r;return r.writeElements=function(e,t,n){r.fromCartesian(e,a);var i=a.high,o=a.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z},r}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n){"use strict";var a={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return a.getSizeInBytes=function(e){switch(e){case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},a.validate=function(t){return e(t)&&(t===a.UNSIGNED_BYTE||t===a.UNSIGNED_SHORT||t===a.UNSIGNED_INT)},a.createTypedArray=function(e,t){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},a.createTypedArrayFromArrayBuffer=function(e,t,r,a){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,r,a):new Uint16Array(t,r,a)},r(a)}),define("Core/Tipsify",["./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};return r.calculateACMR=function(r){r=e(r,e.EMPTY_OBJECT);var n=r.indices,a=r.maximumIndex,i=e(r.cacheSize,24),o=n.length;if(!t(a)){a=0;for(var u=0,s=n[u];o>u;)s>a&&(a=s),++u,s=n[u]}for(var c=[],l=0;a+1>l;l++)c[l]=0;for(var f=i+1,d=0;o>d;++d)f-c[n[d]]>i&&(c[n[d]]=f,++f);return(f-i+1)/(o/3)},r.tipsify=function(r){function n(e,t,r,n){for(;t.length>=1;){var a=t[t.length-1];if(t.splice(t.length-1,1),e[a].numLiveTriangles>0)return a}for(;n>i;){if(e[i].numLiveTriangles>0)return++i,i-1;++i}return-1}function a(e,t,r,a,i,o,u){for(var s,c=-1,l=-1,f=0;f<r.length;){var d=r[f];a[d].numLiveTriangles&&(s=0,i-a[d].timeStamp+2*a[d].numLiveTriangles<=t&&(s=i-a[d].timeStamp),(s>l||-1===l)&&(l=s,c=d)),++f}return-1===c?n(a,o,e,u):c}r=e(r,e.EMPTY_OBJECT);var i,o=r.indices,u=r.maximumIndex,s=e(r.cacheSize,24),c=o.length,l=0,f=0,d=o[f],h=c;if(t(u))l=u+1;else{for(;h>f;)d>l&&(l=d),++f,d=o[f];if(-1===l)return 0;++l}for(var p=[],m=0;l>m;m++)p[m]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};f=0;for(var y=0;h>f;)p[o[f]].vertexTriangles.push(y),++p[o[f]].numLiveTriangles,p[o[f+1]].vertexTriangles.push(y),++p[o[f+1]].numLiveTriangles,p[o[f+2]].vertexTriangles.push(y),++p[o[f+2]].numLiveTriangles,++y,f+=3;var v=0,g=s+1;i=1;var w,x,E=[],S=[],O=0,M=[],T=c/3,_=[];for(m=0;T>m;m++)_[m]=!1;for(var P,b;-1!==v;){E=[],x=p[v],b=x.vertexTriangles.length;for(var N=0;b>N;++N)if(y=x.vertexTriangles[N],!_[y]){_[y]=!0,f=y+y+y;for(var A=0;3>A;++A)P=o[f],E.push(P),S.push(P),M[O]=P,++O,w=p[P],--w.numLiveTriangles,g-w.timeStamp>s&&(w.timeStamp=g,++g),++f}v=a(o,s,E,p,g,S,l)}return M},r}),define("Core/GeometryPipeline",["./AttributeCompression","./barycentricCoordinates","./BoundingSphere","./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EncodedCartesian3","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryInstance","./GeometryType","./IndexDatatype","./Intersect","./IntersectionTests","./Math","./Matrix3","./Matrix4","./Plane","./PrimitiveType","./Tipsify"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,p,m,y,v,g,w,x,E,S,O,M,T){"use strict";function _(e,t,r,n,a){e[t++]=r,e[t++]=n,e[t++]=n,e[t++]=a,e[t++]=a,e[t]=r}function P(e){for(var t=e.length,r=6*(t/3),n=v.createTypedArray(t,r),a=0,i=0;t>i;i+=3,a+=6)_(n,a,e[i],e[i+1],e[i+2]);return n}function b(e){var t=e.length;if(t>=3){var r=6*(t-2),n=v.createTypedArray(t,r);_(n,0,e[0],e[1],e[2]);for(var a=6,i=3;t>i;++i,a+=6)_(n,a,e[i-1],e[i],e[i-2]);return n}return new Uint16Array}function N(e){if(e.length>0){for(var t=e.length-1,r=6*(t-1),n=v.createTypedArray(t,r),a=e[0],i=0,o=1;t>o;++o,i+=6)_(n,i,a,e[o],e[o+1]);return n}return new Uint16Array}function A(e){var t={};for(var r in e)if(e.hasOwnProperty(r)&&c(e[r])&&c(e[r].values)){var n=e[r];t[r]=new p({componentDatatype:n.componentDatatype,componentsPerAttribute:n.componentsPerAttribute,normalize:n.normalize,values:[]})}return t}function I(e,t,r){for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values))for(var a=t[n],i=0;i<a.componentsPerAttribute;++i)e[n].values.push(a.values[r*a.componentsPerAttribute+i])}function C(e,t){if(c(t))for(var r=t.values,n=r.length,i=0;n>i;i+=3)a.unpack(r,i,it),S.multiplyByPoint(e,it,it),a.pack(it,r,i) +}function z(e,t){if(c(t))for(var r=t.values,n=r.length,i=0;n>i;i+=3)a.unpack(r,i,it),E.multiplyByVector(e,it,it),it=a.normalize(it,it),a.pack(it,r,i)}function R(e,t){var r,n=e.length,a={},i=e[0][t].attributes;for(r in i)if(i.hasOwnProperty(r)&&c(i[r])&&c(i[r].values)){for(var o=i[r],s=o.values.length,l=!0,f=1;n>f;++f){var d=e[f][t].attributes[r];if(!c(d)||o.componentDatatype!==d.componentDatatype||o.componentsPerAttribute!==d.componentsPerAttribute||o.normalize!==d.normalize){l=!1;break}s+=d.values.length}l&&(a[r]=new p({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:u.createTypedArray(o.componentDatatype,s)}))}return a}function D(e,t){var n,i,o,u,s=e.length;e[0].modelMatrix;var l,f,d,p=c(e[0][t].indices),m=e[0][t].primitiveType,y=R(e,t);for(n in y)if(y.hasOwnProperty(n))for(l=y[n].values,u=0,i=0;s>i;++i)for(f=e[i][t].attributes[n].values,d=f.length,o=0;d>o;++o)l[u++]=f[o];var g;if(p){var w=0;for(i=0;s>i;++i)w+=e[i][t].indices.length;var x=h.computeNumberOfVertices(new h({attributes:y,primitiveType:M.POINTS})),E=v.createTypedArray(x,w),S=0,O=0;for(i=0;s>i;++i){var T=e[i][t].indices,_=T.length;for(u=0;_>u;++u)E[S++]=O+T[u];O+=h.computeNumberOfVertices(e[i][t])}g=E}var P,b=new a,N=0;for(i=0;s>i;++i){if(P=e[i][t].boundingSphere,!c(P)){b=void 0;break}a.add(P.center,b,b)}if(c(b))for(a.divideByScalar(b,s,b),i=0;s>i;++i){P=e[i][t].boundingSphere;var A=a.magnitude(a.subtract(P.center,b,st))+P.radius;A>N&&(N=A)}return new h({attributes:y,indices:g,primitiveType:m,boundingSphere:c(b)?new r(b,N):void 0})}function L(e){if(c(e.indices))return e;for(var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function q(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=1,r[1]=0,r[2]=2;for(var n=3,a=3;t>a;++a)r[n++]=a-1,r[n++]=0,r[n++]=a;return e.indices=r,e.primitiveType=M.TRIANGLES,e}function U(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=0,r[1]=1,r[2]=2,t>3&&(r[3]=0,r[4]=2,r[5]=3);for(var n=6,a=3;t-1>a;a+=2)r[n++]=a,r[n++]=a-1,r[n++]=a+1,t>a+2&&(r[n++]=a,r[n++]=a+1,r[n++]=a+2);return e.indices=r,e.primitiveType=M.TRIANGLES,e}function B(e){if(c(e.indices))return e;for(var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function W(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,2*(t-1));r[0]=0,r[1]=1;for(var n=2,a=2;t>a;++a)r[n++]=a-1,r[n++]=a;return e.indices=r,e.primitiveType=M.LINES,e}function F(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,2*t);r[0]=0,r[1]=1;for(var n=2,a=2;t>a;++a)r[n++]=a-1,r[n++]=a;return r[n++]=t-1,r[n]=0,e.indices=r,e.primitiveType=M.LINES,e}function G(e){switch(e.primitiveType){case M.TRIANGLE_FAN:return q(e);case M.TRIANGLE_STRIP:return U(e);case M.TRIANGLES:return L(e);case M.LINE_STRIP:return W(e);case M.LINE_LOOP:return F(e);case M.LINES:return B(e)}return e}function k(e,t){Math.abs(e.y)<x.EPSILON6&&(e.y=t?-x.EPSILON6:x.EPSILON6)}function H(e,t,r){if(0!==e.y&&0!==t.y&&0!==r.y)return k(e,e.y<0),k(t,t.y<0),k(r,r.y<0),void 0;var n,a=Math.abs(e.y),i=Math.abs(t.y),o=Math.abs(r.y);n=a>i?a>o?x.sign(e.y):x.sign(r.y):i>o?x.sign(t.y):x.sign(r.y);var u=0>n;k(e,u),k(t,u),k(r,u)}function V(e,t,r,n){a.add(e,a.multiplyByScalar(a.subtract(t,e,xt),e.y/(e.y-t.y),xt),r),a.clone(r,n),k(r,!0),k(n,!1)}function Y(e,t,r){if(e.x>=0||t.x>=0||r.x>=0)return void 0;H(e,t,r);var n=e.y<0,a=t.y<0,i=r.y<0,o=0;o+=n?1:0,o+=a?1:0,o+=i?1:0;var u=Tt.indices;1===o?(u[1]=3,u[2]=4,u[5]=6,u[7]=6,u[8]=5,n?(V(e,t,Et,Ot),V(e,r,St,Mt),u[0]=0,u[3]=1,u[4]=2,u[6]=1):a?(V(t,r,Et,Ot),V(t,e,St,Mt),u[0]=1,u[3]=2,u[4]=0,u[6]=2):i&&(V(r,e,Et,Ot),V(r,t,St,Mt),u[0]=2,u[3]=0,u[4]=1,u[6]=0)):2===o&&(u[2]=4,u[4]=4,u[5]=3,u[7]=5,u[8]=6,n?a?i||(V(r,e,Et,Ot),V(r,t,St,Mt),u[0]=0,u[1]=1,u[3]=0,u[6]=2):(V(t,r,Et,Ot),V(t,e,St,Mt),u[0]=2,u[1]=0,u[3]=2,u[6]=1):(V(e,t,Et,Ot),V(e,r,St,Mt),u[0]=1,u[1]=2,u[3]=1,u[6]=0));var s=Tt.positions;return s[0]=e,s[1]=t,s[2]=r,s.length=3,(1===o||2===o)&&(s[3]=Et,s[4]=St,s[5]=Ot,s[6]=Mt,s.length=7),Tt}function j(e,t){var n=e.attributes;if(0===n.position.values.length)return void 0;for(var a in n)if(n.hasOwnProperty(a)&&c(n[a])&&c(n[a].values)){var i=n[a];i.values=u.createTypedArray(i.componentDatatype,i.values)}var o=h.computeNumberOfVertices(e);return e.indices=v.createTypedArray(o,e.indices),t&&(e.boundingSphere=r.fromVertices(n.position.values)),e}function Z(e){var t=e.attributes,r={};for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values)){var a=t[n];r[n]=new p({componentDatatype:a.componentDatatype,componentsPerAttribute:a.componentsPerAttribute,normalize:a.normalize,values:[]})}return new h({attributes:r,indices:[],primitiveType:e.primitiveType})}function X(e,t,r){var n=c(e.geometry.boundingSphere);t=j(t,n),r=j(r,n),c(r)&&!c(t)?e.geometry=r:!c(r)&&c(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=r,e.geometry=void 0)}function J(e,r,i,o,u,s,l,f,d,h,p){if(c(s)||c(l)||c(f)||c(d)){var m=a.fromArray(u,3*e,_t),y=a.fromArray(u,3*r,Pt),v=a.fromArray(u,3*i,bt),g=t(o,m,y,v,Nt);if(c(s)){var w=a.fromArray(s,3*e,_t),x=a.fromArray(s,3*r,Pt),E=a.fromArray(s,3*i,bt);a.multiplyByScalar(w,g.x,w),a.multiplyByScalar(x,g.y,x),a.multiplyByScalar(E,g.z,E);var S=a.add(w,x,w);a.add(S,E,S),a.normalize(S,S),a.pack(S,h.normal.values,3*p)}if(c(l)){var O=a.fromArray(l,3*e,_t),M=a.fromArray(l,3*r,Pt),T=a.fromArray(l,3*i,bt);a.multiplyByScalar(O,g.x,O),a.multiplyByScalar(M,g.y,M),a.multiplyByScalar(T,g.z,T);var _=a.add(O,M,O);a.add(_,T,_),a.normalize(_,_),a.pack(_,h.binormal.values,3*p)}if(c(f)){var P=a.fromArray(f,3*e,_t),b=a.fromArray(f,3*r,Pt),N=a.fromArray(f,3*i,bt);a.multiplyByScalar(P,g.x,P),a.multiplyByScalar(b,g.y,b),a.multiplyByScalar(N,g.z,N);var A=a.add(P,b,P);a.add(A,N,A),a.normalize(A,A),a.pack(A,h.tangent.values,3*p)}if(c(d)){var I=n.fromArray(d,2*e,At),C=n.fromArray(d,2*r,It),z=n.fromArray(d,2*i,Ct);n.multiplyByScalar(I,g.x,I),n.multiplyByScalar(C,g.y,C),n.multiplyByScalar(z,g.z,z);var R=n.add(I,C,I);n.add(R,z,R),n.pack(R,h.st.values,2*p)}}}function K(e,t,r,n,a,i){var o=e.position.values.length/3;if(-1!==a){var u=n[a],s=r[u];return-1===s?(r[u]=o,e.position.values.push(i.x,i.y,i.z),t.push(o),o):(t.push(s),s)}return e.position.values.push(i.x,i.y,i.z),t.push(o),o}function Q(e){var t,r,n,i,o,u=e.geometry,s=u.attributes,l=s.position.values,f=c(s.normal)?s.normal.values:void 0,d=c(s.binormal)?s.binormal.values:void 0,h=c(s.tangent)?s.tangent.values:void 0,p=c(s.st)?s.st.values:void 0,m=u.indices,y=Z(u),v=Z(u),g=[];g.length=l.length/3;var w=[];for(w.length=l.length/3,o=0;o<g.length;++o)g[o]=-1,w[o]=-1;var x=m.length;for(o=0;x>o;o+=3){var E=m[o],S=m[o+1],O=m[o+2],M=a.fromArray(l,3*E),T=a.fromArray(l,3*S),_=a.fromArray(l,3*O),P=Y(M,T,_);if(c(P)&&P.positions.length>3)for(var b=P.positions,N=P.indices,A=N.length,I=0;A>I;++I){var C=N[I],z=b[C];z.y<0?(t=v.attributes,r=v.indices,n=g):(t=y.attributes,r=y.indices,n=w),i=K(t,r,n,m,3>C?o+C:-1,z),J(E,S,O,z,l,f,d,h,p,t,i)}else c(P)&&(M=P.positions[0],T=P.positions[1],_=P.positions[2]),M.y<0?(t=v.attributes,r=v.indices,n=g):(t=y.attributes,r=y.indices,n=w),i=K(t,r,n,m,o,M),J(E,S,O,M,l,f,d,h,p,t,i),i=K(t,r,n,m,o+1,T),J(E,S,O,T,l,f,d,h,p,t,i),i=K(t,r,n,m,o+2,_),J(E,S,O,_,l,f,d,h,p,t,i)}X(e,v,y)}function $(e){var t,r=e.geometry,n=r.attributes,i=n.position.values,o=r.indices,u=Z(r),s=Z(r),l=o.length,f=[];f.length=i.length/3;var d=[];for(d.length=i.length/3,t=0;t<f.length;++t)f[t]=-1,d[t]=-1;for(t=0;l>t;t+=2){var h=o[t],p=o[t+1],m=a.fromArray(i,3*h,_t),y=a.fromArray(i,3*p,Pt);Math.abs(m.y)<x.EPSILON6&&(m.y=m.y<0?-x.EPSILON6:x.EPSILON6),Math.abs(y.y)<x.EPSILON6&&(y.y=y.y<0?-x.EPSILON6:x.EPSILON6);var v=u.attributes,g=u.indices,E=d,S=s.attributes,O=s.indices,M=f,T=w.lineSegmentPlane(m,y,zt,bt);if(c(T)){var _=a.multiplyByScalar(a.UNIT_Y,5*x.EPSILON9,Rt);m.y<0&&(a.negate(_,_),v=s.attributes,g=s.indices,E=f,S=u.attributes,O=u.indices,M=d);var P=a.add(T,_,Dt);K(v,g,E,o,t,m),K(v,g,E,o,-1,P),a.negate(_,_),a.add(T,_,P),K(S,O,M,o,-1,P),K(S,O,M,o,t+1,y)}else{var b,N,A;m.y<0?(b=s.attributes,N=s.indices,A=f):(b=u.attributes,N=u.indices,A=d),K(b,N,A,o,t,m),K(b,N,A,o,t+1,y)}}X(e,s,u)}function et(e){var t=e.geometry,r=t.attributes,o=r.position.values,u=r.prevPosition.values,s=r.nextPosition.values,l=r.expandAndWidth.values;t.indices;var f,d,h,p=c(r.st)?r.st.values:void 0,m=c(r.color)?r.color.values:void 0,y=Z(t),v=Z(t),g=o.length/3;for(f=0;g>f;f+=4){var E=f,S=f+1,O=f+2,M=f+3,T=a.fromArray(o,3*E,Ut),_=a.fromArray(o,3*S,Bt),P=a.fromArray(o,3*O,Wt),b=a.fromArray(o,3*M,Ft);Math.abs(T.y)<x.EPSILON6&&(T.y=x.EPSILON6*(P.y<0?-1:1),_.y=T.y),Math.abs(P.y)<x.EPSILON6&&(P.y=x.EPSILON6*(T.y<0?-1:1),b.y=P.y);var N=y.attributes,A=y.indices,I=v.attributes,C=v.indices,z=w.lineSegmentPlane(T,P,zt,Gt);if(c(z)){var R=a.multiplyByScalar(a.UNIT_Y,5*x.EPSILON9,kt);T.y<0&&(a.negate(R,R),N=v.attributes,A=v.indices,I=y.attributes,C=y.indices);var D=a.add(z,R,Ht);for(N.position.values.push(T.x,T.y,T.z,_.x,_.y,_.z),N.position.values.push(D.x,D.y,D.z),N.position.values.push(D.x,D.y,D.z),a.negate(R,R),a.add(z,R,D),I.position.values.push(D.x,D.y,D.z),I.position.values.push(D.x,D.y,D.z),I.position.values.push(P.x,P.y,P.z,b.x,b.y,b.z),d=3*E;3*E+6>d;++d)N.prevPosition.values.push(u[d]);for(N.prevPosition.values.push(T.x,T.y,T.z,T.x,T.y,T.z),I.prevPosition.values.push(T.x,T.y,T.z,T.x,T.y,T.z),d=3*O;3*O+6>d;++d)I.prevPosition.values.push(u[d]);for(d=3*E;3*E+6>d;++d)N.nextPosition.values.push(s[d]);for(N.nextPosition.values.push(P.x,P.y,P.z,P.x,P.y,P.z),I.nextPosition.values.push(P.x,P.y,P.z,P.x,P.y,P.z),d=3*O;3*O+6>d;++d)I.nextPosition.values.push(s[d]);var L=n.fromArray(l,2*E,Lt),q=Math.abs(L.y);N.expandAndWidth.values.push(-1,q,1,q),N.expandAndWidth.values.push(-1,-q,1,-q),I.expandAndWidth.values.push(-1,q,1,q),I.expandAndWidth.values.push(-1,-q,1,-q);var U=a.magnitudeSquared(a.subtract(z,T,Ft));if(U/=a.magnitudeSquared(a.subtract(P,T,Ft)),c(m)){var B=i.fromArray(m,4*E,Vt),W=i.fromArray(m,4*O,Vt),F=x.lerp(B.x,W.x,U),G=x.lerp(B.y,W.y,U),k=x.lerp(B.z,W.z,U),H=x.lerp(B.w,W.w,U);for(d=4*E;4*E+8>d;++d)N.color.values.push(m[d]);for(N.color.values.push(F,G,k,H),N.color.values.push(F,G,k,H),I.color.values.push(F,G,k,H),I.color.values.push(F,G,k,H),d=4*O;4*O+8>d;++d)I.color.values.push(m[d])}if(c(p)){var V=n.fromArray(p,2*E,Lt),Y=n.fromArray(p,2*(f+3),qt),j=x.lerp(V.x,Y.x,U);for(d=2*E;2*E+4>d;++d)N.st.values.push(p[d]);for(N.st.values.push(j,V.y),N.st.values.push(j,Y.y),I.st.values.push(j,V.y),I.st.values.push(j,Y.y),d=2*O;2*O+4>d;++d)I.st.values.push(p[d])}h=N.position.values.length/3-4,A.push(h,h+2,h+1),A.push(h+1,h+2,h+3),h=I.position.values.length/3-4,C.push(h,h+2,h+1),C.push(h+1,h+2,h+3)}else{var J,K;for(T.y<0?(J=v.attributes,K=v.indices):(J=y.attributes,K=y.indices),J.position.values.push(T.x,T.y,T.z),J.position.values.push(_.x,_.y,_.z),J.position.values.push(P.x,P.y,P.z),J.position.values.push(b.x,b.y,b.z),d=3*f;3*f+12>d;++d)J.prevPosition.values.push(u[d]),J.nextPosition.values.push(s[d]);for(d=2*f;2*f+8>d;++d)J.expandAndWidth.values.push(l[d]),c(p)&&J.st.values.push(p[d]);if(c(m))for(d=4*f;4*f+16>d;++d)J.color.values.push(m[d]);h=J.position.values.length/3-4,K.push(h,h+2,h+1),K.push(h+1,h+2,h+3)}}X(e,v,y)}var tt={};tt.toWireframe=function(e){var t=e.indices;if(c(t)){switch(e.primitiveType){case M.TRIANGLES:e.indices=P(t);break;case M.TRIANGLE_STRIP:e.indices=b(t);break;case M.TRIANGLE_FAN:e.indices=N(t);break;default:throw new l("geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.")}e.primitiveType=M.LINES}return e},tt.createLineSegmentsForVectors=function(e,t,n){t=s(t,"normal"),n=s(n,1e4);for(var a=e.attributes.position.values,i=e.attributes[t].values,o=a.length,l=new Float64Array(2*o),f=0,d=0;o>d;d+=3)l[f++]=a[d],l[f++]=a[d+1],l[f++]=a[d+2],l[f++]=a[d]+i[d]*n,l[f++]=a[d+1]+i[d+1]*n,l[f++]=a[d+2]+i[d+2]*n;var m,y=e.boundingSphere;return c(y)&&(m=new r(y.center,y.radius+n)),new h({attributes:{position:new p({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:l})},primitiveType:M.LINES,boundingSphere:m})},tt.createAttributeLocations=function(e){var t,r=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","binormal","tangent","compressedAttributes"],n=e.attributes,a={},i=0,o=r.length;for(t=0;o>t;++t){var u=r[t];c(n[u])&&(a[u]=i++)}for(var s in n)n.hasOwnProperty(s)&&!c(a[s])&&(a[s]=i++);return a},tt.reorderForPreVertexCache=function(e){var t=h.computeNumberOfVertices(e),r=e.indices;if(c(r)){for(var n=new Int32Array(t),a=0;t>a;a++)n[a]=-1;for(var i,o=r,s=o.length,l=v.createTypedArray(t,s),f=0,d=0,p=0;s>f;)i=n[o[f]],-1!==i?l[d]=i:(i=o[f],n[i]=p,l[d]=p,++p),++f,++d;e.indices=l;var m=e.attributes;for(var y in m)if(m.hasOwnProperty(y)&&c(m[y])&&c(m[y].values)){for(var g=m[y],w=g.values,x=0,E=g.componentsPerAttribute,S=u.createTypedArray(g.componentDatatype,p*E);t>x;){var O=n[x];if(-1!==O)for(a=0;E>a;a++)S[E*O+a]=w[E*x+a];++x}g.values=S}}return e},tt.reorderForPostVertexCache=function(e,t){var r=e.indices;if(e.primitiveType===M.TRIANGLES&&c(r)){for(var n=r.length,a=0,i=0;n>i;i++)r[i]>a&&(a=r[i]);e.indices=T.tipsify({indices:r,maximumIndex:a,cacheSize:t})}return e},tt.fitToUnsignedShortIndices=function(e){var t=[],r=h.computeNumberOfVertices(e);if(c(e.indices)&&r>x.SIXTY_FOUR_KILOBYTES){var n,a=[],i=[],o=0,u=A(e.attributes),s=e.indices,l=s.length;e.primitiveType===M.TRIANGLES?n=3:e.primitiveType===M.LINES?n=2:e.primitiveType===M.POINTS&&(n=1);for(var f=0;l>f;f+=n){for(var d=0;n>d;++d){var p=s[f+d],m=a[p];c(m)||(m=o++,a[p]=m,I(u,e.attributes,p)),i.push(m)}o+n>x.SIXTY_FOUR_KILOBYTES&&(t.push(new h({attributes:u,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),a=[],i=[],o=0,u=A(e.attributes))}0!==i.length&&t.push(new h({attributes:u,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var rt=new a,nt=new o;tt.projectTo2D=function(e,t,r,n,i){var o=e.attributes[t];i=c(i)?i:new d;for(var s=i.ellipsoid,f=o.values,h=new Float64Array(f.length),m=0,y=0;y<f.length;y+=3){var v=a.fromArray(f,y,rt),g=s.cartesianToCartographic(v,nt);if(!c(g))throw new l("Could not project point ("+v.x+", "+v.y+", "+v.z+") to 2D.");var w=i.project(g,rt);h[m++]=w.x,h[m++]=w.y,h[m++]=w.z}return e.attributes[r]=o,e.attributes[n]=new p({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:h}),delete e.attributes[t],e};var at={high:0,low:0};tt.encodeAttribute=function(e,t,r,n){for(var a=e.attributes[t],i=a.values,o=i.length,s=new Float32Array(o),c=new Float32Array(o),l=0;o>l;++l)f.encode(i[l],at),s[l]=at.high,c[l]=at.low;var d=a.componentsPerAttribute;return e.attributes[r]=new p({componentDatatype:u.FLOAT,componentsPerAttribute:d,values:s}),e.attributes[n]=new p({componentDatatype:u.FLOAT,componentsPerAttribute:d,values:c}),delete e.attributes[t],e};var it=new a,ot=new S,ut=new E;tt.transformToWorldCoordinates=function(e){var t=e.modelMatrix;if(S.equals(t,S.IDENTITY))return e;var n=e.geometry.attributes;C(t,n.position),C(t,n.prevPosition),C(t,n.nextPosition),(c(n.normal)||c(n.binormal)||c(n.tangent))&&(S.inverse(t,ot),S.transpose(ot,ot),S.getRotation(ot,ut),z(ut,n.normal),z(ut,n.binormal),z(ut,n.tangent));var a=e.geometry.boundingSphere;return c(a)&&(e.geometry.boundingSphere=r.transform(a,t,a)),e.modelMatrix=S.clone(S.IDENTITY),e};var st=new a;tt.combineInstances=function(e){for(var t=[],r=[],n=e.length,a=0;n>a;++a){var i=e[a];c(i.geometry)?t.push(i):r.push(i)}var o=[];return t.length>0&&o.push(D(t,"geometry")),r.length>0&&(o.push(D(r,"westHemisphereGeometry")),o.push(D(r,"eastHemisphereGeometry"))),o};var ct=new a,lt=new a,ft=new a,dt=new a;tt.computeNormal=function(e){for(var t=e.indices,r=e.attributes,n=r.position.values,i=r.position.values.length/3,o=t.length,s=new Array(i),c=new Array(o/3),l=new Array(o),f=0;i>f;f++)s[f]={indexOffset:0,count:0,currentCount:0};var d=0;for(f=0;o>f;f+=3){var h=t[f],m=t[f+1],y=t[f+2],v=3*h,g=3*m,w=3*y;lt.x=n[v],lt.y=n[v+1],lt.z=n[v+2],ft.x=n[g],ft.y=n[g+1],ft.z=n[g+2],dt.x=n[w],dt.y=n[w+1],dt.z=n[w+2],s[h].count++,s[m].count++,s[y].count++,a.subtract(ft,lt,ft),a.subtract(dt,lt,dt),c[d]=a.cross(ft,dt,new a),d++}var x=0;for(f=0;i>f;f++)s[f].indexOffset+=x,x+=s[f].count;d=0;var E;for(f=0;o>f;f+=3){E=s[t[f]];var S=E.indexOffset+E.currentCount;l[S]=d,E.currentCount++,E=s[t[f+1]],S=E.indexOffset+E.currentCount,l[S]=d,E.currentCount++,E=s[t[f+2]],S=E.indexOffset+E.currentCount,l[S]=d,E.currentCount++,d++}var O=new Float32Array(3*i);for(f=0;i>f;f++){var M=3*f;if(E=s[f],E.count>0){for(a.clone(a.ZERO,ct),d=0;d<E.count;d++)a.add(ct,c[l[E.indexOffset+d]],ct);a.normalize(ct,ct),O[M]=ct.x,O[M+1]=ct.y,O[M+2]=ct.z}else O[M]=0,O[M+1]=0,O[M+2]=1}return e.attributes.normal=new p({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:O}),e};var ht=new a,pt=new a,mt=new a;tt.computeBinormalAndTangent=function(e){e.attributes;for(var t=e.indices,r=e.attributes.position.values,n=e.attributes.normal.values,i=e.attributes.st.values,o=e.attributes.position.values.length/3,s=t.length,c=new Array(3*o),l=0;l<c.length;l++)c[l]=0;var f,d,h;for(l=0;s>l;l+=3){var m=t[l],y=t[l+1],v=t[l+2];f=3*m,d=3*y,h=3*v;var g=2*m,w=2*y,x=2*v,E=r[f],S=r[f+1],O=r[f+2],M=i[g],T=i[g+1],_=i[w+1]-T,P=i[x+1]-T,b=1/((i[w]-M)*P-(i[x]-M)*_),N=(P*(r[d]-E)-_*(r[h]-E))*b,A=(P*(r[d+1]-S)-_*(r[h+1]-S))*b,I=(P*(r[d+2]-O)-_*(r[h+2]-O))*b;c[f]+=N,c[f+1]+=A,c[f+2]+=I,c[d]+=N,c[d+1]+=A,c[d+2]+=I,c[h]+=N,c[h+1]+=A,c[h+2]+=I}var C=new Float32Array(3*o),z=new Float32Array(3*o);for(l=0;o>l;l++){f=3*l,d=f+1,h=f+2;var R=a.fromArray(n,f,ht),D=a.fromArray(c,f,mt),L=a.dot(R,D);a.multiplyByScalar(R,L,pt),a.normalize(a.subtract(D,pt,D),D),z[f]=D.x,z[d]=D.y,z[h]=D.z,a.normalize(a.cross(R,D,D),D),C[f]=D.x,C[d]=D.y,C[h]=D.z}return e.attributes.tangent=new p({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:z}),e.attributes.binormal=new p({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:C}),e};var yt=new n,vt=new a,gt=new a,wt=new a;tt.compressVertices=function(t){var r=t.attributes.normal,i=t.attributes.st;if(!c(r)&&!c(i))return t;var o,s,l,f,d=t.attributes.tangent,h=t.attributes.binormal;c(r)&&(o=r.values),c(i)&&(s=i.values),c(d)&&(l=d.values),h&&(f=h.values);var m=c(o)?o.length:s.length,y=c(o)?3:2,v=m/y,g=v,w=c(s)&&c(o)?2:1;w+=c(l)||c(f)?1:0,g*=w;for(var x=new Float32Array(g),E=0,S=0;v>S;++S){c(s)&&(n.fromArray(s,2*S,yt),x[E++]=e.compressTextureCoordinates(yt));var O=3*S;c(o)&&c(l)&&c(f)?(a.fromArray(o,O,vt),a.fromArray(l,O,gt),a.fromArray(f,O,wt),e.octPack(vt,gt,wt,yt),x[E++]=yt.x,x[E++]=yt.y):(c(o)&&(a.fromArray(o,O,vt),x[E++]=e.octEncodeFloat(vt)),c(l)&&(a.fromArray(l,O,vt),x[E++]=e.octEncodeFloat(vt)),c(f)&&(a.fromArray(f,O,vt),x[E++]=e.octEncodeFloat(vt)))}return t.attributes.compressedAttributes=new p({componentDatatype:u.FLOAT,componentsPerAttribute:w,values:x}),c(o)&&delete t.attributes.normal,c(s)&&delete t.attributes.st,c(l)&&delete t.attributes.tangent,c(f)&&delete t.attributes.binormal,t};var xt=new a,Et=new a,St=new a,Ot=new a,Mt=new a,Tt={positions:new Array(7),indices:new Array(9)},_t=new a,Pt=new a,bt=new a,Nt=new a,At=new n,It=new n,Ct=new n,zt=O.fromPointNormal(a.ZERO,a.UNIT_Y),Rt=new a,Dt=new a,Lt=new n,qt=new n,Ut=new a,Bt=new a,Wt=new a,Ft=new a,Gt=new a,kt=new a,Ht=new a,Vt=new i;return new i,tt.splitLongitude=function(e){var t=e.geometry,n=t.boundingSphere;if(c(n)){var a=n.center.x-n.radius;if(a>0||r.intersectPlane(n,O.ORIGIN_ZX_PLANE)!==g.INTERSECTING)return e}if(t.geometryType!==y.NONE)switch(t.geometryType){case y.POLYLINES:et(e);break;case y.TRIANGLES:Q(e);break;case y.LINES:$(e)}else G(t),t.primitiveType===M.TRIANGLES?Q(e):t.primitiveType===M.LINES&&$(e);return e},tt}),define("Core/PolygonGeometryLibrary",["./Cartesian3","./defaultValue","./defined","./Ellipsoid"],function(e,t,r,n){"use strict";function a(t,r,n,a){return e.subtract(r,t,o),e.multiplyByScalar(o,n/a,o),e.add(t,o,o),[o.x,o.y,o.z]}var i={};i.computeHierarchyPackedLength=function(t){for(var n=0,a=[t];a.length>0;){var i=a.pop();if(r(i)){n+=2;var o=i.positions,u=i.holes;if(r(o)&&(n+=o.length*e.packedLength),r(u))for(var s=u.length,c=0;s>c;++c)a.push(u[c])}}return n},i.packPolygonHierarchy=function(t,n,a){for(var i=[t];i.length>0;){var o=i.pop();if(r(o)){var u=o.positions,s=o.holes;if(n[a++]=r(u)?u.length:0,n[a++]=r(s)?s.length:0,r(u))for(var c=u.length,l=0;c>l;++l,a+=3)e.pack(u[l],n,a);if(r(s))for(var f=s.length,d=0;f>d;++d)i.push(s[d])}}return a},i.unpackPolygonHierarchy=function(t,r){for(var n=t[r++],a=t[r++],o=new Array(n),u=a>0?new Array(a):void 0,s=0;n>s;++s,r+=e.packedLength)o[s]=e.unpack(t,r);for(var c=0;a>c;++c)u[c]=i.unpackPolygonHierarchy(t,r),r=u[c].startingIndex,delete u[c].startingIndex;return{positions:o,holes:u,startingIndex:r}};var o=new e;i.subdivideLineCount=function(t,r,n){var a=e.distance(t,r),i=a/n,o=Math.max(0,Math.ceil(Math.log(i)/Math.log(2)));return Math.pow(2,o)},i.subdivideLine=function(t,n,o,u){var s=i.subdivideLineCount(t,n,o),c=e.distance(t,n),l=c/s;r(u)||(u=[]);var f=u;f.length=3*s;for(var d=0,h=0;s>h;h++){var p=a(t,n,h*l,c);f[d++]=p[0],f[d++]=p[1],f[d++]=p[2]}return f};var u=new e,s=new e,c=new e,l=new e;return i.scaleToGeodeticHeightExtruded=function(a,i,o,f,d){f=t(f,n.WGS84);var h=u,p=s,m=c,y=l;if(r(a)&&r(a.attributes)&&r(a.attributes.position))for(var v=a.attributes.position.values,g=v.length/2,w=0;g>w;w+=3)e.fromArray(v,w,m),f.geodeticSurfaceNormal(m,h),y=f.scaleToGeodeticSurface(m,y),p=e.multiplyByScalar(h,o,p),p=e.add(y,p,p),v[w+g]=p.x,v[w+1+g]=p.y,v[w+2+g]=p.z,d&&(y=e.clone(m,y)),p=e.multiplyByScalar(h,i,p),p=e.add(y,p,p),v[w]=p.x,v[w+1]=p.y,v[w+2]=p.z;return a},i}),define("Core/pointInsideTriangle",["./barycentricCoordinates","./Cartesian3"],function(e,t){"use strict";var r=new t,n=function(t,n,a,i){return e(t,n,a,i,r),r.x>0&&r.y>0&&r.z>0};return n}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,r,n,a,i,o,u){"use strict";function s(e){var t=e._uSquared,r=e._ellipsoid.maximumRadius,n=e._ellipsoid.minimumRadius,a=(r-n)/r,i=Math.cos(e._startHeading),o=Math.sin(e._startHeading),u=(1-a)*Math.tan(e._start.latitude),s=1/Math.sqrt(1+u*u),c=s*u,l=Math.atan2(u,i),f=s*o,d=f*f,h=1-d,p=Math.sqrt(h),m=t/4,y=m*m,v=y*m,g=y*y,w=1+m-3*y/4+5*v/4-175*g/64,x=1-m+15*y/8-35*v/8,E=1-3*m+35*y/4,S=1-5*m,O=w*l-x*Math.sin(2*l)*m/2-E*Math.sin(4*l)*y/16-S*Math.sin(6*l)*v/48-5*Math.sin(8*l)*g/512,M=e._constants;M.a=r,M.b=n,M.f=a,M.cosineHeading=i,M.sineHeading=o,M.tanU=u,M.cosineU=s,M.sineU=c,M.sigma=l,M.sineAlpha=f,M.sineSquaredAlpha=d,M.cosineSquaredAlpha=h,M.cosineAlpha=p,M.u2Over4=m,M.u4Over16=y,M.u6Over64=v,M.u8Over256=g,M.a0=w,M.a1=x,M.a2=E,M.a3=S,M.distanceRatio=O}function c(e,t){return e*t*(4+e*(4-3*t))/16}function l(e,t,r,n,a,i,o){var u=c(e,r);return(1-u)*e*t*(n+u*a*(o+u*i*(2*o*o-1)))}function f(e,t,r,n,a,i,o){var s,c,f,d,h,p=(t-r)/t,m=i-n,y=Math.atan((1-p)*Math.tan(a)),v=Math.atan((1-p)*Math.tan(o)),g=Math.cos(y),w=Math.sin(y),x=Math.cos(v),E=Math.sin(v),S=g*x,O=g*E,M=w*E,T=w*x,_=m,P=u.TWO_PI,b=Math.cos(_),N=Math.sin(_);do{b=Math.cos(_),N=Math.sin(_);var A=O-T*b;f=Math.sqrt(x*x*N*N+A*A),c=M+S*b,s=Math.atan2(f,c);var I;0===f?(I=0,d=1):(I=S*N/f,d=1-I*I),P=_,h=c-2*M/d,isNaN(h)&&(h=0),_=m+l(p,I,d,s,f,c,h)}while(Math.abs(_-P)>u.EPSILON12);var C=d*(t*t-r*r)/(r*r),z=1+C*(4096+C*(C*(320-175*C)-768))/16384,R=C*(256+C*(C*(74-47*C)-128))/1024,D=h*h,L=R*f*(h+R*(c*(2*D-1)-R*h*(4*f*f-3)*(4*D-3)/6)/4),q=r*z*(s-L),U=Math.atan2(x*N,O-T*b),B=Math.atan2(g*N,O*b-T);e._distance=q,e._startHeading=U,e._endHeading=B,e._uSquared=C}function d(r,n,a,i){e.normalize(i.cartographicToCartesian(n,p),h),e.normalize(i.cartographicToCartesian(a,p),p),f(r,i.maximumRadius,i.minimumRadius,n.longitude,n.latitude,a.longitude,a.latitude),r._start=t.clone(n,r._start),r._end=t.clone(a,r._end),r._start.height=0,r._end.height=0,s(r)}var h=new e,p=new e,m=function(e,a,i){var u=r(i,o.WGS84);this._ellipsoid=u,this._start=new t,this._end=new t,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,n(e)&&n(a)&&d(this,e,a,u)};return a(m.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),m.prototype.setEndPoints=function(e,t){d(this,e,t,this._ellipsoid)},m.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)},m.prototype.interpolateUsingSurfaceDistance=function(e,r){var a=this._constants,i=a.distanceRatio+e/a.b,o=Math.cos(2*i),u=Math.cos(4*i),s=Math.cos(6*i),c=Math.sin(2*i),f=Math.sin(4*i),d=Math.sin(6*i),h=Math.sin(8*i),p=i*i,m=i*p,y=a.u8Over256,v=a.u2Over4,g=a.u6Over64,w=a.u4Over16,x=2*m*y*o/3+i*(1-v+7*w/4-15*g/4+579*y/64-(w-15*g/4+187*y/16)*o-(5*g/4-115*y/16)*u-29*y*s/16)+(v/2-w+71*g/32-85*y/16)*c+(5*w/16-5*g/4+383*y/96)*f-p*((g-11*y/2)*c+5*y*f/2)+(29*g/96-29*y/16)*d+539*y*h/1536,E=Math.asin(Math.sin(x)*a.cosineAlpha),S=Math.atan(a.a/a.b*Math.tan(E));x-=a.sigma;var O=Math.cos(2*a.sigma+x),M=Math.sin(x),T=Math.cos(x),_=a.cosineU*T,P=a.sineU*M,b=Math.atan2(M*a.sineHeading,_-P*a.cosineHeading),N=b-l(a.f,a.sineAlpha,a.cosineSquaredAlpha,x,M,T,O);return n(r)?(r.longitude=this._start.longitude+N,r.latitude=S,r.height=0,r):new t(this._start.longitude+N,S,0)},m}),define("Core/isArray",["./defined"],function(e){"use strict";var t=Array.isArray;return e(t)||(t=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(e,t,r,n,a,i,o,u,s,c,l,f){"use strict";function d(e,t,r){var n=M;n.length=e;var a;if(t===r){for(a=0;e>a;a++)n[a]=t;return n}var i=r-t,o=i/e;for(a=0;e>a;a++){var u=t+a*o;n[a]=u}return n}function h(t,r,n,a,i,o,u,s){var c=a.scaleToGeodeticSurface(t,b),l=a.scaleToGeodeticSurface(r,N),f=p.numberOfPoints(t,r,n),h=a.cartesianToCartographic(c,T),m=a.cartesianToCartographic(l,_),y=d(f,i,o);A.setEndPoints(h,m);var v=A.surfaceDistance/f,g=s;h.height=i;var w=a.cartographicToCartesian(h,P);e.pack(w,u,g),g+=3;for(var x=1;f>x;x++){var E=A.interpolateUsingSurfaceDistance(x*v,_);E.height=y[x],w=a.cartographicToCartesian(E,P),e.pack(w,u,g),g+=3}return g}var p={};p.numberOfPoints=function(t,r,n){var a=e.distance(t,r);return Math.ceil(a/n)};var m=new t;p.extractHeights=function(e,t){for(var r=e.length,n=new Array(r),a=0;r>a;a++){var i=e[a];n[a]=t.cartesianToCartographic(i,m).height}return n};var y=new l,v=new e,g=new e,w=new f(e.ZERO,0),x=new e,E=new f(e.ZERO,0),S=new e,O=new e,M=[],T=new t,_=new t,P=new e,b=new e,N=new e,A=new o;p.wrapLongitude=function(t,a){var i=[],o=[];if(n(t)&&t.length>0){a=r(a,l.IDENTITY);var s=l.inverseTransformation(a,y),c=l.multiplyByPoint(s,e.ZERO,v),d=l.multiplyByPointAsVector(s,e.UNIT_Y,g),h=f.fromPointNormal(c,d,w),p=l.multiplyByPointAsVector(s,e.UNIT_X,x),m=f.fromPointNormal(c,p,E),M=1;i.push(e.clone(t[0]));for(var T=i[0],_=t.length,P=1;_>P;++P){var b=t[P];if(f.getPointDistance(m,T)<0||f.getPointDistance(m,b)<0){var N=u.lineSegmentPlane(T,b,h,S);if(n(N)){var A=e.multiplyByScalar(d,5e-9,O);f.getPointDistance(h,T)<0&&e.negate(A,A),i.push(e.add(N,A,new e)),o.push(M+1),e.negate(A,A),i.push(e.add(N,A,new e)),M=1}}i.push(e.clone(t[P])),M++,T=b}o.push(M)}return{positions:i,lengths:o}};var I=c.EPSILON7;return p.removeDuplicates=function(t){var r=t.length;if(2>r)return t;var n,a,i;for(n=1;r>n&&(a=t[n-1],i=t[n],!e.equalsEpsilon(a,i,I));++n);if(n===r)return t;for(var o=t.slice(0,n);r>n;++n)i=t[n],e.equalsEpsilon(a,i,I)||(o.push(e.clone(i)),a=i);return o},p.generateArc=function(t){n(t)||(t={});var a=t.positions,o=a.length,u=r(t.ellipsoid,i.WGS84),l=r(t.height,0);if(1>o)return[];if(1===o){var f=u.scaleToGeodeticSurface(a[0],b);if(0!==l){var d=u.geodeticSurfaceNormal(f,P);e.multiplyByScalar(d,l,d),e.add(f,d,f)}return[f.x,f.y,f.z]}var m=t.minDistance;if(!n(m)){var y=r(t.granularity,c.RADIANS_PER_DEGREE);m=c.chordLength(y,u.maximumRadius)}var v,g=0;for(v=0;o-1>v;v++)g+=p.numberOfPoints(a[v],a[v+1],m);var w=3*(g+1),x=new Array(w),E=0,S=s(l);for(v=0;o-1>v;v++){var O=a[v],_=a[v+1],N=S?l[v]:l,A=S?l[v+1]:l;E=h(O,_,m,u,N,A,x,E)}M.length=0;var I=a[o-1],C=u.cartesianToCartographic(I,T);C.height=S?l[o-1]:l;var z=u.cartographicToCartesian(C,P);return e.pack(z,x,w-3),x},p.generateCartesianArc=function(t){for(var r=p.generateArc(t),n=r.length/3,a=new Array(n),i=0;n>i;i++)a[i]=e.unpack(r,3*i);return a},p}),define("Core/Queue",[],function(){"use strict";var e=function(){this._array=[],this._offset=0,this.length=0};return e.prototype.enqueue=function(e){this._array.push(e),this.length++},e.prototype.dequeue=function(){if(0===this.length)return void 0;var e=this._array,t=this._offset,r=e[t];return e[t]=void 0,t++,t>10&&2*t>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this.length--,r},e.prototype.contains=function(e){return-1!==this._array.indexOf(e)},e.prototype.clear=function(){this._array.length=this._offset=this.length=0},e.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)},e}),define("Core/WindingOrder",["./freezeObject"],function(e){"use strict";var t={CLOCKWISE:2304,COUNTER_CLOCKWISE:2305,validate:function(e){return e===t.CLOCKWISE||e===t.COUNTER_CLOCKWISE}};return e(t)}),define("Core/PolygonPipeline",["./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./Math","./pointInsideTriangle","./PolylinePipeline","./PrimitiveType","./Queue","./WindingOrder"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,p,m){"use strict";function y(t,r,n){var a=e.subtract(r,t,L),i=e.subtract(n,r,q);return a.x*i.y-a.y*i.x>=0}function v(e){for(var t=e[0].x,r=0,n=0;n<e.length;n++)e[n].x>t&&(t=e[n].x,r=n);return r}function g(e){for(var t=e[0][0].x,r=0,n=0;n<e.length;n++){var a=e[n][v(e[n])].x;a>t&&(t=a,r=n)}return r}function w(e){for(var t=[],r=0;r<e.length;r++){var n=e[(r-1+e.length)%e.length],a=e[r],i=e[(r+1)%e.length];y(n,a,i)||t.push(a)}return t}function x(t,r){for(var n=0;n<t.length;n++)if(e.equals(r,t[n]))return n;return-1}function E(r,a,i){i=n(i,[]);var o=Number.MAX_VALUE,u=v(a),s=new e(a[u].x,r.y);i.push(u),i.push((u+1)%a.length);for(var c=a[0].x,l=c,f=1;f<a.length;++f)a[f].x<c?c=a[f].x:a[f].x>l&&(l=a[f].x);l+=l-c;var d=new t(l,r.y,0);for(f=0;f<a.length;f++){var h=a[f],p=a[(f+1)%a.length];if((h.x>=r.x||p.x>=r.x)&&(h.y>=r.y&&p.y<=r.y||h.y<=r.y&&p.y>=r.y)){var m=(p.y-h.y)*(d.x-r.x)-(p.x-h.x)*(d.y-r.y);if(0!==m){m=1/m;var y=((p.x-h.x)*(r.y-h.y)-(p.y-h.y)*(r.x-h.x))*m,g=((d.x-r.x)*(r.y-h.y)-(d.y-r.y)*(r.x-h.x))*m;if(y>=0&&1>=y&&g>=0&&1>=g){var w=new e(r.x+y*(d.x-r.x),r.y+y*(d.y-r.y)),x=e.subtract(w,r,U);m=e.magnitudeSquared(x),o>m&&(s=w,o=m,i[0]=f,i[1]=(f+1)%a.length)}}}}return s}function S(t,r){var n=g(r),a=r[n],i=v(a),o=a[i],u=[],s=E(o,t,u),c=x(t,s);if(-1!==c)return c;var d=e.magnitudeSquared(e.subtract(t[u[0]],o,B)),h=e.magnitudeSquared(e.subtract(t[u[1]],o,B)),p=h>d?t[u[0]]:t[u[1]],m=w(t),y=m.indexOf(p);-1!==y&&m.splice(y,1);for(var S=[],O=0;O<m.length;O++){var M=m[O];f(M,o,s,p)&&S.push(M)}var T=Number.MAX_VALUE;if(S.length>0){var _=e.fromElements(1,0,B);for(O=0;O<S.length;O++){var P=e.subtract(S[O],o,W),b=e.magnitude(_)*e.magnitudeSquared(P);if(0!==b){var N=Math.abs(l.acosClamped(e.dot(_,P)/b));T>N&&(T=N,p=S[O])}}}return t.indexOf(p)}function O(e,r,n){for(var a=et.computeWindingOrder2D(e),i=0;i<r.length;i++){var o=r[i];t.equals(o[0],o[o.length-1])||o.push(o[0]);var s=et.computeWindingOrder2D(o);s===a&&o.reverse()}var c=u.fromPoints(e,n),l=c.projectPointsOntoPlane(e),f=[]; +for(i=0;i<r.length;i++)f.push(c.projectPointsOntoPlane(r[i]));var d=S(l,f),h=g(f),p=v(f[h]),m=r[h],y=[];for(i=0;i<e.length;i++)y.push(e[i]);var w,x=[];if(0!==p)for(w=0;w<=m.length;w++){var E=(w+p)%m.length;0!==E&&x.push(m[E])}else for(w=0;w<m.length;w++)x.push(m[(w+p)%m.length]);var O=y.lastIndexOf(e[d]);x.push(e[O]);var M=y.slice(0,O+1),T=y.slice(O+1);return y=M.concat(x,T),r.splice(h,1),y}function M(e){var t=l.nextRandomNumber(),r=Math.floor(t*e);return r===e&&r--,r}function T(e,t,r,n){var a=n[e].position,i=n[t].position,o=n[r].position,u=o.x,s=o.y,c=a.x-u,l=a.y-s,f=i.x-u,d=i.y-s;return c*d-l*f}function _(e,t){return e.x*t.y-e.y*t.x}function P(e,t){var r=t.length,n=l.mod(e-1,r),a=l.mod(e+1,r);return 0===T(n,a,e,t)?!1:!0}function b(t,r){return e.magnitudeSquared(r)<e.magnitudeSquared(t)}function N(t,r,n){if(!P(t,n))return t;var a=n[t].position,i=n[r].position,o=n.length,u=l.mod(t-1,o);if(!P(u,n))return u;var s=l.mod(t+1,o);if(!P(s,n))return s;var c=e.subtract(n[u].position,a,k),f=e.subtract(n[s].position,a,H),d=e.subtract(i,a,V),h=_(c,d),p=_(f,d);if(0===h)return b(c,d)?F:G;if(0===p)return b(f,d)?F:G;var m=_(c,f);return 0>m?0>h&&p>0?F:G:m>0?h>0&&0>p?G:F:void 0}function A(e,t,r){return(e>t||e>r)&&(t>e||r>e)||t===r&&t===e}function I(t,r,n,a){var i=e.subtract(n,t,j),o=r.x*a.y-r.y*a.x,u=o*o,s=e.magnitudeSquared(r),c=e.magnitudeSquared(a);if(u>Y*s*c){var l=(i.x*a.y-i.y*a.x)/o;return e.add(t,e.multiplyByScalar(r,l,j),j)}return void 0}function C(t,r,n){for(var i=e.subtract(r,t,Z),o=n.length,u=0;o>u;u++){var s=n[u].position,c=n[l.mod(u+1,o)].position;if(!(e.equals(t,s)||e.equals(r,c)||e.equals(t,c)||e.equals(r,s))){var f=e.subtract(c,s,X),d=I(t,i,s,f);if(a(d)&&!(e.equals(d,t)||e.equals(d,r)||e.equals(d,s)||e.equals(d,c))){var h=d.x,p=d.y,m=A(h,t.x,r.x)&&A(p,t.y,r.y)&&A(h,s.x,c.x)&&A(p,s.y,c.y);if(m)return!0}}}return!1}function z(t,r,n){var a=N(t,r,n);if(a>=0)return a;var i=N(r,t,n);return i>=0?i:a!==F||i!==F||C(n[t].position,n[r].position,n)||e.equals(n[t].position,n[r].position)?K:J}function R(e){return 0===T(1,2,0,e)}function D(e){var t=e.length;if(3===t)return R(e)?[]:[e[0].index,e[1].index,e[2].index];if(e.length<3)throw new i("Invalid polygon: must have at least three vertices.");for(var r,n,a=0,o=10*e.length,u=K;J>u&&a++<o;){for(r=M(e.length),n=r+1;Math.abs(r-n)<2||Math.abs(r-n)>e.length-2;)n=M(e.length);if(r>n){var s=r;r=n,n=s}u=z(r,n,e)}if(u===J){var c=e.splice(r,n-r+1,e[r],e[n]);return D(e).concat(D(c))}return u>=0?(e.splice(u,1),D(e)):[]}var L=new e,q=new e,U=new e,B=new e(1,0),W=new e,F=-1,G=-2,k=new t,H=new t,V=new t,Y=l.EPSILON14,j=new e;new e;var Z=new e,X=new e,J=-1,K=-2,Q=new t,$=new t,et={};et.removeDuplicates=function(e){var r=d.removeDuplicates(e);return t.equals(r[0],r[r.length-1])?r.slice(1):r},et.computeArea2D=function(e){for(var t=e.length,r=0,n=t-1,a=0;t>a;n=a++){var i=e[n],o=e[a];r+=i.x*o.y-o.x*i.y}return.5*r},et.computeWindingOrder2D=function(e){var t=et.computeArea2D(e);return t>0?m.COUNTER_CLOCKWISE:m.CLOCKWISE},et.triangulate=function(e){for(var t=e.length,r=[],n=0;t>n;++n)r[n]={position:e[n],index:n};return D(r)};var tt=new t,rt=new t,nt=new t,at=new t,it=new t,ot=new t,ut=new t;return et.computeSubdivision=function(e,i,o,u){u=n(u,l.RADIANS_PER_DEGREE);var f,d=o.slice(0),p=i.length,m=new Array(3*p),y=0;for(f=0;p>f;f++){var v=i[f];m[y++]=v.x,m[y++]=v.y,m[y++]=v.z}for(var g=[],w={},x=e.maximumRadius,E=l.chordLength(u,x),S=E*E;d.length>0;){var O,M,T=d.pop(),_=d.pop(),P=d.pop(),b=t.fromArray(m,3*P,tt),N=t.fromArray(m,3*_,rt),A=t.fromArray(m,3*T,nt),I=t.multiplyByScalar(t.normalize(b,at),x,at),C=t.multiplyByScalar(t.normalize(N,it),x,it),z=t.multiplyByScalar(t.normalize(A,ot),x,ot),R=t.magnitudeSquared(t.subtract(I,C,ut)),D=t.magnitudeSquared(t.subtract(C,z,ut)),L=t.magnitudeSquared(t.subtract(z,I,ut)),q=Math.max(R,D,L);q>S?R===q?(O=Math.min(P,_)+" "+Math.max(P,_),f=w[O],a(f)||(M=t.add(b,N,ut),t.multiplyByScalar(M,.5,M),m.push(M.x,M.y,M.z),f=m.length/3-1,w[O]=f),d.push(P,f,T),d.push(f,_,T)):D===q?(O=Math.min(_,T)+" "+Math.max(_,T),f=w[O],a(f)||(M=t.add(N,A,ut),t.multiplyByScalar(M,.5,M),m.push(M.x,M.y,M.z),f=m.length/3-1,w[O]=f),d.push(_,f,P),d.push(f,T,P)):L===q&&(O=Math.min(T,P)+" "+Math.max(T,P),f=w[O],a(f)||(M=t.add(A,b,ut),t.multiplyByScalar(M,.5,M),m.push(M.x,M.y,M.z),f=m.length/3-1,w[O]=f),d.push(T,f,_),d.push(f,P,_)):(g.push(P),g.push(_),g.push(T))}return new s({attributes:{position:new c({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:m})},indices:g,primitiveType:h.TRIANGLES})},et.scaleToGeodeticHeight=function(e,r,i,u){i=n(i,o.WGS84);var s=Q,c=$;if(r=n(r,0),u=n(u,!0),a(e)&&a(e.attributes)&&a(e.attributes.position))for(var l=e.attributes.position.values,f=l.length,d=0;f>d;d+=3)t.fromArray(l,d,c),u&&(c=i.scaleToGeodeticSurface(c,c)),s=i.geodeticSurfaceNormal(c,s),t.multiplyByScalar(s,r,s),t.add(c,s,c),l[d]=c.x,l[d+1]=c.y,l[d+2]=c.z;return e},et.eliminateHoles=function(e,r,a){a=n(a,o.WGS84);for(var i=[],u=0;u<r.length;u++){for(var s=[],c=0;c<r[u].length;c++)s.push(t.clone(r[u][c]));i.push(s)}for(var l=e;i.length>0;)l=O(l,i,a);return l},et}),define("Core/PolygonOutlineGeometry",["./BoundingSphere","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./GeometryAttributes","./GeometryInstance","./GeometryPipeline","./IndexDatatype","./Math","./PolygonGeometryLibrary","./PolygonPipeline","./PrimitiveType","./Queue","./WindingOrder"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,p,m,y,v,g){"use strict";function w(e,r,n,a){var i=o.fromPoints(r,e),f=i.projectPointsOntoPlane(r,E),h=m.computeWindingOrder2D(f);h===g.CLOCKWISE&&(f.reverse(),r.reverse());var v,w,x=r.length,O=0;if(a)for(v=new Float64Array(3*2*x),w=0;x>w;w++){var M=r[w],T=r[(w+1)%x];v[O++]=M.x,v[O++]=M.y,v[O++]=M.z,v[O++]=T.x,v[O++]=T.y,v[O++]=T.z}else{var _=0;for(w=0;x>w;w++)_+=p.subdivideLineCount(r[w],r[(w+1)%x],n);for(v=new Float64Array(3*_),w=0;x>w;w++)for(var P=p.subdivideLine(r[w],r[(w+1)%x],n,S),b=P.length,N=0;b>N;++N)v[O++]=P[N]}x=v.length/3;var A=2*x,I=d.createTypedArray(x,A);for(O=0,w=0;x-1>w;w++)I[O++]=w,I[O++]=w+1;return I[O++]=x-1,I[O++]=0,new l({geometry:new u({attributes:new c({position:new s({componentDatatype:t.DOUBLE,componentsPerAttribute:3,values:v})}),indices:I,primitiveType:y.LINES})})}function x(e,r,n,a){var i=o.fromPoints(r,e),f=i.projectPointsOntoPlane(r,E),h=m.computeWindingOrder2D(f);h===g.CLOCKWISE&&(f.reverse(),r.reverse());var v,w,x=r.length,O=new Array(x),M=0;if(a)for(v=new Float64Array(2*3*2*x),w=0;x>w;++w){O[w]=M/3;var T=r[w],_=r[(w+1)%x];v[M++]=T.x,v[M++]=T.y,v[M++]=T.z,v[M++]=_.x,v[M++]=_.y,v[M++]=_.z}else{var P=0;for(w=0;x>w;w++)P+=p.subdivideLineCount(r[w],r[(w+1)%x],n);for(v=new Float64Array(2*3*P),w=0;x>w;++w){O[w]=M/3;for(var b=p.subdivideLine(r[w],r[(w+1)%x],n,S),N=b.length,A=0;N>A;++A)v[M++]=b[A]}}x=v.length/6;var I=O.length,C=2*(2*x+I),z=d.createTypedArray(x,C);for(M=0,w=0;x>w;++w)z[M++]=w,z[M++]=(w+1)%x,z[M++]=w+x,z[M++]=(w+1)%x+x;for(w=0;I>w;w++){var R=O[w];z[M++]=R,z[M++]=R+x}return new l({geometry:new u({attributes:new c({position:new s({componentDatatype:t.DOUBLE,componentsPerAttribute:3,values:v})}),indices:z,primitiveType:y.LINES})})}var E=[],S=[],O=function(e){var t=e.polygonHierarchy,a=r(e.ellipsoid,i.WGS84),o=r(e.granularity,h.RADIANS_PER_DEGREE),u=r(e.height,0),s=r(e.perPositionHeight,!1),c=e.extrudedHeight,l=n(c)&&(!h.equalsEpsilon(u,c,h.EPSILON6)||s);if(l){var f=c;c=Math.min(f,u),u=Math.max(f,u)}this._ellipsoid=i.clone(a),this._granularity=o,this._height=u,this._extrudedHeight=r(c,0),this._extrude=l,this._polygonHierarchy=t,this._perPositionHeight=s,this._workerName="createPolygonOutlineGeometry",this.packedLength=p.computeHierarchyPackedLength(t)+i.packedLength+6};O.pack=function(e,t,n){n=r(n,0),n=p.packPolygonHierarchy(e._polygonHierarchy,t,n),i.pack(e._ellipsoid,t,n),n+=i.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._extrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e.packedLength};var M=i.clone(i.UNIT_SPHERE),T={polygonHierarchy:{}};return O.unpack=function(e,t,a){t=r(t,0);var o=p.unpackPolygonHierarchy(e,t);t=o.startingIndex,delete o.startingIndex;var u=i.unpack(e,t,M);t+=i.packedLength;var s=e[t++],c=e[t++],l=e[t++],f=1===e[t++],d=1===e[t++],h=e[t++];return n(a)||(a=new O(T)),a._polygonHierarchy=o,a._ellipsoid=i.clone(u,a._ellipsoid),a._height=s,a._extrudedHeight=c,a._granularity=l,a._extrude=f,a._perPositionHeight=d,a.packedLength=h,a},O.fromPositions=function(e){e=r(e,r.EMPTY_OBJECT);var t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight};return new O(t)},O.createGeometry=function(t){var r=t._ellipsoid,a=t._granularity,i=t._height,o=t._extrudedHeight,s=t._extrude,c=t._polygonHierarchy,l=t._perPositionHeight,d=[],y=new v;y.enqueue(c);for(var g;0!==y.length;){var E=y.dequeue(),S=E.positions;if(S=m.removeDuplicates(S),!(S.length<3)){var O=E.holes?E.holes.length:0;for(g=0;O>g;g++){var M=E.holes[g];if(M.positions=m.removeDuplicates(M.positions),!(M.positions.length<3)){d.push(M.positions);var T=0;n(M.holes)&&(T=M.holes.length);for(var _=0;T>_;_++)y.enqueue(M.holes[_])}}d.push(S)}}if(0===d.length)return void 0;var P,b=[],N=h.chordLength(a,r.maximumRadius);if(s)for(g=0;g<d.length;g++)P=x(r,d[g],N,l),P.geometry=p.scaleToGeodeticHeightExtruded(P.geometry,i,o,r,l),b.push(P);else for(g=0;g<d.length;g++)P=w(r,d[g],N,l),P.geometry=m.scaleToGeodeticHeight(P.geometry,i,r,!l),b.push(P);P=f.combineInstances(b)[0];var A=e.fromVertices(P.attributes.position.values);return new u({attributes:P.attributes,indices:P.indices,primitiveType:P.primitiveType,boundingSphere:A})},O}),define("Workers/createPolygonOutlineGeometry",["../Core/defined","../Core/Ellipsoid","../Core/PolygonOutlineGeometry"],function(e,t,r){"use strict";function n(n,a){return e(a)&&(n=r.unpack(n,a)),n._ellipsoid=t.clone(n._ellipsoid),r.createGeometry(n)}return n})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createPolylineGeometry.js b/libs/Cesium/Workers/createPolylineGeometry.js new file mode 100644 index 0000000000..a07e923de7 --- /dev/null +++ b/libs/Cesium/Workers/createPolylineGeometry.js @@ -0,0 +1,60 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var t=function(t){return void 0!==t};return t}),define("Core/freezeObject",["./defined"],function(t){"use strict";var r=Object.freeze;return t(r)||(r=function(t){return t}),r}),define("Core/defaultValue",["./freezeObject"],function(t){"use strict";var r=function(t,r){return void 0!==t?t:r};return r.EMPTY_OBJECT=t({}),r}),define("Core/DeveloperError",["./defined"],function(t){"use strict";var r=function(t){this.name="DeveloperError",this.message=t;var r;try{throw new Error}catch(e){r=e.stack}this.stack=r};return r.prototype.toString=function(){var r=this.name+": "+this.message;return t(this.stack)&&(r+="\n"+this.stack.toString()),r},r.throwInstantiationError=function(){throw new r("This function defines an interface and should not be called directly.")},r}),define("ThirdParty/mersenne-twister",[],function(){var t=function(t){void 0==t&&(t=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(t)};return t.prototype.init_genrand=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&t)>>>16)<<16)+1812433253*(65535&t)+this.mti,this.mt[this.mti]>>>=0}},t.prototype.genrand_int32=function(){var t,r=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var e;for(this.mti==this.N+1&&this.init_genrand(5489),e=0;e<this.N-this.M;e++)t=this.mt[e]&this.UPPER_MASK|this.mt[e+1]&this.LOWER_MASK,this.mt[e]=this.mt[e+this.M]^t>>>1^r[1&t];for(;e<this.N-1;e++)t=this.mt[e]&this.UPPER_MASK|this.mt[e+1]&this.LOWER_MASK,this.mt[e]=this.mt[e+(this.M-this.N)]^t>>>1^r[1&t];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^r[1&t],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=2636928640&t<<7,t^=4022730752&t<<15,t^=t>>>18,t>>>0},t.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},t}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(t,r){"use strict";var e={};e.EPSILON1=.1,e.EPSILON2=.01,e.EPSILON3=.001,e.EPSILON4=1e-4,e.EPSILON5=1e-5,e.EPSILON6=1e-6,e.EPSILON7=1e-7,e.EPSILON8=1e-8,e.EPSILON9=1e-9,e.EPSILON10=1e-10,e.EPSILON11=1e-11,e.EPSILON12=1e-12,e.EPSILON13=1e-13,e.EPSILON14=1e-14,e.EPSILON15=1e-15,e.EPSILON16=1e-16,e.EPSILON17=1e-17,e.EPSILON18=1e-18,e.EPSILON19=1e-19,e.EPSILON20=1e-20,e.GRAVITATIONALPARAMETER=3986004418e5,e.SOLAR_RADIUS=6955e5,e.LUNAR_RADIUS=1737400,e.SIXTY_FOUR_KILOBYTES=65536,e.sign=function(t){return t>0?1:0>t?-1:0},e.signNotZero=function(t){return 0>t?-1:1},e.toSNorm=function(t){return Math.round(255*(.5*e.clamp(t,-1,1)+.5))},e.fromSNorm=function(t){return 2*(e.clamp(t,0,255)/255)-1},e.sinh=function(t){var r=Math.pow(Math.E,t),e=Math.pow(Math.E,-1*t);return.5*(r-e)},e.cosh=function(t){var r=Math.pow(Math.E,t),e=Math.pow(Math.E,-1*t);return.5*(r+e)},e.lerp=function(t,r,e){return(1-e)*t+e*r},e.PI=Math.PI,e.ONE_OVER_PI=1/Math.PI,e.PI_OVER_TWO=.5*Math.PI,e.PI_OVER_THREE=Math.PI/3,e.PI_OVER_FOUR=Math.PI/4,e.PI_OVER_SIX=Math.PI/6,e.THREE_PI_OVER_TWO=.5*3*Math.PI,e.TWO_PI=2*Math.PI,e.ONE_OVER_TWO_PI=1/(2*Math.PI),e.RADIANS_PER_DEGREE=Math.PI/180,e.DEGREES_PER_RADIAN=180/Math.PI,e.RADIANS_PER_ARCSECOND=e.RADIANS_PER_DEGREE/3600,e.toRadians=function(t){return t*e.RADIANS_PER_DEGREE},e.toDegrees=function(t){return t*e.DEGREES_PER_RADIAN},e.convertLongitudeRange=function(t){var r=e.TWO_PI,n=t-Math.floor(t/r)*r;return n<-Math.PI?n+r:n>=Math.PI?n-r:n},e.negativePiToPi=function(t){return e.zeroToTwoPi(t+e.PI)-e.PI},e.zeroToTwoPi=function(t){var r=e.mod(t,e.TWO_PI);return Math.abs(r)<e.EPSILON14&&Math.abs(t)>e.EPSILON14?e.TWO_PI:r},e.mod=function(t,r){return(t%r+r)%r},e.equalsEpsilon=function(t,e,n,o){o=r(o,n);var i=Math.abs(t-e);return o>=i||i<=n*Math.max(Math.abs(t),Math.abs(e))};var n=[1];e.factorial=function(t){var r=n.length;if(t>=r)for(var e=n[r-1],o=r;t>=o;o++)n.push(e*o);return n[t]},e.incrementWrap=function(t,e,n){return n=r(n,0),++t,t>e&&(t=n),t},e.isPowerOfTwo=function(t){return 0!==t&&0===(t&t-1)},e.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t},e.clamp=function(t,r,e){return r>t?r:t>e?e:t};var o=new t;return e.setRandomNumberSeed=function(r){o=new t(r)},e.nextRandomNumber=function(){return o.random()},e.acosClamped=function(t){return Math.acos(e.clamp(t,-1,1))},e.asinClamped=function(t){return Math.asin(e.clamp(t,-1,1))},e.chordLength=function(t,r){return 2*r*Math.sin(.5*t)},e}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n,o){"use strict";var i=function(r,e,n){this.x=t(r,0),this.y=t(e,0),this.z=t(n,0)};i.fromSpherical=function(e,n){r(n)||(n=new i);var o=e.clock,a=e.cone,s=t(e.magnitude,1),u=s*Math.sin(a);return n.x=u*Math.cos(o),n.y=u*Math.sin(o),n.z=s*Math.cos(a),n},i.fromElements=function(t,e,n,o){return r(o)?(o.x=t,o.y=e,o.z=n,o):new i(t,e,n)},i.clone=function(t,e){return r(t)?r(e)?(e.x=t.x,e.y=t.y,e.z=t.z,e):new i(t.x,t.y,t.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(r,e,n){n=t(n,0),e[n++]=r.x,e[n++]=r.y,e[n]=r.z},i.unpack=function(e,n,o){return n=t(n,0),r(o)||(o=new i),o.x=e[n++],o.y=e[n++],o.z=e[n],o},i.fromArray=i.unpack,i.maximumComponent=function(t){return Math.max(t.x,t.y,t.z)},i.minimumComponent=function(t){return Math.min(t.x,t.y,t.z)},i.minimumByComponent=function(t,r,e){return e.x=Math.min(t.x,r.x),e.y=Math.min(t.y,r.y),e.z=Math.min(t.z,r.z),e},i.maximumByComponent=function(t,r,e){return e.x=Math.max(t.x,r.x),e.y=Math.max(t.y,r.y),e.z=Math.max(t.z,r.z),e},i.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z},i.magnitude=function(t){return Math.sqrt(i.magnitudeSquared(t))};var a=new i;i.distance=function(t,r){return i.subtract(t,r,a),i.magnitude(a)},i.distanceSquared=function(t,r){return i.subtract(t,r,a),i.magnitudeSquared(a)},i.normalize=function(t,r){var e=i.magnitude(t);return r.x=t.x/e,r.y=t.y/e,r.z=t.z/e,r},i.dot=function(t,r){return t.x*r.x+t.y*r.y+t.z*r.z},i.multiplyComponents=function(t,r,e){return e.x=t.x*r.x,e.y=t.y*r.y,e.z=t.z*r.z,e},i.add=function(t,r,e){return e.x=t.x+r.x,e.y=t.y+r.y,e.z=t.z+r.z,e},i.subtract=function(t,r,e){return e.x=t.x-r.x,e.y=t.y-r.y,e.z=t.z-r.z,e},i.multiplyByScalar=function(t,r,e){return e.x=t.x*r,e.y=t.y*r,e.z=t.z*r,e},i.divideByScalar=function(t,r,e){return e.x=t.x/r,e.y=t.y/r,e.z=t.z/r,e},i.negate=function(t,r){return r.x=-t.x,r.y=-t.y,r.z=-t.z,r},i.abs=function(t,r){return r.x=Math.abs(t.x),r.y=Math.abs(t.y),r.z=Math.abs(t.z),r};var s=new i;i.lerp=function(t,r,e,n){return i.multiplyByScalar(r,e,s),n=i.multiplyByScalar(t,1-e,n),i.add(s,n,n)};var u=new i,l=new i;i.angleBetween=function(t,r){i.normalize(t,u),i.normalize(r,l);var e=i.dot(u,l),n=i.magnitude(i.cross(u,l,u));return Math.atan2(n,e)};var c=new i;i.mostOrthogonalAxis=function(t,r){var e=i.normalize(t,c);return i.abs(e,e),r=e.x<=e.y?e.x<=e.z?i.clone(i.UNIT_X,r):i.clone(i.UNIT_Z,r):e.y<=e.z?i.clone(i.UNIT_Y,r):i.clone(i.UNIT_Z,r)},i.equals=function(t,e){return t===e||r(t)&&r(e)&&t.x===e.x&&t.y===e.y&&t.z===e.z},i.equalsArray=function(t,r,e){return t.x===r[e]&&t.y===r[e+1]&&t.z===r[e+2]},i.equalsEpsilon=function(t,e,n,i){return t===e||r(t)&&r(e)&&o.equalsEpsilon(t.x,e.x,n,i)&&o.equalsEpsilon(t.y,e.y,n,i)&&o.equalsEpsilon(t.z,e.z,n,i)},i.cross=function(t,r,e){var n=t.x,o=t.y,i=t.z,a=r.x,s=r.y,u=r.z,l=o*u-i*s,c=i*a-n*u,f=n*s-o*a;return e.x=l,e.y=c,e.z=f,e},i.fromDegrees=function(t,r,e,n,a){var s=o.toRadians(t),u=o.toRadians(r);return i.fromRadians(s,u,e,n,a)};var f=new i,h=new i,d=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(e,n,o,a,s){o=t(o,0);var u=r(a)?a.radiiSquared:d,l=Math.cos(n);f.x=l*Math.cos(e),f.y=l*Math.sin(e),f.z=Math.sin(n),f=i.normalize(f,f),i.multiplyComponents(u,f,h);var c=Math.sqrt(i.dot(f,h));return h=i.divideByScalar(h,c,h),f=i.multiplyByScalar(f,o,f),r(s)||(s=new i),i.add(h,f,s)},i.fromDegreesArray=function(t,r,e){for(var n=new Array(t.length),a=0;a<t.length;a++)n[a]=o.toRadians(t[a]);return i.fromRadiansArray(n,r,e)},i.fromRadiansArray=function(t,e,n){var o=t.length;r(n)?n.length=o/2:n=new Array(o/2);for(var a=0;o>a;a+=2){var s=t[a],u=t[a+1];n[a/2]=i.fromRadians(s,u,0,e,n[a/2])}return n},i.fromDegreesArrayHeights=function(t,r,e){for(var n=new Array(t.length),a=0;a<t.length;a+=3)n[a]=o.toRadians(t[a]),n[a+1]=o.toRadians(t[a+1]),n[a+2]=t[a+2];return i.fromRadiansArrayHeights(n,r,e)},i.fromRadiansArrayHeights=function(t,e,n){var o=t.length;r(n)?n.length=o/3:n=new Array(o/3);for(var a=0;o>a;a+=3){var s=t[a],u=t[a+1],l=t[a+2];n[a/3]=i.fromRadians(s,u,l,e,n[a/3])}return n},i.ZERO=n(new i(0,0,0)),i.UNIT_X=n(new i(1,0,0)),i.UNIT_Y=n(new i(0,1,0)),i.UNIT_Z=n(new i(0,0,1)),i.prototype.clone=function(t){return i.clone(this,t)},i.prototype.equals=function(t){return i.equals(this,t)},i.prototype.equalsEpsilon=function(t,r,e){return i.equalsEpsilon(this,t,r,e)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n,o){"use strict";var i=function(r,e,n){this.longitude=t(r,0),this.latitude=t(e,0),this.height=t(n,0)};return i.fromRadians=function(e,n,o,a){return o=t(o,0),r(a)?(a.longitude=e,a.latitude=n,a.height=o,a):new i(e,n,o)},i.fromDegrees=function(t,r,e,n){return t=o.toRadians(t),r=o.toRadians(r),i.fromRadians(t,r,e,n)},i.clone=function(t,e){return r(t)?r(e)?(e.longitude=t.longitude,e.latitude=t.latitude,e.height=t.height,e):new i(t.longitude,t.latitude,t.height):void 0},i.equals=function(t,e){return t===e||r(t)&&r(e)&&t.longitude===e.longitude&&t.latitude===e.latitude&&t.height===e.height},i.equalsEpsilon=function(t,e,n){return t===e||r(t)&&r(e)&&Math.abs(t.longitude-e.longitude)<=n&&Math.abs(t.latitude-e.latitude)<=n&&Math.abs(t.height-e.height)<=n},i.ZERO=n(new i(0,0,0)),i.prototype.clone=function(t){return i.clone(this,t)},i.prototype.equals=function(t){return i.equals(this,t)},i.prototype.equalsEpsilon=function(t,r){return i.equalsEpsilon(this,t,r)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/defineProperties",["./defined"],function(t){"use strict";var r=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(t){return!1}}(),e=Object.defineProperties;return r&&t(e)||(e=function(t){return t}),e}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n,o,i,a,s){"use strict";function u(r,n,o,i){n=e(n,0),o=e(o,0),i=e(i,0),r._radii=new t(n,o,i),r._radiiSquared=new t(n*n,o*o,i*i),r._radiiToTheFourth=new t(n*n*n*n,o*o*o*o,i*i*i*i),r._oneOverRadii=new t(0===n?0:1/n,0===o?0:1/o,0===i?0:1/i),r._oneOverRadiiSquared=new t(0===n?0:1/(n*n),0===o?0:1/(o*o),0===i?0:1/(i*i)),r._minimumRadius=Math.min(n,o,i),r._maximumRadius=Math.max(n,o,i),r._centerToleranceSquared=s.EPSILON1}var l=function(t,r,e){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,u(this,t,r,e)};o(l.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),l.clone=function(r,e){if(!n(r))return void 0;var o=r._radii;return n(e)?(t.clone(o,e._radii),t.clone(r._radiiSquared,e._radiiSquared),t.clone(r._radiiToTheFourth,e._radiiToTheFourth),t.clone(r._oneOverRadii,e._oneOverRadii),t.clone(r._oneOverRadiiSquared,e._oneOverRadiiSquared),e._minimumRadius=r._minimumRadius,e._maximumRadius=r._maximumRadius,e._centerToleranceSquared=r._centerToleranceSquared,e):new l(o.x,o.y,o.z)},l.fromCartesian3=function(t,r){return n(r)||(r=new l),n(t)?(u(r,t.x,t.y,t.z),r):r},l.WGS84=a(new l(6378137,6378137,6356752.314245179)),l.UNIT_SPHERE=a(new l(1,1,1)),l.MOON=a(new l(s.LUNAR_RADIUS,s.LUNAR_RADIUS,s.LUNAR_RADIUS)),l.prototype.clone=function(t){return l.clone(this,t)},l.packedLength=t.packedLength,l.pack=function(r,n,o){o=e(o,0),t.pack(r._radii,n,o)},l.unpack=function(r,n,o){n=e(n,0);var i=t.unpack(r,n);return l.fromCartesian3(i,o)},l.prototype.geocentricSurfaceNormal=t.normalize,l.prototype.geodeticSurfaceNormalCartographic=function(r,e){var o=r.longitude,i=r.latitude,a=Math.cos(i),s=a*Math.cos(o),u=a*Math.sin(o),l=Math.sin(i);return n(e)||(e=new t),e.x=s,e.y=u,e.z=l,t.normalize(e,e)},l.prototype.geodeticSurfaceNormal=function(r,e){return n(e)||(e=new t),e=t.multiplyComponents(r,this._oneOverRadiiSquared,e),t.normalize(e,e)};var c=new t,f=new t;l.prototype.cartographicToCartesian=function(r,e){var o=c,i=f;this.geodeticSurfaceNormalCartographic(r,o),t.multiplyComponents(this._radiiSquared,o,i);var a=Math.sqrt(t.dot(o,i));return t.divideByScalar(i,a,i),t.multiplyByScalar(o,r.height,o),n(e)||(e=new t),t.add(i,o,e)},l.prototype.cartographicArrayToCartesianArray=function(t,r){var e=t.length;n(r)?r.length=e:r=new Array(e);for(var o=0;e>o;o++)r[o]=this.cartographicToCartesian(t[o],r[o]);return r};var h=new t,d=new t,m=new t;l.prototype.cartesianToCartographic=function(e,o){var i=this.scaleToGeodeticSurface(e,d);if(!n(i))return void 0;var a=this.geodeticSurfaceNormal(i,h),u=t.subtract(e,i,m),l=Math.atan2(a.y,a.x),c=Math.asin(a.z),f=s.sign(t.dot(u,e))*t.magnitude(u);return n(o)?(o.longitude=l,o.latitude=c,o.height=f,o):new r(l,c,f)},l.prototype.cartesianArrayToCartographicArray=function(t,r){var e=t.length;n(r)?r.length=e:r=new Array(e);for(var o=0;e>o;++o)r[o]=this.cartesianToCartographic(t[o],r[o]);return r};var p=new t,g=new t;return l.prototype.scaleToGeodeticSurface=function(r,e){var o=r.x,i=r.y,a=r.z,u=this._oneOverRadii,l=u.x,c=u.y,f=u.z,h=o*o*l*l,d=i*i*c*c,m=a*a*f*f,E=h+d+m,y=Math.sqrt(1/E),v=t.multiplyByScalar(r,y,p);if(E<this._centerToleranceSquared)return isFinite(y)?t.clone(v,e):void 0;var S=this._oneOverRadiiSquared,C=S.x,w=S.y,M=S.z,R=g;R.x=2*v.x*C,R.y=2*v.y*w,R.z=2*v.z*M;var A,O,T,I,N,x,_,L,P,b,F,D=(1-y)*t.magnitude(r)/(.5*t.magnitude(R)),z=0;do{D-=z,T=1/(1+D*C),I=1/(1+D*w),N=1/(1+D*M),x=T*T,_=I*I,L=N*N,P=x*T,b=_*I,F=L*N,A=h*x+d*_+m*L-1,O=h*P*C+d*b*w+m*F*M;var B=-2*O;z=A/B}while(Math.abs(A)>s.EPSILON12);return n(e)?(e.x=o*T,e.y=i*I,e.z=a*N,e):new t(o*T,i*I,a*N)},l.prototype.scaleToGeocentricSurface=function(r,e){n(e)||(e=new t);var o=r.x,i=r.y,a=r.z,s=this._oneOverRadiiSquared,u=1/Math.sqrt(o*o*s.x+i*i*s.y+a*a*s.z);return t.multiplyByScalar(r,u,e)},l.prototype.transformPositionToScaledSpace=function(r,e){return n(e)||(e=new t),t.multiplyComponents(r,this._oneOverRadii,e)},l.prototype.transformPositionFromScaledSpace=function(r,e){return n(e)||(e=new t),t.multiplyComponents(r,this._radii,e)},l.prototype.equals=function(r){return this===r||n(r)&&t.equals(this._radii,r._radii)},l.prototype.toString=function(){return this._radii.toString()},l}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(t){"use strict";var r={},e=function(e,n){t(r[e])||(r[e]=!0,console.log(n))};return e}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(t,r,e,n,o,i,a){"use strict";var s=function(t){this._ellipsoid=e(t,a.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return o(s.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),s.prototype.project=function(r,e){var o=this._semimajorAxis,i=r.longitude*o,a=r.latitude*o,s=r.height;return n(e)?(e.x=i,e.y=a,e.z=s,e):new t(i,a,s)},s.prototype.unproject=function(t,e){var o=this._oneOverSemimajorAxis,i=t.x*o,a=t.y*o,s=t.z;return n(e)?(e.longitude=i,e.latitude=a,e.height=s,e):new r(i,a,s)},s}),define("Core/Intersect",["./freezeObject"],function(t){"use strict";var r={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return t(r)}),define("Core/Interval",["./defaultValue"],function(t){"use strict";var r=function(r,e){this.start=t(r,0),this.stop=t(e,0)};return r}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n,o){"use strict";var i=function(r,e,n,o){this.x=t(r,0),this.y=t(e,0),this.z=t(n,0),this.w=t(o,0)};i.fromElements=function(t,e,n,o,a){return r(a)?(a.x=t,a.y=e,a.z=n,a.w=o,a):new i(t,e,n,o)},i.fromColor=function(t,e){return r(e)?(e.x=t.red,e.y=t.green,e.z=t.blue,e.w=t.alpha,e):new i(t.red,t.green,t.blue,t.alpha)},i.clone=function(t,e){return r(t)?r(e)?(e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e):new i(t.x,t.y,t.z,t.w):void 0},i.packedLength=4,i.pack=function(r,e,n){n=t(n,0),e[n++]=r.x,e[n++]=r.y,e[n++]=r.z,e[n]=r.w},i.unpack=function(e,n,o){return n=t(n,0),r(o)||(o=new i),o.x=e[n++],o.y=e[n++],o.z=e[n++],o.w=e[n],o},i.fromArray=i.unpack,i.maximumComponent=function(t){return Math.max(t.x,t.y,t.z,t.w)},i.minimumComponent=function(t){return Math.min(t.x,t.y,t.z,t.w)},i.minimumByComponent=function(t,r,e){return e.x=Math.min(t.x,r.x),e.y=Math.min(t.y,r.y),e.z=Math.min(t.z,r.z),e.w=Math.min(t.w,r.w),e},i.maximumByComponent=function(t,r,e){return e.x=Math.max(t.x,r.x),e.y=Math.max(t.y,r.y),e.z=Math.max(t.z,r.z),e.w=Math.max(t.w,r.w),e},i.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w},i.magnitude=function(t){return Math.sqrt(i.magnitudeSquared(t))};var a=new i;i.distance=function(t,r){return i.subtract(t,r,a),i.magnitude(a)},i.distanceSquared=function(t,r){return i.subtract(t,r,a),i.magnitudeSquared(a)},i.normalize=function(t,r){var e=i.magnitude(t);return r.x=t.x/e,r.y=t.y/e,r.z=t.z/e,r.w=t.w/e,r},i.dot=function(t,r){return t.x*r.x+t.y*r.y+t.z*r.z+t.w*r.w},i.multiplyComponents=function(t,r,e){return e.x=t.x*r.x,e.y=t.y*r.y,e.z=t.z*r.z,e.w=t.w*r.w,e},i.add=function(t,r,e){return e.x=t.x+r.x,e.y=t.y+r.y,e.z=t.z+r.z,e.w=t.w+r.w,e},i.subtract=function(t,r,e){return e.x=t.x-r.x,e.y=t.y-r.y,e.z=t.z-r.z,e.w=t.w-r.w,e},i.multiplyByScalar=function(t,r,e){return e.x=t.x*r,e.y=t.y*r,e.z=t.z*r,e.w=t.w*r,e},i.divideByScalar=function(t,r,e){return e.x=t.x/r,e.y=t.y/r,e.z=t.z/r,e.w=t.w/r,e},i.negate=function(t,r){return r.x=-t.x,r.y=-t.y,r.z=-t.z,r.w=-t.w,r},i.abs=function(t,r){return r.x=Math.abs(t.x),r.y=Math.abs(t.y),r.z=Math.abs(t.z),r.w=Math.abs(t.w),r};var s=new i;i.lerp=function(t,r,e,n){return i.multiplyByScalar(r,e,s),n=i.multiplyByScalar(t,1-e,n),i.add(s,n,n)};var u=new i;return i.mostOrthogonalAxis=function(t,r){var e=i.normalize(t,u);return i.abs(e,e),r=e.x<=e.y?e.x<=e.z?e.x<=e.w?i.clone(i.UNIT_X,r):i.clone(i.UNIT_W,r):e.z<=e.w?i.clone(i.UNIT_Z,r):i.clone(i.UNIT_W,r):e.y<=e.z?e.y<=e.w?i.clone(i.UNIT_Y,r):i.clone(i.UNIT_W,r):e.z<=e.w?i.clone(i.UNIT_Z,r):i.clone(i.UNIT_W,r)},i.equals=function(t,e){return t===e||r(t)&&r(e)&&t.x===e.x&&t.y===e.y&&t.z===e.z&&t.w===e.w},i.equalsArray=function(t,r,e){return t.x===r[e]&&t.y===r[e+1]&&t.z===r[e+2]&&t.w===r[e+3]},i.equalsEpsilon=function(t,e,n,i){return t===e||r(t)&&r(e)&&o.equalsEpsilon(t.x,e.x,n,i)&&o.equalsEpsilon(t.y,e.y,n,i)&&o.equalsEpsilon(t.z,e.z,n,i)&&o.equalsEpsilon(t.w,e.w,n,i)},i.ZERO=n(new i(0,0,0,0)),i.UNIT_X=n(new i(1,0,0,0)),i.UNIT_Y=n(new i(0,1,0,0)),i.UNIT_Z=n(new i(0,0,1,0)),i.UNIT_W=n(new i(0,0,0,1)),i.prototype.clone=function(t){return i.clone(this,t)},i.prototype.equals=function(t){return i.equals(this,t)},i.prototype.equalsEpsilon=function(t,r,e){return i.equalsEpsilon(this,t,r,e)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n,o,i){"use strict";function a(t){for(var r=0,e=0;9>e;++e){var n=t[e];r+=n*n}return Math.sqrt(r)}function s(t){for(var r=0,e=0;3>e;++e){var n=t[l.getElementIndex(d[e],h[e])];r+=2*n*n}return Math.sqrt(r)}function u(t,r){for(var e=i.EPSILON15,n=0,o=1,a=0;3>a;++a){var s=Math.abs(t[l.getElementIndex(d[a],h[a])]);s>n&&(o=a,n=s)}var u=1,c=0,f=h[o],m=d[o];if(Math.abs(t[l.getElementIndex(m,f)])>e){var p,g=t[l.getElementIndex(m,m)],E=t[l.getElementIndex(f,f)],y=t[l.getElementIndex(m,f)],v=(g-E)/2/y;p=0>v?-1/(-v+Math.sqrt(1+v*v)):1/(v+Math.sqrt(1+v*v)),u=1/Math.sqrt(1+p*p),c=p*u}return r=l.clone(l.IDENTITY,r),r[l.getElementIndex(f,f)]=r[l.getElementIndex(m,m)]=u,r[l.getElementIndex(m,f)]=c,r[l.getElementIndex(f,m)]=-c,r}var l=function(t,e,n,o,i,a,s,u,l){this[0]=r(t,0),this[1]=r(o,0),this[2]=r(s,0),this[3]=r(e,0),this[4]=r(i,0),this[5]=r(u,0),this[6]=r(n,0),this[7]=r(a,0),this[8]=r(l,0)};l.packedLength=9,l.pack=function(t,e,n){n=r(n,0),e[n++]=t[0],e[n++]=t[1],e[n++]=t[2],e[n++]=t[3],e[n++]=t[4],e[n++]=t[5],e[n++]=t[6],e[n++]=t[7],e[n++]=t[8]},l.unpack=function(t,n,o){return n=r(n,0),e(o)||(o=new l),o[0]=t[n++],o[1]=t[n++],o[2]=t[n++],o[3]=t[n++],o[4]=t[n++],o[5]=t[n++],o[6]=t[n++],o[7]=t[n++],o[8]=t[n++],o},l.clone=function(t,r){return e(t)?e(r)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r):new l(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]):void 0},l.fromArray=function(t,n,o){return n=r(n,0),e(o)||(o=new l),o[0]=t[n],o[1]=t[n+1],o[2]=t[n+2],o[3]=t[n+3],o[4]=t[n+4],o[5]=t[n+5],o[6]=t[n+6],o[7]=t[n+7],o[8]=t[n+8],o},l.fromColumnMajorArray=function(t,r){return l.clone(t,r)},l.fromRowMajorArray=function(t,r){return e(r)?(r[0]=t[0],r[1]=t[3],r[2]=t[6],r[3]=t[1],r[4]=t[4],r[5]=t[7],r[6]=t[2],r[7]=t[5],r[8]=t[8],r):new l(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},l.fromQuaternion=function(t,r){var n=t.x*t.x,o=t.x*t.y,i=t.x*t.z,a=t.x*t.w,s=t.y*t.y,u=t.y*t.z,c=t.y*t.w,f=t.z*t.z,h=t.z*t.w,d=t.w*t.w,m=n-s-f+d,p=2*(o-h),g=2*(i+c),E=2*(o+h),y=-n+s-f+d,v=2*(u-a),S=2*(i-c),C=2*(u+a),w=-n-s+f+d;return e(r)?(r[0]=m,r[1]=E,r[2]=S,r[3]=p,r[4]=y,r[5]=C,r[6]=g,r[7]=v,r[8]=w,r):new l(m,p,g,E,y,v,S,C,w)},l.fromScale=function(t,r){return e(r)?(r[0]=t.x,r[1]=0,r[2]=0,r[3]=0,r[4]=t.y,r[5]=0,r[6]=0,r[7]=0,r[8]=t.z,r):new l(t.x,0,0,0,t.y,0,0,0,t.z)},l.fromUniformScale=function(t,r){return e(r)?(r[0]=t,r[1]=0,r[2]=0,r[3]=0,r[4]=t,r[5]=0,r[6]=0,r[7]=0,r[8]=t,r):new l(t,0,0,0,t,0,0,0,t)},l.fromCrossProduct=function(t,r){return e(r)?(r[0]=0,r[1]=t.z,r[2]=-t.y,r[3]=-t.z,r[4]=0,r[5]=t.x,r[6]=t.y,r[7]=-t.x,r[8]=0,r):new l(0,-t.z,t.y,t.z,0,-t.x,-t.y,t.x,0)},l.fromRotationX=function(t,r){var n=Math.cos(t),o=Math.sin(t);return e(r)?(r[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=n,r[5]=o,r[6]=0,r[7]=-o,r[8]=n,r):new l(1,0,0,0,n,-o,0,o,n)},l.fromRotationY=function(t,r){var n=Math.cos(t),o=Math.sin(t);return e(r)?(r[0]=n,r[1]=0,r[2]=-o,r[3]=0,r[4]=1,r[5]=0,r[6]=o,r[7]=0,r[8]=n,r):new l(n,0,o,0,1,0,-o,0,n)},l.fromRotationZ=function(t,r){var n=Math.cos(t),o=Math.sin(t);return e(r)?(r[0]=n,r[1]=o,r[2]=0,r[3]=-o,r[4]=n,r[5]=0,r[6]=0,r[7]=0,r[8]=1,r):new l(n,-o,0,o,n,0,0,0,1)},l.toArray=function(t,r){return e(r)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8]]},l.getElementIndex=function(t,r){return 3*t+r},l.getColumn=function(t,r,e){var n=3*r,o=t[n],i=t[n+1],a=t[n+2];return e.x=o,e.y=i,e.z=a,e},l.setColumn=function(t,r,e,n){n=l.clone(t,n);var o=3*r;return n[o]=e.x,n[o+1]=e.y,n[o+2]=e.z,n},l.getRow=function(t,r,e){var n=t[r],o=t[r+3],i=t[r+6];return e.x=n,e.y=o,e.z=i,e},l.setRow=function(t,r,e,n){return n=l.clone(t,n),n[r]=e.x,n[r+3]=e.y,n[r+6]=e.z,n};var c=new t;l.getScale=function(r,e){return e.x=t.magnitude(t.fromElements(r[0],r[1],r[2],c)),e.y=t.magnitude(t.fromElements(r[3],r[4],r[5],c)),e.z=t.magnitude(t.fromElements(r[6],r[7],r[8],c)),e};var f=new t;l.getMaximumScale=function(r){return l.getScale(r,f),t.maximumComponent(f)},l.multiply=function(t,r,e){var n=t[0]*r[0]+t[3]*r[1]+t[6]*r[2],o=t[1]*r[0]+t[4]*r[1]+t[7]*r[2],i=t[2]*r[0]+t[5]*r[1]+t[8]*r[2],a=t[0]*r[3]+t[3]*r[4]+t[6]*r[5],s=t[1]*r[3]+t[4]*r[4]+t[7]*r[5],u=t[2]*r[3]+t[5]*r[4]+t[8]*r[5],l=t[0]*r[6]+t[3]*r[7]+t[6]*r[8],c=t[1]*r[6]+t[4]*r[7]+t[7]*r[8],f=t[2]*r[6]+t[5]*r[7]+t[8]*r[8];return e[0]=n,e[1]=o,e[2]=i,e[3]=a,e[4]=s,e[5]=u,e[6]=l,e[7]=c,e[8]=f,e},l.add=function(t,r,e){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e[4]=t[4]+r[4],e[5]=t[5]+r[5],e[6]=t[6]+r[6],e[7]=t[7]+r[7],e[8]=t[8]+r[8],e},l.subtract=function(t,r,e){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e[4]=t[4]-r[4],e[5]=t[5]-r[5],e[6]=t[6]-r[6],e[7]=t[7]-r[7],e[8]=t[8]-r[8],e},l.multiplyByVector=function(t,r,e){var n=r.x,o=r.y,i=r.z,a=t[0]*n+t[3]*o+t[6]*i,s=t[1]*n+t[4]*o+t[7]*i,u=t[2]*n+t[5]*o+t[8]*i;return e.x=a,e.y=s,e.z=u,e},l.multiplyByScalar=function(t,r,e){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*r,e},l.multiplyByScale=function(t,r,e){return e[0]=t[0]*r.x,e[1]=t[1]*r.x,e[2]=t[2]*r.x,e[3]=t[3]*r.y,e[4]=t[4]*r.y,e[5]=t[5]*r.y,e[6]=t[6]*r.z,e[7]=t[7]*r.z,e[8]=t[8]*r.z,e},l.negate=function(t,r){return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[3]=-t[3],r[4]=-t[4],r[5]=-t[5],r[6]=-t[6],r[7]=-t[7],r[8]=-t[8],r},l.transpose=function(t,r){var e=t[0],n=t[3],o=t[6],i=t[1],a=t[4],s=t[7],u=t[2],l=t[5],c=t[8];return r[0]=e,r[1]=n,r[2]=o,r[3]=i,r[4]=a,r[5]=s,r[6]=u,r[7]=l,r[8]=c,r};var h=[1,0,0],d=[2,2,1],m=new l,p=new l;return l.computeEigenDecomposition=function(t,r){var n=i.EPSILON20,o=10,c=0,f=0;e(r)||(r={});for(var h=r.unitary=l.clone(l.IDENTITY,r.unitary),d=r.diagonal=l.clone(t,r.diagonal),g=n*a(d);o>f&&s(d)>g;)u(d,m),l.transpose(m,p),l.multiply(d,m,d),l.multiply(p,d,d),l.multiply(h,m,h),++c>2&&(++f,c=0);return r},l.abs=function(t,r){return r[0]=Math.abs(t[0]),r[1]=Math.abs(t[1]),r[2]=Math.abs(t[2]),r[3]=Math.abs(t[3]),r[4]=Math.abs(t[4]),r[5]=Math.abs(t[5]),r[6]=Math.abs(t[6]),r[7]=Math.abs(t[7]),r[8]=Math.abs(t[8]),r},l.determinant=function(t){var r=t[0],e=t[3],n=t[6],o=t[1],i=t[4],a=t[7],s=t[2],u=t[5],l=t[8];return r*(i*l-u*a)+o*(u*n-e*l)+s*(e*a-i*n)},l.inverse=function(t,r){var e=t[0],o=t[1],a=t[2],s=t[3],u=t[4],c=t[5],f=t[6],h=t[7],d=t[8],m=l.determinant(t);if(Math.abs(m)<=i.EPSILON15)throw new n("matrix is not invertible");r[0]=u*d-h*c,r[1]=h*a-o*d,r[2]=o*c-u*a,r[3]=f*c-s*d,r[4]=e*d-f*a,r[5]=s*a-e*c,r[6]=s*h-f*u,r[7]=f*o-e*h,r[8]=e*u-s*o;var p=1/m;return l.multiplyByScalar(r,p,r)},l.equals=function(t,r){return t===r||e(t)&&e(r)&&t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[3]===r[3]&&t[4]===r[4]&&t[5]===r[5]&&t[6]===r[6]&&t[7]===r[7]&&t[8]===r[8]},l.equalsEpsilon=function(t,r,n){return t===r||e(t)&&e(r)&&Math.abs(t[0]-r[0])<=n&&Math.abs(t[1]-r[1])<=n&&Math.abs(t[2]-r[2])<=n&&Math.abs(t[3]-r[3])<=n&&Math.abs(t[4]-r[4])<=n&&Math.abs(t[5]-r[5])<=n&&Math.abs(t[6]-r[6])<=n&&Math.abs(t[7]-r[7])<=n&&Math.abs(t[8]-r[8])<=n},l.IDENTITY=o(new l(1,0,0,0,1,0,0,0,1)),l.ZERO=o(new l(0,0,0,0,0,0,0,0,0)),l.COLUMN0ROW0=0,l.COLUMN0ROW1=1,l.COLUMN0ROW2=2,l.COLUMN1ROW0=3,l.COLUMN1ROW1=4,l.COLUMN1ROW2=5,l.COLUMN2ROW0=6,l.COLUMN2ROW1=7,l.COLUMN2ROW2=8,l.prototype.clone=function(t){return l.clone(this,t)},l.prototype.equals=function(t){return l.equals(this,t)},l.equalsArray=function(t,r,e){return t[0]===r[e]&&t[1]===r[e+1]&&t[2]===r[e+2]&&t[3]===r[e+3]&&t[4]===r[e+4]&&t[5]===r[e+5]&&t[6]===r[e+6]&&t[7]===r[e+7]&&t[8]===r[e+8]},l.prototype.equalsEpsilon=function(t,r){return l.equalsEpsilon(this,t,r)},l.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},l}),define("Core/RuntimeError",["./defined"],function(t){"use strict";var r=function(t){this.name="RuntimeError",this.message=t;var r;try{throw new Error}catch(e){r=e.stack}this.stack=r};return r.prototype.toString=function(){var r=this.name+": "+this.message;return t(this.stack)&&(r+="\n"+this.stack.toString()),r},r}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(t,r,e,n,o,i,a,s,u){"use strict";var l=function(t,r,n,o,i,a,s,u,l,c,f,h,d,m,p,g){this[0]=e(t,0),this[1]=e(i,0),this[2]=e(l,0),this[3]=e(d,0),this[4]=e(r,0),this[5]=e(a,0),this[6]=e(c,0),this[7]=e(m,0),this[8]=e(n,0),this[9]=e(s,0),this[10]=e(f,0),this[11]=e(p,0),this[12]=e(o,0),this[13]=e(u,0),this[14]=e(h,0),this[15]=e(g,0)};l.packedLength=16,l.pack=function(t,r,n){n=e(n,0),r[n++]=t[0],r[n++]=t[1],r[n++]=t[2],r[n++]=t[3],r[n++]=t[4],r[n++]=t[5],r[n++]=t[6],r[n++]=t[7],r[n++]=t[8],r[n++]=t[9],r[n++]=t[10],r[n++]=t[11],r[n++]=t[12],r[n++]=t[13],r[n++]=t[14],r[n]=t[15]},l.unpack=function(t,r,o){return r=e(r,0),n(o)||(o=new l),o[0]=t[r++],o[1]=t[r++],o[2]=t[r++],o[3]=t[r++],o[4]=t[r++],o[5]=t[r++],o[6]=t[r++],o[7]=t[r++],o[8]=t[r++],o[9]=t[r++],o[10]=t[r++],o[11]=t[r++],o[12]=t[r++],o[13]=t[r++],o[14]=t[r++],o[15]=t[r],o},l.clone=function(t,r){return n(t)?n(r)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=t[11],r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r):new l(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]):void 0},l.fromArray=l.unpack,l.fromColumnMajorArray=function(t,r){return l.clone(t,r)},l.fromRowMajorArray=function(t,r){return n(r)?(r[0]=t[0],r[1]=t[4],r[2]=t[8],r[3]=t[12],r[4]=t[1],r[5]=t[5],r[6]=t[9],r[7]=t[13],r[8]=t[2],r[9]=t[6],r[10]=t[10],r[11]=t[14],r[12]=t[3],r[13]=t[7],r[14]=t[11],r[15]=t[15],r):new l(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},l.fromRotationTranslation=function(r,o,i){return o=e(o,t.ZERO),n(i)?(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=0,i[4]=r[3],i[5]=r[4],i[6]=r[5],i[7]=0,i[8]=r[6],i[9]=r[7],i[10]=r[8],i[11]=0,i[12]=o.x,i[13]=o.y,i[14]=o.z,i[15]=1,i):new l(r[0],r[3],r[6],o.x,r[1],r[4],r[7],o.y,r[2],r[5],r[8],o.z,0,0,0,1)},l.fromTranslationQuaternionRotationScale=function(t,r,e,o){n(o)||(o=new l);var i=e.x,a=e.y,s=e.z,u=r.x*r.x,c=r.x*r.y,f=r.x*r.z,h=r.x*r.w,d=r.y*r.y,m=r.y*r.z,p=r.y*r.w,g=r.z*r.z,E=r.z*r.w,y=r.w*r.w,v=u-d-g+y,S=2*(c-E),C=2*(f+p),w=2*(c+E),M=-u+d-g+y,R=2*(m-h),A=2*(f-p),O=2*(m+h),T=-u-d+g+y;return o[0]=v*i,o[1]=w*i,o[2]=A*i,o[3]=0,o[4]=S*a,o[5]=M*a,o[6]=O*a,o[7]=0,o[8]=C*s,o[9]=R*s,o[10]=T*s,o[11]=0,o[12]=t.x,o[13]=t.y,o[14]=t.z,o[15]=1,o},l.fromTranslation=function(t,r){return l.fromRotationTranslation(s.IDENTITY,t,r)},l.fromScale=function(t,r){return n(r)?(r[0]=t.x,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=t.y,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=t.z,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r):new l(t.x,0,0,0,0,t.y,0,0,0,0,t.z,0,0,0,0,1)},l.fromUniformScale=function(t,r){return n(r)?(r[0]=t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=t,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=t,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r):new l(t,0,0,0,0,t,0,0,0,0,t,0,0,0,0,1)};var c=new t,f=new t,h=new t;l.fromCamera=function(r,e){var o=r.eye,i=r.target,a=r.up;t.normalize(t.subtract(i,o,c),c),t.normalize(t.cross(c,a,f),f),t.normalize(t.cross(f,c,h),h);var s=f.x,u=f.y,d=f.z,m=c.x,p=c.y,g=c.z,E=h.x,y=h.y,v=h.z,S=o.x,C=o.y,w=o.z,M=s*-S+u*-C+d*-w,R=E*-S+y*-C+v*-w,A=m*S+p*C+g*w;return n(e)?(e[0]=s,e[1]=E,e[2]=-m,e[3]=0,e[4]=u,e[5]=y,e[6]=-p,e[7]=0,e[8]=d,e[9]=v,e[10]=-g,e[11]=0,e[12]=M,e[13]=R,e[14]=A,e[15]=1,e):new l(s,u,d,M,E,y,v,R,-m,-p,-g,A,0,0,0,1)},l.computePerspectiveFieldOfView=function(t,r,e,n,o){var i=Math.tan(.5*t),a=1/i,s=a/r,u=(n+e)/(e-n),l=2*n*e/(e-n);return o[0]=s,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=a,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=u,o[11]=-1,o[12]=0,o[13]=0,o[14]=l,o[15]=0,o},l.computeOrthographicOffCenter=function(t,r,e,n,o,i,a){var s=1/(r-t),u=1/(n-e),l=1/(i-o),c=-(r+t)*s,f=-(n+e)*u,h=-(i+o)*l;return s*=2,u*=2,l*=-2,a[0]=s,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=l,a[11]=0,a[12]=c,a[13]=f,a[14]=h,a[15]=1,a +},l.computePerspectiveOffCenter=function(t,r,e,n,o,i,a){var s=2*o/(r-t),u=2*o/(n-e),l=(r+t)/(r-t),c=(n+e)/(n-e),f=-(i+o)/(i-o),h=-1,d=-2*i*o/(i-o);return a[0]=s,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=l,a[9]=c,a[10]=f,a[11]=h,a[12]=0,a[13]=0,a[14]=d,a[15]=0,a},l.computeInfinitePerspectiveOffCenter=function(t,r,e,n,o,i){var a=2*o/(r-t),s=2*o/(n-e),u=(r+t)/(r-t),l=(n+e)/(n-e),c=-1,f=-1,h=-2*o;return i[0]=a,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=s,i[6]=0,i[7]=0,i[8]=u,i[9]=l,i[10]=c,i[11]=f,i[12]=0,i[13]=0,i[14]=h,i[15]=0,i},l.computeViewportTransformation=function(t,r,n,o){t=e(t,e.EMPTY_OBJECT);var i=e(t.x,0),a=e(t.y,0),s=e(t.width,0),u=e(t.height,0);r=e(r,0),n=e(n,1);var l=.5*s,c=.5*u,f=.5*(n-r),h=l,d=c,m=f,p=i+l,g=a+c,E=r+f,y=1;return o[0]=h,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=d,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=m,o[11]=0,o[12]=p,o[13]=g,o[14]=E,o[15]=y,o},l.toArray=function(t,r){return n(r)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=t[11],r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},l.getElementIndex=function(t,r){return 4*t+r},l.getColumn=function(t,r,e){var n=4*r,o=t[n],i=t[n+1],a=t[n+2],s=t[n+3];return e.x=o,e.y=i,e.z=a,e.w=s,e},l.setColumn=function(t,r,e,n){n=l.clone(t,n);var o=4*r;return n[o]=e.x,n[o+1]=e.y,n[o+2]=e.z,n[o+3]=e.w,n},l.setTranslation=function(t,r,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=r.x,e[13]=r.y,e[14]=r.z,e[15]=t[15],e},l.getRow=function(t,r,e){var n=t[r],o=t[r+4],i=t[r+8],a=t[r+12];return e.x=n,e.y=o,e.z=i,e.w=a,e},l.setRow=function(t,r,e,n){return n=l.clone(t,n),n[r]=e.x,n[r+4]=e.y,n[r+8]=e.z,n[r+12]=e.w,n};var d=new t;l.getScale=function(r,e){return e.x=t.magnitude(t.fromElements(r[0],r[1],r[2],d)),e.y=t.magnitude(t.fromElements(r[4],r[5],r[6],d)),e.z=t.magnitude(t.fromElements(r[8],r[9],r[10],d)),e};var m=new t;l.getMaximumScale=function(r){return l.getScale(r,m),t.maximumComponent(m)},l.multiply=function(t,r,e){var n=t[0],o=t[1],i=t[2],a=t[3],s=t[4],u=t[5],l=t[6],c=t[7],f=t[8],h=t[9],d=t[10],m=t[11],p=t[12],g=t[13],E=t[14],y=t[15],v=r[0],S=r[1],C=r[2],w=r[3],M=r[4],R=r[5],A=r[6],O=r[7],T=r[8],I=r[9],N=r[10],x=r[11],_=r[12],L=r[13],P=r[14],b=r[15],F=n*v+s*S+f*C+p*w,D=o*v+u*S+h*C+g*w,z=i*v+l*S+d*C+E*w,B=a*v+c*S+m*C+y*w,U=n*M+s*R+f*A+p*O,q=o*M+u*R+h*A+g*O,G=i*M+l*R+d*A+E*O,W=a*M+c*R+m*A+y*O,Y=n*T+s*I+f*N+p*x,H=o*T+u*I+h*N+g*x,V=i*T+l*I+d*N+E*x,k=a*T+c*I+m*N+y*x,K=n*_+s*L+f*P+p*b,j=o*_+u*L+h*P+g*b,Z=i*_+l*L+d*P+E*b,X=a*_+c*L+m*P+y*b;return e[0]=F,e[1]=D,e[2]=z,e[3]=B,e[4]=U,e[5]=q,e[6]=G,e[7]=W,e[8]=Y,e[9]=H,e[10]=V,e[11]=k,e[12]=K,e[13]=j,e[14]=Z,e[15]=X,e},l.add=function(t,r,e){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e[4]=t[4]+r[4],e[5]=t[5]+r[5],e[6]=t[6]+r[6],e[7]=t[7]+r[7],e[8]=t[8]+r[8],e[9]=t[9]+r[9],e[10]=t[10]+r[10],e[11]=t[11]+r[11],e[12]=t[12]+r[12],e[13]=t[13]+r[13],e[14]=t[14]+r[14],e[15]=t[15]+r[15],e},l.subtract=function(t,r,e){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e[4]=t[4]-r[4],e[5]=t[5]-r[5],e[6]=t[6]-r[6],e[7]=t[7]-r[7],e[8]=t[8]-r[8],e[9]=t[9]-r[9],e[10]=t[10]-r[10],e[11]=t[11]-r[11],e[12]=t[12]-r[12],e[13]=t[13]-r[13],e[14]=t[14]-r[14],e[15]=t[15]-r[15],e},l.multiplyTransformation=function(t,r,e){var n=t[0],o=t[1],i=t[2],a=t[4],s=t[5],u=t[6],l=t[8],c=t[9],f=t[10],h=t[12],d=t[13],m=t[14],p=r[0],g=r[1],E=r[2],y=r[4],v=r[5],S=r[6],C=r[8],w=r[9],M=r[10],R=r[12],A=r[13],O=r[14],T=n*p+a*g+l*E,I=o*p+s*g+c*E,N=i*p+u*g+f*E,x=n*y+a*v+l*S,_=o*y+s*v+c*S,L=i*y+u*v+f*S,P=n*C+a*w+l*M,b=o*C+s*w+c*M,F=i*C+u*w+f*M,D=n*R+a*A+l*O+h,z=o*R+s*A+c*O+d,B=i*R+u*A+f*O+m;return e[0]=T,e[1]=I,e[2]=N,e[3]=0,e[4]=x,e[5]=_,e[6]=L,e[7]=0,e[8]=P,e[9]=b,e[10]=F,e[11]=0,e[12]=D,e[13]=z,e[14]=B,e[15]=1,e},l.multiplyByMatrix3=function(t,r,e){var n=t[0],o=t[1],i=t[2],a=t[4],s=t[5],u=t[6],l=t[8],c=t[9],f=t[10],h=r[0],d=r[1],m=r[2],p=r[3],g=r[4],E=r[5],y=r[6],v=r[7],S=r[8],C=n*h+a*d+l*m,w=o*h+s*d+c*m,M=i*h+u*d+f*m,R=n*p+a*g+l*E,A=o*p+s*g+c*E,O=i*p+u*g+f*E,T=n*y+a*v+l*S,I=o*y+s*v+c*S,N=i*y+u*v+f*S;return e[0]=C,e[1]=w,e[2]=M,e[3]=0,e[4]=R,e[5]=A,e[6]=O,e[7]=0,e[8]=T,e[9]=I,e[10]=N,e[11]=0,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},l.multiplyByTranslation=function(t,r,e){var n=r.x,o=r.y,i=r.z,a=n*t[0]+o*t[4]+i*t[8]+t[12],s=n*t[1]+o*t[5]+i*t[9]+t[13],u=n*t[2]+o*t[6]+i*t[10]+t[14];return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=a,e[13]=s,e[14]=u,e[15]=t[15],e};var p=new t;l.multiplyByUniformScale=function(t,r,e){return p.x=r,p.y=r,p.z=r,l.multiplyByScale(t,p,e)},l.multiplyByScale=function(t,r,e){var n=r.x,o=r.y,i=r.z;return 1===n&&1===o&&1===i?l.clone(t,e):(e[0]=n*t[0],e[1]=n*t[1],e[2]=n*t[2],e[3]=0,e[4]=o*t[4],e[5]=o*t[5],e[6]=o*t[6],e[7]=0,e[8]=i*t[8],e[9]=i*t[9],e[10]=i*t[10],e[11]=0,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=1,e)},l.multiplyByVector=function(t,r,e){var n=r.x,o=r.y,i=r.z,a=r.w,s=t[0]*n+t[4]*o+t[8]*i+t[12]*a,u=t[1]*n+t[5]*o+t[9]*i+t[13]*a,l=t[2]*n+t[6]*o+t[10]*i+t[14]*a,c=t[3]*n+t[7]*o+t[11]*i+t[15]*a;return e.x=s,e.y=u,e.z=l,e.w=c,e},l.multiplyByPointAsVector=function(t,r,e){var n=r.x,o=r.y,i=r.z,a=t[0]*n+t[4]*o+t[8]*i,s=t[1]*n+t[5]*o+t[9]*i,u=t[2]*n+t[6]*o+t[10]*i;return e.x=a,e.y=s,e.z=u,e},l.multiplyByPoint=function(t,r,e){var n=r.x,o=r.y,i=r.z,a=t[0]*n+t[4]*o+t[8]*i+t[12],s=t[1]*n+t[5]*o+t[9]*i+t[13],u=t[2]*n+t[6]*o+t[10]*i+t[14];return e.x=a,e.y=s,e.z=u,e},l.multiplyByScalar=function(t,r,e){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*r,e[9]=t[9]*r,e[10]=t[10]*r,e[11]=t[11]*r,e[12]=t[12]*r,e[13]=t[13]*r,e[14]=t[14]*r,e[15]=t[15]*r,e},l.negate=function(t,r){return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[3]=-t[3],r[4]=-t[4],r[5]=-t[5],r[6]=-t[6],r[7]=-t[7],r[8]=-t[8],r[9]=-t[9],r[10]=-t[10],r[11]=-t[11],r[12]=-t[12],r[13]=-t[13],r[14]=-t[14],r[15]=-t[15],r},l.transpose=function(t,r){var e=t[1],n=t[2],o=t[3],i=t[6],a=t[7],s=t[11];return r[0]=t[0],r[1]=t[4],r[2]=t[8],r[3]=t[12],r[4]=e,r[5]=t[5],r[6]=t[9],r[7]=t[13],r[8]=n,r[9]=i,r[10]=t[10],r[11]=t[14],r[12]=o,r[13]=a,r[14]=s,r[15]=t[15],r},l.abs=function(t,r){return r[0]=Math.abs(t[0]),r[1]=Math.abs(t[1]),r[2]=Math.abs(t[2]),r[3]=Math.abs(t[3]),r[4]=Math.abs(t[4]),r[5]=Math.abs(t[5]),r[6]=Math.abs(t[6]),r[7]=Math.abs(t[7]),r[8]=Math.abs(t[8]),r[9]=Math.abs(t[9]),r[10]=Math.abs(t[10]),r[11]=Math.abs(t[11]),r[12]=Math.abs(t[12]),r[13]=Math.abs(t[13]),r[14]=Math.abs(t[14]),r[15]=Math.abs(t[15]),r},l.equals=function(t,r){return t===r||n(t)&&n(r)&&t[12]===r[12]&&t[13]===r[13]&&t[14]===r[14]&&t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[4]===r[4]&&t[5]===r[5]&&t[6]===r[6]&&t[8]===r[8]&&t[9]===r[9]&&t[10]===r[10]&&t[3]===r[3]&&t[7]===r[7]&&t[11]===r[11]&&t[15]===r[15]},l.equalsEpsilon=function(t,r,e){return t===r||n(t)&&n(r)&&Math.abs(t[0]-r[0])<=e&&Math.abs(t[1]-r[1])<=e&&Math.abs(t[2]-r[2])<=e&&Math.abs(t[3]-r[3])<=e&&Math.abs(t[4]-r[4])<=e&&Math.abs(t[5]-r[5])<=e&&Math.abs(t[6]-r[6])<=e&&Math.abs(t[7]-r[7])<=e&&Math.abs(t[8]-r[8])<=e&&Math.abs(t[9]-r[9])<=e&&Math.abs(t[10]-r[10])<=e&&Math.abs(t[11]-r[11])<=e&&Math.abs(t[12]-r[12])<=e&&Math.abs(t[13]-r[13])<=e&&Math.abs(t[14]-r[14])<=e&&Math.abs(t[15]-r[15])<=e},l.getTranslation=function(t,r){return r.x=t[12],r.y=t[13],r.z=t[14],r},l.getRotation=function(t,r){return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[4],r[4]=t[5],r[5]=t[6],r[6]=t[8],r[7]=t[9],r[8]=t[10],r};var g=new s,E=new s,y=new r,v=new r(0,0,0,1);return l.inverse=function(t,e){if(s.equalsEpsilon(l.getRotation(t,g),E,a.EPSILON7)&&r.equals(l.getRow(t,3,y),v))return e[0]=0,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=0,e[11]=0,e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=1,e;var n=t[0],o=t[4],i=t[8],c=t[12],f=t[1],h=t[5],d=t[9],m=t[13],p=t[2],S=t[6],C=t[10],w=t[14],M=t[3],R=t[7],A=t[11],O=t[15],T=C*O,I=w*A,N=S*O,x=w*R,_=S*A,L=C*R,P=p*O,b=w*M,F=p*A,D=C*M,z=p*R,B=S*M,U=T*h+x*d+_*m-(I*h+N*d+L*m),q=I*f+P*d+D*m-(T*f+b*d+F*m),G=N*f+b*h+z*m-(x*f+P*h+B*m),W=L*f+F*h+B*d-(_*f+D*h+z*d),Y=I*o+N*i+L*c-(T*o+x*i+_*c),H=T*n+b*i+F*c-(I*n+P*i+D*c),V=x*n+P*o+B*c-(N*n+b*o+z*c),k=_*n+D*o+z*i-(L*n+F*o+B*i);T=i*m,I=c*d,N=o*m,x=c*h,_=o*d,L=i*h,P=n*m,b=c*f,F=n*d,D=i*f,z=n*h,B=o*f;var K=T*R+x*A+_*O-(I*R+N*A+L*O),j=I*M+P*A+D*O-(T*M+b*A+F*O),Z=N*M+b*R+z*O-(x*M+P*R+B*O),X=L*M+F*R+B*A-(_*M+D*R+z*A),Q=N*C+L*w+I*S-(_*w+T*S+x*C),J=F*w+T*p+b*C-(P*C+D*w+I*p),$=P*S+B*w+x*p-(z*w+N*p+b*S),tr=z*C+_*p+D*S-(F*S+B*C+L*p),rr=n*U+o*q+i*G+c*W;if(Math.abs(rr)<a.EPSILON20)throw new u("matrix is not invertible because its determinate is zero.");return rr=1/rr,e[0]=U*rr,e[1]=q*rr,e[2]=G*rr,e[3]=W*rr,e[4]=Y*rr,e[5]=H*rr,e[6]=V*rr,e[7]=k*rr,e[8]=K*rr,e[9]=j*rr,e[10]=Z*rr,e[11]=X*rr,e[12]=Q*rr,e[13]=J*rr,e[14]=$*rr,e[15]=tr*rr,e},l.inverseTransformation=function(t,r){var e=t[0],n=t[1],o=t[2],i=t[4],a=t[5],s=t[6],u=t[8],l=t[9],c=t[10],f=t[12],h=t[13],d=t[14],m=-e*f-n*h-o*d,p=-i*f-a*h-s*d,g=-u*f-l*h-c*d;return r[0]=e,r[1]=i,r[2]=u,r[3]=0,r[4]=n,r[5]=a,r[6]=l,r[7]=0,r[8]=o,r[9]=s,r[10]=c,r[11]=0,r[12]=m,r[13]=p,r[14]=g,r[15]=1,r},l.IDENTITY=i(new l(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),l.ZERO=i(new l(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),l.COLUMN0ROW0=0,l.COLUMN0ROW1=1,l.COLUMN0ROW2=2,l.COLUMN0ROW3=3,l.COLUMN1ROW0=4,l.COLUMN1ROW1=5,l.COLUMN1ROW2=6,l.COLUMN1ROW3=7,l.COLUMN2ROW0=8,l.COLUMN2ROW1=9,l.COLUMN2ROW2=10,l.COLUMN2ROW3=11,l.COLUMN3ROW0=12,l.COLUMN3ROW1=13,l.COLUMN3ROW2=14,l.COLUMN3ROW3=15,l.prototype.clone=function(t){return l.clone(this,t)},l.prototype.equals=function(t){return l.equals(this,t)},l.equalsArray=function(t,r,e){return t[0]===r[e]&&t[1]===r[e+1]&&t[2]===r[e+2]&&t[3]===r[e+3]&&t[4]===r[e+4]&&t[5]===r[e+5]&&t[6]===r[e+6]&&t[7]===r[e+7]&&t[8]===r[e+8]&&t[9]===r[e+9]&&t[10]===r[e+10]&&t[11]===r[e+11]&&t[12]===r[e+12]&&t[13]===r[e+13]&&t[14]===r[e+14]&&t[15]===r[e+15]},l.prototype.equalsEpsilon=function(t,r){return l.equalsEpsilon(this,t,r)},l.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},l}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(t,r,e,n){"use strict";var o=function(r,e){this.normal=t.clone(r),this.distance=e};o.fromPointNormal=function(e,n,i){var a=-t.dot(n,e);return r(i)?(t.clone(n,i.normal),i.distance=a,i):new o(n,a)};var i=new t;return o.fromCartesian4=function(e,n){var a=t.fromCartesian4(e,i),s=e.w;return r(n)?(t.clone(a,n.normal),n.distance=s,n):new o(a,s)},o.getPointDistance=function(r,e){return t.dot(r.normal,e)+r.distance},o.ORIGIN_XY_PLANE=n(new o(t.UNIT_Z,0)),o.ORIGIN_YZ_PLANE=n(new o(t.UNIT_X,0)),o.ORIGIN_ZX_PLANE=n(new o(t.UNIT_Y,0)),o}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(t,r,e,n,o,i,a,s){"use strict";var u=function(t,e,n,o){this.west=r(t,0),this.south=r(e,0),this.east=r(n,0),this.north=r(o,0)};n(u.prototype,{width:{get:function(){return u.computeWidth(this)}},height:{get:function(){return u.computeHeight(this)}}}),u.packedLength=4,u.pack=function(t,e,n){n=r(n,0),e[n++]=t.west,e[n++]=t.south,e[n++]=t.east,e[n]=t.north},u.unpack=function(t,n,o){return n=r(n,0),e(o)||(o=new u),o.west=t[n++],o.south=t[n++],o.east=t[n++],o.north=t[n],o},u.computeWidth=function(t){var r=t.east,e=t.west;return e>r&&(r+=s.TWO_PI),r-e},u.computeHeight=function(t){return t.north-t.south},u.fromDegrees=function(t,n,o,i,a){return t=s.toRadians(r(t,0)),n=s.toRadians(r(n,0)),o=s.toRadians(r(o,0)),i=s.toRadians(r(i,0)),e(a)?(a.west=t,a.south=n,a.east=o,a.north=i,a):new u(t,n,o,i)},u.fromCartographicArray=function(t,r){for(var n=Number.MAX_VALUE,o=-Number.MAX_VALUE,i=Number.MAX_VALUE,a=-Number.MAX_VALUE,s=0,l=t.length;l>s;s++){var c=t[s];n=Math.min(n,c.longitude),o=Math.max(o,c.longitude),i=Math.min(i,c.latitude),a=Math.max(a,c.latitude)}return e(r)?(r.west=n,r.south=i,r.east=o,r.north=a,r):new u(n,i,o,a)},u.clone=function(t,r){return e(t)?e(r)?(r.west=t.west,r.south=t.south,r.east=t.east,r.north=t.north,r):new u(t.west,t.south,t.east,t.north):void 0},u.prototype.clone=function(t){return u.clone(this,t)},u.prototype.equals=function(t){return u.equals(this,t)},u.equals=function(t,r){return t===r||e(t)&&e(r)&&t.west===r.west&&t.south===r.south&&t.east===r.east&&t.north===r.north},u.prototype.equalsEpsilon=function(t,r){return e(t)&&Math.abs(this.west-t.west)<=r&&Math.abs(this.south-t.south)<=r&&Math.abs(this.east-t.east)<=r&&Math.abs(this.north-t.north)<=r},u.validate=function(){},u.southwest=function(r,n){return e(n)?(n.longitude=r.west,n.latitude=r.south,n.height=0,n):new t(r.west,r.south)},u.northwest=function(r,n){return e(n)?(n.longitude=r.west,n.latitude=r.north,n.height=0,n):new t(r.west,r.north)},u.northeast=function(r,n){return e(n)?(n.longitude=r.east,n.latitude=r.north,n.height=0,n):new t(r.east,r.north)},u.southeast=function(r,n){return e(n)?(n.longitude=r.east,n.latitude=r.south,n.height=0,n):new t(r.east,r.south)},u.center=function(r,n){var o=r.east,i=r.west;i>o&&(o+=s.TWO_PI);var a=s.negativePiToPi(.5*(i+o)),u=.5*(r.south+r.north);return e(n)?(n.longitude=a,n.latitude=u,n.height=0,n):new t(a,u)},u.intersection=function(t,r,n){var o=t.east,i=t.west,a=r.east,l=r.west;i>o&&a>0?o+=s.TWO_PI:l>a&&o>0&&(a+=s.TWO_PI),i>o&&0>l?l+=s.TWO_PI:l>a&&0>i&&(i+=s.TWO_PI);var c=s.negativePiToPi(Math.max(i,l)),f=s.negativePiToPi(Math.min(o,a));if((t.west<t.east||r.west<r.east)&&c>=f)return void 0;var h=Math.max(t.south,r.south),d=Math.min(t.north,r.north);return h>=d?void 0:e(n)?(n.west=c,n.south=h,n.east=f,n.north=d,n):new u(c,h,f,d)},u.contains=function(t,r){var e=r.longitude,n=r.latitude,o=t.west,i=t.east;return o>i&&(i+=s.TWO_PI,0>e&&(e+=s.TWO_PI)),(e>o||s.equalsEpsilon(e,o,s.EPSILON14))&&(i>e||s.equalsEpsilon(e,i,s.EPSILON14))&&n>=t.south&&n<=t.north};var l=new t;return u.subsample=function(t,n,o,a){n=r(n,i.WGS84),o=r(o,0),e(a)||(a=[]);var c=0,f=t.north,h=t.south,d=t.east,m=t.west,p=l;p.height=o,p.longitude=m,p.latitude=f,a[c]=n.cartographicToCartesian(p,a[c]),c++,p.longitude=d,a[c]=n.cartographicToCartesian(p,a[c]),c++,p.latitude=h,a[c]=n.cartographicToCartesian(p,a[c]),c++,p.longitude=m,a[c]=n.cartographicToCartesian(p,a[c]),c++,p.latitude=0>f?f:h>0?h:0;for(var g=1;8>g;++g)p.longitude=-Math.PI+g*s.PI_OVER_TWO,u.contains(t,p)&&(a[c]=n.cartographicToCartesian(p,a[c]),c++);return 0===p.latitude&&(p.longitude=m,a[c]=n.cartographicToCartesian(p,a[c]),c++,p.longitude=d,a[c]=n.cartographicToCartesian(p,a[c]),c++),a.length=c,a},u.MAX_VALUE=a(new u(-Math.PI,-s.PI_OVER_TWO,Math.PI,s.PI_OVER_TWO)),u}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(t,r,e,n,o,i,a,s,u,l,c,f,h){"use strict";var d=function(r,n){this.center=t.clone(e(r,t.ZERO)),this.radius=e(n,0)},m=new t,p=new t,g=new t,E=new t,y=new t,v=new t,S=new t,C=new t,w=new t,M=new t,R=new t,A=new t;d.fromPoints=function(r,e){if(n(e)||(e=new d),!n(r)||0===r.length)return e.center=t.clone(t.ZERO,e.center),e.radius=0,e;for(var o=t.clone(r[0],S),i=t.clone(o,m),a=t.clone(o,p),s=t.clone(o,g),u=t.clone(o,E),l=t.clone(o,y),c=t.clone(o,v),f=r.length,h=1;f>h;h++){t.clone(r[h],o);var O=o.x,T=o.y,I=o.z;O<i.x&&t.clone(o,i),O>u.x&&t.clone(o,u),T<a.y&&t.clone(o,a),T>l.y&&t.clone(o,l),I<s.z&&t.clone(o,s),I>c.z&&t.clone(o,c)}var N=t.magnitudeSquared(t.subtract(u,i,C)),x=t.magnitudeSquared(t.subtract(l,a,C)),_=t.magnitudeSquared(t.subtract(c,s,C)),L=i,P=u,b=N;x>b&&(b=x,L=a,P=l),_>b&&(b=_,L=s,P=c);var F=w;F.x=.5*(L.x+P.x),F.y=.5*(L.y+P.y),F.z=.5*(L.z+P.z);var D=t.magnitudeSquared(t.subtract(P,F,C)),z=Math.sqrt(D),B=M;B.x=i.x,B.y=a.y,B.z=s.z;var U=R;U.x=u.x,U.y=l.y,U.z=c.z;var q=t.multiplyByScalar(t.add(B,U,C),.5,A),G=0;for(h=0;f>h;h++){t.clone(r[h],o);var W=t.magnitude(t.subtract(o,q,C));W>G&&(G=W);var Y=t.magnitudeSquared(t.subtract(o,F,C));if(Y>D){var H=Math.sqrt(Y);z=.5*(z+H),D=z*z;var V=H-z;F.x=(z*F.x+V*o.x)/H,F.y=(z*F.y+V*o.y)/H,F.z=(z*F.z+V*o.z)/H}}return G>z?(t.clone(F,e.center),e.radius=z):(t.clone(q,e.center),e.radius=G),e};var O=new s,T=new t,I=new t,N=new r,x=new r;d.fromRectangle2D=function(t,r,e){return d.fromRectangleWithHeights2D(t,r,0,0,e)},d.fromRectangleWithHeights2D=function(r,o,i,a,s){if(n(s)||(s=new d),!n(r))return s.center=t.clone(t.ZERO,s.center),s.radius=0,s;o=e(o,O),h.southwest(r,N),N.height=i,h.northeast(r,x),x.height=a;var u=o.project(N,T),l=o.project(x,I),c=l.x-u.x,f=l.y-u.y,m=l.z-u.z;s.radius=.5*Math.sqrt(c*c+f*f+m*m);var p=s.center;return p.x=u.x+.5*c,p.y=u.y+.5*f,p.z=u.z+.5*m,s};var _=[];d.fromRectangle3D=function(t,r,o,i){r=e(r,a.WGS84),o=e(o,0);var s;return n(t)&&(s=h.subsample(t,r,o,_)),d.fromPoints(s,i)},d.fromVertices=function(r,o,i,a){if(n(a)||(a=new d),!n(r)||0===r.length)return a.center=t.clone(t.ZERO,a.center),a.radius=0,a;o=e(o,t.ZERO),i=e(i,3);var s=S;s.x=r[0]+o.x,s.y=r[1]+o.y,s.z=r[2]+o.z;for(var u=t.clone(s,m),l=t.clone(s,p),c=t.clone(s,g),f=t.clone(s,E),h=t.clone(s,y),O=t.clone(s,v),T=r.length,I=0;T>I;I+=i){var N=r[I]+o.x,x=r[I+1]+o.y,_=r[I+2]+o.z;s.x=N,s.y=x,s.z=_,N<u.x&&t.clone(s,u),N>f.x&&t.clone(s,f),x<l.y&&t.clone(s,l),x>h.y&&t.clone(s,h),_<c.z&&t.clone(s,c),_>O.z&&t.clone(s,O)}var L=t.magnitudeSquared(t.subtract(f,u,C)),P=t.magnitudeSquared(t.subtract(h,l,C)),b=t.magnitudeSquared(t.subtract(O,c,C)),F=u,D=f,z=L;P>z&&(z=P,F=l,D=h),b>z&&(z=b,F=c,D=O);var B=w;B.x=.5*(F.x+D.x),B.y=.5*(F.y+D.y),B.z=.5*(F.z+D.z);var U=t.magnitudeSquared(t.subtract(D,B,C)),q=Math.sqrt(U),G=M;G.x=u.x,G.y=l.y,G.z=c.z;var W=R;W.x=f.x,W.y=h.y,W.z=O.z;var Y=t.multiplyByScalar(t.add(G,W,C),.5,A),H=0;for(I=0;T>I;I+=i){s.x=r[I]+o.x,s.y=r[I+1]+o.y,s.z=r[I+2]+o.z;var V=t.magnitude(t.subtract(s,Y,C));V>H&&(H=V);var k=t.magnitudeSquared(t.subtract(s,B,C));if(k>U){var K=Math.sqrt(k);q=.5*(q+K),U=q*q;var j=K-q;B.x=(q*B.x+j*s.x)/K,B.y=(q*B.y+j*s.y)/K,B.z=(q*B.z+j*s.z)/K}}return H>q?(t.clone(B,a.center),a.radius=q):(t.clone(Y,a.center),a.radius=H),a},d.fromCornerPoints=function(r,e,o){n(o)||(o=new d);var i=o.center;return t.add(r,e,i),t.multiplyByScalar(i,.5,i),o.radius=t.distance(i,e),o},d.fromEllipsoid=function(r,e){return n(e)||(e=new d),t.clone(t.ZERO,e.center),e.radius=r.maximumRadius,e};var L=new t;d.fromBoundingSpheres=function(r,e){if(n(e)||(e=new d),!n(r)||0===r.length)return e.center=t.clone(t.ZERO,e.center),e.radius=0,e;var o=r.length;if(1===o)return d.clone(r[0],e);if(2===o)return d.union(r[0],r[1],e);for(var i=[],a=0;o>a;a++)i.push(r[a].center);e=d.fromPoints(i,e);var s=e.center,u=e.radius;for(a=0;o>a;a++){var l=r[a];u=Math.max(u,t.distance(s,l.center,L)+l.radius)}return e.radius=u,e},d.clone=function(r,e){return n(r)?n(e)?(e.center=t.clone(r.center,e.center),e.radius=r.radius,e):new d(r.center,r.radius):void 0},d.packedLength=4,d.pack=function(t,r,n){n=e(n,0);var o=t.center;r[n++]=o.x,r[n++]=o.y,r[n++]=o.z,r[n]=t.radius},d.unpack=function(t,r,o){r=e(r,0),n(o)||(o=new d);var i=o.center;return i.x=t[r++],i.y=t[r++],i.z=t[r++],o.radius=t[r],o};var P=new t,b=new t;d.union=function(r,e,o){n(o)||(o=new d);var i=r.center,a=r.radius,s=e.center,u=e.radius,l=t.subtract(s,i,P),c=t.magnitude(l);if(a>=c+u)return r.clone(o),o;if(u>=c+a)return e.clone(o),o;var f=.5*(a+c+u),h=t.multiplyByScalar(l,(-a+f)/c,b);return t.add(h,i,h),t.clone(h,o.center),o.radius=f,o};var F=new t;d.expand=function(r,e,n){n=d.clone(r,n);var o=t.magnitude(t.subtract(e,n.center,F));return o>n.radius&&(n.radius=o),n},d.intersectPlane=function(r,e){var n=r.center,o=r.radius,i=e.normal,a=t.dot(i,n)+e.distance;return-o>a?u.OUTSIDE:o>a?u.INTERSECTING:u.INSIDE};var D=new f(new t,0);d.intersect=function(t,r){o("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var e=f.fromCartesian4(r,D);return d.intersectPlane(t,e)},d.transform=function(t,r,e){return n(e)||(e=new d),e.center=c.multiplyByPoint(r,t.center,e.center),e.radius=c.getMaximumScale(r)*t.radius,e};var z=new t;d.distanceSquaredTo=function(r,e){var n=t.subtract(r.center,e,z);return t.magnitudeSquared(n)-r.radius*r.radius},d.transformWithoutScale=function(t,r,e){return n(e)||(e=new d),e.center=c.multiplyByPoint(r,t.center,e.center),e.radius=t.radius,e};var B=new t;d.computePlaneDistances=function(r,e,o,i){n(i)||(i=new l);var a=t.subtract(r.center,e,B),s=t.multiplyByScalar(o,t.dot(o,a),B),u=t.magnitude(s);return i.start=u-r.radius,i.stop=u+r.radius,i};for(var U=new t,q=new t,G=new t,W=new t,Y=new t,H=new r,V=new Array(8),k=0;8>k;++k)V[k]=new t;var K=new s;return d.projectTo2D=function(r,n,o){n=e(n,K);var i=n.ellipsoid,a=r.center,s=r.radius,u=i.geodeticSurfaceNormal(a,U),l=t.cross(t.UNIT_Z,u,q);t.normalize(l,l);var c=t.cross(u,l,G);t.normalize(c,c),t.multiplyByScalar(u,s,u),t.multiplyByScalar(c,s,c),t.multiplyByScalar(l,s,l);var f=t.negate(c,Y),h=t.negate(l,W),m=V,p=m[0];t.add(u,c,p),t.add(p,l,p),p=m[1],t.add(u,c,p),t.add(p,h,p),p=m[2],t.add(u,f,p),t.add(p,h,p),p=m[3],t.add(u,f,p),t.add(p,l,p),t.negate(u,u),p=m[4],t.add(u,c,p),t.add(p,l,p),p=m[5],t.add(u,c,p),t.add(p,h,p),p=m[6],t.add(u,f,p),t.add(p,h,p),p=m[7],t.add(u,f,p),t.add(p,l,p);for(var g=m.length,E=0;g>E;++E){var y=m[E];t.add(a,y,y);var v=i.cartesianToCartographic(y,H);n.project(v,y)}o=d.fromPoints(m,o),a=o.center;var S=a.x,C=a.y,w=a.z;return a.x=w,a.y=S,a.z=C,o},d.equals=function(r,e){return r===e||n(r)&&n(e)&&t.equals(r.center,e.center)&&r.radius===e.radius},d.prototype.intersectPlane=function(t){return d.intersectPlane(this,t)},d.prototype.intersect=function(t){return d.intersect(this,t)},d.prototype.equals=function(t){return d.equals(this,t)},d.prototype.clone=function(t){return d.clone(this,t)},d}),define("Core/Fullscreen",["./defined","./defineProperties"],function(t,r){"use strict";var e,n={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},o={};return r(o,{element:{get:function(){return o.supportsFullscreen()?document[n.fullscreenElement]:void 0}},changeEventName:{get:function(){return o.supportsFullscreen()?n.fullscreenchange:void 0}},errorEventName:{get:function(){return o.supportsFullscreen()?n.fullscreenerror:void 0}},enabled:{get:function(){return o.supportsFullscreen()?document[n.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return o.supportsFullscreen()?null!==o.element:void 0}}}),o.supportsFullscreen=function(){if(t(e))return e;e=!1;var r=document.body;if("function"==typeof r.requestFullscreen)return n.requestFullscreen="requestFullscreen",n.exitFullscreen="exitFullscreen",n.fullscreenEnabled="fullscreenEnabled",n.fullscreenElement="fullscreenElement",n.fullscreenchange="fullscreenchange",n.fullscreenerror="fullscreenerror",e=!0;for(var o,i=["webkit","moz","o","ms","khtml"],a=0,s=i.length;s>a;++a){var u=i[a];o=u+"RequestFullscreen","function"==typeof r[o]?(n.requestFullscreen=o,e=!0):(o=u+"RequestFullScreen","function"==typeof r[o]&&(n.requestFullscreen=o,e=!0)),o=u+"ExitFullscreen","function"==typeof document[o]?n.exitFullscreen=o:(o=u+"CancelFullScreen","function"==typeof document[o]&&(n.exitFullscreen=o)),o=u+"FullscreenEnabled",t(document[o])?n.fullscreenEnabled=o:(o=u+"FullScreenEnabled",t(document[o])&&(n.fullscreenEnabled=o)),o=u+"FullscreenElement",t(document[o])?n.fullscreenElement=o:(o=u+"FullScreenElement",t(document[o])&&(n.fullscreenElement=o)),o=u+"fullscreenchange",t(document["on"+o])&&("ms"===u&&(o="MSFullscreenChange"),n.fullscreenchange=o),o=u+"fullscreenerror",t(document["on"+o])&&("ms"===u&&(o="MSFullscreenError"),n.fullscreenerror=o)}return e},o.requestFullscreen=function(t){o.supportsFullscreen()&&t[n.requestFullscreen]()},o.exitFullscreen=function(){o.supportsFullscreen()&&document[n.exitFullscreen]()},o}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(t,r,e){"use strict";function n(t){for(var r=t.split("."),e=0,n=r.length;n>e;++e)r[e]=parseInt(r[e],10);return r}function o(){if(!r(g)){g=!1;var t=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(g=!0,E=n(t[1]))}return g}function i(){return o()&&E}function a(){if(!r(y)&&(y=!1,!o()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var t=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(y=!0,v=n(t[1]))}return y}function s(){return a()&&v}function u(){if(!r(S)){S=!1;var t=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==t&&(S=!0,C=n(t[1]),C.isNightly=!!t[2])}return S}function l(){return u()&&C}function c(){if(!r(w)){w=!1;var t;"Microsoft Internet Explorer"===navigator.appName?(t=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(w=!0,M=n(t[1]))):"Netscape"===navigator.appName&&(t=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(w=!0,M=n(t[1])))}return w}function f(){return c()&&M}function h(){if(!r(R)){R=!1;var t=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(R=!0,A=n(t[1]))}return R}function d(){return r(O)||(O=/Windows/i.test(navigator.appVersion)),O}function m(){return h()&&A}function p(){return r(T)||(T=r(window.PointerEvent)&&(!r(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),T}var g,E,y,v,S,C,w,M,R,A,O,T,I={isChrome:o,chromeVersion:i,isSafari:a,safariVersion:s,isWebkit:u,webkitVersion:l,isInternetExplorer:c,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:t(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return I.supportsFullscreen=function(){return e.supportsFullscreen()},I.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},I.supportsWebWorkers=function(){return"undefined"!=typeof Worker},I}),define("Core/Color",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math"],function(t,r,e,n,o,i){"use strict";function a(t,r,e){return 0>e&&(e+=1),e>1&&(e-=1),1>6*e?t+6*(r-t)*e:1>2*e?r:2>3*e?t+6*(r-t)*(2/3-e):t}var s=function(r,e,n,o){this.red=t(r,1),this.green=t(e,1),this.blue=t(n,1),this.alpha=t(o,1)};s.fromCartesian4=function(t,e){return r(e)?(e.red=t.x,e.green=t.y,e.blue=t.z,e.alpha=t.w,e):new s(t.x,t.y,t.z,t.w)},s.fromBytes=function(e,n,o,i,a){return e=s.byteToFloat(t(e,255)),n=s.byteToFloat(t(n,255)),o=s.byteToFloat(t(o,255)),i=s.byteToFloat(t(i,255)),r(a)?(a.red=e,a.green=n,a.blue=o,a.alpha=i,a):new s(e,n,o,i)},s.fromAlpha=function(t,e,n){return r(n)?(n.red=t.red,n.green=t.green,n.blue=t.blue,n.alpha=e,n):new s(t.red,t.green,t.blue,e)};var u,l,c;n.supportsTypedArrays()&&(u=new ArrayBuffer(4),l=new Uint32Array(u),c=new Uint8Array(u)),s.fromRgba=function(t){return l[0]=t,s.fromBytes(c[0],c[1],c[2],c[3])},s.fromHsl=function(r,e,n,o){r=t(r,0)%1,e=t(e,0),n=t(n,0),o=t(o,1);var i=n,u=n,l=n;if(0!==e){var c;c=.5>n?n*(1+e):n+e-n*e;var f=2*n-c;i=a(f,c,r+1/3),u=a(f,c,r),l=a(f,c,r-1/3)}return new s(i,u,l,o)},s.fromRandom=function(e,n){e=t(e,t.EMPTY_OBJECT);var o=e.red;if(!r(o)){var a=t(e.minimumRed,0),u=t(e.maximumRed,1);o=a+i.nextRandomNumber()*(u-a)}var l=e.green;if(!r(l)){var c=t(e.minimumGreen,0),f=t(e.maximumGreen,1);l=c+i.nextRandomNumber()*(f-c)}var h=e.blue;if(!r(h)){var d=t(e.minimumBlue,0),m=t(e.maximumBlue,1);h=d+i.nextRandomNumber()*(m-d)}var p=e.alpha;if(!r(p)){var g=t(e.minimumAlpha,0),E=t(e.maximumAlpha,1);p=g+i.nextRandomNumber()*(E-g)}return r(n)?(n.red=o,n.green=l,n.blue=h,n.alpha=p,n):new s(o,l,h,p)};var f=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i,h=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i,d=/^rgba?\(\s*([0-9.]+%?)\s*,\s*([0-9.]+%?)\s*,\s*([0-9.]+%?)(?:\s*,\s*([0-9.]+))?\s*\)$/i,m=/^hsla?\(\s*([0-9.]+)\s*,\s*([0-9.]+%)\s*,\s*([0-9.]+%)(?:\s*,\s*([0-9.]+))?\s*\)$/i;return s.fromCssColorString=function(e){var n=s[e.toUpperCase()];if(r(n))return s.clone(n);var o=f.exec(e);return null!==o?new s(parseInt(o[1],16)/15,parseInt(o[2],16)/15,parseInt(o[3],16)/15):(o=h.exec(e),null!==o?new s(parseInt(o[1],16)/255,parseInt(o[2],16)/255,parseInt(o[3],16)/255):(o=d.exec(e),null!==o?new s(parseFloat(o[1])/("%"===o[1].substr(-1)?100:255),parseFloat(o[2])/("%"===o[2].substr(-1)?100:255),parseFloat(o[3])/("%"===o[3].substr(-1)?100:255),parseFloat(t(o[4],"1.0"))):(o=m.exec(e),null!==o?s.fromHsl(parseFloat(o[1])/360,parseFloat(o[2])/100,parseFloat(o[3])/100,parseFloat(t(o[4],"1.0"))):void 0)))},s.packedLength=4,s.pack=function(r,e,n){n=t(n,0),e[n++]=r.red,e[n++]=r.green,e[n++]=r.blue,e[n]=r.alpha},s.unpack=function(e,n,o){return n=t(n,0),r(o)||(o=new s),o.red=e[n++],o.green=e[n++],o.blue=e[n++],o.alpha=e[n],o},s.byteToFloat=function(t){return t/255},s.floatToByte=function(t){return 1===t?255:0|256*t},s.clone=function(t,e){return r(t)?r(e)?(e.red=t.red,e.green=t.green,e.blue=t.blue,e.alpha=t.alpha,e):new s(t.red,t.green,t.blue,t.alpha):void 0},s.equals=function(t,e){return t===e||r(t)&&r(e)&&t.red===e.red&&t.green===e.green&&t.blue===e.blue&&t.alpha===e.alpha},s.equalsArray=function(t,r,e){return t.red===r[e]&&t.green===r[e+1]&&t.blue===r[e+2]&&t.alpha===r[e+3]},s.prototype.clone=function(t){return s.clone(this,t)},s.prototype.equals=function(t){return s.equals(this,t)},s.prototype.equalsEpsilon=function(t,e){return this===t||r(t)&&Math.abs(this.red-t.red)<=e&&Math.abs(this.green-t.green)<=e&&Math.abs(this.blue-t.blue)<=e&&Math.abs(this.alpha-t.alpha)<=e},s.prototype.toString=function(){return"("+this.red+", "+this.green+", "+this.blue+", "+this.alpha+")"},s.prototype.toCssColorString=function(){var t=s.floatToByte(this.red),r=s.floatToByte(this.green),e=s.floatToByte(this.blue);return 1===this.alpha?"rgb("+t+","+r+","+e+")":"rgba("+t+","+r+","+e+","+this.alpha+")"},s.prototype.toBytes=function(t){var e=s.floatToByte(this.red),n=s.floatToByte(this.green),o=s.floatToByte(this.blue),i=s.floatToByte(this.alpha);return r(t)?(t[0]=e,t[1]=n,t[2]=o,t[3]=i,t):[e,n,o,i]},s.prototype.toRgba=function(){return c[0]=s.floatToByte(this.red),c[1]=s.floatToByte(this.green),c[2]=s.floatToByte(this.blue),c[3]=s.floatToByte(this.alpha),l[0]},s.prototype.brighten=function(t,r){return t=1-t,r.red=1-(1-this.red)*t,r.green=1-(1-this.green)*t,r.blue=1-(1-this.blue)*t,r.alpha=this.alpha,r},s.prototype.darken=function(t,r){return t=1-t,r.red=this.red*t,r.green=this.green*t,r.blue=this.blue*t,r.alpha=this.alpha,r},s.prototype.withAlpha=function(t,r){return s.fromAlpha(this,t,r)},s.ALICEBLUE=o(s.fromCssColorString("#F0F8FF")),s.ANTIQUEWHITE=o(s.fromCssColorString("#FAEBD7")),s.AQUA=o(s.fromCssColorString("#00FFFF")),s.AQUAMARINE=o(s.fromCssColorString("#7FFFD4")),s.AZURE=o(s.fromCssColorString("#F0FFFF")),s.BEIGE=o(s.fromCssColorString("#F5F5DC")),s.BISQUE=o(s.fromCssColorString("#FFE4C4")),s.BLACK=o(s.fromCssColorString("#000000")),s.BLANCHEDALMOND=o(s.fromCssColorString("#FFEBCD")),s.BLUE=o(s.fromCssColorString("#0000FF")),s.BLUEVIOLET=o(s.fromCssColorString("#8A2BE2")),s.BROWN=o(s.fromCssColorString("#A52A2A")),s.BURLYWOOD=o(s.fromCssColorString("#DEB887")),s.CADETBLUE=o(s.fromCssColorString("#5F9EA0")),s.CHARTREUSE=o(s.fromCssColorString("#7FFF00")),s.CHOCOLATE=o(s.fromCssColorString("#D2691E")),s.CORAL=o(s.fromCssColorString("#FF7F50")),s.CORNFLOWERBLUE=o(s.fromCssColorString("#6495ED")),s.CORNSILK=o(s.fromCssColorString("#FFF8DC")),s.CRIMSON=o(s.fromCssColorString("#DC143C")),s.CYAN=o(s.fromCssColorString("#00FFFF")),s.DARKBLUE=o(s.fromCssColorString("#00008B")),s.DARKCYAN=o(s.fromCssColorString("#008B8B")),s.DARKGOLDENROD=o(s.fromCssColorString("#B8860B")),s.DARKGRAY=o(s.fromCssColorString("#A9A9A9")),s.DARKGREEN=o(s.fromCssColorString("#006400")),s.DARKGREY=s.DARKGRAY,s.DARKKHAKI=o(s.fromCssColorString("#BDB76B")),s.DARKMAGENTA=o(s.fromCssColorString("#8B008B")),s.DARKOLIVEGREEN=o(s.fromCssColorString("#556B2F")),s.DARKORANGE=o(s.fromCssColorString("#FF8C00")),s.DARKORCHID=o(s.fromCssColorString("#9932CC")),s.DARKRED=o(s.fromCssColorString("#8B0000")),s.DARKSALMON=o(s.fromCssColorString("#E9967A")),s.DARKSEAGREEN=o(s.fromCssColorString("#8FBC8F")),s.DARKSLATEBLUE=o(s.fromCssColorString("#483D8B")),s.DARKSLATEGRAY=o(s.fromCssColorString("#2F4F4F")),s.DARKSLATEGREY=s.DARKSLATEGRAY,s.DARKTURQUOISE=o(s.fromCssColorString("#00CED1")),s.DARKVIOLET=o(s.fromCssColorString("#9400D3")),s.DEEPPINK=o(s.fromCssColorString("#FF1493")),s.DEEPSKYBLUE=o(s.fromCssColorString("#00BFFF")),s.DIMGRAY=o(s.fromCssColorString("#696969")),s.DIMGREY=s.DIMGRAY,s.DODGERBLUE=o(s.fromCssColorString("#1E90FF")),s.FIREBRICK=o(s.fromCssColorString("#B22222")),s.FLORALWHITE=o(s.fromCssColorString("#FFFAF0")),s.FORESTGREEN=o(s.fromCssColorString("#228B22")),s.FUSCHIA=o(s.fromCssColorString("#FF00FF")),s.GAINSBORO=o(s.fromCssColorString("#DCDCDC")),s.GHOSTWHITE=o(s.fromCssColorString("#F8F8FF")),s.GOLD=o(s.fromCssColorString("#FFD700")),s.GOLDENROD=o(s.fromCssColorString("#DAA520")),s.GRAY=o(s.fromCssColorString("#808080")),s.GREEN=o(s.fromCssColorString("#008000")),s.GREENYELLOW=o(s.fromCssColorString("#ADFF2F")),s.GREY=s.GRAY,s.HONEYDEW=o(s.fromCssColorString("#F0FFF0")),s.HOTPINK=o(s.fromCssColorString("#FF69B4")),s.INDIANRED=o(s.fromCssColorString("#CD5C5C")),s.INDIGO=o(s.fromCssColorString("#4B0082")),s.IVORY=o(s.fromCssColorString("#FFFFF0")),s.KHAKI=o(s.fromCssColorString("#F0E68C")),s.LAVENDER=o(s.fromCssColorString("#E6E6FA")),s.LAVENDAR_BLUSH=o(s.fromCssColorString("#FFF0F5")),s.LAWNGREEN=o(s.fromCssColorString("#7CFC00")),s.LEMONCHIFFON=o(s.fromCssColorString("#FFFACD")),s.LIGHTBLUE=o(s.fromCssColorString("#ADD8E6")),s.LIGHTCORAL=o(s.fromCssColorString("#F08080")),s.LIGHTCYAN=o(s.fromCssColorString("#E0FFFF")),s.LIGHTGOLDENRODYELLOW=o(s.fromCssColorString("#FAFAD2")),s.LIGHTGRAY=o(s.fromCssColorString("#D3D3D3")),s.LIGHTGREEN=o(s.fromCssColorString("#90EE90")),s.LIGHTGREY=s.LIGHTGRAY,s.LIGHTPINK=o(s.fromCssColorString("#FFB6C1")),s.LIGHTSEAGREEN=o(s.fromCssColorString("#20B2AA")),s.LIGHTSKYBLUE=o(s.fromCssColorString("#87CEFA")),s.LIGHTSLATEGRAY=o(s.fromCssColorString("#778899")),s.LIGHTSLATEGREY=s.LIGHTSLATEGRAY,s.LIGHTSTEELBLUE=o(s.fromCssColorString("#B0C4DE")),s.LIGHTYELLOW=o(s.fromCssColorString("#FFFFE0")),s.LIME=o(s.fromCssColorString("#00FF00")),s.LIMEGREEN=o(s.fromCssColorString("#32CD32")),s.LINEN=o(s.fromCssColorString("#FAF0E6")),s.MAGENTA=o(s.fromCssColorString("#FF00FF")),s.MAROON=o(s.fromCssColorString("#800000")),s.MEDIUMAQUAMARINE=o(s.fromCssColorString("#66CDAA")),s.MEDIUMBLUE=o(s.fromCssColorString("#0000CD")),s.MEDIUMORCHID=o(s.fromCssColorString("#BA55D3")),s.MEDIUMPURPLE=o(s.fromCssColorString("#9370DB")),s.MEDIUMSEAGREEN=o(s.fromCssColorString("#3CB371")),s.MEDIUMSLATEBLUE=o(s.fromCssColorString("#7B68EE")),s.MEDIUMSPRINGGREEN=o(s.fromCssColorString("#00FA9A")),s.MEDIUMTURQUOISE=o(s.fromCssColorString("#48D1CC")),s.MEDIUMVIOLETRED=o(s.fromCssColorString("#C71585")),s.MIDNIGHTBLUE=o(s.fromCssColorString("#191970")),s.MINTCREAM=o(s.fromCssColorString("#F5FFFA")),s.MISTYROSE=o(s.fromCssColorString("#FFE4E1")),s.MOCCASIN=o(s.fromCssColorString("#FFE4B5")),s.NAVAJOWHITE=o(s.fromCssColorString("#FFDEAD")),s.NAVY=o(s.fromCssColorString("#000080")),s.OLDLACE=o(s.fromCssColorString("#FDF5E6")),s.OLIVE=o(s.fromCssColorString("#808000")),s.OLIVEDRAB=o(s.fromCssColorString("#6B8E23")),s.ORANGE=o(s.fromCssColorString("#FFA500")),s.ORANGERED=o(s.fromCssColorString("#FF4500")),s.ORCHID=o(s.fromCssColorString("#DA70D6")),s.PALEGOLDENROD=o(s.fromCssColorString("#EEE8AA")),s.PALEGREEN=o(s.fromCssColorString("#98FB98")),s.PALETURQUOISE=o(s.fromCssColorString("#AFEEEE")),s.PALEVIOLETRED=o(s.fromCssColorString("#DB7093")),s.PAPAYAWHIP=o(s.fromCssColorString("#FFEFD5")),s.PEACHPUFF=o(s.fromCssColorString("#FFDAB9")),s.PERU=o(s.fromCssColorString("#CD853F")),s.PINK=o(s.fromCssColorString("#FFC0CB")),s.PLUM=o(s.fromCssColorString("#DDA0DD")),s.POWDERBLUE=o(s.fromCssColorString("#B0E0E6")),s.PURPLE=o(s.fromCssColorString("#800080")),s.RED=o(s.fromCssColorString("#FF0000")),s.ROSYBROWN=o(s.fromCssColorString("#BC8F8F")),s.ROYALBLUE=o(s.fromCssColorString("#4169E1")),s.SADDLEBROWN=o(s.fromCssColorString("#8B4513")),s.SALMON=o(s.fromCssColorString("#FA8072")),s.SANDYBROWN=o(s.fromCssColorString("#F4A460")),s.SEAGREEN=o(s.fromCssColorString("#2E8B57")),s.SEASHELL=o(s.fromCssColorString("#FFF5EE")),s.SIENNA=o(s.fromCssColorString("#A0522D")),s.SILVER=o(s.fromCssColorString("#C0C0C0")),s.SKYBLUE=o(s.fromCssColorString("#87CEEB")),s.SLATEBLUE=o(s.fromCssColorString("#6A5ACD")),s.SLATEGRAY=o(s.fromCssColorString("#708090")),s.SLATEGREY=s.SLATEGRAY,s.SNOW=o(s.fromCssColorString("#FFFAFA")),s.SPRINGGREEN=o(s.fromCssColorString("#00FF7F")),s.STEELBLUE=o(s.fromCssColorString("#4682B4")),s.TAN=o(s.fromCssColorString("#D2B48C")),s.TEAL=o(s.fromCssColorString("#008080")),s.THISTLE=o(s.fromCssColorString("#D8BFD8")),s.TOMATO=o(s.fromCssColorString("#FF6347")),s.TURQUOISE=o(s.fromCssColorString("#40E0D0")),s.VIOLET=o(s.fromCssColorString("#EE82EE")),s.WHEAT=o(s.fromCssColorString("#F5DEB3")),s.WHITE=o(s.fromCssColorString("#FFFFFF")),s.WHITESMOKE=o(s.fromCssColorString("#F5F5F5")),s.YELLOW=o(s.fromCssColorString("#FFFF00")),s.YELLOWGREEN=o(s.fromCssColorString("#9ACD32")),s.TRANSPARENT=o(new s(0,0,0,0)),s +}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(t,r,e,n,o){"use strict";if(!n.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(t){switch(t){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new e("componentDatatype is not a valid value.")}},i.fromTypedArray=function(t){return t instanceof Int8Array?i.BYTE:t instanceof Uint8Array?i.UNSIGNED_BYTE:t instanceof Int16Array?i.SHORT:t instanceof Uint16Array?i.UNSIGNED_SHORT:t instanceof Float32Array?i.FLOAT:t instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(t){return r(t)&&(t===i.BYTE||t===i.UNSIGNED_BYTE||t===i.SHORT||t===i.UNSIGNED_SHORT||t===i.FLOAT||t===i.DOUBLE)},i.createTypedArray=function(t,r){switch(t){case i.BYTE:return new Int8Array(r);case i.UNSIGNED_BYTE:return new Uint8Array(r);case i.SHORT:return new Int16Array(r);case i.UNSIGNED_SHORT:return new Uint16Array(r);case i.FLOAT:return new Float32Array(r);case i.DOUBLE:return new Float64Array(r);default:throw new e("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(r,n,o,a){switch(o=t(o,0),a=t(a,(n.byteLength-o)/i.getSizeInBytes(r)),r){case i.BYTE:return new Int8Array(n,o,a);case i.UNSIGNED_BYTE:return new Uint8Array(n,o,a);case i.SHORT:return new Int16Array(n,o,a);case i.UNSIGNED_SHORT:return new Uint16Array(n,o,a);case i.FLOAT:return new Float32Array(n,o,a);case i.DOUBLE:return new Float64Array(n,o,a);default:throw new e("componentDatatype is not a valid value.")}},o(i)}),define("Core/GeometryType",["./freezeObject"],function(t){"use strict";var r={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return t(r)}),define("Core/PrimitiveType",["./freezeObject"],function(t){"use strict";var r={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(t){return t===r.POINTS||t===r.LINES||t===r.LINE_LOOP||t===r.LINE_STRIP||t===r.TRIANGLES||t===r.TRIANGLE_STRIP||t===r.TRIANGLE_FAN}};return t(r)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(t,r,e,n,o){"use strict";var i=function(r){r=t(r,t.EMPTY_OBJECT),this.attributes=r.attributes,this.indices=r.indices,this.primitiveType=t(r.primitiveType,o.TRIANGLES),this.boundingSphere=r.boundingSphere,this.geometryType=t(r.geometryType,n.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(t){var n=-1;for(var o in t.attributes)if(t.attributes.hasOwnProperty(o)&&r(t.attributes[o])&&r(t.attributes[o].values)){var i=t.attributes[o],a=i.values.length/i.componentsPerAttribute;if(n!==a&&-1!==n)throw new e("All attribute lists must have the same number of attributes.");n=a}return n},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(t){"use strict";var r=function(r){r=t(r,t.EMPTY_OBJECT),this.componentDatatype=r.componentDatatype,this.componentsPerAttribute=r.componentsPerAttribute,this.normalize=t(r.normalize,!1),this.values=r.values};return r}),define("Core/GeometryAttributes",["./defaultValue"],function(t){"use strict";var r=function(r){r=t(r,t.EMPTY_OBJECT),this.position=r.position,this.normal=r.normal,this.st=r.st,this.binormal=r.binormal,this.tangent=r.tangent,this.color=r.color};return r}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n){"use strict";var o={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return o.getSizeInBytes=function(t){switch(t){case o.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case o.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case o.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},o.validate=function(r){return t(r)&&(r===o.UNSIGNED_BYTE||r===o.UNSIGNED_SHORT||r===o.UNSIGNED_INT)},o.createTypedArray=function(t,r){return t>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(r):new Uint16Array(r)},o.createTypedArrayFromArrayBuffer=function(t,r,e,o){return t>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(r,e,o):new Uint16Array(r,e,o)},e(o)}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(t,r,e,n,o,i,a,s){"use strict";function u(t){var r=t._uSquared,e=t._ellipsoid.maximumRadius,n=t._ellipsoid.minimumRadius,o=(e-n)/e,i=Math.cos(t._startHeading),a=Math.sin(t._startHeading),s=(1-o)*Math.tan(t._start.latitude),u=1/Math.sqrt(1+s*s),l=u*s,c=Math.atan2(s,i),f=u*a,h=f*f,d=1-h,m=Math.sqrt(d),p=r/4,g=p*p,E=g*p,y=g*g,v=1+p-3*g/4+5*E/4-175*y/64,S=1-p+15*g/8-35*E/8,C=1-3*p+35*g/4,w=1-5*p,M=v*c-S*Math.sin(2*c)*p/2-C*Math.sin(4*c)*g/16-w*Math.sin(6*c)*E/48-5*Math.sin(8*c)*y/512,R=t._constants;R.a=e,R.b=n,R.f=o,R.cosineHeading=i,R.sineHeading=a,R.tanU=s,R.cosineU=u,R.sineU=l,R.sigma=c,R.sineAlpha=f,R.sineSquaredAlpha=h,R.cosineSquaredAlpha=d,R.cosineAlpha=m,R.u2Over4=p,R.u4Over16=g,R.u6Over64=E,R.u8Over256=y,R.a0=v,R.a1=S,R.a2=C,R.a3=w,R.distanceRatio=M}function l(t,r){return t*r*(4+t*(4-3*r))/16}function c(t,r,e,n,o,i,a){var s=l(t,e);return(1-s)*t*r*(n+s*o*(a+s*i*(2*a*a-1)))}function f(t,r,e,n,o,i,a){var u,l,f,h,d,m=(r-e)/r,p=i-n,g=Math.atan((1-m)*Math.tan(o)),E=Math.atan((1-m)*Math.tan(a)),y=Math.cos(g),v=Math.sin(g),S=Math.cos(E),C=Math.sin(E),w=y*S,M=y*C,R=v*C,A=v*S,O=p,T=s.TWO_PI,I=Math.cos(O),N=Math.sin(O);do{I=Math.cos(O),N=Math.sin(O);var x=M-A*I;f=Math.sqrt(S*S*N*N+x*x),l=R+w*I,u=Math.atan2(f,l);var _;0===f?(_=0,h=1):(_=w*N/f,h=1-_*_),T=O,d=l-2*R/h,isNaN(d)&&(d=0),O=p+c(m,_,h,u,f,l,d)}while(Math.abs(O-T)>s.EPSILON12);var L=h*(r*r-e*e)/(e*e),P=1+L*(4096+L*(L*(320-175*L)-768))/16384,b=L*(256+L*(L*(74-47*L)-128))/1024,F=d*d,D=b*f*(d+b*(l*(2*F-1)-b*d*(4*f*f-3)*(4*F-3)/6)/4),z=e*P*(u-D),B=Math.atan2(S*N,M-A*I),U=Math.atan2(y*N,M*I-A);t._distance=z,t._startHeading=B,t._endHeading=U,t._uSquared=L}function h(e,n,o,i){t.normalize(i.cartographicToCartesian(n,m),d),t.normalize(i.cartographicToCartesian(o,m),m),f(e,i.maximumRadius,i.minimumRadius,n.longitude,n.latitude,o.longitude,o.latitude),e._start=r.clone(n,e._start),e._end=r.clone(o,e._end),e._start.height=0,e._end.height=0,u(e)}var d=new t,m=new t,p=function(t,o,i){var s=e(i,a.WGS84);this._ellipsoid=s,this._start=new r,this._end=new r,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,n(t)&&n(o)&&h(this,t,o,s)};return o(p.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),p.prototype.setEndPoints=function(t,r){h(this,t,r,this._ellipsoid)},p.prototype.interpolateUsingFraction=function(t,r){return this.interpolateUsingSurfaceDistance(this._distance*t,r)},p.prototype.interpolateUsingSurfaceDistance=function(t,e){var o=this._constants,i=o.distanceRatio+t/o.b,a=Math.cos(2*i),s=Math.cos(4*i),u=Math.cos(6*i),l=Math.sin(2*i),f=Math.sin(4*i),h=Math.sin(6*i),d=Math.sin(8*i),m=i*i,p=i*m,g=o.u8Over256,E=o.u2Over4,y=o.u6Over64,v=o.u4Over16,S=2*p*g*a/3+i*(1-E+7*v/4-15*y/4+579*g/64-(v-15*y/4+187*g/16)*a-(5*y/4-115*g/16)*s-29*g*u/16)+(E/2-v+71*y/32-85*g/16)*l+(5*v/16-5*y/4+383*g/96)*f-m*((y-11*g/2)*l+5*g*f/2)+(29*y/96-29*g/16)*h+539*g*d/1536,C=Math.asin(Math.sin(S)*o.cosineAlpha),w=Math.atan(o.a/o.b*Math.tan(C));S-=o.sigma;var M=Math.cos(2*o.sigma+S),R=Math.sin(S),A=Math.cos(S),O=o.cosineU*A,T=o.sineU*R,I=Math.atan2(R*o.sineHeading,O-T*o.cosineHeading),N=I-c(o.f,o.sineAlpha,o.cosineSquaredAlpha,S,R,A,M);return n(e)?(e.longitude=this._start.longitude+N,e.latitude=w,e.height=0,e):new r(this._start.longitude+N,w,0)},p}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(t,r){"use strict";function e(t,e,n){var o=t+e;return r.sign(t)!==r.sign(e)&&Math.abs(o/Math.max(Math.abs(t),Math.abs(e)))<n?0:o}var n={};return n.computeDiscriminant=function(t,r,e){var n=r*r-4*t*e;return n},n.computeRealRoots=function(t,n,o){var i;if(0===t)return 0===n?[]:[-o/n];if(0===n){if(0===o)return[0,0];var a=Math.abs(o),s=Math.abs(t);if(s>a&&a/s<r.EPSILON14)return[0,0];if(a>s&&s/a<r.EPSILON14)return[];if(i=-o/t,0>i)return[];var u=Math.sqrt(i);return[-u,u]}if(0===o)return i=-n/t,0>i?[i,0]:[0,i];var l=n*n,c=4*t*o,f=e(l,-c,r.EPSILON14);if(0>f)return[];var h=-.5*e(n,r.sign(n)*Math.sqrt(f),r.EPSILON14);return n>0?[h/t,o/h]:[o/h,h/t]},n}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(t,r){"use strict";function e(t,r,e,n){var o,i,a=t,s=r/3,u=e/3,l=n,c=a*u,f=s*l,h=s*s,d=u*u,m=a*u-h,p=a*l-s*u,g=s*l-d,E=4*m*g-p*p;if(0>E){var y,v,S;h*f>=c*d?(y=a,v=m,S=-2*s*m+a*p):(y=l,v=g,S=-l*p+2*u*g);var C=0>S?-1:1,w=-C*Math.abs(y)*Math.sqrt(-E);i=-S+w;var M=i/2,R=0>M?-Math.pow(-M,1/3):Math.pow(M,1/3),A=i===w?-R:-v/R;return o=0>=v?R+A:-S/(R*R+A*A+v),h*f>=c*d?[(o-s)/a]:[-l/(o+u)]}var O=m,T=-2*s*m+a*p,I=g,N=-l*p+2*u*g,x=Math.sqrt(E),_=Math.sqrt(3)/2,L=Math.abs(Math.atan2(a*x,-T)/3);o=2*Math.sqrt(-O);var P=Math.cos(L);i=o*P;var b=o*(-P/2-_*Math.sin(L)),F=i+b>2*s?i-s:b-s,D=a,z=F/D;L=Math.abs(Math.atan2(l*x,-N)/3),o=2*Math.sqrt(-I),P=Math.cos(L),i=o*P,b=o*(-P/2-_*Math.sin(L));var B=-l,U=2*u>i+b?i+u:b+u,q=B/U,G=D*U,W=-F*U-D*B,Y=F*B,H=(u*W-s*Y)/(-s*W+u*G);return H>=z?q>=z?q>=H?[z,H,q]:[z,q,H]:[q,z,H]:q>=z?[H,z,q]:q>=H?[H,q,z]:[q,H,z]}var n={};return n.computeDiscriminant=function(t,r,e,n){var o=t*t,i=r*r,a=e*e,s=n*n,u=18*t*r*e*n+i*a-27*o*s-4*(t*a*e+i*r*n);return u},n.computeRealRoots=function(t,n,o,i){var a,s;if(0===t)return r.computeRealRoots(n,o,i);if(0===n){if(0===o){if(0===i)return[0,0,0];s=-i/t;var u=0>s?-Math.pow(-s,1/3):Math.pow(s,1/3);return[u,u,u]}return 0===i?(a=r.computeRealRoots(t,0,o),0===a.Length?[0]:[a[0],0,a[1]]):e(t,0,o,i)}return 0===o?0===i?(s=-n/t,0>s?[s,0,0]:[0,0,s]):e(t,n,0,i):0===i?(a=r.computeRealRoots(t,n,o),0===a.length?[0]:a[1]<=0?[a[0],a[1],0]:a[0]>=0?[0,a[0],a[1]]:[a[0],0,a[1]]):e(t,n,o,i)},n}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(t,r,e,n){"use strict";function o(r,o,i,a){var s=r*r,u=o-3*s/8,l=i-o*r/2+s*r/8,c=a-i*r/4+o*s/16-3*s*s/256,f=t.computeRealRoots(1,2*u,u*u-4*c,-l*l);if(f.length>0){var h=-r/4,d=f[f.length-1];if(Math.abs(d)<e.EPSILON14){var m=n.computeRealRoots(1,u,c);if(2===m.length){var p,g=m[0],E=m[1];if(g>=0&&E>=0){var y=Math.sqrt(g),v=Math.sqrt(E);return[h-v,h-y,h+y,h+v]}if(g>=0&&0>E)return p=Math.sqrt(g),[h-p,h+p];if(0>g&&E>=0)return p=Math.sqrt(E),[h-p,h+p]}return[]}if(d>0){var S=Math.sqrt(d),C=(u+d-l/S)/2,w=(u+d+l/S)/2,M=n.computeRealRoots(1,S,C),R=n.computeRealRoots(1,-S,w);return 0!==M.length?(M[0]+=h,M[1]+=h,0!==R.length?(R[0]+=h,R[1]+=h,M[1]<=R[0]?[M[0],M[1],R[0],R[1]]:R[1]<=M[0]?[R[0],R[1],M[0],M[1]]:M[0]>=R[0]&&M[1]<=R[1]?[R[0],M[0],M[1],R[1]]:R[0]>=M[0]&&R[1]<=M[1]?[M[0],R[0],R[1],M[1]]:M[0]>R[0]&&M[0]<R[1]?[R[0],M[0],R[1],M[1]]:[M[0],R[0],M[1],R[1]]):M):0!==R.length?(R[0]+=h,R[1]+=h,R):[]}}return[]}function i(r,o,i,a){var s=i*i,u=o*o,l=r*r,c=-2*o,f=i*r+u-4*a,h=l*a-i*o*r+s,d=t.computeRealRoots(1,c,f,h);if(d.length>0){var m,p,g=d[0],E=o-g,y=E*E,v=r/2,S=E/2,C=y-4*a,w=y+4*Math.abs(a),M=l-4*g,R=l+4*Math.abs(g);if(0>g||M*w>C*R){var A=Math.sqrt(M);m=A/2,p=0===A?0:(r*S-i)/A}else{var O=Math.sqrt(C);m=0===O?0:(r*S-i)/O,p=O/2}var T,I;0===v&&0===m?(T=0,I=0):e.sign(v)===e.sign(m)?(T=v+m,I=g/T):(I=v-m,T=g/I);var N,x;0===S&&0===p?(N=0,x=0):e.sign(S)===e.sign(p)?(N=S+p,x=a/N):(x=S-p,N=a/x);var _=n.computeRealRoots(1,T,N),L=n.computeRealRoots(1,I,x);if(0!==_.length)return 0!==L.length?_[1]<=L[0]?[_[0],_[1],L[0],L[1]]:L[1]<=_[0]?[L[0],L[1],_[0],_[1]]:_[0]>=L[0]&&_[1]<=L[1]?[L[0],_[0],_[1],L[1]]:L[0]>=_[0]&&L[1]<=_[1]?[_[0],L[0],L[1],_[1]]:_[0]>L[0]&&_[0]<L[1]?[L[0],_[0],L[1],_[1]]:[_[0],L[0],_[1],L[1]]:_;if(0!==L.length)return L}return[]}var a={};return a.computeDiscriminant=function(t,r,e,n,o){var i=t*t,a=i*t,s=r*r,u=s*r,l=e*e,c=l*e,f=n*n,h=f*n,d=o*o,m=d*o,p=s*l*f-4*u*h-4*t*c*f+18*t*r*e*h-27*i*f*f+256*a*m+o*(18*u*e*n-4*s*c+16*t*l*l-80*t*r*l*n-6*t*s*f+144*i*e*f)+d*(144*t*s*e-27*s*s-128*i*l-192*i*r*n);return p},a.computeRealRoots=function(r,n,a,s,u){if(Math.abs(r)<e.EPSILON15)return t.computeRealRoots(n,a,s,u);var l=n/r,c=a/r,f=s/r,h=u/r,d=0>l?1:0;switch(d+=0>c?d+1:d,d+=0>f?d+1:d,d+=0>h?d+1:d){case 0:return o(l,c,f,h);case 1:return i(l,c,f,h);case 2:return i(l,c,f,h);case 3:return o(l,c,f,h);case 4:return o(l,c,f,h);case 5:return i(l,c,f,h);case 6:return o(l,c,f,h);case 7:return o(l,c,f,h);case 8:return i(l,c,f,h);case 9:return o(l,c,f,h);case 10:return o(l,c,f,h);case 11:return i(l,c,f,h);case 12:return o(l,c,f,h);case 13:return o(l,c,f,h);case 14:return o(l,c,f,h);case 15:return o(l,c,f,h);default:return void 0}},a}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(t,r,e){"use strict";var n=function(e,n){n=t.clone(r(n,t.ZERO)),t.equals(n,t.ZERO)||t.normalize(n,n),this.origin=t.clone(r(e,t.ZERO)),this.direction=n};return n.getPoint=function(r,n,o){return e(o)||(o=new t),o=t.multiplyByScalar(r.direction,n,o),t.add(r.origin,o,o)},n}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(t,r,e,n,o,i,a,s,u,l){"use strict";function c(r,n,o,a,s){s=e(s,!1);var u,l,c,f,h,d=r.origin,m=r.direction,p=t.subtract(o,n,g),C=t.subtract(a,n,E),w=t.cross(m,C,y),M=t.dot(p,w);if(s){if(M<i.EPSILON6)return void 0;if(u=t.subtract(d,n,v),c=t.dot(u,w),0>c||c>M)return void 0;if(l=t.cross(u,p,S),f=t.dot(m,l),0>f||c+f>M)return void 0;h=t.dot(C,l)/M}else{if(Math.abs(M)<i.EPSILON6)return void 0;var R=1/M;if(u=t.subtract(d,n,v),c=t.dot(u,w)*R,0>c||c>1)return void 0;if(l=t.cross(u,p,S),f=t.dot(m,l)*R,0>f||c+f>1)return void 0;h=t.dot(C,l)*R}return h}function f(t,r,e,n){var o=r*r-4*t*e;if(0>o)return void 0;if(o>0){var i=1/(2*t),a=Math.sqrt(o),s=(-r+a)*i,u=(-r-a)*i;return u>s?(n.root0=s,n.root1=u):(n.root0=u,n.root1=s),n}var l=-r/(2*t);return 0===l?void 0:(n.root0=n.root1=l,n)}function h(r,e,o){n(o)||(o={});var i=r.origin,a=r.direction,s=e.center,u=e.radius*e.radius,l=t.subtract(i,s,y),c=t.dot(a,a),h=2*t.dot(a,l),d=t.magnitudeSquared(l)-u,m=f(c,h,d,w);return n(m)?(o.start=m.root0,o.stop=m.root1,o):void 0}function d(t,r,e){var n=t+r;return i.sign(t)!==i.sign(r)&&Math.abs(n/Math.max(Math.abs(t),Math.abs(r)))<e?0:n}function m(r,e,n,o,l){var c,f=o*o,h=l*l,m=(r[a.COLUMN1ROW1]-r[a.COLUMN2ROW2])*h,p=l*(o*d(r[a.COLUMN1ROW0],r[a.COLUMN0ROW1],i.EPSILON15)+e.y),g=r[a.COLUMN0ROW0]*f+r[a.COLUMN2ROW2]*h+o*e.x+n,E=h*d(r[a.COLUMN2ROW1],r[a.COLUMN1ROW2],i.EPSILON15),y=l*(o*d(r[a.COLUMN2ROW0],r[a.COLUMN0ROW2])+e.z),v=[];if(0===y&&0===E){if(c=s.computeRealRoots(m,p,g),0===c.length)return v;var S=c[0],C=Math.sqrt(Math.max(1-S*S,0));if(v.push(new t(o,l*S,l*-C)),v.push(new t(o,l*S,l*C)),2===c.length){var w=c[1],M=Math.sqrt(Math.max(1-w*w,0));v.push(new t(o,l*w,l*-M)),v.push(new t(o,l*w,l*M))}return v}var R=y*y,A=E*E,O=m*m,T=y*E,I=O+A,N=2*(p*m+T),x=2*g*m+p*p-A+R,_=2*(g*p-T),L=g*g-R;if(0===I&&0===N&&0===x&&0===_)return v;c=u.computeRealRoots(I,N,x,_,L);var P=c.length;if(0===P)return v;for(var b=0;P>b;++b){var F,D=c[b],z=D*D,B=Math.max(1-z,0),U=Math.sqrt(B);F=i.sign(m)===i.sign(g)?d(m*z+g,p*D,i.EPSILON12):i.sign(g)===i.sign(p*D)?d(m*z,p*D+g,i.EPSILON12):d(m*z+p*D,g,i.EPSILON12);var q=d(E*D,y,i.EPSILON15),G=F*q;0>G?v.push(new t(o,l*D,l*U)):G>0?v.push(new t(o,l*D,l*-U)):0!==U?(v.push(new t(o,l*D,l*-U)),v.push(new t(o,l*D,l*U)),++b):v.push(new t(o,l*D,l*U))}return v}var p={};p.rayPlane=function(r,e,o){n(o)||(o=new t);var a=r.origin,s=r.direction,u=e.normal,l=t.dot(u,s);if(Math.abs(l)<i.EPSILON15)return void 0;var c=(-e.distance-t.dot(u,a))/l;return 0>c?void 0:(o=t.multiplyByScalar(s,c,o),t.add(a,o,o))};var g=new t,E=new t,y=new t,v=new t,S=new t;p.rayTriangle=function(r,e,o,i,a,s){var u=c(r,e,o,i,a);return!n(u)||0>u?void 0:(n(s)||(s=new t),t.multiplyByScalar(r.direction,u,s),t.add(r.origin,s,s))};var C=new l;p.lineSegmentTriangle=function(r,e,o,i,a,s,u){var l=C;t.clone(r,l.origin),t.subtract(e,r,l.direction),t.normalize(l.direction,l.direction);var f=c(l,o,i,a,s);return!n(f)||0>f||f>t.distance(r,e)?void 0:(n(u)||(u=new t),t.multiplyByScalar(l.direction,f,u),t.add(l.origin,u,u))};var w={root0:0,root1:0};p.raySphere=function(t,r,e){return e=h(t,r,e),!n(e)||e.stop<0?void 0:(e.start=Math.max(e.start,0),e)};var M=new l;p.lineSegmentSphere=function(r,e,o,i){var a=M;t.clone(r,a.origin);var s=t.subtract(e,r,a.direction),u=t.magnitude(s);return t.normalize(s,s),i=h(a,o,i),!n(i)||i.stop<0||i.start>u?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,u),i)};var R=new t,A=new t;p.rayEllipsoid=function(r,e){var n,o,i,a,s,u=e.oneOverRadii,l=t.multiplyComponents(u,r.origin,R),c=t.multiplyComponents(u,r.direction,A),f=t.magnitudeSquared(l),h=t.dot(l,c);if(f>1){if(h>=0)return void 0;var d=h*h;if(n=f-1,o=t.magnitudeSquared(c),i=o*n,i>d)return void 0;if(d>i){a=h*h-i,s=-h+Math.sqrt(a);var m=s/o,p=n/s;return p>m?{start:m,stop:p}:{start:p,stop:m}}var g=Math.sqrt(n/o);return{start:g,stop:g}}return 1>f?(n=f-1,o=t.magnitudeSquared(c),i=o*n,a=h*h-i,s=-h+Math.sqrt(a),{start:0,stop:s/o}):0>h?(o=t.magnitudeSquared(c),{start:0,stop:-h/o}):void 0};var O=new t,T=new t,I=new t,N=new t,x=new t,_=new a,L=new a,P=new a,b=new a,F=new a,D=new a,z=new a,B=new t,U=new t,q=new r;p.grazingAltitudeLocation=function(r,e){var o=r.origin,s=r.direction,u=e.geodeticSurfaceNormal(o,O);if(t.dot(s,u)>=0)return o;var l=n(this.rayEllipsoid(r,e)),c=e.transformPositionToScaledSpace(s,O),f=t.normalize(c,c),h=t.mostOrthogonalAxis(c,N),d=t.normalize(t.cross(h,f,T),T),p=t.normalize(t.cross(f,d,I),I),g=_;g[0]=f.x,g[1]=f.y,g[2]=f.z,g[3]=d.x,g[4]=d.y,g[5]=d.z,g[6]=p.x,g[7]=p.y,g[8]=p.z;var E=a.transpose(g,L),y=a.fromScale(e.radii,P),v=a.fromScale(e.oneOverRadii,b),S=F;S[0]=0,S[1]=-s.z,S[2]=s.y,S[3]=s.z,S[4]=0,S[5]=-s.x,S[6]=-s.y,S[7]=s.x,S[8]=0;var C,w,M=a.multiply(a.multiply(E,v,D),S,D),R=a.multiply(a.multiply(M,y,z),g,z),A=a.multiplyByVector(M,o,x),G=m(R,t.negate(A,O),0,0,1),W=G.length;if(W>0){for(var Y=t.clone(t.ZERO,U),H=Number.NEGATIVE_INFINITY,V=0;W>V;++V){C=a.multiplyByVector(y,a.multiplyByVector(g,G[V],B),B);var k=t.normalize(t.subtract(C,o,N),N),K=t.dot(k,s);K>H&&(H=K,Y=t.clone(C,Y))}var j=e.cartesianToCartographic(Y,q);return H=i.clamp(H,0,1),w=t.magnitude(t.subtract(Y,o,N))*Math.sqrt(1-H*H),w=l?-w:w,j.height=w,e.cartographicToCartesian(j,new t)}return void 0};var G=new t;return p.lineSegmentPlane=function(r,e,o,a){n(a)||(a=new t);var s=t.subtract(e,r,G),u=o.normal,l=t.dot(u,s);if(Math.abs(l)<i.EPSILON6)return void 0;var c=t.dot(u,r),f=-(o.distance+c)/l;return 0>f||f>1?void 0:(t.multiplyByScalar(s,f,a),t.add(r,a,a),a)},p.trianglePlaneIntersection=function(r,e,n,o){var i=o.normal,a=o.distance,s=t.dot(i,r)+a<0,u=t.dot(i,e)+a<0,l=t.dot(i,n)+a<0,c=0;c+=s?1:0,c+=u?1:0,c+=l?1:0;var f,h;if((1===c||2===c)&&(f=new t,h=new t),1===c){if(s)return p.lineSegmentPlane(r,e,o,f),p.lineSegmentPlane(r,n,o,h),{positions:[r,e,n,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(u)return p.lineSegmentPlane(e,n,o,f),p.lineSegmentPlane(e,r,o,h),{positions:[r,e,n,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(l)return p.lineSegmentPlane(n,r,o,f),p.lineSegmentPlane(n,e,o,h),{positions:[r,e,n,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===c){if(!s)return p.lineSegmentPlane(e,r,o,f),p.lineSegmentPlane(n,r,o,h),{positions:[r,e,n,f,h],indices:[1,2,4,1,4,3,0,3,4]};if(!u)return p.lineSegmentPlane(n,e,o,f),p.lineSegmentPlane(r,e,o,h),{positions:[r,e,n,f,h],indices:[2,0,4,2,4,3,1,3,4]};if(!l)return p.lineSegmentPlane(r,n,o,f),p.lineSegmentPlane(e,n,o,h),{positions:[r,e,n,f,h],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),define("Core/isArray",["./defined"],function(t){"use strict";var r=Array.isArray;return t(r)||(r=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),r}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(t,r,e,n,o,i,a,s,u,l,c,f){"use strict";function h(t,r,e){var n=R;n.length=t;var o;if(r===e){for(o=0;t>o;o++)n[o]=r;return n}var i=e-r,a=i/t;for(o=0;t>o;o++){var s=r+o*a;n[o]=s}return n}function d(r,e,n,o,i,a,s,u){var l=o.scaleToGeodeticSurface(r,I),c=o.scaleToGeodeticSurface(e,N),f=m.numberOfPoints(r,e,n),d=o.cartesianToCartographic(l,A),p=o.cartesianToCartographic(c,O),g=h(f,i,a);x.setEndPoints(d,p);var E=x.surfaceDistance/f,y=u;d.height=i;var v=o.cartographicToCartesian(d,T);t.pack(v,s,y),y+=3;for(var S=1;f>S;S++){var C=x.interpolateUsingSurfaceDistance(S*E,O);C.height=g[S],v=o.cartographicToCartesian(C,T),t.pack(v,s,y),y+=3}return y}var m={};m.numberOfPoints=function(r,e,n){var o=t.distance(r,e);return Math.ceil(o/n)};var p=new r;m.extractHeights=function(t,r){for(var e=t.length,n=new Array(e),o=0;e>o;o++){var i=t[o];n[o]=r.cartesianToCartographic(i,p).height}return n};var g=new c,E=new t,y=new t,v=new f(t.ZERO,0),S=new t,C=new f(t.ZERO,0),w=new t,M=new t,R=[],A=new r,O=new r,T=new t,I=new t,N=new t,x=new a;m.wrapLongitude=function(r,o){var i=[],a=[];if(n(r)&&r.length>0){o=e(o,c.IDENTITY);var u=c.inverseTransformation(o,g),l=c.multiplyByPoint(u,t.ZERO,E),h=c.multiplyByPointAsVector(u,t.UNIT_Y,y),d=f.fromPointNormal(l,h,v),m=c.multiplyByPointAsVector(u,t.UNIT_X,S),p=f.fromPointNormal(l,m,C),R=1;i.push(t.clone(r[0]));for(var A=i[0],O=r.length,T=1;O>T;++T){var I=r[T];if(f.getPointDistance(p,A)<0||f.getPointDistance(p,I)<0){var N=s.lineSegmentPlane(A,I,d,w);if(n(N)){var x=t.multiplyByScalar(h,5e-9,M);f.getPointDistance(d,A)<0&&t.negate(x,x),i.push(t.add(N,x,new t)),a.push(R+1),t.negate(x,x),i.push(t.add(N,x,new t)),R=1}}i.push(t.clone(r[T])),R++,A=I}a.push(R)}return{positions:i,lengths:a}};var _=l.EPSILON7;return m.removeDuplicates=function(r){var e=r.length;if(2>e)return r;var n,o,i;for(n=1;e>n&&(o=r[n-1],i=r[n],!t.equalsEpsilon(o,i,_));++n);if(n===e)return r;for(var a=r.slice(0,n);e>n;++n)i=r[n],t.equalsEpsilon(o,i,_)||(a.push(t.clone(i)),o=i);return a},m.generateArc=function(r){n(r)||(r={});var o=r.positions,a=o.length,s=e(r.ellipsoid,i.WGS84),c=e(r.height,0);if(1>a)return[];if(1===a){var f=s.scaleToGeodeticSurface(o[0],I);if(0!==c){var h=s.geodeticSurfaceNormal(f,T);t.multiplyByScalar(h,c,h),t.add(f,h,f)}return[f.x,f.y,f.z]}var p=r.minDistance;if(!n(p)){var g=e(r.granularity,l.RADIANS_PER_DEGREE);p=l.chordLength(g,s.maximumRadius)}var E,y=0;for(E=0;a-1>E;E++)y+=m.numberOfPoints(o[E],o[E+1],p);var v=3*(y+1),S=new Array(v),C=0,w=u(c);for(E=0;a-1>E;E++){var M=o[E],O=o[E+1],N=w?c[E]:c,x=w?c[E+1]:c;C=d(M,O,p,s,N,x,S,C)}R.length=0;var _=o[a-1],L=s.cartesianToCartographic(_,A);L.height=w?c[a-1]:c;var P=s.cartographicToCartesian(L,T);return t.pack(P,S,v-3),S},m.generateCartesianArc=function(r){for(var e=m.generateArc(r),n=e.length/3,o=new Array(n),i=0;n>i;i++)o[i]=t.unpack(e,3*i);return o},m}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(t,r,e,n){"use strict";var o=function(r){r=t(r,t.EMPTY_OBJECT),this.position=t(r.position,!1),this.normal=t(r.normal,!1),this.st=t(r.st,!1),this.binormal=t(r.binormal,!1),this.tangent=t(r.tangent,!1),this.color=t(r.color,!1)};return o.POSITION_ONLY=n(new o({position:!0})),o.POSITION_AND_NORMAL=n(new o({position:!0,normal:!0})),o.POSITION_NORMAL_AND_ST=n(new o({position:!0,normal:!0,st:!0})),o.POSITION_AND_ST=n(new o({position:!0,st:!0})),o.POSITION_AND_COLOR=n(new o({position:!0,color:!0})),o.ALL=n(new o({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),o.DEFAULT=o.POSITION_NORMAL_AND_ST,o.packedLength=6,o.pack=function(r,e,n){n=t(n,0),e[n++]=r.position?1:0,e[n++]=r.normal?1:0,e[n++]=r.st?1:0,e[n++]=r.binormal?1:0,e[n++]=r.tangent?1:0,e[n++]=r.color?1:0},o.unpack=function(e,n,i){return n=t(n,0),r(i)||(i=new o),i.position=1===e[n++],i.normal=1===e[n++],i.st=1===e[n++],i.binormal=1===e[n++],i.tangent=1===e[n++],i.color=1===e[n++],i},o.clone=function(t,e){return r(t)?(r(e)||(e=new o),e.position=t.position,e.normal=t.normal,e.st=t.st,e.binormal=t.binormal,e.tangent=t.tangent,e.color=t.color,e):void 0},o}),define("Core/PolylineGeometry",["./BoundingSphere","./Cartesian3","./Color","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./GeometryType","./IndexDatatype","./Math","./PolylinePipeline","./PrimitiveType","./VertexFormat"],function(t,r,e,n,o,i,a,s,u,l,c,f,h,d,m,p,g){"use strict";function E(t,r,n,o,i){var a=y;a.length=i;var s,u=n.red,l=n.green,c=n.blue,f=n.alpha,h=o.red,d=o.green,m=o.blue,p=o.alpha;if(e.equals(n,o)){for(s=0;i>s;s++)a[s]=e.clone(n);return a}var g=(h-u)/i,E=(d-l)/i,v=(m-c)/i,S=(p-f)/i;for(s=0;i>s;s++)a[s]=new e(u+s*g,l+s*E,c+s*v,f+s*S);return a}var y=[],v=function(t){t=o(t,o.EMPTY_OBJECT);var n=t.positions,a=t.colors,u=o(t.width,1),l=o(t.colorsPerVertex,!1);this._positions=n,this._colors=a,this._width=u,this._colorsPerVertex=l,this._vertexFormat=g.clone(o(t.vertexFormat,g.DEFAULT)),this._followSurface=o(t.followSurface,!0),this._granularity=o(t.granularity,d.RADIANS_PER_DEGREE),this._ellipsoid=s.clone(o(t.ellipsoid,s.WGS84)),this._workerName="createPolylineGeometry";var c=1+n.length*r.packedLength;c+=i(a)?1+a.length*e.packedLength:1,this.packedLength=c+s.packedLength+g.packedLength+4};v.pack=function(t,n,a){a=o(a,0);var u,l=t._positions,c=l.length;for(n[a++]=c,u=0;c>u;++u,a+=r.packedLength)r.pack(l[u],n,a);var f=t._colors;for(c=i(f)?f.length:0,n[a++]=c,u=0;c>u;++u,a+=e.packedLength)e.pack(f[u],n,a);s.pack(t._ellipsoid,n,a),a+=s.packedLength,g.pack(t._vertexFormat,n,a),a+=g.packedLength,n[a++]=t._width,n[a++]=t._colorsPerVertex?1:0,n[a++]=t._followSurface?1:0,n[a]=t._granularity};var S=s.clone(s.UNIT_SPHERE),C=new g,w={positions:void 0,colors:void 0,ellipsoid:S,vertexFormat:C,width:void 0,colorsPerVertex:void 0,followSurface:void 0,granularity:void 0};v.unpack=function(t,n,a){n=o(n,0);var u,l=t[n++],c=new Array(l);for(u=0;l>u;++u,n+=r.packedLength)c[u]=r.unpack(t,n);l=t[n++];var f=l>0?new Array(l):void 0;for(u=0;l>u;++u,n+=e.packedLength)f[u]=e.unpack(t,n);var h=s.unpack(t,n,S);n+=s.packedLength;var d=g.unpack(t,n,C);n+=g.packedLength;var m=t[n++],p=1===t[n++],E=1===t[n++],y=t[n];return i(a)?(a._positions=c,a._colors=f,a._ellipsoid=s.clone(h,a._ellipsoid),a._vertexFormat=g.clone(d,a._vertexFormat),a._width=m,a._colorsPerVertex=p,a._followSurface=E,a._granularity=y,a):(w.positions=c,w.colors=f,w.width=m,w.colorsPerVertex=p,w.followSurface=E,w.granularity=y,new v(w))};var M=new r,R=new r,A=new r,O=new r;return v.createGeometry=function(o){var a,s,g,v=o._width,S=o._vertexFormat,C=o._colors,w=o._colorsPerVertex,T=o._followSurface,I=o._granularity,N=o._ellipsoid,x=d.chordLength(I,N.maximumRadius),_=m.removeDuplicates(o._positions),L=_.length;if(2>L)return void 0;if(T){var P=m.extractHeights(_,N);if(i(C)){var b=1;for(a=0;L-1>a;++a)b+=m.numberOfPoints(_[a],_[a+1],x);var F=new Array(b),D=0;for(a=0;L-1>a;++a){var z=_[a],B=_[a+1],U=C[a],q=m.numberOfPoints(z,B,x);if(w&&b>a){var G=C[a+1],W=E(z,B,U,G,q),Y=W.length;for(s=0;Y>s;++s)F[D++]=W[s]}else for(s=0;q>s;++s)F[D++]=e.clone(U)}F[D]=e.clone(C[C.length-1]),C=F,y.length=0}_=m.generateCartesianArc({positions:_,minDistance:x,ellipsoid:N,height:P})}L=_.length;var H,V=4*L-4,k=new Float64Array(3*V),K=new Float64Array(3*V),j=new Float64Array(3*V),Z=new Float32Array(2*V),X=S.st?new Float32Array(2*V):void 0,Q=i(C)?new Uint8Array(4*V):void 0,J=0,$=0,tr=0,rr=0;for(s=0;L>s;++s){0===s?(H=M,r.subtract(_[0],_[1],H),r.add(_[0],H,H)):H=_[s-1],r.clone(H,A),r.clone(_[s],R),s===L-1?(H=M,r.subtract(_[L-1],_[L-2],H),r.add(_[L-1],H,H)):H=_[s+1],r.clone(H,O);var er,nr;i(Q)&&(er=0===s||w?C[s]:C[s-1],s!==L-1&&(nr=C[s]));var or=0===s?2:0,ir=s===L-1?2:4;for(g=or;ir>g;++g){r.pack(R,k,J),r.pack(A,K,J),r.pack(O,j,J),J+=3;var ar=0>g-2?-1:1;if(Z[$++]=2*(g%2)-1,Z[$++]=ar*v,S.st&&(X[tr++]=s/(L-1),X[tr++]=Math.max(Z[$-2],0)),i(Q)){var sr=2>g?er:nr;Q[rr++]=e.floatToByte(sr.red),Q[rr++]=e.floatToByte(sr.green),Q[rr++]=e.floatToByte(sr.blue),Q[rr++]=e.floatToByte(sr.alpha)}}}var ur=new c;ur.position=new l({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:k}),ur.prevPosition=new l({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:K}),ur.nextPosition=new l({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:j}),ur.expandAndWidth=new l({componentDatatype:n.FLOAT,componentsPerAttribute:2,values:Z}),S.st&&(ur.st=new l({componentDatatype:n.FLOAT,componentsPerAttribute:2,values:X})),i(Q)&&(ur.color=new l({componentDatatype:n.UNSIGNED_BYTE,componentsPerAttribute:4,values:Q,normalize:!0}));var lr=h.createTypedArray(V,6*L-6),cr=0,fr=0,hr=L-1;for(s=0;hr>s;++s)lr[fr++]=cr,lr[fr++]=cr+2,lr[fr++]=cr+1,lr[fr++]=cr+1,lr[fr++]=cr+2,lr[fr++]=cr+3,cr+=4;return new u({attributes:ur,indices:lr,primitiveType:p.TRIANGLES,boundingSphere:t.fromPoints(_),geometryType:f.POLYLINES})},v}),define("Workers/createPolylineGeometry",["../Core/defined","../Core/Ellipsoid","../Core/PolylineGeometry"],function(t,r,e){"use strict";function n(n,o){return t(o)&&(n=e.unpack(n,o)),n._ellipsoid=r.clone(n._ellipsoid),e.createGeometry(n)}return n})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createPolylineVolumeGeometry.js b/libs/Cesium/Workers/createPolylineVolumeGeometry.js new file mode 100644 index 0000000000..f38e146aaa --- /dev/null +++ b/libs/Cesium/Workers/createPolylineVolumeGeometry.js @@ -0,0 +1,230 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[1&e];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(e){return e>0?1:0>e?-1:0},n.signNotZero=function(e){return 0>e?-1:1},n.toSNorm=function(e){return Math.round(255*(.5*n.clamp(e,-1,1)+.5))},n.fromSNorm=function(e){return 2*(n.clamp(e,0,255)/255)-1},n.sinh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t-n)},n.cosh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t+n)},n.lerp=function(e,t,n){return(1-n)*e+n*t},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(e){return e*n.RADIANS_PER_DEGREE},n.toDegrees=function(e){return e*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(e){var t=n.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},n.negativePiToPi=function(e){return n.zeroToTwoPi(e+n.PI)-n.PI},n.zeroToTwoPi=function(e){var t=n.mod(e,n.TWO_PI);return Math.abs(t)<n.EPSILON14&&Math.abs(e)>n.EPSILON14?n.TWO_PI:t},n.mod=function(e,t){return(e%t+t)%t},n.equalsEpsilon=function(e,n,r,a){a=t(a,r);var i=Math.abs(e-n);return a>=i||i<=r*Math.max(Math.abs(e),Math.abs(n))};var r=[1];n.factorial=function(e){var t=r.length;if(e>=t)for(var n=r[t-1],a=t;e>=a;a++)r.push(n*a);return r[e]},n.incrementWrap=function(e,n,r){return r=t(r,0),++e,e>n&&(e=r),e},n.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},n.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},n.clamp=function(e,t,n){return t>e?t:e>n?n:e};var a=new e;return n.setRandomNumberSeed=function(t){a=new e(t)},n.nextRandomNumber=function(){return a.random()},n.acosClamped=function(e){return Math.acos(n.clamp(e,-1,1))},n.asinClamped=function(e){return Math.asin(n.clamp(e,-1,1))},n.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0)};i.fromSpherical=function(n,r){t(r)||(r=new i);var a=n.clock,o=n.cone,u=e(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(a),r.y=s*Math.sin(a),r.z=u*Math.cos(o),r},i.fromElements=function(e,n,r,a){return t(a)?(a.x=e,a.y=n,a.z=r,a):new i(e,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n):new i(e.x,e.y,e.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r]=t.z},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i,c=new i;i.angleBetween=function(e,t){i.normalize(e,s),i.normalize(t,c);var n=i.dot(s,c),r=i.magnitude(i.cross(s,c,s));return Math.atan2(r,n)};var l=new i;i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Z,t):n.y<=n.z?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_Z,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)},i.cross=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=t.x,u=t.y,s=t.z,c=a*s-i*u,l=i*o-r*s,f=r*u-a*o;return n.x=c,n.y=l,n.z=f,n},i.fromDegrees=function(e,t,n,r,o){var u=a.toRadians(e),s=a.toRadians(t);return i.fromRadians(u,s,n,r,o)};var f=new i,h=new i,d=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(n,r,a,o,u){a=e(a,0);var s=t(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=i.normalize(f,f),i.multiplyComponents(s,f,h);var l=Math.sqrt(i.dot(f,h));return h=i.divideByScalar(h,l,h),f=i.multiplyByScalar(f,a,f),t(u)||(u=new i),i.add(h,f,u)},i.fromDegreesArray=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=a.toRadians(e[o]);return i.fromRadiansArray(r,t,n)},i.fromRadiansArray=function(e,n,r){var a=e.length;t(r)?r.length=a/2:r=new Array(a/2);for(var o=0;a>o;o+=2){var u=e[o],s=e[o+1];r[o/2]=i.fromRadians(u,s,0,n,r[o/2])}return r},i.fromDegreesArrayHeights=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o+=3)r[o]=a.toRadians(e[o]),r[o+1]=a.toRadians(e[o+1]),r[o+2]=e[o+2];return i.fromRadiansArrayHeights(r,t,n)},i.fromRadiansArrayHeights=function(e,n,r){var a=e.length;t(r)?r.length=a/3:r=new Array(a/3);for(var o=0;a>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];r[o/3]=i.fromRadians(u,s,c,n,r[o/3])}return r},i.ZERO=r(new i(0,0,0)),i.UNIT_X=r(new i(1,0,0)),i.UNIT_Y=r(new i(0,1,0)),i.UNIT_Z=r(new i(0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.longitude=e(t,0),this.latitude=e(n,0),this.height=e(r,0)};return i.fromRadians=function(n,r,a,o){return a=e(a,0),t(o)?(o.longitude=n,o.latitude=r,o.height=a,o):new i(n,r,a)},i.fromDegrees=function(e,t,n,r){return e=a.toRadians(e),t=a.toRadians(t),i.fromRadians(e,t,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.longitude=e.longitude,n.latitude=e.latitude,n.height=e.height,n):new i(e.longitude,e.latitude,e.height):void 0},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.longitude===n.longitude&&e.latitude===n.latitude&&e.height===n.height},i.equalsEpsilon=function(e,n,r){return e===n||t(e)&&t(n)&&Math.abs(e.longitude-n.longitude)<=r&&Math.abs(e.latitude-n.latitude)<=r&&Math.abs(e.height-n.height)<=r},i.ZERO=r(new i(0,0,0)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),n=Object.defineProperties;return t&&e(n)||(n=function(e){return e}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(t,r,a,i){r=n(r,0),a=n(a,0),i=n(i,0),t._radii=new e(r,a,i),t._radiiSquared=new e(r*r,a*a,i*i),t._radiiToTheFourth=new e(r*r*r*r,a*a*a*a,i*i*i*i),t._oneOverRadii=new e(0===r?0:1/r,0===a?0:1/a,0===i?0:1/i),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===a?0:1/(a*a),0===i?0:1/(i*i)),t._minimumRadius=Math.min(r,a,i),t._maximumRadius=Math.max(r,a,i),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,n)};a(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,n){if(!r(t))return void 0;var a=t._radii;return r(n)?(e.clone(a,n._radii),e.clone(t._radiiSquared,n._radiiSquared),e.clone(t._radiiToTheFourth,n._radiiToTheFourth),e.clone(t._oneOverRadii,n._oneOverRadii),e.clone(t._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=t._minimumRadius,n._maximumRadius=t._maximumRadius,n._centerToleranceSquared=t._centerToleranceSquared,n):new c(a.x,a.y,a.z)},c.fromCartesian3=function(e,t){return r(t)||(t=new c),r(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,r,a){a=n(a,0),e.pack(t._radii,r,a)},c.unpack=function(t,r,a){r=n(r,0);var i=e.unpack(t,r);return c.fromCartesian3(i,a)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,n){var a=t.longitude,i=t.latitude,o=Math.cos(i),u=o*Math.cos(a),s=o*Math.sin(a),c=Math.sin(i);return r(n)||(n=new e),n.x=u,n.y=s,n.z=c,e.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(t,n){return r(n)||(n=new e),n=e.multiplyComponents(t,this._oneOverRadiiSquared,n),e.normalize(n,n)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,n){var a=l,i=f;this.geodeticSurfaceNormalCartographic(t,a),e.multiplyComponents(this._radiiSquared,a,i);var o=Math.sqrt(e.dot(a,i));return e.divideByScalar(i,o,i),e.multiplyByScalar(a,t.height,a),r(n)||(n=new e),e.add(i,a,n)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;a++)t[a]=this.cartographicToCartesian(e[a],t[a]);return t};var h=new e,d=new e,p=new e;c.prototype.cartesianToCartographic=function(n,a){var i=this.scaleToGeodeticSurface(n,d);if(!r(i))return void 0;var o=this.geodeticSurfaceNormal(i,h),s=e.subtract(n,i,p),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,n))*e.magnitude(s);return r(a)?(a.longitude=c,a.latitude=l,a.height=f,a):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;++a)t[a]=this.cartesianToCartographic(e[a],t[a]);return t};var m=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,n){var a=t.x,i=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=a*a*c*c,d=i*i*l*l,p=o*o*f*f,v=h+d+p,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,m);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,n):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,O=x.z,T=y;T.x=2*w.x*E,T.y=2*w.y*S,T.z=2*w.z*O;var M,_,P,b,N,A,I,C,R,z,D,L=(1-g)*e.magnitude(t)/(.5*e.magnitude(T)),q=0;do{L-=q,P=1/(1+L*E),b=1/(1+L*S),N=1/(1+L*O),A=P*P,I=b*b,C=N*N,R=A*P,z=I*b,D=C*N,M=h*A+d*I+p*C-1,_=h*R*E+d*z*S+p*D*O;var U=-2*_;q=M/U}while(Math.abs(M)>u.EPSILON12);return r(n)?(n.x=a*P,n.y=i*b,n.z=o*N,n):new e(a*P,i*b,o*N)},c.prototype.scaleToGeocentricSurface=function(t,n){r(n)||(n=new e);var a=t.x,i=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(a*a*u.x+i*i*u.y+o*o*u.z);return e.multiplyByScalar(t,s,n)},c.prototype.transformPositionToScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._radii,n)},c.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n){this.x=e(t,0),this.y=e(n,0)};i.fromElements=function(e,n,r){return t(r)?(r.x=e,r.y=n,r):new i(e,n)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n):new i(e.x,e.y):void 0},i.fromCartesian3=i.clone,i.fromCartesian4=i.clone,i.packedLength=2,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r]=t.y},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y)},i.minimumComponent=function(e){return Math.min(e.x,e.y)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i,c=new i;i.angleBetween=function(e,t){return i.normalize(e,s),i.normalize(t,c),a.acosClamped(i.dot(s,c))};var l=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Y,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)},i.ZERO=r(new i(0,0)),i.UNIT_X=r(new i(1,0)),i.UNIT_Y=r(new i(0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+")"},i}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,n,r,a,i,o){"use strict";var u=function(e){this._ellipsoid=n(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return a(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,n){var a=this._semimajorAxis,i=t.longitude*a,o=t.latitude*a,u=t.height;return r(n)?(n.x=i,n.y=o,n.z=u,n):new e(i,o,u)},u.prototype.unproject=function(e,n){var a=this._oneOverSemimajorAxis,i=e.x*a,o=e.y*a,u=e.z;return r(n)?(n.longitude=i,n.latitude=o,n.height=u,n):new t(i,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.west=t(e,0),this.south=t(n,0),this.east=t(r,0),this.north=t(a,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.west,n[r++]=e.south,n[r++]=e.east,n[r]=e.north},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.west=e[r++],a.south=e[r++],a.east=e[r++],a.north=e[r],a},s.computeWidth=function(e){var t=e.east,n=e.west;return n>t&&(t+=u.TWO_PI),t-n},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,r,a,i,o){return e=u.toRadians(t(e,0)),r=u.toRadians(t(r,0)),a=u.toRadians(t(a,0)),i=u.toRadians(t(i,0)),n(o)?(o.west=e,o.south=r,o.east=a,o.north=i,o):new s(e,r,a,i)},s.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,a=-Number.MAX_VALUE,i=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];r=Math.min(r,l.longitude),a=Math.max(a,l.longitude),i=Math.min(i,l.latitude),o=Math.max(o,l.latitude)}return n(t)?(t.west=r,t.south=i,t.east=a,t.north=o,t):new s(r,i,a,o)},s.clone=function(e,t){return n(e)?n(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return n(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},s.northwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},s.northeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},s.southeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},s.center=function(t,r){var a=t.east,i=t.west;i>a&&(a+=u.TWO_PI);var o=u.negativePiToPi(.5*(i+a)),s=.5*(t.south+t.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new e(o,s)},s.intersection=function(e,t,r){var a=e.east,i=e.west,o=t.east,c=t.west;i>a&&o>0?a+=u.TWO_PI:c>o&&a>0&&(o+=u.TWO_PI),i>a&&0>c?c+=u.TWO_PI:c>o&&0>i&&(i+=u.TWO_PI);var l=u.negativePiToPi(Math.max(i,c)),f=u.negativePiToPi(Math.min(a,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var h=Math.max(e.south,t.south),d=Math.min(e.north,t.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(e,t){var n=t.longitude,r=t.latitude,a=e.west,i=e.east;return a>i&&(i+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>a||u.equalsEpsilon(n,a,u.EPSILON14))&&(i>n||u.equalsEpsilon(n,i,u.EPSILON14))&&r>=e.south&&r<=e.north};var c=new e;return s.subsample=function(e,r,a,o){r=t(r,i.WGS84),a=t(a,0),n(o)||(o=[]);var l=0,f=e.north,h=e.south,d=e.east,p=e.west,m=c;m.height=a,m.longitude=p,m.latitude=f,o[l]=r.cartographicToCartesian(m,o[l]),l++,m.longitude=d,o[l]=r.cartographicToCartesian(m,o[l]),l++,m.latitude=h,o[l]=r.cartographicToCartesian(m,o[l]),l++,m.longitude=p,o[l]=r.cartographicToCartesian(m,o[l]),l++,m.latitude=0>f?f:h>0?h:0;for(var y=1;8>y;++y)m.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,m)&&(o[l]=r.cartographicToCartesian(m,o[l]),l++);return 0===m.latitude&&(m.longitude=p,o[l]=r.cartographicToCartesian(m,o[l]),l++,m.longitude=d,o[l]=r.cartographicToCartesian(m,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingRectangle",["./Cartesian2","./Cartographic","./defaultValue","./defined","./DeveloperError","./GeographicProjection","./Intersect","./Rectangle"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,t,r,a){this.x=n(e,0),this.y=n(t,0),this.width=n(r,0),this.height=n(a,0)};s.fromPoints=function(e,t){if(r(t)||(t=new s),!r(e)||0===e.length)return t.x=0,t.y=0,t.width=0,t.height=0,t;for(var n=e.length,a=e[0].x,i=e[0].y,o=e[0].x,u=e[0].y,c=1;n>c;c++){var l=e[c],f=l.x,h=l.y;a=Math.min(f,a),o=Math.max(f,o),i=Math.min(h,i),u=Math.max(h,u)}return t.x=a,t.y=i,t.width=o-a,t.height=u-i,t};var c=new i,l=new t,f=new t;return s.fromRectangle=function(t,a,i){if(r(i)||(i=new s),!r(t))return i.x=0,i.y=0,i.width=0,i.height=0,i;a=n(a,c);var o=a.project(u.southwest(t,l)),h=a.project(u.northeast(t,f));return e.subtract(h,o,h),i.x=o.x,i.y=o.y,i.width=h.x,i.height=h.y,i},s.clone=function(e,t){return r(e)?r(t)?(t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height,t):new s(e.x,e.y,e.width,e.height):void 0},s.union=function(e,t,n){r(n)||(n=new s);var a=Math.min(e.x,t.x),i=Math.min(e.y,t.y),o=Math.max(e.x+e.width,t.x+t.width),u=Math.max(e.y+e.height,t.y+t.height);return n.x=a,n.y=i,n.width=o-a,n.height=u-i,n},s.expand=function(e,t,n){n=s.clone(e,n);var r=t.x-n.x,a=t.y-n.y;return r>n.width?n.width=r:0>r&&(n.width-=r,n.x=t.x),a>n.height?n.height=a:0>a&&(n.height-=a,n.y=t.y),n},s.intersect=function(e,t){var n=e.x,r=e.y,a=t.x,i=t.y;return n>a+t.width||n+e.width<a||r+e.height<i||r>i+t.height?o.OUTSIDE:o.INTERSECTING},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.intersect=function(e){return s.intersect(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},n=function(n,r){e(t[n])||(t[n]=!0,console.log(r))};return n}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,n){this.start=e(t,0),this.stop=e(n,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r,a){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0),this.w=e(a,0)};i.fromElements=function(e,n,r,a,o){return t(o)?(o.x=e,o.y=n,o.z=r,o.w=a,o):new i(e,n,r,a)},i.fromColor=function(e,n){return t(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new i(e.red,e.green,e.blue,e.alpha)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new i(e.x,e.y,e.z,e.w):void 0},i.packedLength=4,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r++]=t.z,n[r]=t.w},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r++],a.w=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,s);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?n.x<=n.w?i.clone(i.UNIT_X,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t):n.y<=n.z?n.y<=n.w?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)&&a.equalsEpsilon(e.w,n.w,r,i)},i.ZERO=r(new i(0,0,0,0)),i.UNIT_X=r(new i(1,0,0,0)),i.UNIT_Y=r(new i(0,1,0,0)),i.UNIT_Z=r(new i(0,0,1,0)),i.UNIT_W=r(new i(0,0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i){"use strict";function o(e){for(var t=0,n=0;9>n;++n){var r=e[n];t+=r*r}return Math.sqrt(t)}function u(e){for(var t=0,n=0;3>n;++n){var r=e[c.getElementIndex(d[n],h[n])];t+=2*r*r}return Math.sqrt(t)}function s(e,t){for(var n=i.EPSILON15,r=0,a=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(d[o],h[o])]);u>r&&(a=o,r=u)}var s=1,l=0,f=h[a],p=d[a];if(Math.abs(e[c.getElementIndex(p,f)])>n){var m,y=e[c.getElementIndex(p,p)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(p,f)],w=(y-v)/2/g;m=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+m*m),l=m*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(p,p)]=s,t[c.getElementIndex(p,f)]=l,t[c.getElementIndex(f,p)]=-l,t}var c=function(e,n,r,a,i,o,u,s,c){this[0]=t(e,0),this[1]=t(a,0),this[2]=t(u,0),this[3]=t(n,0),this[4]=t(i,0),this[5]=t(s,0),this[6]=t(r,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r++]=e[7],n[r++]=e[8]},c.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r++],a[1]=e[r++],a[2]=e[r++],a[3]=e[r++],a[4]=e[r++],a[5]=e[r++],a[6]=e[r++],a[7]=e[r++],a[8]=e[r++],a},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r],a[1]=e[r+1],a[2]=e[r+2],a[3]=e[r+3],a[4]=e[r+4],a[5]=e[r+5],a[6]=e[r+6],a[7]=e[r+7],a[8]=e[r+8],a},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var r=e.x*e.x,a=e.x*e.y,i=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,h=e.z*e.w,d=e.w*e.w,p=r-u-f+d,m=2*(a-h),y=2*(i+l),v=2*(a+h),g=-r+u-f+d,w=2*(s-o),x=2*(i-l),E=2*(s+o),S=-r-u+f+d;return n(t)?(t[0]=p,t[1]=v,t[2]=x,t[3]=m,t[4]=g,t[5]=E,t[6]=y,t[7]=w,t[8]=S,t):new c(p,m,y,v,g,w,x,E,S)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return n(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=a,t[6]=0,t[7]=-a,t[8]=r,t):new c(1,0,0,0,r,-a,0,a,r)},c.fromRotationY=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=0,t[2]=-a,t[3]=0,t[4]=1,t[5]=0,t[6]=a,t[7]=0,t[8]=r,t):new c(r,0,a,0,1,0,-a,0,r)},c.fromRotationZ=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=a,t[2]=0,t[3]=-a,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(r,-a,0,a,r,0,0,0,1)},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,n){var r=3*t,a=e[r],i=e[r+1],o=e[r+2];return n.x=a,n.y=i,n.z=o,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=3*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r},c.getRow=function(e,t,n){var r=e[t],a=e[t+3],i=e[t+6]; +return n.x=r,n.y=a,n.z=i,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+3]=n.y,r[t+6]=n.z,r};var l=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),n};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,n){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],a=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],i=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=r,n[1]=a,n[2]=i,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[3]*a+e[6]*i,u=e[1]*r+e[4]*a+e[7]*i,s=e[2]*r+e[5]*a+e[8]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n},c.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var n=e[0],r=e[3],a=e[6],i=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=n,t[1]=r,t[2]=a,t[3]=i,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var h=[1,0,0],d=[2,2,1],p=new c,m=new c;return c.computeEigenDecomposition=function(e,t){var r=i.EPSILON20,a=10,l=0,f=0;n(t)||(t={});for(var h=t.unitary=c.clone(c.IDENTITY,t.unitary),d=t.diagonal=c.clone(e,t.diagonal),y=r*o(d);a>f&&u(d)>y;)s(d,p),c.transpose(p,m),c.multiply(d,p,d),c.multiply(m,d,d),c.multiply(h,p,h),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],n=e[3],r=e[6],a=e[1],i=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(i*c-s*o)+a*(s*r-n*c)+u*(n*o-i*r)},c.inverse=function(e,t){var n=e[0],a=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],h=e[7],d=e[8],p=c.determinant(e);if(Math.abs(p)<=i.EPSILON15)throw new r("matrix is not invertible");t[0]=s*d-h*l,t[1]=h*o-a*d,t[2]=a*l-s*o,t[3]=f*l-u*d,t[4]=n*d-f*o,t[5]=u*o-n*l,t[6]=u*h-f*s,t[7]=f*a-n*h,t[8]=n*s-u*a;var m=1/p;return c.multiplyByScalar(t,m,t)},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},c.IDENTITY=a(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,n,r,a,i,o,u,s){"use strict";var c=function(e,t,r,a,i,o,u,s,c,l,f,h,d,p,m,y){this[0]=n(e,0),this[1]=n(i,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(t,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(p,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(m,0),this[12]=n(a,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(y,0)};c.packedLength=16,c.pack=function(e,t,r){r=n(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},c.unpack=function(e,t,a){return t=n(t,0),r(a)||(a=new c),a[0]=e[t++],a[1]=e[t++],a[2]=e[t++],a[3]=e[t++],a[4]=e[t++],a[5]=e[t++],a[6]=e[t++],a[7]=e[t++],a[8]=e[t++],a[9]=e[t++],a[10]=e[t++],a[11]=e[t++],a[12]=e[t++],a[13]=e[t++],a[14]=e[t++],a[15]=e[t],a},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,a,i){return a=n(a,e.ZERO),r(i)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=0,i[4]=t[3],i[5]=t[4],i[6]=t[5],i[7]=0,i[8]=t[6],i[9]=t[7],i[10]=t[8],i[11]=0,i[12]=a.x,i[13]=a.y,i[14]=a.z,i[15]=1,i):new c(t[0],t[3],t[6],a.x,t[1],t[4],t[7],a.y,t[2],t[5],t[8],a.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,n,a){r(a)||(a=new c);var i=n.x,o=n.y,u=n.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,h=t.x*t.w,d=t.y*t.y,p=t.y*t.z,m=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-d-y+g,x=2*(l-v),E=2*(f+m),S=2*(l+v),O=-s+d-y+g,T=2*(p-h),M=2*(f-m),_=2*(p+h),P=-s-d+y+g;return a[0]=w*i,a[1]=S*i,a[2]=M*i,a[3]=0,a[4]=x*o,a[5]=O*o,a[6]=_*o,a[7]=0,a[8]=E*u,a[9]=T*u,a[10]=P*u,a[11]=0,a[12]=e.x,a[13]=e.y,a[14]=e.z,a[15]=1,a},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,h=new e;c.fromCamera=function(t,n){var a=t.eye,i=t.target,o=t.up;e.normalize(e.subtract(i,a,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,p=l.x,m=l.y,y=l.z,v=h.x,g=h.y,w=h.z,x=a.x,E=a.y,S=a.z,O=u*-x+s*-E+d*-S,T=v*-x+g*-E+w*-S,M=p*x+m*E+y*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-p,n[3]=0,n[4]=s,n[5]=g,n[6]=-m,n[7]=0,n[8]=d,n[9]=w,n[10]=-y,n[11]=0,n[12]=O,n[13]=T,n[14]=M,n[15]=1,n):new c(u,s,d,O,v,g,w,T,-p,-m,-y,M,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,n,r,a){var i=Math.tan(.5*e),o=1/i,u=o/t,s=(r+n)/(n-r),c=2*r*n/(n-r);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=o,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=s,a[11]=-1,a[12]=0,a[13]=0,a[14]=c,a[15]=0,a},c.computeOrthographicOffCenter=function(e,t,n,r,a,i,o){var u=1/(t-e),s=1/(r-n),c=1/(i-a),l=-(t+e)*u,f=-(r+n)*s,h=-(i+a)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o},c.computePerspectiveOffCenter=function(e,t,n,r,a,i,o){var u=2*a/(t-e),s=2*a/(r-n),c=(t+e)/(t-e),l=(r+n)/(r-n),f=-(i+a)/(i-a),h=-1,d=-2*i*a/(i-a);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,n,r,a,i){var o=2*a/(t-e),u=2*a/(r-n),s=(t+e)/(t-e),c=(r+n)/(r-n),l=-1,f=-1,h=-2*a;return i[0]=o,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=u,i[6]=0,i[7]=0,i[8]=s,i[9]=c,i[10]=l,i[11]=f,i[12]=0,i[13]=0,i[14]=h,i[15]=0,i},c.computeViewportTransformation=function(e,t,r,a){e=n(e,n.EMPTY_OBJECT);var i=n(e.x,0),o=n(e.y,0),u=n(e.width,0),s=n(e.height,0);t=n(t,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-t),h=c,d=l,p=f,m=i+c,y=o+l,v=t+f,g=1;return a[0]=h,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=d,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=p,a[11]=0,a[12]=m,a[13]=y,a[14]=v,a[15]=g,a},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,n){var r=4*t,a=e[r],i=e[r+1],o=e[r+2],u=e[r+3];return n.x=a,n.y=i,n.z=o,n.w=u,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=4*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r[a+3]=n.w,r},c.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n},c.getRow=function(e,t,n){var r=e[t],a=e[t+4],i=e[t+8],o=e[t+12];return n.x=r,n.y=a,n.z=i,n.w=o,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+4]=n.y,r[t+8]=n.z,r[t+12]=n.w,r};var d=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],d)),n.y=e.magnitude(e.fromElements(t[4],t[5],t[6],d)),n.z=e.magnitude(e.fromElements(t[8],t[9],t[10],d)),n};var p=new e;c.getMaximumScale=function(t){return c.getScale(t,p),e.maximumComponent(p)},c.multiply=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],h=e[9],d=e[10],p=e[11],m=e[12],y=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],O=t[4],T=t[5],M=t[6],_=t[7],P=t[8],b=t[9],N=t[10],A=t[11],I=t[12],C=t[13],R=t[14],z=t[15],D=r*w+u*x+f*E+m*S,L=a*w+s*x+h*E+y*S,q=i*w+c*x+d*E+v*S,U=o*w+l*x+p*E+g*S,B=r*O+u*T+f*M+m*_,F=a*O+s*T+h*M+y*_,W=i*O+c*T+d*M+v*_,G=o*O+l*T+p*M+g*_,k=r*P+u*b+f*N+m*A,V=a*P+s*b+h*N+y*A,Y=i*P+c*b+d*N+v*A,j=o*P+l*b+p*N+g*A,H=r*I+u*C+f*R+m*z,Z=a*I+s*C+h*R+y*z,X=i*I+c*C+d*R+v*z,J=o*I+l*C+p*R+g*z;return n[0]=D,n[1]=L,n[2]=q,n[3]=U,n[4]=B,n[5]=F,n[6]=W,n[7]=G,n[8]=k,n[9]=V,n[10]=Y,n[11]=j,n[12]=H,n[13]=Z,n[14]=X,n[15]=J,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},c.multiplyTransformation=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=e[12],d=e[13],p=e[14],m=t[0],y=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],O=t[10],T=t[12],M=t[13],_=t[14],P=r*m+o*y+c*v,b=a*m+u*y+l*v,N=i*m+s*y+f*v,A=r*g+o*w+c*x,I=a*g+u*w+l*x,C=i*g+s*w+f*x,R=r*E+o*S+c*O,z=a*E+u*S+l*O,D=i*E+s*S+f*O,L=r*T+o*M+c*_+h,q=a*T+u*M+l*_+d,U=i*T+s*M+f*_+p;return n[0]=P,n[1]=b,n[2]=N,n[3]=0,n[4]=A,n[5]=I,n[6]=C,n[7]=0,n[8]=R,n[9]=z,n[10]=D,n[11]=0,n[12]=L,n[13]=q,n[14]=U,n[15]=1,n},c.multiplyByMatrix3=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=t[0],d=t[1],p=t[2],m=t[3],y=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=r*h+o*d+c*p,S=a*h+u*d+l*p,O=i*h+s*d+f*p,T=r*m+o*y+c*v,M=a*m+u*y+l*v,_=i*m+s*y+f*v,P=r*g+o*w+c*x,b=a*g+u*w+l*x,N=i*g+s*w+f*x;return n[0]=E,n[1]=S,n[2]=O,n[3]=0,n[4]=T,n[5]=M,n[6]=_,n[7]=0,n[8]=P,n[9]=b,n[10]=N,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n},c.multiplyByTranslation=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=r*e[0]+a*e[4]+i*e[8]+e[12],u=r*e[1]+a*e[5]+i*e[9]+e[13],s=r*e[2]+a*e[6]+i*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=o,n[13]=u,n[14]=s,n[15]=e[15],n};var m=new e;c.multiplyByUniformScale=function(e,t,n){return m.x=t,m.y=t,m.z=t,c.multiplyByScale(e,m,n)},c.multiplyByScale=function(e,t,n){var r=t.x,a=t.y,i=t.z;return 1===r&&1===a&&1===i?c.clone(e,n):(n[0]=r*e[0],n[1]=r*e[1],n[2]=r*e[2],n[3]=0,n[4]=a*e[4],n[5]=a*e[5],n[6]=a*e[6],n[7]=0,n[8]=i*e[8],n[9]=i*e[9],n[10]=i*e[10],n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=1,n)},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=t.w,u=e[0]*r+e[4]*a+e[8]*i+e[12]*o,s=e[1]*r+e[5]*a+e[9]*i+e[13]*o,c=e[2]*r+e[6]*a+e[10]*i+e[14]*o,l=e[3]*r+e[7]*a+e[11]*i+e[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i,u=e[1]*r+e[5]*a+e[9]*i,s=e[2]*r+e[6]*a+e[10]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i+e[12],u=e[1]*r+e[5]*a+e[9]*i+e[13],s=e[2]*r+e[6]*a+e[10]*i+e[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var n=e[1],r=e[2],a=e[3],i=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=i,t[10]=e[10],t[11]=e[14],t[12]=a,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,n){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;var r=e[0],a=e[4],i=e[8],l=e[12],f=e[1],h=e[5],d=e[9],p=e[13],m=e[2],x=e[6],E=e[10],S=e[14],O=e[3],T=e[7],M=e[11],_=e[15],P=E*_,b=S*M,N=x*_,A=S*T,I=x*M,C=E*T,R=m*_,z=S*O,D=m*M,L=E*O,q=m*T,U=x*O,B=P*h+A*d+I*p-(b*h+N*d+C*p),F=b*f+R*d+L*p-(P*f+z*d+D*p),W=N*f+z*h+q*p-(A*f+R*h+U*p),G=C*f+D*h+U*d-(I*f+L*h+q*d),k=b*a+N*i+C*l-(P*a+A*i+I*l),V=P*r+z*i+D*l-(b*r+R*i+L*l),Y=A*r+R*a+U*l-(N*r+z*a+q*l),j=I*r+L*a+q*i-(C*r+D*a+U*i);P=i*p,b=l*d,N=a*p,A=l*h,I=a*d,C=i*h,R=r*p,z=l*f,D=r*d,L=i*f,q=r*h,U=a*f;var H=P*T+A*M+I*_-(b*T+N*M+C*_),Z=b*O+R*M+L*_-(P*O+z*M+D*_),X=N*O+z*T+q*_-(A*O+R*T+U*_),J=C*O+D*T+U*M-(I*O+L*T+q*M),K=N*E+C*S+b*x-(I*S+P*x+A*E),Q=D*S+P*m+z*E-(R*E+L*S+b*m),$=R*x+U*S+A*m-(q*S+N*m+z*x),et=q*E+I*m+L*x-(D*x+U*E+C*m),tt=r*B+a*F+i*W+l*G;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,n[0]=B*tt,n[1]=F*tt,n[2]=W*tt,n[3]=G*tt,n[4]=k*tt,n[5]=V*tt,n[6]=Y*tt,n[7]=j*tt,n[8]=H*tt,n[9]=Z*tt,n[10]=X*tt,n[11]=J*tt,n[12]=K*tt,n[13]=Q*tt,n[14]=$*tt,n[15]=et*tt,n},c.inverseTransformation=function(e,t){var n=e[0],r=e[1],a=e[2],i=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],h=e[13],d=e[14],p=-n*f-r*h-a*d,m=-i*f-o*h-u*d,y=-s*f-c*h-l*d;return t[0]=n,t[1]=i,t[2]=s,t[3]=0,t[4]=r,t[5]=o,t[6]=c,t[7]=0,t[8]=a,t[9]=u,t[10]=l,t[11]=0,t[12]=p,t[13]=m,t[14]=y,t[15]=1,t},c.IDENTITY=i(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var a=function(t,n){this.normal=e.clone(t),this.distance=n};a.fromPointNormal=function(n,r,i){var o=-e.dot(r,n);return t(i)?(e.clone(r,i.normal),i.distance=o,i):new a(r,o)};var i=new e;return a.fromCartesian4=function(n,r){var o=e.fromCartesian4(n,i),u=n.w;return t(r)?(e.clone(o,r.normal),r.distance=u,r):new a(o,u)},a.getPointDistance=function(t,n){return e.dot(t.normal,n)+t.distance},a.ORIGIN_XY_PLANE=r(new a(e.UNIT_Z,0)),a.ORIGIN_YZ_PLANE=r(new a(e.UNIT_X,0)),a.ORIGIN_ZX_PLANE=r(new a(e.UNIT_Y,0)),a}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,n,r,a,i,o,u,s,c,l,f,h){"use strict";var d=function(t,r){this.center=e.clone(n(t,e.ZERO)),this.radius=n(r,0)},p=new e,m=new e,y=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,O=new e,T=new e,M=new e;d.fromPoints=function(t,n){if(r(n)||(n=new d),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;for(var a=e.clone(t[0],x),i=e.clone(a,p),o=e.clone(a,m),u=e.clone(a,y),s=e.clone(a,v),c=e.clone(a,g),l=e.clone(a,w),f=t.length,h=1;f>h;h++){e.clone(t[h],a);var _=a.x,P=a.y,b=a.z;_<i.x&&e.clone(a,i),_>s.x&&e.clone(a,s),P<o.y&&e.clone(a,o),P>c.y&&e.clone(a,c),b<u.z&&e.clone(a,u),b>l.z&&e.clone(a,l)}var N=e.magnitudeSquared(e.subtract(s,i,E)),A=e.magnitudeSquared(e.subtract(c,o,E)),I=e.magnitudeSquared(e.subtract(l,u,E)),C=i,R=s,z=N;A>z&&(z=A,C=o,R=c),I>z&&(z=I,C=u,R=l);var D=S;D.x=.5*(C.x+R.x),D.y=.5*(C.y+R.y),D.z=.5*(C.z+R.z);var L=e.magnitudeSquared(e.subtract(R,D,E)),q=Math.sqrt(L),U=O;U.x=i.x,U.y=o.y,U.z=u.z;var B=T;B.x=s.x,B.y=c.y,B.z=l.z;var F=e.multiplyByScalar(e.add(U,B,E),.5,M),W=0;for(h=0;f>h;h++){e.clone(t[h],a);var G=e.magnitude(e.subtract(a,F,E));G>W&&(W=G);var k=e.magnitudeSquared(e.subtract(a,D,E));if(k>L){var V=Math.sqrt(k);q=.5*(q+V),L=q*q;var Y=V-q;D.x=(q*D.x+Y*a.x)/V,D.y=(q*D.y+Y*a.y)/V,D.z=(q*D.z+Y*a.z)/V}}return W>q?(e.clone(D,n.center),n.radius=q):(e.clone(F,n.center),n.radius=W),n};var _=new u,P=new e,b=new e,N=new t,A=new t;d.fromRectangle2D=function(e,t,n){return d.fromRectangleWithHeights2D(e,t,0,0,n)},d.fromRectangleWithHeights2D=function(t,a,i,o,u){if(r(u)||(u=new d),!r(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;a=n(a,_),h.southwest(t,N),N.height=i,h.northeast(t,A),A.height=o;var s=a.project(N,P),c=a.project(A,b),l=c.x-s.x,f=c.y-s.y,p=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+p*p);var m=u.center;return m.x=s.x+.5*l,m.y=s.y+.5*f,m.z=s.z+.5*p,u};var I=[];d.fromRectangle3D=function(e,t,a,i){t=n(t,o.WGS84),a=n(a,0);var u;return r(e)&&(u=h.subsample(e,t,a,I)),d.fromPoints(u,i)},d.fromVertices=function(t,a,i,o){if(r(o)||(o=new d),!r(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;a=n(a,e.ZERO),i=n(i,3);var u=x;u.x=t[0]+a.x,u.y=t[1]+a.y,u.z=t[2]+a.z;for(var s=e.clone(u,p),c=e.clone(u,m),l=e.clone(u,y),f=e.clone(u,v),h=e.clone(u,g),_=e.clone(u,w),P=t.length,b=0;P>b;b+=i){var N=t[b]+a.x,A=t[b+1]+a.y,I=t[b+2]+a.z;u.x=N,u.y=A,u.z=I,N<s.x&&e.clone(u,s),N>f.x&&e.clone(u,f),A<c.y&&e.clone(u,c),A>h.y&&e.clone(u,h),I<l.z&&e.clone(u,l),I>_.z&&e.clone(u,_)}var C=e.magnitudeSquared(e.subtract(f,s,E)),R=e.magnitudeSquared(e.subtract(h,c,E)),z=e.magnitudeSquared(e.subtract(_,l,E)),D=s,L=f,q=C;R>q&&(q=R,D=c,L=h),z>q&&(q=z,D=l,L=_);var U=S;U.x=.5*(D.x+L.x),U.y=.5*(D.y+L.y),U.z=.5*(D.z+L.z);var B=e.magnitudeSquared(e.subtract(L,U,E)),F=Math.sqrt(B),W=O;W.x=s.x,W.y=c.y,W.z=l.z;var G=T;G.x=f.x,G.y=h.y,G.z=_.z;var k=e.multiplyByScalar(e.add(W,G,E),.5,M),V=0;for(b=0;P>b;b+=i){u.x=t[b]+a.x,u.y=t[b+1]+a.y,u.z=t[b+2]+a.z;var Y=e.magnitude(e.subtract(u,k,E));Y>V&&(V=Y);var j=e.magnitudeSquared(e.subtract(u,U,E));if(j>B){var H=Math.sqrt(j);F=.5*(F+H),B=F*F;var Z=H-F;U.x=(F*U.x+Z*u.x)/H,U.y=(F*U.y+Z*u.y)/H,U.z=(F*U.z+Z*u.z)/H}}return V>F?(e.clone(U,o.center),o.radius=F):(e.clone(k,o.center),o.radius=V),o},d.fromCornerPoints=function(t,n,a){r(a)||(a=new d);var i=a.center;return e.add(t,n,i),e.multiplyByScalar(i,.5,i),a.radius=e.distance(i,n),a},d.fromEllipsoid=function(t,n){return r(n)||(n=new d),e.clone(e.ZERO,n.center),n.radius=t.maximumRadius,n};var C=new e;d.fromBoundingSpheres=function(t,n){if(r(n)||(n=new d),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;var a=t.length;if(1===a)return d.clone(t[0],n);if(2===a)return d.union(t[0],t[1],n);for(var i=[],o=0;a>o;o++)i.push(t[o].center);n=d.fromPoints(i,n);var u=n.center,s=n.radius;for(o=0;a>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,C)+c.radius)}return n.radius=s,n},d.clone=function(t,n){return r(t)?r(n)?(n.center=e.clone(t.center,n.center),n.radius=t.radius,n):new d(t.center,t.radius):void 0},d.packedLength=4,d.pack=function(e,t,r){r=n(r,0);var a=e.center;t[r++]=a.x,t[r++]=a.y,t[r++]=a.z,t[r]=e.radius},d.unpack=function(e,t,a){t=n(t,0),r(a)||(a=new d);var i=a.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],a.radius=e[t],a};var R=new e,z=new e;d.union=function(t,n,a){r(a)||(a=new d);var i=t.center,o=t.radius,u=n.center,s=n.radius,c=e.subtract(u,i,R),l=e.magnitude(c);if(o>=l+s)return t.clone(a),a;if(s>=l+o)return n.clone(a),a;var f=.5*(o+l+s),h=e.multiplyByScalar(c,(-o+f)/l,z);return e.add(h,i,h),e.clone(h,a.center),a.radius=f,a};var D=new e;d.expand=function(t,n,r){r=d.clone(t,r);var a=e.magnitude(e.subtract(n,r.center,D));return a>r.radius&&(r.radius=a),r},d.intersectPlane=function(t,n){var r=t.center,a=t.radius,i=n.normal,o=e.dot(i,r)+n.distance;return-a>o?s.OUTSIDE:a>o?s.INTERSECTING:s.INSIDE};var L=new f(new e,0);d.intersect=function(e,t){a("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(t,L);return d.intersectPlane(e,n)},d.transform=function(e,t,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=l.getMaximumScale(t)*e.radius,n};var q=new e;d.distanceSquaredTo=function(t,n){var r=e.subtract(t.center,n,q);return e.magnitudeSquared(r)-t.radius*t.radius},d.transformWithoutScale=function(e,t,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var U=new e;d.computePlaneDistances=function(t,n,a,i){r(i)||(i=new c);var o=e.subtract(t.center,n,U),u=e.multiplyByScalar(a,e.dot(a,o),U),s=e.magnitude(u);return i.start=s-t.radius,i.stop=s+t.radius,i};for(var B=new e,F=new e,W=new e,G=new e,k=new e,V=new t,Y=new Array(8),j=0;8>j;++j)Y[j]=new e;var H=new u;return d.projectTo2D=function(t,r,a){r=n(r,H);var i=r.ellipsoid,o=t.center,u=t.radius,s=i.geodeticSurfaceNormal(o,B),c=e.cross(e.UNIT_Z,s,F);e.normalize(c,c);var l=e.cross(s,c,W);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,k),h=e.negate(c,G),p=Y,m=p[0];e.add(s,l,m),e.add(m,c,m),m=p[1],e.add(s,l,m),e.add(m,h,m),m=p[2],e.add(s,f,m),e.add(m,h,m),m=p[3],e.add(s,f,m),e.add(m,c,m),e.negate(s,s),m=p[4],e.add(s,l,m),e.add(m,c,m),m=p[5],e.add(s,l,m),e.add(m,h,m),m=p[6],e.add(s,f,m),e.add(m,h,m),m=p[7],e.add(s,f,m),e.add(m,c,m);for(var y=p.length,v=0;y>v;++v){var g=p[v];e.add(o,g,g);var w=i.cartesianToCartographic(g,V);r.project(w,g)}a=d.fromPoints(p,a),o=a.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,a},d.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&t.radius===n.radius},d.prototype.intersectPlane=function(e){return d.intersectPlane(this,e)},d.prototype.intersect=function(e){return d.intersect(this,e)},d.prototype.equals=function(e){return d.equals(this,e)},d.prototype.clone=function(e){return d.clone(this,e)},d}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},a={};return t(a,{element:{get:function(){return a.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return a.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return a.supportsFullscreen()?null!==a.element:void 0}}}),a.supportsFullscreen=function(){if(e(n))return n;n=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var a,i=["webkit","moz","o","ms","khtml"],o=0,u=i.length;u>o;++o){var s=i[o];a=s+"RequestFullscreen","function"==typeof t[a]?(r.requestFullscreen=a,n=!0):(a=s+"RequestFullScreen","function"==typeof t[a]&&(r.requestFullscreen=a,n=!0)),a=s+"ExitFullscreen","function"==typeof document[a]?r.exitFullscreen=a:(a=s+"CancelFullScreen","function"==typeof document[a]&&(r.exitFullscreen=a)),a=s+"FullscreenEnabled",e(document[a])?r.fullscreenEnabled=a:(a=s+"FullScreenEnabled",e(document[a])&&(r.fullscreenEnabled=a)),a=s+"FullscreenElement",e(document[a])?r.fullscreenElement=a:(a=s+"FullScreenElement",e(document[a])&&(r.fullscreenElement=a)),a=s+"fullscreenchange",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenChange"),r.fullscreenchange=a),a=s+"fullscreenerror",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenError"),r.fullscreenerror=a)}return n},a.requestFullscreen=function(e){a.supportsFullscreen()&&e[r.requestFullscreen]()},a.exitFullscreen=function(){a.supportsFullscreen()&&document[r.exitFullscreen]()},a}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,n){"use strict";function r(e){for(var t=e.split("."),n=0,r=t.length;r>n;++n)t[n]=parseInt(t[n],10);return t}function a(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=r(e[1]))}return y}function i(){return a()&&v}function o(){if(!t(g)&&(g=!1,!a()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=r(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=r(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,O=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,O=r(e[1])))}return S}function f(){return l()&&O}function h(){if(!t(T)){T=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(T=!0,M=r(e[1]))}return T}function d(){return t(_)||(_=/Windows/i.test(navigator.appVersion)),_}function p(){return h()&&M}function m(){return t(P)||(P=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),P}var y,v,g,w,x,E,S,O,T,M,_,P,b={isChrome:a,chromeVersion:i,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:p,isWindows:d,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:m};return b.supportsFullscreen=function(){return n.supportsFullscreen()},b.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},b.supportsWebWorkers=function(){return"undefined"!=typeof Worker},b}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,n,r,a){"use strict";if(!r.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(e){switch(e){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},i.fromTypedArray=function(e){return e instanceof Int8Array?i.BYTE:e instanceof Uint8Array?i.UNSIGNED_BYTE:e instanceof Int16Array?i.SHORT:e instanceof Uint16Array?i.UNSIGNED_SHORT:e instanceof Float32Array?i.FLOAT:e instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(e){return t(e)&&(e===i.BYTE||e===i.UNSIGNED_BYTE||e===i.SHORT||e===i.UNSIGNED_SHORT||e===i.FLOAT||e===i.DOUBLE)},i.createTypedArray=function(e,t){switch(e){case i.BYTE:return new Int8Array(t);case i.UNSIGNED_BYTE:return new Uint8Array(t);case i.SHORT:return new Int16Array(t);case i.UNSIGNED_SHORT:return new Uint16Array(t);case i.FLOAT:return new Float32Array(t);case i.DOUBLE:return new Float64Array(t);default:throw new n("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(t,r,a,o){switch(a=e(a,0),o=e(o,(r.byteLength-a)/i.getSizeInBytes(t)),t){case i.BYTE:return new Int8Array(r,a,o); +case i.UNSIGNED_BYTE:return new Uint8Array(r,a,o);case i.SHORT:return new Int16Array(r,a,o);case i.UNSIGNED_SHORT:return new Uint16Array(r,a,o);case i.FLOAT:return new Float32Array(r,a,o);case i.DOUBLE:return new Float64Array(r,a,o);default:throw new n("componentDatatype is not a valid value.")}},a(i)}),define("Core/CornerType",["./freezeObject"],function(e){"use strict";var t={ROUNDED:0,MITERED:1,BEVELED:2};return e(t)}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,n,r,a){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,a.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,r.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(e){var r=-1;for(var a in e.attributes)if(e.attributes.hasOwnProperty(a)&&t(e.attributes[a])&&t(e.attributes[a].values)){var i=e.attributes[a],o=i.values.length/i.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/AttributeCompression",["./Cartesian2","./Cartesian3","./defined","./DeveloperError","./Math"],function(e,t,n,r,a){"use strict";var i={};i.octEncode=function(e,t){if(t.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),t.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){var n=t.x,r=t.y;t.x=(1-Math.abs(r))*a.signNotZero(n),t.y=(1-Math.abs(n))*a.signNotZero(r)}return t.x=a.toSNorm(t.x),t.y=a.toSNorm(t.y),t},i.octDecode=function(e,n,r){if(r.x=a.fromSNorm(e),r.y=a.fromSNorm(n),r.z=1-(Math.abs(r.x)+Math.abs(r.y)),r.z<0){var i=r.x;r.x=(1-Math.abs(r.y))*a.signNotZero(i),r.y=(1-Math.abs(i))*a.signNotZero(r.y)}return t.normalize(r,r)},i.octPackFloat=function(e){return 256*e.x+e.y};var o=new e;return i.octEncodeFloat=function(e){return i.octEncode(e,o),i.octPackFloat(o)},i.octDecodeFloat=function(e,t){var n=e/256,r=Math.floor(n),a=256*(n-r);return i.octDecode(r,a,t)},i.octPack=function(e,t,n,r){var a=i.octEncodeFloat(e),u=i.octEncodeFloat(t),s=i.octEncode(n,o);return r.x=65536*s.x+a,r.y=65536*s.y+u,r},i.octUnpack=function(e,t,n,r){var a=e.x/65536,o=Math.floor(a),u=65536*(a-o);a=e.y/65536;var s=Math.floor(a),c=65536*(a-s);i.octDecodeFloat(u,t),i.octDecodeFloat(c,n),i.octDecode(o,s,r)},i.compressTextureCoordinates=function(e){var t=1===e.x?4095:0|4096*e.x,n=1===e.y?4095:0|4096*e.y;return 4096*t+n},i.decompressTextureCoordinates=function(e,t){var n=e/4096;return t.x=Math.floor(n)/4096,t.y=n-Math.floor(n),t},i}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=new t,a=new t,i=new t,o=function(o,u,s,c,l){n(l)||(l=new t);var f,h,d,p,m,y,v,g;n(u.z)?(f=t.subtract(s,u,r),h=t.subtract(c,u,a),d=t.subtract(o,u,i),p=t.dot(f,f),m=t.dot(f,h),y=t.dot(f,d),v=t.dot(h,h),g=t.dot(h,d)):(f=e.subtract(s,u,r),h=e.subtract(c,u,a),d=e.subtract(o,u,i),p=e.dot(f,f),m=e.dot(f,h),y=e.dot(f,d),v=e.dot(h,h),g=e.dot(h,d));var w=1/(p*v-m*m);return l.y=(v*y-m*g)*w,l.z=(p*g-m*y)*w,l.x=1-l.y-l.z,l};return o}),define("Core/EncodedCartesian3",["./Cartesian3","./defined","./DeveloperError"],function(e,t){"use strict";var n=function(){this.high=e.clone(e.ZERO),this.low=e.clone(e.ZERO)};n.encode=function(e,n){t(n)||(n={high:0,low:0});var r;return e>=0?(r=65536*Math.floor(e/65536),n.high=r,n.low=e-r):(r=65536*Math.floor(-e/65536),n.high=-r,n.low=e+r),n};var r={high:0,low:0};n.fromCartesian=function(e,a){t(a)||(a=new n);var i=a.high,o=a.low;return n.encode(e.x,r),i.x=r.high,o.x=r.low,n.encode(e.y,r),i.y=r.high,o.y=r.low,n.encode(e.z,r),i.z=r.high,o.z=r.low,a};var a=new n;return n.writeElements=function(e,t,r){n.fromCartesian(e,a);var i=a.high,o=a.low;t[r]=i.x,t[r+1]=i.y,t[r+2]=i.z,t[r+3]=o.x,t[r+4]=o.y,t[r+5]=o.z},n}),define("Core/GeometryInstance",["./defaultValue","./defined","./DeveloperError","./Matrix4"],function(e,t,n,r){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.geometry=t.geometry,this.modelMatrix=r.clone(e(t.modelMatrix,r.IDENTITY)),this.id=t.id,this.pickPrimitive=t.pickPrimitive,this.attributes=e(t.attributes,{}),this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0};return a}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r){"use strict";var a={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return a.getSizeInBytes=function(e){switch(e){case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},a.validate=function(t){return e(t)&&(t===a.UNSIGNED_BYTE||t===a.UNSIGNED_SHORT||t===a.UNSIGNED_INT)},a.createTypedArray=function(e,t){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},a.createTypedArrayFromArrayBuffer=function(e,t,n,a){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,a):new Uint16Array(t,n,a)},n(a)}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function n(e,n,r){var a=e+n;return t.sign(e)!==t.sign(n)&&Math.abs(a/Math.max(Math.abs(e),Math.abs(n)))<r?0:a}var r={};return r.computeDiscriminant=function(e,t,n){var r=t*t-4*e*n;return r},r.computeRealRoots=function(e,r,a){var i;if(0===e)return 0===r?[]:[-a/r];if(0===r){if(0===a)return[0,0];var o=Math.abs(a),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(i=-a/e,0>i)return[];var s=Math.sqrt(i);return[-s,s]}if(0===a)return i=-r/e,0>i?[i,0]:[0,i];var c=r*r,l=4*e*a,f=n(c,-l,t.EPSILON14);if(0>f)return[];var h=-.5*n(r,t.sign(r)*Math.sqrt(f),t.EPSILON14);return r>0?[h/e,a/h]:[a/h,h/e]},r}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function n(e,t,n,r){var a,i,o=e,u=t/3,s=n/3,c=r,l=o*s,f=u*c,h=u*u,d=s*s,p=o*s-h,m=o*c-u*s,y=u*c-d,v=4*p*y-m*m;if(0>v){var g,w,x;h*f>=l*d?(g=o,w=p,x=-2*u*p+o*m):(g=c,w=y,x=-c*m+2*s*y);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);i=-x+S;var O=i/2,T=0>O?-Math.pow(-O,1/3):Math.pow(O,1/3),M=i===S?-T:-w/T;return a=0>=w?T+M:-x/(T*T+M*M+w),h*f>=l*d?[(a-u)/o]:[-c/(a+s)]}var _=p,P=-2*u*p+o*m,b=y,N=-c*m+2*s*y,A=Math.sqrt(v),I=Math.sqrt(3)/2,C=Math.abs(Math.atan2(o*A,-P)/3);a=2*Math.sqrt(-_);var R=Math.cos(C);i=a*R;var z=a*(-R/2-I*Math.sin(C)),D=i+z>2*u?i-u:z-u,L=o,q=D/L;C=Math.abs(Math.atan2(c*A,-N)/3),a=2*Math.sqrt(-b),R=Math.cos(C),i=a*R,z=a*(-R/2-I*Math.sin(C));var U=-c,B=2*s>i+z?i+s:z+s,F=U/B,W=L*B,G=-D*B-L*U,k=D*U,V=(s*G-u*k)/(-u*G+s*W);return V>=q?F>=q?F>=V?[q,V,F]:[q,F,V]:[F,q,V]:F>=q?[V,q,F]:F>=V?[V,F,q]:[F,V,q]}var r={};return r.computeDiscriminant=function(e,t,n,r){var a=e*e,i=t*t,o=n*n,u=r*r,s=18*e*t*n*r+i*o-27*a*u-4*(e*o*n+i*t*r);return s},r.computeRealRoots=function(e,r,a,i){var o,u;if(0===e)return t.computeRealRoots(r,a,i);if(0===r){if(0===a){if(0===i)return[0,0,0];u=-i/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===i?(o=t.computeRealRoots(e,0,a),0===o.Length?[0]:[o[0],0,o[1]]):n(e,0,a,i)}return 0===a?0===i?(u=-r/e,0>u?[u,0,0]:[0,0,u]):n(e,r,0,i):0===i?(o=t.computeRealRoots(e,r,a),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):n(e,r,a,i)},r}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,n,r){"use strict";function a(t,a,i,o){var u=t*t,s=a-3*u/8,c=i-a*t/2+u*t/8,l=o-i*t/4+a*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var h=-t/4,d=f[f.length-1];if(Math.abs(d)<n.EPSILON14){var p=r.computeRealRoots(1,s,l);if(2===p.length){var m,y=p[0],v=p[1];if(y>=0&&v>=0){var g=Math.sqrt(y),w=Math.sqrt(v);return[h-w,h-g,h+g,h+w]}if(y>=0&&0>v)return m=Math.sqrt(y),[h-m,h+m];if(0>y&&v>=0)return m=Math.sqrt(v),[h-m,h+m]}return[]}if(d>0){var x=Math.sqrt(d),E=(s+d-c/x)/2,S=(s+d+c/x)/2,O=r.computeRealRoots(1,x,E),T=r.computeRealRoots(1,-x,S);return 0!==O.length?(O[0]+=h,O[1]+=h,0!==T.length?(T[0]+=h,T[1]+=h,O[1]<=T[0]?[O[0],O[1],T[0],T[1]]:T[1]<=O[0]?[T[0],T[1],O[0],O[1]]:O[0]>=T[0]&&O[1]<=T[1]?[T[0],O[0],O[1],T[1]]:T[0]>=O[0]&&T[1]<=O[1]?[O[0],T[0],T[1],O[1]]:O[0]>T[0]&&O[0]<T[1]?[T[0],O[0],T[1],O[1]]:[O[0],T[0],O[1],T[1]]):O):0!==T.length?(T[0]+=h,T[1]+=h,T):[]}}return[]}function i(t,a,i,o){var u=i*i,s=a*a,c=t*t,l=-2*a,f=i*t+s-4*o,h=c*o-i*a*t+u,d=e.computeRealRoots(1,l,f,h);if(d.length>0){var p,m,y=d[0],v=a-y,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),O=c-4*y,T=c+4*Math.abs(y);if(0>y||O*S>E*T){var M=Math.sqrt(O);p=M/2,m=0===M?0:(t*x-i)/M}else{var _=Math.sqrt(E);p=0===_?0:(t*x-i)/_,m=_/2}var P,b;0===w&&0===p?(P=0,b=0):n.sign(w)===n.sign(p)?(P=w+p,b=y/P):(b=w-p,P=y/b);var N,A;0===x&&0===m?(N=0,A=0):n.sign(x)===n.sign(m)?(N=x+m,A=o/N):(A=x-m,N=o/A);var I=r.computeRealRoots(1,P,N),C=r.computeRealRoots(1,b,A);if(0!==I.length)return 0!==C.length?I[1]<=C[0]?[I[0],I[1],C[0],C[1]]:C[1]<=I[0]?[C[0],C[1],I[0],I[1]]:I[0]>=C[0]&&I[1]<=C[1]?[C[0],I[0],I[1],C[1]]:C[0]>=I[0]&&C[1]<=I[1]?[I[0],C[0],C[1],I[1]]:I[0]>C[0]&&I[0]<C[1]?[C[0],I[0],C[1],I[1]]:[I[0],C[0],I[1],C[1]]:I;if(0!==C.length)return C}return[]}var o={};return o.computeDiscriminant=function(e,t,n,r,a){var i=e*e,o=i*e,u=t*t,s=u*t,c=n*n,l=c*n,f=r*r,h=f*r,d=a*a,p=d*a,m=u*c*f-4*s*h-4*e*l*f+18*e*t*n*h-27*i*f*f+256*o*p+a*(18*s*n*r-4*u*l+16*e*c*c-80*e*t*c*r-6*e*u*f+144*i*n*f)+d*(144*e*u*n-27*u*u-128*i*c-192*i*t*r);return m},o.computeRealRoots=function(t,r,o,u,s){if(Math.abs(t)<n.EPSILON15)return e.computeRealRoots(r,o,u,s);var c=r/t,l=o/t,f=u/t,h=s/t,d=0>c?1:0;switch(d+=0>l?d+1:d,d+=0>f?d+1:d,d+=0>h?d+1:d){case 0:return a(c,l,f,h);case 1:return i(c,l,f,h);case 2:return i(c,l,f,h);case 3:return a(c,l,f,h);case 4:return a(c,l,f,h);case 5:return i(c,l,f,h);case 6:return a(c,l,f,h);case 7:return a(c,l,f,h);case 8:return i(c,l,f,h);case 9:return a(c,l,f,h);case 10:return a(c,l,f,h);case 11:return i(c,l,f,h);case 12:return a(c,l,f,h);case 13:return a(c,l,f,h);case 14:return a(c,l,f,h);case 15:return a(c,l,f,h);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=function(n,r){r=e.clone(t(r,e.ZERO)),e.equals(r,e.ZERO)||e.normalize(r,r),this.origin=e.clone(t(n,e.ZERO)),this.direction=r};return r.getPoint=function(t,r,a){return n(a)||(a=new e),a=e.multiplyByScalar(t.direction,r,a),e.add(t.origin,a,a)},r}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(t,r,a,o,u){u=n(u,!1);var s,c,l,f,h,d=t.origin,p=t.direction,m=e.subtract(a,r,y),E=e.subtract(o,r,v),S=e.cross(p,E,g),O=e.dot(m,S);if(u){if(O<i.EPSILON6)return void 0;if(s=e.subtract(d,r,w),l=e.dot(s,S),0>l||l>O)return void 0;if(c=e.cross(s,m,x),f=e.dot(p,c),0>f||l+f>O)return void 0;h=e.dot(E,c)/O}else{if(Math.abs(O)<i.EPSILON6)return void 0;var T=1/O;if(s=e.subtract(d,r,w),l=e.dot(s,S)*T,0>l||l>1)return void 0;if(c=e.cross(s,m,x),f=e.dot(p,c)*T,0>f||l+f>1)return void 0;h=e.dot(E,c)*T}return h}function f(e,t,n,r){var a=t*t-4*e*n;if(0>a)return void 0;if(a>0){var i=1/(2*e),o=Math.sqrt(a),u=(-t+o)*i,s=(-t-o)*i;return s>u?(r.root0=u,r.root1=s):(r.root0=s,r.root1=u),r}var c=-t/(2*e);return 0===c?void 0:(r.root0=r.root1=c,r)}function h(t,n,a){r(a)||(a={});var i=t.origin,o=t.direction,u=n.center,s=n.radius*n.radius,c=e.subtract(i,u,g),l=e.dot(o,o),h=2*e.dot(o,c),d=e.magnitudeSquared(c)-s,p=f(l,h,d,S);return r(p)?(a.start=p.root0,a.stop=p.root1,a):void 0}function d(e,t,n){var r=e+t;return i.sign(e)!==i.sign(t)&&Math.abs(r/Math.max(Math.abs(e),Math.abs(t)))<n?0:r}function p(t,n,r,a,c){var l,f=a*a,h=c*c,p=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*h,m=c*(a*d(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],i.EPSILON15)+n.y),y=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*h+a*n.x+r,v=h*d(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],i.EPSILON15),g=c*(a*d(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+n.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(p,m,y),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(a,c*x,c*-E)),w.push(new e(a,c*x,c*E)),2===l.length){var S=l[1],O=Math.sqrt(Math.max(1-S*S,0));w.push(new e(a,c*S,c*-O)),w.push(new e(a,c*S,c*O))}return w}var T=g*g,M=v*v,_=p*p,P=g*v,b=_+M,N=2*(m*p+P),A=2*y*p+m*m-M+T,I=2*(y*m-P),C=y*y-T;if(0===b&&0===N&&0===A&&0===I)return w;l=s.computeRealRoots(b,N,A,I,C);var R=l.length;if(0===R)return w;for(var z=0;R>z;++z){var D,L=l[z],q=L*L,U=Math.max(1-q,0),B=Math.sqrt(U);D=i.sign(p)===i.sign(y)?d(p*q+y,m*L,i.EPSILON12):i.sign(y)===i.sign(m*L)?d(p*q,m*L+y,i.EPSILON12):d(p*q+m*L,y,i.EPSILON12);var F=d(v*L,g,i.EPSILON15),W=D*F;0>W?w.push(new e(a,c*L,c*B)):W>0?w.push(new e(a,c*L,c*-B)):0!==B?(w.push(new e(a,c*L,c*-B)),w.push(new e(a,c*L,c*B)),++z):w.push(new e(a,c*L,c*B))}return w}var m={};m.rayPlane=function(t,n,a){r(a)||(a=new e);var o=t.origin,u=t.direction,s=n.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON15)return void 0;var l=(-n.distance-e.dot(s,o))/c;return 0>l?void 0:(a=e.multiplyByScalar(u,l,a),e.add(o,a,a))};var y=new e,v=new e,g=new e,w=new e,x=new e;m.rayTriangle=function(t,n,a,i,o,u){var s=l(t,n,a,i,o);return!r(s)||0>s?void 0:(r(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;m.lineSegmentTriangle=function(t,n,a,i,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(n,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,a,i,o,u);return!r(f)||0>f||f>e.distance(t,n)?void 0:(r(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};m.raySphere=function(e,t,n){return n=h(e,t,n),!r(n)||n.stop<0?void 0:(n.start=Math.max(n.start,0),n)};var O=new c;m.lineSegmentSphere=function(t,n,a,i){var o=O;e.clone(t,o.origin);var u=e.subtract(n,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),i=h(o,a,i),!r(i)||i.stop<0||i.start>s?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i)};var T=new e,M=new e;m.rayEllipsoid=function(t,n){var r,a,i,o,u,s=n.oneOverRadii,c=e.multiplyComponents(s,t.origin,T),l=e.multiplyComponents(s,t.direction,M),f=e.magnitudeSquared(c),h=e.dot(c,l);if(f>1){if(h>=0)return void 0;var d=h*h;if(r=f-1,a=e.magnitudeSquared(l),i=a*r,i>d)return void 0;if(d>i){o=h*h-i,u=-h+Math.sqrt(o);var p=u/a,m=r/u;return m>p?{start:p,stop:m}:{start:m,stop:p}}var y=Math.sqrt(r/a);return{start:y,stop:y}}return 1>f?(r=f-1,a=e.magnitudeSquared(l),i=a*r,o=h*h-i,u=-h+Math.sqrt(o),{start:0,stop:u/a}):0>h?(a=e.magnitudeSquared(l),{start:0,stop:-h/a}):void 0};var _=new e,P=new e,b=new e,N=new e,A=new e,I=new o,C=new o,R=new o,z=new o,D=new o,L=new o,q=new o,U=new e,B=new e,F=new t;m.grazingAltitudeLocation=function(t,n){var a=t.origin,u=t.direction,s=n.geodeticSurfaceNormal(a,_);if(e.dot(u,s)>=0)return a;var c=r(this.rayEllipsoid(t,n)),l=n.transformPositionToScaledSpace(u,_),f=e.normalize(l,l),h=e.mostOrthogonalAxis(l,N),d=e.normalize(e.cross(h,f,P),P),m=e.normalize(e.cross(f,d,b),b),y=I;y[0]=f.x,y[1]=f.y,y[2]=f.z,y[3]=d.x,y[4]=d.y,y[5]=d.z,y[6]=m.x,y[7]=m.y,y[8]=m.z;var v=o.transpose(y,C),g=o.fromScale(n.radii,R),w=o.fromScale(n.oneOverRadii,z),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,O=o.multiply(o.multiply(v,w,L),x,L),T=o.multiply(o.multiply(O,g,q),y,q),M=o.multiplyByVector(O,a,A),W=p(T,e.negate(M,_),0,0,1),G=W.length;if(G>0){for(var k=e.clone(e.ZERO,B),V=Number.NEGATIVE_INFINITY,Y=0;G>Y;++Y){E=o.multiplyByVector(g,o.multiplyByVector(y,W[Y],U),U);var j=e.normalize(e.subtract(E,a,N),N),H=e.dot(j,u);H>V&&(V=H,k=e.clone(E,k))}var Z=n.cartesianToCartographic(k,F);return V=i.clamp(V,0,1),S=e.magnitude(e.subtract(k,a,N))*Math.sqrt(1-V*V),S=c?-S:S,Z.height=S,n.cartographicToCartesian(Z,new e)}return void 0};var W=new e;return m.lineSegmentPlane=function(t,n,a,o){r(o)||(o=new e);var u=e.subtract(n,t,W),s=a.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON6)return void 0;var l=e.dot(s,t),f=-(a.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},m.trianglePlaneIntersection=function(t,n,r,a){var i=a.normal,o=a.distance,u=e.dot(i,t)+o<0,s=e.dot(i,n)+o<0,c=e.dot(i,r)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,h;if((1===l||2===l)&&(f=new e,h=new e),1===l){if(u)return m.lineSegmentPlane(t,n,a,f),m.lineSegmentPlane(t,r,a,h),{positions:[t,n,r,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(s)return m.lineSegmentPlane(n,r,a,f),m.lineSegmentPlane(n,t,a,h),{positions:[t,n,r,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return m.lineSegmentPlane(r,t,a,f),m.lineSegmentPlane(r,n,a,h),{positions:[t,n,r,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return m.lineSegmentPlane(n,t,a,f),m.lineSegmentPlane(r,t,a,h),{positions:[t,n,r,f,h],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return m.lineSegmentPlane(r,n,a,f),m.lineSegmentPlane(t,n,a,h),{positions:[t,n,r,f,h],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return m.lineSegmentPlane(t,r,a,f),m.lineSegmentPlane(n,r,a,h),{positions:[t,n,r,f,h],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},m}),define("Core/Tipsify",["./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};return n.calculateACMR=function(n){n=e(n,e.EMPTY_OBJECT);var r=n.indices,a=n.maximumIndex,i=e(n.cacheSize,24),o=r.length;if(!t(a)){a=0;for(var u=0,s=r[u];o>u;)s>a&&(a=s),++u,s=r[u]}for(var c=[],l=0;a+1>l;l++)c[l]=0;for(var f=i+1,h=0;o>h;++h)f-c[r[h]]>i&&(c[r[h]]=f,++f);return(f-i+1)/(o/3)},n.tipsify=function(n){function r(e,t,n,r){for(;t.length>=1;){var a=t[t.length-1];if(t.splice(t.length-1,1),e[a].numLiveTriangles>0)return a}for(;r>i;){if(e[i].numLiveTriangles>0)return++i,i-1;++i}return-1}function a(e,t,n,a,i,o,u){for(var s,c=-1,l=-1,f=0;f<n.length;){var h=n[f];a[h].numLiveTriangles&&(s=0,i-a[h].timeStamp+2*a[h].numLiveTriangles<=t&&(s=i-a[h].timeStamp),(s>l||-1===l)&&(l=s,c=h)),++f}return-1===c?r(a,o,e,u):c}n=e(n,e.EMPTY_OBJECT);var i,o=n.indices,u=n.maximumIndex,s=e(n.cacheSize,24),c=o.length,l=0,f=0,h=o[f],d=c;if(t(u))l=u+1;else{for(;d>f;)h>l&&(l=h),++f,h=o[f];if(-1===l)return 0;++l}for(var p=[],m=0;l>m;m++)p[m]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};f=0;for(var y=0;d>f;)p[o[f]].vertexTriangles.push(y),++p[o[f]].numLiveTriangles,p[o[f+1]].vertexTriangles.push(y),++p[o[f+1]].numLiveTriangles,p[o[f+2]].vertexTriangles.push(y),++p[o[f+2]].numLiveTriangles,++y,f+=3;var v=0,g=s+1;i=1;var w,x,E=[],S=[],O=0,T=[],M=c/3,_=[];for(m=0;M>m;m++)_[m]=!1;for(var P,b;-1!==v;){E=[],x=p[v],b=x.vertexTriangles.length;for(var N=0;b>N;++N)if(y=x.vertexTriangles[N],!_[y]){_[y]=!0,f=y+y+y;for(var A=0;3>A;++A)P=o[f],E.push(P),S.push(P),T[O]=P,++O,w=p[P],--w.numLiveTriangles,g-w.timeStamp>s&&(w.timeStamp=g,++g),++f}v=a(o,s,E,p,g,S,l)}return T},n}),define("Core/GeometryPipeline",["./AttributeCompression","./barycentricCoordinates","./BoundingSphere","./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EncodedCartesian3","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryInstance","./GeometryType","./IndexDatatype","./Intersect","./IntersectionTests","./Math","./Matrix3","./Matrix4","./Plane","./PrimitiveType","./Tipsify"],function(e,t,n,r,a,i,o,u,s,c,l,f,h,d,p,m,y,v,g,w,x,E,S,O,T,M){"use strict";function _(e,t,n,r,a){e[t++]=n,e[t++]=r,e[t++]=r,e[t++]=a,e[t++]=a,e[t]=n}function P(e){for(var t=e.length,n=6*(t/3),r=v.createTypedArray(t,n),a=0,i=0;t>i;i+=3,a+=6)_(r,a,e[i],e[i+1],e[i+2]);return r}function b(e){var t=e.length;if(t>=3){var n=6*(t-2),r=v.createTypedArray(t,n);_(r,0,e[0],e[1],e[2]);for(var a=6,i=3;t>i;++i,a+=6)_(r,a,e[i-1],e[i],e[i-2]);return r}return new Uint16Array}function N(e){if(e.length>0){for(var t=e.length-1,n=6*(t-1),r=v.createTypedArray(t,n),a=e[0],i=0,o=1;t>o;++o,i+=6)_(r,i,a,e[o],e[o+1]);return r}return new Uint16Array}function A(e){var t={};for(var n in e)if(e.hasOwnProperty(n)&&c(e[n])&&c(e[n].values)){var r=e[n];t[n]=new p({componentDatatype:r.componentDatatype,componentsPerAttribute:r.componentsPerAttribute,normalize:r.normalize,values:[]})}return t}function I(e,t,n){for(var r in t)if(t.hasOwnProperty(r)&&c(t[r])&&c(t[r].values))for(var a=t[r],i=0;i<a.componentsPerAttribute;++i)e[r].values.push(a.values[n*a.componentsPerAttribute+i])}function C(e,t){if(c(t))for(var n=t.values,r=n.length,i=0;r>i;i+=3)a.unpack(n,i,it),S.multiplyByPoint(e,it,it),a.pack(it,n,i)}function R(e,t){if(c(t))for(var n=t.values,r=n.length,i=0;r>i;i+=3)a.unpack(n,i,it),E.multiplyByVector(e,it,it),it=a.normalize(it,it),a.pack(it,n,i)}function z(e,t){var n,r=e.length,a={},i=e[0][t].attributes;for(n in i)if(i.hasOwnProperty(n)&&c(i[n])&&c(i[n].values)){for(var o=i[n],s=o.values.length,l=!0,f=1;r>f;++f){var h=e[f][t].attributes[n];if(!c(h)||o.componentDatatype!==h.componentDatatype||o.componentsPerAttribute!==h.componentsPerAttribute||o.normalize!==h.normalize){l=!1;break}s+=h.values.length}l&&(a[n]=new p({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:u.createTypedArray(o.componentDatatype,s)}))}return a}function D(e,t){var r,i,o,u,s=e.length;e[0].modelMatrix;var l,f,h,p=c(e[0][t].indices),m=e[0][t].primitiveType,y=z(e,t);for(r in y)if(y.hasOwnProperty(r))for(l=y[r].values,u=0,i=0;s>i;++i)for(f=e[i][t].attributes[r].values,h=f.length,o=0;h>o;++o)l[u++]=f[o];var g;if(p){var w=0;for(i=0;s>i;++i)w+=e[i][t].indices.length;var x=d.computeNumberOfVertices(new d({attributes:y,primitiveType:T.POINTS})),E=v.createTypedArray(x,w),S=0,O=0;for(i=0;s>i;++i){var M=e[i][t].indices,_=M.length;for(u=0;_>u;++u)E[S++]=O+M[u];O+=d.computeNumberOfVertices(e[i][t])}g=E}var P,b=new a,N=0;for(i=0;s>i;++i){if(P=e[i][t].boundingSphere,!c(P)){b=void 0;break}a.add(P.center,b,b)}if(c(b))for(a.divideByScalar(b,s,b),i=0;s>i;++i){P=e[i][t].boundingSphere;var A=a.magnitude(a.subtract(P.center,b,st))+P.radius;A>N&&(N=A)}return new d({attributes:y,indices:g,primitiveType:m,boundingSphere:c(b)?new n(b,N):void 0})}function L(e){if(c(e.indices))return e;for(var t=d.computeNumberOfVertices(e),n=v.createTypedArray(t,t),r=0;t>r;++r)n[r]=r;return e.indices=n,e}function q(e){var t=d.computeNumberOfVertices(e),n=v.createTypedArray(t,3*(t-2));n[0]=1,n[1]=0,n[2]=2;for(var r=3,a=3;t>a;++a)n[r++]=a-1,n[r++]=0,n[r++]=a;return e.indices=n,e.primitiveType=T.TRIANGLES,e}function U(e){var t=d.computeNumberOfVertices(e),n=v.createTypedArray(t,3*(t-2));n[0]=0,n[1]=1,n[2]=2,t>3&&(n[3]=0,n[4]=2,n[5]=3);for(var r=6,a=3;t-1>a;a+=2)n[r++]=a,n[r++]=a-1,n[r++]=a+1,t>a+2&&(n[r++]=a,n[r++]=a+1,n[r++]=a+2);return e.indices=n,e.primitiveType=T.TRIANGLES,e}function B(e){if(c(e.indices))return e;for(var t=d.computeNumberOfVertices(e),n=v.createTypedArray(t,t),r=0;t>r;++r)n[r]=r;return e.indices=n,e}function F(e){var t=d.computeNumberOfVertices(e),n=v.createTypedArray(t,2*(t-1));n[0]=0,n[1]=1;for(var r=2,a=2;t>a;++a)n[r++]=a-1,n[r++]=a;return e.indices=n,e.primitiveType=T.LINES,e}function W(e){var t=d.computeNumberOfVertices(e),n=v.createTypedArray(t,2*t);n[0]=0,n[1]=1;for(var r=2,a=2;t>a;++a)n[r++]=a-1,n[r++]=a;return n[r++]=t-1,n[r]=0,e.indices=n,e.primitiveType=T.LINES,e}function G(e){switch(e.primitiveType){case T.TRIANGLE_FAN:return q(e);case T.TRIANGLE_STRIP:return U(e);case T.TRIANGLES:return L(e);case T.LINE_STRIP:return F(e);case T.LINE_LOOP:return W(e);case T.LINES:return B(e)}return e}function k(e,t){Math.abs(e.y)<x.EPSILON6&&(e.y=t?-x.EPSILON6:x.EPSILON6)}function V(e,t,n){if(0!==e.y&&0!==t.y&&0!==n.y)return k(e,e.y<0),k(t,t.y<0),k(n,n.y<0),void 0;var r,a=Math.abs(e.y),i=Math.abs(t.y),o=Math.abs(n.y);r=a>i?a>o?x.sign(e.y):x.sign(n.y):i>o?x.sign(t.y):x.sign(n.y);var u=0>r;k(e,u),k(t,u),k(n,u)}function Y(e,t,n,r){a.add(e,a.multiplyByScalar(a.subtract(t,e,xt),e.y/(e.y-t.y),xt),n),a.clone(n,r),k(n,!0),k(r,!1)}function j(e,t,n){if(e.x>=0||t.x>=0||n.x>=0)return void 0;V(e,t,n);var r=e.y<0,a=t.y<0,i=n.y<0,o=0;o+=r?1:0,o+=a?1:0,o+=i?1:0;var u=Mt.indices;1===o?(u[1]=3,u[2]=4,u[5]=6,u[7]=6,u[8]=5,r?(Y(e,t,Et,Ot),Y(e,n,St,Tt),u[0]=0,u[3]=1,u[4]=2,u[6]=1):a?(Y(t,n,Et,Ot),Y(t,e,St,Tt),u[0]=1,u[3]=2,u[4]=0,u[6]=2):i&&(Y(n,e,Et,Ot),Y(n,t,St,Tt),u[0]=2,u[3]=0,u[4]=1,u[6]=0)):2===o&&(u[2]=4,u[4]=4,u[5]=3,u[7]=5,u[8]=6,r?a?i||(Y(n,e,Et,Ot),Y(n,t,St,Tt),u[0]=0,u[1]=1,u[3]=0,u[6]=2):(Y(t,n,Et,Ot),Y(t,e,St,Tt),u[0]=2,u[1]=0,u[3]=2,u[6]=1):(Y(e,t,Et,Ot),Y(e,n,St,Tt),u[0]=1,u[1]=2,u[3]=1,u[6]=0));var s=Mt.positions;return s[0]=e,s[1]=t,s[2]=n,s.length=3,(1===o||2===o)&&(s[3]=Et,s[4]=St,s[5]=Ot,s[6]=Tt,s.length=7),Mt}function H(e,t){var r=e.attributes;if(0===r.position.values.length)return void 0;for(var a in r)if(r.hasOwnProperty(a)&&c(r[a])&&c(r[a].values)){var i=r[a];i.values=u.createTypedArray(i.componentDatatype,i.values)}var o=d.computeNumberOfVertices(e);return e.indices=v.createTypedArray(o,e.indices),t&&(e.boundingSphere=n.fromVertices(r.position.values)),e}function Z(e){var t=e.attributes,n={};for(var r in t)if(t.hasOwnProperty(r)&&c(t[r])&&c(t[r].values)){var a=t[r];n[r]=new p({componentDatatype:a.componentDatatype,componentsPerAttribute:a.componentsPerAttribute,normalize:a.normalize,values:[]})}return new d({attributes:n,indices:[],primitiveType:e.primitiveType})}function X(e,t,n){var r=c(e.geometry.boundingSphere);t=H(t,r),n=H(n,r),c(n)&&!c(t)?e.geometry=n:!c(n)&&c(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=n,e.geometry=void 0)}function J(e,n,i,o,u,s,l,f,h,d,p){if(c(s)||c(l)||c(f)||c(h)){var m=a.fromArray(u,3*e,_t),y=a.fromArray(u,3*n,Pt),v=a.fromArray(u,3*i,bt),g=t(o,m,y,v,Nt);if(c(s)){var w=a.fromArray(s,3*e,_t),x=a.fromArray(s,3*n,Pt),E=a.fromArray(s,3*i,bt);a.multiplyByScalar(w,g.x,w),a.multiplyByScalar(x,g.y,x),a.multiplyByScalar(E,g.z,E);var S=a.add(w,x,w);a.add(S,E,S),a.normalize(S,S),a.pack(S,d.normal.values,3*p)}if(c(l)){var O=a.fromArray(l,3*e,_t),T=a.fromArray(l,3*n,Pt),M=a.fromArray(l,3*i,bt);a.multiplyByScalar(O,g.x,O),a.multiplyByScalar(T,g.y,T),a.multiplyByScalar(M,g.z,M);var _=a.add(O,T,O);a.add(_,M,_),a.normalize(_,_),a.pack(_,d.binormal.values,3*p)}if(c(f)){var P=a.fromArray(f,3*e,_t),b=a.fromArray(f,3*n,Pt),N=a.fromArray(f,3*i,bt);a.multiplyByScalar(P,g.x,P),a.multiplyByScalar(b,g.y,b),a.multiplyByScalar(N,g.z,N);var A=a.add(P,b,P);a.add(A,N,A),a.normalize(A,A),a.pack(A,d.tangent.values,3*p)}if(c(h)){var I=r.fromArray(h,2*e,At),C=r.fromArray(h,2*n,It),R=r.fromArray(h,2*i,Ct);r.multiplyByScalar(I,g.x,I),r.multiplyByScalar(C,g.y,C),r.multiplyByScalar(R,g.z,R);var z=r.add(I,C,I);r.add(z,R,z),r.pack(z,d.st.values,2*p)}}}function K(e,t,n,r,a,i){var o=e.position.values.length/3;if(-1!==a){var u=r[a],s=n[u];return-1===s?(n[u]=o,e.position.values.push(i.x,i.y,i.z),t.push(o),o):(t.push(s),s)}return e.position.values.push(i.x,i.y,i.z),t.push(o),o}function Q(e){var t,n,r,i,o,u=e.geometry,s=u.attributes,l=s.position.values,f=c(s.normal)?s.normal.values:void 0,h=c(s.binormal)?s.binormal.values:void 0,d=c(s.tangent)?s.tangent.values:void 0,p=c(s.st)?s.st.values:void 0,m=u.indices,y=Z(u),v=Z(u),g=[];g.length=l.length/3;var w=[];for(w.length=l.length/3,o=0;o<g.length;++o)g[o]=-1,w[o]=-1;var x=m.length;for(o=0;x>o;o+=3){var E=m[o],S=m[o+1],O=m[o+2],T=a.fromArray(l,3*E),M=a.fromArray(l,3*S),_=a.fromArray(l,3*O),P=j(T,M,_);if(c(P)&&P.positions.length>3)for(var b=P.positions,N=P.indices,A=N.length,I=0;A>I;++I){var C=N[I],R=b[C];R.y<0?(t=v.attributes,n=v.indices,r=g):(t=y.attributes,n=y.indices,r=w),i=K(t,n,r,m,3>C?o+C:-1,R),J(E,S,O,R,l,f,h,d,p,t,i)}else c(P)&&(T=P.positions[0],M=P.positions[1],_=P.positions[2]),T.y<0?(t=v.attributes,n=v.indices,r=g):(t=y.attributes,n=y.indices,r=w),i=K(t,n,r,m,o,T),J(E,S,O,T,l,f,h,d,p,t,i),i=K(t,n,r,m,o+1,M),J(E,S,O,M,l,f,h,d,p,t,i),i=K(t,n,r,m,o+2,_),J(E,S,O,_,l,f,h,d,p,t,i)}X(e,v,y)}function $(e){var t,n=e.geometry,r=n.attributes,i=r.position.values,o=n.indices,u=Z(n),s=Z(n),l=o.length,f=[];f.length=i.length/3;var h=[];for(h.length=i.length/3,t=0;t<f.length;++t)f[t]=-1,h[t]=-1;for(t=0;l>t;t+=2){var d=o[t],p=o[t+1],m=a.fromArray(i,3*d,_t),y=a.fromArray(i,3*p,Pt);Math.abs(m.y)<x.EPSILON6&&(m.y=m.y<0?-x.EPSILON6:x.EPSILON6),Math.abs(y.y)<x.EPSILON6&&(y.y=y.y<0?-x.EPSILON6:x.EPSILON6);var v=u.attributes,g=u.indices,E=h,S=s.attributes,O=s.indices,T=f,M=w.lineSegmentPlane(m,y,Rt,bt);if(c(M)){var _=a.multiplyByScalar(a.UNIT_Y,5*x.EPSILON9,zt);m.y<0&&(a.negate(_,_),v=s.attributes,g=s.indices,E=f,S=u.attributes,O=u.indices,T=h);var P=a.add(M,_,Dt);K(v,g,E,o,t,m),K(v,g,E,o,-1,P),a.negate(_,_),a.add(M,_,P),K(S,O,T,o,-1,P),K(S,O,T,o,t+1,y)}else{var b,N,A;m.y<0?(b=s.attributes,N=s.indices,A=f):(b=u.attributes,N=u.indices,A=h),K(b,N,A,o,t,m),K(b,N,A,o,t+1,y)}}X(e,s,u)}function et(e){var t=e.geometry,n=t.attributes,o=n.position.values,u=n.prevPosition.values,s=n.nextPosition.values,l=n.expandAndWidth.values;t.indices;var f,h,d,p=c(n.st)?n.st.values:void 0,m=c(n.color)?n.color.values:void 0,y=Z(t),v=Z(t),g=o.length/3;for(f=0;g>f;f+=4){var E=f,S=f+1,O=f+2,T=f+3,M=a.fromArray(o,3*E,Ut),_=a.fromArray(o,3*S,Bt),P=a.fromArray(o,3*O,Ft),b=a.fromArray(o,3*T,Wt);Math.abs(M.y)<x.EPSILON6&&(M.y=x.EPSILON6*(P.y<0?-1:1),_.y=M.y),Math.abs(P.y)<x.EPSILON6&&(P.y=x.EPSILON6*(M.y<0?-1:1),b.y=P.y);var N=y.attributes,A=y.indices,I=v.attributes,C=v.indices,R=w.lineSegmentPlane(M,P,Rt,Gt);if(c(R)){var z=a.multiplyByScalar(a.UNIT_Y,5*x.EPSILON9,kt);M.y<0&&(a.negate(z,z),N=v.attributes,A=v.indices,I=y.attributes,C=y.indices);var D=a.add(R,z,Vt);for(N.position.values.push(M.x,M.y,M.z,_.x,_.y,_.z),N.position.values.push(D.x,D.y,D.z),N.position.values.push(D.x,D.y,D.z),a.negate(z,z),a.add(R,z,D),I.position.values.push(D.x,D.y,D.z),I.position.values.push(D.x,D.y,D.z),I.position.values.push(P.x,P.y,P.z,b.x,b.y,b.z),h=3*E;3*E+6>h;++h)N.prevPosition.values.push(u[h]);for(N.prevPosition.values.push(M.x,M.y,M.z,M.x,M.y,M.z),I.prevPosition.values.push(M.x,M.y,M.z,M.x,M.y,M.z),h=3*O;3*O+6>h;++h)I.prevPosition.values.push(u[h]);for(h=3*E;3*E+6>h;++h)N.nextPosition.values.push(s[h]);for(N.nextPosition.values.push(P.x,P.y,P.z,P.x,P.y,P.z),I.nextPosition.values.push(P.x,P.y,P.z,P.x,P.y,P.z),h=3*O;3*O+6>h;++h)I.nextPosition.values.push(s[h]);var L=r.fromArray(l,2*E,Lt),q=Math.abs(L.y);N.expandAndWidth.values.push(-1,q,1,q),N.expandAndWidth.values.push(-1,-q,1,-q),I.expandAndWidth.values.push(-1,q,1,q),I.expandAndWidth.values.push(-1,-q,1,-q);var U=a.magnitudeSquared(a.subtract(R,M,Wt));if(U/=a.magnitudeSquared(a.subtract(P,M,Wt)),c(m)){var B=i.fromArray(m,4*E,Yt),F=i.fromArray(m,4*O,Yt),W=x.lerp(B.x,F.x,U),G=x.lerp(B.y,F.y,U),k=x.lerp(B.z,F.z,U),V=x.lerp(B.w,F.w,U);for(h=4*E;4*E+8>h;++h)N.color.values.push(m[h]);for(N.color.values.push(W,G,k,V),N.color.values.push(W,G,k,V),I.color.values.push(W,G,k,V),I.color.values.push(W,G,k,V),h=4*O;4*O+8>h;++h)I.color.values.push(m[h])}if(c(p)){var Y=r.fromArray(p,2*E,Lt),j=r.fromArray(p,2*(f+3),qt),H=x.lerp(Y.x,j.x,U);for(h=2*E;2*E+4>h;++h)N.st.values.push(p[h]);for(N.st.values.push(H,Y.y),N.st.values.push(H,j.y),I.st.values.push(H,Y.y),I.st.values.push(H,j.y),h=2*O;2*O+4>h;++h)I.st.values.push(p[h])}d=N.position.values.length/3-4,A.push(d,d+2,d+1),A.push(d+1,d+2,d+3),d=I.position.values.length/3-4,C.push(d,d+2,d+1),C.push(d+1,d+2,d+3) +}else{var J,K;for(M.y<0?(J=v.attributes,K=v.indices):(J=y.attributes,K=y.indices),J.position.values.push(M.x,M.y,M.z),J.position.values.push(_.x,_.y,_.z),J.position.values.push(P.x,P.y,P.z),J.position.values.push(b.x,b.y,b.z),h=3*f;3*f+12>h;++h)J.prevPosition.values.push(u[h]),J.nextPosition.values.push(s[h]);for(h=2*f;2*f+8>h;++h)J.expandAndWidth.values.push(l[h]),c(p)&&J.st.values.push(p[h]);if(c(m))for(h=4*f;4*f+16>h;++h)J.color.values.push(m[h]);d=J.position.values.length/3-4,K.push(d,d+2,d+1),K.push(d+1,d+2,d+3)}}X(e,v,y)}var tt={};tt.toWireframe=function(e){var t=e.indices;if(c(t)){switch(e.primitiveType){case T.TRIANGLES:e.indices=P(t);break;case T.TRIANGLE_STRIP:e.indices=b(t);break;case T.TRIANGLE_FAN:e.indices=N(t);break;default:throw new l("geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.")}e.primitiveType=T.LINES}return e},tt.createLineSegmentsForVectors=function(e,t,r){t=s(t,"normal"),r=s(r,1e4);for(var a=e.attributes.position.values,i=e.attributes[t].values,o=a.length,l=new Float64Array(2*o),f=0,h=0;o>h;h+=3)l[f++]=a[h],l[f++]=a[h+1],l[f++]=a[h+2],l[f++]=a[h]+i[h]*r,l[f++]=a[h+1]+i[h+1]*r,l[f++]=a[h+2]+i[h+2]*r;var m,y=e.boundingSphere;return c(y)&&(m=new n(y.center,y.radius+r)),new d({attributes:{position:new p({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:l})},primitiveType:T.LINES,boundingSphere:m})},tt.createAttributeLocations=function(e){var t,n=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","binormal","tangent","compressedAttributes"],r=e.attributes,a={},i=0,o=n.length;for(t=0;o>t;++t){var u=n[t];c(r[u])&&(a[u]=i++)}for(var s in r)r.hasOwnProperty(s)&&!c(a[s])&&(a[s]=i++);return a},tt.reorderForPreVertexCache=function(e){var t=d.computeNumberOfVertices(e),n=e.indices;if(c(n)){for(var r=new Int32Array(t),a=0;t>a;a++)r[a]=-1;for(var i,o=n,s=o.length,l=v.createTypedArray(t,s),f=0,h=0,p=0;s>f;)i=r[o[f]],-1!==i?l[h]=i:(i=o[f],r[i]=p,l[h]=p,++p),++f,++h;e.indices=l;var m=e.attributes;for(var y in m)if(m.hasOwnProperty(y)&&c(m[y])&&c(m[y].values)){for(var g=m[y],w=g.values,x=0,E=g.componentsPerAttribute,S=u.createTypedArray(g.componentDatatype,p*E);t>x;){var O=r[x];if(-1!==O)for(a=0;E>a;a++)S[E*O+a]=w[E*x+a];++x}g.values=S}}return e},tt.reorderForPostVertexCache=function(e,t){var n=e.indices;if(e.primitiveType===T.TRIANGLES&&c(n)){for(var r=n.length,a=0,i=0;r>i;i++)n[i]>a&&(a=n[i]);e.indices=M.tipsify({indices:n,maximumIndex:a,cacheSize:t})}return e},tt.fitToUnsignedShortIndices=function(e){var t=[],n=d.computeNumberOfVertices(e);if(c(e.indices)&&n>x.SIXTY_FOUR_KILOBYTES){var r,a=[],i=[],o=0,u=A(e.attributes),s=e.indices,l=s.length;e.primitiveType===T.TRIANGLES?r=3:e.primitiveType===T.LINES?r=2:e.primitiveType===T.POINTS&&(r=1);for(var f=0;l>f;f+=r){for(var h=0;r>h;++h){var p=s[f+h],m=a[p];c(m)||(m=o++,a[p]=m,I(u,e.attributes,p)),i.push(m)}o+r>x.SIXTY_FOUR_KILOBYTES&&(t.push(new d({attributes:u,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),a=[],i=[],o=0,u=A(e.attributes))}0!==i.length&&t.push(new d({attributes:u,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var nt=new a,rt=new o;tt.projectTo2D=function(e,t,n,r,i){var o=e.attributes[t];i=c(i)?i:new h;for(var s=i.ellipsoid,f=o.values,d=new Float64Array(f.length),m=0,y=0;y<f.length;y+=3){var v=a.fromArray(f,y,nt),g=s.cartesianToCartographic(v,rt);if(!c(g))throw new l("Could not project point ("+v.x+", "+v.y+", "+v.z+") to 2D.");var w=i.project(g,nt);d[m++]=w.x,d[m++]=w.y,d[m++]=w.z}return e.attributes[n]=o,e.attributes[r]=new p({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:d}),delete e.attributes[t],e};var at={high:0,low:0};tt.encodeAttribute=function(e,t,n,r){for(var a=e.attributes[t],i=a.values,o=i.length,s=new Float32Array(o),c=new Float32Array(o),l=0;o>l;++l)f.encode(i[l],at),s[l]=at.high,c[l]=at.low;var h=a.componentsPerAttribute;return e.attributes[n]=new p({componentDatatype:u.FLOAT,componentsPerAttribute:h,values:s}),e.attributes[r]=new p({componentDatatype:u.FLOAT,componentsPerAttribute:h,values:c}),delete e.attributes[t],e};var it=new a,ot=new S,ut=new E;tt.transformToWorldCoordinates=function(e){var t=e.modelMatrix;if(S.equals(t,S.IDENTITY))return e;var r=e.geometry.attributes;C(t,r.position),C(t,r.prevPosition),C(t,r.nextPosition),(c(r.normal)||c(r.binormal)||c(r.tangent))&&(S.inverse(t,ot),S.transpose(ot,ot),S.getRotation(ot,ut),R(ut,r.normal),R(ut,r.binormal),R(ut,r.tangent));var a=e.geometry.boundingSphere;return c(a)&&(e.geometry.boundingSphere=n.transform(a,t,a)),e.modelMatrix=S.clone(S.IDENTITY),e};var st=new a;tt.combineInstances=function(e){for(var t=[],n=[],r=e.length,a=0;r>a;++a){var i=e[a];c(i.geometry)?t.push(i):n.push(i)}var o=[];return t.length>0&&o.push(D(t,"geometry")),n.length>0&&(o.push(D(n,"westHemisphereGeometry")),o.push(D(n,"eastHemisphereGeometry"))),o};var ct=new a,lt=new a,ft=new a,ht=new a;tt.computeNormal=function(e){for(var t=e.indices,n=e.attributes,r=n.position.values,i=n.position.values.length/3,o=t.length,s=new Array(i),c=new Array(o/3),l=new Array(o),f=0;i>f;f++)s[f]={indexOffset:0,count:0,currentCount:0};var h=0;for(f=0;o>f;f+=3){var d=t[f],m=t[f+1],y=t[f+2],v=3*d,g=3*m,w=3*y;lt.x=r[v],lt.y=r[v+1],lt.z=r[v+2],ft.x=r[g],ft.y=r[g+1],ft.z=r[g+2],ht.x=r[w],ht.y=r[w+1],ht.z=r[w+2],s[d].count++,s[m].count++,s[y].count++,a.subtract(ft,lt,ft),a.subtract(ht,lt,ht),c[h]=a.cross(ft,ht,new a),h++}var x=0;for(f=0;i>f;f++)s[f].indexOffset+=x,x+=s[f].count;h=0;var E;for(f=0;o>f;f+=3){E=s[t[f]];var S=E.indexOffset+E.currentCount;l[S]=h,E.currentCount++,E=s[t[f+1]],S=E.indexOffset+E.currentCount,l[S]=h,E.currentCount++,E=s[t[f+2]],S=E.indexOffset+E.currentCount,l[S]=h,E.currentCount++,h++}var O=new Float32Array(3*i);for(f=0;i>f;f++){var T=3*f;if(E=s[f],E.count>0){for(a.clone(a.ZERO,ct),h=0;h<E.count;h++)a.add(ct,c[l[E.indexOffset+h]],ct);a.normalize(ct,ct),O[T]=ct.x,O[T+1]=ct.y,O[T+2]=ct.z}else O[T]=0,O[T+1]=0,O[T+2]=1}return e.attributes.normal=new p({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:O}),e};var dt=new a,pt=new a,mt=new a;tt.computeBinormalAndTangent=function(e){e.attributes;for(var t=e.indices,n=e.attributes.position.values,r=e.attributes.normal.values,i=e.attributes.st.values,o=e.attributes.position.values.length/3,s=t.length,c=new Array(3*o),l=0;l<c.length;l++)c[l]=0;var f,h,d;for(l=0;s>l;l+=3){var m=t[l],y=t[l+1],v=t[l+2];f=3*m,h=3*y,d=3*v;var g=2*m,w=2*y,x=2*v,E=n[f],S=n[f+1],O=n[f+2],T=i[g],M=i[g+1],_=i[w+1]-M,P=i[x+1]-M,b=1/((i[w]-T)*P-(i[x]-T)*_),N=(P*(n[h]-E)-_*(n[d]-E))*b,A=(P*(n[h+1]-S)-_*(n[d+1]-S))*b,I=(P*(n[h+2]-O)-_*(n[d+2]-O))*b;c[f]+=N,c[f+1]+=A,c[f+2]+=I,c[h]+=N,c[h+1]+=A,c[h+2]+=I,c[d]+=N,c[d+1]+=A,c[d+2]+=I}var C=new Float32Array(3*o),R=new Float32Array(3*o);for(l=0;o>l;l++){f=3*l,h=f+1,d=f+2;var z=a.fromArray(r,f,dt),D=a.fromArray(c,f,mt),L=a.dot(z,D);a.multiplyByScalar(z,L,pt),a.normalize(a.subtract(D,pt,D),D),R[f]=D.x,R[h]=D.y,R[d]=D.z,a.normalize(a.cross(z,D,D),D),C[f]=D.x,C[h]=D.y,C[d]=D.z}return e.attributes.tangent=new p({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:R}),e.attributes.binormal=new p({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:C}),e};var yt=new r,vt=new a,gt=new a,wt=new a;tt.compressVertices=function(t){var n=t.attributes.normal,i=t.attributes.st;if(!c(n)&&!c(i))return t;var o,s,l,f,h=t.attributes.tangent,d=t.attributes.binormal;c(n)&&(o=n.values),c(i)&&(s=i.values),c(h)&&(l=h.values),d&&(f=d.values);var m=c(o)?o.length:s.length,y=c(o)?3:2,v=m/y,g=v,w=c(s)&&c(o)?2:1;w+=c(l)||c(f)?1:0,g*=w;for(var x=new Float32Array(g),E=0,S=0;v>S;++S){c(s)&&(r.fromArray(s,2*S,yt),x[E++]=e.compressTextureCoordinates(yt));var O=3*S;c(o)&&c(l)&&c(f)?(a.fromArray(o,O,vt),a.fromArray(l,O,gt),a.fromArray(f,O,wt),e.octPack(vt,gt,wt,yt),x[E++]=yt.x,x[E++]=yt.y):(c(o)&&(a.fromArray(o,O,vt),x[E++]=e.octEncodeFloat(vt)),c(l)&&(a.fromArray(l,O,vt),x[E++]=e.octEncodeFloat(vt)),c(f)&&(a.fromArray(f,O,vt),x[E++]=e.octEncodeFloat(vt)))}return t.attributes.compressedAttributes=new p({componentDatatype:u.FLOAT,componentsPerAttribute:w,values:x}),c(o)&&delete t.attributes.normal,c(s)&&delete t.attributes.st,c(l)&&delete t.attributes.tangent,c(f)&&delete t.attributes.binormal,t};var xt=new a,Et=new a,St=new a,Ot=new a,Tt=new a,Mt={positions:new Array(7),indices:new Array(9)},_t=new a,Pt=new a,bt=new a,Nt=new a,At=new r,It=new r,Ct=new r,Rt=O.fromPointNormal(a.ZERO,a.UNIT_Y),zt=new a,Dt=new a,Lt=new r,qt=new r,Ut=new a,Bt=new a,Ft=new a,Wt=new a,Gt=new a,kt=new a,Vt=new a,Yt=new i;return new i,tt.splitLongitude=function(e){var t=e.geometry,r=t.boundingSphere;if(c(r)){var a=r.center.x-r.radius;if(a>0||n.intersectPlane(r,O.ORIGIN_ZX_PLANE)!==g.INTERSECTING)return e}if(t.geometryType!==y.NONE)switch(t.geometryType){case y.POLYLINES:et(e);break;case y.TRIANGLES:Q(e);break;case y.LINES:$(e)}else G(t),t.primitiveType===T.TRIANGLES?Q(e):t.primitiveType===T.LINES&&$(e);return e},tt}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,n,r,a,i,o){"use strict";var u=function(r,a,i){this.minimum=e.clone(t(r,e.ZERO)),this.maximum=e.clone(t(a,e.ZERO)),n(i)?i=e.clone(i):(i=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(i,.5,i)),this.center=i};u.fromPoints=function(t,r){if(n(r)||(r=new u),!n(t)||0===t.length)return r.minimum=e.clone(e.ZERO,r.minimum),r.maximum=e.clone(e.ZERO,r.maximum),r.center=e.clone(e.ZERO,r.center),r;for(var a=t[0].x,i=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,f=t.length,h=1;f>h;h++){var d=t[h],p=d.x,m=d.y,y=d.z;a=Math.min(p,a),s=Math.max(p,s),i=Math.min(m,i),c=Math.max(m,c),o=Math.min(y,o),l=Math.max(y,l)}var v=r.minimum;v.x=a,v.y=i,v.z=o;var g=r.maximum;g.x=s,g.y=c,g.z=l;var w=e.add(v,g,r.center);return e.multiplyByScalar(w,.5,w),r},u.clone=function(t,r){return n(t)?n(r)?(r.minimum=e.clone(t.minimum,r.minimum),r.maximum=e.clone(t.maximum,r.maximum),r.center=e.clone(t.center,r.center),r):new u(t.minimum,t.maximum):void 0},u.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&e.equals(t.minimum,r.minimum)&&e.equals(t.maximum,r.maximum)};var s=new e;u.intersectPlane=function(t,n){s=e.subtract(t.maximum,t.minimum,s);var r=e.multiplyByScalar(s,.5,s),a=n.normal,o=r.x*Math.abs(a.x)+r.y*Math.abs(a.y)+r.z*Math.abs(a.z),u=e.dot(t.center,a)+n.distance;return u-o>0?i.INSIDE:0>u+o?i.OUTSIDE:i.INTERSECTING};var c=new o(new e,0);return u.intersect=function(e,t){r("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var n=o.fromCartesian4(t,c);return u.intersectPlane(e,n)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,n,r,a){return t(e).then(n,r,a)}function t(e){var t,n;return e instanceof r?t=e:u(e)?(n=o(),e.then(function(e){n.resolve(e)},function(e){n.reject(e)},function(e){n.progress(e)}),t=n.promise):t=a(e),t}function n(t){return e(t,i)}function r(e){this.then=e}function a(e){var n=new r(function(n){try{return t(n?n(e):e)}catch(r){return i(r)}});return n}function i(e){var n=new r(function(n,r){try{return r?t(r(e)):i(e)}catch(a){return i(a)}});return n}function o(){function e(e,t,n){return h(e,t,n)}function n(e){return p(e)}function a(e){return p(i(e))}function u(e){return d(e)}var s,c,l,f,h,d,p;return c=new r(e),s={then:e,resolve:n,reject:a,progress:u,promise:c,resolver:{resolve:n,reject:a,progress:u}},l=[],f=[],h=function(e,t,n){var r,a;return r=o(),a="function"==typeof n?function(e){try{r.progress(n(e))}catch(t){r.progress(t)}}:function(e){r.progress(e)},l.push(function(n){n.then(e,t).then(r.resolve,r.reject,a)}),f.push(a),r.promise},d=function(e){return m(f,e),e},p=function(e){return e=t(e),h=e.then,p=t,d=v,m(l,e),f=l=E,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,n,r,a,i){return y(2,arguments),e(t,function(t){function u(e){m(e)}function s(e){p(e)}var c,l,f,h,d,p,m,y,g,w;if(g=t.length>>>0,c=Math.max(0,Math.min(n,g)),f=[],l=g-c+1,h=[],d=o(),c)for(y=d.progress,m=function(e){h.push(e),--l||(p=m=v,d.reject(h))},p=function(e){f.push(e),--c||(p=m=v,d.resolve(f))},w=0;g>w;++w)w in t&&e(t[w],s,u,y);else d.resolve(f);return d.then(r,a,i)})}function c(e,t,n,r){function a(e){return t?t(e[0]):e[0]}return s(e,1,a,n,r)}function l(e,t,n,r){return y(1,arguments),h(e,g).then(t,n,r)}function f(){return h(arguments,g)}function h(t,n){return e(t,function(t){var r,a,i,u,s,c;if(i=a=t.length>>>0,r=[],c=o(),i)for(u=function(t,a){e(t,n).then(function(e){r[a]=e,--i||c.resolve(r)},c.reject)},s=0;a>s;s++)s in t?u(t[s],s):--i;else c.resolve(r);return c.promise})}function d(t,n){var r=x.call(arguments,1);return e(t,function(t){var a;return a=t.length,r[0]=function(t,r,i){return e(t,function(t){return e(r,function(e){return n(t,e,i,a)})})},w.apply(t,r)})}function p(t,n,r){var a=arguments.length>2;return e(t,function(e){return e=a?r:e,n.resolve(e),e},function(e){return n.reject(e),i(e)},n.progress)}function m(e,t){for(var n,r=0;n=e[r++];)n(t)}function y(e,t){for(var n,r=t.length;r>e;)if(n=t[--r],null!=n&&"function"!=typeof n)throw new Error("arg "+r+" must be a function")}function v(){}function g(e){return e}var w,x,E;return e.defer=o,e.resolve=t,e.reject=n,e.join=f,e.all=l,e.map=h,e.reduce=d,e.any=c,e.some=s,e.chain=p,e.isPromise=u,r.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(E,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(E,t)})})}},x=[].slice,w=[].reduce||function(e){var t,n,r,a,i;if(i=0,t=Object(this),a=t.length>>>0,n=arguments,n.length<=1)for(;;){if(i in t){r=t[i++];break}if(++i>=a)throw new TypeError}else r=n[1];for(;a>i;++i)i in t&&(r=e(r,t[i],i,t));return r},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,n){for(var r,a,i=0,o=e.length-1;o>=i;)if(r=~~((i+o)/2),a=n(e[r],t),0>a)i=r+1;else{if(!(a>0))return r;o=r-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,n,r,a){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=r,this.ut1MinusUtc=a};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,n=0,r=t[n++],a=function(e,t,n,r){n||(n=" ");var a=e.length>=t?"":Array(1+t-e.length>>>0).join(n);return r?e+a:a+e},i=function(e,t,n,r,i,o){var u=r-e.length;return u>0&&(e=n||!i?a(e,r,o,n):e.slice(0,t.length)+a("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,n,r,o,u,s){var c=e>>>0;return n=n&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=n+a(c.toString(t),u||0,"0",!1),i(e,n,r,o,s)},u=function(e,t,n,r,a,o){return null!=r&&(e=e.slice(0,r)),i(e,"",t,n,a,o)},s=function(e,r,s,c,l,f,h){var d,p,m,y,v;if("%%"==e)return"%";for(var g=!1,w="",x=!1,E=!1,S=" ",O=s.length,T=0;s&&O>T;T++)switch(s.charAt(T)){case" ":w=" ";break;case"+":w="+";break;case"-":g=!0;break;case"'":S=s.charAt(T+1);break;case"0":x=!0;break;case"#":E=!0}if(c=c?"*"==c?+t[n++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,g=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(f=f?"*"==f?+t[n++]:"*"==f.charAt(0)?+t[f.slice(1,-1)]:+f:"fFeE".indexOf(h)>-1?6:"d"==h?0:void 0,v=r?t[r.slice(0,-1)]:t[n++],h){case"s":return u(String(v),g,c,f,x,S);case"c":return u(String.fromCharCode(+v),g,c,f,x);case"b":return o(v,2,E,g,c,f,x);case"o":return o(v,8,E,g,c,f,x);case"x":return o(v,16,E,g,c,f,x);case"X":return o(v,16,E,g,c,f,x).toUpperCase();case"u":return o(v,10,E,g,c,f,x);case"i":case"d":return d=+v||0,d=Math.round(d-d%1),p=0>d?"-":w,v=p+a(String(Math.abs(d)),f,"0",!1),i(v,p,g,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return d=+v,p=0>d?"-":w,m=["toExponential","toFixed","toPrecision"]["efg".indexOf(h.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(h)%2],v=p+Math.abs(d)[m](f),i(v,p,g,c,x)[y]();default:return e}};return r.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,n,r,a,i,o,u){this.year=e,this.month=t,this.day=n,this.hour=r,this.minute=a,this.second=i,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(e,t){return N.compare(e.julianDate,t.julianDate)}function f(e){g.julianDate=e;var n=N.leapSeconds,r=t(n,g,l);0>r&&(r=~r),r>=n.length&&(r=n.length-1);var a=n[r].offset;if(r>0){var i=N.secondsDifference(n[r].julianDate,e);i>a&&(r--,a=n[r].offset)}N.addSeconds(e,a,e)}function h(e,n){g.julianDate=e;var r=N.leapSeconds,a=t(r,g,l);if(0>a&&(a=~a),0===a)return N.addSeconds(e,-r[0].offset,n);if(a>=r.length)return N.addSeconds(e,-r[a-1].offset,n);var i=N.secondsDifference(r[a].julianDate,e);return 0===i?N.addSeconds(e,-r[a].offset,n):1>=i?void 0:N.addSeconds(e,-r[--a].offset,n)}function d(e,t,n){var r=0|t/s.SECONDS_PER_DAY;return e+=r,t-=s.SECONDS_PER_DAY*r,0>t&&(e--,t+=s.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function p(e,t,n,r,a,i,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+n-32075;r-=12,0>r&&(r+=24);var f=i+(r*s.SECONDS_PER_HOUR+a*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return f>=43200&&(l-=1),[l,f]}var m=new i,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,g=new u,w=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,E=/^(\d{4})-?(\d{3})$/,S=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,O=/^(\d{4})-?(\d{2})-?(\d{2})$/,T=/([Z+\-])?(\d{2})?:?(\d{2})?$/,M=/^(\d{2})(\.\d+)?/.source+T.source,_=/^(\d{2}):?(\d{2})(\.\d+)?/.source+T.source,P=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+T.source,b="Invalid ISO 8601 date.",N=function(e,t,r){this.dayNumber=void 0,this.secondsOfDay=void 0,e=n(e,0),t=n(t,0),r=n(r,c.UTC);var a=0|e;t+=(e-a)*s.SECONDS_PER_DAY,d(a,t,this),r===c.UTC&&f(this)};N.fromDate=function(e,t){var n=p(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return r(t)?(d(n[0],n[1],t),f(t),t):new N(n[0],n[1],c.UTC)},N.fromIso8601=function(e,t){e=e.replace(",",".");var n,i,u,s=e.split("T"),l=1,h=1,m=0,g=0,T=0,A=0,I=s[0],C=s[1];if(!r(I))throw new a(b);var R;if(s=I.match(O),null!==s){if(R=I.split("-").length-1,R>0&&2!==R)throw new a(b);n=+s[1],l=+s[2],h=+s[3]}else if(s=I.match(x),null!==s)n=+s[1],l=+s[2];else if(s=I.match(w),null!==s)n=+s[1];else{var z;if(s=I.match(E),null!==s){if(n=+s[1],z=+s[2],u=o(n),1>z||u&&z>366||!u&&z>365)throw new a(b)}else{if(s=I.match(S),null===s)throw new a(b);n=+s[1];var D=+s[2],L=+s[3]||0;if(R=I.split("-").length-1,R>0&&(!r(s[3])&&1!==R||r(s[3])&&2!==R))throw new a(b);var q=new Date(Date.UTC(n,0,4));z=7*D+L-q.getUTCDay()-3}i=new Date(Date.UTC(n,0,1)),i.setUTCDate(z),l=i.getUTCMonth()+1,h=i.getUTCDate()}if(u=o(n),1>l||l>12||1>h||(2!==l||!u)&&h>y[l-1]||u&&2===l&&h>v)throw new a(b);var U;if(r(C)){if(s=C.match(P),null!==s){if(R=C.split(":").length-1,R>0&&2!==R&&3!==R)throw new a(b);m=+s[1],g=+s[2],T=+s[3],A=1e3*+(s[4]||0),U=5}else if(s=C.match(_),null!==s){if(R=C.split(":").length-1,R>0&&1!==R)throw new a(b);m=+s[1],g=+s[2],T=60*+(s[3]||0),U=4}else{if(s=C.match(M),null===s)throw new a(b);m=+s[1],g=60*+(s[2]||0),U=3}if(g>=60||T>=61||m>24||24===m&&(g>0||T>0||A>0))throw new a(b);var B=s[U],F=+s[U+1],W=+(s[U+2]||0);switch(B){case"+":m-=F,g-=W;break;case"-":m+=F,g+=W;break;case"Z":break;default:g+=new Date(Date.UTC(n,l-1,h,m,g)).getTimezoneOffset()}}else g+=new Date(n,l-1,h).getTimezoneOffset();var G=60===T;for(G&&T--;g>=60;)g-=60,m++;for(;m>=24;)m-=24,h++;for(i=u&&2===l?v:y[l-1];h>i;)h-=i,l++,l>12&&(l-=12,n++),i=u&&2===l?v:y[l-1];for(;0>g;)g+=60,m--;for(;0>m;)m+=24,h--;for(;1>h;)l--,1>l&&(l+=12,n--),i=u&&2===l?v:y[l-1],h+=i;var k=p(n,l,h,m,g,T,A);return r(t)?(d(k[0],k[1],t),f(t)):t=new N(k[0],k[1],c.UTC),G&&N.addSeconds(t,1,t),t},N.now=function(e){return N.fromDate(new Date,e)};var A=new N(0,0,c.TAI);return N.toGregorianDate=function(e,t){var n=!1,a=h(e,A);r(a)||(N.addSeconds(e,-1,A),a=h(A,A),n=!0);var o=a.dayNumber,u=a.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var f=0|4e3*(c+1)/1461001;c=0|c-(0|1461*f/4)+31;var d=0|80*c/2447,p=0|c-(0|2447*d/80);c=0|d/11;var m=0|d+2-12*c,y=0|100*(l-49)+f+c,v=0|u/s.SECONDS_PER_HOUR,g=u-v*s.SECONDS_PER_HOUR,w=0|g/s.SECONDS_PER_MINUTE;g-=w*s.SECONDS_PER_MINUTE;var x=0|g,E=(g-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),n&&(x+=1),r(t)?(t.year=y,t.month=m,t.day=p,t.hour=v,t.minute=w,t.second=x,t.millisecond=E,t.isLeapSecond=n,t):new i(y,m,p,v,w,x,E,n)},N.toDate=function(e){var t=N.toGregorianDate(e,m),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))},N.toIso8601=function(t,n){var a,i=N.toGregorianDate(t,i);return r(n)||0===i.millisecond?r(n)&&0!==n?(a=(.01*i.millisecond).toFixed(n).replace(".","").slice(0,n),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",i.year,i.month,i.day,i.hour,i.minute,i.second):(a=(.01*i.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a))},N.clone=function(e,t){return r(e)?r(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new N(e.dayNumber,e.secondsOfDay,c.TAI):void 0},N.compare=function(e,t){var n=e.dayNumber-t.dayNumber;return 0!==n?n:e.secondsOfDay-t.secondsOfDay},N.equals=function(e,t){return e===t||r(e)&&r(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},N.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(N.secondsDifference(e,t))<=n},N.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},N.secondsDifference=function(e,t){var n=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return n+(e.secondsOfDay-t.secondsOfDay)},N.daysDifference=function(e,t){var n=e.dayNumber-t.dayNumber,r=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return n+r},N.computeTaiMinusUtc=function(e){g.julianDate=e;var n=N.leapSeconds,r=t(n,g,l);return 0>r&&(r=~r,--r,0>r&&(r=0)),n[r].offset},N.addSeconds=function(e,t,n){return d(e.dayNumber,e.secondsOfDay+t,n)},N.addMinutes=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return d(e.dayNumber,r,n)},N.addHours=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return d(e.dayNumber,r,n)},N.addDays=function(e,t,n){var r=e.dayNumber+t;return d(r,e.secondsOfDay,n)},N.lessThan=function(e,t){return N.compare(e,t)<0},N.lessThanOrEquals=function(e,t){return N.compare(e,t)<=0},N.greaterThan=function(e,t){return N.compare(e,t)>0},N.greaterThanOrEquals=function(e,t){return N.compare(e,t)>=0},N.prototype.clone=function(e){return N.clone(this,e)},N.prototype.equals=function(e){return N.equals(this,e)},N.prototype.equalsEpsilon=function(e,t){return N.equalsEpsilon(this,e,t)},N.prototype.toString=function(){return N.toIso8601(this)},N.leapSeconds=[new u(new N(2441317,43210,c.TAI),10),new u(new N(2441499,43211,c.TAI),11),new u(new N(2441683,43212,c.TAI),12),new u(new N(2442048,43213,c.TAI),13),new u(new N(2442413,43214,c.TAI),14),new u(new N(2442778,43215,c.TAI),15),new u(new N(2443144,43216,c.TAI),16),new u(new N(2443509,43217,c.TAI),17),new u(new N(2443874,43218,c.TAI),18),new u(new N(2444239,43219,c.TAI),19),new u(new N(2444786,43220,c.TAI),20),new u(new N(2445151,43221,c.TAI),21),new u(new N(2445516,43222,c.TAI),22),new u(new N(2446247,43223,c.TAI),23),new u(new N(2447161,43224,c.TAI),24),new u(new N(2447892,43225,c.TAI),25),new u(new N(2448257,43226,c.TAI),26),new u(new N(2448804,43227,c.TAI),27),new u(new N(2449169,43228,c.TAI),28),new u(new N(2449534,43229,c.TAI),29),new u(new N(2450083,43230,c.TAI),30),new u(new N(2450630,43231,c.TAI),31),new u(new N(2451179,43232,c.TAI),32),new u(new N(2453736,43233,c.TAI),33),new u(new N(2454832,43234,c.TAI),34),new u(new N(2456109,43235,c.TAI),35),new u(new N(2457204,43236,c.TAI),36)],N}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(n,r){if(null===n||"object"!=typeof n)return n;r=e(r,!1);var a=new n.constructor;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i];r&&(o=t(o,r)),a[i]=o}return a};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var n=e.split("\r\n"),r=0;r<n.length;++r){var a=n[r],i=a.indexOf(": ");if(i>0){var o=a.substring(0,i),u=a.substring(i+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var n=function(e,n,r){this.statusCode=e,this.response=n,this.responseHeaders=r,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return n.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},n}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,n,r,a,i){"use strict";function o(e,t){var n=decodeURIComponent(t);return e?atob(n):n}function u(e,t){for(var n=o(e,t),r=new ArrayBuffer(n.length),a=new Uint8Array(r),i=0;i<n.length;i++)a[i]=n.charCodeAt(i);return r}function s(e,n){n=t(n,"");var a=e[1],i=!!e[2],s=e[3];switch(n){case"":case"text":return o(i,s);case"arraybuffer":return u(i,s);case"blob":var c=u(i,s);return new Blob([c],{type:a});case"document":var l=new DOMParser;return l.parseFromString(o(i,s),a);case"json":return JSON.parse(o(i,s));default:throw new r("Unhandled responseType: "+n)}}var c=function(n){n=t(n,t.EMPTY_OBJECT);var r=n.responseType,a=t(n.method,"GET"),i=n.data,o=n.headers,u=n.overrideMimeType;return e(n.url,function(t){var n=e.defer();return c.load(t,r,a,i,o,n,u),n.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,r,o,u,c,f){var h=l.exec(e);if(null!==h)return c.resolve(s(h,t)),void 0;var d=new XMLHttpRequest;if(n(f)&&n(d.overrideMimeType)&&d.overrideMimeType(f),d.open(r,e,!0),n(u))for(var p in u)u.hasOwnProperty(p)&&d.setRequestHeader(p,u[p]);n(t)&&(d.responseType=t),d.onload=function(){200===d.status?n(d.response)?c.resolve(d.response):n(d.responseXML)&&d.responseXML.hasChildNodes()?c.resolve(d.responseXML):n(d.responseText)?c.resolve(d.responseText):c.reject(new i("unknown XMLHttpRequest response type.")):c.reject(new a(d.status,d.response,d.getAllResponseHeaders()))},d.onerror=function(){c.reject(new a)},d.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,n){return e({url:t,headers:n})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,n,r){"use strict";var a={Accept:"application/json,*/*;q=0.01"},i=function(n,i){return t(i)?t(i.Accept)||(i=e(i),i.Accept=a.Accept):i=a,r(n,i).then(function(e){return JSON.parse(e)})};return i}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c,l,f){"use strict";function h(e,t){return o.compare(e.julianDate,t)}function d(e,n){if(!r(n.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!r(n.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var a=n.columnNames.indexOf("modifiedJulianDateUtc"),i=n.columnNames.indexOf("xPoleWanderRadians"),s=n.columnNames.indexOf("yPoleWanderRadians"),c=n.columnNames.indexOf("ut1MinusUtcSeconds"),d=n.columnNames.indexOf("xCelestialPoleOffsetRadians"),p=n.columnNames.indexOf("yCelestialPoleOffsetRadians"),m=n.columnNames.indexOf("taiMinusUtcSeconds");if(0>a||0>i||0>s||0>c||0>d||0>p||0>m)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=n.samples,v=e._dates=[];e._dateColumn=a,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=d,e._yCelestialPoleOffsetRadiansColumn=p,e._taiMinusUtcSecondsColumn=m,e._columnCount=n.columnNames.length,e._lastIndex=void 0;for(var g,w=e._addNewLeapSeconds,x=0,E=y.length;E>x;x+=e._columnCount){var S=y[x+a],O=y[x+m],T=S+l.MODIFIED_JULIAN_DATE_DIFFERENCE,M=new o(T,O,f.TAI);if(v.push(M),w){if(O!==g&&r(g)){var _=o.leapSeconds,P=t(_,M,h);if(0>P){var b=new u(M,O);_.splice(~P,0,b)}}g=O}}}function p(e,t,n,r,a){var i=n*r;a.xPoleWander=t[i+e._xPoleWanderRadiansColumn],a.yPoleWander=t[i+e._yPoleWanderRadiansColumn],a.xPoleOffset=t[i+e._xCelestialPoleOffsetRadiansColumn],a.yPoleOffset=t[i+e._yCelestialPoleOffsetRadiansColumn],a.ut1MinusUtc=t[i+e._ut1MinusUtcSecondsColumn]}function m(e,t,n){return t+e*(n-t)}function y(e,t,n,r,a,i,u){var s=e._columnCount;if(i>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u;var c=t[a],l=t[i];if(c.equals(l)||r.equals(c))return p(e,n,a,s,u),u;if(r.equals(l))return p(e,n,i,s,u),u;var f=o.secondsDifference(r,c)/o.secondsDifference(l,c),h=a*s,d=i*s,y=n[h+e._ut1MinusUtcSecondsColumn],v=n[d+e._ut1MinusUtcSecondsColumn],g=v-y;if(g>.5||-.5>g){var w=n[h+e._taiMinusUtcSecondsColumn],x=n[d+e._taiMinusUtcSecondsColumn];w!==x&&(l.equals(r)?y=v:v-=x-w)}return u.xPoleWander=m(f,n[h+e._xPoleWanderRadiansColumn],n[d+e._xPoleWanderRadiansColumn]),u.yPoleWander=m(f,n[h+e._yPoleWanderRadiansColumn],n[d+e._yPoleWanderRadiansColumn]),u.xPoleOffset=m(f,n[h+e._xCelestialPoleOffsetRadiansColumn],n[d+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=m(f,n[h+e._yCelestialPoleOffsetRadiansColumn],n[d+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=m(f,y,v),u}var v=function(t){if(t=n(t,n.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=n(t.addNewLeapSeconds,!0),r(t.data))d(this,t.data);else if(r(t.url)){var a=this;this._downloadPromise=e(s(t.url),function(e){d(a,e)},function(){a._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"." +})}else d(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return v.NONE=i({getPromiseToLoad:function(){return e()},compute:function(e,t){return r(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new a(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,n){if(!r(this._samples)){if(r(this._dataError))throw new c(this._dataError);return void 0}if(r(n)||(n=new a(0,0,0,0,0)),0===this._samples.length)return n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0,n;var i=this._dates,u=this._lastIndex,s=0,l=0;if(r(u)){var f=i[u],h=i[u+1],d=o.lessThanOrEquals(f,e),p=!r(h),m=p||o.greaterThanOrEquals(h,e);if(d&&m)return s=u,!p&&h.equals(e)&&++s,l=s+1,y(this,i,this._samples,e,s,l,n),n}var v=t(i,e,o.compare,this._dateColumn);return v>=0?(v<i.length-1&&i[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,i,this._samples,e,s,l,n),n},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var n=r.exec(t);this.scheme=n[1],this.authority=n[2],this.path=n[3],this.query=n[4],this.fragment=n[5]}}function t(e){var t=unescape(e);return i.test(t)?t:e.toUpperCase()}function n(e,t,n,r){return(t||"")+n.toLowerCase()+(r||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var r=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,n).replace(a,t)),this.path&&(this.path=this.path.replace(a,t)),this.query&&(this.query=this.query.replace(a,t)),this.fragment&&(this.fragment=this.fragment.replace(a,t))};var a=/%[0-9a-z]{2}/gi,i=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var n=new e;return this.scheme?(n.scheme=this.scheme,n.authority=this.authority,n.path=this.path,n.query=this.query):(n.scheme=t.scheme,this.authority?(n.authority=this.authority,n.path=this.path,n.query=this.query):(n.authority=t.authority,""==this.path?(n.path=t.path,n.query=this.query||t.query):("/"==this.path.charAt(0)?(n.path=this.path,n.removeDotSegments()):(n.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,n.removeDotSegments()),n.query=this.query))),n.fragment=this.fragment,n},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),n=[],r=""==t[0];for(r&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?n.pop():"."!=e&&n.push(e);("."==e||".."==e)&&n.push(""),r&&n.unshift(""),this.path=n.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,n,r){"use strict";function a(){for(var e=document.getElementsByTagName("script"),t=0,n=e.length;n>t;++t){var r=e[t].getAttribute("src"),a=f.exec(r);if(null!==a)return a[1]}return void 0}function i(){if(t(s))return s;var r;if(r="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:a(),!t(r))throw new n("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(r).resolve(new e(document.location.href))}function o(e){return r.toUrl("../"+e)}function u(t){return new e(t).resolve(i()).toString()}var s,c,l,f=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,h=function(e){t(c)||(c=t(r.toUrl)?o:u),t(l)||(l=document.createElement("a"));var n=c(e);return l.href=n,l.href=l.href,l.href};return h._cesiumScriptRegex=f,h.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},h}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,n){this.x=e,this.y=t,this.s=n};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,n,r,a,i,o,u){"use strict";function s(e,t,n){var r=f;return r.dayNumber=t,r.secondsOfDay=n,i.daysDifference(r,e._sampleZeroDateTT)}function c(n,a){if(n._chunkDownloadsInProgress[a])return n._chunkDownloadsInProgress[a];var i=e.defer();n._chunkDownloadsInProgress[a]=i;var u,s=n._xysFileUrlTemplate;return u=r(s)?s.replace("{0}",a):t("Assets/IAU2006_XYS/IAU2006_XYS_"+a+".json"),e(o(u),function(e){n._chunkDownloadsInProgress[a]=!1;for(var t=n._samples,r=e.samples,o=3*a*n._samplesPerXysFile,u=0,s=r.length;s>u;++u)t[o+u]=r[u];i.resolve()}),i.promise}var l=function(e){e=n(e,n.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=n(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=n(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new i(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=n(e.stepSizeDays,1),this._samplesPerXysFile=n(e.samplesPerXysFile,1e3),this._totalSamples=n(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,r=this._denominators=new Array(t+1),a=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){r[s]=o,a[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(r[s]*=s-c);r[s]=1/r[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},f=new i(0,0,u.TAI);return l.prototype.preload=function(t,n,r,a){var i=s(this,t,n),o=s(this,r,a),u=0|i/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var f=0|u/this._samplesPerXysFile,h=0|l/this._samplesPerXysFile,d=[],p=f;h>=p;++p)d.push(c(this,p));return e.all(d)},l.prototype.computeXysRadians=function(e,t,n){var i=s(this,e,t);if(0>i)return void 0;var o=0|i/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var f=l+u;f>=this._totalSamples&&(f=this._totalSamples-1,l=f-u,0>l&&(l=0));var h=!1,d=this._samples;if(r(d[3*l])||(c(this,0|l/this._samplesPerXysFile),h=!0),r(d[3*f])||(c(this,0|f/this._samplesPerXysFile),h=!0),h)return void 0;r(n)?(n.x=0,n.y=0,n.s=0):n=new a(0,0,0);var p,m,y=i-l*this._stepSizeDays,v=this._work,g=this._denominators,w=this._coef,x=this._xTable;for(p=0;u>=p;++p)v[p]=y-x[p];for(p=0;u>=p;++p){for(w[p]=1,m=0;u>=m;++m)m!==p&&(w[p]*=v[m]);w[p]*=g[p];var E=3*(l+p);n.x+=w[p]*d[E++],n.y+=w[p]*d[E++],n.s+=w[p]*d[E]}return n},l}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(a,0)},c=new e;s.fromAxisAngle=function(t,r,a){var i=r/2,o=Math.sin(i);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,h=Math.cos(i);return n(a)?(a.x=u,a.y=l,a.z=f,a.w=h,a):new s(u,l,f,h)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var r,a,i,o,c,h=e[u.COLUMN0ROW0],d=e[u.COLUMN1ROW1],p=e[u.COLUMN2ROW2],m=h+d+p;if(m>0)r=Math.sqrt(m+1),c=.5*r,r=.5/r,a=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*r,i=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*r,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*r;else{var y=l,v=0;d>h&&(v=1),p>h&&p>d&&(v=2);var g=y[v],w=y[g];r=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=f;x[v]=.5*r,r=.5/r,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*r,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*r,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*r,a=-x[0],i=-x[1],o=-x[2]}return n(t)?(t.x=a,t.y=i,t.z=o,t.w=c,t):new s(a,i,o,c)};var h=new s;s.fromHeadingPitchRoll=function(t,n,r,a){var i=s.fromAxisAngle(e.UNIT_X,r,h),o=s.fromAxisAngle(e.UNIT_Y,-n,a);a=s.multiply(o,i,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,h);return s.multiply(u,a,a)};var d=new e,p=new e,m=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.x=e[r],a.y=e[r+1],a.z=e[r+2],a.w=e[r+3],a},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,n,r){s.unpack(e,4*n,v),s.conjugate(v,v);for(var a=0,i=n-t+1;i>a;a++){var o=3*a;s.unpack(e,4*(t+a),m),s.multiply(m,v,m),m.w<0&&s.negate(m,m),s.computeAxis(m,d);var u=s.computeAngle(m);r[o]=d.x*u,r[o+1]=d.y*u,r[o+2]=d.z*u}},s.unpackInterpolationResult=function(t,r,a,i,o){n(o)||(o=new s),e.fromArray(t,0,p);var u=e.magnitude(p);return s.unpack(r,4*i,y),0===u?s.clone(s.IDENTITY,m):s.fromAxisAngle(p,u,m),s.multiply(m,y,o)},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var n=1/s.magnitude(e),r=e.x*n,a=e.y*n,i=e.z*n,o=e.w*n;return t.x=r,t.y=a,t.z=i,t.w=o,t},s.inverse=function(e,t){var n=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/n,t)},s.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},s.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+r*l+a*c-i*s,h=o*s-r*c+a*l+i*u,d=o*c+r*s-a*u+i*l,p=o*l-r*u-a*s-i*c;return n.x=f,n.y=h,n.z=d,n.w=p,n},s.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},s.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},s.computeAxis=function(e,t){var n=e.w;if(Math.abs(n-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var r=1/Math.sqrt(1-n*n);return t.x=e.x*r,t.y=e.y*r,t.z=e.z*r,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,n,r){return g=s.multiplyByScalar(t,n,g),r=s.multiplyByScalar(e,1-n,r),s.add(g,r,r)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,n,r){var a=s.dot(e,t),i=t;if(0>a&&(a=-a,i=w=s.negate(t,w)),1-a<o.EPSILON6)return s.lerp(e,i,n,r);var u=Math.acos(a);return x=s.multiplyByScalar(e,Math.sin((1-n)*u),x),E=s.multiplyByScalar(i,Math.sin(n*u),E),r=s.add(x,E,r),s.multiplyByScalar(r,1/Math.sin(u),r)},s.log=function(t,n){var r=o.acosClamped(t.w),a=0;return 0!==r&&(a=r/Math.sin(r)),e.multiplyByScalar(t,a,n)},s.exp=function(t,n){var r=e.magnitude(t),a=0;return 0!==r&&(a=Math.sin(r)/r),n.x=t.x*a,n.y=t.y*a,n.z=t.z*a,n.w=Math.cos(r),n};var S=new e,O=new e,T=new s,M=new s;s.computeInnerQuadrangle=function(t,n,r,a){var i=s.conjugate(n,T);s.multiply(i,r,M);var o=s.log(M,S);s.multiply(i,t,M);var u=s.log(M,O);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,T),s.multiply(n,T,a)},s.squad=function(e,t,n,r,a,i){var o=s.slerp(e,t,a,T),u=s.slerp(n,r,a,M);return s.slerp(o,u,2*a*(1-a),i)};for(var _=new s,P=1.9011074535173003,b=a.supportsTypedArrays()?new Float32Array(8):[],N=a.supportsTypedArrays()?new Float32Array(8):[],A=a.supportsTypedArrays()?new Float32Array(8):[],I=a.supportsTypedArrays()?new Float32Array(8):[],C=0;7>C;++C){var R=C+1,z=2*R+1;b[C]=1/(R*z),N[C]=R/z}return b[7]=P/136,N[7]=8*P/17,s.fastSlerp=function(e,t,n,r){var a,i=s.dot(e,t);i>=0?a=1:(a=-1,i=-i);for(var o=i-1,u=1-n,c=n*n,l=u*u,f=7;f>=0;--f)A[f]=(b[f]*c-N[f])*o,I[f]=(b[f]*l-N[f])*o;var h=a*n*(1+A[0]*(1+A[1]*(1+A[2]*(1+A[3]*(1+A[4]*(1+A[5]*(1+A[6]*(1+A[7])))))))),d=u*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),p=s.multiplyByScalar(e,d,_);return s.multiplyByScalar(t,h,r),s.add(p,r,r)},s.fastSquad=function(e,t,n,r,a,i){var o=s.fastSlerp(e,t,a,T),u=s.fastSlerp(n,r,a,M);return s.fastSlerp(o,u,2*a*(1-a),i)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},s.ZERO=i(new s(0,0,0,0)),s.IDENTITY=i(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,n,r,a,i,o,u,s,c,l,f,h,d,p,m,y,v){"use strict";var g={},w=new n,x=new n,E=new n;g.eastNorthUpToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return i(r)?(r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=-o,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new m(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=s.x,r[1]=s.y,r[2]=s.z,r[3]=0,r[4]=l.x,r[5]=l.y,r[6]=l.z,r[7]=0,r[8]=u.x,r[9]=u.y,r[10]=u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new m(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var S=new n,O=new n,T=new n;g.northEastDownToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=-o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new m(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=S,s=O,l=T;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=s.x,r[5]=s.y,r[6]=s.z,r[7]=0,r[8]=-u.x,r[9]=-u.y,r[10]=-u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new m(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},g.northUpEastToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=o,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new m(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=u.x,r[5]=u.y,r[6]=u.z,r[7]=0,r[8]=s.x,r[9]=s.y,r[10]=s.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new m(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var M=new y,_=new n(1,1,1),P=new m;g.headingPitchRollToFixedFrame=function(e,t,r,a,i,o){var u=y.fromHeadingPitchRoll(t,r,a,M),s=m.fromTranslationQuaternionRotationScale(n.ZERO,u,_,P);return o=g.eastNorthUpToFixedFrame(e,i,o),m.multiply(o,s,o)};var b=new m,N=new p;g.headingPitchRollQuaternion=function(e,t,n,r,a,i){var o=g.headingPitchRollToFixedFrame(e,t,n,r,a,b),u=m.getRotation(o,N);return y.fromRotationMatrix(u,i)};var A=24110.54841,I=8640184.812866,C=.093104,R=-62e-7,z=1.1772758384668e-19,D=72921158553e-15,L=d.TWO_PI/86400,q=new h;g.computeTemeToPseudoFixedMatrix=function(e,t){q=h.addSeconds(e,-h.computeTaiMinusUtc(e),q);var n,r=q.dayNumber,a=q.secondsOfDay,o=r-2451545;n=a>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=A+n*(I+n*(C+n*R)),s=u*L%d.TWO_PI,c=D+z*(r-2451545.5),l=(a+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,f=s+c*l,m=Math.cos(f),y=Math.sin(f);return i(t)?(t[0]=m,t[1]=-y,t[2]=0,t[3]=y,t[4]=m,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new p(m,y,0,-y,m,0,0,0,1)},g.iau2006XysData=new l,g.earthOrientationParameters=u.NONE;var U=32.184,B=2451545;g.preloadIcrfFixed=function(t){var n=t.start.dayNumber,r=t.start.secondsOfDay+U,a=t.stop.dayNumber,i=t.stop.secondsOfDay+U,o=g.iau2006XysData.preload(n,r,a,i),u=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},g.computeIcrfToFixedMatrix=function(e,t){i(t)||(t=new p);var n=g.computeFixedToIcrfMatrix(e,t);return i(n)?p.transpose(n,t):void 0};var F=new f(0,0,0),W=new s(0,0,0,0,0,0),G=new p,k=new p;g.computeFixedToIcrfMatrix=function(e,t){i(t)||(t=new p);var n=g.earthOrientationParameters.compute(e,W);if(!i(n))return void 0;var r=e.dayNumber,a=e.secondsOfDay+U,o=g.iau2006XysData.computeXysRadians(r,a,F);if(!i(o))return void 0;var u=o.x+n.xPoleOffset,s=o.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=G;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var f=p.fromRotationZ(-o.s,k),m=p.multiply(l,f,G),y=e.dayNumber,w=e.secondsOfDay-h.computeTaiMinusUtc(e)+n.ut1MinusUtc,x=y-2451545,E=w/v.SECONDS_PER_DAY,S=.779057273264+E+.00273781191135448*(x+E);S=S%1*d.TWO_PI;var O=p.fromRotationZ(S,k),T=p.multiply(m,O,G),M=Math.cos(n.xPoleWander),_=Math.cos(n.yPoleWander),P=Math.sin(n.xPoleWander),b=Math.sin(n.yPoleWander),N=r-B+a/v.SECONDS_PER_DAY;N/=36525;var A=-47e-6*N*d.RADIANS_PER_DEGREE/3600,I=Math.cos(A),C=Math.sin(A),R=k;return R[0]=M*I,R[1]=M*C,R[2]=P,R[3]=-_*C+b*P*I,R[4]=_*I+b*P*C,R[5]=-b*M,R[6]=-b*C-_*P*I,R[7]=b*I-_*P*C,R[8]=_*M,p.multiply(T,R,t)};var V=new r;g.pointToWindowCoordinates=function(e,t,n,r){return r=g.pointToGLWindowCoordinates(e,t,n,r),r.y=2*t[5]-r.y,r},g.pointToGLWindowCoordinates=function(e,n,a,o){i(o)||(o=new t);var u=V;return m.multiplyByVector(e,r.fromElements(a.x,a.y,a.z,1,u),u),r.multiplyByScalar(u,1/u.w,u),m.multiplyByVector(n,u,u),t.fromCartesian4(u,o)};var Y=new n,j=new n,H=new n;return g.rotationMatrixFromPositionVelocity=function(e,t,r,o){var u=a(r,c.WGS84).geodeticSurfaceNormal(e,Y),s=n.cross(t,u,j);n.equalsEpsilon(s,n.ZERO,d.EPSILON6)&&(s=n.clone(n.UNIT_X,s));var l=n.cross(s,t,H);return n.cross(t,l,s),n.negate(s,s),i(o)||(o=new p),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},g}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,n,r,a,i,o,u,s,c,l,f,h,d,p){"use strict";var m=new r,y=function(e,t){t=a(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var r=p.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=n.fromCartesian4(f.getColumn(r,0,m)),this._yAxis=n.fromCartesian4(f.getColumn(r,1,m));var i=n.fromCartesian4(f.getColumn(r,2,m));this._plane=h.fromPointNormal(e,i)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,n){var r=e.fromPoints(t,v);return new y(r.center,n)};var g=new d,w=new n;y.prototype.projectPointOntoPlane=function(e,r){var a=g;a.origin=e,n.normalize(e,a.direction);var o=c.rayPlane(a,this._plane,w);if(i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w)),i(o)){var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return i(r)?(r.x=s,r.y=l,r):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){i(t)||(t=[]);for(var n=0,r=e.length,a=0;r>a;a++){var o=this.projectPointOntoPlane(e[a],t[n]);i(o)&&(t[n]=o,n++)}return t.length=n,t},y.prototype.projectPointToNearestOnPlane=function(e,r){i(r)||(r=new t);var a=g;a.origin=e,n.clone(this._plane.normal,a.direction);var o=c.rayPlane(a,this._plane,w);i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w));var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return r.x=s,r.y=l,r},y.prototype.projectPointsToNearestOnPlane=function(e,t){i(t)||(t=[]);var n=e.length;t.length=n;for(var r=0;n>r;r++)t[r]=this.projectPointToNearestOnPlane(e[r],t[r]);return t};var x=new n;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var r=e.length;i(t)?t.length=r:t=new Array(r);for(var a=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;r>l;++l){var f=e[l];n.multiplyByScalar(u,f.x,c),i(t[l])||(t[l]=new n);var h=n.add(o,c,t[l]);n.multiplyByScalar(s,f.y,c),n.add(h,c,h),a.scaleToGeocentricSurface(h,h)}return t},y}),define("Core/pointInsideTriangle",["./barycentricCoordinates","./Cartesian3"],function(e,t){"use strict";var n=new t,r=function(t,r,a,i){return e(t,r,a,i,n),n.x>0&&n.y>0&&n.z>0};return r}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(e){var t=e._uSquared,n=e._ellipsoid.maximumRadius,r=e._ellipsoid.minimumRadius,a=(n-r)/n,i=Math.cos(e._startHeading),o=Math.sin(e._startHeading),u=(1-a)*Math.tan(e._start.latitude),s=1/Math.sqrt(1+u*u),c=s*u,l=Math.atan2(u,i),f=s*o,h=f*f,d=1-h,p=Math.sqrt(d),m=t/4,y=m*m,v=y*m,g=y*y,w=1+m-3*y/4+5*v/4-175*g/64,x=1-m+15*y/8-35*v/8,E=1-3*m+35*y/4,S=1-5*m,O=w*l-x*Math.sin(2*l)*m/2-E*Math.sin(4*l)*y/16-S*Math.sin(6*l)*v/48-5*Math.sin(8*l)*g/512,T=e._constants;T.a=n,T.b=r,T.f=a,T.cosineHeading=i,T.sineHeading=o,T.tanU=u,T.cosineU=s,T.sineU=c,T.sigma=l,T.sineAlpha=f,T.sineSquaredAlpha=h,T.cosineSquaredAlpha=d,T.cosineAlpha=p,T.u2Over4=m,T.u4Over16=y,T.u6Over64=v,T.u8Over256=g,T.a0=w,T.a1=x,T.a2=E,T.a3=S,T.distanceRatio=O}function c(e,t){return e*t*(4+e*(4-3*t))/16}function l(e,t,n,r,a,i,o){var u=c(e,n);return(1-u)*e*t*(r+u*a*(o+u*i*(2*o*o-1)))}function f(e,t,n,r,a,i,o){var s,c,f,h,d,p=(t-n)/t,m=i-r,y=Math.atan((1-p)*Math.tan(a)),v=Math.atan((1-p)*Math.tan(o)),g=Math.cos(y),w=Math.sin(y),x=Math.cos(v),E=Math.sin(v),S=g*x,O=g*E,T=w*E,M=w*x,_=m,P=u.TWO_PI,b=Math.cos(_),N=Math.sin(_);do{b=Math.cos(_),N=Math.sin(_);var A=O-M*b;f=Math.sqrt(x*x*N*N+A*A),c=T+S*b,s=Math.atan2(f,c);var I;0===f?(I=0,h=1):(I=S*N/f,h=1-I*I),P=_,d=c-2*T/h,isNaN(d)&&(d=0),_=m+l(p,I,h,s,f,c,d)}while(Math.abs(_-P)>u.EPSILON12);var C=h*(t*t-n*n)/(n*n),R=1+C*(4096+C*(C*(320-175*C)-768))/16384,z=C*(256+C*(C*(74-47*C)-128))/1024,D=d*d,L=z*f*(d+z*(c*(2*D-1)-z*d*(4*f*f-3)*(4*D-3)/6)/4),q=n*R*(s-L),U=Math.atan2(x*N,O-M*b),B=Math.atan2(g*N,O*b-M);e._distance=q,e._startHeading=U,e._endHeading=B,e._uSquared=C}function h(n,r,a,i){e.normalize(i.cartographicToCartesian(r,p),d),e.normalize(i.cartographicToCartesian(a,p),p),f(n,i.maximumRadius,i.minimumRadius,r.longitude,r.latitude,a.longitude,a.latitude),n._start=t.clone(r,n._start),n._end=t.clone(a,n._end),n._start.height=0,n._end.height=0,s(n)}var d=new e,p=new e,m=function(e,a,i){var u=n(i,o.WGS84);this._ellipsoid=u,this._start=new t,this._end=new t,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,r(e)&&r(a)&&h(this,e,a,u)};return a(m.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),m.prototype.setEndPoints=function(e,t){h(this,e,t,this._ellipsoid)},m.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)},m.prototype.interpolateUsingSurfaceDistance=function(e,n){var a=this._constants,i=a.distanceRatio+e/a.b,o=Math.cos(2*i),u=Math.cos(4*i),s=Math.cos(6*i),c=Math.sin(2*i),f=Math.sin(4*i),h=Math.sin(6*i),d=Math.sin(8*i),p=i*i,m=i*p,y=a.u8Over256,v=a.u2Over4,g=a.u6Over64,w=a.u4Over16,x=2*m*y*o/3+i*(1-v+7*w/4-15*g/4+579*y/64-(w-15*g/4+187*y/16)*o-(5*g/4-115*y/16)*u-29*y*s/16)+(v/2-w+71*g/32-85*y/16)*c+(5*w/16-5*g/4+383*y/96)*f-p*((g-11*y/2)*c+5*y*f/2)+(29*g/96-29*y/16)*h+539*y*d/1536,E=Math.asin(Math.sin(x)*a.cosineAlpha),S=Math.atan(a.a/a.b*Math.tan(E));x-=a.sigma;var O=Math.cos(2*a.sigma+x),T=Math.sin(x),M=Math.cos(x),_=a.cosineU*M,P=a.sineU*T,b=Math.atan2(T*a.sineHeading,_-P*a.cosineHeading),N=b-l(a.f,a.sineAlpha,a.cosineSquaredAlpha,x,T,M,O);return r(n)?(n.longitude=this._start.longitude+N,n.latitude=S,n.height=0,n):new t(this._start.longitude+N,S,0)},m}),define("Core/isArray",["./defined"],function(e){"use strict";var t=Array.isArray;return e(t)||(t=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(e,t,n,r,a,i,o,u,s,c,l,f){"use strict";function h(e,t,n){var r=T;r.length=e;var a;if(t===n){for(a=0;e>a;a++)r[a]=t;return r}var i=n-t,o=i/e;for(a=0;e>a;a++){var u=t+a*o;r[a]=u}return r}function d(t,n,r,a,i,o,u,s){var c=a.scaleToGeodeticSurface(t,b),l=a.scaleToGeodeticSurface(n,N),f=p.numberOfPoints(t,n,r),d=a.cartesianToCartographic(c,M),m=a.cartesianToCartographic(l,_),y=h(f,i,o);A.setEndPoints(d,m);var v=A.surfaceDistance/f,g=s;d.height=i;var w=a.cartographicToCartesian(d,P);e.pack(w,u,g),g+=3;for(var x=1;f>x;x++){var E=A.interpolateUsingSurfaceDistance(x*v,_);E.height=y[x],w=a.cartographicToCartesian(E,P),e.pack(w,u,g),g+=3}return g}var p={};p.numberOfPoints=function(t,n,r){var a=e.distance(t,n);return Math.ceil(a/r)};var m=new t;p.extractHeights=function(e,t){for(var n=e.length,r=new Array(n),a=0;n>a;a++){var i=e[a];r[a]=t.cartesianToCartographic(i,m).height}return r};var y=new l,v=new e,g=new e,w=new f(e.ZERO,0),x=new e,E=new f(e.ZERO,0),S=new e,O=new e,T=[],M=new t,_=new t,P=new e,b=new e,N=new e,A=new o;p.wrapLongitude=function(t,a){var i=[],o=[];if(r(t)&&t.length>0){a=n(a,l.IDENTITY);var s=l.inverseTransformation(a,y),c=l.multiplyByPoint(s,e.ZERO,v),h=l.multiplyByPointAsVector(s,e.UNIT_Y,g),d=f.fromPointNormal(c,h,w),p=l.multiplyByPointAsVector(s,e.UNIT_X,x),m=f.fromPointNormal(c,p,E),T=1;i.push(e.clone(t[0]));for(var M=i[0],_=t.length,P=1;_>P;++P){var b=t[P];if(f.getPointDistance(m,M)<0||f.getPointDistance(m,b)<0){var N=u.lineSegmentPlane(M,b,d,S);if(r(N)){var A=e.multiplyByScalar(h,5e-9,O);f.getPointDistance(d,M)<0&&e.negate(A,A),i.push(e.add(N,A,new e)),o.push(T+1),e.negate(A,A),i.push(e.add(N,A,new e)),T=1}}i.push(e.clone(t[P])),T++,M=b}o.push(T)}return{positions:i,lengths:o}};var I=c.EPSILON7;return p.removeDuplicates=function(t){var n=t.length;if(2>n)return t;var r,a,i;for(r=1;n>r&&(a=t[r-1],i=t[r],!e.equalsEpsilon(a,i,I));++r);if(r===n)return t;for(var o=t.slice(0,r);n>r;++r)i=t[r],e.equalsEpsilon(a,i,I)||(o.push(e.clone(i)),a=i);return o},p.generateArc=function(t){r(t)||(t={});var a=t.positions,o=a.length,u=n(t.ellipsoid,i.WGS84),l=n(t.height,0);if(1>o)return[];if(1===o){var f=u.scaleToGeodeticSurface(a[0],b);if(0!==l){var h=u.geodeticSurfaceNormal(f,P);e.multiplyByScalar(h,l,h),e.add(f,h,f)}return[f.x,f.y,f.z]}var m=t.minDistance;if(!r(m)){var y=n(t.granularity,c.RADIANS_PER_DEGREE);m=c.chordLength(y,u.maximumRadius)}var v,g=0;for(v=0;o-1>v;v++)g+=p.numberOfPoints(a[v],a[v+1],m);var w=3*(g+1),x=new Array(w),E=0,S=s(l);for(v=0;o-1>v;v++){var O=a[v],_=a[v+1],N=S?l[v]:l,A=S?l[v+1]:l;E=d(O,_,m,u,N,A,x,E)}T.length=0;var I=a[o-1],C=u.cartesianToCartographic(I,M);C.height=S?l[o-1]:l;var R=u.cartographicToCartesian(C,P);return e.pack(R,x,w-3),x},p.generateCartesianArc=function(t){for(var n=p.generateArc(t),r=n.length/3,a=new Array(r),i=0;r>i;i++)a[i]=e.unpack(n,3*i);return a},p}),define("Core/Queue",[],function(){"use strict";var e=function(){this._array=[],this._offset=0,this.length=0};return e.prototype.enqueue=function(e){this._array.push(e),this.length++},e.prototype.dequeue=function(){if(0===this.length)return void 0;var e=this._array,t=this._offset,n=e[t];return e[t]=void 0,t++,t>10&&2*t>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this.length--,n},e.prototype.contains=function(e){return-1!==this._array.indexOf(e)},e.prototype.clear=function(){this._array.length=this._offset=this.length=0},e.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)},e}),define("Core/WindingOrder",["./freezeObject"],function(e){"use strict";var t={CLOCKWISE:2304,COUNTER_CLOCKWISE:2305,validate:function(e){return e===t.CLOCKWISE||e===t.COUNTER_CLOCKWISE}};return e(t)}),define("Core/PolygonPipeline",["./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./Math","./pointInsideTriangle","./PolylinePipeline","./PrimitiveType","./Queue","./WindingOrder"],function(e,t,n,r,a,i,o,u,s,c,l,f,h,d,p,m){"use strict";function y(t,n,r){var a=e.subtract(n,t,L),i=e.subtract(r,n,q);return a.x*i.y-a.y*i.x>=0}function v(e){for(var t=e[0].x,n=0,r=0;r<e.length;r++)e[r].x>t&&(t=e[r].x,n=r);return n}function g(e){for(var t=e[0][0].x,n=0,r=0;r<e.length;r++){var a=e[r][v(e[r])].x;a>t&&(t=a,n=r)}return n}function w(e){for(var t=[],n=0;n<e.length;n++){var r=e[(n-1+e.length)%e.length],a=e[n],i=e[(n+1)%e.length];y(r,a,i)||t.push(a)}return t}function x(t,n){for(var r=0;r<t.length;r++)if(e.equals(n,t[r]))return r;return-1}function E(n,a,i){i=r(i,[]);var o=Number.MAX_VALUE,u=v(a),s=new e(a[u].x,n.y);i.push(u),i.push((u+1)%a.length);for(var c=a[0].x,l=c,f=1;f<a.length;++f)a[f].x<c?c=a[f].x:a[f].x>l&&(l=a[f].x);l+=l-c;var h=new t(l,n.y,0);for(f=0;f<a.length;f++){var d=a[f],p=a[(f+1)%a.length];if((d.x>=n.x||p.x>=n.x)&&(d.y>=n.y&&p.y<=n.y||d.y<=n.y&&p.y>=n.y)){var m=(p.y-d.y)*(h.x-n.x)-(p.x-d.x)*(h.y-n.y);if(0!==m){m=1/m;var y=((p.x-d.x)*(n.y-d.y)-(p.y-d.y)*(n.x-d.x))*m,g=((h.x-n.x)*(n.y-d.y)-(h.y-n.y)*(n.x-d.x))*m;if(y>=0&&1>=y&&g>=0&&1>=g){var w=new e(n.x+y*(h.x-n.x),n.y+y*(h.y-n.y)),x=e.subtract(w,n,U);m=e.magnitudeSquared(x),o>m&&(s=w,o=m,i[0]=f,i[1]=(f+1)%a.length)}}}}return s}function S(t,n){var r=g(n),a=n[r],i=v(a),o=a[i],u=[],s=E(o,t,u),c=x(t,s);if(-1!==c)return c;var h=e.magnitudeSquared(e.subtract(t[u[0]],o,B)),d=e.magnitudeSquared(e.subtract(t[u[1]],o,B)),p=d>h?t[u[0]]:t[u[1]],m=w(t),y=m.indexOf(p);-1!==y&&m.splice(y,1);for(var S=[],O=0;O<m.length;O++){var T=m[O];f(T,o,s,p)&&S.push(T)}var M=Number.MAX_VALUE;if(S.length>0){var _=e.fromElements(1,0,B);for(O=0;O<S.length;O++){var P=e.subtract(S[O],o,F),b=e.magnitude(_)*e.magnitudeSquared(P);if(0!==b){var N=Math.abs(l.acosClamped(e.dot(_,P)/b));M>N&&(M=N,p=S[O])}}}return t.indexOf(p)}function O(e,n,r){for(var a=et.computeWindingOrder2D(e),i=0;i<n.length;i++){var o=n[i];t.equals(o[0],o[o.length-1])||o.push(o[0]);var s=et.computeWindingOrder2D(o);s===a&&o.reverse()}var c=u.fromPoints(e,r),l=c.projectPointsOntoPlane(e),f=[]; +for(i=0;i<n.length;i++)f.push(c.projectPointsOntoPlane(n[i]));var h=S(l,f),d=g(f),p=v(f[d]),m=n[d],y=[];for(i=0;i<e.length;i++)y.push(e[i]);var w,x=[];if(0!==p)for(w=0;w<=m.length;w++){var E=(w+p)%m.length;0!==E&&x.push(m[E])}else for(w=0;w<m.length;w++)x.push(m[(w+p)%m.length]);var O=y.lastIndexOf(e[h]);x.push(e[O]);var T=y.slice(0,O+1),M=y.slice(O+1);return y=T.concat(x,M),n.splice(d,1),y}function T(e){var t=l.nextRandomNumber(),n=Math.floor(t*e);return n===e&&n--,n}function M(e,t,n,r){var a=r[e].position,i=r[t].position,o=r[n].position,u=o.x,s=o.y,c=a.x-u,l=a.y-s,f=i.x-u,h=i.y-s;return c*h-l*f}function _(e,t){return e.x*t.y-e.y*t.x}function P(e,t){var n=t.length,r=l.mod(e-1,n),a=l.mod(e+1,n);return 0===M(r,a,e,t)?!1:!0}function b(t,n){return e.magnitudeSquared(n)<e.magnitudeSquared(t)}function N(t,n,r){if(!P(t,r))return t;var a=r[t].position,i=r[n].position,o=r.length,u=l.mod(t-1,o);if(!P(u,r))return u;var s=l.mod(t+1,o);if(!P(s,r))return s;var c=e.subtract(r[u].position,a,k),f=e.subtract(r[s].position,a,V),h=e.subtract(i,a,Y),d=_(c,h),p=_(f,h);if(0===d)return b(c,h)?W:G;if(0===p)return b(f,h)?W:G;var m=_(c,f);return 0>m?0>d&&p>0?W:G:m>0?d>0&&0>p?G:W:void 0}function A(e,t,n){return(e>t||e>n)&&(t>e||n>e)||t===n&&t===e}function I(t,n,r,a){var i=e.subtract(r,t,H),o=n.x*a.y-n.y*a.x,u=o*o,s=e.magnitudeSquared(n),c=e.magnitudeSquared(a);if(u>j*s*c){var l=(i.x*a.y-i.y*a.x)/o;return e.add(t,e.multiplyByScalar(n,l,H),H)}return void 0}function C(t,n,r){for(var i=e.subtract(n,t,Z),o=r.length,u=0;o>u;u++){var s=r[u].position,c=r[l.mod(u+1,o)].position;if(!(e.equals(t,s)||e.equals(n,c)||e.equals(t,c)||e.equals(n,s))){var f=e.subtract(c,s,X),h=I(t,i,s,f);if(a(h)&&!(e.equals(h,t)||e.equals(h,n)||e.equals(h,s)||e.equals(h,c))){var d=h.x,p=h.y,m=A(d,t.x,n.x)&&A(p,t.y,n.y)&&A(d,s.x,c.x)&&A(p,s.y,c.y);if(m)return!0}}}return!1}function R(t,n,r){var a=N(t,n,r);if(a>=0)return a;var i=N(n,t,r);return i>=0?i:a!==W||i!==W||C(r[t].position,r[n].position,r)||e.equals(r[t].position,r[n].position)?K:J}function z(e){return 0===M(1,2,0,e)}function D(e){var t=e.length;if(3===t)return z(e)?[]:[e[0].index,e[1].index,e[2].index];if(e.length<3)throw new i("Invalid polygon: must have at least three vertices.");for(var n,r,a=0,o=10*e.length,u=K;J>u&&a++<o;){for(n=T(e.length),r=n+1;Math.abs(n-r)<2||Math.abs(n-r)>e.length-2;)r=T(e.length);if(n>r){var s=n;n=r,r=s}u=R(n,r,e)}if(u===J){var c=e.splice(n,r-n+1,e[n],e[r]);return D(e).concat(D(c))}return u>=0?(e.splice(u,1),D(e)):[]}var L=new e,q=new e,U=new e,B=new e(1,0),F=new e,W=-1,G=-2,k=new t,V=new t,Y=new t,j=l.EPSILON14,H=new e;new e;var Z=new e,X=new e,J=-1,K=-2,Q=new t,$=new t,et={};et.removeDuplicates=function(e){var n=h.removeDuplicates(e);return t.equals(n[0],n[n.length-1])?n.slice(1):n},et.computeArea2D=function(e){for(var t=e.length,n=0,r=t-1,a=0;t>a;r=a++){var i=e[r],o=e[a];n+=i.x*o.y-o.x*i.y}return.5*n},et.computeWindingOrder2D=function(e){var t=et.computeArea2D(e);return t>0?m.COUNTER_CLOCKWISE:m.CLOCKWISE},et.triangulate=function(e){for(var t=e.length,n=[],r=0;t>r;++r)n[r]={position:e[r],index:r};return D(n)};var tt=new t,nt=new t,rt=new t,at=new t,it=new t,ot=new t,ut=new t;return et.computeSubdivision=function(e,i,o,u){u=r(u,l.RADIANS_PER_DEGREE);var f,h=o.slice(0),p=i.length,m=new Array(3*p),y=0;for(f=0;p>f;f++){var v=i[f];m[y++]=v.x,m[y++]=v.y,m[y++]=v.z}for(var g=[],w={},x=e.maximumRadius,E=l.chordLength(u,x),S=E*E;h.length>0;){var O,T,M=h.pop(),_=h.pop(),P=h.pop(),b=t.fromArray(m,3*P,tt),N=t.fromArray(m,3*_,nt),A=t.fromArray(m,3*M,rt),I=t.multiplyByScalar(t.normalize(b,at),x,at),C=t.multiplyByScalar(t.normalize(N,it),x,it),R=t.multiplyByScalar(t.normalize(A,ot),x,ot),z=t.magnitudeSquared(t.subtract(I,C,ut)),D=t.magnitudeSquared(t.subtract(C,R,ut)),L=t.magnitudeSquared(t.subtract(R,I,ut)),q=Math.max(z,D,L);q>S?z===q?(O=Math.min(P,_)+" "+Math.max(P,_),f=w[O],a(f)||(T=t.add(b,N,ut),t.multiplyByScalar(T,.5,T),m.push(T.x,T.y,T.z),f=m.length/3-1,w[O]=f),h.push(P,f,M),h.push(f,_,M)):D===q?(O=Math.min(_,M)+" "+Math.max(_,M),f=w[O],a(f)||(T=t.add(N,A,ut),t.multiplyByScalar(T,.5,T),m.push(T.x,T.y,T.z),f=m.length/3-1,w[O]=f),h.push(_,f,P),h.push(f,M,P)):L===q&&(O=Math.min(M,P)+" "+Math.max(M,P),f=w[O],a(f)||(T=t.add(A,b,ut),t.multiplyByScalar(T,.5,T),m.push(T.x,T.y,T.z),f=m.length/3-1,w[O]=f),h.push(M,f,_),h.push(f,P,_)):(g.push(P),g.push(_),g.push(M))}return new s({attributes:{position:new c({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:m})},indices:g,primitiveType:d.TRIANGLES})},et.scaleToGeodeticHeight=function(e,n,i,u){i=r(i,o.WGS84);var s=Q,c=$;if(n=r(n,0),u=r(u,!0),a(e)&&a(e.attributes)&&a(e.attributes.position))for(var l=e.attributes.position.values,f=l.length,h=0;f>h;h+=3)t.fromArray(l,h,c),u&&(c=i.scaleToGeodeticSurface(c,c)),s=i.geodeticSurfaceNormal(c,s),t.multiplyByScalar(s,n,s),t.add(c,s,c),l[h]=c.x,l[h+1]=c.y,l[h+2]=c.z;return e},et.eliminateHoles=function(e,n,a){a=r(a,o.WGS84);for(var i=[],u=0;u<n.length;u++){for(var s=[],c=0;c<n[u].length;c++)s.push(t.clone(n[u][c]));i.push(s)}for(var l=e;i.length>0;)l=O(l,i,a);return l},et}),define("Core/PolylineVolumeGeometryLibrary",["./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./CornerType","./EllipsoidTangentPlane","./Math","./Matrix3","./Matrix4","./PolylinePipeline","./Quaternion","./Transforms"],function(e,t,n,r,a,i,o,u,s,c,l,f){"use strict";function h(e,t){for(var n=new Array(e.length),r=0;r<e.length;r++){var a=e[r];z=t.cartesianToCartographic(a,z),n[r]=z.height,e[r]=t.scaleToGeodeticSurface(a,a)}return n}function d(e,n,r,a){var i,o=e[0],u=e[1],s=t.angleBetween(o,u),c=Math.ceil(s/a),l=new Array(c);if(n===r){for(i=0;c>i;i++)l[i]=n;return l.push(r),l}var f=r-n,h=f/c;for(i=1;c>i;i++){var d=n+i*h;l[i]=d}return l[0]=n,l.push(r),l}function p(n,r,a,o){var u=new i(a,o),s=u.projectPointOntoPlane(t.add(a,n,H),H),c=u.projectPointOntoPlane(t.add(a,r,Z),Z),l=e.angleBetween(s,c);return c.x*s.y-c.y*s.x>=0?-l:l}function m(e,n,r,a,i,o,c,l){var h=F,d=W;L=f.eastNorthUpToFixedFrame(e,i,L),h=s.multiplyByPointAsVector(L,D,h),h=t.normalize(h,h);var m=p(h,n,e,i);U=u.fromRotationZ(m,U),G.z=o,L=s.multiplyTransformation(L,s.fromRotationTranslation(U,G,q),L);var y=B;y[0]=c;for(var v=0;l>v;v++)for(var g=0;g<r.length;g+=3)d=t.fromArray(r,g,d),d=u.multiplyByVector(y,d,d),d=s.multiplyByPoint(L,d,d),a.push(d.x,d.y,d.z);return a}function y(e,n,r,a,i,o,u){for(var s=0;s<e.length;s+=3){var c=t.fromArray(e,s,k);a=m(c,n,r,a,i,o[s/3],u,1)}return a}function v(e,t){var n=e.length,r=new Array(6*n),a=0,i=t.x+t.width/2,o=t.y+t.height/2,u=e[0];r[a++]=u.x-i,r[a++]=0,r[a++]=u.y-o;for(var s=1;n>s;s++){u=e[s];var c=u.x-i,l=u.y-o;r[a++]=c,r[a++]=0,r[a++]=l,r[a++]=c,r[a++]=0,r[a++]=l}return u=e[0],r[a++]=u.x-i,r[a++]=0,r[a++]=u.y-o,r}function g(e,t){for(var n=e.length,r=new Array(3*n),a=0,i=t.x+t.width/2,o=t.y+t.height/2,u=0;n>u;u++)r[a++]=e[u].x-i,r[a++]=0,r[a++]=e[u].y-o;return r}function w(e,n,r,i,s,c,f,h,d,p){var y,v=t.angleBetween(t.subtract(n,e,I),t.subtract(r,e,C)),g=i===a.BEVELED?0:Math.ceil(v/o.toRadians(5));y=s?u.fromQuaternion(l.fromAxisAngle(t.negate(e,I),v/(g+1),V),j):u.fromQuaternion(l.fromAxisAngle(e,v/(g+1),V),j);var w,x;if(n=t.clone(n,Y),g>0)for(var E=p?2:1,S=0;g>S;S++)n=u.multiplyByVector(y,n,n),w=t.subtract(n,e,I),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(n,C),f=m(x,w,h,f,c,d,1,E);else w=t.subtract(n,e,I),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(n,C),f=m(x,w,h,f,c,d,1,1),r=t.clone(r,Y),w=t.subtract(r,e,I),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(r,C),f=m(x,w,h,f,c,d,1,1);return f}function x(e,t){return o.equalsEpsilon(e.latitude,t.latitude,o.EPSILON6)&&o.equalsEpsilon(e.longitude,t.longitude,o.EPSILON6)}var E=[new t,new t],S=new t,O=new t,T=new t,M=new t,_=new t,P=new t,b=new t,N=new t,A=new t,I=new t,C=new t,R={},z=new r,D=new t(-1,0,0),L=new s,q=new s,U=new u,B=u.IDENTITY.clone(),F=new t,W=new n,G=new t,k=new t,V=new l,Y=new t,j=new u;R.removeDuplicatesFromShape=function(t){for(var n=t.length,r=[],a=n-1,i=0;n>i;a=i++){var o=t[a],u=t[i];e.equals(o,u)||r.push(u)}return r};var H=new t,Z=new t;R.angleIsGreaterThanPi=function(e,n,r,a){var o=new i(r,a),u=o.projectPointOntoPlane(t.add(r,e,H),H),s=o.projectPointOntoPlane(t.add(r,n,Z),Z);return s.x*u.y-s.y*u.x>=0};var X=new r,J=new r;R.removeDuplicatesFromPositions=function(e,t){var n=e.length;if(2>n)return e.slice(0);var r=[];r.push(e[0]);for(var a=1;n>a;++a){var i=e[a-1],o=e[a],u=t.cartesianToCartographic(i,X),s=t.cartesianToCartographic(o,J);x(u,s)||r.push(o)}return r};var K=new t,Q=new t;return R.computePositions=function(e,n,r,i,u){var s=i._ellipsoid,l=h(e,s),f=i._granularity,p=i._cornerType,x=u?v(n,r):g(n,r),C=u?g(n,r):void 0,z=r.height/2,D=r.width/2,L=e.length,q=[],U=u?[]:void 0,B=S,F=O,W=T,G=M,k=_,V=P,Y=b,j=N,H=A,Z=e[0],X=e[1];G=s.geodeticSurfaceNormal(Z,G),B=t.subtract(X,Z,B),B=t.normalize(B,B),j=t.cross(G,B,j),j=t.normalize(j,j);var J=l[0],$=l[1];u&&(U=m(Z,j,C,U,s,J+z,1,1)),H=t.clone(Z,H),Z=X,F=t.negate(B,F);for(var et,tt,nt=1;L-1>nt;nt++){var rt=u?2:1;X=e[nt+1],B=t.subtract(X,Z,B),B=t.normalize(B,B),W=t.add(B,F,W),W=t.normalize(W,W),G=s.geodeticSurfaceNormal(Z,G);var at=t.multiplyByScalar(G,t.dot(B,G),K);t.subtract(B,at,at),t.normalize(at,at);var it=t.multiplyByScalar(G,t.dot(F,G),Q);t.subtract(F,it,it),t.normalize(it,it);var ot=!o.equalsEpsilon(Math.abs(t.dot(at,it)),1,o.EPSILON7);if(ot){W=t.cross(W,G,W),W=t.cross(G,W,W),W=t.normalize(W,W);var ut=1/Math.max(.25,t.magnitude(t.cross(W,F,I))),st=R.angleIsGreaterThanPi(B,F,Z,s);st?(k=t.add(Z,t.multiplyByScalar(W,ut*D,W),k),V=t.add(k,t.multiplyByScalar(j,D,V),V),E[0]=t.clone(H,E[0]),E[1]=t.clone(V,E[1]),et=d(E,J+z,$+z,f),tt=c.generateArc({positions:E,granularity:f,ellipsoid:s}),q=y(tt,j,x,q,s,et,1),j=t.cross(G,B,j),j=t.normalize(j,j),Y=t.add(k,t.multiplyByScalar(j,D,Y),Y),p===a.ROUNDED||p===a.BEVELED?w(k,V,Y,p,st,s,q,x,$+z,u):(W=t.negate(W,W),q=m(Z,W,x,q,s,$+z,ut,rt)),H=t.clone(Y,H)):(k=t.add(Z,t.multiplyByScalar(W,ut*D,W),k),V=t.add(k,t.multiplyByScalar(j,-D,V),V),E[0]=t.clone(H,E[0]),E[1]=t.clone(V,E[1]),et=d(E,J+z,$+z,f),tt=c.generateArc({positions:E,granularity:f,ellipsoid:s}),q=y(tt,j,x,q,s,et,1),j=t.cross(G,B,j),j=t.normalize(j,j),Y=t.add(k,t.multiplyByScalar(j,-D,Y),Y),p===a.ROUNDED||p===a.BEVELED?w(k,V,Y,p,st,s,q,x,$+z,u):q=m(Z,W,x,q,s,$+z,ut,rt),H=t.clone(Y,H)),F=t.negate(B,F)}else q=m(H,j,x,q,s,J+z,1,1),H=Z;J=$,$=l[nt+1],Z=X}E[0]=t.clone(H,E[0]),E[1]=t.clone(Z,E[1]),et=d(E,J+z,$+z,f),tt=c.generateArc({positions:E,granularity:f,ellipsoid:s}),q=y(tt,j,x,q,s,et,1),u&&(U=m(Z,j,C,U,s,$+z,1,1)),L=q.length;var ct=u?L+U.length:L,lt=new Float64Array(ct);return lt.set(q),u&<.set(U,L),lt},R}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.position=e(t.position,!1),this.normal=e(t.normal,!1),this.st=e(t.st,!1),this.binormal=e(t.binormal,!1),this.tangent=e(t.tangent,!1),this.color=e(t.color,!1)};return a.POSITION_ONLY=r(new a({position:!0})),a.POSITION_AND_NORMAL=r(new a({position:!0,normal:!0})),a.POSITION_NORMAL_AND_ST=r(new a({position:!0,normal:!0,st:!0})),a.POSITION_AND_ST=r(new a({position:!0,st:!0})),a.POSITION_AND_COLOR=r(new a({position:!0,color:!0})),a.ALL=r(new a({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),a.DEFAULT=a.POSITION_NORMAL_AND_ST,a.packedLength=6,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.position?1:0,n[r++]=t.normal?1:0,n[r++]=t.st?1:0,n[r++]=t.binormal?1:0,n[r++]=t.tangent?1:0,n[r++]=t.color?1:0},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.position=1===n[r++],i.normal=1===n[r++],i.st=1===n[r++],i.binormal=1===n[r++],i.tangent=1===n[r++],i.color=1===n[r++],i},a.clone=function(e,n){return t(e)?(t(n)||(n=new a),n.position=e.position,n.normal=e.normal,n.st=e.st,n.binormal=e.binormal,n.tangent=e.tangent,n.color=e.color,n):void 0},a}),define("Core/PolylineVolumeGeometry",["./BoundingRectangle","./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./CornerType","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./GeometryPipeline","./IndexDatatype","./Math","./PolygonPipeline","./PolylineVolumeGeometryLibrary","./PrimitiveType","./VertexFormat","./WindingOrder"],function(e,t,n,r,a,i,o,u,s,c,l,f,h,d,p,m,y,v,g,w,x){"use strict";function E(e,n,r,i){var o=new h;i.position&&(o.position=new f({componentDatatype:a.DOUBLE,componentsPerAttribute:3,values:e}));var u,s,c,m,v,w,x=n.length,E=e.length/3,S=(E-2*x)/(2*x),O=y.triangulate(n),T=6*(S-1)*x+2*O.length,M=p.createTypedArray(E,T),_=2*x,P=0;for(u=0;S-1>u;u++){for(s=0;x-1>s;s++)c=2*s+2*u*x,w=c+_,m=c+1,v=m+_,M[P++]=m,M[P++]=c,M[P++]=v,M[P++]=v,M[P++]=c,M[P++]=w;c=2*x-2+2*u*x,m=c+1,v=m+_,w=c+_,M[P++]=m,M[P++]=c,M[P++]=v,M[P++]=v,M[P++]=c,M[P++]=w}if(i.st||i.tangent||i.binormal){var b,N,A=new Float32Array(2*E),I=1/(S-1),C=1/r.height,R=r.height/2,z=0;for(u=0;S>u;u++){for(b=u*I,N=C*(n[0].y+R),A[z++]=b,A[z++]=N,s=1;x>s;s++)N=C*(n[s].y+R),A[z++]=b,A[z++]=N,A[z++]=b,A[z++]=N;N=C*(n[0].y+R),A[z++]=b,A[z++]=N}for(s=0;x>s;s++)b=0,N=C*(n[s].y+R),A[z++]=b,A[z++]=N;for(s=0;x>s;s++)b=(S-1)*I,N=C*(n[s].y+R),A[z++]=b,A[z++]=N;o.st=new f({componentDatatype:a.FLOAT,componentsPerAttribute:2,values:new Float32Array(A)})}var D=E-2*x;for(u=0;u<O.length;u+=3){var L=O[u]+D,q=O[u+1]+D,U=O[u+2]+D;M[P++]=L,M[P++]=q,M[P++]=U,M[P++]=U+x,M[P++]=q+x,M[P++]=L+x}var B=new l({attributes:o,indices:M,boundingSphere:t.fromVertices(e),primitiveType:g.TRIANGLES});return i.normal&&(B=d.computeNormal(B)),(i.tangent||i.binormal)&&(B=d.computeBinormalAndTangent(B),i.tangent||(B.attributes.tangent=void 0),i.binormal||(B.attributes.binormal=void 0),i.st||(B.attributes.st=void 0)),B}var S=function(e){e=o(e,o.EMPTY_OBJECT);var t=e.polylinePositions,a=e.shapePositions;this._positions=t,this._shape=a,this._ellipsoid=c.clone(o(e.ellipsoid,c.WGS84)),this._cornerType=o(e.cornerType,i.ROUNDED),this._vertexFormat=w.clone(o(e.vertexFormat,w.DEFAULT)),this._granularity=o(e.granularity,m.RADIANS_PER_DEGREE),this._workerName="createPolylineVolumeGeometry";var u=1+t.length*r.packedLength;u+=1+a.length*n.packedLength,this.packedLength=u+c.packedLength+w.packedLength+2};S.pack=function(e,t,a){a=o(a,0);var i,u=e._positions,s=u.length;for(t[a++]=s,i=0;s>i;++i,a+=r.packedLength)r.pack(u[i],t,a);var l=e._shape;for(s=l.length,t[a++]=s,i=0;s>i;++i,a+=n.packedLength)n.pack(l[i],t,a);c.pack(e._ellipsoid,t,a),a+=c.packedLength,w.pack(e._vertexFormat,t,a),a+=w.packedLength,t[a++]=e._cornerType,t[a]=e._granularity};var O=c.clone(c.UNIT_SPHERE),T=new w,M={polylinePositions:void 0,shapePositions:void 0,ellipsoid:O,vertexFormat:T,cornerType:void 0,granularity:void 0};S.unpack=function(e,t,a){t=o(t,0);var i,s=e[t++],l=new Array(s);for(i=0;s>i;++i,t+=r.packedLength)l[i]=r.unpack(e,t);s=e[t++];var f=new Array(s);for(i=0;s>i;++i,t+=n.packedLength)f[i]=n.unpack(e,t);var h=c.unpack(e,t,O);t+=c.packedLength;var d=w.unpack(e,t,T);t+=w.packedLength;var p=e[t++],m=e[t];return u(a)?(a._positions=l,a._shape=f,a._ellipsoid=c.clone(h,a._ellipsoid),a._vertexFormat=w.clone(d,a._vertexFormat),a._cornerType=p,a._granularity=m,a):(M.polylinePositions=l,M.shapePositions=f,M.cornerType=p,M.granularity=m,new S(M))};var _=new e;return S.createGeometry=function(t){var n=t._positions,r=v.removeDuplicatesFromPositions(n,t._ellipsoid),a=t._shape;if(a=v.removeDuplicatesFromShape(a),r.length<2||a.length<3)return void 0;y.computeWindingOrder2D(a)===x.CLOCKWISE&&a.reverse();var i=e.fromPoints(a,_),o=v.computePositions(r,a,i,t,!0);return E(o,a,i,t._vertexFormat)},S}),define("Workers/createPolylineVolumeGeometry",["../Core/defined","../Core/Ellipsoid","../Core/PolylineVolumeGeometry"],function(e,t,n){"use strict";function r(r,a){return e(a)&&(r=n.unpack(r,a)),r._ellipsoid=t.clone(r._ellipsoid),n.createGeometry(r)}return r})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createPolylineVolumeOutlineGeometry.js b/libs/Cesium/Workers/createPolylineVolumeOutlineGeometry.js new file mode 100644 index 0000000000..ec9654f9cc --- /dev/null +++ b/libs/Cesium/Workers/createPolylineVolumeOutlineGeometry.js @@ -0,0 +1,229 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[1&e];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(e){return e>0?1:0>e?-1:0},n.signNotZero=function(e){return 0>e?-1:1},n.toSNorm=function(e){return Math.round(255*(.5*n.clamp(e,-1,1)+.5))},n.fromSNorm=function(e){return 2*(n.clamp(e,0,255)/255)-1},n.sinh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t-n)},n.cosh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t+n)},n.lerp=function(e,t,n){return(1-n)*e+n*t},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(e){return e*n.RADIANS_PER_DEGREE},n.toDegrees=function(e){return e*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(e){var t=n.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},n.negativePiToPi=function(e){return n.zeroToTwoPi(e+n.PI)-n.PI},n.zeroToTwoPi=function(e){var t=n.mod(e,n.TWO_PI);return Math.abs(t)<n.EPSILON14&&Math.abs(e)>n.EPSILON14?n.TWO_PI:t},n.mod=function(e,t){return(e%t+t)%t},n.equalsEpsilon=function(e,n,r,a){a=t(a,r);var i=Math.abs(e-n);return a>=i||i<=r*Math.max(Math.abs(e),Math.abs(n))};var r=[1];n.factorial=function(e){var t=r.length;if(e>=t)for(var n=r[t-1],a=t;e>=a;a++)r.push(n*a);return r[e]},n.incrementWrap=function(e,n,r){return r=t(r,0),++e,e>n&&(e=r),e},n.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},n.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},n.clamp=function(e,t,n){return t>e?t:e>n?n:e};var a=new e;return n.setRandomNumberSeed=function(t){a=new e(t)},n.nextRandomNumber=function(){return a.random()},n.acosClamped=function(e){return Math.acos(n.clamp(e,-1,1))},n.asinClamped=function(e){return Math.asin(n.clamp(e,-1,1))},n.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0)};i.fromSpherical=function(n,r){t(r)||(r=new i);var a=n.clock,o=n.cone,u=e(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(a),r.y=s*Math.sin(a),r.z=u*Math.cos(o),r},i.fromElements=function(e,n,r,a){return t(a)?(a.x=e,a.y=n,a.z=r,a):new i(e,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n):new i(e.x,e.y,e.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r]=t.z},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i,c=new i;i.angleBetween=function(e,t){i.normalize(e,s),i.normalize(t,c);var n=i.dot(s,c),r=i.magnitude(i.cross(s,c,s));return Math.atan2(r,n)};var l=new i;i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Z,t):n.y<=n.z?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_Z,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)},i.cross=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=t.x,u=t.y,s=t.z,c=a*s-i*u,l=i*o-r*s,f=r*u-a*o;return n.x=c,n.y=l,n.z=f,n},i.fromDegrees=function(e,t,n,r,o){var u=a.toRadians(e),s=a.toRadians(t);return i.fromRadians(u,s,n,r,o)};var f=new i,h=new i,d=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(n,r,a,o,u){a=e(a,0);var s=t(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=i.normalize(f,f),i.multiplyComponents(s,f,h);var l=Math.sqrt(i.dot(f,h));return h=i.divideByScalar(h,l,h),f=i.multiplyByScalar(f,a,f),t(u)||(u=new i),i.add(h,f,u)},i.fromDegreesArray=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=a.toRadians(e[o]);return i.fromRadiansArray(r,t,n)},i.fromRadiansArray=function(e,n,r){var a=e.length;t(r)?r.length=a/2:r=new Array(a/2);for(var o=0;a>o;o+=2){var u=e[o],s=e[o+1];r[o/2]=i.fromRadians(u,s,0,n,r[o/2])}return r},i.fromDegreesArrayHeights=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o+=3)r[o]=a.toRadians(e[o]),r[o+1]=a.toRadians(e[o+1]),r[o+2]=e[o+2];return i.fromRadiansArrayHeights(r,t,n)},i.fromRadiansArrayHeights=function(e,n,r){var a=e.length;t(r)?r.length=a/3:r=new Array(a/3);for(var o=0;a>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];r[o/3]=i.fromRadians(u,s,c,n,r[o/3])}return r},i.ZERO=r(new i(0,0,0)),i.UNIT_X=r(new i(1,0,0)),i.UNIT_Y=r(new i(0,1,0)),i.UNIT_Z=r(new i(0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.longitude=e(t,0),this.latitude=e(n,0),this.height=e(r,0)};return i.fromRadians=function(n,r,a,o){return a=e(a,0),t(o)?(o.longitude=n,o.latitude=r,o.height=a,o):new i(n,r,a)},i.fromDegrees=function(e,t,n,r){return e=a.toRadians(e),t=a.toRadians(t),i.fromRadians(e,t,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.longitude=e.longitude,n.latitude=e.latitude,n.height=e.height,n):new i(e.longitude,e.latitude,e.height):void 0},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.longitude===n.longitude&&e.latitude===n.latitude&&e.height===n.height},i.equalsEpsilon=function(e,n,r){return e===n||t(e)&&t(n)&&Math.abs(e.longitude-n.longitude)<=r&&Math.abs(e.latitude-n.latitude)<=r&&Math.abs(e.height-n.height)<=r},i.ZERO=r(new i(0,0,0)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),n=Object.defineProperties;return t&&e(n)||(n=function(e){return e}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(t,r,a,i){r=n(r,0),a=n(a,0),i=n(i,0),t._radii=new e(r,a,i),t._radiiSquared=new e(r*r,a*a,i*i),t._radiiToTheFourth=new e(r*r*r*r,a*a*a*a,i*i*i*i),t._oneOverRadii=new e(0===r?0:1/r,0===a?0:1/a,0===i?0:1/i),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===a?0:1/(a*a),0===i?0:1/(i*i)),t._minimumRadius=Math.min(r,a,i),t._maximumRadius=Math.max(r,a,i),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,n)};a(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,n){if(!r(t))return void 0;var a=t._radii;return r(n)?(e.clone(a,n._radii),e.clone(t._radiiSquared,n._radiiSquared),e.clone(t._radiiToTheFourth,n._radiiToTheFourth),e.clone(t._oneOverRadii,n._oneOverRadii),e.clone(t._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=t._minimumRadius,n._maximumRadius=t._maximumRadius,n._centerToleranceSquared=t._centerToleranceSquared,n):new c(a.x,a.y,a.z)},c.fromCartesian3=function(e,t){return r(t)||(t=new c),r(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,r,a){a=n(a,0),e.pack(t._radii,r,a)},c.unpack=function(t,r,a){r=n(r,0);var i=e.unpack(t,r);return c.fromCartesian3(i,a)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,n){var a=t.longitude,i=t.latitude,o=Math.cos(i),u=o*Math.cos(a),s=o*Math.sin(a),c=Math.sin(i);return r(n)||(n=new e),n.x=u,n.y=s,n.z=c,e.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(t,n){return r(n)||(n=new e),n=e.multiplyComponents(t,this._oneOverRadiiSquared,n),e.normalize(n,n)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,n){var a=l,i=f;this.geodeticSurfaceNormalCartographic(t,a),e.multiplyComponents(this._radiiSquared,a,i);var o=Math.sqrt(e.dot(a,i));return e.divideByScalar(i,o,i),e.multiplyByScalar(a,t.height,a),r(n)||(n=new e),e.add(i,a,n)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;a++)t[a]=this.cartographicToCartesian(e[a],t[a]);return t};var h=new e,d=new e,m=new e;c.prototype.cartesianToCartographic=function(n,a){var i=this.scaleToGeodeticSurface(n,d);if(!r(i))return void 0;var o=this.geodeticSurfaceNormal(i,h),s=e.subtract(n,i,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,n))*e.magnitude(s);return r(a)?(a.longitude=c,a.latitude=l,a.height=f,a):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;++a)t[a]=this.cartesianToCartographic(e[a],t[a]);return t};var p=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,n){var a=t.x,i=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=a*a*c*c,d=i*i*l*l,m=o*o*f*f,v=h+d+m,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,p);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,n):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,_=x.z,M=y;M.x=2*w.x*E,M.y=2*w.y*S,M.z=2*w.z*_;var O,P,T,R,C,N,I,z,A,b,D,q=(1-g)*e.magnitude(t)/(.5*e.magnitude(M)),U=0;do{q-=U,T=1/(1+q*E),R=1/(1+q*S),C=1/(1+q*_),N=T*T,I=R*R,z=C*C,A=N*T,b=I*R,D=z*C,O=h*N+d*I+m*z-1,P=h*A*E+d*b*S+m*D*_;var L=-2*P;U=O/L}while(Math.abs(O)>u.EPSILON12);return r(n)?(n.x=a*T,n.y=i*R,n.z=o*C,n):new e(a*T,i*R,o*C)},c.prototype.scaleToGeocentricSurface=function(t,n){r(n)||(n=new e);var a=t.x,i=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(a*a*u.x+i*i*u.y+o*o*u.z);return e.multiplyByScalar(t,s,n)},c.prototype.transformPositionToScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._radii,n)},c.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n){this.x=e(t,0),this.y=e(n,0)};i.fromElements=function(e,n,r){return t(r)?(r.x=e,r.y=n,r):new i(e,n)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n):new i(e.x,e.y):void 0},i.fromCartesian3=i.clone,i.fromCartesian4=i.clone,i.packedLength=2,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r]=t.y},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y)},i.minimumComponent=function(e){return Math.min(e.x,e.y)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i,c=new i;i.angleBetween=function(e,t){return i.normalize(e,s),i.normalize(t,c),a.acosClamped(i.dot(s,c))};var l=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Y,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)},i.ZERO=r(new i(0,0)),i.UNIT_X=r(new i(1,0)),i.UNIT_Y=r(new i(0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+")"},i}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,n,r,a,i,o){"use strict";var u=function(e){this._ellipsoid=n(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return a(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,n){var a=this._semimajorAxis,i=t.longitude*a,o=t.latitude*a,u=t.height;return r(n)?(n.x=i,n.y=o,n.z=u,n):new e(i,o,u)},u.prototype.unproject=function(e,n){var a=this._oneOverSemimajorAxis,i=e.x*a,o=e.y*a,u=e.z;return r(n)?(n.longitude=i,n.latitude=o,n.height=u,n):new t(i,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.west=t(e,0),this.south=t(n,0),this.east=t(r,0),this.north=t(a,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.west,n[r++]=e.south,n[r++]=e.east,n[r]=e.north},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.west=e[r++],a.south=e[r++],a.east=e[r++],a.north=e[r],a},s.computeWidth=function(e){var t=e.east,n=e.west;return n>t&&(t+=u.TWO_PI),t-n},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,r,a,i,o){return e=u.toRadians(t(e,0)),r=u.toRadians(t(r,0)),a=u.toRadians(t(a,0)),i=u.toRadians(t(i,0)),n(o)?(o.west=e,o.south=r,o.east=a,o.north=i,o):new s(e,r,a,i)},s.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,a=-Number.MAX_VALUE,i=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];r=Math.min(r,l.longitude),a=Math.max(a,l.longitude),i=Math.min(i,l.latitude),o=Math.max(o,l.latitude)}return n(t)?(t.west=r,t.south=i,t.east=a,t.north=o,t):new s(r,i,a,o)},s.clone=function(e,t){return n(e)?n(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return n(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},s.northwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},s.northeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},s.southeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},s.center=function(t,r){var a=t.east,i=t.west;i>a&&(a+=u.TWO_PI);var o=u.negativePiToPi(.5*(i+a)),s=.5*(t.south+t.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new e(o,s)},s.intersection=function(e,t,r){var a=e.east,i=e.west,o=t.east,c=t.west;i>a&&o>0?a+=u.TWO_PI:c>o&&a>0&&(o+=u.TWO_PI),i>a&&0>c?c+=u.TWO_PI:c>o&&0>i&&(i+=u.TWO_PI);var l=u.negativePiToPi(Math.max(i,c)),f=u.negativePiToPi(Math.min(a,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var h=Math.max(e.south,t.south),d=Math.min(e.north,t.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(e,t){var n=t.longitude,r=t.latitude,a=e.west,i=e.east;return a>i&&(i+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>a||u.equalsEpsilon(n,a,u.EPSILON14))&&(i>n||u.equalsEpsilon(n,i,u.EPSILON14))&&r>=e.south&&r<=e.north};var c=new e;return s.subsample=function(e,r,a,o){r=t(r,i.WGS84),a=t(a,0),n(o)||(o=[]);var l=0,f=e.north,h=e.south,d=e.east,m=e.west,p=c;p.height=a,p.longitude=m,p.latitude=f,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=d,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=0>f?f:h>0?h:0;for(var y=1;8>y;++y)p.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,p)&&(o[l]=r.cartographicToCartesian(p,o[l]),l++);return 0===p.latitude&&(p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=d,o[l]=r.cartographicToCartesian(p,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingRectangle",["./Cartesian2","./Cartographic","./defaultValue","./defined","./DeveloperError","./GeographicProjection","./Intersect","./Rectangle"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,t,r,a){this.x=n(e,0),this.y=n(t,0),this.width=n(r,0),this.height=n(a,0)};s.fromPoints=function(e,t){if(r(t)||(t=new s),!r(e)||0===e.length)return t.x=0,t.y=0,t.width=0,t.height=0,t;for(var n=e.length,a=e[0].x,i=e[0].y,o=e[0].x,u=e[0].y,c=1;n>c;c++){var l=e[c],f=l.x,h=l.y;a=Math.min(f,a),o=Math.max(f,o),i=Math.min(h,i),u=Math.max(h,u)}return t.x=a,t.y=i,t.width=o-a,t.height=u-i,t};var c=new i,l=new t,f=new t;return s.fromRectangle=function(t,a,i){if(r(i)||(i=new s),!r(t))return i.x=0,i.y=0,i.width=0,i.height=0,i;a=n(a,c);var o=a.project(u.southwest(t,l)),h=a.project(u.northeast(t,f));return e.subtract(h,o,h),i.x=o.x,i.y=o.y,i.width=h.x,i.height=h.y,i},s.clone=function(e,t){return r(e)?r(t)?(t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height,t):new s(e.x,e.y,e.width,e.height):void 0},s.union=function(e,t,n){r(n)||(n=new s);var a=Math.min(e.x,t.x),i=Math.min(e.y,t.y),o=Math.max(e.x+e.width,t.x+t.width),u=Math.max(e.y+e.height,t.y+t.height);return n.x=a,n.y=i,n.width=o-a,n.height=u-i,n},s.expand=function(e,t,n){n=s.clone(e,n);var r=t.x-n.x,a=t.y-n.y;return r>n.width?n.width=r:0>r&&(n.width-=r,n.x=t.x),a>n.height?n.height=a:0>a&&(n.height-=a,n.y=t.y),n},s.intersect=function(e,t){var n=e.x,r=e.y,a=t.x,i=t.y;return n>a+t.width||n+e.width<a||r+e.height<i||r>i+t.height?o.OUTSIDE:o.INTERSECTING},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.intersect=function(e){return s.intersect(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},n=function(n,r){e(t[n])||(t[n]=!0,console.log(r))};return n}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,n){this.start=e(t,0),this.stop=e(n,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r,a){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0),this.w=e(a,0)};i.fromElements=function(e,n,r,a,o){return t(o)?(o.x=e,o.y=n,o.z=r,o.w=a,o):new i(e,n,r,a)},i.fromColor=function(e,n){return t(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new i(e.red,e.green,e.blue,e.alpha)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new i(e.x,e.y,e.z,e.w):void 0},i.packedLength=4,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r++]=t.z,n[r]=t.w},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r++],a.w=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,s);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?n.x<=n.w?i.clone(i.UNIT_X,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t):n.y<=n.z?n.y<=n.w?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)&&a.equalsEpsilon(e.w,n.w,r,i)},i.ZERO=r(new i(0,0,0,0)),i.UNIT_X=r(new i(1,0,0,0)),i.UNIT_Y=r(new i(0,1,0,0)),i.UNIT_Z=r(new i(0,0,1,0)),i.UNIT_W=r(new i(0,0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i){"use strict";function o(e){for(var t=0,n=0;9>n;++n){var r=e[n];t+=r*r}return Math.sqrt(t)}function u(e){for(var t=0,n=0;3>n;++n){var r=e[c.getElementIndex(d[n],h[n])];t+=2*r*r}return Math.sqrt(t)}function s(e,t){for(var n=i.EPSILON15,r=0,a=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(d[o],h[o])]);u>r&&(a=o,r=u)}var s=1,l=0,f=h[a],m=d[a];if(Math.abs(e[c.getElementIndex(m,f)])>n){var p,y=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(m,f)],w=(y-v)/2/g;p=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+p*p),l=p*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,f)]=l,t[c.getElementIndex(f,m)]=-l,t}var c=function(e,n,r,a,i,o,u,s,c){this[0]=t(e,0),this[1]=t(a,0),this[2]=t(u,0),this[3]=t(n,0),this[4]=t(i,0),this[5]=t(s,0),this[6]=t(r,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r++]=e[7],n[r++]=e[8]},c.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r++],a[1]=e[r++],a[2]=e[r++],a[3]=e[r++],a[4]=e[r++],a[5]=e[r++],a[6]=e[r++],a[7]=e[r++],a[8]=e[r++],a},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r],a[1]=e[r+1],a[2]=e[r+2],a[3]=e[r+3],a[4]=e[r+4],a[5]=e[r+5],a[6]=e[r+6],a[7]=e[r+7],a[8]=e[r+8],a},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var r=e.x*e.x,a=e.x*e.y,i=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,h=e.z*e.w,d=e.w*e.w,m=r-u-f+d,p=2*(a-h),y=2*(i+l),v=2*(a+h),g=-r+u-f+d,w=2*(s-o),x=2*(i-l),E=2*(s+o),S=-r-u+f+d;return n(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=p,t[4]=g,t[5]=E,t[6]=y,t[7]=w,t[8]=S,t):new c(m,p,y,v,g,w,x,E,S)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return n(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=a,t[6]=0,t[7]=-a,t[8]=r,t):new c(1,0,0,0,r,-a,0,a,r)},c.fromRotationY=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=0,t[2]=-a,t[3]=0,t[4]=1,t[5]=0,t[6]=a,t[7]=0,t[8]=r,t):new c(r,0,a,0,1,0,-a,0,r)},c.fromRotationZ=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=a,t[2]=0,t[3]=-a,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(r,-a,0,a,r,0,0,0,1)},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,n){var r=3*t,a=e[r],i=e[r+1],o=e[r+2];return n.x=a,n.y=i,n.z=o,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=3*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r},c.getRow=function(e,t,n){var r=e[t],a=e[t+3],i=e[t+6]; +return n.x=r,n.y=a,n.z=i,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+3]=n.y,r[t+6]=n.z,r};var l=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),n};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,n){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],a=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],i=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=r,n[1]=a,n[2]=i,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[3]*a+e[6]*i,u=e[1]*r+e[4]*a+e[7]*i,s=e[2]*r+e[5]*a+e[8]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n},c.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var n=e[0],r=e[3],a=e[6],i=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=n,t[1]=r,t[2]=a,t[3]=i,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var h=[1,0,0],d=[2,2,1],m=new c,p=new c;return c.computeEigenDecomposition=function(e,t){var r=i.EPSILON20,a=10,l=0,f=0;n(t)||(t={});for(var h=t.unitary=c.clone(c.IDENTITY,t.unitary),d=t.diagonal=c.clone(e,t.diagonal),y=r*o(d);a>f&&u(d)>y;)s(d,m),c.transpose(m,p),c.multiply(d,m,d),c.multiply(p,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],n=e[3],r=e[6],a=e[1],i=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(i*c-s*o)+a*(s*r-n*c)+u*(n*o-i*r)},c.inverse=function(e,t){var n=e[0],a=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],h=e[7],d=e[8],m=c.determinant(e);if(Math.abs(m)<=i.EPSILON15)throw new r("matrix is not invertible");t[0]=s*d-h*l,t[1]=h*o-a*d,t[2]=a*l-s*o,t[3]=f*l-u*d,t[4]=n*d-f*o,t[5]=u*o-n*l,t[6]=u*h-f*s,t[7]=f*a-n*h,t[8]=n*s-u*a;var p=1/m;return c.multiplyByScalar(t,p,t)},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},c.IDENTITY=a(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,n,r,a,i,o,u,s){"use strict";var c=function(e,t,r,a,i,o,u,s,c,l,f,h,d,m,p,y){this[0]=n(e,0),this[1]=n(i,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(t,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(p,0),this[12]=n(a,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(y,0)};c.packedLength=16,c.pack=function(e,t,r){r=n(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},c.unpack=function(e,t,a){return t=n(t,0),r(a)||(a=new c),a[0]=e[t++],a[1]=e[t++],a[2]=e[t++],a[3]=e[t++],a[4]=e[t++],a[5]=e[t++],a[6]=e[t++],a[7]=e[t++],a[8]=e[t++],a[9]=e[t++],a[10]=e[t++],a[11]=e[t++],a[12]=e[t++],a[13]=e[t++],a[14]=e[t++],a[15]=e[t],a},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,a,i){return a=n(a,e.ZERO),r(i)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=0,i[4]=t[3],i[5]=t[4],i[6]=t[5],i[7]=0,i[8]=t[6],i[9]=t[7],i[10]=t[8],i[11]=0,i[12]=a.x,i[13]=a.y,i[14]=a.z,i[15]=1,i):new c(t[0],t[3],t[6],a.x,t[1],t[4],t[7],a.y,t[2],t[5],t[8],a.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,n,a){r(a)||(a=new c);var i=n.x,o=n.y,u=n.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,h=t.x*t.w,d=t.y*t.y,m=t.y*t.z,p=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-d-y+g,x=2*(l-v),E=2*(f+p),S=2*(l+v),_=-s+d-y+g,M=2*(m-h),O=2*(f-p),P=2*(m+h),T=-s-d+y+g;return a[0]=w*i,a[1]=S*i,a[2]=O*i,a[3]=0,a[4]=x*o,a[5]=_*o,a[6]=P*o,a[7]=0,a[8]=E*u,a[9]=M*u,a[10]=T*u,a[11]=0,a[12]=e.x,a[13]=e.y,a[14]=e.z,a[15]=1,a},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,h=new e;c.fromCamera=function(t,n){var a=t.eye,i=t.target,o=t.up;e.normalize(e.subtract(i,a,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,p=l.y,y=l.z,v=h.x,g=h.y,w=h.z,x=a.x,E=a.y,S=a.z,_=u*-x+s*-E+d*-S,M=v*-x+g*-E+w*-S,O=m*x+p*E+y*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=g,n[6]=-p,n[7]=0,n[8]=d,n[9]=w,n[10]=-y,n[11]=0,n[12]=_,n[13]=M,n[14]=O,n[15]=1,n):new c(u,s,d,_,v,g,w,M,-m,-p,-y,O,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,n,r,a){var i=Math.tan(.5*e),o=1/i,u=o/t,s=(r+n)/(n-r),c=2*r*n/(n-r);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=o,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=s,a[11]=-1,a[12]=0,a[13]=0,a[14]=c,a[15]=0,a},c.computeOrthographicOffCenter=function(e,t,n,r,a,i,o){var u=1/(t-e),s=1/(r-n),c=1/(i-a),l=-(t+e)*u,f=-(r+n)*s,h=-(i+a)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o},c.computePerspectiveOffCenter=function(e,t,n,r,a,i,o){var u=2*a/(t-e),s=2*a/(r-n),c=(t+e)/(t-e),l=(r+n)/(r-n),f=-(i+a)/(i-a),h=-1,d=-2*i*a/(i-a);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,n,r,a,i){var o=2*a/(t-e),u=2*a/(r-n),s=(t+e)/(t-e),c=(r+n)/(r-n),l=-1,f=-1,h=-2*a;return i[0]=o,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=u,i[6]=0,i[7]=0,i[8]=s,i[9]=c,i[10]=l,i[11]=f,i[12]=0,i[13]=0,i[14]=h,i[15]=0,i},c.computeViewportTransformation=function(e,t,r,a){e=n(e,n.EMPTY_OBJECT);var i=n(e.x,0),o=n(e.y,0),u=n(e.width,0),s=n(e.height,0);t=n(t,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-t),h=c,d=l,m=f,p=i+c,y=o+l,v=t+f,g=1;return a[0]=h,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=d,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=m,a[11]=0,a[12]=p,a[13]=y,a[14]=v,a[15]=g,a},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,n){var r=4*t,a=e[r],i=e[r+1],o=e[r+2],u=e[r+3];return n.x=a,n.y=i,n.z=o,n.w=u,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=4*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r[a+3]=n.w,r},c.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n},c.getRow=function(e,t,n){var r=e[t],a=e[t+4],i=e[t+8],o=e[t+12];return n.x=r,n.y=a,n.z=i,n.w=o,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+4]=n.y,r[t+8]=n.z,r[t+12]=n.w,r};var d=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],d)),n.y=e.magnitude(e.fromElements(t[4],t[5],t[6],d)),n.z=e.magnitude(e.fromElements(t[8],t[9],t[10],d)),n};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],h=e[9],d=e[10],m=e[11],p=e[12],y=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],_=t[4],M=t[5],O=t[6],P=t[7],T=t[8],R=t[9],C=t[10],N=t[11],I=t[12],z=t[13],A=t[14],b=t[15],D=r*w+u*x+f*E+p*S,q=a*w+s*x+h*E+y*S,U=i*w+c*x+d*E+v*S,L=o*w+l*x+m*E+g*S,B=r*_+u*M+f*O+p*P,W=a*_+s*M+h*O+y*P,F=i*_+c*M+d*O+v*P,G=o*_+l*M+m*O+g*P,k=r*T+u*R+f*C+p*N,j=a*T+s*R+h*C+y*N,V=i*T+c*R+d*C+v*N,Y=o*T+l*R+m*C+g*N,H=r*I+u*z+f*A+p*b,Z=a*I+s*z+h*A+y*b,X=i*I+c*z+d*A+v*b,J=o*I+l*z+m*A+g*b;return n[0]=D,n[1]=q,n[2]=U,n[3]=L,n[4]=B,n[5]=W,n[6]=F,n[7]=G,n[8]=k,n[9]=j,n[10]=V,n[11]=Y,n[12]=H,n[13]=Z,n[14]=X,n[15]=J,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},c.multiplyTransformation=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=e[12],d=e[13],m=e[14],p=t[0],y=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],_=t[10],M=t[12],O=t[13],P=t[14],T=r*p+o*y+c*v,R=a*p+u*y+l*v,C=i*p+s*y+f*v,N=r*g+o*w+c*x,I=a*g+u*w+l*x,z=i*g+s*w+f*x,A=r*E+o*S+c*_,b=a*E+u*S+l*_,D=i*E+s*S+f*_,q=r*M+o*O+c*P+h,U=a*M+u*O+l*P+d,L=i*M+s*O+f*P+m;return n[0]=T,n[1]=R,n[2]=C,n[3]=0,n[4]=N,n[5]=I,n[6]=z,n[7]=0,n[8]=A,n[9]=b,n[10]=D,n[11]=0,n[12]=q,n[13]=U,n[14]=L,n[15]=1,n},c.multiplyByMatrix3=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=t[0],d=t[1],m=t[2],p=t[3],y=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=r*h+o*d+c*m,S=a*h+u*d+l*m,_=i*h+s*d+f*m,M=r*p+o*y+c*v,O=a*p+u*y+l*v,P=i*p+s*y+f*v,T=r*g+o*w+c*x,R=a*g+u*w+l*x,C=i*g+s*w+f*x;return n[0]=E,n[1]=S,n[2]=_,n[3]=0,n[4]=M,n[5]=O,n[6]=P,n[7]=0,n[8]=T,n[9]=R,n[10]=C,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n},c.multiplyByTranslation=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=r*e[0]+a*e[4]+i*e[8]+e[12],u=r*e[1]+a*e[5]+i*e[9]+e[13],s=r*e[2]+a*e[6]+i*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=o,n[13]=u,n[14]=s,n[15]=e[15],n};var p=new e;c.multiplyByUniformScale=function(e,t,n){return p.x=t,p.y=t,p.z=t,c.multiplyByScale(e,p,n)},c.multiplyByScale=function(e,t,n){var r=t.x,a=t.y,i=t.z;return 1===r&&1===a&&1===i?c.clone(e,n):(n[0]=r*e[0],n[1]=r*e[1],n[2]=r*e[2],n[3]=0,n[4]=a*e[4],n[5]=a*e[5],n[6]=a*e[6],n[7]=0,n[8]=i*e[8],n[9]=i*e[9],n[10]=i*e[10],n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=1,n)},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=t.w,u=e[0]*r+e[4]*a+e[8]*i+e[12]*o,s=e[1]*r+e[5]*a+e[9]*i+e[13]*o,c=e[2]*r+e[6]*a+e[10]*i+e[14]*o,l=e[3]*r+e[7]*a+e[11]*i+e[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i,u=e[1]*r+e[5]*a+e[9]*i,s=e[2]*r+e[6]*a+e[10]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i+e[12],u=e[1]*r+e[5]*a+e[9]*i+e[13],s=e[2]*r+e[6]*a+e[10]*i+e[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var n=e[1],r=e[2],a=e[3],i=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=i,t[10]=e[10],t[11]=e[14],t[12]=a,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,n){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;var r=e[0],a=e[4],i=e[8],l=e[12],f=e[1],h=e[5],d=e[9],m=e[13],p=e[2],x=e[6],E=e[10],S=e[14],_=e[3],M=e[7],O=e[11],P=e[15],T=E*P,R=S*O,C=x*P,N=S*M,I=x*O,z=E*M,A=p*P,b=S*_,D=p*O,q=E*_,U=p*M,L=x*_,B=T*h+N*d+I*m-(R*h+C*d+z*m),W=R*f+A*d+q*m-(T*f+b*d+D*m),F=C*f+b*h+U*m-(N*f+A*h+L*m),G=z*f+D*h+L*d-(I*f+q*h+U*d),k=R*a+C*i+z*l-(T*a+N*i+I*l),j=T*r+b*i+D*l-(R*r+A*i+q*l),V=N*r+A*a+L*l-(C*r+b*a+U*l),Y=I*r+q*a+U*i-(z*r+D*a+L*i);T=i*m,R=l*d,C=a*m,N=l*h,I=a*d,z=i*h,A=r*m,b=l*f,D=r*d,q=i*f,U=r*h,L=a*f;var H=T*M+N*O+I*P-(R*M+C*O+z*P),Z=R*_+A*O+q*P-(T*_+b*O+D*P),X=C*_+b*M+U*P-(N*_+A*M+L*P),J=z*_+D*M+L*O-(I*_+q*M+U*O),K=C*E+z*S+R*x-(I*S+T*x+N*E),Q=D*S+T*p+b*E-(A*E+q*S+R*p),$=A*x+L*S+N*p-(U*S+C*p+b*x),et=U*E+I*p+q*x-(D*x+L*E+z*p),tt=r*B+a*W+i*F+l*G;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,n[0]=B*tt,n[1]=W*tt,n[2]=F*tt,n[3]=G*tt,n[4]=k*tt,n[5]=j*tt,n[6]=V*tt,n[7]=Y*tt,n[8]=H*tt,n[9]=Z*tt,n[10]=X*tt,n[11]=J*tt,n[12]=K*tt,n[13]=Q*tt,n[14]=$*tt,n[15]=et*tt,n},c.inverseTransformation=function(e,t){var n=e[0],r=e[1],a=e[2],i=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],h=e[13],d=e[14],m=-n*f-r*h-a*d,p=-i*f-o*h-u*d,y=-s*f-c*h-l*d;return t[0]=n,t[1]=i,t[2]=s,t[3]=0,t[4]=r,t[5]=o,t[6]=c,t[7]=0,t[8]=a,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=p,t[14]=y,t[15]=1,t},c.IDENTITY=i(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var a=function(t,n){this.normal=e.clone(t),this.distance=n};a.fromPointNormal=function(n,r,i){var o=-e.dot(r,n);return t(i)?(e.clone(r,i.normal),i.distance=o,i):new a(r,o)};var i=new e;return a.fromCartesian4=function(n,r){var o=e.fromCartesian4(n,i),u=n.w;return t(r)?(e.clone(o,r.normal),r.distance=u,r):new a(o,u)},a.getPointDistance=function(t,n){return e.dot(t.normal,n)+t.distance},a.ORIGIN_XY_PLANE=r(new a(e.UNIT_Z,0)),a.ORIGIN_YZ_PLANE=r(new a(e.UNIT_X,0)),a.ORIGIN_ZX_PLANE=r(new a(e.UNIT_Y,0)),a}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,n,r,a,i,o,u,s,c,l,f,h){"use strict";var d=function(t,r){this.center=e.clone(n(t,e.ZERO)),this.radius=n(r,0)},m=new e,p=new e,y=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,_=new e,M=new e,O=new e;d.fromPoints=function(t,n){if(r(n)||(n=new d),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;for(var a=e.clone(t[0],x),i=e.clone(a,m),o=e.clone(a,p),u=e.clone(a,y),s=e.clone(a,v),c=e.clone(a,g),l=e.clone(a,w),f=t.length,h=1;f>h;h++){e.clone(t[h],a);var P=a.x,T=a.y,R=a.z;P<i.x&&e.clone(a,i),P>s.x&&e.clone(a,s),T<o.y&&e.clone(a,o),T>c.y&&e.clone(a,c),R<u.z&&e.clone(a,u),R>l.z&&e.clone(a,l)}var C=e.magnitudeSquared(e.subtract(s,i,E)),N=e.magnitudeSquared(e.subtract(c,o,E)),I=e.magnitudeSquared(e.subtract(l,u,E)),z=i,A=s,b=C;N>b&&(b=N,z=o,A=c),I>b&&(b=I,z=u,A=l);var D=S;D.x=.5*(z.x+A.x),D.y=.5*(z.y+A.y),D.z=.5*(z.z+A.z);var q=e.magnitudeSquared(e.subtract(A,D,E)),U=Math.sqrt(q),L=_;L.x=i.x,L.y=o.y,L.z=u.z;var B=M;B.x=s.x,B.y=c.y,B.z=l.z;var W=e.multiplyByScalar(e.add(L,B,E),.5,O),F=0;for(h=0;f>h;h++){e.clone(t[h],a);var G=e.magnitude(e.subtract(a,W,E));G>F&&(F=G);var k=e.magnitudeSquared(e.subtract(a,D,E));if(k>q){var j=Math.sqrt(k);U=.5*(U+j),q=U*U;var V=j-U;D.x=(U*D.x+V*a.x)/j,D.y=(U*D.y+V*a.y)/j,D.z=(U*D.z+V*a.z)/j}}return F>U?(e.clone(D,n.center),n.radius=U):(e.clone(W,n.center),n.radius=F),n};var P=new u,T=new e,R=new e,C=new t,N=new t;d.fromRectangle2D=function(e,t,n){return d.fromRectangleWithHeights2D(e,t,0,0,n)},d.fromRectangleWithHeights2D=function(t,a,i,o,u){if(r(u)||(u=new d),!r(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;a=n(a,P),h.southwest(t,C),C.height=i,h.northeast(t,N),N.height=o;var s=a.project(C,T),c=a.project(N,R),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var p=u.center;return p.x=s.x+.5*l,p.y=s.y+.5*f,p.z=s.z+.5*m,u};var I=[];d.fromRectangle3D=function(e,t,a,i){t=n(t,o.WGS84),a=n(a,0);var u;return r(e)&&(u=h.subsample(e,t,a,I)),d.fromPoints(u,i)},d.fromVertices=function(t,a,i,o){if(r(o)||(o=new d),!r(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;a=n(a,e.ZERO),i=n(i,3);var u=x;u.x=t[0]+a.x,u.y=t[1]+a.y,u.z=t[2]+a.z;for(var s=e.clone(u,m),c=e.clone(u,p),l=e.clone(u,y),f=e.clone(u,v),h=e.clone(u,g),P=e.clone(u,w),T=t.length,R=0;T>R;R+=i){var C=t[R]+a.x,N=t[R+1]+a.y,I=t[R+2]+a.z;u.x=C,u.y=N,u.z=I,C<s.x&&e.clone(u,s),C>f.x&&e.clone(u,f),N<c.y&&e.clone(u,c),N>h.y&&e.clone(u,h),I<l.z&&e.clone(u,l),I>P.z&&e.clone(u,P)}var z=e.magnitudeSquared(e.subtract(f,s,E)),A=e.magnitudeSquared(e.subtract(h,c,E)),b=e.magnitudeSquared(e.subtract(P,l,E)),D=s,q=f,U=z;A>U&&(U=A,D=c,q=h),b>U&&(U=b,D=l,q=P);var L=S;L.x=.5*(D.x+q.x),L.y=.5*(D.y+q.y),L.z=.5*(D.z+q.z);var B=e.magnitudeSquared(e.subtract(q,L,E)),W=Math.sqrt(B),F=_;F.x=s.x,F.y=c.y,F.z=l.z;var G=M;G.x=f.x,G.y=h.y,G.z=P.z;var k=e.multiplyByScalar(e.add(F,G,E),.5,O),j=0;for(R=0;T>R;R+=i){u.x=t[R]+a.x,u.y=t[R+1]+a.y,u.z=t[R+2]+a.z;var V=e.magnitude(e.subtract(u,k,E));V>j&&(j=V);var Y=e.magnitudeSquared(e.subtract(u,L,E));if(Y>B){var H=Math.sqrt(Y);W=.5*(W+H),B=W*W;var Z=H-W;L.x=(W*L.x+Z*u.x)/H,L.y=(W*L.y+Z*u.y)/H,L.z=(W*L.z+Z*u.z)/H}}return j>W?(e.clone(L,o.center),o.radius=W):(e.clone(k,o.center),o.radius=j),o},d.fromCornerPoints=function(t,n,a){r(a)||(a=new d);var i=a.center;return e.add(t,n,i),e.multiplyByScalar(i,.5,i),a.radius=e.distance(i,n),a},d.fromEllipsoid=function(t,n){return r(n)||(n=new d),e.clone(e.ZERO,n.center),n.radius=t.maximumRadius,n};var z=new e;d.fromBoundingSpheres=function(t,n){if(r(n)||(n=new d),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;var a=t.length;if(1===a)return d.clone(t[0],n);if(2===a)return d.union(t[0],t[1],n);for(var i=[],o=0;a>o;o++)i.push(t[o].center);n=d.fromPoints(i,n);var u=n.center,s=n.radius;for(o=0;a>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,z)+c.radius)}return n.radius=s,n},d.clone=function(t,n){return r(t)?r(n)?(n.center=e.clone(t.center,n.center),n.radius=t.radius,n):new d(t.center,t.radius):void 0},d.packedLength=4,d.pack=function(e,t,r){r=n(r,0);var a=e.center;t[r++]=a.x,t[r++]=a.y,t[r++]=a.z,t[r]=e.radius},d.unpack=function(e,t,a){t=n(t,0),r(a)||(a=new d);var i=a.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],a.radius=e[t],a};var A=new e,b=new e;d.union=function(t,n,a){r(a)||(a=new d);var i=t.center,o=t.radius,u=n.center,s=n.radius,c=e.subtract(u,i,A),l=e.magnitude(c);if(o>=l+s)return t.clone(a),a;if(s>=l+o)return n.clone(a),a;var f=.5*(o+l+s),h=e.multiplyByScalar(c,(-o+f)/l,b);return e.add(h,i,h),e.clone(h,a.center),a.radius=f,a};var D=new e;d.expand=function(t,n,r){r=d.clone(t,r);var a=e.magnitude(e.subtract(n,r.center,D));return a>r.radius&&(r.radius=a),r},d.intersectPlane=function(t,n){var r=t.center,a=t.radius,i=n.normal,o=e.dot(i,r)+n.distance;return-a>o?s.OUTSIDE:a>o?s.INTERSECTING:s.INSIDE};var q=new f(new e,0);d.intersect=function(e,t){a("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(t,q);return d.intersectPlane(e,n)},d.transform=function(e,t,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=l.getMaximumScale(t)*e.radius,n};var U=new e;d.distanceSquaredTo=function(t,n){var r=e.subtract(t.center,n,U);return e.magnitudeSquared(r)-t.radius*t.radius},d.transformWithoutScale=function(e,t,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var L=new e;d.computePlaneDistances=function(t,n,a,i){r(i)||(i=new c);var o=e.subtract(t.center,n,L),u=e.multiplyByScalar(a,e.dot(a,o),L),s=e.magnitude(u);return i.start=s-t.radius,i.stop=s+t.radius,i};for(var B=new e,W=new e,F=new e,G=new e,k=new e,j=new t,V=new Array(8),Y=0;8>Y;++Y)V[Y]=new e;var H=new u;return d.projectTo2D=function(t,r,a){r=n(r,H);var i=r.ellipsoid,o=t.center,u=t.radius,s=i.geodeticSurfaceNormal(o,B),c=e.cross(e.UNIT_Z,s,W);e.normalize(c,c);var l=e.cross(s,c,F);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,k),h=e.negate(c,G),m=V,p=m[0];e.add(s,l,p),e.add(p,c,p),p=m[1],e.add(s,l,p),e.add(p,h,p),p=m[2],e.add(s,f,p),e.add(p,h,p),p=m[3],e.add(s,f,p),e.add(p,c,p),e.negate(s,s),p=m[4],e.add(s,l,p),e.add(p,c,p),p=m[5],e.add(s,l,p),e.add(p,h,p),p=m[6],e.add(s,f,p),e.add(p,h,p),p=m[7],e.add(s,f,p),e.add(p,c,p);for(var y=m.length,v=0;y>v;++v){var g=m[v];e.add(o,g,g);var w=i.cartesianToCartographic(g,j);r.project(w,g)}a=d.fromPoints(m,a),o=a.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,a},d.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&t.radius===n.radius},d.prototype.intersectPlane=function(e){return d.intersectPlane(this,e)},d.prototype.intersect=function(e){return d.intersect(this,e)},d.prototype.equals=function(e){return d.equals(this,e)},d.prototype.clone=function(e){return d.clone(this,e)},d}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},a={};return t(a,{element:{get:function(){return a.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return a.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return a.supportsFullscreen()?null!==a.element:void 0}}}),a.supportsFullscreen=function(){if(e(n))return n;n=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var a,i=["webkit","moz","o","ms","khtml"],o=0,u=i.length;u>o;++o){var s=i[o];a=s+"RequestFullscreen","function"==typeof t[a]?(r.requestFullscreen=a,n=!0):(a=s+"RequestFullScreen","function"==typeof t[a]&&(r.requestFullscreen=a,n=!0)),a=s+"ExitFullscreen","function"==typeof document[a]?r.exitFullscreen=a:(a=s+"CancelFullScreen","function"==typeof document[a]&&(r.exitFullscreen=a)),a=s+"FullscreenEnabled",e(document[a])?r.fullscreenEnabled=a:(a=s+"FullScreenEnabled",e(document[a])&&(r.fullscreenEnabled=a)),a=s+"FullscreenElement",e(document[a])?r.fullscreenElement=a:(a=s+"FullScreenElement",e(document[a])&&(r.fullscreenElement=a)),a=s+"fullscreenchange",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenChange"),r.fullscreenchange=a),a=s+"fullscreenerror",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenError"),r.fullscreenerror=a)}return n},a.requestFullscreen=function(e){a.supportsFullscreen()&&e[r.requestFullscreen]()},a.exitFullscreen=function(){a.supportsFullscreen()&&document[r.exitFullscreen]()},a}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,n){"use strict";function r(e){for(var t=e.split("."),n=0,r=t.length;r>n;++n)t[n]=parseInt(t[n],10);return t}function a(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=r(e[1]))}return y}function i(){return a()&&v}function o(){if(!t(g)&&(g=!1,!a()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=r(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=r(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,_=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,_=r(e[1])))}return S}function f(){return l()&&_}function h(){if(!t(M)){M=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(M=!0,O=r(e[1]))}return M}function d(){return t(P)||(P=/Windows/i.test(navigator.appVersion)),P}function m(){return h()&&O}function p(){return t(T)||(T=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),T}var y,v,g,w,x,E,S,_,M,O,P,T,R={isChrome:a,chromeVersion:i,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return R.supportsFullscreen=function(){return n.supportsFullscreen()},R.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},R.supportsWebWorkers=function(){return"undefined"!=typeof Worker},R}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,n,r,a){"use strict";if(!r.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(e){switch(e){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},i.fromTypedArray=function(e){return e instanceof Int8Array?i.BYTE:e instanceof Uint8Array?i.UNSIGNED_BYTE:e instanceof Int16Array?i.SHORT:e instanceof Uint16Array?i.UNSIGNED_SHORT:e instanceof Float32Array?i.FLOAT:e instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(e){return t(e)&&(e===i.BYTE||e===i.UNSIGNED_BYTE||e===i.SHORT||e===i.UNSIGNED_SHORT||e===i.FLOAT||e===i.DOUBLE)},i.createTypedArray=function(e,t){switch(e){case i.BYTE:return new Int8Array(t);case i.UNSIGNED_BYTE:return new Uint8Array(t);case i.SHORT:return new Int16Array(t);case i.UNSIGNED_SHORT:return new Uint16Array(t);case i.FLOAT:return new Float32Array(t);case i.DOUBLE:return new Float64Array(t);default:throw new n("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(t,r,a,o){switch(a=e(a,0),o=e(o,(r.byteLength-a)/i.getSizeInBytes(t)),t){case i.BYTE:return new Int8Array(r,a,o); +case i.UNSIGNED_BYTE:return new Uint8Array(r,a,o);case i.SHORT:return new Int16Array(r,a,o);case i.UNSIGNED_SHORT:return new Uint16Array(r,a,o);case i.FLOAT:return new Float32Array(r,a,o);case i.DOUBLE:return new Float64Array(r,a,o);default:throw new n("componentDatatype is not a valid value.")}},a(i)}),define("Core/CornerType",["./freezeObject"],function(e){"use strict";var t={ROUNDED:0,MITERED:1,BEVELED:2};return e(t)}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,n,r,a){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,a.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,r.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(e){var r=-1;for(var a in e.attributes)if(e.attributes.hasOwnProperty(a)&&t(e.attributes[a])&&t(e.attributes[a].values)){var i=e.attributes[a],o=i.values.length/i.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r){"use strict";var a={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return a.getSizeInBytes=function(e){switch(e){case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},a.validate=function(t){return e(t)&&(t===a.UNSIGNED_BYTE||t===a.UNSIGNED_SHORT||t===a.UNSIGNED_INT)},a.createTypedArray=function(e,t){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},a.createTypedArrayFromArrayBuffer=function(e,t,n,a){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,a):new Uint16Array(t,n,a)},n(a)}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,n,r,a,i,o){"use strict";var u=function(r,a,i){this.minimum=e.clone(t(r,e.ZERO)),this.maximum=e.clone(t(a,e.ZERO)),n(i)?i=e.clone(i):(i=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(i,.5,i)),this.center=i};u.fromPoints=function(t,r){if(n(r)||(r=new u),!n(t)||0===t.length)return r.minimum=e.clone(e.ZERO,r.minimum),r.maximum=e.clone(e.ZERO,r.maximum),r.center=e.clone(e.ZERO,r.center),r;for(var a=t[0].x,i=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,f=t.length,h=1;f>h;h++){var d=t[h],m=d.x,p=d.y,y=d.z;a=Math.min(m,a),s=Math.max(m,s),i=Math.min(p,i),c=Math.max(p,c),o=Math.min(y,o),l=Math.max(y,l)}var v=r.minimum;v.x=a,v.y=i,v.z=o;var g=r.maximum;g.x=s,g.y=c,g.z=l;var w=e.add(v,g,r.center);return e.multiplyByScalar(w,.5,w),r},u.clone=function(t,r){return n(t)?n(r)?(r.minimum=e.clone(t.minimum,r.minimum),r.maximum=e.clone(t.maximum,r.maximum),r.center=e.clone(t.center,r.center),r):new u(t.minimum,t.maximum):void 0},u.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&e.equals(t.minimum,r.minimum)&&e.equals(t.maximum,r.maximum)};var s=new e;u.intersectPlane=function(t,n){s=e.subtract(t.maximum,t.minimum,s);var r=e.multiplyByScalar(s,.5,s),a=n.normal,o=r.x*Math.abs(a.x)+r.y*Math.abs(a.y)+r.z*Math.abs(a.z),u=e.dot(t.center,a)+n.distance;return u-o>0?i.INSIDE:0>u+o?i.OUTSIDE:i.INTERSECTING};var c=new o(new e,0);return u.intersect=function(e,t){r("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var n=o.fromCartesian4(t,c);return u.intersectPlane(e,n)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function n(e,n,r){var a=e+n;return t.sign(e)!==t.sign(n)&&Math.abs(a/Math.max(Math.abs(e),Math.abs(n)))<r?0:a}var r={};return r.computeDiscriminant=function(e,t,n){var r=t*t-4*e*n;return r},r.computeRealRoots=function(e,r,a){var i;if(0===e)return 0===r?[]:[-a/r];if(0===r){if(0===a)return[0,0];var o=Math.abs(a),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(i=-a/e,0>i)return[];var s=Math.sqrt(i);return[-s,s]}if(0===a)return i=-r/e,0>i?[i,0]:[0,i];var c=r*r,l=4*e*a,f=n(c,-l,t.EPSILON14);if(0>f)return[];var h=-.5*n(r,t.sign(r)*Math.sqrt(f),t.EPSILON14);return r>0?[h/e,a/h]:[a/h,h/e]},r}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function n(e,t,n,r){var a,i,o=e,u=t/3,s=n/3,c=r,l=o*s,f=u*c,h=u*u,d=s*s,m=o*s-h,p=o*c-u*s,y=u*c-d,v=4*m*y-p*p;if(0>v){var g,w,x;h*f>=l*d?(g=o,w=m,x=-2*u*m+o*p):(g=c,w=y,x=-c*p+2*s*y);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);i=-x+S;var _=i/2,M=0>_?-Math.pow(-_,1/3):Math.pow(_,1/3),O=i===S?-M:-w/M;return a=0>=w?M+O:-x/(M*M+O*O+w),h*f>=l*d?[(a-u)/o]:[-c/(a+s)]}var P=m,T=-2*u*m+o*p,R=y,C=-c*p+2*s*y,N=Math.sqrt(v),I=Math.sqrt(3)/2,z=Math.abs(Math.atan2(o*N,-T)/3);a=2*Math.sqrt(-P);var A=Math.cos(z);i=a*A;var b=a*(-A/2-I*Math.sin(z)),D=i+b>2*u?i-u:b-u,q=o,U=D/q;z=Math.abs(Math.atan2(c*N,-C)/3),a=2*Math.sqrt(-R),A=Math.cos(z),i=a*A,b=a*(-A/2-I*Math.sin(z));var L=-c,B=2*s>i+b?i+s:b+s,W=L/B,F=q*B,G=-D*B-q*L,k=D*L,j=(s*G-u*k)/(-u*G+s*F);return j>=U?W>=U?W>=j?[U,j,W]:[U,W,j]:[W,U,j]:W>=U?[j,U,W]:W>=j?[j,W,U]:[W,j,U]}var r={};return r.computeDiscriminant=function(e,t,n,r){var a=e*e,i=t*t,o=n*n,u=r*r,s=18*e*t*n*r+i*o-27*a*u-4*(e*o*n+i*t*r);return s},r.computeRealRoots=function(e,r,a,i){var o,u;if(0===e)return t.computeRealRoots(r,a,i);if(0===r){if(0===a){if(0===i)return[0,0,0];u=-i/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===i?(o=t.computeRealRoots(e,0,a),0===o.Length?[0]:[o[0],0,o[1]]):n(e,0,a,i)}return 0===a?0===i?(u=-r/e,0>u?[u,0,0]:[0,0,u]):n(e,r,0,i):0===i?(o=t.computeRealRoots(e,r,a),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):n(e,r,a,i)},r}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,n,r){"use strict";function a(t,a,i,o){var u=t*t,s=a-3*u/8,c=i-a*t/2+u*t/8,l=o-i*t/4+a*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var h=-t/4,d=f[f.length-1];if(Math.abs(d)<n.EPSILON14){var m=r.computeRealRoots(1,s,l);if(2===m.length){var p,y=m[0],v=m[1];if(y>=0&&v>=0){var g=Math.sqrt(y),w=Math.sqrt(v);return[h-w,h-g,h+g,h+w]}if(y>=0&&0>v)return p=Math.sqrt(y),[h-p,h+p];if(0>y&&v>=0)return p=Math.sqrt(v),[h-p,h+p]}return[]}if(d>0){var x=Math.sqrt(d),E=(s+d-c/x)/2,S=(s+d+c/x)/2,_=r.computeRealRoots(1,x,E),M=r.computeRealRoots(1,-x,S);return 0!==_.length?(_[0]+=h,_[1]+=h,0!==M.length?(M[0]+=h,M[1]+=h,_[1]<=M[0]?[_[0],_[1],M[0],M[1]]:M[1]<=_[0]?[M[0],M[1],_[0],_[1]]:_[0]>=M[0]&&_[1]<=M[1]?[M[0],_[0],_[1],M[1]]:M[0]>=_[0]&&M[1]<=_[1]?[_[0],M[0],M[1],_[1]]:_[0]>M[0]&&_[0]<M[1]?[M[0],_[0],M[1],_[1]]:[_[0],M[0],_[1],M[1]]):_):0!==M.length?(M[0]+=h,M[1]+=h,M):[]}}return[]}function i(t,a,i,o){var u=i*i,s=a*a,c=t*t,l=-2*a,f=i*t+s-4*o,h=c*o-i*a*t+u,d=e.computeRealRoots(1,l,f,h);if(d.length>0){var m,p,y=d[0],v=a-y,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),_=c-4*y,M=c+4*Math.abs(y);if(0>y||_*S>E*M){var O=Math.sqrt(_);m=O/2,p=0===O?0:(t*x-i)/O}else{var P=Math.sqrt(E);m=0===P?0:(t*x-i)/P,p=P/2}var T,R;0===w&&0===m?(T=0,R=0):n.sign(w)===n.sign(m)?(T=w+m,R=y/T):(R=w-m,T=y/R);var C,N;0===x&&0===p?(C=0,N=0):n.sign(x)===n.sign(p)?(C=x+p,N=o/C):(N=x-p,C=o/N);var I=r.computeRealRoots(1,T,C),z=r.computeRealRoots(1,R,N);if(0!==I.length)return 0!==z.length?I[1]<=z[0]?[I[0],I[1],z[0],z[1]]:z[1]<=I[0]?[z[0],z[1],I[0],I[1]]:I[0]>=z[0]&&I[1]<=z[1]?[z[0],I[0],I[1],z[1]]:z[0]>=I[0]&&z[1]<=I[1]?[I[0],z[0],z[1],I[1]]:I[0]>z[0]&&I[0]<z[1]?[z[0],I[0],z[1],I[1]]:[I[0],z[0],I[1],z[1]]:I;if(0!==z.length)return z}return[]}var o={};return o.computeDiscriminant=function(e,t,n,r,a){var i=e*e,o=i*e,u=t*t,s=u*t,c=n*n,l=c*n,f=r*r,h=f*r,d=a*a,m=d*a,p=u*c*f-4*s*h-4*e*l*f+18*e*t*n*h-27*i*f*f+256*o*m+a*(18*s*n*r-4*u*l+16*e*c*c-80*e*t*c*r-6*e*u*f+144*i*n*f)+d*(144*e*u*n-27*u*u-128*i*c-192*i*t*r);return p},o.computeRealRoots=function(t,r,o,u,s){if(Math.abs(t)<n.EPSILON15)return e.computeRealRoots(r,o,u,s);var c=r/t,l=o/t,f=u/t,h=s/t,d=0>c?1:0;switch(d+=0>l?d+1:d,d+=0>f?d+1:d,d+=0>h?d+1:d){case 0:return a(c,l,f,h);case 1:return i(c,l,f,h);case 2:return i(c,l,f,h);case 3:return a(c,l,f,h);case 4:return a(c,l,f,h);case 5:return i(c,l,f,h);case 6:return a(c,l,f,h);case 7:return a(c,l,f,h);case 8:return i(c,l,f,h);case 9:return a(c,l,f,h);case 10:return a(c,l,f,h);case 11:return i(c,l,f,h);case 12:return a(c,l,f,h);case 13:return a(c,l,f,h);case 14:return a(c,l,f,h);case 15:return a(c,l,f,h);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=function(n,r){r=e.clone(t(r,e.ZERO)),e.equals(r,e.ZERO)||e.normalize(r,r),this.origin=e.clone(t(n,e.ZERO)),this.direction=r};return r.getPoint=function(t,r,a){return n(a)||(a=new e),a=e.multiplyByScalar(t.direction,r,a),e.add(t.origin,a,a)},r}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(t,r,a,o,u){u=n(u,!1);var s,c,l,f,h,d=t.origin,m=t.direction,p=e.subtract(a,r,y),E=e.subtract(o,r,v),S=e.cross(m,E,g),_=e.dot(p,S);if(u){if(_<i.EPSILON6)return void 0;if(s=e.subtract(d,r,w),l=e.dot(s,S),0>l||l>_)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c),0>f||l+f>_)return void 0;h=e.dot(E,c)/_}else{if(Math.abs(_)<i.EPSILON6)return void 0;var M=1/_;if(s=e.subtract(d,r,w),l=e.dot(s,S)*M,0>l||l>1)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c)*M,0>f||l+f>1)return void 0;h=e.dot(E,c)*M}return h}function f(e,t,n,r){var a=t*t-4*e*n;if(0>a)return void 0;if(a>0){var i=1/(2*e),o=Math.sqrt(a),u=(-t+o)*i,s=(-t-o)*i;return s>u?(r.root0=u,r.root1=s):(r.root0=s,r.root1=u),r}var c=-t/(2*e);return 0===c?void 0:(r.root0=r.root1=c,r)}function h(t,n,a){r(a)||(a={});var i=t.origin,o=t.direction,u=n.center,s=n.radius*n.radius,c=e.subtract(i,u,g),l=e.dot(o,o),h=2*e.dot(o,c),d=e.magnitudeSquared(c)-s,m=f(l,h,d,S);return r(m)?(a.start=m.root0,a.stop=m.root1,a):void 0}function d(e,t,n){var r=e+t;return i.sign(e)!==i.sign(t)&&Math.abs(r/Math.max(Math.abs(e),Math.abs(t)))<n?0:r}function m(t,n,r,a,c){var l,f=a*a,h=c*c,m=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*h,p=c*(a*d(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],i.EPSILON15)+n.y),y=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*h+a*n.x+r,v=h*d(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],i.EPSILON15),g=c*(a*d(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+n.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(m,p,y),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(a,c*x,c*-E)),w.push(new e(a,c*x,c*E)),2===l.length){var S=l[1],_=Math.sqrt(Math.max(1-S*S,0));w.push(new e(a,c*S,c*-_)),w.push(new e(a,c*S,c*_))}return w}var M=g*g,O=v*v,P=m*m,T=g*v,R=P+O,C=2*(p*m+T),N=2*y*m+p*p-O+M,I=2*(y*p-T),z=y*y-M;if(0===R&&0===C&&0===N&&0===I)return w;l=s.computeRealRoots(R,C,N,I,z);var A=l.length;if(0===A)return w;for(var b=0;A>b;++b){var D,q=l[b],U=q*q,L=Math.max(1-U,0),B=Math.sqrt(L);D=i.sign(m)===i.sign(y)?d(m*U+y,p*q,i.EPSILON12):i.sign(y)===i.sign(p*q)?d(m*U,p*q+y,i.EPSILON12):d(m*U+p*q,y,i.EPSILON12);var W=d(v*q,g,i.EPSILON15),F=D*W;0>F?w.push(new e(a,c*q,c*B)):F>0?w.push(new e(a,c*q,c*-B)):0!==B?(w.push(new e(a,c*q,c*-B)),w.push(new e(a,c*q,c*B)),++b):w.push(new e(a,c*q,c*B))}return w}var p={};p.rayPlane=function(t,n,a){r(a)||(a=new e);var o=t.origin,u=t.direction,s=n.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON15)return void 0;var l=(-n.distance-e.dot(s,o))/c;return 0>l?void 0:(a=e.multiplyByScalar(u,l,a),e.add(o,a,a))};var y=new e,v=new e,g=new e,w=new e,x=new e;p.rayTriangle=function(t,n,a,i,o,u){var s=l(t,n,a,i,o);return!r(s)||0>s?void 0:(r(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;p.lineSegmentTriangle=function(t,n,a,i,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(n,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,a,i,o,u);return!r(f)||0>f||f>e.distance(t,n)?void 0:(r(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};p.raySphere=function(e,t,n){return n=h(e,t,n),!r(n)||n.stop<0?void 0:(n.start=Math.max(n.start,0),n)};var _=new c;p.lineSegmentSphere=function(t,n,a,i){var o=_;e.clone(t,o.origin);var u=e.subtract(n,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),i=h(o,a,i),!r(i)||i.stop<0||i.start>s?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i)};var M=new e,O=new e;p.rayEllipsoid=function(t,n){var r,a,i,o,u,s=n.oneOverRadii,c=e.multiplyComponents(s,t.origin,M),l=e.multiplyComponents(s,t.direction,O),f=e.magnitudeSquared(c),h=e.dot(c,l);if(f>1){if(h>=0)return void 0;var d=h*h;if(r=f-1,a=e.magnitudeSquared(l),i=a*r,i>d)return void 0;if(d>i){o=h*h-i,u=-h+Math.sqrt(o);var m=u/a,p=r/u;return p>m?{start:m,stop:p}:{start:p,stop:m}}var y=Math.sqrt(r/a);return{start:y,stop:y}}return 1>f?(r=f-1,a=e.magnitudeSquared(l),i=a*r,o=h*h-i,u=-h+Math.sqrt(o),{start:0,stop:u/a}):0>h?(a=e.magnitudeSquared(l),{start:0,stop:-h/a}):void 0};var P=new e,T=new e,R=new e,C=new e,N=new e,I=new o,z=new o,A=new o,b=new o,D=new o,q=new o,U=new o,L=new e,B=new e,W=new t;p.grazingAltitudeLocation=function(t,n){var a=t.origin,u=t.direction,s=n.geodeticSurfaceNormal(a,P);if(e.dot(u,s)>=0)return a;var c=r(this.rayEllipsoid(t,n)),l=n.transformPositionToScaledSpace(u,P),f=e.normalize(l,l),h=e.mostOrthogonalAxis(l,C),d=e.normalize(e.cross(h,f,T),T),p=e.normalize(e.cross(f,d,R),R),y=I;y[0]=f.x,y[1]=f.y,y[2]=f.z,y[3]=d.x,y[4]=d.y,y[5]=d.z,y[6]=p.x,y[7]=p.y,y[8]=p.z;var v=o.transpose(y,z),g=o.fromScale(n.radii,A),w=o.fromScale(n.oneOverRadii,b),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,_=o.multiply(o.multiply(v,w,q),x,q),M=o.multiply(o.multiply(_,g,U),y,U),O=o.multiplyByVector(_,a,N),F=m(M,e.negate(O,P),0,0,1),G=F.length;if(G>0){for(var k=e.clone(e.ZERO,B),j=Number.NEGATIVE_INFINITY,V=0;G>V;++V){E=o.multiplyByVector(g,o.multiplyByVector(y,F[V],L),L);var Y=e.normalize(e.subtract(E,a,C),C),H=e.dot(Y,u);H>j&&(j=H,k=e.clone(E,k))}var Z=n.cartesianToCartographic(k,W);return j=i.clamp(j,0,1),S=e.magnitude(e.subtract(k,a,C))*Math.sqrt(1-j*j),S=c?-S:S,Z.height=S,n.cartographicToCartesian(Z,new e)}return void 0};var F=new e;return p.lineSegmentPlane=function(t,n,a,o){r(o)||(o=new e);var u=e.subtract(n,t,F),s=a.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON6)return void 0;var l=e.dot(s,t),f=-(a.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},p.trianglePlaneIntersection=function(t,n,r,a){var i=a.normal,o=a.distance,u=e.dot(i,t)+o<0,s=e.dot(i,n)+o<0,c=e.dot(i,r)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,h;if((1===l||2===l)&&(f=new e,h=new e),1===l){if(u)return p.lineSegmentPlane(t,n,a,f),p.lineSegmentPlane(t,r,a,h),{positions:[t,n,r,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(s)return p.lineSegmentPlane(n,r,a,f),p.lineSegmentPlane(n,t,a,h),{positions:[t,n,r,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return p.lineSegmentPlane(r,t,a,f),p.lineSegmentPlane(r,n,a,h),{positions:[t,n,r,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return p.lineSegmentPlane(n,t,a,f),p.lineSegmentPlane(r,t,a,h),{positions:[t,n,r,f,h],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return p.lineSegmentPlane(r,n,a,f),p.lineSegmentPlane(t,n,a,h),{positions:[t,n,r,f,h],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return p.lineSegmentPlane(t,r,a,f),p.lineSegmentPlane(n,r,a,h),{positions:[t,n,r,f,h],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,n,r,a){return t(e).then(n,r,a)}function t(e){var t,n;return e instanceof r?t=e:u(e)?(n=o(),e.then(function(e){n.resolve(e)},function(e){n.reject(e)},function(e){n.progress(e)}),t=n.promise):t=a(e),t}function n(t){return e(t,i)}function r(e){this.then=e}function a(e){var n=new r(function(n){try{return t(n?n(e):e)}catch(r){return i(r)}});return n}function i(e){var n=new r(function(n,r){try{return r?t(r(e)):i(e)}catch(a){return i(a)}});return n}function o(){function e(e,t,n){return h(e,t,n)}function n(e){return m(e)}function a(e){return m(i(e))}function u(e){return d(e)}var s,c,l,f,h,d,m;return c=new r(e),s={then:e,resolve:n,reject:a,progress:u,promise:c,resolver:{resolve:n,reject:a,progress:u}},l=[],f=[],h=function(e,t,n){var r,a;return r=o(),a="function"==typeof n?function(e){try{r.progress(n(e))}catch(t){r.progress(t)}}:function(e){r.progress(e)},l.push(function(n){n.then(e,t).then(r.resolve,r.reject,a)}),f.push(a),r.promise},d=function(e){return p(f,e),e},m=function(e){return e=t(e),h=e.then,m=t,d=v,p(l,e),f=l=E,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,n,r,a,i){return y(2,arguments),e(t,function(t){function u(e){p(e)}function s(e){m(e)}var c,l,f,h,d,m,p,y,g,w;if(g=t.length>>>0,c=Math.max(0,Math.min(n,g)),f=[],l=g-c+1,h=[],d=o(),c)for(y=d.progress,p=function(e){h.push(e),--l||(m=p=v,d.reject(h))},m=function(e){f.push(e),--c||(m=p=v,d.resolve(f))},w=0;g>w;++w)w in t&&e(t[w],s,u,y);else d.resolve(f);return d.then(r,a,i)})}function c(e,t,n,r){function a(e){return t?t(e[0]):e[0]}return s(e,1,a,n,r)}function l(e,t,n,r){return y(1,arguments),h(e,g).then(t,n,r)}function f(){return h(arguments,g)}function h(t,n){return e(t,function(t){var r,a,i,u,s,c;if(i=a=t.length>>>0,r=[],c=o(),i)for(u=function(t,a){e(t,n).then(function(e){r[a]=e,--i||c.resolve(r)},c.reject)},s=0;a>s;s++)s in t?u(t[s],s):--i;else c.resolve(r);return c.promise})}function d(t,n){var r=x.call(arguments,1);return e(t,function(t){var a;return a=t.length,r[0]=function(t,r,i){return e(t,function(t){return e(r,function(e){return n(t,e,i,a)})})},w.apply(t,r)})}function m(t,n,r){var a=arguments.length>2;return e(t,function(e){return e=a?r:e,n.resolve(e),e},function(e){return n.reject(e),i(e)},n.progress)}function p(e,t){for(var n,r=0;n=e[r++];)n(t)}function y(e,t){for(var n,r=t.length;r>e;)if(n=t[--r],null!=n&&"function"!=typeof n)throw new Error("arg "+r+" must be a function")}function v(){}function g(e){return e}var w,x,E;return e.defer=o,e.resolve=t,e.reject=n,e.join=f,e.all=l,e.map=h,e.reduce=d,e.any=c,e.some=s,e.chain=m,e.isPromise=u,r.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(E,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(E,t)})})}},x=[].slice,w=[].reduce||function(e){var t,n,r,a,i;if(i=0,t=Object(this),a=t.length>>>0,n=arguments,n.length<=1)for(;;){if(i in t){r=t[i++];break}if(++i>=a)throw new TypeError}else r=n[1];for(;a>i;++i)i in t&&(r=e(r,t[i],i,t));return r},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,n){for(var r,a,i=0,o=e.length-1;o>=i;)if(r=~~((i+o)/2),a=n(e[r],t),0>a)i=r+1;else{if(!(a>0))return r;o=r-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,n,r,a){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=r,this.ut1MinusUtc=a};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,n=0,r=t[n++],a=function(e,t,n,r){n||(n=" ");var a=e.length>=t?"":Array(1+t-e.length>>>0).join(n);return r?e+a:a+e},i=function(e,t,n,r,i,o){var u=r-e.length;return u>0&&(e=n||!i?a(e,r,o,n):e.slice(0,t.length)+a("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,n,r,o,u,s){var c=e>>>0;return n=n&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=n+a(c.toString(t),u||0,"0",!1),i(e,n,r,o,s)},u=function(e,t,n,r,a,o){return null!=r&&(e=e.slice(0,r)),i(e,"",t,n,a,o)},s=function(e,r,s,c,l,f,h){var d,m,p,y,v;if("%%"==e)return"%";for(var g=!1,w="",x=!1,E=!1,S=" ",_=s.length,M=0;s&&_>M;M++)switch(s.charAt(M)){case" ":w=" ";break;case"+":w="+";break;case"-":g=!0;break;case"'":S=s.charAt(M+1);break;case"0":x=!0;break;case"#":E=!0}if(c=c?"*"==c?+t[n++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,g=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(f=f?"*"==f?+t[n++]:"*"==f.charAt(0)?+t[f.slice(1,-1)]:+f:"fFeE".indexOf(h)>-1?6:"d"==h?0:void 0,v=r?t[r.slice(0,-1)]:t[n++],h){case"s":return u(String(v),g,c,f,x,S);case"c":return u(String.fromCharCode(+v),g,c,f,x);case"b":return o(v,2,E,g,c,f,x);case"o":return o(v,8,E,g,c,f,x);case"x":return o(v,16,E,g,c,f,x);case"X":return o(v,16,E,g,c,f,x).toUpperCase();case"u":return o(v,10,E,g,c,f,x);case"i":case"d":return d=+v||0,d=Math.round(d-d%1),m=0>d?"-":w,v=m+a(String(Math.abs(d)),f,"0",!1),i(v,m,g,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return d=+v,m=0>d?"-":w,p=["toExponential","toFixed","toPrecision"]["efg".indexOf(h.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(h)%2],v=m+Math.abs(d)[p](f),i(v,m,g,c,x)[y]();default:return e}};return r.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,n,r,a,i,o,u){this.year=e,this.month=t,this.day=n,this.hour=r,this.minute=a,this.second=i,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(e,t){return C.compare(e.julianDate,t.julianDate)}function f(e){g.julianDate=e;var n=C.leapSeconds,r=t(n,g,l);0>r&&(r=~r),r>=n.length&&(r=n.length-1);var a=n[r].offset;if(r>0){var i=C.secondsDifference(n[r].julianDate,e);i>a&&(r--,a=n[r].offset)}C.addSeconds(e,a,e)}function h(e,n){g.julianDate=e;var r=C.leapSeconds,a=t(r,g,l);if(0>a&&(a=~a),0===a)return C.addSeconds(e,-r[0].offset,n);if(a>=r.length)return C.addSeconds(e,-r[a-1].offset,n);var i=C.secondsDifference(r[a].julianDate,e);return 0===i?C.addSeconds(e,-r[a].offset,n):1>=i?void 0:C.addSeconds(e,-r[--a].offset,n)}function d(e,t,n){var r=0|t/s.SECONDS_PER_DAY;return e+=r,t-=s.SECONDS_PER_DAY*r,0>t&&(e--,t+=s.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function m(e,t,n,r,a,i,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+n-32075;r-=12,0>r&&(r+=24);var f=i+(r*s.SECONDS_PER_HOUR+a*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return f>=43200&&(l-=1),[l,f]}var p=new i,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,g=new u,w=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,E=/^(\d{4})-?(\d{3})$/,S=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,_=/^(\d{4})-?(\d{2})-?(\d{2})$/,M=/([Z+\-])?(\d{2})?:?(\d{2})?$/,O=/^(\d{2})(\.\d+)?/.source+M.source,P=/^(\d{2}):?(\d{2})(\.\d+)?/.source+M.source,T=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+M.source,R="Invalid ISO 8601 date.",C=function(e,t,r){this.dayNumber=void 0,this.secondsOfDay=void 0,e=n(e,0),t=n(t,0),r=n(r,c.UTC);var a=0|e;t+=(e-a)*s.SECONDS_PER_DAY,d(a,t,this),r===c.UTC&&f(this)};C.fromDate=function(e,t){var n=m(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return r(t)?(d(n[0],n[1],t),f(t),t):new C(n[0],n[1],c.UTC)},C.fromIso8601=function(e,t){e=e.replace(",",".");var n,i,u,s=e.split("T"),l=1,h=1,p=0,g=0,M=0,N=0,I=s[0],z=s[1];if(!r(I))throw new a(R);var A;if(s=I.match(_),null!==s){if(A=I.split("-").length-1,A>0&&2!==A)throw new a(R);n=+s[1],l=+s[2],h=+s[3]}else if(s=I.match(x),null!==s)n=+s[1],l=+s[2];else if(s=I.match(w),null!==s)n=+s[1];else{var b;if(s=I.match(E),null!==s){if(n=+s[1],b=+s[2],u=o(n),1>b||u&&b>366||!u&&b>365)throw new a(R)}else{if(s=I.match(S),null===s)throw new a(R);n=+s[1];var D=+s[2],q=+s[3]||0;if(A=I.split("-").length-1,A>0&&(!r(s[3])&&1!==A||r(s[3])&&2!==A))throw new a(R);var U=new Date(Date.UTC(n,0,4));b=7*D+q-U.getUTCDay()-3}i=new Date(Date.UTC(n,0,1)),i.setUTCDate(b),l=i.getUTCMonth()+1,h=i.getUTCDate()}if(u=o(n),1>l||l>12||1>h||(2!==l||!u)&&h>y[l-1]||u&&2===l&&h>v)throw new a(R);var L;if(r(z)){if(s=z.match(T),null!==s){if(A=z.split(":").length-1,A>0&&2!==A&&3!==A)throw new a(R);p=+s[1],g=+s[2],M=+s[3],N=1e3*+(s[4]||0),L=5}else if(s=z.match(P),null!==s){if(A=z.split(":").length-1,A>0&&1!==A)throw new a(R);p=+s[1],g=+s[2],M=60*+(s[3]||0),L=4}else{if(s=z.match(O),null===s)throw new a(R);p=+s[1],g=60*+(s[2]||0),L=3}if(g>=60||M>=61||p>24||24===p&&(g>0||M>0||N>0))throw new a(R);var B=s[L],W=+s[L+1],F=+(s[L+2]||0);switch(B){case"+":p-=W,g-=F;break;case"-":p+=W,g+=F;break;case"Z":break;default:g+=new Date(Date.UTC(n,l-1,h,p,g)).getTimezoneOffset()}}else g+=new Date(n,l-1,h).getTimezoneOffset();var G=60===M;for(G&&M--;g>=60;)g-=60,p++;for(;p>=24;)p-=24,h++;for(i=u&&2===l?v:y[l-1];h>i;)h-=i,l++,l>12&&(l-=12,n++),i=u&&2===l?v:y[l-1];for(;0>g;)g+=60,p--;for(;0>p;)p+=24,h--;for(;1>h;)l--,1>l&&(l+=12,n--),i=u&&2===l?v:y[l-1],h+=i;var k=m(n,l,h,p,g,M,N);return r(t)?(d(k[0],k[1],t),f(t)):t=new C(k[0],k[1],c.UTC),G&&C.addSeconds(t,1,t),t},C.now=function(e){return C.fromDate(new Date,e)};var N=new C(0,0,c.TAI);return C.toGregorianDate=function(e,t){var n=!1,a=h(e,N);r(a)||(C.addSeconds(e,-1,N),a=h(N,N),n=!0);var o=a.dayNumber,u=a.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var f=0|4e3*(c+1)/1461001;c=0|c-(0|1461*f/4)+31;var d=0|80*c/2447,m=0|c-(0|2447*d/80);c=0|d/11;var p=0|d+2-12*c,y=0|100*(l-49)+f+c,v=0|u/s.SECONDS_PER_HOUR,g=u-v*s.SECONDS_PER_HOUR,w=0|g/s.SECONDS_PER_MINUTE;g-=w*s.SECONDS_PER_MINUTE;var x=0|g,E=(g-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),n&&(x+=1),r(t)?(t.year=y,t.month=p,t.day=m,t.hour=v,t.minute=w,t.second=x,t.millisecond=E,t.isLeapSecond=n,t):new i(y,p,m,v,w,x,E,n)},C.toDate=function(e){var t=C.toGregorianDate(e,p),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))},C.toIso8601=function(t,n){var a,i=C.toGregorianDate(t,i);return r(n)||0===i.millisecond?r(n)&&0!==n?(a=(.01*i.millisecond).toFixed(n).replace(".","").slice(0,n),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",i.year,i.month,i.day,i.hour,i.minute,i.second):(a=(.01*i.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a))},C.clone=function(e,t){return r(e)?r(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new C(e.dayNumber,e.secondsOfDay,c.TAI):void 0},C.compare=function(e,t){var n=e.dayNumber-t.dayNumber;return 0!==n?n:e.secondsOfDay-t.secondsOfDay},C.equals=function(e,t){return e===t||r(e)&&r(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},C.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(C.secondsDifference(e,t))<=n},C.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},C.secondsDifference=function(e,t){var n=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return n+(e.secondsOfDay-t.secondsOfDay)},C.daysDifference=function(e,t){var n=e.dayNumber-t.dayNumber,r=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return n+r},C.computeTaiMinusUtc=function(e){g.julianDate=e;var n=C.leapSeconds,r=t(n,g,l);return 0>r&&(r=~r,--r,0>r&&(r=0)),n[r].offset},C.addSeconds=function(e,t,n){return d(e.dayNumber,e.secondsOfDay+t,n)},C.addMinutes=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return d(e.dayNumber,r,n)},C.addHours=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return d(e.dayNumber,r,n)},C.addDays=function(e,t,n){var r=e.dayNumber+t;return d(r,e.secondsOfDay,n)},C.lessThan=function(e,t){return C.compare(e,t)<0},C.lessThanOrEquals=function(e,t){return C.compare(e,t)<=0},C.greaterThan=function(e,t){return C.compare(e,t)>0},C.greaterThanOrEquals=function(e,t){return C.compare(e,t)>=0},C.prototype.clone=function(e){return C.clone(this,e)},C.prototype.equals=function(e){return C.equals(this,e)},C.prototype.equalsEpsilon=function(e,t){return C.equalsEpsilon(this,e,t)},C.prototype.toString=function(){return C.toIso8601(this)},C.leapSeconds=[new u(new C(2441317,43210,c.TAI),10),new u(new C(2441499,43211,c.TAI),11),new u(new C(2441683,43212,c.TAI),12),new u(new C(2442048,43213,c.TAI),13),new u(new C(2442413,43214,c.TAI),14),new u(new C(2442778,43215,c.TAI),15),new u(new C(2443144,43216,c.TAI),16),new u(new C(2443509,43217,c.TAI),17),new u(new C(2443874,43218,c.TAI),18),new u(new C(2444239,43219,c.TAI),19),new u(new C(2444786,43220,c.TAI),20),new u(new C(2445151,43221,c.TAI),21),new u(new C(2445516,43222,c.TAI),22),new u(new C(2446247,43223,c.TAI),23),new u(new C(2447161,43224,c.TAI),24),new u(new C(2447892,43225,c.TAI),25),new u(new C(2448257,43226,c.TAI),26),new u(new C(2448804,43227,c.TAI),27),new u(new C(2449169,43228,c.TAI),28),new u(new C(2449534,43229,c.TAI),29),new u(new C(2450083,43230,c.TAI),30),new u(new C(2450630,43231,c.TAI),31),new u(new C(2451179,43232,c.TAI),32),new u(new C(2453736,43233,c.TAI),33),new u(new C(2454832,43234,c.TAI),34),new u(new C(2456109,43235,c.TAI),35),new u(new C(2457204,43236,c.TAI),36)],C}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(n,r){if(null===n||"object"!=typeof n)return n;r=e(r,!1);var a=new n.constructor;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i];r&&(o=t(o,r)),a[i]=o}return a};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var n=e.split("\r\n"),r=0;r<n.length;++r){var a=n[r],i=a.indexOf(": ");if(i>0){var o=a.substring(0,i),u=a.substring(i+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var n=function(e,n,r){this.statusCode=e,this.response=n,this.responseHeaders=r,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders)) +};return n.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},n}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,n,r,a,i){"use strict";function o(e,t){var n=decodeURIComponent(t);return e?atob(n):n}function u(e,t){for(var n=o(e,t),r=new ArrayBuffer(n.length),a=new Uint8Array(r),i=0;i<n.length;i++)a[i]=n.charCodeAt(i);return r}function s(e,n){n=t(n,"");var a=e[1],i=!!e[2],s=e[3];switch(n){case"":case"text":return o(i,s);case"arraybuffer":return u(i,s);case"blob":var c=u(i,s);return new Blob([c],{type:a});case"document":var l=new DOMParser;return l.parseFromString(o(i,s),a);case"json":return JSON.parse(o(i,s));default:throw new r("Unhandled responseType: "+n)}}var c=function(n){n=t(n,t.EMPTY_OBJECT);var r=n.responseType,a=t(n.method,"GET"),i=n.data,o=n.headers,u=n.overrideMimeType;return e(n.url,function(t){var n=e.defer();return c.load(t,r,a,i,o,n,u),n.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,r,o,u,c,f){var h=l.exec(e);if(null!==h)return c.resolve(s(h,t)),void 0;var d=new XMLHttpRequest;if(n(f)&&n(d.overrideMimeType)&&d.overrideMimeType(f),d.open(r,e,!0),n(u))for(var m in u)u.hasOwnProperty(m)&&d.setRequestHeader(m,u[m]);n(t)&&(d.responseType=t),d.onload=function(){200===d.status?n(d.response)?c.resolve(d.response):n(d.responseXML)&&d.responseXML.hasChildNodes()?c.resolve(d.responseXML):n(d.responseText)?c.resolve(d.responseText):c.reject(new i("unknown XMLHttpRequest response type.")):c.reject(new a(d.status,d.response,d.getAllResponseHeaders()))},d.onerror=function(){c.reject(new a)},d.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,n){return e({url:t,headers:n})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,n,r){"use strict";var a={Accept:"application/json,*/*;q=0.01"},i=function(n,i){return t(i)?t(i.Accept)||(i=e(i),i.Accept=a.Accept):i=a,r(n,i).then(function(e){return JSON.parse(e)})};return i}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c,l,f){"use strict";function h(e,t){return o.compare(e.julianDate,t)}function d(e,n){if(!r(n.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!r(n.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var a=n.columnNames.indexOf("modifiedJulianDateUtc"),i=n.columnNames.indexOf("xPoleWanderRadians"),s=n.columnNames.indexOf("yPoleWanderRadians"),c=n.columnNames.indexOf("ut1MinusUtcSeconds"),d=n.columnNames.indexOf("xCelestialPoleOffsetRadians"),m=n.columnNames.indexOf("yCelestialPoleOffsetRadians"),p=n.columnNames.indexOf("taiMinusUtcSeconds");if(0>a||0>i||0>s||0>c||0>d||0>m||0>p)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=n.samples,v=e._dates=[];e._dateColumn=a,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=d,e._yCelestialPoleOffsetRadiansColumn=m,e._taiMinusUtcSecondsColumn=p,e._columnCount=n.columnNames.length,e._lastIndex=void 0;for(var g,w=e._addNewLeapSeconds,x=0,E=y.length;E>x;x+=e._columnCount){var S=y[x+a],_=y[x+p],M=S+l.MODIFIED_JULIAN_DATE_DIFFERENCE,O=new o(M,_,f.TAI);if(v.push(O),w){if(_!==g&&r(g)){var P=o.leapSeconds,T=t(P,O,h);if(0>T){var R=new u(O,_);P.splice(~T,0,R)}}g=_}}}function m(e,t,n,r,a){var i=n*r;a.xPoleWander=t[i+e._xPoleWanderRadiansColumn],a.yPoleWander=t[i+e._yPoleWanderRadiansColumn],a.xPoleOffset=t[i+e._xCelestialPoleOffsetRadiansColumn],a.yPoleOffset=t[i+e._yCelestialPoleOffsetRadiansColumn],a.ut1MinusUtc=t[i+e._ut1MinusUtcSecondsColumn]}function p(e,t,n){return t+e*(n-t)}function y(e,t,n,r,a,i,u){var s=e._columnCount;if(i>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u;var c=t[a],l=t[i];if(c.equals(l)||r.equals(c))return m(e,n,a,s,u),u;if(r.equals(l))return m(e,n,i,s,u),u;var f=o.secondsDifference(r,c)/o.secondsDifference(l,c),h=a*s,d=i*s,y=n[h+e._ut1MinusUtcSecondsColumn],v=n[d+e._ut1MinusUtcSecondsColumn],g=v-y;if(g>.5||-.5>g){var w=n[h+e._taiMinusUtcSecondsColumn],x=n[d+e._taiMinusUtcSecondsColumn];w!==x&&(l.equals(r)?y=v:v-=x-w)}return u.xPoleWander=p(f,n[h+e._xPoleWanderRadiansColumn],n[d+e._xPoleWanderRadiansColumn]),u.yPoleWander=p(f,n[h+e._yPoleWanderRadiansColumn],n[d+e._yPoleWanderRadiansColumn]),u.xPoleOffset=p(f,n[h+e._xCelestialPoleOffsetRadiansColumn],n[d+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=p(f,n[h+e._yCelestialPoleOffsetRadiansColumn],n[d+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=p(f,y,v),u}var v=function(t){if(t=n(t,n.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=n(t.addNewLeapSeconds,!0),r(t.data))d(this,t.data);else if(r(t.url)){var a=this;this._downloadPromise=e(s(t.url),function(e){d(a,e)},function(){a._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else d(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return v.NONE=i({getPromiseToLoad:function(){return e()},compute:function(e,t){return r(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new a(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,n){if(!r(this._samples)){if(r(this._dataError))throw new c(this._dataError);return void 0}if(r(n)||(n=new a(0,0,0,0,0)),0===this._samples.length)return n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0,n;var i=this._dates,u=this._lastIndex,s=0,l=0;if(r(u)){var f=i[u],h=i[u+1],d=o.lessThanOrEquals(f,e),m=!r(h),p=m||o.greaterThanOrEquals(h,e);if(d&&p)return s=u,!m&&h.equals(e)&&++s,l=s+1,y(this,i,this._samples,e,s,l,n),n}var v=t(i,e,o.compare,this._dateColumn);return v>=0?(v<i.length-1&&i[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,i,this._samples,e,s,l,n),n},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var n=r.exec(t);this.scheme=n[1],this.authority=n[2],this.path=n[3],this.query=n[4],this.fragment=n[5]}}function t(e){var t=unescape(e);return i.test(t)?t:e.toUpperCase()}function n(e,t,n,r){return(t||"")+n.toLowerCase()+(r||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var r=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,n).replace(a,t)),this.path&&(this.path=this.path.replace(a,t)),this.query&&(this.query=this.query.replace(a,t)),this.fragment&&(this.fragment=this.fragment.replace(a,t))};var a=/%[0-9a-z]{2}/gi,i=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var n=new e;return this.scheme?(n.scheme=this.scheme,n.authority=this.authority,n.path=this.path,n.query=this.query):(n.scheme=t.scheme,this.authority?(n.authority=this.authority,n.path=this.path,n.query=this.query):(n.authority=t.authority,""==this.path?(n.path=t.path,n.query=this.query||t.query):("/"==this.path.charAt(0)?(n.path=this.path,n.removeDotSegments()):(n.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,n.removeDotSegments()),n.query=this.query))),n.fragment=this.fragment,n},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),n=[],r=""==t[0];for(r&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?n.pop():"."!=e&&n.push(e);("."==e||".."==e)&&n.push(""),r&&n.unshift(""),this.path=n.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,n,r){"use strict";function a(){for(var e=document.getElementsByTagName("script"),t=0,n=e.length;n>t;++t){var r=e[t].getAttribute("src"),a=f.exec(r);if(null!==a)return a[1]}return void 0}function i(){if(t(s))return s;var r;if(r="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:a(),!t(r))throw new n("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(r).resolve(new e(document.location.href))}function o(e){return r.toUrl("../"+e)}function u(t){return new e(t).resolve(i()).toString()}var s,c,l,f=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,h=function(e){t(c)||(c=t(r.toUrl)?o:u),t(l)||(l=document.createElement("a"));var n=c(e);return l.href=n,l.href=l.href,l.href};return h._cesiumScriptRegex=f,h.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},h}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,n){this.x=e,this.y=t,this.s=n};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,n,r,a,i,o,u){"use strict";function s(e,t,n){var r=f;return r.dayNumber=t,r.secondsOfDay=n,i.daysDifference(r,e._sampleZeroDateTT)}function c(n,a){if(n._chunkDownloadsInProgress[a])return n._chunkDownloadsInProgress[a];var i=e.defer();n._chunkDownloadsInProgress[a]=i;var u,s=n._xysFileUrlTemplate;return u=r(s)?s.replace("{0}",a):t("Assets/IAU2006_XYS/IAU2006_XYS_"+a+".json"),e(o(u),function(e){n._chunkDownloadsInProgress[a]=!1;for(var t=n._samples,r=e.samples,o=3*a*n._samplesPerXysFile,u=0,s=r.length;s>u;++u)t[o+u]=r[u];i.resolve()}),i.promise}var l=function(e){e=n(e,n.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=n(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=n(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new i(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=n(e.stepSizeDays,1),this._samplesPerXysFile=n(e.samplesPerXysFile,1e3),this._totalSamples=n(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,r=this._denominators=new Array(t+1),a=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){r[s]=o,a[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(r[s]*=s-c);r[s]=1/r[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},f=new i(0,0,u.TAI);return l.prototype.preload=function(t,n,r,a){var i=s(this,t,n),o=s(this,r,a),u=0|i/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var f=0|u/this._samplesPerXysFile,h=0|l/this._samplesPerXysFile,d=[],m=f;h>=m;++m)d.push(c(this,m));return e.all(d)},l.prototype.computeXysRadians=function(e,t,n){var i=s(this,e,t);if(0>i)return void 0;var o=0|i/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var f=l+u;f>=this._totalSamples&&(f=this._totalSamples-1,l=f-u,0>l&&(l=0));var h=!1,d=this._samples;if(r(d[3*l])||(c(this,0|l/this._samplesPerXysFile),h=!0),r(d[3*f])||(c(this,0|f/this._samplesPerXysFile),h=!0),h)return void 0;r(n)?(n.x=0,n.y=0,n.s=0):n=new a(0,0,0);var m,p,y=i-l*this._stepSizeDays,v=this._work,g=this._denominators,w=this._coef,x=this._xTable;for(m=0;u>=m;++m)v[m]=y-x[m];for(m=0;u>=m;++m){for(w[m]=1,p=0;u>=p;++p)p!==m&&(w[m]*=v[p]);w[m]*=g[m];var E=3*(l+m);n.x+=w[m]*d[E++],n.y+=w[m]*d[E++],n.s+=w[m]*d[E]}return n},l}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(a,0)},c=new e;s.fromAxisAngle=function(t,r,a){var i=r/2,o=Math.sin(i);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,h=Math.cos(i);return n(a)?(a.x=u,a.y=l,a.z=f,a.w=h,a):new s(u,l,f,h)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var r,a,i,o,c,h=e[u.COLUMN0ROW0],d=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],p=h+d+m;if(p>0)r=Math.sqrt(p+1),c=.5*r,r=.5/r,a=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*r,i=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*r,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*r;else{var y=l,v=0;d>h&&(v=1),m>h&&m>d&&(v=2);var g=y[v],w=y[g];r=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=f;x[v]=.5*r,r=.5/r,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*r,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*r,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*r,a=-x[0],i=-x[1],o=-x[2]}return n(t)?(t.x=a,t.y=i,t.z=o,t.w=c,t):new s(a,i,o,c)};var h=new s;s.fromHeadingPitchRoll=function(t,n,r,a){var i=s.fromAxisAngle(e.UNIT_X,r,h),o=s.fromAxisAngle(e.UNIT_Y,-n,a);a=s.multiply(o,i,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,h);return s.multiply(u,a,a)};var d=new e,m=new e,p=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.x=e[r],a.y=e[r+1],a.z=e[r+2],a.w=e[r+3],a},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,n,r){s.unpack(e,4*n,v),s.conjugate(v,v);for(var a=0,i=n-t+1;i>a;a++){var o=3*a;s.unpack(e,4*(t+a),p),s.multiply(p,v,p),p.w<0&&s.negate(p,p),s.computeAxis(p,d);var u=s.computeAngle(p);r[o]=d.x*u,r[o+1]=d.y*u,r[o+2]=d.z*u}},s.unpackInterpolationResult=function(t,r,a,i,o){n(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(r,4*i,y),0===u?s.clone(s.IDENTITY,p):s.fromAxisAngle(m,u,p),s.multiply(p,y,o)},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var n=1/s.magnitude(e),r=e.x*n,a=e.y*n,i=e.z*n,o=e.w*n;return t.x=r,t.y=a,t.z=i,t.w=o,t},s.inverse=function(e,t){var n=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/n,t)},s.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},s.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+r*l+a*c-i*s,h=o*s-r*c+a*l+i*u,d=o*c+r*s-a*u+i*l,m=o*l-r*u-a*s-i*c;return n.x=f,n.y=h,n.z=d,n.w=m,n},s.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},s.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},s.computeAxis=function(e,t){var n=e.w;if(Math.abs(n-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var r=1/Math.sqrt(1-n*n);return t.x=e.x*r,t.y=e.y*r,t.z=e.z*r,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,n,r){return g=s.multiplyByScalar(t,n,g),r=s.multiplyByScalar(e,1-n,r),s.add(g,r,r)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,n,r){var a=s.dot(e,t),i=t;if(0>a&&(a=-a,i=w=s.negate(t,w)),1-a<o.EPSILON6)return s.lerp(e,i,n,r);var u=Math.acos(a);return x=s.multiplyByScalar(e,Math.sin((1-n)*u),x),E=s.multiplyByScalar(i,Math.sin(n*u),E),r=s.add(x,E,r),s.multiplyByScalar(r,1/Math.sin(u),r)},s.log=function(t,n){var r=o.acosClamped(t.w),a=0;return 0!==r&&(a=r/Math.sin(r)),e.multiplyByScalar(t,a,n)},s.exp=function(t,n){var r=e.magnitude(t),a=0;return 0!==r&&(a=Math.sin(r)/r),n.x=t.x*a,n.y=t.y*a,n.z=t.z*a,n.w=Math.cos(r),n};var S=new e,_=new e,M=new s,O=new s;s.computeInnerQuadrangle=function(t,n,r,a){var i=s.conjugate(n,M);s.multiply(i,r,O);var o=s.log(O,S);s.multiply(i,t,O);var u=s.log(O,_);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,M),s.multiply(n,M,a)},s.squad=function(e,t,n,r,a,i){var o=s.slerp(e,t,a,M),u=s.slerp(n,r,a,O);return s.slerp(o,u,2*a*(1-a),i)};for(var P=new s,T=1.9011074535173003,R=a.supportsTypedArrays()?new Float32Array(8):[],C=a.supportsTypedArrays()?new Float32Array(8):[],N=a.supportsTypedArrays()?new Float32Array(8):[],I=a.supportsTypedArrays()?new Float32Array(8):[],z=0;7>z;++z){var A=z+1,b=2*A+1;R[z]=1/(A*b),C[z]=A/b}return R[7]=T/136,C[7]=8*T/17,s.fastSlerp=function(e,t,n,r){var a,i=s.dot(e,t);i>=0?a=1:(a=-1,i=-i);for(var o=i-1,u=1-n,c=n*n,l=u*u,f=7;f>=0;--f)N[f]=(R[f]*c-C[f])*o,I[f]=(R[f]*l-C[f])*o;var h=a*n*(1+N[0]*(1+N[1]*(1+N[2]*(1+N[3]*(1+N[4]*(1+N[5]*(1+N[6]*(1+N[7])))))))),d=u*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),m=s.multiplyByScalar(e,d,P);return s.multiplyByScalar(t,h,r),s.add(m,r,r)},s.fastSquad=function(e,t,n,r,a,i){var o=s.fastSlerp(e,t,a,M),u=s.fastSlerp(n,r,a,O);return s.fastSlerp(o,u,2*a*(1-a),i)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},s.ZERO=i(new s(0,0,0,0)),s.IDENTITY=i(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,n,r,a,i,o,u,s,c,l,f,h,d,m,p,y,v){"use strict";var g={},w=new n,x=new n,E=new n;g.eastNorthUpToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return i(r)?(r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=-o,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=s.x,r[1]=s.y,r[2]=s.z,r[3]=0,r[4]=l.x,r[5]=l.y,r[6]=l.z,r[7]=0,r[8]=u.x,r[9]=u.y,r[10]=u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var S=new n,_=new n,M=new n;g.northEastDownToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=-o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=S,s=_,l=M;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=s.x,r[5]=s.y,r[6]=s.z,r[7]=0,r[8]=-u.x,r[9]=-u.y,r[10]=-u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},g.northUpEastToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=o,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=u.x,r[5]=u.y,r[6]=u.z,r[7]=0,r[8]=s.x,r[9]=s.y,r[10]=s.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var O=new y,P=new n(1,1,1),T=new p;g.headingPitchRollToFixedFrame=function(e,t,r,a,i,o){var u=y.fromHeadingPitchRoll(t,r,a,O),s=p.fromTranslationQuaternionRotationScale(n.ZERO,u,P,T);return o=g.eastNorthUpToFixedFrame(e,i,o),p.multiply(o,s,o)};var R=new p,C=new m;g.headingPitchRollQuaternion=function(e,t,n,r,a,i){var o=g.headingPitchRollToFixedFrame(e,t,n,r,a,R),u=p.getRotation(o,C);return y.fromRotationMatrix(u,i)};var N=24110.54841,I=8640184.812866,z=.093104,A=-62e-7,b=1.1772758384668e-19,D=72921158553e-15,q=d.TWO_PI/86400,U=new h;g.computeTemeToPseudoFixedMatrix=function(e,t){U=h.addSeconds(e,-h.computeTaiMinusUtc(e),U);var n,r=U.dayNumber,a=U.secondsOfDay,o=r-2451545;n=a>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=N+n*(I+n*(z+n*A)),s=u*q%d.TWO_PI,c=D+b*(r-2451545.5),l=(a+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,f=s+c*l,p=Math.cos(f),y=Math.sin(f);return i(t)?(t[0]=p,t[1]=-y,t[2]=0,t[3]=y,t[4]=p,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new m(p,y,0,-y,p,0,0,0,1)},g.iau2006XysData=new l,g.earthOrientationParameters=u.NONE;var L=32.184,B=2451545;g.preloadIcrfFixed=function(t){var n=t.start.dayNumber,r=t.start.secondsOfDay+L,a=t.stop.dayNumber,i=t.stop.secondsOfDay+L,o=g.iau2006XysData.preload(n,r,a,i),u=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},g.computeIcrfToFixedMatrix=function(e,t){i(t)||(t=new m);var n=g.computeFixedToIcrfMatrix(e,t);return i(n)?m.transpose(n,t):void 0};var W=new f(0,0,0),F=new s(0,0,0,0,0,0),G=new m,k=new m;g.computeFixedToIcrfMatrix=function(e,t){i(t)||(t=new m);var n=g.earthOrientationParameters.compute(e,F);if(!i(n))return void 0;var r=e.dayNumber,a=e.secondsOfDay+L,o=g.iau2006XysData.computeXysRadians(r,a,W);if(!i(o))return void 0;var u=o.x+n.xPoleOffset,s=o.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=G;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var f=m.fromRotationZ(-o.s,k),p=m.multiply(l,f,G),y=e.dayNumber,w=e.secondsOfDay-h.computeTaiMinusUtc(e)+n.ut1MinusUtc,x=y-2451545,E=w/v.SECONDS_PER_DAY,S=.779057273264+E+.00273781191135448*(x+E);S=S%1*d.TWO_PI;var _=m.fromRotationZ(S,k),M=m.multiply(p,_,G),O=Math.cos(n.xPoleWander),P=Math.cos(n.yPoleWander),T=Math.sin(n.xPoleWander),R=Math.sin(n.yPoleWander),C=r-B+a/v.SECONDS_PER_DAY;C/=36525;var N=-47e-6*C*d.RADIANS_PER_DEGREE/3600,I=Math.cos(N),z=Math.sin(N),A=k;return A[0]=O*I,A[1]=O*z,A[2]=T,A[3]=-P*z+R*T*I,A[4]=P*I+R*T*z,A[5]=-R*O,A[6]=-R*z-P*T*I,A[7]=R*I-P*T*z,A[8]=P*O,m.multiply(M,A,t)};var j=new r;g.pointToWindowCoordinates=function(e,t,n,r){return r=g.pointToGLWindowCoordinates(e,t,n,r),r.y=2*t[5]-r.y,r},g.pointToGLWindowCoordinates=function(e,n,a,o){i(o)||(o=new t);var u=j;return p.multiplyByVector(e,r.fromElements(a.x,a.y,a.z,1,u),u),r.multiplyByScalar(u,1/u.w,u),p.multiplyByVector(n,u,u),t.fromCartesian4(u,o)};var V=new n,Y=new n,H=new n;return g.rotationMatrixFromPositionVelocity=function(e,t,r,o){var u=a(r,c.WGS84).geodeticSurfaceNormal(e,V),s=n.cross(t,u,Y);n.equalsEpsilon(s,n.ZERO,d.EPSILON6)&&(s=n.clone(n.UNIT_X,s));var l=n.cross(s,t,H);return n.cross(t,l,s),n.negate(s,s),i(o)||(o=new m),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},g}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,n,r,a,i,o,u,s,c,l,f,h,d,m){"use strict";var p=new r,y=function(e,t){t=a(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var r=m.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=n.fromCartesian4(f.getColumn(r,0,p)),this._yAxis=n.fromCartesian4(f.getColumn(r,1,p));var i=n.fromCartesian4(f.getColumn(r,2,p));this._plane=h.fromPointNormal(e,i)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,n){var r=e.fromPoints(t,v);return new y(r.center,n)};var g=new d,w=new n;y.prototype.projectPointOntoPlane=function(e,r){var a=g;a.origin=e,n.normalize(e,a.direction);var o=c.rayPlane(a,this._plane,w);if(i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w)),i(o)){var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return i(r)?(r.x=s,r.y=l,r):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){i(t)||(t=[]);for(var n=0,r=e.length,a=0;r>a;a++){var o=this.projectPointOntoPlane(e[a],t[n]);i(o)&&(t[n]=o,n++)}return t.length=n,t},y.prototype.projectPointToNearestOnPlane=function(e,r){i(r)||(r=new t);var a=g;a.origin=e,n.clone(this._plane.normal,a.direction);var o=c.rayPlane(a,this._plane,w);i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w));var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return r.x=s,r.y=l,r},y.prototype.projectPointsToNearestOnPlane=function(e,t){i(t)||(t=[]);var n=e.length;t.length=n;for(var r=0;n>r;r++)t[r]=this.projectPointToNearestOnPlane(e[r],t[r]);return t};var x=new n;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var r=e.length;i(t)?t.length=r:t=new Array(r);for(var a=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;r>l;++l){var f=e[l];n.multiplyByScalar(u,f.x,c),i(t[l])||(t[l]=new n);var h=n.add(o,c,t[l]);n.multiplyByScalar(s,f.y,c),n.add(h,c,h),a.scaleToGeocentricSurface(h,h)}return t},y}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=new t,a=new t,i=new t,o=function(o,u,s,c,l){n(l)||(l=new t);var f,h,d,m,p,y,v,g;n(u.z)?(f=t.subtract(s,u,r),h=t.subtract(c,u,a),d=t.subtract(o,u,i),m=t.dot(f,f),p=t.dot(f,h),y=t.dot(f,d),v=t.dot(h,h),g=t.dot(h,d)):(f=e.subtract(s,u,r),h=e.subtract(c,u,a),d=e.subtract(o,u,i),m=e.dot(f,f),p=e.dot(f,h),y=e.dot(f,d),v=e.dot(h,h),g=e.dot(h,d));var w=1/(m*v-p*p);return l.y=(v*y-p*g)*w,l.z=(m*g-p*y)*w,l.x=1-l.y-l.z,l};return o}),define("Core/pointInsideTriangle",["./barycentricCoordinates","./Cartesian3"],function(e,t){"use strict";var n=new t,r=function(t,r,a,i){return e(t,r,a,i,n),n.x>0&&n.y>0&&n.z>0};return r}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(e){var t=e._uSquared,n=e._ellipsoid.maximumRadius,r=e._ellipsoid.minimumRadius,a=(n-r)/n,i=Math.cos(e._startHeading),o=Math.sin(e._startHeading),u=(1-a)*Math.tan(e._start.latitude),s=1/Math.sqrt(1+u*u),c=s*u,l=Math.atan2(u,i),f=s*o,h=f*f,d=1-h,m=Math.sqrt(d),p=t/4,y=p*p,v=y*p,g=y*y,w=1+p-3*y/4+5*v/4-175*g/64,x=1-p+15*y/8-35*v/8,E=1-3*p+35*y/4,S=1-5*p,_=w*l-x*Math.sin(2*l)*p/2-E*Math.sin(4*l)*y/16-S*Math.sin(6*l)*v/48-5*Math.sin(8*l)*g/512,M=e._constants;M.a=n,M.b=r,M.f=a,M.cosineHeading=i,M.sineHeading=o,M.tanU=u,M.cosineU=s,M.sineU=c,M.sigma=l,M.sineAlpha=f,M.sineSquaredAlpha=h,M.cosineSquaredAlpha=d,M.cosineAlpha=m,M.u2Over4=p,M.u4Over16=y,M.u6Over64=v,M.u8Over256=g,M.a0=w,M.a1=x,M.a2=E,M.a3=S,M.distanceRatio=_}function c(e,t){return e*t*(4+e*(4-3*t))/16}function l(e,t,n,r,a,i,o){var u=c(e,n);return(1-u)*e*t*(r+u*a*(o+u*i*(2*o*o-1)))}function f(e,t,n,r,a,i,o){var s,c,f,h,d,m=(t-n)/t,p=i-r,y=Math.atan((1-m)*Math.tan(a)),v=Math.atan((1-m)*Math.tan(o)),g=Math.cos(y),w=Math.sin(y),x=Math.cos(v),E=Math.sin(v),S=g*x,_=g*E,M=w*E,O=w*x,P=p,T=u.TWO_PI,R=Math.cos(P),C=Math.sin(P);do{R=Math.cos(P),C=Math.sin(P);var N=_-O*R;f=Math.sqrt(x*x*C*C+N*N),c=M+S*R,s=Math.atan2(f,c);var I;0===f?(I=0,h=1):(I=S*C/f,h=1-I*I),T=P,d=c-2*M/h,isNaN(d)&&(d=0),P=p+l(m,I,h,s,f,c,d)}while(Math.abs(P-T)>u.EPSILON12);var z=h*(t*t-n*n)/(n*n),A=1+z*(4096+z*(z*(320-175*z)-768))/16384,b=z*(256+z*(z*(74-47*z)-128))/1024,D=d*d,q=b*f*(d+b*(c*(2*D-1)-b*d*(4*f*f-3)*(4*D-3)/6)/4),U=n*A*(s-q),L=Math.atan2(x*C,_-O*R),B=Math.atan2(g*C,_*R-O);e._distance=U,e._startHeading=L,e._endHeading=B,e._uSquared=z}function h(n,r,a,i){e.normalize(i.cartographicToCartesian(r,m),d),e.normalize(i.cartographicToCartesian(a,m),m),f(n,i.maximumRadius,i.minimumRadius,r.longitude,r.latitude,a.longitude,a.latitude),n._start=t.clone(r,n._start),n._end=t.clone(a,n._end),n._start.height=0,n._end.height=0,s(n)}var d=new e,m=new e,p=function(e,a,i){var u=n(i,o.WGS84);this._ellipsoid=u,this._start=new t,this._end=new t,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,r(e)&&r(a)&&h(this,e,a,u)};return a(p.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),p.prototype.setEndPoints=function(e,t){h(this,e,t,this._ellipsoid)},p.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)},p.prototype.interpolateUsingSurfaceDistance=function(e,n){var a=this._constants,i=a.distanceRatio+e/a.b,o=Math.cos(2*i),u=Math.cos(4*i),s=Math.cos(6*i),c=Math.sin(2*i),f=Math.sin(4*i),h=Math.sin(6*i),d=Math.sin(8*i),m=i*i,p=i*m,y=a.u8Over256,v=a.u2Over4,g=a.u6Over64,w=a.u4Over16,x=2*p*y*o/3+i*(1-v+7*w/4-15*g/4+579*y/64-(w-15*g/4+187*y/16)*o-(5*g/4-115*y/16)*u-29*y*s/16)+(v/2-w+71*g/32-85*y/16)*c+(5*w/16-5*g/4+383*y/96)*f-m*((g-11*y/2)*c+5*y*f/2)+(29*g/96-29*y/16)*h+539*y*d/1536,E=Math.asin(Math.sin(x)*a.cosineAlpha),S=Math.atan(a.a/a.b*Math.tan(E));x-=a.sigma;var _=Math.cos(2*a.sigma+x),M=Math.sin(x),O=Math.cos(x),P=a.cosineU*O,T=a.sineU*M,R=Math.atan2(M*a.sineHeading,P-T*a.cosineHeading),C=R-l(a.f,a.sineAlpha,a.cosineSquaredAlpha,x,M,O,_);return r(n)?(n.longitude=this._start.longitude+C,n.latitude=S,n.height=0,n):new t(this._start.longitude+C,S,0) +},p}),define("Core/isArray",["./defined"],function(e){"use strict";var t=Array.isArray;return e(t)||(t=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(e,t,n,r,a,i,o,u,s,c,l,f){"use strict";function h(e,t,n){var r=M;r.length=e;var a;if(t===n){for(a=0;e>a;a++)r[a]=t;return r}var i=n-t,o=i/e;for(a=0;e>a;a++){var u=t+a*o;r[a]=u}return r}function d(t,n,r,a,i,o,u,s){var c=a.scaleToGeodeticSurface(t,R),l=a.scaleToGeodeticSurface(n,C),f=m.numberOfPoints(t,n,r),d=a.cartesianToCartographic(c,O),p=a.cartesianToCartographic(l,P),y=h(f,i,o);N.setEndPoints(d,p);var v=N.surfaceDistance/f,g=s;d.height=i;var w=a.cartographicToCartesian(d,T);e.pack(w,u,g),g+=3;for(var x=1;f>x;x++){var E=N.interpolateUsingSurfaceDistance(x*v,P);E.height=y[x],w=a.cartographicToCartesian(E,T),e.pack(w,u,g),g+=3}return g}var m={};m.numberOfPoints=function(t,n,r){var a=e.distance(t,n);return Math.ceil(a/r)};var p=new t;m.extractHeights=function(e,t){for(var n=e.length,r=new Array(n),a=0;n>a;a++){var i=e[a];r[a]=t.cartesianToCartographic(i,p).height}return r};var y=new l,v=new e,g=new e,w=new f(e.ZERO,0),x=new e,E=new f(e.ZERO,0),S=new e,_=new e,M=[],O=new t,P=new t,T=new e,R=new e,C=new e,N=new o;m.wrapLongitude=function(t,a){var i=[],o=[];if(r(t)&&t.length>0){a=n(a,l.IDENTITY);var s=l.inverseTransformation(a,y),c=l.multiplyByPoint(s,e.ZERO,v),h=l.multiplyByPointAsVector(s,e.UNIT_Y,g),d=f.fromPointNormal(c,h,w),m=l.multiplyByPointAsVector(s,e.UNIT_X,x),p=f.fromPointNormal(c,m,E),M=1;i.push(e.clone(t[0]));for(var O=i[0],P=t.length,T=1;P>T;++T){var R=t[T];if(f.getPointDistance(p,O)<0||f.getPointDistance(p,R)<0){var C=u.lineSegmentPlane(O,R,d,S);if(r(C)){var N=e.multiplyByScalar(h,5e-9,_);f.getPointDistance(d,O)<0&&e.negate(N,N),i.push(e.add(C,N,new e)),o.push(M+1),e.negate(N,N),i.push(e.add(C,N,new e)),M=1}}i.push(e.clone(t[T])),M++,O=R}o.push(M)}return{positions:i,lengths:o}};var I=c.EPSILON7;return m.removeDuplicates=function(t){var n=t.length;if(2>n)return t;var r,a,i;for(r=1;n>r&&(a=t[r-1],i=t[r],!e.equalsEpsilon(a,i,I));++r);if(r===n)return t;for(var o=t.slice(0,r);n>r;++r)i=t[r],e.equalsEpsilon(a,i,I)||(o.push(e.clone(i)),a=i);return o},m.generateArc=function(t){r(t)||(t={});var a=t.positions,o=a.length,u=n(t.ellipsoid,i.WGS84),l=n(t.height,0);if(1>o)return[];if(1===o){var f=u.scaleToGeodeticSurface(a[0],R);if(0!==l){var h=u.geodeticSurfaceNormal(f,T);e.multiplyByScalar(h,l,h),e.add(f,h,f)}return[f.x,f.y,f.z]}var p=t.minDistance;if(!r(p)){var y=n(t.granularity,c.RADIANS_PER_DEGREE);p=c.chordLength(y,u.maximumRadius)}var v,g=0;for(v=0;o-1>v;v++)g+=m.numberOfPoints(a[v],a[v+1],p);var w=3*(g+1),x=new Array(w),E=0,S=s(l);for(v=0;o-1>v;v++){var _=a[v],P=a[v+1],C=S?l[v]:l,N=S?l[v+1]:l;E=d(_,P,p,u,C,N,x,E)}M.length=0;var I=a[o-1],z=u.cartesianToCartographic(I,O);z.height=S?l[o-1]:l;var A=u.cartographicToCartesian(z,T);return e.pack(A,x,w-3),x},m.generateCartesianArc=function(t){for(var n=m.generateArc(t),r=n.length/3,a=new Array(r),i=0;r>i;i++)a[i]=e.unpack(n,3*i);return a},m}),define("Core/Queue",[],function(){"use strict";var e=function(){this._array=[],this._offset=0,this.length=0};return e.prototype.enqueue=function(e){this._array.push(e),this.length++},e.prototype.dequeue=function(){if(0===this.length)return void 0;var e=this._array,t=this._offset,n=e[t];return e[t]=void 0,t++,t>10&&2*t>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this.length--,n},e.prototype.contains=function(e){return-1!==this._array.indexOf(e)},e.prototype.clear=function(){this._array.length=this._offset=this.length=0},e.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)},e}),define("Core/WindingOrder",["./freezeObject"],function(e){"use strict";var t={CLOCKWISE:2304,COUNTER_CLOCKWISE:2305,validate:function(e){return e===t.CLOCKWISE||e===t.COUNTER_CLOCKWISE}};return e(t)}),define("Core/PolygonPipeline",["./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./Math","./pointInsideTriangle","./PolylinePipeline","./PrimitiveType","./Queue","./WindingOrder"],function(e,t,n,r,a,i,o,u,s,c,l,f,h,d,m,p){"use strict";function y(t,n,r){var a=e.subtract(n,t,q),i=e.subtract(r,n,U);return a.x*i.y-a.y*i.x>=0}function v(e){for(var t=e[0].x,n=0,r=0;r<e.length;r++)e[r].x>t&&(t=e[r].x,n=r);return n}function g(e){for(var t=e[0][0].x,n=0,r=0;r<e.length;r++){var a=e[r][v(e[r])].x;a>t&&(t=a,n=r)}return n}function w(e){for(var t=[],n=0;n<e.length;n++){var r=e[(n-1+e.length)%e.length],a=e[n],i=e[(n+1)%e.length];y(r,a,i)||t.push(a)}return t}function x(t,n){for(var r=0;r<t.length;r++)if(e.equals(n,t[r]))return r;return-1}function E(n,a,i){i=r(i,[]);var o=Number.MAX_VALUE,u=v(a),s=new e(a[u].x,n.y);i.push(u),i.push((u+1)%a.length);for(var c=a[0].x,l=c,f=1;f<a.length;++f)a[f].x<c?c=a[f].x:a[f].x>l&&(l=a[f].x);l+=l-c;var h=new t(l,n.y,0);for(f=0;f<a.length;f++){var d=a[f],m=a[(f+1)%a.length];if((d.x>=n.x||m.x>=n.x)&&(d.y>=n.y&&m.y<=n.y||d.y<=n.y&&m.y>=n.y)){var p=(m.y-d.y)*(h.x-n.x)-(m.x-d.x)*(h.y-n.y);if(0!==p){p=1/p;var y=((m.x-d.x)*(n.y-d.y)-(m.y-d.y)*(n.x-d.x))*p,g=((h.x-n.x)*(n.y-d.y)-(h.y-n.y)*(n.x-d.x))*p;if(y>=0&&1>=y&&g>=0&&1>=g){var w=new e(n.x+y*(h.x-n.x),n.y+y*(h.y-n.y)),x=e.subtract(w,n,L);p=e.magnitudeSquared(x),o>p&&(s=w,o=p,i[0]=f,i[1]=(f+1)%a.length)}}}}return s}function S(t,n){var r=g(n),a=n[r],i=v(a),o=a[i],u=[],s=E(o,t,u),c=x(t,s);if(-1!==c)return c;var h=e.magnitudeSquared(e.subtract(t[u[0]],o,B)),d=e.magnitudeSquared(e.subtract(t[u[1]],o,B)),m=d>h?t[u[0]]:t[u[1]],p=w(t),y=p.indexOf(m);-1!==y&&p.splice(y,1);for(var S=[],_=0;_<p.length;_++){var M=p[_];f(M,o,s,m)&&S.push(M)}var O=Number.MAX_VALUE;if(S.length>0){var P=e.fromElements(1,0,B);for(_=0;_<S.length;_++){var T=e.subtract(S[_],o,W),R=e.magnitude(P)*e.magnitudeSquared(T);if(0!==R){var C=Math.abs(l.acosClamped(e.dot(P,T)/R));O>C&&(O=C,m=S[_])}}}return t.indexOf(m)}function _(e,n,r){for(var a=et.computeWindingOrder2D(e),i=0;i<n.length;i++){var o=n[i];t.equals(o[0],o[o.length-1])||o.push(o[0]);var s=et.computeWindingOrder2D(o);s===a&&o.reverse()}var c=u.fromPoints(e,r),l=c.projectPointsOntoPlane(e),f=[];for(i=0;i<n.length;i++)f.push(c.projectPointsOntoPlane(n[i]));var h=S(l,f),d=g(f),m=v(f[d]),p=n[d],y=[];for(i=0;i<e.length;i++)y.push(e[i]);var w,x=[];if(0!==m)for(w=0;w<=p.length;w++){var E=(w+m)%p.length;0!==E&&x.push(p[E])}else for(w=0;w<p.length;w++)x.push(p[(w+m)%p.length]);var _=y.lastIndexOf(e[h]);x.push(e[_]);var M=y.slice(0,_+1),O=y.slice(_+1);return y=M.concat(x,O),n.splice(d,1),y}function M(e){var t=l.nextRandomNumber(),n=Math.floor(t*e);return n===e&&n--,n}function O(e,t,n,r){var a=r[e].position,i=r[t].position,o=r[n].position,u=o.x,s=o.y,c=a.x-u,l=a.y-s,f=i.x-u,h=i.y-s;return c*h-l*f}function P(e,t){return e.x*t.y-e.y*t.x}function T(e,t){var n=t.length,r=l.mod(e-1,n),a=l.mod(e+1,n);return 0===O(r,a,e,t)?!1:!0}function R(t,n){return e.magnitudeSquared(n)<e.magnitudeSquared(t)}function C(t,n,r){if(!T(t,r))return t;var a=r[t].position,i=r[n].position,o=r.length,u=l.mod(t-1,o);if(!T(u,r))return u;var s=l.mod(t+1,o);if(!T(s,r))return s;var c=e.subtract(r[u].position,a,k),f=e.subtract(r[s].position,a,j),h=e.subtract(i,a,V),d=P(c,h),m=P(f,h);if(0===d)return R(c,h)?F:G;if(0===m)return R(f,h)?F:G;var p=P(c,f);return 0>p?0>d&&m>0?F:G:p>0?d>0&&0>m?G:F:void 0}function N(e,t,n){return(e>t||e>n)&&(t>e||n>e)||t===n&&t===e}function I(t,n,r,a){var i=e.subtract(r,t,H),o=n.x*a.y-n.y*a.x,u=o*o,s=e.magnitudeSquared(n),c=e.magnitudeSquared(a);if(u>Y*s*c){var l=(i.x*a.y-i.y*a.x)/o;return e.add(t,e.multiplyByScalar(n,l,H),H)}return void 0}function z(t,n,r){for(var i=e.subtract(n,t,Z),o=r.length,u=0;o>u;u++){var s=r[u].position,c=r[l.mod(u+1,o)].position;if(!(e.equals(t,s)||e.equals(n,c)||e.equals(t,c)||e.equals(n,s))){var f=e.subtract(c,s,X),h=I(t,i,s,f);if(a(h)&&!(e.equals(h,t)||e.equals(h,n)||e.equals(h,s)||e.equals(h,c))){var d=h.x,m=h.y,p=N(d,t.x,n.x)&&N(m,t.y,n.y)&&N(d,s.x,c.x)&&N(m,s.y,c.y);if(p)return!0}}}return!1}function A(t,n,r){var a=C(t,n,r);if(a>=0)return a;var i=C(n,t,r);return i>=0?i:a!==F||i!==F||z(r[t].position,r[n].position,r)||e.equals(r[t].position,r[n].position)?K:J}function b(e){return 0===O(1,2,0,e)}function D(e){var t=e.length;if(3===t)return b(e)?[]:[e[0].index,e[1].index,e[2].index];if(e.length<3)throw new i("Invalid polygon: must have at least three vertices.");for(var n,r,a=0,o=10*e.length,u=K;J>u&&a++<o;){for(n=M(e.length),r=n+1;Math.abs(n-r)<2||Math.abs(n-r)>e.length-2;)r=M(e.length);if(n>r){var s=n;n=r,r=s}u=A(n,r,e)}if(u===J){var c=e.splice(n,r-n+1,e[n],e[r]);return D(e).concat(D(c))}return u>=0?(e.splice(u,1),D(e)):[]}var q=new e,U=new e,L=new e,B=new e(1,0),W=new e,F=-1,G=-2,k=new t,j=new t,V=new t,Y=l.EPSILON14,H=new e;new e;var Z=new e,X=new e,J=-1,K=-2,Q=new t,$=new t,et={};et.removeDuplicates=function(e){var n=h.removeDuplicates(e);return t.equals(n[0],n[n.length-1])?n.slice(1):n},et.computeArea2D=function(e){for(var t=e.length,n=0,r=t-1,a=0;t>a;r=a++){var i=e[r],o=e[a];n+=i.x*o.y-o.x*i.y}return.5*n},et.computeWindingOrder2D=function(e){var t=et.computeArea2D(e);return t>0?p.COUNTER_CLOCKWISE:p.CLOCKWISE},et.triangulate=function(e){for(var t=e.length,n=[],r=0;t>r;++r)n[r]={position:e[r],index:r};return D(n)};var tt=new t,nt=new t,rt=new t,at=new t,it=new t,ot=new t,ut=new t;return et.computeSubdivision=function(e,i,o,u){u=r(u,l.RADIANS_PER_DEGREE);var f,h=o.slice(0),m=i.length,p=new Array(3*m),y=0;for(f=0;m>f;f++){var v=i[f];p[y++]=v.x,p[y++]=v.y,p[y++]=v.z}for(var g=[],w={},x=e.maximumRadius,E=l.chordLength(u,x),S=E*E;h.length>0;){var _,M,O=h.pop(),P=h.pop(),T=h.pop(),R=t.fromArray(p,3*T,tt),C=t.fromArray(p,3*P,nt),N=t.fromArray(p,3*O,rt),I=t.multiplyByScalar(t.normalize(R,at),x,at),z=t.multiplyByScalar(t.normalize(C,it),x,it),A=t.multiplyByScalar(t.normalize(N,ot),x,ot),b=t.magnitudeSquared(t.subtract(I,z,ut)),D=t.magnitudeSquared(t.subtract(z,A,ut)),q=t.magnitudeSquared(t.subtract(A,I,ut)),U=Math.max(b,D,q);U>S?b===U?(_=Math.min(T,P)+" "+Math.max(T,P),f=w[_],a(f)||(M=t.add(R,C,ut),t.multiplyByScalar(M,.5,M),p.push(M.x,M.y,M.z),f=p.length/3-1,w[_]=f),h.push(T,f,O),h.push(f,P,O)):D===U?(_=Math.min(P,O)+" "+Math.max(P,O),f=w[_],a(f)||(M=t.add(C,N,ut),t.multiplyByScalar(M,.5,M),p.push(M.x,M.y,M.z),f=p.length/3-1,w[_]=f),h.push(P,f,T),h.push(f,O,T)):q===U&&(_=Math.min(O,T)+" "+Math.max(O,T),f=w[_],a(f)||(M=t.add(N,R,ut),t.multiplyByScalar(M,.5,M),p.push(M.x,M.y,M.z),f=p.length/3-1,w[_]=f),h.push(O,f,P),h.push(f,T,P)):(g.push(T),g.push(P),g.push(O))}return new s({attributes:{position:new c({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:p})},indices:g,primitiveType:d.TRIANGLES})},et.scaleToGeodeticHeight=function(e,n,i,u){i=r(i,o.WGS84);var s=Q,c=$;if(n=r(n,0),u=r(u,!0),a(e)&&a(e.attributes)&&a(e.attributes.position))for(var l=e.attributes.position.values,f=l.length,h=0;f>h;h+=3)t.fromArray(l,h,c),u&&(c=i.scaleToGeodeticSurface(c,c)),s=i.geodeticSurfaceNormal(c,s),t.multiplyByScalar(s,n,s),t.add(c,s,c),l[h]=c.x,l[h+1]=c.y,l[h+2]=c.z;return e},et.eliminateHoles=function(e,n,a){a=r(a,o.WGS84);for(var i=[],u=0;u<n.length;u++){for(var s=[],c=0;c<n[u].length;c++)s.push(t.clone(n[u][c]));i.push(s)}for(var l=e;i.length>0;)l=_(l,i,a);return l},et}),define("Core/PolylineVolumeGeometryLibrary",["./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./CornerType","./EllipsoidTangentPlane","./Math","./Matrix3","./Matrix4","./PolylinePipeline","./Quaternion","./Transforms"],function(e,t,n,r,a,i,o,u,s,c,l,f){"use strict";function h(e,t){for(var n=new Array(e.length),r=0;r<e.length;r++){var a=e[r];b=t.cartesianToCartographic(a,b),n[r]=b.height,e[r]=t.scaleToGeodeticSurface(a,a)}return n}function d(e,n,r,a){var i,o=e[0],u=e[1],s=t.angleBetween(o,u),c=Math.ceil(s/a),l=new Array(c);if(n===r){for(i=0;c>i;i++)l[i]=n;return l.push(r),l}var f=r-n,h=f/c;for(i=1;c>i;i++){var d=n+i*h;l[i]=d}return l[0]=n,l.push(r),l}function m(n,r,a,o){var u=new i(a,o),s=u.projectPointOntoPlane(t.add(a,n,H),H),c=u.projectPointOntoPlane(t.add(a,r,Z),Z),l=e.angleBetween(s,c);return c.x*s.y-c.y*s.x>=0?-l:l}function p(e,n,r,a,i,o,c,l){var h=W,d=F;q=f.eastNorthUpToFixedFrame(e,i,q),h=s.multiplyByPointAsVector(q,D,h),h=t.normalize(h,h);var p=m(h,n,e,i);L=u.fromRotationZ(p,L),G.z=o,q=s.multiplyTransformation(q,s.fromRotationTranslation(L,G,U),q);var y=B;y[0]=c;for(var v=0;l>v;v++)for(var g=0;g<r.length;g+=3)d=t.fromArray(r,g,d),d=u.multiplyByVector(y,d,d),d=s.multiplyByPoint(q,d,d),a.push(d.x,d.y,d.z);return a}function y(e,n,r,a,i,o,u){for(var s=0;s<e.length;s+=3){var c=t.fromArray(e,s,k);a=p(c,n,r,a,i,o[s/3],u,1)}return a}function v(e,t){var n=e.length,r=new Array(6*n),a=0,i=t.x+t.width/2,o=t.y+t.height/2,u=e[0];r[a++]=u.x-i,r[a++]=0,r[a++]=u.y-o;for(var s=1;n>s;s++){u=e[s];var c=u.x-i,l=u.y-o;r[a++]=c,r[a++]=0,r[a++]=l,r[a++]=c,r[a++]=0,r[a++]=l}return u=e[0],r[a++]=u.x-i,r[a++]=0,r[a++]=u.y-o,r}function g(e,t){for(var n=e.length,r=new Array(3*n),a=0,i=t.x+t.width/2,o=t.y+t.height/2,u=0;n>u;u++)r[a++]=e[u].x-i,r[a++]=0,r[a++]=e[u].y-o;return r}function w(e,n,r,i,s,c,f,h,d,m){var y,v=t.angleBetween(t.subtract(n,e,I),t.subtract(r,e,z)),g=i===a.BEVELED?0:Math.ceil(v/o.toRadians(5));y=s?u.fromQuaternion(l.fromAxisAngle(t.negate(e,I),v/(g+1),j),Y):u.fromQuaternion(l.fromAxisAngle(e,v/(g+1),j),Y);var w,x;if(n=t.clone(n,V),g>0)for(var E=m?2:1,S=0;g>S;S++)n=u.multiplyByVector(y,n,n),w=t.subtract(n,e,I),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(n,z),f=p(x,w,h,f,c,d,1,E);else w=t.subtract(n,e,I),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(n,z),f=p(x,w,h,f,c,d,1,1),r=t.clone(r,V),w=t.subtract(r,e,I),w=t.normalize(w,w),s||(w=t.negate(w,w)),x=c.scaleToGeodeticSurface(r,z),f=p(x,w,h,f,c,d,1,1);return f}function x(e,t){return o.equalsEpsilon(e.latitude,t.latitude,o.EPSILON6)&&o.equalsEpsilon(e.longitude,t.longitude,o.EPSILON6)}var E=[new t,new t],S=new t,_=new t,M=new t,O=new t,P=new t,T=new t,R=new t,C=new t,N=new t,I=new t,z=new t,A={},b=new r,D=new t(-1,0,0),q=new s,U=new s,L=new u,B=u.IDENTITY.clone(),W=new t,F=new n,G=new t,k=new t,j=new l,V=new t,Y=new u;A.removeDuplicatesFromShape=function(t){for(var n=t.length,r=[],a=n-1,i=0;n>i;a=i++){var o=t[a],u=t[i];e.equals(o,u)||r.push(u)}return r};var H=new t,Z=new t;A.angleIsGreaterThanPi=function(e,n,r,a){var o=new i(r,a),u=o.projectPointOntoPlane(t.add(r,e,H),H),s=o.projectPointOntoPlane(t.add(r,n,Z),Z);return s.x*u.y-s.y*u.x>=0};var X=new r,J=new r;A.removeDuplicatesFromPositions=function(e,t){var n=e.length;if(2>n)return e.slice(0);var r=[];r.push(e[0]);for(var a=1;n>a;++a){var i=e[a-1],o=e[a],u=t.cartesianToCartographic(i,X),s=t.cartesianToCartographic(o,J);x(u,s)||r.push(o)}return r};var K=new t,Q=new t;return A.computePositions=function(e,n,r,i,u){var s=i._ellipsoid,l=h(e,s),f=i._granularity,m=i._cornerType,x=u?v(n,r):g(n,r),z=u?g(n,r):void 0,b=r.height/2,D=r.width/2,q=e.length,U=[],L=u?[]:void 0,B=S,W=_,F=M,G=O,k=P,j=T,V=R,Y=C,H=N,Z=e[0],X=e[1];G=s.geodeticSurfaceNormal(Z,G),B=t.subtract(X,Z,B),B=t.normalize(B,B),Y=t.cross(G,B,Y),Y=t.normalize(Y,Y);var J=l[0],$=l[1];u&&(L=p(Z,Y,z,L,s,J+b,1,1)),H=t.clone(Z,H),Z=X,W=t.negate(B,W);for(var et,tt,nt=1;q-1>nt;nt++){var rt=u?2:1;X=e[nt+1],B=t.subtract(X,Z,B),B=t.normalize(B,B),F=t.add(B,W,F),F=t.normalize(F,F),G=s.geodeticSurfaceNormal(Z,G);var at=t.multiplyByScalar(G,t.dot(B,G),K);t.subtract(B,at,at),t.normalize(at,at);var it=t.multiplyByScalar(G,t.dot(W,G),Q);t.subtract(W,it,it),t.normalize(it,it);var ot=!o.equalsEpsilon(Math.abs(t.dot(at,it)),1,o.EPSILON7);if(ot){F=t.cross(F,G,F),F=t.cross(G,F,F),F=t.normalize(F,F);var ut=1/Math.max(.25,t.magnitude(t.cross(F,W,I))),st=A.angleIsGreaterThanPi(B,W,Z,s);st?(k=t.add(Z,t.multiplyByScalar(F,ut*D,F),k),j=t.add(k,t.multiplyByScalar(Y,D,j),j),E[0]=t.clone(H,E[0]),E[1]=t.clone(j,E[1]),et=d(E,J+b,$+b,f),tt=c.generateArc({positions:E,granularity:f,ellipsoid:s}),U=y(tt,Y,x,U,s,et,1),Y=t.cross(G,B,Y),Y=t.normalize(Y,Y),V=t.add(k,t.multiplyByScalar(Y,D,V),V),m===a.ROUNDED||m===a.BEVELED?w(k,j,V,m,st,s,U,x,$+b,u):(F=t.negate(F,F),U=p(Z,F,x,U,s,$+b,ut,rt)),H=t.clone(V,H)):(k=t.add(Z,t.multiplyByScalar(F,ut*D,F),k),j=t.add(k,t.multiplyByScalar(Y,-D,j),j),E[0]=t.clone(H,E[0]),E[1]=t.clone(j,E[1]),et=d(E,J+b,$+b,f),tt=c.generateArc({positions:E,granularity:f,ellipsoid:s}),U=y(tt,Y,x,U,s,et,1),Y=t.cross(G,B,Y),Y=t.normalize(Y,Y),V=t.add(k,t.multiplyByScalar(Y,-D,V),V),m===a.ROUNDED||m===a.BEVELED?w(k,j,V,m,st,s,U,x,$+b,u):U=p(Z,F,x,U,s,$+b,ut,rt),H=t.clone(V,H)),W=t.negate(B,W)}else U=p(H,Y,x,U,s,J+b,1,1),H=Z;J=$,$=l[nt+1],Z=X}E[0]=t.clone(H,E[0]),E[1]=t.clone(Z,E[1]),et=d(E,J+b,$+b,f),tt=c.generateArc({positions:E,granularity:f,ellipsoid:s}),U=y(tt,Y,x,U,s,et,1),u&&(L=p(Z,Y,z,L,s,$+b,1,1)),q=U.length;var ct=u?q+L.length:q,lt=new Float64Array(ct);return lt.set(U),u&<.set(L,q),lt},A}),define("Core/PolylineVolumeOutlineGeometry",["./BoundingRectangle","./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./CornerType","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PolygonPipeline","./PolylineVolumeGeometryLibrary","./PrimitiveType","./WindingOrder"],function(e,t,n,r,a,i,o,u,s,c,l,f,h,d,m,p,y,v,g){"use strict";function w(e,n){var r=new h;r.position=new f({componentDatatype:a.DOUBLE,componentsPerAttribute:3,values:e});var i,o,u=n.length,s=r.position.values.length/3,c=e.length/3,m=c/u,p=d.createTypedArray(s,2*u*(m+1)),y=0;i=0;var g=i*u;for(o=0;u-1>o;o++)p[y++]=o+g,p[y++]=o+g+1;for(p[y++]=u-1+g,p[y++]=g,i=m-1,g=i*u,o=0;u-1>o;o++)p[y++]=o+g,p[y++]=o+g+1;for(p[y++]=u-1+g,p[y++]=g,i=0;m-1>i;i++){var w=u*i,x=w+u;for(o=0;u>o;o++)p[y++]=o+w,p[y++]=o+x}var E=new l({attributes:r,indices:d.createTypedArray(s,p),boundingSphere:t.fromVertices(e),primitiveType:v.LINES});return E}var x=function(e){e=o(e,o.EMPTY_OBJECT);var t=e.polylinePositions,a=e.shapePositions;this._positions=t,this._shape=a,this._ellipsoid=c.clone(o(e.ellipsoid,c.WGS84)),this._cornerType=o(e.cornerType,i.ROUNDED),this._granularity=o(e.granularity,m.RADIANS_PER_DEGREE),this._workerName="createPolylineVolumeOutlineGeometry";var u=1+t.length*r.packedLength;u+=1+a.length*n.packedLength,this.packedLength=u+c.packedLength+2};x.pack=function(e,t,a){a=o(a,0);var i,u=e._positions,s=u.length;for(t[a++]=s,i=0;s>i;++i,a+=r.packedLength)r.pack(u[i],t,a);var l=e._shape;for(s=l.length,t[a++]=s,i=0;s>i;++i,a+=n.packedLength)n.pack(l[i],t,a);c.pack(e._ellipsoid,t,a),a+=c.packedLength,t[a++]=e._cornerType,t[a]=e._granularity};var E=c.clone(c.UNIT_SPHERE),S={polylinePositions:void 0,shapePositions:void 0,ellipsoid:E,height:void 0,cornerType:void 0,granularity:void 0};x.unpack=function(e,t,a){t=o(t,0);var i,s=e[t++],l=new Array(s);for(i=0;s>i;++i,t+=r.packedLength)l[i]=r.unpack(e,t);s=e[t++];var f=new Array(s);for(i=0;s>i;++i,t+=n.packedLength)f[i]=n.unpack(e,t);var h=c.unpack(e,t,E);t+=c.packedLength;var d=e[t++],m=e[t];return u(a)?(a._positions=l,a._shape=f,a._ellipsoid=c.clone(h,a._ellipsoid),a._cornerType=d,a._granularity=m,a):(S.polylinePositions=l,S.shapePositions=f,S.cornerType=d,S.granularity=m,new x(S))};var _=new e;return x.createGeometry=function(t){var n=t._positions,r=y.removeDuplicatesFromPositions(n,t._ellipsoid),a=t._shape;if(a=y.removeDuplicatesFromShape(a),r.length<2||a.length<3)return void 0;p.computeWindingOrder2D(a)===g.CLOCKWISE&&a.reverse();var i=e.fromPoints(a,_),o=y.computePositions(r,a,i,t,!1);return w(o,a)},x}),define("Workers/createPolylineVolumeOutlineGeometry",["../Core/defined","../Core/Ellipsoid","../Core/PolylineVolumeOutlineGeometry"],function(e,t,n){"use strict";function r(r,a){return e(a)&&(r=n.unpack(r,a)),r._ellipsoid=t.clone(r._ellipsoid),n.createGeometry(r)}return r})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createRectangleGeometry.js b/libs/Cesium/Workers/createRectangleGeometry.js new file mode 100644 index 0000000000..998d3a7568 --- /dev/null +++ b/libs/Cesium/Workers/createRectangleGeometry.js @@ -0,0 +1,230 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var r;for(this.mti==this.N+1&&this.init_genrand(5489),r=0;r<this.N-this.M;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+this.M]^e>>>1^t[1&e];for(;r<this.N-1;r++)e=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};r.EPSILON1=.1,r.EPSILON2=.01,r.EPSILON3=.001,r.EPSILON4=1e-4,r.EPSILON5=1e-5,r.EPSILON6=1e-6,r.EPSILON7=1e-7,r.EPSILON8=1e-8,r.EPSILON9=1e-9,r.EPSILON10=1e-10,r.EPSILON11=1e-11,r.EPSILON12=1e-12,r.EPSILON13=1e-13,r.EPSILON14=1e-14,r.EPSILON15=1e-15,r.EPSILON16=1e-16,r.EPSILON17=1e-17,r.EPSILON18=1e-18,r.EPSILON19=1e-19,r.EPSILON20=1e-20,r.GRAVITATIONALPARAMETER=3986004418e5,r.SOLAR_RADIUS=6955e5,r.LUNAR_RADIUS=1737400,r.SIXTY_FOUR_KILOBYTES=65536,r.sign=function(e){return e>0?1:0>e?-1:0},r.signNotZero=function(e){return 0>e?-1:1},r.toSNorm=function(e){return Math.round(255*(.5*r.clamp(e,-1,1)+.5))},r.fromSNorm=function(e){return 2*(r.clamp(e,0,255)/255)-1},r.sinh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t-r)},r.cosh=function(e){var t=Math.pow(Math.E,e),r=Math.pow(Math.E,-1*e);return.5*(t+r)},r.lerp=function(e,t,r){return(1-r)*e+r*t},r.PI=Math.PI,r.ONE_OVER_PI=1/Math.PI,r.PI_OVER_TWO=.5*Math.PI,r.PI_OVER_THREE=Math.PI/3,r.PI_OVER_FOUR=Math.PI/4,r.PI_OVER_SIX=Math.PI/6,r.THREE_PI_OVER_TWO=.5*3*Math.PI,r.TWO_PI=2*Math.PI,r.ONE_OVER_TWO_PI=1/(2*Math.PI),r.RADIANS_PER_DEGREE=Math.PI/180,r.DEGREES_PER_RADIAN=180/Math.PI,r.RADIANS_PER_ARCSECOND=r.RADIANS_PER_DEGREE/3600,r.toRadians=function(e){return e*r.RADIANS_PER_DEGREE},r.toDegrees=function(e){return e*r.DEGREES_PER_RADIAN},r.convertLongitudeRange=function(e){var t=r.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n},r.negativePiToPi=function(e){return r.zeroToTwoPi(e+r.PI)-r.PI},r.zeroToTwoPi=function(e){var t=r.mod(e,r.TWO_PI);return Math.abs(t)<r.EPSILON14&&Math.abs(e)>r.EPSILON14?r.TWO_PI:t},r.mod=function(e,t){return(e%t+t)%t},r.equalsEpsilon=function(e,r,n,a){a=t(a,n);var i=Math.abs(e-r);return a>=i||i<=n*Math.max(Math.abs(e),Math.abs(r))};var n=[1];r.factorial=function(e){var t=n.length;if(e>=t)for(var r=n[t-1],a=t;e>=a;a++)n.push(r*a);return n[e]},r.incrementWrap=function(e,r,n){return n=t(n,0),++e,e>r&&(e=n),e},r.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},r.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},r.clamp=function(e,t,r){return t>e?t:e>r?r:e};var a=new e;return r.setRandomNumberSeed=function(t){a=new e(t)},r.nextRandomNumber=function(){return a.random()},r.acosClamped=function(e){return Math.acos(r.clamp(e,-1,1))},r.asinClamped=function(e){return Math.asin(r.clamp(e,-1,1))},r.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},r}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r,n){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0)};i.fromSpherical=function(r,n){t(n)||(n=new i);var a=r.clock,o=r.cone,u=e(r.magnitude,1),s=u*Math.sin(o);return n.x=s*Math.cos(a),n.y=s*Math.sin(a),n.z=u*Math.cos(o),n},i.fromElements=function(e,r,n,a){return t(a)?(a.x=e,a.y=r,a.z=n,a):new i(e,r,n)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r):new i(e.x,e.y,e.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n]=t.z},i.unpack=function(r,n,a){return n=e(n,0),t(a)||(a=new i),a.x=r[n++],a.y=r[n++],a.z=r[n],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i,c=new i;i.angleBetween=function(e,t){i.normalize(e,s),i.normalize(t,c);var r=i.dot(s,c),n=i.magnitude(i.cross(s,c,s));return Math.atan2(n,r)};var l=new i;i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,l);return i.abs(r,r),t=r.x<=r.y?r.x<=r.z?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Z,t):r.y<=r.z?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_Z,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&a.equalsEpsilon(e.x,r.x,n,i)&&a.equalsEpsilon(e.y,r.y,n,i)&&a.equalsEpsilon(e.z,r.z,n,i)},i.cross=function(e,t,r){var n=e.x,a=e.y,i=e.z,o=t.x,u=t.y,s=t.z,c=a*s-i*u,l=i*o-n*s,f=n*u-a*o;return r.x=c,r.y=l,r.z=f,r},i.fromDegrees=function(e,t,r,n,o){var u=a.toRadians(e),s=a.toRadians(t);return i.fromRadians(u,s,r,n,o)};var f=new i,d=new i,h=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(r,n,a,o,u){a=e(a,0);var s=t(o)?o.radiiSquared:h,c=Math.cos(n);f.x=c*Math.cos(r),f.y=c*Math.sin(r),f.z=Math.sin(n),f=i.normalize(f,f),i.multiplyComponents(s,f,d);var l=Math.sqrt(i.dot(f,d));return d=i.divideByScalar(d,l,d),f=i.multiplyByScalar(f,a,f),t(u)||(u=new i),i.add(d,f,u)},i.fromDegreesArray=function(e,t,r){for(var n=new Array(e.length),o=0;o<e.length;o++)n[o]=a.toRadians(e[o]);return i.fromRadiansArray(n,t,r)},i.fromRadiansArray=function(e,r,n){var a=e.length;t(n)?n.length=a/2:n=new Array(a/2);for(var o=0;a>o;o+=2){var u=e[o],s=e[o+1];n[o/2]=i.fromRadians(u,s,0,r,n[o/2])}return n},i.fromDegreesArrayHeights=function(e,t,r){for(var n=new Array(e.length),o=0;o<e.length;o+=3)n[o]=a.toRadians(e[o]),n[o+1]=a.toRadians(e[o+1]),n[o+2]=e[o+2];return i.fromRadiansArrayHeights(n,t,r)},i.fromRadiansArrayHeights=function(e,r,n){var a=e.length;t(n)?n.length=a/3:n=new Array(a/3);for(var o=0;a>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];n[o/3]=i.fromRadians(u,s,c,r,n[o/3])}return n},i.ZERO=n(new i(0,0,0)),i.UNIT_X=n(new i(1,0,0)),i.UNIT_Y=n(new i(0,1,0)),i.UNIT_Z=n(new i(0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r,n){this.longitude=e(t,0),this.latitude=e(r,0),this.height=e(n,0)};return i.fromRadians=function(r,n,a,o){return a=e(a,0),t(o)?(o.longitude=r,o.latitude=n,o.height=a,o):new i(r,n,a)},i.fromDegrees=function(e,t,r,n){return e=a.toRadians(e),t=a.toRadians(t),i.fromRadians(e,t,r,n)},i.clone=function(e,r){return t(e)?t(r)?(r.longitude=e.longitude,r.latitude=e.latitude,r.height=e.height,r):new i(e.longitude,e.latitude,e.height):void 0},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.longitude===r.longitude&&e.latitude===r.latitude&&e.height===r.height},i.equalsEpsilon=function(e,r,n){return e===r||t(e)&&t(r)&&Math.abs(e.longitude-r.longitude)<=n&&Math.abs(e.latitude-r.latitude)<=n&&Math.abs(e.height-r.height)<=n},i.ZERO=n(new i(0,0,0)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),r=Object.defineProperties;return t&&e(r)||(r=function(e){return e}),r}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a,i,o,u){"use strict";function s(t,n,a,i){n=r(n,0),a=r(a,0),i=r(i,0),t._radii=new e(n,a,i),t._radiiSquared=new e(n*n,a*a,i*i),t._radiiToTheFourth=new e(n*n*n*n,a*a*a*a,i*i*i*i),t._oneOverRadii=new e(0===n?0:1/n,0===a?0:1/a,0===i?0:1/i),t._oneOverRadiiSquared=new e(0===n?0:1/(n*n),0===a?0:1/(a*a),0===i?0:1/(i*i)),t._minimumRadius=Math.min(n,a,i),t._maximumRadius=Math.max(n,a,i),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,r){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,r)};a(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,r){if(!n(t))return void 0;var a=t._radii;return n(r)?(e.clone(a,r._radii),e.clone(t._radiiSquared,r._radiiSquared),e.clone(t._radiiToTheFourth,r._radiiToTheFourth),e.clone(t._oneOverRadii,r._oneOverRadii),e.clone(t._oneOverRadiiSquared,r._oneOverRadiiSquared),r._minimumRadius=t._minimumRadius,r._maximumRadius=t._maximumRadius,r._centerToleranceSquared=t._centerToleranceSquared,r):new c(a.x,a.y,a.z)},c.fromCartesian3=function(e,t){return n(t)||(t=new c),n(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,n,a){a=r(a,0),e.pack(t._radii,n,a)},c.unpack=function(t,n,a){n=r(n,0);var i=e.unpack(t,n);return c.fromCartesian3(i,a)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,r){var a=t.longitude,i=t.latitude,o=Math.cos(i),u=o*Math.cos(a),s=o*Math.sin(a),c=Math.sin(i);return n(r)||(r=new e),r.x=u,r.y=s,r.z=c,e.normalize(r,r)},c.prototype.geodeticSurfaceNormal=function(t,r){return n(r)||(r=new e),r=e.multiplyComponents(t,this._oneOverRadiiSquared,r),e.normalize(r,r)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,r){var a=l,i=f;this.geodeticSurfaceNormalCartographic(t,a),e.multiplyComponents(this._radiiSquared,a,i);var o=Math.sqrt(e.dot(a,i));return e.divideByScalar(i,o,i),e.multiplyByScalar(a,t.height,a),n(r)||(r=new e),e.add(i,a,r)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var a=0;r>a;a++)t[a]=this.cartographicToCartesian(e[a],t[a]);return t};var d=new e,h=new e,m=new e;c.prototype.cartesianToCartographic=function(r,a){var i=this.scaleToGeodeticSurface(r,h);if(!n(i))return void 0;var o=this.geodeticSurfaceNormal(i,d),s=e.subtract(r,i,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,r))*e.magnitude(s);return n(a)?(a.longitude=c,a.latitude=l,a.height=f,a):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var r=e.length;n(t)?t.length=r:t=new Array(r);for(var a=0;r>a;++a)t[a]=this.cartesianToCartographic(e[a],t[a]);return t};var p=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,r){var a=t.x,i=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,d=a*a*c*c,h=i*i*l*l,m=o*o*f*f,v=d+h+m,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,p);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,r):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,O=x.z,M=y;M.x=2*w.x*E,M.y=2*w.y*S,M.z=2*w.z*O;var _,T,b,P,A,N,I,R,C,z,D,L=(1-g)*e.magnitude(t)/(.5*e.magnitude(M)),q=0;do{L-=q,b=1/(1+L*E),P=1/(1+L*S),A=1/(1+L*O),N=b*b,I=P*P,R=A*A,C=N*b,z=I*P,D=R*A,_=d*N+h*I+m*R-1,T=d*C*E+h*z*S+m*D*O;var U=-2*T;q=_/U}while(Math.abs(_)>u.EPSILON12);return n(r)?(r.x=a*b,r.y=i*P,r.z=o*A,r):new e(a*b,i*P,o*A)},c.prototype.scaleToGeocentricSurface=function(t,r){n(r)||(r=new e);var a=t.x,i=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(a*a*u.x+i*i*u.y+o*o*u.z);return e.multiplyByScalar(t,s,r)},c.prototype.transformPositionToScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._oneOverRadii,r)},c.prototype.transformPositionFromScaledSpace=function(t,r){return n(r)||(r=new e),e.multiplyComponents(t,this._radii,r)},c.prototype.equals=function(t){return this===t||n(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,r,n,a,i,o,u){"use strict";var s=function(e,r,n,a){this.west=t(e,0),this.south=t(r,0),this.east=t(n,0),this.north=t(a,0)};n(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,r,n){n=t(n,0),r[n++]=e.west,r[n++]=e.south,r[n++]=e.east,r[n]=e.north},s.unpack=function(e,n,a){return n=t(n,0),r(a)||(a=new s),a.west=e[n++],a.south=e[n++],a.east=e[n++],a.north=e[n],a},s.computeWidth=function(e){var t=e.east,r=e.west;return r>t&&(t+=u.TWO_PI),t-r},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,n,a,i,o){return e=u.toRadians(t(e,0)),n=u.toRadians(t(n,0)),a=u.toRadians(t(a,0)),i=u.toRadians(t(i,0)),r(o)?(o.west=e,o.south=n,o.east=a,o.north=i,o):new s(e,n,a,i)},s.fromCartographicArray=function(e,t){for(var n=Number.MAX_VALUE,a=-Number.MAX_VALUE,i=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];n=Math.min(n,l.longitude),a=Math.max(a,l.longitude),i=Math.min(i,l.latitude),o=Math.max(o,l.latitude)}return r(t)?(t.west=n,t.south=i,t.east=a,t.north=o,t):new s(n,i,a,o)},s.clone=function(e,t){return r(e)?r(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return r(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.south,n.height=0,n):new e(t.west,t.south)},s.northwest=function(t,n){return r(n)?(n.longitude=t.west,n.latitude=t.north,n.height=0,n):new e(t.west,t.north)},s.northeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.north,n.height=0,n):new e(t.east,t.north)},s.southeast=function(t,n){return r(n)?(n.longitude=t.east,n.latitude=t.south,n.height=0,n):new e(t.east,t.south)},s.center=function(t,n){var a=t.east,i=t.west;i>a&&(a+=u.TWO_PI);var o=u.negativePiToPi(.5*(i+a)),s=.5*(t.south+t.north);return r(n)?(n.longitude=o,n.latitude=s,n.height=0,n):new e(o,s)},s.intersection=function(e,t,n){var a=e.east,i=e.west,o=t.east,c=t.west;i>a&&o>0?a+=u.TWO_PI:c>o&&a>0&&(o+=u.TWO_PI),i>a&&0>c?c+=u.TWO_PI:c>o&&0>i&&(i+=u.TWO_PI);var l=u.negativePiToPi(Math.max(i,c)),f=u.negativePiToPi(Math.min(a,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var d=Math.max(e.south,t.south),h=Math.min(e.north,t.north);return d>=h?void 0:r(n)?(n.west=l,n.south=d,n.east=f,n.north=h,n):new s(l,d,f,h)},s.contains=function(e,t){var r=t.longitude,n=t.latitude,a=e.west,i=e.east;return a>i&&(i+=u.TWO_PI,0>r&&(r+=u.TWO_PI)),(r>a||u.equalsEpsilon(r,a,u.EPSILON14))&&(i>r||u.equalsEpsilon(r,i,u.EPSILON14))&&n>=e.south&&n<=e.north};var c=new e;return s.subsample=function(e,n,a,o){n=t(n,i.WGS84),a=t(a,0),r(o)||(o=[]);var l=0,f=e.north,d=e.south,h=e.east,m=e.west,p=c;p.height=a,p.longitude=m,p.latitude=f,o[l]=n.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=n.cartographicToCartesian(p,o[l]),l++,p.latitude=d,o[l]=n.cartographicToCartesian(p,o[l]),l++,p.longitude=m,o[l]=n.cartographicToCartesian(p,o[l]),l++,p.latitude=0>f?f:d>0?d:0;for(var y=1;8>y;++y)p.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,p)&&(o[l]=n.cartographicToCartesian(p,o[l]),l++);return 0===p.latitude&&(p.longitude=m,o[l]=n.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=n.cartographicToCartesian(p,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},r=function(r,n){e(t[r])||(t[r]=!0,console.log(n))};return r}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,r,n,a,i,o){"use strict";var u=function(e){this._ellipsoid=r(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return a(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,r){var a=this._semimajorAxis,i=t.longitude*a,o=t.latitude*a,u=t.height;return n(r)?(r.x=i,r.y=o,r.z=u,r):new e(i,o,u)},u.prototype.unproject=function(e,r){var a=this._oneOverSemimajorAxis,i=e.x*a,o=e.y*a,u=e.z;return n(r)?(r.longitude=i,r.latitude=o,r.height=u,r):new t(i,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,r){this.start=e(t,0),this.stop=e(r,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r,n,a){this.x=e(t,0),this.y=e(r,0),this.z=e(n,0),this.w=e(a,0)};i.fromElements=function(e,r,n,a,o){return t(o)?(o.x=e,o.y=r,o.z=n,o.w=a,o):new i(e,r,n,a)},i.fromColor=function(e,r){return t(r)?(r.x=e.red,r.y=e.green,r.z=e.blue,r.w=e.alpha,r):new i(e.red,e.green,e.blue,e.alpha)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r.z=e.z,r.w=e.w,r):new i(e.x,e.y,e.z,e.w):void 0},i.packedLength=4,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n++]=t.y,r[n++]=t.z,r[n]=t.w},i.unpack=function(r,n,a){return n=e(n,0),t(a)||(a=new i),a.x=r[n++],a.y=r[n++],a.z=r[n++],a.w=r[n],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r.z=Math.min(e.z,t.z),r.w=Math.min(e.w,t.w),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r.z=Math.max(e.z,t.z),r.w=Math.max(e.w,t.w),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t.z=e.z/r,t.w=e.w/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r.z=e.z*t.z,r.w=e.w*t.w,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i;return i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,s);return i.abs(r,r),t=r.x<=r.y?r.x<=r.z?r.x<=r.w?i.clone(i.UNIT_X,t):i.clone(i.UNIT_W,t):r.z<=r.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t):r.y<=r.z?r.y<=r.w?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_W,t):r.z<=r.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y&&e.z===r.z&&e.w===r.w},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]&&e.z===t[r+2]&&e.w===t[r+3]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&a.equalsEpsilon(e.x,r.x,n,i)&&a.equalsEpsilon(e.y,r.y,n,i)&&a.equalsEpsilon(e.z,r.z,n,i)&&a.equalsEpsilon(e.w,r.w,n,i)},i.ZERO=n(new i(0,0,0,0)),i.UNIT_X=n(new i(1,0,0,0)),i.UNIT_Y=n(new i(0,1,0,0)),i.UNIT_Z=n(new i(0,0,1,0)),i.UNIT_W=n(new i(0,0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a,i){"use strict";function o(e){for(var t=0,r=0;9>r;++r){var n=e[r];t+=n*n}return Math.sqrt(t)}function u(e){for(var t=0,r=0;3>r;++r){var n=e[c.getElementIndex(h[r],d[r])];t+=2*n*n}return Math.sqrt(t)}function s(e,t){for(var r=i.EPSILON15,n=0,a=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(h[o],d[o])]);u>n&&(a=o,n=u)}var s=1,l=0,f=d[a],m=h[a];if(Math.abs(e[c.getElementIndex(m,f)])>r){var p,y=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(m,f)],w=(y-v)/2/g;p=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+p*p),l=p*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,f)]=l,t[c.getElementIndex(f,m)]=-l,t}var c=function(e,r,n,a,i,o,u,s,c){this[0]=t(e,0),this[1]=t(a,0),this[2]=t(u,0),this[3]=t(r,0),this[4]=t(i,0),this[5]=t(s,0),this[6]=t(n,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,r,n){n=t(n,0),r[n++]=e[0],r[n++]=e[1],r[n++]=e[2],r[n++]=e[3],r[n++]=e[4],r[n++]=e[5],r[n++]=e[6],r[n++]=e[7],r[n++]=e[8]},c.unpack=function(e,n,a){return n=t(n,0),r(a)||(a=new c),a[0]=e[n++],a[1]=e[n++],a[2]=e[n++],a[3]=e[n++],a[4]=e[n++],a[5]=e[n++],a[6]=e[n++],a[7]=e[n++],a[8]=e[n++],a},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,n,a){return n=t(n,0),r(a)||(a=new c),a[0]=e[n],a[1]=e[n+1],a[2]=e[n+2],a[3]=e[n+3],a[4]=e[n+4],a[5]=e[n+5],a[6]=e[n+6],a[7]=e[n+7],a[8]=e[n+8],a},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var n=e.x*e.x,a=e.x*e.y,i=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,d=e.z*e.w,h=e.w*e.w,m=n-u-f+h,p=2*(a-d),y=2*(i+l),v=2*(a+d),g=-n+u-f+h,w=2*(s-o),x=2*(i-l),E=2*(s+o),S=-n-u+f+h;return r(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=p,t[4]=g,t[5]=E,t[6]=y,t[7]=w,t[8]=S,t):new c(m,p,y,v,g,w,x,E,S)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return r(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var n=Math.cos(e),a=Math.sin(e);return r(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=a,t[6]=0,t[7]=-a,t[8]=n,t):new c(1,0,0,0,n,-a,0,a,n)},c.fromRotationY=function(e,t){var n=Math.cos(e),a=Math.sin(e);return r(t)?(t[0]=n,t[1]=0,t[2]=-a,t[3]=0,t[4]=1,t[5]=0,t[6]=a,t[7]=0,t[8]=n,t):new c(n,0,a,0,1,0,-a,0,n)},c.fromRotationZ=function(e,t){var n=Math.cos(e),a=Math.sin(e);return r(t)?(t[0]=n,t[1]=a,t[2]=0,t[3]=-a,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(n,-a,0,a,n,0,0,0,1)},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,r){var n=3*t,a=e[n],i=e[n+1],o=e[n+2];return r.x=a,r.y=i,r.z=o,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var a=3*t;return n[a]=r.x,n[a+1]=r.y,n[a+2]=r.z,n},c.getRow=function(e,t,r){var n=e[t],a=e[t+3],i=e[t+6];return r.x=n,r.y=a,r.z=i,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+3]=r.y,n[t+6]=r.z,n};var l=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),r.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),r.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),r};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,r){var n=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],a=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],i=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return r[0]=n,r[1]=a,r[2]=i,r[3]=o,r[4]=u,r[5]=s,r[6]=c,r[7]=l,r[8]=f,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r},c.multiplyByVector=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=e[0]*n+e[3]*a+e[6]*i,u=e[1]*n+e[4]*a+e[7]*i,s=e[2]*n+e[5]*a+e[8]*i;return r.x=o,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r},c.multiplyByScale=function(e,t,r){return r[0]=e[0]*t.x,r[1]=e[1]*t.x,r[2]=e[2]*t.x,r[3]=e[3]*t.y,r[4]=e[4]*t.y,r[5]=e[5]*t.y,r[6]=e[6]*t.z,r[7]=e[7]*t.z,r[8]=e[8]*t.z,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var r=e[0],n=e[3],a=e[6],i=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=r,t[1]=n,t[2]=a,t[3]=i,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var d=[1,0,0],h=[2,2,1],m=new c,p=new c;return c.computeEigenDecomposition=function(e,t){var n=i.EPSILON20,a=10,l=0,f=0;r(t)||(t={});for(var d=t.unitary=c.clone(c.IDENTITY,t.unitary),h=t.diagonal=c.clone(e,t.diagonal),y=n*o(h);a>f&&u(h)>y;)s(h,m),c.transpose(m,p),c.multiply(h,m,h),c.multiply(p,h,h),c.multiply(d,m,d),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],r=e[3],n=e[6],a=e[1],i=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(i*c-s*o)+a*(s*n-r*c)+u*(r*o-i*n)},c.inverse=function(e,t){var r=e[0],a=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],d=e[7],h=e[8],m=c.determinant(e);if(Math.abs(m)<=i.EPSILON15)throw new n("matrix is not invertible");t[0]=s*h-d*l,t[1]=d*o-a*h,t[2]=a*l-s*o,t[3]=f*l-u*h,t[4]=r*h-f*o,t[5]=u*o-r*l,t[6]=u*d-f*s,t[7]=f*a-r*d,t[8]=r*s-u*a;var p=1/m;return c.multiplyByScalar(t,p,t)},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n},c.IDENTITY=a(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(r){t=r.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,r,n,a,i,o,u,s){"use strict"; +var c=function(e,t,n,a,i,o,u,s,c,l,f,d,h,m,p,y){this[0]=r(e,0),this[1]=r(i,0),this[2]=r(c,0),this[3]=r(h,0),this[4]=r(t,0),this[5]=r(o,0),this[6]=r(l,0),this[7]=r(m,0),this[8]=r(n,0),this[9]=r(u,0),this[10]=r(f,0),this[11]=r(p,0),this[12]=r(a,0),this[13]=r(s,0),this[14]=r(d,0),this[15]=r(y,0)};c.packedLength=16,c.pack=function(e,t,n){n=r(n,0),t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15]},c.unpack=function(e,t,a){return t=r(t,0),n(a)||(a=new c),a[0]=e[t++],a[1]=e[t++],a[2]=e[t++],a[3]=e[t++],a[4]=e[t++],a[5]=e[t++],a[6]=e[t++],a[7]=e[t++],a[8]=e[t++],a[9]=e[t++],a[10]=e[t++],a[11]=e[t++],a[12]=e[t++],a[13]=e[t++],a[14]=e[t++],a[15]=e[t],a},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,a,i){return a=r(a,e.ZERO),n(i)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=0,i[4]=t[3],i[5]=t[4],i[6]=t[5],i[7]=0,i[8]=t[6],i[9]=t[7],i[10]=t[8],i[11]=0,i[12]=a.x,i[13]=a.y,i[14]=a.z,i[15]=1,i):new c(t[0],t[3],t[6],a.x,t[1],t[4],t[7],a.y,t[2],t[5],t[8],a.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,r,a){n(a)||(a=new c);var i=r.x,o=r.y,u=r.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,d=t.x*t.w,h=t.y*t.y,m=t.y*t.z,p=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-h-y+g,x=2*(l-v),E=2*(f+p),S=2*(l+v),O=-s+h-y+g,M=2*(m-d),_=2*(f-p),T=2*(m+d),b=-s-h+y+g;return a[0]=w*i,a[1]=S*i,a[2]=_*i,a[3]=0,a[4]=x*o,a[5]=O*o,a[6]=T*o,a[7]=0,a[8]=E*u,a[9]=M*u,a[10]=b*u,a[11]=0,a[12]=e.x,a[13]=e.y,a[14]=e.z,a[15]=1,a},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,d=new e;c.fromCamera=function(t,r){var a=t.eye,i=t.target,o=t.up;e.normalize(e.subtract(i,a,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,d),d);var u=f.x,s=f.y,h=f.z,m=l.x,p=l.y,y=l.z,v=d.x,g=d.y,w=d.z,x=a.x,E=a.y,S=a.z,O=u*-x+s*-E+h*-S,M=v*-x+g*-E+w*-S,_=m*x+p*E+y*S;return n(r)?(r[0]=u,r[1]=v,r[2]=-m,r[3]=0,r[4]=s,r[5]=g,r[6]=-p,r[7]=0,r[8]=h,r[9]=w,r[10]=-y,r[11]=0,r[12]=O,r[13]=M,r[14]=_,r[15]=1,r):new c(u,s,h,O,v,g,w,M,-m,-p,-y,_,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,r,n,a){var i=Math.tan(.5*e),o=1/i,u=o/t,s=(n+r)/(r-n),c=2*n*r/(r-n);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=o,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=s,a[11]=-1,a[12]=0,a[13]=0,a[14]=c,a[15]=0,a},c.computeOrthographicOffCenter=function(e,t,r,n,a,i,o){var u=1/(t-e),s=1/(n-r),c=1/(i-a),l=-(t+e)*u,f=-(n+r)*s,d=-(i+a)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=d,o[15]=1,o},c.computePerspectiveOffCenter=function(e,t,r,n,a,i,o){var u=2*a/(t-e),s=2*a/(n-r),c=(t+e)/(t-e),l=(n+r)/(n-r),f=-(i+a)/(i-a),d=-1,h=-2*i*a/(i-a);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=d,o[12]=0,o[13]=0,o[14]=h,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,r,n,a,i){var o=2*a/(t-e),u=2*a/(n-r),s=(t+e)/(t-e),c=(n+r)/(n-r),l=-1,f=-1,d=-2*a;return i[0]=o,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=u,i[6]=0,i[7]=0,i[8]=s,i[9]=c,i[10]=l,i[11]=f,i[12]=0,i[13]=0,i[14]=d,i[15]=0,i},c.computeViewportTransformation=function(e,t,n,a){e=r(e,r.EMPTY_OBJECT);var i=r(e.x,0),o=r(e.y,0),u=r(e.width,0),s=r(e.height,0);t=r(t,0),n=r(n,1);var c=.5*u,l=.5*s,f=.5*(n-t),d=c,h=l,m=f,p=i+c,y=o+l,v=t+f,g=1;return a[0]=d,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=h,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=m,a[11]=0,a[12]=p,a[13]=y,a[14]=v,a[15]=g,a},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,r){var n=4*t,a=e[n],i=e[n+1],o=e[n+2],u=e[n+3];return r.x=a,r.y=i,r.z=o,r.w=u,r},c.setColumn=function(e,t,r,n){n=c.clone(e,n);var a=4*t;return n[a]=r.x,n[a+1]=r.y,n[a+2]=r.z,n[a+3]=r.w,n},c.setTranslation=function(e,t,r){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=t.x,r[13]=t.y,r[14]=t.z,r[15]=e[15],r},c.getRow=function(e,t,r){var n=e[t],a=e[t+4],i=e[t+8],o=e[t+12];return r.x=n,r.y=a,r.z=i,r.w=o,r},c.setRow=function(e,t,r,n){return n=c.clone(e,n),n[t]=r.x,n[t+4]=r.y,n[t+8]=r.z,n[t+12]=r.w,n};var h=new e;c.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],h)),r.y=e.magnitude(e.fromElements(t[4],t[5],t[6],h)),r.z=e.magnitude(e.fromElements(t[8],t[9],t[10],h)),r};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,r){var n=e[0],a=e[1],i=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],d=e[9],h=e[10],m=e[11],p=e[12],y=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],O=t[4],M=t[5],_=t[6],T=t[7],b=t[8],P=t[9],A=t[10],N=t[11],I=t[12],R=t[13],C=t[14],z=t[15],D=n*w+u*x+f*E+p*S,L=a*w+s*x+d*E+y*S,q=i*w+c*x+h*E+v*S,U=o*w+l*x+m*E+g*S,B=n*O+u*M+f*_+p*T,F=a*O+s*M+d*_+y*T,W=i*O+c*M+h*_+v*T,G=o*O+l*M+m*_+g*T,k=n*b+u*P+f*A+p*N,V=a*b+s*P+d*A+y*N,Y=i*b+c*P+h*A+v*N,j=o*b+l*P+m*A+g*N,H=n*I+u*R+f*C+p*z,Z=a*I+s*R+d*C+y*z,X=i*I+c*R+h*C+v*z,J=o*I+l*R+m*C+g*z;return r[0]=D,r[1]=L,r[2]=q,r[3]=U,r[4]=B,r[5]=F,r[6]=W,r[7]=G,r[8]=k,r[9]=V,r[10]=Y,r[11]=j,r[12]=H,r[13]=Z,r[14]=X,r[15]=J,r},c.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r[4]=e[4]+t[4],r[5]=e[5]+t[5],r[6]=e[6]+t[6],r[7]=e[7]+t[7],r[8]=e[8]+t[8],r[9]=e[9]+t[9],r[10]=e[10]+t[10],r[11]=e[11]+t[11],r[12]=e[12]+t[12],r[13]=e[13]+t[13],r[14]=e[14]+t[14],r[15]=e[15]+t[15],r},c.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r[4]=e[4]-t[4],r[5]=e[5]-t[5],r[6]=e[6]-t[6],r[7]=e[7]-t[7],r[8]=e[8]-t[8],r[9]=e[9]-t[9],r[10]=e[10]-t[10],r[11]=e[11]-t[11],r[12]=e[12]-t[12],r[13]=e[13]-t[13],r[14]=e[14]-t[14],r[15]=e[15]-t[15],r},c.multiplyTransformation=function(e,t,r){var n=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=e[12],h=e[13],m=e[14],p=t[0],y=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],O=t[10],M=t[12],_=t[13],T=t[14],b=n*p+o*y+c*v,P=a*p+u*y+l*v,A=i*p+s*y+f*v,N=n*g+o*w+c*x,I=a*g+u*w+l*x,R=i*g+s*w+f*x,C=n*E+o*S+c*O,z=a*E+u*S+l*O,D=i*E+s*S+f*O,L=n*M+o*_+c*T+d,q=a*M+u*_+l*T+h,U=i*M+s*_+f*T+m;return r[0]=b,r[1]=P,r[2]=A,r[3]=0,r[4]=N,r[5]=I,r[6]=R,r[7]=0,r[8]=C,r[9]=z,r[10]=D,r[11]=0,r[12]=L,r[13]=q,r[14]=U,r[15]=1,r},c.multiplyByMatrix3=function(e,t,r){var n=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=t[0],h=t[1],m=t[2],p=t[3],y=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=n*d+o*h+c*m,S=a*d+u*h+l*m,O=i*d+s*h+f*m,M=n*p+o*y+c*v,_=a*p+u*y+l*v,T=i*p+s*y+f*v,b=n*g+o*w+c*x,P=a*g+u*w+l*x,A=i*g+s*w+f*x;return r[0]=E,r[1]=S,r[2]=O,r[3]=0,r[4]=M,r[5]=_,r[6]=T,r[7]=0,r[8]=b,r[9]=P,r[10]=A,r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r},c.multiplyByTranslation=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=n*e[0]+a*e[4]+i*e[8]+e[12],u=n*e[1]+a*e[5]+i*e[9]+e[13],s=n*e[2]+a*e[6]+i*e[10]+e[14];return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=o,r[13]=u,r[14]=s,r[15]=e[15],r};var p=new e;c.multiplyByUniformScale=function(e,t,r){return p.x=t,p.y=t,p.z=t,c.multiplyByScale(e,p,r)},c.multiplyByScale=function(e,t,r){var n=t.x,a=t.y,i=t.z;return 1===n&&1===a&&1===i?c.clone(e,r):(r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=0,r[4]=a*e[4],r[5]=a*e[5],r[6]=a*e[6],r[7]=0,r[8]=i*e[8],r[9]=i*e[9],r[10]=i*e[10],r[11]=0,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=1,r)},c.multiplyByVector=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=t.w,u=e[0]*n+e[4]*a+e[8]*i+e[12]*o,s=e[1]*n+e[5]*a+e[9]*i+e[13]*o,c=e[2]*n+e[6]*a+e[10]*i+e[14]*o,l=e[3]*n+e[7]*a+e[11]*i+e[15]*o;return r.x=u,r.y=s,r.z=c,r.w=l,r},c.multiplyByPointAsVector=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=e[0]*n+e[4]*a+e[8]*i,u=e[1]*n+e[5]*a+e[9]*i,s=e[2]*n+e[6]*a+e[10]*i;return r.x=o,r.y=u,r.z=s,r},c.multiplyByPoint=function(e,t,r){var n=t.x,a=t.y,i=t.z,o=e[0]*n+e[4]*a+e[8]*i+e[12],u=e[1]*n+e[5]*a+e[9]*i+e[13],s=e[2]*n+e[6]*a+e[10]*i+e[14];return r.x=o,r.y=u,r.z=s,r},c.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r[4]=e[4]*t,r[5]=e[5]*t,r[6]=e[6]*t,r[7]=e[7]*t,r[8]=e[8]*t,r[9]=e[9]*t,r[10]=e[10]*t,r[11]=e[11]*t,r[12]=e[12]*t,r[13]=e[13]*t,r[14]=e[14]*t,r[15]=e[15]*t,r},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var r=e[1],n=e[2],a=e[3],i=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=i,t[10]=e[10],t[11]=e[14],t[12]=a,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r&&Math.abs(e[9]-t[9])<=r&&Math.abs(e[10]-t[10])<=r&&Math.abs(e[11]-t[11])<=r&&Math.abs(e[12]-t[12])<=r&&Math.abs(e[13]-t[13])<=r&&Math.abs(e[14]-t[14])<=r&&Math.abs(e[15]-t[15])<=r},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,r){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return r[0]=0,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=0,r[11]=0,r[12]=-e[12],r[13]=-e[13],r[14]=-e[14],r[15]=1,r;var n=e[0],a=e[4],i=e[8],l=e[12],f=e[1],d=e[5],h=e[9],m=e[13],p=e[2],x=e[6],E=e[10],S=e[14],O=e[3],M=e[7],_=e[11],T=e[15],b=E*T,P=S*_,A=x*T,N=S*M,I=x*_,R=E*M,C=p*T,z=S*O,D=p*_,L=E*O,q=p*M,U=x*O,B=b*d+N*h+I*m-(P*d+A*h+R*m),F=P*f+C*h+L*m-(b*f+z*h+D*m),W=A*f+z*d+q*m-(N*f+C*d+U*m),G=R*f+D*d+U*h-(I*f+L*d+q*h),k=P*a+A*i+R*l-(b*a+N*i+I*l),V=b*n+z*i+D*l-(P*n+C*i+L*l),Y=N*n+C*a+U*l-(A*n+z*a+q*l),j=I*n+L*a+q*i-(R*n+D*a+U*i);b=i*m,P=l*h,A=a*m,N=l*d,I=a*h,R=i*d,C=n*m,z=l*f,D=n*h,L=i*f,q=n*d,U=a*f;var H=b*M+N*_+I*T-(P*M+A*_+R*T),Z=P*O+C*_+L*T-(b*O+z*_+D*T),X=A*O+z*M+q*T-(N*O+C*M+U*T),J=R*O+D*M+U*_-(I*O+L*M+q*_),K=A*E+R*S+P*x-(I*S+b*x+N*E),Q=D*S+b*p+z*E-(C*E+L*S+P*p),$=C*x+U*S+N*p-(q*S+A*p+z*x),et=q*E+I*p+L*x-(D*x+U*E+R*p),tt=n*B+a*F+i*W+l*G;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,r[0]=B*tt,r[1]=F*tt,r[2]=W*tt,r[3]=G*tt,r[4]=k*tt,r[5]=V*tt,r[6]=Y*tt,r[7]=j*tt,r[8]=H*tt,r[9]=Z*tt,r[10]=X*tt,r[11]=J*tt,r[12]=K*tt,r[13]=Q*tt,r[14]=$*tt,r[15]=et*tt,r},c.inverseTransformation=function(e,t){var r=e[0],n=e[1],a=e[2],i=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],d=e[13],h=e[14],m=-r*f-n*d-a*h,p=-i*f-o*d-u*h,y=-s*f-c*d-l*h;return t[0]=r,t[1]=i,t[2]=s,t[3]=0,t[4]=n,t[5]=o,t[6]=c,t[7]=0,t[8]=a,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=p,t[14]=y,t[15]=1,t},c.IDENTITY=i(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]&&e[9]===t[r+9]&&e[10]===t[r+10]&&e[11]===t[r+11]&&e[12]===t[r+12]&&e[13]===t[r+13]&&e[14]===t[r+14]&&e[15]===t[r+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n){"use strict";var a=function(t,r){this.normal=e.clone(t),this.distance=r};a.fromPointNormal=function(r,n,i){var o=-e.dot(n,r);return t(i)?(e.clone(n,i.normal),i.distance=o,i):new a(n,o)};var i=new e;return a.fromCartesian4=function(r,n){var o=e.fromCartesian4(r,i),u=r.w;return t(n)?(e.clone(o,n.normal),n.distance=u,n):new a(o,u)},a.getPointDistance=function(t,r){return e.dot(t.normal,r)+t.distance},a.ORIGIN_XY_PLANE=n(new a(e.UNIT_Z,0)),a.ORIGIN_YZ_PLANE=n(new a(e.UNIT_X,0)),a.ORIGIN_ZX_PLANE=n(new a(e.UNIT_Y,0)),a}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,r,n,a,i,o,u,s,c,l,f,d){"use strict";var h=function(t,n){this.center=e.clone(r(t,e.ZERO)),this.radius=r(n,0)},m=new e,p=new e,y=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,O=new e,M=new e,_=new e;h.fromPoints=function(t,r){if(n(r)||(r=new h),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;for(var a=e.clone(t[0],x),i=e.clone(a,m),o=e.clone(a,p),u=e.clone(a,y),s=e.clone(a,v),c=e.clone(a,g),l=e.clone(a,w),f=t.length,d=1;f>d;d++){e.clone(t[d],a);var T=a.x,b=a.y,P=a.z;T<i.x&&e.clone(a,i),T>s.x&&e.clone(a,s),b<o.y&&e.clone(a,o),b>c.y&&e.clone(a,c),P<u.z&&e.clone(a,u),P>l.z&&e.clone(a,l)}var A=e.magnitudeSquared(e.subtract(s,i,E)),N=e.magnitudeSquared(e.subtract(c,o,E)),I=e.magnitudeSquared(e.subtract(l,u,E)),R=i,C=s,z=A;N>z&&(z=N,R=o,C=c),I>z&&(z=I,R=u,C=l);var D=S;D.x=.5*(R.x+C.x),D.y=.5*(R.y+C.y),D.z=.5*(R.z+C.z);var L=e.magnitudeSquared(e.subtract(C,D,E)),q=Math.sqrt(L),U=O;U.x=i.x,U.y=o.y,U.z=u.z;var B=M;B.x=s.x,B.y=c.y,B.z=l.z;var F=e.multiplyByScalar(e.add(U,B,E),.5,_),W=0;for(d=0;f>d;d++){e.clone(t[d],a);var G=e.magnitude(e.subtract(a,F,E));G>W&&(W=G);var k=e.magnitudeSquared(e.subtract(a,D,E));if(k>L){var V=Math.sqrt(k);q=.5*(q+V),L=q*q;var Y=V-q;D.x=(q*D.x+Y*a.x)/V,D.y=(q*D.y+Y*a.y)/V,D.z=(q*D.z+Y*a.z)/V}}return W>q?(e.clone(D,r.center),r.radius=q):(e.clone(F,r.center),r.radius=W),r};var T=new u,b=new e,P=new e,A=new t,N=new t;h.fromRectangle2D=function(e,t,r){return h.fromRectangleWithHeights2D(e,t,0,0,r)},h.fromRectangleWithHeights2D=function(t,a,i,o,u){if(n(u)||(u=new h),!n(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;a=r(a,T),d.southwest(t,A),A.height=i,d.northeast(t,N),N.height=o;var s=a.project(A,b),c=a.project(N,P),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var p=u.center;return p.x=s.x+.5*l,p.y=s.y+.5*f,p.z=s.z+.5*m,u};var I=[];h.fromRectangle3D=function(e,t,a,i){t=r(t,o.WGS84),a=r(a,0);var u;return n(e)&&(u=d.subsample(e,t,a,I)),h.fromPoints(u,i)},h.fromVertices=function(t,a,i,o){if(n(o)||(o=new h),!n(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;a=r(a,e.ZERO),i=r(i,3);var u=x;u.x=t[0]+a.x,u.y=t[1]+a.y,u.z=t[2]+a.z;for(var s=e.clone(u,m),c=e.clone(u,p),l=e.clone(u,y),f=e.clone(u,v),d=e.clone(u,g),T=e.clone(u,w),b=t.length,P=0;b>P;P+=i){var A=t[P]+a.x,N=t[P+1]+a.y,I=t[P+2]+a.z;u.x=A,u.y=N,u.z=I,A<s.x&&e.clone(u,s),A>f.x&&e.clone(u,f),N<c.y&&e.clone(u,c),N>d.y&&e.clone(u,d),I<l.z&&e.clone(u,l),I>T.z&&e.clone(u,T)}var R=e.magnitudeSquared(e.subtract(f,s,E)),C=e.magnitudeSquared(e.subtract(d,c,E)),z=e.magnitudeSquared(e.subtract(T,l,E)),D=s,L=f,q=R;C>q&&(q=C,D=c,L=d),z>q&&(q=z,D=l,L=T);var U=S;U.x=.5*(D.x+L.x),U.y=.5*(D.y+L.y),U.z=.5*(D.z+L.z);var B=e.magnitudeSquared(e.subtract(L,U,E)),F=Math.sqrt(B),W=O;W.x=s.x,W.y=c.y,W.z=l.z;var G=M;G.x=f.x,G.y=d.y,G.z=T.z;var k=e.multiplyByScalar(e.add(W,G,E),.5,_),V=0;for(P=0;b>P;P+=i){u.x=t[P]+a.x,u.y=t[P+1]+a.y,u.z=t[P+2]+a.z;var Y=e.magnitude(e.subtract(u,k,E));Y>V&&(V=Y);var j=e.magnitudeSquared(e.subtract(u,U,E));if(j>B){var H=Math.sqrt(j);F=.5*(F+H),B=F*F;var Z=H-F;U.x=(F*U.x+Z*u.x)/H,U.y=(F*U.y+Z*u.y)/H,U.z=(F*U.z+Z*u.z)/H}}return V>F?(e.clone(U,o.center),o.radius=F):(e.clone(k,o.center),o.radius=V),o},h.fromCornerPoints=function(t,r,a){n(a)||(a=new h);var i=a.center;return e.add(t,r,i),e.multiplyByScalar(i,.5,i),a.radius=e.distance(i,r),a},h.fromEllipsoid=function(t,r){return n(r)||(r=new h),e.clone(e.ZERO,r.center),r.radius=t.maximumRadius,r};var R=new e;h.fromBoundingSpheres=function(t,r){if(n(r)||(r=new h),!n(t)||0===t.length)return r.center=e.clone(e.ZERO,r.center),r.radius=0,r;var a=t.length;if(1===a)return h.clone(t[0],r);if(2===a)return h.union(t[0],t[1],r);for(var i=[],o=0;a>o;o++)i.push(t[o].center);r=h.fromPoints(i,r);var u=r.center,s=r.radius;for(o=0;a>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,R)+c.radius)}return r.radius=s,r},h.clone=function(t,r){return n(t)?n(r)?(r.center=e.clone(t.center,r.center),r.radius=t.radius,r):new h(t.center,t.radius):void 0},h.packedLength=4,h.pack=function(e,t,n){n=r(n,0);var a=e.center;t[n++]=a.x,t[n++]=a.y,t[n++]=a.z,t[n]=e.radius},h.unpack=function(e,t,a){t=r(t,0),n(a)||(a=new h);var i=a.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],a.radius=e[t],a};var C=new e,z=new e;h.union=function(t,r,a){n(a)||(a=new h);var i=t.center,o=t.radius,u=r.center,s=r.radius,c=e.subtract(u,i,C),l=e.magnitude(c);if(o>=l+s)return t.clone(a),a;if(s>=l+o)return r.clone(a),a;var f=.5*(o+l+s),d=e.multiplyByScalar(c,(-o+f)/l,z);return e.add(d,i,d),e.clone(d,a.center),a.radius=f,a};var D=new e;h.expand=function(t,r,n){n=h.clone(t,n);var a=e.magnitude(e.subtract(r,n.center,D));return a>n.radius&&(n.radius=a),n},h.intersectPlane=function(t,r){var n=t.center,a=t.radius,i=r.normal,o=e.dot(i,n)+r.distance;return-a>o?s.OUTSIDE:a>o?s.INTERSECTING:s.INSIDE};var L=new f(new e,0);h.intersect=function(e,t){a("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var r=f.fromCartesian4(t,L);return h.intersectPlane(e,r)},h.transform=function(e,t,r){return n(r)||(r=new h),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=l.getMaximumScale(t)*e.radius,r};var q=new e;h.distanceSquaredTo=function(t,r){var n=e.subtract(t.center,r,q);return e.magnitudeSquared(n)-t.radius*t.radius},h.transformWithoutScale=function(e,t,r){return n(r)||(r=new h),r.center=l.multiplyByPoint(t,e.center,r.center),r.radius=e.radius,r};var U=new e;h.computePlaneDistances=function(t,r,a,i){n(i)||(i=new c);var o=e.subtract(t.center,r,U),u=e.multiplyByScalar(a,e.dot(a,o),U),s=e.magnitude(u);return i.start=s-t.radius,i.stop=s+t.radius,i};for(var B=new e,F=new e,W=new e,G=new e,k=new e,V=new t,Y=new Array(8),j=0;8>j;++j)Y[j]=new e;var H=new u;return h.projectTo2D=function(t,n,a){n=r(n,H);var i=n.ellipsoid,o=t.center,u=t.radius,s=i.geodeticSurfaceNormal(o,B),c=e.cross(e.UNIT_Z,s,F);e.normalize(c,c);var l=e.cross(s,c,W);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,k),d=e.negate(c,G),m=Y,p=m[0];e.add(s,l,p),e.add(p,c,p),p=m[1],e.add(s,l,p),e.add(p,d,p),p=m[2],e.add(s,f,p),e.add(p,d,p),p=m[3],e.add(s,f,p),e.add(p,c,p),e.negate(s,s),p=m[4],e.add(s,l,p),e.add(p,c,p),p=m[5],e.add(s,l,p),e.add(p,d,p),p=m[6],e.add(s,f,p),e.add(p,d,p),p=m[7],e.add(s,f,p),e.add(p,c,p);for(var y=m.length,v=0;y>v;++v){var g=m[v];e.add(o,g,g);var w=i.cartesianToCartographic(g,V);n.project(w,g)}a=h.fromPoints(m,a),o=a.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,a},h.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&t.radius===r.radius},h.prototype.intersectPlane=function(e){return h.intersectPlane(this,e)},h.prototype.intersect=function(e){return h.intersect(this,e)},h.prototype.equals=function(e){return h.equals(this,e)},h.prototype.clone=function(e){return h.clone(this,e)},h}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n,a){"use strict";var i=function(t,r){this.x=e(t,0),this.y=e(r,0)};i.fromElements=function(e,r,n){return t(n)?(n.x=e,n.y=r,n):new i(e,r)},i.clone=function(e,r){return t(e)?t(r)?(r.x=e.x,r.y=e.y,r):new i(e.x,e.y):void 0},i.fromCartesian3=i.clone,i.fromCartesian4=i.clone,i.packedLength=2,i.pack=function(t,r,n){n=e(n,0),r[n++]=t.x,r[n]=t.y},i.unpack=function(r,n,a){return n=e(n,0),t(a)||(a=new i),a.x=r[n++],a.y=r[n],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y)},i.minimumComponent=function(e){return Math.min(e.x,e.y)},i.minimumByComponent=function(e,t,r){return r.x=Math.min(e.x,t.x),r.y=Math.min(e.y,t.y),r},i.maximumByComponent=function(e,t,r){return r.x=Math.max(e.x,t.x),r.y=Math.max(e.y,t.y),r},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var r=i.magnitude(e);return t.x=e.x/r,t.y=e.y/r,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y},i.multiplyComponents=function(e,t,r){return r.x=e.x*t.x,r.y=e.y*t.y,r},i.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r},i.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r},i.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r},i.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new i;i.lerp=function(e,t,r,n){return i.multiplyByScalar(t,r,u),n=i.multiplyByScalar(e,1-r,n),i.add(u,n,n)};var s=new i,c=new i;i.angleBetween=function(e,t){return i.normalize(e,s),i.normalize(t,c),a.acosClamped(i.dot(s,c))};var l=new i;return i.mostOrthogonalAxis=function(e,t){var r=i.normalize(e,l);return i.abs(r,r),t=r.x<=r.y?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Y,t)},i.equals=function(e,r){return e===r||t(e)&&t(r)&&e.x===r.x&&e.y===r.y},i.equalsArray=function(e,t,r){return e.x===t[r]&&e.y===t[r+1]},i.equalsEpsilon=function(e,r,n,i){return e===r||t(e)&&t(r)&&a.equalsEpsilon(e.x,r.x,n,i)&&a.equalsEpsilon(e.y,r.y,n,i)},i.ZERO=n(new i(0,0)),i.UNIT_X=n(new i(1,0)),i.UNIT_Y=n(new i(0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,r){return i.equalsEpsilon(this,e,t,r)},i.prototype.toString=function(){return"("+this.x+", "+this.y+")"},i}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var r,n={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},a={};return t(a,{element:{get:function(){return a.supportsFullscreen()?document[n.fullscreenElement]:void 0}},changeEventName:{get:function(){return a.supportsFullscreen()?n.fullscreenchange:void 0}},errorEventName:{get:function(){return a.supportsFullscreen()?n.fullscreenerror:void 0}},enabled:{get:function(){return a.supportsFullscreen()?document[n.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return a.supportsFullscreen()?null!==a.element:void 0}}}),a.supportsFullscreen=function(){if(e(r))return r;r=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return n.requestFullscreen="requestFullscreen",n.exitFullscreen="exitFullscreen",n.fullscreenEnabled="fullscreenEnabled",n.fullscreenElement="fullscreenElement",n.fullscreenchange="fullscreenchange",n.fullscreenerror="fullscreenerror",r=!0;for(var a,i=["webkit","moz","o","ms","khtml"],o=0,u=i.length;u>o;++o){var s=i[o];a=s+"RequestFullscreen","function"==typeof t[a]?(n.requestFullscreen=a,r=!0):(a=s+"RequestFullScreen","function"==typeof t[a]&&(n.requestFullscreen=a,r=!0)),a=s+"ExitFullscreen","function"==typeof document[a]?n.exitFullscreen=a:(a=s+"CancelFullScreen","function"==typeof document[a]&&(n.exitFullscreen=a)),a=s+"FullscreenEnabled",e(document[a])?n.fullscreenEnabled=a:(a=s+"FullScreenEnabled",e(document[a])&&(n.fullscreenEnabled=a)),a=s+"FullscreenElement",e(document[a])?n.fullscreenElement=a:(a=s+"FullScreenElement",e(document[a])&&(n.fullscreenElement=a)),a=s+"fullscreenchange",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenChange"),n.fullscreenchange=a),a=s+"fullscreenerror",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenError"),n.fullscreenerror=a)}return r},a.requestFullscreen=function(e){a.supportsFullscreen()&&e[n.requestFullscreen]()},a.exitFullscreen=function(){a.supportsFullscreen()&&document[n.exitFullscreen]()},a}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,r){"use strict";function n(e){for(var t=e.split("."),r=0,n=t.length;n>r;++r)t[r]=parseInt(t[r],10);return t}function a(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=n(e[1]))}return y}function i(){return a()&&v}function o(){if(!t(g)&&(g=!1,!a()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=n(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=n(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,O=n(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,O=n(e[1])))}return S}function f(){return l()&&O}function d(){if(!t(M)){M=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(M=!0,_=n(e[1]))}return M}function h(){return t(T)||(T=/Windows/i.test(navigator.appVersion)),T}function m(){return d()&&_}function p(){return t(b)||(b=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),b}var y,v,g,w,x,E,S,O,M,_,T,b,P={isChrome:a,chromeVersion:i,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:d,firefoxVersion:m,isWindows:h,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return P.supportsFullscreen=function(){return r.supportsFullscreen()},P.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},P.supportsWebWorkers=function(){return"undefined"!=typeof Worker},P}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,r,n,a){"use strict";if(!n.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(e){switch(e){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new r("componentDatatype is not a valid value.")}},i.fromTypedArray=function(e){return e instanceof Int8Array?i.BYTE:e instanceof Uint8Array?i.UNSIGNED_BYTE:e instanceof Int16Array?i.SHORT:e instanceof Uint16Array?i.UNSIGNED_SHORT:e instanceof Float32Array?i.FLOAT:e instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(e){return t(e)&&(e===i.BYTE||e===i.UNSIGNED_BYTE||e===i.SHORT||e===i.UNSIGNED_SHORT||e===i.FLOAT||e===i.DOUBLE)},i.createTypedArray=function(e,t){switch(e){case i.BYTE:return new Int8Array(t);case i.UNSIGNED_BYTE:return new Uint8Array(t);case i.SHORT:return new Int16Array(t);case i.UNSIGNED_SHORT:return new Uint16Array(t);case i.FLOAT:return new Float32Array(t);case i.DOUBLE:return new Float64Array(t);default:throw new r("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(t,n,a,o){switch(a=e(a,0),o=e(o,(n.byteLength-a)/i.getSizeInBytes(t)),t){case i.BYTE:return new Int8Array(n,a,o);case i.UNSIGNED_BYTE:return new Uint8Array(n,a,o);case i.SHORT:return new Int16Array(n,a,o);case i.UNSIGNED_SHORT:return new Uint16Array(n,a,o);case i.FLOAT:return new Float32Array(n,a,o);case i.DOUBLE:return new Float64Array(n,a,o);default:throw new r("componentDatatype is not a valid value.")}},a(i)}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,r,n,a){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,a.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,n.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(e){var n=-1;for(var a in e.attributes)if(e.attributes.hasOwnProperty(a)&&t(e.attributes[a])&&t(e.attributes[a].values)){var i=e.attributes[a],o=i.values.length/i.componentsPerAttribute;if(n!==o&&-1!==n)throw new r("All attribute lists must have the same number of attributes.");n=o}return n},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color +};return t}),define("Core/GeometryInstance",["./defaultValue","./defined","./DeveloperError","./Matrix4"],function(e,t,r,n){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.geometry=t.geometry,this.modelMatrix=n.clone(e(t.modelMatrix,n.IDENTITY)),this.id=t.id,this.pickPrimitive=t.pickPrimitive,this.attributes=e(t.attributes,{}),this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0};return a}),define("Core/AttributeCompression",["./Cartesian2","./Cartesian3","./defined","./DeveloperError","./Math"],function(e,t,r,n,a){"use strict";var i={};i.octEncode=function(e,t){if(t.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),t.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){var r=t.x,n=t.y;t.x=(1-Math.abs(n))*a.signNotZero(r),t.y=(1-Math.abs(r))*a.signNotZero(n)}return t.x=a.toSNorm(t.x),t.y=a.toSNorm(t.y),t},i.octDecode=function(e,r,n){if(n.x=a.fromSNorm(e),n.y=a.fromSNorm(r),n.z=1-(Math.abs(n.x)+Math.abs(n.y)),n.z<0){var i=n.x;n.x=(1-Math.abs(n.y))*a.signNotZero(i),n.y=(1-Math.abs(i))*a.signNotZero(n.y)}return t.normalize(n,n)},i.octPackFloat=function(e){return 256*e.x+e.y};var o=new e;return i.octEncodeFloat=function(e){return i.octEncode(e,o),i.octPackFloat(o)},i.octDecodeFloat=function(e,t){var r=e/256,n=Math.floor(r),a=256*(r-n);return i.octDecode(n,a,t)},i.octPack=function(e,t,r,n){var a=i.octEncodeFloat(e),u=i.octEncodeFloat(t),s=i.octEncode(r,o);return n.x=65536*s.x+a,n.y=65536*s.y+u,n},i.octUnpack=function(e,t,r,n){var a=e.x/65536,o=Math.floor(a),u=65536*(a-o);a=e.y/65536;var s=Math.floor(a),c=65536*(a-s);i.octDecodeFloat(u,t),i.octDecodeFloat(c,r),i.octDecode(o,s,n)},i.compressTextureCoordinates=function(e){var t=1===e.x?4095:0|4096*e.x,r=1===e.y?4095:0|4096*e.y;return 4096*t+r},i.decompressTextureCoordinates=function(e,t){var r=e/4096;return t.x=Math.floor(r)/4096,t.y=r-Math.floor(r),t},i}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=new t,a=new t,i=new t,o=function(o,u,s,c,l){r(l)||(l=new t);var f,d,h,m,p,y,v,g;r(u.z)?(f=t.subtract(s,u,n),d=t.subtract(c,u,a),h=t.subtract(o,u,i),m=t.dot(f,f),p=t.dot(f,d),y=t.dot(f,h),v=t.dot(d,d),g=t.dot(d,h)):(f=e.subtract(s,u,n),d=e.subtract(c,u,a),h=e.subtract(o,u,i),m=e.dot(f,f),p=e.dot(f,d),y=e.dot(f,h),v=e.dot(d,d),g=e.dot(d,h));var w=1/(m*v-p*p);return l.y=(v*y-p*g)*w,l.z=(m*g-p*y)*w,l.x=1-l.y-l.z,l};return o}),define("Core/EncodedCartesian3",["./Cartesian3","./defined","./DeveloperError"],function(e,t){"use strict";var r=function(){this.high=e.clone(e.ZERO),this.low=e.clone(e.ZERO)};r.encode=function(e,r){t(r)||(r={high:0,low:0});var n;return e>=0?(n=65536*Math.floor(e/65536),r.high=n,r.low=e-n):(n=65536*Math.floor(-e/65536),r.high=-n,r.low=e+n),r};var n={high:0,low:0};r.fromCartesian=function(e,a){t(a)||(a=new r);var i=a.high,o=a.low;return r.encode(e.x,n),i.x=n.high,o.x=n.low,r.encode(e.y,n),i.y=n.high,o.y=n.low,r.encode(e.z,n),i.z=n.high,o.z=n.low,a};var a=new r;return r.writeElements=function(e,t,n){r.fromCartesian(e,a);var i=a.high,o=a.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z},r}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,r,n){"use strict";var a={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return a.getSizeInBytes=function(e){switch(e){case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},a.validate=function(t){return e(t)&&(t===a.UNSIGNED_BYTE||t===a.UNSIGNED_SHORT||t===a.UNSIGNED_INT)},a.createTypedArray=function(e,t){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},a.createTypedArrayFromArrayBuffer=function(e,t,r,a){return e>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,r,a):new Uint16Array(t,r,a)},r(a)}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function r(e,r,n){var a=e+r;return t.sign(e)!==t.sign(r)&&Math.abs(a/Math.max(Math.abs(e),Math.abs(r)))<n?0:a}var n={};return n.computeDiscriminant=function(e,t,r){var n=t*t-4*e*r;return n},n.computeRealRoots=function(e,n,a){var i;if(0===e)return 0===n?[]:[-a/n];if(0===n){if(0===a)return[0,0];var o=Math.abs(a),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(i=-a/e,0>i)return[];var s=Math.sqrt(i);return[-s,s]}if(0===a)return i=-n/e,0>i?[i,0]:[0,i];var c=n*n,l=4*e*a,f=r(c,-l,t.EPSILON14);if(0>f)return[];var d=-.5*r(n,t.sign(n)*Math.sqrt(f),t.EPSILON14);return n>0?[d/e,a/d]:[a/d,d/e]},n}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function r(e,t,r,n){var a,i,o=e,u=t/3,s=r/3,c=n,l=o*s,f=u*c,d=u*u,h=s*s,m=o*s-d,p=o*c-u*s,y=u*c-h,v=4*m*y-p*p;if(0>v){var g,w,x;d*f>=l*h?(g=o,w=m,x=-2*u*m+o*p):(g=c,w=y,x=-c*p+2*s*y);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);i=-x+S;var O=i/2,M=0>O?-Math.pow(-O,1/3):Math.pow(O,1/3),_=i===S?-M:-w/M;return a=0>=w?M+_:-x/(M*M+_*_+w),d*f>=l*h?[(a-u)/o]:[-c/(a+s)]}var T=m,b=-2*u*m+o*p,P=y,A=-c*p+2*s*y,N=Math.sqrt(v),I=Math.sqrt(3)/2,R=Math.abs(Math.atan2(o*N,-b)/3);a=2*Math.sqrt(-T);var C=Math.cos(R);i=a*C;var z=a*(-C/2-I*Math.sin(R)),D=i+z>2*u?i-u:z-u,L=o,q=D/L;R=Math.abs(Math.atan2(c*N,-A)/3),a=2*Math.sqrt(-P),C=Math.cos(R),i=a*C,z=a*(-C/2-I*Math.sin(R));var U=-c,B=2*s>i+z?i+s:z+s,F=U/B,W=L*B,G=-D*B-L*U,k=D*U,V=(s*G-u*k)/(-u*G+s*W);return V>=q?F>=q?F>=V?[q,V,F]:[q,F,V]:[F,q,V]:F>=q?[V,q,F]:F>=V?[V,F,q]:[F,V,q]}var n={};return n.computeDiscriminant=function(e,t,r,n){var a=e*e,i=t*t,o=r*r,u=n*n,s=18*e*t*r*n+i*o-27*a*u-4*(e*o*r+i*t*n);return s},n.computeRealRoots=function(e,n,a,i){var o,u;if(0===e)return t.computeRealRoots(n,a,i);if(0===n){if(0===a){if(0===i)return[0,0,0];u=-i/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===i?(o=t.computeRealRoots(e,0,a),0===o.Length?[0]:[o[0],0,o[1]]):r(e,0,a,i)}return 0===a?0===i?(u=-n/e,0>u?[u,0,0]:[0,0,u]):r(e,n,0,i):0===i?(o=t.computeRealRoots(e,n,a),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):r(e,n,a,i)},n}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,r,n){"use strict";function a(t,a,i,o){var u=t*t,s=a-3*u/8,c=i-a*t/2+u*t/8,l=o-i*t/4+a*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var d=-t/4,h=f[f.length-1];if(Math.abs(h)<r.EPSILON14){var m=n.computeRealRoots(1,s,l);if(2===m.length){var p,y=m[0],v=m[1];if(y>=0&&v>=0){var g=Math.sqrt(y),w=Math.sqrt(v);return[d-w,d-g,d+g,d+w]}if(y>=0&&0>v)return p=Math.sqrt(y),[d-p,d+p];if(0>y&&v>=0)return p=Math.sqrt(v),[d-p,d+p]}return[]}if(h>0){var x=Math.sqrt(h),E=(s+h-c/x)/2,S=(s+h+c/x)/2,O=n.computeRealRoots(1,x,E),M=n.computeRealRoots(1,-x,S);return 0!==O.length?(O[0]+=d,O[1]+=d,0!==M.length?(M[0]+=d,M[1]+=d,O[1]<=M[0]?[O[0],O[1],M[0],M[1]]:M[1]<=O[0]?[M[0],M[1],O[0],O[1]]:O[0]>=M[0]&&O[1]<=M[1]?[M[0],O[0],O[1],M[1]]:M[0]>=O[0]&&M[1]<=O[1]?[O[0],M[0],M[1],O[1]]:O[0]>M[0]&&O[0]<M[1]?[M[0],O[0],M[1],O[1]]:[O[0],M[0],O[1],M[1]]):O):0!==M.length?(M[0]+=d,M[1]+=d,M):[]}}return[]}function i(t,a,i,o){var u=i*i,s=a*a,c=t*t,l=-2*a,f=i*t+s-4*o,d=c*o-i*a*t+u,h=e.computeRealRoots(1,l,f,d);if(h.length>0){var m,p,y=h[0],v=a-y,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),O=c-4*y,M=c+4*Math.abs(y);if(0>y||O*S>E*M){var _=Math.sqrt(O);m=_/2,p=0===_?0:(t*x-i)/_}else{var T=Math.sqrt(E);m=0===T?0:(t*x-i)/T,p=T/2}var b,P;0===w&&0===m?(b=0,P=0):r.sign(w)===r.sign(m)?(b=w+m,P=y/b):(P=w-m,b=y/P);var A,N;0===x&&0===p?(A=0,N=0):r.sign(x)===r.sign(p)?(A=x+p,N=o/A):(N=x-p,A=o/N);var I=n.computeRealRoots(1,b,A),R=n.computeRealRoots(1,P,N);if(0!==I.length)return 0!==R.length?I[1]<=R[0]?[I[0],I[1],R[0],R[1]]:R[1]<=I[0]?[R[0],R[1],I[0],I[1]]:I[0]>=R[0]&&I[1]<=R[1]?[R[0],I[0],I[1],R[1]]:R[0]>=I[0]&&R[1]<=I[1]?[I[0],R[0],R[1],I[1]]:I[0]>R[0]&&I[0]<R[1]?[R[0],I[0],R[1],I[1]]:[I[0],R[0],I[1],R[1]]:I;if(0!==R.length)return R}return[]}var o={};return o.computeDiscriminant=function(e,t,r,n,a){var i=e*e,o=i*e,u=t*t,s=u*t,c=r*r,l=c*r,f=n*n,d=f*n,h=a*a,m=h*a,p=u*c*f-4*s*d-4*e*l*f+18*e*t*r*d-27*i*f*f+256*o*m+a*(18*s*r*n-4*u*l+16*e*c*c-80*e*t*c*n-6*e*u*f+144*i*r*f)+h*(144*e*u*r-27*u*u-128*i*c-192*i*t*n);return p},o.computeRealRoots=function(t,n,o,u,s){if(Math.abs(t)<r.EPSILON15)return e.computeRealRoots(n,o,u,s);var c=n/t,l=o/t,f=u/t,d=s/t,h=0>c?1:0;switch(h+=0>l?h+1:h,h+=0>f?h+1:h,h+=0>d?h+1:h){case 0:return a(c,l,f,d);case 1:return i(c,l,f,d);case 2:return i(c,l,f,d);case 3:return a(c,l,f,d);case 4:return a(c,l,f,d);case 5:return i(c,l,f,d);case 6:return a(c,l,f,d);case 7:return a(c,l,f,d);case 8:return i(c,l,f,d);case 9:return a(c,l,f,d);case 10:return a(c,l,f,d);case 11:return i(c,l,f,d);case 12:return a(c,l,f,d);case 13:return a(c,l,f,d);case 14:return a(c,l,f,d);case 15:return a(c,l,f,d);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,r){"use strict";var n=function(r,n){n=e.clone(t(n,e.ZERO)),e.equals(n,e.ZERO)||e.normalize(n,n),this.origin=e.clone(t(r,e.ZERO)),this.direction=n};return n.getPoint=function(t,n,a){return r(a)||(a=new e),a=e.multiplyByScalar(t.direction,n,a),e.add(t.origin,a,a)},n}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,r,n,a,i,o,u,s,c){"use strict";function l(t,n,a,o,u){u=r(u,!1);var s,c,l,f,d,h=t.origin,m=t.direction,p=e.subtract(a,n,y),E=e.subtract(o,n,v),S=e.cross(m,E,g),O=e.dot(p,S);if(u){if(O<i.EPSILON6)return void 0;if(s=e.subtract(h,n,w),l=e.dot(s,S),0>l||l>O)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c),0>f||l+f>O)return void 0;d=e.dot(E,c)/O}else{if(Math.abs(O)<i.EPSILON6)return void 0;var M=1/O;if(s=e.subtract(h,n,w),l=e.dot(s,S)*M,0>l||l>1)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c)*M,0>f||l+f>1)return void 0;d=e.dot(E,c)*M}return d}function f(e,t,r,n){var a=t*t-4*e*r;if(0>a)return void 0;if(a>0){var i=1/(2*e),o=Math.sqrt(a),u=(-t+o)*i,s=(-t-o)*i;return s>u?(n.root0=u,n.root1=s):(n.root0=s,n.root1=u),n}var c=-t/(2*e);return 0===c?void 0:(n.root0=n.root1=c,n)}function d(t,r,a){n(a)||(a={});var i=t.origin,o=t.direction,u=r.center,s=r.radius*r.radius,c=e.subtract(i,u,g),l=e.dot(o,o),d=2*e.dot(o,c),h=e.magnitudeSquared(c)-s,m=f(l,d,h,S);return n(m)?(a.start=m.root0,a.stop=m.root1,a):void 0}function h(e,t,r){var n=e+t;return i.sign(e)!==i.sign(t)&&Math.abs(n/Math.max(Math.abs(e),Math.abs(t)))<r?0:n}function m(t,r,n,a,c){var l,f=a*a,d=c*c,m=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*d,p=c*(a*h(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],i.EPSILON15)+r.y),y=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*d+a*r.x+n,v=d*h(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],i.EPSILON15),g=c*(a*h(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+r.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(m,p,y),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(a,c*x,c*-E)),w.push(new e(a,c*x,c*E)),2===l.length){var S=l[1],O=Math.sqrt(Math.max(1-S*S,0));w.push(new e(a,c*S,c*-O)),w.push(new e(a,c*S,c*O))}return w}var M=g*g,_=v*v,T=m*m,b=g*v,P=T+_,A=2*(p*m+b),N=2*y*m+p*p-_+M,I=2*(y*p-b),R=y*y-M;if(0===P&&0===A&&0===N&&0===I)return w;l=s.computeRealRoots(P,A,N,I,R);var C=l.length;if(0===C)return w;for(var z=0;C>z;++z){var D,L=l[z],q=L*L,U=Math.max(1-q,0),B=Math.sqrt(U);D=i.sign(m)===i.sign(y)?h(m*q+y,p*L,i.EPSILON12):i.sign(y)===i.sign(p*L)?h(m*q,p*L+y,i.EPSILON12):h(m*q+p*L,y,i.EPSILON12);var F=h(v*L,g,i.EPSILON15),W=D*F;0>W?w.push(new e(a,c*L,c*B)):W>0?w.push(new e(a,c*L,c*-B)):0!==B?(w.push(new e(a,c*L,c*-B)),w.push(new e(a,c*L,c*B)),++z):w.push(new e(a,c*L,c*B))}return w}var p={};p.rayPlane=function(t,r,a){n(a)||(a=new e);var o=t.origin,u=t.direction,s=r.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON15)return void 0;var l=(-r.distance-e.dot(s,o))/c;return 0>l?void 0:(a=e.multiplyByScalar(u,l,a),e.add(o,a,a))};var y=new e,v=new e,g=new e,w=new e,x=new e;p.rayTriangle=function(t,r,a,i,o,u){var s=l(t,r,a,i,o);return!n(s)||0>s?void 0:(n(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;p.lineSegmentTriangle=function(t,r,a,i,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(r,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,a,i,o,u);return!n(f)||0>f||f>e.distance(t,r)?void 0:(n(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};p.raySphere=function(e,t,r){return r=d(e,t,r),!n(r)||r.stop<0?void 0:(r.start=Math.max(r.start,0),r)};var O=new c;p.lineSegmentSphere=function(t,r,a,i){var o=O;e.clone(t,o.origin);var u=e.subtract(r,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),i=d(o,a,i),!n(i)||i.stop<0||i.start>s?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i)};var M=new e,_=new e;p.rayEllipsoid=function(t,r){var n,a,i,o,u,s=r.oneOverRadii,c=e.multiplyComponents(s,t.origin,M),l=e.multiplyComponents(s,t.direction,_),f=e.magnitudeSquared(c),d=e.dot(c,l);if(f>1){if(d>=0)return void 0;var h=d*d;if(n=f-1,a=e.magnitudeSquared(l),i=a*n,i>h)return void 0;if(h>i){o=d*d-i,u=-d+Math.sqrt(o);var m=u/a,p=n/u;return p>m?{start:m,stop:p}:{start:p,stop:m}}var y=Math.sqrt(n/a);return{start:y,stop:y}}return 1>f?(n=f-1,a=e.magnitudeSquared(l),i=a*n,o=d*d-i,u=-d+Math.sqrt(o),{start:0,stop:u/a}):0>d?(a=e.magnitudeSquared(l),{start:0,stop:-d/a}):void 0};var T=new e,b=new e,P=new e,A=new e,N=new e,I=new o,R=new o,C=new o,z=new o,D=new o,L=new o,q=new o,U=new e,B=new e,F=new t;p.grazingAltitudeLocation=function(t,r){var a=t.origin,u=t.direction,s=r.geodeticSurfaceNormal(a,T);if(e.dot(u,s)>=0)return a;var c=n(this.rayEllipsoid(t,r)),l=r.transformPositionToScaledSpace(u,T),f=e.normalize(l,l),d=e.mostOrthogonalAxis(l,A),h=e.normalize(e.cross(d,f,b),b),p=e.normalize(e.cross(f,h,P),P),y=I;y[0]=f.x,y[1]=f.y,y[2]=f.z,y[3]=h.x,y[4]=h.y,y[5]=h.z,y[6]=p.x,y[7]=p.y,y[8]=p.z;var v=o.transpose(y,R),g=o.fromScale(r.radii,C),w=o.fromScale(r.oneOverRadii,z),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,O=o.multiply(o.multiply(v,w,L),x,L),M=o.multiply(o.multiply(O,g,q),y,q),_=o.multiplyByVector(O,a,N),W=m(M,e.negate(_,T),0,0,1),G=W.length;if(G>0){for(var k=e.clone(e.ZERO,B),V=Number.NEGATIVE_INFINITY,Y=0;G>Y;++Y){E=o.multiplyByVector(g,o.multiplyByVector(y,W[Y],U),U);var j=e.normalize(e.subtract(E,a,A),A),H=e.dot(j,u);H>V&&(V=H,k=e.clone(E,k))}var Z=r.cartesianToCartographic(k,F);return V=i.clamp(V,0,1),S=e.magnitude(e.subtract(k,a,A))*Math.sqrt(1-V*V),S=c?-S:S,Z.height=S,r.cartographicToCartesian(Z,new e)}return void 0};var W=new e;return p.lineSegmentPlane=function(t,r,a,o){n(o)||(o=new e);var u=e.subtract(r,t,W),s=a.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON6)return void 0;var l=e.dot(s,t),f=-(a.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},p.trianglePlaneIntersection=function(t,r,n,a){var i=a.normal,o=a.distance,u=e.dot(i,t)+o<0,s=e.dot(i,r)+o<0,c=e.dot(i,n)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,d;if((1===l||2===l)&&(f=new e,d=new e),1===l){if(u)return p.lineSegmentPlane(t,r,a,f),p.lineSegmentPlane(t,n,a,d),{positions:[t,r,n,f,d],indices:[0,3,4,1,2,4,1,4,3]};if(s)return p.lineSegmentPlane(r,n,a,f),p.lineSegmentPlane(r,t,a,d),{positions:[t,r,n,f,d],indices:[1,3,4,2,0,4,2,4,3]};if(c)return p.lineSegmentPlane(n,t,a,f),p.lineSegmentPlane(n,r,a,d),{positions:[t,r,n,f,d],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return p.lineSegmentPlane(r,t,a,f),p.lineSegmentPlane(n,t,a,d),{positions:[t,r,n,f,d],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return p.lineSegmentPlane(n,r,a,f),p.lineSegmentPlane(t,r,a,d),{positions:[t,r,n,f,d],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return p.lineSegmentPlane(t,n,a,f),p.lineSegmentPlane(r,n,a,d),{positions:[t,r,n,f,d],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),define("Core/Tipsify",["./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var r={};return r.calculateACMR=function(r){r=e(r,e.EMPTY_OBJECT);var n=r.indices,a=r.maximumIndex,i=e(r.cacheSize,24),o=n.length;if(!t(a)){a=0;for(var u=0,s=n[u];o>u;)s>a&&(a=s),++u,s=n[u]}for(var c=[],l=0;a+1>l;l++)c[l]=0;for(var f=i+1,d=0;o>d;++d)f-c[n[d]]>i&&(c[n[d]]=f,++f);return(f-i+1)/(o/3)},r.tipsify=function(r){function n(e,t,r,n){for(;t.length>=1;){var a=t[t.length-1];if(t.splice(t.length-1,1),e[a].numLiveTriangles>0)return a}for(;n>i;){if(e[i].numLiveTriangles>0)return++i,i-1;++i}return-1}function a(e,t,r,a,i,o,u){for(var s,c=-1,l=-1,f=0;f<r.length;){var d=r[f];a[d].numLiveTriangles&&(s=0,i-a[d].timeStamp+2*a[d].numLiveTriangles<=t&&(s=i-a[d].timeStamp),(s>l||-1===l)&&(l=s,c=d)),++f}return-1===c?n(a,o,e,u):c}r=e(r,e.EMPTY_OBJECT);var i,o=r.indices,u=r.maximumIndex,s=e(r.cacheSize,24),c=o.length,l=0,f=0,d=o[f],h=c;if(t(u))l=u+1;else{for(;h>f;)d>l&&(l=d),++f,d=o[f];if(-1===l)return 0;++l}for(var m=[],p=0;l>p;p++)m[p]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};f=0;for(var y=0;h>f;)m[o[f]].vertexTriangles.push(y),++m[o[f]].numLiveTriangles,m[o[f+1]].vertexTriangles.push(y),++m[o[f+1]].numLiveTriangles,m[o[f+2]].vertexTriangles.push(y),++m[o[f+2]].numLiveTriangles,++y,f+=3;var v=0,g=s+1;i=1;var w,x,E=[],S=[],O=0,M=[],_=c/3,T=[];for(p=0;_>p;p++)T[p]=!1;for(var b,P;-1!==v;){E=[],x=m[v],P=x.vertexTriangles.length;for(var A=0;P>A;++A)if(y=x.vertexTriangles[A],!T[y]){T[y]=!0,f=y+y+y;for(var N=0;3>N;++N)b=o[f],E.push(b),S.push(b),M[O]=b,++O,w=m[b],--w.numLiveTriangles,g-w.timeStamp>s&&(w.timeStamp=g,++g),++f}v=a(o,s,E,m,g,S,l)}return M},r}),define("Core/GeometryPipeline",["./AttributeCompression","./barycentricCoordinates","./BoundingSphere","./Cartesian2","./Cartesian3","./Cartesian4","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./EncodedCartesian3","./GeographicProjection","./Geometry","./GeometryAttribute","./GeometryInstance","./GeometryType","./IndexDatatype","./Intersect","./IntersectionTests","./Math","./Matrix3","./Matrix4","./Plane","./PrimitiveType","./Tipsify"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,m,p,y,v,g,w,x,E,S,O,M,_){"use strict";function T(e,t,r,n,a){e[t++]=r,e[t++]=n,e[t++]=n,e[t++]=a,e[t++]=a,e[t]=r}function b(e){for(var t=e.length,r=6*(t/3),n=v.createTypedArray(t,r),a=0,i=0;t>i;i+=3,a+=6)T(n,a,e[i],e[i+1],e[i+2]);return n}function P(e){var t=e.length;if(t>=3){var r=6*(t-2),n=v.createTypedArray(t,r);T(n,0,e[0],e[1],e[2]);for(var a=6,i=3;t>i;++i,a+=6)T(n,a,e[i-1],e[i],e[i-2]);return n}return new Uint16Array}function A(e){if(e.length>0){for(var t=e.length-1,r=6*(t-1),n=v.createTypedArray(t,r),a=e[0],i=0,o=1;t>o;++o,i+=6)T(n,i,a,e[o],e[o+1]);return n}return new Uint16Array}function N(e){var t={};for(var r in e)if(e.hasOwnProperty(r)&&c(e[r])&&c(e[r].values)){var n=e[r];t[r]=new m({componentDatatype:n.componentDatatype,componentsPerAttribute:n.componentsPerAttribute,normalize:n.normalize,values:[]})}return t}function I(e,t,r){for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values))for(var a=t[n],i=0;i<a.componentsPerAttribute;++i)e[n].values.push(a.values[r*a.componentsPerAttribute+i])}function R(e,t){if(c(t))for(var r=t.values,n=r.length,i=0;n>i;i+=3)a.unpack(r,i,it),S.multiplyByPoint(e,it,it),a.pack(it,r,i)}function C(e,t){if(c(t))for(var r=t.values,n=r.length,i=0;n>i;i+=3)a.unpack(r,i,it),E.multiplyByVector(e,it,it),it=a.normalize(it,it),a.pack(it,r,i)}function z(e,t){var r,n=e.length,a={},i=e[0][t].attributes;for(r in i)if(i.hasOwnProperty(r)&&c(i[r])&&c(i[r].values)){for(var o=i[r],s=o.values.length,l=!0,f=1;n>f;++f){var d=e[f][t].attributes[r];if(!c(d)||o.componentDatatype!==d.componentDatatype||o.componentsPerAttribute!==d.componentsPerAttribute||o.normalize!==d.normalize){l=!1;break}s+=d.values.length}l&&(a[r]=new m({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:u.createTypedArray(o.componentDatatype,s)}))}return a}function D(e,t){var n,i,o,u,s=e.length;e[0].modelMatrix;var l,f,d,m=c(e[0][t].indices),p=e[0][t].primitiveType,y=z(e,t);for(n in y)if(y.hasOwnProperty(n))for(l=y[n].values,u=0,i=0;s>i;++i)for(f=e[i][t].attributes[n].values,d=f.length,o=0;d>o;++o)l[u++]=f[o];var g;if(m){var w=0;for(i=0;s>i;++i)w+=e[i][t].indices.length;var x=h.computeNumberOfVertices(new h({attributes:y,primitiveType:M.POINTS})),E=v.createTypedArray(x,w),S=0,O=0;for(i=0;s>i;++i){var _=e[i][t].indices,T=_.length;for(u=0;T>u;++u)E[S++]=O+_[u];O+=h.computeNumberOfVertices(e[i][t])}g=E}var b,P=new a,A=0;for(i=0;s>i;++i){if(b=e[i][t].boundingSphere,!c(b)){P=void 0;break}a.add(b.center,P,P)}if(c(P))for(a.divideByScalar(P,s,P),i=0;s>i;++i){b=e[i][t].boundingSphere;var N=a.magnitude(a.subtract(b.center,P,st))+b.radius;N>A&&(A=N)}return new h({attributes:y,indices:g,primitiveType:p,boundingSphere:c(P)?new r(P,A):void 0})}function L(e){if(c(e.indices))return e;for(var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function q(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=1,r[1]=0,r[2]=2;for(var n=3,a=3;t>a;++a)r[n++]=a-1,r[n++]=0,r[n++]=a;return e.indices=r,e.primitiveType=M.TRIANGLES,e}function U(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,3*(t-2));r[0]=0,r[1]=1,r[2]=2,t>3&&(r[3]=0,r[4]=2,r[5]=3);for(var n=6,a=3;t-1>a;a+=2)r[n++]=a,r[n++]=a-1,r[n++]=a+1,t>a+2&&(r[n++]=a,r[n++]=a+1,r[n++]=a+2);return e.indices=r,e.primitiveType=M.TRIANGLES,e}function B(e){if(c(e.indices))return e;for(var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,t),n=0;t>n;++n)r[n]=n;return e.indices=r,e}function F(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,2*(t-1));r[0]=0,r[1]=1;for(var n=2,a=2;t>a;++a)r[n++]=a-1,r[n++]=a;return e.indices=r,e.primitiveType=M.LINES,e}function W(e){var t=h.computeNumberOfVertices(e),r=v.createTypedArray(t,2*t);r[0]=0,r[1]=1;for(var n=2,a=2;t>a;++a)r[n++]=a-1,r[n++]=a;return r[n++]=t-1,r[n]=0,e.indices=r,e.primitiveType=M.LINES,e}function G(e){switch(e.primitiveType){case M.TRIANGLE_FAN:return q(e);case M.TRIANGLE_STRIP:return U(e);case M.TRIANGLES:return L(e);case M.LINE_STRIP:return F(e);case M.LINE_LOOP:return W(e);case M.LINES:return B(e)}return e}function k(e,t){Math.abs(e.y)<x.EPSILON6&&(e.y=t?-x.EPSILON6:x.EPSILON6)}function V(e,t,r){if(0!==e.y&&0!==t.y&&0!==r.y)return k(e,e.y<0),k(t,t.y<0),k(r,r.y<0),void 0;var n,a=Math.abs(e.y),i=Math.abs(t.y),o=Math.abs(r.y);n=a>i?a>o?x.sign(e.y):x.sign(r.y):i>o?x.sign(t.y):x.sign(r.y);var u=0>n;k(e,u),k(t,u),k(r,u)}function Y(e,t,r,n){a.add(e,a.multiplyByScalar(a.subtract(t,e,xt),e.y/(e.y-t.y),xt),r),a.clone(r,n),k(r,!0),k(n,!1)}function j(e,t,r){if(e.x>=0||t.x>=0||r.x>=0)return void 0;V(e,t,r);var n=e.y<0,a=t.y<0,i=r.y<0,o=0;o+=n?1:0,o+=a?1:0,o+=i?1:0;var u=_t.indices;1===o?(u[1]=3,u[2]=4,u[5]=6,u[7]=6,u[8]=5,n?(Y(e,t,Et,Ot),Y(e,r,St,Mt),u[0]=0,u[3]=1,u[4]=2,u[6]=1):a?(Y(t,r,Et,Ot),Y(t,e,St,Mt),u[0]=1,u[3]=2,u[4]=0,u[6]=2):i&&(Y(r,e,Et,Ot),Y(r,t,St,Mt),u[0]=2,u[3]=0,u[4]=1,u[6]=0)):2===o&&(u[2]=4,u[4]=4,u[5]=3,u[7]=5,u[8]=6,n?a?i||(Y(r,e,Et,Ot),Y(r,t,St,Mt),u[0]=0,u[1]=1,u[3]=0,u[6]=2):(Y(t,r,Et,Ot),Y(t,e,St,Mt),u[0]=2,u[1]=0,u[3]=2,u[6]=1):(Y(e,t,Et,Ot),Y(e,r,St,Mt),u[0]=1,u[1]=2,u[3]=1,u[6]=0));var s=_t.positions;return s[0]=e,s[1]=t,s[2]=r,s.length=3,(1===o||2===o)&&(s[3]=Et,s[4]=St,s[5]=Ot,s[6]=Mt,s.length=7),_t}function H(e,t){var n=e.attributes;if(0===n.position.values.length)return void 0;for(var a in n)if(n.hasOwnProperty(a)&&c(n[a])&&c(n[a].values)){var i=n[a];i.values=u.createTypedArray(i.componentDatatype,i.values)}var o=h.computeNumberOfVertices(e);return e.indices=v.createTypedArray(o,e.indices),t&&(e.boundingSphere=r.fromVertices(n.position.values)),e}function Z(e){var t=e.attributes,r={};for(var n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values)){var a=t[n];r[n]=new m({componentDatatype:a.componentDatatype,componentsPerAttribute:a.componentsPerAttribute,normalize:a.normalize,values:[]})}return new h({attributes:r,indices:[],primitiveType:e.primitiveType})}function X(e,t,r){var n=c(e.geometry.boundingSphere);t=H(t,n),r=H(r,n),c(r)&&!c(t)?e.geometry=r:!c(r)&&c(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=r,e.geometry=void 0)}function J(e,r,i,o,u,s,l,f,d,h,m){if(c(s)||c(l)||c(f)||c(d)){var p=a.fromArray(u,3*e,Tt),y=a.fromArray(u,3*r,bt),v=a.fromArray(u,3*i,Pt),g=t(o,p,y,v,At);if(c(s)){var w=a.fromArray(s,3*e,Tt),x=a.fromArray(s,3*r,bt),E=a.fromArray(s,3*i,Pt);a.multiplyByScalar(w,g.x,w),a.multiplyByScalar(x,g.y,x),a.multiplyByScalar(E,g.z,E);var S=a.add(w,x,w);a.add(S,E,S),a.normalize(S,S),a.pack(S,h.normal.values,3*m)}if(c(l)){var O=a.fromArray(l,3*e,Tt),M=a.fromArray(l,3*r,bt),_=a.fromArray(l,3*i,Pt);a.multiplyByScalar(O,g.x,O),a.multiplyByScalar(M,g.y,M),a.multiplyByScalar(_,g.z,_);var T=a.add(O,M,O);a.add(T,_,T),a.normalize(T,T),a.pack(T,h.binormal.values,3*m)}if(c(f)){var b=a.fromArray(f,3*e,Tt),P=a.fromArray(f,3*r,bt),A=a.fromArray(f,3*i,Pt);a.multiplyByScalar(b,g.x,b),a.multiplyByScalar(P,g.y,P),a.multiplyByScalar(A,g.z,A);var N=a.add(b,P,b);a.add(N,A,N),a.normalize(N,N),a.pack(N,h.tangent.values,3*m)}if(c(d)){var I=n.fromArray(d,2*e,Nt),R=n.fromArray(d,2*r,It),C=n.fromArray(d,2*i,Rt);n.multiplyByScalar(I,g.x,I),n.multiplyByScalar(R,g.y,R),n.multiplyByScalar(C,g.z,C);var z=n.add(I,R,I);n.add(z,C,z),n.pack(z,h.st.values,2*m)}}}function K(e,t,r,n,a,i){var o=e.position.values.length/3;if(-1!==a){var u=n[a],s=r[u];return-1===s?(r[u]=o,e.position.values.push(i.x,i.y,i.z),t.push(o),o):(t.push(s),s)}return e.position.values.push(i.x,i.y,i.z),t.push(o),o}function Q(e){var t,r,n,i,o,u=e.geometry,s=u.attributes,l=s.position.values,f=c(s.normal)?s.normal.values:void 0,d=c(s.binormal)?s.binormal.values:void 0,h=c(s.tangent)?s.tangent.values:void 0,m=c(s.st)?s.st.values:void 0,p=u.indices,y=Z(u),v=Z(u),g=[];g.length=l.length/3;var w=[];for(w.length=l.length/3,o=0;o<g.length;++o)g[o]=-1,w[o]=-1;var x=p.length;for(o=0;x>o;o+=3){var E=p[o],S=p[o+1],O=p[o+2],M=a.fromArray(l,3*E),_=a.fromArray(l,3*S),T=a.fromArray(l,3*O),b=j(M,_,T);if(c(b)&&b.positions.length>3)for(var P=b.positions,A=b.indices,N=A.length,I=0;N>I;++I){var R=A[I],C=P[R];C.y<0?(t=v.attributes,r=v.indices,n=g):(t=y.attributes,r=y.indices,n=w),i=K(t,r,n,p,3>R?o+R:-1,C),J(E,S,O,C,l,f,d,h,m,t,i)}else c(b)&&(M=b.positions[0],_=b.positions[1],T=b.positions[2]),M.y<0?(t=v.attributes,r=v.indices,n=g):(t=y.attributes,r=y.indices,n=w),i=K(t,r,n,p,o,M),J(E,S,O,M,l,f,d,h,m,t,i),i=K(t,r,n,p,o+1,_),J(E,S,O,_,l,f,d,h,m,t,i),i=K(t,r,n,p,o+2,T),J(E,S,O,T,l,f,d,h,m,t,i)}X(e,v,y)}function $(e){var t,r=e.geometry,n=r.attributes,i=n.position.values,o=r.indices,u=Z(r),s=Z(r),l=o.length,f=[];f.length=i.length/3;var d=[];for(d.length=i.length/3,t=0;t<f.length;++t)f[t]=-1,d[t]=-1;for(t=0;l>t;t+=2){var h=o[t],m=o[t+1],p=a.fromArray(i,3*h,Tt),y=a.fromArray(i,3*m,bt);Math.abs(p.y)<x.EPSILON6&&(p.y=p.y<0?-x.EPSILON6:x.EPSILON6),Math.abs(y.y)<x.EPSILON6&&(y.y=y.y<0?-x.EPSILON6:x.EPSILON6);var v=u.attributes,g=u.indices,E=d,S=s.attributes,O=s.indices,M=f,_=w.lineSegmentPlane(p,y,Ct,Pt);if(c(_)){var T=a.multiplyByScalar(a.UNIT_Y,5*x.EPSILON9,zt);p.y<0&&(a.negate(T,T),v=s.attributes,g=s.indices,E=f,S=u.attributes,O=u.indices,M=d);var b=a.add(_,T,Dt);K(v,g,E,o,t,p),K(v,g,E,o,-1,b),a.negate(T,T),a.add(_,T,b),K(S,O,M,o,-1,b),K(S,O,M,o,t+1,y)}else{var P,A,N;p.y<0?(P=s.attributes,A=s.indices,N=f):(P=u.attributes,A=u.indices,N=d),K(P,A,N,o,t,p),K(P,A,N,o,t+1,y)}}X(e,s,u)}function et(e){var t=e.geometry,r=t.attributes,o=r.position.values,u=r.prevPosition.values,s=r.nextPosition.values,l=r.expandAndWidth.values;t.indices;var f,d,h,m=c(r.st)?r.st.values:void 0,p=c(r.color)?r.color.values:void 0,y=Z(t),v=Z(t),g=o.length/3;for(f=0;g>f;f+=4){var E=f,S=f+1,O=f+2,M=f+3,_=a.fromArray(o,3*E,Ut),T=a.fromArray(o,3*S,Bt),b=a.fromArray(o,3*O,Ft),P=a.fromArray(o,3*M,Wt);Math.abs(_.y)<x.EPSILON6&&(_.y=x.EPSILON6*(b.y<0?-1:1),T.y=_.y),Math.abs(b.y)<x.EPSILON6&&(b.y=x.EPSILON6*(_.y<0?-1:1),P.y=b.y);var A=y.attributes,N=y.indices,I=v.attributes,R=v.indices,C=w.lineSegmentPlane(_,b,Ct,Gt);if(c(C)){var z=a.multiplyByScalar(a.UNIT_Y,5*x.EPSILON9,kt);_.y<0&&(a.negate(z,z),A=v.attributes,N=v.indices,I=y.attributes,R=y.indices);var D=a.add(C,z,Vt);for(A.position.values.push(_.x,_.y,_.z,T.x,T.y,T.z),A.position.values.push(D.x,D.y,D.z),A.position.values.push(D.x,D.y,D.z),a.negate(z,z),a.add(C,z,D),I.position.values.push(D.x,D.y,D.z),I.position.values.push(D.x,D.y,D.z),I.position.values.push(b.x,b.y,b.z,P.x,P.y,P.z),d=3*E;3*E+6>d;++d)A.prevPosition.values.push(u[d]);for(A.prevPosition.values.push(_.x,_.y,_.z,_.x,_.y,_.z),I.prevPosition.values.push(_.x,_.y,_.z,_.x,_.y,_.z),d=3*O;3*O+6>d;++d)I.prevPosition.values.push(u[d]);for(d=3*E;3*E+6>d;++d)A.nextPosition.values.push(s[d]);for(A.nextPosition.values.push(b.x,b.y,b.z,b.x,b.y,b.z),I.nextPosition.values.push(b.x,b.y,b.z,b.x,b.y,b.z),d=3*O;3*O+6>d;++d)I.nextPosition.values.push(s[d]);var L=n.fromArray(l,2*E,Lt),q=Math.abs(L.y);A.expandAndWidth.values.push(-1,q,1,q),A.expandAndWidth.values.push(-1,-q,1,-q),I.expandAndWidth.values.push(-1,q,1,q),I.expandAndWidth.values.push(-1,-q,1,-q);var U=a.magnitudeSquared(a.subtract(C,_,Wt));if(U/=a.magnitudeSquared(a.subtract(b,_,Wt)),c(p)){var B=i.fromArray(p,4*E,Yt),F=i.fromArray(p,4*O,Yt),W=x.lerp(B.x,F.x,U),G=x.lerp(B.y,F.y,U),k=x.lerp(B.z,F.z,U),V=x.lerp(B.w,F.w,U);for(d=4*E;4*E+8>d;++d)A.color.values.push(p[d]);for(A.color.values.push(W,G,k,V),A.color.values.push(W,G,k,V),I.color.values.push(W,G,k,V),I.color.values.push(W,G,k,V),d=4*O;4*O+8>d;++d)I.color.values.push(p[d])}if(c(m)){var Y=n.fromArray(m,2*E,Lt),j=n.fromArray(m,2*(f+3),qt),H=x.lerp(Y.x,j.x,U);for(d=2*E;2*E+4>d;++d)A.st.values.push(m[d]);for(A.st.values.push(H,Y.y),A.st.values.push(H,j.y),I.st.values.push(H,Y.y),I.st.values.push(H,j.y),d=2*O;2*O+4>d;++d)I.st.values.push(m[d])}h=A.position.values.length/3-4,N.push(h,h+2,h+1),N.push(h+1,h+2,h+3),h=I.position.values.length/3-4,R.push(h,h+2,h+1),R.push(h+1,h+2,h+3)}else{var J,K;for(_.y<0?(J=v.attributes,K=v.indices):(J=y.attributes,K=y.indices),J.position.values.push(_.x,_.y,_.z),J.position.values.push(T.x,T.y,T.z),J.position.values.push(b.x,b.y,b.z),J.position.values.push(P.x,P.y,P.z),d=3*f;3*f+12>d;++d)J.prevPosition.values.push(u[d]),J.nextPosition.values.push(s[d]);for(d=2*f;2*f+8>d;++d)J.expandAndWidth.values.push(l[d]),c(m)&&J.st.values.push(m[d]);if(c(p))for(d=4*f;4*f+16>d;++d)J.color.values.push(p[d]);h=J.position.values.length/3-4,K.push(h,h+2,h+1),K.push(h+1,h+2,h+3)}}X(e,v,y)}var tt={};tt.toWireframe=function(e){var t=e.indices;if(c(t)){switch(e.primitiveType){case M.TRIANGLES:e.indices=b(t);break;case M.TRIANGLE_STRIP:e.indices=P(t);break;case M.TRIANGLE_FAN:e.indices=A(t);break;default:throw new l("geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.")}e.primitiveType=M.LINES}return e},tt.createLineSegmentsForVectors=function(e,t,n){t=s(t,"normal"),n=s(n,1e4);for(var a=e.attributes.position.values,i=e.attributes[t].values,o=a.length,l=new Float64Array(2*o),f=0,d=0;o>d;d+=3)l[f++]=a[d],l[f++]=a[d+1],l[f++]=a[d+2],l[f++]=a[d]+i[d]*n,l[f++]=a[d+1]+i[d+1]*n,l[f++]=a[d+2]+i[d+2]*n;var p,y=e.boundingSphere;return c(y)&&(p=new r(y.center,y.radius+n)),new h({attributes:{position:new m({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:l})},primitiveType:M.LINES,boundingSphere:p})},tt.createAttributeLocations=function(e){var t,r=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","binormal","tangent","compressedAttributes"],n=e.attributes,a={},i=0,o=r.length;for(t=0;o>t;++t){var u=r[t];c(n[u])&&(a[u]=i++)}for(var s in n)n.hasOwnProperty(s)&&!c(a[s])&&(a[s]=i++);return a},tt.reorderForPreVertexCache=function(e){var t=h.computeNumberOfVertices(e),r=e.indices;if(c(r)){for(var n=new Int32Array(t),a=0;t>a;a++)n[a]=-1;for(var i,o=r,s=o.length,l=v.createTypedArray(t,s),f=0,d=0,m=0;s>f;)i=n[o[f]],-1!==i?l[d]=i:(i=o[f],n[i]=m,l[d]=m,++m),++f,++d;e.indices=l;var p=e.attributes;for(var y in p)if(p.hasOwnProperty(y)&&c(p[y])&&c(p[y].values)){for(var g=p[y],w=g.values,x=0,E=g.componentsPerAttribute,S=u.createTypedArray(g.componentDatatype,m*E);t>x;){var O=n[x]; +if(-1!==O)for(a=0;E>a;a++)S[E*O+a]=w[E*x+a];++x}g.values=S}}return e},tt.reorderForPostVertexCache=function(e,t){var r=e.indices;if(e.primitiveType===M.TRIANGLES&&c(r)){for(var n=r.length,a=0,i=0;n>i;i++)r[i]>a&&(a=r[i]);e.indices=_.tipsify({indices:r,maximumIndex:a,cacheSize:t})}return e},tt.fitToUnsignedShortIndices=function(e){var t=[],r=h.computeNumberOfVertices(e);if(c(e.indices)&&r>x.SIXTY_FOUR_KILOBYTES){var n,a=[],i=[],o=0,u=N(e.attributes),s=e.indices,l=s.length;e.primitiveType===M.TRIANGLES?n=3:e.primitiveType===M.LINES?n=2:e.primitiveType===M.POINTS&&(n=1);for(var f=0;l>f;f+=n){for(var d=0;n>d;++d){var m=s[f+d],p=a[m];c(p)||(p=o++,a[m]=p,I(u,e.attributes,m)),i.push(p)}o+n>x.SIXTY_FOUR_KILOBYTES&&(t.push(new h({attributes:u,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),a=[],i=[],o=0,u=N(e.attributes))}0!==i.length&&t.push(new h({attributes:u,indices:i,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var rt=new a,nt=new o;tt.projectTo2D=function(e,t,r,n,i){var o=e.attributes[t];i=c(i)?i:new d;for(var s=i.ellipsoid,f=o.values,h=new Float64Array(f.length),p=0,y=0;y<f.length;y+=3){var v=a.fromArray(f,y,rt),g=s.cartesianToCartographic(v,nt);if(!c(g))throw new l("Could not project point ("+v.x+", "+v.y+", "+v.z+") to 2D.");var w=i.project(g,rt);h[p++]=w.x,h[p++]=w.y,h[p++]=w.z}return e.attributes[r]=o,e.attributes[n]=new m({componentDatatype:u.DOUBLE,componentsPerAttribute:3,values:h}),delete e.attributes[t],e};var at={high:0,low:0};tt.encodeAttribute=function(e,t,r,n){for(var a=e.attributes[t],i=a.values,o=i.length,s=new Float32Array(o),c=new Float32Array(o),l=0;o>l;++l)f.encode(i[l],at),s[l]=at.high,c[l]=at.low;var d=a.componentsPerAttribute;return e.attributes[r]=new m({componentDatatype:u.FLOAT,componentsPerAttribute:d,values:s}),e.attributes[n]=new m({componentDatatype:u.FLOAT,componentsPerAttribute:d,values:c}),delete e.attributes[t],e};var it=new a,ot=new S,ut=new E;tt.transformToWorldCoordinates=function(e){var t=e.modelMatrix;if(S.equals(t,S.IDENTITY))return e;var n=e.geometry.attributes;R(t,n.position),R(t,n.prevPosition),R(t,n.nextPosition),(c(n.normal)||c(n.binormal)||c(n.tangent))&&(S.inverse(t,ot),S.transpose(ot,ot),S.getRotation(ot,ut),C(ut,n.normal),C(ut,n.binormal),C(ut,n.tangent));var a=e.geometry.boundingSphere;return c(a)&&(e.geometry.boundingSphere=r.transform(a,t,a)),e.modelMatrix=S.clone(S.IDENTITY),e};var st=new a;tt.combineInstances=function(e){for(var t=[],r=[],n=e.length,a=0;n>a;++a){var i=e[a];c(i.geometry)?t.push(i):r.push(i)}var o=[];return t.length>0&&o.push(D(t,"geometry")),r.length>0&&(o.push(D(r,"westHemisphereGeometry")),o.push(D(r,"eastHemisphereGeometry"))),o};var ct=new a,lt=new a,ft=new a,dt=new a;tt.computeNormal=function(e){for(var t=e.indices,r=e.attributes,n=r.position.values,i=r.position.values.length/3,o=t.length,s=new Array(i),c=new Array(o/3),l=new Array(o),f=0;i>f;f++)s[f]={indexOffset:0,count:0,currentCount:0};var d=0;for(f=0;o>f;f+=3){var h=t[f],p=t[f+1],y=t[f+2],v=3*h,g=3*p,w=3*y;lt.x=n[v],lt.y=n[v+1],lt.z=n[v+2],ft.x=n[g],ft.y=n[g+1],ft.z=n[g+2],dt.x=n[w],dt.y=n[w+1],dt.z=n[w+2],s[h].count++,s[p].count++,s[y].count++,a.subtract(ft,lt,ft),a.subtract(dt,lt,dt),c[d]=a.cross(ft,dt,new a),d++}var x=0;for(f=0;i>f;f++)s[f].indexOffset+=x,x+=s[f].count;d=0;var E;for(f=0;o>f;f+=3){E=s[t[f]];var S=E.indexOffset+E.currentCount;l[S]=d,E.currentCount++,E=s[t[f+1]],S=E.indexOffset+E.currentCount,l[S]=d,E.currentCount++,E=s[t[f+2]],S=E.indexOffset+E.currentCount,l[S]=d,E.currentCount++,d++}var O=new Float32Array(3*i);for(f=0;i>f;f++){var M=3*f;if(E=s[f],E.count>0){for(a.clone(a.ZERO,ct),d=0;d<E.count;d++)a.add(ct,c[l[E.indexOffset+d]],ct);a.normalize(ct,ct),O[M]=ct.x,O[M+1]=ct.y,O[M+2]=ct.z}else O[M]=0,O[M+1]=0,O[M+2]=1}return e.attributes.normal=new m({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:O}),e};var ht=new a,mt=new a,pt=new a;tt.computeBinormalAndTangent=function(e){e.attributes;for(var t=e.indices,r=e.attributes.position.values,n=e.attributes.normal.values,i=e.attributes.st.values,o=e.attributes.position.values.length/3,s=t.length,c=new Array(3*o),l=0;l<c.length;l++)c[l]=0;var f,d,h;for(l=0;s>l;l+=3){var p=t[l],y=t[l+1],v=t[l+2];f=3*p,d=3*y,h=3*v;var g=2*p,w=2*y,x=2*v,E=r[f],S=r[f+1],O=r[f+2],M=i[g],_=i[g+1],T=i[w+1]-_,b=i[x+1]-_,P=1/((i[w]-M)*b-(i[x]-M)*T),A=(b*(r[d]-E)-T*(r[h]-E))*P,N=(b*(r[d+1]-S)-T*(r[h+1]-S))*P,I=(b*(r[d+2]-O)-T*(r[h+2]-O))*P;c[f]+=A,c[f+1]+=N,c[f+2]+=I,c[d]+=A,c[d+1]+=N,c[d+2]+=I,c[h]+=A,c[h+1]+=N,c[h+2]+=I}var R=new Float32Array(3*o),C=new Float32Array(3*o);for(l=0;o>l;l++){f=3*l,d=f+1,h=f+2;var z=a.fromArray(n,f,ht),D=a.fromArray(c,f,pt),L=a.dot(z,D);a.multiplyByScalar(z,L,mt),a.normalize(a.subtract(D,mt,D),D),C[f]=D.x,C[d]=D.y,C[h]=D.z,a.normalize(a.cross(z,D,D),D),R[f]=D.x,R[d]=D.y,R[h]=D.z}return e.attributes.tangent=new m({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:C}),e.attributes.binormal=new m({componentDatatype:u.FLOAT,componentsPerAttribute:3,values:R}),e};var yt=new n,vt=new a,gt=new a,wt=new a;tt.compressVertices=function(t){var r=t.attributes.normal,i=t.attributes.st;if(!c(r)&&!c(i))return t;var o,s,l,f,d=t.attributes.tangent,h=t.attributes.binormal;c(r)&&(o=r.values),c(i)&&(s=i.values),c(d)&&(l=d.values),h&&(f=h.values);var p=c(o)?o.length:s.length,y=c(o)?3:2,v=p/y,g=v,w=c(s)&&c(o)?2:1;w+=c(l)||c(f)?1:0,g*=w;for(var x=new Float32Array(g),E=0,S=0;v>S;++S){c(s)&&(n.fromArray(s,2*S,yt),x[E++]=e.compressTextureCoordinates(yt));var O=3*S;c(o)&&c(l)&&c(f)?(a.fromArray(o,O,vt),a.fromArray(l,O,gt),a.fromArray(f,O,wt),e.octPack(vt,gt,wt,yt),x[E++]=yt.x,x[E++]=yt.y):(c(o)&&(a.fromArray(o,O,vt),x[E++]=e.octEncodeFloat(vt)),c(l)&&(a.fromArray(l,O,vt),x[E++]=e.octEncodeFloat(vt)),c(f)&&(a.fromArray(f,O,vt),x[E++]=e.octEncodeFloat(vt)))}return t.attributes.compressedAttributes=new m({componentDatatype:u.FLOAT,componentsPerAttribute:w,values:x}),c(o)&&delete t.attributes.normal,c(s)&&delete t.attributes.st,c(l)&&delete t.attributes.tangent,c(f)&&delete t.attributes.binormal,t};var xt=new a,Et=new a,St=new a,Ot=new a,Mt=new a,_t={positions:new Array(7),indices:new Array(9)},Tt=new a,bt=new a,Pt=new a,At=new a,Nt=new n,It=new n,Rt=new n,Ct=O.fromPointNormal(a.ZERO,a.UNIT_Y),zt=new a,Dt=new a,Lt=new n,qt=new n,Ut=new a,Bt=new a,Ft=new a,Wt=new a,Gt=new a,kt=new a,Vt=new a,Yt=new i;return new i,tt.splitLongitude=function(e){var t=e.geometry,n=t.boundingSphere;if(c(n)){var a=n.center.x-n.radius;if(a>0||r.intersectPlane(n,O.ORIGIN_ZX_PLANE)!==g.INTERSECTING)return e}if(t.geometryType!==y.NONE)switch(t.geometryType){case y.POLYLINES:et(e);break;case y.TRIANGLES:Q(e);break;case y.LINES:$(e)}else G(t),t.primitiveType===M.TRIANGLES?Q(e):t.primitiveType===M.LINES&&$(e);return e},tt}),define("Core/Matrix2",["./Cartesian2","./defaultValue","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n,a){"use strict";var i=function(e,r,n,a){this[0]=t(e,0),this[1]=t(n,0),this[2]=t(r,0),this[3]=t(a,0)};i.packedLength=4,i.pack=function(e,r,n){n=t(n,0),r[n++]=e[0],r[n++]=e[1],r[n++]=e[2],r[n++]=e[3]},i.unpack=function(e,n,a){return n=t(n,0),r(a)||(a=new i),a[0]=e[n++],a[1]=e[n++],a[2]=e[n++],a[3]=e[n++],a},i.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):new i(e[0],e[2],e[1],e[3]):void 0},i.fromArray=function(e,n,a){return n=t(n,0),r(a)||(a=new i),a[0]=e[n],a[1]=e[n+1],a[2]=e[n+2],a[3]=e[n+3],a},i.fromColumnMajorArray=function(e,t){return i.clone(e,t)},i.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3],t):new i(e[0],e[1],e[2],e[3])},i.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=e.y,t):new i(e.x,0,0,e.y)},i.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=e,t):new i(e,0,0,e)},i.fromRotation=function(e,t){var n=Math.cos(e),a=Math.sin(e);return r(t)?(t[0]=n,t[1]=a,t[2]=-a,t[3]=n,t):new i(n,-a,a,n)},i.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):[e[0],e[1],e[2],e[3]]},i.getElementIndex=function(e,t){return 2*e+t},i.getColumn=function(e,t,r){var n=2*t,a=e[n],i=e[n+1];return r.x=a,r.y=i,r},i.setColumn=function(e,t,r,n){n=i.clone(e,n);var a=2*t;return n[a]=r.x,n[a+1]=r.y,n},i.getRow=function(e,t,r){var n=e[t],a=e[t+2];return r.x=n,r.y=a,r},i.setRow=function(e,t,r,n){return n=i.clone(e,n),n[t]=r.x,n[t+2]=r.y,n};var o=new e;i.getScale=function(t,r){return r.x=e.magnitude(e.fromElements(t[0],t[1],o)),r.y=e.magnitude(e.fromElements(t[2],t[3],o)),r};var u=new e;return i.getMaximumScale=function(t){return i.getScale(t,u),e.maximumComponent(u)},i.multiply=function(e,t,r){var n=e[0]*t[0]+e[2]*t[1],a=e[0]*t[2]+e[2]*t[3],i=e[1]*t[0]+e[3]*t[1],o=e[1]*t[2]+e[3]*t[3];return r[0]=n,r[1]=i,r[2]=a,r[3]=o,r},i.add=function(e,t,r){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r[3]=e[3]+t[3],r},i.subtract=function(e,t,r){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r},i.multiplyByVector=function(e,t,r){var n=e[0]*t.x+e[2]*t.y,a=e[1]*t.x+e[3]*t.y;return r.x=n,r.y=a,r},i.multiplyByScalar=function(e,t,r){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r},i.multiplyByScale=function(e,t,r){return r[0]=e[0]*t.x,r[1]=e[1]*t.x,r[2]=e[2]*t.y,r[3]=e[3]*t.y,r},i.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t},i.transpose=function(e,t){var r=e[0],n=e[2],a=e[1],i=e[3];return t[0]=r,t[1]=n,t[2]=a,t[3]=i,t},i.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t},i.equals=function(e,t){return e===t||r(e)&&r(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]},i.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]},i.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n},i.IDENTITY=a(new i(1,0,0,1)),i.ZERO=a(new i(0,0,0,0)),i.COLUMN0ROW0=0,i.COLUMN0ROW1=1,i.COLUMN1ROW0=2,i.COLUMN1ROW1=3,i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this[0]+", "+this[2]+")\n"+"("+this[1]+", "+this[3]+")"},i}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,r,n,a,i,o){"use strict";var u=function(n,a,i){this.minimum=e.clone(t(n,e.ZERO)),this.maximum=e.clone(t(a,e.ZERO)),r(i)?i=e.clone(i):(i=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(i,.5,i)),this.center=i};u.fromPoints=function(t,n){if(r(n)||(n=new u),!r(t)||0===t.length)return n.minimum=e.clone(e.ZERO,n.minimum),n.maximum=e.clone(e.ZERO,n.maximum),n.center=e.clone(e.ZERO,n.center),n;for(var a=t[0].x,i=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,f=t.length,d=1;f>d;d++){var h=t[d],m=h.x,p=h.y,y=h.z;a=Math.min(m,a),s=Math.max(m,s),i=Math.min(p,i),c=Math.max(p,c),o=Math.min(y,o),l=Math.max(y,l)}var v=n.minimum;v.x=a,v.y=i,v.z=o;var g=n.maximum;g.x=s,g.y=c,g.z=l;var w=e.add(v,g,n.center);return e.multiplyByScalar(w,.5,w),n},u.clone=function(t,n){return r(t)?r(n)?(n.minimum=e.clone(t.minimum,n.minimum),n.maximum=e.clone(t.maximum,n.maximum),n.center=e.clone(t.center,n.center),n):new u(t.minimum,t.maximum):void 0},u.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&e.equals(t.minimum,n.minimum)&&e.equals(t.maximum,n.maximum)};var s=new e;u.intersectPlane=function(t,r){s=e.subtract(t.maximum,t.minimum,s);var n=e.multiplyByScalar(s,.5,s),a=r.normal,o=n.x*Math.abs(a.x)+n.y*Math.abs(a.y)+n.z*Math.abs(a.z),u=e.dot(t.center,a)+r.distance;return u-o>0?i.INSIDE:0>u+o?i.OUTSIDE:i.INTERSECTING};var c=new o(new e,0);return u.intersect=function(e,t){n("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var r=o.fromCartesian4(t,c);return u.intersectPlane(e,r)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,r,n,a){return t(e).then(r,n,a)}function t(e){var t,r;return e instanceof n?t=e:u(e)?(r=o(),e.then(function(e){r.resolve(e)},function(e){r.reject(e)},function(e){r.progress(e)}),t=r.promise):t=a(e),t}function r(t){return e(t,i)}function n(e){this.then=e}function a(e){var r=new n(function(r){try{return t(r?r(e):e)}catch(n){return i(n)}});return r}function i(e){var r=new n(function(r,n){try{return n?t(n(e)):i(e)}catch(a){return i(a)}});return r}function o(){function e(e,t,r){return d(e,t,r)}function r(e){return m(e)}function a(e){return m(i(e))}function u(e){return h(e)}var s,c,l,f,d,h,m;return c=new n(e),s={then:e,resolve:r,reject:a,progress:u,promise:c,resolver:{resolve:r,reject:a,progress:u}},l=[],f=[],d=function(e,t,r){var n,a;return n=o(),a="function"==typeof r?function(e){try{n.progress(r(e))}catch(t){n.progress(t)}}:function(e){n.progress(e)},l.push(function(r){r.then(e,t).then(n.resolve,n.reject,a)}),f.push(a),n.promise},h=function(e){return p(f,e),e},m=function(e){return e=t(e),d=e.then,m=t,h=v,p(l,e),f=l=E,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,r,n,a,i){return y(2,arguments),e(t,function(t){function u(e){p(e)}function s(e){m(e)}var c,l,f,d,h,m,p,y,g,w;if(g=t.length>>>0,c=Math.max(0,Math.min(r,g)),f=[],l=g-c+1,d=[],h=o(),c)for(y=h.progress,p=function(e){d.push(e),--l||(m=p=v,h.reject(d))},m=function(e){f.push(e),--c||(m=p=v,h.resolve(f))},w=0;g>w;++w)w in t&&e(t[w],s,u,y);else h.resolve(f);return h.then(n,a,i)})}function c(e,t,r,n){function a(e){return t?t(e[0]):e[0]}return s(e,1,a,r,n)}function l(e,t,r,n){return y(1,arguments),d(e,g).then(t,r,n)}function f(){return d(arguments,g)}function d(t,r){return e(t,function(t){var n,a,i,u,s,c;if(i=a=t.length>>>0,n=[],c=o(),i)for(u=function(t,a){e(t,r).then(function(e){n[a]=e,--i||c.resolve(n)},c.reject)},s=0;a>s;s++)s in t?u(t[s],s):--i;else c.resolve(n);return c.promise})}function h(t,r){var n=x.call(arguments,1);return e(t,function(t){var a;return a=t.length,n[0]=function(t,n,i){return e(t,function(t){return e(n,function(e){return r(t,e,i,a)})})},w.apply(t,n)})}function m(t,r,n){var a=arguments.length>2;return e(t,function(e){return e=a?n:e,r.resolve(e),e},function(e){return r.reject(e),i(e)},r.progress)}function p(e,t){for(var r,n=0;r=e[n++];)r(t)}function y(e,t){for(var r,n=t.length;n>e;)if(r=t[--n],null!=r&&"function"!=typeof r)throw new Error("arg "+n+" must be a function")}function v(){}function g(e){return e}var w,x,E;return e.defer=o,e.resolve=t,e.reject=r,e.join=f,e.all=l,e.map=d,e.reduce=h,e.any=c,e.some=s,e.chain=m,e.isPromise=u,n.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(E,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(E,t)})})}},x=[].slice,w=[].reduce||function(e){var t,r,n,a,i;if(i=0,t=Object(this),a=t.length>>>0,r=arguments,r.length<=1)for(;;){if(i in t){n=t[i++];break}if(++i>=a)throw new TypeError}else n=r[1];for(;a>i;++i)i in t&&(n=e(n,t[i],i,t));return n},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,r){for(var n,a,i=0,o=e.length-1;o>=i;)if(n=~~((i+o)/2),a=r(e[n],t),0>a)i=n+1;else{if(!(a>0))return n;o=n-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,r,n,a){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=r,this.yPoleOffset=n,this.ut1MinusUtc=a};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,r=0,n=t[r++],a=function(e,t,r,n){r||(r=" ");var a=e.length>=t?"":Array(1+t-e.length>>>0).join(r);return n?e+a:a+e},i=function(e,t,r,n,i,o){var u=n-e.length;return u>0&&(e=r||!i?a(e,n,o,r):e.slice(0,t.length)+a("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,r,n,o,u,s){var c=e>>>0;return r=r&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=r+a(c.toString(t),u||0,"0",!1),i(e,r,n,o,s)},u=function(e,t,r,n,a,o){return null!=n&&(e=e.slice(0,n)),i(e,"",t,r,a,o)},s=function(e,n,s,c,l,f,d){var h,m,p,y,v;if("%%"==e)return"%";for(var g=!1,w="",x=!1,E=!1,S=" ",O=s.length,M=0;s&&O>M;M++)switch(s.charAt(M)){case" ":w=" ";break;case"+":w="+";break;case"-":g=!0;break;case"'":S=s.charAt(M+1);break;case"0":x=!0;break;case"#":E=!0}if(c=c?"*"==c?+t[r++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,g=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(f=f?"*"==f?+t[r++]:"*"==f.charAt(0)?+t[f.slice(1,-1)]:+f:"fFeE".indexOf(d)>-1?6:"d"==d?0:void 0,v=n?t[n.slice(0,-1)]:t[r++],d){case"s":return u(String(v),g,c,f,x,S);case"c":return u(String.fromCharCode(+v),g,c,f,x);case"b":return o(v,2,E,g,c,f,x);case"o":return o(v,8,E,g,c,f,x);case"x":return o(v,16,E,g,c,f,x);case"X":return o(v,16,E,g,c,f,x).toUpperCase();case"u":return o(v,10,E,g,c,f,x);case"i":case"d":return h=+v||0,h=Math.round(h-h%1),m=0>h?"-":w,v=m+a(String(Math.abs(h)),f,"0",!1),i(v,m,g,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return h=+v,m=0>h?"-":w,p=["toExponential","toFixed","toPrecision"]["efg".indexOf(d.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(d)%2],v=m+Math.abs(h)[p](f),i(v,m,g,c,x)[y]();default:return e}};return n.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,r,n,a,i,o,u){this.year=e,this.month=t,this.day=r,this.hour=n,this.minute=a,this.second=i,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,r,n,a,i,o,u,s,c){"use strict";function l(e,t){return A.compare(e.julianDate,t.julianDate)}function f(e){g.julianDate=e;var r=A.leapSeconds,n=t(r,g,l);0>n&&(n=~n),n>=r.length&&(n=r.length-1);var a=r[n].offset;if(n>0){var i=A.secondsDifference(r[n].julianDate,e);i>a&&(n--,a=r[n].offset)}A.addSeconds(e,a,e)}function d(e,r){g.julianDate=e;var n=A.leapSeconds,a=t(n,g,l);if(0>a&&(a=~a),0===a)return A.addSeconds(e,-n[0].offset,r);if(a>=n.length)return A.addSeconds(e,-n[a-1].offset,r);var i=A.secondsDifference(n[a].julianDate,e);return 0===i?A.addSeconds(e,-n[a].offset,r):1>=i?void 0:A.addSeconds(e,-n[--a].offset,r)}function h(e,t,r){var n=0|t/s.SECONDS_PER_DAY;return e+=n,t-=s.SECONDS_PER_DAY*n,0>t&&(e--,t+=s.SECONDS_PER_DAY),r.dayNumber=e,r.secondsOfDay=t,r}function m(e,t,r,n,a,i,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+r-32075;n-=12,0>n&&(n+=24);var f=i+(n*s.SECONDS_PER_HOUR+a*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return f>=43200&&(l-=1),[l,f]}var p=new i,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,g=new u,w=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,E=/^(\d{4})-?(\d{3})$/,S=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,O=/^(\d{4})-?(\d{2})-?(\d{2})$/,M=/([Z+\-])?(\d{2})?:?(\d{2})?$/,_=/^(\d{2})(\.\d+)?/.source+M.source,T=/^(\d{2}):?(\d{2})(\.\d+)?/.source+M.source,b=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+M.source,P="Invalid ISO 8601 date.",A=function(e,t,n){this.dayNumber=void 0,this.secondsOfDay=void 0,e=r(e,0),t=r(t,0),n=r(n,c.UTC);var a=0|e;t+=(e-a)*s.SECONDS_PER_DAY,h(a,t,this),n===c.UTC&&f(this)};A.fromDate=function(e,t){var r=m(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return n(t)?(h(r[0],r[1],t),f(t),t):new A(r[0],r[1],c.UTC)},A.fromIso8601=function(e,t){e=e.replace(",",".");var r,i,u,s=e.split("T"),l=1,d=1,p=0,g=0,M=0,N=0,I=s[0],R=s[1];if(!n(I))throw new a(P);var C;if(s=I.match(O),null!==s){if(C=I.split("-").length-1,C>0&&2!==C)throw new a(P);r=+s[1],l=+s[2],d=+s[3]}else if(s=I.match(x),null!==s)r=+s[1],l=+s[2];else if(s=I.match(w),null!==s)r=+s[1];else{var z;if(s=I.match(E),null!==s){if(r=+s[1],z=+s[2],u=o(r),1>z||u&&z>366||!u&&z>365)throw new a(P)}else{if(s=I.match(S),null===s)throw new a(P);r=+s[1];var D=+s[2],L=+s[3]||0;if(C=I.split("-").length-1,C>0&&(!n(s[3])&&1!==C||n(s[3])&&2!==C))throw new a(P);var q=new Date(Date.UTC(r,0,4));z=7*D+L-q.getUTCDay()-3}i=new Date(Date.UTC(r,0,1)),i.setUTCDate(z),l=i.getUTCMonth()+1,d=i.getUTCDate()}if(u=o(r),1>l||l>12||1>d||(2!==l||!u)&&d>y[l-1]||u&&2===l&&d>v)throw new a(P);var U;if(n(R)){if(s=R.match(b),null!==s){if(C=R.split(":").length-1,C>0&&2!==C&&3!==C)throw new a(P);p=+s[1],g=+s[2],M=+s[3],N=1e3*+(s[4]||0),U=5}else if(s=R.match(T),null!==s){if(C=R.split(":").length-1,C>0&&1!==C)throw new a(P);p=+s[1],g=+s[2],M=60*+(s[3]||0),U=4}else{if(s=R.match(_),null===s)throw new a(P);p=+s[1],g=60*+(s[2]||0),U=3}if(g>=60||M>=61||p>24||24===p&&(g>0||M>0||N>0))throw new a(P);var B=s[U],F=+s[U+1],W=+(s[U+2]||0);switch(B){case"+":p-=F,g-=W;break;case"-":p+=F,g+=W;break;case"Z":break;default:g+=new Date(Date.UTC(r,l-1,d,p,g)).getTimezoneOffset()}}else g+=new Date(r,l-1,d).getTimezoneOffset();var G=60===M;for(G&&M--;g>=60;)g-=60,p++;for(;p>=24;)p-=24,d++;for(i=u&&2===l?v:y[l-1];d>i;)d-=i,l++,l>12&&(l-=12,r++),i=u&&2===l?v:y[l-1];for(;0>g;)g+=60,p--;for(;0>p;)p+=24,d--;for(;1>d;)l--,1>l&&(l+=12,r--),i=u&&2===l?v:y[l-1],d+=i;var k=m(r,l,d,p,g,M,N);return n(t)?(h(k[0],k[1],t),f(t)):t=new A(k[0],k[1],c.UTC),G&&A.addSeconds(t,1,t),t},A.now=function(e){return A.fromDate(new Date,e)};var N=new A(0,0,c.TAI);return A.toGregorianDate=function(e,t){var r=!1,a=d(e,N);n(a)||(A.addSeconds(e,-1,N),a=d(N,N),r=!0);var o=a.dayNumber,u=a.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var f=0|4e3*(c+1)/1461001;c=0|c-(0|1461*f/4)+31;var h=0|80*c/2447,m=0|c-(0|2447*h/80);c=0|h/11;var p=0|h+2-12*c,y=0|100*(l-49)+f+c,v=0|u/s.SECONDS_PER_HOUR,g=u-v*s.SECONDS_PER_HOUR,w=0|g/s.SECONDS_PER_MINUTE;g-=w*s.SECONDS_PER_MINUTE;var x=0|g,E=(g-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),r&&(x+=1),n(t)?(t.year=y,t.month=p,t.day=m,t.hour=v,t.minute=w,t.second=x,t.millisecond=E,t.isLeapSecond=r,t):new i(y,p,m,v,w,x,E,r)},A.toDate=function(e){var t=A.toGregorianDate(e,p),r=t.second;return t.isLeapSecond&&(r-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,r,t.millisecond))},A.toIso8601=function(t,r){var a,i=A.toGregorianDate(t,i);return n(r)||0===i.millisecond?n(r)&&0!==r?(a=(.01*i.millisecond).toFixed(r).replace(".","").slice(0,r),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",i.year,i.month,i.day,i.hour,i.minute,i.second):(a=(.01*i.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a))},A.clone=function(e,t){return n(e)?n(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new A(e.dayNumber,e.secondsOfDay,c.TAI):void 0},A.compare=function(e,t){var r=e.dayNumber-t.dayNumber;return 0!==r?r:e.secondsOfDay-t.secondsOfDay},A.equals=function(e,t){return e===t||n(e)&&n(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},A.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(A.secondsDifference(e,t))<=r},A.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},A.secondsDifference=function(e,t){var r=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return r+(e.secondsOfDay-t.secondsOfDay)},A.daysDifference=function(e,t){var r=e.dayNumber-t.dayNumber,n=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return r+n},A.computeTaiMinusUtc=function(e){g.julianDate=e;var r=A.leapSeconds,n=t(r,g,l);return 0>n&&(n=~n,--n,0>n&&(n=0)),r[n].offset},A.addSeconds=function(e,t,r){return h(e.dayNumber,e.secondsOfDay+t,r)},A.addMinutes=function(e,t,r){var n=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return h(e.dayNumber,n,r)},A.addHours=function(e,t,r){var n=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return h(e.dayNumber,n,r)},A.addDays=function(e,t,r){var n=e.dayNumber+t;return h(n,e.secondsOfDay,r)},A.lessThan=function(e,t){return A.compare(e,t)<0},A.lessThanOrEquals=function(e,t){return A.compare(e,t)<=0},A.greaterThan=function(e,t){return A.compare(e,t)>0},A.greaterThanOrEquals=function(e,t){return A.compare(e,t)>=0},A.prototype.clone=function(e){return A.clone(this,e)},A.prototype.equals=function(e){return A.equals(this,e)},A.prototype.equalsEpsilon=function(e,t){return A.equalsEpsilon(this,e,t)},A.prototype.toString=function(){return A.toIso8601(this)},A.leapSeconds=[new u(new A(2441317,43210,c.TAI),10),new u(new A(2441499,43211,c.TAI),11),new u(new A(2441683,43212,c.TAI),12),new u(new A(2442048,43213,c.TAI),13),new u(new A(2442413,43214,c.TAI),14),new u(new A(2442778,43215,c.TAI),15),new u(new A(2443144,43216,c.TAI),16),new u(new A(2443509,43217,c.TAI),17),new u(new A(2443874,43218,c.TAI),18),new u(new A(2444239,43219,c.TAI),19),new u(new A(2444786,43220,c.TAI),20),new u(new A(2445151,43221,c.TAI),21),new u(new A(2445516,43222,c.TAI),22),new u(new A(2446247,43223,c.TAI),23),new u(new A(2447161,43224,c.TAI),24),new u(new A(2447892,43225,c.TAI),25),new u(new A(2448257,43226,c.TAI),26),new u(new A(2448804,43227,c.TAI),27),new u(new A(2449169,43228,c.TAI),28),new u(new A(2449534,43229,c.TAI),29),new u(new A(2450083,43230,c.TAI),30),new u(new A(2450630,43231,c.TAI),31),new u(new A(2451179,43232,c.TAI),32),new u(new A(2453736,43233,c.TAI),33),new u(new A(2454832,43234,c.TAI),34),new u(new A(2456109,43235,c.TAI),35),new u(new A(2457204,43236,c.TAI),36)],A}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(r,n){if(null===r||"object"!=typeof r)return r;n=e(n,!1);var a=new r.constructor;for(var i in r)if(r.hasOwnProperty(i)){var o=r[i];n&&(o=t(o,n)),a[i]=o}return a};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var r=e.split("\r\n"),n=0;n<r.length;++n){var a=r[n],i=a.indexOf(": ");if(i>0){var o=a.substring(0,i),u=a.substring(i+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var r=function(e,r,n){this.statusCode=e,this.response=r,this.responseHeaders=n,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return r.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},r}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,r,n,a,i){"use strict";function o(e,t){var r=decodeURIComponent(t);return e?atob(r):r}function u(e,t){for(var r=o(e,t),n=new ArrayBuffer(r.length),a=new Uint8Array(n),i=0;i<r.length;i++)a[i]=r.charCodeAt(i);return n}function s(e,r){r=t(r,"");var a=e[1],i=!!e[2],s=e[3];switch(r){case"":case"text":return o(i,s);case"arraybuffer":return u(i,s);case"blob":var c=u(i,s);return new Blob([c],{type:a});case"document":var l=new DOMParser;return l.parseFromString(o(i,s),a);case"json":return JSON.parse(o(i,s));default:throw new n("Unhandled responseType: "+r)}}var c=function(r){r=t(r,t.EMPTY_OBJECT);var n=r.responseType,a=t(r.method,"GET"),i=r.data,o=r.headers,u=r.overrideMimeType;return e(r.url,function(t){var r=e.defer();return c.load(t,n,a,i,o,r,u),r.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,n,o,u,c,f){var d=l.exec(e);if(null!==d)return c.resolve(s(d,t)),void 0;var h=new XMLHttpRequest;if(r(f)&&r(h.overrideMimeType)&&h.overrideMimeType(f),h.open(n,e,!0),r(u))for(var m in u)u.hasOwnProperty(m)&&h.setRequestHeader(m,u[m]);r(t)&&(h.responseType=t),h.onload=function(){200===h.status?r(h.response)?c.resolve(h.response):r(h.responseXML)&&h.responseXML.hasChildNodes()?c.resolve(h.responseXML):r(h.responseText)?c.resolve(h.responseText):c.reject(new i("unknown XMLHttpRequest response type.")):c.reject(new a(h.status,h.response,h.getAllResponseHeaders()))},h.onerror=function(){c.reject(new a)},h.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,r){return e({url:t,headers:r})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,r,n){"use strict";var a={Accept:"application/json,*/*;q=0.01"},i=function(r,i){return t(i)?t(i.Accept)||(i=e(i),i.Accept=a.Accept):i=a,n(r,i).then(function(e){return JSON.parse(e)})};return i}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,r,n,a,i,o,u,s,c,l,f){"use strict";function d(e,t){return o.compare(e.julianDate,t)}function h(e,r){if(!n(r.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!n(r.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var a=r.columnNames.indexOf("modifiedJulianDateUtc"),i=r.columnNames.indexOf("xPoleWanderRadians"),s=r.columnNames.indexOf("yPoleWanderRadians"),c=r.columnNames.indexOf("ut1MinusUtcSeconds"),h=r.columnNames.indexOf("xCelestialPoleOffsetRadians"),m=r.columnNames.indexOf("yCelestialPoleOffsetRadians"),p=r.columnNames.indexOf("taiMinusUtcSeconds");if(0>a||0>i||0>s||0>c||0>h||0>m||0>p)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=r.samples,v=e._dates=[];e._dateColumn=a,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=h,e._yCelestialPoleOffsetRadiansColumn=m,e._taiMinusUtcSecondsColumn=p,e._columnCount=r.columnNames.length,e._lastIndex=void 0;for(var g,w=e._addNewLeapSeconds,x=0,E=y.length;E>x;x+=e._columnCount){var S=y[x+a],O=y[x+p],M=S+l.MODIFIED_JULIAN_DATE_DIFFERENCE,_=new o(M,O,f.TAI);if(v.push(_),w){if(O!==g&&n(g)){var T=o.leapSeconds,b=t(T,_,d);if(0>b){var P=new u(_,O);T.splice(~b,0,P)}}g=O}}}function m(e,t,r,n,a){var i=r*n;a.xPoleWander=t[i+e._xPoleWanderRadiansColumn],a.yPoleWander=t[i+e._yPoleWanderRadiansColumn],a.xPoleOffset=t[i+e._xCelestialPoleOffsetRadiansColumn],a.yPoleOffset=t[i+e._yCelestialPoleOffsetRadiansColumn],a.ut1MinusUtc=t[i+e._ut1MinusUtcSecondsColumn]}function p(e,t,r){return t+e*(r-t)}function y(e,t,r,n,a,i,u){var s=e._columnCount;if(i>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u;var c=t[a],l=t[i];if(c.equals(l)||n.equals(c))return m(e,r,a,s,u),u;if(n.equals(l))return m(e,r,i,s,u),u;var f=o.secondsDifference(n,c)/o.secondsDifference(l,c),d=a*s,h=i*s,y=r[d+e._ut1MinusUtcSecondsColumn],v=r[h+e._ut1MinusUtcSecondsColumn],g=v-y; +if(g>.5||-.5>g){var w=r[d+e._taiMinusUtcSecondsColumn],x=r[h+e._taiMinusUtcSecondsColumn];w!==x&&(l.equals(n)?y=v:v-=x-w)}return u.xPoleWander=p(f,r[d+e._xPoleWanderRadiansColumn],r[h+e._xPoleWanderRadiansColumn]),u.yPoleWander=p(f,r[d+e._yPoleWanderRadiansColumn],r[h+e._yPoleWanderRadiansColumn]),u.xPoleOffset=p(f,r[d+e._xCelestialPoleOffsetRadiansColumn],r[h+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=p(f,r[d+e._yCelestialPoleOffsetRadiansColumn],r[h+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=p(f,y,v),u}var v=function(t){if(t=r(t,r.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=r(t.addNewLeapSeconds,!0),n(t.data))h(this,t.data);else if(n(t.url)){var a=this;this._downloadPromise=e(s(t.url),function(e){h(a,e)},function(){a._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else h(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return v.NONE=i({getPromiseToLoad:function(){return e()},compute:function(e,t){return n(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new a(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,r){if(!n(this._samples)){if(n(this._dataError))throw new c(this._dataError);return void 0}if(n(r)||(r=new a(0,0,0,0,0)),0===this._samples.length)return r.xPoleWander=0,r.yPoleWander=0,r.xPoleOffset=0,r.yPoleOffset=0,r.ut1MinusUtc=0,r;var i=this._dates,u=this._lastIndex,s=0,l=0;if(n(u)){var f=i[u],d=i[u+1],h=o.lessThanOrEquals(f,e),m=!n(d),p=m||o.greaterThanOrEquals(d,e);if(h&&p)return s=u,!m&&d.equals(e)&&++s,l=s+1,y(this,i,this._samples,e,s,l,r),r}var v=t(i,e,o.compare,this._dateColumn);return v>=0?(v<i.length-1&&i[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,i,this._samples,e,s,l,r),r},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var r=n.exec(t);this.scheme=r[1],this.authority=r[2],this.path=r[3],this.query=r[4],this.fragment=r[5]}}function t(e){var t=unescape(e);return i.test(t)?t:e.toUpperCase()}function r(e,t,r,n){return(t||"")+r.toLowerCase()+(n||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var n=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,r).replace(a,t)),this.path&&(this.path=this.path.replace(a,t)),this.query&&(this.query=this.query.replace(a,t)),this.fragment&&(this.fragment=this.fragment.replace(a,t))};var a=/%[0-9a-z]{2}/gi,i=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var r=new e;return this.scheme?(r.scheme=this.scheme,r.authority=this.authority,r.path=this.path,r.query=this.query):(r.scheme=t.scheme,this.authority?(r.authority=this.authority,r.path=this.path,r.query=this.query):(r.authority=t.authority,""==this.path?(r.path=t.path,r.query=this.query||t.query):("/"==this.path.charAt(0)?(r.path=this.path,r.removeDotSegments()):(r.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,r.removeDotSegments()),r.query=this.query))),r.fragment=this.fragment,r},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),r=[],n=""==t[0];for(n&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?r.pop():"."!=e&&r.push(e);("."==e||".."==e)&&r.push(""),n&&r.unshift(""),this.path=r.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,r,n){"use strict";function a(){for(var e=document.getElementsByTagName("script"),t=0,r=e.length;r>t;++t){var n=e[t].getAttribute("src"),a=f.exec(n);if(null!==a)return a[1]}return void 0}function i(){if(t(s))return s;var n;if(n="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:a(),!t(n))throw new r("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(n).resolve(new e(document.location.href))}function o(e){return n.toUrl("../"+e)}function u(t){return new e(t).resolve(i()).toString()}var s,c,l,f=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,d=function(e){t(c)||(c=t(n.toUrl)?o:u),t(l)||(l=document.createElement("a"));var r=c(e);return l.href=r,l.href=l.href,l.href};return d._cesiumScriptRegex=f,d.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},d}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,r){this.x=e,this.y=t,this.s=r};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,r,n,a,i,o,u){"use strict";function s(e,t,r){var n=f;return n.dayNumber=t,n.secondsOfDay=r,i.daysDifference(n,e._sampleZeroDateTT)}function c(r,a){if(r._chunkDownloadsInProgress[a])return r._chunkDownloadsInProgress[a];var i=e.defer();r._chunkDownloadsInProgress[a]=i;var u,s=r._xysFileUrlTemplate;return u=n(s)?s.replace("{0}",a):t("Assets/IAU2006_XYS/IAU2006_XYS_"+a+".json"),e(o(u),function(e){r._chunkDownloadsInProgress[a]=!1;for(var t=r._samples,n=e.samples,o=3*a*r._samplesPerXysFile,u=0,s=n.length;s>u;++u)t[o+u]=n[u];i.resolve()}),i.promise}var l=function(e){e=r(e,r.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=r(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=r(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new i(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=r(e.stepSizeDays,1),this._samplesPerXysFile=r(e.samplesPerXysFile,1e3),this._totalSamples=r(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,n=this._denominators=new Array(t+1),a=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){n[s]=o,a[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(n[s]*=s-c);n[s]=1/n[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},f=new i(0,0,u.TAI);return l.prototype.preload=function(t,r,n,a){var i=s(this,t,r),o=s(this,n,a),u=0|i/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var f=0|u/this._samplesPerXysFile,d=0|l/this._samplesPerXysFile,h=[],m=f;d>=m;++m)h.push(c(this,m));return e.all(h)},l.prototype.computeXysRadians=function(e,t,r){var i=s(this,e,t);if(0>i)return void 0;var o=0|i/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var f=l+u;f>=this._totalSamples&&(f=this._totalSamples-1,l=f-u,0>l&&(l=0));var d=!1,h=this._samples;if(n(h[3*l])||(c(this,0|l/this._samplesPerXysFile),d=!0),n(h[3*f])||(c(this,0|f/this._samplesPerXysFile),d=!0),d)return void 0;n(r)?(r.x=0,r.y=0,r.s=0):r=new a(0,0,0);var m,p,y=i-l*this._stepSizeDays,v=this._work,g=this._denominators,w=this._coef,x=this._xTable;for(m=0;u>=m;++m)v[m]=y-x[m];for(m=0;u>=m;++m){for(w[m]=1,p=0;u>=p;++p)p!==m&&(w[m]*=v[p]);w[m]*=g[m];var E=3*(l+m);r.x+=w[m]*h[E++],r.y+=w[m]*h[E++],r.s+=w[m]*h[E]}return r},l}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,r,n,a,i,o,u){"use strict";var s=function(e,r,n,a){this.x=t(e,0),this.y=t(r,0),this.z=t(n,0),this.w=t(a,0)},c=new e;s.fromAxisAngle=function(t,n,a){var i=n/2,o=Math.sin(i);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,d=Math.cos(i);return r(a)?(a.x=u,a.y=l,a.z=f,a.w=d,a):new s(u,l,f,d)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var n,a,i,o,c,d=e[u.COLUMN0ROW0],h=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],p=d+h+m;if(p>0)n=Math.sqrt(p+1),c=.5*n,n=.5/n,a=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*n,i=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*n,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*n;else{var y=l,v=0;h>d&&(v=1),m>d&&m>h&&(v=2);var g=y[v],w=y[g];n=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=f;x[v]=.5*n,n=.5/n,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*n,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*n,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*n,a=-x[0],i=-x[1],o=-x[2]}return r(t)?(t.x=a,t.y=i,t.z=o,t.w=c,t):new s(a,i,o,c)};var d=new s;s.fromHeadingPitchRoll=function(t,r,n,a){var i=s.fromAxisAngle(e.UNIT_X,n,d),o=s.fromAxisAngle(e.UNIT_Y,-r,a);a=s.multiply(o,i,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,d);return s.multiply(u,a,a)};var h=new e,m=new e,p=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,r,n){n=t(n,0),r[n++]=e.x,r[n++]=e.y,r[n++]=e.z,r[n]=e.w},s.unpack=function(e,n,a){return n=t(n,0),r(a)||(a=new s),a.x=e[n],a.y=e[n+1],a.z=e[n+2],a.w=e[n+3],a},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,r,n){s.unpack(e,4*r,v),s.conjugate(v,v);for(var a=0,i=r-t+1;i>a;a++){var o=3*a;s.unpack(e,4*(t+a),p),s.multiply(p,v,p),p.w<0&&s.negate(p,p),s.computeAxis(p,h);var u=s.computeAngle(p);n[o]=h.x*u,n[o+1]=h.y*u,n[o+2]=h.z*u}},s.unpackInterpolationResult=function(t,n,a,i,o){r(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(n,4*i,y),0===u?s.clone(s.IDENTITY,p):s.fromAxisAngle(m,u,p),s.multiply(p,y,o)},s.clone=function(e,t){return r(e)?r(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var r=1/s.magnitude(e),n=e.x*r,a=e.y*r,i=e.z*r,o=e.w*r;return t.x=n,t.y=a,t.z=i,t.w=o,t},s.inverse=function(e,t){var r=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/r,t)},s.add=function(e,t,r){return r.x=e.x+t.x,r.y=e.y+t.y,r.z=e.z+t.z,r.w=e.w+t.w,r},s.subtract=function(e,t,r){return r.x=e.x-t.x,r.y=e.y-t.y,r.z=e.z-t.z,r.w=e.w-t.w,r},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,r){var n=e.x,a=e.y,i=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+n*l+a*c-i*s,d=o*s-n*c+a*l+i*u,h=o*c+n*s-a*u+i*l,m=o*l-n*u-a*s-i*c;return r.x=f,r.y=d,r.z=h,r.w=m,r},s.multiplyByScalar=function(e,t,r){return r.x=e.x*t,r.y=e.y*t,r.z=e.z*t,r.w=e.w*t,r},s.divideByScalar=function(e,t,r){return r.x=e.x/t,r.y=e.y/t,r.z=e.z/t,r.w=e.w/t,r},s.computeAxis=function(e,t){var r=e.w;if(Math.abs(r-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var n=1/Math.sqrt(1-r*r);return t.x=e.x*n,t.y=e.y*n,t.z=e.z*n,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,r,n){return g=s.multiplyByScalar(t,r,g),n=s.multiplyByScalar(e,1-r,n),s.add(g,n,n)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,r,n){var a=s.dot(e,t),i=t;if(0>a&&(a=-a,i=w=s.negate(t,w)),1-a<o.EPSILON6)return s.lerp(e,i,r,n);var u=Math.acos(a);return x=s.multiplyByScalar(e,Math.sin((1-r)*u),x),E=s.multiplyByScalar(i,Math.sin(r*u),E),n=s.add(x,E,n),s.multiplyByScalar(n,1/Math.sin(u),n)},s.log=function(t,r){var n=o.acosClamped(t.w),a=0;return 0!==n&&(a=n/Math.sin(n)),e.multiplyByScalar(t,a,r)},s.exp=function(t,r){var n=e.magnitude(t),a=0;return 0!==n&&(a=Math.sin(n)/n),r.x=t.x*a,r.y=t.y*a,r.z=t.z*a,r.w=Math.cos(n),r};var S=new e,O=new e,M=new s,_=new s;s.computeInnerQuadrangle=function(t,r,n,a){var i=s.conjugate(r,M);s.multiply(i,n,_);var o=s.log(_,S);s.multiply(i,t,_);var u=s.log(_,O);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,M),s.multiply(r,M,a)},s.squad=function(e,t,r,n,a,i){var o=s.slerp(e,t,a,M),u=s.slerp(r,n,a,_);return s.slerp(o,u,2*a*(1-a),i)};for(var T=new s,b=1.9011074535173003,P=a.supportsTypedArrays()?new Float32Array(8):[],A=a.supportsTypedArrays()?new Float32Array(8):[],N=a.supportsTypedArrays()?new Float32Array(8):[],I=a.supportsTypedArrays()?new Float32Array(8):[],R=0;7>R;++R){var C=R+1,z=2*C+1;P[R]=1/(C*z),A[R]=C/z}return P[7]=b/136,A[7]=8*b/17,s.fastSlerp=function(e,t,r,n){var a,i=s.dot(e,t);i>=0?a=1:(a=-1,i=-i);for(var o=i-1,u=1-r,c=r*r,l=u*u,f=7;f>=0;--f)N[f]=(P[f]*c-A[f])*o,I[f]=(P[f]*l-A[f])*o;var d=a*r*(1+N[0]*(1+N[1]*(1+N[2]*(1+N[3]*(1+N[4]*(1+N[5]*(1+N[6]*(1+N[7])))))))),h=u*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),m=s.multiplyByScalar(e,h,T);return s.multiplyByScalar(t,d,n),s.add(m,n,n)},s.fastSquad=function(e,t,r,n,a,i){var o=s.fastSlerp(e,t,a,M),u=s.fastSlerp(r,n,a,_);return s.fastSlerp(o,u,2*a*(1-a),i)},s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n},s.ZERO=i(new s(0,0,0,0)),s.IDENTITY=i(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,m,p,y,v){"use strict";var g={},w=new r,x=new r,E=new r;g.eastNorthUpToFixedFrame=function(e,t,n){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(n)?(n[0]=0,n[1]=1,n[2]=0,n[3]=0,n[4]=-o,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=o,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new p(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,r.normalize(s,s),r.cross(u,s,l),i(n)?(n[0]=s.x,n[1]=s.y,n[2]=s.z,n[3]=0,n[4]=l.x,n[5]=l.y,n[6]=l.z,n[7]=0,n[8]=u.x,n[9]=u.y,n[10]=u.z,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new p(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var S=new r,O=new r,M=new r;g.northEastDownToFixedFrame=function(e,t,n){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(n)?(n[0]=-o,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=-o,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new p(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=S,s=O,l=M;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,r.normalize(s,s),r.cross(u,s,l),i(n)?(n[0]=l.x,n[1]=l.y,n[2]=l.z,n[3]=0,n[4]=s.x,n[5]=s.y,n[6]=s.z,n[7]=0,n[8]=-u.x,n[9]=-u.y,n[10]=-u.z,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new p(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},g.northUpEastToFixedFrame=function(e,t,n){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(n)?(n[0]=-o,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=o,n[7]=0,n[8]=0,n[9]=1,n[10]=0,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new p(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,r.normalize(s,s),r.cross(u,s,l),i(n)?(n[0]=l.x,n[1]=l.y,n[2]=l.z,n[3]=0,n[4]=u.x,n[5]=u.y,n[6]=u.z,n[7]=0,n[8]=s.x,n[9]=s.y,n[10]=s.z,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,n):new p(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var _=new y,T=new r(1,1,1),b=new p;g.headingPitchRollToFixedFrame=function(e,t,n,a,i,o){var u=y.fromHeadingPitchRoll(t,n,a,_),s=p.fromTranslationQuaternionRotationScale(r.ZERO,u,T,b);return o=g.eastNorthUpToFixedFrame(e,i,o),p.multiply(o,s,o)};var P=new p,A=new m;g.headingPitchRollQuaternion=function(e,t,r,n,a,i){var o=g.headingPitchRollToFixedFrame(e,t,r,n,a,P),u=p.getRotation(o,A);return y.fromRotationMatrix(u,i)};var N=24110.54841,I=8640184.812866,R=.093104,C=-62e-7,z=1.1772758384668e-19,D=72921158553e-15,L=h.TWO_PI/86400,q=new d;g.computeTemeToPseudoFixedMatrix=function(e,t){q=d.addSeconds(e,-d.computeTaiMinusUtc(e),q);var r,n=q.dayNumber,a=q.secondsOfDay,o=n-2451545;r=a>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=N+r*(I+r*(R+r*C)),s=u*L%h.TWO_PI,c=D+z*(n-2451545.5),l=(a+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,f=s+c*l,p=Math.cos(f),y=Math.sin(f);return i(t)?(t[0]=p,t[1]=-y,t[2]=0,t[3]=y,t[4]=p,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new m(p,y,0,-y,p,0,0,0,1)},g.iau2006XysData=new l,g.earthOrientationParameters=u.NONE;var U=32.184,B=2451545;g.preloadIcrfFixed=function(t){var r=t.start.dayNumber,n=t.start.secondsOfDay+U,a=t.stop.dayNumber,i=t.stop.secondsOfDay+U,o=g.iau2006XysData.preload(r,n,a,i),u=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},g.computeIcrfToFixedMatrix=function(e,t){i(t)||(t=new m);var r=g.computeFixedToIcrfMatrix(e,t);return i(r)?m.transpose(r,t):void 0};var F=new f(0,0,0),W=new s(0,0,0,0,0,0),G=new m,k=new m;g.computeFixedToIcrfMatrix=function(e,t){i(t)||(t=new m);var r=g.earthOrientationParameters.compute(e,W);if(!i(r))return void 0;var n=e.dayNumber,a=e.secondsOfDay+U,o=g.iau2006XysData.computeXysRadians(n,a,F);if(!i(o))return void 0;var u=o.x+r.xPoleOffset,s=o.y+r.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=G;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var f=m.fromRotationZ(-o.s,k),p=m.multiply(l,f,G),y=e.dayNumber,w=e.secondsOfDay-d.computeTaiMinusUtc(e)+r.ut1MinusUtc,x=y-2451545,E=w/v.SECONDS_PER_DAY,S=.779057273264+E+.00273781191135448*(x+E);S=S%1*h.TWO_PI;var O=m.fromRotationZ(S,k),M=m.multiply(p,O,G),_=Math.cos(r.xPoleWander),T=Math.cos(r.yPoleWander),b=Math.sin(r.xPoleWander),P=Math.sin(r.yPoleWander),A=n-B+a/v.SECONDS_PER_DAY;A/=36525;var N=-47e-6*A*h.RADIANS_PER_DEGREE/3600,I=Math.cos(N),R=Math.sin(N),C=k;return C[0]=_*I,C[1]=_*R,C[2]=b,C[3]=-T*R+P*b*I,C[4]=T*I+P*b*R,C[5]=-P*_,C[6]=-P*R-T*b*I,C[7]=P*I-T*b*R,C[8]=T*_,m.multiply(M,C,t)};var V=new n;g.pointToWindowCoordinates=function(e,t,r,n){return n=g.pointToGLWindowCoordinates(e,t,r,n),n.y=2*t[5]-n.y,n},g.pointToGLWindowCoordinates=function(e,r,a,o){i(o)||(o=new t);var u=V;return p.multiplyByVector(e,n.fromElements(a.x,a.y,a.z,1,u),u),n.multiplyByScalar(u,1/u.w,u),p.multiplyByVector(r,u,u),t.fromCartesian4(u,o)};var Y=new r,j=new r,H=new r;return g.rotationMatrixFromPositionVelocity=function(e,t,n,o){var u=a(n,c.WGS84).geodeticSurfaceNormal(e,Y),s=r.cross(t,u,j);r.equalsEpsilon(s,r.ZERO,h.EPSILON6)&&(s=r.clone(r.UNIT_X,s));var l=r.cross(s,t,H);return r.cross(t,l,s),r.negate(s,s),i(o)||(o=new m),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},g}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,m){"use strict";var p=new n,y=function(e,t){t=a(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var n=m.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=r.fromCartesian4(f.getColumn(n,0,p)),this._yAxis=r.fromCartesian4(f.getColumn(n,1,p));var i=r.fromCartesian4(f.getColumn(n,2,p));this._plane=d.fromPointNormal(e,i)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,r){var n=e.fromPoints(t,v);return new y(n.center,r)};var g=new h,w=new r;y.prototype.projectPointOntoPlane=function(e,n){var a=g;a.origin=e,r.normalize(e,a.direction);var o=c.rayPlane(a,this._plane,w);if(i(o)||(r.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w)),i(o)){var u=r.subtract(o,this._origin,o),s=r.dot(this._xAxis,u),l=r.dot(this._yAxis,u);return i(n)?(n.x=s,n.y=l,n):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){i(t)||(t=[]);for(var r=0,n=e.length,a=0;n>a;a++){var o=this.projectPointOntoPlane(e[a],t[r]);i(o)&&(t[r]=o,r++)}return t.length=r,t},y.prototype.projectPointToNearestOnPlane=function(e,n){i(n)||(n=new t);var a=g;a.origin=e,r.clone(this._plane.normal,a.direction);var o=c.rayPlane(a,this._plane,w);i(o)||(r.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w));var u=r.subtract(o,this._origin,o),s=r.dot(this._xAxis,u),l=r.dot(this._yAxis,u);return n.x=s,n.y=l,n},y.prototype.projectPointsToNearestOnPlane=function(e,t){i(t)||(t=[]);var r=e.length;t.length=r;for(var n=0;r>n;n++)t[n]=this.projectPointToNearestOnPlane(e[n],t[n]);return t};var x=new r;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var n=e.length;i(t)?t.length=n:t=new Array(n);for(var a=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;n>l;++l){var f=e[l];r.multiplyByScalar(u,f.x,c),i(t[l])||(t[l]=new r);var d=r.add(o,c,t[l]);r.multiplyByScalar(s,f.y,c),r.add(d,c,d),a.scaleToGeocentricSurface(d,d)}return t},y}),define("Core/pointInsideTriangle",["./barycentricCoordinates","./Cartesian3"],function(e,t){"use strict";var r=new t,n=function(t,n,a,i){return e(t,n,a,i,r),r.x>0&&r.y>0&&r.z>0};return n}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,r,n,a,i,o,u){"use strict";function s(e){var t=e._uSquared,r=e._ellipsoid.maximumRadius,n=e._ellipsoid.minimumRadius,a=(r-n)/r,i=Math.cos(e._startHeading),o=Math.sin(e._startHeading),u=(1-a)*Math.tan(e._start.latitude),s=1/Math.sqrt(1+u*u),c=s*u,l=Math.atan2(u,i),f=s*o,d=f*f,h=1-d,m=Math.sqrt(h),p=t/4,y=p*p,v=y*p,g=y*y,w=1+p-3*y/4+5*v/4-175*g/64,x=1-p+15*y/8-35*v/8,E=1-3*p+35*y/4,S=1-5*p,O=w*l-x*Math.sin(2*l)*p/2-E*Math.sin(4*l)*y/16-S*Math.sin(6*l)*v/48-5*Math.sin(8*l)*g/512,M=e._constants;M.a=r,M.b=n,M.f=a,M.cosineHeading=i,M.sineHeading=o,M.tanU=u,M.cosineU=s,M.sineU=c,M.sigma=l,M.sineAlpha=f,M.sineSquaredAlpha=d,M.cosineSquaredAlpha=h,M.cosineAlpha=m,M.u2Over4=p,M.u4Over16=y,M.u6Over64=v,M.u8Over256=g,M.a0=w,M.a1=x,M.a2=E,M.a3=S,M.distanceRatio=O}function c(e,t){return e*t*(4+e*(4-3*t))/16}function l(e,t,r,n,a,i,o){var u=c(e,r);return(1-u)*e*t*(n+u*a*(o+u*i*(2*o*o-1)))}function f(e,t,r,n,a,i,o){var s,c,f,d,h,m=(t-r)/t,p=i-n,y=Math.atan((1-m)*Math.tan(a)),v=Math.atan((1-m)*Math.tan(o)),g=Math.cos(y),w=Math.sin(y),x=Math.cos(v),E=Math.sin(v),S=g*x,O=g*E,M=w*E,_=w*x,T=p,b=u.TWO_PI,P=Math.cos(T),A=Math.sin(T);do{P=Math.cos(T),A=Math.sin(T);var N=O-_*P;f=Math.sqrt(x*x*A*A+N*N),c=M+S*P,s=Math.atan2(f,c);var I;0===f?(I=0,d=1):(I=S*A/f,d=1-I*I),b=T,h=c-2*M/d,isNaN(h)&&(h=0),T=p+l(m,I,d,s,f,c,h)}while(Math.abs(T-b)>u.EPSILON12);var R=d*(t*t-r*r)/(r*r),C=1+R*(4096+R*(R*(320-175*R)-768))/16384,z=R*(256+R*(R*(74-47*R)-128))/1024,D=h*h,L=z*f*(h+z*(c*(2*D-1)-z*h*(4*f*f-3)*(4*D-3)/6)/4),q=r*C*(s-L),U=Math.atan2(x*A,O-_*P),B=Math.atan2(g*A,O*P-_);e._distance=q,e._startHeading=U,e._endHeading=B,e._uSquared=R}function d(r,n,a,i){e.normalize(i.cartographicToCartesian(n,m),h),e.normalize(i.cartographicToCartesian(a,m),m),f(r,i.maximumRadius,i.minimumRadius,n.longitude,n.latitude,a.longitude,a.latitude),r._start=t.clone(n,r._start),r._end=t.clone(a,r._end),r._start.height=0,r._end.height=0,s(r)}var h=new e,m=new e,p=function(e,a,i){var u=r(i,o.WGS84);this._ellipsoid=u,this._start=new t,this._end=new t,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,n(e)&&n(a)&&d(this,e,a,u)};return a(p.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),p.prototype.setEndPoints=function(e,t){d(this,e,t,this._ellipsoid)},p.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)},p.prototype.interpolateUsingSurfaceDistance=function(e,r){var a=this._constants,i=a.distanceRatio+e/a.b,o=Math.cos(2*i),u=Math.cos(4*i),s=Math.cos(6*i),c=Math.sin(2*i),f=Math.sin(4*i),d=Math.sin(6*i),h=Math.sin(8*i),m=i*i,p=i*m,y=a.u8Over256,v=a.u2Over4,g=a.u6Over64,w=a.u4Over16,x=2*p*y*o/3+i*(1-v+7*w/4-15*g/4+579*y/64-(w-15*g/4+187*y/16)*o-(5*g/4-115*y/16)*u-29*y*s/16)+(v/2-w+71*g/32-85*y/16)*c+(5*w/16-5*g/4+383*y/96)*f-m*((g-11*y/2)*c+5*y*f/2)+(29*g/96-29*y/16)*d+539*y*h/1536,E=Math.asin(Math.sin(x)*a.cosineAlpha),S=Math.atan(a.a/a.b*Math.tan(E));x-=a.sigma;var O=Math.cos(2*a.sigma+x),M=Math.sin(x),_=Math.cos(x),T=a.cosineU*_,b=a.sineU*M,P=Math.atan2(M*a.sineHeading,T-b*a.cosineHeading),A=P-l(a.f,a.sineAlpha,a.cosineSquaredAlpha,x,M,_,O);return n(r)?(r.longitude=this._start.longitude+A,r.latitude=S,r.height=0,r):new t(this._start.longitude+A,S,0)},p}),define("Core/isArray",["./defined"],function(e){"use strict";var t=Array.isArray;return e(t)||(t=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(e,t,r,n,a,i,o,u,s,c,l,f){"use strict";function d(e,t,r){var n=M;n.length=e;var a;if(t===r){for(a=0;e>a;a++)n[a]=t;return n}var i=r-t,o=i/e;for(a=0;e>a;a++){var u=t+a*o;n[a]=u}return n}function h(t,r,n,a,i,o,u,s){var c=a.scaleToGeodeticSurface(t,P),l=a.scaleToGeodeticSurface(r,A),f=m.numberOfPoints(t,r,n),h=a.cartesianToCartographic(c,_),p=a.cartesianToCartographic(l,T),y=d(f,i,o);N.setEndPoints(h,p);var v=N.surfaceDistance/f,g=s;h.height=i;var w=a.cartographicToCartesian(h,b);e.pack(w,u,g),g+=3;for(var x=1;f>x;x++){var E=N.interpolateUsingSurfaceDistance(x*v,T);E.height=y[x],w=a.cartographicToCartesian(E,b),e.pack(w,u,g),g+=3}return g}var m={};m.numberOfPoints=function(t,r,n){var a=e.distance(t,r);return Math.ceil(a/n)};var p=new t;m.extractHeights=function(e,t){for(var r=e.length,n=new Array(r),a=0;r>a;a++){var i=e[a];n[a]=t.cartesianToCartographic(i,p).height}return n};var y=new l,v=new e,g=new e,w=new f(e.ZERO,0),x=new e,E=new f(e.ZERO,0),S=new e,O=new e,M=[],_=new t,T=new t,b=new e,P=new e,A=new e,N=new o;m.wrapLongitude=function(t,a){var i=[],o=[];if(n(t)&&t.length>0){a=r(a,l.IDENTITY);var s=l.inverseTransformation(a,y),c=l.multiplyByPoint(s,e.ZERO,v),d=l.multiplyByPointAsVector(s,e.UNIT_Y,g),h=f.fromPointNormal(c,d,w),m=l.multiplyByPointAsVector(s,e.UNIT_X,x),p=f.fromPointNormal(c,m,E),M=1;i.push(e.clone(t[0]));for(var _=i[0],T=t.length,b=1;T>b;++b){var P=t[b];if(f.getPointDistance(p,_)<0||f.getPointDistance(p,P)<0){var A=u.lineSegmentPlane(_,P,h,S);if(n(A)){var N=e.multiplyByScalar(d,5e-9,O);f.getPointDistance(h,_)<0&&e.negate(N,N),i.push(e.add(A,N,new e)),o.push(M+1),e.negate(N,N),i.push(e.add(A,N,new e)),M=1}}i.push(e.clone(t[b])),M++,_=P}o.push(M)}return{positions:i,lengths:o}};var I=c.EPSILON7;return m.removeDuplicates=function(t){var r=t.length;if(2>r)return t;var n,a,i;for(n=1;r>n&&(a=t[n-1],i=t[n],!e.equalsEpsilon(a,i,I));++n);if(n===r)return t;for(var o=t.slice(0,n);r>n;++n)i=t[n],e.equalsEpsilon(a,i,I)||(o.push(e.clone(i)),a=i);return o},m.generateArc=function(t){n(t)||(t={});var a=t.positions,o=a.length,u=r(t.ellipsoid,i.WGS84),l=r(t.height,0);if(1>o)return[];if(1===o){var f=u.scaleToGeodeticSurface(a[0],P);if(0!==l){var d=u.geodeticSurfaceNormal(f,b);e.multiplyByScalar(d,l,d),e.add(f,d,f)}return[f.x,f.y,f.z]}var p=t.minDistance;if(!n(p)){var y=r(t.granularity,c.RADIANS_PER_DEGREE);p=c.chordLength(y,u.maximumRadius)}var v,g=0;for(v=0;o-1>v;v++)g+=m.numberOfPoints(a[v],a[v+1],p);var w=3*(g+1),x=new Array(w),E=0,S=s(l);for(v=0;o-1>v;v++){var O=a[v],T=a[v+1],A=S?l[v]:l,N=S?l[v+1]:l;E=h(O,T,p,u,A,N,x,E)}M.length=0;var I=a[o-1],R=u.cartesianToCartographic(I,_);R.height=S?l[o-1]:l;var C=u.cartographicToCartesian(R,b);return e.pack(C,x,w-3),x},m.generateCartesianArc=function(t){for(var r=m.generateArc(t),n=r.length/3,a=new Array(n),i=0;n>i;i++)a[i]=e.unpack(r,3*i);return a},m}),define("Core/Queue",[],function(){"use strict";var e=function(){this._array=[],this._offset=0,this.length=0};return e.prototype.enqueue=function(e){this._array.push(e),this.length++},e.prototype.dequeue=function(){if(0===this.length)return void 0;var e=this._array,t=this._offset,r=e[t];return e[t]=void 0,t++,t>10&&2*t>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this.length--,r},e.prototype.contains=function(e){return-1!==this._array.indexOf(e)},e.prototype.clear=function(){this._array.length=this._offset=this.length=0},e.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)},e}),define("Core/WindingOrder",["./freezeObject"],function(e){"use strict";var t={CLOCKWISE:2304,COUNTER_CLOCKWISE:2305,validate:function(e){return e===t.CLOCKWISE||e===t.COUNTER_CLOCKWISE}};return e(t)}),define("Core/PolygonPipeline",["./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./Math","./pointInsideTriangle","./PolylinePipeline","./PrimitiveType","./Queue","./WindingOrder"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,m,p){"use strict";function y(t,r,n){var a=e.subtract(r,t,L),i=e.subtract(n,r,q);return a.x*i.y-a.y*i.x>=0}function v(e){for(var t=e[0].x,r=0,n=0;n<e.length;n++)e[n].x>t&&(t=e[n].x,r=n);return r}function g(e){for(var t=e[0][0].x,r=0,n=0;n<e.length;n++){var a=e[n][v(e[n])].x;a>t&&(t=a,r=n)}return r}function w(e){for(var t=[],r=0;r<e.length;r++){var n=e[(r-1+e.length)%e.length],a=e[r],i=e[(r+1)%e.length];y(n,a,i)||t.push(a)}return t}function x(t,r){for(var n=0;n<t.length;n++)if(e.equals(r,t[n]))return n;return-1}function E(r,a,i){i=n(i,[]);var o=Number.MAX_VALUE,u=v(a),s=new e(a[u].x,r.y);i.push(u),i.push((u+1)%a.length);for(var c=a[0].x,l=c,f=1;f<a.length;++f)a[f].x<c?c=a[f].x:a[f].x>l&&(l=a[f].x);l+=l-c;var d=new t(l,r.y,0);for(f=0;f<a.length;f++){var h=a[f],m=a[(f+1)%a.length]; +if((h.x>=r.x||m.x>=r.x)&&(h.y>=r.y&&m.y<=r.y||h.y<=r.y&&m.y>=r.y)){var p=(m.y-h.y)*(d.x-r.x)-(m.x-h.x)*(d.y-r.y);if(0!==p){p=1/p;var y=((m.x-h.x)*(r.y-h.y)-(m.y-h.y)*(r.x-h.x))*p,g=((d.x-r.x)*(r.y-h.y)-(d.y-r.y)*(r.x-h.x))*p;if(y>=0&&1>=y&&g>=0&&1>=g){var w=new e(r.x+y*(d.x-r.x),r.y+y*(d.y-r.y)),x=e.subtract(w,r,U);p=e.magnitudeSquared(x),o>p&&(s=w,o=p,i[0]=f,i[1]=(f+1)%a.length)}}}}return s}function S(t,r){var n=g(r),a=r[n],i=v(a),o=a[i],u=[],s=E(o,t,u),c=x(t,s);if(-1!==c)return c;var d=e.magnitudeSquared(e.subtract(t[u[0]],o,B)),h=e.magnitudeSquared(e.subtract(t[u[1]],o,B)),m=h>d?t[u[0]]:t[u[1]],p=w(t),y=p.indexOf(m);-1!==y&&p.splice(y,1);for(var S=[],O=0;O<p.length;O++){var M=p[O];f(M,o,s,m)&&S.push(M)}var _=Number.MAX_VALUE;if(S.length>0){var T=e.fromElements(1,0,B);for(O=0;O<S.length;O++){var b=e.subtract(S[O],o,F),P=e.magnitude(T)*e.magnitudeSquared(b);if(0!==P){var A=Math.abs(l.acosClamped(e.dot(T,b)/P));_>A&&(_=A,m=S[O])}}}return t.indexOf(m)}function O(e,r,n){for(var a=et.computeWindingOrder2D(e),i=0;i<r.length;i++){var o=r[i];t.equals(o[0],o[o.length-1])||o.push(o[0]);var s=et.computeWindingOrder2D(o);s===a&&o.reverse()}var c=u.fromPoints(e,n),l=c.projectPointsOntoPlane(e),f=[];for(i=0;i<r.length;i++)f.push(c.projectPointsOntoPlane(r[i]));var d=S(l,f),h=g(f),m=v(f[h]),p=r[h],y=[];for(i=0;i<e.length;i++)y.push(e[i]);var w,x=[];if(0!==m)for(w=0;w<=p.length;w++){var E=(w+m)%p.length;0!==E&&x.push(p[E])}else for(w=0;w<p.length;w++)x.push(p[(w+m)%p.length]);var O=y.lastIndexOf(e[d]);x.push(e[O]);var M=y.slice(0,O+1),_=y.slice(O+1);return y=M.concat(x,_),r.splice(h,1),y}function M(e){var t=l.nextRandomNumber(),r=Math.floor(t*e);return r===e&&r--,r}function _(e,t,r,n){var a=n[e].position,i=n[t].position,o=n[r].position,u=o.x,s=o.y,c=a.x-u,l=a.y-s,f=i.x-u,d=i.y-s;return c*d-l*f}function T(e,t){return e.x*t.y-e.y*t.x}function b(e,t){var r=t.length,n=l.mod(e-1,r),a=l.mod(e+1,r);return 0===_(n,a,e,t)?!1:!0}function P(t,r){return e.magnitudeSquared(r)<e.magnitudeSquared(t)}function A(t,r,n){if(!b(t,n))return t;var a=n[t].position,i=n[r].position,o=n.length,u=l.mod(t-1,o);if(!b(u,n))return u;var s=l.mod(t+1,o);if(!b(s,n))return s;var c=e.subtract(n[u].position,a,k),f=e.subtract(n[s].position,a,V),d=e.subtract(i,a,Y),h=T(c,d),m=T(f,d);if(0===h)return P(c,d)?W:G;if(0===m)return P(f,d)?W:G;var p=T(c,f);return 0>p?0>h&&m>0?W:G:p>0?h>0&&0>m?G:W:void 0}function N(e,t,r){return(e>t||e>r)&&(t>e||r>e)||t===r&&t===e}function I(t,r,n,a){var i=e.subtract(n,t,H),o=r.x*a.y-r.y*a.x,u=o*o,s=e.magnitudeSquared(r),c=e.magnitudeSquared(a);if(u>j*s*c){var l=(i.x*a.y-i.y*a.x)/o;return e.add(t,e.multiplyByScalar(r,l,H),H)}return void 0}function R(t,r,n){for(var i=e.subtract(r,t,Z),o=n.length,u=0;o>u;u++){var s=n[u].position,c=n[l.mod(u+1,o)].position;if(!(e.equals(t,s)||e.equals(r,c)||e.equals(t,c)||e.equals(r,s))){var f=e.subtract(c,s,X),d=I(t,i,s,f);if(a(d)&&!(e.equals(d,t)||e.equals(d,r)||e.equals(d,s)||e.equals(d,c))){var h=d.x,m=d.y,p=N(h,t.x,r.x)&&N(m,t.y,r.y)&&N(h,s.x,c.x)&&N(m,s.y,c.y);if(p)return!0}}}return!1}function C(t,r,n){var a=A(t,r,n);if(a>=0)return a;var i=A(r,t,n);return i>=0?i:a!==W||i!==W||R(n[t].position,n[r].position,n)||e.equals(n[t].position,n[r].position)?K:J}function z(e){return 0===_(1,2,0,e)}function D(e){var t=e.length;if(3===t)return z(e)?[]:[e[0].index,e[1].index,e[2].index];if(e.length<3)throw new i("Invalid polygon: must have at least three vertices.");for(var r,n,a=0,o=10*e.length,u=K;J>u&&a++<o;){for(r=M(e.length),n=r+1;Math.abs(r-n)<2||Math.abs(r-n)>e.length-2;)n=M(e.length);if(r>n){var s=r;r=n,n=s}u=C(r,n,e)}if(u===J){var c=e.splice(r,n-r+1,e[r],e[n]);return D(e).concat(D(c))}return u>=0?(e.splice(u,1),D(e)):[]}var L=new e,q=new e,U=new e,B=new e(1,0),F=new e,W=-1,G=-2,k=new t,V=new t,Y=new t,j=l.EPSILON14,H=new e;new e;var Z=new e,X=new e,J=-1,K=-2,Q=new t,$=new t,et={};et.removeDuplicates=function(e){var r=d.removeDuplicates(e);return t.equals(r[0],r[r.length-1])?r.slice(1):r},et.computeArea2D=function(e){for(var t=e.length,r=0,n=t-1,a=0;t>a;n=a++){var i=e[n],o=e[a];r+=i.x*o.y-o.x*i.y}return.5*r},et.computeWindingOrder2D=function(e){var t=et.computeArea2D(e);return t>0?p.COUNTER_CLOCKWISE:p.CLOCKWISE},et.triangulate=function(e){for(var t=e.length,r=[],n=0;t>n;++n)r[n]={position:e[n],index:n};return D(r)};var tt=new t,rt=new t,nt=new t,at=new t,it=new t,ot=new t,ut=new t;return et.computeSubdivision=function(e,i,o,u){u=n(u,l.RADIANS_PER_DEGREE);var f,d=o.slice(0),m=i.length,p=new Array(3*m),y=0;for(f=0;m>f;f++){var v=i[f];p[y++]=v.x,p[y++]=v.y,p[y++]=v.z}for(var g=[],w={},x=e.maximumRadius,E=l.chordLength(u,x),S=E*E;d.length>0;){var O,M,_=d.pop(),T=d.pop(),b=d.pop(),P=t.fromArray(p,3*b,tt),A=t.fromArray(p,3*T,rt),N=t.fromArray(p,3*_,nt),I=t.multiplyByScalar(t.normalize(P,at),x,at),R=t.multiplyByScalar(t.normalize(A,it),x,it),C=t.multiplyByScalar(t.normalize(N,ot),x,ot),z=t.magnitudeSquared(t.subtract(I,R,ut)),D=t.magnitudeSquared(t.subtract(R,C,ut)),L=t.magnitudeSquared(t.subtract(C,I,ut)),q=Math.max(z,D,L);q>S?z===q?(O=Math.min(b,T)+" "+Math.max(b,T),f=w[O],a(f)||(M=t.add(P,A,ut),t.multiplyByScalar(M,.5,M),p.push(M.x,M.y,M.z),f=p.length/3-1,w[O]=f),d.push(b,f,_),d.push(f,T,_)):D===q?(O=Math.min(T,_)+" "+Math.max(T,_),f=w[O],a(f)||(M=t.add(A,N,ut),t.multiplyByScalar(M,.5,M),p.push(M.x,M.y,M.z),f=p.length/3-1,w[O]=f),d.push(T,f,b),d.push(f,_,b)):L===q&&(O=Math.min(_,b)+" "+Math.max(_,b),f=w[O],a(f)||(M=t.add(N,P,ut),t.multiplyByScalar(M,.5,M),p.push(M.x,M.y,M.z),f=p.length/3-1,w[O]=f),d.push(_,f,T),d.push(f,b,T)):(g.push(b),g.push(T),g.push(_))}return new s({attributes:{position:new c({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:p})},indices:g,primitiveType:h.TRIANGLES})},et.scaleToGeodeticHeight=function(e,r,i,u){i=n(i,o.WGS84);var s=Q,c=$;if(r=n(r,0),u=n(u,!0),a(e)&&a(e.attributes)&&a(e.attributes.position))for(var l=e.attributes.position.values,f=l.length,d=0;f>d;d+=3)t.fromArray(l,d,c),u&&(c=i.scaleToGeodeticSurface(c,c)),s=i.geodeticSurfaceNormal(c,s),t.multiplyByScalar(s,r,s),t.add(c,s,c),l[d]=c.x,l[d+1]=c.y,l[d+2]=c.z;return e},et.eliminateHoles=function(e,r,a){a=n(a,o.WGS84);for(var i=[],u=0;u<r.length;u++){for(var s=[],c=0;c<r[u].length;c++)s.push(t.clone(r[u][c]));i.push(s)}for(var l=e;i.length>0;)l=O(l,i,a);return l},et}),define("Core/RectangleGeometryLibrary",["./Cartesian3","./Cartographic","./defined","./DeveloperError","./GeographicProjection","./Math","./Matrix2","./Rectangle"],function(e,t,r,n,a,i,o,u){"use strict";var s=Math.cos,c=Math.sin,l=Math.sqrt,f={};f.computePosition=function(e,t,n,a,i){var u=e.ellipsoid.radiiSquared,f=e.nwCorner,d=e.rectangle,h=f.latitude-e.granYCos*t+n*e.granXSin,m=s(h),p=c(h),y=u.z*p,v=f.longitude+t*e.granYSin+n*e.granXCos,g=m*s(v),w=m*c(v),x=u.x*g,E=u.y*w,S=l(x*g+E*w+y*p);a.x=x/S,a.y=E/S,a.z=y/S,r(e.vertexFormat)&&e.vertexFormat.st&&(i.x=(v-d.west)*e.lonScalar-.5,i.y=(h-d.south)*e.latScalar-.5,o.multiplyByVector(e.textureMatrix,i,i),i.x+=.5,i.y+=.5)};var d=new o,h=new e,m=new t,p=new e,y=new a;return f.computeOptions=function(t,a,s){var c,l,f,v,g,w=t._granularity,x=t._ellipsoid,E=t._surfaceHeight,S=t._rotation,O=t._extrudedHeight,M=a.east,_=a.west,T=a.north,b=a.south,P=T-b;_>M?(g=i.TWO_PI-_+M,c=Math.ceil(g/w)+1,l=Math.ceil(P/w)+1,f=g/(c-1),v=P/(l-1)):(g=M-_,c=Math.ceil(g/w)+1,l=Math.ceil(P/w)+1,f=g/(c-1),v=P/(l-1)),s=u.northwest(a,s);var A=u.center(a,m),N=v,I=f,R=0,C=0;if(r(S)){var z=Math.cos(S);N*=z,I*=z;var D=Math.sin(S);R=v*D,C=f*D,h=y.project(s,h),p=y.project(A,p),h=e.subtract(h,p,h);var L=o.fromRotation(S,d);h=o.multiplyByVector(L,h,h),h=e.add(h,p,h),s=y.unproject(h,s);var q=s.latitude,U=q+(c-1)*C,B=q-N*(l-1),F=q-N*(l-1)+(c-1)*C;T=Math.max(q,U,B,F),b=Math.min(q,U,B,F);var W=s.longitude,G=W+(c-1)*I,k=W+(l-1)*R,V=W+(l-1)*R+(c-1)*I;if(M=Math.max(W,G,k,V),_=Math.min(W,G,k,V),T<-i.PI_OVER_TWO||T>i.PI_OVER_TWO||b<-i.PI_OVER_TWO||b>i.PI_OVER_TWO)throw new n("Rotated extent is invalid.");a.north=T,a.south=b,a.east=M,a.west=_}return{granYCos:N,granYSin:R,granXCos:I,granXSin:C,ellipsoid:x,width:c,height:l,surfaceHeight:E,extrudedHeight:O,nwCorner:s,rectangle:a}},f}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(e,t,r,n){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.position=e(t.position,!1),this.normal=e(t.normal,!1),this.st=e(t.st,!1),this.binormal=e(t.binormal,!1),this.tangent=e(t.tangent,!1),this.color=e(t.color,!1)};return a.POSITION_ONLY=n(new a({position:!0})),a.POSITION_AND_NORMAL=n(new a({position:!0,normal:!0})),a.POSITION_NORMAL_AND_ST=n(new a({position:!0,normal:!0,st:!0})),a.POSITION_AND_ST=n(new a({position:!0,st:!0})),a.POSITION_AND_COLOR=n(new a({position:!0,color:!0})),a.ALL=n(new a({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),a.DEFAULT=a.POSITION_NORMAL_AND_ST,a.packedLength=6,a.pack=function(t,r,n){n=e(n,0),r[n++]=t.position?1:0,r[n++]=t.normal?1:0,r[n++]=t.st?1:0,r[n++]=t.binormal?1:0,r[n++]=t.tangent?1:0,r[n++]=t.color?1:0},a.unpack=function(r,n,i){return n=e(n,0),t(i)||(i=new a),i.position=1===r[n++],i.normal=1===r[n++],i.st=1===r[n++],i.binormal=1===r[n++],i.tangent=1===r[n++],i.color=1===r[n++],i},a.clone=function(e,r){return t(e)?(t(r)||(r=new a),r.position=e.position,r.normal=e.normal,r.st=e.st,r.binormal=e.binormal,r.tangent=e.tangent,r.color=e.color,r):void 0},a}),define("Core/RectangleGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./GeometryInstance","./GeometryPipeline","./IndexDatatype","./Math","./Matrix2","./Matrix3","./PolygonPipeline","./PrimitiveType","./Quaternion","./Rectangle","./RectangleGeometryLibrary","./VertexFormat"],function(e,t,r,n,a,i,o,u,s,c,l,f,d,h,m,p,y,v,g,w,x,E,S,O){"use strict";function M(e,t){var r=new c({attributes:new f,primitiveType:w.TRIANGLES});return r.attributes.position=new l({componentDatatype:a.DOUBLE,componentsPerAttribute:3,values:t.positions}),e.normal&&(r.attributes.normal=new l({componentDatatype:a.FLOAT,componentsPerAttribute:3,values:t.normals})),e.tangent&&(r.attributes.tangent=new l({componentDatatype:a.FLOAT,componentsPerAttribute:3,values:t.tangents})),e.binormal&&(r.attributes.binormal=new l({componentDatatype:a.FLOAT,componentsPerAttribute:3,values:t.binormals})),r}function _(e,t,n,a){for(var i=e.length,o=t.normal?new Float32Array(i):void 0,u=t.tangent?new Float32Array(i):void 0,s=t.binormal?new Float32Array(i):void 0,c=0,l=z,f=C,d=R,h=0;i>h;h+=3){var m=r.fromArray(e,h,I),p=c+1,y=c+2;(t.normal||t.tangent||t.binormal)&&(d=n.geodeticSurfaceNormal(m,d),(t.tangent||t.binormal)&&(r.cross(r.UNIT_Z,d,f),v.multiplyByVector(a,f,f),r.normalize(f,f),t.binormal&&r.normalize(r.cross(d,f,l),l)),t.normal&&(o[c]=d.x,o[p]=d.y,o[y]=d.z),t.tangent&&(u[c]=f.x,u[p]=f.y,u[y]=f.z),t.binormal&&(s[c]=l.x,s[p]=l.y,s[y]=l.z)),c+=3}return M(t,{positions:e,normals:o,tangents:u,binormals:s})}function T(e,t,n){for(var a=e.length,i=t.normal?new Float32Array(a):void 0,o=t.tangent?new Float32Array(a):void 0,u=t.binormal?new Float32Array(a):void 0,s=0,c=0,l=0,f=!0,d=z,h=C,m=R,y=0;a>y;y+=6){var v=r.fromArray(e,y,I);if(t.normal||t.tangent||t.binormal){var g=r.fromArray(e,(y+6)%a,B);if(f){var w=r.fromArray(e,(y+3)%a,F);r.subtract(g,v,g),r.subtract(w,v,w),m=r.normalize(r.cross(w,g,m),m),f=!1}r.equalsEpsilon(g,v,p.EPSILON10)&&(f=!0),(t.tangent||t.binormal)&&(d=n.geodeticSurfaceNormal(v,d),t.tangent&&(h=r.normalize(r.cross(d,m,h),h))),t.normal&&(i[s++]=m.x,i[s++]=m.y,i[s++]=m.z,i[s++]=m.x,i[s++]=m.y,i[s++]=m.z),t.tangent&&(o[c++]=h.x,o[c++]=h.y,o[c++]=h.z,o[c++]=h.x,o[c++]=h.y,o[c++]=h.z),t.binormal&&(u[l++]=d.x,u[l++]=d.y,u[l++]=d.z,u[l++]=d.x,u[l++]=d.y,u[l++]=d.z)}}return M(t,{positions:e,normals:i,tangents:o,binormals:u})}function b(e){for(var t=e.vertexFormat,r=e.ellipsoid,n=e.size,i=e.height,o=e.width,u=t.position?new Float64Array(3*n):void 0,s=t.st?new Float32Array(2*n):void 0,c=0,f=0,d=I,h=L,p=Number.MAX_VALUE,y=Number.MAX_VALUE,v=Number.MIN_VALUE,g=Number.MIN_VALUE,w=0;i>w;++w)for(var x=0;o>x;++x)S.computePosition(e,w,x,d,h),u[c++]=d.x,u[c++]=d.y,u[c++]=d.z,t.st&&(s[f++]=h.x,s[f++]=h.y,p=Math.min(p,h.x),y=Math.min(y,h.y),v=Math.max(v,h.x),g=Math.max(g,h.y));if(t.st&&(0>p||0>y||v>1||g>1))for(var E=0;E<s.length;E+=2)s[E]=(s[E]-p)/(v-p),s[E+1]=(s[E+1]-y)/(g-y);for(var O=_(u,t,r,e.tangentRotationMatrix),M=6*(o-1)*(i-1),T=m.createTypedArray(n,M),b=0,P=0,A=0;i-1>A;++A){for(var N=0;o-1>N;++N){var R=b,C=R+o,z=C+1,D=R+1;T[P++]=R,T[P++]=C,T[P++]=D,T[P++]=D,T[P++]=C,T[P++]=z,++b}++b}return O.indices=T,t.st&&(O.attributes.st=new l({componentDatatype:a.FLOAT,componentsPerAttribute:2,values:s})),O}function P(e,t,r,n,a){return e[t++]=n[r],e[t++]=n[r+1],e[t++]=n[r+2],e[t++]=a[r],e[t++]=a[r+1],e[t++]=a[r+2],e}function A(e,t,r,n){return e[t++]=n[r],e[t++]=n[r+1],e[t++]=n[r],e[t++]=n[r+1],e}function N(e){var t,n=e.vertexFormat,i=e.surfaceHeight,o=e.extrudedHeight,u=Math.min(o,i),s=Math.max(o,i),c=e.height,f=e.width,y=e.ellipsoid,v=b(e);if(p.equalsEpsilon(u,s,.1))return v;v=g.scaleToGeodeticHeight(v,s,y,!1);var w=new Float64Array(v.attributes.position.values),x=w.length,E=2*x,S=new Float64Array(E);S.set(w),v=g.scaleToGeodeticHeight(v,u,y);var O=v.attributes.position.values;S.set(O,x),v.attributes.position.values=S;var M,_=n.normal?new Float32Array(E):void 0,N=n.tangent?new Float32Array(E):void 0,I=n.binormal?new Float32Array(E):void 0,R=n.st?new Float32Array(2*(E/3)):void 0;if(n.normal){var C=v.attributes.normal.values;for(_.set(C),t=0;x>t;t++)C[t]=-C[t];_.set(C,x),v.attributes.normal.values=_}if(n.tangent){var z=v.attributes.tangent.values;for(N.set(z),t=0;x>t;t++)z[t]=-z[t];N.set(z,x),v.attributes.tangent.values=N}if(n.binormal){var D=v.attributes.binormal.values;I.set(D),I.set(D,x),v.attributes.binormal.values=I}n.st&&(M=v.attributes.st.values,R.set(M),R.set(M,2*(x/3)),v.attributes.st.values=R);var L=v.indices,q=L.length,U=x/3,W=m.createTypedArray(E/3,2*q);for(W.set(L),t=0;q>t;t+=3)W[t+q]=L[t+2]+U,W[t+1+q]=L[t+1]+U,W[t+2+q]=L[t]+U;v.indices=W;var G=2*f+2*c-4,k=2*(G+4),V=new Float64Array(3*k),Y=n.st?new Float32Array(2*k):void 0,j=0,H=0,Z=f*c;for(t=0;Z>t;t+=f)V=P(V,j,3*t,w,O),j+=6,n.st&&(Y=A(Y,H,2*t,M),H+=4);for(t=Z-f;Z>t;t++)V=P(V,j,3*t,w,O),j+=6,n.st&&(Y=A(Y,H,2*t,M),H+=4);for(t=Z-1;t>0;t-=f)V=P(V,j,3*t,w,O),j+=6,n.st&&(Y=A(Y,H,2*t,M),H+=4);for(t=f-1;t>=0;t--)V=P(V,j,3*t,w,O),j+=6,n.st&&(Y=A(Y,H,2*t,M),H+=4);var X=T(V,n,y);n.st&&(X.attributes.st=new l({componentDatatype:a.FLOAT,componentsPerAttribute:2,values:Y}));var J,K,Q,$,et=m.createTypedArray(k,6*G);x=V.length/3;var tt=0;for(t=0;x-1>t;t+=2){J=t,$=(J+2)%x;var rt=r.fromArray(V,3*J,B),nt=r.fromArray(V,3*$,F);r.equalsEpsilon(rt,nt,p.EPSILON10)||(K=(J+1)%x,Q=(K+2)%x,et[tt++]=J,et[tt++]=K,et[tt++]=$,et[tt++]=$,et[tt++]=K,et[tt++]=Q)}return X.indices=et,X=h.combineInstances([new d({geometry:v}),new d({geometry:X})]),X[0]}var I=new r,R=new r,C=new r,z=new r,D=new E,L=new t,q=new e,U=new e,B=new r,F=new r,W=function(e){e=i(e,i.EMPTY_OBJECT);var t=e.rectangle,r=i(e.granularity,p.RADIANS_PER_DEGREE),n=i(e.ellipsoid,s.WGS84),a=i(e.height,0),u=i(e.rotation,0),c=i(e.stRotation,0),l=i(e.vertexFormat,O.DEFAULT),f=e.extrudedHeight,d=o(f)&&Math.abs(a-f)>1,h=i(e.closeTop,!0),m=i(e.closeBottom,!0);this._rectangle=t,this._granularity=r,this._ellipsoid=s.clone(n),this._surfaceHeight=a,this._rotation=u,this._stRotation=c,this._vertexFormat=O.clone(l),this._extrudedHeight=i(f,0),this._extrude=d,this._closeTop=h,this._closeBottom=m,this._workerName="createRectangleGeometry"};W.packedLength=E.packedLength+s.packedLength+O.packedLength+8,W.pack=function(e,t,r){r=i(r,0),E.pack(e._rectangle,t,r),r+=E.packedLength,s.pack(e._ellipsoid,t,r),r+=s.packedLength,O.pack(e._vertexFormat,t,r),r+=O.packedLength,t[r++]=e._granularity,t[r++]=e._surfaceHeight,t[r++]=e._rotation,t[r++]=e._stRotation,t[r++]=e._extrudedHeight,t[r++]=e._extrude?1:0,t[r++]=e._closeTop?1:0,t[r]=e._closeBottom?1:0};var G=new E,k=s.clone(s.UNIT_SPHERE),V=new O,Y={rectangle:G,ellipsoid:k,vertexFormat:V,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,closeTop:void 0,closeBottom:void 0};W.unpack=function(e,t,r){t=i(t,0);var n=E.unpack(e,t,G);t+=E.packedLength;var a=s.unpack(e,t,k);t+=s.packedLength;var u=O.unpack(e,t,V);t+=O.packedLength;var c=e[t++],l=e[t++],f=e[t++],d=e[t++],h=e[t++],m=1===e[t++],p=1===e[t++],y=1===e[t];return o(r)?(r._rectangle=E.clone(n,r._rectangle),r._ellipsoid=s.clone(a,r._ellipsoid),r._vertexFormat=O.clone(u,r._vertexFormat),r._granularity=c,r._surfaceHeight=l,r._rotation=f,r._stRotation=d,r._extrudedHeight=m?h:void 0,r._extrude=m,r._closeTop=p,r._closeBottom=y,r):(Y.granularity=c,Y.height=l,Y.rotation=f,Y.stRotation=d,Y.extrudedHeight=m?h:void 0,Y.closeTop=p,Y.closeBottom=y,new W(Y))};var j=new y,H=new v,Z=new n,X=new x,J=new n;return W.createGeometry=function(t){var n=E.clone(t._rectangle,D),a=t._ellipsoid,i=t._surfaceHeight,u=t._extrude,s=t._extrudedHeight,l=t._stRotation,d=t._vertexFormat,h=S.computeOptions(t,n,Z),m=j,p=H;if(o(l)){y.fromRotation(-l,m);var w=E.center(n,J),O=a.cartographicToCartesian(w,B);r.normalize(O,O),x.fromAxisAngle(O,-l,X),v.fromQuaternion(X,p)}else y.clone(y.IDENTITY,m),v.clone(v.IDENTITY,p);h.lonScalar=1/n.width,h.latScalar=1/n.height,h.vertexFormat=d,h.textureMatrix=m,h.tangentRotationMatrix=p,h.size=h.width*h.height;var M,_;if(n=t._rectangle,u){M=N(h);var T=e.fromRectangle3D(n,a,i,U),P=e.fromRectangle3D(n,a,s,q);_=e.union(T,P)}else M=b(h),M=g.scaleToGeodeticHeight(M,i,a,!1),_=e.fromRectangle3D(n,a,i);return d.position||delete M.attributes.position,new c({attributes:new f(M.attributes),indices:M.indices,primitiveType:M.primitiveType,boundingSphere:_})},W}),define("Workers/createRectangleGeometry",["../Core/defined","../Core/Ellipsoid","../Core/Rectangle","../Core/RectangleGeometry"],function(e,t,r,n){"use strict";function a(a,i){return e(i)&&(a=n.unpack(a,i)),a._ellipsoid=t.clone(a._ellipsoid),a._rectangle=r.clone(a._rectangle),n.createGeometry(a)}return a})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createRectangleOutlineGeometry.js b/libs/Cesium/Workers/createRectangleOutlineGeometry.js new file mode 100644 index 0000000000..b5269d066c --- /dev/null +++ b/libs/Cesium/Workers/createRectangleOutlineGeometry.js @@ -0,0 +1,229 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[1&e];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(e){return e>0?1:0>e?-1:0},n.signNotZero=function(e){return 0>e?-1:1},n.toSNorm=function(e){return Math.round(255*(.5*n.clamp(e,-1,1)+.5))},n.fromSNorm=function(e){return 2*(n.clamp(e,0,255)/255)-1},n.sinh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t-n)},n.cosh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t+n)},n.lerp=function(e,t,n){return(1-n)*e+n*t},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(e){return e*n.RADIANS_PER_DEGREE},n.toDegrees=function(e){return e*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(e){var t=n.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},n.negativePiToPi=function(e){return n.zeroToTwoPi(e+n.PI)-n.PI},n.zeroToTwoPi=function(e){var t=n.mod(e,n.TWO_PI);return Math.abs(t)<n.EPSILON14&&Math.abs(e)>n.EPSILON14?n.TWO_PI:t},n.mod=function(e,t){return(e%t+t)%t},n.equalsEpsilon=function(e,n,r,a){a=t(a,r);var i=Math.abs(e-n);return a>=i||i<=r*Math.max(Math.abs(e),Math.abs(n))};var r=[1];n.factorial=function(e){var t=r.length;if(e>=t)for(var n=r[t-1],a=t;e>=a;a++)r.push(n*a);return r[e]},n.incrementWrap=function(e,n,r){return r=t(r,0),++e,e>n&&(e=r),e},n.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},n.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},n.clamp=function(e,t,n){return t>e?t:e>n?n:e};var a=new e;return n.setRandomNumberSeed=function(t){a=new e(t)},n.nextRandomNumber=function(){return a.random()},n.acosClamped=function(e){return Math.acos(n.clamp(e,-1,1))},n.asinClamped=function(e){return Math.asin(n.clamp(e,-1,1))},n.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0)};i.fromSpherical=function(n,r){t(r)||(r=new i);var a=n.clock,o=n.cone,u=e(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(a),r.y=s*Math.sin(a),r.z=u*Math.cos(o),r},i.fromElements=function(e,n,r,a){return t(a)?(a.x=e,a.y=n,a.z=r,a):new i(e,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n):new i(e.x,e.y,e.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r]=t.z},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i,c=new i;i.angleBetween=function(e,t){i.normalize(e,s),i.normalize(t,c);var n=i.dot(s,c),r=i.magnitude(i.cross(s,c,s));return Math.atan2(r,n)};var l=new i;i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Z,t):n.y<=n.z?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_Z,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)},i.cross=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=t.x,u=t.y,s=t.z,c=a*s-i*u,l=i*o-r*s,f=r*u-a*o;return n.x=c,n.y=l,n.z=f,n},i.fromDegrees=function(e,t,n,r,o){var u=a.toRadians(e),s=a.toRadians(t);return i.fromRadians(u,s,n,r,o)};var f=new i,d=new i,h=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(n,r,a,o,u){a=e(a,0);var s=t(o)?o.radiiSquared:h,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=i.normalize(f,f),i.multiplyComponents(s,f,d);var l=Math.sqrt(i.dot(f,d));return d=i.divideByScalar(d,l,d),f=i.multiplyByScalar(f,a,f),t(u)||(u=new i),i.add(d,f,u)},i.fromDegreesArray=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=a.toRadians(e[o]);return i.fromRadiansArray(r,t,n)},i.fromRadiansArray=function(e,n,r){var a=e.length;t(r)?r.length=a/2:r=new Array(a/2);for(var o=0;a>o;o+=2){var u=e[o],s=e[o+1];r[o/2]=i.fromRadians(u,s,0,n,r[o/2])}return r},i.fromDegreesArrayHeights=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o+=3)r[o]=a.toRadians(e[o]),r[o+1]=a.toRadians(e[o+1]),r[o+2]=e[o+2];return i.fromRadiansArrayHeights(r,t,n)},i.fromRadiansArrayHeights=function(e,n,r){var a=e.length;t(r)?r.length=a/3:r=new Array(a/3);for(var o=0;a>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];r[o/3]=i.fromRadians(u,s,c,n,r[o/3])}return r},i.ZERO=r(new i(0,0,0)),i.UNIT_X=r(new i(1,0,0)),i.UNIT_Y=r(new i(0,1,0)),i.UNIT_Z=r(new i(0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.longitude=e(t,0),this.latitude=e(n,0),this.height=e(r,0)};return i.fromRadians=function(n,r,a,o){return a=e(a,0),t(o)?(o.longitude=n,o.latitude=r,o.height=a,o):new i(n,r,a)},i.fromDegrees=function(e,t,n,r){return e=a.toRadians(e),t=a.toRadians(t),i.fromRadians(e,t,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.longitude=e.longitude,n.latitude=e.latitude,n.height=e.height,n):new i(e.longitude,e.latitude,e.height):void 0},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.longitude===n.longitude&&e.latitude===n.latitude&&e.height===n.height},i.equalsEpsilon=function(e,n,r){return e===n||t(e)&&t(n)&&Math.abs(e.longitude-n.longitude)<=r&&Math.abs(e.latitude-n.latitude)<=r&&Math.abs(e.height-n.height)<=r},i.ZERO=r(new i(0,0,0)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),n=Object.defineProperties;return t&&e(n)||(n=function(e){return e}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(t,r,a,i){r=n(r,0),a=n(a,0),i=n(i,0),t._radii=new e(r,a,i),t._radiiSquared=new e(r*r,a*a,i*i),t._radiiToTheFourth=new e(r*r*r*r,a*a*a*a,i*i*i*i),t._oneOverRadii=new e(0===r?0:1/r,0===a?0:1/a,0===i?0:1/i),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===a?0:1/(a*a),0===i?0:1/(i*i)),t._minimumRadius=Math.min(r,a,i),t._maximumRadius=Math.max(r,a,i),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,n)};a(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,n){if(!r(t))return void 0;var a=t._radii;return r(n)?(e.clone(a,n._radii),e.clone(t._radiiSquared,n._radiiSquared),e.clone(t._radiiToTheFourth,n._radiiToTheFourth),e.clone(t._oneOverRadii,n._oneOverRadii),e.clone(t._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=t._minimumRadius,n._maximumRadius=t._maximumRadius,n._centerToleranceSquared=t._centerToleranceSquared,n):new c(a.x,a.y,a.z)},c.fromCartesian3=function(e,t){return r(t)||(t=new c),r(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,r,a){a=n(a,0),e.pack(t._radii,r,a)},c.unpack=function(t,r,a){r=n(r,0);var i=e.unpack(t,r);return c.fromCartesian3(i,a)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,n){var a=t.longitude,i=t.latitude,o=Math.cos(i),u=o*Math.cos(a),s=o*Math.sin(a),c=Math.sin(i);return r(n)||(n=new e),n.x=u,n.y=s,n.z=c,e.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(t,n){return r(n)||(n=new e),n=e.multiplyComponents(t,this._oneOverRadiiSquared,n),e.normalize(n,n)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,n){var a=l,i=f;this.geodeticSurfaceNormalCartographic(t,a),e.multiplyComponents(this._radiiSquared,a,i);var o=Math.sqrt(e.dot(a,i));return e.divideByScalar(i,o,i),e.multiplyByScalar(a,t.height,a),r(n)||(n=new e),e.add(i,a,n)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;a++)t[a]=this.cartographicToCartesian(e[a],t[a]);return t};var d=new e,h=new e,m=new e;c.prototype.cartesianToCartographic=function(n,a){var i=this.scaleToGeodeticSurface(n,h);if(!r(i))return void 0;var o=this.geodeticSurfaceNormal(i,d),s=e.subtract(n,i,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,n))*e.magnitude(s);return r(a)?(a.longitude=c,a.latitude=l,a.height=f,a):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;++a)t[a]=this.cartesianToCartographic(e[a],t[a]);return t};var p=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,n){var a=t.x,i=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,d=a*a*c*c,h=i*i*l*l,m=o*o*f*f,v=d+h+m,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,p);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,n):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,M=x.z,_=y;_.x=2*w.x*E,_.y=2*w.y*S,_.z=2*w.z*M;var O,T,R,P,C,N,I,z,b,A,D,q=(1-g)*e.magnitude(t)/(.5*e.magnitude(_)),U=0;do{q-=U,R=1/(1+q*E),P=1/(1+q*S),C=1/(1+q*M),N=R*R,I=P*P,z=C*C,b=N*R,A=I*P,D=z*C,O=d*N+h*I+m*z-1,T=d*b*E+h*A*S+m*D*M;var L=-2*T;U=O/L}while(Math.abs(O)>u.EPSILON12);return r(n)?(n.x=a*R,n.y=i*P,n.z=o*C,n):new e(a*R,i*P,o*C)},c.prototype.scaleToGeocentricSurface=function(t,n){r(n)||(n=new e);var a=t.x,i=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(a*a*u.x+i*i*u.y+o*o*u.z);return e.multiplyByScalar(t,s,n)},c.prototype.transformPositionToScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._radii,n)},c.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.west=t(e,0),this.south=t(n,0),this.east=t(r,0),this.north=t(a,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.west,n[r++]=e.south,n[r++]=e.east,n[r]=e.north},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.west=e[r++],a.south=e[r++],a.east=e[r++],a.north=e[r],a},s.computeWidth=function(e){var t=e.east,n=e.west;return n>t&&(t+=u.TWO_PI),t-n},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,r,a,i,o){return e=u.toRadians(t(e,0)),r=u.toRadians(t(r,0)),a=u.toRadians(t(a,0)),i=u.toRadians(t(i,0)),n(o)?(o.west=e,o.south=r,o.east=a,o.north=i,o):new s(e,r,a,i)},s.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,a=-Number.MAX_VALUE,i=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];r=Math.min(r,l.longitude),a=Math.max(a,l.longitude),i=Math.min(i,l.latitude),o=Math.max(o,l.latitude)}return n(t)?(t.west=r,t.south=i,t.east=a,t.north=o,t):new s(r,i,a,o)},s.clone=function(e,t){return n(e)?n(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return n(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},s.northwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},s.northeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},s.southeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},s.center=function(t,r){var a=t.east,i=t.west;i>a&&(a+=u.TWO_PI);var o=u.negativePiToPi(.5*(i+a)),s=.5*(t.south+t.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new e(o,s)},s.intersection=function(e,t,r){var a=e.east,i=e.west,o=t.east,c=t.west;i>a&&o>0?a+=u.TWO_PI:c>o&&a>0&&(o+=u.TWO_PI),i>a&&0>c?c+=u.TWO_PI:c>o&&0>i&&(i+=u.TWO_PI);var l=u.negativePiToPi(Math.max(i,c)),f=u.negativePiToPi(Math.min(a,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var d=Math.max(e.south,t.south),h=Math.min(e.north,t.north);return d>=h?void 0:n(r)?(r.west=l,r.south=d,r.east=f,r.north=h,r):new s(l,d,f,h)},s.contains=function(e,t){var n=t.longitude,r=t.latitude,a=e.west,i=e.east;return a>i&&(i+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>a||u.equalsEpsilon(n,a,u.EPSILON14))&&(i>n||u.equalsEpsilon(n,i,u.EPSILON14))&&r>=e.south&&r<=e.north};var c=new e;return s.subsample=function(e,r,a,o){r=t(r,i.WGS84),a=t(a,0),n(o)||(o=[]);var l=0,f=e.north,d=e.south,h=e.east,m=e.west,p=c;p.height=a,p.longitude=m,p.latitude=f,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=d,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=0>f?f:d>0?d:0;for(var y=1;8>y;++y)p.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,p)&&(o[l]=r.cartographicToCartesian(p,o[l]),l++);return 0===p.latitude&&(p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},n=function(n,r){e(t[n])||(t[n]=!0,console.log(r))};return n}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,n,r,a,i,o){"use strict";var u=function(e){this._ellipsoid=n(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return a(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,n){var a=this._semimajorAxis,i=t.longitude*a,o=t.latitude*a,u=t.height;return r(n)?(n.x=i,n.y=o,n.z=u,n):new e(i,o,u)},u.prototype.unproject=function(e,n){var a=this._oneOverSemimajorAxis,i=e.x*a,o=e.y*a,u=e.z;return r(n)?(n.longitude=i,n.latitude=o,n.height=u,n):new t(i,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,n){this.start=e(t,0),this.stop=e(n,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r,a){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0),this.w=e(a,0)};i.fromElements=function(e,n,r,a,o){return t(o)?(o.x=e,o.y=n,o.z=r,o.w=a,o):new i(e,n,r,a)},i.fromColor=function(e,n){return t(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new i(e.red,e.green,e.blue,e.alpha)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new i(e.x,e.y,e.z,e.w):void 0},i.packedLength=4,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r++]=t.z,n[r]=t.w},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r++],a.w=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,s);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?n.x<=n.w?i.clone(i.UNIT_X,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t):n.y<=n.z?n.y<=n.w?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)&&a.equalsEpsilon(e.w,n.w,r,i)},i.ZERO=r(new i(0,0,0,0)),i.UNIT_X=r(new i(1,0,0,0)),i.UNIT_Y=r(new i(0,1,0,0)),i.UNIT_Z=r(new i(0,0,1,0)),i.UNIT_W=r(new i(0,0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i){"use strict";function o(e){for(var t=0,n=0;9>n;++n){var r=e[n];t+=r*r}return Math.sqrt(t)}function u(e){for(var t=0,n=0;3>n;++n){var r=e[c.getElementIndex(h[n],d[n])];t+=2*r*r}return Math.sqrt(t)}function s(e,t){for(var n=i.EPSILON15,r=0,a=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(h[o],d[o])]);u>r&&(a=o,r=u)}var s=1,l=0,f=d[a],m=h[a];if(Math.abs(e[c.getElementIndex(m,f)])>n){var p,y=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(m,f)],w=(y-v)/2/g;p=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+p*p),l=p*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,f)]=l,t[c.getElementIndex(f,m)]=-l,t}var c=function(e,n,r,a,i,o,u,s,c){this[0]=t(e,0),this[1]=t(a,0),this[2]=t(u,0),this[3]=t(n,0),this[4]=t(i,0),this[5]=t(s,0),this[6]=t(r,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r++]=e[7],n[r++]=e[8]},c.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r++],a[1]=e[r++],a[2]=e[r++],a[3]=e[r++],a[4]=e[r++],a[5]=e[r++],a[6]=e[r++],a[7]=e[r++],a[8]=e[r++],a},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r],a[1]=e[r+1],a[2]=e[r+2],a[3]=e[r+3],a[4]=e[r+4],a[5]=e[r+5],a[6]=e[r+6],a[7]=e[r+7],a[8]=e[r+8],a},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var r=e.x*e.x,a=e.x*e.y,i=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,d=e.z*e.w,h=e.w*e.w,m=r-u-f+h,p=2*(a-d),y=2*(i+l),v=2*(a+d),g=-r+u-f+h,w=2*(s-o),x=2*(i-l),E=2*(s+o),S=-r-u+f+h;return n(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=p,t[4]=g,t[5]=E,t[6]=y,t[7]=w,t[8]=S,t):new c(m,p,y,v,g,w,x,E,S)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return n(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=a,t[6]=0,t[7]=-a,t[8]=r,t):new c(1,0,0,0,r,-a,0,a,r)},c.fromRotationY=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=0,t[2]=-a,t[3]=0,t[4]=1,t[5]=0,t[6]=a,t[7]=0,t[8]=r,t):new c(r,0,a,0,1,0,-a,0,r)},c.fromRotationZ=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=a,t[2]=0,t[3]=-a,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(r,-a,0,a,r,0,0,0,1)},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,n){var r=3*t,a=e[r],i=e[r+1],o=e[r+2];return n.x=a,n.y=i,n.z=o,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=3*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r},c.getRow=function(e,t,n){var r=e[t],a=e[t+3],i=e[t+6];return n.x=r,n.y=a,n.z=i,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+3]=n.y,r[t+6]=n.z,r};var l=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),n};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,n){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],a=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],i=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=r,n[1]=a,n[2]=i,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[3]*a+e[6]*i,u=e[1]*r+e[4]*a+e[7]*i,s=e[2]*r+e[5]*a+e[8]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n},c.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var n=e[0],r=e[3],a=e[6],i=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=n,t[1]=r,t[2]=a,t[3]=i,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var d=[1,0,0],h=[2,2,1],m=new c,p=new c;return c.computeEigenDecomposition=function(e,t){var r=i.EPSILON20,a=10,l=0,f=0;n(t)||(t={});for(var d=t.unitary=c.clone(c.IDENTITY,t.unitary),h=t.diagonal=c.clone(e,t.diagonal),y=r*o(h);a>f&&u(h)>y;)s(h,m),c.transpose(m,p),c.multiply(h,m,h),c.multiply(p,h,h),c.multiply(d,m,d),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],n=e[3],r=e[6],a=e[1],i=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(i*c-s*o)+a*(s*r-n*c)+u*(n*o-i*r)},c.inverse=function(e,t){var n=e[0],a=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],d=e[7],h=e[8],m=c.determinant(e);if(Math.abs(m)<=i.EPSILON15)throw new r("matrix is not invertible");t[0]=s*h-d*l,t[1]=d*o-a*h,t[2]=a*l-s*o,t[3]=f*l-u*h,t[4]=n*h-f*o,t[5]=u*o-n*l,t[6]=u*d-f*s,t[7]=f*a-n*d,t[8]=n*s-u*a;var p=1/m;return c.multiplyByScalar(t,p,t)},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},c.IDENTITY=a(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,n,r,a,i,o,u,s){"use strict"; +var c=function(e,t,r,a,i,o,u,s,c,l,f,d,h,m,p,y){this[0]=n(e,0),this[1]=n(i,0),this[2]=n(c,0),this[3]=n(h,0),this[4]=n(t,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(p,0),this[12]=n(a,0),this[13]=n(s,0),this[14]=n(d,0),this[15]=n(y,0)};c.packedLength=16,c.pack=function(e,t,r){r=n(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},c.unpack=function(e,t,a){return t=n(t,0),r(a)||(a=new c),a[0]=e[t++],a[1]=e[t++],a[2]=e[t++],a[3]=e[t++],a[4]=e[t++],a[5]=e[t++],a[6]=e[t++],a[7]=e[t++],a[8]=e[t++],a[9]=e[t++],a[10]=e[t++],a[11]=e[t++],a[12]=e[t++],a[13]=e[t++],a[14]=e[t++],a[15]=e[t],a},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,a,i){return a=n(a,e.ZERO),r(i)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=0,i[4]=t[3],i[5]=t[4],i[6]=t[5],i[7]=0,i[8]=t[6],i[9]=t[7],i[10]=t[8],i[11]=0,i[12]=a.x,i[13]=a.y,i[14]=a.z,i[15]=1,i):new c(t[0],t[3],t[6],a.x,t[1],t[4],t[7],a.y,t[2],t[5],t[8],a.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,n,a){r(a)||(a=new c);var i=n.x,o=n.y,u=n.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,d=t.x*t.w,h=t.y*t.y,m=t.y*t.z,p=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-h-y+g,x=2*(l-v),E=2*(f+p),S=2*(l+v),M=-s+h-y+g,_=2*(m-d),O=2*(f-p),T=2*(m+d),R=-s-h+y+g;return a[0]=w*i,a[1]=S*i,a[2]=O*i,a[3]=0,a[4]=x*o,a[5]=M*o,a[6]=T*o,a[7]=0,a[8]=E*u,a[9]=_*u,a[10]=R*u,a[11]=0,a[12]=e.x,a[13]=e.y,a[14]=e.z,a[15]=1,a},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,d=new e;c.fromCamera=function(t,n){var a=t.eye,i=t.target,o=t.up;e.normalize(e.subtract(i,a,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,d),d);var u=f.x,s=f.y,h=f.z,m=l.x,p=l.y,y=l.z,v=d.x,g=d.y,w=d.z,x=a.x,E=a.y,S=a.z,M=u*-x+s*-E+h*-S,_=v*-x+g*-E+w*-S,O=m*x+p*E+y*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=g,n[6]=-p,n[7]=0,n[8]=h,n[9]=w,n[10]=-y,n[11]=0,n[12]=M,n[13]=_,n[14]=O,n[15]=1,n):new c(u,s,h,M,v,g,w,_,-m,-p,-y,O,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,n,r,a){var i=Math.tan(.5*e),o=1/i,u=o/t,s=(r+n)/(n-r),c=2*r*n/(n-r);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=o,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=s,a[11]=-1,a[12]=0,a[13]=0,a[14]=c,a[15]=0,a},c.computeOrthographicOffCenter=function(e,t,n,r,a,i,o){var u=1/(t-e),s=1/(r-n),c=1/(i-a),l=-(t+e)*u,f=-(r+n)*s,d=-(i+a)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=d,o[15]=1,o},c.computePerspectiveOffCenter=function(e,t,n,r,a,i,o){var u=2*a/(t-e),s=2*a/(r-n),c=(t+e)/(t-e),l=(r+n)/(r-n),f=-(i+a)/(i-a),d=-1,h=-2*i*a/(i-a);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=d,o[12]=0,o[13]=0,o[14]=h,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,n,r,a,i){var o=2*a/(t-e),u=2*a/(r-n),s=(t+e)/(t-e),c=(r+n)/(r-n),l=-1,f=-1,d=-2*a;return i[0]=o,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=u,i[6]=0,i[7]=0,i[8]=s,i[9]=c,i[10]=l,i[11]=f,i[12]=0,i[13]=0,i[14]=d,i[15]=0,i},c.computeViewportTransformation=function(e,t,r,a){e=n(e,n.EMPTY_OBJECT);var i=n(e.x,0),o=n(e.y,0),u=n(e.width,0),s=n(e.height,0);t=n(t,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-t),d=c,h=l,m=f,p=i+c,y=o+l,v=t+f,g=1;return a[0]=d,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=h,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=m,a[11]=0,a[12]=p,a[13]=y,a[14]=v,a[15]=g,a},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,n){var r=4*t,a=e[r],i=e[r+1],o=e[r+2],u=e[r+3];return n.x=a,n.y=i,n.z=o,n.w=u,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=4*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r[a+3]=n.w,r},c.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n},c.getRow=function(e,t,n){var r=e[t],a=e[t+4],i=e[t+8],o=e[t+12];return n.x=r,n.y=a,n.z=i,n.w=o,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+4]=n.y,r[t+8]=n.z,r[t+12]=n.w,r};var h=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],h)),n.y=e.magnitude(e.fromElements(t[4],t[5],t[6],h)),n.z=e.magnitude(e.fromElements(t[8],t[9],t[10],h)),n};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],d=e[9],h=e[10],m=e[11],p=e[12],y=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],M=t[4],_=t[5],O=t[6],T=t[7],R=t[8],P=t[9],C=t[10],N=t[11],I=t[12],z=t[13],b=t[14],A=t[15],D=r*w+u*x+f*E+p*S,q=a*w+s*x+d*E+y*S,U=i*w+c*x+h*E+v*S,L=o*w+l*x+m*E+g*S,B=r*M+u*_+f*O+p*T,W=a*M+s*_+d*O+y*T,F=i*M+c*_+h*O+v*T,G=o*M+l*_+m*O+g*T,k=r*R+u*P+f*C+p*N,j=a*R+s*P+d*C+y*N,Y=i*R+c*P+h*C+v*N,H=o*R+l*P+m*C+g*N,V=r*I+u*z+f*b+p*A,X=a*I+s*z+d*b+y*A,Z=i*I+c*z+h*b+v*A,J=o*I+l*z+m*b+g*A;return n[0]=D,n[1]=q,n[2]=U,n[3]=L,n[4]=B,n[5]=W,n[6]=F,n[7]=G,n[8]=k,n[9]=j,n[10]=Y,n[11]=H,n[12]=V,n[13]=X,n[14]=Z,n[15]=J,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},c.multiplyTransformation=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=e[12],h=e[13],m=e[14],p=t[0],y=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],M=t[10],_=t[12],O=t[13],T=t[14],R=r*p+o*y+c*v,P=a*p+u*y+l*v,C=i*p+s*y+f*v,N=r*g+o*w+c*x,I=a*g+u*w+l*x,z=i*g+s*w+f*x,b=r*E+o*S+c*M,A=a*E+u*S+l*M,D=i*E+s*S+f*M,q=r*_+o*O+c*T+d,U=a*_+u*O+l*T+h,L=i*_+s*O+f*T+m;return n[0]=R,n[1]=P,n[2]=C,n[3]=0,n[4]=N,n[5]=I,n[6]=z,n[7]=0,n[8]=b,n[9]=A,n[10]=D,n[11]=0,n[12]=q,n[13]=U,n[14]=L,n[15]=1,n},c.multiplyByMatrix3=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=t[0],h=t[1],m=t[2],p=t[3],y=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=r*d+o*h+c*m,S=a*d+u*h+l*m,M=i*d+s*h+f*m,_=r*p+o*y+c*v,O=a*p+u*y+l*v,T=i*p+s*y+f*v,R=r*g+o*w+c*x,P=a*g+u*w+l*x,C=i*g+s*w+f*x;return n[0]=E,n[1]=S,n[2]=M,n[3]=0,n[4]=_,n[5]=O,n[6]=T,n[7]=0,n[8]=R,n[9]=P,n[10]=C,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n},c.multiplyByTranslation=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=r*e[0]+a*e[4]+i*e[8]+e[12],u=r*e[1]+a*e[5]+i*e[9]+e[13],s=r*e[2]+a*e[6]+i*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=o,n[13]=u,n[14]=s,n[15]=e[15],n};var p=new e;c.multiplyByUniformScale=function(e,t,n){return p.x=t,p.y=t,p.z=t,c.multiplyByScale(e,p,n)},c.multiplyByScale=function(e,t,n){var r=t.x,a=t.y,i=t.z;return 1===r&&1===a&&1===i?c.clone(e,n):(n[0]=r*e[0],n[1]=r*e[1],n[2]=r*e[2],n[3]=0,n[4]=a*e[4],n[5]=a*e[5],n[6]=a*e[6],n[7]=0,n[8]=i*e[8],n[9]=i*e[9],n[10]=i*e[10],n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=1,n)},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=t.w,u=e[0]*r+e[4]*a+e[8]*i+e[12]*o,s=e[1]*r+e[5]*a+e[9]*i+e[13]*o,c=e[2]*r+e[6]*a+e[10]*i+e[14]*o,l=e[3]*r+e[7]*a+e[11]*i+e[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i,u=e[1]*r+e[5]*a+e[9]*i,s=e[2]*r+e[6]*a+e[10]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i+e[12],u=e[1]*r+e[5]*a+e[9]*i+e[13],s=e[2]*r+e[6]*a+e[10]*i+e[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var n=e[1],r=e[2],a=e[3],i=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=i,t[10]=e[10],t[11]=e[14],t[12]=a,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,n){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;var r=e[0],a=e[4],i=e[8],l=e[12],f=e[1],d=e[5],h=e[9],m=e[13],p=e[2],x=e[6],E=e[10],S=e[14],M=e[3],_=e[7],O=e[11],T=e[15],R=E*T,P=S*O,C=x*T,N=S*_,I=x*O,z=E*_,b=p*T,A=S*M,D=p*O,q=E*M,U=p*_,L=x*M,B=R*d+N*h+I*m-(P*d+C*h+z*m),W=P*f+b*h+q*m-(R*f+A*h+D*m),F=C*f+A*d+U*m-(N*f+b*d+L*m),G=z*f+D*d+L*h-(I*f+q*d+U*h),k=P*a+C*i+z*l-(R*a+N*i+I*l),j=R*r+A*i+D*l-(P*r+b*i+q*l),Y=N*r+b*a+L*l-(C*r+A*a+U*l),H=I*r+q*a+U*i-(z*r+D*a+L*i);R=i*m,P=l*h,C=a*m,N=l*d,I=a*h,z=i*d,b=r*m,A=l*f,D=r*h,q=i*f,U=r*d,L=a*f;var V=R*_+N*O+I*T-(P*_+C*O+z*T),X=P*M+b*O+q*T-(R*M+A*O+D*T),Z=C*M+A*_+U*T-(N*M+b*_+L*T),J=z*M+D*_+L*O-(I*M+q*_+U*O),K=C*E+z*S+P*x-(I*S+R*x+N*E),Q=D*S+R*p+A*E-(b*E+q*S+P*p),$=b*x+L*S+N*p-(U*S+C*p+A*x),et=U*E+I*p+q*x-(D*x+L*E+z*p),tt=r*B+a*W+i*F+l*G;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,n[0]=B*tt,n[1]=W*tt,n[2]=F*tt,n[3]=G*tt,n[4]=k*tt,n[5]=j*tt,n[6]=Y*tt,n[7]=H*tt,n[8]=V*tt,n[9]=X*tt,n[10]=Z*tt,n[11]=J*tt,n[12]=K*tt,n[13]=Q*tt,n[14]=$*tt,n[15]=et*tt,n},c.inverseTransformation=function(e,t){var n=e[0],r=e[1],a=e[2],i=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],d=e[13],h=e[14],m=-n*f-r*d-a*h,p=-i*f-o*d-u*h,y=-s*f-c*d-l*h;return t[0]=n,t[1]=i,t[2]=s,t[3]=0,t[4]=r,t[5]=o,t[6]=c,t[7]=0,t[8]=a,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=p,t[14]=y,t[15]=1,t},c.IDENTITY=i(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var a=function(t,n){this.normal=e.clone(t),this.distance=n};a.fromPointNormal=function(n,r,i){var o=-e.dot(r,n);return t(i)?(e.clone(r,i.normal),i.distance=o,i):new a(r,o)};var i=new e;return a.fromCartesian4=function(n,r){var o=e.fromCartesian4(n,i),u=n.w;return t(r)?(e.clone(o,r.normal),r.distance=u,r):new a(o,u)},a.getPointDistance=function(t,n){return e.dot(t.normal,n)+t.distance},a.ORIGIN_XY_PLANE=r(new a(e.UNIT_Z,0)),a.ORIGIN_YZ_PLANE=r(new a(e.UNIT_X,0)),a.ORIGIN_ZX_PLANE=r(new a(e.UNIT_Y,0)),a}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,n,r,a,i,o,u,s,c,l,f,d){"use strict";var h=function(t,r){this.center=e.clone(n(t,e.ZERO)),this.radius=n(r,0)},m=new e,p=new e,y=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,M=new e,_=new e,O=new e;h.fromPoints=function(t,n){if(r(n)||(n=new h),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;for(var a=e.clone(t[0],x),i=e.clone(a,m),o=e.clone(a,p),u=e.clone(a,y),s=e.clone(a,v),c=e.clone(a,g),l=e.clone(a,w),f=t.length,d=1;f>d;d++){e.clone(t[d],a);var T=a.x,R=a.y,P=a.z;T<i.x&&e.clone(a,i),T>s.x&&e.clone(a,s),R<o.y&&e.clone(a,o),R>c.y&&e.clone(a,c),P<u.z&&e.clone(a,u),P>l.z&&e.clone(a,l)}var C=e.magnitudeSquared(e.subtract(s,i,E)),N=e.magnitudeSquared(e.subtract(c,o,E)),I=e.magnitudeSquared(e.subtract(l,u,E)),z=i,b=s,A=C;N>A&&(A=N,z=o,b=c),I>A&&(A=I,z=u,b=l);var D=S;D.x=.5*(z.x+b.x),D.y=.5*(z.y+b.y),D.z=.5*(z.z+b.z);var q=e.magnitudeSquared(e.subtract(b,D,E)),U=Math.sqrt(q),L=M;L.x=i.x,L.y=o.y,L.z=u.z;var B=_;B.x=s.x,B.y=c.y,B.z=l.z;var W=e.multiplyByScalar(e.add(L,B,E),.5,O),F=0;for(d=0;f>d;d++){e.clone(t[d],a);var G=e.magnitude(e.subtract(a,W,E));G>F&&(F=G);var k=e.magnitudeSquared(e.subtract(a,D,E));if(k>q){var j=Math.sqrt(k);U=.5*(U+j),q=U*U;var Y=j-U;D.x=(U*D.x+Y*a.x)/j,D.y=(U*D.y+Y*a.y)/j,D.z=(U*D.z+Y*a.z)/j}}return F>U?(e.clone(D,n.center),n.radius=U):(e.clone(W,n.center),n.radius=F),n};var T=new u,R=new e,P=new e,C=new t,N=new t;h.fromRectangle2D=function(e,t,n){return h.fromRectangleWithHeights2D(e,t,0,0,n)},h.fromRectangleWithHeights2D=function(t,a,i,o,u){if(r(u)||(u=new h),!r(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;a=n(a,T),d.southwest(t,C),C.height=i,d.northeast(t,N),N.height=o;var s=a.project(C,R),c=a.project(N,P),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var p=u.center;return p.x=s.x+.5*l,p.y=s.y+.5*f,p.z=s.z+.5*m,u};var I=[];h.fromRectangle3D=function(e,t,a,i){t=n(t,o.WGS84),a=n(a,0);var u;return r(e)&&(u=d.subsample(e,t,a,I)),h.fromPoints(u,i)},h.fromVertices=function(t,a,i,o){if(r(o)||(o=new h),!r(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;a=n(a,e.ZERO),i=n(i,3);var u=x;u.x=t[0]+a.x,u.y=t[1]+a.y,u.z=t[2]+a.z;for(var s=e.clone(u,m),c=e.clone(u,p),l=e.clone(u,y),f=e.clone(u,v),d=e.clone(u,g),T=e.clone(u,w),R=t.length,P=0;R>P;P+=i){var C=t[P]+a.x,N=t[P+1]+a.y,I=t[P+2]+a.z;u.x=C,u.y=N,u.z=I,C<s.x&&e.clone(u,s),C>f.x&&e.clone(u,f),N<c.y&&e.clone(u,c),N>d.y&&e.clone(u,d),I<l.z&&e.clone(u,l),I>T.z&&e.clone(u,T)}var z=e.magnitudeSquared(e.subtract(f,s,E)),b=e.magnitudeSquared(e.subtract(d,c,E)),A=e.magnitudeSquared(e.subtract(T,l,E)),D=s,q=f,U=z;b>U&&(U=b,D=c,q=d),A>U&&(U=A,D=l,q=T);var L=S;L.x=.5*(D.x+q.x),L.y=.5*(D.y+q.y),L.z=.5*(D.z+q.z);var B=e.magnitudeSquared(e.subtract(q,L,E)),W=Math.sqrt(B),F=M;F.x=s.x,F.y=c.y,F.z=l.z;var G=_;G.x=f.x,G.y=d.y,G.z=T.z;var k=e.multiplyByScalar(e.add(F,G,E),.5,O),j=0;for(P=0;R>P;P+=i){u.x=t[P]+a.x,u.y=t[P+1]+a.y,u.z=t[P+2]+a.z;var Y=e.magnitude(e.subtract(u,k,E));Y>j&&(j=Y);var H=e.magnitudeSquared(e.subtract(u,L,E));if(H>B){var V=Math.sqrt(H);W=.5*(W+V),B=W*W;var X=V-W;L.x=(W*L.x+X*u.x)/V,L.y=(W*L.y+X*u.y)/V,L.z=(W*L.z+X*u.z)/V}}return j>W?(e.clone(L,o.center),o.radius=W):(e.clone(k,o.center),o.radius=j),o},h.fromCornerPoints=function(t,n,a){r(a)||(a=new h);var i=a.center;return e.add(t,n,i),e.multiplyByScalar(i,.5,i),a.radius=e.distance(i,n),a},h.fromEllipsoid=function(t,n){return r(n)||(n=new h),e.clone(e.ZERO,n.center),n.radius=t.maximumRadius,n};var z=new e;h.fromBoundingSpheres=function(t,n){if(r(n)||(n=new h),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;var a=t.length;if(1===a)return h.clone(t[0],n);if(2===a)return h.union(t[0],t[1],n);for(var i=[],o=0;a>o;o++)i.push(t[o].center);n=h.fromPoints(i,n);var u=n.center,s=n.radius;for(o=0;a>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,z)+c.radius)}return n.radius=s,n},h.clone=function(t,n){return r(t)?r(n)?(n.center=e.clone(t.center,n.center),n.radius=t.radius,n):new h(t.center,t.radius):void 0},h.packedLength=4,h.pack=function(e,t,r){r=n(r,0);var a=e.center;t[r++]=a.x,t[r++]=a.y,t[r++]=a.z,t[r]=e.radius},h.unpack=function(e,t,a){t=n(t,0),r(a)||(a=new h);var i=a.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],a.radius=e[t],a};var b=new e,A=new e;h.union=function(t,n,a){r(a)||(a=new h);var i=t.center,o=t.radius,u=n.center,s=n.radius,c=e.subtract(u,i,b),l=e.magnitude(c);if(o>=l+s)return t.clone(a),a;if(s>=l+o)return n.clone(a),a;var f=.5*(o+l+s),d=e.multiplyByScalar(c,(-o+f)/l,A);return e.add(d,i,d),e.clone(d,a.center),a.radius=f,a};var D=new e;h.expand=function(t,n,r){r=h.clone(t,r);var a=e.magnitude(e.subtract(n,r.center,D));return a>r.radius&&(r.radius=a),r},h.intersectPlane=function(t,n){var r=t.center,a=t.radius,i=n.normal,o=e.dot(i,r)+n.distance;return-a>o?s.OUTSIDE:a>o?s.INTERSECTING:s.INSIDE};var q=new f(new e,0);h.intersect=function(e,t){a("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(t,q);return h.intersectPlane(e,n)},h.transform=function(e,t,n){return r(n)||(n=new h),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=l.getMaximumScale(t)*e.radius,n};var U=new e;h.distanceSquaredTo=function(t,n){var r=e.subtract(t.center,n,U);return e.magnitudeSquared(r)-t.radius*t.radius},h.transformWithoutScale=function(e,t,n){return r(n)||(n=new h),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var L=new e;h.computePlaneDistances=function(t,n,a,i){r(i)||(i=new c);var o=e.subtract(t.center,n,L),u=e.multiplyByScalar(a,e.dot(a,o),L),s=e.magnitude(u);return i.start=s-t.radius,i.stop=s+t.radius,i};for(var B=new e,W=new e,F=new e,G=new e,k=new e,j=new t,Y=new Array(8),H=0;8>H;++H)Y[H]=new e;var V=new u;return h.projectTo2D=function(t,r,a){r=n(r,V);var i=r.ellipsoid,o=t.center,u=t.radius,s=i.geodeticSurfaceNormal(o,B),c=e.cross(e.UNIT_Z,s,W);e.normalize(c,c);var l=e.cross(s,c,F);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,k),d=e.negate(c,G),m=Y,p=m[0];e.add(s,l,p),e.add(p,c,p),p=m[1],e.add(s,l,p),e.add(p,d,p),p=m[2],e.add(s,f,p),e.add(p,d,p),p=m[3],e.add(s,f,p),e.add(p,c,p),e.negate(s,s),p=m[4],e.add(s,l,p),e.add(p,c,p),p=m[5],e.add(s,l,p),e.add(p,d,p),p=m[6],e.add(s,f,p),e.add(p,d,p),p=m[7],e.add(s,f,p),e.add(p,c,p);for(var y=m.length,v=0;y>v;++v){var g=m[v];e.add(o,g,g);var w=i.cartesianToCartographic(g,j);r.project(w,g)}a=h.fromPoints(m,a),o=a.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,a},h.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&t.radius===n.radius},h.prototype.intersectPlane=function(e){return h.intersectPlane(this,e)},h.prototype.intersect=function(e){return h.intersect(this,e)},h.prototype.equals=function(e){return h.equals(this,e)},h.prototype.clone=function(e){return h.clone(this,e)},h}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},a={};return t(a,{element:{get:function(){return a.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return a.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return a.supportsFullscreen()?null!==a.element:void 0}}}),a.supportsFullscreen=function(){if(e(n))return n;n=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var a,i=["webkit","moz","o","ms","khtml"],o=0,u=i.length;u>o;++o){var s=i[o];a=s+"RequestFullscreen","function"==typeof t[a]?(r.requestFullscreen=a,n=!0):(a=s+"RequestFullScreen","function"==typeof t[a]&&(r.requestFullscreen=a,n=!0)),a=s+"ExitFullscreen","function"==typeof document[a]?r.exitFullscreen=a:(a=s+"CancelFullScreen","function"==typeof document[a]&&(r.exitFullscreen=a)),a=s+"FullscreenEnabled",e(document[a])?r.fullscreenEnabled=a:(a=s+"FullScreenEnabled",e(document[a])&&(r.fullscreenEnabled=a)),a=s+"FullscreenElement",e(document[a])?r.fullscreenElement=a:(a=s+"FullScreenElement",e(document[a])&&(r.fullscreenElement=a)),a=s+"fullscreenchange",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenChange"),r.fullscreenchange=a),a=s+"fullscreenerror",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenError"),r.fullscreenerror=a)}return n},a.requestFullscreen=function(e){a.supportsFullscreen()&&e[r.requestFullscreen]()},a.exitFullscreen=function(){a.supportsFullscreen()&&document[r.exitFullscreen]()},a}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,n){"use strict";function r(e){for(var t=e.split("."),n=0,r=t.length;r>n;++n)t[n]=parseInt(t[n],10);return t}function a(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=r(e[1]))}return y}function i(){return a()&&v}function o(){if(!t(g)&&(g=!1,!a()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=r(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=r(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,M=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,M=r(e[1])))}return S}function f(){return l()&&M}function d(){if(!t(_)){_=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(_=!0,O=r(e[1]))}return _}function h(){return t(T)||(T=/Windows/i.test(navigator.appVersion)),T}function m(){return d()&&O}function p(){return t(R)||(R=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),R}var y,v,g,w,x,E,S,M,_,O,T,R,P={isChrome:a,chromeVersion:i,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:d,firefoxVersion:m,isWindows:h,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return P.supportsFullscreen=function(){return n.supportsFullscreen()},P.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},P.supportsWebWorkers=function(){return"undefined"!=typeof Worker},P}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,n,r,a){"use strict";if(!r.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(e){switch(e){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},i.fromTypedArray=function(e){return e instanceof Int8Array?i.BYTE:e instanceof Uint8Array?i.UNSIGNED_BYTE:e instanceof Int16Array?i.SHORT:e instanceof Uint16Array?i.UNSIGNED_SHORT:e instanceof Float32Array?i.FLOAT:e instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(e){return t(e)&&(e===i.BYTE||e===i.UNSIGNED_BYTE||e===i.SHORT||e===i.UNSIGNED_SHORT||e===i.FLOAT||e===i.DOUBLE)},i.createTypedArray=function(e,t){switch(e){case i.BYTE:return new Int8Array(t);case i.UNSIGNED_BYTE:return new Uint8Array(t);case i.SHORT:return new Int16Array(t);case i.UNSIGNED_SHORT:return new Uint16Array(t);case i.FLOAT:return new Float32Array(t);case i.DOUBLE:return new Float64Array(t);default:throw new n("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(t,r,a,o){switch(a=e(a,0),o=e(o,(r.byteLength-a)/i.getSizeInBytes(t)),t){case i.BYTE:return new Int8Array(r,a,o);case i.UNSIGNED_BYTE:return new Uint8Array(r,a,o);case i.SHORT:return new Int16Array(r,a,o);case i.UNSIGNED_SHORT:return new Uint16Array(r,a,o);case i.FLOAT:return new Float32Array(r,a,o);case i.DOUBLE:return new Float64Array(r,a,o);default:throw new n("componentDatatype is not a valid value.")}},a(i)}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,n,r,a){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,a.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,r.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(e){var r=-1;for(var a in e.attributes)if(e.attributes.hasOwnProperty(a)&&t(e.attributes[a])&&t(e.attributes[a].values)){var i=e.attributes[a],o=i.values.length/i.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r){"use strict";var a={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return a.getSizeInBytes=function(e){switch(e){case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},a.validate=function(t){return e(t)&&(t===a.UNSIGNED_BYTE||t===a.UNSIGNED_SHORT||t===a.UNSIGNED_INT)},a.createTypedArray=function(e,t){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},a.createTypedArrayFromArrayBuffer=function(e,t,n,a){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,a):new Uint16Array(t,n,a)},n(a)}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n){this.x=e(t,0),this.y=e(n,0)};i.fromElements=function(e,n,r){return t(r)?(r.x=e,r.y=n,r):new i(e,n)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n):new i(e.x,e.y):void 0},i.fromCartesian3=i.clone,i.fromCartesian4=i.clone,i.packedLength=2,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r]=t.y},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y)},i.minimumComponent=function(e){return Math.min(e.x,e.y)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r) +};var s=new i,c=new i;i.angleBetween=function(e,t){return i.normalize(e,s),i.normalize(t,c),a.acosClamped(i.dot(s,c))};var l=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Y,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)},i.ZERO=r(new i(0,0)),i.UNIT_X=r(new i(1,0)),i.UNIT_Y=r(new i(0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+")"},i}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,n,r,a,i,o){"use strict";var u=function(r,a,i){this.minimum=e.clone(t(r,e.ZERO)),this.maximum=e.clone(t(a,e.ZERO)),n(i)?i=e.clone(i):(i=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(i,.5,i)),this.center=i};u.fromPoints=function(t,r){if(n(r)||(r=new u),!n(t)||0===t.length)return r.minimum=e.clone(e.ZERO,r.minimum),r.maximum=e.clone(e.ZERO,r.maximum),r.center=e.clone(e.ZERO,r.center),r;for(var a=t[0].x,i=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,f=t.length,d=1;f>d;d++){var h=t[d],m=h.x,p=h.y,y=h.z;a=Math.min(m,a),s=Math.max(m,s),i=Math.min(p,i),c=Math.max(p,c),o=Math.min(y,o),l=Math.max(y,l)}var v=r.minimum;v.x=a,v.y=i,v.z=o;var g=r.maximum;g.x=s,g.y=c,g.z=l;var w=e.add(v,g,r.center);return e.multiplyByScalar(w,.5,w),r},u.clone=function(t,r){return n(t)?n(r)?(r.minimum=e.clone(t.minimum,r.minimum),r.maximum=e.clone(t.maximum,r.maximum),r.center=e.clone(t.center,r.center),r):new u(t.minimum,t.maximum):void 0},u.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&e.equals(t.minimum,r.minimum)&&e.equals(t.maximum,r.maximum)};var s=new e;u.intersectPlane=function(t,n){s=e.subtract(t.maximum,t.minimum,s);var r=e.multiplyByScalar(s,.5,s),a=n.normal,o=r.x*Math.abs(a.x)+r.y*Math.abs(a.y)+r.z*Math.abs(a.z),u=e.dot(t.center,a)+n.distance;return u-o>0?i.INSIDE:0>u+o?i.OUTSIDE:i.INTERSECTING};var c=new o(new e,0);return u.intersect=function(e,t){r("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var n=o.fromCartesian4(t,c);return u.intersectPlane(e,n)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function n(e,n,r){var a=e+n;return t.sign(e)!==t.sign(n)&&Math.abs(a/Math.max(Math.abs(e),Math.abs(n)))<r?0:a}var r={};return r.computeDiscriminant=function(e,t,n){var r=t*t-4*e*n;return r},r.computeRealRoots=function(e,r,a){var i;if(0===e)return 0===r?[]:[-a/r];if(0===r){if(0===a)return[0,0];var o=Math.abs(a),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(i=-a/e,0>i)return[];var s=Math.sqrt(i);return[-s,s]}if(0===a)return i=-r/e,0>i?[i,0]:[0,i];var c=r*r,l=4*e*a,f=n(c,-l,t.EPSILON14);if(0>f)return[];var d=-.5*n(r,t.sign(r)*Math.sqrt(f),t.EPSILON14);return r>0?[d/e,a/d]:[a/d,d/e]},r}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function n(e,t,n,r){var a,i,o=e,u=t/3,s=n/3,c=r,l=o*s,f=u*c,d=u*u,h=s*s,m=o*s-d,p=o*c-u*s,y=u*c-h,v=4*m*y-p*p;if(0>v){var g,w,x;d*f>=l*h?(g=o,w=m,x=-2*u*m+o*p):(g=c,w=y,x=-c*p+2*s*y);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);i=-x+S;var M=i/2,_=0>M?-Math.pow(-M,1/3):Math.pow(M,1/3),O=i===S?-_:-w/_;return a=0>=w?_+O:-x/(_*_+O*O+w),d*f>=l*h?[(a-u)/o]:[-c/(a+s)]}var T=m,R=-2*u*m+o*p,P=y,C=-c*p+2*s*y,N=Math.sqrt(v),I=Math.sqrt(3)/2,z=Math.abs(Math.atan2(o*N,-R)/3);a=2*Math.sqrt(-T);var b=Math.cos(z);i=a*b;var A=a*(-b/2-I*Math.sin(z)),D=i+A>2*u?i-u:A-u,q=o,U=D/q;z=Math.abs(Math.atan2(c*N,-C)/3),a=2*Math.sqrt(-P),b=Math.cos(z),i=a*b,A=a*(-b/2-I*Math.sin(z));var L=-c,B=2*s>i+A?i+s:A+s,W=L/B,F=q*B,G=-D*B-q*L,k=D*L,j=(s*G-u*k)/(-u*G+s*F);return j>=U?W>=U?W>=j?[U,j,W]:[U,W,j]:[W,U,j]:W>=U?[j,U,W]:W>=j?[j,W,U]:[W,j,U]}var r={};return r.computeDiscriminant=function(e,t,n,r){var a=e*e,i=t*t,o=n*n,u=r*r,s=18*e*t*n*r+i*o-27*a*u-4*(e*o*n+i*t*r);return s},r.computeRealRoots=function(e,r,a,i){var o,u;if(0===e)return t.computeRealRoots(r,a,i);if(0===r){if(0===a){if(0===i)return[0,0,0];u=-i/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===i?(o=t.computeRealRoots(e,0,a),0===o.Length?[0]:[o[0],0,o[1]]):n(e,0,a,i)}return 0===a?0===i?(u=-r/e,0>u?[u,0,0]:[0,0,u]):n(e,r,0,i):0===i?(o=t.computeRealRoots(e,r,a),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):n(e,r,a,i)},r}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,n,r){"use strict";function a(t,a,i,o){var u=t*t,s=a-3*u/8,c=i-a*t/2+u*t/8,l=o-i*t/4+a*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var d=-t/4,h=f[f.length-1];if(Math.abs(h)<n.EPSILON14){var m=r.computeRealRoots(1,s,l);if(2===m.length){var p,y=m[0],v=m[1];if(y>=0&&v>=0){var g=Math.sqrt(y),w=Math.sqrt(v);return[d-w,d-g,d+g,d+w]}if(y>=0&&0>v)return p=Math.sqrt(y),[d-p,d+p];if(0>y&&v>=0)return p=Math.sqrt(v),[d-p,d+p]}return[]}if(h>0){var x=Math.sqrt(h),E=(s+h-c/x)/2,S=(s+h+c/x)/2,M=r.computeRealRoots(1,x,E),_=r.computeRealRoots(1,-x,S);return 0!==M.length?(M[0]+=d,M[1]+=d,0!==_.length?(_[0]+=d,_[1]+=d,M[1]<=_[0]?[M[0],M[1],_[0],_[1]]:_[1]<=M[0]?[_[0],_[1],M[0],M[1]]:M[0]>=_[0]&&M[1]<=_[1]?[_[0],M[0],M[1],_[1]]:_[0]>=M[0]&&_[1]<=M[1]?[M[0],_[0],_[1],M[1]]:M[0]>_[0]&&M[0]<_[1]?[_[0],M[0],_[1],M[1]]:[M[0],_[0],M[1],_[1]]):M):0!==_.length?(_[0]+=d,_[1]+=d,_):[]}}return[]}function i(t,a,i,o){var u=i*i,s=a*a,c=t*t,l=-2*a,f=i*t+s-4*o,d=c*o-i*a*t+u,h=e.computeRealRoots(1,l,f,d);if(h.length>0){var m,p,y=h[0],v=a-y,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),M=c-4*y,_=c+4*Math.abs(y);if(0>y||M*S>E*_){var O=Math.sqrt(M);m=O/2,p=0===O?0:(t*x-i)/O}else{var T=Math.sqrt(E);m=0===T?0:(t*x-i)/T,p=T/2}var R,P;0===w&&0===m?(R=0,P=0):n.sign(w)===n.sign(m)?(R=w+m,P=y/R):(P=w-m,R=y/P);var C,N;0===x&&0===p?(C=0,N=0):n.sign(x)===n.sign(p)?(C=x+p,N=o/C):(N=x-p,C=o/N);var I=r.computeRealRoots(1,R,C),z=r.computeRealRoots(1,P,N);if(0!==I.length)return 0!==z.length?I[1]<=z[0]?[I[0],I[1],z[0],z[1]]:z[1]<=I[0]?[z[0],z[1],I[0],I[1]]:I[0]>=z[0]&&I[1]<=z[1]?[z[0],I[0],I[1],z[1]]:z[0]>=I[0]&&z[1]<=I[1]?[I[0],z[0],z[1],I[1]]:I[0]>z[0]&&I[0]<z[1]?[z[0],I[0],z[1],I[1]]:[I[0],z[0],I[1],z[1]]:I;if(0!==z.length)return z}return[]}var o={};return o.computeDiscriminant=function(e,t,n,r,a){var i=e*e,o=i*e,u=t*t,s=u*t,c=n*n,l=c*n,f=r*r,d=f*r,h=a*a,m=h*a,p=u*c*f-4*s*d-4*e*l*f+18*e*t*n*d-27*i*f*f+256*o*m+a*(18*s*n*r-4*u*l+16*e*c*c-80*e*t*c*r-6*e*u*f+144*i*n*f)+h*(144*e*u*n-27*u*u-128*i*c-192*i*t*r);return p},o.computeRealRoots=function(t,r,o,u,s){if(Math.abs(t)<n.EPSILON15)return e.computeRealRoots(r,o,u,s);var c=r/t,l=o/t,f=u/t,d=s/t,h=0>c?1:0;switch(h+=0>l?h+1:h,h+=0>f?h+1:h,h+=0>d?h+1:h){case 0:return a(c,l,f,d);case 1:return i(c,l,f,d);case 2:return i(c,l,f,d);case 3:return a(c,l,f,d);case 4:return a(c,l,f,d);case 5:return i(c,l,f,d);case 6:return a(c,l,f,d);case 7:return a(c,l,f,d);case 8:return i(c,l,f,d);case 9:return a(c,l,f,d);case 10:return a(c,l,f,d);case 11:return i(c,l,f,d);case 12:return a(c,l,f,d);case 13:return a(c,l,f,d);case 14:return a(c,l,f,d);case 15:return a(c,l,f,d);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=function(n,r){r=e.clone(t(r,e.ZERO)),e.equals(r,e.ZERO)||e.normalize(r,r),this.origin=e.clone(t(n,e.ZERO)),this.direction=r};return r.getPoint=function(t,r,a){return n(a)||(a=new e),a=e.multiplyByScalar(t.direction,r,a),e.add(t.origin,a,a)},r}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(t,r,a,o,u){u=n(u,!1);var s,c,l,f,d,h=t.origin,m=t.direction,p=e.subtract(a,r,y),E=e.subtract(o,r,v),S=e.cross(m,E,g),M=e.dot(p,S);if(u){if(M<i.EPSILON6)return void 0;if(s=e.subtract(h,r,w),l=e.dot(s,S),0>l||l>M)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c),0>f||l+f>M)return void 0;d=e.dot(E,c)/M}else{if(Math.abs(M)<i.EPSILON6)return void 0;var _=1/M;if(s=e.subtract(h,r,w),l=e.dot(s,S)*_,0>l||l>1)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c)*_,0>f||l+f>1)return void 0;d=e.dot(E,c)*_}return d}function f(e,t,n,r){var a=t*t-4*e*n;if(0>a)return void 0;if(a>0){var i=1/(2*e),o=Math.sqrt(a),u=(-t+o)*i,s=(-t-o)*i;return s>u?(r.root0=u,r.root1=s):(r.root0=s,r.root1=u),r}var c=-t/(2*e);return 0===c?void 0:(r.root0=r.root1=c,r)}function d(t,n,a){r(a)||(a={});var i=t.origin,o=t.direction,u=n.center,s=n.radius*n.radius,c=e.subtract(i,u,g),l=e.dot(o,o),d=2*e.dot(o,c),h=e.magnitudeSquared(c)-s,m=f(l,d,h,S);return r(m)?(a.start=m.root0,a.stop=m.root1,a):void 0}function h(e,t,n){var r=e+t;return i.sign(e)!==i.sign(t)&&Math.abs(r/Math.max(Math.abs(e),Math.abs(t)))<n?0:r}function m(t,n,r,a,c){var l,f=a*a,d=c*c,m=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*d,p=c*(a*h(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],i.EPSILON15)+n.y),y=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*d+a*n.x+r,v=d*h(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],i.EPSILON15),g=c*(a*h(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+n.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(m,p,y),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(a,c*x,c*-E)),w.push(new e(a,c*x,c*E)),2===l.length){var S=l[1],M=Math.sqrt(Math.max(1-S*S,0));w.push(new e(a,c*S,c*-M)),w.push(new e(a,c*S,c*M))}return w}var _=g*g,O=v*v,T=m*m,R=g*v,P=T+O,C=2*(p*m+R),N=2*y*m+p*p-O+_,I=2*(y*p-R),z=y*y-_;if(0===P&&0===C&&0===N&&0===I)return w;l=s.computeRealRoots(P,C,N,I,z);var b=l.length;if(0===b)return w;for(var A=0;b>A;++A){var D,q=l[A],U=q*q,L=Math.max(1-U,0),B=Math.sqrt(L);D=i.sign(m)===i.sign(y)?h(m*U+y,p*q,i.EPSILON12):i.sign(y)===i.sign(p*q)?h(m*U,p*q+y,i.EPSILON12):h(m*U+p*q,y,i.EPSILON12);var W=h(v*q,g,i.EPSILON15),F=D*W;0>F?w.push(new e(a,c*q,c*B)):F>0?w.push(new e(a,c*q,c*-B)):0!==B?(w.push(new e(a,c*q,c*-B)),w.push(new e(a,c*q,c*B)),++A):w.push(new e(a,c*q,c*B))}return w}var p={};p.rayPlane=function(t,n,a){r(a)||(a=new e);var o=t.origin,u=t.direction,s=n.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON15)return void 0;var l=(-n.distance-e.dot(s,o))/c;return 0>l?void 0:(a=e.multiplyByScalar(u,l,a),e.add(o,a,a))};var y=new e,v=new e,g=new e,w=new e,x=new e;p.rayTriangle=function(t,n,a,i,o,u){var s=l(t,n,a,i,o);return!r(s)||0>s?void 0:(r(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;p.lineSegmentTriangle=function(t,n,a,i,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(n,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,a,i,o,u);return!r(f)||0>f||f>e.distance(t,n)?void 0:(r(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};p.raySphere=function(e,t,n){return n=d(e,t,n),!r(n)||n.stop<0?void 0:(n.start=Math.max(n.start,0),n)};var M=new c;p.lineSegmentSphere=function(t,n,a,i){var o=M;e.clone(t,o.origin);var u=e.subtract(n,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),i=d(o,a,i),!r(i)||i.stop<0||i.start>s?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i)};var _=new e,O=new e;p.rayEllipsoid=function(t,n){var r,a,i,o,u,s=n.oneOverRadii,c=e.multiplyComponents(s,t.origin,_),l=e.multiplyComponents(s,t.direction,O),f=e.magnitudeSquared(c),d=e.dot(c,l);if(f>1){if(d>=0)return void 0;var h=d*d;if(r=f-1,a=e.magnitudeSquared(l),i=a*r,i>h)return void 0;if(h>i){o=d*d-i,u=-d+Math.sqrt(o);var m=u/a,p=r/u;return p>m?{start:m,stop:p}:{start:p,stop:m}}var y=Math.sqrt(r/a);return{start:y,stop:y}}return 1>f?(r=f-1,a=e.magnitudeSquared(l),i=a*r,o=d*d-i,u=-d+Math.sqrt(o),{start:0,stop:u/a}):0>d?(a=e.magnitudeSquared(l),{start:0,stop:-d/a}):void 0};var T=new e,R=new e,P=new e,C=new e,N=new e,I=new o,z=new o,b=new o,A=new o,D=new o,q=new o,U=new o,L=new e,B=new e,W=new t;p.grazingAltitudeLocation=function(t,n){var a=t.origin,u=t.direction,s=n.geodeticSurfaceNormal(a,T);if(e.dot(u,s)>=0)return a;var c=r(this.rayEllipsoid(t,n)),l=n.transformPositionToScaledSpace(u,T),f=e.normalize(l,l),d=e.mostOrthogonalAxis(l,C),h=e.normalize(e.cross(d,f,R),R),p=e.normalize(e.cross(f,h,P),P),y=I;y[0]=f.x,y[1]=f.y,y[2]=f.z,y[3]=h.x,y[4]=h.y,y[5]=h.z,y[6]=p.x,y[7]=p.y,y[8]=p.z;var v=o.transpose(y,z),g=o.fromScale(n.radii,b),w=o.fromScale(n.oneOverRadii,A),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,M=o.multiply(o.multiply(v,w,q),x,q),_=o.multiply(o.multiply(M,g,U),y,U),O=o.multiplyByVector(M,a,N),F=m(_,e.negate(O,T),0,0,1),G=F.length;if(G>0){for(var k=e.clone(e.ZERO,B),j=Number.NEGATIVE_INFINITY,Y=0;G>Y;++Y){E=o.multiplyByVector(g,o.multiplyByVector(y,F[Y],L),L);var H=e.normalize(e.subtract(E,a,C),C),V=e.dot(H,u);V>j&&(j=V,k=e.clone(E,k))}var X=n.cartesianToCartographic(k,W);return j=i.clamp(j,0,1),S=e.magnitude(e.subtract(k,a,C))*Math.sqrt(1-j*j),S=c?-S:S,X.height=S,n.cartographicToCartesian(X,new e)}return void 0};var F=new e;return p.lineSegmentPlane=function(t,n,a,o){r(o)||(o=new e);var u=e.subtract(n,t,F),s=a.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON6)return void 0;var l=e.dot(s,t),f=-(a.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},p.trianglePlaneIntersection=function(t,n,r,a){var i=a.normal,o=a.distance,u=e.dot(i,t)+o<0,s=e.dot(i,n)+o<0,c=e.dot(i,r)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,d;if((1===l||2===l)&&(f=new e,d=new e),1===l){if(u)return p.lineSegmentPlane(t,n,a,f),p.lineSegmentPlane(t,r,a,d),{positions:[t,n,r,f,d],indices:[0,3,4,1,2,4,1,4,3]};if(s)return p.lineSegmentPlane(n,r,a,f),p.lineSegmentPlane(n,t,a,d),{positions:[t,n,r,f,d],indices:[1,3,4,2,0,4,2,4,3]};if(c)return p.lineSegmentPlane(r,t,a,f),p.lineSegmentPlane(r,n,a,d),{positions:[t,n,r,f,d],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return p.lineSegmentPlane(n,t,a,f),p.lineSegmentPlane(r,t,a,d),{positions:[t,n,r,f,d],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return p.lineSegmentPlane(r,n,a,f),p.lineSegmentPlane(t,n,a,d),{positions:[t,n,r,f,d],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return p.lineSegmentPlane(t,r,a,f),p.lineSegmentPlane(n,r,a,d),{positions:[t,n,r,f,d],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,n,r,a){return t(e).then(n,r,a)}function t(e){var t,n;return e instanceof r?t=e:u(e)?(n=o(),e.then(function(e){n.resolve(e)},function(e){n.reject(e)},function(e){n.progress(e)}),t=n.promise):t=a(e),t}function n(t){return e(t,i)}function r(e){this.then=e}function a(e){var n=new r(function(n){try{return t(n?n(e):e)}catch(r){return i(r)}});return n}function i(e){var n=new r(function(n,r){try{return r?t(r(e)):i(e)}catch(a){return i(a)}});return n}function o(){function e(e,t,n){return d(e,t,n)}function n(e){return m(e)}function a(e){return m(i(e))}function u(e){return h(e)}var s,c,l,f,d,h,m;return c=new r(e),s={then:e,resolve:n,reject:a,progress:u,promise:c,resolver:{resolve:n,reject:a,progress:u}},l=[],f=[],d=function(e,t,n){var r,a;return r=o(),a="function"==typeof n?function(e){try{r.progress(n(e))}catch(t){r.progress(t)}}:function(e){r.progress(e)},l.push(function(n){n.then(e,t).then(r.resolve,r.reject,a)}),f.push(a),r.promise},h=function(e){return p(f,e),e},m=function(e){return e=t(e),d=e.then,m=t,h=v,p(l,e),f=l=E,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,n,r,a,i){return y(2,arguments),e(t,function(t){function u(e){p(e)}function s(e){m(e)}var c,l,f,d,h,m,p,y,g,w;if(g=t.length>>>0,c=Math.max(0,Math.min(n,g)),f=[],l=g-c+1,d=[],h=o(),c)for(y=h.progress,p=function(e){d.push(e),--l||(m=p=v,h.reject(d))},m=function(e){f.push(e),--c||(m=p=v,h.resolve(f))},w=0;g>w;++w)w in t&&e(t[w],s,u,y);else h.resolve(f);return h.then(r,a,i)})}function c(e,t,n,r){function a(e){return t?t(e[0]):e[0]}return s(e,1,a,n,r)}function l(e,t,n,r){return y(1,arguments),d(e,g).then(t,n,r)}function f(){return d(arguments,g)}function d(t,n){return e(t,function(t){var r,a,i,u,s,c;if(i=a=t.length>>>0,r=[],c=o(),i)for(u=function(t,a){e(t,n).then(function(e){r[a]=e,--i||c.resolve(r)},c.reject)},s=0;a>s;s++)s in t?u(t[s],s):--i;else c.resolve(r);return c.promise})}function h(t,n){var r=x.call(arguments,1);return e(t,function(t){var a;return a=t.length,r[0]=function(t,r,i){return e(t,function(t){return e(r,function(e){return n(t,e,i,a)})})},w.apply(t,r)})}function m(t,n,r){var a=arguments.length>2;return e(t,function(e){return e=a?r:e,n.resolve(e),e},function(e){return n.reject(e),i(e)},n.progress)}function p(e,t){for(var n,r=0;n=e[r++];)n(t)}function y(e,t){for(var n,r=t.length;r>e;)if(n=t[--r],null!=n&&"function"!=typeof n)throw new Error("arg "+r+" must be a function")}function v(){}function g(e){return e}var w,x,E;return e.defer=o,e.resolve=t,e.reject=n,e.join=f,e.all=l,e.map=d,e.reduce=h,e.any=c,e.some=s,e.chain=m,e.isPromise=u,r.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(E,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(E,t)})})}},x=[].slice,w=[].reduce||function(e){var t,n,r,a,i;if(i=0,t=Object(this),a=t.length>>>0,n=arguments,n.length<=1)for(;;){if(i in t){r=t[i++];break}if(++i>=a)throw new TypeError}else r=n[1];for(;a>i;++i)i in t&&(r=e(r,t[i],i,t));return r},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,n){for(var r,a,i=0,o=e.length-1;o>=i;)if(r=~~((i+o)/2),a=n(e[r],t),0>a)i=r+1;else{if(!(a>0))return r;o=r-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,n,r,a){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=r,this.ut1MinusUtc=a};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,n=0,r=t[n++],a=function(e,t,n,r){n||(n=" ");var a=e.length>=t?"":Array(1+t-e.length>>>0).join(n);return r?e+a:a+e},i=function(e,t,n,r,i,o){var u=r-e.length;return u>0&&(e=n||!i?a(e,r,o,n):e.slice(0,t.length)+a("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,n,r,o,u,s){var c=e>>>0;return n=n&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=n+a(c.toString(t),u||0,"0",!1),i(e,n,r,o,s)},u=function(e,t,n,r,a,o){return null!=r&&(e=e.slice(0,r)),i(e,"",t,n,a,o)},s=function(e,r,s,c,l,f,d){var h,m,p,y,v;if("%%"==e)return"%";for(var g=!1,w="",x=!1,E=!1,S=" ",M=s.length,_=0;s&&M>_;_++)switch(s.charAt(_)){case" ":w=" ";break;case"+":w="+";break;case"-":g=!0;break;case"'":S=s.charAt(_+1);break;case"0":x=!0;break;case"#":E=!0}if(c=c?"*"==c?+t[n++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,g=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(f=f?"*"==f?+t[n++]:"*"==f.charAt(0)?+t[f.slice(1,-1)]:+f:"fFeE".indexOf(d)>-1?6:"d"==d?0:void 0,v=r?t[r.slice(0,-1)]:t[n++],d){case"s":return u(String(v),g,c,f,x,S);case"c":return u(String.fromCharCode(+v),g,c,f,x);case"b":return o(v,2,E,g,c,f,x);case"o":return o(v,8,E,g,c,f,x);case"x":return o(v,16,E,g,c,f,x);case"X":return o(v,16,E,g,c,f,x).toUpperCase();case"u":return o(v,10,E,g,c,f,x);case"i":case"d":return h=+v||0,h=Math.round(h-h%1),m=0>h?"-":w,v=m+a(String(Math.abs(h)),f,"0",!1),i(v,m,g,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return h=+v,m=0>h?"-":w,p=["toExponential","toFixed","toPrecision"]["efg".indexOf(d.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(d)%2],v=m+Math.abs(h)[p](f),i(v,m,g,c,x)[y]();default:return e}};return r.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,n,r,a,i,o,u){this.year=e,this.month=t,this.day=n,this.hour=r,this.minute=a,this.second=i,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(e,t){return C.compare(e.julianDate,t.julianDate)}function f(e){g.julianDate=e;var n=C.leapSeconds,r=t(n,g,l);0>r&&(r=~r),r>=n.length&&(r=n.length-1);var a=n[r].offset;if(r>0){var i=C.secondsDifference(n[r].julianDate,e);i>a&&(r--,a=n[r].offset)}C.addSeconds(e,a,e)}function d(e,n){g.julianDate=e;var r=C.leapSeconds,a=t(r,g,l);if(0>a&&(a=~a),0===a)return C.addSeconds(e,-r[0].offset,n);if(a>=r.length)return C.addSeconds(e,-r[a-1].offset,n);var i=C.secondsDifference(r[a].julianDate,e);return 0===i?C.addSeconds(e,-r[a].offset,n):1>=i?void 0:C.addSeconds(e,-r[--a].offset,n)}function h(e,t,n){var r=0|t/s.SECONDS_PER_DAY;return e+=r,t-=s.SECONDS_PER_DAY*r,0>t&&(e--,t+=s.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function m(e,t,n,r,a,i,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+n-32075;r-=12,0>r&&(r+=24);var f=i+(r*s.SECONDS_PER_HOUR+a*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return f>=43200&&(l-=1),[l,f]}var p=new i,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,g=new u,w=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,E=/^(\d{4})-?(\d{3})$/,S=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,M=/^(\d{4})-?(\d{2})-?(\d{2})$/,_=/([Z+\-])?(\d{2})?:?(\d{2})?$/,O=/^(\d{2})(\.\d+)?/.source+_.source,T=/^(\d{2}):?(\d{2})(\.\d+)?/.source+_.source,R=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+_.source,P="Invalid ISO 8601 date.",C=function(e,t,r){this.dayNumber=void 0,this.secondsOfDay=void 0,e=n(e,0),t=n(t,0),r=n(r,c.UTC);var a=0|e;t+=(e-a)*s.SECONDS_PER_DAY,h(a,t,this),r===c.UTC&&f(this)};C.fromDate=function(e,t){var n=m(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return r(t)?(h(n[0],n[1],t),f(t),t):new C(n[0],n[1],c.UTC)},C.fromIso8601=function(e,t){e=e.replace(",",".");var n,i,u,s=e.split("T"),l=1,d=1,p=0,g=0,_=0,N=0,I=s[0],z=s[1];if(!r(I))throw new a(P);var b;if(s=I.match(M),null!==s){if(b=I.split("-").length-1,b>0&&2!==b)throw new a(P);n=+s[1],l=+s[2],d=+s[3]}else if(s=I.match(x),null!==s)n=+s[1],l=+s[2];else if(s=I.match(w),null!==s)n=+s[1];else{var A;if(s=I.match(E),null!==s){if(n=+s[1],A=+s[2],u=o(n),1>A||u&&A>366||!u&&A>365)throw new a(P)}else{if(s=I.match(S),null===s)throw new a(P);n=+s[1];var D=+s[2],q=+s[3]||0;if(b=I.split("-").length-1,b>0&&(!r(s[3])&&1!==b||r(s[3])&&2!==b))throw new a(P);var U=new Date(Date.UTC(n,0,4));A=7*D+q-U.getUTCDay()-3}i=new Date(Date.UTC(n,0,1)),i.setUTCDate(A),l=i.getUTCMonth()+1,d=i.getUTCDate()}if(u=o(n),1>l||l>12||1>d||(2!==l||!u)&&d>y[l-1]||u&&2===l&&d>v)throw new a(P);var L;if(r(z)){if(s=z.match(R),null!==s){if(b=z.split(":").length-1,b>0&&2!==b&&3!==b)throw new a(P);p=+s[1],g=+s[2],_=+s[3],N=1e3*+(s[4]||0),L=5}else if(s=z.match(T),null!==s){if(b=z.split(":").length-1,b>0&&1!==b)throw new a(P);p=+s[1],g=+s[2],_=60*+(s[3]||0),L=4}else{if(s=z.match(O),null===s)throw new a(P);p=+s[1],g=60*+(s[2]||0),L=3}if(g>=60||_>=61||p>24||24===p&&(g>0||_>0||N>0))throw new a(P);var B=s[L],W=+s[L+1],F=+(s[L+2]||0);switch(B){case"+":p-=W,g-=F;break;case"-":p+=W,g+=F;break;case"Z":break;default:g+=new Date(Date.UTC(n,l-1,d,p,g)).getTimezoneOffset()}}else g+=new Date(n,l-1,d).getTimezoneOffset();var G=60===_;for(G&&_--;g>=60;)g-=60,p++;for(;p>=24;)p-=24,d++;for(i=u&&2===l?v:y[l-1];d>i;)d-=i,l++,l>12&&(l-=12,n++),i=u&&2===l?v:y[l-1];for(;0>g;)g+=60,p--;for(;0>p;)p+=24,d--;for(;1>d;)l--,1>l&&(l+=12,n--),i=u&&2===l?v:y[l-1],d+=i;var k=m(n,l,d,p,g,_,N);return r(t)?(h(k[0],k[1],t),f(t)):t=new C(k[0],k[1],c.UTC),G&&C.addSeconds(t,1,t),t},C.now=function(e){return C.fromDate(new Date,e)};var N=new C(0,0,c.TAI);return C.toGregorianDate=function(e,t){var n=!1,a=d(e,N);r(a)||(C.addSeconds(e,-1,N),a=d(N,N),n=!0);var o=a.dayNumber,u=a.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var f=0|4e3*(c+1)/1461001;c=0|c-(0|1461*f/4)+31;var h=0|80*c/2447,m=0|c-(0|2447*h/80);c=0|h/11;var p=0|h+2-12*c,y=0|100*(l-49)+f+c,v=0|u/s.SECONDS_PER_HOUR,g=u-v*s.SECONDS_PER_HOUR,w=0|g/s.SECONDS_PER_MINUTE;g-=w*s.SECONDS_PER_MINUTE;var x=0|g,E=(g-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),n&&(x+=1),r(t)?(t.year=y,t.month=p,t.day=m,t.hour=v,t.minute=w,t.second=x,t.millisecond=E,t.isLeapSecond=n,t):new i(y,p,m,v,w,x,E,n)},C.toDate=function(e){var t=C.toGregorianDate(e,p),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))},C.toIso8601=function(t,n){var a,i=C.toGregorianDate(t,i);return r(n)||0===i.millisecond?r(n)&&0!==n?(a=(.01*i.millisecond).toFixed(n).replace(".","").slice(0,n),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",i.year,i.month,i.day,i.hour,i.minute,i.second):(a=(.01*i.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a))},C.clone=function(e,t){return r(e)?r(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new C(e.dayNumber,e.secondsOfDay,c.TAI):void 0},C.compare=function(e,t){var n=e.dayNumber-t.dayNumber;return 0!==n?n:e.secondsOfDay-t.secondsOfDay},C.equals=function(e,t){return e===t||r(e)&&r(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},C.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(C.secondsDifference(e,t))<=n},C.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},C.secondsDifference=function(e,t){var n=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return n+(e.secondsOfDay-t.secondsOfDay)},C.daysDifference=function(e,t){var n=e.dayNumber-t.dayNumber,r=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return n+r},C.computeTaiMinusUtc=function(e){g.julianDate=e;var n=C.leapSeconds,r=t(n,g,l);return 0>r&&(r=~r,--r,0>r&&(r=0)),n[r].offset},C.addSeconds=function(e,t,n){return h(e.dayNumber,e.secondsOfDay+t,n)},C.addMinutes=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return h(e.dayNumber,r,n)},C.addHours=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return h(e.dayNumber,r,n)},C.addDays=function(e,t,n){var r=e.dayNumber+t;return h(r,e.secondsOfDay,n)},C.lessThan=function(e,t){return C.compare(e,t)<0},C.lessThanOrEquals=function(e,t){return C.compare(e,t)<=0},C.greaterThan=function(e,t){return C.compare(e,t)>0},C.greaterThanOrEquals=function(e,t){return C.compare(e,t)>=0},C.prototype.clone=function(e){return C.clone(this,e)},C.prototype.equals=function(e){return C.equals(this,e)},C.prototype.equalsEpsilon=function(e,t){return C.equalsEpsilon(this,e,t)},C.prototype.toString=function(){return C.toIso8601(this)},C.leapSeconds=[new u(new C(2441317,43210,c.TAI),10),new u(new C(2441499,43211,c.TAI),11),new u(new C(2441683,43212,c.TAI),12),new u(new C(2442048,43213,c.TAI),13),new u(new C(2442413,43214,c.TAI),14),new u(new C(2442778,43215,c.TAI),15),new u(new C(2443144,43216,c.TAI),16),new u(new C(2443509,43217,c.TAI),17),new u(new C(2443874,43218,c.TAI),18),new u(new C(2444239,43219,c.TAI),19),new u(new C(2444786,43220,c.TAI),20),new u(new C(2445151,43221,c.TAI),21),new u(new C(2445516,43222,c.TAI),22),new u(new C(2446247,43223,c.TAI),23),new u(new C(2447161,43224,c.TAI),24),new u(new C(2447892,43225,c.TAI),25),new u(new C(2448257,43226,c.TAI),26),new u(new C(2448804,43227,c.TAI),27),new u(new C(2449169,43228,c.TAI),28),new u(new C(2449534,43229,c.TAI),29),new u(new C(2450083,43230,c.TAI),30),new u(new C(2450630,43231,c.TAI),31),new u(new C(2451179,43232,c.TAI),32),new u(new C(2453736,43233,c.TAI),33),new u(new C(2454832,43234,c.TAI),34),new u(new C(2456109,43235,c.TAI),35),new u(new C(2457204,43236,c.TAI),36)],C}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(n,r){if(null===n||"object"!=typeof n)return n;r=e(r,!1);var a=new n.constructor;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i];r&&(o=t(o,r)),a[i]=o}return a};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var n=e.split("\r\n"),r=0;r<n.length;++r){var a=n[r],i=a.indexOf(": ");if(i>0){var o=a.substring(0,i),u=a.substring(i+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var n=function(e,n,r){this.statusCode=e,this.response=n,this.responseHeaders=r,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return n.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},n}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,n,r,a,i){"use strict";function o(e,t){var n=decodeURIComponent(t);return e?atob(n):n}function u(e,t){for(var n=o(e,t),r=new ArrayBuffer(n.length),a=new Uint8Array(r),i=0;i<n.length;i++)a[i]=n.charCodeAt(i);return r}function s(e,n){n=t(n,"");var a=e[1],i=!!e[2],s=e[3];switch(n){case"":case"text":return o(i,s);case"arraybuffer":return u(i,s);case"blob":var c=u(i,s);return new Blob([c],{type:a});case"document":var l=new DOMParser;return l.parseFromString(o(i,s),a);case"json":return JSON.parse(o(i,s));default:throw new r("Unhandled responseType: "+n)}}var c=function(n){n=t(n,t.EMPTY_OBJECT);var r=n.responseType,a=t(n.method,"GET"),i=n.data,o=n.headers,u=n.overrideMimeType;return e(n.url,function(t){var n=e.defer();return c.load(t,r,a,i,o,n,u),n.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,r,o,u,c,f){var d=l.exec(e);if(null!==d)return c.resolve(s(d,t)),void 0;var h=new XMLHttpRequest;if(n(f)&&n(h.overrideMimeType)&&h.overrideMimeType(f),h.open(r,e,!0),n(u))for(var m in u)u.hasOwnProperty(m)&&h.setRequestHeader(m,u[m]);n(t)&&(h.responseType=t),h.onload=function(){200===h.status?n(h.response)?c.resolve(h.response):n(h.responseXML)&&h.responseXML.hasChildNodes()?c.resolve(h.responseXML):n(h.responseText)?c.resolve(h.responseText):c.reject(new i("unknown XMLHttpRequest response type.")):c.reject(new a(h.status,h.response,h.getAllResponseHeaders()))},h.onerror=function(){c.reject(new a)},h.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,n){return e({url:t,headers:n})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,n,r){"use strict";var a={Accept:"application/json,*/*;q=0.01"},i=function(n,i){return t(i)?t(i.Accept)||(i=e(i),i.Accept=a.Accept):i=a,r(n,i).then(function(e){return JSON.parse(e) +})};return i}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c,l,f){"use strict";function d(e,t){return o.compare(e.julianDate,t)}function h(e,n){if(!r(n.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!r(n.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var a=n.columnNames.indexOf("modifiedJulianDateUtc"),i=n.columnNames.indexOf("xPoleWanderRadians"),s=n.columnNames.indexOf("yPoleWanderRadians"),c=n.columnNames.indexOf("ut1MinusUtcSeconds"),h=n.columnNames.indexOf("xCelestialPoleOffsetRadians"),m=n.columnNames.indexOf("yCelestialPoleOffsetRadians"),p=n.columnNames.indexOf("taiMinusUtcSeconds");if(0>a||0>i||0>s||0>c||0>h||0>m||0>p)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=n.samples,v=e._dates=[];e._dateColumn=a,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=h,e._yCelestialPoleOffsetRadiansColumn=m,e._taiMinusUtcSecondsColumn=p,e._columnCount=n.columnNames.length,e._lastIndex=void 0;for(var g,w=e._addNewLeapSeconds,x=0,E=y.length;E>x;x+=e._columnCount){var S=y[x+a],M=y[x+p],_=S+l.MODIFIED_JULIAN_DATE_DIFFERENCE,O=new o(_,M,f.TAI);if(v.push(O),w){if(M!==g&&r(g)){var T=o.leapSeconds,R=t(T,O,d);if(0>R){var P=new u(O,M);T.splice(~R,0,P)}}g=M}}}function m(e,t,n,r,a){var i=n*r;a.xPoleWander=t[i+e._xPoleWanderRadiansColumn],a.yPoleWander=t[i+e._yPoleWanderRadiansColumn],a.xPoleOffset=t[i+e._xCelestialPoleOffsetRadiansColumn],a.yPoleOffset=t[i+e._yCelestialPoleOffsetRadiansColumn],a.ut1MinusUtc=t[i+e._ut1MinusUtcSecondsColumn]}function p(e,t,n){return t+e*(n-t)}function y(e,t,n,r,a,i,u){var s=e._columnCount;if(i>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u;var c=t[a],l=t[i];if(c.equals(l)||r.equals(c))return m(e,n,a,s,u),u;if(r.equals(l))return m(e,n,i,s,u),u;var f=o.secondsDifference(r,c)/o.secondsDifference(l,c),d=a*s,h=i*s,y=n[d+e._ut1MinusUtcSecondsColumn],v=n[h+e._ut1MinusUtcSecondsColumn],g=v-y;if(g>.5||-.5>g){var w=n[d+e._taiMinusUtcSecondsColumn],x=n[h+e._taiMinusUtcSecondsColumn];w!==x&&(l.equals(r)?y=v:v-=x-w)}return u.xPoleWander=p(f,n[d+e._xPoleWanderRadiansColumn],n[h+e._xPoleWanderRadiansColumn]),u.yPoleWander=p(f,n[d+e._yPoleWanderRadiansColumn],n[h+e._yPoleWanderRadiansColumn]),u.xPoleOffset=p(f,n[d+e._xCelestialPoleOffsetRadiansColumn],n[h+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=p(f,n[d+e._yCelestialPoleOffsetRadiansColumn],n[h+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=p(f,y,v),u}var v=function(t){if(t=n(t,n.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=n(t.addNewLeapSeconds,!0),r(t.data))h(this,t.data);else if(r(t.url)){var a=this;this._downloadPromise=e(s(t.url),function(e){h(a,e)},function(){a._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else h(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return v.NONE=i({getPromiseToLoad:function(){return e()},compute:function(e,t){return r(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new a(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,n){if(!r(this._samples)){if(r(this._dataError))throw new c(this._dataError);return void 0}if(r(n)||(n=new a(0,0,0,0,0)),0===this._samples.length)return n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0,n;var i=this._dates,u=this._lastIndex,s=0,l=0;if(r(u)){var f=i[u],d=i[u+1],h=o.lessThanOrEquals(f,e),m=!r(d),p=m||o.greaterThanOrEquals(d,e);if(h&&p)return s=u,!m&&d.equals(e)&&++s,l=s+1,y(this,i,this._samples,e,s,l,n),n}var v=t(i,e,o.compare,this._dateColumn);return v>=0?(v<i.length-1&&i[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,i,this._samples,e,s,l,n),n},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var n=r.exec(t);this.scheme=n[1],this.authority=n[2],this.path=n[3],this.query=n[4],this.fragment=n[5]}}function t(e){var t=unescape(e);return i.test(t)?t:e.toUpperCase()}function n(e,t,n,r){return(t||"")+n.toLowerCase()+(r||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var r=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,n).replace(a,t)),this.path&&(this.path=this.path.replace(a,t)),this.query&&(this.query=this.query.replace(a,t)),this.fragment&&(this.fragment=this.fragment.replace(a,t))};var a=/%[0-9a-z]{2}/gi,i=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var n=new e;return this.scheme?(n.scheme=this.scheme,n.authority=this.authority,n.path=this.path,n.query=this.query):(n.scheme=t.scheme,this.authority?(n.authority=this.authority,n.path=this.path,n.query=this.query):(n.authority=t.authority,""==this.path?(n.path=t.path,n.query=this.query||t.query):("/"==this.path.charAt(0)?(n.path=this.path,n.removeDotSegments()):(n.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,n.removeDotSegments()),n.query=this.query))),n.fragment=this.fragment,n},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),n=[],r=""==t[0];for(r&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?n.pop():"."!=e&&n.push(e);("."==e||".."==e)&&n.push(""),r&&n.unshift(""),this.path=n.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,n,r){"use strict";function a(){for(var e=document.getElementsByTagName("script"),t=0,n=e.length;n>t;++t){var r=e[t].getAttribute("src"),a=f.exec(r);if(null!==a)return a[1]}return void 0}function i(){if(t(s))return s;var r;if(r="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:a(),!t(r))throw new n("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(r).resolve(new e(document.location.href))}function o(e){return r.toUrl("../"+e)}function u(t){return new e(t).resolve(i()).toString()}var s,c,l,f=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,d=function(e){t(c)||(c=t(r.toUrl)?o:u),t(l)||(l=document.createElement("a"));var n=c(e);return l.href=n,l.href=l.href,l.href};return d._cesiumScriptRegex=f,d.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},d}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,n){this.x=e,this.y=t,this.s=n};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,n,r,a,i,o,u){"use strict";function s(e,t,n){var r=f;return r.dayNumber=t,r.secondsOfDay=n,i.daysDifference(r,e._sampleZeroDateTT)}function c(n,a){if(n._chunkDownloadsInProgress[a])return n._chunkDownloadsInProgress[a];var i=e.defer();n._chunkDownloadsInProgress[a]=i;var u,s=n._xysFileUrlTemplate;return u=r(s)?s.replace("{0}",a):t("Assets/IAU2006_XYS/IAU2006_XYS_"+a+".json"),e(o(u),function(e){n._chunkDownloadsInProgress[a]=!1;for(var t=n._samples,r=e.samples,o=3*a*n._samplesPerXysFile,u=0,s=r.length;s>u;++u)t[o+u]=r[u];i.resolve()}),i.promise}var l=function(e){e=n(e,n.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=n(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=n(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new i(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=n(e.stepSizeDays,1),this._samplesPerXysFile=n(e.samplesPerXysFile,1e3),this._totalSamples=n(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,r=this._denominators=new Array(t+1),a=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){r[s]=o,a[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(r[s]*=s-c);r[s]=1/r[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},f=new i(0,0,u.TAI);return l.prototype.preload=function(t,n,r,a){var i=s(this,t,n),o=s(this,r,a),u=0|i/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var f=0|u/this._samplesPerXysFile,d=0|l/this._samplesPerXysFile,h=[],m=f;d>=m;++m)h.push(c(this,m));return e.all(h)},l.prototype.computeXysRadians=function(e,t,n){var i=s(this,e,t);if(0>i)return void 0;var o=0|i/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var f=l+u;f>=this._totalSamples&&(f=this._totalSamples-1,l=f-u,0>l&&(l=0));var d=!1,h=this._samples;if(r(h[3*l])||(c(this,0|l/this._samplesPerXysFile),d=!0),r(h[3*f])||(c(this,0|f/this._samplesPerXysFile),d=!0),d)return void 0;r(n)?(n.x=0,n.y=0,n.s=0):n=new a(0,0,0);var m,p,y=i-l*this._stepSizeDays,v=this._work,g=this._denominators,w=this._coef,x=this._xTable;for(m=0;u>=m;++m)v[m]=y-x[m];for(m=0;u>=m;++m){for(w[m]=1,p=0;u>=p;++p)p!==m&&(w[m]*=v[p]);w[m]*=g[m];var E=3*(l+m);n.x+=w[m]*h[E++],n.y+=w[m]*h[E++],n.s+=w[m]*h[E]}return n},l}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(a,0)},c=new e;s.fromAxisAngle=function(t,r,a){var i=r/2,o=Math.sin(i);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,d=Math.cos(i);return n(a)?(a.x=u,a.y=l,a.z=f,a.w=d,a):new s(u,l,f,d)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var r,a,i,o,c,d=e[u.COLUMN0ROW0],h=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],p=d+h+m;if(p>0)r=Math.sqrt(p+1),c=.5*r,r=.5/r,a=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*r,i=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*r,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*r;else{var y=l,v=0;h>d&&(v=1),m>d&&m>h&&(v=2);var g=y[v],w=y[g];r=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=f;x[v]=.5*r,r=.5/r,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*r,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*r,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*r,a=-x[0],i=-x[1],o=-x[2]}return n(t)?(t.x=a,t.y=i,t.z=o,t.w=c,t):new s(a,i,o,c)};var d=new s;s.fromHeadingPitchRoll=function(t,n,r,a){var i=s.fromAxisAngle(e.UNIT_X,r,d),o=s.fromAxisAngle(e.UNIT_Y,-n,a);a=s.multiply(o,i,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,d);return s.multiply(u,a,a)};var h=new e,m=new e,p=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.x=e[r],a.y=e[r+1],a.z=e[r+2],a.w=e[r+3],a},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,n,r){s.unpack(e,4*n,v),s.conjugate(v,v);for(var a=0,i=n-t+1;i>a;a++){var o=3*a;s.unpack(e,4*(t+a),p),s.multiply(p,v,p),p.w<0&&s.negate(p,p),s.computeAxis(p,h);var u=s.computeAngle(p);r[o]=h.x*u,r[o+1]=h.y*u,r[o+2]=h.z*u}},s.unpackInterpolationResult=function(t,r,a,i,o){n(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(r,4*i,y),0===u?s.clone(s.IDENTITY,p):s.fromAxisAngle(m,u,p),s.multiply(p,y,o)},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var n=1/s.magnitude(e),r=e.x*n,a=e.y*n,i=e.z*n,o=e.w*n;return t.x=r,t.y=a,t.z=i,t.w=o,t},s.inverse=function(e,t){var n=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/n,t)},s.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},s.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+r*l+a*c-i*s,d=o*s-r*c+a*l+i*u,h=o*c+r*s-a*u+i*l,m=o*l-r*u-a*s-i*c;return n.x=f,n.y=d,n.z=h,n.w=m,n},s.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},s.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},s.computeAxis=function(e,t){var n=e.w;if(Math.abs(n-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var r=1/Math.sqrt(1-n*n);return t.x=e.x*r,t.y=e.y*r,t.z=e.z*r,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,n,r){return g=s.multiplyByScalar(t,n,g),r=s.multiplyByScalar(e,1-n,r),s.add(g,r,r)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,n,r){var a=s.dot(e,t),i=t;if(0>a&&(a=-a,i=w=s.negate(t,w)),1-a<o.EPSILON6)return s.lerp(e,i,n,r);var u=Math.acos(a);return x=s.multiplyByScalar(e,Math.sin((1-n)*u),x),E=s.multiplyByScalar(i,Math.sin(n*u),E),r=s.add(x,E,r),s.multiplyByScalar(r,1/Math.sin(u),r)},s.log=function(t,n){var r=o.acosClamped(t.w),a=0;return 0!==r&&(a=r/Math.sin(r)),e.multiplyByScalar(t,a,n)},s.exp=function(t,n){var r=e.magnitude(t),a=0;return 0!==r&&(a=Math.sin(r)/r),n.x=t.x*a,n.y=t.y*a,n.z=t.z*a,n.w=Math.cos(r),n};var S=new e,M=new e,_=new s,O=new s;s.computeInnerQuadrangle=function(t,n,r,a){var i=s.conjugate(n,_);s.multiply(i,r,O);var o=s.log(O,S);s.multiply(i,t,O);var u=s.log(O,M);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,_),s.multiply(n,_,a)},s.squad=function(e,t,n,r,a,i){var o=s.slerp(e,t,a,_),u=s.slerp(n,r,a,O);return s.slerp(o,u,2*a*(1-a),i)};for(var T=new s,R=1.9011074535173003,P=a.supportsTypedArrays()?new Float32Array(8):[],C=a.supportsTypedArrays()?new Float32Array(8):[],N=a.supportsTypedArrays()?new Float32Array(8):[],I=a.supportsTypedArrays()?new Float32Array(8):[],z=0;7>z;++z){var b=z+1,A=2*b+1;P[z]=1/(b*A),C[z]=b/A}return P[7]=R/136,C[7]=8*R/17,s.fastSlerp=function(e,t,n,r){var a,i=s.dot(e,t);i>=0?a=1:(a=-1,i=-i);for(var o=i-1,u=1-n,c=n*n,l=u*u,f=7;f>=0;--f)N[f]=(P[f]*c-C[f])*o,I[f]=(P[f]*l-C[f])*o;var d=a*n*(1+N[0]*(1+N[1]*(1+N[2]*(1+N[3]*(1+N[4]*(1+N[5]*(1+N[6]*(1+N[7])))))))),h=u*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),m=s.multiplyByScalar(e,h,T);return s.multiplyByScalar(t,d,r),s.add(m,r,r)},s.fastSquad=function(e,t,n,r,a,i){var o=s.fastSlerp(e,t,a,_),u=s.fastSlerp(n,r,a,O);return s.fastSlerp(o,u,2*a*(1-a),i)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},s.ZERO=i(new s(0,0,0,0)),s.IDENTITY=i(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,n,r,a,i,o,u,s,c,l,f,d,h,m,p,y,v){"use strict";var g={},w=new n,x=new n,E=new n;g.eastNorthUpToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=-o,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=s.x,r[1]=s.y,r[2]=s.z,r[3]=0,r[4]=l.x,r[5]=l.y,r[6]=l.z,r[7]=0,r[8]=u.x,r[9]=u.y,r[10]=u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var S=new n,M=new n,_=new n;g.northEastDownToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=-o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=S,s=M,l=_;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=s.x,r[5]=s.y,r[6]=s.z,r[7]=0,r[8]=-u.x,r[9]=-u.y,r[10]=-u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},g.northUpEastToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=o,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=u.x,r[5]=u.y,r[6]=u.z,r[7]=0,r[8]=s.x,r[9]=s.y,r[10]=s.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var O=new y,T=new n(1,1,1),R=new p;g.headingPitchRollToFixedFrame=function(e,t,r,a,i,o){var u=y.fromHeadingPitchRoll(t,r,a,O),s=p.fromTranslationQuaternionRotationScale(n.ZERO,u,T,R);return o=g.eastNorthUpToFixedFrame(e,i,o),p.multiply(o,s,o)};var P=new p,C=new m;g.headingPitchRollQuaternion=function(e,t,n,r,a,i){var o=g.headingPitchRollToFixedFrame(e,t,n,r,a,P),u=p.getRotation(o,C);return y.fromRotationMatrix(u,i)};var N=24110.54841,I=8640184.812866,z=.093104,b=-62e-7,A=1.1772758384668e-19,D=72921158553e-15,q=h.TWO_PI/86400,U=new d;g.computeTemeToPseudoFixedMatrix=function(e,t){U=d.addSeconds(e,-d.computeTaiMinusUtc(e),U);var n,r=U.dayNumber,a=U.secondsOfDay,o=r-2451545;n=a>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=N+n*(I+n*(z+n*b)),s=u*q%h.TWO_PI,c=D+A*(r-2451545.5),l=(a+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,f=s+c*l,p=Math.cos(f),y=Math.sin(f);return i(t)?(t[0]=p,t[1]=-y,t[2]=0,t[3]=y,t[4]=p,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new m(p,y,0,-y,p,0,0,0,1)},g.iau2006XysData=new l,g.earthOrientationParameters=u.NONE;var L=32.184,B=2451545;g.preloadIcrfFixed=function(t){var n=t.start.dayNumber,r=t.start.secondsOfDay+L,a=t.stop.dayNumber,i=t.stop.secondsOfDay+L,o=g.iau2006XysData.preload(n,r,a,i),u=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},g.computeIcrfToFixedMatrix=function(e,t){i(t)||(t=new m);var n=g.computeFixedToIcrfMatrix(e,t);return i(n)?m.transpose(n,t):void 0};var W=new f(0,0,0),F=new s(0,0,0,0,0,0),G=new m,k=new m;g.computeFixedToIcrfMatrix=function(e,t){i(t)||(t=new m);var n=g.earthOrientationParameters.compute(e,F);if(!i(n))return void 0;var r=e.dayNumber,a=e.secondsOfDay+L,o=g.iau2006XysData.computeXysRadians(r,a,W);if(!i(o))return void 0;var u=o.x+n.xPoleOffset,s=o.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=G;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var f=m.fromRotationZ(-o.s,k),p=m.multiply(l,f,G),y=e.dayNumber,w=e.secondsOfDay-d.computeTaiMinusUtc(e)+n.ut1MinusUtc,x=y-2451545,E=w/v.SECONDS_PER_DAY,S=.779057273264+E+.00273781191135448*(x+E);S=S%1*h.TWO_PI;var M=m.fromRotationZ(S,k),_=m.multiply(p,M,G),O=Math.cos(n.xPoleWander),T=Math.cos(n.yPoleWander),R=Math.sin(n.xPoleWander),P=Math.sin(n.yPoleWander),C=r-B+a/v.SECONDS_PER_DAY;C/=36525;var N=-47e-6*C*h.RADIANS_PER_DEGREE/3600,I=Math.cos(N),z=Math.sin(N),b=k;return b[0]=O*I,b[1]=O*z,b[2]=R,b[3]=-T*z+P*R*I,b[4]=T*I+P*R*z,b[5]=-P*O,b[6]=-P*z-T*R*I,b[7]=P*I-T*R*z,b[8]=T*O,m.multiply(_,b,t)};var j=new r;g.pointToWindowCoordinates=function(e,t,n,r){return r=g.pointToGLWindowCoordinates(e,t,n,r),r.y=2*t[5]-r.y,r},g.pointToGLWindowCoordinates=function(e,n,a,o){i(o)||(o=new t);var u=j;return p.multiplyByVector(e,r.fromElements(a.x,a.y,a.z,1,u),u),r.multiplyByScalar(u,1/u.w,u),p.multiplyByVector(n,u,u),t.fromCartesian4(u,o)};var Y=new n,H=new n,V=new n;return g.rotationMatrixFromPositionVelocity=function(e,t,r,o){var u=a(r,c.WGS84).geodeticSurfaceNormal(e,Y),s=n.cross(t,u,H);n.equalsEpsilon(s,n.ZERO,h.EPSILON6)&&(s=n.clone(n.UNIT_X,s));var l=n.cross(s,t,V);return n.cross(t,l,s),n.negate(s,s),i(o)||(o=new m),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},g}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,n,r,a,i,o,u,s,c,l,f,d,h,m){"use strict";var p=new r,y=function(e,t){t=a(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var r=m.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=n.fromCartesian4(f.getColumn(r,0,p)),this._yAxis=n.fromCartesian4(f.getColumn(r,1,p));var i=n.fromCartesian4(f.getColumn(r,2,p));this._plane=d.fromPointNormal(e,i)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,n){var r=e.fromPoints(t,v);return new y(r.center,n)};var g=new h,w=new n;y.prototype.projectPointOntoPlane=function(e,r){var a=g;a.origin=e,n.normalize(e,a.direction);var o=c.rayPlane(a,this._plane,w);if(i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w)),i(o)){var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return i(r)?(r.x=s,r.y=l,r):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){i(t)||(t=[]);for(var n=0,r=e.length,a=0;r>a;a++){var o=this.projectPointOntoPlane(e[a],t[n]);i(o)&&(t[n]=o,n++)}return t.length=n,t},y.prototype.projectPointToNearestOnPlane=function(e,r){i(r)||(r=new t);var a=g;a.origin=e,n.clone(this._plane.normal,a.direction);var o=c.rayPlane(a,this._plane,w);i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w));var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return r.x=s,r.y=l,r},y.prototype.projectPointsToNearestOnPlane=function(e,t){i(t)||(t=[]);var n=e.length;t.length=n;for(var r=0;n>r;r++)t[r]=this.projectPointToNearestOnPlane(e[r],t[r]);return t};var x=new n;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var r=e.length;i(t)?t.length=r:t=new Array(r);for(var a=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;r>l;++l){var f=e[l];n.multiplyByScalar(u,f.x,c),i(t[l])||(t[l]=new n);var d=n.add(o,c,t[l]);n.multiplyByScalar(s,f.y,c),n.add(d,c,d),a.scaleToGeocentricSurface(d,d)}return t},y}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=new t,a=new t,i=new t,o=function(o,u,s,c,l){n(l)||(l=new t);var f,d,h,m,p,y,v,g;n(u.z)?(f=t.subtract(s,u,r),d=t.subtract(c,u,a),h=t.subtract(o,u,i),m=t.dot(f,f),p=t.dot(f,d),y=t.dot(f,h),v=t.dot(d,d),g=t.dot(d,h)):(f=e.subtract(s,u,r),d=e.subtract(c,u,a),h=e.subtract(o,u,i),m=e.dot(f,f),p=e.dot(f,d),y=e.dot(f,h),v=e.dot(d,d),g=e.dot(d,h));var w=1/(m*v-p*p);return l.y=(v*y-p*g)*w,l.z=(m*g-p*y)*w,l.x=1-l.y-l.z,l};return o}),define("Core/pointInsideTriangle",["./barycentricCoordinates","./Cartesian3"],function(e,t){"use strict";var n=new t,r=function(t,r,a,i){return e(t,r,a,i,n),n.x>0&&n.y>0&&n.z>0};return r}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(e){var t=e._uSquared,n=e._ellipsoid.maximumRadius,r=e._ellipsoid.minimumRadius,a=(n-r)/n,i=Math.cos(e._startHeading),o=Math.sin(e._startHeading),u=(1-a)*Math.tan(e._start.latitude),s=1/Math.sqrt(1+u*u),c=s*u,l=Math.atan2(u,i),f=s*o,d=f*f,h=1-d,m=Math.sqrt(h),p=t/4,y=p*p,v=y*p,g=y*y,w=1+p-3*y/4+5*v/4-175*g/64,x=1-p+15*y/8-35*v/8,E=1-3*p+35*y/4,S=1-5*p,M=w*l-x*Math.sin(2*l)*p/2-E*Math.sin(4*l)*y/16-S*Math.sin(6*l)*v/48-5*Math.sin(8*l)*g/512,_=e._constants;_.a=n,_.b=r,_.f=a,_.cosineHeading=i,_.sineHeading=o,_.tanU=u,_.cosineU=s,_.sineU=c,_.sigma=l,_.sineAlpha=f,_.sineSquaredAlpha=d,_.cosineSquaredAlpha=h,_.cosineAlpha=m,_.u2Over4=p,_.u4Over16=y,_.u6Over64=v,_.u8Over256=g,_.a0=w,_.a1=x,_.a2=E,_.a3=S,_.distanceRatio=M}function c(e,t){return e*t*(4+e*(4-3*t))/16}function l(e,t,n,r,a,i,o){var u=c(e,n);return(1-u)*e*t*(r+u*a*(o+u*i*(2*o*o-1)))}function f(e,t,n,r,a,i,o){var s,c,f,d,h,m=(t-n)/t,p=i-r,y=Math.atan((1-m)*Math.tan(a)),v=Math.atan((1-m)*Math.tan(o)),g=Math.cos(y),w=Math.sin(y),x=Math.cos(v),E=Math.sin(v),S=g*x,M=g*E,_=w*E,O=w*x,T=p,R=u.TWO_PI,P=Math.cos(T),C=Math.sin(T);do{P=Math.cos(T),C=Math.sin(T);var N=M-O*P;f=Math.sqrt(x*x*C*C+N*N),c=_+S*P,s=Math.atan2(f,c);var I;0===f?(I=0,d=1):(I=S*C/f,d=1-I*I),R=T,h=c-2*_/d,isNaN(h)&&(h=0),T=p+l(m,I,d,s,f,c,h)}while(Math.abs(T-R)>u.EPSILON12);var z=d*(t*t-n*n)/(n*n),b=1+z*(4096+z*(z*(320-175*z)-768))/16384,A=z*(256+z*(z*(74-47*z)-128))/1024,D=h*h,q=A*f*(h+A*(c*(2*D-1)-A*h*(4*f*f-3)*(4*D-3)/6)/4),U=n*b*(s-q),L=Math.atan2(x*C,M-O*P),B=Math.atan2(g*C,M*P-O);e._distance=U,e._startHeading=L,e._endHeading=B,e._uSquared=z}function d(n,r,a,i){e.normalize(i.cartographicToCartesian(r,m),h),e.normalize(i.cartographicToCartesian(a,m),m),f(n,i.maximumRadius,i.minimumRadius,r.longitude,r.latitude,a.longitude,a.latitude),n._start=t.clone(r,n._start),n._end=t.clone(a,n._end),n._start.height=0,n._end.height=0,s(n)}var h=new e,m=new e,p=function(e,a,i){var u=n(i,o.WGS84);this._ellipsoid=u,this._start=new t,this._end=new t,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,r(e)&&r(a)&&d(this,e,a,u)};return a(p.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),p.prototype.setEndPoints=function(e,t){d(this,e,t,this._ellipsoid)},p.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)},p.prototype.interpolateUsingSurfaceDistance=function(e,n){var a=this._constants,i=a.distanceRatio+e/a.b,o=Math.cos(2*i),u=Math.cos(4*i),s=Math.cos(6*i),c=Math.sin(2*i),f=Math.sin(4*i),d=Math.sin(6*i),h=Math.sin(8*i),m=i*i,p=i*m,y=a.u8Over256,v=a.u2Over4,g=a.u6Over64,w=a.u4Over16,x=2*p*y*o/3+i*(1-v+7*w/4-15*g/4+579*y/64-(w-15*g/4+187*y/16)*o-(5*g/4-115*y/16)*u-29*y*s/16)+(v/2-w+71*g/32-85*y/16)*c+(5*w/16-5*g/4+383*y/96)*f-m*((g-11*y/2)*c+5*y*f/2)+(29*g/96-29*y/16)*d+539*y*h/1536,E=Math.asin(Math.sin(x)*a.cosineAlpha),S=Math.atan(a.a/a.b*Math.tan(E));x-=a.sigma;var M=Math.cos(2*a.sigma+x),_=Math.sin(x),O=Math.cos(x),T=a.cosineU*O,R=a.sineU*_,P=Math.atan2(_*a.sineHeading,T-R*a.cosineHeading),C=P-l(a.f,a.sineAlpha,a.cosineSquaredAlpha,x,_,O,M);return r(n)?(n.longitude=this._start.longitude+C,n.latitude=S,n.height=0,n):new t(this._start.longitude+C,S,0)},p}),define("Core/isArray",["./defined"],function(e){"use strict";var t=Array.isArray;return e(t)||(t=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(e,t,n,r,a,i,o,u,s,c,l,f){"use strict";function d(e,t,n){var r=_;r.length=e;var a;if(t===n){for(a=0;e>a;a++)r[a]=t;return r}var i=n-t,o=i/e;for(a=0;e>a;a++){var u=t+a*o;r[a]=u}return r}function h(t,n,r,a,i,o,u,s){var c=a.scaleToGeodeticSurface(t,P),l=a.scaleToGeodeticSurface(n,C),f=m.numberOfPoints(t,n,r),h=a.cartesianToCartographic(c,O),p=a.cartesianToCartographic(l,T),y=d(f,i,o);N.setEndPoints(h,p);var v=N.surfaceDistance/f,g=s;h.height=i;var w=a.cartographicToCartesian(h,R);e.pack(w,u,g),g+=3;for(var x=1;f>x;x++){var E=N.interpolateUsingSurfaceDistance(x*v,T);E.height=y[x],w=a.cartographicToCartesian(E,R),e.pack(w,u,g),g+=3}return g}var m={};m.numberOfPoints=function(t,n,r){var a=e.distance(t,n);return Math.ceil(a/r)};var p=new t;m.extractHeights=function(e,t){for(var n=e.length,r=new Array(n),a=0;n>a;a++){var i=e[a];r[a]=t.cartesianToCartographic(i,p).height}return r};var y=new l,v=new e,g=new e,w=new f(e.ZERO,0),x=new e,E=new f(e.ZERO,0),S=new e,M=new e,_=[],O=new t,T=new t,R=new e,P=new e,C=new e,N=new o;m.wrapLongitude=function(t,a){var i=[],o=[];if(r(t)&&t.length>0){a=n(a,l.IDENTITY);var s=l.inverseTransformation(a,y),c=l.multiplyByPoint(s,e.ZERO,v),d=l.multiplyByPointAsVector(s,e.UNIT_Y,g),h=f.fromPointNormal(c,d,w),m=l.multiplyByPointAsVector(s,e.UNIT_X,x),p=f.fromPointNormal(c,m,E),_=1;i.push(e.clone(t[0]));for(var O=i[0],T=t.length,R=1;T>R;++R){var P=t[R];if(f.getPointDistance(p,O)<0||f.getPointDistance(p,P)<0){var C=u.lineSegmentPlane(O,P,h,S);if(r(C)){var N=e.multiplyByScalar(d,5e-9,M);f.getPointDistance(h,O)<0&&e.negate(N,N),i.push(e.add(C,N,new e)),o.push(_+1),e.negate(N,N),i.push(e.add(C,N,new e)),_=1}}i.push(e.clone(t[R])),_++,O=P}o.push(_)}return{positions:i,lengths:o} +};var I=c.EPSILON7;return m.removeDuplicates=function(t){var n=t.length;if(2>n)return t;var r,a,i;for(r=1;n>r&&(a=t[r-1],i=t[r],!e.equalsEpsilon(a,i,I));++r);if(r===n)return t;for(var o=t.slice(0,r);n>r;++r)i=t[r],e.equalsEpsilon(a,i,I)||(o.push(e.clone(i)),a=i);return o},m.generateArc=function(t){r(t)||(t={});var a=t.positions,o=a.length,u=n(t.ellipsoid,i.WGS84),l=n(t.height,0);if(1>o)return[];if(1===o){var f=u.scaleToGeodeticSurface(a[0],P);if(0!==l){var d=u.geodeticSurfaceNormal(f,R);e.multiplyByScalar(d,l,d),e.add(f,d,f)}return[f.x,f.y,f.z]}var p=t.minDistance;if(!r(p)){var y=n(t.granularity,c.RADIANS_PER_DEGREE);p=c.chordLength(y,u.maximumRadius)}var v,g=0;for(v=0;o-1>v;v++)g+=m.numberOfPoints(a[v],a[v+1],p);var w=3*(g+1),x=new Array(w),E=0,S=s(l);for(v=0;o-1>v;v++){var M=a[v],T=a[v+1],C=S?l[v]:l,N=S?l[v+1]:l;E=h(M,T,p,u,C,N,x,E)}_.length=0;var I=a[o-1],z=u.cartesianToCartographic(I,O);z.height=S?l[o-1]:l;var b=u.cartographicToCartesian(z,R);return e.pack(b,x,w-3),x},m.generateCartesianArc=function(t){for(var n=m.generateArc(t),r=n.length/3,a=new Array(r),i=0;r>i;i++)a[i]=e.unpack(n,3*i);return a},m}),define("Core/Queue",[],function(){"use strict";var e=function(){this._array=[],this._offset=0,this.length=0};return e.prototype.enqueue=function(e){this._array.push(e),this.length++},e.prototype.dequeue=function(){if(0===this.length)return void 0;var e=this._array,t=this._offset,n=e[t];return e[t]=void 0,t++,t>10&&2*t>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this.length--,n},e.prototype.contains=function(e){return-1!==this._array.indexOf(e)},e.prototype.clear=function(){this._array.length=this._offset=this.length=0},e.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)},e}),define("Core/WindingOrder",["./freezeObject"],function(e){"use strict";var t={CLOCKWISE:2304,COUNTER_CLOCKWISE:2305,validate:function(e){return e===t.CLOCKWISE||e===t.COUNTER_CLOCKWISE}};return e(t)}),define("Core/PolygonPipeline",["./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./Math","./pointInsideTriangle","./PolylinePipeline","./PrimitiveType","./Queue","./WindingOrder"],function(e,t,n,r,a,i,o,u,s,c,l,f,d,h,m,p){"use strict";function y(t,n,r){var a=e.subtract(n,t,q),i=e.subtract(r,n,U);return a.x*i.y-a.y*i.x>=0}function v(e){for(var t=e[0].x,n=0,r=0;r<e.length;r++)e[r].x>t&&(t=e[r].x,n=r);return n}function g(e){for(var t=e[0][0].x,n=0,r=0;r<e.length;r++){var a=e[r][v(e[r])].x;a>t&&(t=a,n=r)}return n}function w(e){for(var t=[],n=0;n<e.length;n++){var r=e[(n-1+e.length)%e.length],a=e[n],i=e[(n+1)%e.length];y(r,a,i)||t.push(a)}return t}function x(t,n){for(var r=0;r<t.length;r++)if(e.equals(n,t[r]))return r;return-1}function E(n,a,i){i=r(i,[]);var o=Number.MAX_VALUE,u=v(a),s=new e(a[u].x,n.y);i.push(u),i.push((u+1)%a.length);for(var c=a[0].x,l=c,f=1;f<a.length;++f)a[f].x<c?c=a[f].x:a[f].x>l&&(l=a[f].x);l+=l-c;var d=new t(l,n.y,0);for(f=0;f<a.length;f++){var h=a[f],m=a[(f+1)%a.length];if((h.x>=n.x||m.x>=n.x)&&(h.y>=n.y&&m.y<=n.y||h.y<=n.y&&m.y>=n.y)){var p=(m.y-h.y)*(d.x-n.x)-(m.x-h.x)*(d.y-n.y);if(0!==p){p=1/p;var y=((m.x-h.x)*(n.y-h.y)-(m.y-h.y)*(n.x-h.x))*p,g=((d.x-n.x)*(n.y-h.y)-(d.y-n.y)*(n.x-h.x))*p;if(y>=0&&1>=y&&g>=0&&1>=g){var w=new e(n.x+y*(d.x-n.x),n.y+y*(d.y-n.y)),x=e.subtract(w,n,L);p=e.magnitudeSquared(x),o>p&&(s=w,o=p,i[0]=f,i[1]=(f+1)%a.length)}}}}return s}function S(t,n){var r=g(n),a=n[r],i=v(a),o=a[i],u=[],s=E(o,t,u),c=x(t,s);if(-1!==c)return c;var d=e.magnitudeSquared(e.subtract(t[u[0]],o,B)),h=e.magnitudeSquared(e.subtract(t[u[1]],o,B)),m=h>d?t[u[0]]:t[u[1]],p=w(t),y=p.indexOf(m);-1!==y&&p.splice(y,1);for(var S=[],M=0;M<p.length;M++){var _=p[M];f(_,o,s,m)&&S.push(_)}var O=Number.MAX_VALUE;if(S.length>0){var T=e.fromElements(1,0,B);for(M=0;M<S.length;M++){var R=e.subtract(S[M],o,W),P=e.magnitude(T)*e.magnitudeSquared(R);if(0!==P){var C=Math.abs(l.acosClamped(e.dot(T,R)/P));O>C&&(O=C,m=S[M])}}}return t.indexOf(m)}function M(e,n,r){for(var a=et.computeWindingOrder2D(e),i=0;i<n.length;i++){var o=n[i];t.equals(o[0],o[o.length-1])||o.push(o[0]);var s=et.computeWindingOrder2D(o);s===a&&o.reverse()}var c=u.fromPoints(e,r),l=c.projectPointsOntoPlane(e),f=[];for(i=0;i<n.length;i++)f.push(c.projectPointsOntoPlane(n[i]));var d=S(l,f),h=g(f),m=v(f[h]),p=n[h],y=[];for(i=0;i<e.length;i++)y.push(e[i]);var w,x=[];if(0!==m)for(w=0;w<=p.length;w++){var E=(w+m)%p.length;0!==E&&x.push(p[E])}else for(w=0;w<p.length;w++)x.push(p[(w+m)%p.length]);var M=y.lastIndexOf(e[d]);x.push(e[M]);var _=y.slice(0,M+1),O=y.slice(M+1);return y=_.concat(x,O),n.splice(h,1),y}function _(e){var t=l.nextRandomNumber(),n=Math.floor(t*e);return n===e&&n--,n}function O(e,t,n,r){var a=r[e].position,i=r[t].position,o=r[n].position,u=o.x,s=o.y,c=a.x-u,l=a.y-s,f=i.x-u,d=i.y-s;return c*d-l*f}function T(e,t){return e.x*t.y-e.y*t.x}function R(e,t){var n=t.length,r=l.mod(e-1,n),a=l.mod(e+1,n);return 0===O(r,a,e,t)?!1:!0}function P(t,n){return e.magnitudeSquared(n)<e.magnitudeSquared(t)}function C(t,n,r){if(!R(t,r))return t;var a=r[t].position,i=r[n].position,o=r.length,u=l.mod(t-1,o);if(!R(u,r))return u;var s=l.mod(t+1,o);if(!R(s,r))return s;var c=e.subtract(r[u].position,a,k),f=e.subtract(r[s].position,a,j),d=e.subtract(i,a,Y),h=T(c,d),m=T(f,d);if(0===h)return P(c,d)?F:G;if(0===m)return P(f,d)?F:G;var p=T(c,f);return 0>p?0>h&&m>0?F:G:p>0?h>0&&0>m?G:F:void 0}function N(e,t,n){return(e>t||e>n)&&(t>e||n>e)||t===n&&t===e}function I(t,n,r,a){var i=e.subtract(r,t,V),o=n.x*a.y-n.y*a.x,u=o*o,s=e.magnitudeSquared(n),c=e.magnitudeSquared(a);if(u>H*s*c){var l=(i.x*a.y-i.y*a.x)/o;return e.add(t,e.multiplyByScalar(n,l,V),V)}return void 0}function z(t,n,r){for(var i=e.subtract(n,t,X),o=r.length,u=0;o>u;u++){var s=r[u].position,c=r[l.mod(u+1,o)].position;if(!(e.equals(t,s)||e.equals(n,c)||e.equals(t,c)||e.equals(n,s))){var f=e.subtract(c,s,Z),d=I(t,i,s,f);if(a(d)&&!(e.equals(d,t)||e.equals(d,n)||e.equals(d,s)||e.equals(d,c))){var h=d.x,m=d.y,p=N(h,t.x,n.x)&&N(m,t.y,n.y)&&N(h,s.x,c.x)&&N(m,s.y,c.y);if(p)return!0}}}return!1}function b(t,n,r){var a=C(t,n,r);if(a>=0)return a;var i=C(n,t,r);return i>=0?i:a!==F||i!==F||z(r[t].position,r[n].position,r)||e.equals(r[t].position,r[n].position)?K:J}function A(e){return 0===O(1,2,0,e)}function D(e){var t=e.length;if(3===t)return A(e)?[]:[e[0].index,e[1].index,e[2].index];if(e.length<3)throw new i("Invalid polygon: must have at least three vertices.");for(var n,r,a=0,o=10*e.length,u=K;J>u&&a++<o;){for(n=_(e.length),r=n+1;Math.abs(n-r)<2||Math.abs(n-r)>e.length-2;)r=_(e.length);if(n>r){var s=n;n=r,r=s}u=b(n,r,e)}if(u===J){var c=e.splice(n,r-n+1,e[n],e[r]);return D(e).concat(D(c))}return u>=0?(e.splice(u,1),D(e)):[]}var q=new e,U=new e,L=new e,B=new e(1,0),W=new e,F=-1,G=-2,k=new t,j=new t,Y=new t,H=l.EPSILON14,V=new e;new e;var X=new e,Z=new e,J=-1,K=-2,Q=new t,$=new t,et={};et.removeDuplicates=function(e){var n=d.removeDuplicates(e);return t.equals(n[0],n[n.length-1])?n.slice(1):n},et.computeArea2D=function(e){for(var t=e.length,n=0,r=t-1,a=0;t>a;r=a++){var i=e[r],o=e[a];n+=i.x*o.y-o.x*i.y}return.5*n},et.computeWindingOrder2D=function(e){var t=et.computeArea2D(e);return t>0?p.COUNTER_CLOCKWISE:p.CLOCKWISE},et.triangulate=function(e){for(var t=e.length,n=[],r=0;t>r;++r)n[r]={position:e[r],index:r};return D(n)};var tt=new t,nt=new t,rt=new t,at=new t,it=new t,ot=new t,ut=new t;return et.computeSubdivision=function(e,i,o,u){u=r(u,l.RADIANS_PER_DEGREE);var f,d=o.slice(0),m=i.length,p=new Array(3*m),y=0;for(f=0;m>f;f++){var v=i[f];p[y++]=v.x,p[y++]=v.y,p[y++]=v.z}for(var g=[],w={},x=e.maximumRadius,E=l.chordLength(u,x),S=E*E;d.length>0;){var M,_,O=d.pop(),T=d.pop(),R=d.pop(),P=t.fromArray(p,3*R,tt),C=t.fromArray(p,3*T,nt),N=t.fromArray(p,3*O,rt),I=t.multiplyByScalar(t.normalize(P,at),x,at),z=t.multiplyByScalar(t.normalize(C,it),x,it),b=t.multiplyByScalar(t.normalize(N,ot),x,ot),A=t.magnitudeSquared(t.subtract(I,z,ut)),D=t.magnitudeSquared(t.subtract(z,b,ut)),q=t.magnitudeSquared(t.subtract(b,I,ut)),U=Math.max(A,D,q);U>S?A===U?(M=Math.min(R,T)+" "+Math.max(R,T),f=w[M],a(f)||(_=t.add(P,C,ut),t.multiplyByScalar(_,.5,_),p.push(_.x,_.y,_.z),f=p.length/3-1,w[M]=f),d.push(R,f,O),d.push(f,T,O)):D===U?(M=Math.min(T,O)+" "+Math.max(T,O),f=w[M],a(f)||(_=t.add(C,N,ut),t.multiplyByScalar(_,.5,_),p.push(_.x,_.y,_.z),f=p.length/3-1,w[M]=f),d.push(T,f,R),d.push(f,O,R)):q===U&&(M=Math.min(O,R)+" "+Math.max(O,R),f=w[M],a(f)||(_=t.add(N,P,ut),t.multiplyByScalar(_,.5,_),p.push(_.x,_.y,_.z),f=p.length/3-1,w[M]=f),d.push(O,f,T),d.push(f,R,T)):(g.push(R),g.push(T),g.push(O))}return new s({attributes:{position:new c({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:p})},indices:g,primitiveType:h.TRIANGLES})},et.scaleToGeodeticHeight=function(e,n,i,u){i=r(i,o.WGS84);var s=Q,c=$;if(n=r(n,0),u=r(u,!0),a(e)&&a(e.attributes)&&a(e.attributes.position))for(var l=e.attributes.position.values,f=l.length,d=0;f>d;d+=3)t.fromArray(l,d,c),u&&(c=i.scaleToGeodeticSurface(c,c)),s=i.geodeticSurfaceNormal(c,s),t.multiplyByScalar(s,n,s),t.add(c,s,c),l[d]=c.x,l[d+1]=c.y,l[d+2]=c.z;return e},et.eliminateHoles=function(e,n,a){a=r(a,o.WGS84);for(var i=[],u=0;u<n.length;u++){for(var s=[],c=0;c<n[u].length;c++)s.push(t.clone(n[u][c]));i.push(s)}for(var l=e;i.length>0;)l=M(l,i,a);return l},et}),define("Core/Matrix2",["./Cartesian2","./defaultValue","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r,a){"use strict";var i=function(e,n,r,a){this[0]=t(e,0),this[1]=t(r,0),this[2]=t(n,0),this[3]=t(a,0)};i.packedLength=4,i.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3]},i.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new i),a[0]=e[r++],a[1]=e[r++],a[2]=e[r++],a[3]=e[r++],a},i.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):new i(e[0],e[2],e[1],e[3]):void 0},i.fromArray=function(e,r,a){return r=t(r,0),n(a)||(a=new i),a[0]=e[r],a[1]=e[r+1],a[2]=e[r+2],a[3]=e[r+3],a},i.fromColumnMajorArray=function(e,t){return i.clone(e,t)},i.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3],t):new i(e[0],e[1],e[2],e[3])},i.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=e.y,t):new i(e.x,0,0,e.y)},i.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=e,t):new i(e,0,0,e)},i.fromRotation=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=a,t[2]=-a,t[3]=r,t):new i(r,-a,a,r)},i.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):[e[0],e[1],e[2],e[3]]},i.getElementIndex=function(e,t){return 2*e+t},i.getColumn=function(e,t,n){var r=2*t,a=e[r],i=e[r+1];return n.x=a,n.y=i,n},i.setColumn=function(e,t,n,r){r=i.clone(e,r);var a=2*t;return r[a]=n.x,r[a+1]=n.y,r},i.getRow=function(e,t,n){var r=e[t],a=e[t+2];return n.x=r,n.y=a,n},i.setRow=function(e,t,n,r){return r=i.clone(e,r),r[t]=n.x,r[t+2]=n.y,r};var o=new e;i.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],o)),n.y=e.magnitude(e.fromElements(t[2],t[3],o)),n};var u=new e;return i.getMaximumScale=function(t){return i.getScale(t,u),e.maximumComponent(u)},i.multiply=function(e,t,n){var r=e[0]*t[0]+e[2]*t[1],a=e[0]*t[2]+e[2]*t[3],i=e[1]*t[0]+e[3]*t[1],o=e[1]*t[2]+e[3]*t[3];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n},i.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n},i.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n},i.multiplyByVector=function(e,t,n){var r=e[0]*t.x+e[2]*t.y,a=e[1]*t.x+e[3]*t.y;return n.x=r,n.y=a,n},i.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n},i.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.y,n[3]=e[3]*t.y,n},i.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t},i.transpose=function(e,t){var n=e[0],r=e[2],a=e[1],i=e[3];return t[0]=n,t[1]=r,t[2]=a,t[3]=i,t},i.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t},i.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]},i.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]},i.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r},i.IDENTITY=a(new i(1,0,0,1)),i.ZERO=a(new i(0,0,0,0)),i.COLUMN0ROW0=0,i.COLUMN0ROW1=1,i.COLUMN1ROW0=2,i.COLUMN1ROW1=3,i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this[0]+", "+this[2]+")\n"+"("+this[1]+", "+this[3]+")"},i}),define("Core/RectangleGeometryLibrary",["./Cartesian3","./Cartographic","./defined","./DeveloperError","./GeographicProjection","./Math","./Matrix2","./Rectangle"],function(e,t,n,r,a,i,o,u){"use strict";var s=Math.cos,c=Math.sin,l=Math.sqrt,f={};f.computePosition=function(e,t,r,a,i){var u=e.ellipsoid.radiiSquared,f=e.nwCorner,d=e.rectangle,h=f.latitude-e.granYCos*t+r*e.granXSin,m=s(h),p=c(h),y=u.z*p,v=f.longitude+t*e.granYSin+r*e.granXCos,g=m*s(v),w=m*c(v),x=u.x*g,E=u.y*w,S=l(x*g+E*w+y*p);a.x=x/S,a.y=E/S,a.z=y/S,n(e.vertexFormat)&&e.vertexFormat.st&&(i.x=(v-d.west)*e.lonScalar-.5,i.y=(h-d.south)*e.latScalar-.5,o.multiplyByVector(e.textureMatrix,i,i),i.x+=.5,i.y+=.5)};var d=new o,h=new e,m=new t,p=new e,y=new a;return f.computeOptions=function(t,a,s){var c,l,f,v,g,w=t._granularity,x=t._ellipsoid,E=t._surfaceHeight,S=t._rotation,M=t._extrudedHeight,_=a.east,O=a.west,T=a.north,R=a.south,P=T-R;O>_?(g=i.TWO_PI-O+_,c=Math.ceil(g/w)+1,l=Math.ceil(P/w)+1,f=g/(c-1),v=P/(l-1)):(g=_-O,c=Math.ceil(g/w)+1,l=Math.ceil(P/w)+1,f=g/(c-1),v=P/(l-1)),s=u.northwest(a,s);var C=u.center(a,m),N=v,I=f,z=0,b=0;if(n(S)){var A=Math.cos(S);N*=A,I*=A;var D=Math.sin(S);z=v*D,b=f*D,h=y.project(s,h),p=y.project(C,p),h=e.subtract(h,p,h);var q=o.fromRotation(S,d);h=o.multiplyByVector(q,h,h),h=e.add(h,p,h),s=y.unproject(h,s);var U=s.latitude,L=U+(c-1)*b,B=U-N*(l-1),W=U-N*(l-1)+(c-1)*b;T=Math.max(U,L,B,W),R=Math.min(U,L,B,W);var F=s.longitude,G=F+(c-1)*I,k=F+(l-1)*z,j=F+(l-1)*z+(c-1)*I;if(_=Math.max(F,G,k,j),O=Math.min(F,G,k,j),T<-i.PI_OVER_TWO||T>i.PI_OVER_TWO||R<-i.PI_OVER_TWO||R>i.PI_OVER_TWO)throw new r("Rotated extent is invalid.");a.north=T,a.south=R,a.east=_,a.west=O}return{granYCos:N,granYSin:z,granXCos:I,granXSin:b,ellipsoid:x,width:c,height:l,surfaceHeight:E,extrudedHeight:M,nwCorner:s,rectangle:a}},f}),define("Core/RectangleOutlineGeometry",["./BoundingSphere","./Cartesian3","./Cartographic","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PolygonPipeline","./PrimitiveType","./Rectangle","./RectangleGeometryLibrary"],function(e,t,n,r,a,i,o,u,s,c,l,f,d,h,m,p,y){"use strict";function v(e){var t,n=e.size,a=e.height,i=e.width,o=new Float64Array(3*n),u=0,d=0,h=E;for(t=0;i>t;t++)y.computePosition(e,d,t,h),o[u++]=h.x,o[u++]=h.y,o[u++]=h.z;for(t=i-1,d=1;a>d;d++)y.computePosition(e,d,t,h),o[u++]=h.x,o[u++]=h.y,o[u++]=h.z;for(d=a-1,t=i-2;t>=0;t--)y.computePosition(e,d,t,h),o[u++]=h.x,o[u++]=h.y,o[u++]=h.z;for(t=0,d=a-2;d>0;d--)y.computePosition(e,d,t,h),o[u++]=h.x,o[u++]=h.y,o[u++]=h.z;for(var p=2*(o.length/3),v=f.createTypedArray(o.length/3,p),g=0,w=0;w<o.length/3-1;w++)v[g++]=w,v[g++]=w+1;v[g++]=o.length/3-1,v[g++]=0;var x=new s({attributes:new l,primitiveType:m.LINES});return x.attributes.position=new c({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:o}),x.indices=v,x}function g(e){var t=e.surfaceHeight,n=e.extrudedHeight,r=e.ellipsoid,a=Math.min(n,t),i=Math.max(n,t),o=v(e);if(d.equalsEpsilon(a,i,.1))return o;var u=e.height,s=e.width;o=h.scaleToGeodeticHeight(o,i,r,!1);var c=o.attributes.position.values,l=c.length,m=new Float64Array(2*l);m.set(c),o=h.scaleToGeodeticHeight(o,a,r);var p=o.attributes.position.values;m.set(p,l),o.attributes.position.values=m;var y=2*(m.length/3)+8,g=f.createTypedArray(m.length/3,y);l=m.length/6;for(var w=0,x=0;l-1>x;x++)g[w++]=x,g[w++]=x+1,g[w++]=x+l,g[w++]=x+l+1;return g[w++]=l-1,g[w++]=0,g[w++]=l+l-1,g[w++]=l,g[w++]=0,g[w++]=l,g[w++]=s-1,g[w++]=l+s-1,g[w++]=s+u-2,g[w++]=s+u-2+l,g[w++]=2*s+u-3,g[w++]=2*s+u-3+l,o.indices=g,o}var w=new e,x=new e,E=new t,S=new p,M=function(e){e=a(e,a.EMPTY_OBJECT);var t=e.rectangle,n=a(e.granularity,d.RADIANS_PER_DEGREE),r=a(e.ellipsoid,u.WGS84),i=a(e.height,0),o=a(e.rotation,0),s=e.extrudedHeight;this._rectangle=t,this._granularity=n,this._ellipsoid=r,this._surfaceHeight=i,this._rotation=o,this._extrudedHeight=s,this._workerName="createRectangleOutlineGeometry"};M.packedLength=p.packedLength+u.packedLength+5,M.pack=function(e,t,n){n=a(n,0),p.pack(e._rectangle,t,n),n+=p.packedLength,u.pack(e._ellipsoid,t,n),n+=u.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=i(e._extrudedHeight)?1:0,t[n]=a(e._extrudedHeight,0)};var _=new p,O=u.clone(u.UNIT_SPHERE),T={rectangle:_,ellipsoid:O,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0};M.unpack=function(e,t,n){t=a(t,0);var r=p.unpack(e,t,_);t+=p.packedLength;var o=u.unpack(e,t,O);t+=u.packedLength;var s=e[t++],c=e[t++],l=e[t++],f=e[t++],d=e[t];return i(n)?(n._rectangle=p.clone(r,n._rectangle),n._ellipsoid=u.clone(o,n._ellipsoid),n._surfaceHeight=c,n._rotation=l,n._extrudedHeight=f?d:void 0,n):(T.granularity=s,T.height=c,T.rotation=l,T.extrudedHeight=f?d:void 0,new M(T))};var R=new n;return M.createGeometry=function(t){var n=p.clone(t._rectangle,S),r=t._ellipsoid,a=t._surfaceHeight,o=t._extrudedHeight,u=y.computeOptions(t,n,R);u.size=2*u.width+2*u.height-4;var c,l;if(n=t._rectangle,i(o)){c=g(u);var f=e.fromRectangle3D(n,r,a,x),d=e.fromRectangle3D(n,r,o,w);l=e.union(f,d)}else c=v(u),c=h.scaleToGeodeticHeight(c,a,r,!1),l=e.fromRectangle3D(n,r,a);return new s({attributes:c.attributes,indices:c.indices,primitiveType:m.LINES,boundingSphere:l})},M}),define("Workers/createRectangleOutlineGeometry",["../Core/defined","../Core/Ellipsoid","../Core/Rectangle","../Core/RectangleOutlineGeometry"],function(e,t,n,r){"use strict";function a(a,i){return e(i)&&(a=r.unpack(a,i)),a._ellipsoid=t.clone(a._ellipsoid),a._rectangle=n.clone(a._rectangle),r.createGeometry(a)}return a})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createSimplePolylineGeometry.js b/libs/Cesium/Workers/createSimplePolylineGeometry.js new file mode 100644 index 0000000000..6750a3bb15 --- /dev/null +++ b/libs/Cesium/Workers/createSimplePolylineGeometry.js @@ -0,0 +1,60 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var t=function(t){return void 0!==t};return t}),define("Core/freezeObject",["./defined"],function(t){"use strict";var r=Object.freeze;return t(r)||(r=function(t){return t}),r}),define("Core/defaultValue",["./freezeObject"],function(t){"use strict";var r=function(t,r){return void 0!==t?t:r};return r.EMPTY_OBJECT=t({}),r}),define("Core/DeveloperError",["./defined"],function(t){"use strict";var r=function(t){this.name="DeveloperError",this.message=t;var r;try{throw new Error}catch(e){r=e.stack}this.stack=r};return r.prototype.toString=function(){var r=this.name+": "+this.message;return t(this.stack)&&(r+="\n"+this.stack.toString()),r},r.throwInstantiationError=function(){throw new r("This function defines an interface and should not be called directly.")},r}),define("ThirdParty/mersenne-twister",[],function(){var t=function(t){void 0==t&&(t=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(t)};return t.prototype.init_genrand=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&t)>>>16)<<16)+1812433253*(65535&t)+this.mti,this.mt[this.mti]>>>=0}},t.prototype.genrand_int32=function(){var t,r=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var e;for(this.mti==this.N+1&&this.init_genrand(5489),e=0;e<this.N-this.M;e++)t=this.mt[e]&this.UPPER_MASK|this.mt[e+1]&this.LOWER_MASK,this.mt[e]=this.mt[e+this.M]^t>>>1^r[1&t];for(;e<this.N-1;e++)t=this.mt[e]&this.UPPER_MASK|this.mt[e+1]&this.LOWER_MASK,this.mt[e]=this.mt[e+(this.M-this.N)]^t>>>1^r[1&t];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^r[1&t],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=2636928640&t<<7,t^=4022730752&t<<15,t^=t>>>18,t>>>0},t.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},t}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(t,r){"use strict";var e={};e.EPSILON1=.1,e.EPSILON2=.01,e.EPSILON3=.001,e.EPSILON4=1e-4,e.EPSILON5=1e-5,e.EPSILON6=1e-6,e.EPSILON7=1e-7,e.EPSILON8=1e-8,e.EPSILON9=1e-9,e.EPSILON10=1e-10,e.EPSILON11=1e-11,e.EPSILON12=1e-12,e.EPSILON13=1e-13,e.EPSILON14=1e-14,e.EPSILON15=1e-15,e.EPSILON16=1e-16,e.EPSILON17=1e-17,e.EPSILON18=1e-18,e.EPSILON19=1e-19,e.EPSILON20=1e-20,e.GRAVITATIONALPARAMETER=3986004418e5,e.SOLAR_RADIUS=6955e5,e.LUNAR_RADIUS=1737400,e.SIXTY_FOUR_KILOBYTES=65536,e.sign=function(t){return t>0?1:0>t?-1:0},e.signNotZero=function(t){return 0>t?-1:1},e.toSNorm=function(t){return Math.round(255*(.5*e.clamp(t,-1,1)+.5))},e.fromSNorm=function(t){return 2*(e.clamp(t,0,255)/255)-1},e.sinh=function(t){var r=Math.pow(Math.E,t),e=Math.pow(Math.E,-1*t);return.5*(r-e)},e.cosh=function(t){var r=Math.pow(Math.E,t),e=Math.pow(Math.E,-1*t);return.5*(r+e)},e.lerp=function(t,r,e){return(1-e)*t+e*r},e.PI=Math.PI,e.ONE_OVER_PI=1/Math.PI,e.PI_OVER_TWO=.5*Math.PI,e.PI_OVER_THREE=Math.PI/3,e.PI_OVER_FOUR=Math.PI/4,e.PI_OVER_SIX=Math.PI/6,e.THREE_PI_OVER_TWO=.5*3*Math.PI,e.TWO_PI=2*Math.PI,e.ONE_OVER_TWO_PI=1/(2*Math.PI),e.RADIANS_PER_DEGREE=Math.PI/180,e.DEGREES_PER_RADIAN=180/Math.PI,e.RADIANS_PER_ARCSECOND=e.RADIANS_PER_DEGREE/3600,e.toRadians=function(t){return t*e.RADIANS_PER_DEGREE},e.toDegrees=function(t){return t*e.DEGREES_PER_RADIAN},e.convertLongitudeRange=function(t){var r=e.TWO_PI,n=t-Math.floor(t/r)*r;return n<-Math.PI?n+r:n>=Math.PI?n-r:n},e.negativePiToPi=function(t){return e.zeroToTwoPi(t+e.PI)-e.PI},e.zeroToTwoPi=function(t){var r=e.mod(t,e.TWO_PI);return Math.abs(r)<e.EPSILON14&&Math.abs(t)>e.EPSILON14?e.TWO_PI:r},e.mod=function(t,r){return(t%r+r)%r},e.equalsEpsilon=function(t,e,n,o){o=r(o,n);var i=Math.abs(t-e);return o>=i||i<=n*Math.max(Math.abs(t),Math.abs(e))};var n=[1];e.factorial=function(t){var r=n.length;if(t>=r)for(var e=n[r-1],o=r;t>=o;o++)n.push(e*o);return n[t]},e.incrementWrap=function(t,e,n){return n=r(n,0),++t,t>e&&(t=n),t},e.isPowerOfTwo=function(t){return 0!==t&&0===(t&t-1)},e.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t},e.clamp=function(t,r,e){return r>t?r:t>e?e:t};var o=new t;return e.setRandomNumberSeed=function(r){o=new t(r)},e.nextRandomNumber=function(){return o.random()},e.acosClamped=function(t){return Math.acos(e.clamp(t,-1,1))},e.asinClamped=function(t){return Math.asin(e.clamp(t,-1,1))},e.chordLength=function(t,r){return 2*r*Math.sin(.5*t)},e}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n,o){"use strict";var i=function(r,e,n){this.x=t(r,0),this.y=t(e,0),this.z=t(n,0)};i.fromSpherical=function(e,n){r(n)||(n=new i);var o=e.clock,a=e.cone,s=t(e.magnitude,1),u=s*Math.sin(a);return n.x=u*Math.cos(o),n.y=u*Math.sin(o),n.z=s*Math.cos(a),n},i.fromElements=function(t,e,n,o){return r(o)?(o.x=t,o.y=e,o.z=n,o):new i(t,e,n)},i.clone=function(t,e){return r(t)?r(e)?(e.x=t.x,e.y=t.y,e.z=t.z,e):new i(t.x,t.y,t.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(r,e,n){n=t(n,0),e[n++]=r.x,e[n++]=r.y,e[n]=r.z},i.unpack=function(e,n,o){return n=t(n,0),r(o)||(o=new i),o.x=e[n++],o.y=e[n++],o.z=e[n],o},i.fromArray=i.unpack,i.maximumComponent=function(t){return Math.max(t.x,t.y,t.z)},i.minimumComponent=function(t){return Math.min(t.x,t.y,t.z)},i.minimumByComponent=function(t,r,e){return e.x=Math.min(t.x,r.x),e.y=Math.min(t.y,r.y),e.z=Math.min(t.z,r.z),e},i.maximumByComponent=function(t,r,e){return e.x=Math.max(t.x,r.x),e.y=Math.max(t.y,r.y),e.z=Math.max(t.z,r.z),e},i.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z},i.magnitude=function(t){return Math.sqrt(i.magnitudeSquared(t))};var a=new i;i.distance=function(t,r){return i.subtract(t,r,a),i.magnitude(a)},i.distanceSquared=function(t,r){return i.subtract(t,r,a),i.magnitudeSquared(a)},i.normalize=function(t,r){var e=i.magnitude(t);return r.x=t.x/e,r.y=t.y/e,r.z=t.z/e,r},i.dot=function(t,r){return t.x*r.x+t.y*r.y+t.z*r.z},i.multiplyComponents=function(t,r,e){return e.x=t.x*r.x,e.y=t.y*r.y,e.z=t.z*r.z,e},i.add=function(t,r,e){return e.x=t.x+r.x,e.y=t.y+r.y,e.z=t.z+r.z,e},i.subtract=function(t,r,e){return e.x=t.x-r.x,e.y=t.y-r.y,e.z=t.z-r.z,e},i.multiplyByScalar=function(t,r,e){return e.x=t.x*r,e.y=t.y*r,e.z=t.z*r,e},i.divideByScalar=function(t,r,e){return e.x=t.x/r,e.y=t.y/r,e.z=t.z/r,e},i.negate=function(t,r){return r.x=-t.x,r.y=-t.y,r.z=-t.z,r},i.abs=function(t,r){return r.x=Math.abs(t.x),r.y=Math.abs(t.y),r.z=Math.abs(t.z),r};var s=new i;i.lerp=function(t,r,e,n){return i.multiplyByScalar(r,e,s),n=i.multiplyByScalar(t,1-e,n),i.add(s,n,n)};var u=new i,l=new i;i.angleBetween=function(t,r){i.normalize(t,u),i.normalize(r,l);var e=i.dot(u,l),n=i.magnitude(i.cross(u,l,u));return Math.atan2(n,e)};var c=new i;i.mostOrthogonalAxis=function(t,r){var e=i.normalize(t,c);return i.abs(e,e),r=e.x<=e.y?e.x<=e.z?i.clone(i.UNIT_X,r):i.clone(i.UNIT_Z,r):e.y<=e.z?i.clone(i.UNIT_Y,r):i.clone(i.UNIT_Z,r)},i.equals=function(t,e){return t===e||r(t)&&r(e)&&t.x===e.x&&t.y===e.y&&t.z===e.z},i.equalsArray=function(t,r,e){return t.x===r[e]&&t.y===r[e+1]&&t.z===r[e+2]},i.equalsEpsilon=function(t,e,n,i){return t===e||r(t)&&r(e)&&o.equalsEpsilon(t.x,e.x,n,i)&&o.equalsEpsilon(t.y,e.y,n,i)&&o.equalsEpsilon(t.z,e.z,n,i)},i.cross=function(t,r,e){var n=t.x,o=t.y,i=t.z,a=r.x,s=r.y,u=r.z,l=o*u-i*s,c=i*a-n*u,f=n*s-o*a;return e.x=l,e.y=c,e.z=f,e},i.fromDegrees=function(t,r,e,n,a){var s=o.toRadians(t),u=o.toRadians(r);return i.fromRadians(s,u,e,n,a)};var f=new i,h=new i,d=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(e,n,o,a,s){o=t(o,0);var u=r(a)?a.radiiSquared:d,l=Math.cos(n);f.x=l*Math.cos(e),f.y=l*Math.sin(e),f.z=Math.sin(n),f=i.normalize(f,f),i.multiplyComponents(u,f,h);var c=Math.sqrt(i.dot(f,h));return h=i.divideByScalar(h,c,h),f=i.multiplyByScalar(f,o,f),r(s)||(s=new i),i.add(h,f,s)},i.fromDegreesArray=function(t,r,e){for(var n=new Array(t.length),a=0;a<t.length;a++)n[a]=o.toRadians(t[a]);return i.fromRadiansArray(n,r,e)},i.fromRadiansArray=function(t,e,n){var o=t.length;r(n)?n.length=o/2:n=new Array(o/2);for(var a=0;o>a;a+=2){var s=t[a],u=t[a+1];n[a/2]=i.fromRadians(s,u,0,e,n[a/2])}return n},i.fromDegreesArrayHeights=function(t,r,e){for(var n=new Array(t.length),a=0;a<t.length;a+=3)n[a]=o.toRadians(t[a]),n[a+1]=o.toRadians(t[a+1]),n[a+2]=t[a+2];return i.fromRadiansArrayHeights(n,r,e)},i.fromRadiansArrayHeights=function(t,e,n){var o=t.length;r(n)?n.length=o/3:n=new Array(o/3);for(var a=0;o>a;a+=3){var s=t[a],u=t[a+1],l=t[a+2];n[a/3]=i.fromRadians(s,u,l,e,n[a/3])}return n},i.ZERO=n(new i(0,0,0)),i.UNIT_X=n(new i(1,0,0)),i.UNIT_Y=n(new i(0,1,0)),i.UNIT_Z=n(new i(0,0,1)),i.prototype.clone=function(t){return i.clone(this,t)},i.prototype.equals=function(t){return i.equals(this,t)},i.prototype.equalsEpsilon=function(t,r,e){return i.equalsEpsilon(this,t,r,e)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n,o){"use strict";var i=function(r,e,n){this.longitude=t(r,0),this.latitude=t(e,0),this.height=t(n,0)};return i.fromRadians=function(e,n,o,a){return o=t(o,0),r(a)?(a.longitude=e,a.latitude=n,a.height=o,a):new i(e,n,o)},i.fromDegrees=function(t,r,e,n){return t=o.toRadians(t),r=o.toRadians(r),i.fromRadians(t,r,e,n)},i.clone=function(t,e){return r(t)?r(e)?(e.longitude=t.longitude,e.latitude=t.latitude,e.height=t.height,e):new i(t.longitude,t.latitude,t.height):void 0},i.equals=function(t,e){return t===e||r(t)&&r(e)&&t.longitude===e.longitude&&t.latitude===e.latitude&&t.height===e.height},i.equalsEpsilon=function(t,e,n){return t===e||r(t)&&r(e)&&Math.abs(t.longitude-e.longitude)<=n&&Math.abs(t.latitude-e.latitude)<=n&&Math.abs(t.height-e.height)<=n},i.ZERO=n(new i(0,0,0)),i.prototype.clone=function(t){return i.clone(this,t)},i.prototype.equals=function(t){return i.equals(this,t)},i.prototype.equalsEpsilon=function(t,r){return i.equalsEpsilon(this,t,r)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/defineProperties",["./defined"],function(t){"use strict";var r=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(t){return!1}}(),e=Object.defineProperties;return r&&t(e)||(e=function(t){return t}),e}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n,o,i,a,s){"use strict";function u(r,n,o,i){n=e(n,0),o=e(o,0),i=e(i,0),r._radii=new t(n,o,i),r._radiiSquared=new t(n*n,o*o,i*i),r._radiiToTheFourth=new t(n*n*n*n,o*o*o*o,i*i*i*i),r._oneOverRadii=new t(0===n?0:1/n,0===o?0:1/o,0===i?0:1/i),r._oneOverRadiiSquared=new t(0===n?0:1/(n*n),0===o?0:1/(o*o),0===i?0:1/(i*i)),r._minimumRadius=Math.min(n,o,i),r._maximumRadius=Math.max(n,o,i),r._centerToleranceSquared=s.EPSILON1}var l=function(t,r,e){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,u(this,t,r,e)};o(l.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),l.clone=function(r,e){if(!n(r))return void 0;var o=r._radii;return n(e)?(t.clone(o,e._radii),t.clone(r._radiiSquared,e._radiiSquared),t.clone(r._radiiToTheFourth,e._radiiToTheFourth),t.clone(r._oneOverRadii,e._oneOverRadii),t.clone(r._oneOverRadiiSquared,e._oneOverRadiiSquared),e._minimumRadius=r._minimumRadius,e._maximumRadius=r._maximumRadius,e._centerToleranceSquared=r._centerToleranceSquared,e):new l(o.x,o.y,o.z)},l.fromCartesian3=function(t,r){return n(r)||(r=new l),n(t)?(u(r,t.x,t.y,t.z),r):r},l.WGS84=a(new l(6378137,6378137,6356752.314245179)),l.UNIT_SPHERE=a(new l(1,1,1)),l.MOON=a(new l(s.LUNAR_RADIUS,s.LUNAR_RADIUS,s.LUNAR_RADIUS)),l.prototype.clone=function(t){return l.clone(this,t)},l.packedLength=t.packedLength,l.pack=function(r,n,o){o=e(o,0),t.pack(r._radii,n,o)},l.unpack=function(r,n,o){n=e(n,0);var i=t.unpack(r,n);return l.fromCartesian3(i,o)},l.prototype.geocentricSurfaceNormal=t.normalize,l.prototype.geodeticSurfaceNormalCartographic=function(r,e){var o=r.longitude,i=r.latitude,a=Math.cos(i),s=a*Math.cos(o),u=a*Math.sin(o),l=Math.sin(i);return n(e)||(e=new t),e.x=s,e.y=u,e.z=l,t.normalize(e,e)},l.prototype.geodeticSurfaceNormal=function(r,e){return n(e)||(e=new t),e=t.multiplyComponents(r,this._oneOverRadiiSquared,e),t.normalize(e,e)};var c=new t,f=new t;l.prototype.cartographicToCartesian=function(r,e){var o=c,i=f;this.geodeticSurfaceNormalCartographic(r,o),t.multiplyComponents(this._radiiSquared,o,i);var a=Math.sqrt(t.dot(o,i));return t.divideByScalar(i,a,i),t.multiplyByScalar(o,r.height,o),n(e)||(e=new t),t.add(i,o,e)},l.prototype.cartographicArrayToCartesianArray=function(t,r){var e=t.length;n(r)?r.length=e:r=new Array(e);for(var o=0;e>o;o++)r[o]=this.cartographicToCartesian(t[o],r[o]);return r};var h=new t,d=new t,m=new t;l.prototype.cartesianToCartographic=function(e,o){var i=this.scaleToGeodeticSurface(e,d);if(!n(i))return void 0;var a=this.geodeticSurfaceNormal(i,h),u=t.subtract(e,i,m),l=Math.atan2(a.y,a.x),c=Math.asin(a.z),f=s.sign(t.dot(u,e))*t.magnitude(u);return n(o)?(o.longitude=l,o.latitude=c,o.height=f,o):new r(l,c,f)},l.prototype.cartesianArrayToCartographicArray=function(t,r){var e=t.length;n(r)?r.length=e:r=new Array(e);for(var o=0;e>o;++o)r[o]=this.cartesianToCartographic(t[o],r[o]);return r};var p=new t,g=new t;return l.prototype.scaleToGeodeticSurface=function(r,e){var o=r.x,i=r.y,a=r.z,u=this._oneOverRadii,l=u.x,c=u.y,f=u.z,h=o*o*l*l,d=i*i*c*c,m=a*a*f*f,y=h+d+m,E=Math.sqrt(1/y),v=t.multiplyByScalar(r,E,p);if(y<this._centerToleranceSquared)return isFinite(E)?t.clone(v,e):void 0;var C=this._oneOverRadiiSquared,S=C.x,w=C.y,M=C.z,R=g;R.x=2*v.x*S,R.y=2*v.y*w,R.z=2*v.z*M;var A,O,T,I,N,x,_,L,b,P,F,z=(1-E)*t.magnitude(r)/(.5*t.magnitude(R)),D=0;do{z-=D,T=1/(1+z*S),I=1/(1+z*w),N=1/(1+z*M),x=T*T,_=I*I,L=N*N,b=x*T,P=_*I,F=L*N,A=h*x+d*_+m*L-1,O=h*b*S+d*P*w+m*F*M;var B=-2*O;D=A/B}while(Math.abs(A)>s.EPSILON12);return n(e)?(e.x=o*T,e.y=i*I,e.z=a*N,e):new t(o*T,i*I,a*N)},l.prototype.scaleToGeocentricSurface=function(r,e){n(e)||(e=new t);var o=r.x,i=r.y,a=r.z,s=this._oneOverRadiiSquared,u=1/Math.sqrt(o*o*s.x+i*i*s.y+a*a*s.z);return t.multiplyByScalar(r,u,e)},l.prototype.transformPositionToScaledSpace=function(r,e){return n(e)||(e=new t),t.multiplyComponents(r,this._oneOverRadii,e)},l.prototype.transformPositionFromScaledSpace=function(r,e){return n(e)||(e=new t),t.multiplyComponents(r,this._radii,e)},l.prototype.equals=function(r){return this===r||n(r)&&t.equals(this._radii,r._radii)},l.prototype.toString=function(){return this._radii.toString()},l}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(t){"use strict";var r={},e=function(e,n){t(r[e])||(r[e]=!0,console.log(n))};return e}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(t,r,e,n,o,i,a){"use strict";var s=function(t){this._ellipsoid=e(t,a.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return o(s.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),s.prototype.project=function(r,e){var o=this._semimajorAxis,i=r.longitude*o,a=r.latitude*o,s=r.height;return n(e)?(e.x=i,e.y=a,e.z=s,e):new t(i,a,s)},s.prototype.unproject=function(t,e){var o=this._oneOverSemimajorAxis,i=t.x*o,a=t.y*o,s=t.z;return n(e)?(e.longitude=i,e.latitude=a,e.height=s,e):new r(i,a,s)},s}),define("Core/Intersect",["./freezeObject"],function(t){"use strict";var r={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return t(r)}),define("Core/Interval",["./defaultValue"],function(t){"use strict";var r=function(r,e){this.start=t(r,0),this.stop=t(e,0)};return r}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n,o){"use strict";var i=function(r,e,n,o){this.x=t(r,0),this.y=t(e,0),this.z=t(n,0),this.w=t(o,0)};i.fromElements=function(t,e,n,o,a){return r(a)?(a.x=t,a.y=e,a.z=n,a.w=o,a):new i(t,e,n,o)},i.fromColor=function(t,e){return r(e)?(e.x=t.red,e.y=t.green,e.z=t.blue,e.w=t.alpha,e):new i(t.red,t.green,t.blue,t.alpha)},i.clone=function(t,e){return r(t)?r(e)?(e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e):new i(t.x,t.y,t.z,t.w):void 0},i.packedLength=4,i.pack=function(r,e,n){n=t(n,0),e[n++]=r.x,e[n++]=r.y,e[n++]=r.z,e[n]=r.w},i.unpack=function(e,n,o){return n=t(n,0),r(o)||(o=new i),o.x=e[n++],o.y=e[n++],o.z=e[n++],o.w=e[n],o},i.fromArray=i.unpack,i.maximumComponent=function(t){return Math.max(t.x,t.y,t.z,t.w)},i.minimumComponent=function(t){return Math.min(t.x,t.y,t.z,t.w)},i.minimumByComponent=function(t,r,e){return e.x=Math.min(t.x,r.x),e.y=Math.min(t.y,r.y),e.z=Math.min(t.z,r.z),e.w=Math.min(t.w,r.w),e},i.maximumByComponent=function(t,r,e){return e.x=Math.max(t.x,r.x),e.y=Math.max(t.y,r.y),e.z=Math.max(t.z,r.z),e.w=Math.max(t.w,r.w),e},i.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w},i.magnitude=function(t){return Math.sqrt(i.magnitudeSquared(t))};var a=new i;i.distance=function(t,r){return i.subtract(t,r,a),i.magnitude(a)},i.distanceSquared=function(t,r){return i.subtract(t,r,a),i.magnitudeSquared(a)},i.normalize=function(t,r){var e=i.magnitude(t);return r.x=t.x/e,r.y=t.y/e,r.z=t.z/e,r.w=t.w/e,r},i.dot=function(t,r){return t.x*r.x+t.y*r.y+t.z*r.z+t.w*r.w},i.multiplyComponents=function(t,r,e){return e.x=t.x*r.x,e.y=t.y*r.y,e.z=t.z*r.z,e.w=t.w*r.w,e},i.add=function(t,r,e){return e.x=t.x+r.x,e.y=t.y+r.y,e.z=t.z+r.z,e.w=t.w+r.w,e},i.subtract=function(t,r,e){return e.x=t.x-r.x,e.y=t.y-r.y,e.z=t.z-r.z,e.w=t.w-r.w,e},i.multiplyByScalar=function(t,r,e){return e.x=t.x*r,e.y=t.y*r,e.z=t.z*r,e.w=t.w*r,e},i.divideByScalar=function(t,r,e){return e.x=t.x/r,e.y=t.y/r,e.z=t.z/r,e.w=t.w/r,e},i.negate=function(t,r){return r.x=-t.x,r.y=-t.y,r.z=-t.z,r.w=-t.w,r},i.abs=function(t,r){return r.x=Math.abs(t.x),r.y=Math.abs(t.y),r.z=Math.abs(t.z),r.w=Math.abs(t.w),r};var s=new i;i.lerp=function(t,r,e,n){return i.multiplyByScalar(r,e,s),n=i.multiplyByScalar(t,1-e,n),i.add(s,n,n)};var u=new i;return i.mostOrthogonalAxis=function(t,r){var e=i.normalize(t,u);return i.abs(e,e),r=e.x<=e.y?e.x<=e.z?e.x<=e.w?i.clone(i.UNIT_X,r):i.clone(i.UNIT_W,r):e.z<=e.w?i.clone(i.UNIT_Z,r):i.clone(i.UNIT_W,r):e.y<=e.z?e.y<=e.w?i.clone(i.UNIT_Y,r):i.clone(i.UNIT_W,r):e.z<=e.w?i.clone(i.UNIT_Z,r):i.clone(i.UNIT_W,r)},i.equals=function(t,e){return t===e||r(t)&&r(e)&&t.x===e.x&&t.y===e.y&&t.z===e.z&&t.w===e.w},i.equalsArray=function(t,r,e){return t.x===r[e]&&t.y===r[e+1]&&t.z===r[e+2]&&t.w===r[e+3]},i.equalsEpsilon=function(t,e,n,i){return t===e||r(t)&&r(e)&&o.equalsEpsilon(t.x,e.x,n,i)&&o.equalsEpsilon(t.y,e.y,n,i)&&o.equalsEpsilon(t.z,e.z,n,i)&&o.equalsEpsilon(t.w,e.w,n,i)},i.ZERO=n(new i(0,0,0,0)),i.UNIT_X=n(new i(1,0,0,0)),i.UNIT_Y=n(new i(0,1,0,0)),i.UNIT_Z=n(new i(0,0,1,0)),i.UNIT_W=n(new i(0,0,0,1)),i.prototype.clone=function(t){return i.clone(this,t)},i.prototype.equals=function(t){return i.equals(this,t)},i.prototype.equalsEpsilon=function(t,r,e){return i.equalsEpsilon(this,t,r,e)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n,o,i){"use strict";function a(t){for(var r=0,e=0;9>e;++e){var n=t[e];r+=n*n}return Math.sqrt(r)}function s(t){for(var r=0,e=0;3>e;++e){var n=t[l.getElementIndex(d[e],h[e])];r+=2*n*n}return Math.sqrt(r)}function u(t,r){for(var e=i.EPSILON15,n=0,o=1,a=0;3>a;++a){var s=Math.abs(t[l.getElementIndex(d[a],h[a])]);s>n&&(o=a,n=s)}var u=1,c=0,f=h[o],m=d[o];if(Math.abs(t[l.getElementIndex(m,f)])>e){var p,g=t[l.getElementIndex(m,m)],y=t[l.getElementIndex(f,f)],E=t[l.getElementIndex(m,f)],v=(g-y)/2/E;p=0>v?-1/(-v+Math.sqrt(1+v*v)):1/(v+Math.sqrt(1+v*v)),u=1/Math.sqrt(1+p*p),c=p*u}return r=l.clone(l.IDENTITY,r),r[l.getElementIndex(f,f)]=r[l.getElementIndex(m,m)]=u,r[l.getElementIndex(m,f)]=c,r[l.getElementIndex(f,m)]=-c,r}var l=function(t,e,n,o,i,a,s,u,l){this[0]=r(t,0),this[1]=r(o,0),this[2]=r(s,0),this[3]=r(e,0),this[4]=r(i,0),this[5]=r(u,0),this[6]=r(n,0),this[7]=r(a,0),this[8]=r(l,0)};l.packedLength=9,l.pack=function(t,e,n){n=r(n,0),e[n++]=t[0],e[n++]=t[1],e[n++]=t[2],e[n++]=t[3],e[n++]=t[4],e[n++]=t[5],e[n++]=t[6],e[n++]=t[7],e[n++]=t[8]},l.unpack=function(t,n,o){return n=r(n,0),e(o)||(o=new l),o[0]=t[n++],o[1]=t[n++],o[2]=t[n++],o[3]=t[n++],o[4]=t[n++],o[5]=t[n++],o[6]=t[n++],o[7]=t[n++],o[8]=t[n++],o},l.clone=function(t,r){return e(t)?e(r)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r):new l(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]):void 0},l.fromArray=function(t,n,o){return n=r(n,0),e(o)||(o=new l),o[0]=t[n],o[1]=t[n+1],o[2]=t[n+2],o[3]=t[n+3],o[4]=t[n+4],o[5]=t[n+5],o[6]=t[n+6],o[7]=t[n+7],o[8]=t[n+8],o},l.fromColumnMajorArray=function(t,r){return l.clone(t,r)},l.fromRowMajorArray=function(t,r){return e(r)?(r[0]=t[0],r[1]=t[3],r[2]=t[6],r[3]=t[1],r[4]=t[4],r[5]=t[7],r[6]=t[2],r[7]=t[5],r[8]=t[8],r):new l(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},l.fromQuaternion=function(t,r){var n=t.x*t.x,o=t.x*t.y,i=t.x*t.z,a=t.x*t.w,s=t.y*t.y,u=t.y*t.z,c=t.y*t.w,f=t.z*t.z,h=t.z*t.w,d=t.w*t.w,m=n-s-f+d,p=2*(o-h),g=2*(i+c),y=2*(o+h),E=-n+s-f+d,v=2*(u-a),C=2*(i-c),S=2*(u+a),w=-n-s+f+d;return e(r)?(r[0]=m,r[1]=y,r[2]=C,r[3]=p,r[4]=E,r[5]=S,r[6]=g,r[7]=v,r[8]=w,r):new l(m,p,g,y,E,v,C,S,w)},l.fromScale=function(t,r){return e(r)?(r[0]=t.x,r[1]=0,r[2]=0,r[3]=0,r[4]=t.y,r[5]=0,r[6]=0,r[7]=0,r[8]=t.z,r):new l(t.x,0,0,0,t.y,0,0,0,t.z)},l.fromUniformScale=function(t,r){return e(r)?(r[0]=t,r[1]=0,r[2]=0,r[3]=0,r[4]=t,r[5]=0,r[6]=0,r[7]=0,r[8]=t,r):new l(t,0,0,0,t,0,0,0,t)},l.fromCrossProduct=function(t,r){return e(r)?(r[0]=0,r[1]=t.z,r[2]=-t.y,r[3]=-t.z,r[4]=0,r[5]=t.x,r[6]=t.y,r[7]=-t.x,r[8]=0,r):new l(0,-t.z,t.y,t.z,0,-t.x,-t.y,t.x,0)},l.fromRotationX=function(t,r){var n=Math.cos(t),o=Math.sin(t);return e(r)?(r[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=n,r[5]=o,r[6]=0,r[7]=-o,r[8]=n,r):new l(1,0,0,0,n,-o,0,o,n)},l.fromRotationY=function(t,r){var n=Math.cos(t),o=Math.sin(t);return e(r)?(r[0]=n,r[1]=0,r[2]=-o,r[3]=0,r[4]=1,r[5]=0,r[6]=o,r[7]=0,r[8]=n,r):new l(n,0,o,0,1,0,-o,0,n)},l.fromRotationZ=function(t,r){var n=Math.cos(t),o=Math.sin(t);return e(r)?(r[0]=n,r[1]=o,r[2]=0,r[3]=-o,r[4]=n,r[5]=0,r[6]=0,r[7]=0,r[8]=1,r):new l(n,-o,0,o,n,0,0,0,1)},l.toArray=function(t,r){return e(r)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8]]},l.getElementIndex=function(t,r){return 3*t+r},l.getColumn=function(t,r,e){var n=3*r,o=t[n],i=t[n+1],a=t[n+2];return e.x=o,e.y=i,e.z=a,e},l.setColumn=function(t,r,e,n){n=l.clone(t,n);var o=3*r;return n[o]=e.x,n[o+1]=e.y,n[o+2]=e.z,n},l.getRow=function(t,r,e){var n=t[r],o=t[r+3],i=t[r+6];return e.x=n,e.y=o,e.z=i,e},l.setRow=function(t,r,e,n){return n=l.clone(t,n),n[r]=e.x,n[r+3]=e.y,n[r+6]=e.z,n};var c=new t;l.getScale=function(r,e){return e.x=t.magnitude(t.fromElements(r[0],r[1],r[2],c)),e.y=t.magnitude(t.fromElements(r[3],r[4],r[5],c)),e.z=t.magnitude(t.fromElements(r[6],r[7],r[8],c)),e};var f=new t;l.getMaximumScale=function(r){return l.getScale(r,f),t.maximumComponent(f)},l.multiply=function(t,r,e){var n=t[0]*r[0]+t[3]*r[1]+t[6]*r[2],o=t[1]*r[0]+t[4]*r[1]+t[7]*r[2],i=t[2]*r[0]+t[5]*r[1]+t[8]*r[2],a=t[0]*r[3]+t[3]*r[4]+t[6]*r[5],s=t[1]*r[3]+t[4]*r[4]+t[7]*r[5],u=t[2]*r[3]+t[5]*r[4]+t[8]*r[5],l=t[0]*r[6]+t[3]*r[7]+t[6]*r[8],c=t[1]*r[6]+t[4]*r[7]+t[7]*r[8],f=t[2]*r[6]+t[5]*r[7]+t[8]*r[8];return e[0]=n,e[1]=o,e[2]=i,e[3]=a,e[4]=s,e[5]=u,e[6]=l,e[7]=c,e[8]=f,e},l.add=function(t,r,e){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e[4]=t[4]+r[4],e[5]=t[5]+r[5],e[6]=t[6]+r[6],e[7]=t[7]+r[7],e[8]=t[8]+r[8],e},l.subtract=function(t,r,e){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e[4]=t[4]-r[4],e[5]=t[5]-r[5],e[6]=t[6]-r[6],e[7]=t[7]-r[7],e[8]=t[8]-r[8],e},l.multiplyByVector=function(t,r,e){var n=r.x,o=r.y,i=r.z,a=t[0]*n+t[3]*o+t[6]*i,s=t[1]*n+t[4]*o+t[7]*i,u=t[2]*n+t[5]*o+t[8]*i;return e.x=a,e.y=s,e.z=u,e},l.multiplyByScalar=function(t,r,e){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*r,e},l.multiplyByScale=function(t,r,e){return e[0]=t[0]*r.x,e[1]=t[1]*r.x,e[2]=t[2]*r.x,e[3]=t[3]*r.y,e[4]=t[4]*r.y,e[5]=t[5]*r.y,e[6]=t[6]*r.z,e[7]=t[7]*r.z,e[8]=t[8]*r.z,e},l.negate=function(t,r){return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[3]=-t[3],r[4]=-t[4],r[5]=-t[5],r[6]=-t[6],r[7]=-t[7],r[8]=-t[8],r},l.transpose=function(t,r){var e=t[0],n=t[3],o=t[6],i=t[1],a=t[4],s=t[7],u=t[2],l=t[5],c=t[8];return r[0]=e,r[1]=n,r[2]=o,r[3]=i,r[4]=a,r[5]=s,r[6]=u,r[7]=l,r[8]=c,r};var h=[1,0,0],d=[2,2,1],m=new l,p=new l;return l.computeEigenDecomposition=function(t,r){var n=i.EPSILON20,o=10,c=0,f=0;e(r)||(r={});for(var h=r.unitary=l.clone(l.IDENTITY,r.unitary),d=r.diagonal=l.clone(t,r.diagonal),g=n*a(d);o>f&&s(d)>g;)u(d,m),l.transpose(m,p),l.multiply(d,m,d),l.multiply(p,d,d),l.multiply(h,m,h),++c>2&&(++f,c=0);return r},l.abs=function(t,r){return r[0]=Math.abs(t[0]),r[1]=Math.abs(t[1]),r[2]=Math.abs(t[2]),r[3]=Math.abs(t[3]),r[4]=Math.abs(t[4]),r[5]=Math.abs(t[5]),r[6]=Math.abs(t[6]),r[7]=Math.abs(t[7]),r[8]=Math.abs(t[8]),r},l.determinant=function(t){var r=t[0],e=t[3],n=t[6],o=t[1],i=t[4],a=t[7],s=t[2],u=t[5],l=t[8];return r*(i*l-u*a)+o*(u*n-e*l)+s*(e*a-i*n)},l.inverse=function(t,r){var e=t[0],o=t[1],a=t[2],s=t[3],u=t[4],c=t[5],f=t[6],h=t[7],d=t[8],m=l.determinant(t);if(Math.abs(m)<=i.EPSILON15)throw new n("matrix is not invertible");r[0]=u*d-h*c,r[1]=h*a-o*d,r[2]=o*c-u*a,r[3]=f*c-s*d,r[4]=e*d-f*a,r[5]=s*a-e*c,r[6]=s*h-f*u,r[7]=f*o-e*h,r[8]=e*u-s*o;var p=1/m;return l.multiplyByScalar(r,p,r)},l.equals=function(t,r){return t===r||e(t)&&e(r)&&t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[3]===r[3]&&t[4]===r[4]&&t[5]===r[5]&&t[6]===r[6]&&t[7]===r[7]&&t[8]===r[8]},l.equalsEpsilon=function(t,r,n){return t===r||e(t)&&e(r)&&Math.abs(t[0]-r[0])<=n&&Math.abs(t[1]-r[1])<=n&&Math.abs(t[2]-r[2])<=n&&Math.abs(t[3]-r[3])<=n&&Math.abs(t[4]-r[4])<=n&&Math.abs(t[5]-r[5])<=n&&Math.abs(t[6]-r[6])<=n&&Math.abs(t[7]-r[7])<=n&&Math.abs(t[8]-r[8])<=n},l.IDENTITY=o(new l(1,0,0,0,1,0,0,0,1)),l.ZERO=o(new l(0,0,0,0,0,0,0,0,0)),l.COLUMN0ROW0=0,l.COLUMN0ROW1=1,l.COLUMN0ROW2=2,l.COLUMN1ROW0=3,l.COLUMN1ROW1=4,l.COLUMN1ROW2=5,l.COLUMN2ROW0=6,l.COLUMN2ROW1=7,l.COLUMN2ROW2=8,l.prototype.clone=function(t){return l.clone(this,t)},l.prototype.equals=function(t){return l.equals(this,t)},l.equalsArray=function(t,r,e){return t[0]===r[e]&&t[1]===r[e+1]&&t[2]===r[e+2]&&t[3]===r[e+3]&&t[4]===r[e+4]&&t[5]===r[e+5]&&t[6]===r[e+6]&&t[7]===r[e+7]&&t[8]===r[e+8]},l.prototype.equalsEpsilon=function(t,r){return l.equalsEpsilon(this,t,r)},l.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},l}),define("Core/RuntimeError",["./defined"],function(t){"use strict";var r=function(t){this.name="RuntimeError",this.message=t;var r;try{throw new Error}catch(e){r=e.stack}this.stack=r};return r.prototype.toString=function(){var r=this.name+": "+this.message;return t(this.stack)&&(r+="\n"+this.stack.toString()),r},r}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(t,r,e,n,o,i,a,s,u){"use strict";var l=function(t,r,n,o,i,a,s,u,l,c,f,h,d,m,p,g){this[0]=e(t,0),this[1]=e(i,0),this[2]=e(l,0),this[3]=e(d,0),this[4]=e(r,0),this[5]=e(a,0),this[6]=e(c,0),this[7]=e(m,0),this[8]=e(n,0),this[9]=e(s,0),this[10]=e(f,0),this[11]=e(p,0),this[12]=e(o,0),this[13]=e(u,0),this[14]=e(h,0),this[15]=e(g,0)};l.packedLength=16,l.pack=function(t,r,n){n=e(n,0),r[n++]=t[0],r[n++]=t[1],r[n++]=t[2],r[n++]=t[3],r[n++]=t[4],r[n++]=t[5],r[n++]=t[6],r[n++]=t[7],r[n++]=t[8],r[n++]=t[9],r[n++]=t[10],r[n++]=t[11],r[n++]=t[12],r[n++]=t[13],r[n++]=t[14],r[n]=t[15]},l.unpack=function(t,r,o){return r=e(r,0),n(o)||(o=new l),o[0]=t[r++],o[1]=t[r++],o[2]=t[r++],o[3]=t[r++],o[4]=t[r++],o[5]=t[r++],o[6]=t[r++],o[7]=t[r++],o[8]=t[r++],o[9]=t[r++],o[10]=t[r++],o[11]=t[r++],o[12]=t[r++],o[13]=t[r++],o[14]=t[r++],o[15]=t[r],o},l.clone=function(t,r){return n(t)?n(r)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=t[11],r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r):new l(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]):void 0},l.fromArray=l.unpack,l.fromColumnMajorArray=function(t,r){return l.clone(t,r)},l.fromRowMajorArray=function(t,r){return n(r)?(r[0]=t[0],r[1]=t[4],r[2]=t[8],r[3]=t[12],r[4]=t[1],r[5]=t[5],r[6]=t[9],r[7]=t[13],r[8]=t[2],r[9]=t[6],r[10]=t[10],r[11]=t[14],r[12]=t[3],r[13]=t[7],r[14]=t[11],r[15]=t[15],r):new l(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},l.fromRotationTranslation=function(r,o,i){return o=e(o,t.ZERO),n(i)?(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=0,i[4]=r[3],i[5]=r[4],i[6]=r[5],i[7]=0,i[8]=r[6],i[9]=r[7],i[10]=r[8],i[11]=0,i[12]=o.x,i[13]=o.y,i[14]=o.z,i[15]=1,i):new l(r[0],r[3],r[6],o.x,r[1],r[4],r[7],o.y,r[2],r[5],r[8],o.z,0,0,0,1)},l.fromTranslationQuaternionRotationScale=function(t,r,e,o){n(o)||(o=new l);var i=e.x,a=e.y,s=e.z,u=r.x*r.x,c=r.x*r.y,f=r.x*r.z,h=r.x*r.w,d=r.y*r.y,m=r.y*r.z,p=r.y*r.w,g=r.z*r.z,y=r.z*r.w,E=r.w*r.w,v=u-d-g+E,C=2*(c-y),S=2*(f+p),w=2*(c+y),M=-u+d-g+E,R=2*(m-h),A=2*(f-p),O=2*(m+h),T=-u-d+g+E;return o[0]=v*i,o[1]=w*i,o[2]=A*i,o[3]=0,o[4]=C*a,o[5]=M*a,o[6]=O*a,o[7]=0,o[8]=S*s,o[9]=R*s,o[10]=T*s,o[11]=0,o[12]=t.x,o[13]=t.y,o[14]=t.z,o[15]=1,o},l.fromTranslation=function(t,r){return l.fromRotationTranslation(s.IDENTITY,t,r)},l.fromScale=function(t,r){return n(r)?(r[0]=t.x,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=t.y,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=t.z,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r):new l(t.x,0,0,0,0,t.y,0,0,0,0,t.z,0,0,0,0,1)},l.fromUniformScale=function(t,r){return n(r)?(r[0]=t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=t,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=t,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r):new l(t,0,0,0,0,t,0,0,0,0,t,0,0,0,0,1)};var c=new t,f=new t,h=new t;l.fromCamera=function(r,e){var o=r.eye,i=r.target,a=r.up;t.normalize(t.subtract(i,o,c),c),t.normalize(t.cross(c,a,f),f),t.normalize(t.cross(f,c,h),h);var s=f.x,u=f.y,d=f.z,m=c.x,p=c.y,g=c.z,y=h.x,E=h.y,v=h.z,C=o.x,S=o.y,w=o.z,M=s*-C+u*-S+d*-w,R=y*-C+E*-S+v*-w,A=m*C+p*S+g*w;return n(e)?(e[0]=s,e[1]=y,e[2]=-m,e[3]=0,e[4]=u,e[5]=E,e[6]=-p,e[7]=0,e[8]=d,e[9]=v,e[10]=-g,e[11]=0,e[12]=M,e[13]=R,e[14]=A,e[15]=1,e):new l(s,u,d,M,y,E,v,R,-m,-p,-g,A,0,0,0,1)},l.computePerspectiveFieldOfView=function(t,r,e,n,o){var i=Math.tan(.5*t),a=1/i,s=a/r,u=(n+e)/(e-n),l=2*n*e/(e-n);return o[0]=s,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=a,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=u,o[11]=-1,o[12]=0,o[13]=0,o[14]=l,o[15]=0,o},l.computeOrthographicOffCenter=function(t,r,e,n,o,i,a){var s=1/(r-t),u=1/(n-e),l=1/(i-o),c=-(r+t)*s,f=-(n+e)*u,h=-(i+o)*l;return s*=2,u*=2,l*=-2,a[0]=s,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=l,a[11]=0,a[12]=c,a[13]=f,a[14]=h,a[15]=1,a +},l.computePerspectiveOffCenter=function(t,r,e,n,o,i,a){var s=2*o/(r-t),u=2*o/(n-e),l=(r+t)/(r-t),c=(n+e)/(n-e),f=-(i+o)/(i-o),h=-1,d=-2*i*o/(i-o);return a[0]=s,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=l,a[9]=c,a[10]=f,a[11]=h,a[12]=0,a[13]=0,a[14]=d,a[15]=0,a},l.computeInfinitePerspectiveOffCenter=function(t,r,e,n,o,i){var a=2*o/(r-t),s=2*o/(n-e),u=(r+t)/(r-t),l=(n+e)/(n-e),c=-1,f=-1,h=-2*o;return i[0]=a,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=s,i[6]=0,i[7]=0,i[8]=u,i[9]=l,i[10]=c,i[11]=f,i[12]=0,i[13]=0,i[14]=h,i[15]=0,i},l.computeViewportTransformation=function(t,r,n,o){t=e(t,e.EMPTY_OBJECT);var i=e(t.x,0),a=e(t.y,0),s=e(t.width,0),u=e(t.height,0);r=e(r,0),n=e(n,1);var l=.5*s,c=.5*u,f=.5*(n-r),h=l,d=c,m=f,p=i+l,g=a+c,y=r+f,E=1;return o[0]=h,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=d,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=m,o[11]=0,o[12]=p,o[13]=g,o[14]=y,o[15]=E,o},l.toArray=function(t,r){return n(r)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=t[11],r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},l.getElementIndex=function(t,r){return 4*t+r},l.getColumn=function(t,r,e){var n=4*r,o=t[n],i=t[n+1],a=t[n+2],s=t[n+3];return e.x=o,e.y=i,e.z=a,e.w=s,e},l.setColumn=function(t,r,e,n){n=l.clone(t,n);var o=4*r;return n[o]=e.x,n[o+1]=e.y,n[o+2]=e.z,n[o+3]=e.w,n},l.setTranslation=function(t,r,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=r.x,e[13]=r.y,e[14]=r.z,e[15]=t[15],e},l.getRow=function(t,r,e){var n=t[r],o=t[r+4],i=t[r+8],a=t[r+12];return e.x=n,e.y=o,e.z=i,e.w=a,e},l.setRow=function(t,r,e,n){return n=l.clone(t,n),n[r]=e.x,n[r+4]=e.y,n[r+8]=e.z,n[r+12]=e.w,n};var d=new t;l.getScale=function(r,e){return e.x=t.magnitude(t.fromElements(r[0],r[1],r[2],d)),e.y=t.magnitude(t.fromElements(r[4],r[5],r[6],d)),e.z=t.magnitude(t.fromElements(r[8],r[9],r[10],d)),e};var m=new t;l.getMaximumScale=function(r){return l.getScale(r,m),t.maximumComponent(m)},l.multiply=function(t,r,e){var n=t[0],o=t[1],i=t[2],a=t[3],s=t[4],u=t[5],l=t[6],c=t[7],f=t[8],h=t[9],d=t[10],m=t[11],p=t[12],g=t[13],y=t[14],E=t[15],v=r[0],C=r[1],S=r[2],w=r[3],M=r[4],R=r[5],A=r[6],O=r[7],T=r[8],I=r[9],N=r[10],x=r[11],_=r[12],L=r[13],b=r[14],P=r[15],F=n*v+s*C+f*S+p*w,z=o*v+u*C+h*S+g*w,D=i*v+l*C+d*S+y*w,B=a*v+c*C+m*S+E*w,U=n*M+s*R+f*A+p*O,q=o*M+u*R+h*A+g*O,G=i*M+l*R+d*A+y*O,W=a*M+c*R+m*A+E*O,Y=n*T+s*I+f*N+p*x,H=o*T+u*I+h*N+g*x,V=i*T+l*I+d*N+y*x,k=a*T+c*I+m*N+E*x,K=n*_+s*L+f*b+p*P,j=o*_+u*L+h*b+g*P,Z=i*_+l*L+d*b+y*P,X=a*_+c*L+m*b+E*P;return e[0]=F,e[1]=z,e[2]=D,e[3]=B,e[4]=U,e[5]=q,e[6]=G,e[7]=W,e[8]=Y,e[9]=H,e[10]=V,e[11]=k,e[12]=K,e[13]=j,e[14]=Z,e[15]=X,e},l.add=function(t,r,e){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e[4]=t[4]+r[4],e[5]=t[5]+r[5],e[6]=t[6]+r[6],e[7]=t[7]+r[7],e[8]=t[8]+r[8],e[9]=t[9]+r[9],e[10]=t[10]+r[10],e[11]=t[11]+r[11],e[12]=t[12]+r[12],e[13]=t[13]+r[13],e[14]=t[14]+r[14],e[15]=t[15]+r[15],e},l.subtract=function(t,r,e){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e[4]=t[4]-r[4],e[5]=t[5]-r[5],e[6]=t[6]-r[6],e[7]=t[7]-r[7],e[8]=t[8]-r[8],e[9]=t[9]-r[9],e[10]=t[10]-r[10],e[11]=t[11]-r[11],e[12]=t[12]-r[12],e[13]=t[13]-r[13],e[14]=t[14]-r[14],e[15]=t[15]-r[15],e},l.multiplyTransformation=function(t,r,e){var n=t[0],o=t[1],i=t[2],a=t[4],s=t[5],u=t[6],l=t[8],c=t[9],f=t[10],h=t[12],d=t[13],m=t[14],p=r[0],g=r[1],y=r[2],E=r[4],v=r[5],C=r[6],S=r[8],w=r[9],M=r[10],R=r[12],A=r[13],O=r[14],T=n*p+a*g+l*y,I=o*p+s*g+c*y,N=i*p+u*g+f*y,x=n*E+a*v+l*C,_=o*E+s*v+c*C,L=i*E+u*v+f*C,b=n*S+a*w+l*M,P=o*S+s*w+c*M,F=i*S+u*w+f*M,z=n*R+a*A+l*O+h,D=o*R+s*A+c*O+d,B=i*R+u*A+f*O+m;return e[0]=T,e[1]=I,e[2]=N,e[3]=0,e[4]=x,e[5]=_,e[6]=L,e[7]=0,e[8]=b,e[9]=P,e[10]=F,e[11]=0,e[12]=z,e[13]=D,e[14]=B,e[15]=1,e},l.multiplyByMatrix3=function(t,r,e){var n=t[0],o=t[1],i=t[2],a=t[4],s=t[5],u=t[6],l=t[8],c=t[9],f=t[10],h=r[0],d=r[1],m=r[2],p=r[3],g=r[4],y=r[5],E=r[6],v=r[7],C=r[8],S=n*h+a*d+l*m,w=o*h+s*d+c*m,M=i*h+u*d+f*m,R=n*p+a*g+l*y,A=o*p+s*g+c*y,O=i*p+u*g+f*y,T=n*E+a*v+l*C,I=o*E+s*v+c*C,N=i*E+u*v+f*C;return e[0]=S,e[1]=w,e[2]=M,e[3]=0,e[4]=R,e[5]=A,e[6]=O,e[7]=0,e[8]=T,e[9]=I,e[10]=N,e[11]=0,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},l.multiplyByTranslation=function(t,r,e){var n=r.x,o=r.y,i=r.z,a=n*t[0]+o*t[4]+i*t[8]+t[12],s=n*t[1]+o*t[5]+i*t[9]+t[13],u=n*t[2]+o*t[6]+i*t[10]+t[14];return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=a,e[13]=s,e[14]=u,e[15]=t[15],e};var p=new t;l.multiplyByUniformScale=function(t,r,e){return p.x=r,p.y=r,p.z=r,l.multiplyByScale(t,p,e)},l.multiplyByScale=function(t,r,e){var n=r.x,o=r.y,i=r.z;return 1===n&&1===o&&1===i?l.clone(t,e):(e[0]=n*t[0],e[1]=n*t[1],e[2]=n*t[2],e[3]=0,e[4]=o*t[4],e[5]=o*t[5],e[6]=o*t[6],e[7]=0,e[8]=i*t[8],e[9]=i*t[9],e[10]=i*t[10],e[11]=0,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=1,e)},l.multiplyByVector=function(t,r,e){var n=r.x,o=r.y,i=r.z,a=r.w,s=t[0]*n+t[4]*o+t[8]*i+t[12]*a,u=t[1]*n+t[5]*o+t[9]*i+t[13]*a,l=t[2]*n+t[6]*o+t[10]*i+t[14]*a,c=t[3]*n+t[7]*o+t[11]*i+t[15]*a;return e.x=s,e.y=u,e.z=l,e.w=c,e},l.multiplyByPointAsVector=function(t,r,e){var n=r.x,o=r.y,i=r.z,a=t[0]*n+t[4]*o+t[8]*i,s=t[1]*n+t[5]*o+t[9]*i,u=t[2]*n+t[6]*o+t[10]*i;return e.x=a,e.y=s,e.z=u,e},l.multiplyByPoint=function(t,r,e){var n=r.x,o=r.y,i=r.z,a=t[0]*n+t[4]*o+t[8]*i+t[12],s=t[1]*n+t[5]*o+t[9]*i+t[13],u=t[2]*n+t[6]*o+t[10]*i+t[14];return e.x=a,e.y=s,e.z=u,e},l.multiplyByScalar=function(t,r,e){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*r,e[9]=t[9]*r,e[10]=t[10]*r,e[11]=t[11]*r,e[12]=t[12]*r,e[13]=t[13]*r,e[14]=t[14]*r,e[15]=t[15]*r,e},l.negate=function(t,r){return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[3]=-t[3],r[4]=-t[4],r[5]=-t[5],r[6]=-t[6],r[7]=-t[7],r[8]=-t[8],r[9]=-t[9],r[10]=-t[10],r[11]=-t[11],r[12]=-t[12],r[13]=-t[13],r[14]=-t[14],r[15]=-t[15],r},l.transpose=function(t,r){var e=t[1],n=t[2],o=t[3],i=t[6],a=t[7],s=t[11];return r[0]=t[0],r[1]=t[4],r[2]=t[8],r[3]=t[12],r[4]=e,r[5]=t[5],r[6]=t[9],r[7]=t[13],r[8]=n,r[9]=i,r[10]=t[10],r[11]=t[14],r[12]=o,r[13]=a,r[14]=s,r[15]=t[15],r},l.abs=function(t,r){return r[0]=Math.abs(t[0]),r[1]=Math.abs(t[1]),r[2]=Math.abs(t[2]),r[3]=Math.abs(t[3]),r[4]=Math.abs(t[4]),r[5]=Math.abs(t[5]),r[6]=Math.abs(t[6]),r[7]=Math.abs(t[7]),r[8]=Math.abs(t[8]),r[9]=Math.abs(t[9]),r[10]=Math.abs(t[10]),r[11]=Math.abs(t[11]),r[12]=Math.abs(t[12]),r[13]=Math.abs(t[13]),r[14]=Math.abs(t[14]),r[15]=Math.abs(t[15]),r},l.equals=function(t,r){return t===r||n(t)&&n(r)&&t[12]===r[12]&&t[13]===r[13]&&t[14]===r[14]&&t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[4]===r[4]&&t[5]===r[5]&&t[6]===r[6]&&t[8]===r[8]&&t[9]===r[9]&&t[10]===r[10]&&t[3]===r[3]&&t[7]===r[7]&&t[11]===r[11]&&t[15]===r[15]},l.equalsEpsilon=function(t,r,e){return t===r||n(t)&&n(r)&&Math.abs(t[0]-r[0])<=e&&Math.abs(t[1]-r[1])<=e&&Math.abs(t[2]-r[2])<=e&&Math.abs(t[3]-r[3])<=e&&Math.abs(t[4]-r[4])<=e&&Math.abs(t[5]-r[5])<=e&&Math.abs(t[6]-r[6])<=e&&Math.abs(t[7]-r[7])<=e&&Math.abs(t[8]-r[8])<=e&&Math.abs(t[9]-r[9])<=e&&Math.abs(t[10]-r[10])<=e&&Math.abs(t[11]-r[11])<=e&&Math.abs(t[12]-r[12])<=e&&Math.abs(t[13]-r[13])<=e&&Math.abs(t[14]-r[14])<=e&&Math.abs(t[15]-r[15])<=e},l.getTranslation=function(t,r){return r.x=t[12],r.y=t[13],r.z=t[14],r},l.getRotation=function(t,r){return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[4],r[4]=t[5],r[5]=t[6],r[6]=t[8],r[7]=t[9],r[8]=t[10],r};var g=new s,y=new s,E=new r,v=new r(0,0,0,1);return l.inverse=function(t,e){if(s.equalsEpsilon(l.getRotation(t,g),y,a.EPSILON7)&&r.equals(l.getRow(t,3,E),v))return e[0]=0,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=0,e[11]=0,e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=1,e;var n=t[0],o=t[4],i=t[8],c=t[12],f=t[1],h=t[5],d=t[9],m=t[13],p=t[2],C=t[6],S=t[10],w=t[14],M=t[3],R=t[7],A=t[11],O=t[15],T=S*O,I=w*A,N=C*O,x=w*R,_=C*A,L=S*R,b=p*O,P=w*M,F=p*A,z=S*M,D=p*R,B=C*M,U=T*h+x*d+_*m-(I*h+N*d+L*m),q=I*f+b*d+z*m-(T*f+P*d+F*m),G=N*f+P*h+D*m-(x*f+b*h+B*m),W=L*f+F*h+B*d-(_*f+z*h+D*d),Y=I*o+N*i+L*c-(T*o+x*i+_*c),H=T*n+P*i+F*c-(I*n+b*i+z*c),V=x*n+b*o+B*c-(N*n+P*o+D*c),k=_*n+z*o+D*i-(L*n+F*o+B*i);T=i*m,I=c*d,N=o*m,x=c*h,_=o*d,L=i*h,b=n*m,P=c*f,F=n*d,z=i*f,D=n*h,B=o*f;var K=T*R+x*A+_*O-(I*R+N*A+L*O),j=I*M+b*A+z*O-(T*M+P*A+F*O),Z=N*M+P*R+D*O-(x*M+b*R+B*O),X=L*M+F*R+B*A-(_*M+z*R+D*A),Q=N*S+L*w+I*C-(_*w+T*C+x*S),J=F*w+T*p+P*S-(b*S+z*w+I*p),$=b*C+B*w+x*p-(D*w+N*p+P*C),tr=D*S+_*p+z*C-(F*C+B*S+L*p),rr=n*U+o*q+i*G+c*W;if(Math.abs(rr)<a.EPSILON20)throw new u("matrix is not invertible because its determinate is zero.");return rr=1/rr,e[0]=U*rr,e[1]=q*rr,e[2]=G*rr,e[3]=W*rr,e[4]=Y*rr,e[5]=H*rr,e[6]=V*rr,e[7]=k*rr,e[8]=K*rr,e[9]=j*rr,e[10]=Z*rr,e[11]=X*rr,e[12]=Q*rr,e[13]=J*rr,e[14]=$*rr,e[15]=tr*rr,e},l.inverseTransformation=function(t,r){var e=t[0],n=t[1],o=t[2],i=t[4],a=t[5],s=t[6],u=t[8],l=t[9],c=t[10],f=t[12],h=t[13],d=t[14],m=-e*f-n*h-o*d,p=-i*f-a*h-s*d,g=-u*f-l*h-c*d;return r[0]=e,r[1]=i,r[2]=u,r[3]=0,r[4]=n,r[5]=a,r[6]=l,r[7]=0,r[8]=o,r[9]=s,r[10]=c,r[11]=0,r[12]=m,r[13]=p,r[14]=g,r[15]=1,r},l.IDENTITY=i(new l(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),l.ZERO=i(new l(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),l.COLUMN0ROW0=0,l.COLUMN0ROW1=1,l.COLUMN0ROW2=2,l.COLUMN0ROW3=3,l.COLUMN1ROW0=4,l.COLUMN1ROW1=5,l.COLUMN1ROW2=6,l.COLUMN1ROW3=7,l.COLUMN2ROW0=8,l.COLUMN2ROW1=9,l.COLUMN2ROW2=10,l.COLUMN2ROW3=11,l.COLUMN3ROW0=12,l.COLUMN3ROW1=13,l.COLUMN3ROW2=14,l.COLUMN3ROW3=15,l.prototype.clone=function(t){return l.clone(this,t)},l.prototype.equals=function(t){return l.equals(this,t)},l.equalsArray=function(t,r,e){return t[0]===r[e]&&t[1]===r[e+1]&&t[2]===r[e+2]&&t[3]===r[e+3]&&t[4]===r[e+4]&&t[5]===r[e+5]&&t[6]===r[e+6]&&t[7]===r[e+7]&&t[8]===r[e+8]&&t[9]===r[e+9]&&t[10]===r[e+10]&&t[11]===r[e+11]&&t[12]===r[e+12]&&t[13]===r[e+13]&&t[14]===r[e+14]&&t[15]===r[e+15]},l.prototype.equalsEpsilon=function(t,r){return l.equalsEpsilon(this,t,r)},l.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},l}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(t,r,e,n){"use strict";var o=function(r,e){this.normal=t.clone(r),this.distance=e};o.fromPointNormal=function(e,n,i){var a=-t.dot(n,e);return r(i)?(t.clone(n,i.normal),i.distance=a,i):new o(n,a)};var i=new t;return o.fromCartesian4=function(e,n){var a=t.fromCartesian4(e,i),s=e.w;return r(n)?(t.clone(a,n.normal),n.distance=s,n):new o(a,s)},o.getPointDistance=function(r,e){return t.dot(r.normal,e)+r.distance},o.ORIGIN_XY_PLANE=n(new o(t.UNIT_Z,0)),o.ORIGIN_YZ_PLANE=n(new o(t.UNIT_X,0)),o.ORIGIN_ZX_PLANE=n(new o(t.UNIT_Y,0)),o}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(t,r,e,n,o,i,a,s){"use strict";var u=function(t,e,n,o){this.west=r(t,0),this.south=r(e,0),this.east=r(n,0),this.north=r(o,0)};n(u.prototype,{width:{get:function(){return u.computeWidth(this)}},height:{get:function(){return u.computeHeight(this)}}}),u.packedLength=4,u.pack=function(t,e,n){n=r(n,0),e[n++]=t.west,e[n++]=t.south,e[n++]=t.east,e[n]=t.north},u.unpack=function(t,n,o){return n=r(n,0),e(o)||(o=new u),o.west=t[n++],o.south=t[n++],o.east=t[n++],o.north=t[n],o},u.computeWidth=function(t){var r=t.east,e=t.west;return e>r&&(r+=s.TWO_PI),r-e},u.computeHeight=function(t){return t.north-t.south},u.fromDegrees=function(t,n,o,i,a){return t=s.toRadians(r(t,0)),n=s.toRadians(r(n,0)),o=s.toRadians(r(o,0)),i=s.toRadians(r(i,0)),e(a)?(a.west=t,a.south=n,a.east=o,a.north=i,a):new u(t,n,o,i)},u.fromCartographicArray=function(t,r){for(var n=Number.MAX_VALUE,o=-Number.MAX_VALUE,i=Number.MAX_VALUE,a=-Number.MAX_VALUE,s=0,l=t.length;l>s;s++){var c=t[s];n=Math.min(n,c.longitude),o=Math.max(o,c.longitude),i=Math.min(i,c.latitude),a=Math.max(a,c.latitude)}return e(r)?(r.west=n,r.south=i,r.east=o,r.north=a,r):new u(n,i,o,a)},u.clone=function(t,r){return e(t)?e(r)?(r.west=t.west,r.south=t.south,r.east=t.east,r.north=t.north,r):new u(t.west,t.south,t.east,t.north):void 0},u.prototype.clone=function(t){return u.clone(this,t)},u.prototype.equals=function(t){return u.equals(this,t)},u.equals=function(t,r){return t===r||e(t)&&e(r)&&t.west===r.west&&t.south===r.south&&t.east===r.east&&t.north===r.north},u.prototype.equalsEpsilon=function(t,r){return e(t)&&Math.abs(this.west-t.west)<=r&&Math.abs(this.south-t.south)<=r&&Math.abs(this.east-t.east)<=r&&Math.abs(this.north-t.north)<=r},u.validate=function(){},u.southwest=function(r,n){return e(n)?(n.longitude=r.west,n.latitude=r.south,n.height=0,n):new t(r.west,r.south)},u.northwest=function(r,n){return e(n)?(n.longitude=r.west,n.latitude=r.north,n.height=0,n):new t(r.west,r.north)},u.northeast=function(r,n){return e(n)?(n.longitude=r.east,n.latitude=r.north,n.height=0,n):new t(r.east,r.north)},u.southeast=function(r,n){return e(n)?(n.longitude=r.east,n.latitude=r.south,n.height=0,n):new t(r.east,r.south)},u.center=function(r,n){var o=r.east,i=r.west;i>o&&(o+=s.TWO_PI);var a=s.negativePiToPi(.5*(i+o)),u=.5*(r.south+r.north);return e(n)?(n.longitude=a,n.latitude=u,n.height=0,n):new t(a,u)},u.intersection=function(t,r,n){var o=t.east,i=t.west,a=r.east,l=r.west;i>o&&a>0?o+=s.TWO_PI:l>a&&o>0&&(a+=s.TWO_PI),i>o&&0>l?l+=s.TWO_PI:l>a&&0>i&&(i+=s.TWO_PI);var c=s.negativePiToPi(Math.max(i,l)),f=s.negativePiToPi(Math.min(o,a));if((t.west<t.east||r.west<r.east)&&c>=f)return void 0;var h=Math.max(t.south,r.south),d=Math.min(t.north,r.north);return h>=d?void 0:e(n)?(n.west=c,n.south=h,n.east=f,n.north=d,n):new u(c,h,f,d)},u.contains=function(t,r){var e=r.longitude,n=r.latitude,o=t.west,i=t.east;return o>i&&(i+=s.TWO_PI,0>e&&(e+=s.TWO_PI)),(e>o||s.equalsEpsilon(e,o,s.EPSILON14))&&(i>e||s.equalsEpsilon(e,i,s.EPSILON14))&&n>=t.south&&n<=t.north};var l=new t;return u.subsample=function(t,n,o,a){n=r(n,i.WGS84),o=r(o,0),e(a)||(a=[]);var c=0,f=t.north,h=t.south,d=t.east,m=t.west,p=l;p.height=o,p.longitude=m,p.latitude=f,a[c]=n.cartographicToCartesian(p,a[c]),c++,p.longitude=d,a[c]=n.cartographicToCartesian(p,a[c]),c++,p.latitude=h,a[c]=n.cartographicToCartesian(p,a[c]),c++,p.longitude=m,a[c]=n.cartographicToCartesian(p,a[c]),c++,p.latitude=0>f?f:h>0?h:0;for(var g=1;8>g;++g)p.longitude=-Math.PI+g*s.PI_OVER_TWO,u.contains(t,p)&&(a[c]=n.cartographicToCartesian(p,a[c]),c++);return 0===p.latitude&&(p.longitude=m,a[c]=n.cartographicToCartesian(p,a[c]),c++,p.longitude=d,a[c]=n.cartographicToCartesian(p,a[c]),c++),a.length=c,a},u.MAX_VALUE=a(new u(-Math.PI,-s.PI_OVER_TWO,Math.PI,s.PI_OVER_TWO)),u}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(t,r,e,n,o,i,a,s,u,l,c,f,h){"use strict";var d=function(r,n){this.center=t.clone(e(r,t.ZERO)),this.radius=e(n,0)},m=new t,p=new t,g=new t,y=new t,E=new t,v=new t,C=new t,S=new t,w=new t,M=new t,R=new t,A=new t;d.fromPoints=function(r,e){if(n(e)||(e=new d),!n(r)||0===r.length)return e.center=t.clone(t.ZERO,e.center),e.radius=0,e;for(var o=t.clone(r[0],C),i=t.clone(o,m),a=t.clone(o,p),s=t.clone(o,g),u=t.clone(o,y),l=t.clone(o,E),c=t.clone(o,v),f=r.length,h=1;f>h;h++){t.clone(r[h],o);var O=o.x,T=o.y,I=o.z;O<i.x&&t.clone(o,i),O>u.x&&t.clone(o,u),T<a.y&&t.clone(o,a),T>l.y&&t.clone(o,l),I<s.z&&t.clone(o,s),I>c.z&&t.clone(o,c)}var N=t.magnitudeSquared(t.subtract(u,i,S)),x=t.magnitudeSquared(t.subtract(l,a,S)),_=t.magnitudeSquared(t.subtract(c,s,S)),L=i,b=u,P=N;x>P&&(P=x,L=a,b=l),_>P&&(P=_,L=s,b=c);var F=w;F.x=.5*(L.x+b.x),F.y=.5*(L.y+b.y),F.z=.5*(L.z+b.z);var z=t.magnitudeSquared(t.subtract(b,F,S)),D=Math.sqrt(z),B=M;B.x=i.x,B.y=a.y,B.z=s.z;var U=R;U.x=u.x,U.y=l.y,U.z=c.z;var q=t.multiplyByScalar(t.add(B,U,S),.5,A),G=0;for(h=0;f>h;h++){t.clone(r[h],o);var W=t.magnitude(t.subtract(o,q,S));W>G&&(G=W);var Y=t.magnitudeSquared(t.subtract(o,F,S));if(Y>z){var H=Math.sqrt(Y);D=.5*(D+H),z=D*D;var V=H-D;F.x=(D*F.x+V*o.x)/H,F.y=(D*F.y+V*o.y)/H,F.z=(D*F.z+V*o.z)/H}}return G>D?(t.clone(F,e.center),e.radius=D):(t.clone(q,e.center),e.radius=G),e};var O=new s,T=new t,I=new t,N=new r,x=new r;d.fromRectangle2D=function(t,r,e){return d.fromRectangleWithHeights2D(t,r,0,0,e)},d.fromRectangleWithHeights2D=function(r,o,i,a,s){if(n(s)||(s=new d),!n(r))return s.center=t.clone(t.ZERO,s.center),s.radius=0,s;o=e(o,O),h.southwest(r,N),N.height=i,h.northeast(r,x),x.height=a;var u=o.project(N,T),l=o.project(x,I),c=l.x-u.x,f=l.y-u.y,m=l.z-u.z;s.radius=.5*Math.sqrt(c*c+f*f+m*m);var p=s.center;return p.x=u.x+.5*c,p.y=u.y+.5*f,p.z=u.z+.5*m,s};var _=[];d.fromRectangle3D=function(t,r,o,i){r=e(r,a.WGS84),o=e(o,0);var s;return n(t)&&(s=h.subsample(t,r,o,_)),d.fromPoints(s,i)},d.fromVertices=function(r,o,i,a){if(n(a)||(a=new d),!n(r)||0===r.length)return a.center=t.clone(t.ZERO,a.center),a.radius=0,a;o=e(o,t.ZERO),i=e(i,3);var s=C;s.x=r[0]+o.x,s.y=r[1]+o.y,s.z=r[2]+o.z;for(var u=t.clone(s,m),l=t.clone(s,p),c=t.clone(s,g),f=t.clone(s,y),h=t.clone(s,E),O=t.clone(s,v),T=r.length,I=0;T>I;I+=i){var N=r[I]+o.x,x=r[I+1]+o.y,_=r[I+2]+o.z;s.x=N,s.y=x,s.z=_,N<u.x&&t.clone(s,u),N>f.x&&t.clone(s,f),x<l.y&&t.clone(s,l),x>h.y&&t.clone(s,h),_<c.z&&t.clone(s,c),_>O.z&&t.clone(s,O)}var L=t.magnitudeSquared(t.subtract(f,u,S)),b=t.magnitudeSquared(t.subtract(h,l,S)),P=t.magnitudeSquared(t.subtract(O,c,S)),F=u,z=f,D=L;b>D&&(D=b,F=l,z=h),P>D&&(D=P,F=c,z=O);var B=w;B.x=.5*(F.x+z.x),B.y=.5*(F.y+z.y),B.z=.5*(F.z+z.z);var U=t.magnitudeSquared(t.subtract(z,B,S)),q=Math.sqrt(U),G=M;G.x=u.x,G.y=l.y,G.z=c.z;var W=R;W.x=f.x,W.y=h.y,W.z=O.z;var Y=t.multiplyByScalar(t.add(G,W,S),.5,A),H=0;for(I=0;T>I;I+=i){s.x=r[I]+o.x,s.y=r[I+1]+o.y,s.z=r[I+2]+o.z;var V=t.magnitude(t.subtract(s,Y,S));V>H&&(H=V);var k=t.magnitudeSquared(t.subtract(s,B,S));if(k>U){var K=Math.sqrt(k);q=.5*(q+K),U=q*q;var j=K-q;B.x=(q*B.x+j*s.x)/K,B.y=(q*B.y+j*s.y)/K,B.z=(q*B.z+j*s.z)/K}}return H>q?(t.clone(B,a.center),a.radius=q):(t.clone(Y,a.center),a.radius=H),a},d.fromCornerPoints=function(r,e,o){n(o)||(o=new d);var i=o.center;return t.add(r,e,i),t.multiplyByScalar(i,.5,i),o.radius=t.distance(i,e),o},d.fromEllipsoid=function(r,e){return n(e)||(e=new d),t.clone(t.ZERO,e.center),e.radius=r.maximumRadius,e};var L=new t;d.fromBoundingSpheres=function(r,e){if(n(e)||(e=new d),!n(r)||0===r.length)return e.center=t.clone(t.ZERO,e.center),e.radius=0,e;var o=r.length;if(1===o)return d.clone(r[0],e);if(2===o)return d.union(r[0],r[1],e);for(var i=[],a=0;o>a;a++)i.push(r[a].center);e=d.fromPoints(i,e);var s=e.center,u=e.radius;for(a=0;o>a;a++){var l=r[a];u=Math.max(u,t.distance(s,l.center,L)+l.radius)}return e.radius=u,e},d.clone=function(r,e){return n(r)?n(e)?(e.center=t.clone(r.center,e.center),e.radius=r.radius,e):new d(r.center,r.radius):void 0},d.packedLength=4,d.pack=function(t,r,n){n=e(n,0);var o=t.center;r[n++]=o.x,r[n++]=o.y,r[n++]=o.z,r[n]=t.radius},d.unpack=function(t,r,o){r=e(r,0),n(o)||(o=new d);var i=o.center;return i.x=t[r++],i.y=t[r++],i.z=t[r++],o.radius=t[r],o};var b=new t,P=new t;d.union=function(r,e,o){n(o)||(o=new d);var i=r.center,a=r.radius,s=e.center,u=e.radius,l=t.subtract(s,i,b),c=t.magnitude(l);if(a>=c+u)return r.clone(o),o;if(u>=c+a)return e.clone(o),o;var f=.5*(a+c+u),h=t.multiplyByScalar(l,(-a+f)/c,P);return t.add(h,i,h),t.clone(h,o.center),o.radius=f,o};var F=new t;d.expand=function(r,e,n){n=d.clone(r,n);var o=t.magnitude(t.subtract(e,n.center,F));return o>n.radius&&(n.radius=o),n},d.intersectPlane=function(r,e){var n=r.center,o=r.radius,i=e.normal,a=t.dot(i,n)+e.distance;return-o>a?u.OUTSIDE:o>a?u.INTERSECTING:u.INSIDE};var z=new f(new t,0);d.intersect=function(t,r){o("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var e=f.fromCartesian4(r,z);return d.intersectPlane(t,e)},d.transform=function(t,r,e){return n(e)||(e=new d),e.center=c.multiplyByPoint(r,t.center,e.center),e.radius=c.getMaximumScale(r)*t.radius,e};var D=new t;d.distanceSquaredTo=function(r,e){var n=t.subtract(r.center,e,D);return t.magnitudeSquared(n)-r.radius*r.radius},d.transformWithoutScale=function(t,r,e){return n(e)||(e=new d),e.center=c.multiplyByPoint(r,t.center,e.center),e.radius=t.radius,e};var B=new t;d.computePlaneDistances=function(r,e,o,i){n(i)||(i=new l);var a=t.subtract(r.center,e,B),s=t.multiplyByScalar(o,t.dot(o,a),B),u=t.magnitude(s);return i.start=u-r.radius,i.stop=u+r.radius,i};for(var U=new t,q=new t,G=new t,W=new t,Y=new t,H=new r,V=new Array(8),k=0;8>k;++k)V[k]=new t;var K=new s;return d.projectTo2D=function(r,n,o){n=e(n,K);var i=n.ellipsoid,a=r.center,s=r.radius,u=i.geodeticSurfaceNormal(a,U),l=t.cross(t.UNIT_Z,u,q);t.normalize(l,l);var c=t.cross(u,l,G);t.normalize(c,c),t.multiplyByScalar(u,s,u),t.multiplyByScalar(c,s,c),t.multiplyByScalar(l,s,l);var f=t.negate(c,Y),h=t.negate(l,W),m=V,p=m[0];t.add(u,c,p),t.add(p,l,p),p=m[1],t.add(u,c,p),t.add(p,h,p),p=m[2],t.add(u,f,p),t.add(p,h,p),p=m[3],t.add(u,f,p),t.add(p,l,p),t.negate(u,u),p=m[4],t.add(u,c,p),t.add(p,l,p),p=m[5],t.add(u,c,p),t.add(p,h,p),p=m[6],t.add(u,f,p),t.add(p,h,p),p=m[7],t.add(u,f,p),t.add(p,l,p);for(var g=m.length,y=0;g>y;++y){var E=m[y];t.add(a,E,E);var v=i.cartesianToCartographic(E,H);n.project(v,E)}o=d.fromPoints(m,o),a=o.center;var C=a.x,S=a.y,w=a.z;return a.x=w,a.y=C,a.z=S,o},d.equals=function(r,e){return r===e||n(r)&&n(e)&&t.equals(r.center,e.center)&&r.radius===e.radius},d.prototype.intersectPlane=function(t){return d.intersectPlane(this,t)},d.prototype.intersect=function(t){return d.intersect(this,t)},d.prototype.equals=function(t){return d.equals(this,t)},d.prototype.clone=function(t){return d.clone(this,t)},d}),define("Core/Fullscreen",["./defined","./defineProperties"],function(t,r){"use strict";var e,n={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},o={};return r(o,{element:{get:function(){return o.supportsFullscreen()?document[n.fullscreenElement]:void 0}},changeEventName:{get:function(){return o.supportsFullscreen()?n.fullscreenchange:void 0}},errorEventName:{get:function(){return o.supportsFullscreen()?n.fullscreenerror:void 0}},enabled:{get:function(){return o.supportsFullscreen()?document[n.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return o.supportsFullscreen()?null!==o.element:void 0}}}),o.supportsFullscreen=function(){if(t(e))return e;e=!1;var r=document.body;if("function"==typeof r.requestFullscreen)return n.requestFullscreen="requestFullscreen",n.exitFullscreen="exitFullscreen",n.fullscreenEnabled="fullscreenEnabled",n.fullscreenElement="fullscreenElement",n.fullscreenchange="fullscreenchange",n.fullscreenerror="fullscreenerror",e=!0;for(var o,i=["webkit","moz","o","ms","khtml"],a=0,s=i.length;s>a;++a){var u=i[a];o=u+"RequestFullscreen","function"==typeof r[o]?(n.requestFullscreen=o,e=!0):(o=u+"RequestFullScreen","function"==typeof r[o]&&(n.requestFullscreen=o,e=!0)),o=u+"ExitFullscreen","function"==typeof document[o]?n.exitFullscreen=o:(o=u+"CancelFullScreen","function"==typeof document[o]&&(n.exitFullscreen=o)),o=u+"FullscreenEnabled",t(document[o])?n.fullscreenEnabled=o:(o=u+"FullScreenEnabled",t(document[o])&&(n.fullscreenEnabled=o)),o=u+"FullscreenElement",t(document[o])?n.fullscreenElement=o:(o=u+"FullScreenElement",t(document[o])&&(n.fullscreenElement=o)),o=u+"fullscreenchange",t(document["on"+o])&&("ms"===u&&(o="MSFullscreenChange"),n.fullscreenchange=o),o=u+"fullscreenerror",t(document["on"+o])&&("ms"===u&&(o="MSFullscreenError"),n.fullscreenerror=o)}return e},o.requestFullscreen=function(t){o.supportsFullscreen()&&t[n.requestFullscreen]()},o.exitFullscreen=function(){o.supportsFullscreen()&&document[n.exitFullscreen]()},o}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(t,r,e){"use strict";function n(t){for(var r=t.split("."),e=0,n=r.length;n>e;++e)r[e]=parseInt(r[e],10);return r}function o(){if(!r(g)){g=!1;var t=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(g=!0,y=n(t[1]))}return g}function i(){return o()&&y}function a(){if(!r(E)&&(E=!1,!o()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var t=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(E=!0,v=n(t[1]))}return E}function s(){return a()&&v}function u(){if(!r(C)){C=!1;var t=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==t&&(C=!0,S=n(t[1]),S.isNightly=!!t[2])}return C}function l(){return u()&&S}function c(){if(!r(w)){w=!1;var t;"Microsoft Internet Explorer"===navigator.appName?(t=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(w=!0,M=n(t[1]))):"Netscape"===navigator.appName&&(t=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(w=!0,M=n(t[1])))}return w}function f(){return c()&&M}function h(){if(!r(R)){R=!1;var t=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(R=!0,A=n(t[1]))}return R}function d(){return r(O)||(O=/Windows/i.test(navigator.appVersion)),O}function m(){return h()&&A}function p(){return r(T)||(T=r(window.PointerEvent)&&(!r(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),T}var g,y,E,v,C,S,w,M,R,A,O,T,I={isChrome:o,chromeVersion:i,isSafari:a,safariVersion:s,isWebkit:u,webkitVersion:l,isInternetExplorer:c,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:t(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return I.supportsFullscreen=function(){return e.supportsFullscreen()},I.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},I.supportsWebWorkers=function(){return"undefined"!=typeof Worker},I}),define("Core/Color",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math"],function(t,r,e,n,o,i){"use strict";function a(t,r,e){return 0>e&&(e+=1),e>1&&(e-=1),1>6*e?t+6*(r-t)*e:1>2*e?r:2>3*e?t+6*(r-t)*(2/3-e):t}var s=function(r,e,n,o){this.red=t(r,1),this.green=t(e,1),this.blue=t(n,1),this.alpha=t(o,1)};s.fromCartesian4=function(t,e){return r(e)?(e.red=t.x,e.green=t.y,e.blue=t.z,e.alpha=t.w,e):new s(t.x,t.y,t.z,t.w)},s.fromBytes=function(e,n,o,i,a){return e=s.byteToFloat(t(e,255)),n=s.byteToFloat(t(n,255)),o=s.byteToFloat(t(o,255)),i=s.byteToFloat(t(i,255)),r(a)?(a.red=e,a.green=n,a.blue=o,a.alpha=i,a):new s(e,n,o,i)},s.fromAlpha=function(t,e,n){return r(n)?(n.red=t.red,n.green=t.green,n.blue=t.blue,n.alpha=e,n):new s(t.red,t.green,t.blue,e)};var u,l,c;n.supportsTypedArrays()&&(u=new ArrayBuffer(4),l=new Uint32Array(u),c=new Uint8Array(u)),s.fromRgba=function(t){return l[0]=t,s.fromBytes(c[0],c[1],c[2],c[3])},s.fromHsl=function(r,e,n,o){r=t(r,0)%1,e=t(e,0),n=t(n,0),o=t(o,1);var i=n,u=n,l=n;if(0!==e){var c;c=.5>n?n*(1+e):n+e-n*e;var f=2*n-c;i=a(f,c,r+1/3),u=a(f,c,r),l=a(f,c,r-1/3)}return new s(i,u,l,o)},s.fromRandom=function(e,n){e=t(e,t.EMPTY_OBJECT);var o=e.red;if(!r(o)){var a=t(e.minimumRed,0),u=t(e.maximumRed,1);o=a+i.nextRandomNumber()*(u-a)}var l=e.green;if(!r(l)){var c=t(e.minimumGreen,0),f=t(e.maximumGreen,1);l=c+i.nextRandomNumber()*(f-c)}var h=e.blue;if(!r(h)){var d=t(e.minimumBlue,0),m=t(e.maximumBlue,1);h=d+i.nextRandomNumber()*(m-d)}var p=e.alpha;if(!r(p)){var g=t(e.minimumAlpha,0),y=t(e.maximumAlpha,1);p=g+i.nextRandomNumber()*(y-g)}return r(n)?(n.red=o,n.green=l,n.blue=h,n.alpha=p,n):new s(o,l,h,p)};var f=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i,h=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i,d=/^rgba?\(\s*([0-9.]+%?)\s*,\s*([0-9.]+%?)\s*,\s*([0-9.]+%?)(?:\s*,\s*([0-9.]+))?\s*\)$/i,m=/^hsla?\(\s*([0-9.]+)\s*,\s*([0-9.]+%)\s*,\s*([0-9.]+%)(?:\s*,\s*([0-9.]+))?\s*\)$/i;return s.fromCssColorString=function(e){var n=s[e.toUpperCase()];if(r(n))return s.clone(n);var o=f.exec(e);return null!==o?new s(parseInt(o[1],16)/15,parseInt(o[2],16)/15,parseInt(o[3],16)/15):(o=h.exec(e),null!==o?new s(parseInt(o[1],16)/255,parseInt(o[2],16)/255,parseInt(o[3],16)/255):(o=d.exec(e),null!==o?new s(parseFloat(o[1])/("%"===o[1].substr(-1)?100:255),parseFloat(o[2])/("%"===o[2].substr(-1)?100:255),parseFloat(o[3])/("%"===o[3].substr(-1)?100:255),parseFloat(t(o[4],"1.0"))):(o=m.exec(e),null!==o?s.fromHsl(parseFloat(o[1])/360,parseFloat(o[2])/100,parseFloat(o[3])/100,parseFloat(t(o[4],"1.0"))):void 0)))},s.packedLength=4,s.pack=function(r,e,n){n=t(n,0),e[n++]=r.red,e[n++]=r.green,e[n++]=r.blue,e[n]=r.alpha},s.unpack=function(e,n,o){return n=t(n,0),r(o)||(o=new s),o.red=e[n++],o.green=e[n++],o.blue=e[n++],o.alpha=e[n],o},s.byteToFloat=function(t){return t/255},s.floatToByte=function(t){return 1===t?255:0|256*t},s.clone=function(t,e){return r(t)?r(e)?(e.red=t.red,e.green=t.green,e.blue=t.blue,e.alpha=t.alpha,e):new s(t.red,t.green,t.blue,t.alpha):void 0},s.equals=function(t,e){return t===e||r(t)&&r(e)&&t.red===e.red&&t.green===e.green&&t.blue===e.blue&&t.alpha===e.alpha},s.equalsArray=function(t,r,e){return t.red===r[e]&&t.green===r[e+1]&&t.blue===r[e+2]&&t.alpha===r[e+3]},s.prototype.clone=function(t){return s.clone(this,t)},s.prototype.equals=function(t){return s.equals(this,t)},s.prototype.equalsEpsilon=function(t,e){return this===t||r(t)&&Math.abs(this.red-t.red)<=e&&Math.abs(this.green-t.green)<=e&&Math.abs(this.blue-t.blue)<=e&&Math.abs(this.alpha-t.alpha)<=e},s.prototype.toString=function(){return"("+this.red+", "+this.green+", "+this.blue+", "+this.alpha+")"},s.prototype.toCssColorString=function(){var t=s.floatToByte(this.red),r=s.floatToByte(this.green),e=s.floatToByte(this.blue);return 1===this.alpha?"rgb("+t+","+r+","+e+")":"rgba("+t+","+r+","+e+","+this.alpha+")"},s.prototype.toBytes=function(t){var e=s.floatToByte(this.red),n=s.floatToByte(this.green),o=s.floatToByte(this.blue),i=s.floatToByte(this.alpha);return r(t)?(t[0]=e,t[1]=n,t[2]=o,t[3]=i,t):[e,n,o,i]},s.prototype.toRgba=function(){return c[0]=s.floatToByte(this.red),c[1]=s.floatToByte(this.green),c[2]=s.floatToByte(this.blue),c[3]=s.floatToByte(this.alpha),l[0]},s.prototype.brighten=function(t,r){return t=1-t,r.red=1-(1-this.red)*t,r.green=1-(1-this.green)*t,r.blue=1-(1-this.blue)*t,r.alpha=this.alpha,r},s.prototype.darken=function(t,r){return t=1-t,r.red=this.red*t,r.green=this.green*t,r.blue=this.blue*t,r.alpha=this.alpha,r},s.prototype.withAlpha=function(t,r){return s.fromAlpha(this,t,r)},s.ALICEBLUE=o(s.fromCssColorString("#F0F8FF")),s.ANTIQUEWHITE=o(s.fromCssColorString("#FAEBD7")),s.AQUA=o(s.fromCssColorString("#00FFFF")),s.AQUAMARINE=o(s.fromCssColorString("#7FFFD4")),s.AZURE=o(s.fromCssColorString("#F0FFFF")),s.BEIGE=o(s.fromCssColorString("#F5F5DC")),s.BISQUE=o(s.fromCssColorString("#FFE4C4")),s.BLACK=o(s.fromCssColorString("#000000")),s.BLANCHEDALMOND=o(s.fromCssColorString("#FFEBCD")),s.BLUE=o(s.fromCssColorString("#0000FF")),s.BLUEVIOLET=o(s.fromCssColorString("#8A2BE2")),s.BROWN=o(s.fromCssColorString("#A52A2A")),s.BURLYWOOD=o(s.fromCssColorString("#DEB887")),s.CADETBLUE=o(s.fromCssColorString("#5F9EA0")),s.CHARTREUSE=o(s.fromCssColorString("#7FFF00")),s.CHOCOLATE=o(s.fromCssColorString("#D2691E")),s.CORAL=o(s.fromCssColorString("#FF7F50")),s.CORNFLOWERBLUE=o(s.fromCssColorString("#6495ED")),s.CORNSILK=o(s.fromCssColorString("#FFF8DC")),s.CRIMSON=o(s.fromCssColorString("#DC143C")),s.CYAN=o(s.fromCssColorString("#00FFFF")),s.DARKBLUE=o(s.fromCssColorString("#00008B")),s.DARKCYAN=o(s.fromCssColorString("#008B8B")),s.DARKGOLDENROD=o(s.fromCssColorString("#B8860B")),s.DARKGRAY=o(s.fromCssColorString("#A9A9A9")),s.DARKGREEN=o(s.fromCssColorString("#006400")),s.DARKGREY=s.DARKGRAY,s.DARKKHAKI=o(s.fromCssColorString("#BDB76B")),s.DARKMAGENTA=o(s.fromCssColorString("#8B008B")),s.DARKOLIVEGREEN=o(s.fromCssColorString("#556B2F")),s.DARKORANGE=o(s.fromCssColorString("#FF8C00")),s.DARKORCHID=o(s.fromCssColorString("#9932CC")),s.DARKRED=o(s.fromCssColorString("#8B0000")),s.DARKSALMON=o(s.fromCssColorString("#E9967A")),s.DARKSEAGREEN=o(s.fromCssColorString("#8FBC8F")),s.DARKSLATEBLUE=o(s.fromCssColorString("#483D8B")),s.DARKSLATEGRAY=o(s.fromCssColorString("#2F4F4F")),s.DARKSLATEGREY=s.DARKSLATEGRAY,s.DARKTURQUOISE=o(s.fromCssColorString("#00CED1")),s.DARKVIOLET=o(s.fromCssColorString("#9400D3")),s.DEEPPINK=o(s.fromCssColorString("#FF1493")),s.DEEPSKYBLUE=o(s.fromCssColorString("#00BFFF")),s.DIMGRAY=o(s.fromCssColorString("#696969")),s.DIMGREY=s.DIMGRAY,s.DODGERBLUE=o(s.fromCssColorString("#1E90FF")),s.FIREBRICK=o(s.fromCssColorString("#B22222")),s.FLORALWHITE=o(s.fromCssColorString("#FFFAF0")),s.FORESTGREEN=o(s.fromCssColorString("#228B22")),s.FUSCHIA=o(s.fromCssColorString("#FF00FF")),s.GAINSBORO=o(s.fromCssColorString("#DCDCDC")),s.GHOSTWHITE=o(s.fromCssColorString("#F8F8FF")),s.GOLD=o(s.fromCssColorString("#FFD700")),s.GOLDENROD=o(s.fromCssColorString("#DAA520")),s.GRAY=o(s.fromCssColorString("#808080")),s.GREEN=o(s.fromCssColorString("#008000")),s.GREENYELLOW=o(s.fromCssColorString("#ADFF2F")),s.GREY=s.GRAY,s.HONEYDEW=o(s.fromCssColorString("#F0FFF0")),s.HOTPINK=o(s.fromCssColorString("#FF69B4")),s.INDIANRED=o(s.fromCssColorString("#CD5C5C")),s.INDIGO=o(s.fromCssColorString("#4B0082")),s.IVORY=o(s.fromCssColorString("#FFFFF0")),s.KHAKI=o(s.fromCssColorString("#F0E68C")),s.LAVENDER=o(s.fromCssColorString("#E6E6FA")),s.LAVENDAR_BLUSH=o(s.fromCssColorString("#FFF0F5")),s.LAWNGREEN=o(s.fromCssColorString("#7CFC00")),s.LEMONCHIFFON=o(s.fromCssColorString("#FFFACD")),s.LIGHTBLUE=o(s.fromCssColorString("#ADD8E6")),s.LIGHTCORAL=o(s.fromCssColorString("#F08080")),s.LIGHTCYAN=o(s.fromCssColorString("#E0FFFF")),s.LIGHTGOLDENRODYELLOW=o(s.fromCssColorString("#FAFAD2")),s.LIGHTGRAY=o(s.fromCssColorString("#D3D3D3")),s.LIGHTGREEN=o(s.fromCssColorString("#90EE90")),s.LIGHTGREY=s.LIGHTGRAY,s.LIGHTPINK=o(s.fromCssColorString("#FFB6C1")),s.LIGHTSEAGREEN=o(s.fromCssColorString("#20B2AA")),s.LIGHTSKYBLUE=o(s.fromCssColorString("#87CEFA")),s.LIGHTSLATEGRAY=o(s.fromCssColorString("#778899")),s.LIGHTSLATEGREY=s.LIGHTSLATEGRAY,s.LIGHTSTEELBLUE=o(s.fromCssColorString("#B0C4DE")),s.LIGHTYELLOW=o(s.fromCssColorString("#FFFFE0")),s.LIME=o(s.fromCssColorString("#00FF00")),s.LIMEGREEN=o(s.fromCssColorString("#32CD32")),s.LINEN=o(s.fromCssColorString("#FAF0E6")),s.MAGENTA=o(s.fromCssColorString("#FF00FF")),s.MAROON=o(s.fromCssColorString("#800000")),s.MEDIUMAQUAMARINE=o(s.fromCssColorString("#66CDAA")),s.MEDIUMBLUE=o(s.fromCssColorString("#0000CD")),s.MEDIUMORCHID=o(s.fromCssColorString("#BA55D3")),s.MEDIUMPURPLE=o(s.fromCssColorString("#9370DB")),s.MEDIUMSEAGREEN=o(s.fromCssColorString("#3CB371")),s.MEDIUMSLATEBLUE=o(s.fromCssColorString("#7B68EE")),s.MEDIUMSPRINGGREEN=o(s.fromCssColorString("#00FA9A")),s.MEDIUMTURQUOISE=o(s.fromCssColorString("#48D1CC")),s.MEDIUMVIOLETRED=o(s.fromCssColorString("#C71585")),s.MIDNIGHTBLUE=o(s.fromCssColorString("#191970")),s.MINTCREAM=o(s.fromCssColorString("#F5FFFA")),s.MISTYROSE=o(s.fromCssColorString("#FFE4E1")),s.MOCCASIN=o(s.fromCssColorString("#FFE4B5")),s.NAVAJOWHITE=o(s.fromCssColorString("#FFDEAD")),s.NAVY=o(s.fromCssColorString("#000080")),s.OLDLACE=o(s.fromCssColorString("#FDF5E6")),s.OLIVE=o(s.fromCssColorString("#808000")),s.OLIVEDRAB=o(s.fromCssColorString("#6B8E23")),s.ORANGE=o(s.fromCssColorString("#FFA500")),s.ORANGERED=o(s.fromCssColorString("#FF4500")),s.ORCHID=o(s.fromCssColorString("#DA70D6")),s.PALEGOLDENROD=o(s.fromCssColorString("#EEE8AA")),s.PALEGREEN=o(s.fromCssColorString("#98FB98")),s.PALETURQUOISE=o(s.fromCssColorString("#AFEEEE")),s.PALEVIOLETRED=o(s.fromCssColorString("#DB7093")),s.PAPAYAWHIP=o(s.fromCssColorString("#FFEFD5")),s.PEACHPUFF=o(s.fromCssColorString("#FFDAB9")),s.PERU=o(s.fromCssColorString("#CD853F")),s.PINK=o(s.fromCssColorString("#FFC0CB")),s.PLUM=o(s.fromCssColorString("#DDA0DD")),s.POWDERBLUE=o(s.fromCssColorString("#B0E0E6")),s.PURPLE=o(s.fromCssColorString("#800080")),s.RED=o(s.fromCssColorString("#FF0000")),s.ROSYBROWN=o(s.fromCssColorString("#BC8F8F")),s.ROYALBLUE=o(s.fromCssColorString("#4169E1")),s.SADDLEBROWN=o(s.fromCssColorString("#8B4513")),s.SALMON=o(s.fromCssColorString("#FA8072")),s.SANDYBROWN=o(s.fromCssColorString("#F4A460")),s.SEAGREEN=o(s.fromCssColorString("#2E8B57")),s.SEASHELL=o(s.fromCssColorString("#FFF5EE")),s.SIENNA=o(s.fromCssColorString("#A0522D")),s.SILVER=o(s.fromCssColorString("#C0C0C0")),s.SKYBLUE=o(s.fromCssColorString("#87CEEB")),s.SLATEBLUE=o(s.fromCssColorString("#6A5ACD")),s.SLATEGRAY=o(s.fromCssColorString("#708090")),s.SLATEGREY=s.SLATEGRAY,s.SNOW=o(s.fromCssColorString("#FFFAFA")),s.SPRINGGREEN=o(s.fromCssColorString("#00FF7F")),s.STEELBLUE=o(s.fromCssColorString("#4682B4")),s.TAN=o(s.fromCssColorString("#D2B48C")),s.TEAL=o(s.fromCssColorString("#008080")),s.THISTLE=o(s.fromCssColorString("#D8BFD8")),s.TOMATO=o(s.fromCssColorString("#FF6347")),s.TURQUOISE=o(s.fromCssColorString("#40E0D0")),s.VIOLET=o(s.fromCssColorString("#EE82EE")),s.WHEAT=o(s.fromCssColorString("#F5DEB3")),s.WHITE=o(s.fromCssColorString("#FFFFFF")),s.WHITESMOKE=o(s.fromCssColorString("#F5F5F5")),s.YELLOW=o(s.fromCssColorString("#FFFF00")),s.YELLOWGREEN=o(s.fromCssColorString("#9ACD32")),s.TRANSPARENT=o(new s(0,0,0,0)),s +}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(t,r,e,n,o){"use strict";if(!n.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(t){switch(t){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new e("componentDatatype is not a valid value.")}},i.fromTypedArray=function(t){return t instanceof Int8Array?i.BYTE:t instanceof Uint8Array?i.UNSIGNED_BYTE:t instanceof Int16Array?i.SHORT:t instanceof Uint16Array?i.UNSIGNED_SHORT:t instanceof Float32Array?i.FLOAT:t instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(t){return r(t)&&(t===i.BYTE||t===i.UNSIGNED_BYTE||t===i.SHORT||t===i.UNSIGNED_SHORT||t===i.FLOAT||t===i.DOUBLE)},i.createTypedArray=function(t,r){switch(t){case i.BYTE:return new Int8Array(r);case i.UNSIGNED_BYTE:return new Uint8Array(r);case i.SHORT:return new Int16Array(r);case i.UNSIGNED_SHORT:return new Uint16Array(r);case i.FLOAT:return new Float32Array(r);case i.DOUBLE:return new Float64Array(r);default:throw new e("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(r,n,o,a){switch(o=t(o,0),a=t(a,(n.byteLength-o)/i.getSizeInBytes(r)),r){case i.BYTE:return new Int8Array(n,o,a);case i.UNSIGNED_BYTE:return new Uint8Array(n,o,a);case i.SHORT:return new Int16Array(n,o,a);case i.UNSIGNED_SHORT:return new Uint16Array(n,o,a);case i.FLOAT:return new Float32Array(n,o,a);case i.DOUBLE:return new Float64Array(n,o,a);default:throw new e("componentDatatype is not a valid value.")}},o(i)}),define("Core/GeometryType",["./freezeObject"],function(t){"use strict";var r={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return t(r)}),define("Core/PrimitiveType",["./freezeObject"],function(t){"use strict";var r={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(t){return t===r.POINTS||t===r.LINES||t===r.LINE_LOOP||t===r.LINE_STRIP||t===r.TRIANGLES||t===r.TRIANGLE_STRIP||t===r.TRIANGLE_FAN}};return t(r)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(t,r,e,n,o){"use strict";var i=function(r){r=t(r,t.EMPTY_OBJECT),this.attributes=r.attributes,this.indices=r.indices,this.primitiveType=t(r.primitiveType,o.TRIANGLES),this.boundingSphere=r.boundingSphere,this.geometryType=t(r.geometryType,n.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(t){var n=-1;for(var o in t.attributes)if(t.attributes.hasOwnProperty(o)&&r(t.attributes[o])&&r(t.attributes[o].values)){var i=t.attributes[o],a=i.values.length/i.componentsPerAttribute;if(n!==a&&-1!==n)throw new e("All attribute lists must have the same number of attributes.");n=a}return n},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(t){"use strict";var r=function(r){r=t(r,t.EMPTY_OBJECT),this.componentDatatype=r.componentDatatype,this.componentsPerAttribute=r.componentsPerAttribute,this.normalize=t(r.normalize,!1),this.values=r.values};return r}),define("Core/GeometryAttributes",["./defaultValue"],function(t){"use strict";var r=function(r){r=t(r,t.EMPTY_OBJECT),this.position=r.position,this.normal=r.normal,this.st=r.st,this.binormal=r.binormal,this.tangent=r.tangent,this.color=r.color};return r}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(t,r,e,n){"use strict";var o={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return o.getSizeInBytes=function(t){switch(t){case o.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case o.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case o.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},o.validate=function(r){return t(r)&&(r===o.UNSIGNED_BYTE||r===o.UNSIGNED_SHORT||r===o.UNSIGNED_INT)},o.createTypedArray=function(t,r){return t>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(r):new Uint16Array(r)},o.createTypedArrayFromArrayBuffer=function(t,r,e,o){return t>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(r,e,o):new Uint16Array(r,e,o)},e(o)}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(t,r,e,n,o,i,a,s){"use strict";function u(t){var r=t._uSquared,e=t._ellipsoid.maximumRadius,n=t._ellipsoid.minimumRadius,o=(e-n)/e,i=Math.cos(t._startHeading),a=Math.sin(t._startHeading),s=(1-o)*Math.tan(t._start.latitude),u=1/Math.sqrt(1+s*s),l=u*s,c=Math.atan2(s,i),f=u*a,h=f*f,d=1-h,m=Math.sqrt(d),p=r/4,g=p*p,y=g*p,E=g*g,v=1+p-3*g/4+5*y/4-175*E/64,C=1-p+15*g/8-35*y/8,S=1-3*p+35*g/4,w=1-5*p,M=v*c-C*Math.sin(2*c)*p/2-S*Math.sin(4*c)*g/16-w*Math.sin(6*c)*y/48-5*Math.sin(8*c)*E/512,R=t._constants;R.a=e,R.b=n,R.f=o,R.cosineHeading=i,R.sineHeading=a,R.tanU=s,R.cosineU=u,R.sineU=l,R.sigma=c,R.sineAlpha=f,R.sineSquaredAlpha=h,R.cosineSquaredAlpha=d,R.cosineAlpha=m,R.u2Over4=p,R.u4Over16=g,R.u6Over64=y,R.u8Over256=E,R.a0=v,R.a1=C,R.a2=S,R.a3=w,R.distanceRatio=M}function l(t,r){return t*r*(4+t*(4-3*r))/16}function c(t,r,e,n,o,i,a){var s=l(t,e);return(1-s)*t*r*(n+s*o*(a+s*i*(2*a*a-1)))}function f(t,r,e,n,o,i,a){var u,l,f,h,d,m=(r-e)/r,p=i-n,g=Math.atan((1-m)*Math.tan(o)),y=Math.atan((1-m)*Math.tan(a)),E=Math.cos(g),v=Math.sin(g),C=Math.cos(y),S=Math.sin(y),w=E*C,M=E*S,R=v*S,A=v*C,O=p,T=s.TWO_PI,I=Math.cos(O),N=Math.sin(O);do{I=Math.cos(O),N=Math.sin(O);var x=M-A*I;f=Math.sqrt(C*C*N*N+x*x),l=R+w*I,u=Math.atan2(f,l);var _;0===f?(_=0,h=1):(_=w*N/f,h=1-_*_),T=O,d=l-2*R/h,isNaN(d)&&(d=0),O=p+c(m,_,h,u,f,l,d)}while(Math.abs(O-T)>s.EPSILON12);var L=h*(r*r-e*e)/(e*e),b=1+L*(4096+L*(L*(320-175*L)-768))/16384,P=L*(256+L*(L*(74-47*L)-128))/1024,F=d*d,z=P*f*(d+P*(l*(2*F-1)-P*d*(4*f*f-3)*(4*F-3)/6)/4),D=e*b*(u-z),B=Math.atan2(C*N,M-A*I),U=Math.atan2(E*N,M*I-A);t._distance=D,t._startHeading=B,t._endHeading=U,t._uSquared=L}function h(e,n,o,i){t.normalize(i.cartographicToCartesian(n,m),d),t.normalize(i.cartographicToCartesian(o,m),m),f(e,i.maximumRadius,i.minimumRadius,n.longitude,n.latitude,o.longitude,o.latitude),e._start=r.clone(n,e._start),e._end=r.clone(o,e._end),e._start.height=0,e._end.height=0,u(e)}var d=new t,m=new t,p=function(t,o,i){var s=e(i,a.WGS84);this._ellipsoid=s,this._start=new r,this._end=new r,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,n(t)&&n(o)&&h(this,t,o,s)};return o(p.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),p.prototype.setEndPoints=function(t,r){h(this,t,r,this._ellipsoid)},p.prototype.interpolateUsingFraction=function(t,r){return this.interpolateUsingSurfaceDistance(this._distance*t,r)},p.prototype.interpolateUsingSurfaceDistance=function(t,e){var o=this._constants,i=o.distanceRatio+t/o.b,a=Math.cos(2*i),s=Math.cos(4*i),u=Math.cos(6*i),l=Math.sin(2*i),f=Math.sin(4*i),h=Math.sin(6*i),d=Math.sin(8*i),m=i*i,p=i*m,g=o.u8Over256,y=o.u2Over4,E=o.u6Over64,v=o.u4Over16,C=2*p*g*a/3+i*(1-y+7*v/4-15*E/4+579*g/64-(v-15*E/4+187*g/16)*a-(5*E/4-115*g/16)*s-29*g*u/16)+(y/2-v+71*E/32-85*g/16)*l+(5*v/16-5*E/4+383*g/96)*f-m*((E-11*g/2)*l+5*g*f/2)+(29*E/96-29*g/16)*h+539*g*d/1536,S=Math.asin(Math.sin(C)*o.cosineAlpha),w=Math.atan(o.a/o.b*Math.tan(S));C-=o.sigma;var M=Math.cos(2*o.sigma+C),R=Math.sin(C),A=Math.cos(C),O=o.cosineU*A,T=o.sineU*R,I=Math.atan2(R*o.sineHeading,O-T*o.cosineHeading),N=I-c(o.f,o.sineAlpha,o.cosineSquaredAlpha,C,R,A,M);return n(e)?(e.longitude=this._start.longitude+N,e.latitude=w,e.height=0,e):new r(this._start.longitude+N,w,0)},p}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(t,r){"use strict";function e(t,e,n){var o=t+e;return r.sign(t)!==r.sign(e)&&Math.abs(o/Math.max(Math.abs(t),Math.abs(e)))<n?0:o}var n={};return n.computeDiscriminant=function(t,r,e){var n=r*r-4*t*e;return n},n.computeRealRoots=function(t,n,o){var i;if(0===t)return 0===n?[]:[-o/n];if(0===n){if(0===o)return[0,0];var a=Math.abs(o),s=Math.abs(t);if(s>a&&a/s<r.EPSILON14)return[0,0];if(a>s&&s/a<r.EPSILON14)return[];if(i=-o/t,0>i)return[];var u=Math.sqrt(i);return[-u,u]}if(0===o)return i=-n/t,0>i?[i,0]:[0,i];var l=n*n,c=4*t*o,f=e(l,-c,r.EPSILON14);if(0>f)return[];var h=-.5*e(n,r.sign(n)*Math.sqrt(f),r.EPSILON14);return n>0?[h/t,o/h]:[o/h,h/t]},n}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(t,r){"use strict";function e(t,r,e,n){var o,i,a=t,s=r/3,u=e/3,l=n,c=a*u,f=s*l,h=s*s,d=u*u,m=a*u-h,p=a*l-s*u,g=s*l-d,y=4*m*g-p*p;if(0>y){var E,v,C;h*f>=c*d?(E=a,v=m,C=-2*s*m+a*p):(E=l,v=g,C=-l*p+2*u*g);var S=0>C?-1:1,w=-S*Math.abs(E)*Math.sqrt(-y);i=-C+w;var M=i/2,R=0>M?-Math.pow(-M,1/3):Math.pow(M,1/3),A=i===w?-R:-v/R;return o=0>=v?R+A:-C/(R*R+A*A+v),h*f>=c*d?[(o-s)/a]:[-l/(o+u)]}var O=m,T=-2*s*m+a*p,I=g,N=-l*p+2*u*g,x=Math.sqrt(y),_=Math.sqrt(3)/2,L=Math.abs(Math.atan2(a*x,-T)/3);o=2*Math.sqrt(-O);var b=Math.cos(L);i=o*b;var P=o*(-b/2-_*Math.sin(L)),F=i+P>2*s?i-s:P-s,z=a,D=F/z;L=Math.abs(Math.atan2(l*x,-N)/3),o=2*Math.sqrt(-I),b=Math.cos(L),i=o*b,P=o*(-b/2-_*Math.sin(L));var B=-l,U=2*u>i+P?i+u:P+u,q=B/U,G=z*U,W=-F*U-z*B,Y=F*B,H=(u*W-s*Y)/(-s*W+u*G);return H>=D?q>=D?q>=H?[D,H,q]:[D,q,H]:[q,D,H]:q>=D?[H,D,q]:q>=H?[H,q,D]:[q,H,D]}var n={};return n.computeDiscriminant=function(t,r,e,n){var o=t*t,i=r*r,a=e*e,s=n*n,u=18*t*r*e*n+i*a-27*o*s-4*(t*a*e+i*r*n);return u},n.computeRealRoots=function(t,n,o,i){var a,s;if(0===t)return r.computeRealRoots(n,o,i);if(0===n){if(0===o){if(0===i)return[0,0,0];s=-i/t;var u=0>s?-Math.pow(-s,1/3):Math.pow(s,1/3);return[u,u,u]}return 0===i?(a=r.computeRealRoots(t,0,o),0===a.Length?[0]:[a[0],0,a[1]]):e(t,0,o,i)}return 0===o?0===i?(s=-n/t,0>s?[s,0,0]:[0,0,s]):e(t,n,0,i):0===i?(a=r.computeRealRoots(t,n,o),0===a.length?[0]:a[1]<=0?[a[0],a[1],0]:a[0]>=0?[0,a[0],a[1]]:[a[0],0,a[1]]):e(t,n,o,i)},n}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(t,r,e,n){"use strict";function o(r,o,i,a){var s=r*r,u=o-3*s/8,l=i-o*r/2+s*r/8,c=a-i*r/4+o*s/16-3*s*s/256,f=t.computeRealRoots(1,2*u,u*u-4*c,-l*l);if(f.length>0){var h=-r/4,d=f[f.length-1];if(Math.abs(d)<e.EPSILON14){var m=n.computeRealRoots(1,u,c);if(2===m.length){var p,g=m[0],y=m[1];if(g>=0&&y>=0){var E=Math.sqrt(g),v=Math.sqrt(y);return[h-v,h-E,h+E,h+v]}if(g>=0&&0>y)return p=Math.sqrt(g),[h-p,h+p];if(0>g&&y>=0)return p=Math.sqrt(y),[h-p,h+p]}return[]}if(d>0){var C=Math.sqrt(d),S=(u+d-l/C)/2,w=(u+d+l/C)/2,M=n.computeRealRoots(1,C,S),R=n.computeRealRoots(1,-C,w);return 0!==M.length?(M[0]+=h,M[1]+=h,0!==R.length?(R[0]+=h,R[1]+=h,M[1]<=R[0]?[M[0],M[1],R[0],R[1]]:R[1]<=M[0]?[R[0],R[1],M[0],M[1]]:M[0]>=R[0]&&M[1]<=R[1]?[R[0],M[0],M[1],R[1]]:R[0]>=M[0]&&R[1]<=M[1]?[M[0],R[0],R[1],M[1]]:M[0]>R[0]&&M[0]<R[1]?[R[0],M[0],R[1],M[1]]:[M[0],R[0],M[1],R[1]]):M):0!==R.length?(R[0]+=h,R[1]+=h,R):[]}}return[]}function i(r,o,i,a){var s=i*i,u=o*o,l=r*r,c=-2*o,f=i*r+u-4*a,h=l*a-i*o*r+s,d=t.computeRealRoots(1,c,f,h);if(d.length>0){var m,p,g=d[0],y=o-g,E=y*y,v=r/2,C=y/2,S=E-4*a,w=E+4*Math.abs(a),M=l-4*g,R=l+4*Math.abs(g);if(0>g||M*w>S*R){var A=Math.sqrt(M);m=A/2,p=0===A?0:(r*C-i)/A}else{var O=Math.sqrt(S);m=0===O?0:(r*C-i)/O,p=O/2}var T,I;0===v&&0===m?(T=0,I=0):e.sign(v)===e.sign(m)?(T=v+m,I=g/T):(I=v-m,T=g/I);var N,x;0===C&&0===p?(N=0,x=0):e.sign(C)===e.sign(p)?(N=C+p,x=a/N):(x=C-p,N=a/x);var _=n.computeRealRoots(1,T,N),L=n.computeRealRoots(1,I,x);if(0!==_.length)return 0!==L.length?_[1]<=L[0]?[_[0],_[1],L[0],L[1]]:L[1]<=_[0]?[L[0],L[1],_[0],_[1]]:_[0]>=L[0]&&_[1]<=L[1]?[L[0],_[0],_[1],L[1]]:L[0]>=_[0]&&L[1]<=_[1]?[_[0],L[0],L[1],_[1]]:_[0]>L[0]&&_[0]<L[1]?[L[0],_[0],L[1],_[1]]:[_[0],L[0],_[1],L[1]]:_;if(0!==L.length)return L}return[]}var a={};return a.computeDiscriminant=function(t,r,e,n,o){var i=t*t,a=i*t,s=r*r,u=s*r,l=e*e,c=l*e,f=n*n,h=f*n,d=o*o,m=d*o,p=s*l*f-4*u*h-4*t*c*f+18*t*r*e*h-27*i*f*f+256*a*m+o*(18*u*e*n-4*s*c+16*t*l*l-80*t*r*l*n-6*t*s*f+144*i*e*f)+d*(144*t*s*e-27*s*s-128*i*l-192*i*r*n);return p},a.computeRealRoots=function(r,n,a,s,u){if(Math.abs(r)<e.EPSILON15)return t.computeRealRoots(n,a,s,u);var l=n/r,c=a/r,f=s/r,h=u/r,d=0>l?1:0;switch(d+=0>c?d+1:d,d+=0>f?d+1:d,d+=0>h?d+1:d){case 0:return o(l,c,f,h);case 1:return i(l,c,f,h);case 2:return i(l,c,f,h);case 3:return o(l,c,f,h);case 4:return o(l,c,f,h);case 5:return i(l,c,f,h);case 6:return o(l,c,f,h);case 7:return o(l,c,f,h);case 8:return i(l,c,f,h);case 9:return o(l,c,f,h);case 10:return o(l,c,f,h);case 11:return i(l,c,f,h);case 12:return o(l,c,f,h);case 13:return o(l,c,f,h);case 14:return o(l,c,f,h);case 15:return o(l,c,f,h);default:return void 0}},a}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(t,r,e){"use strict";var n=function(e,n){n=t.clone(r(n,t.ZERO)),t.equals(n,t.ZERO)||t.normalize(n,n),this.origin=t.clone(r(e,t.ZERO)),this.direction=n};return n.getPoint=function(r,n,o){return e(o)||(o=new t),o=t.multiplyByScalar(r.direction,n,o),t.add(r.origin,o,o)},n}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(t,r,e,n,o,i,a,s,u,l){"use strict";function c(r,n,o,a,s){s=e(s,!1);var u,l,c,f,h,d=r.origin,m=r.direction,p=t.subtract(o,n,g),S=t.subtract(a,n,y),w=t.cross(m,S,E),M=t.dot(p,w);if(s){if(M<i.EPSILON6)return void 0;if(u=t.subtract(d,n,v),c=t.dot(u,w),0>c||c>M)return void 0;if(l=t.cross(u,p,C),f=t.dot(m,l),0>f||c+f>M)return void 0;h=t.dot(S,l)/M}else{if(Math.abs(M)<i.EPSILON6)return void 0;var R=1/M;if(u=t.subtract(d,n,v),c=t.dot(u,w)*R,0>c||c>1)return void 0;if(l=t.cross(u,p,C),f=t.dot(m,l)*R,0>f||c+f>1)return void 0;h=t.dot(S,l)*R}return h}function f(t,r,e,n){var o=r*r-4*t*e;if(0>o)return void 0;if(o>0){var i=1/(2*t),a=Math.sqrt(o),s=(-r+a)*i,u=(-r-a)*i;return u>s?(n.root0=s,n.root1=u):(n.root0=u,n.root1=s),n}var l=-r/(2*t);return 0===l?void 0:(n.root0=n.root1=l,n)}function h(r,e,o){n(o)||(o={});var i=r.origin,a=r.direction,s=e.center,u=e.radius*e.radius,l=t.subtract(i,s,E),c=t.dot(a,a),h=2*t.dot(a,l),d=t.magnitudeSquared(l)-u,m=f(c,h,d,w);return n(m)?(o.start=m.root0,o.stop=m.root1,o):void 0}function d(t,r,e){var n=t+r;return i.sign(t)!==i.sign(r)&&Math.abs(n/Math.max(Math.abs(t),Math.abs(r)))<e?0:n}function m(r,e,n,o,l){var c,f=o*o,h=l*l,m=(r[a.COLUMN1ROW1]-r[a.COLUMN2ROW2])*h,p=l*(o*d(r[a.COLUMN1ROW0],r[a.COLUMN0ROW1],i.EPSILON15)+e.y),g=r[a.COLUMN0ROW0]*f+r[a.COLUMN2ROW2]*h+o*e.x+n,y=h*d(r[a.COLUMN2ROW1],r[a.COLUMN1ROW2],i.EPSILON15),E=l*(o*d(r[a.COLUMN2ROW0],r[a.COLUMN0ROW2])+e.z),v=[];if(0===E&&0===y){if(c=s.computeRealRoots(m,p,g),0===c.length)return v;var C=c[0],S=Math.sqrt(Math.max(1-C*C,0));if(v.push(new t(o,l*C,l*-S)),v.push(new t(o,l*C,l*S)),2===c.length){var w=c[1],M=Math.sqrt(Math.max(1-w*w,0));v.push(new t(o,l*w,l*-M)),v.push(new t(o,l*w,l*M))}return v}var R=E*E,A=y*y,O=m*m,T=E*y,I=O+A,N=2*(p*m+T),x=2*g*m+p*p-A+R,_=2*(g*p-T),L=g*g-R;if(0===I&&0===N&&0===x&&0===_)return v;c=u.computeRealRoots(I,N,x,_,L);var b=c.length;if(0===b)return v;for(var P=0;b>P;++P){var F,z=c[P],D=z*z,B=Math.max(1-D,0),U=Math.sqrt(B);F=i.sign(m)===i.sign(g)?d(m*D+g,p*z,i.EPSILON12):i.sign(g)===i.sign(p*z)?d(m*D,p*z+g,i.EPSILON12):d(m*D+p*z,g,i.EPSILON12);var q=d(y*z,E,i.EPSILON15),G=F*q;0>G?v.push(new t(o,l*z,l*U)):G>0?v.push(new t(o,l*z,l*-U)):0!==U?(v.push(new t(o,l*z,l*-U)),v.push(new t(o,l*z,l*U)),++P):v.push(new t(o,l*z,l*U))}return v}var p={};p.rayPlane=function(r,e,o){n(o)||(o=new t);var a=r.origin,s=r.direction,u=e.normal,l=t.dot(u,s);if(Math.abs(l)<i.EPSILON15)return void 0;var c=(-e.distance-t.dot(u,a))/l;return 0>c?void 0:(o=t.multiplyByScalar(s,c,o),t.add(a,o,o))};var g=new t,y=new t,E=new t,v=new t,C=new t;p.rayTriangle=function(r,e,o,i,a,s){var u=c(r,e,o,i,a);return!n(u)||0>u?void 0:(n(s)||(s=new t),t.multiplyByScalar(r.direction,u,s),t.add(r.origin,s,s))};var S=new l;p.lineSegmentTriangle=function(r,e,o,i,a,s,u){var l=S;t.clone(r,l.origin),t.subtract(e,r,l.direction),t.normalize(l.direction,l.direction);var f=c(l,o,i,a,s);return!n(f)||0>f||f>t.distance(r,e)?void 0:(n(u)||(u=new t),t.multiplyByScalar(l.direction,f,u),t.add(l.origin,u,u))};var w={root0:0,root1:0};p.raySphere=function(t,r,e){return e=h(t,r,e),!n(e)||e.stop<0?void 0:(e.start=Math.max(e.start,0),e)};var M=new l;p.lineSegmentSphere=function(r,e,o,i){var a=M;t.clone(r,a.origin);var s=t.subtract(e,r,a.direction),u=t.magnitude(s);return t.normalize(s,s),i=h(a,o,i),!n(i)||i.stop<0||i.start>u?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,u),i)};var R=new t,A=new t;p.rayEllipsoid=function(r,e){var n,o,i,a,s,u=e.oneOverRadii,l=t.multiplyComponents(u,r.origin,R),c=t.multiplyComponents(u,r.direction,A),f=t.magnitudeSquared(l),h=t.dot(l,c);if(f>1){if(h>=0)return void 0;var d=h*h;if(n=f-1,o=t.magnitudeSquared(c),i=o*n,i>d)return void 0;if(d>i){a=h*h-i,s=-h+Math.sqrt(a);var m=s/o,p=n/s;return p>m?{start:m,stop:p}:{start:p,stop:m}}var g=Math.sqrt(n/o);return{start:g,stop:g}}return 1>f?(n=f-1,o=t.magnitudeSquared(c),i=o*n,a=h*h-i,s=-h+Math.sqrt(a),{start:0,stop:s/o}):0>h?(o=t.magnitudeSquared(c),{start:0,stop:-h/o}):void 0};var O=new t,T=new t,I=new t,N=new t,x=new t,_=new a,L=new a,b=new a,P=new a,F=new a,z=new a,D=new a,B=new t,U=new t,q=new r;p.grazingAltitudeLocation=function(r,e){var o=r.origin,s=r.direction,u=e.geodeticSurfaceNormal(o,O);if(t.dot(s,u)>=0)return o;var l=n(this.rayEllipsoid(r,e)),c=e.transformPositionToScaledSpace(s,O),f=t.normalize(c,c),h=t.mostOrthogonalAxis(c,N),d=t.normalize(t.cross(h,f,T),T),p=t.normalize(t.cross(f,d,I),I),g=_;g[0]=f.x,g[1]=f.y,g[2]=f.z,g[3]=d.x,g[4]=d.y,g[5]=d.z,g[6]=p.x,g[7]=p.y,g[8]=p.z;var y=a.transpose(g,L),E=a.fromScale(e.radii,b),v=a.fromScale(e.oneOverRadii,P),C=F;C[0]=0,C[1]=-s.z,C[2]=s.y,C[3]=s.z,C[4]=0,C[5]=-s.x,C[6]=-s.y,C[7]=s.x,C[8]=0;var S,w,M=a.multiply(a.multiply(y,v,z),C,z),R=a.multiply(a.multiply(M,E,D),g,D),A=a.multiplyByVector(M,o,x),G=m(R,t.negate(A,O),0,0,1),W=G.length;if(W>0){for(var Y=t.clone(t.ZERO,U),H=Number.NEGATIVE_INFINITY,V=0;W>V;++V){S=a.multiplyByVector(E,a.multiplyByVector(g,G[V],B),B);var k=t.normalize(t.subtract(S,o,N),N),K=t.dot(k,s);K>H&&(H=K,Y=t.clone(S,Y))}var j=e.cartesianToCartographic(Y,q);return H=i.clamp(H,0,1),w=t.magnitude(t.subtract(Y,o,N))*Math.sqrt(1-H*H),w=l?-w:w,j.height=w,e.cartographicToCartesian(j,new t)}return void 0};var G=new t;return p.lineSegmentPlane=function(r,e,o,a){n(a)||(a=new t);var s=t.subtract(e,r,G),u=o.normal,l=t.dot(u,s);if(Math.abs(l)<i.EPSILON6)return void 0;var c=t.dot(u,r),f=-(o.distance+c)/l;return 0>f||f>1?void 0:(t.multiplyByScalar(s,f,a),t.add(r,a,a),a)},p.trianglePlaneIntersection=function(r,e,n,o){var i=o.normal,a=o.distance,s=t.dot(i,r)+a<0,u=t.dot(i,e)+a<0,l=t.dot(i,n)+a<0,c=0;c+=s?1:0,c+=u?1:0,c+=l?1:0;var f,h;if((1===c||2===c)&&(f=new t,h=new t),1===c){if(s)return p.lineSegmentPlane(r,e,o,f),p.lineSegmentPlane(r,n,o,h),{positions:[r,e,n,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(u)return p.lineSegmentPlane(e,n,o,f),p.lineSegmentPlane(e,r,o,h),{positions:[r,e,n,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(l)return p.lineSegmentPlane(n,r,o,f),p.lineSegmentPlane(n,e,o,h),{positions:[r,e,n,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===c){if(!s)return p.lineSegmentPlane(e,r,o,f),p.lineSegmentPlane(n,r,o,h),{positions:[r,e,n,f,h],indices:[1,2,4,1,4,3,0,3,4]};if(!u)return p.lineSegmentPlane(n,e,o,f),p.lineSegmentPlane(r,e,o,h),{positions:[r,e,n,f,h],indices:[2,0,4,2,4,3,1,3,4]};if(!l)return p.lineSegmentPlane(r,n,o,f),p.lineSegmentPlane(e,n,o,h),{positions:[r,e,n,f,h],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),define("Core/isArray",["./defined"],function(t){"use strict";var r=Array.isArray;return t(r)||(r=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),r}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(t,r,e,n,o,i,a,s,u,l,c,f){"use strict";function h(t,r,e){var n=R;n.length=t;var o;if(r===e){for(o=0;t>o;o++)n[o]=r;return n}var i=e-r,a=i/t;for(o=0;t>o;o++){var s=r+o*a;n[o]=s}return n}function d(r,e,n,o,i,a,s,u){var l=o.scaleToGeodeticSurface(r,I),c=o.scaleToGeodeticSurface(e,N),f=m.numberOfPoints(r,e,n),d=o.cartesianToCartographic(l,A),p=o.cartesianToCartographic(c,O),g=h(f,i,a);x.setEndPoints(d,p);var y=x.surfaceDistance/f,E=u;d.height=i;var v=o.cartographicToCartesian(d,T);t.pack(v,s,E),E+=3;for(var C=1;f>C;C++){var S=x.interpolateUsingSurfaceDistance(C*y,O);S.height=g[C],v=o.cartographicToCartesian(S,T),t.pack(v,s,E),E+=3}return E}var m={};m.numberOfPoints=function(r,e,n){var o=t.distance(r,e);return Math.ceil(o/n)};var p=new r;m.extractHeights=function(t,r){for(var e=t.length,n=new Array(e),o=0;e>o;o++){var i=t[o];n[o]=r.cartesianToCartographic(i,p).height}return n};var g=new c,y=new t,E=new t,v=new f(t.ZERO,0),C=new t,S=new f(t.ZERO,0),w=new t,M=new t,R=[],A=new r,O=new r,T=new t,I=new t,N=new t,x=new a;m.wrapLongitude=function(r,o){var i=[],a=[];if(n(r)&&r.length>0){o=e(o,c.IDENTITY);var u=c.inverseTransformation(o,g),l=c.multiplyByPoint(u,t.ZERO,y),h=c.multiplyByPointAsVector(u,t.UNIT_Y,E),d=f.fromPointNormal(l,h,v),m=c.multiplyByPointAsVector(u,t.UNIT_X,C),p=f.fromPointNormal(l,m,S),R=1;i.push(t.clone(r[0]));for(var A=i[0],O=r.length,T=1;O>T;++T){var I=r[T];if(f.getPointDistance(p,A)<0||f.getPointDistance(p,I)<0){var N=s.lineSegmentPlane(A,I,d,w);if(n(N)){var x=t.multiplyByScalar(h,5e-9,M);f.getPointDistance(d,A)<0&&t.negate(x,x),i.push(t.add(N,x,new t)),a.push(R+1),t.negate(x,x),i.push(t.add(N,x,new t)),R=1}}i.push(t.clone(r[T])),R++,A=I}a.push(R)}return{positions:i,lengths:a}};var _=l.EPSILON7;return m.removeDuplicates=function(r){var e=r.length;if(2>e)return r;var n,o,i;for(n=1;e>n&&(o=r[n-1],i=r[n],!t.equalsEpsilon(o,i,_));++n);if(n===e)return r;for(var a=r.slice(0,n);e>n;++n)i=r[n],t.equalsEpsilon(o,i,_)||(a.push(t.clone(i)),o=i);return a},m.generateArc=function(r){n(r)||(r={});var o=r.positions,a=o.length,s=e(r.ellipsoid,i.WGS84),c=e(r.height,0);if(1>a)return[];if(1===a){var f=s.scaleToGeodeticSurface(o[0],I);if(0!==c){var h=s.geodeticSurfaceNormal(f,T);t.multiplyByScalar(h,c,h),t.add(f,h,f)}return[f.x,f.y,f.z]}var p=r.minDistance;if(!n(p)){var g=e(r.granularity,l.RADIANS_PER_DEGREE);p=l.chordLength(g,s.maximumRadius)}var y,E=0;for(y=0;a-1>y;y++)E+=m.numberOfPoints(o[y],o[y+1],p);var v=3*(E+1),C=new Array(v),S=0,w=u(c);for(y=0;a-1>y;y++){var M=o[y],O=o[y+1],N=w?c[y]:c,x=w?c[y+1]:c;S=d(M,O,p,s,N,x,C,S)}R.length=0;var _=o[a-1],L=s.cartesianToCartographic(_,A);L.height=w?c[a-1]:c;var b=s.cartographicToCartesian(L,T);return t.pack(b,C,v-3),C},m.generateCartesianArc=function(r){for(var e=m.generateArc(r),n=e.length/3,o=new Array(n),i=0;n>i;i++)o[i]=t.unpack(e,3*i);return o},m}),define("Core/SimplePolylineGeometry",["./BoundingSphere","./Cartesian3","./Color","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PolylinePipeline","./PrimitiveType"],function(t,r,e,n,o,i,a,s,u,l,c,f,h,d,m){"use strict";function p(t,r,n,o,i,a,s){var u,l=d.numberOfPoints(t,r,i),c=n.red,f=n.green,h=n.blue,m=n.alpha,p=o.red,g=o.green,y=o.blue,E=o.alpha;if(e.equals(n,o)){for(u=0;l>u;u++)a[s++]=e.floatToByte(c),a[s++]=e.floatToByte(f),a[s++]=e.floatToByte(h),a[s++]=e.floatToByte(m);return s}var v=(p-c)/l,C=(g-f)/l,S=(y-h)/l,w=(E-m)/l,M=s;for(u=0;l>u;u++)a[M++]=e.floatToByte(c+u*v),a[M++]=e.floatToByte(f+u*C),a[M++]=e.floatToByte(h+u*S),a[M++]=e.floatToByte(m+u*w);return M}var g=function(t){t=o(t,o.EMPTY_OBJECT);var n=t.positions,a=t.colors,u=o(t.colorsPerVertex,!1);this._positions=n,this._colors=a,this._colorsPerVertex=u,this._followSurface=o(t.followSurface,!0),this._granularity=o(t.granularity,h.RADIANS_PER_DEGREE),this._ellipsoid=o(t.ellipsoid,s.WGS84),this._workerName="createSimplePolylineGeometry";var l=1+n.length*r.packedLength;l+=i(a)?1+a.length*e.packedLength:1,this.packedLength=l+s.packedLength+3};g.pack=function(t,n,a){a=o(a,0);var u,l=t._positions,c=l.length;for(n[a++]=c,u=0;c>u;++u,a+=r.packedLength)r.pack(l[u],n,a);var f=t._colors;for(c=i(f)?f.length:0,n[a++]=c,u=0;c>u;++u,a+=e.packedLength)e.pack(f[u],n,a);s.pack(t._ellipsoid,n,a),a+=s.packedLength,n[a++]=t._colorsPerVertex?1:0,n[a++]=t._followSurface?1:0,n[a]=t._granularity},g.unpack=function(t,n,a){n=o(n,0);var u,l=t[n++],c=new Array(l);for(u=0;l>u;++u,n+=r.packedLength)c[u]=r.unpack(t,n);l=t[n++];var f=l>0?new Array(l):void 0;for(u=0;l>u;++u,n+=e.packedLength)f[u]=e.unpack(t,n);var h=s.unpack(t,n);n+=s.packedLength;var d=1===t[n++],m=1===t[n++],p=t[n];return i(a)?(a._positions=c,a._colors=f,a._ellipsoid=h,a._colorsPerVertex=d,a._followSurface=m,a._granularity=p,a):new g({positions:c,colors:f,ellipsoid:h,colorsPerVertex:d,followSurface:m,granularity:p})};var y=new Array(2),E=new Array(2),v={positions:y,height:E,ellipsoid:void 0,minDistance:void 0};return g.createGeometry=function(o){var a,s,g,C,S,w=o._positions,M=o._colors,R=o._colorsPerVertex,A=o._followSurface,O=o._granularity,T=o._ellipsoid,I=h.chordLength(O,T.maximumRadius),N=i(M)&&!R,x=w.length,_=0;if(A){var L=d.extractHeights(w,T),b=v;if(b.minDistance=I,b.ellipsoid=T,N){var P=0;for(a=0;x-1>a;a++)P+=d.numberOfPoints(w[a],w[a+1],I)+1;s=new Float64Array(3*P),C=new Uint8Array(4*P),b.positions=y,b.height=E;var F=0;for(a=0;x-1>a;++a){y[0]=w[a],y[1]=w[a+1],E[0]=L[a],E[1]=L[a+1];var z=d.generateArc(b);if(i(M)){var D=z.length/3;S=M[a];for(var B=0;D>B;++B)C[F++]=e.floatToByte(S.red),C[F++]=e.floatToByte(S.green),C[F++]=e.floatToByte(S.blue),C[F++]=e.floatToByte(S.alpha)}s.set(z,_),_+=z.length}}else if(b.positions=w,b.height=L,s=new Float64Array(d.generateArc(b)),i(M)){for(C=new Uint8Array(4*(s.length/3)),a=0;x-1>a;++a){var U=w[a],q=w[a+1],G=M[a],W=M[a+1];_=p(U,q,G,W,I,C,_)}var Y=M[x-1];C[_++]=e.floatToByte(Y.red),C[_++]=e.floatToByte(Y.green),C[_++]=e.floatToByte(Y.blue),C[_++]=e.floatToByte(Y.alpha)}}else{g=N?2*x-2:x,s=new Float64Array(3*g),C=i(M)?new Uint8Array(4*g):void 0;var H=0,V=0;for(a=0;x>a;++a){var k=w[a];if(N&&a>0&&(r.pack(k,s,H),H+=3,S=M[a-1],C[V++]=e.floatToByte(S.red),C[V++]=e.floatToByte(S.green),C[V++]=e.floatToByte(S.blue),C[V++]=e.floatToByte(S.alpha)),N&&a===x-1)break;r.pack(k,s,H),H+=3,i(M)&&(S=M[a],C[V++]=e.floatToByte(S.red),C[V++]=e.floatToByte(S.green),C[V++]=e.floatToByte(S.blue),C[V++]=e.floatToByte(S.alpha))}}var K=new c;K.position=new l({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:s}),i(M)&&(K.color=new l({componentDatatype:n.UNSIGNED_BYTE,componentsPerAttribute:4,values:C,normalize:!0})),g=s.length/3;var j=2*(g-1),Z=f.createTypedArray(g,j),X=0;for(a=0;g-1>a;++a)Z[X++]=a,Z[X++]=a+1;return new u({attributes:K,indices:Z,primitiveType:m.LINES,boundingSphere:t.fromPoints(w)})},g}),define("Workers/createSimplePolylineGeometry",["../Core/defined","../Core/Ellipsoid","../Core/SimplePolylineGeometry"],function(t,r,e){"use strict";function n(n,o){return t(o)&&(n=e.unpack(n,o)),n._ellipsoid=r.clone(n._ellipsoid),e.createGeometry(n)}return n})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createSphereGeometry.js b/libs/Cesium/Workers/createSphereGeometry.js new file mode 100644 index 0000000000..17d1b4eaee --- /dev/null +++ b/libs/Cesium/Workers/createSphereGeometry.js @@ -0,0 +1,60 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var t=function(t){return void 0!==t};return t}),define("Core/freezeObject",["./defined"],function(t){"use strict";var e=Object.freeze;return t(e)||(e=function(t){return t}),e}),define("Core/defaultValue",["./freezeObject"],function(t){"use strict";var e=function(t,e){return void 0!==t?t:e};return e.EMPTY_OBJECT=t({}),e}),define("Core/DeveloperError",["./defined"],function(t){"use strict";var e=function(t){this.name="DeveloperError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e.throwInstantiationError=function(){throw new e("This function defines an interface and should not be called directly.")},e}),define("ThirdParty/mersenne-twister",[],function(){var t=function(t){void 0==t&&(t=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(t)};return t.prototype.init_genrand=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&t)>>>16)<<16)+1812433253*(65535&t)+this.mti,this.mt[this.mti]>>>=0}},t.prototype.genrand_int32=function(){var t,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^t>>>1^e[1&t];for(;n<this.N-1;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^t>>>1^e[1&t];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^e[1&t],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=2636928640&t<<7,t^=4022730752&t<<15,t^=t>>>18,t>>>0},t.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},t}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(t,e){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(t){return t>0?1:0>t?-1:0},n.signNotZero=function(t){return 0>t?-1:1},n.toSNorm=function(t){return Math.round(255*(.5*n.clamp(t,-1,1)+.5))},n.fromSNorm=function(t){return 2*(n.clamp(t,0,255)/255)-1},n.sinh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e-n)},n.cosh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e+n)},n.lerp=function(t,e,n){return(1-n)*t+n*e},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(t){return t*n.RADIANS_PER_DEGREE},n.toDegrees=function(t){return t*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(t){var e=n.TWO_PI,r=t-Math.floor(t/e)*e;return r<-Math.PI?r+e:r>=Math.PI?r-e:r},n.negativePiToPi=function(t){return n.zeroToTwoPi(t+n.PI)-n.PI},n.zeroToTwoPi=function(t){var e=n.mod(t,n.TWO_PI);return Math.abs(e)<n.EPSILON14&&Math.abs(t)>n.EPSILON14?n.TWO_PI:e},n.mod=function(t,e){return(t%e+e)%e},n.equalsEpsilon=function(t,n,r,i){i=e(i,r);var a=Math.abs(t-n);return i>=a||a<=r*Math.max(Math.abs(t),Math.abs(n))};var r=[1];n.factorial=function(t){var e=r.length;if(t>=e)for(var n=r[e-1],i=e;t>=i;i++)r.push(n*i);return r[t]},n.incrementWrap=function(t,n,r){return r=e(r,0),++t,t>n&&(t=r),t},n.isPowerOfTwo=function(t){return 0!==t&&0===(t&t-1)},n.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t},n.clamp=function(t,e,n){return e>t?e:t>n?n:t};var i=new t;return n.setRandomNumberSeed=function(e){i=new t(e)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(t){return Math.acos(n.clamp(t,-1,1))},n.asinClamped=function(t){return Math.asin(n.clamp(t,-1,1))},n.chordLength=function(t,e){return 2*e*Math.sin(.5*t)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0)};a.fromSpherical=function(n,r){e(r)||(r=new a);var i=n.clock,o=n.cone,u=t(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(t,n,r,i){return e(i)?(i.x=t,i.y=n,i.z=r,i):new a(t,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n):new a(t.x,t.y,t.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r]=e.z},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){a.normalize(t,s),a.normalize(e,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Z,e):n.y<=n.z?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_Z,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)},a.cross=function(t,e,n){var r=t.x,i=t.y,a=t.z,o=e.x,u=e.y,s=e.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(t,e,n,r,o){var u=i.toRadians(t),s=i.toRadians(e);return a.fromRadians(u,s,n,r,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=t(i,0);var s=e(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),e(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o++)r[o]=i.toRadians(t[o]);return a.fromRadiansArray(r,e,n)},a.fromRadiansArray=function(t,n,r){var i=t.length;e(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=t[o],s=t[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o+=3)r[o]=i.toRadians(t[o]),r[o+1]=i.toRadians(t[o+1]),r[o+2]=t[o+2];return a.fromRadiansArrayHeights(r,e,n)},a.fromRadiansArrayHeights=function(t,n,r){var i=t.length;e(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=t[o],s=t[o+1],c=t[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.longitude=t(e,0),this.latitude=t(n,0),this.height=t(r,0)};return a.fromRadians=function(n,r,i,o){return i=t(i,0),e(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(t,e,n,r){return t=i.toRadians(t),e=i.toRadians(e),a.fromRadians(t,e,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.longitude=t.longitude,n.latitude=t.latitude,n.height=t.height,n):new a(t.longitude,t.latitude,t.height):void 0},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.longitude===n.longitude&&t.latitude===n.latitude&&t.height===n.height},a.equalsEpsilon=function(t,n,r){return t===n||e(t)&&e(n)&&Math.abs(t.longitude-n.longitude)<=r&&Math.abs(t.latitude-n.latitude)<=r&&Math.abs(t.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e){return a.equalsEpsilon(this,t,e)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(t){"use strict";var e={},n=function(n,r){t(e[n])||(e[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(t){"use strict";var e=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(t){return!1}}(),n=Object.defineProperties;return e&&t(n)||(n=function(t){return t}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";function s(e,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),e._radii=new t(r,i,a),e._radiiSquared=new t(r*r,i*i,a*a),e._radiiToTheFourth=new t(r*r*r*r,i*i*i*i,a*a*a*a),e._oneOverRadii=new t(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),e._oneOverRadiiSquared=new t(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),e._minimumRadius=Math.min(r,i,a),e._maximumRadius=Math.max(r,i,a),e._centerToleranceSquared=u.EPSILON1}var c=function(t,e,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,t,e,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(e,n){if(!r(e))return void 0;var i=e._radii;return r(n)?(t.clone(i,n._radii),t.clone(e._radiiSquared,n._radiiSquared),t.clone(e._radiiToTheFourth,n._radiiToTheFourth),t.clone(e._oneOverRadii,n._oneOverRadii),t.clone(e._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=e._minimumRadius,n._maximumRadius=e._maximumRadius,n._centerToleranceSquared=e._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(t,e){return r(e)||(e=new c),r(t)?(s(e,t.x,t.y,t.z),e):e},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(t){return c.clone(this,t)},c.packedLength=t.packedLength,c.pack=function(e,r,i){i=n(i,0),t.pack(e._radii,r,i)},c.unpack=function(e,r,i){r=n(r,0);var a=t.unpack(e,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=t.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(e,n){var i=e.longitude,a=e.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new t),n.x=u,n.y=s,n.z=c,t.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(e,n){return r(n)||(n=new t),n=t.multiplyComponents(e,this._oneOverRadiiSquared,n),t.normalize(n,n)};var l=new t,f=new t;c.prototype.cartographicToCartesian=function(e,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(e,i),t.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(t.dot(i,a));return t.divideByScalar(a,o,a),t.multiplyByScalar(i,e.height,i),r(n)||(n=new t),t.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;i++)e[i]=this.cartographicToCartesian(t[i],e[i]);return e};var h=new t,d=new t,m=new t;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,d);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=t.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(t.dot(s,n))*t.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new e(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;++i)e[i]=this.cartesianToCartographic(t[i],e[i]);return e};var y=new t,p=new t;return c.prototype.scaleToGeodeticSurface=function(e,n){var i=e.x,a=e.y,o=e.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,m=o*o*f*f,v=h+d+m,w=Math.sqrt(1/v),E=t.multiplyByScalar(e,w,y);if(v<this._centerToleranceSquared)return isFinite(w)?t.clone(E,n):void 0;var x=this._oneOverRadiiSquared,g=x.x,S=x.y,M=x.z,_=p;_.x=2*E.x*g,_.y=2*E.y*S,_.z=2*E.z*M;var O,z,T,N,I,R,P,b,A,C,L,q=(1-w)*t.magnitude(e)/(.5*t.magnitude(_)),U=0;do{q-=U,T=1/(1+q*g),N=1/(1+q*S),I=1/(1+q*M),R=T*T,P=N*N,b=I*I,A=R*T,C=P*N,L=b*I,O=h*R+d*P+m*b-1,z=h*A*g+d*C*S+m*L*M;var D=-2*z;U=O/D}while(Math.abs(O)>u.EPSILON12);return r(n)?(n.x=i*T,n.y=a*N,n.z=o*I,n):new t(i*T,a*N,o*I)},c.prototype.scaleToGeocentricSurface=function(e,n){r(n)||(n=new t);var i=e.x,a=e.y,o=e.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return t.multiplyByScalar(e,s,n)},c.prototype.transformPositionToScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._radii,n)},c.prototype.equals=function(e){return this===e||r(e)&&t.equals(this._radii,e._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(t,e,n,r,i,a,o){"use strict";var u=function(t){this._ellipsoid=n(t,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(e,n){var i=this._semimajorAxis,a=e.longitude*i,o=e.latitude*i,u=e.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new t(a,o,u)},u.prototype.unproject=function(t,n){var i=this._oneOverSemimajorAxis,a=t.x*i,o=t.y*i,u=t.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new e(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(t){"use strict";var e={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return t(e)}),define("Core/Interval",["./defaultValue"],function(t){"use strict";var e=function(e,n){this.start=t(e,0),this.stop=t(n,0)};return e}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)};a.fromElements=function(t,n,r,i,o){return e(o)?(o.x=t,o.y=n,o.z=r,o.w=i,o):new a(t,n,r,i)},a.fromColor=function(t,n){return e(n)?(n.x=t.red,n.y=t.green,n.z=t.blue,n.w=t.alpha,n):new a(t.red,t.green,t.blue,t.alpha)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n.w=t.w,n):new a(t.x,t.y,t.z,t.w):void 0},a.packedLength=4,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z,t.w)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z,t.w)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n.w=Math.min(t.w,e.w),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n.w=Math.max(t.w,e.w),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e.w=t.w/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z+t.w*e.w},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n.w=t.w*e.w,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n.w=t.w+e.w,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n.w=t.w-e.w,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n.w=t.w*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n.w=t.w/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e.w=-t.w,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e.w=Math.abs(t.w),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,s);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z&&t.w===n.w},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]&&t.w===e[n+3]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)&&i.equalsEpsilon(t.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a){"use strict";function o(t){for(var e=0,n=0;9>n;++n){var r=t[n];e+=r*r}return Math.sqrt(e)}function u(t){for(var e=0,n=0;3>n;++n){var r=t[c.getElementIndex(d[n],h[n])];e+=2*r*r}return Math.sqrt(e)}function s(t,e){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(t[c.getElementIndex(d[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=h[i],m=d[i];if(Math.abs(t[c.getElementIndex(m,f)])>n){var y,p=t[c.getElementIndex(m,m)],v=t[c.getElementIndex(f,f)],w=t[c.getElementIndex(m,f)],E=(p-v)/2/w;y=0>E?-1/(-E+Math.sqrt(1+E*E)):1/(E+Math.sqrt(1+E*E)),s=1/Math.sqrt(1+y*y),l=y*s}return e=c.clone(c.IDENTITY,e),e[c.getElementIndex(f,f)]=e[c.getElementIndex(m,m)]=s,e[c.getElementIndex(m,f)]=l,e[c.getElementIndex(f,m)]=-l,e}var c=function(t,n,r,i,a,o,u,s,c){this[0]=e(t,0),this[1]=e(i,0),this[2]=e(u,0),this[3]=e(n,0),this[4]=e(a,0),this[5]=e(s,0),this[6]=e(r,0),this[7]=e(o,0),this[8]=e(c,0)};c.packedLength=9,c.pack=function(t,n,r){r=e(r,0),n[r++]=t[0],n[r++]=t[1],n[r++]=t[2],n[r++]=t[3],n[r++]=t[4],n[r++]=t[5],n[r++]=t[6],n[r++]=t[7],n[r++]=t[8]},c.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r++],i[1]=t[r++],i[2]=t[r++],i[3]=t[r++],i[4]=t[r++],i[5]=t[r++],i[6]=t[r++],i[7]=t[r++],i[8]=t[r++],i},c.clone=function(t,e){return n(t)?n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):new c(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]):void 0},c.fromArray=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r],i[1]=t[r+1],i[2]=t[r+2],i[3]=t[r+3],i[4]=t[r+4],i[5]=t[r+5],i[6]=t[r+6],i[7]=t[r+7],i[8]=t[r+8],i},c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},c.fromQuaternion=function(t,e){var r=t.x*t.x,i=t.x*t.y,a=t.x*t.z,o=t.x*t.w,u=t.y*t.y,s=t.y*t.z,l=t.y*t.w,f=t.z*t.z,h=t.z*t.w,d=t.w*t.w,m=r-u-f+d,y=2*(i-h),p=2*(a+l),v=2*(i+h),w=-r+u-f+d,E=2*(s-o),x=2*(a-l),g=2*(s+o),S=-r-u+f+d;return n(e)?(e[0]=m,e[1]=v,e[2]=x,e[3]=y,e[4]=w,e[5]=g,e[6]=p,e[7]=E,e[8]=S,e):new c(m,y,p,v,w,E,x,g,S)},c.fromScale=function(t,e){return n(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=t.y,e[5]=0,e[6]=0,e[7]=0,e[8]=t.z,e):new c(t.x,0,0,0,t.y,0,0,0,t.z)},c.fromUniformScale=function(t,e){return n(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=t,e[5]=0,e[6]=0,e[7]=0,e[8]=t,e):new c(t,0,0,0,t,0,0,0,t)},c.fromCrossProduct=function(t,e){return n(e)?(e[0]=0,e[1]=t.z,e[2]=-t.y,e[3]=-t.z,e[4]=0,e[5]=t.x,e[6]=t.y,e[7]=-t.x,e[8]=0,e):new c(0,-t.z,t.y,t.z,0,-t.x,-t.y,t.x,0)},c.fromRotationX=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=r,e[5]=i,e[6]=0,e[7]=-i,e[8]=r,e):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=0,e[2]=-i,e[3]=0,e[4]=1,e[5]=0,e[6]=i,e[7]=0,e[8]=r,e):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=i,e[2]=0,e[3]=-i,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8]]},c.getElementIndex=function(t,e){return 3*t+e},c.getColumn=function(t,e,n){var r=3*e,i=t[r],a=t[r+1],o=t[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=3*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(t,e,n){var r=t[e],i=t[e+3],a=t[e+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+3]=n.y,r[e+6]=n.z,r};var l=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],l)),n.y=t.magnitude(t.fromElements(e[3],e[4],e[5],l)),n.z=t.magnitude(t.fromElements(e[6],e[7],e[8],l)),n};var f=new t;c.getMaximumScale=function(e){return c.getScale(e,f),t.maximumComponent(f)},c.multiply=function(t,e,n){var r=t[0]*e[0]+t[3]*e[1]+t[6]*e[2],i=t[1]*e[0]+t[4]*e[1]+t[7]*e[2],a=t[2]*e[0]+t[5]*e[1]+t[8]*e[2],o=t[0]*e[3]+t[3]*e[4]+t[6]*e[5],u=t[1]*e[3]+t[4]*e[4]+t[7]*e[5],s=t[2]*e[3]+t[5]*e[4]+t[8]*e[5],c=t[0]*e[6]+t[3]*e[7]+t[6]*e[8],l=t[1]*e[6]+t[4]*e[7]+t[7]*e[8],f=t[2]*e[6]+t[5]*e[7]+t[8]*e[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[3]*i+t[6]*a,u=t[1]*r+t[4]*i+t[7]*a,s=t[2]*r+t[5]*i+t[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n},c.multiplyByScale=function(t,e,n){return n[0]=t[0]*e.x,n[1]=t[1]*e.x,n[2]=t[2]*e.x,n[3]=t[3]*e.y,n[4]=t[4]*e.y,n[5]=t[5]*e.y,n[6]=t[6]*e.z,n[7]=t[7]*e.z,n[8]=t[8]*e.z,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e},c.transpose=function(t,e){var n=t[0],r=t[3],i=t[6],a=t[1],o=t[4],u=t[7],s=t[2],c=t[5],l=t[8];return e[0]=n,e[1]=r,e[2]=i,e[3]=a,e[4]=o,e[5]=u,e[6]=s,e[7]=c,e[8]=l,e};var h=[1,0,0],d=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(t,e){var r=a.EPSILON20,i=10,l=0,f=0;n(e)||(e={});for(var h=e.unitary=c.clone(c.IDENTITY,e.unitary),d=e.diagonal=c.clone(t,e.diagonal),p=r*o(d);i>f&&u(d)>p;)s(d,m),c.transpose(m,y),c.multiply(d,m,d),c.multiply(y,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e},c.determinant=function(t){var e=t[0],n=t[3],r=t[6],i=t[1],a=t[4],o=t[7],u=t[2],s=t[5],c=t[8];return e*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(t,e){var n=t[0],i=t[1],o=t[2],u=t[3],s=t[4],l=t[5],f=t[6],h=t[7],d=t[8],m=c.determinant(t);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");e[0]=s*d-h*l,e[1]=h*o-i*d,e[2]=i*l-s*o,e[3]=f*l-u*d,e[4]=n*d-f*o,e[5]=u*o-n*l,e[6]=u*h-f*s,e[7]=f*i-n*h,e[8]=n*s-u*i;var y=1/m;return c.multiplyByScalar(e,y,e)},c.equals=function(t,e){return t===e||n(t)&&n(e)&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]},c.equalsEpsilon=function(t,e,r){return t===e||n(t)&&n(e)&&Math.abs(t[0]-e[0])<=r&&Math.abs(t[1]-e[1])<=r&&Math.abs(t[2]-e[2])<=r&&Math.abs(t[3]-e[3])<=r&&Math.abs(t[4]-e[4])<=r&&Math.abs(t[5]-e[5])<=r&&Math.abs(t[6]-e[6])<=r&&Math.abs(t[7]-e[7])<=r&&Math.abs(t[8]-e[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(t){"use strict";var e=function(t){this.name="RuntimeError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(t,e,n,r,i,a,o,u,s){"use strict";var c=function(t,e,r,i,a,o,u,s,c,l,f,h,d,m,y,p){this[0]=n(t,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(e,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(y,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(p,0)};c.packedLength=16,c.pack=function(t,e,r){r=n(r,0),e[r++]=t[0],e[r++]=t[1],e[r++]=t[2],e[r++]=t[3],e[r++]=t[4],e[r++]=t[5],e[r++]=t[6],e[r++]=t[7],e[r++]=t[8],e[r++]=t[9],e[r++]=t[10],e[r++]=t[11],e[r++]=t[12],e[r++]=t[13],e[r++]=t[14],e[r]=t[15]},c.unpack=function(t,e,i){return e=n(e,0),r(i)||(i=new c),i[0]=t[e++],i[1]=t[e++],i[2]=t[e++],i[3]=t[e++],i[4]=t[e++],i[5]=t[e++],i[6]=t[e++],i[7]=t[e++],i[8]=t[e++],i[9]=t[e++],i[10]=t[e++],i[11]=t[e++],i[12]=t[e++],i[13]=t[e++],i[14]=t[e++],i[15]=t[e],i},c.clone=function(t,e){return r(t)?r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):new c(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},c.fromRotationTranslation=function(e,i,a){return i=n(i,t.ZERO),r(a)?(a[0]=e[0],a[1]=e[1],a[2]=e[2],a[3]=0,a[4]=e[3],a[5]=e[4],a[6]=e[5],a[7]=0,a[8]=e[6],a[9]=e[7],a[10]=e[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(e[0],e[3],e[6],i.x,e[1],e[4],e[7],i.y,e[2],e[5],e[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(t,e,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=e.x*e.x,l=e.x*e.y,f=e.x*e.z,h=e.x*e.w,d=e.y*e.y,m=e.y*e.z,y=e.y*e.w,p=e.z*e.z,v=e.z*e.w,w=e.w*e.w,E=s-d-p+w,x=2*(l-v),g=2*(f+y),S=2*(l+v),M=-s+d-p+w,_=2*(m-h),O=2*(f-y),z=2*(m+h),T=-s-d+p+w;return i[0]=E*a,i[1]=S*a,i[2]=O*a,i[3]=0,i[4]=x*o,i[5]=M*o,i[6]=z*o,i[7]=0,i[8]=g*u,i[9]=_*u,i[10]=T*u,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,i},c.fromTranslation=function(t,e){return c.fromRotationTranslation(u.IDENTITY,t,e)},c.fromScale=function(t,e){return r(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t.y,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t.z,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t.x,0,0,0,0,t.y,0,0,0,0,t.z,0,0,0,0,1)},c.fromUniformScale=function(t,e){return r(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t,0,0,0,0,t,0,0,0,0,t,0,0,0,0,1)};var l=new t,f=new t,h=new t;c.fromCamera=function(e,n){var i=e.eye,a=e.target,o=e.up;t.normalize(t.subtract(a,i,l),l),t.normalize(t.cross(l,o,f),f),t.normalize(t.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,y=l.y,p=l.z,v=h.x,w=h.y,E=h.z,x=i.x,g=i.y,S=i.z,M=u*-x+s*-g+d*-S,_=v*-x+w*-g+E*-S,O=m*x+y*g+p*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=w,n[6]=-y,n[7]=0,n[8]=d,n[9]=E,n[10]=-p,n[11]=0,n[12]=M,n[13]=_,n[14]=O,n[15]=1,n):new c(u,s,d,M,v,w,E,_,-m,-y,-p,O,0,0,0,1)},c.computePerspectiveFieldOfView=function(t,e,n,r,i){var a=Math.tan(.5*t),o=1/a,u=o/e,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(t,e,n,r,i,a,o){var u=1/(e-t),s=1/(r-n),c=1/(a-i),l=-(e+t)*u,f=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o +},c.computePerspectiveOffCenter=function(t,e,n,r,i,a,o){var u=2*i/(e-t),s=2*i/(r-n),c=(e+t)/(e-t),l=(r+n)/(r-n),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(t,e,n,r,i,a){var o=2*i/(e-t),u=2*i/(r-n),s=(e+t)/(e-t),c=(r+n)/(r-n),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(t,e,r,i){t=n(t,n.EMPTY_OBJECT);var a=n(t.x,0),o=n(t.y,0),u=n(t.width,0),s=n(t.height,0);e=n(e,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-e),h=c,d=l,m=f,y=a+c,p=o+l,v=e+f,w=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=y,i[13]=p,i[14]=v,i[15]=w,i},c.toArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},c.getElementIndex=function(t,e){return 4*t+e},c.getColumn=function(t,e,n){var r=4*e,i=t[r],a=t[r+1],o=t[r+2],u=t[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=4*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(t,e,n){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=t[15],n},c.getRow=function(t,e,n){var r=t[e],i=t[e+4],a=t[e+8],o=t[e+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+4]=n.y,r[e+8]=n.z,r[e+12]=n.w,r};var d=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],d)),n.y=t.magnitude(t.fromElements(e[4],e[5],e[6],d)),n.z=t.magnitude(t.fromElements(e[8],e[9],e[10],d)),n};var m=new t;c.getMaximumScale=function(e){return c.getScale(e,m),t.maximumComponent(m)},c.multiply=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[3],u=t[4],s=t[5],c=t[6],l=t[7],f=t[8],h=t[9],d=t[10],m=t[11],y=t[12],p=t[13],v=t[14],w=t[15],E=e[0],x=e[1],g=e[2],S=e[3],M=e[4],_=e[5],O=e[6],z=e[7],T=e[8],N=e[9],I=e[10],R=e[11],P=e[12],b=e[13],A=e[14],C=e[15],L=r*E+u*x+f*g+y*S,q=i*E+s*x+h*g+p*S,U=a*E+c*x+d*g+v*S,D=o*E+l*x+m*g+w*S,B=r*M+u*_+f*O+y*z,F=i*M+s*_+h*O+p*z,k=a*M+c*_+d*O+v*z,W=o*M+l*_+m*O+w*z,G=r*T+u*N+f*I+y*R,V=i*T+s*N+h*I+p*R,Y=a*T+c*N+d*I+v*R,j=o*T+l*N+m*I+w*R,Z=r*P+u*b+f*A+y*C,H=i*P+s*b+h*A+p*C,X=a*P+c*b+d*A+v*C,K=o*P+l*b+m*A+w*C;return n[0]=L,n[1]=q,n[2]=U,n[3]=D,n[4]=B,n[5]=F,n[6]=k,n[7]=W,n[8]=G,n[9]=V,n[10]=Y,n[11]=j,n[12]=Z,n[13]=H,n[14]=X,n[15]=K,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n[9]=t[9]+e[9],n[10]=t[10]+e[10],n[11]=t[11]+e[11],n[12]=t[12]+e[12],n[13]=t[13]+e[13],n[14]=t[14]+e[14],n[15]=t[15]+e[15],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n[9]=t[9]-e[9],n[10]=t[10]-e[10],n[11]=t[11]-e[11],n[12]=t[12]-e[12],n[13]=t[13]-e[13],n[14]=t[14]-e[14],n[15]=t[15]-e[15],n},c.multiplyTransformation=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=t[12],d=t[13],m=t[14],y=e[0],p=e[1],v=e[2],w=e[4],E=e[5],x=e[6],g=e[8],S=e[9],M=e[10],_=e[12],O=e[13],z=e[14],T=r*y+o*p+c*v,N=i*y+u*p+l*v,I=a*y+s*p+f*v,R=r*w+o*E+c*x,P=i*w+u*E+l*x,b=a*w+s*E+f*x,A=r*g+o*S+c*M,C=i*g+u*S+l*M,L=a*g+s*S+f*M,q=r*_+o*O+c*z+h,U=i*_+u*O+l*z+d,D=a*_+s*O+f*z+m;return n[0]=T,n[1]=N,n[2]=I,n[3]=0,n[4]=R,n[5]=P,n[6]=b,n[7]=0,n[8]=A,n[9]=C,n[10]=L,n[11]=0,n[12]=q,n[13]=U,n[14]=D,n[15]=1,n},c.multiplyByMatrix3=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=e[0],d=e[1],m=e[2],y=e[3],p=e[4],v=e[5],w=e[6],E=e[7],x=e[8],g=r*h+o*d+c*m,S=i*h+u*d+l*m,M=a*h+s*d+f*m,_=r*y+o*p+c*v,O=i*y+u*p+l*v,z=a*y+s*p+f*v,T=r*w+o*E+c*x,N=i*w+u*E+l*x,I=a*w+s*E+f*x;return n[0]=g,n[1]=S,n[2]=M,n[3]=0,n[4]=_,n[5]=O,n[6]=z,n[7]=0,n[8]=T,n[9]=N,n[10]=I,n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n},c.multiplyByTranslation=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=r*t[0]+i*t[4]+a*t[8]+t[12],u=r*t[1]+i*t[5]+a*t[9]+t[13],s=r*t[2]+i*t[6]+a*t[10]+t[14];return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=o,n[13]=u,n[14]=s,n[15]=t[15],n};var y=new t;c.multiplyByUniformScale=function(t,e,n){return y.x=e,y.y=e,y.z=e,c.multiplyByScale(t,y,n)},c.multiplyByScale=function(t,e,n){var r=e.x,i=e.y,a=e.z;return 1===r&&1===i&&1===a?c.clone(t,n):(n[0]=r*t[0],n[1]=r*t[1],n[2]=r*t[2],n[3]=0,n[4]=i*t[4],n[5]=i*t[5],n[6]=i*t[6],n[7]=0,n[8]=a*t[8],n[9]=a*t[9],n[10]=a*t[10],n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=1,n)},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t[0]*r+t[4]*i+t[8]*a+t[12]*o,s=t[1]*r+t[5]*i+t[9]*a+t[13]*o,c=t[2]*r+t[6]*i+t[10]*a+t[14]*o,l=t[3]*r+t[7]*i+t[11]*a+t[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a,u=t[1]*r+t[5]*i+t[9]*a,s=t[2]*r+t[6]*i+t[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a+t[12],u=t[1]*r+t[5]*i+t[9]*a+t[13],s=t[2]*r+t[6]*i+t[10]*a+t[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n[9]=t[9]*e,n[10]=t[10]*e,n[11]=t[11]*e,n[12]=t[12]*e,n[13]=t[13]*e,n[14]=t[14]*e,n[15]=t[15]*e,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e[11]=-t[11],e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=-t[15],e},c.transpose=function(t,e){var n=t[1],r=t[2],i=t[3],a=t[6],o=t[7],u=t[11];return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[10]=t[10],e[11]=t[14],e[12]=i,e[13]=o,e[14]=u,e[15]=t[15],e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e[9]=Math.abs(t[9]),e[10]=Math.abs(t[10]),e[11]=Math.abs(t[11]),e[12]=Math.abs(t[12]),e[13]=Math.abs(t[13]),e[14]=Math.abs(t[14]),e[15]=Math.abs(t[15]),e},c.equals=function(t,e){return t===e||r(t)&&r(e)&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[3]===e[3]&&t[7]===e[7]&&t[11]===e[11]&&t[15]===e[15]},c.equalsEpsilon=function(t,e,n){return t===e||r(t)&&r(e)&&Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n&&Math.abs(t[4]-e[4])<=n&&Math.abs(t[5]-e[5])<=n&&Math.abs(t[6]-e[6])<=n&&Math.abs(t[7]-e[7])<=n&&Math.abs(t[8]-e[8])<=n&&Math.abs(t[9]-e[9])<=n&&Math.abs(t[10]-e[10])<=n&&Math.abs(t[11]-e[11])<=n&&Math.abs(t[12]-e[12])<=n&&Math.abs(t[13]-e[13])<=n&&Math.abs(t[14]-e[14])<=n&&Math.abs(t[15]-e[15])<=n},c.getTranslation=function(t,e){return e.x=t[12],e.y=t[13],e.z=t[14],e},c.getRotation=function(t,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e};var p=new u,v=new u,w=new e,E=new e(0,0,0,1);return c.inverse=function(t,n){if(u.equalsEpsilon(c.getRotation(t,p),v,o.EPSILON7)&&e.equals(c.getRow(t,3,w),E))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-t[12],n[13]=-t[13],n[14]=-t[14],n[15]=1,n;var r=t[0],i=t[4],a=t[8],l=t[12],f=t[1],h=t[5],d=t[9],m=t[13],y=t[2],x=t[6],g=t[10],S=t[14],M=t[3],_=t[7],O=t[11],z=t[15],T=g*z,N=S*O,I=x*z,R=S*_,P=x*O,b=g*_,A=y*z,C=S*M,L=y*O,q=g*M,U=y*_,D=x*M,B=T*h+R*d+P*m-(N*h+I*d+b*m),F=N*f+A*d+q*m-(T*f+C*d+L*m),k=I*f+C*h+U*m-(R*f+A*h+D*m),W=b*f+L*h+D*d-(P*f+q*h+U*d),G=N*i+I*a+b*l-(T*i+R*a+P*l),V=T*r+C*a+L*l-(N*r+A*a+q*l),Y=R*r+A*i+D*l-(I*r+C*i+U*l),j=P*r+q*i+U*a-(b*r+L*i+D*a);T=a*m,N=l*d,I=i*m,R=l*h,P=i*d,b=a*h,A=r*m,C=l*f,L=r*d,q=a*f,U=r*h,D=i*f;var Z=T*_+R*O+P*z-(N*_+I*O+b*z),H=N*M+A*O+q*z-(T*M+C*O+L*z),X=I*M+C*_+U*z-(R*M+A*_+D*z),K=b*M+L*_+D*O-(P*M+q*_+U*O),J=I*g+b*S+N*x-(P*S+T*x+R*g),Q=L*S+T*y+C*g-(A*g+q*S+N*y),$=A*x+D*S+R*y-(U*S+I*y+C*x),te=U*g+P*y+q*x-(L*x+D*g+b*y),ee=r*B+i*F+a*k+l*W;if(Math.abs(ee)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return ee=1/ee,n[0]=B*ee,n[1]=F*ee,n[2]=k*ee,n[3]=W*ee,n[4]=G*ee,n[5]=V*ee,n[6]=Y*ee,n[7]=j*ee,n[8]=Z*ee,n[9]=H*ee,n[10]=X*ee,n[11]=K*ee,n[12]=J*ee,n[13]=Q*ee,n[14]=$*ee,n[15]=te*ee,n},c.inverseTransformation=function(t,e){var n=t[0],r=t[1],i=t[2],a=t[4],o=t[5],u=t[6],s=t[8],c=t[9],l=t[10],f=t[12],h=t[13],d=t[14],m=-n*f-r*h-i*d,y=-a*f-o*h-u*d,p=-s*f-c*h-l*d;return e[0]=n,e[1]=a,e[2]=s,e[3]=0,e[4]=r,e[5]=o,e[6]=c,e[7]=0,e[8]=i,e[9]=u,e[10]=l,e[11]=0,e[12]=m,e[13]=y,e[14]=p,e[15]=1,e},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]&&t[9]===e[n+9]&&t[10]===e[n+10]&&t[11]===e[n+11]&&t[12]===e[n+12]&&t[13]===e[n+13]&&t[14]===e[n+14]&&t[15]===e[n+15]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e,n){this.normal=t.clone(e),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-t.dot(r,n);return e(a)?(t.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new t;return i.fromCartesian4=function(n,r){var o=t.fromCartesian4(n,a),u=n.w;return e(r)?(t.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(e,n){return t.dot(e.normal,n)+e.distance},i.ORIGIN_XY_PLANE=r(new i(t.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(t.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(t.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";var s=function(t,n,r,i){this.west=e(t,0),this.south=e(n,0),this.east=e(r,0),this.north=e(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(t,n,r){r=e(r,0),n[r++]=t.west,n[r++]=t.south,n[r++]=t.east,n[r]=t.north},s.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new s),i.west=t[r++],i.south=t[r++],i.east=t[r++],i.north=t[r],i},s.computeWidth=function(t){var e=t.east,n=t.west;return n>e&&(e+=u.TWO_PI),e-n},s.computeHeight=function(t){return t.north-t.south},s.fromDegrees=function(t,r,i,a,o){return t=u.toRadians(e(t,0)),r=u.toRadians(e(r,0)),i=u.toRadians(e(i,0)),a=u.toRadians(e(a,0)),n(o)?(o.west=t,o.south=r,o.east=i,o.north=a,o):new s(t,r,i,a)},s.fromCartographicArray=function(t,e){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=t.length;c>u;u++){var l=t[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(e)?(e.west=r,e.south=a,e.east=i,e.north=o,e):new s(r,a,i,o)},s.clone=function(t,e){return n(t)?n(e)?(e.west=t.west,e.south=t.south,e.east=t.east,e.north=t.north,e):new s(t.west,t.south,t.east,t.north):void 0},s.prototype.clone=function(t){return s.clone(this,t)},s.prototype.equals=function(t){return s.equals(this,t)},s.equals=function(t,e){return t===e||n(t)&&n(e)&&t.west===e.west&&t.south===e.south&&t.east===e.east&&t.north===e.north},s.prototype.equalsEpsilon=function(t,e){return n(t)&&Math.abs(this.west-t.west)<=e&&Math.abs(this.south-t.south)<=e&&Math.abs(this.east-t.east)<=e&&Math.abs(this.north-t.north)<=e},s.validate=function(){},s.southwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.south,r.height=0,r):new t(e.west,e.south)},s.northwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.north,r.height=0,r):new t(e.west,e.north)},s.northeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.north,r.height=0,r):new t(e.east,e.north)},s.southeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.south,r.height=0,r):new t(e.east,e.south)},s.center=function(e,r){var i=e.east,a=e.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(e.south+e.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new t(o,s)},s.intersection=function(t,e,r){var i=t.east,a=t.west,o=e.east,c=e.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((t.west<t.east||e.west<e.east)&&l>=f)return void 0;var h=Math.max(t.south,e.south),d=Math.min(t.north,e.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(t,e){var n=e.longitude,r=e.latitude,i=t.west,a=t.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=t.south&&r<=t.north};var c=new t;return s.subsample=function(t,r,i,o){r=e(r,a.WGS84),i=e(i,0),n(o)||(o=[]);var l=0,f=t.north,h=t.south,d=t.east,m=t.west,y=c;y.height=i,y.longitude=m,y.latitude=f,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=h,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=0>f?f:h>0?h:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(t,y)&&(o[l]=r.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(t,e,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(e,r){this.center=t.clone(n(e,t.ZERO)),this.radius=n(r,0)},m=new t,y=new t,p=new t,v=new t,w=new t,E=new t,x=new t,g=new t,S=new t,M=new t,_=new t,O=new t;d.fromPoints=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;for(var i=t.clone(e[0],x),a=t.clone(i,m),o=t.clone(i,y),u=t.clone(i,p),s=t.clone(i,v),c=t.clone(i,w),l=t.clone(i,E),f=e.length,h=1;f>h;h++){t.clone(e[h],i);var z=i.x,T=i.y,N=i.z;z<a.x&&t.clone(i,a),z>s.x&&t.clone(i,s),T<o.y&&t.clone(i,o),T>c.y&&t.clone(i,c),N<u.z&&t.clone(i,u),N>l.z&&t.clone(i,l)}var I=t.magnitudeSquared(t.subtract(s,a,g)),R=t.magnitudeSquared(t.subtract(c,o,g)),P=t.magnitudeSquared(t.subtract(l,u,g)),b=a,A=s,C=I;R>C&&(C=R,b=o,A=c),P>C&&(C=P,b=u,A=l);var L=S;L.x=.5*(b.x+A.x),L.y=.5*(b.y+A.y),L.z=.5*(b.z+A.z);var q=t.magnitudeSquared(t.subtract(A,L,g)),U=Math.sqrt(q),D=M;D.x=a.x,D.y=o.y,D.z=u.z;var B=_;B.x=s.x,B.y=c.y,B.z=l.z;var F=t.multiplyByScalar(t.add(D,B,g),.5,O),k=0;for(h=0;f>h;h++){t.clone(e[h],i);var W=t.magnitude(t.subtract(i,F,g));W>k&&(k=W);var G=t.magnitudeSquared(t.subtract(i,L,g));if(G>q){var V=Math.sqrt(G);U=.5*(U+V),q=U*U;var Y=V-U;L.x=(U*L.x+Y*i.x)/V,L.y=(U*L.y+Y*i.y)/V,L.z=(U*L.z+Y*i.z)/V}}return k>U?(t.clone(L,n.center),n.radius=U):(t.clone(F,n.center),n.radius=k),n};var z=new u,T=new t,N=new t,I=new e,R=new e;d.fromRectangle2D=function(t,e,n){return d.fromRectangleWithHeights2D(t,e,0,0,n)},d.fromRectangleWithHeights2D=function(e,i,a,o,u){if(r(u)||(u=new d),!r(e))return u.center=t.clone(t.ZERO,u.center),u.radius=0,u;i=n(i,z),h.southwest(e,I),I.height=a,h.northeast(e,R),R.height=o;var s=i.project(I,T),c=i.project(R,N),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*f,y.z=s.z+.5*m,u};var P=[];d.fromRectangle3D=function(t,e,i,a){e=n(e,o.WGS84),i=n(i,0);var u;return r(t)&&(u=h.subsample(t,e,i,P)),d.fromPoints(u,a)},d.fromVertices=function(e,i,a,o){if(r(o)||(o=new d),!r(e)||0===e.length)return o.center=t.clone(t.ZERO,o.center),o.radius=0,o;i=n(i,t.ZERO),a=n(a,3);var u=x;u.x=e[0]+i.x,u.y=e[1]+i.y,u.z=e[2]+i.z;for(var s=t.clone(u,m),c=t.clone(u,y),l=t.clone(u,p),f=t.clone(u,v),h=t.clone(u,w),z=t.clone(u,E),T=e.length,N=0;T>N;N+=a){var I=e[N]+i.x,R=e[N+1]+i.y,P=e[N+2]+i.z;u.x=I,u.y=R,u.z=P,I<s.x&&t.clone(u,s),I>f.x&&t.clone(u,f),R<c.y&&t.clone(u,c),R>h.y&&t.clone(u,h),P<l.z&&t.clone(u,l),P>z.z&&t.clone(u,z)}var b=t.magnitudeSquared(t.subtract(f,s,g)),A=t.magnitudeSquared(t.subtract(h,c,g)),C=t.magnitudeSquared(t.subtract(z,l,g)),L=s,q=f,U=b;A>U&&(U=A,L=c,q=h),C>U&&(U=C,L=l,q=z);var D=S;D.x=.5*(L.x+q.x),D.y=.5*(L.y+q.y),D.z=.5*(L.z+q.z);var B=t.magnitudeSquared(t.subtract(q,D,g)),F=Math.sqrt(B),k=M;k.x=s.x,k.y=c.y,k.z=l.z;var W=_;W.x=f.x,W.y=h.y,W.z=z.z;var G=t.multiplyByScalar(t.add(k,W,g),.5,O),V=0;for(N=0;T>N;N+=a){u.x=e[N]+i.x,u.y=e[N+1]+i.y,u.z=e[N+2]+i.z;var Y=t.magnitude(t.subtract(u,G,g));Y>V&&(V=Y);var j=t.magnitudeSquared(t.subtract(u,D,g));if(j>B){var Z=Math.sqrt(j);F=.5*(F+Z),B=F*F;var H=Z-F;D.x=(F*D.x+H*u.x)/Z,D.y=(F*D.y+H*u.y)/Z,D.z=(F*D.z+H*u.z)/Z}}return V>F?(t.clone(D,o.center),o.radius=F):(t.clone(G,o.center),o.radius=V),o},d.fromCornerPoints=function(e,n,i){r(i)||(i=new d);var a=i.center;return t.add(e,n,a),t.multiplyByScalar(a,.5,a),i.radius=t.distance(a,n),i},d.fromEllipsoid=function(e,n){return r(n)||(n=new d),t.clone(t.ZERO,n.center),n.radius=e.maximumRadius,n};var b=new t;d.fromBoundingSpheres=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;var i=e.length;if(1===i)return d.clone(e[0],n);if(2===i)return d.union(e[0],e[1],n);for(var a=[],o=0;i>o;o++)a.push(e[o].center);n=d.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=e[o];s=Math.max(s,t.distance(u,c.center,b)+c.radius)}return n.radius=s,n},d.clone=function(e,n){return r(e)?r(n)?(n.center=t.clone(e.center,n.center),n.radius=e.radius,n):new d(e.center,e.radius):void 0},d.packedLength=4,d.pack=function(t,e,r){r=n(r,0);var i=t.center;e[r++]=i.x,e[r++]=i.y,e[r++]=i.z,e[r]=t.radius},d.unpack=function(t,e,i){e=n(e,0),r(i)||(i=new d);var a=i.center;return a.x=t[e++],a.y=t[e++],a.z=t[e++],i.radius=t[e],i};var A=new t,C=new t;d.union=function(e,n,i){r(i)||(i=new d);var a=e.center,o=e.radius,u=n.center,s=n.radius,c=t.subtract(u,a,A),l=t.magnitude(c);if(o>=l+s)return e.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),h=t.multiplyByScalar(c,(-o+f)/l,C);return t.add(h,a,h),t.clone(h,i.center),i.radius=f,i};var L=new t;d.expand=function(e,n,r){r=d.clone(e,r);var i=t.magnitude(t.subtract(n,r.center,L));return i>r.radius&&(r.radius=i),r},d.intersectPlane=function(e,n){var r=e.center,i=e.radius,a=n.normal,o=t.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new t,0);d.intersect=function(t,e){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(e,q);return d.intersectPlane(t,n)},d.transform=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=l.getMaximumScale(e)*t.radius,n};var U=new t;d.distanceSquaredTo=function(e,n){var r=t.subtract(e.center,n,U);return t.magnitudeSquared(r)-e.radius*e.radius},d.transformWithoutScale=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=t.radius,n};var D=new t;d.computePlaneDistances=function(e,n,i,a){r(a)||(a=new c);var o=t.subtract(e.center,n,D),u=t.multiplyByScalar(i,t.dot(i,o),D),s=t.magnitude(u);return a.start=s-e.radius,a.stop=s+e.radius,a};for(var B=new t,F=new t,k=new t,W=new t,G=new t,V=new e,Y=new Array(8),j=0;8>j;++j)Y[j]=new t;var Z=new u;return d.projectTo2D=function(e,r,i){r=n(r,Z);var a=r.ellipsoid,o=e.center,u=e.radius,s=a.geodeticSurfaceNormal(o,B),c=t.cross(t.UNIT_Z,s,F);t.normalize(c,c);var l=t.cross(s,c,k);t.normalize(l,l),t.multiplyByScalar(s,u,s),t.multiplyByScalar(l,u,l),t.multiplyByScalar(c,u,c);var f=t.negate(l,G),h=t.negate(c,W),m=Y,y=m[0];t.add(s,l,y),t.add(y,c,y),y=m[1],t.add(s,l,y),t.add(y,h,y),y=m[2],t.add(s,f,y),t.add(y,h,y),y=m[3],t.add(s,f,y),t.add(y,c,y),t.negate(s,s),y=m[4],t.add(s,l,y),t.add(y,c,y),y=m[5],t.add(s,l,y),t.add(y,h,y),y=m[6],t.add(s,f,y),t.add(y,h,y),y=m[7],t.add(s,f,y),t.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var w=m[v];t.add(o,w,w);var E=a.cartesianToCartographic(w,V);r.project(E,w)}i=d.fromPoints(m,i),o=i.center;var x=o.x,g=o.y,S=o.z;return o.x=S,o.y=x,o.z=g,i},d.equals=function(e,n){return e===n||r(e)&&r(n)&&t.equals(e.center,n.center)&&e.radius===n.radius},d.prototype.intersectPlane=function(t){return d.intersectPlane(this,t)},d.prototype.intersect=function(t){return d.intersect(this,t)},d.prototype.equals=function(t){return d.equals(this,t)},d.prototype.clone=function(t){return d.clone(this,t)},d}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n){this.x=t(e,0),this.y=t(n,0)};a.fromElements=function(t,n,r){return e(r)?(r.x=t,r.y=n,r):new a(t,n)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n):new a(t.x,t.y):void 0},a.fromCartesian3=a.clone,a.fromCartesian4=a.clone,a.packedLength=2,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r]=e.y},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y)},a.minimumComponent=function(t){return Math.min(t.x,t.y)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){return a.normalize(t,s),a.normalize(e,c),i.acosClamped(a.dot(s,c))};var l=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Y,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)},a.ZERO=r(new a(0,0)),a.UNIT_X=r(new a(1,0)),a.UNIT_Y=r(new a(0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+")"},a}),define("Core/Fullscreen",["./defined","./defineProperties"],function(t,e){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return e(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(t(n))return n;n=!1;var e=document.body;if("function"==typeof e.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof e[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof e[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",t(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",t(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",t(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",t(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(t){i.supportsFullscreen()&&t[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(t,e,n){"use strict";function r(t){for(var e=t.split("."),n=0,r=e.length;r>n;++n)e[n]=parseInt(e[n],10);return e}function i(){if(!e(p)){p=!1;var t=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(p=!0,v=r(t[1]))}return p}function a(){return i()&&v}function o(){if(!e(w)&&(w=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var t=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(w=!0,E=r(t[1]))}return w}function u(){return o()&&E}function s(){if(!e(x)){x=!1;var t=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==t&&(x=!0,g=r(t[1]),g.isNightly=!!t[2])}return x}function c(){return s()&&g}function l(){if(!e(S)){S=!1;var t;"Microsoft Internet Explorer"===navigator.appName?(t=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(S=!0,M=r(t[1]))):"Netscape"===navigator.appName&&(t=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(S=!0,M=r(t[1])))}return S}function f(){return l()&&M}function h(){if(!e(_)){_=!1;var t=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(_=!0,O=r(t[1]))}return _}function d(){return e(z)||(z=/Windows/i.test(navigator.appVersion)),z}function m(){return h()&&O}function y(){return e(T)||(T=e(window.PointerEvent)&&(!e(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),T}var p,v,w,E,x,g,S,M,_,O,z,T,N={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:t(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return N.supportsFullscreen=function(){return n.supportsFullscreen()},N.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},N.supportsWebWorkers=function(){return"undefined"!=typeof Worker},N}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(t,e,n,r,i){"use strict";if(!r.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(t){switch(t){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},a.fromTypedArray=function(t){return t instanceof Int8Array?a.BYTE:t instanceof Uint8Array?a.UNSIGNED_BYTE:t instanceof Int16Array?a.SHORT:t instanceof Uint16Array?a.UNSIGNED_SHORT:t instanceof Float32Array?a.FLOAT:t instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(t){return e(t)&&(t===a.BYTE||t===a.UNSIGNED_BYTE||t===a.SHORT||t===a.UNSIGNED_SHORT||t===a.FLOAT||t===a.DOUBLE)},a.createTypedArray=function(t,e){switch(t){case a.BYTE:return new Int8Array(e);case a.UNSIGNED_BYTE:return new Uint8Array(e);case a.SHORT:return new Int16Array(e);case a.UNSIGNED_SHORT:return new Uint16Array(e);case a.FLOAT:return new Float32Array(e);case a.DOUBLE:return new Float64Array(e);default:throw new n("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(e,r,i,o){switch(i=t(i,0),o=t(o,(r.byteLength-i)/a.getSizeInBytes(e)),e){case a.BYTE:return new Int8Array(r,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(r,i,o);case a.SHORT:return new Int16Array(r,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(r,i,o);case a.FLOAT:return new Float32Array(r,i,o);case a.DOUBLE:return new Float64Array(r,i,o);default:throw new n("componentDatatype is not a valid value.")}},i(a)}),define("Core/GeometryType",["./freezeObject"],function(t){"use strict";var e={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return t(e)}),define("Core/PrimitiveType",["./freezeObject"],function(t){"use strict";var e={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(t){return t===e.POINTS||t===e.LINES||t===e.LINE_LOOP||t===e.LINE_STRIP||t===e.TRIANGLES||t===e.TRIANGLE_STRIP||t===e.TRIANGLE_FAN}};return t(e)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(t,e,n,r,i){"use strict";var a=function(e){e=t(e,t.EMPTY_OBJECT),this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=t(e.primitiveType,i.TRIANGLES),this.boundingSphere=e.boundingSphere,this.geometryType=t(e.geometryType,r.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(t){var r=-1;for(var i in t.attributes)if(t.attributes.hasOwnProperty(i)&&e(t.attributes[i])&&e(t.attributes[i].values)){var a=t.attributes[i],o=a.values.length/a.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=t(e.normalize,!1),this.values=e.values +};return e}),define("Core/GeometryAttributes",["./defaultValue"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.position=e.position,this.normal=e.normal,this.st=e.st,this.binormal=e.binormal,this.tangent=e.tangent,this.color=e.color};return e}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(t){switch(t){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(e){return t(e)&&(e===i.UNSIGNED_BYTE||e===i.UNSIGNED_SHORT||e===i.UNSIGNED_INT)},i.createTypedArray=function(t,e){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e):new Uint16Array(e)},i.createTypedArrayFromArrayBuffer=function(t,e,n,i){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e,n,i):new Uint16Array(e,n,i)},n(i)}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e){e=t(e,t.EMPTY_OBJECT),this.position=t(e.position,!1),this.normal=t(e.normal,!1),this.st=t(e.st,!1),this.binormal=t(e.binormal,!1),this.tangent=t(e.tangent,!1),this.color=t(e.color,!1)};return i.POSITION_ONLY=r(new i({position:!0})),i.POSITION_AND_NORMAL=r(new i({position:!0,normal:!0})),i.POSITION_NORMAL_AND_ST=r(new i({position:!0,normal:!0,st:!0})),i.POSITION_AND_ST=r(new i({position:!0,st:!0})),i.POSITION_AND_COLOR=r(new i({position:!0,color:!0})),i.ALL=r(new i({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),i.DEFAULT=i.POSITION_NORMAL_AND_ST,i.packedLength=6,i.pack=function(e,n,r){r=t(r,0),n[r++]=e.position?1:0,n[r++]=e.normal?1:0,n[r++]=e.st?1:0,n[r++]=e.binormal?1:0,n[r++]=e.tangent?1:0,n[r++]=e.color?1:0},i.unpack=function(n,r,a){return r=t(r,0),e(a)||(a=new i),a.position=1===n[r++],a.normal=1===n[r++],a.st=1===n[r++],a.binormal=1===n[r++],a.tangent=1===n[r++],a.color=1===n[r++],a},i.clone=function(t,n){return e(t)?(e(n)||(n=new i),n.position=t.position,n.normal=t.normal,n.st=t.st,n.binormal=t.binormal,n.tangent=t.tangent,n.color=t.color,n):void 0},i}),define("Core/EllipsoidGeometry",["./BoundingSphere","./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType","./VertexFormat"],function(t,e,n,r,i,a,o,u,s,c,l,f,h,d,m){"use strict";var y=new n,p=new n,v=new n,w=new n,E=new n,x=new n(1,1,1),g=Math.cos,S=Math.sin,M=function(t){t=i(t,i.EMPTY_OBJECT);var e=i(t.radii,x),r=i(t.stackPartitions,64),a=i(t.slicePartitions,64),o=i(t.vertexFormat,m.DEFAULT);this._radii=n.clone(e),this._stackPartitions=r,this._slicePartitions=a,this._vertexFormat=m.clone(o),this._workerName="createEllipsoidGeometry"};M.packedLength=n.packedLength+m.packedLength+2,M.pack=function(t,e,r){r=i(r,0),n.pack(t._radii,e,r),r+=n.packedLength,m.pack(t._vertexFormat,e,r),r+=m.packedLength,e[r++]=t._stackPartitions,e[r]=t._slicePartitions};var _=new n,O=new m,z={radii:_,vertexFormat:O,stackPartitions:void 0,slicePartitions:void 0};return M.unpack=function(t,e,r){e=i(e,0);var o=n.unpack(t,e,_);e+=n.packedLength;var u=m.unpack(t,e,O);e+=m.packedLength;var s=t[e++],c=t[e];return a(r)?(r._radii=n.clone(o,r._radii),r._vertexFormat=m.clone(u,r._vertexFormat),r._stackPartitions=s,r._slicePartitions=c,r):(z.stackPartitions=s,z.slicePartitions=c,new M(z))},M.createGeometry=function(i){var a,o,m=i._radii,x=u.fromCartesian3(m),M=i._vertexFormat,_=i._slicePartitions+1,O=i._stackPartitions+1,z=O*_,T=new Float64Array(3*z),N=6*(_-1)*(O-1),I=f.createTypedArray(z,N),R=M.normal?new Float32Array(3*z):void 0,P=M.tangent?new Float32Array(3*z):void 0,b=M.binormal?new Float32Array(3*z):void 0,A=M.st?new Float32Array(2*z):void 0,C=new Array(_),L=new Array(_),q=0;for(a=0;_>a;a++){var U=h.TWO_PI*a/(_-1);C[a]=g(U),L[a]=S(U),T[q++]=0,T[q++]=0,T[q++]=m.z}for(a=1;O-1>a;a++){var D=Math.PI*a/(O-1),B=S(D),F=m.x*B,k=m.y*B,W=m.z*g(D);for(o=0;_>o;o++)T[q++]=C[o]*F,T[q++]=L[o]*k,T[q++]=W}for(a=0;_>a;a++)T[q++]=0,T[q++]=0,T[q++]=-m.z;var G=new l;M.position&&(G.position=new c({componentDatatype:r.DOUBLE,componentsPerAttribute:3,values:T}));var V=0,Y=0,j=0,Z=0;if(M.st||M.normal||M.tangent||M.binormal){for(a=0;z>a;a++){var H=n.fromArray(T,3*a,y),X=x.geodeticSurfaceNormal(H,p);if(M.st){var K=e.negate(X,E);e.magnitude(K)<h.EPSILON6&&(q=3*(a+_*Math.floor(.5*O)),q>T.length&&(q=3*(a-_*Math.floor(.5*O))),n.fromArray(T,q,K),x.geodeticSurfaceNormal(K,K),e.negate(K,K)),A[V++]=Math.atan2(K.y,K.x)/h.TWO_PI+.5,A[V++]=Math.asin(X.z)/Math.PI+.5}if(M.normal&&(R[Y++]=X.x,R[Y++]=X.y,R[Y++]=X.z),M.tangent||M.binormal){var J=v;if(_>a||a>z-_-1?(n.cross(n.UNIT_X,X,J),n.normalize(J,J)):(n.cross(n.UNIT_Z,X,J),n.normalize(J,J)),M.tangent&&(P[j++]=J.x,P[j++]=J.y,P[j++]=J.z),M.binormal){var Q=n.cross(X,J,w);n.normalize(Q,Q),b[Z++]=Q.x,b[Z++]=Q.y,b[Z++]=Q.z}}}M.st&&(G.st=new c({componentDatatype:r.FLOAT,componentsPerAttribute:2,values:A})),M.normal&&(G.normal=new c({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:R})),M.tangent&&(G.tangent=new c({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:P})),M.binormal&&(G.binormal=new c({componentDatatype:r.FLOAT,componentsPerAttribute:3,values:b}))}for(q=0,a=0;O>a;a++){var $=a*_,te=(a+1)*_;for(o=0;_-1>o;o++)I[q++]=te+o,I[q++]=te+o+1,I[q++]=$+o+1,I[q++]=te+o,I[q++]=$+o+1,I[q++]=$+o}return new s({attributes:G,indices:I,primitiveType:d.TRIANGLES,boundingSphere:t.fromEllipsoid(x)})},M}),define("Core/SphereGeometry",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./EllipsoidGeometry","./VertexFormat"],function(t,e,n,r,i,a){"use strict";var o=function(n){var r=e(n.radius,1),a=new t(r,r,r),o={radii:a,stackPartitions:n.stackPartitions,slicePartitions:n.slicePartitions,vertexFormat:n.vertexFormat};this._ellipsoidGeometry=new i(o),this._workerName="createSphereGeometry"};o.packedLength=i.packedLength,o.pack=function(t,e,n){i.pack(t._ellipsoidGeometry,e,n)};var u=new i,s={radius:void 0,radii:new t,vertexFormat:new a,stackPartitions:void 0,slicePartitions:void 0};return o.unpack=function(e,r,c){var l=i.unpack(e,r,u);return s.vertexFormat=a.clone(l._vertexFormat,s.vertexFormat),s.stackPartitions=l._stackPartitions,s.slicePartitions=l._slicePartitions,n(c)?(t.clone(l._radii,s.radii),c._ellipsoidGeometry=new i(s),c):(s.radius=l._radii.x,new o(s))},o.createGeometry=function(t){return i.createGeometry(t._ellipsoidGeometry)},o}),define("Workers/createSphereGeometry",["../Core/defined","../Core/SphereGeometry"],function(t,e){"use strict";return function(n,r){return t(r)&&(n=e.unpack(n,r)),e.createGeometry(n)}})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createSphereOutlineGeometry.js b/libs/Cesium/Workers/createSphereOutlineGeometry.js new file mode 100644 index 0000000000..8eba0bd709 --- /dev/null +++ b/libs/Cesium/Workers/createSphereOutlineGeometry.js @@ -0,0 +1,60 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var t=function(t){return void 0!==t};return t}),define("Core/freezeObject",["./defined"],function(t){"use strict";var e=Object.freeze;return t(e)||(e=function(t){return t}),e}),define("Core/defaultValue",["./freezeObject"],function(t){"use strict";var e=function(t,e){return void 0!==t?t:e};return e.EMPTY_OBJECT=t({}),e}),define("Core/DeveloperError",["./defined"],function(t){"use strict";var e=function(t){this.name="DeveloperError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e.throwInstantiationError=function(){throw new e("This function defines an interface and should not be called directly.")},e}),define("ThirdParty/mersenne-twister",[],function(){var t=function(t){void 0==t&&(t=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(t)};return t.prototype.init_genrand=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&t)>>>16)<<16)+1812433253*(65535&t)+this.mti,this.mt[this.mti]>>>=0}},t.prototype.genrand_int32=function(){var t,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^t>>>1^e[1&t];for(;n<this.N-1;n++)t=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^t>>>1^e[1&t];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^e[1&t],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=2636928640&t<<7,t^=4022730752&t<<15,t^=t>>>18,t>>>0},t.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},t}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(t,e){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(t){return t>0?1:0>t?-1:0},n.signNotZero=function(t){return 0>t?-1:1},n.toSNorm=function(t){return Math.round(255*(.5*n.clamp(t,-1,1)+.5))},n.fromSNorm=function(t){return 2*(n.clamp(t,0,255)/255)-1},n.sinh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e-n)},n.cosh=function(t){var e=Math.pow(Math.E,t),n=Math.pow(Math.E,-1*t);return.5*(e+n)},n.lerp=function(t,e,n){return(1-n)*t+n*e},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(t){return t*n.RADIANS_PER_DEGREE},n.toDegrees=function(t){return t*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(t){var e=n.TWO_PI,r=t-Math.floor(t/e)*e;return r<-Math.PI?r+e:r>=Math.PI?r-e:r},n.negativePiToPi=function(t){return n.zeroToTwoPi(t+n.PI)-n.PI},n.zeroToTwoPi=function(t){var e=n.mod(t,n.TWO_PI);return Math.abs(e)<n.EPSILON14&&Math.abs(t)>n.EPSILON14?n.TWO_PI:e},n.mod=function(t,e){return(t%e+e)%e},n.equalsEpsilon=function(t,n,r,i){i=e(i,r);var a=Math.abs(t-n);return i>=a||a<=r*Math.max(Math.abs(t),Math.abs(n))};var r=[1];n.factorial=function(t){var e=r.length;if(t>=e)for(var n=r[e-1],i=e;t>=i;i++)r.push(n*i);return r[t]},n.incrementWrap=function(t,n,r){return r=e(r,0),++t,t>n&&(t=r),t},n.isPowerOfTwo=function(t){return 0!==t&&0===(t&t-1)},n.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t},n.clamp=function(t,e,n){return e>t?e:t>n?n:t};var i=new t;return n.setRandomNumberSeed=function(e){i=new t(e)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(t){return Math.acos(n.clamp(t,-1,1))},n.asinClamped=function(t){return Math.asin(n.clamp(t,-1,1))},n.chordLength=function(t,e){return 2*e*Math.sin(.5*t)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0)};a.fromSpherical=function(n,r){e(r)||(r=new a);var i=n.clock,o=n.cone,u=t(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(t,n,r,i){return e(i)?(i.x=t,i.y=n,i.z=r,i):new a(t,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n):new a(t.x,t.y,t.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r]=e.z},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(t,e){a.normalize(t,s),a.normalize(e,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,l);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Z,e):n.y<=n.z?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_Z,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)},a.cross=function(t,e,n){var r=t.x,i=t.y,a=t.z,o=e.x,u=e.y,s=e.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(t,e,n,r,o){var u=i.toRadians(t),s=i.toRadians(e);return a.fromRadians(u,s,n,r,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=t(i,0);var s=e(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),e(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o++)r[o]=i.toRadians(t[o]);return a.fromRadiansArray(r,e,n)},a.fromRadiansArray=function(t,n,r){var i=t.length;e(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=t[o],s=t[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(t,e,n){for(var r=new Array(t.length),o=0;o<t.length;o+=3)r[o]=i.toRadians(t[o]),r[o+1]=i.toRadians(t[o+1]),r[o+2]=t[o+2];return a.fromRadiansArrayHeights(r,e,n)},a.fromRadiansArrayHeights=function(t,n,r){var i=t.length;e(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=t[o],s=t[o+1],c=t[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r){this.longitude=t(e,0),this.latitude=t(n,0),this.height=t(r,0)};return a.fromRadians=function(n,r,i,o){return i=t(i,0),e(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(t,e,n,r){return t=i.toRadians(t),e=i.toRadians(e),a.fromRadians(t,e,n,r)},a.clone=function(t,n){return e(t)?e(n)?(n.longitude=t.longitude,n.latitude=t.latitude,n.height=t.height,n):new a(t.longitude,t.latitude,t.height):void 0},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.longitude===n.longitude&&t.latitude===n.latitude&&t.height===n.height},a.equalsEpsilon=function(t,n,r){return t===n||e(t)&&e(n)&&Math.abs(t.longitude-n.longitude)<=r&&Math.abs(t.latitude-n.latitude)<=r&&Math.abs(t.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e){return a.equalsEpsilon(this,t,e)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(t){"use strict";var e={},n=function(n,r){t(e[n])||(e[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(t){"use strict";var e=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(t){return!1}}(),n=Object.defineProperties;return e&&t(n)||(n=function(t){return t}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";function s(e,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),e._radii=new t(r,i,a),e._radiiSquared=new t(r*r,i*i,a*a),e._radiiToTheFourth=new t(r*r*r*r,i*i*i*i,a*a*a*a),e._oneOverRadii=new t(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),e._oneOverRadiiSquared=new t(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),e._minimumRadius=Math.min(r,i,a),e._maximumRadius=Math.max(r,i,a),e._centerToleranceSquared=u.EPSILON1}var c=function(t,e,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,t,e,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(e,n){if(!r(e))return void 0;var i=e._radii;return r(n)?(t.clone(i,n._radii),t.clone(e._radiiSquared,n._radiiSquared),t.clone(e._radiiToTheFourth,n._radiiToTheFourth),t.clone(e._oneOverRadii,n._oneOverRadii),t.clone(e._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=e._minimumRadius,n._maximumRadius=e._maximumRadius,n._centerToleranceSquared=e._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(t,e){return r(e)||(e=new c),r(t)?(s(e,t.x,t.y,t.z),e):e},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(t){return c.clone(this,t)},c.packedLength=t.packedLength,c.pack=function(e,r,i){i=n(i,0),t.pack(e._radii,r,i)},c.unpack=function(e,r,i){r=n(r,0);var a=t.unpack(e,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=t.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(e,n){var i=e.longitude,a=e.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new t),n.x=u,n.y=s,n.z=c,t.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(e,n){return r(n)||(n=new t),n=t.multiplyComponents(e,this._oneOverRadiiSquared,n),t.normalize(n,n)};var l=new t,f=new t;c.prototype.cartographicToCartesian=function(e,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(e,i),t.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(t.dot(i,a));return t.divideByScalar(a,o,a),t.multiplyByScalar(i,e.height,i),r(n)||(n=new t),t.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;i++)e[i]=this.cartographicToCartesian(t[i],e[i]);return e};var h=new t,d=new t,m=new t;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,d);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=t.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(t.dot(s,n))*t.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new e(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(t,e){var n=t.length;r(e)?e.length=n:e=new Array(n);for(var i=0;n>i;++i)e[i]=this.cartesianToCartographic(t[i],e[i]);return e};var y=new t,p=new t;return c.prototype.scaleToGeodeticSurface=function(e,n){var i=e.x,a=e.y,o=e.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,m=o*o*f*f,v=h+d+m,w=Math.sqrt(1/v),E=t.multiplyByScalar(e,w,y);if(v<this._centerToleranceSquared)return isFinite(w)?t.clone(E,n):void 0;var g=this._oneOverRadiiSquared,x=g.x,S=g.y,M=g.z,z=p;z.x=2*E.x*x,z.y=2*E.y*S,z.z=2*E.z*M;var _,O,T,I,N,R,P,b,A,C,L,q=(1-w)*t.magnitude(e)/(.5*t.magnitude(z)),U=0;do{q-=U,T=1/(1+q*x),I=1/(1+q*S),N=1/(1+q*M),R=T*T,P=I*I,b=N*N,A=R*T,C=P*I,L=b*N,_=h*R+d*P+m*b-1,O=h*A*x+d*C*S+m*L*M;var D=-2*O;U=_/D}while(Math.abs(_)>u.EPSILON12);return r(n)?(n.x=i*T,n.y=a*I,n.z=o*N,n):new t(i*T,a*I,o*N)},c.prototype.scaleToGeocentricSurface=function(e,n){r(n)||(n=new t);var i=e.x,a=e.y,o=e.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return t.multiplyByScalar(e,s,n)},c.prototype.transformPositionToScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(e,n){return r(n)||(n=new t),t.multiplyComponents(e,this._radii,n)},c.prototype.equals=function(e){return this===e||r(e)&&t.equals(this._radii,e._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(t,e,n,r,i,a,o){"use strict";var u=function(t){this._ellipsoid=n(t,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(e,n){var i=this._semimajorAxis,a=e.longitude*i,o=e.latitude*i,u=e.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new t(a,o,u)},u.prototype.unproject=function(t,n){var i=this._oneOverSemimajorAxis,a=t.x*i,o=t.y*i,u=t.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new e(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(t){"use strict";var e={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return t(e)}),define("Core/Interval",["./defaultValue"],function(t){"use strict";var e=function(e,n){this.start=t(e,0),this.stop=t(n,0)};return e}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i){"use strict";var a=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)};a.fromElements=function(t,n,r,i,o){return e(o)?(o.x=t,o.y=n,o.z=r,o.w=i,o):new a(t,n,r,i)},a.fromColor=function(t,n){return e(n)?(n.x=t.red,n.y=t.green,n.z=t.blue,n.w=t.alpha,n):new a(t.red,t.green,t.blue,t.alpha)},a.clone=function(t,n){return e(t)?e(n)?(n.x=t.x,n.y=t.y,n.z=t.z,n.w=t.w,n):new a(t.x,t.y,t.z,t.w):void 0},a.packedLength=4,a.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},a.unpack=function(n,r,i){return r=t(r,0),e(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z,t.w)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z,t.w)},a.minimumByComponent=function(t,e,n){return n.x=Math.min(t.x,e.x),n.y=Math.min(t.y,e.y),n.z=Math.min(t.z,e.z),n.w=Math.min(t.w,e.w),n},a.maximumByComponent=function(t,e,n){return n.x=Math.max(t.x,e.x),n.y=Math.max(t.y,e.y),n.z=Math.max(t.z,e.z),n.w=Math.max(t.w,e.w),n},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var n=a.magnitude(t);return e.x=t.x/n,e.y=t.y/n,e.z=t.z/n,e.w=t.w/n,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z+t.w*e.w},a.multiplyComponents=function(t,e,n){return n.x=t.x*e.x,n.y=t.y*e.y,n.z=t.z*e.z,n.w=t.w*e.w,n},a.add=function(t,e,n){return n.x=t.x+e.x,n.y=t.y+e.y,n.z=t.z+e.z,n.w=t.w+e.w,n},a.subtract=function(t,e,n){return n.x=t.x-e.x,n.y=t.y-e.y,n.z=t.z-e.z,n.w=t.w-e.w,n},a.multiplyByScalar=function(t,e,n){return n.x=t.x*e,n.y=t.y*e,n.z=t.z*e,n.w=t.w*e,n},a.divideByScalar=function(t,e,n){return n.x=t.x/e,n.y=t.y/e,n.z=t.z/e,n.w=t.w/e,n},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e.w=-t.w,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e.w=Math.abs(t.w),e};var u=new a;a.lerp=function(t,e,n,r){return a.multiplyByScalar(e,n,u),r=a.multiplyByScalar(t,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(t,e){var n=a.normalize(t,s);return a.abs(n,n),e=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_W,e):n.z<=n.w?a.clone(a.UNIT_Z,e):a.clone(a.UNIT_W,e)},a.equals=function(t,n){return t===n||e(t)&&e(n)&&t.x===n.x&&t.y===n.y&&t.z===n.z&&t.w===n.w},a.equalsArray=function(t,e,n){return t.x===e[n]&&t.y===e[n+1]&&t.z===e[n+2]&&t.w===e[n+3]},a.equalsEpsilon=function(t,n,r,a){return t===n||e(t)&&e(n)&&i.equalsEpsilon(t.x,n.x,r,a)&&i.equalsEpsilon(t.y,n.y,r,a)&&i.equalsEpsilon(t.z,n.z,r,a)&&i.equalsEpsilon(t.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,n){return a.equalsEpsilon(this,t,e,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r,i,a){"use strict";function o(t){for(var e=0,n=0;9>n;++n){var r=t[n];e+=r*r}return Math.sqrt(e)}function u(t){for(var e=0,n=0;3>n;++n){var r=t[c.getElementIndex(d[n],h[n])];e+=2*r*r}return Math.sqrt(e)}function s(t,e){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(t[c.getElementIndex(d[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=h[i],m=d[i];if(Math.abs(t[c.getElementIndex(m,f)])>n){var y,p=t[c.getElementIndex(m,m)],v=t[c.getElementIndex(f,f)],w=t[c.getElementIndex(m,f)],E=(p-v)/2/w;y=0>E?-1/(-E+Math.sqrt(1+E*E)):1/(E+Math.sqrt(1+E*E)),s=1/Math.sqrt(1+y*y),l=y*s}return e=c.clone(c.IDENTITY,e),e[c.getElementIndex(f,f)]=e[c.getElementIndex(m,m)]=s,e[c.getElementIndex(m,f)]=l,e[c.getElementIndex(f,m)]=-l,e}var c=function(t,n,r,i,a,o,u,s,c){this[0]=e(t,0),this[1]=e(i,0),this[2]=e(u,0),this[3]=e(n,0),this[4]=e(a,0),this[5]=e(s,0),this[6]=e(r,0),this[7]=e(o,0),this[8]=e(c,0)};c.packedLength=9,c.pack=function(t,n,r){r=e(r,0),n[r++]=t[0],n[r++]=t[1],n[r++]=t[2],n[r++]=t[3],n[r++]=t[4],n[r++]=t[5],n[r++]=t[6],n[r++]=t[7],n[r++]=t[8]},c.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r++],i[1]=t[r++],i[2]=t[r++],i[3]=t[r++],i[4]=t[r++],i[5]=t[r++],i[6]=t[r++],i[7]=t[r++],i[8]=t[r++],i},c.clone=function(t,e){return n(t)?n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):new c(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]):void 0},c.fromArray=function(t,r,i){return r=e(r,0),n(i)||(i=new c),i[0]=t[r],i[1]=t[r+1],i[2]=t[r+2],i[3]=t[r+3],i[4]=t[r+4],i[5]=t[r+5],i[6]=t[r+6],i[7]=t[r+7],i[8]=t[r+8],i},c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},c.fromQuaternion=function(t,e){var r=t.x*t.x,i=t.x*t.y,a=t.x*t.z,o=t.x*t.w,u=t.y*t.y,s=t.y*t.z,l=t.y*t.w,f=t.z*t.z,h=t.z*t.w,d=t.w*t.w,m=r-u-f+d,y=2*(i-h),p=2*(a+l),v=2*(i+h),w=-r+u-f+d,E=2*(s-o),g=2*(a-l),x=2*(s+o),S=-r-u+f+d;return n(e)?(e[0]=m,e[1]=v,e[2]=g,e[3]=y,e[4]=w,e[5]=x,e[6]=p,e[7]=E,e[8]=S,e):new c(m,y,p,v,w,E,g,x,S)},c.fromScale=function(t,e){return n(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=t.y,e[5]=0,e[6]=0,e[7]=0,e[8]=t.z,e):new c(t.x,0,0,0,t.y,0,0,0,t.z)},c.fromUniformScale=function(t,e){return n(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=t,e[5]=0,e[6]=0,e[7]=0,e[8]=t,e):new c(t,0,0,0,t,0,0,0,t)},c.fromCrossProduct=function(t,e){return n(e)?(e[0]=0,e[1]=t.z,e[2]=-t.y,e[3]=-t.z,e[4]=0,e[5]=t.x,e[6]=t.y,e[7]=-t.x,e[8]=0,e):new c(0,-t.z,t.y,t.z,0,-t.x,-t.y,t.x,0)},c.fromRotationX=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=r,e[5]=i,e[6]=0,e[7]=-i,e[8]=r,e):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=0,e[2]=-i,e[3]=0,e[4]=1,e[5]=0,e[6]=i,e[7]=0,e[8]=r,e):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(t,e){var r=Math.cos(t),i=Math.sin(t);return n(e)?(e[0]=r,e[1]=i,e[2]=0,e[3]=-i,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(t,e){return n(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8]]},c.getElementIndex=function(t,e){return 3*t+e},c.getColumn=function(t,e,n){var r=3*e,i=t[r],a=t[r+1],o=t[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=3*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(t,e,n){var r=t[e],i=t[e+3],a=t[e+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+3]=n.y,r[e+6]=n.z,r};var l=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],l)),n.y=t.magnitude(t.fromElements(e[3],e[4],e[5],l)),n.z=t.magnitude(t.fromElements(e[6],e[7],e[8],l)),n};var f=new t;c.getMaximumScale=function(e){return c.getScale(e,f),t.maximumComponent(f)},c.multiply=function(t,e,n){var r=t[0]*e[0]+t[3]*e[1]+t[6]*e[2],i=t[1]*e[0]+t[4]*e[1]+t[7]*e[2],a=t[2]*e[0]+t[5]*e[1]+t[8]*e[2],o=t[0]*e[3]+t[3]*e[4]+t[6]*e[5],u=t[1]*e[3]+t[4]*e[4]+t[7]*e[5],s=t[2]*e[3]+t[5]*e[4]+t[8]*e[5],c=t[0]*e[6]+t[3]*e[7]+t[6]*e[8],l=t[1]*e[6]+t[4]*e[7]+t[7]*e[8],f=t[2]*e[6]+t[5]*e[7]+t[8]*e[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[3]*i+t[6]*a,u=t[1]*r+t[4]*i+t[7]*a,s=t[2]*r+t[5]*i+t[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n},c.multiplyByScale=function(t,e,n){return n[0]=t[0]*e.x,n[1]=t[1]*e.x,n[2]=t[2]*e.x,n[3]=t[3]*e.y,n[4]=t[4]*e.y,n[5]=t[5]*e.y,n[6]=t[6]*e.z,n[7]=t[7]*e.z,n[8]=t[8]*e.z,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e},c.transpose=function(t,e){var n=t[0],r=t[3],i=t[6],a=t[1],o=t[4],u=t[7],s=t[2],c=t[5],l=t[8];return e[0]=n,e[1]=r,e[2]=i,e[3]=a,e[4]=o,e[5]=u,e[6]=s,e[7]=c,e[8]=l,e};var h=[1,0,0],d=[2,2,1],m=new c,y=new c;return c.computeEigenDecomposition=function(t,e){var r=a.EPSILON20,i=10,l=0,f=0;n(e)||(e={});for(var h=e.unitary=c.clone(c.IDENTITY,e.unitary),d=e.diagonal=c.clone(t,e.diagonal),p=r*o(d);i>f&&u(d)>p;)s(d,m),c.transpose(m,y),c.multiply(d,m,d),c.multiply(y,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e},c.determinant=function(t){var e=t[0],n=t[3],r=t[6],i=t[1],a=t[4],o=t[7],u=t[2],s=t[5],c=t[8];return e*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(t,e){var n=t[0],i=t[1],o=t[2],u=t[3],s=t[4],l=t[5],f=t[6],h=t[7],d=t[8],m=c.determinant(t);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");e[0]=s*d-h*l,e[1]=h*o-i*d,e[2]=i*l-s*o,e[3]=f*l-u*d,e[4]=n*d-f*o,e[5]=u*o-n*l,e[6]=u*h-f*s,e[7]=f*i-n*h,e[8]=n*s-u*i;var y=1/m;return c.multiplyByScalar(e,y,e)},c.equals=function(t,e){return t===e||n(t)&&n(e)&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]},c.equalsEpsilon=function(t,e,r){return t===e||n(t)&&n(e)&&Math.abs(t[0]-e[0])<=r&&Math.abs(t[1]-e[1])<=r&&Math.abs(t[2]-e[2])<=r&&Math.abs(t[3]-e[3])<=r&&Math.abs(t[4]-e[4])<=r&&Math.abs(t[5]-e[5])<=r&&Math.abs(t[6]-e[6])<=r&&Math.abs(t[7]-e[7])<=r&&Math.abs(t[8]-e[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(t){"use strict";var e=function(t){this.name="RuntimeError",this.message=t;var e;try{throw new Error}catch(n){e=n.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(t,e,n,r,i,a,o,u,s){"use strict";var c=function(t,e,r,i,a,o,u,s,c,l,f,h,d,m,y,p){this[0]=n(t,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(e,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(y,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(p,0)};c.packedLength=16,c.pack=function(t,e,r){r=n(r,0),e[r++]=t[0],e[r++]=t[1],e[r++]=t[2],e[r++]=t[3],e[r++]=t[4],e[r++]=t[5],e[r++]=t[6],e[r++]=t[7],e[r++]=t[8],e[r++]=t[9],e[r++]=t[10],e[r++]=t[11],e[r++]=t[12],e[r++]=t[13],e[r++]=t[14],e[r]=t[15]},c.unpack=function(t,e,i){return e=n(e,0),r(i)||(i=new c),i[0]=t[e++],i[1]=t[e++],i[2]=t[e++],i[3]=t[e++],i[4]=t[e++],i[5]=t[e++],i[6]=t[e++],i[7]=t[e++],i[8]=t[e++],i[9]=t[e++],i[10]=t[e++],i[11]=t[e++],i[12]=t[e++],i[13]=t[e++],i[14]=t[e++],i[15]=t[e],i},c.clone=function(t,e){return r(t)?r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):new c(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(t,e){return c.clone(t,e)},c.fromRowMajorArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e):new c(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},c.fromRotationTranslation=function(e,i,a){return i=n(i,t.ZERO),r(a)?(a[0]=e[0],a[1]=e[1],a[2]=e[2],a[3]=0,a[4]=e[3],a[5]=e[4],a[6]=e[5],a[7]=0,a[8]=e[6],a[9]=e[7],a[10]=e[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(e[0],e[3],e[6],i.x,e[1],e[4],e[7],i.y,e[2],e[5],e[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(t,e,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=e.x*e.x,l=e.x*e.y,f=e.x*e.z,h=e.x*e.w,d=e.y*e.y,m=e.y*e.z,y=e.y*e.w,p=e.z*e.z,v=e.z*e.w,w=e.w*e.w,E=s-d-p+w,g=2*(l-v),x=2*(f+y),S=2*(l+v),M=-s+d-p+w,z=2*(m-h),_=2*(f-y),O=2*(m+h),T=-s-d+p+w;return i[0]=E*a,i[1]=S*a,i[2]=_*a,i[3]=0,i[4]=g*o,i[5]=M*o,i[6]=O*o,i[7]=0,i[8]=x*u,i[9]=z*u,i[10]=T*u,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,i},c.fromTranslation=function(t,e){return c.fromRotationTranslation(u.IDENTITY,t,e)},c.fromScale=function(t,e){return r(e)?(e[0]=t.x,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t.y,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t.z,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t.x,0,0,0,0,t.y,0,0,0,0,t.z,0,0,0,0,1)},c.fromUniformScale=function(t,e){return r(e)?(e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e):new c(t,0,0,0,0,t,0,0,0,0,t,0,0,0,0,1)};var l=new t,f=new t,h=new t;c.fromCamera=function(e,n){var i=e.eye,a=e.target,o=e.up;t.normalize(t.subtract(a,i,l),l),t.normalize(t.cross(l,o,f),f),t.normalize(t.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,y=l.y,p=l.z,v=h.x,w=h.y,E=h.z,g=i.x,x=i.y,S=i.z,M=u*-g+s*-x+d*-S,z=v*-g+w*-x+E*-S,_=m*g+y*x+p*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=w,n[6]=-y,n[7]=0,n[8]=d,n[9]=E,n[10]=-p,n[11]=0,n[12]=M,n[13]=z,n[14]=_,n[15]=1,n):new c(u,s,d,M,v,w,E,z,-m,-y,-p,_,0,0,0,1)},c.computePerspectiveFieldOfView=function(t,e,n,r,i){var a=Math.tan(.5*t),o=1/a,u=o/e,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(t,e,n,r,i,a,o){var u=1/(e-t),s=1/(r-n),c=1/(a-i),l=-(e+t)*u,f=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o +},c.computePerspectiveOffCenter=function(t,e,n,r,i,a,o){var u=2*i/(e-t),s=2*i/(r-n),c=(e+t)/(e-t),l=(r+n)/(r-n),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(t,e,n,r,i,a){var o=2*i/(e-t),u=2*i/(r-n),s=(e+t)/(e-t),c=(r+n)/(r-n),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(t,e,r,i){t=n(t,n.EMPTY_OBJECT);var a=n(t.x,0),o=n(t.y,0),u=n(t.width,0),s=n(t.height,0);e=n(e,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-e),h=c,d=l,m=f,y=a+c,p=o+l,v=e+f,w=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=y,i[13]=p,i[14]=v,i[15]=w,i},c.toArray=function(t,e){return r(e)?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e):[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},c.getElementIndex=function(t,e){return 4*t+e},c.getColumn=function(t,e,n){var r=4*e,i=t[r],a=t[r+1],o=t[r+2],u=t[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(t,e,n,r){r=c.clone(t,r);var i=4*e;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(t,e,n){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=t[15],n},c.getRow=function(t,e,n){var r=t[e],i=t[e+4],a=t[e+8],o=t[e+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(t,e,n,r){return r=c.clone(t,r),r[e]=n.x,r[e+4]=n.y,r[e+8]=n.z,r[e+12]=n.w,r};var d=new t;c.getScale=function(e,n){return n.x=t.magnitude(t.fromElements(e[0],e[1],e[2],d)),n.y=t.magnitude(t.fromElements(e[4],e[5],e[6],d)),n.z=t.magnitude(t.fromElements(e[8],e[9],e[10],d)),n};var m=new t;c.getMaximumScale=function(e){return c.getScale(e,m),t.maximumComponent(m)},c.multiply=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[3],u=t[4],s=t[5],c=t[6],l=t[7],f=t[8],h=t[9],d=t[10],m=t[11],y=t[12],p=t[13],v=t[14],w=t[15],E=e[0],g=e[1],x=e[2],S=e[3],M=e[4],z=e[5],_=e[6],O=e[7],T=e[8],I=e[9],N=e[10],R=e[11],P=e[12],b=e[13],A=e[14],C=e[15],L=r*E+u*g+f*x+y*S,q=i*E+s*g+h*x+p*S,U=a*E+c*g+d*x+v*S,D=o*E+l*g+m*x+w*S,B=r*M+u*z+f*_+y*O,W=i*M+s*z+h*_+p*O,k=a*M+c*z+d*_+v*O,F=o*M+l*z+m*_+w*O,G=r*T+u*I+f*N+y*R,V=i*T+s*I+h*N+p*R,Y=a*T+c*I+d*N+v*R,j=o*T+l*I+m*N+w*R,H=r*P+u*b+f*A+y*C,Z=i*P+s*b+h*A+p*C,X=a*P+c*b+d*A+v*C,K=o*P+l*b+m*A+w*C;return n[0]=L,n[1]=q,n[2]=U,n[3]=D,n[4]=B,n[5]=W,n[6]=k,n[7]=F,n[8]=G,n[9]=V,n[10]=Y,n[11]=j,n[12]=H,n[13]=Z,n[14]=X,n[15]=K,n},c.add=function(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n[4]=t[4]+e[4],n[5]=t[5]+e[5],n[6]=t[6]+e[6],n[7]=t[7]+e[7],n[8]=t[8]+e[8],n[9]=t[9]+e[9],n[10]=t[10]+e[10],n[11]=t[11]+e[11],n[12]=t[12]+e[12],n[13]=t[13]+e[13],n[14]=t[14]+e[14],n[15]=t[15]+e[15],n},c.subtract=function(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n[4]=t[4]-e[4],n[5]=t[5]-e[5],n[6]=t[6]-e[6],n[7]=t[7]-e[7],n[8]=t[8]-e[8],n[9]=t[9]-e[9],n[10]=t[10]-e[10],n[11]=t[11]-e[11],n[12]=t[12]-e[12],n[13]=t[13]-e[13],n[14]=t[14]-e[14],n[15]=t[15]-e[15],n},c.multiplyTransformation=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=t[12],d=t[13],m=t[14],y=e[0],p=e[1],v=e[2],w=e[4],E=e[5],g=e[6],x=e[8],S=e[9],M=e[10],z=e[12],_=e[13],O=e[14],T=r*y+o*p+c*v,I=i*y+u*p+l*v,N=a*y+s*p+f*v,R=r*w+o*E+c*g,P=i*w+u*E+l*g,b=a*w+s*E+f*g,A=r*x+o*S+c*M,C=i*x+u*S+l*M,L=a*x+s*S+f*M,q=r*z+o*_+c*O+h,U=i*z+u*_+l*O+d,D=a*z+s*_+f*O+m;return n[0]=T,n[1]=I,n[2]=N,n[3]=0,n[4]=R,n[5]=P,n[6]=b,n[7]=0,n[8]=A,n[9]=C,n[10]=L,n[11]=0,n[12]=q,n[13]=U,n[14]=D,n[15]=1,n},c.multiplyByMatrix3=function(t,e,n){var r=t[0],i=t[1],a=t[2],o=t[4],u=t[5],s=t[6],c=t[8],l=t[9],f=t[10],h=e[0],d=e[1],m=e[2],y=e[3],p=e[4],v=e[5],w=e[6],E=e[7],g=e[8],x=r*h+o*d+c*m,S=i*h+u*d+l*m,M=a*h+s*d+f*m,z=r*y+o*p+c*v,_=i*y+u*p+l*v,O=a*y+s*p+f*v,T=r*w+o*E+c*g,I=i*w+u*E+l*g,N=a*w+s*E+f*g;return n[0]=x,n[1]=S,n[2]=M,n[3]=0,n[4]=z,n[5]=_,n[6]=O,n[7]=0,n[8]=T,n[9]=I,n[10]=N,n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n},c.multiplyByTranslation=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=r*t[0]+i*t[4]+a*t[8]+t[12],u=r*t[1]+i*t[5]+a*t[9]+t[13],s=r*t[2]+i*t[6]+a*t[10]+t[14];return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=o,n[13]=u,n[14]=s,n[15]=t[15],n};var y=new t;c.multiplyByUniformScale=function(t,e,n){return y.x=e,y.y=e,y.z=e,c.multiplyByScale(t,y,n)},c.multiplyByScale=function(t,e,n){var r=e.x,i=e.y,a=e.z;return 1===r&&1===i&&1===a?c.clone(t,n):(n[0]=r*t[0],n[1]=r*t[1],n[2]=r*t[2],n[3]=0,n[4]=i*t[4],n[5]=i*t[5],n[6]=i*t[6],n[7]=0,n[8]=a*t[8],n[9]=a*t[9],n[10]=a*t[10],n[11]=0,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=1,n)},c.multiplyByVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t[0]*r+t[4]*i+t[8]*a+t[12]*o,s=t[1]*r+t[5]*i+t[9]*a+t[13]*o,c=t[2]*r+t[6]*i+t[10]*a+t[14]*o,l=t[3]*r+t[7]*i+t[11]*a+t[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a,u=t[1]*r+t[5]*i+t[9]*a,s=t[2]*r+t[6]*i+t[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(t,e,n){var r=e.x,i=e.y,a=e.z,o=t[0]*r+t[4]*i+t[8]*a+t[12],u=t[1]*r+t[5]*i+t[9]*a+t[13],s=t[2]*r+t[6]*i+t[10]*a+t[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(t,e,n){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*e,n[5]=t[5]*e,n[6]=t[6]*e,n[7]=t[7]*e,n[8]=t[8]*e,n[9]=t[9]*e,n[10]=t[10]*e,n[11]=t[11]*e,n[12]=t[12]*e,n[13]=t[13]*e,n[14]=t[14]*e,n[15]=t[15]*e,n},c.negate=function(t,e){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e[11]=-t[11],e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=-t[15],e},c.transpose=function(t,e){var n=t[1],r=t[2],i=t[3],a=t[6],o=t[7],u=t[11];return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[10]=t[10],e[11]=t[14],e[12]=i,e[13]=o,e[14]=u,e[15]=t[15],e},c.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e[9]=Math.abs(t[9]),e[10]=Math.abs(t[10]),e[11]=Math.abs(t[11]),e[12]=Math.abs(t[12]),e[13]=Math.abs(t[13]),e[14]=Math.abs(t[14]),e[15]=Math.abs(t[15]),e},c.equals=function(t,e){return t===e||r(t)&&r(e)&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[3]===e[3]&&t[7]===e[7]&&t[11]===e[11]&&t[15]===e[15]},c.equalsEpsilon=function(t,e,n){return t===e||r(t)&&r(e)&&Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n&&Math.abs(t[4]-e[4])<=n&&Math.abs(t[5]-e[5])<=n&&Math.abs(t[6]-e[6])<=n&&Math.abs(t[7]-e[7])<=n&&Math.abs(t[8]-e[8])<=n&&Math.abs(t[9]-e[9])<=n&&Math.abs(t[10]-e[10])<=n&&Math.abs(t[11]-e[11])<=n&&Math.abs(t[12]-e[12])<=n&&Math.abs(t[13]-e[13])<=n&&Math.abs(t[14]-e[14])<=n&&Math.abs(t[15]-e[15])<=n},c.getTranslation=function(t,e){return e.x=t[12],e.y=t[13],e.z=t[14],e},c.getRotation=function(t,e){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e};var p=new u,v=new u,w=new e,E=new e(0,0,0,1);return c.inverse=function(t,n){if(u.equalsEpsilon(c.getRotation(t,p),v,o.EPSILON7)&&e.equals(c.getRow(t,3,w),E))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-t[12],n[13]=-t[13],n[14]=-t[14],n[15]=1,n;var r=t[0],i=t[4],a=t[8],l=t[12],f=t[1],h=t[5],d=t[9],m=t[13],y=t[2],g=t[6],x=t[10],S=t[14],M=t[3],z=t[7],_=t[11],O=t[15],T=x*O,I=S*_,N=g*O,R=S*z,P=g*_,b=x*z,A=y*O,C=S*M,L=y*_,q=x*M,U=y*z,D=g*M,B=T*h+R*d+P*m-(I*h+N*d+b*m),W=I*f+A*d+q*m-(T*f+C*d+L*m),k=N*f+C*h+U*m-(R*f+A*h+D*m),F=b*f+L*h+D*d-(P*f+q*h+U*d),G=I*i+N*a+b*l-(T*i+R*a+P*l),V=T*r+C*a+L*l-(I*r+A*a+q*l),Y=R*r+A*i+D*l-(N*r+C*i+U*l),j=P*r+q*i+U*a-(b*r+L*i+D*a);T=a*m,I=l*d,N=i*m,R=l*h,P=i*d,b=a*h,A=r*m,C=l*f,L=r*d,q=a*f,U=r*h,D=i*f;var H=T*z+R*_+P*O-(I*z+N*_+b*O),Z=I*M+A*_+q*O-(T*M+C*_+L*O),X=N*M+C*z+U*O-(R*M+A*z+D*O),K=b*M+L*z+D*_-(P*M+q*z+U*_),J=N*x+b*S+I*g-(P*S+T*g+R*x),Q=L*S+T*y+C*x-(A*x+q*S+I*y),$=A*g+D*S+R*y-(U*S+N*y+C*g),te=U*x+P*y+q*g-(L*g+D*x+b*y),ee=r*B+i*W+a*k+l*F;if(Math.abs(ee)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return ee=1/ee,n[0]=B*ee,n[1]=W*ee,n[2]=k*ee,n[3]=F*ee,n[4]=G*ee,n[5]=V*ee,n[6]=Y*ee,n[7]=j*ee,n[8]=H*ee,n[9]=Z*ee,n[10]=X*ee,n[11]=K*ee,n[12]=J*ee,n[13]=Q*ee,n[14]=$*ee,n[15]=te*ee,n},c.inverseTransformation=function(t,e){var n=t[0],r=t[1],i=t[2],a=t[4],o=t[5],u=t[6],s=t[8],c=t[9],l=t[10],f=t[12],h=t[13],d=t[14],m=-n*f-r*h-i*d,y=-a*f-o*h-u*d,p=-s*f-c*h-l*d;return e[0]=n,e[1]=a,e[2]=s,e[3]=0,e[4]=r,e[5]=o,e[6]=c,e[7]=0,e[8]=i,e[9]=u,e[10]=l,e[11]=0,e[12]=m,e[13]=y,e[14]=p,e[15]=1,e},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(t){return c.clone(this,t)},c.prototype.equals=function(t){return c.equals(this,t)},c.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]&&t[9]===e[n+9]&&t[10]===e[n+10]&&t[11]===e[n+11]&&t[12]===e[n+12]&&t[13]===e[n+13]&&t[14]===e[n+14]&&t[15]===e[n+15]},c.prototype.equalsEpsilon=function(t,e){return c.equalsEpsilon(this,t,e)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(t,e,n,r){"use strict";var i=function(e,n){this.normal=t.clone(e),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-t.dot(r,n);return e(a)?(t.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new t;return i.fromCartesian4=function(n,r){var o=t.fromCartesian4(n,a),u=n.w;return e(r)?(t.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(e,n){return t.dot(e.normal,n)+e.distance},i.ORIGIN_XY_PLANE=r(new i(t.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(t.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(t.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(t,e,n,r,i,a,o,u){"use strict";var s=function(t,n,r,i){this.west=e(t,0),this.south=e(n,0),this.east=e(r,0),this.north=e(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(t,n,r){r=e(r,0),n[r++]=t.west,n[r++]=t.south,n[r++]=t.east,n[r]=t.north},s.unpack=function(t,r,i){return r=e(r,0),n(i)||(i=new s),i.west=t[r++],i.south=t[r++],i.east=t[r++],i.north=t[r],i},s.computeWidth=function(t){var e=t.east,n=t.west;return n>e&&(e+=u.TWO_PI),e-n},s.computeHeight=function(t){return t.north-t.south},s.fromDegrees=function(t,r,i,a,o){return t=u.toRadians(e(t,0)),r=u.toRadians(e(r,0)),i=u.toRadians(e(i,0)),a=u.toRadians(e(a,0)),n(o)?(o.west=t,o.south=r,o.east=i,o.north=a,o):new s(t,r,i,a)},s.fromCartographicArray=function(t,e){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=t.length;c>u;u++){var l=t[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(e)?(e.west=r,e.south=a,e.east=i,e.north=o,e):new s(r,a,i,o)},s.clone=function(t,e){return n(t)?n(e)?(e.west=t.west,e.south=t.south,e.east=t.east,e.north=t.north,e):new s(t.west,t.south,t.east,t.north):void 0},s.prototype.clone=function(t){return s.clone(this,t)},s.prototype.equals=function(t){return s.equals(this,t)},s.equals=function(t,e){return t===e||n(t)&&n(e)&&t.west===e.west&&t.south===e.south&&t.east===e.east&&t.north===e.north},s.prototype.equalsEpsilon=function(t,e){return n(t)&&Math.abs(this.west-t.west)<=e&&Math.abs(this.south-t.south)<=e&&Math.abs(this.east-t.east)<=e&&Math.abs(this.north-t.north)<=e},s.validate=function(){},s.southwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.south,r.height=0,r):new t(e.west,e.south)},s.northwest=function(e,r){return n(r)?(r.longitude=e.west,r.latitude=e.north,r.height=0,r):new t(e.west,e.north)},s.northeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.north,r.height=0,r):new t(e.east,e.north)},s.southeast=function(e,r){return n(r)?(r.longitude=e.east,r.latitude=e.south,r.height=0,r):new t(e.east,e.south)},s.center=function(e,r){var i=e.east,a=e.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(e.south+e.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new t(o,s)},s.intersection=function(t,e,r){var i=t.east,a=t.west,o=e.east,c=e.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((t.west<t.east||e.west<e.east)&&l>=f)return void 0;var h=Math.max(t.south,e.south),d=Math.min(t.north,e.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(t,e){var n=e.longitude,r=e.latitude,i=t.west,a=t.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=t.south&&r<=t.north};var c=new t;return s.subsample=function(t,r,i,o){r=e(r,a.WGS84),i=e(i,0),n(o)||(o=[]);var l=0,f=t.north,h=t.south,d=t.east,m=t.west,y=c;y.height=i,y.longitude=m,y.latitude=f,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=h,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.latitude=0>f?f:h>0?h:0;for(var p=1;8>p;++p)y.longitude=-Math.PI+p*u.PI_OVER_TWO,s.contains(t,y)&&(o[l]=r.cartographicToCartesian(y,o[l]),l++);return 0===y.latitude&&(y.longitude=m,o[l]=r.cartographicToCartesian(y,o[l]),l++,y.longitude=d,o[l]=r.cartographicToCartesian(y,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(t,e,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(e,r){this.center=t.clone(n(e,t.ZERO)),this.radius=n(r,0)},m=new t,y=new t,p=new t,v=new t,w=new t,E=new t,g=new t,x=new t,S=new t,M=new t,z=new t,_=new t;d.fromPoints=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;for(var i=t.clone(e[0],g),a=t.clone(i,m),o=t.clone(i,y),u=t.clone(i,p),s=t.clone(i,v),c=t.clone(i,w),l=t.clone(i,E),f=e.length,h=1;f>h;h++){t.clone(e[h],i);var O=i.x,T=i.y,I=i.z;O<a.x&&t.clone(i,a),O>s.x&&t.clone(i,s),T<o.y&&t.clone(i,o),T>c.y&&t.clone(i,c),I<u.z&&t.clone(i,u),I>l.z&&t.clone(i,l)}var N=t.magnitudeSquared(t.subtract(s,a,x)),R=t.magnitudeSquared(t.subtract(c,o,x)),P=t.magnitudeSquared(t.subtract(l,u,x)),b=a,A=s,C=N;R>C&&(C=R,b=o,A=c),P>C&&(C=P,b=u,A=l);var L=S;L.x=.5*(b.x+A.x),L.y=.5*(b.y+A.y),L.z=.5*(b.z+A.z);var q=t.magnitudeSquared(t.subtract(A,L,x)),U=Math.sqrt(q),D=M;D.x=a.x,D.y=o.y,D.z=u.z;var B=z;B.x=s.x,B.y=c.y,B.z=l.z;var W=t.multiplyByScalar(t.add(D,B,x),.5,_),k=0;for(h=0;f>h;h++){t.clone(e[h],i);var F=t.magnitude(t.subtract(i,W,x));F>k&&(k=F);var G=t.magnitudeSquared(t.subtract(i,L,x));if(G>q){var V=Math.sqrt(G);U=.5*(U+V),q=U*U;var Y=V-U;L.x=(U*L.x+Y*i.x)/V,L.y=(U*L.y+Y*i.y)/V,L.z=(U*L.z+Y*i.z)/V}}return k>U?(t.clone(L,n.center),n.radius=U):(t.clone(W,n.center),n.radius=k),n};var O=new u,T=new t,I=new t,N=new e,R=new e;d.fromRectangle2D=function(t,e,n){return d.fromRectangleWithHeights2D(t,e,0,0,n)},d.fromRectangleWithHeights2D=function(e,i,a,o,u){if(r(u)||(u=new d),!r(e))return u.center=t.clone(t.ZERO,u.center),u.radius=0,u;i=n(i,O),h.southwest(e,N),N.height=a,h.northeast(e,R),R.height=o;var s=i.project(N,T),c=i.project(R,I),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var y=u.center;return y.x=s.x+.5*l,y.y=s.y+.5*f,y.z=s.z+.5*m,u};var P=[];d.fromRectangle3D=function(t,e,i,a){e=n(e,o.WGS84),i=n(i,0);var u;return r(t)&&(u=h.subsample(t,e,i,P)),d.fromPoints(u,a)},d.fromVertices=function(e,i,a,o){if(r(o)||(o=new d),!r(e)||0===e.length)return o.center=t.clone(t.ZERO,o.center),o.radius=0,o;i=n(i,t.ZERO),a=n(a,3);var u=g;u.x=e[0]+i.x,u.y=e[1]+i.y,u.z=e[2]+i.z;for(var s=t.clone(u,m),c=t.clone(u,y),l=t.clone(u,p),f=t.clone(u,v),h=t.clone(u,w),O=t.clone(u,E),T=e.length,I=0;T>I;I+=a){var N=e[I]+i.x,R=e[I+1]+i.y,P=e[I+2]+i.z;u.x=N,u.y=R,u.z=P,N<s.x&&t.clone(u,s),N>f.x&&t.clone(u,f),R<c.y&&t.clone(u,c),R>h.y&&t.clone(u,h),P<l.z&&t.clone(u,l),P>O.z&&t.clone(u,O)}var b=t.magnitudeSquared(t.subtract(f,s,x)),A=t.magnitudeSquared(t.subtract(h,c,x)),C=t.magnitudeSquared(t.subtract(O,l,x)),L=s,q=f,U=b;A>U&&(U=A,L=c,q=h),C>U&&(U=C,L=l,q=O);var D=S;D.x=.5*(L.x+q.x),D.y=.5*(L.y+q.y),D.z=.5*(L.z+q.z);var B=t.magnitudeSquared(t.subtract(q,D,x)),W=Math.sqrt(B),k=M;k.x=s.x,k.y=c.y,k.z=l.z;var F=z;F.x=f.x,F.y=h.y,F.z=O.z;var G=t.multiplyByScalar(t.add(k,F,x),.5,_),V=0;for(I=0;T>I;I+=a){u.x=e[I]+i.x,u.y=e[I+1]+i.y,u.z=e[I+2]+i.z;var Y=t.magnitude(t.subtract(u,G,x));Y>V&&(V=Y);var j=t.magnitudeSquared(t.subtract(u,D,x));if(j>B){var H=Math.sqrt(j);W=.5*(W+H),B=W*W;var Z=H-W;D.x=(W*D.x+Z*u.x)/H,D.y=(W*D.y+Z*u.y)/H,D.z=(W*D.z+Z*u.z)/H}}return V>W?(t.clone(D,o.center),o.radius=W):(t.clone(G,o.center),o.radius=V),o},d.fromCornerPoints=function(e,n,i){r(i)||(i=new d);var a=i.center;return t.add(e,n,a),t.multiplyByScalar(a,.5,a),i.radius=t.distance(a,n),i},d.fromEllipsoid=function(e,n){return r(n)||(n=new d),t.clone(t.ZERO,n.center),n.radius=e.maximumRadius,n};var b=new t;d.fromBoundingSpheres=function(e,n){if(r(n)||(n=new d),!r(e)||0===e.length)return n.center=t.clone(t.ZERO,n.center),n.radius=0,n;var i=e.length;if(1===i)return d.clone(e[0],n);if(2===i)return d.union(e[0],e[1],n);for(var a=[],o=0;i>o;o++)a.push(e[o].center);n=d.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=e[o];s=Math.max(s,t.distance(u,c.center,b)+c.radius)}return n.radius=s,n},d.clone=function(e,n){return r(e)?r(n)?(n.center=t.clone(e.center,n.center),n.radius=e.radius,n):new d(e.center,e.radius):void 0},d.packedLength=4,d.pack=function(t,e,r){r=n(r,0);var i=t.center;e[r++]=i.x,e[r++]=i.y,e[r++]=i.z,e[r]=t.radius},d.unpack=function(t,e,i){e=n(e,0),r(i)||(i=new d);var a=i.center;return a.x=t[e++],a.y=t[e++],a.z=t[e++],i.radius=t[e],i};var A=new t,C=new t;d.union=function(e,n,i){r(i)||(i=new d);var a=e.center,o=e.radius,u=n.center,s=n.radius,c=t.subtract(u,a,A),l=t.magnitude(c);if(o>=l+s)return e.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),h=t.multiplyByScalar(c,(-o+f)/l,C);return t.add(h,a,h),t.clone(h,i.center),i.radius=f,i};var L=new t;d.expand=function(e,n,r){r=d.clone(e,r);var i=t.magnitude(t.subtract(n,r.center,L));return i>r.radius&&(r.radius=i),r},d.intersectPlane=function(e,n){var r=e.center,i=e.radius,a=n.normal,o=t.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new t,0);d.intersect=function(t,e){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(e,q);return d.intersectPlane(t,n)},d.transform=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=l.getMaximumScale(e)*t.radius,n};var U=new t;d.distanceSquaredTo=function(e,n){var r=t.subtract(e.center,n,U);return t.magnitudeSquared(r)-e.radius*e.radius},d.transformWithoutScale=function(t,e,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(e,t.center,n.center),n.radius=t.radius,n};var D=new t;d.computePlaneDistances=function(e,n,i,a){r(a)||(a=new c);var o=t.subtract(e.center,n,D),u=t.multiplyByScalar(i,t.dot(i,o),D),s=t.magnitude(u);return a.start=s-e.radius,a.stop=s+e.radius,a};for(var B=new t,W=new t,k=new t,F=new t,G=new t,V=new e,Y=new Array(8),j=0;8>j;++j)Y[j]=new t;var H=new u;return d.projectTo2D=function(e,r,i){r=n(r,H);var a=r.ellipsoid,o=e.center,u=e.radius,s=a.geodeticSurfaceNormal(o,B),c=t.cross(t.UNIT_Z,s,W);t.normalize(c,c);var l=t.cross(s,c,k);t.normalize(l,l),t.multiplyByScalar(s,u,s),t.multiplyByScalar(l,u,l),t.multiplyByScalar(c,u,c);var f=t.negate(l,G),h=t.negate(c,F),m=Y,y=m[0];t.add(s,l,y),t.add(y,c,y),y=m[1],t.add(s,l,y),t.add(y,h,y),y=m[2],t.add(s,f,y),t.add(y,h,y),y=m[3],t.add(s,f,y),t.add(y,c,y),t.negate(s,s),y=m[4],t.add(s,l,y),t.add(y,c,y),y=m[5],t.add(s,l,y),t.add(y,h,y),y=m[6],t.add(s,f,y),t.add(y,h,y),y=m[7],t.add(s,f,y),t.add(y,c,y);for(var p=m.length,v=0;p>v;++v){var w=m[v];t.add(o,w,w);var E=a.cartesianToCartographic(w,V);r.project(E,w)}i=d.fromPoints(m,i),o=i.center;var g=o.x,x=o.y,S=o.z;return o.x=S,o.y=g,o.z=x,i},d.equals=function(e,n){return e===n||r(e)&&r(n)&&t.equals(e.center,n.center)&&e.radius===n.radius},d.prototype.intersectPlane=function(t){return d.intersectPlane(this,t)},d.prototype.intersect=function(t){return d.intersect(this,t)},d.prototype.equals=function(t){return d.equals(this,t)},d.prototype.clone=function(t){return d.clone(this,t)},d}),define("Core/Fullscreen",["./defined","./defineProperties"],function(t,e){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return e(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(t(n))return n;n=!1;var e=document.body;if("function"==typeof e.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof e[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof e[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",t(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",t(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",t(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",t(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",t(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(t){i.supportsFullscreen()&&t[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(t,e,n){"use strict";function r(t){for(var e=t.split("."),n=0,r=e.length;r>n;++n)e[n]=parseInt(e[n],10);return e}function i(){if(!e(p)){p=!1;var t=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(p=!0,v=r(t[1]))}return p}function a(){return i()&&v}function o(){if(!e(w)&&(w=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var t=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(w=!0,E=r(t[1]))}return w}function u(){return o()&&E}function s(){if(!e(g)){g=!1;var t=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==t&&(g=!0,x=r(t[1]),x.isNightly=!!t[2])}return g}function c(){return s()&&x}function l(){if(!e(S)){S=!1;var t;"Microsoft Internet Explorer"===navigator.appName?(t=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(S=!0,M=r(t[1]))):"Netscape"===navigator.appName&&(t=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==t&&(S=!0,M=r(t[1])))}return S}function f(){return l()&&M}function h(){if(!e(z)){z=!1;var t=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==t&&(z=!0,_=r(t[1]))}return z}function d(){return e(O)||(O=/Windows/i.test(navigator.appVersion)),O}function m(){return h()&&_}function y(){return e(T)||(T=e(window.PointerEvent)&&(!e(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),T}var p,v,w,E,g,x,S,M,z,_,O,T,I={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:t(navigator.hardwareConcurrency,3),supportsPointerEvents:y};return I.supportsFullscreen=function(){return n.supportsFullscreen()},I.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},I.supportsWebWorkers=function(){return"undefined"!=typeof Worker},I}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(t,e,n,r,i){"use strict";if(!r.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(t){switch(t){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},a.fromTypedArray=function(t){return t instanceof Int8Array?a.BYTE:t instanceof Uint8Array?a.UNSIGNED_BYTE:t instanceof Int16Array?a.SHORT:t instanceof Uint16Array?a.UNSIGNED_SHORT:t instanceof Float32Array?a.FLOAT:t instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(t){return e(t)&&(t===a.BYTE||t===a.UNSIGNED_BYTE||t===a.SHORT||t===a.UNSIGNED_SHORT||t===a.FLOAT||t===a.DOUBLE)},a.createTypedArray=function(t,e){switch(t){case a.BYTE:return new Int8Array(e);case a.UNSIGNED_BYTE:return new Uint8Array(e);case a.SHORT:return new Int16Array(e);case a.UNSIGNED_SHORT:return new Uint16Array(e);case a.FLOAT:return new Float32Array(e);case a.DOUBLE:return new Float64Array(e);default:throw new n("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(e,r,i,o){switch(i=t(i,0),o=t(o,(r.byteLength-i)/a.getSizeInBytes(e)),e){case a.BYTE:return new Int8Array(r,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(r,i,o);case a.SHORT:return new Int16Array(r,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(r,i,o);case a.FLOAT:return new Float32Array(r,i,o);case a.DOUBLE:return new Float64Array(r,i,o);default:throw new n("componentDatatype is not a valid value.")}},i(a)}),define("Core/GeometryType",["./freezeObject"],function(t){"use strict";var e={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return t(e)}),define("Core/PrimitiveType",["./freezeObject"],function(t){"use strict";var e={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(t){return t===e.POINTS||t===e.LINES||t===e.LINE_LOOP||t===e.LINE_STRIP||t===e.TRIANGLES||t===e.TRIANGLE_STRIP||t===e.TRIANGLE_FAN}};return t(e)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(t,e,n,r,i){"use strict";var a=function(e){e=t(e,t.EMPTY_OBJECT),this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=t(e.primitiveType,i.TRIANGLES),this.boundingSphere=e.boundingSphere,this.geometryType=t(e.geometryType,r.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(t){var r=-1;for(var i in t.attributes)if(t.attributes.hasOwnProperty(i)&&e(t.attributes[i])&&e(t.attributes[i].values)){var a=t.attributes[i],o=a.values.length/a.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=t(e.normalize,!1),this.values=e.values};return e}),define("Core/GeometryAttributes",["./defaultValue"],function(t){"use strict";var e=function(e){e=t(e,t.EMPTY_OBJECT),this.position=e.position,this.normal=e.normal,this.st=e.st,this.binormal=e.binormal,this.tangent=e.tangent,this.color=e.color};return e}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,n,r){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(t){switch(t){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(e){return t(e)&&(e===i.UNSIGNED_BYTE||e===i.UNSIGNED_SHORT||e===i.UNSIGNED_INT)},i.createTypedArray=function(t,e){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e):new Uint16Array(e)},i.createTypedArrayFromArrayBuffer=function(t,e,n,i){return t>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(e,n,i):new Uint16Array(e,n,i)},n(i)}),define("Core/EllipsoidOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType"],function(t,e,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=new e(1,1,1),m=Math.cos,y=Math.sin,p=function(t){t=r(t,r.EMPTY_OBJECT);var n=r(t.radii,d),i=r(t.stackPartitions,10),a=r(t.slicePartitions,8),o=r(t.subdivisions,128);this._radii=e.clone(n),this._stackPartitions=i,this._slicePartitions=a,this._subdivisions=o,this._workerName="createEllipsoidOutlineGeometry"};p.packedLength=e.packedLength+3,p.pack=function(t,n,i){i=r(i,0),e.pack(t._radii,n,i),i+=e.packedLength,n[i++]=t._stackPartitions,n[i++]=t._slicePartitions,n[i]=t._subdivisions};var v=new e,w={radii:v,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};return p.unpack=function(t,n,a){n=r(n,0);var o=e.unpack(t,n,v);n+=e.packedLength;var u=t[n++],s=t[n++],c=t[n++];return i(a)?(a._radii=e.clone(o,a._radii),a._stackPartitions=u,a._slicePartitions=s,a._subdivisions=c,a):(w.stackPartitions=u,w.slicePartitions=s,w.subdivisions=c,new p(w))},p.createGeometry=function(e){var r,i,a,d,p,v,w=e._radii,E=o.fromCartesian3(w),g=e._stackPartitions,x=e._slicePartitions,S=e._subdivisions,M=S*(g+x-1),z=M-x+2,_=new Float64Array(3*z),O=l.createTypedArray(z,2*M),T=0,I=new Array(S),N=new Array(S);for(r=0;S>r;r++)a=f.TWO_PI*r/S,I[r]=m(a),N[r]=y(a);for(r=1;g>r;r++)for(d=Math.PI*r/g,p=m(d),v=y(d),i=0;S>i;i++)_[T++]=w.x*I[i]*v,_[T++]=w.y*N[i]*v,_[T++]=w.z*p; +for(I.length=x,N.length=x,r=0;x>r;r++)a=f.TWO_PI*r/x,I[r]=m(a),N[r]=y(a);for(_[T++]=0,_[T++]=0,_[T++]=w.z,r=1;S>r;r++)for(d=Math.PI*r/S,p=m(d),v=y(d),i=0;x>i;i++)_[T++]=w.x*I[i]*v,_[T++]=w.y*N[i]*v,_[T++]=w.z*p;for(_[T++]=0,_[T++]=0,_[T++]=-w.z,T=0,r=0;g-1>r;++r){var R=r*S;for(i=0;S-1>i;++i)O[T++]=R+i,O[T++]=R+i+1;O[T++]=R+S-1,O[T++]=R}var P=S*(g-1);for(i=1;x+1>i;++i)O[T++]=P,O[T++]=P+i;for(r=0;S-2>r;++r){var b=r*x+1+P,A=(r+1)*x+1+P;for(i=0;x-1>i;++i)O[T++]=A+i,O[T++]=b+i;O[T++]=A+x-1,O[T++]=b+x-1}var C=_.length/3-1;for(i=C-1;i>C-x-1;--i)O[T++]=C,O[T++]=i;var L=new c({position:new s({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:_})});return new u({attributes:L,indices:O,primitiveType:h.LINES,boundingSphere:t.fromEllipsoid(E)})},p}),define("Core/SphereOutlineGeometry",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./EllipsoidOutlineGeometry"],function(t,e,n,r,i){"use strict";var a=function(n){var r=e(n.radius,1),a=new t(r,r,r),o={radii:a,stackPartitions:n.stackPartitions,slicePartitions:n.slicePartitions,subdivisions:n.subdivisions};this._ellipsoidGeometry=new i(o),this._workerName="createSphereOutlineGeometry"};a.packedLength=i.packedLength,a.pack=function(t,e,n){i.pack(t._ellipsoidGeometry,e,n)};var o=new i,u={radius:void 0,radii:new t,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};return a.unpack=function(e,r,s){var c=i.unpack(e,r,o);return u.stackPartitions=c._stackPartitions,u.slicePartitions=c._slicePartitions,u.subdivisions=c._subdivisions,n(s)?(t.clone(c._radii,u.radii),s._ellipsoidGeometry=new i(u),s):(u.radius=c._radii.x,new a(u))},a.createGeometry=function(t){return i.createGeometry(t._ellipsoidGeometry)},a}),define("Workers/createSphereOutlineGeometry",["../Core/defined","../Core/SphereOutlineGeometry"],function(t,e){"use strict";return function(n,r){return t(r)&&(n=e.unpack(n,r)),e.createGeometry(n)}})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createVerticesFromHeightmap.js b/libs/Cesium/Workers/createVerticesFromHeightmap.js new file mode 100644 index 0000000000..994e499163 --- /dev/null +++ b/libs/Cesium/Workers/createVerticesFromHeightmap.js @@ -0,0 +1,228 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[1&e];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(e){return e>0?1:0>e?-1:0},n.signNotZero=function(e){return 0>e?-1:1},n.toSNorm=function(e){return Math.round(255*(.5*n.clamp(e,-1,1)+.5))},n.fromSNorm=function(e){return 2*(n.clamp(e,0,255)/255)-1},n.sinh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t-n)},n.cosh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t+n)},n.lerp=function(e,t,n){return(1-n)*e+n*t},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(e){return e*n.RADIANS_PER_DEGREE},n.toDegrees=function(e){return e*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(e){var t=n.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},n.negativePiToPi=function(e){return n.zeroToTwoPi(e+n.PI)-n.PI},n.zeroToTwoPi=function(e){var t=n.mod(e,n.TWO_PI);return Math.abs(t)<n.EPSILON14&&Math.abs(e)>n.EPSILON14?n.TWO_PI:t},n.mod=function(e,t){return(e%t+t)%t},n.equalsEpsilon=function(e,n,r,i){i=t(i,r);var a=Math.abs(e-n);return i>=a||a<=r*Math.max(Math.abs(e),Math.abs(n))};var r=[1];n.factorial=function(e){var t=r.length;if(e>=t)for(var n=r[t-1],i=t;e>=i;i++)r.push(n*i);return r[e]},n.incrementWrap=function(e,n,r){return r=t(r,0),++e,e>n&&(e=r),e},n.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},n.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},n.clamp=function(e,t,n){return t>e?t:e>n?n:e};var i=new e;return n.setRandomNumberSeed=function(t){i=new e(t)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(e){return Math.acos(n.clamp(e,-1,1))},n.asinClamped=function(e){return Math.asin(n.clamp(e,-1,1))},n.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0)};a.fromSpherical=function(n,r){t(r)||(r=new a);var i=n.clock,o=n.cone,u=e(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(e,n,r,i){return t(i)?(i.x=e,i.y=n,i.z=r,i):new a(e,n,r)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n):new a(e.x,e.y,e.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r]=t.z},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(e,t){a.normalize(e,s),a.normalize(t,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,l);return a.abs(n,n),t=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Z,t):n.y<=n.z?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_Z,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)&&i.equalsEpsilon(e.z,n.z,r,a)},a.cross=function(e,t,n){var r=e.x,i=e.y,a=e.z,o=t.x,u=t.y,s=t.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(e,t,n,r,o){var u=i.toRadians(e),s=i.toRadians(t);return a.fromRadians(u,s,n,r,o)};var f=new a,d=new a,h=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=e(i,0);var s=t(o)?o.radiiSquared:h,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,d);var l=Math.sqrt(a.dot(f,d));return d=a.divideByScalar(d,l,d),f=a.multiplyByScalar(f,i,f),t(u)||(u=new a),a.add(d,f,u)},a.fromDegreesArray=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=i.toRadians(e[o]);return a.fromRadiansArray(r,t,n)},a.fromRadiansArray=function(e,n,r){var i=e.length;t(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=e[o],s=e[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o+=3)r[o]=i.toRadians(e[o]),r[o+1]=i.toRadians(e[o+1]),r[o+2]=e[o+2];return a.fromRadiansArrayHeights(r,t,n)},a.fromRadiansArrayHeights=function(e,n,r){var i=e.length;t(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r){this.longitude=e(t,0),this.latitude=e(n,0),this.height=e(r,0)};return a.fromRadians=function(n,r,i,o){return i=e(i,0),t(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(e,t,n,r){return e=i.toRadians(e),t=i.toRadians(t),a.fromRadians(e,t,n,r)},a.clone=function(e,n){return t(e)?t(n)?(n.longitude=e.longitude,n.latitude=e.latitude,n.height=e.height,n):new a(e.longitude,e.latitude,e.height):void 0},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.longitude===n.longitude&&e.latitude===n.latitude&&e.height===n.height},a.equalsEpsilon=function(e,n,r){return e===n||t(e)&&t(n)&&Math.abs(e.longitude-n.longitude)<=r&&Math.abs(e.latitude-n.latitude)<=r&&Math.abs(e.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t){return a.equalsEpsilon(this,e,t)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},n=function(n,r){e(t[n])||(t[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),n=Object.defineProperties;return t&&e(n)||(n=function(e){return e}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i,a,o,u){"use strict";function s(t,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),t._radii=new e(r,i,a),t._radiiSquared=new e(r*r,i*i,a*a),t._radiiToTheFourth=new e(r*r*r*r,i*i*i*i,a*a*a*a),t._oneOverRadii=new e(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),t._minimumRadius=Math.min(r,i,a),t._maximumRadius=Math.max(r,i,a),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,n){if(!r(t))return void 0;var i=t._radii;return r(n)?(e.clone(i,n._radii),e.clone(t._radiiSquared,n._radiiSquared),e.clone(t._radiiToTheFourth,n._radiiToTheFourth),e.clone(t._oneOverRadii,n._oneOverRadii),e.clone(t._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=t._minimumRadius,n._maximumRadius=t._maximumRadius,n._centerToleranceSquared=t._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(e,t){return r(t)||(t=new c),r(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,r,i){i=n(i,0),e.pack(t._radii,r,i)},c.unpack=function(t,r,i){r=n(r,0);var a=e.unpack(t,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,n){var i=t.longitude,a=t.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new e),n.x=u,n.y=s,n.z=c,e.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(t,n){return r(n)||(n=new e),n=e.multiplyComponents(t,this._oneOverRadiiSquared,n),e.normalize(n,n)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(t,i),e.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(e.dot(i,a));return e.divideByScalar(a,o,a),e.multiplyByScalar(i,t.height,i),r(n)||(n=new e),e.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var i=0;n>i;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var d=new e,h=new e,m=new e;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,h);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,d),s=e.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,n))*e.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var i=0;n>i;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};var p=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,n){var i=t.x,a=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,d=i*i*c*c,h=a*a*l*l,m=o*o*f*f,v=d+h+m,w=Math.sqrt(1/v),g=e.multiplyByScalar(t,w,p);if(v<this._centerToleranceSquared)return isFinite(w)?e.clone(g,n):void 0;var x=this._oneOverRadiiSquared,S=x.x,E=x.y,M=x.z,O=y;O.x=2*g.x*S,O.y=2*g.y*E,O.z=2*g.z*M;var _,P,R,C,z,T,I,N,b,A,D,q=(1-w)*e.magnitude(t)/(.5*e.magnitude(O)),U=0;do{q-=U,R=1/(1+q*S),C=1/(1+q*E),z=1/(1+q*M),T=R*R,I=C*C,N=z*z,b=T*R,A=I*C,D=N*z,_=d*T+h*I+m*N-1,P=d*b*S+h*A*E+m*D*M;var L=-2*P;U=_/L}while(Math.abs(_)>u.EPSILON12);return r(n)?(n.x=i*R,n.y=a*C,n.z=o*z,n):new e(i*R,a*C,o*z)},c.prototype.scaleToGeocentricSurface=function(t,n){r(n)||(n=new e);var i=t.x,a=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return e.multiplyByScalar(t,s,n)},c.prototype.transformPositionToScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._radii,n)},c.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,n,r,i,a,o){"use strict";var u=function(e){this._ellipsoid=n(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,n){var i=this._semimajorAxis,a=t.longitude*i,o=t.latitude*i,u=t.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new e(a,o,u)},u.prototype.unproject=function(e,n){var i=this._oneOverSemimajorAxis,a=e.x*i,o=e.y*i,u=e.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new t(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,n){this.start=e(t,0),this.stop=e(n,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r,i){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0),this.w=e(i,0)};a.fromElements=function(e,n,r,i,o){return t(o)?(o.x=e,o.y=n,o.z=r,o.w=i,o):new a(e,n,r,i)},a.fromColor=function(e,n){return t(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new a(e.red,e.green,e.blue,e.alpha)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new a(e.x,e.y,e.z,e.w):void 0},a.packedLength=4,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r++]=t.z,n[r]=t.w},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,s);return a.abs(n,n),t=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,t):a.clone(a.UNIT_W,t):n.z<=n.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_W,t):n.z<=n.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)&&i.equalsEpsilon(e.z,n.z,r,a)&&i.equalsEpsilon(e.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i,a){"use strict";function o(e){for(var t=0,n=0;9>n;++n){var r=e[n];t+=r*r}return Math.sqrt(t)}function u(e){for(var t=0,n=0;3>n;++n){var r=e[c.getElementIndex(h[n],d[n])];t+=2*r*r}return Math.sqrt(t)}function s(e,t){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(h[o],d[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=d[i],m=h[i];if(Math.abs(e[c.getElementIndex(m,f)])>n){var p,y=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(f,f)],w=e[c.getElementIndex(m,f)],g=(y-v)/2/w;p=0>g?-1/(-g+Math.sqrt(1+g*g)):1/(g+Math.sqrt(1+g*g)),s=1/Math.sqrt(1+p*p),l=p*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,f)]=l,t[c.getElementIndex(f,m)]=-l,t}var c=function(e,n,r,i,a,o,u,s,c){this[0]=t(e,0),this[1]=t(i,0),this[2]=t(u,0),this[3]=t(n,0),this[4]=t(a,0),this[5]=t(s,0),this[6]=t(r,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r++]=e[7],n[r++]=e[8]},c.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new c),i[0]=e[r++],i[1]=e[r++],i[2]=e[r++],i[3]=e[r++],i[4]=e[r++],i[5]=e[r++],i[6]=e[r++],i[7]=e[r++],i[8]=e[r++],i},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,r,i){return r=t(r,0),n(i)||(i=new c),i[0]=e[r],i[1]=e[r+1],i[2]=e[r+2],i[3]=e[r+3],i[4]=e[r+4],i[5]=e[r+5],i[6]=e[r+6],i[7]=e[r+7],i[8]=e[r+8],i},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var r=e.x*e.x,i=e.x*e.y,a=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,d=e.z*e.w,h=e.w*e.w,m=r-u-f+h,p=2*(i-d),y=2*(a+l),v=2*(i+d),w=-r+u-f+h,g=2*(s-o),x=2*(a-l),S=2*(s+o),E=-r-u+f+h;return n(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=p,t[4]=w,t[5]=S,t[6]=y,t[7]=g,t[8]=E,t):new c(m,p,y,v,w,g,x,S,E)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return n(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=i,t[6]=0,t[7]=-i,t[8]=r,t):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=r,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=r,t):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=r,t[1]=i,t[2]=0,t[3]=-i,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,n){var r=3*t,i=e[r],a=e[r+1],o=e[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var i=3*t;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(e,t,n){var r=e[t],i=e[t+3],a=e[t+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+3]=n.y,r[t+6]=n.z,r};var l=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),n};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,n){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],i=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],a=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n},c.multiplyByVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[3]*i+e[6]*a,u=e[1]*r+e[4]*i+e[7]*a,s=e[2]*r+e[5]*i+e[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n},c.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var n=e[0],r=e[3],i=e[6],a=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=n,t[1]=r,t[2]=i,t[3]=a,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var d=[1,0,0],h=[2,2,1],m=new c,p=new c;return c.computeEigenDecomposition=function(e,t){var r=a.EPSILON20,i=10,l=0,f=0;n(t)||(t={});for(var d=t.unitary=c.clone(c.IDENTITY,t.unitary),h=t.diagonal=c.clone(e,t.diagonal),y=r*o(h);i>f&&u(h)>y;)s(h,m),c.transpose(m,p),c.multiply(h,m,h),c.multiply(p,h,h),c.multiply(d,m,d),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],n=e[3],r=e[6],i=e[1],a=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(e,t){var n=e[0],i=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],d=e[7],h=e[8],m=c.determinant(e);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");t[0]=s*h-d*l,t[1]=d*o-i*h,t[2]=i*l-s*o,t[3]=f*l-u*h,t[4]=n*h-f*o,t[5]=u*o-n*l,t[6]=u*d-f*s,t[7]=f*i-n*d,t[8]=n*s-u*i;var p=1/m;return c.multiplyByScalar(t,p,t)},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,n,r,i,a,o,u,s){"use strict";var c=function(e,t,r,i,a,o,u,s,c,l,f,d,h,m,p,y){this[0]=n(e,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(h,0),this[4]=n(t,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(p,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(d,0),this[15]=n(y,0)};c.packedLength=16,c.pack=function(e,t,r){r=n(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},c.unpack=function(e,t,i){return t=n(t,0),r(i)||(i=new c),i[0]=e[t++],i[1]=e[t++],i[2]=e[t++],i[3]=e[t++],i[4]=e[t++],i[5]=e[t++],i[6]=e[t++],i[7]=e[t++],i[8]=e[t++],i[9]=e[t++],i[10]=e[t++],i[11]=e[t++],i[12]=e[t++],i[13]=e[t++],i[14]=e[t++],i[15]=e[t],i},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,i,a){return i=n(i,e.ZERO),r(a)?(a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=0,a[4]=t[3],a[5]=t[4],a[6]=t[5],a[7]=0,a[8]=t[6],a[9]=t[7],a[10]=t[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(t[0],t[3],t[6],i.x,t[1],t[4],t[7],i.y,t[2],t[5],t[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,d=t.x*t.w,h=t.y*t.y,m=t.y*t.z,p=t.y*t.w,y=t.z*t.z,v=t.z*t.w,w=t.w*t.w,g=s-h-y+w,x=2*(l-v),S=2*(f+p),E=2*(l+v),M=-s+h-y+w,O=2*(m-d),_=2*(f-p),P=2*(m+d),R=-s-h+y+w;return i[0]=g*a,i[1]=E*a,i[2]=_*a,i[3]=0,i[4]=x*o,i[5]=M*o,i[6]=P*o,i[7]=0,i[8]=S*u,i[9]=O*u,i[10]=R*u,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,d=new e;c.fromCamera=function(t,n){var i=t.eye,a=t.target,o=t.up;e.normalize(e.subtract(a,i,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,d),d);var u=f.x,s=f.y,h=f.z,m=l.x,p=l.y,y=l.z,v=d.x,w=d.y,g=d.z,x=i.x,S=i.y,E=i.z,M=u*-x+s*-S+h*-E,O=v*-x+w*-S+g*-E,_=m*x+p*S+y*E;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=w,n[6]=-p,n[7]=0,n[8]=h,n[9]=g,n[10]=-y,n[11]=0,n[12]=M,n[13]=O,n[14]=_,n[15]=1,n):new c(u,s,h,M,v,w,g,O,-m,-p,-y,_,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,n,r,i){var a=Math.tan(.5*e),o=1/a,u=o/t,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(e,t,n,r,i,a,o){var u=1/(t-e),s=1/(r-n),c=1/(a-i),l=-(t+e)*u,f=-(r+n)*s,d=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=d,o[15]=1,o +},c.computePerspectiveOffCenter=function(e,t,n,r,i,a,o){var u=2*i/(t-e),s=2*i/(r-n),c=(t+e)/(t-e),l=(r+n)/(r-n),f=-(a+i)/(a-i),d=-1,h=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=d,o[12]=0,o[13]=0,o[14]=h,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,n,r,i,a){var o=2*i/(t-e),u=2*i/(r-n),s=(t+e)/(t-e),c=(r+n)/(r-n),l=-1,f=-1,d=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=d,a[15]=0,a},c.computeViewportTransformation=function(e,t,r,i){e=n(e,n.EMPTY_OBJECT);var a=n(e.x,0),o=n(e.y,0),u=n(e.width,0),s=n(e.height,0);t=n(t,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-t),d=c,h=l,m=f,p=a+c,y=o+l,v=t+f,w=1;return i[0]=d,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=h,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=p,i[13]=y,i[14]=v,i[15]=w,i},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,n){var r=4*t,i=e[r],a=e[r+1],o=e[r+2],u=e[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var i=4*t;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n},c.getRow=function(e,t,n){var r=e[t],i=e[t+4],a=e[t+8],o=e[t+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+4]=n.y,r[t+8]=n.z,r[t+12]=n.w,r};var h=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],h)),n.y=e.magnitude(e.fromElements(t[4],t[5],t[6],h)),n.z=e.magnitude(e.fromElements(t[8],t[9],t[10],h)),n};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],d=e[9],h=e[10],m=e[11],p=e[12],y=e[13],v=e[14],w=e[15],g=t[0],x=t[1],S=t[2],E=t[3],M=t[4],O=t[5],_=t[6],P=t[7],R=t[8],C=t[9],z=t[10],T=t[11],I=t[12],N=t[13],b=t[14],A=t[15],D=r*g+u*x+f*S+p*E,q=i*g+s*x+d*S+y*E,U=a*g+c*x+h*S+v*E,L=o*g+l*x+m*S+w*E,W=r*M+u*O+f*_+p*P,B=i*M+s*O+d*_+y*P,F=a*M+c*O+h*_+v*P,k=o*M+l*O+m*_+w*P,j=r*R+u*C+f*z+p*T,V=i*R+s*C+d*z+y*T,Z=a*R+c*C+h*z+v*T,H=o*R+l*C+m*z+w*T,Y=r*I+u*N+f*b+p*A,X=i*I+s*N+d*b+y*A,G=a*I+c*N+h*b+v*A,J=o*I+l*N+m*b+w*A;return n[0]=D,n[1]=q,n[2]=U,n[3]=L,n[4]=W,n[5]=B,n[6]=F,n[7]=k,n[8]=j,n[9]=V,n[10]=Z,n[11]=H,n[12]=Y,n[13]=X,n[14]=G,n[15]=J,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},c.multiplyTransformation=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=e[12],h=e[13],m=e[14],p=t[0],y=t[1],v=t[2],w=t[4],g=t[5],x=t[6],S=t[8],E=t[9],M=t[10],O=t[12],_=t[13],P=t[14],R=r*p+o*y+c*v,C=i*p+u*y+l*v,z=a*p+s*y+f*v,T=r*w+o*g+c*x,I=i*w+u*g+l*x,N=a*w+s*g+f*x,b=r*S+o*E+c*M,A=i*S+u*E+l*M,D=a*S+s*E+f*M,q=r*O+o*_+c*P+d,U=i*O+u*_+l*P+h,L=a*O+s*_+f*P+m;return n[0]=R,n[1]=C,n[2]=z,n[3]=0,n[4]=T,n[5]=I,n[6]=N,n[7]=0,n[8]=b,n[9]=A,n[10]=D,n[11]=0,n[12]=q,n[13]=U,n[14]=L,n[15]=1,n},c.multiplyByMatrix3=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=t[0],h=t[1],m=t[2],p=t[3],y=t[4],v=t[5],w=t[6],g=t[7],x=t[8],S=r*d+o*h+c*m,E=i*d+u*h+l*m,M=a*d+s*h+f*m,O=r*p+o*y+c*v,_=i*p+u*y+l*v,P=a*p+s*y+f*v,R=r*w+o*g+c*x,C=i*w+u*g+l*x,z=a*w+s*g+f*x;return n[0]=S,n[1]=E,n[2]=M,n[3]=0,n[4]=O,n[5]=_,n[6]=P,n[7]=0,n[8]=R,n[9]=C,n[10]=z,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n},c.multiplyByTranslation=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=r*e[0]+i*e[4]+a*e[8]+e[12],u=r*e[1]+i*e[5]+a*e[9]+e[13],s=r*e[2]+i*e[6]+a*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=o,n[13]=u,n[14]=s,n[15]=e[15],n};var p=new e;c.multiplyByUniformScale=function(e,t,n){return p.x=t,p.y=t,p.z=t,c.multiplyByScale(e,p,n)},c.multiplyByScale=function(e,t,n){var r=t.x,i=t.y,a=t.z;return 1===r&&1===i&&1===a?c.clone(e,n):(n[0]=r*e[0],n[1]=r*e[1],n[2]=r*e[2],n[3]=0,n[4]=i*e[4],n[5]=i*e[5],n[6]=i*e[6],n[7]=0,n[8]=a*e[8],n[9]=a*e[9],n[10]=a*e[10],n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=1,n)},c.multiplyByVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=t.w,u=e[0]*r+e[4]*i+e[8]*a+e[12]*o,s=e[1]*r+e[5]*i+e[9]*a+e[13]*o,c=e[2]*r+e[6]*i+e[10]*a+e[14]*o,l=e[3]*r+e[7]*i+e[11]*a+e[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[4]*i+e[8]*a,u=e[1]*r+e[5]*i+e[9]*a,s=e[2]*r+e[6]*i+e[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[4]*i+e[8]*a+e[12],u=e[1]*r+e[5]*i+e[9]*a+e[13],s=e[2]*r+e[6]*i+e[10]*a+e[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var n=e[1],r=e[2],i=e[3],a=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=a,t[10]=e[10],t[11]=e[14],t[12]=i,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,w=new t,g=new t(0,0,0,1);return c.inverse=function(e,n){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,w),g))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;var r=e[0],i=e[4],a=e[8],l=e[12],f=e[1],d=e[5],h=e[9],m=e[13],p=e[2],x=e[6],S=e[10],E=e[14],M=e[3],O=e[7],_=e[11],P=e[15],R=S*P,C=E*_,z=x*P,T=E*O,I=x*_,N=S*O,b=p*P,A=E*M,D=p*_,q=S*M,U=p*O,L=x*M,W=R*d+T*h+I*m-(C*d+z*h+N*m),B=C*f+b*h+q*m-(R*f+A*h+D*m),F=z*f+A*d+U*m-(T*f+b*d+L*m),k=N*f+D*d+L*h-(I*f+q*d+U*h),j=C*i+z*a+N*l-(R*i+T*a+I*l),V=R*r+A*a+D*l-(C*r+b*a+q*l),Z=T*r+b*i+L*l-(z*r+A*i+U*l),H=I*r+q*i+U*a-(N*r+D*i+L*a);R=a*m,C=l*h,z=i*m,T=l*d,I=i*h,N=a*d,b=r*m,A=l*f,D=r*h,q=a*f,U=r*d,L=i*f;var Y=R*O+T*_+I*P-(C*O+z*_+N*P),X=C*M+b*_+q*P-(R*M+A*_+D*P),G=z*M+A*O+U*P-(T*M+b*O+L*P),J=N*M+D*O+L*_-(I*M+q*O+U*_),Q=z*S+N*E+C*x-(I*E+R*x+T*S),$=D*E+R*p+A*S-(b*S+q*E+C*p),K=b*x+L*E+T*p-(U*E+z*p+A*x),et=U*S+I*p+q*x-(D*x+L*S+N*p),tt=r*W+i*B+a*F+l*k;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,n[0]=W*tt,n[1]=B*tt,n[2]=F*tt,n[3]=k*tt,n[4]=j*tt,n[5]=V*tt,n[6]=Z*tt,n[7]=H*tt,n[8]=Y*tt,n[9]=X*tt,n[10]=G*tt,n[11]=J*tt,n[12]=Q*tt,n[13]=$*tt,n[14]=K*tt,n[15]=et*tt,n},c.inverseTransformation=function(e,t){var n=e[0],r=e[1],i=e[2],a=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],d=e[13],h=e[14],m=-n*f-r*d-i*h,p=-a*f-o*d-u*h,y=-s*f-c*d-l*h;return t[0]=n,t[1]=a,t[2]=s,t[3]=0,t[4]=r,t[5]=o,t[6]=c,t[7]=0,t[8]=i,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=p,t[14]=y,t[15]=1,t},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var i=function(t,n){this.normal=e.clone(t),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-e.dot(r,n);return t(a)?(e.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new e;return i.fromCartesian4=function(n,r){var o=e.fromCartesian4(n,a),u=n.w;return t(r)?(e.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(t,n){return e.dot(t.normal,n)+t.distance},i.ORIGIN_XY_PLANE=r(new i(e.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(e.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(e.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,n,r,i,a,o,u){"use strict";var s=function(e,n,r,i){this.west=t(e,0),this.south=t(n,0),this.east=t(r,0),this.north=t(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.west,n[r++]=e.south,n[r++]=e.east,n[r]=e.north},s.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new s),i.west=e[r++],i.south=e[r++],i.east=e[r++],i.north=e[r],i},s.computeWidth=function(e){var t=e.east,n=e.west;return n>t&&(t+=u.TWO_PI),t-n},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,r,i,a,o){return e=u.toRadians(t(e,0)),r=u.toRadians(t(r,0)),i=u.toRadians(t(i,0)),a=u.toRadians(t(a,0)),n(o)?(o.west=e,o.south=r,o.east=i,o.north=a,o):new s(e,r,i,a)},s.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(t)?(t.west=r,t.south=a,t.east=i,t.north=o,t):new s(r,a,i,o)},s.clone=function(e,t){return n(e)?n(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return n(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},s.northwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},s.northeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},s.southeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},s.center=function(t,r){var i=t.east,a=t.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(t.south+t.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new e(o,s)},s.intersection=function(e,t,r){var i=e.east,a=e.west,o=t.east,c=t.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var d=Math.max(e.south,t.south),h=Math.min(e.north,t.north);return d>=h?void 0:n(r)?(r.west=l,r.south=d,r.east=f,r.north=h,r):new s(l,d,f,h)},s.contains=function(e,t){var n=t.longitude,r=t.latitude,i=e.west,a=e.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=e.south&&r<=e.north};var c=new e;return s.subsample=function(e,r,i,o){r=t(r,a.WGS84),i=t(i,0),n(o)||(o=[]);var l=0,f=e.north,d=e.south,h=e.east,m=e.west,p=c;p.height=i,p.longitude=m,p.latitude=f,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=d,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=0>f?f:d>0?d:0;for(var y=1;8>y;++y)p.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,p)&&(o[l]=r.cartographicToCartesian(p,o[l]),l++);return 0===p.latitude&&(p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,n,r,i,a,o,u,s,c,l,f,d){"use strict";var h=function(t,r){this.center=e.clone(n(t,e.ZERO)),this.radius=n(r,0)},m=new e,p=new e,y=new e,v=new e,w=new e,g=new e,x=new e,S=new e,E=new e,M=new e,O=new e,_=new e;h.fromPoints=function(t,n){if(r(n)||(n=new h),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;for(var i=e.clone(t[0],x),a=e.clone(i,m),o=e.clone(i,p),u=e.clone(i,y),s=e.clone(i,v),c=e.clone(i,w),l=e.clone(i,g),f=t.length,d=1;f>d;d++){e.clone(t[d],i);var P=i.x,R=i.y,C=i.z;P<a.x&&e.clone(i,a),P>s.x&&e.clone(i,s),R<o.y&&e.clone(i,o),R>c.y&&e.clone(i,c),C<u.z&&e.clone(i,u),C>l.z&&e.clone(i,l)}var z=e.magnitudeSquared(e.subtract(s,a,S)),T=e.magnitudeSquared(e.subtract(c,o,S)),I=e.magnitudeSquared(e.subtract(l,u,S)),N=a,b=s,A=z;T>A&&(A=T,N=o,b=c),I>A&&(A=I,N=u,b=l);var D=E;D.x=.5*(N.x+b.x),D.y=.5*(N.y+b.y),D.z=.5*(N.z+b.z);var q=e.magnitudeSquared(e.subtract(b,D,S)),U=Math.sqrt(q),L=M;L.x=a.x,L.y=o.y,L.z=u.z;var W=O;W.x=s.x,W.y=c.y,W.z=l.z;var B=e.multiplyByScalar(e.add(L,W,S),.5,_),F=0;for(d=0;f>d;d++){e.clone(t[d],i);var k=e.magnitude(e.subtract(i,B,S));k>F&&(F=k);var j=e.magnitudeSquared(e.subtract(i,D,S));if(j>q){var V=Math.sqrt(j);U=.5*(U+V),q=U*U;var Z=V-U;D.x=(U*D.x+Z*i.x)/V,D.y=(U*D.y+Z*i.y)/V,D.z=(U*D.z+Z*i.z)/V}}return F>U?(e.clone(D,n.center),n.radius=U):(e.clone(B,n.center),n.radius=F),n};var P=new u,R=new e,C=new e,z=new t,T=new t;h.fromRectangle2D=function(e,t,n){return h.fromRectangleWithHeights2D(e,t,0,0,n)},h.fromRectangleWithHeights2D=function(t,i,a,o,u){if(r(u)||(u=new h),!r(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;i=n(i,P),d.southwest(t,z),z.height=a,d.northeast(t,T),T.height=o;var s=i.project(z,R),c=i.project(T,C),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var p=u.center;return p.x=s.x+.5*l,p.y=s.y+.5*f,p.z=s.z+.5*m,u};var I=[];h.fromRectangle3D=function(e,t,i,a){t=n(t,o.WGS84),i=n(i,0);var u;return r(e)&&(u=d.subsample(e,t,i,I)),h.fromPoints(u,a)},h.fromVertices=function(t,i,a,o){if(r(o)||(o=new h),!r(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;i=n(i,e.ZERO),a=n(a,3);var u=x;u.x=t[0]+i.x,u.y=t[1]+i.y,u.z=t[2]+i.z;for(var s=e.clone(u,m),c=e.clone(u,p),l=e.clone(u,y),f=e.clone(u,v),d=e.clone(u,w),P=e.clone(u,g),R=t.length,C=0;R>C;C+=a){var z=t[C]+i.x,T=t[C+1]+i.y,I=t[C+2]+i.z;u.x=z,u.y=T,u.z=I,z<s.x&&e.clone(u,s),z>f.x&&e.clone(u,f),T<c.y&&e.clone(u,c),T>d.y&&e.clone(u,d),I<l.z&&e.clone(u,l),I>P.z&&e.clone(u,P)}var N=e.magnitudeSquared(e.subtract(f,s,S)),b=e.magnitudeSquared(e.subtract(d,c,S)),A=e.magnitudeSquared(e.subtract(P,l,S)),D=s,q=f,U=N;b>U&&(U=b,D=c,q=d),A>U&&(U=A,D=l,q=P);var L=E;L.x=.5*(D.x+q.x),L.y=.5*(D.y+q.y),L.z=.5*(D.z+q.z);var W=e.magnitudeSquared(e.subtract(q,L,S)),B=Math.sqrt(W),F=M;F.x=s.x,F.y=c.y,F.z=l.z;var k=O;k.x=f.x,k.y=d.y,k.z=P.z;var j=e.multiplyByScalar(e.add(F,k,S),.5,_),V=0;for(C=0;R>C;C+=a){u.x=t[C]+i.x,u.y=t[C+1]+i.y,u.z=t[C+2]+i.z;var Z=e.magnitude(e.subtract(u,j,S));Z>V&&(V=Z);var H=e.magnitudeSquared(e.subtract(u,L,S));if(H>W){var Y=Math.sqrt(H);B=.5*(B+Y),W=B*B;var X=Y-B;L.x=(B*L.x+X*u.x)/Y,L.y=(B*L.y+X*u.y)/Y,L.z=(B*L.z+X*u.z)/Y}}return V>B?(e.clone(L,o.center),o.radius=B):(e.clone(j,o.center),o.radius=V),o},h.fromCornerPoints=function(t,n,i){r(i)||(i=new h);var a=i.center;return e.add(t,n,a),e.multiplyByScalar(a,.5,a),i.radius=e.distance(a,n),i},h.fromEllipsoid=function(t,n){return r(n)||(n=new h),e.clone(e.ZERO,n.center),n.radius=t.maximumRadius,n};var N=new e;h.fromBoundingSpheres=function(t,n){if(r(n)||(n=new h),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;var i=t.length;if(1===i)return h.clone(t[0],n);if(2===i)return h.union(t[0],t[1],n);for(var a=[],o=0;i>o;o++)a.push(t[o].center);n=h.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,N)+c.radius)}return n.radius=s,n},h.clone=function(t,n){return r(t)?r(n)?(n.center=e.clone(t.center,n.center),n.radius=t.radius,n):new h(t.center,t.radius):void 0},h.packedLength=4,h.pack=function(e,t,r){r=n(r,0);var i=e.center;t[r++]=i.x,t[r++]=i.y,t[r++]=i.z,t[r]=e.radius},h.unpack=function(e,t,i){t=n(t,0),r(i)||(i=new h);var a=i.center;return a.x=e[t++],a.y=e[t++],a.z=e[t++],i.radius=e[t],i};var b=new e,A=new e;h.union=function(t,n,i){r(i)||(i=new h);var a=t.center,o=t.radius,u=n.center,s=n.radius,c=e.subtract(u,a,b),l=e.magnitude(c);if(o>=l+s)return t.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),d=e.multiplyByScalar(c,(-o+f)/l,A);return e.add(d,a,d),e.clone(d,i.center),i.radius=f,i};var D=new e;h.expand=function(t,n,r){r=h.clone(t,r);var i=e.magnitude(e.subtract(n,r.center,D));return i>r.radius&&(r.radius=i),r},h.intersectPlane=function(t,n){var r=t.center,i=t.radius,a=n.normal,o=e.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new e,0);h.intersect=function(e,t){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(t,q);return h.intersectPlane(e,n)},h.transform=function(e,t,n){return r(n)||(n=new h),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=l.getMaximumScale(t)*e.radius,n};var U=new e;h.distanceSquaredTo=function(t,n){var r=e.subtract(t.center,n,U);return e.magnitudeSquared(r)-t.radius*t.radius},h.transformWithoutScale=function(e,t,n){return r(n)||(n=new h),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var L=new e;h.computePlaneDistances=function(t,n,i,a){r(a)||(a=new c);var o=e.subtract(t.center,n,L),u=e.multiplyByScalar(i,e.dot(i,o),L),s=e.magnitude(u);return a.start=s-t.radius,a.stop=s+t.radius,a};for(var W=new e,B=new e,F=new e,k=new e,j=new e,V=new t,Z=new Array(8),H=0;8>H;++H)Z[H]=new e;var Y=new u;return h.projectTo2D=function(t,r,i){r=n(r,Y);var a=r.ellipsoid,o=t.center,u=t.radius,s=a.geodeticSurfaceNormal(o,W),c=e.cross(e.UNIT_Z,s,B);e.normalize(c,c);var l=e.cross(s,c,F);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,j),d=e.negate(c,k),m=Z,p=m[0];e.add(s,l,p),e.add(p,c,p),p=m[1],e.add(s,l,p),e.add(p,d,p),p=m[2],e.add(s,f,p),e.add(p,d,p),p=m[3],e.add(s,f,p),e.add(p,c,p),e.negate(s,s),p=m[4],e.add(s,l,p),e.add(p,c,p),p=m[5],e.add(s,l,p),e.add(p,d,p),p=m[6],e.add(s,f,p),e.add(p,d,p),p=m[7],e.add(s,f,p),e.add(p,c,p);for(var y=m.length,v=0;y>v;++v){var w=m[v];e.add(o,w,w);var g=a.cartesianToCartographic(w,V);r.project(g,w)}i=h.fromPoints(m,i),o=i.center;var x=o.x,S=o.y,E=o.z;return o.x=E,o.y=x,o.z=S,i},h.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&t.radius===n.radius},h.prototype.intersectPlane=function(e){return h.intersectPlane(this,e)},h.prototype.intersect=function(e){return h.intersect(this,e)},h.prototype.equals=function(e){return h.equals(this,e)},h.prototype.clone=function(e){return h.clone(this,e)},h}),define("Core/EllipsoidalOccluder",["./BoundingSphere","./Cartesian3","./defaultValue","./defined","./defineProperties","./DeveloperError","./Rectangle"],function(e,t,n,r,i,a,o){"use strict";function u(e,n,r){var i=e.transformPositionToScaledSpace(n,m),a=t.magnitudeSquared(i),o=Math.sqrt(a),u=t.divideByScalar(i,o,p);a=Math.max(1,a),o=Math.max(1,o);var s=t.dot(u,r),c=t.magnitude(t.cross(u,r,u)),l=1/o,f=Math.sqrt(a-1)*l;return 1/(s*l-c*f)}function s(e,n,r){return 0>=n||n===1/0||n!==n?void 0:t.multiplyByScalar(e,n,r)}function c(e,n){return e.transformPositionToScaledSpace(n,y),t.normalize(y,y)}var l=function(e,n){this._ellipsoid=e,this._cameraPosition=new t,this._cameraPositionInScaledSpace=new t,this._distanceToLimbInScaledSpaceSquared=0,r(n)&&(this.cameraPosition=n)};i(l.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(e){var n=this._ellipsoid,r=n.transformPositionToScaledSpace(e,this._cameraPositionInScaledSpace),i=t.magnitudeSquared(r)-1;t.clone(e,this._cameraPosition),this._cameraPositionInScaledSpace=r,this._distanceToLimbInScaledSpaceSquared=i}}});var f=new t;l.prototype.isPointVisible=function(e){var t=this._ellipsoid,n=t.transformPositionToScaledSpace(e,f);return this.isScaledSpacePointVisible(n)},l.prototype.isScaledSpacePointVisible=function(e){var n=this._cameraPositionInScaledSpace,r=this._distanceToLimbInScaledSpaceSquared,i=t.subtract(e,n,f),a=-t.dot(i,n),o=a>r&&a*a/t.magnitudeSquared(i)>r;return!o},l.prototype.computeHorizonCullingPoint=function(e,n,i){r(i)||(i=new t);for(var a=this._ellipsoid,o=c(a,e),l=0,f=0,d=n.length;d>f;++f){var h=n[f],m=u(a,h,o);l=Math.max(l,m)}return s(o,l,i)};var d=new t;l.prototype.computeHorizonCullingPointFromVertices=function(e,i,a,o,l){r(l)||(l=new t),o=n(o,t.ZERO);for(var f=this._ellipsoid,h=c(f,e),m=0,p=0,y=i.length;y>p;p+=a){d.x=i[p]+o.x,d.y=i[p+1]+o.y,d.z=i[p+2]+o.z;var v=u(f,d,h);m=Math.max(m,v)}return s(h,m,l)};var h=[];l.prototype.computeHorizonCullingPointFromRectangle=function(n,r,i){var a=o.subsample(n,r,0,h),u=e.fromPoints(a);return t.magnitude(u.center)<.1*r.minimumRadius?void 0:this.computeHorizonCullingPoint(u.center,a,i)};var m=new t,p=new t,y=new t;return l}),define("Core/HeightmapTessellator",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./freezeObject","./Math","./Rectangle"],function(e,t,n,r,i,a,o,u){"use strict";var s={};return s.DEFAULT_STRUCTURE=a({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1}),s.computeVertices=function(r){var a,c,l,f,d=Math.cos,h=Math.sin,m=Math.sqrt,p=Math.atan,y=Math.exp,v=o.PI_OVER_TWO,w=o.toRadians,g=r.vertices,x=r.heightmap,S=r.width,E=r.height,M=r.skirtHeight,O=t(r.isGeographic,!0),_=t(r.ellipsoid,i.WGS84),P=1/_.maximumRadius,R=r.nativeRectangle,C=r.rectangle;n(C)?(a=C.west,c=C.south,l=C.east,f=C.north):O?(a=w(R.west),c=w(R.south),l=w(R.east),f=w(R.north)):(a=R.west*P,c=v-2*p(y(-R.south*P)),l=R.east*P,f=v-2*p(y(-R.north*P)));var z=t(r.relativeToCenter,e.ZERO),T=t(r.structure,s.DEFAULT_STRUCTURE),I=t(T.heightScale,s.DEFAULT_STRUCTURE.heightScale),N=t(T.heightOffset,s.DEFAULT_STRUCTURE.heightOffset),b=t(T.elementsPerHeight,s.DEFAULT_STRUCTURE.elementsPerHeight),A=t(T.stride,s.DEFAULT_STRUCTURE.stride),D=t(T.elementMultiplier,s.DEFAULT_STRUCTURE.elementMultiplier),q=t(T.isBigEndian,s.DEFAULT_STRUCTURE.isBigEndian),U=u.computeWidth(R)/(S-1),L=u.computeHeight(R)/(E-1),W=_.radiiSquared,B=W.x,F=W.y,k=W.z,j=0,V=65536,Z=-65536,H=0,Y=E,X=0,G=S;M>0&&(--H,++Y,--X,++G);for(var J=H;Y>J;++J){var Q=J;0>Q&&(Q=0),Q>=E&&(Q=E-1);var $=R.north-L*Q;$=O?w($):v-2*p(y(-$*P));for(var K=d($),et=h($),tt=k*et,nt=($-c)/(f-c),rt=X;G>rt;++rt){var it=rt;0>it&&(it=0),it>=S&&(it=S-1);var at=R.west+U*it;O?at=w(at):at*=P;var ot,ut=Q*S*A+it*A;if(1===b)ot=x[ut];else{ot=0;var st;if(q)for(st=0;b>st;++st)ot=ot*D+x[ut+st];else for(st=b-1;st>=0;--st)ot=ot*D+x[ut+st]}ot=ot*I+N,Z=Math.max(Z,ot),V=Math.min(V,ot),(rt!==it||J!==Q)&&(ot-=M);var ct=K*d(at),lt=K*h(at),ft=B*ct,dt=F*lt,ht=m(ft*ct+dt*lt+tt*et),mt=1/ht,pt=ft*mt,yt=dt*mt,vt=tt*mt;g[j++]=pt+ct*ot-z.x,g[j++]=yt+lt*ot-z.y,g[j++]=vt+et*ot-z.z,g[j++]=ot;var wt=(at-a)/(l-a);g[j++]=wt,g[j++]=nt}}return{maximumHeight:Z,minimumHeight:V}},s}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n){this.x=e(t,0),this.y=e(n,0)};a.fromElements=function(e,n,r){return t(r)?(r.x=e,r.y=n,r):new a(e,n)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n):new a(e.x,e.y):void 0},a.fromCartesian3=a.clone,a.fromCartesian4=a.clone,a.packedLength=2,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r]=t.y},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y)},a.minimumComponent=function(e){return Math.min(e.x,e.y)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(e,t){return a.normalize(e,s),a.normalize(t,c),i.acosClamped(a.dot(s,c))};var l=new a;return a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,l);return a.abs(n,n),t=n.x<=n.y?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Y,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)},a.ZERO=r(new a(0,0)),a.UNIT_X=r(new a(1,0)),a.UNIT_Y=r(new a(0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+")"},a}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,n,r,i,a,o){"use strict";var u=function(r,i,a){this.minimum=e.clone(t(r,e.ZERO)),this.maximum=e.clone(t(i,e.ZERO)),n(a)?a=e.clone(a):(a=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(a,.5,a)),this.center=a};u.fromPoints=function(t,r){if(n(r)||(r=new u),!n(t)||0===t.length)return r.minimum=e.clone(e.ZERO,r.minimum),r.maximum=e.clone(e.ZERO,r.maximum),r.center=e.clone(e.ZERO,r.center),r;for(var i=t[0].x,a=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,f=t.length,d=1;f>d;d++){var h=t[d],m=h.x,p=h.y,y=h.z;i=Math.min(m,i),s=Math.max(m,s),a=Math.min(p,a),c=Math.max(p,c),o=Math.min(y,o),l=Math.max(y,l)}var v=r.minimum;v.x=i,v.y=a,v.z=o;var w=r.maximum;w.x=s,w.y=c,w.z=l;var g=e.add(v,w,r.center);return e.multiplyByScalar(g,.5,g),r},u.clone=function(t,r){return n(t)?n(r)?(r.minimum=e.clone(t.minimum,r.minimum),r.maximum=e.clone(t.maximum,r.maximum),r.center=e.clone(t.center,r.center),r):new u(t.minimum,t.maximum):void 0},u.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&e.equals(t.minimum,r.minimum)&&e.equals(t.maximum,r.maximum)};var s=new e;u.intersectPlane=function(t,n){s=e.subtract(t.maximum,t.minimum,s);var r=e.multiplyByScalar(s,.5,s),i=n.normal,o=r.x*Math.abs(i.x)+r.y*Math.abs(i.y)+r.z*Math.abs(i.z),u=e.dot(t.center,i)+n.distance;return u-o>0?a.INSIDE:0>u+o?a.OUTSIDE:a.INTERSECTING};var c=new o(new e,0);return u.intersect=function(e,t){r("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var n=o.fromCartesian4(t,c);return u.intersectPlane(e,n)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function n(e,n,r){var i=e+n;return t.sign(e)!==t.sign(n)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(n)))<r?0:i}var r={};return r.computeDiscriminant=function(e,t,n){var r=t*t-4*e*n;return r},r.computeRealRoots=function(e,r,i){var a;if(0===e)return 0===r?[]:[-i/r];if(0===r){if(0===i)return[0,0];var o=Math.abs(i),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(a=-i/e,0>a)return[];var s=Math.sqrt(a);return[-s,s]}if(0===i)return a=-r/e,0>a?[a,0]:[0,a];var c=r*r,l=4*e*i,f=n(c,-l,t.EPSILON14);if(0>f)return[];var d=-.5*n(r,t.sign(r)*Math.sqrt(f),t.EPSILON14);return r>0?[d/e,i/d]:[i/d,d/e]},r}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function n(e,t,n,r){var i,a,o=e,u=t/3,s=n/3,c=r,l=o*s,f=u*c,d=u*u,h=s*s,m=o*s-d,p=o*c-u*s,y=u*c-h,v=4*m*y-p*p;if(0>v){var w,g,x;d*f>=l*h?(w=o,g=m,x=-2*u*m+o*p):(w=c,g=y,x=-c*p+2*s*y); +var S=0>x?-1:1,E=-S*Math.abs(w)*Math.sqrt(-v);a=-x+E;var M=a/2,O=0>M?-Math.pow(-M,1/3):Math.pow(M,1/3),_=a===E?-O:-g/O;return i=0>=g?O+_:-x/(O*O+_*_+g),d*f>=l*h?[(i-u)/o]:[-c/(i+s)]}var P=m,R=-2*u*m+o*p,C=y,z=-c*p+2*s*y,T=Math.sqrt(v),I=Math.sqrt(3)/2,N=Math.abs(Math.atan2(o*T,-R)/3);i=2*Math.sqrt(-P);var b=Math.cos(N);a=i*b;var A=i*(-b/2-I*Math.sin(N)),D=a+A>2*u?a-u:A-u,q=o,U=D/q;N=Math.abs(Math.atan2(c*T,-z)/3),i=2*Math.sqrt(-C),b=Math.cos(N),a=i*b,A=i*(-b/2-I*Math.sin(N));var L=-c,W=2*s>a+A?a+s:A+s,B=L/W,F=q*W,k=-D*W-q*L,j=D*L,V=(s*k-u*j)/(-u*k+s*F);return V>=U?B>=U?B>=V?[U,V,B]:[U,B,V]:[B,U,V]:B>=U?[V,U,B]:B>=V?[V,B,U]:[B,V,U]}var r={};return r.computeDiscriminant=function(e,t,n,r){var i=e*e,a=t*t,o=n*n,u=r*r,s=18*e*t*n*r+a*o-27*i*u-4*(e*o*n+a*t*r);return s},r.computeRealRoots=function(e,r,i,a){var o,u;if(0===e)return t.computeRealRoots(r,i,a);if(0===r){if(0===i){if(0===a)return[0,0,0];u=-a/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===a?(o=t.computeRealRoots(e,0,i),0===o.Length?[0]:[o[0],0,o[1]]):n(e,0,i,a)}return 0===i?0===a?(u=-r/e,0>u?[u,0,0]:[0,0,u]):n(e,r,0,a):0===a?(o=t.computeRealRoots(e,r,i),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):n(e,r,i,a)},r}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,n,r){"use strict";function i(t,i,a,o){var u=t*t,s=i-3*u/8,c=a-i*t/2+u*t/8,l=o-a*t/4+i*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var d=-t/4,h=f[f.length-1];if(Math.abs(h)<n.EPSILON14){var m=r.computeRealRoots(1,s,l);if(2===m.length){var p,y=m[0],v=m[1];if(y>=0&&v>=0){var w=Math.sqrt(y),g=Math.sqrt(v);return[d-g,d-w,d+w,d+g]}if(y>=0&&0>v)return p=Math.sqrt(y),[d-p,d+p];if(0>y&&v>=0)return p=Math.sqrt(v),[d-p,d+p]}return[]}if(h>0){var x=Math.sqrt(h),S=(s+h-c/x)/2,E=(s+h+c/x)/2,M=r.computeRealRoots(1,x,S),O=r.computeRealRoots(1,-x,E);return 0!==M.length?(M[0]+=d,M[1]+=d,0!==O.length?(O[0]+=d,O[1]+=d,M[1]<=O[0]?[M[0],M[1],O[0],O[1]]:O[1]<=M[0]?[O[0],O[1],M[0],M[1]]:M[0]>=O[0]&&M[1]<=O[1]?[O[0],M[0],M[1],O[1]]:O[0]>=M[0]&&O[1]<=M[1]?[M[0],O[0],O[1],M[1]]:M[0]>O[0]&&M[0]<O[1]?[O[0],M[0],O[1],M[1]]:[M[0],O[0],M[1],O[1]]):M):0!==O.length?(O[0]+=d,O[1]+=d,O):[]}}return[]}function a(t,i,a,o){var u=a*a,s=i*i,c=t*t,l=-2*i,f=a*t+s-4*o,d=c*o-a*i*t+u,h=e.computeRealRoots(1,l,f,d);if(h.length>0){var m,p,y=h[0],v=i-y,w=v*v,g=t/2,x=v/2,S=w-4*o,E=w+4*Math.abs(o),M=c-4*y,O=c+4*Math.abs(y);if(0>y||M*E>S*O){var _=Math.sqrt(M);m=_/2,p=0===_?0:(t*x-a)/_}else{var P=Math.sqrt(S);m=0===P?0:(t*x-a)/P,p=P/2}var R,C;0===g&&0===m?(R=0,C=0):n.sign(g)===n.sign(m)?(R=g+m,C=y/R):(C=g-m,R=y/C);var z,T;0===x&&0===p?(z=0,T=0):n.sign(x)===n.sign(p)?(z=x+p,T=o/z):(T=x-p,z=o/T);var I=r.computeRealRoots(1,R,z),N=r.computeRealRoots(1,C,T);if(0!==I.length)return 0!==N.length?I[1]<=N[0]?[I[0],I[1],N[0],N[1]]:N[1]<=I[0]?[N[0],N[1],I[0],I[1]]:I[0]>=N[0]&&I[1]<=N[1]?[N[0],I[0],I[1],N[1]]:N[0]>=I[0]&&N[1]<=I[1]?[I[0],N[0],N[1],I[1]]:I[0]>N[0]&&I[0]<N[1]?[N[0],I[0],N[1],I[1]]:[I[0],N[0],I[1],N[1]]:I;if(0!==N.length)return N}return[]}var o={};return o.computeDiscriminant=function(e,t,n,r,i){var a=e*e,o=a*e,u=t*t,s=u*t,c=n*n,l=c*n,f=r*r,d=f*r,h=i*i,m=h*i,p=u*c*f-4*s*d-4*e*l*f+18*e*t*n*d-27*a*f*f+256*o*m+i*(18*s*n*r-4*u*l+16*e*c*c-80*e*t*c*r-6*e*u*f+144*a*n*f)+h*(144*e*u*n-27*u*u-128*a*c-192*a*t*r);return p},o.computeRealRoots=function(t,r,o,u,s){if(Math.abs(t)<n.EPSILON15)return e.computeRealRoots(r,o,u,s);var c=r/t,l=o/t,f=u/t,d=s/t,h=0>c?1:0;switch(h+=0>l?h+1:h,h+=0>f?h+1:h,h+=0>d?h+1:h){case 0:return i(c,l,f,d);case 1:return a(c,l,f,d);case 2:return a(c,l,f,d);case 3:return i(c,l,f,d);case 4:return i(c,l,f,d);case 5:return a(c,l,f,d);case 6:return i(c,l,f,d);case 7:return i(c,l,f,d);case 8:return a(c,l,f,d);case 9:return i(c,l,f,d);case 10:return i(c,l,f,d);case 11:return a(c,l,f,d);case 12:return i(c,l,f,d);case 13:return i(c,l,f,d);case 14:return i(c,l,f,d);case 15:return i(c,l,f,d);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=function(n,r){r=e.clone(t(r,e.ZERO)),e.equals(r,e.ZERO)||e.normalize(r,r),this.origin=e.clone(t(n,e.ZERO)),this.direction=r};return r.getPoint=function(t,r,i){return n(i)||(i=new e),i=e.multiplyByScalar(t.direction,r,i),e.add(t.origin,i,i)},r}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,n,r,i,a,o,u,s,c){"use strict";function l(t,r,i,o,u){u=n(u,!1);var s,c,l,f,d,h=t.origin,m=t.direction,p=e.subtract(i,r,y),S=e.subtract(o,r,v),E=e.cross(m,S,w),M=e.dot(p,E);if(u){if(M<a.EPSILON6)return void 0;if(s=e.subtract(h,r,g),l=e.dot(s,E),0>l||l>M)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c),0>f||l+f>M)return void 0;d=e.dot(S,c)/M}else{if(Math.abs(M)<a.EPSILON6)return void 0;var O=1/M;if(s=e.subtract(h,r,g),l=e.dot(s,E)*O,0>l||l>1)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c)*O,0>f||l+f>1)return void 0;d=e.dot(S,c)*O}return d}function f(e,t,n,r){var i=t*t-4*e*n;if(0>i)return void 0;if(i>0){var a=1/(2*e),o=Math.sqrt(i),u=(-t+o)*a,s=(-t-o)*a;return s>u?(r.root0=u,r.root1=s):(r.root0=s,r.root1=u),r}var c=-t/(2*e);return 0===c?void 0:(r.root0=r.root1=c,r)}function d(t,n,i){r(i)||(i={});var a=t.origin,o=t.direction,u=n.center,s=n.radius*n.radius,c=e.subtract(a,u,w),l=e.dot(o,o),d=2*e.dot(o,c),h=e.magnitudeSquared(c)-s,m=f(l,d,h,E);return r(m)?(i.start=m.root0,i.stop=m.root1,i):void 0}function h(e,t,n){var r=e+t;return a.sign(e)!==a.sign(t)&&Math.abs(r/Math.max(Math.abs(e),Math.abs(t)))<n?0:r}function m(t,n,r,i,c){var l,f=i*i,d=c*c,m=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*d,p=c*(i*h(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],a.EPSILON15)+n.y),y=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*d+i*n.x+r,v=d*h(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],a.EPSILON15),w=c*(i*h(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+n.z),g=[];if(0===w&&0===v){if(l=u.computeRealRoots(m,p,y),0===l.length)return g;var x=l[0],S=Math.sqrt(Math.max(1-x*x,0));if(g.push(new e(i,c*x,c*-S)),g.push(new e(i,c*x,c*S)),2===l.length){var E=l[1],M=Math.sqrt(Math.max(1-E*E,0));g.push(new e(i,c*E,c*-M)),g.push(new e(i,c*E,c*M))}return g}var O=w*w,_=v*v,P=m*m,R=w*v,C=P+_,z=2*(p*m+R),T=2*y*m+p*p-_+O,I=2*(y*p-R),N=y*y-O;if(0===C&&0===z&&0===T&&0===I)return g;l=s.computeRealRoots(C,z,T,I,N);var b=l.length;if(0===b)return g;for(var A=0;b>A;++A){var D,q=l[A],U=q*q,L=Math.max(1-U,0),W=Math.sqrt(L);D=a.sign(m)===a.sign(y)?h(m*U+y,p*q,a.EPSILON12):a.sign(y)===a.sign(p*q)?h(m*U,p*q+y,a.EPSILON12):h(m*U+p*q,y,a.EPSILON12);var B=h(v*q,w,a.EPSILON15),F=D*B;0>F?g.push(new e(i,c*q,c*W)):F>0?g.push(new e(i,c*q,c*-W)):0!==W?(g.push(new e(i,c*q,c*-W)),g.push(new e(i,c*q,c*W)),++A):g.push(new e(i,c*q,c*W))}return g}var p={};p.rayPlane=function(t,n,i){r(i)||(i=new e);var o=t.origin,u=t.direction,s=n.normal,c=e.dot(s,u);if(Math.abs(c)<a.EPSILON15)return void 0;var l=(-n.distance-e.dot(s,o))/c;return 0>l?void 0:(i=e.multiplyByScalar(u,l,i),e.add(o,i,i))};var y=new e,v=new e,w=new e,g=new e,x=new e;p.rayTriangle=function(t,n,i,a,o,u){var s=l(t,n,i,a,o);return!r(s)||0>s?void 0:(r(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var S=new c;p.lineSegmentTriangle=function(t,n,i,a,o,u,s){var c=S;e.clone(t,c.origin),e.subtract(n,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,i,a,o,u);return!r(f)||0>f||f>e.distance(t,n)?void 0:(r(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var E={root0:0,root1:0};p.raySphere=function(e,t,n){return n=d(e,t,n),!r(n)||n.stop<0?void 0:(n.start=Math.max(n.start,0),n)};var M=new c;p.lineSegmentSphere=function(t,n,i,a){var o=M;e.clone(t,o.origin);var u=e.subtract(n,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),a=d(o,i,a),!r(a)||a.stop<0||a.start>s?void 0:(a.start=Math.max(a.start,0),a.stop=Math.min(a.stop,s),a)};var O=new e,_=new e;p.rayEllipsoid=function(t,n){var r,i,a,o,u,s=n.oneOverRadii,c=e.multiplyComponents(s,t.origin,O),l=e.multiplyComponents(s,t.direction,_),f=e.magnitudeSquared(c),d=e.dot(c,l);if(f>1){if(d>=0)return void 0;var h=d*d;if(r=f-1,i=e.magnitudeSquared(l),a=i*r,a>h)return void 0;if(h>a){o=d*d-a,u=-d+Math.sqrt(o);var m=u/i,p=r/u;return p>m?{start:m,stop:p}:{start:p,stop:m}}var y=Math.sqrt(r/i);return{start:y,stop:y}}return 1>f?(r=f-1,i=e.magnitudeSquared(l),a=i*r,o=d*d-a,u=-d+Math.sqrt(o),{start:0,stop:u/i}):0>d?(i=e.magnitudeSquared(l),{start:0,stop:-d/i}):void 0};var P=new e,R=new e,C=new e,z=new e,T=new e,I=new o,N=new o,b=new o,A=new o,D=new o,q=new o,U=new o,L=new e,W=new e,B=new t;p.grazingAltitudeLocation=function(t,n){var i=t.origin,u=t.direction,s=n.geodeticSurfaceNormal(i,P);if(e.dot(u,s)>=0)return i;var c=r(this.rayEllipsoid(t,n)),l=n.transformPositionToScaledSpace(u,P),f=e.normalize(l,l),d=e.mostOrthogonalAxis(l,z),h=e.normalize(e.cross(d,f,R),R),p=e.normalize(e.cross(f,h,C),C),y=I;y[0]=f.x,y[1]=f.y,y[2]=f.z,y[3]=h.x,y[4]=h.y,y[5]=h.z,y[6]=p.x,y[7]=p.y,y[8]=p.z;var v=o.transpose(y,N),w=o.fromScale(n.radii,b),g=o.fromScale(n.oneOverRadii,A),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var S,E,M=o.multiply(o.multiply(v,g,q),x,q),O=o.multiply(o.multiply(M,w,U),y,U),_=o.multiplyByVector(M,i,T),F=m(O,e.negate(_,P),0,0,1),k=F.length;if(k>0){for(var j=e.clone(e.ZERO,W),V=Number.NEGATIVE_INFINITY,Z=0;k>Z;++Z){S=o.multiplyByVector(w,o.multiplyByVector(y,F[Z],L),L);var H=e.normalize(e.subtract(S,i,z),z),Y=e.dot(H,u);Y>V&&(V=Y,j=e.clone(S,j))}var X=n.cartesianToCartographic(j,B);return V=a.clamp(V,0,1),E=e.magnitude(e.subtract(j,i,z))*Math.sqrt(1-V*V),E=c?-E:E,X.height=E,n.cartographicToCartesian(X,new e)}return void 0};var F=new e;return p.lineSegmentPlane=function(t,n,i,o){r(o)||(o=new e);var u=e.subtract(n,t,F),s=i.normal,c=e.dot(s,u);if(Math.abs(c)<a.EPSILON6)return void 0;var l=e.dot(s,t),f=-(i.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},p.trianglePlaneIntersection=function(t,n,r,i){var a=i.normal,o=i.distance,u=e.dot(a,t)+o<0,s=e.dot(a,n)+o<0,c=e.dot(a,r)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,d;if((1===l||2===l)&&(f=new e,d=new e),1===l){if(u)return p.lineSegmentPlane(t,n,i,f),p.lineSegmentPlane(t,r,i,d),{positions:[t,n,r,f,d],indices:[0,3,4,1,2,4,1,4,3]};if(s)return p.lineSegmentPlane(n,r,i,f),p.lineSegmentPlane(n,t,i,d),{positions:[t,n,r,f,d],indices:[1,3,4,2,0,4,2,4,3]};if(c)return p.lineSegmentPlane(r,t,i,f),p.lineSegmentPlane(r,n,i,d),{positions:[t,n,r,f,d],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return p.lineSegmentPlane(n,t,i,f),p.lineSegmentPlane(r,t,i,d),{positions:[t,n,r,f,d],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return p.lineSegmentPlane(r,n,i,f),p.lineSegmentPlane(t,n,i,d),{positions:[t,n,r,f,d],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return p.lineSegmentPlane(t,r,i,f),p.lineSegmentPlane(n,r,i,d),{positions:[t,n,r,f,d],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,n,r,i){return t(e).then(n,r,i)}function t(e){var t,n;return e instanceof r?t=e:u(e)?(n=o(),e.then(function(e){n.resolve(e)},function(e){n.reject(e)},function(e){n.progress(e)}),t=n.promise):t=i(e),t}function n(t){return e(t,a)}function r(e){this.then=e}function i(e){var n=new r(function(n){try{return t(n?n(e):e)}catch(r){return a(r)}});return n}function a(e){var n=new r(function(n,r){try{return r?t(r(e)):a(e)}catch(i){return a(i)}});return n}function o(){function e(e,t,n){return d(e,t,n)}function n(e){return m(e)}function i(e){return m(a(e))}function u(e){return h(e)}var s,c,l,f,d,h,m;return c=new r(e),s={then:e,resolve:n,reject:i,progress:u,promise:c,resolver:{resolve:n,reject:i,progress:u}},l=[],f=[],d=function(e,t,n){var r,i;return r=o(),i="function"==typeof n?function(e){try{r.progress(n(e))}catch(t){r.progress(t)}}:function(e){r.progress(e)},l.push(function(n){n.then(e,t).then(r.resolve,r.reject,i)}),f.push(i),r.promise},h=function(e){return p(f,e),e},m=function(e){return e=t(e),d=e.then,m=t,h=v,p(l,e),f=l=S,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,n,r,i,a){return y(2,arguments),e(t,function(t){function u(e){p(e)}function s(e){m(e)}var c,l,f,d,h,m,p,y,w,g;if(w=t.length>>>0,c=Math.max(0,Math.min(n,w)),f=[],l=w-c+1,d=[],h=o(),c)for(y=h.progress,p=function(e){d.push(e),--l||(m=p=v,h.reject(d))},m=function(e){f.push(e),--c||(m=p=v,h.resolve(f))},g=0;w>g;++g)g in t&&e(t[g],s,u,y);else h.resolve(f);return h.then(r,i,a)})}function c(e,t,n,r){function i(e){return t?t(e[0]):e[0]}return s(e,1,i,n,r)}function l(e,t,n,r){return y(1,arguments),d(e,w).then(t,n,r)}function f(){return d(arguments,w)}function d(t,n){return e(t,function(t){var r,i,a,u,s,c;if(a=i=t.length>>>0,r=[],c=o(),a)for(u=function(t,i){e(t,n).then(function(e){r[i]=e,--a||c.resolve(r)},c.reject)},s=0;i>s;s++)s in t?u(t[s],s):--a;else c.resolve(r);return c.promise})}function h(t,n){var r=x.call(arguments,1);return e(t,function(t){var i;return i=t.length,r[0]=function(t,r,a){return e(t,function(t){return e(r,function(e){return n(t,e,a,i)})})},g.apply(t,r)})}function m(t,n,r){var i=arguments.length>2;return e(t,function(e){return e=i?r:e,n.resolve(e),e},function(e){return n.reject(e),a(e)},n.progress)}function p(e,t){for(var n,r=0;n=e[r++];)n(t)}function y(e,t){for(var n,r=t.length;r>e;)if(n=t[--r],null!=n&&"function"!=typeof n)throw new Error("arg "+r+" must be a function")}function v(){}function w(e){return e}var g,x,S;return e.defer=o,e.resolve=t,e.reject=n,e.join=f,e.all=l,e.map=d,e.reduce=h,e.any=c,e.some=s,e.chain=m,e.isPromise=u,r.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(S,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(S,t)})})}},x=[].slice,g=[].reduce||function(e){var t,n,r,i,a;if(a=0,t=Object(this),i=t.length>>>0,n=arguments,n.length<=1)for(;;){if(a in t){r=t[a++];break}if(++a>=i)throw new TypeError}else r=n[1];for(;i>a;++a)a in t&&(r=e(r,t[a],a,t));return r},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,n){for(var r,i,a=0,o=e.length-1;o>=a;)if(r=~~((a+o)/2),i=n(e[r],t),0>i)a=r+1;else{if(!(i>0))return r;o=r-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,n,r,i){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=r,this.ut1MinusUtc=i};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,n=0,r=t[n++],i=function(e,t,n,r){n||(n=" ");var i=e.length>=t?"":Array(1+t-e.length>>>0).join(n);return r?e+i:i+e},a=function(e,t,n,r,a,o){var u=r-e.length;return u>0&&(e=n||!a?i(e,r,o,n):e.slice(0,t.length)+i("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,n,r,o,u,s){var c=e>>>0;return n=n&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=n+i(c.toString(t),u||0,"0",!1),a(e,n,r,o,s)},u=function(e,t,n,r,i,o){return null!=r&&(e=e.slice(0,r)),a(e,"",t,n,i,o)},s=function(e,r,s,c,l,f,d){var h,m,p,y,v;if("%%"==e)return"%";for(var w=!1,g="",x=!1,S=!1,E=" ",M=s.length,O=0;s&&M>O;O++)switch(s.charAt(O)){case" ":g=" ";break;case"+":g="+";break;case"-":w=!0;break;case"'":E=s.charAt(O+1);break;case"0":x=!0;break;case"#":S=!0}if(c=c?"*"==c?+t[n++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,w=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(f=f?"*"==f?+t[n++]:"*"==f.charAt(0)?+t[f.slice(1,-1)]:+f:"fFeE".indexOf(d)>-1?6:"d"==d?0:void 0,v=r?t[r.slice(0,-1)]:t[n++],d){case"s":return u(String(v),w,c,f,x,E);case"c":return u(String.fromCharCode(+v),w,c,f,x);case"b":return o(v,2,S,w,c,f,x);case"o":return o(v,8,S,w,c,f,x);case"x":return o(v,16,S,w,c,f,x);case"X":return o(v,16,S,w,c,f,x).toUpperCase();case"u":return o(v,10,S,w,c,f,x);case"i":case"d":return h=+v||0,h=Math.round(h-h%1),m=0>h?"-":g,v=m+i(String(Math.abs(h)),f,"0",!1),a(v,m,w,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return h=+v,m=0>h?"-":g,p=["toExponential","toFixed","toPrecision"]["efg".indexOf(d.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(d)%2],v=m+Math.abs(h)[p](f),a(v,m,w,c,x)[y]();default:return e}};return r.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,n,r,i,a,o,u){this.year=e,this.month=t,this.day=n,this.hour=r,this.minute=i,this.second=a,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,n,r,i,a,o,u,s,c){"use strict";function l(e,t){return z.compare(e.julianDate,t.julianDate)}function f(e){w.julianDate=e;var n=z.leapSeconds,r=t(n,w,l);0>r&&(r=~r),r>=n.length&&(r=n.length-1);var i=n[r].offset;if(r>0){var a=z.secondsDifference(n[r].julianDate,e);a>i&&(r--,i=n[r].offset)}z.addSeconds(e,i,e)}function d(e,n){w.julianDate=e;var r=z.leapSeconds,i=t(r,w,l);if(0>i&&(i=~i),0===i)return z.addSeconds(e,-r[0].offset,n);if(i>=r.length)return z.addSeconds(e,-r[i-1].offset,n);var a=z.secondsDifference(r[i].julianDate,e);return 0===a?z.addSeconds(e,-r[i].offset,n):1>=a?void 0:z.addSeconds(e,-r[--i].offset,n)}function h(e,t,n){var r=0|t/s.SECONDS_PER_DAY;return e+=r,t-=s.SECONDS_PER_DAY*r,0>t&&(e--,t+=s.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function m(e,t,n,r,i,a,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+n-32075;r-=12,0>r&&(r+=24);var f=a+(r*s.SECONDS_PER_HOUR+i*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return f>=43200&&(l-=1),[l,f]}var p=new a,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,w=new u,g=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,S=/^(\d{4})-?(\d{3})$/,E=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,M=/^(\d{4})-?(\d{2})-?(\d{2})$/,O=/([Z+\-])?(\d{2})?:?(\d{2})?$/,_=/^(\d{2})(\.\d+)?/.source+O.source,P=/^(\d{2}):?(\d{2})(\.\d+)?/.source+O.source,R=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+O.source,C="Invalid ISO 8601 date.",z=function(e,t,r){this.dayNumber=void 0,this.secondsOfDay=void 0,e=n(e,0),t=n(t,0),r=n(r,c.UTC);var i=0|e;t+=(e-i)*s.SECONDS_PER_DAY,h(i,t,this),r===c.UTC&&f(this)};z.fromDate=function(e,t){var n=m(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return r(t)?(h(n[0],n[1],t),f(t),t):new z(n[0],n[1],c.UTC)},z.fromIso8601=function(e,t){e=e.replace(",",".");var n,a,u,s=e.split("T"),l=1,d=1,p=0,w=0,O=0,T=0,I=s[0],N=s[1];if(!r(I))throw new i(C);var b;if(s=I.match(M),null!==s){if(b=I.split("-").length-1,b>0&&2!==b)throw new i(C);n=+s[1],l=+s[2],d=+s[3]}else if(s=I.match(x),null!==s)n=+s[1],l=+s[2];else if(s=I.match(g),null!==s)n=+s[1];else{var A;if(s=I.match(S),null!==s){if(n=+s[1],A=+s[2],u=o(n),1>A||u&&A>366||!u&&A>365)throw new i(C)}else{if(s=I.match(E),null===s)throw new i(C);n=+s[1];var D=+s[2],q=+s[3]||0;if(b=I.split("-").length-1,b>0&&(!r(s[3])&&1!==b||r(s[3])&&2!==b))throw new i(C);var U=new Date(Date.UTC(n,0,4));A=7*D+q-U.getUTCDay()-3}a=new Date(Date.UTC(n,0,1)),a.setUTCDate(A),l=a.getUTCMonth()+1,d=a.getUTCDate()}if(u=o(n),1>l||l>12||1>d||(2!==l||!u)&&d>y[l-1]||u&&2===l&&d>v)throw new i(C);var L;if(r(N)){if(s=N.match(R),null!==s){if(b=N.split(":").length-1,b>0&&2!==b&&3!==b)throw new i(C);p=+s[1],w=+s[2],O=+s[3],T=1e3*+(s[4]||0),L=5}else if(s=N.match(P),null!==s){if(b=N.split(":").length-1,b>0&&1!==b)throw new i(C);p=+s[1],w=+s[2],O=60*+(s[3]||0),L=4}else{if(s=N.match(_),null===s)throw new i(C);p=+s[1],w=60*+(s[2]||0),L=3}if(w>=60||O>=61||p>24||24===p&&(w>0||O>0||T>0))throw new i(C);var W=s[L],B=+s[L+1],F=+(s[L+2]||0);switch(W){case"+":p-=B,w-=F;break;case"-":p+=B,w+=F;break;case"Z":break;default:w+=new Date(Date.UTC(n,l-1,d,p,w)).getTimezoneOffset()}}else w+=new Date(n,l-1,d).getTimezoneOffset();var k=60===O;for(k&&O--;w>=60;)w-=60,p++;for(;p>=24;)p-=24,d++;for(a=u&&2===l?v:y[l-1];d>a;)d-=a,l++,l>12&&(l-=12,n++),a=u&&2===l?v:y[l-1];for(;0>w;)w+=60,p--;for(;0>p;)p+=24,d--;for(;1>d;)l--,1>l&&(l+=12,n--),a=u&&2===l?v:y[l-1],d+=a;var j=m(n,l,d,p,w,O,T);return r(t)?(h(j[0],j[1],t),f(t)):t=new z(j[0],j[1],c.UTC),k&&z.addSeconds(t,1,t),t},z.now=function(e){return z.fromDate(new Date,e)};var T=new z(0,0,c.TAI);return z.toGregorianDate=function(e,t){var n=!1,i=d(e,T);r(i)||(z.addSeconds(e,-1,T),i=d(T,T),n=!0);var o=i.dayNumber,u=i.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var f=0|4e3*(c+1)/1461001;c=0|c-(0|1461*f/4)+31;var h=0|80*c/2447,m=0|c-(0|2447*h/80);c=0|h/11;var p=0|h+2-12*c,y=0|100*(l-49)+f+c,v=0|u/s.SECONDS_PER_HOUR,w=u-v*s.SECONDS_PER_HOUR,g=0|w/s.SECONDS_PER_MINUTE;w-=g*s.SECONDS_PER_MINUTE;var x=0|w,S=(w-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),n&&(x+=1),r(t)?(t.year=y,t.month=p,t.day=m,t.hour=v,t.minute=g,t.second=x,t.millisecond=S,t.isLeapSecond=n,t):new a(y,p,m,v,g,x,S,n)},z.toDate=function(e){var t=z.toGregorianDate(e,p),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))},z.toIso8601=function(t,n){var i,a=z.toGregorianDate(t,a);return r(n)||0===a.millisecond?r(n)&&0!==n?(i=(.01*a.millisecond).toFixed(n).replace(".","").slice(0,n),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,i)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",a.year,a.month,a.day,a.hour,a.minute,a.second):(i=(.01*a.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,i))},z.clone=function(e,t){return r(e)?r(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new z(e.dayNumber,e.secondsOfDay,c.TAI):void 0},z.compare=function(e,t){var n=e.dayNumber-t.dayNumber;return 0!==n?n:e.secondsOfDay-t.secondsOfDay},z.equals=function(e,t){return e===t||r(e)&&r(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},z.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(z.secondsDifference(e,t))<=n},z.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},z.secondsDifference=function(e,t){var n=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return n+(e.secondsOfDay-t.secondsOfDay)},z.daysDifference=function(e,t){var n=e.dayNumber-t.dayNumber,r=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return n+r},z.computeTaiMinusUtc=function(e){w.julianDate=e;var n=z.leapSeconds,r=t(n,w,l);return 0>r&&(r=~r,--r,0>r&&(r=0)),n[r].offset},z.addSeconds=function(e,t,n){return h(e.dayNumber,e.secondsOfDay+t,n)},z.addMinutes=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return h(e.dayNumber,r,n)},z.addHours=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return h(e.dayNumber,r,n)},z.addDays=function(e,t,n){var r=e.dayNumber+t;return h(r,e.secondsOfDay,n)},z.lessThan=function(e,t){return z.compare(e,t)<0},z.lessThanOrEquals=function(e,t){return z.compare(e,t)<=0},z.greaterThan=function(e,t){return z.compare(e,t)>0},z.greaterThanOrEquals=function(e,t){return z.compare(e,t)>=0},z.prototype.clone=function(e){return z.clone(this,e)},z.prototype.equals=function(e){return z.equals(this,e)},z.prototype.equalsEpsilon=function(e,t){return z.equalsEpsilon(this,e,t)},z.prototype.toString=function(){return z.toIso8601(this)},z.leapSeconds=[new u(new z(2441317,43210,c.TAI),10),new u(new z(2441499,43211,c.TAI),11),new u(new z(2441683,43212,c.TAI),12),new u(new z(2442048,43213,c.TAI),13),new u(new z(2442413,43214,c.TAI),14),new u(new z(2442778,43215,c.TAI),15),new u(new z(2443144,43216,c.TAI),16),new u(new z(2443509,43217,c.TAI),17),new u(new z(2443874,43218,c.TAI),18),new u(new z(2444239,43219,c.TAI),19),new u(new z(2444786,43220,c.TAI),20),new u(new z(2445151,43221,c.TAI),21),new u(new z(2445516,43222,c.TAI),22),new u(new z(2446247,43223,c.TAI),23),new u(new z(2447161,43224,c.TAI),24),new u(new z(2447892,43225,c.TAI),25),new u(new z(2448257,43226,c.TAI),26),new u(new z(2448804,43227,c.TAI),27),new u(new z(2449169,43228,c.TAI),28),new u(new z(2449534,43229,c.TAI),29),new u(new z(2450083,43230,c.TAI),30),new u(new z(2450630,43231,c.TAI),31),new u(new z(2451179,43232,c.TAI),32),new u(new z(2453736,43233,c.TAI),33),new u(new z(2454832,43234,c.TAI),34),new u(new z(2456109,43235,c.TAI),35),new u(new z(2457204,43236,c.TAI),36)],z}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(n,r){if(null===n||"object"!=typeof n)return n;r=e(r,!1);var i=new n.constructor;for(var a in n)if(n.hasOwnProperty(a)){var o=n[a];r&&(o=t(o,r)),i[a]=o}return i};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var n=e.split("\r\n"),r=0;r<n.length;++r){var i=n[r],a=i.indexOf(": ");if(a>0){var o=i.substring(0,a),u=i.substring(a+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var n=function(e,n,r){this.statusCode=e,this.response=n,this.responseHeaders=r,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return n.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},n}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,n,r,i,a){"use strict";function o(e,t){var n=decodeURIComponent(t);return e?atob(n):n}function u(e,t){for(var n=o(e,t),r=new ArrayBuffer(n.length),i=new Uint8Array(r),a=0;a<n.length;a++)i[a]=n.charCodeAt(a);return r}function s(e,n){n=t(n,"");var i=e[1],a=!!e[2],s=e[3];switch(n){case"":case"text":return o(a,s);case"arraybuffer":return u(a,s);case"blob":var c=u(a,s);return new Blob([c],{type:i});case"document":var l=new DOMParser;return l.parseFromString(o(a,s),i);case"json":return JSON.parse(o(a,s));default:throw new r("Unhandled responseType: "+n)}}var c=function(n){n=t(n,t.EMPTY_OBJECT);var r=n.responseType,i=t(n.method,"GET"),a=n.data,o=n.headers,u=n.overrideMimeType;return e(n.url,function(t){var n=e.defer();return c.load(t,r,i,a,o,n,u),n.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,r,o,u,c,f){var d=l.exec(e);if(null!==d)return c.resolve(s(d,t)),void 0;var h=new XMLHttpRequest;if(n(f)&&n(h.overrideMimeType)&&h.overrideMimeType(f),h.open(r,e,!0),n(u))for(var m in u)u.hasOwnProperty(m)&&h.setRequestHeader(m,u[m]);n(t)&&(h.responseType=t),h.onload=function(){200===h.status?n(h.response)?c.resolve(h.response):n(h.responseXML)&&h.responseXML.hasChildNodes()?c.resolve(h.responseXML):n(h.responseText)?c.resolve(h.responseText):c.reject(new a("unknown XMLHttpRequest response type.")):c.reject(new i(h.status,h.response,h.getAllResponseHeaders()))},h.onerror=function(){c.reject(new i)},h.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,n){return e({url:t,headers:n})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,n,r){"use strict";var i={Accept:"application/json,*/*;q=0.01"},a=function(n,a){return t(a)?t(a.Accept)||(a=e(a),a.Accept=i.Accept):a=i,r(n,a).then(function(e){return JSON.parse(e)})};return a}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,n,r,i,a,o,u,s,c,l,f){"use strict";function d(e,t){return o.compare(e.julianDate,t)}function h(e,n){if(!r(n.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!r(n.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var i=n.columnNames.indexOf("modifiedJulianDateUtc"),a=n.columnNames.indexOf("xPoleWanderRadians"),s=n.columnNames.indexOf("yPoleWanderRadians"),c=n.columnNames.indexOf("ut1MinusUtcSeconds"),h=n.columnNames.indexOf("xCelestialPoleOffsetRadians"),m=n.columnNames.indexOf("yCelestialPoleOffsetRadians"),p=n.columnNames.indexOf("taiMinusUtcSeconds");if(0>i||0>a||0>s||0>c||0>h||0>m||0>p)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=n.samples,v=e._dates=[];e._dateColumn=i,e._xPoleWanderRadiansColumn=a,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=h,e._yCelestialPoleOffsetRadiansColumn=m,e._taiMinusUtcSecondsColumn=p,e._columnCount=n.columnNames.length,e._lastIndex=void 0;for(var w,g=e._addNewLeapSeconds,x=0,S=y.length;S>x;x+=e._columnCount){var E=y[x+i],M=y[x+p],O=E+l.MODIFIED_JULIAN_DATE_DIFFERENCE,_=new o(O,M,f.TAI);if(v.push(_),g){if(M!==w&&r(w)){var P=o.leapSeconds,R=t(P,_,d);if(0>R){var C=new u(_,M);P.splice(~R,0,C)}}w=M}}}function m(e,t,n,r,i){var a=n*r;i.xPoleWander=t[a+e._xPoleWanderRadiansColumn],i.yPoleWander=t[a+e._yPoleWanderRadiansColumn],i.xPoleOffset=t[a+e._xCelestialPoleOffsetRadiansColumn],i.yPoleOffset=t[a+e._yCelestialPoleOffsetRadiansColumn],i.ut1MinusUtc=t[a+e._ut1MinusUtcSecondsColumn]}function p(e,t,n){return t+e*(n-t)}function y(e,t,n,r,i,a,u){var s=e._columnCount;if(a>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u;var c=t[i],l=t[a];if(c.equals(l)||r.equals(c))return m(e,n,i,s,u),u;if(r.equals(l))return m(e,n,a,s,u),u;var f=o.secondsDifference(r,c)/o.secondsDifference(l,c),d=i*s,h=a*s,y=n[d+e._ut1MinusUtcSecondsColumn],v=n[h+e._ut1MinusUtcSecondsColumn],w=v-y;if(w>.5||-.5>w){var g=n[d+e._taiMinusUtcSecondsColumn],x=n[h+e._taiMinusUtcSecondsColumn];g!==x&&(l.equals(r)?y=v:v-=x-g)}return u.xPoleWander=p(f,n[d+e._xPoleWanderRadiansColumn],n[h+e._xPoleWanderRadiansColumn]),u.yPoleWander=p(f,n[d+e._yPoleWanderRadiansColumn],n[h+e._yPoleWanderRadiansColumn]),u.xPoleOffset=p(f,n[d+e._xCelestialPoleOffsetRadiansColumn],n[h+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=p(f,n[d+e._yCelestialPoleOffsetRadiansColumn],n[h+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=p(f,y,v),u}var v=function(t){if(t=n(t,n.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=n(t.addNewLeapSeconds,!0),r(t.data))h(this,t.data);else if(r(t.url)){var i=this;this._downloadPromise=e(s(t.url),function(e){h(i,e)},function(){i._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else h(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]}) +};return v.NONE=a({getPromiseToLoad:function(){return e()},compute:function(e,t){return r(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new i(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,n){if(!r(this._samples)){if(r(this._dataError))throw new c(this._dataError);return void 0}if(r(n)||(n=new i(0,0,0,0,0)),0===this._samples.length)return n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0,n;var a=this._dates,u=this._lastIndex,s=0,l=0;if(r(u)){var f=a[u],d=a[u+1],h=o.lessThanOrEquals(f,e),m=!r(d),p=m||o.greaterThanOrEquals(d,e);if(h&&p)return s=u,!m&&d.equals(e)&&++s,l=s+1,y(this,a,this._samples,e,s,l,n),n}var v=t(a,e,o.compare,this._dateColumn);return v>=0?(v<a.length-1&&a[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,a,this._samples,e,s,l,n),n},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var n=r.exec(t);this.scheme=n[1],this.authority=n[2],this.path=n[3],this.query=n[4],this.fragment=n[5]}}function t(e){var t=unescape(e);return a.test(t)?t:e.toUpperCase()}function n(e,t,n,r){return(t||"")+n.toLowerCase()+(r||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var r=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,n).replace(i,t)),this.path&&(this.path=this.path.replace(i,t)),this.query&&(this.query=this.query.replace(i,t)),this.fragment&&(this.fragment=this.fragment.replace(i,t))};var i=/%[0-9a-z]{2}/gi,a=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var n=new e;return this.scheme?(n.scheme=this.scheme,n.authority=this.authority,n.path=this.path,n.query=this.query):(n.scheme=t.scheme,this.authority?(n.authority=this.authority,n.path=this.path,n.query=this.query):(n.authority=t.authority,""==this.path?(n.path=t.path,n.query=this.query||t.query):("/"==this.path.charAt(0)?(n.path=this.path,n.removeDotSegments()):(n.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,n.removeDotSegments()),n.query=this.query))),n.fragment=this.fragment,n},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),n=[],r=""==t[0];for(r&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?n.pop():"."!=e&&n.push(e);("."==e||".."==e)&&n.push(""),r&&n.unshift(""),this.path=n.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,n,r){"use strict";function i(){for(var e=document.getElementsByTagName("script"),t=0,n=e.length;n>t;++t){var r=e[t].getAttribute("src"),i=f.exec(r);if(null!==i)return i[1]}return void 0}function a(){if(t(s))return s;var r;if(r="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:i(),!t(r))throw new n("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(r).resolve(new e(document.location.href))}function o(e){return r.toUrl("../"+e)}function u(t){return new e(t).resolve(a()).toString()}var s,c,l,f=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,d=function(e){t(c)||(c=t(r.toUrl)?o:u),t(l)||(l=document.createElement("a"));var n=c(e);return l.href=n,l.href=l.href,l.href};return d._cesiumScriptRegex=f,d.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},d}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,n){this.x=e,this.y=t,this.s=n};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,n,r,i,a,o,u){"use strict";function s(e,t,n){var r=f;return r.dayNumber=t,r.secondsOfDay=n,a.daysDifference(r,e._sampleZeroDateTT)}function c(n,i){if(n._chunkDownloadsInProgress[i])return n._chunkDownloadsInProgress[i];var a=e.defer();n._chunkDownloadsInProgress[i]=a;var u,s=n._xysFileUrlTemplate;return u=r(s)?s.replace("{0}",i):t("Assets/IAU2006_XYS/IAU2006_XYS_"+i+".json"),e(o(u),function(e){n._chunkDownloadsInProgress[i]=!1;for(var t=n._samples,r=e.samples,o=3*i*n._samplesPerXysFile,u=0,s=r.length;s>u;++u)t[o+u]=r[u];a.resolve()}),a.promise}var l=function(e){e=n(e,n.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=n(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=n(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new a(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=n(e.stepSizeDays,1),this._samplesPerXysFile=n(e.samplesPerXysFile,1e3),this._totalSamples=n(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,r=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){r[s]=o,i[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(r[s]*=s-c);r[s]=1/r[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},f=new a(0,0,u.TAI);return l.prototype.preload=function(t,n,r,i){var a=s(this,t,n),o=s(this,r,i),u=0|a/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var f=0|u/this._samplesPerXysFile,d=0|l/this._samplesPerXysFile,h=[],m=f;d>=m;++m)h.push(c(this,m));return e.all(h)},l.prototype.computeXysRadians=function(e,t,n){var a=s(this,e,t);if(0>a)return void 0;var o=0|a/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var f=l+u;f>=this._totalSamples&&(f=this._totalSamples-1,l=f-u,0>l&&(l=0));var d=!1,h=this._samples;if(r(h[3*l])||(c(this,0|l/this._samplesPerXysFile),d=!0),r(h[3*f])||(c(this,0|f/this._samplesPerXysFile),d=!0),d)return void 0;r(n)?(n.x=0,n.y=0,n.s=0):n=new i(0,0,0);var m,p,y=a-l*this._stepSizeDays,v=this._work,w=this._denominators,g=this._coef,x=this._xTable;for(m=0;u>=m;++m)v[m]=y-x[m];for(m=0;u>=m;++m){for(g[m]=1,p=0;u>=p;++p)p!==m&&(g[m]*=v[p]);g[m]*=w[m];var S=3*(l+m);n.x+=g[m]*h[S++],n.y+=g[m]*h[S++],n.s+=g[m]*h[S]}return n},l}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return t(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(e(n))return n;n=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof t[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof t[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",e(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",e(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",e(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",e(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(e){i.supportsFullscreen()&&e[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,n){"use strict";function r(e){for(var t=e.split("."),n=0,r=t.length;r>n;++n)t[n]=parseInt(t[n],10);return t}function i(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=r(e[1]))}return y}function a(){return i()&&v}function o(){if(!t(w)&&(w=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(w=!0,g=r(e[1]))}return w}function u(){return o()&&g}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,S=r(e[1]),S.isNightly=!!e[2])}return x}function c(){return s()&&S}function l(){if(!t(E)){E=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(E=!0,M=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(E=!0,M=r(e[1])))}return E}function f(){return l()&&M}function d(){if(!t(O)){O=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(O=!0,_=r(e[1]))}return O}function h(){return t(P)||(P=/Windows/i.test(navigator.appVersion)),P}function m(){return d()&&_}function p(){return t(R)||(R=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),R}var y,v,w,g,x,S,E,M,O,_,P,R,C={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:d,firefoxVersion:m,isWindows:h,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return C.supportsFullscreen=function(){return n.supportsFullscreen()},C.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},C.supportsWebWorkers=function(){return"undefined"!=typeof Worker},C}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,n,r,i,a,o,u){"use strict";var s=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)},c=new e;s.fromAxisAngle=function(t,r,i){var a=r/2,o=Math.sin(a);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,d=Math.cos(a);return n(i)?(i.x=u,i.y=l,i.z=f,i.w=d,i):new s(u,l,f,d)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var r,i,a,o,c,d=e[u.COLUMN0ROW0],h=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],p=d+h+m;if(p>0)r=Math.sqrt(p+1),c=.5*r,r=.5/r,i=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*r,a=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*r,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*r;else{var y=l,v=0;h>d&&(v=1),m>d&&m>h&&(v=2);var w=y[v],g=y[w];r=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(w,w)]-e[u.getElementIndex(g,g)]+1);var x=f;x[v]=.5*r,r=.5/r,c=(e[u.getElementIndex(g,w)]-e[u.getElementIndex(w,g)])*r,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*r,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*r,i=-x[0],a=-x[1],o=-x[2]}return n(t)?(t.x=i,t.y=a,t.z=o,t.w=c,t):new s(i,a,o,c)};var d=new s;s.fromHeadingPitchRoll=function(t,n,r,i){var a=s.fromAxisAngle(e.UNIT_X,r,d),o=s.fromAxisAngle(e.UNIT_Y,-n,i);i=s.multiply(o,a,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,d);return s.multiply(u,i,i)};var h=new e,m=new e,p=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},s.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new s),i.x=e[r],i.y=e[r+1],i.z=e[r+2],i.w=e[r+3],i},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,n,r){s.unpack(e,4*n,v),s.conjugate(v,v);for(var i=0,a=n-t+1;a>i;i++){var o=3*i;s.unpack(e,4*(t+i),p),s.multiply(p,v,p),p.w<0&&s.negate(p,p),s.computeAxis(p,h);var u=s.computeAngle(p);r[o]=h.x*u,r[o+1]=h.y*u,r[o+2]=h.z*u}},s.unpackInterpolationResult=function(t,r,i,a,o){n(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(r,4*a,y),0===u?s.clone(s.IDENTITY,p):s.fromAxisAngle(m,u,p),s.multiply(p,y,o)},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var n=1/s.magnitude(e),r=e.x*n,i=e.y*n,a=e.z*n,o=e.w*n;return t.x=r,t.y=i,t.z=a,t.w=o,t},s.inverse=function(e,t){var n=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/n,t)},s.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},s.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+r*l+i*c-a*s,d=o*s-r*c+i*l+a*u,h=o*c+r*s-i*u+a*l,m=o*l-r*u-i*s-a*c;return n.x=f,n.y=d,n.z=h,n.w=m,n},s.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},s.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},s.computeAxis=function(e,t){var n=e.w;if(Math.abs(n-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var r=1/Math.sqrt(1-n*n);return t.x=e.x*r,t.y=e.y*r,t.z=e.z*r,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var w=new s;s.lerp=function(e,t,n,r){return w=s.multiplyByScalar(t,n,w),r=s.multiplyByScalar(e,1-n,r),s.add(w,r,r)};var g=new s,x=new s,S=new s;s.slerp=function(e,t,n,r){var i=s.dot(e,t),a=t;if(0>i&&(i=-i,a=g=s.negate(t,g)),1-i<o.EPSILON6)return s.lerp(e,a,n,r);var u=Math.acos(i);return x=s.multiplyByScalar(e,Math.sin((1-n)*u),x),S=s.multiplyByScalar(a,Math.sin(n*u),S),r=s.add(x,S,r),s.multiplyByScalar(r,1/Math.sin(u),r)},s.log=function(t,n){var r=o.acosClamped(t.w),i=0;return 0!==r&&(i=r/Math.sin(r)),e.multiplyByScalar(t,i,n)},s.exp=function(t,n){var r=e.magnitude(t),i=0;return 0!==r&&(i=Math.sin(r)/r),n.x=t.x*i,n.y=t.y*i,n.z=t.z*i,n.w=Math.cos(r),n};var E=new e,M=new e,O=new s,_=new s;s.computeInnerQuadrangle=function(t,n,r,i){var a=s.conjugate(n,O);s.multiply(a,r,_);var o=s.log(_,E);s.multiply(a,t,_);var u=s.log(_,M);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,O),s.multiply(n,O,i)},s.squad=function(e,t,n,r,i,a){var o=s.slerp(e,t,i,O),u=s.slerp(n,r,i,_);return s.slerp(o,u,2*i*(1-i),a)};for(var P=new s,R=1.9011074535173003,C=i.supportsTypedArrays()?new Float32Array(8):[],z=i.supportsTypedArrays()?new Float32Array(8):[],T=i.supportsTypedArrays()?new Float32Array(8):[],I=i.supportsTypedArrays()?new Float32Array(8):[],N=0;7>N;++N){var b=N+1,A=2*b+1;C[N]=1/(b*A),z[N]=b/A}return C[7]=R/136,z[7]=8*R/17,s.fastSlerp=function(e,t,n,r){var i,a=s.dot(e,t);a>=0?i=1:(i=-1,a=-a);for(var o=a-1,u=1-n,c=n*n,l=u*u,f=7;f>=0;--f)T[f]=(C[f]*c-z[f])*o,I[f]=(C[f]*l-z[f])*o;var d=i*n*(1+T[0]*(1+T[1]*(1+T[2]*(1+T[3]*(1+T[4]*(1+T[5]*(1+T[6]*(1+T[7])))))))),h=u*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),m=s.multiplyByScalar(e,h,P);return s.multiplyByScalar(t,d,r),s.add(m,r,r)},s.fastSquad=function(e,t,n,r,i,a){var o=s.fastSlerp(e,t,i,O),u=s.fastSlerp(n,r,i,_);return s.fastSlerp(o,u,2*i*(1-i),a)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},s.ZERO=a(new s(0,0,0,0)),s.IDENTITY=a(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,n,r,i,a,o,u,s,c,l,f,d,h,m,p,y,v){"use strict";var w={},g=new n,x=new n,S=new n;w.eastNorthUpToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return a(r)?(r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=-o,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=g,s=x,l=S;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),a(r)?(r[0]=s.x,r[1]=s.y,r[2]=s.z,r[3]=0,r[4]=l.x,r[5]=l.y,r[6]=l.z,r[7]=0,r[8]=u.x,r[9]=u.y,r[10]=u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var E=new n,M=new n,O=new n;w.northEastDownToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return a(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=-o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=E,s=M,l=O;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),a(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=s.x,r[5]=s.y,r[6]=s.z,r[7]=0,r[8]=-u.x,r[9]=-u.y,r[10]=-u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},w.northUpEastToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return a(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=o,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=g,s=x,l=S;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),a(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=u.x,r[5]=u.y,r[6]=u.z,r[7]=0,r[8]=s.x,r[9]=s.y,r[10]=s.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var _=new y,P=new n(1,1,1),R=new p;w.headingPitchRollToFixedFrame=function(e,t,r,i,a,o){var u=y.fromHeadingPitchRoll(t,r,i,_),s=p.fromTranslationQuaternionRotationScale(n.ZERO,u,P,R);return o=w.eastNorthUpToFixedFrame(e,a,o),p.multiply(o,s,o)};var C=new p,z=new m;w.headingPitchRollQuaternion=function(e,t,n,r,i,a){var o=w.headingPitchRollToFixedFrame(e,t,n,r,i,C),u=p.getRotation(o,z);return y.fromRotationMatrix(u,a)};var T=24110.54841,I=8640184.812866,N=.093104,b=-62e-7,A=1.1772758384668e-19,D=72921158553e-15,q=h.TWO_PI/86400,U=new d;w.computeTemeToPseudoFixedMatrix=function(e,t){U=d.addSeconds(e,-d.computeTaiMinusUtc(e),U);var n,r=U.dayNumber,i=U.secondsOfDay,o=r-2451545;n=i>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=T+n*(I+n*(N+n*b)),s=u*q%h.TWO_PI,c=D+A*(r-2451545.5),l=(i+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,f=s+c*l,p=Math.cos(f),y=Math.sin(f);return a(t)?(t[0]=p,t[1]=-y,t[2]=0,t[3]=y,t[4]=p,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new m(p,y,0,-y,p,0,0,0,1)},w.iau2006XysData=new l,w.earthOrientationParameters=u.NONE;var L=32.184,W=2451545;w.preloadIcrfFixed=function(t){var n=t.start.dayNumber,r=t.start.secondsOfDay+L,i=t.stop.dayNumber,a=t.stop.secondsOfDay+L,o=w.iau2006XysData.preload(n,r,i,a),u=w.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},w.computeIcrfToFixedMatrix=function(e,t){a(t)||(t=new m);var n=w.computeFixedToIcrfMatrix(e,t);return a(n)?m.transpose(n,t):void 0};var B=new f(0,0,0),F=new s(0,0,0,0,0,0),k=new m,j=new m;w.computeFixedToIcrfMatrix=function(e,t){a(t)||(t=new m);var n=w.earthOrientationParameters.compute(e,F);if(!a(n))return void 0;var r=e.dayNumber,i=e.secondsOfDay+L,o=w.iau2006XysData.computeXysRadians(r,i,B);if(!a(o))return void 0;var u=o.x+n.xPoleOffset,s=o.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=k;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var f=m.fromRotationZ(-o.s,j),p=m.multiply(l,f,k),y=e.dayNumber,g=e.secondsOfDay-d.computeTaiMinusUtc(e)+n.ut1MinusUtc,x=y-2451545,S=g/v.SECONDS_PER_DAY,E=.779057273264+S+.00273781191135448*(x+S);E=E%1*h.TWO_PI;var M=m.fromRotationZ(E,j),O=m.multiply(p,M,k),_=Math.cos(n.xPoleWander),P=Math.cos(n.yPoleWander),R=Math.sin(n.xPoleWander),C=Math.sin(n.yPoleWander),z=r-W+i/v.SECONDS_PER_DAY;z/=36525;var T=-47e-6*z*h.RADIANS_PER_DEGREE/3600,I=Math.cos(T),N=Math.sin(T),b=j;return b[0]=_*I,b[1]=_*N,b[2]=R,b[3]=-P*N+C*R*I,b[4]=P*I+C*R*N,b[5]=-C*_,b[6]=-C*N-P*R*I,b[7]=C*I-P*R*N,b[8]=P*_,m.multiply(O,b,t)};var V=new r;w.pointToWindowCoordinates=function(e,t,n,r){return r=w.pointToGLWindowCoordinates(e,t,n,r),r.y=2*t[5]-r.y,r},w.pointToGLWindowCoordinates=function(e,n,i,o){a(o)||(o=new t);var u=V;return p.multiplyByVector(e,r.fromElements(i.x,i.y,i.z,1,u),u),r.multiplyByScalar(u,1/u.w,u),p.multiplyByVector(n,u,u),t.fromCartesian4(u,o)};var Z=new n,H=new n,Y=new n;return w.rotationMatrixFromPositionVelocity=function(e,t,r,o){var u=i(r,c.WGS84).geodeticSurfaceNormal(e,Z),s=n.cross(t,u,H);n.equalsEpsilon(s,n.ZERO,h.EPSILON6)&&(s=n.clone(n.UNIT_X,s));var l=n.cross(s,t,Y);return n.cross(t,l,s),n.negate(s,s),a(o)||(o=new m),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},w}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,n,r,i,a,o,u,s,c,l,f,d,h,m){"use strict";var p=new r,y=function(e,t){t=i(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var r=m.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=n.fromCartesian4(f.getColumn(r,0,p)),this._yAxis=n.fromCartesian4(f.getColumn(r,1,p));var a=n.fromCartesian4(f.getColumn(r,2,p));this._plane=d.fromPointNormal(e,a)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,n){var r=e.fromPoints(t,v);return new y(r.center,n)};var w=new h,g=new n;y.prototype.projectPointOntoPlane=function(e,r){var i=w;i.origin=e,n.normalize(e,i.direction);var o=c.rayPlane(i,this._plane,g);if(a(o)||(n.negate(i.direction,i.direction),o=c.rayPlane(i,this._plane,g)),a(o)){var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return a(r)?(r.x=s,r.y=l,r):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){a(t)||(t=[]);for(var n=0,r=e.length,i=0;r>i;i++){var o=this.projectPointOntoPlane(e[i],t[n]);a(o)&&(t[n]=o,n++)}return t.length=n,t},y.prototype.projectPointToNearestOnPlane=function(e,r){a(r)||(r=new t);var i=w;i.origin=e,n.clone(this._plane.normal,i.direction);var o=c.rayPlane(i,this._plane,g);a(o)||(n.negate(i.direction,i.direction),o=c.rayPlane(i,this._plane,g));var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return r.x=s,r.y=l,r},y.prototype.projectPointsToNearestOnPlane=function(e,t){a(t)||(t=[]);var n=e.length;t.length=n;for(var r=0;n>r;r++)t[r]=this.projectPointToNearestOnPlane(e[r],t[r]);return t};var x=new n;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var r=e.length;a(t)?t.length=r:t=new Array(r);for(var i=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;r>l;++l){var f=e[l];n.multiplyByScalar(u,f.x,c),a(t[l])||(t[l]=new n);var d=n.add(o,c,t[l]);n.multiplyByScalar(s,f.y,c),n.add(d,c,d),i.scaleToGeocentricSurface(d,d)}return t},y}),define("Core/OrientedBoundingBox",["./Cartesian2","./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Intersect","./Plane","./Rectangle","./Math","./Matrix3"],function(e,t,n,r,i,a,o,u,s,c,l,f,d){"use strict";var h=function(e,n){this.center=t.clone(r(e,t.ZERO)),this.halfAxes=d.clone(r(n,d.ZERO))},m=new t,p=new t,y=function(e,n,r,a,o,u,s,c){i(c)||(c=new h);var l=c.halfAxes;d.setColumn(l,0,e.xAxis,l),d.setColumn(l,1,e.yAxis,l),d.setColumn(l,2,e.zAxis,l);var f=m;f.x=(n+r)/2,f.y=(a+o)/2,f.z=(u+s)/2;var y=p;y.x=(r-n)/2,y.y=(o-a)/2,y.z=(s-u)/2;var v=c.center;return f=d.multiplyByVector(l,f,f),t.add(e.origin,f,v),d.multiplyByScale(l,y,l),c},v=new n,w=new t,g=[new n,new n,new n,new n,new n,new n,new n,new n],x=[new t,new t,new t,new t,new t,new t,new t,new t],S=[new e,new e,new e,new e,new e,new e,new e,new e];return h.fromRectangle=function(e,t,n,i,a){t=r(t,0),n=r(n,0),i=r(i,o.WGS84);var s=l.center(e,v),f=i.cartographicToCartesian(s,w),d=new u(f,i),h=d.plane,m=g[0],p=g[1],E=g[2],M=g[3],O=g[4],_=g[5],P=g[6],R=g[7],C=s.longitude,z=e.south<0&&e.north>0?0:s.latitude;P.latitude=_.latitude=O.latitude=e.south,R.latitude=M.latitude=z,m.latitude=p.latitude=E.latitude=e.north,P.longitude=R.longitude=m.longitude=e.west,_.longitude=p.longitude=C,O.longitude=M.longitude=E.longitude=e.east,E.height=p.height=m.height=R.height=P.height=_.height=O.height=M.height=n,i.cartographicArrayToCartesianArray(g,x),d.projectPointsToNearestOnPlane(x,S);var T=Math.min(S[6].x,S[7].x,S[0].x),I=Math.max(S[2].x,S[3].x,S[4].x),N=Math.min(S[4].y,S[5].y,S[6].y),b=Math.max(S[0].y,S[1].y,S[2].y);E.height=m.height=O.height=P.height=t,i.cartographicArrayToCartesianArray(g,x);var A=Math.min(c.getPointDistance(h,x[0]),c.getPointDistance(h,x[2]),c.getPointDistance(h,x[4]),c.getPointDistance(h,x[6])),D=n;return y(d,T,I,N,b,A,D,a)},h.clone=function(e,n){return i(e)?i(n)?(t.clone(e.center,n.center),d.clone(e.halfAxes,n.halfAxes),n):new h(e.center,e.halfAxes):void 0},h.intersectPlane=function(e,n){var r=e.center,i=n.normal,a=e.halfAxes,o=i.x,u=i.y,c=i.z,l=Math.abs(o*a[d.COLUMN0ROW0]+u*a[d.COLUMN0ROW1]+c*a[d.COLUMN0ROW2])+Math.abs(o*a[d.COLUMN1ROW0]+u*a[d.COLUMN1ROW1]+c*a[d.COLUMN1ROW2])+Math.abs(o*a[d.COLUMN2ROW0]+u*a[d.COLUMN2ROW1]+c*a[d.COLUMN2ROW2]),f=t.dot(i,r)+n.distance;return-l>=f?s.OUTSIDE:f>=l?s.INSIDE:s.INTERSECTING},h.prototype.intersectPlane=function(e){return h.intersectPlane(this,e)},h.equals=function(e,n){return e===n||i(e)&&i(n)&&t.equals(e.center,n.center)&&d.equals(e.halfAxes,n.halfAxes)},h.prototype.clone=function(e){return h.clone(this,e)},h.prototype.equals=function(e){return h.equals(this,e)},h}),define("Core/formatError",["./defined"],function(e){"use strict";var t=function(t){var n,r=t.name,i=t.message;n=e(r)&&e(i)?r+": "+i:t.toString();var a=t.stack;return e(a)&&(n+="\n"+a),n};return t}),define("Workers/createTaskProcessorWorker",["../Core/defaultValue","../Core/defined","../Core/formatError"],function(e,t,n){"use strict";var r=function(r){var i,a=[],o={id:void 0,result:void 0,error:void 0};return function(u){var s=u.data;a.length=0,o.id=s.id,o.error=void 0,o.result=void 0;try{o.result=r(s.parameters,a)}catch(c){o.error=c instanceof Error?{name:c.name,message:c.message,stack:c.stack}:c}t(i)||(i=e(self.webkitPostMessage,self.postMessage)),s.canTransferArrayBuffer||(a.length=0);try{i(o,a)}catch(c){o.result=void 0,o.error="postMessage failed with error: "+n(c)+"\n with responseMessage: "+JSON.stringify(o),i(o)}}};return r}),define("Workers/createVerticesFromHeightmap",["../Core/BoundingSphere","../Core/Ellipsoid","../Core/EllipsoidalOccluder","../Core/HeightmapTessellator","../Core/Math","../Core/OrientedBoundingBox","../Core/Rectangle","./createTaskProcessorWorker"],function(e,t,n,r,i,a,o,u){"use strict";function s(u,s){var c=6,l=u.width,f=u.height;u.skirtHeight>0&&(l+=2,f+=2);var d=new Float32Array(l*f*c);s.push(d.buffer),u.ellipsoid=t.clone(u.ellipsoid),u.rectangle=o.clone(u.rectangle),u.vertices=d;var h,m=r.computeVertices(u),p=e.fromVertices(d,u.relativeToCenter,c);u.rectangle.width<i.PI_OVER_TWO+i.EPSILON5&&(h=a.fromRectangle(u.rectangle,m.minimumHeight,m.maximumHeight,u.ellipsoid));var y=u.ellipsoid,v=new n(y),w=v.computeHorizonCullingPointFromVertices(u.relativeToCenter,d,c,u.relativeToCenter);return{vertices:d.buffer,numberOfAttributes:c,minimumHeight:m.minimumHeight,maximumHeight:m.maximumHeight,gridWidth:l,gridHeight:f,boundingSphere3D:p,orientedBoundingBox:h,occludeePointInScaledSpace:w}}return u(s)})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js b/libs/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js new file mode 100644 index 0000000000..96d5bf205f --- /dev/null +++ b/libs/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js @@ -0,0 +1,58 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +!function(){define("Core/defined",[],function(){"use strict";var t=function(t){return void 0!==t};return t}),define("Core/freezeObject",["./defined"],function(t){"use strict";var e=Object.freeze;return t(e)||(e=function(t){return t}),e}),define("Core/defaultValue",["./freezeObject"],function(t){"use strict";var e=function(t,e){return void 0!==t?t:e};return e.EMPTY_OBJECT=t({}),e}),define("Core/DeveloperError",["./defined"],function(t){"use strict";var e=function(t){this.name="DeveloperError",this.message=t;var e;try{throw new Error}catch(r){e=r.stack}this.stack=e};return e.prototype.toString=function(){var e=this.name+": "+this.message;return t(this.stack)&&(e+="\n"+this.stack.toString()),e},e.throwInstantiationError=function(){throw new e("This function defines an interface and should not be called directly.")},e}),define("ThirdParty/mersenne-twister",[],function(){var t=function(t){void 0==t&&(t=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(t)};return t.prototype.init_genrand=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&t)>>>16)<<16)+1812433253*(65535&t)+this.mti,this.mt[this.mti]>>>=0}},t.prototype.genrand_int32=function(){var t,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var r;for(this.mti==this.N+1&&this.init_genrand(5489),r=0;r<this.N-this.M;r++)t=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+this.M]^t>>>1^e[1&t];for(;r<this.N-1;r++)t=this.mt[r]&this.UPPER_MASK|this.mt[r+1]&this.LOWER_MASK,this.mt[r]=this.mt[r+(this.M-this.N)]^t>>>1^e[1&t];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^e[1&t],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=2636928640&t<<7,t^=4022730752&t<<15,t^=t>>>18,t>>>0},t.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},t}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(t,e){"use strict";var r={};r.EPSILON1=.1,r.EPSILON2=.01,r.EPSILON3=.001,r.EPSILON4=1e-4,r.EPSILON5=1e-5,r.EPSILON6=1e-6,r.EPSILON7=1e-7,r.EPSILON8=1e-8,r.EPSILON9=1e-9,r.EPSILON10=1e-10,r.EPSILON11=1e-11,r.EPSILON12=1e-12,r.EPSILON13=1e-13,r.EPSILON14=1e-14,r.EPSILON15=1e-15,r.EPSILON16=1e-16,r.EPSILON17=1e-17,r.EPSILON18=1e-18,r.EPSILON19=1e-19,r.EPSILON20=1e-20,r.GRAVITATIONALPARAMETER=3986004418e5,r.SOLAR_RADIUS=6955e5,r.LUNAR_RADIUS=1737400,r.SIXTY_FOUR_KILOBYTES=65536,r.sign=function(t){return t>0?1:0>t?-1:0},r.signNotZero=function(t){return 0>t?-1:1},r.toSNorm=function(t){return Math.round(255*(.5*r.clamp(t,-1,1)+.5))},r.fromSNorm=function(t){return 2*(r.clamp(t,0,255)/255)-1},r.sinh=function(t){var e=Math.pow(Math.E,t),r=Math.pow(Math.E,-1*t);return.5*(e-r)},r.cosh=function(t){var e=Math.pow(Math.E,t),r=Math.pow(Math.E,-1*t);return.5*(e+r)},r.lerp=function(t,e,r){return(1-r)*t+r*e},r.PI=Math.PI,r.ONE_OVER_PI=1/Math.PI,r.PI_OVER_TWO=.5*Math.PI,r.PI_OVER_THREE=Math.PI/3,r.PI_OVER_FOUR=Math.PI/4,r.PI_OVER_SIX=Math.PI/6,r.THREE_PI_OVER_TWO=.5*3*Math.PI,r.TWO_PI=2*Math.PI,r.ONE_OVER_TWO_PI=1/(2*Math.PI),r.RADIANS_PER_DEGREE=Math.PI/180,r.DEGREES_PER_RADIAN=180/Math.PI,r.RADIANS_PER_ARCSECOND=r.RADIANS_PER_DEGREE/3600,r.toRadians=function(t){return t*r.RADIANS_PER_DEGREE},r.toDegrees=function(t){return t*r.DEGREES_PER_RADIAN},r.convertLongitudeRange=function(t){var e=r.TWO_PI,n=t-Math.floor(t/e)*e;return n<-Math.PI?n+e:n>=Math.PI?n-e:n},r.negativePiToPi=function(t){return r.zeroToTwoPi(t+r.PI)-r.PI},r.zeroToTwoPi=function(t){var e=r.mod(t,r.TWO_PI);return Math.abs(e)<r.EPSILON14&&Math.abs(t)>r.EPSILON14?r.TWO_PI:e},r.mod=function(t,e){return(t%e+e)%e},r.equalsEpsilon=function(t,r,n,i){i=e(i,n);var a=Math.abs(t-r);return i>=a||a<=n*Math.max(Math.abs(t),Math.abs(r))};var n=[1];r.factorial=function(t){var e=n.length;if(t>=e)for(var r=n[e-1],i=e;t>=i;i++)n.push(r*i);return n[t]},r.incrementWrap=function(t,r,n){return n=e(n,0),++t,t>r&&(t=n),t},r.isPowerOfTwo=function(t){return 0!==t&&0===(t&t-1)},r.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t},r.clamp=function(t,e,r){return e>t?e:t>r?r:t};var i=new t;return r.setRandomNumberSeed=function(e){i=new t(e)},r.nextRandomNumber=function(){return i.random()},r.acosClamped=function(t){return Math.acos(r.clamp(t,-1,1))},r.asinClamped=function(t){return Math.asin(r.clamp(t,-1,1))},r.chordLength=function(t,e){return 2*e*Math.sin(.5*t)},r}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,r,n,i){"use strict";var a=function(e,r){this.x=t(e,0),this.y=t(r,0)};a.fromElements=function(t,r,n){return e(n)?(n.x=t,n.y=r,n):new a(t,r)},a.clone=function(t,r){return e(t)?e(r)?(r.x=t.x,r.y=t.y,r):new a(t.x,t.y):void 0},a.fromCartesian3=a.clone,a.fromCartesian4=a.clone,a.packedLength=2,a.pack=function(e,r,n){n=t(n,0),r[n++]=e.x,r[n]=e.y},a.unpack=function(r,n,i){return n=t(n,0),e(i)||(i=new a),i.x=r[n++],i.y=r[n],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y)},a.minimumComponent=function(t){return Math.min(t.x,t.y)},a.minimumByComponent=function(t,e,r){return r.x=Math.min(t.x,e.x),r.y=Math.min(t.y,e.y),r},a.maximumByComponent=function(t,e,r){return r.x=Math.max(t.x,e.x),r.y=Math.max(t.y,e.y),r},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var r=a.magnitude(t);return e.x=t.x/r,e.y=t.y/r,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y},a.multiplyComponents=function(t,e,r){return r.x=t.x*e.x,r.y=t.y*e.y,r},a.add=function(t,e,r){return r.x=t.x+e.x,r.y=t.y+e.y,r},a.subtract=function(t,e,r){return r.x=t.x-e.x,r.y=t.y-e.y,r},a.multiplyByScalar=function(t,e,r){return r.x=t.x*e,r.y=t.y*e,r},a.divideByScalar=function(t,e,r){return r.x=t.x/e,r.y=t.y/e,r},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e};var u=new a;a.lerp=function(t,e,r,n){return a.multiplyByScalar(e,r,u),n=a.multiplyByScalar(t,1-r,n),a.add(u,n,n)};var s=new a,c=new a;a.angleBetween=function(t,e){return a.normalize(t,s),a.normalize(e,c),i.acosClamped(a.dot(s,c))};var h=new a;return a.mostOrthogonalAxis=function(t,e){var r=a.normalize(t,h);return a.abs(r,r),e=r.x<=r.y?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Y,e)},a.equals=function(t,r){return t===r||e(t)&&e(r)&&t.x===r.x&&t.y===r.y},a.equalsArray=function(t,e,r){return t.x===e[r]&&t.y===e[r+1]},a.equalsEpsilon=function(t,r,n,a){return t===r||e(t)&&e(r)&&i.equalsEpsilon(t.x,r.x,n,a)&&i.equalsEpsilon(t.y,r.y,n,a)},a.ZERO=n(new a(0,0)),a.UNIT_X=n(new a(1,0)),a.UNIT_Y=n(new a(0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,r){return a.equalsEpsilon(this,t,e,r)},a.prototype.toString=function(){return"("+this.x+", "+this.y+")"},a}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,r,n,i){"use strict";var a=function(e,r,n){this.x=t(e,0),this.y=t(r,0),this.z=t(n,0)};a.fromSpherical=function(r,n){e(n)||(n=new a);var i=r.clock,o=r.cone,u=t(r.magnitude,1),s=u*Math.sin(o);return n.x=s*Math.cos(i),n.y=s*Math.sin(i),n.z=u*Math.cos(o),n},a.fromElements=function(t,r,n,i){return e(i)?(i.x=t,i.y=r,i.z=n,i):new a(t,r,n)},a.clone=function(t,r){return e(t)?e(r)?(r.x=t.x,r.y=t.y,r.z=t.z,r):new a(t.x,t.y,t.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(e,r,n){n=t(n,0),r[n++]=e.x,r[n++]=e.y,r[n]=e.z},a.unpack=function(r,n,i){return n=t(n,0),e(i)||(i=new a),i.x=r[n++],i.y=r[n++],i.z=r[n],i},a.fromArray=a.unpack,a.maximumComponent=function(t){return Math.max(t.x,t.y,t.z)},a.minimumComponent=function(t){return Math.min(t.x,t.y,t.z)},a.minimumByComponent=function(t,e,r){return r.x=Math.min(t.x,e.x),r.y=Math.min(t.y,e.y),r.z=Math.min(t.z,e.z),r},a.maximumByComponent=function(t,e,r){return r.x=Math.max(t.x,e.x),r.y=Math.max(t.y,e.y),r.z=Math.max(t.z,e.z),r},a.magnitudeSquared=function(t){return t.x*t.x+t.y*t.y+t.z*t.z},a.magnitude=function(t){return Math.sqrt(a.magnitudeSquared(t))};var o=new a;a.distance=function(t,e){return a.subtract(t,e,o),a.magnitude(o)},a.distanceSquared=function(t,e){return a.subtract(t,e,o),a.magnitudeSquared(o)},a.normalize=function(t,e){var r=a.magnitude(t);return e.x=t.x/r,e.y=t.y/r,e.z=t.z/r,e},a.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z},a.multiplyComponents=function(t,e,r){return r.x=t.x*e.x,r.y=t.y*e.y,r.z=t.z*e.z,r},a.add=function(t,e,r){return r.x=t.x+e.x,r.y=t.y+e.y,r.z=t.z+e.z,r},a.subtract=function(t,e,r){return r.x=t.x-e.x,r.y=t.y-e.y,r.z=t.z-e.z,r},a.multiplyByScalar=function(t,e,r){return r.x=t.x*e,r.y=t.y*e,r.z=t.z*e,r},a.divideByScalar=function(t,e,r){return r.x=t.x/e,r.y=t.y/e,r.z=t.z/e,r},a.negate=function(t,e){return e.x=-t.x,e.y=-t.y,e.z=-t.z,e},a.abs=function(t,e){return e.x=Math.abs(t.x),e.y=Math.abs(t.y),e.z=Math.abs(t.z),e};var u=new a;a.lerp=function(t,e,r,n){return a.multiplyByScalar(e,r,u),n=a.multiplyByScalar(t,1-r,n),a.add(u,n,n)};var s=new a,c=new a;a.angleBetween=function(t,e){a.normalize(t,s),a.normalize(e,c);var r=a.dot(s,c),n=a.magnitude(a.cross(s,c,s));return Math.atan2(n,r)};var h=new a;a.mostOrthogonalAxis=function(t,e){var r=a.normalize(t,h);return a.abs(r,r),e=r.x<=r.y?r.x<=r.z?a.clone(a.UNIT_X,e):a.clone(a.UNIT_Z,e):r.y<=r.z?a.clone(a.UNIT_Y,e):a.clone(a.UNIT_Z,e)},a.equals=function(t,r){return t===r||e(t)&&e(r)&&t.x===r.x&&t.y===r.y&&t.z===r.z},a.equalsArray=function(t,e,r){return t.x===e[r]&&t.y===e[r+1]&&t.z===e[r+2]},a.equalsEpsilon=function(t,r,n,a){return t===r||e(t)&&e(r)&&i.equalsEpsilon(t.x,r.x,n,a)&&i.equalsEpsilon(t.y,r.y,n,a)&&i.equalsEpsilon(t.z,r.z,n,a)},a.cross=function(t,e,r){var n=t.x,i=t.y,a=t.z,o=e.x,u=e.y,s=e.z,c=i*s-a*u,h=a*o-n*s,d=n*u-i*o;return r.x=c,r.y=h,r.z=d,r},a.fromDegrees=function(t,e,r,n,o){var u=i.toRadians(t),s=i.toRadians(e);return a.fromRadians(u,s,r,n,o)};var d=new a,f=new a,l=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(r,n,i,o,u){i=t(i,0);var s=e(o)?o.radiiSquared:l,c=Math.cos(n);d.x=c*Math.cos(r),d.y=c*Math.sin(r),d.z=Math.sin(n),d=a.normalize(d,d),a.multiplyComponents(s,d,f);var h=Math.sqrt(a.dot(d,f));return f=a.divideByScalar(f,h,f),d=a.multiplyByScalar(d,i,d),e(u)||(u=new a),a.add(f,d,u)},a.fromDegreesArray=function(t,e,r){for(var n=new Array(t.length),o=0;o<t.length;o++)n[o]=i.toRadians(t[o]);return a.fromRadiansArray(n,e,r)},a.fromRadiansArray=function(t,r,n){var i=t.length;e(n)?n.length=i/2:n=new Array(i/2);for(var o=0;i>o;o+=2){var u=t[o],s=t[o+1];n[o/2]=a.fromRadians(u,s,0,r,n[o/2])}return n},a.fromDegreesArrayHeights=function(t,e,r){for(var n=new Array(t.length),o=0;o<t.length;o+=3)n[o]=i.toRadians(t[o]),n[o+1]=i.toRadians(t[o+1]),n[o+2]=t[o+2];return a.fromRadiansArrayHeights(n,e,r)},a.fromRadiansArrayHeights=function(t,r,n){var i=t.length;e(n)?n.length=i/3:n=new Array(i/3);for(var o=0;i>o;o+=3){var u=t[o],s=t[o+1],c=t[o+2];n[o/3]=a.fromRadians(u,s,c,r,n[o/3])}return n},a.ZERO=n(new a(0,0,0)),a.UNIT_X=n(new a(1,0,0)),a.UNIT_Y=n(new a(0,1,0)),a.UNIT_Z=n(new a(0,0,1)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e,r){return a.equalsEpsilon(this,t,e,r)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/AttributeCompression",["./Cartesian2","./Cartesian3","./defined","./DeveloperError","./Math"],function(t,e,r,n,i){"use strict";var a={};a.octEncode=function(t,e){if(e.x=t.x/(Math.abs(t.x)+Math.abs(t.y)+Math.abs(t.z)),e.y=t.y/(Math.abs(t.x)+Math.abs(t.y)+Math.abs(t.z)),t.z<0){var r=e.x,n=e.y;e.x=(1-Math.abs(n))*i.signNotZero(r),e.y=(1-Math.abs(r))*i.signNotZero(n)}return e.x=i.toSNorm(e.x),e.y=i.toSNorm(e.y),e},a.octDecode=function(t,r,n){if(n.x=i.fromSNorm(t),n.y=i.fromSNorm(r),n.z=1-(Math.abs(n.x)+Math.abs(n.y)),n.z<0){var a=n.x;n.x=(1-Math.abs(n.y))*i.signNotZero(a),n.y=(1-Math.abs(a))*i.signNotZero(n.y)}return e.normalize(n,n)},a.octPackFloat=function(t){return 256*t.x+t.y};var o=new t;return a.octEncodeFloat=function(t){return a.octEncode(t,o),a.octPackFloat(o)},a.octDecodeFloat=function(t,e){var r=t/256,n=Math.floor(r),i=256*(r-n);return a.octDecode(n,i,e)},a.octPack=function(t,e,r,n){var i=a.octEncodeFloat(t),u=a.octEncodeFloat(e),s=a.octEncode(r,o);return n.x=65536*s.x+i,n.y=65536*s.y+u,n},a.octUnpack=function(t,e,r,n){var i=t.x/65536,o=Math.floor(i),u=65536*(i-o);i=t.y/65536;var s=Math.floor(i),c=65536*(i-s);a.octDecodeFloat(u,e),a.octDecodeFloat(c,r),a.octDecode(o,s,n)},a.compressTextureCoordinates=function(t){var e=1===t.x?4095:0|4096*t.x,r=1===t.y?4095:0|4096*t.y;return 4096*e+r},a.decompressTextureCoordinates=function(t,e){var r=t/4096;return e.x=Math.floor(r)/4096,e.y=r-Math.floor(r),e},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,r,n,i){"use strict";var a=function(e,r,n){this.longitude=t(e,0),this.latitude=t(r,0),this.height=t(n,0)};return a.fromRadians=function(r,n,i,o){return i=t(i,0),e(o)?(o.longitude=r,o.latitude=n,o.height=i,o):new a(r,n,i)},a.fromDegrees=function(t,e,r,n){return t=i.toRadians(t),e=i.toRadians(e),a.fromRadians(t,e,r,n)},a.clone=function(t,r){return e(t)?e(r)?(r.longitude=t.longitude,r.latitude=t.latitude,r.height=t.height,r):new a(t.longitude,t.latitude,t.height):void 0},a.equals=function(t,r){return t===r||e(t)&&e(r)&&t.longitude===r.longitude&&t.latitude===r.latitude&&t.height===r.height},a.equalsEpsilon=function(t,r,n){return t===r||e(t)&&e(r)&&Math.abs(t.longitude-r.longitude)<=n&&Math.abs(t.latitude-r.latitude)<=n&&Math.abs(t.height-r.height)<=n},a.ZERO=n(new a(0,0,0)),a.prototype.clone=function(t){return a.clone(this,t)},a.prototype.equals=function(t){return a.equals(this,t)},a.prototype.equalsEpsilon=function(t,e){return a.equalsEpsilon(this,t,e)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/defineProperties",["./defined"],function(t){"use strict";var e=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(t){return!1}}(),r=Object.defineProperties;return e&&t(r)||(r=function(t){return t}),r}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(t,e,r,n,i,a,o,u){"use strict";function s(e,n,i,a){n=r(n,0),i=r(i,0),a=r(a,0),e._radii=new t(n,i,a),e._radiiSquared=new t(n*n,i*i,a*a),e._radiiToTheFourth=new t(n*n*n*n,i*i*i*i,a*a*a*a),e._oneOverRadii=new t(0===n?0:1/n,0===i?0:1/i,0===a?0:1/a),e._oneOverRadiiSquared=new t(0===n?0:1/(n*n),0===i?0:1/(i*i),0===a?0:1/(a*a)),e._minimumRadius=Math.min(n,i,a),e._maximumRadius=Math.max(n,i,a),e._centerToleranceSquared=u.EPSILON1}var c=function(t,e,r){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,t,e,r)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(e,r){if(!n(e))return void 0;var i=e._radii;return n(r)?(t.clone(i,r._radii),t.clone(e._radiiSquared,r._radiiSquared),t.clone(e._radiiToTheFourth,r._radiiToTheFourth),t.clone(e._oneOverRadii,r._oneOverRadii),t.clone(e._oneOverRadiiSquared,r._oneOverRadiiSquared),r._minimumRadius=e._minimumRadius,r._maximumRadius=e._maximumRadius,r._centerToleranceSquared=e._centerToleranceSquared,r):new c(i.x,i.y,i.z)},c.fromCartesian3=function(t,e){return n(e)||(e=new c),n(t)?(s(e,t.x,t.y,t.z),e):e},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(t){return c.clone(this,t)},c.packedLength=t.packedLength,c.pack=function(e,n,i){i=r(i,0),t.pack(e._radii,n,i)},c.unpack=function(e,n,i){n=r(n,0);var a=t.unpack(e,n);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=t.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(e,r){var i=e.longitude,a=e.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return n(r)||(r=new t),r.x=u,r.y=s,r.z=c,t.normalize(r,r)},c.prototype.geodeticSurfaceNormal=function(e,r){return n(r)||(r=new t),r=t.multiplyComponents(e,this._oneOverRadiiSquared,r),t.normalize(r,r)};var h=new t,d=new t;c.prototype.cartographicToCartesian=function(e,r){var i=h,a=d;this.geodeticSurfaceNormalCartographic(e,i),t.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(t.dot(i,a));return t.divideByScalar(a,o,a),t.multiplyByScalar(i,e.height,i),n(r)||(r=new t),t.add(a,i,r)},c.prototype.cartographicArrayToCartesianArray=function(t,e){var r=t.length;n(e)?e.length=r:e=new Array(r);for(var i=0;r>i;i++)e[i]=this.cartographicToCartesian(t[i],e[i]);return e};var f=new t,l=new t,m=new t;c.prototype.cartesianToCartographic=function(r,i){var a=this.scaleToGeodeticSurface(r,l);if(!n(a))return void 0;var o=this.geodeticSurfaceNormal(a,f),s=t.subtract(r,a,m),c=Math.atan2(o.y,o.x),h=Math.asin(o.z),d=u.sign(t.dot(s,r))*t.magnitude(s);return n(i)?(i.longitude=c,i.latitude=h,i.height=d,i):new e(c,h,d)},c.prototype.cartesianArrayToCartographicArray=function(t,e){var r=t.length;n(e)?e.length=r:e=new Array(r);for(var i=0;r>i;++i)e[i]=this.cartesianToCartographic(t[i],e[i]);return e};var y=new t,p=new t;return c.prototype.scaleToGeodeticSurface=function(e,r){var i=e.x,a=e.y,o=e.z,s=this._oneOverRadii,c=s.x,h=s.y,d=s.z,f=i*i*c*c,l=a*a*h*h,m=o*o*d*d,x=f+l+m,g=Math.sqrt(1/x),v=t.multiplyByScalar(e,g,y);if(x<this._centerToleranceSquared)return isFinite(g)?t.clone(v,r):void 0;var E=this._oneOverRadiiSquared,S=E.x,_=E.y,M=E.z,I=p;I.x=2*v.x*S,I.y=2*v.y*_,I.z=2*v.z*M;var R,w,N,T,z,O,P,A,C,q,b,D=(1-g)*t.magnitude(e)/(.5*t.magnitude(I)),L=0;do{D-=L,N=1/(1+D*S),T=1/(1+D*_),z=1/(1+D*M),O=N*N,P=T*T,A=z*z,C=O*N,q=P*T,b=A*z,R=f*O+l*P+m*A-1,w=f*C*S+l*q*_+m*b*M;var U=-2*w;L=R/U}while(Math.abs(R)>u.EPSILON12);return n(r)?(r.x=i*N,r.y=a*T,r.z=o*z,r):new t(i*N,a*T,o*z)},c.prototype.scaleToGeocentricSurface=function(e,r){n(r)||(r=new t);var i=e.x,a=e.y,o=e.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return t.multiplyByScalar(e,s,r)},c.prototype.transformPositionToScaledSpace=function(e,r){return n(r)||(r=new t),t.multiplyComponents(e,this._oneOverRadii,r)},c.prototype.transformPositionFromScaledSpace=function(e,r){return n(r)||(r=new t),t.multiplyComponents(e,this._radii,r)},c.prototype.equals=function(e){return this===e||n(e)&&t.equals(this._radii,e._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(t,e,r,n){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(t){switch(t){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(e){return t(e)&&(e===i.UNSIGNED_BYTE||e===i.UNSIGNED_SHORT||e===i.UNSIGNED_INT)},i.createTypedArray=function(t,e){return t>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(e):new Uint16Array(e)},i.createTypedArrayFromArrayBuffer=function(t,e,r,i){return t>n.SIXTY_FOUR_KILOBYTES?new Uint32Array(e,r,i):new Uint16Array(e,r,i)},r(i)}),define("Core/formatError",["./defined"],function(t){"use strict";var e=function(e){var r,n=e.name,i=e.message;r=t(n)&&t(i)?n+": "+i:e.toString();var a=e.stack;return t(a)&&(r+="\n"+a),r};return e}),define("Workers/createTaskProcessorWorker",["../Core/defaultValue","../Core/defined","../Core/formatError"],function(t,e,r){"use strict";var n=function(n){var i,a=[],o={id:void 0,result:void 0,error:void 0};return function(u){var s=u.data;a.length=0,o.id=s.id,o.error=void 0,o.result=void 0;try{o.result=n(s.parameters,a)}catch(c){o.error=c instanceof Error?{name:c.name,message:c.message,stack:c.stack}:c}e(i)||(i=t(self.webkitPostMessage,self.postMessage)),s.canTransferArrayBuffer||(a.length=0);try{i(o,a)}catch(c){o.result=void 0,o.error="postMessage failed with error: "+r(c)+"\n with responseMessage: "+JSON.stringify(o),i(o)}}};return n}),define("Workers/createVerticesFromQuantizedTerrainMesh",["../Core/AttributeCompression","../Core/Cartesian2","../Core/Cartesian3","../Core/Cartographic","../Core/defined","../Core/Ellipsoid","../Core/IndexDatatype","../Core/Math","./createTaskProcessorWorker"],function(t,e,r,n,i,a,o,u,s){"use strict";function c(e,r){var n=e.quantizedVertices,s=n.length/3,c=e.octEncodedNormals,_=e.westIndices.length+e.eastIndices.length+e.southIndices.length+e.northIndices.length,M=e.minimumHeight,I=e.maximumHeight,R=e.relativeToCenter,w=e.rectangle,N=w.west,T=w.south,z=w.east,O=w.north,P=a.clone(e.ellipsoid),A=n.subarray(0,s),C=n.subarray(s,2*s),q=n.subarray(2*s,3*s),b=i(c),D=6;b&&(D+=1);for(var L=new Float32Array(s*D+_*D),U=0,k=0,B=0;s>U;++U,k+=D,B+=2){var F=A[U]/d,G=C[U]/d,W=u.lerp(M,I,q[U]/d);E.longitude=u.lerp(N,z,F),E.latitude=u.lerp(T,O,G),E.height=W,P.cartographicToCartesian(E,v),L[k+f]=v.x-R.x,L[k+l]=v.y-R.y,L[k+m]=v.z-R.z,L[k+y]=W,L[k+p]=F,L[k+x]=G,b&&(S.x=c[B],S.y=c[B+1],L[k+g]=t.octPackFloat(S))}var V=Math.max(0,2*(_-4)),Y=e.indices.length+3*V,H=o.createTypedArray(s+_,Y);H.set(e.indices,0);var K=s*D,Z=e.indices.length;return Z=h(L,K,H,Z,e.westIndices,R,P,w,e.westSkirtHeight,!0,b),K+=e.westIndices.length*D,Z=h(L,K,H,Z,e.southIndices,R,P,w,e.southSkirtHeight,!1,b),K+=e.southIndices.length*D,Z=h(L,K,H,Z,e.eastIndices,R,P,w,e.eastSkirtHeight,!1,b),K+=e.eastIndices.length*D,Z=h(L,K,H,Z,e.northIndices,R,P,w,e.northSkirtHeight,!0,b),K+=e.northIndices.length*D,r.push(L.buffer,H.buffer),{vertices:L.buffer,indices:H.buffer}}function h(t,e,n,i,a,o,s,c,h,d,f){var l,m,S,_=6;f&&(_+=1),d?(l=a.length-1,m=-1,S=-1):(l=0,m=a.length,S=1);var M=-1,I=e/_,R=c.north,w=c.south,N=c.east,T=c.west;T>N&&(N+=u.TWO_PI);for(var z=l;z!==m;z+=S){var O=a[z],P=O*_,A=t[P+p],C=t[P+x],q=t[P+y];E.longitude=u.lerp(T,N,A),E.latitude=u.lerp(w,R,C),E.height=q-h;var b=s.cartographicToCartesian(E,v);r.subtract(b,o,b),t[e++]=b.x,t[e++]=b.y,t[e++]=b.z,t[e++]=E.height,t[e++]=A,t[e++]=C,f&&(t[e++]=t[P+g]),-1!==M&&(n[i++]=M,n[i++]=I-1,n[i++]=O,n[i++]=I-1,n[i++]=I,n[i++]=O),M=O,++I}return i}var d=32767,f=0,l=1,m=2,y=3,p=4,x=5,g=6,v=new r,E=new n,S=new e;return s(c)})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createWallGeometry.js b/libs/Cesium/Workers/createWallGeometry.js new file mode 100644 index 0000000000..5322212baa --- /dev/null +++ b/libs/Cesium/Workers/createWallGeometry.js @@ -0,0 +1,229 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[1&e];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(e){return e>0?1:0>e?-1:0},n.signNotZero=function(e){return 0>e?-1:1},n.toSNorm=function(e){return Math.round(255*(.5*n.clamp(e,-1,1)+.5))},n.fromSNorm=function(e){return 2*(n.clamp(e,0,255)/255)-1},n.sinh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t-n)},n.cosh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t+n)},n.lerp=function(e,t,n){return(1-n)*e+n*t},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(e){return e*n.RADIANS_PER_DEGREE},n.toDegrees=function(e){return e*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(e){var t=n.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},n.negativePiToPi=function(e){return n.zeroToTwoPi(e+n.PI)-n.PI},n.zeroToTwoPi=function(e){var t=n.mod(e,n.TWO_PI);return Math.abs(t)<n.EPSILON14&&Math.abs(e)>n.EPSILON14?n.TWO_PI:t},n.mod=function(e,t){return(e%t+t)%t},n.equalsEpsilon=function(e,n,r,a){a=t(a,r);var i=Math.abs(e-n);return a>=i||i<=r*Math.max(Math.abs(e),Math.abs(n))};var r=[1];n.factorial=function(e){var t=r.length;if(e>=t)for(var n=r[t-1],a=t;e>=a;a++)r.push(n*a);return r[e]},n.incrementWrap=function(e,n,r){return r=t(r,0),++e,e>n&&(e=r),e},n.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},n.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},n.clamp=function(e,t,n){return t>e?t:e>n?n:e};var a=new e;return n.setRandomNumberSeed=function(t){a=new e(t)},n.nextRandomNumber=function(){return a.random()},n.acosClamped=function(e){return Math.acos(n.clamp(e,-1,1))},n.asinClamped=function(e){return Math.asin(n.clamp(e,-1,1))},n.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0)};i.fromSpherical=function(n,r){t(r)||(r=new i);var a=n.clock,o=n.cone,u=e(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(a),r.y=s*Math.sin(a),r.z=u*Math.cos(o),r},i.fromElements=function(e,n,r,a){return t(a)?(a.x=e,a.y=n,a.z=r,a):new i(e,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n):new i(e.x,e.y,e.z):void 0},i.fromCartesian4=i.clone,i.packedLength=3,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r]=t.z},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i,c=new i;i.angleBetween=function(e,t){i.normalize(e,s),i.normalize(t,c);var n=i.dot(s,c),r=i.magnitude(i.cross(s,c,s));return Math.atan2(r,n)};var l=new i;i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Z,t):n.y<=n.z?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_Z,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)},i.cross=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=t.x,u=t.y,s=t.z,c=a*s-i*u,l=i*o-r*s,f=r*u-a*o;return n.x=c,n.y=l,n.z=f,n},i.fromDegrees=function(e,t,n,r,o){var u=a.toRadians(e),s=a.toRadians(t);return i.fromRadians(u,s,n,r,o)};var f=new i,d=new i,h=new i(40680631590769,40680631590769,40408299984661.445);return i.fromRadians=function(n,r,a,o,u){a=e(a,0);var s=t(o)?o.radiiSquared:h,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=i.normalize(f,f),i.multiplyComponents(s,f,d);var l=Math.sqrt(i.dot(f,d));return d=i.divideByScalar(d,l,d),f=i.multiplyByScalar(f,a,f),t(u)||(u=new i),i.add(d,f,u)},i.fromDegreesArray=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=a.toRadians(e[o]);return i.fromRadiansArray(r,t,n)},i.fromRadiansArray=function(e,n,r){var a=e.length;t(r)?r.length=a/2:r=new Array(a/2);for(var o=0;a>o;o+=2){var u=e[o],s=e[o+1];r[o/2]=i.fromRadians(u,s,0,n,r[o/2])}return r},i.fromDegreesArrayHeights=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o+=3)r[o]=a.toRadians(e[o]),r[o+1]=a.toRadians(e[o+1]),r[o+2]=e[o+2];return i.fromRadiansArrayHeights(r,t,n)},i.fromRadiansArrayHeights=function(e,n,r){var a=e.length;t(r)?r.length=a/3:r=new Array(a/3);for(var o=0;a>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];r[o/3]=i.fromRadians(u,s,c,n,r[o/3])}return r},i.ZERO=r(new i(0,0,0)),i.UNIT_X=r(new i(1,0,0)),i.UNIT_Y=r(new i(0,1,0)),i.UNIT_Z=r(new i(0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},i}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r){this.longitude=e(t,0),this.latitude=e(n,0),this.height=e(r,0)};return i.fromRadians=function(n,r,a,o){return a=e(a,0),t(o)?(o.longitude=n,o.latitude=r,o.height=a,o):new i(n,r,a)},i.fromDegrees=function(e,t,n,r){return e=a.toRadians(e),t=a.toRadians(t),i.fromRadians(e,t,n,r)},i.clone=function(e,n){return t(e)?t(n)?(n.longitude=e.longitude,n.latitude=e.latitude,n.height=e.height,n):new i(e.longitude,e.latitude,e.height):void 0},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.longitude===n.longitude&&e.latitude===n.latitude&&e.height===n.height},i.equalsEpsilon=function(e,n,r){return e===n||t(e)&&t(n)&&Math.abs(e.longitude-n.longitude)<=r&&Math.abs(e.latitude-n.latitude)<=r&&Math.abs(e.height-n.height)<=r},i.ZERO=r(new i(0,0,0)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t){return i.equalsEpsilon(this,e,t)},i.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},i}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),n=Object.defineProperties;return t&&e(n)||(n=function(e){return e}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(t,r,a,i){r=n(r,0),a=n(a,0),i=n(i,0),t._radii=new e(r,a,i),t._radiiSquared=new e(r*r,a*a,i*i),t._radiiToTheFourth=new e(r*r*r*r,a*a*a*a,i*i*i*i),t._oneOverRadii=new e(0===r?0:1/r,0===a?0:1/a,0===i?0:1/i),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===a?0:1/(a*a),0===i?0:1/(i*i)),t._minimumRadius=Math.min(r,a,i),t._maximumRadius=Math.max(r,a,i),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,n)};a(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,n){if(!r(t))return void 0;var a=t._radii;return r(n)?(e.clone(a,n._radii),e.clone(t._radiiSquared,n._radiiSquared),e.clone(t._radiiToTheFourth,n._radiiToTheFourth),e.clone(t._oneOverRadii,n._oneOverRadii),e.clone(t._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=t._minimumRadius,n._maximumRadius=t._maximumRadius,n._centerToleranceSquared=t._centerToleranceSquared,n):new c(a.x,a.y,a.z)},c.fromCartesian3=function(e,t){return r(t)||(t=new c),r(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,r,a){a=n(a,0),e.pack(t._radii,r,a)},c.unpack=function(t,r,a){r=n(r,0);var i=e.unpack(t,r);return c.fromCartesian3(i,a)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,n){var a=t.longitude,i=t.latitude,o=Math.cos(i),u=o*Math.cos(a),s=o*Math.sin(a),c=Math.sin(i);return r(n)||(n=new e),n.x=u,n.y=s,n.z=c,e.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(t,n){return r(n)||(n=new e),n=e.multiplyComponents(t,this._oneOverRadiiSquared,n),e.normalize(n,n)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,n){var a=l,i=f;this.geodeticSurfaceNormalCartographic(t,a),e.multiplyComponents(this._radiiSquared,a,i);var o=Math.sqrt(e.dot(a,i));return e.divideByScalar(i,o,i),e.multiplyByScalar(a,t.height,a),r(n)||(n=new e),e.add(i,a,n)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;a++)t[a]=this.cartographicToCartesian(e[a],t[a]);return t};var d=new e,h=new e,m=new e;c.prototype.cartesianToCartographic=function(n,a){var i=this.scaleToGeodeticSurface(n,h);if(!r(i))return void 0;var o=this.geodeticSurfaceNormal(i,d),s=e.subtract(n,i,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,n))*e.magnitude(s);return r(a)?(a.longitude=c,a.latitude=l,a.height=f,a):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var a=0;n>a;++a)t[a]=this.cartesianToCartographic(e[a],t[a]);return t};var p=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,n){var a=t.x,i=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,d=a*a*c*c,h=i*i*l*l,m=o*o*f*f,v=d+h+m,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,p);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,n):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,_=x.z,O=y;O.x=2*w.x*E,O.y=2*w.y*S,O.z=2*w.z*_;var M,P,T,R,N,C,I,z,A,b,D,q=(1-g)*e.magnitude(t)/(.5*e.magnitude(O)),U=0;do{q-=U,T=1/(1+q*E),R=1/(1+q*S),N=1/(1+q*_),C=T*T,I=R*R,z=N*N,A=C*T,b=I*R,D=z*N,M=d*C+h*I+m*z-1,P=d*A*E+h*b*S+m*D*_;var L=-2*P;U=M/L}while(Math.abs(M)>u.EPSILON12);return r(n)?(n.x=a*T,n.y=i*R,n.z=o*N,n):new e(a*T,i*R,o*N)},c.prototype.scaleToGeocentricSurface=function(t,n){r(n)||(n=new e);var a=t.x,i=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(a*a*u.x+i*i*u.y+o*o*u.z);return e.multiplyByScalar(t,s,n)},c.prototype.transformPositionToScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._radii,n)},c.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},n=function(n,r){e(t[n])||(t[n]=!0,console.log(r))};return n}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,n,r,a,i,o){"use strict";var u=function(e){this._ellipsoid=n(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return a(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,n){var a=this._semimajorAxis,i=t.longitude*a,o=t.latitude*a,u=t.height;return r(n)?(n.x=i,n.y=o,n.z=u,n):new e(i,o,u)},u.prototype.unproject=function(e,n){var a=this._oneOverSemimajorAxis,i=e.x*a,o=e.y*a,u=e.z;return r(n)?(n.longitude=i,n.latitude=o,n.height=u,n):new t(i,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,n){this.start=e(t,0),this.stop=e(n,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n,r,a){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0),this.w=e(a,0)};i.fromElements=function(e,n,r,a,o){return t(o)?(o.x=e,o.y=n,o.z=r,o.w=a,o):new i(e,n,r,a)},i.fromColor=function(e,n){return t(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new i(e.red,e.green,e.blue,e.alpha)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new i(e.x,e.y,e.z,e.w):void 0},i.packedLength=4,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r++]=t.z,n[r]=t.w},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r++],a.z=n[r++],a.w=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},i.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,s);return i.abs(n,n),t=n.x<=n.y?n.x<=n.z?n.x<=n.w?i.clone(i.UNIT_X,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t):n.y<=n.z?n.y<=n.w?i.clone(i.UNIT_Y,t):i.clone(i.UNIT_W,t):n.z<=n.w?i.clone(i.UNIT_Z,t):i.clone(i.UNIT_W,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)&&a.equalsEpsilon(e.z,n.z,r,i)&&a.equalsEpsilon(e.w,n.w,r,i)},i.ZERO=r(new i(0,0,0,0)),i.UNIT_X=r(new i(1,0,0,0)),i.UNIT_Y=r(new i(0,1,0,0)),i.UNIT_Z=r(new i(0,0,1,0)),i.UNIT_W=r(new i(0,0,0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},i}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a,i){"use strict";function o(e){for(var t=0,n=0;9>n;++n){var r=e[n];t+=r*r}return Math.sqrt(t)}function u(e){for(var t=0,n=0;3>n;++n){var r=e[c.getElementIndex(h[n],d[n])];t+=2*r*r}return Math.sqrt(t)}function s(e,t){for(var n=i.EPSILON15,r=0,a=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(h[o],d[o])]);u>r&&(a=o,r=u)}var s=1,l=0,f=d[a],m=h[a];if(Math.abs(e[c.getElementIndex(m,f)])>n){var p,y=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(m,f)],w=(y-v)/2/g;p=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+p*p),l=p*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,f)]=l,t[c.getElementIndex(f,m)]=-l,t}var c=function(e,n,r,a,i,o,u,s,c){this[0]=t(e,0),this[1]=t(a,0),this[2]=t(u,0),this[3]=t(n,0),this[4]=t(i,0),this[5]=t(s,0),this[6]=t(r,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r++]=e[7],n[r++]=e[8]},c.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r++],a[1]=e[r++],a[2]=e[r++],a[3]=e[r++],a[4]=e[r++],a[5]=e[r++],a[6]=e[r++],a[7]=e[r++],a[8]=e[r++],a},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,r,a){return r=t(r,0),n(a)||(a=new c),a[0]=e[r],a[1]=e[r+1],a[2]=e[r+2],a[3]=e[r+3],a[4]=e[r+4],a[5]=e[r+5],a[6]=e[r+6],a[7]=e[r+7],a[8]=e[r+8],a},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var r=e.x*e.x,a=e.x*e.y,i=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,d=e.z*e.w,h=e.w*e.w,m=r-u-f+h,p=2*(a-d),y=2*(i+l),v=2*(a+d),g=-r+u-f+h,w=2*(s-o),x=2*(i-l),E=2*(s+o),S=-r-u+f+h;return n(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=p,t[4]=g,t[5]=E,t[6]=y,t[7]=w,t[8]=S,t):new c(m,p,y,v,g,w,x,E,S)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return n(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=a,t[6]=0,t[7]=-a,t[8]=r,t):new c(1,0,0,0,r,-a,0,a,r)},c.fromRotationY=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=0,t[2]=-a,t[3]=0,t[4]=1,t[5]=0,t[6]=a,t[7]=0,t[8]=r,t):new c(r,0,a,0,1,0,-a,0,r)},c.fromRotationZ=function(e,t){var r=Math.cos(e),a=Math.sin(e);return n(t)?(t[0]=r,t[1]=a,t[2]=0,t[3]=-a,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(r,-a,0,a,r,0,0,0,1)},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,n){var r=3*t,a=e[r],i=e[r+1],o=e[r+2];return n.x=a,n.y=i,n.z=o,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=3*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r},c.getRow=function(e,t,n){var r=e[t],a=e[t+3],i=e[t+6];return n.x=r,n.y=a,n.z=i,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+3]=n.y,r[t+6]=n.z,r};var l=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),n};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,n){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],a=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],i=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=r,n[1]=a,n[2]=i,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[3]*a+e[6]*i,u=e[1]*r+e[4]*a+e[7]*i,s=e[2]*r+e[5]*a+e[8]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n},c.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var n=e[0],r=e[3],a=e[6],i=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=n,t[1]=r,t[2]=a,t[3]=i,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var d=[1,0,0],h=[2,2,1],m=new c,p=new c;return c.computeEigenDecomposition=function(e,t){var r=i.EPSILON20,a=10,l=0,f=0;n(t)||(t={});for(var d=t.unitary=c.clone(c.IDENTITY,t.unitary),h=t.diagonal=c.clone(e,t.diagonal),y=r*o(h);a>f&&u(h)>y;)s(h,m),c.transpose(m,p),c.multiply(h,m,h),c.multiply(p,h,h),c.multiply(d,m,d),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],n=e[3],r=e[6],a=e[1],i=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(i*c-s*o)+a*(s*r-n*c)+u*(n*o-i*r)},c.inverse=function(e,t){var n=e[0],a=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],d=e[7],h=e[8],m=c.determinant(e);if(Math.abs(m)<=i.EPSILON15)throw new r("matrix is not invertible");t[0]=s*h-d*l,t[1]=d*o-a*h,t[2]=a*l-s*o,t[3]=f*l-u*h,t[4]=n*h-f*o,t[5]=u*o-n*l,t[6]=u*d-f*s,t[7]=f*a-n*d,t[8]=n*s-u*a;var p=1/m;return c.multiplyByScalar(t,p,t)},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},c.IDENTITY=a(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,n,r,a,i,o,u,s){"use strict";var c=function(e,t,r,a,i,o,u,s,c,l,f,d,h,m,p,y){this[0]=n(e,0),this[1]=n(i,0),this[2]=n(c,0),this[3]=n(h,0),this[4]=n(t,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(p,0),this[12]=n(a,0),this[13]=n(s,0),this[14]=n(d,0),this[15]=n(y,0)};c.packedLength=16,c.pack=function(e,t,r){r=n(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},c.unpack=function(e,t,a){return t=n(t,0),r(a)||(a=new c),a[0]=e[t++],a[1]=e[t++],a[2]=e[t++],a[3]=e[t++],a[4]=e[t++],a[5]=e[t++],a[6]=e[t++],a[7]=e[t++],a[8]=e[t++],a[9]=e[t++],a[10]=e[t++],a[11]=e[t++],a[12]=e[t++],a[13]=e[t++],a[14]=e[t++],a[15]=e[t],a},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,a,i){return a=n(a,e.ZERO),r(i)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=0,i[4]=t[3],i[5]=t[4],i[6]=t[5],i[7]=0,i[8]=t[6],i[9]=t[7],i[10]=t[8],i[11]=0,i[12]=a.x,i[13]=a.y,i[14]=a.z,i[15]=1,i):new c(t[0],t[3],t[6],a.x,t[1],t[4],t[7],a.y,t[2],t[5],t[8],a.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,n,a){r(a)||(a=new c);var i=n.x,o=n.y,u=n.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,d=t.x*t.w,h=t.y*t.y,m=t.y*t.z,p=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-h-y+g,x=2*(l-v),E=2*(f+p),S=2*(l+v),_=-s+h-y+g,O=2*(m-d),M=2*(f-p),P=2*(m+d),T=-s-h+y+g;return a[0]=w*i,a[1]=S*i,a[2]=M*i,a[3]=0,a[4]=x*o,a[5]=_*o,a[6]=P*o,a[7]=0,a[8]=E*u,a[9]=O*u,a[10]=T*u,a[11]=0,a[12]=e.x,a[13]=e.y,a[14]=e.z,a[15]=1,a},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,d=new e;c.fromCamera=function(t,n){var a=t.eye,i=t.target,o=t.up;e.normalize(e.subtract(i,a,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,d),d);var u=f.x,s=f.y,h=f.z,m=l.x,p=l.y,y=l.z,v=d.x,g=d.y,w=d.z,x=a.x,E=a.y,S=a.z,_=u*-x+s*-E+h*-S,O=v*-x+g*-E+w*-S,M=m*x+p*E+y*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=g,n[6]=-p,n[7]=0,n[8]=h,n[9]=w,n[10]=-y,n[11]=0,n[12]=_,n[13]=O,n[14]=M,n[15]=1,n):new c(u,s,h,_,v,g,w,O,-m,-p,-y,M,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,n,r,a){var i=Math.tan(.5*e),o=1/i,u=o/t,s=(r+n)/(n-r),c=2*r*n/(n-r);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=o,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=s,a[11]=-1,a[12]=0,a[13]=0,a[14]=c,a[15]=0,a},c.computeOrthographicOffCenter=function(e,t,n,r,a,i,o){var u=1/(t-e),s=1/(r-n),c=1/(i-a),l=-(t+e)*u,f=-(r+n)*s,d=-(i+a)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=d,o[15]=1,o +},c.computePerspectiveOffCenter=function(e,t,n,r,a,i,o){var u=2*a/(t-e),s=2*a/(r-n),c=(t+e)/(t-e),l=(r+n)/(r-n),f=-(i+a)/(i-a),d=-1,h=-2*i*a/(i-a);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=d,o[12]=0,o[13]=0,o[14]=h,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,n,r,a,i){var o=2*a/(t-e),u=2*a/(r-n),s=(t+e)/(t-e),c=(r+n)/(r-n),l=-1,f=-1,d=-2*a;return i[0]=o,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=u,i[6]=0,i[7]=0,i[8]=s,i[9]=c,i[10]=l,i[11]=f,i[12]=0,i[13]=0,i[14]=d,i[15]=0,i},c.computeViewportTransformation=function(e,t,r,a){e=n(e,n.EMPTY_OBJECT);var i=n(e.x,0),o=n(e.y,0),u=n(e.width,0),s=n(e.height,0);t=n(t,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-t),d=c,h=l,m=f,p=i+c,y=o+l,v=t+f,g=1;return a[0]=d,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=h,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=m,a[11]=0,a[12]=p,a[13]=y,a[14]=v,a[15]=g,a},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,n){var r=4*t,a=e[r],i=e[r+1],o=e[r+2],u=e[r+3];return n.x=a,n.y=i,n.z=o,n.w=u,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var a=4*t;return r[a]=n.x,r[a+1]=n.y,r[a+2]=n.z,r[a+3]=n.w,r},c.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n},c.getRow=function(e,t,n){var r=e[t],a=e[t+4],i=e[t+8],o=e[t+12];return n.x=r,n.y=a,n.z=i,n.w=o,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+4]=n.y,r[t+8]=n.z,r[t+12]=n.w,r};var h=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],h)),n.y=e.magnitude(e.fromElements(t[4],t[5],t[6],h)),n.z=e.magnitude(e.fromElements(t[8],t[9],t[10],h)),n};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],d=e[9],h=e[10],m=e[11],p=e[12],y=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],_=t[4],O=t[5],M=t[6],P=t[7],T=t[8],R=t[9],N=t[10],C=t[11],I=t[12],z=t[13],A=t[14],b=t[15],D=r*w+u*x+f*E+p*S,q=a*w+s*x+d*E+y*S,U=i*w+c*x+h*E+v*S,L=o*w+l*x+m*E+g*S,B=r*_+u*O+f*M+p*P,W=a*_+s*O+d*M+y*P,F=i*_+c*O+h*M+v*P,G=o*_+l*O+m*M+g*P,k=r*T+u*R+f*N+p*C,Y=a*T+s*R+d*N+y*C,j=i*T+c*R+h*N+v*C,H=o*T+l*R+m*N+g*C,V=r*I+u*z+f*A+p*b,Z=a*I+s*z+d*A+y*b,X=i*I+c*z+h*A+v*b,J=o*I+l*z+m*A+g*b;return n[0]=D,n[1]=q,n[2]=U,n[3]=L,n[4]=B,n[5]=W,n[6]=F,n[7]=G,n[8]=k,n[9]=Y,n[10]=j,n[11]=H,n[12]=V,n[13]=Z,n[14]=X,n[15]=J,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},c.multiplyTransformation=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=e[12],h=e[13],m=e[14],p=t[0],y=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],_=t[10],O=t[12],M=t[13],P=t[14],T=r*p+o*y+c*v,R=a*p+u*y+l*v,N=i*p+s*y+f*v,C=r*g+o*w+c*x,I=a*g+u*w+l*x,z=i*g+s*w+f*x,A=r*E+o*S+c*_,b=a*E+u*S+l*_,D=i*E+s*S+f*_,q=r*O+o*M+c*P+d,U=a*O+u*M+l*P+h,L=i*O+s*M+f*P+m;return n[0]=T,n[1]=R,n[2]=N,n[3]=0,n[4]=C,n[5]=I,n[6]=z,n[7]=0,n[8]=A,n[9]=b,n[10]=D,n[11]=0,n[12]=q,n[13]=U,n[14]=L,n[15]=1,n},c.multiplyByMatrix3=function(e,t,n){var r=e[0],a=e[1],i=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],d=t[0],h=t[1],m=t[2],p=t[3],y=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=r*d+o*h+c*m,S=a*d+u*h+l*m,_=i*d+s*h+f*m,O=r*p+o*y+c*v,M=a*p+u*y+l*v,P=i*p+s*y+f*v,T=r*g+o*w+c*x,R=a*g+u*w+l*x,N=i*g+s*w+f*x;return n[0]=E,n[1]=S,n[2]=_,n[3]=0,n[4]=O,n[5]=M,n[6]=P,n[7]=0,n[8]=T,n[9]=R,n[10]=N,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n},c.multiplyByTranslation=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=r*e[0]+a*e[4]+i*e[8]+e[12],u=r*e[1]+a*e[5]+i*e[9]+e[13],s=r*e[2]+a*e[6]+i*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=o,n[13]=u,n[14]=s,n[15]=e[15],n};var p=new e;c.multiplyByUniformScale=function(e,t,n){return p.x=t,p.y=t,p.z=t,c.multiplyByScale(e,p,n)},c.multiplyByScale=function(e,t,n){var r=t.x,a=t.y,i=t.z;return 1===r&&1===a&&1===i?c.clone(e,n):(n[0]=r*e[0],n[1]=r*e[1],n[2]=r*e[2],n[3]=0,n[4]=a*e[4],n[5]=a*e[5],n[6]=a*e[6],n[7]=0,n[8]=i*e[8],n[9]=i*e[9],n[10]=i*e[10],n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=1,n)},c.multiplyByVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=t.w,u=e[0]*r+e[4]*a+e[8]*i+e[12]*o,s=e[1]*r+e[5]*a+e[9]*i+e[13]*o,c=e[2]*r+e[6]*a+e[10]*i+e[14]*o,l=e[3]*r+e[7]*a+e[11]*i+e[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i,u=e[1]*r+e[5]*a+e[9]*i,s=e[2]*r+e[6]*a+e[10]*i;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(e,t,n){var r=t.x,a=t.y,i=t.z,o=e[0]*r+e[4]*a+e[8]*i+e[12],u=e[1]*r+e[5]*a+e[9]*i+e[13],s=e[2]*r+e[6]*a+e[10]*i+e[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var n=e[1],r=e[2],a=e[3],i=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=i,t[10]=e[10],t[11]=e[14],t[12]=a,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,n){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;var r=e[0],a=e[4],i=e[8],l=e[12],f=e[1],d=e[5],h=e[9],m=e[13],p=e[2],x=e[6],E=e[10],S=e[14],_=e[3],O=e[7],M=e[11],P=e[15],T=E*P,R=S*M,N=x*P,C=S*O,I=x*M,z=E*O,A=p*P,b=S*_,D=p*M,q=E*_,U=p*O,L=x*_,B=T*d+C*h+I*m-(R*d+N*h+z*m),W=R*f+A*h+q*m-(T*f+b*h+D*m),F=N*f+b*d+U*m-(C*f+A*d+L*m),G=z*f+D*d+L*h-(I*f+q*d+U*h),k=R*a+N*i+z*l-(T*a+C*i+I*l),Y=T*r+b*i+D*l-(R*r+A*i+q*l),j=C*r+A*a+L*l-(N*r+b*a+U*l),H=I*r+q*a+U*i-(z*r+D*a+L*i);T=i*m,R=l*h,N=a*m,C=l*d,I=a*h,z=i*d,A=r*m,b=l*f,D=r*h,q=i*f,U=r*d,L=a*f;var V=T*O+C*M+I*P-(R*O+N*M+z*P),Z=R*_+A*M+q*P-(T*_+b*M+D*P),X=N*_+b*O+U*P-(C*_+A*O+L*P),J=z*_+D*O+L*M-(I*_+q*O+U*M),K=N*E+z*S+R*x-(I*S+T*x+C*E),Q=D*S+T*p+b*E-(A*E+q*S+R*p),$=A*x+L*S+C*p-(U*S+N*p+b*x),et=U*E+I*p+q*x-(D*x+L*E+z*p),tt=r*B+a*W+i*F+l*G;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,n[0]=B*tt,n[1]=W*tt,n[2]=F*tt,n[3]=G*tt,n[4]=k*tt,n[5]=Y*tt,n[6]=j*tt,n[7]=H*tt,n[8]=V*tt,n[9]=Z*tt,n[10]=X*tt,n[11]=J*tt,n[12]=K*tt,n[13]=Q*tt,n[14]=$*tt,n[15]=et*tt,n},c.inverseTransformation=function(e,t){var n=e[0],r=e[1],a=e[2],i=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],d=e[13],h=e[14],m=-n*f-r*d-a*h,p=-i*f-o*d-u*h,y=-s*f-c*d-l*h;return t[0]=n,t[1]=i,t[2]=s,t[3]=0,t[4]=r,t[5]=o,t[6]=c,t[7]=0,t[8]=a,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=p,t[14]=y,t[15]=1,t},c.IDENTITY=i(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var a=function(t,n){this.normal=e.clone(t),this.distance=n};a.fromPointNormal=function(n,r,i){var o=-e.dot(r,n);return t(i)?(e.clone(r,i.normal),i.distance=o,i):new a(r,o)};var i=new e;return a.fromCartesian4=function(n,r){var o=e.fromCartesian4(n,i),u=n.w;return t(r)?(e.clone(o,r.normal),r.distance=u,r):new a(o,u)},a.getPointDistance=function(t,n){return e.dot(t.normal,n)+t.distance},a.ORIGIN_XY_PLANE=r(new a(e.UNIT_Z,0)),a.ORIGIN_YZ_PLANE=r(new a(e.UNIT_X,0)),a.ORIGIN_ZX_PLANE=r(new a(e.UNIT_Y,0)),a}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.west=t(e,0),this.south=t(n,0),this.east=t(r,0),this.north=t(a,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.west,n[r++]=e.south,n[r++]=e.east,n[r]=e.north},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.west=e[r++],a.south=e[r++],a.east=e[r++],a.north=e[r],a},s.computeWidth=function(e){var t=e.east,n=e.west;return n>t&&(t+=u.TWO_PI),t-n},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,r,a,i,o){return e=u.toRadians(t(e,0)),r=u.toRadians(t(r,0)),a=u.toRadians(t(a,0)),i=u.toRadians(t(i,0)),n(o)?(o.west=e,o.south=r,o.east=a,o.north=i,o):new s(e,r,a,i)},s.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,a=-Number.MAX_VALUE,i=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];r=Math.min(r,l.longitude),a=Math.max(a,l.longitude),i=Math.min(i,l.latitude),o=Math.max(o,l.latitude)}return n(t)?(t.west=r,t.south=i,t.east=a,t.north=o,t):new s(r,i,a,o)},s.clone=function(e,t){return n(e)?n(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return n(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},s.northwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},s.northeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},s.southeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},s.center=function(t,r){var a=t.east,i=t.west;i>a&&(a+=u.TWO_PI);var o=u.negativePiToPi(.5*(i+a)),s=.5*(t.south+t.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new e(o,s)},s.intersection=function(e,t,r){var a=e.east,i=e.west,o=t.east,c=t.west;i>a&&o>0?a+=u.TWO_PI:c>o&&a>0&&(o+=u.TWO_PI),i>a&&0>c?c+=u.TWO_PI:c>o&&0>i&&(i+=u.TWO_PI);var l=u.negativePiToPi(Math.max(i,c)),f=u.negativePiToPi(Math.min(a,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var d=Math.max(e.south,t.south),h=Math.min(e.north,t.north);return d>=h?void 0:n(r)?(r.west=l,r.south=d,r.east=f,r.north=h,r):new s(l,d,f,h)},s.contains=function(e,t){var n=t.longitude,r=t.latitude,a=e.west,i=e.east;return a>i&&(i+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>a||u.equalsEpsilon(n,a,u.EPSILON14))&&(i>n||u.equalsEpsilon(n,i,u.EPSILON14))&&r>=e.south&&r<=e.north};var c=new e;return s.subsample=function(e,r,a,o){r=t(r,i.WGS84),a=t(a,0),n(o)||(o=[]);var l=0,f=e.north,d=e.south,h=e.east,m=e.west,p=c;p.height=a,p.longitude=m,p.latitude=f,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=d,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=0>f?f:d>0?d:0;for(var y=1;8>y;++y)p.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,p)&&(o[l]=r.cartographicToCartesian(p,o[l]),l++);return 0===p.latitude&&(p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,n,r,a,i,o,u,s,c,l,f,d){"use strict";var h=function(t,r){this.center=e.clone(n(t,e.ZERO)),this.radius=n(r,0)},m=new e,p=new e,y=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,_=new e,O=new e,M=new e;h.fromPoints=function(t,n){if(r(n)||(n=new h),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;for(var a=e.clone(t[0],x),i=e.clone(a,m),o=e.clone(a,p),u=e.clone(a,y),s=e.clone(a,v),c=e.clone(a,g),l=e.clone(a,w),f=t.length,d=1;f>d;d++){e.clone(t[d],a);var P=a.x,T=a.y,R=a.z;P<i.x&&e.clone(a,i),P>s.x&&e.clone(a,s),T<o.y&&e.clone(a,o),T>c.y&&e.clone(a,c),R<u.z&&e.clone(a,u),R>l.z&&e.clone(a,l)}var N=e.magnitudeSquared(e.subtract(s,i,E)),C=e.magnitudeSquared(e.subtract(c,o,E)),I=e.magnitudeSquared(e.subtract(l,u,E)),z=i,A=s,b=N;C>b&&(b=C,z=o,A=c),I>b&&(b=I,z=u,A=l);var D=S;D.x=.5*(z.x+A.x),D.y=.5*(z.y+A.y),D.z=.5*(z.z+A.z);var q=e.magnitudeSquared(e.subtract(A,D,E)),U=Math.sqrt(q),L=_;L.x=i.x,L.y=o.y,L.z=u.z;var B=O;B.x=s.x,B.y=c.y,B.z=l.z;var W=e.multiplyByScalar(e.add(L,B,E),.5,M),F=0;for(d=0;f>d;d++){e.clone(t[d],a);var G=e.magnitude(e.subtract(a,W,E));G>F&&(F=G);var k=e.magnitudeSquared(e.subtract(a,D,E));if(k>q){var Y=Math.sqrt(k);U=.5*(U+Y),q=U*U;var j=Y-U;D.x=(U*D.x+j*a.x)/Y,D.y=(U*D.y+j*a.y)/Y,D.z=(U*D.z+j*a.z)/Y}}return F>U?(e.clone(D,n.center),n.radius=U):(e.clone(W,n.center),n.radius=F),n};var P=new u,T=new e,R=new e,N=new t,C=new t;h.fromRectangle2D=function(e,t,n){return h.fromRectangleWithHeights2D(e,t,0,0,n)},h.fromRectangleWithHeights2D=function(t,a,i,o,u){if(r(u)||(u=new h),!r(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;a=n(a,P),d.southwest(t,N),N.height=i,d.northeast(t,C),C.height=o;var s=a.project(N,T),c=a.project(C,R),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var p=u.center;return p.x=s.x+.5*l,p.y=s.y+.5*f,p.z=s.z+.5*m,u};var I=[];h.fromRectangle3D=function(e,t,a,i){t=n(t,o.WGS84),a=n(a,0);var u;return r(e)&&(u=d.subsample(e,t,a,I)),h.fromPoints(u,i)},h.fromVertices=function(t,a,i,o){if(r(o)||(o=new h),!r(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;a=n(a,e.ZERO),i=n(i,3);var u=x;u.x=t[0]+a.x,u.y=t[1]+a.y,u.z=t[2]+a.z;for(var s=e.clone(u,m),c=e.clone(u,p),l=e.clone(u,y),f=e.clone(u,v),d=e.clone(u,g),P=e.clone(u,w),T=t.length,R=0;T>R;R+=i){var N=t[R]+a.x,C=t[R+1]+a.y,I=t[R+2]+a.z;u.x=N,u.y=C,u.z=I,N<s.x&&e.clone(u,s),N>f.x&&e.clone(u,f),C<c.y&&e.clone(u,c),C>d.y&&e.clone(u,d),I<l.z&&e.clone(u,l),I>P.z&&e.clone(u,P)}var z=e.magnitudeSquared(e.subtract(f,s,E)),A=e.magnitudeSquared(e.subtract(d,c,E)),b=e.magnitudeSquared(e.subtract(P,l,E)),D=s,q=f,U=z;A>U&&(U=A,D=c,q=d),b>U&&(U=b,D=l,q=P);var L=S;L.x=.5*(D.x+q.x),L.y=.5*(D.y+q.y),L.z=.5*(D.z+q.z);var B=e.magnitudeSquared(e.subtract(q,L,E)),W=Math.sqrt(B),F=_;F.x=s.x,F.y=c.y,F.z=l.z;var G=O;G.x=f.x,G.y=d.y,G.z=P.z;var k=e.multiplyByScalar(e.add(F,G,E),.5,M),Y=0;for(R=0;T>R;R+=i){u.x=t[R]+a.x,u.y=t[R+1]+a.y,u.z=t[R+2]+a.z;var j=e.magnitude(e.subtract(u,k,E));j>Y&&(Y=j);var H=e.magnitudeSquared(e.subtract(u,L,E));if(H>B){var V=Math.sqrt(H);W=.5*(W+V),B=W*W;var Z=V-W;L.x=(W*L.x+Z*u.x)/V,L.y=(W*L.y+Z*u.y)/V,L.z=(W*L.z+Z*u.z)/V}}return Y>W?(e.clone(L,o.center),o.radius=W):(e.clone(k,o.center),o.radius=Y),o},h.fromCornerPoints=function(t,n,a){r(a)||(a=new h);var i=a.center;return e.add(t,n,i),e.multiplyByScalar(i,.5,i),a.radius=e.distance(i,n),a},h.fromEllipsoid=function(t,n){return r(n)||(n=new h),e.clone(e.ZERO,n.center),n.radius=t.maximumRadius,n};var z=new e;h.fromBoundingSpheres=function(t,n){if(r(n)||(n=new h),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;var a=t.length;if(1===a)return h.clone(t[0],n);if(2===a)return h.union(t[0],t[1],n);for(var i=[],o=0;a>o;o++)i.push(t[o].center);n=h.fromPoints(i,n);var u=n.center,s=n.radius;for(o=0;a>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,z)+c.radius)}return n.radius=s,n},h.clone=function(t,n){return r(t)?r(n)?(n.center=e.clone(t.center,n.center),n.radius=t.radius,n):new h(t.center,t.radius):void 0},h.packedLength=4,h.pack=function(e,t,r){r=n(r,0);var a=e.center;t[r++]=a.x,t[r++]=a.y,t[r++]=a.z,t[r]=e.radius},h.unpack=function(e,t,a){t=n(t,0),r(a)||(a=new h);var i=a.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],a.radius=e[t],a};var A=new e,b=new e;h.union=function(t,n,a){r(a)||(a=new h);var i=t.center,o=t.radius,u=n.center,s=n.radius,c=e.subtract(u,i,A),l=e.magnitude(c);if(o>=l+s)return t.clone(a),a;if(s>=l+o)return n.clone(a),a;var f=.5*(o+l+s),d=e.multiplyByScalar(c,(-o+f)/l,b);return e.add(d,i,d),e.clone(d,a.center),a.radius=f,a};var D=new e;h.expand=function(t,n,r){r=h.clone(t,r);var a=e.magnitude(e.subtract(n,r.center,D));return a>r.radius&&(r.radius=a),r},h.intersectPlane=function(t,n){var r=t.center,a=t.radius,i=n.normal,o=e.dot(i,r)+n.distance;return-a>o?s.OUTSIDE:a>o?s.INTERSECTING:s.INSIDE};var q=new f(new e,0);h.intersect=function(e,t){a("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(t,q);return h.intersectPlane(e,n)},h.transform=function(e,t,n){return r(n)||(n=new h),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=l.getMaximumScale(t)*e.radius,n};var U=new e;h.distanceSquaredTo=function(t,n){var r=e.subtract(t.center,n,U);return e.magnitudeSquared(r)-t.radius*t.radius},h.transformWithoutScale=function(e,t,n){return r(n)||(n=new h),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var L=new e;h.computePlaneDistances=function(t,n,a,i){r(i)||(i=new c);var o=e.subtract(t.center,n,L),u=e.multiplyByScalar(a,e.dot(a,o),L),s=e.magnitude(u);return i.start=s-t.radius,i.stop=s+t.radius,i};for(var B=new e,W=new e,F=new e,G=new e,k=new e,Y=new t,j=new Array(8),H=0;8>H;++H)j[H]=new e;var V=new u;return h.projectTo2D=function(t,r,a){r=n(r,V);var i=r.ellipsoid,o=t.center,u=t.radius,s=i.geodeticSurfaceNormal(o,B),c=e.cross(e.UNIT_Z,s,W);e.normalize(c,c);var l=e.cross(s,c,F);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,k),d=e.negate(c,G),m=j,p=m[0];e.add(s,l,p),e.add(p,c,p),p=m[1],e.add(s,l,p),e.add(p,d,p),p=m[2],e.add(s,f,p),e.add(p,d,p),p=m[3],e.add(s,f,p),e.add(p,c,p),e.negate(s,s),p=m[4],e.add(s,l,p),e.add(p,c,p),p=m[5],e.add(s,l,p),e.add(p,d,p),p=m[6],e.add(s,f,p),e.add(p,d,p),p=m[7],e.add(s,f,p),e.add(p,c,p);for(var y=m.length,v=0;y>v;++v){var g=m[v];e.add(o,g,g);var w=i.cartesianToCartographic(g,Y);r.project(w,g)}a=h.fromPoints(m,a),o=a.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,a},h.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&t.radius===n.radius},h.prototype.intersectPlane=function(e){return h.intersectPlane(this,e)},h.prototype.intersect=function(e){return h.intersect(this,e)},h.prototype.equals=function(e){return h.equals(this,e)},h.prototype.clone=function(e){return h.clone(this,e)},h}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},a={};return t(a,{element:{get:function(){return a.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return a.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return a.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return a.supportsFullscreen()?null!==a.element:void 0}}}),a.supportsFullscreen=function(){if(e(n))return n;n=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var a,i=["webkit","moz","o","ms","khtml"],o=0,u=i.length;u>o;++o){var s=i[o];a=s+"RequestFullscreen","function"==typeof t[a]?(r.requestFullscreen=a,n=!0):(a=s+"RequestFullScreen","function"==typeof t[a]&&(r.requestFullscreen=a,n=!0)),a=s+"ExitFullscreen","function"==typeof document[a]?r.exitFullscreen=a:(a=s+"CancelFullScreen","function"==typeof document[a]&&(r.exitFullscreen=a)),a=s+"FullscreenEnabled",e(document[a])?r.fullscreenEnabled=a:(a=s+"FullScreenEnabled",e(document[a])&&(r.fullscreenEnabled=a)),a=s+"FullscreenElement",e(document[a])?r.fullscreenElement=a:(a=s+"FullScreenElement",e(document[a])&&(r.fullscreenElement=a)),a=s+"fullscreenchange",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenChange"),r.fullscreenchange=a),a=s+"fullscreenerror",e(document["on"+a])&&("ms"===s&&(a="MSFullscreenError"),r.fullscreenerror=a)}return n},a.requestFullscreen=function(e){a.supportsFullscreen()&&e[r.requestFullscreen]()},a.exitFullscreen=function(){a.supportsFullscreen()&&document[r.exitFullscreen]()},a}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,n){"use strict";function r(e){for(var t=e.split("."),n=0,r=t.length;r>n;++n)t[n]=parseInt(t[n],10);return t}function a(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=r(e[1]))}return y}function i(){return a()&&v}function o(){if(!t(g)&&(g=!1,!a()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=r(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=r(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,_=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,_=r(e[1])))}return S}function f(){return l()&&_}function d(){if(!t(O)){O=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(O=!0,M=r(e[1]))}return O}function h(){return t(P)||(P=/Windows/i.test(navigator.appVersion)),P}function m(){return d()&&M}function p(){return t(T)||(T=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),T}var y,v,g,w,x,E,S,_,O,M,P,T,R={isChrome:a,chromeVersion:i,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:d,firefoxVersion:m,isWindows:h,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return R.supportsFullscreen=function(){return n.supportsFullscreen()},R.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},R.supportsWebWorkers=function(){return"undefined"!=typeof Worker},R}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,n,r,a){"use strict";if(!r.supportsTypedArrays())return{};var i={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return i.getSizeInBytes=function(e){switch(e){case i.BYTE:return Int8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.SHORT:return Int16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case i.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},i.fromTypedArray=function(e){return e instanceof Int8Array?i.BYTE:e instanceof Uint8Array?i.UNSIGNED_BYTE:e instanceof Int16Array?i.SHORT:e instanceof Uint16Array?i.UNSIGNED_SHORT:e instanceof Float32Array?i.FLOAT:e instanceof Float64Array?i.DOUBLE:void 0},i.validate=function(e){return t(e)&&(e===i.BYTE||e===i.UNSIGNED_BYTE||e===i.SHORT||e===i.UNSIGNED_SHORT||e===i.FLOAT||e===i.DOUBLE)},i.createTypedArray=function(e,t){switch(e){case i.BYTE:return new Int8Array(t);case i.UNSIGNED_BYTE:return new Uint8Array(t);case i.SHORT:return new Int16Array(t);case i.UNSIGNED_SHORT:return new Uint16Array(t);case i.FLOAT:return new Float32Array(t);case i.DOUBLE:return new Float64Array(t);default:throw new n("componentDatatype is not a valid value.")}},i.createArrayBufferView=function(t,r,a,o){switch(a=e(a,0),o=e(o,(r.byteLength-a)/i.getSizeInBytes(t)),t){case i.BYTE:return new Int8Array(r,a,o);case i.UNSIGNED_BYTE:return new Uint8Array(r,a,o);case i.SHORT:return new Int16Array(r,a,o);case i.UNSIGNED_SHORT:return new Uint16Array(r,a,o);case i.FLOAT:return new Float32Array(r,a,o);case i.DOUBLE:return new Float64Array(r,a,o);default:throw new n("componentDatatype is not a valid value.")}},a(i)}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,n,r,a){"use strict";var i=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,a.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,r.NONE),this.boundingSphereCV=void 0};return i.computeNumberOfVertices=function(e){var r=-1;for(var a in e.attributes)if(e.attributes.hasOwnProperty(a)&&t(e.attributes[a])&&t(e.attributes[a].values)){var i=e.attributes[a],o=i.values.length/i.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},i}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r){"use strict";var a={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return a.getSizeInBytes=function(e){switch(e){case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},a.validate=function(t){return e(t)&&(t===a.UNSIGNED_BYTE||t===a.UNSIGNED_SHORT||t===a.UNSIGNED_INT)},a.createTypedArray=function(e,t){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},a.createTypedArrayFromArrayBuffer=function(e,t,n,a){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,a):new Uint16Array(t,n,a)},n(a)}),define("Core/VertexFormat",["./defaultValue","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.position=e(t.position,!1),this.normal=e(t.normal,!1),this.st=e(t.st,!1),this.binormal=e(t.binormal,!1),this.tangent=e(t.tangent,!1),this.color=e(t.color,!1)};return a.POSITION_ONLY=r(new a({position:!0})),a.POSITION_AND_NORMAL=r(new a({position:!0,normal:!0})),a.POSITION_NORMAL_AND_ST=r(new a({position:!0,normal:!0,st:!0})),a.POSITION_AND_ST=r(new a({position:!0,st:!0})),a.POSITION_AND_COLOR=r(new a({position:!0,color:!0})),a.ALL=r(new a({position:!0,normal:!0,st:!0,binormal:!0,tangent:!0})),a.DEFAULT=a.POSITION_NORMAL_AND_ST,a.packedLength=6,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.position?1:0,n[r++]=t.normal?1:0,n[r++]=t.st?1:0,n[r++]=t.binormal?1:0,n[r++]=t.tangent?1:0,n[r++]=t.color?1:0},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.position=1===n[r++],i.normal=1===n[r++],i.st=1===n[r++],i.binormal=1===n[r++],i.tangent=1===n[r++],i.color=1===n[r++],i},a.clone=function(e,n){return t(e)?(t(n)||(n=new a),n.position=e.position,n.normal=e.normal,n.st=e.st,n.binormal=e.binormal,n.tangent=e.tangent,n.color=e.color,n):void 0},a}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,n,r,a,i,o){"use strict";var u=function(r,a,i){this.minimum=e.clone(t(r,e.ZERO)),this.maximum=e.clone(t(a,e.ZERO)),n(i)?i=e.clone(i):(i=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(i,.5,i)),this.center=i +};u.fromPoints=function(t,r){if(n(r)||(r=new u),!n(t)||0===t.length)return r.minimum=e.clone(e.ZERO,r.minimum),r.maximum=e.clone(e.ZERO,r.maximum),r.center=e.clone(e.ZERO,r.center),r;for(var a=t[0].x,i=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,f=t.length,d=1;f>d;d++){var h=t[d],m=h.x,p=h.y,y=h.z;a=Math.min(m,a),s=Math.max(m,s),i=Math.min(p,i),c=Math.max(p,c),o=Math.min(y,o),l=Math.max(y,l)}var v=r.minimum;v.x=a,v.y=i,v.z=o;var g=r.maximum;g.x=s,g.y=c,g.z=l;var w=e.add(v,g,r.center);return e.multiplyByScalar(w,.5,w),r},u.clone=function(t,r){return n(t)?n(r)?(r.minimum=e.clone(t.minimum,r.minimum),r.maximum=e.clone(t.maximum,r.maximum),r.center=e.clone(t.center,r.center),r):new u(t.minimum,t.maximum):void 0},u.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&e.equals(t.minimum,r.minimum)&&e.equals(t.maximum,r.maximum)};var s=new e;u.intersectPlane=function(t,n){s=e.subtract(t.maximum,t.minimum,s);var r=e.multiplyByScalar(s,.5,s),a=n.normal,o=r.x*Math.abs(a.x)+r.y*Math.abs(a.y)+r.z*Math.abs(a.z),u=e.dot(t.center,a)+n.distance;return u-o>0?i.INSIDE:0>u+o?i.OUTSIDE:i.INTERSECTING};var c=new o(new e,0);return u.intersect=function(e,t){r("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var n=o.fromCartesian4(t,c);return u.intersectPlane(e,n)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,a){"use strict";var i=function(t,n){this.x=e(t,0),this.y=e(n,0)};i.fromElements=function(e,n,r){return t(r)?(r.x=e,r.y=n,r):new i(e,n)},i.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n):new i(e.x,e.y):void 0},i.fromCartesian3=i.clone,i.fromCartesian4=i.clone,i.packedLength=2,i.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r]=t.y},i.unpack=function(n,r,a){return r=e(r,0),t(a)||(a=new i),a.x=n[r++],a.y=n[r],a},i.fromArray=i.unpack,i.maximumComponent=function(e){return Math.max(e.x,e.y)},i.minimumComponent=function(e){return Math.min(e.x,e.y)},i.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n},i.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n},i.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},i.magnitude=function(e){return Math.sqrt(i.magnitudeSquared(e))};var o=new i;i.distance=function(e,t){return i.subtract(e,t,o),i.magnitude(o)},i.distanceSquared=function(e,t){return i.subtract(e,t,o),i.magnitudeSquared(o)},i.normalize=function(e,t){var n=i.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t},i.dot=function(e,t){return e.x*t.x+e.y*t.y},i.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n},i.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n},i.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n},i.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n},i.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n},i.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},i.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new i;i.lerp=function(e,t,n,r){return i.multiplyByScalar(t,n,u),r=i.multiplyByScalar(e,1-n,r),i.add(u,r,r)};var s=new i,c=new i;i.angleBetween=function(e,t){return i.normalize(e,s),i.normalize(t,c),a.acosClamped(i.dot(s,c))};var l=new i;return i.mostOrthogonalAxis=function(e,t){var n=i.normalize(e,l);return i.abs(n,n),t=n.x<=n.y?i.clone(i.UNIT_X,t):i.clone(i.UNIT_Y,t)},i.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y},i.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]},i.equalsEpsilon=function(e,n,r,i){return e===n||t(e)&&t(n)&&a.equalsEpsilon(e.x,n.x,r,i)&&a.equalsEpsilon(e.y,n.y,r,i)},i.ZERO=r(new i(0,0)),i.UNIT_X=r(new i(1,0)),i.UNIT_Y=r(new i(0,1)),i.prototype.clone=function(e){return i.clone(this,e)},i.prototype.equals=function(e){return i.equals(this,e)},i.prototype.equalsEpsilon=function(e,t,n){return i.equalsEpsilon(this,e,t,n)},i.prototype.toString=function(){return"("+this.x+", "+this.y+")"},i}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function n(e,n,r){var a=e+n;return t.sign(e)!==t.sign(n)&&Math.abs(a/Math.max(Math.abs(e),Math.abs(n)))<r?0:a}var r={};return r.computeDiscriminant=function(e,t,n){var r=t*t-4*e*n;return r},r.computeRealRoots=function(e,r,a){var i;if(0===e)return 0===r?[]:[-a/r];if(0===r){if(0===a)return[0,0];var o=Math.abs(a),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(i=-a/e,0>i)return[];var s=Math.sqrt(i);return[-s,s]}if(0===a)return i=-r/e,0>i?[i,0]:[0,i];var c=r*r,l=4*e*a,f=n(c,-l,t.EPSILON14);if(0>f)return[];var d=-.5*n(r,t.sign(r)*Math.sqrt(f),t.EPSILON14);return r>0?[d/e,a/d]:[a/d,d/e]},r}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function n(e,t,n,r){var a,i,o=e,u=t/3,s=n/3,c=r,l=o*s,f=u*c,d=u*u,h=s*s,m=o*s-d,p=o*c-u*s,y=u*c-h,v=4*m*y-p*p;if(0>v){var g,w,x;d*f>=l*h?(g=o,w=m,x=-2*u*m+o*p):(g=c,w=y,x=-c*p+2*s*y);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);i=-x+S;var _=i/2,O=0>_?-Math.pow(-_,1/3):Math.pow(_,1/3),M=i===S?-O:-w/O;return a=0>=w?O+M:-x/(O*O+M*M+w),d*f>=l*h?[(a-u)/o]:[-c/(a+s)]}var P=m,T=-2*u*m+o*p,R=y,N=-c*p+2*s*y,C=Math.sqrt(v),I=Math.sqrt(3)/2,z=Math.abs(Math.atan2(o*C,-T)/3);a=2*Math.sqrt(-P);var A=Math.cos(z);i=a*A;var b=a*(-A/2-I*Math.sin(z)),D=i+b>2*u?i-u:b-u,q=o,U=D/q;z=Math.abs(Math.atan2(c*C,-N)/3),a=2*Math.sqrt(-R),A=Math.cos(z),i=a*A,b=a*(-A/2-I*Math.sin(z));var L=-c,B=2*s>i+b?i+s:b+s,W=L/B,F=q*B,G=-D*B-q*L,k=D*L,Y=(s*G-u*k)/(-u*G+s*F);return Y>=U?W>=U?W>=Y?[U,Y,W]:[U,W,Y]:[W,U,Y]:W>=U?[Y,U,W]:W>=Y?[Y,W,U]:[W,Y,U]}var r={};return r.computeDiscriminant=function(e,t,n,r){var a=e*e,i=t*t,o=n*n,u=r*r,s=18*e*t*n*r+i*o-27*a*u-4*(e*o*n+i*t*r);return s},r.computeRealRoots=function(e,r,a,i){var o,u;if(0===e)return t.computeRealRoots(r,a,i);if(0===r){if(0===a){if(0===i)return[0,0,0];u=-i/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===i?(o=t.computeRealRoots(e,0,a),0===o.Length?[0]:[o[0],0,o[1]]):n(e,0,a,i)}return 0===a?0===i?(u=-r/e,0>u?[u,0,0]:[0,0,u]):n(e,r,0,i):0===i?(o=t.computeRealRoots(e,r,a),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):n(e,r,a,i)},r}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,n,r){"use strict";function a(t,a,i,o){var u=t*t,s=a-3*u/8,c=i-a*t/2+u*t/8,l=o-i*t/4+a*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var d=-t/4,h=f[f.length-1];if(Math.abs(h)<n.EPSILON14){var m=r.computeRealRoots(1,s,l);if(2===m.length){var p,y=m[0],v=m[1];if(y>=0&&v>=0){var g=Math.sqrt(y),w=Math.sqrt(v);return[d-w,d-g,d+g,d+w]}if(y>=0&&0>v)return p=Math.sqrt(y),[d-p,d+p];if(0>y&&v>=0)return p=Math.sqrt(v),[d-p,d+p]}return[]}if(h>0){var x=Math.sqrt(h),E=(s+h-c/x)/2,S=(s+h+c/x)/2,_=r.computeRealRoots(1,x,E),O=r.computeRealRoots(1,-x,S);return 0!==_.length?(_[0]+=d,_[1]+=d,0!==O.length?(O[0]+=d,O[1]+=d,_[1]<=O[0]?[_[0],_[1],O[0],O[1]]:O[1]<=_[0]?[O[0],O[1],_[0],_[1]]:_[0]>=O[0]&&_[1]<=O[1]?[O[0],_[0],_[1],O[1]]:O[0]>=_[0]&&O[1]<=_[1]?[_[0],O[0],O[1],_[1]]:_[0]>O[0]&&_[0]<O[1]?[O[0],_[0],O[1],_[1]]:[_[0],O[0],_[1],O[1]]):_):0!==O.length?(O[0]+=d,O[1]+=d,O):[]}}return[]}function i(t,a,i,o){var u=i*i,s=a*a,c=t*t,l=-2*a,f=i*t+s-4*o,d=c*o-i*a*t+u,h=e.computeRealRoots(1,l,f,d);if(h.length>0){var m,p,y=h[0],v=a-y,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),_=c-4*y,O=c+4*Math.abs(y);if(0>y||_*S>E*O){var M=Math.sqrt(_);m=M/2,p=0===M?0:(t*x-i)/M}else{var P=Math.sqrt(E);m=0===P?0:(t*x-i)/P,p=P/2}var T,R;0===w&&0===m?(T=0,R=0):n.sign(w)===n.sign(m)?(T=w+m,R=y/T):(R=w-m,T=y/R);var N,C;0===x&&0===p?(N=0,C=0):n.sign(x)===n.sign(p)?(N=x+p,C=o/N):(C=x-p,N=o/C);var I=r.computeRealRoots(1,T,N),z=r.computeRealRoots(1,R,C);if(0!==I.length)return 0!==z.length?I[1]<=z[0]?[I[0],I[1],z[0],z[1]]:z[1]<=I[0]?[z[0],z[1],I[0],I[1]]:I[0]>=z[0]&&I[1]<=z[1]?[z[0],I[0],I[1],z[1]]:z[0]>=I[0]&&z[1]<=I[1]?[I[0],z[0],z[1],I[1]]:I[0]>z[0]&&I[0]<z[1]?[z[0],I[0],z[1],I[1]]:[I[0],z[0],I[1],z[1]]:I;if(0!==z.length)return z}return[]}var o={};return o.computeDiscriminant=function(e,t,n,r,a){var i=e*e,o=i*e,u=t*t,s=u*t,c=n*n,l=c*n,f=r*r,d=f*r,h=a*a,m=h*a,p=u*c*f-4*s*d-4*e*l*f+18*e*t*n*d-27*i*f*f+256*o*m+a*(18*s*n*r-4*u*l+16*e*c*c-80*e*t*c*r-6*e*u*f+144*i*n*f)+h*(144*e*u*n-27*u*u-128*i*c-192*i*t*r);return p},o.computeRealRoots=function(t,r,o,u,s){if(Math.abs(t)<n.EPSILON15)return e.computeRealRoots(r,o,u,s);var c=r/t,l=o/t,f=u/t,d=s/t,h=0>c?1:0;switch(h+=0>l?h+1:h,h+=0>f?h+1:h,h+=0>d?h+1:h){case 0:return a(c,l,f,d);case 1:return i(c,l,f,d);case 2:return i(c,l,f,d);case 3:return a(c,l,f,d);case 4:return a(c,l,f,d);case 5:return i(c,l,f,d);case 6:return a(c,l,f,d);case 7:return a(c,l,f,d);case 8:return i(c,l,f,d);case 9:return a(c,l,f,d);case 10:return a(c,l,f,d);case 11:return i(c,l,f,d);case 12:return a(c,l,f,d);case 13:return a(c,l,f,d);case 14:return a(c,l,f,d);case 15:return a(c,l,f,d);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=function(n,r){r=e.clone(t(r,e.ZERO)),e.equals(r,e.ZERO)||e.normalize(r,r),this.origin=e.clone(t(n,e.ZERO)),this.direction=r};return r.getPoint=function(t,r,a){return n(a)||(a=new e),a=e.multiplyByScalar(t.direction,r,a),e.add(t.origin,a,a)},r}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(t,r,a,o,u){u=n(u,!1);var s,c,l,f,d,h=t.origin,m=t.direction,p=e.subtract(a,r,y),E=e.subtract(o,r,v),S=e.cross(m,E,g),_=e.dot(p,S);if(u){if(_<i.EPSILON6)return void 0;if(s=e.subtract(h,r,w),l=e.dot(s,S),0>l||l>_)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c),0>f||l+f>_)return void 0;d=e.dot(E,c)/_}else{if(Math.abs(_)<i.EPSILON6)return void 0;var O=1/_;if(s=e.subtract(h,r,w),l=e.dot(s,S)*O,0>l||l>1)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c)*O,0>f||l+f>1)return void 0;d=e.dot(E,c)*O}return d}function f(e,t,n,r){var a=t*t-4*e*n;if(0>a)return void 0;if(a>0){var i=1/(2*e),o=Math.sqrt(a),u=(-t+o)*i,s=(-t-o)*i;return s>u?(r.root0=u,r.root1=s):(r.root0=s,r.root1=u),r}var c=-t/(2*e);return 0===c?void 0:(r.root0=r.root1=c,r)}function d(t,n,a){r(a)||(a={});var i=t.origin,o=t.direction,u=n.center,s=n.radius*n.radius,c=e.subtract(i,u,g),l=e.dot(o,o),d=2*e.dot(o,c),h=e.magnitudeSquared(c)-s,m=f(l,d,h,S);return r(m)?(a.start=m.root0,a.stop=m.root1,a):void 0}function h(e,t,n){var r=e+t;return i.sign(e)!==i.sign(t)&&Math.abs(r/Math.max(Math.abs(e),Math.abs(t)))<n?0:r}function m(t,n,r,a,c){var l,f=a*a,d=c*c,m=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*d,p=c*(a*h(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],i.EPSILON15)+n.y),y=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*d+a*n.x+r,v=d*h(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],i.EPSILON15),g=c*(a*h(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+n.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(m,p,y),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(a,c*x,c*-E)),w.push(new e(a,c*x,c*E)),2===l.length){var S=l[1],_=Math.sqrt(Math.max(1-S*S,0));w.push(new e(a,c*S,c*-_)),w.push(new e(a,c*S,c*_))}return w}var O=g*g,M=v*v,P=m*m,T=g*v,R=P+M,N=2*(p*m+T),C=2*y*m+p*p-M+O,I=2*(y*p-T),z=y*y-O;if(0===R&&0===N&&0===C&&0===I)return w;l=s.computeRealRoots(R,N,C,I,z);var A=l.length;if(0===A)return w;for(var b=0;A>b;++b){var D,q=l[b],U=q*q,L=Math.max(1-U,0),B=Math.sqrt(L);D=i.sign(m)===i.sign(y)?h(m*U+y,p*q,i.EPSILON12):i.sign(y)===i.sign(p*q)?h(m*U,p*q+y,i.EPSILON12):h(m*U+p*q,y,i.EPSILON12);var W=h(v*q,g,i.EPSILON15),F=D*W;0>F?w.push(new e(a,c*q,c*B)):F>0?w.push(new e(a,c*q,c*-B)):0!==B?(w.push(new e(a,c*q,c*-B)),w.push(new e(a,c*q,c*B)),++b):w.push(new e(a,c*q,c*B))}return w}var p={};p.rayPlane=function(t,n,a){r(a)||(a=new e);var o=t.origin,u=t.direction,s=n.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON15)return void 0;var l=(-n.distance-e.dot(s,o))/c;return 0>l?void 0:(a=e.multiplyByScalar(u,l,a),e.add(o,a,a))};var y=new e,v=new e,g=new e,w=new e,x=new e;p.rayTriangle=function(t,n,a,i,o,u){var s=l(t,n,a,i,o);return!r(s)||0>s?void 0:(r(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;p.lineSegmentTriangle=function(t,n,a,i,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(n,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,a,i,o,u);return!r(f)||0>f||f>e.distance(t,n)?void 0:(r(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};p.raySphere=function(e,t,n){return n=d(e,t,n),!r(n)||n.stop<0?void 0:(n.start=Math.max(n.start,0),n)};var _=new c;p.lineSegmentSphere=function(t,n,a,i){var o=_;e.clone(t,o.origin);var u=e.subtract(n,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),i=d(o,a,i),!r(i)||i.stop<0||i.start>s?void 0:(i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i)};var O=new e,M=new e;p.rayEllipsoid=function(t,n){var r,a,i,o,u,s=n.oneOverRadii,c=e.multiplyComponents(s,t.origin,O),l=e.multiplyComponents(s,t.direction,M),f=e.magnitudeSquared(c),d=e.dot(c,l);if(f>1){if(d>=0)return void 0;var h=d*d;if(r=f-1,a=e.magnitudeSquared(l),i=a*r,i>h)return void 0;if(h>i){o=d*d-i,u=-d+Math.sqrt(o);var m=u/a,p=r/u;return p>m?{start:m,stop:p}:{start:p,stop:m}}var y=Math.sqrt(r/a);return{start:y,stop:y}}return 1>f?(r=f-1,a=e.magnitudeSquared(l),i=a*r,o=d*d-i,u=-d+Math.sqrt(o),{start:0,stop:u/a}):0>d?(a=e.magnitudeSquared(l),{start:0,stop:-d/a}):void 0};var P=new e,T=new e,R=new e,N=new e,C=new e,I=new o,z=new o,A=new o,b=new o,D=new o,q=new o,U=new o,L=new e,B=new e,W=new t;p.grazingAltitudeLocation=function(t,n){var a=t.origin,u=t.direction,s=n.geodeticSurfaceNormal(a,P);if(e.dot(u,s)>=0)return a;var c=r(this.rayEllipsoid(t,n)),l=n.transformPositionToScaledSpace(u,P),f=e.normalize(l,l),d=e.mostOrthogonalAxis(l,N),h=e.normalize(e.cross(d,f,T),T),p=e.normalize(e.cross(f,h,R),R),y=I;y[0]=f.x,y[1]=f.y,y[2]=f.z,y[3]=h.x,y[4]=h.y,y[5]=h.z,y[6]=p.x,y[7]=p.y,y[8]=p.z;var v=o.transpose(y,z),g=o.fromScale(n.radii,A),w=o.fromScale(n.oneOverRadii,b),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,_=o.multiply(o.multiply(v,w,q),x,q),O=o.multiply(o.multiply(_,g,U),y,U),M=o.multiplyByVector(_,a,C),F=m(O,e.negate(M,P),0,0,1),G=F.length;if(G>0){for(var k=e.clone(e.ZERO,B),Y=Number.NEGATIVE_INFINITY,j=0;G>j;++j){E=o.multiplyByVector(g,o.multiplyByVector(y,F[j],L),L);var H=e.normalize(e.subtract(E,a,N),N),V=e.dot(H,u);V>Y&&(Y=V,k=e.clone(E,k))}var Z=n.cartesianToCartographic(k,W);return Y=i.clamp(Y,0,1),S=e.magnitude(e.subtract(k,a,N))*Math.sqrt(1-Y*Y),S=c?-S:S,Z.height=S,n.cartographicToCartesian(Z,new e)}return void 0};var F=new e;return p.lineSegmentPlane=function(t,n,a,o){r(o)||(o=new e);var u=e.subtract(n,t,F),s=a.normal,c=e.dot(s,u);if(Math.abs(c)<i.EPSILON6)return void 0;var l=e.dot(s,t),f=-(a.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},p.trianglePlaneIntersection=function(t,n,r,a){var i=a.normal,o=a.distance,u=e.dot(i,t)+o<0,s=e.dot(i,n)+o<0,c=e.dot(i,r)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,d;if((1===l||2===l)&&(f=new e,d=new e),1===l){if(u)return p.lineSegmentPlane(t,n,a,f),p.lineSegmentPlane(t,r,a,d),{positions:[t,n,r,f,d],indices:[0,3,4,1,2,4,1,4,3]};if(s)return p.lineSegmentPlane(n,r,a,f),p.lineSegmentPlane(n,t,a,d),{positions:[t,n,r,f,d],indices:[1,3,4,2,0,4,2,4,3]};if(c)return p.lineSegmentPlane(r,t,a,f),p.lineSegmentPlane(r,n,a,d),{positions:[t,n,r,f,d],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return p.lineSegmentPlane(n,t,a,f),p.lineSegmentPlane(r,t,a,d),{positions:[t,n,r,f,d],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return p.lineSegmentPlane(r,n,a,f),p.lineSegmentPlane(t,n,a,d),{positions:[t,n,r,f,d],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return p.lineSegmentPlane(t,r,a,f),p.lineSegmentPlane(n,r,a,d),{positions:[t,n,r,f,d],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,n,r,a){return t(e).then(n,r,a)}function t(e){var t,n;return e instanceof r?t=e:u(e)?(n=o(),e.then(function(e){n.resolve(e)},function(e){n.reject(e)},function(e){n.progress(e)}),t=n.promise):t=a(e),t}function n(t){return e(t,i)}function r(e){this.then=e}function a(e){var n=new r(function(n){try{return t(n?n(e):e)}catch(r){return i(r)}});return n}function i(e){var n=new r(function(n,r){try{return r?t(r(e)):i(e)}catch(a){return i(a)}});return n}function o(){function e(e,t,n){return d(e,t,n)}function n(e){return m(e)}function a(e){return m(i(e))}function u(e){return h(e)}var s,c,l,f,d,h,m;return c=new r(e),s={then:e,resolve:n,reject:a,progress:u,promise:c,resolver:{resolve:n,reject:a,progress:u}},l=[],f=[],d=function(e,t,n){var r,a;return r=o(),a="function"==typeof n?function(e){try{r.progress(n(e))}catch(t){r.progress(t)}}:function(e){r.progress(e)},l.push(function(n){n.then(e,t).then(r.resolve,r.reject,a)}),f.push(a),r.promise},h=function(e){return p(f,e),e},m=function(e){return e=t(e),d=e.then,m=t,h=v,p(l,e),f=l=E,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,n,r,a,i){return y(2,arguments),e(t,function(t){function u(e){p(e)}function s(e){m(e)}var c,l,f,d,h,m,p,y,g,w;if(g=t.length>>>0,c=Math.max(0,Math.min(n,g)),f=[],l=g-c+1,d=[],h=o(),c)for(y=h.progress,p=function(e){d.push(e),--l||(m=p=v,h.reject(d))},m=function(e){f.push(e),--c||(m=p=v,h.resolve(f))},w=0;g>w;++w)w in t&&e(t[w],s,u,y);else h.resolve(f);return h.then(r,a,i)})}function c(e,t,n,r){function a(e){return t?t(e[0]):e[0]}return s(e,1,a,n,r)}function l(e,t,n,r){return y(1,arguments),d(e,g).then(t,n,r)}function f(){return d(arguments,g)}function d(t,n){return e(t,function(t){var r,a,i,u,s,c;if(i=a=t.length>>>0,r=[],c=o(),i)for(u=function(t,a){e(t,n).then(function(e){r[a]=e,--i||c.resolve(r)},c.reject)},s=0;a>s;s++)s in t?u(t[s],s):--i;else c.resolve(r);return c.promise})}function h(t,n){var r=x.call(arguments,1);return e(t,function(t){var a;return a=t.length,r[0]=function(t,r,i){return e(t,function(t){return e(r,function(e){return n(t,e,i,a)})})},w.apply(t,r)})}function m(t,n,r){var a=arguments.length>2;return e(t,function(e){return e=a?r:e,n.resolve(e),e},function(e){return n.reject(e),i(e)},n.progress)}function p(e,t){for(var n,r=0;n=e[r++];)n(t)}function y(e,t){for(var n,r=t.length;r>e;)if(n=t[--r],null!=n&&"function"!=typeof n)throw new Error("arg "+r+" must be a function")}function v(){}function g(e){return e}var w,x,E;return e.defer=o,e.resolve=t,e.reject=n,e.join=f,e.all=l,e.map=d,e.reduce=h,e.any=c,e.some=s,e.chain=m,e.isPromise=u,r.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(E,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(E,t)})})}},x=[].slice,w=[].reduce||function(e){var t,n,r,a,i;if(i=0,t=Object(this),a=t.length>>>0,n=arguments,n.length<=1)for(;;){if(i in t){r=t[i++];break}if(++i>=a)throw new TypeError}else r=n[1];for(;a>i;++i)i in t&&(r=e(r,t[i],i,t));return r},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,n){for(var r,a,i=0,o=e.length-1;o>=i;)if(r=~~((i+o)/2),a=n(e[r],t),0>a)i=r+1;else{if(!(a>0))return r;o=r-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,n,r,a){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=r,this.ut1MinusUtc=a};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,n=0,r=t[n++],a=function(e,t,n,r){n||(n=" ");var a=e.length>=t?"":Array(1+t-e.length>>>0).join(n);return r?e+a:a+e},i=function(e,t,n,r,i,o){var u=r-e.length;return u>0&&(e=n||!i?a(e,r,o,n):e.slice(0,t.length)+a("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,n,r,o,u,s){var c=e>>>0;return n=n&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=n+a(c.toString(t),u||0,"0",!1),i(e,n,r,o,s)},u=function(e,t,n,r,a,o){return null!=r&&(e=e.slice(0,r)),i(e,"",t,n,a,o)},s=function(e,r,s,c,l,f,d){var h,m,p,y,v;if("%%"==e)return"%";for(var g=!1,w="",x=!1,E=!1,S=" ",_=s.length,O=0;s&&_>O;O++)switch(s.charAt(O)){case" ":w=" ";break;case"+":w="+";break;case"-":g=!0;break;case"'":S=s.charAt(O+1);break;case"0":x=!0;break;case"#":E=!0}if(c=c?"*"==c?+t[n++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,g=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(f=f?"*"==f?+t[n++]:"*"==f.charAt(0)?+t[f.slice(1,-1)]:+f:"fFeE".indexOf(d)>-1?6:"d"==d?0:void 0,v=r?t[r.slice(0,-1)]:t[n++],d){case"s":return u(String(v),g,c,f,x,S);case"c":return u(String.fromCharCode(+v),g,c,f,x);case"b":return o(v,2,E,g,c,f,x);case"o":return o(v,8,E,g,c,f,x);case"x":return o(v,16,E,g,c,f,x);case"X":return o(v,16,E,g,c,f,x).toUpperCase();case"u":return o(v,10,E,g,c,f,x);case"i":case"d":return h=+v||0,h=Math.round(h-h%1),m=0>h?"-":w,v=m+a(String(Math.abs(h)),f,"0",!1),i(v,m,g,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return h=+v,m=0>h?"-":w,p=["toExponential","toFixed","toPrecision"]["efg".indexOf(d.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(d)%2],v=m+Math.abs(h)[p](f),i(v,m,g,c,x)[y]();default:return e}};return r.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,n,r,a,i,o,u){this.year=e,this.month=t,this.day=n,this.hour=r,this.minute=a,this.second=i,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c){"use strict";function l(e,t){return N.compare(e.julianDate,t.julianDate)}function f(e){g.julianDate=e;var n=N.leapSeconds,r=t(n,g,l);0>r&&(r=~r),r>=n.length&&(r=n.length-1);var a=n[r].offset;if(r>0){var i=N.secondsDifference(n[r].julianDate,e);i>a&&(r--,a=n[r].offset)}N.addSeconds(e,a,e)}function d(e,n){g.julianDate=e;var r=N.leapSeconds,a=t(r,g,l);if(0>a&&(a=~a),0===a)return N.addSeconds(e,-r[0].offset,n);if(a>=r.length)return N.addSeconds(e,-r[a-1].offset,n);var i=N.secondsDifference(r[a].julianDate,e);return 0===i?N.addSeconds(e,-r[a].offset,n):1>=i?void 0:N.addSeconds(e,-r[--a].offset,n)}function h(e,t,n){var r=0|t/s.SECONDS_PER_DAY;return e+=r,t-=s.SECONDS_PER_DAY*r,0>t&&(e--,t+=s.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function m(e,t,n,r,a,i,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+n-32075;r-=12,0>r&&(r+=24);var f=i+(r*s.SECONDS_PER_HOUR+a*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return f>=43200&&(l-=1),[l,f]}var p=new i,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,g=new u,w=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,E=/^(\d{4})-?(\d{3})$/,S=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,_=/^(\d{4})-?(\d{2})-?(\d{2})$/,O=/([Z+\-])?(\d{2})?:?(\d{2})?$/,M=/^(\d{2})(\.\d+)?/.source+O.source,P=/^(\d{2}):?(\d{2})(\.\d+)?/.source+O.source,T=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+O.source,R="Invalid ISO 8601 date.",N=function(e,t,r){this.dayNumber=void 0,this.secondsOfDay=void 0,e=n(e,0),t=n(t,0),r=n(r,c.UTC);var a=0|e;t+=(e-a)*s.SECONDS_PER_DAY,h(a,t,this),r===c.UTC&&f(this)};N.fromDate=function(e,t){var n=m(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return r(t)?(h(n[0],n[1],t),f(t),t):new N(n[0],n[1],c.UTC)},N.fromIso8601=function(e,t){e=e.replace(",",".");var n,i,u,s=e.split("T"),l=1,d=1,p=0,g=0,O=0,C=0,I=s[0],z=s[1];if(!r(I))throw new a(R);var A;if(s=I.match(_),null!==s){if(A=I.split("-").length-1,A>0&&2!==A)throw new a(R);n=+s[1],l=+s[2],d=+s[3]}else if(s=I.match(x),null!==s)n=+s[1],l=+s[2];else if(s=I.match(w),null!==s)n=+s[1];else{var b;if(s=I.match(E),null!==s){if(n=+s[1],b=+s[2],u=o(n),1>b||u&&b>366||!u&&b>365)throw new a(R)}else{if(s=I.match(S),null===s)throw new a(R);n=+s[1];var D=+s[2],q=+s[3]||0;if(A=I.split("-").length-1,A>0&&(!r(s[3])&&1!==A||r(s[3])&&2!==A))throw new a(R);var U=new Date(Date.UTC(n,0,4));b=7*D+q-U.getUTCDay()-3}i=new Date(Date.UTC(n,0,1)),i.setUTCDate(b),l=i.getUTCMonth()+1,d=i.getUTCDate()}if(u=o(n),1>l||l>12||1>d||(2!==l||!u)&&d>y[l-1]||u&&2===l&&d>v)throw new a(R);var L;if(r(z)){if(s=z.match(T),null!==s){if(A=z.split(":").length-1,A>0&&2!==A&&3!==A)throw new a(R);p=+s[1],g=+s[2],O=+s[3],C=1e3*+(s[4]||0),L=5}else if(s=z.match(P),null!==s){if(A=z.split(":").length-1,A>0&&1!==A)throw new a(R);p=+s[1],g=+s[2],O=60*+(s[3]||0),L=4}else{if(s=z.match(M),null===s)throw new a(R);p=+s[1],g=60*+(s[2]||0),L=3}if(g>=60||O>=61||p>24||24===p&&(g>0||O>0||C>0))throw new a(R);var B=s[L],W=+s[L+1],F=+(s[L+2]||0);switch(B){case"+":p-=W,g-=F;break;case"-":p+=W,g+=F;break;case"Z":break;default:g+=new Date(Date.UTC(n,l-1,d,p,g)).getTimezoneOffset()}}else g+=new Date(n,l-1,d).getTimezoneOffset();var G=60===O;for(G&&O--;g>=60;)g-=60,p++;for(;p>=24;)p-=24,d++;for(i=u&&2===l?v:y[l-1];d>i;)d-=i,l++,l>12&&(l-=12,n++),i=u&&2===l?v:y[l-1];for(;0>g;)g+=60,p--;for(;0>p;)p+=24,d--;for(;1>d;)l--,1>l&&(l+=12,n--),i=u&&2===l?v:y[l-1],d+=i;var k=m(n,l,d,p,g,O,C);return r(t)?(h(k[0],k[1],t),f(t)):t=new N(k[0],k[1],c.UTC),G&&N.addSeconds(t,1,t),t},N.now=function(e){return N.fromDate(new Date,e)};var C=new N(0,0,c.TAI);return N.toGregorianDate=function(e,t){var n=!1,a=d(e,C);r(a)||(N.addSeconds(e,-1,C),a=d(C,C),n=!0);var o=a.dayNumber,u=a.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var f=0|4e3*(c+1)/1461001;c=0|c-(0|1461*f/4)+31;var h=0|80*c/2447,m=0|c-(0|2447*h/80);c=0|h/11;var p=0|h+2-12*c,y=0|100*(l-49)+f+c,v=0|u/s.SECONDS_PER_HOUR,g=u-v*s.SECONDS_PER_HOUR,w=0|g/s.SECONDS_PER_MINUTE;g-=w*s.SECONDS_PER_MINUTE;var x=0|g,E=(g-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),n&&(x+=1),r(t)?(t.year=y,t.month=p,t.day=m,t.hour=v,t.minute=w,t.second=x,t.millisecond=E,t.isLeapSecond=n,t):new i(y,p,m,v,w,x,E,n)},N.toDate=function(e){var t=N.toGregorianDate(e,p),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))},N.toIso8601=function(t,n){var a,i=N.toGregorianDate(t,i);return r(n)||0===i.millisecond?r(n)&&0!==n?(a=(.01*i.millisecond).toFixed(n).replace(".","").slice(0,n),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",i.year,i.month,i.day,i.hour,i.minute,i.second):(a=(.01*i.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",i.year,i.month,i.day,i.hour,i.minute,i.second,a))},N.clone=function(e,t){return r(e)?r(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new N(e.dayNumber,e.secondsOfDay,c.TAI):void 0},N.compare=function(e,t){var n=e.dayNumber-t.dayNumber;return 0!==n?n:e.secondsOfDay-t.secondsOfDay},N.equals=function(e,t){return e===t||r(e)&&r(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},N.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(N.secondsDifference(e,t))<=n},N.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},N.secondsDifference=function(e,t){var n=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return n+(e.secondsOfDay-t.secondsOfDay)},N.daysDifference=function(e,t){var n=e.dayNumber-t.dayNumber,r=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return n+r},N.computeTaiMinusUtc=function(e){g.julianDate=e;var n=N.leapSeconds,r=t(n,g,l);return 0>r&&(r=~r,--r,0>r&&(r=0)),n[r].offset},N.addSeconds=function(e,t,n){return h(e.dayNumber,e.secondsOfDay+t,n)},N.addMinutes=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return h(e.dayNumber,r,n)},N.addHours=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return h(e.dayNumber,r,n)},N.addDays=function(e,t,n){var r=e.dayNumber+t;return h(r,e.secondsOfDay,n)},N.lessThan=function(e,t){return N.compare(e,t)<0},N.lessThanOrEquals=function(e,t){return N.compare(e,t)<=0},N.greaterThan=function(e,t){return N.compare(e,t)>0},N.greaterThanOrEquals=function(e,t){return N.compare(e,t)>=0},N.prototype.clone=function(e){return N.clone(this,e)},N.prototype.equals=function(e){return N.equals(this,e)},N.prototype.equalsEpsilon=function(e,t){return N.equalsEpsilon(this,e,t)},N.prototype.toString=function(){return N.toIso8601(this)},N.leapSeconds=[new u(new N(2441317,43210,c.TAI),10),new u(new N(2441499,43211,c.TAI),11),new u(new N(2441683,43212,c.TAI),12),new u(new N(2442048,43213,c.TAI),13),new u(new N(2442413,43214,c.TAI),14),new u(new N(2442778,43215,c.TAI),15),new u(new N(2443144,43216,c.TAI),16),new u(new N(2443509,43217,c.TAI),17),new u(new N(2443874,43218,c.TAI),18),new u(new N(2444239,43219,c.TAI),19),new u(new N(2444786,43220,c.TAI),20),new u(new N(2445151,43221,c.TAI),21),new u(new N(2445516,43222,c.TAI),22),new u(new N(2446247,43223,c.TAI),23),new u(new N(2447161,43224,c.TAI),24),new u(new N(2447892,43225,c.TAI),25),new u(new N(2448257,43226,c.TAI),26),new u(new N(2448804,43227,c.TAI),27),new u(new N(2449169,43228,c.TAI),28),new u(new N(2449534,43229,c.TAI),29),new u(new N(2450083,43230,c.TAI),30),new u(new N(2450630,43231,c.TAI),31),new u(new N(2451179,43232,c.TAI),32),new u(new N(2453736,43233,c.TAI),33),new u(new N(2454832,43234,c.TAI),34),new u(new N(2456109,43235,c.TAI),35),new u(new N(2457204,43236,c.TAI),36)],N}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(n,r){if(null===n||"object"!=typeof n)return n;r=e(r,!1);var a=new n.constructor;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i];r&&(o=t(o,r)),a[i]=o}return a};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var n=e.split("\r\n"),r=0;r<n.length;++r){var a=n[r],i=a.indexOf(": ");if(i>0){var o=a.substring(0,i),u=a.substring(i+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var n=function(e,n,r){this.statusCode=e,this.response=n,this.responseHeaders=r,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return n.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},n}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,n,r,a,i){"use strict";function o(e,t){var n=decodeURIComponent(t);return e?atob(n):n}function u(e,t){for(var n=o(e,t),r=new ArrayBuffer(n.length),a=new Uint8Array(r),i=0;i<n.length;i++)a[i]=n.charCodeAt(i);return r}function s(e,n){n=t(n,"");var a=e[1],i=!!e[2],s=e[3];switch(n){case"":case"text":return o(i,s);case"arraybuffer":return u(i,s);case"blob":var c=u(i,s); +return new Blob([c],{type:a});case"document":var l=new DOMParser;return l.parseFromString(o(i,s),a);case"json":return JSON.parse(o(i,s));default:throw new r("Unhandled responseType: "+n)}}var c=function(n){n=t(n,t.EMPTY_OBJECT);var r=n.responseType,a=t(n.method,"GET"),i=n.data,o=n.headers,u=n.overrideMimeType;return e(n.url,function(t){var n=e.defer();return c.load(t,r,a,i,o,n,u),n.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,r,o,u,c,f){var d=l.exec(e);if(null!==d)return c.resolve(s(d,t)),void 0;var h=new XMLHttpRequest;if(n(f)&&n(h.overrideMimeType)&&h.overrideMimeType(f),h.open(r,e,!0),n(u))for(var m in u)u.hasOwnProperty(m)&&h.setRequestHeader(m,u[m]);n(t)&&(h.responseType=t),h.onload=function(){200===h.status?n(h.response)?c.resolve(h.response):n(h.responseXML)&&h.responseXML.hasChildNodes()?c.resolve(h.responseXML):n(h.responseText)?c.resolve(h.responseText):c.reject(new i("unknown XMLHttpRequest response type.")):c.reject(new a(h.status,h.response,h.getAllResponseHeaders()))},h.onerror=function(){c.reject(new a)},h.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,n){return e({url:t,headers:n})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,n,r){"use strict";var a={Accept:"application/json,*/*;q=0.01"},i=function(n,i){return t(i)?t(i.Accept)||(i=e(i),i.Accept=a.Accept):i=a,r(n,i).then(function(e){return JSON.parse(e)})};return i}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,n,r,a,i,o,u,s,c,l,f){"use strict";function d(e,t){return o.compare(e.julianDate,t)}function h(e,n){if(!r(n.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!r(n.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var a=n.columnNames.indexOf("modifiedJulianDateUtc"),i=n.columnNames.indexOf("xPoleWanderRadians"),s=n.columnNames.indexOf("yPoleWanderRadians"),c=n.columnNames.indexOf("ut1MinusUtcSeconds"),h=n.columnNames.indexOf("xCelestialPoleOffsetRadians"),m=n.columnNames.indexOf("yCelestialPoleOffsetRadians"),p=n.columnNames.indexOf("taiMinusUtcSeconds");if(0>a||0>i||0>s||0>c||0>h||0>m||0>p)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=n.samples,v=e._dates=[];e._dateColumn=a,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=h,e._yCelestialPoleOffsetRadiansColumn=m,e._taiMinusUtcSecondsColumn=p,e._columnCount=n.columnNames.length,e._lastIndex=void 0;for(var g,w=e._addNewLeapSeconds,x=0,E=y.length;E>x;x+=e._columnCount){var S=y[x+a],_=y[x+p],O=S+l.MODIFIED_JULIAN_DATE_DIFFERENCE,M=new o(O,_,f.TAI);if(v.push(M),w){if(_!==g&&r(g)){var P=o.leapSeconds,T=t(P,M,d);if(0>T){var R=new u(M,_);P.splice(~T,0,R)}}g=_}}}function m(e,t,n,r,a){var i=n*r;a.xPoleWander=t[i+e._xPoleWanderRadiansColumn],a.yPoleWander=t[i+e._yPoleWanderRadiansColumn],a.xPoleOffset=t[i+e._xCelestialPoleOffsetRadiansColumn],a.yPoleOffset=t[i+e._yCelestialPoleOffsetRadiansColumn],a.ut1MinusUtc=t[i+e._ut1MinusUtcSecondsColumn]}function p(e,t,n){return t+e*(n-t)}function y(e,t,n,r,a,i,u){var s=e._columnCount;if(i>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u;var c=t[a],l=t[i];if(c.equals(l)||r.equals(c))return m(e,n,a,s,u),u;if(r.equals(l))return m(e,n,i,s,u),u;var f=o.secondsDifference(r,c)/o.secondsDifference(l,c),d=a*s,h=i*s,y=n[d+e._ut1MinusUtcSecondsColumn],v=n[h+e._ut1MinusUtcSecondsColumn],g=v-y;if(g>.5||-.5>g){var w=n[d+e._taiMinusUtcSecondsColumn],x=n[h+e._taiMinusUtcSecondsColumn];w!==x&&(l.equals(r)?y=v:v-=x-w)}return u.xPoleWander=p(f,n[d+e._xPoleWanderRadiansColumn],n[h+e._xPoleWanderRadiansColumn]),u.yPoleWander=p(f,n[d+e._yPoleWanderRadiansColumn],n[h+e._yPoleWanderRadiansColumn]),u.xPoleOffset=p(f,n[d+e._xCelestialPoleOffsetRadiansColumn],n[h+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=p(f,n[d+e._yCelestialPoleOffsetRadiansColumn],n[h+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=p(f,y,v),u}var v=function(t){if(t=n(t,n.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=n(t.addNewLeapSeconds,!0),r(t.data))h(this,t.data);else if(r(t.url)){var a=this;this._downloadPromise=e(s(t.url),function(e){h(a,e)},function(){a._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else h(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return v.NONE=i({getPromiseToLoad:function(){return e()},compute:function(e,t){return r(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new a(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,n){if(!r(this._samples)){if(r(this._dataError))throw new c(this._dataError);return void 0}if(r(n)||(n=new a(0,0,0,0,0)),0===this._samples.length)return n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0,n;var i=this._dates,u=this._lastIndex,s=0,l=0;if(r(u)){var f=i[u],d=i[u+1],h=o.lessThanOrEquals(f,e),m=!r(d),p=m||o.greaterThanOrEquals(d,e);if(h&&p)return s=u,!m&&d.equals(e)&&++s,l=s+1,y(this,i,this._samples,e,s,l,n),n}var v=t(i,e,o.compare,this._dateColumn);return v>=0?(v<i.length-1&&i[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,i,this._samples,e,s,l,n),n},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var n=r.exec(t);this.scheme=n[1],this.authority=n[2],this.path=n[3],this.query=n[4],this.fragment=n[5]}}function t(e){var t=unescape(e);return i.test(t)?t:e.toUpperCase()}function n(e,t,n,r){return(t||"")+n.toLowerCase()+(r||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var r=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,n).replace(a,t)),this.path&&(this.path=this.path.replace(a,t)),this.query&&(this.query=this.query.replace(a,t)),this.fragment&&(this.fragment=this.fragment.replace(a,t))};var a=/%[0-9a-z]{2}/gi,i=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var n=new e;return this.scheme?(n.scheme=this.scheme,n.authority=this.authority,n.path=this.path,n.query=this.query):(n.scheme=t.scheme,this.authority?(n.authority=this.authority,n.path=this.path,n.query=this.query):(n.authority=t.authority,""==this.path?(n.path=t.path,n.query=this.query||t.query):("/"==this.path.charAt(0)?(n.path=this.path,n.removeDotSegments()):(n.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,n.removeDotSegments()),n.query=this.query))),n.fragment=this.fragment,n},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),n=[],r=""==t[0];for(r&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?n.pop():"."!=e&&n.push(e);("."==e||".."==e)&&n.push(""),r&&n.unshift(""),this.path=n.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,n,r){"use strict";function a(){for(var e=document.getElementsByTagName("script"),t=0,n=e.length;n>t;++t){var r=e[t].getAttribute("src"),a=f.exec(r);if(null!==a)return a[1]}return void 0}function i(){if(t(s))return s;var r;if(r="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:a(),!t(r))throw new n("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(r).resolve(new e(document.location.href))}function o(e){return r.toUrl("../"+e)}function u(t){return new e(t).resolve(i()).toString()}var s,c,l,f=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,d=function(e){t(c)||(c=t(r.toUrl)?o:u),t(l)||(l=document.createElement("a"));var n=c(e);return l.href=n,l.href=l.href,l.href};return d._cesiumScriptRegex=f,d.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},d}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,n){this.x=e,this.y=t,this.s=n};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,n,r,a,i,o,u){"use strict";function s(e,t,n){var r=f;return r.dayNumber=t,r.secondsOfDay=n,i.daysDifference(r,e._sampleZeroDateTT)}function c(n,a){if(n._chunkDownloadsInProgress[a])return n._chunkDownloadsInProgress[a];var i=e.defer();n._chunkDownloadsInProgress[a]=i;var u,s=n._xysFileUrlTemplate;return u=r(s)?s.replace("{0}",a):t("Assets/IAU2006_XYS/IAU2006_XYS_"+a+".json"),e(o(u),function(e){n._chunkDownloadsInProgress[a]=!1;for(var t=n._samples,r=e.samples,o=3*a*n._samplesPerXysFile,u=0,s=r.length;s>u;++u)t[o+u]=r[u];i.resolve()}),i.promise}var l=function(e){e=n(e,n.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=n(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=n(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new i(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=n(e.stepSizeDays,1),this._samplesPerXysFile=n(e.samplesPerXysFile,1e3),this._totalSamples=n(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,r=this._denominators=new Array(t+1),a=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){r[s]=o,a[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(r[s]*=s-c);r[s]=1/r[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},f=new i(0,0,u.TAI);return l.prototype.preload=function(t,n,r,a){var i=s(this,t,n),o=s(this,r,a),u=0|i/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var f=0|u/this._samplesPerXysFile,d=0|l/this._samplesPerXysFile,h=[],m=f;d>=m;++m)h.push(c(this,m));return e.all(h)},l.prototype.computeXysRadians=function(e,t,n){var i=s(this,e,t);if(0>i)return void 0;var o=0|i/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var f=l+u;f>=this._totalSamples&&(f=this._totalSamples-1,l=f-u,0>l&&(l=0));var d=!1,h=this._samples;if(r(h[3*l])||(c(this,0|l/this._samplesPerXysFile),d=!0),r(h[3*f])||(c(this,0|f/this._samplesPerXysFile),d=!0),d)return void 0;r(n)?(n.x=0,n.y=0,n.s=0):n=new a(0,0,0);var m,p,y=i-l*this._stepSizeDays,v=this._work,g=this._denominators,w=this._coef,x=this._xTable;for(m=0;u>=m;++m)v[m]=y-x[m];for(m=0;u>=m;++m){for(w[m]=1,p=0;u>=p;++p)p!==m&&(w[m]*=v[p]);w[m]*=g[m];var E=3*(l+m);n.x+=w[m]*h[E++],n.y+=w[m]*h[E++],n.s+=w[m]*h[E]}return n},l}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,n,r,a,i,o,u){"use strict";var s=function(e,n,r,a){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(a,0)},c=new e;s.fromAxisAngle=function(t,r,a){var i=r/2,o=Math.sin(i);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,d=Math.cos(i);return n(a)?(a.x=u,a.y=l,a.z=f,a.w=d,a):new s(u,l,f,d)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var r,a,i,o,c,d=e[u.COLUMN0ROW0],h=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],p=d+h+m;if(p>0)r=Math.sqrt(p+1),c=.5*r,r=.5/r,a=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*r,i=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*r,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*r;else{var y=l,v=0;h>d&&(v=1),m>d&&m>h&&(v=2);var g=y[v],w=y[g];r=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=f;x[v]=.5*r,r=.5/r,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*r,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*r,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*r,a=-x[0],i=-x[1],o=-x[2]}return n(t)?(t.x=a,t.y=i,t.z=o,t.w=c,t):new s(a,i,o,c)};var d=new s;s.fromHeadingPitchRoll=function(t,n,r,a){var i=s.fromAxisAngle(e.UNIT_X,r,d),o=s.fromAxisAngle(e.UNIT_Y,-n,a);a=s.multiply(o,i,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,d);return s.multiply(u,a,a)};var h=new e,m=new e,p=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},s.unpack=function(e,r,a){return r=t(r,0),n(a)||(a=new s),a.x=e[r],a.y=e[r+1],a.z=e[r+2],a.w=e[r+3],a},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,n,r){s.unpack(e,4*n,v),s.conjugate(v,v);for(var a=0,i=n-t+1;i>a;a++){var o=3*a;s.unpack(e,4*(t+a),p),s.multiply(p,v,p),p.w<0&&s.negate(p,p),s.computeAxis(p,h);var u=s.computeAngle(p);r[o]=h.x*u,r[o+1]=h.y*u,r[o+2]=h.z*u}},s.unpackInterpolationResult=function(t,r,a,i,o){n(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(r,4*i,y),0===u?s.clone(s.IDENTITY,p):s.fromAxisAngle(m,u,p),s.multiply(p,y,o)},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var n=1/s.magnitude(e),r=e.x*n,a=e.y*n,i=e.z*n,o=e.w*n;return t.x=r,t.y=a,t.z=i,t.w=o,t},s.inverse=function(e,t){var n=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/n,t)},s.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},s.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,n){var r=e.x,a=e.y,i=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+r*l+a*c-i*s,d=o*s-r*c+a*l+i*u,h=o*c+r*s-a*u+i*l,m=o*l-r*u-a*s-i*c;return n.x=f,n.y=d,n.z=h,n.w=m,n},s.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},s.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},s.computeAxis=function(e,t){var n=e.w;if(Math.abs(n-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var r=1/Math.sqrt(1-n*n);return t.x=e.x*r,t.y=e.y*r,t.z=e.z*r,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,n,r){return g=s.multiplyByScalar(t,n,g),r=s.multiplyByScalar(e,1-n,r),s.add(g,r,r)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,n,r){var a=s.dot(e,t),i=t;if(0>a&&(a=-a,i=w=s.negate(t,w)),1-a<o.EPSILON6)return s.lerp(e,i,n,r);var u=Math.acos(a);return x=s.multiplyByScalar(e,Math.sin((1-n)*u),x),E=s.multiplyByScalar(i,Math.sin(n*u),E),r=s.add(x,E,r),s.multiplyByScalar(r,1/Math.sin(u),r)},s.log=function(t,n){var r=o.acosClamped(t.w),a=0;return 0!==r&&(a=r/Math.sin(r)),e.multiplyByScalar(t,a,n)},s.exp=function(t,n){var r=e.magnitude(t),a=0;return 0!==r&&(a=Math.sin(r)/r),n.x=t.x*a,n.y=t.y*a,n.z=t.z*a,n.w=Math.cos(r),n};var S=new e,_=new e,O=new s,M=new s;s.computeInnerQuadrangle=function(t,n,r,a){var i=s.conjugate(n,O);s.multiply(i,r,M);var o=s.log(M,S);s.multiply(i,t,M);var u=s.log(M,_);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,O),s.multiply(n,O,a)},s.squad=function(e,t,n,r,a,i){var o=s.slerp(e,t,a,O),u=s.slerp(n,r,a,M);return s.slerp(o,u,2*a*(1-a),i)};for(var P=new s,T=1.9011074535173003,R=a.supportsTypedArrays()?new Float32Array(8):[],N=a.supportsTypedArrays()?new Float32Array(8):[],C=a.supportsTypedArrays()?new Float32Array(8):[],I=a.supportsTypedArrays()?new Float32Array(8):[],z=0;7>z;++z){var A=z+1,b=2*A+1;R[z]=1/(A*b),N[z]=A/b}return R[7]=T/136,N[7]=8*T/17,s.fastSlerp=function(e,t,n,r){var a,i=s.dot(e,t);i>=0?a=1:(a=-1,i=-i);for(var o=i-1,u=1-n,c=n*n,l=u*u,f=7;f>=0;--f)C[f]=(R[f]*c-N[f])*o,I[f]=(R[f]*l-N[f])*o;var d=a*n*(1+C[0]*(1+C[1]*(1+C[2]*(1+C[3]*(1+C[4]*(1+C[5]*(1+C[6]*(1+C[7])))))))),h=u*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),m=s.multiplyByScalar(e,h,P);return s.multiplyByScalar(t,d,r),s.add(m,r,r)},s.fastSquad=function(e,t,n,r,a,i){var o=s.fastSlerp(e,t,a,O),u=s.fastSlerp(n,r,a,M);return s.fastSlerp(o,u,2*a*(1-a),i)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},s.ZERO=i(new s(0,0,0,0)),s.IDENTITY=i(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,n,r,a,i,o,u,s,c,l,f,d,h,m,p,y,v){"use strict";var g={},w=new n,x=new n,E=new n;g.eastNorthUpToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=-o,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=s.x,r[1]=s.y,r[2]=s.z,r[3]=0,r[4]=l.x,r[5]=l.y,r[6]=l.z,r[7]=0,r[8]=u.x,r[9]=u.y,r[10]=u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var S=new n,_=new n,O=new n;g.northEastDownToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=-o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=S,s=_,l=O;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=s.x,r[5]=s.y,r[6]=s.z,r[7]=0,r[8]=-u.x,r[9]=-u.y,r[10]=-u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},g.northUpEastToFixedFrame=function(e,t,r){if(h.equalsEpsilon(e.x,0,h.EPSILON14)&&h.equalsEpsilon(e.y,0,h.EPSILON14)){var o=h.sign(e.z);return i(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=o,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=a(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),i(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=u.x,r[5]=u.y,r[6]=u.z,r[7]=0,r[8]=s.x,r[9]=s.y,r[10]=s.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var M=new y,P=new n(1,1,1),T=new p;g.headingPitchRollToFixedFrame=function(e,t,r,a,i,o){var u=y.fromHeadingPitchRoll(t,r,a,M),s=p.fromTranslationQuaternionRotationScale(n.ZERO,u,P,T);return o=g.eastNorthUpToFixedFrame(e,i,o),p.multiply(o,s,o)};var R=new p,N=new m;g.headingPitchRollQuaternion=function(e,t,n,r,a,i){var o=g.headingPitchRollToFixedFrame(e,t,n,r,a,R),u=p.getRotation(o,N);return y.fromRotationMatrix(u,i)};var C=24110.54841,I=8640184.812866,z=.093104,A=-62e-7,b=1.1772758384668e-19,D=72921158553e-15,q=h.TWO_PI/86400,U=new d;g.computeTemeToPseudoFixedMatrix=function(e,t){U=d.addSeconds(e,-d.computeTaiMinusUtc(e),U);var n,r=U.dayNumber,a=U.secondsOfDay,o=r-2451545;n=a>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=C+n*(I+n*(z+n*A)),s=u*q%h.TWO_PI,c=D+b*(r-2451545.5),l=(a+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,f=s+c*l,p=Math.cos(f),y=Math.sin(f);return i(t)?(t[0]=p,t[1]=-y,t[2]=0,t[3]=y,t[4]=p,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new m(p,y,0,-y,p,0,0,0,1)},g.iau2006XysData=new l,g.earthOrientationParameters=u.NONE;var L=32.184,B=2451545;g.preloadIcrfFixed=function(t){var n=t.start.dayNumber,r=t.start.secondsOfDay+L,a=t.stop.dayNumber,i=t.stop.secondsOfDay+L,o=g.iau2006XysData.preload(n,r,a,i),u=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},g.computeIcrfToFixedMatrix=function(e,t){i(t)||(t=new m);var n=g.computeFixedToIcrfMatrix(e,t);return i(n)?m.transpose(n,t):void 0};var W=new f(0,0,0),F=new s(0,0,0,0,0,0),G=new m,k=new m;g.computeFixedToIcrfMatrix=function(e,t){i(t)||(t=new m);var n=g.earthOrientationParameters.compute(e,F);if(!i(n))return void 0;var r=e.dayNumber,a=e.secondsOfDay+L,o=g.iau2006XysData.computeXysRadians(r,a,W);if(!i(o))return void 0;var u=o.x+n.xPoleOffset,s=o.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=G;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var f=m.fromRotationZ(-o.s,k),p=m.multiply(l,f,G),y=e.dayNumber,w=e.secondsOfDay-d.computeTaiMinusUtc(e)+n.ut1MinusUtc,x=y-2451545,E=w/v.SECONDS_PER_DAY,S=.779057273264+E+.00273781191135448*(x+E);S=S%1*h.TWO_PI;var _=m.fromRotationZ(S,k),O=m.multiply(p,_,G),M=Math.cos(n.xPoleWander),P=Math.cos(n.yPoleWander),T=Math.sin(n.xPoleWander),R=Math.sin(n.yPoleWander),N=r-B+a/v.SECONDS_PER_DAY;N/=36525;var C=-47e-6*N*h.RADIANS_PER_DEGREE/3600,I=Math.cos(C),z=Math.sin(C),A=k;return A[0]=M*I,A[1]=M*z,A[2]=T,A[3]=-P*z+R*T*I,A[4]=P*I+R*T*z,A[5]=-R*M,A[6]=-R*z-P*T*I,A[7]=R*I-P*T*z,A[8]=P*M,m.multiply(O,A,t)};var Y=new r;g.pointToWindowCoordinates=function(e,t,n,r){return r=g.pointToGLWindowCoordinates(e,t,n,r),r.y=2*t[5]-r.y,r},g.pointToGLWindowCoordinates=function(e,n,a,o){i(o)||(o=new t);var u=Y;return p.multiplyByVector(e,r.fromElements(a.x,a.y,a.z,1,u),u),r.multiplyByScalar(u,1/u.w,u),p.multiplyByVector(n,u,u),t.fromCartesian4(u,o)};var j=new n,H=new n,V=new n;return g.rotationMatrixFromPositionVelocity=function(e,t,r,o){var u=a(r,c.WGS84).geodeticSurfaceNormal(e,j),s=n.cross(t,u,H);n.equalsEpsilon(s,n.ZERO,h.EPSILON6)&&(s=n.clone(n.UNIT_X,s));var l=n.cross(s,t,V);return n.cross(t,l,s),n.negate(s,s),i(o)||(o=new m),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},g}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,n,r,a,i,o,u,s,c,l,f,d,h,m){"use strict";var p=new r,y=function(e,t){t=a(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var r=m.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=n.fromCartesian4(f.getColumn(r,0,p)),this._yAxis=n.fromCartesian4(f.getColumn(r,1,p));var i=n.fromCartesian4(f.getColumn(r,2,p));this._plane=d.fromPointNormal(e,i)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,n){var r=e.fromPoints(t,v);return new y(r.center,n)};var g=new h,w=new n;y.prototype.projectPointOntoPlane=function(e,r){var a=g;a.origin=e,n.normalize(e,a.direction);var o=c.rayPlane(a,this._plane,w);if(i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w)),i(o)){var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return i(r)?(r.x=s,r.y=l,r):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){i(t)||(t=[]);for(var n=0,r=e.length,a=0;r>a;a++){var o=this.projectPointOntoPlane(e[a],t[n]);i(o)&&(t[n]=o,n++)}return t.length=n,t},y.prototype.projectPointToNearestOnPlane=function(e,r){i(r)||(r=new t);var a=g;a.origin=e,n.clone(this._plane.normal,a.direction);var o=c.rayPlane(a,this._plane,w);i(o)||(n.negate(a.direction,a.direction),o=c.rayPlane(a,this._plane,w));var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return r.x=s,r.y=l,r},y.prototype.projectPointsToNearestOnPlane=function(e,t){i(t)||(t=[]);var n=e.length;t.length=n;for(var r=0;n>r;r++)t[r]=this.projectPointToNearestOnPlane(e[r],t[r]);return t};var x=new n;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var r=e.length;i(t)?t.length=r:t=new Array(r);for(var a=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;r>l;++l){var f=e[l];n.multiplyByScalar(u,f.x,c),i(t[l])||(t[l]=new n);var d=n.add(o,c,t[l]);n.multiplyByScalar(s,f.y,c),n.add(d,c,d),a.scaleToGeocentricSurface(d,d)}return t},y}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=new t,a=new t,i=new t,o=function(o,u,s,c,l){n(l)||(l=new t);var f,d,h,m,p,y,v,g;n(u.z)?(f=t.subtract(s,u,r),d=t.subtract(c,u,a),h=t.subtract(o,u,i),m=t.dot(f,f),p=t.dot(f,d),y=t.dot(f,h),v=t.dot(d,d),g=t.dot(d,h)):(f=e.subtract(s,u,r),d=e.subtract(c,u,a),h=e.subtract(o,u,i),m=e.dot(f,f),p=e.dot(f,d),y=e.dot(f,h),v=e.dot(d,d),g=e.dot(d,h));var w=1/(m*v-p*p);return l.y=(v*y-p*g)*w,l.z=(m*g-p*y)*w,l.x=1-l.y-l.z,l};return o}),define("Core/pointInsideTriangle",["./barycentricCoordinates","./Cartesian3"],function(e,t){"use strict";var n=new t,r=function(t,r,a,i){return e(t,r,a,i,n),n.x>0&&n.y>0&&n.z>0};return r}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,n,r,a,i,o,u){"use strict";function s(e){var t=e._uSquared,n=e._ellipsoid.maximumRadius,r=e._ellipsoid.minimumRadius,a=(n-r)/n,i=Math.cos(e._startHeading),o=Math.sin(e._startHeading),u=(1-a)*Math.tan(e._start.latitude),s=1/Math.sqrt(1+u*u),c=s*u,l=Math.atan2(u,i),f=s*o,d=f*f,h=1-d,m=Math.sqrt(h),p=t/4,y=p*p,v=y*p,g=y*y,w=1+p-3*y/4+5*v/4-175*g/64,x=1-p+15*y/8-35*v/8,E=1-3*p+35*y/4,S=1-5*p,_=w*l-x*Math.sin(2*l)*p/2-E*Math.sin(4*l)*y/16-S*Math.sin(6*l)*v/48-5*Math.sin(8*l)*g/512,O=e._constants;O.a=n,O.b=r,O.f=a,O.cosineHeading=i,O.sineHeading=o,O.tanU=u,O.cosineU=s,O.sineU=c,O.sigma=l,O.sineAlpha=f,O.sineSquaredAlpha=d,O.cosineSquaredAlpha=h,O.cosineAlpha=m,O.u2Over4=p,O.u4Over16=y,O.u6Over64=v,O.u8Over256=g,O.a0=w,O.a1=x,O.a2=E,O.a3=S,O.distanceRatio=_}function c(e,t){return e*t*(4+e*(4-3*t))/16}function l(e,t,n,r,a,i,o){var u=c(e,n);return(1-u)*e*t*(r+u*a*(o+u*i*(2*o*o-1)))}function f(e,t,n,r,a,i,o){var s,c,f,d,h,m=(t-n)/t,p=i-r,y=Math.atan((1-m)*Math.tan(a)),v=Math.atan((1-m)*Math.tan(o)),g=Math.cos(y),w=Math.sin(y),x=Math.cos(v),E=Math.sin(v),S=g*x,_=g*E,O=w*E,M=w*x,P=p,T=u.TWO_PI,R=Math.cos(P),N=Math.sin(P);do{R=Math.cos(P),N=Math.sin(P);var C=_-M*R;f=Math.sqrt(x*x*N*N+C*C),c=O+S*R,s=Math.atan2(f,c);var I;0===f?(I=0,d=1):(I=S*N/f,d=1-I*I),T=P,h=c-2*O/d,isNaN(h)&&(h=0),P=p+l(m,I,d,s,f,c,h)}while(Math.abs(P-T)>u.EPSILON12);var z=d*(t*t-n*n)/(n*n),A=1+z*(4096+z*(z*(320-175*z)-768))/16384,b=z*(256+z*(z*(74-47*z)-128))/1024,D=h*h,q=b*f*(h+b*(c*(2*D-1)-b*h*(4*f*f-3)*(4*D-3)/6)/4),U=n*A*(s-q),L=Math.atan2(x*N,_-M*R),B=Math.atan2(g*N,_*R-M);e._distance=U,e._startHeading=L,e._endHeading=B,e._uSquared=z}function d(n,r,a,i){e.normalize(i.cartographicToCartesian(r,m),h),e.normalize(i.cartographicToCartesian(a,m),m),f(n,i.maximumRadius,i.minimumRadius,r.longitude,r.latitude,a.longitude,a.latitude),n._start=t.clone(r,n._start),n._end=t.clone(a,n._end),n._start.height=0,n._end.height=0,s(n)}var h=new e,m=new e,p=function(e,a,i){var u=n(i,o.WGS84);this._ellipsoid=u,this._start=new t,this._end=new t,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,r(e)&&r(a)&&d(this,e,a,u)};return a(p.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),p.prototype.setEndPoints=function(e,t){d(this,e,t,this._ellipsoid)},p.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)},p.prototype.interpolateUsingSurfaceDistance=function(e,n){var a=this._constants,i=a.distanceRatio+e/a.b,o=Math.cos(2*i),u=Math.cos(4*i),s=Math.cos(6*i),c=Math.sin(2*i),f=Math.sin(4*i),d=Math.sin(6*i),h=Math.sin(8*i),m=i*i,p=i*m,y=a.u8Over256,v=a.u2Over4,g=a.u6Over64,w=a.u4Over16,x=2*p*y*o/3+i*(1-v+7*w/4-15*g/4+579*y/64-(w-15*g/4+187*y/16)*o-(5*g/4-115*y/16)*u-29*y*s/16)+(v/2-w+71*g/32-85*y/16)*c+(5*w/16-5*g/4+383*y/96)*f-m*((g-11*y/2)*c+5*y*f/2)+(29*g/96-29*y/16)*d+539*y*h/1536,E=Math.asin(Math.sin(x)*a.cosineAlpha),S=Math.atan(a.a/a.b*Math.tan(E));x-=a.sigma;var _=Math.cos(2*a.sigma+x),O=Math.sin(x),M=Math.cos(x),P=a.cosineU*M,T=a.sineU*O,R=Math.atan2(O*a.sineHeading,P-T*a.cosineHeading),N=R-l(a.f,a.sineAlpha,a.cosineSquaredAlpha,x,O,M,_);return r(n)?(n.longitude=this._start.longitude+N,n.latitude=S,n.height=0,n):new t(this._start.longitude+N,S,0)},p}),define("Core/isArray",["./defined"],function(e){"use strict";var t=Array.isArray;return e(t)||(t=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(e,t,n,r,a,i,o,u,s,c,l,f){"use strict";function d(e,t,n){var r=O;r.length=e;var a;if(t===n){for(a=0;e>a;a++)r[a]=t;return r}var i=n-t,o=i/e;for(a=0;e>a;a++){var u=t+a*o;r[a]=u}return r}function h(t,n,r,a,i,o,u,s){var c=a.scaleToGeodeticSurface(t,R),l=a.scaleToGeodeticSurface(n,N),f=m.numberOfPoints(t,n,r),h=a.cartesianToCartographic(c,M),p=a.cartesianToCartographic(l,P),y=d(f,i,o); +C.setEndPoints(h,p);var v=C.surfaceDistance/f,g=s;h.height=i;var w=a.cartographicToCartesian(h,T);e.pack(w,u,g),g+=3;for(var x=1;f>x;x++){var E=C.interpolateUsingSurfaceDistance(x*v,P);E.height=y[x],w=a.cartographicToCartesian(E,T),e.pack(w,u,g),g+=3}return g}var m={};m.numberOfPoints=function(t,n,r){var a=e.distance(t,n);return Math.ceil(a/r)};var p=new t;m.extractHeights=function(e,t){for(var n=e.length,r=new Array(n),a=0;n>a;a++){var i=e[a];r[a]=t.cartesianToCartographic(i,p).height}return r};var y=new l,v=new e,g=new e,w=new f(e.ZERO,0),x=new e,E=new f(e.ZERO,0),S=new e,_=new e,O=[],M=new t,P=new t,T=new e,R=new e,N=new e,C=new o;m.wrapLongitude=function(t,a){var i=[],o=[];if(r(t)&&t.length>0){a=n(a,l.IDENTITY);var s=l.inverseTransformation(a,y),c=l.multiplyByPoint(s,e.ZERO,v),d=l.multiplyByPointAsVector(s,e.UNIT_Y,g),h=f.fromPointNormal(c,d,w),m=l.multiplyByPointAsVector(s,e.UNIT_X,x),p=f.fromPointNormal(c,m,E),O=1;i.push(e.clone(t[0]));for(var M=i[0],P=t.length,T=1;P>T;++T){var R=t[T];if(f.getPointDistance(p,M)<0||f.getPointDistance(p,R)<0){var N=u.lineSegmentPlane(M,R,h,S);if(r(N)){var C=e.multiplyByScalar(d,5e-9,_);f.getPointDistance(h,M)<0&&e.negate(C,C),i.push(e.add(N,C,new e)),o.push(O+1),e.negate(C,C),i.push(e.add(N,C,new e)),O=1}}i.push(e.clone(t[T])),O++,M=R}o.push(O)}return{positions:i,lengths:o}};var I=c.EPSILON7;return m.removeDuplicates=function(t){var n=t.length;if(2>n)return t;var r,a,i;for(r=1;n>r&&(a=t[r-1],i=t[r],!e.equalsEpsilon(a,i,I));++r);if(r===n)return t;for(var o=t.slice(0,r);n>r;++r)i=t[r],e.equalsEpsilon(a,i,I)||(o.push(e.clone(i)),a=i);return o},m.generateArc=function(t){r(t)||(t={});var a=t.positions,o=a.length,u=n(t.ellipsoid,i.WGS84),l=n(t.height,0);if(1>o)return[];if(1===o){var f=u.scaleToGeodeticSurface(a[0],R);if(0!==l){var d=u.geodeticSurfaceNormal(f,T);e.multiplyByScalar(d,l,d),e.add(f,d,f)}return[f.x,f.y,f.z]}var p=t.minDistance;if(!r(p)){var y=n(t.granularity,c.RADIANS_PER_DEGREE);p=c.chordLength(y,u.maximumRadius)}var v,g=0;for(v=0;o-1>v;v++)g+=m.numberOfPoints(a[v],a[v+1],p);var w=3*(g+1),x=new Array(w),E=0,S=s(l);for(v=0;o-1>v;v++){var _=a[v],P=a[v+1],N=S?l[v]:l,C=S?l[v+1]:l;E=h(_,P,p,u,N,C,x,E)}O.length=0;var I=a[o-1],z=u.cartesianToCartographic(I,M);z.height=S?l[o-1]:l;var A=u.cartographicToCartesian(z,T);return e.pack(A,x,w-3),x},m.generateCartesianArc=function(t){for(var n=m.generateArc(t),r=n.length/3,a=new Array(r),i=0;r>i;i++)a[i]=e.unpack(n,3*i);return a},m}),define("Core/Queue",[],function(){"use strict";var e=function(){this._array=[],this._offset=0,this.length=0};return e.prototype.enqueue=function(e){this._array.push(e),this.length++},e.prototype.dequeue=function(){if(0===this.length)return void 0;var e=this._array,t=this._offset,n=e[t];return e[t]=void 0,t++,t>10&&2*t>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this.length--,n},e.prototype.contains=function(e){return-1!==this._array.indexOf(e)},e.prototype.clear=function(){this._array.length=this._offset=this.length=0},e.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)},e}),define("Core/WindingOrder",["./freezeObject"],function(e){"use strict";var t={CLOCKWISE:2304,COUNTER_CLOCKWISE:2305,validate:function(e){return e===t.CLOCKWISE||e===t.COUNTER_CLOCKWISE}};return e(t)}),define("Core/PolygonPipeline",["./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./Math","./pointInsideTriangle","./PolylinePipeline","./PrimitiveType","./Queue","./WindingOrder"],function(e,t,n,r,a,i,o,u,s,c,l,f,d,h,m,p){"use strict";function y(t,n,r){var a=e.subtract(n,t,q),i=e.subtract(r,n,U);return a.x*i.y-a.y*i.x>=0}function v(e){for(var t=e[0].x,n=0,r=0;r<e.length;r++)e[r].x>t&&(t=e[r].x,n=r);return n}function g(e){for(var t=e[0][0].x,n=0,r=0;r<e.length;r++){var a=e[r][v(e[r])].x;a>t&&(t=a,n=r)}return n}function w(e){for(var t=[],n=0;n<e.length;n++){var r=e[(n-1+e.length)%e.length],a=e[n],i=e[(n+1)%e.length];y(r,a,i)||t.push(a)}return t}function x(t,n){for(var r=0;r<t.length;r++)if(e.equals(n,t[r]))return r;return-1}function E(n,a,i){i=r(i,[]);var o=Number.MAX_VALUE,u=v(a),s=new e(a[u].x,n.y);i.push(u),i.push((u+1)%a.length);for(var c=a[0].x,l=c,f=1;f<a.length;++f)a[f].x<c?c=a[f].x:a[f].x>l&&(l=a[f].x);l+=l-c;var d=new t(l,n.y,0);for(f=0;f<a.length;f++){var h=a[f],m=a[(f+1)%a.length];if((h.x>=n.x||m.x>=n.x)&&(h.y>=n.y&&m.y<=n.y||h.y<=n.y&&m.y>=n.y)){var p=(m.y-h.y)*(d.x-n.x)-(m.x-h.x)*(d.y-n.y);if(0!==p){p=1/p;var y=((m.x-h.x)*(n.y-h.y)-(m.y-h.y)*(n.x-h.x))*p,g=((d.x-n.x)*(n.y-h.y)-(d.y-n.y)*(n.x-h.x))*p;if(y>=0&&1>=y&&g>=0&&1>=g){var w=new e(n.x+y*(d.x-n.x),n.y+y*(d.y-n.y)),x=e.subtract(w,n,L);p=e.magnitudeSquared(x),o>p&&(s=w,o=p,i[0]=f,i[1]=(f+1)%a.length)}}}}return s}function S(t,n){var r=g(n),a=n[r],i=v(a),o=a[i],u=[],s=E(o,t,u),c=x(t,s);if(-1!==c)return c;var d=e.magnitudeSquared(e.subtract(t[u[0]],o,B)),h=e.magnitudeSquared(e.subtract(t[u[1]],o,B)),m=h>d?t[u[0]]:t[u[1]],p=w(t),y=p.indexOf(m);-1!==y&&p.splice(y,1);for(var S=[],_=0;_<p.length;_++){var O=p[_];f(O,o,s,m)&&S.push(O)}var M=Number.MAX_VALUE;if(S.length>0){var P=e.fromElements(1,0,B);for(_=0;_<S.length;_++){var T=e.subtract(S[_],o,W),R=e.magnitude(P)*e.magnitudeSquared(T);if(0!==R){var N=Math.abs(l.acosClamped(e.dot(P,T)/R));M>N&&(M=N,m=S[_])}}}return t.indexOf(m)}function _(e,n,r){for(var a=et.computeWindingOrder2D(e),i=0;i<n.length;i++){var o=n[i];t.equals(o[0],o[o.length-1])||o.push(o[0]);var s=et.computeWindingOrder2D(o);s===a&&o.reverse()}var c=u.fromPoints(e,r),l=c.projectPointsOntoPlane(e),f=[];for(i=0;i<n.length;i++)f.push(c.projectPointsOntoPlane(n[i]));var d=S(l,f),h=g(f),m=v(f[h]),p=n[h],y=[];for(i=0;i<e.length;i++)y.push(e[i]);var w,x=[];if(0!==m)for(w=0;w<=p.length;w++){var E=(w+m)%p.length;0!==E&&x.push(p[E])}else for(w=0;w<p.length;w++)x.push(p[(w+m)%p.length]);var _=y.lastIndexOf(e[d]);x.push(e[_]);var O=y.slice(0,_+1),M=y.slice(_+1);return y=O.concat(x,M),n.splice(h,1),y}function O(e){var t=l.nextRandomNumber(),n=Math.floor(t*e);return n===e&&n--,n}function M(e,t,n,r){var a=r[e].position,i=r[t].position,o=r[n].position,u=o.x,s=o.y,c=a.x-u,l=a.y-s,f=i.x-u,d=i.y-s;return c*d-l*f}function P(e,t){return e.x*t.y-e.y*t.x}function T(e,t){var n=t.length,r=l.mod(e-1,n),a=l.mod(e+1,n);return 0===M(r,a,e,t)?!1:!0}function R(t,n){return e.magnitudeSquared(n)<e.magnitudeSquared(t)}function N(t,n,r){if(!T(t,r))return t;var a=r[t].position,i=r[n].position,o=r.length,u=l.mod(t-1,o);if(!T(u,r))return u;var s=l.mod(t+1,o);if(!T(s,r))return s;var c=e.subtract(r[u].position,a,k),f=e.subtract(r[s].position,a,Y),d=e.subtract(i,a,j),h=P(c,d),m=P(f,d);if(0===h)return R(c,d)?F:G;if(0===m)return R(f,d)?F:G;var p=P(c,f);return 0>p?0>h&&m>0?F:G:p>0?h>0&&0>m?G:F:void 0}function C(e,t,n){return(e>t||e>n)&&(t>e||n>e)||t===n&&t===e}function I(t,n,r,a){var i=e.subtract(r,t,V),o=n.x*a.y-n.y*a.x,u=o*o,s=e.magnitudeSquared(n),c=e.magnitudeSquared(a);if(u>H*s*c){var l=(i.x*a.y-i.y*a.x)/o;return e.add(t,e.multiplyByScalar(n,l,V),V)}return void 0}function z(t,n,r){for(var i=e.subtract(n,t,Z),o=r.length,u=0;o>u;u++){var s=r[u].position,c=r[l.mod(u+1,o)].position;if(!(e.equals(t,s)||e.equals(n,c)||e.equals(t,c)||e.equals(n,s))){var f=e.subtract(c,s,X),d=I(t,i,s,f);if(a(d)&&!(e.equals(d,t)||e.equals(d,n)||e.equals(d,s)||e.equals(d,c))){var h=d.x,m=d.y,p=C(h,t.x,n.x)&&C(m,t.y,n.y)&&C(h,s.x,c.x)&&C(m,s.y,c.y);if(p)return!0}}}return!1}function A(t,n,r){var a=N(t,n,r);if(a>=0)return a;var i=N(n,t,r);return i>=0?i:a!==F||i!==F||z(r[t].position,r[n].position,r)||e.equals(r[t].position,r[n].position)?K:J}function b(e){return 0===M(1,2,0,e)}function D(e){var t=e.length;if(3===t)return b(e)?[]:[e[0].index,e[1].index,e[2].index];if(e.length<3)throw new i("Invalid polygon: must have at least three vertices.");for(var n,r,a=0,o=10*e.length,u=K;J>u&&a++<o;){for(n=O(e.length),r=n+1;Math.abs(n-r)<2||Math.abs(n-r)>e.length-2;)r=O(e.length);if(n>r){var s=n;n=r,r=s}u=A(n,r,e)}if(u===J){var c=e.splice(n,r-n+1,e[n],e[r]);return D(e).concat(D(c))}return u>=0?(e.splice(u,1),D(e)):[]}var q=new e,U=new e,L=new e,B=new e(1,0),W=new e,F=-1,G=-2,k=new t,Y=new t,j=new t,H=l.EPSILON14,V=new e;new e;var Z=new e,X=new e,J=-1,K=-2,Q=new t,$=new t,et={};et.removeDuplicates=function(e){var n=d.removeDuplicates(e);return t.equals(n[0],n[n.length-1])?n.slice(1):n},et.computeArea2D=function(e){for(var t=e.length,n=0,r=t-1,a=0;t>a;r=a++){var i=e[r],o=e[a];n+=i.x*o.y-o.x*i.y}return.5*n},et.computeWindingOrder2D=function(e){var t=et.computeArea2D(e);return t>0?p.COUNTER_CLOCKWISE:p.CLOCKWISE},et.triangulate=function(e){for(var t=e.length,n=[],r=0;t>r;++r)n[r]={position:e[r],index:r};return D(n)};var tt=new t,nt=new t,rt=new t,at=new t,it=new t,ot=new t,ut=new t;return et.computeSubdivision=function(e,i,o,u){u=r(u,l.RADIANS_PER_DEGREE);var f,d=o.slice(0),m=i.length,p=new Array(3*m),y=0;for(f=0;m>f;f++){var v=i[f];p[y++]=v.x,p[y++]=v.y,p[y++]=v.z}for(var g=[],w={},x=e.maximumRadius,E=l.chordLength(u,x),S=E*E;d.length>0;){var _,O,M=d.pop(),P=d.pop(),T=d.pop(),R=t.fromArray(p,3*T,tt),N=t.fromArray(p,3*P,nt),C=t.fromArray(p,3*M,rt),I=t.multiplyByScalar(t.normalize(R,at),x,at),z=t.multiplyByScalar(t.normalize(N,it),x,it),A=t.multiplyByScalar(t.normalize(C,ot),x,ot),b=t.magnitudeSquared(t.subtract(I,z,ut)),D=t.magnitudeSquared(t.subtract(z,A,ut)),q=t.magnitudeSquared(t.subtract(A,I,ut)),U=Math.max(b,D,q);U>S?b===U?(_=Math.min(T,P)+" "+Math.max(T,P),f=w[_],a(f)||(O=t.add(R,N,ut),t.multiplyByScalar(O,.5,O),p.push(O.x,O.y,O.z),f=p.length/3-1,w[_]=f),d.push(T,f,M),d.push(f,P,M)):D===U?(_=Math.min(P,M)+" "+Math.max(P,M),f=w[_],a(f)||(O=t.add(N,C,ut),t.multiplyByScalar(O,.5,O),p.push(O.x,O.y,O.z),f=p.length/3-1,w[_]=f),d.push(P,f,T),d.push(f,M,T)):q===U&&(_=Math.min(M,T)+" "+Math.max(M,T),f=w[_],a(f)||(O=t.add(C,R,ut),t.multiplyByScalar(O,.5,O),p.push(O.x,O.y,O.z),f=p.length/3-1,w[_]=f),d.push(M,f,P),d.push(f,T,P)):(g.push(T),g.push(P),g.push(M))}return new s({attributes:{position:new c({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:p})},indices:g,primitiveType:h.TRIANGLES})},et.scaleToGeodeticHeight=function(e,n,i,u){i=r(i,o.WGS84);var s=Q,c=$;if(n=r(n,0),u=r(u,!0),a(e)&&a(e.attributes)&&a(e.attributes.position))for(var l=e.attributes.position.values,f=l.length,d=0;f>d;d+=3)t.fromArray(l,d,c),u&&(c=i.scaleToGeodeticSurface(c,c)),s=i.geodeticSurfaceNormal(c,s),t.multiplyByScalar(s,n,s),t.add(c,s,c),l[d]=c.x,l[d+1]=c.y,l[d+2]=c.z;return e},et.eliminateHoles=function(e,n,a){a=r(a,o.WGS84);for(var i=[],u=0;u<n.length;u++){for(var s=[],c=0;c<n[u].length;c++)s.push(t.clone(n[u][c]));i.push(s)}for(var l=e;i.length>0;)l=_(l,i,a);return l},et}),define("Core/WallGeometryLibrary",["./Cartographic","./defined","./DeveloperError","./EllipsoidTangentPlane","./Math","./PolygonPipeline","./PolylinePipeline","./WindingOrder"],function(e,t,n,r,a,i,o,u){"use strict";function s(e,t){return a.equalsEpsilon(e.latitude,t.latitude,a.EPSILON14)&&a.equalsEpsilon(e.longitude,t.longitude,a.EPSILON14)}function c(n,r,a,i){var o=r.length;if(2>o)return{positions:r};var u=t(i),c=t(a),l=new Array(o),h=new Array(o),m=new Array(o),p=r[0];l[0]=p;var y=n.cartesianToCartographic(p,f);c&&(y.height=a[0]),h[0]=y.height,m[0]=u?i[0]:0;for(var v=1,g=1;o>g;++g){var w=r[g],x=n.cartesianToCartographic(w,d);c&&(x.height=a[g]),s(y,x)?y.height<x.height&&(h[v-1]=x.height):(l[v]=w,h[v]=x.height,m[v]=u?i[g]:0,e.clone(x,y),++v)}return l.length=v,h.length=v,m.length=v,{positions:l,topHeights:h,bottomHeights:m}}var l={},f=new e,d=new e,h=new Array(2),m=new Array(2),p={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};return l.computePositions=function(e,t,n,s,l,f){var d=c(e,t,n,s);if(t=d.positions,n=d.topHeights,s=d.bottomHeights,t.length<2)return void 0;if(t.length>=3){var y=r.fromPoints(t,e),v=y.projectPointsOntoPlane(t);i.computeWindingOrder2D(v)===u.CLOCKWISE&&(t.reverse(),n.reverse(),s.reverse())}var g,w,x=t.length,E=a.chordLength(l,e.maximumRadius),S=p;if(S.minDistance=E,S.ellipsoid=e,f){var _,O=0;for(_=0;x-1>_;_++)O+=o.numberOfPoints(t[_],t[_+1],E)+1;g=new Float64Array(3*O),w=new Float64Array(3*O);var M=h,P=m;S.positions=M,S.height=P;var T=0;for(_=0;x-1>_;_++){M[0]=t[_],M[1]=t[_+1],P[0]=n[_],P[1]=n[_+1];var R=o.generateArc(S);g.set(R,T),P[0]=s[_],P[1]=s[_+1],w.set(o.generateArc(S),T),T+=R.length}}else S.positions=t,S.height=n,g=new Float64Array(o.generateArc(S)),S.height=s,w=new Float64Array(o.generateArc(S));return{bottomPositions:w,topPositions:g}},l}),define("Core/WallGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType","./VertexFormat","./WallGeometryLibrary"],function(e,t,n,r,a,i,o,u,s,c,l,f,d,h,m){"use strict";var p=new t,y=new t,v=new t,g=new t,w=new t,x=new t,E=new t,S=new t,_=function(e){e=r(e,r.EMPTY_OBJECT);var n=e.positions,i=e.maximumHeights,u=e.minimumHeights,s=r(e.vertexFormat,h.DEFAULT),c=r(e.granularity,f.RADIANS_PER_DEGREE),l=r(e.ellipsoid,o.WGS84);this._positions=n,this._minimumHeights=u,this._maximumHeights=i,this._vertexFormat=h.clone(s),this._granularity=c,this._ellipsoid=o.clone(l),this._workerName="createWallGeometry";var d=1+n.length*t.packedLength+2;a(u)&&(d+=u.length),a(i)&&(d+=i.length),this.packedLength=d+o.packedLength+h.packedLength+1};_.pack=function(e,n,i){i=r(i,0);var u,s=e._positions,c=s.length;for(n[i++]=c,u=0;c>u;++u,i+=t.packedLength)t.pack(s[u],n,i);var l=e._minimumHeights;if(c=a(l)?l.length:0,n[i++]=c,a(l))for(u=0;c>u;++u)n[i++]=l[u];var f=e._maximumHeights;if(c=a(f)?f.length:0,n[i++]=c,a(f))for(u=0;c>u;++u)n[i++]=f[u];o.pack(e._ellipsoid,n,i),i+=o.packedLength,h.pack(e._vertexFormat,n,i),i+=h.packedLength,n[i]=e._granularity};var O=o.clone(o.UNIT_SPHERE),M=new h,P={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:O,vertexFormat:M,granularity:void 0};return _.unpack=function(e,n,i){n=r(n,0);var u,s=e[n++],c=new Array(s);for(u=0;s>u;++u,n+=t.packedLength)c[u]=t.unpack(e,n);s=e[n++];var l;if(s>0)for(l=new Array(s),u=0;s>u;++u)l[u]=e[n++];s=e[n++];var f;if(s>0)for(f=new Array(s),u=0;s>u;++u)f[u]=e[n++];var d=o.unpack(e,n,O);n+=o.packedLength;var m=h.unpack(e,n,M);n+=h.packedLength;var p=e[n];return a(i)?(i._positions=c,i._minimumHeights=l,i._maximumHeights=f,i._ellipsoid=o.clone(d,i._ellipsoid),i._vertexFormat=h.clone(m,i._vertexFormat),i._granularity=p,i):(P.positions=c,P.minimumHeights=l,P.maximumHeights=f,P.granularity=p,new _(P))},_.fromConstantHeights=function(e){e=r(e,r.EMPTY_OBJECT);var t,n,i=e.positions,o=e.minimumHeight,u=e.maximumHeight,s=a(o),c=a(u);if(s||c){var l=i.length;t=s?new Array(l):void 0,n=c?new Array(l):void 0;for(var f=0;l>f;++f)s&&(t[f]=o),c&&(n[f]=u)}var d={positions:i,maximumHeights:n,minimumHeights:t,ellipsoid:e.ellipsoid,vertexFormat:e.vertexFormat};return new _(d)},_.createGeometry=function(r){var i=r._positions,o=r._minimumHeights,h=r._maximumHeights,_=r._vertexFormat,O=r._granularity,M=r._ellipsoid,P=m.computePositions(M,i,h,o,O,!0);if(!a(P))return void 0;var T=P.bottomPositions,R=P.topPositions,N=R.length,C=2*N,I=_.position?new Float64Array(C):void 0,z=_.normal?new Float32Array(C):void 0,A=_.tangent?new Float32Array(C):void 0,b=_.binormal?new Float32Array(C):void 0,D=_.st?new Float32Array(2*(C/3)):void 0,q=0,U=0,L=0,B=0,W=0,F=S,G=E,k=x,Y=!0;N/=3;var j;for(j=0;N>j;++j){var H=3*j,V=t.fromArray(R,H,p),Z=t.fromArray(T,H,y);if(_.position&&(I[q++]=Z.x,I[q++]=Z.y,I[q++]=Z.z,I[q++]=V.x,I[q++]=V.y,I[q++]=V.z),_.normal||_.tangent||_.binormal){var X,J=t.clone(t.ZERO,w),K=M.scaleToGeodeticSurface(t.fromArray(R,H,y),y);if(N>j+1&&(X=M.scaleToGeodeticSurface(t.fromArray(R,H+3,v),v),J=t.fromArray(R,H+3,w)),Y){var Q=t.subtract(J,V,g),$=t.subtract(K,V,p);F=t.normalize(t.cross($,Q,F),F),Y=!1}t.equalsEpsilon(X,K,f.EPSILON6)?Y=!0:(_.tangent&&(G=t.normalize(t.subtract(X,K,G),G)),_.binormal&&(k=t.normalize(t.cross(F,G,k),k))),_.normal&&(z[U++]=F.x,z[U++]=F.y,z[U++]=F.z,z[U++]=F.x,z[U++]=F.y,z[U++]=F.z),_.tangent&&(A[B++]=G.x,A[B++]=G.y,A[B++]=G.z,A[B++]=G.x,A[B++]=G.y,A[B++]=G.z),_.binormal&&(b[L++]=k.x,b[L++]=k.y,b[L++]=k.z,b[L++]=k.x,b[L++]=k.y,b[L++]=k.z)}if(_.st){var et=j/(N-1);D[W++]=et,D[W++]=0,D[W++]=et,D[W++]=1}}var tt=new c;_.position&&(tt.position=new s({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:I})),_.normal&&(tt.normal=new s({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:z})),_.tangent&&(tt.tangent=new s({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:A})),_.binormal&&(tt.binormal=new s({componentDatatype:n.FLOAT,componentsPerAttribute:3,values:b})),_.st&&(tt.st=new s({componentDatatype:n.FLOAT,componentsPerAttribute:2,values:D}));var nt=C/3;C-=6;var rt=l.createTypedArray(nt,C),at=0;for(j=0;nt-2>j;j+=2){var it=j,ot=j+2,ut=t.fromArray(I,3*it,p),st=t.fromArray(I,3*ot,y);if(!t.equalsEpsilon(ut,st,f.EPSILON6)){var ct=j+1,lt=j+3;rt[at++]=ct,rt[at++]=it,rt[at++]=lt,rt[at++]=lt,rt[at++]=it,rt[at++]=ot}}return new u({attributes:tt,indices:rt,primitiveType:d.TRIANGLES,boundingSphere:new e.fromVertices(I)})},_}),define("Workers/createWallGeometry",["../Core/defined","../Core/Ellipsoid","../Core/WallGeometry"],function(e,t,n){"use strict";function r(r,a){return e(a)&&(r=n.unpack(r,a)),r._ellipsoid=t.clone(r._ellipsoid),n.createGeometry(r)}return r})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/createWallOutlineGeometry.js b/libs/Cesium/Workers/createWallOutlineGeometry.js new file mode 100644 index 0000000000..a355055fb6 --- /dev/null +++ b/libs/Cesium/Workers/createWallOutlineGeometry.js @@ -0,0 +1,229 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[1&e];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(e){return e>0?1:0>e?-1:0},n.signNotZero=function(e){return 0>e?-1:1},n.toSNorm=function(e){return Math.round(255*(.5*n.clamp(e,-1,1)+.5))},n.fromSNorm=function(e){return 2*(n.clamp(e,0,255)/255)-1},n.sinh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t-n)},n.cosh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t+n)},n.lerp=function(e,t,n){return(1-n)*e+n*t},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(e){return e*n.RADIANS_PER_DEGREE},n.toDegrees=function(e){return e*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(e){var t=n.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},n.negativePiToPi=function(e){return n.zeroToTwoPi(e+n.PI)-n.PI},n.zeroToTwoPi=function(e){var t=n.mod(e,n.TWO_PI);return Math.abs(t)<n.EPSILON14&&Math.abs(e)>n.EPSILON14?n.TWO_PI:t},n.mod=function(e,t){return(e%t+t)%t},n.equalsEpsilon=function(e,n,r,i){i=t(i,r);var a=Math.abs(e-n);return i>=a||a<=r*Math.max(Math.abs(e),Math.abs(n))};var r=[1];n.factorial=function(e){var t=r.length;if(e>=t)for(var n=r[t-1],i=t;e>=i;i++)r.push(n*i);return r[e]},n.incrementWrap=function(e,n,r){return r=t(r,0),++e,e>n&&(e=r),e},n.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},n.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},n.clamp=function(e,t,n){return t>e?t:e>n?n:e};var i=new e;return n.setRandomNumberSeed=function(t){i=new e(t)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(e){return Math.acos(n.clamp(e,-1,1))},n.asinClamped=function(e){return Math.asin(n.clamp(e,-1,1))},n.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},n}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0)};a.fromSpherical=function(n,r){t(r)||(r=new a);var i=n.clock,o=n.cone,u=e(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(e,n,r,i){return t(i)?(i.x=e,i.y=n,i.z=r,i):new a(e,n,r)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n):new a(e.x,e.y,e.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r]=t.z},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(e,t){a.normalize(e,s),a.normalize(t,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,l);return a.abs(n,n),t=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Z,t):n.y<=n.z?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_Z,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)&&i.equalsEpsilon(e.z,n.z,r,a)},a.cross=function(e,t,n){var r=e.x,i=e.y,a=e.z,o=t.x,u=t.y,s=t.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(e,t,n,r,o){var u=i.toRadians(e),s=i.toRadians(t);return a.fromRadians(u,s,n,r,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=e(i,0);var s=t(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),t(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=i.toRadians(e[o]);return a.fromRadiansArray(r,t,n)},a.fromRadiansArray=function(e,n,r){var i=e.length;t(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=e[o],s=e[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o+=3)r[o]=i.toRadians(e[o]),r[o+1]=i.toRadians(e[o+1]),r[o+2]=e[o+2];return a.fromRadiansArrayHeights(r,t,n)},a.fromRadiansArrayHeights=function(e,n,r){var i=e.length;t(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r){this.longitude=e(t,0),this.latitude=e(n,0),this.height=e(r,0)};return a.fromRadians=function(n,r,i,o){return i=e(i,0),t(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(e,t,n,r){return e=i.toRadians(e),t=i.toRadians(t),a.fromRadians(e,t,n,r)},a.clone=function(e,n){return t(e)?t(n)?(n.longitude=e.longitude,n.latitude=e.latitude,n.height=e.height,n):new a(e.longitude,e.latitude,e.height):void 0},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.longitude===n.longitude&&e.latitude===n.latitude&&e.height===n.height},a.equalsEpsilon=function(e,n,r){return e===n||t(e)&&t(n)&&Math.abs(e.longitude-n.longitude)<=r&&Math.abs(e.latitude-n.latitude)<=r&&Math.abs(e.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t){return a.equalsEpsilon(this,e,t)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),n=Object.defineProperties;return t&&e(n)||(n=function(e){return e}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i,a,o,u){"use strict";function s(t,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),t._radii=new e(r,i,a),t._radiiSquared=new e(r*r,i*i,a*a),t._radiiToTheFourth=new e(r*r*r*r,i*i*i*i,a*a*a*a),t._oneOverRadii=new e(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),t._minimumRadius=Math.min(r,i,a),t._maximumRadius=Math.max(r,i,a),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,n){if(!r(t))return void 0;var i=t._radii;return r(n)?(e.clone(i,n._radii),e.clone(t._radiiSquared,n._radiiSquared),e.clone(t._radiiToTheFourth,n._radiiToTheFourth),e.clone(t._oneOverRadii,n._oneOverRadii),e.clone(t._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=t._minimumRadius,n._maximumRadius=t._maximumRadius,n._centerToleranceSquared=t._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(e,t){return r(t)||(t=new c),r(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,r,i){i=n(i,0),e.pack(t._radii,r,i)},c.unpack=function(t,r,i){r=n(r,0);var a=e.unpack(t,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,n){var i=t.longitude,a=t.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new e),n.x=u,n.y=s,n.z=c,e.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(t,n){return r(n)||(n=new e),n=e.multiplyComponents(t,this._oneOverRadiiSquared,n),e.normalize(n,n)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(t,i),e.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(e.dot(i,a));return e.divideByScalar(a,o,a),e.multiplyByScalar(i,t.height,i),r(n)||(n=new e),e.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var i=0;n>i;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var h=new e,d=new e,m=new e;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,d);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=e.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,n))*e.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var i=0;n>i;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};var p=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,n){var i=t.x,a=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,m=o*o*f*f,v=h+d+m,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,p);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,n):void 0;var x=this._oneOverRadiiSquared,E=x.x,S=x.y,_=x.z,O=y;O.x=2*w.x*E,O.y=2*w.y*S,O.z=2*w.z*_;var M,P,T,R,C,N,I,z,A,b,D,q=(1-g)*e.magnitude(t)/(.5*e.magnitude(O)),U=0;do{q-=U,T=1/(1+q*E),R=1/(1+q*S),C=1/(1+q*_),N=T*T,I=R*R,z=C*C,A=N*T,b=I*R,D=z*C,M=h*N+d*I+m*z-1,P=h*A*E+d*b*S+m*D*_;var L=-2*P;U=M/L}while(Math.abs(M)>u.EPSILON12);return r(n)?(n.x=i*T,n.y=a*R,n.z=o*C,n):new e(i*T,a*R,o*C)},c.prototype.scaleToGeocentricSurface=function(t,n){r(n)||(n=new e);var i=t.x,a=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return e.multiplyByScalar(t,s,n)},c.prototype.transformPositionToScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._radii,n)},c.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},n=function(n,r){e(t[n])||(t[n]=!0,console.log(r))};return n}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,n,r,i,a,o){"use strict";var u=function(e){this._ellipsoid=n(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,n){var i=this._semimajorAxis,a=t.longitude*i,o=t.latitude*i,u=t.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new e(a,o,u)},u.prototype.unproject=function(e,n){var i=this._oneOverSemimajorAxis,a=e.x*i,o=e.y*i,u=e.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new t(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,n){this.start=e(t,0),this.stop=e(n,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r,i){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0),this.w=e(i,0)};a.fromElements=function(e,n,r,i,o){return t(o)?(o.x=e,o.y=n,o.z=r,o.w=i,o):new a(e,n,r,i)},a.fromColor=function(e,n){return t(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new a(e.red,e.green,e.blue,e.alpha)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new a(e.x,e.y,e.z,e.w):void 0},a.packedLength=4,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r++]=t.z,n[r]=t.w},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,s);return a.abs(n,n),t=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,t):a.clone(a.UNIT_W,t):n.z<=n.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_W,t):n.z<=n.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)&&i.equalsEpsilon(e.z,n.z,r,a)&&i.equalsEpsilon(e.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i,a){"use strict";function o(e){for(var t=0,n=0;9>n;++n){var r=e[n];t+=r*r}return Math.sqrt(t)}function u(e){for(var t=0,n=0;3>n;++n){var r=e[c.getElementIndex(d[n],h[n])];t+=2*r*r}return Math.sqrt(t)}function s(e,t){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(d[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=h[i],m=d[i];if(Math.abs(e[c.getElementIndex(m,f)])>n){var p,y=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(m,f)],w=(y-v)/2/g;p=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+p*p),l=p*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,f)]=l,t[c.getElementIndex(f,m)]=-l,t}var c=function(e,n,r,i,a,o,u,s,c){this[0]=t(e,0),this[1]=t(i,0),this[2]=t(u,0),this[3]=t(n,0),this[4]=t(a,0),this[5]=t(s,0),this[6]=t(r,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r++]=e[7],n[r++]=e[8]},c.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new c),i[0]=e[r++],i[1]=e[r++],i[2]=e[r++],i[3]=e[r++],i[4]=e[r++],i[5]=e[r++],i[6]=e[r++],i[7]=e[r++],i[8]=e[r++],i},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,r,i){return r=t(r,0),n(i)||(i=new c),i[0]=e[r],i[1]=e[r+1],i[2]=e[r+2],i[3]=e[r+3],i[4]=e[r+4],i[5]=e[r+5],i[6]=e[r+6],i[7]=e[r+7],i[8]=e[r+8],i},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var r=e.x*e.x,i=e.x*e.y,a=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,h=e.z*e.w,d=e.w*e.w,m=r-u-f+d,p=2*(i-h),y=2*(a+l),v=2*(i+h),g=-r+u-f+d,w=2*(s-o),x=2*(a-l),E=2*(s+o),S=-r-u+f+d;return n(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=p,t[4]=g,t[5]=E,t[6]=y,t[7]=w,t[8]=S,t):new c(m,p,y,v,g,w,x,E,S)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return n(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=i,t[6]=0,t[7]=-i,t[8]=r,t):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=r,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=r,t):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=r,t[1]=i,t[2]=0,t[3]=-i,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,n){var r=3*t,i=e[r],a=e[r+1],o=e[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var i=3*t;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(e,t,n){var r=e[t],i=e[t+3],a=e[t+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+3]=n.y,r[t+6]=n.z,r};var l=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),n};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,n){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],i=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],a=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n},c.multiplyByVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[3]*i+e[6]*a,u=e[1]*r+e[4]*i+e[7]*a,s=e[2]*r+e[5]*i+e[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n},c.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var n=e[0],r=e[3],i=e[6],a=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=n,t[1]=r,t[2]=i,t[3]=a,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var h=[1,0,0],d=[2,2,1],m=new c,p=new c;return c.computeEigenDecomposition=function(e,t){var r=a.EPSILON20,i=10,l=0,f=0;n(t)||(t={});for(var h=t.unitary=c.clone(c.IDENTITY,t.unitary),d=t.diagonal=c.clone(e,t.diagonal),y=r*o(d);i>f&&u(d)>y;)s(d,m),c.transpose(m,p),c.multiply(d,m,d),c.multiply(p,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],n=e[3],r=e[6],i=e[1],a=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(e,t){var n=e[0],i=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],h=e[7],d=e[8],m=c.determinant(e);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");t[0]=s*d-h*l,t[1]=h*o-i*d,t[2]=i*l-s*o,t[3]=f*l-u*d,t[4]=n*d-f*o,t[5]=u*o-n*l,t[6]=u*h-f*s,t[7]=f*i-n*h,t[8]=n*s-u*i;var p=1/m;return c.multiplyByScalar(t,p,t)},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,n,r,i,a,o,u,s){"use strict";var c=function(e,t,r,i,a,o,u,s,c,l,f,h,d,m,p,y){this[0]=n(e,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(t,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(p,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(y,0)};c.packedLength=16,c.pack=function(e,t,r){r=n(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},c.unpack=function(e,t,i){return t=n(t,0),r(i)||(i=new c),i[0]=e[t++],i[1]=e[t++],i[2]=e[t++],i[3]=e[t++],i[4]=e[t++],i[5]=e[t++],i[6]=e[t++],i[7]=e[t++],i[8]=e[t++],i[9]=e[t++],i[10]=e[t++],i[11]=e[t++],i[12]=e[t++],i[13]=e[t++],i[14]=e[t++],i[15]=e[t],i},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,i,a){return i=n(i,e.ZERO),r(a)?(a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=0,a[4]=t[3],a[5]=t[4],a[6]=t[5],a[7]=0,a[8]=t[6],a[9]=t[7],a[10]=t[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(t[0],t[3],t[6],i.x,t[1],t[4],t[7],i.y,t[2],t[5],t[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,h=t.x*t.w,d=t.y*t.y,m=t.y*t.z,p=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-d-y+g,x=2*(l-v),E=2*(f+p),S=2*(l+v),_=-s+d-y+g,O=2*(m-h),M=2*(f-p),P=2*(m+h),T=-s-d+y+g;return i[0]=w*a,i[1]=S*a,i[2]=M*a,i[3]=0,i[4]=x*o,i[5]=_*o,i[6]=P*o,i[7]=0,i[8]=E*u,i[9]=O*u,i[10]=T*u,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,h=new e;c.fromCamera=function(t,n){var i=t.eye,a=t.target,o=t.up;e.normalize(e.subtract(a,i,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,p=l.y,y=l.z,v=h.x,g=h.y,w=h.z,x=i.x,E=i.y,S=i.z,_=u*-x+s*-E+d*-S,O=v*-x+g*-E+w*-S,M=m*x+p*E+y*S;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=g,n[6]=-p,n[7]=0,n[8]=d,n[9]=w,n[10]=-y,n[11]=0,n[12]=_,n[13]=O,n[14]=M,n[15]=1,n):new c(u,s,d,_,v,g,w,O,-m,-p,-y,M,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,n,r,i){var a=Math.tan(.5*e),o=1/a,u=o/t,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(e,t,n,r,i,a,o){var u=1/(t-e),s=1/(r-n),c=1/(a-i),l=-(t+e)*u,f=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o +},c.computePerspectiveOffCenter=function(e,t,n,r,i,a,o){var u=2*i/(t-e),s=2*i/(r-n),c=(t+e)/(t-e),l=(r+n)/(r-n),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,n,r,i,a){var o=2*i/(t-e),u=2*i/(r-n),s=(t+e)/(t-e),c=(r+n)/(r-n),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(e,t,r,i){e=n(e,n.EMPTY_OBJECT);var a=n(e.x,0),o=n(e.y,0),u=n(e.width,0),s=n(e.height,0);t=n(t,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-t),h=c,d=l,m=f,p=a+c,y=o+l,v=t+f,g=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=p,i[13]=y,i[14]=v,i[15]=g,i},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,n){var r=4*t,i=e[r],a=e[r+1],o=e[r+2],u=e[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var i=4*t;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n},c.getRow=function(e,t,n){var r=e[t],i=e[t+4],a=e[t+8],o=e[t+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+4]=n.y,r[t+8]=n.z,r[t+12]=n.w,r};var d=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],d)),n.y=e.magnitude(e.fromElements(t[4],t[5],t[6],d)),n.z=e.magnitude(e.fromElements(t[8],t[9],t[10],d)),n};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],h=e[9],d=e[10],m=e[11],p=e[12],y=e[13],v=e[14],g=e[15],w=t[0],x=t[1],E=t[2],S=t[3],_=t[4],O=t[5],M=t[6],P=t[7],T=t[8],R=t[9],C=t[10],N=t[11],I=t[12],z=t[13],A=t[14],b=t[15],D=r*w+u*x+f*E+p*S,q=i*w+s*x+h*E+y*S,U=a*w+c*x+d*E+v*S,L=o*w+l*x+m*E+g*S,W=r*_+u*O+f*M+p*P,B=i*_+s*O+h*M+y*P,F=a*_+c*O+d*M+v*P,G=o*_+l*O+m*M+g*P,k=r*T+u*R+f*C+p*N,j=i*T+s*R+h*C+y*N,H=a*T+c*R+d*C+v*N,Y=o*T+l*R+m*C+g*N,V=r*I+u*z+f*A+p*b,Z=i*I+s*z+h*A+y*b,X=a*I+c*z+d*A+v*b,J=o*I+l*z+m*A+g*b;return n[0]=D,n[1]=q,n[2]=U,n[3]=L,n[4]=W,n[5]=B,n[6]=F,n[7]=G,n[8]=k,n[9]=j,n[10]=H,n[11]=Y,n[12]=V,n[13]=Z,n[14]=X,n[15]=J,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},c.multiplyTransformation=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=e[12],d=e[13],m=e[14],p=t[0],y=t[1],v=t[2],g=t[4],w=t[5],x=t[6],E=t[8],S=t[9],_=t[10],O=t[12],M=t[13],P=t[14],T=r*p+o*y+c*v,R=i*p+u*y+l*v,C=a*p+s*y+f*v,N=r*g+o*w+c*x,I=i*g+u*w+l*x,z=a*g+s*w+f*x,A=r*E+o*S+c*_,b=i*E+u*S+l*_,D=a*E+s*S+f*_,q=r*O+o*M+c*P+h,U=i*O+u*M+l*P+d,L=a*O+s*M+f*P+m;return n[0]=T,n[1]=R,n[2]=C,n[3]=0,n[4]=N,n[5]=I,n[6]=z,n[7]=0,n[8]=A,n[9]=b,n[10]=D,n[11]=0,n[12]=q,n[13]=U,n[14]=L,n[15]=1,n},c.multiplyByMatrix3=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=t[0],d=t[1],m=t[2],p=t[3],y=t[4],v=t[5],g=t[6],w=t[7],x=t[8],E=r*h+o*d+c*m,S=i*h+u*d+l*m,_=a*h+s*d+f*m,O=r*p+o*y+c*v,M=i*p+u*y+l*v,P=a*p+s*y+f*v,T=r*g+o*w+c*x,R=i*g+u*w+l*x,C=a*g+s*w+f*x;return n[0]=E,n[1]=S,n[2]=_,n[3]=0,n[4]=O,n[5]=M,n[6]=P,n[7]=0,n[8]=T,n[9]=R,n[10]=C,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n},c.multiplyByTranslation=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=r*e[0]+i*e[4]+a*e[8]+e[12],u=r*e[1]+i*e[5]+a*e[9]+e[13],s=r*e[2]+i*e[6]+a*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=o,n[13]=u,n[14]=s,n[15]=e[15],n};var p=new e;c.multiplyByUniformScale=function(e,t,n){return p.x=t,p.y=t,p.z=t,c.multiplyByScale(e,p,n)},c.multiplyByScale=function(e,t,n){var r=t.x,i=t.y,a=t.z;return 1===r&&1===i&&1===a?c.clone(e,n):(n[0]=r*e[0],n[1]=r*e[1],n[2]=r*e[2],n[3]=0,n[4]=i*e[4],n[5]=i*e[5],n[6]=i*e[6],n[7]=0,n[8]=a*e[8],n[9]=a*e[9],n[10]=a*e[10],n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=1,n)},c.multiplyByVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=t.w,u=e[0]*r+e[4]*i+e[8]*a+e[12]*o,s=e[1]*r+e[5]*i+e[9]*a+e[13]*o,c=e[2]*r+e[6]*i+e[10]*a+e[14]*o,l=e[3]*r+e[7]*i+e[11]*a+e[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[4]*i+e[8]*a,u=e[1]*r+e[5]*i+e[9]*a,s=e[2]*r+e[6]*i+e[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[4]*i+e[8]*a+e[12],u=e[1]*r+e[5]*i+e[9]*a+e[13],s=e[2]*r+e[6]*i+e[10]*a+e[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var n=e[1],r=e[2],i=e[3],a=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=a,t[10]=e[10],t[11]=e[14],t[12]=i,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,n){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;var r=e[0],i=e[4],a=e[8],l=e[12],f=e[1],h=e[5],d=e[9],m=e[13],p=e[2],x=e[6],E=e[10],S=e[14],_=e[3],O=e[7],M=e[11],P=e[15],T=E*P,R=S*M,C=x*P,N=S*O,I=x*M,z=E*O,A=p*P,b=S*_,D=p*M,q=E*_,U=p*O,L=x*_,W=T*h+N*d+I*m-(R*h+C*d+z*m),B=R*f+A*d+q*m-(T*f+b*d+D*m),F=C*f+b*h+U*m-(N*f+A*h+L*m),G=z*f+D*h+L*d-(I*f+q*h+U*d),k=R*i+C*a+z*l-(T*i+N*a+I*l),j=T*r+b*a+D*l-(R*r+A*a+q*l),H=N*r+A*i+L*l-(C*r+b*i+U*l),Y=I*r+q*i+U*a-(z*r+D*i+L*a);T=a*m,R=l*d,C=i*m,N=l*h,I=i*d,z=a*h,A=r*m,b=l*f,D=r*d,q=a*f,U=r*h,L=i*f;var V=T*O+N*M+I*P-(R*O+C*M+z*P),Z=R*_+A*M+q*P-(T*_+b*M+D*P),X=C*_+b*O+U*P-(N*_+A*O+L*P),J=z*_+D*O+L*M-(I*_+q*O+U*M),K=C*E+z*S+R*x-(I*S+T*x+N*E),Q=D*S+T*p+b*E-(A*E+q*S+R*p),$=A*x+L*S+N*p-(U*S+C*p+b*x),et=U*E+I*p+q*x-(D*x+L*E+z*p),tt=r*W+i*B+a*F+l*G;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,n[0]=W*tt,n[1]=B*tt,n[2]=F*tt,n[3]=G*tt,n[4]=k*tt,n[5]=j*tt,n[6]=H*tt,n[7]=Y*tt,n[8]=V*tt,n[9]=Z*tt,n[10]=X*tt,n[11]=J*tt,n[12]=K*tt,n[13]=Q*tt,n[14]=$*tt,n[15]=et*tt,n},c.inverseTransformation=function(e,t){var n=e[0],r=e[1],i=e[2],a=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],h=e[13],d=e[14],m=-n*f-r*h-i*d,p=-a*f-o*h-u*d,y=-s*f-c*h-l*d;return t[0]=n,t[1]=a,t[2]=s,t[3]=0,t[4]=r,t[5]=o,t[6]=c,t[7]=0,t[8]=i,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=p,t[14]=y,t[15]=1,t},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var i=function(t,n){this.normal=e.clone(t),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-e.dot(r,n);return t(a)?(e.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new e;return i.fromCartesian4=function(n,r){var o=e.fromCartesian4(n,a),u=n.w;return t(r)?(e.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(t,n){return e.dot(t.normal,n)+t.distance},i.ORIGIN_XY_PLANE=r(new i(e.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(e.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(e.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,n,r,i,a,o,u){"use strict";var s=function(e,n,r,i){this.west=t(e,0),this.south=t(n,0),this.east=t(r,0),this.north=t(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.west,n[r++]=e.south,n[r++]=e.east,n[r]=e.north},s.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new s),i.west=e[r++],i.south=e[r++],i.east=e[r++],i.north=e[r],i},s.computeWidth=function(e){var t=e.east,n=e.west;return n>t&&(t+=u.TWO_PI),t-n},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,r,i,a,o){return e=u.toRadians(t(e,0)),r=u.toRadians(t(r,0)),i=u.toRadians(t(i,0)),a=u.toRadians(t(a,0)),n(o)?(o.west=e,o.south=r,o.east=i,o.north=a,o):new s(e,r,i,a)},s.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(t)?(t.west=r,t.south=a,t.east=i,t.north=o,t):new s(r,a,i,o)},s.clone=function(e,t){return n(e)?n(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return n(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},s.northwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},s.northeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},s.southeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},s.center=function(t,r){var i=t.east,a=t.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(t.south+t.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new e(o,s)},s.intersection=function(e,t,r){var i=e.east,a=e.west,o=t.east,c=t.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var h=Math.max(e.south,t.south),d=Math.min(e.north,t.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(e,t){var n=t.longitude,r=t.latitude,i=e.west,a=e.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=e.south&&r<=e.north};var c=new e;return s.subsample=function(e,r,i,o){r=t(r,a.WGS84),i=t(i,0),n(o)||(o=[]);var l=0,f=e.north,h=e.south,d=e.east,m=e.west,p=c;p.height=i,p.longitude=m,p.latitude=f,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=d,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=0>f?f:h>0?h:0;for(var y=1;8>y;++y)p.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,p)&&(o[l]=r.cartographicToCartesian(p,o[l]),l++);return 0===p.latitude&&(p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=d,o[l]=r.cartographicToCartesian(p,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(t,r){this.center=e.clone(n(t,e.ZERO)),this.radius=n(r,0)},m=new e,p=new e,y=new e,v=new e,g=new e,w=new e,x=new e,E=new e,S=new e,_=new e,O=new e,M=new e;d.fromPoints=function(t,n){if(r(n)||(n=new d),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;for(var i=e.clone(t[0],x),a=e.clone(i,m),o=e.clone(i,p),u=e.clone(i,y),s=e.clone(i,v),c=e.clone(i,g),l=e.clone(i,w),f=t.length,h=1;f>h;h++){e.clone(t[h],i);var P=i.x,T=i.y,R=i.z;P<a.x&&e.clone(i,a),P>s.x&&e.clone(i,s),T<o.y&&e.clone(i,o),T>c.y&&e.clone(i,c),R<u.z&&e.clone(i,u),R>l.z&&e.clone(i,l)}var C=e.magnitudeSquared(e.subtract(s,a,E)),N=e.magnitudeSquared(e.subtract(c,o,E)),I=e.magnitudeSquared(e.subtract(l,u,E)),z=a,A=s,b=C;N>b&&(b=N,z=o,A=c),I>b&&(b=I,z=u,A=l);var D=S;D.x=.5*(z.x+A.x),D.y=.5*(z.y+A.y),D.z=.5*(z.z+A.z);var q=e.magnitudeSquared(e.subtract(A,D,E)),U=Math.sqrt(q),L=_;L.x=a.x,L.y=o.y,L.z=u.z;var W=O;W.x=s.x,W.y=c.y,W.z=l.z;var B=e.multiplyByScalar(e.add(L,W,E),.5,M),F=0;for(h=0;f>h;h++){e.clone(t[h],i);var G=e.magnitude(e.subtract(i,B,E));G>F&&(F=G);var k=e.magnitudeSquared(e.subtract(i,D,E));if(k>q){var j=Math.sqrt(k);U=.5*(U+j),q=U*U;var H=j-U;D.x=(U*D.x+H*i.x)/j,D.y=(U*D.y+H*i.y)/j,D.z=(U*D.z+H*i.z)/j}}return F>U?(e.clone(D,n.center),n.radius=U):(e.clone(B,n.center),n.radius=F),n};var P=new u,T=new e,R=new e,C=new t,N=new t;d.fromRectangle2D=function(e,t,n){return d.fromRectangleWithHeights2D(e,t,0,0,n)},d.fromRectangleWithHeights2D=function(t,i,a,o,u){if(r(u)||(u=new d),!r(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;i=n(i,P),h.southwest(t,C),C.height=a,h.northeast(t,N),N.height=o;var s=i.project(C,T),c=i.project(N,R),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var p=u.center;return p.x=s.x+.5*l,p.y=s.y+.5*f,p.z=s.z+.5*m,u};var I=[];d.fromRectangle3D=function(e,t,i,a){t=n(t,o.WGS84),i=n(i,0);var u;return r(e)&&(u=h.subsample(e,t,i,I)),d.fromPoints(u,a)},d.fromVertices=function(t,i,a,o){if(r(o)||(o=new d),!r(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;i=n(i,e.ZERO),a=n(a,3);var u=x;u.x=t[0]+i.x,u.y=t[1]+i.y,u.z=t[2]+i.z;for(var s=e.clone(u,m),c=e.clone(u,p),l=e.clone(u,y),f=e.clone(u,v),h=e.clone(u,g),P=e.clone(u,w),T=t.length,R=0;T>R;R+=a){var C=t[R]+i.x,N=t[R+1]+i.y,I=t[R+2]+i.z;u.x=C,u.y=N,u.z=I,C<s.x&&e.clone(u,s),C>f.x&&e.clone(u,f),N<c.y&&e.clone(u,c),N>h.y&&e.clone(u,h),I<l.z&&e.clone(u,l),I>P.z&&e.clone(u,P)}var z=e.magnitudeSquared(e.subtract(f,s,E)),A=e.magnitudeSquared(e.subtract(h,c,E)),b=e.magnitudeSquared(e.subtract(P,l,E)),D=s,q=f,U=z;A>U&&(U=A,D=c,q=h),b>U&&(U=b,D=l,q=P);var L=S;L.x=.5*(D.x+q.x),L.y=.5*(D.y+q.y),L.z=.5*(D.z+q.z);var W=e.magnitudeSquared(e.subtract(q,L,E)),B=Math.sqrt(W),F=_;F.x=s.x,F.y=c.y,F.z=l.z;var G=O;G.x=f.x,G.y=h.y,G.z=P.z;var k=e.multiplyByScalar(e.add(F,G,E),.5,M),j=0;for(R=0;T>R;R+=a){u.x=t[R]+i.x,u.y=t[R+1]+i.y,u.z=t[R+2]+i.z;var H=e.magnitude(e.subtract(u,k,E));H>j&&(j=H);var Y=e.magnitudeSquared(e.subtract(u,L,E));if(Y>W){var V=Math.sqrt(Y);B=.5*(B+V),W=B*B;var Z=V-B;L.x=(B*L.x+Z*u.x)/V,L.y=(B*L.y+Z*u.y)/V,L.z=(B*L.z+Z*u.z)/V}}return j>B?(e.clone(L,o.center),o.radius=B):(e.clone(k,o.center),o.radius=j),o},d.fromCornerPoints=function(t,n,i){r(i)||(i=new d);var a=i.center;return e.add(t,n,a),e.multiplyByScalar(a,.5,a),i.radius=e.distance(a,n),i},d.fromEllipsoid=function(t,n){return r(n)||(n=new d),e.clone(e.ZERO,n.center),n.radius=t.maximumRadius,n};var z=new e;d.fromBoundingSpheres=function(t,n){if(r(n)||(n=new d),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;var i=t.length;if(1===i)return d.clone(t[0],n);if(2===i)return d.union(t[0],t[1],n);for(var a=[],o=0;i>o;o++)a.push(t[o].center);n=d.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,z)+c.radius)}return n.radius=s,n},d.clone=function(t,n){return r(t)?r(n)?(n.center=e.clone(t.center,n.center),n.radius=t.radius,n):new d(t.center,t.radius):void 0},d.packedLength=4,d.pack=function(e,t,r){r=n(r,0);var i=e.center;t[r++]=i.x,t[r++]=i.y,t[r++]=i.z,t[r]=e.radius},d.unpack=function(e,t,i){t=n(t,0),r(i)||(i=new d);var a=i.center;return a.x=e[t++],a.y=e[t++],a.z=e[t++],i.radius=e[t],i};var A=new e,b=new e;d.union=function(t,n,i){r(i)||(i=new d);var a=t.center,o=t.radius,u=n.center,s=n.radius,c=e.subtract(u,a,A),l=e.magnitude(c);if(o>=l+s)return t.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),h=e.multiplyByScalar(c,(-o+f)/l,b);return e.add(h,a,h),e.clone(h,i.center),i.radius=f,i};var D=new e;d.expand=function(t,n,r){r=d.clone(t,r);var i=e.magnitude(e.subtract(n,r.center,D));return i>r.radius&&(r.radius=i),r},d.intersectPlane=function(t,n){var r=t.center,i=t.radius,a=n.normal,o=e.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new e,0);d.intersect=function(e,t){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(t,q);return d.intersectPlane(e,n)},d.transform=function(e,t,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=l.getMaximumScale(t)*e.radius,n};var U=new e;d.distanceSquaredTo=function(t,n){var r=e.subtract(t.center,n,U);return e.magnitudeSquared(r)-t.radius*t.radius},d.transformWithoutScale=function(e,t,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var L=new e;d.computePlaneDistances=function(t,n,i,a){r(a)||(a=new c);var o=e.subtract(t.center,n,L),u=e.multiplyByScalar(i,e.dot(i,o),L),s=e.magnitude(u);return a.start=s-t.radius,a.stop=s+t.radius,a};for(var W=new e,B=new e,F=new e,G=new e,k=new e,j=new t,H=new Array(8),Y=0;8>Y;++Y)H[Y]=new e;var V=new u;return d.projectTo2D=function(t,r,i){r=n(r,V);var a=r.ellipsoid,o=t.center,u=t.radius,s=a.geodeticSurfaceNormal(o,W),c=e.cross(e.UNIT_Z,s,B);e.normalize(c,c);var l=e.cross(s,c,F);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,k),h=e.negate(c,G),m=H,p=m[0];e.add(s,l,p),e.add(p,c,p),p=m[1],e.add(s,l,p),e.add(p,h,p),p=m[2],e.add(s,f,p),e.add(p,h,p),p=m[3],e.add(s,f,p),e.add(p,c,p),e.negate(s,s),p=m[4],e.add(s,l,p),e.add(p,c,p),p=m[5],e.add(s,l,p),e.add(p,h,p),p=m[6],e.add(s,f,p),e.add(p,h,p),p=m[7],e.add(s,f,p),e.add(p,c,p);for(var y=m.length,v=0;y>v;++v){var g=m[v];e.add(o,g,g);var w=a.cartesianToCartographic(g,j);r.project(w,g)}i=d.fromPoints(m,i),o=i.center;var x=o.x,E=o.y,S=o.z;return o.x=S,o.y=x,o.z=E,i},d.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&t.radius===n.radius},d.prototype.intersectPlane=function(e){return d.intersectPlane(this,e)},d.prototype.intersect=function(e){return d.intersect(this,e)},d.prototype.equals=function(e){return d.equals(this,e)},d.prototype.clone=function(e){return d.clone(this,e)},d}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return t(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(e(n))return n;n=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof t[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof t[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",e(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",e(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",e(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",e(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(e){i.supportsFullscreen()&&e[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,n){"use strict";function r(e){for(var t=e.split("."),n=0,r=t.length;r>n;++n)t[n]=parseInt(t[n],10);return t}function i(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=r(e[1]))}return y}function a(){return i()&&v}function o(){if(!t(g)&&(g=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=r(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,E=r(e[1]),E.isNightly=!!e[2])}return x}function c(){return s()&&E}function l(){if(!t(S)){S=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,_=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(S=!0,_=r(e[1])))}return S}function f(){return l()&&_}function h(){if(!t(O)){O=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(O=!0,M=r(e[1]))}return O}function d(){return t(P)||(P=/Windows/i.test(navigator.appVersion)),P}function m(){return h()&&M}function p(){return t(T)||(T=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),T}var y,v,g,w,x,E,S,_,O,M,P,T,R={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return R.supportsFullscreen=function(){return n.supportsFullscreen()},R.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},R.supportsWebWorkers=function(){return"undefined"!=typeof Worker},R}),define("Core/ComponentDatatype",["./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject"],function(e,t,n,r,i){"use strict";if(!r.supportsTypedArrays())return{};var a={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,FLOAT:5126,DOUBLE:5130};return a.getSizeInBytes=function(e){switch(e){case a.BYTE:return Int8Array.BYTES_PER_ELEMENT;case a.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case a.SHORT:return Int16Array.BYTES_PER_ELEMENT;case a.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case a.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case a.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new n("componentDatatype is not a valid value.")}},a.fromTypedArray=function(e){return e instanceof Int8Array?a.BYTE:e instanceof Uint8Array?a.UNSIGNED_BYTE:e instanceof Int16Array?a.SHORT:e instanceof Uint16Array?a.UNSIGNED_SHORT:e instanceof Float32Array?a.FLOAT:e instanceof Float64Array?a.DOUBLE:void 0},a.validate=function(e){return t(e)&&(e===a.BYTE||e===a.UNSIGNED_BYTE||e===a.SHORT||e===a.UNSIGNED_SHORT||e===a.FLOAT||e===a.DOUBLE)},a.createTypedArray=function(e,t){switch(e){case a.BYTE:return new Int8Array(t);case a.UNSIGNED_BYTE:return new Uint8Array(t);case a.SHORT:return new Int16Array(t);case a.UNSIGNED_SHORT:return new Uint16Array(t);case a.FLOAT:return new Float32Array(t);case a.DOUBLE:return new Float64Array(t);default:throw new n("componentDatatype is not a valid value.")}},a.createArrayBufferView=function(t,r,i,o){switch(i=e(i,0),o=e(o,(r.byteLength-i)/a.getSizeInBytes(t)),t){case a.BYTE:return new Int8Array(r,i,o);case a.UNSIGNED_BYTE:return new Uint8Array(r,i,o);case a.SHORT:return new Int16Array(r,i,o);case a.UNSIGNED_SHORT:return new Uint16Array(r,i,o);case a.FLOAT:return new Float32Array(r,i,o);case a.DOUBLE:return new Float64Array(r,i,o);default:throw new n("componentDatatype is not a valid value.")}},i(a)}),define("Core/GeometryType",["./freezeObject"],function(e){"use strict";var t={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3};return e(t)}),define("Core/PrimitiveType",["./freezeObject"],function(e){"use strict";var t={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,validate:function(e){return e===t.POINTS||e===t.LINES||e===t.LINE_LOOP||e===t.LINE_STRIP||e===t.TRIANGLES||e===t.TRIANGLE_STRIP||e===t.TRIANGLE_FAN}};return e(t)}),define("Core/Geometry",["./defaultValue","./defined","./DeveloperError","./GeometryType","./PrimitiveType"],function(e,t,n,r,i){"use strict";var a=function(t){t=e(t,e.EMPTY_OBJECT),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=e(t.primitiveType,i.TRIANGLES),this.boundingSphere=t.boundingSphere,this.geometryType=e(t.geometryType,r.NONE),this.boundingSphereCV=void 0};return a.computeNumberOfVertices=function(e){var r=-1;for(var i in e.attributes)if(e.attributes.hasOwnProperty(i)&&t(e.attributes[i])&&t(e.attributes[i].values)){var a=e.attributes[i],o=a.values.length/a.componentsPerAttribute;if(r!==o&&-1!==r)throw new n("All attribute lists must have the same number of attributes.");r=o}return r},a}),define("Core/GeometryAttribute",["./defaultValue","./defined","./DeveloperError"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=e(t.normalize,!1),this.values=t.values};return t}),define("Core/GeometryAttributes",["./defaultValue"],function(e){"use strict";var t=function(t){t=e(t,e.EMPTY_OBJECT),this.position=t.position,this.normal=t.normal,this.st=t.st,this.binormal=t.binormal,this.tangent=t.tangent,this.color=t.color};return t}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(e){switch(e){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(t){return e(t)&&(t===i.UNSIGNED_BYTE||t===i.UNSIGNED_SHORT||t===i.UNSIGNED_INT)},i.createTypedArray=function(e,t){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},i.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)},n(i)}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,n,r,i,a,o){"use strict";var u=function(r,i,a){this.minimum=e.clone(t(r,e.ZERO)),this.maximum=e.clone(t(i,e.ZERO)),n(a)?a=e.clone(a):(a=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(a,.5,a)),this.center=a};u.fromPoints=function(t,r){if(n(r)||(r=new u),!n(t)||0===t.length)return r.minimum=e.clone(e.ZERO,r.minimum),r.maximum=e.clone(e.ZERO,r.maximum),r.center=e.clone(e.ZERO,r.center),r;for(var i=t[0].x,a=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,f=t.length,h=1;f>h;h++){var d=t[h],m=d.x,p=d.y,y=d.z;i=Math.min(m,i),s=Math.max(m,s),a=Math.min(p,a),c=Math.max(p,c),o=Math.min(y,o),l=Math.max(y,l)}var v=r.minimum;v.x=i,v.y=a,v.z=o;var g=r.maximum;g.x=s,g.y=c,g.z=l;var w=e.add(v,g,r.center);return e.multiplyByScalar(w,.5,w),r},u.clone=function(t,r){return n(t)?n(r)?(r.minimum=e.clone(t.minimum,r.minimum),r.maximum=e.clone(t.maximum,r.maximum),r.center=e.clone(t.center,r.center),r):new u(t.minimum,t.maximum):void 0},u.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&e.equals(t.minimum,r.minimum)&&e.equals(t.maximum,r.maximum)};var s=new e;u.intersectPlane=function(t,n){s=e.subtract(t.maximum,t.minimum,s);var r=e.multiplyByScalar(s,.5,s),i=n.normal,o=r.x*Math.abs(i.x)+r.y*Math.abs(i.y)+r.z*Math.abs(i.z),u=e.dot(t.center,i)+n.distance;return u-o>0?a.INSIDE:0>u+o?a.OUTSIDE:a.INTERSECTING};var c=new o(new e,0);return u.intersect=function(e,t){r("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead."); +var n=o.fromCartesian4(t,c);return u.intersectPlane(e,n)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n){this.x=e(t,0),this.y=e(n,0)};a.fromElements=function(e,n,r){return t(r)?(r.x=e,r.y=n,r):new a(e,n)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n):new a(e.x,e.y):void 0},a.fromCartesian3=a.clone,a.fromCartesian4=a.clone,a.packedLength=2,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r]=t.y},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y)},a.minimumComponent=function(e){return Math.min(e.x,e.y)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(e,t){return a.normalize(e,s),a.normalize(t,c),i.acosClamped(a.dot(s,c))};var l=new a;return a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,l);return a.abs(n,n),t=n.x<=n.y?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Y,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)},a.ZERO=r(new a(0,0)),a.UNIT_X=r(new a(1,0)),a.UNIT_Y=r(new a(0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+")"},a}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function n(e,n,r){var i=e+n;return t.sign(e)!==t.sign(n)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(n)))<r?0:i}var r={};return r.computeDiscriminant=function(e,t,n){var r=t*t-4*e*n;return r},r.computeRealRoots=function(e,r,i){var a;if(0===e)return 0===r?[]:[-i/r];if(0===r){if(0===i)return[0,0];var o=Math.abs(i),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(a=-i/e,0>a)return[];var s=Math.sqrt(a);return[-s,s]}if(0===i)return a=-r/e,0>a?[a,0]:[0,a];var c=r*r,l=4*e*i,f=n(c,-l,t.EPSILON14);if(0>f)return[];var h=-.5*n(r,t.sign(r)*Math.sqrt(f),t.EPSILON14);return r>0?[h/e,i/h]:[i/h,h/e]},r}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function n(e,t,n,r){var i,a,o=e,u=t/3,s=n/3,c=r,l=o*s,f=u*c,h=u*u,d=s*s,m=o*s-h,p=o*c-u*s,y=u*c-d,v=4*m*y-p*p;if(0>v){var g,w,x;h*f>=l*d?(g=o,w=m,x=-2*u*m+o*p):(g=c,w=y,x=-c*p+2*s*y);var E=0>x?-1:1,S=-E*Math.abs(g)*Math.sqrt(-v);a=-x+S;var _=a/2,O=0>_?-Math.pow(-_,1/3):Math.pow(_,1/3),M=a===S?-O:-w/O;return i=0>=w?O+M:-x/(O*O+M*M+w),h*f>=l*d?[(i-u)/o]:[-c/(i+s)]}var P=m,T=-2*u*m+o*p,R=y,C=-c*p+2*s*y,N=Math.sqrt(v),I=Math.sqrt(3)/2,z=Math.abs(Math.atan2(o*N,-T)/3);i=2*Math.sqrt(-P);var A=Math.cos(z);a=i*A;var b=i*(-A/2-I*Math.sin(z)),D=a+b>2*u?a-u:b-u,q=o,U=D/q;z=Math.abs(Math.atan2(c*N,-C)/3),i=2*Math.sqrt(-R),A=Math.cos(z),a=i*A,b=i*(-A/2-I*Math.sin(z));var L=-c,W=2*s>a+b?a+s:b+s,B=L/W,F=q*W,G=-D*W-q*L,k=D*L,j=(s*G-u*k)/(-u*G+s*F);return j>=U?B>=U?B>=j?[U,j,B]:[U,B,j]:[B,U,j]:B>=U?[j,U,B]:B>=j?[j,B,U]:[B,j,U]}var r={};return r.computeDiscriminant=function(e,t,n,r){var i=e*e,a=t*t,o=n*n,u=r*r,s=18*e*t*n*r+a*o-27*i*u-4*(e*o*n+a*t*r);return s},r.computeRealRoots=function(e,r,i,a){var o,u;if(0===e)return t.computeRealRoots(r,i,a);if(0===r){if(0===i){if(0===a)return[0,0,0];u=-a/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===a?(o=t.computeRealRoots(e,0,i),0===o.Length?[0]:[o[0],0,o[1]]):n(e,0,i,a)}return 0===i?0===a?(u=-r/e,0>u?[u,0,0]:[0,0,u]):n(e,r,0,a):0===a?(o=t.computeRealRoots(e,r,i),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):n(e,r,i,a)},r}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,n,r){"use strict";function i(t,i,a,o){var u=t*t,s=i-3*u/8,c=a-i*t/2+u*t/8,l=o-a*t/4+i*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var h=-t/4,d=f[f.length-1];if(Math.abs(d)<n.EPSILON14){var m=r.computeRealRoots(1,s,l);if(2===m.length){var p,y=m[0],v=m[1];if(y>=0&&v>=0){var g=Math.sqrt(y),w=Math.sqrt(v);return[h-w,h-g,h+g,h+w]}if(y>=0&&0>v)return p=Math.sqrt(y),[h-p,h+p];if(0>y&&v>=0)return p=Math.sqrt(v),[h-p,h+p]}return[]}if(d>0){var x=Math.sqrt(d),E=(s+d-c/x)/2,S=(s+d+c/x)/2,_=r.computeRealRoots(1,x,E),O=r.computeRealRoots(1,-x,S);return 0!==_.length?(_[0]+=h,_[1]+=h,0!==O.length?(O[0]+=h,O[1]+=h,_[1]<=O[0]?[_[0],_[1],O[0],O[1]]:O[1]<=_[0]?[O[0],O[1],_[0],_[1]]:_[0]>=O[0]&&_[1]<=O[1]?[O[0],_[0],_[1],O[1]]:O[0]>=_[0]&&O[1]<=_[1]?[_[0],O[0],O[1],_[1]]:_[0]>O[0]&&_[0]<O[1]?[O[0],_[0],O[1],_[1]]:[_[0],O[0],_[1],O[1]]):_):0!==O.length?(O[0]+=h,O[1]+=h,O):[]}}return[]}function a(t,i,a,o){var u=a*a,s=i*i,c=t*t,l=-2*i,f=a*t+s-4*o,h=c*o-a*i*t+u,d=e.computeRealRoots(1,l,f,h);if(d.length>0){var m,p,y=d[0],v=i-y,g=v*v,w=t/2,x=v/2,E=g-4*o,S=g+4*Math.abs(o),_=c-4*y,O=c+4*Math.abs(y);if(0>y||_*S>E*O){var M=Math.sqrt(_);m=M/2,p=0===M?0:(t*x-a)/M}else{var P=Math.sqrt(E);m=0===P?0:(t*x-a)/P,p=P/2}var T,R;0===w&&0===m?(T=0,R=0):n.sign(w)===n.sign(m)?(T=w+m,R=y/T):(R=w-m,T=y/R);var C,N;0===x&&0===p?(C=0,N=0):n.sign(x)===n.sign(p)?(C=x+p,N=o/C):(N=x-p,C=o/N);var I=r.computeRealRoots(1,T,C),z=r.computeRealRoots(1,R,N);if(0!==I.length)return 0!==z.length?I[1]<=z[0]?[I[0],I[1],z[0],z[1]]:z[1]<=I[0]?[z[0],z[1],I[0],I[1]]:I[0]>=z[0]&&I[1]<=z[1]?[z[0],I[0],I[1],z[1]]:z[0]>=I[0]&&z[1]<=I[1]?[I[0],z[0],z[1],I[1]]:I[0]>z[0]&&I[0]<z[1]?[z[0],I[0],z[1],I[1]]:[I[0],z[0],I[1],z[1]]:I;if(0!==z.length)return z}return[]}var o={};return o.computeDiscriminant=function(e,t,n,r,i){var a=e*e,o=a*e,u=t*t,s=u*t,c=n*n,l=c*n,f=r*r,h=f*r,d=i*i,m=d*i,p=u*c*f-4*s*h-4*e*l*f+18*e*t*n*h-27*a*f*f+256*o*m+i*(18*s*n*r-4*u*l+16*e*c*c-80*e*t*c*r-6*e*u*f+144*a*n*f)+d*(144*e*u*n-27*u*u-128*a*c-192*a*t*r);return p},o.computeRealRoots=function(t,r,o,u,s){if(Math.abs(t)<n.EPSILON15)return e.computeRealRoots(r,o,u,s);var c=r/t,l=o/t,f=u/t,h=s/t,d=0>c?1:0;switch(d+=0>l?d+1:d,d+=0>f?d+1:d,d+=0>h?d+1:d){case 0:return i(c,l,f,h);case 1:return a(c,l,f,h);case 2:return a(c,l,f,h);case 3:return i(c,l,f,h);case 4:return i(c,l,f,h);case 5:return a(c,l,f,h);case 6:return i(c,l,f,h);case 7:return i(c,l,f,h);case 8:return a(c,l,f,h);case 9:return i(c,l,f,h);case 10:return i(c,l,f,h);case 11:return a(c,l,f,h);case 12:return i(c,l,f,h);case 13:return i(c,l,f,h);case 14:return i(c,l,f,h);case 15:return i(c,l,f,h);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=function(n,r){r=e.clone(t(r,e.ZERO)),e.equals(r,e.ZERO)||e.normalize(r,r),this.origin=e.clone(t(n,e.ZERO)),this.direction=r};return r.getPoint=function(t,r,i){return n(i)||(i=new e),i=e.multiplyByScalar(t.direction,r,i),e.add(t.origin,i,i)},r}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,n,r,i,a,o,u,s,c){"use strict";function l(t,r,i,o,u){u=n(u,!1);var s,c,l,f,h,d=t.origin,m=t.direction,p=e.subtract(i,r,y),E=e.subtract(o,r,v),S=e.cross(m,E,g),_=e.dot(p,S);if(u){if(_<a.EPSILON6)return void 0;if(s=e.subtract(d,r,w),l=e.dot(s,S),0>l||l>_)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c),0>f||l+f>_)return void 0;h=e.dot(E,c)/_}else{if(Math.abs(_)<a.EPSILON6)return void 0;var O=1/_;if(s=e.subtract(d,r,w),l=e.dot(s,S)*O,0>l||l>1)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c)*O,0>f||l+f>1)return void 0;h=e.dot(E,c)*O}return h}function f(e,t,n,r){var i=t*t-4*e*n;if(0>i)return void 0;if(i>0){var a=1/(2*e),o=Math.sqrt(i),u=(-t+o)*a,s=(-t-o)*a;return s>u?(r.root0=u,r.root1=s):(r.root0=s,r.root1=u),r}var c=-t/(2*e);return 0===c?void 0:(r.root0=r.root1=c,r)}function h(t,n,i){r(i)||(i={});var a=t.origin,o=t.direction,u=n.center,s=n.radius*n.radius,c=e.subtract(a,u,g),l=e.dot(o,o),h=2*e.dot(o,c),d=e.magnitudeSquared(c)-s,m=f(l,h,d,S);return r(m)?(i.start=m.root0,i.stop=m.root1,i):void 0}function d(e,t,n){var r=e+t;return a.sign(e)!==a.sign(t)&&Math.abs(r/Math.max(Math.abs(e),Math.abs(t)))<n?0:r}function m(t,n,r,i,c){var l,f=i*i,h=c*c,m=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*h,p=c*(i*d(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],a.EPSILON15)+n.y),y=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*h+i*n.x+r,v=h*d(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],a.EPSILON15),g=c*(i*d(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+n.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(m,p,y),0===l.length)return w;var x=l[0],E=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(i,c*x,c*-E)),w.push(new e(i,c*x,c*E)),2===l.length){var S=l[1],_=Math.sqrt(Math.max(1-S*S,0));w.push(new e(i,c*S,c*-_)),w.push(new e(i,c*S,c*_))}return w}var O=g*g,M=v*v,P=m*m,T=g*v,R=P+M,C=2*(p*m+T),N=2*y*m+p*p-M+O,I=2*(y*p-T),z=y*y-O;if(0===R&&0===C&&0===N&&0===I)return w;l=s.computeRealRoots(R,C,N,I,z);var A=l.length;if(0===A)return w;for(var b=0;A>b;++b){var D,q=l[b],U=q*q,L=Math.max(1-U,0),W=Math.sqrt(L);D=a.sign(m)===a.sign(y)?d(m*U+y,p*q,a.EPSILON12):a.sign(y)===a.sign(p*q)?d(m*U,p*q+y,a.EPSILON12):d(m*U+p*q,y,a.EPSILON12);var B=d(v*q,g,a.EPSILON15),F=D*B;0>F?w.push(new e(i,c*q,c*W)):F>0?w.push(new e(i,c*q,c*-W)):0!==W?(w.push(new e(i,c*q,c*-W)),w.push(new e(i,c*q,c*W)),++b):w.push(new e(i,c*q,c*W))}return w}var p={};p.rayPlane=function(t,n,i){r(i)||(i=new e);var o=t.origin,u=t.direction,s=n.normal,c=e.dot(s,u);if(Math.abs(c)<a.EPSILON15)return void 0;var l=(-n.distance-e.dot(s,o))/c;return 0>l?void 0:(i=e.multiplyByScalar(u,l,i),e.add(o,i,i))};var y=new e,v=new e,g=new e,w=new e,x=new e;p.rayTriangle=function(t,n,i,a,o,u){var s=l(t,n,i,a,o);return!r(s)||0>s?void 0:(r(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var E=new c;p.lineSegmentTriangle=function(t,n,i,a,o,u,s){var c=E;e.clone(t,c.origin),e.subtract(n,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,i,a,o,u);return!r(f)||0>f||f>e.distance(t,n)?void 0:(r(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var S={root0:0,root1:0};p.raySphere=function(e,t,n){return n=h(e,t,n),!r(n)||n.stop<0?void 0:(n.start=Math.max(n.start,0),n)};var _=new c;p.lineSegmentSphere=function(t,n,i,a){var o=_;e.clone(t,o.origin);var u=e.subtract(n,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),a=h(o,i,a),!r(a)||a.stop<0||a.start>s?void 0:(a.start=Math.max(a.start,0),a.stop=Math.min(a.stop,s),a)};var O=new e,M=new e;p.rayEllipsoid=function(t,n){var r,i,a,o,u,s=n.oneOverRadii,c=e.multiplyComponents(s,t.origin,O),l=e.multiplyComponents(s,t.direction,M),f=e.magnitudeSquared(c),h=e.dot(c,l);if(f>1){if(h>=0)return void 0;var d=h*h;if(r=f-1,i=e.magnitudeSquared(l),a=i*r,a>d)return void 0;if(d>a){o=h*h-a,u=-h+Math.sqrt(o);var m=u/i,p=r/u;return p>m?{start:m,stop:p}:{start:p,stop:m}}var y=Math.sqrt(r/i);return{start:y,stop:y}}return 1>f?(r=f-1,i=e.magnitudeSquared(l),a=i*r,o=h*h-a,u=-h+Math.sqrt(o),{start:0,stop:u/i}):0>h?(i=e.magnitudeSquared(l),{start:0,stop:-h/i}):void 0};var P=new e,T=new e,R=new e,C=new e,N=new e,I=new o,z=new o,A=new o,b=new o,D=new o,q=new o,U=new o,L=new e,W=new e,B=new t;p.grazingAltitudeLocation=function(t,n){var i=t.origin,u=t.direction,s=n.geodeticSurfaceNormal(i,P);if(e.dot(u,s)>=0)return i;var c=r(this.rayEllipsoid(t,n)),l=n.transformPositionToScaledSpace(u,P),f=e.normalize(l,l),h=e.mostOrthogonalAxis(l,C),d=e.normalize(e.cross(h,f,T),T),p=e.normalize(e.cross(f,d,R),R),y=I;y[0]=f.x,y[1]=f.y,y[2]=f.z,y[3]=d.x,y[4]=d.y,y[5]=d.z,y[6]=p.x,y[7]=p.y,y[8]=p.z;var v=o.transpose(y,z),g=o.fromScale(n.radii,A),w=o.fromScale(n.oneOverRadii,b),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var E,S,_=o.multiply(o.multiply(v,w,q),x,q),O=o.multiply(o.multiply(_,g,U),y,U),M=o.multiplyByVector(_,i,N),F=m(O,e.negate(M,P),0,0,1),G=F.length;if(G>0){for(var k=e.clone(e.ZERO,W),j=Number.NEGATIVE_INFINITY,H=0;G>H;++H){E=o.multiplyByVector(g,o.multiplyByVector(y,F[H],L),L);var Y=e.normalize(e.subtract(E,i,C),C),V=e.dot(Y,u);V>j&&(j=V,k=e.clone(E,k))}var Z=n.cartesianToCartographic(k,B);return j=a.clamp(j,0,1),S=e.magnitude(e.subtract(k,i,C))*Math.sqrt(1-j*j),S=c?-S:S,Z.height=S,n.cartographicToCartesian(Z,new e)}return void 0};var F=new e;return p.lineSegmentPlane=function(t,n,i,o){r(o)||(o=new e);var u=e.subtract(n,t,F),s=i.normal,c=e.dot(s,u);if(Math.abs(c)<a.EPSILON6)return void 0;var l=e.dot(s,t),f=-(i.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},p.trianglePlaneIntersection=function(t,n,r,i){var a=i.normal,o=i.distance,u=e.dot(a,t)+o<0,s=e.dot(a,n)+o<0,c=e.dot(a,r)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,h;if((1===l||2===l)&&(f=new e,h=new e),1===l){if(u)return p.lineSegmentPlane(t,n,i,f),p.lineSegmentPlane(t,r,i,h),{positions:[t,n,r,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(s)return p.lineSegmentPlane(n,r,i,f),p.lineSegmentPlane(n,t,i,h),{positions:[t,n,r,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return p.lineSegmentPlane(r,t,i,f),p.lineSegmentPlane(r,n,i,h),{positions:[t,n,r,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return p.lineSegmentPlane(n,t,i,f),p.lineSegmentPlane(r,t,i,h),{positions:[t,n,r,f,h],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return p.lineSegmentPlane(r,n,i,f),p.lineSegmentPlane(t,n,i,h),{positions:[t,n,r,f,h],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return p.lineSegmentPlane(t,r,i,f),p.lineSegmentPlane(n,r,i,h),{positions:[t,n,r,f,h],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,n,r,i){return t(e).then(n,r,i)}function t(e){var t,n;return e instanceof r?t=e:u(e)?(n=o(),e.then(function(e){n.resolve(e)},function(e){n.reject(e)},function(e){n.progress(e)}),t=n.promise):t=i(e),t}function n(t){return e(t,a)}function r(e){this.then=e}function i(e){var n=new r(function(n){try{return t(n?n(e):e)}catch(r){return a(r)}});return n}function a(e){var n=new r(function(n,r){try{return r?t(r(e)):a(e)}catch(i){return a(i)}});return n}function o(){function e(e,t,n){return h(e,t,n)}function n(e){return m(e)}function i(e){return m(a(e))}function u(e){return d(e)}var s,c,l,f,h,d,m;return c=new r(e),s={then:e,resolve:n,reject:i,progress:u,promise:c,resolver:{resolve:n,reject:i,progress:u}},l=[],f=[],h=function(e,t,n){var r,i;return r=o(),i="function"==typeof n?function(e){try{r.progress(n(e))}catch(t){r.progress(t)}}:function(e){r.progress(e)},l.push(function(n){n.then(e,t).then(r.resolve,r.reject,i)}),f.push(i),r.promise},d=function(e){return p(f,e),e},m=function(e){return e=t(e),h=e.then,m=t,d=v,p(l,e),f=l=E,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,n,r,i,a){return y(2,arguments),e(t,function(t){function u(e){p(e)}function s(e){m(e)}var c,l,f,h,d,m,p,y,g,w;if(g=t.length>>>0,c=Math.max(0,Math.min(n,g)),f=[],l=g-c+1,h=[],d=o(),c)for(y=d.progress,p=function(e){h.push(e),--l||(m=p=v,d.reject(h))},m=function(e){f.push(e),--c||(m=p=v,d.resolve(f))},w=0;g>w;++w)w in t&&e(t[w],s,u,y);else d.resolve(f);return d.then(r,i,a)})}function c(e,t,n,r){function i(e){return t?t(e[0]):e[0]}return s(e,1,i,n,r)}function l(e,t,n,r){return y(1,arguments),h(e,g).then(t,n,r)}function f(){return h(arguments,g)}function h(t,n){return e(t,function(t){var r,i,a,u,s,c;if(a=i=t.length>>>0,r=[],c=o(),a)for(u=function(t,i){e(t,n).then(function(e){r[i]=e,--a||c.resolve(r)},c.reject)},s=0;i>s;s++)s in t?u(t[s],s):--a;else c.resolve(r);return c.promise})}function d(t,n){var r=x.call(arguments,1);return e(t,function(t){var i;return i=t.length,r[0]=function(t,r,a){return e(t,function(t){return e(r,function(e){return n(t,e,a,i)})})},w.apply(t,r)})}function m(t,n,r){var i=arguments.length>2;return e(t,function(e){return e=i?r:e,n.resolve(e),e},function(e){return n.reject(e),a(e)},n.progress)}function p(e,t){for(var n,r=0;n=e[r++];)n(t)}function y(e,t){for(var n,r=t.length;r>e;)if(n=t[--r],null!=n&&"function"!=typeof n)throw new Error("arg "+r+" must be a function")}function v(){}function g(e){return e}var w,x,E;return e.defer=o,e.resolve=t,e.reject=n,e.join=f,e.all=l,e.map=h,e.reduce=d,e.any=c,e.some=s,e.chain=m,e.isPromise=u,r.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(E,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(E,t)})})}},x=[].slice,w=[].reduce||function(e){var t,n,r,i,a;if(a=0,t=Object(this),i=t.length>>>0,n=arguments,n.length<=1)for(;;){if(a in t){r=t[a++];break}if(++a>=i)throw new TypeError}else r=n[1];for(;i>a;++a)a in t&&(r=e(r,t[a],a,t));return r},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,n){for(var r,i,a=0,o=e.length-1;o>=a;)if(r=~~((a+o)/2),i=n(e[r],t),0>i)a=r+1;else{if(!(i>0))return r;o=r-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,n,r,i){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=r,this.ut1MinusUtc=i};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,n=0,r=t[n++],i=function(e,t,n,r){n||(n=" ");var i=e.length>=t?"":Array(1+t-e.length>>>0).join(n);return r?e+i:i+e},a=function(e,t,n,r,a,o){var u=r-e.length;return u>0&&(e=n||!a?i(e,r,o,n):e.slice(0,t.length)+i("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,n,r,o,u,s){var c=e>>>0;return n=n&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=n+i(c.toString(t),u||0,"0",!1),a(e,n,r,o,s)},u=function(e,t,n,r,i,o){return null!=r&&(e=e.slice(0,r)),a(e,"",t,n,i,o)},s=function(e,r,s,c,l,f,h){var d,m,p,y,v;if("%%"==e)return"%";for(var g=!1,w="",x=!1,E=!1,S=" ",_=s.length,O=0;s&&_>O;O++)switch(s.charAt(O)){case" ":w=" ";break;case"+":w="+";break;case"-":g=!0;break;case"'":S=s.charAt(O+1);break;case"0":x=!0;break;case"#":E=!0}if(c=c?"*"==c?+t[n++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,g=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(f=f?"*"==f?+t[n++]:"*"==f.charAt(0)?+t[f.slice(1,-1)]:+f:"fFeE".indexOf(h)>-1?6:"d"==h?0:void 0,v=r?t[r.slice(0,-1)]:t[n++],h){case"s":return u(String(v),g,c,f,x,S);case"c":return u(String.fromCharCode(+v),g,c,f,x);case"b":return o(v,2,E,g,c,f,x);case"o":return o(v,8,E,g,c,f,x);case"x":return o(v,16,E,g,c,f,x);case"X":return o(v,16,E,g,c,f,x).toUpperCase();case"u":return o(v,10,E,g,c,f,x);case"i":case"d":return d=+v||0,d=Math.round(d-d%1),m=0>d?"-":w,v=m+i(String(Math.abs(d)),f,"0",!1),a(v,m,g,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return d=+v,m=0>d?"-":w,p=["toExponential","toFixed","toPrecision"]["efg".indexOf(h.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(h)%2],v=m+Math.abs(d)[p](f),a(v,m,g,c,x)[y]();default:return e}};return r.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,n,r,i,a,o,u){this.year=e,this.month=t,this.day=n,this.hour=r,this.minute=i,this.second=a,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,n,r,i,a,o,u,s,c){"use strict";function l(e,t){return C.compare(e.julianDate,t.julianDate)}function f(e){g.julianDate=e;var n=C.leapSeconds,r=t(n,g,l);0>r&&(r=~r),r>=n.length&&(r=n.length-1);var i=n[r].offset;if(r>0){var a=C.secondsDifference(n[r].julianDate,e);a>i&&(r--,i=n[r].offset)}C.addSeconds(e,i,e)}function h(e,n){g.julianDate=e;var r=C.leapSeconds,i=t(r,g,l);if(0>i&&(i=~i),0===i)return C.addSeconds(e,-r[0].offset,n);if(i>=r.length)return C.addSeconds(e,-r[i-1].offset,n);var a=C.secondsDifference(r[i].julianDate,e);return 0===a?C.addSeconds(e,-r[i].offset,n):1>=a?void 0:C.addSeconds(e,-r[--i].offset,n)}function d(e,t,n){var r=0|t/s.SECONDS_PER_DAY;return e+=r,t-=s.SECONDS_PER_DAY*r,0>t&&(e--,t+=s.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function m(e,t,n,r,i,a,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+n-32075;r-=12,0>r&&(r+=24);var f=a+(r*s.SECONDS_PER_HOUR+i*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return f>=43200&&(l-=1),[l,f]}var p=new a,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,g=new u,w=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,E=/^(\d{4})-?(\d{3})$/,S=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,_=/^(\d{4})-?(\d{2})-?(\d{2})$/,O=/([Z+\-])?(\d{2})?:?(\d{2})?$/,M=/^(\d{2})(\.\d+)?/.source+O.source,P=/^(\d{2}):?(\d{2})(\.\d+)?/.source+O.source,T=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+O.source,R="Invalid ISO 8601 date.",C=function(e,t,r){this.dayNumber=void 0,this.secondsOfDay=void 0,e=n(e,0),t=n(t,0),r=n(r,c.UTC);var i=0|e;t+=(e-i)*s.SECONDS_PER_DAY,d(i,t,this),r===c.UTC&&f(this)};C.fromDate=function(e,t){var n=m(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return r(t)?(d(n[0],n[1],t),f(t),t):new C(n[0],n[1],c.UTC)},C.fromIso8601=function(e,t){e=e.replace(",",".");var n,a,u,s=e.split("T"),l=1,h=1,p=0,g=0,O=0,N=0,I=s[0],z=s[1];if(!r(I))throw new i(R);var A;if(s=I.match(_),null!==s){if(A=I.split("-").length-1,A>0&&2!==A)throw new i(R);n=+s[1],l=+s[2],h=+s[3]}else if(s=I.match(x),null!==s)n=+s[1],l=+s[2];else if(s=I.match(w),null!==s)n=+s[1];else{var b;if(s=I.match(E),null!==s){if(n=+s[1],b=+s[2],u=o(n),1>b||u&&b>366||!u&&b>365)throw new i(R)}else{if(s=I.match(S),null===s)throw new i(R);n=+s[1];var D=+s[2],q=+s[3]||0;if(A=I.split("-").length-1,A>0&&(!r(s[3])&&1!==A||r(s[3])&&2!==A))throw new i(R);var U=new Date(Date.UTC(n,0,4));b=7*D+q-U.getUTCDay()-3}a=new Date(Date.UTC(n,0,1)),a.setUTCDate(b),l=a.getUTCMonth()+1,h=a.getUTCDate()}if(u=o(n),1>l||l>12||1>h||(2!==l||!u)&&h>y[l-1]||u&&2===l&&h>v)throw new i(R);var L;if(r(z)){if(s=z.match(T),null!==s){if(A=z.split(":").length-1,A>0&&2!==A&&3!==A)throw new i(R);p=+s[1],g=+s[2],O=+s[3],N=1e3*+(s[4]||0),L=5}else if(s=z.match(P),null!==s){if(A=z.split(":").length-1,A>0&&1!==A)throw new i(R);p=+s[1],g=+s[2],O=60*+(s[3]||0),L=4}else{if(s=z.match(M),null===s)throw new i(R);p=+s[1],g=60*+(s[2]||0),L=3}if(g>=60||O>=61||p>24||24===p&&(g>0||O>0||N>0))throw new i(R);var W=s[L],B=+s[L+1],F=+(s[L+2]||0);switch(W){case"+":p-=B,g-=F;break;case"-":p+=B,g+=F;break;case"Z":break;default:g+=new Date(Date.UTC(n,l-1,h,p,g)).getTimezoneOffset()}}else g+=new Date(n,l-1,h).getTimezoneOffset();var G=60===O;for(G&&O--;g>=60;)g-=60,p++;for(;p>=24;)p-=24,h++;for(a=u&&2===l?v:y[l-1];h>a;)h-=a,l++,l>12&&(l-=12,n++),a=u&&2===l?v:y[l-1];for(;0>g;)g+=60,p--;for(;0>p;)p+=24,h--;for(;1>h;)l--,1>l&&(l+=12,n--),a=u&&2===l?v:y[l-1],h+=a;var k=m(n,l,h,p,g,O,N);return r(t)?(d(k[0],k[1],t),f(t)):t=new C(k[0],k[1],c.UTC),G&&C.addSeconds(t,1,t),t},C.now=function(e){return C.fromDate(new Date,e)};var N=new C(0,0,c.TAI);return C.toGregorianDate=function(e,t){var n=!1,i=h(e,N);r(i)||(C.addSeconds(e,-1,N),i=h(N,N),n=!0);var o=i.dayNumber,u=i.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var f=0|4e3*(c+1)/1461001;c=0|c-(0|1461*f/4)+31;var d=0|80*c/2447,m=0|c-(0|2447*d/80);c=0|d/11;var p=0|d+2-12*c,y=0|100*(l-49)+f+c,v=0|u/s.SECONDS_PER_HOUR,g=u-v*s.SECONDS_PER_HOUR,w=0|g/s.SECONDS_PER_MINUTE;g-=w*s.SECONDS_PER_MINUTE;var x=0|g,E=(g-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),n&&(x+=1),r(t)?(t.year=y,t.month=p,t.day=m,t.hour=v,t.minute=w,t.second=x,t.millisecond=E,t.isLeapSecond=n,t):new a(y,p,m,v,w,x,E,n)},C.toDate=function(e){var t=C.toGregorianDate(e,p),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))},C.toIso8601=function(t,n){var i,a=C.toGregorianDate(t,a);return r(n)||0===a.millisecond?r(n)&&0!==n?(i=(.01*a.millisecond).toFixed(n).replace(".","").slice(0,n),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,i)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",a.year,a.month,a.day,a.hour,a.minute,a.second):(i=(.01*a.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,i))},C.clone=function(e,t){return r(e)?r(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new C(e.dayNumber,e.secondsOfDay,c.TAI):void 0},C.compare=function(e,t){var n=e.dayNumber-t.dayNumber;return 0!==n?n:e.secondsOfDay-t.secondsOfDay},C.equals=function(e,t){return e===t||r(e)&&r(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},C.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(C.secondsDifference(e,t))<=n},C.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},C.secondsDifference=function(e,t){var n=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return n+(e.secondsOfDay-t.secondsOfDay)},C.daysDifference=function(e,t){var n=e.dayNumber-t.dayNumber,r=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return n+r},C.computeTaiMinusUtc=function(e){g.julianDate=e;var n=C.leapSeconds,r=t(n,g,l);return 0>r&&(r=~r,--r,0>r&&(r=0)),n[r].offset},C.addSeconds=function(e,t,n){return d(e.dayNumber,e.secondsOfDay+t,n)},C.addMinutes=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return d(e.dayNumber,r,n)},C.addHours=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return d(e.dayNumber,r,n)},C.addDays=function(e,t,n){var r=e.dayNumber+t;return d(r,e.secondsOfDay,n)},C.lessThan=function(e,t){return C.compare(e,t)<0},C.lessThanOrEquals=function(e,t){return C.compare(e,t)<=0},C.greaterThan=function(e,t){return C.compare(e,t)>0},C.greaterThanOrEquals=function(e,t){return C.compare(e,t)>=0},C.prototype.clone=function(e){return C.clone(this,e)},C.prototype.equals=function(e){return C.equals(this,e)},C.prototype.equalsEpsilon=function(e,t){return C.equalsEpsilon(this,e,t)},C.prototype.toString=function(){return C.toIso8601(this)},C.leapSeconds=[new u(new C(2441317,43210,c.TAI),10),new u(new C(2441499,43211,c.TAI),11),new u(new C(2441683,43212,c.TAI),12),new u(new C(2442048,43213,c.TAI),13),new u(new C(2442413,43214,c.TAI),14),new u(new C(2442778,43215,c.TAI),15),new u(new C(2443144,43216,c.TAI),16),new u(new C(2443509,43217,c.TAI),17),new u(new C(2443874,43218,c.TAI),18),new u(new C(2444239,43219,c.TAI),19),new u(new C(2444786,43220,c.TAI),20),new u(new C(2445151,43221,c.TAI),21),new u(new C(2445516,43222,c.TAI),22),new u(new C(2446247,43223,c.TAI),23),new u(new C(2447161,43224,c.TAI),24),new u(new C(2447892,43225,c.TAI),25),new u(new C(2448257,43226,c.TAI),26),new u(new C(2448804,43227,c.TAI),27),new u(new C(2449169,43228,c.TAI),28),new u(new C(2449534,43229,c.TAI),29),new u(new C(2450083,43230,c.TAI),30),new u(new C(2450630,43231,c.TAI),31),new u(new C(2451179,43232,c.TAI),32),new u(new C(2453736,43233,c.TAI),33),new u(new C(2454832,43234,c.TAI),34),new u(new C(2456109,43235,c.TAI),35),new u(new C(2457204,43236,c.TAI),36)],C}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(n,r){if(null===n||"object"!=typeof n)return n;r=e(r,!1);var i=new n.constructor;for(var a in n)if(n.hasOwnProperty(a)){var o=n[a];r&&(o=t(o,r)),i[a]=o}return i};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var n=e.split("\r\n"),r=0;r<n.length;++r){var i=n[r],a=i.indexOf(": ");if(a>0){var o=i.substring(0,a),u=i.substring(a+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var n=function(e,n,r){this.statusCode=e,this.response=n,this.responseHeaders=r,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return n.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},n}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,n,r,i,a){"use strict";function o(e,t){var n=decodeURIComponent(t);return e?atob(n):n}function u(e,t){for(var n=o(e,t),r=new ArrayBuffer(n.length),i=new Uint8Array(r),a=0;a<n.length;a++)i[a]=n.charCodeAt(a);return r}function s(e,n){n=t(n,"");var i=e[1],a=!!e[2],s=e[3];switch(n){case"":case"text":return o(a,s);case"arraybuffer":return u(a,s);case"blob":var c=u(a,s);return new Blob([c],{type:i});case"document":var l=new DOMParser;return l.parseFromString(o(a,s),i);case"json":return JSON.parse(o(a,s));default:throw new r("Unhandled responseType: "+n)}}var c=function(n){n=t(n,t.EMPTY_OBJECT);var r=n.responseType,i=t(n.method,"GET"),a=n.data,o=n.headers,u=n.overrideMimeType;return e(n.url,function(t){var n=e.defer();return c.load(t,r,i,a,o,n,u),n.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,r,o,u,c,f){var h=l.exec(e);if(null!==h)return c.resolve(s(h,t)),void 0;var d=new XMLHttpRequest;if(n(f)&&n(d.overrideMimeType)&&d.overrideMimeType(f),d.open(r,e,!0),n(u))for(var m in u)u.hasOwnProperty(m)&&d.setRequestHeader(m,u[m]);n(t)&&(d.responseType=t),d.onload=function(){200===d.status?n(d.response)?c.resolve(d.response):n(d.responseXML)&&d.responseXML.hasChildNodes()?c.resolve(d.responseXML):n(d.responseText)?c.resolve(d.responseText):c.reject(new a("unknown XMLHttpRequest response type.")):c.reject(new i(d.status,d.response,d.getAllResponseHeaders()))},d.onerror=function(){c.reject(new i)},d.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,n){return e({url:t,headers:n})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,n,r){"use strict";var i={Accept:"application/json,*/*;q=0.01"},a=function(n,a){return t(a)?t(a.Accept)||(a=e(a),a.Accept=i.Accept):a=i,r(n,a).then(function(e){return JSON.parse(e) +})};return a}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,n,r,i,a,o,u,s,c,l,f){"use strict";function h(e,t){return o.compare(e.julianDate,t)}function d(e,n){if(!r(n.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!r(n.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var i=n.columnNames.indexOf("modifiedJulianDateUtc"),a=n.columnNames.indexOf("xPoleWanderRadians"),s=n.columnNames.indexOf("yPoleWanderRadians"),c=n.columnNames.indexOf("ut1MinusUtcSeconds"),d=n.columnNames.indexOf("xCelestialPoleOffsetRadians"),m=n.columnNames.indexOf("yCelestialPoleOffsetRadians"),p=n.columnNames.indexOf("taiMinusUtcSeconds");if(0>i||0>a||0>s||0>c||0>d||0>m||0>p)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=n.samples,v=e._dates=[];e._dateColumn=i,e._xPoleWanderRadiansColumn=a,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=d,e._yCelestialPoleOffsetRadiansColumn=m,e._taiMinusUtcSecondsColumn=p,e._columnCount=n.columnNames.length,e._lastIndex=void 0;for(var g,w=e._addNewLeapSeconds,x=0,E=y.length;E>x;x+=e._columnCount){var S=y[x+i],_=y[x+p],O=S+l.MODIFIED_JULIAN_DATE_DIFFERENCE,M=new o(O,_,f.TAI);if(v.push(M),w){if(_!==g&&r(g)){var P=o.leapSeconds,T=t(P,M,h);if(0>T){var R=new u(M,_);P.splice(~T,0,R)}}g=_}}}function m(e,t,n,r,i){var a=n*r;i.xPoleWander=t[a+e._xPoleWanderRadiansColumn],i.yPoleWander=t[a+e._yPoleWanderRadiansColumn],i.xPoleOffset=t[a+e._xCelestialPoleOffsetRadiansColumn],i.yPoleOffset=t[a+e._yCelestialPoleOffsetRadiansColumn],i.ut1MinusUtc=t[a+e._ut1MinusUtcSecondsColumn]}function p(e,t,n){return t+e*(n-t)}function y(e,t,n,r,i,a,u){var s=e._columnCount;if(a>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u;var c=t[i],l=t[a];if(c.equals(l)||r.equals(c))return m(e,n,i,s,u),u;if(r.equals(l))return m(e,n,a,s,u),u;var f=o.secondsDifference(r,c)/o.secondsDifference(l,c),h=i*s,d=a*s,y=n[h+e._ut1MinusUtcSecondsColumn],v=n[d+e._ut1MinusUtcSecondsColumn],g=v-y;if(g>.5||-.5>g){var w=n[h+e._taiMinusUtcSecondsColumn],x=n[d+e._taiMinusUtcSecondsColumn];w!==x&&(l.equals(r)?y=v:v-=x-w)}return u.xPoleWander=p(f,n[h+e._xPoleWanderRadiansColumn],n[d+e._xPoleWanderRadiansColumn]),u.yPoleWander=p(f,n[h+e._yPoleWanderRadiansColumn],n[d+e._yPoleWanderRadiansColumn]),u.xPoleOffset=p(f,n[h+e._xCelestialPoleOffsetRadiansColumn],n[d+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=p(f,n[h+e._yCelestialPoleOffsetRadiansColumn],n[d+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=p(f,y,v),u}var v=function(t){if(t=n(t,n.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=n(t.addNewLeapSeconds,!0),r(t.data))d(this,t.data);else if(r(t.url)){var i=this;this._downloadPromise=e(s(t.url),function(e){d(i,e)},function(){i._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else d(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return v.NONE=a({getPromiseToLoad:function(){return e()},compute:function(e,t){return r(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new i(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,n){if(!r(this._samples)){if(r(this._dataError))throw new c(this._dataError);return void 0}if(r(n)||(n=new i(0,0,0,0,0)),0===this._samples.length)return n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0,n;var a=this._dates,u=this._lastIndex,s=0,l=0;if(r(u)){var f=a[u],h=a[u+1],d=o.lessThanOrEquals(f,e),m=!r(h),p=m||o.greaterThanOrEquals(h,e);if(d&&p)return s=u,!m&&h.equals(e)&&++s,l=s+1,y(this,a,this._samples,e,s,l,n),n}var v=t(a,e,o.compare,this._dateColumn);return v>=0?(v<a.length-1&&a[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,a,this._samples,e,s,l,n),n},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var n=r.exec(t);this.scheme=n[1],this.authority=n[2],this.path=n[3],this.query=n[4],this.fragment=n[5]}}function t(e){var t=unescape(e);return a.test(t)?t:e.toUpperCase()}function n(e,t,n,r){return(t||"")+n.toLowerCase()+(r||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var r=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,n).replace(i,t)),this.path&&(this.path=this.path.replace(i,t)),this.query&&(this.query=this.query.replace(i,t)),this.fragment&&(this.fragment=this.fragment.replace(i,t))};var i=/%[0-9a-z]{2}/gi,a=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var n=new e;return this.scheme?(n.scheme=this.scheme,n.authority=this.authority,n.path=this.path,n.query=this.query):(n.scheme=t.scheme,this.authority?(n.authority=this.authority,n.path=this.path,n.query=this.query):(n.authority=t.authority,""==this.path?(n.path=t.path,n.query=this.query||t.query):("/"==this.path.charAt(0)?(n.path=this.path,n.removeDotSegments()):(n.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,n.removeDotSegments()),n.query=this.query))),n.fragment=this.fragment,n},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),n=[],r=""==t[0];for(r&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?n.pop():"."!=e&&n.push(e);("."==e||".."==e)&&n.push(""),r&&n.unshift(""),this.path=n.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,n,r){"use strict";function i(){for(var e=document.getElementsByTagName("script"),t=0,n=e.length;n>t;++t){var r=e[t].getAttribute("src"),i=f.exec(r);if(null!==i)return i[1]}return void 0}function a(){if(t(s))return s;var r;if(r="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:i(),!t(r))throw new n("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(r).resolve(new e(document.location.href))}function o(e){return r.toUrl("../"+e)}function u(t){return new e(t).resolve(a()).toString()}var s,c,l,f=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,h=function(e){t(c)||(c=t(r.toUrl)?o:u),t(l)||(l=document.createElement("a"));var n=c(e);return l.href=n,l.href=l.href,l.href};return h._cesiumScriptRegex=f,h.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},h}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,n){this.x=e,this.y=t,this.s=n};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,n,r,i,a,o,u){"use strict";function s(e,t,n){var r=f;return r.dayNumber=t,r.secondsOfDay=n,a.daysDifference(r,e._sampleZeroDateTT)}function c(n,i){if(n._chunkDownloadsInProgress[i])return n._chunkDownloadsInProgress[i];var a=e.defer();n._chunkDownloadsInProgress[i]=a;var u,s=n._xysFileUrlTemplate;return u=r(s)?s.replace("{0}",i):t("Assets/IAU2006_XYS/IAU2006_XYS_"+i+".json"),e(o(u),function(e){n._chunkDownloadsInProgress[i]=!1;for(var t=n._samples,r=e.samples,o=3*i*n._samplesPerXysFile,u=0,s=r.length;s>u;++u)t[o+u]=r[u];a.resolve()}),a.promise}var l=function(e){e=n(e,n.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=n(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=n(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new a(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=n(e.stepSizeDays,1),this._samplesPerXysFile=n(e.samplesPerXysFile,1e3),this._totalSamples=n(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,r=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){r[s]=o,i[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(r[s]*=s-c);r[s]=1/r[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},f=new a(0,0,u.TAI);return l.prototype.preload=function(t,n,r,i){var a=s(this,t,n),o=s(this,r,i),u=0|a/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var f=0|u/this._samplesPerXysFile,h=0|l/this._samplesPerXysFile,d=[],m=f;h>=m;++m)d.push(c(this,m));return e.all(d)},l.prototype.computeXysRadians=function(e,t,n){var a=s(this,e,t);if(0>a)return void 0;var o=0|a/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var f=l+u;f>=this._totalSamples&&(f=this._totalSamples-1,l=f-u,0>l&&(l=0));var h=!1,d=this._samples;if(r(d[3*l])||(c(this,0|l/this._samplesPerXysFile),h=!0),r(d[3*f])||(c(this,0|f/this._samplesPerXysFile),h=!0),h)return void 0;r(n)?(n.x=0,n.y=0,n.s=0):n=new i(0,0,0);var m,p,y=a-l*this._stepSizeDays,v=this._work,g=this._denominators,w=this._coef,x=this._xTable;for(m=0;u>=m;++m)v[m]=y-x[m];for(m=0;u>=m;++m){for(w[m]=1,p=0;u>=p;++p)p!==m&&(w[m]*=v[p]);w[m]*=g[m];var E=3*(l+m);n.x+=w[m]*d[E++],n.y+=w[m]*d[E++],n.s+=w[m]*d[E]}return n},l}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,n,r,i,a,o,u){"use strict";var s=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)},c=new e;s.fromAxisAngle=function(t,r,i){var a=r/2,o=Math.sin(a);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,h=Math.cos(a);return n(i)?(i.x=u,i.y=l,i.z=f,i.w=h,i):new s(u,l,f,h)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var r,i,a,o,c,h=e[u.COLUMN0ROW0],d=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],p=h+d+m;if(p>0)r=Math.sqrt(p+1),c=.5*r,r=.5/r,i=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*r,a=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*r,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*r;else{var y=l,v=0;d>h&&(v=1),m>h&&m>d&&(v=2);var g=y[v],w=y[g];r=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=f;x[v]=.5*r,r=.5/r,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*r,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*r,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*r,i=-x[0],a=-x[1],o=-x[2]}return n(t)?(t.x=i,t.y=a,t.z=o,t.w=c,t):new s(i,a,o,c)};var h=new s;s.fromHeadingPitchRoll=function(t,n,r,i){var a=s.fromAxisAngle(e.UNIT_X,r,h),o=s.fromAxisAngle(e.UNIT_Y,-n,i);i=s.multiply(o,a,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,h);return s.multiply(u,i,i)};var d=new e,m=new e,p=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},s.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new s),i.x=e[r],i.y=e[r+1],i.z=e[r+2],i.w=e[r+3],i},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,n,r){s.unpack(e,4*n,v),s.conjugate(v,v);for(var i=0,a=n-t+1;a>i;i++){var o=3*i;s.unpack(e,4*(t+i),p),s.multiply(p,v,p),p.w<0&&s.negate(p,p),s.computeAxis(p,d);var u=s.computeAngle(p);r[o]=d.x*u,r[o+1]=d.y*u,r[o+2]=d.z*u}},s.unpackInterpolationResult=function(t,r,i,a,o){n(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(r,4*a,y),0===u?s.clone(s.IDENTITY,p):s.fromAxisAngle(m,u,p),s.multiply(p,y,o)},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var n=1/s.magnitude(e),r=e.x*n,i=e.y*n,a=e.z*n,o=e.w*n;return t.x=r,t.y=i,t.z=a,t.w=o,t},s.inverse=function(e,t){var n=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/n,t)},s.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},s.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+r*l+i*c-a*s,h=o*s-r*c+i*l+a*u,d=o*c+r*s-i*u+a*l,m=o*l-r*u-i*s-a*c;return n.x=f,n.y=h,n.z=d,n.w=m,n},s.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},s.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},s.computeAxis=function(e,t){var n=e.w;if(Math.abs(n-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var r=1/Math.sqrt(1-n*n);return t.x=e.x*r,t.y=e.y*r,t.z=e.z*r,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,n,r){return g=s.multiplyByScalar(t,n,g),r=s.multiplyByScalar(e,1-n,r),s.add(g,r,r)};var w=new s,x=new s,E=new s;s.slerp=function(e,t,n,r){var i=s.dot(e,t),a=t;if(0>i&&(i=-i,a=w=s.negate(t,w)),1-i<o.EPSILON6)return s.lerp(e,a,n,r);var u=Math.acos(i);return x=s.multiplyByScalar(e,Math.sin((1-n)*u),x),E=s.multiplyByScalar(a,Math.sin(n*u),E),r=s.add(x,E,r),s.multiplyByScalar(r,1/Math.sin(u),r)},s.log=function(t,n){var r=o.acosClamped(t.w),i=0;return 0!==r&&(i=r/Math.sin(r)),e.multiplyByScalar(t,i,n)},s.exp=function(t,n){var r=e.magnitude(t),i=0;return 0!==r&&(i=Math.sin(r)/r),n.x=t.x*i,n.y=t.y*i,n.z=t.z*i,n.w=Math.cos(r),n};var S=new e,_=new e,O=new s,M=new s;s.computeInnerQuadrangle=function(t,n,r,i){var a=s.conjugate(n,O);s.multiply(a,r,M);var o=s.log(M,S);s.multiply(a,t,M);var u=s.log(M,_);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,O),s.multiply(n,O,i)},s.squad=function(e,t,n,r,i,a){var o=s.slerp(e,t,i,O),u=s.slerp(n,r,i,M);return s.slerp(o,u,2*i*(1-i),a)};for(var P=new s,T=1.9011074535173003,R=i.supportsTypedArrays()?new Float32Array(8):[],C=i.supportsTypedArrays()?new Float32Array(8):[],N=i.supportsTypedArrays()?new Float32Array(8):[],I=i.supportsTypedArrays()?new Float32Array(8):[],z=0;7>z;++z){var A=z+1,b=2*A+1;R[z]=1/(A*b),C[z]=A/b}return R[7]=T/136,C[7]=8*T/17,s.fastSlerp=function(e,t,n,r){var i,a=s.dot(e,t);a>=0?i=1:(i=-1,a=-a);for(var o=a-1,u=1-n,c=n*n,l=u*u,f=7;f>=0;--f)N[f]=(R[f]*c-C[f])*o,I[f]=(R[f]*l-C[f])*o;var h=i*n*(1+N[0]*(1+N[1]*(1+N[2]*(1+N[3]*(1+N[4]*(1+N[5]*(1+N[6]*(1+N[7])))))))),d=u*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),m=s.multiplyByScalar(e,d,P);return s.multiplyByScalar(t,h,r),s.add(m,r,r)},s.fastSquad=function(e,t,n,r,i,a){var o=s.fastSlerp(e,t,i,O),u=s.fastSlerp(n,r,i,M);return s.fastSlerp(o,u,2*i*(1-i),a)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},s.ZERO=a(new s(0,0,0,0)),s.IDENTITY=a(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,n,r,i,a,o,u,s,c,l,f,h,d,m,p,y,v){"use strict";var g={},w=new n,x=new n,E=new n;g.eastNorthUpToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return a(r)?(r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=-o,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),a(r)?(r[0]=s.x,r[1]=s.y,r[2]=s.z,r[3]=0,r[4]=l.x,r[5]=l.y,r[6]=l.z,r[7]=0,r[8]=u.x,r[9]=u.y,r[10]=u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var S=new n,_=new n,O=new n;g.northEastDownToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return a(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=-o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=S,s=_,l=O;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),a(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=s.x,r[5]=s.y,r[6]=s.z,r[7]=0,r[8]=-u.x,r[9]=-u.y,r[10]=-u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},g.northUpEastToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return a(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=o,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=w,s=x,l=E;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),a(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=u.x,r[5]=u.y,r[6]=u.z,r[7]=0,r[8]=s.x,r[9]=s.y,r[10]=s.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var M=new y,P=new n(1,1,1),T=new p;g.headingPitchRollToFixedFrame=function(e,t,r,i,a,o){var u=y.fromHeadingPitchRoll(t,r,i,M),s=p.fromTranslationQuaternionRotationScale(n.ZERO,u,P,T);return o=g.eastNorthUpToFixedFrame(e,a,o),p.multiply(o,s,o)};var R=new p,C=new m;g.headingPitchRollQuaternion=function(e,t,n,r,i,a){var o=g.headingPitchRollToFixedFrame(e,t,n,r,i,R),u=p.getRotation(o,C);return y.fromRotationMatrix(u,a)};var N=24110.54841,I=8640184.812866,z=.093104,A=-62e-7,b=1.1772758384668e-19,D=72921158553e-15,q=d.TWO_PI/86400,U=new h;g.computeTemeToPseudoFixedMatrix=function(e,t){U=h.addSeconds(e,-h.computeTaiMinusUtc(e),U);var n,r=U.dayNumber,i=U.secondsOfDay,o=r-2451545;n=i>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=N+n*(I+n*(z+n*A)),s=u*q%d.TWO_PI,c=D+b*(r-2451545.5),l=(i+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,f=s+c*l,p=Math.cos(f),y=Math.sin(f);return a(t)?(t[0]=p,t[1]=-y,t[2]=0,t[3]=y,t[4]=p,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new m(p,y,0,-y,p,0,0,0,1)},g.iau2006XysData=new l,g.earthOrientationParameters=u.NONE;var L=32.184,W=2451545;g.preloadIcrfFixed=function(t){var n=t.start.dayNumber,r=t.start.secondsOfDay+L,i=t.stop.dayNumber,a=t.stop.secondsOfDay+L,o=g.iau2006XysData.preload(n,r,i,a),u=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},g.computeIcrfToFixedMatrix=function(e,t){a(t)||(t=new m);var n=g.computeFixedToIcrfMatrix(e,t);return a(n)?m.transpose(n,t):void 0};var B=new f(0,0,0),F=new s(0,0,0,0,0,0),G=new m,k=new m;g.computeFixedToIcrfMatrix=function(e,t){a(t)||(t=new m);var n=g.earthOrientationParameters.compute(e,F);if(!a(n))return void 0;var r=e.dayNumber,i=e.secondsOfDay+L,o=g.iau2006XysData.computeXysRadians(r,i,B);if(!a(o))return void 0;var u=o.x+n.xPoleOffset,s=o.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=G;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var f=m.fromRotationZ(-o.s,k),p=m.multiply(l,f,G),y=e.dayNumber,w=e.secondsOfDay-h.computeTaiMinusUtc(e)+n.ut1MinusUtc,x=y-2451545,E=w/v.SECONDS_PER_DAY,S=.779057273264+E+.00273781191135448*(x+E);S=S%1*d.TWO_PI;var _=m.fromRotationZ(S,k),O=m.multiply(p,_,G),M=Math.cos(n.xPoleWander),P=Math.cos(n.yPoleWander),T=Math.sin(n.xPoleWander),R=Math.sin(n.yPoleWander),C=r-W+i/v.SECONDS_PER_DAY;C/=36525;var N=-47e-6*C*d.RADIANS_PER_DEGREE/3600,I=Math.cos(N),z=Math.sin(N),A=k;return A[0]=M*I,A[1]=M*z,A[2]=T,A[3]=-P*z+R*T*I,A[4]=P*I+R*T*z,A[5]=-R*M,A[6]=-R*z-P*T*I,A[7]=R*I-P*T*z,A[8]=P*M,m.multiply(O,A,t)};var j=new r;g.pointToWindowCoordinates=function(e,t,n,r){return r=g.pointToGLWindowCoordinates(e,t,n,r),r.y=2*t[5]-r.y,r},g.pointToGLWindowCoordinates=function(e,n,i,o){a(o)||(o=new t);var u=j;return p.multiplyByVector(e,r.fromElements(i.x,i.y,i.z,1,u),u),r.multiplyByScalar(u,1/u.w,u),p.multiplyByVector(n,u,u),t.fromCartesian4(u,o)};var H=new n,Y=new n,V=new n;return g.rotationMatrixFromPositionVelocity=function(e,t,r,o){var u=i(r,c.WGS84).geodeticSurfaceNormal(e,H),s=n.cross(t,u,Y);n.equalsEpsilon(s,n.ZERO,d.EPSILON6)&&(s=n.clone(n.UNIT_X,s));var l=n.cross(s,t,V);return n.cross(t,l,s),n.negate(s,s),a(o)||(o=new m),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},g}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,n,r,i,a,o,u,s,c,l,f,h,d,m){"use strict";var p=new r,y=function(e,t){t=i(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var r=m.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=n.fromCartesian4(f.getColumn(r,0,p)),this._yAxis=n.fromCartesian4(f.getColumn(r,1,p));var a=n.fromCartesian4(f.getColumn(r,2,p));this._plane=h.fromPointNormal(e,a)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,n){var r=e.fromPoints(t,v);return new y(r.center,n)};var g=new d,w=new n;y.prototype.projectPointOntoPlane=function(e,r){var i=g;i.origin=e,n.normalize(e,i.direction);var o=c.rayPlane(i,this._plane,w);if(a(o)||(n.negate(i.direction,i.direction),o=c.rayPlane(i,this._plane,w)),a(o)){var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return a(r)?(r.x=s,r.y=l,r):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){a(t)||(t=[]);for(var n=0,r=e.length,i=0;r>i;i++){var o=this.projectPointOntoPlane(e[i],t[n]);a(o)&&(t[n]=o,n++)}return t.length=n,t},y.prototype.projectPointToNearestOnPlane=function(e,r){a(r)||(r=new t);var i=g;i.origin=e,n.clone(this._plane.normal,i.direction);var o=c.rayPlane(i,this._plane,w);a(o)||(n.negate(i.direction,i.direction),o=c.rayPlane(i,this._plane,w));var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return r.x=s,r.y=l,r},y.prototype.projectPointsToNearestOnPlane=function(e,t){a(t)||(t=[]);var n=e.length;t.length=n;for(var r=0;n>r;r++)t[r]=this.projectPointToNearestOnPlane(e[r],t[r]);return t};var x=new n;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var r=e.length;a(t)?t.length=r:t=new Array(r);for(var i=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;r>l;++l){var f=e[l];n.multiplyByScalar(u,f.x,c),a(t[l])||(t[l]=new n);var h=n.add(o,c,t[l]);n.multiplyByScalar(s,f.y,c),n.add(h,c,h),i.scaleToGeocentricSurface(h,h)}return t},y}),define("Core/barycentricCoordinates",["./Cartesian2","./Cartesian3","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=new t,i=new t,a=new t,o=function(o,u,s,c,l){n(l)||(l=new t);var f,h,d,m,p,y,v,g;n(u.z)?(f=t.subtract(s,u,r),h=t.subtract(c,u,i),d=t.subtract(o,u,a),m=t.dot(f,f),p=t.dot(f,h),y=t.dot(f,d),v=t.dot(h,h),g=t.dot(h,d)):(f=e.subtract(s,u,r),h=e.subtract(c,u,i),d=e.subtract(o,u,a),m=e.dot(f,f),p=e.dot(f,h),y=e.dot(f,d),v=e.dot(h,h),g=e.dot(h,d));var w=1/(m*v-p*p);return l.y=(v*y-p*g)*w,l.z=(m*g-p*y)*w,l.x=1-l.y-l.z,l};return o}),define("Core/pointInsideTriangle",["./barycentricCoordinates","./Cartesian3"],function(e,t){"use strict";var n=new t,r=function(t,r,i,a){return e(t,r,i,a,n),n.x>0&&n.y>0&&n.z>0};return r}),define("Core/EllipsoidGeodesic",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./Math"],function(e,t,n,r,i,a,o,u){"use strict";function s(e){var t=e._uSquared,n=e._ellipsoid.maximumRadius,r=e._ellipsoid.minimumRadius,i=(n-r)/n,a=Math.cos(e._startHeading),o=Math.sin(e._startHeading),u=(1-i)*Math.tan(e._start.latitude),s=1/Math.sqrt(1+u*u),c=s*u,l=Math.atan2(u,a),f=s*o,h=f*f,d=1-h,m=Math.sqrt(d),p=t/4,y=p*p,v=y*p,g=y*y,w=1+p-3*y/4+5*v/4-175*g/64,x=1-p+15*y/8-35*v/8,E=1-3*p+35*y/4,S=1-5*p,_=w*l-x*Math.sin(2*l)*p/2-E*Math.sin(4*l)*y/16-S*Math.sin(6*l)*v/48-5*Math.sin(8*l)*g/512,O=e._constants;O.a=n,O.b=r,O.f=i,O.cosineHeading=a,O.sineHeading=o,O.tanU=u,O.cosineU=s,O.sineU=c,O.sigma=l,O.sineAlpha=f,O.sineSquaredAlpha=h,O.cosineSquaredAlpha=d,O.cosineAlpha=m,O.u2Over4=p,O.u4Over16=y,O.u6Over64=v,O.u8Over256=g,O.a0=w,O.a1=x,O.a2=E,O.a3=S,O.distanceRatio=_}function c(e,t){return e*t*(4+e*(4-3*t))/16}function l(e,t,n,r,i,a,o){var u=c(e,n);return(1-u)*e*t*(r+u*i*(o+u*a*(2*o*o-1)))}function f(e,t,n,r,i,a,o){var s,c,f,h,d,m=(t-n)/t,p=a-r,y=Math.atan((1-m)*Math.tan(i)),v=Math.atan((1-m)*Math.tan(o)),g=Math.cos(y),w=Math.sin(y),x=Math.cos(v),E=Math.sin(v),S=g*x,_=g*E,O=w*E,M=w*x,P=p,T=u.TWO_PI,R=Math.cos(P),C=Math.sin(P);do{R=Math.cos(P),C=Math.sin(P);var N=_-M*R;f=Math.sqrt(x*x*C*C+N*N),c=O+S*R,s=Math.atan2(f,c);var I;0===f?(I=0,h=1):(I=S*C/f,h=1-I*I),T=P,d=c-2*O/h,isNaN(d)&&(d=0),P=p+l(m,I,h,s,f,c,d)}while(Math.abs(P-T)>u.EPSILON12);var z=h*(t*t-n*n)/(n*n),A=1+z*(4096+z*(z*(320-175*z)-768))/16384,b=z*(256+z*(z*(74-47*z)-128))/1024,D=d*d,q=b*f*(d+b*(c*(2*D-1)-b*d*(4*f*f-3)*(4*D-3)/6)/4),U=n*A*(s-q),L=Math.atan2(x*C,_-M*R),W=Math.atan2(g*C,_*R-M);e._distance=U,e._startHeading=L,e._endHeading=W,e._uSquared=z}function h(n,r,i,a){e.normalize(a.cartographicToCartesian(r,m),d),e.normalize(a.cartographicToCartesian(i,m),m),f(n,a.maximumRadius,a.minimumRadius,r.longitude,r.latitude,i.longitude,i.latitude),n._start=t.clone(r,n._start),n._end=t.clone(i,n._end),n._start.height=0,n._end.height=0,s(n)}var d=new e,m=new e,p=function(e,i,a){var u=n(a,o.WGS84);this._ellipsoid=u,this._start=new t,this._end=new t,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,r(e)&&r(i)&&h(this,e,i,u)};return i(p.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}}),p.prototype.setEndPoints=function(e,t){h(this,e,t,this._ellipsoid)},p.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)},p.prototype.interpolateUsingSurfaceDistance=function(e,n){var i=this._constants,a=i.distanceRatio+e/i.b,o=Math.cos(2*a),u=Math.cos(4*a),s=Math.cos(6*a),c=Math.sin(2*a),f=Math.sin(4*a),h=Math.sin(6*a),d=Math.sin(8*a),m=a*a,p=a*m,y=i.u8Over256,v=i.u2Over4,g=i.u6Over64,w=i.u4Over16,x=2*p*y*o/3+a*(1-v+7*w/4-15*g/4+579*y/64-(w-15*g/4+187*y/16)*o-(5*g/4-115*y/16)*u-29*y*s/16)+(v/2-w+71*g/32-85*y/16)*c+(5*w/16-5*g/4+383*y/96)*f-m*((g-11*y/2)*c+5*y*f/2)+(29*g/96-29*y/16)*h+539*y*d/1536,E=Math.asin(Math.sin(x)*i.cosineAlpha),S=Math.atan(i.a/i.b*Math.tan(E));x-=i.sigma;var _=Math.cos(2*i.sigma+x),O=Math.sin(x),M=Math.cos(x),P=i.cosineU*M,T=i.sineU*O,R=Math.atan2(O*i.sineHeading,P-T*i.cosineHeading),C=R-l(i.f,i.sineAlpha,i.cosineSquaredAlpha,x,O,M,_);return r(n)?(n.longitude=this._start.longitude+C,n.latitude=S,n.height=0,n):new t(this._start.longitude+C,S,0)},p}),define("Core/isArray",["./defined"],function(e){"use strict";var t=Array.isArray;return e(t)||(t=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t}),define("Core/PolylinePipeline",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidGeodesic","./IntersectionTests","./isArray","./Math","./Matrix4","./Plane"],function(e,t,n,r,i,a,o,u,s,c,l,f){"use strict";function h(e,t,n){var r=O;r.length=e;var i;if(t===n){for(i=0;e>i;i++)r[i]=t;return r}var a=n-t,o=a/e;for(i=0;e>i;i++){var u=t+i*o;r[i]=u}return r}function d(t,n,r,i,a,o,u,s){var c=i.scaleToGeodeticSurface(t,R),l=i.scaleToGeodeticSurface(n,C),f=m.numberOfPoints(t,n,r),d=i.cartesianToCartographic(c,M),p=i.cartesianToCartographic(l,P),y=h(f,a,o);N.setEndPoints(d,p);var v=N.surfaceDistance/f,g=s;d.height=a;var w=i.cartographicToCartesian(d,T);e.pack(w,u,g),g+=3;for(var x=1;f>x;x++){var E=N.interpolateUsingSurfaceDistance(x*v,P);E.height=y[x],w=i.cartographicToCartesian(E,T),e.pack(w,u,g),g+=3}return g}var m={};m.numberOfPoints=function(t,n,r){var i=e.distance(t,n);return Math.ceil(i/r)};var p=new t;m.extractHeights=function(e,t){for(var n=e.length,r=new Array(n),i=0;n>i;i++){var a=e[i];r[i]=t.cartesianToCartographic(a,p).height}return r};var y=new l,v=new e,g=new e,w=new f(e.ZERO,0),x=new e,E=new f(e.ZERO,0),S=new e,_=new e,O=[],M=new t,P=new t,T=new e,R=new e,C=new e,N=new o;m.wrapLongitude=function(t,i){var a=[],o=[];if(r(t)&&t.length>0){i=n(i,l.IDENTITY);var s=l.inverseTransformation(i,y),c=l.multiplyByPoint(s,e.ZERO,v),h=l.multiplyByPointAsVector(s,e.UNIT_Y,g),d=f.fromPointNormal(c,h,w),m=l.multiplyByPointAsVector(s,e.UNIT_X,x),p=f.fromPointNormal(c,m,E),O=1;a.push(e.clone(t[0]));for(var M=a[0],P=t.length,T=1;P>T;++T){var R=t[T];if(f.getPointDistance(p,M)<0||f.getPointDistance(p,R)<0){var C=u.lineSegmentPlane(M,R,d,S);if(r(C)){var N=e.multiplyByScalar(h,5e-9,_);f.getPointDistance(d,M)<0&&e.negate(N,N),a.push(e.add(C,N,new e)),o.push(O+1),e.negate(N,N),a.push(e.add(C,N,new e)),O=1}}a.push(e.clone(t[T])),O++,M=R}o.push(O)}return{positions:a,lengths:o} +};var I=c.EPSILON7;return m.removeDuplicates=function(t){var n=t.length;if(2>n)return t;var r,i,a;for(r=1;n>r&&(i=t[r-1],a=t[r],!e.equalsEpsilon(i,a,I));++r);if(r===n)return t;for(var o=t.slice(0,r);n>r;++r)a=t[r],e.equalsEpsilon(i,a,I)||(o.push(e.clone(a)),i=a);return o},m.generateArc=function(t){r(t)||(t={});var i=t.positions,o=i.length,u=n(t.ellipsoid,a.WGS84),l=n(t.height,0);if(1>o)return[];if(1===o){var f=u.scaleToGeodeticSurface(i[0],R);if(0!==l){var h=u.geodeticSurfaceNormal(f,T);e.multiplyByScalar(h,l,h),e.add(f,h,f)}return[f.x,f.y,f.z]}var p=t.minDistance;if(!r(p)){var y=n(t.granularity,c.RADIANS_PER_DEGREE);p=c.chordLength(y,u.maximumRadius)}var v,g=0;for(v=0;o-1>v;v++)g+=m.numberOfPoints(i[v],i[v+1],p);var w=3*(g+1),x=new Array(w),E=0,S=s(l);for(v=0;o-1>v;v++){var _=i[v],P=i[v+1],C=S?l[v]:l,N=S?l[v+1]:l;E=d(_,P,p,u,C,N,x,E)}O.length=0;var I=i[o-1],z=u.cartesianToCartographic(I,M);z.height=S?l[o-1]:l;var A=u.cartographicToCartesian(z,T);return e.pack(A,x,w-3),x},m.generateCartesianArc=function(t){for(var n=m.generateArc(t),r=n.length/3,i=new Array(r),a=0;r>a;a++)i[a]=e.unpack(n,3*a);return i},m}),define("Core/Queue",[],function(){"use strict";var e=function(){this._array=[],this._offset=0,this.length=0};return e.prototype.enqueue=function(e){this._array.push(e),this.length++},e.prototype.dequeue=function(){if(0===this.length)return void 0;var e=this._array,t=this._offset,n=e[t];return e[t]=void 0,t++,t>10&&2*t>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this.length--,n},e.prototype.contains=function(e){return-1!==this._array.indexOf(e)},e.prototype.clear=function(){this._array.length=this._offset=this.length=0},e.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)},e}),define("Core/WindingOrder",["./freezeObject"],function(e){"use strict";var t={CLOCKWISE:2304,COUNTER_CLOCKWISE:2305,validate:function(e){return e===t.CLOCKWISE||e===t.COUNTER_CLOCKWISE}};return e(t)}),define("Core/PolygonPipeline",["./Cartesian2","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Geometry","./GeometryAttribute","./Math","./pointInsideTriangle","./PolylinePipeline","./PrimitiveType","./Queue","./WindingOrder"],function(e,t,n,r,i,a,o,u,s,c,l,f,h,d,m,p){"use strict";function y(t,n,r){var i=e.subtract(n,t,q),a=e.subtract(r,n,U);return i.x*a.y-i.y*a.x>=0}function v(e){for(var t=e[0].x,n=0,r=0;r<e.length;r++)e[r].x>t&&(t=e[r].x,n=r);return n}function g(e){for(var t=e[0][0].x,n=0,r=0;r<e.length;r++){var i=e[r][v(e[r])].x;i>t&&(t=i,n=r)}return n}function w(e){for(var t=[],n=0;n<e.length;n++){var r=e[(n-1+e.length)%e.length],i=e[n],a=e[(n+1)%e.length];y(r,i,a)||t.push(i)}return t}function x(t,n){for(var r=0;r<t.length;r++)if(e.equals(n,t[r]))return r;return-1}function E(n,i,a){a=r(a,[]);var o=Number.MAX_VALUE,u=v(i),s=new e(i[u].x,n.y);a.push(u),a.push((u+1)%i.length);for(var c=i[0].x,l=c,f=1;f<i.length;++f)i[f].x<c?c=i[f].x:i[f].x>l&&(l=i[f].x);l+=l-c;var h=new t(l,n.y,0);for(f=0;f<i.length;f++){var d=i[f],m=i[(f+1)%i.length];if((d.x>=n.x||m.x>=n.x)&&(d.y>=n.y&&m.y<=n.y||d.y<=n.y&&m.y>=n.y)){var p=(m.y-d.y)*(h.x-n.x)-(m.x-d.x)*(h.y-n.y);if(0!==p){p=1/p;var y=((m.x-d.x)*(n.y-d.y)-(m.y-d.y)*(n.x-d.x))*p,g=((h.x-n.x)*(n.y-d.y)-(h.y-n.y)*(n.x-d.x))*p;if(y>=0&&1>=y&&g>=0&&1>=g){var w=new e(n.x+y*(h.x-n.x),n.y+y*(h.y-n.y)),x=e.subtract(w,n,L);p=e.magnitudeSquared(x),o>p&&(s=w,o=p,a[0]=f,a[1]=(f+1)%i.length)}}}}return s}function S(t,n){var r=g(n),i=n[r],a=v(i),o=i[a],u=[],s=E(o,t,u),c=x(t,s);if(-1!==c)return c;var h=e.magnitudeSquared(e.subtract(t[u[0]],o,W)),d=e.magnitudeSquared(e.subtract(t[u[1]],o,W)),m=d>h?t[u[0]]:t[u[1]],p=w(t),y=p.indexOf(m);-1!==y&&p.splice(y,1);for(var S=[],_=0;_<p.length;_++){var O=p[_];f(O,o,s,m)&&S.push(O)}var M=Number.MAX_VALUE;if(S.length>0){var P=e.fromElements(1,0,W);for(_=0;_<S.length;_++){var T=e.subtract(S[_],o,B),R=e.magnitude(P)*e.magnitudeSquared(T);if(0!==R){var C=Math.abs(l.acosClamped(e.dot(P,T)/R));M>C&&(M=C,m=S[_])}}}return t.indexOf(m)}function _(e,n,r){for(var i=et.computeWindingOrder2D(e),a=0;a<n.length;a++){var o=n[a];t.equals(o[0],o[o.length-1])||o.push(o[0]);var s=et.computeWindingOrder2D(o);s===i&&o.reverse()}var c=u.fromPoints(e,r),l=c.projectPointsOntoPlane(e),f=[];for(a=0;a<n.length;a++)f.push(c.projectPointsOntoPlane(n[a]));var h=S(l,f),d=g(f),m=v(f[d]),p=n[d],y=[];for(a=0;a<e.length;a++)y.push(e[a]);var w,x=[];if(0!==m)for(w=0;w<=p.length;w++){var E=(w+m)%p.length;0!==E&&x.push(p[E])}else for(w=0;w<p.length;w++)x.push(p[(w+m)%p.length]);var _=y.lastIndexOf(e[h]);x.push(e[_]);var O=y.slice(0,_+1),M=y.slice(_+1);return y=O.concat(x,M),n.splice(d,1),y}function O(e){var t=l.nextRandomNumber(),n=Math.floor(t*e);return n===e&&n--,n}function M(e,t,n,r){var i=r[e].position,a=r[t].position,o=r[n].position,u=o.x,s=o.y,c=i.x-u,l=i.y-s,f=a.x-u,h=a.y-s;return c*h-l*f}function P(e,t){return e.x*t.y-e.y*t.x}function T(e,t){var n=t.length,r=l.mod(e-1,n),i=l.mod(e+1,n);return 0===M(r,i,e,t)?!1:!0}function R(t,n){return e.magnitudeSquared(n)<e.magnitudeSquared(t)}function C(t,n,r){if(!T(t,r))return t;var i=r[t].position,a=r[n].position,o=r.length,u=l.mod(t-1,o);if(!T(u,r))return u;var s=l.mod(t+1,o);if(!T(s,r))return s;var c=e.subtract(r[u].position,i,k),f=e.subtract(r[s].position,i,j),h=e.subtract(a,i,H),d=P(c,h),m=P(f,h);if(0===d)return R(c,h)?F:G;if(0===m)return R(f,h)?F:G;var p=P(c,f);return 0>p?0>d&&m>0?F:G:p>0?d>0&&0>m?G:F:void 0}function N(e,t,n){return(e>t||e>n)&&(t>e||n>e)||t===n&&t===e}function I(t,n,r,i){var a=e.subtract(r,t,V),o=n.x*i.y-n.y*i.x,u=o*o,s=e.magnitudeSquared(n),c=e.magnitudeSquared(i);if(u>Y*s*c){var l=(a.x*i.y-a.y*i.x)/o;return e.add(t,e.multiplyByScalar(n,l,V),V)}return void 0}function z(t,n,r){for(var a=e.subtract(n,t,Z),o=r.length,u=0;o>u;u++){var s=r[u].position,c=r[l.mod(u+1,o)].position;if(!(e.equals(t,s)||e.equals(n,c)||e.equals(t,c)||e.equals(n,s))){var f=e.subtract(c,s,X),h=I(t,a,s,f);if(i(h)&&!(e.equals(h,t)||e.equals(h,n)||e.equals(h,s)||e.equals(h,c))){var d=h.x,m=h.y,p=N(d,t.x,n.x)&&N(m,t.y,n.y)&&N(d,s.x,c.x)&&N(m,s.y,c.y);if(p)return!0}}}return!1}function A(t,n,r){var i=C(t,n,r);if(i>=0)return i;var a=C(n,t,r);return a>=0?a:i!==F||a!==F||z(r[t].position,r[n].position,r)||e.equals(r[t].position,r[n].position)?K:J}function b(e){return 0===M(1,2,0,e)}function D(e){var t=e.length;if(3===t)return b(e)?[]:[e[0].index,e[1].index,e[2].index];if(e.length<3)throw new a("Invalid polygon: must have at least three vertices.");for(var n,r,i=0,o=10*e.length,u=K;J>u&&i++<o;){for(n=O(e.length),r=n+1;Math.abs(n-r)<2||Math.abs(n-r)>e.length-2;)r=O(e.length);if(n>r){var s=n;n=r,r=s}u=A(n,r,e)}if(u===J){var c=e.splice(n,r-n+1,e[n],e[r]);return D(e).concat(D(c))}return u>=0?(e.splice(u,1),D(e)):[]}var q=new e,U=new e,L=new e,W=new e(1,0),B=new e,F=-1,G=-2,k=new t,j=new t,H=new t,Y=l.EPSILON14,V=new e;new e;var Z=new e,X=new e,J=-1,K=-2,Q=new t,$=new t,et={};et.removeDuplicates=function(e){var n=h.removeDuplicates(e);return t.equals(n[0],n[n.length-1])?n.slice(1):n},et.computeArea2D=function(e){for(var t=e.length,n=0,r=t-1,i=0;t>i;r=i++){var a=e[r],o=e[i];n+=a.x*o.y-o.x*a.y}return.5*n},et.computeWindingOrder2D=function(e){var t=et.computeArea2D(e);return t>0?p.COUNTER_CLOCKWISE:p.CLOCKWISE},et.triangulate=function(e){for(var t=e.length,n=[],r=0;t>r;++r)n[r]={position:e[r],index:r};return D(n)};var tt=new t,nt=new t,rt=new t,it=new t,at=new t,ot=new t,ut=new t;return et.computeSubdivision=function(e,a,o,u){u=r(u,l.RADIANS_PER_DEGREE);var f,h=o.slice(0),m=a.length,p=new Array(3*m),y=0;for(f=0;m>f;f++){var v=a[f];p[y++]=v.x,p[y++]=v.y,p[y++]=v.z}for(var g=[],w={},x=e.maximumRadius,E=l.chordLength(u,x),S=E*E;h.length>0;){var _,O,M=h.pop(),P=h.pop(),T=h.pop(),R=t.fromArray(p,3*T,tt),C=t.fromArray(p,3*P,nt),N=t.fromArray(p,3*M,rt),I=t.multiplyByScalar(t.normalize(R,it),x,it),z=t.multiplyByScalar(t.normalize(C,at),x,at),A=t.multiplyByScalar(t.normalize(N,ot),x,ot),b=t.magnitudeSquared(t.subtract(I,z,ut)),D=t.magnitudeSquared(t.subtract(z,A,ut)),q=t.magnitudeSquared(t.subtract(A,I,ut)),U=Math.max(b,D,q);U>S?b===U?(_=Math.min(T,P)+" "+Math.max(T,P),f=w[_],i(f)||(O=t.add(R,C,ut),t.multiplyByScalar(O,.5,O),p.push(O.x,O.y,O.z),f=p.length/3-1,w[_]=f),h.push(T,f,M),h.push(f,P,M)):D===U?(_=Math.min(P,M)+" "+Math.max(P,M),f=w[_],i(f)||(O=t.add(C,N,ut),t.multiplyByScalar(O,.5,O),p.push(O.x,O.y,O.z),f=p.length/3-1,w[_]=f),h.push(P,f,T),h.push(f,M,T)):q===U&&(_=Math.min(M,T)+" "+Math.max(M,T),f=w[_],i(f)||(O=t.add(N,R,ut),t.multiplyByScalar(O,.5,O),p.push(O.x,O.y,O.z),f=p.length/3-1,w[_]=f),h.push(M,f,P),h.push(f,T,P)):(g.push(T),g.push(P),g.push(M))}return new s({attributes:{position:new c({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:p})},indices:g,primitiveType:d.TRIANGLES})},et.scaleToGeodeticHeight=function(e,n,a,u){a=r(a,o.WGS84);var s=Q,c=$;if(n=r(n,0),u=r(u,!0),i(e)&&i(e.attributes)&&i(e.attributes.position))for(var l=e.attributes.position.values,f=l.length,h=0;f>h;h+=3)t.fromArray(l,h,c),u&&(c=a.scaleToGeodeticSurface(c,c)),s=a.geodeticSurfaceNormal(c,s),t.multiplyByScalar(s,n,s),t.add(c,s,c),l[h]=c.x,l[h+1]=c.y,l[h+2]=c.z;return e},et.eliminateHoles=function(e,n,i){i=r(i,o.WGS84);for(var a=[],u=0;u<n.length;u++){for(var s=[],c=0;c<n[u].length;c++)s.push(t.clone(n[u][c]));a.push(s)}for(var l=e;a.length>0;)l=_(l,a,i);return l},et}),define("Core/WallGeometryLibrary",["./Cartographic","./defined","./DeveloperError","./EllipsoidTangentPlane","./Math","./PolygonPipeline","./PolylinePipeline","./WindingOrder"],function(e,t,n,r,i,a,o,u){"use strict";function s(e,t){return i.equalsEpsilon(e.latitude,t.latitude,i.EPSILON14)&&i.equalsEpsilon(e.longitude,t.longitude,i.EPSILON14)}function c(n,r,i,a){var o=r.length;if(2>o)return{positions:r};var u=t(a),c=t(i),l=new Array(o),d=new Array(o),m=new Array(o),p=r[0];l[0]=p;var y=n.cartesianToCartographic(p,f);c&&(y.height=i[0]),d[0]=y.height,m[0]=u?a[0]:0;for(var v=1,g=1;o>g;++g){var w=r[g],x=n.cartesianToCartographic(w,h);c&&(x.height=i[g]),s(y,x)?y.height<x.height&&(d[v-1]=x.height):(l[v]=w,d[v]=x.height,m[v]=u?a[g]:0,e.clone(x,y),++v)}return l.length=v,d.length=v,m.length=v,{positions:l,topHeights:d,bottomHeights:m}}var l={},f=new e,h=new e,d=new Array(2),m=new Array(2),p={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};return l.computePositions=function(e,t,n,s,l,f){var h=c(e,t,n,s);if(t=h.positions,n=h.topHeights,s=h.bottomHeights,t.length<2)return void 0;if(t.length>=3){var y=r.fromPoints(t,e),v=y.projectPointsOntoPlane(t);a.computeWindingOrder2D(v)===u.CLOCKWISE&&(t.reverse(),n.reverse(),s.reverse())}var g,w,x=t.length,E=i.chordLength(l,e.maximumRadius),S=p;if(S.minDistance=E,S.ellipsoid=e,f){var _,O=0;for(_=0;x-1>_;_++)O+=o.numberOfPoints(t[_],t[_+1],E)+1;g=new Float64Array(3*O),w=new Float64Array(3*O);var M=d,P=m;S.positions=M,S.height=P;var T=0;for(_=0;x-1>_;_++){M[0]=t[_],M[1]=t[_+1],P[0]=n[_],P[1]=n[_+1];var R=o.generateArc(S);g.set(R,T),P[0]=s[_],P[1]=s[_+1],w.set(o.generateArc(S),T),T+=R.length}}else S.positions=t,S.height=n,g=new Float64Array(o.generateArc(S)),S.height=s,w=new Float64Array(o.generateArc(S));return{bottomPositions:w,topPositions:g}},l}),define("Core/WallOutlineGeometry",["./BoundingSphere","./Cartesian3","./ComponentDatatype","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./Geometry","./GeometryAttribute","./GeometryAttributes","./IndexDatatype","./Math","./PrimitiveType","./WallGeometryLibrary"],function(e,t,n,r,i,a,o,u,s,c,l,f,h,d){"use strict";var m=new t,p=new t,y=function(e){e=r(e,r.EMPTY_OBJECT);var n=e.positions,a=e.maximumHeights,u=e.minimumHeights,s=r(e.granularity,f.RADIANS_PER_DEGREE),c=r(e.ellipsoid,o.WGS84);this._positions=n,this._minimumHeights=u,this._maximumHeights=a,this._granularity=s,this._ellipsoid=o.clone(c),this._workerName="createWallOutlineGeometry";var l=1+n.length*t.packedLength+2;i(u)&&(l+=u.length),i(a)&&(l+=a.length),this.packedLength=l+o.packedLength+1};y.pack=function(e,n,a){a=r(a,0);var u,s=e._positions,c=s.length;for(n[a++]=c,u=0;c>u;++u,a+=t.packedLength)t.pack(s[u],n,a);var l=e._minimumHeights;if(c=i(l)?l.length:0,n[a++]=c,i(l))for(u=0;c>u;++u)n[a++]=l[u];var f=e._maximumHeights;if(c=i(f)?f.length:0,n[a++]=c,i(f))for(u=0;c>u;++u)n[a++]=f[u];o.pack(e._ellipsoid,n,a),a+=o.packedLength,n[a]=e._granularity};var v=o.clone(o.UNIT_SPHERE),g={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:v,granularity:void 0};return y.unpack=function(e,n,a){n=r(n,0);var u,s=e[n++],c=new Array(s);for(u=0;s>u;++u,n+=t.packedLength)c[u]=t.unpack(e,n);s=e[n++];var l;if(s>0)for(l=new Array(s),u=0;s>u;++u)l[u]=e[n++];s=e[n++];var f;if(s>0)for(f=new Array(s),u=0;s>u;++u)f[u]=e[n++];var h=o.unpack(e,n,v);n+=o.packedLength;var d=e[n];return i(a)?(a._positions=c,a._minimumHeights=l,a._maximumHeights=f,a._ellipsoid=o.clone(h,a._ellipsoid),a._granularity=d,a):(g.positions=c,g.minimumHeights=l,g.maximumHeights=f,g.granularity=d,new y(g))},y.fromConstantHeights=function(e){e=r(e,r.EMPTY_OBJECT);var t,n,a=e.positions,o=e.minimumHeight,u=e.maximumHeight,s=i(o),c=i(u);if(s||c){var l=a.length;t=s?new Array(l):void 0,n=c?new Array(l):void 0;for(var f=0;l>f;++f)s&&(t[f]=o),c&&(n[f]=u)}var h={positions:a,maximumHeights:n,minimumHeights:t,ellipsoid:e.ellipsoid};return new y(h)},y.createGeometry=function(r){var a=r._positions,o=r._minimumHeights,y=r._maximumHeights,v=r._granularity,g=r._ellipsoid,w=d.computePositions(g,a,y,o,v,!1);if(!i(w))return void 0;var x=w.bottomPositions,E=w.topPositions,S=E.length,_=2*S,O=new Float64Array(_),M=0;S/=3;var P;for(P=0;S>P;++P){var T=3*P,R=t.fromArray(E,T,m),C=t.fromArray(x,T,p);O[M++]=C.x,O[M++]=C.y,O[M++]=C.z,O[M++]=R.x,O[M++]=R.y,O[M++]=R.z}var N=new c({position:new s({componentDatatype:n.DOUBLE,componentsPerAttribute:3,values:O})}),I=_/3;_=2*I-4+I;var z=l.createTypedArray(I,_),A=0;for(P=0;I-2>P;P+=2){var b=P,D=P+2,q=t.fromArray(O,3*b,m),U=t.fromArray(O,3*D,p);if(!t.equalsEpsilon(q,U,f.EPSILON6)){var L=P+1,W=P+3;z[A++]=L,z[A++]=b,z[A++]=L,z[A++]=W,z[A++]=b,z[A++]=D}}return z[A++]=I-2,z[A++]=I-1,new u({attributes:N,indices:z,primitiveType:h.LINES,boundingSphere:new e.fromVertices(O)})},y}),define("Workers/createWallOutlineGeometry",["../Core/defined","../Core/Ellipsoid","../Core/WallOutlineGeometry"],function(e,t,n){"use strict";function r(r,i){return e(i)&&(r=n.unpack(r,i)),r._ellipsoid=t.clone(r._ellipsoid),n.createGeometry(r)}return r})}(); \ No newline at end of file diff --git a/libs/Cesium/Workers/transferTypedArrayTest.js b/libs/Cesium/Workers/transferTypedArrayTest.js new file mode 100644 index 0000000000..d38c334a76 --- /dev/null +++ b/libs/Cesium/Workers/transferTypedArrayTest.js @@ -0,0 +1,23 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +"undefined"==typeof self&&(self={}),self.onmessage=function(e){"use strict";var s=e.data.array,a=self.webkitPostMessage||self.postMessage;try{a({array:s},[s.buffer])}catch(f){a({})}}; \ No newline at end of file diff --git a/libs/Cesium/Workers/upsampleQuantizedTerrainMesh.js b/libs/Cesium/Workers/upsampleQuantizedTerrainMesh.js new file mode 100644 index 0000000000..4a7c3530cf --- /dev/null +++ b/libs/Cesium/Workers/upsampleQuantizedTerrainMesh.js @@ -0,0 +1,229 @@ +/** + * Cesium - https://github.com/AnalyticalGraphicsInc/cesium + * + * Copyright 2011-2015 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. + */ +/** +@license +mersenne-twister.js - https://gist.github.com/banksean/300494 + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @license + when.js - https://github.com/cujojs/when + + MIT License (c) copyright B Cavalier & J Hann + + * A lightweight CommonJS Promises/A and when() implementation + * when is part of the cujo.js family of libraries (http://cujojs.com/) + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + * @version 1.7.1 + */ + +/** +@license +sprintf.js from the php.js project - https://github.com/kvz/phpjs +Directly from https://github.com/kvz/phpjs/blob/master/functions/strings/sprintf.js + +php.js is copyright 2012 Kevin van Zonneveld. + +Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld +(http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White +(http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas +Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev +Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, +Rafa? Kukawski (http://blog.kukawski.pl), lmeyrick +(https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, +Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. +L. Rodrigues (http://www.jsfromhell.com), Ash Searle +(http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, +Erkekjetter, Michael Grier, Rafa? Kukawski (http://kukawski.pl), Johnny +Mast (http://www.phpvrouwen.nl), T.Wild, d3x, +http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, +Rafa? Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo +(http://webdevhobo.blogspot.com/), marrtins, GeekFG +(http://geekfg.blogspot.com), Andrea Giammarchi +(http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), +gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg +Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser +(http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), +Marc Palau, Martin +(http://www.erlenwiese.de/), Breaking Par Consulting Inc +(http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), +Chris, Mirek Slugen, saulius, Alfonso Jimenez +(http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, +Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio +Ariede (http://caioariede.com), Robin, Kankrelune +(http://www.webfaktory.info/), Karol Kowalski, Imgen Tata +(http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, +Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, +David, Aman Gupta, Michael White, Public Domain +(http://www.json.org/json2.js), Steven Levithan +(http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, +Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), +Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon +(http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), +Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank +Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov +(http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford +(http://javascript.crockford.com), madipta, Slawomir Kaniecki, +ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner +(http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, +Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick +(https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, +Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson H?gfeldt +(http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, +josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren +Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon +(http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX +(http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, +Stoyan Kyosev (http://www.svest.org/), nord_ua, omid +(http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc +(http://yass.meetcweb.com), Peter-Paul Koch +(http://www.quirksmode.org/js/beat.html), Olivier Louvignes +(http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, +Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, +vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair +Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger +(http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner +B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong +(http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, +Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, +Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke +(http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, +Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke +Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, +sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, +Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya +(http://www.premasolutions.com/), Philippe Jausions +(http://pear.php.net/user/jausions), Aidan Lister +(http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, +strcmp, Taras Bogach, jpfle, Alexander Ermolaev +(http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, +dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha +(http://www.pedrotainha.com), James, Arnout Kazemier +(http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, +FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan +Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, +daniel airton wermann (http://wermann.com.br), Atli T¨®r, Maximusya, Ryan +W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage +(http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, +Billy, stensi, Cord, Manish, T.J. Leahy, Riddler +(http://www.frontierwebdev.com/), Rafa? Kukawski, FremyCompany, Matt +Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo +Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi +(http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, +Russell Walker (http://www.nbill.co.uk/), Jamie Beck +(http://www.terabit.ca/), setcookie, Michael, YUI Library: +http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at +http://hacks.bluesmoon.info/strftime/strftime.js, Ben +(http://benblume.co.uk/), DtTvB +(http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, +meo, incidence, Cagri Ekin, Amirouche, Amir Habibi +(http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), +Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, +Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben +Bryan + +Licensed under the MIT (MIT-LICENSE.txt) license. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * @license + * + * Grauw URI utilities + * + * See: http://hg.grauw.nl/grauw-lib/file/tip/src/uri.js + * + * @author Laurens Holst (http://www.grauw.nl/) + * + * Copyright 2012 Laurens Holst + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +!function(){define("Core/defined",[],function(){"use strict";var e=function(e){return void 0!==e};return e}),define("Core/freezeObject",["./defined"],function(e){"use strict";var t=Object.freeze;return e(t)||(t=function(e){return e}),t}),define("Core/defaultValue",["./freezeObject"],function(e){"use strict";var t=function(e,t){return void 0!==e?e:t};return t.EMPTY_OBJECT=e({}),t}),define("Core/DeveloperError",["./defined"],function(e){"use strict";var t=function(e){this.name="DeveloperError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t.throwInstantiationError=function(){throw new t("This function defines an interface and should not be called directly.")},t}),define("ThirdParty/mersenne-twister",[],function(){var e=function(e){void 0==e&&(e=(new Date).getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(e)};return e.prototype.init_genrand=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[1&e];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=2636928640&e<<7,e^=4022730752&e<<15,e^=e>>>18,e>>>0},e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},e}),define("Core/Math",["../ThirdParty/mersenne-twister","./defaultValue","./defined","./DeveloperError"],function(e,t){"use strict";var n={};n.EPSILON1=.1,n.EPSILON2=.01,n.EPSILON3=.001,n.EPSILON4=1e-4,n.EPSILON5=1e-5,n.EPSILON6=1e-6,n.EPSILON7=1e-7,n.EPSILON8=1e-8,n.EPSILON9=1e-9,n.EPSILON10=1e-10,n.EPSILON11=1e-11,n.EPSILON12=1e-12,n.EPSILON13=1e-13,n.EPSILON14=1e-14,n.EPSILON15=1e-15,n.EPSILON16=1e-16,n.EPSILON17=1e-17,n.EPSILON18=1e-18,n.EPSILON19=1e-19,n.EPSILON20=1e-20,n.GRAVITATIONALPARAMETER=3986004418e5,n.SOLAR_RADIUS=6955e5,n.LUNAR_RADIUS=1737400,n.SIXTY_FOUR_KILOBYTES=65536,n.sign=function(e){return e>0?1:0>e?-1:0},n.signNotZero=function(e){return 0>e?-1:1},n.toSNorm=function(e){return Math.round(255*(.5*n.clamp(e,-1,1)+.5))},n.fromSNorm=function(e){return 2*(n.clamp(e,0,255)/255)-1},n.sinh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t-n)},n.cosh=function(e){var t=Math.pow(Math.E,e),n=Math.pow(Math.E,-1*e);return.5*(t+n)},n.lerp=function(e,t,n){return(1-n)*e+n*t},n.PI=Math.PI,n.ONE_OVER_PI=1/Math.PI,n.PI_OVER_TWO=.5*Math.PI,n.PI_OVER_THREE=Math.PI/3,n.PI_OVER_FOUR=Math.PI/4,n.PI_OVER_SIX=Math.PI/6,n.THREE_PI_OVER_TWO=.5*3*Math.PI,n.TWO_PI=2*Math.PI,n.ONE_OVER_TWO_PI=1/(2*Math.PI),n.RADIANS_PER_DEGREE=Math.PI/180,n.DEGREES_PER_RADIAN=180/Math.PI,n.RADIANS_PER_ARCSECOND=n.RADIANS_PER_DEGREE/3600,n.toRadians=function(e){return e*n.RADIANS_PER_DEGREE},n.toDegrees=function(e){return e*n.DEGREES_PER_RADIAN},n.convertLongitudeRange=function(e){var t=n.TWO_PI,r=e-Math.floor(e/t)*t;return r<-Math.PI?r+t:r>=Math.PI?r-t:r},n.negativePiToPi=function(e){return n.zeroToTwoPi(e+n.PI)-n.PI},n.zeroToTwoPi=function(e){var t=n.mod(e,n.TWO_PI);return Math.abs(t)<n.EPSILON14&&Math.abs(e)>n.EPSILON14?n.TWO_PI:t},n.mod=function(e,t){return(e%t+t)%t},n.equalsEpsilon=function(e,n,r,i){i=t(i,r);var a=Math.abs(e-n);return i>=a||a<=r*Math.max(Math.abs(e),Math.abs(n))};var r=[1];n.factorial=function(e){var t=r.length;if(e>=t)for(var n=r[t-1],i=t;e>=i;i++)r.push(n*i);return r[e]},n.incrementWrap=function(e,n,r){return r=t(r,0),++e,e>n&&(e=r),e},n.isPowerOfTwo=function(e){return 0!==e&&0===(e&e-1)},n.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e},n.clamp=function(e,t,n){return t>e?t:e>n?n:e};var i=new e;return n.setRandomNumberSeed=function(t){i=new e(t)},n.nextRandomNumber=function(){return i.random()},n.acosClamped=function(e){return Math.acos(n.clamp(e,-1,1))},n.asinClamped=function(e){return Math.asin(n.clamp(e,-1,1))},n.chordLength=function(e,t){return 2*t*Math.sin(.5*e)},n}),define("Core/Cartesian2",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n){this.x=e(t,0),this.y=e(n,0)};a.fromElements=function(e,n,r){return t(r)?(r.x=e,r.y=n,r):new a(e,n)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n):new a(e.x,e.y):void 0},a.fromCartesian3=a.clone,a.fromCartesian4=a.clone,a.packedLength=2,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r]=t.y},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y)},a.minimumComponent=function(e){return Math.min(e.x,e.y)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(e,t){return a.normalize(e,s),a.normalize(t,c),i.acosClamped(a.dot(s,c))};var l=new a;return a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,l);return a.abs(n,n),t=n.x<=n.y?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Y,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)},a.ZERO=r(new a(0,0)),a.UNIT_X=r(new a(1,0)),a.UNIT_Y=r(new a(0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+")"},a}),define("Core/Cartesian3",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0)};a.fromSpherical=function(n,r){t(r)||(r=new a);var i=n.clock,o=n.cone,u=e(n.magnitude,1),s=u*Math.sin(o);return r.x=s*Math.cos(i),r.y=s*Math.sin(i),r.z=u*Math.cos(o),r},a.fromElements=function(e,n,r,i){return t(i)?(i.x=e,i.y=n,i.z=r,i):new a(e,n,r)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n):new a(e.x,e.y,e.z):void 0},a.fromCartesian4=a.clone,a.packedLength=3,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r]=t.z},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a,c=new a;a.angleBetween=function(e,t){a.normalize(e,s),a.normalize(t,c);var n=a.dot(s,c),r=a.magnitude(a.cross(s,c,s));return Math.atan2(r,n)};var l=new a;a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,l);return a.abs(n,n),t=n.x<=n.y?n.x<=n.z?a.clone(a.UNIT_X,t):a.clone(a.UNIT_Z,t):n.y<=n.z?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_Z,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)&&i.equalsEpsilon(e.z,n.z,r,a)},a.cross=function(e,t,n){var r=e.x,i=e.y,a=e.z,o=t.x,u=t.y,s=t.z,c=i*s-a*u,l=a*o-r*s,f=r*u-i*o;return n.x=c,n.y=l,n.z=f,n},a.fromDegrees=function(e,t,n,r,o){var u=i.toRadians(e),s=i.toRadians(t);return a.fromRadians(u,s,n,r,o)};var f=new a,h=new a,d=new a(40680631590769,40680631590769,40408299984661.445);return a.fromRadians=function(n,r,i,o,u){i=e(i,0);var s=t(o)?o.radiiSquared:d,c=Math.cos(r);f.x=c*Math.cos(n),f.y=c*Math.sin(n),f.z=Math.sin(r),f=a.normalize(f,f),a.multiplyComponents(s,f,h);var l=Math.sqrt(a.dot(f,h));return h=a.divideByScalar(h,l,h),f=a.multiplyByScalar(f,i,f),t(u)||(u=new a),a.add(h,f,u)},a.fromDegreesArray=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=i.toRadians(e[o]);return a.fromRadiansArray(r,t,n)},a.fromRadiansArray=function(e,n,r){var i=e.length;t(r)?r.length=i/2:r=new Array(i/2);for(var o=0;i>o;o+=2){var u=e[o],s=e[o+1];r[o/2]=a.fromRadians(u,s,0,n,r[o/2])}return r},a.fromDegreesArrayHeights=function(e,t,n){for(var r=new Array(e.length),o=0;o<e.length;o+=3)r[o]=i.toRadians(e[o]),r[o+1]=i.toRadians(e[o+1]),r[o+2]=e[o+2];return a.fromRadiansArrayHeights(r,t,n)},a.fromRadiansArrayHeights=function(e,n,r){var i=e.length;t(r)?r.length=i/3:r=new Array(i/3);for(var o=0;i>o;o+=3){var u=e[o],s=e[o+1],c=e[o+2];r[o/3]=a.fromRadians(u,s,c,n,r[o/3])}return r},a.ZERO=r(new a(0,0,0)),a.UNIT_X=r(new a(1,0,0)),a.UNIT_Y=r(new a(0,1,0)),a.UNIT_Z=r(new a(0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},a}),define("Core/AttributeCompression",["./Cartesian2","./Cartesian3","./defined","./DeveloperError","./Math"],function(e,t,n,r,i){"use strict";var a={};a.octEncode=function(e,t){if(t.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),t.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){var n=t.x,r=t.y;t.x=(1-Math.abs(r))*i.signNotZero(n),t.y=(1-Math.abs(n))*i.signNotZero(r)}return t.x=i.toSNorm(t.x),t.y=i.toSNorm(t.y),t},a.octDecode=function(e,n,r){if(r.x=i.fromSNorm(e),r.y=i.fromSNorm(n),r.z=1-(Math.abs(r.x)+Math.abs(r.y)),r.z<0){var a=r.x;r.x=(1-Math.abs(r.y))*i.signNotZero(a),r.y=(1-Math.abs(a))*i.signNotZero(r.y)}return t.normalize(r,r)},a.octPackFloat=function(e){return 256*e.x+e.y};var o=new e;return a.octEncodeFloat=function(e){return a.octEncode(e,o),a.octPackFloat(o)},a.octDecodeFloat=function(e,t){var n=e/256,r=Math.floor(n),i=256*(n-r);return a.octDecode(r,i,t)},a.octPack=function(e,t,n,r){var i=a.octEncodeFloat(e),u=a.octEncodeFloat(t),s=a.octEncode(n,o);return r.x=65536*s.x+i,r.y=65536*s.y+u,r},a.octUnpack=function(e,t,n,r){var i=e.x/65536,o=Math.floor(i),u=65536*(i-o);i=e.y/65536;var s=Math.floor(i),c=65536*(i-s);a.octDecodeFloat(u,t),a.octDecodeFloat(c,n),a.octDecode(o,s,r)},a.compressTextureCoordinates=function(e){var t=1===e.x?4095:0|4096*e.x,n=1===e.y?4095:0|4096*e.y;return 4096*t+n},a.decompressTextureCoordinates=function(e,t){var n=e/4096;return t.x=Math.floor(n)/4096,t.y=n-Math.floor(n),t},a}),define("Core/Cartographic",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r){this.longitude=e(t,0),this.latitude=e(n,0),this.height=e(r,0)};return a.fromRadians=function(n,r,i,o){return i=e(i,0),t(o)?(o.longitude=n,o.latitude=r,o.height=i,o):new a(n,r,i)},a.fromDegrees=function(e,t,n,r){return e=i.toRadians(e),t=i.toRadians(t),a.fromRadians(e,t,n,r)},a.clone=function(e,n){return t(e)?t(n)?(n.longitude=e.longitude,n.latitude=e.latitude,n.height=e.height,n):new a(e.longitude,e.latitude,e.height):void 0},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.longitude===n.longitude&&e.latitude===n.latitude&&e.height===n.height},a.equalsEpsilon=function(e,n,r){return e===n||t(e)&&t(n)&&Math.abs(e.longitude-n.longitude)<=r&&Math.abs(e.latitude-n.latitude)<=r&&Math.abs(e.height-n.height)<=r},a.ZERO=r(new a(0,0,0)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t){return a.equalsEpsilon(this,e,t)},a.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"},a}),define("Core/deprecationWarning",["./defined","./DeveloperError"],function(e){"use strict";var t={},n=function(n,r){e(t[n])||(t[n]=!0,console.log(r))};return n}),define("Core/defineProperties",["./defined"],function(e){"use strict";var t=function(){try{return"x"in Object.defineProperty({},"x",{})}catch(e){return!1}}(),n=Object.defineProperties;return t&&e(n)||(n=function(e){return e}),n}),define("Core/Ellipsoid",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i,a,o,u){"use strict";function s(t,r,i,a){r=n(r,0),i=n(i,0),a=n(a,0),t._radii=new e(r,i,a),t._radiiSquared=new e(r*r,i*i,a*a),t._radiiToTheFourth=new e(r*r*r*r,i*i*i*i,a*a*a*a),t._oneOverRadii=new e(0===r?0:1/r,0===i?0:1/i,0===a?0:1/a),t._oneOverRadiiSquared=new e(0===r?0:1/(r*r),0===i?0:1/(i*i),0===a?0:1/(a*a)),t._minimumRadius=Math.min(r,i,a),t._maximumRadius=Math.max(r,i,a),t._centerToleranceSquared=u.EPSILON1}var c=function(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,s(this,e,t,n)};i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),c.clone=function(t,n){if(!r(t))return void 0;var i=t._radii;return r(n)?(e.clone(i,n._radii),e.clone(t._radiiSquared,n._radiiSquared),e.clone(t._radiiToTheFourth,n._radiiToTheFourth),e.clone(t._oneOverRadii,n._oneOverRadii),e.clone(t._oneOverRadiiSquared,n._oneOverRadiiSquared),n._minimumRadius=t._minimumRadius,n._maximumRadius=t._maximumRadius,n._centerToleranceSquared=t._centerToleranceSquared,n):new c(i.x,i.y,i.z)},c.fromCartesian3=function(e,t){return r(t)||(t=new c),r(e)?(s(t,e.x,e.y,e.z),t):t},c.WGS84=o(new c(6378137,6378137,6356752.314245179)),c.UNIT_SPHERE=o(new c(1,1,1)),c.MOON=o(new c(u.LUNAR_RADIUS,u.LUNAR_RADIUS,u.LUNAR_RADIUS)),c.prototype.clone=function(e){return c.clone(this,e)},c.packedLength=e.packedLength,c.pack=function(t,r,i){i=n(i,0),e.pack(t._radii,r,i)},c.unpack=function(t,r,i){r=n(r,0);var a=e.unpack(t,r);return c.fromCartesian3(a,i)},c.prototype.geocentricSurfaceNormal=e.normalize,c.prototype.geodeticSurfaceNormalCartographic=function(t,n){var i=t.longitude,a=t.latitude,o=Math.cos(a),u=o*Math.cos(i),s=o*Math.sin(i),c=Math.sin(a);return r(n)||(n=new e),n.x=u,n.y=s,n.z=c,e.normalize(n,n)},c.prototype.geodeticSurfaceNormal=function(t,n){return r(n)||(n=new e),n=e.multiplyComponents(t,this._oneOverRadiiSquared,n),e.normalize(n,n)};var l=new e,f=new e;c.prototype.cartographicToCartesian=function(t,n){var i=l,a=f;this.geodeticSurfaceNormalCartographic(t,i),e.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(e.dot(i,a));return e.divideByScalar(a,o,a),e.multiplyByScalar(i,t.height,i),r(n)||(n=new e),e.add(a,i,n)},c.prototype.cartographicArrayToCartesianArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var i=0;n>i;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var h=new e,d=new e,m=new e;c.prototype.cartesianToCartographic=function(n,i){var a=this.scaleToGeodeticSurface(n,d);if(!r(a))return void 0;var o=this.geodeticSurfaceNormal(a,h),s=e.subtract(n,a,m),c=Math.atan2(o.y,o.x),l=Math.asin(o.z),f=u.sign(e.dot(s,n))*e.magnitude(s);return r(i)?(i.longitude=c,i.latitude=l,i.height=f,i):new t(c,l,f)},c.prototype.cartesianArrayToCartographicArray=function(e,t){var n=e.length;r(t)?t.length=n:t=new Array(n);for(var i=0;n>i;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};var p=new e,y=new e;return c.prototype.scaleToGeodeticSurface=function(t,n){var i=t.x,a=t.y,o=t.z,s=this._oneOverRadii,c=s.x,l=s.y,f=s.z,h=i*i*c*c,d=a*a*l*l,m=o*o*f*f,v=h+d+m,g=Math.sqrt(1/v),w=e.multiplyByScalar(t,g,p);if(v<this._centerToleranceSquared)return isFinite(g)?e.clone(w,n):void 0;var x=this._oneOverRadiiSquared,S=x.x,E=x.y,M=x.z,O=y;O.x=2*w.x*S,O.y=2*w.y*E,O.z=2*w.z*M;var _,P,C,z,R,I,N,T,b,A,D,q=(1-g)*e.magnitude(t)/(.5*e.magnitude(O)),U=0;do{q-=U,C=1/(1+q*S),z=1/(1+q*E),R=1/(1+q*M),I=C*C,N=z*z,T=R*R,b=I*C,A=N*z,D=T*R,_=h*I+d*N+m*T-1,P=h*b*S+d*A*E+m*D*M;var L=-2*P;U=_/L}while(Math.abs(_)>u.EPSILON12);return r(n)?(n.x=i*C,n.y=a*z,n.z=o*R,n):new e(i*C,a*z,o*R)},c.prototype.scaleToGeocentricSurface=function(t,n){r(n)||(n=new e);var i=t.x,a=t.y,o=t.z,u=this._oneOverRadiiSquared,s=1/Math.sqrt(i*i*u.x+a*a*u.y+o*o*u.z);return e.multiplyByScalar(t,s,n)},c.prototype.transformPositionToScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._oneOverRadii,n)},c.prototype.transformPositionFromScaledSpace=function(t,n){return r(n)||(n=new e),e.multiplyComponents(t,this._radii,n)},c.prototype.equals=function(t){return this===t||r(t)&&e.equals(this._radii,t._radii)},c.prototype.toString=function(){return this._radii.toString()},c}),define("Core/GeographicProjection",["./Cartesian3","./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid"],function(e,t,n,r,i,a,o){"use strict";var u=function(e){this._ellipsoid=n(e,o.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis};return i(u.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}}),u.prototype.project=function(t,n){var i=this._semimajorAxis,a=t.longitude*i,o=t.latitude*i,u=t.height;return r(n)?(n.x=a,n.y=o,n.z=u,n):new e(a,o,u)},u.prototype.unproject=function(e,n){var i=this._oneOverSemimajorAxis,a=e.x*i,o=e.y*i,u=e.z;return r(n)?(n.longitude=a,n.latitude=o,n.height=u,n):new t(a,o,u)},u}),define("Core/Intersect",["./freezeObject"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)}),define("Core/Interval",["./defaultValue"],function(e){"use strict";var t=function(t,n){this.start=e(t,0),this.stop=e(n,0)};return t}),define("Core/Cartesian4",["./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i){"use strict";var a=function(t,n,r,i){this.x=e(t,0),this.y=e(n,0),this.z=e(r,0),this.w=e(i,0)};a.fromElements=function(e,n,r,i,o){return t(o)?(o.x=e,o.y=n,o.z=r,o.w=i,o):new a(e,n,r,i)},a.fromColor=function(e,n){return t(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new a(e.red,e.green,e.blue,e.alpha)},a.clone=function(e,n){return t(e)?t(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new a(e.x,e.y,e.z,e.w):void 0},a.packedLength=4,a.pack=function(t,n,r){r=e(r,0),n[r++]=t.x,n[r++]=t.y,n[r++]=t.z,n[r]=t.w},a.unpack=function(n,r,i){return r=e(r,0),t(i)||(i=new a),i.x=n[r++],i.y=n[r++],i.z=n[r++],i.w=n[r],i},a.fromArray=a.unpack,a.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)},a.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)},a.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n},a.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n},a.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},a.magnitude=function(e){return Math.sqrt(a.magnitudeSquared(e))};var o=new a;a.distance=function(e,t){return a.subtract(e,t,o),a.magnitude(o)},a.distanceSquared=function(e,t){return a.subtract(e,t,o),a.magnitudeSquared(o)},a.normalize=function(e,t){var n=a.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t},a.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},a.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n},a.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},a.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},a.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},a.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},a.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},a.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var u=new a;a.lerp=function(e,t,n,r){return a.multiplyByScalar(t,n,u),r=a.multiplyByScalar(e,1-n,r),a.add(u,r,r)};var s=new a;return a.mostOrthogonalAxis=function(e,t){var n=a.normalize(e,s);return a.abs(n,n),t=n.x<=n.y?n.x<=n.z?n.x<=n.w?a.clone(a.UNIT_X,t):a.clone(a.UNIT_W,t):n.z<=n.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t):n.y<=n.z?n.y<=n.w?a.clone(a.UNIT_Y,t):a.clone(a.UNIT_W,t):n.z<=n.w?a.clone(a.UNIT_Z,t):a.clone(a.UNIT_W,t)},a.equals=function(e,n){return e===n||t(e)&&t(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w},a.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]},a.equalsEpsilon=function(e,n,r,a){return e===n||t(e)&&t(n)&&i.equalsEpsilon(e.x,n.x,r,a)&&i.equalsEpsilon(e.y,n.y,r,a)&&i.equalsEpsilon(e.z,n.z,r,a)&&i.equalsEpsilon(e.w,n.w,r,a)},a.ZERO=r(new a(0,0,0,0)),a.UNIT_X=r(new a(1,0,0,0)),a.UNIT_Y=r(new a(0,1,0,0)),a.UNIT_Z=r(new a(0,0,1,0)),a.UNIT_W=r(new a(0,0,0,1)),a.prototype.clone=function(e){return a.clone(this,e)},a.prototype.equals=function(e){return a.equals(this,e)},a.prototype.equalsEpsilon=function(e,t,n){return a.equalsEpsilon(this,e,t,n)},a.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},a}),define("Core/Matrix3",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r,i,a){"use strict";function o(e){for(var t=0,n=0;9>n;++n){var r=e[n];t+=r*r}return Math.sqrt(t)}function u(e){for(var t=0,n=0;3>n;++n){var r=e[c.getElementIndex(d[n],h[n])];t+=2*r*r}return Math.sqrt(t)}function s(e,t){for(var n=a.EPSILON15,r=0,i=1,o=0;3>o;++o){var u=Math.abs(e[c.getElementIndex(d[o],h[o])]);u>r&&(i=o,r=u)}var s=1,l=0,f=h[i],m=d[i];if(Math.abs(e[c.getElementIndex(m,f)])>n){var p,y=e[c.getElementIndex(m,m)],v=e[c.getElementIndex(f,f)],g=e[c.getElementIndex(m,f)],w=(y-v)/2/g;p=0>w?-1/(-w+Math.sqrt(1+w*w)):1/(w+Math.sqrt(1+w*w)),s=1/Math.sqrt(1+p*p),l=p*s}return t=c.clone(c.IDENTITY,t),t[c.getElementIndex(f,f)]=t[c.getElementIndex(m,m)]=s,t[c.getElementIndex(m,f)]=l,t[c.getElementIndex(f,m)]=-l,t}var c=function(e,n,r,i,a,o,u,s,c){this[0]=t(e,0),this[1]=t(i,0),this[2]=t(u,0),this[3]=t(n,0),this[4]=t(a,0),this[5]=t(s,0),this[6]=t(r,0),this[7]=t(o,0),this[8]=t(c,0)};c.packedLength=9,c.pack=function(e,n,r){r=t(r,0),n[r++]=e[0],n[r++]=e[1],n[r++]=e[2],n[r++]=e[3],n[r++]=e[4],n[r++]=e[5],n[r++]=e[6],n[r++]=e[7],n[r++]=e[8]},c.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new c),i[0]=e[r++],i[1]=e[r++],i[2]=e[r++],i[3]=e[r++],i[4]=e[r++],i[5]=e[r++],i[6]=e[r++],i[7]=e[r++],i[8]=e[r++],i},c.clone=function(e,t){return n(e)?n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new c(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]):void 0},c.fromArray=function(e,r,i){return r=t(r,0),n(i)||(i=new c),i[0]=e[r],i[1]=e[r+1],i[2]=e[r+2],i[3]=e[r+3],i[4]=e[r+4],i[5]=e[r+5],i[6]=e[r+6],i[7]=e[r+7],i[8]=e[r+8],i},c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},c.fromQuaternion=function(e,t){var r=e.x*e.x,i=e.x*e.y,a=e.x*e.z,o=e.x*e.w,u=e.y*e.y,s=e.y*e.z,l=e.y*e.w,f=e.z*e.z,h=e.z*e.w,d=e.w*e.w,m=r-u-f+d,p=2*(i-h),y=2*(a+l),v=2*(i+h),g=-r+u-f+d,w=2*(s-o),x=2*(a-l),S=2*(s+o),E=-r-u+f+d;return n(t)?(t[0]=m,t[1]=v,t[2]=x,t[3]=p,t[4]=g,t[5]=S,t[6]=y,t[7]=w,t[8]=E,t):new c(m,p,y,v,g,w,x,S,E)},c.fromScale=function(e,t){return n(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new c(e.x,0,0,0,e.y,0,0,0,e.z)},c.fromUniformScale=function(e,t){return n(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new c(e,0,0,0,e,0,0,0,e)},c.fromCrossProduct=function(e,t){return n(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new c(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)},c.fromRotationX=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=r,t[5]=i,t[6]=0,t[7]=-i,t[8]=r,t):new c(1,0,0,0,r,-i,0,i,r)},c.fromRotationY=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=r,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=r,t):new c(r,0,i,0,1,0,-i,0,r)},c.fromRotationZ=function(e,t){var r=Math.cos(e),i=Math.sin(e);return n(t)?(t[0]=r,t[1]=i,t[2]=0,t[3]=-i,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new c(r,-i,0,i,r,0,0,0,1)},c.toArray=function(e,t){return n(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},c.getElementIndex=function(e,t){return 3*e+t},c.getColumn=function(e,t,n){var r=3*t,i=e[r],a=e[r+1],o=e[r+2];return n.x=i,n.y=a,n.z=o,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var i=3*t;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r},c.getRow=function(e,t,n){var r=e[t],i=e[t+3],a=e[t+6];return n.x=r,n.y=i,n.z=a,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+3]=n.y,r[t+6]=n.z,r};var l=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],l)),n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],l)),n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],l)),n};var f=new e;c.getMaximumScale=function(t){return c.getScale(t,f),e.maximumComponent(f)},c.multiply=function(e,t,n){var r=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],i=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],a=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],o=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],u=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],s=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],c=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],l=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],f=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=r,n[1]=i,n[2]=a,n[3]=o,n[4]=u,n[5]=s,n[6]=c,n[7]=l,n[8]=f,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n},c.multiplyByVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[3]*i+e[6]*a,u=e[1]*r+e[4]*i+e[7]*a,s=e[2]*r+e[5]*i+e[8]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n},c.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t},c.transpose=function(e,t){var n=e[0],r=e[3],i=e[6],a=e[1],o=e[4],u=e[7],s=e[2],c=e[5],l=e[8];return t[0]=n,t[1]=r,t[2]=i,t[3]=a,t[4]=o,t[5]=u,t[6]=s,t[7]=c,t[8]=l,t};var h=[1,0,0],d=[2,2,1],m=new c,p=new c;return c.computeEigenDecomposition=function(e,t){var r=a.EPSILON20,i=10,l=0,f=0;n(t)||(t={});for(var h=t.unitary=c.clone(c.IDENTITY,t.unitary),d=t.diagonal=c.clone(e,t.diagonal),y=r*o(d);i>f&&u(d)>y;)s(d,m),c.transpose(m,p),c.multiply(d,m,d),c.multiply(p,d,d),c.multiply(h,m,h),++l>2&&(++f,l=0);return t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t},c.determinant=function(e){var t=e[0],n=e[3],r=e[6],i=e[1],a=e[4],o=e[7],u=e[2],s=e[5],c=e[8];return t*(a*c-s*o)+i*(s*r-n*c)+u*(n*o-a*r)},c.inverse=function(e,t){var n=e[0],i=e[1],o=e[2],u=e[3],s=e[4],l=e[5],f=e[6],h=e[7],d=e[8],m=c.determinant(e);if(Math.abs(m)<=a.EPSILON15)throw new r("matrix is not invertible");t[0]=s*d-h*l,t[1]=h*o-i*d,t[2]=i*l-s*o,t[3]=f*l-u*d,t[4]=n*d-f*o,t[5]=u*o-n*l,t[6]=u*h-f*s,t[7]=f*i-n*h,t[8]=n*s-u*i;var p=1/m;return c.multiplyByScalar(t,p,t)},c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},c.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r},c.IDENTITY=i(new c(1,0,0,0,1,0,0,0,1)),c.ZERO=i(new c(0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN1ROW0=3,c.COLUMN1ROW1=4,c.COLUMN1ROW2=5,c.COLUMN2ROW0=6,c.COLUMN2ROW1=7,c.COLUMN2ROW2=8,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"},c}),define("Core/RuntimeError",["./defined"],function(e){"use strict";var t=function(e){this.name="RuntimeError",this.message=e;var t;try{throw new Error}catch(n){t=n.stack +}this.stack=t};return t.prototype.toString=function(){var t=this.name+": "+this.message;return e(this.stack)&&(t+="\n"+this.stack.toString()),t},t}),define("Core/Matrix4",["./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./freezeObject","./Math","./Matrix3","./RuntimeError"],function(e,t,n,r,i,a,o,u,s){"use strict";var c=function(e,t,r,i,a,o,u,s,c,l,f,h,d,m,p,y){this[0]=n(e,0),this[1]=n(a,0),this[2]=n(c,0),this[3]=n(d,0),this[4]=n(t,0),this[5]=n(o,0),this[6]=n(l,0),this[7]=n(m,0),this[8]=n(r,0),this[9]=n(u,0),this[10]=n(f,0),this[11]=n(p,0),this[12]=n(i,0),this[13]=n(s,0),this[14]=n(h,0),this[15]=n(y,0)};c.packedLength=16,c.pack=function(e,t,r){r=n(r,0),t[r++]=e[0],t[r++]=e[1],t[r++]=e[2],t[r++]=e[3],t[r++]=e[4],t[r++]=e[5],t[r++]=e[6],t[r++]=e[7],t[r++]=e[8],t[r++]=e[9],t[r++]=e[10],t[r++]=e[11],t[r++]=e[12],t[r++]=e[13],t[r++]=e[14],t[r]=e[15]},c.unpack=function(e,t,i){return t=n(t,0),r(i)||(i=new c),i[0]=e[t++],i[1]=e[t++],i[2]=e[t++],i[3]=e[t++],i[4]=e[t++],i[5]=e[t++],i[6]=e[t++],i[7]=e[t++],i[8]=e[t++],i[9]=e[t++],i[10]=e[t++],i[11]=e[t++],i[12]=e[t++],i[13]=e[t++],i[14]=e[t++],i[15]=e[t],i},c.clone=function(e,t){return r(e)?r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]):void 0},c.fromArray=c.unpack,c.fromColumnMajorArray=function(e,t){return c.clone(e,t)},c.fromRowMajorArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])},c.fromRotationTranslation=function(t,i,a){return i=n(i,e.ZERO),r(a)?(a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=0,a[4]=t[3],a[5]=t[4],a[6]=t[5],a[7]=0,a[8]=t[6],a[9]=t[7],a[10]=t[8],a[11]=0,a[12]=i.x,a[13]=i.y,a[14]=i.z,a[15]=1,a):new c(t[0],t[3],t[6],i.x,t[1],t[4],t[7],i.y,t[2],t[5],t[8],i.z,0,0,0,1)},c.fromTranslationQuaternionRotationScale=function(e,t,n,i){r(i)||(i=new c);var a=n.x,o=n.y,u=n.z,s=t.x*t.x,l=t.x*t.y,f=t.x*t.z,h=t.x*t.w,d=t.y*t.y,m=t.y*t.z,p=t.y*t.w,y=t.z*t.z,v=t.z*t.w,g=t.w*t.w,w=s-d-y+g,x=2*(l-v),S=2*(f+p),E=2*(l+v),M=-s+d-y+g,O=2*(m-h),_=2*(f-p),P=2*(m+h),C=-s-d+y+g;return i[0]=w*a,i[1]=E*a,i[2]=_*a,i[3]=0,i[4]=x*o,i[5]=M*o,i[6]=P*o,i[7]=0,i[8]=S*u,i[9]=O*u,i[10]=C*u,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i},c.fromTranslation=function(e,t){return c.fromRotationTranslation(u.IDENTITY,e,t)},c.fromScale=function(e,t){return r(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)},c.fromUniformScale=function(e,t){return r(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};var l=new e,f=new e,h=new e;c.fromCamera=function(t,n){var i=t.eye,a=t.target,o=t.up;e.normalize(e.subtract(a,i,l),l),e.normalize(e.cross(l,o,f),f),e.normalize(e.cross(f,l,h),h);var u=f.x,s=f.y,d=f.z,m=l.x,p=l.y,y=l.z,v=h.x,g=h.y,w=h.z,x=i.x,S=i.y,E=i.z,M=u*-x+s*-S+d*-E,O=v*-x+g*-S+w*-E,_=m*x+p*S+y*E;return r(n)?(n[0]=u,n[1]=v,n[2]=-m,n[3]=0,n[4]=s,n[5]=g,n[6]=-p,n[7]=0,n[8]=d,n[9]=w,n[10]=-y,n[11]=0,n[12]=M,n[13]=O,n[14]=_,n[15]=1,n):new c(u,s,d,M,v,g,w,O,-m,-p,-y,_,0,0,0,1)},c.computePerspectiveFieldOfView=function(e,t,n,r,i){var a=Math.tan(.5*e),o=1/a,u=o/t,s=(r+n)/(n-r),c=2*r*n/(n-r);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=s,i[11]=-1,i[12]=0,i[13]=0,i[14]=c,i[15]=0,i},c.computeOrthographicOffCenter=function(e,t,n,r,i,a,o){var u=1/(t-e),s=1/(r-n),c=1/(a-i),l=-(t+e)*u,f=-(r+n)*s,h=-(a+i)*c;return u*=2,s*=2,c*=-2,o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=0,o[12]=l,o[13]=f,o[14]=h,o[15]=1,o},c.computePerspectiveOffCenter=function(e,t,n,r,i,a,o){var u=2*i/(t-e),s=2*i/(r-n),c=(t+e)/(t-e),l=(r+n)/(r-n),f=-(a+i)/(a-i),h=-1,d=-2*a*i/(a-i);return o[0]=u,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=c,o[9]=l,o[10]=f,o[11]=h,o[12]=0,o[13]=0,o[14]=d,o[15]=0,o},c.computeInfinitePerspectiveOffCenter=function(e,t,n,r,i,a){var o=2*i/(t-e),u=2*i/(r-n),s=(t+e)/(t-e),c=(r+n)/(r-n),l=-1,f=-1,h=-2*i;return a[0]=o,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=u,a[6]=0,a[7]=0,a[8]=s,a[9]=c,a[10]=l,a[11]=f,a[12]=0,a[13]=0,a[14]=h,a[15]=0,a},c.computeViewportTransformation=function(e,t,r,i){e=n(e,n.EMPTY_OBJECT);var a=n(e.x,0),o=n(e.y,0),u=n(e.width,0),s=n(e.height,0);t=n(t,0),r=n(r,1);var c=.5*u,l=.5*s,f=.5*(r-t),h=c,d=l,m=f,p=a+c,y=o+l,v=t+f,g=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=m,i[11]=0,i[12]=p,i[13]=y,i[14]=v,i[15]=g,i},c.toArray=function(e,t){return r(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},c.getElementIndex=function(e,t){return 4*e+t},c.getColumn=function(e,t,n){var r=4*t,i=e[r],a=e[r+1],o=e[r+2],u=e[r+3];return n.x=i,n.y=a,n.z=o,n.w=u,n},c.setColumn=function(e,t,n,r){r=c.clone(e,r);var i=4*t;return r[i]=n.x,r[i+1]=n.y,r[i+2]=n.z,r[i+3]=n.w,r},c.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n},c.getRow=function(e,t,n){var r=e[t],i=e[t+4],a=e[t+8],o=e[t+12];return n.x=r,n.y=i,n.z=a,n.w=o,n},c.setRow=function(e,t,n,r){return r=c.clone(e,r),r[t]=n.x,r[t+4]=n.y,r[t+8]=n.z,r[t+12]=n.w,r};var d=new e;c.getScale=function(t,n){return n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],d)),n.y=e.magnitude(e.fromElements(t[4],t[5],t[6],d)),n.z=e.magnitude(e.fromElements(t[8],t[9],t[10],d)),n};var m=new e;c.getMaximumScale=function(t){return c.getScale(t,m),e.maximumComponent(m)},c.multiply=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[3],u=e[4],s=e[5],c=e[6],l=e[7],f=e[8],h=e[9],d=e[10],m=e[11],p=e[12],y=e[13],v=e[14],g=e[15],w=t[0],x=t[1],S=t[2],E=t[3],M=t[4],O=t[5],_=t[6],P=t[7],C=t[8],z=t[9],R=t[10],I=t[11],N=t[12],T=t[13],b=t[14],A=t[15],D=r*w+u*x+f*S+p*E,q=i*w+s*x+h*S+y*E,U=a*w+c*x+d*S+v*E,L=o*w+l*x+m*S+g*E,B=r*M+u*O+f*_+p*P,W=i*M+s*O+h*_+y*P,F=a*M+c*O+d*_+v*P,k=o*M+l*O+m*_+g*P,V=r*C+u*z+f*R+p*I,j=i*C+s*z+h*R+y*I,Y=a*C+c*z+d*R+v*I,Z=o*C+l*z+m*R+g*I,X=r*N+u*T+f*b+p*A,G=i*N+s*T+h*b+y*A,H=a*N+c*T+d*b+v*A,J=o*N+l*T+m*b+g*A;return n[0]=D,n[1]=q,n[2]=U,n[3]=L,n[4]=B,n[5]=W,n[6]=F,n[7]=k,n[8]=V,n[9]=j,n[10]=Y,n[11]=Z,n[12]=X,n[13]=G,n[14]=H,n[15]=J,n},c.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},c.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},c.multiplyTransformation=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=e[12],d=e[13],m=e[14],p=t[0],y=t[1],v=t[2],g=t[4],w=t[5],x=t[6],S=t[8],E=t[9],M=t[10],O=t[12],_=t[13],P=t[14],C=r*p+o*y+c*v,z=i*p+u*y+l*v,R=a*p+s*y+f*v,I=r*g+o*w+c*x,N=i*g+u*w+l*x,T=a*g+s*w+f*x,b=r*S+o*E+c*M,A=i*S+u*E+l*M,D=a*S+s*E+f*M,q=r*O+o*_+c*P+h,U=i*O+u*_+l*P+d,L=a*O+s*_+f*P+m;return n[0]=C,n[1]=z,n[2]=R,n[3]=0,n[4]=I,n[5]=N,n[6]=T,n[7]=0,n[8]=b,n[9]=A,n[10]=D,n[11]=0,n[12]=q,n[13]=U,n[14]=L,n[15]=1,n},c.multiplyByMatrix3=function(e,t,n){var r=e[0],i=e[1],a=e[2],o=e[4],u=e[5],s=e[6],c=e[8],l=e[9],f=e[10],h=t[0],d=t[1],m=t[2],p=t[3],y=t[4],v=t[5],g=t[6],w=t[7],x=t[8],S=r*h+o*d+c*m,E=i*h+u*d+l*m,M=a*h+s*d+f*m,O=r*p+o*y+c*v,_=i*p+u*y+l*v,P=a*p+s*y+f*v,C=r*g+o*w+c*x,z=i*g+u*w+l*x,R=a*g+s*w+f*x;return n[0]=S,n[1]=E,n[2]=M,n[3]=0,n[4]=O,n[5]=_,n[6]=P,n[7]=0,n[8]=C,n[9]=z,n[10]=R,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n},c.multiplyByTranslation=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=r*e[0]+i*e[4]+a*e[8]+e[12],u=r*e[1]+i*e[5]+a*e[9]+e[13],s=r*e[2]+i*e[6]+a*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=o,n[13]=u,n[14]=s,n[15]=e[15],n};var p=new e;c.multiplyByUniformScale=function(e,t,n){return p.x=t,p.y=t,p.z=t,c.multiplyByScale(e,p,n)},c.multiplyByScale=function(e,t,n){var r=t.x,i=t.y,a=t.z;return 1===r&&1===i&&1===a?c.clone(e,n):(n[0]=r*e[0],n[1]=r*e[1],n[2]=r*e[2],n[3]=0,n[4]=i*e[4],n[5]=i*e[5],n[6]=i*e[6],n[7]=0,n[8]=a*e[8],n[9]=a*e[9],n[10]=a*e[10],n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=1,n)},c.multiplyByVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=t.w,u=e[0]*r+e[4]*i+e[8]*a+e[12]*o,s=e[1]*r+e[5]*i+e[9]*a+e[13]*o,c=e[2]*r+e[6]*i+e[10]*a+e[14]*o,l=e[3]*r+e[7]*i+e[11]*a+e[15]*o;return n.x=u,n.y=s,n.z=c,n.w=l,n},c.multiplyByPointAsVector=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[4]*i+e[8]*a,u=e[1]*r+e[5]*i+e[9]*a,s=e[2]*r+e[6]*i+e[10]*a;return n.x=o,n.y=u,n.z=s,n},c.multiplyByPoint=function(e,t,n){var r=t.x,i=t.y,a=t.z,o=e[0]*r+e[4]*i+e[8]*a+e[12],u=e[1]*r+e[5]*i+e[9]*a+e[13],s=e[2]*r+e[6]*i+e[10]*a+e[14];return n.x=o,n.y=u,n.z=s,n},c.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},c.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},c.transpose=function(e,t){var n=e[1],r=e[2],i=e[3],a=e[6],o=e[7],u=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=a,t[10]=e[10],t[11]=e[14],t[12]=i,t[13]=o,t[14]=u,t[15]=e[15],t},c.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t},c.equals=function(e,t){return e===t||r(e)&&r(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]},c.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n},c.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t},c.getRotation=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var y=new u,v=new u,g=new t,w=new t(0,0,0,1);return c.inverse=function(e,n){if(u.equalsEpsilon(c.getRotation(e,y),v,o.EPSILON7)&&t.equals(c.getRow(e,3,g),w))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;var r=e[0],i=e[4],a=e[8],l=e[12],f=e[1],h=e[5],d=e[9],m=e[13],p=e[2],x=e[6],S=e[10],E=e[14],M=e[3],O=e[7],_=e[11],P=e[15],C=S*P,z=E*_,R=x*P,I=E*O,N=x*_,T=S*O,b=p*P,A=E*M,D=p*_,q=S*M,U=p*O,L=x*M,B=C*h+I*d+N*m-(z*h+R*d+T*m),W=z*f+b*d+q*m-(C*f+A*d+D*m),F=R*f+A*h+U*m-(I*f+b*h+L*m),k=T*f+D*h+L*d-(N*f+q*h+U*d),V=z*i+R*a+T*l-(C*i+I*a+N*l),j=C*r+A*a+D*l-(z*r+b*a+q*l),Y=I*r+b*i+L*l-(R*r+A*i+U*l),Z=N*r+q*i+U*a-(T*r+D*i+L*a);C=a*m,z=l*d,R=i*m,I=l*h,N=i*d,T=a*h,b=r*m,A=l*f,D=r*d,q=a*f,U=r*h,L=i*f;var X=C*O+I*_+N*P-(z*O+R*_+T*P),G=z*M+b*_+q*P-(C*M+A*_+D*P),H=R*M+A*O+U*P-(I*M+b*O+L*P),J=T*M+D*O+L*_-(N*M+q*O+U*_),K=R*S+T*E+z*x-(N*E+C*x+I*S),Q=D*E+C*p+A*S-(b*S+q*E+z*p),$=b*x+L*E+I*p-(U*E+R*p+A*x),et=U*S+N*p+q*x-(D*x+L*S+T*p),tt=r*B+i*W+a*F+l*k;if(Math.abs(tt)<o.EPSILON20)throw new s("matrix is not invertible because its determinate is zero.");return tt=1/tt,n[0]=B*tt,n[1]=W*tt,n[2]=F*tt,n[3]=k*tt,n[4]=V*tt,n[5]=j*tt,n[6]=Y*tt,n[7]=Z*tt,n[8]=X*tt,n[9]=G*tt,n[10]=H*tt,n[11]=J*tt,n[12]=K*tt,n[13]=Q*tt,n[14]=$*tt,n[15]=et*tt,n},c.inverseTransformation=function(e,t){var n=e[0],r=e[1],i=e[2],a=e[4],o=e[5],u=e[6],s=e[8],c=e[9],l=e[10],f=e[12],h=e[13],d=e[14],m=-n*f-r*h-i*d,p=-a*f-o*h-u*d,y=-s*f-c*h-l*d;return t[0]=n,t[1]=a,t[2]=s,t[3]=0,t[4]=r,t[5]=o,t[6]=c,t[7]=0,t[8]=i,t[9]=u,t[10]=l,t[11]=0,t[12]=m,t[13]=p,t[14]=y,t[15]=1,t},c.IDENTITY=a(new c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)),c.ZERO=a(new c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)),c.COLUMN0ROW0=0,c.COLUMN0ROW1=1,c.COLUMN0ROW2=2,c.COLUMN0ROW3=3,c.COLUMN1ROW0=4,c.COLUMN1ROW1=5,c.COLUMN1ROW2=6,c.COLUMN1ROW3=7,c.COLUMN2ROW0=8,c.COLUMN2ROW1=9,c.COLUMN2ROW2=10,c.COLUMN2ROW3=11,c.COLUMN3ROW0=12,c.COLUMN3ROW1=13,c.COLUMN3ROW2=14,c.COLUMN3ROW3=15,c.prototype.clone=function(e){return c.clone(this,e)},c.prototype.equals=function(e){return c.equals(this,e)},c.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]},c.prototype.equalsEpsilon=function(e,t){return c.equalsEpsilon(this,e,t)},c.prototype.toString=function(){return"("+this[0]+", "+this[4]+", "+this[8]+", "+this[12]+")\n"+"("+this[1]+", "+this[5]+", "+this[9]+", "+this[13]+")\n"+"("+this[2]+", "+this[6]+", "+this[10]+", "+this[14]+")\n"+"("+this[3]+", "+this[7]+", "+this[11]+", "+this[15]+")"},c}),define("Core/Plane",["./Cartesian3","./defined","./DeveloperError","./freezeObject"],function(e,t,n,r){"use strict";var i=function(t,n){this.normal=e.clone(t),this.distance=n};i.fromPointNormal=function(n,r,a){var o=-e.dot(r,n);return t(a)?(e.clone(r,a.normal),a.distance=o,a):new i(r,o)};var a=new e;return i.fromCartesian4=function(n,r){var o=e.fromCartesian4(n,a),u=n.w;return t(r)?(e.clone(o,r.normal),r.distance=u,r):new i(o,u)},i.getPointDistance=function(t,n){return e.dot(t.normal,n)+t.distance},i.ORIGIN_XY_PLANE=r(new i(e.UNIT_Z,0)),i.ORIGIN_YZ_PLANE=r(new i(e.UNIT_X,0)),i.ORIGIN_ZX_PLANE=r(new i(e.UNIT_Y,0)),i}),define("Core/Rectangle",["./Cartographic","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./freezeObject","./Math"],function(e,t,n,r,i,a,o,u){"use strict";var s=function(e,n,r,i){this.west=t(e,0),this.south=t(n,0),this.east=t(r,0),this.north=t(i,0)};r(s.prototype,{width:{get:function(){return s.computeWidth(this)}},height:{get:function(){return s.computeHeight(this)}}}),s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.west,n[r++]=e.south,n[r++]=e.east,n[r]=e.north},s.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new s),i.west=e[r++],i.south=e[r++],i.east=e[r++],i.north=e[r],i},s.computeWidth=function(e){var t=e.east,n=e.west;return n>t&&(t+=u.TWO_PI),t-n},s.computeHeight=function(e){return e.north-e.south},s.fromDegrees=function(e,r,i,a,o){return e=u.toRadians(t(e,0)),r=u.toRadians(t(r,0)),i=u.toRadians(t(i,0)),a=u.toRadians(t(a,0)),n(o)?(o.west=e,o.south=r,o.east=i,o.north=a,o):new s(e,r,i,a)},s.fromCartographicArray=function(e,t){for(var r=Number.MAX_VALUE,i=-Number.MAX_VALUE,a=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=0,c=e.length;c>u;u++){var l=e[u];r=Math.min(r,l.longitude),i=Math.max(i,l.longitude),a=Math.min(a,l.latitude),o=Math.max(o,l.latitude)}return n(t)?(t.west=r,t.south=a,t.east=i,t.north=o,t):new s(r,a,i,o)},s.clone=function(e,t){return n(e)?n(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new s(e.west,e.south,e.east,e.north):void 0},s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},s.prototype.equalsEpsilon=function(e,t){return n(e)&&Math.abs(this.west-e.west)<=t&&Math.abs(this.south-e.south)<=t&&Math.abs(this.east-e.east)<=t&&Math.abs(this.north-e.north)<=t},s.validate=function(){},s.southwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.south,r.height=0,r):new e(t.west,t.south)},s.northwest=function(t,r){return n(r)?(r.longitude=t.west,r.latitude=t.north,r.height=0,r):new e(t.west,t.north)},s.northeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.north,r.height=0,r):new e(t.east,t.north)},s.southeast=function(t,r){return n(r)?(r.longitude=t.east,r.latitude=t.south,r.height=0,r):new e(t.east,t.south)},s.center=function(t,r){var i=t.east,a=t.west;a>i&&(i+=u.TWO_PI);var o=u.negativePiToPi(.5*(a+i)),s=.5*(t.south+t.north);return n(r)?(r.longitude=o,r.latitude=s,r.height=0,r):new e(o,s)},s.intersection=function(e,t,r){var i=e.east,a=e.west,o=t.east,c=t.west;a>i&&o>0?i+=u.TWO_PI:c>o&&i>0&&(o+=u.TWO_PI),a>i&&0>c?c+=u.TWO_PI:c>o&&0>a&&(a+=u.TWO_PI);var l=u.negativePiToPi(Math.max(a,c)),f=u.negativePiToPi(Math.min(i,o));if((e.west<e.east||t.west<t.east)&&l>=f)return void 0;var h=Math.max(e.south,t.south),d=Math.min(e.north,t.north);return h>=d?void 0:n(r)?(r.west=l,r.south=h,r.east=f,r.north=d,r):new s(l,h,f,d)},s.contains=function(e,t){var n=t.longitude,r=t.latitude,i=e.west,a=e.east;return i>a&&(a+=u.TWO_PI,0>n&&(n+=u.TWO_PI)),(n>i||u.equalsEpsilon(n,i,u.EPSILON14))&&(a>n||u.equalsEpsilon(n,a,u.EPSILON14))&&r>=e.south&&r<=e.north};var c=new e;return s.subsample=function(e,r,i,o){r=t(r,a.WGS84),i=t(i,0),n(o)||(o=[]);var l=0,f=e.north,h=e.south,d=e.east,m=e.west,p=c;p.height=i,p.longitude=m,p.latitude=f,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=d,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=h,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.latitude=0>f?f:h>0?h:0;for(var y=1;8>y;++y)p.longitude=-Math.PI+y*u.PI_OVER_TWO,s.contains(e,p)&&(o[l]=r.cartographicToCartesian(p,o[l]),l++);return 0===p.latitude&&(p.longitude=m,o[l]=r.cartographicToCartesian(p,o[l]),l++,p.longitude=d,o[l]=r.cartographicToCartesian(p,o[l]),l++),o.length=l,o},s.MAX_VALUE=o(new s(-Math.PI,-u.PI_OVER_TWO,Math.PI,u.PI_OVER_TWO)),s}),define("Core/BoundingSphere",["./Cartesian3","./Cartographic","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Ellipsoid","./GeographicProjection","./Intersect","./Interval","./Matrix4","./Plane","./Rectangle"],function(e,t,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(t,r){this.center=e.clone(n(t,e.ZERO)),this.radius=n(r,0)},m=new e,p=new e,y=new e,v=new e,g=new e,w=new e,x=new e,S=new e,E=new e,M=new e,O=new e,_=new e;d.fromPoints=function(t,n){if(r(n)||(n=new d),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;for(var i=e.clone(t[0],x),a=e.clone(i,m),o=e.clone(i,p),u=e.clone(i,y),s=e.clone(i,v),c=e.clone(i,g),l=e.clone(i,w),f=t.length,h=1;f>h;h++){e.clone(t[h],i);var P=i.x,C=i.y,z=i.z;P<a.x&&e.clone(i,a),P>s.x&&e.clone(i,s),C<o.y&&e.clone(i,o),C>c.y&&e.clone(i,c),z<u.z&&e.clone(i,u),z>l.z&&e.clone(i,l)}var R=e.magnitudeSquared(e.subtract(s,a,S)),I=e.magnitudeSquared(e.subtract(c,o,S)),N=e.magnitudeSquared(e.subtract(l,u,S)),T=a,b=s,A=R;I>A&&(A=I,T=o,b=c),N>A&&(A=N,T=u,b=l);var D=E;D.x=.5*(T.x+b.x),D.y=.5*(T.y+b.y),D.z=.5*(T.z+b.z);var q=e.magnitudeSquared(e.subtract(b,D,S)),U=Math.sqrt(q),L=M;L.x=a.x,L.y=o.y,L.z=u.z;var B=O;B.x=s.x,B.y=c.y,B.z=l.z;var W=e.multiplyByScalar(e.add(L,B,S),.5,_),F=0;for(h=0;f>h;h++){e.clone(t[h],i);var k=e.magnitude(e.subtract(i,W,S));k>F&&(F=k);var V=e.magnitudeSquared(e.subtract(i,D,S));if(V>q){var j=Math.sqrt(V);U=.5*(U+j),q=U*U;var Y=j-U;D.x=(U*D.x+Y*i.x)/j,D.y=(U*D.y+Y*i.y)/j,D.z=(U*D.z+Y*i.z)/j}}return F>U?(e.clone(D,n.center),n.radius=U):(e.clone(W,n.center),n.radius=F),n};var P=new u,C=new e,z=new e,R=new t,I=new t;d.fromRectangle2D=function(e,t,n){return d.fromRectangleWithHeights2D(e,t,0,0,n)},d.fromRectangleWithHeights2D=function(t,i,a,o,u){if(r(u)||(u=new d),!r(t))return u.center=e.clone(e.ZERO,u.center),u.radius=0,u;i=n(i,P),h.southwest(t,R),R.height=a,h.northeast(t,I),I.height=o;var s=i.project(R,C),c=i.project(I,z),l=c.x-s.x,f=c.y-s.y,m=c.z-s.z;u.radius=.5*Math.sqrt(l*l+f*f+m*m);var p=u.center;return p.x=s.x+.5*l,p.y=s.y+.5*f,p.z=s.z+.5*m,u};var N=[];d.fromRectangle3D=function(e,t,i,a){t=n(t,o.WGS84),i=n(i,0);var u;return r(e)&&(u=h.subsample(e,t,i,N)),d.fromPoints(u,a)},d.fromVertices=function(t,i,a,o){if(r(o)||(o=new d),!r(t)||0===t.length)return o.center=e.clone(e.ZERO,o.center),o.radius=0,o;i=n(i,e.ZERO),a=n(a,3);var u=x;u.x=t[0]+i.x,u.y=t[1]+i.y,u.z=t[2]+i.z;for(var s=e.clone(u,m),c=e.clone(u,p),l=e.clone(u,y),f=e.clone(u,v),h=e.clone(u,g),P=e.clone(u,w),C=t.length,z=0;C>z;z+=a){var R=t[z]+i.x,I=t[z+1]+i.y,N=t[z+2]+i.z;u.x=R,u.y=I,u.z=N,R<s.x&&e.clone(u,s),R>f.x&&e.clone(u,f),I<c.y&&e.clone(u,c),I>h.y&&e.clone(u,h),N<l.z&&e.clone(u,l),N>P.z&&e.clone(u,P)}var T=e.magnitudeSquared(e.subtract(f,s,S)),b=e.magnitudeSquared(e.subtract(h,c,S)),A=e.magnitudeSquared(e.subtract(P,l,S)),D=s,q=f,U=T;b>U&&(U=b,D=c,q=h),A>U&&(U=A,D=l,q=P);var L=E;L.x=.5*(D.x+q.x),L.y=.5*(D.y+q.y),L.z=.5*(D.z+q.z);var B=e.magnitudeSquared(e.subtract(q,L,S)),W=Math.sqrt(B),F=M;F.x=s.x,F.y=c.y,F.z=l.z;var k=O;k.x=f.x,k.y=h.y,k.z=P.z;var V=e.multiplyByScalar(e.add(F,k,S),.5,_),j=0;for(z=0;C>z;z+=a){u.x=t[z]+i.x,u.y=t[z+1]+i.y,u.z=t[z+2]+i.z;var Y=e.magnitude(e.subtract(u,V,S));Y>j&&(j=Y);var Z=e.magnitudeSquared(e.subtract(u,L,S));if(Z>B){var X=Math.sqrt(Z);W=.5*(W+X),B=W*W;var G=X-W;L.x=(W*L.x+G*u.x)/X,L.y=(W*L.y+G*u.y)/X,L.z=(W*L.z+G*u.z)/X}}return j>W?(e.clone(L,o.center),o.radius=W):(e.clone(V,o.center),o.radius=j),o},d.fromCornerPoints=function(t,n,i){r(i)||(i=new d);var a=i.center;return e.add(t,n,a),e.multiplyByScalar(a,.5,a),i.radius=e.distance(a,n),i},d.fromEllipsoid=function(t,n){return r(n)||(n=new d),e.clone(e.ZERO,n.center),n.radius=t.maximumRadius,n};var T=new e;d.fromBoundingSpheres=function(t,n){if(r(n)||(n=new d),!r(t)||0===t.length)return n.center=e.clone(e.ZERO,n.center),n.radius=0,n;var i=t.length;if(1===i)return d.clone(t[0],n);if(2===i)return d.union(t[0],t[1],n);for(var a=[],o=0;i>o;o++)a.push(t[o].center);n=d.fromPoints(a,n);var u=n.center,s=n.radius;for(o=0;i>o;o++){var c=t[o];s=Math.max(s,e.distance(u,c.center,T)+c.radius)}return n.radius=s,n},d.clone=function(t,n){return r(t)?r(n)?(n.center=e.clone(t.center,n.center),n.radius=t.radius,n):new d(t.center,t.radius):void 0},d.packedLength=4,d.pack=function(e,t,r){r=n(r,0);var i=e.center;t[r++]=i.x,t[r++]=i.y,t[r++]=i.z,t[r]=e.radius},d.unpack=function(e,t,i){t=n(t,0),r(i)||(i=new d);var a=i.center;return a.x=e[t++],a.y=e[t++],a.z=e[t++],i.radius=e[t],i};var b=new e,A=new e;d.union=function(t,n,i){r(i)||(i=new d);var a=t.center,o=t.radius,u=n.center,s=n.radius,c=e.subtract(u,a,b),l=e.magnitude(c);if(o>=l+s)return t.clone(i),i;if(s>=l+o)return n.clone(i),i;var f=.5*(o+l+s),h=e.multiplyByScalar(c,(-o+f)/l,A);return e.add(h,a,h),e.clone(h,i.center),i.radius=f,i};var D=new e;d.expand=function(t,n,r){r=d.clone(t,r);var i=e.magnitude(e.subtract(n,r.center,D));return i>r.radius&&(r.radius=i),r},d.intersectPlane=function(t,n){var r=t.center,i=t.radius,a=n.normal,o=e.dot(a,r)+n.distance;return-i>o?s.OUTSIDE:i>o?s.INTERSECTING:s.INSIDE};var q=new f(new e,0);d.intersect=function(e,t){i("BoundingSphere.intersect","BoundingSphere.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use BoundingSphere.intersectPlane() instead.");var n=f.fromCartesian4(t,q);return d.intersectPlane(e,n)},d.transform=function(e,t,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=l.getMaximumScale(t)*e.radius,n};var U=new e;d.distanceSquaredTo=function(t,n){var r=e.subtract(t.center,n,U);return e.magnitudeSquared(r)-t.radius*t.radius},d.transformWithoutScale=function(e,t,n){return r(n)||(n=new d),n.center=l.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var L=new e;d.computePlaneDistances=function(t,n,i,a){r(a)||(a=new c);var o=e.subtract(t.center,n,L),u=e.multiplyByScalar(i,e.dot(i,o),L),s=e.magnitude(u);return a.start=s-t.radius,a.stop=s+t.radius,a};for(var B=new e,W=new e,F=new e,k=new e,V=new e,j=new t,Y=new Array(8),Z=0;8>Z;++Z)Y[Z]=new e;var X=new u;return d.projectTo2D=function(t,r,i){r=n(r,X);var a=r.ellipsoid,o=t.center,u=t.radius,s=a.geodeticSurfaceNormal(o,B),c=e.cross(e.UNIT_Z,s,W);e.normalize(c,c);var l=e.cross(s,c,F);e.normalize(l,l),e.multiplyByScalar(s,u,s),e.multiplyByScalar(l,u,l),e.multiplyByScalar(c,u,c);var f=e.negate(l,V),h=e.negate(c,k),m=Y,p=m[0];e.add(s,l,p),e.add(p,c,p),p=m[1],e.add(s,l,p),e.add(p,h,p),p=m[2],e.add(s,f,p),e.add(p,h,p),p=m[3],e.add(s,f,p),e.add(p,c,p),e.negate(s,s),p=m[4],e.add(s,l,p),e.add(p,c,p),p=m[5],e.add(s,l,p),e.add(p,h,p),p=m[6],e.add(s,f,p),e.add(p,h,p),p=m[7],e.add(s,f,p),e.add(p,c,p);for(var y=m.length,v=0;y>v;++v){var g=m[v];e.add(o,g,g);var w=a.cartesianToCartographic(g,j);r.project(w,g)}i=d.fromPoints(m,i),o=i.center;var x=o.x,S=o.y,E=o.z;return o.x=E,o.y=x,o.z=S,i},d.equals=function(t,n){return t===n||r(t)&&r(n)&&e.equals(t.center,n.center)&&t.radius===n.radius},d.prototype.intersectPlane=function(e){return d.intersectPlane(this,e)},d.prototype.intersect=function(e){return d.intersect(this,e)},d.prototype.equals=function(e){return d.equals(this,e)},d.prototype.clone=function(e){return d.clone(this,e)},d}),define("Core/EllipsoidalOccluder",["./BoundingSphere","./Cartesian3","./defaultValue","./defined","./defineProperties","./DeveloperError","./Rectangle"],function(e,t,n,r,i,a,o){"use strict";function u(e,n,r){var i=e.transformPositionToScaledSpace(n,m),a=t.magnitudeSquared(i),o=Math.sqrt(a),u=t.divideByScalar(i,o,p);a=Math.max(1,a),o=Math.max(1,o);var s=t.dot(u,r),c=t.magnitude(t.cross(u,r,u)),l=1/o,f=Math.sqrt(a-1)*l;return 1/(s*l-c*f)}function s(e,n,r){return 0>=n||n===1/0||n!==n?void 0:t.multiplyByScalar(e,n,r)}function c(e,n){return e.transformPositionToScaledSpace(n,y),t.normalize(y,y)}var l=function(e,n){this._ellipsoid=e,this._cameraPosition=new t,this._cameraPositionInScaledSpace=new t,this._distanceToLimbInScaledSpaceSquared=0,r(n)&&(this.cameraPosition=n)};i(l.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(e){var n=this._ellipsoid,r=n.transformPositionToScaledSpace(e,this._cameraPositionInScaledSpace),i=t.magnitudeSquared(r)-1;t.clone(e,this._cameraPosition),this._cameraPositionInScaledSpace=r,this._distanceToLimbInScaledSpaceSquared=i}}});var f=new t;l.prototype.isPointVisible=function(e){var t=this._ellipsoid,n=t.transformPositionToScaledSpace(e,f);return this.isScaledSpacePointVisible(n)},l.prototype.isScaledSpacePointVisible=function(e){var n=this._cameraPositionInScaledSpace,r=this._distanceToLimbInScaledSpaceSquared,i=t.subtract(e,n,f),a=-t.dot(i,n),o=a>r&&a*a/t.magnitudeSquared(i)>r;return!o},l.prototype.computeHorizonCullingPoint=function(e,n,i){r(i)||(i=new t);for(var a=this._ellipsoid,o=c(a,e),l=0,f=0,h=n.length;h>f;++f){var d=n[f],m=u(a,d,o);l=Math.max(l,m)}return s(o,l,i)};var h=new t;l.prototype.computeHorizonCullingPointFromVertices=function(e,i,a,o,l){r(l)||(l=new t),o=n(o,t.ZERO);for(var f=this._ellipsoid,d=c(f,e),m=0,p=0,y=i.length;y>p;p+=a){h.x=i[p]+o.x,h.y=i[p+1]+o.y,h.z=i[p+2]+o.z;var v=u(f,h,d);m=Math.max(m,v)}return s(d,m,l)};var d=[];l.prototype.computeHorizonCullingPointFromRectangle=function(n,r,i){var a=o.subsample(n,r,0,d),u=e.fromPoints(a);return t.magnitude(u.center)<.1*r.minimumRadius?void 0:this.computeHorizonCullingPoint(u.center,a,i)};var m=new t,p=new t,y=new t;return l}),define("Core/IndexDatatype",["./defined","./DeveloperError","./freezeObject","./Math"],function(e,t,n,r){"use strict";var i={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125};return i.getSizeInBytes=function(e){switch(e){case i.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case i.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case i.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}},i.validate=function(t){return e(t)&&(t===i.UNSIGNED_BYTE||t===i.UNSIGNED_SHORT||t===i.UNSIGNED_INT)},i.createTypedArray=function(e,t){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)},i.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>r.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)},n(i)}),define("Core/Intersections2D",["./Cartesian3","./defined","./DeveloperError"],function(e,t){"use strict";var n={};return n.clipTriangleAtAxisAlignedThreshold=function(e,n,r,i,a,o){t(o)?o.length=0:o=[];var u,s,c;n?(u=e>r,s=e>i,c=e>a):(u=r>e,s=i>e,c=a>e);var l,f,h,d,m,p,y=u+s+c;return 1===y?u?(l=(e-r)/(i-r),f=(e-r)/(a-r),o.push(1),o.push(2),1!==f&&(o.push(-1),o.push(0),o.push(2),o.push(f)),1!==l&&(o.push(-1),o.push(0),o.push(1),o.push(l))):s?(h=(e-i)/(a-i),d=(e-i)/(r-i),o.push(2),o.push(0),1!==d&&(o.push(-1),o.push(1),o.push(0),o.push(d)),1!==h&&(o.push(-1),o.push(1),o.push(2),o.push(h))):c&&(m=(e-a)/(r-a),p=(e-a)/(i-a),o.push(0),o.push(1),1!==p&&(o.push(-1),o.push(2),o.push(1),o.push(p)),1!==m&&(o.push(-1),o.push(2),o.push(0),o.push(m))):2===y?u||r===e?s||i===e?c||a===e||(f=(e-r)/(a-r),h=(e-i)/(a-i),o.push(2),o.push(-1),o.push(0),o.push(2),o.push(f),o.push(-1),o.push(1),o.push(2),o.push(h)):(p=(e-a)/(i-a),l=(e-r)/(i-r),o.push(1),o.push(-1),o.push(2),o.push(1),o.push(p),o.push(-1),o.push(0),o.push(1),o.push(l)):(d=(e-i)/(r-i),m=(e-a)/(r-a),o.push(0),o.push(-1),o.push(1),o.push(0),o.push(d),o.push(-1),o.push(2),o.push(0),o.push(m)):3===y||(o.push(0),o.push(1),o.push(2)),o},n.computeBarycentricCoordinates=function(n,r,i,a,o,u,s,c,l){var f=i-s,h=s-o,d=u-c,m=a-c,p=1/(d*f+h*m),y=r-c,v=n-s,g=(d*v+h*y)*p,w=(-m*v+f*y)*p,x=1-g-w;return t(l)?(l.x=g,l.y=w,l.z=x,l):new e(g,w,x)},n}),define("Core/AxisAlignedBoundingBox",["./Cartesian3","./defaultValue","./defined","./deprecationWarning","./DeveloperError","./Intersect","./Plane"],function(e,t,n,r,i,a,o){"use strict";var u=function(r,i,a){this.minimum=e.clone(t(r,e.ZERO)),this.maximum=e.clone(t(i,e.ZERO)),n(a)?a=e.clone(a):(a=e.add(this.minimum,this.maximum,new e),e.multiplyByScalar(a,.5,a)),this.center=a};u.fromPoints=function(t,r){if(n(r)||(r=new u),!n(t)||0===t.length)return r.minimum=e.clone(e.ZERO,r.minimum),r.maximum=e.clone(e.ZERO,r.maximum),r.center=e.clone(e.ZERO,r.center),r;for(var i=t[0].x,a=t[0].y,o=t[0].z,s=t[0].x,c=t[0].y,l=t[0].z,f=t.length,h=1;f>h;h++){var d=t[h],m=d.x,p=d.y,y=d.z;i=Math.min(m,i),s=Math.max(m,s),a=Math.min(p,a),c=Math.max(p,c),o=Math.min(y,o),l=Math.max(y,l)}var v=r.minimum;v.x=i,v.y=a,v.z=o;var g=r.maximum;g.x=s,g.y=c,g.z=l;var w=e.add(v,g,r.center);return e.multiplyByScalar(w,.5,w),r},u.clone=function(t,r){return n(t)?n(r)?(r.minimum=e.clone(t.minimum,r.minimum),r.maximum=e.clone(t.maximum,r.maximum),r.center=e.clone(t.center,r.center),r):new u(t.minimum,t.maximum):void 0},u.equals=function(t,r){return t===r||n(t)&&n(r)&&e.equals(t.center,r.center)&&e.equals(t.minimum,r.minimum)&&e.equals(t.maximum,r.maximum)};var s=new e;u.intersectPlane=function(t,n){s=e.subtract(t.maximum,t.minimum,s);var r=e.multiplyByScalar(s,.5,s),i=n.normal,o=r.x*Math.abs(i.x)+r.y*Math.abs(i.y)+r.z*Math.abs(i.z),u=e.dot(t.center,i)+n.distance;return u-o>0?a.INSIDE:0>u+o?a.OUTSIDE:a.INTERSECTING +};var c=new o(new e,0);return u.intersect=function(e,t){r("AxisAlignedBoundingBox.intersect","AxisAlignedBoundingBox.intersect() was deprecated in Cesium 1.11. It will be removed in 1.12. Use AxisAlignedBoundingBox.intersectPlane() instead.");var n=o.fromCartesian4(t,c);return u.intersectPlane(e,n)},u.prototype.clone=function(e){return u.clone(this,e)},u.prototype.intersectPlane=function(e){return u.intersectPlane(this,e)},u.prototype.intersect=function(e){return u.intersect(this,e)},u.prototype.equals=function(e){return u.equals(this,e)},u}),define("Core/QuadraticRealPolynomial",["./DeveloperError","./Math"],function(e,t){"use strict";function n(e,n,r){var i=e+n;return t.sign(e)!==t.sign(n)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(n)))<r?0:i}var r={};return r.computeDiscriminant=function(e,t,n){var r=t*t-4*e*n;return r},r.computeRealRoots=function(e,r,i){var a;if(0===e)return 0===r?[]:[-i/r];if(0===r){if(0===i)return[0,0];var o=Math.abs(i),u=Math.abs(e);if(u>o&&o/u<t.EPSILON14)return[0,0];if(o>u&&u/o<t.EPSILON14)return[];if(a=-i/e,0>a)return[];var s=Math.sqrt(a);return[-s,s]}if(0===i)return a=-r/e,0>a?[a,0]:[0,a];var c=r*r,l=4*e*i,f=n(c,-l,t.EPSILON14);if(0>f)return[];var h=-.5*n(r,t.sign(r)*Math.sqrt(f),t.EPSILON14);return r>0?[h/e,i/h]:[i/h,h/e]},r}),define("Core/CubicRealPolynomial",["./DeveloperError","./QuadraticRealPolynomial"],function(e,t){"use strict";function n(e,t,n,r){var i,a,o=e,u=t/3,s=n/3,c=r,l=o*s,f=u*c,h=u*u,d=s*s,m=o*s-h,p=o*c-u*s,y=u*c-d,v=4*m*y-p*p;if(0>v){var g,w,x;h*f>=l*d?(g=o,w=m,x=-2*u*m+o*p):(g=c,w=y,x=-c*p+2*s*y);var S=0>x?-1:1,E=-S*Math.abs(g)*Math.sqrt(-v);a=-x+E;var M=a/2,O=0>M?-Math.pow(-M,1/3):Math.pow(M,1/3),_=a===E?-O:-w/O;return i=0>=w?O+_:-x/(O*O+_*_+w),h*f>=l*d?[(i-u)/o]:[-c/(i+s)]}var P=m,C=-2*u*m+o*p,z=y,R=-c*p+2*s*y,I=Math.sqrt(v),N=Math.sqrt(3)/2,T=Math.abs(Math.atan2(o*I,-C)/3);i=2*Math.sqrt(-P);var b=Math.cos(T);a=i*b;var A=i*(-b/2-N*Math.sin(T)),D=a+A>2*u?a-u:A-u,q=o,U=D/q;T=Math.abs(Math.atan2(c*I,-R)/3),i=2*Math.sqrt(-z),b=Math.cos(T),a=i*b,A=i*(-b/2-N*Math.sin(T));var L=-c,B=2*s>a+A?a+s:A+s,W=L/B,F=q*B,k=-D*B-q*L,V=D*L,j=(s*k-u*V)/(-u*k+s*F);return j>=U?W>=U?W>=j?[U,j,W]:[U,W,j]:[W,U,j]:W>=U?[j,U,W]:W>=j?[j,W,U]:[W,j,U]}var r={};return r.computeDiscriminant=function(e,t,n,r){var i=e*e,a=t*t,o=n*n,u=r*r,s=18*e*t*n*r+a*o-27*i*u-4*(e*o*n+a*t*r);return s},r.computeRealRoots=function(e,r,i,a){var o,u;if(0===e)return t.computeRealRoots(r,i,a);if(0===r){if(0===i){if(0===a)return[0,0,0];u=-a/e;var s=0>u?-Math.pow(-u,1/3):Math.pow(u,1/3);return[s,s,s]}return 0===a?(o=t.computeRealRoots(e,0,i),0===o.Length?[0]:[o[0],0,o[1]]):n(e,0,i,a)}return 0===i?0===a?(u=-r/e,0>u?[u,0,0]:[0,0,u]):n(e,r,0,a):0===a?(o=t.computeRealRoots(e,r,i),0===o.length?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]):n(e,r,i,a)},r}),define("Core/QuarticRealPolynomial",["./CubicRealPolynomial","./DeveloperError","./Math","./QuadraticRealPolynomial"],function(e,t,n,r){"use strict";function i(t,i,a,o){var u=t*t,s=i-3*u/8,c=a-i*t/2+u*t/8,l=o-a*t/4+i*u/16-3*u*u/256,f=e.computeRealRoots(1,2*s,s*s-4*l,-c*c);if(f.length>0){var h=-t/4,d=f[f.length-1];if(Math.abs(d)<n.EPSILON14){var m=r.computeRealRoots(1,s,l);if(2===m.length){var p,y=m[0],v=m[1];if(y>=0&&v>=0){var g=Math.sqrt(y),w=Math.sqrt(v);return[h-w,h-g,h+g,h+w]}if(y>=0&&0>v)return p=Math.sqrt(y),[h-p,h+p];if(0>y&&v>=0)return p=Math.sqrt(v),[h-p,h+p]}return[]}if(d>0){var x=Math.sqrt(d),S=(s+d-c/x)/2,E=(s+d+c/x)/2,M=r.computeRealRoots(1,x,S),O=r.computeRealRoots(1,-x,E);return 0!==M.length?(M[0]+=h,M[1]+=h,0!==O.length?(O[0]+=h,O[1]+=h,M[1]<=O[0]?[M[0],M[1],O[0],O[1]]:O[1]<=M[0]?[O[0],O[1],M[0],M[1]]:M[0]>=O[0]&&M[1]<=O[1]?[O[0],M[0],M[1],O[1]]:O[0]>=M[0]&&O[1]<=M[1]?[M[0],O[0],O[1],M[1]]:M[0]>O[0]&&M[0]<O[1]?[O[0],M[0],O[1],M[1]]:[M[0],O[0],M[1],O[1]]):M):0!==O.length?(O[0]+=h,O[1]+=h,O):[]}}return[]}function a(t,i,a,o){var u=a*a,s=i*i,c=t*t,l=-2*i,f=a*t+s-4*o,h=c*o-a*i*t+u,d=e.computeRealRoots(1,l,f,h);if(d.length>0){var m,p,y=d[0],v=i-y,g=v*v,w=t/2,x=v/2,S=g-4*o,E=g+4*Math.abs(o),M=c-4*y,O=c+4*Math.abs(y);if(0>y||M*E>S*O){var _=Math.sqrt(M);m=_/2,p=0===_?0:(t*x-a)/_}else{var P=Math.sqrt(S);m=0===P?0:(t*x-a)/P,p=P/2}var C,z;0===w&&0===m?(C=0,z=0):n.sign(w)===n.sign(m)?(C=w+m,z=y/C):(z=w-m,C=y/z);var R,I;0===x&&0===p?(R=0,I=0):n.sign(x)===n.sign(p)?(R=x+p,I=o/R):(I=x-p,R=o/I);var N=r.computeRealRoots(1,C,R),T=r.computeRealRoots(1,z,I);if(0!==N.length)return 0!==T.length?N[1]<=T[0]?[N[0],N[1],T[0],T[1]]:T[1]<=N[0]?[T[0],T[1],N[0],N[1]]:N[0]>=T[0]&&N[1]<=T[1]?[T[0],N[0],N[1],T[1]]:T[0]>=N[0]&&T[1]<=N[1]?[N[0],T[0],T[1],N[1]]:N[0]>T[0]&&N[0]<T[1]?[T[0],N[0],T[1],N[1]]:[N[0],T[0],N[1],T[1]]:N;if(0!==T.length)return T}return[]}var o={};return o.computeDiscriminant=function(e,t,n,r,i){var a=e*e,o=a*e,u=t*t,s=u*t,c=n*n,l=c*n,f=r*r,h=f*r,d=i*i,m=d*i,p=u*c*f-4*s*h-4*e*l*f+18*e*t*n*h-27*a*f*f+256*o*m+i*(18*s*n*r-4*u*l+16*e*c*c-80*e*t*c*r-6*e*u*f+144*a*n*f)+d*(144*e*u*n-27*u*u-128*a*c-192*a*t*r);return p},o.computeRealRoots=function(t,r,o,u,s){if(Math.abs(t)<n.EPSILON15)return e.computeRealRoots(r,o,u,s);var c=r/t,l=o/t,f=u/t,h=s/t,d=0>c?1:0;switch(d+=0>l?d+1:d,d+=0>f?d+1:d,d+=0>h?d+1:d){case 0:return i(c,l,f,h);case 1:return a(c,l,f,h);case 2:return a(c,l,f,h);case 3:return i(c,l,f,h);case 4:return i(c,l,f,h);case 5:return a(c,l,f,h);case 6:return i(c,l,f,h);case 7:return i(c,l,f,h);case 8:return a(c,l,f,h);case 9:return i(c,l,f,h);case 10:return i(c,l,f,h);case 11:return a(c,l,f,h);case 12:return i(c,l,f,h);case 13:return i(c,l,f,h);case 14:return i(c,l,f,h);case 15:return i(c,l,f,h);default:return void 0}},o}),define("Core/Ray",["./Cartesian3","./defaultValue","./defined","./DeveloperError"],function(e,t,n){"use strict";var r=function(n,r){r=e.clone(t(r,e.ZERO)),e.equals(r,e.ZERO)||e.normalize(r,r),this.origin=e.clone(t(n,e.ZERO)),this.direction=r};return r.getPoint=function(t,r,i){return n(i)||(i=new e),i=e.multiplyByScalar(t.direction,r,i),e.add(t.origin,i,i)},r}),define("Core/IntersectionTests",["./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Math","./Matrix3","./QuadraticRealPolynomial","./QuarticRealPolynomial","./Ray"],function(e,t,n,r,i,a,o,u,s,c){"use strict";function l(t,r,i,o,u){u=n(u,!1);var s,c,l,f,h,d=t.origin,m=t.direction,p=e.subtract(i,r,y),S=e.subtract(o,r,v),E=e.cross(m,S,g),M=e.dot(p,E);if(u){if(M<a.EPSILON6)return void 0;if(s=e.subtract(d,r,w),l=e.dot(s,E),0>l||l>M)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c),0>f||l+f>M)return void 0;h=e.dot(S,c)/M}else{if(Math.abs(M)<a.EPSILON6)return void 0;var O=1/M;if(s=e.subtract(d,r,w),l=e.dot(s,E)*O,0>l||l>1)return void 0;if(c=e.cross(s,p,x),f=e.dot(m,c)*O,0>f||l+f>1)return void 0;h=e.dot(S,c)*O}return h}function f(e,t,n,r){var i=t*t-4*e*n;if(0>i)return void 0;if(i>0){var a=1/(2*e),o=Math.sqrt(i),u=(-t+o)*a,s=(-t-o)*a;return s>u?(r.root0=u,r.root1=s):(r.root0=s,r.root1=u),r}var c=-t/(2*e);return 0===c?void 0:(r.root0=r.root1=c,r)}function h(t,n,i){r(i)||(i={});var a=t.origin,o=t.direction,u=n.center,s=n.radius*n.radius,c=e.subtract(a,u,g),l=e.dot(o,o),h=2*e.dot(o,c),d=e.magnitudeSquared(c)-s,m=f(l,h,d,E);return r(m)?(i.start=m.root0,i.stop=m.root1,i):void 0}function d(e,t,n){var r=e+t;return a.sign(e)!==a.sign(t)&&Math.abs(r/Math.max(Math.abs(e),Math.abs(t)))<n?0:r}function m(t,n,r,i,c){var l,f=i*i,h=c*c,m=(t[o.COLUMN1ROW1]-t[o.COLUMN2ROW2])*h,p=c*(i*d(t[o.COLUMN1ROW0],t[o.COLUMN0ROW1],a.EPSILON15)+n.y),y=t[o.COLUMN0ROW0]*f+t[o.COLUMN2ROW2]*h+i*n.x+r,v=h*d(t[o.COLUMN2ROW1],t[o.COLUMN1ROW2],a.EPSILON15),g=c*(i*d(t[o.COLUMN2ROW0],t[o.COLUMN0ROW2])+n.z),w=[];if(0===g&&0===v){if(l=u.computeRealRoots(m,p,y),0===l.length)return w;var x=l[0],S=Math.sqrt(Math.max(1-x*x,0));if(w.push(new e(i,c*x,c*-S)),w.push(new e(i,c*x,c*S)),2===l.length){var E=l[1],M=Math.sqrt(Math.max(1-E*E,0));w.push(new e(i,c*E,c*-M)),w.push(new e(i,c*E,c*M))}return w}var O=g*g,_=v*v,P=m*m,C=g*v,z=P+_,R=2*(p*m+C),I=2*y*m+p*p-_+O,N=2*(y*p-C),T=y*y-O;if(0===z&&0===R&&0===I&&0===N)return w;l=s.computeRealRoots(z,R,I,N,T);var b=l.length;if(0===b)return w;for(var A=0;b>A;++A){var D,q=l[A],U=q*q,L=Math.max(1-U,0),B=Math.sqrt(L);D=a.sign(m)===a.sign(y)?d(m*U+y,p*q,a.EPSILON12):a.sign(y)===a.sign(p*q)?d(m*U,p*q+y,a.EPSILON12):d(m*U+p*q,y,a.EPSILON12);var W=d(v*q,g,a.EPSILON15),F=D*W;0>F?w.push(new e(i,c*q,c*B)):F>0?w.push(new e(i,c*q,c*-B)):0!==B?(w.push(new e(i,c*q,c*-B)),w.push(new e(i,c*q,c*B)),++A):w.push(new e(i,c*q,c*B))}return w}var p={};p.rayPlane=function(t,n,i){r(i)||(i=new e);var o=t.origin,u=t.direction,s=n.normal,c=e.dot(s,u);if(Math.abs(c)<a.EPSILON15)return void 0;var l=(-n.distance-e.dot(s,o))/c;return 0>l?void 0:(i=e.multiplyByScalar(u,l,i),e.add(o,i,i))};var y=new e,v=new e,g=new e,w=new e,x=new e;p.rayTriangle=function(t,n,i,a,o,u){var s=l(t,n,i,a,o);return!r(s)||0>s?void 0:(r(u)||(u=new e),e.multiplyByScalar(t.direction,s,u),e.add(t.origin,u,u))};var S=new c;p.lineSegmentTriangle=function(t,n,i,a,o,u,s){var c=S;e.clone(t,c.origin),e.subtract(n,t,c.direction),e.normalize(c.direction,c.direction);var f=l(c,i,a,o,u);return!r(f)||0>f||f>e.distance(t,n)?void 0:(r(s)||(s=new e),e.multiplyByScalar(c.direction,f,s),e.add(c.origin,s,s))};var E={root0:0,root1:0};p.raySphere=function(e,t,n){return n=h(e,t,n),!r(n)||n.stop<0?void 0:(n.start=Math.max(n.start,0),n)};var M=new c;p.lineSegmentSphere=function(t,n,i,a){var o=M;e.clone(t,o.origin);var u=e.subtract(n,t,o.direction),s=e.magnitude(u);return e.normalize(u,u),a=h(o,i,a),!r(a)||a.stop<0||a.start>s?void 0:(a.start=Math.max(a.start,0),a.stop=Math.min(a.stop,s),a)};var O=new e,_=new e;p.rayEllipsoid=function(t,n){var r,i,a,o,u,s=n.oneOverRadii,c=e.multiplyComponents(s,t.origin,O),l=e.multiplyComponents(s,t.direction,_),f=e.magnitudeSquared(c),h=e.dot(c,l);if(f>1){if(h>=0)return void 0;var d=h*h;if(r=f-1,i=e.magnitudeSquared(l),a=i*r,a>d)return void 0;if(d>a){o=h*h-a,u=-h+Math.sqrt(o);var m=u/i,p=r/u;return p>m?{start:m,stop:p}:{start:p,stop:m}}var y=Math.sqrt(r/i);return{start:y,stop:y}}return 1>f?(r=f-1,i=e.magnitudeSquared(l),a=i*r,o=h*h-a,u=-h+Math.sqrt(o),{start:0,stop:u/i}):0>h?(i=e.magnitudeSquared(l),{start:0,stop:-h/i}):void 0};var P=new e,C=new e,z=new e,R=new e,I=new e,N=new o,T=new o,b=new o,A=new o,D=new o,q=new o,U=new o,L=new e,B=new e,W=new t;p.grazingAltitudeLocation=function(t,n){var i=t.origin,u=t.direction,s=n.geodeticSurfaceNormal(i,P);if(e.dot(u,s)>=0)return i;var c=r(this.rayEllipsoid(t,n)),l=n.transformPositionToScaledSpace(u,P),f=e.normalize(l,l),h=e.mostOrthogonalAxis(l,R),d=e.normalize(e.cross(h,f,C),C),p=e.normalize(e.cross(f,d,z),z),y=N;y[0]=f.x,y[1]=f.y,y[2]=f.z,y[3]=d.x,y[4]=d.y,y[5]=d.z,y[6]=p.x,y[7]=p.y,y[8]=p.z;var v=o.transpose(y,T),g=o.fromScale(n.radii,b),w=o.fromScale(n.oneOverRadii,A),x=D;x[0]=0,x[1]=-u.z,x[2]=u.y,x[3]=u.z,x[4]=0,x[5]=-u.x,x[6]=-u.y,x[7]=u.x,x[8]=0;var S,E,M=o.multiply(o.multiply(v,w,q),x,q),O=o.multiply(o.multiply(M,g,U),y,U),_=o.multiplyByVector(M,i,I),F=m(O,e.negate(_,P),0,0,1),k=F.length;if(k>0){for(var V=e.clone(e.ZERO,B),j=Number.NEGATIVE_INFINITY,Y=0;k>Y;++Y){S=o.multiplyByVector(g,o.multiplyByVector(y,F[Y],L),L);var Z=e.normalize(e.subtract(S,i,R),R),X=e.dot(Z,u);X>j&&(j=X,V=e.clone(S,V))}var G=n.cartesianToCartographic(V,W);return j=a.clamp(j,0,1),E=e.magnitude(e.subtract(V,i,R))*Math.sqrt(1-j*j),E=c?-E:E,G.height=E,n.cartographicToCartesian(G,new e)}return void 0};var F=new e;return p.lineSegmentPlane=function(t,n,i,o){r(o)||(o=new e);var u=e.subtract(n,t,F),s=i.normal,c=e.dot(s,u);if(Math.abs(c)<a.EPSILON6)return void 0;var l=e.dot(s,t),f=-(i.distance+l)/c;return 0>f||f>1?void 0:(e.multiplyByScalar(u,f,o),e.add(t,o,o),o)},p.trianglePlaneIntersection=function(t,n,r,i){var a=i.normal,o=i.distance,u=e.dot(a,t)+o<0,s=e.dot(a,n)+o<0,c=e.dot(a,r)+o<0,l=0;l+=u?1:0,l+=s?1:0,l+=c?1:0;var f,h;if((1===l||2===l)&&(f=new e,h=new e),1===l){if(u)return p.lineSegmentPlane(t,n,i,f),p.lineSegmentPlane(t,r,i,h),{positions:[t,n,r,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(s)return p.lineSegmentPlane(n,r,i,f),p.lineSegmentPlane(n,t,i,h),{positions:[t,n,r,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return p.lineSegmentPlane(r,t,i,f),p.lineSegmentPlane(r,n,i,h),{positions:[t,n,r,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===l){if(!u)return p.lineSegmentPlane(n,t,i,f),p.lineSegmentPlane(r,t,i,h),{positions:[t,n,r,f,h],indices:[1,2,4,1,4,3,0,3,4]};if(!s)return p.lineSegmentPlane(r,n,i,f),p.lineSegmentPlane(t,n,i,h),{positions:[t,n,r,f,h],indices:[2,0,4,2,4,3,1,3,4]};if(!c)return p.lineSegmentPlane(t,r,i,f),p.lineSegmentPlane(n,r,i,h),{positions:[t,n,r,f,h],indices:[0,1,4,0,4,3,2,3,4]}}return void 0},p}),function(e){"use strict";e("ThirdParty/when",[],function(){function e(e,n,r,i){return t(e).then(n,r,i)}function t(e){var t,n;return e instanceof r?t=e:u(e)?(n=o(),e.then(function(e){n.resolve(e)},function(e){n.reject(e)},function(e){n.progress(e)}),t=n.promise):t=i(e),t}function n(t){return e(t,a)}function r(e){this.then=e}function i(e){var n=new r(function(n){try{return t(n?n(e):e)}catch(r){return a(r)}});return n}function a(e){var n=new r(function(n,r){try{return r?t(r(e)):a(e)}catch(i){return a(i)}});return n}function o(){function e(e,t,n){return h(e,t,n)}function n(e){return m(e)}function i(e){return m(a(e))}function u(e){return d(e)}var s,c,l,f,h,d,m;return c=new r(e),s={then:e,resolve:n,reject:i,progress:u,promise:c,resolver:{resolve:n,reject:i,progress:u}},l=[],f=[],h=function(e,t,n){var r,i;return r=o(),i="function"==typeof n?function(e){try{r.progress(n(e))}catch(t){r.progress(t)}}:function(e){r.progress(e)},l.push(function(n){n.then(e,t).then(r.resolve,r.reject,i)}),f.push(i),r.promise},d=function(e){return p(f,e),e},m=function(e){return e=t(e),h=e.then,m=t,d=v,p(l,e),f=l=S,e},s}function u(e){return e&&"function"==typeof e.then}function s(t,n,r,i,a){return y(2,arguments),e(t,function(t){function u(e){p(e)}function s(e){m(e)}var c,l,f,h,d,m,p,y,g,w;if(g=t.length>>>0,c=Math.max(0,Math.min(n,g)),f=[],l=g-c+1,h=[],d=o(),c)for(y=d.progress,p=function(e){h.push(e),--l||(m=p=v,d.reject(h))},m=function(e){f.push(e),--c||(m=p=v,d.resolve(f))},w=0;g>w;++w)w in t&&e(t[w],s,u,y);else d.resolve(f);return d.then(r,i,a)})}function c(e,t,n,r){function i(e){return t?t(e[0]):e[0]}return s(e,1,i,n,r)}function l(e,t,n,r){return y(1,arguments),h(e,g).then(t,n,r)}function f(){return h(arguments,g)}function h(t,n){return e(t,function(t){var r,i,a,u,s,c;if(a=i=t.length>>>0,r=[],c=o(),a)for(u=function(t,i){e(t,n).then(function(e){r[i]=e,--a||c.resolve(r)},c.reject)},s=0;i>s;s++)s in t?u(t[s],s):--a;else c.resolve(r);return c.promise})}function d(t,n){var r=x.call(arguments,1);return e(t,function(t){var i;return i=t.length,r[0]=function(t,r,a){return e(t,function(t){return e(r,function(e){return n(t,e,a,i)})})},w.apply(t,r)})}function m(t,n,r){var i=arguments.length>2;return e(t,function(e){return e=i?r:e,n.resolve(e),e},function(e){return n.reject(e),a(e)},n.progress)}function p(e,t){for(var n,r=0;n=e[r++];)n(t)}function y(e,t){for(var n,r=t.length;r>e;)if(n=t[--r],null!=n&&"function"!=typeof n)throw new Error("arg "+r+" must be a function")}function v(){}function g(e){return e}var w,x,S;return e.defer=o,e.resolve=t,e.reject=n,e.join=f,e.all=l,e.map=h,e.reduce=d,e.any=c,e.some=s,e.chain=m,e.isPromise=u,r.prototype={always:function(e,t){return this.then(e,e,t)},otherwise:function(e){return this.then(S,e)},yield:function(e){return this.then(function(){return e})},spread:function(e){return this.then(function(t){return l(t,function(t){return e.apply(S,t)})})}},x=[].slice,w=[].reduce||function(e){var t,n,r,i,a;if(a=0,t=Object(this),i=t.length>>>0,n=arguments,n.length<=1)for(;;){if(a in t){r=t[a++];break}if(++a>=i)throw new TypeError}else r=n[1];for(;i>a;++a)a in t&&(r=e(r,t[a],a,t));return r},e})}("function"==typeof define&&define.amd?define:function(e){"object"==typeof exports?module.exports=e():this.when=e()}),define("Core/binarySearch",["./defined","./DeveloperError"],function(){"use strict";var e=function(e,t,n){for(var r,i,a=0,o=e.length-1;o>=a;)if(r=~~((a+o)/2),i=n(e[r],t),0>i)a=r+1;else{if(!(i>0))return r;o=r-1}return~(o+1)};return e}),define("Core/EarthOrientationParametersSample",[],function(){"use strict";var e=function(e,t,n,r,i){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=r,this.ut1MinusUtc=i};return e}),define("ThirdParty/sprintf",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,n=0,r=t[n++],i=function(e,t,n,r){n||(n=" ");var i=e.length>=t?"":Array(1+t-e.length>>>0).join(n);return r?e+i:i+e},a=function(e,t,n,r,a,o){var u=r-e.length;return u>0&&(e=n||!a?i(e,r,o,n):e.slice(0,t.length)+i("",u,"0",!0)+e.slice(t.length)),e},o=function(e,t,n,r,o,u,s){var c=e>>>0;return n=n&&c&&{2:"0b",8:"0",16:"0x"}[t]||"",e=n+i(c.toString(t),u||0,"0",!1),a(e,n,r,o,s)},u=function(e,t,n,r,i,o){return null!=r&&(e=e.slice(0,r)),a(e,"",t,n,i,o)},s=function(e,r,s,c,l,f,h){var d,m,p,y,v;if("%%"==e)return"%";for(var g=!1,w="",x=!1,S=!1,E=" ",M=s.length,O=0;s&&M>O;O++)switch(s.charAt(O)){case" ":w=" ";break;case"+":w="+";break;case"-":g=!0;break;case"'":E=s.charAt(O+1);break;case"0":x=!0;break;case"#":S=!0}if(c=c?"*"==c?+t[n++]:"*"==c.charAt(0)?+t[c.slice(1,-1)]:+c:0,0>c&&(c=-c,g=!0),!isFinite(c))throw new Error("sprintf: (minimum-)width must be finite");switch(f=f?"*"==f?+t[n++]:"*"==f.charAt(0)?+t[f.slice(1,-1)]:+f:"fFeE".indexOf(h)>-1?6:"d"==h?0:void 0,v=r?t[r.slice(0,-1)]:t[n++],h){case"s":return u(String(v),g,c,f,x,E);case"c":return u(String.fromCharCode(+v),g,c,f,x);case"b":return o(v,2,S,g,c,f,x);case"o":return o(v,8,S,g,c,f,x);case"x":return o(v,16,S,g,c,f,x);case"X":return o(v,16,S,g,c,f,x).toUpperCase();case"u":return o(v,10,S,g,c,f,x);case"i":case"d":return d=+v||0,d=Math.round(d-d%1),m=0>d?"-":w,v=m+i(String(Math.abs(d)),f,"0",!1),a(v,m,g,c,x);case"e":case"E":case"f":case"F":case"g":case"G":return d=+v,m=0>d?"-":w,p=["toExponential","toFixed","toPrecision"]["efg".indexOf(h.toLowerCase())],y=["toString","toUpperCase"]["eEfFgG".indexOf(h)%2],v=m+Math.abs(d)[p](f),a(v,m,g,c,x)[y]();default:return e}};return r.replace(e,s)}return e}),define("Core/GregorianDate",[],function(){"use strict";var e=function(e,t,n,r,i,a,o,u){this.year=e,this.month=t,this.day=n,this.hour=r,this.minute=i,this.second=a,this.millisecond=o,this.isLeapSecond=u};return e}),define("Core/isLeapYear",["./DeveloperError"],function(){"use strict";function e(e){return 0===e%4&&0!==e%100||0===e%400}return e}),define("Core/LeapSecond",[],function(){"use strict";var e=function(e,t){this.julianDate=e,this.offset=t};return e}),define("Core/TimeConstants",["./freezeObject"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)}),define("Core/TimeStandard",["./freezeObject"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)}),define("Core/JulianDate",["../ThirdParty/sprintf","./binarySearch","./defaultValue","./defined","./DeveloperError","./GregorianDate","./isLeapYear","./LeapSecond","./TimeConstants","./TimeStandard"],function(e,t,n,r,i,a,o,u,s,c){"use strict";function l(e,t){return R.compare(e.julianDate,t.julianDate)}function f(e){g.julianDate=e;var n=R.leapSeconds,r=t(n,g,l);0>r&&(r=~r),r>=n.length&&(r=n.length-1);var i=n[r].offset;if(r>0){var a=R.secondsDifference(n[r].julianDate,e);a>i&&(r--,i=n[r].offset)}R.addSeconds(e,i,e)}function h(e,n){g.julianDate=e;var r=R.leapSeconds,i=t(r,g,l);if(0>i&&(i=~i),0===i)return R.addSeconds(e,-r[0].offset,n);if(i>=r.length)return R.addSeconds(e,-r[i-1].offset,n);var a=R.secondsDifference(r[i].julianDate,e);return 0===a?R.addSeconds(e,-r[i].offset,n):1>=a?void 0:R.addSeconds(e,-r[--i].offset,n)}function d(e,t,n){var r=0|t/s.SECONDS_PER_DAY;return e+=r,t-=s.SECONDS_PER_DAY*r,0>t&&(e--,t+=s.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function m(e,t,n,r,i,a,o){var u=0|(t-14)/12,c=e+4800+u,l=(0|1461*c/4)+(0|367*(t-2-12*u)/12)-(0|3*((c+100)/100)/4)+n-32075;r-=12,0>r&&(r+=24);var f=a+(r*s.SECONDS_PER_HOUR+i*s.SECONDS_PER_MINUTE+o*s.SECONDS_PER_MILLISECOND);return f>=43200&&(l-=1),[l,f]}var p=new a,y=[31,28,31,30,31,30,31,31,30,31,30,31],v=29,g=new u,w=/^(\d{4})$/,x=/^(\d{4})-(\d{2})$/,S=/^(\d{4})-?(\d{3})$/,E=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,M=/^(\d{4})-?(\d{2})-?(\d{2})$/,O=/([Z+\-])?(\d{2})?:?(\d{2})?$/,_=/^(\d{2})(\.\d+)?/.source+O.source,P=/^(\d{2}):?(\d{2})(\.\d+)?/.source+O.source,C=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+O.source,z="Invalid ISO 8601 date.",R=function(e,t,r){this.dayNumber=void 0,this.secondsOfDay=void 0,e=n(e,0),t=n(t,0),r=n(r,c.UTC);var i=0|e;t+=(e-i)*s.SECONDS_PER_DAY,d(i,t,this),r===c.UTC&&f(this)};R.fromDate=function(e,t){var n=m(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return r(t)?(d(n[0],n[1],t),f(t),t):new R(n[0],n[1],c.UTC)},R.fromIso8601=function(e,t){e=e.replace(",",".");var n,a,u,s=e.split("T"),l=1,h=1,p=0,g=0,O=0,I=0,N=s[0],T=s[1];if(!r(N))throw new i(z);var b;if(s=N.match(M),null!==s){if(b=N.split("-").length-1,b>0&&2!==b)throw new i(z);n=+s[1],l=+s[2],h=+s[3]}else if(s=N.match(x),null!==s)n=+s[1],l=+s[2];else if(s=N.match(w),null!==s)n=+s[1];else{var A;if(s=N.match(S),null!==s){if(n=+s[1],A=+s[2],u=o(n),1>A||u&&A>366||!u&&A>365)throw new i(z)}else{if(s=N.match(E),null===s)throw new i(z);n=+s[1];var D=+s[2],q=+s[3]||0;if(b=N.split("-").length-1,b>0&&(!r(s[3])&&1!==b||r(s[3])&&2!==b))throw new i(z);var U=new Date(Date.UTC(n,0,4));A=7*D+q-U.getUTCDay()-3}a=new Date(Date.UTC(n,0,1)),a.setUTCDate(A),l=a.getUTCMonth()+1,h=a.getUTCDate()}if(u=o(n),1>l||l>12||1>h||(2!==l||!u)&&h>y[l-1]||u&&2===l&&h>v)throw new i(z);var L;if(r(T)){if(s=T.match(C),null!==s){if(b=T.split(":").length-1,b>0&&2!==b&&3!==b)throw new i(z);p=+s[1],g=+s[2],O=+s[3],I=1e3*+(s[4]||0),L=5}else if(s=T.match(P),null!==s){if(b=T.split(":").length-1,b>0&&1!==b)throw new i(z);p=+s[1],g=+s[2],O=60*+(s[3]||0),L=4}else{if(s=T.match(_),null===s)throw new i(z);p=+s[1],g=60*+(s[2]||0),L=3}if(g>=60||O>=61||p>24||24===p&&(g>0||O>0||I>0))throw new i(z);var B=s[L],W=+s[L+1],F=+(s[L+2]||0);switch(B){case"+":p-=W,g-=F;break;case"-":p+=W,g+=F;break;case"Z":break;default:g+=new Date(Date.UTC(n,l-1,h,p,g)).getTimezoneOffset()}}else g+=new Date(n,l-1,h).getTimezoneOffset();var k=60===O;for(k&&O--;g>=60;)g-=60,p++;for(;p>=24;)p-=24,h++;for(a=u&&2===l?v:y[l-1];h>a;)h-=a,l++,l>12&&(l-=12,n++),a=u&&2===l?v:y[l-1];for(;0>g;)g+=60,p--;for(;0>p;)p+=24,h--;for(;1>h;)l--,1>l&&(l+=12,n--),a=u&&2===l?v:y[l-1],h+=a;var V=m(n,l,h,p,g,O,I);return r(t)?(d(V[0],V[1],t),f(t)):t=new R(V[0],V[1],c.UTC),k&&R.addSeconds(t,1,t),t},R.now=function(e){return R.fromDate(new Date,e)};var I=new R(0,0,c.TAI);return R.toGregorianDate=function(e,t){var n=!1,i=h(e,I);r(i)||(R.addSeconds(e,-1,I),i=h(I,I),n=!0);var o=i.dayNumber,u=i.secondsOfDay;u>=43200&&(o+=1);var c=0|o+68569,l=0|4*c/146097;c=0|c-(0|(146097*l+3)/4);var f=0|4e3*(c+1)/1461001;c=0|c-(0|1461*f/4)+31;var d=0|80*c/2447,m=0|c-(0|2447*d/80);c=0|d/11;var p=0|d+2-12*c,y=0|100*(l-49)+f+c,v=0|u/s.SECONDS_PER_HOUR,g=u-v*s.SECONDS_PER_HOUR,w=0|g/s.SECONDS_PER_MINUTE;g-=w*s.SECONDS_PER_MINUTE;var x=0|g,S=(g-x)/s.SECONDS_PER_MILLISECOND;return v+=12,v>23&&(v-=24),n&&(x+=1),r(t)?(t.year=y,t.month=p,t.day=m,t.hour=v,t.minute=w,t.second=x,t.millisecond=S,t.isLeapSecond=n,t):new a(y,p,m,v,w,x,S,n)},R.toDate=function(e){var t=R.toGregorianDate(e,p),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))},R.toIso8601=function(t,n){var i,a=R.toGregorianDate(t,a);return r(n)||0===a.millisecond?r(n)&&0!==n?(i=(.01*a.millisecond).toFixed(n).replace(".","").slice(0,n),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,i)):e("%04d-%02d-%02dT%02d:%02d:%02dZ",a.year,a.month,a.day,a.hour,a.minute,a.second):(i=(.01*a.millisecond).toString().replace(".",""),e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,i))},R.clone=function(e,t){return r(e)?r(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new R(e.dayNumber,e.secondsOfDay,c.TAI):void 0},R.compare=function(e,t){var n=e.dayNumber-t.dayNumber;return 0!==n?n:e.secondsOfDay-t.secondsOfDay},R.equals=function(e,t){return e===t||r(e)&&r(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay},R.equalsEpsilon=function(e,t,n){return e===t||r(e)&&r(t)&&Math.abs(R.secondsDifference(e,t))<=n},R.totalDays=function(e){return e.dayNumber+e.secondsOfDay/s.SECONDS_PER_DAY},R.secondsDifference=function(e,t){var n=(e.dayNumber-t.dayNumber)*s.SECONDS_PER_DAY;return n+(e.secondsOfDay-t.secondsOfDay)},R.daysDifference=function(e,t){var n=e.dayNumber-t.dayNumber,r=(e.secondsOfDay-t.secondsOfDay)/s.SECONDS_PER_DAY;return n+r},R.computeTaiMinusUtc=function(e){g.julianDate=e;var n=R.leapSeconds,r=t(n,g,l);return 0>r&&(r=~r,--r,0>r&&(r=0)),n[r].offset},R.addSeconds=function(e,t,n){return d(e.dayNumber,e.secondsOfDay+t,n)},R.addMinutes=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_MINUTE;return d(e.dayNumber,r,n)},R.addHours=function(e,t,n){var r=e.secondsOfDay+t*s.SECONDS_PER_HOUR;return d(e.dayNumber,r,n)},R.addDays=function(e,t,n){var r=e.dayNumber+t;return d(r,e.secondsOfDay,n)},R.lessThan=function(e,t){return R.compare(e,t)<0},R.lessThanOrEquals=function(e,t){return R.compare(e,t)<=0},R.greaterThan=function(e,t){return R.compare(e,t)>0},R.greaterThanOrEquals=function(e,t){return R.compare(e,t)>=0},R.prototype.clone=function(e){return R.clone(this,e)},R.prototype.equals=function(e){return R.equals(this,e)},R.prototype.equalsEpsilon=function(e,t){return R.equalsEpsilon(this,e,t)},R.prototype.toString=function(){return R.toIso8601(this)},R.leapSeconds=[new u(new R(2441317,43210,c.TAI),10),new u(new R(2441499,43211,c.TAI),11),new u(new R(2441683,43212,c.TAI),12),new u(new R(2442048,43213,c.TAI),13),new u(new R(2442413,43214,c.TAI),14),new u(new R(2442778,43215,c.TAI),15),new u(new R(2443144,43216,c.TAI),16),new u(new R(2443509,43217,c.TAI),17),new u(new R(2443874,43218,c.TAI),18),new u(new R(2444239,43219,c.TAI),19),new u(new R(2444786,43220,c.TAI),20),new u(new R(2445151,43221,c.TAI),21),new u(new R(2445516,43222,c.TAI),22),new u(new R(2446247,43223,c.TAI),23),new u(new R(2447161,43224,c.TAI),24),new u(new R(2447892,43225,c.TAI),25),new u(new R(2448257,43226,c.TAI),26),new u(new R(2448804,43227,c.TAI),27),new u(new R(2449169,43228,c.TAI),28),new u(new R(2449534,43229,c.TAI),29),new u(new R(2450083,43230,c.TAI),30),new u(new R(2450630,43231,c.TAI),31),new u(new R(2451179,43232,c.TAI),32),new u(new R(2453736,43233,c.TAI),33),new u(new R(2454832,43234,c.TAI),34),new u(new R(2456109,43235,c.TAI),35),new u(new R(2457204,43236,c.TAI),36)],R}),define("Core/clone",["./defaultValue"],function(e){"use strict";var t=function(n,r){if(null===n||"object"!=typeof n)return n;r=e(r,!1);var i=new n.constructor;for(var a in n)if(n.hasOwnProperty(a)){var o=n[a];r&&(o=t(o,r)),i[a]=o}return i};return t}),define("Core/parseResponseHeaders",[],function(){"use strict";var e=function(e){var t={};if(!e)return t;for(var n=e.split("\r\n"),r=0;r<n.length;++r){var i=n[r],a=i.indexOf(": ");if(a>0){var o=i.substring(0,a),u=i.substring(a+2);t[o]=u}}return t};return e}),define("Core/RequestErrorEvent",["./defined","./parseResponseHeaders"],function(e,t){"use strict";var n=function(e,n,r){this.statusCode=e,this.response=n,this.responseHeaders=r,"string"==typeof this.responseHeaders&&(this.responseHeaders=t(this.responseHeaders))};return n.prototype.toString=function(){var t="Request has failed.";return e(this.statusCode)&&(t+=" Status Code: "+this.statusCode),t},n}),define("Core/loadWithXhr",["../ThirdParty/when","./defaultValue","./defined","./DeveloperError","./RequestErrorEvent","./RuntimeError"],function(e,t,n,r,i,a){"use strict";function o(e,t){var n=decodeURIComponent(t);return e?atob(n):n}function u(e,t){for(var n=o(e,t),r=new ArrayBuffer(n.length),i=new Uint8Array(r),a=0;a<n.length;a++)i[a]=n.charCodeAt(a);return r}function s(e,n){n=t(n,"");var i=e[1],a=!!e[2],s=e[3];switch(n){case"":case"text":return o(a,s);case"arraybuffer":return u(a,s);case"blob":var c=u(a,s);return new Blob([c],{type:i});case"document":var l=new DOMParser;return l.parseFromString(o(a,s),i);case"json":return JSON.parse(o(a,s));default:throw new r("Unhandled responseType: "+n)}}var c=function(n){n=t(n,t.EMPTY_OBJECT);var r=n.responseType,i=t(n.method,"GET"),a=n.data,o=n.headers,u=n.overrideMimeType;return e(n.url,function(t){var n=e.defer();return c.load(t,r,i,a,o,n,u),n.promise})},l=/^data:(.*?)(;base64)?,(.*)$/;return c.load=function(e,t,r,o,u,c,f){var h=l.exec(e);if(null!==h)return c.resolve(s(h,t)),void 0;var d=new XMLHttpRequest;if(n(f)&&n(d.overrideMimeType)&&d.overrideMimeType(f),d.open(r,e,!0),n(u))for(var m in u)u.hasOwnProperty(m)&&d.setRequestHeader(m,u[m]);n(t)&&(d.responseType=t),d.onload=function(){200===d.status?n(d.response)?c.resolve(d.response):n(d.responseXML)&&d.responseXML.hasChildNodes()?c.resolve(d.responseXML):n(d.responseText)?c.resolve(d.responseText):c.reject(new a("unknown XMLHttpRequest response type.")):c.reject(new i(d.status,d.response,d.getAllResponseHeaders()))},d.onerror=function(){c.reject(new i)},d.send(o)},c.defaultLoad=c.load,c}),define("Core/loadText",["./loadWithXhr"],function(e){"use strict";var t=function(t,n){return e({url:t,headers:n})};return t}),define("Core/loadJson",["./clone","./defined","./DeveloperError","./loadText"],function(e,t,n,r){"use strict";var i={Accept:"application/json,*/*;q=0.01"},a=function(n,a){return t(a)?t(a.Accept)||(a=e(a),a.Accept=i.Accept):a=i,r(n,a).then(function(e){return JSON.parse(e)})};return a}),define("Core/EarthOrientationParameters",["../ThirdParty/when","./binarySearch","./defaultValue","./defined","./EarthOrientationParametersSample","./freezeObject","./JulianDate","./LeapSecond","./loadJson","./RuntimeError","./TimeConstants","./TimeStandard"],function(e,t,n,r,i,a,o,u,s,c,l,f){"use strict";function h(e,t){return o.compare(e.julianDate,t)}function d(e,n){if(!r(n.columnNames))return e._dataError="Error in loaded EOP data: The columnNames property is required.",void 0;if(!r(n.samples))return e._dataError="Error in loaded EOP data: The samples property is required.",void 0;var i=n.columnNames.indexOf("modifiedJulianDateUtc"),a=n.columnNames.indexOf("xPoleWanderRadians"),s=n.columnNames.indexOf("yPoleWanderRadians"),c=n.columnNames.indexOf("ut1MinusUtcSeconds"),d=n.columnNames.indexOf("xCelestialPoleOffsetRadians"),m=n.columnNames.indexOf("yCelestialPoleOffsetRadians"),p=n.columnNames.indexOf("taiMinusUtcSeconds");if(0>i||0>a||0>s||0>c||0>d||0>m||0>p)return e._dataError="Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns",void 0;var y=e._samples=n.samples,v=e._dates=[];e._dateColumn=i,e._xPoleWanderRadiansColumn=a,e._yPoleWanderRadiansColumn=s,e._ut1MinusUtcSecondsColumn=c,e._xCelestialPoleOffsetRadiansColumn=d,e._yCelestialPoleOffsetRadiansColumn=m,e._taiMinusUtcSecondsColumn=p,e._columnCount=n.columnNames.length,e._lastIndex=void 0;for(var g,w=e._addNewLeapSeconds,x=0,S=y.length;S>x;x+=e._columnCount){var E=y[x+i],M=y[x+p],O=E+l.MODIFIED_JULIAN_DATE_DIFFERENCE,_=new o(O,M,f.TAI);if(v.push(_),w){if(M!==g&&r(g)){var P=o.leapSeconds,C=t(P,_,h);if(0>C){var z=new u(_,M);P.splice(~C,0,z)}}g=M}}}function m(e,t,n,r,i){var a=n*r;i.xPoleWander=t[a+e._xPoleWanderRadiansColumn],i.yPoleWander=t[a+e._yPoleWanderRadiansColumn],i.xPoleOffset=t[a+e._xCelestialPoleOffsetRadiansColumn],i.yPoleOffset=t[a+e._yCelestialPoleOffsetRadiansColumn],i.ut1MinusUtc=t[a+e._ut1MinusUtcSecondsColumn]}function p(e,t,n){return t+e*(n-t)}function y(e,t,n,r,i,a,u){var s=e._columnCount;if(a>t.length-1)return u.xPoleWander=0,u.yPoleWander=0,u.xPoleOffset=0,u.yPoleOffset=0,u.ut1MinusUtc=0,u; +var c=t[i],l=t[a];if(c.equals(l)||r.equals(c))return m(e,n,i,s,u),u;if(r.equals(l))return m(e,n,a,s,u),u;var f=o.secondsDifference(r,c)/o.secondsDifference(l,c),h=i*s,d=a*s,y=n[h+e._ut1MinusUtcSecondsColumn],v=n[d+e._ut1MinusUtcSecondsColumn],g=v-y;if(g>.5||-.5>g){var w=n[h+e._taiMinusUtcSecondsColumn],x=n[d+e._taiMinusUtcSecondsColumn];w!==x&&(l.equals(r)?y=v:v-=x-w)}return u.xPoleWander=p(f,n[h+e._xPoleWanderRadiansColumn],n[d+e._xPoleWanderRadiansColumn]),u.yPoleWander=p(f,n[h+e._yPoleWanderRadiansColumn],n[d+e._yPoleWanderRadiansColumn]),u.xPoleOffset=p(f,n[h+e._xCelestialPoleOffsetRadiansColumn],n[d+e._xCelestialPoleOffsetRadiansColumn]),u.yPoleOffset=p(f,n[h+e._yCelestialPoleOffsetRadiansColumn],n[d+e._yCelestialPoleOffsetRadiansColumn]),u.ut1MinusUtc=p(f,y,v),u}var v=function(t){if(t=n(t,n.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._downloadPromise=void 0,this._dataError=void 0,this._addNewLeapSeconds=n(t.addNewLeapSeconds,!0),r(t.data))d(this,t.data);else if(r(t.url)){var i=this;this._downloadPromise=e(s(t.url),function(e){d(i,e)},function(){i._dataError="An error occurred while retrieving the EOP data from the URL "+t.url+"."})}else d(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})};return v.NONE=a({getPromiseToLoad:function(){return e()},compute:function(e,t){return r(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new i(0,0,0,0,0),t}}),v.prototype.getPromiseToLoad=function(){return e(this._downloadPromise)},v.prototype.compute=function(e,n){if(!r(this._samples)){if(r(this._dataError))throw new c(this._dataError);return void 0}if(r(n)||(n=new i(0,0,0,0,0)),0===this._samples.length)return n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0,n;var a=this._dates,u=this._lastIndex,s=0,l=0;if(r(u)){var f=a[u],h=a[u+1],d=o.lessThanOrEquals(f,e),m=!r(h),p=m||o.greaterThanOrEquals(h,e);if(d&&p)return s=u,!m&&h.equals(e)&&++s,l=s+1,y(this,a,this._samples,e,s,l,n),n}var v=t(a,e,o.compare,this._dateColumn);return v>=0?(v<a.length-1&&a[v+1].equals(e)&&++v,s=v,l=v):(l=~v,s=l-1,0>s&&(s=0)),this._lastIndex=s,y(this,a,this._samples,e,s,l,n),n},v}),define("ThirdParty/Uri",[],function(){function e(t){if(t instanceof e)this.scheme=t.scheme,this.authority=t.authority,this.path=t.path,this.query=t.query,this.fragment=t.fragment;else if(t){var n=r.exec(t);this.scheme=n[1],this.authority=n[2],this.path=n[3],this.query=n[4],this.fragment=n[5]}}function t(e){var t=unescape(e);return a.test(t)?t:e.toUpperCase()}function n(e,t,n,r){return(t||"")+n.toLowerCase()+(r||"")}e.prototype.scheme=null,e.prototype.authority=null,e.prototype.path="",e.prototype.query=null,e.prototype.fragment=null;var r=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme},e.prototype.getAuthority=function(){return this.authority},e.prototype.getPath=function(){return this.path},e.prototype.getQuery=function(){return this.query},e.prototype.getFragment=function(){return this.fragment},e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment},e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query},e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment},e.prototype.normalize=function(){this.removeDotSegments(),this.scheme&&(this.scheme=this.scheme.toLowerCase()),this.authority&&(this.authority=this.authority.replace(o,n).replace(i,t)),this.path&&(this.path=this.path.replace(i,t)),this.query&&(this.query=this.query.replace(i,t)),this.fragment&&(this.fragment=this.fragment.replace(i,t))};var i=/%[0-9a-z]{2}/gi,a=/[a-zA-Z0-9\-\._~]/,o=/(.*@)?([^@:]*)(:.*)?/;return e.prototype.resolve=function(t){var n=new e;return this.scheme?(n.scheme=this.scheme,n.authority=this.authority,n.path=this.path,n.query=this.query):(n.scheme=t.scheme,this.authority?(n.authority=this.authority,n.path=this.path,n.query=this.query):(n.authority=t.authority,""==this.path?(n.path=t.path,n.query=this.query||t.query):("/"==this.path.charAt(0)?(n.path=this.path,n.removeDotSegments()):(n.path=t.authority&&""==t.path?"/"+this.path:t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path,n.removeDotSegments()),n.query=this.query))),n.fragment=this.fragment,n},e.prototype.removeDotSegments=function(){var e,t=this.path.split("/"),n=[],r=""==t[0];for(r&&t.shift(),""==t[0]?t.shift():null;t.length;)e=t.shift(),".."==e?n.pop():"."!=e&&n.push(e);("."==e||".."==e)&&n.push(""),r&&n.unshift(""),this.path=n.join("/")},e.prototype.toString=function(){var e="";return this.scheme&&(e+=this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},e}),define("Core/buildModuleUrl",["../ThirdParty/Uri","./defined","./DeveloperError","require"],function(e,t,n,r){"use strict";function i(){for(var e=document.getElementsByTagName("script"),t=0,n=e.length;n>t;++t){var r=e[t].getAttribute("src"),i=f.exec(r);if(null!==i)return i[1]}return void 0}function a(){if(t(s))return s;var r;if(r="undefined"!=typeof CESIUM_BASE_URL?CESIUM_BASE_URL:i(),!t(r))throw new n("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return s=new e(r).resolve(new e(document.location.href))}function o(e){return r.toUrl("../"+e)}function u(t){return new e(t).resolve(a()).toString()}var s,c,l,f=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i,h=function(e){t(c)||(c=t(r.toUrl)?o:u),t(l)||(l=document.createElement("a"));var n=c(e);return l.href=n,l.href=l.href,l.href};return h._cesiumScriptRegex=f,h.setBaseUrl=function(t){s=new e(t).resolve(new e(document.location.href))},h}),define("Core/Iau2006XysSample",[],function(){"use strict";var e=function(e,t,n){this.x=e,this.y=t,this.s=n};return e}),define("Core/Iau2006XysData",["../ThirdParty/when","./buildModuleUrl","./defaultValue","./defined","./Iau2006XysSample","./JulianDate","./loadJson","./TimeStandard"],function(e,t,n,r,i,a,o,u){"use strict";function s(e,t,n){var r=f;return r.dayNumber=t,r.secondsOfDay=n,a.daysDifference(r,e._sampleZeroDateTT)}function c(n,i){if(n._chunkDownloadsInProgress[i])return n._chunkDownloadsInProgress[i];var a=e.defer();n._chunkDownloadsInProgress[i]=a;var u,s=n._xysFileUrlTemplate;return u=r(s)?s.replace("{0}",i):t("Assets/IAU2006_XYS/IAU2006_XYS_"+i+".json"),e(o(u),function(e){n._chunkDownloadsInProgress[i]=!1;for(var t=n._samples,r=e.samples,o=3*i*n._samplesPerXysFile,u=0,s=r.length;s>u;++u)t[o+u]=r[u];a.resolve()}),a.promise}var l=function(e){e=n(e,n.EMPTY_OBJECT),this._xysFileUrlTemplate=e.xysFileUrlTemplate,this._interpolationOrder=n(e.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=n(e.sampleZeroJulianEphemerisDate,2442396.5),this._sampleZeroDateTT=new a(this._sampleZeroJulianEphemerisDate,0,u.TAI),this._stepSizeDays=n(e.stepSizeDays,1),this._samplesPerXysFile=n(e.samplesPerXysFile,1e3),this._totalSamples=n(e.totalSamples,27426),this._samples=new Array(3*this._totalSamples),this._chunkDownloadsInProgress=[];for(var t=this._interpolationOrder,r=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t),s=0;t>=s;++s){r[s]=o,i[s]=s*this._stepSizeDays;for(var c=0;t>=c;++c)c!==s&&(r[s]*=s-c);r[s]=1/r[s]}this._work=new Array(t+1),this._coef=new Array(t+1)},f=new a(0,0,u.TAI);return l.prototype.preload=function(t,n,r,i){var a=s(this,t,n),o=s(this,r,i),u=0|a/this._stepSizeDays-this._interpolationOrder/2;0>u&&(u=0);var l=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);for(var f=0|u/this._samplesPerXysFile,h=0|l/this._samplesPerXysFile,d=[],m=f;h>=m;++m)d.push(c(this,m));return e.all(d)},l.prototype.computeXysRadians=function(e,t,n){var a=s(this,e,t);if(0>a)return void 0;var o=0|a/this._stepSizeDays;if(o>=this._totalSamples)return void 0;var u=this._interpolationOrder,l=o-(0|u/2);0>l&&(l=0);var f=l+u;f>=this._totalSamples&&(f=this._totalSamples-1,l=f-u,0>l&&(l=0));var h=!1,d=this._samples;if(r(d[3*l])||(c(this,0|l/this._samplesPerXysFile),h=!0),r(d[3*f])||(c(this,0|f/this._samplesPerXysFile),h=!0),h)return void 0;r(n)?(n.x=0,n.y=0,n.s=0):n=new i(0,0,0);var m,p,y=a-l*this._stepSizeDays,v=this._work,g=this._denominators,w=this._coef,x=this._xTable;for(m=0;u>=m;++m)v[m]=y-x[m];for(m=0;u>=m;++m){for(w[m]=1,p=0;u>=p;++p)p!==m&&(w[m]*=v[p]);w[m]*=g[m];var S=3*(l+m);n.x+=w[m]*d[S++],n.y+=w[m]*d[S++],n.s+=w[m]*d[S]}return n},l}),define("Core/Fullscreen",["./defined","./defineProperties"],function(e,t){"use strict";var n,r={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},i={};return t(i,{element:{get:function(){return i.supportsFullscreen()?document[r.fullscreenElement]:void 0}},changeEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenchange:void 0}},errorEventName:{get:function(){return i.supportsFullscreen()?r.fullscreenerror:void 0}},enabled:{get:function(){return i.supportsFullscreen()?document[r.fullscreenEnabled]:void 0}},fullscreen:{get:function(){return i.supportsFullscreen()?null!==i.element:void 0}}}),i.supportsFullscreen=function(){if(e(n))return n;n=!1;var t=document.body;if("function"==typeof t.requestFullscreen)return r.requestFullscreen="requestFullscreen",r.exitFullscreen="exitFullscreen",r.fullscreenEnabled="fullscreenEnabled",r.fullscreenElement="fullscreenElement",r.fullscreenchange="fullscreenchange",r.fullscreenerror="fullscreenerror",n=!0;for(var i,a=["webkit","moz","o","ms","khtml"],o=0,u=a.length;u>o;++o){var s=a[o];i=s+"RequestFullscreen","function"==typeof t[i]?(r.requestFullscreen=i,n=!0):(i=s+"RequestFullScreen","function"==typeof t[i]&&(r.requestFullscreen=i,n=!0)),i=s+"ExitFullscreen","function"==typeof document[i]?r.exitFullscreen=i:(i=s+"CancelFullScreen","function"==typeof document[i]&&(r.exitFullscreen=i)),i=s+"FullscreenEnabled",e(document[i])?r.fullscreenEnabled=i:(i=s+"FullScreenEnabled",e(document[i])&&(r.fullscreenEnabled=i)),i=s+"FullscreenElement",e(document[i])?r.fullscreenElement=i:(i=s+"FullScreenElement",e(document[i])&&(r.fullscreenElement=i)),i=s+"fullscreenchange",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenChange"),r.fullscreenchange=i),i=s+"fullscreenerror",e(document["on"+i])&&("ms"===s&&(i="MSFullscreenError"),r.fullscreenerror=i)}return n},i.requestFullscreen=function(e){i.supportsFullscreen()&&e[r.requestFullscreen]()},i.exitFullscreen=function(){i.supportsFullscreen()&&document[r.exitFullscreen]()},i}),define("Core/FeatureDetection",["./defaultValue","./defined","./Fullscreen"],function(e,t,n){"use strict";function r(e){for(var t=e.split("."),n=0,r=t.length;r>n;++n)t[n]=parseInt(t[n],10);return t}function i(){if(!t(y)){y=!1;var e=/ Chrome\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(y=!0,v=r(e[1]))}return y}function a(){return i()&&v}function o(){if(!t(g)&&(g=!1,!i()&&/ Safari\/[\.0-9]+/.test(navigator.userAgent))){var e=/ Version\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(g=!0,w=r(e[1]))}return g}function u(){return o()&&w}function s(){if(!t(x)){x=!1;var e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(navigator.userAgent);null!==e&&(x=!0,S=r(e[1]),S.isNightly=!!e[2])}return x}function c(){return s()&&S}function l(){if(!t(E)){E=!1;var e;"Microsoft Internet Explorer"===navigator.appName?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(E=!0,M=r(e[1]))):"Netscape"===navigator.appName&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(navigator.userAgent),null!==e&&(E=!0,M=r(e[1])))}return E}function f(){return l()&&M}function h(){if(!t(O)){O=!1;var e=/Firefox\/([\.0-9]+)/.exec(navigator.userAgent);null!==e&&(O=!0,_=r(e[1]))}return O}function d(){return t(P)||(P=/Windows/i.test(navigator.appVersion)),P}function m(){return h()&&_}function p(){return t(C)||(C=t(window.PointerEvent)&&(!t(window.navigator.pointerEnabled)||window.navigator.pointerEnabled)),C}var y,v,g,w,x,S,E,M,O,_,P,C,z={isChrome:i,chromeVersion:a,isSafari:o,safariVersion:u,isWebkit:s,webkitVersion:c,isInternetExplorer:l,internetExplorerVersion:f,isFirefox:h,firefoxVersion:m,isWindows:d,hardwareConcurrency:e(navigator.hardwareConcurrency,3),supportsPointerEvents:p};return z.supportsFullscreen=function(){return n.supportsFullscreen()},z.supportsTypedArrays=function(){return"undefined"!=typeof ArrayBuffer},z.supportsWebWorkers=function(){return"undefined"!=typeof Worker},z}),define("Core/Quaternion",["./Cartesian3","./defaultValue","./defined","./DeveloperError","./FeatureDetection","./freezeObject","./Math","./Matrix3"],function(e,t,n,r,i,a,o,u){"use strict";var s=function(e,n,r,i){this.x=t(e,0),this.y=t(n,0),this.z=t(r,0),this.w=t(i,0)},c=new e;s.fromAxisAngle=function(t,r,i){var a=r/2,o=Math.sin(a);c=e.normalize(t,c);var u=c.x*o,l=c.y*o,f=c.z*o,h=Math.cos(a);return n(i)?(i.x=u,i.y=l,i.z=f,i.w=h,i):new s(u,l,f,h)};var l=[1,2,0],f=new Array(3);s.fromRotationMatrix=function(e,t){var r,i,a,o,c,h=e[u.COLUMN0ROW0],d=e[u.COLUMN1ROW1],m=e[u.COLUMN2ROW2],p=h+d+m;if(p>0)r=Math.sqrt(p+1),c=.5*r,r=.5/r,i=(e[u.COLUMN1ROW2]-e[u.COLUMN2ROW1])*r,a=(e[u.COLUMN2ROW0]-e[u.COLUMN0ROW2])*r,o=(e[u.COLUMN0ROW1]-e[u.COLUMN1ROW0])*r;else{var y=l,v=0;d>h&&(v=1),m>h&&m>d&&(v=2);var g=y[v],w=y[g];r=Math.sqrt(e[u.getElementIndex(v,v)]-e[u.getElementIndex(g,g)]-e[u.getElementIndex(w,w)]+1);var x=f;x[v]=.5*r,r=.5/r,c=(e[u.getElementIndex(w,g)]-e[u.getElementIndex(g,w)])*r,x[g]=(e[u.getElementIndex(g,v)]+e[u.getElementIndex(v,g)])*r,x[w]=(e[u.getElementIndex(w,v)]+e[u.getElementIndex(v,w)])*r,i=-x[0],a=-x[1],o=-x[2]}return n(t)?(t.x=i,t.y=a,t.z=o,t.w=c,t):new s(i,a,o,c)};var h=new s;s.fromHeadingPitchRoll=function(t,n,r,i){var a=s.fromAxisAngle(e.UNIT_X,r,h),o=s.fromAxisAngle(e.UNIT_Y,-n,i);i=s.multiply(o,a,o);var u=s.fromAxisAngle(e.UNIT_Z,-t,h);return s.multiply(u,i,i)};var d=new e,m=new e,p=new s,y=new s,v=new s;s.packedLength=4,s.pack=function(e,n,r){r=t(r,0),n[r++]=e.x,n[r++]=e.y,n[r++]=e.z,n[r]=e.w},s.unpack=function(e,r,i){return r=t(r,0),n(i)||(i=new s),i.x=e[r],i.y=e[r+1],i.z=e[r+2],i.w=e[r+3],i},s.packedInterpolationLength=3,s.convertPackedArrayForInterpolation=function(e,t,n,r){s.unpack(e,4*n,v),s.conjugate(v,v);for(var i=0,a=n-t+1;a>i;i++){var o=3*i;s.unpack(e,4*(t+i),p),s.multiply(p,v,p),p.w<0&&s.negate(p,p),s.computeAxis(p,d);var u=s.computeAngle(p);r[o]=d.x*u,r[o+1]=d.y*u,r[o+2]=d.z*u}},s.unpackInterpolationResult=function(t,r,i,a,o){n(o)||(o=new s),e.fromArray(t,0,m);var u=e.magnitude(m);return s.unpack(r,4*a,y),0===u?s.clone(s.IDENTITY,p):s.fromAxisAngle(m,u,p),s.multiply(p,y,o)},s.clone=function(e,t){return n(e)?n(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new s(e.x,e.y,e.z,e.w):void 0},s.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t},s.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w},s.magnitude=function(e){return Math.sqrt(s.magnitudeSquared(e))},s.normalize=function(e,t){var n=1/s.magnitude(e),r=e.x*n,i=e.y*n,a=e.z*n,o=e.w*n;return t.x=r,t.y=i,t.z=a,t.w=o,t},s.inverse=function(e,t){var n=s.magnitudeSquared(e);return t=s.conjugate(e,t),s.multiplyByScalar(t,1/n,t)},s.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n},s.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n},s.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t},s.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w},s.multiply=function(e,t,n){var r=e.x,i=e.y,a=e.z,o=e.w,u=t.x,s=t.y,c=t.z,l=t.w,f=o*u+r*l+i*c-a*s,h=o*s-r*c+i*l+a*u,d=o*c+r*s-i*u+a*l,m=o*l-r*u-i*s-a*c;return n.x=f,n.y=h,n.z=d,n.w=m,n},s.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n},s.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n},s.computeAxis=function(e,t){var n=e.w;if(Math.abs(n-1)<o.EPSILON6)return t.x=t.y=t.z=0,t;var r=1/Math.sqrt(1-n*n);return t.x=e.x*r,t.y=e.y*r,t.z=e.z*r,t},s.computeAngle=function(e){return Math.abs(e.w-1)<o.EPSILON6?0:2*Math.acos(e.w)};var g=new s;s.lerp=function(e,t,n,r){return g=s.multiplyByScalar(t,n,g),r=s.multiplyByScalar(e,1-n,r),s.add(g,r,r)};var w=new s,x=new s,S=new s;s.slerp=function(e,t,n,r){var i=s.dot(e,t),a=t;if(0>i&&(i=-i,a=w=s.negate(t,w)),1-i<o.EPSILON6)return s.lerp(e,a,n,r);var u=Math.acos(i);return x=s.multiplyByScalar(e,Math.sin((1-n)*u),x),S=s.multiplyByScalar(a,Math.sin(n*u),S),r=s.add(x,S,r),s.multiplyByScalar(r,1/Math.sin(u),r)},s.log=function(t,n){var r=o.acosClamped(t.w),i=0;return 0!==r&&(i=r/Math.sin(r)),e.multiplyByScalar(t,i,n)},s.exp=function(t,n){var r=e.magnitude(t),i=0;return 0!==r&&(i=Math.sin(r)/r),n.x=t.x*i,n.y=t.y*i,n.z=t.z*i,n.w=Math.cos(r),n};var E=new e,M=new e,O=new s,_=new s;s.computeInnerQuadrangle=function(t,n,r,i){var a=s.conjugate(n,O);s.multiply(a,r,_);var o=s.log(_,E);s.multiply(a,t,_);var u=s.log(_,M);return e.add(o,u,o),e.multiplyByScalar(o,.25,o),e.negate(o,o),s.exp(o,O),s.multiply(n,O,i)},s.squad=function(e,t,n,r,i,a){var o=s.slerp(e,t,i,O),u=s.slerp(n,r,i,_);return s.slerp(o,u,2*i*(1-i),a)};for(var P=new s,C=1.9011074535173003,z=i.supportsTypedArrays()?new Float32Array(8):[],R=i.supportsTypedArrays()?new Float32Array(8):[],I=i.supportsTypedArrays()?new Float32Array(8):[],N=i.supportsTypedArrays()?new Float32Array(8):[],T=0;7>T;++T){var b=T+1,A=2*b+1;z[T]=1/(b*A),R[T]=b/A}return z[7]=C/136,R[7]=8*C/17,s.fastSlerp=function(e,t,n,r){var i,a=s.dot(e,t);a>=0?i=1:(i=-1,a=-a);for(var o=a-1,u=1-n,c=n*n,l=u*u,f=7;f>=0;--f)I[f]=(z[f]*c-R[f])*o,N[f]=(z[f]*l-R[f])*o;var h=i*n*(1+I[0]*(1+I[1]*(1+I[2]*(1+I[3]*(1+I[4]*(1+I[5]*(1+I[6]*(1+I[7])))))))),d=u*(1+N[0]*(1+N[1]*(1+N[2]*(1+N[3]*(1+N[4]*(1+N[5]*(1+N[6]*(1+N[7])))))))),m=s.multiplyByScalar(e,d,P);return s.multiplyByScalar(t,h,r),s.add(m,r,r)},s.fastSquad=function(e,t,n,r,i,a){var o=s.fastSlerp(e,t,i,O),u=s.fastSlerp(n,r,i,_);return s.fastSlerp(o,u,2*i*(1-i),a)},s.equals=function(e,t){return e===t||n(e)&&n(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w},s.equalsEpsilon=function(e,t,r){return e===t||n(e)&&n(t)&&Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r&&Math.abs(e.w-t.w)<=r},s.ZERO=a(new s(0,0,0,0)),s.IDENTITY=a(new s(0,0,0,1)),s.prototype.clone=function(e){return s.clone(this,e)},s.prototype.equals=function(e){return s.equals(this,e)},s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)},s.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},s}),define("Core/Transforms",["../ThirdParty/when","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./DeveloperError","./EarthOrientationParameters","./EarthOrientationParametersSample","./Ellipsoid","./Iau2006XysData","./Iau2006XysSample","./JulianDate","./Math","./Matrix3","./Matrix4","./Quaternion","./TimeConstants"],function(e,t,n,r,i,a,o,u,s,c,l,f,h,d,m,p,y,v){"use strict";var g={},w=new n,x=new n,S=new n;g.eastNorthUpToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return a(r)?(r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=-o,r[5]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(0,-o,0,e.x,1,0,0,e.y,0,0,o,e.z,0,0,0,1)}var u=w,s=x,l=S;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),a(r)?(r[0]=s.x,r[1]=s.y,r[2]=s.z,r[3]=0,r[4]=l.x,r[5]=l.y,r[6]=l.z,r[7]=0,r[8]=u.x,r[9]=u.y,r[10]=u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(s.x,l.x,u.x,e.x,s.y,l.y,u.y,e.y,s.z,l.z,u.z,e.z,0,0,0,1)};var E=new n,M=new n,O=new n;g.northEastDownToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return a(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=-o,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,1,0,e.y,0,0,-o,e.z,0,0,0,1)}var u=E,s=M,l=O;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),a(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=s.x,r[5]=s.y,r[6]=s.z,r[7]=0,r[8]=-u.x,r[9]=-u.y,r[10]=-u.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,s.x,-u.x,e.x,l.y,s.y,-u.y,e.y,l.z,s.z,-u.z,e.z,0,0,0,1)},g.northUpEastToFixedFrame=function(e,t,r){if(d.equalsEpsilon(e.x,0,d.EPSILON14)&&d.equalsEpsilon(e.y,0,d.EPSILON14)){var o=d.sign(e.z);return a(r)?(r[0]=-o,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[6]=o,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(-o,0,0,e.x,0,0,1,e.y,0,o,0,e.z,0,0,0,1)}var u=w,s=x,l=S;return t=i(t,c.WGS84),t.geodeticSurfaceNormal(e,u),s.x=-e.y,s.y=e.x,s.z=0,n.normalize(s,s),n.cross(u,s,l),a(r)?(r[0]=l.x,r[1]=l.y,r[2]=l.z,r[3]=0,r[4]=u.x,r[5]=u.y,r[6]=u.z,r[7]=0,r[8]=s.x,r[9]=s.y,r[10]=s.z,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,r):new p(l.x,u.x,s.x,e.x,l.y,u.y,s.y,e.y,l.z,u.z,s.z,e.z,0,0,0,1)};var _=new y,P=new n(1,1,1),C=new p;g.headingPitchRollToFixedFrame=function(e,t,r,i,a,o){var u=y.fromHeadingPitchRoll(t,r,i,_),s=p.fromTranslationQuaternionRotationScale(n.ZERO,u,P,C);return o=g.eastNorthUpToFixedFrame(e,a,o),p.multiply(o,s,o)};var z=new p,R=new m;g.headingPitchRollQuaternion=function(e,t,n,r,i,a){var o=g.headingPitchRollToFixedFrame(e,t,n,r,i,z),u=p.getRotation(o,R);return y.fromRotationMatrix(u,a)};var I=24110.54841,N=8640184.812866,T=.093104,b=-62e-7,A=1.1772758384668e-19,D=72921158553e-15,q=d.TWO_PI/86400,U=new h;g.computeTemeToPseudoFixedMatrix=function(e,t){U=h.addSeconds(e,-h.computeTaiMinusUtc(e),U);var n,r=U.dayNumber,i=U.secondsOfDay,o=r-2451545;n=i>=43200?(o+.5)/v.DAYS_PER_JULIAN_CENTURY:(o-.5)/v.DAYS_PER_JULIAN_CENTURY;var u=I+n*(N+n*(T+n*b)),s=u*q%d.TWO_PI,c=D+A*(r-2451545.5),l=(i+.5*v.SECONDS_PER_DAY)%v.SECONDS_PER_DAY,f=s+c*l,p=Math.cos(f),y=Math.sin(f);return a(t)?(t[0]=p,t[1]=-y,t[2]=0,t[3]=y,t[4]=p,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new m(p,y,0,-y,p,0,0,0,1)},g.iau2006XysData=new l,g.earthOrientationParameters=u.NONE;var L=32.184,B=2451545;g.preloadIcrfFixed=function(t){var n=t.start.dayNumber,r=t.start.secondsOfDay+L,i=t.stop.dayNumber,a=t.stop.secondsOfDay+L,o=g.iau2006XysData.preload(n,r,i,a),u=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,u])},g.computeIcrfToFixedMatrix=function(e,t){a(t)||(t=new m);var n=g.computeFixedToIcrfMatrix(e,t);return a(n)?m.transpose(n,t):void 0};var W=new f(0,0,0),F=new s(0,0,0,0,0,0),k=new m,V=new m;g.computeFixedToIcrfMatrix=function(e,t){a(t)||(t=new m);var n=g.earthOrientationParameters.compute(e,F);if(!a(n))return void 0;var r=e.dayNumber,i=e.secondsOfDay+L,o=g.iau2006XysData.computeXysRadians(r,i,W);if(!a(o))return void 0;var u=o.x+n.xPoleOffset,s=o.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-u*u-s*s)),l=k;l[0]=1-c*u*u,l[3]=-c*u*s,l[6]=u,l[1]=-c*u*s,l[4]=1-c*s*s,l[7]=s,l[2]=-u,l[5]=-s,l[8]=1-c*(u*u+s*s);var f=m.fromRotationZ(-o.s,V),p=m.multiply(l,f,k),y=e.dayNumber,w=e.secondsOfDay-h.computeTaiMinusUtc(e)+n.ut1MinusUtc,x=y-2451545,S=w/v.SECONDS_PER_DAY,E=.779057273264+S+.00273781191135448*(x+S);E=E%1*d.TWO_PI;var M=m.fromRotationZ(E,V),O=m.multiply(p,M,k),_=Math.cos(n.xPoleWander),P=Math.cos(n.yPoleWander),C=Math.sin(n.xPoleWander),z=Math.sin(n.yPoleWander),R=r-B+i/v.SECONDS_PER_DAY;R/=36525;var I=-47e-6*R*d.RADIANS_PER_DEGREE/3600,N=Math.cos(I),T=Math.sin(I),b=V;return b[0]=_*N,b[1]=_*T,b[2]=C,b[3]=-P*T+z*C*N,b[4]=P*N+z*C*T,b[5]=-z*_,b[6]=-z*T-P*C*N,b[7]=z*N-P*C*T,b[8]=P*_,m.multiply(O,b,t)};var j=new r;g.pointToWindowCoordinates=function(e,t,n,r){return r=g.pointToGLWindowCoordinates(e,t,n,r),r.y=2*t[5]-r.y,r},g.pointToGLWindowCoordinates=function(e,n,i,o){a(o)||(o=new t);var u=j;return p.multiplyByVector(e,r.fromElements(i.x,i.y,i.z,1,u),u),r.multiplyByScalar(u,1/u.w,u),p.multiplyByVector(n,u,u),t.fromCartesian4(u,o)};var Y=new n,Z=new n,X=new n;return g.rotationMatrixFromPositionVelocity=function(e,t,r,o){var u=i(r,c.WGS84).geodeticSurfaceNormal(e,Y),s=n.cross(t,u,Z);n.equalsEpsilon(s,n.ZERO,d.EPSILON6)&&(s=n.clone(n.UNIT_X,s));var l=n.cross(s,t,X);return n.cross(t,l,s),n.negate(s,s),a(o)||(o=new m),o[0]=t.x,o[1]=t.y,o[2]=t.z,o[3]=s.x,o[4]=s.y,o[5]=s.z,o[6]=l.x,o[7]=l.y,o[8]=l.z,o},g}),define("Core/EllipsoidTangentPlane",["./AxisAlignedBoundingBox","./Cartesian2","./Cartesian3","./Cartesian4","./defaultValue","./defined","./defineProperties","./DeveloperError","./Ellipsoid","./IntersectionTests","./Matrix3","./Matrix4","./Plane","./Ray","./Transforms"],function(e,t,n,r,i,a,o,u,s,c,l,f,h,d,m){"use strict";var p=new r,y=function(e,t){t=i(t,s.WGS84),e=t.scaleToGeodeticSurface(e);var r=m.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=n.fromCartesian4(f.getColumn(r,0,p)),this._yAxis=n.fromCartesian4(f.getColumn(r,1,p));var a=n.fromCartesian4(f.getColumn(r,2,p));this._plane=h.fromPointNormal(e,a)};o(y.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var v=new e;y.fromPoints=function(t,n){var r=e.fromPoints(t,v);return new y(r.center,n)};var g=new d,w=new n;y.prototype.projectPointOntoPlane=function(e,r){var i=g;i.origin=e,n.normalize(e,i.direction);var o=c.rayPlane(i,this._plane,w);if(a(o)||(n.negate(i.direction,i.direction),o=c.rayPlane(i,this._plane,w)),a(o)){var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return a(r)?(r.x=s,r.y=l,r):new t(s,l)}return void 0},y.prototype.projectPointsOntoPlane=function(e,t){a(t)||(t=[]);for(var n=0,r=e.length,i=0;r>i;i++){var o=this.projectPointOntoPlane(e[i],t[n]);a(o)&&(t[n]=o,n++)}return t.length=n,t},y.prototype.projectPointToNearestOnPlane=function(e,r){a(r)||(r=new t);var i=g;i.origin=e,n.clone(this._plane.normal,i.direction);var o=c.rayPlane(i,this._plane,w);a(o)||(n.negate(i.direction,i.direction),o=c.rayPlane(i,this._plane,w));var u=n.subtract(o,this._origin,o),s=n.dot(this._xAxis,u),l=n.dot(this._yAxis,u);return r.x=s,r.y=l,r},y.prototype.projectPointsToNearestOnPlane=function(e,t){a(t)||(t=[]);var n=e.length;t.length=n;for(var r=0;n>r;r++)t[r]=this.projectPointToNearestOnPlane(e[r],t[r]);return t};var x=new n;return y.prototype.projectPointsOntoEllipsoid=function(e,t){var r=e.length;a(t)?t.length=r:t=new Array(r);for(var i=this._ellipsoid,o=this._origin,u=this._xAxis,s=this._yAxis,c=x,l=0;r>l;++l){var f=e[l];n.multiplyByScalar(u,f.x,c),a(t[l])||(t[l]=new n);var h=n.add(o,c,t[l]);n.multiplyByScalar(s,f.y,c),n.add(h,c,h),i.scaleToGeocentricSurface(h,h)}return t},y}),define("Core/OrientedBoundingBox",["./Cartesian2","./Cartesian3","./Cartographic","./defaultValue","./defined","./DeveloperError","./Ellipsoid","./EllipsoidTangentPlane","./Intersect","./Plane","./Rectangle","./Math","./Matrix3"],function(e,t,n,r,i,a,o,u,s,c,l,f,h){"use strict";var d=function(e,n){this.center=t.clone(r(e,t.ZERO)),this.halfAxes=h.clone(r(n,h.ZERO))},m=new t,p=new t,y=function(e,n,r,a,o,u,s,c){i(c)||(c=new d);var l=c.halfAxes;h.setColumn(l,0,e.xAxis,l),h.setColumn(l,1,e.yAxis,l),h.setColumn(l,2,e.zAxis,l);var f=m;f.x=(n+r)/2,f.y=(a+o)/2,f.z=(u+s)/2;var y=p;y.x=(r-n)/2,y.y=(o-a)/2,y.z=(s-u)/2;var v=c.center;return f=h.multiplyByVector(l,f,f),t.add(e.origin,f,v),h.multiplyByScale(l,y,l),c},v=new n,g=new t,w=[new n,new n,new n,new n,new n,new n,new n,new n],x=[new t,new t,new t,new t,new t,new t,new t,new t],S=[new e,new e,new e,new e,new e,new e,new e,new e];return d.fromRectangle=function(e,t,n,i,a){t=r(t,0),n=r(n,0),i=r(i,o.WGS84);var s=l.center(e,v),f=i.cartographicToCartesian(s,g),h=new u(f,i),d=h.plane,m=w[0],p=w[1],E=w[2],M=w[3],O=w[4],_=w[5],P=w[6],C=w[7],z=s.longitude,R=e.south<0&&e.north>0?0:s.latitude;P.latitude=_.latitude=O.latitude=e.south,C.latitude=M.latitude=R,m.latitude=p.latitude=E.latitude=e.north,P.longitude=C.longitude=m.longitude=e.west,_.longitude=p.longitude=z,O.longitude=M.longitude=E.longitude=e.east,E.height=p.height=m.height=C.height=P.height=_.height=O.height=M.height=n,i.cartographicArrayToCartesianArray(w,x),h.projectPointsToNearestOnPlane(x,S);var I=Math.min(S[6].x,S[7].x,S[0].x),N=Math.max(S[2].x,S[3].x,S[4].x),T=Math.min(S[4].y,S[5].y,S[6].y),b=Math.max(S[0].y,S[1].y,S[2].y);E.height=m.height=O.height=P.height=t,i.cartographicArrayToCartesianArray(w,x);var A=Math.min(c.getPointDistance(d,x[0]),c.getPointDistance(d,x[2]),c.getPointDistance(d,x[4]),c.getPointDistance(d,x[6])),D=n;return y(h,I,N,T,b,A,D,a)},d.clone=function(e,n){return i(e)?i(n)?(t.clone(e.center,n.center),h.clone(e.halfAxes,n.halfAxes),n):new d(e.center,e.halfAxes):void 0},d.intersectPlane=function(e,n){var r=e.center,i=n.normal,a=e.halfAxes,o=i.x,u=i.y,c=i.z,l=Math.abs(o*a[h.COLUMN0ROW0]+u*a[h.COLUMN0ROW1]+c*a[h.COLUMN0ROW2])+Math.abs(o*a[h.COLUMN1ROW0]+u*a[h.COLUMN1ROW1]+c*a[h.COLUMN1ROW2])+Math.abs(o*a[h.COLUMN2ROW0]+u*a[h.COLUMN2ROW1]+c*a[h.COLUMN2ROW2]),f=t.dot(i,r)+n.distance;return-l>=f?s.OUTSIDE:f>=l?s.INSIDE:s.INTERSECTING},d.prototype.intersectPlane=function(e){return d.intersectPlane(this,e)},d.equals=function(e,n){return e===n||i(e)&&i(n)&&t.equals(e.center,n.center)&&h.equals(e.halfAxes,n.halfAxes)},d.prototype.clone=function(e){return d.clone(this,e)},d.prototype.equals=function(e){return d.equals(this,e)},d}),define("Core/formatError",["./defined"],function(e){"use strict";var t=function(t){var n,r=t.name,i=t.message;n=e(r)&&e(i)?r+": "+i:t.toString();var a=t.stack;return e(a)&&(n+="\n"+a),n};return t}),define("Workers/createTaskProcessorWorker",["../Core/defaultValue","../Core/defined","../Core/formatError"],function(e,t,n){"use strict";var r=function(r){var i,a=[],o={id:void 0,result:void 0,error:void 0};return function(u){var s=u.data;a.length=0,o.id=s.id,o.error=void 0,o.result=void 0;try{o.result=r(s.parameters,a)}catch(c){o.error=c instanceof Error?{name:c.name,message:c.message,stack:c.stack}:c}t(i)||(i=e(self.webkitPostMessage,self.postMessage)),s.canTransferArrayBuffer||(a.length=0);try{i(o,a)}catch(c){o.result=void 0,o.error="postMessage failed with error: "+n(c)+"\n with responseMessage: "+JSON.stringify(o),i(o)}}};return r}),define("Workers/upsampleQuantizedTerrainMesh",["../Core/AttributeCompression","../Core/BoundingSphere","../Core/Cartesian2","../Core/Cartesian3","../Core/Cartographic","../Core/defined","../Core/Ellipsoid","../Core/EllipsoidalOccluder","../Core/IndexDatatype","../Core/Intersections2D","../Core/Math","../Core/OrientedBoundingBox","./createTaskProcessorWorker"],function(e,t,n,r,i,a,o,u,s,c,l,f,h){"use strict";function d(e,n){var i=e.isEastChild,h=e.isNorthChild,d=i?g:0,p=i?v:g,T=h?g:0,b=h?v:g,A=O,D=_,q=P,U=z;A.length=0,D.length=0,q.length=0,U.length=0;var L=C;L.length=0;var B,W,F,k,V={},j=e.vertices,Y=e.encodedNormals,Z=e.indices,X=j.length/3,G=j.subarray(0,X),H=j.subarray(X,2*X),J=j.subarray(2*X,3*X),K=0,Q=a(Y);for(B=0,W=0;X>B;++B,W+=2)F=G[B],k=H[B],(i&&F>=g||!i&&g>=F)&&(h&&k>=g||!h&&g>=k)&&(V[B]=K,A.push(F),D.push(k),q.push(J[B]),Q&&(U.push(Y[W]),U.push(Y[W+1])),++K);var $=[];$.push(new m),$.push(new m),$.push(new m);var et=[];et.push(new m),et.push(new m),et.push(new m);var tt,nt;for(B=0;B<Z.length;B+=3){var rt=Z[B],it=Z[B+1],at=Z[B+2],ot=G[rt],ut=G[it],st=G[at];$[0].initializeIndexed(G,H,J,Y,rt),$[1].initializeIndexed(G,H,J,Y,it),$[2].initializeIndexed(G,H,J,Y,at);var ct=c.clipTriangleAtAxisAlignedThreshold(g,i,ot,ut,st,w);tt=0,tt>=ct.length||(tt=et[0].initializeFromClipResult(ct,tt,$),tt>=ct.length||(tt=et[1].initializeFromClipResult(ct,tt,$),tt>=ct.length||(tt=et[2].initializeFromClipResult(ct,tt,$),nt=c.clipTriangleAtAxisAlignedThreshold(g,h,et[0].getV(),et[1].getV(),et[2].getV(),x),y(A,D,q,U,L,V,nt,et,Q),tt<ct.length&&(et[2].clone(et[1]),et[2].initializeFromClipResult(ct,tt,$),nt=c.clipTriangleAtAxisAlignedThreshold(g,h,et[0].getV(),et[1].getV(),et[2].getV(),x),y(A,D,q,U,L,V,nt,et,Q))))) +}var lt=i?-v:0,ft=h?-v:0,ht=e.minimumHeight,dt=e.maximumHeight,mt=[],pt=[],yt=[],vt=[],gt=Number.MAX_VALUE,wt=-gt,xt=S;xt.length=0;var St=o.clone(e.ellipsoid),Et=e.childRectangle,Mt=Et.north,Ot=Et.south,_t=Et.east,Pt=Et.west;for(Pt>_t&&(_t+=l.TWO_PI),B=0;B<A.length;++B){F=Math.round(A[B]),d>=F?(mt.push(B),F=0):F>=p?(yt.push(B),F=v):F=2*F+lt,A[B]=F,k=Math.round(D[B]),T>=k?(pt.push(B),k=0):k>=b?(vt.push(B),k=v):k=2*k+ft,D[B]=k;var Ct=l.lerp(ht,dt,q[B]/v);gt>Ct&&(gt=Ct),Ct>wt&&(wt=Ct),q[B]=Ct,E.longitude=l.lerp(Pt,_t,F/v),E.latitude=l.lerp(Ot,Mt,k/v),E.height=Ct,St.cartographicToCartesian(E,M),xt.push(M.x),xt.push(M.y),xt.push(M.z)}var zt=t.fromVertices(xt,r.ZERO,3,I),Rt=f.fromRectangle(Et,gt,wt,St,N),It=new u(St),Nt=It.computeHorizonCullingPointFromVertices(zt.center,xt,3,zt.center,R),Tt=wt-gt,bt=new Uint16Array(A.length+D.length+q.length);for(B=0;B<A.length;++B)bt[B]=A[B];var At=A.length;for(B=0;B<D.length;++B)bt[At+B]=D[B];for(At+=D.length,B=0;B<q.length;++B)bt[At+B]=v*(q[B]-gt)/Tt;var Dt,qt=s.createTypedArray(A.length,L);if(Q){var Ut=new Uint8Array(U);n.push(bt.buffer,qt.buffer,Ut.buffer),Dt=Ut.buffer}else n.push(bt.buffer,qt.buffer);return{vertices:bt.buffer,encodedNormals:Dt,indices:qt.buffer,minimumHeight:gt,maximumHeight:wt,westIndices:mt,southIndices:pt,eastIndices:yt,northIndices:vt,boundingSphere:zt,orientedBoundingBox:Rt,horizonOcclusionPoint:Nt}}function m(){this.vertexBuffer=void 0,this.index=void 0,this.first=void 0,this.second=void 0,this.ratio=void 0}function p(t,n){++b;var i=A[b],a=D[b];return i=e.octDecode(t.first.getNormalX(),t.first.getNormalY(),i),a=e.octDecode(t.second.getNormalX(),t.second.getNormalY(),a),M=r.lerp(i,a,t.ratio,M),r.normalize(M,M),e.octEncode(M,n),--b,n}function y(e,t,n,r,i,o,u,s,c){if(0!==u.length){for(var l=0,f=0;f<u.length;)f=q[l++].initializeFromClipResult(u,f,s);for(var h=0;l>h;++h){var d=q[h];if(d.isIndexed())d.newIndex=o[d.index],d.uBuffer=e,d.vBuffer=t,d.heightBuffer=n,c&&(d.normalBuffer=r);else{var m=d.getKey();if(a(o[m]))d.newIndex=o[m];else{var p=e.length;e.push(d.getU()),t.push(d.getV()),n.push(d.getH()),c&&(r.push(d.getNormalX()),r.push(d.getNormalY())),d.newIndex=p,o[m]=p}}}3===l?(i.push(q[0].newIndex),i.push(q[1].newIndex),i.push(q[2].newIndex)):4===l&&(i.push(q[0].newIndex),i.push(q[1].newIndex),i.push(q[2].newIndex),i.push(q[0].newIndex),i.push(q[2].newIndex),i.push(q[3].newIndex))}}var v=32767,g=0|v/2,w=[],x=[],S=[],E=new i,M=new r,O=[],_=[],P=[],C=[],z=[],R=new r,I=new t,N=new f;m.prototype.clone=function(e){return a(e)||(e=new m),e.uBuffer=this.uBuffer,e.vBuffer=this.vBuffer,e.heightBuffer=this.heightBuffer,e.normalBuffer=this.normalBuffer,e.index=this.index,e.first=this.first,e.second=this.second,e.ratio=this.ratio,e},m.prototype.initializeIndexed=function(e,t,n,r,i){this.uBuffer=e,this.vBuffer=t,this.heightBuffer=n,this.normalBuffer=r,this.index=i,this.first=void 0,this.second=void 0,this.ratio=void 0},m.prototype.initializeInterpolated=function(e,t,n){this.vertexBuffer=void 0,this.index=void 0,this.newIndex=void 0,this.first=e,this.second=t,this.ratio=n},m.prototype.initializeFromClipResult=function(e,t,n){var r=t+1;return-1!==e[t]?n[e[t]].clone(this):(this.vertexBuffer=void 0,this.index=void 0,this.first=n[e[r]],++r,this.second=n[e[r]],++r,this.ratio=e[r],++r),r},m.prototype.getKey=function(){return this.isIndexed()?this.index:JSON.stringify({first:this.first.getKey(),second:this.second.getKey(),ratio:this.ratio})},m.prototype.isIndexed=function(){return a(this.index)},m.prototype.getH=function(){return a(this.index)?this.heightBuffer[this.index]:l.lerp(this.first.getH(),this.second.getH(),this.ratio)},m.prototype.getU=function(){return a(this.index)?this.uBuffer[this.index]:l.lerp(this.first.getU(),this.second.getU(),this.ratio)},m.prototype.getV=function(){return a(this.index)?this.vBuffer[this.index]:l.lerp(this.first.getV(),this.second.getV(),this.ratio)};var T=new n,b=-1,A=[new r,new r],D=[new r,new r];m.prototype.getNormalX=function(){return a(this.index)?this.normalBuffer[2*this.index]:(T=p(this,T),T.x)},m.prototype.getNormalY=function(){return a(this.index)?this.normalBuffer[2*this.index+1]:(T=p(this,T),T.y)};var q=[];return q.push(new m),q.push(new m),q.push(new m),q.push(new m),h(d)})}(); \ No newline at end of file diff --git a/libs/three.js/build/three.js b/libs/three.js/build/three.js index d5d219aa22..aca8c23086 100644 --- a/libs/three.js/build/three.js +++ b/libs/three.js/build/three.js @@ -4,7 +4,7 @@ * @author mrdoob / http://mrdoob.com/ */ -var THREE = { REVISION: '70' }; +var THREE = { REVISION: '71' }; // browserify support @@ -18,14 +18,23 @@ if ( typeof module === 'object' ) { if ( Math.sign === undefined ) { + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign + Math.sign = function ( x ) { - return ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : 0; + return ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : +x; }; } + +// set the default log handlers +THREE.log = function() { console.log.apply( console, arguments ); } +THREE.warn = function() { console.warn.apply( console, arguments ); } +THREE.error = function() { console.error.apply( console, arguments ); } + + // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button THREE.MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 }; @@ -151,6 +160,7 @@ THREE.UnsignedShortType = 1012; THREE.IntType = 1013; THREE.UnsignedIntType = 1014; THREE.FloatType = 1015; +THREE.HalfFloatType = 1025; // Pixel types @@ -189,25 +199,25 @@ THREE.RGBA_PVRTC_2BPPV1_Format = 2103; THREE.Projector = function () { - console.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' ); + THREE.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' ); this.projectVector = function ( vector, camera ) { - console.warn( 'THREE.Projector: .projectVector() is now vector.project().' ); + THREE.warn( 'THREE.Projector: .projectVector() is now vector.project().' ); vector.project( camera ); }; this.unprojectVector = function ( vector, camera ) { - console.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' ); + THREE.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' ); vector.unproject( camera ); }; this.pickingRay = function ( vector, camera ) { - console.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' ); + THREE.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' ); }; @@ -215,7 +225,7 @@ THREE.Projector = function () { THREE.CanvasRenderer = function () { - console.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' ); + THREE.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' ); this.domElement = document.createElement( 'canvas' ); this.clear = function () {}; @@ -402,21 +412,27 @@ THREE.Color.prototype = { }, - copyGammaToLinear: function ( color ) { + copyGammaToLinear: function ( color, gammaFactor ) { + + if ( gammaFactor === undefined ) gammaFactor = 2.0; - this.r = color.r * color.r; - this.g = color.g * color.g; - this.b = color.b * color.b; + this.r = Math.pow( color.r, gammaFactor ); + this.g = Math.pow( color.g, gammaFactor ); + this.b = Math.pow( color.b, gammaFactor ); return this; }, - copyLinearToGamma: function ( color ) { + copyLinearToGamma: function ( color, gammaFactor ) { + + if ( gammaFactor === undefined ) gammaFactor = 2.0; - this.r = Math.sqrt( color.r ); - this.g = Math.sqrt( color.g ); - this.b = Math.sqrt( color.b ); + var safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0; + + this.r = Math.pow( color.r, safeInverse ); + this.g = Math.pow( color.g, safeInverse ); + this.b = Math.pow( color.b, safeInverse ); return this; @@ -595,10 +611,16 @@ THREE.Color.prototype = { }, - toArray: function () { + toArray: function ( array, offset ) { - return [ this.r, this.g, this.b ]; + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + array[ offset ] = this.r; + array[ offset + 1 ] = this.g; + array[ offset + 2 ] = this.b; + + return array; }, clone: function () { @@ -1001,7 +1023,7 @@ THREE.Quaternion.prototype = { if ( p !== undefined ) { - console.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' ); + THREE.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' ); return this.multiplyQuaternions( q, p ); } @@ -1030,7 +1052,7 @@ THREE.Quaternion.prototype = { multiplyVector3: function ( vector ) { - console.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' ); + THREE.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' ); return vector.applyQuaternion( this ); }, @@ -1241,7 +1263,7 @@ THREE.Vector2.prototype = { if ( w !== undefined ) { - console.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + THREE.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); return this.addVectors( v, w ); } @@ -1253,19 +1275,19 @@ THREE.Vector2.prototype = { }, - addVectors: function ( a, b ) { + addScalar: function ( s ) { - this.x = a.x + b.x; - this.y = a.y + b.y; + this.x += s; + this.y += s; return this; }, - addScalar: function ( s ) { + addVectors: function ( a, b ) { - this.x += s; - this.y += s; + this.x = a.x + b.x; + this.y = a.y + b.y; return this; @@ -1275,7 +1297,7 @@ THREE.Vector2.prototype = { if ( w !== undefined ) { - console.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + THREE.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); return this.subVectors( v, w ); } @@ -1287,6 +1309,15 @@ THREE.Vector2.prototype = { }, + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + + return this; + + }, + subVectors: function ( a, b ) { this.x = a.x - b.x; @@ -1532,6 +1563,14 @@ THREE.Vector2.prototype = { }, + lerpVectors: function ( v1, v2, alpha ) { + + this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + return this; + + }, + equals: function ( v ) { return ( ( v.x === this.x ) && ( v.y === this.y ) ); @@ -1563,14 +1602,14 @@ THREE.Vector2.prototype = { fromAttribute: function ( attribute, index, offset ) { - if ( offset === undefined ) offset = 0; + if ( offset === undefined ) offset = 0; - index = index * attribute.itemSize + offset; + index = index * attribute.itemSize + offset; - this.x = attribute.array[ index ]; - this.y = attribute.array[ index + 1 ]; + this.x = attribute.array[ index ]; + this.y = attribute.array[ index + 1 ]; - return this; + return this; }, @@ -1679,7 +1718,7 @@ THREE.Vector3.prototype = { if ( w !== undefined ) { - console.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + THREE.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); return this.addVectors( v, w ); } @@ -1716,7 +1755,7 @@ THREE.Vector3.prototype = { if ( w !== undefined ) { - console.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + THREE.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); return this.subVectors( v, w ); } @@ -1728,6 +1767,16 @@ THREE.Vector3.prototype = { return this; }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + + return this; + + }, subVectors: function ( a, b ) { @@ -1743,7 +1792,7 @@ THREE.Vector3.prototype = { if ( w !== undefined ) { - console.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' ); + THREE.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' ); return this.multiplyVectors( v, w ); } @@ -1784,7 +1833,7 @@ THREE.Vector3.prototype = { if ( euler instanceof THREE.Euler === false ) { - console.error( 'THREE.Vector3: .applyEuler() now expects a Euler rotation rather than a Vector3 and order.' ); + THREE.error( 'THREE.Vector3: .applyEuler() now expects a Euler rotation rather than a Vector3 and order.' ); } @@ -2183,11 +2232,19 @@ THREE.Vector3.prototype = { }, + lerpVectors: function ( v1, v2, alpha ) { + + this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + return this; + + }, + cross: function ( v, w ) { if ( w !== undefined ) { - console.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' ); + THREE.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' ); return this.crossVectors( v, w ); } @@ -2294,19 +2351,19 @@ THREE.Vector3.prototype = { setEulerFromRotationMatrix: function ( m, order ) { - console.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' ); + THREE.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' ); }, setEulerFromQuaternion: function ( q, order ) { - console.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' ); + THREE.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' ); }, getPositionFromMatrix: function ( m ) { - console.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' ); + THREE.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' ); return this.setFromMatrixPosition( m ); @@ -2314,14 +2371,14 @@ THREE.Vector3.prototype = { getScaleFromMatrix: function ( m ) { - console.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' ); + THREE.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' ); return this.setFromMatrixScale( m ); }, getColumnFromMatrix: function ( index, matrix ) { - console.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' ); + THREE.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' ); return this.setFromMatrixColumn( index, matrix ); @@ -2351,7 +2408,7 @@ THREE.Vector3.prototype = { }, setFromMatrixColumn: function ( index, matrix ) { - + var offset = index * 4; var me = matrix.elements; @@ -2397,15 +2454,15 @@ THREE.Vector3.prototype = { fromAttribute: function ( attribute, index, offset ) { - if ( offset === undefined ) offset = 0; + if ( offset === undefined ) offset = 0; - index = index * attribute.itemSize + offset; + index = index * attribute.itemSize + offset; - this.x = attribute.array[ index ]; - this.y = attribute.array[ index + 1 ]; - this.z = attribute.array[ index + 2 ]; + this.x = attribute.array[ index ]; + this.y = attribute.array[ index + 1 ]; + this.z = attribute.array[ index + 2 ]; - return this; + return this; }, @@ -2526,7 +2583,7 @@ THREE.Vector4.prototype = { if ( w !== undefined ) { - console.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + THREE.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); return this.addVectors( v, w ); } @@ -2566,7 +2623,7 @@ THREE.Vector4.prototype = { if ( w !== undefined ) { - console.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + THREE.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); return this.subVectors( v, w ); } @@ -2580,6 +2637,17 @@ THREE.Vector4.prototype = { }, + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + this.w -= s; + + return this; + + }, + subVectors: function ( a, b ) { this.x = a.x - b.x; @@ -2926,49 +2994,49 @@ THREE.Vector4.prototype = { } )(), - floor: function () { + floor: function () { - this.x = Math.floor( this.x ); - this.y = Math.floor( this.y ); - this.z = Math.floor( this.z ); - this.w = Math.floor( this.w ); + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + this.z = Math.floor( this.z ); + this.w = Math.floor( this.w ); - return this; + return this; - }, + }, - ceil: function () { + ceil: function () { - this.x = Math.ceil( this.x ); - this.y = Math.ceil( this.y ); - this.z = Math.ceil( this.z ); - this.w = Math.ceil( this.w ); + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + this.z = Math.ceil( this.z ); + this.w = Math.ceil( this.w ); - return this; + return this; - }, + }, - round: function () { + round: function () { - this.x = Math.round( this.x ); - this.y = Math.round( this.y ); - this.z = Math.round( this.z ); - this.w = Math.round( this.w ); + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + this.z = Math.round( this.z ); + this.w = Math.round( this.w ); - return this; + return this; - }, + }, - roundToZero: function () { + roundToZero: function () { - this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); - this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); - this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); - this.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w ); + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); + this.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w ); - return this; + return this; - }, + }, negate: function () { @@ -3036,6 +3104,14 @@ THREE.Vector4.prototype = { }, + lerpVectors: function ( v1, v2, alpha ) { + + this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + return this; + + }, + equals: function ( v ) { return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) ); @@ -3071,16 +3147,16 @@ THREE.Vector4.prototype = { fromAttribute: function ( attribute, index, offset ) { - if ( offset === undefined ) offset = 0; + if ( offset === undefined ) offset = 0; - index = index * attribute.itemSize + offset; + index = index * attribute.itemSize + offset; - this.x = attribute.array[ index ]; - this.y = attribute.array[ index + 1 ]; - this.z = attribute.array[ index + 2 ]; - this.w = attribute.array[ index + 3 ]; + this.x = attribute.array[ index ]; + this.y = attribute.array[ index + 1 ]; + this.z = attribute.array[ index + 2 ]; + this.w = attribute.array[ index + 3 ]; - return this; + return this; }, @@ -3308,7 +3384,7 @@ THREE.Euler.prototype = { } else { - console.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order ) + THREE.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order ) } @@ -3376,10 +3452,17 @@ THREE.Euler.prototype = { }, - toArray: function () { + toArray: function ( array, offset ) { - return [ this._x, this._y, this._z, this._order ]; + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + array[ offset ] = this._x; + array[ offset + 1 ] = this._y; + array[ offset + 2 ] = this._z; + array[ offset + 3 ] = this._order; + + return array; }, toVector3: function ( optionalResult ) { @@ -4156,7 +4239,7 @@ THREE.Matrix3 = function () { if ( arguments.length > 0 ) { - console.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' ); + THREE.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' ); } @@ -4210,14 +4293,14 @@ THREE.Matrix3.prototype = { multiplyVector3: function ( vector ) { - console.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' ); + THREE.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' ); return vector.applyMatrix3( this ); }, multiplyVector3Array: function ( a ) { - console.warn( 'THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' ); + THREE.warn( 'THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' ); return this.applyToVector3Array( a ); }, @@ -4231,7 +4314,7 @@ THREE.Matrix3.prototype = { if ( offset === undefined ) offset = 0; if ( length === undefined ) length = array.length; - for ( var i = 0, j = offset, il; i < length; i += 3, j += 3 ) { + for ( var i = 0, j = offset; i < length; i += 3, j += 3 ) { v1.x = array[ j ]; v1.y = array[ j + 1 ]; @@ -4307,7 +4390,7 @@ THREE.Matrix3.prototype = { } else { - console.warn( msg ); + THREE.warn( msg ); } @@ -4439,7 +4522,7 @@ THREE.Matrix4 = function () { if ( arguments.length > 0 ) { - console.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' ); + THREE.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' ); } @@ -4487,7 +4570,7 @@ THREE.Matrix4.prototype = { extractPosition: function ( m ) { - console.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' ); + THREE.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' ); return this.copyPosition( m ); }, @@ -4507,15 +4590,15 @@ THREE.Matrix4.prototype = { extractBasis: function ( xAxis, yAxis, zAxis ) { - var te = this.elements; + var te = this.elements; xAxis.set( te[ 0 ], te[ 1 ], te[ 2 ] ); yAxis.set( te[ 4 ], te[ 5 ], te[ 6 ] ); zAxis.set( te[ 8 ], te[ 9 ], te[ 10 ] ); - return this; + return this; - }, + }, makeBasis: function ( xAxis, yAxis, zAxis ) { @@ -4526,7 +4609,7 @@ THREE.Matrix4.prototype = { 0, 0, 0, 1 ); - return this; + return this; }, @@ -4565,7 +4648,7 @@ THREE.Matrix4.prototype = { if ( euler instanceof THREE.Euler === false ) { - console.error( 'THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' ); + THREE.error( 'THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' ); } @@ -4691,7 +4774,7 @@ THREE.Matrix4.prototype = { setRotationFromQuaternion: function ( q ) { - console.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' ); + THREE.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' ); return this.makeRotationFromQuaternion( q ); @@ -4778,7 +4861,7 @@ THREE.Matrix4.prototype = { if ( n !== undefined ) { - console.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' ); + THREE.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' ); return this.multiplyMatrices( m, n ); } @@ -4857,21 +4940,21 @@ THREE.Matrix4.prototype = { multiplyVector3: function ( vector ) { - console.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.' ); + THREE.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.' ); return vector.applyProjection( this ); }, multiplyVector4: function ( vector ) { - console.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + THREE.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); return vector.applyMatrix4( this ); }, multiplyVector3Array: function ( a ) { - console.warn( 'THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' ); + THREE.warn( 'THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' ); return this.applyToVector3Array( a ); }, @@ -4885,7 +4968,7 @@ THREE.Matrix4.prototype = { if ( offset === undefined ) offset = 0; if ( length === undefined ) length = array.length; - for ( var i = 0, j = offset, il; i < length; i += 3, j += 3 ) { + for ( var i = 0, j = offset; i < length; i += 3, j += 3 ) { v1.x = array[ j ]; v1.y = array[ j + 1 ]; @@ -4907,7 +4990,7 @@ THREE.Matrix4.prototype = { rotateAxis: function ( v ) { - console.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' ); + THREE.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' ); v.transformDirection( this ); @@ -4915,7 +4998,7 @@ THREE.Matrix4.prototype = { crossVector: function ( vector ) { - console.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + THREE.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); return vector.applyMatrix4( this ); }, @@ -5021,7 +5104,7 @@ THREE.Matrix4.prototype = { return function () { - console.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' ); + THREE.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' ); var te = this.elements; return v1.set( te[ 12 ], te[ 13 ], te[ 14 ] ); @@ -5074,7 +5157,7 @@ THREE.Matrix4.prototype = { if ( det == 0 ) { - var msg = "Matrix4.getInverse(): can't invert matrix, determinant is 0"; + var msg = "THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0"; if ( throwOnInvertible || false ) { @@ -5082,7 +5165,7 @@ THREE.Matrix4.prototype = { } else { - console.warn( msg ); + THREE.warn( msg ); } @@ -5099,31 +5182,31 @@ THREE.Matrix4.prototype = { translate: function ( v ) { - console.warn( 'THREE.Matrix4: .translate() has been removed.' ); + THREE.error( 'THREE.Matrix4: .translate() has been removed.' ); }, rotateX: function ( angle ) { - console.warn( 'THREE.Matrix4: .rotateX() has been removed.' ); + THREE.error( 'THREE.Matrix4: .rotateX() has been removed.' ); }, rotateY: function ( angle ) { - console.warn( 'THREE.Matrix4: .rotateY() has been removed.' ); + THREE.error( 'THREE.Matrix4: .rotateY() has been removed.' ); }, rotateZ: function ( angle ) { - console.warn( 'THREE.Matrix4: .rotateZ() has been removed.' ); + THREE.error( 'THREE.Matrix4: .rotateZ() has been removed.' ); }, rotateByAxis: function ( axis, angle ) { - console.warn( 'THREE.Matrix4: .rotateByAxis() has been removed.' ); + THREE.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' ); }, @@ -5751,7 +5834,7 @@ THREE.Ray.prototype = { }(), - intersectBox: function ( box , optionalTarget ) { + intersectBox: function ( box, optionalTarget ) { // http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-7-intersecting-simple-shapes/ray-box-intersection/ @@ -5956,7 +6039,7 @@ THREE.Sphere.prototype = { var box = new THREE.Box3(); - return function ( points, optionalCenter ) { + return function ( points, optionalCenter ) { var center = this.center; @@ -5982,7 +6065,7 @@ THREE.Sphere.prototype = { return this; - }; + }; }(), @@ -6642,6 +6725,20 @@ THREE.Math = { return ( value & ( value - 1 ) ) === 0 && value !== 0; + }, + + nextPowerOfTwo: function ( value ) { + + value --; + value |= value >> 1; + value |= value >> 2; + value |= value >> 4; + value |= value >> 8; + value |= value >> 16; + value ++; + + return value; + } }; @@ -6775,7 +6872,7 @@ THREE.Spline = function ( points ) { var i, j, index, indexCurrent, indexNext, - linearDistance, realDistance, + realDistance, sampling, position, newpoints = [], tmpVec = new THREE.Vector3(), @@ -7288,7 +7385,7 @@ THREE.EventDispatcher.prototype = { } else { - console.error( 'THREE.Raycaster: Unsupported camera type.' ); + THREE.error( 'THREE.Raycaster: Unsupported camera type.' ); } @@ -7312,7 +7409,7 @@ THREE.EventDispatcher.prototype = { if ( objects instanceof Array === false ) { - console.log( 'THREE.Raycaster.intersectObjects: objects is not an Array.' ); + THREE.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' ); return intersects; } @@ -7356,8 +7453,6 @@ THREE.Object3D = function () { this.up = THREE.Object3D.DefaultUp.clone(); - var scope = this; - var position = new THREE.Vector3(); var rotation = new THREE.Euler(); var quaternion = new THREE.Quaternion(); @@ -7390,7 +7485,7 @@ THREE.Object3D = function () { scale: { enumerable: true, value: scale - }, + } } ); this.rotationAutoUpdate = true; @@ -7407,6 +7502,7 @@ THREE.Object3D = function () { this.receiveShadow = false; this.frustumCulled = true; + this.renderOrder = 0; this.userData = {}; @@ -7420,7 +7516,7 @@ THREE.Object3D.prototype = { get eulerOrder () { - console.warn( 'THREE.Object3D: .eulerOrder has been moved to .rotation.order.' ); + THREE.warn( 'THREE.Object3D: .eulerOrder has been moved to .rotation.order.' ); return this.rotation.order; @@ -7428,7 +7524,7 @@ THREE.Object3D.prototype = { set eulerOrder ( value ) { - console.warn( 'THREE.Object3D: .eulerOrder has been moved to .rotation.order.' ); + THREE.warn( 'THREE.Object3D: .eulerOrder has been moved to .rotation.order.' ); this.rotation.order = value; @@ -7436,13 +7532,13 @@ THREE.Object3D.prototype = { get useQuaternion () { - console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + THREE.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); }, set useQuaternion ( value ) { - console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + THREE.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); }, @@ -7560,7 +7656,7 @@ THREE.Object3D.prototype = { translate: function ( distance, axis ) { - console.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' ); + THREE.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' ); return this.translateOnAxis( axis, distance ); }, @@ -7639,7 +7735,7 @@ THREE.Object3D.prototype = { if ( arguments.length > 1 ) { - for ( var i = 0; i < arguments.length; i++ ) { + for ( var i = 0; i < arguments.length; i ++ ) { this.add( arguments[ i ] ); @@ -7651,7 +7747,7 @@ THREE.Object3D.prototype = { if ( object === this ) { - console.error( "THREE.Object3D.add:", object, "can't be added as a child of itself." ); + THREE.error( "THREE.Object3D.add: object can't be added as a child of itself.", object ); return this; } @@ -7671,7 +7767,7 @@ THREE.Object3D.prototype = { } else { - console.error( "THREE.Object3D.add:", object, "is not an instance of THREE.Object3D." ); + THREE.error( "THREE.Object3D.add: object not an instance of THREE.Object3D.", object ); } @@ -7683,7 +7779,7 @@ THREE.Object3D.prototype = { if ( arguments.length > 1 ) { - for ( var i = 0; i < arguments.length; i++ ) { + for ( var i = 0; i < arguments.length; i ++ ) { this.remove( arguments[ i ] ); @@ -7705,33 +7801,33 @@ THREE.Object3D.prototype = { }, - getChildByName: function ( name, recursive ) { + getChildByName: function ( name ) { - console.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' ); - return this.getObjectByName( name, recursive ); + THREE.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' ); + return this.getObjectByName( name ); }, - getObjectById: function ( id, recursive ) { + getObjectById: function ( id ) { - return this.getObjectByProperty( 'id', id, recursive ); + return this.getObjectByProperty( 'id', id ); }, - getObjectByName: function ( name, recursive ) { + getObjectByName: function ( name ) { - return this.getObjectByProperty( 'name', name, recursive ); + return this.getObjectByProperty( 'name', name ); }, - getObjectByProperty: function ( name, value, recursive ) { + getObjectByProperty: function ( name, value ) { if ( this[ name ] === value ) return this; for ( var i = 0, l = this.children.length; i < l; i ++ ) { var child = this.children[ i ]; - var object = child.getObjectByProperty( name, value, recursive ); + var object = child.getObjectByProperty( name, value ); if ( object !== undefined ) { @@ -8014,6 +8110,7 @@ THREE.Object3D.prototype = { data.color = object.color.getHex(); data.intensity = object.intensity; data.distance = object.distance; + data.decay = object.decay; } else if ( object instanceof THREE.SpotLight ) { @@ -8022,21 +8119,19 @@ THREE.Object3D.prototype = { data.distance = object.distance; data.angle = object.angle; data.exponent = object.exponent; + data.decay = object.decay; } else if ( object instanceof THREE.HemisphereLight ) { data.color = object.color.getHex(); data.groundColor = object.groundColor.getHex(); - } else if ( object instanceof THREE.Mesh ) { + } else if ( object instanceof THREE.Mesh || object instanceof THREE.Line || object instanceof THREE.PointCloud ) { data.geometry = parseGeometry( object.geometry ); data.material = parseMaterial( object.material ); - } else if ( object instanceof THREE.Line ) { - - data.geometry = parseGeometry( object.geometry ); - data.material = parseMaterial( object.material ); + if ( object instanceof THREE.Line ) data.mode = object.mode; } else if ( object instanceof THREE.Sprite ) { @@ -8189,7 +8284,7 @@ THREE.Face3.prototype = { THREE.Face4 = function ( a, b, c, d, normal, color, materialIndex ) { - console.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' ) + THREE.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' ) return new THREE.Face3( a, b, c, normal, color, materialIndex ); }; @@ -8230,11 +8325,15 @@ THREE.BufferAttribute.prototype = { } + return this; + }, - set: function ( value ) { + set: function ( value, offset ) { - this.array.set( value ); + if ( offset === undefined ) offset = 0; + + this.array.set( value, offset ); return this; @@ -8312,21 +8411,21 @@ THREE.BufferAttribute.prototype = { THREE.Int8Attribute = function ( data, itemSize ) { - console.warn( 'THREE.Int8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); + THREE.warn( 'THREE.Int8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); return new THREE.BufferAttribute( data, itemSize ); }; THREE.Uint8Attribute = function ( data, itemSize ) { - console.warn( 'THREE.Uint8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); + THREE.warn( 'THREE.Uint8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); return new THREE.BufferAttribute( data, itemSize ); }; THREE.Uint8ClampedAttribute = function ( data, itemSize ) { - console.warn( 'THREE.Uint8ClampedAttribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); + THREE.warn( 'THREE.Uint8ClampedAttribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); return new THREE.BufferAttribute( data, itemSize ); @@ -8334,46 +8433,70 @@ THREE.Uint8ClampedAttribute = function ( data, itemSize ) { THREE.Int16Attribute = function ( data, itemSize ) { - console.warn( 'THREE.Int16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); + THREE.warn( 'THREE.Int16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); return new THREE.BufferAttribute( data, itemSize ); }; THREE.Uint16Attribute = function ( data, itemSize ) { - console.warn( 'THREE.Uint16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); + THREE.warn( 'THREE.Uint16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); return new THREE.BufferAttribute( data, itemSize ); }; THREE.Int32Attribute = function ( data, itemSize ) { - console.warn( 'THREE.Int32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); + THREE.warn( 'THREE.Int32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); return new THREE.BufferAttribute( data, itemSize ); }; THREE.Uint32Attribute = function ( data, itemSize ) { - console.warn( 'THREE.Uint32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); + THREE.warn( 'THREE.Uint32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); return new THREE.BufferAttribute( data, itemSize ); }; THREE.Float32Attribute = function ( data, itemSize ) { - console.warn( 'THREE.Float32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); + THREE.warn( 'THREE.Float32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); return new THREE.BufferAttribute( data, itemSize ); }; THREE.Float64Attribute = function ( data, itemSize ) { - console.warn( 'THREE.Float64Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); + THREE.warn( 'THREE.Float64Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' ); return new THREE.BufferAttribute( data, itemSize ); }; +// File:src/core/DynamicBufferAttribute.js + +/** + * @author benaadams / https://twitter.com/ben_a_adams + * @author mrdoob / http://mrdoob.com/ + */ + +THREE.DynamicBufferAttribute = function ( array, itemSize ) { + + THREE.BufferAttribute.call( this, array, itemSize ); + + this.updateRange = { offset: 0, count: -1 }; + +}; + +THREE.DynamicBufferAttribute.prototype = Object.create( THREE.BufferAttribute.prototype ); +THREE.DynamicBufferAttribute.prototype.constructor = THREE.DynamicBufferAttribute; + +THREE.DynamicBufferAttribute.prototype.clone = function () { + + return new THREE.DynamicBufferAttribute( new this.array.constructor( this.array ), this.itemSize ); + +}; + // File:src/core/BufferGeometry.js /** @@ -8409,7 +8532,7 @@ THREE.BufferGeometry.prototype = { if ( attribute instanceof THREE.BufferAttribute === false ) { - console.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' ); + THREE.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' ); this.attributes[ name ] = { array: arguments[ 1 ], itemSize: arguments[ 2 ] }; @@ -8462,11 +8585,29 @@ THREE.BufferGeometry.prototype = { } + if ( this.boundingBox !== null ) { + + this.computeBoundingBox(); + + } + + if ( this.boundingSphere !== null ) { + + this.computeBoundingSphere(); + + } + }, center: function () { - // TODO + this.computeBoundingBox(); + + var offset = this.boundingBox.center().negate(); + + this.applyMatrix( new THREE.Matrix4().setPosition( offset ) ); + + return offset; }, @@ -8655,7 +8796,7 @@ THREE.BufferGeometry.prototype = { if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) { - console.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.' ); + THREE.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.' ); } @@ -8709,7 +8850,7 @@ THREE.BufferGeometry.prototype = { if ( isNaN( this.boundingSphere.radius ) ) { - console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.' ); + THREE.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.' ); } @@ -8854,7 +8995,7 @@ THREE.BufferGeometry.prototype = { this.attributes.normal === undefined || this.attributes.uv === undefined ) { - console.warn( 'Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()' ); + THREE.warn( 'THREE.BufferGeometry: Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()' ); return; } @@ -9027,24 +9168,18 @@ THREE.BufferGeometry.prototype = { }, /* - computeOffsets - Compute the draw offset for large models by chunking the index buffer into chunks of 65k addressable vertices. - This method will effectively rewrite the index buffer and remap all attributes to match the new indices. - WARNING: This method will also expand the vertex count to prevent sprawled triangles across draw offsets. - indexBufferSize - Defaults to 65535, but allows for larger or smaller chunks. + Compute the draw offset for large models by chunking the index buffer into chunks of 65k addressable vertices. + This method will effectively rewrite the index buffer and remap all attributes to match the new indices. + WARNING: This method will also expand the vertex count to prevent sprawled triangles across draw offsets. + size - Defaults to 65535, but allows for larger or smaller chunks. */ - computeOffsets: function ( indexBufferSize ) { - - var size = indexBufferSize; - if ( indexBufferSize === undefined ) - size = 65535; //WebGL limits type of index buffer values to 16-bit. + computeOffsets: function ( size ) { - var s = Date.now(); + if ( size === undefined ) size = 65535; // WebGL limits type of index buffer values to 16-bit. var indices = this.attributes.index.array; var vertices = this.attributes.position.array; - var verticesCount = ( vertices.length / 3 ); var facesCount = ( indices.length / 3 ); /* @@ -9124,7 +9259,8 @@ THREE.BufferGeometry.prototype = { /* Move all attribute values to map to the new computed indices , also expand the vertice stack to match our new vertexPtr. */ this.reorderBuffers( sortedIndices, revVertexMap, vertexPtr ); - this.offsets = offsets; + this.offsets = offsets; // TODO: Deprecate + this.drawcalls = offsets; /* var orderTime = Date.now(); @@ -9142,7 +9278,7 @@ THREE.BufferGeometry.prototype = { if ( geometry instanceof THREE.BufferGeometry === false ) { - console.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry ); + THREE.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry ); return; } @@ -9262,13 +9398,7 @@ THREE.BufferGeometry.prototype = { var attribute = attributes[ key ]; - var array = [], typeArray = attribute.array; - - for ( var i = 0, l = typeArray.length; i < l; i ++ ) { - - array[ i ] = typeArray[ i ]; - - } + var array = Array.prototype.slice.call( attribute.array ); output.data.attributes[ key ] = { itemSize: attribute.itemSize, @@ -9421,18 +9551,21 @@ THREE.Geometry.prototype = { } - if ( this.boundingBox instanceof THREE.Box3 ) { + if ( this.boundingBox !== null ) { this.computeBoundingBox(); } - if ( this.boundingSphere instanceof THREE.Sphere ) { + if ( this.boundingSphere !== null ) { this.computeBoundingSphere(); } + this.verticesNeedUpdate = true; + this.normalsNeedUpdate = true; + }, fromBufferGeometry: function ( geometry ) { @@ -9491,9 +9624,33 @@ THREE.Geometry.prototype = { if ( indices !== undefined ) { - for ( var i = 0; i < indices.length; i += 3 ) { + var drawcalls = geometry.drawcalls; + + if ( drawcalls.length > 0 ) { + + for ( var i = 0; i < drawcalls.length; i ++ ) { + + var drawcall = drawcalls[ i ]; + + var start = drawcall.start; + var count = drawcall.count; + var index = drawcall.index; + + for ( var j = start, jl = start + count; j < jl; j += 3 ) { + + addFace( index + indices[ j ], index + indices[ j + 1 ], index + indices[ j + 2 ] ); + + } + + } + + } else { + + for ( var i = 0; i < indices.length; i += 3 ) { - addFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] ); + addFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] ); + + } } @@ -9529,13 +9686,9 @@ THREE.Geometry.prototype = { this.computeBoundingBox(); - var offset = new THREE.Vector3(); - - offset.addVectors( this.boundingBox.min, this.boundingBox.max ); - offset.multiplyScalar( - 0.5 ); + var offset = this.boundingBox.center().negate(); - this.applyMatrix( new THREE.Matrix4().makeTranslation( offset.x, offset.y, offset.z ) ); - this.computeBoundingBox(); + this.applyMatrix( new THREE.Matrix4().setPosition( offset ) ); return offset; @@ -9582,9 +9735,8 @@ THREE.Geometry.prototype = { // vertex normals weighted by triangle areas // http://www.iquilezles.org/www/articles/normals/normals.htm - var vA, vB, vC, vD; - var cb = new THREE.Vector3(), ab = new THREE.Vector3(), - db = new THREE.Vector3(), dc = new THREE.Vector3(), bc = new THREE.Vector3(); + var vA, vB, vC; + var cb = new THREE.Vector3(), ab = new THREE.Vector3(); for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { @@ -9758,7 +9910,7 @@ THREE.Geometry.prototype = { // based on http://www.terathon.com/code/tangent.html // tangents go to vertices - var f, fl, v, vl, i, il, vertexIndex, + var f, fl, v, vl, i, vertexIndex, face, uv, vA, vB, vC, uvA, uvB, uvC, x1, x2, y1, y2, z1, z2, s1, s2, t1, t2, r, t, test, @@ -9905,7 +10057,7 @@ THREE.Geometry.prototype = { if ( geometry instanceof THREE.Geometry === false ) { - console.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry ); + THREE.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry ); return; } @@ -10015,7 +10167,7 @@ THREE.Geometry.prototype = { if ( mesh instanceof THREE.Mesh === false ) { - console.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh ); + THREE.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh ); return; } @@ -10040,8 +10192,8 @@ THREE.Geometry.prototype = { var v, key; var precisionPoints = 4; // number of decimal points, eg. 4 for epsilon of 0.0001 var precision = Math.pow( 10, precisionPoints ); - var i,il, face; - var indices, k, j, jl, u; + var i, il, face; + var indices, j, jl; for ( i = 0, il = this.vertices.length; i < il; i ++ ) { @@ -10876,7 +11028,7 @@ THREE.DirectionalLight = function ( color, intensity ) { this.shadowCascadeHeight = [ 512, 512, 512 ]; this.shadowCascadeNearZ = [ - 1.000, 0.990, 0.998 ]; - this.shadowCascadeFarZ = [ 0.990, 0.998, 1.000 ]; + this.shadowCascadeFarZ = [ 0.990, 0.998, 1.000 ]; this.shadowCascadeArray = []; @@ -10982,7 +11134,7 @@ THREE.HemisphereLight.prototype.clone = function () { * @author mrdoob / http://mrdoob.com/ */ -THREE.PointLight = function ( color, intensity, distance ) { +THREE.PointLight = function ( color, intensity, distance, decay ) { THREE.Light.call( this, color ); @@ -10990,6 +11142,7 @@ THREE.PointLight = function ( color, intensity, distance ) { this.intensity = ( intensity !== undefined ) ? intensity : 1; this.distance = ( distance !== undefined ) ? distance : 0; + this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. }; @@ -11004,6 +11157,7 @@ THREE.PointLight.prototype.clone = function () { light.intensity = this.intensity; light.distance = this.distance; + light.decay = this.decay; return light; @@ -11015,7 +11169,7 @@ THREE.PointLight.prototype.clone = function () { * @author alteredq / http://alteredqualia.com/ */ -THREE.SpotLight = function ( color, intensity, distance, angle, exponent ) { +THREE.SpotLight = function ( color, intensity, distance, angle, exponent, decay ) { THREE.Light.call( this, color ); @@ -11028,6 +11182,7 @@ THREE.SpotLight = function ( color, intensity, distance, angle, exponent ) { this.distance = ( distance !== undefined ) ? distance : 0; this.angle = ( angle !== undefined ) ? angle : Math.PI / 3; this.exponent = ( exponent !== undefined ) ? exponent : 10; + this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. this.castShadow = false; this.onlyShadow = false; @@ -11070,6 +11225,7 @@ THREE.SpotLight.prototype.clone = function () { light.distance = this.distance; light.angle = this.angle; light.exponent = this.exponent; + light.decay = this.decay; light.castShadow = this.castShadow; light.onlyShadow = this.onlyShadow; @@ -11098,15 +11254,9 @@ THREE.SpotLight.prototype.clone = function () { * @author mrdoob / http://mrdoob.com/ */ -THREE.Cache = function () { - - this.files = {}; +THREE.Cache = { -}; - -THREE.Cache.prototype = { - - constructor: THREE.Cache, + files: {}, add: function ( key, file ) { @@ -11368,12 +11518,18 @@ THREE.Loader.prototype = { } - if ( m.transparent !== undefined || m.opacity < 1.0 ) { + if ( m.transparent !== undefined ) { mpars.transparent = m.transparent; } + if ( m.opacity !== undefined && m.opacity < 1.0 ) { + + mpars.transparent = true; + + } + if ( m.depthTest !== undefined ) { mpars.depthTest = m.depthTest; @@ -11442,12 +11598,6 @@ THREE.Loader.prototype = { } - if ( m.colorAmbient ) { - - mpars.ambient = rgb2hex( m.colorAmbient ); - - } - if ( m.colorEmissive ) { mpars.emissive = rgb2hex( m.colorEmissive ); @@ -11456,9 +11606,16 @@ THREE.Loader.prototype = { // modifiers - if ( m.transparency ) { + if ( m.transparency !== undefined ) { - mpars.opacity = m.transparency; + console.warn( 'THREE.Loader: transparency has been renamed to opacity' ); + m.opacity = m.transparency; + + } + + if ( m.opacity !== undefined ) { + + mpars.opacity = m.opacity; } @@ -11569,7 +11726,6 @@ THREE.Loader.Handlers = { THREE.XHRLoader = function ( manager ) { - this.cache = new THREE.Cache(); this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; }; @@ -11582,7 +11738,7 @@ THREE.XHRLoader.prototype = { var scope = this; - var cached = scope.cache.get( url ); + var cached = THREE.Cache.get( url ); if ( cached !== undefined ) { @@ -11596,7 +11752,7 @@ THREE.XHRLoader.prototype = { request.addEventListener( 'load', function ( event ) { - scope.cache.add( url, this.response ); + THREE.Cache.add( url, this.response ); if ( onLoad ) onLoad( this.response ); @@ -11655,7 +11811,6 @@ THREE.XHRLoader.prototype = { THREE.ImageLoader = function ( manager ) { - this.cache = new THREE.Cache(); this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; }; @@ -11668,7 +11823,7 @@ THREE.ImageLoader.prototype = { var scope = this; - var cached = scope.cache.get( url ); + var cached = THREE.Cache.get( url ); if ( cached !== undefined ) { @@ -11679,18 +11834,15 @@ THREE.ImageLoader.prototype = { var image = document.createElement( 'img' ); - if ( onLoad !== undefined ) { - - image.addEventListener( 'load', function ( event ) { + image.addEventListener( 'load', function ( event ) { - scope.cache.add( url, this ); + THREE.Cache.add( url, this ); - onLoad( this ); - scope.manager.itemEnd( url ); - - }, false ); + if ( onLoad ) onLoad( this ); + + scope.manager.itemEnd( url ); - } + }, false ); if ( onProgress !== undefined ) { @@ -11750,8 +11902,6 @@ THREE.JSONLoader.prototype.constructor = THREE.JSONLoader; THREE.JSONLoader.prototype.load = function ( url, callback, texturePath ) { - var scope = this; - // todo: unify load API to for easier SceneLoader use texturePath = texturePath && ( typeof texturePath === 'string' ) ? texturePath : this.extractUrlBase( url ); @@ -11776,11 +11926,23 @@ THREE.JSONLoader.prototype.loadAjaxJSON = function ( context, url, callback, tex if ( xhr.responseText ) { var json = JSON.parse( xhr.responseText ); + var metadata = json.metadata; + + if ( metadata !== undefined ) { - if ( json.metadata !== undefined && json.metadata.type === 'scene' ) { + if ( metadata.type === 'object' ) { - console.error( 'THREE.JSONLoader: "' + url + '" seems to be a Scene. Use THREE.SceneLoader instead.' ); - return; + THREE.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' ); + return; + + } + + if ( metadata.type === 'scene' ) { + + THREE.error( 'THREE.JSONLoader: ' + url + ' seems to be a Scene. Use THREE.SceneLoader instead.' ); + return; + + } } @@ -11789,7 +11951,7 @@ THREE.JSONLoader.prototype.loadAjaxJSON = function ( context, url, callback, tex } else { - console.error( 'THREE.JSONLoader: "' + url + '" seems to be unreachable or the file is empty.' ); + THREE.error( 'THREE.JSONLoader: ' + url + ' seems to be unreachable or the file is empty.' ); } @@ -11801,7 +11963,7 @@ THREE.JSONLoader.prototype.loadAjaxJSON = function ( context, url, callback, tex } else { - console.error( 'THREE.JSONLoader: Couldn\'t load "' + url + '" (' + xhr.status + ')' ); + THREE.error( 'THREE.JSONLoader: Couldn\'t load ' + url + ' (' + xhr.status + ')' ); } @@ -11839,8 +12001,7 @@ THREE.JSONLoader.prototype.loadAjaxJSON = function ( context, url, callback, tex THREE.JSONLoader.prototype.parse = function ( json, texturePath ) { - var scope = this, - geometry = new THREE.Geometry(), + var geometry = new THREE.Geometry(), scale = ( json.scale !== undefined ) ? 1.0 / json.scale : 1.0; parseModel( scale ); @@ -11872,7 +12033,7 @@ THREE.JSONLoader.prototype.parse = function ( json, texturePath ) { hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor, - vertex, face, faceA, faceB, color, hex, normal, + vertex, face, faceA, faceB, hex, normal, uvLayer, uv, u, v, @@ -12188,7 +12349,7 @@ THREE.JSONLoader.prototype.parse = function ( json, texturePath ) { if ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) { - console.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' + + THREE.warn( 'THREE.JSONLoader: When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' + geometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' ); } @@ -12362,7 +12523,7 @@ THREE.BufferGeometryLoader.prototype = { var geometry = new THREE.BufferGeometry(); - var attributes = json.attributes; + var attributes = json.data.attributes; for ( var key in attributes ) { @@ -12373,7 +12534,7 @@ THREE.BufferGeometryLoader.prototype = { } - var offsets = json.offsets; + var offsets = json.data.offsets; if ( offsets !== undefined ) { @@ -12381,7 +12542,7 @@ THREE.BufferGeometryLoader.prototype = { } - var boundingSphere = json.boundingSphere; + var boundingSphere = json.data.boundingSphere; if ( boundingSphere !== undefined ) { @@ -12444,7 +12605,6 @@ THREE.MaterialLoader.prototype = { var material = new THREE[ json.type ]; if ( json.color !== undefined ) material.color.setHex( json.color ); - if ( json.ambient !== undefined ) material.ambient.setHex( json.ambient ); if ( json.emissive !== undefined ) material.emissive.setHex( json.emissive ); if ( json.specular !== undefined ) material.specular.setHex( json.specular ); if ( json.shininess !== undefined ) material.shininess = json.shininess; @@ -12459,6 +12619,10 @@ THREE.MaterialLoader.prototype = { if ( json.transparent !== undefined ) material.transparent = json.transparent; if ( json.wireframe !== undefined ) material.wireframe = json.wireframe; + // for PointCloudMaterial + if ( json.size !== undefined ) material.size = json.size; + if ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation; + if ( json.materials !== undefined ) { for ( var i = 0, l = json.materials.length; i < l; i ++ ) { @@ -12484,6 +12648,7 @@ THREE.MaterialLoader.prototype = { THREE.ObjectLoader = function ( manager ) { this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + this.texturePath = ''; }; @@ -12493,30 +12658,55 @@ THREE.ObjectLoader.prototype = { load: function ( url, onLoad, onProgress, onError ) { + if ( this.texturePath === '' ) { + + this.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 ); + + } + var scope = this; var loader = new THREE.XHRLoader( scope.manager ); loader.setCrossOrigin( this.crossOrigin ); loader.load( url, function ( text ) { - onLoad( scope.parse( JSON.parse( text ) ) ); + scope.parse( JSON.parse( text ), onLoad ); }, onProgress, onError ); }, + setTexturePath: function ( value ) { + + this.texturePath = value; + + }, + setCrossOrigin: function ( value ) { this.crossOrigin = value; }, - parse: function ( json ) { + parse: function ( json, onLoad ) { var geometries = this.parseGeometries( json.geometries ); - var materials = this.parseMaterials( json.materials ); + + var images = this.parseImages( json.images, function () { + + if ( onLoad !== undefined ) onLoad( object ); + + } ); + var textures = this.parseTextures( json.textures, images ); + var materials = this.parseMaterials( json.materials, textures ); var object = this.parseObject( json.object, geometries, materials ); + if ( json.images === undefined || json.images.length === 0 ) { + + if ( onLoad !== undefined ) onLoad( object ); + + } + return object; }, @@ -12538,8 +12728,9 @@ THREE.ObjectLoader.prototype = { switch ( data.type ) { case 'PlaneGeometry': + case 'PlaneBufferGeometry': - geometry = new THREE.PlaneGeometry( + geometry = new THREE[ data.type ]( data.width, data.height, data.widthSegments, @@ -12635,7 +12826,7 @@ THREE.ObjectLoader.prototype = { case 'BufferGeometry': - geometry = bufferGeometryLoader.parse( data.data ); + geometry = bufferGeometryLoader.parse( data ); break; @@ -12661,12 +12852,24 @@ THREE.ObjectLoader.prototype = { }, - parseMaterials: function ( json ) { + parseMaterials: function ( json, textures ) { var materials = {}; if ( json !== undefined ) { + var getTexture = function ( name ) { + + if ( textures[ name ] === undefined ) { + + THREE.warn( 'THREE.ObjectLoader: Undefined texture', name ); + + } + + return textures[ name ]; + + }; + var loader = new THREE.MaterialLoader(); for ( var i = 0, l = json.length; i < l; i ++ ) { @@ -12678,6 +12881,54 @@ THREE.ObjectLoader.prototype = { if ( data.name !== undefined ) material.name = data.name; + if ( data.map !== undefined ) { + + material.map = getTexture( data.map ); + + } + + if ( data.bumpMap !== undefined ) { + + material.bumpMap = getTexture( data.bumpMap ); + if ( data.bumpScale ) { + material.bumpScale = new THREE.Vector2( data.bumpScale, data.bumpScale ); + } + + } + + if ( data.alphaMap !== undefined ) { + + material.alphaMap = getTexture( data.alphaMap ); + + } + + if ( data.envMap !== undefined ) { + + material.envMap = getTexture( data.envMap ); + + } + + if ( data.normalMap !== undefined ) { + + material.normalMap = getTexture( data.normalMap ); + if ( data.normalScale ) { + material.normalScale = new THREE.Vector2( data.normalScale, data.normalScale ); + } + + } + + if ( data.lightMap !== undefined ) { + + material.lightMap = getTexture( data.lightMap ); + + } + + if ( data.specularMap !== undefined ) { + + material.specularMap = getTexture( data.specularMap ); + + } + materials[ data.uuid ] = material; } @@ -12688,6 +12939,94 @@ THREE.ObjectLoader.prototype = { }, + parseImages: function ( json, onLoad ) { + + var scope = this; + var images = {}; + + if ( json !== undefined && json.length > 0 ) { + + var manager = new THREE.LoadingManager( onLoad ); + + var loader = new THREE.ImageLoader( manager ); + loader.setCrossOrigin( this.crossOrigin ); + + var loadImage = function ( url ) { + + scope.manager.itemStart( url ); + + return loader.load( url, function () { + + scope.manager.itemEnd( url ); + + } ); + + }; + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var image = json[ i ]; + var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url; + + images[ image.uuid ] = loadImage( path ); + + } + + } + + return images; + + }, + + parseTextures: function ( json, images ) { + + var textures = {}; + + if ( json !== undefined ) { + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var data = json[ i ]; + + if ( data.image === undefined ) { + + THREE.warn( 'THREE.ObjectLoader: No "image" speficied for', data.uuid ); + + } + + if ( images[ data.image ] === undefined ) { + + THREE.warn( 'THREE.ObjectLoader: Undefined image', data.image ); + + } + + var texture = new THREE.Texture( images[ data.image ] ); + texture.needsUpdate = true; + + texture.uuid = data.uuid; + + if ( data.name !== undefined ) texture.name = data.name; + if ( data.repeat !== undefined ) texture.repeat = new THREE.Vector2( data.repeat[ 0 ], data.repeat[ 1 ] ); + if ( data.minFilter !== undefined ) texture.minFilter = THREE[ data.minFilter ]; + if ( data.magFilter !== undefined ) texture.magFilter = THREE[ data.magFilter ]; + if ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy; + if ( data.wrap instanceof Array ) { + + texture.wrapS = THREE[ data.wrap[ 0 ] ]; + texture.wrapT = THREE[ data.wrap[ 1 ] ]; + + } + + textures[ data.uuid ] = texture; + + } + + } + + return textures; + + }, + parseObject: function () { var matrix = new THREE.Matrix4(); @@ -12696,6 +13035,30 @@ THREE.ObjectLoader.prototype = { var object; + var getGeometry = function ( name ) { + + if ( geometries[ name ] === undefined ) { + + THREE.warn( 'THREE.ObjectLoader: Undefined geometry', name ); + + } + + return geometries[ name ]; + + }; + + var getMaterial = function ( name ) { + + if ( materials[ name ] === undefined ) { + + THREE.warn( 'THREE.ObjectLoader: Undefined material', name ); + + } + + return materials[ name ]; + + }; + switch ( data.type ) { case 'Scene': @@ -12730,13 +13093,13 @@ THREE.ObjectLoader.prototype = { case 'PointLight': - object = new THREE.PointLight( data.color, data.intensity, data.distance ); + object = new THREE.PointLight( data.color, data.intensity, data.distance, data.decay ); break; case 'SpotLight': - object = new THREE.SpotLight( data.color, data.intensity, data.distance, data.angle, data.exponent ); + object = new THREE.SpotLight( data.color, data.intensity, data.distance, data.angle, data.exponent, data.decay ); break; @@ -12748,57 +13111,25 @@ THREE.ObjectLoader.prototype = { case 'Mesh': - var geometry = geometries[ data.geometry ]; - var material = materials[ data.material ]; - - if ( geometry === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined geometry', data.geometry ); - - } - - if ( material === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined material', data.material ); - - } - - object = new THREE.Mesh( geometry, material ); + object = new THREE.Mesh( getGeometry( data.geometry ), getMaterial( data.material ) ); break; case 'Line': - var geometry = geometries[ data.geometry ]; - var material = materials[ data.material ]; + object = new THREE.Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode ); - if ( geometry === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined geometry', data.geometry ); - - } - - if ( material === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined material', data.material ); + break; - } + case 'PointCloud': - object = new THREE.Line( geometry, material ); + object = new THREE.PointCloud( getGeometry( data.geometry ), getMaterial( data.material ) ); break; case 'Sprite': - var material = materials[ data.material ]; - - if ( material === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined material', data.material ); - - } - - object = new THREE.Sprite( material ); + object = new THREE.Sprite( getMaterial( data.material ) ); break; @@ -12934,7 +13265,7 @@ THREE.BinaryTextureLoader.prototype = { texture.image = texData.image; - } else if ( undefined !== texData.data ){ + } else if ( undefined !== texData.data ) { texture.image.width = texData.width; texture.image.height = texData.height; @@ -13039,7 +13370,7 @@ THREE.CompressedTextureLoader.prototype = { if ( loaded === 6 ) { - if (texDatas.mipmapCount == 1) + if (texDatas.mipmapCount == 1) texture.minFilter = THREE.LinearFilter; texture.format = texDatas.format; @@ -13141,10 +13472,15 @@ THREE.Material = function () { this.blendSrc = THREE.SrcAlphaFactor; this.blendDst = THREE.OneMinusSrcAlphaFactor; this.blendEquation = THREE.AddEquation; + this.blendSrcAlpha = null; + this.blendDstAlpha = null; + this.blendEquationAlpha = null; this.depthTest = true; this.depthWrite = true; + this.colorWrite = true; + this.polygonOffset = false; this.polygonOffsetFactor = 0; this.polygonOffsetUnits = 0; @@ -13155,7 +13491,7 @@ THREE.Material = function () { this.visible = true; - this.needsUpdate = true; + this._needsUpdate = true; }; @@ -13163,6 +13499,20 @@ THREE.Material.prototype = { constructor: THREE.Material, + get needsUpdate () { + + return this._needsUpdate; + + }, + + set needsUpdate ( value ) { + + if ( value === true ) this.update(); + + this._needsUpdate = value; + + }, + setValues: function ( values ) { if ( values === undefined ) return; @@ -13173,7 +13523,7 @@ THREE.Material.prototype = { if ( newValue === undefined ) { - console.warn( "THREE.Material: '" + key + "' parameter is undefined." ); + THREE.warn( "THREE.Material: '" + key + "' parameter is undefined." ); continue; } @@ -13231,26 +13581,25 @@ THREE.Material.prototype = { } else if ( this instanceof THREE.MeshLambertMaterial ) { output.color = this.color.getHex(); - output.ambient = this.ambient.getHex(); output.emissive = this.emissive.getHex(); if ( this.vertexColors !== THREE.NoColors ) output.vertexColors = this.vertexColors; + if ( this.shading !== THREE.SmoothShading ) output.shading = this.shading; if ( this.blending !== THREE.NormalBlending ) output.blending = this.blending; if ( this.side !== THREE.FrontSide ) output.side = this.side; } else if ( this instanceof THREE.MeshPhongMaterial ) { output.color = this.color.getHex(); - output.ambient = this.ambient.getHex(); output.emissive = this.emissive.getHex(); output.specular = this.specular.getHex(); output.shininess = this.shininess; if ( this.vertexColors !== THREE.NoColors ) output.vertexColors = this.vertexColors; + if ( this.shading !== THREE.SmoothShading ) output.shading = this.shading; if ( this.blending !== THREE.NormalBlending ) output.blending = this.blending; if ( this.side !== THREE.FrontSide ) output.side = this.side; } else if ( this instanceof THREE.MeshNormalMaterial ) { - if ( this.shading !== THREE.FlatShading ) output.shading = this.shading; if ( this.blending !== THREE.NormalBlending ) output.blending = this.blending; if ( this.side !== THREE.FrontSide ) output.side = this.side; @@ -13259,6 +13608,15 @@ THREE.Material.prototype = { if ( this.blending !== THREE.NormalBlending ) output.blending = this.blending; if ( this.side !== THREE.FrontSide ) output.side = this.side; + } else if ( this instanceof THREE.PointCloudMaterial ) { + + output.size = this.size; + output.sizeAttenuation = this.sizeAttenuation; + output.color = this.color.getHex(); + + if ( this.vertexColors !== THREE.NoColors ) output.vertexColors = this.vertexColors; + if ( this.blending !== THREE.NormalBlending ) output.blending = this.blending; + } else if ( this instanceof THREE.ShaderMaterial ) { output.uniforms = this.uniforms; @@ -13295,6 +13653,9 @@ THREE.Material.prototype = { material.blendSrc = this.blendSrc; material.blendDst = this.blendDst; material.blendEquation = this.blendEquation; + material.blendSrcAlpha = this.blendSrcAlpha; + material.blendDstAlpha = this.blendDstAlpha; + material.blendEquationAlpha = this.blendEquationAlpha; material.depthTest = this.depthTest; material.depthWrite = this.depthWrite; @@ -13313,6 +13674,12 @@ THREE.Material.prototype = { }, + update: function () { + + this.dispatchEvent( { type: 'update' } ); + + }, + dispose: function () { this.dispatchEvent( { type: 'dispose' } ); @@ -13592,7 +13959,6 @@ THREE.MeshBasicMaterial.prototype.clone = function () { * * parameters = { * color: <hex>, - * ambient: <hex>, * emissive: <hex>, * opacity: <float>, * @@ -13634,7 +14000,6 @@ THREE.MeshLambertMaterial = function ( parameters ) { this.type = 'MeshLambertMaterial'; this.color = new THREE.Color( 0xffffff ); // diffuse - this.ambient = new THREE.Color( 0xffffff ); this.emissive = new THREE.Color( 0x000000 ); this.wrapAround = false; @@ -13682,7 +14047,6 @@ THREE.MeshLambertMaterial.prototype.clone = function () { THREE.Material.prototype.clone.call( this, material ); material.color.copy( this.color ); - material.ambient.copy( this.ambient ); material.emissive.copy( this.emissive ); material.wrapAround = this.wrapAround; @@ -13728,7 +14092,6 @@ THREE.MeshLambertMaterial.prototype.clone = function () { * * parameters = { * color: <hex>, - * ambient: <hex>, * emissive: <hex>, * specular: <hex>, * shininess: <float>, @@ -13778,7 +14141,6 @@ THREE.MeshPhongMaterial = function ( parameters ) { this.type = 'MeshPhongMaterial'; this.color = new THREE.Color( 0xffffff ); // diffuse - this.ambient = new THREE.Color( 0xffffff ); this.emissive = new THREE.Color( 0x000000 ); this.specular = new THREE.Color( 0x111111 ); this.shininess = 30; @@ -13836,7 +14198,6 @@ THREE.MeshPhongMaterial.prototype.clone = function () { THREE.Material.prototype.clone.call( this, material ); material.color.copy( this.color ); - material.ambient.copy( this.ambient ); material.emissive.copy( this.emissive ); material.specular.copy( this.specular ); material.shininess = this.shininess; @@ -13956,8 +14317,6 @@ THREE.MeshNormalMaterial = function ( parameters ) { this.type = 'MeshNormalMaterial'; - this.shading = THREE.FlatShading; - this.wireframe = false; this.wireframeLinewidth = 1; @@ -13976,8 +14335,6 @@ THREE.MeshNormalMaterial.prototype.clone = function () { THREE.Material.prototype.clone.call( this, material ); - material.shading = this.shading; - material.wireframe = this.wireframe; material.wireframeLinewidth = this.wireframeLinewidth; @@ -14117,14 +14474,14 @@ THREE.PointCloudMaterial.prototype.clone = function () { THREE.ParticleBasicMaterial = function ( parameters ) { - console.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointCloudMaterial.' ); + THREE.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointCloudMaterial.' ); return new THREE.PointCloudMaterial( parameters ); }; THREE.ParticleSystemMaterial = function ( parameters ) { - console.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointCloudMaterial.' ); + THREE.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointCloudMaterial.' ); return new THREE.PointCloudMaterial( parameters ); }; @@ -14345,6 +14702,7 @@ THREE.Texture = function ( image, mapping, wrapS, wrapT, magFilter, minFilter, f this.uuid = THREE.Math.generateUUID(); this.name = ''; + this.sourceFile = ''; this.image = image !== undefined ? image : THREE.Texture.DEFAULT_IMAGE; this.mipmaps = []; @@ -14687,7 +15045,7 @@ THREE.PointCloud.prototype.raycast = ( function () { } - for ( var oi = 0, ol = offsets.length; oi < ol; ++oi ) { + for ( var oi = 0, ol = offsets.length; oi < ol; ++ oi ) { var start = offsets[ oi ].start; var count = offsets[ oi ].count; @@ -14753,7 +15111,7 @@ THREE.PointCloud.prototype.clone = function ( object ) { THREE.ParticleSystem = function ( geometry, material ) { - console.warn( 'THREE.ParticleSystem has been renamed to THREE.PointCloud.' ); + THREE.warn( 'THREE.ParticleSystem has been renamed to THREE.PointCloud.' ); return new THREE.PointCloud( geometry, material ); }; @@ -14773,7 +15131,7 @@ THREE.Line = function ( geometry, material, mode ) { this.geometry = geometry !== undefined ? geometry : new THREE.Geometry(); this.material = material !== undefined ? material : new THREE.LineBasicMaterial( { color: Math.random() * 0xffffff } ); - this.mode = ( mode !== undefined ) ? mode : THREE.LineStrip; + this.mode = mode !== undefined ? mode : THREE.LineStrip; }; @@ -14834,7 +15192,7 @@ THREE.Line.prototype.raycast = ( function () { } - for ( var oi = 0; oi < offsets.length; oi++){ + for ( var oi = 0; oi < offsets.length; oi ++) { var start = offsets[ oi ].start; var count = offsets[ oi ].count; @@ -14862,6 +15220,8 @@ THREE.Line.prototype.raycast = ( function () { // What do we want? intersection point on the ray or on the segment?? // point: raycaster.ray.at( distance ), point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + offsetIndex: oi, face: null, faceIndex: null, object: this @@ -14895,6 +15255,7 @@ THREE.Line.prototype.raycast = ( function () { // What do we want? intersection point on the ray or on the segment?? // point: raycaster.ray.at( distance ), point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, face: null, faceIndex: null, object: this @@ -14926,6 +15287,7 @@ THREE.Line.prototype.raycast = ( function () { // What do we want? intersection point on the ray or on the segment?? // point: raycaster.ray.at( distance ), point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, face: null, faceIndex: null, object: this @@ -15003,7 +15365,7 @@ THREE.Mesh.prototype.getMorphTargetIndexByName = function ( name ) { } - console.log( 'THREE.Mesh.getMorphTargetIndexByName: morph target ' + name + ' does not exist. Returning 0.' ); + THREE.warn( 'THREE.Mesh.getMorphTargetIndexByName: morph target ' + name + ' does not exist. Returning 0.' ); return 0; @@ -15044,7 +15406,7 @@ THREE.Mesh.prototype.raycast = ( function () { if ( geometry.boundingBox !== null ) { - if ( ray.isIntersectionBox( geometry.boundingBox ) === false ) { + if ( ray.isIntersectionBox( geometry.boundingBox ) === false ) { return; @@ -15075,7 +15437,7 @@ THREE.Mesh.prototype.raycast = ( function () { } - for ( var oi = 0, ol = offsets.length; oi < ol; ++oi ) { + for ( var oi = 0, ol = offsets.length; oi < ol; ++ oi ) { var start = offsets[ oi ].start; var count = offsets[ oi ].count; @@ -15174,7 +15536,7 @@ THREE.Mesh.prototype.raycast = ( function () { var isFaceMaterial = this.material instanceof THREE.MeshFaceMaterial; var objectMaterials = isFaceMaterial === true ? this.material.materials : null; - var a, b, c, d; + var a, b, c; var precision = raycaster.precision; var vertices = geometry.vertices; @@ -15286,18 +15648,19 @@ THREE.Mesh.prototype.clone = function ( object, recursive ) { * @author ikerr / http://verold.com */ -THREE.Bone = function ( belongsToSkin ) { +THREE.Bone = function ( skin ) { THREE.Object3D.call( this ); - this.skin = belongsToSkin; + this.type = 'Bone'; + + this.skin = skin; }; THREE.Bone.prototype = Object.create( THREE.Object3D.prototype ); THREE.Bone.prototype.constructor = THREE.Bone; - // File:src/objects/Skeleton.js /** @@ -15371,7 +15734,7 @@ THREE.Skeleton = function ( bones, boneInverses, useVertexTexture ) { } else { - console.warn( 'THREE.Skeleton bonInverses is the wrong length.' ); + THREE.warn( 'THREE.Skeleton bonInverses is the wrong length.' ); this.boneInverses = []; @@ -15511,7 +15874,7 @@ THREE.SkinnedMesh = function ( geometry, material, useVertexTexture ) { var bone, gbone, p, q, s; - for ( var b = 0, bl = this.geometry.bones.length; b < bl; ++b ) { + for ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) { gbone = this.geometry.bones[ b ]; @@ -15538,7 +15901,7 @@ THREE.SkinnedMesh = function ( geometry, material, useVertexTexture ) { } - for ( var b = 0, bl = this.geometry.bones.length; b < bl; ++b ) { + for ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) { gbone = this.geometry.bones[ b ]; @@ -15634,7 +15997,7 @@ THREE.SkinnedMesh.prototype.updateMatrixWorld = function( force ) { } else { - console.warn( 'THREE.SkinnedMesh unreckognized bindMode: ' + this.bindMode ); + THREE.warn( 'THREE.SkinnedMesh unreckognized bindMode: ' + this.bindMode ); } @@ -15729,7 +16092,6 @@ THREE.MorphAnimMesh.prototype.parseAnimations = function () { if ( parts && parts.length > 1 ) { var label = parts[ 1 ]; - var num = parts[ 2 ]; if ( ! animations[ label ] ) animations[ label ] = { start: Infinity, end: - Infinity }; @@ -15768,7 +16130,7 @@ THREE.MorphAnimMesh.prototype.playAnimation = function ( label, fps ) { } else { - console.warn( 'animation[' + label + '] undefined' ); + THREE.warn( 'THREE.MorphAnimMesh: animation[' + label + '] undefined in .playAnimation()' ); } @@ -16097,7 +16459,7 @@ THREE.LensFlare = function ( texture, size, distance, blending, color ) { this.positionScreen = new THREE.Vector3(); this.customUpdateCallback = undefined; - if( texture !== undefined ) { + if ( texture !== undefined ) { this.add( texture, size, distance, blending, color ); @@ -16149,7 +16511,7 @@ THREE.LensFlare.prototype.updateLensFlares = function () { var vecX = - this.positionScreen.x * 2; var vecY = - this.positionScreen.y * 2; - for( f = 0; f < fl; f ++ ) { + for ( f = 0; f < fl; f ++ ) { flare = this.lensFlares[ f ]; @@ -16252,17 +16614,21 @@ THREE.FogExp2.prototype.clone = function () { THREE.ShaderChunk = {}; +// File:src/renderers/shaders/ShaderChunk/common.glsl + +THREE.ShaderChunk[ 'common'] = "#define PI 3.14159\n#define PI2 6.28318\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n\nfloat square( in float a ) { return a*a; }\nvec2 square( in vec2 a ) { return vec2( a.x*a.x, a.y*a.y ); }\nvec3 square( in vec3 a ) { return vec3( a.x*a.x, a.y*a.y, a.z*a.z ); }\nvec4 square( in vec4 a ) { return vec4( a.x*a.x, a.y*a.y, a.z*a.z, a.w*a.w ); }\nfloat saturate( in float a ) { return clamp( a, 0.0, 1.0 ); }\nvec2 saturate( in vec2 a ) { return clamp( a, 0.0, 1.0 ); }\nvec3 saturate( in vec3 a ) { return clamp( a, 0.0, 1.0 ); }\nvec4 saturate( in vec4 a ) { return clamp( a, 0.0, 1.0 ); }\nfloat average( in float a ) { return a; }\nfloat average( in vec2 a ) { return ( a.x + a.y) * 0.5; }\nfloat average( in vec3 a ) { return ( a.x + a.y + a.z) / 3.0; }\nfloat average( in vec4 a ) { return ( a.x + a.y + a.z + a.w) * 0.25; }\nfloat whiteCompliment( in float a ) { return saturate( 1.0 - a ); }\nvec2 whiteCompliment( in vec2 a ) { return saturate( vec2(1.0) - a ); }\nvec3 whiteCompliment( in vec3 a ) { return saturate( vec3(1.0) - a ); }\nvec4 whiteCompliment( in vec4 a ) { return saturate( vec4(1.0) - a ); }\nvec3 transformDirection( in vec3 normal, in mat4 matrix ) {\n return normalize( ( matrix * vec4( normal, 0.0 ) ).xyz );\n}\n// http://en.wikibooks.org/wiki/GLSL_Programming/Applying_Matrix_Transformations\nvec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {\n return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal) {\n float distance = dot( planeNormal, point-pointOnPlane );\n return point - distance * planeNormal;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n return sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n return pointOnLine + lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) );\n}\nfloat calcLightAttenuation( float lightDistance, float cutoffDistance, float decayExponent ) {\n if ( decayExponent > 0.0 ) {\n return pow( saturate( 1.0 - lightDistance / cutoffDistance ), decayExponent );\n }\n return 1.0;\n}\n\nvec3 inputToLinear( in vec3 a ) {\n#ifdef GAMMA_INPUT\n return pow( a, vec3( float( GAMMA_FACTOR ) ) );\n#else\n return a;\n#endif\n}\nvec3 linearToOutput( in vec3 a ) {\n#ifdef GAMMA_OUTPUT\n return pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );\n#else\n return a;\n#endif\n}\n"; + // File:src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl -THREE.ShaderChunk[ 'alphatest_fragment'] = "#ifdef ALPHATEST\n\n if ( gl_FragColor.a < ALPHATEST ) discard;\n\n#endif\n"; +THREE.ShaderChunk[ 'alphatest_fragment'] = "#ifdef ALPHATEST\n\n if ( diffuseColor.a < ALPHATEST ) discard;\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl -THREE.ShaderChunk[ 'lights_lambert_vertex'] = "vLightFront = vec3( 0.0 );\n\n#ifdef DOUBLE_SIDED\n\n vLightBack = vec3( 0.0 );\n\n#endif\n\ntransformedNormal = normalize( transformedNormal );\n\n#if MAX_DIR_LIGHTS > 0\n\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\n vec3 dirVector = normalize( lDirection.xyz );\n\n float dotProduct = dot( transformedNormal, dirVector );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n #ifdef DOUBLE_SIDED\n\n vec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n #ifdef WRAP_AROUND\n\n vec3 directionalLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n #endif\n\n #endif\n\n #ifdef WRAP_AROUND\n\n vec3 directionalLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n directionalLightWeighting = mix( directionalLightWeighting, directionalLightWeightingHalf, wrapRGB );\n\n #ifdef DOUBLE_SIDED\n\n directionalLightWeightingBack = mix( directionalLightWeightingBack, directionalLightWeightingHalfBack, wrapRGB );\n\n #endif\n\n #endif\n\n vLightFront += directionalLightColor[ i ] * directionalLightWeighting;\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += directionalLightColor[ i ] * directionalLightWeightingBack;\n\n #endif\n\n}\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n for( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n float lDistance = 1.0;\n if ( pointLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\n\n lVector = normalize( lVector );\n float dotProduct = dot( transformedNormal, lVector );\n\n vec3 pointLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n #ifdef DOUBLE_SIDED\n\n vec3 pointLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n #ifdef WRAP_AROUND\n\n vec3 pointLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n #endif\n\n #endif\n\n #ifdef WRAP_AROUND\n\n vec3 pointLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n pointLightWeighting = mix( pointLightWeighting, pointLightWeightingHalf, wrapRGB );\n\n #ifdef DOUBLE_SIDED\n\n pointLightWeightingBack = mix( pointLightWeightingBack, pointLightWeightingHalfBack, wrapRGB );\n\n #endif\n\n #endif\n\n vLightFront += pointLightColor[ i ] * pointLightWeighting * lDistance;\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += pointLightColor[ i ] * pointLightWeightingBack * lDistance;\n\n #endif\n\n }\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n for( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - worldPosition.xyz ) );\n\n if ( spotEffect > spotLightAngleCos[ i ] ) {\n\n spotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n float lDistance = 1.0;\n if ( spotLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );\n\n lVector = normalize( lVector );\n\n float dotProduct = dot( transformedNormal, lVector );\n vec3 spotLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n #ifdef DOUBLE_SIDED\n\n vec3 spotLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n #ifdef WRAP_AROUND\n\n vec3 spotLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n #endif\n\n #endif\n\n #ifdef WRAP_AROUND\n\n vec3 spotLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n spotLightWeighting = mix( spotLightWeighting, spotLightWeightingHalf, wrapRGB );\n\n #ifdef DOUBLE_SIDED\n\n spotLightWeightingBack = mix( spotLightWeightingBack, spotLightWeightingHalfBack, wrapRGB );\n\n #endif\n\n #endif\n\n vLightFront += spotLightColor[ i ] * spotLightWeighting * lDistance * spotEffect;\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += spotLightColor[ i ] * spotLightWeightingBack * lDistance * spotEffect;\n\n #endif\n\n }\n\n }\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n for( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n vec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );\n vec3 lVector = normalize( lDirection.xyz );\n\n float dotProduct = dot( transformedNormal, lVector );\n\n float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n float hemiDiffuseWeightBack = -0.5 * dotProduct + 0.5;\n\n vLightFront += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeightBack );\n\n #endif\n\n }\n\n#endif\n\nvLightFront = vLightFront * diffuse + ambient * ambientLightColor + emissive;\n\n#ifdef DOUBLE_SIDED\n\n vLightBack = vLightBack * diffuse + ambient * ambientLightColor + emissive;\n\n#endif"; +THREE.ShaderChunk[ 'lights_lambert_vertex'] = "vLightFront = vec3( 0.0 );\n\n#ifdef DOUBLE_SIDED\n\n vLightBack = vec3( 0.0 );\n\n#endif\n\ntransformedNormal = normalize( transformedNormal );\n\n#if MAX_DIR_LIGHTS > 0\n\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n vec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );\n\n float dotProduct = dot( transformedNormal, dirVector );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n #ifdef DOUBLE_SIDED\n\n vec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n #ifdef WRAP_AROUND\n\n vec3 directionalLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n #endif\n\n #endif\n\n #ifdef WRAP_AROUND\n\n vec3 directionalLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n directionalLightWeighting = mix( directionalLightWeighting, directionalLightWeightingHalf, wrapRGB );\n\n #ifdef DOUBLE_SIDED\n\n directionalLightWeightingBack = mix( directionalLightWeightingBack, directionalLightWeightingHalfBack, wrapRGB );\n\n #endif\n\n #endif\n\n vLightFront += directionalLightColor[ i ] * directionalLightWeighting;\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += directionalLightColor[ i ] * directionalLightWeightingBack;\n\n #endif\n\n}\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n for( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n float attenuation = calcLightAttenuation( length( lVector ), pointLightDistance[ i ], pointLightDecay[ i ] );\n\n lVector = normalize( lVector );\n float dotProduct = dot( transformedNormal, lVector );\n\n vec3 pointLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n #ifdef DOUBLE_SIDED\n\n vec3 pointLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n #ifdef WRAP_AROUND\n\n vec3 pointLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n #endif\n\n #endif\n\n #ifdef WRAP_AROUND\n\n vec3 pointLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n pointLightWeighting = mix( pointLightWeighting, pointLightWeightingHalf, wrapRGB );\n\n #ifdef DOUBLE_SIDED\n\n pointLightWeightingBack = mix( pointLightWeightingBack, pointLightWeightingHalfBack, wrapRGB );\n\n #endif\n\n #endif\n\n vLightFront += pointLightColor[ i ] * pointLightWeighting * attenuation;\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += pointLightColor[ i ] * pointLightWeightingBack * attenuation;\n\n #endif\n\n }\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n for( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - worldPosition.xyz ) );\n\n if ( spotEffect > spotLightAngleCos[ i ] ) {\n\n spotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n float attenuation = calcLightAttenuation( length( lVector ), spotLightDistance[ i ], spotLightDecay[ i ] );\n\n lVector = normalize( lVector );\n\n float dotProduct = dot( transformedNormal, lVector );\n vec3 spotLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n #ifdef DOUBLE_SIDED\n\n vec3 spotLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n #ifdef WRAP_AROUND\n\n vec3 spotLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n #endif\n\n #endif\n\n #ifdef WRAP_AROUND\n\n vec3 spotLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n spotLightWeighting = mix( spotLightWeighting, spotLightWeightingHalf, wrapRGB );\n\n #ifdef DOUBLE_SIDED\n\n spotLightWeightingBack = mix( spotLightWeightingBack, spotLightWeightingHalfBack, wrapRGB );\n\n #endif\n\n #endif\n\n vLightFront += spotLightColor[ i ] * spotLightWeighting * attenuation * spotEffect;\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += spotLightColor[ i ] * spotLightWeightingBack * attenuation * spotEffect;\n\n #endif\n\n }\n\n }\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n for( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n vec3 lVector = transformDirection( hemisphereLightDirection[ i ], viewMatrix );\n\n float dotProduct = dot( transformedNormal, lVector );\n\n float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n float hemiDiffuseWeightBack = -0.5 * dotProduct + 0.5;\n\n vLightFront += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeightBack );\n\n #endif\n\n }\n\n#endif\n\nvLightFront += ambientLightColor;\n\n#ifdef DOUBLE_SIDED\n\n vLightBack += ambientLightColor;\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl -THREE.ShaderChunk[ 'map_particle_pars_fragment'] = "#ifdef USE_MAP\n\n uniform sampler2D map;\n\n#endif"; +THREE.ShaderChunk[ 'map_particle_pars_fragment'] = "#ifdef USE_MAP\n\n uniform vec4 offsetRepeat;\n uniform sampler2D map;\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/default_vertex.glsl @@ -16286,7 +16652,7 @@ THREE.ShaderChunk[ 'lightmap_pars_vertex'] = "#ifdef USE_LIGHTMAP\n\n varying ve // File:src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl -THREE.ShaderChunk[ 'lights_phong_fragment'] = "vec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );\n\n#ifdef DOUBLE_SIDED\n\n normal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\n#endif\n\n#ifdef USE_NORMALMAP\n\n normal = perturbNormal2Arb( -vViewPosition, normal );\n\n#elif defined( USE_BUMPMAP )\n\n normal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n vec3 pointDiffuse = vec3( 0.0 );\n vec3 pointSpecular = vec3( 0.0 );\n\n for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n float lDistance = 1.0;\n if ( pointLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\n\n lVector = normalize( lVector );\n\n // diffuse\n\n float dotProduct = dot( normal, lVector );\n\n #ifdef WRAP_AROUND\n\n float pointDiffuseWeightFull = max( dotProduct, 0.0 );\n float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n\n #else\n\n float pointDiffuseWeight = max( dotProduct, 0.0 );\n\n #endif\n\n pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;\n\n // specular\n\n vec3 pointHalfVector = normalize( lVector + viewPosition );\n float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\n float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );\n pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;\n\n }\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n vec3 spotDiffuse = vec3( 0.0 );\n vec3 spotSpecular = vec3( 0.0 );\n\n for ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n float lDistance = 1.0;\n if ( spotLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );\n\n lVector = normalize( lVector );\n\n float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\n\n if ( spotEffect > spotLightAngleCos[ i ] ) {\n\n spotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n // diffuse\n\n float dotProduct = dot( normal, lVector );\n\n #ifdef WRAP_AROUND\n\n float spotDiffuseWeightFull = max( dotProduct, 0.0 );\n float spotDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n vec3 spotDiffuseWeight = mix( vec3( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );\n\n #else\n\n float spotDiffuseWeight = max( dotProduct, 0.0 );\n\n #endif\n\n spotDiffuse += diffuse * spotLightColor[ i ] * spotDiffuseWeight * lDistance * spotEffect;\n\n // specular\n\n vec3 spotHalfVector = normalize( lVector + viewPosition );\n float spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );\n float spotSpecularWeight = specularStrength * max( pow( spotDotNormalHalf, shininess ), 0.0 );\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, spotHalfVector ), 0.0 ), 5.0 );\n spotSpecular += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * lDistance * specularNormalization * spotEffect;\n\n }\n\n }\n\n#endif\n\n#if MAX_DIR_LIGHTS > 0\n\n vec3 dirDiffuse = vec3( 0.0 );\n vec3 dirSpecular = vec3( 0.0 );\n\n for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\n vec3 dirVector = normalize( lDirection.xyz );\n\n // diffuse\n\n float dotProduct = dot( normal, dirVector );\n\n #ifdef WRAP_AROUND\n\n float dirDiffuseWeightFull = max( dotProduct, 0.0 );\n float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );\n\n #else\n\n float dirDiffuseWeight = max( dotProduct, 0.0 );\n\n #endif\n\n dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;\n\n // specular\n\n vec3 dirHalfVector = normalize( dirVector + viewPosition );\n float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\n float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );\n\n /*\n // fresnel term from skin shader\n const float F0 = 0.128;\n\n float base = 1.0 - dot( viewPosition, dirHalfVector );\n float exponential = pow( base, 5.0 );\n\n float fresnel = exponential + F0 * ( 1.0 - exponential );\n */\n\n /*\n // fresnel term from fresnel shader\n const float mFresnelBias = 0.08;\n const float mFresnelScale = 0.3;\n const float mFresnelPower = 5.0;\n\n float fresnel = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( -viewPosition ), normal ), mFresnelPower );\n */\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n // dirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization * fresnel;\n\n vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );\n dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;\n\n\n }\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n vec3 hemiDiffuse = vec3( 0.0 );\n vec3 hemiSpecular = vec3( 0.0 );\n\n for( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n vec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );\n vec3 lVector = normalize( lDirection.xyz );\n\n // diffuse\n\n float dotProduct = dot( normal, lVector );\n float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\n vec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n hemiDiffuse += diffuse * hemiColor;\n\n // specular (sky light)\n\n vec3 hemiHalfVectorSky = normalize( lVector + viewPosition );\n float hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;\n float hemiSpecularWeightSky = specularStrength * max( pow( max( hemiDotNormalHalfSky, 0.0 ), shininess ), 0.0 );\n\n // specular (ground light)\n\n vec3 lVectorGround = -lVector;\n\n vec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );\n float hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;\n float hemiSpecularWeightGround = specularStrength * max( pow( max( hemiDotNormalHalfGround, 0.0 ), shininess ), 0.0 );\n\n float dotProductGround = dot( normal, lVectorGround );\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n vec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, hemiHalfVectorSky ), 0.0 ), 5.0 );\n vec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 0.0 ), 5.0 );\n hemiSpecular += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );\n\n }\n\n#endif\n\nvec3 totalDiffuse = vec3( 0.0 );\nvec3 totalSpecular = vec3( 0.0 );\n\n#if MAX_DIR_LIGHTS > 0\n\n totalDiffuse += dirDiffuse;\n totalSpecular += dirSpecular;\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n totalDiffuse += hemiDiffuse;\n totalSpecular += hemiSpecular;\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n totalDiffuse += pointDiffuse;\n totalSpecular += pointSpecular;\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n totalDiffuse += spotDiffuse;\n totalSpecular += spotSpecular;\n\n#endif\n\n#ifdef METAL\n\n gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient + totalSpecular );\n\n#else\n\n gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;\n\n#endif"; +THREE.ShaderChunk[ 'lights_phong_fragment'] = "#ifndef FLAT_SHADED\n\n vec3 normal = normalize( vNormal );\n\n #ifdef DOUBLE_SIDED\n\n normal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\n #endif\n\n#else\n\n vec3 fdx = dFdx( vViewPosition );\n vec3 fdy = dFdy( vViewPosition );\n vec3 normal = normalize( cross( fdx, fdy ) );\n\n#endif\n\nvec3 viewPosition = normalize( vViewPosition );\n\n#ifdef USE_NORMALMAP\n\n normal = perturbNormal2Arb( -vViewPosition, normal );\n\n#elif defined( USE_BUMPMAP )\n\n normal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n\n#endif\n\nvec3 totalDiffuseLight = vec3( 0.0 );\nvec3 totalSpecularLight = vec3( 0.0 );\n\n#if MAX_POINT_LIGHTS > 0\n\n for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n float attenuation = calcLightAttenuation( length( lVector ), pointLightDistance[ i ], pointLightDecay[ i ] );\n\n lVector = normalize( lVector );\n\n // diffuse\n\n float dotProduct = dot( normal, lVector );\n\n #ifdef WRAP_AROUND\n\n float pointDiffuseWeightFull = max( dotProduct, 0.0 );\n float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n\n #else\n\n float pointDiffuseWeight = max( dotProduct, 0.0 );\n\n #endif\n\n totalDiffuseLight += pointLightColor[ i ] * pointDiffuseWeight * attenuation;\n\n // specular\n\n vec3 pointHalfVector = normalize( lVector + viewPosition );\n float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\n float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );\n totalSpecularLight += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * attenuation * specularNormalization;\n\n }\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n for ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n float attenuation = calcLightAttenuation( length( lVector ), spotLightDistance[ i ], spotLightDecay[ i ] );\n\n lVector = normalize( lVector );\n\n float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\n\n if ( spotEffect > spotLightAngleCos[ i ] ) {\n\n spotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n // diffuse\n\n float dotProduct = dot( normal, lVector );\n\n #ifdef WRAP_AROUND\n\n float spotDiffuseWeightFull = max( dotProduct, 0.0 );\n float spotDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n vec3 spotDiffuseWeight = mix( vec3( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );\n\n #else\n\n float spotDiffuseWeight = max( dotProduct, 0.0 );\n\n #endif\n\n totalDiffuseLight += spotLightColor[ i ] * spotDiffuseWeight * attenuation * spotEffect;\n\n // specular\n\n vec3 spotHalfVector = normalize( lVector + viewPosition );\n float spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );\n float spotSpecularWeight = specularStrength * max( pow( spotDotNormalHalf, shininess ), 0.0 );\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, spotHalfVector ), 0.0 ), 5.0 );\n totalSpecularLight += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * attenuation * specularNormalization * spotEffect;\n\n }\n\n }\n\n#endif\n\n#if MAX_DIR_LIGHTS > 0\n\n for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n vec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );\n\n // diffuse\n\n float dotProduct = dot( normal, dirVector );\n\n #ifdef WRAP_AROUND\n\n float dirDiffuseWeightFull = max( dotProduct, 0.0 );\n float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );\n\n #else\n\n float dirDiffuseWeight = max( dotProduct, 0.0 );\n\n #endif\n\n totalDiffuseLight += directionalLightColor[ i ] * dirDiffuseWeight;\n\n // specular\n\n vec3 dirHalfVector = normalize( dirVector + viewPosition );\n float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\n float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );\n\n /*\n // fresnel term from skin shader\n const float F0 = 0.128;\n\n float base = 1.0 - dot( viewPosition, dirHalfVector );\n float exponential = pow( base, 5.0 );\n\n float fresnel = exponential + F0 * ( 1.0 - exponential );\n */\n\n /*\n // fresnel term from fresnel shader\n const float mFresnelBias = 0.08;\n const float mFresnelScale = 0.3;\n const float mFresnelPower = 5.0;\n\n float fresnel = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( -viewPosition ), normal ), mFresnelPower );\n */\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n // dirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization * fresnel;\n\n vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );\n totalSpecularLight += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;\n\n\n }\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n for( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n vec3 lVector = transformDirection( hemisphereLightDirection[ i ], viewMatrix );\n\n // diffuse\n\n float dotProduct = dot( normal, lVector );\n float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\n vec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n totalDiffuseLight += hemiColor;\n\n // specular (sky light)\n\n vec3 hemiHalfVectorSky = normalize( lVector + viewPosition );\n float hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;\n float hemiSpecularWeightSky = specularStrength * max( pow( max( hemiDotNormalHalfSky, 0.0 ), shininess ), 0.0 );\n\n // specular (ground light)\n\n vec3 lVectorGround = -lVector;\n\n vec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );\n float hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;\n float hemiSpecularWeightGround = specularStrength * max( pow( max( hemiDotNormalHalfGround, 0.0 ), shininess ), 0.0 );\n\n float dotProductGround = dot( normal, lVectorGround );\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n vec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, hemiHalfVectorSky ), 0.0 ), 5.0 );\n vec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 0.0 ), 5.0 );\n totalSpecularLight += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );\n\n }\n\n#endif\n\n#ifdef METAL\n\n outgoingLight += diffuseColor.rgb * ( totalDiffuseLight + ambientLightColor ) * specular + totalSpecularLight + emissive;\n\n#else\n\n outgoingLight += diffuseColor.rgb * ( totalDiffuseLight + ambientLightColor ) + totalSpecularLight + emissive;\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl @@ -16306,7 +16672,7 @@ THREE.ShaderChunk[ 'logdepthbuf_fragment'] = "#if defined(USE_LOGDEPTHBUF) && de // File:src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl -THREE.ShaderChunk[ 'normalmap_pars_fragment'] = "#ifdef USE_NORMALMAP\n\n uniform sampler2D normalMap;\n uniform vec2 normalScale;\n\n // Per-Pixel Tangent Space Normal Mapping\n // http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\n vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\n vec3 q0 = dFdx( eye_pos.xyz );\n vec3 q1 = dFdy( eye_pos.xyz );\n vec2 st0 = dFdx( vUv.st );\n vec2 st1 = dFdy( vUv.st );\n\n vec3 S = normalize( q0 * st1.t - q1 * st0.t );\n vec3 T = normalize( -q0 * st1.s + q1 * st0.s );\n vec3 N = normalize( surf_norm );\n\n vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n mapN.xy = normalScale * mapN.xy;\n mat3 tsn = mat3( S, T, N );\n return normalize( tsn * mapN );\n\n }\n\n#endif\n"; +THREE.ShaderChunk[ 'normalmap_pars_fragment'] = "#ifdef USE_NORMALMAP\n\n uniform sampler2D normalMap;\n uniform vec2 normalScale;\n\n // Per-Pixel Tangent Space Normal Mapping\n // http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\n vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\n vec3 q0 = dFdx( eye_pos.xyz );\n vec3 q1 = dFdy( eye_pos.xyz );\n vec2 st0 = dFdx( vUv.st );\n vec2 st1 = dFdy( vUv.st );\n\n vec3 S = normalize( q0 * st1.t - q1 * st0.t );\n vec3 T = normalize( -q0 * st1.s + q1 * st0.s );\n vec3 N = normalize( surf_norm );\n\n vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n mapN.xy = normalScale * mapN.xy;\n mat3 tsn = mat3( S, T, N );\n return normalize( tsn * mapN );\n\n }\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/lights_phong_pars_vertex.glsl @@ -16326,7 +16692,7 @@ THREE.ShaderChunk[ 'lights_phong_vertex'] = "#if MAX_SPOT_LIGHTS > 0 || defined( // File:src/renderers/shaders/ShaderChunk/map_fragment.glsl -THREE.ShaderChunk[ 'map_fragment'] = "#ifdef USE_MAP\n\n vec4 texelColor = texture2D( map, vUv );\n\n #ifdef GAMMA_INPUT\n\n texelColor.xyz *= texelColor.xyz;\n\n #endif\n\n gl_FragColor = gl_FragColor * texelColor;\n\n#endif"; +THREE.ShaderChunk[ 'map_fragment'] = "#ifdef USE_MAP\n\n vec4 texelColor = texture2D( map, vUv );\n\n texelColor.xyz = inputToLinear( texelColor.xyz );\n\n diffuseColor *= texelColor;\n\n#endif"; // File:src/renderers/shaders/ShaderChunk/lightmap_vertex.glsl @@ -16334,7 +16700,7 @@ THREE.ShaderChunk[ 'lightmap_vertex'] = "#ifdef USE_LIGHTMAP\n\n vUv2 = uv2;\n\n // File:src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl -THREE.ShaderChunk[ 'map_particle_fragment'] = "#ifdef USE_MAP\n\n gl_FragColor = gl_FragColor * texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) );\n\n#endif"; +THREE.ShaderChunk[ 'map_particle_fragment'] = "#ifdef USE_MAP\n\n diffuseColor *= texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) * offsetRepeat.zw + offsetRepeat.xy );\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl @@ -16342,7 +16708,7 @@ THREE.ShaderChunk[ 'color_pars_fragment'] = "#ifdef USE_COLOR\n\n varying vec3 v // File:src/renderers/shaders/ShaderChunk/color_vertex.glsl -THREE.ShaderChunk[ 'color_vertex'] = "#ifdef USE_COLOR\n\n #ifdef GAMMA_INPUT\n\n vColor = color * color;\n\n #else\n\n vColor = color;\n\n #endif\n\n#endif"; +THREE.ShaderChunk[ 'color_vertex'] = "#ifdef USE_COLOR\n\n vColor.xyz = inputToLinear( color.xyz );\n\n#endif"; // File:src/renderers/shaders/ShaderChunk/skinning_vertex.glsl @@ -16354,7 +16720,7 @@ THREE.ShaderChunk[ 'envmap_pars_vertex'] = "#if defined( USE_ENVMAP ) && ! defin // File:src/renderers/shaders/ShaderChunk/linear_to_gamma_fragment.glsl -THREE.ShaderChunk[ 'linear_to_gamma_fragment'] = "#ifdef GAMMA_OUTPUT\n\n gl_FragColor.xyz = sqrt( gl_FragColor.xyz );\n\n#endif"; +THREE.ShaderChunk[ 'linear_to_gamma_fragment'] = "\n outgoingLight = linearToOutput( outgoingLight );\n"; // File:src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl @@ -16362,7 +16728,7 @@ THREE.ShaderChunk[ 'color_pars_vertex'] = "#ifdef USE_COLOR\n\n varying vec3 vCo // File:src/renderers/shaders/ShaderChunk/lights_lambert_pars_vertex.glsl -THREE.ShaderChunk[ 'lights_lambert_pars_vertex'] = "uniform vec3 ambient;\nuniform vec3 diffuse;\nuniform vec3 emissive;\n\nuniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n uniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#ifdef WRAP_AROUND\n\n uniform vec3 wrapRGB;\n\n#endif\n"; +THREE.ShaderChunk[ 'lights_lambert_pars_vertex'] = "uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n uniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n uniform float pointLightDecay[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n uniform float spotLightDecay[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#ifdef WRAP_AROUND\n\n uniform vec3 wrapRGB;\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/map_pars_vertex.glsl @@ -16370,7 +16736,7 @@ THREE.ShaderChunk[ 'map_pars_vertex'] = "#if defined( USE_MAP ) || defined( USE_ // File:src/renderers/shaders/ShaderChunk/envmap_fragment.glsl -THREE.ShaderChunk[ 'envmap_fragment'] = "#ifdef USE_ENVMAP\n\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n vec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\n // http://en.wikibooks.org/wiki/GLSL_Programming/Applying_Matrix_Transformations\n // Transforming Normal Vectors with the Inverse Transformation\n\n vec3 worldNormal = normalize( vec3( vec4( normal, 0.0 ) * viewMatrix ) );\n\n #ifdef ENVMAP_MODE_REFLECTION\n\n vec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\n #else\n\n vec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\n #endif\n\n #else\n\n vec3 reflectVec = vReflect;\n\n #endif\n\n #ifdef DOUBLE_SIDED\n float flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n #else\n float flipNormal = 1.0;\n #endif\n\n #ifdef ENVMAP_TYPE_CUBE\n vec4 envColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\n #elif defined( ENVMAP_TYPE_EQUIREC )\n vec2 sampleUV;\n sampleUV.y = clamp( flipNormal * reflectVec.y * 0.5 + 0.5, 0.0, 1.0);\n sampleUV.x = atan( flipNormal * reflectVec.z, flipNormal * reflectVec.x ) * 0.15915494309189533576888376337251 + 0.5; // reciprocal( 2 PI ) + 0.5\n vec4 envColor = texture2D( envMap, sampleUV );\n \n #elif defined( ENVMAP_TYPE_SPHERE )\n vec3 reflectView = flipNormal * normalize((viewMatrix * vec4( reflectVec, 0.0 )).xyz + vec3(0.0,0.0,1.0));\n vec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n #endif\n\n #ifdef GAMMA_INPUT\n\n envColor.xyz *= envColor.xyz;\n\n #endif\n\n #ifdef ENVMAP_BLENDING_MULTIPLY\n\n gl_FragColor.xyz = mix( gl_FragColor.xyz, gl_FragColor.xyz * envColor.xyz, specularStrength * reflectivity );\n\n #elif defined( ENVMAP_BLENDING_MIX )\n\n gl_FragColor.xyz = mix( gl_FragColor.xyz, envColor.xyz, specularStrength * reflectivity );\n\n #elif defined( ENVMAP_BLENDING_ADD )\n\n gl_FragColor.xyz += envColor.xyz * specularStrength * reflectivity;\n\n #endif\n\n#endif\n"; +THREE.ShaderChunk[ 'envmap_fragment'] = "#ifdef USE_ENVMAP\n\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n vec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\n // Transforming Normal Vectors with the Inverse Transformation\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\n #ifdef ENVMAP_MODE_REFLECTION\n\n vec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\n #else\n\n vec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\n #endif\n\n #else\n\n vec3 reflectVec = vReflect;\n\n #endif\n\n #ifdef DOUBLE_SIDED\n float flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n #else\n float flipNormal = 1.0;\n #endif\n\n #ifdef ENVMAP_TYPE_CUBE\n vec4 envColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\n #elif defined( ENVMAP_TYPE_EQUIREC )\n vec2 sampleUV;\n sampleUV.y = saturate( flipNormal * reflectVec.y * 0.5 + 0.5 );\n sampleUV.x = atan( flipNormal * reflectVec.z, flipNormal * reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n vec4 envColor = texture2D( envMap, sampleUV );\n\n #elif defined( ENVMAP_TYPE_SPHERE )\n vec3 reflectView = flipNormal * normalize((viewMatrix * vec4( reflectVec, 0.0 )).xyz + vec3(0.0,0.0,1.0));\n vec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n #endif\n\n envColor.xyz = inputToLinear( envColor.xyz );\n\n #ifdef ENVMAP_BLENDING_MULTIPLY\n\n outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\n #elif defined( ENVMAP_BLENDING_MIX )\n\n outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\n #elif defined( ENVMAP_BLENDING_ADD )\n\n outgoingLight += envColor.xyz * specularStrength * reflectivity;\n\n #endif\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl @@ -16378,7 +16744,7 @@ THREE.ShaderChunk[ 'specularmap_pars_fragment'] = "#ifdef USE_SPECULARMAP\n\n un // File:src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl -THREE.ShaderChunk[ 'logdepthbuf_vertex'] = "#ifdef USE_LOGDEPTHBUF\n\n gl_Position.z = log2(max(1e-6, gl_Position.w + 1.0)) * logDepthBufFC;\n\n #ifdef USE_LOGDEPTHBUF_EXT\n\n vFragDepth = 1.0 + gl_Position.w;\n\n#else\n\n gl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;\n\n #endif\n\n#endif"; +THREE.ShaderChunk[ 'logdepthbuf_vertex'] = "#ifdef USE_LOGDEPTHBUF\n\n gl_Position.z = log2(max( EPSILON, gl_Position.w + 1.0 )) * logDepthBufFC;\n\n #ifdef USE_LOGDEPTHBUF_EXT\n\n vFragDepth = 1.0 + gl_Position.w;\n\n#else\n\n gl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;\n\n #endif\n\n#endif"; // File:src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl @@ -16390,11 +16756,11 @@ THREE.ShaderChunk[ 'specularmap_fragment'] = "float specularStrength;\n\n#ifdef // File:src/renderers/shaders/ShaderChunk/fog_fragment.glsl -THREE.ShaderChunk[ 'fog_fragment'] = "#ifdef USE_FOG\n\n #ifdef USE_LOGDEPTHBUF_EXT\n\n float depth = gl_FragDepthEXT / gl_FragCoord.w;\n\n #else\n\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n\n #endif\n\n #ifdef FOG_EXP2\n\n const float LOG2 = 1.442695;\n float fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\n fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n\n #else\n\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n\n #endif\n \n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n\n#endif"; +THREE.ShaderChunk[ 'fog_fragment'] = "#ifdef USE_FOG\n\n #ifdef USE_LOGDEPTHBUF_EXT\n\n float depth = gl_FragDepthEXT / gl_FragCoord.w;\n\n #else\n\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n\n #endif\n\n #ifdef FOG_EXP2\n\n float fogFactor = exp2( - square( fogDensity ) * square( depth ) * LOG2 );\n fogFactor = whiteCompliment( fogFactor );\n\n #else\n\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n\n #endif\n \n outgoingLight = mix( outgoingLight, fogColor, fogFactor );\n\n#endif"; // File:src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl -THREE.ShaderChunk[ 'bumpmap_pars_fragment'] = "#ifdef USE_BUMPMAP\n\n uniform sampler2D bumpMap;\n uniform float bumpScale;\n\n // Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\n // http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\n\n // Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\n\n vec2 dHdxy_fwd() {\n\n vec2 dSTdx = dFdx( vUv );\n vec2 dSTdy = dFdy( vUv );\n\n float Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\n return vec2( dBx, dBy );\n\n }\n\n vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\n vec3 vSigmaX = dFdx( surf_pos );\n vec3 vSigmaY = dFdy( surf_pos );\n vec3 vN = surf_norm; // normalized\n\n vec3 R1 = cross( vSigmaY, vN );\n vec3 R2 = cross( vN, vSigmaX );\n\n float fDet = dot( vSigmaX, R1 );\n\n vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n return normalize( abs( fDet ) * surf_norm - vGrad );\n\n }\n\n#endif"; +THREE.ShaderChunk[ 'bumpmap_pars_fragment'] = "#ifdef USE_BUMPMAP\n\n uniform sampler2D bumpMap;\n uniform float bumpScale;\n\n // Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\n // http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\n\n // Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\n\n vec2 dHdxy_fwd() {\n\n vec2 dSTdx = dFdx( vUv );\n vec2 dSTdy = dFdy( vUv );\n\n float Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\n return vec2( dBx, dBy );\n\n }\n\n vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\n vec3 vSigmaX = dFdx( surf_pos );\n vec3 vSigmaY = dFdy( surf_pos );\n vec3 vN = surf_norm; // normalized\n\n vec3 R1 = cross( vSigmaY, vN );\n vec3 R2 = cross( vN, vSigmaX );\n\n float fDet = dot( vSigmaX, R1 );\n\n vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n return normalize( abs( fDet ) * surf_norm - vGrad );\n\n }\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl @@ -16402,7 +16768,7 @@ THREE.ShaderChunk[ 'defaultnormal_vertex'] = "#ifdef USE_SKINNING\n\n vec3 objec // File:src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl -THREE.ShaderChunk[ 'lights_phong_pars_fragment'] = "uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\n uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n uniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\n uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n varying vec3 vWorldPosition;\n\n#endif\n\n#ifdef WRAP_AROUND\n\n uniform vec3 wrapRGB;\n\n#endif\n\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;"; +THREE.ShaderChunk[ 'lights_phong_pars_fragment'] = "uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\n uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n uniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n uniform float pointLightDecay[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n uniform float spotLightDecay[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n varying vec3 vWorldPosition;\n\n#endif\n\n#ifdef WRAP_AROUND\n\n uniform vec3 wrapRGB;\n\n#endif\n\nvarying vec3 vViewPosition;\n\n#ifndef FLAT_SHADED\n\n varying vec3 vNormal;\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl @@ -16414,7 +16780,7 @@ THREE.ShaderChunk[ 'map_vertex'] = "#if defined( USE_MAP ) || defined( USE_BUMPM // File:src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl -THREE.ShaderChunk[ 'lightmap_fragment'] = "#ifdef USE_LIGHTMAP\n\n gl_FragColor = gl_FragColor * texture2D( lightMap, vUv2 );\n\n#endif"; +THREE.ShaderChunk[ 'lightmap_fragment'] = "#ifdef USE_LIGHTMAP\n\n outgoingLight *= diffuseColor.xyz * texture2D( lightMap, vUv2 ).xyz;\n\n#endif"; // File:src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl @@ -16422,7 +16788,7 @@ THREE.ShaderChunk[ 'shadowmap_pars_vertex'] = "#ifdef USE_SHADOWMAP\n\n varying // File:src/renderers/shaders/ShaderChunk/color_fragment.glsl -THREE.ShaderChunk[ 'color_fragment'] = "#ifdef USE_COLOR\n\n gl_FragColor = gl_FragColor * vec4( vColor, 1.0 );\n\n#endif"; +THREE.ShaderChunk[ 'color_fragment'] = "#ifdef USE_COLOR\n\n diffuseColor.rgb *= vColor;\n\n#endif"; // File:src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl @@ -16430,11 +16796,11 @@ THREE.ShaderChunk[ 'morphtarget_vertex'] = "#ifdef USE_MORPHTARGETS\n\n vec3 mor // File:src/renderers/shaders/ShaderChunk/envmap_vertex.glsl -THREE.ShaderChunk[ 'envmap_vertex'] = "#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n vec3 worldNormal = mat3( modelMatrix[ 0 ].xyz, modelMatrix[ 1 ].xyz, modelMatrix[ 2 ].xyz ) * objectNormal;\n worldNormal = normalize( worldNormal );\n\n vec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\n #ifdef ENVMAP_MODE_REFLECTION\n\n vReflect = reflect( cameraToVertex, worldNormal );\n\n #else\n\n vReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\n #endif\n\n#endif\n"; +THREE.ShaderChunk[ 'envmap_vertex'] = "#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n vec3 worldNormal = transformDirection( objectNormal, modelMatrix );\n\n vec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\n #ifdef ENVMAP_MODE_REFLECTION\n\n vReflect = reflect( cameraToVertex, worldNormal );\n\n #else\n\n vReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\n #endif\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/shadowmap_fragment.glsl -THREE.ShaderChunk[ 'shadowmap_fragment'] = "#ifdef USE_SHADOWMAP\n\n #ifdef SHADOWMAP_DEBUG\n\n vec3 frustumColors[3];\n frustumColors[0] = vec3( 1.0, 0.5, 0.0 );\n frustumColors[1] = vec3( 0.0, 1.0, 0.8 );\n frustumColors[2] = vec3( 0.0, 0.5, 1.0 );\n\n #endif\n\n #ifdef SHADOWMAP_CASCADE\n\n int inFrustumCount = 0;\n\n #endif\n\n float fDepth;\n vec3 shadowColor = vec3( 1.0 );\n\n for( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n vec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;\n\n // if ( something && something ) breaks ATI OpenGL shader compiler\n // if ( all( something, something ) ) using this instead\n\n bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n bool inFrustum = all( inFrustumVec );\n\n // don't shadow pixels outside of light frustum\n // use just first frustum (for cascades)\n // don't shadow pixels behind far plane of light frustum\n\n #ifdef SHADOWMAP_CASCADE\n\n inFrustumCount += int( inFrustum );\n bvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );\n\n #else\n\n bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\n #endif\n\n bool frustumTest = all( frustumTestVec );\n\n if ( frustumTest ) {\n\n shadowCoord.z += shadowBias[ i ];\n\n #if defined( SHADOWMAP_TYPE_PCF )\n\n // Percentage-close filtering\n // (9 pixel kernel)\n // http://fabiensanglard.net/shadowmappingPCF/\n\n float shadow = 0.0;\n\n /*\n // nested loops breaks shader compiler / validator on some ATI cards when using OpenGL\n // must enroll loop manually\n\n for ( float y = -1.25; y <= 1.25; y += 1.25 )\n for ( float x = -1.25; x <= 1.25; x += 1.25 ) {\n\n vec4 rgbaDepth = texture2D( shadowMap[ i ], vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy );\n\n // doesn't seem to produce any noticeable visual difference compared to simple texture2D lookup\n //vec4 rgbaDepth = texture2DProj( shadowMap[ i ], vec4( vShadowCoord[ i ].w * ( vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy ), 0.05, vShadowCoord[ i ].w ) );\n\n float fDepth = unpackDepth( rgbaDepth );\n\n if ( fDepth < shadowCoord.z )\n shadow += 1.0;\n\n }\n\n shadow /= 9.0;\n\n */\n\n const float shadowDelta = 1.0 / 9.0;\n\n float xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n float yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n float dx0 = -1.25 * xPixelOffset;\n float dy0 = -1.25 * yPixelOffset;\n float dx1 = 1.25 * xPixelOffset;\n float dy1 = 1.25 * yPixelOffset;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n shadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n #elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\n // Percentage-close filtering\n // (9 pixel kernel)\n // http://fabiensanglard.net/shadowmappingPCF/\n\n float shadow = 0.0;\n\n float xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n float yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n float dx0 = -1.0 * xPixelOffset;\n float dy0 = -1.0 * yPixelOffset;\n float dx1 = 1.0 * xPixelOffset;\n float dy1 = 1.0 * yPixelOffset;\n\n mat3 shadowKernel;\n mat3 depthKernel;\n\n depthKernel[0][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n depthKernel[0][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n depthKernel[0][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n depthKernel[1][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n depthKernel[1][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n depthKernel[1][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n depthKernel[2][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n depthKernel[2][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n depthKernel[2][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\n vec3 shadowZ = vec3( shadowCoord.z );\n shadowKernel[0] = vec3(lessThan(depthKernel[0], shadowZ ));\n shadowKernel[0] *= vec3(0.25);\n\n shadowKernel[1] = vec3(lessThan(depthKernel[1], shadowZ ));\n shadowKernel[1] *= vec3(0.25);\n\n shadowKernel[2] = vec3(lessThan(depthKernel[2], shadowZ ));\n shadowKernel[2] *= vec3(0.25);\n\n vec2 fractionalCoord = 1.0 - fract( shadowCoord.xy * shadowMapSize[i].xy );\n\n shadowKernel[0] = mix( shadowKernel[1], shadowKernel[0], fractionalCoord.x );\n shadowKernel[1] = mix( shadowKernel[2], shadowKernel[1], fractionalCoord.x );\n\n vec4 shadowValues;\n shadowValues.x = mix( shadowKernel[0][1], shadowKernel[0][0], fractionalCoord.y );\n shadowValues.y = mix( shadowKernel[0][2], shadowKernel[0][1], fractionalCoord.y );\n shadowValues.z = mix( shadowKernel[1][1], shadowKernel[1][0], fractionalCoord.y );\n shadowValues.w = mix( shadowKernel[1][2], shadowKernel[1][1], fractionalCoord.y );\n\n shadow = dot( shadowValues, vec4( 1.0 ) );\n\n shadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n #else\n\n vec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );\n float fDepth = unpackDepth( rgbaDepth );\n\n if ( fDepth < shadowCoord.z )\n\n // spot with multiple shadows is darker\n\n shadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );\n\n // spot with multiple shadows has the same color as single shadow spot\n\n // shadowColor = min( shadowColor, vec3( shadowDarkness[ i ] ) );\n\n #endif\n\n }\n\n\n #ifdef SHADOWMAP_DEBUG\n\n #ifdef SHADOWMAP_CASCADE\n\n if ( inFrustum && inFrustumCount == 1 ) gl_FragColor.xyz *= frustumColors[ i ];\n\n #else\n\n if ( inFrustum ) gl_FragColor.xyz *= frustumColors[ i ];\n\n #endif\n\n #endif\n\n }\n\n #ifdef GAMMA_OUTPUT\n\n shadowColor *= shadowColor;\n\n #endif\n\n gl_FragColor.xyz = gl_FragColor.xyz * shadowColor;\n\n#endif\n"; +THREE.ShaderChunk[ 'shadowmap_fragment'] = "#ifdef USE_SHADOWMAP\n\n #ifdef SHADOWMAP_DEBUG\n\n vec3 frustumColors[3];\n frustumColors[0] = vec3( 1.0, 0.5, 0.0 );\n frustumColors[1] = vec3( 0.0, 1.0, 0.8 );\n frustumColors[2] = vec3( 0.0, 0.5, 1.0 );\n\n #endif\n\n #ifdef SHADOWMAP_CASCADE\n\n int inFrustumCount = 0;\n\n #endif\n\n float fDepth;\n vec3 shadowColor = vec3( 1.0 );\n\n for( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n vec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;\n\n // if ( something && something ) breaks ATI OpenGL shader compiler\n // if ( all( something, something ) ) using this instead\n\n bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n bool inFrustum = all( inFrustumVec );\n\n // don't shadow pixels outside of light frustum\n // use just first frustum (for cascades)\n // don't shadow pixels behind far plane of light frustum\n\n #ifdef SHADOWMAP_CASCADE\n\n inFrustumCount += int( inFrustum );\n bvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );\n\n #else\n\n bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\n #endif\n\n bool frustumTest = all( frustumTestVec );\n\n if ( frustumTest ) {\n\n shadowCoord.z += shadowBias[ i ];\n\n #if defined( SHADOWMAP_TYPE_PCF )\n\n // Percentage-close filtering\n // (9 pixel kernel)\n // http://fabiensanglard.net/shadowmappingPCF/\n\n float shadow = 0.0;\n\n /*\n // nested loops breaks shader compiler / validator on some ATI cards when using OpenGL\n // must enroll loop manually\n\n for ( float y = -1.25; y <= 1.25; y += 1.25 )\n for ( float x = -1.25; x <= 1.25; x += 1.25 ) {\n\n vec4 rgbaDepth = texture2D( shadowMap[ i ], vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy );\n\n // doesn't seem to produce any noticeable visual difference compared to simple texture2D lookup\n //vec4 rgbaDepth = texture2DProj( shadowMap[ i ], vec4( vShadowCoord[ i ].w * ( vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy ), 0.05, vShadowCoord[ i ].w ) );\n\n float fDepth = unpackDepth( rgbaDepth );\n\n if ( fDepth < shadowCoord.z )\n shadow += 1.0;\n\n }\n\n shadow /= 9.0;\n\n */\n\n const float shadowDelta = 1.0 / 9.0;\n\n float xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n float yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n float dx0 = -1.25 * xPixelOffset;\n float dy0 = -1.25 * yPixelOffset;\n float dx1 = 1.25 * xPixelOffset;\n float dy1 = 1.25 * yPixelOffset;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n shadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n #elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\n // Percentage-close filtering\n // (9 pixel kernel)\n // http://fabiensanglard.net/shadowmappingPCF/\n\n float shadow = 0.0;\n\n float xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n float yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n float dx0 = -1.0 * xPixelOffset;\n float dy0 = -1.0 * yPixelOffset;\n float dx1 = 1.0 * xPixelOffset;\n float dy1 = 1.0 * yPixelOffset;\n\n mat3 shadowKernel;\n mat3 depthKernel;\n\n depthKernel[0][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n depthKernel[0][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n depthKernel[0][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n depthKernel[1][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n depthKernel[1][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n depthKernel[1][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n depthKernel[2][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n depthKernel[2][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n depthKernel[2][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\n vec3 shadowZ = vec3( shadowCoord.z );\n shadowKernel[0] = vec3(lessThan(depthKernel[0], shadowZ ));\n shadowKernel[0] *= vec3(0.25);\n\n shadowKernel[1] = vec3(lessThan(depthKernel[1], shadowZ ));\n shadowKernel[1] *= vec3(0.25);\n\n shadowKernel[2] = vec3(lessThan(depthKernel[2], shadowZ ));\n shadowKernel[2] *= vec3(0.25);\n\n vec2 fractionalCoord = 1.0 - fract( shadowCoord.xy * shadowMapSize[i].xy );\n\n shadowKernel[0] = mix( shadowKernel[1], shadowKernel[0], fractionalCoord.x );\n shadowKernel[1] = mix( shadowKernel[2], shadowKernel[1], fractionalCoord.x );\n\n vec4 shadowValues;\n shadowValues.x = mix( shadowKernel[0][1], shadowKernel[0][0], fractionalCoord.y );\n shadowValues.y = mix( shadowKernel[0][2], shadowKernel[0][1], fractionalCoord.y );\n shadowValues.z = mix( shadowKernel[1][1], shadowKernel[1][0], fractionalCoord.y );\n shadowValues.w = mix( shadowKernel[1][2], shadowKernel[1][1], fractionalCoord.y );\n\n shadow = dot( shadowValues, vec4( 1.0 ) );\n\n shadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n #else\n\n vec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );\n float fDepth = unpackDepth( rgbaDepth );\n\n if ( fDepth < shadowCoord.z )\n\n // spot with multiple shadows is darker\n\n shadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );\n\n // spot with multiple shadows has the same color as single shadow spot\n\n // shadowColor = min( shadowColor, vec3( shadowDarkness[ i ] ) );\n\n #endif\n\n }\n\n\n #ifdef SHADOWMAP_DEBUG\n\n #ifdef SHADOWMAP_CASCADE\n\n if ( inFrustum && inFrustumCount == 1 ) outgoingLight *= frustumColors[ i ];\n\n #else\n\n if ( inFrustum ) outgoingLight *= frustumColors[ i ];\n\n #endif\n\n #endif\n\n }\n\n // NOTE: I am unsure if this is correct in linear space. -bhouston, Dec 29, 2014\n shadowColor = inputToLinear( shadowColor );\n\n outgoingLight = outgoingLight * shadowColor;\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl @@ -16454,7 +16820,7 @@ THREE.ShaderChunk[ 'logdepthbuf_pars_fragment'] = "#ifdef USE_LOGDEPTHBUF\n\n un // File:src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl -THREE.ShaderChunk[ 'alphamap_fragment'] = "#ifdef USE_ALPHAMAP\n\n gl_FragColor.a *= texture2D( alphaMap, vUv ).g;\n\n#endif\n"; +THREE.ShaderChunk[ 'alphamap_fragment'] = "#ifdef USE_ALPHAMAP\n\n diffuseColor.a *= texture2D( alphaMap, vUv ).g;\n\n#endif\n"; // File:src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl @@ -16594,13 +16960,15 @@ THREE.UniformsLib = { "pointLightColor" : { type: "fv", value: [] }, "pointLightPosition" : { type: "fv", value: [] }, "pointLightDistance" : { type: "fv1", value: [] }, + "pointLightDecay" : { type: "fv1", value: [] }, "spotLightColor" : { type: "fv", value: [] }, "spotLightPosition" : { type: "fv", value: [] }, "spotLightDirection" : { type: "fv", value: [] }, "spotLightDistance" : { type: "fv1", value: [] }, "spotLightAngleCos" : { type: "fv1", value: [] }, - "spotLightExponent" : { type: "fv1", value: [] } + "spotLightExponent" : { type: "fv1", value: [] }, + "spotLightDecay" : { type: "fv1", value: [] } }, @@ -16611,6 +16979,7 @@ THREE.UniformsLib = { "size" : { type: "f", value: 1.0 }, "scale" : { type: "f", value: 1.0 }, "map" : { type: "t", value: null }, + "offsetRepeat" : { type: "v4", value: new THREE.Vector4( 0, 0, 1, 1 ) }, "fogDensity" : { type: "f", value: 0.00025 }, "fogNear" : { type: "f", value: 1 }, @@ -16658,6 +17027,7 @@ THREE.ShaderLib = { vertexShader: [ + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "map_pars_vertex" ], THREE.ShaderChunk[ "lightmap_pars_vertex" ], THREE.ShaderChunk[ "envmap_pars_vertex" ], @@ -16700,6 +17070,7 @@ THREE.ShaderLib = { "uniform vec3 diffuse;", "uniform float opacity;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "color_pars_fragment" ], THREE.ShaderChunk[ "map_pars_fragment" ], THREE.ShaderChunk[ "alphamap_pars_fragment" ], @@ -16712,22 +17083,28 @@ THREE.ShaderLib = { "void main() {", - " gl_FragColor = vec4( diffuse, opacity );", + " vec3 outgoingLight = vec3( 0.0 );", // outgoing light does not have an alpha, the surface does + " vec4 diffuseColor = vec4( diffuse, opacity );", THREE.ShaderChunk[ "logdepthbuf_fragment" ], THREE.ShaderChunk[ "map_fragment" ], + THREE.ShaderChunk[ "color_fragment" ], THREE.ShaderChunk[ "alphamap_fragment" ], THREE.ShaderChunk[ "alphatest_fragment" ], THREE.ShaderChunk[ "specularmap_fragment" ], - THREE.ShaderChunk[ "lightmap_fragment" ], - THREE.ShaderChunk[ "color_fragment" ], + + " outgoingLight = diffuseColor.rgb;", // simple shader + + THREE.ShaderChunk[ "lightmap_fragment" ], // TODO: Light map on an otherwise unlit surface doesn't make sense. THREE.ShaderChunk[ "envmap_fragment" ], - THREE.ShaderChunk[ "shadowmap_fragment" ], + THREE.ShaderChunk[ "shadowmap_fragment" ], // TODO: Shadows on an otherwise unlit surface doesn't make sense. THREE.ShaderChunk[ "linear_to_gamma_fragment" ], THREE.ShaderChunk[ "fog_fragment" ], + " gl_FragColor = vec4( outgoingLight, diffuseColor.a );", // TODO, this should be pre-multiplied to allow for bright highlights on very transparent objects + "}" ].join("\n") @@ -16744,7 +17121,6 @@ THREE.ShaderLib = { THREE.UniformsLib[ "shadowmap" ], { - "ambient" : { type: "c", value: new THREE.Color( 0xffffff ) }, "emissive" : { type: "c", value: new THREE.Color( 0x000000 ) }, "wrapRGB" : { type: "v3", value: new THREE.Vector3( 1, 1, 1 ) } } @@ -16763,6 +17139,7 @@ THREE.ShaderLib = { "#endif", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "map_pars_vertex" ], THREE.ShaderChunk[ "lightmap_pars_vertex" ], THREE.ShaderChunk[ "envmap_pars_vertex" ], @@ -16800,6 +17177,8 @@ THREE.ShaderLib = { fragmentShader: [ + "uniform vec3 diffuse;", + "uniform vec3 emissive;", "uniform float opacity;", "varying vec3 vLightFront;", @@ -16810,6 +17189,7 @@ THREE.ShaderLib = { "#endif", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "color_pars_fragment" ], THREE.ShaderChunk[ "map_pars_fragment" ], THREE.ShaderChunk[ "alphamap_pars_fragment" ], @@ -16822,10 +17202,12 @@ THREE.ShaderLib = { "void main() {", - " gl_FragColor = vec4( vec3( 1.0 ), opacity );", + " vec3 outgoingLight = vec3( 0.0 );", // outgoing light does not have an alpha, the surface does + " vec4 diffuseColor = vec4( diffuse, opacity );", THREE.ShaderChunk[ "logdepthbuf_fragment" ], THREE.ShaderChunk[ "map_fragment" ], + THREE.ShaderChunk[ "color_fragment" ], THREE.ShaderChunk[ "alphamap_fragment" ], THREE.ShaderChunk[ "alphatest_fragment" ], THREE.ShaderChunk[ "specularmap_fragment" ], @@ -16836,18 +17218,17 @@ THREE.ShaderLib = { //"gl_FragColor.xyz *= isFront * vLightFront + ( 1.0 - isFront ) * vLightBack;", " if ( gl_FrontFacing )", - " gl_FragColor.xyz *= vLightFront;", + " outgoingLight += diffuseColor.rgb * vLightFront + emissive;", " else", - " gl_FragColor.xyz *= vLightBack;", + " outgoingLight += diffuseColor.rgb * vLightBack + emissive;", " #else", - " gl_FragColor.xyz *= vLightFront;", + " outgoingLight += diffuseColor.rgb * vLightFront + emissive;", " #endif", THREE.ShaderChunk[ "lightmap_fragment" ], - THREE.ShaderChunk[ "color_fragment" ], THREE.ShaderChunk[ "envmap_fragment" ], THREE.ShaderChunk[ "shadowmap_fragment" ], @@ -16855,6 +17236,8 @@ THREE.ShaderLib = { THREE.ShaderChunk[ "fog_fragment" ], + " gl_FragColor = vec4( outgoingLight, diffuseColor.a );", // TODO, this should be pre-multiplied to allow for bright highlights on very transparent objects + "}" ].join("\n") @@ -16873,7 +17256,6 @@ THREE.ShaderLib = { THREE.UniformsLib[ "shadowmap" ], { - "ambient" : { type: "c", value: new THREE.Color( 0xffffff ) }, "emissive" : { type: "c", value: new THREE.Color( 0x000000 ) }, "specular" : { type: "c", value: new THREE.Color( 0x111111 ) }, "shininess": { type: "f", value: 30 }, @@ -16887,8 +17269,14 @@ THREE.ShaderLib = { "#define PHONG", "varying vec3 vViewPosition;", - "varying vec3 vNormal;", + "#ifndef FLAT_SHADED", + + " varying vec3 vNormal;", + + "#endif", + + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "map_pars_vertex" ], THREE.ShaderChunk[ "lightmap_pars_vertex" ], THREE.ShaderChunk[ "envmap_pars_vertex" ], @@ -16910,8 +17298,12 @@ THREE.ShaderLib = { THREE.ShaderChunk[ "skinnormal_vertex" ], THREE.ShaderChunk[ "defaultnormal_vertex" ], + "#ifndef FLAT_SHADED", // Normal computed with derivatives when FLAT_SHADED + " vNormal = normalize( transformedNormal );", + "#endif", + THREE.ShaderChunk[ "morphtarget_vertex" ], THREE.ShaderChunk[ "skinning_vertex" ], THREE.ShaderChunk[ "default_vertex" ], @@ -16933,13 +17325,12 @@ THREE.ShaderLib = { "#define PHONG", "uniform vec3 diffuse;", - "uniform float opacity;", - - "uniform vec3 ambient;", "uniform vec3 emissive;", "uniform vec3 specular;", "uniform float shininess;", + "uniform float opacity;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "color_pars_fragment" ], THREE.ShaderChunk[ "map_pars_fragment" ], THREE.ShaderChunk[ "alphamap_pars_fragment" ], @@ -16955,10 +17346,12 @@ THREE.ShaderLib = { "void main() {", - " gl_FragColor = vec4( vec3( 1.0 ), opacity );", + " vec3 outgoingLight = vec3( 0.0 );", // outgoing light does not have an alpha, the surface does + " vec4 diffuseColor = vec4( diffuse, opacity );", THREE.ShaderChunk[ "logdepthbuf_fragment" ], THREE.ShaderChunk[ "map_fragment" ], + THREE.ShaderChunk[ "color_fragment" ], THREE.ShaderChunk[ "alphamap_fragment" ], THREE.ShaderChunk[ "alphatest_fragment" ], THREE.ShaderChunk[ "specularmap_fragment" ], @@ -16966,7 +17359,6 @@ THREE.ShaderLib = { THREE.ShaderChunk[ "lights_phong_fragment" ], THREE.ShaderChunk[ "lightmap_fragment" ], - THREE.ShaderChunk[ "color_fragment" ], THREE.ShaderChunk[ "envmap_fragment" ], THREE.ShaderChunk[ "shadowmap_fragment" ], @@ -16974,6 +17366,8 @@ THREE.ShaderLib = { THREE.ShaderChunk[ "fog_fragment" ], + " gl_FragColor = vec4( outgoingLight, diffuseColor.a );", // TODO, this should be pre-multiplied to allow for bright highlights on very transparent objects + "}" ].join("\n") @@ -16994,6 +17388,7 @@ THREE.ShaderLib = { "uniform float size;", "uniform float scale;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "color_pars_vertex" ], THREE.ShaderChunk[ "shadowmap_pars_vertex" ], THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ], @@ -17025,6 +17420,7 @@ THREE.ShaderLib = { "uniform vec3 psColor;", "uniform float opacity;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "color_pars_fragment" ], THREE.ShaderChunk[ "map_particle_pars_fragment" ], THREE.ShaderChunk[ "fog_pars_fragment" ], @@ -17033,15 +17429,21 @@ THREE.ShaderLib = { "void main() {", - " gl_FragColor = vec4( psColor, opacity );", + " vec3 outgoingLight = vec3( 0.0 );", // outgoing light does not have an alpha, the surface does + " vec4 diffuseColor = vec4( psColor, opacity );", THREE.ShaderChunk[ "logdepthbuf_fragment" ], THREE.ShaderChunk[ "map_particle_fragment" ], - THREE.ShaderChunk[ "alphatest_fragment" ], THREE.ShaderChunk[ "color_fragment" ], + THREE.ShaderChunk[ "alphatest_fragment" ], + + " outgoingLight = diffuseColor.rgb;", // simple shader + THREE.ShaderChunk[ "shadowmap_fragment" ], THREE.ShaderChunk[ "fog_fragment" ], + " gl_FragColor = vec4( outgoingLight, diffuseColor.a );", // TODO, this should be pre-multiplied to allow for bright highlights on very transparent objects + "}" ].join("\n") @@ -17070,6 +17472,7 @@ THREE.ShaderLib = { "varying float vLineDistance;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "color_pars_vertex" ], THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ], @@ -17098,6 +17501,7 @@ THREE.ShaderLib = { "varying float vLineDistance;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "color_pars_fragment" ], THREE.ShaderChunk[ "fog_pars_fragment" ], THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ], @@ -17110,12 +17514,18 @@ THREE.ShaderLib = { " }", - " gl_FragColor = vec4( diffuse, opacity );", + " vec3 outgoingLight = vec3( 0.0 );", // outgoing light does not have an alpha, the surface does + " vec4 diffuseColor = vec4( diffuse, opacity );", THREE.ShaderChunk[ "logdepthbuf_fragment" ], THREE.ShaderChunk[ "color_fragment" ], + + " outgoingLight = diffuseColor.rgb;", // simple shader + THREE.ShaderChunk[ "fog_fragment" ], + " gl_FragColor = vec4( outgoingLight, diffuseColor.a );", // TODO, this should be pre-multiplied to allow for bright highlights on very transparent objects + "}" ].join("\n") @@ -17134,6 +17544,7 @@ THREE.ShaderLib = { vertexShader: [ + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "morphtarget_pars_vertex" ], THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ], @@ -17153,6 +17564,7 @@ THREE.ShaderLib = { "uniform float mFar;", "uniform float opacity;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ], "void main() {", @@ -17170,7 +17582,7 @@ THREE.ShaderLib = { " #endif", " float color = 1.0 - smoothstep( mNear, mFar, depth );", - " gl_FragColor = vec4( vec3( color ), opacity );", + " gl_FragColor = vec4( vec3( color ), opacity );", // TODO, this should be pre-multiplied to allow for bright highlights on very transparent objects "}" @@ -17190,6 +17602,7 @@ THREE.ShaderLib = { "varying vec3 vNormal;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "morphtarget_pars_vertex" ], THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ], @@ -17210,6 +17623,7 @@ THREE.ShaderLib = { "uniform float opacity;", "varying vec3 vNormal;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ], "void main() {", @@ -17237,12 +17651,12 @@ THREE.ShaderLib = { "varying vec3 vWorldPosition;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ], "void main() {", - " vec4 worldPosition = modelMatrix * vec4( position, 1.0 );", - " vWorldPosition = worldPosition.xyz;", + " vWorldPosition = transformDirection( position, modelMatrix );", " gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", @@ -17259,6 +17673,7 @@ THREE.ShaderLib = { "varying vec3 vWorldPosition;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ], "void main() {", @@ -17286,12 +17701,12 @@ THREE.ShaderLib = { "varying vec3 vWorldPosition;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ], "void main() {", - " vec4 worldPosition = modelMatrix * vec4( position, 1.0 );", - " vWorldPosition = worldPosition.xyz;", + " vWorldPosition = transformDirection( position, modelMatrix );", " gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", @@ -17308,6 +17723,7 @@ THREE.ShaderLib = { "varying vec3 vWorldPosition;", + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ], "void main() {", @@ -17315,8 +17731,8 @@ THREE.ShaderLib = { // " gl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );", "vec3 direction = normalize( vWorldPosition );", "vec2 sampleUV;", - "sampleUV.y = clamp( tFlip * direction.y * -0.5 + 0.5, 0.0, 1.0);", - "sampleUV.x = atan( direction.z, direction.x ) * 0.15915494309189533576888376337251 + 0.5;", // reciprocal( 2 PI ) + 0.5 + "sampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );", + "sampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;", "gl_FragColor = texture2D( tEquirect, sampleUV );", THREE.ShaderChunk[ "logdepthbuf_fragment" ], @@ -17345,6 +17761,7 @@ THREE.ShaderLib = { vertexShader: [ + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "morphtarget_pars_vertex" ], THREE.ShaderChunk[ "skinning_pars_vertex" ], THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ], @@ -17363,6 +17780,7 @@ THREE.ShaderLib = { fragmentShader: [ + THREE.ShaderChunk[ "common" ], THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ], "vec4 pack_depth( const in float depth ) {", @@ -17464,6 +17882,7 @@ THREE.WebGLRenderer = function ( parameters ) { // physically based shading + this.gammaFactor = 2.0; // for backwards compatibility this.gammaInput = false; this.gammaOutput = false; @@ -17523,26 +17942,6 @@ THREE.WebGLRenderer = function ( parameters ) { _usedTextureUnits = 0, - // GL state cache - - _oldDoubleSided = - 1, - _oldFlipSided = - 1, - - _oldBlending = - 1, - - _oldBlendEquation = - 1, - _oldBlendSrc = - 1, - _oldBlendDst = - 1, - - _oldDepthTest = - 1, - _oldDepthWrite = - 1, - - _oldPolygonOffset = null, - _oldPolygonOffsetFactor = null, - _oldPolygonOffsetUnits = null, - - _oldLineWidth = null, - _viewportX = 0, _viewportY = 0, _viewportWidth = _canvas.width, @@ -17550,9 +17949,6 @@ THREE.WebGLRenderer = function ( parameters ) { _currentWidth = 0, _currentHeight = 0, - _newAttributes = new Uint8Array( 16 ), - _enabledAttributes = new Uint8Array( 16 ), - // frustum _frustum = new THREE.Frustum(), @@ -17560,7 +17956,6 @@ THREE.WebGLRenderer = function ( parameters ) { // camera matrices cache _projScreenMatrix = new THREE.Matrix4(), - _projScreenMatrixPS = new THREE.Matrix4(), _vector3 = new THREE.Vector3(), @@ -17574,8 +17969,8 @@ THREE.WebGLRenderer = function ( parameters ) { ambient: [ 0, 0, 0 ], directional: { length: 0, colors:[], positions: [] }, - point: { length: 0, colors: [], positions: [], distances: [] }, - spot: { length: 0, colors: [], positions: [], distances: [], directions: [], anglesCos: [], exponents: [] }, + point: { length: 0, colors: [], positions: [], distances: [], decays: [] }, + spot: { length: 0, colors: [], positions: [], distances: [], directions: [], anglesCos: [], exponents: [], decays: [] }, hemi: { length: 0, skyColors: [], groundColors: [], positions: [] } }; @@ -17624,10 +18019,12 @@ THREE.WebGLRenderer = function ( parameters ) { } catch ( error ) { - console.error( error ); + THREE.error( 'THREE.WebGLRenderer: ' + error ); } + var state = new THREE.WebGLState( _gl, paramThreeToGL ); + if ( _gl.getShaderPrecisionFormat === undefined ) { _gl.getShaderPrecisionFormat = function () { @@ -17646,6 +18043,8 @@ THREE.WebGLRenderer = function ( parameters ) { extensions.get( 'OES_texture_float' ); extensions.get( 'OES_texture_float_linear' ); + extensions.get( 'OES_texture_half_float' ); + extensions.get( 'OES_texture_half_float_linear' ); extensions.get( 'OES_standard_derivatives' ); if ( _logarithmicDepthBuffer ) { @@ -17656,6 +18055,18 @@ THREE.WebGLRenderer = function ( parameters ) { // + var glClearColor = function ( r, g, b, a ) { + + if ( _premultipliedAlpha === true ) { + + r *= a; g *= a; b *= a; + + } + + _gl.clearColor( r, g, b, a ); + + }; + var setDefaultGLState = function () { _gl.clearColor( 0, 0, 0, 1 ); @@ -17675,7 +18086,7 @@ THREE.WebGLRenderer = function ( parameters ) { _gl.viewport( _viewportX, _viewportY, _viewportWidth, _viewportHeight ); - _gl.clearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha ); + glClearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha ); }; @@ -17683,28 +18094,20 @@ THREE.WebGLRenderer = function ( parameters ) { _currentProgram = null; _currentCamera = null; - - _oldBlending = - 1; - _oldDepthTest = - 1; - _oldDepthWrite = - 1; - _oldDoubleSided = - 1; - _oldFlipSided = - 1; + _currentGeometryProgram = ''; _currentMaterialId = - 1; - + _lightsNeedUpdate = true; - - for ( var i = 0; i < _enabledAttributes.length; i ++ ) { - - _enabledAttributes[ i ] = 0; - - } + + state.reset(); }; setDefaultGLState(); this.context = _gl; + this.state = state; // GPU capabilities @@ -17720,11 +18123,9 @@ THREE.WebGLRenderer = function ( parameters ) { var _vertexShaderPrecisionHighpFloat = _gl.getShaderPrecisionFormat( _gl.VERTEX_SHADER, _gl.HIGH_FLOAT ); var _vertexShaderPrecisionMediumpFloat = _gl.getShaderPrecisionFormat( _gl.VERTEX_SHADER, _gl.MEDIUM_FLOAT ); - var _vertexShaderPrecisionLowpFloat = _gl.getShaderPrecisionFormat( _gl.VERTEX_SHADER, _gl.LOW_FLOAT ); var _fragmentShaderPrecisionHighpFloat = _gl.getShaderPrecisionFormat( _gl.FRAGMENT_SHADER, _gl.HIGH_FLOAT ); var _fragmentShaderPrecisionMediumpFloat = _gl.getShaderPrecisionFormat( _gl.FRAGMENT_SHADER, _gl.MEDIUM_FLOAT ); - var _fragmentShaderPrecisionLowpFloat = _gl.getShaderPrecisionFormat( _gl.FRAGMENT_SHADER, _gl.LOW_FLOAT ); var getCompressedTextureFormats = ( function () { @@ -17744,7 +18145,7 @@ THREE.WebGLRenderer = function ( parameters ) { var formats = _gl.getParameter( _gl.COMPRESSED_TEXTURE_FORMATS ); - for ( var i = 0; i < formats.length; i ++ ){ + for ( var i = 0; i < formats.length; i ++ ) { array.push( formats[ i ] ); @@ -17768,12 +18169,12 @@ THREE.WebGLRenderer = function ( parameters ) { if ( mediumpAvailable ) { _precision = 'mediump'; - console.warn( 'THREE.WebGLRenderer: highp not supported, using mediump.' ); + THREE.warn( 'THREE.WebGLRenderer: highp not supported, using mediump.' ); } else { _precision = 'lowp'; - console.warn( 'THREE.WebGLRenderer: highp and mediump not supported, using lowp.' ); + THREE.warn( 'THREE.WebGLRenderer: highp and mediump not supported, using lowp.' ); } @@ -17782,7 +18183,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( _precision === 'mediump' && ! mediumpAvailable ) { _precision = 'lowp'; - console.warn( 'THREE.WebGLRenderer: mediump not supported, using lowp.' ); + THREE.warn( 'THREE.WebGLRenderer: mediump not supported, using lowp.' ); } @@ -17819,6 +18220,12 @@ THREE.WebGLRenderer = function ( parameters ) { }; + this.supportsHalfFloatTextures = function () { + + return extensions.get( 'OES_texture_half_float' ); + + }; + this.supportsStandardDerivatives = function () { return extensions.get( 'OES_standard_derivatives' ); @@ -17939,9 +18346,10 @@ THREE.WebGLRenderer = function ( parameters ) { this.setClearColor = function ( color, alpha ) { _clearColor.set( color ); + _clearAlpha = alpha !== undefined ? alpha : 1; - _gl.clearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha ); + glClearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha ); }; @@ -17955,7 +18363,7 @@ THREE.WebGLRenderer = function ( parameters ) { _clearAlpha = alpha; - _gl.clearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha ); + glClearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha ); }; @@ -18433,8 +18841,6 @@ THREE.WebGLRenderer = function ( parameters ) { geometry.__vertexArray = new Float32Array( nvertices * 3 ); geometry.__colorArray = new Float32Array( nvertices * 3 ); - geometry.__sortArray = []; - geometry.__webglParticleCount = nvertices; initCustomAttributes( object ); @@ -18592,19 +18998,19 @@ THREE.WebGLRenderer = function ( parameters ) { ? object.material.materials[ geometryGroup.materialIndex ] : object.material; - }; + } - function materialNeedsSmoothNormals ( material ) { + function materialNeedsFaceNormals ( material ) { - return material && material.shading !== undefined && material.shading === THREE.SmoothShading; + return material instanceof THREE.MeshPhongMaterial === false && material.shading === THREE.FlatShading; - }; + } // Buffer setting function setParticleBuffers ( geometry, hint, object ) { - var v, c, vertex, offset, index, color, + var v, c, vertex, offset, color, vertices = geometry.vertices, vl = vertices.length, @@ -18615,15 +19021,12 @@ THREE.WebGLRenderer = function ( parameters ) { vertexArray = geometry.__vertexArray, colorArray = geometry.__colorArray, - sortArray = geometry.__sortArray, - dirtyVertices = geometry.verticesNeedUpdate, - dirtyElements = geometry.elementsNeedUpdate, dirtyColors = geometry.colorsNeedUpdate, customAttributes = geometry.__webglCustomAttributesList, i, il, - a, ca, cal, value, + ca, cal, value, customAttribute; if ( dirtyVertices ) { @@ -18782,7 +19185,7 @@ THREE.WebGLRenderer = function ( parameters ) { customAttributes = geometry.__webglCustomAttributesList, i, il, - a, ca, cal, value, + ca, cal, value, customAttribute; if ( dirtyVertices ) { @@ -18939,23 +19342,20 @@ THREE.WebGLRenderer = function ( parameters ) { } - var needsSmoothNormals = materialNeedsSmoothNormals( material ); + var needsFaceNormals = materialNeedsFaceNormals( material ); var f, fl, fi, face, - vertexNormals, faceNormal, normal, + vertexNormals, faceNormal, vertexColors, faceColor, vertexTangents, - uv, uv2, v1, v2, v3, v4, t1, t2, t3, t4, n1, n2, n3, n4, + uv, uv2, v1, v2, v3, t1, t2, t3, n1, n2, n3, c1, c2, c3, - sw1, sw2, sw3, sw4, - si1, si2, si3, si4, - sa1, sa2, sa3, sa4, - sb1, sb2, sb3, sb4, - m, ml, i, il, + sw1, sw2, sw3, + si1, si2, si3, + i, il, vn, uvi, uv2i, vk, vkl, vka, nka, chf, faceVertexNormals, - a, vertexIndex = 0, @@ -18970,7 +19370,6 @@ THREE.WebGLRenderer = function ( parameters ) { offset_skin = 0, offset_morphTarget = 0, offset_custom = 0, - offset_customSrc = 0, value, @@ -19010,8 +19409,6 @@ THREE.WebGLRenderer = function ( parameters ) { obj_uvs = geometry.faceVertexUvs[ 0 ], obj_uvs2 = geometry.faceVertexUvs[ 1 ], - obj_colors = geometry.colors, - obj_skinIndices = geometry.skinIndices, obj_skinWeights = geometry.skinWeights, @@ -19084,7 +19481,13 @@ THREE.WebGLRenderer = function ( parameters ) { if ( material.morphNormals ) { - if ( needsSmoothNormals ) { + if ( needsFaceNormals ) { + + n1 = morphNormals[ vk ].faceNormals[ chf ]; + n2 = n1; + n3 = n1; + + } else { faceVertexNormals = morphNormals[ vk ].vertexNormals[ chf ]; @@ -19092,12 +19495,6 @@ THREE.WebGLRenderer = function ( parameters ) { n2 = faceVertexNormals.b; n3 = faceVertexNormals.c; - } else { - - n1 = morphNormals[ vk ].faceNormals[ chf ]; - n2 = n1; - n3 = n1; - } nka = morphNormalsArrays[ vk ]; @@ -19293,7 +19690,7 @@ THREE.WebGLRenderer = function ( parameters ) { vertexNormals = face.vertexNormals; faceNormal = face.normal; - if ( vertexNormals.length === 3 && needsSmoothNormals ) { + if ( vertexNormals.length === 3 && needsFaceNormals === false ) { for ( i = 0; i < 3; i ++ ) { @@ -19434,7 +19831,6 @@ THREE.WebGLRenderer = function ( parameters ) { if ( ! customAttribute.__original.needsUpdate ) continue; offset_custom = 0; - offset_customSrc = 0; if ( customAttribute.size === 1 ) { @@ -19734,7 +20130,7 @@ THREE.WebGLRenderer = function ( parameters ) { this.renderBufferImmediate = function ( object, program, material ) { - initAttributes(); + state.initAttributes(); if ( object.hasPositions && ! object.__webglVertexBuffer ) object.__webglVertexBuffer = _gl.createBuffer(); if ( object.hasNormals && ! object.__webglNormalBuffer ) object.__webglNormalBuffer = _gl.createBuffer(); @@ -19745,7 +20141,9 @@ THREE.WebGLRenderer = function ( parameters ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, object.__webglVertexBuffer ); _gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW ); - enableAttribute( program.attributes.position ); + + state.enableAttribute( program.attributes.position ); + _gl.vertexAttribPointer( program.attributes.position, 3, _gl.FLOAT, false, 0, 0 ); } @@ -19754,7 +20152,8 @@ THREE.WebGLRenderer = function ( parameters ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, object.__webglNormalBuffer ); - if ( material.shading === THREE.FlatShading ) { + if ( material instanceof THREE.MeshPhongMaterial === false && + material.shading === THREE.FlatShading ) { var nx, ny, nz, nax, nbx, ncx, nay, nby, ncy, naz, nbz, ncz, @@ -19798,7 +20197,9 @@ THREE.WebGLRenderer = function ( parameters ) { } _gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW ); - enableAttribute( program.attributes.normal ); + + state.enableAttribute( program.attributes.normal ); + _gl.vertexAttribPointer( program.attributes.normal, 3, _gl.FLOAT, false, 0, 0 ); } @@ -19807,7 +20208,9 @@ THREE.WebGLRenderer = function ( parameters ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, object.__webglUvBuffer ); _gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW ); - enableAttribute( program.attributes.uv ); + + state.enableAttribute( program.attributes.uv ); + _gl.vertexAttribPointer( program.attributes.uv, 2, _gl.FLOAT, false, 0, 0 ); } @@ -19816,12 +20219,14 @@ THREE.WebGLRenderer = function ( parameters ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, object.__webglColorBuffer ); _gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW ); - enableAttribute( program.attributes.color ); + + state.enableAttribute( program.attributes.color ); + _gl.vertexAttribPointer( program.attributes.color, 3, _gl.FLOAT, false, 0, 0 ); } - disableUnusedAttributes(); + state.disableUnusedAttributes(); _gl.drawArrays( _gl.TRIANGLES, 0, object.count ); @@ -19851,7 +20256,7 @@ THREE.WebGLRenderer = function ( parameters ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryAttribute.buffer ); - enableAttribute( programAttribute ); + state.enableAttribute( programAttribute ); _gl.vertexAttribPointer( programAttribute, size, _gl.FLOAT, false, 0, startIndex * size * 4 ); // 4 bytes per Float32 @@ -19873,7 +20278,7 @@ THREE.WebGLRenderer = function ( parameters ) { } - disableUnusedAttributes(); + state.disableUnusedAttributes(); } @@ -19898,7 +20303,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( updateBuffers ) { - initAttributes(); + state.initAttributes(); } @@ -19990,11 +20395,11 @@ THREE.WebGLRenderer = function ( parameters ) { // render non-indexed triangles - _gl.drawArrays( mode, 0, position.array.length / 3 ); + _gl.drawArrays( mode, 0, position.array.length / position.itemSize ); _this.info.render.calls ++; - _this.info.render.vertices += position.array.length / 3; - _this.info.render.faces += position.array.length / 9; + _this.info.render.vertices += position.array.length / position.itemSize; + _this.info.render.faces += position.array.length / ( 3 * position.itemSize ); } @@ -20109,7 +20514,7 @@ THREE.WebGLRenderer = function ( parameters ) { var mode = ( object.mode === THREE.LineStrip ) ? _gl.LINE_STRIP : _gl.LINES; - setLineWidth( material.linewidth ); + state.setLineWidth( material.linewidth * pixelRatio ); var index = geometry.attributes.index; @@ -20239,7 +20644,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( updateBuffers ) { - initAttributes(); + state.initAttributes(); } @@ -20250,7 +20655,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( updateBuffers ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglVertexBuffer ); - enableAttribute( attributes.position ); + + state.enableAttribute( attributes.position ); + _gl.vertexAttribPointer( attributes.position, 3, _gl.FLOAT, false, 0, 0 ); } @@ -20281,7 +20688,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( attributes[ attribute.buffer.belongsToAttribute ] >= 0 ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, attribute.buffer ); - enableAttribute( attributes[ attribute.buffer.belongsToAttribute ] ); + + state.enableAttribute( attributes[ attribute.buffer.belongsToAttribute ] ); + _gl.vertexAttribPointer( attributes[ attribute.buffer.belongsToAttribute ], attribute.size, _gl.FLOAT, false, 0, 0 ); } @@ -20298,7 +20707,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( object.geometry.colors.length > 0 || object.geometry.faces.length > 0 ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglColorBuffer ); - enableAttribute( attributes.color ); + + state.enableAttribute( attributes.color ); + _gl.vertexAttribPointer( attributes.color, 3, _gl.FLOAT, false, 0, 0 ); } else if ( material.defaultAttributeValues !== undefined ) { @@ -20315,7 +20726,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( attributes.normal >= 0 ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglNormalBuffer ); - enableAttribute( attributes.normal ); + + state.enableAttribute( attributes.normal ); + _gl.vertexAttribPointer( attributes.normal, 3, _gl.FLOAT, false, 0, 0 ); } @@ -20325,7 +20738,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( attributes.tangent >= 0 ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglTangentBuffer ); - enableAttribute( attributes.tangent ); + + state.enableAttribute( attributes.tangent ); + _gl.vertexAttribPointer( attributes.tangent, 4, _gl.FLOAT, false, 0, 0 ); } @@ -20337,7 +20752,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( object.geometry.faceVertexUvs[ 0 ] ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglUVBuffer ); - enableAttribute( attributes.uv ); + + state.enableAttribute( attributes.uv ); + _gl.vertexAttribPointer( attributes.uv, 2, _gl.FLOAT, false, 0, 0 ); } else if ( material.defaultAttributeValues !== undefined ) { @@ -20354,7 +20771,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( object.geometry.faceVertexUvs[ 1 ] ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglUV2Buffer ); - enableAttribute( attributes.uv2 ); + + state.enableAttribute( attributes.uv2 ); + _gl.vertexAttribPointer( attributes.uv2, 2, _gl.FLOAT, false, 0, 0 ); } else if ( material.defaultAttributeValues !== undefined ) { @@ -20370,11 +20789,15 @@ THREE.WebGLRenderer = function ( parameters ) { attributes.skinIndex >= 0 && attributes.skinWeight >= 0 ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglSkinIndicesBuffer ); - enableAttribute( attributes.skinIndex ); + + state.enableAttribute( attributes.skinIndex ); + _gl.vertexAttribPointer( attributes.skinIndex, 4, _gl.FLOAT, false, 0, 0 ); _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglSkinWeightsBuffer ); - enableAttribute( attributes.skinWeight ); + + state.enableAttribute( attributes.skinWeight ); + _gl.vertexAttribPointer( attributes.skinWeight, 4, _gl.FLOAT, false, 0, 0 ); } @@ -20384,14 +20807,16 @@ THREE.WebGLRenderer = function ( parameters ) { if ( attributes.lineDistance >= 0 ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglLineDistanceBuffer ); - enableAttribute( attributes.lineDistance ); + + state.enableAttribute( attributes.lineDistance ); + _gl.vertexAttribPointer( attributes.lineDistance, 1, _gl.FLOAT, false, 0, 0 ); } } - disableUnusedAttributes(); + state.disableUnusedAttributes(); // render mesh @@ -20403,7 +20828,8 @@ THREE.WebGLRenderer = function ( parameters ) { if ( material.wireframe ) { - setLineWidth( material.wireframeLinewidth ); + state.setLineWidth( material.wireframeLinewidth * pixelRatio ); + if ( updateBuffers ) _gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, geometryGroup.__webglLineBuffer ); _gl.drawElements( _gl.LINES, geometryGroup.__webglLineCount, type, 0 ); @@ -20426,7 +20852,7 @@ THREE.WebGLRenderer = function ( parameters ) { var mode = ( object.mode === THREE.LineStrip ) ? _gl.LINE_STRIP : _gl.LINES; - setLineWidth( material.linewidth ); + state.setLineWidth( material.linewidth * pixelRatio ); _gl.drawArrays( mode, 0, geometryGroup.__webglLineCount ); @@ -20445,44 +20871,6 @@ THREE.WebGLRenderer = function ( parameters ) { }; - function initAttributes() { - - for ( var i = 0, l = _newAttributes.length; i < l; i ++ ) { - - _newAttributes[ i ] = 0; - - } - - } - - function enableAttribute( attribute ) { - - _newAttributes[ attribute ] = 1; - - if ( _enabledAttributes[ attribute ] === 0 ) { - - _gl.enableVertexAttribArray( attribute ); - _enabledAttributes[ attribute ] = 1; - - } - - } - - function disableUnusedAttributes() { - - for ( var i = 0, l = _enabledAttributes.length; i < l; i ++ ) { - - if ( _enabledAttributes[ i ] !== _newAttributes[ i ] ) { - - _gl.disableVertexAttribArray( i ); - _enabledAttributes[ i ] = 0; - - } - - } - - } - function setupMorphTargets ( material, geometryGroup, object ) { // set base @@ -20492,13 +20880,17 @@ THREE.WebGLRenderer = function ( parameters ) { if ( object.morphTargetBase !== - 1 && attributes.position >= 0 ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglMorphTargetsBuffers[ object.morphTargetBase ] ); - enableAttribute( attributes.position ); + + state.enableAttribute( attributes.position ); + _gl.vertexAttribPointer( attributes.position, 3, _gl.FLOAT, false, 0, 0 ); } else if ( attributes.position >= 0 ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglVertexBuffer ); - enableAttribute( attributes.position ); + + state.enableAttribute( attributes.position ); + _gl.vertexAttribPointer( attributes.position, 3, _gl.FLOAT, false, 0, 0 ); } @@ -20520,7 +20912,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( attribute >= 0 ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglMorphTargetsBuffers[ order[ m ] ] ); - enableAttribute( attribute ); + + state.enableAttribute( attribute ); + _gl.vertexAttribPointer( attribute, 3, _gl.FLOAT, false, 0, 0 ); } @@ -20530,7 +20924,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( attribute >= 0 && material.morphNormals ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglMorphNormalsBuffers[ order[ m ] ] ); - enableAttribute( attribute ); + + state.enableAttribute( attribute ); + _gl.vertexAttribPointer( attribute, 3, _gl.FLOAT, false, 0, 0 ); } @@ -20547,6 +20943,14 @@ THREE.WebGLRenderer = function ( parameters ) { var activeInfluenceIndices = []; var influences = object.morphTargetInfluences; + var morphTargets = object.geometry.morphTargets; + + if ( influences.length > morphTargets.length ) { + + console.warn( 'THREE.WebGLRenderer: Influences array is bigger than morphTargets array.' ); + influences.length = morphTargets.length; + + } for ( var i = 0, il = influences.length; i < il; i ++ ) { @@ -20584,7 +20988,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( attribute >= 0 ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglMorphTargetsBuffers[ influenceIndex ] ); - enableAttribute( attribute ); + + state.enableAttribute( attribute ); + _gl.vertexAttribPointer( attribute, 3, _gl.FLOAT, false, 0, 0 ); } @@ -20594,9 +21000,10 @@ THREE.WebGLRenderer = function ( parameters ) { if ( attribute >= 0 && material.morphNormals ) { _gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglMorphNormalsBuffers[ influenceIndex ] ); - enableAttribute( attribute ); - _gl.vertexAttribPointer( attribute, 3, _gl.FLOAT, false, 0, 0 ); + state.enableAttribute( attribute ); + + _gl.vertexAttribPointer( attribute, 3, _gl.FLOAT, false, 0, 0 ); } @@ -20636,7 +21043,11 @@ THREE.WebGLRenderer = function ( parameters ) { function painterSortStable ( a, b ) { - if ( a.material.id !== b.material.id ) { + if ( a.object.renderOrder !== b.object.renderOrder ) { + + return a.object.renderOrder - b.object.renderOrder; + + } else if ( a.material.id !== b.material.id ) { return a.material.id - b.material.id; @@ -20654,7 +21065,11 @@ THREE.WebGLRenderer = function ( parameters ) { function reversePainterSortStable ( a, b ) { - if ( a.z !== b.z ) { + if ( a.object.renderOrder !== b.object.renderOrder ) { + + return a.object.renderOrder - b.object.renderOrder; + + } if ( a.z !== b.z ) { return b.z - a.z; @@ -20678,7 +21093,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( camera instanceof THREE.Camera === false ) { - console.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' ); + THREE.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' ); return; } @@ -20771,32 +21186,27 @@ THREE.WebGLRenderer = function ( parameters ) { if ( scene.overrideMaterial ) { - var material = scene.overrideMaterial; + var overrideMaterial = scene.overrideMaterial; - this.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst ); - this.setDepthTest( material.depthTest ); - this.setDepthWrite( material.depthWrite ); - setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); + setMaterial( overrideMaterial ); - renderObjects( opaqueObjects, camera, lights, fog, true, material ); - renderObjects( transparentObjects, camera, lights, fog, true, material ); - renderObjectsImmediate( _webglObjectsImmediate, '', camera, lights, fog, false, material ); + renderObjects( opaqueObjects, camera, lights, fog, overrideMaterial ); + renderObjects( transparentObjects, camera, lights, fog, overrideMaterial ); + renderObjectsImmediate( _webglObjectsImmediate, '', camera, lights, fog, overrideMaterial ); } else { - var material = null; - // opaque pass (front-to-back order) - this.setBlending( THREE.NoBlending ); + state.setBlending( THREE.NoBlending ); - renderObjects( opaqueObjects, camera, lights, fog, false, material ); - renderObjectsImmediate( _webglObjectsImmediate, 'opaque', camera, lights, fog, false, material ); + renderObjects( opaqueObjects, camera, lights, fog, null ); + renderObjectsImmediate( _webglObjectsImmediate, 'opaque', camera, lights, fog, null ); // transparent pass (back-to-front order) - renderObjects( transparentObjects, camera, lights, fog, true, material ); - renderObjectsImmediate( _webglObjectsImmediate, 'transparent', camera, lights, fog, true, material ); + renderObjects( transparentObjects, camera, lights, fog, null ); + renderObjectsImmediate( _webglObjectsImmediate, 'transparent', camera, lights, fog, null ); } @@ -20815,8 +21225,9 @@ THREE.WebGLRenderer = function ( parameters ) { // Ensure depth buffer writing is enabled so it can be cleared on next render - this.setDepthTest( true ); - this.setDepthWrite( true ); + state.setDepthTest( true ); + state.setDepthWrite( true ); + state.setColorWrite( true ); // _gl.finish(); @@ -20854,7 +21265,7 @@ THREE.WebGLRenderer = function ( parameters ) { for ( var i = 0, l = webglObjects.length; i < l; i ++ ) { - var webglObject = webglObjects[i]; + var webglObject = webglObjects[ i ]; unrollBufferMaterial( webglObject ); @@ -20885,7 +21296,7 @@ THREE.WebGLRenderer = function ( parameters ) { } - function renderObjects( renderList, camera, lights, fog, useBlending, overrideMaterial ) { + function renderObjects( renderList, camera, lights, fog, overrideMaterial ) { var material; @@ -20908,11 +21319,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( ! material ) continue; - if ( useBlending ) _this.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst ); - - _this.setDepthTest( material.depthTest ); - _this.setDepthWrite( material.depthWrite ); - setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); + setMaterial( material ); } @@ -20932,7 +21339,7 @@ THREE.WebGLRenderer = function ( parameters ) { } - function renderObjectsImmediate ( renderList, materialType, camera, lights, fog, useBlending, overrideMaterial ) { + function renderObjectsImmediate ( renderList, materialType, camera, lights, fog, overrideMaterial ) { var material; @@ -20953,11 +21360,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( ! material ) continue; - if ( useBlending ) _this.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst ); - - _this.setDepthTest( material.depthTest ); - _this.setDepthWrite( material.depthWrite ); - setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); + setMaterial( material ); } @@ -21329,20 +21732,36 @@ THREE.WebGLRenderer = function ( parameters ) { var key = attributesKeys[ i ]; var attribute = attributes[ key ]; + var bufferType = ( key === 'index' ) ? _gl.ELEMENT_ARRAY_BUFFER : _gl.ARRAY_BUFFER; if ( attribute.buffer === undefined ) { attribute.buffer = _gl.createBuffer(); - attribute.needsUpdate = true; - - } + _gl.bindBuffer( bufferType, attribute.buffer ); + _gl.bufferData( bufferType, attribute.array, ( attribute instanceof THREE.DynamicBufferAttribute ) ? _gl.DYNAMIC_DRAW : _gl.STATIC_DRAW ); - if ( attribute.needsUpdate === true ) { + attribute.needsUpdate = false; - var bufferType = ( key === 'index' ) ? _gl.ELEMENT_ARRAY_BUFFER : _gl.ARRAY_BUFFER; + } else if ( attribute.needsUpdate === true ) { _gl.bindBuffer( bufferType, attribute.buffer ); - _gl.bufferData( bufferType, attribute.array, _gl.STATIC_DRAW ); + + if ( attribute.updateRange === undefined || attribute.updateRange.count === -1 ) { // Not using update ranges + + _gl.bufferSubData( bufferType, 0, attribute.array ); + + } else if ( attribute.updateRange.count === 0 ) { + + console.error( 'THREE.WebGLRenderer.updateObject: using updateRange for THREE.DynamicBufferAttribute and marked as needsUpdate but count is 0, ensure you are using set methods or updating manually.' ); + + } else { + + _gl.bufferSubData( bufferType, attribute.updateRange.offset * attribute.array.BYTES_PER_ELEMENT, + attribute.array.subarray( attribute.updateRange.offset, attribute.updateRange.offset + attribute.updateRange.count ) ); + + attribute.updateRange.count = 0; // reset range + + } attribute.needsUpdate = false; @@ -21367,12 +21786,6 @@ THREE.WebGLRenderer = function ( parameters ) { var geometryGroup = geometryGroupsList[ i ]; var material = getBufferMaterial( object, geometryGroup ); - if ( geometry.groupsNeedUpdate === true ) { - - initMeshBuffers( geometryGroup, object ); - - } - var customAttributesDirty = material.attributes && areCustomAttributesDirty( material ); if ( geometry.verticesNeedUpdate || geometry.morphTargetsNeedUpdate || geometry.elementsNeedUpdate || @@ -21562,6 +21975,8 @@ THREE.WebGLRenderer = function ( parameters ) { useFog: material.fog, fogExp: fog instanceof THREE.FogExp2, + flatShading: material.shading === THREE.FlatShading, + sizeAttenuation: material.sizeAttenuation, logarithmicDepthBuffer: _logarithmicDepthBuffer, @@ -21714,6 +22129,25 @@ THREE.WebGLRenderer = function ( parameters ) { } + function setMaterial( material ) { + + if ( material.transparent === true ) { + + state.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha ); + + } else { + + state.setBlending( THREE.NoBlending ); + + } + + state.setDepthTest( material.depthTest ); + state.setDepthWrite( material.depthWrite ); + state.setColorWrite( material.colorWrite ); + state.setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); + + } + function setProgram( camera, lights, fog, material, object ) { _usedTextureUnits = 0; @@ -21966,15 +22400,7 @@ THREE.WebGLRenderer = function ( parameters ) { uniforms.opacity.value = material.opacity; - if ( _this.gammaInput ) { - - uniforms.diffuse.value.copyGammaToLinear( material.color ); - - } else { - - uniforms.diffuse.value = material.color; - - } + uniforms.diffuse.value = material.color; uniforms.map.value = material.map; uniforms.lightMap.value = material.lightMap; @@ -22038,17 +22464,7 @@ THREE.WebGLRenderer = function ( parameters ) { uniforms.envMap.value = material.envMap; uniforms.flipEnvMap.value = ( material.envMap instanceof THREE.WebGLRenderTargetCube ) ? 1 : - 1; - if ( _this.gammaInput ) { - - //uniforms.reflectivity.value = material.reflectivity * material.reflectivity; - uniforms.reflectivity.value = material.reflectivity; - - } else { - - uniforms.reflectivity.value = material.reflectivity; - - } - + uniforms.reflectivity.value = material.reflectivity; uniforms.refractionRatio.value = material.refractionRatio; } @@ -22077,6 +22493,15 @@ THREE.WebGLRenderer = function ( parameters ) { uniforms.map.value = material.map; + if ( material.map !== null ) { + + var offset = material.map.offset; + var repeat = material.map.repeat; + + uniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y ); + + } + } function refreshUniformsFog ( uniforms, fog ) { @@ -22100,19 +22525,8 @@ THREE.WebGLRenderer = function ( parameters ) { uniforms.shininess.value = material.shininess; - if ( _this.gammaInput ) { - - uniforms.ambient.value.copyGammaToLinear( material.ambient ); - uniforms.emissive.value.copyGammaToLinear( material.emissive ); - uniforms.specular.value.copyGammaToLinear( material.specular ); - - } else { - - uniforms.ambient.value = material.ambient; - uniforms.emissive.value = material.emissive; - uniforms.specular.value = material.specular; - - } + uniforms.emissive.value = material.emissive; + uniforms.specular.value = material.specular; if ( material.wrapAround ) { @@ -22124,17 +22538,7 @@ THREE.WebGLRenderer = function ( parameters ) { function refreshUniformsLambert ( uniforms, material ) { - if ( _this.gammaInput ) { - - uniforms.ambient.value.copyGammaToLinear( material.ambient ); - uniforms.emissive.value.copyGammaToLinear( material.emissive ); - - } else { - - uniforms.ambient.value = material.ambient; - uniforms.emissive.value = material.emissive; - - } + uniforms.emissive.value = material.emissive; if ( material.wrapAround ) { @@ -22154,6 +22558,7 @@ THREE.WebGLRenderer = function ( parameters ) { uniforms.pointLightColor.value = lights.point.colors; uniforms.pointLightPosition.value = lights.point.positions; uniforms.pointLightDistance.value = lights.point.distances; + uniforms.pointLightDecay.value = lights.point.decays; uniforms.spotLightColor.value = lights.spot.colors; uniforms.spotLightPosition.value = lights.spot.positions; @@ -22161,6 +22566,7 @@ THREE.WebGLRenderer = function ( parameters ) { uniforms.spotLightDirection.value = lights.spot.directions; uniforms.spotLightAngleCos.value = lights.spot.anglesCos; uniforms.spotLightExponent.value = lights.spot.exponents; + uniforms.spotLightDecay.value = lights.spot.decays; uniforms.hemisphereLightSkyColor.value = lights.hemi.skyColors; uniforms.hemisphereLightGroundColor.value = lights.hemi.groundColors; @@ -22170,27 +22576,29 @@ THREE.WebGLRenderer = function ( parameters ) { // If uniforms are marked as clean, they don't need to be loaded to the GPU. - function markUniformsLightsNeedsUpdate ( uniforms, boolean ) { + function markUniformsLightsNeedsUpdate ( uniforms, value ) { - uniforms.ambientLightColor.needsUpdate = boolean; + uniforms.ambientLightColor.needsUpdate = value; - uniforms.directionalLightColor.needsUpdate = boolean; - uniforms.directionalLightDirection.needsUpdate = boolean; + uniforms.directionalLightColor.needsUpdate = value; + uniforms.directionalLightDirection.needsUpdate = value; - uniforms.pointLightColor.needsUpdate = boolean; - uniforms.pointLightPosition.needsUpdate = boolean; - uniforms.pointLightDistance.needsUpdate = boolean; + uniforms.pointLightColor.needsUpdate = value; + uniforms.pointLightPosition.needsUpdate = value; + uniforms.pointLightDistance.needsUpdate = value; + uniforms.pointLightDecay.needsUpdate = value; - uniforms.spotLightColor.needsUpdate = boolean; - uniforms.spotLightPosition.needsUpdate = boolean; - uniforms.spotLightDistance.needsUpdate = boolean; - uniforms.spotLightDirection.needsUpdate = boolean; - uniforms.spotLightAngleCos.needsUpdate = boolean; - uniforms.spotLightExponent.needsUpdate = boolean; + uniforms.spotLightColor.needsUpdate = value; + uniforms.spotLightPosition.needsUpdate = value; + uniforms.spotLightDistance.needsUpdate = value; + uniforms.spotLightDirection.needsUpdate = value; + uniforms.spotLightAngleCos.needsUpdate = value; + uniforms.spotLightExponent.needsUpdate = value; + uniforms.spotLightDecay.needsUpdate = value; - uniforms.hemisphereLightSkyColor.needsUpdate = boolean; - uniforms.hemisphereLightGroundColor.needsUpdate = boolean; - uniforms.hemisphereLightDirection.needsUpdate = boolean; + uniforms.hemisphereLightSkyColor.needsUpdate = value; + uniforms.hemisphereLightGroundColor.needsUpdate = value; + uniforms.hemisphereLightDirection.needsUpdate = value; } @@ -22246,7 +22654,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( textureUnit >= _maxTextures ) { - console.warn( 'WebGLRenderer: trying to use ' + textureUnit + ' texture units while this GPU supports only ' + _maxTextures ); + THREE.warn( 'WebGLRenderer: trying to use ' + textureUnit + ' texture units while this GPU supports only ' + _maxTextures ); } @@ -22584,7 +22992,7 @@ THREE.WebGLRenderer = function ( parameters ) { default: - console.warn( 'THREE.WebGLRenderer: Unknown uniform type: ' + type ); + THREE.warn( 'THREE.WebGLRenderer: Unknown uniform type: ' + type ); } @@ -22599,16 +23007,6 @@ THREE.WebGLRenderer = function ( parameters ) { } - // - - function setColorGamma( array, offset, color, intensitySq ) { - - array[ offset ] = color.r * color.r * intensitySq; - array[ offset + 1 ] = color.g * color.g * intensitySq; - array[ offset + 2 ] = color.b * color.b * intensitySq; - - } - function setColorLinear( array, offset, color, intensity ) { array[ offset ] = color.r * intensity; @@ -22619,11 +23017,10 @@ THREE.WebGLRenderer = function ( parameters ) { function setupLights ( lights ) { - var l, ll, light, n, + var l, ll, light, r = 0, g = 0, b = 0, color, skyColor, groundColor, - intensity, intensitySq, - position, + intensity, distance, zlights = _lights, @@ -22634,6 +23031,7 @@ THREE.WebGLRenderer = function ( parameters ) { pointColors = zlights.point.colors, pointPositions = zlights.point.positions, pointDistances = zlights.point.distances, + pointDecays = zlights.point.decays, spotColors = zlights.spot.colors, spotPositions = zlights.spot.positions, @@ -22641,6 +23039,7 @@ THREE.WebGLRenderer = function ( parameters ) { spotDirections = zlights.spot.directions, spotAnglesCos = zlights.spot.anglesCos, spotExponents = zlights.spot.exponents, + spotDecays = zlights.spot.decays, hemiSkyColors = zlights.hemi.skyColors, hemiGroundColors = zlights.hemi.groundColors, @@ -22675,19 +23074,9 @@ THREE.WebGLRenderer = function ( parameters ) { if ( ! light.visible ) continue; - if ( _this.gammaInput ) { - - r += color.r * color.r; - g += color.g * color.g; - b += color.b * color.b; - - } else { - - r += color.r; - g += color.g; - b += color.b; - - } + r += color.r; + g += color.g; + b += color.b; } else if ( light instanceof THREE.DirectionalLight ) { @@ -22706,15 +23095,7 @@ THREE.WebGLRenderer = function ( parameters ) { dirPositions[ dirOffset + 1 ] = _direction.y; dirPositions[ dirOffset + 2 ] = _direction.z; - if ( _this.gammaInput ) { - - setColorGamma( dirColors, dirOffset, color, intensity * intensity ); - - } else { - - setColorLinear( dirColors, dirOffset, color, intensity ); - - } + setColorLinear( dirColors, dirOffset, color, intensity ); dirLength += 1; @@ -22726,15 +23107,7 @@ THREE.WebGLRenderer = function ( parameters ) { pointOffset = pointLength * 3; - if ( _this.gammaInput ) { - - setColorGamma( pointColors, pointOffset, color, intensity * intensity ); - - } else { - - setColorLinear( pointColors, pointOffset, color, intensity ); - - } + setColorLinear( pointColors, pointOffset, color, intensity ); _vector3.setFromMatrixPosition( light.matrixWorld ); @@ -22742,7 +23115,9 @@ THREE.WebGLRenderer = function ( parameters ) { pointPositions[ pointOffset + 1 ] = _vector3.y; pointPositions[ pointOffset + 2 ] = _vector3.z; + // distance is 0 if decay is 0, because there is no attenuation at all. pointDistances[ pointLength ] = distance; + pointDecays[ pointLength ] = ( light.distance === 0 ) ? 0.0 : light.decay; pointLength += 1; @@ -22754,15 +23129,7 @@ THREE.WebGLRenderer = function ( parameters ) { spotOffset = spotLength * 3; - if ( _this.gammaInput ) { - - setColorGamma( spotColors, spotOffset, color, intensity * intensity ); - - } else { - - setColorLinear( spotColors, spotOffset, color, intensity ); - - } + setColorLinear( spotColors, spotOffset, color, intensity ); _direction.setFromMatrixPosition( light.matrixWorld ); @@ -22782,6 +23149,7 @@ THREE.WebGLRenderer = function ( parameters ) { spotAnglesCos[ spotLength ] = Math.cos( light.angle ); spotExponents[ spotLength ] = light.exponent; + spotDecays[ spotLength ] = ( light.distance === 0 ) ? 0.0 : light.decay; spotLength += 1; @@ -22803,19 +23171,8 @@ THREE.WebGLRenderer = function ( parameters ) { skyColor = light.color; groundColor = light.groundColor; - if ( _this.gammaInput ) { - - intensitySq = intensity * intensity; - - setColorGamma( hemiSkyColors, hemiOffset, skyColor, intensitySq ); - setColorGamma( hemiGroundColors, hemiOffset, groundColor, intensitySq ); - - } else { - - setColorLinear( hemiSkyColors, hemiOffset, skyColor, intensity ); - setColorLinear( hemiGroundColors, hemiOffset, groundColor, intensity ); - - } + setColorLinear( hemiSkyColors, hemiOffset, skyColor, intensity ); + setColorLinear( hemiGroundColors, hemiOffset, groundColor, intensity ); hemiLength += 1; @@ -22885,187 +23242,8 @@ THREE.WebGLRenderer = function ( parameters ) { this.setMaterialFaces = function ( material ) { - var doubleSided = material.side === THREE.DoubleSide; - var flipSided = material.side === THREE.BackSide; - - if ( _oldDoubleSided !== doubleSided ) { - - if ( doubleSided ) { - - _gl.disable( _gl.CULL_FACE ); - - } else { - - _gl.enable( _gl.CULL_FACE ); - - } - - _oldDoubleSided = doubleSided; - - } - - if ( _oldFlipSided !== flipSided ) { - - if ( flipSided ) { - - _gl.frontFace( _gl.CW ); - - } else { - - _gl.frontFace( _gl.CCW ); - - } - - _oldFlipSided = flipSided; - - } - - }; - - this.setDepthTest = function ( depthTest ) { - - if ( _oldDepthTest !== depthTest ) { - - if ( depthTest ) { - - _gl.enable( _gl.DEPTH_TEST ); - - } else { - - _gl.disable( _gl.DEPTH_TEST ); - - } - - _oldDepthTest = depthTest; - - } - - }; - - this.setDepthWrite = function ( depthWrite ) { - - if ( _oldDepthWrite !== depthWrite ) { - - _gl.depthMask( depthWrite ); - _oldDepthWrite = depthWrite; - - } - - }; - - function setLineWidth ( width ) { - - width *= pixelRatio; - - if ( width !== _oldLineWidth ) { - - _gl.lineWidth( width ); - - _oldLineWidth = width; - - } - - } - - function setPolygonOffset ( polygonoffset, factor, units ) { - - if ( _oldPolygonOffset !== polygonoffset ) { - - if ( polygonoffset ) { - - _gl.enable( _gl.POLYGON_OFFSET_FILL ); - - } else { - - _gl.disable( _gl.POLYGON_OFFSET_FILL ); - - } - - _oldPolygonOffset = polygonoffset; - - } - - if ( polygonoffset && ( _oldPolygonOffsetFactor !== factor || _oldPolygonOffsetUnits !== units ) ) { - - _gl.polygonOffset( factor, units ); - - _oldPolygonOffsetFactor = factor; - _oldPolygonOffsetUnits = units; - - } - - } - - this.setBlending = function ( blending, blendEquation, blendSrc, blendDst ) { - - if ( blending !== _oldBlending ) { - - if ( blending === THREE.NoBlending ) { - - _gl.disable( _gl.BLEND ); - - } else if ( blending === THREE.AdditiveBlending ) { - - _gl.enable( _gl.BLEND ); - _gl.blendEquation( _gl.FUNC_ADD ); - _gl.blendFunc( _gl.SRC_ALPHA, _gl.ONE ); - - } else if ( blending === THREE.SubtractiveBlending ) { - - // TODO: Find blendFuncSeparate() combination - _gl.enable( _gl.BLEND ); - _gl.blendEquation( _gl.FUNC_ADD ); - _gl.blendFunc( _gl.ZERO, _gl.ONE_MINUS_SRC_COLOR ); - - } else if ( blending === THREE.MultiplyBlending ) { - - // TODO: Find blendFuncSeparate() combination - _gl.enable( _gl.BLEND ); - _gl.blendEquation( _gl.FUNC_ADD ); - _gl.blendFunc( _gl.ZERO, _gl.SRC_COLOR ); - - } else if ( blending === THREE.CustomBlending ) { - - _gl.enable( _gl.BLEND ); - - } else { - - _gl.enable( _gl.BLEND ); - _gl.blendEquationSeparate( _gl.FUNC_ADD, _gl.FUNC_ADD ); - _gl.blendFuncSeparate( _gl.SRC_ALPHA, _gl.ONE_MINUS_SRC_ALPHA, _gl.ONE, _gl.ONE_MINUS_SRC_ALPHA ); - - } - - _oldBlending = blending; - - } - - if ( blending === THREE.CustomBlending ) { - - if ( blendEquation !== _oldBlendEquation ) { - - _gl.blendEquation( paramThreeToGL( blendEquation ) ); - - _oldBlendEquation = blendEquation; - - } - - if ( blendSrc !== _oldBlendSrc || blendDst !== _oldBlendDst ) { - - _gl.blendFunc( paramThreeToGL( blendSrc ), paramThreeToGL( blendDst ) ); - - _oldBlendSrc = blendSrc; - _oldBlendDst = blendDst; - - } - - } else { - - _oldBlendEquation = null; - _oldBlendSrc = null; - _oldBlendDst = null; - - } + state.setDoubleSided( material.side === THREE.DoubleSide ); + state.setFlipSided( material.side === THREE.BackSide ); }; @@ -23090,7 +23268,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( texture.wrapS !== THREE.ClampToEdgeWrapping || texture.wrapT !== THREE.ClampToEdgeWrapping ) { - console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT is set to THREE.ClampToEdgeWrapping. ( ' + texture.sourceFile + ' )' ); + THREE.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( ' + texture.sourceFile + ' )' ); } @@ -23099,7 +23277,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( texture.minFilter !== THREE.NearestFilter && texture.minFilter !== THREE.LinearFilter ) { - console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter is set to THREE.LinearFilter or THREE.NearestFilter. ( ' + texture.sourceFile + ' )' ); + THREE.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( ' + texture.sourceFile + ' )' ); } @@ -23107,12 +23285,12 @@ THREE.WebGLRenderer = function ( parameters ) { extension = extensions.get( 'EXT_texture_filter_anisotropic' ); - if ( extension && texture.type !== THREE.FloatType ) { + if ( extension && texture.type !== THREE.FloatType && texture.type !== THREE.HalfFloatType ) { - if ( texture.anisotropy > 1 || texture.__oldAnisotropy ) { + if ( texture.anisotropy > 1 || texture.__currentAnisotropy ) { _gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, _this.getMaxAnisotropy() ) ); - texture.__oldAnisotropy = texture.anisotropy; + texture.__currentAnisotropy = texture.anisotropy; } @@ -23188,7 +23366,7 @@ THREE.WebGLRenderer = function ( parameters ) { } else { - console.warn( "Attempt to load unsupported compressed texture format" ); + THREE.warn( "THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()" ); } @@ -23265,7 +23443,7 @@ THREE.WebGLRenderer = function ( parameters ) { var context = canvas.getContext( '2d' ); context.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height ); - console.log( 'THREE.WebGLRenderer:', image, 'is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height + '.' ); + THREE.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image ); return canvas; @@ -23352,7 +23530,7 @@ THREE.WebGLRenderer = function ( parameters ) { } else { - console.warn( "Attempt to load unsupported compressed texture format" ); + THREE.warn( "THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()" ); } @@ -23582,6 +23760,54 @@ THREE.WebGLRenderer = function ( parameters ) { }; + this.readRenderTargetPixels = function( renderTarget, x, y, width, height, buffer ) { + + if ( ! ( renderTarget instanceof THREE.WebGLRenderTarget ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' ); + return; + + } + + if ( renderTarget.__webglFramebuffer ) { + + if ( renderTarget.format !== THREE.RGBAFormat ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format.' ); + return; + + } + + var restore = false; + + if ( renderTarget.__webglFramebuffer !== _currentFramebuffer ) { + + _gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTarget.__webglFramebuffer ); + + restore = true; + + } + + if ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) { + + _gl.readPixels( x, y, width, height, _gl.RGBA, _gl.UNSIGNED_BYTE, buffer ); + + } else { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' ); + + } + + if ( restore ) { + + _gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer ); + + } + + } + + }; + function updateRenderTargetMipmap ( renderTarget ) { if ( renderTarget instanceof THREE.WebGLRenderTargetCube ) { @@ -23644,6 +23870,14 @@ THREE.WebGLRenderer = function ( parameters ) { if ( p === THREE.UnsignedIntType ) return _gl.UNSIGNED_INT; if ( p === THREE.FloatType ) return _gl.FLOAT; + extension = extensions.get( 'OES_texture_half_float' ); + + if ( extension !== null ) { + + if ( p === THREE.HalfFloatType ) return extension.HALF_FLOAT_OES; + + } + if ( p === THREE.AlphaFormat ) return _gl.ALPHA; if ( p === THREE.RGBFormat ) return _gl.RGB; if ( p === THREE.RGBAFormat ) return _gl.RGBA; @@ -23731,7 +23965,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( maxBones < object.skeleton.bones.length ) { - console.warn( 'WebGLRenderer: too many bones - ' + object.skeleton.bones.length + ', this GPU supports just ' + maxBones + ' (try OpenGL instead of ANGLE)' ); + THREE.warn( 'WebGLRenderer: too many bones - ' + object.skeleton.bones.length + ', this GPU supports just ' + maxBones + ' (try OpenGL instead of ANGLE)' ); } @@ -23790,25 +24024,25 @@ THREE.WebGLRenderer = function ( parameters ) { this.initMaterial = function () { - console.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' ); + THREE.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' ); }; this.addPrePlugin = function () { - console.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' ); + THREE.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' ); }; this.addPostPlugin = function () { - console.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' ); + THREE.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' ); }; this.updateShadowMap = function () { - console.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' ); + THREE.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' ); }; @@ -23847,7 +24081,7 @@ THREE.WebGLRenderTarget = function ( width, height, options ) { this.generateMipmaps = true; - this.shareDepthFrom = null; + this.shareDepthFrom = options.shareDepthFrom !== undefined ? options.shareDepthFrom : null; }; @@ -23959,7 +24193,7 @@ THREE.WebGLExtensions = function ( gl ) { if ( extension === null ) { - console.log( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' ); + THREE.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' ); } @@ -24110,6 +24344,8 @@ THREE.WebGLProgram = ( function () { } + var gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0; + // console.log( 'building new program ' ); // @@ -24140,6 +24376,7 @@ THREE.WebGLProgram = ( function () { _this.gammaInput ? '#define GAMMA_INPUT' : '', _this.gammaOutput ? '#define GAMMA_OUTPUT' : '', + '#define GAMMA_FACTOR ' + gammaFactorDefine, '#define MAX_DIR_LIGHTS ' + parameters.maxDirLights, '#define MAX_POINT_LIGHTS ' + parameters.maxPointLights, @@ -24160,6 +24397,8 @@ THREE.WebGLProgram = ( function () { parameters.alphaMap ? '#define USE_ALPHAMAP' : '', parameters.vertexColors ? '#define USE_COLOR' : '', + parameters.flatShading ? '#define FLAT_SHADED': '', + parameters.skinning ? '#define USE_SKINNING' : '', parameters.useVertexTexture ? '#define BONE_TEXTURE' : '', @@ -24239,7 +24478,7 @@ THREE.WebGLProgram = ( function () { 'precision ' + parameters.precision + ' float;', 'precision ' + parameters.precision + ' int;', - ( parameters.bumpMap || parameters.normalMap ) ? '#extension GL_OES_standard_derivatives : enable' : '', + ( parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '', customDefines, @@ -24250,10 +24489,11 @@ THREE.WebGLProgram = ( function () { '#define MAX_SHADOWS ' + parameters.maxShadows, - parameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest: '', + parameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest : '', _this.gammaInput ? '#define GAMMA_INPUT' : '', _this.gammaOutput ? '#define GAMMA_OUTPUT' : '', + '#define GAMMA_FACTOR ' + gammaFactorDefine, ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', @@ -24270,6 +24510,8 @@ THREE.WebGLProgram = ( function () { parameters.alphaMap ? '#define USE_ALPHAMAP' : '', parameters.vertexColors ? '#define USE_COLOR' : '', + parameters.flatShading ? '#define FLAT_SHADED': '', + parameters.metal ? '#define METAL' : '', parameters.wrapAround ? '#define WRAP_AROUND' : '', parameters.doubleSided ? '#define DOUBLE_SIDED' : '', @@ -24309,19 +24551,19 @@ THREE.WebGLProgram = ( function () { _gl.linkProgram( program ); + var programLogInfo = _gl.getProgramInfoLog( program ); + if ( _gl.getProgramParameter( program, _gl.LINK_STATUS ) === false ) { - console.error( 'THREE.WebGLProgram: Could not initialise shader.' ); - console.error( 'gl.VALIDATE_STATUS', _gl.getProgramParameter( program, _gl.VALIDATE_STATUS ) ); - console.error( 'gl.getError()', _gl.getError() ); + THREE.error( 'THREE.WebGLProgram: shader error: ' + _gl.getError(), 'gl.VALIDATE_STATUS', _gl.getProgramParameter( program, _gl.VALIDATE_STATUS ), 'gl.getPRogramInfoLog', programLogInfo ); } - if ( _gl.getProgramInfoLog( program ) !== '' ) { + if ( programLogInfo !== '' ) { - console.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', _gl.getProgramInfoLog( program ) ); - // console.warn( _gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) ); - // console.warn( _gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) ); + THREE.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()' + programLogInfo ); + // THREE.warn( _gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) ); + // THREE.warn( _gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) ); } @@ -24452,14 +24694,13 @@ THREE.WebGLShader = ( function () { if ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) { - console.error( 'THREE.WebGLShader: Shader couldn\'t compile.' ); + THREE.error( 'THREE.WebGLShader: Shader couldn\'t compile.' ); } if ( gl.getShaderInfoLog( shader ) !== '' ) { - console.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', gl.getShaderInfoLog( shader ) ); - console.warn( addLineNumbers( string ) ); + THREE.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', gl.getShaderInfoLog( shader ), addLineNumbers( string ) ); } @@ -24472,6 +24713,302 @@ THREE.WebGLShader = ( function () { } )(); +// File:src/renderers/webgl/WebGLState.js + +/** +* @author mrdoob / http://mrdoob.com/ +*/ + +THREE.WebGLState = function ( gl, paramThreeToGL ) { + + var newAttributes = new Uint8Array( 16 ); + var enabledAttributes = new Uint8Array( 16 ); + + var currentBlending = null; + var currentBlendEquation = null; + var currentBlendSrc = null; + var currentBlendDst = null; + var currentBlendEquationAlpha = null; + var currentBlendSrcAlpha = null; + var currentBlendDstAlpha = null; + + var currentDepthTest = null; + var currentDepthWrite = null; + + var currentColorWrite = null; + + var currentDoubleSided = null; + var currentFlipSided = null; + + var currentLineWidth = null; + + var currentPolygonOffset = null; + var currentPolygonOffsetFactor = null; + var currentPolygonOffsetUnits = null; + + this.initAttributes = function () { + + for ( var i = 0, l = newAttributes.length; i < l; i ++ ) { + + newAttributes[ i ] = 0; + + } + + }; + + this.enableAttribute = function ( attribute ) { + + newAttributes[ attribute ] = 1; + + if ( enabledAttributes[ attribute ] === 0 ) { + + gl.enableVertexAttribArray( attribute ); + enabledAttributes[ attribute ] = 1; + + } + + }; + + this.disableUnusedAttributes = function () { + + for ( var i = 0, l = enabledAttributes.length; i < l; i ++ ) { + + if ( enabledAttributes[ i ] !== newAttributes[ i ] ) { + + gl.disableVertexAttribArray( i ); + enabledAttributes[ i ] = 0; + + } + + } + + }; + + this.setBlending = function ( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha ) { + + if ( blending !== currentBlending ) { + + if ( blending === THREE.NoBlending ) { + + gl.disable( gl.BLEND ); + + } else if ( blending === THREE.AdditiveBlending ) { + + gl.enable( gl.BLEND ); + gl.blendEquation( gl.FUNC_ADD ); + gl.blendFunc( gl.SRC_ALPHA, gl.ONE ); + + } else if ( blending === THREE.SubtractiveBlending ) { + + // TODO: Find blendFuncSeparate() combination + gl.enable( gl.BLEND ); + gl.blendEquation( gl.FUNC_ADD ); + gl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR ); + + } else if ( blending === THREE.MultiplyBlending ) { + + // TODO: Find blendFuncSeparate() combination + gl.enable( gl.BLEND ); + gl.blendEquation( gl.FUNC_ADD ); + gl.blendFunc( gl.ZERO, gl.SRC_COLOR ); + + } else if ( blending === THREE.CustomBlending ) { + + gl.enable( gl.BLEND ); + + } else { + + gl.enable( gl.BLEND ); + gl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD ); + gl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA ); + + } + + currentBlending = blending; + + } + + if ( blending === THREE.CustomBlending ) { + + blendEquationAlpha = blendEquationAlpha || blendEquation; + blendSrcAlpha = blendSrcAlpha || blendSrc; + blendDstAlpha = blendDstAlpha || blendDst; + + if ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) { + + gl.blendEquationSeparate( paramThreeToGL( blendEquation ), paramThreeToGL( blendEquationAlpha ) ); + + currentBlendEquation = blendEquation; + currentBlendEquationAlpha = blendEquationAlpha; + + } + + if ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) { + + gl.blendFuncSeparate( paramThreeToGL( blendSrc ), paramThreeToGL( blendDst ), paramThreeToGL( blendSrcAlpha ), paramThreeToGL( blendDstAlpha ) ); + + currentBlendSrc = blendSrc; + currentBlendDst = blendDst; + currentBlendSrcAlpha = blendSrcAlpha; + currentBlendDstAlpha = blendDstAlpha; + + } + + } else { + + currentBlendEquation = null; + currentBlendSrc = null; + currentBlendDst = null; + currentBlendEquationAlpha = null; + currentBlendSrcAlpha = null; + currentBlendDstAlpha = null; + + } + + }; + + this.setDepthTest = function ( depthTest ) { + + if ( currentDepthTest !== depthTest ) { + + if ( depthTest ) { + + gl.enable( gl.DEPTH_TEST ); + + } else { + + gl.disable( gl.DEPTH_TEST ); + + } + + currentDepthTest = depthTest; + + } + + }; + + this.setDepthWrite = function ( depthWrite ) { + + if ( currentDepthWrite !== depthWrite ) { + + gl.depthMask( depthWrite ); + currentDepthWrite = depthWrite; + + } + + }; + + this.setColorWrite = function ( colorWrite ) { + + if ( currentColorWrite !== colorWrite ) { + + gl.colorMask( colorWrite, colorWrite, colorWrite, colorWrite ); + currentColorWrite = colorWrite; + + } + + }; + + this.setDoubleSided = function ( doubleSided ) { + + if ( currentDoubleSided !== doubleSided ) { + + if ( doubleSided ) { + + gl.disable( gl.CULL_FACE ); + + } else { + + gl.enable( gl.CULL_FACE ); + + } + + currentDoubleSided = doubleSided; + + } + + }; + + this.setFlipSided = function ( flipSided ) { + + if ( currentFlipSided !== flipSided ) { + + if ( flipSided ) { + + gl.frontFace( gl.CW ); + + } else { + + gl.frontFace( gl.CCW ); + + } + + currentFlipSided = flipSided; + + } + + }; + + this.setLineWidth = function ( width ) { + + if ( width !== currentLineWidth ) { + + gl.lineWidth( width ); + + currentLineWidth = width; + + } + + }; + + this.setPolygonOffset = function ( polygonoffset, factor, units ) { + + if ( currentPolygonOffset !== polygonoffset ) { + + if ( polygonoffset ) { + + gl.enable( gl.POLYGON_OFFSET_FILL ); + + } else { + + gl.disable( gl.POLYGON_OFFSET_FILL ); + + } + + currentPolygonOffset = polygonoffset; + + } + + if ( polygonoffset && ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) ) { + + gl.polygonOffset( factor, units ); + + currentPolygonOffsetFactor = factor; + currentPolygonOffsetUnits = units; + + } + + }; + + this.reset = function () { + + for ( var i = 0; i < enabledAttributes.length; i ++ ) { + + enabledAttributes[ i ] = 0; + + } + + currentBlending = null; + currentDepthTest = null; + currentDepthWrite = null; + currentColorWrite = null; + currentDoubleSided = null; + currentFlipSided = null; + + }; + +}; + // File:src/renderers/webgl/plugins/LensFlarePlugin.js /** @@ -24797,7 +25334,7 @@ THREE.LensFlarePlugin = function ( renderer, flares ) { // calc object screen position var flare = flares[ i ]; - + tempPosition.set( flare.matrixWorld.elements[12], flare.matrixWorld.elements[13], flare.matrixWorld.elements[14] ); tempPosition.applyMatrix4( camera.matrixWorldInverse ); @@ -24895,7 +25432,7 @@ THREE.LensFlarePlugin = function ( renderer, flares ) { gl.uniform1f( uniforms.opacity, sprite.opacity ); gl.uniform3f( uniforms.color, sprite.color.r, sprite.color.g, sprite.color.b ); - renderer.setBlending( sprite.blending, sprite.blendEquation, sprite.blendSrc, sprite.blendDst ); + renderer.state.setBlending( sprite.blending, sprite.blendEquation, sprite.blendSrc, sprite.blendDst ); renderer.setTexture( sprite.texture, 1 ); gl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); @@ -24963,7 +25500,7 @@ THREE.ShadowMapPlugin = function ( _renderer, _lights, _webglObjects, _webglObje _max = new THREE.Vector3(), _matrixPosition = new THREE.Vector3(), - + _renderList = []; // init @@ -25011,7 +25548,7 @@ THREE.ShadowMapPlugin = function ( _renderer, _lights, _webglObjects, _webglObje var i, il, j, jl, n, shadowMap, shadowMatrix, shadowCamera, - program, buffer, material, + buffer, material, webglObject, object, light, lights = [], @@ -25037,7 +25574,7 @@ THREE.ShadowMapPlugin = function ( _renderer, _lights, _webglObjects, _webglObje } - _renderer.setDepthTest( true ); + _renderer.state.setDepthTest( true ); // preprocess lights // - skip lights that are not casting shadows @@ -25070,7 +25607,7 @@ THREE.ShadowMapPlugin = function ( _renderer, _lights, _webglObjects, _webglObje light.shadowCascadeArray[ n ] = virtualLight; - console.log( "Created virtualLight", virtualLight ); + //console.log( "Created virtualLight", virtualLight ); } else { @@ -25131,7 +25668,7 @@ THREE.ShadowMapPlugin = function ( _renderer, _lights, _webglObjects, _webglObje } else { - console.error( "Unsupported light type for shadow" ); + THREE.error( "THREE.ShadowMapPlugin: Unsupported light type for shadow", light ); continue; } @@ -25296,7 +25833,7 @@ THREE.ShadowMapPlugin = function ( _renderer, _lights, _webglObjects, _webglObje }; - function projectObject( scene, object, shadowCamera ){ + function projectObject( scene, object, shadowCamera ) { if ( object.visible ) { @@ -25687,9 +26224,9 @@ THREE.SpritePlugin = function ( renderer, sprites ) { gl.uniform1f( uniforms.rotation, material.rotation ); gl.uniform2fv( uniforms.scale, scale ); - renderer.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst ); - renderer.setDepthTest( material.depthTest ); - renderer.setDepthWrite( material.depthWrite ); + renderer.state.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst ); + renderer.state.setDepthTest( material.depthTest ); + renderer.state.setDepthWrite( material.depthWrite ); if ( material.map && material.map.image && material.map.image.width ) { @@ -25846,7 +26383,7 @@ THREE.GeometryUtils = { merge: function ( geometry1, geometry2, materialIndexOffset ) { - console.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' ); + THREE.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' ); var matrix; @@ -25865,7 +26402,7 @@ THREE.GeometryUtils = { center: function ( geometry ) { - console.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' ); + THREE.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' ); return geometry.center(); } @@ -25957,13 +26494,13 @@ THREE.ImageUtils = { loadCompressedTexture: function () { - console.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' ) + THREE.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' ) }, loadCompressedTextureCube: function () { - console.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' ) + THREE.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' ) }, @@ -26020,7 +26557,7 @@ THREE.ImageUtils = { points.push( [ - 1, 0, data[ ( y * width + lx ) * 4 ] / 255 * depth ] ); points.push( [ - 1, - 1, data[ ( ly * width + lx ) * 4 ] / 255 * depth ] ); points.push( [ 0, - 1, data[ ( ly * width + x ) * 4 ] / 255 * depth ] ); - points.push( [ 1, - 1, data[ ( ly * width + ux ) * 4 ] / 255 * depth ] ); + points.push( [ 1, - 1, data[ ( ly * width + ux ) * 4 ] / 255 * depth ] ); points.push( [ 1, 0, data[ ( y * width + ux ) * 4 ] / 255 * depth ] ); points.push( [ 1, 1, data[ ( uy * width + ux ) * 4 ] / 255 * depth ] ); points.push( [ 0, 1, data[ ( uy * width + x ) * 4 ] / 255 * depth ] ); @@ -26199,7 +26736,7 @@ THREE.FontUtils = { ThreeFont.faces[ family ][ data.cssFontWeight ] = ThreeFont.faces[ family ][ data.cssFontWeight ] || {}; ThreeFont.faces[ family ][ data.cssFontWeight ][ data.cssFontStyle ] = data; - var face = ThreeFont.faces[ family ][ data.cssFontWeight ][ data.cssFontStyle ] = data; + ThreeFont.faces[ family ][ data.cssFontWeight ][ data.cssFontStyle ] = data; return data; @@ -26207,11 +26744,9 @@ THREE.FontUtils = { drawText: function ( text ) { - var characterPts = [], allPts = []; - // RenderText - var i, p, + var i, face = this.getFace(), scale = this.size / face.resolution, offset = 0, @@ -26299,7 +26834,7 @@ THREE.FontUtils = { x = outline[ i ++ ] * scaleX + offset; y = outline[ i ++ ] * scaleY; - path.lineTo( x,y ); + path.lineTo( x, y ); break; case 'q': @@ -26323,13 +26858,13 @@ THREE.FontUtils = { for ( i2 = 1, divisions = this.divisions; i2 <= divisions; i2 ++ ) { var t = i2 / divisions; - var tx = THREE.Shape.Utils.b2( t, cpx0, cpx1, cpx ); - var ty = THREE.Shape.Utils.b2( t, cpy0, cpy1, cpy ); - } + THREE.Shape.Utils.b2( t, cpx0, cpx1, cpx ); + THREE.Shape.Utils.b2( t, cpy0, cpy1, cpy ); + } - } + } - break; + break; case 'b': @@ -26354,8 +26889,8 @@ THREE.FontUtils = { for ( i2 = 1, divisions = this.divisions; i2 <= divisions; i2 ++ ) { var t = i2 / divisions; - var tx = THREE.Shape.Utils.b3( t, cpx0, cpx1, cpx2, cpx ); - var ty = THREE.Shape.Utils.b3( t, cpy0, cpy1, cpy2, cpy ); + THREE.Shape.Utils.b3( t, cpx0, cpx1, cpx2, cpx ); + THREE.Shape.Utils.b3( t, cpy0, cpy1, cpy2, cpy ); } @@ -26476,7 +27011,7 @@ THREE.FontUtils.generateShapes = function ( text, parameters ) { //throw ( "Warning, unable to triangulate polygon!" ); //return null; // Sometimes warning is fine, especially polygons are triangulated in reverse. - console.log( 'Warning, unable to triangulate polygon!' ); + THREE.warn( 'THREE.FontUtils: Warning, unable to triangulate polygon! in Triangulate.process()' ); if ( indices ) return vertIndices; return result; @@ -26510,7 +27045,7 @@ THREE.FontUtils.generateShapes = function ( text, parameters ) { /* remove v from the remaining polygon */ - for ( s = v, t = v + 1; t < nv; s++, t++ ) { + for ( s = v, t = v + 1; t < nv; s ++, t ++ ) { verts[ s ] = verts[ t ]; @@ -26626,6 +27161,7 @@ THREE.Audio = function ( listener ) { this.context = listener.context; this.source = this.context.createBufferSource(); + this.source.onended = this.onEnded.bind(this); this.gain = this.context.createGain(); this.gain.connect( this.context.destination ); @@ -26633,6 +27169,11 @@ THREE.Audio = function ( listener ) { this.panner = this.context.createPanner(); this.panner.connect( this.gain ); + this.autoplay = false; + + this.startTime = 0; + this.isPlaying = false; + }; THREE.Audio.prototype = Object.create( THREE.Object3D.prototype ); @@ -26650,8 +27191,8 @@ THREE.Audio.prototype.load = function ( file ) { scope.context.decodeAudioData( this.response, function ( buffer ) { scope.source.buffer = buffer; - scope.source.connect( scope.panner ); - scope.source.start( 0 ); + + if( scope.autoplay ) scope.play(); } ); @@ -26662,6 +27203,49 @@ THREE.Audio.prototype.load = function ( file ) { }; +THREE.Audio.prototype.play = function () { + + if ( this.isPlaying === true ) { + + THREE.warn( 'THREE.Audio: Audio is already playing.' ); + return; + + } + + var source = this.context.createBufferSource(); + + source.buffer = this.source.buffer; + source.loop = this.source.loop; + source.onended = this.source.onended; + source.connect( this.panner ); + source.start( 0, this.startTime ); + + this.isPlaying = true; + + this.source = source; + +}; + +THREE.Audio.prototype.pause = function () { + + this.source.stop(); + this.startTime = this.context.currentTime; + +}; + +THREE.Audio.prototype.stop = function () { + + this.source.stop(); + this.startTime = 0; + +}; + +THREE.Audio.prototype.onEnded = function() { + + this.isPlaying = false; + +}; + THREE.Audio.prototype.setLoop = function ( value ) { this.source.loop = value; @@ -26680,6 +27264,12 @@ THREE.Audio.prototype.setRolloffFactor = function ( value ) { }; +THREE.Audio.prototype.setVolume = function ( value ) { + + this.gain.gain.value = value; + +}; + THREE.Audio.prototype.updateMatrixWorld = ( function () { var position = new THREE.Vector3(); @@ -26795,7 +27385,7 @@ THREE.Curve = function () { THREE.Curve.prototype.getPoint = function ( t ) { - console.log( "Warning, getPoint() not implemented!" ); + THREE.warn( "THREE.Curve: Warning, getPoint() not implemented!" ); return null; }; @@ -26859,7 +27449,7 @@ THREE.Curve.prototype.getLength = function () { THREE.Curve.prototype.getLengths = function ( divisions ) { - if ( ! divisions ) divisions = (this.__arcLengthDivisions) ? (this.__arcLengthDivisions): 200; + if ( ! divisions ) divisions = (this.__arcLengthDivisions) ? (this.__arcLengthDivisions) : 200; if ( this.cacheArcLengths && ( this.cacheArcLengths.length == divisions + 1 ) @@ -26934,12 +27524,10 @@ THREE.Curve.prototype.getUtoTmapping = function ( u, distance ) { if ( comparison < 0 ) { low = i + 1; - continue; } else if ( comparison > 0 ) { high = i - 1; - continue; } else { @@ -26966,17 +27554,17 @@ THREE.Curve.prototype.getUtoTmapping = function ( u, distance ) { // we could get finer grain at lengths, or use simple interpolatation between two points var lengthBefore = arcLengths[ i ]; - var lengthAfter = arcLengths[ i + 1 ]; + var lengthAfter = arcLengths[ i + 1 ]; - var segmentLength = lengthAfter - lengthBefore; + var segmentLength = lengthAfter - lengthBefore; // determine where we are between the 'before' and 'after' points - var segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength; + var segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength; // add that fractional amount to t - var t = ( i + segmentFraction ) / ( il -1 ); + var t = ( i + segmentFraction ) / ( il - 1 ); return t; @@ -27035,8 +27623,8 @@ THREE.Curve.Utils = { tangentCubicBezier: function (t, p0, p1, p2, p3 ) { return - 3 * p0 * (1 - t) * (1 - t) + - 3 * p1 * (1 - t) * (1-t) - 6 *t *p1 * (1-t) + - 6 * t * p2 * (1-t) - 3 * t * t * p2 + + 3 * p1 * (1 - t) * (1 - t) - 6 * t * p1 * (1 - t) + + 6 * t * p2 * (1 - t) - 3 * t * t * p2 + 3 * t * t * p3; }, @@ -27127,7 +27715,7 @@ THREE.CurvePath.prototype.closePath = function() { // and verify for vector3 (needs to implement equals) // Add a line curve if start and end of lines are not connected var startPoint = this.curves[0].getPoint(0); - var endPoint = this.curves[this.curves.length-1].getPoint(1); + var endPoint = this.curves[this.curves.length - 1].getPoint(1); if (! startPoint.equals(endPoint)) { this.curves.push( new THREE.LineCurve(endPoint, startPoint) ); @@ -27163,7 +27751,6 @@ THREE.CurvePath.prototype.getPoint = function( t ) { return curve.getPointAt( u ); - break; } i ++; @@ -27716,7 +28303,7 @@ THREE.Path.prototype.getPoints = function( divisions, closedPath ) { action = item.action; args = item.args; - switch( action ) { + switch ( action ) { case THREE.PathActions.MOVE_TO: @@ -27863,7 +28450,7 @@ THREE.Path.prototype.getPoints = function( divisions, closedPath ) { //console.log(points); - break; + break; case THREE.PathActions.ELLIPSE: @@ -27901,7 +28488,7 @@ THREE.Path.prototype.getPoints = function( divisions, closedPath ) { //console.log(points); - break; + break; } // end switch @@ -28008,7 +28595,7 @@ THREE.Path.prototype.toShapes = function( isCCW, noHoles ) { // with the horizontal line through inPt, left of inPt // not counting lowerY endpoints of edges and whole edges on that line var inside = false; - for( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) { + for ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) { var edgeLowPt = inPolygon[ p ]; var edgeHighPt = inPolygon[ q ]; @@ -28121,7 +28708,6 @@ THREE.Path.prototype.toShapes = function( isCCW, noHoles ) { betterShapeHoles[sIdx] = []; } for (var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { - var sh = newShapes[sIdx]; var sho = newShapeHoles[sIdx]; for (var hIdx = 0; hIdx < sho.length; hIdx ++ ) { var ho = sho[hIdx]; @@ -28340,16 +28926,16 @@ THREE.Shape.Utils = { if ( perpSeg2 == 0 ) { if ( ( inExcludeAdjacentSegs ) && ( ( perpSeg1 == 0 ) || ( perpSeg1 == limit ) ) ) return []; - return [ inSeg1Pt1 ]; + return [ inSeg1Pt1 ]; } if ( perpSeg2 == limit ) { if ( ( inExcludeAdjacentSegs ) && ( ( perpSeg1 == 0 ) || ( perpSeg1 == limit ) ) ) return []; - return [ inSeg1Pt2 ]; + return [ inSeg1Pt2 ]; } // intersection at endpoint of segment#2? - if ( perpSeg1 == 0 ) return [ inSeg2Pt1 ]; - if ( perpSeg1 == limit ) return [ inSeg2Pt2 ]; + if ( perpSeg1 == 0 ) return [ inSeg2Pt1 ]; + if ( perpSeg1 == limit ) return [ inSeg2Pt2 ]; // return real intersection point var factorSeg1 = perpSeg2 / limit; @@ -28367,17 +28953,17 @@ THREE.Shape.Utils = { if ( seg1Pt && seg2Pt ) { if ( (inSeg1Pt1.x != inSeg2Pt1.x) || (inSeg1Pt1.y != inSeg2Pt1.y) ) return []; // they are distinct points - return [ inSeg1Pt1 ]; // they are the same point + return [ inSeg1Pt1 ]; // they are the same point } // segment#1 is a single point if ( seg1Pt ) { if (! point_in_segment_2D_colin( inSeg2Pt1, inSeg2Pt2, inSeg1Pt1 ) ) return []; // but not in segment#2 - return [ inSeg1Pt1 ]; + return [ inSeg1Pt1 ]; } // segment#2 is a single point if ( seg2Pt ) { if (! point_in_segment_2D_colin( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1 ) ) return []; // but not in segment#1 - return [ inSeg2Pt1 ]; + return [ inSeg2Pt1 ]; } // they are collinear segments, which might overlap @@ -28508,7 +29094,7 @@ THREE.Shape.Utils = { // checks for intersections with shape edges var sIdx, nextIdx, intersection; for ( sIdx = 0; sIdx < shape.length; sIdx ++ ) { - nextIdx = sIdx+1; nextIdx %= shape.length; + nextIdx = sIdx + 1; nextIdx %= shape.length; intersection = intersect_segments_2D( inShapePt, inHolePt, shape[sIdx], shape[nextIdx], true ); if ( intersection.length > 0 ) return true; } @@ -28525,7 +29111,7 @@ THREE.Shape.Utils = { for ( ihIdx = 0; ihIdx < indepHoles.length; ihIdx ++ ) { chkHole = holes[indepHoles[ihIdx]]; for ( hIdx = 0; hIdx < chkHole.length; hIdx ++ ) { - nextIdx = hIdx+1; nextIdx %= chkHole.length; + nextIdx = hIdx + 1; nextIdx %= chkHole.length; intersection = intersect_segments_2D( inShapePt, inHolePt, chkHole[hIdx], chkHole[nextIdx], true ); if ( intersection.length > 0 ) return true; } @@ -28577,12 +29163,12 @@ THREE.Shape.Utils = { if ( intersectsHoleEdge( shapePt, holePt ) ) continue; holeIndex = h2; - indepHoles.splice(h,1); + indepHoles.splice(h, 1); - tmpShape1 = shape.slice( 0, shapeIndex+1 ); + tmpShape1 = shape.slice( 0, shapeIndex + 1 ); tmpShape2 = shape.slice( shapeIndex ); tmpHole1 = hole.slice( holeIndex ); - tmpHole2 = hole.slice( 0, holeIndex+1 ); + tmpHole2 = hole.slice( 0, holeIndex + 1 ); shape = tmpShape1.concat( tmpHole1 ).concat( tmpHole2 ).concat( tmpShape2 ); @@ -28629,7 +29215,7 @@ THREE.Shape.Utils = { if ( allPointsMap[ key ] !== undefined ) { - console.log( "Duplicate point", key ); + THREE.warn( "THREE.Shape: Duplicate point", key ); } @@ -28896,8 +29482,8 @@ THREE.SplineCurve.prototype.getPoint = function ( t ) { var point0 = points[ intPoint == 0 ? intPoint : intPoint - 1 ] var point1 = points[ intPoint ] - var point2 = points[ intPoint > points.length - 2 ? points.length -1 : intPoint + 1 ] - var point3 = points[ intPoint > points.length - 3 ? points.length -1 : intPoint + 2 ] + var point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ] + var point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ] var vector = new THREE.Vector2(); @@ -29160,9 +29746,9 @@ THREE.AnimationHandler = { // - add: function () { console.warn( 'THREE.AnimationHandler.add() has been deprecated.' ); }, - get: function () { console.warn( 'THREE.AnimationHandler.get() has been deprecated.' ); }, - remove: function () { console.warn( 'THREE.AnimationHandler.remove() has been deprecated.' ); }, + add: function () { THREE.warn( 'THREE.AnimationHandler.add() has been deprecated.' ); }, + get: function () { THREE.warn( 'THREE.AnimationHandler.get() has been deprecated.' ); }, + remove: function () { THREE.warn( 'THREE.AnimationHandler.remove() has been deprecated.' ); }, // @@ -29382,384 +29968,387 @@ THREE.Animation = function ( root, data ) { }; +THREE.Animation.prototype = { -THREE.Animation.prototype.keyTypes = [ "pos", "rot", "scl" ]; + constructor: THREE.Animation, + keyTypes: [ "pos", "rot", "scl" ], -THREE.Animation.prototype.play = function ( startTime, weight ) { + play: function ( startTime, weight ) { - this.currentTime = startTime !== undefined ? startTime : 0; - this.weight = weight !== undefined ? weight: 1; + this.currentTime = startTime !== undefined ? startTime : 0; + this.weight = weight !== undefined ? weight : 1; - this.isPlaying = true; + this.isPlaying = true; - this.reset(); + this.reset(); - THREE.AnimationHandler.play( this ); + THREE.AnimationHandler.play( this ); -}; + }, + stop: function() { -THREE.Animation.prototype.stop = function() { + this.isPlaying = false; - this.isPlaying = false; + THREE.AnimationHandler.stop( this ); + + }, - THREE.AnimationHandler.stop( this ); + reset: function () { -}; + for ( var h = 0, hl = this.hierarchy.length; h < hl; h ++ ) { -THREE.Animation.prototype.reset = function () { + var object = this.hierarchy[ h ]; - for ( var h = 0, hl = this.hierarchy.length; h < hl; h ++ ) { + if ( object.animationCache === undefined ) { - var object = this.hierarchy[ h ]; + object.animationCache = { + animations: {}, + blending: { + positionWeight: 0.0, + quaternionWeight: 0.0, + scaleWeight: 0.0 + } + }; + } - if ( object.animationCache === undefined ) { + var name = this.data.name; + var animations = object.animationCache.animations; + var animationCache = animations[ name ]; - object.animationCache = { - animations: {}, - blending: { - positionWeight: 0.0, - quaternionWeight: 0.0, - scaleWeight: 0.0 - } - }; - } + if ( animationCache === undefined ) { - if ( object.animationCache.animations[this.data.name] === undefined ) { + animationCache = { + prevKey: { pos: 0, rot: 0, scl: 0 }, + nextKey: { pos: 0, rot: 0, scl: 0 }, + originalMatrix: object.matrix + }; - object.animationCache.animations[this.data.name] = {}; - object.animationCache.animations[this.data.name].prevKey = { pos: 0, rot: 0, scl: 0 }; - object.animationCache.animations[this.data.name].nextKey = { pos: 0, rot: 0, scl: 0 }; - object.animationCache.animations[this.data.name].originalMatrix = object.matrix; + animations[ name ] = animationCache; - } + } + + // Get keys to match our current time - var animationCache = object.animationCache.animations[this.data.name]; + for ( var t = 0; t < 3; t ++ ) { - // Get keys to match our current time + var type = this.keyTypes[ t ]; - for ( var t = 0; t < 3; t ++ ) { + var prevKey = this.data.hierarchy[ h ].keys[ 0 ]; + var nextKey = this.getNextKeyWith( type, h, 1 ); - var type = this.keyTypes[ t ]; + while ( nextKey.time < this.currentTime && nextKey.index > prevKey.index ) { - var prevKey = this.data.hierarchy[ h ].keys[ 0 ]; - var nextKey = this.getNextKeyWith( type, h, 1 ); + prevKey = nextKey; + nextKey = this.getNextKeyWith( type, h, nextKey.index + 1 ); - while ( nextKey.time < this.currentTime && nextKey.index > prevKey.index ) { + } - prevKey = nextKey; - nextKey = this.getNextKeyWith( type, h, nextKey.index + 1 ); + animationCache.prevKey[ type ] = prevKey; + animationCache.nextKey[ type ] = nextKey; } - animationCache.prevKey[ type ] = prevKey; - animationCache.nextKey[ type ] = nextKey; - } - } + }, -}; + resetBlendWeights: function () { -THREE.Animation.prototype.resetBlendWeights = function () { + for ( var h = 0, hl = this.hierarchy.length; h < hl; h ++ ) { - for ( var h = 0, hl = this.hierarchy.length; h < hl; h ++ ) { + var object = this.hierarchy[ h ]; + var animationCache = object.animationCache; - var object = this.hierarchy[ h ]; + if ( animationCache !== undefined ) { - if ( object.animationCache !== undefined ) { + var blending = animationCache.blending; - object.animationCache.blending.positionWeight = 0.0; - object.animationCache.blending.quaternionWeight = 0.0; - object.animationCache.blending.scaleWeight = 0.0; + blending.positionWeight = 0.0; + blending.quaternionWeight = 0.0; + blending.scaleWeight = 0.0; + + } } - } + }, -}; + update: ( function() { -THREE.Animation.prototype.update = (function(){ + var points = []; + var target = new THREE.Vector3(); + var newVector = new THREE.Vector3(); + var newQuat = new THREE.Quaternion(); - var points = []; - var target = new THREE.Vector3(); - var newVector = new THREE.Vector3(); - var newQuat = new THREE.Quaternion(); + // Catmull-Rom spline - // Catmull-Rom spline + var interpolateCatmullRom = function ( points, scale ) { - var interpolateCatmullRom = function ( points, scale ) { + var c = [], v3 = [], + point, intPoint, weight, w2, w3, + pa, pb, pc, pd; - var c = [], v3 = [], - point, intPoint, weight, w2, w3, - pa, pb, pc, pd; + point = ( points.length - 1 ) * scale; + intPoint = Math.floor( point ); + weight = point - intPoint; - point = ( points.length - 1 ) * scale; - intPoint = Math.floor( point ); - weight = point - intPoint; + c[ 0 ] = intPoint === 0 ? intPoint : intPoint - 1; + c[ 1 ] = intPoint; + c[ 2 ] = intPoint > points.length - 2 ? intPoint : intPoint + 1; + c[ 3 ] = intPoint > points.length - 3 ? intPoint : intPoint + 2; - c[ 0 ] = intPoint === 0 ? intPoint : intPoint - 1; - c[ 1 ] = intPoint; - c[ 2 ] = intPoint > points.length - 2 ? intPoint : intPoint + 1; - c[ 3 ] = intPoint > points.length - 3 ? intPoint : intPoint + 2; + pa = points[ c[ 0 ] ]; + pb = points[ c[ 1 ] ]; + pc = points[ c[ 2 ] ]; + pd = points[ c[ 3 ] ]; - pa = points[ c[ 0 ] ]; - pb = points[ c[ 1 ] ]; - pc = points[ c[ 2 ] ]; - pd = points[ c[ 3 ] ]; + w2 = weight * weight; + w3 = weight * w2; - w2 = weight * weight; - w3 = weight * w2; + v3[ 0 ] = interpolate( pa[ 0 ], pb[ 0 ], pc[ 0 ], pd[ 0 ], weight, w2, w3 ); + v3[ 1 ] = interpolate( pa[ 1 ], pb[ 1 ], pc[ 1 ], pd[ 1 ], weight, w2, w3 ); + v3[ 2 ] = interpolate( pa[ 2 ], pb[ 2 ], pc[ 2 ], pd[ 2 ], weight, w2, w3 ); - v3[ 0 ] = interpolate( pa[ 0 ], pb[ 0 ], pc[ 0 ], pd[ 0 ], weight, w2, w3 ); - v3[ 1 ] = interpolate( pa[ 1 ], pb[ 1 ], pc[ 1 ], pd[ 1 ], weight, w2, w3 ); - v3[ 2 ] = interpolate( pa[ 2 ], pb[ 2 ], pc[ 2 ], pd[ 2 ], weight, w2, w3 ); + return v3; - return v3; + }; - }; + var interpolate = function ( p0, p1, p2, p3, t, t2, t3 ) { - var interpolate = function ( p0, p1, p2, p3, t, t2, t3 ) { + var v0 = ( p2 - p0 ) * 0.5, + v1 = ( p3 - p1 ) * 0.5; - var v0 = ( p2 - p0 ) * 0.5, - v1 = ( p3 - p1 ) * 0.5; + return ( 2 * ( p1 - p2 ) + v0 + v1 ) * t3 + ( - 3 * ( p1 - p2 ) - 2 * v0 - v1 ) * t2 + v0 * t + p1; - return ( 2 * ( p1 - p2 ) + v0 + v1 ) * t3 + ( - 3 * ( p1 - p2 ) - 2 * v0 - v1 ) * t2 + v0 * t + p1; + }; - }; + return function ( delta ) { - return function ( delta ) { + if ( this.isPlaying === false ) return; - if ( this.isPlaying === false ) return; + this.currentTime += delta * this.timeScale; - this.currentTime += delta * this.timeScale; + if ( this.weight === 0 ) + return; - if ( this.weight === 0 ) - return; + // - // + var duration = this.data.length; - var duration = this.data.length; + if ( this.currentTime > duration || this.currentTime < 0 ) { - if ( this.currentTime > duration || this.currentTime < 0 ) { + if ( this.loop ) { - if ( this.loop ) { + this.currentTime %= duration; - this.currentTime %= duration; + if ( this.currentTime < 0 ) + this.currentTime += duration; - if ( this.currentTime < 0 ) - this.currentTime += duration; + this.reset(); - this.reset(); + } else { - } else { + this.stop(); - this.stop(); + } } - } + for ( var h = 0, hl = this.hierarchy.length; h < hl; h ++ ) { - for ( var h = 0, hl = this.hierarchy.length; h < hl; h ++ ) { + var object = this.hierarchy[ h ]; + var animationCache = object.animationCache.animations[this.data.name]; + var blending = object.animationCache.blending; - var object = this.hierarchy[ h ]; - var animationCache = object.animationCache.animations[this.data.name]; - var blending = object.animationCache.blending; + // loop through pos/rot/scl - // loop through pos/rot/scl + for ( var t = 0; t < 3; t ++ ) { - for ( var t = 0; t < 3; t ++ ) { + // get keys - // get keys + var type = this.keyTypes[ t ]; + var prevKey = animationCache.prevKey[ type ]; + var nextKey = animationCache.nextKey[ type ]; - var type = this.keyTypes[ t ]; - var prevKey = animationCache.prevKey[ type ]; - var nextKey = animationCache.nextKey[ type ]; + if ( ( this.timeScale > 0 && nextKey.time <= this.currentTime ) || + ( this.timeScale < 0 && prevKey.time >= this.currentTime ) ) { - if ( ( this.timeScale > 0 && nextKey.time <= this.currentTime ) || - ( this.timeScale < 0 && prevKey.time >= this.currentTime ) ) { + prevKey = this.data.hierarchy[ h ].keys[ 0 ]; + nextKey = this.getNextKeyWith( type, h, 1 ); - prevKey = this.data.hierarchy[ h ].keys[ 0 ]; - nextKey = this.getNextKeyWith( type, h, 1 ); + while ( nextKey.time < this.currentTime && nextKey.index > prevKey.index ) { - while ( nextKey.time < this.currentTime && nextKey.index > prevKey.index ) { + prevKey = nextKey; + nextKey = this.getNextKeyWith( type, h, nextKey.index + 1 ); - prevKey = nextKey; - nextKey = this.getNextKeyWith( type, h, nextKey.index + 1 ); + } + + animationCache.prevKey[ type ] = prevKey; + animationCache.nextKey[ type ] = nextKey; } - animationCache.prevKey[ type ] = prevKey; - animationCache.nextKey[ type ] = nextKey; + var scale = ( this.currentTime - prevKey.time ) / ( nextKey.time - prevKey.time ); - } + var prevXYZ = prevKey[ type ]; + var nextXYZ = nextKey[ type ]; - var scale = ( this.currentTime - prevKey.time ) / ( nextKey.time - prevKey.time ); + if ( scale < 0 ) scale = 0; + if ( scale > 1 ) scale = 1; - var prevXYZ = prevKey[ type ]; - var nextXYZ = nextKey[ type ]; + // interpolate - if ( scale < 0 ) scale = 0; - if ( scale > 1 ) scale = 1; + if ( type === "pos" ) { - // interpolate + if ( this.interpolationType === THREE.AnimationHandler.LINEAR ) { - if ( type === "pos" ) { + newVector.x = prevXYZ[ 0 ] + ( nextXYZ[ 0 ] - prevXYZ[ 0 ] ) * scale; + newVector.y = prevXYZ[ 1 ] + ( nextXYZ[ 1 ] - prevXYZ[ 1 ] ) * scale; + newVector.z = prevXYZ[ 2 ] + ( nextXYZ[ 2 ] - prevXYZ[ 2 ] ) * scale; - if ( this.interpolationType === THREE.AnimationHandler.LINEAR ) { + // blend + var proportionalWeight = this.weight / ( this.weight + blending.positionWeight ); + object.position.lerp( newVector, proportionalWeight ); + blending.positionWeight += this.weight; - newVector.x = prevXYZ[ 0 ] + ( nextXYZ[ 0 ] - prevXYZ[ 0 ] ) * scale; - newVector.y = prevXYZ[ 1 ] + ( nextXYZ[ 1 ] - prevXYZ[ 1 ] ) * scale; - newVector.z = prevXYZ[ 2 ] + ( nextXYZ[ 2 ] - prevXYZ[ 2 ] ) * scale; + } else if ( this.interpolationType === THREE.AnimationHandler.CATMULLROM || + this.interpolationType === THREE.AnimationHandler.CATMULLROM_FORWARD ) { - // blend - var proportionalWeight = this.weight / ( this.weight + blending.positionWeight ); - object.position.lerp( newVector, proportionalWeight ); - blending.positionWeight += this.weight; + points[ 0 ] = this.getPrevKeyWith( "pos", h, prevKey.index - 1 )[ "pos" ]; + points[ 1 ] = prevXYZ; + points[ 2 ] = nextXYZ; + points[ 3 ] = this.getNextKeyWith( "pos", h, nextKey.index + 1 )[ "pos" ]; - } else if ( this.interpolationType === THREE.AnimationHandler.CATMULLROM || - this.interpolationType === THREE.AnimationHandler.CATMULLROM_FORWARD ) { + scale = scale * 0.33 + 0.33; - points[ 0 ] = this.getPrevKeyWith( "pos", h, prevKey.index - 1 )[ "pos" ]; - points[ 1 ] = prevXYZ; - points[ 2 ] = nextXYZ; - points[ 3 ] = this.getNextKeyWith( "pos", h, nextKey.index + 1 )[ "pos" ]; + var currentPoint = interpolateCatmullRom( points, scale ); + var proportionalWeight = this.weight / ( this.weight + blending.positionWeight ); + blending.positionWeight += this.weight; - scale = scale * 0.33 + 0.33; + // blend - var currentPoint = interpolateCatmullRom( points, scale ); - var proportionalWeight = this.weight / ( this.weight + blending.positionWeight ); - blending.positionWeight += this.weight; + var vector = object.position; - // blend + vector.x = vector.x + ( currentPoint[ 0 ] - vector.x ) * proportionalWeight; + vector.y = vector.y + ( currentPoint[ 1 ] - vector.y ) * proportionalWeight; + vector.z = vector.z + ( currentPoint[ 2 ] - vector.z ) * proportionalWeight; - var vector = object.position; - - vector.x = vector.x + ( currentPoint[ 0 ] - vector.x ) * proportionalWeight; - vector.y = vector.y + ( currentPoint[ 1 ] - vector.y ) * proportionalWeight; - vector.z = vector.z + ( currentPoint[ 2 ] - vector.z ) * proportionalWeight; + if ( this.interpolationType === THREE.AnimationHandler.CATMULLROM_FORWARD ) { - if ( this.interpolationType === THREE.AnimationHandler.CATMULLROM_FORWARD ) { + var forwardPoint = interpolateCatmullRom( points, scale * 1.01 ); - var forwardPoint = interpolateCatmullRom( points, scale * 1.01 ); + target.set( forwardPoint[ 0 ], forwardPoint[ 1 ], forwardPoint[ 2 ] ); + target.sub( vector ); + target.y = 0; + target.normalize(); - target.set( forwardPoint[ 0 ], forwardPoint[ 1 ], forwardPoint[ 2 ] ); - target.sub( vector ); - target.y = 0; - target.normalize(); + var angle = Math.atan2( target.x, target.z ); + object.rotation.set( 0, angle, 0 ); - var angle = Math.atan2( target.x, target.z ); - object.rotation.set( 0, angle, 0 ); + } } - } + } else if ( type === "rot" ) { - } else if ( type === "rot" ) { + THREE.Quaternion.slerp( prevXYZ, nextXYZ, newQuat, scale ); - THREE.Quaternion.slerp( prevXYZ, nextXYZ, newQuat, scale ); + // Avoid paying the cost of an additional slerp if we don't have to + if ( blending.quaternionWeight === 0 ) { - // Avoid paying the cost of an additional slerp if we don't have to - if ( blending.quaternionWeight === 0 ) { + object.quaternion.copy(newQuat); + blending.quaternionWeight = this.weight; - object.quaternion.copy(newQuat); - blending.quaternionWeight = this.weight; + } else { - } else { + var proportionalWeight = this.weight / ( this.weight + blending.quaternionWeight ); + THREE.Quaternion.slerp( object.quaternion, newQuat, object.quaternion, proportionalWeight ); + blending.quaternionWeight += this.weight; - var proportionalWeight = this.weight / ( this.weight + blending.quaternionWeight ); - THREE.Quaternion.slerp( object.quaternion, newQuat, object.quaternion, proportionalWeight ); - blending.quaternionWeight += this.weight; + } - } + } else if ( type === "scl" ) { - } else if ( type === "scl" ) { + newVector.x = prevXYZ[ 0 ] + ( nextXYZ[ 0 ] - prevXYZ[ 0 ] ) * scale; + newVector.y = prevXYZ[ 1 ] + ( nextXYZ[ 1 ] - prevXYZ[ 1 ] ) * scale; + newVector.z = prevXYZ[ 2 ] + ( nextXYZ[ 2 ] - prevXYZ[ 2 ] ) * scale; - newVector.x = prevXYZ[ 0 ] + ( nextXYZ[ 0 ] - prevXYZ[ 0 ] ) * scale; - newVector.y = prevXYZ[ 1 ] + ( nextXYZ[ 1 ] - prevXYZ[ 1 ] ) * scale; - newVector.z = prevXYZ[ 2 ] + ( nextXYZ[ 2 ] - prevXYZ[ 2 ] ) * scale; + var proportionalWeight = this.weight / ( this.weight + blending.scaleWeight ); + object.scale.lerp( newVector, proportionalWeight ); + blending.scaleWeight += this.weight; - var proportionalWeight = this.weight / ( this.weight + blending.scaleWeight ); - object.scale.lerp( newVector, proportionalWeight ); - blending.scaleWeight += this.weight; + } } } - } - - return true; - - }; - -})(); - - + return true; + }; + } )(), -// Get next key with + getNextKeyWith: function ( type, h, key ) { -THREE.Animation.prototype.getNextKeyWith = function ( type, h, key ) { + var keys = this.data.hierarchy[ h ].keys; - var keys = this.data.hierarchy[ h ].keys; + if ( this.interpolationType === THREE.AnimationHandler.CATMULLROM || + this.interpolationType === THREE.AnimationHandler.CATMULLROM_FORWARD ) { - if ( this.interpolationType === THREE.AnimationHandler.CATMULLROM || - this.interpolationType === THREE.AnimationHandler.CATMULLROM_FORWARD ) { + key = key < keys.length - 1 ? key : keys.length - 1; - key = key < keys.length - 1 ? key : keys.length - 1; + } else { - } else { + key = key % keys.length; - key = key % keys.length; + } - } + for ( ; key < keys.length; key ++ ) { - for ( ; key < keys.length; key ++ ) { + if ( keys[ key ][ type ] !== undefined ) { - if ( keys[ key ][ type ] !== undefined ) { + return keys[ key ]; - return keys[ key ]; + } } - } - - return this.data.hierarchy[ h ].keys[ 0 ]; + return this.data.hierarchy[ h ].keys[ 0 ]; -}; + }, -// Get previous key with + getPrevKeyWith: function ( type, h, key ) { -THREE.Animation.prototype.getPrevKeyWith = function ( type, h, key ) { + var keys = this.data.hierarchy[ h ].keys; - var keys = this.data.hierarchy[ h ].keys; + if ( this.interpolationType === THREE.AnimationHandler.CATMULLROM || + this.interpolationType === THREE.AnimationHandler.CATMULLROM_FORWARD ) { - if ( this.interpolationType === THREE.AnimationHandler.CATMULLROM || - this.interpolationType === THREE.AnimationHandler.CATMULLROM_FORWARD ) { + key = key > 0 ? key : 0; - key = key > 0 ? key : 0; + } else { - } else { + key = key >= 0 ? key : key + keys.length; - key = key >= 0 ? key : key + keys.length; + } - } + for ( ; key >= 0; key -- ) { - for ( ; key >= 0; key -- ) { + if ( keys[ key ][ type ] !== undefined ) { - if ( keys[ key ][ type ] !== undefined ) { + return keys[ key ]; - return keys[ key ]; + } } - } + return this.data.hierarchy[ h ].keys[ keys.length - 1 ]; - return this.data.hierarchy[ h ].keys[ keys.length - 1 ]; + } }; @@ -29817,196 +30406,193 @@ THREE.KeyFrameAnimation = function ( data ) { }; +THREE.KeyFrameAnimation.prototype = { -THREE.KeyFrameAnimation.prototype.play = function ( startTime ) { + constructor: THREE.KeyFrameAnimation, - this.currentTime = startTime !== undefined ? startTime : 0; + play: function ( startTime ) { - if ( this.isPlaying === false ) { + this.currentTime = startTime !== undefined ? startTime : 0; - this.isPlaying = true; + if ( this.isPlaying === false ) { - // reset key cache + this.isPlaying = true; - var h, hl = this.hierarchy.length, - object, - node; + // reset key cache - for ( h = 0; h < hl; h ++ ) { + var h, hl = this.hierarchy.length, + object, + node; - object = this.hierarchy[ h ]; - node = this.data.hierarchy[ h ]; + for ( h = 0; h < hl; h ++ ) { - if ( node.animationCache === undefined ) { + object = this.hierarchy[ h ]; + node = this.data.hierarchy[ h ]; - node.animationCache = {}; - node.animationCache.prevKey = null; - node.animationCache.nextKey = null; - node.animationCache.originalMatrix = object.matrix; + if ( node.animationCache === undefined ) { - } + node.animationCache = {}; + node.animationCache.prevKey = null; + node.animationCache.nextKey = null; + node.animationCache.originalMatrix = object.matrix; + + } + + var keys = this.data.hierarchy[h].keys; - var keys = this.data.hierarchy[h].keys; + if (keys.length) { - if (keys.length) { + node.animationCache.prevKey = keys[ 0 ]; + node.animationCache.nextKey = keys[ 1 ]; - node.animationCache.prevKey = keys[ 0 ]; - node.animationCache.nextKey = keys[ 1 ]; + this.startTime = Math.min( keys[0].time, this.startTime ); + this.endTime = Math.max( keys[keys.length - 1].time, this.endTime ); - this.startTime = Math.min( keys[0].time, this.startTime ); - this.endTime = Math.max( keys[keys.length - 1].time, this.endTime ); + } } + this.update( 0 ); + } - this.update( 0 ); + this.isPaused = false; - } + THREE.AnimationHandler.play( this ); - this.isPaused = false; - - THREE.AnimationHandler.play( this ); + }, -}; + stop: function () { + this.isPlaying = false; + this.isPaused = false; -THREE.KeyFrameAnimation.prototype.stop = function() { + THREE.AnimationHandler.stop( this ); - this.isPlaying = false; - this.isPaused = false; + // reset JIT matrix and remove cache - THREE.AnimationHandler.stop( this ); + for ( var h = 0; h < this.data.hierarchy.length; h ++ ) { - // reset JIT matrix and remove cache + var obj = this.hierarchy[ h ]; + var node = this.data.hierarchy[ h ]; - for ( var h = 0; h < this.data.hierarchy.length; h ++ ) { - - var obj = this.hierarchy[ h ]; - var node = this.data.hierarchy[ h ]; + if ( node.animationCache !== undefined ) { - if ( node.animationCache !== undefined ) { + var original = node.animationCache.originalMatrix; - var original = node.animationCache.originalMatrix; + original.copy( obj.matrix ); + obj.matrix = original; - original.copy( obj.matrix ); - obj.matrix = original; + delete node.animationCache; - delete node.animationCache; + } } - } - -}; + }, + update: function ( delta ) { -// Update + if ( this.isPlaying === false ) return; -THREE.KeyFrameAnimation.prototype.update = function ( delta ) { + this.currentTime += delta * this.timeScale; - if ( this.isPlaying === false ) return; + // - this.currentTime += delta * this.timeScale; + var duration = this.data.length; - // + if ( this.loop === true && this.currentTime > duration ) { - var duration = this.data.length; + this.currentTime %= duration; - if ( this.loop === true && this.currentTime > duration ) { + } - this.currentTime %= duration; + this.currentTime = Math.min( this.currentTime, duration ); - } + for ( var h = 0, hl = this.hierarchy.length; h < hl; h ++ ) { - this.currentTime = Math.min( this.currentTime, duration ); + var object = this.hierarchy[ h ]; + var node = this.data.hierarchy[ h ]; - for ( var h = 0, hl = this.hierarchy.length; h < hl; h ++ ) { + var keys = node.keys, + animationCache = node.animationCache; - var object = this.hierarchy[ h ]; - var node = this.data.hierarchy[ h ]; - var keys = node.keys, - animationCache = node.animationCache; + if ( keys.length ) { + var prevKey = animationCache.prevKey; + var nextKey = animationCache.nextKey; - if ( keys.length ) { + if ( nextKey.time <= this.currentTime ) { - var prevKey = animationCache.prevKey; - var nextKey = animationCache.nextKey; + while ( nextKey.time < this.currentTime && nextKey.index > prevKey.index ) { - if ( nextKey.time <= this.currentTime ) { + prevKey = nextKey; + nextKey = keys[ prevKey.index + 1 ]; - while ( nextKey.time < this.currentTime && nextKey.index > prevKey.index ) { + } - prevKey = nextKey; - nextKey = keys[ prevKey.index + 1 ]; + animationCache.prevKey = prevKey; + animationCache.nextKey = nextKey; } - animationCache.prevKey = prevKey; - animationCache.nextKey = nextKey; + if ( nextKey.time >= this.currentTime ) { - } + prevKey.interpolate( nextKey, this.currentTime ); - if ( nextKey.time >= this.currentTime ) { + } else { - prevKey.interpolate( nextKey, this.currentTime ); + prevKey.interpolate( nextKey, nextKey.time ); - } else { + } - prevKey.interpolate( nextKey, nextKey.time ); + this.data.hierarchy[ h ].node.updateMatrix(); + object.matrixWorldNeedsUpdate = true; } - this.data.hierarchy[ h ].node.updateMatrix(); - object.matrixWorldNeedsUpdate = true; - } - } - -}; + }, -// Get next key with + getNextKeyWith: function ( sid, h, key ) { -THREE.KeyFrameAnimation.prototype.getNextKeyWith = function( sid, h, key ) { + var keys = this.data.hierarchy[ h ].keys; + key = key % keys.length; - var keys = this.data.hierarchy[ h ].keys; - key = key % keys.length; + for ( ; key < keys.length; key ++ ) { - for ( ; key < keys.length; key ++ ) { + if ( keys[ key ].hasTarget( sid ) ) { - if ( keys[ key ].hasTarget( sid ) ) { + return keys[ key ]; - return keys[ key ]; + } } - } - - return keys[ 0 ]; + return keys[ 0 ]; -}; + }, -// Get previous key with + getPrevKeyWith: function ( sid, h, key ) { -THREE.KeyFrameAnimation.prototype.getPrevKeyWith = function( sid, h, key ) { + var keys = this.data.hierarchy[ h ].keys; + key = key >= 0 ? key : key + keys.length; - var keys = this.data.hierarchy[ h ].keys; - key = key >= 0 ? key : key + keys.length; + for ( ; key >= 0; key -- ) { - for ( ; key >= 0; key -- ) { + if ( keys[ key ].hasTarget( sid ) ) { - if ( keys[ key ].hasTarget( sid ) ) { + return keys[ key ]; - return keys[ key ]; + } } - } + return keys[ keys.length - 1 ]; - return keys[ keys.length - 1 ]; + } }; @@ -30064,19 +30650,21 @@ THREE.MorphAnimation.prototype = { var interpolation = this.duration / this.frames; var frame = Math.floor( this.currentTime / interpolation ); + var influences = this.mesh.morphTargetInfluences; + if ( frame != this.currentFrame ) { - this.mesh.morphTargetInfluences[ this.lastFrame ] = 0; - this.mesh.morphTargetInfluences[ this.currentFrame ] = 1; - this.mesh.morphTargetInfluences[ frame ] = 0; + influences[ this.lastFrame ] = 0; + influences[ this.currentFrame ] = 1; + influences[ frame ] = 0; this.lastFrame = this.currentFrame; this.currentFrame = frame; } - this.mesh.morphTargetInfluences[ frame ] = ( this.currentTime % interpolation ) / interpolation; - this.mesh.morphTargetInfluences[ this.lastFrame ] = 1 - this.mesh.morphTargetInfluences[ frame ]; + influences[ frame ] = ( this.currentTime % interpolation ) / interpolation; + influences[ this.lastFrame ] = 1 - influences[ frame ]; } @@ -30283,7 +30871,7 @@ THREE.CircleGeometry.prototype.constructor = THREE.CircleGeometry; THREE.CubeGeometry = function ( width, height, depth, widthSegments, heightSegments, depthSegments ) { - console.warn( 'THREE.CubeGeometry has been renamed to THREE.BoxGeometry.' ); + THREE.warn( 'THREE.CubeGeometry has been renamed to THREE.BoxGeometry.' ); return new THREE.BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ); }; @@ -30590,7 +31178,6 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { var ahole, h, hl; // looping of holes var scope = this; - var bevelPoints = []; var shapesOffset = this.vertices.length; @@ -30630,7 +31217,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { var contour = vertices; // vertices has all points but contour has only points of circumference - for ( h = 0, hl = holes.length; h < hl; h ++ ) { + for ( h = 0, hl = holes.length; h < hl; h ++ ) { ahole = holes[ h ]; @@ -30641,7 +31228,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { function scalePt2 ( pt, vec, size ) { - if ( ! vec ) console.log( "die" ); + if ( ! vec ) THREE.error( "THREE.ExtrudeGeometry: vec does not exist" ); return vec.clone().multiplyScalar( size ).add( pt ); @@ -30649,14 +31236,11 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { var b, bs, t, z, vert, vlen = vertices.length, - face, flen = faces.length, - cont, clen = contour.length; + face, flen = faces.length; // Find directions for point movement - var RAD_TO_DEGREES = 180 / Math.PI; - function getBevelVec( inPt, inPrev, inNext ) { @@ -30759,11 +31343,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { // (j)---(i)---(k) // console.log('i,j,k', i, j , k) - var pt_i = contour[ i ]; - var pt_j = contour[ j ]; - var pt_k = contour[ k ]; - - contourMovements[ i ]= getBevelVec( contour[ i ], contour[ j ], contour[ k ] ); + contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] ); } @@ -30781,7 +31361,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { if ( k === il ) k = 0; // (j)---(i)---(k) - oneHoleMovements[ i ]= getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] ); + oneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] ); } @@ -30800,7 +31380,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { z = bevelThickness * ( 1 - t ); //z = bevelThickness * t; - bs = bevelSize * ( Math.sin ( t * Math.PI/2 ) ) ; // curved + bs = bevelSize * ( Math.sin ( t * Math.PI / 2 ) ) ; // curved //bs = bevelSize * t ; // linear // contract shape @@ -30900,7 +31480,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { t = b / bevelSegments; z = bevelThickness * ( 1 - t ); //bs = bevelSize * ( 1-Math.sin ( ( 1 - t ) * Math.PI/2 ) ); - bs = bevelSize * Math.sin ( t * Math.PI/2 ) ; + bs = bevelSize * Math.sin ( t * Math.PI / 2 ) ; // contract shape @@ -30963,7 +31543,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { for ( i = 0; i < flen; i ++ ) { face = faces[ i ]; - f3( face[ 2 ]+ offset, face[ 1 ]+ offset, face[ 0 ] + offset ); + f3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset ); } @@ -31010,7 +31590,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { sidewalls( contour, layeroffset ); layeroffset += contour.length; - for ( h = 0, hl = holes.length; h < hl; h ++ ) { + for ( h = 0, hl = holes.length; h < hl; h ++ ) { ahole = holes[ h ]; sidewalls( ahole, layeroffset ); @@ -31027,7 +31607,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { var j, k; i = contour.length; - while ( --i >= 0 ) { + while ( -- i >= 0 ) { j = i; k = i - 1; @@ -31072,7 +31652,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { var uvs = uvgen.generateTopUV( scope, a, b, c ); - scope.faceVertexUvs[ 0 ].push( uvs ); + scope.faceVertexUvs[ 0 ].push( uvs ); } @@ -31083,13 +31663,13 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { c += shapesOffset; d += shapesOffset; - scope.faces.push( new THREE.Face3( a, b, d, null, null, extrudeMaterial ) ); - scope.faces.push( new THREE.Face3( b, c, d, null, null, extrudeMaterial ) ); + scope.faces.push( new THREE.Face3( a, b, d, null, null, extrudeMaterial ) ); + scope.faces.push( new THREE.Face3( b, c, d, null, null, extrudeMaterial ) ); - var uvs = uvgen.generateSideWallUV( scope, a, b, c, d ); + var uvs = uvgen.generateSideWallUV( scope, a, b, c, d ); - scope.faceVertexUvs[ 0 ].push( [ uvs[ 0 ], uvs[ 1 ], uvs[ 3 ] ] ); - scope.faceVertexUvs[ 0 ].push( [ uvs[ 1 ], uvs[ 2 ], uvs[ 3 ] ] ); + scope.faceVertexUvs[ 0 ].push( [ uvs[ 0 ], uvs[ 1 ], uvs[ 3 ] ] ); + scope.faceVertexUvs[ 0 ].push( [ uvs[ 1 ], uvs[ 2 ], uvs[ 3 ] ] ); } @@ -31203,7 +31783,7 @@ THREE.ShapeGeometry.prototype.addShape = function ( shape, options ) { // - var i, l, hole, s; + var i, l, hole; var shapesOffset = this.vertices.length; var shapePoints = shape.extractPoints( curveSegments ); @@ -31252,7 +31832,6 @@ THREE.ShapeGeometry.prototype.addShape = function ( shape, options ) { var vert, vlen = vertices.length; var face, flen = faces.length; - var cont, clen = contour.length; for ( i = 0; i < vlen; i ++ ) { @@ -32025,8 +32604,6 @@ THREE.TubeGeometry = function ( path, segments, radius, radialSegments, closed, numpoints = segments + 1, - x, y, z, - tx, ty, tz, u, v, r, cx, cy, @@ -32137,9 +32714,7 @@ THREE.TubeGeometry.SinusoidalTaper = function ( u ) { // For computing of Frenet frames, exposing the tangents, normals and binormals the spline THREE.TubeGeometry.FrenetFrames = function ( path, segments, closed ) { - var tangent = new THREE.Vector3(), - normal = new THREE.Vector3(), - binormal = new THREE.Vector3(), + var normal = new THREE.Vector3(), tangents = [], normals = [], @@ -32154,7 +32729,7 @@ THREE.TubeGeometry.FrenetFrames = function ( path, segments, closed ) { smallest, tx, ty, tz, - i, u, v; + i, u; // expose internals @@ -32235,17 +32810,17 @@ THREE.TubeGeometry.FrenetFrames = function ( path, segments, closed ) { for ( i = 1; i < numpoints; i ++ ) { - normals[ i ] = normals[ i-1 ].clone(); + normals[ i ] = normals[ i - 1 ].clone(); - binormals[ i ] = binormals[ i-1 ].clone(); + binormals[ i ] = binormals[ i - 1 ].clone(); - vec.crossVectors( tangents[ i-1 ], tangents[ i ] ); + vec.crossVectors( tangents[ i - 1 ], tangents[ i ] ); if ( vec.length() > epsilon ) { vec.normalize(); - theta = Math.acos( THREE.Math.clamp( tangents[ i-1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors + theta = Math.acos( THREE.Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors normals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) ); @@ -32260,10 +32835,10 @@ THREE.TubeGeometry.FrenetFrames = function ( path, segments, closed ) { if ( closed ) { - theta = Math.acos( THREE.Math.clamp( normals[ 0 ].dot( normals[ numpoints-1 ] ), - 1, 1 ) ); + theta = Math.acos( THREE.Math.clamp( normals[ 0 ].dot( normals[ numpoints - 1 ] ), - 1, 1 ) ); theta /= ( numpoints - 1 ); - if ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ numpoints-1 ] ) ) > 0 ) { + if ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ numpoints - 1 ] ) ) > 0 ) { theta = - theta; @@ -32312,7 +32887,7 @@ THREE.PolyhedronGeometry = function ( vertices, indices, radius, detail ) { } - var midpoints = [], p = this.vertices; + var p = this.vertices; var faces = []; @@ -32420,7 +32995,6 @@ THREE.PolyhedronGeometry = function ( vertices, indices, radius, detail ) { function subdivide( face, detail ) { var cols = Math.pow(2, detail); - var cells = Math.pow(4, detail); var a = prepare( that.vertices[ face.a ] ); var b = prepare( that.vertices[ face.b ] ); var c = prepare( that.vertices[ face.c ] ); @@ -32705,10 +33279,9 @@ THREE.ParametricGeometry = function ( func, slices, stacks ) { var faces = this.faces; var uvs = this.faceVertexUvs[ 0 ]; - var i, il, j, p; + var i, j, p; var u, v; - var stackCount = stacks + 1; var sliceCount = slices + 1; for ( i = 0; i <= stacks; i ++ ) { @@ -33327,11 +33900,20 @@ THREE.DirectionalLightHelper.prototype.update = function () { /** * @author WestLangley / http://github.com/WestLangley + * @param object THREE.Mesh whose geometry will be used + * @param hex line color + * @param thresholdAngle the minimim angle (in degrees), + * between the face normals of adjacent faces, + * that is required to render an edge. A value of 10 means + * an edge is only rendered if the angle is at least 10 degrees. */ -THREE.EdgesHelper = function ( object, hex ) { +THREE.EdgesHelper = function ( object, hex, thresholdAngle ) { var color = ( hex !== undefined ) ? hex : 0xffffff; + thresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1; + + var thresholdDot = Math.cos( THREE.Math.degToRad( thresholdAngle ) ); var edge = [ 0, 0 ], hash = {}; var sortFunction = function ( a, b ) { return a - b }; @@ -33339,7 +33921,18 @@ THREE.EdgesHelper = function ( object, hex ) { var keys = [ 'a', 'b', 'c' ]; var geometry = new THREE.BufferGeometry(); - var geometry2 = object.geometry.clone(); + var geometry2; + + if ( object.geometry instanceof THREE.BufferGeometry ) { + + geometry2 = new THREE.Geometry(); + geometry2.fromBufferGeometry( object.geometry ); + + } else { + + geometry2 = object.geometry.clone(); + + } geometry2.mergeVertices(); geometry2.computeFaceNormals(); @@ -33383,7 +33976,7 @@ THREE.EdgesHelper = function ( object, hex ) { var h = hash[ key ]; - if ( h.face2 === undefined || faces[ h.face1 ].normal.dot( faces[ h.face2 ].normal ) < 0.9999 ) { // hardwired const OK + if ( h.face2 === undefined || faces[ h.face1 ].normal.dot( faces[ h.face2 ].normal ) <= thresholdDot ) { var vertex = vertices[ h.vert1 ]; coords[ index ++ ] = vertex.x; @@ -33539,7 +34132,7 @@ THREE.GridHelper.prototype.setColors = function( colorCenterLine, colorGrid ) { * @author mrdoob / http://mrdoob.com/ */ -THREE.HemisphereLightHelper = function ( light, sphereSize, arrowLength, domeSize ) { +THREE.HemisphereLightHelper = function ( light, sphereSize ) { THREE.Object3D.call( this ); @@ -33851,8 +34444,6 @@ THREE.VertexNormalsHelper = function ( object, size, hex, linewidth ) { var geometry = new THREE.Geometry(); - var vertices = object.geometry.vertices; - var faces = object.geometry.faces; for ( var i = 0, l = faces.length; i < l; i ++ ) { @@ -33954,8 +34545,6 @@ THREE.VertexTangentsHelper = function ( object, size, hex, linewidth ) { var geometry = new THREE.Geometry(); - var vertices = object.geometry.vertices; - var faces = object.geometry.faces; for ( var i = 0, l = faces.length; i < l; i ++ ) { @@ -34312,7 +34901,6 @@ THREE.MorphBlendMesh.prototype.autoCreateAnimations = function ( fps ) { if ( chunks && chunks.length > 1 ) { var name = chunks[ 1 ]; - var num = chunks[ 2 ]; if ( ! frameRanges[ name ] ) frameRanges[ name ] = { start: Infinity, end: - Infinity }; @@ -34457,7 +35045,7 @@ THREE.MorphBlendMesh.prototype.playAnimation = function ( name ) { } else { - console.warn( "animation[" + name + "] undefined" ); + THREE.warn( "THREE.MorphBlendMesh: animation[" + name + "] undefined in .playAnimation()" ); } diff --git a/libs/three.js/build/three.min.js b/libs/three.js/build/three.min.js index 0252dd2125..85e55962cb 100644 --- a/libs/three.js/build/three.min.js +++ b/libs/three.js/build/three.min.js @@ -1,18 +1,19 @@ // threejs.org/license -'use strict';var THREE={REVISION:"70"};"object"===typeof module&&(module.exports=THREE);void 0===Math.sign&&(Math.sign=function(a){return 0>a?-1:0<a?1:0});THREE.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2};THREE.CullFaceNone=0;THREE.CullFaceBack=1;THREE.CullFaceFront=2;THREE.CullFaceFrontBack=3;THREE.FrontFaceDirectionCW=0;THREE.FrontFaceDirectionCCW=1;THREE.BasicShadowMap=0;THREE.PCFShadowMap=1;THREE.PCFSoftShadowMap=2;THREE.FrontSide=0;THREE.BackSide=1;THREE.DoubleSide=2;THREE.NoShading=0; -THREE.FlatShading=1;THREE.SmoothShading=2;THREE.NoColors=0;THREE.FaceColors=1;THREE.VertexColors=2;THREE.NoBlending=0;THREE.NormalBlending=1;THREE.AdditiveBlending=2;THREE.SubtractiveBlending=3;THREE.MultiplyBlending=4;THREE.CustomBlending=5;THREE.AddEquation=100;THREE.SubtractEquation=101;THREE.ReverseSubtractEquation=102;THREE.MinEquation=103;THREE.MaxEquation=104;THREE.ZeroFactor=200;THREE.OneFactor=201;THREE.SrcColorFactor=202;THREE.OneMinusSrcColorFactor=203;THREE.SrcAlphaFactor=204; -THREE.OneMinusSrcAlphaFactor=205;THREE.DstAlphaFactor=206;THREE.OneMinusDstAlphaFactor=207;THREE.DstColorFactor=208;THREE.OneMinusDstColorFactor=209;THREE.SrcAlphaSaturateFactor=210;THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.AddOperation=2;THREE.UVMapping=300;THREE.CubeReflectionMapping=301;THREE.CubeRefractionMapping=302;THREE.EquirectangularReflectionMapping=303;THREE.EquirectangularRefractionMapping=304;THREE.SphericalReflectionMapping=305;THREE.RepeatWrapping=1E3; -THREE.ClampToEdgeWrapping=1001;THREE.MirroredRepeatWrapping=1002;THREE.NearestFilter=1003;THREE.NearestMipMapNearestFilter=1004;THREE.NearestMipMapLinearFilter=1005;THREE.LinearFilter=1006;THREE.LinearMipMapNearestFilter=1007;THREE.LinearMipMapLinearFilter=1008;THREE.UnsignedByteType=1009;THREE.ByteType=1010;THREE.ShortType=1011;THREE.UnsignedShortType=1012;THREE.IntType=1013;THREE.UnsignedIntType=1014;THREE.FloatType=1015;THREE.UnsignedShort4444Type=1016;THREE.UnsignedShort5551Type=1017; -THREE.UnsignedShort565Type=1018;THREE.AlphaFormat=1019;THREE.RGBFormat=1020;THREE.RGBAFormat=1021;THREE.LuminanceFormat=1022;THREE.LuminanceAlphaFormat=1023;THREE.RGBEFormat=THREE.RGBAFormat;THREE.RGB_S3TC_DXT1_Format=2001;THREE.RGBA_S3TC_DXT1_Format=2002;THREE.RGBA_S3TC_DXT3_Format=2003;THREE.RGBA_S3TC_DXT5_Format=2004;THREE.RGB_PVRTC_4BPPV1_Format=2100;THREE.RGB_PVRTC_2BPPV1_Format=2101;THREE.RGBA_PVRTC_4BPPV1_Format=2102;THREE.RGBA_PVRTC_2BPPV1_Format=2103; -THREE.Projector=function(){console.error("THREE.Projector has been moved to /examples/js/renderers/Projector.js.");this.projectVector=function(a,b){console.warn("THREE.Projector: .projectVector() is now vector.project().");a.project(b)};this.unprojectVector=function(a,b){console.warn("THREE.Projector: .unprojectVector() is now vector.unproject().");a.unproject(b)};this.pickingRay=function(a,b){console.error("THREE.Projector: .pickingRay() is now raycaster.setFromCamera().")}}; -THREE.CanvasRenderer=function(){console.error("THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js");this.domElement=document.createElement("canvas");this.clear=function(){};this.render=function(){};this.setClearColor=function(){};this.setSize=function(){}};THREE.Color=function(a){return 3===arguments.length?this.setRGB(arguments[0],arguments[1],arguments[2]):this.set(a)}; +'use strict';var THREE={REVISION:"71"};"object"===typeof module&&(module.exports=THREE);void 0===Math.sign&&(Math.sign=function(a){return 0>a?-1:0<a?1:+a});THREE.log=function(){console.log.apply(console,arguments)};THREE.warn=function(){console.warn.apply(console,arguments)};THREE.error=function(){console.error.apply(console,arguments)};THREE.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2};THREE.CullFaceNone=0;THREE.CullFaceBack=1;THREE.CullFaceFront=2;THREE.CullFaceFrontBack=3;THREE.FrontFaceDirectionCW=0; +THREE.FrontFaceDirectionCCW=1;THREE.BasicShadowMap=0;THREE.PCFShadowMap=1;THREE.PCFSoftShadowMap=2;THREE.FrontSide=0;THREE.BackSide=1;THREE.DoubleSide=2;THREE.NoShading=0;THREE.FlatShading=1;THREE.SmoothShading=2;THREE.NoColors=0;THREE.FaceColors=1;THREE.VertexColors=2;THREE.NoBlending=0;THREE.NormalBlending=1;THREE.AdditiveBlending=2;THREE.SubtractiveBlending=3;THREE.MultiplyBlending=4;THREE.CustomBlending=5;THREE.AddEquation=100;THREE.SubtractEquation=101;THREE.ReverseSubtractEquation=102; +THREE.MinEquation=103;THREE.MaxEquation=104;THREE.ZeroFactor=200;THREE.OneFactor=201;THREE.SrcColorFactor=202;THREE.OneMinusSrcColorFactor=203;THREE.SrcAlphaFactor=204;THREE.OneMinusSrcAlphaFactor=205;THREE.DstAlphaFactor=206;THREE.OneMinusDstAlphaFactor=207;THREE.DstColorFactor=208;THREE.OneMinusDstColorFactor=209;THREE.SrcAlphaSaturateFactor=210;THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.AddOperation=2;THREE.UVMapping=300;THREE.CubeReflectionMapping=301;THREE.CubeRefractionMapping=302; +THREE.EquirectangularReflectionMapping=303;THREE.EquirectangularRefractionMapping=304;THREE.SphericalReflectionMapping=305;THREE.RepeatWrapping=1E3;THREE.ClampToEdgeWrapping=1001;THREE.MirroredRepeatWrapping=1002;THREE.NearestFilter=1003;THREE.NearestMipMapNearestFilter=1004;THREE.NearestMipMapLinearFilter=1005;THREE.LinearFilter=1006;THREE.LinearMipMapNearestFilter=1007;THREE.LinearMipMapLinearFilter=1008;THREE.UnsignedByteType=1009;THREE.ByteType=1010;THREE.ShortType=1011; +THREE.UnsignedShortType=1012;THREE.IntType=1013;THREE.UnsignedIntType=1014;THREE.FloatType=1015;THREE.HalfFloatType=1025;THREE.UnsignedShort4444Type=1016;THREE.UnsignedShort5551Type=1017;THREE.UnsignedShort565Type=1018;THREE.AlphaFormat=1019;THREE.RGBFormat=1020;THREE.RGBAFormat=1021;THREE.LuminanceFormat=1022;THREE.LuminanceAlphaFormat=1023;THREE.RGBEFormat=THREE.RGBAFormat;THREE.RGB_S3TC_DXT1_Format=2001;THREE.RGBA_S3TC_DXT1_Format=2002;THREE.RGBA_S3TC_DXT3_Format=2003; +THREE.RGBA_S3TC_DXT5_Format=2004;THREE.RGB_PVRTC_4BPPV1_Format=2100;THREE.RGB_PVRTC_2BPPV1_Format=2101;THREE.RGBA_PVRTC_4BPPV1_Format=2102;THREE.RGBA_PVRTC_2BPPV1_Format=2103; +THREE.Projector=function(){THREE.error("THREE.Projector has been moved to /examples/js/renderers/Projector.js.");this.projectVector=function(a,b){THREE.warn("THREE.Projector: .projectVector() is now vector.project().");a.project(b)};this.unprojectVector=function(a,b){THREE.warn("THREE.Projector: .unprojectVector() is now vector.unproject().");a.unproject(b)};this.pickingRay=function(a,b){THREE.error("THREE.Projector: .pickingRay() is now raycaster.setFromCamera().")}}; +THREE.CanvasRenderer=function(){THREE.error("THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js");this.domElement=document.createElement("canvas");this.clear=function(){};this.render=function(){};this.setClearColor=function(){};this.setSize=function(){}};THREE.Color=function(a){return 3===arguments.length?this.setRGB(arguments[0],arguments[1],arguments[2]):this.set(a)}; THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,set:function(a){a instanceof THREE.Color?this.copy(a):"number"===typeof a?this.setHex(a):"string"===typeof a&&this.setStyle(a);return this},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSL:function(a,b,c){if(0===b)this.r=this.g=this.b=c;else{var d=function(a,b,c){0>c&&(c+=1);1<c&&(c-=1);return c<1/6?a+6*(b-a)* c:.5>c?b:c<2/3?a+6*(b-a)*(2/3-c):a};b=.5>=c?c*(1+b):c+b-c*b;c=2*c-b;this.r=d(c,b,a+1/3);this.g=d(c,b,a);this.b=d(c,b,a-1/3)}return this},setStyle:function(a){if(/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.test(a))return a=/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.exec(a),this.r=Math.min(255,parseInt(a[1],10))/255,this.g=Math.min(255,parseInt(a[2],10))/255,this.b=Math.min(255,parseInt(a[3],10))/255,this;if(/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.test(a))return a=/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.exec(a),this.r= Math.min(100,parseInt(a[1],10))/100,this.g=Math.min(100,parseInt(a[2],10))/100,this.b=Math.min(100,parseInt(a[3],10))/100,this;if(/^\#([0-9a-f]{6})$/i.test(a))return a=/^\#([0-9a-f]{6})$/i.exec(a),this.setHex(parseInt(a[1],16)),this;if(/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.test(a))return a=/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(a),this.setHex(parseInt(a[1]+a[1]+a[2]+a[2]+a[3]+a[3],16)),this;if(/^(\w+)$/i.test(a))return this.setHex(THREE.ColorKeywords[a]),this},copy:function(a){this.r=a.r;this.g= -a.g;this.b=a.b;return this},copyGammaToLinear:function(a){this.r=a.r*a.r;this.g=a.g*a.g;this.b=a.b*a.b;return this},copyLinearToGamma:function(a){this.r=Math.sqrt(a.r);this.g=Math.sqrt(a.g);this.b=Math.sqrt(a.b);return this},convertGammaToLinear:function(){var a=this.r,b=this.g,c=this.b;this.r=a*a;this.g=b*b;this.b=c*c;return this},convertLinearToGamma:function(){this.r=Math.sqrt(this.r);this.g=Math.sqrt(this.g);this.b=Math.sqrt(this.b);return this},getHex:function(){return 255*this.r<<16^255*this.g<< -8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(a){a=a||{h:0,s:0,l:0};var b=this.r,c=this.g,d=this.b,e=Math.max(b,c,d),f=Math.min(b,c,d),g,h=(f+e)/2;if(f===e)f=g=0;else{var k=e-f,f=.5>=h?k/(e+f):k/(2-e-f);switch(e){case b:g=(c-d)/k+(c<d?6:0);break;case c:g=(d-b)/k+2;break;case d:g=(b-c)/k+4}g/=6}a.h=g;a.s=f;a.l=h;return a},getStyle:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},offsetHSL:function(a, -b,c){var d=this.getHSL();d.h+=a;d.s+=b;d.l+=c;this.setHSL(d.h,d.s,d.l);return this},add:function(a){this.r+=a.r;this.g+=a.g;this.b+=a.b;return this},addColors:function(a,b){this.r=a.r+b.r;this.g=a.g+b.g;this.b=a.b+b.b;return this},addScalar:function(a){this.r+=a;this.g+=a;this.b+=a;return this},multiply:function(a){this.r*=a.r;this.g*=a.g;this.b*=a.b;return this},multiplyScalar:function(a){this.r*=a;this.g*=a;this.b*=a;return this},lerp:function(a,b){this.r+=(a.r-this.r)*b;this.g+=(a.g-this.g)*b; -this.b+=(a.b-this.b)*b;return this},equals:function(a){return a.r===this.r&&a.g===this.g&&a.b===this.b},fromArray:function(a){this.r=a[0];this.g=a[1];this.b=a[2];return this},toArray:function(){return[this.r,this.g,this.b]},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}}; +a.g;this.b=a.b;return this},copyGammaToLinear:function(a,b){void 0===b&&(b=2);this.r=Math.pow(a.r,b);this.g=Math.pow(a.g,b);this.b=Math.pow(a.b,b);return this},copyLinearToGamma:function(a,b){void 0===b&&(b=2);var c=0<b?1/b:1;this.r=Math.pow(a.r,c);this.g=Math.pow(a.g,c);this.b=Math.pow(a.b,c);return this},convertGammaToLinear:function(){var a=this.r,b=this.g,c=this.b;this.r=a*a;this.g=b*b;this.b=c*c;return this},convertLinearToGamma:function(){this.r=Math.sqrt(this.r);this.g=Math.sqrt(this.g);this.b= +Math.sqrt(this.b);return this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(a){a=a||{h:0,s:0,l:0};var b=this.r,c=this.g,d=this.b,e=Math.max(b,c,d),f=Math.min(b,c,d),g,h=(f+e)/2;if(f===e)f=g=0;else{var k=e-f,f=.5>=h?k/(e+f):k/(2-e-f);switch(e){case b:g=(c-d)/k+(c<d?6:0);break;case c:g=(d-b)/k+2;break;case d:g=(b-c)/k+4}g/=6}a.h=g;a.s=f;a.l=h;return a},getStyle:function(){return"rgb("+ +(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},offsetHSL:function(a,b,c){var d=this.getHSL();d.h+=a;d.s+=b;d.l+=c;this.setHSL(d.h,d.s,d.l);return this},add:function(a){this.r+=a.r;this.g+=a.g;this.b+=a.b;return this},addColors:function(a,b){this.r=a.r+b.r;this.g=a.g+b.g;this.b=a.b+b.b;return this},addScalar:function(a){this.r+=a;this.g+=a;this.b+=a;return this},multiply:function(a){this.r*=a.r;this.g*=a.g;this.b*=a.b;return this},multiplyScalar:function(a){this.r*=a;this.g*=a;this.b*=a; +return this},lerp:function(a,b){this.r+=(a.r-this.r)*b;this.g+=(a.g-this.g)*b;this.b+=(a.b-this.b)*b;return this},equals:function(a){return a.r===this.r&&a.g===this.g&&a.b===this.b},fromArray:function(a){this.r=a[0];this.g=a[1];this.b=a[2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.r;a[b+1]=this.g;a[b+2]=this.b;return a},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}}; THREE.ColorKeywords={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643, darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055, grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184, @@ -22,54 +23,55 @@ tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215, THREE.Quaternion.prototype={constructor:THREE.Quaternion,_x:0,_y:0,_z:0,_w:0,get x(){return this._x},set x(a){this._x=a;this.onChangeCallback()},get y(){return this._y},set y(a){this._y=a;this.onChangeCallback()},get z(){return this._z},set z(a){this._z=a;this.onChangeCallback()},get w(){return this._w},set w(a){this._w=a;this.onChangeCallback()},set:function(a,b,c,d){this._x=a;this._y=b;this._z=c;this._w=d;this.onChangeCallback();return this},copy:function(a){this._x=a.x;this._y=a.y;this._z=a.z; this._w=a.w;this.onChangeCallback();return this},setFromEuler:function(a,b){if(!1===a instanceof THREE.Euler)throw Error("THREE.Quaternion: .setFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var c=Math.cos(a._x/2),d=Math.cos(a._y/2),e=Math.cos(a._z/2),f=Math.sin(a._x/2),g=Math.sin(a._y/2),h=Math.sin(a._z/2);"XYZ"===a.order?(this._x=f*d*e+c*g*h,this._y=c*g*e-f*d*h,this._z=c*d*h+f*g*e,this._w=c*d*e-f*g*h):"YXZ"===a.order?(this._x=f*d*e+c*g*h,this._y=c*g*e-f*d*h,this._z= c*d*h-f*g*e,this._w=c*d*e+f*g*h):"ZXY"===a.order?(this._x=f*d*e-c*g*h,this._y=c*g*e+f*d*h,this._z=c*d*h+f*g*e,this._w=c*d*e-f*g*h):"ZYX"===a.order?(this._x=f*d*e-c*g*h,this._y=c*g*e+f*d*h,this._z=c*d*h-f*g*e,this._w=c*d*e+f*g*h):"YZX"===a.order?(this._x=f*d*e+c*g*h,this._y=c*g*e+f*d*h,this._z=c*d*h-f*g*e,this._w=c*d*e-f*g*h):"XZY"===a.order&&(this._x=f*d*e-c*g*h,this._y=c*g*e-f*d*h,this._z=c*d*h+f*g*e,this._w=c*d*e+f*g*h);if(!1!==b)this.onChangeCallback();return this},setFromAxisAngle:function(a, -b){var c=b/2,d=Math.sin(c);this._x=a.x*d;this._y=a.y*d;this._z=a.z*d;this._w=Math.cos(c);this.onChangeCallback();return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0];a=b[4];var d=b[8],e=b[1],f=b[5],g=b[9],h=b[2],k=b[6],b=b[10],n=c+f+b;0<n?(c=.5/Math.sqrt(n+1),this._w=.25/c,this._x=(k-g)*c,this._y=(d-h)*c,this._z=(e-a)*c):c>f&&c>b?(c=2*Math.sqrt(1+c-f-b),this._w=(k-g)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y= +b){var c=b/2,d=Math.sin(c);this._x=a.x*d;this._y=a.y*d;this._z=a.z*d;this._w=Math.cos(c);this.onChangeCallback();return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0];a=b[4];var d=b[8],e=b[1],f=b[5],g=b[9],h=b[2],k=b[6],b=b[10],l=c+f+b;0<l?(c=.5/Math.sqrt(l+1),this._w=.25/c,this._x=(k-g)*c,this._y=(d-h)*c,this._z=(e-a)*c):c>f&&c>b?(c=2*Math.sqrt(1+c-f-b),this._w=(k-g)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y= .25*c,this._z=(g+k)/c):(c=2*Math.sqrt(1+b-c-f),this._w=(e-a)/c,this._x=(d+h)/c,this._y=(g+k)/c,this._z=.25*c);this.onChangeCallback();return this},setFromUnitVectors:function(){var a,b;return function(c,d){void 0===a&&(a=new THREE.Vector3);b=c.dot(d)+1;1E-6>b?(b=0,Math.abs(c.x)>Math.abs(c.z)?a.set(-c.y,c.x,0):a.set(0,-c.z,c.y)):a.crossVectors(c,d);this._x=a.x;this._y=a.y;this._z=a.z;this._w=b;this.normalize();return this}}(),inverse:function(){this.conjugate().normalize();return this},conjugate:function(){this._x*= -1;this._y*=-1;this._z*=-1;this.onChangeCallback();return this},dot:function(a){return this._x*a._x+this._y*a._y+this._z*a._z+this._w*a._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a=this.length();0===a?(this._z=this._y=this._x=0,this._w=1):(a=1/a,this._x*=a,this._y*=a,this._z*=a,this._w*=a);this.onChangeCallback();return this}, -multiply:function(a,b){return void 0!==b?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z,f=a._w,g=b._x,h=b._y,k=b._z,n=b._w;this._x=c*n+f*g+d*k-e*h;this._y=d*n+f*h+e*g-c*k;this._z=e*n+f*k+c*h-d*g;this._w=f*n-c*g-d*h-e*k;this.onChangeCallback();return this},multiplyVector3:function(a){console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."); +multiply:function(a,b){return void 0!==b?(THREE.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z,f=a._w,g=b._x,h=b._y,k=b._z,l=b._w;this._x=c*l+f*g+d*k-e*h;this._y=d*l+f*h+e*g-c*k;this._z=e*l+f*k+c*h-d*g;this._w=f*l-c*g-d*h-e*k;this.onChangeCallback();return this},multiplyVector3:function(a){THREE.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."); return a.applyQuaternion(this)},slerp:function(a,b){if(0===b)return this;if(1===b)return this.copy(a);var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z;0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a);if(1<=g)return this._w=f,this._x=c,this._y=d,this._z=e,this;var h=Math.acos(g),k=Math.sqrt(1-g*g);if(.001>Math.abs(k))return this._w=.5*(f+this._w),this._x=.5*(c+this._x),this._y=.5*(d+this._y),this._z=.5*(e+this._z),this;g=Math.sin((1-b)*h)/k;h= Math.sin(b*h)/k;this._w=f*g+this._w*h;this._x=c*g+this._x*h;this._y=d*g+this._y*h;this._z=e*g+this._z*h;this.onChangeCallback();return this},equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a,b){void 0===b&&(b=0);this._x=a[b];this._y=a[b+1];this._z=a[b+2];this._w=a[b+3];this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._w;return a},onChange:function(a){this.onChangeCallback= a;return this},onChangeCallback:function(){},clone:function(){return new THREE.Quaternion(this._x,this._y,this._z,this._w)}};THREE.Quaternion.slerp=function(a,b,c,d){return c.copy(a).slerp(b,d)};THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0}; THREE.Vector2.prototype={constructor:THREE.Vector2,set:function(a,b){this.x=a;this.y=b;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw Error("index is out of range: "+a);}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;default:throw Error("index is out of range: "+a);}},copy:function(a){this.x=a.x;this.y=a.y;return this},add:function(a, -b){if(void 0!==b)return console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addScalar:function(a){this.x+=a;this.y+=a;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;return this}, -subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiply:function(a){this.x*=a.x;this.y*=a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},divide:function(a){this.x/=a.x;this.y/=a.y;return this},divideScalar:function(a){0!==a?(a=1/a,this.x*=a,this.y*=a):this.y=this.x=0;return this},min:function(a){this.x>a.x&&(this.x=a.x);this.y>a.y&&(this.y=a.y);return this},max:function(a){this.x<a.x&&(this.x=a.x);this.y<a.y&&(this.y=a.y);return this},clamp:function(a, -b){this.x<a.x?this.x=a.x:this.x>b.x&&(this.x=b.x);this.y<a.y?this.y=a.y:this.y>b.y&&(this.y=b.y);return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new THREE.Vector2,b=new THREE.Vector2);a.set(c,c);b.set(d,d);return this.clamp(a,b)}}(),floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this}, -roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);return this},negate:function(){this.x=-this.x;this.y=-this.y;return this},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b= -this.x-a.x;a=this.y-a.y;return b*b+a*a},setLength:function(a){var b=this.length();0!==b&&a!==b&&this.multiplyScalar(a/b);return this},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;return this},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;return a},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+ -c;this.x=a.array[b];this.y=a.array[b+1];return this},clone:function(){return new THREE.Vector2(this.x,this.y)}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0}; +b){if(void 0!==b)return THREE.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;return this},addScalar:function(a){this.x+=a;this.y+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},sub:function(a,b){if(void 0!==b)return THREE.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;return this}, +subScalar:function(a){this.x-=a;this.y-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiply:function(a){this.x*=a.x;this.y*=a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},divide:function(a){this.x/=a.x;this.y/=a.y;return this},divideScalar:function(a){0!==a?(a=1/a,this.x*=a,this.y*=a):this.y=this.x=0;return this},min:function(a){this.x>a.x&&(this.x=a.x);this.y>a.y&&(this.y=a.y);return this},max:function(a){this.x<a.x&&(this.x=a.x); +this.y<a.y&&(this.y=a.y);return this},clamp:function(a,b){this.x<a.x?this.x=a.x:this.x>b.x&&(this.x=b.x);this.y<a.y?this.y=a.y:this.y>b.y&&(this.y=b.y);return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new THREE.Vector2,b=new THREE.Vector2);a.set(c,c);b.set(d,d);return this.clamp(a,b)}}(),floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this},round:function(){this.x= +Math.round(this.x);this.y=Math.round(this.y);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);return this},negate:function(){this.x=-this.x;this.y=-this.y;return this},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))}, +distanceToSquared:function(a){var b=this.x-a.x;a=this.y-a.y;return b*b+a*a},setLength:function(a){var b=this.length();0!==b&&a!==b&&this.multiplyScalar(a/b);return this},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;return this},lerpVectors:function(a,b,c){this.subVectors(b,a).multiplyScalar(c).add(a);return this},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];return this},toArray:function(a,b){void 0=== +a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;return a},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+c;this.x=a.array[b];this.y=a.array[b+1];return this},clone:function(){return new THREE.Vector2(this.x,this.y)}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0}; THREE.Vector3.prototype={constructor:THREE.Vector3,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw Error("index is out of range: "+a);}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+ -a);}},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), -this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},multiply:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(a,b);this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},multiplyVectors:function(a,b){this.x=a.x*b.x;this.y= -a.y*b.y;this.z=a.z*b.z;return this},applyEuler:function(){var a;return function(b){!1===b instanceof THREE.Euler&&console.error("THREE.Vector3: .applyEuler() now expects a Euler rotation rather than a Vector3 and order.");void 0===a&&(a=new THREE.Quaternion);this.applyQuaternion(a.setFromEuler(b));return this}}(),applyAxisAngle:function(){var a;return function(b,c){void 0===a&&(a=new THREE.Quaternion);this.applyQuaternion(a.setFromAxisAngle(b,c));return this}}(),applyMatrix3:function(a){var b=this.x, -c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[3]*c+a[6]*d;this.y=a[1]*b+a[4]*c+a[7]*d;this.z=a[2]*b+a[5]*c+a[8]*d;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12];this.y=a[1]*b+a[5]*c+a[9]*d+a[13];this.z=a[2]*b+a[6]*c+a[10]*d+a[14];return this},applyProjection:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;var e=1/(a[3]*b+a[7]*c+a[11]*d+a[15]);this.x=(a[0]*b+a[4]*c+a[8]*d+a[12])*e;this.y=(a[1]*b+a[5]*c+a[9]*d+a[13])*e;this.z= -(a[2]*b+a[6]*c+a[10]*d+a[14])*e;return this},applyQuaternion:function(a){var b=this.x,c=this.y,d=this.z,e=a.x,f=a.y,g=a.z;a=a.w;var h=a*b+f*d-g*c,k=a*c+g*b-e*d,n=a*d+e*c-f*b,b=-e*b-f*c-g*d;this.x=h*a+b*-e+k*-g-n*-f;this.y=k*a+b*-f+n*-e-h*-g;this.z=n*a+b*-g+h*-f-k*-e;return this},project:function(){var a;return function(b){void 0===a&&(a=new THREE.Matrix4);a.multiplyMatrices(b.projectionMatrix,a.getInverse(b.matrixWorld));return this.applyProjection(a)}}(),unproject:function(){var a;return function(b){void 0=== -a&&(a=new THREE.Matrix4);a.multiplyMatrices(b.matrixWorld,a.getInverse(b.projectionMatrix));return this.applyProjection(a)}}(),transformDirection:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d;this.y=a[1]*b+a[5]*c+a[9]*d;this.z=a[2]*b+a[6]*c+a[10]*d;this.normalize();return this},divide:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){0!==a?(a=1/a,this.x*=a,this.y*=a,this.z*=a):this.z=this.y=this.x=0;return this},min:function(a){this.x> -a.x&&(this.x=a.x);this.y>a.y&&(this.y=a.y);this.z>a.z&&(this.z=a.z);return this},max:function(a){this.x<a.x&&(this.x=a.x);this.y<a.y&&(this.y=a.y);this.z<a.z&&(this.z=a.z);return this},clamp:function(a,b){this.x<a.x?this.x=a.x:this.x>b.x&&(this.x=b.x);this.y<a.y?this.y=a.y:this.y>b.y&&(this.y=b.y);this.z<a.z?this.z=a.z:this.z>b.z&&(this.z=b.z);return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new THREE.Vector3,b=new THREE.Vector3);a.set(c,c,c);b.set(d,d,d);return this.clamp(a, -b)}}(),floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z); -return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){var b=this.length();0!==b&&a!==b&&this.multiplyScalar(a/ -b);return this},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},cross:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b);var c=this.x,d=this.y,e=this.z;this.x=d*a.z-e*a.y;this.y=e*a.x-c*a.z;this.z=c*a.y-d*a.x;return this},crossVectors:function(a,b){var c=a.x,d=a.y,e=a.z,f=b.x,g=b.y,h=b.z;this.x=d*h-e*g;this.y=e*f-c*h;this.z=c*g-d*f;return this}, -projectOnVector:function(){var a,b;return function(c){void 0===a&&(a=new THREE.Vector3);a.copy(c).normalize();b=this.dot(a);return this.copy(a).multiplyScalar(b)}}(),projectOnPlane:function(){var a;return function(b){void 0===a&&(a=new THREE.Vector3);a.copy(this).projectOnVector(b);return this.sub(a)}}(),reflect:function(){var a;return function(b){void 0===a&&(a=new THREE.Vector3);return this.sub(a.copy(b).multiplyScalar(2*this.dot(b)))}}(),angleTo:function(a){a=this.dot(a)/(this.length()*a.length()); -return Math.acos(THREE.Math.clamp(a,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;a=this.z-a.z;return b*b+c*c+a*a},setEulerFromRotationMatrix:function(a,b){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(a,b){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")}, -getPositionFromMatrix:function(a){console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().");return this.setFromMatrixPosition(a)},getScaleFromMatrix:function(a){console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().");return this.setFromMatrixScale(a)},getColumnFromMatrix:function(a,b){console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().");return this.setFromMatrixColumn(a, -b)},setFromMatrixPosition:function(a){this.x=a.elements[12];this.y=a.elements[13];this.z=a.elements[14];return this},setFromMatrixScale:function(a){var b=this.set(a.elements[0],a.elements[1],a.elements[2]).length(),c=this.set(a.elements[4],a.elements[5],a.elements[6]).length();a=this.set(a.elements[8],a.elements[9],a.elements[10]).length();this.x=b;this.y=c;this.z=a;return this},setFromMatrixColumn:function(a,b){var c=4*a,d=b.elements;this.x=d[c];this.y=d[c+1];this.z=d[c+2];return this},equals:function(a){return a.x=== -this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;return a},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+c;this.x=a.array[b];this.y=a.array[b+1];this.z=a.array[b+2];return this},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)}}; -THREE.Vector4=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1}; +a);}},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){if(void 0!==b)return THREE.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},sub:function(a,b){if(void 0!==b)return THREE.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), +this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},multiply:function(a,b){if(void 0!==b)return THREE.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(a,b);this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*= +a;return this},multiplyVectors:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},applyEuler:function(){var a;return function(b){!1===b instanceof THREE.Euler&&THREE.error("THREE.Vector3: .applyEuler() now expects a Euler rotation rather than a Vector3 and order.");void 0===a&&(a=new THREE.Quaternion);this.applyQuaternion(a.setFromEuler(b));return this}}(),applyAxisAngle:function(){var a;return function(b,c){void 0===a&&(a=new THREE.Quaternion);this.applyQuaternion(a.setFromAxisAngle(b, +c));return this}}(),applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[3]*c+a[6]*d;this.y=a[1]*b+a[4]*c+a[7]*d;this.z=a[2]*b+a[5]*c+a[8]*d;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12];this.y=a[1]*b+a[5]*c+a[9]*d+a[13];this.z=a[2]*b+a[6]*c+a[10]*d+a[14];return this},applyProjection:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;var e=1/(a[3]*b+a[7]*c+a[11]*d+a[15]);this.x=(a[0]*b+a[4]* +c+a[8]*d+a[12])*e;this.y=(a[1]*b+a[5]*c+a[9]*d+a[13])*e;this.z=(a[2]*b+a[6]*c+a[10]*d+a[14])*e;return this},applyQuaternion:function(a){var b=this.x,c=this.y,d=this.z,e=a.x,f=a.y,g=a.z;a=a.w;var h=a*b+f*d-g*c,k=a*c+g*b-e*d,l=a*d+e*c-f*b,b=-e*b-f*c-g*d;this.x=h*a+b*-e+k*-g-l*-f;this.y=k*a+b*-f+l*-e-h*-g;this.z=l*a+b*-g+h*-f-k*-e;return this},project:function(){var a;return function(b){void 0===a&&(a=new THREE.Matrix4);a.multiplyMatrices(b.projectionMatrix,a.getInverse(b.matrixWorld));return this.applyProjection(a)}}(), +unproject:function(){var a;return function(b){void 0===a&&(a=new THREE.Matrix4);a.multiplyMatrices(b.matrixWorld,a.getInverse(b.projectionMatrix));return this.applyProjection(a)}}(),transformDirection:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d;this.y=a[1]*b+a[5]*c+a[9]*d;this.z=a[2]*b+a[6]*c+a[10]*d;this.normalize();return this},divide:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){0!==a?(a=1/a,this.x*=a,this.y*=a,this.z*= +a):this.z=this.y=this.x=0;return this},min:function(a){this.x>a.x&&(this.x=a.x);this.y>a.y&&(this.y=a.y);this.z>a.z&&(this.z=a.z);return this},max:function(a){this.x<a.x&&(this.x=a.x);this.y<a.y&&(this.y=a.y);this.z<a.z&&(this.z=a.z);return this},clamp:function(a,b){this.x<a.x?this.x=a.x:this.x>b.x&&(this.x=b.x);this.y<a.y?this.y=a.y:this.y>b.y&&(this.y=b.y);this.z<a.z?this.z=a.z:this.z>b.z&&(this.z=b.z);return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new THREE.Vector3, +b=new THREE.Vector3);a.set(c,c,c);b.set(d,d,d);return this.clamp(a,b)}}(),floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y): +Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())}, +setLength:function(a){var b=this.length();0!==b&&a!==b&&this.multiplyScalar(a/b);return this},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},lerpVectors:function(a,b,c){this.subVectors(b,a).multiplyScalar(c).add(a);return this},cross:function(a,b){if(void 0!==b)return THREE.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b);var c=this.x,d=this.y,e=this.z;this.x=d*a.z-e*a.y;this.y= +e*a.x-c*a.z;this.z=c*a.y-d*a.x;return this},crossVectors:function(a,b){var c=a.x,d=a.y,e=a.z,f=b.x,g=b.y,h=b.z;this.x=d*h-e*g;this.y=e*f-c*h;this.z=c*g-d*f;return this},projectOnVector:function(){var a,b;return function(c){void 0===a&&(a=new THREE.Vector3);a.copy(c).normalize();b=this.dot(a);return this.copy(a).multiplyScalar(b)}}(),projectOnPlane:function(){var a;return function(b){void 0===a&&(a=new THREE.Vector3);a.copy(this).projectOnVector(b);return this.sub(a)}}(),reflect:function(){var a;return function(b){void 0=== +a&&(a=new THREE.Vector3);return this.sub(a.copy(b).multiplyScalar(2*this.dot(b)))}}(),angleTo:function(a){a=this.dot(a)/(this.length()*a.length());return Math.acos(THREE.Math.clamp(a,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;a=this.z-a.z;return b*b+c*c+a*a},setEulerFromRotationMatrix:function(a,b){THREE.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")}, +setEulerFromQuaternion:function(a,b){THREE.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(a){THREE.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().");return this.setFromMatrixPosition(a)},getScaleFromMatrix:function(a){THREE.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().");return this.setFromMatrixScale(a)},getColumnFromMatrix:function(a, +b){THREE.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().");return this.setFromMatrixColumn(a,b)},setFromMatrixPosition:function(a){this.x=a.elements[12];this.y=a.elements[13];this.z=a.elements[14];return this},setFromMatrixScale:function(a){var b=this.set(a.elements[0],a.elements[1],a.elements[2]).length(),c=this.set(a.elements[4],a.elements[5],a.elements[6]).length();a=this.set(a.elements[8],a.elements[9],a.elements[10]).length();this.x=b;this.y=c;this.z=a; +return this},setFromMatrixColumn:function(a,b){var c=4*a,d=b.elements;this.x=d[c];this.y=d[c+1];this.z=d[c+2];return this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;return a},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+c;this.x=a.array[b];this.y=a.array[b+1];this.z= +a.array[b+2];return this},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)}};THREE.Vector4=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1}; THREE.Vector4.prototype={constructor:THREE.Vector4,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setW:function(a){this.w=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;case 3:this.w=b;break;default:throw Error("index is out of range: "+a);}},getComponent:function(a){switch(a){case 0:return this.x; -case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+a);}},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;this.w+=a;return this}, -addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},applyMatrix4:function(a){var b= -this.x,c=this.y,d=this.z,e=this.w;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12]*e;this.y=a[1]*b+a[5]*c+a[9]*d+a[13]*e;this.z=a[2]*b+a[6]*c+a[10]*d+a[14]*e;this.w=a[3]*b+a[7]*c+a[11]*d+a[15]*e;return this},divideScalar:function(a){0!==a?(a=1/a,this.x*=a,this.y*=a,this.z*=a,this.w*=a):(this.z=this.y=this.x=0,this.w=1);return this},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4>b?(this.x=1,this.z=this.y=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b);return this}, -setAxisAngleFromRotationMatrix:function(a){var b,c,d;a=a.elements;var e=a[0];d=a[4];var f=a[8],g=a[1],h=a[5],k=a[9];c=a[2];b=a[6];var n=a[10];if(.01>Math.abs(d-g)&&.01>Math.abs(f-c)&&.01>Math.abs(k-b)){if(.1>Math.abs(d+g)&&.1>Math.abs(f+c)&&.1>Math.abs(k+b)&&.1>Math.abs(e+h+n-3))return this.set(1,0,0,0),this;a=Math.PI;e=(e+1)/2;h=(h+1)/2;n=(n+1)/2;d=(d+g)/4;f=(f+c)/4;k=(k+b)/4;e>h&&e>n?.01>e?(b=0,d=c=.707106781):(b=Math.sqrt(e),c=d/b,d=f/b):h>n?.01>h?(b=.707106781,c=0,d=.707106781):(c=Math.sqrt(h), -b=d/c,d=k/c):.01>n?(c=b=.707106781,d=0):(d=Math.sqrt(n),b=f/d,c=k/d);this.set(b,c,d,a);return this}a=Math.sqrt((b-k)*(b-k)+(f-c)*(f-c)+(g-d)*(g-d));.001>Math.abs(a)&&(a=1);this.x=(b-k)/a;this.y=(f-c)/a;this.z=(g-d)/a;this.w=Math.acos((e+h+n-1)/2);return this},min:function(a){this.x>a.x&&(this.x=a.x);this.y>a.y&&(this.y=a.y);this.z>a.z&&(this.z=a.z);this.w>a.w&&(this.w=a.w);return this},max:function(a){this.x<a.x&&(this.x=a.x);this.y<a.y&&(this.y=a.y);this.z<a.z&&(this.z=a.z);this.w<a.w&&(this.w=a.w); -return this},clamp:function(a,b){this.x<a.x?this.x=a.x:this.x>b.x&&(this.x=b.x);this.y<a.y?this.y=a.y:this.y>b.y&&(this.y=b.y);this.z<a.z?this.z=a.z:this.z>b.z&&(this.z=b.z);this.w<a.w?this.w=a.w:this.w>b.w&&(this.w=b.w);return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new THREE.Vector4,b=new THREE.Vector4);a.set(c,c,c,c);b.set(d,d,d,d);return this.clamp(a,b)}}(),floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);this.w=Math.floor(this.w); -return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);this.w=Math.ceil(this.w);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);this.w=Math.round(this.w);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);this.w=0>this.w?Math.ceil(this.w):Math.floor(this.w); -return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;this.w=-this.w;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())}, -setLength:function(a){var b=this.length();0!==b&&a!==b&&this.multiplyScalar(a/b);return this},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];this.w=a[b+3];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]= -this.z;a[b+3]=this.w;return a},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+c;this.x=a.array[b];this.y=a.array[b+1];this.z=a.array[b+2];this.w=a.array[b+3];return this},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)}};THREE.Euler=function(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._order=d||THREE.Euler.DefaultOrder};THREE.Euler.RotationOrders="XYZ YZX ZXY XZY YXZ ZYX".split(" ");THREE.Euler.DefaultOrder="XYZ"; +case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+a);}},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},add:function(a,b){if(void 0!==b)return THREE.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;this.w+=a;return this},addVectors:function(a, +b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},sub:function(a,b){if(void 0!==b)return THREE.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;this.w-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},multiplyScalar:function(a){this.x*= +a;this.y*=a;this.z*=a;this.w*=a;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=this.w;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12]*e;this.y=a[1]*b+a[5]*c+a[9]*d+a[13]*e;this.z=a[2]*b+a[6]*c+a[10]*d+a[14]*e;this.w=a[3]*b+a[7]*c+a[11]*d+a[15]*e;return this},divideScalar:function(a){0!==a?(a=1/a,this.x*=a,this.y*=a,this.z*=a,this.w*=a):(this.z=this.y=this.x=0,this.w=1);return this},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4> +b?(this.x=1,this.z=this.y=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b);return this},setAxisAngleFromRotationMatrix:function(a){var b,c,d;a=a.elements;var e=a[0];d=a[4];var f=a[8],g=a[1],h=a[5],k=a[9];c=a[2];b=a[6];var l=a[10];if(.01>Math.abs(d-g)&&.01>Math.abs(f-c)&&.01>Math.abs(k-b)){if(.1>Math.abs(d+g)&&.1>Math.abs(f+c)&&.1>Math.abs(k+b)&&.1>Math.abs(e+h+l-3))return this.set(1,0,0,0),this;a=Math.PI;e=(e+1)/2;h=(h+1)/2;l=(l+1)/2;d=(d+g)/4;f=(f+c)/4;k=(k+b)/4;e>h&&e>l?.01>e?(b=0,d=c=.707106781):(b= +Math.sqrt(e),c=d/b,d=f/b):h>l?.01>h?(b=.707106781,c=0,d=.707106781):(c=Math.sqrt(h),b=d/c,d=k/c):.01>l?(c=b=.707106781,d=0):(d=Math.sqrt(l),b=f/d,c=k/d);this.set(b,c,d,a);return this}a=Math.sqrt((b-k)*(b-k)+(f-c)*(f-c)+(g-d)*(g-d));.001>Math.abs(a)&&(a=1);this.x=(b-k)/a;this.y=(f-c)/a;this.z=(g-d)/a;this.w=Math.acos((e+h+l-1)/2);return this},min:function(a){this.x>a.x&&(this.x=a.x);this.y>a.y&&(this.y=a.y);this.z>a.z&&(this.z=a.z);this.w>a.w&&(this.w=a.w);return this},max:function(a){this.x<a.x&& +(this.x=a.x);this.y<a.y&&(this.y=a.y);this.z<a.z&&(this.z=a.z);this.w<a.w&&(this.w=a.w);return this},clamp:function(a,b){this.x<a.x?this.x=a.x:this.x>b.x&&(this.x=b.x);this.y<a.y?this.y=a.y:this.y>b.y&&(this.y=b.y);this.z<a.z?this.z=a.z:this.z>b.z&&(this.z=b.z);this.w<a.w?this.w=a.w:this.w>b.w&&(this.w=b.w);return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new THREE.Vector4,b=new THREE.Vector4);a.set(c,c,c,c);b.set(d,d,d,d);return this.clamp(a,b)}}(),floor:function(){this.x= +Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);this.w=Math.floor(this.w);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);this.w=Math.ceil(this.w);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);this.w=Math.round(this.w);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y); +this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);this.w=0>this.w?Math.ceil(this.w):Math.floor(this.w);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;this.w=-this.w;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+ +Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){var b=this.length();0!==b&&a!==b&&this.multiplyScalar(a/b);return this},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},lerpVectors:function(a,b,c){this.subVectors(b,a).multiplyScalar(c).add(a);return this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w}, +fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];this.w=a[b+3];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;a[b+3]=this.w;return a},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+c;this.x=a.array[b];this.y=a.array[b+1];this.z=a.array[b+2];this.w=a.array[b+3];return this},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)}}; +THREE.Euler=function(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._order=d||THREE.Euler.DefaultOrder};THREE.Euler.RotationOrders="XYZ YZX ZXY XZY YXZ ZYX".split(" ");THREE.Euler.DefaultOrder="XYZ"; THREE.Euler.prototype={constructor:THREE.Euler,_x:0,_y:0,_z:0,_order:THREE.Euler.DefaultOrder,get x(){return this._x},set x(a){this._x=a;this.onChangeCallback()},get y(){return this._y},set y(a){this._y=a;this.onChangeCallback()},get z(){return this._z},set z(a){this._z=a;this.onChangeCallback()},get order(){return this._order},set order(a){this._order=a;this.onChangeCallback()},set:function(a,b,c,d){this._x=a;this._y=b;this._z=c;this._order=d||this._order;this.onChangeCallback();return this},copy:function(a){this._x= -a._x;this._y=a._y;this._z=a._z;this._order=a._order;this.onChangeCallback();return this},setFromRotationMatrix:function(a,b,c){var d=THREE.Math.clamp,e=a.elements;a=e[0];var f=e[4],g=e[8],h=e[1],k=e[5],n=e[9],p=e[2],q=e[6],e=e[10];b=b||this._order;"XYZ"===b?(this._y=Math.asin(d(g,-1,1)),.99999>Math.abs(g)?(this._x=Math.atan2(-n,e),this._z=Math.atan2(-f,a)):(this._x=Math.atan2(q,k),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(n,-1,1)),.99999>Math.abs(n)?(this._y=Math.atan2(g,e),this._z=Math.atan2(h, -k)):(this._y=Math.atan2(-p,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(q,-1,1)),.99999>Math.abs(q)?(this._y=Math.atan2(-p,e),this._z=Math.atan2(-f,k)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(p,-1,1)),.99999>Math.abs(p)?(this._x=Math.atan2(q,e),this._z=Math.atan2(h,a)):(this._x=0,this._z=Math.atan2(-f,k))):"YZX"===b?(this._z=Math.asin(d(h,-1,1)),.99999>Math.abs(h)?(this._x=Math.atan2(-n,k),this._y=Math.atan2(-p,a)):(this._x=0,this._y=Math.atan2(g,e))):"XZY"===b?(this._z= -Math.asin(-d(f,-1,1)),.99999>Math.abs(f)?(this._x=Math.atan2(q,k),this._y=Math.atan2(g,a)):(this._x=Math.atan2(-n,e),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+b);this._order=b;if(!1!==c)this.onChangeCallback();return this},setFromQuaternion:function(){var a;return function(b,c,d){void 0===a&&(a=new THREE.Matrix4);a.makeRotationFromQuaternion(b);this.setFromRotationMatrix(a,c,d);return this}}(),setFromVector3:function(a,b){return this.set(a.x,a.y,a.z, -b||this._order)},reorder:function(){var a=new THREE.Quaternion;return function(b){a.setFromEuler(this);this.setFromQuaternion(a,b)}}(),equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){this._x=a[0];this._y=a[1];this._z=a[2];void 0!==a[3]&&(this._order=a[3]);this.onChangeCallback();return this},toArray:function(){return[this._x,this._y,this._z,this._order]},toVector3:function(a){return a?a.set(this._x,this._y,this._z):new THREE.Vector3(this._x, -this._y,this._z)},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){},clone:function(){return new THREE.Euler(this._x,this._y,this._z,this._order)}};THREE.Line3=function(a,b){this.start=void 0!==a?a:new THREE.Vector3;this.end=void 0!==b?b:new THREE.Vector3}; +a._x;this._y=a._y;this._z=a._z;this._order=a._order;this.onChangeCallback();return this},setFromRotationMatrix:function(a,b,c){var d=THREE.Math.clamp,e=a.elements;a=e[0];var f=e[4],g=e[8],h=e[1],k=e[5],l=e[9],p=e[2],q=e[6],e=e[10];b=b||this._order;"XYZ"===b?(this._y=Math.asin(d(g,-1,1)),.99999>Math.abs(g)?(this._x=Math.atan2(-l,e),this._z=Math.atan2(-f,a)):(this._x=Math.atan2(q,k),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(l,-1,1)),.99999>Math.abs(l)?(this._y=Math.atan2(g,e),this._z=Math.atan2(h, +k)):(this._y=Math.atan2(-p,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(q,-1,1)),.99999>Math.abs(q)?(this._y=Math.atan2(-p,e),this._z=Math.atan2(-f,k)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(p,-1,1)),.99999>Math.abs(p)?(this._x=Math.atan2(q,e),this._z=Math.atan2(h,a)):(this._x=0,this._z=Math.atan2(-f,k))):"YZX"===b?(this._z=Math.asin(d(h,-1,1)),.99999>Math.abs(h)?(this._x=Math.atan2(-l,k),this._y=Math.atan2(-p,a)):(this._x=0,this._y=Math.atan2(g,e))):"XZY"===b?(this._z= +Math.asin(-d(f,-1,1)),.99999>Math.abs(f)?(this._x=Math.atan2(q,k),this._y=Math.atan2(g,a)):(this._x=Math.atan2(-l,e),this._y=0)):THREE.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+b);this._order=b;if(!1!==c)this.onChangeCallback();return this},setFromQuaternion:function(){var a;return function(b,c,d){void 0===a&&(a=new THREE.Matrix4);a.makeRotationFromQuaternion(b);this.setFromRotationMatrix(a,c,d);return this}}(),setFromVector3:function(a,b){return this.set(a.x,a.y,a.z, +b||this._order)},reorder:function(){var a=new THREE.Quaternion;return function(b){a.setFromEuler(this);this.setFromQuaternion(a,b)}}(),equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){this._x=a[0];this._y=a[1];this._z=a[2];void 0!==a[3]&&(this._order=a[3]);this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._order;return a},toVector3:function(a){return a? +a.set(this._x,this._y,this._z):new THREE.Vector3(this._x,this._y,this._z)},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){},clone:function(){return new THREE.Euler(this._x,this._y,this._z,this._order)}};THREE.Line3=function(a,b){this.start=void 0!==a?a:new THREE.Vector3;this.end=void 0!==b?b:new THREE.Vector3}; THREE.Line3.prototype={constructor:THREE.Line3,set:function(a,b){this.start.copy(a);this.end.copy(b);return this},copy:function(a){this.start.copy(a.start);this.end.copy(a.end);return this},center:function(a){return(a||new THREE.Vector3).addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(a){return(a||new THREE.Vector3).subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(a, b){var c=b||new THREE.Vector3;return this.delta(c).multiplyScalar(a).add(this.start)},closestPointToPointParameter:function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(c,d){a.subVectors(c,this.start);b.subVectors(this.end,this.start);var e=b.dot(b),e=b.dot(a)/e;d&&(e=THREE.Math.clamp(e,0,1));return e}}(),closestPointToPoint:function(a,b,c){a=this.closestPointToPointParameter(a,b);c=c||new THREE.Vector3;return this.delta(c).multiplyScalar(a).add(this.start)},applyMatrix4:function(a){this.start.applyMatrix4(a); this.end.applyMatrix4(a);return this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)},clone:function(){return(new THREE.Line3).copy(this)}};THREE.Box2=function(a,b){this.min=void 0!==a?a:new THREE.Vector2(Infinity,Infinity);this.max=void 0!==b?b:new THREE.Vector2(-Infinity,-Infinity)}; @@ -85,39 +87,39 @@ this.max.add(a);return this},expandByScalar:function(a){this.min.addScalar(-a);t this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y),(a.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(a){return a.max.x<this.min.x||a.min.x>this.max.x||a.max.y<this.min.y||a.min.y>this.max.y||a.max.z<this.min.z||a.min.z>this.max.z?!1:!0},clampPoint:function(a,b){return(b||new THREE.Vector3).copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new THREE.Vector3;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),getBoundingSphere:function(){var a= new THREE.Vector3;return function(b){b=b||new THREE.Sphere;b.center=this.center();b.radius=.5*this.size(a).length();return b}}(),intersect:function(a){this.min.max(a.min);this.max.min(a.max);return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},applyMatrix4:function(){var a=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];return function(b){a[0].set(this.min.x,this.min.y, this.min.z).applyMatrix4(b);a[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(b);a[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(b);a[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(b);a[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(b);a[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(b);a[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(b);a[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(b);this.makeEmpty();this.setFromPoints(a);return this}}(),translate:function(a){this.min.add(a); -this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)},clone:function(){return(new THREE.Box3).copy(this)}};THREE.Matrix3=function(){this.elements=new Float32Array([1,0,0,0,1,0,0,0,1]);0<arguments.length&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}; -THREE.Matrix3.prototype={constructor:THREE.Matrix3,set:function(a,b,c,d,e,f,g,h,k){var n=this.elements;n[0]=a;n[3]=b;n[6]=c;n[1]=d;n[4]=e;n[7]=f;n[2]=g;n[5]=h;n[8]=k;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},copy:function(a){a=a.elements;this.set(a[0],a[3],a[6],a[1],a[4],a[7],a[2],a[5],a[8]);return this},multiplyVector3:function(a){console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.");return a.applyMatrix3(this)}, -multiplyVector3Array:function(a){console.warn("THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.");return this.applyToVector3Array(a)},applyToVector3Array:function(){var a=new THREE.Vector3;return function(b,c,d){void 0===c&&(c=0);void 0===d&&(d=b.length);for(var e=0;e<d;e+=3,c+=3)a.x=b[c],a.y=b[c+1],a.z=b[c+2],a.applyMatrix3(this),b[c]=a.x,b[c+1]=a.y,b[c+2]=a.z;return b}}(),multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[3]*=a;b[6]*= +this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)},clone:function(){return(new THREE.Box3).copy(this)}};THREE.Matrix3=function(){this.elements=new Float32Array([1,0,0,0,1,0,0,0,1]);0<arguments.length&&THREE.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}; +THREE.Matrix3.prototype={constructor:THREE.Matrix3,set:function(a,b,c,d,e,f,g,h,k){var l=this.elements;l[0]=a;l[3]=b;l[6]=c;l[1]=d;l[4]=e;l[7]=f;l[2]=g;l[5]=h;l[8]=k;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},copy:function(a){a=a.elements;this.set(a[0],a[3],a[6],a[1],a[4],a[7],a[2],a[5],a[8]);return this},multiplyVector3:function(a){THREE.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.");return a.applyMatrix3(this)}, +multiplyVector3Array:function(a){THREE.warn("THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.");return this.applyToVector3Array(a)},applyToVector3Array:function(){var a=new THREE.Vector3;return function(b,c,d){void 0===c&&(c=0);void 0===d&&(d=b.length);for(var e=0;e<d;e+=3,c+=3)a.x=b[c],a.y=b[c+1],a.z=b[c+2],a.applyMatrix3(this),b[c]=a.x,b[c+1]=a.y,b[c+2]=a.z;return b}}(),multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[3]*=a;b[6]*= a;b[1]*=a;b[4]*=a;b[7]*=a;b[2]*=a;b[5]*=a;b[8]*=a;return this},determinant:function(){var a=this.elements,b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],k=a[7],a=a[8];return b*f*a-b*g*k-c*e*a+c*g*h+d*e*k-d*f*h},getInverse:function(a,b){var c=a.elements,d=this.elements;d[0]=c[10]*c[5]-c[6]*c[9];d[1]=-c[10]*c[1]+c[2]*c[9];d[2]=c[6]*c[1]-c[2]*c[5];d[3]=-c[10]*c[4]+c[6]*c[8];d[4]=c[10]*c[0]-c[2]*c[8];d[5]=-c[6]*c[0]+c[2]*c[4];d[6]=c[9]*c[4]-c[5]*c[8];d[7]=-c[9]*c[0]+c[1]*c[8];d[8]=c[5]*c[0]-c[1]*c[4]; -c=c[0]*d[0]+c[1]*d[3]+c[2]*d[6];if(0===c){if(b)throw Error("Matrix3.getInverse(): can't invert matrix, determinant is 0");console.warn("Matrix3.getInverse(): can't invert matrix, determinant is 0");this.identity();return this}this.multiplyScalar(1/c);return this},transpose:function(){var a,b=this.elements;a=b[1];b[1]=b[3];b[3]=a;a=b[2];b[2]=b[6];b[6]=a;a=b[5];b[5]=b[7];b[7]=a;return this},flattenToArrayOffset:function(a,b){var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4]; +c=c[0]*d[0]+c[1]*d[3]+c[2]*d[6];if(0===c){if(b)throw Error("Matrix3.getInverse(): can't invert matrix, determinant is 0");THREE.warn("Matrix3.getInverse(): can't invert matrix, determinant is 0");this.identity();return this}this.multiplyScalar(1/c);return this},transpose:function(){var a,b=this.elements;a=b[1];b[1]=b[3];b[3]=a;a=b[2];b[2]=b[6];b[6]=a;a=b[5];b[5]=b[7];b[7]=a;return this},flattenToArrayOffset:function(a,b){var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4]; a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];return a},getNormalMatrix:function(a){this.getInverse(a).transpose();return this},transposeIntoArray:function(a){var b=this.elements;a[0]=b[0];a[1]=b[3];a[2]=b[6];a[3]=b[1];a[4]=b[4];a[5]=b[7];a[6]=b[2];a[7]=b[5];a[8]=b[8];return this},fromArray:function(a){this.elements.set(a);return this},toArray:function(){var a=this.elements;return[a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]]},clone:function(){return(new THREE.Matrix3).fromArray(this.elements)}}; -THREE.Matrix4=function(){this.elements=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);0<arguments.length&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}; -THREE.Matrix4.prototype={constructor:THREE.Matrix4,set:function(a,b,c,d,e,f,g,h,k,n,p,q,m,t,s,r){var u=this.elements;u[0]=a;u[4]=b;u[8]=c;u[12]=d;u[1]=e;u[5]=f;u[9]=g;u[13]=h;u[2]=k;u[6]=n;u[10]=p;u[14]=q;u[3]=m;u[7]=t;u[11]=s;u[15]=r;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},copy:function(a){this.elements.set(a.elements);return this},extractPosition:function(a){console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().");return this.copyPosition(a)}, +THREE.Matrix4=function(){this.elements=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);0<arguments.length&&THREE.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}; +THREE.Matrix4.prototype={constructor:THREE.Matrix4,set:function(a,b,c,d,e,f,g,h,k,l,p,q,n,t,r,s){var u=this.elements;u[0]=a;u[4]=b;u[8]=c;u[12]=d;u[1]=e;u[5]=f;u[9]=g;u[13]=h;u[2]=k;u[6]=l;u[10]=p;u[14]=q;u[3]=n;u[7]=t;u[11]=r;u[15]=s;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},copy:function(a){this.elements.set(a.elements);return this},extractPosition:function(a){THREE.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().");return this.copyPosition(a)}, copyPosition:function(a){var b=this.elements;a=a.elements;b[12]=a[12];b[13]=a[13];b[14]=a[14];return this},extractBasis:function(a,b,c){var d=this.elements;a.set(d[0],d[1],d[2]);b.set(d[4],d[5],d[6]);c.set(d[8],d[9],d[10]);return this},makeBasis:function(a,b,c){this.set(a.x,b.x,c.x,0,a.y,b.y,c.y,0,a.z,b.z,c.z,0,0,0,0,1);return this},extractRotation:function(){var a=new THREE.Vector3;return function(b){var c=this.elements;b=b.elements;var d=1/a.set(b[0],b[1],b[2]).length(),e=1/a.set(b[4],b[5],b[6]).length(), -f=1/a.set(b[8],b[9],b[10]).length();c[0]=b[0]*d;c[1]=b[1]*d;c[2]=b[2]*d;c[4]=b[4]*e;c[5]=b[5]*e;c[6]=b[6]*e;c[8]=b[8]*f;c[9]=b[9]*f;c[10]=b[10]*f;return this}}(),makeRotationFromEuler:function(a){!1===a instanceof THREE.Euler&&console.error("THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var b=this.elements,c=a.x,d=a.y,e=a.z,f=Math.cos(c),c=Math.sin(c),g=Math.cos(d),d=Math.sin(d),h=Math.cos(e),e=Math.sin(e);if("XYZ"===a.order){a=f*h;var k=f* -e,n=c*h,p=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=k+n*d;b[5]=a-p*d;b[9]=-c*g;b[2]=p-a*d;b[6]=n+k*d;b[10]=f*g}else"YXZ"===a.order?(a=g*h,k=g*e,n=d*h,p=d*e,b[0]=a+p*c,b[4]=n*c-k,b[8]=f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=k*c-n,b[6]=p+a*c,b[10]=f*g):"ZXY"===a.order?(a=g*h,k=g*e,n=d*h,p=d*e,b[0]=a-p*c,b[4]=-f*e,b[8]=n+k*c,b[1]=k+n*c,b[5]=f*h,b[9]=p-a*c,b[2]=-f*d,b[6]=c,b[10]=f*g):"ZYX"===a.order?(a=f*h,k=f*e,n=c*h,p=c*e,b[0]=g*h,b[4]=n*d-k,b[8]=a*d+p,b[1]=g*e,b[5]=p*d+a,b[9]=k*d-n,b[2]=-d,b[6]=c*g,b[10]=f*g): -"YZX"===a.order?(a=f*g,k=f*d,n=c*g,p=c*d,b[0]=g*h,b[4]=p-a*e,b[8]=n*e+k,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=k*e+n,b[10]=a-p*e):"XZY"===a.order&&(a=f*g,k=f*d,n=c*g,p=c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=a*e+p,b[5]=f*h,b[9]=k*e-n,b[2]=n*e-k,b[6]=c*h,b[10]=p*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},setRotationFromQuaternion:function(a){console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().");return this.makeRotationFromQuaternion(a)}, -makeRotationFromQuaternion:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z,f=a.w,g=c+c,h=d+d,k=e+e;a=c*g;var n=c*h,c=c*k,p=d*h,d=d*k,e=e*k,g=f*g,h=f*h,f=f*k;b[0]=1-(p+e);b[4]=n-f;b[8]=c+h;b[1]=n+f;b[5]=1-(a+e);b[9]=d-g;b[2]=c-h;b[6]=d+g;b[10]=1-(a+p);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},lookAt:function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3;return function(d,e,f){var g=this.elements;c.subVectors(d,e).normalize();0===c.length()&&(c.z=1);a.crossVectors(f, -c).normalize();0===a.length()&&(c.x+=1E-4,a.crossVectors(f,c).normalize());b.crossVectors(c,a);g[0]=a.x;g[4]=b.x;g[8]=c.x;g[1]=a.y;g[5]=b.y;g[9]=c.y;g[2]=a.z;g[6]=b.z;g[10]=c.z;return this}}(),multiply:function(a,b){return void 0!==b?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements,e=this.elements,f=c[0],g=c[4],h=c[8], -k=c[12],n=c[1],p=c[5],q=c[9],m=c[13],t=c[2],s=c[6],r=c[10],u=c[14],v=c[3],y=c[7],C=c[11],c=c[15],x=d[0],F=d[4],z=d[8],G=d[12],E=d[1],w=d[5],D=d[9],A=d[13],U=d[2],M=d[6],K=d[10],L=d[14],N=d[3],T=d[7],Q=d[11],d=d[15];e[0]=f*x+g*E+h*U+k*N;e[4]=f*F+g*w+h*M+k*T;e[8]=f*z+g*D+h*K+k*Q;e[12]=f*G+g*A+h*L+k*d;e[1]=n*x+p*E+q*U+m*N;e[5]=n*F+p*w+q*M+m*T;e[9]=n*z+p*D+q*K+m*Q;e[13]=n*G+p*A+q*L+m*d;e[2]=t*x+s*E+r*U+u*N;e[6]=t*F+s*w+r*M+u*T;e[10]=t*z+s*D+r*K+u*Q;e[14]=t*G+s*A+r*L+u*d;e[3]=v*x+y*E+C*U+c*N;e[7]=v*F+ -y*w+C*M+c*T;e[11]=v*z+y*D+C*K+c*Q;e[15]=v*G+y*A+C*L+c*d;return this},multiplyToArray:function(a,b,c){var d=this.elements;this.multiplyMatrices(a,b);c[0]=d[0];c[1]=d[1];c[2]=d[2];c[3]=d[3];c[4]=d[4];c[5]=d[5];c[6]=d[6];c[7]=d[7];c[8]=d[8];c[9]=d[9];c[10]=d[10];c[11]=d[11];c[12]=d[12];c[13]=d[13];c[14]=d[14];c[15]=d[15];return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*=a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*= -a;b[15]*=a;return this},multiplyVector3:function(a){console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.");return a.applyProjection(this)},multiplyVector4:function(a){console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},multiplyVector3Array:function(a){console.warn("THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."); -return this.applyToVector3Array(a)},applyToVector3Array:function(){var a=new THREE.Vector3;return function(b,c,d){void 0===c&&(c=0);void 0===d&&(d=b.length);for(var e=0;e<d;e+=3,c+=3)a.x=b[c],a.y=b[c+1],a.z=b[c+2],a.applyMatrix4(this),b[c]=a.x,b[c+1]=a.y,b[c+2]=a.z;return b}}(),rotateAxis:function(a){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.");a.transformDirection(this)},crossVector:function(a){console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."); -return a.applyMatrix4(this)},determinant:function(){var a=this.elements,b=a[0],c=a[4],d=a[8],e=a[12],f=a[1],g=a[5],h=a[9],k=a[13],n=a[2],p=a[6],q=a[10],m=a[14];return a[3]*(+e*h*p-d*k*p-e*g*q+c*k*q+d*g*m-c*h*m)+a[7]*(+b*h*m-b*k*q+e*f*q-d*f*m+d*k*n-e*h*n)+a[11]*(+b*k*p-b*g*m-e*f*p+c*f*m+e*g*n-c*k*n)+a[15]*(-d*g*n-b*h*p+b*g*q+d*f*p-c*f*q+c*h*n)},transpose:function(){var a=this.elements,b;b=a[1];a[1]=a[4];a[4]=b;b=a[2];a[2]=a[8];a[8]=b;b=a[6];a[6]=a[9];a[9]=b;b=a[3];a[3]=a[12];a[12]=b;b=a[7];a[7]=a[13]; -a[13]=b;b=a[11];a[11]=a[14];a[14]=b;return this},flattenToArrayOffset:function(a,b){var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];a[b+9]=c[9];a[b+10]=c[10];a[b+11]=c[11];a[b+12]=c[12];a[b+13]=c[13];a[b+14]=c[14];a[b+15]=c[15];return a},getPosition:function(){var a=new THREE.Vector3;return function(){console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.");var b= -this.elements;return a.set(b[12],b[13],b[14])}}(),setPosition:function(a){var b=this.elements;b[12]=a.x;b[13]=a.y;b[14]=a.z;return this},getInverse:function(a,b){var c=this.elements,d=a.elements,e=d[0],f=d[4],g=d[8],h=d[12],k=d[1],n=d[5],p=d[9],q=d[13],m=d[2],t=d[6],s=d[10],r=d[14],u=d[3],v=d[7],y=d[11],d=d[15];c[0]=p*r*v-q*s*v+q*t*y-n*r*y-p*t*d+n*s*d;c[4]=h*s*v-g*r*v-h*t*y+f*r*y+g*t*d-f*s*d;c[8]=g*q*v-h*p*v+h*n*y-f*q*y-g*n*d+f*p*d;c[12]=h*p*t-g*q*t-h*n*s+f*q*s+g*n*r-f*p*r;c[1]=q*s*u-p*r*u-q*m*y+ -k*r*y+p*m*d-k*s*d;c[5]=g*r*u-h*s*u+h*m*y-e*r*y-g*m*d+e*s*d;c[9]=h*p*u-g*q*u-h*k*y+e*q*y+g*k*d-e*p*d;c[13]=g*q*m-h*p*m+h*k*s-e*q*s-g*k*r+e*p*r;c[2]=n*r*u-q*t*u+q*m*v-k*r*v-n*m*d+k*t*d;c[6]=h*t*u-f*r*u-h*m*v+e*r*v+f*m*d-e*t*d;c[10]=f*q*u-h*n*u+h*k*v-e*q*v-f*k*d+e*n*d;c[14]=h*n*m-f*q*m-h*k*t+e*q*t+f*k*r-e*n*r;c[3]=p*t*u-n*s*u-p*m*v+k*s*v+n*m*y-k*t*y;c[7]=f*s*u-g*t*u+g*m*v-e*s*v-f*m*y+e*t*y;c[11]=g*n*u-f*p*u-g*k*v+e*p*v+f*k*y-e*n*y;c[15]=f*p*m-g*n*m+g*k*t-e*p*t-f*k*s+e*n*s;c=e*c[0]+k*c[4]+m*c[8]+u*c[12]; -if(0==c){if(b)throw Error("Matrix4.getInverse(): can't invert matrix, determinant is 0");console.warn("Matrix4.getInverse(): can't invert matrix, determinant is 0");this.identity();return this}this.multiplyScalar(1/c);return this},translate:function(a){console.warn("THREE.Matrix4: .translate() has been removed.")},rotateX:function(a){console.warn("THREE.Matrix4: .rotateX() has been removed.")},rotateY:function(a){console.warn("THREE.Matrix4: .rotateY() has been removed.")},rotateZ:function(a){console.warn("THREE.Matrix4: .rotateZ() has been removed.")}, -rotateByAxis:function(a,b){console.warn("THREE.Matrix4: .rotateByAxis() has been removed.")},scale:function(a){var b=this.elements,c=a.x,d=a.y;a=a.z;b[0]*=c;b[4]*=d;b[8]*=a;b[1]*=c;b[5]*=d;b[9]*=a;b[2]*=c;b[6]*=d;b[10]*=a;b[3]*=c;b[7]*=d;b[11]*=a;return this},getMaxScaleOnAxis:function(){var a=this.elements;return Math.sqrt(Math.max(a[0]*a[0]+a[1]*a[1]+a[2]*a[2],Math.max(a[4]*a[4]+a[5]*a[5]+a[6]*a[6],a[8]*a[8]+a[9]*a[9]+a[10]*a[10])))},makeTranslation:function(a,b,c){this.set(1,0,0,a,0,1,0,b,0,0, -1,c,0,0,0,1);return this},makeRotationX:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1);return this},makeRotationY:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1);return this},makeRotationZ:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1);return this},makeRotationAxis:function(a,b){var c=Math.cos(b),d=Math.sin(b),e=1-c,f=a.x,g=a.y,h=a.z,k=e*f,n=e*g;this.set(k*f+c,k*g-d*h,k*h+d*g,0,k* -g+d*h,n*g+c,n*h-d*f,0,k*h-d*g,n*h+d*f,e*h*h+c,0,0,0,0,1);return this},makeScale:function(a,b,c){this.set(a,0,0,0,0,b,0,0,0,0,c,0,0,0,0,1);return this},compose:function(a,b,c){this.makeRotationFromQuaternion(b);this.scale(c);this.setPosition(a);return this},decompose:function(){var a=new THREE.Vector3,b=new THREE.Matrix4;return function(c,d,e){var f=this.elements,g=a.set(f[0],f[1],f[2]).length(),h=a.set(f[4],f[5],f[6]).length(),k=a.set(f[8],f[9],f[10]).length();0>this.determinant()&&(g=-g);c.x=f[12]; -c.y=f[13];c.z=f[14];b.elements.set(this.elements);c=1/g;var f=1/h,n=1/k;b.elements[0]*=c;b.elements[1]*=c;b.elements[2]*=c;b.elements[4]*=f;b.elements[5]*=f;b.elements[6]*=f;b.elements[8]*=n;b.elements[9]*=n;b.elements[10]*=n;d.setFromRotationMatrix(b);e.x=g;e.y=h;e.z=k;return this}}(),makeFrustum:function(a,b,c,d,e,f){var g=this.elements;g[0]=2*e/(b-a);g[4]=0;g[8]=(b+a)/(b-a);g[12]=0;g[1]=0;g[5]=2*e/(d-c);g[9]=(d+c)/(d-c);g[13]=0;g[2]=0;g[6]=0;g[10]=-(f+e)/(f-e);g[14]=-2*f*e/(f-e);g[3]=0;g[7]=0; -g[11]=-1;g[15]=0;return this},makePerspective:function(a,b,c,d){a=c*Math.tan(THREE.Math.degToRad(.5*a));var e=-a;return this.makeFrustum(e*b,a*b,e,a,c,d)},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=b-a,k=c-d,n=f-e;g[0]=2/h;g[4]=0;g[8]=0;g[12]=-((b+a)/h);g[1]=0;g[5]=2/k;g[9]=0;g[13]=-((c+d)/k);g[2]=0;g[6]=0;g[10]=-2/n;g[14]=-((f+e)/n);g[3]=0;g[7]=0;g[11]=0;g[15]=1;return this},fromArray:function(a){this.elements.set(a);return this},toArray:function(){var a=this.elements;return[a[0], +f=1/a.set(b[8],b[9],b[10]).length();c[0]=b[0]*d;c[1]=b[1]*d;c[2]=b[2]*d;c[4]=b[4]*e;c[5]=b[5]*e;c[6]=b[6]*e;c[8]=b[8]*f;c[9]=b[9]*f;c[10]=b[10]*f;return this}}(),makeRotationFromEuler:function(a){!1===a instanceof THREE.Euler&&THREE.error("THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var b=this.elements,c=a.x,d=a.y,e=a.z,f=Math.cos(c),c=Math.sin(c),g=Math.cos(d),d=Math.sin(d),h=Math.cos(e),e=Math.sin(e);if("XYZ"===a.order){a=f*h;var k=f*e, +l=c*h,p=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=k+l*d;b[5]=a-p*d;b[9]=-c*g;b[2]=p-a*d;b[6]=l+k*d;b[10]=f*g}else"YXZ"===a.order?(a=g*h,k=g*e,l=d*h,p=d*e,b[0]=a+p*c,b[4]=l*c-k,b[8]=f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=k*c-l,b[6]=p+a*c,b[10]=f*g):"ZXY"===a.order?(a=g*h,k=g*e,l=d*h,p=d*e,b[0]=a-p*c,b[4]=-f*e,b[8]=l+k*c,b[1]=k+l*c,b[5]=f*h,b[9]=p-a*c,b[2]=-f*d,b[6]=c,b[10]=f*g):"ZYX"===a.order?(a=f*h,k=f*e,l=c*h,p=c*e,b[0]=g*h,b[4]=l*d-k,b[8]=a*d+p,b[1]=g*e,b[5]=p*d+a,b[9]=k*d-l,b[2]=-d,b[6]=c*g,b[10]=f*g):"YZX"=== +a.order?(a=f*g,k=f*d,l=c*g,p=c*d,b[0]=g*h,b[4]=p-a*e,b[8]=l*e+k,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=k*e+l,b[10]=a-p*e):"XZY"===a.order&&(a=f*g,k=f*d,l=c*g,p=c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=a*e+p,b[5]=f*h,b[9]=k*e-l,b[2]=l*e-k,b[6]=c*h,b[10]=p*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},setRotationFromQuaternion:function(a){THREE.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().");return this.makeRotationFromQuaternion(a)}, +makeRotationFromQuaternion:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z,f=a.w,g=c+c,h=d+d,k=e+e;a=c*g;var l=c*h,c=c*k,p=d*h,d=d*k,e=e*k,g=f*g,h=f*h,f=f*k;b[0]=1-(p+e);b[4]=l-f;b[8]=c+h;b[1]=l+f;b[5]=1-(a+e);b[9]=d-g;b[2]=c-h;b[6]=d+g;b[10]=1-(a+p);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},lookAt:function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3;return function(d,e,f){var g=this.elements;c.subVectors(d,e).normalize();0===c.length()&&(c.z=1);a.crossVectors(f, +c).normalize();0===a.length()&&(c.x+=1E-4,a.crossVectors(f,c).normalize());b.crossVectors(c,a);g[0]=a.x;g[4]=b.x;g[8]=c.x;g[1]=a.y;g[5]=b.y;g[9]=c.y;g[2]=a.z;g[6]=b.z;g[10]=c.z;return this}}(),multiply:function(a,b){return void 0!==b?(THREE.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements,e=this.elements,f=c[0],g=c[4],h=c[8], +k=c[12],l=c[1],p=c[5],q=c[9],n=c[13],t=c[2],r=c[6],s=c[10],u=c[14],v=c[3],x=c[7],D=c[11],c=c[15],w=d[0],y=d[4],A=d[8],E=d[12],G=d[1],F=d[5],z=d[9],I=d[13],U=d[2],M=d[6],H=d[10],L=d[14],P=d[3],N=d[7],R=d[11],d=d[15];e[0]=f*w+g*G+h*U+k*P;e[4]=f*y+g*F+h*M+k*N;e[8]=f*A+g*z+h*H+k*R;e[12]=f*E+g*I+h*L+k*d;e[1]=l*w+p*G+q*U+n*P;e[5]=l*y+p*F+q*M+n*N;e[9]=l*A+p*z+q*H+n*R;e[13]=l*E+p*I+q*L+n*d;e[2]=t*w+r*G+s*U+u*P;e[6]=t*y+r*F+s*M+u*N;e[10]=t*A+r*z+s*H+u*R;e[14]=t*E+r*I+s*L+u*d;e[3]=v*w+x*G+D*U+c*P;e[7]=v*y+ +x*F+D*M+c*N;e[11]=v*A+x*z+D*H+c*R;e[15]=v*E+x*I+D*L+c*d;return this},multiplyToArray:function(a,b,c){var d=this.elements;this.multiplyMatrices(a,b);c[0]=d[0];c[1]=d[1];c[2]=d[2];c[3]=d[3];c[4]=d[4];c[5]=d[5];c[6]=d[6];c[7]=d[7];c[8]=d[8];c[9]=d[9];c[10]=d[10];c[11]=d[11];c[12]=d[12];c[13]=d[13];c[14]=d[14];c[15]=d[15];return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*=a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*= +a;b[15]*=a;return this},multiplyVector3:function(a){THREE.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.");return a.applyProjection(this)},multiplyVector4:function(a){THREE.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},multiplyVector3Array:function(a){THREE.warn("THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."); +return this.applyToVector3Array(a)},applyToVector3Array:function(){var a=new THREE.Vector3;return function(b,c,d){void 0===c&&(c=0);void 0===d&&(d=b.length);for(var e=0;e<d;e+=3,c+=3)a.x=b[c],a.y=b[c+1],a.z=b[c+2],a.applyMatrix4(this),b[c]=a.x,b[c+1]=a.y,b[c+2]=a.z;return b}}(),rotateAxis:function(a){THREE.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.");a.transformDirection(this)},crossVector:function(a){THREE.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."); +return a.applyMatrix4(this)},determinant:function(){var a=this.elements,b=a[0],c=a[4],d=a[8],e=a[12],f=a[1],g=a[5],h=a[9],k=a[13],l=a[2],p=a[6],q=a[10],n=a[14];return a[3]*(+e*h*p-d*k*p-e*g*q+c*k*q+d*g*n-c*h*n)+a[7]*(+b*h*n-b*k*q+e*f*q-d*f*n+d*k*l-e*h*l)+a[11]*(+b*k*p-b*g*n-e*f*p+c*f*n+e*g*l-c*k*l)+a[15]*(-d*g*l-b*h*p+b*g*q+d*f*p-c*f*q+c*h*l)},transpose:function(){var a=this.elements,b;b=a[1];a[1]=a[4];a[4]=b;b=a[2];a[2]=a[8];a[8]=b;b=a[6];a[6]=a[9];a[9]=b;b=a[3];a[3]=a[12];a[12]=b;b=a[7];a[7]=a[13]; +a[13]=b;b=a[11];a[11]=a[14];a[14]=b;return this},flattenToArrayOffset:function(a,b){var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];a[b+9]=c[9];a[b+10]=c[10];a[b+11]=c[11];a[b+12]=c[12];a[b+13]=c[13];a[b+14]=c[14];a[b+15]=c[15];return a},getPosition:function(){var a=new THREE.Vector3;return function(){THREE.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.");var b= +this.elements;return a.set(b[12],b[13],b[14])}}(),setPosition:function(a){var b=this.elements;b[12]=a.x;b[13]=a.y;b[14]=a.z;return this},getInverse:function(a,b){var c=this.elements,d=a.elements,e=d[0],f=d[4],g=d[8],h=d[12],k=d[1],l=d[5],p=d[9],q=d[13],n=d[2],t=d[6],r=d[10],s=d[14],u=d[3],v=d[7],x=d[11],d=d[15];c[0]=p*s*v-q*r*v+q*t*x-l*s*x-p*t*d+l*r*d;c[4]=h*r*v-g*s*v-h*t*x+f*s*x+g*t*d-f*r*d;c[8]=g*q*v-h*p*v+h*l*x-f*q*x-g*l*d+f*p*d;c[12]=h*p*t-g*q*t-h*l*r+f*q*r+g*l*s-f*p*s;c[1]=q*r*u-p*s*u-q*n*x+ +k*s*x+p*n*d-k*r*d;c[5]=g*s*u-h*r*u+h*n*x-e*s*x-g*n*d+e*r*d;c[9]=h*p*u-g*q*u-h*k*x+e*q*x+g*k*d-e*p*d;c[13]=g*q*n-h*p*n+h*k*r-e*q*r-g*k*s+e*p*s;c[2]=l*s*u-q*t*u+q*n*v-k*s*v-l*n*d+k*t*d;c[6]=h*t*u-f*s*u-h*n*v+e*s*v+f*n*d-e*t*d;c[10]=f*q*u-h*l*u+h*k*v-e*q*v-f*k*d+e*l*d;c[14]=h*l*n-f*q*n-h*k*t+e*q*t+f*k*s-e*l*s;c[3]=p*t*u-l*r*u-p*n*v+k*r*v+l*n*x-k*t*x;c[7]=f*r*u-g*t*u+g*n*v-e*r*v-f*n*x+e*t*x;c[11]=g*l*u-f*p*u-g*k*v+e*p*v+f*k*x-e*l*x;c[15]=f*p*n-g*l*n+g*k*t-e*p*t-f*k*r+e*l*r;c=e*c[0]+k*c[4]+n*c[8]+u*c[12]; +if(0==c){if(b)throw Error("THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0");THREE.warn("THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0");this.identity();return this}this.multiplyScalar(1/c);return this},translate:function(a){THREE.error("THREE.Matrix4: .translate() has been removed.")},rotateX:function(a){THREE.error("THREE.Matrix4: .rotateX() has been removed.")},rotateY:function(a){THREE.error("THREE.Matrix4: .rotateY() has been removed.")},rotateZ:function(a){THREE.error("THREE.Matrix4: .rotateZ() has been removed.")}, +rotateByAxis:function(a,b){THREE.error("THREE.Matrix4: .rotateByAxis() has been removed.")},scale:function(a){var b=this.elements,c=a.x,d=a.y;a=a.z;b[0]*=c;b[4]*=d;b[8]*=a;b[1]*=c;b[5]*=d;b[9]*=a;b[2]*=c;b[6]*=d;b[10]*=a;b[3]*=c;b[7]*=d;b[11]*=a;return this},getMaxScaleOnAxis:function(){var a=this.elements;return Math.sqrt(Math.max(a[0]*a[0]+a[1]*a[1]+a[2]*a[2],Math.max(a[4]*a[4]+a[5]*a[5]+a[6]*a[6],a[8]*a[8]+a[9]*a[9]+a[10]*a[10])))},makeTranslation:function(a,b,c){this.set(1,0,0,a,0,1,0,b,0,0,1, +c,0,0,0,1);return this},makeRotationX:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1);return this},makeRotationY:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1);return this},makeRotationZ:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1);return this},makeRotationAxis:function(a,b){var c=Math.cos(b),d=Math.sin(b),e=1-c,f=a.x,g=a.y,h=a.z,k=e*f,l=e*g;this.set(k*f+c,k*g-d*h,k*h+d*g,0,k*g+ +d*h,l*g+c,l*h-d*f,0,k*h-d*g,l*h+d*f,e*h*h+c,0,0,0,0,1);return this},makeScale:function(a,b,c){this.set(a,0,0,0,0,b,0,0,0,0,c,0,0,0,0,1);return this},compose:function(a,b,c){this.makeRotationFromQuaternion(b);this.scale(c);this.setPosition(a);return this},decompose:function(){var a=new THREE.Vector3,b=new THREE.Matrix4;return function(c,d,e){var f=this.elements,g=a.set(f[0],f[1],f[2]).length(),h=a.set(f[4],f[5],f[6]).length(),k=a.set(f[8],f[9],f[10]).length();0>this.determinant()&&(g=-g);c.x=f[12]; +c.y=f[13];c.z=f[14];b.elements.set(this.elements);c=1/g;var f=1/h,l=1/k;b.elements[0]*=c;b.elements[1]*=c;b.elements[2]*=c;b.elements[4]*=f;b.elements[5]*=f;b.elements[6]*=f;b.elements[8]*=l;b.elements[9]*=l;b.elements[10]*=l;d.setFromRotationMatrix(b);e.x=g;e.y=h;e.z=k;return this}}(),makeFrustum:function(a,b,c,d,e,f){var g=this.elements;g[0]=2*e/(b-a);g[4]=0;g[8]=(b+a)/(b-a);g[12]=0;g[1]=0;g[5]=2*e/(d-c);g[9]=(d+c)/(d-c);g[13]=0;g[2]=0;g[6]=0;g[10]=-(f+e)/(f-e);g[14]=-2*f*e/(f-e);g[3]=0;g[7]=0; +g[11]=-1;g[15]=0;return this},makePerspective:function(a,b,c,d){a=c*Math.tan(THREE.Math.degToRad(.5*a));var e=-a;return this.makeFrustum(e*b,a*b,e,a,c,d)},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=b-a,k=c-d,l=f-e;g[0]=2/h;g[4]=0;g[8]=0;g[12]=-((b+a)/h);g[1]=0;g[5]=2/k;g[9]=0;g[13]=-((c+d)/k);g[2]=0;g[6]=0;g[10]=-2/l;g[14]=-((f+e)/l);g[3]=0;g[7]=0;g[11]=0;g[15]=1;return this},fromArray:function(a){this.elements.set(a);return this},toArray:function(){var a=this.elements;return[a[0], a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]]},clone:function(){return(new THREE.Matrix4).fromArray(this.elements)}};THREE.Ray=function(a,b){this.origin=void 0!==a?a:new THREE.Vector3;this.direction=void 0!==b?b:new THREE.Vector3}; THREE.Ray.prototype={constructor:THREE.Ray,set:function(a,b){this.origin.copy(a);this.direction.copy(b);return this},copy:function(a){this.origin.copy(a.origin);this.direction.copy(a.direction);return this},at:function(a,b){return(b||new THREE.Vector3).copy(this.direction).multiplyScalar(a).add(this.origin)},recast:function(){var a=new THREE.Vector3;return function(b){this.origin.copy(this.at(b,a));return this}}(),closestPointToPoint:function(a,b){var c=b||new THREE.Vector3;c.subVectors(a,this.origin); var d=c.dot(this.direction);return 0>d?c.copy(this.origin):c.copy(this.direction).multiplyScalar(d).add(this.origin)},distanceToPoint:function(){var a=new THREE.Vector3;return function(b){var c=a.subVectors(b,this.origin).dot(this.direction);if(0>c)return this.origin.distanceTo(b);a.copy(this.direction).multiplyScalar(c).add(this.origin);return a.distanceTo(b)}}(),distanceSqToSegment:function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3;return function(d,e,f,g){a.copy(d).add(e).multiplyScalar(.5); -b.copy(e).sub(d).normalize();c.copy(this.origin).sub(a);var h=.5*d.distanceTo(e),k=-this.direction.dot(b),n=c.dot(this.direction),p=-c.dot(b),q=c.lengthSq(),m=Math.abs(1-k*k),t;0<m?(d=k*p-n,e=k*n-p,t=h*m,0<=d?e>=-t?e<=t?(h=1/m,d*=h,e*=h,k=d*(d+k*e+2*n)+e*(k*d+e+2*p)+q):(e=h,d=Math.max(0,-(k*e+n)),k=-d*d+e*(e+2*p)+q):(e=-h,d=Math.max(0,-(k*e+n)),k=-d*d+e*(e+2*p)+q):e<=-t?(d=Math.max(0,-(-k*h+n)),e=0<d?-h:Math.min(Math.max(-h,-p),h),k=-d*d+e*(e+2*p)+q):e<=t?(d=0,e=Math.min(Math.max(-h,-p),h),k=e*(e+ -2*p)+q):(d=Math.max(0,-(k*h+n)),e=0<d?h:Math.min(Math.max(-h,-p),h),k=-d*d+e*(e+2*p)+q)):(e=0<k?-h:h,d=Math.max(0,-(k*e+n)),k=-d*d+e*(e+2*p)+q);f&&f.copy(this.direction).multiplyScalar(d).add(this.origin);g&&g.copy(b).multiplyScalar(e).add(a);return k}}(),isIntersectionSphere:function(a){return this.distanceToPoint(a.center)<=a.radius},intersectSphere:function(){var a=new THREE.Vector3;return function(b,c){a.subVectors(b.center,this.origin);var d=a.dot(this.direction),e=a.dot(a)-d*d,f=b.radius*b.radius; +b.copy(e).sub(d).normalize();c.copy(this.origin).sub(a);var h=.5*d.distanceTo(e),k=-this.direction.dot(b),l=c.dot(this.direction),p=-c.dot(b),q=c.lengthSq(),n=Math.abs(1-k*k),t;0<n?(d=k*p-l,e=k*l-p,t=h*n,0<=d?e>=-t?e<=t?(h=1/n,d*=h,e*=h,k=d*(d+k*e+2*l)+e*(k*d+e+2*p)+q):(e=h,d=Math.max(0,-(k*e+l)),k=-d*d+e*(e+2*p)+q):(e=-h,d=Math.max(0,-(k*e+l)),k=-d*d+e*(e+2*p)+q):e<=-t?(d=Math.max(0,-(-k*h+l)),e=0<d?-h:Math.min(Math.max(-h,-p),h),k=-d*d+e*(e+2*p)+q):e<=t?(d=0,e=Math.min(Math.max(-h,-p),h),k=e*(e+ +2*p)+q):(d=Math.max(0,-(k*h+l)),e=0<d?h:Math.min(Math.max(-h,-p),h),k=-d*d+e*(e+2*p)+q)):(e=0<k?-h:h,d=Math.max(0,-(k*e+l)),k=-d*d+e*(e+2*p)+q);f&&f.copy(this.direction).multiplyScalar(d).add(this.origin);g&&g.copy(b).multiplyScalar(e).add(a);return k}}(),isIntersectionSphere:function(a){return this.distanceToPoint(a.center)<=a.radius},intersectSphere:function(){var a=new THREE.Vector3;return function(b,c){a.subVectors(b.center,this.origin);var d=a.dot(this.direction),e=a.dot(a)-d*d,f=b.radius*b.radius; if(e>f)return null;f=Math.sqrt(f-e);e=d-f;d+=f;return 0>e&&0>d?null:0>e?this.at(d,c):this.at(e,c)}}(),isIntersectionPlane:function(a){var b=a.distanceToPoint(this.origin);return 0===b||0>a.normal.dot(this.direction)*b?!0:!1},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0==b)return 0==a.distanceToPoint(this.origin)?0:null;a=-(this.origin.dot(a.normal)+a.constant)/b;return 0<=a?a:null},intersectPlane:function(a,b){var c=this.distanceToPlane(a);return null===c?null:this.at(c,b)}, isIntersectionBox:function(){var a=new THREE.Vector3;return function(b){return null!==this.intersectBox(b,a)}}(),intersectBox:function(a,b){var c,d,e,f,g;d=1/this.direction.x;f=1/this.direction.y;g=1/this.direction.z;var h=this.origin;0<=d?(c=(a.min.x-h.x)*d,d*=a.max.x-h.x):(c=(a.max.x-h.x)*d,d*=a.min.x-h.x);0<=f?(e=(a.min.y-h.y)*f,f*=a.max.y-h.y):(e=(a.max.y-h.y)*f,f*=a.min.y-h.y);if(c>f||e>d)return null;if(e>c||c!==c)c=e;if(f<d||d!==d)d=f;0<=g?(e=(a.min.z-h.z)*g,g*=a.max.z-h.z):(e=(a.max.z-h.z)* g,g*=a.min.z-h.z);if(c>g||e>d)return null;if(e>c||c!==c)c=e;if(g<d||d!==d)d=g;return 0>d?null:this.at(0<=c?c:d,b)},intersectTriangle:function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3,d=new THREE.Vector3;return function(e,f,g,h,k){b.subVectors(f,e);c.subVectors(g,e);d.crossVectors(b,c);f=this.direction.dot(d);if(0<f){if(h)return null;h=1}else if(0>f)h=-1,f=-f;else return null;a.subVectors(this.origin,e);e=h*this.direction.dot(c.crossVectors(a,c));if(0>e)return null;g=h*this.direction.dot(b.cross(a)); @@ -126,8 +128,8 @@ THREE.Sphere.prototype={constructor:THREE.Sphere,set:function(a,b){this.center.c this.radius*this.radius},distanceToPoint:function(a){return a.distanceTo(this.center)-this.radius},intersectsSphere:function(a){var b=this.radius+a.radius;return a.center.distanceToSquared(this.center)<=b*b},clampPoint:function(a,b){var c=this.center.distanceToSquared(a),d=b||new THREE.Vector3;d.copy(a);c>this.radius*this.radius&&(d.sub(this.center).normalize(),d.multiplyScalar(this.radius).add(this.center));return d},getBoundingBox:function(a){a=a||new THREE.Box3;a.set(this.center,this.center);a.expandByScalar(this.radius); return a},applyMatrix4:function(a){this.center.applyMatrix4(a);this.radius*=a.getMaxScaleOnAxis();return this},translate:function(a){this.center.add(a);return this},equals:function(a){return a.center.equals(this.center)&&a.radius===this.radius},clone:function(){return(new THREE.Sphere).copy(this)}}; THREE.Frustum=function(a,b,c,d,e,f){this.planes=[void 0!==a?a:new THREE.Plane,void 0!==b?b:new THREE.Plane,void 0!==c?c:new THREE.Plane,void 0!==d?d:new THREE.Plane,void 0!==e?e:new THREE.Plane,void 0!==f?f:new THREE.Plane]}; -THREE.Frustum.prototype={constructor:THREE.Frustum,set:function(a,b,c,d,e,f){var g=this.planes;g[0].copy(a);g[1].copy(b);g[2].copy(c);g[3].copy(d);g[4].copy(e);g[5].copy(f);return this},copy:function(a){for(var b=this.planes,c=0;6>c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],k=c[6],n=c[7],p=c[8],q=c[9],m=c[10],t=c[11],s=c[12],r=c[13],u=c[14],c=c[15];b[0].setComponents(f-a,n-g,t-p,c-s).normalize();b[1].setComponents(f+ -a,n+g,t+p,c+s).normalize();b[2].setComponents(f+d,n+h,t+q,c+r).normalize();b[3].setComponents(f-d,n-h,t-q,c-r).normalize();b[4].setComponents(f-e,n-k,t-m,c-u).normalize();b[5].setComponents(f+e,n+k,t+m,c+u).normalize();return this},intersectsObject:function(){var a=new THREE.Sphere;return function(b){var c=b.geometry;null===c.boundingSphere&&c.computeBoundingSphere();a.copy(c.boundingSphere);a.applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSphere:function(a){var b=this.planes, +THREE.Frustum.prototype={constructor:THREE.Frustum,set:function(a,b,c,d,e,f){var g=this.planes;g[0].copy(a);g[1].copy(b);g[2].copy(c);g[3].copy(d);g[4].copy(e);g[5].copy(f);return this},copy:function(a){for(var b=this.planes,c=0;6>c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],k=c[6],l=c[7],p=c[8],q=c[9],n=c[10],t=c[11],r=c[12],s=c[13],u=c[14],c=c[15];b[0].setComponents(f-a,l-g,t-p,c-r).normalize();b[1].setComponents(f+ +a,l+g,t+p,c+r).normalize();b[2].setComponents(f+d,l+h,t+q,c+s).normalize();b[3].setComponents(f-d,l-h,t-q,c-s).normalize();b[4].setComponents(f-e,l-k,t-n,c-u).normalize();b[5].setComponents(f+e,l+k,t+n,c+u).normalize();return this},intersectsObject:function(){var a=new THREE.Sphere;return function(b){var c=b.geometry;null===c.boundingSphere&&c.computeBoundingSphere();a.copy(c.boundingSphere);a.applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSphere:function(a){var b=this.planes, c=a.center;a=-a.radius;for(var d=0;6>d;d++)if(b[d].distanceToPoint(c)<a)return!1;return!0},intersectsBox:function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(c){for(var d=this.planes,e=0;6>e;e++){var f=d[e];a.x=0<f.normal.x?c.min.x:c.max.x;b.x=0<f.normal.x?c.max.x:c.min.x;a.y=0<f.normal.y?c.min.y:c.max.y;b.y=0<f.normal.y?c.max.y:c.min.y;a.z=0<f.normal.z?c.min.z:c.max.z;b.z=0<f.normal.z?c.max.z:c.min.z;var g=f.distanceToPoint(a),f=f.distanceToPoint(b);if(0>g&&0>f)return!1}return!0}}(), containsPoint:function(a){for(var b=this.planes,c=0;6>c;c++)if(0>b[c].distanceToPoint(a))return!1;return!0},clone:function(){return(new THREE.Frustum).copy(this)}};THREE.Plane=function(a,b){this.normal=void 0!==a?a:new THREE.Vector3(1,0,0);this.constant=void 0!==b?b:0}; THREE.Plane.prototype={constructor:THREE.Plane,set:function(a,b){this.normal.copy(a);this.constant=b;return this},setComponents:function(a,b,c,d){this.normal.set(a,b,c);this.constant=d;return this},setFromNormalAndCoplanarPoint:function(a,b){this.normal.copy(a);this.constant=-b.dot(this.normal);return this},setFromCoplanarPoints:function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(c,d,e){d=a.subVectors(e,d).cross(b.subVectors(c,d)).normalize();this.setFromNormalAndCoplanarPoint(d, @@ -137,12 +139,12 @@ coplanarPoint:function(a){return(a||new THREE.Vector3).copy(this.normal).multipl a.constant==this.constant},clone:function(){return(new THREE.Plane).copy(this)}}; THREE.Math={generateUUID:function(){var a="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),b=Array(36),c=0,d;return function(){for(var e=0;36>e;e++)8==e||13==e||18==e||23==e?b[e]="-":14==e?b[e]="4":(2>=c&&(c=33554432+16777216*Math.random()|0),d=c&15,c>>=4,b[e]=a[19==e?d&3|8:d]);return b.join("")}}(),clamp:function(a,b,c){return a<b?b:a>c?c:a},clampBottom:function(a,b){return a<b?b:a},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){if(a<= b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*(3-2*a)},smootherstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*a*(a*(6*a-15)+10)},random16:function(){return(65280*Math.random()+255*Math.random())/65535},randInt:function(a,b){return Math.floor(this.randFloat(a,b))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a*(.5-Math.random())},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a= -180/Math.PI;return function(b){return b*a}}(),isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a}}; -THREE.Spline=function(a){function b(a,b,c,d,e,f,g){a=.5*(c-a);d=.5*(d-b);return(2*(b-c)+a+d)*g+(-3*(b-c)-2*a-d)*f+a*e+b}this.points=a;var c=[],d={x:0,y:0,z:0},e,f,g,h,k,n,p,q,m;this.initFromArray=function(a){this.points=[];for(var b=0;b<a.length;b++)this.points[b]={x:a[b][0],y:a[b][1],z:a[b][2]}};this.getPoint=function(a){e=(this.points.length-1)*a;f=Math.floor(e);g=e-f;c[0]=0===f?f:f-1;c[1]=f;c[2]=f>this.points.length-2?this.points.length-1:f+1;c[3]=f>this.points.length-3?this.points.length-1:f+ -2;n=this.points[c[0]];p=this.points[c[1]];q=this.points[c[2]];m=this.points[c[3]];h=g*g;k=g*h;d.x=b(n.x,p.x,q.x,m.x,g,h,k);d.y=b(n.y,p.y,q.y,m.y,g,h,k);d.z=b(n.z,p.z,q.z,m.z,g,h,k);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;a<c;a++)b=this.points[a],d[a]=[b.x,b.y,b.z];return d};this.getLength=function(a){var b,c,d,e=b=b=0,f=new THREE.Vector3,g=new THREE.Vector3,h=[],k=0;h[0]=0;a||(a=100);c=this.points.length*a;f.copy(this.points[0]);for(a=1;a<c;a++)b= -a/c,d=this.getPoint(b),g.copy(d),k+=g.distanceTo(f),f.copy(d),b*=this.points.length-1,b=Math.floor(b),b!=e&&(h[b]=k,e=b);h[h.length]=k;return{chunks:h,total:k}};this.reparametrizeByArcLength=function(a){var b,c,d,e,f,g,h=[],k=new THREE.Vector3,m=this.getLength();h.push(k.copy(this.points[0]).clone());for(b=1;b<this.points.length;b++){c=m.chunks[b]-m.chunks[b-1];g=Math.ceil(a*c/m.total);e=(b-1)/(this.points.length-1);f=b/(this.points.length-1);for(c=1;c<g-1;c++)d=e+1/g*c*(f-e),d=this.getPoint(d),h.push(k.copy(d).clone()); +180/Math.PI;return function(b){return b*a}}(),isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},nextPowerOfTwo:function(a){a--;a|=a>>1;a|=a>>2;a|=a>>4;a|=a>>8;a|=a>>16;a++;return a}}; +THREE.Spline=function(a){function b(a,b,c,d,e,f,g){a=.5*(c-a);d=.5*(d-b);return(2*(b-c)+a+d)*g+(-3*(b-c)-2*a-d)*f+a*e+b}this.points=a;var c=[],d={x:0,y:0,z:0},e,f,g,h,k,l,p,q,n;this.initFromArray=function(a){this.points=[];for(var b=0;b<a.length;b++)this.points[b]={x:a[b][0],y:a[b][1],z:a[b][2]}};this.getPoint=function(a){e=(this.points.length-1)*a;f=Math.floor(e);g=e-f;c[0]=0===f?f:f-1;c[1]=f;c[2]=f>this.points.length-2?this.points.length-1:f+1;c[3]=f>this.points.length-3?this.points.length-1:f+ +2;l=this.points[c[0]];p=this.points[c[1]];q=this.points[c[2]];n=this.points[c[3]];h=g*g;k=g*h;d.x=b(l.x,p.x,q.x,n.x,g,h,k);d.y=b(l.y,p.y,q.y,n.y,g,h,k);d.z=b(l.z,p.z,q.z,n.z,g,h,k);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;a<c;a++)b=this.points[a],d[a]=[b.x,b.y,b.z];return d};this.getLength=function(a){var b,c,d,e=b=b=0,f=new THREE.Vector3,g=new THREE.Vector3,h=[],k=0;h[0]=0;a||(a=100);c=this.points.length*a;f.copy(this.points[0]);for(a=1;a<c;a++)b= +a/c,d=this.getPoint(b),g.copy(d),k+=g.distanceTo(f),f.copy(d),b*=this.points.length-1,b=Math.floor(b),b!=e&&(h[b]=k,e=b);h[h.length]=k;return{chunks:h,total:k}};this.reparametrizeByArcLength=function(a){var b,c,d,e,f,g,h=[],k=new THREE.Vector3,n=this.getLength();h.push(k.copy(this.points[0]).clone());for(b=1;b<this.points.length;b++){c=n.chunks[b]-n.chunks[b-1];g=Math.ceil(a*c/n.total);e=(b-1)/(this.points.length-1);f=b/(this.points.length-1);for(c=1;c<g-1;c++)d=e+1/g*c*(f-e),d=this.getPoint(d),h.push(k.copy(d).clone()); h.push(k.copy(this.points[b]).clone())}this.points=h}};THREE.Triangle=function(a,b,c){this.a=void 0!==a?a:new THREE.Vector3;this.b=void 0!==b?b:new THREE.Vector3;this.c=void 0!==c?c:new THREE.Vector3};THREE.Triangle.normal=function(){var a=new THREE.Vector3;return function(b,c,d,e){e=e||new THREE.Vector3;e.subVectors(d,c);a.subVectors(b,c);e.cross(a);b=e.lengthSq();return 0<b?e.multiplyScalar(1/Math.sqrt(b)):e.set(0,0,0)}}(); -THREE.Triangle.barycoordFromPoint=function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3;return function(d,e,f,g,h){a.subVectors(g,e);b.subVectors(f,e);c.subVectors(d,e);d=a.dot(a);e=a.dot(b);f=a.dot(c);var k=b.dot(b);g=b.dot(c);var n=d*k-e*e;h=h||new THREE.Vector3;if(0==n)return h.set(-2,-1,-1);n=1/n;k=(k*f-e*g)*n;d=(d*g-e*f)*n;return h.set(1-k-d,d,k)}}(); +THREE.Triangle.barycoordFromPoint=function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3;return function(d,e,f,g,h){a.subVectors(g,e);b.subVectors(f,e);c.subVectors(d,e);d=a.dot(a);e=a.dot(b);f=a.dot(c);var k=b.dot(b);g=b.dot(c);var l=d*k-e*e;h=h||new THREE.Vector3;if(0==l)return h.set(-2,-1,-1);l=1/l;k=(k*f-e*g)*l;d=(d*g-e*f)*l;return h.set(1-k-d,d,k)}}(); THREE.Triangle.containsPoint=function(){var a=new THREE.Vector3;return function(b,c,d,e){b=THREE.Triangle.barycoordFromPoint(b,c,d,e,a);return 0<=b.x&&0<=b.y&&1>=b.x+b.y}}(); THREE.Triangle.prototype={constructor:THREE.Triangle,set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(a,b,c,d){this.a.copy(a[b]);this.b.copy(a[c]);this.c.copy(a[d]);return this},copy:function(a){this.a.copy(a.a);this.b.copy(a.b);this.c.copy(a.c);return this},area:function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(){a.subVectors(this.c,this.b);b.subVectors(this.a,this.b);return.5*a.cross(b).length()}}(),midpoint:function(a){return(a|| new THREE.Vector3).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(a){return THREE.Triangle.normal(this.a,this.b,this.c,a)},plane:function(a){return(a||new THREE.Plane).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(a,b){return THREE.Triangle.barycoordFromPoint(a,this.a,this.b,this.c,b)},containsPoint:function(a){return THREE.Triangle.containsPoint(a,this.a,this.b,this.c)},equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)}, @@ -152,79 +154,81 @@ a=.001*(b-this.oldTime);this.oldTime=b;this.elapsedTime+=a}return a}};THREE.Even THREE.EventDispatcher.prototype={constructor:THREE.EventDispatcher,apply:function(a){a.addEventListener=THREE.EventDispatcher.prototype.addEventListener;a.hasEventListener=THREE.EventDispatcher.prototype.hasEventListener;a.removeEventListener=THREE.EventDispatcher.prototype.removeEventListener;a.dispatchEvent=THREE.EventDispatcher.prototype.dispatchEvent},addEventListener:function(a,b){void 0===this._listeners&&(this._listeners={});var c=this._listeners;void 0===c[a]&&(c[a]=[]);-1===c[a].indexOf(b)&& c[a].push(b)},hasEventListener:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;return void 0!==c[a]&&-1!==c[a].indexOf(b)?!0:!1},removeEventListener:function(a,b){if(void 0!==this._listeners){var c=this._listeners[a];if(void 0!==c){var d=c.indexOf(b);-1!==d&&c.splice(d,1)}}},dispatchEvent:function(a){if(void 0!==this._listeners){var b=this._listeners[a.type];if(void 0!==b){a.target=this;for(var c=[],d=b.length,e=0;e<d;e++)c[e]=b[e];for(e=0;e<d;e++)c[e].call(this,a)}}}}; (function(a){a.Raycaster=function(b,c,f,g){this.ray=new a.Ray(b,c);this.near=f||0;this.far=g||Infinity;this.params={Sprite:{},Mesh:{},PointCloud:{threshold:1},LOD:{},Line:{}}};var b=function(a,b){return a.distance-b.distance},c=function(a,b,f,g){a.raycast(b,f);if(!0===g){a=a.children;g=0;for(var h=a.length;g<h;g++)c(a[g],b,f,!0)}};a.Raycaster.prototype={constructor:a.Raycaster,precision:1E-4,linePrecision:1,set:function(a,b){this.ray.set(a,b)},setFromCamera:function(b,c){c instanceof a.PerspectiveCamera? -(this.ray.origin.copy(c.position),this.ray.direction.set(b.x,b.y,.5).unproject(c).sub(c.position).normalize()):c instanceof a.OrthographicCamera?(this.ray.origin.set(b.x,b.y,-1).unproject(c),this.ray.direction.set(0,0,-1).transformDirection(c.matrixWorld)):console.error("THREE.Raycaster: Unsupported camera type.")},intersectObject:function(a,e){var f=[];c(a,this,f,e);f.sort(b);return f},intersectObjects:function(a,e){var f=[];if(!1===a instanceof Array)return console.log("THREE.Raycaster.intersectObjects: objects is not an Array."), -f;for(var g=0,h=a.length;g<h;g++)c(a[g],this,f,e);f.sort(b);return f}}})(THREE); +(this.ray.origin.copy(c.position),this.ray.direction.set(b.x,b.y,.5).unproject(c).sub(c.position).normalize()):c instanceof a.OrthographicCamera?(this.ray.origin.set(b.x,b.y,-1).unproject(c),this.ray.direction.set(0,0,-1).transformDirection(c.matrixWorld)):a.error("THREE.Raycaster: Unsupported camera type.")},intersectObject:function(a,e){var f=[];c(a,this,f,e);f.sort(b);return f},intersectObjects:function(d,e){var f=[];if(!1===d instanceof Array)return a.warn("THREE.Raycaster.intersectObjects: objects is not an Array."), +f;for(var g=0,h=d.length;g<h;g++)c(d[g],this,f,e);f.sort(b);return f}}})(THREE); THREE.Object3D=function(){Object.defineProperty(this,"id",{value:THREE.Object3DIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="Object3D";this.parent=void 0;this.children=[];this.up=THREE.Object3D.DefaultUp.clone();var a=new THREE.Vector3,b=new THREE.Euler,c=new THREE.Quaternion,d=new THREE.Vector3(1,1,1);b.onChange(function(){c.setFromEuler(b,!1)});c.onChange(function(){b.setFromQuaternion(c,void 0,!1)});Object.defineProperties(this,{position:{enumerable:!0,value:a},rotation:{enumerable:!0, -value:b},quaternion:{enumerable:!0,value:c},scale:{enumerable:!0,value:d}});this.rotationAutoUpdate=!0;this.matrix=new THREE.Matrix4;this.matrixWorld=new THREE.Matrix4;this.matrixAutoUpdate=!0;this.matrixWorldNeedsUpdate=!1;this.visible=!0;this.receiveShadow=this.castShadow=!1;this.frustumCulled=!0;this.userData={}};THREE.Object3D.DefaultUp=new THREE.Vector3(0,1,0); -THREE.Object3D.prototype={constructor:THREE.Object3D,get eulerOrder(){console.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order.");return this.rotation.order},set eulerOrder(a){console.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order.");this.rotation.order=a},get useQuaternion(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set useQuaternion(a){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")}, +value:b},quaternion:{enumerable:!0,value:c},scale:{enumerable:!0,value:d}});this.rotationAutoUpdate=!0;this.matrix=new THREE.Matrix4;this.matrixWorld=new THREE.Matrix4;this.matrixAutoUpdate=!0;this.matrixWorldNeedsUpdate=!1;this.visible=!0;this.receiveShadow=this.castShadow=!1;this.frustumCulled=!0;this.renderOrder=0;this.userData={}};THREE.Object3D.DefaultUp=new THREE.Vector3(0,1,0); +THREE.Object3D.prototype={constructor:THREE.Object3D,get eulerOrder(){THREE.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order.");return this.rotation.order},set eulerOrder(a){THREE.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order.");this.rotation.order=a},get useQuaternion(){THREE.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set useQuaternion(a){THREE.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")}, applyMatrix:function(a){this.matrix.multiplyMatrices(a,this.matrix);this.matrix.decompose(this.position,this.quaternion,this.scale)},setRotationFromAxisAngle:function(a,b){this.quaternion.setFromAxisAngle(a,b)},setRotationFromEuler:function(a){this.quaternion.setFromEuler(a,!0)},setRotationFromMatrix:function(a){this.quaternion.setFromRotationMatrix(a)},setRotationFromQuaternion:function(a){this.quaternion.copy(a)},rotateOnAxis:function(){var a=new THREE.Quaternion;return function(b,c){a.setFromAxisAngle(b, c);this.quaternion.multiply(a);return this}}(),rotateX:function(){var a=new THREE.Vector3(1,0,0);return function(b){return this.rotateOnAxis(a,b)}}(),rotateY:function(){var a=new THREE.Vector3(0,1,0);return function(b){return this.rotateOnAxis(a,b)}}(),rotateZ:function(){var a=new THREE.Vector3(0,0,1);return function(b){return this.rotateOnAxis(a,b)}}(),translateOnAxis:function(){var a=new THREE.Vector3;return function(b,c){a.copy(b).applyQuaternion(this.quaternion);this.position.add(a.multiplyScalar(c)); -return this}}(),translate:function(a,b){console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.");return this.translateOnAxis(b,a)},translateX:function(){var a=new THREE.Vector3(1,0,0);return function(b){return this.translateOnAxis(a,b)}}(),translateY:function(){var a=new THREE.Vector3(0,1,0);return function(b){return this.translateOnAxis(a,b)}}(),translateZ:function(){var a=new THREE.Vector3(0,0,1);return function(b){return this.translateOnAxis(a, -b)}}(),localToWorld:function(a){return a.applyMatrix4(this.matrixWorld)},worldToLocal:function(){var a=new THREE.Matrix4;return function(b){return b.applyMatrix4(a.getInverse(this.matrixWorld))}}(),lookAt:function(){var a=new THREE.Matrix4;return function(b){a.lookAt(b,this.position,this.up);this.quaternion.setFromRotationMatrix(a)}}(),add:function(a){if(1<arguments.length){for(var b=0;b<arguments.length;b++)this.add(arguments[b]);return this}if(a===this)return console.error("THREE.Object3D.add:", -a,"can't be added as a child of itself."),this;a instanceof THREE.Object3D?(void 0!==a.parent&&a.parent.remove(a),a.parent=this,a.dispatchEvent({type:"added"}),this.children.push(a)):console.error("THREE.Object3D.add:",a,"is not an instance of THREE.Object3D.");return this},remove:function(a){if(1<arguments.length)for(var b=0;b<arguments.length;b++)this.remove(arguments[b]);b=this.children.indexOf(a);-1!==b&&(a.parent=void 0,a.dispatchEvent({type:"removed"}),this.children.splice(b,1))},getChildByName:function(a, -b){console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().");return this.getObjectByName(a,b)},getObjectById:function(a,b){return this.getObjectByProperty("id",a,b)},getObjectByName:function(a,b){return this.getObjectByProperty("name",a,b)},getObjectByProperty:function(a,b,c){if(this[a]===b)return this;for(var d=0,e=this.children.length;d<e;d++){var f=this.children[d].getObjectByProperty(a,b,c);if(void 0!==f)return f}},getWorldPosition:function(a){a=a||new THREE.Vector3; -this.updateMatrixWorld(!0);return a.setFromMatrixPosition(this.matrixWorld)},getWorldQuaternion:function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(c){c=c||new THREE.Quaternion;this.updateMatrixWorld(!0);this.matrixWorld.decompose(a,c,b);return c}}(),getWorldRotation:function(){var a=new THREE.Quaternion;return function(b){b=b||new THREE.Euler;this.getWorldQuaternion(a);return b.setFromQuaternion(a,this.rotation.order,!1)}}(),getWorldScale:function(){var a=new THREE.Vector3,b=new THREE.Quaternion; -return function(c){c=c||new THREE.Vector3;this.updateMatrixWorld(!0);this.matrixWorld.decompose(a,b,c);return c}}(),getWorldDirection:function(){var a=new THREE.Quaternion;return function(b){b=b||new THREE.Vector3;this.getWorldQuaternion(a);return b.set(0,0,1).applyQuaternion(a)}}(),raycast:function(){},traverse:function(a){a(this);for(var b=0,c=this.children.length;b<c;b++)this.children[b].traverse(a)},traverseVisible:function(a){if(!1!==this.visible){a(this);for(var b=0,c=this.children.length;b< -c;b++)this.children[b].traverseVisible(a)}},traverseAncestors:function(a){this.parent&&(a(this.parent),this.parent.traverseAncestors(a))},updateMatrix:function(){this.matrix.compose(this.position,this.quaternion,this.scale);this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(a){!0===this.matrixAutoUpdate&&this.updateMatrix();if(!0===this.matrixWorldNeedsUpdate||!0===a)void 0===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix), -this.matrixWorldNeedsUpdate=!1,a=!0;for(var b=0,c=this.children.length;b<c;b++)this.children[b].updateMatrixWorld(a)},toJSON:function(){var a={metadata:{version:4.3,type:"Object",generator:"ObjectExporter"}},b={},c=function(c){void 0===a.geometries&&(a.geometries=[]);if(void 0===b[c.uuid]){var d=c.toJSON();delete d.metadata;b[c.uuid]=d;a.geometries.push(d)}return c.uuid},d={},e=function(b){void 0===a.materials&&(a.materials=[]);if(void 0===d[b.uuid]){var c=b.toJSON();delete c.metadata;d[b.uuid]=c; -a.materials.push(c)}return b.uuid},f=function(a){var b={};b.uuid=a.uuid;b.type=a.type;""!==a.name&&(b.name=a.name);"{}"!==JSON.stringify(a.userData)&&(b.userData=a.userData);!0!==a.visible&&(b.visible=a.visible);a instanceof THREE.PerspectiveCamera?(b.fov=a.fov,b.aspect=a.aspect,b.near=a.near,b.far=a.far):a instanceof THREE.OrthographicCamera?(b.left=a.left,b.right=a.right,b.top=a.top,b.bottom=a.bottom,b.near=a.near,b.far=a.far):a instanceof THREE.AmbientLight?b.color=a.color.getHex():a instanceof -THREE.DirectionalLight?(b.color=a.color.getHex(),b.intensity=a.intensity):a instanceof THREE.PointLight?(b.color=a.color.getHex(),b.intensity=a.intensity,b.distance=a.distance):a instanceof THREE.SpotLight?(b.color=a.color.getHex(),b.intensity=a.intensity,b.distance=a.distance,b.angle=a.angle,b.exponent=a.exponent):a instanceof THREE.HemisphereLight?(b.color=a.color.getHex(),b.groundColor=a.groundColor.getHex()):a instanceof THREE.Mesh?(b.geometry=c(a.geometry),b.material=e(a.material)):a instanceof -THREE.Line?(b.geometry=c(a.geometry),b.material=e(a.material)):a instanceof THREE.Sprite&&(b.material=e(a.material));b.matrix=a.matrix.toArray();if(0<a.children.length){b.children=[];for(var d=0;d<a.children.length;d++)b.children.push(f(a.children[d]))}return b};a.object=f(this);return a},clone:function(a,b){void 0===a&&(a=new THREE.Object3D);void 0===b&&(b=!0);a.name=this.name;a.up.copy(this.up);a.position.copy(this.position);a.quaternion.copy(this.quaternion);a.scale.copy(this.scale);a.rotationAutoUpdate= -this.rotationAutoUpdate;a.matrix.copy(this.matrix);a.matrixWorld.copy(this.matrixWorld);a.matrixAutoUpdate=this.matrixAutoUpdate;a.matrixWorldNeedsUpdate=this.matrixWorldNeedsUpdate;a.visible=this.visible;a.castShadow=this.castShadow;a.receiveShadow=this.receiveShadow;a.frustumCulled=this.frustumCulled;a.userData=JSON.parse(JSON.stringify(this.userData));if(!0===b)for(var c=0;c<this.children.length;c++)a.add(this.children[c].clone());return a}};THREE.EventDispatcher.prototype.apply(THREE.Object3D.prototype); -THREE.Object3DIdCount=0;THREE.Face3=function(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=void 0!==f?f:0}; +return this}}(),translate:function(a,b){THREE.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.");return this.translateOnAxis(b,a)},translateX:function(){var a=new THREE.Vector3(1,0,0);return function(b){return this.translateOnAxis(a,b)}}(),translateY:function(){var a=new THREE.Vector3(0,1,0);return function(b){return this.translateOnAxis(a,b)}}(),translateZ:function(){var a=new THREE.Vector3(0,0,1);return function(b){return this.translateOnAxis(a, +b)}}(),localToWorld:function(a){return a.applyMatrix4(this.matrixWorld)},worldToLocal:function(){var a=new THREE.Matrix4;return function(b){return b.applyMatrix4(a.getInverse(this.matrixWorld))}}(),lookAt:function(){var a=new THREE.Matrix4;return function(b){a.lookAt(b,this.position,this.up);this.quaternion.setFromRotationMatrix(a)}}(),add:function(a){if(1<arguments.length){for(var b=0;b<arguments.length;b++)this.add(arguments[b]);return this}if(a===this)return THREE.error("THREE.Object3D.add: object can't be added as a child of itself.", +a),this;a instanceof THREE.Object3D?(void 0!==a.parent&&a.parent.remove(a),a.parent=this,a.dispatchEvent({type:"added"}),this.children.push(a)):THREE.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",a);return this},remove:function(a){if(1<arguments.length)for(var b=0;b<arguments.length;b++)this.remove(arguments[b]);b=this.children.indexOf(a);-1!==b&&(a.parent=void 0,a.dispatchEvent({type:"removed"}),this.children.splice(b,1))},getChildByName:function(a){THREE.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName()."); +return this.getObjectByName(a)},getObjectById:function(a){return this.getObjectByProperty("id",a)},getObjectByName:function(a){return this.getObjectByProperty("name",a)},getObjectByProperty:function(a,b){if(this[a]===b)return this;for(var c=0,d=this.children.length;c<d;c++){var e=this.children[c].getObjectByProperty(a,b);if(void 0!==e)return e}},getWorldPosition:function(a){a=a||new THREE.Vector3;this.updateMatrixWorld(!0);return a.setFromMatrixPosition(this.matrixWorld)},getWorldQuaternion:function(){var a= +new THREE.Vector3,b=new THREE.Vector3;return function(c){c=c||new THREE.Quaternion;this.updateMatrixWorld(!0);this.matrixWorld.decompose(a,c,b);return c}}(),getWorldRotation:function(){var a=new THREE.Quaternion;return function(b){b=b||new THREE.Euler;this.getWorldQuaternion(a);return b.setFromQuaternion(a,this.rotation.order,!1)}}(),getWorldScale:function(){var a=new THREE.Vector3,b=new THREE.Quaternion;return function(c){c=c||new THREE.Vector3;this.updateMatrixWorld(!0);this.matrixWorld.decompose(a, +b,c);return c}}(),getWorldDirection:function(){var a=new THREE.Quaternion;return function(b){b=b||new THREE.Vector3;this.getWorldQuaternion(a);return b.set(0,0,1).applyQuaternion(a)}}(),raycast:function(){},traverse:function(a){a(this);for(var b=0,c=this.children.length;b<c;b++)this.children[b].traverse(a)},traverseVisible:function(a){if(!1!==this.visible){a(this);for(var b=0,c=this.children.length;b<c;b++)this.children[b].traverseVisible(a)}},traverseAncestors:function(a){this.parent&&(a(this.parent), +this.parent.traverseAncestors(a))},updateMatrix:function(){this.matrix.compose(this.position,this.quaternion,this.scale);this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(a){!0===this.matrixAutoUpdate&&this.updateMatrix();if(!0===this.matrixWorldNeedsUpdate||!0===a)void 0===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0;for(var b=0,c=this.children.length;b<c;b++)this.children[b].updateMatrixWorld(a)}, +toJSON:function(){var a={metadata:{version:4.3,type:"Object",generator:"ObjectExporter"}},b={},c={},d=function(b){void 0===a.materials&&(a.materials=[]);if(void 0===c[b.uuid]){var d=b.toJSON();delete d.metadata;c[b.uuid]=d;a.materials.push(d)}return b.uuid},e=function(c){var g={};g.uuid=c.uuid;g.type=c.type;""!==c.name&&(g.name=c.name);"{}"!==JSON.stringify(c.userData)&&(g.userData=c.userData);!0!==c.visible&&(g.visible=c.visible);if(c instanceof THREE.PerspectiveCamera)g.fov=c.fov,g.aspect=c.aspect, +g.near=c.near,g.far=c.far;else if(c instanceof THREE.OrthographicCamera)g.left=c.left,g.right=c.right,g.top=c.top,g.bottom=c.bottom,g.near=c.near,g.far=c.far;else if(c instanceof THREE.AmbientLight)g.color=c.color.getHex();else if(c instanceof THREE.DirectionalLight)g.color=c.color.getHex(),g.intensity=c.intensity;else if(c instanceof THREE.PointLight)g.color=c.color.getHex(),g.intensity=c.intensity,g.distance=c.distance,g.decay=c.decay;else if(c instanceof THREE.SpotLight)g.color=c.color.getHex(), +g.intensity=c.intensity,g.distance=c.distance,g.angle=c.angle,g.exponent=c.exponent,g.decay=c.decay;else if(c instanceof THREE.HemisphereLight)g.color=c.color.getHex(),g.groundColor=c.groundColor.getHex();else if(c instanceof THREE.Mesh||c instanceof THREE.Line||c instanceof THREE.PointCloud){var h=c.geometry;void 0===a.geometries&&(a.geometries=[]);if(void 0===b[h.uuid]){var k=h.toJSON();delete k.metadata;b[h.uuid]=k;a.geometries.push(k)}g.geometry=h.uuid;g.material=d(c.material);c instanceof THREE.Line&& +(g.mode=c.mode)}else c instanceof THREE.Sprite&&(g.material=d(c.material));g.matrix=c.matrix.toArray();if(0<c.children.length)for(g.children=[],h=0;h<c.children.length;h++)g.children.push(e(c.children[h]));return g};a.object=e(this);return a},clone:function(a,b){void 0===a&&(a=new THREE.Object3D);void 0===b&&(b=!0);a.name=this.name;a.up.copy(this.up);a.position.copy(this.position);a.quaternion.copy(this.quaternion);a.scale.copy(this.scale);a.rotationAutoUpdate=this.rotationAutoUpdate;a.matrix.copy(this.matrix); +a.matrixWorld.copy(this.matrixWorld);a.matrixAutoUpdate=this.matrixAutoUpdate;a.matrixWorldNeedsUpdate=this.matrixWorldNeedsUpdate;a.visible=this.visible;a.castShadow=this.castShadow;a.receiveShadow=this.receiveShadow;a.frustumCulled=this.frustumCulled;a.userData=JSON.parse(JSON.stringify(this.userData));if(!0===b)for(var c=0;c<this.children.length;c++)a.add(this.children[c].clone());return a}};THREE.EventDispatcher.prototype.apply(THREE.Object3D.prototype);THREE.Object3DIdCount=0; +THREE.Face3=function(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=void 0!==f?f:0}; THREE.Face3.prototype={constructor:THREE.Face3,clone:function(){var a=new THREE.Face3(this.a,this.b,this.c);a.normal.copy(this.normal);a.color.copy(this.color);a.materialIndex=this.materialIndex;for(var b=0,c=this.vertexNormals.length;b<c;b++)a.vertexNormals[b]=this.vertexNormals[b].clone();b=0;for(c=this.vertexColors.length;b<c;b++)a.vertexColors[b]=this.vertexColors[b].clone();b=0;for(c=this.vertexTangents.length;b<c;b++)a.vertexTangents[b]=this.vertexTangents[b].clone();return a}}; -THREE.Face4=function(a,b,c,d,e,f,g){console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead.");return new THREE.Face3(a,b,c,e,f,g)};THREE.BufferAttribute=function(a,b){this.array=a;this.itemSize=b;this.needsUpdate=!1}; -THREE.BufferAttribute.prototype={constructor:THREE.BufferAttribute,get length(){return this.array.length},copyAt:function(a,b,c){a*=this.itemSize;c*=b.itemSize;for(var d=0,e=this.itemSize;d<e;d++)this.array[a+d]=b.array[c+d]},set:function(a){this.array.set(a);return this},setX:function(a,b){this.array[a*this.itemSize]=b;return this},setY:function(a,b){this.array[a*this.itemSize+1]=b;return this},setZ:function(a,b){this.array[a*this.itemSize+2]=b;return this},setXY:function(a,b,c){a*=this.itemSize; -this.array[a]=b;this.array[a+1]=c;return this},setXYZ:function(a,b,c,d){a*=this.itemSize;this.array[a]=b;this.array[a+1]=c;this.array[a+2]=d;return this},setXYZW:function(a,b,c,d,e){a*=this.itemSize;this.array[a]=b;this.array[a+1]=c;this.array[a+2]=d;this.array[a+3]=e;return this},clone:function(){return new THREE.BufferAttribute(new this.array.constructor(this.array),this.itemSize)}}; -THREE.Int8Attribute=function(a,b){console.warn("THREE.Int8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Uint8Attribute=function(a,b){console.warn("THREE.Uint8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)}; -THREE.Uint8ClampedAttribute=function(a,b){console.warn("THREE.Uint8ClampedAttribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Int16Attribute=function(a,b){console.warn("THREE.Int16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)}; -THREE.Uint16Attribute=function(a,b){console.warn("THREE.Uint16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Int32Attribute=function(a,b){console.warn("THREE.Int32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)}; -THREE.Uint32Attribute=function(a,b){console.warn("THREE.Uint32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Float32Attribute=function(a,b){console.warn("THREE.Float32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)}; -THREE.Float64Attribute=function(a,b){console.warn("THREE.Float64Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.BufferGeometry=function(){Object.defineProperty(this,"id",{value:THREE.GeometryIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="BufferGeometry";this.attributes={};this.attributesKeys=[];this.offsets=this.drawcalls=[];this.boundingSphere=this.boundingBox=null}; -THREE.BufferGeometry.prototype={constructor:THREE.BufferGeometry,addAttribute:function(a,b,c){!1===b instanceof THREE.BufferAttribute?(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.attributes[a]={array:b,itemSize:c}):(this.attributes[a]=b,this.attributesKeys=Object.keys(this.attributes))},getAttribute:function(a){return this.attributes[a]},addDrawCall:function(a,b,c){this.drawcalls.push({start:a,count:b,index:void 0!==c?c:0})},applyMatrix:function(a){var b= -this.attributes.position;void 0!==b&&(a.applyToVector3Array(b.array),b.needsUpdate=!0);b=this.attributes.normal;void 0!==b&&((new THREE.Matrix3).getNormalMatrix(a).applyToVector3Array(b.array),b.needsUpdate=!0)},center:function(){},fromGeometry:function(a,b){b=b||{vertexColors:THREE.NoColors};var c=a.vertices,d=a.faces,e=a.faceVertexUvs,f=b.vertexColors,g=0<e[0].length,h=3==d[0].vertexNormals.length,k=new Float32Array(9*d.length);this.addAttribute("position",new THREE.BufferAttribute(k,3));var n= -new Float32Array(9*d.length);this.addAttribute("normal",new THREE.BufferAttribute(n,3));if(f!==THREE.NoColors){var p=new Float32Array(9*d.length);this.addAttribute("color",new THREE.BufferAttribute(p,3))}if(!0===g){var q=new Float32Array(6*d.length);this.addAttribute("uv",new THREE.BufferAttribute(q,2))}for(var m=0,t=0,s=0;m<d.length;m++,t+=6,s+=9){var r=d[m],u=c[r.a],v=c[r.b],y=c[r.c];k[s]=u.x;k[s+1]=u.y;k[s+2]=u.z;k[s+3]=v.x;k[s+4]=v.y;k[s+5]=v.z;k[s+6]=y.x;k[s+7]=y.y;k[s+8]=y.z;!0===h?(u=r.vertexNormals[0], -v=r.vertexNormals[1],y=r.vertexNormals[2],n[s]=u.x,n[s+1]=u.y,n[s+2]=u.z,n[s+3]=v.x,n[s+4]=v.y,n[s+5]=v.z,n[s+6]=y.x,n[s+7]=y.y,n[s+8]=y.z):(u=r.normal,n[s]=u.x,n[s+1]=u.y,n[s+2]=u.z,n[s+3]=u.x,n[s+4]=u.y,n[s+5]=u.z,n[s+6]=u.x,n[s+7]=u.y,n[s+8]=u.z);f===THREE.FaceColors?(r=r.color,p[s]=r.r,p[s+1]=r.g,p[s+2]=r.b,p[s+3]=r.r,p[s+4]=r.g,p[s+5]=r.b,p[s+6]=r.r,p[s+7]=r.g,p[s+8]=r.b):f===THREE.VertexColors&&(u=r.vertexColors[0],v=r.vertexColors[1],r=r.vertexColors[2],p[s]=u.r,p[s+1]=u.g,p[s+2]=u.b,p[s+3]= -v.r,p[s+4]=v.g,p[s+5]=v.b,p[s+6]=r.r,p[s+7]=r.g,p[s+8]=r.b);!0===g&&(r=e[0][m][0],u=e[0][m][1],v=e[0][m][2],q[t]=r.x,q[t+1]=r.y,q[t+2]=u.x,q[t+3]=u.y,q[t+4]=v.x,q[t+5]=v.y)}this.computeBoundingSphere();return this},computeBoundingBox:function(){var a=new THREE.Vector3;return function(){null===this.boundingBox&&(this.boundingBox=new THREE.Box3);var b=this.attributes.position.array;if(b){var c=this.boundingBox;c.makeEmpty();for(var d=0,e=b.length;d<e;d+=3)a.set(b[d],b[d+1],b[d+2]),c.expandByPoint(a)}if(void 0=== -b||0===b.length)this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0);(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.')}}(),computeBoundingSphere:function(){var a=new THREE.Box3,b=new THREE.Vector3;return function(){null===this.boundingSphere&&(this.boundingSphere=new THREE.Sphere);var c=this.attributes.position.array; -if(c){a.makeEmpty();for(var d=this.boundingSphere.center,e=0,f=c.length;e<f;e+=3)b.set(c[e],c[e+1],c[e+2]),a.expandByPoint(b);a.center(d);for(var g=0,e=0,f=c.length;e<f;e+=3)b.set(c[e],c[e+1],c[e+2]),g=Math.max(g,d.distanceToSquared(b));this.boundingSphere.radius=Math.sqrt(g);isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.')}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){var a= -this.attributes;if(a.position){var b=a.position.array;if(void 0===a.normal)this.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(b.length),3));else for(var c=a.normal.array,d=0,e=c.length;d<e;d++)c[d]=0;var c=a.normal.array,f,g,h,k=new THREE.Vector3,n=new THREE.Vector3,p=new THREE.Vector3,q=new THREE.Vector3,m=new THREE.Vector3;if(a.index)for(var t=a.index.array,s=0<this.offsets.length?this.offsets:[{start:0,count:t.length,index:0}],r=0,u=s.length;r<u;++r){e=s[r].start;f=s[r].count; -for(var v=s[r].index,d=e,e=e+f;d<e;d+=3)f=3*(v+t[d]),g=3*(v+t[d+1]),h=3*(v+t[d+2]),k.fromArray(b,f),n.fromArray(b,g),p.fromArray(b,h),q.subVectors(p,n),m.subVectors(k,n),q.cross(m),c[f]+=q.x,c[f+1]+=q.y,c[f+2]+=q.z,c[g]+=q.x,c[g+1]+=q.y,c[g+2]+=q.z,c[h]+=q.x,c[h+1]+=q.y,c[h+2]+=q.z}else for(d=0,e=b.length;d<e;d+=9)k.fromArray(b,d),n.fromArray(b,d+3),p.fromArray(b,d+6),q.subVectors(p,n),m.subVectors(k,n),q.cross(m),c[d]=q.x,c[d+1]=q.y,c[d+2]=q.z,c[d+3]=q.x,c[d+4]=q.y,c[d+5]=q.z,c[d+6]=q.x,c[d+7]=q.y, -c[d+8]=q.z;this.normalizeNormals();a.normal.needsUpdate=!0}},computeTangents:function(){function a(a,b,c){q.fromArray(d,3*a);m.fromArray(d,3*b);t.fromArray(d,3*c);s.fromArray(f,2*a);r.fromArray(f,2*b);u.fromArray(f,2*c);v=m.x-q.x;y=t.x-q.x;C=m.y-q.y;x=t.y-q.y;F=m.z-q.z;z=t.z-q.z;G=r.x-s.x;E=u.x-s.x;w=r.y-s.y;D=u.y-s.y;A=1/(G*D-E*w);U.set((D*v-w*y)*A,(D*C-w*x)*A,(D*F-w*z)*A);M.set((G*y-E*v)*A,(G*x-E*C)*A,(G*z-E*F)*A);k[a].add(U);k[b].add(U);k[c].add(U);n[a].add(M);n[b].add(M);n[c].add(M)}function b(a){xa.fromArray(e, -3*a);H.copy(xa);qa=k[a];ga.copy(qa);ga.sub(xa.multiplyScalar(xa.dot(qa))).normalize();ea.crossVectors(H,qa);ya=ea.dot(n[a]);$a=0>ya?-1:1;h[4*a]=ga.x;h[4*a+1]=ga.y;h[4*a+2]=ga.z;h[4*a+3]=$a}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");else{var c=this.attributes.index.array,d=this.attributes.position.array, -e=this.attributes.normal.array,f=this.attributes.uv.array,g=d.length/3;void 0===this.attributes.tangent&&this.addAttribute("tangent",new THREE.BufferAttribute(new Float32Array(4*g),4));for(var h=this.attributes.tangent.array,k=[],n=[],p=0;p<g;p++)k[p]=new THREE.Vector3,n[p]=new THREE.Vector3;var q=new THREE.Vector3,m=new THREE.Vector3,t=new THREE.Vector3,s=new THREE.Vector2,r=new THREE.Vector2,u=new THREE.Vector2,v,y,C,x,F,z,G,E,w,D,A,U=new THREE.Vector3,M=new THREE.Vector3,K,L,N,T,Q;0===this.drawcalls.length&& -this.addDrawCall(0,c.length,0);var W=this.drawcalls,p=0;for(L=W.length;p<L;++p){K=W[p].start;N=W[p].count;var O=W[p].index,g=K;for(K+=N;g<K;g+=3)N=O+c[g],T=O+c[g+1],Q=O+c[g+2],a(N,T,Q)}var ga=new THREE.Vector3,ea=new THREE.Vector3,xa=new THREE.Vector3,H=new THREE.Vector3,$a,qa,ya,p=0;for(L=W.length;p<L;++p)for(K=W[p].start,N=W[p].count,O=W[p].index,g=K,K+=N;g<K;g+=3)N=O+c[g],T=O+c[g+1],Q=O+c[g+2],b(N),b(T),b(Q)}},computeOffsets:function(a){var b=a;void 0===a&&(b=65535);Date.now();a=this.attributes.index.array; -for(var c=this.attributes.position.array,d=a.length/3,e=new Uint16Array(a.length),f=0,g=0,h=[{start:0,count:0,index:0}],k=h[0],n=0,p=0,q=new Int32Array(6),m=new Int32Array(c.length),t=new Int32Array(c.length),s=0;s<c.length;s++)m[s]=-1,t[s]=-1;for(c=0;c<d;c++){for(var r=p=0;3>r;r++)s=a[3*c+r],-1==m[s]?(q[2*r]=s,q[2*r+1]=-1,p++):m[s]<k.index?(q[2*r]=s,q[2*r+1]=-1,n++):(q[2*r]=s,q[2*r+1]=m[s]);if(g+p>k.index+b)for(k={start:f,count:0,index:g},h.push(k),p=0;6>p;p+=2)r=q[p+1],-1<r&&r<k.index&&(q[p+1]= --1);for(p=0;6>p;p+=2)s=q[p],r=q[p+1],-1===r&&(r=g++),m[s]=r,t[r]=s,e[f++]=r-k.index,k.count++}this.reorderBuffers(e,t,g);return this.offsets=h},merge:function(a,b){if(!1===a instanceof THREE.BufferGeometry)console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",a);else{void 0===b&&(b=0);var c=this.attributes,d;for(d in c)if(void 0!==a.attributes[d])for(var e=c[d].array,f=a.attributes[d],g=f.array,h=0,f=f.itemSize*b;h<g.length;h++,f++)e[f]=g[h];return this}}, -normalizeNormals:function(){for(var a=this.attributes.normal.array,b,c,d,e=0,f=a.length;e<f;e+=3)b=a[e],c=a[e+1],d=a[e+2],b=1/Math.sqrt(b*b+c*c+d*d),a[e]*=b,a[e+1]*=b,a[e+2]*=b},reorderBuffers:function(a,b,c){var d={},e;for(e in this.attributes)"index"!=e&&(d[e]=new this.attributes[e].array.constructor(this.attributes[e].itemSize*c));for(var f=0;f<c;f++){var g=b[f];for(e in this.attributes)if("index"!=e)for(var h=this.attributes[e].array,k=this.attributes[e].itemSize,n=d[e],p=0;p<k;p++)n[f*k+p]=h[g* -k+p]}this.attributes.index.array=a;for(e in this.attributes)"index"!=e&&(this.attributes[e].array=d[e],this.attributes[e].numItems=this.attributes[e].itemSize*c)},toJSON:function(){var a={metadata:{version:4,type:"BufferGeometry",generator:"BufferGeometryExporter"},uuid:this.uuid,type:this.type,data:{attributes:{}}},b=this.attributes,c=this.offsets,d=this.boundingSphere,e;for(e in b){for(var f=b[e],g=[],h=f.array,k=0,n=h.length;k<n;k++)g[k]=h[k];a.data.attributes[e]={itemSize:f.itemSize,type:f.array.constructor.name, -array:g}}0<c.length&&(a.data.offsets=JSON.parse(JSON.stringify(c)));null!==d&&(a.data.boundingSphere={center:d.center.toArray(),radius:d.radius});return a},clone:function(){var a=new THREE.BufferGeometry,b;for(b in this.attributes)a.addAttribute(b,this.attributes[b].clone());b=0;for(var c=this.offsets.length;b<c;b++){var d=this.offsets[b];a.offsets.push({start:d.start,index:d.index,count:d.count})}return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.BufferGeometry.prototype); +THREE.Face4=function(a,b,c,d,e,f,g){THREE.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead.");return new THREE.Face3(a,b,c,e,f,g)};THREE.BufferAttribute=function(a,b){this.array=a;this.itemSize=b;this.needsUpdate=!1}; +THREE.BufferAttribute.prototype={constructor:THREE.BufferAttribute,get length(){return this.array.length},copyAt:function(a,b,c){a*=this.itemSize;c*=b.itemSize;for(var d=0,e=this.itemSize;d<e;d++)this.array[a+d]=b.array[c+d];return this},set:function(a,b){void 0===b&&(b=0);this.array.set(a,b);return this},setX:function(a,b){this.array[a*this.itemSize]=b;return this},setY:function(a,b){this.array[a*this.itemSize+1]=b;return this},setZ:function(a,b){this.array[a*this.itemSize+2]=b;return this},setXY:function(a, +b,c){a*=this.itemSize;this.array[a]=b;this.array[a+1]=c;return this},setXYZ:function(a,b,c,d){a*=this.itemSize;this.array[a]=b;this.array[a+1]=c;this.array[a+2]=d;return this},setXYZW:function(a,b,c,d,e){a*=this.itemSize;this.array[a]=b;this.array[a+1]=c;this.array[a+2]=d;this.array[a+3]=e;return this},clone:function(){return new THREE.BufferAttribute(new this.array.constructor(this.array),this.itemSize)}}; +THREE.Int8Attribute=function(a,b){THREE.warn("THREE.Int8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Uint8Attribute=function(a,b){THREE.warn("THREE.Uint8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)}; +THREE.Uint8ClampedAttribute=function(a,b){THREE.warn("THREE.Uint8ClampedAttribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Int16Attribute=function(a,b){THREE.warn("THREE.Int16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)}; +THREE.Uint16Attribute=function(a,b){THREE.warn("THREE.Uint16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Int32Attribute=function(a,b){THREE.warn("THREE.Int32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)}; +THREE.Uint32Attribute=function(a,b){THREE.warn("THREE.Uint32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.Float32Attribute=function(a,b){THREE.warn("THREE.Float32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)}; +THREE.Float64Attribute=function(a,b){THREE.warn("THREE.Float64Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.");return new THREE.BufferAttribute(a,b)};THREE.DynamicBufferAttribute=function(a,b){THREE.BufferAttribute.call(this,a,b);this.updateRange={offset:0,count:-1}};THREE.DynamicBufferAttribute.prototype=Object.create(THREE.BufferAttribute.prototype);THREE.DynamicBufferAttribute.prototype.constructor=THREE.DynamicBufferAttribute; +THREE.DynamicBufferAttribute.prototype.clone=function(){return new THREE.DynamicBufferAttribute(new this.array.constructor(this.array),this.itemSize)};THREE.BufferGeometry=function(){Object.defineProperty(this,"id",{value:THREE.GeometryIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="BufferGeometry";this.attributes={};this.attributesKeys=[];this.offsets=this.drawcalls=[];this.boundingSphere=this.boundingBox=null}; +THREE.BufferGeometry.prototype={constructor:THREE.BufferGeometry,addAttribute:function(a,b,c){!1===b instanceof THREE.BufferAttribute?(THREE.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.attributes[a]={array:b,itemSize:c}):(this.attributes[a]=b,this.attributesKeys=Object.keys(this.attributes))},getAttribute:function(a){return this.attributes[a]},addDrawCall:function(a,b,c){this.drawcalls.push({start:a,count:b,index:void 0!==c?c:0})},applyMatrix:function(a){var b= +this.attributes.position;void 0!==b&&(a.applyToVector3Array(b.array),b.needsUpdate=!0);b=this.attributes.normal;void 0!==b&&((new THREE.Matrix3).getNormalMatrix(a).applyToVector3Array(b.array),b.needsUpdate=!0);null!==this.boundingBox&&this.computeBoundingBox();null!==this.boundingSphere&&this.computeBoundingSphere()},center:function(){this.computeBoundingBox();var a=this.boundingBox.center().negate();this.applyMatrix((new THREE.Matrix4).setPosition(a));return a},fromGeometry:function(a,b){b=b||{vertexColors:THREE.NoColors}; +var c=a.vertices,d=a.faces,e=a.faceVertexUvs,f=b.vertexColors,g=0<e[0].length,h=3==d[0].vertexNormals.length,k=new Float32Array(9*d.length);this.addAttribute("position",new THREE.BufferAttribute(k,3));var l=new Float32Array(9*d.length);this.addAttribute("normal",new THREE.BufferAttribute(l,3));if(f!==THREE.NoColors){var p=new Float32Array(9*d.length);this.addAttribute("color",new THREE.BufferAttribute(p,3))}if(!0===g){var q=new Float32Array(6*d.length);this.addAttribute("uv",new THREE.BufferAttribute(q, +2))}for(var n=0,t=0,r=0;n<d.length;n++,t+=6,r+=9){var s=d[n],u=c[s.a],v=c[s.b],x=c[s.c];k[r]=u.x;k[r+1]=u.y;k[r+2]=u.z;k[r+3]=v.x;k[r+4]=v.y;k[r+5]=v.z;k[r+6]=x.x;k[r+7]=x.y;k[r+8]=x.z;!0===h?(u=s.vertexNormals[0],v=s.vertexNormals[1],x=s.vertexNormals[2],l[r]=u.x,l[r+1]=u.y,l[r+2]=u.z,l[r+3]=v.x,l[r+4]=v.y,l[r+5]=v.z,l[r+6]=x.x,l[r+7]=x.y,l[r+8]=x.z):(u=s.normal,l[r]=u.x,l[r+1]=u.y,l[r+2]=u.z,l[r+3]=u.x,l[r+4]=u.y,l[r+5]=u.z,l[r+6]=u.x,l[r+7]=u.y,l[r+8]=u.z);f===THREE.FaceColors?(s=s.color,p[r]= +s.r,p[r+1]=s.g,p[r+2]=s.b,p[r+3]=s.r,p[r+4]=s.g,p[r+5]=s.b,p[r+6]=s.r,p[r+7]=s.g,p[r+8]=s.b):f===THREE.VertexColors&&(u=s.vertexColors[0],v=s.vertexColors[1],s=s.vertexColors[2],p[r]=u.r,p[r+1]=u.g,p[r+2]=u.b,p[r+3]=v.r,p[r+4]=v.g,p[r+5]=v.b,p[r+6]=s.r,p[r+7]=s.g,p[r+8]=s.b);!0===g&&(s=e[0][n][0],u=e[0][n][1],v=e[0][n][2],q[t]=s.x,q[t+1]=s.y,q[t+2]=u.x,q[t+3]=u.y,q[t+4]=v.x,q[t+5]=v.y)}this.computeBoundingSphere();return this},computeBoundingBox:function(){var a=new THREE.Vector3;return function(){null=== +this.boundingBox&&(this.boundingBox=new THREE.Box3);var b=this.attributes.position.array;if(b){var c=this.boundingBox;c.makeEmpty();for(var d=0,e=b.length;d<e;d+=3)a.set(b[d],b[d+1],b[d+2]),c.expandByPoint(a)}if(void 0===b||0===b.length)this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0);(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&THREE.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.')}}(), +computeBoundingSphere:function(){var a=new THREE.Box3,b=new THREE.Vector3;return function(){null===this.boundingSphere&&(this.boundingSphere=new THREE.Sphere);var c=this.attributes.position.array;if(c){a.makeEmpty();for(var d=this.boundingSphere.center,e=0,f=c.length;e<f;e+=3)b.set(c[e],c[e+1],c[e+2]),a.expandByPoint(b);a.center(d);for(var g=0,e=0,f=c.length;e<f;e+=3)b.set(c[e],c[e+1],c[e+2]),g=Math.max(g,d.distanceToSquared(b));this.boundingSphere.radius=Math.sqrt(g);isNaN(this.boundingSphere.radius)&& +THREE.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.')}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){var a=this.attributes;if(a.position){var b=a.position.array;if(void 0===a.normal)this.addAttribute("normal",new THREE.BufferAttribute(new Float32Array(b.length),3));else for(var c=a.normal.array,d=0,e=c.length;d<e;d++)c[d]=0;var c=a.normal.array,f,g,h,k=new THREE.Vector3,l=new THREE.Vector3, +p=new THREE.Vector3,q=new THREE.Vector3,n=new THREE.Vector3;if(a.index)for(var t=a.index.array,r=0<this.offsets.length?this.offsets:[{start:0,count:t.length,index:0}],s=0,u=r.length;s<u;++s){e=r[s].start;f=r[s].count;for(var v=r[s].index,d=e,e=e+f;d<e;d+=3)f=3*(v+t[d]),g=3*(v+t[d+1]),h=3*(v+t[d+2]),k.fromArray(b,f),l.fromArray(b,g),p.fromArray(b,h),q.subVectors(p,l),n.subVectors(k,l),q.cross(n),c[f]+=q.x,c[f+1]+=q.y,c[f+2]+=q.z,c[g]+=q.x,c[g+1]+=q.y,c[g+2]+=q.z,c[h]+=q.x,c[h+1]+=q.y,c[h+2]+=q.z}else for(d= +0,e=b.length;d<e;d+=9)k.fromArray(b,d),l.fromArray(b,d+3),p.fromArray(b,d+6),q.subVectors(p,l),n.subVectors(k,l),q.cross(n),c[d]=q.x,c[d+1]=q.y,c[d+2]=q.z,c[d+3]=q.x,c[d+4]=q.y,c[d+5]=q.z,c[d+6]=q.x,c[d+7]=q.y,c[d+8]=q.z;this.normalizeNormals();a.normal.needsUpdate=!0}},computeTangents:function(){function a(a,b,c){q.fromArray(d,3*a);n.fromArray(d,3*b);t.fromArray(d,3*c);r.fromArray(f,2*a);s.fromArray(f,2*b);u.fromArray(f,2*c);v=n.x-q.x;x=t.x-q.x;D=n.y-q.y;w=t.y-q.y;y=n.z-q.z;A=t.z-q.z;E=s.x-r.x;G= +u.x-r.x;F=s.y-r.y;z=u.y-r.y;I=1/(E*z-G*F);U.set((z*v-F*x)*I,(z*D-F*w)*I,(z*y-F*A)*I);M.set((E*x-G*v)*I,(E*w-G*D)*I,(E*A-G*y)*I);k[a].add(U);k[b].add(U);k[c].add(U);l[a].add(M);l[b].add(M);l[c].add(M)}function b(a){ha.fromArray(e,3*a);O.copy(ha);ba=k[a];oa.copy(ba);oa.sub(ha.multiplyScalar(ha.dot(ba))).normalize();ja.crossVectors(O,ba);qa=ja.dot(l[a]);ca=0>qa?-1:1;h[4*a]=oa.x;h[4*a+1]=oa.y;h[4*a+2]=oa.z;h[4*a+3]=ca}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal|| +void 0===this.attributes.uv)THREE.warn("THREE.BufferGeometry: Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");else{var c=this.attributes.index.array,d=this.attributes.position.array,e=this.attributes.normal.array,f=this.attributes.uv.array,g=d.length/3;void 0===this.attributes.tangent&&this.addAttribute("tangent",new THREE.BufferAttribute(new Float32Array(4*g),4));for(var h=this.attributes.tangent.array,k=[],l=[],p=0;p<g;p++)k[p]=new THREE.Vector3, +l[p]=new THREE.Vector3;var q=new THREE.Vector3,n=new THREE.Vector3,t=new THREE.Vector3,r=new THREE.Vector2,s=new THREE.Vector2,u=new THREE.Vector2,v,x,D,w,y,A,E,G,F,z,I,U=new THREE.Vector3,M=new THREE.Vector3,H,L,P,N,R;0===this.drawcalls.length&&this.addDrawCall(0,c.length,0);var V=this.drawcalls,p=0;for(L=V.length;p<L;++p){H=V[p].start;P=V[p].count;var J=V[p].index,g=H;for(H+=P;g<H;g+=3)P=J+c[g],N=J+c[g+1],R=J+c[g+2],a(P,N,R)}var oa=new THREE.Vector3,ja=new THREE.Vector3,ha=new THREE.Vector3,O=new THREE.Vector3, +ca,ba,qa,p=0;for(L=V.length;p<L;++p)for(H=V[p].start,P=V[p].count,J=V[p].index,g=H,H+=P;g<H;g+=3)P=J+c[g],N=J+c[g+1],R=J+c[g+2],b(P),b(N),b(R)}},computeOffsets:function(a){void 0===a&&(a=65535);for(var b=this.attributes.index.array,c=this.attributes.position.array,d=b.length/3,e=new Uint16Array(b.length),f=0,g=0,h=[{start:0,count:0,index:0}],k=h[0],l=0,p=0,q=new Int32Array(6),n=new Int32Array(c.length),t=new Int32Array(c.length),r=0;r<c.length;r++)n[r]=-1,t[r]=-1;for(c=0;c<d;c++){for(var s=p=0;3> +s;s++)r=b[3*c+s],-1==n[r]?(q[2*s]=r,q[2*s+1]=-1,p++):n[r]<k.index?(q[2*s]=r,q[2*s+1]=-1,l++):(q[2*s]=r,q[2*s+1]=n[r]);if(g+p>k.index+a)for(k={start:f,count:0,index:g},h.push(k),p=0;6>p;p+=2)s=q[p+1],-1<s&&s<k.index&&(q[p+1]=-1);for(p=0;6>p;p+=2)r=q[p],s=q[p+1],-1===s&&(s=g++),n[r]=s,t[s]=r,e[f++]=s-k.index,k.count++}this.reorderBuffers(e,t,g);return this.drawcalls=this.offsets=h},merge:function(a,b){if(!1===a instanceof THREE.BufferGeometry)THREE.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.", +a);else{void 0===b&&(b=0);var c=this.attributes,d;for(d in c)if(void 0!==a.attributes[d])for(var e=c[d].array,f=a.attributes[d],g=f.array,h=0,f=f.itemSize*b;h<g.length;h++,f++)e[f]=g[h];return this}},normalizeNormals:function(){for(var a=this.attributes.normal.array,b,c,d,e=0,f=a.length;e<f;e+=3)b=a[e],c=a[e+1],d=a[e+2],b=1/Math.sqrt(b*b+c*c+d*d),a[e]*=b,a[e+1]*=b,a[e+2]*=b},reorderBuffers:function(a,b,c){var d={},e;for(e in this.attributes)"index"!=e&&(d[e]=new this.attributes[e].array.constructor(this.attributes[e].itemSize* +c));for(var f=0;f<c;f++){var g=b[f];for(e in this.attributes)if("index"!=e)for(var h=this.attributes[e].array,k=this.attributes[e].itemSize,l=d[e],p=0;p<k;p++)l[f*k+p]=h[g*k+p]}this.attributes.index.array=a;for(e in this.attributes)"index"!=e&&(this.attributes[e].array=d[e],this.attributes[e].numItems=this.attributes[e].itemSize*c)},toJSON:function(){var a={metadata:{version:4,type:"BufferGeometry",generator:"BufferGeometryExporter"},uuid:this.uuid,type:this.type,data:{attributes:{}}},b=this.attributes, +c=this.offsets,d=this.boundingSphere,e;for(e in b){var f=b[e],g=Array.prototype.slice.call(f.array);a.data.attributes[e]={itemSize:f.itemSize,type:f.array.constructor.name,array:g}}0<c.length&&(a.data.offsets=JSON.parse(JSON.stringify(c)));null!==d&&(a.data.boundingSphere={center:d.center.toArray(),radius:d.radius});return a},clone:function(){var a=new THREE.BufferGeometry,b;for(b in this.attributes)a.addAttribute(b,this.attributes[b].clone());b=0;for(var c=this.offsets.length;b<c;b++){var d=this.offsets[b]; +a.offsets.push({start:d.start,index:d.index,count:d.count})}return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.BufferGeometry.prototype); THREE.Geometry=function(){Object.defineProperty(this,"id",{value:THREE.GeometryIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="Geometry";this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphColors=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.hasTangents=!1;this.dynamic=!0;this.groupsNeedUpdate=this.lineDistancesNeedUpdate=this.colorsNeedUpdate= this.tangentsNeedUpdate=this.normalsNeedUpdate=this.uvsNeedUpdate=this.elementsNeedUpdate=this.verticesNeedUpdate=!1}; -THREE.Geometry.prototype={constructor:THREE.Geometry,applyMatrix:function(a){for(var b=(new THREE.Matrix3).getNormalMatrix(a),c=0,d=this.vertices.length;c<d;c++)this.vertices[c].applyMatrix4(a);c=0;for(d=this.faces.length;c<d;c++){a=this.faces[c];a.normal.applyMatrix3(b).normalize();for(var e=0,f=a.vertexNormals.length;e<f;e++)a.vertexNormals[e].applyMatrix3(b).normalize()}this.boundingBox instanceof THREE.Box3&&this.computeBoundingBox();this.boundingSphere instanceof THREE.Sphere&&this.computeBoundingSphere()}, -fromBufferGeometry:function(a){for(var b=this,c=a.attributes,d=c.position.array,e=void 0!==c.index?c.index.array:void 0,f=void 0!==c.normal?c.normal.array:void 0,g=void 0!==c.color?c.color.array:void 0,h=void 0!==c.uv?c.uv.array:void 0,k=[],n=[],p=c=0;c<d.length;c+=3,p+=2)b.vertices.push(new THREE.Vector3(d[c],d[c+1],d[c+2])),void 0!==f&&k.push(new THREE.Vector3(f[c],f[c+1],f[c+2])),void 0!==g&&b.colors.push(new THREE.Color(g[c],g[c+1],g[c+2])),void 0!==h&&n.push(new THREE.Vector2(h[p],h[p+1]));p= -function(a,c,d){var e=void 0!==f?[k[a].clone(),k[c].clone(),k[d].clone()]:[],p=void 0!==g?[b.colors[a].clone(),b.colors[c].clone(),b.colors[d].clone()]:[];b.faces.push(new THREE.Face3(a,c,d,e,p));void 0!==h&&b.faceVertexUvs[0].push([n[a].clone(),n[c].clone(),n[d].clone()])};if(void 0!==e)for(c=0;c<e.length;c+=3)p(e[c],e[c+1],e[c+2]);else for(c=0;c<d.length/3;c+=3)p(c,c+1,c+2);this.computeFaceNormals();null!==a.boundingBox&&(this.boundingBox=a.boundingBox.clone());null!==a.boundingSphere&&(this.boundingSphere= -a.boundingSphere.clone());return this},center:function(){this.computeBoundingBox();var a=new THREE.Vector3;a.addVectors(this.boundingBox.min,this.boundingBox.max);a.multiplyScalar(-.5);this.applyMatrix((new THREE.Matrix4).makeTranslation(a.x,a.y,a.z));this.computeBoundingBox();return a},computeFaceNormals:function(){for(var a=new THREE.Vector3,b=new THREE.Vector3,c=0,d=this.faces.length;c<d;c++){var e=this.faces[c],f=this.vertices[e.a],g=this.vertices[e.b];a.subVectors(this.vertices[e.c],g);b.subVectors(f, -g);a.cross(b);a.normalize();e.normal.copy(a)}},computeVertexNormals:function(a){var b,c,d;d=Array(this.vertices.length);b=0;for(c=this.vertices.length;b<c;b++)d[b]=new THREE.Vector3;if(a){var e,f,g,h=new THREE.Vector3,k=new THREE.Vector3;new THREE.Vector3;new THREE.Vector3;new THREE.Vector3;a=0;for(b=this.faces.length;a<b;a++)c=this.faces[a],e=this.vertices[c.a],f=this.vertices[c.b],g=this.vertices[c.c],h.subVectors(g,f),k.subVectors(e,f),h.cross(k),d[c.a].add(h),d[c.b].add(h),d[c.c].add(h)}else for(a= +THREE.Geometry.prototype={constructor:THREE.Geometry,applyMatrix:function(a){for(var b=(new THREE.Matrix3).getNormalMatrix(a),c=0,d=this.vertices.length;c<d;c++)this.vertices[c].applyMatrix4(a);c=0;for(d=this.faces.length;c<d;c++){a=this.faces[c];a.normal.applyMatrix3(b).normalize();for(var e=0,f=a.vertexNormals.length;e<f;e++)a.vertexNormals[e].applyMatrix3(b).normalize()}null!==this.boundingBox&&this.computeBoundingBox();null!==this.boundingSphere&&this.computeBoundingSphere();this.normalsNeedUpdate= +this.verticesNeedUpdate=!0},fromBufferGeometry:function(a){for(var b=this,c=a.attributes,d=c.position.array,e=void 0!==c.index?c.index.array:void 0,f=void 0!==c.normal?c.normal.array:void 0,g=void 0!==c.color?c.color.array:void 0,h=void 0!==c.uv?c.uv.array:void 0,k=[],l=[],p=c=0;c<d.length;c+=3,p+=2)b.vertices.push(new THREE.Vector3(d[c],d[c+1],d[c+2])),void 0!==f&&k.push(new THREE.Vector3(f[c],f[c+1],f[c+2])),void 0!==g&&b.colors.push(new THREE.Color(g[c],g[c+1],g[c+2])),void 0!==h&&l.push(new THREE.Vector2(h[p], +h[p+1]));var q=function(a,c,d){var e=void 0!==f?[k[a].clone(),k[c].clone(),k[d].clone()]:[],n=void 0!==g?[b.colors[a].clone(),b.colors[c].clone(),b.colors[d].clone()]:[];b.faces.push(new THREE.Face3(a,c,d,e,n));void 0!==h&&b.faceVertexUvs[0].push([l[a].clone(),l[c].clone(),l[d].clone()])};if(void 0!==e)if(d=a.drawcalls,0<d.length)for(c=0;c<d.length;c++)for(var p=d[c],n=p.start,t=p.count,r=p.index,p=n,n=n+t;p<n;p+=3)q(r+e[p],r+e[p+1],r+e[p+2]);else for(c=0;c<e.length;c+=3)q(e[c],e[c+1],e[c+2]);else for(c= +0;c<d.length/3;c+=3)q(c,c+1,c+2);this.computeFaceNormals();null!==a.boundingBox&&(this.boundingBox=a.boundingBox.clone());null!==a.boundingSphere&&(this.boundingSphere=a.boundingSphere.clone());return this},center:function(){this.computeBoundingBox();var a=this.boundingBox.center().negate();this.applyMatrix((new THREE.Matrix4).setPosition(a));return a},computeFaceNormals:function(){for(var a=new THREE.Vector3,b=new THREE.Vector3,c=0,d=this.faces.length;c<d;c++){var e=this.faces[c],f=this.vertices[e.a], +g=this.vertices[e.b];a.subVectors(this.vertices[e.c],g);b.subVectors(f,g);a.cross(b);a.normalize();e.normal.copy(a)}},computeVertexNormals:function(a){var b,c,d;d=Array(this.vertices.length);b=0;for(c=this.vertices.length;b<c;b++)d[b]=new THREE.Vector3;if(a){var e,f,g,h=new THREE.Vector3,k=new THREE.Vector3;a=0;for(b=this.faces.length;a<b;a++)c=this.faces[a],e=this.vertices[c.a],f=this.vertices[c.b],g=this.vertices[c.c],h.subVectors(g,f),k.subVectors(e,f),h.cross(k),d[c.a].add(h),d[c.b].add(h),d[c.c].add(h)}else for(a= 0,b=this.faces.length;a<b;a++)c=this.faces[a],d[c.a].add(c.normal),d[c.b].add(c.normal),d[c.c].add(c.normal);b=0;for(c=this.vertices.length;b<c;b++)d[b].normalize();a=0;for(b=this.faces.length;a<b;a++)c=this.faces[a],c.vertexNormals[0]=d[c.a].clone(),c.vertexNormals[1]=d[c.b].clone(),c.vertexNormals[2]=d[c.c].clone()},computeMorphNormals:function(){var a,b,c,d,e;c=0;for(d=this.faces.length;c<d;c++)for(e=this.faces[c],e.__originalFaceNormal?e.__originalFaceNormal.copy(e.normal):e.__originalFaceNormal= e.normal.clone(),e.__originalVertexNormals||(e.__originalVertexNormals=[]),a=0,b=e.vertexNormals.length;a<b;a++)e.__originalVertexNormals[a]?e.__originalVertexNormals[a].copy(e.vertexNormals[a]):e.__originalVertexNormals[a]=e.vertexNormals[a].clone();var f=new THREE.Geometry;f.faces=this.faces;a=0;for(b=this.morphTargets.length;a<b;a++){if(!this.morphNormals[a]){this.morphNormals[a]={};this.morphNormals[a].faceNormals=[];this.morphNormals[a].vertexNormals=[];e=this.morphNormals[a].faceNormals;var g= this.morphNormals[a].vertexNormals,h,k;c=0;for(d=this.faces.length;c<d;c++)h=new THREE.Vector3,k={a:new THREE.Vector3,b:new THREE.Vector3,c:new THREE.Vector3},e.push(h),g.push(k)}g=this.morphNormals[a];f.vertices=this.morphTargets[a].vertices;f.computeFaceNormals();f.computeVertexNormals();c=0;for(d=this.faces.length;c<d;c++)e=this.faces[c],h=g.faceNormals[c],k=g.vertexNormals[c],h.copy(e.normal),k.a.copy(e.vertexNormals[0]),k.b.copy(e.vertexNormals[1]),k.c.copy(e.vertexNormals[2])}c=0;for(d=this.faces.length;c< -d;c++)e=this.faces[c],e.normal=e.__originalFaceNormal,e.vertexNormals=e.__originalVertexNormals},computeTangents:function(){var a,b,c,d,e,f,g,h,k,n,p,q,m,t,s,r,u,v=[],y=[];c=new THREE.Vector3;var C=new THREE.Vector3,x=new THREE.Vector3,F=new THREE.Vector3,z=new THREE.Vector3;a=0;for(b=this.vertices.length;a<b;a++)v[a]=new THREE.Vector3,y[a]=new THREE.Vector3;a=0;for(b=this.faces.length;a<b;a++)e=this.faces[a],f=this.faceVertexUvs[0][a],d=e.a,u=e.b,e=e.c,g=this.vertices[d],h=this.vertices[u],k=this.vertices[e], -n=f[0],p=f[1],q=f[2],f=h.x-g.x,m=k.x-g.x,t=h.y-g.y,s=k.y-g.y,h=h.z-g.z,g=k.z-g.z,k=p.x-n.x,r=q.x-n.x,p=p.y-n.y,n=q.y-n.y,q=1/(k*n-r*p),c.set((n*f-p*m)*q,(n*t-p*s)*q,(n*h-p*g)*q),C.set((k*m-r*f)*q,(k*s-r*t)*q,(k*g-r*h)*q),v[d].add(c),v[u].add(c),v[e].add(c),y[d].add(C),y[u].add(C),y[e].add(C);C=["a","b","c","d"];a=0;for(b=this.faces.length;a<b;a++)for(e=this.faces[a],c=0;c<Math.min(e.vertexNormals.length,3);c++)z.copy(e.vertexNormals[c]),d=e[C[c]],u=v[d],x.copy(u),x.sub(z.multiplyScalar(z.dot(u))).normalize(), -F.crossVectors(e.vertexNormals[c],u),d=F.dot(y[d]),d=0>d?-1:1,e.vertexTangents[c]=new THREE.Vector4(x.x,x.y,x.z,d);this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;c<d;c++)0<c&&(a+=b[c].distanceTo(b[c-1])),this.lineDistances[c]=a},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new THREE.Box3);this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new THREE.Sphere); -this.boundingSphere.setFromPoints(this.vertices)},merge:function(a,b,c){if(!1===a instanceof THREE.Geometry)console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",a);else{var d,e=this.vertices.length,f=this.vertices,g=a.vertices,h=this.faces,k=a.faces,n=this.faceVertexUvs[0];a=a.faceVertexUvs[0];void 0===c&&(c=0);void 0!==b&&(d=(new THREE.Matrix3).getNormalMatrix(b));for(var p=0,q=g.length;p<q;p++){var m=g[p].clone();void 0!==b&&m.applyMatrix4(b);f.push(m)}p=0;for(q=k.length;p< -q;p++){var g=k[p],t,s=g.vertexNormals,r=g.vertexColors,m=new THREE.Face3(g.a+e,g.b+e,g.c+e);m.normal.copy(g.normal);void 0!==d&&m.normal.applyMatrix3(d).normalize();b=0;for(f=s.length;b<f;b++)t=s[b].clone(),void 0!==d&&t.applyMatrix3(d).normalize(),m.vertexNormals.push(t);m.color.copy(g.color);b=0;for(f=r.length;b<f;b++)t=r[b],m.vertexColors.push(t.clone());m.materialIndex=g.materialIndex+c;h.push(m)}p=0;for(q=a.length;p<q;p++)if(c=a[p],d=[],void 0!==c){b=0;for(f=c.length;b<f;b++)d.push(c[b].clone()); -n.push(d)}}},mergeMesh:function(a){!1===a instanceof THREE.Mesh?console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",a):(a.matrixAutoUpdate&&a.updateMatrix(),this.merge(a.geometry,a.matrix))},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,4),f,g;f=0;for(g=this.vertices.length;f<g;f++)d=this.vertices[f],d=Math.round(d.x*e)+"_"+Math.round(d.y*e)+"_"+Math.round(d.z*e),void 0===a[d]?(a[d]=f,b.push(this.vertices[f]),c[f]=b.length-1):c[f]=c[a[d]];a=[];f=0;for(g=this.faces.length;f< -g;f++)for(e=this.faces[f],e.a=c[e.a],e.b=c[e.b],e.c=c[e.c],e=[e.a,e.b,e.c],d=0;3>d;d++)if(e[d]==e[(d+1)%3]){a.push(f);break}for(f=a.length-1;0<=f;f--)for(e=a[f],this.faces.splice(e,1),c=0,g=this.faceVertexUvs.length;c<g;c++)this.faceVertexUvs[c].splice(e,1);f=this.vertices.length-b.length;this.vertices=b;return f},toJSON:function(){function a(a,b,c){return c?a|1<<b:a&~(1<<b)}function b(a){var b=a.x.toString()+a.y.toString()+a.z.toString();if(void 0!==n[b])return n[b];n[b]=k.length/3;k.push(a.x,a.y, -a.z);return n[b]}function c(a){var b=a.r.toString()+a.g.toString()+a.b.toString();if(void 0!==q[b])return q[b];q[b]=p.length;p.push(a.getHex());return q[b]}function d(a){var b=a.x.toString()+a.y.toString();if(void 0!==t[b])return t[b];t[b]=m.length/2;m.push(a.x,a.y);return t[b]}var e={metadata:{version:4,type:"BufferGeometry",generator:"BufferGeometryExporter"},uuid:this.uuid,type:this.type};""!==this.name&&(e.name=this.name);if(void 0!==this.parameters){var f=this.parameters,g;for(g in f)void 0!== -f[g]&&(e[g]=f[g]);return e}f=[];for(g=0;g<this.vertices.length;g++){var h=this.vertices[g];f.push(h.x,h.y,h.z)}var h=[],k=[],n={},p=[],q={},m=[],t={};for(g=0;g<this.faces.length;g++){var s=this.faces[g],r=void 0!==this.faceVertexUvs[0][g],u=0<s.normal.length(),v=0<s.vertexNormals.length,y=1!==s.color.r||1!==s.color.g||1!==s.color.b,C=0<s.vertexColors.length,x=0,x=a(x,0,0),x=a(x,1,!1),x=a(x,2,!1),x=a(x,3,r),x=a(x,4,u),x=a(x,5,v),x=a(x,6,y),x=a(x,7,C);h.push(x);h.push(s.a,s.b,s.c);r&&(r=this.faceVertexUvs[0][g], -h.push(d(r[0]),d(r[1]),d(r[2])));u&&h.push(b(s.normal));v&&(u=s.vertexNormals,h.push(b(u[0]),b(u[1]),b(u[2])));y&&h.push(c(s.color));C&&(s=s.vertexColors,h.push(c(s[0]),c(s[1]),c(s[2])))}e.data={};e.data.vertices=f;e.data.normals=k;0<p.length&&(e.data.colors=p);0<m.length&&(e.data.uvs=[m]);e.data.faces=h;return e},clone:function(){for(var a=new THREE.Geometry,b=this.vertices,c=0,d=b.length;c<d;c++)a.vertices.push(b[c].clone());b=this.faces;c=0;for(d=b.length;c<d;c++)a.faces.push(b[c].clone());c=0; -for(d=this.faceVertexUvs.length;c<d;c++){b=this.faceVertexUvs[c];void 0===a.faceVertexUvs[c]&&(a.faceVertexUvs[c]=[]);for(var e=0,f=b.length;e<f;e++){for(var g=b[e],h=[],k=0,n=g.length;k<n;k++)h.push(g[k].clone());a.faceVertexUvs[c].push(h)}}return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.Geometry.prototype);THREE.GeometryIdCount=0; +d;c++)e=this.faces[c],e.normal=e.__originalFaceNormal,e.vertexNormals=e.__originalVertexNormals},computeTangents:function(){var a,b,c,d,e,f,g,h,k,l,p,q,n,t,r,s,u,v=[],x=[];c=new THREE.Vector3;var D=new THREE.Vector3,w=new THREE.Vector3,y=new THREE.Vector3,A=new THREE.Vector3;a=0;for(b=this.vertices.length;a<b;a++)v[a]=new THREE.Vector3,x[a]=new THREE.Vector3;a=0;for(b=this.faces.length;a<b;a++)e=this.faces[a],f=this.faceVertexUvs[0][a],d=e.a,u=e.b,e=e.c,g=this.vertices[d],h=this.vertices[u],k=this.vertices[e], +l=f[0],p=f[1],q=f[2],f=h.x-g.x,n=k.x-g.x,t=h.y-g.y,r=k.y-g.y,h=h.z-g.z,g=k.z-g.z,k=p.x-l.x,s=q.x-l.x,p=p.y-l.y,l=q.y-l.y,q=1/(k*l-s*p),c.set((l*f-p*n)*q,(l*t-p*r)*q,(l*h-p*g)*q),D.set((k*n-s*f)*q,(k*r-s*t)*q,(k*g-s*h)*q),v[d].add(c),v[u].add(c),v[e].add(c),x[d].add(D),x[u].add(D),x[e].add(D);D=["a","b","c","d"];a=0;for(b=this.faces.length;a<b;a++)for(e=this.faces[a],c=0;c<Math.min(e.vertexNormals.length,3);c++)A.copy(e.vertexNormals[c]),d=e[D[c]],u=v[d],w.copy(u),w.sub(A.multiplyScalar(A.dot(u))).normalize(), +y.crossVectors(e.vertexNormals[c],u),d=y.dot(x[d]),d=0>d?-1:1,e.vertexTangents[c]=new THREE.Vector4(w.x,w.y,w.z,d);this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;c<d;c++)0<c&&(a+=b[c].distanceTo(b[c-1])),this.lineDistances[c]=a},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new THREE.Box3);this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new THREE.Sphere); +this.boundingSphere.setFromPoints(this.vertices)},merge:function(a,b,c){if(!1===a instanceof THREE.Geometry)THREE.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",a);else{var d,e=this.vertices.length,f=this.vertices,g=a.vertices,h=this.faces,k=a.faces,l=this.faceVertexUvs[0];a=a.faceVertexUvs[0];void 0===c&&(c=0);void 0!==b&&(d=(new THREE.Matrix3).getNormalMatrix(b));for(var p=0,q=g.length;p<q;p++){var n=g[p].clone();void 0!==b&&n.applyMatrix4(b);f.push(n)}p=0;for(q=k.length;p< +q;p++){var g=k[p],t,r=g.vertexNormals,s=g.vertexColors,n=new THREE.Face3(g.a+e,g.b+e,g.c+e);n.normal.copy(g.normal);void 0!==d&&n.normal.applyMatrix3(d).normalize();b=0;for(f=r.length;b<f;b++)t=r[b].clone(),void 0!==d&&t.applyMatrix3(d).normalize(),n.vertexNormals.push(t);n.color.copy(g.color);b=0;for(f=s.length;b<f;b++)t=s[b],n.vertexColors.push(t.clone());n.materialIndex=g.materialIndex+c;h.push(n)}p=0;for(q=a.length;p<q;p++)if(c=a[p],d=[],void 0!==c){b=0;for(f=c.length;b<f;b++)d.push(c[b].clone()); +l.push(d)}}},mergeMesh:function(a){!1===a instanceof THREE.Mesh?THREE.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",a):(a.matrixAutoUpdate&&a.updateMatrix(),this.merge(a.geometry,a.matrix))},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,4),f,g;f=0;for(g=this.vertices.length;f<g;f++)d=this.vertices[f],d=Math.round(d.x*e)+"_"+Math.round(d.y*e)+"_"+Math.round(d.z*e),void 0===a[d]?(a[d]=f,b.push(this.vertices[f]),c[f]=b.length-1):c[f]=c[a[d]];a=[];f=0;for(g=this.faces.length;f< +g;f++)for(e=this.faces[f],e.a=c[e.a],e.b=c[e.b],e.c=c[e.c],e=[e.a,e.b,e.c],d=0;3>d;d++)if(e[d]==e[(d+1)%3]){a.push(f);break}for(f=a.length-1;0<=f;f--)for(e=a[f],this.faces.splice(e,1),c=0,g=this.faceVertexUvs.length;c<g;c++)this.faceVertexUvs[c].splice(e,1);f=this.vertices.length-b.length;this.vertices=b;return f},toJSON:function(){function a(a,b,c){return c?a|1<<b:a&~(1<<b)}function b(a){var b=a.x.toString()+a.y.toString()+a.z.toString();if(void 0!==l[b])return l[b];l[b]=k.length/3;k.push(a.x,a.y, +a.z);return l[b]}function c(a){var b=a.r.toString()+a.g.toString()+a.b.toString();if(void 0!==q[b])return q[b];q[b]=p.length;p.push(a.getHex());return q[b]}function d(a){var b=a.x.toString()+a.y.toString();if(void 0!==t[b])return t[b];t[b]=n.length/2;n.push(a.x,a.y);return t[b]}var e={metadata:{version:4,type:"BufferGeometry",generator:"BufferGeometryExporter"},uuid:this.uuid,type:this.type};""!==this.name&&(e.name=this.name);if(void 0!==this.parameters){var f=this.parameters,g;for(g in f)void 0!== +f[g]&&(e[g]=f[g]);return e}f=[];for(g=0;g<this.vertices.length;g++){var h=this.vertices[g];f.push(h.x,h.y,h.z)}var h=[],k=[],l={},p=[],q={},n=[],t={};for(g=0;g<this.faces.length;g++){var r=this.faces[g],s=void 0!==this.faceVertexUvs[0][g],u=0<r.normal.length(),v=0<r.vertexNormals.length,x=1!==r.color.r||1!==r.color.g||1!==r.color.b,D=0<r.vertexColors.length,w=0,w=a(w,0,0),w=a(w,1,!1),w=a(w,2,!1),w=a(w,3,s),w=a(w,4,u),w=a(w,5,v),w=a(w,6,x),w=a(w,7,D);h.push(w);h.push(r.a,r.b,r.c);s&&(s=this.faceVertexUvs[0][g], +h.push(d(s[0]),d(s[1]),d(s[2])));u&&h.push(b(r.normal));v&&(u=r.vertexNormals,h.push(b(u[0]),b(u[1]),b(u[2])));x&&h.push(c(r.color));D&&(r=r.vertexColors,h.push(c(r[0]),c(r[1]),c(r[2])))}e.data={};e.data.vertices=f;e.data.normals=k;0<p.length&&(e.data.colors=p);0<n.length&&(e.data.uvs=[n]);e.data.faces=h;return e},clone:function(){for(var a=new THREE.Geometry,b=this.vertices,c=0,d=b.length;c<d;c++)a.vertices.push(b[c].clone());b=this.faces;c=0;for(d=b.length;c<d;c++)a.faces.push(b[c].clone());c=0; +for(d=this.faceVertexUvs.length;c<d;c++){b=this.faceVertexUvs[c];void 0===a.faceVertexUvs[c]&&(a.faceVertexUvs[c]=[]);for(var e=0,f=b.length;e<f;e++){for(var g=b[e],h=[],k=0,l=g.length;k<l;k++)h.push(g[k].clone());a.faceVertexUvs[c].push(h)}}return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.Geometry.prototype);THREE.GeometryIdCount=0; THREE.Camera=function(){THREE.Object3D.call(this);this.type="Camera";this.matrixWorldInverse=new THREE.Matrix4;this.projectionMatrix=new THREE.Matrix4};THREE.Camera.prototype=Object.create(THREE.Object3D.prototype);THREE.Camera.prototype.constructor=THREE.Camera;THREE.Camera.prototype.getWorldDirection=function(){var a=new THREE.Quaternion;return function(b){b=b||new THREE.Vector3;this.getWorldQuaternion(a);return b.set(0,0,-1).applyQuaternion(a)}}(); THREE.Camera.prototype.lookAt=function(){var a=new THREE.Matrix4;return function(b){a.lookAt(this.position,b,this.up);this.quaternion.setFromRotationMatrix(a)}}();THREE.Camera.prototype.clone=function(a){void 0===a&&(a=new THREE.Camera);THREE.Object3D.prototype.clone.call(this,a);a.matrixWorldInverse.copy(this.matrixWorldInverse);a.projectionMatrix.copy(this.projectionMatrix);return a}; THREE.CubeCamera=function(a,b,c){THREE.Object3D.call(this);this.type="CubeCamera";var d=new THREE.PerspectiveCamera(90,1,a,b);d.up.set(0,-1,0);d.lookAt(new THREE.Vector3(1,0,0));this.add(d);var e=new THREE.PerspectiveCamera(90,1,a,b);e.up.set(0,-1,0);e.lookAt(new THREE.Vector3(-1,0,0));this.add(e);var f=new THREE.PerspectiveCamera(90,1,a,b);f.up.set(0,0,1);f.lookAt(new THREE.Vector3(0,1,0));this.add(f);var g=new THREE.PerspectiveCamera(90,1,a,b);g.up.set(0,0,-1);g.lookAt(new THREE.Vector3(0,-1,0)); -this.add(g);var h=new THREE.PerspectiveCamera(90,1,a,b);h.up.set(0,-1,0);h.lookAt(new THREE.Vector3(0,0,1));this.add(h);var k=new THREE.PerspectiveCamera(90,1,a,b);k.up.set(0,-1,0);k.lookAt(new THREE.Vector3(0,0,-1));this.add(k);this.renderTarget=new THREE.WebGLRenderTargetCube(c,c,{format:THREE.RGBFormat,magFilter:THREE.LinearFilter,minFilter:THREE.LinearFilter});this.updateCubeMap=function(a,b){var c=this.renderTarget,m=c.generateMipmaps;c.generateMipmaps=!1;c.activeCubeFace=0;a.render(b,d,c);c.activeCubeFace= -1;a.render(b,e,c);c.activeCubeFace=2;a.render(b,f,c);c.activeCubeFace=3;a.render(b,g,c);c.activeCubeFace=4;a.render(b,h,c);c.generateMipmaps=m;c.activeCubeFace=5;a.render(b,k,c)}};THREE.CubeCamera.prototype=Object.create(THREE.Object3D.prototype);THREE.CubeCamera.prototype.constructor=THREE.CubeCamera; +this.add(g);var h=new THREE.PerspectiveCamera(90,1,a,b);h.up.set(0,-1,0);h.lookAt(new THREE.Vector3(0,0,1));this.add(h);var k=new THREE.PerspectiveCamera(90,1,a,b);k.up.set(0,-1,0);k.lookAt(new THREE.Vector3(0,0,-1));this.add(k);this.renderTarget=new THREE.WebGLRenderTargetCube(c,c,{format:THREE.RGBFormat,magFilter:THREE.LinearFilter,minFilter:THREE.LinearFilter});this.updateCubeMap=function(a,b){var c=this.renderTarget,n=c.generateMipmaps;c.generateMipmaps=!1;c.activeCubeFace=0;a.render(b,d,c);c.activeCubeFace= +1;a.render(b,e,c);c.activeCubeFace=2;a.render(b,f,c);c.activeCubeFace=3;a.render(b,g,c);c.activeCubeFace=4;a.render(b,h,c);c.generateMipmaps=n;c.activeCubeFace=5;a.render(b,k,c)}};THREE.CubeCamera.prototype=Object.create(THREE.Object3D.prototype);THREE.CubeCamera.prototype.constructor=THREE.CubeCamera; THREE.OrthographicCamera=function(a,b,c,d,e,f){THREE.Camera.call(this);this.type="OrthographicCamera";this.zoom=1;this.left=a;this.right=b;this.top=c;this.bottom=d;this.near=void 0!==e?e:.1;this.far=void 0!==f?f:2E3;this.updateProjectionMatrix()};THREE.OrthographicCamera.prototype=Object.create(THREE.Camera.prototype);THREE.OrthographicCamera.prototype.constructor=THREE.OrthographicCamera; THREE.OrthographicCamera.prototype.updateProjectionMatrix=function(){var a=(this.right-this.left)/(2*this.zoom),b=(this.top-this.bottom)/(2*this.zoom),c=(this.right+this.left)/2,d=(this.top+this.bottom)/2;this.projectionMatrix.makeOrthographic(c-a,c+a,d+b,d-b,this.near,this.far)}; THREE.OrthographicCamera.prototype.clone=function(){var a=new THREE.OrthographicCamera;THREE.Camera.prototype.clone.call(this,a);a.zoom=this.zoom;a.left=this.left;a.right=this.right;a.top=this.top;a.bottom=this.bottom;a.near=this.near;a.far=this.far;a.projectionMatrix.copy(this.projectionMatrix);return a}; @@ -239,62 +243,66 @@ this.shadowCascadeOffset=new THREE.Vector3(0,0,-1E3);this.shadowCascadeCount=2;t THREE.DirectionalLight.prototype.clone=function(){var a=new THREE.DirectionalLight;THREE.Light.prototype.clone.call(this,a);a.target=this.target.clone();a.intensity=this.intensity;a.castShadow=this.castShadow;a.onlyShadow=this.onlyShadow;a.shadowCameraNear=this.shadowCameraNear;a.shadowCameraFar=this.shadowCameraFar;a.shadowCameraLeft=this.shadowCameraLeft;a.shadowCameraRight=this.shadowCameraRight;a.shadowCameraTop=this.shadowCameraTop;a.shadowCameraBottom=this.shadowCameraBottom;a.shadowCameraVisible= this.shadowCameraVisible;a.shadowBias=this.shadowBias;a.shadowDarkness=this.shadowDarkness;a.shadowMapWidth=this.shadowMapWidth;a.shadowMapHeight=this.shadowMapHeight;a.shadowCascade=this.shadowCascade;a.shadowCascadeOffset.copy(this.shadowCascadeOffset);a.shadowCascadeCount=this.shadowCascadeCount;a.shadowCascadeBias=this.shadowCascadeBias.slice(0);a.shadowCascadeWidth=this.shadowCascadeWidth.slice(0);a.shadowCascadeHeight=this.shadowCascadeHeight.slice(0);a.shadowCascadeNearZ=this.shadowCascadeNearZ.slice(0); a.shadowCascadeFarZ=this.shadowCascadeFarZ.slice(0);return a};THREE.HemisphereLight=function(a,b,c){THREE.Light.call(this,a);this.type="HemisphereLight";this.position.set(0,100,0);this.groundColor=new THREE.Color(b);this.intensity=void 0!==c?c:1};THREE.HemisphereLight.prototype=Object.create(THREE.Light.prototype);THREE.HemisphereLight.prototype.constructor=THREE.HemisphereLight; -THREE.HemisphereLight.prototype.clone=function(){var a=new THREE.HemisphereLight;THREE.Light.prototype.clone.call(this,a);a.groundColor.copy(this.groundColor);a.intensity=this.intensity;return a};THREE.PointLight=function(a,b,c){THREE.Light.call(this,a);this.type="PointLight";this.intensity=void 0!==b?b:1;this.distance=void 0!==c?c:0};THREE.PointLight.prototype=Object.create(THREE.Light.prototype);THREE.PointLight.prototype.constructor=THREE.PointLight; -THREE.PointLight.prototype.clone=function(){var a=new THREE.PointLight;THREE.Light.prototype.clone.call(this,a);a.intensity=this.intensity;a.distance=this.distance;return a}; -THREE.SpotLight=function(a,b,c,d,e){THREE.Light.call(this,a);this.type="SpotLight";this.position.set(0,1,0);this.target=new THREE.Object3D;this.intensity=void 0!==b?b:1;this.distance=void 0!==c?c:0;this.angle=void 0!==d?d:Math.PI/3;this.exponent=void 0!==e?e:10;this.onlyShadow=this.castShadow=!1;this.shadowCameraNear=50;this.shadowCameraFar=5E3;this.shadowCameraFov=50;this.shadowCameraVisible=!1;this.shadowBias=0;this.shadowDarkness=.5;this.shadowMapHeight=this.shadowMapWidth=512;this.shadowMatrix= -this.shadowCamera=this.shadowMapSize=this.shadowMap=null};THREE.SpotLight.prototype=Object.create(THREE.Light.prototype);THREE.SpotLight.prototype.constructor=THREE.SpotLight; -THREE.SpotLight.prototype.clone=function(){var a=new THREE.SpotLight;THREE.Light.prototype.clone.call(this,a);a.target=this.target.clone();a.intensity=this.intensity;a.distance=this.distance;a.angle=this.angle;a.exponent=this.exponent;a.castShadow=this.castShadow;a.onlyShadow=this.onlyShadow;a.shadowCameraNear=this.shadowCameraNear;a.shadowCameraFar=this.shadowCameraFar;a.shadowCameraFov=this.shadowCameraFov;a.shadowCameraVisible=this.shadowCameraVisible;a.shadowBias=this.shadowBias;a.shadowDarkness= -this.shadowDarkness;a.shadowMapWidth=this.shadowMapWidth;a.shadowMapHeight=this.shadowMapHeight;return a};THREE.Cache=function(){this.files={}};THREE.Cache.prototype={constructor:THREE.Cache,add:function(a,b){this.files[a]=b},get:function(a){return this.files[a]},remove:function(a){delete this.files[a]},clear:function(){this.files={}}}; +THREE.HemisphereLight.prototype.clone=function(){var a=new THREE.HemisphereLight;THREE.Light.prototype.clone.call(this,a);a.groundColor.copy(this.groundColor);a.intensity=this.intensity;return a};THREE.PointLight=function(a,b,c,d){THREE.Light.call(this,a);this.type="PointLight";this.intensity=void 0!==b?b:1;this.distance=void 0!==c?c:0;this.decay=void 0!==d?d:1};THREE.PointLight.prototype=Object.create(THREE.Light.prototype);THREE.PointLight.prototype.constructor=THREE.PointLight; +THREE.PointLight.prototype.clone=function(){var a=new THREE.PointLight;THREE.Light.prototype.clone.call(this,a);a.intensity=this.intensity;a.distance=this.distance;a.decay=this.decay;return a}; +THREE.SpotLight=function(a,b,c,d,e,f){THREE.Light.call(this,a);this.type="SpotLight";this.position.set(0,1,0);this.target=new THREE.Object3D;this.intensity=void 0!==b?b:1;this.distance=void 0!==c?c:0;this.angle=void 0!==d?d:Math.PI/3;this.exponent=void 0!==e?e:10;this.decay=void 0!==f?f:1;this.onlyShadow=this.castShadow=!1;this.shadowCameraNear=50;this.shadowCameraFar=5E3;this.shadowCameraFov=50;this.shadowCameraVisible=!1;this.shadowBias=0;this.shadowDarkness=.5;this.shadowMapHeight=this.shadowMapWidth= +512;this.shadowMatrix=this.shadowCamera=this.shadowMapSize=this.shadowMap=null};THREE.SpotLight.prototype=Object.create(THREE.Light.prototype);THREE.SpotLight.prototype.constructor=THREE.SpotLight; +THREE.SpotLight.prototype.clone=function(){var a=new THREE.SpotLight;THREE.Light.prototype.clone.call(this,a);a.target=this.target.clone();a.intensity=this.intensity;a.distance=this.distance;a.angle=this.angle;a.exponent=this.exponent;a.decay=this.decay;a.castShadow=this.castShadow;a.onlyShadow=this.onlyShadow;a.shadowCameraNear=this.shadowCameraNear;a.shadowCameraFar=this.shadowCameraFar;a.shadowCameraFov=this.shadowCameraFov;a.shadowCameraVisible=this.shadowCameraVisible;a.shadowBias=this.shadowBias; +a.shadowDarkness=this.shadowDarkness;a.shadowMapWidth=this.shadowMapWidth;a.shadowMapHeight=this.shadowMapHeight;return a};THREE.Cache={files:{},add:function(a,b){this.files[a]=b},get:function(a){return this.files[a]},remove:function(a){delete this.files[a]},clear:function(){this.files={}}}; THREE.Loader=function(a){this.statusDomElement=(this.showStatus=a)?THREE.Loader.prototype.addStatusElement():null;this.imageLoader=new THREE.ImageLoader;this.onLoadStart=function(){};this.onLoadProgress=function(){};this.onLoadComplete=function(){}}; THREE.Loader.prototype={constructor:THREE.Loader,crossOrigin:void 0,addStatusElement:function(){var a=document.createElement("div");a.style.position="absolute";a.style.right="0px";a.style.top="0px";a.style.fontSize="0.8em";a.style.textAlign="left";a.style.background="rgba(0,0,0,0.25)";a.style.color="#fff";a.style.width="120px";a.style.padding="0.5em 0.5em 0.5em 0.5em";a.style.zIndex=1E3;a.innerHTML="Loading ...";return a},updateProgress:function(a){var b="Loaded ",b=a.total?b+((100*a.loaded/a.total).toFixed(0)+ "%"):b+((a.loaded/1024).toFixed(2)+" KB");this.statusDomElement.innerHTML=b},extractUrlBase:function(a){a=a.split("/");if(1===a.length)return"./";a.pop();return a.join("/")+"/"},initMaterials:function(a,b){for(var c=[],d=0;d<a.length;++d)c[d]=this.createMaterial(a[d],b);return c},needsTangents:function(a){for(var b=0,c=a.length;b<c;b++)if(a[b]instanceof THREE.ShaderMaterial)return!0;return!1},createMaterial:function(a,b){function c(a){a=Math.log(a)/Math.LN2;return Math.pow(2,Math.round(a))}function d(a, -d,e,g,h,k,r){var u=b+e,v,y=THREE.Loader.Handlers.get(u);null!==y?v=y.load(u):(v=new THREE.Texture,y=f.imageLoader,y.crossOrigin=f.crossOrigin,y.load(u,function(a){if(!1===THREE.Math.isPowerOfTwo(a.width)||!1===THREE.Math.isPowerOfTwo(a.height)){var b=c(a.width),d=c(a.height),e=document.createElement("canvas");e.width=b;e.height=d;e.getContext("2d").drawImage(a,0,0,b,d);v.image=e}else v.image=a;v.needsUpdate=!0}));v.sourceFile=e;g&&(v.repeat.set(g[0],g[1]),1!==g[0]&&(v.wrapS=THREE.RepeatWrapping), -1!==g[1]&&(v.wrapT=THREE.RepeatWrapping));h&&v.offset.set(h[0],h[1]);k&&(e={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping},void 0!==e[k[0]]&&(v.wrapS=e[k[0]]),void 0!==e[k[1]]&&(v.wrapT=e[k[1]]));r&&(v.anisotropy=r);a[d]=v}function e(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]}var f=this,g="MeshLambertMaterial",h={color:15658734,opacity:1,map:null,lightMap:null,normalMap:null,bumpMap:null,wireframe:!1};if(a.shading){var k=a.shading.toLowerCase();"phong"===k?g="MeshPhongMaterial": -"basic"===k&&(g="MeshBasicMaterial")}void 0!==a.blending&&void 0!==THREE[a.blending]&&(h.blending=THREE[a.blending]);if(void 0!==a.transparent||1>a.opacity)h.transparent=a.transparent;void 0!==a.depthTest&&(h.depthTest=a.depthTest);void 0!==a.depthWrite&&(h.depthWrite=a.depthWrite);void 0!==a.visible&&(h.visible=a.visible);void 0!==a.flipSided&&(h.side=THREE.BackSide);void 0!==a.doubleSided&&(h.side=THREE.DoubleSide);void 0!==a.wireframe&&(h.wireframe=a.wireframe);void 0!==a.vertexColors&&("face"=== -a.vertexColors?h.vertexColors=THREE.FaceColors:a.vertexColors&&(h.vertexColors=THREE.VertexColors));a.colorDiffuse?h.color=e(a.colorDiffuse):a.DbgColor&&(h.color=a.DbgColor);a.colorSpecular&&(h.specular=e(a.colorSpecular));a.colorAmbient&&(h.ambient=e(a.colorAmbient));a.colorEmissive&&(h.emissive=e(a.colorEmissive));a.transparency&&(h.opacity=a.transparency);a.specularCoef&&(h.shininess=a.specularCoef);a.mapDiffuse&&b&&d(h,"map",a.mapDiffuse,a.mapDiffuseRepeat,a.mapDiffuseOffset,a.mapDiffuseWrap, -a.mapDiffuseAnisotropy);a.mapLight&&b&&d(h,"lightMap",a.mapLight,a.mapLightRepeat,a.mapLightOffset,a.mapLightWrap,a.mapLightAnisotropy);a.mapBump&&b&&d(h,"bumpMap",a.mapBump,a.mapBumpRepeat,a.mapBumpOffset,a.mapBumpWrap,a.mapBumpAnisotropy);a.mapNormal&&b&&d(h,"normalMap",a.mapNormal,a.mapNormalRepeat,a.mapNormalOffset,a.mapNormalWrap,a.mapNormalAnisotropy);a.mapSpecular&&b&&d(h,"specularMap",a.mapSpecular,a.mapSpecularRepeat,a.mapSpecularOffset,a.mapSpecularWrap,a.mapSpecularAnisotropy);a.mapAlpha&& -b&&d(h,"alphaMap",a.mapAlpha,a.mapAlphaRepeat,a.mapAlphaOffset,a.mapAlphaWrap,a.mapAlphaAnisotropy);a.mapBumpScale&&(h.bumpScale=a.mapBumpScale);a.mapNormalFactor&&(h.normalScale=new THREE.Vector2(a.mapNormalFactor,a.mapNormalFactor));g=new THREE[g](h);void 0!==a.DbgName&&(g.name=a.DbgName);return g}};THREE.Loader.Handlers={handlers:[],add:function(a,b){this.handlers.push(a,b)},get:function(a){for(var b=0,c=this.handlers.length;b<c;b+=2){var d=this.handlers[b+1];if(this.handlers[b].test(a))return d}return null}}; -THREE.XHRLoader=function(a){this.cache=new THREE.Cache;this.manager=void 0!==a?a:THREE.DefaultLoadingManager}; -THREE.XHRLoader.prototype={constructor:THREE.XHRLoader,load:function(a,b,c,d){var e=this,f=e.cache.get(a);void 0!==f?b&&b(f):(f=new XMLHttpRequest,f.open("GET",a,!0),f.addEventListener("load",function(c){e.cache.add(a,this.response);b&&b(this.response);e.manager.itemEnd(a)},!1),void 0!==c&&f.addEventListener("progress",function(a){c(a)},!1),void 0!==d&&f.addEventListener("error",function(a){d(a)},!1),void 0!==this.crossOrigin&&(f.crossOrigin=this.crossOrigin),void 0!==this.responseType&&(f.responseType= -this.responseType),f.send(null),e.manager.itemStart(a))},setResponseType:function(a){this.responseType=a},setCrossOrigin:function(a){this.crossOrigin=a}};THREE.ImageLoader=function(a){this.cache=new THREE.Cache;this.manager=void 0!==a?a:THREE.DefaultLoadingManager}; -THREE.ImageLoader.prototype={constructor:THREE.ImageLoader,load:function(a,b,c,d){var e=this,f=e.cache.get(a);if(void 0!==f)b(f);else return f=document.createElement("img"),void 0!==b&&f.addEventListener("load",function(c){e.cache.add(a,this);b(this);e.manager.itemEnd(a)},!1),void 0!==c&&f.addEventListener("progress",function(a){c(a)},!1),void 0!==d&&f.addEventListener("error",function(a){d(a)},!1),void 0!==this.crossOrigin&&(f.crossOrigin=this.crossOrigin),f.src=a,e.manager.itemStart(a),f},setCrossOrigin:function(a){this.crossOrigin= +d,e,g,h,k,s){var u=b+e,v,x=THREE.Loader.Handlers.get(u);null!==x?v=x.load(u):(v=new THREE.Texture,x=f.imageLoader,x.crossOrigin=f.crossOrigin,x.load(u,function(a){if(!1===THREE.Math.isPowerOfTwo(a.width)||!1===THREE.Math.isPowerOfTwo(a.height)){var b=c(a.width),d=c(a.height),e=document.createElement("canvas");e.width=b;e.height=d;e.getContext("2d").drawImage(a,0,0,b,d);v.image=e}else v.image=a;v.needsUpdate=!0}));v.sourceFile=e;g&&(v.repeat.set(g[0],g[1]),1!==g[0]&&(v.wrapS=THREE.RepeatWrapping), +1!==g[1]&&(v.wrapT=THREE.RepeatWrapping));h&&v.offset.set(h[0],h[1]);k&&(e={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping},void 0!==e[k[0]]&&(v.wrapS=e[k[0]]),void 0!==e[k[1]]&&(v.wrapT=e[k[1]]));s&&(v.anisotropy=s);a[d]=v}function e(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]}var f=this,g="MeshLambertMaterial",h={color:15658734,opacity:1,map:null,lightMap:null,normalMap:null,bumpMap:null,wireframe:!1};if(a.shading){var k=a.shading.toLowerCase();"phong"===k?g="MeshPhongMaterial": +"basic"===k&&(g="MeshBasicMaterial")}void 0!==a.blending&&void 0!==THREE[a.blending]&&(h.blending=THREE[a.blending]);void 0!==a.transparent&&(h.transparent=a.transparent);void 0!==a.opacity&&1>a.opacity&&(h.transparent=!0);void 0!==a.depthTest&&(h.depthTest=a.depthTest);void 0!==a.depthWrite&&(h.depthWrite=a.depthWrite);void 0!==a.visible&&(h.visible=a.visible);void 0!==a.flipSided&&(h.side=THREE.BackSide);void 0!==a.doubleSided&&(h.side=THREE.DoubleSide);void 0!==a.wireframe&&(h.wireframe=a.wireframe); +void 0!==a.vertexColors&&("face"===a.vertexColors?h.vertexColors=THREE.FaceColors:a.vertexColors&&(h.vertexColors=THREE.VertexColors));a.colorDiffuse?h.color=e(a.colorDiffuse):a.DbgColor&&(h.color=a.DbgColor);a.colorSpecular&&(h.specular=e(a.colorSpecular));a.colorEmissive&&(h.emissive=e(a.colorEmissive));void 0!==a.transparency&&(console.warn("THREE.Loader: transparency has been renamed to opacity"),a.opacity=a.transparency);void 0!==a.opacity&&(h.opacity=a.opacity);a.specularCoef&&(h.shininess= +a.specularCoef);a.mapDiffuse&&b&&d(h,"map",a.mapDiffuse,a.mapDiffuseRepeat,a.mapDiffuseOffset,a.mapDiffuseWrap,a.mapDiffuseAnisotropy);a.mapLight&&b&&d(h,"lightMap",a.mapLight,a.mapLightRepeat,a.mapLightOffset,a.mapLightWrap,a.mapLightAnisotropy);a.mapBump&&b&&d(h,"bumpMap",a.mapBump,a.mapBumpRepeat,a.mapBumpOffset,a.mapBumpWrap,a.mapBumpAnisotropy);a.mapNormal&&b&&d(h,"normalMap",a.mapNormal,a.mapNormalRepeat,a.mapNormalOffset,a.mapNormalWrap,a.mapNormalAnisotropy);a.mapSpecular&&b&&d(h,"specularMap", +a.mapSpecular,a.mapSpecularRepeat,a.mapSpecularOffset,a.mapSpecularWrap,a.mapSpecularAnisotropy);a.mapAlpha&&b&&d(h,"alphaMap",a.mapAlpha,a.mapAlphaRepeat,a.mapAlphaOffset,a.mapAlphaWrap,a.mapAlphaAnisotropy);a.mapBumpScale&&(h.bumpScale=a.mapBumpScale);a.mapNormalFactor&&(h.normalScale=new THREE.Vector2(a.mapNormalFactor,a.mapNormalFactor));g=new THREE[g](h);void 0!==a.DbgName&&(g.name=a.DbgName);return g}}; +THREE.Loader.Handlers={handlers:[],add:function(a,b){this.handlers.push(a,b)},get:function(a){for(var b=0,c=this.handlers.length;b<c;b+=2){var d=this.handlers[b+1];if(this.handlers[b].test(a))return d}return null}};THREE.XHRLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager}; +THREE.XHRLoader.prototype={constructor:THREE.XHRLoader,load:function(a,b,c,d){var e=this,f=THREE.Cache.get(a);void 0!==f?b&&b(f):(f=new XMLHttpRequest,f.open("GET",a,!0),f.addEventListener("load",function(c){THREE.Cache.add(a,this.response);b&&b(this.response);e.manager.itemEnd(a)},!1),void 0!==c&&f.addEventListener("progress",function(a){c(a)},!1),void 0!==d&&f.addEventListener("error",function(a){d(a)},!1),void 0!==this.crossOrigin&&(f.crossOrigin=this.crossOrigin),void 0!==this.responseType&&(f.responseType= +this.responseType),f.send(null),e.manager.itemStart(a))},setResponseType:function(a){this.responseType=a},setCrossOrigin:function(a){this.crossOrigin=a}};THREE.ImageLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager}; +THREE.ImageLoader.prototype={constructor:THREE.ImageLoader,load:function(a,b,c,d){var e=this,f=THREE.Cache.get(a);if(void 0!==f)b(f);else return f=document.createElement("img"),f.addEventListener("load",function(c){THREE.Cache.add(a,this);b&&b(this);e.manager.itemEnd(a)},!1),void 0!==c&&f.addEventListener("progress",function(a){c(a)},!1),void 0!==d&&f.addEventListener("error",function(a){d(a)},!1),void 0!==this.crossOrigin&&(f.crossOrigin=this.crossOrigin),f.src=a,e.manager.itemStart(a),f},setCrossOrigin:function(a){this.crossOrigin= a}};THREE.JSONLoader=function(a){THREE.Loader.call(this,a);this.withCredentials=!1};THREE.JSONLoader.prototype=Object.create(THREE.Loader.prototype);THREE.JSONLoader.prototype.constructor=THREE.JSONLoader;THREE.JSONLoader.prototype.load=function(a,b,c){c=c&&"string"===typeof c?c:this.extractUrlBase(a);this.onLoadStart();this.loadAjaxJSON(this,a,b,c)}; -THREE.JSONLoader.prototype.loadAjaxJSON=function(a,b,c,d,e){var f=new XMLHttpRequest,g=0;f.onreadystatechange=function(){if(f.readyState===f.DONE)if(200===f.status||0===f.status){if(f.responseText){var h=JSON.parse(f.responseText);if(void 0!==h.metadata&&"scene"===h.metadata.type){console.error('THREE.JSONLoader: "'+b+'" seems to be a Scene. Use THREE.SceneLoader instead.');return}h=a.parse(h,d);c(h.geometry,h.materials)}else console.error('THREE.JSONLoader: "'+b+'" seems to be unreachable or the file is empty.'); -a.onLoadComplete()}else console.error("THREE.JSONLoader: Couldn't load \""+b+'" ('+f.status+")");else f.readyState===f.LOADING?e&&(0===g&&(g=f.getResponseHeader("Content-Length")),e({total:g,loaded:f.responseText.length})):f.readyState===f.HEADERS_RECEIVED&&void 0!==e&&(g=f.getResponseHeader("Content-Length"))};f.open("GET",b,!0);f.withCredentials=this.withCredentials;f.send(null)}; -THREE.JSONLoader.prototype.parse=function(a,b){var c=new THREE.Geometry,d=void 0!==a.scale?1/a.scale:1;(function(b){var d,g,h,k,n,p,q,m,t,s,r,u,v,y=a.faces;p=a.vertices;var C=a.normals,x=a.colors,F=0;if(void 0!==a.uvs){for(d=0;d<a.uvs.length;d++)a.uvs[d].length&&F++;for(d=0;d<F;d++)c.faceVertexUvs[d]=[]}k=0;for(n=p.length;k<n;)d=new THREE.Vector3,d.x=p[k++]*b,d.y=p[k++]*b,d.z=p[k++]*b,c.vertices.push(d);k=0;for(n=y.length;k<n;)if(b=y[k++],t=b&1,h=b&2,d=b&8,q=b&16,s=b&32,p=b&64,b&=128,t){t=new THREE.Face3; -t.a=y[k];t.b=y[k+1];t.c=y[k+3];r=new THREE.Face3;r.a=y[k+1];r.b=y[k+2];r.c=y[k+3];k+=4;h&&(h=y[k++],t.materialIndex=h,r.materialIndex=h);h=c.faces.length;if(d)for(d=0;d<F;d++)for(u=a.uvs[d],c.faceVertexUvs[d][h]=[],c.faceVertexUvs[d][h+1]=[],g=0;4>g;g++)m=y[k++],v=u[2*m],m=u[2*m+1],v=new THREE.Vector2(v,m),2!==g&&c.faceVertexUvs[d][h].push(v),0!==g&&c.faceVertexUvs[d][h+1].push(v);q&&(q=3*y[k++],t.normal.set(C[q++],C[q++],C[q]),r.normal.copy(t.normal));if(s)for(d=0;4>d;d++)q=3*y[k++],s=new THREE.Vector3(C[q++], -C[q++],C[q]),2!==d&&t.vertexNormals.push(s),0!==d&&r.vertexNormals.push(s);p&&(p=y[k++],p=x[p],t.color.setHex(p),r.color.setHex(p));if(b)for(d=0;4>d;d++)p=y[k++],p=x[p],2!==d&&t.vertexColors.push(new THREE.Color(p)),0!==d&&r.vertexColors.push(new THREE.Color(p));c.faces.push(t);c.faces.push(r)}else{t=new THREE.Face3;t.a=y[k++];t.b=y[k++];t.c=y[k++];h&&(h=y[k++],t.materialIndex=h);h=c.faces.length;if(d)for(d=0;d<F;d++)for(u=a.uvs[d],c.faceVertexUvs[d][h]=[],g=0;3>g;g++)m=y[k++],v=u[2*m],m=u[2*m+1], -v=new THREE.Vector2(v,m),c.faceVertexUvs[d][h].push(v);q&&(q=3*y[k++],t.normal.set(C[q++],C[q++],C[q]));if(s)for(d=0;3>d;d++)q=3*y[k++],s=new THREE.Vector3(C[q++],C[q++],C[q]),t.vertexNormals.push(s);p&&(p=y[k++],t.color.setHex(x[p]));if(b)for(d=0;3>d;d++)p=y[k++],t.vertexColors.push(new THREE.Color(x[p]));c.faces.push(t)}})(d);(function(){var b=void 0!==a.influencesPerVertex?a.influencesPerVertex:2;if(a.skinWeights)for(var d=0,g=a.skinWeights.length;d<g;d+=b)c.skinWeights.push(new THREE.Vector4(a.skinWeights[d], -1<b?a.skinWeights[d+1]:0,2<b?a.skinWeights[d+2]:0,3<b?a.skinWeights[d+3]:0));if(a.skinIndices)for(d=0,g=a.skinIndices.length;d<g;d+=b)c.skinIndices.push(new THREE.Vector4(a.skinIndices[d],1<b?a.skinIndices[d+1]:0,2<b?a.skinIndices[d+2]:0,3<b?a.skinIndices[d+3]:0));c.bones=a.bones;c.bones&&0<c.bones.length&&(c.skinWeights.length!==c.skinIndices.length||c.skinIndices.length!==c.vertices.length)&&console.warn("When skinning, number of vertices ("+c.vertices.length+"), skinIndices ("+c.skinIndices.length+ -"), and skinWeights ("+c.skinWeights.length+") should match.");c.animation=a.animation;c.animations=a.animations})();(function(b){if(void 0!==a.morphTargets){var d,g,h,k,n,p;d=0;for(g=a.morphTargets.length;d<g;d++)for(c.morphTargets[d]={},c.morphTargets[d].name=a.morphTargets[d].name,c.morphTargets[d].vertices=[],n=c.morphTargets[d].vertices,p=a.morphTargets[d].vertices,h=0,k=p.length;h<k;h+=3){var q=new THREE.Vector3;q.x=p[h]*b;q.y=p[h+1]*b;q.z=p[h+2]*b;n.push(q)}}if(void 0!==a.morphColors)for(d= -0,g=a.morphColors.length;d<g;d++)for(c.morphColors[d]={},c.morphColors[d].name=a.morphColors[d].name,c.morphColors[d].colors=[],k=c.morphColors[d].colors,n=a.morphColors[d].colors,b=0,h=n.length;b<h;b+=3)p=new THREE.Color(16755200),p.setRGB(n[b],n[b+1],n[b+2]),k.push(p)})(d);c.computeFaceNormals();c.computeBoundingSphere();if(void 0===a.materials||0===a.materials.length)return{geometry:c};d=this.initMaterials(a.materials,b);this.needsTangents(d)&&c.computeTangents();return{geometry:c,materials:d}}; -THREE.LoadingManager=function(a,b,c){var d=this,e=0,f=0;this.onLoad=a;this.onProgress=b;this.onError=c;this.itemStart=function(a){f++};this.itemEnd=function(a){e++;if(void 0!==d.onProgress)d.onProgress(a,e,f);if(e===f&&void 0!==d.onLoad)d.onLoad()}};THREE.DefaultLoadingManager=new THREE.LoadingManager;THREE.BufferGeometryLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager}; -THREE.BufferGeometryLoader.prototype={constructor:THREE.BufferGeometryLoader,load:function(a,b,c,d){var e=this,f=new THREE.XHRLoader(e.manager);f.setCrossOrigin(this.crossOrigin);f.load(a,function(a){b(e.parse(JSON.parse(a)))},c,d)},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(a){var b=new THREE.BufferGeometry,c=a.attributes,d;for(d in c){var e=c[d],f=new self[e.type](e.array);b.addAttribute(d,new THREE.BufferAttribute(f,e.itemSize))}c=a.offsets;void 0!==c&&(b.offsets=JSON.parse(JSON.stringify(c))); -a=a.boundingSphere;void 0!==a&&(c=new THREE.Vector3,void 0!==a.center&&c.fromArray(a.center),b.boundingSphere=new THREE.Sphere(c,a.radius));return b}};THREE.MaterialLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager}; -THREE.MaterialLoader.prototype={constructor:THREE.MaterialLoader,load:function(a,b,c,d){var e=this,f=new THREE.XHRLoader(e.manager);f.setCrossOrigin(this.crossOrigin);f.load(a,function(a){b(e.parse(JSON.parse(a)))},c,d)},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(a){var b=new THREE[a.type];void 0!==a.color&&b.color.setHex(a.color);void 0!==a.ambient&&b.ambient.setHex(a.ambient);void 0!==a.emissive&&b.emissive.setHex(a.emissive);void 0!==a.specular&&b.specular.setHex(a.specular); -void 0!==a.shininess&&(b.shininess=a.shininess);void 0!==a.uniforms&&(b.uniforms=a.uniforms);void 0!==a.vertexShader&&(b.vertexShader=a.vertexShader);void 0!==a.fragmentShader&&(b.fragmentShader=a.fragmentShader);void 0!==a.vertexColors&&(b.vertexColors=a.vertexColors);void 0!==a.shading&&(b.shading=a.shading);void 0!==a.blending&&(b.blending=a.blending);void 0!==a.side&&(b.side=a.side);void 0!==a.opacity&&(b.opacity=a.opacity);void 0!==a.transparent&&(b.transparent=a.transparent);void 0!==a.wireframe&& -(b.wireframe=a.wireframe);if(void 0!==a.materials)for(var c=0,d=a.materials.length;c<d;c++)b.materials.push(this.parse(a.materials[c]));return b}};THREE.ObjectLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager}; -THREE.ObjectLoader.prototype={constructor:THREE.ObjectLoader,load:function(a,b,c,d){var e=this,f=new THREE.XHRLoader(e.manager);f.setCrossOrigin(this.crossOrigin);f.load(a,function(a){b(e.parse(JSON.parse(a)))},c,d)},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(a){var b=this.parseGeometries(a.geometries),c=this.parseMaterials(a.materials);return this.parseObject(a.object,b,c)},parseGeometries:function(a){var b={};if(void 0!==a)for(var c=new THREE.JSONLoader,d=new THREE.BufferGeometryLoader, -e=0,f=a.length;e<f;e++){var g,h=a[e];switch(h.type){case "PlaneGeometry":g=new THREE.PlaneGeometry(h.width,h.height,h.widthSegments,h.heightSegments);break;case "BoxGeometry":case "CubeGeometry":g=new THREE.BoxGeometry(h.width,h.height,h.depth,h.widthSegments,h.heightSegments,h.depthSegments);break;case "CircleGeometry":g=new THREE.CircleGeometry(h.radius,h.segments);break;case "CylinderGeometry":g=new THREE.CylinderGeometry(h.radiusTop,h.radiusBottom,h.height,h.radialSegments,h.heightSegments,h.openEnded); -break;case "SphereGeometry":g=new THREE.SphereGeometry(h.radius,h.widthSegments,h.heightSegments,h.phiStart,h.phiLength,h.thetaStart,h.thetaLength);break;case "IcosahedronGeometry":g=new THREE.IcosahedronGeometry(h.radius,h.detail);break;case "TorusGeometry":g=new THREE.TorusGeometry(h.radius,h.tube,h.radialSegments,h.tubularSegments,h.arc);break;case "TorusKnotGeometry":g=new THREE.TorusKnotGeometry(h.radius,h.tube,h.radialSegments,h.tubularSegments,h.p,h.q,h.heightScale);break;case "BufferGeometry":g= -d.parse(h.data);break;case "Geometry":g=c.parse(h.data).geometry}g.uuid=h.uuid;void 0!==h.name&&(g.name=h.name);b[h.uuid]=g}return b},parseMaterials:function(a){var b={};if(void 0!==a)for(var c=new THREE.MaterialLoader,d=0,e=a.length;d<e;d++){var f=a[d],g=c.parse(f);g.uuid=f.uuid;void 0!==f.name&&(g.name=f.name);b[f.uuid]=g}return b},parseObject:function(){var a=new THREE.Matrix4;return function(b,c,d){var e;switch(b.type){case "Scene":e=new THREE.Scene;break;case "PerspectiveCamera":e=new THREE.PerspectiveCamera(b.fov, -b.aspect,b.near,b.far);break;case "OrthographicCamera":e=new THREE.OrthographicCamera(b.left,b.right,b.top,b.bottom,b.near,b.far);break;case "AmbientLight":e=new THREE.AmbientLight(b.color);break;case "DirectionalLight":e=new THREE.DirectionalLight(b.color,b.intensity);break;case "PointLight":e=new THREE.PointLight(b.color,b.intensity,b.distance);break;case "SpotLight":e=new THREE.SpotLight(b.color,b.intensity,b.distance,b.angle,b.exponent);break;case "HemisphereLight":e=new THREE.HemisphereLight(b.color, -b.groundColor,b.intensity);break;case "Mesh":e=c[b.geometry];var f=d[b.material];void 0===e&&console.warn("THREE.ObjectLoader: Undefined geometry",b.geometry);void 0===f&&console.warn("THREE.ObjectLoader: Undefined material",b.material);e=new THREE.Mesh(e,f);break;case "Line":e=c[b.geometry];f=d[b.material];void 0===e&&console.warn("THREE.ObjectLoader: Undefined geometry",b.geometry);void 0===f&&console.warn("THREE.ObjectLoader: Undefined material",b.material);e=new THREE.Line(e,f);break;case "Sprite":f= -d[b.material];void 0===f&&console.warn("THREE.ObjectLoader: Undefined material",b.material);e=new THREE.Sprite(f);break;case "Group":e=new THREE.Group;break;default:e=new THREE.Object3D}e.uuid=b.uuid;void 0!==b.name&&(e.name=b.name);void 0!==b.matrix?(a.fromArray(b.matrix),a.decompose(e.position,e.quaternion,e.scale)):(void 0!==b.position&&e.position.fromArray(b.position),void 0!==b.rotation&&e.rotation.fromArray(b.rotation),void 0!==b.scale&&e.scale.fromArray(b.scale));void 0!==b.visible&&(e.visible= -b.visible);void 0!==b.userData&&(e.userData=b.userData);if(void 0!==b.children)for(var g in b.children)e.add(this.parseObject(b.children[g],c,d));return e}}()};THREE.TextureLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager}; -THREE.TextureLoader.prototype={constructor:THREE.TextureLoader,load:function(a,b,c,d){var e=new THREE.ImageLoader(this.manager);e.setCrossOrigin(this.crossOrigin);e.load(a,function(a){a=new THREE.Texture(a);a.needsUpdate=!0;void 0!==b&&b(a)},c,d)},setCrossOrigin:function(a){this.crossOrigin=a}};THREE.DataTextureLoader=THREE.BinaryTextureLoader=function(){this._parser=null}; +THREE.JSONLoader.prototype.loadAjaxJSON=function(a,b,c,d,e){var f=new XMLHttpRequest,g=0;f.onreadystatechange=function(){if(f.readyState===f.DONE)if(200===f.status||0===f.status){if(f.responseText){var h=JSON.parse(f.responseText),k=h.metadata;if(void 0!==k){if("object"===k.type){THREE.error("THREE.JSONLoader: "+b+" should be loaded with THREE.ObjectLoader instead.");return}if("scene"===k.type){THREE.error("THREE.JSONLoader: "+b+" seems to be a Scene. Use THREE.SceneLoader instead.");return}}h=a.parse(h, +d);c(h.geometry,h.materials)}else THREE.error("THREE.JSONLoader: "+b+" seems to be unreachable or the file is empty.");a.onLoadComplete()}else THREE.error("THREE.JSONLoader: Couldn't load "+b+" ("+f.status+")");else f.readyState===f.LOADING?e&&(0===g&&(g=f.getResponseHeader("Content-Length")),e({total:g,loaded:f.responseText.length})):f.readyState===f.HEADERS_RECEIVED&&void 0!==e&&(g=f.getResponseHeader("Content-Length"))};f.open("GET",b,!0);f.withCredentials=this.withCredentials;f.send(null)}; +THREE.JSONLoader.prototype.parse=function(a,b){var c=new THREE.Geometry,d=void 0!==a.scale?1/a.scale:1;(function(b){var d,g,h,k,l,p,q,n,t,r,s,u,v,x=a.faces;p=a.vertices;var D=a.normals,w=a.colors,y=0;if(void 0!==a.uvs){for(d=0;d<a.uvs.length;d++)a.uvs[d].length&&y++;for(d=0;d<y;d++)c.faceVertexUvs[d]=[]}k=0;for(l=p.length;k<l;)d=new THREE.Vector3,d.x=p[k++]*b,d.y=p[k++]*b,d.z=p[k++]*b,c.vertices.push(d);k=0;for(l=x.length;k<l;)if(b=x[k++],t=b&1,h=b&2,d=b&8,q=b&16,r=b&32,p=b&64,b&=128,t){t=new THREE.Face3; +t.a=x[k];t.b=x[k+1];t.c=x[k+3];s=new THREE.Face3;s.a=x[k+1];s.b=x[k+2];s.c=x[k+3];k+=4;h&&(h=x[k++],t.materialIndex=h,s.materialIndex=h);h=c.faces.length;if(d)for(d=0;d<y;d++)for(u=a.uvs[d],c.faceVertexUvs[d][h]=[],c.faceVertexUvs[d][h+1]=[],g=0;4>g;g++)n=x[k++],v=u[2*n],n=u[2*n+1],v=new THREE.Vector2(v,n),2!==g&&c.faceVertexUvs[d][h].push(v),0!==g&&c.faceVertexUvs[d][h+1].push(v);q&&(q=3*x[k++],t.normal.set(D[q++],D[q++],D[q]),s.normal.copy(t.normal));if(r)for(d=0;4>d;d++)q=3*x[k++],r=new THREE.Vector3(D[q++], +D[q++],D[q]),2!==d&&t.vertexNormals.push(r),0!==d&&s.vertexNormals.push(r);p&&(p=x[k++],p=w[p],t.color.setHex(p),s.color.setHex(p));if(b)for(d=0;4>d;d++)p=x[k++],p=w[p],2!==d&&t.vertexColors.push(new THREE.Color(p)),0!==d&&s.vertexColors.push(new THREE.Color(p));c.faces.push(t);c.faces.push(s)}else{t=new THREE.Face3;t.a=x[k++];t.b=x[k++];t.c=x[k++];h&&(h=x[k++],t.materialIndex=h);h=c.faces.length;if(d)for(d=0;d<y;d++)for(u=a.uvs[d],c.faceVertexUvs[d][h]=[],g=0;3>g;g++)n=x[k++],v=u[2*n],n=u[2*n+1], +v=new THREE.Vector2(v,n),c.faceVertexUvs[d][h].push(v);q&&(q=3*x[k++],t.normal.set(D[q++],D[q++],D[q]));if(r)for(d=0;3>d;d++)q=3*x[k++],r=new THREE.Vector3(D[q++],D[q++],D[q]),t.vertexNormals.push(r);p&&(p=x[k++],t.color.setHex(w[p]));if(b)for(d=0;3>d;d++)p=x[k++],t.vertexColors.push(new THREE.Color(w[p]));c.faces.push(t)}})(d);(function(){var b=void 0!==a.influencesPerVertex?a.influencesPerVertex:2;if(a.skinWeights)for(var d=0,g=a.skinWeights.length;d<g;d+=b)c.skinWeights.push(new THREE.Vector4(a.skinWeights[d], +1<b?a.skinWeights[d+1]:0,2<b?a.skinWeights[d+2]:0,3<b?a.skinWeights[d+3]:0));if(a.skinIndices)for(d=0,g=a.skinIndices.length;d<g;d+=b)c.skinIndices.push(new THREE.Vector4(a.skinIndices[d],1<b?a.skinIndices[d+1]:0,2<b?a.skinIndices[d+2]:0,3<b?a.skinIndices[d+3]:0));c.bones=a.bones;c.bones&&0<c.bones.length&&(c.skinWeights.length!==c.skinIndices.length||c.skinIndices.length!==c.vertices.length)&&THREE.warn("THREE.JSONLoader: When skinning, number of vertices ("+c.vertices.length+"), skinIndices ("+ +c.skinIndices.length+"), and skinWeights ("+c.skinWeights.length+") should match.");c.animation=a.animation;c.animations=a.animations})();(function(b){if(void 0!==a.morphTargets){var d,g,h,k,l,p;d=0;for(g=a.morphTargets.length;d<g;d++)for(c.morphTargets[d]={},c.morphTargets[d].name=a.morphTargets[d].name,c.morphTargets[d].vertices=[],l=c.morphTargets[d].vertices,p=a.morphTargets[d].vertices,h=0,k=p.length;h<k;h+=3){var q=new THREE.Vector3;q.x=p[h]*b;q.y=p[h+1]*b;q.z=p[h+2]*b;l.push(q)}}if(void 0!== +a.morphColors)for(d=0,g=a.morphColors.length;d<g;d++)for(c.morphColors[d]={},c.morphColors[d].name=a.morphColors[d].name,c.morphColors[d].colors=[],k=c.morphColors[d].colors,l=a.morphColors[d].colors,b=0,h=l.length;b<h;b+=3)p=new THREE.Color(16755200),p.setRGB(l[b],l[b+1],l[b+2]),k.push(p)})(d);c.computeFaceNormals();c.computeBoundingSphere();if(void 0===a.materials||0===a.materials.length)return{geometry:c};d=this.initMaterials(a.materials,b);this.needsTangents(d)&&c.computeTangents();return{geometry:c, +materials:d}};THREE.LoadingManager=function(a,b,c){var d=this,e=0,f=0;this.onLoad=a;this.onProgress=b;this.onError=c;this.itemStart=function(a){f++};this.itemEnd=function(a){e++;if(void 0!==d.onProgress)d.onProgress(a,e,f);if(e===f&&void 0!==d.onLoad)d.onLoad()}};THREE.DefaultLoadingManager=new THREE.LoadingManager;THREE.BufferGeometryLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager}; +THREE.BufferGeometryLoader.prototype={constructor:THREE.BufferGeometryLoader,load:function(a,b,c,d){var e=this,f=new THREE.XHRLoader(e.manager);f.setCrossOrigin(this.crossOrigin);f.load(a,function(a){b(e.parse(JSON.parse(a)))},c,d)},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(a){var b=new THREE.BufferGeometry,c=a.data.attributes,d;for(d in c){var e=c[d],f=new self[e.type](e.array);b.addAttribute(d,new THREE.BufferAttribute(f,e.itemSize))}c=a.data.offsets;void 0!==c&&(b.offsets=JSON.parse(JSON.stringify(c))); +a=a.data.boundingSphere;void 0!==a&&(c=new THREE.Vector3,void 0!==a.center&&c.fromArray(a.center),b.boundingSphere=new THREE.Sphere(c,a.radius));return b}};THREE.MaterialLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager}; +THREE.MaterialLoader.prototype={constructor:THREE.MaterialLoader,load:function(a,b,c,d){var e=this,f=new THREE.XHRLoader(e.manager);f.setCrossOrigin(this.crossOrigin);f.load(a,function(a){b(e.parse(JSON.parse(a)))},c,d)},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(a){var b=new THREE[a.type];void 0!==a.color&&b.color.setHex(a.color);void 0!==a.emissive&&b.emissive.setHex(a.emissive);void 0!==a.specular&&b.specular.setHex(a.specular);void 0!==a.shininess&&(b.shininess=a.shininess); +void 0!==a.uniforms&&(b.uniforms=a.uniforms);void 0!==a.vertexShader&&(b.vertexShader=a.vertexShader);void 0!==a.fragmentShader&&(b.fragmentShader=a.fragmentShader);void 0!==a.vertexColors&&(b.vertexColors=a.vertexColors);void 0!==a.shading&&(b.shading=a.shading);void 0!==a.blending&&(b.blending=a.blending);void 0!==a.side&&(b.side=a.side);void 0!==a.opacity&&(b.opacity=a.opacity);void 0!==a.transparent&&(b.transparent=a.transparent);void 0!==a.wireframe&&(b.wireframe=a.wireframe);void 0!==a.size&& +(b.size=a.size);void 0!==a.sizeAttenuation&&(b.sizeAttenuation=a.sizeAttenuation);if(void 0!==a.materials)for(var c=0,d=a.materials.length;c<d;c++)b.materials.push(this.parse(a.materials[c]));return b}};THREE.ObjectLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager;this.texturePath=""}; +THREE.ObjectLoader.prototype={constructor:THREE.ObjectLoader,load:function(a,b,c,d){""===this.texturePath&&(this.texturePath=a.substring(0,a.lastIndexOf("/")+1));var e=this,f=new THREE.XHRLoader(e.manager);f.setCrossOrigin(this.crossOrigin);f.load(a,function(a){e.parse(JSON.parse(a),b)},c,d)},setTexturePath:function(a){this.texturePath=a},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(a,b){var c=this.parseGeometries(a.geometries),d=this.parseImages(a.images,function(){void 0!==b&&b(e)}), +d=this.parseTextures(a.textures,d),d=this.parseMaterials(a.materials,d),e=this.parseObject(a.object,c,d);void 0!==a.images&&0!==a.images.length||void 0===b||b(e);return e},parseGeometries:function(a){var b={};if(void 0!==a)for(var c=new THREE.JSONLoader,d=new THREE.BufferGeometryLoader,e=0,f=a.length;e<f;e++){var g,h=a[e];switch(h.type){case "PlaneGeometry":case "PlaneBufferGeometry":g=new THREE[h.type](h.width,h.height,h.widthSegments,h.heightSegments);break;case "BoxGeometry":case "CubeGeometry":g= +new THREE.BoxGeometry(h.width,h.height,h.depth,h.widthSegments,h.heightSegments,h.depthSegments);break;case "CircleGeometry":g=new THREE.CircleGeometry(h.radius,h.segments);break;case "CylinderGeometry":g=new THREE.CylinderGeometry(h.radiusTop,h.radiusBottom,h.height,h.radialSegments,h.heightSegments,h.openEnded);break;case "SphereGeometry":g=new THREE.SphereGeometry(h.radius,h.widthSegments,h.heightSegments,h.phiStart,h.phiLength,h.thetaStart,h.thetaLength);break;case "IcosahedronGeometry":g=new THREE.IcosahedronGeometry(h.radius, +h.detail);break;case "TorusGeometry":g=new THREE.TorusGeometry(h.radius,h.tube,h.radialSegments,h.tubularSegments,h.arc);break;case "TorusKnotGeometry":g=new THREE.TorusKnotGeometry(h.radius,h.tube,h.radialSegments,h.tubularSegments,h.p,h.q,h.heightScale);break;case "BufferGeometry":g=d.parse(h);break;case "Geometry":g=c.parse(h.data).geometry}g.uuid=h.uuid;void 0!==h.name&&(g.name=h.name);b[h.uuid]=g}return b},parseMaterials:function(a,b){var c={};if(void 0!==a)for(var d=function(a){void 0===b[a]&& +THREE.warn("THREE.ObjectLoader: Undefined texture",a);return b[a]},e=new THREE.MaterialLoader,f=0,g=a.length;f<g;f++){var h=a[f],k=e.parse(h);k.uuid=h.uuid;void 0!==h.name&&(k.name=h.name);void 0!==h.map&&(k.map=d(h.map));void 0!==h.bumpMap&&(k.bumpMap=d(h.bumpMap),h.bumpScale&&(k.bumpScale=new THREE.Vector2(h.bumpScale,h.bumpScale)));void 0!==h.alphaMap&&(k.alphaMap=d(h.alphaMap));void 0!==h.envMap&&(k.envMap=d(h.envMap));void 0!==h.normalMap&&(k.normalMap=d(h.normalMap),h.normalScale&&(k.normalScale= +new THREE.Vector2(h.normalScale,h.normalScale)));void 0!==h.lightMap&&(k.lightMap=d(h.lightMap));void 0!==h.specularMap&&(k.specularMap=d(h.specularMap));c[h.uuid]=k}return c},parseImages:function(a,b){var c=this,d={};if(void 0!==a&&0<a.length){var e=new THREE.LoadingManager(b),f=new THREE.ImageLoader(e);f.setCrossOrigin(this.crossOrigin);for(var e=function(a){c.manager.itemStart(a);return f.load(a,function(){c.manager.itemEnd(a)})},g=0,h=a.length;g<h;g++){var k=a[g],l=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(k.url)? +k.url:c.texturePath+k.url;d[k.uuid]=e(l)}}return d},parseTextures:function(a,b){var c={};if(void 0!==a)for(var d=0,e=a.length;d<e;d++){var f=a[d];void 0===f.image&&THREE.warn('THREE.ObjectLoader: No "image" speficied for',f.uuid);void 0===b[f.image]&&THREE.warn("THREE.ObjectLoader: Undefined image",f.image);var g=new THREE.Texture(b[f.image]);g.needsUpdate=!0;g.uuid=f.uuid;void 0!==f.name&&(g.name=f.name);void 0!==f.repeat&&(g.repeat=new THREE.Vector2(f.repeat[0],f.repeat[1]));void 0!==f.minFilter&& +(g.minFilter=THREE[f.minFilter]);void 0!==f.magFilter&&(g.magFilter=THREE[f.magFilter]);void 0!==f.anisotropy&&(g.anisotropy=f.anisotropy);f.wrap instanceof Array&&(g.wrapS=THREE[f.wrap[0]],g.wrapT=THREE[f.wrap[1]]);c[f.uuid]=g}return c},parseObject:function(){var a=new THREE.Matrix4;return function(b,c,d){var e;e=function(a){void 0===c[a]&&THREE.warn("THREE.ObjectLoader: Undefined geometry",a);return c[a]};var f=function(a){void 0===d[a]&&THREE.warn("THREE.ObjectLoader: Undefined material",a);return d[a]}; +switch(b.type){case "Scene":e=new THREE.Scene;break;case "PerspectiveCamera":e=new THREE.PerspectiveCamera(b.fov,b.aspect,b.near,b.far);break;case "OrthographicCamera":e=new THREE.OrthographicCamera(b.left,b.right,b.top,b.bottom,b.near,b.far);break;case "AmbientLight":e=new THREE.AmbientLight(b.color);break;case "DirectionalLight":e=new THREE.DirectionalLight(b.color,b.intensity);break;case "PointLight":e=new THREE.PointLight(b.color,b.intensity,b.distance,b.decay);break;case "SpotLight":e=new THREE.SpotLight(b.color, +b.intensity,b.distance,b.angle,b.exponent,b.decay);break;case "HemisphereLight":e=new THREE.HemisphereLight(b.color,b.groundColor,b.intensity);break;case "Mesh":e=new THREE.Mesh(e(b.geometry),f(b.material));break;case "Line":e=new THREE.Line(e(b.geometry),f(b.material),b.mode);break;case "PointCloud":e=new THREE.PointCloud(e(b.geometry),f(b.material));break;case "Sprite":e=new THREE.Sprite(f(b.material));break;case "Group":e=new THREE.Group;break;default:e=new THREE.Object3D}e.uuid=b.uuid;void 0!== +b.name&&(e.name=b.name);void 0!==b.matrix?(a.fromArray(b.matrix),a.decompose(e.position,e.quaternion,e.scale)):(void 0!==b.position&&e.position.fromArray(b.position),void 0!==b.rotation&&e.rotation.fromArray(b.rotation),void 0!==b.scale&&e.scale.fromArray(b.scale));void 0!==b.visible&&(e.visible=b.visible);void 0!==b.userData&&(e.userData=b.userData);if(void 0!==b.children)for(var g in b.children)e.add(this.parseObject(b.children[g],c,d));return e}}()}; +THREE.TextureLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager};THREE.TextureLoader.prototype={constructor:THREE.TextureLoader,load:function(a,b,c,d){var e=new THREE.ImageLoader(this.manager);e.setCrossOrigin(this.crossOrigin);e.load(a,function(a){a=new THREE.Texture(a);a.needsUpdate=!0;void 0!==b&&b(a)},c,d)},setCrossOrigin:function(a){this.crossOrigin=a}};THREE.DataTextureLoader=THREE.BinaryTextureLoader=function(){this._parser=null}; THREE.BinaryTextureLoader.prototype={constructor:THREE.BinaryTextureLoader,load:function(a,b,c,d){var e=this,f=new THREE.DataTexture,g=new THREE.XHRLoader;g.setResponseType("arraybuffer");g.load(a,function(a){if(a=e._parser(a))void 0!==a.image?f.image=a.image:void 0!==a.data&&(f.image.width=a.width,f.image.height=a.height,f.image.data=a.data),f.wrapS=void 0!==a.wrapS?a.wrapS:THREE.ClampToEdgeWrapping,f.wrapT=void 0!==a.wrapT?a.wrapT:THREE.ClampToEdgeWrapping,f.magFilter=void 0!==a.magFilter?a.magFilter: THREE.LinearFilter,f.minFilter=void 0!==a.minFilter?a.minFilter:THREE.LinearMipMapLinearFilter,f.anisotropy=void 0!==a.anisotropy?a.anisotropy:1,void 0!==a.format&&(f.format=a.format),void 0!==a.type&&(f.type=a.type),void 0!==a.mipmaps&&(f.mipmaps=a.mipmaps),1===a.mipmapCount&&(f.minFilter=THREE.LinearFilter),f.needsUpdate=!0,b&&b(f,a)},c,d);return f}};THREE.CompressedTextureLoader=function(){this._parser=null}; -THREE.CompressedTextureLoader.prototype={constructor:THREE.CompressedTextureLoader,load:function(a,b,c){var d=this,e=[],f=new THREE.CompressedTexture;f.image=e;var g=new THREE.XHRLoader;g.setResponseType("arraybuffer");if(a instanceof Array){var h=0;c=function(c){g.load(a[c],function(a){a=d._parser(a,!0);e[c]={width:a.width,height:a.height,format:a.format,mipmaps:a.mipmaps};h+=1;6===h&&(1==a.mipmapCount&&(f.minFilter=THREE.LinearFilter),f.format=a.format,f.needsUpdate=!0,b&&b(f))})};for(var k=0,n= -a.length;k<n;++k)c(k)}else g.load(a,function(a){a=d._parser(a,!0);if(a.isCubemap)for(var c=a.mipmaps.length/a.mipmapCount,g=0;g<c;g++){e[g]={mipmaps:[]};for(var h=0;h<a.mipmapCount;h++)e[g].mipmaps.push(a.mipmaps[g*a.mipmapCount+h]),e[g].format=a.format,e[g].width=a.width,e[g].height=a.height}else f.image.width=a.width,f.image.height=a.height,f.mipmaps=a.mipmaps;1===a.mipmapCount&&(f.minFilter=THREE.LinearFilter);f.format=a.format;f.needsUpdate=!0;b&&b(f)});return f}}; -THREE.Material=function(){Object.defineProperty(this,"id",{value:THREE.MaterialIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="Material";this.side=THREE.FrontSide;this.opacity=1;this.transparent=!1;this.blending=THREE.NormalBlending;this.blendSrc=THREE.SrcAlphaFactor;this.blendDst=THREE.OneMinusSrcAlphaFactor;this.blendEquation=THREE.AddEquation;this.depthWrite=this.depthTest=!0;this.polygonOffset=!1;this.overdraw=this.alphaTest=this.polygonOffsetUnits=this.polygonOffsetFactor= -0;this.needsUpdate=this.visible=!0}; -THREE.Material.prototype={constructor:THREE.Material,setValues:function(a){if(void 0!==a)for(var b in a){var c=a[b];if(void 0===c)console.warn("THREE.Material: '"+b+"' parameter is undefined.");else if(b in this){var d=this[b];d instanceof THREE.Color?d.set(c):d instanceof THREE.Vector3&&c instanceof THREE.Vector3?d.copy(c):this[b]="overdraw"==b?Number(c):c}}},toJSON:function(){var a={metadata:{version:4.2,type:"material",generator:"MaterialExporter"},uuid:this.uuid,type:this.type};""!==this.name&& -(a.name=this.name);this instanceof THREE.MeshBasicMaterial?(a.color=this.color.getHex(),this.vertexColors!==THREE.NoColors&&(a.vertexColors=this.vertexColors),this.blending!==THREE.NormalBlending&&(a.blending=this.blending),this.side!==THREE.FrontSide&&(a.side=this.side)):this instanceof THREE.MeshLambertMaterial?(a.color=this.color.getHex(),a.ambient=this.ambient.getHex(),a.emissive=this.emissive.getHex(),this.vertexColors!==THREE.NoColors&&(a.vertexColors=this.vertexColors),this.blending!==THREE.NormalBlending&& -(a.blending=this.blending),this.side!==THREE.FrontSide&&(a.side=this.side)):this instanceof THREE.MeshPhongMaterial?(a.color=this.color.getHex(),a.ambient=this.ambient.getHex(),a.emissive=this.emissive.getHex(),a.specular=this.specular.getHex(),a.shininess=this.shininess,this.vertexColors!==THREE.NoColors&&(a.vertexColors=this.vertexColors),this.blending!==THREE.NormalBlending&&(a.blending=this.blending),this.side!==THREE.FrontSide&&(a.side=this.side)):this instanceof THREE.MeshNormalMaterial?(this.shading!== -THREE.FlatShading&&(a.shading=this.shading),this.blending!==THREE.NormalBlending&&(a.blending=this.blending),this.side!==THREE.FrontSide&&(a.side=this.side)):this instanceof THREE.MeshDepthMaterial?(this.blending!==THREE.NormalBlending&&(a.blending=this.blending),this.side!==THREE.FrontSide&&(a.side=this.side)):this instanceof THREE.ShaderMaterial?(a.uniforms=this.uniforms,a.vertexShader=this.vertexShader,a.fragmentShader=this.fragmentShader):this instanceof THREE.SpriteMaterial&&(a.color=this.color.getHex()); -1>this.opacity&&(a.opacity=this.opacity);!1!==this.transparent&&(a.transparent=this.transparent);!1!==this.wireframe&&(a.wireframe=this.wireframe);return a},clone:function(a){void 0===a&&(a=new THREE.Material);a.name=this.name;a.side=this.side;a.opacity=this.opacity;a.transparent=this.transparent;a.blending=this.blending;a.blendSrc=this.blendSrc;a.blendDst=this.blendDst;a.blendEquation=this.blendEquation;a.depthTest=this.depthTest;a.depthWrite=this.depthWrite;a.polygonOffset=this.polygonOffset;a.polygonOffsetFactor= -this.polygonOffsetFactor;a.polygonOffsetUnits=this.polygonOffsetUnits;a.alphaTest=this.alphaTest;a.overdraw=this.overdraw;a.visible=this.visible;return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.Material.prototype);THREE.MaterialIdCount=0; +THREE.CompressedTextureLoader.prototype={constructor:THREE.CompressedTextureLoader,load:function(a,b,c){var d=this,e=[],f=new THREE.CompressedTexture;f.image=e;var g=new THREE.XHRLoader;g.setResponseType("arraybuffer");if(a instanceof Array){var h=0;c=function(c){g.load(a[c],function(a){a=d._parser(a,!0);e[c]={width:a.width,height:a.height,format:a.format,mipmaps:a.mipmaps};h+=1;6===h&&(1==a.mipmapCount&&(f.minFilter=THREE.LinearFilter),f.format=a.format,f.needsUpdate=!0,b&&b(f))})};for(var k=0,l= +a.length;k<l;++k)c(k)}else g.load(a,function(a){a=d._parser(a,!0);if(a.isCubemap)for(var c=a.mipmaps.length/a.mipmapCount,g=0;g<c;g++){e[g]={mipmaps:[]};for(var h=0;h<a.mipmapCount;h++)e[g].mipmaps.push(a.mipmaps[g*a.mipmapCount+h]),e[g].format=a.format,e[g].width=a.width,e[g].height=a.height}else f.image.width=a.width,f.image.height=a.height,f.mipmaps=a.mipmaps;1===a.mipmapCount&&(f.minFilter=THREE.LinearFilter);f.format=a.format;f.needsUpdate=!0;b&&b(f)});return f}}; +THREE.Material=function(){Object.defineProperty(this,"id",{value:THREE.MaterialIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="Material";this.side=THREE.FrontSide;this.opacity=1;this.transparent=!1;this.blending=THREE.NormalBlending;this.blendSrc=THREE.SrcAlphaFactor;this.blendDst=THREE.OneMinusSrcAlphaFactor;this.blendEquation=THREE.AddEquation;this.blendEquationAlpha=this.blendDstAlpha=this.blendSrcAlpha=null;this.colorWrite=this.depthWrite=this.depthTest=!0;this.polygonOffset= +!1;this.overdraw=this.alphaTest=this.polygonOffsetUnits=this.polygonOffsetFactor=0;this._needsUpdate=this.visible=!0}; +THREE.Material.prototype={constructor:THREE.Material,get needsUpdate(){return this._needsUpdate},set needsUpdate(a){!0===a&&this.update();this._needsUpdate=a},setValues:function(a){if(void 0!==a)for(var b in a){var c=a[b];if(void 0===c)THREE.warn("THREE.Material: '"+b+"' parameter is undefined.");else if(b in this){var d=this[b];d instanceof THREE.Color?d.set(c):d instanceof THREE.Vector3&&c instanceof THREE.Vector3?d.copy(c):this[b]="overdraw"==b?Number(c):c}}},toJSON:function(){var a={metadata:{version:4.2, +type:"material",generator:"MaterialExporter"},uuid:this.uuid,type:this.type};""!==this.name&&(a.name=this.name);this instanceof THREE.MeshBasicMaterial?(a.color=this.color.getHex(),this.vertexColors!==THREE.NoColors&&(a.vertexColors=this.vertexColors),this.blending!==THREE.NormalBlending&&(a.blending=this.blending),this.side!==THREE.FrontSide&&(a.side=this.side)):this instanceof THREE.MeshLambertMaterial?(a.color=this.color.getHex(),a.emissive=this.emissive.getHex(),this.vertexColors!==THREE.NoColors&& +(a.vertexColors=this.vertexColors),this.shading!==THREE.SmoothShading&&(a.shading=this.shading),this.blending!==THREE.NormalBlending&&(a.blending=this.blending),this.side!==THREE.FrontSide&&(a.side=this.side)):this instanceof THREE.MeshPhongMaterial?(a.color=this.color.getHex(),a.emissive=this.emissive.getHex(),a.specular=this.specular.getHex(),a.shininess=this.shininess,this.vertexColors!==THREE.NoColors&&(a.vertexColors=this.vertexColors),this.shading!==THREE.SmoothShading&&(a.shading=this.shading), +this.blending!==THREE.NormalBlending&&(a.blending=this.blending),this.side!==THREE.FrontSide&&(a.side=this.side)):this instanceof THREE.MeshNormalMaterial?(this.blending!==THREE.NormalBlending&&(a.blending=this.blending),this.side!==THREE.FrontSide&&(a.side=this.side)):this instanceof THREE.MeshDepthMaterial?(this.blending!==THREE.NormalBlending&&(a.blending=this.blending),this.side!==THREE.FrontSide&&(a.side=this.side)):this instanceof THREE.PointCloudMaterial?(a.size=this.size,a.sizeAttenuation= +this.sizeAttenuation,a.color=this.color.getHex(),this.vertexColors!==THREE.NoColors&&(a.vertexColors=this.vertexColors),this.blending!==THREE.NormalBlending&&(a.blending=this.blending)):this instanceof THREE.ShaderMaterial?(a.uniforms=this.uniforms,a.vertexShader=this.vertexShader,a.fragmentShader=this.fragmentShader):this instanceof THREE.SpriteMaterial&&(a.color=this.color.getHex());1>this.opacity&&(a.opacity=this.opacity);!1!==this.transparent&&(a.transparent=this.transparent);!1!==this.wireframe&& +(a.wireframe=this.wireframe);return a},clone:function(a){void 0===a&&(a=new THREE.Material);a.name=this.name;a.side=this.side;a.opacity=this.opacity;a.transparent=this.transparent;a.blending=this.blending;a.blendSrc=this.blendSrc;a.blendDst=this.blendDst;a.blendEquation=this.blendEquation;a.blendSrcAlpha=this.blendSrcAlpha;a.blendDstAlpha=this.blendDstAlpha;a.blendEquationAlpha=this.blendEquationAlpha;a.depthTest=this.depthTest;a.depthWrite=this.depthWrite;a.polygonOffset=this.polygonOffset;a.polygonOffsetFactor= +this.polygonOffsetFactor;a.polygonOffsetUnits=this.polygonOffsetUnits;a.alphaTest=this.alphaTest;a.overdraw=this.overdraw;a.visible=this.visible;return a},update:function(){this.dispatchEvent({type:"update"})},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.Material.prototype);THREE.MaterialIdCount=0; THREE.LineBasicMaterial=function(a){THREE.Material.call(this);this.type="LineBasicMaterial";this.color=new THREE.Color(16777215);this.linewidth=1;this.linejoin=this.linecap="round";this.vertexColors=THREE.NoColors;this.fog=!0;this.setValues(a)};THREE.LineBasicMaterial.prototype=Object.create(THREE.Material.prototype);THREE.LineBasicMaterial.prototype.constructor=THREE.LineBasicMaterial; THREE.LineBasicMaterial.prototype.clone=function(){var a=new THREE.LineBasicMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.linewidth=this.linewidth;a.linecap=this.linecap;a.linejoin=this.linejoin;a.vertexColors=this.vertexColors;a.fog=this.fog;return a}; THREE.LineDashedMaterial=function(a){THREE.Material.call(this);this.type="LineDashedMaterial";this.color=new THREE.Color(16777215);this.scale=this.linewidth=1;this.dashSize=3;this.gapSize=1;this.vertexColors=!1;this.fog=!0;this.setValues(a)};THREE.LineDashedMaterial.prototype=Object.create(THREE.Material.prototype);THREE.LineDashedMaterial.prototype.constructor=THREE.LineDashedMaterial; @@ -303,64 +311,64 @@ THREE.MeshBasicMaterial=function(a){THREE.Material.call(this);this.type="MeshBas THREE.MeshBasicMaterial.prototype=Object.create(THREE.Material.prototype);THREE.MeshBasicMaterial.prototype.constructor=THREE.MeshBasicMaterial; THREE.MeshBasicMaterial.prototype.clone=function(){var a=new THREE.MeshBasicMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.map=this.map;a.lightMap=this.lightMap;a.specularMap=this.specularMap;a.alphaMap=this.alphaMap;a.envMap=this.envMap;a.combine=this.combine;a.reflectivity=this.reflectivity;a.refractionRatio=this.refractionRatio;a.fog=this.fog;a.shading=this.shading;a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;a.wireframeLinecap=this.wireframeLinecap; a.wireframeLinejoin=this.wireframeLinejoin;a.vertexColors=this.vertexColors;a.skinning=this.skinning;a.morphTargets=this.morphTargets;return a}; -THREE.MeshLambertMaterial=function(a){THREE.Material.call(this);this.type="MeshLambertMaterial";this.color=new THREE.Color(16777215);this.ambient=new THREE.Color(16777215);this.emissive=new THREE.Color(0);this.wrapAround=!1;this.wrapRGB=new THREE.Vector3(1,1,1);this.envMap=this.alphaMap=this.specularMap=this.lightMap=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refractionRatio=.98;this.fog=!0;this.shading=THREE.SmoothShading;this.wireframe=!1;this.wireframeLinewidth= -1;this.wireframeLinejoin=this.wireframeLinecap="round";this.vertexColors=THREE.NoColors;this.morphNormals=this.morphTargets=this.skinning=!1;this.setValues(a)};THREE.MeshLambertMaterial.prototype=Object.create(THREE.Material.prototype);THREE.MeshLambertMaterial.prototype.constructor=THREE.MeshLambertMaterial; -THREE.MeshLambertMaterial.prototype.clone=function(){var a=new THREE.MeshLambertMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.ambient.copy(this.ambient);a.emissive.copy(this.emissive);a.wrapAround=this.wrapAround;a.wrapRGB.copy(this.wrapRGB);a.map=this.map;a.lightMap=this.lightMap;a.specularMap=this.specularMap;a.alphaMap=this.alphaMap;a.envMap=this.envMap;a.combine=this.combine;a.reflectivity=this.reflectivity;a.refractionRatio=this.refractionRatio;a.fog=this.fog; -a.shading=this.shading;a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;a.wireframeLinecap=this.wireframeLinecap;a.wireframeLinejoin=this.wireframeLinejoin;a.vertexColors=this.vertexColors;a.skinning=this.skinning;a.morphTargets=this.morphTargets;a.morphNormals=this.morphNormals;return a}; -THREE.MeshPhongMaterial=function(a){THREE.Material.call(this);this.type="MeshPhongMaterial";this.color=new THREE.Color(16777215);this.ambient=new THREE.Color(16777215);this.emissive=new THREE.Color(0);this.specular=new THREE.Color(1118481);this.shininess=30;this.wrapAround=this.metal=!1;this.wrapRGB=new THREE.Vector3(1,1,1);this.bumpMap=this.lightMap=this.map=null;this.bumpScale=1;this.normalMap=null;this.normalScale=new THREE.Vector2(1,1);this.envMap=this.alphaMap=this.specularMap=null;this.combine= -THREE.MultiplyOperation;this.reflectivity=1;this.refractionRatio=.98;this.fog=!0;this.shading=THREE.SmoothShading;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap="round";this.vertexColors=THREE.NoColors;this.morphNormals=this.morphTargets=this.skinning=!1;this.setValues(a)};THREE.MeshPhongMaterial.prototype=Object.create(THREE.Material.prototype);THREE.MeshPhongMaterial.prototype.constructor=THREE.MeshPhongMaterial; -THREE.MeshPhongMaterial.prototype.clone=function(){var a=new THREE.MeshPhongMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.ambient.copy(this.ambient);a.emissive.copy(this.emissive);a.specular.copy(this.specular);a.shininess=this.shininess;a.metal=this.metal;a.wrapAround=this.wrapAround;a.wrapRGB.copy(this.wrapRGB);a.map=this.map;a.lightMap=this.lightMap;a.bumpMap=this.bumpMap;a.bumpScale=this.bumpScale;a.normalMap=this.normalMap;a.normalScale.copy(this.normalScale); -a.specularMap=this.specularMap;a.alphaMap=this.alphaMap;a.envMap=this.envMap;a.combine=this.combine;a.reflectivity=this.reflectivity;a.refractionRatio=this.refractionRatio;a.fog=this.fog;a.shading=this.shading;a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;a.wireframeLinecap=this.wireframeLinecap;a.wireframeLinejoin=this.wireframeLinejoin;a.vertexColors=this.vertexColors;a.skinning=this.skinning;a.morphTargets=this.morphTargets;a.morphNormals=this.morphNormals;return a}; +THREE.MeshLambertMaterial=function(a){THREE.Material.call(this);this.type="MeshLambertMaterial";this.color=new THREE.Color(16777215);this.emissive=new THREE.Color(0);this.wrapAround=!1;this.wrapRGB=new THREE.Vector3(1,1,1);this.envMap=this.alphaMap=this.specularMap=this.lightMap=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refractionRatio=.98;this.fog=!0;this.shading=THREE.SmoothShading;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap= +"round";this.vertexColors=THREE.NoColors;this.morphNormals=this.morphTargets=this.skinning=!1;this.setValues(a)};THREE.MeshLambertMaterial.prototype=Object.create(THREE.Material.prototype);THREE.MeshLambertMaterial.prototype.constructor=THREE.MeshLambertMaterial; +THREE.MeshLambertMaterial.prototype.clone=function(){var a=new THREE.MeshLambertMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.emissive.copy(this.emissive);a.wrapAround=this.wrapAround;a.wrapRGB.copy(this.wrapRGB);a.map=this.map;a.lightMap=this.lightMap;a.specularMap=this.specularMap;a.alphaMap=this.alphaMap;a.envMap=this.envMap;a.combine=this.combine;a.reflectivity=this.reflectivity;a.refractionRatio=this.refractionRatio;a.fog=this.fog;a.shading=this.shading;a.wireframe= +this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;a.wireframeLinecap=this.wireframeLinecap;a.wireframeLinejoin=this.wireframeLinejoin;a.vertexColors=this.vertexColors;a.skinning=this.skinning;a.morphTargets=this.morphTargets;a.morphNormals=this.morphNormals;return a}; +THREE.MeshPhongMaterial=function(a){THREE.Material.call(this);this.type="MeshPhongMaterial";this.color=new THREE.Color(16777215);this.emissive=new THREE.Color(0);this.specular=new THREE.Color(1118481);this.shininess=30;this.wrapAround=this.metal=!1;this.wrapRGB=new THREE.Vector3(1,1,1);this.bumpMap=this.lightMap=this.map=null;this.bumpScale=1;this.normalMap=null;this.normalScale=new THREE.Vector2(1,1);this.envMap=this.alphaMap=this.specularMap=null;this.combine=THREE.MultiplyOperation;this.reflectivity= +1;this.refractionRatio=.98;this.fog=!0;this.shading=THREE.SmoothShading;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap="round";this.vertexColors=THREE.NoColors;this.morphNormals=this.morphTargets=this.skinning=!1;this.setValues(a)};THREE.MeshPhongMaterial.prototype=Object.create(THREE.Material.prototype);THREE.MeshPhongMaterial.prototype.constructor=THREE.MeshPhongMaterial; +THREE.MeshPhongMaterial.prototype.clone=function(){var a=new THREE.MeshPhongMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.emissive.copy(this.emissive);a.specular.copy(this.specular);a.shininess=this.shininess;a.metal=this.metal;a.wrapAround=this.wrapAround;a.wrapRGB.copy(this.wrapRGB);a.map=this.map;a.lightMap=this.lightMap;a.bumpMap=this.bumpMap;a.bumpScale=this.bumpScale;a.normalMap=this.normalMap;a.normalScale.copy(this.normalScale);a.specularMap=this.specularMap; +a.alphaMap=this.alphaMap;a.envMap=this.envMap;a.combine=this.combine;a.reflectivity=this.reflectivity;a.refractionRatio=this.refractionRatio;a.fog=this.fog;a.shading=this.shading;a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;a.wireframeLinecap=this.wireframeLinecap;a.wireframeLinejoin=this.wireframeLinejoin;a.vertexColors=this.vertexColors;a.skinning=this.skinning;a.morphTargets=this.morphTargets;a.morphNormals=this.morphNormals;return a}; THREE.MeshDepthMaterial=function(a){THREE.Material.call(this);this.type="MeshDepthMaterial";this.wireframe=this.morphTargets=!1;this.wireframeLinewidth=1;this.setValues(a)};THREE.MeshDepthMaterial.prototype=Object.create(THREE.Material.prototype);THREE.MeshDepthMaterial.prototype.constructor=THREE.MeshDepthMaterial; -THREE.MeshDepthMaterial.prototype.clone=function(){var a=new THREE.MeshDepthMaterial;THREE.Material.prototype.clone.call(this,a);a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;return a};THREE.MeshNormalMaterial=function(a){THREE.Material.call(this,a);this.type="MeshNormalMaterial";this.shading=THREE.FlatShading;this.wireframe=!1;this.wireframeLinewidth=1;this.morphTargets=!1;this.setValues(a)};THREE.MeshNormalMaterial.prototype=Object.create(THREE.Material.prototype); -THREE.MeshNormalMaterial.prototype.constructor=THREE.MeshNormalMaterial;THREE.MeshNormalMaterial.prototype.clone=function(){var a=new THREE.MeshNormalMaterial;THREE.Material.prototype.clone.call(this,a);a.shading=this.shading;a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;return a};THREE.MeshFaceMaterial=function(a){this.uuid=THREE.Math.generateUUID();this.type="MeshFaceMaterial";this.materials=a instanceof Array?a:[]}; +THREE.MeshDepthMaterial.prototype.clone=function(){var a=new THREE.MeshDepthMaterial;THREE.Material.prototype.clone.call(this,a);a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;return a};THREE.MeshNormalMaterial=function(a){THREE.Material.call(this,a);this.type="MeshNormalMaterial";this.wireframe=!1;this.wireframeLinewidth=1;this.morphTargets=!1;this.setValues(a)};THREE.MeshNormalMaterial.prototype=Object.create(THREE.Material.prototype); +THREE.MeshNormalMaterial.prototype.constructor=THREE.MeshNormalMaterial;THREE.MeshNormalMaterial.prototype.clone=function(){var a=new THREE.MeshNormalMaterial;THREE.Material.prototype.clone.call(this,a);a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;return a};THREE.MeshFaceMaterial=function(a){this.uuid=THREE.Math.generateUUID();this.type="MeshFaceMaterial";this.materials=a instanceof Array?a:[]}; THREE.MeshFaceMaterial.prototype={constructor:THREE.MeshFaceMaterial,toJSON:function(){for(var a={metadata:{version:4.2,type:"material",generator:"MaterialExporter"},uuid:this.uuid,type:this.type,materials:[]},b=0,c=this.materials.length;b<c;b++)a.materials.push(this.materials[b].toJSON());return a},clone:function(){for(var a=new THREE.MeshFaceMaterial,b=0;b<this.materials.length;b++)a.materials.push(this.materials[b].clone());return a}}; THREE.PointCloudMaterial=function(a){THREE.Material.call(this);this.type="PointCloudMaterial";this.color=new THREE.Color(16777215);this.map=null;this.size=1;this.sizeAttenuation=!0;this.vertexColors=THREE.NoColors;this.fog=!0;this.setValues(a)};THREE.PointCloudMaterial.prototype=Object.create(THREE.Material.prototype);THREE.PointCloudMaterial.prototype.constructor=THREE.PointCloudMaterial; -THREE.PointCloudMaterial.prototype.clone=function(){var a=new THREE.PointCloudMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.map=this.map;a.size=this.size;a.sizeAttenuation=this.sizeAttenuation;a.vertexColors=this.vertexColors;a.fog=this.fog;return a};THREE.ParticleBasicMaterial=function(a){console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointCloudMaterial.");return new THREE.PointCloudMaterial(a)}; -THREE.ParticleSystemMaterial=function(a){console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointCloudMaterial.");return new THREE.PointCloudMaterial(a)}; +THREE.PointCloudMaterial.prototype.clone=function(){var a=new THREE.PointCloudMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.map=this.map;a.size=this.size;a.sizeAttenuation=this.sizeAttenuation;a.vertexColors=this.vertexColors;a.fog=this.fog;return a};THREE.ParticleBasicMaterial=function(a){THREE.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointCloudMaterial.");return new THREE.PointCloudMaterial(a)}; +THREE.ParticleSystemMaterial=function(a){THREE.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointCloudMaterial.");return new THREE.PointCloudMaterial(a)}; THREE.ShaderMaterial=function(a){THREE.Material.call(this);this.type="ShaderMaterial";this.defines={};this.uniforms={};this.attributes=null;this.vertexShader="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}";this.fragmentShader="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}";this.shading=THREE.SmoothShading;this.linewidth=1;this.wireframe=!1;this.wireframeLinewidth=1;this.lights=this.fog=!1;this.vertexColors=THREE.NoColors;this.morphNormals= this.morphTargets=this.skinning=!1;this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]};this.index0AttributeName=void 0;this.setValues(a)};THREE.ShaderMaterial.prototype=Object.create(THREE.Material.prototype);THREE.ShaderMaterial.prototype.constructor=THREE.ShaderMaterial; THREE.ShaderMaterial.prototype.clone=function(){var a=new THREE.ShaderMaterial;THREE.Material.prototype.clone.call(this,a);a.fragmentShader=this.fragmentShader;a.vertexShader=this.vertexShader;a.uniforms=THREE.UniformsUtils.clone(this.uniforms);a.attributes=this.attributes;a.defines=this.defines;a.shading=this.shading;a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;a.fog=this.fog;a.lights=this.lights;a.vertexColors=this.vertexColors;a.skinning=this.skinning;a.morphTargets= this.morphTargets;a.morphNormals=this.morphNormals;return a};THREE.RawShaderMaterial=function(a){THREE.ShaderMaterial.call(this,a);this.type="RawShaderMaterial"};THREE.RawShaderMaterial.prototype=Object.create(THREE.ShaderMaterial.prototype);THREE.RawShaderMaterial.prototype.constructor=THREE.RawShaderMaterial;THREE.RawShaderMaterial.prototype.clone=function(){var a=new THREE.RawShaderMaterial;THREE.ShaderMaterial.prototype.clone.call(this,a);return a}; THREE.SpriteMaterial=function(a){THREE.Material.call(this);this.type="SpriteMaterial";this.color=new THREE.Color(16777215);this.map=null;this.rotation=0;this.fog=!1;this.setValues(a)};THREE.SpriteMaterial.prototype=Object.create(THREE.Material.prototype);THREE.SpriteMaterial.prototype.constructor=THREE.SpriteMaterial; THREE.SpriteMaterial.prototype.clone=function(){var a=new THREE.SpriteMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.map=this.map;a.rotation=this.rotation;a.fog=this.fog;return a}; -THREE.Texture=function(a,b,c,d,e,f,g,h,k){Object.defineProperty(this,"id",{value:THREE.TextureIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.image=void 0!==a?a:THREE.Texture.DEFAULT_IMAGE;this.mipmaps=[];this.mapping=void 0!==b?b:THREE.Texture.DEFAULT_MAPPING;this.wrapS=void 0!==c?c:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==d?d:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==e?e:THREE.LinearFilter;this.minFilter=void 0!==f?f:THREE.LinearMipMapLinearFilter;this.anisotropy= -void 0!==k?k:1;this.format=void 0!==g?g:THREE.RGBAFormat;this.type=void 0!==h?h:THREE.UnsignedByteType;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.generateMipmaps=!0;this.premultiplyAlpha=!1;this.flipY=!0;this.unpackAlignment=4;this._needsUpdate=!1;this.onUpdate=null};THREE.Texture.DEFAULT_IMAGE=void 0;THREE.Texture.DEFAULT_MAPPING=THREE.UVMapping; +THREE.Texture=function(a,b,c,d,e,f,g,h,k){Object.defineProperty(this,"id",{value:THREE.TextureIdCount++});this.uuid=THREE.Math.generateUUID();this.sourceFile=this.name="";this.image=void 0!==a?a:THREE.Texture.DEFAULT_IMAGE;this.mipmaps=[];this.mapping=void 0!==b?b:THREE.Texture.DEFAULT_MAPPING;this.wrapS=void 0!==c?c:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==d?d:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==e?e:THREE.LinearFilter;this.minFilter=void 0!==f?f:THREE.LinearMipMapLinearFilter; +this.anisotropy=void 0!==k?k:1;this.format=void 0!==g?g:THREE.RGBAFormat;this.type=void 0!==h?h:THREE.UnsignedByteType;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.generateMipmaps=!0;this.premultiplyAlpha=!1;this.flipY=!0;this.unpackAlignment=4;this._needsUpdate=!1;this.onUpdate=null};THREE.Texture.DEFAULT_IMAGE=void 0;THREE.Texture.DEFAULT_MAPPING=THREE.UVMapping; THREE.Texture.prototype={constructor:THREE.Texture,get needsUpdate(){return this._needsUpdate},set needsUpdate(a){!0===a&&this.update();this._needsUpdate=a},clone:function(a){void 0===a&&(a=new THREE.Texture);a.image=this.image;a.mipmaps=this.mipmaps.slice(0);a.mapping=this.mapping;a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.anisotropy=this.anisotropy;a.format=this.format;a.type=this.type;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.generateMipmaps= this.generateMipmaps;a.premultiplyAlpha=this.premultiplyAlpha;a.flipY=this.flipY;a.unpackAlignment=this.unpackAlignment;return a},update:function(){this.dispatchEvent({type:"update"})},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.Texture.prototype);THREE.TextureIdCount=0;THREE.CubeTexture=function(a,b,c,d,e,f,g,h,k){b=void 0!==b?b:THREE.CubeReflectionMapping;THREE.Texture.call(this,a,b,c,d,e,f,g,h,k);this.images=a}; -THREE.CubeTexture.prototype=Object.create(THREE.Texture.prototype);THREE.CubeTexture.prototype.constructor=THREE.CubeTexture;THREE.CubeTexture.clone=function(a){void 0===a&&(a=new THREE.CubeTexture);THREE.Texture.prototype.clone.call(this,a);a.images=this.images;return a};THREE.CompressedTexture=function(a,b,c,d,e,f,g,h,k,n,p){THREE.Texture.call(this,null,f,g,h,k,n,d,e,p);this.image={width:b,height:c};this.mipmaps=a;this.generateMipmaps=this.flipY=!1};THREE.CompressedTexture.prototype=Object.create(THREE.Texture.prototype); -THREE.CompressedTexture.prototype.constructor=THREE.CompressedTexture;THREE.CompressedTexture.prototype.clone=function(){var a=new THREE.CompressedTexture;THREE.Texture.prototype.clone.call(this,a);return a};THREE.DataTexture=function(a,b,c,d,e,f,g,h,k,n,p){THREE.Texture.call(this,null,f,g,h,k,n,d,e,p);this.image={data:a,width:b,height:c}};THREE.DataTexture.prototype=Object.create(THREE.Texture.prototype);THREE.DataTexture.prototype.constructor=THREE.DataTexture; -THREE.DataTexture.prototype.clone=function(){var a=new THREE.DataTexture;THREE.Texture.prototype.clone.call(this,a);return a};THREE.VideoTexture=function(a,b,c,d,e,f,g,h,k){THREE.Texture.call(this,a,b,c,d,e,f,g,h,k);this.generateMipmaps=!1;var n=this,p=function(){requestAnimationFrame(p);a.readyState===a.HAVE_ENOUGH_DATA&&(n.needsUpdate=!0)};p()};THREE.VideoTexture.prototype=Object.create(THREE.Texture.prototype);THREE.VideoTexture.prototype.constructor=THREE.VideoTexture; +THREE.CubeTexture.prototype=Object.create(THREE.Texture.prototype);THREE.CubeTexture.prototype.constructor=THREE.CubeTexture;THREE.CubeTexture.clone=function(a){void 0===a&&(a=new THREE.CubeTexture);THREE.Texture.prototype.clone.call(this,a);a.images=this.images;return a};THREE.CompressedTexture=function(a,b,c,d,e,f,g,h,k,l,p){THREE.Texture.call(this,null,f,g,h,k,l,d,e,p);this.image={width:b,height:c};this.mipmaps=a;this.generateMipmaps=this.flipY=!1};THREE.CompressedTexture.prototype=Object.create(THREE.Texture.prototype); +THREE.CompressedTexture.prototype.constructor=THREE.CompressedTexture;THREE.CompressedTexture.prototype.clone=function(){var a=new THREE.CompressedTexture;THREE.Texture.prototype.clone.call(this,a);return a};THREE.DataTexture=function(a,b,c,d,e,f,g,h,k,l,p){THREE.Texture.call(this,null,f,g,h,k,l,d,e,p);this.image={data:a,width:b,height:c}};THREE.DataTexture.prototype=Object.create(THREE.Texture.prototype);THREE.DataTexture.prototype.constructor=THREE.DataTexture; +THREE.DataTexture.prototype.clone=function(){var a=new THREE.DataTexture;THREE.Texture.prototype.clone.call(this,a);return a};THREE.VideoTexture=function(a,b,c,d,e,f,g,h,k){THREE.Texture.call(this,a,b,c,d,e,f,g,h,k);this.generateMipmaps=!1;var l=this,p=function(){requestAnimationFrame(p);a.readyState===a.HAVE_ENOUGH_DATA&&(l.needsUpdate=!0)};p()};THREE.VideoTexture.prototype=Object.create(THREE.Texture.prototype);THREE.VideoTexture.prototype.constructor=THREE.VideoTexture; THREE.Group=function(){THREE.Object3D.call(this);this.type="Group"};THREE.Group.prototype=Object.create(THREE.Object3D.prototype);THREE.Group.prototype.constructor=THREE.Group;THREE.PointCloud=function(a,b){THREE.Object3D.call(this);this.type="PointCloud";this.geometry=void 0!==a?a:new THREE.Geometry;this.material=void 0!==b?b:new THREE.PointCloudMaterial({color:16777215*Math.random()})};THREE.PointCloud.prototype=Object.create(THREE.Object3D.prototype);THREE.PointCloud.prototype.constructor=THREE.PointCloud; -THREE.PointCloud.prototype.raycast=function(){var a=new THREE.Matrix4,b=new THREE.Ray;return function(c,d){var e=this,f=e.geometry,g=c.params.PointCloud.threshold;a.getInverse(this.matrixWorld);b.copy(c.ray).applyMatrix4(a);if(null===f.boundingBox||!1!==b.isIntersectionBox(f.boundingBox)){var h=g/((this.scale.x+this.scale.y+this.scale.z)/3),k=new THREE.Vector3,g=function(a,f){var g=b.distanceToPoint(a);if(g<h){var k=b.closestPointToPoint(a);k.applyMatrix4(e.matrixWorld);var m=c.ray.origin.distanceTo(k); -d.push({distance:m,distanceToRay:g,point:k.clone(),index:f,face:null,object:e})}};if(f instanceof THREE.BufferGeometry){var n=f.attributes,p=n.position.array;if(void 0!==n.index){var n=n.index.array,q=f.offsets;0===q.length&&(q=[{start:0,count:n.length,index:0}]);for(var m=0,t=q.length;m<t;++m)for(var s=q[m].start,r=q[m].index,f=s,s=s+q[m].count;f<s;f++){var u=r+n[f];k.fromArray(p,3*u);g(k,u)}}else for(n=p.length/3,f=0;f<n;f++)k.set(p[3*f],p[3*f+1],p[3*f+2]),g(k,f)}else for(k=this.geometry.vertices, -f=0;f<k.length;f++)g(k[f],f)}}}();THREE.PointCloud.prototype.clone=function(a){void 0===a&&(a=new THREE.PointCloud(this.geometry,this.material));THREE.Object3D.prototype.clone.call(this,a);return a};THREE.ParticleSystem=function(a,b){console.warn("THREE.ParticleSystem has been renamed to THREE.PointCloud.");return new THREE.PointCloud(a,b)}; +THREE.PointCloud.prototype.raycast=function(){var a=new THREE.Matrix4,b=new THREE.Ray;return function(c,d){var e=this,f=e.geometry,g=c.params.PointCloud.threshold;a.getInverse(this.matrixWorld);b.copy(c.ray).applyMatrix4(a);if(null===f.boundingBox||!1!==b.isIntersectionBox(f.boundingBox)){var h=g/((this.scale.x+this.scale.y+this.scale.z)/3),k=new THREE.Vector3,g=function(a,f){var g=b.distanceToPoint(a);if(g<h){var k=b.closestPointToPoint(a);k.applyMatrix4(e.matrixWorld);var n=c.ray.origin.distanceTo(k); +d.push({distance:n,distanceToRay:g,point:k.clone(),index:f,face:null,object:e})}};if(f instanceof THREE.BufferGeometry){var l=f.attributes,p=l.position.array;if(void 0!==l.index){var l=l.index.array,q=f.offsets;0===q.length&&(q=[{start:0,count:l.length,index:0}]);for(var n=0,t=q.length;n<t;++n)for(var r=q[n].start,s=q[n].index,f=r,r=r+q[n].count;f<r;f++){var u=s+l[f];k.fromArray(p,3*u);g(k,u)}}else for(l=p.length/3,f=0;f<l;f++)k.set(p[3*f],p[3*f+1],p[3*f+2]),g(k,f)}else for(k=this.geometry.vertices, +f=0;f<k.length;f++)g(k[f],f)}}}();THREE.PointCloud.prototype.clone=function(a){void 0===a&&(a=new THREE.PointCloud(this.geometry,this.material));THREE.Object3D.prototype.clone.call(this,a);return a};THREE.ParticleSystem=function(a,b){THREE.warn("THREE.ParticleSystem has been renamed to THREE.PointCloud.");return new THREE.PointCloud(a,b)}; THREE.Line=function(a,b,c){THREE.Object3D.call(this);this.type="Line";this.geometry=void 0!==a?a:new THREE.Geometry;this.material=void 0!==b?b:new THREE.LineBasicMaterial({color:16777215*Math.random()});this.mode=void 0!==c?c:THREE.LineStrip};THREE.LineStrip=0;THREE.LinePieces=1;THREE.Line.prototype=Object.create(THREE.Object3D.prototype);THREE.Line.prototype.constructor=THREE.Line; -THREE.Line.prototype.raycast=function(){var a=new THREE.Matrix4,b=new THREE.Ray,c=new THREE.Sphere;return function(d,e){var f=d.linePrecision,f=f*f,g=this.geometry;null===g.boundingSphere&&g.computeBoundingSphere();c.copy(g.boundingSphere);c.applyMatrix4(this.matrixWorld);if(!1!==d.ray.isIntersectionSphere(c)){a.getInverse(this.matrixWorld);b.copy(d.ray).applyMatrix4(a);var h=new THREE.Vector3,k=new THREE.Vector3,n=new THREE.Vector3,p=new THREE.Vector3,q=this.mode===THREE.LineStrip?1:2;if(g instanceof -THREE.BufferGeometry){var m=g.attributes;if(void 0!==m.index){var t=m.index.array,m=m.position.array,s=g.offsets;0===s.length&&(s=[{start:0,count:t.length,index:0}]);for(var r=0;r<s.length;r++)for(var u=s[r].start,v=s[r].count,y=s[r].index,g=u;g<u+v-1;g+=q){var C=y+t[g+1];h.fromArray(m,3*(y+t[g]));k.fromArray(m,3*C);C=b.distanceSqToSegment(h,k,p,n);C>f||(C=b.origin.distanceTo(p),C<d.near||C>d.far||e.push({distance:C,point:n.clone().applyMatrix4(this.matrixWorld),face:null,faceIndex:null,object:this}))}}else for(m= -m.position.array,g=0;g<m.length/3-1;g+=q)h.fromArray(m,3*g),k.fromArray(m,3*g+3),C=b.distanceSqToSegment(h,k,p,n),C>f||(C=b.origin.distanceTo(p),C<d.near||C>d.far||e.push({distance:C,point:n.clone().applyMatrix4(this.matrixWorld),face:null,faceIndex:null,object:this}))}else if(g instanceof THREE.Geometry)for(h=g.vertices,k=h.length,g=0;g<k-1;g+=q)C=b.distanceSqToSegment(h[g],h[g+1],p,n),C>f||(C=b.origin.distanceTo(p),C<d.near||C>d.far||e.push({distance:C,point:n.clone().applyMatrix4(this.matrixWorld), -face:null,faceIndex:null,object:this}))}}}();THREE.Line.prototype.clone=function(a){void 0===a&&(a=new THREE.Line(this.geometry,this.material,this.mode));THREE.Object3D.prototype.clone.call(this,a);return a};THREE.Mesh=function(a,b){THREE.Object3D.call(this);this.type="Mesh";this.geometry=void 0!==a?a:new THREE.Geometry;this.material=void 0!==b?b:new THREE.MeshBasicMaterial({color:16777215*Math.random()});this.updateMorphTargets()};THREE.Mesh.prototype=Object.create(THREE.Object3D.prototype); +THREE.Line.prototype.raycast=function(){var a=new THREE.Matrix4,b=new THREE.Ray,c=new THREE.Sphere;return function(d,e){var f=d.linePrecision,f=f*f,g=this.geometry;null===g.boundingSphere&&g.computeBoundingSphere();c.copy(g.boundingSphere);c.applyMatrix4(this.matrixWorld);if(!1!==d.ray.isIntersectionSphere(c)){a.getInverse(this.matrixWorld);b.copy(d.ray).applyMatrix4(a);var h=new THREE.Vector3,k=new THREE.Vector3,l=new THREE.Vector3,p=new THREE.Vector3,q=this.mode===THREE.LineStrip?1:2;if(g instanceof +THREE.BufferGeometry){var n=g.attributes;if(void 0!==n.index){var t=n.index.array,n=n.position.array,r=g.offsets;0===r.length&&(r=[{start:0,count:t.length,index:0}]);for(var s=0;s<r.length;s++)for(var u=r[s].start,v=r[s].count,x=r[s].index,g=u;g<u+v-1;g+=q){var D=x+t[g+1];h.fromArray(n,3*(x+t[g]));k.fromArray(n,3*D);D=b.distanceSqToSegment(h,k,p,l);D>f||(D=b.origin.distanceTo(p),D<d.near||D>d.far||e.push({distance:D,point:l.clone().applyMatrix4(this.matrixWorld),index:g,offsetIndex:s,face:null,faceIndex:null, +object:this}))}}else for(n=n.position.array,g=0;g<n.length/3-1;g+=q)h.fromArray(n,3*g),k.fromArray(n,3*g+3),D=b.distanceSqToSegment(h,k,p,l),D>f||(D=b.origin.distanceTo(p),D<d.near||D>d.far||e.push({distance:D,point:l.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}else if(g instanceof THREE.Geometry)for(h=g.vertices,k=h.length,g=0;g<k-1;g+=q)D=b.distanceSqToSegment(h[g],h[g+1],p,l),D>f||(D=b.origin.distanceTo(p),D<d.near||D>d.far||e.push({distance:D,point:l.clone().applyMatrix4(this.matrixWorld), +index:g,face:null,faceIndex:null,object:this}))}}}();THREE.Line.prototype.clone=function(a){void 0===a&&(a=new THREE.Line(this.geometry,this.material,this.mode));THREE.Object3D.prototype.clone.call(this,a);return a};THREE.Mesh=function(a,b){THREE.Object3D.call(this);this.type="Mesh";this.geometry=void 0!==a?a:new THREE.Geometry;this.material=void 0!==b?b:new THREE.MeshBasicMaterial({color:16777215*Math.random()});this.updateMorphTargets()};THREE.Mesh.prototype=Object.create(THREE.Object3D.prototype); THREE.Mesh.prototype.constructor=THREE.Mesh;THREE.Mesh.prototype.updateMorphTargets=function(){if(void 0!==this.geometry.morphTargets&&0<this.geometry.morphTargets.length){this.morphTargetBase=-1;this.morphTargetForcedOrder=[];this.morphTargetInfluences=[];this.morphTargetDictionary={};for(var a=0,b=this.geometry.morphTargets.length;a<b;a++)this.morphTargetInfluences.push(0),this.morphTargetDictionary[this.geometry.morphTargets[a].name]=a}}; -THREE.Mesh.prototype.getMorphTargetIndexByName=function(a){if(void 0!==this.morphTargetDictionary[a])return this.morphTargetDictionary[a];console.log("THREE.Mesh.getMorphTargetIndexByName: morph target "+a+" does not exist. Returning 0.");return 0}; -THREE.Mesh.prototype.raycast=function(){var a=new THREE.Matrix4,b=new THREE.Ray,c=new THREE.Sphere,d=new THREE.Vector3,e=new THREE.Vector3,f=new THREE.Vector3;return function(g,h){var k=this.geometry;null===k.boundingSphere&&k.computeBoundingSphere();c.copy(k.boundingSphere);c.applyMatrix4(this.matrixWorld);if(!1!==g.ray.isIntersectionSphere(c)&&(a.getInverse(this.matrixWorld),b.copy(g.ray).applyMatrix4(a),null===k.boundingBox||!1!==b.isIntersectionBox(k.boundingBox)))if(k instanceof THREE.BufferGeometry){var n= -this.material;if(void 0!==n){var p=k.attributes,q,m,t=g.precision;if(void 0!==p.index){var s=p.index.array,r=p.position.array,u=k.offsets;0===u.length&&(u=[{start:0,count:s.length,index:0}]);for(var v=0,y=u.length;v<y;++v)for(var p=u[v].start,C=u[v].index,k=p,x=p+u[v].count;k<x;k+=3){p=C+s[k];q=C+s[k+1];m=C+s[k+2];d.fromArray(r,3*p);e.fromArray(r,3*q);f.fromArray(r,3*m);var F=n.side===THREE.BackSide?b.intersectTriangle(f,e,d,!0):b.intersectTriangle(d,e,f,n.side!==THREE.DoubleSide);if(null!==F){F.applyMatrix4(this.matrixWorld); -var z=g.ray.origin.distanceTo(F);z<t||z<g.near||z>g.far||h.push({distance:z,point:F,face:new THREE.Face3(p,q,m,THREE.Triangle.normal(d,e,f)),faceIndex:null,object:this})}}}else for(r=p.position.array,s=k=0,x=r.length;k<x;k+=3,s+=9)p=k,q=k+1,m=k+2,d.fromArray(r,s),e.fromArray(r,s+3),f.fromArray(r,s+6),F=n.side===THREE.BackSide?b.intersectTriangle(f,e,d,!0):b.intersectTriangle(d,e,f,n.side!==THREE.DoubleSide),null!==F&&(F.applyMatrix4(this.matrixWorld),z=g.ray.origin.distanceTo(F),z<t||z<g.near||z> -g.far||h.push({distance:z,point:F,face:new THREE.Face3(p,q,m,THREE.Triangle.normal(d,e,f)),faceIndex:null,object:this}))}}else if(k instanceof THREE.Geometry)for(s=this.material instanceof THREE.MeshFaceMaterial,r=!0===s?this.material.materials:null,t=g.precision,u=k.vertices,v=0,y=k.faces.length;v<y;v++)if(C=k.faces[v],n=!0===s?r[C.materialIndex]:this.material,void 0!==n){p=u[C.a];q=u[C.b];m=u[C.c];if(!0===n.morphTargets){F=k.morphTargets;z=this.morphTargetInfluences;d.set(0,0,0);e.set(0,0,0);f.set(0, -0,0);for(var x=0,G=F.length;x<G;x++){var E=z[x];if(0!==E){var w=F[x].vertices;d.x+=(w[C.a].x-p.x)*E;d.y+=(w[C.a].y-p.y)*E;d.z+=(w[C.a].z-p.z)*E;e.x+=(w[C.b].x-q.x)*E;e.y+=(w[C.b].y-q.y)*E;e.z+=(w[C.b].z-q.z)*E;f.x+=(w[C.c].x-m.x)*E;f.y+=(w[C.c].y-m.y)*E;f.z+=(w[C.c].z-m.z)*E}}d.add(p);e.add(q);f.add(m);p=d;q=e;m=f}F=n.side===THREE.BackSide?b.intersectTriangle(m,q,p,!0):b.intersectTriangle(p,q,m,n.side!==THREE.DoubleSide);null!==F&&(F.applyMatrix4(this.matrixWorld),z=g.ray.origin.distanceTo(F),z<t|| -z<g.near||z>g.far||h.push({distance:z,point:F,face:C,faceIndex:v,object:this}))}}}();THREE.Mesh.prototype.clone=function(a,b){void 0===a&&(a=new THREE.Mesh(this.geometry,this.material));THREE.Object3D.prototype.clone.call(this,a,b);return a};THREE.Bone=function(a){THREE.Object3D.call(this);this.skin=a};THREE.Bone.prototype=Object.create(THREE.Object3D.prototype);THREE.Bone.prototype.constructor=THREE.Bone; +THREE.Mesh.prototype.getMorphTargetIndexByName=function(a){if(void 0!==this.morphTargetDictionary[a])return this.morphTargetDictionary[a];THREE.warn("THREE.Mesh.getMorphTargetIndexByName: morph target "+a+" does not exist. Returning 0.");return 0}; +THREE.Mesh.prototype.raycast=function(){var a=new THREE.Matrix4,b=new THREE.Ray,c=new THREE.Sphere,d=new THREE.Vector3,e=new THREE.Vector3,f=new THREE.Vector3;return function(g,h){var k=this.geometry;null===k.boundingSphere&&k.computeBoundingSphere();c.copy(k.boundingSphere);c.applyMatrix4(this.matrixWorld);if(!1!==g.ray.isIntersectionSphere(c)&&(a.getInverse(this.matrixWorld),b.copy(g.ray).applyMatrix4(a),null===k.boundingBox||!1!==b.isIntersectionBox(k.boundingBox)))if(k instanceof THREE.BufferGeometry){var l= +this.material;if(void 0!==l){var p=k.attributes,q,n,t=g.precision;if(void 0!==p.index){var r=p.index.array,s=p.position.array,u=k.offsets;0===u.length&&(u=[{start:0,count:r.length,index:0}]);for(var v=0,x=u.length;v<x;++v)for(var p=u[v].start,D=u[v].index,k=p,w=p+u[v].count;k<w;k+=3){p=D+r[k];q=D+r[k+1];n=D+r[k+2];d.fromArray(s,3*p);e.fromArray(s,3*q);f.fromArray(s,3*n);var y=l.side===THREE.BackSide?b.intersectTriangle(f,e,d,!0):b.intersectTriangle(d,e,f,l.side!==THREE.DoubleSide);if(null!==y){y.applyMatrix4(this.matrixWorld); +var A=g.ray.origin.distanceTo(y);A<t||A<g.near||A>g.far||h.push({distance:A,point:y,face:new THREE.Face3(p,q,n,THREE.Triangle.normal(d,e,f)),faceIndex:null,object:this})}}}else for(s=p.position.array,r=k=0,w=s.length;k<w;k+=3,r+=9)p=k,q=k+1,n=k+2,d.fromArray(s,r),e.fromArray(s,r+3),f.fromArray(s,r+6),y=l.side===THREE.BackSide?b.intersectTriangle(f,e,d,!0):b.intersectTriangle(d,e,f,l.side!==THREE.DoubleSide),null!==y&&(y.applyMatrix4(this.matrixWorld),A=g.ray.origin.distanceTo(y),A<t||A<g.near||A> +g.far||h.push({distance:A,point:y,face:new THREE.Face3(p,q,n,THREE.Triangle.normal(d,e,f)),faceIndex:null,object:this}))}}else if(k instanceof THREE.Geometry)for(r=this.material instanceof THREE.MeshFaceMaterial,s=!0===r?this.material.materials:null,t=g.precision,u=k.vertices,v=0,x=k.faces.length;v<x;v++)if(D=k.faces[v],l=!0===r?s[D.materialIndex]:this.material,void 0!==l){p=u[D.a];q=u[D.b];n=u[D.c];if(!0===l.morphTargets){y=k.morphTargets;A=this.morphTargetInfluences;d.set(0,0,0);e.set(0,0,0);f.set(0, +0,0);for(var w=0,E=y.length;w<E;w++){var G=A[w];if(0!==G){var F=y[w].vertices;d.x+=(F[D.a].x-p.x)*G;d.y+=(F[D.a].y-p.y)*G;d.z+=(F[D.a].z-p.z)*G;e.x+=(F[D.b].x-q.x)*G;e.y+=(F[D.b].y-q.y)*G;e.z+=(F[D.b].z-q.z)*G;f.x+=(F[D.c].x-n.x)*G;f.y+=(F[D.c].y-n.y)*G;f.z+=(F[D.c].z-n.z)*G}}d.add(p);e.add(q);f.add(n);p=d;q=e;n=f}y=l.side===THREE.BackSide?b.intersectTriangle(n,q,p,!0):b.intersectTriangle(p,q,n,l.side!==THREE.DoubleSide);null!==y&&(y.applyMatrix4(this.matrixWorld),A=g.ray.origin.distanceTo(y),A<t|| +A<g.near||A>g.far||h.push({distance:A,point:y,face:D,faceIndex:v,object:this}))}}}();THREE.Mesh.prototype.clone=function(a,b){void 0===a&&(a=new THREE.Mesh(this.geometry,this.material));THREE.Object3D.prototype.clone.call(this,a,b);return a};THREE.Bone=function(a){THREE.Object3D.call(this);this.type="Bone";this.skin=a};THREE.Bone.prototype=Object.create(THREE.Object3D.prototype);THREE.Bone.prototype.constructor=THREE.Bone; THREE.Skeleton=function(a,b,c){this.useVertexTexture=void 0!==c?c:!0;this.identityMatrix=new THREE.Matrix4;a=a||[];this.bones=a.slice(0);this.useVertexTexture?(this.boneTextureHeight=this.boneTextureWidth=a=256<this.bones.length?64:64<this.bones.length?32:16<this.bones.length?16:8,this.boneMatrices=new Float32Array(this.boneTextureWidth*this.boneTextureHeight*4),this.boneTexture=new THREE.DataTexture(this.boneMatrices,this.boneTextureWidth,this.boneTextureHeight,THREE.RGBAFormat,THREE.FloatType), -this.boneTexture.minFilter=THREE.NearestFilter,this.boneTexture.magFilter=THREE.NearestFilter,this.boneTexture.generateMipmaps=!1,this.boneTexture.flipY=!1):this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(console.warn("THREE.Skeleton bonInverses is the wrong length."),this.boneInverses=[],b=0,a=this.bones.length;b<a;b++)this.boneInverses.push(new THREE.Matrix4)}; +this.boneTexture.minFilter=THREE.NearestFilter,this.boneTexture.magFilter=THREE.NearestFilter,this.boneTexture.generateMipmaps=!1,this.boneTexture.flipY=!1):this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(THREE.warn("THREE.Skeleton bonInverses is the wrong length."),this.boneInverses=[],b=0,a=this.bones.length;b<a;b++)this.boneInverses.push(new THREE.Matrix4)}; THREE.Skeleton.prototype.calculateInverses=function(){this.boneInverses=[];for(var a=0,b=this.bones.length;a<b;a++){var c=new THREE.Matrix4;this.bones[a]&&c.getInverse(this.bones[a].matrixWorld);this.boneInverses.push(c)}}; THREE.Skeleton.prototype.pose=function(){for(var a,b=0,c=this.bones.length;b<c;b++)(a=this.bones[b])&&a.matrixWorld.getInverse(this.boneInverses[b]);b=0;for(c=this.bones.length;b<c;b++)if(a=this.bones[b])a.parent?(a.matrix.getInverse(a.parent.matrixWorld),a.matrix.multiply(a.matrixWorld)):a.matrix.copy(a.matrixWorld),a.matrix.decompose(a.position,a.quaternion,a.scale)}; THREE.Skeleton.prototype.update=function(){var a=new THREE.Matrix4;return function(){for(var b=0,c=this.bones.length;b<c;b++)a.multiplyMatrices(this.bones[b]?this.bones[b].matrixWorld:this.identityMatrix,this.boneInverses[b]),a.flattenToArrayOffset(this.boneMatrices,16*b);this.useVertexTexture&&(this.boneTexture.needsUpdate=!0)}}(); THREE.SkinnedMesh=function(a,b,c){THREE.Mesh.call(this,a,b);this.type="SkinnedMesh";this.bindMode="attached";this.bindMatrix=new THREE.Matrix4;this.bindMatrixInverse=new THREE.Matrix4;a=[];if(this.geometry&&void 0!==this.geometry.bones){for(var d,e,f,g,h=0,k=this.geometry.bones.length;h<k;++h)d=this.geometry.bones[h],e=d.pos,f=d.rotq,g=d.scl,b=new THREE.Bone(this),a.push(b),b.name=d.name,b.position.set(e[0],e[1],e[2]),b.quaternion.set(f[0],f[1],f[2],f[3]),void 0!==g?b.scale.set(g[0],g[1],g[2]):b.scale.set(1, 1,1);h=0;for(k=this.geometry.bones.length;h<k;++h)d=this.geometry.bones[h],-1!==d.parent?a[d.parent].add(a[h]):this.add(a[h])}this.normalizeSkinWeights();this.updateMatrixWorld(!0);this.bind(new THREE.Skeleton(a,void 0,c))};THREE.SkinnedMesh.prototype=Object.create(THREE.Mesh.prototype);THREE.SkinnedMesh.prototype.constructor=THREE.SkinnedMesh;THREE.SkinnedMesh.prototype.bind=function(a,b){this.skeleton=a;void 0===b&&(this.updateMatrixWorld(!0),b=this.matrixWorld);this.bindMatrix.copy(b);this.bindMatrixInverse.getInverse(b)}; THREE.SkinnedMesh.prototype.pose=function(){this.skeleton.pose()};THREE.SkinnedMesh.prototype.normalizeSkinWeights=function(){if(this.geometry instanceof THREE.Geometry)for(var a=0;a<this.geometry.skinIndices.length;a++){var b=this.geometry.skinWeights[a],c=1/b.lengthManhattan();Infinity!==c?b.multiplyScalar(c):b.set(1)}}; -THREE.SkinnedMesh.prototype.updateMatrixWorld=function(a){THREE.Mesh.prototype.updateMatrixWorld.call(this,!0);"attached"===this.bindMode?this.bindMatrixInverse.getInverse(this.matrixWorld):"detached"===this.bindMode?this.bindMatrixInverse.getInverse(this.bindMatrix):console.warn("THREE.SkinnedMesh unreckognized bindMode: "+this.bindMode)}; +THREE.SkinnedMesh.prototype.updateMatrixWorld=function(a){THREE.Mesh.prototype.updateMatrixWorld.call(this,!0);"attached"===this.bindMode?this.bindMatrixInverse.getInverse(this.matrixWorld):"detached"===this.bindMode?this.bindMatrixInverse.getInverse(this.bindMatrix):THREE.warn("THREE.SkinnedMesh unreckognized bindMode: "+this.bindMode)}; THREE.SkinnedMesh.prototype.clone=function(a){void 0===a&&(a=new THREE.SkinnedMesh(this.geometry,this.material,this.useVertexTexture));THREE.Mesh.prototype.clone.call(this,a);return a};THREE.MorphAnimMesh=function(a,b){THREE.Mesh.call(this,a,b);this.type="MorphAnimMesh";this.duration=1E3;this.mirroredLoop=!1;this.currentKeyframe=this.lastKeyframe=this.time=0;this.direction=1;this.directionBackwards=!1;this.setFrameRange(0,this.geometry.morphTargets.length-1)};THREE.MorphAnimMesh.prototype=Object.create(THREE.Mesh.prototype); THREE.MorphAnimMesh.prototype.constructor=THREE.MorphAnimMesh;THREE.MorphAnimMesh.prototype.setFrameRange=function(a,b){this.startKeyframe=a;this.endKeyframe=b;this.length=this.endKeyframe-this.startKeyframe+1};THREE.MorphAnimMesh.prototype.setDirectionForward=function(){this.direction=1;this.directionBackwards=!1};THREE.MorphAnimMesh.prototype.setDirectionBackward=function(){this.direction=-1;this.directionBackwards=!0}; THREE.MorphAnimMesh.prototype.parseAnimations=function(){var a=this.geometry;a.animations||(a.animations={});for(var b,c=a.animations,d=/([a-z]+)_?(\d+)/,e=0,f=a.morphTargets.length;e<f;e++){var g=a.morphTargets[e].name.match(d);if(g&&1<g.length){g=g[1];c[g]||(c[g]={start:Infinity,end:-Infinity});var h=c[g];e<h.start&&(h.start=e);e>h.end&&(h.end=e);b||(b=g)}}a.firstAnimation=b}; -THREE.MorphAnimMesh.prototype.setAnimationLabel=function(a,b,c){this.geometry.animations||(this.geometry.animations={});this.geometry.animations[a]={start:b,end:c}};THREE.MorphAnimMesh.prototype.playAnimation=function(a,b){var c=this.geometry.animations[a];c?(this.setFrameRange(c.start,c.end),this.duration=(c.end-c.start)/b*1E3,this.time=0):console.warn("animation["+a+"] undefined")}; +THREE.MorphAnimMesh.prototype.setAnimationLabel=function(a,b,c){this.geometry.animations||(this.geometry.animations={});this.geometry.animations[a]={start:b,end:c}};THREE.MorphAnimMesh.prototype.playAnimation=function(a,b){var c=this.geometry.animations[a];c?(this.setFrameRange(c.start,c.end),this.duration=(c.end-c.start)/b*1E3,this.time=0):THREE.warn("THREE.MorphAnimMesh: animation["+a+"] undefined in .playAnimation()")}; THREE.MorphAnimMesh.prototype.updateAnimation=function(a){var b=this.duration/this.length;this.time+=this.direction*a;if(this.mirroredLoop){if(this.time>this.duration||0>this.time)this.direction*=-1,this.time>this.duration&&(this.time=this.duration,this.directionBackwards=!0),0>this.time&&(this.time=0,this.directionBackwards=!1)}else this.time%=this.duration,0>this.time&&(this.time+=this.duration);a=this.startKeyframe+THREE.Math.clamp(Math.floor(this.time/b),0,this.length-1);a!==this.currentKeyframe&& (this.morphTargetInfluences[this.lastKeyframe]=0,this.morphTargetInfluences[this.currentKeyframe]=1,this.morphTargetInfluences[a]=0,this.lastKeyframe=this.currentKeyframe,this.currentKeyframe=a);b=this.time%b/b;this.directionBackwards&&(b=1-b);this.morphTargetInfluences[this.currentKeyframe]=b;this.morphTargetInfluences[this.lastKeyframe]=1-b}; THREE.MorphAnimMesh.prototype.interpolateTargets=function(a,b,c){for(var d=this.morphTargetInfluences,e=0,f=d.length;e<f;e++)d[e]=0;-1<a&&(d[a]=1-c);-1<b&&(d[b]=c)}; @@ -375,260 +383,268 @@ THREE.Particle=THREE.Sprite;THREE.LensFlare=function(a,b,c,d,e){THREE.Object3D.c THREE.LensFlare.prototype.add=function(a,b,c,d,e,f){void 0===b&&(b=-1);void 0===c&&(c=0);void 0===f&&(f=1);void 0===e&&(e=new THREE.Color(16777215));void 0===d&&(d=THREE.NormalBlending);c=Math.min(c,Math.max(0,c));this.lensFlares.push({texture:a,size:b,distance:c,x:0,y:0,z:0,scale:1,rotation:1,opacity:f,color:e,blending:d})}; THREE.LensFlare.prototype.updateLensFlares=function(){var a,b=this.lensFlares.length,c,d=2*-this.positionScreen.x,e=2*-this.positionScreen.y;for(a=0;a<b;a++)c=this.lensFlares[a],c.x=this.positionScreen.x+d*c.distance,c.y=this.positionScreen.y+e*c.distance,c.wantedRotation=c.x*Math.PI*.25,c.rotation+=.25*(c.wantedRotation-c.rotation)};THREE.Scene=function(){THREE.Object3D.call(this);this.type="Scene";this.overrideMaterial=this.fog=null;this.autoUpdate=!0};THREE.Scene.prototype=Object.create(THREE.Object3D.prototype); THREE.Scene.prototype.constructor=THREE.Scene;THREE.Scene.prototype.clone=function(a){void 0===a&&(a=new THREE.Scene);THREE.Object3D.prototype.clone.call(this,a);null!==this.fog&&(a.fog=this.fog.clone());null!==this.overrideMaterial&&(a.overrideMaterial=this.overrideMaterial.clone());a.autoUpdate=this.autoUpdate;a.matrixAutoUpdate=this.matrixAutoUpdate;return a};THREE.Fog=function(a,b,c){this.name="";this.color=new THREE.Color(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3}; -THREE.Fog.prototype.clone=function(){return new THREE.Fog(this.color.getHex(),this.near,this.far)};THREE.FogExp2=function(a,b){this.name="";this.color=new THREE.Color(a);this.density=void 0!==b?b:2.5E-4};THREE.FogExp2.prototype.clone=function(){return new THREE.FogExp2(this.color.getHex(),this.density)};THREE.ShaderChunk={};THREE.ShaderChunk.alphatest_fragment="#ifdef ALPHATEST\n\n\tif ( gl_FragColor.a < ALPHATEST ) discard;\n\n#endif\n";THREE.ShaderChunk.lights_lambert_vertex="vLightFront = vec3( 0.0 );\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack = vec3( 0.0 );\n\n#endif\n\ntransformedNormal = normalize( transformedNormal );\n\n#if MAX_DIR_LIGHTS > 0\n\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n\tvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\n\tvec3 dirVector = normalize( lDirection.xyz );\n\n\tfloat dotProduct = dot( transformedNormal, dirVector );\n\tvec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 directionalLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t#endif\n\n\t#endif\n\n\t#ifdef WRAP_AROUND\n\n\t\tvec3 directionalLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\tdirectionalLightWeighting = mix( directionalLightWeighting, directionalLightWeightingHalf, wrapRGB );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tdirectionalLightWeightingBack = mix( directionalLightWeightingBack, directionalLightWeightingHalfBack, wrapRGB );\n\n\t\t#endif\n\n\t#endif\n\n\tvLightFront += directionalLightColor[ i ] * directionalLightWeighting;\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvLightBack += directionalLightColor[ i ] * directionalLightWeightingBack;\n\n\t#endif\n\n}\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat lDistance = 1.0;\n\t\tif ( pointLightDistance[ i ] > 0.0 )\n\t\t\tlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\n\n\t\tlVector = normalize( lVector );\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tvec3 pointLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvec3 pointLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 pointLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 pointLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\tpointLightWeighting = mix( pointLightWeighting, pointLightWeightingHalf, wrapRGB );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tpointLightWeightingBack = mix( pointLightWeightingBack, pointLightWeightingHalfBack, wrapRGB );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\tvLightFront += pointLightColor[ i ] * pointLightWeighting * lDistance;\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += pointLightColor[ i ] * pointLightWeightingBack * lDistance;\n\n\t\t#endif\n\n\t}\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - worldPosition.xyz ) );\n\n\t\tif ( spotEffect > spotLightAngleCos[ i ] ) {\n\n\t\t\tspotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n\t\t\tfloat lDistance = 1.0;\n\t\t\tif ( spotLightDistance[ i ] > 0.0 )\n\t\t\t\tlDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );\n\n\t\t\tlVector = normalize( lVector );\n\n\t\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\t\t\tvec3 spotLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvec3 spotLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\t\tvec3 spotLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 spotLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\t\tspotLightWeighting = mix( spotLightWeighting, spotLightWeightingHalf, wrapRGB );\n\n\t\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\t\tspotLightWeightingBack = mix( spotLightWeightingBack, spotLightWeightingHalfBack, wrapRGB );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\tvLightFront += spotLightColor[ i ] * spotLightWeighting * lDistance * spotEffect;\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvLightBack += spotLightColor[ i ] * spotLightWeightingBack * lDistance * spotEffect;\n\n\t\t\t#endif\n\n\t\t}\n\n\t}\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n\t\tvec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );\n\t\tvec3 lVector = normalize( lDirection.xyz );\n\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\t\tfloat hemiDiffuseWeightBack = -0.5 * dotProduct + 0.5;\n\n\t\tvLightFront += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeightBack );\n\n\t\t#endif\n\n\t}\n\n#endif\n\nvLightFront = vLightFront * diffuse + ambient * ambientLightColor + emissive;\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack = vLightBack * diffuse + ambient * ambientLightColor + emissive;\n\n#endif"; -THREE.ShaderChunk.map_particle_pars_fragment="#ifdef USE_MAP\n\n\tuniform sampler2D map;\n\n#endif";THREE.ShaderChunk.default_vertex="#ifdef USE_SKINNING\n\n\tvec4 mvPosition = modelViewMatrix * skinned;\n\n#elif defined( USE_MORPHTARGETS )\n\n\tvec4 mvPosition = modelViewMatrix * vec4( morphed, 1.0 );\n\n#else\n\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\n#endif\n\ngl_Position = projectionMatrix * mvPosition;\n";THREE.ShaderChunk.map_pars_fragment="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvarying vec2 vUv;\n\n#endif\n\n#ifdef USE_MAP\n\n\tuniform sampler2D map;\n\n#endif"; -THREE.ShaderChunk.skinnormal_vertex="#ifdef USE_SKINNING\n\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\n\t#ifdef USE_MORPHNORMALS\n\n\tvec4 skinnedNormal = skinMatrix * vec4( morphedNormal, 0.0 );\n\n\t#else\n\n\tvec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );\n\n\t#endif\n\n#endif\n"; -THREE.ShaderChunk.logdepthbuf_pars_vertex="#ifdef USE_LOGDEPTHBUF\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tvarying float vFragDepth;\n\n\t#endif\n\n\tuniform float logDepthBufFC;\n\n#endif";THREE.ShaderChunk.lightmap_pars_vertex="#ifdef USE_LIGHTMAP\n\n\tvarying vec2 vUv2;\n\n#endif";THREE.ShaderChunk.lights_phong_fragment="vec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );\n\n#ifdef DOUBLE_SIDED\n\n\tnormal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\n#endif\n\n#ifdef USE_NORMALMAP\n\n\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\n#elif defined( USE_BUMPMAP )\n\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tvec3 pointDiffuse = vec3( 0.0 );\n\tvec3 pointSpecular = vec3( 0.0 );\n\n\tfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n\t\tfloat lDistance = 1.0;\n\t\tif ( pointLightDistance[ i ] > 0.0 )\n\t\t\tlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\n\n\t\tlVector = normalize( lVector );\n\n\t\t\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, lVector );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tfloat pointDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\tfloat pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\tvec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n\n\t\t#else\n\n\t\t\tfloat pointDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t#endif\n\n\t\tpointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;\n\n\t\t\t\t// specular\n\n\t\tvec3 pointHalfVector = normalize( lVector + viewPosition );\n\t\tfloat pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\n\t\tfloat pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );\n\t\tpointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;\n\n\t}\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tvec3 spotDiffuse = vec3( 0.0 );\n\tvec3 spotSpecular = vec3( 0.0 );\n\n\tfor ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n\t\tfloat lDistance = 1.0;\n\t\tif ( spotLightDistance[ i ] > 0.0 )\n\t\t\tlDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );\n\n\t\tlVector = normalize( lVector );\n\n\t\tfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\n\n\t\tif ( spotEffect > spotLightAngleCos[ i ] ) {\n\n\t\t\tspotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n\t\t\t\t\t// diffuse\n\n\t\t\tfloat dotProduct = dot( normal, lVector );\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tfloat spotDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\t\tfloat spotDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\t\tvec3 spotDiffuseWeight = mix( vec3( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );\n\n\t\t\t#else\n\n\t\t\t\tfloat spotDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t\t#endif\n\n\t\t\tspotDiffuse += diffuse * spotLightColor[ i ] * spotDiffuseWeight * lDistance * spotEffect;\n\n\t\t\t\t\t// specular\n\n\t\t\tvec3 spotHalfVector = normalize( lVector + viewPosition );\n\t\t\tfloat spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );\n\t\t\tfloat spotSpecularWeight = specularStrength * max( pow( spotDotNormalHalf, shininess ), 0.0 );\n\n\t\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, spotHalfVector ), 0.0 ), 5.0 );\n\t\t\tspotSpecular += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * lDistance * specularNormalization * spotEffect;\n\n\t\t}\n\n\t}\n\n#endif\n\n#if MAX_DIR_LIGHTS > 0\n\n\tvec3 dirDiffuse = vec3( 0.0 );\n\tvec3 dirSpecular = vec3( 0.0 );\n\n\tfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n\t\tvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\n\t\tvec3 dirVector = normalize( lDirection.xyz );\n\n\t\t\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, dirVector );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tfloat dirDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\tfloat dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\tvec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );\n\n\t\t#else\n\n\t\t\tfloat dirDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t#endif\n\n\t\tdirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;\n\n\t\t// specular\n\n\t\tvec3 dirHalfVector = normalize( dirVector + viewPosition );\n\t\tfloat dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\n\t\tfloat dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );\n\n\t\t/*\n\t\t// fresnel term from skin shader\n\t\tconst float F0 = 0.128;\n\n\t\tfloat base = 1.0 - dot( viewPosition, dirHalfVector );\n\t\tfloat exponential = pow( base, 5.0 );\n\n\t\tfloat fresnel = exponential + F0 * ( 1.0 - exponential );\n\t\t*/\n\n\t\t/*\n\t\t// fresnel term from fresnel shader\n\t\tconst float mFresnelBias = 0.08;\n\t\tconst float mFresnelScale = 0.3;\n\t\tconst float mFresnelPower = 5.0;\n\n\t\tfloat fresnel = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( -viewPosition ), normal ), mFresnelPower );\n\t\t*/\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\t// \t\tdirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization * fresnel;\n\n\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );\n\t\tdirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;\n\n\n\t}\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tvec3 hemiDiffuse = vec3( 0.0 );\n\tvec3 hemiSpecular = vec3( 0.0 );\n\n\tfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n\t\tvec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );\n\t\tvec3 lVector = normalize( lDirection.xyz );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, lVector );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\n\t\tvec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n\t\themiDiffuse += diffuse * hemiColor;\n\n\t\t// specular (sky light)\n\n\t\tvec3 hemiHalfVectorSky = normalize( lVector + viewPosition );\n\t\tfloat hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;\n\t\tfloat hemiSpecularWeightSky = specularStrength * max( pow( max( hemiDotNormalHalfSky, 0.0 ), shininess ), 0.0 );\n\n\t\t// specular (ground light)\n\n\t\tvec3 lVectorGround = -lVector;\n\n\t\tvec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );\n\t\tfloat hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;\n\t\tfloat hemiSpecularWeightGround = specularStrength * max( pow( max( hemiDotNormalHalfGround, 0.0 ), shininess ), 0.0 );\n\n\t\tfloat dotProductGround = dot( normal, lVectorGround );\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\tvec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, hemiHalfVectorSky ), 0.0 ), 5.0 );\n\t\tvec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 0.0 ), 5.0 );\n\t\themiSpecular += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );\n\n\t}\n\n#endif\n\nvec3 totalDiffuse = vec3( 0.0 );\nvec3 totalSpecular = vec3( 0.0 );\n\n#if MAX_DIR_LIGHTS > 0\n\n\ttotalDiffuse += dirDiffuse;\n\ttotalSpecular += dirSpecular;\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\ttotalDiffuse += hemiDiffuse;\n\ttotalSpecular += hemiSpecular;\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\ttotalDiffuse += pointDiffuse;\n\ttotalSpecular += pointSpecular;\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\ttotalDiffuse += spotDiffuse;\n\ttotalSpecular += spotSpecular;\n\n#endif\n\n#ifdef METAL\n\n\tgl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient + totalSpecular );\n\n#else\n\n\tgl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;\n\n#endif"; +THREE.Fog.prototype.clone=function(){return new THREE.Fog(this.color.getHex(),this.near,this.far)};THREE.FogExp2=function(a,b){this.name="";this.color=new THREE.Color(a);this.density=void 0!==b?b:2.5E-4};THREE.FogExp2.prototype.clone=function(){return new THREE.FogExp2(this.color.getHex(),this.density)};THREE.ShaderChunk={};THREE.ShaderChunk.common="#define PI 3.14159\n#define PI2 6.28318\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n\nfloat square( in float a ) { return a*a; }\nvec2 square( in vec2 a ) { return vec2( a.x*a.x, a.y*a.y ); }\nvec3 square( in vec3 a ) { return vec3( a.x*a.x, a.y*a.y, a.z*a.z ); }\nvec4 square( in vec4 a ) { return vec4( a.x*a.x, a.y*a.y, a.z*a.z, a.w*a.w ); }\nfloat saturate( in float a ) { return clamp( a, 0.0, 1.0 ); }\nvec2 saturate( in vec2 a ) { return clamp( a, 0.0, 1.0 ); }\nvec3 saturate( in vec3 a ) { return clamp( a, 0.0, 1.0 ); }\nvec4 saturate( in vec4 a ) { return clamp( a, 0.0, 1.0 ); }\nfloat average( in float a ) { return a; }\nfloat average( in vec2 a ) { return ( a.x + a.y) * 0.5; }\nfloat average( in vec3 a ) { return ( a.x + a.y + a.z) / 3.0; }\nfloat average( in vec4 a ) { return ( a.x + a.y + a.z + a.w) * 0.25; }\nfloat whiteCompliment( in float a ) { return saturate( 1.0 - a ); }\nvec2 whiteCompliment( in vec2 a ) { return saturate( vec2(1.0) - a ); }\nvec3 whiteCompliment( in vec3 a ) { return saturate( vec3(1.0) - a ); }\nvec4 whiteCompliment( in vec4 a ) { return saturate( vec4(1.0) - a ); }\nvec3 transformDirection( in vec3 normal, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( normal, 0.0 ) ).xyz );\n}\n// http://en.wikibooks.org/wiki/GLSL_Programming/Applying_Matrix_Transformations\nvec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {\n\treturn normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal) {\n\tfloat distance = dot( planeNormal, point-pointOnPlane );\n\treturn point - distance * planeNormal;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn pointOnLine + lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) );\n}\nfloat calcLightAttenuation( float lightDistance, float cutoffDistance, float decayExponent ) {\n\tif ( decayExponent > 0.0 ) {\n\t return pow( saturate( 1.0 - lightDistance / cutoffDistance ), decayExponent );\n\t}\n\treturn 1.0;\n}\n\nvec3 inputToLinear( in vec3 a ) {\n#ifdef GAMMA_INPUT\n\treturn pow( a, vec3( float( GAMMA_FACTOR ) ) );\n#else\n\treturn a;\n#endif\n}\nvec3 linearToOutput( in vec3 a ) {\n#ifdef GAMMA_OUTPUT\n\treturn pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );\n#else\n\treturn a;\n#endif\n}\n"; +THREE.ShaderChunk.alphatest_fragment="#ifdef ALPHATEST\n\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n\n#endif\n";THREE.ShaderChunk.lights_lambert_vertex="vLightFront = vec3( 0.0 );\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack = vec3( 0.0 );\n\n#endif\n\ntransformedNormal = normalize( transformedNormal );\n\n#if MAX_DIR_LIGHTS > 0\n\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n\tvec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );\n\n\tfloat dotProduct = dot( transformedNormal, dirVector );\n\tvec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 directionalLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t#endif\n\n\t#endif\n\n\t#ifdef WRAP_AROUND\n\n\t\tvec3 directionalLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\tdirectionalLightWeighting = mix( directionalLightWeighting, directionalLightWeightingHalf, wrapRGB );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tdirectionalLightWeightingBack = mix( directionalLightWeightingBack, directionalLightWeightingHalfBack, wrapRGB );\n\n\t\t#endif\n\n\t#endif\n\n\tvLightFront += directionalLightColor[ i ] * directionalLightWeighting;\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvLightBack += directionalLightColor[ i ] * directionalLightWeightingBack;\n\n\t#endif\n\n}\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), pointLightDistance[ i ], pointLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tvec3 pointLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvec3 pointLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 pointLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 pointLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\tpointLightWeighting = mix( pointLightWeighting, pointLightWeightingHalf, wrapRGB );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tpointLightWeightingBack = mix( pointLightWeightingBack, pointLightWeightingHalfBack, wrapRGB );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\tvLightFront += pointLightColor[ i ] * pointLightWeighting * attenuation;\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += pointLightColor[ i ] * pointLightWeightingBack * attenuation;\n\n\t\t#endif\n\n\t}\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - worldPosition.xyz ) );\n\n\t\tif ( spotEffect > spotLightAngleCos[ i ] ) {\n\n\t\t\tspotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n\t\t\tfloat attenuation = calcLightAttenuation( length( lVector ), spotLightDistance[ i ], spotLightDecay[ i ] );\n\n\t\t\tlVector = normalize( lVector );\n\n\t\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\t\t\tvec3 spotLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvec3 spotLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\t\tvec3 spotLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 spotLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\t\tspotLightWeighting = mix( spotLightWeighting, spotLightWeightingHalf, wrapRGB );\n\n\t\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\t\tspotLightWeightingBack = mix( spotLightWeightingBack, spotLightWeightingHalfBack, wrapRGB );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\tvLightFront += spotLightColor[ i ] * spotLightWeighting * attenuation * spotEffect;\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvLightBack += spotLightColor[ i ] * spotLightWeightingBack * attenuation * spotEffect;\n\n\t\t\t#endif\n\n\t\t}\n\n\t}\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n\t\tvec3 lVector = transformDirection( hemisphereLightDirection[ i ], viewMatrix );\n\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\t\tfloat hemiDiffuseWeightBack = -0.5 * dotProduct + 0.5;\n\n\t\tvLightFront += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeightBack );\n\n\t\t#endif\n\n\t}\n\n#endif\n\nvLightFront += ambientLightColor;\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack += ambientLightColor;\n\n#endif\n"; +THREE.ShaderChunk.map_particle_pars_fragment="#ifdef USE_MAP\n\n\tuniform vec4 offsetRepeat;\n\tuniform sampler2D map;\n\n#endif\n";THREE.ShaderChunk.default_vertex="#ifdef USE_SKINNING\n\n\tvec4 mvPosition = modelViewMatrix * skinned;\n\n#elif defined( USE_MORPHTARGETS )\n\n\tvec4 mvPosition = modelViewMatrix * vec4( morphed, 1.0 );\n\n#else\n\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\n#endif\n\ngl_Position = projectionMatrix * mvPosition;\n"; +THREE.ShaderChunk.map_pars_fragment="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvarying vec2 vUv;\n\n#endif\n\n#ifdef USE_MAP\n\n\tuniform sampler2D map;\n\n#endif";THREE.ShaderChunk.skinnormal_vertex="#ifdef USE_SKINNING\n\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\n\t#ifdef USE_MORPHNORMALS\n\n\tvec4 skinnedNormal = skinMatrix * vec4( morphedNormal, 0.0 );\n\n\t#else\n\n\tvec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );\n\n\t#endif\n\n#endif\n"; +THREE.ShaderChunk.logdepthbuf_pars_vertex="#ifdef USE_LOGDEPTHBUF\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tvarying float vFragDepth;\n\n\t#endif\n\n\tuniform float logDepthBufFC;\n\n#endif";THREE.ShaderChunk.lightmap_pars_vertex="#ifdef USE_LIGHTMAP\n\n\tvarying vec2 vUv2;\n\n#endif";THREE.ShaderChunk.lights_phong_fragment="#ifndef FLAT_SHADED\n\n\tvec3 normal = normalize( vNormal );\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tnormal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\n\t#endif\n\n#else\n\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n\n#endif\n\nvec3 viewPosition = normalize( vViewPosition );\n\n#ifdef USE_NORMALMAP\n\n\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\n#elif defined( USE_BUMPMAP )\n\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n\n#endif\n\nvec3 totalDiffuseLight = vec3( 0.0 );\nvec3 totalSpecularLight = vec3( 0.0 );\n\n#if MAX_POINT_LIGHTS > 0\n\n\tfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), pointLightDistance[ i ], pointLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, lVector );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tfloat pointDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\tfloat pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\tvec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n\n\t\t#else\n\n\t\t\tfloat pointDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t#endif\n\n\t\ttotalDiffuseLight += pointLightColor[ i ] * pointDiffuseWeight * attenuation;\n\n\t\t\t\t// specular\n\n\t\tvec3 pointHalfVector = normalize( lVector + viewPosition );\n\t\tfloat pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\n\t\tfloat pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * attenuation * specularNormalization;\n\n\t}\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tfor ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), spotLightDistance[ i ], spotLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\n\t\tfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\n\n\t\tif ( spotEffect > spotLightAngleCos[ i ] ) {\n\n\t\t\tspotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n\t\t\t// diffuse\n\n\t\t\tfloat dotProduct = dot( normal, lVector );\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tfloat spotDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\t\tfloat spotDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\t\tvec3 spotDiffuseWeight = mix( vec3( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );\n\n\t\t\t#else\n\n\t\t\t\tfloat spotDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t\t#endif\n\n\t\t\ttotalDiffuseLight += spotLightColor[ i ] * spotDiffuseWeight * attenuation * spotEffect;\n\n\t\t\t// specular\n\n\t\t\tvec3 spotHalfVector = normalize( lVector + viewPosition );\n\t\t\tfloat spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );\n\t\t\tfloat spotSpecularWeight = specularStrength * max( pow( spotDotNormalHalf, shininess ), 0.0 );\n\n\t\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, spotHalfVector ), 0.0 ), 5.0 );\n\t\t\ttotalSpecularLight += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * attenuation * specularNormalization * spotEffect;\n\n\t\t}\n\n\t}\n\n#endif\n\n#if MAX_DIR_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n\t\tvec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, dirVector );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tfloat dirDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\tfloat dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\tvec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );\n\n\t\t#else\n\n\t\t\tfloat dirDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t#endif\n\n\t\ttotalDiffuseLight += directionalLightColor[ i ] * dirDiffuseWeight;\n\n\t\t// specular\n\n\t\tvec3 dirHalfVector = normalize( dirVector + viewPosition );\n\t\tfloat dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\n\t\tfloat dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );\n\n\t\t/*\n\t\t// fresnel term from skin shader\n\t\tconst float F0 = 0.128;\n\n\t\tfloat base = 1.0 - dot( viewPosition, dirHalfVector );\n\t\tfloat exponential = pow( base, 5.0 );\n\n\t\tfloat fresnel = exponential + F0 * ( 1.0 - exponential );\n\t\t*/\n\n\t\t/*\n\t\t// fresnel term from fresnel shader\n\t\tconst float mFresnelBias = 0.08;\n\t\tconst float mFresnelScale = 0.3;\n\t\tconst float mFresnelPower = 5.0;\n\n\t\tfloat fresnel = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( -viewPosition ), normal ), mFresnelPower );\n\t\t*/\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\t// \t\tdirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization * fresnel;\n\n\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;\n\n\n\t}\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n\t\tvec3 lVector = transformDirection( hemisphereLightDirection[ i ], viewMatrix );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, lVector );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\n\t\tvec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n\t\ttotalDiffuseLight += hemiColor;\n\n\t\t// specular (sky light)\n\n\t\tvec3 hemiHalfVectorSky = normalize( lVector + viewPosition );\n\t\tfloat hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;\n\t\tfloat hemiSpecularWeightSky = specularStrength * max( pow( max( hemiDotNormalHalfSky, 0.0 ), shininess ), 0.0 );\n\n\t\t// specular (ground light)\n\n\t\tvec3 lVectorGround = -lVector;\n\n\t\tvec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );\n\t\tfloat hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;\n\t\tfloat hemiSpecularWeightGround = specularStrength * max( pow( max( hemiDotNormalHalfGround, 0.0 ), shininess ), 0.0 );\n\n\t\tfloat dotProductGround = dot( normal, lVectorGround );\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\tvec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, hemiHalfVectorSky ), 0.0 ), 5.0 );\n\t\tvec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );\n\n\t}\n\n#endif\n\n#ifdef METAL\n\n\toutgoingLight += diffuseColor.rgb * ( totalDiffuseLight + ambientLightColor ) * specular + totalSpecularLight + emissive;\n\n#else\n\n\toutgoingLight += diffuseColor.rgb * ( totalDiffuseLight + ambientLightColor ) + totalSpecularLight + emissive;\n\n#endif\n"; THREE.ShaderChunk.fog_pars_fragment="#ifdef USE_FOG\n\n\tuniform vec3 fogColor;\n\n\t#ifdef FOG_EXP2\n\n\t\tuniform float fogDensity;\n\n\t#else\n\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n\n#endif";THREE.ShaderChunk.morphnormal_vertex="#ifdef USE_MORPHNORMALS\n\n\tvec3 morphedNormal = vec3( 0.0 );\n\n\tmorphedNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tmorphedNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tmorphedNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tmorphedNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n\n\tmorphedNormal += normal;\n\n#endif"; THREE.ShaderChunk.envmap_pars_fragment="#ifdef USE_ENVMAP\n\n\tuniform float reflectivity;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n\t\tuniform float refractionRatio;\n\n\t#else\n\n\t\tvarying vec3 vReflect;\n\n\t#endif\n\n#endif\n";THREE.ShaderChunk.logdepthbuf_fragment="#if defined(USE_LOGDEPTHBUF) && defined(USE_LOGDEPTHBUF_EXT)\n\n\tgl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5;\n\n#endif"; -THREE.ShaderChunk.normalmap_pars_fragment="#ifdef USE_NORMALMAP\n\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\n\t\t\t// Per-Pixel Tangent Space Normal Mapping\n\t\t\t// http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\n\t\tvec3 S = normalize( q0 * st1.t - q1 * st0.t );\n\t\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\n\t\tvec3 N = normalize( surf_norm );\n\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = normalScale * mapN.xy;\n\t\tmat3 tsn = mat3( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\n\t}\n\n#endif\n"; +THREE.ShaderChunk.normalmap_pars_fragment="#ifdef USE_NORMALMAP\n\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\n\t// Per-Pixel Tangent Space Normal Mapping\n\t// http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\n\t\tvec3 S = normalize( q0 * st1.t - q1 * st0.t );\n\t\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\n\t\tvec3 N = normalize( surf_norm );\n\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = normalScale * mapN.xy;\n\t\tmat3 tsn = mat3( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\n\t}\n\n#endif\n"; THREE.ShaderChunk.lights_phong_pars_vertex="#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvarying vec3 vWorldPosition;\n\n#endif\n";THREE.ShaderChunk.lightmap_pars_fragment="#ifdef USE_LIGHTMAP\n\n\tvarying vec2 vUv2;\n\tuniform sampler2D lightMap;\n\n#endif";THREE.ShaderChunk.shadowmap_vertex="#ifdef USE_SHADOWMAP\n\n\tfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n\t\tvShadowCoord[ i ] = shadowMatrix[ i ] * worldPosition;\n\n\t}\n\n#endif"; -THREE.ShaderChunk.lights_phong_vertex="#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvWorldPosition = worldPosition.xyz;\n\n#endif";THREE.ShaderChunk.map_fragment="#ifdef USE_MAP\n\n\tvec4 texelColor = texture2D( map, vUv );\n\n\t#ifdef GAMMA_INPUT\n\n\t\ttexelColor.xyz *= texelColor.xyz;\n\n\t#endif\n\n\tgl_FragColor = gl_FragColor * texelColor;\n\n#endif";THREE.ShaderChunk.lightmap_vertex="#ifdef USE_LIGHTMAP\n\n\tvUv2 = uv2;\n\n#endif"; -THREE.ShaderChunk.map_particle_fragment="#ifdef USE_MAP\n\n\tgl_FragColor = gl_FragColor * texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) );\n\n#endif";THREE.ShaderChunk.color_pars_fragment="#ifdef USE_COLOR\n\n\tvarying vec3 vColor;\n\n#endif\n";THREE.ShaderChunk.color_vertex="#ifdef USE_COLOR\n\n\t#ifdef GAMMA_INPUT\n\n\t\tvColor = color * color;\n\n\t#else\n\n\t\tvColor = color;\n\n\t#endif\n\n#endif";THREE.ShaderChunk.skinning_vertex="#ifdef USE_SKINNING\n\n\t#ifdef USE_MORPHTARGETS\n\n\tvec4 skinVertex = bindMatrix * vec4( morphed, 1.0 );\n\n\t#else\n\n\tvec4 skinVertex = bindMatrix * vec4( position, 1.0 );\n\n\t#endif\n\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\tskinned = bindMatrixInverse * skinned;\n\n#endif\n"; -THREE.ShaderChunk.envmap_pars_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n\tvarying vec3 vReflect;\n\n\tuniform float refractionRatio;\n\n#endif\n";THREE.ShaderChunk.linear_to_gamma_fragment="#ifdef GAMMA_OUTPUT\n\n\tgl_FragColor.xyz = sqrt( gl_FragColor.xyz );\n\n#endif";THREE.ShaderChunk.color_pars_vertex="#ifdef USE_COLOR\n\n\tvarying vec3 vColor;\n\n#endif";THREE.ShaderChunk.lights_lambert_pars_vertex="uniform vec3 ambient;\nuniform vec3 diffuse;\nuniform vec3 emissive;\n\nuniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n\tuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n\tuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tuniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\tuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#ifdef WRAP_AROUND\n\n\tuniform vec3 wrapRGB;\n\n#endif\n"; -THREE.ShaderChunk.map_pars_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvarying vec2 vUv;\n\tuniform vec4 offsetRepeat;\n\n#endif\n";THREE.ShaderChunk.envmap_fragment="#ifdef USE_ENVMAP\n\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\n\t\t// http://en.wikibooks.org/wiki/GLSL_Programming/Applying_Matrix_Transformations\n\t\t// Transforming Normal Vectors with the Inverse Transformation\n\n\t\tvec3 worldNormal = normalize( vec3( vec4( normal, 0.0 ) * viewMatrix ) );\n\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\n\t\t#else\n\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\n\t\t#endif\n\n\t#else\n\n\t\tvec3 reflectVec = vReflect;\n\n\t#endif\n\n\t#ifdef DOUBLE_SIDED\n\t\tfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\t#else\n\t\tfloat flipNormal = 1.0;\n\t#endif\n\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\tsampleUV.y = clamp( flipNormal * reflectVec.y * 0.5 + 0.5, 0.0, 1.0);\n\t\tsampleUV.x = atan( flipNormal * reflectVec.z, flipNormal * reflectVec.x ) * 0.15915494309189533576888376337251 + 0.5; // reciprocal( 2 PI ) + 0.5\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t\t\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\tvec3 reflectView = flipNormal * normalize((viewMatrix * vec4( reflectVec, 0.0 )).xyz + vec3(0.0,0.0,1.0));\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#endif\n\n\t#ifdef GAMMA_INPUT\n\n\t\tenvColor.xyz *= envColor.xyz;\n\n\t#endif\n\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\n\t\tgl_FragColor.xyz = mix( gl_FragColor.xyz, gl_FragColor.xyz * envColor.xyz, specularStrength * reflectivity );\n\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\n\t\tgl_FragColor.xyz = mix( gl_FragColor.xyz, envColor.xyz, specularStrength * reflectivity );\n\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\n\t\tgl_FragColor.xyz += envColor.xyz * specularStrength * reflectivity;\n\n\t#endif\n\n#endif\n"; -THREE.ShaderChunk.specularmap_pars_fragment="#ifdef USE_SPECULARMAP\n\n\tuniform sampler2D specularMap;\n\n#endif";THREE.ShaderChunk.logdepthbuf_vertex="#ifdef USE_LOGDEPTHBUF\n\n\tgl_Position.z = log2(max(1e-6, gl_Position.w + 1.0)) * logDepthBufFC;\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\n#else\n\n\t\tgl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;\n\n\t#endif\n\n#endif";THREE.ShaderChunk.morphtarget_pars_vertex="#ifdef USE_MORPHTARGETS\n\n\t#ifndef USE_MORPHNORMALS\n\n\tuniform float morphTargetInfluences[ 8 ];\n\n\t#else\n\n\tuniform float morphTargetInfluences[ 4 ];\n\n\t#endif\n\n#endif"; -THREE.ShaderChunk.specularmap_fragment="float specularStrength;\n\n#ifdef USE_SPECULARMAP\n\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n\n#else\n\n\tspecularStrength = 1.0;\n\n#endif";THREE.ShaderChunk.fog_fragment="#ifdef USE_FOG\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;\n\n\t#else\n\n\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\n\t#endif\n\n\t#ifdef FOG_EXP2\n\n\t\tconst float LOG2 = 1.442695;\n\t\tfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\n\t\tfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n\n\t#else\n\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n\n\t#endif\n\t\n\tgl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n\n#endif"; -THREE.ShaderChunk.bumpmap_pars_fragment="#ifdef USE_BUMPMAP\n\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\n\t\t\t// Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\n\t\t\t//\thttp://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\n\n\t\t\t// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\n\n\tvec2 dHdxy_fwd() {\n\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\n\t\treturn vec2( dBx, dBy );\n\n\t}\n\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\n\t\tvec3 vSigmaX = dFdx( surf_pos );\n\t\tvec3 vSigmaY = dFdy( surf_pos );\n\t\tvec3 vN = surf_norm;\t\t// normalized\n\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\n\t}\n\n#endif"; -THREE.ShaderChunk.defaultnormal_vertex="#ifdef USE_SKINNING\n\n\tvec3 objectNormal = skinnedNormal.xyz;\n\n#elif defined( USE_MORPHNORMALS )\n\n\tvec3 objectNormal = morphedNormal;\n\n#else\n\n\tvec3 objectNormal = normal;\n\n#endif\n\n#ifdef FLIP_SIDED\n\n\tobjectNormal = -objectNormal;\n\n#endif\n\nvec3 transformedNormal = normalMatrix * objectNormal;\n";THREE.ShaderChunk.lights_phong_pars_fragment="uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n\tuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n\tuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tuniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\n\tuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\n\tuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvarying vec3 vWorldPosition;\n\n#endif\n\n#ifdef WRAP_AROUND\n\n\tuniform vec3 wrapRGB;\n\n#endif\n\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;"; +THREE.ShaderChunk.lights_phong_vertex="#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvWorldPosition = worldPosition.xyz;\n\n#endif";THREE.ShaderChunk.map_fragment="#ifdef USE_MAP\n\n\tvec4 texelColor = texture2D( map, vUv );\n\n\ttexelColor.xyz = inputToLinear( texelColor.xyz );\n\n\tdiffuseColor *= texelColor;\n\n#endif";THREE.ShaderChunk.lightmap_vertex="#ifdef USE_LIGHTMAP\n\n\tvUv2 = uv2;\n\n#endif";THREE.ShaderChunk.map_particle_fragment="#ifdef USE_MAP\n\n\tdiffuseColor *= texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) * offsetRepeat.zw + offsetRepeat.xy );\n\n#endif\n"; +THREE.ShaderChunk.color_pars_fragment="#ifdef USE_COLOR\n\n\tvarying vec3 vColor;\n\n#endif\n";THREE.ShaderChunk.color_vertex="#ifdef USE_COLOR\n\n\tvColor.xyz = inputToLinear( color.xyz );\n\n#endif";THREE.ShaderChunk.skinning_vertex="#ifdef USE_SKINNING\n\n\t#ifdef USE_MORPHTARGETS\n\n\tvec4 skinVertex = bindMatrix * vec4( morphed, 1.0 );\n\n\t#else\n\n\tvec4 skinVertex = bindMatrix * vec4( position, 1.0 );\n\n\t#endif\n\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\tskinned = bindMatrixInverse * skinned;\n\n#endif\n"; +THREE.ShaderChunk.envmap_pars_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n\tvarying vec3 vReflect;\n\n\tuniform float refractionRatio;\n\n#endif\n";THREE.ShaderChunk.linear_to_gamma_fragment="\n\toutgoingLight = linearToOutput( outgoingLight );\n";THREE.ShaderChunk.color_pars_vertex="#ifdef USE_COLOR\n\n\tvarying vec3 vColor;\n\n#endif";THREE.ShaderChunk.lights_lambert_pars_vertex="uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n\tuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n\tuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tuniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\tuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDecay[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDecay[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#ifdef WRAP_AROUND\n\n\tuniform vec3 wrapRGB;\n\n#endif\n"; +THREE.ShaderChunk.map_pars_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvarying vec2 vUv;\n\tuniform vec4 offsetRepeat;\n\n#endif\n";THREE.ShaderChunk.envmap_fragment="#ifdef USE_ENVMAP\n\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\n\t\t// Transforming Normal Vectors with the Inverse Transformation\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\n\t\t#else\n\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\n\t\t#endif\n\n\t#else\n\n\t\tvec3 reflectVec = vReflect;\n\n\t#endif\n\n\t#ifdef DOUBLE_SIDED\n\t\tfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\t#else\n\t\tfloat flipNormal = 1.0;\n\t#endif\n\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\tsampleUV.y = saturate( flipNormal * reflectVec.y * 0.5 + 0.5 );\n\t\tsampleUV.x = atan( flipNormal * reflectVec.z, flipNormal * reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\tvec3 reflectView = flipNormal * normalize((viewMatrix * vec4( reflectVec, 0.0 )).xyz + vec3(0.0,0.0,1.0));\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#endif\n\n\tenvColor.xyz = inputToLinear( envColor.xyz );\n\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\n\t#endif\n\n#endif\n"; +THREE.ShaderChunk.specularmap_pars_fragment="#ifdef USE_SPECULARMAP\n\n\tuniform sampler2D specularMap;\n\n#endif";THREE.ShaderChunk.logdepthbuf_vertex="#ifdef USE_LOGDEPTHBUF\n\n\tgl_Position.z = log2(max( EPSILON, gl_Position.w + 1.0 )) * logDepthBufFC;\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\n#else\n\n\t\tgl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;\n\n\t#endif\n\n#endif";THREE.ShaderChunk.morphtarget_pars_vertex="#ifdef USE_MORPHTARGETS\n\n\t#ifndef USE_MORPHNORMALS\n\n\tuniform float morphTargetInfluences[ 8 ];\n\n\t#else\n\n\tuniform float morphTargetInfluences[ 4 ];\n\n\t#endif\n\n#endif"; +THREE.ShaderChunk.specularmap_fragment="float specularStrength;\n\n#ifdef USE_SPECULARMAP\n\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n\n#else\n\n\tspecularStrength = 1.0;\n\n#endif";THREE.ShaderChunk.fog_fragment="#ifdef USE_FOG\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;\n\n\t#else\n\n\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\n\t#endif\n\n\t#ifdef FOG_EXP2\n\n\t\tfloat fogFactor = exp2( - square( fogDensity ) * square( depth ) * LOG2 );\n\t\tfogFactor = whiteCompliment( fogFactor );\n\n\t#else\n\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n\n\t#endif\n\t\n\toutgoingLight = mix( outgoingLight, fogColor, fogFactor );\n\n#endif"; +THREE.ShaderChunk.bumpmap_pars_fragment="#ifdef USE_BUMPMAP\n\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\n\t// Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\n\t// http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\n\n\t// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\n\n\tvec2 dHdxy_fwd() {\n\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\n\t\treturn vec2( dBx, dBy );\n\n\t}\n\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\n\t\tvec3 vSigmaX = dFdx( surf_pos );\n\t\tvec3 vSigmaY = dFdy( surf_pos );\n\t\tvec3 vN = surf_norm;\t\t// normalized\n\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\n\t}\n\n#endif\n"; +THREE.ShaderChunk.defaultnormal_vertex="#ifdef USE_SKINNING\n\n\tvec3 objectNormal = skinnedNormal.xyz;\n\n#elif defined( USE_MORPHNORMALS )\n\n\tvec3 objectNormal = morphedNormal;\n\n#else\n\n\tvec3 objectNormal = normal;\n\n#endif\n\n#ifdef FLIP_SIDED\n\n\tobjectNormal = -objectNormal;\n\n#endif\n\nvec3 transformedNormal = normalMatrix * objectNormal;\n";THREE.ShaderChunk.lights_phong_pars_fragment="uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n\tuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n\tuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tuniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\n\tuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDecay[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDecay[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvarying vec3 vWorldPosition;\n\n#endif\n\n#ifdef WRAP_AROUND\n\n\tuniform vec3 wrapRGB;\n\n#endif\n\nvarying vec3 vViewPosition;\n\n#ifndef FLAT_SHADED\n\n\tvarying vec3 vNormal;\n\n#endif\n"; THREE.ShaderChunk.skinbase_vertex="#ifdef USE_SKINNING\n\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n\n#endif";THREE.ShaderChunk.map_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n\n#endif"; -THREE.ShaderChunk.lightmap_fragment="#ifdef USE_LIGHTMAP\n\n\tgl_FragColor = gl_FragColor * texture2D( lightMap, vUv2 );\n\n#endif";THREE.ShaderChunk.shadowmap_pars_vertex="#ifdef USE_SHADOWMAP\n\n\tvarying vec4 vShadowCoord[ MAX_SHADOWS ];\n\tuniform mat4 shadowMatrix[ MAX_SHADOWS ];\n\n#endif";THREE.ShaderChunk.color_fragment="#ifdef USE_COLOR\n\n\tgl_FragColor = gl_FragColor * vec4( vColor, 1.0 );\n\n#endif";THREE.ShaderChunk.morphtarget_vertex="#ifdef USE_MORPHTARGETS\n\n\tvec3 morphed = vec3( 0.0 );\n\tmorphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\tmorphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\tmorphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\tmorphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\n\t#ifndef USE_MORPHNORMALS\n\n\tmorphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\tmorphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\tmorphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\tmorphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\n\t#endif\n\n\tmorphed += position;\n\n#endif"; -THREE.ShaderChunk.envmap_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n\tvec3 worldNormal = mat3( modelMatrix[ 0 ].xyz, modelMatrix[ 1 ].xyz, modelMatrix[ 2 ].xyz ) * objectNormal;\n\tworldNormal = normalize( worldNormal );\n\n\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\n\t#ifdef ENVMAP_MODE_REFLECTION\n\n\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\n\t#else\n\n\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\n\t#endif\n\n#endif\n"; -THREE.ShaderChunk.shadowmap_fragment="#ifdef USE_SHADOWMAP\n\n\t#ifdef SHADOWMAP_DEBUG\n\n\t\tvec3 frustumColors[3];\n\t\tfrustumColors[0] = vec3( 1.0, 0.5, 0.0 );\n\t\tfrustumColors[1] = vec3( 0.0, 1.0, 0.8 );\n\t\tfrustumColors[2] = vec3( 0.0, 0.5, 1.0 );\n\n\t#endif\n\n\t#ifdef SHADOWMAP_CASCADE\n\n\t\tint inFrustumCount = 0;\n\n\t#endif\n\n\tfloat fDepth;\n\tvec3 shadowColor = vec3( 1.0 );\n\n\tfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n\t\tvec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;\n\n\t\t\t\t// if ( something && something ) breaks ATI OpenGL shader compiler\n\t\t\t\t// if ( all( something, something ) ) using this instead\n\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\n\t\t\t\t// don't shadow pixels outside of light frustum\n\t\t\t\t// use just first frustum (for cascades)\n\t\t\t\t// don't shadow pixels behind far plane of light frustum\n\n\t\t#ifdef SHADOWMAP_CASCADE\n\n\t\t\tinFrustumCount += int( inFrustum );\n\t\t\tbvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );\n\n\t\t#else\n\n\t\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\n\t\t#endif\n\n\t\tbool frustumTest = all( frustumTestVec );\n\n\t\tif ( frustumTest ) {\n\n\t\t\tshadowCoord.z += shadowBias[ i ];\n\n\t\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\n\t\t\t\t\t\t// Percentage-close filtering\n\t\t\t\t\t\t// (9 pixel kernel)\n\t\t\t\t\t\t// http://fabiensanglard.net/shadowmappingPCF/\n\n\t\t\t\tfloat shadow = 0.0;\n\n\t\t/*\n\t\t\t\t\t\t// nested loops breaks shader compiler / validator on some ATI cards when using OpenGL\n\t\t\t\t\t\t// must enroll loop manually\n\n\t\t\t\tfor ( float y = -1.25; y <= 1.25; y += 1.25 )\n\t\t\t\t\tfor ( float x = -1.25; x <= 1.25; x += 1.25 ) {\n\n\t\t\t\t\t\tvec4 rgbaDepth = texture2D( shadowMap[ i ], vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy );\n\n\t\t\t\t\t\t\t\t// doesn't seem to produce any noticeable visual difference compared to simple texture2D lookup\n\t\t\t\t\t\t\t\t//vec4 rgbaDepth = texture2DProj( shadowMap[ i ], vec4( vShadowCoord[ i ].w * ( vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy ), 0.05, vShadowCoord[ i ].w ) );\n\n\t\t\t\t\t\tfloat fDepth = unpackDepth( rgbaDepth );\n\n\t\t\t\t\t\tif ( fDepth < shadowCoord.z )\n\t\t\t\t\t\t\tshadow += 1.0;\n\n\t\t\t\t}\n\n\t\t\t\tshadow /= 9.0;\n\n\t\t*/\n\n\t\t\t\tconst float shadowDelta = 1.0 / 9.0;\n\n\t\t\t\tfloat xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n\t\t\t\tfloat yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n\t\t\t\tfloat dx0 = -1.25 * xPixelOffset;\n\t\t\t\tfloat dy0 = -1.25 * yPixelOffset;\n\t\t\t\tfloat dx1 = 1.25 * xPixelOffset;\n\t\t\t\tfloat dy1 = 1.25 * yPixelOffset;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tshadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n\t\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\n\t\t\t\t\t\t// Percentage-close filtering\n\t\t\t\t\t\t// (9 pixel kernel)\n\t\t\t\t\t\t// http://fabiensanglard.net/shadowmappingPCF/\n\n\t\t\t\tfloat shadow = 0.0;\n\n\t\t\t\tfloat xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n\t\t\t\tfloat yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n\t\t\t\tfloat dx0 = -1.0 * xPixelOffset;\n\t\t\t\tfloat dy0 = -1.0 * yPixelOffset;\n\t\t\t\tfloat dx1 = 1.0 * xPixelOffset;\n\t\t\t\tfloat dy1 = 1.0 * yPixelOffset;\n\n\t\t\t\tmat3 shadowKernel;\n\t\t\t\tmat3 depthKernel;\n\n\t\t\t\tdepthKernel[0][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n\t\t\t\tdepthKernel[0][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n\t\t\t\tdepthKernel[0][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n\t\t\t\tdepthKernel[1][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n\t\t\t\tdepthKernel[1][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n\t\t\t\tdepthKernel[1][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n\t\t\t\tdepthKernel[2][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n\t\t\t\tdepthKernel[2][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n\t\t\t\tdepthKernel[2][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\n\t\t\t\tvec3 shadowZ = vec3( shadowCoord.z );\n\t\t\t\tshadowKernel[0] = vec3(lessThan(depthKernel[0], shadowZ ));\n\t\t\t\tshadowKernel[0] *= vec3(0.25);\n\n\t\t\t\tshadowKernel[1] = vec3(lessThan(depthKernel[1], shadowZ ));\n\t\t\t\tshadowKernel[1] *= vec3(0.25);\n\n\t\t\t\tshadowKernel[2] = vec3(lessThan(depthKernel[2], shadowZ ));\n\t\t\t\tshadowKernel[2] *= vec3(0.25);\n\n\t\t\t\tvec2 fractionalCoord = 1.0 - fract( shadowCoord.xy * shadowMapSize[i].xy );\n\n\t\t\t\tshadowKernel[0] = mix( shadowKernel[1], shadowKernel[0], fractionalCoord.x );\n\t\t\t\tshadowKernel[1] = mix( shadowKernel[2], shadowKernel[1], fractionalCoord.x );\n\n\t\t\t\tvec4 shadowValues;\n\t\t\t\tshadowValues.x = mix( shadowKernel[0][1], shadowKernel[0][0], fractionalCoord.y );\n\t\t\t\tshadowValues.y = mix( shadowKernel[0][2], shadowKernel[0][1], fractionalCoord.y );\n\t\t\t\tshadowValues.z = mix( shadowKernel[1][1], shadowKernel[1][0], fractionalCoord.y );\n\t\t\t\tshadowValues.w = mix( shadowKernel[1][2], shadowKernel[1][1], fractionalCoord.y );\n\n\t\t\t\tshadow = dot( shadowValues, vec4( 1.0 ) );\n\n\t\t\t\tshadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n\t\t\t#else\n\n\t\t\t\tvec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );\n\t\t\t\tfloat fDepth = unpackDepth( rgbaDepth );\n\n\t\t\t\tif ( fDepth < shadowCoord.z )\n\n\t\t// spot with multiple shadows is darker\n\n\t\t\t\t\tshadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );\n\n\t\t// spot with multiple shadows has the same color as single shadow spot\n\n\t\t// \t\t\t\t\tshadowColor = min( shadowColor, vec3( shadowDarkness[ i ] ) );\n\n\t\t\t#endif\n\n\t\t}\n\n\n\t\t#ifdef SHADOWMAP_DEBUG\n\n\t\t\t#ifdef SHADOWMAP_CASCADE\n\n\t\t\t\tif ( inFrustum && inFrustumCount == 1 ) gl_FragColor.xyz *= frustumColors[ i ];\n\n\t\t\t#else\n\n\t\t\t\tif ( inFrustum ) gl_FragColor.xyz *= frustumColors[ i ];\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t}\n\n\t#ifdef GAMMA_OUTPUT\n\n\t\tshadowColor *= shadowColor;\n\n\t#endif\n\n\tgl_FragColor.xyz = gl_FragColor.xyz * shadowColor;\n\n#endif\n"; +THREE.ShaderChunk.lightmap_fragment="#ifdef USE_LIGHTMAP\n\n\toutgoingLight *= diffuseColor.xyz * texture2D( lightMap, vUv2 ).xyz;\n\n#endif";THREE.ShaderChunk.shadowmap_pars_vertex="#ifdef USE_SHADOWMAP\n\n\tvarying vec4 vShadowCoord[ MAX_SHADOWS ];\n\tuniform mat4 shadowMatrix[ MAX_SHADOWS ];\n\n#endif";THREE.ShaderChunk.color_fragment="#ifdef USE_COLOR\n\n\tdiffuseColor.rgb *= vColor;\n\n#endif";THREE.ShaderChunk.morphtarget_vertex="#ifdef USE_MORPHTARGETS\n\n\tvec3 morphed = vec3( 0.0 );\n\tmorphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\tmorphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\tmorphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\tmorphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\n\t#ifndef USE_MORPHNORMALS\n\n\tmorphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\tmorphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\tmorphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\tmorphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\n\t#endif\n\n\tmorphed += position;\n\n#endif"; +THREE.ShaderChunk.envmap_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n\tvec3 worldNormal = transformDirection( objectNormal, modelMatrix );\n\n\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\n\t#ifdef ENVMAP_MODE_REFLECTION\n\n\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\n\t#else\n\n\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\n\t#endif\n\n#endif\n"; +THREE.ShaderChunk.shadowmap_fragment="#ifdef USE_SHADOWMAP\n\n\t#ifdef SHADOWMAP_DEBUG\n\n\t\tvec3 frustumColors[3];\n\t\tfrustumColors[0] = vec3( 1.0, 0.5, 0.0 );\n\t\tfrustumColors[1] = vec3( 0.0, 1.0, 0.8 );\n\t\tfrustumColors[2] = vec3( 0.0, 0.5, 1.0 );\n\n\t#endif\n\n\t#ifdef SHADOWMAP_CASCADE\n\n\t\tint inFrustumCount = 0;\n\n\t#endif\n\n\tfloat fDepth;\n\tvec3 shadowColor = vec3( 1.0 );\n\n\tfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n\t\tvec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;\n\n\t\t\t\t// if ( something && something ) breaks ATI OpenGL shader compiler\n\t\t\t\t// if ( all( something, something ) ) using this instead\n\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\n\t\t\t\t// don't shadow pixels outside of light frustum\n\t\t\t\t// use just first frustum (for cascades)\n\t\t\t\t// don't shadow pixels behind far plane of light frustum\n\n\t\t#ifdef SHADOWMAP_CASCADE\n\n\t\t\tinFrustumCount += int( inFrustum );\n\t\t\tbvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );\n\n\t\t#else\n\n\t\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\n\t\t#endif\n\n\t\tbool frustumTest = all( frustumTestVec );\n\n\t\tif ( frustumTest ) {\n\n\t\t\tshadowCoord.z += shadowBias[ i ];\n\n\t\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\n\t\t\t\t\t\t// Percentage-close filtering\n\t\t\t\t\t\t// (9 pixel kernel)\n\t\t\t\t\t\t// http://fabiensanglard.net/shadowmappingPCF/\n\n\t\t\t\tfloat shadow = 0.0;\n\n\t\t/*\n\t\t\t\t\t\t// nested loops breaks shader compiler / validator on some ATI cards when using OpenGL\n\t\t\t\t\t\t// must enroll loop manually\n\n\t\t\t\tfor ( float y = -1.25; y <= 1.25; y += 1.25 )\n\t\t\t\t\tfor ( float x = -1.25; x <= 1.25; x += 1.25 ) {\n\n\t\t\t\t\t\tvec4 rgbaDepth = texture2D( shadowMap[ i ], vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy );\n\n\t\t\t\t\t\t\t\t// doesn't seem to produce any noticeable visual difference compared to simple texture2D lookup\n\t\t\t\t\t\t\t\t//vec4 rgbaDepth = texture2DProj( shadowMap[ i ], vec4( vShadowCoord[ i ].w * ( vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy ), 0.05, vShadowCoord[ i ].w ) );\n\n\t\t\t\t\t\tfloat fDepth = unpackDepth( rgbaDepth );\n\n\t\t\t\t\t\tif ( fDepth < shadowCoord.z )\n\t\t\t\t\t\t\tshadow += 1.0;\n\n\t\t\t\t}\n\n\t\t\t\tshadow /= 9.0;\n\n\t\t*/\n\n\t\t\t\tconst float shadowDelta = 1.0 / 9.0;\n\n\t\t\t\tfloat xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n\t\t\t\tfloat yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n\t\t\t\tfloat dx0 = -1.25 * xPixelOffset;\n\t\t\t\tfloat dy0 = -1.25 * yPixelOffset;\n\t\t\t\tfloat dx1 = 1.25 * xPixelOffset;\n\t\t\t\tfloat dy1 = 1.25 * yPixelOffset;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tshadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n\t\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\n\t\t\t\t\t\t// Percentage-close filtering\n\t\t\t\t\t\t// (9 pixel kernel)\n\t\t\t\t\t\t// http://fabiensanglard.net/shadowmappingPCF/\n\n\t\t\t\tfloat shadow = 0.0;\n\n\t\t\t\tfloat xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n\t\t\t\tfloat yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n\t\t\t\tfloat dx0 = -1.0 * xPixelOffset;\n\t\t\t\tfloat dy0 = -1.0 * yPixelOffset;\n\t\t\t\tfloat dx1 = 1.0 * xPixelOffset;\n\t\t\t\tfloat dy1 = 1.0 * yPixelOffset;\n\n\t\t\t\tmat3 shadowKernel;\n\t\t\t\tmat3 depthKernel;\n\n\t\t\t\tdepthKernel[0][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n\t\t\t\tdepthKernel[0][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n\t\t\t\tdepthKernel[0][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n\t\t\t\tdepthKernel[1][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n\t\t\t\tdepthKernel[1][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n\t\t\t\tdepthKernel[1][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n\t\t\t\tdepthKernel[2][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n\t\t\t\tdepthKernel[2][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n\t\t\t\tdepthKernel[2][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\n\t\t\t\tvec3 shadowZ = vec3( shadowCoord.z );\n\t\t\t\tshadowKernel[0] = vec3(lessThan(depthKernel[0], shadowZ ));\n\t\t\t\tshadowKernel[0] *= vec3(0.25);\n\n\t\t\t\tshadowKernel[1] = vec3(lessThan(depthKernel[1], shadowZ ));\n\t\t\t\tshadowKernel[1] *= vec3(0.25);\n\n\t\t\t\tshadowKernel[2] = vec3(lessThan(depthKernel[2], shadowZ ));\n\t\t\t\tshadowKernel[2] *= vec3(0.25);\n\n\t\t\t\tvec2 fractionalCoord = 1.0 - fract( shadowCoord.xy * shadowMapSize[i].xy );\n\n\t\t\t\tshadowKernel[0] = mix( shadowKernel[1], shadowKernel[0], fractionalCoord.x );\n\t\t\t\tshadowKernel[1] = mix( shadowKernel[2], shadowKernel[1], fractionalCoord.x );\n\n\t\t\t\tvec4 shadowValues;\n\t\t\t\tshadowValues.x = mix( shadowKernel[0][1], shadowKernel[0][0], fractionalCoord.y );\n\t\t\t\tshadowValues.y = mix( shadowKernel[0][2], shadowKernel[0][1], fractionalCoord.y );\n\t\t\t\tshadowValues.z = mix( shadowKernel[1][1], shadowKernel[1][0], fractionalCoord.y );\n\t\t\t\tshadowValues.w = mix( shadowKernel[1][2], shadowKernel[1][1], fractionalCoord.y );\n\n\t\t\t\tshadow = dot( shadowValues, vec4( 1.0 ) );\n\n\t\t\t\tshadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n\t\t\t#else\n\n\t\t\t\tvec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );\n\t\t\t\tfloat fDepth = unpackDepth( rgbaDepth );\n\n\t\t\t\tif ( fDepth < shadowCoord.z )\n\n\t\t// spot with multiple shadows is darker\n\n\t\t\t\t\tshadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );\n\n\t\t// spot with multiple shadows has the same color as single shadow spot\n\n\t\t// \t\t\t\t\tshadowColor = min( shadowColor, vec3( shadowDarkness[ i ] ) );\n\n\t\t\t#endif\n\n\t\t}\n\n\n\t\t#ifdef SHADOWMAP_DEBUG\n\n\t\t\t#ifdef SHADOWMAP_CASCADE\n\n\t\t\t\tif ( inFrustum && inFrustumCount == 1 ) outgoingLight *= frustumColors[ i ];\n\n\t\t\t#else\n\n\t\t\t\tif ( inFrustum ) outgoingLight *= frustumColors[ i ];\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t}\n\n\t// NOTE: I am unsure if this is correct in linear space. -bhouston, Dec 29, 2014\n\tshadowColor = inputToLinear( shadowColor );\n\n\toutgoingLight = outgoingLight * shadowColor;\n\n#endif\n"; THREE.ShaderChunk.worldpos_vertex="#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\n\n\t#ifdef USE_SKINNING\n\n\t\tvec4 worldPosition = modelMatrix * skinned;\n\n\t#elif defined( USE_MORPHTARGETS )\n\n\t\tvec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );\n\n\t#else\n\n\t\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\n\t#endif\n\n#endif\n";THREE.ShaderChunk.shadowmap_pars_fragment="#ifdef USE_SHADOWMAP\n\n\tuniform sampler2D shadowMap[ MAX_SHADOWS ];\n\tuniform vec2 shadowMapSize[ MAX_SHADOWS ];\n\n\tuniform float shadowDarkness[ MAX_SHADOWS ];\n\tuniform float shadowBias[ MAX_SHADOWS ];\n\n\tvarying vec4 vShadowCoord[ MAX_SHADOWS ];\n\n\tfloat unpackDepth( const in vec4 rgba_depth ) {\n\n\t\tconst vec4 bit_shift = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );\n\t\tfloat depth = dot( rgba_depth, bit_shift );\n\t\treturn depth;\n\n\t}\n\n#endif"; THREE.ShaderChunk.skinning_pars_vertex="#ifdef USE_SKINNING\n\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\n\t#ifdef BONE_TEXTURE\n\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureWidth;\n\t\tuniform int boneTextureHeight;\n\n\t\tmat4 getBoneMatrix( const in float i ) {\n\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureWidth ) );\n\t\t\tfloat y = floor( j / float( boneTextureWidth ) );\n\n\t\t\tfloat dx = 1.0 / float( boneTextureWidth );\n\t\t\tfloat dy = 1.0 / float( boneTextureHeight );\n\n\t\t\ty = dy * ( y + 0.5 );\n\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\n\t\t\treturn bone;\n\n\t\t}\n\n\t#else\n\n\t\tuniform mat4 boneGlobalMatrices[ MAX_BONES ];\n\n\t\tmat4 getBoneMatrix( const in float i ) {\n\n\t\t\tmat4 bone = boneGlobalMatrices[ int(i) ];\n\t\t\treturn bone;\n\n\t\t}\n\n\t#endif\n\n#endif\n"; -THREE.ShaderChunk.logdepthbuf_pars_fragment="#ifdef USE_LOGDEPTHBUF\n\n\tuniform float logDepthBufFC;\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\t#extension GL_EXT_frag_depth : enable\n\t\tvarying float vFragDepth;\n\n\t#endif\n\n#endif";THREE.ShaderChunk.alphamap_fragment="#ifdef USE_ALPHAMAP\n\n\tgl_FragColor.a *= texture2D( alphaMap, vUv ).g;\n\n#endif\n";THREE.ShaderChunk.alphamap_pars_fragment="#ifdef USE_ALPHAMAP\n\n\tuniform sampler2D alphaMap;\n\n#endif\n"; +THREE.ShaderChunk.logdepthbuf_pars_fragment="#ifdef USE_LOGDEPTHBUF\n\n\tuniform float logDepthBufFC;\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\t#extension GL_EXT_frag_depth : enable\n\t\tvarying float vFragDepth;\n\n\t#endif\n\n#endif";THREE.ShaderChunk.alphamap_fragment="#ifdef USE_ALPHAMAP\n\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n\n#endif\n";THREE.ShaderChunk.alphamap_pars_fragment="#ifdef USE_ALPHAMAP\n\n\tuniform sampler2D alphaMap;\n\n#endif\n"; THREE.UniformsUtils={merge:function(a){for(var b={},c=0;c<a.length;c++){var d=this.clone(a[c]),e;for(e in d)b[e]=d[e]}return b},clone:function(a){var b={},c;for(c in a){b[c]={};for(var d in a[c]){var e=a[c][d];b[c][d]=e instanceof THREE.Color||e instanceof THREE.Vector2||e instanceof THREE.Vector3||e instanceof THREE.Vector4||e instanceof THREE.Matrix4||e instanceof THREE.Texture?e.clone():e instanceof Array?e.slice():e}}return b}}; THREE.UniformsLib={common:{diffuse:{type:"c",value:new THREE.Color(15658734)},opacity:{type:"f",value:1},map:{type:"t",value:null},offsetRepeat:{type:"v4",value:new THREE.Vector4(0,0,1,1)},lightMap:{type:"t",value:null},specularMap:{type:"t",value:null},alphaMap:{type:"t",value:null},envMap:{type:"t",value:null},flipEnvMap:{type:"f",value:-1},reflectivity:{type:"f",value:1},refractionRatio:{type:"f",value:.98},morphTargetInfluences:{type:"f",value:0}},bump:{bumpMap:{type:"t",value:null},bumpScale:{type:"f", value:1}},normalmap:{normalMap:{type:"t",value:null},normalScale:{type:"v2",value:new THREE.Vector2(1,1)}},fog:{fogDensity:{type:"f",value:2.5E-4},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},fogColor:{type:"c",value:new THREE.Color(16777215)}},lights:{ambientLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]},directionalLightColor:{type:"fv",value:[]},hemisphereLightDirection:{type:"fv",value:[]},hemisphereLightSkyColor:{type:"fv",value:[]},hemisphereLightGroundColor:{type:"fv", -value:[]},pointLightColor:{type:"fv",value:[]},pointLightPosition:{type:"fv",value:[]},pointLightDistance:{type:"fv1",value:[]},spotLightColor:{type:"fv",value:[]},spotLightPosition:{type:"fv",value:[]},spotLightDirection:{type:"fv",value:[]},spotLightDistance:{type:"fv1",value:[]},spotLightAngleCos:{type:"fv1",value:[]},spotLightExponent:{type:"fv1",value:[]}},particle:{psColor:{type:"c",value:new THREE.Color(15658734)},opacity:{type:"f",value:1},size:{type:"f",value:1},scale:{type:"f",value:1}, -map:{type:"t",value:null},fogDensity:{type:"f",value:2.5E-4},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},fogColor:{type:"c",value:new THREE.Color(16777215)}},shadowmap:{shadowMap:{type:"tv",value:[]},shadowMapSize:{type:"v2v",value:[]},shadowBias:{type:"fv1",value:[]},shadowDarkness:{type:"fv1",value:[]},shadowMatrix:{type:"m4v",value:[]}}}; -THREE.ShaderLib={basic:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,THREE.UniformsLib.shadowmap]),vertexShader:[THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.map_vertex, -THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.color_vertex,THREE.ShaderChunk.skinbase_vertex,"\t#ifdef USE_ENVMAP",THREE.ShaderChunk.morphnormal_vertex,THREE.ShaderChunk.skinnormal_vertex,THREE.ShaderChunk.defaultnormal_vertex,"\t#endif",THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,THREE.ShaderChunk.worldpos_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"), -fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.alphamap_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,THREE.ShaderChunk.specularmap_pars_fragment,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tgl_FragColor = vec4( diffuse, opacity );",THREE.ShaderChunk.logdepthbuf_fragment, -THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.alphamap_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.specularmap_fragment,THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},lambert:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,THREE.UniformsLib.lights,THREE.UniformsLib.shadowmap, -{ambient:{type:"c",value:new THREE.Color(16777215)},emissive:{type:"c",value:new THREE.Color(0)},wrapRGB:{type:"v3",value:new THREE.Vector3(1,1,1)}}]),vertexShader:["#define LAMBERT\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif",THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.lights_lambert_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex, -THREE.ShaderChunk.shadowmap_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.color_vertex,THREE.ShaderChunk.morphnormal_vertex,THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.skinnormal_vertex,THREE.ShaderChunk.defaultnormal_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,THREE.ShaderChunk.worldpos_vertex, -THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.lights_lambert_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform float opacity;\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.alphamap_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment, -THREE.ShaderChunk.specularmap_pars_fragment,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tgl_FragColor = vec4( vec3( 1.0 ), opacity );",THREE.ShaderChunk.logdepthbuf_fragment,THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.alphamap_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.specularmap_fragment,"\t#ifdef DOUBLE_SIDED\n\t\tif ( gl_FrontFacing )\n\t\t\tgl_FragColor.xyz *= vLightFront;\n\t\telse\n\t\t\tgl_FragColor.xyz *= vLightBack;\n\t#else\n\t\tgl_FragColor.xyz *= vLightFront;\n\t#endif", -THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},phong:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.bump,THREE.UniformsLib.normalmap,THREE.UniformsLib.fog,THREE.UniformsLib.lights,THREE.UniformsLib.shadowmap,{ambient:{type:"c",value:new THREE.Color(16777215)},emissive:{type:"c",value:new THREE.Color(0)}, -specular:{type:"c",value:new THREE.Color(1118481)},shininess:{type:"f",value:30},wrapRGB:{type:"v3",value:new THREE.Vector3(1,1,1)}}]),vertexShader:["#define PHONG\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;",THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.lights_phong_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex, -THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.color_vertex,THREE.ShaderChunk.morphnormal_vertex,THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.skinnormal_vertex,THREE.ShaderChunk.defaultnormal_vertex,"\tvNormal = normalize( transformedNormal );",THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"\tvViewPosition = -mvPosition.xyz;", -THREE.ShaderChunk.worldpos_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.lights_phong_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["#define PHONG\nuniform vec3 diffuse;\nuniform float opacity;\nuniform vec3 ambient;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.alphamap_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment, -THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.lights_phong_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,THREE.ShaderChunk.bumpmap_pars_fragment,THREE.ShaderChunk.normalmap_pars_fragment,THREE.ShaderChunk.specularmap_pars_fragment,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tgl_FragColor = vec4( vec3( 1.0 ), opacity );",THREE.ShaderChunk.logdepthbuf_fragment,THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.alphamap_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.specularmap_fragment, -THREE.ShaderChunk.lights_phong_fragment,THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},particle_basic:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.particle,THREE.UniformsLib.shadowmap]),vertexShader:["uniform float size;\nuniform float scale;",THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex, -THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.color_vertex,"\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\t#ifdef USE_SIZEATTENUATION\n\t\tgl_PointSize = size * ( scale / length( mvPosition.xyz ) );\n\t#else\n\t\tgl_PointSize = size;\n\t#endif\n\tgl_Position = projectionMatrix * mvPosition;",THREE.ShaderChunk.logdepthbuf_vertex,THREE.ShaderChunk.worldpos_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 psColor;\nuniform float opacity;", -THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_particle_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tgl_FragColor = vec4( psColor, opacity );",THREE.ShaderChunk.logdepthbuf_fragment,THREE.ShaderChunk.map_particle_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},dashed:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common, -THREE.UniformsLib.fog,{scale:{type:"f",value:1},dashSize:{type:"f",value:1},totalSize:{type:"f",value:2}}]),vertexShader:["uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;",THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.color_vertex,"\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;",THREE.ShaderChunk.logdepthbuf_vertex, -"}"].join("\n"),fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tgl_FragColor = vec4( diffuse, opacity );",THREE.ShaderChunk.logdepthbuf_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.fog_fragment, -"}"].join("\n")},depth:{uniforms:{mNear:{type:"f",value:1},mFar:{type:"f",value:2E3},opacity:{type:"f",value:1}},vertexShader:[THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float mNear;\nuniform float mFar;\nuniform float opacity;",THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {",THREE.ShaderChunk.logdepthbuf_fragment, -"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;\n\t#else\n\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\t#endif\n\tfloat color = 1.0 - smoothstep( mNear, mFar, depth );\n\tgl_FragColor = vec4( vec3( color ), opacity );\n}"].join("\n")},normal:{uniforms:{opacity:{type:"f",value:1}},vertexShader:["varying vec3 vNormal;",THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {\n\tvNormal = normalize( normalMatrix * normal );", -THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float opacity;\nvarying vec3 vNormal;",THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tgl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );",THREE.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},cube:{uniforms:{tCube:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",THREE.ShaderChunk.logdepthbuf_pars_vertex, -"void main() {\n\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\tvWorldPosition = worldPosition.xyz;\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform samplerCube tCube;\nuniform float tFlip;\nvarying vec3 vWorldPosition;",THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );",THREE.ShaderChunk.logdepthbuf_fragment, -"}"].join("\n")},equirect:{uniforms:{tEquirect:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {\n\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\tvWorldPosition = worldPosition.xyz;\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;\nuniform float tFlip;\nvarying vec3 vWorldPosition;", -THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\nvec3 direction = normalize( vWorldPosition );\nvec2 sampleUV;\nsampleUV.y = clamp( tFlip * direction.y * -0.5 + 0.5, 0.0, 1.0);\nsampleUV.x = atan( direction.z, direction.x ) * 0.15915494309189533576888376337251 + 0.5;\ngl_FragColor = texture2D( tEquirect, sampleUV );",THREE.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex, -THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[THREE.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {\n\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\n\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\n\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );\n\tres -= res.xxyz * bit_mask;\n\treturn res;\n}\nvoid main() {", +value:[]},pointLightColor:{type:"fv",value:[]},pointLightPosition:{type:"fv",value:[]},pointLightDistance:{type:"fv1",value:[]},pointLightDecay:{type:"fv1",value:[]},spotLightColor:{type:"fv",value:[]},spotLightPosition:{type:"fv",value:[]},spotLightDirection:{type:"fv",value:[]},spotLightDistance:{type:"fv1",value:[]},spotLightAngleCos:{type:"fv1",value:[]},spotLightExponent:{type:"fv1",value:[]},spotLightDecay:{type:"fv1",value:[]}},particle:{psColor:{type:"c",value:new THREE.Color(15658734)},opacity:{type:"f", +value:1},size:{type:"f",value:1},scale:{type:"f",value:1},map:{type:"t",value:null},offsetRepeat:{type:"v4",value:new THREE.Vector4(0,0,1,1)},fogDensity:{type:"f",value:2.5E-4},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},fogColor:{type:"c",value:new THREE.Color(16777215)}},shadowmap:{shadowMap:{type:"tv",value:[]},shadowMapSize:{type:"v2v",value:[]},shadowBias:{type:"fv1",value:[]},shadowDarkness:{type:"fv1",value:[]},shadowMatrix:{type:"m4v",value:[]}}}; +THREE.ShaderLib={basic:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,THREE.UniformsLib.shadowmap]),vertexShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {", +THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.color_vertex,THREE.ShaderChunk.skinbase_vertex,"\t#ifdef USE_ENVMAP",THREE.ShaderChunk.morphnormal_vertex,THREE.ShaderChunk.skinnormal_vertex,THREE.ShaderChunk.defaultnormal_vertex,"\t#endif",THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,THREE.ShaderChunk.worldpos_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.shadowmap_vertex, +"}"].join("\n"),fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;",THREE.ShaderChunk.common,THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.alphamap_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,THREE.ShaderChunk.specularmap_pars_fragment,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );", +THREE.ShaderChunk.logdepthbuf_fragment,THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.alphamap_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.specularmap_fragment,"\toutgoingLight = diffuseColor.rgb;",THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n}"].join("\n")}, +lambert:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,THREE.UniformsLib.lights,THREE.UniformsLib.shadowmap,{emissive:{type:"c",value:new THREE.Color(0)},wrapRGB:{type:"v3",value:new THREE.Vector3(1,1,1)}}]),vertexShader:["#define LAMBERT\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif",THREE.ShaderChunk.common,THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.lights_lambert_pars_vertex, +THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.color_vertex,THREE.ShaderChunk.morphnormal_vertex,THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.skinnormal_vertex,THREE.ShaderChunk.defaultnormal_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex, +THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,THREE.ShaderChunk.worldpos_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.lights_lambert_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif",THREE.ShaderChunk.common,THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.alphamap_pars_fragment, +THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,THREE.ShaderChunk.specularmap_pars_fragment,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );",THREE.ShaderChunk.logdepthbuf_fragment,THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.alphamap_fragment,THREE.ShaderChunk.alphatest_fragment, +THREE.ShaderChunk.specularmap_fragment,"\t#ifdef DOUBLE_SIDED\n\t\tif ( gl_FrontFacing )\n\t\t\toutgoingLight += diffuseColor.rgb * vLightFront + emissive;\n\t\telse\n\t\t\toutgoingLight += diffuseColor.rgb * vLightBack + emissive;\n\t#else\n\t\toutgoingLight += diffuseColor.rgb * vLightFront + emissive;\n\t#endif",THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n}"].join("\n")}, +phong:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.bump,THREE.UniformsLib.normalmap,THREE.UniformsLib.fog,THREE.UniformsLib.lights,THREE.UniformsLib.shadowmap,{emissive:{type:"c",value:new THREE.Color(0)},specular:{type:"c",value:new THREE.Color(1118481)},shininess:{type:"f",value:30},wrapRGB:{type:"v3",value:new THREE.Vector3(1,1,1)}}]),vertexShader:["#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif",THREE.ShaderChunk.common, +THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.lights_phong_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.color_vertex,THREE.ShaderChunk.morphnormal_vertex,THREE.ShaderChunk.skinbase_vertex, +THREE.ShaderChunk.skinnormal_vertex,THREE.ShaderChunk.defaultnormal_vertex,"#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif",THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"\tvViewPosition = -mvPosition.xyz;",THREE.ShaderChunk.worldpos_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.lights_phong_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;", +THREE.ShaderChunk.common,THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.alphamap_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.lights_phong_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,THREE.ShaderChunk.bumpmap_pars_fragment,THREE.ShaderChunk.normalmap_pars_fragment,THREE.ShaderChunk.specularmap_pars_fragment,THREE.ShaderChunk.logdepthbuf_pars_fragment, +"void main() {\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );",THREE.ShaderChunk.logdepthbuf_fragment,THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.alphamap_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.specularmap_fragment,THREE.ShaderChunk.lights_phong_fragment,THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment, +THREE.ShaderChunk.fog_fragment,"\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n}"].join("\n")},particle_basic:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.particle,THREE.UniformsLib.shadowmap]),vertexShader:["uniform float size;\nuniform float scale;",THREE.ShaderChunk.common,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.color_vertex,"\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\t#ifdef USE_SIZEATTENUATION\n\t\tgl_PointSize = size * ( scale / length( mvPosition.xyz ) );\n\t#else\n\t\tgl_PointSize = size;\n\t#endif\n\tgl_Position = projectionMatrix * mvPosition;", +THREE.ShaderChunk.logdepthbuf_vertex,THREE.ShaderChunk.worldpos_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 psColor;\nuniform float opacity;",THREE.ShaderChunk.common,THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_particle_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( psColor, opacity );", +THREE.ShaderChunk.logdepthbuf_fragment,THREE.ShaderChunk.map_particle_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.alphatest_fragment,"\toutgoingLight = diffuseColor.rgb;",THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.fog_fragment,"\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n}"].join("\n")},dashed:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,{scale:{type:"f",value:1},dashSize:{type:"f",value:1},totalSize:{type:"f",value:2}}]), +vertexShader:["uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;",THREE.ShaderChunk.common,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.color_vertex,"\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;",THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;", +THREE.ShaderChunk.common,THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );",THREE.ShaderChunk.logdepthbuf_fragment,THREE.ShaderChunk.color_fragment,"\toutgoingLight = diffuseColor.rgb;",THREE.ShaderChunk.fog_fragment,"\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n}"].join("\n")}, +depth:{uniforms:{mNear:{type:"f",value:1},mFar:{type:"f",value:2E3},opacity:{type:"f",value:1}},vertexShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float mNear;\nuniform float mFar;\nuniform float opacity;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment, +"void main() {",THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;\n\t#else\n\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\t#endif\n\tfloat color = 1.0 - smoothstep( mNear, mFar, depth );\n\tgl_FragColor = vec4( vec3( color ), opacity );\n}"].join("\n")},normal:{uniforms:{opacity:{type:"f",value:1}},vertexShader:["varying vec3 vNormal;",THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex, +"void main() {\n\tvNormal = normalize( normalMatrix * normal );",THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float opacity;\nvarying vec3 vNormal;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tgl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );",THREE.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},cube:{uniforms:{tCube:{type:"t",value:null}, +tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform samplerCube tCube;\nuniform float tFlip;\nvarying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment, +"void main() {\n\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );",THREE.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},equirect:{uniforms:{tEquirect:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", +THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;\nuniform float tFlip;\nvarying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\nvec3 direction = normalize( vWorldPosition );\nvec2 sampleUV;\nsampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );\nsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\ngl_FragColor = texture2D( tEquirect, sampleUV );",THREE.ShaderChunk.logdepthbuf_fragment, +"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {\n\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\n\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\n\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );\n\tres -= res.xxyz * bit_mask;\n\treturn res;\n}\nvoid main() {", THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );\n\t#else\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n\t#endif\n}"].join("\n")}}; -THREE.WebGLRenderer=function(a){function b(a){var b=a.geometry;a=a.material;var c=b.vertices.length;if(a.attributes){void 0===b.__webglCustomAttributesList&&(b.__webglCustomAttributesList=[]);for(var d in a.attributes){var e=a.attributes[d];if(!e.__webglInitialized||e.createUniqueBuffers){e.__webglInitialized=!0;var f=1;"v2"===e.type?f=2:"v3"===e.type?f=3:"v4"===e.type?f=4:"c"===e.type&&(f=3);e.size=f;e.array=new Float32Array(c*f);e.buffer=l.createBuffer();e.buffer.belongsToAttribute=d;e.needsUpdate= -!0}b.__webglCustomAttributesList.push(e)}}}function c(a,b){var c=b.geometry,e=a.faces3,f=3*e.length,g=1*e.length,h=3*e.length,e=d(b,a);a.__vertexArray=new Float32Array(3*f);a.__normalArray=new Float32Array(3*f);a.__colorArray=new Float32Array(3*f);a.__uvArray=new Float32Array(2*f);1<c.faceVertexUvs.length&&(a.__uv2Array=new Float32Array(2*f));c.hasTangents&&(a.__tangentArray=new Float32Array(4*f));b.geometry.skinWeights.length&&b.geometry.skinIndices.length&&(a.__skinIndexArray=new Float32Array(4* -f),a.__skinWeightArray=new Float32Array(4*f));c=null!==aa.get("OES_element_index_uint")&&21845<g?Uint32Array:Uint16Array;a.__typeArray=c;a.__faceArray=new c(3*g);a.__lineArray=new c(2*h);var k=a.numMorphTargets;if(k)for(a.__morphTargetsArrays=[],c=0;c<k;c++)a.__morphTargetsArrays.push(new Float32Array(3*f));if(k=a.numMorphNormals)for(a.__morphNormalsArrays=[],c=0;c<k;c++)a.__morphNormalsArrays.push(new Float32Array(3*f));a.__webglFaceCount=3*g;a.__webglLineCount=2*h;if(e.attributes){void 0===a.__webglCustomAttributesList&& -(a.__webglCustomAttributesList=[]);for(var m in e.attributes){var g=e.attributes[m],h={},n;for(n in g)h[n]=g[n];if(!h.__webglInitialized||h.createUniqueBuffers)h.__webglInitialized=!0,c=1,"v2"===h.type?c=2:"v3"===h.type?c=3:"v4"===h.type?c=4:"c"===h.type&&(c=3),h.size=c,h.array=new Float32Array(f*c),h.buffer=l.createBuffer(),h.buffer.belongsToAttribute=m,g.needsUpdate=!0,h.__original=g;a.__webglCustomAttributesList.push(h)}}a.__inittedArrays=!0}function d(a,b){return a.material instanceof THREE.MeshFaceMaterial? -a.material.materials[b.materialIndex]:a.material}function e(a,b,c,d){c=c.attributes;var e=b.attributes;b=b.attributesKeys;for(var f=0,k=b.length;f<k;f++){var m=b[f],n=e[m];if(0<=n){var p=c[m];void 0!==p?(m=p.itemSize,l.bindBuffer(l.ARRAY_BUFFER,p.buffer),g(n),l.vertexAttribPointer(n,m,l.FLOAT,!1,0,d*m*4)):void 0!==a.defaultAttributeValues&&(2===a.defaultAttributeValues[m].length?l.vertexAttrib2fv(n,a.defaultAttributeValues[m]):3===a.defaultAttributeValues[m].length&&l.vertexAttrib3fv(n,a.defaultAttributeValues[m]))}}h()} -function f(){for(var a=0,b=kb.length;a<b;a++)kb[a]=0}function g(a){kb[a]=1;0===Ma[a]&&(l.enableVertexAttribArray(a),Ma[a]=1)}function h(){for(var a=0,b=Ma.length;a<b;a++)Ma[a]!==kb[a]&&(l.disableVertexAttribArray(a),Ma[a]=0)}function k(a,b){return a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function n(a,b){return a.z!==b.z?b.z-a.z:a.id-b.id}function p(a,b){return b[0]-a[0]}function q(a){if(!1!==a.visible){if(!(a instanceof THREE.Scene||a instanceof THREE.Group)){void 0=== -a.__webglInit&&(a.__webglInit=!0,a._modelViewMatrix=new THREE.Matrix4,a._normalMatrix=new THREE.Matrix3,a.addEventListener("removed",ic));var c=a.geometry;if(void 0!==c&&void 0===c.__webglInit)if(c.__webglInit=!0,c.addEventListener("dispose",jc),c instanceof THREE.BufferGeometry)I.info.memory.geometries++;else if(a instanceof THREE.Mesh)r(a,c);else if(a instanceof THREE.Line){if(void 0===c.__webglVertexBuffer){c.__webglVertexBuffer=l.createBuffer();c.__webglColorBuffer=l.createBuffer();c.__webglLineDistanceBuffer= -l.createBuffer();I.info.memory.geometries++;var d=c.vertices.length;c.__vertexArray=new Float32Array(3*d);c.__colorArray=new Float32Array(3*d);c.__lineDistanceArray=new Float32Array(1*d);c.__webglLineCount=d;b(a);c.verticesNeedUpdate=!0;c.colorsNeedUpdate=!0;c.lineDistancesNeedUpdate=!0}}else a instanceof THREE.PointCloud&&void 0===c.__webglVertexBuffer&&(c.__webglVertexBuffer=l.createBuffer(),c.__webglColorBuffer=l.createBuffer(),I.info.memory.geometries++,d=c.vertices.length,c.__vertexArray=new Float32Array(3* -d),c.__colorArray=new Float32Array(3*d),c.__sortArray=[],c.__webglParticleCount=d,b(a),c.verticesNeedUpdate=!0,c.colorsNeedUpdate=!0);if(void 0===a.__webglActive)if(a.__webglActive=!0,a instanceof THREE.Mesh)if(c instanceof THREE.BufferGeometry)u(Fa,c,a);else{if(c instanceof THREE.Geometry)for(var c=sb[c.id],d=0,e=c.length;d<e;d++)u(Fa,c[d],a)}else a instanceof THREE.Line||a instanceof THREE.PointCloud?u(Fa,c,a):(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)&&Ga.push({id:null, -object:a,opaque:null,transparent:null,z:0});if(a instanceof THREE.Light)pa.push(a);else if(a instanceof THREE.Sprite)tb.push(a);else if(a instanceof THREE.LensFlare)eb.push(a);else if((c=Fa[a.id])&&(!1===a.frustumCulled||!0===ub.intersectsObject(a)))for(d=0,e=c.length;d<e;d++){var f=c[d],g=f,h=g.object,k=g.buffer,m=h.geometry,h=h.material;h instanceof THREE.MeshFaceMaterial?(h=h.materials[m instanceof THREE.BufferGeometry?0:k.materialIndex],g.material=h,h.transparent?za.push(g):Ta.push(g)):h&&(g.material= -h,h.transparent?za.push(g):Ta.push(g));f.render=!0;!0===I.sortObjects&&(Da.setFromMatrixPosition(a.matrixWorld),Da.applyProjection(vb),f.z=Da.z)}}d=0;for(e=a.children.length;d<e;d++)q(a.children[d])}}function m(a,b,c,d,e,f){for(var g,h=0,l=a.length;h<l;h++){g=a[h];var k=g.object,m=g.buffer;G(k,b);if(f)g=f;else{g=g.material;if(!g)continue;e&&I.setBlending(g.blending,g.blendEquation,g.blendSrc,g.blendDst);I.setDepthTest(g.depthTest);I.setDepthWrite(g.depthWrite);A(g.polygonOffset,g.polygonOffsetFactor, -g.polygonOffsetUnits)}I.setMaterialFaces(g);m instanceof THREE.BufferGeometry?I.renderBufferDirect(b,c,d,g,m,k):I.renderBuffer(b,c,d,g,m,k)}}function t(a,b,c,d,e,f,g){for(var h,l=0,k=a.length;l<k;l++){h=a[l];var m=h.object;if(m.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&I.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);I.setDepthTest(h.depthTest);I.setDepthWrite(h.depthWrite);A(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}I.renderImmediateObject(c,d,e,h,m)}}}function s(a){var b= -a.object.material;b.transparent?(a.transparent=b,a.opaque=null):(a.opaque=b,a.transparent=null)}function r(a,b){var d=a.material,e=!1;if(void 0===sb[b.id]||!0===b.groupsNeedUpdate){delete Fa[a.id];for(var f=sb,g=b.id,d=d instanceof THREE.MeshFaceMaterial,h=aa.get("OES_element_index_uint")?4294967296:65535,k,e={},m=b.morphTargets.length,n=b.morphNormals.length,p,q={},r=[],t=0,s=b.faces.length;t<s;t++){k=b.faces[t];var v=d?k.materialIndex:0;v in e||(e[v]={hash:v,counter:0});k=e[v].hash+"_"+e[v].counter; -k in q||(p={id:kc++,faces3:[],materialIndex:v,vertices:0,numMorphTargets:m,numMorphNormals:n},q[k]=p,r.push(p));q[k].vertices+3>h&&(e[v].counter+=1,k=e[v].hash+"_"+e[v].counter,k in q||(p={id:kc++,faces3:[],materialIndex:v,vertices:0,numMorphTargets:m,numMorphNormals:n},q[k]=p,r.push(p)));q[k].faces3.push(t);q[k].vertices+=3}f[g]=r;b.groupsNeedUpdate=!1}f=sb[b.id];g=0;for(d=f.length;g<d;g++){h=f[g];if(void 0===h.__webglVertexBuffer){e=h;e.__webglVertexBuffer=l.createBuffer();e.__webglNormalBuffer= -l.createBuffer();e.__webglTangentBuffer=l.createBuffer();e.__webglColorBuffer=l.createBuffer();e.__webglUVBuffer=l.createBuffer();e.__webglUV2Buffer=l.createBuffer();e.__webglSkinIndicesBuffer=l.createBuffer();e.__webglSkinWeightsBuffer=l.createBuffer();e.__webglFaceBuffer=l.createBuffer();e.__webglLineBuffer=l.createBuffer();if(n=e.numMorphTargets)for(e.__webglMorphTargetsBuffers=[],m=0;m<n;m++)e.__webglMorphTargetsBuffers.push(l.createBuffer());if(n=e.numMorphNormals)for(e.__webglMorphNormalsBuffers= -[],m=0;m<n;m++)e.__webglMorphNormalsBuffers.push(l.createBuffer());I.info.memory.geometries++;c(h,a);b.verticesNeedUpdate=!0;b.morphTargetsNeedUpdate=!0;b.elementsNeedUpdate=!0;b.uvsNeedUpdate=!0;b.normalsNeedUpdate=!0;b.tangentsNeedUpdate=!0;e=b.colorsNeedUpdate=!0}else e=!1;(e||void 0===a.__webglActive)&&u(Fa,h,a)}a.__webglActive=!0}function u(a,b,c){var d=c.id;a[d]=a[d]||[];a[d].push({id:d,buffer:b,object:c,material:null,z:0})}function v(a){var b=a.geometry;if(b instanceof THREE.BufferGeometry)for(var e= -b.attributes,f=b.attributesKeys,g=0,h=f.length;g<h;g++){var k=f[g],m=e[k];void 0===m.buffer&&(m.buffer=l.createBuffer(),m.needsUpdate=!0);if(!0===m.needsUpdate){var n="index"===k?l.ELEMENT_ARRAY_BUFFER:l.ARRAY_BUFFER;l.bindBuffer(n,m.buffer);l.bufferData(n,m.array,l.STATIC_DRAW);m.needsUpdate=!1}}else if(a instanceof THREE.Mesh){!0===b.groupsNeedUpdate&&r(a,b);for(var p=sb[b.id],g=0,q=p.length;g<q;g++){var t=p[g],s=d(a,t);!0===b.groupsNeedUpdate&&c(t,a);var u=s.attributes&&y(s);if(b.verticesNeedUpdate|| -b.morphTargetsNeedUpdate||b.elementsNeedUpdate||b.uvsNeedUpdate||b.normalsNeedUpdate||b.colorsNeedUpdate||b.tangentsNeedUpdate||u){var v=t,x=a,z=l.DYNAMIC_DRAW,G=!b.dynamic,E=s;if(v.__inittedArrays){var D=E&&void 0!==E.shading&&E.shading===THREE.SmoothShading,w=void 0,F=void 0,I=void 0,A=void 0,Q=void 0,M=void 0,K=void 0,N=void 0,O=void 0,T=void 0,U=void 0,H=void 0,L=void 0,X=void 0,W=void 0,pa=void 0,ta=void 0,Za=void 0,Fa=void 0,ga=void 0,Ta=void 0,aa=void 0,Ga=void 0,za=void 0,ha=void 0,P=void 0, -ea=void 0,fa=void 0,ma=void 0,Y=void 0,tb=void 0,qa=void 0,Da=void 0,Aa=void 0,Ha=void 0,xa=void 0,na=void 0,ab=void 0,eb=void 0,la=void 0,Na=0,Ua=0,mb=0,ya=0,Xa=0,Va=0,Ia=0,nb=0,Oa=0,ia=0,ra=0,J=0,Ba=void 0,bb=v.__vertexArray,wb=v.__uvArray,ob=v.__uv2Array,Pa=v.__normalArray,Ca=v.__tangentArray,cb=v.__colorArray,Ka=v.__skinIndexArray,La=v.__skinWeightArray,$a=v.__morphTargetsArrays,xb=v.__morphNormalsArrays,pb=v.__webglCustomAttributesList,B=void 0,db=v.__faceArray,sa=v.__lineArray,oa=x.geometry, -Sa=oa.elementsNeedUpdate,Ma=oa.uvsNeedUpdate,Ab=oa.normalsNeedUpdate,Hb=oa.tangentsNeedUpdate,Ib=oa.colorsNeedUpdate,lb=oa.morphTargetsNeedUpdate,Cb=oa.vertices,V=v.faces3,Ja=oa.faces,Wa=oa.faceVertexUvs[0],Db=oa.faceVertexUvs[1],Pb=oa.skinIndices,$=oa.skinWeights,Eb=oa.morphTargets,R=oa.morphNormals;if(oa.verticesNeedUpdate){w=0;for(F=V.length;w<F;w++)A=Ja[V[w]],H=Cb[A.a],L=Cb[A.b],X=Cb[A.c],bb[Ua]=H.x,bb[Ua+1]=H.y,bb[Ua+2]=H.z,bb[Ua+3]=L.x,bb[Ua+4]=L.y,bb[Ua+5]=L.z,bb[Ua+6]=X.x,bb[Ua+7]=X.y,bb[Ua+ -8]=X.z,Ua+=9;l.bindBuffer(l.ARRAY_BUFFER,v.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,bb,z)}if(lb)for(Ha=0,xa=Eb.length;Ha<xa;Ha++){w=ra=0;for(F=V.length;w<F;w++)eb=V[w],A=Ja[eb],H=Eb[Ha].vertices[A.a],L=Eb[Ha].vertices[A.b],X=Eb[Ha].vertices[A.c],na=$a[Ha],na[ra]=H.x,na[ra+1]=H.y,na[ra+2]=H.z,na[ra+3]=L.x,na[ra+4]=L.y,na[ra+5]=L.z,na[ra+6]=X.x,na[ra+7]=X.y,na[ra+8]=X.z,E.morphNormals&&(D?(la=R[Ha].vertexNormals[eb],Za=la.a,Fa=la.b,ga=la.c):ga=Fa=Za=R[Ha].faceNormals[eb],ab=xb[Ha],ab[ra]=Za.x, -ab[ra+1]=Za.y,ab[ra+2]=Za.z,ab[ra+3]=Fa.x,ab[ra+4]=Fa.y,ab[ra+5]=Fa.z,ab[ra+6]=ga.x,ab[ra+7]=ga.y,ab[ra+8]=ga.z),ra+=9;l.bindBuffer(l.ARRAY_BUFFER,v.__webglMorphTargetsBuffers[Ha]);l.bufferData(l.ARRAY_BUFFER,$a[Ha],z);E.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,v.__webglMorphNormalsBuffers[Ha]),l.bufferData(l.ARRAY_BUFFER,xb[Ha],z))}if($.length){w=0;for(F=V.length;w<F;w++)A=Ja[V[w]],za=$[A.a],ha=$[A.b],P=$[A.c],La[ia]=za.x,La[ia+1]=za.y,La[ia+2]=za.z,La[ia+3]=za.w,La[ia+4]=ha.x,La[ia+5]=ha.y,La[ia+ -6]=ha.z,La[ia+7]=ha.w,La[ia+8]=P.x,La[ia+9]=P.y,La[ia+10]=P.z,La[ia+11]=P.w,ea=Pb[A.a],fa=Pb[A.b],ma=Pb[A.c],Ka[ia]=ea.x,Ka[ia+1]=ea.y,Ka[ia+2]=ea.z,Ka[ia+3]=ea.w,Ka[ia+4]=fa.x,Ka[ia+5]=fa.y,Ka[ia+6]=fa.z,Ka[ia+7]=fa.w,Ka[ia+8]=ma.x,Ka[ia+9]=ma.y,Ka[ia+10]=ma.z,Ka[ia+11]=ma.w,ia+=12;0<ia&&(l.bindBuffer(l.ARRAY_BUFFER,v.__webglSkinIndicesBuffer),l.bufferData(l.ARRAY_BUFFER,Ka,z),l.bindBuffer(l.ARRAY_BUFFER,v.__webglSkinWeightsBuffer),l.bufferData(l.ARRAY_BUFFER,La,z))}if(Ib){w=0;for(F=V.length;w<F;w++)A= -Ja[V[w]],K=A.vertexColors,N=A.color,3===K.length&&E.vertexColors===THREE.VertexColors?(Ta=K[0],aa=K[1],Ga=K[2]):Ga=aa=Ta=N,cb[Oa]=Ta.r,cb[Oa+1]=Ta.g,cb[Oa+2]=Ta.b,cb[Oa+3]=aa.r,cb[Oa+4]=aa.g,cb[Oa+5]=aa.b,cb[Oa+6]=Ga.r,cb[Oa+7]=Ga.g,cb[Oa+8]=Ga.b,Oa+=9;0<Oa&&(l.bindBuffer(l.ARRAY_BUFFER,v.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,cb,z))}if(Hb&&oa.hasTangents){w=0;for(F=V.length;w<F;w++)A=Ja[V[w]],O=A.vertexTangents,W=O[0],pa=O[1],ta=O[2],Ca[Ia]=W.x,Ca[Ia+1]=W.y,Ca[Ia+2]=W.z,Ca[Ia+3]=W.w,Ca[Ia+ -4]=pa.x,Ca[Ia+5]=pa.y,Ca[Ia+6]=pa.z,Ca[Ia+7]=pa.w,Ca[Ia+8]=ta.x,Ca[Ia+9]=ta.y,Ca[Ia+10]=ta.z,Ca[Ia+11]=ta.w,Ia+=12;l.bindBuffer(l.ARRAY_BUFFER,v.__webglTangentBuffer);l.bufferData(l.ARRAY_BUFFER,Ca,z)}if(Ab){w=0;for(F=V.length;w<F;w++)if(A=Ja[V[w]],Q=A.vertexNormals,M=A.normal,3===Q.length&&D)for(Y=0;3>Y;Y++)qa=Q[Y],Pa[Va]=qa.x,Pa[Va+1]=qa.y,Pa[Va+2]=qa.z,Va+=3;else for(Y=0;3>Y;Y++)Pa[Va]=M.x,Pa[Va+1]=M.y,Pa[Va+2]=M.z,Va+=3;l.bindBuffer(l.ARRAY_BUFFER,v.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER, -Pa,z)}if(Ma&&Wa){w=0;for(F=V.length;w<F;w++)if(I=V[w],T=Wa[I],void 0!==T)for(Y=0;3>Y;Y++)Da=T[Y],wb[mb]=Da.x,wb[mb+1]=Da.y,mb+=2;0<mb&&(l.bindBuffer(l.ARRAY_BUFFER,v.__webglUVBuffer),l.bufferData(l.ARRAY_BUFFER,wb,z))}if(Ma&&Db){w=0;for(F=V.length;w<F;w++)if(I=V[w],U=Db[I],void 0!==U)for(Y=0;3>Y;Y++)Aa=U[Y],ob[ya]=Aa.x,ob[ya+1]=Aa.y,ya+=2;0<ya&&(l.bindBuffer(l.ARRAY_BUFFER,v.__webglUV2Buffer),l.bufferData(l.ARRAY_BUFFER,ob,z))}if(Sa){w=0;for(F=V.length;w<F;w++)db[Xa]=Na,db[Xa+1]=Na+1,db[Xa+2]=Na+ -2,Xa+=3,sa[nb]=Na,sa[nb+1]=Na+1,sa[nb+2]=Na,sa[nb+3]=Na+2,sa[nb+4]=Na+1,sa[nb+5]=Na+2,nb+=6,Na+=3;l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,v.__webglFaceBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,db,z);l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,v.__webglLineBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,sa,z)}if(pb)for(Y=0,tb=pb.length;Y<tb;Y++)if(B=pb[Y],B.__original.needsUpdate){J=0;if(1===B.size)if(void 0===B.boundTo||"vertices"===B.boundTo)for(w=0,F=V.length;w<F;w++)A=Ja[V[w]],B.array[J]=B.value[A.a],B.array[J+ -1]=B.value[A.b],B.array[J+2]=B.value[A.c],J+=3;else{if("faces"===B.boundTo)for(w=0,F=V.length;w<F;w++)Ba=B.value[V[w]],B.array[J]=Ba,B.array[J+1]=Ba,B.array[J+2]=Ba,J+=3}else if(2===B.size)if(void 0===B.boundTo||"vertices"===B.boundTo)for(w=0,F=V.length;w<F;w++)A=Ja[V[w]],H=B.value[A.a],L=B.value[A.b],X=B.value[A.c],B.array[J]=H.x,B.array[J+1]=H.y,B.array[J+2]=L.x,B.array[J+3]=L.y,B.array[J+4]=X.x,B.array[J+5]=X.y,J+=6;else{if("faces"===B.boundTo)for(w=0,F=V.length;w<F;w++)X=L=H=Ba=B.value[V[w]], -B.array[J]=H.x,B.array[J+1]=H.y,B.array[J+2]=L.x,B.array[J+3]=L.y,B.array[J+4]=X.x,B.array[J+5]=X.y,J+=6}else if(3===B.size){var S;S="c"===B.type?["r","g","b"]:["x","y","z"];if(void 0===B.boundTo||"vertices"===B.boundTo)for(w=0,F=V.length;w<F;w++)A=Ja[V[w]],H=B.value[A.a],L=B.value[A.b],X=B.value[A.c],B.array[J]=H[S[0]],B.array[J+1]=H[S[1]],B.array[J+2]=H[S[2]],B.array[J+3]=L[S[0]],B.array[J+4]=L[S[1]],B.array[J+5]=L[S[2]],B.array[J+6]=X[S[0]],B.array[J+7]=X[S[1]],B.array[J+8]=X[S[2]],J+=9;else if("faces"=== -B.boundTo)for(w=0,F=V.length;w<F;w++)X=L=H=Ba=B.value[V[w]],B.array[J]=H[S[0]],B.array[J+1]=H[S[1]],B.array[J+2]=H[S[2]],B.array[J+3]=L[S[0]],B.array[J+4]=L[S[1]],B.array[J+5]=L[S[2]],B.array[J+6]=X[S[0]],B.array[J+7]=X[S[1]],B.array[J+8]=X[S[2]],J+=9;else if("faceVertices"===B.boundTo)for(w=0,F=V.length;w<F;w++)Ba=B.value[V[w]],H=Ba[0],L=Ba[1],X=Ba[2],B.array[J]=H[S[0]],B.array[J+1]=H[S[1]],B.array[J+2]=H[S[2]],B.array[J+3]=L[S[0]],B.array[J+4]=L[S[1]],B.array[J+5]=L[S[2]],B.array[J+6]=X[S[0]],B.array[J+ -7]=X[S[1]],B.array[J+8]=X[S[2]],J+=9}else if(4===B.size)if(void 0===B.boundTo||"vertices"===B.boundTo)for(w=0,F=V.length;w<F;w++)A=Ja[V[w]],H=B.value[A.a],L=B.value[A.b],X=B.value[A.c],B.array[J]=H.x,B.array[J+1]=H.y,B.array[J+2]=H.z,B.array[J+3]=H.w,B.array[J+4]=L.x,B.array[J+5]=L.y,B.array[J+6]=L.z,B.array[J+7]=L.w,B.array[J+8]=X.x,B.array[J+9]=X.y,B.array[J+10]=X.z,B.array[J+11]=X.w,J+=12;else if("faces"===B.boundTo)for(w=0,F=V.length;w<F;w++)X=L=H=Ba=B.value[V[w]],B.array[J]=H.x,B.array[J+1]= -H.y,B.array[J+2]=H.z,B.array[J+3]=H.w,B.array[J+4]=L.x,B.array[J+5]=L.y,B.array[J+6]=L.z,B.array[J+7]=L.w,B.array[J+8]=X.x,B.array[J+9]=X.y,B.array[J+10]=X.z,B.array[J+11]=X.w,J+=12;else if("faceVertices"===B.boundTo)for(w=0,F=V.length;w<F;w++)Ba=B.value[V[w]],H=Ba[0],L=Ba[1],X=Ba[2],B.array[J]=H.x,B.array[J+1]=H.y,B.array[J+2]=H.z,B.array[J+3]=H.w,B.array[J+4]=L.x,B.array[J+5]=L.y,B.array[J+6]=L.z,B.array[J+7]=L.w,B.array[J+8]=X.x,B.array[J+9]=X.y,B.array[J+10]=X.z,B.array[J+11]=X.w,J+=12;l.bindBuffer(l.ARRAY_BUFFER, -B.buffer);l.bufferData(l.ARRAY_BUFFER,B.array,z)}G&&(delete v.__inittedArrays,delete v.__colorArray,delete v.__normalArray,delete v.__tangentArray,delete v.__uvArray,delete v.__uv2Array,delete v.__faceArray,delete v.__vertexArray,delete v.__lineArray,delete v.__skinIndexArray,delete v.__skinWeightArray)}}}b.verticesNeedUpdate=!1;b.morphTargetsNeedUpdate=!1;b.elementsNeedUpdate=!1;b.uvsNeedUpdate=!1;b.normalsNeedUpdate=!1;b.colorsNeedUpdate=!1;b.tangentsNeedUpdate=!1;s.attributes&&C(s)}else if(a instanceof -THREE.Line){s=d(a,b);u=s.attributes&&y(s);if(b.verticesNeedUpdate||b.colorsNeedUpdate||b.lineDistancesNeedUpdate||u){var Z=l.DYNAMIC_DRAW,Ea,ka,Bb,Fb,ba,gb,ua=b.vertices,Qb=b.colors,Rb=b.lineDistances,qb=ua.length,Sb=Qb.length,yb=Rb.length,Gb=b.__vertexArray,rb=b.__colorArray,kb=b.__lineDistanceArray,Mb=b.colorsNeedUpdate,Ob=b.lineDistancesNeedUpdate,hb=b.__webglCustomAttributesList,Ya,ib,va,Kb,Qa,ca;if(b.verticesNeedUpdate){for(Ea=0;Ea<qb;Ea++)Fb=ua[Ea],ba=3*Ea,Gb[ba]=Fb.x,Gb[ba+1]=Fb.y,Gb[ba+2]= -Fb.z;l.bindBuffer(l.ARRAY_BUFFER,b.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,Gb,Z)}if(Mb){for(ka=0;ka<Sb;ka++)gb=Qb[ka],ba=3*ka,rb[ba]=gb.r,rb[ba+1]=gb.g,rb[ba+2]=gb.b;l.bindBuffer(l.ARRAY_BUFFER,b.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,rb,Z)}if(Ob){for(Bb=0;Bb<yb;Bb++)kb[Bb]=Rb[Bb];l.bindBuffer(l.ARRAY_BUFFER,b.__webglLineDistanceBuffer);l.bufferData(l.ARRAY_BUFFER,kb,Z)}if(hb)for(Ya=0,ib=hb.length;Ya<ib;Ya++)if(ca=hb[Ya],ca.needsUpdate&&(void 0===ca.boundTo||"vertices"===ca.boundTo)){ba= -0;Kb=ca.value.length;if(1===ca.size)for(va=0;va<Kb;va++)ca.array[va]=ca.value[va];else if(2===ca.size)for(va=0;va<Kb;va++)Qa=ca.value[va],ca.array[ba]=Qa.x,ca.array[ba+1]=Qa.y,ba+=2;else if(3===ca.size)if("c"===ca.type)for(va=0;va<Kb;va++)Qa=ca.value[va],ca.array[ba]=Qa.r,ca.array[ba+1]=Qa.g,ca.array[ba+2]=Qa.b,ba+=3;else for(va=0;va<Kb;va++)Qa=ca.value[va],ca.array[ba]=Qa.x,ca.array[ba+1]=Qa.y,ca.array[ba+2]=Qa.z,ba+=3;else if(4===ca.size)for(va=0;va<Kb;va++)Qa=ca.value[va],ca.array[ba]=Qa.x,ca.array[ba+ -1]=Qa.y,ca.array[ba+2]=Qa.z,ca.array[ba+3]=Qa.w,ba+=4;l.bindBuffer(l.ARRAY_BUFFER,ca.buffer);l.bufferData(l.ARRAY_BUFFER,ca.array,Z);ca.needsUpdate=!1}}b.verticesNeedUpdate=!1;b.colorsNeedUpdate=!1;b.lineDistancesNeedUpdate=!1;s.attributes&&C(s)}else if(a instanceof THREE.PointCloud){s=d(a,b);u=s.attributes&&y(s);if(b.verticesNeedUpdate||b.colorsNeedUpdate||u){var jb=l.DYNAMIC_DRAW,Tb,Ub,$b,ja,ac,ub=b.vertices,vb=ub.length,Nb=b.colors,Vb=Nb.length,bc=b.__vertexArray,cc=b.__colorArray,Wb=b.colorsNeedUpdate, -Jb=b.__webglCustomAttributesList,dc,zb,wa,Lb,Ra,da;if(b.verticesNeedUpdate){for(Tb=0;Tb<vb;Tb++)$b=ub[Tb],ja=3*Tb,bc[ja]=$b.x,bc[ja+1]=$b.y,bc[ja+2]=$b.z;l.bindBuffer(l.ARRAY_BUFFER,b.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,bc,jb)}if(Wb){for(Ub=0;Ub<Vb;Ub++)ac=Nb[Ub],ja=3*Ub,cc[ja]=ac.r,cc[ja+1]=ac.g,cc[ja+2]=ac.b;l.bindBuffer(l.ARRAY_BUFFER,b.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,cc,jb)}if(Jb)for(dc=0,zb=Jb.length;dc<zb;dc++){da=Jb[dc];if(da.needsUpdate&&(void 0===da.boundTo|| -"vertices"===da.boundTo))if(Lb=da.value.length,ja=0,1===da.size)for(wa=0;wa<Lb;wa++)da.array[wa]=da.value[wa];else if(2===da.size)for(wa=0;wa<Lb;wa++)Ra=da.value[wa],da.array[ja]=Ra.x,da.array[ja+1]=Ra.y,ja+=2;else if(3===da.size)if("c"===da.type)for(wa=0;wa<Lb;wa++)Ra=da.value[wa],da.array[ja]=Ra.r,da.array[ja+1]=Ra.g,da.array[ja+2]=Ra.b,ja+=3;else for(wa=0;wa<Lb;wa++)Ra=da.value[wa],da.array[ja]=Ra.x,da.array[ja+1]=Ra.y,da.array[ja+2]=Ra.z,ja+=3;else if(4===da.size)for(wa=0;wa<Lb;wa++)Ra=da.value[wa], -da.array[ja]=Ra.x,da.array[ja+1]=Ra.y,da.array[ja+2]=Ra.z,da.array[ja+3]=Ra.w,ja+=4;l.bindBuffer(l.ARRAY_BUFFER,da.buffer);l.bufferData(l.ARRAY_BUFFER,da.array,jb);da.needsUpdate=!1}}b.verticesNeedUpdate=!1;b.colorsNeedUpdate=!1;s.attributes&&C(s)}}function y(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function C(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function x(a,b,c,d,e){var f,g,h,k;Mb=0;if(d.needsUpdate){d.program&&lc(d);d.addEventListener("dispose", -mc);var m=Dc[d.type];if(m){var n=THREE.ShaderLib[m];d.__webglShader={uniforms:THREE.UniformsUtils.clone(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader}}else d.__webglShader={uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var p=0,q=0,r=0,t=0,s=0,v=b.length;s<v;s++){var u=b[s];u.onlyShadow||!1===u.visible||(u instanceof THREE.DirectionalLight&&p++,u instanceof THREE.PointLight&&q++,u instanceof THREE.SpotLight&&r++,u instanceof THREE.HemisphereLight&& -t++)}f=p;g=q;h=r;k=t;for(var x,y=0,C=0,G=b.length;C<G;C++){var A=b[C];A.castShadow&&(A instanceof THREE.SpotLight&&y++,A instanceof THREE.DirectionalLight&&!A.shadowCascade&&y++)}x=y;var D;if(Nb&&e&&e.skeleton&&e.skeleton.useVertexTexture)D=1024;else{var H=l.getParameter(l.MAX_VERTEX_UNIFORM_VECTORS),L=Math.floor((H-20)/4);void 0!==e&&e instanceof THREE.SkinnedMesh&&(L=Math.min(e.skeleton.bones.length,L),L<e.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+e.skeleton.bones.length+ -", this GPU supports just "+L+" (try OpenGL instead of ANGLE)"));D=L}var K={precision:ga,supportsVertexTextures:Vb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&d.envMap.mapping,lightMap:!!d.lightMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,combine:d.combine,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:X,skinning:d.skinning,maxBones:D,useVertexTexture:Nb&& -e&&e.skeleton&&e.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:I.maxMorphTargets,maxMorphNormals:I.maxMorphNormals,maxDirLights:f,maxPointLights:g,maxSpotLights:h,maxHemiLights:k,maxShadows:x,shadowMapEnabled:I.shadowMapEnabled&&e.receiveShadow&&0<x,shadowMapType:I.shadowMapType,shadowMapDebug:I.shadowMapDebug,shadowMapCascade:I.shadowMapCascade,alphaTest:d.alphaTest,metal:d.metal,wrapAround:d.wrapAround,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side=== -THREE.BackSide},N=[];m?N.push(m):(N.push(d.fragmentShader),N.push(d.vertexShader));if(void 0!==d.defines)for(var O in d.defines)N.push(O),N.push(d.defines[O]);for(O in K)N.push(O),N.push(K[O]);for(var W=N.join(),pa,ta=0,Za=Xa.length;ta<Za;ta++){var Fa=Xa[ta];if(Fa.code===W){pa=Fa;pa.usedTimes++;break}}void 0===pa&&(pa=new THREE.WebGLProgram(I,W,d,K),Xa.push(pa),I.info.memory.programs=Xa.length);d.program=pa;var Ta=pa.attributes;if(d.morphTargets){d.numSupportedMorphTargets=0;for(var aa,Ga="morphTarget", -za=0;za<I.maxMorphTargets;za++)aa=Ga+za,0<=Ta[aa]&&d.numSupportedMorphTargets++}if(d.morphNormals)for(d.numSupportedMorphNormals=0,Ga="morphNormal",za=0;za<I.maxMorphNormals;za++)aa=Ga+za,0<=Ta[aa]&&d.numSupportedMorphNormals++;d.uniformsList=[];for(var ea in d.__webglShader.uniforms){var tb=d.program.uniforms[ea];tb&&d.uniformsList.push([d.__webglShader.uniforms[ea],tb])}d.needsUpdate=!1}d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(I.maxMorphTargets)); -var qa=!1,eb=!1,ya=!1,xa=d.program,ha=xa.uniforms,P=d.__webglShader.uniforms;xa.id!==Wb&&(l.useProgram(xa.program),Wb=xa.id,ya=eb=qa=!0);d.id!==Hb&&(-1===Hb&&(ya=!0),Hb=d.id,eb=!0);if(qa||a!==Ib)l.uniformMatrix4fv(ha.projectionMatrix,!1,a.projectionMatrix.elements),X&&l.uniform1f(ha.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Ib&&(Ib=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==ha.cameraPosition&&(Da.setFromMatrixPosition(a.matrixWorld),l.uniform3f(ha.cameraPosition, -Da.x,Da.y,Da.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==ha.viewMatrix&&l.uniformMatrix4fv(ha.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(e.bindMatrix&&null!==ha.bindMatrix&&l.uniformMatrix4fv(ha.bindMatrix,!1,e.bindMatrix.elements),e.bindMatrixInverse&&null!==ha.bindMatrixInverse&&l.uniformMatrix4fv(ha.bindMatrixInverse,!1,e.bindMatrixInverse.elements), -Nb&&e.skeleton&&e.skeleton.useVertexTexture){if(null!==ha.boneTexture){var $a=z();l.uniform1i(ha.boneTexture,$a);I.setTexture(e.skeleton.boneTexture,$a)}null!==ha.boneTextureWidth&&l.uniform1i(ha.boneTextureWidth,e.skeleton.boneTextureWidth);null!==ha.boneTextureHeight&&l.uniform1i(ha.boneTextureHeight,e.skeleton.boneTextureHeight)}else e.skeleton&&e.skeleton.boneMatrices&&null!==ha.boneGlobalMatrices&&l.uniformMatrix4fv(ha.boneGlobalMatrices,!1,e.skeleton.boneMatrices);if(eb){c&&d.fog&&(P.fogColor.value= -c.color,c instanceof THREE.Fog?(P.fogNear.value=c.near,P.fogFar.value=c.far):c instanceof THREE.FogExp2&&(P.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Ob){var ya=!0,fa,fb,Y,Ma=0,Sa=0,Ya=0,Aa,Ha,hb,na,ab,jb,la=nc,Na=la.directional.colors,Ua=la.directional.positions,mb=la.point.colors,kb=la.point.positions,sb=la.point.distances,Va=la.spot.colors,Ia=la.spot.positions,nb=la.spot.distances,Oa=la.spot.directions,ia=la.spot.anglesCos, -ra=la.spot.exponents,J=la.hemi.skyColors,Ba=la.hemi.groundColors,bb=la.hemi.positions,wb=0,ob=0,Pa=0,Ca=0,cb=0,Ka=0,La=0,ib=0,xb=0,pb=0,B=0,db=0;fa=0;for(fb=b.length;fa<fb;fa++)Y=b[fa],Y.onlyShadow||(Aa=Y.color,na=Y.intensity,jb=Y.distance,Y instanceof THREE.AmbientLight?Y.visible&&(I.gammaInput?(Ma+=Aa.r*Aa.r,Sa+=Aa.g*Aa.g,Ya+=Aa.b*Aa.b):(Ma+=Aa.r,Sa+=Aa.g,Ya+=Aa.b)):Y instanceof THREE.DirectionalLight?(cb+=1,Y.visible&&(ma.setFromMatrixPosition(Y.matrixWorld),Da.setFromMatrixPosition(Y.target.matrixWorld), -ma.sub(Da),ma.normalize(),xb=3*wb,Ua[xb]=ma.x,Ua[xb+1]=ma.y,Ua[xb+2]=ma.z,I.gammaInput?E(Na,xb,Aa,na*na):w(Na,xb,Aa,na),wb+=1)):Y instanceof THREE.PointLight?(Ka+=1,Y.visible&&(pb=3*ob,I.gammaInput?E(mb,pb,Aa,na*na):w(mb,pb,Aa,na),Da.setFromMatrixPosition(Y.matrixWorld),kb[pb]=Da.x,kb[pb+1]=Da.y,kb[pb+2]=Da.z,sb[ob]=jb,ob+=1)):Y instanceof THREE.SpotLight?(La+=1,Y.visible&&(B=3*Pa,I.gammaInput?E(Va,B,Aa,na*na):w(Va,B,Aa,na),ma.setFromMatrixPosition(Y.matrixWorld),Ia[B]=ma.x,Ia[B+1]=ma.y,Ia[B+2]=ma.z, -nb[Pa]=jb,Da.setFromMatrixPosition(Y.target.matrixWorld),ma.sub(Da),ma.normalize(),Oa[B]=ma.x,Oa[B+1]=ma.y,Oa[B+2]=ma.z,ia[Pa]=Math.cos(Y.angle),ra[Pa]=Y.exponent,Pa+=1)):Y instanceof THREE.HemisphereLight&&(ib+=1,Y.visible&&(ma.setFromMatrixPosition(Y.matrixWorld),ma.normalize(),db=3*Ca,bb[db]=ma.x,bb[db+1]=ma.y,bb[db+2]=ma.z,Ha=Y.color,hb=Y.groundColor,I.gammaInput?(ab=na*na,E(J,db,Ha,ab),E(Ba,db,hb,ab)):(w(J,db,Ha,na),w(Ba,db,hb,na)),Ca+=1)));fa=3*wb;for(fb=Math.max(Na.length,3*cb);fa<fb;fa++)Na[fa]= -0;fa=3*ob;for(fb=Math.max(mb.length,3*Ka);fa<fb;fa++)mb[fa]=0;fa=3*Pa;for(fb=Math.max(Va.length,3*La);fa<fb;fa++)Va[fa]=0;fa=3*Ca;for(fb=Math.max(J.length,3*ib);fa<fb;fa++)J[fa]=0;fa=3*Ca;for(fb=Math.max(Ba.length,3*ib);fa<fb;fa++)Ba[fa]=0;la.directional.length=wb;la.point.length=ob;la.spot.length=Pa;la.hemi.length=Ca;la.ambient[0]=Ma;la.ambient[1]=Sa;la.ambient[2]=Ya;Ob=!1}if(ya){var sa=nc;P.ambientLightColor.value=sa.ambient;P.directionalLightColor.value=sa.directional.colors;P.directionalLightDirection.value= -sa.directional.positions;P.pointLightColor.value=sa.point.colors;P.pointLightPosition.value=sa.point.positions;P.pointLightDistance.value=sa.point.distances;P.spotLightColor.value=sa.spot.colors;P.spotLightPosition.value=sa.spot.positions;P.spotLightDistance.value=sa.spot.distances;P.spotLightDirection.value=sa.spot.directions;P.spotLightAngleCos.value=sa.spot.anglesCos;P.spotLightExponent.value=sa.spot.exponents;P.hemisphereLightSkyColor.value=sa.hemi.skyColors;P.hemisphereLightGroundColor.value= -sa.hemi.groundColors;P.hemisphereLightDirection.value=sa.hemi.positions;F(P,!0)}else F(P,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){P.opacity.value=d.opacity;I.gammaInput?P.diffuse.value.copyGammaToLinear(d.color):P.diffuse.value=d.color;P.map.value=d.map;P.lightMap.value=d.lightMap;P.specularMap.value=d.specularMap;P.alphaMap.value=d.alphaMap;d.bumpMap&&(P.bumpMap.value=d.bumpMap,P.bumpScale.value=d.bumpScale);d.normalMap&& -(P.normalMap.value=d.normalMap,P.normalScale.value.copy(d.normalScale));var oa;d.map?oa=d.map:d.specularMap?oa=d.specularMap:d.normalMap?oa=d.normalMap:d.bumpMap?oa=d.bumpMap:d.alphaMap&&(oa=d.alphaMap);if(void 0!==oa){var ub=oa.offset,zb=oa.repeat;P.offsetRepeat.value.set(ub.x,ub.y,zb.x,zb.y)}P.envMap.value=d.envMap;P.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;P.reflectivity.value=d.reflectivity;P.refractionRatio.value=d.refractionRatio}d instanceof THREE.LineBasicMaterial? -(P.diffuse.value=d.color,P.opacity.value=d.opacity):d instanceof THREE.LineDashedMaterial?(P.diffuse.value=d.color,P.opacity.value=d.opacity,P.dashSize.value=d.dashSize,P.totalSize.value=d.dashSize+d.gapSize,P.scale.value=d.scale):d instanceof THREE.PointCloudMaterial?(P.psColor.value=d.color,P.opacity.value=d.opacity,P.size.value=d.size,P.scale.value=Q.height/2,P.map.value=d.map):d instanceof THREE.MeshPhongMaterial?(P.shininess.value=d.shininess,I.gammaInput?(P.ambient.value.copyGammaToLinear(d.ambient), -P.emissive.value.copyGammaToLinear(d.emissive),P.specular.value.copyGammaToLinear(d.specular)):(P.ambient.value=d.ambient,P.emissive.value=d.emissive,P.specular.value=d.specular),d.wrapAround&&P.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshLambertMaterial?(I.gammaInput?(P.ambient.value.copyGammaToLinear(d.ambient),P.emissive.value.copyGammaToLinear(d.emissive)):(P.ambient.value=d.ambient,P.emissive.value=d.emissive),d.wrapAround&&P.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshDepthMaterial? -(P.mNear.value=a.near,P.mFar.value=a.far,P.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(P.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&P.shadowMatrix)for(var Ab=0,vb=0,Xb=b.length;vb<Xb;vb++){var lb=b[vb];lb.castShadow&&(lb instanceof THREE.SpotLight||lb instanceof THREE.DirectionalLight&&!lb.shadowCascade)&&(P.shadowMap.value[Ab]=lb.shadowMap,P.shadowMapSize.value[Ab]=lb.shadowMapSize,P.shadowMatrix.value[Ab]=lb.shadowMatrix,P.shadowDarkness.value[Ab]=lb.shadowDarkness, -P.shadowBias.value[Ab]=lb.shadowBias,Ab++)}for(var Cb=d.uniformsList,V,Ja,Wa,Db=0,Pb=Cb.length;Db<Pb;Db++){var $=Cb[Db][0];if(!1!==$.needsUpdate){var Eb=$.type,R=$.value,S=Cb[Db][1];switch(Eb){case "1i":l.uniform1i(S,R);break;case "1f":l.uniform1f(S,R);break;case "2f":l.uniform2f(S,R[0],R[1]);break;case "3f":l.uniform3f(S,R[0],R[1],R[2]);break;case "4f":l.uniform4f(S,R[0],R[1],R[2],R[3]);break;case "1iv":l.uniform1iv(S,R);break;case "3iv":l.uniform3iv(S,R);break;case "1fv":l.uniform1fv(S,R);break; -case "2fv":l.uniform2fv(S,R);break;case "3fv":l.uniform3fv(S,R);break;case "4fv":l.uniform4fv(S,R);break;case "Matrix3fv":l.uniformMatrix3fv(S,!1,R);break;case "Matrix4fv":l.uniformMatrix4fv(S,!1,R);break;case "i":l.uniform1i(S,R);break;case "f":l.uniform1f(S,R);break;case "v2":l.uniform2f(S,R.x,R.y);break;case "v3":l.uniform3f(S,R.x,R.y,R.z);break;case "v4":l.uniform4f(S,R.x,R.y,R.z,R.w);break;case "c":l.uniform3f(S,R.r,R.g,R.b);break;case "iv1":l.uniform1iv(S,R);break;case "iv":l.uniform3iv(S,R); -break;case "fv1":l.uniform1fv(S,R);break;case "fv":l.uniform3fv(S,R);break;case "v2v":void 0===$._array&&($._array=new Float32Array(2*R.length));for(var Z=0,Ea=R.length;Z<Ea;Z++)Wa=2*Z,$._array[Wa]=R[Z].x,$._array[Wa+1]=R[Z].y;l.uniform2fv(S,$._array);break;case "v3v":void 0===$._array&&($._array=new Float32Array(3*R.length));Z=0;for(Ea=R.length;Z<Ea;Z++)Wa=3*Z,$._array[Wa]=R[Z].x,$._array[Wa+1]=R[Z].y,$._array[Wa+2]=R[Z].z;l.uniform3fv(S,$._array);break;case "v4v":void 0===$._array&&($._array=new Float32Array(4* -R.length));Z=0;for(Ea=R.length;Z<Ea;Z++)Wa=4*Z,$._array[Wa]=R[Z].x,$._array[Wa+1]=R[Z].y,$._array[Wa+2]=R[Z].z,$._array[Wa+3]=R[Z].w;l.uniform4fv(S,$._array);break;case "m3":l.uniformMatrix3fv(S,!1,R.elements);break;case "m3v":void 0===$._array&&($._array=new Float32Array(9*R.length));Z=0;for(Ea=R.length;Z<Ea;Z++)R[Z].flattenToArrayOffset($._array,9*Z);l.uniformMatrix3fv(S,!1,$._array);break;case "m4":l.uniformMatrix4fv(S,!1,R.elements);break;case "m4v":void 0===$._array&&($._array=new Float32Array(16* -R.length));Z=0;for(Ea=R.length;Z<Ea;Z++)R[Z].flattenToArrayOffset($._array,16*Z);l.uniformMatrix4fv(S,!1,$._array);break;case "t":V=R;Ja=z();l.uniform1i(S,Ja);if(!V)continue;if(V instanceof THREE.CubeTexture||V.image instanceof Array&&6===V.image.length){var ka=V,Bb=Ja;if(6===ka.image.length)if(ka.needsUpdate){ka.image.__webglTextureCube||(ka.addEventListener("dispose",Jb),ka.image.__webglTextureCube=l.createTexture(),I.info.memory.textures++);l.activeTexture(l.TEXTURE0+Bb);l.bindTexture(l.TEXTURE_CUBE_MAP, -ka.image.__webglTextureCube);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,ka.flipY);for(var Fb=ka instanceof THREE.CompressedTexture,ba=ka.image[0]instanceof THREE.DataTexture,gb=[],ua=0;6>ua;ua++)gb[ua]=!I.autoScaleCubemaps||Fb||ba?ba?ka.image[ua].image:ka.image[ua]:M(ka.image[ua],Ec);var Qb=gb[0],Rb=THREE.Math.isPowerOfTwo(Qb.width)&&THREE.Math.isPowerOfTwo(Qb.height),qb=T(ka.format),Sb=T(ka.type);U(l.TEXTURE_CUBE_MAP,ka,Rb);for(ua=0;6>ua;ua++)if(Fb)for(var yb,Gb=gb[ua].mipmaps,rb=0,Yb=Gb.length;rb<Yb;rb++)yb= -Gb[rb],ka.format!==THREE.RGBAFormat&&ka.format!==THREE.RGBFormat?-1<oc().indexOf(qb)?l.compressedTexImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+ua,rb,qb,yb.width,yb.height,0,yb.data):console.warn("Attempt to load unsupported compressed texture format"):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+ua,rb,qb,yb.width,yb.height,0,qb,Sb,yb.data);else ba?l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+ua,0,qb,gb[ua].width,gb[ua].height,0,qb,Sb,gb[ua].data):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+ua,0,qb,qb,Sb,gb[ua]); -ka.generateMipmaps&&Rb&&l.generateMipmap(l.TEXTURE_CUBE_MAP);ka.needsUpdate=!1;if(ka.onUpdate)ka.onUpdate()}else l.activeTexture(l.TEXTURE0+Bb),l.bindTexture(l.TEXTURE_CUBE_MAP,ka.image.__webglTextureCube)}else if(V instanceof THREE.WebGLRenderTargetCube){var Zb=V;l.activeTexture(l.TEXTURE0+Ja);l.bindTexture(l.TEXTURE_CUBE_MAP,Zb.__webglTexture)}else I.setTexture(V,Ja);break;case "tv":void 0===$._array&&($._array=[]);Z=0;for(Ea=$.value.length;Z<Ea;Z++)$._array[Z]=z();l.uniform1iv(S,$._array);Z=0; -for(Ea=$.value.length;Z<Ea;Z++)V=$.value[Z],Ja=$._array[Z],V&&I.setTexture(V,Ja);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Eb)}}}}l.uniformMatrix4fv(ha.modelViewMatrix,!1,e._modelViewMatrix.elements);ha.normalMatrix&&l.uniformMatrix3fv(ha.normalMatrix,!1,e._normalMatrix.elements);null!==ha.modelMatrix&&l.uniformMatrix4fv(ha.modelMatrix,!1,e.matrixWorld.elements);return xa}function F(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightColor.needsUpdate=b;a.directionalLightDirection.needsUpdate= -b;a.pointLightColor.needsUpdate=b;a.pointLightPosition.needsUpdate=b;a.pointLightDistance.needsUpdate=b;a.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate=b;a.spotLightAngleCos.needsUpdate=b;a.spotLightExponent.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function z(){var a=Mb;a>=pc&&console.warn("WebGLRenderer: trying to use "+ -a+" texture units while this GPU supports only "+pc);Mb+=1;return a}function G(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getNormalMatrix(a._modelViewMatrix)}function E(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function w(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function D(a){a*=O;a!==qc&&(l.lineWidth(a),qc=a)}function A(a,b,c){rc!==a&&(a?l.enable(l.POLYGON_OFFSET_FILL):l.disable(l.POLYGON_OFFSET_FILL),rc=a);!a||sc===b&&tc===c|| -(l.polygonOffset(b,c),sc=b,tc=c)}function U(a,b,c){c?(l.texParameteri(a,l.TEXTURE_WRAP_S,T(b.wrapS)),l.texParameteri(a,l.TEXTURE_WRAP_T,T(b.wrapT)),l.texParameteri(a,l.TEXTURE_MAG_FILTER,T(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,T(b.minFilter))):(l.texParameteri(a,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(a,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT is set to THREE.ClampToEdgeWrapping. ( "+ -b.sourceFile+" )"),l.texParameteri(a,l.TEXTURE_MAG_FILTER,N(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,N(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter is set to THREE.LinearFilter or THREE.NearestFilter. ( "+b.sourceFile+" )"));(c=aa.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&(l.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT, -Math.min(b.anisotropy,I.getMaxAnisotropy())),b.__oldAnisotropy=b.anisotropy)}function M(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);console.log("THREE.WebGLRenderer:",a,"is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height+".");return d}return a}function K(a,b){l.bindRenderbuffer(l.RENDERBUFFER, -a);b.depthBuffer&&!b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_COMPONENT16,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_STENCIL,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_STENCIL_ATTACHMENT,l.RENDERBUFFER,a)):l.renderbufferStorage(l.RENDERBUFFER,l.RGBA4,b.width,b.height)}function L(a){a instanceof THREE.WebGLRenderTargetCube?(l.bindTexture(l.TEXTURE_CUBE_MAP, -a.__webglTexture),l.generateMipmap(l.TEXTURE_CUBE_MAP),l.bindTexture(l.TEXTURE_CUBE_MAP,null)):(l.bindTexture(l.TEXTURE_2D,a.__webglTexture),l.generateMipmap(l.TEXTURE_2D),l.bindTexture(l.TEXTURE_2D,null))}function N(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?l.NEAREST:l.LINEAR}function T(a){var b;if(a===THREE.RepeatWrapping)return l.REPEAT;if(a===THREE.ClampToEdgeWrapping)return l.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return l.MIRRORED_REPEAT; -if(a===THREE.NearestFilter)return l.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return l.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return l.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return l.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return l.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return l.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return l.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return l.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return l.UNSIGNED_SHORT_5_5_5_1; -if(a===THREE.UnsignedShort565Type)return l.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return l.BYTE;if(a===THREE.ShortType)return l.SHORT;if(a===THREE.UnsignedShortType)return l.UNSIGNED_SHORT;if(a===THREE.IntType)return l.INT;if(a===THREE.UnsignedIntType)return l.UNSIGNED_INT;if(a===THREE.FloatType)return l.FLOAT;if(a===THREE.AlphaFormat)return l.ALPHA;if(a===THREE.RGBFormat)return l.RGB;if(a===THREE.RGBAFormat)return l.RGBA;if(a===THREE.LuminanceFormat)return l.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return l.LUMINANCE_ALPHA; -if(a===THREE.AddEquation)return l.FUNC_ADD;if(a===THREE.SubtractEquation)return l.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return l.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return l.ZERO;if(a===THREE.OneFactor)return l.ONE;if(a===THREE.SrcColorFactor)return l.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return l.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return l.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return l.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return l.DST_ALPHA; -if(a===THREE.OneMinusDstAlphaFactor)return l.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return l.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return l.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return l.SRC_ALPHA_SATURATE;b=aa.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT; -if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=aa.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=aa.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT; -if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var Q=void 0!==a.canvas?a.canvas:document.createElement("canvas"),W=void 0!==a.context?a.context:null,O=1,ga=void 0!==a.precision?a.precision:"highp",ea=void 0!==a.alpha?a.alpha:!1,xa=void 0!==a.depth?a.depth:!0,H=void 0!==a.stencil?a.stencil:!0,$a=void 0!==a.antialias?a.antialias:!1,qa=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,ya=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer: -!1,X=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,ta=new THREE.Color(0),Za=0,pa=[],Fa={},Ga=[],Ta=[],za=[],tb=[],eb=[];this.domElement=Q;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.gammaOutput=this.gammaInput=!1;this.shadowMapType=THREE.PCFShadowMap;this.shadowMapCullFace=THREE.CullFaceFront;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps= -!0;this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var I=this,Xa=[],Wb=null,uc=null,Hb=-1,Sa="",Ib=null,Mb=0,zb=-1,Xb=-1,Yb=-1,Zb=-1,ec=-1,fc=-1,gc=-1,hc=-1,rc=null,sc=null,tc=null,qc=null,hb=0,Ya=0,ib=Q.width,jb=Q.height,vc=0,wc=0,kb=new Uint8Array(16),Ma=new Uint8Array(16),ub=new THREE.Frustum,vb=new THREE.Matrix4;new THREE.Matrix4;var Da=new THREE.Vector3,ma=new THREE.Vector3,Ob=!0,nc={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]}, -point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},l;try{var xc={alpha:ea,depth:xa,stencil:H,antialias:$a,premultipliedAlpha:qa,preserveDrawingBuffer:ya};l=W||Q.getContext("webgl",xc)||Q.getContext("experimental-webgl",xc);if(null===l){if(null!==Q.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context."; -}Q.addEventListener("webglcontextlost",function(a){a.preventDefault();yc();zc();Fa={}},!1)}catch(Fc){console.error(Fc)}void 0===l.getShaderPrecisionFormat&&(l.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var aa=new THREE.WebGLExtensions(l);aa.get("OES_texture_float");aa.get("OES_texture_float_linear");aa.get("OES_standard_derivatives");X&&aa.get("EXT_frag_depth");var zc=function(){l.clearColor(0,0,0,1);l.clearDepth(1);l.clearStencil(0);l.enable(l.DEPTH_TEST);l.depthFunc(l.LEQUAL); -l.frontFace(l.CCW);l.cullFace(l.BACK);l.enable(l.CULL_FACE);l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA);l.viewport(hb,Ya,ib,jb);l.clearColor(ta.r,ta.g,ta.b,Za)},yc=function(){Ib=Wb=null;Xb=zb=hc=gc=Yb=-1;Sa="";Hb=-1;Ob=!0;for(var a=0;a<Ma.length;a++)Ma[a]=0};zc();this.context=l;var pc=l.getParameter(l.MAX_TEXTURE_IMAGE_UNITS),Gc=l.getParameter(l.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Hc=l.getParameter(l.MAX_TEXTURE_SIZE),Ec=l.getParameter(l.MAX_CUBE_MAP_TEXTURE_SIZE), -Vb=0<Gc,Nb=Vb&&aa.get("OES_texture_float"),Ic=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.HIGH_FLOAT),Jc=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.LOW_FLOAT);var Kc=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.HIGH_FLOAT),Lc=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.LOW_FLOAT);var oc=function(){var a;return function(){if(void 0!==a)return a;a=[];if(aa.get("WEBGL_compressed_texture_pvrtc")|| -aa.get("WEBGL_compressed_texture_s3tc"))for(var b=l.getParameter(l.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]);return a}}(),Mc=0<Ic.precision&&0<Kc.precision,Ac=0<Jc.precision&&0<Lc.precision;"highp"!==ga||Mc||(Ac?(ga="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(ga="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==ga||Ac||(ga="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp.")); -var Nc=new THREE.ShadowMapPlugin(this,pa,Fa,Ga),Oc=new THREE.SpritePlugin(this,tb),Pc=new THREE.LensFlarePlugin(this,eb);this.getContext=function(){return l};this.forceContextLoss=function(){aa.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return Vb};this.supportsFloatTextures=function(){return aa.get("OES_texture_float")};this.supportsStandardDerivatives=function(){return aa.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){return aa.get("WEBGL_compressed_texture_s3tc")}; -this.supportsCompressedTexturePVRTC=function(){return aa.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){return aa.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=aa.get("EXT_texture_filter_anisotropic");return a=null!==b?l.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return ga};this.getPixelRatio=function(){return O};this.setPixelRatio=function(a){O=a};this.setSize=function(a, -b,c){Q.width=a*O;Q.height=b*O;!1!==c&&(Q.style.width=a+"px",Q.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){hb=a*O;Ya=b*O;ib=c*O;jb=d*O;l.viewport(hb,Ya,ib,jb)};this.setScissor=function(a,b,c,d){l.scissor(a*O,b*O,c*O,d*O)};this.enableScissorTest=function(a){a?l.enable(l.SCISSOR_TEST):l.disable(l.SCISSOR_TEST)};this.getClearColor=function(){return ta};this.setClearColor=function(a,b){ta.set(a);Za=void 0!==b?b:1;l.clearColor(ta.r,ta.g,ta.b,Za)};this.getClearAlpha= -function(){return Za};this.setClearAlpha=function(a){Za=a;l.clearColor(ta.r,ta.g,ta.b,Za)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=l.COLOR_BUFFER_BIT;if(void 0===b||b)d|=l.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=l.STENCIL_BUFFER_BIT;l.clear(d)};this.clearColor=function(){l.clear(l.COLOR_BUFFER_BIT)};this.clearDepth=function(){l.clear(l.DEPTH_BUFFER_BIT)};this.clearStencil=function(){l.clear(l.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b, -c,d)};this.resetGLState=yc;var ic=function(a){a.target.traverse(function(a){a.removeEventListener("remove",ic);if(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete Fa[a.id];else if(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)for(var b=Ga,c=b.length-1;0<=c;c--)b[c].object===a&&b.splice(c,1);delete a.__webglInit;delete a._modelViewMatrix;delete a._normalMatrix;delete a.__webglActive})},jc=function(a){a=a.target;a.removeEventListener("dispose", -jc);delete a.__webglInit;if(a instanceof THREE.BufferGeometry){for(var b in a.attributes){var c=a.attributes[b];void 0!==c.buffer&&(l.deleteBuffer(c.buffer),delete c.buffer)}I.info.memory.geometries--}else if(b=sb[a.id],void 0!==b){for(var c=0,d=b.length;c<d;c++){var e=b[c];if(void 0!==e.numMorphTargets){for(var f=0,g=e.numMorphTargets;f<g;f++)l.deleteBuffer(e.__webglMorphTargetsBuffers[f]);delete e.__webglMorphTargetsBuffers}if(void 0!==e.numMorphNormals){f=0;for(g=e.numMorphNormals;f<g;f++)l.deleteBuffer(e.__webglMorphNormalsBuffers[f]); -delete e.__webglMorphNormalsBuffers}Bc(e)}delete sb[a.id]}else Bc(a);Sa=""},Jb=function(a){a=a.target;a.removeEventListener("dispose",Jb);a.image&&a.image.__webglTextureCube?(l.deleteTexture(a.image.__webglTextureCube),delete a.image.__webglTextureCube):void 0!==a.__webglInit&&(l.deleteTexture(a.__webglTexture),delete a.__webglTexture,delete a.__webglInit);I.info.memory.textures--},Cc=function(a){a=a.target;a.removeEventListener("dispose",Cc);if(a&&void 0!==a.__webglTexture){l.deleteTexture(a.__webglTexture); -delete a.__webglTexture;if(a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)l.deleteFramebuffer(a.__webglFramebuffer[b]),l.deleteRenderbuffer(a.__webglRenderbuffer[b]);else l.deleteFramebuffer(a.__webglFramebuffer),l.deleteRenderbuffer(a.__webglRenderbuffer);delete a.__webglFramebuffer;delete a.__webglRenderbuffer}I.info.memory.textures--},mc=function(a){a=a.target;a.removeEventListener("dispose",mc);lc(a)},Bc=function(a){for(var b="__webglVertexBuffer __webglNormalBuffer __webglTangentBuffer __webglColorBuffer __webglUVBuffer __webglUV2Buffer __webglSkinIndicesBuffer __webglSkinWeightsBuffer __webglFaceBuffer __webglLineBuffer __webglLineDistanceBuffer".split(" "), -c=0,d=b.length;c<d;c++){var e=b[c];void 0!==a[e]&&(l.deleteBuffer(a[e]),delete a[e])}if(void 0!==a.__webglCustomAttributesList){for(e in a.__webglCustomAttributesList)l.deleteBuffer(a.__webglCustomAttributesList[e].buffer);delete a.__webglCustomAttributesList}I.info.memory.geometries--},lc=function(a){var b=a.program.program;if(void 0!==b){a.program=void 0;var c,d,e=!1;a=0;for(c=Xa.length;a<c;a++)if(d=Xa[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=Xa.length;a< -c;a++)d=Xa[a],d.program!==b&&e.push(d);Xa=e;l.deleteProgram(b);I.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){f();a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=l.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=l.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=l.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=l.createBuffer());a.hasPositions&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglVertexBuffer), -l.bufferData(l.ARRAY_BUFFER,a.positionArray,l.DYNAMIC_DRAW),g(b.attributes.position),l.vertexAttribPointer(b.attributes.position,3,l.FLOAT,!1,0,0));if(a.hasNormals){l.bindBuffer(l.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,e,k,m,n,p,q,r,t,s,v,u=3*a.count;for(v=0;v<u;v+=9)s=a.normalArray,d=s[v],e=s[v+1],k=s[v+2],m=s[v+3],p=s[v+4],r=s[v+5],n=s[v+6],q=s[v+7],t=s[v+8],d=(d+m+n)/3,e=(e+p+q)/3,k=(k+r+t)/3,s[v]=d,s[v+1]=e,s[v+2]=k,s[v+3]=d,s[v+4]=e,s[v+5]=k,s[v+6]=d,s[v+ -7]=e,s[v+8]=k}l.bufferData(l.ARRAY_BUFFER,a.normalArray,l.DYNAMIC_DRAW);g(b.attributes.normal);l.vertexAttribPointer(b.attributes.normal,3,l.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglUvBuffer),l.bufferData(l.ARRAY_BUFFER,a.uvArray,l.DYNAMIC_DRAW),g(b.attributes.uv),l.vertexAttribPointer(b.attributes.uv,2,l.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,a.colorArray,l.DYNAMIC_DRAW), -g(b.attributes.color),l.vertexAttribPointer(b.attributes.color,3,l.FLOAT,!1,0,0));h();l.drawArrays(l.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,g,h){if(!1!==d.visible)if(v(h),a=x(a,b,c,d,h),b=!1,c="direct_"+g.id+"_"+a.id+"_"+(d.wireframe?1:0),c!==Sa&&(Sa=c,b=!0),b&&f(),h instanceof THREE.Mesh){h=!0===d.wireframe?l.LINES:l.TRIANGLES;var k=g.attributes.index;if(k){var m,n;k.array instanceof Uint32Array&&aa.get("OES_element_index_uint")?(m=l.UNSIGNED_INT,n=4):(m=l.UNSIGNED_SHORT, -n=2);c=g.offsets;if(0===c.length)b&&(e(d,a,g,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,k.array.length,m,0),I.info.render.calls++,I.info.render.vertices+=k.array.length,I.info.render.faces+=k.array.length/3;else{b=!0;for(var p=0,q=c.length;p<q;p++){var s=c[p].index;b&&(e(d,a,g,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer));l.drawElements(h,c[p].count,m,c[p].start*n);I.info.render.calls++;I.info.render.vertices+=c[p].count;I.info.render.faces+=c[p].count/3}}}else b&&e(d, -a,g,0),d=g.attributes.position,l.drawArrays(h,0,d.array.length/3),I.info.render.calls++,I.info.render.vertices+=d.array.length/3,I.info.render.faces+=d.array.length/9}else if(h instanceof THREE.PointCloud)if(h=l.POINTS,k=g.attributes.index)if(k.array instanceof Uint32Array&&aa.get("OES_element_index_uint")?(m=l.UNSIGNED_INT,n=4):(m=l.UNSIGNED_SHORT,n=2),c=g.offsets,0===c.length)b&&(e(d,a,g,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,k.array.length,m,0),I.info.render.calls++, -I.info.render.points+=k.array.length;else for(1<c.length&&(b=!0),p=0,q=c.length;p<q;p++)s=c[p].index,b&&(e(d,a,g,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,c[p].count,m,c[p].start*n),I.info.render.calls++,I.info.render.points+=c[p].count;else if(b&&e(d,a,g,0),d=g.attributes.position,c=g.offsets,0===c.length)l.drawArrays(h,0,d.array.length/3),I.info.render.calls++,I.info.render.points+=d.array.length/3;else for(p=0,q=c.length;p<q;p++)l.drawArrays(h,c[p].index,c[p].count),I.info.render.calls++, -I.info.render.points+=c[p].count;else if(h instanceof THREE.Line)if(h=h.mode===THREE.LineStrip?l.LINE_STRIP:l.LINES,D(d.linewidth),k=g.attributes.index)if(k.array instanceof Uint32Array?(m=l.UNSIGNED_INT,n=4):(m=l.UNSIGNED_SHORT,n=2),c=g.offsets,0===c.length)b&&(e(d,a,g,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,k.array.length,m,0),I.info.render.calls++,I.info.render.vertices+=k.array.length;else for(1<c.length&&(b=!0),p=0,q=c.length;p<q;p++)s=c[p].index,b&&(e(d,a,g,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER, -k.buffer)),l.drawElements(h,c[p].count,m,c[p].start*n),I.info.render.calls++,I.info.render.vertices+=c[p].count;else if(b&&e(d,a,g,0),d=g.attributes.position,c=g.offsets,0===c.length)l.drawArrays(h,0,d.array.length/3),I.info.render.calls++,I.info.render.vertices+=d.array.length/3;else for(p=0,q=c.length;p<q;p++)l.drawArrays(h,c[p].index,c[p].count),I.info.render.calls++,I.info.render.vertices+=c[p].count};this.renderBuffer=function(a,b,c,d,e,k){if(!1!==d.visible){v(k);c=x(a,b,c,d,k);b=c.attributes; -a=!1;c=e.id+"_"+c.id+"_"+(d.wireframe?1:0);c!==Sa&&(Sa=c,a=!0);a&&f();if(!d.morphTargets&&0<=b.position)a&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglVertexBuffer),g(b.position),l.vertexAttribPointer(b.position,3,l.FLOAT,!1,0,0));else if(k.morphTargetBase){c=d.program.attributes;-1!==k.morphTargetBase&&0<=c.position?(l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[k.morphTargetBase]),g(c.position),l.vertexAttribPointer(c.position,3,l.FLOAT,!1,0,0)):0<=c.position&&(l.bindBuffer(l.ARRAY_BUFFER, -e.__webglVertexBuffer),g(c.position),l.vertexAttribPointer(c.position,3,l.FLOAT,!1,0,0));if(k.morphTargetForcedOrder.length)for(var m=0,n=k.morphTargetForcedOrder,q=k.morphTargetInfluences,s;m<d.numSupportedMorphTargets&&m<n.length;)s=c["morphTarget"+m],0<=s&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[n[m]]),g(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0)),s=c["morphNormal"+m],0<=s&&d.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[n[m]]),g(s),l.vertexAttribPointer(s, -3,l.FLOAT,!1,0,0)),k.__webglMorphTargetInfluences[m]=q[n[m]],m++;else{n=[];q=k.morphTargetInfluences;m=0;for(s=q.length;m<s;m++)n.push([q[m],m]);n.length>d.numSupportedMorphTargets?(n.sort(p),n.length=d.numSupportedMorphTargets):n.length>d.numSupportedMorphNormals?n.sort(p):0===n.length&&n.push([0,0]);for(var m=0,r=d.numSupportedMorphTargets;m<r;m++)if(n[m]){var t=n[m][1];s=c["morphTarget"+m];0<=s&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[t]),g(s),l.vertexAttribPointer(s,3,l.FLOAT, -!1,0,0));s=c["morphNormal"+m];0<=s&&d.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[t]),g(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0));k.__webglMorphTargetInfluences[m]=q[t]}else k.__webglMorphTargetInfluences[m]=0}null!==d.program.uniforms.morphTargetInfluences&&l.uniform1fv(d.program.uniforms.morphTargetInfluences,k.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList)for(c=0,q=e.__webglCustomAttributesList.length;c<q;c++)n=e.__webglCustomAttributesList[c], -0<=b[n.buffer.belongsToAttribute]&&(l.bindBuffer(l.ARRAY_BUFFER,n.buffer),g(b[n.buffer.belongsToAttribute]),l.vertexAttribPointer(b[n.buffer.belongsToAttribute],n.size,l.FLOAT,!1,0,0));0<=b.color&&(0<k.geometry.colors.length||0<k.geometry.faces.length?(l.bindBuffer(l.ARRAY_BUFFER,e.__webglColorBuffer),g(b.color),l.vertexAttribPointer(b.color,3,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib3fv(b.color,d.defaultAttributeValues.color));0<=b.normal&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglNormalBuffer), -g(b.normal),l.vertexAttribPointer(b.normal,3,l.FLOAT,!1,0,0));0<=b.tangent&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglTangentBuffer),g(b.tangent),l.vertexAttribPointer(b.tangent,4,l.FLOAT,!1,0,0));0<=b.uv&&(k.geometry.faceVertexUvs[0]?(l.bindBuffer(l.ARRAY_BUFFER,e.__webglUVBuffer),g(b.uv),l.vertexAttribPointer(b.uv,2,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib2fv(b.uv,d.defaultAttributeValues.uv));0<=b.uv2&&(k.geometry.faceVertexUvs[1]?(l.bindBuffer(l.ARRAY_BUFFER,e.__webglUV2Buffer), -g(b.uv2),l.vertexAttribPointer(b.uv2,2,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib2fv(b.uv2,d.defaultAttributeValues.uv2));d.skinning&&0<=b.skinIndex&&0<=b.skinWeight&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),g(b.skinIndex),l.vertexAttribPointer(b.skinIndex,4,l.FLOAT,!1,0,0),l.bindBuffer(l.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),g(b.skinWeight),l.vertexAttribPointer(b.skinWeight,4,l.FLOAT,!1,0,0));0<=b.lineDistance&&(l.bindBuffer(l.ARRAY_BUFFER,e.__webglLineDistanceBuffer), -g(b.lineDistance),l.vertexAttribPointer(b.lineDistance,1,l.FLOAT,!1,0,0))}h();k instanceof THREE.Mesh?(k=e.__typeArray===Uint32Array?l.UNSIGNED_INT:l.UNSIGNED_SHORT,d.wireframe?(D(d.wireframeLinewidth),a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),l.drawElements(l.LINES,e.__webglLineCount,k,0)):(a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),l.drawElements(l.TRIANGLES,e.__webglFaceCount,k,0)),I.info.render.calls++,I.info.render.vertices+=e.__webglFaceCount,I.info.render.faces+= -e.__webglFaceCount/3):k instanceof THREE.Line?(k=k.mode===THREE.LineStrip?l.LINE_STRIP:l.LINES,D(d.linewidth),l.drawArrays(k,0,e.__webglLineCount),I.info.render.calls++):k instanceof THREE.PointCloud&&(l.drawArrays(l.POINTS,0,e.__webglParticleCount),I.info.render.calls++,I.info.render.points+=e.__webglParticleCount)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e=a.fog;Sa="";Hb=-1; -Ib=null;Ob=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();a.traverse(function(a){a instanceof THREE.SkinnedMesh&&a.skeleton.update()});b.matrixWorldInverse.getInverse(b.matrixWorld);vb.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);ub.setFromMatrix(vb);pa.length=0;Ta.length=0;za.length=0;tb.length=0;eb.length=0;q(a);!0===I.sortObjects&&(Ta.sort(k),za.sort(n));Nc.render(a,b);I.info.render.calls=0;I.info.render.vertices=0;I.info.render.faces=0;I.info.render.points= -0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);d=0;for(var f=Ga.length;d<f;d++){var g=Ga[d],h=g.object;h.visible&&(G(h,b),s(g))}a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),A(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),m(Ta,b,pa,e,!0,d),m(za,b,pa,e,!0,d),t(Ga,"",b,pa,e,!1,d)):(d=null, -this.setBlending(THREE.NoBlending),m(Ta,b,pa,e,!1,d),t(Ga,"opaque",b,pa,e,!1,d),m(za,b,pa,e,!0,d),t(Ga,"transparent",b,pa,e,!0,d));Oc.render(a,b);Pc.render(a,b,vc,wc);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&L(c);this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=x(a,b,c,d,e);Sa="";I.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,l,ub):e.render(function(a){I.renderBufferImmediate(a, -f,d)})};var sb={},kc=0,Dc={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointCloudMaterial:"particle_basic"};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?l.disable(l.CULL_FACE):(b===THREE.FrontFaceDirectionCW?l.frontFace(l.CW):l.frontFace(l.CCW),a===THREE.CullFaceBack?l.cullFace(l.BACK):a===THREE.CullFaceFront?l.cullFace(l.FRONT):l.cullFace(l.FRONT_AND_BACK), -l.enable(l.CULL_FACE))};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide;a=a.side===THREE.BackSide;zb!==b&&(b?l.disable(l.CULL_FACE):l.enable(l.CULL_FACE),zb=b);Xb!==a&&(a?l.frontFace(l.CW):l.frontFace(l.CCW),Xb=a)};this.setDepthTest=function(a){gc!==a&&(a?l.enable(l.DEPTH_TEST):l.disable(l.DEPTH_TEST),gc=a)};this.setDepthWrite=function(a){hc!==a&&(l.depthMask(a),hc=a)};this.setBlending=function(a,b,c,d){a!==Yb&&(a===THREE.NoBlending?l.disable(l.BLEND):a===THREE.AdditiveBlending? -(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.SRC_ALPHA,l.ONE)):a===THREE.SubtractiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.SRC_COLOR)):a===THREE.CustomBlending?l.enable(l.BLEND):(l.enable(l.BLEND),l.blendEquationSeparate(l.FUNC_ADD,l.FUNC_ADD),l.blendFuncSeparate(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA)),Yb= -a);if(a===THREE.CustomBlending){if(b!==Zb&&(l.blendEquation(T(b)),Zb=b),c!==ec||d!==fc)l.blendFunc(T(c),T(d)),ec=c,fc=d}else fc=ec=Zb=null};this.uploadTexture=function(a){void 0===a.__webglInit&&(a.__webglInit=!0,a.addEventListener("dispose",Jb),a.__webglTexture=l.createTexture(),I.info.memory.textures++);l.bindTexture(l.TEXTURE_2D,a.__webglTexture);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,a.flipY);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);l.pixelStorei(l.UNPACK_ALIGNMENT,a.unpackAlignment); -a.image=M(a.image,Hc);var b=a.image,c=THREE.Math.isPowerOfTwo(b.width)&&THREE.Math.isPowerOfTwo(b.height),d=T(a.format),e=T(a.type);U(l.TEXTURE_2D,a,c);var f=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<f.length&&c){for(var g=0,h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,0,d,b.width,b.height,0,d,e,b.data);else if(a instanceof THREE.CompressedTexture)for(g=0,h=f.length;g<h;g++)b=f[g],a.format!==THREE.RGBAFormat&& -a.format!==THREE.RGBFormat?-1<oc().indexOf(d)?l.compressedTexImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,b.data):console.warn("Attempt to load unsupported compressed texture format"):l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);else if(0<f.length&&c){g=0;for(h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,d,e,b);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,0,d,d,e,a.image);a.generateMipmaps&&c&&l.generateMipmap(l.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()}; -this.setTexture=function(a,b){l.activeTexture(l.TEXTURE0+b);a.needsUpdate?I.uploadTexture(a):l.bindTexture(l.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===a.__webglFramebuffer){void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",Cc);a.__webglTexture=l.createTexture();I.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height), -d=T(a.format),e=T(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];l.bindTexture(l.TEXTURE_CUBE_MAP,a.__webglTexture);U(l.TEXTURE_CUBE_MAP,a,c);for(var g=0;6>g;g++){a.__webglFramebuffer[g]=l.createFramebuffer();a.__webglRenderbuffer[g]=l.createRenderbuffer();l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+g,0,d,a.width,a.height,0,d,e,null);var f=a,h=l.TEXTURE_CUBE_MAP_POSITIVE_X+g;l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer[g]);l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0, -h,f.__webglTexture,0);K(a.__webglRenderbuffer[g],a)}c&&l.generateMipmap(l.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=l.createFramebuffer(),a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:l.createRenderbuffer(),l.bindTexture(l.TEXTURE_2D,a.__webglTexture),U(l.TEXTURE_2D,a,c),l.texImage2D(l.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=l.TEXTURE_2D,l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,d,a.__webglTexture, -0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_STENCIL_ATTACHMENT,l.RENDERBUFFER,a.__webglRenderbuffer):K(a.__webglRenderbuffer,a),c&&l.generateMipmap(l.TEXTURE_2D);b?l.bindTexture(l.TEXTURE_CUBE_MAP,null):l.bindTexture(l.TEXTURE_2D,null);l.bindRenderbuffer(l.RENDERBUFFER,null);l.bindFramebuffer(l.FRAMEBUFFER,null)}a? -(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=ib,a=jb,d=hb,e=Ya);b!==uc&&(l.bindFramebuffer(l.FRAMEBUFFER,b),l.viewport(d,e,c,a),uc=b);vc=c;wc=a};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};this.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")}; -this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")}}; +THREE.WebGLRenderer=function(a){function b(a){var b=a.geometry;a=a.material;var c=b.vertices.length;if(a.attributes){void 0===b.__webglCustomAttributesList&&(b.__webglCustomAttributesList=[]);for(var d in a.attributes){var e=a.attributes[d];if(!e.__webglInitialized||e.createUniqueBuffers){e.__webglInitialized=!0;var f=1;"v2"===e.type?f=2:"v3"===e.type?f=3:"v4"===e.type?f=4:"c"===e.type&&(f=3);e.size=f;e.array=new Float32Array(c*f);e.buffer=m.createBuffer();e.buffer.belongsToAttribute=d;e.needsUpdate= +!0}b.__webglCustomAttributesList.push(e)}}}function c(a,b){return a.material instanceof THREE.MeshFaceMaterial?a.material.materials[b.materialIndex]:a.material}function d(a,b,c,d){c=c.attributes;var e=b.attributes;b=b.attributesKeys;for(var f=0,g=b.length;f<g;f++){var h=b[f],k=e[h];if(0<=k){var n=c[h];void 0!==n?(h=n.itemSize,m.bindBuffer(m.ARRAY_BUFFER,n.buffer),W.enableAttribute(k),m.vertexAttribPointer(k,h,m.FLOAT,!1,0,d*h*4)):void 0!==a.defaultAttributeValues&&(2===a.defaultAttributeValues[h].length? +m.vertexAttrib2fv(k,a.defaultAttributeValues[h]):3===a.defaultAttributeValues[h].length&&m.vertexAttrib3fv(k,a.defaultAttributeValues[h]))}}W.disableUnusedAttributes()}function e(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function f(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function g(a, +b){return b[0]-a[0]}function h(a){if(!1!==a.visible){if(!(a instanceof THREE.Scene||a instanceof THREE.Group)){void 0===a.__webglInit&&(a.__webglInit=!0,a._modelViewMatrix=new THREE.Matrix4,a._normalMatrix=new THREE.Matrix3,a.addEventListener("removed",wb));var c=a.geometry;if(void 0!==c&&void 0===c.__webglInit)if(c.__webglInit=!0,c.addEventListener("dispose",jb),c instanceof THREE.BufferGeometry)B.info.memory.geometries++;else if(a instanceof THREE.Mesh)q(a,c);else if(a instanceof THREE.Line){if(void 0=== +c.__webglVertexBuffer){c.__webglVertexBuffer=m.createBuffer();c.__webglColorBuffer=m.createBuffer();c.__webglLineDistanceBuffer=m.createBuffer();B.info.memory.geometries++;var d=c.vertices.length;c.__vertexArray=new Float32Array(3*d);c.__colorArray=new Float32Array(3*d);c.__lineDistanceArray=new Float32Array(1*d);c.__webglLineCount=d;b(a);c.verticesNeedUpdate=!0;c.colorsNeedUpdate=!0;c.lineDistancesNeedUpdate=!0}}else a instanceof THREE.PointCloud&&void 0===c.__webglVertexBuffer&&(c.__webglVertexBuffer= +m.createBuffer(),c.__webglColorBuffer=m.createBuffer(),B.info.memory.geometries++,d=c.vertices.length,c.__vertexArray=new Float32Array(3*d),c.__colorArray=new Float32Array(3*d),c.__webglParticleCount=d,b(a),c.verticesNeedUpdate=!0,c.colorsNeedUpdate=!0);if(void 0===a.__webglActive)if(a.__webglActive=!0,a instanceof THREE.Mesh)if(c instanceof THREE.BufferGeometry)n(ba,c,a);else{if(c instanceof THREE.Geometry)for(var c=Ua[c.id],d=0,e=c.length;d<e;d++)n(ba,c[d],a)}else a instanceof THREE.Line||a instanceof +THREE.PointCloud?n(ba,c,a):(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)&&qa.push({id:null,object:a,opaque:null,transparent:null,z:0});if(a instanceof THREE.Light)ca.push(a);else if(a instanceof THREE.Sprite)Xa.push(a);else if(a instanceof THREE.LensFlare)Ya.push(a);else if((c=ba[a.id])&&(!1===a.frustumCulled||!0===cb.intersectsObject(a)))for(d=0,e=c.length;d<e;d++){var f=c[d],g=f,k=g.object,l=g.buffer,p=k.geometry,k=k.material;k instanceof THREE.MeshFaceMaterial?(k=k.materials[p instanceof +THREE.BufferGeometry?0:l.materialIndex],g.material=k,k.transparent?Qa.push(g):Ka.push(g)):k&&(g.material=k,k.transparent?Qa.push(g):Ka.push(g));f.render=!0;!0===B.sortObjects&&(wa.setFromMatrixPosition(a.matrixWorld),wa.applyProjection(db),f.z=wa.z)}}d=0;for(e=a.children.length;d<e;d++)h(a.children[d])}}function k(a,b,c,d,e){for(var f,g=0,h=a.length;g<h;g++){f=a[g];var k=f.object,m=f.buffer;w(k,b);if(e)f=e;else{f=f.material;if(!f)continue;u(f)}B.setMaterialFaces(f);m instanceof THREE.BufferGeometry? +B.renderBufferDirect(b,c,d,f,m,k):B.renderBuffer(b,c,d,f,m,k)}}function l(a,b,c,d,e,f){for(var g,h=0,k=a.length;h<k;h++){g=a[h];var m=g.object;if(m.visible){if(f)g=f;else{g=g[b];if(!g)continue;u(g)}B.renderImmediateObject(c,d,e,g,m)}}}function p(a){var b=a.object.material;b.transparent?(a.transparent=b,a.opaque=null):(a.opaque=b,a.transparent=null)}function q(a,b){var d=a.material,e=!1;if(void 0===Ua[b.id]||!0===b.groupsNeedUpdate){delete ba[a.id];for(var f=Ua,g=b.id,d=d instanceof THREE.MeshFaceMaterial, +h=da.get("OES_element_index_uint")?4294967296:65535,k,e={},l=b.morphTargets.length,p=b.morphNormals.length,q,s={},t=[],r=0,w=b.faces.length;r<w;r++){k=b.faces[r];var u=d?k.materialIndex:0;u in e||(e[u]={hash:u,counter:0});k=e[u].hash+"_"+e[u].counter;k in s||(q={id:Qb++,faces3:[],materialIndex:u,vertices:0,numMorphTargets:l,numMorphNormals:p},s[k]=q,t.push(q));s[k].vertices+3>h&&(e[u].counter+=1,k=e[u].hash+"_"+e[u].counter,k in s||(q={id:Qb++,faces3:[],materialIndex:u,vertices:0,numMorphTargets:l, +numMorphNormals:p},s[k]=q,t.push(q)));s[k].faces3.push(r);s[k].vertices+=3}f[g]=t;b.groupsNeedUpdate=!1}f=Ua[b.id];g=0;for(d=f.length;g<d;g++){h=f[g];if(void 0===h.__webglVertexBuffer){e=h;e.__webglVertexBuffer=m.createBuffer();e.__webglNormalBuffer=m.createBuffer();e.__webglTangentBuffer=m.createBuffer();e.__webglColorBuffer=m.createBuffer();e.__webglUVBuffer=m.createBuffer();e.__webglUV2Buffer=m.createBuffer();e.__webglSkinIndicesBuffer=m.createBuffer();e.__webglSkinWeightsBuffer=m.createBuffer(); +e.__webglFaceBuffer=m.createBuffer();e.__webglLineBuffer=m.createBuffer();if(p=e.numMorphTargets)for(e.__webglMorphTargetsBuffers=[],l=0;l<p;l++)e.__webglMorphTargetsBuffers.push(m.createBuffer());if(p=e.numMorphNormals)for(e.__webglMorphNormalsBuffers=[],l=0;l<p;l++)e.__webglMorphNormalsBuffers.push(m.createBuffer());B.info.memory.geometries++;e=h;r=a;w=r.geometry;p=e.faces3;l=3*p.length;s=1*p.length;t=3*p.length;p=c(r,e);e.__vertexArray=new Float32Array(3*l);e.__normalArray=new Float32Array(3*l); +e.__colorArray=new Float32Array(3*l);e.__uvArray=new Float32Array(2*l);1<w.faceVertexUvs.length&&(e.__uv2Array=new Float32Array(2*l));w.hasTangents&&(e.__tangentArray=new Float32Array(4*l));r.geometry.skinWeights.length&&r.geometry.skinIndices.length&&(e.__skinIndexArray=new Float32Array(4*l),e.__skinWeightArray=new Float32Array(4*l));r=null!==da.get("OES_element_index_uint")&&21845<s?Uint32Array:Uint16Array;e.__typeArray=r;e.__faceArray=new r(3*s);e.__lineArray=new r(2*t);if(w=e.numMorphTargets)for(e.__morphTargetsArrays= +[],r=0;r<w;r++)e.__morphTargetsArrays.push(new Float32Array(3*l));if(w=e.numMorphNormals)for(e.__morphNormalsArrays=[],r=0;r<w;r++)e.__morphNormalsArrays.push(new Float32Array(3*l));e.__webglFaceCount=3*s;e.__webglLineCount=2*t;if(p.attributes)for(s in void 0===e.__webglCustomAttributesList&&(e.__webglCustomAttributesList=[]),s=void 0,p.attributes){var t=p.attributes[s],r={},v;for(v in t)r[v]=t[v];if(!r.__webglInitialized||r.createUniqueBuffers)r.__webglInitialized=!0,w=1,"v2"===r.type?w=2:"v3"=== +r.type?w=3:"v4"===r.type?w=4:"c"===r.type&&(w=3),r.size=w,r.array=new Float32Array(l*w),r.buffer=m.createBuffer(),r.buffer.belongsToAttribute=s,t.needsUpdate=!0,r.__original=t;e.__webglCustomAttributesList.push(r)}e.__inittedArrays=!0;b.verticesNeedUpdate=!0;b.morphTargetsNeedUpdate=!0;b.elementsNeedUpdate=!0;b.uvsNeedUpdate=!0;b.normalsNeedUpdate=!0;b.tangentsNeedUpdate=!0;e=b.colorsNeedUpdate=!0}else e=!1;(e||void 0===a.__webglActive)&&n(ba,h,a)}a.__webglActive=!0}function n(a,b,c){var d=c.id;a[d]= +a[d]||[];a[d].push({id:d,buffer:b,object:c,material:null,z:0})}function t(a){var b=a.geometry;if(b instanceof THREE.BufferGeometry)for(var d=b.attributes,e=b.attributesKeys,f=0,g=e.length;f<g;f++){var h=e[f],k=d[h],n="index"===h?m.ELEMENT_ARRAY_BUFFER:m.ARRAY_BUFFER;void 0===k.buffer?(k.buffer=m.createBuffer(),m.bindBuffer(n,k.buffer),m.bufferData(n,k.array,k instanceof THREE.DynamicBufferAttribute?m.DYNAMIC_DRAW:m.STATIC_DRAW),k.needsUpdate=!1):!0===k.needsUpdate&&(m.bindBuffer(n,k.buffer),void 0=== +k.updateRange||-1===k.updateRange.count?m.bufferSubData(n,0,k.array):0===k.updateRange.count?console.error("THREE.WebGLRenderer.updateObject: using updateRange for THREE.DynamicBufferAttribute and marked as needsUpdate but count is 0, ensure you are using set methods or updating manually."):(m.bufferSubData(n,k.updateRange.offset*k.array.BYTES_PER_ELEMENT,k.array.subarray(k.updateRange.offset,k.updateRange.offset+k.updateRange.count)),k.updateRange.count=0),k.needsUpdate=!1)}else if(a instanceof THREE.Mesh){!0=== +b.groupsNeedUpdate&&q(a,b);for(var l=Ua[b.id],f=0,p=l.length;f<p;f++){var t=l[f],w=c(a,t),u=w.attributes&&r(w);if(b.verticesNeedUpdate||b.morphTargetsNeedUpdate||b.elementsNeedUpdate||b.uvsNeedUpdate||b.normalsNeedUpdate||b.colorsNeedUpdate||b.tangentsNeedUpdate||u){var v=t,x=a,D=m.DYNAMIC_DRAW,A=!b.dynamic,E=w;if(v.__inittedArrays){var G=!1===E instanceof THREE.MeshPhongMaterial&&E.shading===THREE.FlatShading,y=void 0,z=void 0,F=void 0,B=void 0,I=void 0,H=void 0,M=void 0,R=void 0,P=void 0,U=void 0, +O=void 0,J=void 0,L=void 0,N=void 0,Ka=void 0,V=void 0,W=void 0,Qa=void 0,Ya=void 0,Xa=void 0,da=void 0,ba=void 0,ja=void 0,Pa=void 0,ka=void 0,Q=void 0,ha=void 0,ia=void 0,ob=void 0,Y=void 0,ub=void 0,pa=void 0,ab=void 0,oa=void 0,ca=void 0,qa=void 0,Ca=void 0,ta=void 0,na=void 0,wa=void 0,La=0,Ma=0,kb=0,yb=0,zb=0,Ra=0,Aa=0,eb=0,Ha=0,la=0,ra=0,K=0,za=void 0,Sa=v.__vertexArray,Ab=v.__uvArray,lb=v.__uv2Array,Na=v.__normalArray,sa=v.__tangentArray,Da=v.__colorArray,Ea=v.__skinIndexArray,Fa=v.__skinWeightArray, +Gb=v.__morphTargetsArrays,Bb=v.__morphNormalsArrays,mb=v.__webglCustomAttributesList,C=void 0,Va=v.__faceArray,Ta=v.__lineArray,ea=x.geometry,fb=ea.elementsNeedUpdate,vb=ea.uvsNeedUpdate,Mb=ea.normalsNeedUpdate,Ob=ea.tangentsNeedUpdate,ib=ea.colorsNeedUpdate,sb=ea.morphTargetsNeedUpdate,Cb=ea.vertices,$=v.faces3,xa=ea.faces,Hb=ea.faceVertexUvs[0],Oa=ea.faceVertexUvs[1],$a=ea.skinIndices,Ga=ea.skinWeights,nb=ea.morphTargets,bb=ea.morphNormals;if(ea.verticesNeedUpdate){y=0;for(z=$.length;y<z;y++)B= +xa[$[y]],J=Cb[B.a],L=Cb[B.b],N=Cb[B.c],Sa[Ma]=J.x,Sa[Ma+1]=J.y,Sa[Ma+2]=J.z,Sa[Ma+3]=L.x,Sa[Ma+4]=L.y,Sa[Ma+5]=L.z,Sa[Ma+6]=N.x,Sa[Ma+7]=N.y,Sa[Ma+8]=N.z,Ma+=9;m.bindBuffer(m.ARRAY_BUFFER,v.__webglVertexBuffer);m.bufferData(m.ARRAY_BUFFER,Sa,D)}if(sb)for(ca=0,qa=nb.length;ca<qa;ca++){y=ra=0;for(z=$.length;y<z;y++)na=$[y],B=xa[na],J=nb[ca].vertices[B.a],L=nb[ca].vertices[B.b],N=nb[ca].vertices[B.c],Ca=Gb[ca],Ca[ra]=J.x,Ca[ra+1]=J.y,Ca[ra+2]=J.z,Ca[ra+3]=L.x,Ca[ra+4]=L.y,Ca[ra+5]=L.z,Ca[ra+6]=N.x,Ca[ra+ +7]=N.y,Ca[ra+8]=N.z,E.morphNormals&&(G?Xa=Ya=Qa=bb[ca].faceNormals[na]:(wa=bb[ca].vertexNormals[na],Qa=wa.a,Ya=wa.b,Xa=wa.c),ta=Bb[ca],ta[ra]=Qa.x,ta[ra+1]=Qa.y,ta[ra+2]=Qa.z,ta[ra+3]=Ya.x,ta[ra+4]=Ya.y,ta[ra+5]=Ya.z,ta[ra+6]=Xa.x,ta[ra+7]=Xa.y,ta[ra+8]=Xa.z),ra+=9;m.bindBuffer(m.ARRAY_BUFFER,v.__webglMorphTargetsBuffers[ca]);m.bufferData(m.ARRAY_BUFFER,Gb[ca],D);E.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,v.__webglMorphNormalsBuffers[ca]),m.bufferData(m.ARRAY_BUFFER,Bb[ca],D))}if(Ga.length){y=0; +for(z=$.length;y<z;y++)B=xa[$[y]],Pa=Ga[B.a],ka=Ga[B.b],Q=Ga[B.c],Fa[la]=Pa.x,Fa[la+1]=Pa.y,Fa[la+2]=Pa.z,Fa[la+3]=Pa.w,Fa[la+4]=ka.x,Fa[la+5]=ka.y,Fa[la+6]=ka.z,Fa[la+7]=ka.w,Fa[la+8]=Q.x,Fa[la+9]=Q.y,Fa[la+10]=Q.z,Fa[la+11]=Q.w,ha=$a[B.a],ia=$a[B.b],ob=$a[B.c],Ea[la]=ha.x,Ea[la+1]=ha.y,Ea[la+2]=ha.z,Ea[la+3]=ha.w,Ea[la+4]=ia.x,Ea[la+5]=ia.y,Ea[la+6]=ia.z,Ea[la+7]=ia.w,Ea[la+8]=ob.x,Ea[la+9]=ob.y,Ea[la+10]=ob.z,Ea[la+11]=ob.w,la+=12;0<la&&(m.bindBuffer(m.ARRAY_BUFFER,v.__webglSkinIndicesBuffer), +m.bufferData(m.ARRAY_BUFFER,Ea,D),m.bindBuffer(m.ARRAY_BUFFER,v.__webglSkinWeightsBuffer),m.bufferData(m.ARRAY_BUFFER,Fa,D))}if(ib){y=0;for(z=$.length;y<z;y++)B=xa[$[y]],M=B.vertexColors,R=B.color,3===M.length&&E.vertexColors===THREE.VertexColors?(da=M[0],ba=M[1],ja=M[2]):ja=ba=da=R,Da[Ha]=da.r,Da[Ha+1]=da.g,Da[Ha+2]=da.b,Da[Ha+3]=ba.r,Da[Ha+4]=ba.g,Da[Ha+5]=ba.b,Da[Ha+6]=ja.r,Da[Ha+7]=ja.g,Da[Ha+8]=ja.b,Ha+=9;0<Ha&&(m.bindBuffer(m.ARRAY_BUFFER,v.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,Da, +D))}if(Ob&&ea.hasTangents){y=0;for(z=$.length;y<z;y++)B=xa[$[y]],P=B.vertexTangents,Ka=P[0],V=P[1],W=P[2],sa[Aa]=Ka.x,sa[Aa+1]=Ka.y,sa[Aa+2]=Ka.z,sa[Aa+3]=Ka.w,sa[Aa+4]=V.x,sa[Aa+5]=V.y,sa[Aa+6]=V.z,sa[Aa+7]=V.w,sa[Aa+8]=W.x,sa[Aa+9]=W.y,sa[Aa+10]=W.z,sa[Aa+11]=W.w,Aa+=12;m.bindBuffer(m.ARRAY_BUFFER,v.__webglTangentBuffer);m.bufferData(m.ARRAY_BUFFER,sa,D)}if(Mb){y=0;for(z=$.length;y<z;y++)if(B=xa[$[y]],I=B.vertexNormals,H=B.normal,3===I.length&&!1===G)for(Y=0;3>Y;Y++)pa=I[Y],Na[Ra]=pa.x,Na[Ra+1]= +pa.y,Na[Ra+2]=pa.z,Ra+=3;else for(Y=0;3>Y;Y++)Na[Ra]=H.x,Na[Ra+1]=H.y,Na[Ra+2]=H.z,Ra+=3;m.bindBuffer(m.ARRAY_BUFFER,v.__webglNormalBuffer);m.bufferData(m.ARRAY_BUFFER,Na,D)}if(vb&&Hb){y=0;for(z=$.length;y<z;y++)if(F=$[y],U=Hb[F],void 0!==U)for(Y=0;3>Y;Y++)ab=U[Y],Ab[kb]=ab.x,Ab[kb+1]=ab.y,kb+=2;0<kb&&(m.bindBuffer(m.ARRAY_BUFFER,v.__webglUVBuffer),m.bufferData(m.ARRAY_BUFFER,Ab,D))}if(vb&&Oa){y=0;for(z=$.length;y<z;y++)if(F=$[y],O=Oa[F],void 0!==O)for(Y=0;3>Y;Y++)oa=O[Y],lb[yb]=oa.x,lb[yb+1]=oa.y, +yb+=2;0<yb&&(m.bindBuffer(m.ARRAY_BUFFER,v.__webglUV2Buffer),m.bufferData(m.ARRAY_BUFFER,lb,D))}if(fb){y=0;for(z=$.length;y<z;y++)Va[zb]=La,Va[zb+1]=La+1,Va[zb+2]=La+2,zb+=3,Ta[eb]=La,Ta[eb+1]=La+1,Ta[eb+2]=La,Ta[eb+3]=La+2,Ta[eb+4]=La+1,Ta[eb+5]=La+2,eb+=6,La+=3;m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,v.__webglFaceBuffer);m.bufferData(m.ELEMENT_ARRAY_BUFFER,Va,D);m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,v.__webglLineBuffer);m.bufferData(m.ELEMENT_ARRAY_BUFFER,Ta,D)}if(mb)for(Y=0,ub=mb.length;Y<ub;Y++)if(C= +mb[Y],C.__original.needsUpdate){K=0;if(1===C.size)if(void 0===C.boundTo||"vertices"===C.boundTo)for(y=0,z=$.length;y<z;y++)B=xa[$[y]],C.array[K]=C.value[B.a],C.array[K+1]=C.value[B.b],C.array[K+2]=C.value[B.c],K+=3;else{if("faces"===C.boundTo)for(y=0,z=$.length;y<z;y++)za=C.value[$[y]],C.array[K]=za,C.array[K+1]=za,C.array[K+2]=za,K+=3}else if(2===C.size)if(void 0===C.boundTo||"vertices"===C.boundTo)for(y=0,z=$.length;y<z;y++)B=xa[$[y]],J=C.value[B.a],L=C.value[B.b],N=C.value[B.c],C.array[K]=J.x, +C.array[K+1]=J.y,C.array[K+2]=L.x,C.array[K+3]=L.y,C.array[K+4]=N.x,C.array[K+5]=N.y,K+=6;else{if("faces"===C.boundTo)for(y=0,z=$.length;y<z;y++)N=L=J=za=C.value[$[y]],C.array[K]=J.x,C.array[K+1]=J.y,C.array[K+2]=L.x,C.array[K+3]=L.y,C.array[K+4]=N.x,C.array[K+5]=N.y,K+=6}else if(3===C.size){var T;T="c"===C.type?["r","g","b"]:["x","y","z"];if(void 0===C.boundTo||"vertices"===C.boundTo)for(y=0,z=$.length;y<z;y++)B=xa[$[y]],J=C.value[B.a],L=C.value[B.b],N=C.value[B.c],C.array[K]=J[T[0]],C.array[K+1]= +J[T[1]],C.array[K+2]=J[T[2]],C.array[K+3]=L[T[0]],C.array[K+4]=L[T[1]],C.array[K+5]=L[T[2]],C.array[K+6]=N[T[0]],C.array[K+7]=N[T[1]],C.array[K+8]=N[T[2]],K+=9;else if("faces"===C.boundTo)for(y=0,z=$.length;y<z;y++)N=L=J=za=C.value[$[y]],C.array[K]=J[T[0]],C.array[K+1]=J[T[1]],C.array[K+2]=J[T[2]],C.array[K+3]=L[T[0]],C.array[K+4]=L[T[1]],C.array[K+5]=L[T[2]],C.array[K+6]=N[T[0]],C.array[K+7]=N[T[1]],C.array[K+8]=N[T[2]],K+=9;else if("faceVertices"===C.boundTo)for(y=0,z=$.length;y<z;y++)za=C.value[$[y]], +J=za[0],L=za[1],N=za[2],C.array[K]=J[T[0]],C.array[K+1]=J[T[1]],C.array[K+2]=J[T[2]],C.array[K+3]=L[T[0]],C.array[K+4]=L[T[1]],C.array[K+5]=L[T[2]],C.array[K+6]=N[T[0]],C.array[K+7]=N[T[1]],C.array[K+8]=N[T[2]],K+=9}else if(4===C.size)if(void 0===C.boundTo||"vertices"===C.boundTo)for(y=0,z=$.length;y<z;y++)B=xa[$[y]],J=C.value[B.a],L=C.value[B.b],N=C.value[B.c],C.array[K]=J.x,C.array[K+1]=J.y,C.array[K+2]=J.z,C.array[K+3]=J.w,C.array[K+4]=L.x,C.array[K+5]=L.y,C.array[K+6]=L.z,C.array[K+7]=L.w,C.array[K+ +8]=N.x,C.array[K+9]=N.y,C.array[K+10]=N.z,C.array[K+11]=N.w,K+=12;else if("faces"===C.boundTo)for(y=0,z=$.length;y<z;y++)N=L=J=za=C.value[$[y]],C.array[K]=J.x,C.array[K+1]=J.y,C.array[K+2]=J.z,C.array[K+3]=J.w,C.array[K+4]=L.x,C.array[K+5]=L.y,C.array[K+6]=L.z,C.array[K+7]=L.w,C.array[K+8]=N.x,C.array[K+9]=N.y,C.array[K+10]=N.z,C.array[K+11]=N.w,K+=12;else if("faceVertices"===C.boundTo)for(y=0,z=$.length;y<z;y++)za=C.value[$[y]],J=za[0],L=za[1],N=za[2],C.array[K]=J.x,C.array[K+1]=J.y,C.array[K+2]= +J.z,C.array[K+3]=J.w,C.array[K+4]=L.x,C.array[K+5]=L.y,C.array[K+6]=L.z,C.array[K+7]=L.w,C.array[K+8]=N.x,C.array[K+9]=N.y,C.array[K+10]=N.z,C.array[K+11]=N.w,K+=12;m.bindBuffer(m.ARRAY_BUFFER,C.buffer);m.bufferData(m.ARRAY_BUFFER,C.array,D)}A&&(delete v.__inittedArrays,delete v.__colorArray,delete v.__normalArray,delete v.__tangentArray,delete v.__uvArray,delete v.__uv2Array,delete v.__faceArray,delete v.__vertexArray,delete v.__lineArray,delete v.__skinIndexArray,delete v.__skinWeightArray)}}}b.verticesNeedUpdate= +!1;b.morphTargetsNeedUpdate=!1;b.elementsNeedUpdate=!1;b.uvsNeedUpdate=!1;b.normalsNeedUpdate=!1;b.colorsNeedUpdate=!1;b.tangentsNeedUpdate=!1;w.attributes&&s(w)}else if(a instanceof THREE.Line){w=c(a,b);u=w.attributes&&r(w);if(b.verticesNeedUpdate||b.colorsNeedUpdate||b.lineDistancesNeedUpdate||u){var Db=m.DYNAMIC_DRAW,S,aa,Z,Ba,X,Eb,Rb=b.vertices,Ib=b.colors,gb=b.lineDistances,ya=Rb.length,pb=Ib.length,qb=gb.length,Wa=b.__vertexArray,tb=b.__colorArray,hb=b.__lineDistanceArray,$b=b.colorsNeedUpdate, +Fb=b.lineDistancesNeedUpdate,Sb=b.__webglCustomAttributesList,Jb,cb,ua,Kb,Ia,fa;if(b.verticesNeedUpdate){for(S=0;S<ya;S++)Ba=Rb[S],X=3*S,Wa[X]=Ba.x,Wa[X+1]=Ba.y,Wa[X+2]=Ba.z;m.bindBuffer(m.ARRAY_BUFFER,b.__webglVertexBuffer);m.bufferData(m.ARRAY_BUFFER,Wa,Db)}if($b){for(aa=0;aa<pb;aa++)Eb=Ib[aa],X=3*aa,tb[X]=Eb.r,tb[X+1]=Eb.g,tb[X+2]=Eb.b;m.bindBuffer(m.ARRAY_BUFFER,b.__webglColorBuffer);m.bufferData(m.ARRAY_BUFFER,tb,Db)}if(Fb){for(Z=0;Z<qb;Z++)hb[Z]=gb[Z];m.bindBuffer(m.ARRAY_BUFFER,b.__webglLineDistanceBuffer); +m.bufferData(m.ARRAY_BUFFER,hb,Db)}if(Sb)for(Jb=0,cb=Sb.length;Jb<cb;Jb++)if(fa=Sb[Jb],fa.needsUpdate&&(void 0===fa.boundTo||"vertices"===fa.boundTo)){X=0;Kb=fa.value.length;if(1===fa.size)for(ua=0;ua<Kb;ua++)fa.array[ua]=fa.value[ua];else if(2===fa.size)for(ua=0;ua<Kb;ua++)Ia=fa.value[ua],fa.array[X]=Ia.x,fa.array[X+1]=Ia.y,X+=2;else if(3===fa.size)if("c"===fa.type)for(ua=0;ua<Kb;ua++)Ia=fa.value[ua],fa.array[X]=Ia.r,fa.array[X+1]=Ia.g,fa.array[X+2]=Ia.b,X+=3;else for(ua=0;ua<Kb;ua++)Ia=fa.value[ua], +fa.array[X]=Ia.x,fa.array[X+1]=Ia.y,fa.array[X+2]=Ia.z,X+=3;else if(4===fa.size)for(ua=0;ua<Kb;ua++)Ia=fa.value[ua],fa.array[X]=Ia.x,fa.array[X+1]=Ia.y,fa.array[X+2]=Ia.z,fa.array[X+3]=Ia.w,X+=4;m.bindBuffer(m.ARRAY_BUFFER,fa.buffer);m.bufferData(m.ARRAY_BUFFER,fa.array,Db);fa.needsUpdate=!1}}b.verticesNeedUpdate=!1;b.colorsNeedUpdate=!1;b.lineDistancesNeedUpdate=!1;w.attributes&&s(w)}else if(a instanceof THREE.PointCloud){w=c(a,b);u=w.attributes&&r(w);if(b.verticesNeedUpdate||b.colorsNeedUpdate|| +u){var db=m.DYNAMIC_DRAW,Tb,Ub,ac,ma,bc,Nb=b.vertices,Vb=Nb.length,Pb=b.colors,rb=Pb.length,cc=b.__vertexArray,dc=b.__colorArray,wb=b.colorsNeedUpdate,gc=b.__webglCustomAttributesList,ec,jb,va,Lb,Ja,ga;if(b.verticesNeedUpdate){for(Tb=0;Tb<Vb;Tb++)ac=Nb[Tb],ma=3*Tb,cc[ma]=ac.x,cc[ma+1]=ac.y,cc[ma+2]=ac.z;m.bindBuffer(m.ARRAY_BUFFER,b.__webglVertexBuffer);m.bufferData(m.ARRAY_BUFFER,cc,db)}if(wb){for(Ub=0;Ub<rb;Ub++)bc=Pb[Ub],ma=3*Ub,dc[ma]=bc.r,dc[ma+1]=bc.g,dc[ma+2]=bc.b;m.bindBuffer(m.ARRAY_BUFFER, +b.__webglColorBuffer);m.bufferData(m.ARRAY_BUFFER,dc,db)}if(gc)for(ec=0,jb=gc.length;ec<jb;ec++){ga=gc[ec];if(ga.needsUpdate&&(void 0===ga.boundTo||"vertices"===ga.boundTo))if(Lb=ga.value.length,ma=0,1===ga.size)for(va=0;va<Lb;va++)ga.array[va]=ga.value[va];else if(2===ga.size)for(va=0;va<Lb;va++)Ja=ga.value[va],ga.array[ma]=Ja.x,ga.array[ma+1]=Ja.y,ma+=2;else if(3===ga.size)if("c"===ga.type)for(va=0;va<Lb;va++)Ja=ga.value[va],ga.array[ma]=Ja.r,ga.array[ma+1]=Ja.g,ga.array[ma+2]=Ja.b,ma+=3;else for(va= +0;va<Lb;va++)Ja=ga.value[va],ga.array[ma]=Ja.x,ga.array[ma+1]=Ja.y,ga.array[ma+2]=Ja.z,ma+=3;else if(4===ga.size)for(va=0;va<Lb;va++)Ja=ga.value[va],ga.array[ma]=Ja.x,ga.array[ma+1]=Ja.y,ga.array[ma+2]=Ja.z,ga.array[ma+3]=Ja.w,ma+=4;m.bindBuffer(m.ARRAY_BUFFER,ga.buffer);m.bufferData(m.ARRAY_BUFFER,ga.array,db);ga.needsUpdate=!1}}b.verticesNeedUpdate=!1;b.colorsNeedUpdate=!1;w.attributes&&s(w)}}function r(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function s(a){for(var b in a.attributes)a.attributes[b].needsUpdate= +!1}function u(a){!0===a.transparent?W.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):W.setBlending(THREE.NoBlending);W.setDepthTest(a.depthTest);W.setDepthWrite(a.depthWrite);W.setColorWrite(a.colorWrite);W.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function v(a,b,c,d,e){var f,g,h,k;Mb=0;if(d.needsUpdate){d.program&&hc(d);d.addEventListener("dispose",ic);var n=pc[d.type];if(n){var l=THREE.ShaderLib[n]; +d.__webglShader={uniforms:THREE.UniformsUtils.clone(l.uniforms),vertexShader:l.vertexShader,fragmentShader:l.fragmentShader}}else d.__webglShader={uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var p=0,q=0,r=0,s=0,t=0,w=b.length;t<w;t++){var v=b[t];v.onlyShadow||!1===v.visible||(v instanceof THREE.DirectionalLight&&p++,v instanceof THREE.PointLight&&q++,v instanceof THREE.SpotLight&&r++,v instanceof THREE.HemisphereLight&&s++)}f=p;g=q;h=r;k=s;for(var u,z=0,G= +0,F=b.length;G<F;G++){var J=b[G];J.castShadow&&(J instanceof THREE.SpotLight&&z++,J instanceof THREE.DirectionalLight&&!J.shadowCascade&&z++)}u=z;var H;if(Nb&&e&&e.skeleton&&e.skeleton.useVertexTexture)H=1024;else{var N=m.getParameter(m.MAX_VERTEX_UNIFORM_VECTORS),M=Math.floor((N-20)/4);void 0!==e&&e instanceof THREE.SkinnedMesh&&(M=Math.min(e.skeleton.bones.length,M),M<e.skeleton.bones.length&&THREE.warn("WebGLRenderer: too many bones - "+e.skeleton.bones.length+", this GPU supports just "+M+" (try OpenGL instead of ANGLE)")); +H=M}var P={precision:L,supportsVertexTextures:Vb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&d.envMap.mapping,lightMap:!!d.lightMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,combine:d.combine,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,flatShading:d.shading===THREE.FlatShading,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:ja,skinning:d.skinning,maxBones:H,useVertexTexture:Nb&&e&&e.skeleton&& +e.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:B.maxMorphTargets,maxMorphNormals:B.maxMorphNormals,maxDirLights:f,maxPointLights:g,maxSpotLights:h,maxHemiLights:k,maxShadows:u,shadowMapEnabled:B.shadowMapEnabled&&e.receiveShadow&&0<u,shadowMapType:B.shadowMapType,shadowMapDebug:B.shadowMapDebug,shadowMapCascade:B.shadowMapCascade,alphaTest:d.alphaTest,metal:d.metal,wrapAround:d.wrapAround,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side=== +THREE.BackSide},R=[];n?R.push(n):(R.push(d.fragmentShader),R.push(d.vertexShader));if(void 0!==d.defines)for(var O in d.defines)R.push(O),R.push(d.defines[O]);for(O in P)R.push(O),R.push(P[O]);for(var Ka=R.join(),V,W=0,Qa=Pa.length;W<Qa;W++){var Ya=Pa[W];if(Ya.code===Ka){V=Ya;V.usedTimes++;break}}void 0===V&&(V=new THREE.WebGLProgram(B,Ka,d,P),Pa.push(V),B.info.memory.programs=Pa.length);d.program=V;var Xa=V.attributes;if(d.morphTargets){d.numSupportedMorphTargets=0;for(var ca,da="morphTarget",ba= +0;ba<B.maxMorphTargets;ba++)ca=da+ba,0<=Xa[ca]&&d.numSupportedMorphTargets++}if(d.morphNormals)for(d.numSupportedMorphNormals=0,da="morphNormal",ba=0;ba<B.maxMorphNormals;ba++)ca=da+ba,0<=Xa[ca]&&d.numSupportedMorphNormals++;d.uniformsList=[];for(var ha in d.__webglShader.uniforms){var ta=d.program.uniforms[ha];ta&&d.uniformsList.push([d.__webglShader.uniforms[ha],ta])}d.needsUpdate=!1}d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(B.maxMorphTargets)); +var ab=!1,oa=!1,qa=!1,Ua=d.program,ka=Ua.uniforms,Q=d.__webglShader.uniforms;Ua.id!==ob&&(m.useProgram(Ua.program),ob=Ua.id,qa=oa=ab=!0);d.id!==ub&&(-1===ub&&(qa=!0),ub=d.id,oa=!0);if(ab||a!==vb)m.uniformMatrix4fv(ka.projectionMatrix,!1,a.projectionMatrix.elements),ja&&m.uniform1f(ka.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==vb&&(vb=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==ka.cameraPosition&&(wa.setFromMatrixPosition(a.matrixWorld),m.uniform3f(ka.cameraPosition, +wa.x,wa.y,wa.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==ka.viewMatrix&&m.uniformMatrix4fv(ka.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(e.bindMatrix&&null!==ka.bindMatrix&&m.uniformMatrix4fv(ka.bindMatrix,!1,e.bindMatrix.elements),e.bindMatrixInverse&&null!==ka.bindMatrixInverse&&m.uniformMatrix4fv(ka.bindMatrixInverse,!1,e.bindMatrixInverse.elements), +Nb&&e.skeleton&&e.skeleton.useVertexTexture){if(null!==ka.boneTexture){var db=D();m.uniform1i(ka.boneTexture,db);B.setTexture(e.skeleton.boneTexture,db)}null!==ka.boneTextureWidth&&m.uniform1i(ka.boneTextureWidth,e.skeleton.boneTextureWidth);null!==ka.boneTextureHeight&&m.uniform1i(ka.boneTextureHeight,e.skeleton.boneTextureHeight)}else e.skeleton&&e.skeleton.boneMatrices&&null!==ka.boneGlobalMatrices&&m.uniformMatrix4fv(ka.boneGlobalMatrices,!1,e.skeleton.boneMatrices);if(oa){c&&d.fog&&(Q.fogColor.value= +c.color,c instanceof THREE.Fog?(Q.fogNear.value=c.near,Q.fogFar.value=c.far):c instanceof THREE.FogExp2&&(Q.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Ob){var qa=!0,ia,Za,Y,bb=0,cb=0,ib=0,xb,pb,qb,Ca,jb,na=jc,rb=na.directional.colors,La=na.directional.positions,Ma=na.point.colors,kb=na.point.positions,yb=na.point.distances,zb=na.point.decays,Ra=na.spot.colors,Aa=na.spot.positions,eb=na.spot.distances,Ha=na.spot.directions, +la=na.spot.anglesCos,ra=na.spot.exponents,K=na.spot.decays,za=na.hemi.skyColors,Sa=na.hemi.groundColors,Ab=na.hemi.positions,lb=0,Na=0,sa=0,Da=0,Ea=0,Fa=0,Gb=0,Bb=0,mb=0,C=0,Va=0,Ta=0;ia=0;for(Za=b.length;ia<Za;ia++)Y=b[ia],Y.onlyShadow||(xb=Y.color,Ca=Y.intensity,jb=Y.distance,Y instanceof THREE.AmbientLight?Y.visible&&(bb+=xb.r,cb+=xb.g,ib+=xb.b):Y instanceof THREE.DirectionalLight?(Ea+=1,Y.visible&&(pa.setFromMatrixPosition(Y.matrixWorld),wa.setFromMatrixPosition(Y.target.matrixWorld),pa.sub(wa), +pa.normalize(),mb=3*lb,La[mb]=pa.x,La[mb+1]=pa.y,La[mb+2]=pa.z,y(rb,mb,xb,Ca),lb+=1)):Y instanceof THREE.PointLight?(Fa+=1,Y.visible&&(C=3*Na,y(Ma,C,xb,Ca),wa.setFromMatrixPosition(Y.matrixWorld),kb[C]=wa.x,kb[C+1]=wa.y,kb[C+2]=wa.z,yb[Na]=jb,zb[Na]=0===Y.distance?0:Y.decay,Na+=1)):Y instanceof THREE.SpotLight?(Gb+=1,Y.visible&&(Va=3*sa,y(Ra,Va,xb,Ca),pa.setFromMatrixPosition(Y.matrixWorld),Aa[Va]=pa.x,Aa[Va+1]=pa.y,Aa[Va+2]=pa.z,eb[sa]=jb,wa.setFromMatrixPosition(Y.target.matrixWorld),pa.sub(wa), +pa.normalize(),Ha[Va]=pa.x,Ha[Va+1]=pa.y,Ha[Va+2]=pa.z,la[sa]=Math.cos(Y.angle),ra[sa]=Y.exponent,K[sa]=0===Y.distance?0:Y.decay,sa+=1)):Y instanceof THREE.HemisphereLight&&(Bb+=1,Y.visible&&(pa.setFromMatrixPosition(Y.matrixWorld),pa.normalize(),Ta=3*Da,Ab[Ta]=pa.x,Ab[Ta+1]=pa.y,Ab[Ta+2]=pa.z,pb=Y.color,qb=Y.groundColor,y(za,Ta,pb,Ca),y(Sa,Ta,qb,Ca),Da+=1)));ia=3*lb;for(Za=Math.max(rb.length,3*Ea);ia<Za;ia++)rb[ia]=0;ia=3*Na;for(Za=Math.max(Ma.length,3*Fa);ia<Za;ia++)Ma[ia]=0;ia=3*sa;for(Za=Math.max(Ra.length, +3*Gb);ia<Za;ia++)Ra[ia]=0;ia=3*Da;for(Za=Math.max(za.length,3*Bb);ia<Za;ia++)za[ia]=0;ia=3*Da;for(Za=Math.max(Sa.length,3*Bb);ia<Za;ia++)Sa[ia]=0;na.directional.length=lb;na.point.length=Na;na.spot.length=sa;na.hemi.length=Da;na.ambient[0]=bb;na.ambient[1]=cb;na.ambient[2]=ib;Ob=!1}if(qa){var ea=jc;Q.ambientLightColor.value=ea.ambient;Q.directionalLightColor.value=ea.directional.colors;Q.directionalLightDirection.value=ea.directional.positions;Q.pointLightColor.value=ea.point.colors;Q.pointLightPosition.value= +ea.point.positions;Q.pointLightDistance.value=ea.point.distances;Q.pointLightDecay.value=ea.point.decays;Q.spotLightColor.value=ea.spot.colors;Q.spotLightPosition.value=ea.spot.positions;Q.spotLightDistance.value=ea.spot.distances;Q.spotLightDirection.value=ea.spot.directions;Q.spotLightAngleCos.value=ea.spot.anglesCos;Q.spotLightExponent.value=ea.spot.exponents;Q.spotLightDecay.value=ea.spot.decays;Q.hemisphereLightSkyColor.value=ea.hemi.skyColors;Q.hemisphereLightGroundColor.value=ea.hemi.groundColors; +Q.hemisphereLightDirection.value=ea.hemi.positions;x(Q,!0)}else x(Q,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){Q.opacity.value=d.opacity;Q.diffuse.value=d.color;Q.map.value=d.map;Q.lightMap.value=d.lightMap;Q.specularMap.value=d.specularMap;Q.alphaMap.value=d.alphaMap;d.bumpMap&&(Q.bumpMap.value=d.bumpMap,Q.bumpScale.value=d.bumpScale);d.normalMap&&(Q.normalMap.value=d.normalMap,Q.normalScale.value.copy(d.normalScale)); +var fb;d.map?fb=d.map:d.specularMap?fb=d.specularMap:d.normalMap?fb=d.normalMap:d.bumpMap?fb=d.bumpMap:d.alphaMap&&(fb=d.alphaMap);if(void 0!==fb){var wb=fb.offset,Qb=fb.repeat;Q.offsetRepeat.value.set(wb.x,wb.y,Qb.x,Qb.y)}Q.envMap.value=d.envMap;Q.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;Q.reflectivity.value=d.reflectivity;Q.refractionRatio.value=d.refractionRatio}if(d instanceof THREE.LineBasicMaterial)Q.diffuse.value=d.color,Q.opacity.value=d.opacity;else if(d instanceof +THREE.LineDashedMaterial)Q.diffuse.value=d.color,Q.opacity.value=d.opacity,Q.dashSize.value=d.dashSize,Q.totalSize.value=d.dashSize+d.gapSize,Q.scale.value=d.scale;else if(d instanceof THREE.PointCloudMaterial){if(Q.psColor.value=d.color,Q.opacity.value=d.opacity,Q.size.value=d.size,Q.scale.value=U.height/2,Q.map.value=d.map,null!==d.map){var Wb=d.map.offset,Xb=d.map.repeat;Q.offsetRepeat.value.set(Wb.x,Wb.y,Xb.x,Xb.y)}}else d instanceof THREE.MeshPhongMaterial?(Q.shininess.value=d.shininess,Q.emissive.value= +d.emissive,Q.specular.value=d.specular,d.wrapAround&&Q.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshLambertMaterial?(Q.emissive.value=d.emissive,d.wrapAround&&Q.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshDepthMaterial?(Q.mNear.value=a.near,Q.mFar.value=a.far,Q.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(Q.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&Q.shadowMatrix)for(var sb=0,Cb=0,$=b.length;Cb<$;Cb++){var xa=b[Cb];xa.castShadow&&(xa instanceof +THREE.SpotLight||xa instanceof THREE.DirectionalLight&&!xa.shadowCascade)&&(Q.shadowMap.value[sb]=xa.shadowMap,Q.shadowMapSize.value[sb]=xa.shadowMapSize,Q.shadowMatrix.value[sb]=xa.shadowMatrix,Q.shadowDarkness.value[sb]=xa.shadowDarkness,Q.shadowBias.value[sb]=xa.shadowBias,sb++)}for(var Hb=d.uniformsList,Oa,$a,Ga,nb=0,fc=Hb.length;nb<fc;nb++){var T=Hb[nb][0];if(!1!==T.needsUpdate){var Db=T.type,S=T.value,aa=Hb[nb][1];switch(Db){case "1i":m.uniform1i(aa,S);break;case "1f":m.uniform1f(aa,S);break; +case "2f":m.uniform2f(aa,S[0],S[1]);break;case "3f":m.uniform3f(aa,S[0],S[1],S[2]);break;case "4f":m.uniform4f(aa,S[0],S[1],S[2],S[3]);break;case "1iv":m.uniform1iv(aa,S);break;case "3iv":m.uniform3iv(aa,S);break;case "1fv":m.uniform1fv(aa,S);break;case "2fv":m.uniform2fv(aa,S);break;case "3fv":m.uniform3fv(aa,S);break;case "4fv":m.uniform4fv(aa,S);break;case "Matrix3fv":m.uniformMatrix3fv(aa,!1,S);break;case "Matrix4fv":m.uniformMatrix4fv(aa,!1,S);break;case "i":m.uniform1i(aa,S);break;case "f":m.uniform1f(aa, +S);break;case "v2":m.uniform2f(aa,S.x,S.y);break;case "v3":m.uniform3f(aa,S.x,S.y,S.z);break;case "v4":m.uniform4f(aa,S.x,S.y,S.z,S.w);break;case "c":m.uniform3f(aa,S.r,S.g,S.b);break;case "iv1":m.uniform1iv(aa,S);break;case "iv":m.uniform3iv(aa,S);break;case "fv1":m.uniform1fv(aa,S);break;case "fv":m.uniform3fv(aa,S);break;case "v2v":void 0===T._array&&(T._array=new Float32Array(2*S.length));for(var Z=0,Ba=S.length;Z<Ba;Z++)Ga=2*Z,T._array[Ga]=S[Z].x,T._array[Ga+1]=S[Z].y;m.uniform2fv(aa,T._array); +break;case "v3v":void 0===T._array&&(T._array=new Float32Array(3*S.length));Z=0;for(Ba=S.length;Z<Ba;Z++)Ga=3*Z,T._array[Ga]=S[Z].x,T._array[Ga+1]=S[Z].y,T._array[Ga+2]=S[Z].z;m.uniform3fv(aa,T._array);break;case "v4v":void 0===T._array&&(T._array=new Float32Array(4*S.length));Z=0;for(Ba=S.length;Z<Ba;Z++)Ga=4*Z,T._array[Ga]=S[Z].x,T._array[Ga+1]=S[Z].y,T._array[Ga+2]=S[Z].z,T._array[Ga+3]=S[Z].w;m.uniform4fv(aa,T._array);break;case "m3":m.uniformMatrix3fv(aa,!1,S.elements);break;case "m3v":void 0=== +T._array&&(T._array=new Float32Array(9*S.length));Z=0;for(Ba=S.length;Z<Ba;Z++)S[Z].flattenToArrayOffset(T._array,9*Z);m.uniformMatrix3fv(aa,!1,T._array);break;case "m4":m.uniformMatrix4fv(aa,!1,S.elements);break;case "m4v":void 0===T._array&&(T._array=new Float32Array(16*S.length));Z=0;for(Ba=S.length;Z<Ba;Z++)S[Z].flattenToArrayOffset(T._array,16*Z);m.uniformMatrix4fv(aa,!1,T._array);break;case "t":Oa=S;$a=D();m.uniform1i(aa,$a);if(!Oa)continue;if(Oa instanceof THREE.CubeTexture||Oa.image instanceof +Array&&6===Oa.image.length){var X=Oa,Eb=$a;if(6===X.image.length)if(X.needsUpdate){X.image.__webglTextureCube||(X.addEventListener("dispose",Pb),X.image.__webglTextureCube=m.createTexture(),B.info.memory.textures++);m.activeTexture(m.TEXTURE0+Eb);m.bindTexture(m.TEXTURE_CUBE_MAP,X.image.__webglTextureCube);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,X.flipY);for(var Rb=X instanceof THREE.CompressedTexture,Ib=X.image[0]instanceof THREE.DataTexture,gb=[],ya=0;6>ya;ya++)gb[ya]=!B.autoScaleCubemaps||Rb||Ib?Ib? +X.image[ya].image:X.image[ya]:E(X.image[ya],qc);var Yb=gb[0],Zb=THREE.Math.isPowerOfTwo(Yb.width)&&THREE.Math.isPowerOfTwo(Yb.height),Wa=I(X.format),tb=I(X.type);A(m.TEXTURE_CUBE_MAP,X,Zb);for(ya=0;6>ya;ya++)if(Rb)for(var hb,$b=gb[ya].mipmaps,Fb=0,Sb=$b.length;Fb<Sb;Fb++)hb=$b[Fb],X.format!==THREE.RGBAFormat&&X.format!==THREE.RGBFormat?-1<kc().indexOf(Wa)?m.compressedTexImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+ya,Fb,Wa,hb.width,hb.height,0,hb.data):THREE.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"): +m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+ya,Fb,Wa,hb.width,hb.height,0,Wa,tb,hb.data);else Ib?m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+ya,0,Wa,gb[ya].width,gb[ya].height,0,Wa,tb,gb[ya].data):m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+ya,0,Wa,Wa,tb,gb[ya]);X.generateMipmaps&&Zb&&m.generateMipmap(m.TEXTURE_CUBE_MAP);X.needsUpdate=!1;if(X.onUpdate)X.onUpdate()}else m.activeTexture(m.TEXTURE0+Eb),m.bindTexture(m.TEXTURE_CUBE_MAP,X.image.__webglTextureCube)}else if(Oa instanceof THREE.WebGLRenderTargetCube){var Jb= +Oa;m.activeTexture(m.TEXTURE0+$a);m.bindTexture(m.TEXTURE_CUBE_MAP,Jb.__webglTexture)}else B.setTexture(Oa,$a);break;case "tv":void 0===T._array&&(T._array=[]);Z=0;for(Ba=T.value.length;Z<Ba;Z++)T._array[Z]=D();m.uniform1iv(aa,T._array);Z=0;for(Ba=T.value.length;Z<Ba;Z++)Oa=T.value[Z],$a=T._array[Z],Oa&&B.setTexture(Oa,$a);break;default:THREE.warn("THREE.WebGLRenderer: Unknown uniform type: "+Db)}}}}m.uniformMatrix4fv(ka.modelViewMatrix,!1,e._modelViewMatrix.elements);ka.normalMatrix&&m.uniformMatrix3fv(ka.normalMatrix, +!1,e._normalMatrix.elements);null!==ka.modelMatrix&&m.uniformMatrix4fv(ka.modelMatrix,!1,e.matrixWorld.elements);return Ua}function x(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightColor.needsUpdate=b;a.directionalLightDirection.needsUpdate=b;a.pointLightColor.needsUpdate=b;a.pointLightPosition.needsUpdate=b;a.pointLightDistance.needsUpdate=b;a.pointLightDecay.needsUpdate=b;a.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate= +b;a.spotLightAngleCos.needsUpdate=b;a.spotLightExponent.needsUpdate=b;a.spotLightDecay.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function D(){var a=Mb;a>=Wb&&THREE.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+Wb);Mb+=1;return a}function w(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getNormalMatrix(a._modelViewMatrix)} +function y(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function A(a,b,c){c?(m.texParameteri(a,m.TEXTURE_WRAP_S,I(b.wrapS)),m.texParameteri(a,m.TEXTURE_WRAP_T,I(b.wrapT)),m.texParameteri(a,m.TEXTURE_MAG_FILTER,I(b.magFilter)),m.texParameteri(a,m.TEXTURE_MIN_FILTER,I(b.minFilter))):(m.texParameteri(a,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||THREE.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+ +b.sourceFile+" )"),m.texParameteri(a,m.TEXTURE_MAG_FILTER,z(b.magFilter)),m.texParameteri(a,m.TEXTURE_MIN_FILTER,z(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&THREE.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+b.sourceFile+" )"));(c=da.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||b.__currentAnisotropy)&& +(m.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,B.getMaxAnisotropy())),b.__currentAnisotropy=b.anisotropy)}function E(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);THREE.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);return d}return a} +function G(a,b){m.bindRenderbuffer(m.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_COMPONENT16,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_STENCIL,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a)):m.renderbufferStorage(m.RENDERBUFFER,m.RGBA4,b.width,b.height)}function F(a){a instanceof +THREE.WebGLRenderTargetCube?(m.bindTexture(m.TEXTURE_CUBE_MAP,a.__webglTexture),m.generateMipmap(m.TEXTURE_CUBE_MAP),m.bindTexture(m.TEXTURE_CUBE_MAP,null)):(m.bindTexture(m.TEXTURE_2D,a.__webglTexture),m.generateMipmap(m.TEXTURE_2D),m.bindTexture(m.TEXTURE_2D,null))}function z(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?m.NEAREST:m.LINEAR}function I(a){var b;if(a===THREE.RepeatWrapping)return m.REPEAT;if(a===THREE.ClampToEdgeWrapping)return m.CLAMP_TO_EDGE; +if(a===THREE.MirroredRepeatWrapping)return m.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return m.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return m.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return m.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return m.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return m.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return m.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return m.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return m.UNSIGNED_SHORT_4_4_4_4; +if(a===THREE.UnsignedShort5551Type)return m.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return m.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return m.BYTE;if(a===THREE.ShortType)return m.SHORT;if(a===THREE.UnsignedShortType)return m.UNSIGNED_SHORT;if(a===THREE.IntType)return m.INT;if(a===THREE.UnsignedIntType)return m.UNSIGNED_INT;if(a===THREE.FloatType)return m.FLOAT;b=da.get("OES_texture_half_float");if(null!==b&&a===THREE.HalfFloatType)return b.HALF_FLOAT_OES;if(a===THREE.AlphaFormat)return m.ALPHA; +if(a===THREE.RGBFormat)return m.RGB;if(a===THREE.RGBAFormat)return m.RGBA;if(a===THREE.LuminanceFormat)return m.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return m.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return m.FUNC_ADD;if(a===THREE.SubtractEquation)return m.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return m.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return m.ZERO;if(a===THREE.OneFactor)return m.ONE;if(a===THREE.SrcColorFactor)return m.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return m.ONE_MINUS_SRC_COLOR; +if(a===THREE.SrcAlphaFactor)return m.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return m.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return m.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return m.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return m.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return m.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return m.SRC_ALPHA_SATURATE;b=da.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT; +if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=da.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; +if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=da.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var U=void 0!==a.canvas?a.canvas:document.createElement("canvas"),M=void 0!==a.context?a.context:null,H=1,L=void 0!==a.precision?a.precision:"highp",P=void 0!==a.alpha?a.alpha:!1,N=void 0!==a.depth?a.depth:!0,R=void 0!==a.stencil? +a.stencil:!0,V=void 0!==a.antialias?a.antialias:!1,J=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,oa=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,ja=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,ha=new THREE.Color(0),O=0,ca=[],ba={},qa=[],Ka=[],Qa=[],Xa=[],Ya=[];this.domElement=U;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.gammaFactor=2;this.shadowMapEnabled=this.gammaOutput=this.gammaInput= +!1;this.shadowMapType=THREE.PCFShadowMap;this.shadowMapCullFace=THREE.CullFaceFront;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var B=this,Pa=[],ob=null,ab=null,ub=-1,ta="",vb=null,Mb=0,ib=0,bb=0,pb=U.width,qb=U.height,Xb=0,fc=0,cb=new THREE.Frustum,db=new THREE.Matrix4,wa=new THREE.Vector3,pa=new THREE.Vector3,Ob=!0,jc={ambient:[0, +0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[],decays:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},m;try{var Yb={alpha:P,depth:N,stencil:R,antialias:V,premultipliedAlpha:J,preserveDrawingBuffer:oa};m=M||U.getContext("webgl",Yb)||U.getContext("experimental-webgl",Yb);if(null===m){if(null!==U.getContext("webgl"))throw"Error creating WebGL context with your selected attributes."; +throw"Error creating WebGL context.";}U.addEventListener("webglcontextlost",function(a){a.preventDefault();Zb();lc();ba={}},!1)}catch(rc){THREE.error("THREE.WebGLRenderer: "+rc)}var W=new THREE.WebGLState(m,I);void 0===m.getShaderPrecisionFormat&&(m.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var da=new THREE.WebGLExtensions(m);da.get("OES_texture_float");da.get("OES_texture_float_linear");da.get("OES_texture_half_float");da.get("OES_texture_half_float_linear"); +da.get("OES_standard_derivatives");ja&&da.get("EXT_frag_depth");var rb=function(a,b,c,d){!0===J&&(a*=d,b*=d,c*=d);m.clearColor(a,b,c,d)},lc=function(){m.clearColor(0,0,0,1);m.clearDepth(1);m.clearStencil(0);m.enable(m.DEPTH_TEST);m.depthFunc(m.LEQUAL);m.frontFace(m.CCW);m.cullFace(m.BACK);m.enable(m.CULL_FACE);m.enable(m.BLEND);m.blendEquation(m.FUNC_ADD);m.blendFunc(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA);m.viewport(ib,bb,pb,qb);rb(ha.r,ha.g,ha.b,O)},Zb=function(){vb=ob=null;ta="";ub=-1;Ob=!0;W.reset()}; +lc();this.context=m;this.state=W;var Wb=m.getParameter(m.MAX_TEXTURE_IMAGE_UNITS),sc=m.getParameter(m.MAX_VERTEX_TEXTURE_IMAGE_UNITS),tc=m.getParameter(m.MAX_TEXTURE_SIZE),qc=m.getParameter(m.MAX_CUBE_MAP_TEXTURE_SIZE),Vb=0<sc,Nb=Vb&&da.get("OES_texture_float"),uc=m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.HIGH_FLOAT),vc=m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.MEDIUM_FLOAT),wc=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.HIGH_FLOAT),xc=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.MEDIUM_FLOAT), +kc=function(){var a;return function(){if(void 0!==a)return a;a=[];if(da.get("WEBGL_compressed_texture_pvrtc")||da.get("WEBGL_compressed_texture_s3tc"))for(var b=m.getParameter(m.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]);return a}}(),yc=0<uc.precision&&0<wc.precision,mc=0<vc.precision&&0<xc.precision;"highp"!==L||yc||(mc?(L="mediump",THREE.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(L="lowp",THREE.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp."))); +"mediump"!==L||mc||(L="lowp",THREE.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var zc=new THREE.ShadowMapPlugin(this,ca,ba,qa),Ac=new THREE.SpritePlugin(this,Xa),Bc=new THREE.LensFlarePlugin(this,Ya);this.getContext=function(){return m};this.forceContextLoss=function(){da.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return Vb};this.supportsFloatTextures=function(){return da.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){return da.get("OES_texture_half_float")}; +this.supportsStandardDerivatives=function(){return da.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){return da.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){return da.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){return da.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=da.get("EXT_texture_filter_anisotropic");return a=null!==b?m.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT): +0}}();this.getPrecision=function(){return L};this.getPixelRatio=function(){return H};this.setPixelRatio=function(a){H=a};this.setSize=function(a,b,c){U.width=a*H;U.height=b*H;!1!==c&&(U.style.width=a+"px",U.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){ib=a*H;bb=b*H;pb=c*H;qb=d*H;m.viewport(ib,bb,pb,qb)};this.setScissor=function(a,b,c,d){m.scissor(a*H,b*H,c*H,d*H)};this.enableScissorTest=function(a){a?m.enable(m.SCISSOR_TEST):m.disable(m.SCISSOR_TEST)};this.getClearColor= +function(){return ha};this.setClearColor=function(a,b){ha.set(a);O=void 0!==b?b:1;rb(ha.r,ha.g,ha.b,O)};this.getClearAlpha=function(){return O};this.setClearAlpha=function(a){O=a;rb(ha.r,ha.g,ha.b,O)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=m.COLOR_BUFFER_BIT;if(void 0===b||b)d|=m.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=m.STENCIL_BUFFER_BIT;m.clear(d)};this.clearColor=function(){m.clear(m.COLOR_BUFFER_BIT)};this.clearDepth=function(){m.clear(m.DEPTH_BUFFER_BIT)};this.clearStencil=function(){m.clear(m.STENCIL_BUFFER_BIT)}; +this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.resetGLState=Zb;var wb=function(a){a.target.traverse(function(a){a.removeEventListener("remove",wb);if(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete ba[a.id];else if(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)for(var b=qa,c=b.length-1;0<=c;c--)b[c].object===a&&b.splice(c,1);delete a.__webglInit;delete a._modelViewMatrix;delete a._normalMatrix;delete a.__webglActive})}, +jb=function(a){a=a.target;a.removeEventListener("dispose",jb);delete a.__webglInit;if(a instanceof THREE.BufferGeometry){for(var b in a.attributes){var c=a.attributes[b];void 0!==c.buffer&&(m.deleteBuffer(c.buffer),delete c.buffer)}B.info.memory.geometries--}else if(b=Ua[a.id],void 0!==b){for(var c=0,d=b.length;c<d;c++){var e=b[c];if(void 0!==e.numMorphTargets){for(var f=0,g=e.numMorphTargets;f<g;f++)m.deleteBuffer(e.__webglMorphTargetsBuffers[f]);delete e.__webglMorphTargetsBuffers}if(void 0!==e.numMorphNormals){f= +0;for(g=e.numMorphNormals;f<g;f++)m.deleteBuffer(e.__webglMorphNormalsBuffers[f]);delete e.__webglMorphNormalsBuffers}nc(e)}delete Ua[a.id]}else nc(a);ta=""},Pb=function(a){a=a.target;a.removeEventListener("dispose",Pb);a.image&&a.image.__webglTextureCube?(m.deleteTexture(a.image.__webglTextureCube),delete a.image.__webglTextureCube):void 0!==a.__webglInit&&(m.deleteTexture(a.__webglTexture),delete a.__webglTexture,delete a.__webglInit);B.info.memory.textures--},oc=function(a){a=a.target;a.removeEventListener("dispose", +oc);if(a&&void 0!==a.__webglTexture){m.deleteTexture(a.__webglTexture);delete a.__webglTexture;if(a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)m.deleteFramebuffer(a.__webglFramebuffer[b]),m.deleteRenderbuffer(a.__webglRenderbuffer[b]);else m.deleteFramebuffer(a.__webglFramebuffer),m.deleteRenderbuffer(a.__webglRenderbuffer);delete a.__webglFramebuffer;delete a.__webglRenderbuffer}B.info.memory.textures--},ic=function(a){a=a.target;a.removeEventListener("dispose",ic);hc(a)},nc=function(a){for(var b= +"__webglVertexBuffer __webglNormalBuffer __webglTangentBuffer __webglColorBuffer __webglUVBuffer __webglUV2Buffer __webglSkinIndicesBuffer __webglSkinWeightsBuffer __webglFaceBuffer __webglLineBuffer __webglLineDistanceBuffer".split(" "),c=0,d=b.length;c<d;c++){var e=b[c];void 0!==a[e]&&(m.deleteBuffer(a[e]),delete a[e])}if(void 0!==a.__webglCustomAttributesList){for(e in a.__webglCustomAttributesList)m.deleteBuffer(a.__webglCustomAttributesList[e].buffer);delete a.__webglCustomAttributesList}B.info.memory.geometries--}, +hc=function(a){var b=a.program.program;if(void 0!==b){a.program=void 0;var c,d,e=!1;a=0;for(c=Pa.length;a<c;a++)if(d=Pa[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=Pa.length;a<c;a++)d=Pa[a],d.program!==b&&e.push(d);Pa=e;m.deleteProgram(b);B.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){W.initAttributes();a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=m.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer= +m.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=m.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=m.createBuffer());a.hasPositions&&(m.bindBuffer(m.ARRAY_BUFFER,a.__webglVertexBuffer),m.bufferData(m.ARRAY_BUFFER,a.positionArray,m.DYNAMIC_DRAW),W.enableAttribute(b.attributes.position),m.vertexAttribPointer(b.attributes.position,3,m.FLOAT,!1,0,0));if(a.hasNormals){m.bindBuffer(m.ARRAY_BUFFER,a.__webglNormalBuffer);if(!1===c instanceof THREE.MeshPhongMaterial&& +c.shading===THREE.FlatShading){var d,e,f,g,h,k,n,l,p,q,r,s=3*a.count;for(r=0;r<s;r+=9)q=a.normalArray,d=q[r],e=q[r+1],f=q[r+2],g=q[r+3],k=q[r+4],l=q[r+5],h=q[r+6],n=q[r+7],p=q[r+8],d=(d+g+h)/3,e=(e+k+n)/3,f=(f+l+p)/3,q[r]=d,q[r+1]=e,q[r+2]=f,q[r+3]=d,q[r+4]=e,q[r+5]=f,q[r+6]=d,q[r+7]=e,q[r+8]=f}m.bufferData(m.ARRAY_BUFFER,a.normalArray,m.DYNAMIC_DRAW);W.enableAttribute(b.attributes.normal);m.vertexAttribPointer(b.attributes.normal,3,m.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(m.bindBuffer(m.ARRAY_BUFFER,a.__webglUvBuffer), +m.bufferData(m.ARRAY_BUFFER,a.uvArray,m.DYNAMIC_DRAW),W.enableAttribute(b.attributes.uv),m.vertexAttribPointer(b.attributes.uv,2,m.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(m.bindBuffer(m.ARRAY_BUFFER,a.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,a.colorArray,m.DYNAMIC_DRAW),W.enableAttribute(b.attributes.color),m.vertexAttribPointer(b.attributes.color,3,m.FLOAT,!1,0,0));W.disableUnusedAttributes();m.drawArrays(m.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a, +b,c,e,f,g){if(!1!==e.visible)if(t(g),a=v(a,b,c,e,g),b=!1,c="direct_"+f.id+"_"+a.id+"_"+(e.wireframe?1:0),c!==ta&&(ta=c,b=!0),b&&W.initAttributes(),g instanceof THREE.Mesh){g=!0===e.wireframe?m.LINES:m.TRIANGLES;var h=f.attributes.index;if(h){var k,n;h.array instanceof Uint32Array&&da.get("OES_element_index_uint")?(k=m.UNSIGNED_INT,n=4):(k=m.UNSIGNED_SHORT,n=2);c=f.offsets;if(0===c.length)b&&(d(e,a,f,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,h.buffer)),m.drawElements(g,h.array.length,k,0),B.info.render.calls++, +B.info.render.vertices+=h.array.length,B.info.render.faces+=h.array.length/3;else{b=!0;for(var l=0,p=c.length;l<p;l++){var q=c[l].index;b&&(d(e,a,f,q),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,h.buffer));m.drawElements(g,c[l].count,k,c[l].start*n);B.info.render.calls++;B.info.render.vertices+=c[l].count;B.info.render.faces+=c[l].count/3}}}else b&&d(e,a,f,0),e=f.attributes.position,m.drawArrays(g,0,e.array.length/e.itemSize),B.info.render.calls++,B.info.render.vertices+=e.array.length/e.itemSize,B.info.render.faces+= +e.array.length/(3*e.itemSize)}else if(g instanceof THREE.PointCloud)if(g=m.POINTS,h=f.attributes.index)if(h.array instanceof Uint32Array&&da.get("OES_element_index_uint")?(k=m.UNSIGNED_INT,n=4):(k=m.UNSIGNED_SHORT,n=2),c=f.offsets,0===c.length)b&&(d(e,a,f,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,h.buffer)),m.drawElements(g,h.array.length,k,0),B.info.render.calls++,B.info.render.points+=h.array.length;else for(1<c.length&&(b=!0),l=0,p=c.length;l<p;l++)q=c[l].index,b&&(d(e,a,f,q),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER, +h.buffer)),m.drawElements(g,c[l].count,k,c[l].start*n),B.info.render.calls++,B.info.render.points+=c[l].count;else if(b&&d(e,a,f,0),e=f.attributes.position,c=f.offsets,0===c.length)m.drawArrays(g,0,e.array.length/3),B.info.render.calls++,B.info.render.points+=e.array.length/3;else for(l=0,p=c.length;l<p;l++)m.drawArrays(g,c[l].index,c[l].count),B.info.render.calls++,B.info.render.points+=c[l].count;else if(g instanceof THREE.Line)if(g=g.mode===THREE.LineStrip?m.LINE_STRIP:m.LINES,W.setLineWidth(e.linewidth* +H),h=f.attributes.index)if(h.array instanceof Uint32Array?(k=m.UNSIGNED_INT,n=4):(k=m.UNSIGNED_SHORT,n=2),c=f.offsets,0===c.length)b&&(d(e,a,f,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,h.buffer)),m.drawElements(g,h.array.length,k,0),B.info.render.calls++,B.info.render.vertices+=h.array.length;else for(1<c.length&&(b=!0),l=0,p=c.length;l<p;l++)q=c[l].index,b&&(d(e,a,f,q),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,h.buffer)),m.drawElements(g,c[l].count,k,c[l].start*n),B.info.render.calls++,B.info.render.vertices+= +c[l].count;else if(b&&d(e,a,f,0),e=f.attributes.position,c=f.offsets,0===c.length)m.drawArrays(g,0,e.array.length/3),B.info.render.calls++,B.info.render.vertices+=e.array.length/3;else for(l=0,p=c.length;l<p;l++)m.drawArrays(g,c[l].index,c[l].count),B.info.render.calls++,B.info.render.vertices+=c[l].count};this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){t(f);c=v(a,b,c,d,f);b=c.attributes;a=!1;c=e.id+"_"+c.id+"_"+(d.wireframe?1:0);c!==ta&&(ta=c,a=!0);a&&W.initAttributes();if(!d.morphTargets&& +0<=b.position)a&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),W.enableAttribute(b.position),m.vertexAttribPointer(b.position,3,m.FLOAT,!1,0,0));else if(f.morphTargetBase){c=d.program.attributes;-1!==f.morphTargetBase&&0<=c.position?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]),W.enableAttribute(c.position),m.vertexAttribPointer(c.position,3,m.FLOAT,!1,0,0)):0<=c.position&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),W.enableAttribute(c.position),m.vertexAttribPointer(c.position, +3,m.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length)for(var h=0,k=f.morphTargetForcedOrder,n=f.morphTargetInfluences,l;h<d.numSupportedMorphTargets&&h<k.length;)l=c["morphTarget"+h],0<=l&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[k[h]]),W.enableAttribute(l),m.vertexAttribPointer(l,3,m.FLOAT,!1,0,0)),l=c["morphNormal"+h],0<=l&&d.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[k[h]]),W.enableAttribute(l),m.vertexAttribPointer(l,3,m.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[h]= +n[k[h]],h++;else{k=[];n=f.morphTargetInfluences;h=f.geometry.morphTargets;n.length>h.length&&(console.warn("THREE.WebGLRenderer: Influences array is bigger than morphTargets array."),n.length=h.length);h=0;for(l=n.length;h<l;h++)k.push([n[h],h]);k.length>d.numSupportedMorphTargets?(k.sort(g),k.length=d.numSupportedMorphTargets):k.length>d.numSupportedMorphNormals?k.sort(g):0===k.length&&k.push([0,0]);for(var h=0,p=d.numSupportedMorphTargets;h<p;h++)if(k[h]){var q=k[h][1];l=c["morphTarget"+h];0<=l&& +(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[q]),W.enableAttribute(l),m.vertexAttribPointer(l,3,m.FLOAT,!1,0,0));l=c["morphNormal"+h];0<=l&&d.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[q]),W.enableAttribute(l),m.vertexAttribPointer(l,3,m.FLOAT,!1,0,0));f.__webglMorphTargetInfluences[h]=n[q]}else f.__webglMorphTargetInfluences[h]=0}null!==d.program.uniforms.morphTargetInfluences&&m.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList)for(c= +0,n=e.__webglCustomAttributesList.length;c<n;c++)k=e.__webglCustomAttributesList[c],0<=b[k.buffer.belongsToAttribute]&&(m.bindBuffer(m.ARRAY_BUFFER,k.buffer),W.enableAttribute(b[k.buffer.belongsToAttribute]),m.vertexAttribPointer(b[k.buffer.belongsToAttribute],k.size,m.FLOAT,!1,0,0));0<=b.color&&(0<f.geometry.colors.length||0<f.geometry.faces.length?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglColorBuffer),W.enableAttribute(b.color),m.vertexAttribPointer(b.color,3,m.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&& +m.vertexAttrib3fv(b.color,d.defaultAttributeValues.color));0<=b.normal&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglNormalBuffer),W.enableAttribute(b.normal),m.vertexAttribPointer(b.normal,3,m.FLOAT,!1,0,0));0<=b.tangent&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglTangentBuffer),W.enableAttribute(b.tangent),m.vertexAttribPointer(b.tangent,4,m.FLOAT,!1,0,0));0<=b.uv&&(f.geometry.faceVertexUvs[0]?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglUVBuffer),W.enableAttribute(b.uv),m.vertexAttribPointer(b.uv,2,m.FLOAT,!1,0, +0)):void 0!==d.defaultAttributeValues&&m.vertexAttrib2fv(b.uv,d.defaultAttributeValues.uv));0<=b.uv2&&(f.geometry.faceVertexUvs[1]?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglUV2Buffer),W.enableAttribute(b.uv2),m.vertexAttribPointer(b.uv2,2,m.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&m.vertexAttrib2fv(b.uv2,d.defaultAttributeValues.uv2));d.skinning&&0<=b.skinIndex&&0<=b.skinWeight&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),W.enableAttribute(b.skinIndex),m.vertexAttribPointer(b.skinIndex, +4,m.FLOAT,!1,0,0),m.bindBuffer(m.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),W.enableAttribute(b.skinWeight),m.vertexAttribPointer(b.skinWeight,4,m.FLOAT,!1,0,0));0<=b.lineDistance&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglLineDistanceBuffer),W.enableAttribute(b.lineDistance),m.vertexAttribPointer(b.lineDistance,1,m.FLOAT,!1,0,0))}W.disableUnusedAttributes();f instanceof THREE.Mesh?(f=e.__typeArray===Uint32Array?m.UNSIGNED_INT:m.UNSIGNED_SHORT,d.wireframe?(W.setLineWidth(d.wireframeLinewidth*H),a&&m.bindBuffer(m.ELEMENT_ARRAY_BUFFER, +e.__webglLineBuffer),m.drawElements(m.LINES,e.__webglLineCount,f,0)):(a&&m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),m.drawElements(m.TRIANGLES,e.__webglFaceCount,f,0)),B.info.render.calls++,B.info.render.vertices+=e.__webglFaceCount,B.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.mode===THREE.LineStrip?m.LINE_STRIP:m.LINES,W.setLineWidth(d.linewidth*H),m.drawArrays(f,0,e.__webglLineCount),B.info.render.calls++):f instanceof THREE.PointCloud&&(m.drawArrays(m.POINTS, +0,e.__webglParticleCount),B.info.render.calls++,B.info.render.points+=e.__webglParticleCount)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)THREE.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var g=a.fog;ta="";ub=-1;vb=null;Ob=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();a.traverse(function(a){a instanceof THREE.SkinnedMesh&&a.skeleton.update()});b.matrixWorldInverse.getInverse(b.matrixWorld);db.multiplyMatrices(b.projectionMatrix, +b.matrixWorldInverse);cb.setFromMatrix(db);ca.length=0;Ka.length=0;Qa.length=0;Xa.length=0;Ya.length=0;h(a);!0===B.sortObjects&&(Ka.sort(e),Qa.sort(f));zc.render(a,b);B.info.render.calls=0;B.info.render.vertices=0;B.info.render.faces=0;B.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);d=0;for(var n=qa.length;d<n;d++){var m=qa[d],q=m.object;q.visible&&(w(q,b),p(m))}a.overrideMaterial?(d=a.overrideMaterial,u(d), +k(Ka,b,ca,g,d),k(Qa,b,ca,g,d),l(qa,"",b,ca,g,d)):(W.setBlending(THREE.NoBlending),k(Ka,b,ca,g,null),l(qa,"opaque",b,ca,g,null),k(Qa,b,ca,g,null),l(qa,"transparent",b,ca,g,null));Ac.render(a,b);Bc.render(a,b,Xb,fc);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&F(c);W.setDepthTest(!0);W.setDepthWrite(!0);W.setColorWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=v(a,b,c,d,e);ta="";B.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f, +m,cb):e.render(function(a){B.renderBufferImmediate(a,f,d)})};var Ua={},Qb=0,pc={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointCloudMaterial:"particle_basic"};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?m.disable(m.CULL_FACE):(b===THREE.FrontFaceDirectionCW?m.frontFace(m.CW):m.frontFace(m.CCW),a===THREE.CullFaceBack?m.cullFace(m.BACK):a=== +THREE.CullFaceFront?m.cullFace(m.FRONT):m.cullFace(m.FRONT_AND_BACK),m.enable(m.CULL_FACE))};this.setMaterialFaces=function(a){W.setDoubleSided(a.side===THREE.DoubleSide);W.setFlipSided(a.side===THREE.BackSide)};this.uploadTexture=function(a){void 0===a.__webglInit&&(a.__webglInit=!0,a.addEventListener("dispose",Pb),a.__webglTexture=m.createTexture(),B.info.memory.textures++);m.bindTexture(m.TEXTURE_2D,a.__webglTexture);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,a.flipY);m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL, +a.premultiplyAlpha);m.pixelStorei(m.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=E(a.image,tc);var b=a.image,c=THREE.Math.isPowerOfTwo(b.width)&&THREE.Math.isPowerOfTwo(b.height),d=I(a.format),e=I(a.type);A(m.TEXTURE_2D,a,c);var f=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<f.length&&c){for(var g=0,h=f.length;g<h;g++)b=f[g],m.texImage2D(m.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,d,b.width,b.height,0,d,e,b.data);else if(a instanceof THREE.CompressedTexture)for(g= +0,h=f.length;g<h;g++)b=f[g],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<kc().indexOf(d)?m.compressedTexImage2D(m.TEXTURE_2D,g,d,b.width,b.height,0,b.data):THREE.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):m.texImage2D(m.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);else if(0<f.length&&c){g=0;for(h=f.length;g<h;g++)b=f[g],m.texImage2D(m.TEXTURE_2D,g,d,d,e,b);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,d,d,e,a.image); +a.generateMipmaps&&c&&m.generateMipmap(m.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()};this.setTexture=function(a,b){m.activeTexture(m.TEXTURE0+b);a.needsUpdate?B.uploadTexture(a):m.bindTexture(m.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===a.__webglFramebuffer){void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",oc);a.__webglTexture=m.createTexture(); +B.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),d=I(a.format),e=I(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];m.bindTexture(m.TEXTURE_CUBE_MAP,a.__webglTexture);A(m.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=m.createFramebuffer();a.__webglRenderbuffer[f]=m.createRenderbuffer();m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=m.TEXTURE_CUBE_MAP_POSITIVE_X+f;m.bindFramebuffer(m.FRAMEBUFFER, +a.__webglFramebuffer[f]);m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,h,g.__webglTexture,0);G(a.__webglRenderbuffer[f],a)}c&&m.generateMipmap(m.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=m.createFramebuffer(),a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:m.createRenderbuffer(),m.bindTexture(m.TEXTURE_2D,a.__webglTexture),A(m.TEXTURE_2D,a,c),m.texImage2D(m.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=m.TEXTURE_2D,m.bindFramebuffer(m.FRAMEBUFFER,a.__webglFramebuffer), +m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):G(a.__webglRenderbuffer,a),c&&m.generateMipmap(m.TEXTURE_2D);b?m.bindTexture(m.TEXTURE_CUBE_MAP,null):m.bindTexture(m.TEXTURE_2D,null);m.bindRenderbuffer(m.RENDERBUFFER, +null);m.bindFramebuffer(m.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=pb,a=qb,d=ib,e=bb);b!==ab&&(m.bindFramebuffer(m.FRAMEBUFFER,b),m.viewport(d,e,c,a),ab=b);Xb=c;fc=a};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if(a.__webglFramebuffer)if(a.format!==THREE.RGBAFormat)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format."); +else{var g=!1;a.__webglFramebuffer!==ab&&(m.bindFramebuffer(m.FRAMEBUFFER,a.__webglFramebuffer),g=!0);m.checkFramebufferStatus(m.FRAMEBUFFER)===m.FRAMEBUFFER_COMPLETE?m.readPixels(b,c,d,e,m.RGBA,m.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&m.bindFramebuffer(m.FRAMEBUFFER,ab)}};this.initMaterial=function(){THREE.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){THREE.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")}; +this.addPostPlugin=function(){THREE.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){THREE.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")}}; THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format: -THREE.RGBAFormat;this.type=void 0!==c.type?c.type:THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0;this.shareDepthFrom=null}; +THREE.RGBAFormat;this.type=void 0!==c.type?c.type:THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0;this.shareDepthFrom=void 0!==c.shareDepthFrom?c.shareDepthFrom:null}; THREE.WebGLRenderTarget.prototype={constructor:THREE.WebGLRenderTarget,setSize:function(a,b){this.width=a;this.height=b},clone:function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.anisotropy=this.anisotropy;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;a.generateMipmaps=this.generateMipmaps; a.shareDepthFrom=this.shareDepthFrom;return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.WebGLRenderTarget.prototype);THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0};THREE.WebGLRenderTargetCube.prototype=Object.create(THREE.WebGLRenderTarget.prototype);THREE.WebGLRenderTargetCube.prototype.constructor=THREE.WebGLRenderTargetCube; THREE.WebGLExtensions=function(a){var b={};this.get=function(c){if(void 0!==b[c])return b[c];var d;switch(c){case "EXT_texture_filter_anisotropic":d=a.getExtension("EXT_texture_filter_anisotropic")||a.getExtension("MOZ_EXT_texture_filter_anisotropic")||a.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case "WEBGL_compressed_texture_s3tc":d=a.getExtension("WEBGL_compressed_texture_s3tc")||a.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"); -break;case "WEBGL_compressed_texture_pvrtc":d=a.getExtension("WEBGL_compressed_texture_pvrtc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:d=a.getExtension(c)}null===d&&console.log("THREE.WebGLRenderer: "+c+" extension not supported.");return b[c]=d}}; -THREE.WebGLProgram=function(){var a=0;return function(b,c,d,e){var f=b.context,g=d.defines,h=d.__webglShader.uniforms,k=d.attributes,n=d.__webglShader.vertexShader,p=d.__webglShader.fragmentShader,q=d.index0AttributeName;void 0===q&&!0===e.morphTargets&&(q="position");var m="SHADOWMAP_TYPE_BASIC";e.shadowMapType===THREE.PCFShadowMap?m="SHADOWMAP_TYPE_PCF":e.shadowMapType===THREE.PCFSoftShadowMap&&(m="SHADOWMAP_TYPE_PCF_SOFT");var t="ENVMAP_TYPE_CUBE",s="ENVMAP_MODE_REFLECTION",r="ENVMAP_BLENDING_MULTIPLY"; -if(e.envMap){switch(d.envMap.mapping){case THREE.CubeReflectionMapping:case THREE.CubeRefractionMapping:t="ENVMAP_TYPE_CUBE";break;case THREE.EquirectangularReflectionMapping:case THREE.EquirectangularRefractionMapping:t="ENVMAP_TYPE_EQUIREC";break;case THREE.SphericalReflectionMapping:t="ENVMAP_TYPE_SPHERE"}switch(d.envMap.mapping){case THREE.CubeRefractionMapping:case THREE.EquirectangularRefractionMapping:s="ENVMAP_MODE_REFRACTION"}switch(d.combine){case THREE.MultiplyOperation:r="ENVMAP_BLENDING_MULTIPLY"; -break;case THREE.MixOperation:r="ENVMAP_BLENDING_MIX";break;case THREE.AddOperation:r="ENVMAP_BLENDING_ADD"}}var u,v;u=[];for(var y in g)v=g[y],!1!==v&&(v="#define "+y+" "+v,u.push(v));u=u.join("\n");g=f.createProgram();d instanceof THREE.RawShaderMaterial?b=d="":(d=["precision "+e.precision+" float;","precision "+e.precision+" int;",u,e.supportsVertexTextures?"#define VERTEX_TEXTURES":"",b.gammaInput?"#define GAMMA_INPUT":"",b.gammaOutput?"#define GAMMA_OUTPUT":"","#define MAX_DIR_LIGHTS "+e.maxDirLights, -"#define MAX_POINT_LIGHTS "+e.maxPointLights,"#define MAX_SPOT_LIGHTS "+e.maxSpotLights,"#define MAX_HEMI_LIGHTS "+e.maxHemiLights,"#define MAX_SHADOWS "+e.maxShadows,"#define MAX_BONES "+e.maxBones,e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+s:"",e.lightMap?"#define USE_LIGHTMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.vertexColors?"#define USE_COLOR": -"",e.skinning?"#define USE_SKINNING":"",e.useVertexTexture?"#define BONE_TEXTURE":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals?"#define USE_MORPHNORMALS":"",e.wrapAround?"#define WRAP_AROUND":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+m:"",e.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",e.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",e.sizeAttenuation?"#define USE_SIZEATTENUATION": -"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\n\tattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\n\tattribute vec3 morphTarget0;\n\tattribute vec3 morphTarget1;\n\tattribute vec3 morphTarget2;\n\tattribute vec3 morphTarget3;\n\t#ifdef USE_MORPHNORMALS\n\t\tattribute vec3 morphNormal0;\n\t\tattribute vec3 morphNormal1;\n\t\tattribute vec3 morphNormal2;\n\t\tattribute vec3 morphNormal3;\n\t#else\n\t\tattribute vec3 morphTarget4;\n\t\tattribute vec3 morphTarget5;\n\t\tattribute vec3 morphTarget6;\n\t\tattribute vec3 morphTarget7;\n\t#endif\n#endif\n#ifdef USE_SKINNING\n\tattribute vec4 skinIndex;\n\tattribute vec4 skinWeight;\n#endif\n"].join("\n"), -b=["precision "+e.precision+" float;","precision "+e.precision+" int;",e.bumpMap||e.normalMap?"#extension GL_OES_standard_derivatives : enable":"",u,"#define MAX_DIR_LIGHTS "+e.maxDirLights,"#define MAX_POINT_LIGHTS "+e.maxPointLights,"#define MAX_SPOT_LIGHTS "+e.maxSpotLights,"#define MAX_HEMI_LIGHTS "+e.maxHemiLights,"#define MAX_SHADOWS "+e.maxShadows,e.alphaTest?"#define ALPHATEST "+e.alphaTest:"",b.gammaInput?"#define GAMMA_INPUT":"",b.gammaOutput?"#define GAMMA_OUTPUT":"",e.useFog&&e.fog?"#define USE_FOG": -"",e.useFog&&e.fogExp?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+t:"",e.envMap?"#define "+s:"",e.envMap?"#define "+r:"",e.lightMap?"#define USE_LIGHTMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.vertexColors?"#define USE_COLOR":"",e.metal?"#define METAL":"",e.wrapAround?"#define WRAP_AROUND":"",e.doubleSided?"#define DOUBLE_SIDED": -"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+m:"",e.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",e.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n"));n=new THREE.WebGLShader(f,f.VERTEX_SHADER,d+n);p=new THREE.WebGLShader(f,f.FRAGMENT_SHADER,b+p);f.attachShader(g,n);f.attachShader(g,p);void 0!==q&&f.bindAttribLocation(g, -0,q);f.linkProgram(g);!1===f.getProgramParameter(g,f.LINK_STATUS)&&(console.error("THREE.WebGLProgram: Could not initialise shader."),console.error("gl.VALIDATE_STATUS",f.getProgramParameter(g,f.VALIDATE_STATUS)),console.error("gl.getError()",f.getError()));""!==f.getProgramInfoLog(g)&&console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",f.getProgramInfoLog(g));f.deleteShader(n);f.deleteShader(p);q="viewMatrix modelViewMatrix projectionMatrix normalMatrix modelMatrix cameraPosition morphTargetInfluences bindMatrix bindMatrixInverse".split(" "); -e.useVertexTexture?(q.push("boneTexture"),q.push("boneTextureWidth"),q.push("boneTextureHeight")):q.push("boneGlobalMatrices");e.logarithmicDepthBuffer&&q.push("logDepthBufFC");for(var C in h)q.push(C);h=q;C={};q=0;for(b=h.length;q<b;q++)m=h[q],C[m]=f.getUniformLocation(g,m);this.uniforms=C;q="position normal uv uv2 tangent color skinIndex skinWeight lineDistance".split(" ");for(h=0;h<e.maxMorphTargets;h++)q.push("morphTarget"+h);for(h=0;h<e.maxMorphNormals;h++)q.push("morphNormal"+h);for(var x in k)q.push(x); -e=q;k={};x=0;for(h=e.length;x<h;x++)C=e[x],k[C]=f.getAttribLocation(g,C);this.attributes=k;this.attributesKeys=Object.keys(this.attributes);this.id=a++;this.code=c;this.usedTimes=1;this.program=g;this.vertexShader=n;this.fragmentShader=p;return this}}(); -THREE.WebGLShader=function(){var a=function(a){a=a.split("\n");for(var c=0;c<a.length;c++)a[c]=c+1+": "+a[c];return a.join("\n")};return function(b,c,d){c=b.createShader(c);b.shaderSource(c,d);b.compileShader(c);!1===b.getShaderParameter(c,b.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile.");""!==b.getShaderInfoLog(c)&&(console.warn("THREE.WebGLShader: gl.getShaderInfoLog()",b.getShaderInfoLog(c)),console.warn(a(d)));return c}}(); -THREE.LensFlarePlugin=function(a,b){var c,d,e,f,g,h,k,n,p,q,m=a.context,t,s,r,u,v,y;this.render=function(C,x,F,z){if(0!==b.length){C=new THREE.Vector3;var G=z/F,E=.5*F,w=.5*z,D=16/z,A=new THREE.Vector2(D*G,D),U=new THREE.Vector3(1,1,0),M=new THREE.Vector2(1,1);if(void 0===r){var D=new Float32Array([-1,-1,0,0,1,-1,1,0,1,1,1,1,-1,1,0,1]),K=new Uint16Array([0,1,2,0,2,3]);t=m.createBuffer();s=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,t);m.bufferData(m.ARRAY_BUFFER,D,m.STATIC_DRAW);m.bindBuffer(m.ELEMENT_ARRAY_BUFFER, -s);m.bufferData(m.ELEMENT_ARRAY_BUFFER,K,m.STATIC_DRAW);v=m.createTexture();y=m.createTexture();m.bindTexture(m.TEXTURE_2D,v);m.texImage2D(m.TEXTURE_2D,0,m.RGB,16,16,0,m.RGB,m.UNSIGNED_BYTE,null);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.NEAREST);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.NEAREST);m.bindTexture(m.TEXTURE_2D,y);m.texImage2D(m.TEXTURE_2D,0, -m.RGBA,16,16,0,m.RGBA,m.UNSIGNED_BYTE,null);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.NEAREST);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.NEAREST);var D=(u=0<m.getParameter(m.MAX_VERTEX_TEXTURE_IMAGE_UNITS))?{vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nuniform sampler2D occlusionMap;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif( renderType == 2 ) {\nvec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\nvVisibility = visibility.r / 9.0;\nvVisibility *= 1.0 - visibility.g / 9.0;\nvVisibility *= visibility.b / 9.0;\nvVisibility *= 1.0 - visibility.a / 9.0;\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}", +break;case "WEBGL_compressed_texture_pvrtc":d=a.getExtension("WEBGL_compressed_texture_pvrtc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:d=a.getExtension(c)}null===d&&THREE.warn("THREE.WebGLRenderer: "+c+" extension not supported.");return b[c]=d}}; +THREE.WebGLProgram=function(){var a=0;return function(b,c,d,e){var f=b.context,g=d.defines,h=d.__webglShader.uniforms,k=d.attributes,l=d.__webglShader.vertexShader,p=d.__webglShader.fragmentShader,q=d.index0AttributeName;void 0===q&&!0===e.morphTargets&&(q="position");var n="SHADOWMAP_TYPE_BASIC";e.shadowMapType===THREE.PCFShadowMap?n="SHADOWMAP_TYPE_PCF":e.shadowMapType===THREE.PCFSoftShadowMap&&(n="SHADOWMAP_TYPE_PCF_SOFT");var t="ENVMAP_TYPE_CUBE",r="ENVMAP_MODE_REFLECTION",s="ENVMAP_BLENDING_MULTIPLY"; +if(e.envMap){switch(d.envMap.mapping){case THREE.CubeReflectionMapping:case THREE.CubeRefractionMapping:t="ENVMAP_TYPE_CUBE";break;case THREE.EquirectangularReflectionMapping:case THREE.EquirectangularRefractionMapping:t="ENVMAP_TYPE_EQUIREC";break;case THREE.SphericalReflectionMapping:t="ENVMAP_TYPE_SPHERE"}switch(d.envMap.mapping){case THREE.CubeRefractionMapping:case THREE.EquirectangularRefractionMapping:r="ENVMAP_MODE_REFRACTION"}switch(d.combine){case THREE.MultiplyOperation:s="ENVMAP_BLENDING_MULTIPLY"; +break;case THREE.MixOperation:s="ENVMAP_BLENDING_MIX";break;case THREE.AddOperation:s="ENVMAP_BLENDING_ADD"}}var u=0<b.gammaFactor?b.gammaFactor:1,v,x;v=[];for(var D in g)x=g[D],!1!==x&&(x="#define "+D+" "+x,v.push(x));v=v.join("\n");g=f.createProgram();d instanceof THREE.RawShaderMaterial?b=d="":(d=["precision "+e.precision+" float;","precision "+e.precision+" int;",v,e.supportsVertexTextures?"#define VERTEX_TEXTURES":"",b.gammaInput?"#define GAMMA_INPUT":"",b.gammaOutput?"#define GAMMA_OUTPUT": +"","#define GAMMA_FACTOR "+u,"#define MAX_DIR_LIGHTS "+e.maxDirLights,"#define MAX_POINT_LIGHTS "+e.maxPointLights,"#define MAX_SPOT_LIGHTS "+e.maxSpotLights,"#define MAX_HEMI_LIGHTS "+e.maxHemiLights,"#define MAX_SHADOWS "+e.maxShadows,"#define MAX_BONES "+e.maxBones,e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+r:"",e.lightMap?"#define USE_LIGHTMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.specularMap?"#define USE_SPECULARMAP": +"",e.alphaMap?"#define USE_ALPHAMAP":"",e.vertexColors?"#define USE_COLOR":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.useVertexTexture?"#define BONE_TEXTURE":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals?"#define USE_MORPHNORMALS":"",e.wrapAround?"#define WRAP_AROUND":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+n:"",e.shadowMapDebug? +"#define SHADOWMAP_DEBUG":"",e.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\n\tattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\n\tattribute vec3 morphTarget0;\n\tattribute vec3 morphTarget1;\n\tattribute vec3 morphTarget2;\n\tattribute vec3 morphTarget3;\n\t#ifdef USE_MORPHNORMALS\n\t\tattribute vec3 morphNormal0;\n\t\tattribute vec3 morphNormal1;\n\t\tattribute vec3 morphNormal2;\n\t\tattribute vec3 morphNormal3;\n\t#else\n\t\tattribute vec3 morphTarget4;\n\t\tattribute vec3 morphTarget5;\n\t\tattribute vec3 morphTarget6;\n\t\tattribute vec3 morphTarget7;\n\t#endif\n#endif\n#ifdef USE_SKINNING\n\tattribute vec4 skinIndex;\n\tattribute vec4 skinWeight;\n#endif\n"].join("\n"), +b=["precision "+e.precision+" float;","precision "+e.precision+" int;",e.bumpMap||e.normalMap||e.flatShading?"#extension GL_OES_standard_derivatives : enable":"",v,"#define MAX_DIR_LIGHTS "+e.maxDirLights,"#define MAX_POINT_LIGHTS "+e.maxPointLights,"#define MAX_SPOT_LIGHTS "+e.maxSpotLights,"#define MAX_HEMI_LIGHTS "+e.maxHemiLights,"#define MAX_SHADOWS "+e.maxShadows,e.alphaTest?"#define ALPHATEST "+e.alphaTest:"",b.gammaInput?"#define GAMMA_INPUT":"",b.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+ +u,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+t:"",e.envMap?"#define "+r:"",e.envMap?"#define "+s:"",e.lightMap?"#define USE_LIGHTMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.vertexColors?"#define USE_COLOR":"",e.flatShading?"#define FLAT_SHADED":"",e.metal?"#define METAL": +"",e.wrapAround?"#define WRAP_AROUND":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+n:"",e.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",e.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n"));l=new THREE.WebGLShader(f,f.VERTEX_SHADER,d+l);p=new THREE.WebGLShader(f,f.FRAGMENT_SHADER, +b+p);f.attachShader(g,l);f.attachShader(g,p);void 0!==q&&f.bindAttribLocation(g,0,q);f.linkProgram(g);q=f.getProgramInfoLog(g);!1===f.getProgramParameter(g,f.LINK_STATUS)&&THREE.error("THREE.WebGLProgram: shader error: "+f.getError(),"gl.VALIDATE_STATUS",f.getProgramParameter(g,f.VALIDATE_STATUS),"gl.getPRogramInfoLog",q);""!==q&&THREE.warn("THREE.WebGLProgram: gl.getProgramInfoLog()"+q);f.deleteShader(l);f.deleteShader(p);q="viewMatrix modelViewMatrix projectionMatrix normalMatrix modelMatrix cameraPosition morphTargetInfluences bindMatrix bindMatrixInverse".split(" "); +e.useVertexTexture?(q.push("boneTexture"),q.push("boneTextureWidth"),q.push("boneTextureHeight")):q.push("boneGlobalMatrices");e.logarithmicDepthBuffer&&q.push("logDepthBufFC");for(var w in h)q.push(w);h=q;w={};q=0;for(b=h.length;q<b;q++)n=h[q],w[n]=f.getUniformLocation(g,n);this.uniforms=w;q="position normal uv uv2 tangent color skinIndex skinWeight lineDistance".split(" ");for(h=0;h<e.maxMorphTargets;h++)q.push("morphTarget"+h);for(h=0;h<e.maxMorphNormals;h++)q.push("morphNormal"+h);for(var y in k)q.push(y); +e=q;k={};y=0;for(h=e.length;y<h;y++)w=e[y],k[w]=f.getAttribLocation(g,w);this.attributes=k;this.attributesKeys=Object.keys(this.attributes);this.id=a++;this.code=c;this.usedTimes=1;this.program=g;this.vertexShader=l;this.fragmentShader=p;return this}}(); +THREE.WebGLShader=function(){var a=function(a){a=a.split("\n");for(var c=0;c<a.length;c++)a[c]=c+1+": "+a[c];return a.join("\n")};return function(b,c,d){c=b.createShader(c);b.shaderSource(c,d);b.compileShader(c);!1===b.getShaderParameter(c,b.COMPILE_STATUS)&&THREE.error("THREE.WebGLShader: Shader couldn't compile.");""!==b.getShaderInfoLog(c)&&THREE.warn("THREE.WebGLShader: gl.getShaderInfoLog()",b.getShaderInfoLog(c),a(d));return c}}(); +THREE.WebGLState=function(a,b){var c=new Uint8Array(16),d=new Uint8Array(16),e=null,f=null,g=null,h=null,k=null,l=null,p=null,q=null,n=null,t=null,r=null,s=null,u=null,v=null,x=null,D=null;this.initAttributes=function(){for(var a=0,b=c.length;a<b;a++)c[a]=0};this.enableAttribute=function(b){c[b]=1;0===d[b]&&(a.enableVertexAttribArray(b),d[b]=1)};this.disableUnusedAttributes=function(){for(var b=0,e=d.length;b<e;b++)d[b]!==c[b]&&(a.disableVertexAttribArray(b),d[b]=0)};this.setBlending=function(c,d, +n,q,r,s,t){c!==e&&(c===THREE.NoBlending?a.disable(a.BLEND):c===THREE.AdditiveBlending?(a.enable(a.BLEND),a.blendEquation(a.FUNC_ADD),a.blendFunc(a.SRC_ALPHA,a.ONE)):c===THREE.SubtractiveBlending?(a.enable(a.BLEND),a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.ONE_MINUS_SRC_COLOR)):c===THREE.MultiplyBlending?(a.enable(a.BLEND),a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.SRC_COLOR)):c===THREE.CustomBlending?a.enable(a.BLEND):(a.enable(a.BLEND),a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD), +a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA,a.ONE,a.ONE_MINUS_SRC_ALPHA)),e=c);if(c===THREE.CustomBlending){r=r||d;s=s||n;t=t||q;if(d!==f||r!==k)a.blendEquationSeparate(b(d),b(r)),f=d,k=r;if(n!==g||q!==h||s!==l||t!==p)a.blendFuncSeparate(b(n),b(q),b(s),b(t)),g=n,h=q,l=s,p=t}else p=l=k=h=g=f=null};this.setDepthTest=function(b){q!==b&&(b?a.enable(a.DEPTH_TEST):a.disable(a.DEPTH_TEST),q=b)};this.setDepthWrite=function(b){n!==b&&(a.depthMask(b),n=b)};this.setColorWrite=function(b){t!==b&&(a.colorMask(b, +b,b,b),t=b)};this.setDoubleSided=function(b){r!==b&&(b?a.disable(a.CULL_FACE):a.enable(a.CULL_FACE),r=b)};this.setFlipSided=function(b){s!==b&&(b?a.frontFace(a.CW):a.frontFace(a.CCW),s=b)};this.setLineWidth=function(b){b!==u&&(a.lineWidth(b),u=b)};this.setPolygonOffset=function(b,c,d){v!==b&&(b?a.enable(a.POLYGON_OFFSET_FILL):a.disable(a.POLYGON_OFFSET_FILL),v=b);!b||x===c&&D===d||(a.polygonOffset(c,d),x=c,D=d)};this.reset=function(){for(var a=0;a<d.length;a++)d[a]=0;s=r=t=n=q=e=null}}; +THREE.LensFlarePlugin=function(a,b){var c,d,e,f,g,h,k,l,p,q,n=a.context,t,r,s,u,v,x;this.render=function(D,w,y,A){if(0!==b.length){D=new THREE.Vector3;var E=A/y,G=.5*y,F=.5*A,z=16/A,I=new THREE.Vector2(z*E,z),U=new THREE.Vector3(1,1,0),M=new THREE.Vector2(1,1);if(void 0===s){var z=new Float32Array([-1,-1,0,0,1,-1,1,0,1,1,1,1,-1,1,0,1]),H=new Uint16Array([0,1,2,0,2,3]);t=n.createBuffer();r=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,t);n.bufferData(n.ARRAY_BUFFER,z,n.STATIC_DRAW);n.bindBuffer(n.ELEMENT_ARRAY_BUFFER, +r);n.bufferData(n.ELEMENT_ARRAY_BUFFER,H,n.STATIC_DRAW);v=n.createTexture();x=n.createTexture();n.bindTexture(n.TEXTURE_2D,v);n.texImage2D(n.TEXTURE_2D,0,n.RGB,16,16,0,n.RGB,n.UNSIGNED_BYTE,null);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.NEAREST);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.NEAREST);n.bindTexture(n.TEXTURE_2D,x);n.texImage2D(n.TEXTURE_2D,0, +n.RGBA,16,16,0,n.RGBA,n.UNSIGNED_BYTE,null);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.NEAREST);n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.NEAREST);var z=(u=0<n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS))?{vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nuniform sampler2D occlusionMap;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif( renderType == 2 ) {\nvec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\nvVisibility = visibility.r / 9.0;\nvVisibility *= 1.0 - visibility.g / 9.0;\nvVisibility *= visibility.b / 9.0;\nvVisibility *= 1.0 - visibility.a / 9.0;\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}", fragmentShader:"uniform lowp int renderType;\nuniform sampler2D map;\nuniform float opacity;\nuniform vec3 color;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nif( renderType == 0 ) {\ngl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\n} else if( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nvec4 texture = texture2D( map, vUV );\ntexture.a *= opacity * vVisibility;\ngl_FragColor = texture;\ngl_FragColor.rgb *= color;\n}\n}"}:{vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif( renderType == 2 ) {\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}", fragmentShader:"precision mediump float;\nuniform lowp int renderType;\nuniform sampler2D map;\nuniform sampler2D occlusionMap;\nuniform float opacity;\nuniform vec3 color;\nvarying vec2 vUV;\nvoid main() {\nif( renderType == 0 ) {\ngl_FragColor = vec4( texture2D( map, vUV ).rgb, 0.0 );\n} else if( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nfloat visibility = texture2D( occlusionMap, vec2( 0.5, 0.1 ) ).a;\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) ).a;\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) ).a;\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) ).a;\nvisibility = ( 1.0 - visibility / 4.0 );\nvec4 texture = texture2D( map, vUV );\ntexture.a *= opacity * visibility;\ngl_FragColor = texture;\ngl_FragColor.rgb *= color;\n}\n}"}, -K=m.createProgram(),L=m.createShader(m.FRAGMENT_SHADER),N=m.createShader(m.VERTEX_SHADER),T="precision "+a.getPrecision()+" float;\n";m.shaderSource(L,T+D.fragmentShader);m.shaderSource(N,T+D.vertexShader);m.compileShader(L);m.compileShader(N);m.attachShader(K,L);m.attachShader(K,N);m.linkProgram(K);r=K;p=m.getAttribLocation(r,"position");q=m.getAttribLocation(r,"uv");c=m.getUniformLocation(r,"renderType");d=m.getUniformLocation(r,"map");e=m.getUniformLocation(r,"occlusionMap");f=m.getUniformLocation(r, -"opacity");g=m.getUniformLocation(r,"color");h=m.getUniformLocation(r,"scale");k=m.getUniformLocation(r,"rotation");n=m.getUniformLocation(r,"screenPosition")}m.useProgram(r);m.enableVertexAttribArray(p);m.enableVertexAttribArray(q);m.uniform1i(e,0);m.uniform1i(d,1);m.bindBuffer(m.ARRAY_BUFFER,t);m.vertexAttribPointer(p,2,m.FLOAT,!1,16,0);m.vertexAttribPointer(q,2,m.FLOAT,!1,16,8);m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,s);m.disable(m.CULL_FACE);m.depthMask(!1);K=0;for(L=b.length;K<L;K++)if(D=16/z,A.set(D* -G,D),N=b[K],C.set(N.matrixWorld.elements[12],N.matrixWorld.elements[13],N.matrixWorld.elements[14]),C.applyMatrix4(x.matrixWorldInverse),C.applyProjection(x.projectionMatrix),U.copy(C),M.x=U.x*E+E,M.y=U.y*w+w,u||0<M.x&&M.x<F&&0<M.y&&M.y<z){m.activeTexture(m.TEXTURE1);m.bindTexture(m.TEXTURE_2D,v);m.copyTexImage2D(m.TEXTURE_2D,0,m.RGB,M.x-8,M.y-8,16,16,0);m.uniform1i(c,0);m.uniform2f(h,A.x,A.y);m.uniform3f(n,U.x,U.y,U.z);m.disable(m.BLEND);m.enable(m.DEPTH_TEST);m.drawElements(m.TRIANGLES,6,m.UNSIGNED_SHORT, -0);m.activeTexture(m.TEXTURE0);m.bindTexture(m.TEXTURE_2D,y);m.copyTexImage2D(m.TEXTURE_2D,0,m.RGBA,M.x-8,M.y-8,16,16,0);m.uniform1i(c,1);m.disable(m.DEPTH_TEST);m.activeTexture(m.TEXTURE1);m.bindTexture(m.TEXTURE_2D,v);m.drawElements(m.TRIANGLES,6,m.UNSIGNED_SHORT,0);N.positionScreen.copy(U);N.customUpdateCallback?N.customUpdateCallback(N):N.updateLensFlares();m.uniform1i(c,2);m.enable(m.BLEND);for(var T=0,Q=N.lensFlares.length;T<Q;T++){var W=N.lensFlares[T];.001<W.opacity&&.001<W.scale&&(U.x=W.x, -U.y=W.y,U.z=W.z,D=W.size*W.scale/z,A.x=D*G,A.y=D,m.uniform3f(n,U.x,U.y,U.z),m.uniform2f(h,A.x,A.y),m.uniform1f(k,W.rotation),m.uniform1f(f,W.opacity),m.uniform3f(g,W.color.r,W.color.g,W.color.b),a.setBlending(W.blending,W.blendEquation,W.blendSrc,W.blendDst),a.setTexture(W.texture,1),m.drawElements(m.TRIANGLES,6,m.UNSIGNED_SHORT,0))}}m.enable(m.CULL_FACE);m.enable(m.DEPTH_TEST);m.depthMask(!0);a.resetGLState()}}}; -THREE.ShadowMapPlugin=function(a,b,c,d){function e(a,b,d){if(b.visible){var g=c[b.id];if(g&&b.castShadow&&(!1===b.frustumCulled||!0===p.intersectsObject(b)))for(var f=0,h=g.length;f<h;f++){var k=g[f];b._modelViewMatrix.multiplyMatrices(d.matrixWorldInverse,b.matrixWorld);r.push(k)}f=0;for(h=b.children.length;f<h;f++)e(a,b.children[f],d)}}var f=a.context,g,h,k,n,p=new THREE.Frustum,q=new THREE.Matrix4,m=new THREE.Vector3,t=new THREE.Vector3,s=new THREE.Vector3,r=[],u=THREE.ShaderLib.depthRGBA,v=THREE.UniformsUtils.clone(u.uniforms); -g=new THREE.ShaderMaterial({uniforms:v,vertexShader:u.vertexShader,fragmentShader:u.fragmentShader});h=new THREE.ShaderMaterial({uniforms:v,vertexShader:u.vertexShader,fragmentShader:u.fragmentShader,morphTargets:!0});k=new THREE.ShaderMaterial({uniforms:v,vertexShader:u.vertexShader,fragmentShader:u.fragmentShader,skinning:!0});n=new THREE.ShaderMaterial({uniforms:v,vertexShader:u.vertexShader,fragmentShader:u.fragmentShader,morphTargets:!0,skinning:!0});g._shadowPass=!0;h._shadowPass=!0;k._shadowPass= -!0;n._shadowPass=!0;this.render=function(c,v){if(!1!==a.shadowMapEnabled){var u,F,z,G,E,w,D,A,U=[];G=0;f.clearColor(1,1,1,1);f.disable(f.BLEND);f.enable(f.CULL_FACE);f.frontFace(f.CCW);a.shadowMapCullFace===THREE.CullFaceFront?f.cullFace(f.FRONT):f.cullFace(f.BACK);a.setDepthTest(!0);u=0;for(F=b.length;u<F;u++)if(z=b[u],z.castShadow)if(z instanceof THREE.DirectionalLight&&z.shadowCascade)for(E=0;E<z.shadowCascadeCount;E++){var M;if(z.shadowCascadeArray[E])M=z.shadowCascadeArray[E];else{D=z;var K= -E;M=new THREE.DirectionalLight;M.isVirtual=!0;M.onlyShadow=!0;M.castShadow=!0;M.shadowCameraNear=D.shadowCameraNear;M.shadowCameraFar=D.shadowCameraFar;M.shadowCameraLeft=D.shadowCameraLeft;M.shadowCameraRight=D.shadowCameraRight;M.shadowCameraBottom=D.shadowCameraBottom;M.shadowCameraTop=D.shadowCameraTop;M.shadowCameraVisible=D.shadowCameraVisible;M.shadowDarkness=D.shadowDarkness;M.shadowBias=D.shadowCascadeBias[K];M.shadowMapWidth=D.shadowCascadeWidth[K];M.shadowMapHeight=D.shadowCascadeHeight[K]; -M.pointsWorld=[];M.pointsFrustum=[];A=M.pointsWorld;w=M.pointsFrustum;for(var L=0;8>L;L++)A[L]=new THREE.Vector3,w[L]=new THREE.Vector3;A=D.shadowCascadeNearZ[K];D=D.shadowCascadeFarZ[K];w[0].set(-1,-1,A);w[1].set(1,-1,A);w[2].set(-1,1,A);w[3].set(1,1,A);w[4].set(-1,-1,D);w[5].set(1,-1,D);w[6].set(-1,1,D);w[7].set(1,1,D);M.originalCamera=v;w=new THREE.Gyroscope;w.position.copy(z.shadowCascadeOffset);w.add(M);w.add(M.target);v.add(w);z.shadowCascadeArray[E]=M;console.log("Created virtualLight",M)}K= -z;A=E;D=K.shadowCascadeArray[A];D.position.copy(K.position);D.target.position.copy(K.target.position);D.lookAt(D.target);D.shadowCameraVisible=K.shadowCameraVisible;D.shadowDarkness=K.shadowDarkness;D.shadowBias=K.shadowCascadeBias[A];w=K.shadowCascadeNearZ[A];K=K.shadowCascadeFarZ[A];D=D.pointsFrustum;D[0].z=w;D[1].z=w;D[2].z=w;D[3].z=w;D[4].z=K;D[5].z=K;D[6].z=K;D[7].z=K;U[G]=M;G++}else U[G]=z,G++;u=0;for(F=U.length;u<F;u++){z=U[u];z.shadowMap||(E=THREE.LinearFilter,a.shadowMapType===THREE.PCFSoftShadowMap&& -(E=THREE.NearestFilter),z.shadowMap=new THREE.WebGLRenderTarget(z.shadowMapWidth,z.shadowMapHeight,{minFilter:E,magFilter:E,format:THREE.RGBAFormat}),z.shadowMapSize=new THREE.Vector2(z.shadowMapWidth,z.shadowMapHeight),z.shadowMatrix=new THREE.Matrix4);if(!z.shadowCamera){if(z instanceof THREE.SpotLight)z.shadowCamera=new THREE.PerspectiveCamera(z.shadowCameraFov,z.shadowMapWidth/z.shadowMapHeight,z.shadowCameraNear,z.shadowCameraFar);else if(z instanceof THREE.DirectionalLight)z.shadowCamera=new THREE.OrthographicCamera(z.shadowCameraLeft, -z.shadowCameraRight,z.shadowCameraTop,z.shadowCameraBottom,z.shadowCameraNear,z.shadowCameraFar);else{console.error("Unsupported light type for shadow");continue}c.add(z.shadowCamera);!0===c.autoUpdate&&c.updateMatrixWorld()}z.shadowCameraVisible&&!z.cameraHelper&&(z.cameraHelper=new THREE.CameraHelper(z.shadowCamera),c.add(z.cameraHelper));if(z.isVirtual&&M.originalCamera==v){E=v;G=z.shadowCamera;w=z.pointsFrustum;D=z.pointsWorld;m.set(Infinity,Infinity,Infinity);t.set(-Infinity,-Infinity,-Infinity); -for(K=0;8>K;K++)A=D[K],A.copy(w[K]),A.unproject(E),A.applyMatrix4(G.matrixWorldInverse),A.x<m.x&&(m.x=A.x),A.x>t.x&&(t.x=A.x),A.y<m.y&&(m.y=A.y),A.y>t.y&&(t.y=A.y),A.z<m.z&&(m.z=A.z),A.z>t.z&&(t.z=A.z);G.left=m.x;G.right=t.x;G.top=t.y;G.bottom=m.y;G.updateProjectionMatrix()}G=z.shadowMap;w=z.shadowMatrix;E=z.shadowCamera;E.position.setFromMatrixPosition(z.matrixWorld);s.setFromMatrixPosition(z.target.matrixWorld);E.lookAt(s);E.updateMatrixWorld();E.matrixWorldInverse.getInverse(E.matrixWorld);z.cameraHelper&& -(z.cameraHelper.visible=z.shadowCameraVisible);z.shadowCameraVisible&&z.cameraHelper.update();w.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);w.multiply(E.projectionMatrix);w.multiply(E.matrixWorldInverse);q.multiplyMatrices(E.projectionMatrix,E.matrixWorldInverse);p.setFromMatrix(q);a.setRenderTarget(G);a.clear();r.length=0;e(c,c,E);z=0;for(G=r.length;z<G;z++)D=r[z],w=D.object,D=D.buffer,K=w.material instanceof THREE.MeshFaceMaterial?w.material.materials[0]:w.material,A=void 0!==w.geometry.morphTargets&& -0<w.geometry.morphTargets.length&&K.morphTargets,L=w instanceof THREE.SkinnedMesh&&K.skinning,A=w.customDepthMaterial?w.customDepthMaterial:L?A?n:k:A?h:g,a.setMaterialFaces(K),D instanceof THREE.BufferGeometry?a.renderBufferDirect(E,b,null,A,D,w):a.renderBuffer(E,b,null,A,D,w);z=0;for(G=d.length;z<G;z++)D=d[z],w=D.object,w.visible&&w.castShadow&&(w._modelViewMatrix.multiplyMatrices(E.matrixWorldInverse,w.matrixWorld),a.renderImmediateObject(E,b,null,g,w))}u=a.getClearColor();F=a.getClearAlpha();f.clearColor(u.r, -u.g,u.b,F);f.enable(f.BLEND);a.shadowMapCullFace===THREE.CullFaceFront&&f.cullFace(f.BACK);a.resetGLState()}}}; -THREE.SpritePlugin=function(a,b){var c,d,e,f,g,h,k,n,p,q,m,t,s,r,u,v,y;function C(a,b){return a.z!==b.z?b.z-a.z:b.id-a.id}var x=a.context,F,z,G,E,w=new THREE.Vector3,D=new THREE.Quaternion,A=new THREE.Vector3;this.render=function(U,M){if(0!==b.length){if(void 0===G){var K=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),L=new Uint16Array([0,1,2,0,2,3]);F=x.createBuffer();z=x.createBuffer();x.bindBuffer(x.ARRAY_BUFFER,F);x.bufferData(x.ARRAY_BUFFER,K,x.STATIC_DRAW);x.bindBuffer(x.ELEMENT_ARRAY_BUFFER, -z);x.bufferData(x.ELEMENT_ARRAY_BUFFER,L,x.STATIC_DRAW);var K=x.createProgram(),L=x.createShader(x.VERTEX_SHADER),N=x.createShader(x.FRAGMENT_SHADER);x.shaderSource(L,["precision "+a.getPrecision()+" float;","uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float rotation;\nuniform vec2 scale;\nuniform vec2 uvOffset;\nuniform vec2 uvScale;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uvOffset + uv * uvScale;\nvec2 alignedPosition = position * scale;\nvec2 rotatedPosition;\nrotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\nrotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\nvec4 finalPosition;\nfinalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\nfinalPosition.xy += rotatedPosition;\nfinalPosition = projectionMatrix * finalPosition;\ngl_Position = finalPosition;\n}"].join("\n")); -x.shaderSource(N,["precision "+a.getPrecision()+" float;","uniform vec3 color;\nuniform sampler2D map;\nuniform float opacity;\nuniform int fogType;\nuniform vec3 fogColor;\nuniform float fogDensity;\nuniform float fogNear;\nuniform float fogFar;\nuniform float alphaTest;\nvarying vec2 vUV;\nvoid main() {\nvec4 texture = texture2D( map, vUV );\nif ( texture.a < alphaTest ) discard;\ngl_FragColor = vec4( color * texture.xyz, texture.a * opacity );\nif ( fogType > 0 ) {\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\nfloat fogFactor = 0.0;\nif ( fogType == 1 ) {\nfogFactor = smoothstep( fogNear, fogFar, depth );\n} else {\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n}\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}\n}"].join("\n")); -x.compileShader(L);x.compileShader(N);x.attachShader(K,L);x.attachShader(K,N);x.linkProgram(K);G=K;v=x.getAttribLocation(G,"position");y=x.getAttribLocation(G,"uv");c=x.getUniformLocation(G,"uvOffset");d=x.getUniformLocation(G,"uvScale");e=x.getUniformLocation(G,"rotation");f=x.getUniformLocation(G,"scale");g=x.getUniformLocation(G,"color");h=x.getUniformLocation(G,"map");k=x.getUniformLocation(G,"opacity");n=x.getUniformLocation(G,"modelViewMatrix");p=x.getUniformLocation(G,"projectionMatrix");q= -x.getUniformLocation(G,"fogType");m=x.getUniformLocation(G,"fogDensity");t=x.getUniformLocation(G,"fogNear");s=x.getUniformLocation(G,"fogFar");r=x.getUniformLocation(G,"fogColor");u=x.getUniformLocation(G,"alphaTest");K=document.createElement("canvas");K.width=8;K.height=8;L=K.getContext("2d");L.fillStyle="white";L.fillRect(0,0,8,8);E=new THREE.Texture(K);E.needsUpdate=!0}x.useProgram(G);x.enableVertexAttribArray(v);x.enableVertexAttribArray(y);x.disable(x.CULL_FACE);x.enable(x.BLEND);x.bindBuffer(x.ARRAY_BUFFER, -F);x.vertexAttribPointer(v,2,x.FLOAT,!1,16,0);x.vertexAttribPointer(y,2,x.FLOAT,!1,16,8);x.bindBuffer(x.ELEMENT_ARRAY_BUFFER,z);x.uniformMatrix4fv(p,!1,M.projectionMatrix.elements);x.activeTexture(x.TEXTURE0);x.uniform1i(h,0);L=K=0;(N=U.fog)?(x.uniform3f(r,N.color.r,N.color.g,N.color.b),N instanceof THREE.Fog?(x.uniform1f(t,N.near),x.uniform1f(s,N.far),x.uniform1i(q,1),L=K=1):N instanceof THREE.FogExp2&&(x.uniform1f(m,N.density),x.uniform1i(q,2),L=K=2)):(x.uniform1i(q,0),L=K=0);for(var N=0,T=b.length;N< -T;N++){var Q=b[N];Q._modelViewMatrix.multiplyMatrices(M.matrixWorldInverse,Q.matrixWorld);Q.z=-Q._modelViewMatrix.elements[14]}b.sort(C);for(var W=[],N=0,T=b.length;N<T;N++){var Q=b[N],O=Q.material;x.uniform1f(u,O.alphaTest);x.uniformMatrix4fv(n,!1,Q._modelViewMatrix.elements);Q.matrixWorld.decompose(w,D,A);W[0]=A.x;W[1]=A.y;Q=0;U.fog&&O.fog&&(Q=L);K!==Q&&(x.uniform1i(q,Q),K=Q);null!==O.map?(x.uniform2f(c,O.map.offset.x,O.map.offset.y),x.uniform2f(d,O.map.repeat.x,O.map.repeat.y)):(x.uniform2f(c, -0,0),x.uniform2f(d,1,1));x.uniform1f(k,O.opacity);x.uniform3f(g,O.color.r,O.color.g,O.color.b);x.uniform1f(e,O.rotation);x.uniform2fv(f,W);a.setBlending(O.blending,O.blendEquation,O.blendSrc,O.blendDst);a.setDepthTest(O.depthTest);a.setDepthWrite(O.depthWrite);O.map&&O.map.image&&O.map.image.width?a.setTexture(O.map,0):a.setTexture(E,0);x.drawElements(x.TRIANGLES,6,x.UNSIGNED_SHORT,0)}x.enable(x.CULL_FACE);a.resetGLState()}}}; -THREE.GeometryUtils={merge:function(a,b,c){console.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.");var d;b instanceof THREE.Mesh&&(b.matrixAutoUpdate&&b.updateMatrix(),d=b.matrix,b=b.geometry);a.merge(b,d,c)},center:function(a){console.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.");return a.center()}}; +H=n.createProgram(),L=n.createShader(n.FRAGMENT_SHADER),P=n.createShader(n.VERTEX_SHADER),N="precision "+a.getPrecision()+" float;\n";n.shaderSource(L,N+z.fragmentShader);n.shaderSource(P,N+z.vertexShader);n.compileShader(L);n.compileShader(P);n.attachShader(H,L);n.attachShader(H,P);n.linkProgram(H);s=H;p=n.getAttribLocation(s,"position");q=n.getAttribLocation(s,"uv");c=n.getUniformLocation(s,"renderType");d=n.getUniformLocation(s,"map");e=n.getUniformLocation(s,"occlusionMap");f=n.getUniformLocation(s, +"opacity");g=n.getUniformLocation(s,"color");h=n.getUniformLocation(s,"scale");k=n.getUniformLocation(s,"rotation");l=n.getUniformLocation(s,"screenPosition")}n.useProgram(s);n.enableVertexAttribArray(p);n.enableVertexAttribArray(q);n.uniform1i(e,0);n.uniform1i(d,1);n.bindBuffer(n.ARRAY_BUFFER,t);n.vertexAttribPointer(p,2,n.FLOAT,!1,16,0);n.vertexAttribPointer(q,2,n.FLOAT,!1,16,8);n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,r);n.disable(n.CULL_FACE);n.depthMask(!1);H=0;for(L=b.length;H<L;H++)if(z=16/A,I.set(z* +E,z),P=b[H],D.set(P.matrixWorld.elements[12],P.matrixWorld.elements[13],P.matrixWorld.elements[14]),D.applyMatrix4(w.matrixWorldInverse),D.applyProjection(w.projectionMatrix),U.copy(D),M.x=U.x*G+G,M.y=U.y*F+F,u||0<M.x&&M.x<y&&0<M.y&&M.y<A){n.activeTexture(n.TEXTURE1);n.bindTexture(n.TEXTURE_2D,v);n.copyTexImage2D(n.TEXTURE_2D,0,n.RGB,M.x-8,M.y-8,16,16,0);n.uniform1i(c,0);n.uniform2f(h,I.x,I.y);n.uniform3f(l,U.x,U.y,U.z);n.disable(n.BLEND);n.enable(n.DEPTH_TEST);n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT, +0);n.activeTexture(n.TEXTURE0);n.bindTexture(n.TEXTURE_2D,x);n.copyTexImage2D(n.TEXTURE_2D,0,n.RGBA,M.x-8,M.y-8,16,16,0);n.uniform1i(c,1);n.disable(n.DEPTH_TEST);n.activeTexture(n.TEXTURE1);n.bindTexture(n.TEXTURE_2D,v);n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0);P.positionScreen.copy(U);P.customUpdateCallback?P.customUpdateCallback(P):P.updateLensFlares();n.uniform1i(c,2);n.enable(n.BLEND);for(var N=0,R=P.lensFlares.length;N<R;N++){var V=P.lensFlares[N];.001<V.opacity&&.001<V.scale&&(U.x=V.x, +U.y=V.y,U.z=V.z,z=V.size*V.scale/A,I.x=z*E,I.y=z,n.uniform3f(l,U.x,U.y,U.z),n.uniform2f(h,I.x,I.y),n.uniform1f(k,V.rotation),n.uniform1f(f,V.opacity),n.uniform3f(g,V.color.r,V.color.g,V.color.b),a.state.setBlending(V.blending,V.blendEquation,V.blendSrc,V.blendDst),a.setTexture(V.texture,1),n.drawElements(n.TRIANGLES,6,n.UNSIGNED_SHORT,0))}}n.enable(n.CULL_FACE);n.enable(n.DEPTH_TEST);n.depthMask(!0);a.resetGLState()}}}; +THREE.ShadowMapPlugin=function(a,b,c,d){function e(a,b,d){if(b.visible){var f=c[b.id];if(f&&b.castShadow&&(!1===b.frustumCulled||!0===p.intersectsObject(b)))for(var g=0,h=f.length;g<h;g++){var k=f[g];b._modelViewMatrix.multiplyMatrices(d.matrixWorldInverse,b.matrixWorld);s.push(k)}g=0;for(h=b.children.length;g<h;g++)e(a,b.children[g],d)}}var f=a.context,g,h,k,l,p=new THREE.Frustum,q=new THREE.Matrix4,n=new THREE.Vector3,t=new THREE.Vector3,r=new THREE.Vector3,s=[],u=THREE.ShaderLib.depthRGBA,v=THREE.UniformsUtils.clone(u.uniforms); +g=new THREE.ShaderMaterial({uniforms:v,vertexShader:u.vertexShader,fragmentShader:u.fragmentShader});h=new THREE.ShaderMaterial({uniforms:v,vertexShader:u.vertexShader,fragmentShader:u.fragmentShader,morphTargets:!0});k=new THREE.ShaderMaterial({uniforms:v,vertexShader:u.vertexShader,fragmentShader:u.fragmentShader,skinning:!0});l=new THREE.ShaderMaterial({uniforms:v,vertexShader:u.vertexShader,fragmentShader:u.fragmentShader,morphTargets:!0,skinning:!0});g._shadowPass=!0;h._shadowPass=!0;k._shadowPass= +!0;l._shadowPass=!0;this.render=function(c,v){if(!1!==a.shadowMapEnabled){var u,y,A,E,G,F,z,I,U=[];E=0;f.clearColor(1,1,1,1);f.disable(f.BLEND);f.enable(f.CULL_FACE);f.frontFace(f.CCW);a.shadowMapCullFace===THREE.CullFaceFront?f.cullFace(f.FRONT):f.cullFace(f.BACK);a.state.setDepthTest(!0);u=0;for(y=b.length;u<y;u++)if(A=b[u],A.castShadow)if(A instanceof THREE.DirectionalLight&&A.shadowCascade)for(G=0;G<A.shadowCascadeCount;G++){var M;if(A.shadowCascadeArray[G])M=A.shadowCascadeArray[G];else{z=A; +var H=G;M=new THREE.DirectionalLight;M.isVirtual=!0;M.onlyShadow=!0;M.castShadow=!0;M.shadowCameraNear=z.shadowCameraNear;M.shadowCameraFar=z.shadowCameraFar;M.shadowCameraLeft=z.shadowCameraLeft;M.shadowCameraRight=z.shadowCameraRight;M.shadowCameraBottom=z.shadowCameraBottom;M.shadowCameraTop=z.shadowCameraTop;M.shadowCameraVisible=z.shadowCameraVisible;M.shadowDarkness=z.shadowDarkness;M.shadowBias=z.shadowCascadeBias[H];M.shadowMapWidth=z.shadowCascadeWidth[H];M.shadowMapHeight=z.shadowCascadeHeight[H]; +M.pointsWorld=[];M.pointsFrustum=[];I=M.pointsWorld;F=M.pointsFrustum;for(var L=0;8>L;L++)I[L]=new THREE.Vector3,F[L]=new THREE.Vector3;I=z.shadowCascadeNearZ[H];z=z.shadowCascadeFarZ[H];F[0].set(-1,-1,I);F[1].set(1,-1,I);F[2].set(-1,1,I);F[3].set(1,1,I);F[4].set(-1,-1,z);F[5].set(1,-1,z);F[6].set(-1,1,z);F[7].set(1,1,z);M.originalCamera=v;F=new THREE.Gyroscope;F.position.copy(A.shadowCascadeOffset);F.add(M);F.add(M.target);v.add(F);A.shadowCascadeArray[G]=M}H=A;I=G;z=H.shadowCascadeArray[I];z.position.copy(H.position); +z.target.position.copy(H.target.position);z.lookAt(z.target);z.shadowCameraVisible=H.shadowCameraVisible;z.shadowDarkness=H.shadowDarkness;z.shadowBias=H.shadowCascadeBias[I];F=H.shadowCascadeNearZ[I];H=H.shadowCascadeFarZ[I];z=z.pointsFrustum;z[0].z=F;z[1].z=F;z[2].z=F;z[3].z=F;z[4].z=H;z[5].z=H;z[6].z=H;z[7].z=H;U[E]=M;E++}else U[E]=A,E++;u=0;for(y=U.length;u<y;u++){A=U[u];A.shadowMap||(G=THREE.LinearFilter,a.shadowMapType===THREE.PCFSoftShadowMap&&(G=THREE.NearestFilter),A.shadowMap=new THREE.WebGLRenderTarget(A.shadowMapWidth, +A.shadowMapHeight,{minFilter:G,magFilter:G,format:THREE.RGBAFormat}),A.shadowMapSize=new THREE.Vector2(A.shadowMapWidth,A.shadowMapHeight),A.shadowMatrix=new THREE.Matrix4);if(!A.shadowCamera){if(A instanceof THREE.SpotLight)A.shadowCamera=new THREE.PerspectiveCamera(A.shadowCameraFov,A.shadowMapWidth/A.shadowMapHeight,A.shadowCameraNear,A.shadowCameraFar);else if(A instanceof THREE.DirectionalLight)A.shadowCamera=new THREE.OrthographicCamera(A.shadowCameraLeft,A.shadowCameraRight,A.shadowCameraTop, +A.shadowCameraBottom,A.shadowCameraNear,A.shadowCameraFar);else{THREE.error("THREE.ShadowMapPlugin: Unsupported light type for shadow",A);continue}c.add(A.shadowCamera);!0===c.autoUpdate&&c.updateMatrixWorld()}A.shadowCameraVisible&&!A.cameraHelper&&(A.cameraHelper=new THREE.CameraHelper(A.shadowCamera),c.add(A.cameraHelper));if(A.isVirtual&&M.originalCamera==v){G=v;E=A.shadowCamera;F=A.pointsFrustum;z=A.pointsWorld;n.set(Infinity,Infinity,Infinity);t.set(-Infinity,-Infinity,-Infinity);for(H=0;8> +H;H++)I=z[H],I.copy(F[H]),I.unproject(G),I.applyMatrix4(E.matrixWorldInverse),I.x<n.x&&(n.x=I.x),I.x>t.x&&(t.x=I.x),I.y<n.y&&(n.y=I.y),I.y>t.y&&(t.y=I.y),I.z<n.z&&(n.z=I.z),I.z>t.z&&(t.z=I.z);E.left=n.x;E.right=t.x;E.top=t.y;E.bottom=n.y;E.updateProjectionMatrix()}E=A.shadowMap;F=A.shadowMatrix;G=A.shadowCamera;G.position.setFromMatrixPosition(A.matrixWorld);r.setFromMatrixPosition(A.target.matrixWorld);G.lookAt(r);G.updateMatrixWorld();G.matrixWorldInverse.getInverse(G.matrixWorld);A.cameraHelper&& +(A.cameraHelper.visible=A.shadowCameraVisible);A.shadowCameraVisible&&A.cameraHelper.update();F.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);F.multiply(G.projectionMatrix);F.multiply(G.matrixWorldInverse);q.multiplyMatrices(G.projectionMatrix,G.matrixWorldInverse);p.setFromMatrix(q);a.setRenderTarget(E);a.clear();s.length=0;e(c,c,G);A=0;for(E=s.length;A<E;A++)z=s[A],F=z.object,z=z.buffer,H=F.material instanceof THREE.MeshFaceMaterial?F.material.materials[0]:F.material,I=void 0!==F.geometry.morphTargets&& +0<F.geometry.morphTargets.length&&H.morphTargets,L=F instanceof THREE.SkinnedMesh&&H.skinning,I=F.customDepthMaterial?F.customDepthMaterial:L?I?l:k:I?h:g,a.setMaterialFaces(H),z instanceof THREE.BufferGeometry?a.renderBufferDirect(G,b,null,I,z,F):a.renderBuffer(G,b,null,I,z,F);A=0;for(E=d.length;A<E;A++)z=d[A],F=z.object,F.visible&&F.castShadow&&(F._modelViewMatrix.multiplyMatrices(G.matrixWorldInverse,F.matrixWorld),a.renderImmediateObject(G,b,null,g,F))}u=a.getClearColor();y=a.getClearAlpha();f.clearColor(u.r, +u.g,u.b,y);f.enable(f.BLEND);a.shadowMapCullFace===THREE.CullFaceFront&&f.cullFace(f.BACK);a.resetGLState()}}}; +THREE.SpritePlugin=function(a,b){var c,d,e,f,g,h,k,l,p,q,n,t,r,s,u,v,x;function D(a,b){return a.z!==b.z?b.z-a.z:b.id-a.id}var w=a.context,y,A,E,G,F=new THREE.Vector3,z=new THREE.Quaternion,I=new THREE.Vector3;this.render=function(U,M){if(0!==b.length){if(void 0===E){var H=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),L=new Uint16Array([0,1,2,0,2,3]);y=w.createBuffer();A=w.createBuffer();w.bindBuffer(w.ARRAY_BUFFER,y);w.bufferData(w.ARRAY_BUFFER,H,w.STATIC_DRAW);w.bindBuffer(w.ELEMENT_ARRAY_BUFFER, +A);w.bufferData(w.ELEMENT_ARRAY_BUFFER,L,w.STATIC_DRAW);var H=w.createProgram(),L=w.createShader(w.VERTEX_SHADER),P=w.createShader(w.FRAGMENT_SHADER);w.shaderSource(L,["precision "+a.getPrecision()+" float;","uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float rotation;\nuniform vec2 scale;\nuniform vec2 uvOffset;\nuniform vec2 uvScale;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uvOffset + uv * uvScale;\nvec2 alignedPosition = position * scale;\nvec2 rotatedPosition;\nrotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\nrotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\nvec4 finalPosition;\nfinalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\nfinalPosition.xy += rotatedPosition;\nfinalPosition = projectionMatrix * finalPosition;\ngl_Position = finalPosition;\n}"].join("\n")); +w.shaderSource(P,["precision "+a.getPrecision()+" float;","uniform vec3 color;\nuniform sampler2D map;\nuniform float opacity;\nuniform int fogType;\nuniform vec3 fogColor;\nuniform float fogDensity;\nuniform float fogNear;\nuniform float fogFar;\nuniform float alphaTest;\nvarying vec2 vUV;\nvoid main() {\nvec4 texture = texture2D( map, vUV );\nif ( texture.a < alphaTest ) discard;\ngl_FragColor = vec4( color * texture.xyz, texture.a * opacity );\nif ( fogType > 0 ) {\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\nfloat fogFactor = 0.0;\nif ( fogType == 1 ) {\nfogFactor = smoothstep( fogNear, fogFar, depth );\n} else {\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n}\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}\n}"].join("\n")); +w.compileShader(L);w.compileShader(P);w.attachShader(H,L);w.attachShader(H,P);w.linkProgram(H);E=H;v=w.getAttribLocation(E,"position");x=w.getAttribLocation(E,"uv");c=w.getUniformLocation(E,"uvOffset");d=w.getUniformLocation(E,"uvScale");e=w.getUniformLocation(E,"rotation");f=w.getUniformLocation(E,"scale");g=w.getUniformLocation(E,"color");h=w.getUniformLocation(E,"map");k=w.getUniformLocation(E,"opacity");l=w.getUniformLocation(E,"modelViewMatrix");p=w.getUniformLocation(E,"projectionMatrix");q= +w.getUniformLocation(E,"fogType");n=w.getUniformLocation(E,"fogDensity");t=w.getUniformLocation(E,"fogNear");r=w.getUniformLocation(E,"fogFar");s=w.getUniformLocation(E,"fogColor");u=w.getUniformLocation(E,"alphaTest");H=document.createElement("canvas");H.width=8;H.height=8;L=H.getContext("2d");L.fillStyle="white";L.fillRect(0,0,8,8);G=new THREE.Texture(H);G.needsUpdate=!0}w.useProgram(E);w.enableVertexAttribArray(v);w.enableVertexAttribArray(x);w.disable(w.CULL_FACE);w.enable(w.BLEND);w.bindBuffer(w.ARRAY_BUFFER, +y);w.vertexAttribPointer(v,2,w.FLOAT,!1,16,0);w.vertexAttribPointer(x,2,w.FLOAT,!1,16,8);w.bindBuffer(w.ELEMENT_ARRAY_BUFFER,A);w.uniformMatrix4fv(p,!1,M.projectionMatrix.elements);w.activeTexture(w.TEXTURE0);w.uniform1i(h,0);L=H=0;(P=U.fog)?(w.uniform3f(s,P.color.r,P.color.g,P.color.b),P instanceof THREE.Fog?(w.uniform1f(t,P.near),w.uniform1f(r,P.far),w.uniform1i(q,1),L=H=1):P instanceof THREE.FogExp2&&(w.uniform1f(n,P.density),w.uniform1i(q,2),L=H=2)):(w.uniform1i(q,0),L=H=0);for(var P=0,N=b.length;P< +N;P++){var R=b[P];R._modelViewMatrix.multiplyMatrices(M.matrixWorldInverse,R.matrixWorld);R.z=-R._modelViewMatrix.elements[14]}b.sort(D);for(var V=[],P=0,N=b.length;P<N;P++){var R=b[P],J=R.material;w.uniform1f(u,J.alphaTest);w.uniformMatrix4fv(l,!1,R._modelViewMatrix.elements);R.matrixWorld.decompose(F,z,I);V[0]=I.x;V[1]=I.y;R=0;U.fog&&J.fog&&(R=L);H!==R&&(w.uniform1i(q,R),H=R);null!==J.map?(w.uniform2f(c,J.map.offset.x,J.map.offset.y),w.uniform2f(d,J.map.repeat.x,J.map.repeat.y)):(w.uniform2f(c, +0,0),w.uniform2f(d,1,1));w.uniform1f(k,J.opacity);w.uniform3f(g,J.color.r,J.color.g,J.color.b);w.uniform1f(e,J.rotation);w.uniform2fv(f,V);a.state.setBlending(J.blending,J.blendEquation,J.blendSrc,J.blendDst);a.state.setDepthTest(J.depthTest);a.state.setDepthWrite(J.depthWrite);J.map&&J.map.image&&J.map.image.width?a.setTexture(J.map,0):a.setTexture(G,0);w.drawElements(w.TRIANGLES,6,w.UNSIGNED_SHORT,0)}w.enable(w.CULL_FACE);a.resetGLState()}}}; +THREE.GeometryUtils={merge:function(a,b,c){THREE.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.");var d;b instanceof THREE.Mesh&&(b.matrixAutoUpdate&&b.updateMatrix(),d=b.matrix,b=b.geometry);a.merge(b,d,c)},center:function(a){THREE.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.");return a.center()}}; THREE.ImageUtils={crossOrigin:void 0,loadTexture:function(a,b,c,d){var e=new THREE.ImageLoader;e.crossOrigin=this.crossOrigin;var f=new THREE.Texture(void 0,b);e.load(a,function(a){f.image=a;f.needsUpdate=!0;c&&c(f)},void 0,function(a){d&&d(a)});f.sourceFile=a;return f},loadTextureCube:function(a,b,c,d){var e=new THREE.ImageLoader;e.crossOrigin=this.crossOrigin;var f=new THREE.CubeTexture([],b);f.flipY=!1;var g=0;b=function(b){e.load(a[b],function(a){f.images[b]=a;g+=1;6===g&&(f.needsUpdate=!0,c&& -c(f))},void 0,d)};for(var h=0,k=a.length;h<k;++h)b(h);return f},loadCompressedTexture:function(){console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")},loadCompressedTextureCube:function(){console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")},getNormalMap:function(a,b){var c=function(a){var b=Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]);return[a[0]/b,a[1]/b,a[2]/b]};b|=1;var d=a.width,e=a.height,f=document.createElement("canvas"); -f.width=d;f.height=e;var g=f.getContext("2d");g.drawImage(a,0,0);for(var h=g.getImageData(0,0,d,e).data,k=g.createImageData(d,e),n=k.data,p=0;p<d;p++)for(var q=0;q<e;q++){var m=0>q-1?0:q-1,t=q+1>e-1?e-1:q+1,s=0>p-1?0:p-1,r=p+1>d-1?d-1:p+1,u=[],v=[0,0,h[4*(q*d+p)]/255*b];u.push([-1,0,h[4*(q*d+s)]/255*b]);u.push([-1,-1,h[4*(m*d+s)]/255*b]);u.push([0,-1,h[4*(m*d+p)]/255*b]);u.push([1,-1,h[4*(m*d+r)]/255*b]);u.push([1,0,h[4*(q*d+r)]/255*b]);u.push([1,1,h[4*(t*d+r)]/255*b]);u.push([0,1,h[4*(t*d+p)]/255* -b]);u.push([-1,1,h[4*(t*d+s)]/255*b]);m=[];s=u.length;for(t=0;t<s;t++){var r=u[t],y=u[(t+1)%s],r=[r[0]-v[0],r[1]-v[1],r[2]-v[2]],y=[y[0]-v[0],y[1]-v[1],y[2]-v[2]];m.push(c([r[1]*y[2]-r[2]*y[1],r[2]*y[0]-r[0]*y[2],r[0]*y[1]-r[1]*y[0]]))}u=[0,0,0];for(t=0;t<m.length;t++)u[0]+=m[t][0],u[1]+=m[t][1],u[2]+=m[t][2];u[0]/=m.length;u[1]/=m.length;u[2]/=m.length;v=4*(q*d+p);n[v]=(u[0]+1)/2*255|0;n[v+1]=(u[1]+1)/2*255|0;n[v+2]=255*u[2]|0;n[v+3]=255}g.putImageData(k,0,0);return f},generateDataTexture:function(a, +c(f))},void 0,d)};for(var h=0,k=a.length;h<k;++h)b(h);return f},loadCompressedTexture:function(){THREE.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")},loadCompressedTextureCube:function(){THREE.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")},getNormalMap:function(a,b){var c=function(a){var b=Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]);return[a[0]/b,a[1]/b,a[2]/b]};b|=1;var d=a.width,e=a.height,f=document.createElement("canvas"); +f.width=d;f.height=e;var g=f.getContext("2d");g.drawImage(a,0,0);for(var h=g.getImageData(0,0,d,e).data,k=g.createImageData(d,e),l=k.data,p=0;p<d;p++)for(var q=0;q<e;q++){var n=0>q-1?0:q-1,t=q+1>e-1?e-1:q+1,r=0>p-1?0:p-1,s=p+1>d-1?d-1:p+1,u=[],v=[0,0,h[4*(q*d+p)]/255*b];u.push([-1,0,h[4*(q*d+r)]/255*b]);u.push([-1,-1,h[4*(n*d+r)]/255*b]);u.push([0,-1,h[4*(n*d+p)]/255*b]);u.push([1,-1,h[4*(n*d+s)]/255*b]);u.push([1,0,h[4*(q*d+s)]/255*b]);u.push([1,1,h[4*(t*d+s)]/255*b]);u.push([0,1,h[4*(t*d+p)]/255* +b]);u.push([-1,1,h[4*(t*d+r)]/255*b]);n=[];r=u.length;for(t=0;t<r;t++){var s=u[t],x=u[(t+1)%r],s=[s[0]-v[0],s[1]-v[1],s[2]-v[2]],x=[x[0]-v[0],x[1]-v[1],x[2]-v[2]];n.push(c([s[1]*x[2]-s[2]*x[1],s[2]*x[0]-s[0]*x[2],s[0]*x[1]-s[1]*x[0]]))}u=[0,0,0];for(t=0;t<n.length;t++)u[0]+=n[t][0],u[1]+=n[t][1],u[2]+=n[t][2];u[0]/=n.length;u[1]/=n.length;u[2]/=n.length;v=4*(q*d+p);l[v]=(u[0]+1)/2*255|0;l[v+1]=(u[1]+1)/2*255|0;l[v+2]=255*u[2]|0;l[v+3]=255}g.putImageData(k,0,0);return f},generateDataTexture:function(a, b,c){var d=a*b,e=new Uint8Array(3*d),f=Math.floor(255*c.r),g=Math.floor(255*c.g);c=Math.floor(255*c.b);for(var h=0;h<d;h++)e[3*h]=f,e[3*h+1]=g,e[3*h+2]=c;a=new THREE.DataTexture(e,a,b,THREE.RGBFormat);a.needsUpdate=!0;return a}}; THREE.SceneUtils={createMultiMaterialObject:function(a,b){for(var c=new THREE.Object3D,d=0,e=b.length;d<e;d++)c.add(new THREE.Mesh(a,b[d]));return c},detach:function(a,b,c){a.applyMatrix(b.matrixWorld);b.remove(a);c.add(a)},attach:function(a,b,c){var d=new THREE.Matrix4;d.getInverse(c.matrixWorld);a.applyMatrix(d);b.remove(a);c.add(a)}}; THREE.FontUtils={faces:{},face:"helvetiker",weight:"normal",style:"normal",size:150,divisions:10,getFace:function(){try{return this.faces[this.face][this.weight][this.style]}catch(a){throw"The font "+this.face+" with "+this.weight+" weight and "+this.style+" style is missing.";}},loadFace:function(a){var b=a.familyName.toLowerCase();this.faces[b]=this.faces[b]||{};this.faces[b][a.cssFontWeight]=this.faces[b][a.cssFontWeight]||{};this.faces[b][a.cssFontWeight][a.cssFontStyle]=a;return this.faces[b][a.cssFontWeight][a.cssFontStyle]= -a},drawText:function(a){var b=this.getFace(),c=this.size/b.resolution,d=0,e=String(a).split(""),f=e.length,g=[];for(a=0;a<f;a++){var h=new THREE.Path,h=this.extractGlyphPoints(e[a],b,c,d,h),d=d+h.offset;g.push(h.path)}return{paths:g,offset:d/2}},extractGlyphPoints:function(a,b,c,d,e){var f=[],g,h,k,n,p,q,m,t,s,r,u,v=b.glyphs[a]||b.glyphs["?"];if(v){if(v.o)for(b=v._cachedOutline||(v._cachedOutline=v.o.split(" ")),n=b.length,a=0;a<n;)switch(k=b[a++],k){case "m":k=b[a++]*c+d;p=b[a++]*c;e.moveTo(k,p); -break;case "l":k=b[a++]*c+d;p=b[a++]*c;e.lineTo(k,p);break;case "q":k=b[a++]*c+d;p=b[a++]*c;t=b[a++]*c+d;s=b[a++]*c;e.quadraticCurveTo(t,s,k,p);if(g=f[f.length-1])for(q=g.x,m=g.y,g=1,h=this.divisions;g<=h;g++){var y=g/h;THREE.Shape.Utils.b2(y,q,t,k);THREE.Shape.Utils.b2(y,m,s,p)}break;case "b":if(k=b[a++]*c+d,p=b[a++]*c,t=b[a++]*c+d,s=b[a++]*c,r=b[a++]*c+d,u=b[a++]*c,e.bezierCurveTo(t,s,r,u,k,p),g=f[f.length-1])for(q=g.x,m=g.y,g=1,h=this.divisions;g<=h;g++)y=g/h,THREE.Shape.Utils.b3(y,q,t,r,k),THREE.Shape.Utils.b3(y, -m,s,u,p)}return{offset:v.ha*c,path:e}}}}; +a},drawText:function(a){var b=this.getFace(),c=this.size/b.resolution,d=0,e=String(a).split(""),f=e.length,g=[];for(a=0;a<f;a++){var h=new THREE.Path,h=this.extractGlyphPoints(e[a],b,c,d,h),d=d+h.offset;g.push(h.path)}return{paths:g,offset:d/2}},extractGlyphPoints:function(a,b,c,d,e){var f=[],g,h,k,l,p,q,n,t,r,s,u,v=b.glyphs[a]||b.glyphs["?"];if(v){if(v.o)for(b=v._cachedOutline||(v._cachedOutline=v.o.split(" ")),l=b.length,a=0;a<l;)switch(k=b[a++],k){case "m":k=b[a++]*c+d;p=b[a++]*c;e.moveTo(k,p); +break;case "l":k=b[a++]*c+d;p=b[a++]*c;e.lineTo(k,p);break;case "q":k=b[a++]*c+d;p=b[a++]*c;t=b[a++]*c+d;r=b[a++]*c;e.quadraticCurveTo(t,r,k,p);if(g=f[f.length-1])for(q=g.x,n=g.y,g=1,h=this.divisions;g<=h;g++){var x=g/h;THREE.Shape.Utils.b2(x,q,t,k);THREE.Shape.Utils.b2(x,n,r,p)}break;case "b":if(k=b[a++]*c+d,p=b[a++]*c,t=b[a++]*c+d,r=b[a++]*c,s=b[a++]*c+d,u=b[a++]*c,e.bezierCurveTo(t,r,s,u,k,p),g=f[f.length-1])for(q=g.x,n=g.y,g=1,h=this.divisions;g<=h;g++)x=g/h,THREE.Shape.Utils.b3(x,q,t,s,k),THREE.Shape.Utils.b3(x, +n,r,u,p)}return{offset:v.ha*c,path:e}}}}; THREE.FontUtils.generateShapes=function(a,b){b=b||{};var c=void 0!==b.curveSegments?b.curveSegments:4,d=void 0!==b.font?b.font:"helvetiker",e=void 0!==b.weight?b.weight:"normal",f=void 0!==b.style?b.style:"normal";THREE.FontUtils.size=void 0!==b.size?b.size:100;THREE.FontUtils.divisions=c;THREE.FontUtils.face=d;THREE.FontUtils.weight=e;THREE.FontUtils.style=f;c=THREE.FontUtils.drawText(a).paths;d=[];e=0;for(f=c.length;e<f;e++)Array.prototype.push.apply(d,c[e].toShapes());return d}; -(function(a){var b=function(a){for(var b=a.length,e=0,f=b-1,g=0;g<b;f=g++)e+=a[f].x*a[g].y-a[g].x*a[f].y;return.5*e};a.Triangulate=function(a,d){var e=a.length;if(3>e)return null;var f=[],g=[],h=[],k,n,p;if(0<b(a))for(n=0;n<e;n++)g[n]=n;else for(n=0;n<e;n++)g[n]=e-1-n;var q=2*e;for(n=e-1;2<e;){if(0>=q--){console.log("Warning, unable to triangulate polygon!");break}k=n;e<=k&&(k=0);n=k+1;e<=n&&(n=0);p=n+1;e<=p&&(p=0);var m;a:{var t=m=void 0,s=void 0,r=void 0,u=void 0,v=void 0,y=void 0,C=void 0,x=void 0, -t=a[g[k]].x,s=a[g[k]].y,r=a[g[n]].x,u=a[g[n]].y,v=a[g[p]].x,y=a[g[p]].y;if(1E-10>(r-t)*(y-s)-(u-s)*(v-t))m=!1;else{var F=void 0,z=void 0,G=void 0,E=void 0,w=void 0,D=void 0,A=void 0,U=void 0,M=void 0,K=void 0,M=U=A=x=C=void 0,F=v-r,z=y-u,G=t-v,E=s-y,w=r-t,D=u-s;for(m=0;m<e;m++)if(C=a[g[m]].x,x=a[g[m]].y,!(C===t&&x===s||C===r&&x===u||C===v&&x===y)&&(A=C-t,U=x-s,M=C-r,K=x-u,C-=v,x-=y,M=F*K-z*M,A=w*U-D*A,U=G*x-E*C,-1E-10<=M&&-1E-10<=U&&-1E-10<=A)){m=!1;break a}m=!0}}if(m){f.push([a[g[k]],a[g[n]],a[g[p]]]); -h.push([g[k],g[n],g[p]]);k=n;for(p=n+1;p<e;k++,p++)g[k]=g[p];e--;q=2*e}}return d?h:f};a.Triangulate.area=b;return a})(THREE.FontUtils);self._typeface_js={faces:THREE.FontUtils.faces,loadFace:THREE.FontUtils.loadFace};THREE.typeface_js=self._typeface_js; -THREE.Audio=function(a){THREE.Object3D.call(this);this.type="Audio";this.context=a.context;this.source=this.context.createBufferSource();this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.panner=this.context.createPanner();this.panner.connect(this.gain)};THREE.Audio.prototype=Object.create(THREE.Object3D.prototype);THREE.Audio.prototype.constructor=THREE.Audio; -THREE.Audio.prototype.load=function(a){var b=this,c=new XMLHttpRequest;c.open("GET",a,!0);c.responseType="arraybuffer";c.onload=function(a){b.context.decodeAudioData(this.response,function(a){b.source.buffer=a;b.source.connect(b.panner);b.source.start(0)})};c.send();return this};THREE.Audio.prototype.setLoop=function(a){this.source.loop=a};THREE.Audio.prototype.setRefDistance=function(a){this.panner.refDistance=a};THREE.Audio.prototype.setRolloffFactor=function(a){this.panner.rolloffFactor=a}; +(function(a){var b=function(a){for(var b=a.length,e=0,f=b-1,g=0;g<b;f=g++)e+=a[f].x*a[g].y-a[g].x*a[f].y;return.5*e};a.Triangulate=function(a,d){var e=a.length;if(3>e)return null;var f=[],g=[],h=[],k,l,p;if(0<b(a))for(l=0;l<e;l++)g[l]=l;else for(l=0;l<e;l++)g[l]=e-1-l;var q=2*e;for(l=e-1;2<e;){if(0>=q--){THREE.warn("THREE.FontUtils: Warning, unable to triangulate polygon! in Triangulate.process()");break}k=l;e<=k&&(k=0);l=k+1;e<=l&&(l=0);p=l+1;e<=p&&(p=0);var n;a:{var t=n=void 0,r=void 0,s=void 0, +u=void 0,v=void 0,x=void 0,D=void 0,w=void 0,t=a[g[k]].x,r=a[g[k]].y,s=a[g[l]].x,u=a[g[l]].y,v=a[g[p]].x,x=a[g[p]].y;if(1E-10>(s-t)*(x-r)-(u-r)*(v-t))n=!1;else{var y=void 0,A=void 0,E=void 0,G=void 0,F=void 0,z=void 0,I=void 0,U=void 0,M=void 0,H=void 0,M=U=I=w=D=void 0,y=v-s,A=x-u,E=t-v,G=r-x,F=s-t,z=u-r;for(n=0;n<e;n++)if(D=a[g[n]].x,w=a[g[n]].y,!(D===t&&w===r||D===s&&w===u||D===v&&w===x)&&(I=D-t,U=w-r,M=D-s,H=w-u,D-=v,w-=x,M=y*H-A*M,I=F*U-z*I,U=E*w-G*D,-1E-10<=M&&-1E-10<=U&&-1E-10<=I)){n=!1;break a}n= +!0}}if(n){f.push([a[g[k]],a[g[l]],a[g[p]]]);h.push([g[k],g[l],g[p]]);k=l;for(p=l+1;p<e;k++,p++)g[k]=g[p];e--;q=2*e}}return d?h:f};a.Triangulate.area=b;return a})(THREE.FontUtils);self._typeface_js={faces:THREE.FontUtils.faces,loadFace:THREE.FontUtils.loadFace};THREE.typeface_js=self._typeface_js; +THREE.Audio=function(a){THREE.Object3D.call(this);this.type="Audio";this.context=a.context;this.source=this.context.createBufferSource();this.source.onended=this.onEnded.bind(this);this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.panner=this.context.createPanner();this.panner.connect(this.gain);this.autoplay=!1;this.startTime=0;this.isPlaying=!1};THREE.Audio.prototype=Object.create(THREE.Object3D.prototype);THREE.Audio.prototype.constructor=THREE.Audio; +THREE.Audio.prototype.load=function(a){var b=this,c=new XMLHttpRequest;c.open("GET",a,!0);c.responseType="arraybuffer";c.onload=function(a){b.context.decodeAudioData(this.response,function(a){b.source.buffer=a;b.autoplay&&b.play()})};c.send();return this}; +THREE.Audio.prototype.play=function(){if(!0===this.isPlaying)THREE.warn("THREE.Audio: Audio is already playing.");else{var a=this.context.createBufferSource();a.buffer=this.source.buffer;a.loop=this.source.loop;a.onended=this.source.onended;a.connect(this.panner);a.start(0,this.startTime);this.isPlaying=!0;this.source=a}};THREE.Audio.prototype.pause=function(){this.source.stop();this.startTime=this.context.currentTime};THREE.Audio.prototype.stop=function(){this.source.stop();this.startTime=0}; +THREE.Audio.prototype.onEnded=function(){this.isPlaying=!1};THREE.Audio.prototype.setLoop=function(a){this.source.loop=a};THREE.Audio.prototype.setRefDistance=function(a){this.panner.refDistance=a};THREE.Audio.prototype.setRolloffFactor=function(a){this.panner.rolloffFactor=a};THREE.Audio.prototype.setVolume=function(a){this.gain.gain.value=a}; THREE.Audio.prototype.updateMatrixWorld=function(){var a=new THREE.Vector3;return function(b){THREE.Object3D.prototype.updateMatrixWorld.call(this,b);a.setFromMatrixPosition(this.matrixWorld);this.panner.setPosition(a.x,a.y,a.z)}}();THREE.AudioListener=function(){THREE.Object3D.call(this);this.type="AudioListener";this.context=new (window.AudioContext||window.webkitAudioContext)};THREE.AudioListener.prototype=Object.create(THREE.Object3D.prototype);THREE.AudioListener.prototype.constructor=THREE.AudioListener; THREE.AudioListener.prototype.updateMatrixWorld=function(){var a=new THREE.Vector3,b=new THREE.Quaternion,c=new THREE.Vector3,d=new THREE.Vector3,e=new THREE.Vector3,f=new THREE.Vector3;return function(g){THREE.Object3D.prototype.updateMatrixWorld.call(this,g);g=this.context.listener;var h=this.up;this.matrixWorld.decompose(a,b,c);d.set(0,0,-1).applyQuaternion(b);e.subVectors(a,f);g.setPosition(a.x,a.y,a.z);g.setOrientation(d.x,d.y,d.z,h.x,h.y,h.z);g.setVelocity(e.x,e.y,e.z);f.copy(a)}}(); -THREE.Curve=function(){};THREE.Curve.prototype.getPoint=function(a){console.log("Warning, getPoint() not implemented!");return null};THREE.Curve.prototype.getPointAt=function(a){a=this.getUtoTmapping(a);return this.getPoint(a)};THREE.Curve.prototype.getPoints=function(a){a||(a=5);var b,c=[];for(b=0;b<=a;b++)c.push(this.getPoint(b/a));return c};THREE.Curve.prototype.getSpacedPoints=function(a){a||(a=5);var b,c=[];for(b=0;b<=a;b++)c.push(this.getPointAt(b/a));return c}; +THREE.Curve=function(){};THREE.Curve.prototype.getPoint=function(a){THREE.warn("THREE.Curve: Warning, getPoint() not implemented!");return null};THREE.Curve.prototype.getPointAt=function(a){a=this.getUtoTmapping(a);return this.getPoint(a)};THREE.Curve.prototype.getPoints=function(a){a||(a=5);var b,c=[];for(b=0;b<=a;b++)c.push(this.getPoint(b/a));return c};THREE.Curve.prototype.getSpacedPoints=function(a){a||(a=5);var b,c=[];for(b=0;b<=a;b++)c.push(this.getPointAt(b/a));return c}; THREE.Curve.prototype.getLength=function(){var a=this.getLengths();return a[a.length-1]};THREE.Curve.prototype.getLengths=function(a){a||(a=this.__arcLengthDivisions?this.__arcLengthDivisions:200);if(this.cacheArcLengths&&this.cacheArcLengths.length==a+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var b=[],c,d=this.getPoint(0),e,f=0;b.push(0);for(e=1;e<=a;e++)c=this.getPoint(e/a),f+=c.distanceTo(d),b.push(f),d=c;return this.cacheArcLengths=b}; THREE.Curve.prototype.updateArcLengths=function(){this.needsUpdate=!0;this.getLengths()};THREE.Curve.prototype.getUtoTmapping=function(a,b){var c=this.getLengths(),d=0,e=c.length,f;f=b?b:a*c[e-1];for(var g=0,h=e-1,k;g<=h;)if(d=Math.floor(g+(h-g)/2),k=c[d]-f,0>k)g=d+1;else if(0<k)h=d-1;else{h=d;break}d=h;if(c[d]==f)return d/(e-1);g=c[d];return c=(d+(f-g)/(c[d+1]-g))/(e-1)};THREE.Curve.prototype.getTangent=function(a){var b=a-1E-4;a+=1E-4;0>b&&(b=0);1<a&&(a=1);b=this.getPoint(b);return this.getPoint(a).clone().sub(b).normalize()}; THREE.Curve.prototype.getTangentAt=function(a){a=this.getUtoTmapping(a);return this.getTangent(a)}; @@ -636,7 +652,7 @@ THREE.Curve.Utils={tangentQuadraticBezier:function(a,b,c,d){return 2*(1-a)*(c-b) THREE.Curve.create=function(a,b){a.prototype=Object.create(THREE.Curve.prototype);a.prototype.constructor=a;a.prototype.getPoint=b;return a};THREE.CurvePath=function(){this.curves=[];this.bends=[];this.autoClose=!1};THREE.CurvePath.prototype=Object.create(THREE.Curve.prototype);THREE.CurvePath.prototype.constructor=THREE.CurvePath;THREE.CurvePath.prototype.add=function(a){this.curves.push(a)};THREE.CurvePath.prototype.checkConnection=function(){}; THREE.CurvePath.prototype.closePath=function(){var a=this.curves[0].getPoint(0),b=this.curves[this.curves.length-1].getPoint(1);a.equals(b)||this.curves.push(new THREE.LineCurve(b,a))};THREE.CurvePath.prototype.getPoint=function(a){var b=a*this.getLength(),c=this.getCurveLengths();for(a=0;a<c.length;){if(c[a]>=b)return b=c[a]-b,a=this.curves[a],b=1-b/a.getLength(),a.getPointAt(b);a++}return null};THREE.CurvePath.prototype.getLength=function(){var a=this.getCurveLengths();return a[a.length-1]}; THREE.CurvePath.prototype.getCurveLengths=function(){if(this.cacheLengths&&this.cacheLengths.length==this.curves.length)return this.cacheLengths;var a=[],b=0,c,d=this.curves.length;for(c=0;c<d;c++)b+=this.curves[c].getLength(),a.push(b);return this.cacheLengths=a}; -THREE.CurvePath.prototype.getBoundingBox=function(){var a=this.getPoints(),b,c,d,e,f,g;b=c=Number.NEGATIVE_INFINITY;e=f=Number.POSITIVE_INFINITY;var h,k,n,p,q=a[0]instanceof THREE.Vector3;p=q?new THREE.Vector3:new THREE.Vector2;k=0;for(n=a.length;k<n;k++)h=a[k],h.x>b?b=h.x:h.x<e&&(e=h.x),h.y>c?c=h.y:h.y<f&&(f=h.y),q&&(h.z>d?d=h.z:h.z<g&&(g=h.z)),p.add(h);a={minX:e,minY:f,maxX:b,maxY:c};q&&(a.maxZ=d,a.minZ=g);return a}; +THREE.CurvePath.prototype.getBoundingBox=function(){var a=this.getPoints(),b,c,d,e,f,g;b=c=Number.NEGATIVE_INFINITY;e=f=Number.POSITIVE_INFINITY;var h,k,l,p,q=a[0]instanceof THREE.Vector3;p=q?new THREE.Vector3:new THREE.Vector2;k=0;for(l=a.length;k<l;k++)h=a[k],h.x>b?b=h.x:h.x<e&&(e=h.x),h.y>c?c=h.y:h.y<f&&(f=h.y),q&&(h.z>d?d=h.z:h.z<g&&(g=h.z)),p.add(h);a={minX:e,minY:f,maxX:b,maxY:c};q&&(a.maxZ=d,a.minZ=g);return a}; THREE.CurvePath.prototype.createPointsGeometry=function(a){a=this.getPoints(a,!0);return this.createGeometry(a)};THREE.CurvePath.prototype.createSpacedPointsGeometry=function(a){a=this.getSpacedPoints(a,!0);return this.createGeometry(a)};THREE.CurvePath.prototype.createGeometry=function(a){for(var b=new THREE.Geometry,c=0;c<a.length;c++)b.vertices.push(new THREE.Vector3(a[c].x,a[c].y,a[c].z||0));return b};THREE.CurvePath.prototype.addWrapPath=function(a){this.bends.push(a)}; THREE.CurvePath.prototype.getTransformedPoints=function(a,b){var c=this.getPoints(a),d,e;b||(b=this.bends);d=0;for(e=b.length;d<e;d++)c=this.getWrapPoints(c,b[d]);return c};THREE.CurvePath.prototype.getTransformedSpacedPoints=function(a,b){var c=this.getSpacedPoints(a),d,e;b||(b=this.bends);d=0;for(e=b.length;d<e;d++)c=this.getWrapPoints(c,b[d]);return c}; THREE.CurvePath.prototype.getWrapPoints=function(a,b){var c=this.getBoundingBox(),d,e,f,g,h,k;d=0;for(e=a.length;d<e;d++)f=a[d],g=f.x,h=f.y,k=g/c.maxX,k=b.getUtoTmapping(k,g),g=b.getPoint(k),k=b.getTangent(k),k.set(-k.y,k.x).multiplyScalar(h),f.x=g.x+k.x,f.y=g.y+k.y;return a};THREE.Gyroscope=function(){THREE.Object3D.call(this)};THREE.Gyroscope.prototype=Object.create(THREE.Object3D.prototype);THREE.Gyroscope.prototype.constructor=THREE.Gyroscope; @@ -649,27 +665,27 @@ THREE.Path.prototype.bezierCurveTo=function(a,b,c,d,e,f){var g=Array.prototype.s THREE.Path.prototype.splineThru=function(a){var b=Array.prototype.slice.call(arguments),c=this.actions[this.actions.length-1].args,c=[new THREE.Vector2(c[c.length-2],c[c.length-1])];Array.prototype.push.apply(c,a);c=new THREE.SplineCurve(c);this.curves.push(c);this.actions.push({action:THREE.PathActions.CSPLINE_THRU,args:b})};THREE.Path.prototype.arc=function(a,b,c,d,e,f){var g=this.actions[this.actions.length-1].args;this.absarc(a+g[g.length-2],b+g[g.length-1],c,d,e,f)}; THREE.Path.prototype.absarc=function(a,b,c,d,e,f){this.absellipse(a,b,c,c,d,e,f)};THREE.Path.prototype.ellipse=function(a,b,c,d,e,f,g){var h=this.actions[this.actions.length-1].args;this.absellipse(a+h[h.length-2],b+h[h.length-1],c,d,e,f,g)};THREE.Path.prototype.absellipse=function(a,b,c,d,e,f,g){var h=Array.prototype.slice.call(arguments),k=new THREE.EllipseCurve(a,b,c,d,e,f,g);this.curves.push(k);k=k.getPoint(1);h.push(k.x);h.push(k.y);this.actions.push({action:THREE.PathActions.ELLIPSE,args:h})}; THREE.Path.prototype.getSpacedPoints=function(a,b){a||(a=40);for(var c=[],d=0;d<a;d++)c.push(this.getPoint(d/a));return c}; -THREE.Path.prototype.getPoints=function(a,b){if(this.useSpacedPoints)return console.log("tata"),this.getSpacedPoints(a,b);a=a||12;var c=[],d,e,f,g,h,k,n,p,q,m,t,s,r;d=0;for(e=this.actions.length;d<e;d++)switch(f=this.actions[d],g=f.action,f=f.args,g){case THREE.PathActions.MOVE_TO:c.push(new THREE.Vector2(f[0],f[1]));break;case THREE.PathActions.LINE_TO:c.push(new THREE.Vector2(f[0],f[1]));break;case THREE.PathActions.QUADRATIC_CURVE_TO:h=f[2];k=f[3];q=f[0];m=f[1];0<c.length?(g=c[c.length-1],t=g.x, -s=g.y):(g=this.actions[d-1].args,t=g[g.length-2],s=g[g.length-1]);for(f=1;f<=a;f++)r=f/a,g=THREE.Shape.Utils.b2(r,t,q,h),r=THREE.Shape.Utils.b2(r,s,m,k),c.push(new THREE.Vector2(g,r));break;case THREE.PathActions.BEZIER_CURVE_TO:h=f[4];k=f[5];q=f[0];m=f[1];n=f[2];p=f[3];0<c.length?(g=c[c.length-1],t=g.x,s=g.y):(g=this.actions[d-1].args,t=g[g.length-2],s=g[g.length-1]);for(f=1;f<=a;f++)r=f/a,g=THREE.Shape.Utils.b3(r,t,q,n,h),r=THREE.Shape.Utils.b3(r,s,m,p,k),c.push(new THREE.Vector2(g,r));break;case THREE.PathActions.CSPLINE_THRU:g= -this.actions[d-1].args;r=[new THREE.Vector2(g[g.length-2],g[g.length-1])];g=a*f[0].length;r=r.concat(f[0]);r=new THREE.SplineCurve(r);for(f=1;f<=g;f++)c.push(r.getPointAt(f/g));break;case THREE.PathActions.ARC:h=f[0];k=f[1];m=f[2];n=f[3];g=f[4];q=!!f[5];t=g-n;s=2*a;for(f=1;f<=s;f++)r=f/s,q||(r=1-r),r=n+r*t,g=h+m*Math.cos(r),r=k+m*Math.sin(r),c.push(new THREE.Vector2(g,r));break;case THREE.PathActions.ELLIPSE:for(h=f[0],k=f[1],m=f[2],p=f[3],n=f[4],g=f[5],q=!!f[6],t=g-n,s=2*a,f=1;f<=s;f++)r=f/s,q|| -(r=1-r),r=n+r*t,g=h+m*Math.cos(r),r=k+p*Math.sin(r),c.push(new THREE.Vector2(g,r))}d=c[c.length-1];1E-10>Math.abs(d.x-c[0].x)&&1E-10>Math.abs(d.y-c[0].y)&&c.splice(c.length-1,1);b&&c.push(c[0]);return c}; -THREE.Path.prototype.toShapes=function(a,b){function c(a){for(var b=[],c=0,d=a.length;c<d;c++){var e=a[c],g=new THREE.Shape;g.actions=e.actions;g.curves=e.curves;b.push(g)}return b}function d(a,b){for(var c=b.length,d=!1,e=c-1,g=0;g<c;e=g++){var f=b[e],h=b[g],k=h.x-f.x,m=h.y-f.y;if(1E-10<Math.abs(m)){if(0>m&&(f=b[g],k=-k,h=b[e],m=-m),!(a.y<f.y||a.y>h.y))if(a.y==f.y){if(a.x==f.x)return!0}else{e=m*(a.x-f.x)-k*(a.y-f.y);if(0==e)return!0;0>e||(d=!d)}}else if(a.y==f.y&&(h.x<=a.x&&a.x<=f.x||f.x<=a.x&&a.x<= -h.x))return!0}return d}var e=function(a){var b,c,d,e,f=[],g=new THREE.Path;b=0;for(c=a.length;b<c;b++)d=a[b],e=d.args,d=d.action,d==THREE.PathActions.MOVE_TO&&0!=g.actions.length&&(f.push(g),g=new THREE.Path),g[d].apply(g,e);0!=g.actions.length&&f.push(g);return f}(this.actions);if(0==e.length)return[];if(!0===b)return c(e);var f,g,h,k=[];if(1==e.length)return g=e[0],h=new THREE.Shape,h.actions=g.actions,h.curves=g.curves,k.push(h),k;var n=!THREE.Shape.Utils.isClockWise(e[0].getPoints()),n=a?!n:n; -h=[];var p=[],q=[],m=0,t;p[m]=void 0;q[m]=[];var s,r;s=0;for(r=e.length;s<r;s++)g=e[s],t=g.getPoints(),f=THREE.Shape.Utils.isClockWise(t),(f=a?!f:f)?(!n&&p[m]&&m++,p[m]={s:new THREE.Shape,p:t},p[m].s.actions=g.actions,p[m].s.curves=g.curves,n&&m++,q[m]=[]):q[m].push({h:g,p:t[0]});if(!p[0])return c(e);if(1<p.length){s=!1;r=[];g=0;for(e=p.length;g<e;g++)h[g]=[];g=0;for(e=p.length;g<e;g++)for(f=q[g],n=0;n<f.length;n++){m=f[n];t=!0;for(var u=0;u<p.length;u++)d(m.p,p[u].p)&&(g!=u&&r.push({froms:g,tos:u, -hole:n}),t?(t=!1,h[u].push(m)):s=!0);t&&h[g].push(m)}0<r.length&&(s||(q=h))}s=0;for(r=p.length;s<r;s++)for(h=p[s].s,k.push(h),g=q[s],e=0,f=g.length;e<f;e++)h.holes.push(g[e].h);return k};THREE.Shape=function(){THREE.Path.apply(this,arguments);this.holes=[]};THREE.Shape.prototype=Object.create(THREE.Path.prototype);THREE.Shape.prototype.constructor=THREE.Shape;THREE.Shape.prototype.extrude=function(a){return new THREE.ExtrudeGeometry(this,a)}; +THREE.Path.prototype.getPoints=function(a,b){if(this.useSpacedPoints)return console.log("tata"),this.getSpacedPoints(a,b);a=a||12;var c=[],d,e,f,g,h,k,l,p,q,n,t,r,s;d=0;for(e=this.actions.length;d<e;d++)switch(f=this.actions[d],g=f.action,f=f.args,g){case THREE.PathActions.MOVE_TO:c.push(new THREE.Vector2(f[0],f[1]));break;case THREE.PathActions.LINE_TO:c.push(new THREE.Vector2(f[0],f[1]));break;case THREE.PathActions.QUADRATIC_CURVE_TO:h=f[2];k=f[3];q=f[0];n=f[1];0<c.length?(g=c[c.length-1],t=g.x, +r=g.y):(g=this.actions[d-1].args,t=g[g.length-2],r=g[g.length-1]);for(f=1;f<=a;f++)s=f/a,g=THREE.Shape.Utils.b2(s,t,q,h),s=THREE.Shape.Utils.b2(s,r,n,k),c.push(new THREE.Vector2(g,s));break;case THREE.PathActions.BEZIER_CURVE_TO:h=f[4];k=f[5];q=f[0];n=f[1];l=f[2];p=f[3];0<c.length?(g=c[c.length-1],t=g.x,r=g.y):(g=this.actions[d-1].args,t=g[g.length-2],r=g[g.length-1]);for(f=1;f<=a;f++)s=f/a,g=THREE.Shape.Utils.b3(s,t,q,l,h),s=THREE.Shape.Utils.b3(s,r,n,p,k),c.push(new THREE.Vector2(g,s));break;case THREE.PathActions.CSPLINE_THRU:g= +this.actions[d-1].args;s=[new THREE.Vector2(g[g.length-2],g[g.length-1])];g=a*f[0].length;s=s.concat(f[0]);s=new THREE.SplineCurve(s);for(f=1;f<=g;f++)c.push(s.getPointAt(f/g));break;case THREE.PathActions.ARC:h=f[0];k=f[1];n=f[2];l=f[3];g=f[4];q=!!f[5];t=g-l;r=2*a;for(f=1;f<=r;f++)s=f/r,q||(s=1-s),s=l+s*t,g=h+n*Math.cos(s),s=k+n*Math.sin(s),c.push(new THREE.Vector2(g,s));break;case THREE.PathActions.ELLIPSE:for(h=f[0],k=f[1],n=f[2],p=f[3],l=f[4],g=f[5],q=!!f[6],t=g-l,r=2*a,f=1;f<=r;f++)s=f/r,q|| +(s=1-s),s=l+s*t,g=h+n*Math.cos(s),s=k+p*Math.sin(s),c.push(new THREE.Vector2(g,s))}d=c[c.length-1];1E-10>Math.abs(d.x-c[0].x)&&1E-10>Math.abs(d.y-c[0].y)&&c.splice(c.length-1,1);b&&c.push(c[0]);return c}; +THREE.Path.prototype.toShapes=function(a,b){function c(a){for(var b=[],c=0,d=a.length;c<d;c++){var e=a[c],f=new THREE.Shape;f.actions=e.actions;f.curves=e.curves;b.push(f)}return b}function d(a,b){for(var c=b.length,d=!1,e=c-1,f=0;f<c;e=f++){var g=b[e],h=b[f],k=h.x-g.x,n=h.y-g.y;if(1E-10<Math.abs(n)){if(0>n&&(g=b[f],k=-k,h=b[e],n=-n),!(a.y<g.y||a.y>h.y))if(a.y==g.y){if(a.x==g.x)return!0}else{e=n*(a.x-g.x)-k*(a.y-g.y);if(0==e)return!0;0>e||(d=!d)}}else if(a.y==g.y&&(h.x<=a.x&&a.x<=g.x||g.x<=a.x&&a.x<= +h.x))return!0}return d}var e=function(a){var b,c,d,e,f=[],g=new THREE.Path;b=0;for(c=a.length;b<c;b++)d=a[b],e=d.args,d=d.action,d==THREE.PathActions.MOVE_TO&&0!=g.actions.length&&(f.push(g),g=new THREE.Path),g[d].apply(g,e);0!=g.actions.length&&f.push(g);return f}(this.actions);if(0==e.length)return[];if(!0===b)return c(e);var f,g,h,k=[];if(1==e.length)return g=e[0],h=new THREE.Shape,h.actions=g.actions,h.curves=g.curves,k.push(h),k;var l=!THREE.Shape.Utils.isClockWise(e[0].getPoints()),l=a?!l:l; +h=[];var p=[],q=[],n=0,t;p[n]=void 0;q[n]=[];var r,s;r=0;for(s=e.length;r<s;r++)g=e[r],t=g.getPoints(),f=THREE.Shape.Utils.isClockWise(t),(f=a?!f:f)?(!l&&p[n]&&n++,p[n]={s:new THREE.Shape,p:t},p[n].s.actions=g.actions,p[n].s.curves=g.curves,l&&n++,q[n]=[]):q[n].push({h:g,p:t[0]});if(!p[0])return c(e);if(1<p.length){r=!1;s=[];g=0;for(e=p.length;g<e;g++)h[g]=[];g=0;for(e=p.length;g<e;g++)for(f=q[g],l=0;l<f.length;l++){n=f[l];t=!0;for(var u=0;u<p.length;u++)d(n.p,p[u].p)&&(g!=u&&s.push({froms:g,tos:u, +hole:l}),t?(t=!1,h[u].push(n)):r=!0);t&&h[g].push(n)}0<s.length&&(r||(q=h))}r=0;for(s=p.length;r<s;r++)for(h=p[r].s,k.push(h),g=q[r],e=0,f=g.length;e<f;e++)h.holes.push(g[e].h);return k};THREE.Shape=function(){THREE.Path.apply(this,arguments);this.holes=[]};THREE.Shape.prototype=Object.create(THREE.Path.prototype);THREE.Shape.prototype.constructor=THREE.Shape;THREE.Shape.prototype.extrude=function(a){return new THREE.ExtrudeGeometry(this,a)}; THREE.Shape.prototype.makeGeometry=function(a){return new THREE.ShapeGeometry(this,a)};THREE.Shape.prototype.getPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;b<c;b++)d[b]=this.holes[b].getTransformedPoints(a,this.bends);return d};THREE.Shape.prototype.getSpacedPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;b<c;b++)d[b]=this.holes[b].getTransformedSpacedPoints(a,this.bends);return d}; THREE.Shape.prototype.extractAllPoints=function(a){return{shape:this.getTransformedPoints(a),holes:this.getPointsHoles(a)}};THREE.Shape.prototype.extractPoints=function(a){return this.useSpacedPoints?this.extractAllSpacedPoints(a):this.extractAllPoints(a)};THREE.Shape.prototype.extractAllSpacedPoints=function(a){return{shape:this.getTransformedSpacedPoints(a),holes:this.getSpacedPointsHoles(a)}}; -THREE.Shape.Utils={triangulateShape:function(a,b){function c(a,b,c){return a.x!=b.x?a.x<b.x?a.x<=c.x&&c.x<=b.x:b.x<=c.x&&c.x<=a.x:a.y<b.y?a.y<=c.y&&c.y<=b.y:b.y<=c.y&&c.y<=a.y}function d(a,b,d,e,g){var f=b.x-a.x,h=b.y-a.y,k=e.x-d.x,n=e.y-d.y,p=a.x-d.x,q=a.y-d.y,G=h*k-f*n,E=h*p-f*q;if(1E-10<Math.abs(G)){if(0<G){if(0>E||E>G)return[];k=n*p-k*q;if(0>k||k>G)return[]}else{if(0<E||E<G)return[];k=n*p-k*q;if(0<k||k<G)return[]}if(0==k)return!g||0!=E&&E!=G?[a]:[];if(k==G)return!g||0!=E&&E!=G?[b]:[];if(0==E)return[d]; -if(E==G)return[e];g=k/G;return[{x:a.x+g*f,y:a.y+g*h}]}if(0!=E||n*p!=k*q)return[];h=0==f&&0==h;k=0==k&&0==n;if(h&&k)return a.x!=d.x||a.y!=d.y?[]:[a];if(h)return c(d,e,a)?[a]:[];if(k)return c(a,b,d)?[d]:[];0!=f?(a.x<b.x?(f=a,k=a.x,h=b,a=b.x):(f=b,k=b.x,h=a,a=a.x),d.x<e.x?(b=d,G=d.x,n=e,d=e.x):(b=e,G=e.x,n=d,d=d.x)):(a.y<b.y?(f=a,k=a.y,h=b,a=b.y):(f=b,k=b.y,h=a,a=a.y),d.y<e.y?(b=d,G=d.y,n=e,d=e.y):(b=e,G=e.y,n=d,d=d.y));return k<=G?a<G?[]:a==G?g?[]:[b]:a<=d?[b,h]:[b,n]:k>d?[]:k==d?g?[]:[f]:a<=d?[f,h]: -[f,n]}function e(a,b,c,d){var e=b.x-a.x,f=b.y-a.y;b=c.x-a.x;c=c.y-a.y;var g=d.x-a.x;d=d.y-a.y;a=e*c-f*b;e=e*d-f*g;return 1E-10<Math.abs(a)?(b=g*c-d*b,0<a?0<=e&&0<=b:0<=e||0<=b):0<e}var f,g,h,k,n,p={};h=a.concat();f=0;for(g=b.length;f<g;f++)Array.prototype.push.apply(h,b[f]);f=0;for(g=h.length;f<g;f++)n=h[f].x+":"+h[f].y,void 0!==p[n]&&console.log("Duplicate point",n),p[n]=f;f=function(a,b){function c(a,b){var d=h.length-1,f=a-1;0>f&&(f=d);var g=a+1;g>d&&(g=0);d=e(h[a],h[f],h[g],k[b]);if(!d)return!1; -d=k.length-1;f=b-1;0>f&&(f=d);g=b+1;g>d&&(g=0);return(d=e(k[b],k[f],k[g],h[a]))?!0:!1}function f(a,b){var c,e;for(c=0;c<h.length;c++)if(e=c+1,e%=h.length,e=d(a,b,h[c],h[e],!0),0<e.length)return!0;return!1}function g(a,c){var e,f,h,k;for(e=0;e<n.length;e++)for(f=b[n[e]],h=0;h<f.length;h++)if(k=h+1,k%=f.length,k=d(a,c,f[h],f[k],!0),0<k.length)return!0;return!1}var h=a.concat(),k,n=[],p,q,z,G,E,w=[],D,A,U,M=0;for(p=b.length;M<p;M++)n.push(M);D=0;for(var K=2*n.length;0<n.length;){K--;if(0>K){console.log("Infinite Loop! Holes left:"+ -n.length+", Probably Hole outside Shape!");break}for(q=D;q<h.length;q++){z=h[q];p=-1;for(M=0;M<n.length;M++)if(G=n[M],E=z.x+":"+z.y+":"+G,void 0===w[E]){k=b[G];for(A=0;A<k.length;A++)if(G=k[A],c(q,A)&&!f(z,G)&&!g(z,G)){p=A;n.splice(M,1);D=h.slice(0,q+1);G=h.slice(q);A=k.slice(p);U=k.slice(0,p+1);h=D.concat(A).concat(U).concat(G);D=q;break}if(0<=p)break;w[E]=!0}if(0<=p)break}}return h}(a,b);var q=THREE.FontUtils.Triangulate(f,!1);f=0;for(g=q.length;f<g;f++)for(k=q[f],h=0;3>h;h++)n=k[h].x+":"+k[h].y, -n=p[n],void 0!==n&&(k[h]=n);return q.concat()},isClockWise:function(a){return 0>THREE.FontUtils.Triangulate.area(a)},b2p0:function(a,b){var c=1-a;return c*c*b},b2p1:function(a,b){return 2*(1-a)*a*b},b2p2:function(a,b){return a*a*b},b2:function(a,b,c,d){return this.b2p0(a,b)+this.b2p1(a,c)+this.b2p2(a,d)},b3p0:function(a,b){var c=1-a;return c*c*c*b},b3p1:function(a,b){var c=1-a;return 3*c*c*a*b},b3p2:function(a,b){return 3*(1-a)*a*a*b},b3p3:function(a,b){return a*a*a*b},b3:function(a,b,c,d,e){return this.b3p0(a, -b)+this.b3p1(a,c)+this.b3p2(a,d)+this.b3p3(a,e)}};THREE.LineCurve=function(a,b){this.v1=a;this.v2=b};THREE.LineCurve.prototype=Object.create(THREE.Curve.prototype);THREE.LineCurve.prototype.constructor=THREE.LineCurve;THREE.LineCurve.prototype.getPoint=function(a){var b=this.v2.clone().sub(this.v1);b.multiplyScalar(a).add(this.v1);return b};THREE.LineCurve.prototype.getPointAt=function(a){return this.getPoint(a)};THREE.LineCurve.prototype.getTangent=function(a){return this.v2.clone().sub(this.v1).normalize()}; -THREE.QuadraticBezierCurve=function(a,b,c){this.v0=a;this.v1=b;this.v2=c};THREE.QuadraticBezierCurve.prototype=Object.create(THREE.Curve.prototype);THREE.QuadraticBezierCurve.prototype.constructor=THREE.QuadraticBezierCurve;THREE.QuadraticBezierCurve.prototype.getPoint=function(a){var b=new THREE.Vector2;b.x=THREE.Shape.Utils.b2(a,this.v0.x,this.v1.x,this.v2.x);b.y=THREE.Shape.Utils.b2(a,this.v0.y,this.v1.y,this.v2.y);return b}; -THREE.QuadraticBezierCurve.prototype.getTangent=function(a){var b=new THREE.Vector2;b.x=THREE.Curve.Utils.tangentQuadraticBezier(a,this.v0.x,this.v1.x,this.v2.x);b.y=THREE.Curve.Utils.tangentQuadraticBezier(a,this.v0.y,this.v1.y,this.v2.y);return b.normalize()};THREE.CubicBezierCurve=function(a,b,c,d){this.v0=a;this.v1=b;this.v2=c;this.v3=d};THREE.CubicBezierCurve.prototype=Object.create(THREE.Curve.prototype);THREE.CubicBezierCurve.prototype.constructor=THREE.CubicBezierCurve; -THREE.CubicBezierCurve.prototype.getPoint=function(a){var b;b=THREE.Shape.Utils.b3(a,this.v0.x,this.v1.x,this.v2.x,this.v3.x);a=THREE.Shape.Utils.b3(a,this.v0.y,this.v1.y,this.v2.y,this.v3.y);return new THREE.Vector2(b,a)};THREE.CubicBezierCurve.prototype.getTangent=function(a){var b;b=THREE.Curve.Utils.tangentCubicBezier(a,this.v0.x,this.v1.x,this.v2.x,this.v3.x);a=THREE.Curve.Utils.tangentCubicBezier(a,this.v0.y,this.v1.y,this.v2.y,this.v3.y);b=new THREE.Vector2(b,a);b.normalize();return b}; -THREE.SplineCurve=function(a){this.points=void 0==a?[]:a};THREE.SplineCurve.prototype=Object.create(THREE.Curve.prototype);THREE.SplineCurve.prototype.constructor=THREE.SplineCurve; +THREE.Shape.Utils={triangulateShape:function(a,b){function c(a,b,c){return a.x!=b.x?a.x<b.x?a.x<=c.x&&c.x<=b.x:b.x<=c.x&&c.x<=a.x:a.y<b.y?a.y<=c.y&&c.y<=b.y:b.y<=c.y&&c.y<=a.y}function d(a,b,d,e,f){var g=b.x-a.x,h=b.y-a.y,k=e.x-d.x,l=e.y-d.y,p=a.x-d.x,q=a.y-d.y,E=h*k-g*l,G=h*p-g*q;if(1E-10<Math.abs(E)){if(0<E){if(0>G||G>E)return[];k=l*p-k*q;if(0>k||k>E)return[]}else{if(0<G||G<E)return[];k=l*p-k*q;if(0<k||k<E)return[]}if(0==k)return!f||0!=G&&G!=E?[a]:[];if(k==E)return!f||0!=G&&G!=E?[b]:[];if(0==G)return[d]; +if(G==E)return[e];f=k/E;return[{x:a.x+f*g,y:a.y+f*h}]}if(0!=G||l*p!=k*q)return[];h=0==g&&0==h;k=0==k&&0==l;if(h&&k)return a.x!=d.x||a.y!=d.y?[]:[a];if(h)return c(d,e,a)?[a]:[];if(k)return c(a,b,d)?[d]:[];0!=g?(a.x<b.x?(g=a,k=a.x,h=b,a=b.x):(g=b,k=b.x,h=a,a=a.x),d.x<e.x?(b=d,E=d.x,l=e,d=e.x):(b=e,E=e.x,l=d,d=d.x)):(a.y<b.y?(g=a,k=a.y,h=b,a=b.y):(g=b,k=b.y,h=a,a=a.y),d.y<e.y?(b=d,E=d.y,l=e,d=e.y):(b=e,E=e.y,l=d,d=d.y));return k<=E?a<E?[]:a==E?f?[]:[b]:a<=d?[b,h]:[b,l]:k>d?[]:k==d?f?[]:[g]:a<=d?[g,h]: +[g,l]}function e(a,b,c,d){var e=b.x-a.x,f=b.y-a.y;b=c.x-a.x;c=c.y-a.y;var g=d.x-a.x;d=d.y-a.y;a=e*c-f*b;e=e*d-f*g;return 1E-10<Math.abs(a)?(b=g*c-d*b,0<a?0<=e&&0<=b:0<=e||0<=b):0<e}var f,g,h,k,l,p={};h=a.concat();f=0;for(g=b.length;f<g;f++)Array.prototype.push.apply(h,b[f]);f=0;for(g=h.length;f<g;f++)l=h[f].x+":"+h[f].y,void 0!==p[l]&&THREE.warn("THREE.Shape: Duplicate point",l),p[l]=f;f=function(a,b){function c(a,b){var d=h.length-1,f=a-1;0>f&&(f=d);var g=a+1;g>d&&(g=0);d=e(h[a],h[f],h[g],k[b]); +if(!d)return!1;d=k.length-1;f=b-1;0>f&&(f=d);g=b+1;g>d&&(g=0);return(d=e(k[b],k[f],k[g],h[a]))?!0:!1}function f(a,b){var c,e;for(c=0;c<h.length;c++)if(e=c+1,e%=h.length,e=d(a,b,h[c],h[e],!0),0<e.length)return!0;return!1}function g(a,c){var e,f,h,k;for(e=0;e<l.length;e++)for(f=b[l[e]],h=0;h<f.length;h++)if(k=h+1,k%=f.length,k=d(a,c,f[h],f[k],!0),0<k.length)return!0;return!1}var h=a.concat(),k,l=[],p,q,A,E,G,F=[],z,I,U,M=0;for(p=b.length;M<p;M++)l.push(M);z=0;for(var H=2*l.length;0<l.length;){H--;if(0> +H){console.log("Infinite Loop! Holes left:"+l.length+", Probably Hole outside Shape!");break}for(q=z;q<h.length;q++){A=h[q];p=-1;for(M=0;M<l.length;M++)if(E=l[M],G=A.x+":"+A.y+":"+E,void 0===F[G]){k=b[E];for(I=0;I<k.length;I++)if(E=k[I],c(q,I)&&!f(A,E)&&!g(A,E)){p=I;l.splice(M,1);z=h.slice(0,q+1);E=h.slice(q);I=k.slice(p);U=k.slice(0,p+1);h=z.concat(I).concat(U).concat(E);z=q;break}if(0<=p)break;F[G]=!0}if(0<=p)break}}return h}(a,b);var q=THREE.FontUtils.Triangulate(f,!1);f=0;for(g=q.length;f<g;f++)for(k= +q[f],h=0;3>h;h++)l=k[h].x+":"+k[h].y,l=p[l],void 0!==l&&(k[h]=l);return q.concat()},isClockWise:function(a){return 0>THREE.FontUtils.Triangulate.area(a)},b2p0:function(a,b){var c=1-a;return c*c*b},b2p1:function(a,b){return 2*(1-a)*a*b},b2p2:function(a,b){return a*a*b},b2:function(a,b,c,d){return this.b2p0(a,b)+this.b2p1(a,c)+this.b2p2(a,d)},b3p0:function(a,b){var c=1-a;return c*c*c*b},b3p1:function(a,b){var c=1-a;return 3*c*c*a*b},b3p2:function(a,b){return 3*(1-a)*a*a*b},b3p3:function(a,b){return a* +a*a*b},b3:function(a,b,c,d,e){return this.b3p0(a,b)+this.b3p1(a,c)+this.b3p2(a,d)+this.b3p3(a,e)}};THREE.LineCurve=function(a,b){this.v1=a;this.v2=b};THREE.LineCurve.prototype=Object.create(THREE.Curve.prototype);THREE.LineCurve.prototype.constructor=THREE.LineCurve;THREE.LineCurve.prototype.getPoint=function(a){var b=this.v2.clone().sub(this.v1);b.multiplyScalar(a).add(this.v1);return b};THREE.LineCurve.prototype.getPointAt=function(a){return this.getPoint(a)}; +THREE.LineCurve.prototype.getTangent=function(a){return this.v2.clone().sub(this.v1).normalize()};THREE.QuadraticBezierCurve=function(a,b,c){this.v0=a;this.v1=b;this.v2=c};THREE.QuadraticBezierCurve.prototype=Object.create(THREE.Curve.prototype);THREE.QuadraticBezierCurve.prototype.constructor=THREE.QuadraticBezierCurve; +THREE.QuadraticBezierCurve.prototype.getPoint=function(a){var b=new THREE.Vector2;b.x=THREE.Shape.Utils.b2(a,this.v0.x,this.v1.x,this.v2.x);b.y=THREE.Shape.Utils.b2(a,this.v0.y,this.v1.y,this.v2.y);return b};THREE.QuadraticBezierCurve.prototype.getTangent=function(a){var b=new THREE.Vector2;b.x=THREE.Curve.Utils.tangentQuadraticBezier(a,this.v0.x,this.v1.x,this.v2.x);b.y=THREE.Curve.Utils.tangentQuadraticBezier(a,this.v0.y,this.v1.y,this.v2.y);return b.normalize()}; +THREE.CubicBezierCurve=function(a,b,c,d){this.v0=a;this.v1=b;this.v2=c;this.v3=d};THREE.CubicBezierCurve.prototype=Object.create(THREE.Curve.prototype);THREE.CubicBezierCurve.prototype.constructor=THREE.CubicBezierCurve;THREE.CubicBezierCurve.prototype.getPoint=function(a){var b;b=THREE.Shape.Utils.b3(a,this.v0.x,this.v1.x,this.v2.x,this.v3.x);a=THREE.Shape.Utils.b3(a,this.v0.y,this.v1.y,this.v2.y,this.v3.y);return new THREE.Vector2(b,a)}; +THREE.CubicBezierCurve.prototype.getTangent=function(a){var b;b=THREE.Curve.Utils.tangentCubicBezier(a,this.v0.x,this.v1.x,this.v2.x,this.v3.x);a=THREE.Curve.Utils.tangentCubicBezier(a,this.v0.y,this.v1.y,this.v2.y,this.v3.y);b=new THREE.Vector2(b,a);b.normalize();return b};THREE.SplineCurve=function(a){this.points=void 0==a?[]:a};THREE.SplineCurve.prototype=Object.create(THREE.Curve.prototype);THREE.SplineCurve.prototype.constructor=THREE.SplineCurve; THREE.SplineCurve.prototype.getPoint=function(a){var b=this.points;a*=b.length-1;var c=Math.floor(a);a-=c;var d=b[0==c?c:c-1],e=b[c],f=b[c>b.length-2?b.length-1:c+1],b=b[c>b.length-3?b.length-1:c+2],c=new THREE.Vector2;c.x=THREE.Curve.Utils.interpolate(d.x,e.x,f.x,b.x,a);c.y=THREE.Curve.Utils.interpolate(d.y,e.y,f.y,b.y,a);return c};THREE.EllipseCurve=function(a,b,c,d,e,f,g){this.aX=a;this.aY=b;this.xRadius=c;this.yRadius=d;this.aStartAngle=e;this.aEndAngle=f;this.aClockwise=g}; THREE.EllipseCurve.prototype=Object.create(THREE.Curve.prototype);THREE.EllipseCurve.prototype.constructor=THREE.EllipseCurve;THREE.EllipseCurve.prototype.getPoint=function(a){var b=this.aEndAngle-this.aStartAngle;0>b&&(b+=2*Math.PI);b>2*Math.PI&&(b-=2*Math.PI);a=!0===this.aClockwise?this.aEndAngle+(1-a)*(2*Math.PI-b):this.aStartAngle+a*b;b=new THREE.Vector2;b.x=this.aX+this.xRadius*Math.cos(a);b.y=this.aY+this.yRadius*Math.sin(a);return b}; THREE.ArcCurve=function(a,b,c,d,e,f){THREE.EllipseCurve.call(this,a,b,c,c,d,e,f)};THREE.ArcCurve.prototype=Object.create(THREE.EllipseCurve.prototype);THREE.ArcCurve.prototype.constructor=THREE.ArcCurve;THREE.LineCurve3=THREE.Curve.create(function(a,b){this.v1=a;this.v2=b},function(a){var b=new THREE.Vector3;b.subVectors(this.v2,this.v1);b.multiplyScalar(a);b.add(this.v1);return b}); @@ -677,92 +693,89 @@ THREE.QuadraticBezierCurve3=THREE.Curve.create(function(a,b,c){this.v0=a;this.v1 THREE.CubicBezierCurve3=THREE.Curve.create(function(a,b,c,d){this.v0=a;this.v1=b;this.v2=c;this.v3=d},function(a){var b=new THREE.Vector3;b.x=THREE.Shape.Utils.b3(a,this.v0.x,this.v1.x,this.v2.x,this.v3.x);b.y=THREE.Shape.Utils.b3(a,this.v0.y,this.v1.y,this.v2.y,this.v3.y);b.z=THREE.Shape.Utils.b3(a,this.v0.z,this.v1.z,this.v2.z,this.v3.z);return b}); THREE.SplineCurve3=THREE.Curve.create(function(a){this.points=void 0==a?[]:a},function(a){var b=this.points;a*=b.length-1;var c=Math.floor(a);a-=c;var d=b[0==c?c:c-1],e=b[c],f=b[c>b.length-2?b.length-1:c+1],b=b[c>b.length-3?b.length-1:c+2],c=new THREE.Vector3;c.x=THREE.Curve.Utils.interpolate(d.x,e.x,f.x,b.x,a);c.y=THREE.Curve.Utils.interpolate(d.y,e.y,f.y,b.y,a);c.z=THREE.Curve.Utils.interpolate(d.z,e.z,f.z,b.z,a);return c}); THREE.ClosedSplineCurve3=THREE.Curve.create(function(a){this.points=void 0==a?[]:a},function(a){var b=this.points;a*=b.length-0;var c=Math.floor(a);a-=c;var c=c+(0<c?0:(Math.floor(Math.abs(c)/b.length)+1)*b.length),d=b[(c-1)%b.length],e=b[c%b.length],f=b[(c+1)%b.length],b=b[(c+2)%b.length],c=new THREE.Vector3;c.x=THREE.Curve.Utils.interpolate(d.x,e.x,f.x,b.x,a);c.y=THREE.Curve.Utils.interpolate(d.y,e.y,f.y,b.y,a);c.z=THREE.Curve.Utils.interpolate(d.z,e.z,f.z,b.z,a);return c}); -THREE.AnimationHandler={LINEAR:0,CATMULLROM:1,CATMULLROM_FORWARD:2,add:function(){console.warn("THREE.AnimationHandler.add() has been deprecated.")},get:function(){console.warn("THREE.AnimationHandler.get() has been deprecated.")},remove:function(){console.warn("THREE.AnimationHandler.remove() has been deprecated.")},animations:[],init:function(a){if(!0===a.initialized)return a;for(var b=0;b<a.hierarchy.length;b++){for(var c=0;c<a.hierarchy[b].keys.length;c++)if(0>a.hierarchy[b].keys[c].time&&(a.hierarchy[b].keys[c].time= +THREE.AnimationHandler={LINEAR:0,CATMULLROM:1,CATMULLROM_FORWARD:2,add:function(){THREE.warn("THREE.AnimationHandler.add() has been deprecated.")},get:function(){THREE.warn("THREE.AnimationHandler.get() has been deprecated.")},remove:function(){THREE.warn("THREE.AnimationHandler.remove() has been deprecated.")},animations:[],init:function(a){if(!0===a.initialized)return a;for(var b=0;b<a.hierarchy.length;b++){for(var c=0;c<a.hierarchy[b].keys.length;c++)if(0>a.hierarchy[b].keys[c].time&&(a.hierarchy[b].keys[c].time= 0),void 0!==a.hierarchy[b].keys[c].rot&&!(a.hierarchy[b].keys[c].rot instanceof THREE.Quaternion)){var d=a.hierarchy[b].keys[c].rot;a.hierarchy[b].keys[c].rot=(new THREE.Quaternion).fromArray(d)}if(a.hierarchy[b].keys.length&&void 0!==a.hierarchy[b].keys[0].morphTargets){d={};for(c=0;c<a.hierarchy[b].keys.length;c++)for(var e=0;e<a.hierarchy[b].keys[c].morphTargets.length;e++){var f=a.hierarchy[b].keys[c].morphTargets[e];d[f]=-1}a.hierarchy[b].usedMorphTargets=d;for(c=0;c<a.hierarchy[b].keys.length;c++){var g= {};for(f in d){for(e=0;e<a.hierarchy[b].keys[c].morphTargets.length;e++)if(a.hierarchy[b].keys[c].morphTargets[e]===f){g[f]=a.hierarchy[b].keys[c].morphTargetsInfluences[e];break}e===a.hierarchy[b].keys[c].morphTargets.length&&(g[f]=0)}a.hierarchy[b].keys[c].morphTargetsInfluences=g}}for(c=1;c<a.hierarchy[b].keys.length;c++)a.hierarchy[b].keys[c].time===a.hierarchy[b].keys[c-1].time&&(a.hierarchy[b].keys.splice(c,1),c--);for(c=0;c<a.hierarchy[b].keys.length;c++)a.hierarchy[b].keys[c].index=c}a.initialized= !0;return a},parse:function(a){var b=function(a,c){c.push(a);for(var d=0;d<a.children.length;d++)b(a.children[d],c)},c=[];if(a instanceof THREE.SkinnedMesh)for(var d=0;d<a.skeleton.bones.length;d++)c.push(a.skeleton.bones[d]);else b(a,c);return c},play:function(a){-1===this.animations.indexOf(a)&&this.animations.push(a)},stop:function(a){a=this.animations.indexOf(a);-1!==a&&this.animations.splice(a,1)},update:function(a){for(var b=0;b<this.animations.length;b++)this.animations[b].resetBlendWeights(); -for(b=0;b<this.animations.length;b++)this.animations[b].update(a)}};THREE.Animation=function(a,b){this.root=a;this.data=THREE.AnimationHandler.init(b);this.hierarchy=THREE.AnimationHandler.parse(a);this.currentTime=0;this.timeScale=1;this.isPlaying=!1;this.loop=!0;this.weight=0;this.interpolationType=THREE.AnimationHandler.LINEAR};THREE.Animation.prototype.keyTypes=["pos","rot","scl"]; -THREE.Animation.prototype.play=function(a,b){this.currentTime=void 0!==a?a:0;this.weight=void 0!==b?b:1;this.isPlaying=!0;this.reset();THREE.AnimationHandler.play(this)};THREE.Animation.prototype.stop=function(){this.isPlaying=!1;THREE.AnimationHandler.stop(this)}; -THREE.Animation.prototype.reset=function(){for(var a=0,b=this.hierarchy.length;a<b;a++){var c=this.hierarchy[a];void 0===c.animationCache&&(c.animationCache={animations:{},blending:{positionWeight:0,quaternionWeight:0,scaleWeight:0}});void 0===c.animationCache.animations[this.data.name]&&(c.animationCache.animations[this.data.name]={},c.animationCache.animations[this.data.name].prevKey={pos:0,rot:0,scl:0},c.animationCache.animations[this.data.name].nextKey={pos:0,rot:0,scl:0},c.animationCache.animations[this.data.name].originalMatrix= -c.matrix);for(var c=c.animationCache.animations[this.data.name],d=0;3>d;d++){for(var e=this.keyTypes[d],f=this.data.hierarchy[a].keys[0],g=this.getNextKeyWith(e,a,1);g.time<this.currentTime&&g.index>f.index;)f=g,g=this.getNextKeyWith(e,a,g.index+1);c.prevKey[e]=f;c.nextKey[e]=g}}}; -THREE.Animation.prototype.resetBlendWeights=function(){for(var a=0,b=this.hierarchy.length;a<b;a++){var c=this.hierarchy[a];void 0!==c.animationCache&&(c.animationCache.blending.positionWeight=0,c.animationCache.blending.quaternionWeight=0,c.animationCache.blending.scaleWeight=0)}}; -THREE.Animation.prototype.update=function(){var a=[],b=new THREE.Vector3,c=new THREE.Vector3,d=new THREE.Quaternion,e=function(a,b){var c=[],d=[],e,q,m,t,s,r;e=(a.length-1)*b;q=Math.floor(e);e-=q;c[0]=0===q?q:q-1;c[1]=q;c[2]=q>a.length-2?q:q+1;c[3]=q>a.length-3?q:q+2;q=a[c[0]];t=a[c[1]];s=a[c[2]];r=a[c[3]];c=e*e;m=e*c;d[0]=f(q[0],t[0],s[0],r[0],e,c,m);d[1]=f(q[1],t[1],s[1],r[1],e,c,m);d[2]=f(q[2],t[2],s[2],r[2],e,c,m);return d},f=function(a,b,c,d,e,f,m){a=.5*(c-a);d=.5*(d-b);return(2*(b-c)+a+d)*m+ -(-3*(b-c)-2*a-d)*f+a*e+b};return function(f){if(!1!==this.isPlaying&&(this.currentTime+=f*this.timeScale,0!==this.weight)){f=this.data.length;if(this.currentTime>f||0>this.currentTime)this.loop?(this.currentTime%=f,0>this.currentTime&&(this.currentTime+=f),this.reset()):this.stop();f=0;for(var h=this.hierarchy.length;f<h;f++)for(var k=this.hierarchy[f],n=k.animationCache.animations[this.data.name],p=k.animationCache.blending,q=0;3>q;q++){var m=this.keyTypes[q],t=n.prevKey[m],s=n.nextKey[m];if(0<this.timeScale&& -s.time<=this.currentTime||0>this.timeScale&&t.time>=this.currentTime){t=this.data.hierarchy[f].keys[0];for(s=this.getNextKeyWith(m,f,1);s.time<this.currentTime&&s.index>t.index;)t=s,s=this.getNextKeyWith(m,f,s.index+1);n.prevKey[m]=t;n.nextKey[m]=s}var r=(this.currentTime-t.time)/(s.time-t.time),u=t[m],v=s[m];0>r&&(r=0);1<r&&(r=1);if("pos"===m)if(this.interpolationType===THREE.AnimationHandler.LINEAR)c.x=u[0]+(v[0]-u[0])*r,c.y=u[1]+(v[1]-u[1])*r,c.z=u[2]+(v[2]-u[2])*r,t=this.weight/(this.weight+p.positionWeight), -k.position.lerp(c,t),p.positionWeight+=this.weight;else{if(this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD)a[0]=this.getPrevKeyWith("pos",f,t.index-1).pos,a[1]=u,a[2]=v,a[3]=this.getNextKeyWith("pos",f,s.index+1).pos,r=.33*r+.33,s=e(a,r),t=this.weight/(this.weight+p.positionWeight),p.positionWeight+=this.weight,m=k.position,m.x+=(s[0]-m.x)*t,m.y+=(s[1]-m.y)*t,m.z+=(s[2]-m.z)*t,this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD&& -(r=e(a,1.01*r),b.set(r[0],r[1],r[2]),b.sub(m),b.y=0,b.normalize(),r=Math.atan2(b.x,b.z),k.rotation.set(0,r,0))}else"rot"===m?(THREE.Quaternion.slerp(u,v,d,r),0===p.quaternionWeight?(k.quaternion.copy(d),p.quaternionWeight=this.weight):(t=this.weight/(this.weight+p.quaternionWeight),THREE.Quaternion.slerp(k.quaternion,d,k.quaternion,t),p.quaternionWeight+=this.weight)):"scl"===m&&(c.x=u[0]+(v[0]-u[0])*r,c.y=u[1]+(v[1]-u[1])*r,c.z=u[2]+(v[2]-u[2])*r,t=this.weight/(this.weight+p.scaleWeight),k.scale.lerp(c, -t),p.scaleWeight+=this.weight)}return!0}}}();THREE.Animation.prototype.getNextKeyWith=function(a,b,c){var d=this.data.hierarchy[b].keys;for(c=this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?c<d.length-1?c:d.length-1:c%d.length;c<d.length;c++)if(void 0!==d[c][a])return d[c];return this.data.hierarchy[b].keys[0]}; -THREE.Animation.prototype.getPrevKeyWith=function(a,b,c){var d=this.data.hierarchy[b].keys;for(c=this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?0<c?c:0:0<=c?c:c+d.length;0<=c;c--)if(void 0!==d[c][a])return d[c];return this.data.hierarchy[b].keys[d.length-1]}; +for(b=0;b<this.animations.length;b++)this.animations[b].update(a)}};THREE.Animation=function(a,b){this.root=a;this.data=THREE.AnimationHandler.init(b);this.hierarchy=THREE.AnimationHandler.parse(a);this.currentTime=0;this.timeScale=1;this.isPlaying=!1;this.loop=!0;this.weight=0;this.interpolationType=THREE.AnimationHandler.LINEAR}; +THREE.Animation.prototype={constructor:THREE.Animation,keyTypes:["pos","rot","scl"],play:function(a,b){this.currentTime=void 0!==a?a:0;this.weight=void 0!==b?b:1;this.isPlaying=!0;this.reset();THREE.AnimationHandler.play(this)},stop:function(){this.isPlaying=!1;THREE.AnimationHandler.stop(this)},reset:function(){for(var a=0,b=this.hierarchy.length;a<b;a++){var c=this.hierarchy[a];void 0===c.animationCache&&(c.animationCache={animations:{},blending:{positionWeight:0,quaternionWeight:0,scaleWeight:0}}); +var d=this.data.name,e=c.animationCache.animations,f=e[d];void 0===f&&(f={prevKey:{pos:0,rot:0,scl:0},nextKey:{pos:0,rot:0,scl:0},originalMatrix:c.matrix},e[d]=f);for(c=0;3>c;c++){for(var d=this.keyTypes[c],e=this.data.hierarchy[a].keys[0],g=this.getNextKeyWith(d,a,1);g.time<this.currentTime&&g.index>e.index;)e=g,g=this.getNextKeyWith(d,a,g.index+1);f.prevKey[d]=e;f.nextKey[d]=g}}},resetBlendWeights:function(){for(var a=0,b=this.hierarchy.length;a<b;a++){var c=this.hierarchy[a].animationCache;void 0!== +c&&(c=c.blending,c.positionWeight=0,c.quaternionWeight=0,c.scaleWeight=0)}},update:function(){var a=[],b=new THREE.Vector3,c=new THREE.Vector3,d=new THREE.Quaternion,e=function(a,b){var c=[],d=[],e,q,n,t,r,s;e=(a.length-1)*b;q=Math.floor(e);e-=q;c[0]=0===q?q:q-1;c[1]=q;c[2]=q>a.length-2?q:q+1;c[3]=q>a.length-3?q:q+2;q=a[c[0]];t=a[c[1]];r=a[c[2]];s=a[c[3]];c=e*e;n=e*c;d[0]=f(q[0],t[0],r[0],s[0],e,c,n);d[1]=f(q[1],t[1],r[1],s[1],e,c,n);d[2]=f(q[2],t[2],r[2],s[2],e,c,n);return d},f=function(a,b,c,d, +e,f,n){a=.5*(c-a);d=.5*(d-b);return(2*(b-c)+a+d)*n+(-3*(b-c)-2*a-d)*f+a*e+b};return function(f){if(!1!==this.isPlaying&&(this.currentTime+=f*this.timeScale,0!==this.weight)){f=this.data.length;if(this.currentTime>f||0>this.currentTime)this.loop?(this.currentTime%=f,0>this.currentTime&&(this.currentTime+=f),this.reset()):this.stop();f=0;for(var h=this.hierarchy.length;f<h;f++)for(var k=this.hierarchy[f],l=k.animationCache.animations[this.data.name],p=k.animationCache.blending,q=0;3>q;q++){var n=this.keyTypes[q], +t=l.prevKey[n],r=l.nextKey[n];if(0<this.timeScale&&r.time<=this.currentTime||0>this.timeScale&&t.time>=this.currentTime){t=this.data.hierarchy[f].keys[0];for(r=this.getNextKeyWith(n,f,1);r.time<this.currentTime&&r.index>t.index;)t=r,r=this.getNextKeyWith(n,f,r.index+1);l.prevKey[n]=t;l.nextKey[n]=r}var s=(this.currentTime-t.time)/(r.time-t.time),u=t[n],v=r[n];0>s&&(s=0);1<s&&(s=1);if("pos"===n)if(this.interpolationType===THREE.AnimationHandler.LINEAR)c.x=u[0]+(v[0]-u[0])*s,c.y=u[1]+(v[1]-u[1])*s, +c.z=u[2]+(v[2]-u[2])*s,t=this.weight/(this.weight+p.positionWeight),k.position.lerp(c,t),p.positionWeight+=this.weight;else{if(this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD)a[0]=this.getPrevKeyWith("pos",f,t.index-1).pos,a[1]=u,a[2]=v,a[3]=this.getNextKeyWith("pos",f,r.index+1).pos,s=.33*s+.33,r=e(a,s),t=this.weight/(this.weight+p.positionWeight),p.positionWeight+=this.weight,n=k.position,n.x+=(r[0]-n.x)*t,n.y+=(r[1]- +n.y)*t,n.z+=(r[2]-n.z)*t,this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD&&(s=e(a,1.01*s),b.set(s[0],s[1],s[2]),b.sub(n),b.y=0,b.normalize(),s=Math.atan2(b.x,b.z),k.rotation.set(0,s,0))}else"rot"===n?(THREE.Quaternion.slerp(u,v,d,s),0===p.quaternionWeight?(k.quaternion.copy(d),p.quaternionWeight=this.weight):(t=this.weight/(this.weight+p.quaternionWeight),THREE.Quaternion.slerp(k.quaternion,d,k.quaternion,t),p.quaternionWeight+=this.weight)):"scl"===n&&(c.x=u[0]+(v[0]-u[0])*s,c.y= +u[1]+(v[1]-u[1])*s,c.z=u[2]+(v[2]-u[2])*s,t=this.weight/(this.weight+p.scaleWeight),k.scale.lerp(c,t),p.scaleWeight+=this.weight)}return!0}}}(),getNextKeyWith:function(a,b,c){var d=this.data.hierarchy[b].keys;for(c=this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?c<d.length-1?c:d.length-1:c%d.length;c<d.length;c++)if(void 0!==d[c][a])return d[c];return this.data.hierarchy[b].keys[0]},getPrevKeyWith:function(a,b,c){var d= +this.data.hierarchy[b].keys;for(c=this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?0<c?c:0:0<=c?c:c+d.length;0<=c;c--)if(void 0!==d[c][a])return d[c];return this.data.hierarchy[b].keys[d.length-1]}}; THREE.KeyFrameAnimation=function(a){this.root=a.node;this.data=THREE.AnimationHandler.init(a);this.hierarchy=THREE.AnimationHandler.parse(this.root);this.currentTime=0;this.timeScale=.001;this.isPlaying=!1;this.loop=this.isPaused=!0;a=0;for(var b=this.hierarchy.length;a<b;a++){var c=this.data.hierarchy[a].sids,d=this.hierarchy[a];if(this.data.hierarchy[a].keys.length&&c){for(var e=0;e<c.length;e++){var f=c[e],g=this.getNextKeyWith(f,a,0);g&&g.apply(f)}d.matrixAutoUpdate=!1;this.data.hierarchy[a].node.updateMatrix(); d.matrixWorldNeedsUpdate=!0}}}; -THREE.KeyFrameAnimation.prototype.play=function(a){this.currentTime=void 0!==a?a:0;if(!1===this.isPlaying){this.isPlaying=!0;var b=this.hierarchy.length,c,d;for(a=0;a<b;a++)c=this.hierarchy[a],d=this.data.hierarchy[a],void 0===d.animationCache&&(d.animationCache={},d.animationCache.prevKey=null,d.animationCache.nextKey=null,d.animationCache.originalMatrix=c.matrix),c=this.data.hierarchy[a].keys,c.length&&(d.animationCache.prevKey=c[0],d.animationCache.nextKey=c[1],this.startTime=Math.min(c[0].time, -this.startTime),this.endTime=Math.max(c[c.length-1].time,this.endTime));this.update(0)}this.isPaused=!1;THREE.AnimationHandler.play(this)};THREE.KeyFrameAnimation.prototype.stop=function(){this.isPaused=this.isPlaying=!1;THREE.AnimationHandler.stop(this);for(var a=0;a<this.data.hierarchy.length;a++){var b=this.hierarchy[a],c=this.data.hierarchy[a];if(void 0!==c.animationCache){var d=c.animationCache.originalMatrix;d.copy(b.matrix);b.matrix=d;delete c.animationCache}}}; -THREE.KeyFrameAnimation.prototype.update=function(a){if(!1!==this.isPlaying){this.currentTime+=a*this.timeScale;a=this.data.length;!0===this.loop&&this.currentTime>a&&(this.currentTime%=a);this.currentTime=Math.min(this.currentTime,a);a=0;for(var b=this.hierarchy.length;a<b;a++){var c=this.hierarchy[a],d=this.data.hierarchy[a],e=d.keys,d=d.animationCache;if(e.length){var f=d.prevKey,g=d.nextKey;if(g.time<=this.currentTime){for(;g.time<this.currentTime&&g.index>f.index;)f=g,g=e[f.index+1];d.prevKey= -f;d.nextKey=g}g.time>=this.currentTime?f.interpolate(g,this.currentTime):f.interpolate(g,g.time);this.data.hierarchy[a].node.updateMatrix();c.matrixWorldNeedsUpdate=!0}}}};THREE.KeyFrameAnimation.prototype.getNextKeyWith=function(a,b,c){b=this.data.hierarchy[b].keys;for(c%=b.length;c<b.length;c++)if(b[c].hasTarget(a))return b[c];return b[0]}; -THREE.KeyFrameAnimation.prototype.getPrevKeyWith=function(a,b,c){b=this.data.hierarchy[b].keys;for(c=0<=c?c:c+b.length;0<=c;c--)if(b[c].hasTarget(a))return b[c];return b[b.length-1]};THREE.MorphAnimation=function(a){this.mesh=a;this.frames=a.morphTargetInfluences.length;this.currentTime=0;this.duration=1E3;this.loop=!0;this.currentFrame=this.lastFrame=0;this.isPlaying=!1}; -THREE.MorphAnimation.prototype={constructor:THREE.MorphAnimation,play:function(){this.isPlaying=!0},pause:function(){this.isPlaying=!1},update:function(a){if(!1!==this.isPlaying){this.currentTime+=a;!0===this.loop&&this.currentTime>this.duration&&(this.currentTime%=this.duration);this.currentTime=Math.min(this.currentTime,this.duration);a=this.duration/this.frames;var b=Math.floor(this.currentTime/a);b!=this.currentFrame&&(this.mesh.morphTargetInfluences[this.lastFrame]=0,this.mesh.morphTargetInfluences[this.currentFrame]= -1,this.mesh.morphTargetInfluences[b]=0,this.lastFrame=this.currentFrame,this.currentFrame=b);this.mesh.morphTargetInfluences[b]=this.currentTime%a/a;this.mesh.morphTargetInfluences[this.lastFrame]=1-this.mesh.morphTargetInfluences[b]}}}; -THREE.BoxGeometry=function(a,b,c,d,e,f){function g(a,b,c,d,e,f,g,r){var u,v=h.widthSegments,y=h.heightSegments,C=e/2,x=f/2,F=h.vertices.length;if("x"===a&&"y"===b||"y"===a&&"x"===b)u="z";else if("x"===a&&"z"===b||"z"===a&&"x"===b)u="y",y=h.depthSegments;else if("z"===a&&"y"===b||"y"===a&&"z"===b)u="x",v=h.depthSegments;var z=v+1,G=y+1,E=e/v,w=f/y,D=new THREE.Vector3;D[u]=0<g?1:-1;for(e=0;e<G;e++)for(f=0;f<z;f++){var A=new THREE.Vector3;A[a]=(f*E-C)*c;A[b]=(e*w-x)*d;A[u]=g;h.vertices.push(A)}for(e= -0;e<y;e++)for(f=0;f<v;f++)x=f+z*e,a=f+z*(e+1),b=f+1+z*(e+1),c=f+1+z*e,d=new THREE.Vector2(f/v,1-e/y),g=new THREE.Vector2(f/v,1-(e+1)/y),u=new THREE.Vector2((f+1)/v,1-(e+1)/y),C=new THREE.Vector2((f+1)/v,1-e/y),x=new THREE.Face3(x+F,a+F,c+F),x.normal.copy(D),x.vertexNormals.push(D.clone(),D.clone(),D.clone()),x.materialIndex=r,h.faces.push(x),h.faceVertexUvs[0].push([d,g,C]),x=new THREE.Face3(a+F,b+F,c+F),x.normal.copy(D),x.vertexNormals.push(D.clone(),D.clone(),D.clone()),x.materialIndex=r,h.faces.push(x), -h.faceVertexUvs[0].push([g.clone(),u,C.clone()])}THREE.Geometry.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};this.widthSegments=d||1;this.heightSegments=e||1;this.depthSegments=f||1;var h=this;d=a/2;e=b/2;f=c/2;g("z","y",-1,-1,c,b,d,0);g("z","y",1,-1,c,b,-d,1);g("x","z",1,1,a,c,e,2);g("x","z",1,-1,a,c,-e,3);g("x","y",1,-1,a,b,f,4);g("x","y",-1,-1,a,b,-f,5);this.mergeVertices()};THREE.BoxGeometry.prototype=Object.create(THREE.Geometry.prototype); +THREE.KeyFrameAnimation.prototype={constructor:THREE.KeyFrameAnimation,play:function(a){this.currentTime=void 0!==a?a:0;if(!1===this.isPlaying){this.isPlaying=!0;var b=this.hierarchy.length,c,d;for(a=0;a<b;a++)c=this.hierarchy[a],d=this.data.hierarchy[a],void 0===d.animationCache&&(d.animationCache={},d.animationCache.prevKey=null,d.animationCache.nextKey=null,d.animationCache.originalMatrix=c.matrix),c=this.data.hierarchy[a].keys,c.length&&(d.animationCache.prevKey=c[0],d.animationCache.nextKey= +c[1],this.startTime=Math.min(c[0].time,this.startTime),this.endTime=Math.max(c[c.length-1].time,this.endTime));this.update(0)}this.isPaused=!1;THREE.AnimationHandler.play(this)},stop:function(){this.isPaused=this.isPlaying=!1;THREE.AnimationHandler.stop(this);for(var a=0;a<this.data.hierarchy.length;a++){var b=this.hierarchy[a],c=this.data.hierarchy[a];if(void 0!==c.animationCache){var d=c.animationCache.originalMatrix;d.copy(b.matrix);b.matrix=d;delete c.animationCache}}},update:function(a){if(!1!== +this.isPlaying){this.currentTime+=a*this.timeScale;a=this.data.length;!0===this.loop&&this.currentTime>a&&(this.currentTime%=a);this.currentTime=Math.min(this.currentTime,a);a=0;for(var b=this.hierarchy.length;a<b;a++){var c=this.hierarchy[a],d=this.data.hierarchy[a],e=d.keys,d=d.animationCache;if(e.length){var f=d.prevKey,g=d.nextKey;if(g.time<=this.currentTime){for(;g.time<this.currentTime&&g.index>f.index;)f=g,g=e[f.index+1];d.prevKey=f;d.nextKey=g}g.time>=this.currentTime?f.interpolate(g,this.currentTime): +f.interpolate(g,g.time);this.data.hierarchy[a].node.updateMatrix();c.matrixWorldNeedsUpdate=!0}}}},getNextKeyWith:function(a,b,c){b=this.data.hierarchy[b].keys;for(c%=b.length;c<b.length;c++)if(b[c].hasTarget(a))return b[c];return b[0]},getPrevKeyWith:function(a,b,c){b=this.data.hierarchy[b].keys;for(c=0<=c?c:c+b.length;0<=c;c--)if(b[c].hasTarget(a))return b[c];return b[b.length-1]}}; +THREE.MorphAnimation=function(a){this.mesh=a;this.frames=a.morphTargetInfluences.length;this.currentTime=0;this.duration=1E3;this.loop=!0;this.currentFrame=this.lastFrame=0;this.isPlaying=!1}; +THREE.MorphAnimation.prototype={constructor:THREE.MorphAnimation,play:function(){this.isPlaying=!0},pause:function(){this.isPlaying=!1},update:function(a){if(!1!==this.isPlaying){this.currentTime+=a;!0===this.loop&&this.currentTime>this.duration&&(this.currentTime%=this.duration);this.currentTime=Math.min(this.currentTime,this.duration);a=this.duration/this.frames;var b=Math.floor(this.currentTime/a),c=this.mesh.morphTargetInfluences;b!=this.currentFrame&&(c[this.lastFrame]=0,c[this.currentFrame]= +1,c[b]=0,this.lastFrame=this.currentFrame,this.currentFrame=b);c[b]=this.currentTime%a/a;c[this.lastFrame]=1-c[b]}}}; +THREE.BoxGeometry=function(a,b,c,d,e,f){function g(a,b,c,d,e,f,g,s){var u,v=h.widthSegments,x=h.heightSegments,D=e/2,w=f/2,y=h.vertices.length;if("x"===a&&"y"===b||"y"===a&&"x"===b)u="z";else if("x"===a&&"z"===b||"z"===a&&"x"===b)u="y",x=h.depthSegments;else if("z"===a&&"y"===b||"y"===a&&"z"===b)u="x",v=h.depthSegments;var A=v+1,E=x+1,G=e/v,F=f/x,z=new THREE.Vector3;z[u]=0<g?1:-1;for(e=0;e<E;e++)for(f=0;f<A;f++){var I=new THREE.Vector3;I[a]=(f*G-D)*c;I[b]=(e*F-w)*d;I[u]=g;h.vertices.push(I)}for(e= +0;e<x;e++)for(f=0;f<v;f++)w=f+A*e,a=f+A*(e+1),b=f+1+A*(e+1),c=f+1+A*e,d=new THREE.Vector2(f/v,1-e/x),g=new THREE.Vector2(f/v,1-(e+1)/x),u=new THREE.Vector2((f+1)/v,1-(e+1)/x),D=new THREE.Vector2((f+1)/v,1-e/x),w=new THREE.Face3(w+y,a+y,c+y),w.normal.copy(z),w.vertexNormals.push(z.clone(),z.clone(),z.clone()),w.materialIndex=s,h.faces.push(w),h.faceVertexUvs[0].push([d,g,D]),w=new THREE.Face3(a+y,b+y,c+y),w.normal.copy(z),w.vertexNormals.push(z.clone(),z.clone(),z.clone()),w.materialIndex=s,h.faces.push(w), +h.faceVertexUvs[0].push([g.clone(),u,D.clone()])}THREE.Geometry.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};this.widthSegments=d||1;this.heightSegments=e||1;this.depthSegments=f||1;var h=this;d=a/2;e=b/2;f=c/2;g("z","y",-1,-1,c,b,d,0);g("z","y",1,-1,c,b,-d,1);g("x","z",1,1,a,c,e,2);g("x","z",1,-1,a,c,-e,3);g("x","y",1,-1,a,b,f,4);g("x","y",-1,-1,a,b,-f,5);this.mergeVertices()};THREE.BoxGeometry.prototype=Object.create(THREE.Geometry.prototype); THREE.BoxGeometry.prototype.constructor=THREE.BoxGeometry; THREE.CircleGeometry=function(a,b,c,d){THREE.Geometry.call(this);this.type="CircleGeometry";this.parameters={radius:a,segments:b,thetaStart:c,thetaLength:d};a=a||50;b=void 0!==b?Math.max(3,b):8;c=void 0!==c?c:0;d=void 0!==d?d:2*Math.PI;var e,f=[];e=new THREE.Vector3;var g=new THREE.Vector2(.5,.5);this.vertices.push(e);f.push(g);for(e=0;e<=b;e++){var h=new THREE.Vector3,k=c+e/b*d;h.x=a*Math.cos(k);h.y=a*Math.sin(k);this.vertices.push(h);f.push(new THREE.Vector2((h.x/a+1)/2,(h.y/a+1)/2))}c=new THREE.Vector3(0, 0,1);for(e=1;e<=b;e++)this.faces.push(new THREE.Face3(e,e+1,0,[c.clone(),c.clone(),c.clone()])),this.faceVertexUvs[0].push([f[e].clone(),f[e+1].clone(),g.clone()]);this.computeFaceNormals();this.boundingSphere=new THREE.Sphere(new THREE.Vector3,a)};THREE.CircleGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.CircleGeometry.prototype.constructor=THREE.CircleGeometry; -THREE.CubeGeometry=function(a,b,c,d,e,f){console.warn("THREE.CubeGeometry has been renamed to THREE.BoxGeometry.");return new THREE.BoxGeometry(a,b,c,d,e,f)}; -THREE.CylinderGeometry=function(a,b,c,d,e,f,g,h){THREE.Geometry.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};a=void 0!==a?a:20;b=void 0!==b?b:20;c=void 0!==c?c:100;d=d||8;e=e||1;f=void 0!==f?f:!1;g=void 0!==g?g:0;h=void 0!==h?h:2*Math.PI;var k=c/2,n,p,q=[],m=[];for(p=0;p<=e;p++){var t=[],s=[],r=p/e,u=r*(b-a)+a;for(n=0;n<=d;n++){var v=n/d,y=new THREE.Vector3;y.x=u*Math.sin(v*h+ -g);y.y=-r*c+k;y.z=u*Math.cos(v*h+g);this.vertices.push(y);t.push(this.vertices.length-1);s.push(new THREE.Vector2(v,1-r))}q.push(t);m.push(s)}c=(b-a)/c;for(n=0;n<d;n++)for(0!==a?(g=this.vertices[q[0][n]].clone(),h=this.vertices[q[0][n+1]].clone()):(g=this.vertices[q[1][n]].clone(),h=this.vertices[q[1][n+1]].clone()),g.setY(Math.sqrt(g.x*g.x+g.z*g.z)*c).normalize(),h.setY(Math.sqrt(h.x*h.x+h.z*h.z)*c).normalize(),p=0;p<e;p++){var t=q[p][n],s=q[p+1][n],r=q[p+1][n+1],u=q[p][n+1],v=g.clone(),y=g.clone(), -C=h.clone(),x=h.clone(),F=m[p][n].clone(),z=m[p+1][n].clone(),G=m[p+1][n+1].clone(),E=m[p][n+1].clone();this.faces.push(new THREE.Face3(t,s,u,[v,y,x]));this.faceVertexUvs[0].push([F,z,E]);this.faces.push(new THREE.Face3(s,r,u,[y.clone(),C,x.clone()]));this.faceVertexUvs[0].push([z.clone(),G,E.clone()])}if(!1===f&&0<a)for(this.vertices.push(new THREE.Vector3(0,k,0)),n=0;n<d;n++)t=q[0][n],s=q[0][n+1],r=this.vertices.length-1,v=new THREE.Vector3(0,1,0),y=new THREE.Vector3(0,1,0),C=new THREE.Vector3(0, -1,0),F=m[0][n].clone(),z=m[0][n+1].clone(),G=new THREE.Vector2(z.x,0),this.faces.push(new THREE.Face3(t,s,r,[v,y,C])),this.faceVertexUvs[0].push([F,z,G]);if(!1===f&&0<b)for(this.vertices.push(new THREE.Vector3(0,-k,0)),n=0;n<d;n++)t=q[e][n+1],s=q[e][n],r=this.vertices.length-1,v=new THREE.Vector3(0,-1,0),y=new THREE.Vector3(0,-1,0),C=new THREE.Vector3(0,-1,0),F=m[e][n+1].clone(),z=m[e][n].clone(),G=new THREE.Vector2(z.x,1),this.faces.push(new THREE.Face3(t,s,r,[v,y,C])),this.faceVertexUvs[0].push([F, -z,G]);this.computeFaceNormals()};THREE.CylinderGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.CylinderGeometry.prototype.constructor=THREE.CylinderGeometry;THREE.ExtrudeGeometry=function(a,b){"undefined"!==typeof a&&(THREE.Geometry.call(this),this.type="ExtrudeGeometry",a=a instanceof Array?a:[a],this.addShapeList(a,b),this.computeFaceNormals())};THREE.ExtrudeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ExtrudeGeometry.prototype.constructor=THREE.ExtrudeGeometry; +THREE.CubeGeometry=function(a,b,c,d,e,f){THREE.warn("THREE.CubeGeometry has been renamed to THREE.BoxGeometry.");return new THREE.BoxGeometry(a,b,c,d,e,f)}; +THREE.CylinderGeometry=function(a,b,c,d,e,f,g,h){THREE.Geometry.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};a=void 0!==a?a:20;b=void 0!==b?b:20;c=void 0!==c?c:100;d=d||8;e=e||1;f=void 0!==f?f:!1;g=void 0!==g?g:0;h=void 0!==h?h:2*Math.PI;var k=c/2,l,p,q=[],n=[];for(p=0;p<=e;p++){var t=[],r=[],s=p/e,u=s*(b-a)+a;for(l=0;l<=d;l++){var v=l/d,x=new THREE.Vector3;x.x=u*Math.sin(v*h+ +g);x.y=-s*c+k;x.z=u*Math.cos(v*h+g);this.vertices.push(x);t.push(this.vertices.length-1);r.push(new THREE.Vector2(v,1-s))}q.push(t);n.push(r)}c=(b-a)/c;for(l=0;l<d;l++)for(0!==a?(g=this.vertices[q[0][l]].clone(),h=this.vertices[q[0][l+1]].clone()):(g=this.vertices[q[1][l]].clone(),h=this.vertices[q[1][l+1]].clone()),g.setY(Math.sqrt(g.x*g.x+g.z*g.z)*c).normalize(),h.setY(Math.sqrt(h.x*h.x+h.z*h.z)*c).normalize(),p=0;p<e;p++){var t=q[p][l],r=q[p+1][l],s=q[p+1][l+1],u=q[p][l+1],v=g.clone(),x=g.clone(), +D=h.clone(),w=h.clone(),y=n[p][l].clone(),A=n[p+1][l].clone(),E=n[p+1][l+1].clone(),G=n[p][l+1].clone();this.faces.push(new THREE.Face3(t,r,u,[v,x,w]));this.faceVertexUvs[0].push([y,A,G]);this.faces.push(new THREE.Face3(r,s,u,[x.clone(),D,w.clone()]));this.faceVertexUvs[0].push([A.clone(),E,G.clone()])}if(!1===f&&0<a)for(this.vertices.push(new THREE.Vector3(0,k,0)),l=0;l<d;l++)t=q[0][l],r=q[0][l+1],s=this.vertices.length-1,v=new THREE.Vector3(0,1,0),x=new THREE.Vector3(0,1,0),D=new THREE.Vector3(0, +1,0),y=n[0][l].clone(),A=n[0][l+1].clone(),E=new THREE.Vector2(A.x,0),this.faces.push(new THREE.Face3(t,r,s,[v,x,D])),this.faceVertexUvs[0].push([y,A,E]);if(!1===f&&0<b)for(this.vertices.push(new THREE.Vector3(0,-k,0)),l=0;l<d;l++)t=q[e][l+1],r=q[e][l],s=this.vertices.length-1,v=new THREE.Vector3(0,-1,0),x=new THREE.Vector3(0,-1,0),D=new THREE.Vector3(0,-1,0),y=n[e][l+1].clone(),A=n[e][l].clone(),E=new THREE.Vector2(A.x,1),this.faces.push(new THREE.Face3(t,r,s,[v,x,D])),this.faceVertexUvs[0].push([y, +A,E]);this.computeFaceNormals()};THREE.CylinderGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.CylinderGeometry.prototype.constructor=THREE.CylinderGeometry;THREE.ExtrudeGeometry=function(a,b){"undefined"!==typeof a&&(THREE.Geometry.call(this),this.type="ExtrudeGeometry",a=a instanceof Array?a:[a],this.addShapeList(a,b),this.computeFaceNormals())};THREE.ExtrudeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ExtrudeGeometry.prototype.constructor=THREE.ExtrudeGeometry; THREE.ExtrudeGeometry.prototype.addShapeList=function(a,b){for(var c=a.length,d=0;d<c;d++)this.addShape(a[d],b)}; -THREE.ExtrudeGeometry.prototype.addShape=function(a,b){function c(a,b,c){b||console.log("die");return b.clone().multiplyScalar(c).add(a)}function d(a,b,c){var d=1,d=a.x-b.x,e=a.y-b.y,f=c.x-a.x,g=c.y-a.y,h=d*d+e*e;if(1E-10<Math.abs(d*g-e*f)){var k=Math.sqrt(h),m=Math.sqrt(f*f+g*g),h=b.x-e/k;b=b.y+d/k;f=((c.x-g/m-h)*g-(c.y+f/m-b)*f)/(d*g-e*f);c=h+d*f-a.x;a=b+e*f-a.y;d=c*c+a*a;if(2>=d)return new THREE.Vector2(c,a);d=Math.sqrt(d/2)}else a=!1,1E-10<d?1E-10<f&&(a=!0):-1E-10>d?-1E-10>f&&(a=!0):Math.sign(e)== -Math.sign(g)&&(a=!0),a?(c=-e,a=d,d=Math.sqrt(h)):(c=d,a=e,d=Math.sqrt(h/2));return new THREE.Vector2(c/d,a/d)}function e(a,b){var c,d;for(H=a.length;0<=--H;){c=H;d=H-1;0>d&&(d=a.length-1);for(var e=0,f=t+2*p,e=0;e<f;e++){var g=ga*e,h=ga*(e+1),k=b+c+g,g=b+d+g,m=b+d+h,h=b+c+h,k=k+U,g=g+U,m=m+U,h=h+U;A.faces.push(new THREE.Face3(k,g,h,null,null,y));A.faces.push(new THREE.Face3(g,m,h,null,null,y));k=C.generateSideWallUV(A,k,g,m,h);A.faceVertexUvs[0].push([k[0],k[1],k[3]]);A.faceVertexUvs[0].push([k[1], -k[2],k[3]])}}}function f(a,b,c){A.vertices.push(new THREE.Vector3(a,b,c))}function g(a,b,c){a+=U;b+=U;c+=U;A.faces.push(new THREE.Face3(a,b,c,null,null,v));a=C.generateTopUV(A,a,b,c);A.faceVertexUvs[0].push(a)}var h=void 0!==b.amount?b.amount:100,k=void 0!==b.bevelThickness?b.bevelThickness:6,n=void 0!==b.bevelSize?b.bevelSize:k-2,p=void 0!==b.bevelSegments?b.bevelSegments:3,q=void 0!==b.bevelEnabled?b.bevelEnabled:!0,m=void 0!==b.curveSegments?b.curveSegments:12,t=void 0!==b.steps?b.steps:1,s=b.extrudePath, -r,u=!1,v=b.material,y=b.extrudeMaterial,C=void 0!==b.UVGenerator?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,x,F,z,G;s&&(r=s.getSpacedPoints(t),u=!0,q=!1,x=void 0!==b.frames?b.frames:new THREE.TubeGeometry.FrenetFrames(s,t,!1),F=new THREE.Vector3,z=new THREE.Vector3,G=new THREE.Vector3);q||(n=k=p=0);var E,w,D,A=this,U=this.vertices.length,s=a.extractPoints(m),m=s.shape,M=s.holes;if(s=!THREE.Shape.Utils.isClockWise(m)){m=m.reverse();w=0;for(D=M.length;w<D;w++)E=M[w],THREE.Shape.Utils.isClockWise(E)&& -(M[w]=E.reverse());s=!1}var K=THREE.Shape.Utils.triangulateShape(m,M),L=m;w=0;for(D=M.length;w<D;w++)E=M[w],m=m.concat(E);var N,T,Q,W,O,ga=m.length,ea,xa=K.length,s=[],H=0;Q=L.length;N=Q-1;for(T=H+1;H<Q;H++,N++,T++)N===Q&&(N=0),T===Q&&(T=0),s[H]=d(L[H],L[N],L[T]);var $a=[],qa,ya=s.concat();w=0;for(D=M.length;w<D;w++){E=M[w];qa=[];H=0;Q=E.length;N=Q-1;for(T=H+1;H<Q;H++,N++,T++)N===Q&&(N=0),T===Q&&(T=0),qa[H]=d(E[H],E[N],E[T]);$a.push(qa);ya=ya.concat(qa)}for(N=0;N<p;N++){Q=N/p;W=k*(1-Q);T=n*Math.sin(Q* -Math.PI/2);H=0;for(Q=L.length;H<Q;H++)O=c(L[H],s[H],T),f(O.x,O.y,-W);w=0;for(D=M.length;w<D;w++)for(E=M[w],qa=$a[w],H=0,Q=E.length;H<Q;H++)O=c(E[H],qa[H],T),f(O.x,O.y,-W)}T=n;for(H=0;H<ga;H++)O=q?c(m[H],ya[H],T):m[H],u?(z.copy(x.normals[0]).multiplyScalar(O.x),F.copy(x.binormals[0]).multiplyScalar(O.y),G.copy(r[0]).add(z).add(F),f(G.x,G.y,G.z)):f(O.x,O.y,0);for(Q=1;Q<=t;Q++)for(H=0;H<ga;H++)O=q?c(m[H],ya[H],T):m[H],u?(z.copy(x.normals[Q]).multiplyScalar(O.x),F.copy(x.binormals[Q]).multiplyScalar(O.y), -G.copy(r[Q]).add(z).add(F),f(G.x,G.y,G.z)):f(O.x,O.y,h/t*Q);for(N=p-1;0<=N;N--){Q=N/p;W=k*(1-Q);T=n*Math.sin(Q*Math.PI/2);H=0;for(Q=L.length;H<Q;H++)O=c(L[H],s[H],T),f(O.x,O.y,h+W);w=0;for(D=M.length;w<D;w++)for(E=M[w],qa=$a[w],H=0,Q=E.length;H<Q;H++)O=c(E[H],qa[H],T),u?f(O.x,O.y+r[t-1].y,r[t-1].x+W):f(O.x,O.y,h+W)}(function(){if(q){var a;a=0*ga;for(H=0;H<xa;H++)ea=K[H],g(ea[2]+a,ea[1]+a,ea[0]+a);a=t+2*p;a*=ga;for(H=0;H<xa;H++)ea=K[H],g(ea[0]+a,ea[1]+a,ea[2]+a)}else{for(H=0;H<xa;H++)ea=K[H],g(ea[2], -ea[1],ea[0]);for(H=0;H<xa;H++)ea=K[H],g(ea[0]+ga*t,ea[1]+ga*t,ea[2]+ga*t)}})();(function(){var a=0;e(L,a);a+=L.length;w=0;for(D=M.length;w<D;w++)E=M[w],e(E,a),a+=E.length})()}; +THREE.ExtrudeGeometry.prototype.addShape=function(a,b){function c(a,b,c){b||THREE.error("THREE.ExtrudeGeometry: vec does not exist");return b.clone().multiplyScalar(c).add(a)}function d(a,b,c){var d=1,d=a.x-b.x,e=a.y-b.y,f=c.x-a.x,g=c.y-a.y,h=d*d+e*e;if(1E-10<Math.abs(d*g-e*f)){var k=Math.sqrt(h),l=Math.sqrt(f*f+g*g),h=b.x-e/k;b=b.y+d/k;f=((c.x-g/l-h)*g-(c.y+f/l-b)*f)/(d*g-e*f);c=h+d*f-a.x;a=b+e*f-a.y;d=c*c+a*a;if(2>=d)return new THREE.Vector2(c,a);d=Math.sqrt(d/2)}else a=!1,1E-10<d?1E-10<f&&(a=!0): +-1E-10>d?-1E-10>f&&(a=!0):Math.sign(e)==Math.sign(g)&&(a=!0),a?(c=-e,a=d,d=Math.sqrt(h)):(c=d,a=e,d=Math.sqrt(h/2));return new THREE.Vector2(c/d,a/d)}function e(a,b){var c,d;for(O=a.length;0<=--O;){c=O;d=O-1;0>d&&(d=a.length-1);for(var e=0,f=t+2*p,e=0;e<f;e++){var g=oa*e,h=oa*(e+1),k=b+c+g,g=b+d+g,l=b+d+h,h=b+c+h,k=k+U,g=g+U,l=l+U,h=h+U;I.faces.push(new THREE.Face3(k,g,h,null,null,x));I.faces.push(new THREE.Face3(g,l,h,null,null,x));k=D.generateSideWallUV(I,k,g,l,h);I.faceVertexUvs[0].push([k[0], +k[1],k[3]]);I.faceVertexUvs[0].push([k[1],k[2],k[3]])}}}function f(a,b,c){I.vertices.push(new THREE.Vector3(a,b,c))}function g(a,b,c){a+=U;b+=U;c+=U;I.faces.push(new THREE.Face3(a,b,c,null,null,v));a=D.generateTopUV(I,a,b,c);I.faceVertexUvs[0].push(a)}var h=void 0!==b.amount?b.amount:100,k=void 0!==b.bevelThickness?b.bevelThickness:6,l=void 0!==b.bevelSize?b.bevelSize:k-2,p=void 0!==b.bevelSegments?b.bevelSegments:3,q=void 0!==b.bevelEnabled?b.bevelEnabled:!0,n=void 0!==b.curveSegments?b.curveSegments: +12,t=void 0!==b.steps?b.steps:1,r=b.extrudePath,s,u=!1,v=b.material,x=b.extrudeMaterial,D=void 0!==b.UVGenerator?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,w,y,A,E;r&&(s=r.getSpacedPoints(t),u=!0,q=!1,w=void 0!==b.frames?b.frames:new THREE.TubeGeometry.FrenetFrames(r,t,!1),y=new THREE.Vector3,A=new THREE.Vector3,E=new THREE.Vector3);q||(l=k=p=0);var G,F,z,I=this,U=this.vertices.length,r=a.extractPoints(n),n=r.shape,M=r.holes;if(r=!THREE.Shape.Utils.isClockWise(n)){n=n.reverse();F=0;for(z= +M.length;F<z;F++)G=M[F],THREE.Shape.Utils.isClockWise(G)&&(M[F]=G.reverse());r=!1}var H=THREE.Shape.Utils.triangulateShape(n,M),L=n;F=0;for(z=M.length;F<z;F++)G=M[F],n=n.concat(G);var P,N,R,V,J,oa=n.length,ja,ha=H.length,r=[],O=0;R=L.length;P=R-1;for(N=O+1;O<R;O++,P++,N++)P===R&&(P=0),N===R&&(N=0),r[O]=d(L[O],L[P],L[N]);var ca=[],ba,qa=r.concat();F=0;for(z=M.length;F<z;F++){G=M[F];ba=[];O=0;R=G.length;P=R-1;for(N=O+1;O<R;O++,P++,N++)P===R&&(P=0),N===R&&(N=0),ba[O]=d(G[O],G[P],G[N]);ca.push(ba);qa= +qa.concat(ba)}for(P=0;P<p;P++){R=P/p;V=k*(1-R);N=l*Math.sin(R*Math.PI/2);O=0;for(R=L.length;O<R;O++)J=c(L[O],r[O],N),f(J.x,J.y,-V);F=0;for(z=M.length;F<z;F++)for(G=M[F],ba=ca[F],O=0,R=G.length;O<R;O++)J=c(G[O],ba[O],N),f(J.x,J.y,-V)}N=l;for(O=0;O<oa;O++)J=q?c(n[O],qa[O],N):n[O],u?(A.copy(w.normals[0]).multiplyScalar(J.x),y.copy(w.binormals[0]).multiplyScalar(J.y),E.copy(s[0]).add(A).add(y),f(E.x,E.y,E.z)):f(J.x,J.y,0);for(R=1;R<=t;R++)for(O=0;O<oa;O++)J=q?c(n[O],qa[O],N):n[O],u?(A.copy(w.normals[R]).multiplyScalar(J.x), +y.copy(w.binormals[R]).multiplyScalar(J.y),E.copy(s[R]).add(A).add(y),f(E.x,E.y,E.z)):f(J.x,J.y,h/t*R);for(P=p-1;0<=P;P--){R=P/p;V=k*(1-R);N=l*Math.sin(R*Math.PI/2);O=0;for(R=L.length;O<R;O++)J=c(L[O],r[O],N),f(J.x,J.y,h+V);F=0;for(z=M.length;F<z;F++)for(G=M[F],ba=ca[F],O=0,R=G.length;O<R;O++)J=c(G[O],ba[O],N),u?f(J.x,J.y+s[t-1].y,s[t-1].x+V):f(J.x,J.y,h+V)}(function(){if(q){var a;a=0*oa;for(O=0;O<ha;O++)ja=H[O],g(ja[2]+a,ja[1]+a,ja[0]+a);a=t+2*p;a*=oa;for(O=0;O<ha;O++)ja=H[O],g(ja[0]+a,ja[1]+a,ja[2]+ +a)}else{for(O=0;O<ha;O++)ja=H[O],g(ja[2],ja[1],ja[0]);for(O=0;O<ha;O++)ja=H[O],g(ja[0]+oa*t,ja[1]+oa*t,ja[2]+oa*t)}})();(function(){var a=0;e(L,a);a+=L.length;F=0;for(z=M.length;F<z;F++)G=M[F],e(G,a),a+=G.length})()}; THREE.ExtrudeGeometry.WorldUVGenerator={generateTopUV:function(a,b,c,d){a=a.vertices;b=a[b];c=a[c];d=a[d];return[new THREE.Vector2(b.x,b.y),new THREE.Vector2(c.x,c.y),new THREE.Vector2(d.x,d.y)]},generateSideWallUV:function(a,b,c,d,e){a=a.vertices;b=a[b];c=a[c];d=a[d];e=a[e];return.01>Math.abs(b.y-c.y)?[new THREE.Vector2(b.x,1-b.z),new THREE.Vector2(c.x,1-c.z),new THREE.Vector2(d.x,1-d.z),new THREE.Vector2(e.x,1-e.z)]:[new THREE.Vector2(b.y,1-b.z),new THREE.Vector2(c.y,1-c.z),new THREE.Vector2(d.y, 1-d.z),new THREE.Vector2(e.y,1-e.z)]}};THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);this.type="ShapeGeometry";!1===a instanceof Array&&(a=[a]);this.addShapeList(a,b);this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ShapeGeometry.prototype.constructor=THREE.ShapeGeometry;THREE.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;c<d;c++)this.addShape(a[c],b);return this}; -THREE.ShapeGeometry.prototype.addShape=function(a,b){void 0===b&&(b={});var c=b.material,d=void 0===b.UVGenerator?THREE.ExtrudeGeometry.WorldUVGenerator:b.UVGenerator,e,f,g,h=this.vertices.length;e=a.extractPoints(void 0!==b.curveSegments?b.curveSegments:12);var k=e.shape,n=e.holes;if(!THREE.Shape.Utils.isClockWise(k))for(k=k.reverse(),e=0,f=n.length;e<f;e++)g=n[e],THREE.Shape.Utils.isClockWise(g)&&(n[e]=g.reverse());var p=THREE.Shape.Utils.triangulateShape(k,n);e=0;for(f=n.length;e<f;e++)g=n[e], -k=k.concat(g);n=k.length;f=p.length;for(e=0;e<n;e++)g=k[e],this.vertices.push(new THREE.Vector3(g.x,g.y,0));for(e=0;e<f;e++)n=p[e],k=n[0]+h,g=n[1]+h,n=n[2]+h,this.faces.push(new THREE.Face3(k,g,n,null,null,c)),this.faceVertexUvs[0].push(d.generateTopUV(this,k,g,n))}; -THREE.LatheGeometry=function(a,b,c,d){THREE.Geometry.call(this);this.type="LatheGeometry";this.parameters={points:a,segments:b,phiStart:c,phiLength:d};b=b||12;c=c||0;d=d||2*Math.PI;for(var e=1/(a.length-1),f=1/b,g=0,h=b;g<=h;g++)for(var k=c+g*f*d,n=Math.cos(k),p=Math.sin(k),k=0,q=a.length;k<q;k++){var m=a[k],t=new THREE.Vector3;t.x=n*m.x-p*m.y;t.y=p*m.x+n*m.y;t.z=m.z;this.vertices.push(t)}c=a.length;g=0;for(h=b;g<h;g++)for(k=0,q=a.length-1;k<q;k++){b=p=k+c*g;d=p+c;var n=p+1+c,p=p+1,m=g*f,t=k*e,s= -m+f,r=t+e;this.faces.push(new THREE.Face3(b,d,p));this.faceVertexUvs[0].push([new THREE.Vector2(m,t),new THREE.Vector2(s,t),new THREE.Vector2(m,r)]);this.faces.push(new THREE.Face3(d,n,p));this.faceVertexUvs[0].push([new THREE.Vector2(s,t),new THREE.Vector2(s,r),new THREE.Vector2(m,r)])}this.mergeVertices();this.computeFaceNormals();this.computeVertexNormals()};THREE.LatheGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.LatheGeometry.prototype.constructor=THREE.LatheGeometry; +THREE.ShapeGeometry.prototype.addShape=function(a,b){void 0===b&&(b={});var c=b.material,d=void 0===b.UVGenerator?THREE.ExtrudeGeometry.WorldUVGenerator:b.UVGenerator,e,f,g,h=this.vertices.length;e=a.extractPoints(void 0!==b.curveSegments?b.curveSegments:12);var k=e.shape,l=e.holes;if(!THREE.Shape.Utils.isClockWise(k))for(k=k.reverse(),e=0,f=l.length;e<f;e++)g=l[e],THREE.Shape.Utils.isClockWise(g)&&(l[e]=g.reverse());var p=THREE.Shape.Utils.triangulateShape(k,l);e=0;for(f=l.length;e<f;e++)g=l[e], +k=k.concat(g);l=k.length;f=p.length;for(e=0;e<l;e++)g=k[e],this.vertices.push(new THREE.Vector3(g.x,g.y,0));for(e=0;e<f;e++)l=p[e],k=l[0]+h,g=l[1]+h,l=l[2]+h,this.faces.push(new THREE.Face3(k,g,l,null,null,c)),this.faceVertexUvs[0].push(d.generateTopUV(this,k,g,l))}; +THREE.LatheGeometry=function(a,b,c,d){THREE.Geometry.call(this);this.type="LatheGeometry";this.parameters={points:a,segments:b,phiStart:c,phiLength:d};b=b||12;c=c||0;d=d||2*Math.PI;for(var e=1/(a.length-1),f=1/b,g=0,h=b;g<=h;g++)for(var k=c+g*f*d,l=Math.cos(k),p=Math.sin(k),k=0,q=a.length;k<q;k++){var n=a[k],t=new THREE.Vector3;t.x=l*n.x-p*n.y;t.y=p*n.x+l*n.y;t.z=n.z;this.vertices.push(t)}c=a.length;g=0;for(h=b;g<h;g++)for(k=0,q=a.length-1;k<q;k++){b=p=k+c*g;d=p+c;var l=p+1+c,p=p+1,n=g*f,t=k*e,r= +n+f,s=t+e;this.faces.push(new THREE.Face3(b,d,p));this.faceVertexUvs[0].push([new THREE.Vector2(n,t),new THREE.Vector2(r,t),new THREE.Vector2(n,s)]);this.faces.push(new THREE.Face3(d,l,p));this.faceVertexUvs[0].push([new THREE.Vector2(r,t),new THREE.Vector2(r,s),new THREE.Vector2(n,s)])}this.mergeVertices();this.computeFaceNormals();this.computeVertexNormals()};THREE.LatheGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.LatheGeometry.prototype.constructor=THREE.LatheGeometry; THREE.PlaneGeometry=function(a,b,c,d){console.info("THREE.PlaneGeometry: Consider using THREE.PlaneBufferGeometry for lower memory footprint.");THREE.Geometry.call(this);this.type="PlaneGeometry";this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};this.fromBufferGeometry(new THREE.PlaneBufferGeometry(a,b,c,d))};THREE.PlaneGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.PlaneGeometry.prototype.constructor=THREE.PlaneGeometry; -THREE.PlaneBufferGeometry=function(a,b,c,d){THREE.BufferGeometry.call(this);this.type="PlaneBufferGeometry";this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};var e=a/2,f=b/2;c=c||1;d=d||1;var g=c+1,h=d+1,k=a/c,n=b/d;b=new Float32Array(g*h*3);a=new Float32Array(g*h*3);for(var p=new Float32Array(g*h*2),q=0,m=0,t=0;t<h;t++)for(var s=t*n-f,r=0;r<g;r++)b[q]=r*k-e,b[q+1]=-s,a[q+2]=1,p[m]=r/c,p[m+1]=1-t/d,q+=3,m+=2;q=0;e=new (65535<b.length/3?Uint32Array:Uint16Array)(c*d*6);for(t=0;t<d;t++)for(r= -0;r<c;r++)f=r+g*(t+1),h=r+1+g*(t+1),k=r+1+g*t,e[q]=r+g*t,e[q+1]=f,e[q+2]=k,e[q+3]=f,e[q+4]=h,e[q+5]=k,q+=6;this.addAttribute("index",new THREE.BufferAttribute(e,1));this.addAttribute("position",new THREE.BufferAttribute(b,3));this.addAttribute("normal",new THREE.BufferAttribute(a,3));this.addAttribute("uv",new THREE.BufferAttribute(p,2))};THREE.PlaneBufferGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.PlaneBufferGeometry.prototype.constructor=THREE.PlaneBufferGeometry; -THREE.RingGeometry=function(a,b,c,d,e,f){THREE.Geometry.call(this);this.type="RingGeometry";this.parameters={innerRadius:a,outerRadius:b,thetaSegments:c,phiSegments:d,thetaStart:e,thetaLength:f};a=a||0;b=b||50;e=void 0!==e?e:0;f=void 0!==f?f:2*Math.PI;c=void 0!==c?Math.max(3,c):8;d=void 0!==d?Math.max(1,d):8;var g,h=[],k=a,n=(b-a)/d;for(a=0;a<d+1;a++){for(g=0;g<c+1;g++){var p=new THREE.Vector3,q=e+g/c*f;p.x=k*Math.cos(q);p.y=k*Math.sin(q);this.vertices.push(p);h.push(new THREE.Vector2((p.x/b+1)/2, -(p.y/b+1)/2))}k+=n}b=new THREE.Vector3(0,0,1);for(a=0;a<d;a++)for(e=a*(c+1),g=0;g<c;g++)f=q=g+e,n=q+c+1,p=q+c+2,this.faces.push(new THREE.Face3(f,n,p,[b.clone(),b.clone(),b.clone()])),this.faceVertexUvs[0].push([h[f].clone(),h[n].clone(),h[p].clone()]),f=q,n=q+c+2,p=q+1,this.faces.push(new THREE.Face3(f,n,p,[b.clone(),b.clone(),b.clone()])),this.faceVertexUvs[0].push([h[f].clone(),h[n].clone(),h[p].clone()]);this.computeFaceNormals();this.boundingSphere=new THREE.Sphere(new THREE.Vector3,k)}; +THREE.PlaneBufferGeometry=function(a,b,c,d){THREE.BufferGeometry.call(this);this.type="PlaneBufferGeometry";this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};var e=a/2,f=b/2;c=c||1;d=d||1;var g=c+1,h=d+1,k=a/c,l=b/d;b=new Float32Array(g*h*3);a=new Float32Array(g*h*3);for(var p=new Float32Array(g*h*2),q=0,n=0,t=0;t<h;t++)for(var r=t*l-f,s=0;s<g;s++)b[q]=s*k-e,b[q+1]=-r,a[q+2]=1,p[n]=s/c,p[n+1]=1-t/d,q+=3,n+=2;q=0;e=new (65535<b.length/3?Uint32Array:Uint16Array)(c*d*6);for(t=0;t<d;t++)for(s= +0;s<c;s++)f=s+g*(t+1),h=s+1+g*(t+1),k=s+1+g*t,e[q]=s+g*t,e[q+1]=f,e[q+2]=k,e[q+3]=f,e[q+4]=h,e[q+5]=k,q+=6;this.addAttribute("index",new THREE.BufferAttribute(e,1));this.addAttribute("position",new THREE.BufferAttribute(b,3));this.addAttribute("normal",new THREE.BufferAttribute(a,3));this.addAttribute("uv",new THREE.BufferAttribute(p,2))};THREE.PlaneBufferGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.PlaneBufferGeometry.prototype.constructor=THREE.PlaneBufferGeometry; +THREE.RingGeometry=function(a,b,c,d,e,f){THREE.Geometry.call(this);this.type="RingGeometry";this.parameters={innerRadius:a,outerRadius:b,thetaSegments:c,phiSegments:d,thetaStart:e,thetaLength:f};a=a||0;b=b||50;e=void 0!==e?e:0;f=void 0!==f?f:2*Math.PI;c=void 0!==c?Math.max(3,c):8;d=void 0!==d?Math.max(1,d):8;var g,h=[],k=a,l=(b-a)/d;for(a=0;a<d+1;a++){for(g=0;g<c+1;g++){var p=new THREE.Vector3,q=e+g/c*f;p.x=k*Math.cos(q);p.y=k*Math.sin(q);this.vertices.push(p);h.push(new THREE.Vector2((p.x/b+1)/2, +(p.y/b+1)/2))}k+=l}b=new THREE.Vector3(0,0,1);for(a=0;a<d;a++)for(e=a*(c+1),g=0;g<c;g++)f=q=g+e,l=q+c+1,p=q+c+2,this.faces.push(new THREE.Face3(f,l,p,[b.clone(),b.clone(),b.clone()])),this.faceVertexUvs[0].push([h[f].clone(),h[l].clone(),h[p].clone()]),f=q,l=q+c+2,p=q+1,this.faces.push(new THREE.Face3(f,l,p,[b.clone(),b.clone(),b.clone()])),this.faceVertexUvs[0].push([h[f].clone(),h[l].clone(),h[p].clone()]);this.computeFaceNormals();this.boundingSphere=new THREE.Sphere(new THREE.Vector3,k)}; THREE.RingGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.RingGeometry.prototype.constructor=THREE.RingGeometry; -THREE.SphereGeometry=function(a,b,c,d,e,f,g){THREE.Geometry.call(this);this.type="SphereGeometry";this.parameters={radius:a,widthSegments:b,heightSegments:c,phiStart:d,phiLength:e,thetaStart:f,thetaLength:g};a=a||50;b=Math.max(3,Math.floor(b)||8);c=Math.max(2,Math.floor(c)||6);d=void 0!==d?d:0;e=void 0!==e?e:2*Math.PI;f=void 0!==f?f:0;g=void 0!==g?g:Math.PI;var h,k,n=[],p=[];for(k=0;k<=c;k++){var q=[],m=[];for(h=0;h<=b;h++){var t=h/b,s=k/c,r=new THREE.Vector3;r.x=-a*Math.cos(d+t*e)*Math.sin(f+s*g); -r.y=a*Math.cos(f+s*g);r.z=a*Math.sin(d+t*e)*Math.sin(f+s*g);this.vertices.push(r);q.push(this.vertices.length-1);m.push(new THREE.Vector2(t,1-s))}n.push(q);p.push(m)}for(k=0;k<c;k++)for(h=0;h<b;h++){d=n[k][h+1];e=n[k][h];f=n[k+1][h];g=n[k+1][h+1];var q=this.vertices[d].clone().normalize(),m=this.vertices[e].clone().normalize(),t=this.vertices[f].clone().normalize(),s=this.vertices[g].clone().normalize(),r=p[k][h+1].clone(),u=p[k][h].clone(),v=p[k+1][h].clone(),y=p[k+1][h+1].clone();Math.abs(this.vertices[d].y)=== -a?(r.x=(r.x+u.x)/2,this.faces.push(new THREE.Face3(d,f,g,[q,t,s])),this.faceVertexUvs[0].push([r,v,y])):Math.abs(this.vertices[f].y)===a?(v.x=(v.x+y.x)/2,this.faces.push(new THREE.Face3(d,e,f,[q,m,t])),this.faceVertexUvs[0].push([r,u,v])):(this.faces.push(new THREE.Face3(d,e,g,[q,m,s])),this.faceVertexUvs[0].push([r,u,y]),this.faces.push(new THREE.Face3(e,f,g,[m.clone(),t,s.clone()])),this.faceVertexUvs[0].push([u.clone(),v,y.clone()]))}this.computeFaceNormals();this.boundingSphere=new THREE.Sphere(new THREE.Vector3, +THREE.SphereGeometry=function(a,b,c,d,e,f,g){THREE.Geometry.call(this);this.type="SphereGeometry";this.parameters={radius:a,widthSegments:b,heightSegments:c,phiStart:d,phiLength:e,thetaStart:f,thetaLength:g};a=a||50;b=Math.max(3,Math.floor(b)||8);c=Math.max(2,Math.floor(c)||6);d=void 0!==d?d:0;e=void 0!==e?e:2*Math.PI;f=void 0!==f?f:0;g=void 0!==g?g:Math.PI;var h,k,l=[],p=[];for(k=0;k<=c;k++){var q=[],n=[];for(h=0;h<=b;h++){var t=h/b,r=k/c,s=new THREE.Vector3;s.x=-a*Math.cos(d+t*e)*Math.sin(f+r*g); +s.y=a*Math.cos(f+r*g);s.z=a*Math.sin(d+t*e)*Math.sin(f+r*g);this.vertices.push(s);q.push(this.vertices.length-1);n.push(new THREE.Vector2(t,1-r))}l.push(q);p.push(n)}for(k=0;k<c;k++)for(h=0;h<b;h++){d=l[k][h+1];e=l[k][h];f=l[k+1][h];g=l[k+1][h+1];var q=this.vertices[d].clone().normalize(),n=this.vertices[e].clone().normalize(),t=this.vertices[f].clone().normalize(),r=this.vertices[g].clone().normalize(),s=p[k][h+1].clone(),u=p[k][h].clone(),v=p[k+1][h].clone(),x=p[k+1][h+1].clone();Math.abs(this.vertices[d].y)=== +a?(s.x=(s.x+u.x)/2,this.faces.push(new THREE.Face3(d,f,g,[q,t,r])),this.faceVertexUvs[0].push([s,v,x])):Math.abs(this.vertices[f].y)===a?(v.x=(v.x+x.x)/2,this.faces.push(new THREE.Face3(d,e,f,[q,n,t])),this.faceVertexUvs[0].push([s,u,v])):(this.faces.push(new THREE.Face3(d,e,g,[q,n,r])),this.faceVertexUvs[0].push([s,u,x]),this.faces.push(new THREE.Face3(e,f,g,[n.clone(),t,r.clone()])),this.faceVertexUvs[0].push([u.clone(),v,x.clone()]))}this.computeFaceNormals();this.boundingSphere=new THREE.Sphere(new THREE.Vector3, a)};THREE.SphereGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.SphereGeometry.prototype.constructor=THREE.SphereGeometry;THREE.TextGeometry=function(a,b){b=b||{};var c=THREE.FontUtils.generateShapes(a,b);b.amount=void 0!==b.height?b.height:50;void 0===b.bevelThickness&&(b.bevelThickness=10);void 0===b.bevelSize&&(b.bevelSize=8);void 0===b.bevelEnabled&&(b.bevelEnabled=!1);THREE.ExtrudeGeometry.call(this,c,b);this.type="TextGeometry"};THREE.TextGeometry.prototype=Object.create(THREE.ExtrudeGeometry.prototype); THREE.TextGeometry.prototype.constructor=THREE.TextGeometry; -THREE.TorusGeometry=function(a,b,c,d,e){THREE.Geometry.call(this);this.type="TorusGeometry";this.parameters={radius:a,tube:b,radialSegments:c,tubularSegments:d,arc:e};a=a||100;b=b||40;c=c||8;d=d||6;e=e||2*Math.PI;for(var f=new THREE.Vector3,g=[],h=[],k=0;k<=c;k++)for(var n=0;n<=d;n++){var p=n/d*e,q=k/c*Math.PI*2;f.x=a*Math.cos(p);f.y=a*Math.sin(p);var m=new THREE.Vector3;m.x=(a+b*Math.cos(q))*Math.cos(p);m.y=(a+b*Math.cos(q))*Math.sin(p);m.z=b*Math.sin(q);this.vertices.push(m);g.push(new THREE.Vector2(n/ -d,k/c));h.push(m.clone().sub(f).normalize())}for(k=1;k<=c;k++)for(n=1;n<=d;n++)a=(d+1)*k+n-1,b=(d+1)*(k-1)+n-1,e=(d+1)*(k-1)+n,f=(d+1)*k+n,p=new THREE.Face3(a,b,f,[h[a].clone(),h[b].clone(),h[f].clone()]),this.faces.push(p),this.faceVertexUvs[0].push([g[a].clone(),g[b].clone(),g[f].clone()]),p=new THREE.Face3(b,e,f,[h[b].clone(),h[e].clone(),h[f].clone()]),this.faces.push(p),this.faceVertexUvs[0].push([g[b].clone(),g[e].clone(),g[f].clone()]);this.computeFaceNormals()}; +THREE.TorusGeometry=function(a,b,c,d,e){THREE.Geometry.call(this);this.type="TorusGeometry";this.parameters={radius:a,tube:b,radialSegments:c,tubularSegments:d,arc:e};a=a||100;b=b||40;c=c||8;d=d||6;e=e||2*Math.PI;for(var f=new THREE.Vector3,g=[],h=[],k=0;k<=c;k++)for(var l=0;l<=d;l++){var p=l/d*e,q=k/c*Math.PI*2;f.x=a*Math.cos(p);f.y=a*Math.sin(p);var n=new THREE.Vector3;n.x=(a+b*Math.cos(q))*Math.cos(p);n.y=(a+b*Math.cos(q))*Math.sin(p);n.z=b*Math.sin(q);this.vertices.push(n);g.push(new THREE.Vector2(l/ +d,k/c));h.push(n.clone().sub(f).normalize())}for(k=1;k<=c;k++)for(l=1;l<=d;l++)a=(d+1)*k+l-1,b=(d+1)*(k-1)+l-1,e=(d+1)*(k-1)+l,f=(d+1)*k+l,p=new THREE.Face3(a,b,f,[h[a].clone(),h[b].clone(),h[f].clone()]),this.faces.push(p),this.faceVertexUvs[0].push([g[a].clone(),g[b].clone(),g[f].clone()]),p=new THREE.Face3(b,e,f,[h[b].clone(),h[e].clone(),h[f].clone()]),this.faces.push(p),this.faceVertexUvs[0].push([g[b].clone(),g[e].clone(),g[f].clone()]);this.computeFaceNormals()}; THREE.TorusGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.TorusGeometry.prototype.constructor=THREE.TorusGeometry; -THREE.TorusKnotGeometry=function(a,b,c,d,e,f,g){function h(a,b,c,d,e){var f=Math.cos(a),g=Math.sin(a);a*=b/c;b=Math.cos(a);f*=d*(2+b)*.5;g=d*(2+b)*g*.5;d=e*d*Math.sin(a)*.5;return new THREE.Vector3(f,g,d)}THREE.Geometry.call(this);this.type="TorusKnotGeometry";this.parameters={radius:a,tube:b,radialSegments:c,tubularSegments:d,p:e,q:f,heightScale:g};a=a||100;b=b||40;c=c||64;d=d||8;e=e||2;f=f||3;g=g||1;for(var k=Array(c),n=new THREE.Vector3,p=new THREE.Vector3,q=new THREE.Vector3,m=0;m<c;++m){k[m]= -Array(d);var t=m/c*2*e*Math.PI,s=h(t,f,e,a,g),t=h(t+.01,f,e,a,g);n.subVectors(t,s);p.addVectors(t,s);q.crossVectors(n,p);p.crossVectors(q,n);q.normalize();p.normalize();for(t=0;t<d;++t){var r=t/d*2*Math.PI,u=-b*Math.cos(r),r=b*Math.sin(r),v=new THREE.Vector3;v.x=s.x+u*p.x+r*q.x;v.y=s.y+u*p.y+r*q.y;v.z=s.z+u*p.z+r*q.z;k[m][t]=this.vertices.push(v)-1}}for(m=0;m<c;++m)for(t=0;t<d;++t)e=(m+1)%c,f=(t+1)%d,a=k[m][t],b=k[e][t],e=k[e][f],f=k[m][f],g=new THREE.Vector2(m/c,t/d),n=new THREE.Vector2((m+1)/c, -t/d),p=new THREE.Vector2((m+1)/c,(t+1)/d),q=new THREE.Vector2(m/c,(t+1)/d),this.faces.push(new THREE.Face3(a,b,f)),this.faceVertexUvs[0].push([g,n,q]),this.faces.push(new THREE.Face3(b,e,f)),this.faceVertexUvs[0].push([n.clone(),p,q.clone()]);this.computeFaceNormals();this.computeVertexNormals()};THREE.TorusKnotGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.TorusKnotGeometry.prototype.constructor=THREE.TorusKnotGeometry; -THREE.TubeGeometry=function(a,b,c,d,e,f){THREE.Geometry.call(this);this.type="TubeGeometry";this.parameters={path:a,segments:b,radius:c,radialSegments:d,closed:e};b=b||64;c=c||1;d=d||8;e=e||!1;f=f||THREE.TubeGeometry.NoTaper;var g=[],h,k,n=b+1,p,q,m,t,s,r=new THREE.Vector3,u,v,y;u=new THREE.TubeGeometry.FrenetFrames(a,b,e);v=u.normals;y=u.binormals;this.tangents=u.tangents;this.normals=v;this.binormals=y;for(u=0;u<n;u++)for(g[u]=[],p=u/(n-1),s=a.getPointAt(p),h=v[u],k=y[u],m=c*f(p),p=0;p<d;p++)q= -p/d*2*Math.PI,t=-m*Math.cos(q),q=m*Math.sin(q),r.copy(s),r.x+=t*h.x+q*k.x,r.y+=t*h.y+q*k.y,r.z+=t*h.z+q*k.z,g[u][p]=this.vertices.push(new THREE.Vector3(r.x,r.y,r.z))-1;for(u=0;u<b;u++)for(p=0;p<d;p++)f=e?(u+1)%b:u+1,n=(p+1)%d,a=g[u][p],c=g[f][p],f=g[f][n],n=g[u][n],r=new THREE.Vector2(u/b,p/d),v=new THREE.Vector2((u+1)/b,p/d),y=new THREE.Vector2((u+1)/b,(p+1)/d),h=new THREE.Vector2(u/b,(p+1)/d),this.faces.push(new THREE.Face3(a,c,n)),this.faceVertexUvs[0].push([r,v,h]),this.faces.push(new THREE.Face3(c, -f,n)),this.faceVertexUvs[0].push([v.clone(),y,h.clone()]);this.computeFaceNormals();this.computeVertexNormals()};THREE.TubeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.TubeGeometry.prototype.constructor=THREE.TubeGeometry;THREE.TubeGeometry.NoTaper=function(a){return 1};THREE.TubeGeometry.SinusoidalTaper=function(a){return Math.sin(Math.PI*a)}; -THREE.TubeGeometry.FrenetFrames=function(a,b,c){new THREE.Vector3;var d=new THREE.Vector3;new THREE.Vector3;var e=[],f=[],g=[],h=new THREE.Vector3,k=new THREE.Matrix4;b+=1;var n,p,q;this.tangents=e;this.normals=f;this.binormals=g;for(n=0;n<b;n++)p=n/(b-1),e[n]=a.getTangentAt(p),e[n].normalize();f[0]=new THREE.Vector3;g[0]=new THREE.Vector3;a=Number.MAX_VALUE;n=Math.abs(e[0].x);p=Math.abs(e[0].y);q=Math.abs(e[0].z);n<=a&&(a=n,d.set(1,0,0));p<=a&&(a=p,d.set(0,1,0));q<=a&&d.set(0,0,1);h.crossVectors(e[0], -d).normalize();f[0].crossVectors(e[0],h);g[0].crossVectors(e[0],f[0]);for(n=1;n<b;n++)f[n]=f[n-1].clone(),g[n]=g[n-1].clone(),h.crossVectors(e[n-1],e[n]),1E-4<h.length()&&(h.normalize(),d=Math.acos(THREE.Math.clamp(e[n-1].dot(e[n]),-1,1)),f[n].applyMatrix4(k.makeRotationAxis(h,d))),g[n].crossVectors(e[n],f[n]);if(c)for(d=Math.acos(THREE.Math.clamp(f[0].dot(f[b-1]),-1,1)),d/=b-1,0<e[0].dot(h.crossVectors(f[0],f[b-1]))&&(d=-d),n=1;n<b;n++)f[n].applyMatrix4(k.makeRotationAxis(e[n],d*n)),g[n].crossVectors(e[n], -f[n])}; -THREE.PolyhedronGeometry=function(a,b,c,d){function e(a){var b=a.normalize().clone();b.index=k.vertices.push(b)-1;var c=Math.atan2(a.z,-a.x)/2/Math.PI+.5;a=Math.atan2(-a.y,Math.sqrt(a.x*a.x+a.z*a.z))/Math.PI+.5;b.uv=new THREE.Vector2(c,1-a);return b}function f(a,b,c){var d=new THREE.Face3(a.index,b.index,c.index,[a.clone(),b.clone(),c.clone()]);k.faces.push(d);u.copy(a).add(b).add(c).divideScalar(3);d=Math.atan2(u.z,-u.x);k.faceVertexUvs[0].push([h(a.uv,a,d),h(b.uv,b,d),h(c.uv,c,d)])}function g(a,b){var c= -Math.pow(2,b);Math.pow(4,b);for(var d=e(k.vertices[a.a]),g=e(k.vertices[a.b]),h=e(k.vertices[a.c]),m=[],n=0;n<=c;n++){m[n]=[];for(var p=e(d.clone().lerp(h,n/c)),q=e(g.clone().lerp(h,n/c)),s=c-n,r=0;r<=s;r++)m[n][r]=0==r&&n==c?p:e(p.clone().lerp(q,r/s))}for(n=0;n<c;n++)for(r=0;r<2*(c-n)-1;r++)d=Math.floor(r/2),0==r%2?f(m[n][d+1],m[n+1][d],m[n][d]):f(m[n][d+1],m[n+1][d+1],m[n+1][d])}function h(a,b,c){0>c&&1===a.x&&(a=new THREE.Vector2(a.x-1,a.y));0===b.x&&0===b.z&&(a=new THREE.Vector2(c/2/Math.PI+.5, -a.y));return a.clone()}THREE.Geometry.call(this);this.type="PolyhedronGeometry";this.parameters={vertices:a,indices:b,radius:c,detail:d};c=c||1;d=d||0;for(var k=this,n=0,p=a.length;n<p;n+=3)e(new THREE.Vector3(a[n],a[n+1],a[n+2]));a=this.vertices;for(var q=[],m=n=0,p=b.length;n<p;n+=3,m++){var t=a[b[n]],s=a[b[n+1]],r=a[b[n+2]];q[m]=new THREE.Face3(t.index,s.index,r.index,[t.clone(),s.clone(),r.clone()])}for(var u=new THREE.Vector3,n=0,p=q.length;n<p;n++)g(q[n],d);n=0;for(p=this.faceVertexUvs[0].length;n< -p;n++)b=this.faceVertexUvs[0][n],d=b[0].x,a=b[1].x,q=b[2].x,m=Math.max(d,Math.max(a,q)),t=Math.min(d,Math.min(a,q)),.9<m&&.1>t&&(.2>d&&(b[0].x+=1),.2>a&&(b[1].x+=1),.2>q&&(b[2].x+=1));n=0;for(p=this.vertices.length;n<p;n++)this.vertices[n].multiplyScalar(c);this.mergeVertices();this.computeFaceNormals();this.boundingSphere=new THREE.Sphere(new THREE.Vector3,c)};THREE.PolyhedronGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.PolyhedronGeometry.prototype.constructor=THREE.PolyhedronGeometry; +THREE.TorusKnotGeometry=function(a,b,c,d,e,f,g){function h(a,b,c,d,e){var f=Math.cos(a),g=Math.sin(a);a*=b/c;b=Math.cos(a);f*=d*(2+b)*.5;g=d*(2+b)*g*.5;d=e*d*Math.sin(a)*.5;return new THREE.Vector3(f,g,d)}THREE.Geometry.call(this);this.type="TorusKnotGeometry";this.parameters={radius:a,tube:b,radialSegments:c,tubularSegments:d,p:e,q:f,heightScale:g};a=a||100;b=b||40;c=c||64;d=d||8;e=e||2;f=f||3;g=g||1;for(var k=Array(c),l=new THREE.Vector3,p=new THREE.Vector3,q=new THREE.Vector3,n=0;n<c;++n){k[n]= +Array(d);var t=n/c*2*e*Math.PI,r=h(t,f,e,a,g),t=h(t+.01,f,e,a,g);l.subVectors(t,r);p.addVectors(t,r);q.crossVectors(l,p);p.crossVectors(q,l);q.normalize();p.normalize();for(t=0;t<d;++t){var s=t/d*2*Math.PI,u=-b*Math.cos(s),s=b*Math.sin(s),v=new THREE.Vector3;v.x=r.x+u*p.x+s*q.x;v.y=r.y+u*p.y+s*q.y;v.z=r.z+u*p.z+s*q.z;k[n][t]=this.vertices.push(v)-1}}for(n=0;n<c;++n)for(t=0;t<d;++t)e=(n+1)%c,f=(t+1)%d,a=k[n][t],b=k[e][t],e=k[e][f],f=k[n][f],g=new THREE.Vector2(n/c,t/d),l=new THREE.Vector2((n+1)/c, +t/d),p=new THREE.Vector2((n+1)/c,(t+1)/d),q=new THREE.Vector2(n/c,(t+1)/d),this.faces.push(new THREE.Face3(a,b,f)),this.faceVertexUvs[0].push([g,l,q]),this.faces.push(new THREE.Face3(b,e,f)),this.faceVertexUvs[0].push([l.clone(),p,q.clone()]);this.computeFaceNormals();this.computeVertexNormals()};THREE.TorusKnotGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.TorusKnotGeometry.prototype.constructor=THREE.TorusKnotGeometry; +THREE.TubeGeometry=function(a,b,c,d,e,f){THREE.Geometry.call(this);this.type="TubeGeometry";this.parameters={path:a,segments:b,radius:c,radialSegments:d,closed:e};b=b||64;c=c||1;d=d||8;e=e||!1;f=f||THREE.TubeGeometry.NoTaper;var g=[],h,k,l=b+1,p,q,n,t,r,s=new THREE.Vector3,u,v,x;u=new THREE.TubeGeometry.FrenetFrames(a,b,e);v=u.normals;x=u.binormals;this.tangents=u.tangents;this.normals=v;this.binormals=x;for(u=0;u<l;u++)for(g[u]=[],p=u/(l-1),r=a.getPointAt(p),h=v[u],k=x[u],n=c*f(p),p=0;p<d;p++)q= +p/d*2*Math.PI,t=-n*Math.cos(q),q=n*Math.sin(q),s.copy(r),s.x+=t*h.x+q*k.x,s.y+=t*h.y+q*k.y,s.z+=t*h.z+q*k.z,g[u][p]=this.vertices.push(new THREE.Vector3(s.x,s.y,s.z))-1;for(u=0;u<b;u++)for(p=0;p<d;p++)f=e?(u+1)%b:u+1,l=(p+1)%d,a=g[u][p],c=g[f][p],f=g[f][l],l=g[u][l],s=new THREE.Vector2(u/b,p/d),v=new THREE.Vector2((u+1)/b,p/d),x=new THREE.Vector2((u+1)/b,(p+1)/d),h=new THREE.Vector2(u/b,(p+1)/d),this.faces.push(new THREE.Face3(a,c,l)),this.faceVertexUvs[0].push([s,v,h]),this.faces.push(new THREE.Face3(c, +f,l)),this.faceVertexUvs[0].push([v.clone(),x,h.clone()]);this.computeFaceNormals();this.computeVertexNormals()};THREE.TubeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.TubeGeometry.prototype.constructor=THREE.TubeGeometry;THREE.TubeGeometry.NoTaper=function(a){return 1};THREE.TubeGeometry.SinusoidalTaper=function(a){return Math.sin(Math.PI*a)}; +THREE.TubeGeometry.FrenetFrames=function(a,b,c){var d=new THREE.Vector3,e=[],f=[],g=[],h=new THREE.Vector3,k=new THREE.Matrix4;b+=1;var l,p,q;this.tangents=e;this.normals=f;this.binormals=g;for(l=0;l<b;l++)p=l/(b-1),e[l]=a.getTangentAt(p),e[l].normalize();f[0]=new THREE.Vector3;g[0]=new THREE.Vector3;a=Number.MAX_VALUE;l=Math.abs(e[0].x);p=Math.abs(e[0].y);q=Math.abs(e[0].z);l<=a&&(a=l,d.set(1,0,0));p<=a&&(a=p,d.set(0,1,0));q<=a&&d.set(0,0,1);h.crossVectors(e[0],d).normalize();f[0].crossVectors(e[0], +h);g[0].crossVectors(e[0],f[0]);for(l=1;l<b;l++)f[l]=f[l-1].clone(),g[l]=g[l-1].clone(),h.crossVectors(e[l-1],e[l]),1E-4<h.length()&&(h.normalize(),d=Math.acos(THREE.Math.clamp(e[l-1].dot(e[l]),-1,1)),f[l].applyMatrix4(k.makeRotationAxis(h,d))),g[l].crossVectors(e[l],f[l]);if(c)for(d=Math.acos(THREE.Math.clamp(f[0].dot(f[b-1]),-1,1)),d/=b-1,0<e[0].dot(h.crossVectors(f[0],f[b-1]))&&(d=-d),l=1;l<b;l++)f[l].applyMatrix4(k.makeRotationAxis(e[l],d*l)),g[l].crossVectors(e[l],f[l])}; +THREE.PolyhedronGeometry=function(a,b,c,d){function e(a){var b=a.normalize().clone();b.index=k.vertices.push(b)-1;var c=Math.atan2(a.z,-a.x)/2/Math.PI+.5;a=Math.atan2(-a.y,Math.sqrt(a.x*a.x+a.z*a.z))/Math.PI+.5;b.uv=new THREE.Vector2(c,1-a);return b}function f(a,b,c){var d=new THREE.Face3(a.index,b.index,c.index,[a.clone(),b.clone(),c.clone()]);k.faces.push(d);u.copy(a).add(b).add(c).divideScalar(3);d=Math.atan2(u.z,-u.x);k.faceVertexUvs[0].push([h(a.uv,a,d),h(b.uv,b,d),h(c.uv,c,d)])}function g(a, +b){for(var c=Math.pow(2,b),d=e(k.vertices[a.a]),g=e(k.vertices[a.b]),h=e(k.vertices[a.c]),l=[],n=0;n<=c;n++){l[n]=[];for(var p=e(d.clone().lerp(h,n/c)),q=e(g.clone().lerp(h,n/c)),s=c-n,r=0;r<=s;r++)l[n][r]=0==r&&n==c?p:e(p.clone().lerp(q,r/s))}for(n=0;n<c;n++)for(r=0;r<2*(c-n)-1;r++)d=Math.floor(r/2),0==r%2?f(l[n][d+1],l[n+1][d],l[n][d]):f(l[n][d+1],l[n+1][d+1],l[n+1][d])}function h(a,b,c){0>c&&1===a.x&&(a=new THREE.Vector2(a.x-1,a.y));0===b.x&&0===b.z&&(a=new THREE.Vector2(c/2/Math.PI+.5,a.y));return a.clone()} +THREE.Geometry.call(this);this.type="PolyhedronGeometry";this.parameters={vertices:a,indices:b,radius:c,detail:d};c=c||1;d=d||0;for(var k=this,l=0,p=a.length;l<p;l+=3)e(new THREE.Vector3(a[l],a[l+1],a[l+2]));a=this.vertices;for(var q=[],n=l=0,p=b.length;l<p;l+=3,n++){var t=a[b[l]],r=a[b[l+1]],s=a[b[l+2]];q[n]=new THREE.Face3(t.index,r.index,s.index,[t.clone(),r.clone(),s.clone()])}for(var u=new THREE.Vector3,l=0,p=q.length;l<p;l++)g(q[l],d);l=0;for(p=this.faceVertexUvs[0].length;l<p;l++)b=this.faceVertexUvs[0][l], +d=b[0].x,a=b[1].x,q=b[2].x,n=Math.max(d,Math.max(a,q)),t=Math.min(d,Math.min(a,q)),.9<n&&.1>t&&(.2>d&&(b[0].x+=1),.2>a&&(b[1].x+=1),.2>q&&(b[2].x+=1));l=0;for(p=this.vertices.length;l<p;l++)this.vertices[l].multiplyScalar(c);this.mergeVertices();this.computeFaceNormals();this.boundingSphere=new THREE.Sphere(new THREE.Vector3,c)};THREE.PolyhedronGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.PolyhedronGeometry.prototype.constructor=THREE.PolyhedronGeometry; THREE.DodecahedronGeometry=function(a,b){this.parameters={radius:a,detail:b};var c=(1+Math.sqrt(5))/2,d=1/c;THREE.PolyhedronGeometry.call(this,[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-d,-c,0,-d,c,0,d,-c,0,d,c,-d,-c,0,-d,c,0,d,-c,0,d,c,0,-c,0,-d,c,0,-d,-c,0,d,c,0,d],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19, 11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],a,b)};THREE.DodecahedronGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.DodecahedronGeometry.prototype.constructor=THREE.DodecahedronGeometry; THREE.IcosahedronGeometry=function(a,b){var c=(1+Math.sqrt(5))/2;THREE.PolyhedronGeometry.call(this,[-1,c,0,1,c,0,-1,-c,0,1,-c,0,0,-1,c,0,1,c,0,-1,-c,0,1,-c,c,0,-1,c,0,1,-c,0,-1,-c,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a,b);this.type="IcosahedronGeometry";this.parameters={radius:a,detail:b}};THREE.IcosahedronGeometry.prototype=Object.create(THREE.Geometry.prototype); THREE.IcosahedronGeometry.prototype.constructor=THREE.IcosahedronGeometry;THREE.OctahedronGeometry=function(a,b){this.parameters={radius:a,detail:b};THREE.PolyhedronGeometry.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],a,b);this.type="OctahedronGeometry";this.parameters={radius:a,detail:b}};THREE.OctahedronGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.OctahedronGeometry.prototype.constructor=THREE.OctahedronGeometry; THREE.TetrahedronGeometry=function(a,b){THREE.PolyhedronGeometry.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],a,b);this.type="TetrahedronGeometry";this.parameters={radius:a,detail:b}};THREE.TetrahedronGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.TetrahedronGeometry.prototype.constructor=THREE.TetrahedronGeometry; -THREE.ParametricGeometry=function(a,b,c){THREE.Geometry.call(this);this.type="ParametricGeometry";this.parameters={func:a,slices:b,stacks:c};var d=this.vertices,e=this.faces,f=this.faceVertexUvs[0],g,h,k,n,p=b+1;for(g=0;g<=c;g++)for(n=g/c,h=0;h<=b;h++)k=h/b,k=a(k,n),d.push(k);var q,m,t,s;for(g=0;g<c;g++)for(h=0;h<b;h++)a=g*p+h,d=g*p+h+1,n=(g+1)*p+h+1,k=(g+1)*p+h,q=new THREE.Vector2(h/b,g/c),m=new THREE.Vector2((h+1)/b,g/c),t=new THREE.Vector2((h+1)/b,(g+1)/c),s=new THREE.Vector2(h/b,(g+1)/c),e.push(new THREE.Face3(a, -d,k)),f.push([q,m,s]),e.push(new THREE.Face3(d,n,k)),f.push([m.clone(),t,s.clone()]);this.computeFaceNormals();this.computeVertexNormals()};THREE.ParametricGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ParametricGeometry.prototype.constructor=THREE.ParametricGeometry; +THREE.ParametricGeometry=function(a,b,c){THREE.Geometry.call(this);this.type="ParametricGeometry";this.parameters={func:a,slices:b,stacks:c};var d=this.vertices,e=this.faces,f=this.faceVertexUvs[0],g,h,k,l,p=b+1;for(g=0;g<=c;g++)for(l=g/c,h=0;h<=b;h++)k=h/b,k=a(k,l),d.push(k);var q,n,t,r;for(g=0;g<c;g++)for(h=0;h<b;h++)a=g*p+h,d=g*p+h+1,l=(g+1)*p+h+1,k=(g+1)*p+h,q=new THREE.Vector2(h/b,g/c),n=new THREE.Vector2((h+1)/b,g/c),t=new THREE.Vector2((h+1)/b,(g+1)/c),r=new THREE.Vector2(h/b,(g+1)/c),e.push(new THREE.Face3(a, +d,k)),f.push([q,n,r]),e.push(new THREE.Face3(d,l,k)),f.push([n.clone(),t,r.clone()]);this.computeFaceNormals();this.computeVertexNormals()};THREE.ParametricGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ParametricGeometry.prototype.constructor=THREE.ParametricGeometry; THREE.AxisHelper=function(a){a=a||1;var b=new Float32Array([0,0,0,a,0,0,0,0,0,0,a,0,0,0,0,0,0,a]),c=new Float32Array([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1]);a=new THREE.BufferGeometry;a.addAttribute("position",new THREE.BufferAttribute(b,3));a.addAttribute("color",new THREE.BufferAttribute(c,3));b=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors});THREE.Line.call(this,a,b,THREE.LinePieces)};THREE.AxisHelper.prototype=Object.create(THREE.Line.prototype); THREE.AxisHelper.prototype.constructor=THREE.AxisHelper; THREE.ArrowHelper=function(){var a=new THREE.Geometry;a.vertices.push(new THREE.Vector3(0,0,0),new THREE.Vector3(0,1,0));var b=new THREE.CylinderGeometry(0,.5,1,5,1);b.applyMatrix((new THREE.Matrix4).makeTranslation(0,-.5,0));return function(c,d,e,f,g,h){THREE.Object3D.call(this);void 0===f&&(f=16776960);void 0===e&&(e=1);void 0===g&&(g=.2*e);void 0===h&&(h=.2*g);this.position.copy(d);this.line=new THREE.Line(a,new THREE.LineBasicMaterial({color:f}));this.line.matrixAutoUpdate=!1;this.add(this.line); @@ -781,14 +794,15 @@ THREE.DirectionalLightHelper=function(a,b){THREE.Object3D.call(this);this.light= c=new THREE.Geometry;c.vertices.push(new THREE.Vector3,new THREE.Vector3);d=new THREE.LineBasicMaterial({fog:!1});d.color.copy(this.light.color).multiplyScalar(this.light.intensity);this.targetLine=new THREE.Line(c,d);this.add(this.targetLine);this.update()};THREE.DirectionalLightHelper.prototype=Object.create(THREE.Object3D.prototype);THREE.DirectionalLightHelper.prototype.constructor=THREE.DirectionalLightHelper; THREE.DirectionalLightHelper.prototype.dispose=function(){this.lightPlane.geometry.dispose();this.lightPlane.material.dispose();this.targetLine.geometry.dispose();this.targetLine.material.dispose()}; THREE.DirectionalLightHelper.prototype.update=function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3;return function(){a.setFromMatrixPosition(this.light.matrixWorld);b.setFromMatrixPosition(this.light.target.matrixWorld);c.subVectors(b,a);this.lightPlane.lookAt(c);this.lightPlane.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);this.targetLine.geometry.vertices[1].copy(c);this.targetLine.geometry.verticesNeedUpdate=!0;this.targetLine.material.color.copy(this.lightPlane.material.color)}}(); -THREE.EdgesHelper=function(a,b){var c=void 0!==b?b:16777215,d=[0,0],e={},f=function(a,b){return a-b},g=["a","b","c"],h=new THREE.BufferGeometry,k=a.geometry.clone();k.mergeVertices();k.computeFaceNormals();for(var n=k.vertices,k=k.faces,p=0,q=0,m=k.length;q<m;q++)for(var t=k[q],s=0;3>s;s++){d[0]=t[g[s]];d[1]=t[g[(s+1)%3]];d.sort(f);var r=d.toString();void 0===e[r]?(e[r]={vert1:d[0],vert2:d[1],face1:q,face2:void 0},p++):e[r].face2=q}d=new Float32Array(6*p);f=0;for(r in e)if(g=e[r],void 0===g.face2|| -.9999>k[g.face1].normal.dot(k[g.face2].normal))p=n[g.vert1],d[f++]=p.x,d[f++]=p.y,d[f++]=p.z,p=n[g.vert2],d[f++]=p.x,d[f++]=p.y,d[f++]=p.z;h.addAttribute("position",new THREE.BufferAttribute(d,3));THREE.Line.call(this,h,new THREE.LineBasicMaterial({color:c}),THREE.LinePieces);this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1};THREE.EdgesHelper.prototype=Object.create(THREE.Line.prototype);THREE.EdgesHelper.prototype.constructor=THREE.EdgesHelper; +THREE.EdgesHelper=function(a,b,c){b=void 0!==b?b:16777215;c=Math.cos(THREE.Math.degToRad(void 0!==c?c:1));var d=[0,0],e={},f=function(a,b){return a-b},g=["a","b","c"],h=new THREE.BufferGeometry,k;a.geometry instanceof THREE.BufferGeometry?(k=new THREE.Geometry,k.fromBufferGeometry(a.geometry)):k=a.geometry.clone();k.mergeVertices();k.computeFaceNormals();var l=k.vertices;k=k.faces;for(var p=0,q=0,n=k.length;q<n;q++)for(var t=k[q],r=0;3>r;r++){d[0]=t[g[r]];d[1]=t[g[(r+1)%3]];d.sort(f);var s=d.toString(); +void 0===e[s]?(e[s]={vert1:d[0],vert2:d[1],face1:q,face2:void 0},p++):e[s].face2=q}d=new Float32Array(6*p);f=0;for(s in e)if(g=e[s],void 0===g.face2||k[g.face1].normal.dot(k[g.face2].normal)<=c)p=l[g.vert1],d[f++]=p.x,d[f++]=p.y,d[f++]=p.z,p=l[g.vert2],d[f++]=p.x,d[f++]=p.y,d[f++]=p.z;h.addAttribute("position",new THREE.BufferAttribute(d,3));THREE.Line.call(this,h,new THREE.LineBasicMaterial({color:b}),THREE.LinePieces);this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1}; +THREE.EdgesHelper.prototype=Object.create(THREE.Line.prototype);THREE.EdgesHelper.prototype.constructor=THREE.EdgesHelper; THREE.FaceNormalsHelper=function(a,b,c,d){this.object=a;this.size=void 0!==b?b:1;a=void 0!==c?c:16776960;d=void 0!==d?d:1;b=new THREE.Geometry;c=0;for(var e=this.object.geometry.faces.length;c<e;c++)b.vertices.push(new THREE.Vector3,new THREE.Vector3);THREE.Line.call(this,b,new THREE.LineBasicMaterial({color:a,linewidth:d}),THREE.LinePieces);this.matrixAutoUpdate=!1;this.normalMatrix=new THREE.Matrix3;this.update()};THREE.FaceNormalsHelper.prototype=Object.create(THREE.Line.prototype); THREE.FaceNormalsHelper.prototype.constructor=THREE.FaceNormalsHelper; THREE.FaceNormalsHelper.prototype.update=function(){var a=this.geometry.vertices,b=this.object,c=b.geometry.vertices,d=b.geometry.faces,e=b.matrixWorld;b.updateMatrixWorld(!0);this.normalMatrix.getNormalMatrix(e);for(var f=b=0,g=d.length;b<g;b++,f+=2){var h=d[b];a[f].copy(c[h.a]).add(c[h.b]).add(c[h.c]).divideScalar(3).applyMatrix4(e);a[f+1].copy(h.normal).applyMatrix3(this.normalMatrix).normalize().multiplyScalar(this.size).add(a[f])}this.geometry.verticesNeedUpdate=!0;return this}; THREE.GridHelper=function(a,b){var c=new THREE.Geometry,d=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors});this.color1=new THREE.Color(4473924);this.color2=new THREE.Color(8947848);for(var e=-a;e<=a;e+=b){c.vertices.push(new THREE.Vector3(-a,0,e),new THREE.Vector3(a,0,e),new THREE.Vector3(e,0,-a),new THREE.Vector3(e,0,a));var f=0===e?this.color1:this.color2;c.colors.push(f,f,f,f)}THREE.Line.call(this,c,d,THREE.LinePieces)};THREE.GridHelper.prototype=Object.create(THREE.Line.prototype); THREE.GridHelper.prototype.constructor=THREE.GridHelper;THREE.GridHelper.prototype.setColors=function(a,b){this.color1.set(a);this.color2.set(b);this.geometry.colorsNeedUpdate=!0}; -THREE.HemisphereLightHelper=function(a,b,c,d){THREE.Object3D.call(this);this.light=a;this.light.updateMatrixWorld();this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.colors=[new THREE.Color,new THREE.Color];a=new THREE.SphereGeometry(b,4,2);a.applyMatrix((new THREE.Matrix4).makeRotationX(-Math.PI/2));for(b=0;8>b;b++)a.faces[b].color=this.colors[4>b?0:1];b=new THREE.MeshBasicMaterial({vertexColors:THREE.FaceColors,wireframe:!0});this.lightSphere=new THREE.Mesh(a,b);this.add(this.lightSphere); +THREE.HemisphereLightHelper=function(a,b){THREE.Object3D.call(this);this.light=a;this.light.updateMatrixWorld();this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.colors=[new THREE.Color,new THREE.Color];var c=new THREE.SphereGeometry(b,4,2);c.applyMatrix((new THREE.Matrix4).makeRotationX(-Math.PI/2));for(var d=0;8>d;d++)c.faces[d].color=this.colors[4>d?0:1];d=new THREE.MeshBasicMaterial({vertexColors:THREE.FaceColors,wireframe:!0});this.lightSphere=new THREE.Mesh(c,d);this.add(this.lightSphere); this.update()};THREE.HemisphereLightHelper.prototype=Object.create(THREE.Object3D.prototype);THREE.HemisphereLightHelper.prototype.constructor=THREE.HemisphereLightHelper;THREE.HemisphereLightHelper.prototype.dispose=function(){this.lightSphere.geometry.dispose();this.lightSphere.material.dispose()}; THREE.HemisphereLightHelper.prototype.update=function(){var a=new THREE.Vector3;return function(){this.colors[0].copy(this.light.color).multiplyScalar(this.light.intensity);this.colors[1].copy(this.light.groundColor).multiplyScalar(this.light.intensity);this.lightSphere.lookAt(a.setFromMatrixPosition(this.light.matrixWorld).negate());this.lightSphere.geometry.colorsNeedUpdate=!0}}(); THREE.PointLightHelper=function(a,b){this.light=a;this.light.updateMatrixWorld();var c=new THREE.SphereGeometry(b,4,2),d=new THREE.MeshBasicMaterial({wireframe:!0,fog:!1});d.color.copy(this.light.color).multiplyScalar(this.light.intensity);THREE.Mesh.call(this,c,d);this.matrix=this.light.matrixWorld;this.matrixAutoUpdate=!1};THREE.PointLightHelper.prototype=Object.create(THREE.Mesh.prototype);THREE.PointLightHelper.prototype.constructor=THREE.PointLightHelper; @@ -801,21 +815,21 @@ THREE.SpotLightHelper.prototype.constructor=THREE.SpotLightHelper;THREE.SpotLigh THREE.SpotLightHelper.prototype.update=function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(){var c=this.light.distance?this.light.distance:1E4,d=c*Math.tan(this.light.angle);this.cone.scale.set(d,d,c);a.setFromMatrixPosition(this.light.matrixWorld);b.setFromMatrixPosition(this.light.target.matrixWorld);this.cone.lookAt(b.sub(a));this.cone.material.color.copy(this.light.color).multiplyScalar(this.light.intensity)}}(); THREE.VertexNormalsHelper=function(a,b,c,d){this.object=a;this.size=void 0!==b?b:1;b=void 0!==c?c:16711680;d=void 0!==d?d:1;c=new THREE.Geometry;a=a.geometry.faces;for(var e=0,f=a.length;e<f;e++)for(var g=0,h=a[e].vertexNormals.length;g<h;g++)c.vertices.push(new THREE.Vector3,new THREE.Vector3);THREE.Line.call(this,c,new THREE.LineBasicMaterial({color:b,linewidth:d}),THREE.LinePieces);this.matrixAutoUpdate=!1;this.normalMatrix=new THREE.Matrix3;this.update()};THREE.VertexNormalsHelper.prototype=Object.create(THREE.Line.prototype); THREE.VertexNormalsHelper.prototype.constructor=THREE.VertexNormalsHelper; -THREE.VertexNormalsHelper.prototype.update=function(a){var b=new THREE.Vector3;return function(a){a=["a","b","c","d"];this.object.updateMatrixWorld(!0);this.normalMatrix.getNormalMatrix(this.object.matrixWorld);for(var d=this.geometry.vertices,e=this.object.geometry.vertices,f=this.object.geometry.faces,g=this.object.matrixWorld,h=0,k=0,n=f.length;k<n;k++)for(var p=f[k],q=0,m=p.vertexNormals.length;q<m;q++){var t=p.vertexNormals[q];d[h].copy(e[p[a[q]]]).applyMatrix4(g);b.copy(t).applyMatrix3(this.normalMatrix).normalize().multiplyScalar(this.size); +THREE.VertexNormalsHelper.prototype.update=function(a){var b=new THREE.Vector3;return function(a){a=["a","b","c","d"];this.object.updateMatrixWorld(!0);this.normalMatrix.getNormalMatrix(this.object.matrixWorld);for(var d=this.geometry.vertices,e=this.object.geometry.vertices,f=this.object.geometry.faces,g=this.object.matrixWorld,h=0,k=0,l=f.length;k<l;k++)for(var p=f[k],q=0,n=p.vertexNormals.length;q<n;q++){var t=p.vertexNormals[q];d[h].copy(e[p[a[q]]]).applyMatrix4(g);b.copy(t).applyMatrix3(this.normalMatrix).normalize().multiplyScalar(this.size); b.add(d[h]);h+=1;d[h].copy(b);h+=1}this.geometry.verticesNeedUpdate=!0;return this}}(); THREE.VertexTangentsHelper=function(a,b,c,d){this.object=a;this.size=void 0!==b?b:1;b=void 0!==c?c:255;d=void 0!==d?d:1;c=new THREE.Geometry;a=a.geometry.faces;for(var e=0,f=a.length;e<f;e++)for(var g=0,h=a[e].vertexTangents.length;g<h;g++)c.vertices.push(new THREE.Vector3),c.vertices.push(new THREE.Vector3);THREE.Line.call(this,c,new THREE.LineBasicMaterial({color:b,linewidth:d}),THREE.LinePieces);this.matrixAutoUpdate=!1;this.update()};THREE.VertexTangentsHelper.prototype=Object.create(THREE.Line.prototype); THREE.VertexTangentsHelper.prototype.constructor=THREE.VertexTangentsHelper; -THREE.VertexTangentsHelper.prototype.update=function(a){var b=new THREE.Vector3;return function(a){a=["a","b","c","d"];this.object.updateMatrixWorld(!0);for(var d=this.geometry.vertices,e=this.object.geometry.vertices,f=this.object.geometry.faces,g=this.object.matrixWorld,h=0,k=0,n=f.length;k<n;k++)for(var p=f[k],q=0,m=p.vertexTangents.length;q<m;q++){var t=p.vertexTangents[q];d[h].copy(e[p[a[q]]]).applyMatrix4(g);b.copy(t).transformDirection(g).multiplyScalar(this.size);b.add(d[h]);h+=1;d[h].copy(b); +THREE.VertexTangentsHelper.prototype.update=function(a){var b=new THREE.Vector3;return function(a){a=["a","b","c","d"];this.object.updateMatrixWorld(!0);for(var d=this.geometry.vertices,e=this.object.geometry.vertices,f=this.object.geometry.faces,g=this.object.matrixWorld,h=0,k=0,l=f.length;k<l;k++)for(var p=f[k],q=0,n=p.vertexTangents.length;q<n;q++){var t=p.vertexTangents[q];d[h].copy(e[p[a[q]]]).applyMatrix4(g);b.copy(t).transformDirection(g).multiplyScalar(this.size);b.add(d[h]);h+=1;d[h].copy(b); h+=1}this.geometry.verticesNeedUpdate=!0;return this}}(); -THREE.WireframeHelper=function(a,b){var c=void 0!==b?b:16777215,d=[0,0],e={},f=function(a,b){return a-b},g=["a","b","c"],h=new THREE.BufferGeometry;if(a.geometry instanceof THREE.Geometry){for(var k=a.geometry.vertices,n=a.geometry.faces,p=0,q=new Uint32Array(6*n.length),m=0,t=n.length;m<t;m++)for(var s=n[m],r=0;3>r;r++){d[0]=s[g[r]];d[1]=s[g[(r+1)%3]];d.sort(f);var u=d.toString();void 0===e[u]&&(q[2*p]=d[0],q[2*p+1]=d[1],e[u]=!0,p++)}d=new Float32Array(6*p);m=0;for(t=p;m<t;m++)for(r=0;2>r;r++)p= -k[q[2*m+r]],g=6*m+3*r,d[g+0]=p.x,d[g+1]=p.y,d[g+2]=p.z;h.addAttribute("position",new THREE.BufferAttribute(d,3))}else if(a.geometry instanceof THREE.BufferGeometry){if(void 0!==a.geometry.attributes.index){k=a.geometry.attributes.position.array;t=a.geometry.attributes.index.array;n=a.geometry.drawcalls;p=0;0===n.length&&(n=[{count:t.length,index:0,start:0}]);for(var q=new Uint32Array(2*t.length),s=0,v=n.length;s<v;++s)for(var r=n[s].start,u=n[s].count,g=n[s].index,m=r,y=r+u;m<y;m+=3)for(r=0;3>r;r++)d[0]= -g+t[m+r],d[1]=g+t[m+(r+1)%3],d.sort(f),u=d.toString(),void 0===e[u]&&(q[2*p]=d[0],q[2*p+1]=d[1],e[u]=!0,p++);d=new Float32Array(6*p);m=0;for(t=p;m<t;m++)for(r=0;2>r;r++)g=6*m+3*r,p=3*q[2*m+r],d[g+0]=k[p],d[g+1]=k[p+1],d[g+2]=k[p+2]}else for(k=a.geometry.attributes.position.array,p=k.length/3,q=p/3,d=new Float32Array(6*p),m=0,t=q;m<t;m++)for(r=0;3>r;r++)g=18*m+6*r,q=9*m+3*r,d[g+0]=k[q],d[g+1]=k[q+1],d[g+2]=k[q+2],p=9*m+(r+1)%3*3,d[g+3]=k[p],d[g+4]=k[p+1],d[g+5]=k[p+2];h.addAttribute("position",new THREE.BufferAttribute(d, +THREE.WireframeHelper=function(a,b){var c=void 0!==b?b:16777215,d=[0,0],e={},f=function(a,b){return a-b},g=["a","b","c"],h=new THREE.BufferGeometry;if(a.geometry instanceof THREE.Geometry){for(var k=a.geometry.vertices,l=a.geometry.faces,p=0,q=new Uint32Array(6*l.length),n=0,t=l.length;n<t;n++)for(var r=l[n],s=0;3>s;s++){d[0]=r[g[s]];d[1]=r[g[(s+1)%3]];d.sort(f);var u=d.toString();void 0===e[u]&&(q[2*p]=d[0],q[2*p+1]=d[1],e[u]=!0,p++)}d=new Float32Array(6*p);n=0;for(t=p;n<t;n++)for(s=0;2>s;s++)p= +k[q[2*n+s]],g=6*n+3*s,d[g+0]=p.x,d[g+1]=p.y,d[g+2]=p.z;h.addAttribute("position",new THREE.BufferAttribute(d,3))}else if(a.geometry instanceof THREE.BufferGeometry){if(void 0!==a.geometry.attributes.index){k=a.geometry.attributes.position.array;t=a.geometry.attributes.index.array;l=a.geometry.drawcalls;p=0;0===l.length&&(l=[{count:t.length,index:0,start:0}]);for(var q=new Uint32Array(2*t.length),r=0,v=l.length;r<v;++r)for(var s=l[r].start,u=l[r].count,g=l[r].index,n=s,x=s+u;n<x;n+=3)for(s=0;3>s;s++)d[0]= +g+t[n+s],d[1]=g+t[n+(s+1)%3],d.sort(f),u=d.toString(),void 0===e[u]&&(q[2*p]=d[0],q[2*p+1]=d[1],e[u]=!0,p++);d=new Float32Array(6*p);n=0;for(t=p;n<t;n++)for(s=0;2>s;s++)g=6*n+3*s,p=3*q[2*n+s],d[g+0]=k[p],d[g+1]=k[p+1],d[g+2]=k[p+2]}else for(k=a.geometry.attributes.position.array,p=k.length/3,q=p/3,d=new Float32Array(6*p),n=0,t=q;n<t;n++)for(s=0;3>s;s++)g=18*n+6*s,q=9*n+3*s,d[g+0]=k[q],d[g+1]=k[q+1],d[g+2]=k[q+2],p=9*n+(s+1)%3*3,d[g+3]=k[p],d[g+4]=k[p+1],d[g+5]=k[p+2];h.addAttribute("position",new THREE.BufferAttribute(d, 3))}THREE.Line.call(this,h,new THREE.LineBasicMaterial({color:c}),THREE.LinePieces);this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1};THREE.WireframeHelper.prototype=Object.create(THREE.Line.prototype);THREE.WireframeHelper.prototype.constructor=THREE.WireframeHelper;THREE.ImmediateRenderObject=function(){THREE.Object3D.call(this);this.render=function(a){}};THREE.ImmediateRenderObject.prototype=Object.create(THREE.Object3D.prototype);THREE.ImmediateRenderObject.prototype.constructor=THREE.ImmediateRenderObject; THREE.MorphBlendMesh=function(a,b){THREE.Mesh.call(this,a,b);this.animationsMap={};this.animationsList=[];var c=this.geometry.morphTargets.length;this.createAnimation("__default",0,c-1,c/1);this.setAnimationWeight("__default",1)};THREE.MorphBlendMesh.prototype=Object.create(THREE.Mesh.prototype);THREE.MorphBlendMesh.prototype.constructor=THREE.MorphBlendMesh; THREE.MorphBlendMesh.prototype.createAnimation=function(a,b,c,d){b={startFrame:b,endFrame:c,length:c-b+1,fps:d,duration:(c-b)/d,lastFrame:0,currentFrame:0,active:!1,time:0,direction:1,weight:1,directionBackwards:!1,mirroredLoop:!1};this.animationsMap[a]=b;this.animationsList.push(b)}; THREE.MorphBlendMesh.prototype.autoCreateAnimations=function(a){for(var b=/([a-z]+)_?(\d+)/,c,d={},e=this.geometry,f=0,g=e.morphTargets.length;f<g;f++){var h=e.morphTargets[f].name.match(b);if(h&&1<h.length){var k=h[1];d[k]||(d[k]={start:Infinity,end:-Infinity});h=d[k];f<h.start&&(h.start=f);f>h.end&&(h.end=f);c||(c=k)}}for(k in d)h=d[k],this.createAnimation(k,h.start,h.end,a);this.firstAnimation=c}; THREE.MorphBlendMesh.prototype.setAnimationDirectionForward=function(a){if(a=this.animationsMap[a])a.direction=1,a.directionBackwards=!1};THREE.MorphBlendMesh.prototype.setAnimationDirectionBackward=function(a){if(a=this.animationsMap[a])a.direction=-1,a.directionBackwards=!0};THREE.MorphBlendMesh.prototype.setAnimationFPS=function(a,b){var c=this.animationsMap[a];c&&(c.fps=b,c.duration=(c.end-c.start)/c.fps)}; THREE.MorphBlendMesh.prototype.setAnimationDuration=function(a,b){var c=this.animationsMap[a];c&&(c.duration=b,c.fps=(c.end-c.start)/c.duration)};THREE.MorphBlendMesh.prototype.setAnimationWeight=function(a,b){var c=this.animationsMap[a];c&&(c.weight=b)};THREE.MorphBlendMesh.prototype.setAnimationTime=function(a,b){var c=this.animationsMap[a];c&&(c.time=b)};THREE.MorphBlendMesh.prototype.getAnimationTime=function(a){var b=0;if(a=this.animationsMap[a])b=a.time;return b}; -THREE.MorphBlendMesh.prototype.getAnimationDuration=function(a){var b=-1;if(a=this.animationsMap[a])b=a.duration;return b};THREE.MorphBlendMesh.prototype.playAnimation=function(a){var b=this.animationsMap[a];b?(b.time=0,b.active=!0):console.warn("animation["+a+"] undefined")};THREE.MorphBlendMesh.prototype.stopAnimation=function(a){if(a=this.animationsMap[a])a.active=!1}; +THREE.MorphBlendMesh.prototype.getAnimationDuration=function(a){var b=-1;if(a=this.animationsMap[a])b=a.duration;return b};THREE.MorphBlendMesh.prototype.playAnimation=function(a){var b=this.animationsMap[a];b?(b.time=0,b.active=!0):THREE.warn("THREE.MorphBlendMesh: animation["+a+"] undefined in .playAnimation()")};THREE.MorphBlendMesh.prototype.stopAnimation=function(a){if(a=this.animationsMap[a])a.active=!1}; THREE.MorphBlendMesh.prototype.update=function(a){for(var b=0,c=this.animationsList.length;b<c;b++){var d=this.animationsList[b];if(d.active){var e=d.duration/d.length;d.time+=d.direction*a;if(d.mirroredLoop){if(d.time>d.duration||0>d.time)d.direction*=-1,d.time>d.duration&&(d.time=d.duration,d.directionBackwards=!0),0>d.time&&(d.time=0,d.directionBackwards=!1)}else d.time%=d.duration,0>d.time&&(d.time+=d.duration);var f=d.startFrame+THREE.Math.clamp(Math.floor(d.time/e),0,d.length-1),g=d.weight; f!==d.currentFrame&&(this.morphTargetInfluences[d.lastFrame]=0,this.morphTargetInfluences[d.currentFrame]=1*g,this.morphTargetInfluences[f]=0,d.lastFrame=d.currentFrame,d.currentFrame=f);e=d.time%e/e;d.directionBackwards&&(e=1-e);this.morphTargetInfluences[d.currentFrame]=e*g;this.morphTargetInfluences[d.lastFrame]=(1-e)*g}}}; diff --git a/src/PointCloudOctree.js b/src/PointCloudOctree.js index dd9888545d..cd7a78686c 100644 --- a/src/PointCloudOctree.js +++ b/src/PointCloudOctree.js @@ -209,7 +209,6 @@ Potree.PointCloudOctree.prototype.updateVisibility = function(camera, renderer){ unloadedGeometry[i].load(); } - document.getElementById("lblMessage").innerHTML = this.visibleGeometry.length; }; Potree.PointCloudOctree.prototype.updateVisibleBounds = function(){ diff --git a/src/materials/PointCloudMaterial.js b/src/materials/PointCloudMaterial.js index 0024f3e89f..ce14d44069 100644 --- a/src/materials/PointCloudMaterial.js +++ b/src/materials/PointCloudMaterial.js @@ -153,9 +153,11 @@ Potree.PointCloudMaterial = function(parameters){ pointLightColor: { type: "fv", value: null }, pointLightPosition: { type: "fv", value: null }, pointLightDistance: { type: "fv1", value: null }, + pointLightDecay: { type: "fv1", value: null }, spotLightColor: { type: "fv", value: null }, spotLightPosition: { type: "fv", value: null }, spotLightDistance: { type: "fv1", value: null }, + spotLightDecay: { type: "fv1", value: null }, spotLightDirection: { type: "fv", value: null }, spotLightAngleCos: { type: "fv1", value: null }, spotLightExponent: { type: "fv1", value: null }, diff --git a/src/materials/shaders/pointcloud.fs b/src/materials/shaders/pointcloud.fs index 3275cd931b..dfc63e060f 100644 --- a/src/materials/shaders/pointcloud.fs +++ b/src/materials/shaders/pointcloud.fs @@ -31,6 +31,7 @@ uniform float opacity; uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ]; uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ]; uniform float pointLightDistance[ MAX_POINT_LIGHTS ]; + uniform float pointLightDecay[ MAX_POINT_LIGHTS ]; #endif From 3f6b2afdb51b06880d7a8d1b7277087d5081a5ec Mon Sep 17 00:00:00 2001 From: mschuetz <markus_schuetz@gmx.at> Date: Sun, 6 Sep 2015 15:26:00 +0200 Subject: [PATCH 27/35] update cesium example; update to threejs 71 --- examples/cesium.html | 107 ++++++++++++++++++++-------------------- examples/js/viewer.js | 4 ++ src/Features.js | 2 +- src/PointCloudOctree.js | 6 +-- 4 files changed, 62 insertions(+), 57 deletions(-) diff --git a/examples/cesium.html b/examples/cesium.html index 2ee2a92c79..247482edf1 100644 --- a/examples/cesium.html +++ b/examples/cesium.html @@ -1,13 +1,56 @@ <!DOCTYPE html> <html lang="en"> +<!-- + +Thanks for help with this to Matthias Adorjan + +--> + <head> + <link rel="stylesheet" type="text/css" href="css/potree.css"> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> <!-- Make the application on mobile take up the full browser screen and disable user scaling. --> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> <title>three.js & Potree & Cesium + + + +
    + +
    + + + + @@ -33,49 +76,7 @@ - - - - -
    - -
    -Rendering a three.js / Potree point cloud in -Cesium
    -Point cloud courtesy of sigeom sa - -
    + diff --git a/examples/lion_las.html b/examples/lion_las.html index 48543f4cff..2a23edba77 100644 --- a/examples/lion_las.html +++ b/examples/lion_las.html @@ -9,6 +9,7 @@ + diff --git a/examples/lion_laz.html b/examples/lion_laz.html index e3c9b0fb6f..e1cdfa8e33 100644 --- a/examples/lion_laz.html +++ b/examples/lion_laz.html @@ -9,6 +9,7 @@ + diff --git a/examples/minimal.html b/examples/minimal.html index 38733f1ad1..31f4074e5d 100644 --- a/examples/minimal.html +++ b/examples/minimal.html @@ -29,6 +29,7 @@ + @@ -99,7 +100,7 @@ }); - controls = new THREE.OrbitControls(camera, renderer.domElement); + controls = new Potree.OrbitControls(camera, renderer.domElement); } function update(){ diff --git a/examples/openLayers3.html b/examples/openLayers3.html index d5d40d9ae1..5a3d92a4c2 100644 --- a/examples/openLayers3.html +++ b/examples/openLayers3.html @@ -111,6 +111,7 @@ + diff --git a/examples/point_picking.html b/examples/point_picking.html deleted file mode 100644 index 766f5a9135..0000000000 --- a/examples/point_picking.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file
    + +Rendering a three.js / Potree point cloud in +Cesium
    +Point cloud courtesy of sigeom sa + + + +

    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�B&SF>cZ5^V2P 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 z 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